ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDk1OWE3ZGYuLjg5NzA4NGQgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMzMsNyArMzMsNiBAQAogTW9kdWxlcy9jb25maWcuYwogTW9kdWxlcy9sZF9zb19haXgKIFBhcnNlci9wZ2VuCi1QYXJzZXIvcGdlbi5zdGFtcAogTGliL3Rlc3QvZGF0YS8qCiBMaWIvbGliMnRvMy9HcmFtbWFyKi5waWNrbGUKIExpYi9saWIydG8zL1BhdHRlcm5HcmFtbWFyKi5waWNrbGUKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGMxYTgwNTUuLjQ5Mjk5ZWUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsNiArMTUsNyBAQAogRG9jL3Rvb2xzL3B5Z21lbnRzLwogRG9jL3Rvb2xzL3NwaGlueC8KIExpYi9saWIydG8zLyoucGlja2xlCitMaWIvX3N5c2NvbmZpZ2RhdGEucHkKIExpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCkBAIC0yNCw2ICsyNSw3IEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAorTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiBQQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyouZGxsCkBAIC0zNyw3ICszOSw2IEBACiBQQ2J1aWxkL2FtZDY0LwogLnB1cmlmeQogUGFyc2VyL3BnZW4KLVBhcnNlci9wZ2VuLnN0YW1wCiBfX3B5Y2FjaGVfXwogYXV0b200dGUuY2FjaGUKIGJ1aWxkLwpkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmluZGV4IGVkMTMxNzEuLjY0YmI3Y2YgMTAwNjQ0Ci0tLSBhLy5oZ2VvbAorKysgYi8uaGdlb2wKQEAgLTI4LDggKzI4LDExIEBACiAKIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCA9IEJJTgogTGliL3Rlc3QvY2prZW5jb2RpbmdzLyogPSBCSU4KLUxpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KIExpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS8qLmRlY1Rlc3QgPSBCSU4KK0xpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KK0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0ID0gQklOCisKK0xpYi92ZW52L3NjcmlwdHMvbnQvKiA9IEJJTgogCiAjIEFsbCBvdGhlciBmaWxlcyAod2hpY2ggcHJlc3VtYWJseSBhcmUgaHVtYW4tZWRpdGFibGUpIGFyZSAibmF0aXZlIi4KICMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJ1bGUhCmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggMjRkZjNiOS4uOTY3Njk5YyAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtNSw3ICs1LDggQEAKIE1ha2VmaWxlLnByZSQKIFRBR1MkCiBhdXRvbTR0ZS5jYWNoZSQKLWJ1aWxkLworXmJ1aWxkLworXkRvYy9idWlsZC8KIGJ1aWxkbm8kCiBjb25maWcuY2FjaGUKIGNvbmZpZy5sb2cKQEAgLTMxLDcgKzMyLDYgQEAKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKIF5jb3JlCiBecHl0aG9uLWdkYi5weQogXnB5dGhvbi5leGUtZ2RiLnB5CkBAIC01NCw2ICs1NCwxOCBAQAogUEMvcHl0aG9ubnRfcmMqLmgKIFBDLyoub2JqCiBQQy8qLmV4ZQorUEMvKi8qLmV4ZQorUEMvKi8qLmV4cAorUEMvKi8qLmxpYgorUEMvKi8qLmJzYworUEMvKi8qLmRsbAorUEMvKi8qLnBkYgorUEMvKi8qLnVzZXIKK1BDLyovKi5uY2IKK1BDLyovKi5zdW8KK1BDLyovV2luMzItdGVtcC0qCitQQy8qL3g2NC10ZW1wLSoKK1BDLyovYW1kNjQKIFBDYnVpbGQvKi5leGUKIFBDYnVpbGQvKi5kbGwKIFBDYnVpbGQvKi5wZGIKQEAgLTYyLDggKzc0LDE1IEBACiBQQ2J1aWxkLyoubwogUENidWlsZC8qLm5jYgogUENidWlsZC8qLmJzYworUENidWlsZC8qLnVzZXIKK1BDYnVpbGQvKi5zdW8KK1BDYnVpbGQvKi4qc2RmCiBQQ2J1aWxkL1dpbjMyLXRlbXAtKgorUENidWlsZC94NjQtdGVtcC0qCitQQ2J1aWxkL2FtZDY0CitCdWlsZExvZy5odG0KIF9fcHljYWNoZV9fCitNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCiBNb2R1bGVzL190ZXN0ZW1iZWQKIC5jb3ZlcmFnZQogY292ZXJhZ2UvCmRpZmYgLS1naXQgYS8uaGd0YWdzIGIvLmhndGFncwppbmRleCBmMDYxYjkwLi5lZmE0ZDJlIDEwMDY0NAotLS0gYS8uaGd0YWdzCisrKyBiLy5oZ3RhZ3MKQEAgLTk5LDMgKzk5LDEzIEBACiA3MDg1NDAzZGFmNDM5YWRiM2Y5ZTcwZWYxM2Y2YmVkYjFjNDQ3Mzc2IHYzLjIuM3JjMQogNDI4ZjA1Y2I3Mjc3ZTFkNDJiYjlkZDhkMWFmNmI2MjcwZWJjNjExMiB2My4yLjNyYzIKIDNkMDY4NmQ5MGY1NWE3OGY5NmQ5NDAzZGEyYzUyZGMyNDExNDE5ZDAgdjMuMi4zCitmMWE5YTY1MDU3MzE3MTRmMGUxNTc0NTNmZjg1MGUzYjcxNjE1YzQ1IHYzLjMuMGExCisyZjY5ZGI1MmQ2ZGUzMDZjZGFlZjBhMGNjMDBjYzgyM2ZiMzUwYjAxIHYzLjMuMGEyCiswYjUzYjcwYTQwYTAwMDEzNTA1ZWIzNWUzNjYwMDU3YjYyYmU3N2JlIHYzLjMuMGEzCis3YzUxMzg4YTNhYTdjZTc2YTg1NDFiYmJkZmMwNWQyZDI1OWExNjJjIHYzLjMuMGE0CitlMTVjNTU0Y2Q0M2ViMjNiYzBhNTI4YTRlODc0MWRhOWJiZWM5NjA3IHYzLjMuMGIxCis0OTcyYThmMWIyYWEzZDdjZGQ2NGRjOTZhYTdmYTExMmZlMWVhMzQzIHYzLjMuMGIyCis4YmI1YzdiYzQ2YmE0MzgwNDQ4MGYzZTMyOGUxZmE5NTY2NzJjODg1IHYzLjMuMHJjMQorODhhMDc5MmU4YmEzZTQ5MTZiMjRjN2U3YTUyMmMyNzdkMzI2ZDY2ZSB2My4zLjByYzIKK2MxOTFkMjFjZWZhZmIzODMyYzQ1NTcwZTg0ODU0ZTMwOWFhNjJlYWEgdjMuMy4wcmMzCitiZDhhZmI5MGViZjI4YmE0ZWRjOTAxZDRhMjM1Zjc1ZTdiYmM3OWZkIHYzLjMuMApkaWZmIC0tZ2l0IGEvLmhndG91Y2ggYi8uaGd0b3VjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGVmNzBlCi0tLSAvZGV2L251bGwKKysrIGIvLmhndG91Y2gKQEAgLTAsMCArMSwxMiBAQAorIyAtKi0gTWFrZWZpbGUgLSotCisjIERlZmluZSBkZXBlbmRlbmNpZXMgb2YgZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIGNoZWNrZWQgaW50byBoZy4KKyMgVGhlIHN5bnRheCBvZiB0aGlzIGZpbGUgdXNlcyBtYWtlIHJ1bGUgZGVwZW5kZW5jaWVzLCB3aXRob3V0IGFjdGlvbnMKKworUHl0aG9uL2ltcG9ydGxpYi5oOiBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCisKK0luY2x1ZGUvYXN0Lmg6IFBhcnNlci9QeXRob24uYXNkbCBQYXJzZXIvYXNkbC5weSBQYXJzZXIvYXNkbF9jLnB5CitQeXRob24vUHl0aG9uLWFzdC5jOiBJbmNsdWRlL2FzdC5oCisKK1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oOiBQeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgTGliL29wY29kZS5weQorCitPYmplY3RzL3R5cGVzbG90cy5pbmM6IEluY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMucHkKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCAxMzQxMWYyLi5hNzc0YWFkIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC01Myw3ICs1Myw3IEBACiAJZmkKIAlAaWYgWyAhIC1kIHRvb2xzL3B5Z21lbnRzIF07IHRoZW4gXAogCSAgZWNobyAiQ2hlY2tpbmcgb3V0IFB5Z21lbnRzLi4uIjsgXAotCSAgc3ZuIGNoZWNrb3V0ICQoU1ZOUk9PVCkvZXh0ZXJuYWwvUHlnbWVudHMtMS4zLjEvcHlnbWVudHMgdG9vbHMvcHlnbWVudHM7IFwKKwkgIHN2biBjaGVja291dCAkKFNWTlJPT1QpL2V4dGVybmFsL1B5Z21lbnRzLTEuNWRldi0yMDEyMDkzMC9weWdtZW50cyB0b29scy9weWdtZW50czsgXAogCWZpCiAKIHVwZGF0ZTogY2xlYW4gY2hlY2tvdXQKQEAgLTE4Nyw2ICsxODcsMTAgQEAKIAltYWtlIHVwZGF0ZQogCW1ha2UgZGlzdCBTUEhJTlhPUFRTPSctQSBkYWlseT0xIC1BIHZlcnNpb25zd2l0Y2hlcj0xJwogCisjIGZvciBxdWljayByZWJ1aWxkcyAoSFRNTCBvbmx5KQorYXV0b2J1aWxkLWh0bWw6CisJbWFrZSBodG1sIFNQSElOWE9QVFM9Jy1BIGRhaWx5PTEgLUEgdmVyc2lvbnN3aXRjaGVyPTEnCisKICMgZm9yIHN0YWJsZSByZWxlYXNlczogb25seSBidWlsZCBpZiBub3QgaW4gcHJlLXJlbGVhc2Ugc3RhZ2UgKGFscGhhLCBiZXRhLCByYykKIGF1dG9idWlsZC1zdGFibGU6CiAJQGNhc2UgJChESVNUVkVSU0lPTikgaW4gKlthYmNdKikgXApAQCAtMTk0LDMgKzE5OCw0IEBACiAJCWV4aXQgMTs7IFwKIAllc2FjCiAJQG1ha2UgYXV0b2J1aWxkLWRldgorCmRpZmYgLS1naXQgYS9Eb2MvUkVBRE1FLnR4dCBiL0RvYy9SRUFETUUudHh0CmluZGV4IGYyOTY0MjMuLmM2M2ZjNjAgMTAwNjQ0Ci0tLSBhL0RvYy9SRUFETUUudHh0CisrKyBiL0RvYy9SRUFETUUudHh0CkBAIC0xMzUsNyArMTM1LDcgQEAKIGFzIGxvbmcgYXMgeW91IGRvbid0IGNoYW5nZSBvciByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2U6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUNvcHlyaWdodCAoYykgMjAwMC0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBDb3B5cmlnaHQgKGMpIDIwMDAgQmVPcGVuLmNvbS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcmcucnN0IGIvRG9jL2MtYXBpL2FyZy5yc3QKaW5kZXggZDRkZGE3Yy4uYjI4YWE1ZiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2FyZy5yc3QKKysrIGIvRG9jL2MtYXBpL2FyZy5yc3QKQEAgLTE0Niw3ICsxNDYsNyBAQAogICAgTGlrZSBgYHUjYGAsIGJ1dCB0aGUgUHl0aG9uIG9iamVjdCBtYXkgYWxzbyBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB0aGUKICAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIHBvaW50ZXIgaXMgc2V0IHRvICpOVUxMKi4KIAotYGBVYGAgKDpjbGFzczpgc3RyYCkgW1B5VW5pY29kZU9iamVjdCBcKl0KK2BgVWBgICg6Y2xhc3M6YHN0cmApIFtQeU9iamVjdCBcKl0KICAgIFJlcXVpcmVzIHRoYXQgdGhlIFB5dGhvbiBvYmplY3QgaXMgYSBVbmljb2RlIG9iamVjdCwgd2l0aG91dCBhdHRlbXB0aW5nCiAgICBhbnkgY29udmVyc2lvbi4gIFJhaXNlcyA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBvYmplY3QgaXMgbm90IGEgVW5pY29kZQogICAgb2JqZWN0LiAgVGhlIEMgdmFyaWFibGUgbWF5IGFsc28gYmUgZGVjbGFyZWQgYXMgOmM6dHlwZTpgUHlPYmplY3RcKmAuCkBAIC0yNjAsOSArMjYwLDEyIEBACiBgYG5gYCAoOmNsYXNzOmBpbnRgKSBbUHlfc3NpemVfdF0KICAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgUHlfc3NpemVfdGAuCiAKLWBgY2BgICg6Y2xhc3M6YGJ5dGVzYCBvZiBsZW5ndGggMSkgW2NoYXJdCi0gICBDb252ZXJ0IGEgUHl0aG9uIGJ5dGUsIHJlcHJlc2VudGVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCAxLAotICAgdG8gYSBDIDpjOnR5cGU6YGNoYXJgLgorYGBjYGAgKDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCBvZiBsZW5ndGggMSkgW2NoYXJdCisgICBDb252ZXJ0IGEgUHl0aG9uIGJ5dGUsIHJlcHJlc2VudGVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb3IKKyAgIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3Qgb2YgbGVuZ3RoIDEsIHRvIGEgQyA6Yzp0eXBlOmBjaGFyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFsbG93IDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3RzLgogCiBgYENgYCAoOmNsYXNzOmBzdHJgIG9mIGxlbmd0aCAxKSBbaW50XQogICAgQ29udmVydCBhIFB5dGhvbiBjaGFyYWN0ZXIsIHJlcHJlc2VudGVkIGFzIGEgOmNsYXNzOmBzdHJgIG9iamVjdCBvZgpAQCAtMzE1LDYgKzMxOCwxNSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIGBgUHlfQ0xFQU5VUF9TVVBQT1JURURgYCB3YXMgYWRkZWQuCiAKK2BgcGBgICg6Y2xhc3M6YGJvb2xgKSBbaW50XQorICAgVGVzdHMgdGhlIHZhbHVlIHBhc3NlZCBpbiBmb3IgdHJ1dGggKGEgYm9vbGVhbiAqKnAqKlxyZWRpY2F0ZSkgYW5kIGNvbnZlcnRzCisgICB0aGUgcmVzdWx0IHRvIGl0cyBlcXVpdmFsZW50IEMgdHJ1ZS9mYWxzZSBpbnRlZ2VyIHZhbHVlLgorICAgU2V0cyB0aGUgaW50IHRvIDEgaWYgdGhlIGV4cHJlc3Npb24gd2FzIHRydWUgYW5kIDAgaWYgaXQgd2FzIGZhbHNlLgorICAgVGhpcyBhY2NlcHRzIGFueSB2YWxpZCBQeXRob24gdmFsdWUuICBTZWUgOnJlZjpgdHJ1dGhgIGZvciBtb3JlCisgICBpbmZvcm1hdGlvbiBhYm91dCBob3cgUHl0aG9uIHRlc3RzIHZhbHVlcyBmb3IgdHJ1dGguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBgYChpdGVtcylgYCAoOmNsYXNzOmB0dXBsZWApIFsqbWF0Y2hpbmctaXRlbXMqXQogICAgVGhlIG9iamVjdCBtdXN0IGJlIGEgUHl0aG9uIHNlcXVlbmNlIHdob3NlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGZvcm1hdCB1bml0cwogICAgaW4gKml0ZW1zKi4gIFRoZSBDIGFyZ3VtZW50cyBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIGluZGl2aWR1YWwgZm9ybWF0IHVuaXRzIGluCkBAIC0zMzYsNiArMzQ4LDE1IEBACiAgICA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlYCBkb2VzIG5vdCB0b3VjaCB0aGUgY29udGVudHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgQwogICAgdmFyaWFibGUocykuCiAKK2BgJGBgCisgICA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIG9ubHk6CisgICBJbmRpY2F0ZXMgdGhhdCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBpbiB0aGUgUHl0aG9uIGFyZ3VtZW50IGxpc3QgYXJlCisgICBrZXl3b3JkLW9ubHkuICBDdXJyZW50bHksIGFsbCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIG11c3QgYWxzbyBiZSBvcHRpb25hbAorICAgYXJndW1lbnRzLCBzbyBgYHxgYCBtdXN0IGFsd2F5cyBiZSBzcGVjaWZpZWQgYmVmb3JlIGBgJGBgIGluIHRoZSBmb3JtYXQKKyAgIHN0cmluZy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIGBgOmBgCiAgICBUaGUgbGlzdCBvZiBmb3JtYXQgdW5pdHMgZW5kcyBoZXJlOyB0aGUgc3RyaW5nIGFmdGVyIHRoZSBjb2xvbiBpcyB1c2VkIGFzIHRoZQogICAgZnVuY3Rpb24gbmFtZSBpbiBlcnJvciBtZXNzYWdlcyAodGhlICJhc3NvY2lhdGVkIHZhbHVlIiBvZiB0aGUgZXhjZXB0aW9uIHRoYXQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9idWZmZXIucnN0IGIvRG9jL2MtYXBpL2J1ZmZlci5yc3QKaW5kZXggNzQwYjU3NS4uMGI1MjFkZiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2J1ZmZlci5yc3QKKysrIGIvRG9jL2MtYXBpL2J1ZmZlci5yc3QKQEAgLTEyLDYgKzEyLDcgQEAKIAogLi4gc2VjdGlvbmF1dGhvcjo6IEdyZWcgU3RlaW4gPGdzdGVpbkBseXJhLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBCZW5qYW1pbiBQZXRlcnNvbgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZWZhbiBLcmFoCiAKIAogQ2VydGFpbiBvYmplY3RzIGF2YWlsYWJsZSBpbiBQeXRob24gd3JhcCBhY2Nlc3MgdG8gYW4gdW5kZXJseWluZyBtZW1vcnkKQEAgLTIyLDcgKzIzLDcgQEAKIAogV2hpbGUgZWFjaCBvZiB0aGVzZSB0eXBlcyBoYXZlIHRoZWlyIG93biBzZW1hbnRpY3MsIHRoZXkgc2hhcmUgdGhlIGNvbW1vbgogY2hhcmFjdGVyaXN0aWMgb2YgYmVpbmcgYmFja2VkIGJ5IGEgcG9zc2libHkgbGFyZ2UgbWVtb3J5IGJ1ZmZlci4gIEl0IGlzCi10aGVuIGRlc2lyZWFibGUsIGluIHNvbWUgc2l0dWF0aW9ucywgdG8gYWNjZXNzIHRoYXQgYnVmZmVyIGRpcmVjdGx5IGFuZAordGhlbiBkZXNpcmFibGUsIGluIHNvbWUgc2l0dWF0aW9ucywgdG8gYWNjZXNzIHRoYXQgYnVmZmVyIGRpcmVjdGx5IGFuZAogd2l0aG91dCBpbnRlcm1lZGlhdGUgY29weWluZy4KIAogUHl0aG9uIHByb3ZpZGVzIHN1Y2ggYSBmYWNpbGl0eSBhdCB0aGUgQyBsZXZlbCBpbiB0aGUgZm9ybSBvZiB0aGUgOnJlZjpgYnVmZmVyCkBAIC02Miw4ICs2MywxMCBAQAogcmVzb3VyY2UgbGVha3MuCiAKIAotVGhlIGJ1ZmZlciBzdHJ1Y3R1cmUKLT09PT09PT09PT09PT09PT09PT09CisuLiBfYnVmZmVyLXN0cnVjdHVyZToKKworQnVmZmVyIHN0cnVjdHVyZQorPT09PT09PT09PT09PT09PQogCiBCdWZmZXIgc3RydWN0dXJlcyAob3Igc2ltcGx5ICJidWZmZXJzIikgYXJlIHVzZWZ1bCBhcyBhIHdheSB0byBleHBvc2UgdGhlCiBiaW5hcnkgZGF0YSBmcm9tIGFub3RoZXIgb2JqZWN0IHRvIHRoZSBQeXRob24gcHJvZ3JhbW1lci4gIFRoZXkgY2FuIGFsc28gYmUKQEAgLTgwLDk2ICs4MywzMzkgQEAKIGFyb3VuZCBhIGJ1ZmZlciBpcyBuZWVkZWQsIGEgOnJlZjpgbWVtb3J5dmlldyA8bWVtb3J5dmlldy1vYmplY3RzPmAgb2JqZWN0CiBjYW4gYmUgY3JlYXRlZC4KIAorRm9yIHNob3J0IGluc3RydWN0aW9ucyBob3cgdG8gd3JpdGUgYW4gZXhwb3J0aW5nIG9iamVjdCwgc2VlCis6cmVmOmBCdWZmZXIgT2JqZWN0IFN0cnVjdHVyZXMgPGJ1ZmZlci1zdHJ1Y3RzPmAuIEZvciBvYnRhaW5pbmcKK2EgYnVmZmVyLCBzZWUgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYC4KIAogLi4gYzp0eXBlOjogUHlfYnVmZmVyCiAKLSAgIC4uIGM6bWVtYmVyOjogdm9pZCAqYnVmCisgICAuLiBjOm1lbWJlcjo6IHZvaWQgXCpvYmoKIAotICAgICAgQSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgbWVtb3J5IGZvciB0aGUgb2JqZWN0LgorICAgICAgQSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBleHBvcnRpbmcgb2JqZWN0LiBUaGUgcmVmZXJlbmNlIGlzIG93bmVkIGJ5CisgICAgICB0aGUgY29uc3VtZXIgYW5kIGF1dG9tYXRpY2FsbHkgZGVjcmVtZW50ZWQgYW5kIHNldCB0byAqTlVMTCogYnkKKyAgICAgIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgLiBUaGUgZmllbGQgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgYW55IHN0YW5kYXJkIEMtQVBJIGZ1bmN0aW9uLgorCisgICAgICBBcyBhIHNwZWNpYWwgY2FzZSwgZm9yICp0ZW1wb3JhcnkqIGJ1ZmZlcnMgdGhhdCBhcmUgd3JhcHBlZCBieQorICAgICAgOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXJgIG9yIDpjOmZ1bmM6YFB5QnVmZmVyX0ZpbGxJbmZvYAorICAgICAgdGhpcyBmaWVsZCBpcyAqTlVMTCouIEluIGdlbmVyYWwsIGV4cG9ydGluZyBvYmplY3RzIE1VU1QgTk9UCisgICAgICB1c2UgdGhpcyBzY2hlbWUuCisKKyAgIC4uIGM6bWVtYmVyOjogdm9pZCBcKmJ1ZgorCisgICAgICBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBkZXNjcmliZWQgYnkgdGhlIGJ1ZmZlcgorICAgICAgZmllbGRzLiBUaGlzIGNhbiBiZSBhbnkgbG9jYXRpb24gd2l0aGluIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIG1lbW9yeQorICAgICAgYmxvY2sgb2YgdGhlIGV4cG9ydGVyLiBGb3IgZXhhbXBsZSwgd2l0aCBuZWdhdGl2ZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AKKyAgICAgIHRoZSB2YWx1ZSBtYXkgcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgbWVtb3J5IGJsb2NrLgorCisgICAgICBGb3IgY29udGlndW91cyBhcnJheXMsIHRoZSB2YWx1ZSBwb2ludHMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbWVtb3J5CisgICAgICBibG9jay4KIAogICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IGxlbgotICAgICAgOm5vaW5kZXg6CiAKLSAgICAgIFRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIG1lbW9yeSBpbiBieXRlcy4KKyAgICAgIGBgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZWBgLiBGb3IgY29udGlndW91cyBhcnJheXMsIHRoaXMgaXMgdGhlIGxlbmd0aAorICAgICAgb2YgdGhlIHVuZGVybHlpbmcgbWVtb3J5IGJsb2NrLiBGb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLCBpdCBpcyB0aGUgbGVuZ3RoCisgICAgICB0aGF0IHRoZSBsb2dpY2FsIHN0cnVjdHVyZSB3b3VsZCBoYXZlIGlmIGl0IHdlcmUgY29waWVkIHRvIGEgY29udGlndW91cworICAgICAgcmVwcmVzZW50YXRpb24uCisKKyAgICAgIEFjY2Vzc2luZyBgYCgoY2hhciAqKWJ1ZilbMF0gdXAgdG8gKChjaGFyICopYnVmKVtsZW4tMV1gYCBpcyBvbmx5IHZhbGlkCisgICAgICBpZiB0aGUgYnVmZmVyIGhhcyBiZWVuIG9idGFpbmVkIGJ5IGEgcmVxdWVzdCB0aGF0IGd1YXJhbnRlZXMgY29udGlndWl0eS4gSW4KKyAgICAgIG1vc3QgY2FzZXMgc3VjaCBhIHJlcXVlc3Qgd2lsbCBiZSA6YzptYWNybzpgUHlCVUZfU0lNUExFYCBvciA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgLgogCiAgICAuLiBjOm1lbWJlcjo6IGludCByZWFkb25seQogCi0gICAgICBBbiBpbmRpY2F0b3Igb2Ygd2hldGhlciB0aGUgYnVmZmVyIGlzIHJlYWQgb25seS4KLQotICAgLi4gYzptZW1iZXI6OiBjb25zdCBjaGFyICpmb3JtYXQKLSAgICAgIDpub2luZGV4OgotCi0gICAgICBBICpOVUxMKiB0ZXJtaW5hdGVkIHN0cmluZyBpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSBzeW50YXggZ2l2aW5nCi0gICAgICB0aGUgY29udGVudHMgb2YgdGhlIGVsZW1lbnRzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBidWZmZXIuICBJZiB0aGlzIGlzCi0gICAgICAqTlVMTCosIGBgIkIiYGAgKHVuc2lnbmVkIGJ5dGVzKSBpcyBhc3N1bWVkLgotCi0gICAuLiBjOm1lbWJlcjo6IGludCBuZGltCi0KLSAgICAgIFRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyB0aGUgbWVtb3J5IHJlcHJlc2VudHMgYXMgYSBtdWx0aS1kaW1lbnNpb25hbAotICAgICAgYXJyYXkuICBJZiBpdCBpcyAwLCA6YzpkYXRhOmBzdHJpZGVzYCBhbmQgOmM6ZGF0YTpgc3Vib2Zmc2V0c2AgbXVzdCBiZQotICAgICAgKk5VTEwqLgotCi0gICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgKnNoYXBlCi0KLSAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgXHMgdGhlIGxlbmd0aCBvZiA6YzpkYXRhOmBuZGltYCBnaXZpbmcgdGhlCi0gICAgICBzaGFwZSBvZiB0aGUgbWVtb3J5IGFzIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkuICBOb3RlIHRoYXQKLSAgICAgIGBgKCgqc2hhcGUpWzBdICogLi4uICogKCpzaGFwZSlbbmRpbXMtMV0pKml0ZW1zaXplYGAgc2hvdWxkIGJlIGVxdWFsIHRvCi0gICAgICA6YzpkYXRhOmBsZW5gLgotCi0gICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgKnN0cmlkZXMKLQotICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGBccyB0aGUgbGVuZ3RoIG9mIDpjOmRhdGE6YG5kaW1gIGdpdmluZyB0aGUKLSAgICAgIG51bWJlciBvZiBieXRlcyB0byBza2lwIHRvIGdldCB0byBhIG5ldyBlbGVtZW50IGluIGVhY2ggZGltZW5zaW9uLgotCi0gICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgKnN1Ym9mZnNldHMKLQotICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGBccyB0aGUgbGVuZ3RoIG9mIDpjOmRhdGE6YG5kaW1gLiAgSWYgdGhlc2UKLSAgICAgIHN1Ym9mZnNldCBudW1iZXJzIGFyZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCwgdGhlbiB0aGUgdmFsdWUgc3RvcmVkCi0gICAgICBhbG9uZyB0aGUgaW5kaWNhdGVkIGRpbWVuc2lvbiBpcyBhIHBvaW50ZXIgYW5kIHRoZSBzdWJvZmZzZXQgdmFsdWUKLSAgICAgIGRpY3RhdGVzIGhvdyBtYW55IGJ5dGVzIHRvIGFkZCB0byB0aGUgcG9pbnRlciBhZnRlciBkZS1yZWZlcmVuY2luZy4gQQotICAgICAgc3Vib2Zmc2V0IHZhbHVlIHRoYXQgaXQgbmVnYXRpdmUgaW5kaWNhdGVzIHRoYXQgbm8gZGUtcmVmZXJlbmNpbmcgc2hvdWxkCi0gICAgICBvY2N1ciAoc3RyaWRpbmcgaW4gYSBjb250aWd1b3VzIG1lbW9yeSBibG9jaykuCi0KLSAgICAgIEhlcmUgaXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGluIGFuIE4tRCBhcnJheQotICAgICAgcG9pbnRlZCB0byBieSBhbiBOLWRpbWVuc2lvbmFsIGluZGV4IHdoZW4gdGhlcmUgYXJlIGJvdGggbm9uLU5VTEwgc3RyaWRlcwotICAgICAgYW5kIHN1Ym9mZnNldHM6OgotCi0gICAgICAgICAgdm9pZCAqZ2V0X2l0ZW1fcG9pbnRlcihpbnQgbmRpbSwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90ICpzdHJpZGVzLAotICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLCBQeV9zc2l6ZV90ICppbmRpY2VzKSB7Ci0gICAgICAgICAgICAgIGNoYXIgKnBvaW50ZXIgPSAoY2hhciopYnVmOwotICAgICAgICAgICAgICBpbnQgaTsKLSAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykgewotICAgICAgICAgICAgICAgICAgcG9pbnRlciArPSBzdHJpZGVzW2ldICogaW5kaWNlc1tpXTsKLSAgICAgICAgICAgICAgICAgIGlmIChzdWJvZmZzZXRzW2ldID49MCApIHsKLSAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyID0gKigoY2hhcioqKXBvaW50ZXIpICsgc3Vib2Zmc2V0c1tpXTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm4gKHZvaWQqKXBvaW50ZXI7Ci0gICAgICAgICAgIH0KLQorICAgICAgQW4gaW5kaWNhdG9yIG9mIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyByZWFkLW9ubHkuIFRoaXMgZmllbGQgaXMgY29udHJvbGxlZAorICAgICAgYnkgdGhlIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgZmxhZy4KIAogICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IGl0ZW1zaXplCiAKLSAgICAgIFRoaXMgaXMgYSBzdG9yYWdlIGZvciB0aGUgaXRlbXNpemUgKGluIGJ5dGVzKSBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlCi0gICAgICBzaGFyZWQgbWVtb3J5LiBJdCBpcyB0ZWNobmljYWxseSB1bi1uZWNlc3NhcnkgYXMgaXQgY2FuIGJlIG9idGFpbmVkCi0gICAgICB1c2luZyA6YzpmdW5jOmBQeUJ1ZmZlcl9TaXplRnJvbUZvcm1hdGAsIGhvd2V2ZXIgYW4gZXhwb3J0ZXIgbWF5IGtub3cKLSAgICAgIHRoaXMgaW5mb3JtYXRpb24gd2l0aG91dCBwYXJzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBpdCBpcyBuZWNlc3NhcnkKLSAgICAgIHRvIGtub3cgdGhlIGl0ZW1zaXplIGZvciBwcm9wZXIgaW50ZXJwcmV0YXRpb24gb2Ygc3RyaWRpbmcuIFRoZXJlZm9yZSwKLSAgICAgIHN0b3JpbmcgaXQgaXMgbW9yZSBjb252ZW5pZW50IGFuZCBmYXN0ZXIuCisgICAgICBJdGVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZWxlbWVudC4gU2FtZSBhcyB0aGUgdmFsdWUgb2YgOmZ1bmM6YHN0cnVjdC5jYWxjc2l6ZWAKKyAgICAgIGNhbGxlZCBvbiBub24tTlVMTCA6YzptZW1iZXI6YH5QeV9idWZmZXIuZm9ybWF0YCB2YWx1ZXMuCiAKLSAgIC4uIGM6bWVtYmVyOjogdm9pZCAqaW50ZXJuYWwKKyAgICAgIEltcG9ydGFudCBleGNlcHRpb246IElmIGEgY29uc3VtZXIgcmVxdWVzdHMgYSBidWZmZXIgd2l0aG91dCB0aGUKKyAgICAgIDpjOm1hY3JvOmBQeUJVRl9GT1JNQVRgIGZsYWcsIDpjOm1lbWJlcjpgflB5X0J1ZmZlci5mb3JtYXRgIHdpbGwKKyAgICAgIGJlIHNldCB0byAgKk5VTEwqLCAgYnV0IDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgc3RpbGwgaGFzCisgICAgICB0aGUgdmFsdWUgZm9yIHRoZSBvcmlnaW5hbCBmb3JtYXQuCisKKyAgICAgIElmIDpjOm1lbWJlcjpgflB5X0J1ZmZlci5zaGFwZWAgaXMgcHJlc2VudCwgdGhlIGVxdWFsaXR5CisgICAgICBgYHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPT0gbGVuYGAgc3RpbGwgaG9sZHMgYW5kIHRoZSBjb25zdW1lcgorICAgICAgY2FuIHVzZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgIHRvIG5hdmlnYXRlIHRoZSBidWZmZXIuCisKKyAgICAgIElmIDpjOm1lbWJlcjpgflB5X0J1ZmZlci5zaGFwZWAgaXMgKk5VTEwqIGFzIGEgcmVzdWx0IG9mIGEgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAKKyAgICAgIG9yIGEgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCByZXF1ZXN0LCB0aGUgY29uc3VtZXIgbXVzdCBkaXNyZWdhcmQKKyAgICAgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgYW5kIGFzc3VtZSBgYGl0ZW1zaXplID09IDFgYC4KKworICAgLi4gYzptZW1iZXI6OiBjb25zdCBjaGFyIFwqZm9ybWF0CisKKyAgICAgIEEgKk5VTCogdGVybWluYXRlZCBzdHJpbmcgaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUgc3ludGF4IGRlc2NyaWJpbmcKKyAgICAgIHRoZSBjb250ZW50cyBvZiBhIHNpbmdsZSBpdGVtLiBJZiB0aGlzIGlzICpOVUxMKiwgYGAiQiJgYCAodW5zaWduZWQgYnl0ZXMpCisgICAgICBpcyBhc3N1bWVkLgorCisgICAgICBUaGlzIGZpZWxkIGlzIGNvbnRyb2xsZWQgYnkgdGhlIDpjOm1hY3JvOmBQeUJVRl9GT1JNQVRgIGZsYWcuCisKKyAgIC4uIGM6bWVtYmVyOjogaW50IG5kaW0KKworICAgICAgVGhlIG51bWJlciBvZiBkaW1lbnNpb25zIHRoZSBtZW1vcnkgcmVwcmVzZW50cyBhcyBhbiBuLWRpbWVuc2lvbmFsIGFycmF5LgorICAgICAgSWYgaXQgaXMgMCwgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLmJ1ZmAgcG9pbnRzIHRvIGEgc2luZ2xlIGl0ZW0gcmVwcmVzZW50aW5nCisgICAgICBhIHNjYWxhci4gSW4gdGhpcyBjYXNlLCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc2hhcGVgLCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AKKyAgICAgIGFuZCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3Vib2Zmc2V0c2AgTVVTVCBiZSAqTlVMTCouCisKKyAgICAgIFRoZSBtYWNybyA6YzptYWNybzpgUHlCVUZfTUFYX05ESU1gIGxpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucworICAgICAgdG8gNjQuIEV4cG9ydGVycyBNVVNUIHJlc3BlY3QgdGhpcyBsaW1pdCwgY29uc3VtZXJzIG9mIG11bHRpLWRpbWVuc2lvbmFsCisgICAgICBidWZmZXJzIFNIT1VMRCBiZSBhYmxlIHRvIGhhbmRsZSB1cCB0byA6YzptYWNybzpgUHlCVUZfTUFYX05ESU1gIGRpbWVuc2lvbnMuCisKKyAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBcKnNoYXBlCisKKyAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgIG9mIGxlbmd0aCA6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAKKyAgICAgIGluZGljYXRpbmcgdGhlIHNoYXBlIG9mIHRoZSBtZW1vcnkgYXMgYW4gbi1kaW1lbnNpb25hbCBhcnJheS4gTm90ZSB0aGF0CisgICAgICBgYHNoYXBlWzBdICogLi4uICogc2hhcGVbbmRpbS0xXSAqIGl0ZW1zaXplYGAgTVVTVCBiZSBlcXVhbCB0bworICAgICAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmxlbmAuCisKKyAgICAgIFNoYXBlIHZhbHVlcyBhcmUgcmVzdHJpY3RlZCB0byBgYHNoYXBlW25dID49IDBgYC4gVGhlIGNhc2UKKyAgICAgIGBgc2hhcGVbbl0gPT0gMGBgIHJlcXVpcmVzIHNwZWNpYWwgYXR0ZW50aW9uLiBTZWUgYGNvbXBsZXggYXJyYXlzYF8KKyAgICAgIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorCisgICAgICBUaGUgc2hhcGUgYXJyYXkgaXMgcmVhZC1vbmx5IGZvciB0aGUgY29uc3VtZXIuCisKKyAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBcKnN0cmlkZXMKKworICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGAgb2YgbGVuZ3RoIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYAorICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCB0byBnZXQgdG8gYSBuZXcgZWxlbWVudCBpbiBlYWNoCisgICAgICBkaW1lbnNpb24uCisKKyAgICAgIFN0cmlkZSB2YWx1ZXMgY2FuIGJlIGFueSBpbnRlZ2VyLiBGb3IgcmVndWxhciBhcnJheXMsIHN0cmlkZXMgYXJlCisgICAgICB1c3VhbGx5IHBvc2l0aXZlLCBidXQgYSBjb25zdW1lciBNVVNUIGJlIGFibGUgdG8gaGFuZGxlIHRoZSBjYXNlCisgICAgICBgYHN0cmlkZXNbbl0gPD0gMGBgLiBTZWUgYGNvbXBsZXggYXJyYXlzYF8gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoZSBzdHJpZGVzIGFycmF5IGlzIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgXCpzdWJvZmZzZXRzCisKKyAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgIG9mIGxlbmd0aCA6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAuCisgICAgICBJZiBgYHN1Ym9mZnNldHNbbl0gPj0gMGBgLCB0aGUgdmFsdWVzIHN0b3JlZCBhbG9uZyB0aGUgbnRoIGRpbWVuc2lvbiBhcmUKKyAgICAgIHBvaW50ZXJzIGFuZCB0aGUgc3Vib2Zmc2V0IHZhbHVlIGRpY3RhdGVzIGhvdyBtYW55IGJ5dGVzIHRvIGFkZCB0byBlYWNoCisgICAgICBwb2ludGVyIGFmdGVyIGRlLXJlZmVyZW5jaW5nLiBBIHN1Ym9mZnNldCB2YWx1ZSB0aGF0IGlzIG5lZ2F0aXZlCisgICAgICBpbmRpY2F0ZXMgdGhhdCBubyBkZS1yZWZlcmVuY2luZyBzaG91bGQgb2NjdXIgKHN0cmlkaW5nIGluIGEgY29udGlndW91cworICAgICAgbWVtb3J5IGJsb2NrKS4KKworICAgICAgVGhpcyB0eXBlIG9mIGFycmF5IHJlcHJlc2VudGF0aW9uIGlzIHVzZWQgYnkgdGhlIFB5dGhvbiBJbWFnaW5nIExpYnJhcnkKKyAgICAgIChQSUwpLiBTZWUgYGNvbXBsZXggYXJyYXlzYF8gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gaG93IHRvIGFjY2VzcyBlbGVtZW50cworICAgICAgb2Ygc3VjaCBhbiBhcnJheS4KKworICAgICAgVGhlIHN1Ym9mZnNldHMgYXJyYXkgaXMgcmVhZC1vbmx5IGZvciB0aGUgY29uc3VtZXIuCisKKyAgIC4uIGM6bWVtYmVyOjogdm9pZCBcKmludGVybmFsCiAKICAgICAgIFRoaXMgaXMgZm9yIHVzZSBpbnRlcm5hbGx5IGJ5IHRoZSBleHBvcnRpbmcgb2JqZWN0LiBGb3IgZXhhbXBsZSwgdGhpcwogICAgICAgbWlnaHQgYmUgcmUtY2FzdCBhcyBhbiBpbnRlZ2VyIGJ5IHRoZSBleHBvcnRlciBhbmQgdXNlZCB0byBzdG9yZSBmbGFncwogICAgICAgYWJvdXQgd2hldGhlciBvciBub3QgdGhlIHNoYXBlLCBzdHJpZGVzLCBhbmQgc3Vib2Zmc2V0cyBhcnJheXMgbXVzdCBiZQotICAgICAgZnJlZWQgd2hlbiB0aGUgYnVmZmVyIGlzIHJlbGVhc2VkLiBUaGUgY29uc3VtZXIgc2hvdWxkIG5ldmVyIGFsdGVyIHRoaXMKKyAgICAgIGZyZWVkIHdoZW4gdGhlIGJ1ZmZlciBpcyByZWxlYXNlZC4gVGhlIGNvbnN1bWVyIE1VU1QgTk9UIGFsdGVyIHRoaXMKICAgICAgIHZhbHVlLgogCisuLiBfYnVmZmVyLXJlcXVlc3QtdHlwZXM6CisKK0J1ZmZlciByZXF1ZXN0IHR5cGVzCis9PT09PT09PT09PT09PT09PT09PQorCitCdWZmZXJzIGFyZSB1c3VhbGx5IG9idGFpbmVkIGJ5IHNlbmRpbmcgYSBidWZmZXIgcmVxdWVzdCB0byBhbiBleHBvcnRpbmcKK29iamVjdCB2aWEgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYC4gU2luY2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGxvZ2ljYWwKK3N0cnVjdHVyZSBvZiB0aGUgbWVtb3J5IGNhbiB2YXJ5IGRyYXN0aWNhbGx5LCB0aGUgY29uc3VtZXIgdXNlcyB0aGUgKmZsYWdzKgorYXJndW1lbnQgdG8gc3BlY2lmeSB0aGUgZXhhY3QgYnVmZmVyIHR5cGUgaXQgY2FuIGhhbmRsZS4KKworQWxsIDpjOmRhdGE6YFB5X2J1ZmZlcmAgZmllbGRzIGFyZSB1bmFtYmlndW91c2x5IGRlZmluZWQgYnkgdGhlIHJlcXVlc3QKK3R5cGUuCisKK3JlcXVlc3QtaW5kZXBlbmRlbnQgZmllbGRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5ICpmbGFncyogYW5kIG11c3QgYWx3YXlzIGJlIGZpbGxlZCBpbgord2l0aCB0aGUgY29ycmVjdCB2YWx1ZXM6IDpjOm1lbWJlcjpgflB5X2J1ZmZlci5vYmpgLCA6YzptZW1iZXI6YH5QeV9idWZmZXIuYnVmYCwKKzpjOm1lbWJlcjpgflB5X2J1ZmZlci5sZW5gLCA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgLCA6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAuCisKKworcmVhZG9ubHksIGZvcm1hdAorfn5+fn5+fn5+fn5+fn5+fgorCisgICAuLiBjOm1hY3JvOjogUHlCVUZfV1JJVEFCTEUKKworICAgICAgQ29udHJvbHMgdGhlIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5yZWFkb25seWAgZmllbGQuIElmIHNldCwgdGhlIGV4cG9ydGVyCisgICAgICBNVVNUIHByb3ZpZGUgYSB3cml0YWJsZSBidWZmZXIgb3IgZWxzZSByZXBvcnQgZmFpbHVyZS4gT3RoZXJ3aXNlLCB0aGUKKyAgICAgIGV4cG9ydGVyIE1BWSBwcm92aWRlIGVpdGhlciBhIHJlYWQtb25seSBvciB3cml0YWJsZSBidWZmZXIsIGJ1dCB0aGUgY2hvaWNlCisgICAgICBNVVNUIGJlIGNvbnNpc3RlbnQgZm9yIGFsbCBjb25zdW1lcnMuCisKKyAgIC4uIGM6bWFjcm86OiBQeUJVRl9GT1JNQVQKKworICAgICAgQ29udHJvbHMgdGhlIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5mb3JtYXRgIGZpZWxkLiBJZiBzZXQsIHRoaXMgZmllbGQgTVVTVAorICAgICAgYmUgZmlsbGVkIGluIGNvcnJlY3RseS4gT3RoZXJ3aXNlLCB0aGlzIGZpZWxkIE1VU1QgYmUgKk5VTEwqLgorCisKKzpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgY2FuIGJlIFx8J2QgdG8gYW55IG9mIHRoZSBmbGFncyBpbiB0aGUgbmV4dCBzZWN0aW9uLgorU2luY2UgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAgaXMgZGVmaW5lZCBhcyAwLCA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgCitjYW4gYmUgdXNlZCBhcyBhIHN0YW5kLWFsb25lIGZsYWcgdG8gcmVxdWVzdCBhIHNpbXBsZSB3cml0YWJsZSBidWZmZXIuCisKKzpjOm1hY3JvOmBQeUJVRl9GT1JNQVRgIGNhbiBiZSBcfCdkIHRvIGFueSBvZiB0aGUgZmxhZ3MgZXhjZXB0IDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgLgorVGhlIGxhdHRlciBhbHJlYWR5IGltcGxpZXMgZm9ybWF0IGBgQmBgICh1bnNpZ25lZCBieXRlcykuCisKKworc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBmbGFncyB0aGF0IGNvbnRyb2wgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBtZW1vcnkgYXJlIGxpc3RlZAoraW4gZGVjcmVhc2luZyBvcmRlciBvZiBjb21wbGV4aXR5LiBOb3RlIHRoYXQgZWFjaCBmbGFnIGNvbnRhaW5zIGFsbCBiaXRzCitvZiB0aGUgZmxhZ3MgYmVsb3cgaXQuCisKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgIFJlcXVlc3QgICAgICAgICAgICAgICAgICAgIHwgc2hhcGUgfCBzdHJpZGVzIHwgc3Vib2Zmc2V0cyB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09KworfCAuLiBjOm1hY3JvOjogUHlCVUZfSU5ESVJFQ1QgfCAgeWVzICB8ICAgeWVzICAgfCBpZiBuZWVkZWQgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVTICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX05EICAgICAgIHwgIHllcyAgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU0lNUExFICAgfCAgTlVMTCB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCisKKworY29udGlndWl0eSByZXF1ZXN0cworfn5+fn5+fn5+fn5+fn5+fn5+fgorCitDIG9yIEZvcnRyYW4gY29udGlndWl0eSBjYW4gYmUgZXhwbGljaXRseSByZXF1ZXN0ZWQsIHdpdGggYW5kIHdpdGhvdXQgc3RyaWRlCitpbmZvcm1hdGlvbi4gV2l0aG91dCBzdHJpZGUgaW5mb3JtYXRpb24sIHRoZSBidWZmZXIgbXVzdCBiZSBDLWNvbnRpZ3VvdXMuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCit8ICBSZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNoYXBlIHwgc3RyaWRlcyB8IHN1Ym9mZnNldHMgfCBjb250aWcgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PSs9PT09PT09PSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0NfQ09OVElHVU9VUyAgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgQyAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfRl9DT05USUdVT1VTICAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBGICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9BTllfQ09OVElHVU9VUyB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCBDIG9yIEYgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX05EICAgICAgICAgICAgIHwgIHllcyAgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8ICAgQyAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworCisKK2NvbXBvdW5kIHJlcXVlc3RzCit+fn5+fn5+fn5+fn5+fn5+fgorCitBbGwgcG9zc2libGUgcmVxdWVzdHMgYXJlIGZ1bGx5IGRlZmluZWQgYnkgc29tZSBjb21iaW5hdGlvbiBvZiB0aGUgZmxhZ3MgaW4KK3RoZSBwcmV2aW91cyBzZWN0aW9uLiBGb3IgY29udmVuaWVuY2UsIHRoZSBidWZmZXIgcHJvdG9jb2wgcHJvdmlkZXMgZnJlcXVlbnRseQordXNlZCBjb21iaW5hdGlvbnMgYXMgc2luZ2xlIGZsYWdzLgorCitJbiB0aGUgZm9sbG93aW5nIHRhYmxlICpVKiBzdGFuZHMgZm9yIHVuZGVmaW5lZCBjb250aWd1aXR5LiBUaGUgY29uc3VtZXIgd291bGQKK2hhdmUgdG8gY2FsbCA6YzpmdW5jOmBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXNgIHRvIGRldGVybWluZSBjb250aWd1aXR5LgorCisKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8ICBSZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgIHwgc2hhcGUgfCBzdHJpZGVzIHwgc3Vib2Zmc2V0cyB8IGNvbnRpZyB8IHJlYWRvbmx5IHwgZm9ybWF0IHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PSs9PT09PT09PSs9PT09PT09PT09Kz09PT09PT09KworfCAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTCAgICAgICB8ICB5ZXMgIHwgICB5ZXMgICB8IGlmIG5lZWRlZCAgfCAgIFUgICAgfCAgICAgMCAgICB8ICB5ZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0ZVTExfUk8gICAgfCAgeWVzICB8ICAgeWVzICAgfCBpZiBuZWVkZWQgIHwgICBVICAgIHwgIDEgb3IgMCAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTICAgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgVSAgICB8ICAgICAwICAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfUkVDT1JEU19STyB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgMSBvciAwICB8ICB5ZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERUQgICAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgICAgIDAgICAgfCAgTlVMTCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVEX1JPIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgVSAgICB8ICAxIG9yIDAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfQ09OVElHICAgICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfCAgICAgMCAgICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJR19STyAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwgICBDICAgIHwgIDEgb3IgMCAgfCAgTlVMTCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCisKKworQ29tcGxleCBhcnJheXMKKz09PT09PT09PT09PT09CisKK051bVB5LXN0eWxlOiBzaGFwZSBhbmQgc3RyaWRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiBOdW1QeS1zdHlsZSBhcnJheXMgaXMgZGVmaW5lZCBieSA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgLAorOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gLCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc2hhcGVgIGFuZCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AuCisKK0lmIGBgbmRpbSA9PSAwYGAsIHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSA6YzptZW1iZXI6YH5QeV9idWZmZXIuYnVmYCBpcworaW50ZXJwcmV0ZWQgYXMgYSBzY2FsYXIgb2Ygc2l6ZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgLiBJbiB0aGF0IGNhc2UsCitib3RoIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYCBhcmUgKk5VTEwqLgorCitJZiA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AgaXMgKk5VTEwqLCB0aGUgYXJyYXkgaXMgaW50ZXJwcmV0ZWQgYXMKK2Egc3RhbmRhcmQgbi1kaW1lbnNpb25hbCBDLWFycmF5LiBPdGhlcndpc2UsIHRoZSBjb25zdW1lciBtdXN0IGFjY2VzcyBhbgorbi1kaW1lbnNpb25hbCBhcnJheSBhcyBmb2xsb3dzOgorCisgICBgYHB0ciA9IChjaGFyICopYnVmICsgaW5kaWNlc1swXSAqIHN0cmlkZXNbMF0gKyAuLi4gKyBpbmRpY2VzW24tMV0gKiBzdHJpZGVzW24tMV1gYAorICAgYGBpdGVtID0gKigodHlwZW9mKGl0ZW0pICopcHRyKTtgYAorCisKK0FzIG5vdGVkIGFib3ZlLCA6YzptZW1iZXI6YH5QeV9idWZmZXIuYnVmYCBjYW4gcG9pbnQgdG8gYW55IGxvY2F0aW9uIHdpdGhpbgordGhlIGFjdHVhbCBtZW1vcnkgYmxvY2suIEFuIGV4cG9ydGVyIGNhbiBjaGVjayB0aGUgdmFsaWRpdHkgb2YgYSBidWZmZXIgd2l0aAordGhpcyBmdW5jdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICBkZWYgdmVyaWZ5X3N0cnVjdHVyZShtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KToKKyAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcGFyYW1ldGVycyByZXByZXNlbnQgYSB2YWxpZCBhcnJheSB3aXRoaW4KKyAgICAgICAgICB0aGUgYm91bmRzIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5OgorICAgICAgICAgICAgICBjaGFyICptZW06IHN0YXJ0IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgICAgbWVtbGVuOiBsZW5ndGggb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICAgICBvZmZzZXQ6IChjaGFyICopYnVmIC0gbWVtCisgICAgICAgIiIiCisgICAgICAgaWYgb2Zmc2V0ICUgaXRlbXNpemU6CisgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgIGlmIG9mZnNldCA8IDAgb3Igb2Zmc2V0K2l0ZW1zaXplID4gbWVtbGVuOgorICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICBpZiBhbnkodiAlIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXMpOgorICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgIGlmIG5kaW0gPD0gMDoKKyAgICAgICAgICAgcmV0dXJuIG5kaW0gPT0gMCBhbmQgbm90IHNoYXBlIGFuZCBub3Qgc3RyaWRlcworICAgICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICBpbWluID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdIDw9IDApCisgICAgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA+IDApCisKKyAgICAgICByZXR1cm4gMCA8PSBvZmZzZXQraW1pbiBhbmQgb2Zmc2V0K2ltYXgraXRlbXNpemUgPD0gbWVtbGVuCisKKworUElMLXN0eWxlOiBzaGFwZSwgc3RyaWRlcyBhbmQgc3Vib2Zmc2V0cworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBpdGVtcywgUElMLXN0eWxlIGFycmF5cyBjYW4gY29udGFpbiBwb2ludGVycwordGhhdCBtdXN0IGJlIGZvbGxvd2VkIGluIG9yZGVyIHRvIGdldCB0byB0aGUgbmV4dCBlbGVtZW50IGluIGEgZGltZW5zaW9uLgorRm9yIGV4YW1wbGUsIHRoZSByZWd1bGFyIHRocmVlLWRpbWVuc2lvbmFsIEMtYXJyYXkgYGBjaGFyIHZbMl1bMl1bM11gYCBjYW4KK2Fsc28gYmUgdmlld2VkIGFzIGFuIGFycmF5IG9mIDIgcG9pbnRlcnMgdG8gMiB0d28tZGltZW5zaW9uYWwgYXJyYXlzOgorYGBjaGFyICgqdlsyXSlbMl1bM11gYC4gSW4gc3Vib2Zmc2V0cyByZXByZXNlbnRhdGlvbiwgdGhvc2UgdHdvIHBvaW50ZXJzCitjYW4gYmUgZW1iZWRkZWQgYXQgdGhlIHN0YXJ0IG9mIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgLCBwb2ludGluZwordG8gdHdvIGBgY2hhciB4WzJdWzNdYGAgYXJyYXlzIHRoYXQgY2FuIGJlIGxvY2F0ZWQgYW55d2hlcmUgaW4gbWVtb3J5LgorCisKK0hlcmUgaXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBlbGVtZW50IGluIGFuIE4tRCBhcnJheQorcG9pbnRlZCB0byBieSBhbiBOLWRpbWVuc2lvbmFsIGluZGV4IHdoZW4gdGhlcmUgYXJlIGJvdGggbm9uLU5VTEwgc3RyaWRlcworYW5kIHN1Ym9mZnNldHM6OgorCisgICB2b2lkICpnZXRfaXRlbV9wb2ludGVyKGludCBuZGltLCB2b2lkICpidWYsIFB5X3NzaXplX3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsIFB5X3NzaXplX3QgKmluZGljZXMpIHsKKyAgICAgICBjaGFyICpwb2ludGVyID0gKGNoYXIqKWJ1ZjsKKyAgICAgICBpbnQgaTsKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgICAgIHBvaW50ZXIgKz0gc3RyaWRlc1tpXSAqIGluZGljZXNbaV07CisgICAgICAgICAgIGlmIChzdWJvZmZzZXRzW2ldID49MCApIHsKKyAgICAgICAgICAgICAgIHBvaW50ZXIgPSAqKChjaGFyKiopcG9pbnRlcikgKyBzdWJvZmZzZXRzW2ldOworICAgICAgICAgICB9CisgICAgICAgfQorICAgICAgIHJldHVybiAodm9pZCopcG9pbnRlcjsKKyAgIH0KKwogCiBCdWZmZXItcmVsYXRlZCBmdW5jdGlvbnMKID09PT09PT09PT09PT09PT09PT09PT09PQogCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfQ2hlY2tCdWZmZXIoUHlPYmplY3QgKm9iaikKIAogICAgUmV0dXJuIDEgaWYgKm9iaiogc3VwcG9ydHMgdGhlIGJ1ZmZlciBpbnRlcmZhY2Ugb3RoZXJ3aXNlIDAuICBXaGVuIDEgaXMKQEAgLTE3NywxNTIgKzQyMyw3MSBAQAogICAgc3VjY2VlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X0dldEJ1ZmZlcihQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfR2V0QnVmZmVyKFB5T2JqZWN0ICpleHBvcnRlciwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCiAKLSAgICAgIEV4cG9ydCBhIHZpZXcgb3ZlciBzb21lIGludGVybmFsIGRhdGEgZnJvbSB0aGUgdGFyZ2V0IG9iamVjdCAqb2JqKi4KLSAgICAgICpvYmoqIG11c3Qgbm90IGJlIE5VTEwsIGFuZCAqdmlldyogbXVzdCBwb2ludCB0byBhbiBleGlzdGluZwotICAgICAgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgYWxsb2NhdGVkIGJ5IHRoZSBjYWxsZXIgKG1vc3QgdXNlcyBvZgotICAgICAgdGhpcyBmdW5jdGlvbiB3aWxsIHNpbXBseSBkZWNsYXJlIGEgbG9jYWwgdmFyaWFibGUgb2YgdHlwZQotICAgICAgOmM6dHlwZTpgUHlfYnVmZmVyYCkuICBUaGUgKmZsYWdzKiBhcmd1bWVudCBpcyBhIGJpdCBmaWVsZCBpbmRpY2F0aW5nCi0gICAgICB3aGF0IGtpbmQgb2YgYnVmZmVyIGlzIHJlcXVlc3RlZC4gIFRoZSBidWZmZXIgaW50ZXJmYWNlIGFsbG93cwotICAgICAgZm9yIGNvbXBsaWNhdGVkIG1lbW9yeSBsYXlvdXQgcG9zc2liaWxpdGllczsgaG93ZXZlciwgc29tZSBjYWxsZXJzCi0gICAgICB3b24ndCB3YW50IHRvIGhhbmRsZSBhbGwgdGhlIGNvbXBsZXhpdHkgYW5kIGluc3RlYWQgcmVxdWVzdCBhIHNpbXBsZQotICAgICAgdmlldyBvZiB0aGUgdGFyZ2V0IG9iamVjdCAodXNpbmcgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAgZm9yIGEgcmVhZC1vbmx5Ci0gICAgICB2aWV3IGFuZCA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGZvciBhIHJlYWQtd3JpdGUgdmlldykuCisgICBTZW5kIGEgcmVxdWVzdCB0byAqZXhwb3J0ZXIqIHRvIGZpbGwgaW4gKnZpZXcqIGFzIHNwZWNpZmllZCBieSAgKmZsYWdzKi4KKyAgIElmIHRoZSBleHBvcnRlciBjYW5ub3QgcHJvdmlkZSBhIGJ1ZmZlciBvZiB0aGUgZXhhY3QgdHlwZSwgaXQgTVVTVCByYWlzZQorICAgOmM6ZGF0YTpgUHlFeGNfQnVmZmVyRXJyb3JgLCBzZXQgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIHRvICpOVUxMKiBhbmQKKyAgIHJldHVybiAtMS4KIAotICAgICAgU29tZSBleHBvcnRlcnMgbWF5IG5vdCBiZSBhYmxlIHRvIHNoYXJlIG1lbW9yeSBpbiBldmVyeSBwb3NzaWJsZSB3YXkgYW5kCi0gICAgICBtYXkgbmVlZCB0byByYWlzZSBlcnJvcnMgdG8gc2lnbmFsIHRvIHNvbWUgY29uc3VtZXJzIHRoYXQgc29tZXRoaW5nIGlzCi0gICAgICBqdXN0IG5vdCBwb3NzaWJsZS4gVGhlc2UgZXJyb3JzIHNob3VsZCBiZSBhIDpleGM6YEJ1ZmZlckVycm9yYCB1bmxlc3MKLSAgICAgIHRoZXJlIGlzIGFub3RoZXIgZXJyb3IgdGhhdCBpcyBhY3R1YWxseSBjYXVzaW5nIHRoZSBwcm9ibGVtLiBUaGUKLSAgICAgIGV4cG9ydGVyIGNhbiB1c2UgZmxhZ3MgaW5mb3JtYXRpb24gdG8gc2ltcGxpZnkgaG93IG11Y2ggb2YgdGhlCi0gICAgICA6YzpkYXRhOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBpcyBmaWxsZWQgaW4gd2l0aCBub24tZGVmYXVsdCB2YWx1ZXMgYW5kL29yCi0gICAgICByYWlzZSBhbiBlcnJvciBpZiB0aGUgb2JqZWN0IGNhbid0IHN1cHBvcnQgYSBzaW1wbGVyIHZpZXcgb2YgaXRzIG1lbW9yeS4KKyAgIE9uIHN1Y2Nlc3MsIGZpbGwgaW4gKnZpZXcqLCBzZXQgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIHRvIGEgbmV3IHJlZmVyZW5jZQorICAgdG8gKmV4cG9ydGVyKiBhbmQgcmV0dXJuIDAuIEluIHRoZSBjYXNlIG9mIGNoYWluZWQgYnVmZmVyIHByb3ZpZGVycworICAgdGhhdCByZWRpcmVjdCByZXF1ZXN0cyB0byBhIHNpbmdsZSBvYmplY3QsIDpjOm1lbWJlcjpgdmlldy0+b2JqYCBNQVkKKyAgIHJlZmVyIHRvIHRoaXMgb2JqZWN0IGluc3RlYWQgb2YgKmV4cG9ydGVyKiAoU2VlIDpyZWY6YEJ1ZmZlciBPYmplY3QgU3RydWN0dXJlcyA8YnVmZmVyLXN0cnVjdHM+YCkuCiAKLSAgICAgIE9uIHN1Y2Nlc3MsIDAgaXMgcmV0dXJuZWQgYW5kIHRoZSAqdmlldyogc3RydWN0dXJlIGlzIGZpbGxlZCB3aXRoIHVzZWZ1bAotICAgICAgdmFsdWVzLiAgT24gZXJyb3IsIC0xIGlzIHJldHVybmVkIGFuZCBhbiBleGNlcHRpb24gaXMgcmFpc2VkOyB0aGUgKnZpZXcqCi0gICAgICBpcyBsZWZ0IGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KLQotICAgICAgVGhlIGZvbGxvd2luZyBhcmUgdGhlIHBvc3NpYmxlIHZhbHVlcyB0byB0aGUgKmZsYWdzKiBhcmd1bWVudHMuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9TSU1QTEUKLQotICAgICAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmbGFnLiAgVGhlIHJldHVybmVkIGJ1ZmZlciBleHBvc2VzIGEgcmVhZC1vbmx5Ci0gICAgICAgICBtZW1vcnkgYXJlYS4gIFRoZSBmb3JtYXQgb2YgZGF0YSBpcyBhc3N1bWVkIHRvIGJlIHJhdyB1bnNpZ25lZCBieXRlcywKLSAgICAgICAgIHdpdGhvdXQgYW55IHBhcnRpY3VsYXIgc3RydWN0dXJlLiAgVGhpcyBpcyBhICJzdGFuZC1hbG9uZSIgZmxhZwotICAgICAgICAgY29uc3RhbnQuICBJdCBuZXZlciBuZWVkcyB0byBiZSAnfCdkIHRvIHRoZSBvdGhlcnMuICBUaGUgZXhwb3J0ZXIgd2lsbAotICAgICAgICAgcmFpc2UgYW4gZXJyb3IgaWYgaXQgY2Fubm90IHByb3ZpZGUgc3VjaCBhIGNvbnRpZ3VvdXMgYnVmZmVyIG9mIGJ5dGVzLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfV1JJVEFCTEUKLQotICAgICAgICAgTGlrZSA6YzptYWNybzpgUHlCVUZfU0lNUExFYCwgYnV0IHRoZSByZXR1cm5lZCBidWZmZXIgaXMgd3JpdGFibGUuICBJZgotICAgICAgICAgdGhlIGV4cG9ydGVyIGRvZXNuJ3Qgc3VwcG9ydCB3cml0YWJsZSBidWZmZXJzLCBhbiBlcnJvciBpcyByYWlzZWQuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVTCi0KLSAgICAgICAgIFRoaXMgaW1wbGllcyA6YzptYWNybzpgUHlCVUZfTkRgLiAgVGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IHByb3ZpZGUKLSAgICAgICAgIHN0cmlkZXMgaW5mb3JtYXRpb24gKGkuZS4gdGhlIHN0cmlkZXMgY2Fubm90IGJlIE5VTEwpLiAgVGhpcyB3b3VsZCBiZQotICAgICAgICAgdXNlZCB3aGVuIHRoZSBjb25zdW1lciBjYW4gaGFuZGxlIHN0cmlkZWQsIGRpc2NvbnRpZ3VvdXMgYXJyYXlzLgotICAgICAgICAgSGFuZGxpbmcgc3RyaWRlcyBhdXRvbWF0aWNhbGx5IGFzc3VtZXMgeW91IGNhbiBoYW5kbGUgc2hhcGUuICBUaGUKLSAgICAgICAgIGV4cG9ydGVyIGNhbiByYWlzZSBhbiBlcnJvciBpZiBhIHN0cmlkZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGEgaXMKLSAgICAgICAgIG5vdCBwb3NzaWJsZSAoaS5lLiB3aXRob3V0IHRoZSBzdWJvZmZzZXRzKS4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX05ECi0KLSAgICAgICAgIFRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBwcm92aWRlIHNoYXBlIGluZm9ybWF0aW9uLiAgVGhlIG1lbW9yeSB3aWxsIGJlCi0gICAgICAgICBhc3N1bWVkIEMtc3R5bGUgY29udGlndW91cyAobGFzdCBkaW1lbnNpb24gdmFyaWVzIHRoZSBmYXN0ZXN0KS4gIFRoZQotICAgICAgICAgZXhwb3J0ZXIgbWF5IHJhaXNlIGFuIGVycm9yIGlmIGl0IGNhbm5vdCBwcm92aWRlIHRoaXMga2luZCBvZgotICAgICAgICAgY29udGlndW91cyBidWZmZXIuICBJZiB0aGlzIGlzIG5vdCBnaXZlbiB0aGVuIHNoYXBlIHdpbGwgYmUgKk5VTEwqLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfQ19DT05USUdVT1VTCi0gICAgICAgICAgICAgICAgICBQeUJVRl9GX0NPTlRJR1VPVVMKLSAgICAgICAgICAgICAgICAgIFB5QlVGX0FOWV9DT05USUdVT1VTCi0KLSAgICAgICAgIFRoZXNlIGZsYWdzIGluZGljYXRlIHRoYXQgdGhlIGNvbnRpZ3VpdHkgcmV0dXJuZWQgYnVmZmVyIG11c3QgYmUKLSAgICAgICAgIHJlc3BlY3RpdmVseSwgQy1jb250aWd1b3VzIChsYXN0IGRpbWVuc2lvbiB2YXJpZXMgdGhlIGZhc3Rlc3QpLCBGb3J0cmFuCi0gICAgICAgICBjb250aWd1b3VzIChmaXJzdCBkaW1lbnNpb24gdmFyaWVzIHRoZSBmYXN0ZXN0KSBvciBlaXRoZXIgb25lLiAgQWxsIG9mCi0gICAgICAgICB0aGVzZSBmbGFncyBpbXBseSA6YzptYWNybzpgUHlCVUZfU1RSSURFU2AgYW5kIGd1YXJhbnRlZSB0aGF0IHRoZQotICAgICAgICAgc3RyaWRlcyBidWZmZXIgaW5mbyBzdHJ1Y3R1cmUgd2lsbCBiZSBmaWxsZWQgaW4gY29ycmVjdGx5LgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfSU5ESVJFQ1QKLQotICAgICAgICAgVGhpcyBmbGFnIGluZGljYXRlcyB0aGUgcmV0dXJuZWQgYnVmZmVyIG11c3QgaGF2ZSBzdWJvZmZzZXRzCi0gICAgICAgICBpbmZvcm1hdGlvbiAod2hpY2ggY2FuIGJlIE5VTEwgaWYgbm8gc3Vib2Zmc2V0cyBhcmUgbmVlZGVkKS4gIFRoaXMgY2FuCi0gICAgICAgICBiZSB1c2VkIHdoZW4gdGhlIGNvbnN1bWVyIGNhbiBoYW5kbGUgaW5kaXJlY3QgYXJyYXkgcmVmZXJlbmNpbmcgaW1wbGllZAotICAgICAgICAgYnkgdGhlc2Ugc3Vib2Zmc2V0cy4gVGhpcyBpbXBsaWVzIDpjOm1hY3JvOmBQeUJVRl9TVFJJREVTYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0ZPUk1BVAotCi0gICAgICAgICBUaGUgcmV0dXJuZWQgYnVmZmVyIG11c3QgaGF2ZSB0cnVlIGZvcm1hdCBpbmZvcm1hdGlvbiBpZiB0aGlzIGZsYWcgaXMKLSAgICAgICAgIHByb3ZpZGVkLiAgVGhpcyB3b3VsZCBiZSB1c2VkIHdoZW4gdGhlIGNvbnN1bWVyIGlzIGdvaW5nIHRvIGJlIGNoZWNraW5nCi0gICAgICAgICBmb3Igd2hhdCAna2luZCcgb2YgZGF0YSBpcyBhY3R1YWxseSBzdG9yZWQuICBBbiBleHBvcnRlciBzaG91bGQgYWx3YXlzCi0gICAgICAgICBiZSBhYmxlIHRvIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWQuICBJZiBmb3JtYXQgaXMgbm90Ci0gICAgICAgICBleHBsaWNpdGx5IHJlcXVlc3RlZCB0aGVuIHRoZSBmb3JtYXQgbXVzdCBiZSByZXR1cm5lZCBhcyAqTlVMTCogKHdoaWNoCi0gICAgICAgICBtZWFucyBgYCdCJ2BgLCBvciB1bnNpZ25lZCBieXRlcykuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVECi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9TVFJJREVTIHwgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVEX1JPCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9TVFJJREVTKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfUkVDT1JEUwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUyB8IFB5QlVGX0ZPUk1BVCB8Ci0gICAgICAgICBQeUJVRl9XUklUQUJMRSlgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFNfUk8KLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMgfCBQeUJVRl9GT1JNQVQpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9JTkRJUkVDVCB8IFB5QlVGX0ZPUk1BVCB8Ci0gICAgICAgICBQeUJVRl9XUklUQUJMRSlgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0ZVTExfUk8KLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX0lORElSRUNUIHwgUHlCVUZfRk9STUFUKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfQ09OVElHCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9ORCB8IFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfQ09OVElHX1JPCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9ORClgYC4KKyAgIFN1Y2Nlc3NmdWwgY2FsbHMgdG8gOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYCBtdXN0IGJlIHBhaXJlZCB3aXRoIGNhbGxzCisgICB0byA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCwgc2ltaWxhciB0byA6YzpmdW5jOmBtYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYC4KKyAgIFRodXMsIGFmdGVyIHRoZSBjb25zdW1lciBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciwgOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAKKyAgIG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZS4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUJ1ZmZlcl9SZWxlYXNlKFB5X2J1ZmZlciAqdmlldykKIAotICAgUmVsZWFzZSB0aGUgYnVmZmVyICp2aWV3Ki4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBidWZmZXIgaXMgbm8KLSAgIGxvbmdlciBiZWluZyB1c2VkIGFzIGl0IG1heSBmcmVlIG1lbW9yeSBmcm9tIGl0LgorICAgUmVsZWFzZSB0aGUgYnVmZmVyICp2aWV3KiBhbmQgZGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgZm9yCisgICA6YzptZW1iZXI6YHZpZXctPm9iamAuIFRoaXMgZnVuY3Rpb24gTVVTVCBiZSBjYWxsZWQgd2hlbiB0aGUgYnVmZmVyCisgICBpcyBubyBsb25nZXIgYmVpbmcgdXNlZCwgb3RoZXJ3aXNlIHJlZmVyZW5jZSBsZWFrcyBtYXkgb2NjdXIuCisKKyAgIEl0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBvbiBhIGJ1ZmZlciB0aGF0IHdhcyBub3Qgb2J0YWluZWQgdmlhCisgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5QnVmZmVyX1NpemVGcm9tRm9ybWF0KGNvbnN0IGNoYXIgKikKIAotICAgUmV0dXJuIHRoZSBpbXBsaWVkIDpjOmRhdGE6YH5QeV9idWZmZXIuaXRlbXNpemVgIGZyb20gdGhlIHN0cnVjdC1zdHlwZQotICAgOmM6ZGF0YTpgflB5X2J1ZmZlci5mb3JtYXRgLgorICAgUmV0dXJuIHRoZSBpbXBsaWVkIDpjOmRhdGE6YH5QeV9idWZmZXIuaXRlbXNpemVgIGZyb20gOmM6ZGF0YTpgflB5X2J1ZmZlci5mb3JtYXRgLgorICAgVGhpcyBmdW5jdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBmb3J0cmFuKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCBjaGFyIG9yZGVyKQogCi0gICBSZXR1cm4gMSBpZiB0aGUgbWVtb3J5IGRlZmluZWQgYnkgdGhlICp2aWV3KiBpcyBDLXN0eWxlICgqZm9ydHJhbiogaXMKLSAgIGBgJ0MnYGApIG9yIEZvcnRyYW4tc3R5bGUgKCpmb3J0cmFuKiBpcyBgYCdGJ2BgKSBjb250aWd1b3VzIG9yIGVpdGhlciBvbmUKLSAgICgqZm9ydHJhbiogaXMgYGAnQSdgYCkuICBSZXR1cm4gMCBvdGhlcndpc2UuCisgICBSZXR1cm4gMSBpZiB0aGUgbWVtb3J5IGRlZmluZWQgYnkgdGhlICp2aWV3KiBpcyBDLXN0eWxlICgqb3JkZXIqIGlzCisgICBgYCdDJ2BgKSBvciBGb3J0cmFuLXN0eWxlICgqb3JkZXIqIGlzIGBgJ0YnYGApIGNvbnRpZ3VvdXMgb3IgZWl0aGVyIG9uZQorICAgKCpvcmRlciogaXMgYGAnQSdgYCkuICBSZXR1cm4gMCBvdGhlcndpc2UuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlCdWZmZXJfRmlsbENvbnRpZ3VvdXNTdHJpZGVzKGludCBuZGltLCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCAqc3RyaWRlcywgUHlfc3NpemVfdCBpdGVtc2l6ZSwgY2hhciBmb3J0cmFuKQorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlCdWZmZXJfRmlsbENvbnRpZ3VvdXNTdHJpZGVzKGludCBuZGltLCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCAqc3RyaWRlcywgUHlfc3NpemVfdCBpdGVtc2l6ZSwgY2hhciBvcmRlcikKIAogICAgRmlsbCB0aGUgKnN0cmlkZXMqIGFycmF5IHdpdGggYnl0ZS1zdHJpZGVzIG9mIGEgY29udGlndW91cyAoQy1zdHlsZSBpZgotICAgKmZvcnRyYW4qIGlzIGBgJ0MnYGAgb3IgRm9ydHJhbi1zdHlsZSBpZiAqZm9ydHJhbiogaXMgYGAnRidgYCkgYXJyYXkgb2YgdGhlCisgICAqb3JkZXIqIGlzIGBgJ0MnYGAgb3IgRm9ydHJhbi1zdHlsZSBpZiAqb3JkZXIqIGlzIGBgJ0YnYGApIGFycmF5IG9mIHRoZQogICAgZ2l2ZW4gc2hhcGUgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIHBlciBlbGVtZW50LgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfRmlsbEluZm8oUHlfYnVmZmVyICp2aWV3LCBQeU9iamVjdCAqb2JqLCB2b2lkICpidWYsIFB5X3NzaXplX3QgbGVuLCBpbnQgcmVhZG9ubHksIGludCBpbmZvZmxhZ3MpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKmV4cG9ydGVyLCB2b2lkICpidWYsIFB5X3NzaXplX3QgbGVuLCBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIAotICAgRmlsbCBpbiBhIGJ1ZmZlci1pbmZvIHN0cnVjdHVyZSwgKnZpZXcqLCBjb3JyZWN0bHkgZm9yIGFuIGV4cG9ydGVyIHRoYXQgY2FuCi0gICBvbmx5IHNoYXJlIGEgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkgb2YgInVuc2lnbmVkIGJ5dGVzIiBvZiB0aGUgZ2l2ZW4KLSAgIGxlbmd0aC4gIFJldHVybiAwIG9uIHN1Y2Nlc3MgYW5kIC0xICh3aXRoIHJhaXNpbmcgYW4gZXJyb3IpIG9uIGVycm9yLgorICAgSGFuZGxlIGJ1ZmZlciByZXF1ZXN0cyBmb3IgYW4gZXhwb3J0ZXIgdGhhdCB3YW50cyB0byBleHBvc2UgKmJ1Ziogb2Ygc2l6ZSAqbGVuKgorICAgd2l0aCB3cml0YWJpbGl0eSBzZXQgYWNjb3JkaW5nIHRvICpyZWFkb25seSouICpidWYqIGlzIGludGVycHJldGVkIGFzIGEgc2VxdWVuY2UKKyAgIG9mIHVuc2lnbmVkIGJ5dGVzLgorCisgICBUaGUgKmZsYWdzKiBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIHJlcXVlc3QgdHlwZS4gVGhpcyBmdW5jdGlvbiBhbHdheXMgZmlsbHMgaW4KKyAgICp2aWV3KiBhcyBzcGVjaWZpZWQgYnkgZmxhZ3MsIHVubGVzcyAqYnVmKiBoYXMgYmVlbiBkZXNpZ25hdGVkIGFzIHJlYWQtb25seQorICAgYW5kIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgaXMgc2V0IGluICpmbGFncyouCisKKyAgIE9uIHN1Y2Nlc3MsIHNldCA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gYSBuZXcgcmVmZXJlbmNlIHRvICpleHBvcnRlciogYW5kCisgICByZXR1cm4gMC4gT3RoZXJ3aXNlLCByYWlzZSA6YzpkYXRhOmBQeUV4Y19CdWZmZXJFcnJvcmAsIHNldAorICAgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIHRvICpOVUxMKiBhbmQgcmV0dXJuIC0xOworCisgICBJZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgcGFydCBvZiBhIDpyZWY6YGdldGJ1ZmZlcnByb2MgPGJ1ZmZlci1zdHJ1Y3RzPmAsCisgICAqZXhwb3J0ZXIqIE1VU1QgYmUgc2V0IHRvIHRoZSBleHBvcnRpbmcgb2JqZWN0LiBPdGhlcndpc2UsICpleHBvcnRlciogTVVTVAorICAgYmUgTlVMTC4KKworCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9jb2RlLnJzdCBiL0RvYy9jLWFwaS9jb2RlLnJzdAppbmRleCA2OTMyYmIxLi41N2U4MDcyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvY29kZS5yc3QKKysrIGIvRG9jL2MtYXBpL2NvZGUucnN0CkBAIC0zMSwxMSArMzEsMTEgQEAKIAogICAgUmV0dXJuIHRydWUgaWYgKmNvKiBpcyBhIDpjbGFzczpgY29kZWAgb2JqZWN0CiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb2RlX0dldE51bUZyZWUoUHlPYmplY3QgKmNvKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUNvZGVfR2V0TnVtRnJlZShQeUNvZGVPYmplY3QgKmNvKQogCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBmcmVlIHZhcmlhYmxlcyBpbiAqY28qLgogCi0uLiBjOmZ1bmN0aW9uOjogUHlDb2RlT2JqZWN0ICpQeUNvZGVfTmV3KGludCBhcmdjb3VudCwgaW50IGt3b25seWFyZ2NvdW50LCBpbnQgbmxvY2FscywgaW50IHN0YWNrc2l6ZSwgaW50IGZsYWdzLCBQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqdmFybmFtZXMsIFB5T2JqZWN0ICpmcmVldmFycywgUHlPYmplY3QgKmNlbGx2YXJzLCBQeU9iamVjdCAqZmlsZW5hbWUsIFB5T2JqZWN0ICpuYW1lLCBpbnQgZmlyc3RsaW5lbm8sIFB5T2JqZWN0ICpsbm90YWIpCisuLiBjOmZ1bmN0aW9uOjogUHlDb2RlT2JqZWN0KiBQeUNvZGVfTmV3KGludCBhcmdjb3VudCwgaW50IGt3b25seWFyZ2NvdW50LCBpbnQgbmxvY2FscywgaW50IHN0YWNrc2l6ZSwgaW50IGZsYWdzLCBQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqdmFybmFtZXMsIFB5T2JqZWN0ICpmcmVldmFycywgUHlPYmplY3QgKmNlbGx2YXJzLCBQeU9iamVjdCAqZmlsZW5hbWUsIFB5T2JqZWN0ICpuYW1lLCBpbnQgZmlyc3RsaW5lbm8sIFB5T2JqZWN0ICpsbm90YWIpCiAKICAgIFJldHVybiBhIG5ldyBjb2RlIG9iamVjdC4gIElmIHlvdSBuZWVkIGEgZHVtbXkgY29kZSBvYmplY3QgdG8KICAgIGNyZWF0ZSBhIGZyYW1lLCB1c2UgOmM6ZnVuYzpgUHlDb2RlX05ld0VtcHR5YCBpbnN0ZWFkLiAgQ2FsbGluZwpAQCAtNDMsNyArNDMsNyBAQAogICAgdmVyc2lvbiBzaW5jZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYnl0ZWNvZGUgY2hhbmdlcyBvZnRlbi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5Q29kZV9OZXdFbXB0eShjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZnVuY25hbWUsIGludCBmaXJzdGxpbmVubykKKy4uIGM6ZnVuY3Rpb246OiBQeUNvZGVPYmplY3QqIFB5Q29kZV9OZXdFbXB0eShjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZnVuY25hbWUsIGludCBmaXJzdGxpbmVubykKIAogICAgUmV0dXJuIGEgbmV3IGVtcHR5IGNvZGUgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwKICAgIGZ1bmN0aW9uIG5hbWUsIGFuZCBmaXJzdCBsaW5lIG51bWJlci4gIEl0IGlzIGlsbGVnYWwgdG8KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9jb252ZXJzaW9uLnJzdCBiL0RvYy9jLWFwaS9jb252ZXJzaW9uLnJzdAppbmRleCBkZmMwYTNhLi45NTc4Zjk4IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QKKysrIGIvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0CkBAIC0xMTksMTMgKzExOSwxMyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAotLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5T1Nfc3RyaWNtcChjaGFyICpzMSwgY2hhciAqczIpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5T1Nfc3RyaWNtcChjaGFyICpzMSwgY2hhciAqczIpCiAKICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBzdHJpbmdzLiBUaGUgZnVuY3Rpb24gd29ya3MgYWxtb3N0CiAgICBpZGVudGljYWxseSB0byA6YzpmdW5jOmBzdHJjbXBgIGV4Y2VwdCB0aGF0IGl0IGlnbm9yZXMgdGhlIGNhc2UuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5T1Nfc3RybmljbXAoY2hhciAqczEsIGNoYXIgKnMyLCBQeV9zc2l6ZV90ICBzaXplKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeU9TX3N0cm5pY21wKGNoYXIgKnMxLCBjaGFyICpzMiwgUHlfc3NpemVfdCAgc2l6ZSkKIAogICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIG9mIHN0cmluZ3MuIFRoZSBmdW5jdGlvbiB3b3JrcyBhbG1vc3QKICAgIGlkZW50aWNhbGx5IHRvIDpjOmZ1bmM6YHN0cm5jbXBgIGV4Y2VwdCB0aGF0IGl0IGlnbm9yZXMgdGhlIGNhc2UuCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZGF0ZXRpbWUucnN0IGIvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdAppbmRleCBmY2QxMzk1Li4zOTU0MmJkIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZGF0ZXRpbWUucnN0CisrKyBiL0RvYy9jLWFwaS9kYXRldGltZS5yc3QKQEAgLTE3MCw2ICsxNzAsMzEgQEAKICAgIFJldHVybiB0aGUgbWljcm9zZWNvbmQsIGFzIGFuIGludCBmcm9tIDAgdGhyb3VnaCA5OTk5OTkuCiAKIAorTWFjcm9zIHRvIGV4dHJhY3QgZmllbGRzIGZyb20gdGltZSBkZWx0YSBvYmplY3RzLiAgVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4KK2luc3RhbmNlIG9mIDpjOmRhdGE6YFB5RGF0ZVRpbWVfRGVsdGFgLCBpbmNsdWRpbmcgc3ViY2xhc3Nlcy4gVGhlIGFyZ3VtZW50IG11c3QKK25vdCBiZSAqTlVMTCosIGFuZCB0aGUgdHlwZSBpcyBub3QgY2hlY2tlZDoKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTKFB5RGF0ZVRpbWVfRGVsdGEgKm8pCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMsIGFzIGFuIGludCBmcm9tIC05OTk5OTk5OTkgdG8gOTk5OTk5OTk5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RGF0ZVRpbWVfREVMVEFfR0VUX1NFQ09ORFMoUHlEYXRlVGltZV9EZWx0YSAqbykKKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2Vjb25kcywgYXMgYW4gaW50IGZyb20gMCB0aHJvdWdoIDg2Mzk5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EKFB5RGF0ZVRpbWVfRGVsdGEgKm8pCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcywgYXMgYW4gaW50IGZyb20gMCB0aHJvdWdoIDk5OTk5OS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogTWFjcm9zIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgbW9kdWxlcyBpbXBsZW1lbnRpbmcgdGhlIERCIEFQSToKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeURhdGVUaW1lX0Zyb21UaW1lc3RhbXAoUHlPYmplY3QgKmFyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZGljdC5yc3QgYi9Eb2MvYy1hcGkvZGljdC5yc3QKaW5kZXggNmRmODRlMC4uNmJhY2MzMiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2RpY3QucnN0CisrKyBiL0RvYy9jLWFwaS9kaWN0LnJzdApAQCAtMzYsMTEgKzM2LDExIEBACiAgICBSZXR1cm4gYSBuZXcgZW1wdHkgZGljdGlvbmFyeSwgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeURpY3RQcm94eV9OZXcoUHlPYmplY3QgKmRpY3QpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RGljdFByb3h5X05ldyhQeU9iamVjdCAqbWFwcGluZykKIAotICAgUmV0dXJuIGEgcHJveHkgb2JqZWN0IGZvciBhIG1hcHBpbmcgd2hpY2ggZW5mb3JjZXMgcmVhZC1vbmx5IGJlaGF2aW9yLgotICAgVGhpcyBpcyBub3JtYWxseSB1c2VkIHRvIGNyZWF0ZSBhIHByb3h5IHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIHRoZQotICAgZGljdGlvbmFyeSBmb3Igbm9uLWR5bmFtaWMgY2xhc3MgdHlwZXMuCisgICBSZXR1cm4gYSA6Y2xhc3M6YHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgIG9iamVjdCBmb3IgYSBtYXBwaW5nIHdoaWNoCisgICBlbmZvcmNlcyByZWFkLW9ubHkgYmVoYXZpb3IuICBUaGlzIGlzIG5vcm1hbGx5IHVzZWQgdG8gY3JlYXRlIGEgdmlldyB0bworICAgcHJldmVudCBtb2RpZmljYXRpb24gb2YgdGhlIGRpY3Rpb25hcnkgZm9yIG5vbi1keW5hbWljIGNsYXNzIHR5cGVzLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RGljdF9DbGVhcihQeU9iamVjdCAqcCkKQEAgLTIwOSwzICsyMDksMTAgQEAKICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZXEyOgogICAgICAgICAgICAgICBpZiBvdmVycmlkZSBvciBrZXkgbm90IGluIGE6CiAgICAgICAgICAgICAgICAgICBhW2tleV0gPSB2YWx1ZQorCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKQorCisgICBDbGVhciB0aGUgZnJlZSBsaXN0LiBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBmcmVlZCBpdGVtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKaW5kZXggNmYxM2M4MC4uOWE2NmI3ZiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CisrKyBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdApAQCAtMTI5LDYgKzEyOSw0MSBAQAogICAgICAgZXhjZXB0aW9uIHN0YXRlLgogCiAKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKKworICAgUmV0cmlldmUgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCisgICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgYWxyZWFkeSBjYXVnaHQsIG5vdCB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMKKyAgIGZyZXNobHkgcmFpc2VkLiAgUmV0dXJucyBuZXcgcmVmZXJlbmNlcyBmb3IgdGhlIHRocmVlIG9iamVjdHMsIGFueSBvZiB3aGljaAorICAgbWF5IGJlICpOVUxMKi4gIERvZXMgbm90IG1vZGlmeSB0aGUgZXhjZXB0aW9uIGluZm8gc3RhdGUuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KKyAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfU2V0RXhjSW5mb2AgdG8gcmVzdG9yZSBvciBjbGVhciB0aGUKKyAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQorCisgICBTZXQgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCisgICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgYWxyZWFkeSBjYXVnaHQsIG5vdCB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMKKyAgIGZyZXNobHkgcmFpc2VkLiAgVGhpcyBmdW5jdGlvbiBzdGVhbHMgdGhlIHJlZmVyZW5jZXMgb2YgdGhlIGFyZ3VtZW50cy4KKyAgIFRvIGNsZWFyIHRoZSBleGNlcHRpb24gc3RhdGUsIHBhc3MgKk5VTEwqIGZvciBhbGwgdGhyZWUgYXJndW1lbnRzLgorICAgRm9yIGdlbmVyYWwgcnVsZXMgYWJvdXQgdGhlIHRocmVlIGFyZ3VtZW50cywgc2VlIDpjOmZ1bmM6YFB5RXJyX1Jlc3RvcmVgLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX0dldEV4Y0luZm9gIHRvIHJlYWQgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldFN0cmluZyhQeU9iamVjdCAqdHlwZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIAogICAgVGhpcyBpcyB0aGUgbW9zdCBjb21tb24gd2F5IHRvIHNldCB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgVGhlIGZpcnN0IGFyZ3VtZW50CkBAIC0yMzAsNiArMjY1LDE2IEBACiAgICBwYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgZXhjZXB0aW9uIHR5cGUgdG8gYmUgcmFpc2VkLiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCisKKyAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAuICptc2cqIHdpbGwgYmUKKyAgIHNldCBhcyB0aGUgZXhjZXB0aW9uJ3MgbWVzc2FnZSBzdHJpbmcuICpuYW1lKiBhbmQgKnBhdGgqLCBib3RoIG9mIHdoaWNoIGNhbgorICAgYmUgYGBOVUxMYGAsIHdpbGwgYmUgc2V0IGFzIHRoZSA6ZXhjOmBJbXBvcnRFcnJvcmAncyByZXNwZWN0aXZlIGBgbmFtZWBgCisgICBhbmQgYGBwYXRoYGAgYXR0cmlidXRlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU3ludGF4TG9jYXRpb25FeChjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKICAgIFNldCBmaWxlLCBsaW5lLCBhbmQgb2Zmc2V0IGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBleGNlcHRpb24uICBJZiB0aGUKQEAgLTIzOCw3ICsyODMsNyBAQAogICAgaXMgYSA6ZXhjOmBTeW50YXhFcnJvcmAuICpmaWxlbmFtZSogaXMgZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nCiAgICAoOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmdgKS4KIAotLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TeW50YXhMb2NhdGlvbihjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKQEAgLTMxMSw2ICszNTYsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0NoZWNrU2lnbmFscygpCiAKICAgIC4uIGluZGV4OjoKQEAgLTQyMSwxNyArNDY3LDE4IEBACiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFeGNlcHRpb25fR2V0Q2F1c2UoUHlPYmplY3QgKmV4KQogCi0gICBSZXR1cm4gdGhlIGNhdXNlIChhbm90aGVyIGV4Y2VwdGlvbiBpbnN0YW5jZSBzZXQgYnkgYGByYWlzZSAuLi4gZnJvbSAuLi5gYCkKLSAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhjZXB0aW9uIGFzIGEgbmV3IHJlZmVyZW5jZSwgYXMgYWNjZXNzaWJsZSBmcm9tIFB5dGhvbgotICAgdGhyb3VnaCA6YXR0cjpgX19jYXVzZV9fYC4gIElmIHRoZXJlIGlzIG5vIGNhdXNlIGFzc29jaWF0ZWQsIHRoaXMgcmV0dXJucwotICAgKk5VTEwqLgorICAgUmV0dXJuIHRoZSBjYXVzZSAoZWl0aGVyIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSwgb3IgOmNvbnN0OmBOb25lYCwKKyAgIHNldCBieSBgYHJhaXNlIC4uLiBmcm9tIC4uLmBgKSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBhcyBhIG5ldworICAgcmVmZXJlbmNlLCBhcyBhY2Nlc3NpYmxlIGZyb20gUHl0aG9uIHRocm91Z2ggOmF0dHI6YF9fY2F1c2VfX2AuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKmV4LCBQeU9iamVjdCAqY3R4KQogCiAgICBTZXQgdGhlIGNhdXNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhjZXB0aW9uIHRvICpjdHgqLiAgVXNlICpOVUxMKiB0byBjbGVhcgotICAgaXQuICBUaGVyZSBpcyBubyB0eXBlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0ICpjdHgqIGlzIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZS4KLSAgIFRoaXMgc3RlYWxzIGEgcmVmZXJlbmNlIHRvICpjdHgqLgorICAgaXQuICBUaGVyZSBpcyBubyB0eXBlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0ICpjdHgqIGlzIGVpdGhlciBhbiBleGNlcHRpb24KKyAgIGluc3RhbmNlIG9yIDpjb25zdDpgTm9uZWAuICBUaGlzIHN0ZWFscyBhIHJlZmVyZW5jZSB0byAqY3R4Ki4KKworICAgOmF0dHI6YF9fc3VwcHJlc3NfY29udGV4dF9fYCBpcyBpbXBsaWNpdGx5IHNldCB0byBgYFRydWVgYCBieSB0aGlzIGZ1bmN0aW9uLgogCiAKIC4uIF91bmljb2RlZXhjZXB0aW9uczoKQEAgLTUyNSw3ICs1NzIsNyBAQAogCiAgICBNYXJrcyBhIHBvaW50IHdoZXJlIGEgcmVjdXJzaXZlIEMtbGV2ZWwgY2FsbCBpcyBhYm91dCB0byBiZSBwZXJmb3JtZWQuCiAKLSAgIElmIDpjb25zdDpgVVNFX1NUQUNLQ0hFQ0tgIGlzIGRlZmluZWQsIHRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSB0aGUgT1MKKyAgIElmIDpjb25zdDpgVVNFX1NUQUNLQ0hFQ0tgIGlzIGRlZmluZWQsIHRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBPUwogICAgc3RhY2sgb3ZlcmZsb3dlZCB1c2luZyA6YzpmdW5jOmBQeU9TX0NoZWNrU3RhY2tgLiAgSW4gdGhpcyBpcyB0aGUgY2FzZSwgaXQKICAgIHNldHMgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgYW5kIHJldHVybnMgYSBub256ZXJvIHZhbHVlLgogCkBAIC01ODIsNjUgKzYyOSwxMTYgQEAKIDpjOnR5cGU6YFB5T2JqZWN0XCpgOyB0aGV5IGFyZSBhbGwgY2xhc3Mgb2JqZWN0cy4gIEZvciBjb21wbGV0ZW5lc3MsIGhlcmUgYXJlIGFsbAogdGhlIHZhcmlhYmxlczoKIAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBDIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBOYW1lICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KwotfCA6YzpkYXRhOmBQeUV4Y19CYXNlRXhjZXB0aW9uYCAgICAgICB8IDpleGM6YEJhc2VFeGNlcHRpb25gICAgICAgIHwgXCgxKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19FeGNlcHRpb25gICAgICAgICAgICB8IDpleGM6YEV4Y2VwdGlvbmAgICAgICAgICAgIHwgXCgxKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19Bcml0aG1ldGljRXJyb3JgICAgICB8IDpleGM6YEFyaXRobWV0aWNFcnJvcmAgICAgIHwgXCgxKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19Mb29rdXBFcnJvcmAgICAgICAgICB8IDpleGM6YExvb2t1cEVycm9yYCAgICAgICAgIHwgXCgxKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19Bc3NlcnRpb25FcnJvcmAgICAgICB8IDpleGM6YEFzc2VydGlvbkVycm9yYCAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19BdHRyaWJ1dGVFcnJvcmAgICAgICB8IDpleGM6YEF0dHJpYnV0ZUVycm9yYCAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19FT0ZFcnJvcmAgICAgICAgICAgICB8IDpleGM6YEVPRkVycm9yYCAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19FbnZpcm9ubWVudEVycm9yYCAgICB8IDpleGM6YEVudmlyb25tZW50RXJyb3JgICAgIHwgXCgxKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3JgICB8IDpleGM6YEZsb2F0aW5nUG9pbnRFcnJvcmAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19JT0Vycm9yYCAgICAgICAgICAgICB8IDpleGM6YElPRXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19JbXBvcnRFcnJvcmAgICAgICAgICB8IDpleGM6YEltcG9ydEVycm9yYCAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19JbmRleEVycm9yYCAgICAgICAgICB8IDpleGM6YEluZGV4RXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19LZXlFcnJvcmAgICAgICAgICAgICB8IDpleGM6YEtleUVycm9yYCAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19LZXlib2FyZEludGVycnVwdGAgICB8IDpleGM6YEtleWJvYXJkSW50ZXJydXB0YCAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19NZW1vcnlFcnJvcmAgICAgICAgICB8IDpleGM6YE1lbW9yeUVycm9yYCAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19OYW1lRXJyb3JgICAgICAgICAgICB8IDpleGM6YE5hbWVFcnJvcmAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yYCB8IDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19PU0Vycm9yYCAgICAgICAgICAgICB8IDpleGM6YE9TRXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19PdmVyZmxvd0Vycm9yYCAgICAgICB8IDpleGM6YE92ZXJmbG93RXJyb3JgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19SZWZlcmVuY2VFcnJvcmAgICAgICB8IDpleGM6YFJlZmVyZW5jZUVycm9yYCAgICAgIHwgXCgyKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19SdW50aW1lRXJyb3JgICAgICAgICB8IDpleGM6YFJ1bnRpbWVFcnJvcmAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19TeW50YXhFcnJvcmAgICAgICAgICB8IDpleGM6YFN5bnRheEVycm9yYCAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19TeXN0ZW1FcnJvcmAgICAgICAgICB8IDpleGM6YFN5c3RlbUVycm9yYCAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19TeXN0ZW1FeGl0YCAgICAgICAgICB8IDpleGM6YFN5c3RlbUV4aXRgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19UeXBlRXJyb3JgICAgICAgICAgICB8IDpleGM6YFR5cGVFcnJvcmAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19WYWx1ZUVycm9yYCAgICAgICAgICB8IDpleGM6YFZhbHVlRXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19XaW5kb3dzRXJyb3JgICAgICAgICB8IDpleGM6YFdpbmRvd3NFcnJvcmAgICAgICAgIHwgXCgzKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCA6YzpkYXRhOmBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcmAgICB8IDpleGM6YFplcm9EaXZpc2lvbkVycm9yYCAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBDIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gTmFtZSAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KworfCA6YzpkYXRhOmBQeUV4Y19CYXNlRXhjZXB0aW9uYCAgICAgICAgICAgfCA6ZXhjOmBCYXNlRXhjZXB0aW9uYCAgICAgICAgICAgIHwgXCgxKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19FeGNlcHRpb25gICAgICAgICAgICAgICAgfCA6ZXhjOmBFeGNlcHRpb25gICAgICAgICAgICAgICAgIHwgXCgxKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Bcml0aG1ldGljRXJyb3JgICAgICAgICAgfCA6ZXhjOmBBcml0aG1ldGljRXJyb3JgICAgICAgICAgIHwgXCgxKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Mb29rdXBFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBMb29rdXBFcnJvcmAgICAgICAgICAgICAgIHwgXCgxKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Bc3NlcnRpb25FcnJvcmAgICAgICAgICAgfCA6ZXhjOmBBc3NlcnRpb25FcnJvcmAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19BdHRyaWJ1dGVFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19CbG9ja2luZ0lPRXJyb3JgICAgICAgICAgfCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Ccm9rZW5QaXBlRXJyb3JgICAgICAgICAgfCA6ZXhjOmBCcm9rZW5QaXBlRXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcmAgICAgICAgfCA6ZXhjOmBDaGlsZFByb2Nlc3NFcnJvcmAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uRXJyb3JgICAgICAgICAgfCA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yYCAgfCA6ZXhjOmBDb25uZWN0aW9uQWJvcnRlZEVycm9yYCAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yYCAgfCA6ZXhjOmBDb25uZWN0aW9uUmVmdXNlZEVycm9yYCAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcmAgICAgfCA6ZXhjOmBDb25uZWN0aW9uUmVzZXRFcnJvcmAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19GaWxlRXhpc3RzRXJyb3JgICAgICAgICAgfCA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcmAgICAgICAgfCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19FT0ZFcnJvcmAgICAgICAgICAgICAgICAgfCA6ZXhjOmBFT0ZFcnJvcmAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3JgICAgICAgfCA6ZXhjOmBGbG9hdGluZ1BvaW50RXJyb3JgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19JbXBvcnRFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBJbXBvcnRFcnJvcmAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19JbmRleEVycm9yYCAgICAgICAgICAgICAgfCA6ZXhjOmBJbmRleEVycm9yYCAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yYCAgICAgICAgfCA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Jc0FEaXJlY3RvcnlFcnJvcmAgICAgICAgfCA6ZXhjOmBJc0FEaXJlY3RvcnlFcnJvcmAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19LZXlFcnJvcmAgICAgICAgICAgICAgICAgfCA6ZXhjOmBLZXlFcnJvcmAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19LZXlib2FyZEludGVycnVwdGAgICAgICAgfCA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19NZW1vcnlFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBNZW1vcnlFcnJvcmAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19OYW1lRXJyb3JgICAgICAgICAgICAgICAgfCA6ZXhjOmBOYW1lRXJyb3JgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3JgICAgICAgfCA6ZXhjOmBOb3RBRGlyZWN0b3J5RXJyb3JgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yYCAgICAgfCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19PU0Vycm9yYCAgICAgICAgICAgICAgICAgfCA6ZXhjOmBPU0Vycm9yYCAgICAgICAgICAgICAgICAgIHwgXCgxKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19PdmVyZmxvd0Vycm9yYCAgICAgICAgICAgfCA6ZXhjOmBPdmVyZmxvd0Vycm9yYCAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19QZXJtaXNzaW9uRXJyb3JgICAgICAgICAgfCA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3JgICAgICAgfCA6ZXhjOmBQcm9jZXNzTG9va3VwRXJyb3JgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19SZWZlcmVuY2VFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBSZWZlcmVuY2VFcnJvcmAgICAgICAgICAgIHwgXCgyKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19SdW50aW1lRXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBSdW50aW1lRXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19TeW50YXhFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBTeW50YXhFcnJvcmAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19TeXN0ZW1FcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FcnJvcmAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19UaW1lb3V0RXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBUaW1lb3V0RXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19TeXN0ZW1FeGl0YCAgICAgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FeGl0YCAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19UeXBlRXJyb3JgICAgICAgICAgICAgICAgfCA6ZXhjOmBUeXBlRXJyb3JgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19WYWx1ZUVycm9yYCAgICAgICAgICAgICAgfCA6ZXhjOmBWYWx1ZUVycm9yYCAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcmAgICAgICAgfCA6ZXhjOmBaZXJvRGl2aXNpb25FcnJvcmAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIDpjOmRhdGE6YFB5RXhjX0Jsb2NraW5nSU9FcnJvcmAsIDpjOmRhdGE6YFB5RXhjX0Jyb2tlblBpcGVFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25FcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX0ZpbGVFeGlzdHNFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX0ludGVycnVwdGVkRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfUGVybWlzc2lvbkVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yYAorICAgYW5kIDpjOmRhdGE6YFB5RXhjX1RpbWVvdXRFcnJvcmAgd2VyZSBpbnRyb2R1Y2VkIGZvbGxvd2luZyA6cGVwOmAzMTUxYC4KKworCitUaGVzZSBhcmUgY29tcGF0aWJpbGl0eSBhbGlhc2VzIHRvIDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgOgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBDIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCit8IDpjOmRhdGE6YFB5RXhjX0Vudmlyb25tZW50RXJyb3JgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSU9FcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19XaW5kb3dzRXJyb3JgICAgICAgICB8IFwoMykgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGVzZSBhbGlhc2VzIHVzZWQgdG8gYmUgc2VwYXJhdGUgZXhjZXB0aW9uIHR5cGVzLgorCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogUHlFeGNfQmFzZUV4Y2VwdGlvbgpAQCAtNjQ5LDI4ICs3NDcsNDIgQEAKICAgIHNpbmdsZTogUHlFeGNfTG9va3VwRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfQXNzZXJ0aW9uRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfQXR0cmlidXRlRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQmxvY2tpbmdJT0Vycm9yCisgICBzaW5nbGU6IFB5RXhjX0Jyb2tlblBpcGVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Db25uZWN0aW9uRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25SZXNldEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0VPRkVycm9yCi0gICBzaW5nbGU6IFB5RXhjX0Vudmlyb25tZW50RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfRmlsZUV4aXN0c0Vycm9yCisgICBzaW5nbGU6IFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19JT0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX0ltcG9ydEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0luZGV4RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfSW50ZXJydXB0ZWRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Jc0FEaXJlY3RvcnlFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19LZXlFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19LZXlib2FyZEludGVycnVwdAogICAgc2luZ2xlOiBQeUV4Y19NZW1vcnlFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19OYW1lRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfTm90QURpcmVjdG9yeUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfT1NFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19PdmVyZmxvd0Vycm9yCisgICBzaW5nbGU6IFB5RXhjX1Blcm1pc3Npb25FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUmVmZXJlbmNlRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUnVudGltZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5bnRheEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5c3RlbUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5c3RlbUV4aXQKKyAgIHNpbmdsZTogUHlFeGNfVGltZW91dEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1R5cGVFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19WYWx1ZUVycm9yCi0gICBzaW5nbGU6IFB5RXhjX1dpbmRvd3NFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19FbnZpcm9ubWVudEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0lPRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfV2luZG93c0Vycm9yCiAKIE5vdGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZnVuY3Rpb24ucnN0IGIvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdAppbmRleCAzMTgwNWZkLi5hZDk4MzIyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZnVuY3Rpb24ucnN0CisrKyBiL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QKQEAgLTM4LDYgKzM4LDE2IEBACiAgICBvYmplY3QsIHRoZSBhcmd1bWVudCBkZWZhdWx0cyBhbmQgY2xvc3VyZSBhcmUgc2V0IHRvICpOVUxMKi4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKnF1YWxuYW1lKQorCisgICBBcyA6YzpmdW5jOmBQeUZ1bmN0aW9uX05ld2AsIGJ1dCBhbHNvIGFsbG93cyB0byBzZXQgdGhlIGZ1bmN0aW9uIG9iamVjdCdzCisgICBgYF9fcXVhbG5hbWVfX2BgIGF0dHJpYnV0ZS4gICpxdWFsbmFtZSogc2hvdWxkIGJlIGEgdW5pY29kZSBvYmplY3Qgb3IgTlVMTDsKKyAgIGlmIE5VTEwsIHRoZSBgYF9fcXVhbG5hbWVfX2BgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gdGhlIHNhbWUgdmFsdWUgYXMgaXRzCisgICBgYF9fbmFtZV9fYGAgYXR0cmlidXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqb3ApCiAKICAgIFJldHVybiB0aGUgY29kZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3QgKm9wKi4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbXBvcnQucnN0IGIvRG9jL2MtYXBpL2ltcG9ydC5yc3QKaW5kZXggY2Y0ODM2My4uMjcwMTUyZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2ltcG9ydC5yc3QKKysrIGIvRG9jL2MtYXBpL2ltcG9ydC5yc3QKQEAgLTMwLDEzICszMCwxMyBAQAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soY29uc3QgY2hhciAqbmFtZSkKIAotICAgVGhpcyB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAgZG9lcyBub3QgYmxvY2suIEl0J3MgaW50ZW5kZWQKLSAgIHRvIGJlIHVzZWQgaW4gQyBmdW5jdGlvbnMgdGhhdCBpbXBvcnQgb3RoZXIgbW9kdWxlcyB0byBleGVjdXRlIGEgZnVuY3Rpb24uCi0gICBUaGUgaW1wb3J0IG1heSBibG9jayBpZiBhbm90aGVyIHRocmVhZCBob2xkcyB0aGUgaW1wb3J0IGxvY2suIFRoZSBmdW5jdGlvbgotICAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9ja2AgbmV2ZXIgYmxvY2tzLiBJdCBmaXJzdCB0cmllcyB0byBmZXRjaAotICAgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIGFuZCBmYWxscyBiYWNrIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAKLSAgIHVubGVzcyB0aGUgbG9jayBpcyBoZWxkLCBpbiB3aGljaCBjYXNlIHRoZSBmdW5jdGlvbiB3aWxsIHJhaXNlIGFuCi0gICA6ZXhjOmBJbXBvcnRFcnJvcmAuCisgICBUaGlzIGZ1bmN0aW9uIGlzIGEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGZhaWwgaW1tZWRpYXRlbHkgd2hlbiB0aGUgaW1wb3J0IGxvY2sgd2FzIGhlbGQKKyAgICAgIGJ5IGFub3RoZXIgdGhyZWFkLiAgSW4gUHl0aG9uIDMuMyB0aG91Z2gsIHRoZSBsb2NraW5nIHNjaGVtZSBzd2l0Y2hlZAorICAgICAgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IgbW9zdCBwdXJwb3Nlcywgc28gdGhpcyBmdW5jdGlvbidzIHNwZWNpYWwKKyAgICAgIGJlaGF2aW91ciBpc24ndCBuZWVkZWQgYW55bW9yZS4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QpCkBAIC00NCw4ICs0NCw3IEBACiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IF9faW1wb3J0X18KIAogICAgSW1wb3J0IGEgbW9kdWxlLiAgVGhpcyBpcyBiZXN0IGRlc2NyaWJlZCBieSByZWZlcnJpbmcgdG8gdGhlIGJ1aWx0LWluIFB5dGhvbgotICAgZnVuY3Rpb24gOmZ1bmM6YF9faW1wb3J0X19gLCBhcyB0aGUgc3RhbmRhcmQgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGNhbGxzCi0gICB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LgorICAgZnVuY3Rpb24gOmZ1bmM6YF9faW1wb3J0X19gLgogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlIG9yIHRvcC1sZXZlbAogICAgcGFja2FnZSwgb3IgKk5VTEwqIHdpdGggYW4gZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlLiAgTGlrZSBmb3IKQEAgLTU3LDcgKzU2LDcgQEAKICAgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0LCBpbnQgbGV2ZWwpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0LCBpbnQgbGV2ZWwpCiAKICAgIEltcG9ydCBhIG1vZHVsZS4gIFRoaXMgaXMgYmVzdCBkZXNjcmliZWQgYnkgcmVmZXJyaW5nIHRvIHRoZSBidWlsdC1pbiBQeXRob24KICAgIGZ1bmN0aW9uIDpmdW5jOmBfX2ltcG9ydF9fYCwgYXMgdGhlIHN0YW5kYXJkIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBjYWxscwpAQCAtNjgsNiArNjcsMTYgQEAKICAgIHRoZSByZXR1cm4gdmFsdWUgd2hlbiBhIHN1Ym1vZHVsZSBvZiBhIHBhY2thZ2Ugd2FzIHJlcXVlc3RlZCBpcyBub3JtYWxseSB0aGUKICAgIHRvcC1sZXZlbCBwYWNrYWdlLCB1bmxlc3MgYSBub24tZW1wdHkgKmZyb21saXN0KiB3YXMgZ2l2ZW4uCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0YCwgYnV0IHRoZSBuYW1lIGlzIGFuCisgICBVVEYtOCBlbmNvZGVkIHN0cmluZyBpbnN0ZWFkIG9mIGEgVW5pY29kZSBvYmplY3QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBOZWdhdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCogYXJlIG5vIGxvbmdlciBhY2NlcHRlZC4KIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnQoUHlPYmplY3QgKm5hbWUpCiAKQEAgLTg2LDcgKzk1LDcgQEAKICAgIGFuIGV4Y2VwdGlvbiBzZXQgb24gZmFpbHVyZSAodGhlIG1vZHVsZSBzdGlsbCBleGlzdHMgaW4gdGhpcyBjYXNlKS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIFJldHVybiB0aGUgbW9kdWxlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGEgbW9kdWxlIG5hbWUuICBUaGUgKm5hbWUqIGFyZ3VtZW50CiAgICBtYXkgYmUgb2YgdGhlIGZvcm0gYGBwYWNrYWdlLm1vZHVsZWBgLiBGaXJzdCBjaGVjayB0aGUgbW9kdWxlcyBkaWN0aW9uYXJ5IGlmCkBAIC0xMDAsNiArMTA5LDE0IEBACiAgICAgICBvciBvbmUgb2YgaXRzIHZhcmlhbnRzIHRvIGltcG9ydCBhIG1vZHVsZS4gIFBhY2thZ2Ugc3RydWN0dXJlcyBpbXBsaWVkIGJ5IGEKICAgICAgIGRvdHRlZCBuYW1lIGZvciAqbmFtZSogYXJlIG5vdCBjcmVhdGVkIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCisKKyAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0YCwgYnV0IHRoZSBuYW1lIGlzIGEgVVRGLTgKKyAgIGVuY29kZWQgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbykKIApAQCAtMTM2LDI1ICsxNTMsNDMgQEAKICAgIFNlZSBhbHNvIDpjOmZ1bmM6YFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lc2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSwgY2hhciAqY3BhdGhuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmNvLCBQeU9iamVjdCAqcGF0aG5hbWUsIFB5T2JqZWN0ICpjcGF0aG5hbWUpCiAKICAgIExpa2UgOmM6ZnVuYzpgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeGAsIGJ1dCB0aGUgOmF0dHI6YF9fY2FjaGVkX19gCiAgICBhdHRyaWJ1dGUgb2YgdGhlIG1vZHVsZSBvYmplY3QgaXMgc2V0IHRvICpjcGF0aG5hbWUqIGlmIGl0IGlzCiAgICBub24tYGBOVUxMYGAuICBPZiB0aGUgdGhyZWUgZnVuY3Rpb25zLCB0aGlzIGlzIHRoZSBwcmVmZXJyZWQgb25lIHRvIHVzZS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSwgY2hhciAqY3BhdGhuYW1lKQorCisgICBMaWtlIDpjOmZ1bmM6YFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0YCwgYnV0ICpuYW1lKiwgKnBhdGhuYW1lKiBhbmQKKyAgICpjcGF0aG5hbWUqIGFyZSBVVEYtOCBlbmNvZGVkIHN0cmluZ3MuIEF0dGVtcHRzIGFyZSBhbHNvIG1hZGUgdG8gZmlndXJlIG91dAorICAgd2hhdCB0aGUgdmFsdWUgZm9yICpwYXRobmFtZSogc2hvdWxkIGJlIGZyb20gKmNwYXRobmFtZSogaWYgdGhlIGZvcm1lciBpcworICAgc2V0IHRvIGBgTlVMTGBgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVc2VzIDpmdW5jOmBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgaW4gY2FsY3VsYXRpbmcgdGhlIHNvdXJjZSBwYXRoIGlmCisgICAgICBvbmx5IHRoZSBieXRlY29kZSBwYXRoIGlzIHByb3ZpZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBsb25nIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKCkKIAogICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIFB5dGhvbiBieXRlY29kZSBmaWxlcyAoYS5rLmEuIDpmaWxlOmAucHljYCBhbmQKICAgIDpmaWxlOmAucHlvYCBmaWxlcykuICBUaGUgbWFnaWMgbnVtYmVyIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBmaXJzdCBmb3VyIGJ5dGVzCi0gICBvZiB0aGUgYnl0ZWNvZGUgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLgorICAgb2YgdGhlIGJ5dGVjb2RlIGZpbGUsIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4gUmV0dXJucyAtMSBvbiBlcnJvci4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiB2YWx1ZSBvZiAtMSB1cG9uIGZhaWx1cmUuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGNvbnN0IGNoYXIgKiBQeUltcG9ydF9HZXRNYWdpY1RhZygpCiAKICAgIFJldHVybiB0aGUgbWFnaWMgdGFnIHN0cmluZyBmb3IgOnBlcDpgMzE0N2AgZm9ybWF0IFB5dGhvbiBieXRlY29kZSBmaWxlCi0gICBuYW1lcy4KKyAgIG5hbWVzLiAgS2VlcCBpbiBtaW5kIHRoYXQgdGhlIHZhbHVlIGF0IGBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2BgIGlzCisgICBhdXRob3JpdGF0aXZlIGFuZCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoaXMgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0yMDAsNyArMjM1LDcgQEAKICAgIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIExvYWQgYSBmcm96ZW4gbW9kdWxlIG5hbWVkICpuYW1lKi4gIFJldHVybiBgYDFgYCBmb3Igc3VjY2VzcywgYGAwYGAgaWYgdGhlCiAgICBtb2R1bGUgaXMgbm90IGZvdW5kLCBhbmQgYGAtMWBgIHdpdGggYW4gZXhjZXB0aW9uIHNldCBpZiB0aGUgaW5pdGlhbGl6YXRpb24KQEAgLTIwOCw2ICsyNDMsMTQgQEAKICAgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAuICAoTm90ZSB0aGUgbWlzbm9tZXIgLS0tIHRoaXMgZnVuY3Rpb24gd291bGQKICAgIHJlbG9hZCB0aGUgbW9kdWxlIGlmIGl0IHdhcyBhbHJlYWR5IGltcG9ydGVkLikKIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYQorICAgVVRGLTggZW5jb2RlZCBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6dHlwZTo6IHN0cnVjdCBfZnJvemVuCiAKQEAgLTI0NywxMyArMjkwLDEzIEBACiAKICAgIFN0cnVjdHVyZSBkZXNjcmliaW5nIGEgc2luZ2xlIGVudHJ5IGluIHRoZSBsaXN0IG9mIGJ1aWx0LWluIG1vZHVsZXMuICBFYWNoIG9mCiAgICB0aGVzZSBzdHJ1Y3R1cmVzIGdpdmVzIHRoZSBuYW1lIGFuZCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgYSBtb2R1bGUgYnVpbHQKLSAgIGludG8gdGhlIGludGVycHJldGVyLiAgUHJvZ3JhbXMgd2hpY2ggZW1iZWQgUHl0aG9uIG1heSB1c2UgYW4gYXJyYXkgb2YgdGhlc2UKLSAgIHN0cnVjdHVyZXMgaW4gY29uanVuY3Rpb24gd2l0aCA6YzpmdW5jOmBQeUltcG9ydF9FeHRlbmRJbml0dGFiYCB0byBwcm92aWRlCi0gICBhZGRpdGlvbmFsIGJ1aWx0LWluIG1vZHVsZXMuICBUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4KLSAgIDpmaWxlOmBJbmNsdWRlL2ltcG9ydC5oYCBhczo6CisgICBpbnRvIHRoZSBpbnRlcnByZXRlci4gIFRoZSBuYW1lIGlzIGFuIEFTQ0lJIGVuY29kZWQgc3RyaW5nLiAgUHJvZ3JhbXMgd2hpY2gKKyAgIGVtYmVkIFB5dGhvbiBtYXkgdXNlIGFuIGFycmF5IG9mIHRoZXNlIHN0cnVjdHVyZXMgaW4gY29uanVuY3Rpb24gd2l0aAorICAgOmM6ZnVuYzpgUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYmAgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGJ1aWx0LWluIG1vZHVsZXMuCisgICBUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gOmZpbGU6YEluY2x1ZGUvaW1wb3J0LmhgIGFzOjoKIAogICAgICAgc3RydWN0IF9pbml0dGFiIHsKLSAgICAgICAgICBjaGFyICpuYW1lOworICAgICAgICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAvKiBBU0NJSSBlbmNvZGVkIHN0cmluZyAqLwogICAgICAgICAgIFB5T2JqZWN0KiAoKmluaXRmdW5jKSh2b2lkKTsKICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbmRleC5yc3QgYi9Eb2MvYy1hcGkvaW5kZXgucnN0CmluZGV4IDJjZTdiOTguLjdiNzNlNWIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbmRleC5yc3QKKysrIGIvRG9jL2MtYXBpL2luZGV4LnJzdApAQCAtMjIsMyArMjIsNCBAQAogICAgaW5pdC5yc3QKICAgIG1lbW9yeS5yc3QKICAgIG9iamltcGwucnN0CisgICBzdGFibGUucnN0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW5pdC5yc3QgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKaW5kZXggNzUwN2UzYi4uOTVmZjRlZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2luaXQucnN0CisrKyBiL0RvYy9jLWFwaS9pbml0LnJzdApAQCAtNjQ2LDcgKzY0Niw3IEBACiAgICA6YzpmdW5jOmBQeUdJTFN0YXRlX1JlbGVhc2VgIG9uIHRoZSBzYW1lIHRocmVhZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlUaHJlYWRTdGF0ZSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpCisuLiBjOmZ1bmN0aW9uOjogUHlUaHJlYWRTdGF0ZSogUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKQogCiAgICBHZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIGZvciB0aGlzIHRocmVhZC4gIE1heSByZXR1cm4gYGBOVUxMYGAgaWYgbm8KICAgIEdJTFN0YXRlIEFQSSBoYXMgYmVlbiB1c2VkIG9uIHRoZSBjdXJyZW50IHRocmVhZC4gIE5vdGUgdGhhdCB0aGUgbWFpbiB0aHJlYWQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9saXN0LnJzdCBiL0RvYy9jLWFwaS9saXN0LnJzdAppbmRleCBmZWI5MDE1Li41YjI2M2E3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbGlzdC5yc3QKKysrIGIvRG9jL2MtYXBpL2xpc3QucnN0CkBAIC0xNDIsMyArMTQyLDEwIEBACiAKICAgIFJldHVybiBhIG5ldyB0dXBsZSBvYmplY3QgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgKmxpc3QqOyBlcXVpdmFsZW50IHRvCiAgICBgYHR1cGxlKGxpc3QpYGAuCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpCisKKyAgIENsZWFyIHRoZSBmcmVlIGxpc3QuIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGZyZWVkIGl0ZW1zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9sb25nLnJzdCBiL0RvYy9jLWFwaS9sb25nLnJzdAppbmRleCBlMmY1OGFkLi4zNjVhYmQ3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbG9uZy5yc3QKKysrIGIvRG9jL2MtYXBpL2xvbmcucnN0CkBAIC0xMDAsNiArMTAwLDIwIEBACiAgICBzdHJpbmcgaXMgZmlyc3QgZW5jb2RlZCB0byBhIGJ5dGUgc3RyaW5nIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYAogICAgYW5kIHRoZW4gY29udmVydGVkIHVzaW5nIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tU3RyaW5nYC4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdGAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QoUHlPYmplY3QgKnUsIGludCBiYXNlKQorCisgICBDb252ZXJ0IGEgc2VxdWVuY2Ugb2YgVW5pY29kZSBkaWdpdHMgaW4gdGhlIHN0cmluZyAqdSogdG8gYSBQeXRob24gaW50ZWdlcgorICAgdmFsdWUuICBUaGUgVW5pY29kZSBzdHJpbmcgaXMgZmlyc3QgZW5jb2RlZCB0byBhIGJ5dGUgc3RyaW5nIHVzaW5nCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAgYW5kIHRoZW4gY29udmVydGVkIHVzaW5nCisgICA6YzpmdW5jOmBQeUxvbmdfRnJvbVN0cmluZ2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdAppbmRleCA2YjQ5Y2RmLi41ZTUwOTc3IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKKysrIGIvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CkBAIC0xNywxNiArMTcsMjEgQEAKIAogICAgQ3JlYXRlIGEgbWVtb3J5dmlldyBvYmplY3QgZnJvbSBhbiBvYmplY3QgdGhhdCBwcm92aWRlcyB0aGUgYnVmZmVyIGludGVyZmFjZS4KICAgIElmICpvYmoqIHN1cHBvcnRzIHdyaXRhYmxlIGJ1ZmZlciBleHBvcnRzLCB0aGUgbWVtb3J5dmlldyBvYmplY3Qgd2lsbCBiZQotICAgcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBvdGhlcndpc2UgaXQgd2lsbCBiZSByZWFkLW9ubHkuCisgICByZWFkL3dyaXRlLCBvdGhlcndpc2UgaXQgbWF5IGJlIGVpdGhlciByZWFkLW9ubHkgb3IgcmVhZC93cml0ZSBhdCB0aGUKKyAgIGRpc2NyZXRpb24gb2YgdGhlIGV4cG9ydGVyLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKlB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGNoYXIgKm1lbSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpCisKKyAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHVzaW5nICptZW0qIGFzIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4KKyAgICpmbGFncyogY2FuIGJlIG9uZSBvZiA6YzptYWNybzpgUHlCVUZfUkVBRGAgb3IgOmM6bWFjcm86YFB5QlVGX1dSSVRFYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoUHlfYnVmZmVyICp2aWV3KQogCiAgICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCB3cmFwcGluZyB0aGUgZ2l2ZW4gYnVmZmVyIHN0cnVjdHVyZSAqdmlldyouCi0gICBUaGUgbWVtb3J5dmlldyBvYmplY3QgdGhlbiBvd25zIHRoZSBidWZmZXIgcmVwcmVzZW50ZWQgYnkgKnZpZXcqLCB3aGljaAotICAgbWVhbnMgeW91IHNob3VsZG4ndCB0cnkgdG8gY2FsbCA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCB5b3Vyc2VsZjogaXQKLSAgIHdpbGwgYmUgZG9uZSBvbiBkZWFsbG9jYXRpb24gb2YgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LgotCisgICBGb3Igc2ltcGxlIGJ5dGUgYnVmZmVycywgOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgIGlzIHRoZSBwcmVmZXJyZWQKKyAgIGZ1bmN0aW9uLgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpvYmosIGludCBidWZmZXJ0eXBlLCBjaGFyIG9yZGVyKQogCkBAIC00MywxMCArNDgsMTYgQEAKICAgIGN1cnJlbnRseSBhbGxvd2VkIHRvIGNyZWF0ZSBzdWJjbGFzc2VzIG9mIDpjbGFzczpgbWVtb3J5dmlld2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBQeV9idWZmZXIgKlB5TWVtb3J5Vmlld19HRVRfQlVGRkVSKFB5T2JqZWN0ICptdmlldykKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHN0cnVjdHVyZSB3cmFwcGVkIGJ5IHRoZSBnaXZlbgotICAgbWVtb3J5dmlldyBvYmplY3QuICBUaGUgb2JqZWN0ICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZTsKLSAgIHRoaXMgbWFjcm8gZG9lc24ndCBjaGVjayBpdHMgdHlwZSwgeW91IG11c3QgZG8gaXQgeW91cnNlbGYgb3IgeW91Ci0gICB3aWxsIHJpc2sgY3Jhc2hlcy4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeXZpZXcncyBwcml2YXRlIGNvcHkgb2YgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyLgorICAgKm12aWV3KiAqKm11c3QqKiBiZSBhIG1lbW9yeXZpZXcgaW5zdGFuY2U7IHRoaXMgbWFjcm8gZG9lc24ndCBjaGVjayBpdHMgdHlwZSwKKyAgIHlvdSBtdXN0IGRvIGl0IHlvdXJzZWxmIG9yIHlvdSB3aWxsIHJpc2sgY3Jhc2hlcy4KKworLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CQVNFKFB5T2JqZWN0ICptdmlldykKKworICAgUmV0dXJuIGVpdGhlciBhIHBvaW50ZXIgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QgdGhhdCB0aGUgbWVtb3J5dmlldyBpcyBiYXNlZAorICAgb24gb3IgKk5VTEwqIGlmIHRoZSBtZW1vcnl2aWV3IGhhcyBiZWVuIGNyZWF0ZWQgYnkgb25lIG9mIHRoZSBmdW5jdGlvbnMKKyAgIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5YCBvciA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcmAuCisgICAqbXZpZXcqICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZS4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21vZHVsZS5yc3QgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdAppbmRleCBmZmQ2OGUzLi4zYmU3ZmUzIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdAorKysgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdApAQCAtMjksNyArMjksNyBAQAogICAgOmM6ZGF0YTpgUHlNb2R1bGVfVHlwZWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfTmV3T2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQpAQCAtNDAsNiArNDAsMTQgQEAKICAgIE9ubHkgdGhlIG1vZHVsZSdzIDphdHRyOmBfX2RvY19fYCBhbmQgOmF0dHI6YF9fbmFtZV9fYCBhdHRyaWJ1dGVzIGFyZSBmaWxsZWQgaW47CiAgICB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgYSA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9OZXdPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYW4gVVRGLTggZW5jb2RlZAorICAgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0dldERpY3QoUHlPYmplY3QgKm1vZHVsZSkKIApAQCAtNTIsNyArNjAsNyBAQAogICAgbWFuaXB1bGF0ZSBhIG1vZHVsZSdzIDphdHRyOmBfX2RpY3RfX2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKm1vZHVsZSkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqbW9kdWxlKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQpAQCAtNjEsMTUgKzY5LDEzIEBACiAgICBSZXR1cm4gKm1vZHVsZSoncyA6YXR0cjpgX19uYW1lX19gIHZhbHVlLiAgSWYgdGhlIG1vZHVsZSBkb2VzIG5vdCBwcm92aWRlIG9uZSwKICAgIG9yIGlmIGl0IGlzIG5vdCBhIHN0cmluZywgOmV4YzpgU3lzdGVtRXJyb3JgIGlzIHJhaXNlZCBhbmQgKk5VTEwqIGlzIHJldHVybmVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5TW9kdWxlX0dldEZpbGVuYW1lKFB5T2JqZWN0ICptb2R1bGUpCiAKLSAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIGZpbGVuYW1lCi0gICBlbmNvZGVkIHRvICd1dGYtOCcuCisuLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbW9kdWxlKQogCi0gICAuLiBkZXByZWNhdGVkOjogMy4yCi0gICAgICA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZWAgcmFpc2VzIDpjOnR5cGU6YFVuaWNvZGVFbmNvZGVFcnJvcmAgb24KLSAgICAgIHVuZW5jb2RhYmxlIGZpbGVuYW1lcywgdXNlIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBpbnN0ZWFkLgorICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXROYW1lT2JqZWN0YCBidXQgcmV0dXJuIHRoZSBuYW1lIGVuY29kZWQgdG8KKyAgIGBgJ3V0Zi04J2BgLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoUHlPYmplY3QgKm1vZHVsZSkKQEAgLTgxLDExICs4NywyMSBAQAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggKm1vZHVsZSogd2FzIGxvYWRlZCB1c2luZyAqbW9kdWxlKidzCiAgICA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZS4gIElmIHRoaXMgaXMgbm90IGRlZmluZWQsIG9yIGlmIGl0IGlzIG5vdCBhCiAgICB1bmljb2RlIHN0cmluZywgcmFpc2UgOmV4YzpgU3lzdGVtRXJyb3JgIGFuZCByZXR1cm4gKk5VTEwqOyBvdGhlcndpc2UgcmV0dXJuCi0gICBhIHJlZmVyZW5jZSB0byBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdGAuCisgICBhIHJlZmVyZW5jZSB0byBhIFVuaWNvZGUgb2JqZWN0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKm1vZHVsZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgYnV0IHJldHVybiB0aGUgZmlsZW5hbWUKKyAgIGVuY29kZWQgdG8gJ3V0Zi04Jy4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMgorICAgICAgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVgIHJhaXNlcyA6Yzp0eXBlOmBVbmljb2RlRW5jb2RlRXJyb3JgIG9uCisgICAgICB1bmVuY29kYWJsZSBmaWxlbmFtZXMsIHVzZSA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgaW5zdGVhZC4KKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QgKm1vZHVsZSkKIAogICAgUmV0dXJuIHRoZSAic3RhdGUiIG9mIHRoZSBtb2R1bGUsIHRoYXQgaXMsIGEgcG9pbnRlciB0byB0aGUgYmxvY2sgb2YgbWVtb3J5CkBAIC05Nyw4ICsxMTMsMjggQEAKIAogICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgOmM6dHlwZTpgUHlNb2R1bGVEZWZgIHN0cnVjdCBmcm9tIHdoaWNoIHRoZSBtb2R1bGUgd2FzCiAgICBjcmVhdGVkLCBvciAqTlVMTCogaWYgdGhlIG1vZHVsZSB3YXNuJ3QgY3JlYXRlZCB3aXRoCi0gICA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLgorICAgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYC5pCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlTdGF0ZV9GaW5kTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIFJldHVybnMgdGhlIG1vZHVsZSBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZCBmcm9tICpkZWYqIGZvciB0aGUgY3VycmVudCBpbnRlcnByZXRlci4KKyAgIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHRoYXQgdGhlIG1vZHVsZSBvYmplY3QgaGFzIGJlZW4gYXR0YWNoZWQgdG8gdGhlIGludGVycHJldGVyIHN0YXRlIHdpdGgKKyAgIDpjOmZ1bmM6YFB5U3RhdGVfQWRkTW9kdWxlYCBiZWZvcmVoYW5kLiBJbiBjYXNlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QgaXMgbm90CisgICBmb3VuZCBvciBoYXMgbm90IGJlZW4gYXR0YWNoZWQgdG8gdGhlIGludGVycHJldGVyIHN0YXRlIHlldCwgaXQgcmV0dXJucyBOVUxMLgorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfQWRkTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYsIFB5T2JqZWN0ICptb2R1bGUpCisKKyAgIEF0dGFjaGVzIHRoZSBtb2R1bGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdGhlIGludGVycHJldGVyIHN0YXRlLiBUaGlzIGFsbG93cworICAgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUgYWNjZXNzaWJsZSB2aWEKKyAgIDpjOmZ1bmM6YFB5U3RhdGVfRmluZE1vZHVsZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfUmVtb3ZlTW9kdWxlKFB5TW9kdWxlRGVmICpkZWYsIFB5T2JqZWN0ICptb2R1bGUpCisKKyAgIFJlbW92ZXMgdGhlIG1vZHVsZSBvYmplY3QgY3JlYXRlZCBmcm9tICpkZWYqIGZyb20gdGhlIGludGVycHJldGVyIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogSW5pdGlhbGl6aW5nIEMgbW9kdWxlcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL29iamVjdC5yc3QgYi9Eb2MvYy1hcGkvb2JqZWN0LnJzdAppbmRleCBkMGQ0NWFkLi5hNDcxODNjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvb2JqZWN0LnJzdAorKysgYi9Eb2MvYy1hcGkvb2JqZWN0LnJzdApAQCAtNiw2ICs2LDE5IEBACiA9PT09PT09PT09PT09PT0KIAogCisuLiBjOnZhcjo6IFB5T2JqZWN0KiBQeV9Ob3RJbXBsZW1lbnRlZAorCisgICBUaGUgYGBOb3RJbXBsZW1lbnRlZGBgIHNpbmdsZXRvbiwgdXNlZCB0byBzaWduYWwgdGhhdCBhbiBvcGVyYXRpb24gaXMKKyAgIG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhlIGdpdmVuIHR5cGUgY29tYmluYXRpb24uCisKKworLi4gYzptYWNybzo6IFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRAorCisgICBQcm9wZXJseSBoYW5kbGUgcmV0dXJuaW5nIDpjOmRhdGE6YFB5X05vdEltcGxlbWVudGVkYCBmcm9tIHdpdGhpbiBhIEMKKyAgIGZ1bmN0aW9uICh0aGF0IGlzLCBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBOb3RJbXBsZW1lbnRlZCBhbmQKKyAgIHJldHVybiBpdCkuCisKKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9QcmludChQeU9iamVjdCAqbywgRklMRSAqZnAsIGludCBmbGFncykKIAogICAgUHJpbnQgYW4gb2JqZWN0ICpvKiwgb24gZmlsZSAqZnAqLiAgUmV0dXJucyBgYC0xYGAgb24gZXJyb3IuICBUaGUgZmxhZ3MgYXJndW1lbnQKQEAgLTg4LDYgKzEwMSwyMiBAQAogICAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudCBgYGRlbCBvLmF0dHJfbmFtZWBgLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICpvLCB2b2lkICpjb250ZXh0KQorCisgICBBIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBnZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvci4gSXQKKyAgIGNyZWF0ZXMgdGhlIGRpY3Rpb25hcnkgaWYgbmVjZXNzYXJ5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9HZW5lcmljU2V0RGljdChQeU9iamVjdCAqbywgdm9pZCAqY29udGV4dCkKKworICAgQSBnZW5lcmljIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3IuIFRoaXMKKyAgIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFsbG93IHRoZSBkaWN0aW9uYXJ5IHRvIGJlIGRlbGV0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlPYmplY3RfUmljaENvbXBhcmUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIsIGludCBvcGlkKQogCiAgICBDb21wYXJlIHRoZSB2YWx1ZXMgb2YgKm8xKiBhbmQgKm8yKiB1c2luZyB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZCBieSAqb3BpZCosCkBAIC0xMzEsMTEgKzE2MCwxMSBAQAogICAgYSBzdHJpbmcgc2ltaWxhciB0byB0aGF0IHJldHVybmVkIGJ5IDpjOmZ1bmM6YFB5T2JqZWN0X1JlcHJgIGluIFB5dGhvbiAyLgogICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgYXNjaWlgIGJ1aWx0LWluIGZ1bmN0aW9uLgogCisgICAuLiBpbmRleDo6IHN0cmluZzsgUHlPYmplY3RfU3RyIChDIGZ1bmN0aW9uKQorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlPYmplY3RfU3RyKFB5T2JqZWN0ICpvKQogCi0gICAuLiBpbmRleDo6IGJ1aWx0aW46IHN0cgotCiAgICBDb21wdXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9iamVjdCAqbyouICBSZXR1cm5zIHRoZSBzdHJpbmcKICAgIHJlcHJlc2VudGF0aW9uIG9uIHN1Y2Nlc3MsICpOVUxMKiBvbiBmYWlsdXJlLiAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUKICAgIFB5dGhvbiBleHByZXNzaW9uIGBgc3RyKG8pYGAuICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBzdHJgIGJ1aWx0LWluIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc2V0LnJzdCBiL0RvYy9jLWFwaS9zZXQucnN0CmluZGV4IDY2YjQ3YzQuLjVmMGVmOTAgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zZXQucnN0CisrKyBiL0RvYy9jLWFwaS9zZXQucnN0CkBAIC0xNTcsMyArMTU3LDEwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2V0X0NsZWFyKFB5T2JqZWN0ICpzZXQpCiAKICAgIEVtcHR5IGFuIGV4aXN0aW5nIHNldCBvZiBhbGwgZWxlbWVudHMuCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeVNldF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0YWJsZS5yc3QgYi9Eb2MvYy1hcGkvc3RhYmxlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjg4YzFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2MtYXBpL3N0YWJsZS5yc3QKQEAgLTAsMCArMSwzOSBAQAorLi4gaGlnaGxpZ2h0bGFuZzo6IGMKKworLi4gX3N0YWJsZToKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorU3RhYmxlIEFwcGxpY3Rpb24gQmluYXJ5IEludGVyZmFjZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUcmFkaXRpb25hbGx5LCB0aGUgQyBBUEkgb2YgUHl0aG9uIHdpbGwgY2hhbmdlIHdpdGggZXZlcnkgcmVsZWFzZS4KK01vc3QgY2hhbmdlcyB3aWxsIGJlIHNvdXJjZS1jb21wYXRpYmxlLCB0eXBpY2FsbHkgYnkgb25seSBhZGRpbmcgQVBJLAorcmF0aGVyIHRoYW4gY2hhbmdpbmcgZXhpc3RpbmcgQVBJIG9yIHJlbW92aW5nIEFQSSAoYWx0aG91Z2ggc29tZQoraW50ZXJmYWNlcyBkbyBnZXQgcmVtb3ZlZCBhZnRlciBiZWluZyBkZXByZWNhdGVkIGZpcnN0KS4KKworVW5mb3J0dW5hdGVseSwgdGhlIEFQSSBjb21wYXRpYmlsaXR5IGRvZXMgbm90IGV4dGVuZCB0byBiaW5hcnkKK2NvbXBhdGliaWxpdHkgKHRoZSBBQkkpLiBUaGUgcmVhc29uIGlzIHByaW1hcmlseSB0aGUgZXZvbHV0aW9uIG9mCitzdHJ1Y3QgZGVmaW5pdGlvbnMsIHdoZXJlIGFkZGl0aW9uIG9mIGEgbmV3IGZpZWxkLCBvciBjaGFuZ2luZwordGhlIHR5cGUgb2YgYSBmaWVsZCwgbWlnaHQgbm90IGJyZWFrIHRoZSBBUEksIGJ1dCBjYW4gYnJlYWsgdGhlIEFCSS4KK0FzIGEgY29uc2VxdWVuY2UsIGV4dGVuc2lvbiBtb2R1bGVzIG5lZWQgdG8gYmUgcmVjb21waWxlZCBmb3IKK2V2ZXJ5IFB5dGhvbiByZWxlYXNlIChhbHRob3VnaCBhbiBleGNlcHRpb24gaXMgcG9zc2libGUgb24gVW5peAord2hlbiBub25lIG9mIHRoZSBhZmZlY3RlZCBpbnRlcmZhY2VzIGFyZSB1c2VkKS4gSW4gYWRkaXRpb24sIG9uCitXaW5kb3dzLCBleHRlbnNpb24gbW9kdWxlcyBsaW5rIHdpdGggYSBzcGVjaWZpYyBweXRob25YWS5kbGwgYW5kCituZWVkIHRvIGJlIHJlY29tcGlsZWQgdG8gbGluayB3aXRoIGEgbmV3ZXIgb25lLgorCitTaW5jZSBQeXRob24gMy4yLCBhIHN1YnNldCBvZiB0aGUgQVBJIGhhcyBiZWVuIGRlY2xhcmVkIHRvIGd1YXJhbnRlZQorYSBzdGFibGUgQUJJLiBFeHRlbnNpb24gbW9kdWxlcyB3aXNoaW5nIHRvIHVzZSB0aGlzIEFQSSBuZWVkIHRvIGRlZmluZQorUHlfTElNSVRFRF9BUEkuIEEgbnVtYmVyIG9mIGludGVycHJldGVyIGRldGFpbHMgdGhlbiBiZWNvbWUgaGlkZGVuCitmcm9tIHRoZSBleHRlbnNpb24gbW9kdWxlOyBpbiByZXR1cm4sIGEgbW9kdWxlIGlzIGJ1aWx0IHRoYXQgd29ya3MKK29uIGFueSAzLnggdmVyc2lvbiAoeD49Mikgd2l0aG91dCByZWNvbXBpbGF0aW9uLiBJbiBzb21lIGNhc2VzLCB0aGUKK3N0YWJsZSBBQkkgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgd2l0aCBuZXcgZnVuY3Rpb25zLiBFeHRlbnNpb25zIG1vZHVsZXMKK3dpc2hpbmcgdG8gdXNlIHRoZXNlIG5ldyBBUElzIG5lZWQgdG8gc2V0IFB5X0xJTUlURURfQVBJIHRvIHRoZQorUFlfVkVSU0lPTl9IRVggdmFsdWUgb2YgdGhlIG1pbmltdW0gUHl0aG9uIHZlcnNpb24gdGhleSB3YW50IHRvCitzdXBwb3J0IChlLmcuIDB4MDMwMzAwMDAgZm9yIFB5dGhvbiAzLjMpLiBTdWNoIG1vZHVsZXMgd2lsbCB3b3JrCitvbiBhbGwgc3Vic2VxdWVudCBQeXRob24gcmVsZWFzZXMsIGJ1dCBmYWlsIHRvIGxvYWQgKGJlY2F1c2Ugb2YKK21pc3Npbmcgc3ltYm9scykgb24gdGhlIG9sZGVyIHJlbGVhc2VzLgorCitBcyBvZiBQeXRob24gMy4yLCB0aGUgc2V0IG9mIGZ1bmN0aW9ucyBhdmFpbGFibGUgdG8gdGhlIGxpbWl0ZWQgQVBJCitpcyBkb2N1bWVudGVkIGluIFBFUCAzODQuCisKKy4uIFhYWCBjb3B5IGV4YWN0IGxpc3QgaGVyZT8gSW50byBlYWNoIGZ1bmN0aW9ucyBkZWZpbml0aW9uPwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3R5cGUucnN0IGIvRG9jL2MtYXBpL3R5cGUucnN0CmluZGV4IGIzMzg2ZWEuLjQ0YzczMWEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS90eXBlLnJzdAorKysgYi9Eb2MvYy1hcGkvdHlwZS5yc3QKQEAgLTUxLDEzICs1MSwxMyBAQAogICAgbW9kaWZpY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzIG9yIGJhc2UgY2xhc3NlcyBvZiB0aGUgdHlwZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9IYXNGZWF0dXJlKFB5T2JqZWN0ICpvLCBpbnQgZmVhdHVyZSkKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0hhc0ZlYXR1cmUoUHlUeXBlT2JqZWN0ICpvLCBpbnQgZmVhdHVyZSkKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlIHR5cGUgb2JqZWN0ICpvKiBzZXRzIHRoZSBmZWF0dXJlICpmZWF0dXJlKi4gIFR5cGUgZmVhdHVyZXMKICAgIGFyZSBkZW5vdGVkIGJ5IHNpbmdsZSBiaXQgZmxhZ3MuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVR5cGVfSVNfR0MoUHlPYmplY3QgKm8pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9JU19HQyhQeVR5cGVPYmplY3QgKm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSB0eXBlIG9iamVjdCBpbmNsdWRlcyBzdXBwb3J0IGZvciB0aGUgY3ljbGUgZGV0ZWN0b3I7IHRoaXMKICAgIHRlc3RzIHRoZSB0eXBlIGZsYWcgOmNvbnN0OmBQeV9UUEZMQUdTX0hBVkVfR0NgLgpAQCAtNzAsMTMgKzcwLDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNBbGxvYyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgbml0ZW1zKQogCi0gICBYWFg6IERvY3VtZW50LgotCisgICBHZW5lcmljIGhhbmRsZXIgZm9yIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb2YgYSB0eXBlIG9iamVjdC4gIFVzZQorICAgUHl0aG9uJ3MgZGVmYXVsdCBtZW1vcnkgYWxsb2NhdGlvbiBtZWNoYW5pc20gdG8gYWxsb2NhdGUgYSBuZXcgaW5zdGFuY2UgYW5kCisgICBpbml0aWFsaXplIGFsbCBpdHMgY29udGVudHMgdG8gKk5VTEwqLgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VHlwZV9HZW5lcmljTmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogCi0gICBYWFg6IERvY3VtZW50LgotCisgICBHZW5lcmljIGhhbmRsZXIgZm9yIHRoZSA6YXR0cjpgdHBfbmV3YCBzbG90IG9mIGEgdHlwZSBvYmplY3QuICBDcmVhdGUgYQorICAgbmV3IGluc3RhbmNlIHVzaW5nIHRoZSB0eXBlJ3MgOmF0dHI6YHRwX2FsbG9jYCBzbG90LgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9SZWFkeShQeVR5cGVPYmplY3QgKnR5cGUpCiAKQEAgLTg0LDMgKzg1LDE1IEBACiAgICB0aGVpciBpbml0aWFsaXphdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFkZGluZyBpbmhlcml0ZWQgc2xvdHMKICAgIGZyb20gYSB0eXBlJ3MgYmFzZSBjbGFzcy4gIFJldHVybiBgYDBgYCBvbiBzdWNjZXNzLCBvciByZXR1cm4gYGAtMWBgIGFuZCBzZXRzIGFuCiAgICBleGNlcHRpb24gb24gZXJyb3IuCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQorCisgICBDcmVhdGVzIGFuZCByZXR1cm5zIGEgaGVhcCB0eXBlIG9iamVjdCBmcm9tIHRoZSAqc3BlYyogcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMgKnNwZWMsIFB5T2JqZWN0ICpiYXNlcykKKworICAgQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGhlYXAgdHlwZSBvYmplY3QgZnJvbSB0aGUgKnNwZWMqLiBJbiBhZGRpdGlvbiB0byB0aGF0LAorICAgdGhlIGNyZWF0ZWQgaGVhcCB0eXBlIGNvbnRhaW5zIGFsbCB0eXBlcyBjb250YWluZWQgYnkgdGhlICpiYXNlcyogdHVwbGUgYXMgYmFzZQorICAgdHlwZXMuIFRoaXMgYWxsb3dzIHRoZSBjYWxsZXIgdG8gcmVmZXJlbmNlIG90aGVyIGhlYXAgdHlwZXMgYXMgYmFzZSB0eXBlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKaW5kZXggNjhjYTlhZC4uZWExYTBhZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdApAQCAtMTE5OCw0NiArMTE5OCw4OCBAQAogCiAuLiBzZWN0aW9uYXV0aG9yOjogR3JlZyBKLiBTdGVpbiA8Z3JlZ0BseXJhLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBCZW5qYW1pbiBQZXRlcnNvbgotCi0KLVRoZSA6cmVmOmBidWZmZXIgaW50ZXJmYWNlIDxidWZmZXJvYmplY3RzPmAgZXhwb3J0cyBhIG1vZGVsIHdoZXJlIGFuIG9iamVjdCBjYW4gZXhwb3NlIGl0cyBpbnRlcm5hbAotZGF0YS4KLQotSWYgYW4gb2JqZWN0IGRvZXMgbm90IGV4cG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSwgdGhlbiBpdHMgOmF0dHI6YHRwX2FzX2J1ZmZlcmAKLW1lbWJlciBpbiB0aGUgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YCBzdHJ1Y3R1cmUgc2hvdWxkIGJlICpOVUxMKi4gIE90aGVyd2lzZSwgdGhlCi06YXR0cjpgdHBfYXNfYnVmZmVyYCB3aWxsIHBvaW50IHRvIGEgOmM6dHlwZTpgUHlCdWZmZXJQcm9jc2Agc3RydWN0dXJlLgotCisuLiBzZWN0aW9uYXV0aG9yOjogU3RlZmFuIEtyYWgKIAogLi4gYzp0eXBlOjogUHlCdWZmZXJQcm9jcwogCi0gICBTdHJ1Y3R1cmUgdXNlZCB0byBob2xkIHRoZSBmdW5jdGlvbiBwb2ludGVycyB3aGljaCBkZWZpbmUgYW4gaW1wbGVtZW50YXRpb24gb2YKLSAgIHRoZSBidWZmZXIgcHJvdG9jb2wuCisgICBUaGlzIHN0cnVjdHVyZSBob2xkcyBwb2ludGVycyB0byB0aGUgZnVuY3Rpb25zIHJlcXVpcmVkIGJ5IHRoZQorICAgOnJlZjpgQnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAuIFRoZSBwcm90b2NvbCBkZWZpbmVzIGhvdworICAgYW4gZXhwb3J0ZXIgb2JqZWN0IGNhbiBleHBvc2UgaXRzIGludGVybmFsIGRhdGEgdG8gY29uc3VtZXIgb2JqZWN0cy4KIAotICAgLi4gYzptZW1iZXI6OiBnZXRidWZmZXJwcm9jIGJmX2dldGJ1ZmZlcgorLi4gYzptZW1iZXI6OiBnZXRidWZmZXJwcm9jIFB5QnVmZmVyUHJvY3MuYmZfZ2V0YnVmZmVyCiAKLSAgICAgIFRoaXMgc2hvdWxkIGZpbGwgYSA6Yzp0eXBlOmBQeV9idWZmZXJgIHdpdGggdGhlIG5lY2Vzc2FyeSBkYXRhIGZvcgotICAgICAgZXhwb3J0aW5nIHRoZSB0eXBlLiAgVGhlIHNpZ25hdHVyZSBvZiA6ZGF0YTpgZ2V0YnVmZmVycHJvY2AgaXMgYGBpbnQKLSAgICAgIChQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncylgYC4gICpvYmoqIGlzIHRoZSBvYmplY3QgdG8KLSAgICAgIGV4cG9ydCwgKnZpZXcqIGlzIHRoZSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdCB0byBmaWxsLCBhbmQgKmZsYWdzKiBnaXZlcwotICAgICAgdGhlIGNvbmRpdGlvbnMgdGhlIGNhbGxlciB3YW50cyB0aGUgbWVtb3J5IHVuZGVyLiAgKFNlZQotICAgICAgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYCBmb3IgYWxsIGZsYWdzLikgIDpjOm1lbWJlcjpgYmZfZ2V0YnVmZmVyYCBpcwotICAgICAgcmVzcG9uc2libGUgZm9yIGZpbGxpbmcgKnZpZXcqIHdpdGggdGhlIGFwcHJvcHJpYXRlIGluZm9ybWF0aW9uLgotICAgICAgKDpjOmZ1bmM6YFB5QnVmZmVyX0ZpbGxWaWV3YCBjYW4gYmUgdXNlZCBpbiBzaW1wbGUgY2FzZXMuKSAgU2VlCi0gICAgICA6Yzp0eXBlOmBQeV9idWZmZXJgXHMgZG9jcyBmb3Igd2hhdCBuZWVkcyB0byBiZSBmaWxsZWQgaW4uCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICAgaW50IChQeU9iamVjdCAqZXhwb3J0ZXIsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKTsKKworICAgSGFuZGxlIGEgcmVxdWVzdCB0byAqZXhwb3J0ZXIqIHRvIGZpbGwgaW4gKnZpZXcqIGFzIHNwZWNpZmllZCBieSAqZmxhZ3MqLgorICAgRXhjZXB0IGZvciBwb2ludCAoMyksIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gTVVTVCB0YWtlIHRoZXNlCisgICBzdGVwczoKKworICAgKDEpIENoZWNrIGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBtZXQuIElmIG5vdCwgcmFpc2UgOmM6ZGF0YTpgUHlFeGNfQnVmZmVyRXJyb3JgLAorICAgICAgIHNldCA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvICpOVUxMKiBhbmQgcmV0dXJuIC0xLgorCisgICAoMikgRmlsbCBpbiB0aGUgcmVxdWVzdGVkIGZpZWxkcy4KKworICAgKDMpIEluY3JlbWVudCBhbiBpbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIGV4cG9ydHMuCisKKyAgICg0KSBTZXQgOmM6ZGF0YTpgdmlldy0+b2JqYCB0byAqZXhwb3J0ZXIqIGFuZCBpbmNyZW1lbnQgOmM6ZGF0YTpgdmlldy0+b2JqYC4KKworICAgKDUpIFJldHVybiAwLgorCisgICBJZiAqZXhwb3J0ZXIqIGlzIHBhcnQgb2YgYSBjaGFpbiBvciB0cmVlIG9mIGJ1ZmZlciBwcm92aWRlcnMsIHR3byBtYWluCisgICBzY2hlbWVzIGNhbiBiZSB1c2VkOgorCisgICAqIFJlLWV4cG9ydDogRWFjaCBtZW1iZXIgb2YgdGhlIHRyZWUgYWN0cyBhcyB0aGUgZXhwb3J0aW5nIG9iamVjdCBhbmQKKyAgICAgc2V0cyA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvIGEgbmV3IHJlZmVyZW5jZSB0byBpdHNlbGYuCisKKyAgICogUmVkaXJlY3Q6IFRoZSBidWZmZXIgcmVxdWVzdCBpcyByZWRpcmVjdGVkIHRvIHRoZSByb290IG9iamVjdCBvZiB0aGUKKyAgICAgdHJlZS4gSGVyZSwgOmM6ZGF0YTpgdmlldy0+b2JqYCB3aWxsIGJlIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgcm9vdAorICAgICBvYmplY3QuCisKKyAgIFRoZSBpbmRpdmlkdWFsIGZpZWxkcyBvZiAqdmlldyogYXJlIGRlc2NyaWJlZCBpbiBzZWN0aW9uCisgICA6cmVmOmBCdWZmZXIgc3RydWN0dXJlIDxidWZmZXItc3RydWN0dXJlPmAsIHRoZSBydWxlcyBob3cgYW4gZXhwb3J0ZXIKKyAgIG11c3QgcmVhY3QgdG8gc3BlY2lmaWMgcmVxdWVzdHMgYXJlIGluIHNlY3Rpb24KKyAgIDpyZWY6YEJ1ZmZlciByZXF1ZXN0IHR5cGVzIDxidWZmZXItcmVxdWVzdC10eXBlcz5gLgorCisgICBBbGwgbWVtb3J5IHBvaW50ZWQgdG8gaW4gdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGJlbG9uZ3MgdG8KKyAgIHRoZSBleHBvcnRlciBhbmQgbXVzdCByZW1haW4gdmFsaWQgdW50aWwgdGhlcmUgYXJlIG5vIGNvbnN1bWVycyBsZWZ0LgorICAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmZvcm1hdGAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAsCisgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdWJvZmZzZXRzYAorICAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pbnRlcm5hbGAKKyAgIGFyZSByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbEluZm9gIHByb3ZpZGVzIGFuIGVhc3kgd2F5IG9mIGV4cG9zaW5nIGEgc2ltcGxlCisgICBieXRlcyBidWZmZXIgd2hpbGUgZGVhbGluZyBjb3JyZWN0bHkgd2l0aCBhbGwgcmVxdWVzdCB0eXBlcy4KKworICAgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAorICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KKworLi4gYzptZW1iZXI6OiByZWxlYXNlYnVmZmVycHJvYyBQeUJ1ZmZlclByb2NzLmJmX3JlbGVhc2VidWZmZXIKKworICAgVGhlIHNpZ25hdHVyZSBvZiB0aGlzIGZ1bmN0aW9uIGlzOjoKKworICAgICAgIHZvaWQgKFB5T2JqZWN0ICpleHBvcnRlciwgUHlfYnVmZmVyICp2aWV3KTsKKworICAgSGFuZGxlIGEgcmVxdWVzdCB0byByZWxlYXNlIHRoZSByZXNvdXJjZXMgb2YgdGhlIGJ1ZmZlci4gSWYgbm8gcmVzb3VyY2VzCisgICBuZWVkIHRvIGJlIHJlbGVhc2VkLCA6YzptZW1iZXI6YFB5QnVmZmVyUHJvY3MuYmZfcmVsZWFzZWJ1ZmZlcmAgbWF5IGJlCisgICAqTlVMTCouIE90aGVyd2lzZSwgYSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHdpbGwgdGFrZQorICAgdGhlc2Ugb3B0aW9uYWwgc3RlcHM6CisKKyAgICgxKSBEZWNyZW1lbnQgYW4gaW50ZXJuYWwgY291bnRlciBmb3IgdGhlIG51bWJlciBvZiBleHBvcnRzLgorCisgICAoMikgSWYgdGhlIGNvdW50ZXIgaXMgMCwgZnJlZSBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCAqdmlldyouCisKKyAgIFRoZSBleHBvcnRlciBNVVNUIHVzZSB0aGUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmludGVybmFsYCBmaWVsZCB0byBrZWVwCisgICB0cmFjayBvZiBidWZmZXItc3BlY2lmaWMgcmVzb3VyY2VzLiBUaGlzIGZpZWxkIGlzIGd1YXJhbnRlZWQgdG8gcmVtYWluCisgICBjb25zdGFudCwgd2hpbGUgYSBjb25zdW1lciBNQVkgcGFzcyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGJ1ZmZlciBhcyB0aGUKKyAgICp2aWV3KiBhcmd1bWVudC4KIAogCi0gICAuLiBjOm1lbWJlcjo6IHJlbGVhc2VidWZmZXJwcm9jIGJmX3JlbGVhc2VidWZmZXIKKyAgIFRoaXMgZnVuY3Rpb24gTVVTVCBOT1QgZGVjcmVtZW50IDpjOmRhdGE6YHZpZXctPm9iamAsIHNpbmNlIHRoYXQgaXMKKyAgIGRvbmUgYXV0b21hdGljYWxseSBpbiA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCAodGhpcyBzY2hlbWUgaXMKKyAgIHVzZWZ1bCBmb3IgYnJlYWtpbmcgcmVmZXJlbmNlIGN5Y2xlcykuCiAKLSAgICAgIFRoaXMgc2hvdWxkIHJlbGVhc2UgdGhlIHJlc291cmNlcyBvZiB0aGUgYnVmZmVyLiAgVGhlIHNpZ25hdHVyZSBvZgotICAgICAgOmM6ZGF0YTpgcmVsZWFzZWJ1ZmZlcnByb2NgIGlzIGBgdm9pZCAoUHlPYmplY3QgKm9iaiwgUHlfYnVmZmVyICp2aWV3KWBgLgotICAgICAgSWYgdGhlIDpjOmRhdGE6YGJmX3JlbGVhc2VidWZmZXJgIGZ1bmN0aW9uIGlzIG5vdCBwcm92aWRlZCAoaS5lLiBpdCBpcwotICAgICAgKk5VTEwqKSwgdGhlbiBpdCBkb2VzIG5vdCBldmVyIG5lZWQgdG8gYmUgY2FsbGVkLgogCi0gICAgICBUaGUgZXhwb3J0ZXIgb2YgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgbXVzdCBtYWtlIHN1cmUgdGhhdCBhbnkgbWVtb3J5Ci0gICAgICBwb2ludGVkIHRvIGluIHRoZSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSByZW1haW5zIHZhbGlkIHVudGlsCi0gICAgICByZWxlYXNlYnVmZmVyIGlzIGNhbGxlZC4gIEV4cG9ydGVycyB3aWxsIG5lZWQgdG8gZGVmaW5lIGEKLSAgICAgIDpjOmRhdGE6YGJmX3JlbGVhc2VidWZmZXJgIGZ1bmN0aW9uIGlmIHRoZXkgY2FuIHJlLWFsbG9jYXRlIHRoZWlyIG1lbW9yeSwKLSAgICAgIHN0cmlkZXMsIHNoYXBlLCBzdWJvZmZzZXRzLCBvciBmb3JtYXQgdmFyaWFibGVzIHdoaWNoIHRoZXkgbWlnaHQgc2hhcmUKLSAgICAgIHRocm91Z2ggdGhlIHN0cnVjdCBidWZmZXJpbmZvLgotCi0gICAgICBTZWUgOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAuCisgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAorICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS91bmljb2RlLnJzdCBiL0RvYy9jLWFwaS91bmljb2RlLnJzdAppbmRleCBkMWI1N2Q5Li44OWJkMTQ4IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKKysrIGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CkBAIC02LDM4ICs2LDcyIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBzZWN0aW9uYXV0aG9yOjogTWFyYy1BbmRyw6kgTGVtYnVyZyA8bWFsQGxlbWJ1cmcuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IEdlb3JnIEJyYW5kbCA8Z2VvcmdAcHl0aG9uLm9yZz4KIAogVW5pY29kZSBPYmplY3RzCiBeXl5eXl5eXl5eXl5eXl4KIAorU2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIDpwZXA6YDM5M2AgaW4gUHl0aG9uIDMuMywgVW5pY29kZSBvYmplY3RzIGludGVybmFsbHkKK3VzZSBhIHZhcmlldHkgb2YgcmVwcmVzZW50YXRpb25zLCBpbiBvcmRlciB0byBhbGxvdyBoYW5kbGluZyB0aGUgY29tcGxldGUgcmFuZ2UKK29mIFVuaWNvZGUgY2hhcmFjdGVycyB3aGlsZSBzdGF5aW5nIG1lbW9yeSBlZmZpY2llbnQuICBUaGVyZSBhcmUgc3BlY2lhbCBjYXNlcworZm9yIHN0cmluZ3Mgd2hlcmUgYWxsIGNvZGUgcG9pbnRzIGFyZSBiZWxvdyAxMjgsIDI1Niwgb3IgNjU1MzY7IG90aGVyd2lzZSwgY29kZQorcG9pbnRzIG11c3QgYmUgYmVsb3cgMTExNDExMiAod2hpY2ggaXMgdGhlIGZ1bGwgVW5pY29kZSByYW5nZSkuCisKKzpjOnR5cGU6YFB5X1VOSUNPREUqYCBhbmQgVVRGLTggcmVwcmVzZW50YXRpb25zIGFyZSBjcmVhdGVkIG9uIGRlbWFuZCBhbmQgY2FjaGVkCitpbiB0aGUgVW5pY29kZSBvYmplY3QuICBUaGUgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uIGlzIGRlcHJlY2F0ZWQKK2FuZCBpbmVmZmljaWVudDsgaXQgc2hvdWxkIGJlIGF2b2lkZWQgaW4gcGVyZm9ybWFuY2UtIG9yIG1lbW9yeS1zZW5zaXRpdmUKK3NpdHVhdGlvbnMuCisKK0R1ZSB0byB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIHRoZSBvbGQgQVBJcyBhbmQgdGhlIG5ldyBBUElzLCB1bmljb2RlIG9iamVjdHMKK2NhbiBpbnRlcm5hbGx5IGJlIGluIHR3byBzdGF0ZXMgZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZDoKKworKiAiY2Fub25pY2FsIiB1bmljb2RlIG9iamVjdHMgYXJlIGFsbCBvYmplY3RzIGNyZWF0ZWQgYnkgYSBub24tZGVwcmVjYXRlZAorICB1bmljb2RlIEFQSS4gIFRoZXkgdXNlIHRoZSBtb3N0IGVmZmljaWVudCByZXByZXNlbnRhdGlvbiBhbGxvd2VkIGJ5IHRoZQorICBpbXBsZW1lbnRhdGlvbi4KKworKiAibGVnYWN5IiB1bmljb2RlIG9iamVjdHMgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaCBvbmUgb2YgdGhlIGRlcHJlY2F0ZWQKKyAgQVBJcyAodHlwaWNhbGx5IDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tVW5pY29kZWApIGFuZCBvbmx5IGJlYXIgdGhlCisgIDpjOnR5cGU6YFB5X1VOSUNPREUqYCByZXByZXNlbnRhdGlvbjsgeW91IHdpbGwgaGF2ZSB0byBjYWxsCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEWWAgb24gdGhlbSBiZWZvcmUgY2FsbGluZyBhbnkgb3RoZXIgQVBJLgorCisKIFVuaWNvZGUgVHlwZQogIiIiIiIiIiIiIiIiCiAKIFRoZXNlIGFyZSB0aGUgYmFzaWMgVW5pY29kZSBvYmplY3QgdHlwZXMgdXNlZCBmb3IgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gaW4KIFB5dGhvbjoKIAorLi4gYzp0eXBlOjogUHlfVUNTNAorICAgICAgICAgICAgUHlfVUNTMgorICAgICAgICAgICAgUHlfVUNTMQorCisgICBUaGVzZSB0eXBlcyBhcmUgdHlwZWRlZnMgZm9yIHVuc2lnbmVkIGludGVnZXIgdHlwZXMgd2lkZSBlbm91Z2ggdG8gY29udGFpbgorICAgY2hhcmFjdGVycyBvZiAzMiBiaXRzLCAxNiBiaXRzIGFuZCA4IGJpdHMsIHJlc3BlY3RpdmVseS4gIFdoZW4gZGVhbGluZyB3aXRoCisgICBzaW5nbGUgVW5pY29kZSBjaGFyYWN0ZXJzLCB1c2UgOmM6dHlwZTpgUHlfVUNTNGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGM6dHlwZTo6IFB5X1VOSUNPREUKIAotICAgVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIHN0b3JhZ2UgdHlwZSB3aGljaCBpcyB1c2VkIGJ5IFB5dGhvbiBpbnRlcm5hbGx5IGFzCi0gICBiYXNpcyBmb3IgaG9sZGluZyBVbmljb2RlIG9yZGluYWxzLiAgUHl0aG9uJ3MgZGVmYXVsdCBidWlsZHMgdXNlIGEgMTYtYml0IHR5cGUKLSAgIGZvciA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhbmQgc3RvcmUgVW5pY29kZSB2YWx1ZXMgaW50ZXJuYWxseSBhcyBVQ1MyLiBJdCBpcyBhbHNvCi0gICBwb3NzaWJsZSB0byBidWlsZCBhIFVDUzQgdmVyc2lvbiBvZiBQeXRob24gKG1vc3QgcmVjZW50IExpbnV4IGRpc3RyaWJ1dGlvbnMgY29tZQotICAgd2l0aCBVQ1M0IGJ1aWxkcyBvZiBQeXRob24pLiBUaGVzZSBidWlsZHMgdGhlbiB1c2UgYSAzMi1iaXQgdHlwZSBmb3IKLSAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZCBzdG9yZSBVbmljb2RlIGRhdGEgaW50ZXJuYWxseSBhcyBVQ1M0LiBPbiBwbGF0Zm9ybXMKLSAgIHdoZXJlIDpjOnR5cGU6YHdjaGFyX3RgIGlzIGF2YWlsYWJsZSBhbmQgY29tcGF0aWJsZSB3aXRoIHRoZSBjaG9zZW4gUHl0aG9uCi0gICBVbmljb2RlIGJ1aWxkIHZhcmlhbnQsIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGEgdHlwZWRlZiBhbGlhcyBmb3IKLSAgIDpjOnR5cGU6YHdjaGFyX3RgIHRvIGVuaGFuY2UgbmF0aXZlIHBsYXRmb3JtIGNvbXBhdGliaWxpdHkuIE9uIGFsbCBvdGhlcgotICAgcGxhdGZvcm1zLCA6Yzp0eXBlOmBQeV9VTklDT0RFYCBpcyBhIHR5cGVkZWYgYWxpYXMgZm9yIGVpdGhlciA6Yzp0eXBlOmB1bnNpZ25lZAotICAgc2hvcnRgIChVQ1MyKSBvciA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCAoVUNTNCkuCisgICBUaGlzIGlzIGEgdHlwZWRlZiBvZiA6Yzp0eXBlOmB3Y2hhcl90YCwgd2hpY2ggaXMgYSAxNi1iaXQgdHlwZSBvciAzMi1iaXQgdHlwZQorICAgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KIAotTm90ZSB0aGF0IFVDUzIgYW5kIFVDUzQgUHl0aG9uIGJ1aWxkcyBhcmUgbm90IGJpbmFyeSBjb21wYXRpYmxlLiBQbGVhc2Uga2VlcAotdGhpcyBpbiBtaW5kIHdoZW4gd3JpdGluZyBleHRlbnNpb25zIG9yIGludGVyZmFjZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSW4gcHJldmlvdXMgdmVyc2lvbnMsIHRoaXMgd2FzIGEgMTYtYml0IHR5cGUgb3IgYSAzMi1iaXQgdHlwZSBkZXBlbmRpbmcgb24KKyAgICAgIHdoZXRoZXIgeW91IHNlbGVjdGVkIGEgIm5hcnJvdyIgb3IgIndpZGUiIFVuaWNvZGUgdmVyc2lvbiBvZiBQeXRob24gYXQKKyAgICAgIGJ1aWxkIHRpbWUuCiAKIAotLi4gYzp0eXBlOjogUHlVbmljb2RlT2JqZWN0CisuLiBjOnR5cGU6OiBQeUFTQ0lJT2JqZWN0CisgICAgICAgICAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0CisgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QKIAotICAgVGhpcyBzdWJ0eXBlIG9mIDpjOnR5cGU6YFB5T2JqZWN0YCByZXByZXNlbnRzIGEgUHl0aG9uIFVuaWNvZGUgb2JqZWN0LgorICAgVGhlc2Ugc3VidHlwZXMgb2YgOmM6dHlwZTpgUHlPYmplY3RgIHJlcHJlc2VudCBhIFB5dGhvbiBVbmljb2RlIG9iamVjdC4gIEluCisgICBhbG1vc3QgYWxsIGNhc2VzLCB0aGV5IHNob3VsZG4ndCBiZSB1c2VkIGRpcmVjdGx5LCBzaW5jZSBhbGwgQVBJIGZ1bmN0aW9ucworICAgdGhhdCBkZWFsIHdpdGggVW5pY29kZSBvYmplY3RzIHRha2UgYW5kIHJldHVybiA6Yzp0eXBlOmBQeU9iamVjdGAgcG9pbnRlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGM6dmFyOjogUHlUeXBlT2JqZWN0IFB5VW5pY29kZV9UeXBlCkBAIC00NSwxMCArNzksMTAgQEAKICAgIFRoaXMgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YCByZXByZXNlbnRzIHRoZSBQeXRob24gVW5pY29kZSB0eXBlLiAgSXQKICAgIGlzIGV4cG9zZWQgdG8gUHl0aG9uIGNvZGUgYXMgYGBzdHJgYC4KIAorCiBUaGUgZm9sbG93aW5nIEFQSXMgYXJlIHJlYWxseSBDIG1hY3JvcyBhbmQgY2FuIGJlIHVzZWQgdG8gZG8gZmFzdCBjaGVja3MgYW5kIHRvCiBhY2Nlc3MgaW50ZXJuYWwgcmVhZC1vbmx5IGRhdGEgb2YgVW5pY29kZSBvYmplY3RzOgogCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0NoZWNrKFB5T2JqZWN0ICpvKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0ICpvKiBpcyBhIFVuaWNvZGUgb2JqZWN0IG9yIGFuIGluc3RhbmNlIG9mIGEgVW5pY29kZQpAQCAtNjEsMjggKzk1LDEwNiBAQAogICAgc3VidHlwZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR0VUX1NJWkUoUHlPYmplY3QgKm8pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9SRUFEWShQeU9iamVjdCAqbykKIAotICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBvYmplY3QuICAqbyogaGFzIHRvIGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90Ci0gICBjaGVja2VkKS4KKyAgIEVuc3VyZSB0aGUgc3RyaW5nIG9iamVjdCAqbyogaXMgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBpcworICAgcmVxdWlyZWQgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGUgYWNjZXNzIG1hY3JvcyBkZXNjcmliZWQgYmVsb3cuCisKKyAgIC4uIFhYWCBleHBhbmQgb24gd2hlbiBpdCBpcyBub3QgcmVxdWlyZWQKKworICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIC0xIHdpdGggYW4gZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlLCB3aGljaCBpbgorICAgcGFydGljdWxhciBoYXBwZW5zIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfTEVOR1RIKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdCdzIGludGVybmFsIGJ1ZmZlciBpbiBieXRlcy4gICpvKiBoYXMgdG8gYmUgYQotICAgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIFVuaWNvZGUgc3RyaW5nLCBpbiBjb2RlIHBvaW50cy4gICpvKiBoYXMgdG8gYmUgYQorICAgVW5pY29kZSBvYmplY3QgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQVNfVU5JQ09ERShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1MxKiBQeVVuaWNvZGVfMUJZVEVfREFUQShQeU9iamVjdCAqbykKKyAgICAgICAgICAgICAgICBQeV9VQ1MyKiBQeVVuaWNvZGVfMkJZVEVfREFUQShQeU9iamVjdCAqbykKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeVVuaWNvZGVfNEJZVEVfREFUQShQeU9iamVjdCAqbykKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBvYmplY3QuICAqbyoKLSAgIGhhcyB0byBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdGAgKG5vdCBjaGVja2VkKS4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBjYXN0IHRvIFVDUzEsIFVDUzIgb3IgVUNTNAorICAgaW50ZWdlciB0eXBlcyBmb3IgZGlyZWN0IGNoYXJhY3RlciBhY2Nlc3MuICBObyBjaGVja3MgYXJlIHBlcmZvcm1lZCBpZiB0aGUKKyAgIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBoYXMgdGhlIGNvcnJlY3QgY2hhcmFjdGVyIHNpemU7IHVzZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgIHRvIHNlbGVjdCB0aGUgcmlnaHQgbWFjcm8uICBNYWtlIHN1cmUKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEWWAgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgdGhpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gYzpmdW5jdGlvbjo6IGNvbnN0IGNoYXIqIFB5VW5pY29kZV9BU19EQVRBKFB5T2JqZWN0ICpvKQorLi4gYzptYWNybzo6IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECiAKLSAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGJ1ZmZlciBvZiB0aGUgb2JqZWN0LiAqbyogaGFzIHRvIGJlIGEKLSAgIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdGAgKG5vdCBjaGVja2VkKS4KKyAgIFJldHVybiB2YWx1ZXMgb2YgdGhlIDpjOmZ1bmM6YFB5VW5pY29kZV9LSU5EYCBtYWNyby4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfS0lORChQeU9iamVjdCAqbykKKworICAgUmV0dXJuIG9uZSBvZiB0aGUgUHlVbmljb2RlIGtpbmQgY29uc3RhbnRzIChzZWUgYWJvdmUpIHRoYXQgaW5kaWNhdGUgaG93IG1hbnkKKyAgIGJ5dGVzIHBlciBjaGFyYWN0ZXIgdGhpcyBVbmljb2RlIG9iamVjdCB1c2VzIHRvIHN0b3JlIGl0cyBkYXRhLiAgKm8qIGhhcyB0bworICAgYmUgYSBVbmljb2RlIG9iamVjdCBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gKG5vdCBjaGVja2VkKS4KKworICAgLi4gWFhYIGRvY3VtZW50ICIwIiByZXR1cm4gdmFsdWU/CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeVVuaWNvZGVfREFUQShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIGEgdm9pZCBwb2ludGVyIHRvIHRoZSByYXcgdW5pY29kZSBidWZmZXIuICAqbyogaGFzIHRvIGJlIGEgVW5pY29kZQorICAgb2JqZWN0IGluIHRoZSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiAobm90IGNoZWNrZWQpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeVVuaWNvZGVfV1JJVEUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgaW5kZXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IHZhbHVlKQorCisgICBXcml0ZSBpbnRvIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uICpkYXRhKiAoYXMgb2J0YWluZWQgd2l0aAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RBVEFgKS4gIFRoaXMgbWFjcm8gZG9lcyBub3QgZG8gYW55IHNhbml0eSBjaGVja3MgYW5kIGlzCisgICBpbnRlbmRlZCBmb3IgdXNhZ2UgaW4gbG9vcHMuICBUaGUgY2FsbGVyIHNob3VsZCBjYWNoZSB0aGUgKmtpbmQqIHZhbHVlIGFuZAorICAgKmRhdGEqIHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBvdGhlciBtYWNybyBjYWxscy4gICppbmRleCogaXMgdGhlIGluZGV4IGluCisgICB0aGUgc3RyaW5nIChzdGFydHMgYXQgMCkgYW5kICp2YWx1ZSogaXMgdGhlIG5ldyBjb2RlIHBvaW50IHZhbHVlIHdoaWNoIHNob3VsZAorICAgYmUgd3JpdHRlbiB0byB0aGF0IGxvY2F0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUkVBRChpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNvZGUgcG9pbnQgZnJvbSBhIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiAqZGF0YSogKGFzIG9idGFpbmVkIHdpdGgKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9EQVRBYCkuICBObyBjaGVja3Mgb3IgcmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzQgUHlVbmljb2RlX1JFQURfQ0hBUihQeU9iamVjdCAqbywgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNoYXJhY3RlciBmcm9tIGEgVW5pY29kZSBvYmplY3QgKm8qLCB3aGljaCBtdXN0IGJlIGluIHRoZSAiY2Fub25pY2FsIgorICAgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURgIGlmIHlvdQorICAgZG8gbXVsdGlwbGUgY29uc2VjdXRpdmUgcmVhZHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoUHlPYmplY3QgKm8pCisKKyAgIFJldHVybiB0aGUgbWF4aW11bSBjb2RlIHBvaW50IHRoYXQgaXMgc3VpdGFibGUgZm9yIGNyZWF0aW5nIGFub3RoZXIgc3RyaW5nCisgICBiYXNlZCBvbiAqbyosIHdoaWNoIG11c3QgYmUgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBpcworICAgYWx3YXlzIGFuIGFwcHJveGltYXRpb24gYnV0IG1vcmUgZWZmaWNpZW50IHRoYW4gaXRlcmF0aW5nIG92ZXIgdGhlIHN0cmluZy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCgpCkBAIC05MCw2ICsyMDIsNDYgQEAKICAgIENsZWFyIHRoZSBmcmVlIGxpc3QuIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGZyZWVkIGl0ZW1zLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfU0laRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uLCBpbgorICAgY29kZSB1bml0cyAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuICAqbyogaGFzIHRvIGJlIGEKKyAgIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSBVbmljb2RlIEFQSSwgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9HRVRfTEVOR1RIYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uIGluCisgICBieXRlcy4gICpvKiBoYXMgdG8gYmUgYSBVbmljb2RlIG9iamVjdCAobm90IGNoZWNrZWQpLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgVW5pY29kZSBBUEksIHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9BU19VTklDT0RFKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIFB5VW5pY29kZV9BU19EQVRBKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4gIFRoZQorICAgYGBBU19EQVRBYGAgZm9ybSBjYXN0cyB0aGUgcG9pbnRlciB0byA6Yzp0eXBlOmBjb25zdCBjaGFyICpgLiAgKm8qIGhhcyB0byBiZQorICAgYSBVbmljb2RlIG9iamVjdCAobm90IGNoZWNrZWQpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBtYWNybyBpcyBub3cgaW5lZmZpY2llbnQgLS0gYmVjYXVzZSBpbiBtYW55IGNhc2VzIHRoZQorICAgICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gZG9lcyBub3QgZXhpc3QgYW5kIG5lZWRzIHRvIGJlIGNyZWF0ZWQKKyAgICAgIC0tIGFuZCBjYW4gZmFpbCAocmV0dXJuICpOVUxMKiB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQpLiAgVHJ5IHRvIHBvcnQgdGhlCisgICAgICBjb2RlIHRvIHVzZSB0aGUgbmV3IDpjOmZ1bmM6YFB5VW5pY29kZV9uQllURV9EQVRBYCBtYWNyb3Mgb3IgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfV1JJVEVgIG9yIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEYC4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIFVuaWNvZGUgQVBJLCBwbGVhc2UgbWlncmF0ZSB0byB1c2luZyB0aGUKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9uQllURV9EQVRBYCBmYW1pbHkgb2YgbWFjcm9zLgorCisKIFVuaWNvZGUgQ2hhcmFjdGVyIFByb3BlcnRpZXMKICIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIApAQCAtMTY2LDE2ICszMTgsMjUgQEAKIAogICAgUmV0dXJuIHRoZSBjaGFyYWN0ZXIgKmNoKiBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHNpbXBsZSBjYXNlIG1hcHBpbmdzLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFIFB5X1VOSUNPREVfVE9VUFBFUihQeV9VTklDT0RFIGNoKQogCiAgICBSZXR1cm4gdGhlIGNoYXJhY3RlciAqY2gqIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgc2ltcGxlIGNhc2UgbWFwcGluZ3MuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUgUHlfVU5JQ09ERV9UT1RJVExFKFB5X1VOSUNPREUgY2gpCiAKICAgIFJldHVybiB0aGUgY2hhcmFjdGVyICpjaCogY29udmVydGVkIHRvIHRpdGxlIGNhc2UuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBzaW1wbGUgY2FzZSBtYXBwaW5ncy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5X1VOSUNPREUgY2gpCiAKQEAgLTE5NSwzMSArMzU2LDY2IEBACiAgICBwb3NzaWJsZS4gIFRoaXMgbWFjcm8gZG9lcyBub3QgcmFpc2UgZXhjZXB0aW9ucy4KIAogCi1QbGFpbiBQeV9VTklDT0RFCi0iIiIiIiIiIiIiIiIiIiIiCitUaGVzZSBBUElzIGNhbiBiZSB1c2VkIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzOgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpCisKKyAgIENoZWNrIGlmICpjaCogaXMgYSBzdXJyb2dhdGUgKGBgMHhEODAwIDw9IGNoIDw9IDB4REZGRmBgKS4KKworLi4gYzptYWNybzo6IFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpCisKKyAgIENoZWNrIGlmICpjaCogaXMgYW4gaGlnaCBzdXJyb2dhdGUgKGBgMHhEODAwIDw9IGNoIDw9IDB4REJGRmBgKS4KKworLi4gYzptYWNybzo6IFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhIGxvdyBzdXJyb2dhdGUgKGBgMHhEQzAwIDw9IGNoIDw9IDB4REZGRmBgKS4KKworLi4gYzptYWNybzo6IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGhpZ2gsIGxvdykKKworICAgSm9pbiB0d28gc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHJldHVybiBhIHNpbmdsZSBQeV9VQ1M0IHZhbHVlLgorICAgKmhpZ2gqIGFuZCAqbG93KiBhcmUgcmVzcGVjdGl2ZWx5IHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzdXJyb2dhdGVzIGluIGEKKyAgIHN1cnJvZ2F0ZSBwYWlyLgorCisKK0NyZWF0aW5nIGFuZCBhY2Nlc3NpbmcgVW5pY29kZSBzdHJpbmdzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUbyBjcmVhdGUgVW5pY29kZSBvYmplY3RzIGFuZCBhY2Nlc3MgdGhlaXIgYmFzaWMgc2VxdWVuY2UgcHJvcGVydGllcywgdXNlIHRoZXNlCiBBUElzOgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IG1heGNoYXIpCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKKyAgIENyZWF0ZSBhIG5ldyBVbmljb2RlIG9iamVjdC4gICptYXhjaGFyKiBzaG91bGQgYmUgdGhlIHRydWUgbWF4aW11bSBjb2RlIHBvaW50CisgICB0byBiZSBwbGFjZWQgaW4gdGhlIHN0cmluZy4gIEFzIGFuIGFwcHJveGltYXRpb24sIGl0IGNhbiBiZSByb3VuZGVkIHVwIHRvIHRoZQorICAgbmVhcmVzdCB2YWx1ZSBpbiB0aGUgc2VxdWVuY2UgMTI3LCAyNTUsIDY1NTM1LCAxMTE0MTExLgogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciAqdSogb2YgdGhlIGdpdmVuIHNpemUuICp1KgotICAgbWF5IGJlICpOVUxMKiB3aGljaCBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncwotICAgcmVzcG9uc2liaWxpdHkgdG8gZmlsbCBpbiB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKLSAgIG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4KLSAgIFRoZXJlZm9yZSwgbW9kaWZpY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4gKnUqCi0gICBpcyAqTlVMTCouCisgICBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gYWxsb2NhdGUgYSBuZXcgVW5pY29kZSBvYmplY3QuICBPYmplY3RzCisgICBjcmVhdGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZXNpemFibGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShpbnQga2luZCwgY29uc3Qgdm9pZCAqYnVmZmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorCisgICBDcmVhdGUgYSBuZXcgVW5pY29kZSBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gKmtpbmQqIChwb3NzaWJsZSB2YWx1ZXMgYXJlCisgICA6YzptYWNybzpgUHlVbmljb2RlXzFCWVRFX0tJTkRgIGV0Yy4sIGFzIHJldHVybmVkIGJ5CisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGApLiAgVGhlICpidWZmZXIqIG11c3QgcG9pbnQgdG8gYW4gYXJyYXkgb2YgKnNpemUqCisgICB1bml0cyBvZiAxLCAyIG9yIDQgYnl0ZXMgcGVyIGNoYXJhY3RlciwgYXMgZ2l2ZW4gYnkgdGhlIGtpbmQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKIAotICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgY2hhciBidWZmZXIgKnUqLiAgVGhlIGJ5dGVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQKLSAgIGFzIGJlaW5nIFVURi04IGVuY29kZWQuICAqdSogbWF5IGFsc28gYmUgKk5VTEwqIHdoaWNoCi0gICBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBmaWxsIGluCi0gICB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcgb2JqZWN0LiBJZiB0aGUgYnVmZmVyIGlzIG5vdAotICAgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4gVGhlcmVmb3JlLCBtb2RpZmljYXRpb24gb2YKLSAgIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4gKnUqIGlzICpOVUxMKi4KKyAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGZyb20gdGhlIGNoYXIgYnVmZmVyICp1Ki4gIFRoZSBieXRlcyB3aWxsIGJlCisgICBpbnRlcnByZXRlZCBhcyBiZWluZyBVVEYtOCBlbmNvZGVkLiAgVGhlIGJ1ZmZlciBpcyBjb3BpZWQgaW50byB0aGUgbmV3CisgICBvYmplY3QuIElmIHRoZSBidWZmZXIgaXMgbm90ICpOVUxMKiwgdGhlIHJldHVybiB2YWx1ZSBtaWdodCBiZSBhIHNoYXJlZAorICAgb2JqZWN0LCBpLmUuIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGF0YSBpcyBub3QgYWxsb3dlZC4KKworICAgSWYgKnUqIGlzICpOVUxMKiwgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYAorICAgd2l0aCB0aGUgYnVmZmVyIHNldCB0byAqTlVMTCouICBUaGlzIHVzYWdlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9OZXdgLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlVbmljb2RlX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqdSkKQEAgLTI2MCwxOCArNDU2LDI3IEBACiAgICB8IDphdHRyOmAlbGRgICAgICAgIHwgbG9uZyAgICAgICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGQiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDphdHRyOmAlbGlgICAgICAgIHwgbG9uZyAgICAgICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGkiKWBgLiAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlbHVgICAgICAgIHwgdW5zaWduZWQgbG9uZyAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbHUiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlbGxkYCAgICAgIHwgbG9uZyBsb25nICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGxkIilgYC4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDphdHRyOmAlbGxpYCAgICAgIHwgbG9uZyBsb25nICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGxpIilgYC4gICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlbGx1YCAgICAgIHwgdW5zaWduZWQgbG9uZyBsb25nICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlbGx1IilgYC4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlemRgICAgICAgIHwgUHlfc3NpemVfdCAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlemQiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDphdHRyOmAlemlgICAgICAgIHwgUHlfc3NpemVfdCAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlemkiKWBgLiAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDphdHRyOmAlenVgICAgICAgIHwgc2l6ZV90ICAgICAgICAgICAgICB8IEV4YWN0bHkgZXF1aXZhbGVudCB0byAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGBgcHJpbnRmKCIlenUiKWBgLiAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0zMjIsNDcgKzUyNywxOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIGBgIiVsbGQiYGAgYW5kIGBgIiVsbHUiYGAgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBgYCIlbGkiYGAsIGBgIiVsbGkiYGAgYW5kIGBgIiV6aSJgYCBhZGRlZC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCiAKICAgIElkZW50aWNhbCB0byA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAgZXhjZXB0IHRoYXQgaXQgdGFrZXMgZXhhY3RseSB0d28KICAgIGFyZ3VtZW50cy4KIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplKQogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSByZXBsYWNpbmcgYWxsIGRlY2ltYWwgZGlnaXRzIGluCi0gICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiBieSBBU0NJSSBkaWdpdHMgMC0tOQotICAgYWNjb3JkaW5nIHRvIHRoZWlyIGRlY2ltYWwgdmFsdWUuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbgotICAgb2NjdXJzLgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAotICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyLCAqTlVMTCogaWYgKnVuaWNvZGUqIGlzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LgotICAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZAotICAgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZCB3aGVuIHVzZWQgaW4KLSAgIG1vc3QgQyBmdW5jdGlvbnMuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBDcmVhdGUgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gKk5VTEwqCi0gICBhbmQgcmFpc2UgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsCi0gICBvdGhlcndpc2UgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlCi0gICB0aGUgYnVmZmVyKS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkgY29udGFpbgotICAgZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZCB3aGVuCi0gICB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRTaXplKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICpvYmosIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDb2VyY2UgYW4gZW5jb2RlZCBvYmplY3QgKm9iaiogdG8gYW4gVW5pY29kZSBvYmplY3QgYW5kIHJldHVybiBhIHJlZmVyZW5jZSB3aXRoCiAgICBpbmNyZW1lbnRlZCByZWZjb3VudC4KQEAgLTM3OSwxNSArNTU1LDIyOCBAQAogICAgZGVjcmVmJ2luZyB0aGUgcmV0dXJuZWQgb2JqZWN0cy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0TGVuZ3RoKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QsIGluIGNvZGUgcG9pbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyhQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LCBQeV9zc2l6ZV90IGhvd19tYW55KQorCisgICBDb3B5IGNoYXJhY3RlcnMgZnJvbSBvbmUgVW5pY29kZSBvYmplY3QgaW50byBhbm90aGVyLiAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtcworICAgY2hhcmFjdGVyIGNvbnZlcnNpb24gd2hlbiBuZWNlc3NhcnkgYW5kIGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgbWVtY3B5YCBpZgorICAgcG9zc2libGUuICBSZXR1cm5zIGBgLTFgYCBhbmQgc2V0cyBhbiBleGNlcHRpb24gb24gZXJyb3IsIG90aGVyd2lzZSByZXR1cm5zCisgICBgYDBgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbGwoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IGZpbGxfY2hhcikKKworICAgRmlsbCBhIHN0cmluZyB3aXRoIGEgY2hhcmFjdGVyOiB3cml0ZSAqZmlsbF9jaGFyKiBpbnRvCisgICBgYHVuaWNvZGVbc3RhcnQ6c3RhcnQrbGVuZ3RoXWBgLgorCisgICBGYWlsIGlmICpmaWxsX2NoYXIqIGlzIGJpZ2dlciB0aGFuIHRoZSBzdHJpbmcgbWF4aW11bSBjaGFyYWN0ZXIsIG9yIGlmIHRoZQorICAgc3RyaW5nIGhhcyBtb3JlIHRoYW4gMSByZWZlcmVuY2UuCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gY2hhcmFjdGVyLCBvciByZXR1cm4gYGAtMWBgIGFuZCByYWlzZSBhbgorICAgZXhjZXB0aW9uIG9uIGVycm9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9Xcml0ZUNoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoYXJhY3RlcikKKworICAgV3JpdGUgYSBjaGFyYWN0ZXIgdG8gYSBzdHJpbmcuICBUaGUgc3RyaW5nIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuICBTaW5jZSBVbmljb2RlIHN0cmluZ3MgYXJlIHN1cHBvc2VkIHRvIGJlIGltbXV0YWJsZSwKKyAgIHRoZSBzdHJpbmcgbXVzdCBub3QgYmUgc2hhcmVkLCBvciBoYXZlIGJlZW4gaGFzaGVkIHlldC4KKworICAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCAqdW5pY29kZSogaXMgYSBVbmljb2RlIG9iamVjdCwgdGhhdCB0aGUgaW5kZXggaXMKKyAgIG5vdCBvdXQgb2YgYm91bmRzLCBhbmQgdGhhdCB0aGUgb2JqZWN0IGNhbiBiZSBtb2RpZmllZCBzYWZlbHkgKGkuZS4gdGhhdCBpdAorICAgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBvbmUpLCBpbiBjb250cmFzdCB0byB0aGUgbWFjcm8gdmVyc2lvbgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1dSSVRFX0NIQVJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUmVhZENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgpCisKKyAgIFJlYWQgYSBjaGFyYWN0ZXIgZnJvbSBhIHN0cmluZy4gIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoYXQgKnVuaWNvZGUqIGlzIGEKKyAgIFVuaWNvZGUgb2JqZWN0IGFuZCB0aGUgaW5kZXggaXMgbm90IG91dCBvZiBib3VuZHMsIGluIGNvbnRyYXN0IHRvIHRoZSBtYWNybworICAgdmVyc2lvbiA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRF9DSEFSYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfU3Vic3RyaW5nKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKKworICAgUmV0dXJuIGEgc3Vic3RyaW5nIG9mICpzdHIqLCBmcm9tIGNoYXJhY3RlciBpbmRleCAqc3RhcnQqIChpbmNsdWRlZCkgdG8KKyAgIGNoYXJhY3RlciBpbmRleCAqZW5kKiAoZXhjbHVkZWQpLiAgTmVnYXRpdmUgaW5kaWNlcyBhcmUgbm90IHN1cHBvcnRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzQqIFB5VW5pY29kZV9Bc1VDUzQoUHlPYmplY3QgKnUsIFB5X1VDUzQgKmJ1ZmZlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZsZW4sIGludCBjb3B5X251bGwpCisKKyAgIENvcHkgdGhlIHN0cmluZyAqdSogaW50byBhIFVDUzQgYnVmZmVyLCBpbmNsdWRpbmcgYSBudWxsIGNoYXJhY3RlciwgaWYKKyAgICpjb3B5X251bGwqIGlzIHNldC4gIFJldHVybnMgKk5VTEwqIGFuZCBzZXRzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciAoaW4KKyAgIHBhcnRpY3VsYXIsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKmJ1ZmxlbiogaXMgc21hbGxlciB0aGFuIHRoZSBsZW5ndGggb2YKKyAgICp1KikuICAqYnVmZmVyKiBpcyByZXR1cm5lZCBvbiBzdWNjZXNzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCogUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnUpCisKKyAgIENvcHkgdGhlIHN0cmluZyAqdSogaW50byBhIG5ldyBVQ1M0IGJ1ZmZlciB0aGF0IGlzIGFsbG9jYXRlZCB1c2luZworICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYC4gIElmIHRoaXMgZmFpbHMsICpOVUxMKiBpcyByZXR1cm5lZCB3aXRoIGEKKyAgIDpleGM6YE1lbW9yeUVycm9yYCBzZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK0RlcHJlY2F0ZWQgUHlfVU5JQ09ERSBBUElzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCisuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisKK1RoZXNlIEFQSSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgd2l0aCB0aGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzkzYC4KK0V4dGVuc2lvbiBtb2R1bGVzIGNhbiBjb250aW51ZSB1c2luZyB0aGVtLCBhcyB0aGV5IHdpbGwgbm90IGJlIHJlbW92ZWQgaW4gUHl0aG9uCiszLngsIGJ1dCBuZWVkIHRvIGJlIGF3YXJlIHRoYXQgdGhlaXIgdXNlIGNhbiBub3cgY2F1c2UgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSBoaXRzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgUHlfVU5JQ09ERSBidWZmZXIgKnUqIG9mIHRoZSBnaXZlbiBzaXplLiAqdSoKKyAgIG1heSBiZSAqTlVMTCogd2hpY2ggY2F1c2VzIHRoZSBjb250ZW50cyB0byBiZSB1bmRlZmluZWQuIEl0IGlzIHRoZSB1c2VyJ3MKKyAgIHJlc3BvbnNpYmlsaXR5IHRvIGZpbGwgaW4gdGhlIG5lZWRlZCBkYXRhLiAgVGhlIGJ1ZmZlciBpcyBjb3BpZWQgaW50byB0aGUgbmV3CisgICBvYmplY3QuCisKKyAgIElmIHRoZSBidWZmZXIgaXMgbm90ICpOVUxMKiwgdGhlIHJldHVybiB2YWx1ZSBtaWdodCBiZSBhIHNoYXJlZCBvYmplY3QuCisgICBUaGVyZWZvcmUsIG1vZGlmaWNhdGlvbiBvZiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUgb2JqZWN0IGlzIG9ubHkgYWxsb3dlZCB3aGVuCisgICAqdSogaXMgKk5VTEwqLgorCisgICBJZiB0aGUgYnVmZmVyIGlzICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBtdXN0IGJlIGNhbGxlZCBvbmNlIHRoZQorICAgc3RyaW5nIGNvbnRlbnQgaGFzIGJlZW4gZmlsbGVkIGJlZm9yZSB1c2luZyBhbnkgb2YgdGhlIGFjY2VzcyBtYWNyb3Mgc3VjaCBhcworICAgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYCBvcgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCisgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIsIG9yICpOVUxMKiBvbiBlcnJvci4gVGhpcyB3aWxsIGNyZWF0ZSB0aGUKKyAgIDpjOnR5cGU6YFB5X1VOSUNPREUqYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0IGlmIGl0IGlzIG5vdCB5ZXQKKyAgIGF2YWlsYWJsZS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERWAgc3RyaW5nIG1heSBjb250YWluCisgICBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4KKyAgIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KKworICAgUGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNGAsCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfU3Vic3RyaW5nYCwgOmM6ZnVuYzpgUHlVbmljb2RlX1JlYWRDaGFyYCBvciBzaW1pbGFyIG5ldworICAgQVBJcy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCisKKyAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IHJlcGxhY2luZyBhbGwgZGVjaW1hbCBkaWdpdHMgaW4KKyAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IEFTQ0lJIGRpZ2l0cyAwLS05CisgICBhY2NvcmRpbmcgdG8gdGhlaXIgZGVjaW1hbCB2YWx1ZS4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIG9jY3Vycy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnNpemUpCisKKyAgIExpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZWAsIGJ1dCBhbHNvIHNhdmVzIHRoZSA6YzpmdW5jOmBQeV9VTklDT0RFYAorICAgYXJyYXkgbGVuZ3RoIGluICpzaXplKi4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZworICAgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlCisgICB0cnVuY2F0ZWQgd2hlbiB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlQ29weShQeU9iamVjdCAqdW5pY29kZSkKKworICAgQ3JlYXRlIGEgY29weSBvZiBhIFVuaWNvZGUgc3RyaW5nIGVuZGluZyB3aXRoIGEgbnVsIGNoYXJhY3Rlci4gUmV0dXJuICpOVUxMKgorICAgYW5kIHJhaXNlIGEgOmV4YzpgTWVtb3J5RXJyb3JgIGV4Y2VwdGlvbiBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLAorICAgb3RoZXJ3aXNlIHJldHVybiBhIG5ldyBhbGxvY2F0ZWQgYnVmZmVyICh1c2UgOmM6ZnVuYzpgUHlNZW1fRnJlZWAgdG8gZnJlZQorICAgdGhlIGJ1ZmZlcikuIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIDpjOnR5cGU6YFB5X1VOSUNPREUqYCBzdHJpbmcgbWF5CisgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZQorICAgdHJ1bmNhdGVkIHdoZW4gdXNlZCBpbiBtb3N0IEMgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworICAgUGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNENvcHlgIG9yIHNpbWlsYXIgbmV3IEFQSXMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgZGVwcmVjYXRlZCA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiwgaW4KKyAgIGNvZGUgdW5pdHMgKHRoaXMgaW5jbHVkZXMgc3Vycm9nYXRlIHBhaXJzIGFzIDIgdW5pdHMpLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYC4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tT2JqZWN0KFB5T2JqZWN0ICpvYmopCiAKICAgIFNob3J0Y3V0IGZvciBgYFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChvYmosIE5VTEwsICJzdHJpY3QiKWBgIHdoaWNoIGlzIHVzZWQKICAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHdoZW5ldmVyIGNvZXJjaW9uIHRvIFVuaWNvZGUgaXMgbmVlZGVkLgogCi1JZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgOmM6dHlwZTpgd2NoYXJfdGAgYW5kIHByb3ZpZGVzIGEgaGVhZGVyIGZpbGUgd2NoYXIuaCwKLVB5dGhvbiBjYW4gaW50ZXJmYWNlIGRpcmVjdGx5IHRvIHRoaXMgdHlwZSB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucy4KLVN1cHBvcnQgaXMgb3B0aW1pemVkIGlmIFB5dGhvbidzIG93biA6Yzp0eXBlOmBQeV9VTklDT0RFYCB0eXBlIGlzIGlkZW50aWNhbCB0bwotdGhlIHN5c3RlbSdzIDpjOnR5cGU6YHdjaGFyX3RgLgorCitMb2NhbGUgRW5jb2RpbmcKKyIiIiIiIiIiIiIiIiIiIgorCitUaGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcgY2FuIGJlIHVzZWQgdG8gZGVjb2RlIHRleHQgZnJvbSB0aGUgb3BlcmF0aW5nCitzeXN0ZW0uCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoY29uc3QgY2hhciAqc3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRGVjb2RlIGEgc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgc3VwcG9ydGVkCisgICBlcnJvciBoYW5kbGVycyBhcmUgYGAic3RyaWN0ImBgIGFuZCBgYCJzdXJyb2dhdGVlc2NhcGUiYGAKKyAgICg6cGVwOmAzODNgKS4gVGhlIGRlY29kZXIgdXNlcyBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBpZgorICAgKmVycm9ycyogaXMgYGBOVUxMYGAuICAqc3RyKiBtdXN0IGVuZCB3aXRoIGEgbnVsbCBjaGFyYWN0ZXIgYnV0CisgICBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIHRvIGRlY29kZSBhIHN0cmluZyBmcm9tCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCAodGhlIGxvY2FsZSBlbmNvZGluZyByZWFkIGF0CisgICAgICBQeXRob24gc3RhcnR1cCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUxvY2FsZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAsIGJ1dCBjb21wdXRlIHRoZSBzdHJpbmcKKyAgIGxlbmd0aCB1c2luZyA6YzpmdW5jOmBzdHJsZW5gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUKKyAgIHN1cHBvcnRlZCBlcnJvciBoYW5kbGVycyBhcmUgYGAic3RyaWN0ImBgIGFuZCBgYCJzdXJyb2dhdGVlc2NhcGUiYGAKKyAgICg6cGVwOmAzODNgKS4gVGhlIGVuY29kZXIgdXNlcyBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBpZgorICAgKmVycm9ycyogaXMgYGBOVUxMYGAuIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gKnN0ciogY2Fubm90CisgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIFVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0YCB0byBlbmNvZGUgYSBzdHJpbmcgdG8KKyAgICAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgICh0aGUgbG9jYWxlIGVuY29kaW5nIHJlYWQgYXQKKyAgICAgIFB5dGhvbiBzdGFydHVwKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogRmlsZSBTeXN0ZW0gRW5jb2RpbmcKQEAgLTQyNSwxOSArODE0LDI2IEBACiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIAogICAgRGVjb2RlIGEgc3RyaW5nIHVzaW5nIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGFuZCB0aGUKLSAgIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93cy4KKyAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cy4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGRlY29kZSBhCisgICAgICBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemVgLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgJ3N0cmljdCdgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY29uc3QgY2hhciAqcykKIAogICAgRGVjb2RlIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYAotICAgYW5kIHRoZSBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uIFdpbmRvd3MuCisgICBhbmQgdGhlIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cy4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgpAQCAtNDQ1LDE5ICs4NDEsMjYgQEAKICAgIFVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWAgaWYgeW91IGtub3cgdGhlIHN0cmluZyBsZW5ndGguCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAnc3RyaWN0J2BgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agd2l0aCB0aGUKLSAgIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93cywgYW5kIHJldHVybgorICAgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLCBhbmQgcmV0dXJuCiAgICA6Y2xhc3M6YGJ5dGVzYC4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG1heSBjb250YWluCiAgICBudWxsIGJ5dGVzLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZW5jb2RlIGEKKyAgICAgIHN0cmluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKQEAgLTQ3OSw5ICs4ODIsOSBAQAogICAgQ29weSB0aGUgVW5pY29kZSBvYmplY3QgY29udGVudHMgaW50byB0aGUgOmM6dHlwZTpgd2NoYXJfdGAgYnVmZmVyICp3Ki4gIEF0IG1vc3QKICAgICpzaXplKiA6Yzp0eXBlOmB3Y2hhcl90YCBjaGFyYWN0ZXJzIGFyZSBjb3BpZWQgKGV4Y2x1ZGluZyBhIHBvc3NpYmx5IHRyYWlsaW5nCiAgICAwLXRlcm1pbmF0aW9uIGNoYXJhY3RlcikuICBSZXR1cm4gdGhlIG51bWJlciBvZiA6Yzp0eXBlOmB3Y2hhcl90YCBjaGFyYWN0ZXJzCi0gICBjb3BpZWQgb3IgLTEgaW4gY2FzZSBvZiBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3RgCisgICBjb3BpZWQgb3IgLTEgaW4gY2FzZSBvZiBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3QqYAogICAgc3RyaW5nIG1heSBvciBtYXkgbm90IGJlIDAtdGVybWluYXRlZC4gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyCi0gICB0byBtYWtlIHN1cmUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdGAgc3RyaW5nIGlzIDAtdGVybWluYXRlZCBpbiBjYXNlIHRoaXMgaXMKKyAgIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSA6Yzp0eXBlOmB3Y2hhcl90KmAgc3RyaW5nIGlzIDAtdGVybWluYXRlZCBpbiBjYXNlIHRoaXMgaXMKICAgIHJlcXVpcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gQWxzbywgbm90ZSB0aGF0IHRoZSA6Yzp0eXBlOmB3Y2hhcl90KmAgc3RyaW5nCiAgICBtaWdodCBjb250YWluIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQKICAgIHdoZW4gdXNlZCB3aXRoIG1vc3QgQyBmdW5jdGlvbnMuCkBAIC00OTcsMTIgKzkwMCwzMiBAQAogICAgUmV0dXJucyBhIGJ1ZmZlciBhbGxvY2F0ZWQgYnkgOmM6ZnVuYzpgUHlNZW1fQWxsb2NgICh1c2UKICAgIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgIHRvIGZyZWUgaXQpIG9uIHN1Y2Nlc3MuIE9uIGVycm9yLCByZXR1cm5zICpOVUxMKiwKICAgICpcKnNpemUqIGlzIHVuZGVmaW5lZCBhbmQgcmFpc2VzIGEgOmV4YzpgTWVtb3J5RXJyb3JgLiBOb3RlIHRoYXQgdGhlCi0gICByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZyBtaWdodCBjb250YWluIG51bGwgY2hhcmFjdGVycywgd2hpY2gKKyAgIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90YCBzdHJpbmcgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoCiAgICB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZCB3aGVuIHVzZWQgd2l0aCBtb3N0IEMgZnVuY3Rpb25zLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCitVQ1M0IFN1cHBvcnQKKyIiIiIiIiIiIiIiIgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gWFhYIGFyZSB0aGVzZSBtZWFudCB0byBiZSBwdWJsaWM/CisKKy4uIGM6ZnVuY3Rpb246OiBzaXplX3QgUHlfVUNTNF9zdHJsZW4oY29uc3QgUHlfVUNTNCAqdSkKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cmNweShQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJuY3B5KFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMiwgc2l6ZV90IG4pCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJjYXQoUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIGludCBQeV9VQ1M0X3N0cmNtcChjb25zdCBQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIpCisgICAgICAgICAgICAgICAgaW50IFB5X1VDUzRfc3RybmNtcChjb25zdCBQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIsIHNpemVfdCBuKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RyY2hyKGNvbnN0IFB5X1VDUzQgKnMsIFB5X1VDUzQgYykKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cnJjaHIoY29uc3QgUHlfVUNTNCAqcywgUHlfVUNTNCBjKQorCisgICBUaGVzZSB1dGlsaXR5IGZ1bmN0aW9ucyB3b3JrIG9uIHN0cmluZ3Mgb2YgOmM6dHlwZTpgUHlfVUNTNGAgY2hhcmFjdGVycyBhbmQKKyAgIG90aGVyd2lzZSBiZWhhdmUgbGlrZSB0aGUgQyBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUuCisKKwogLi4gX2J1aWx0aW5jb2RlY3M6CiAKIEJ1aWx0LWluIENvZGVjcwpAQCAtNTM3LDcgKzk2MCw4IEBACiBUaGVzZSBhcmUgdGhlIGdlbmVyaWMgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBlbmNvZGVkIHN0cmluZyAqcyouCiAgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNhbWUgbmFtZQpAQCAtNTQ2LDcgKzk3MCwxOCBAQAogICAgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMgb2JqZWN0LgorICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lCisgICBuYW1lIGluIHRoZSBVbmljb2RlIDptZXRoOmBlbmNvZGVgIG1ldGhvZC4gVGhlIGNvZGVjIHRvIGJlIHVzZWQgaXMgbG9va2VkIHVwCisgICB1c2luZyB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5LiBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgKnMqIG9mIHRoZSBnaXZlbiAqc2l6ZSogYW5kIHJldHVybiBhIFB5dGhvbgogICAgYnl0ZXMgb2JqZWN0LiAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZQpAQCAtNTU0LDE0ICs5ODksOSBAQAogICAgdG8gYmUgdXNlZCBpcyBsb29rZWQgdXAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gIFJldHVybiAqTlVMTCogaWYgYW4KICAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMgb2JqZWN0LgotICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lCi0gICBuYW1lIGluIHRoZSBVbmljb2RlIDptZXRoOmBlbmNvZGVgIG1ldGhvZC4gVGhlIGNvZGVjIHRvIGJlIHVzZWQgaXMgbG9va2VkIHVwCi0gICB1c2luZyB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5LiBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5Ci0gICB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZ2AuCiAKIAogVVRGLTggQ29kZWNzCkBAIC01NzYsNyArMTAwNiw4IEBACiAgICAqcyouIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjhgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCB0cmFpbGluZyBpbmNvbXBsZXRlIFVURi04IGJ5dGUgc2VxdWVuY2VzIHdpbGwgbm90IGJlCkBAIC01ODQsMTMgKzEwMTUsNiBAQAogICAgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjgoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyICpzKiBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFVURi04IGFuZAotICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKLSAgIHRoZSBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIFVURi04IGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKQEAgLTU5OCwxMyArMTAyMiw0OCBAQAogICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogY2hhciogUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnNpemUpCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcgKFVURi04KSBvZiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZAorICAgc3RvcmUgdGhlIHNpemUgb2YgdGhlIGVuY29kZWQgcmVwcmVzZW50YXRpb24gKGluIGJ5dGVzKSBpbiAqc2l6ZSouICAqc2l6ZSoKKyAgIGNhbiBiZSAqTlVMTCosIGluIHRoaXMgY2FzZSBubyBzaXplIHdpbGwgYmUgc3RvcmVkLgorCisgICBJbiB0aGUgY2FzZSBvZiBhbiBlcnJvciwgKk5VTEwqIGlzIHJldHVybmVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCBhbmQgbm8KKyAgICpzaXplKiBpcyBzdG9yZWQuCisKKyAgIFRoaXMgY2FjaGVzIHRoZSBVVEYtOCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RyaW5nIGluIHRoZSBVbmljb2RlIG9iamVjdCwgYW5kCisgICBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc2FtZSBidWZmZXIuICBUaGUgY2FsbGVyIGlzIG5vdAorICAgcmVzcG9uc2libGUgZm9yIGRlYWxsb2NhdGluZyB0aGUgYnVmZmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogY2hhciogUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdCAqdW5pY29kZSkKKworICAgQXMgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOEFuZFNpemVgLCBidXQgZG9lcyBub3Qgc3RvcmUgdGhlIHNpemUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjgoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyICpzKiBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFVURi04IGFuZAorICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKKyAgIHRoZSBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhTdHJpbmdgIG9yIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhBbmRTaXplYC4KKworCiBVVEYtMzIgQ29kZWNzCiAiIiIiIiIiIiIiIiIiCiAKIFRoZXNlIGFyZSB0aGUgVVRGLTMyIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQogCiAgICBEZWNvZGUgKnNpemUqIGJ5dGVzIGZyb20gYSBVVEYtMzIgZW5jb2RlZCBidWZmZXIgc3RyaW5nIGFuZCByZXR1cm4gdGhlCiAgICBjb3JyZXNwb25kaW5nIFVuaWNvZGUgb2JqZWN0LiAgKmVycm9ycyogKGlmIG5vbi0qTlVMTCopIGRlZmluZXMgdGhlIGVycm9yCkBAIC02MjUsMTQgKzEwODQsMTMgQEAKICAgIEFmdGVyIGNvbXBsZXRpb24sICpcKmJ5dGVvcmRlciogaXMgc2V0IHRvIHRoZSBjdXJyZW50IGJ5dGUgb3JkZXIgYXQgdGhlIGVuZAogICAgb2YgaW5wdXQgZGF0YS4KIAotICAgSW4gYSBuYXJyb3cgYnVpbGQgY29kZXBvaW50cyBvdXRzaWRlIHRoZSBCTVAgd2lsbCBiZSBkZWNvZGVkIGFzIHN1cnJvZ2F0ZSBwYWlycy4KLQogICAgSWYgKmJ5dGVvcmRlciogaXMgKk5VTEwqLCB0aGUgY29kZWMgc3RhcnRzIGluIG5hdGl2ZSBvcmRlciBtb2RlLgogCiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMzJgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bGAgd2lsbCBub3QgdHJlYXQKQEAgLTY0MSw3ICsxMDk5LDE1IEBACiAgICB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHdpbGwgYmUgc3RvcmVkIGluICpjb25zdW1lZCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBSZXR1cm4gYSBQeXRob24gYnl0ZSBzdHJpbmcgdXNpbmcgdGhlIFVURi0zMiBlbmNvZGluZyBpbiBuYXRpdmUgYnl0ZQorICAgb3JkZXIuIFRoZSBzdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgQk9NIG1hcmsuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4KKyAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQogCiAgICBSZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIFVURi0zMiBlbmNvZGVkIHZhbHVlIG9mIHRoZSBVbmljb2RlCiAgICBkYXRhIGluICpzKi4gIE91dHB1dCBpcyB3cml0dGVuIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGJ5dGUgb3JkZXI6OgpAQCAtNjU4LDEyICsxMTI0LDkgQEAKIAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLQotICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMzIgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKLSAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCi0gICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZ2AuCiAKIAogVVRGLTE2IENvZGVjcwpAQCAtNjcyLDcgKzExMzUsOCBAQAogVGhlc2UgYXJlIHRoZSBVVEYtMTYgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIpCiAKICAgIERlY29kZSAqc2l6ZSogYnl0ZXMgZnJvbSBhIFVURi0xNiBlbmNvZGVkIGJ1ZmZlciBzdHJpbmcgYW5kIHJldHVybiB0aGUKICAgIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBvYmplY3QuICAqZXJyb3JzKiAoaWYgbm9uLSpOVUxMKikgZGVmaW5lcyB0aGUgZXJyb3IKQEAgLTY5OSw3ICsxMTYzLDggQEAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEYxNmAuIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsYCB3aWxsIG5vdCB0cmVhdApAQCAtNzA4LDcgKzExNzMsMTUgQEAKICAgIG51bWJlciBvZiBieXRlcyB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHdpbGwgYmUgc3RvcmVkIGluICpjb25zdW1lZCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBSZXR1cm4gYSBQeXRob24gYnl0ZSBzdHJpbmcgdXNpbmcgdGhlIFVURi0xNiBlbmNvZGluZyBpbiBuYXRpdmUgYnl0ZQorICAgb3JkZXIuIFRoZSBzdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgQk9NIG1hcmsuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4KKyAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjE2KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQogCiAgICBSZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIFVURi0xNiBlbmNvZGVkIHZhbHVlIG9mIHRoZSBVbmljb2RlCiAgICBkYXRhIGluICpzKi4gIE91dHB1dCBpcyB3cml0dGVuIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGJ5dGUgb3JkZXI6OgpAQCAtNzI2LDEyICsxMTk5LDkgQEAKIAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLQotICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMTYgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKLSAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCi0gICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZ2AuCiAKIAogVVRGLTcgQ29kZWNzCkBAIC03NDYsNyArMTIxNiw4IEBACiAgICAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEY3YC4gIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIHRyYWlsaW5nIGluY29tcGxldGUgVVRGLTcgYmFzZS02NCBzZWN0aW9ucyB3aWxsIG5vdApAQCAtNzU0LDcgKzEyMjUsOCBAQAogICAgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjcoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBpbnQgYmFzZTY0U2V0TywgaW50IGJhc2U2NFdoaXRlU3BhY2UsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjcoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywgaW50IGJhc2U2NFdoaXRlU3BhY2UsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuIHNpemUgdXNpbmcgVVRGLTcgYW5kCiAgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQpAQCAtNzY1LDYgKzEyMzcsMTEgQEAKICAgIG5vbnplcm8sIHdoaXRlc3BhY2Ugd2lsbCBiZSBlbmNvZGVkIGluIGJhc2UtNjQuICBCb3RoIGFyZSBzZXQgdG8gemVybyBmb3IgdGhlCiAgICBQeXRob24gInV0Zi03IiBjb2RlYy4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSS4KKworICAgLi4gWFhYIHJlcGxhY2Ugd2l0aCB3aGF0PworCiAKIFVuaWNvZGUtRXNjYXBlIENvZGVjcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiCkBAIC03NzIsMTkgKzEyNDksMTMgQEAKIFRoZXNlIGFyZSB0aGUgIlVuaWNvZGUgRXNjYXBlIiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSBkZWNvZGluZyAqc2l6ZSogYnl0ZXMgb2YgdGhlIFVuaWNvZGUtRXNjYXBlIGVuY29kZWQKICAgIHN0cmluZyAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKLQotICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVbmljb2RlLUVzY2FwZSBhbmQKLSAgIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKLSAgIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgVW5pY29kZS1Fc2NhcGUgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbgpAQCAtNzkyLDI1ICsxMjYzLDMwIEBACiAgICByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFVuaWNvZGUtRXNjYXBlIGFuZAorICAgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZQorICAgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nYC4KKworCiBSYXctVW5pY29kZS1Fc2NhcGUgQ29kZWNzCiAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRoZXNlIGFyZSB0aGUgIlJhdyBVbmljb2RlIEVzY2FwZSIgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBSYXctVW5pY29kZS1Fc2NhcGUKICAgIGVuY29kZWQgc3RyaW5nICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlCi0gICBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5Ci0gICB0aGUgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBSYXctVW5pY29kZS1Fc2NhcGUgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzCkBAIC04MTgsNiArMTI5NCwxOCBAQAogICAgd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBSYXctVW5pY29kZS1Fc2NhcGUKKyAgIGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKKyAgIHRoZSBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmdgLgorCisKIExhdGluLTEgQ29kZWNzCiAiIiIiIiIiIiIiIiIiIgogCkBAIC04MzEsMTggKzEzMTksMjIgQEAKICAgICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBMYXRpbi0xIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKKyAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBMYXRpbi0xIGFuZAogICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKICAgIHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLQotICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgTGF0aW4tMSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCi0gICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcwotICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmdgLgogCiAKIEFTQ0lJIENvZGVjcwpAQCAtODU4LDE4ICsxMzUwLDIyIEBACiAgICAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBBU0NJSSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCisgICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBBU0NJSSBhbmQKICAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CiAgICB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLQotICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgQVNDSUkgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmdgLgogCiAKIENoYXJhY3RlciBNYXAgQ29kZWNzCkBAIC04OTgsNyArMTM5NCw4IEBACiAKIFRoZXNlIGFyZSB0aGUgbWFwcGluZyBjb2RlYyBBUElzOgogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSBkZWNvZGluZyAqc2l6ZSogYnl0ZXMgb2YgdGhlIGVuY29kZWQgc3RyaW5nICpzKiB1c2luZwogICAgdGhlIGdpdmVuICptYXBwaW5nKiBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZQpAQCAtOTA4LDEzICsxNDA1LDYgQEAKICAgIHRyZWF0ZWQgYXMgInVuZGVmaW5lZCBtYXBwaW5nIi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyB0aGUgZ2l2ZW4KLSAgICptYXBwaW5nKiBvYmplY3QgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiBSZXR1cm4gKk5VTEwqIGlmIGFuCi0gICBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBQeU9iamVjdCAqbWFwcGluZykKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgdGhlIGdpdmVuICptYXBwaW5nKiBvYmplY3QgYW5kIHJldHVybiB0aGUgcmVzdWx0CkBAIC05MjQsNyArMTQxNCw4IEBACiBUaGUgZm9sbG93aW5nIGNvZGVjIEFQSSBpcyBzcGVjaWFsIGluIHRoYXQgbWFwcyBVbmljb2RlIHRvIFVuaWNvZGUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICp0YWJsZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0YWJsZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBUcmFuc2xhdGUgYSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiBieSBhcHBseWluZyBhCiAgICBjaGFyYWN0ZXIgbWFwcGluZyAqdGFibGUqIHRvIGl0IGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4gIFJldHVybgpAQCAtOTM3LDYgKzE0MjgsMjIgQEAKICAgIGFuZCBzZXF1ZW5jZXMgd29yayB3ZWxsLiAgVW5tYXBwZWQgY2hhcmFjdGVyIG9yZGluYWxzIChvbmVzIHdoaWNoIGNhdXNlIGEKICAgIDpleGM6YExvb2t1cEVycm9yYCkgYXJlIGxlZnQgdW50b3VjaGVkIGFuZCBhcmUgY29waWVkIGFzLWlzLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJLgorCisgICAuLiBYWFggcmVwbGFjZSB3aXRoIHdoYXQ/CisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgdGhlIGdpdmVuCisgICAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gUmV0dXJuICpOVUxMKiBpZiBhbgorICAgZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZ2AuCiAKIAogTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MKQEAgLTk1Myw3ICsxNDYwLDggQEAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBpbnQgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIGludCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTUJDU2AuIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWxgIHdpbGwgbm90IGRlY29kZQpAQCAtOTYxLDE4ICsxNDY5LDMxIEBACiAgICBpbiAqY29uc3VtZWQqLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgTUJDUyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCisgICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShpbnQgY29kZV9wYWdlLCBQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIFVuaWNvZGUgb2JqZWN0IHVzaW5nIHRoZSBzcGVjaWZpZWQgY29kZSBwYWdlIGFuZCByZXR1cm4gYSBQeXRob24KKyAgIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLiBVc2UKKyAgIDpjOmRhdGE6YENQX0FDUGAgY29kZSBwYWdlIHRvIGdldCB0aGUgTUJDUyBlbmNvZGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVNQkNTKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIE1CQ1MgYW5kIHJldHVybgogICAgYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKICAgIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLQotICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgTUJDUyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCi0gICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcwotICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nYCBvciA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2VgLgogCiAKIE1ldGhvZHMgJiBTbG90cwpAQCAtMTAxMSw3ICsxNTMyLDggQEAKICAgIGNoYXJhY3RlcnMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIHN0cmluZ3MuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfVHJhbnNsYXRlKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICp0YWJsZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfVHJhbnNsYXRlKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICp0YWJsZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBUcmFuc2xhdGUgYSBzdHJpbmcgYnkgYXBwbHlpbmcgYSBjaGFyYWN0ZXIgbWFwcGluZyB0YWJsZSB0byBpdCBhbmQgcmV0dXJuIHRoZQogICAgcmVzdWx0aW5nIFVuaWNvZGUgb2JqZWN0LgpAQCAtMTAzMywxNCArMTU1NSwxNiBAQAogICAgVW5pY29kZSBzdHJpbmcuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQogCiAgICBSZXR1cm4gMSBpZiAqc3Vic3RyKiBtYXRjaGVzIGBgc3RyW3N0YXJ0OmVuZF1gYCBhdCB0aGUgZ2l2ZW4gdGFpbCBlbmQKICAgICgqZGlyZWN0aW9uKiA9PSAtMSBtZWFucyB0byBkbyBhIHByZWZpeCBtYXRjaCwgKmRpcmVjdGlvbiogPT0gMSBhIHN1ZmZpeCBtYXRjaCksCiAgICAwIG90aGVyd2lzZS4gUmV0dXJuIGBgLTFgYCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKIAogICAgUmV0dXJuIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiAqc3Vic3RyKiBpbiBgYHN0cltzdGFydDplbmRdYGAgdXNpbmcgdGhlIGdpdmVuCiAgICAqZGlyZWN0aW9uKiAoKmRpcmVjdGlvbiogPT0gMSBtZWFucyB0byBkbyBhIGZvcndhcmQgc2VhcmNoLCAqZGlyZWN0aW9uKiA9PSAtMSBhCkBAIC0xMDQ5LDEzICsxNTczLDI3IEBACiAgICBvY2N1cnJlZCBhbmQgYW4gZXhjZXB0aW9uIGhhcyBiZWVuIHNldC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmluZENoYXIoUHlPYmplY3QgKnN0ciwgUHlfVUNTNCBjaCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQorCisgICBSZXR1cm4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgKmNoKiBpbiBgYHN0cltzdGFydDplbmRdYGAgdXNpbmcKKyAgIHRoZSBnaXZlbiAqZGlyZWN0aW9uKiAoKmRpcmVjdGlvbiogPT0gMSBtZWFucyB0byBkbyBhIGZvcndhcmQgc2VhcmNoLAorICAgKmRpcmVjdGlvbiogPT0gLTEgYSBiYWNrd2FyZCBzZWFyY2gpLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW5kZXggb2YgdGhlCisgICBmaXJzdCBtYXRjaDsgYSB2YWx1ZSBvZiBgYC0xYGAgaW5kaWNhdGVzIHRoYXQgbm8gbWF0Y2ggd2FzIGZvdW5kLCBhbmQgYGAtMmBgCisgICBpbmRpY2F0ZXMgdGhhdCBhbiBlcnJvciBvY2N1cnJlZCBhbmQgYW4gZXhjZXB0aW9uIGhhcyBiZWVuIHNldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKIAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICpzdWJzdHIqIGluCiAgICBgYHN0cltzdGFydDplbmRdYGAuICBSZXR1cm4gYGAtMWBgIGlmIGFuIGVycm9yIG9jY3VycmVkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlPYmplY3QgKnJlcGxzdHIsIFB5X3NzaXplX3QgbWF4Y291bnQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsc3RyLCBQeV9zc2l6ZV90IG1heGNvdW50KQogCiAgICBSZXBsYWNlIGF0IG1vc3QgKm1heGNvdW50KiBvY2N1cnJlbmNlcyBvZiAqc3Vic3RyKiBpbiAqc3RyKiB3aXRoICpyZXBsc3RyKiBhbmQKICAgIHJldHVybiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUgb2JqZWN0LiAqbWF4Y291bnQqID09IC0xIG1lYW5zIHJlcGxhY2UgYWxsCkBAIC0xMDc2LDcgKzE2MTQsNyBAQAogICAgSVNPLTg4NTktMSBpZiBpdCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycyIuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsICBQeU9iamVjdCAqcmlnaHQsICBpbnQgb3ApCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgIFB5T2JqZWN0ICpyaWdodCwgIGludCBvcCkKIAogICAgUmljaCBjb21wYXJlIHR3byB1bmljb2RlIHN0cmluZ3MgYW5kIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKIApAQCAtMTEwMyw4ICsxNjQxLDggQEAKICAgIENoZWNrIHdoZXRoZXIgKmVsZW1lbnQqIGlzIGNvbnRhaW5lZCBpbiAqY29udGFpbmVyKiBhbmQgcmV0dXJuIHRydWUgb3IgZmFsc2UKICAgIGFjY29yZGluZ2x5LgogCi0gICAqZWxlbWVudCogaGFzIHRvIGNvZXJjZSB0byBhIG9uZSBlbGVtZW50IFVuaWNvZGUgc3RyaW5nLiBgYC0xYGAgaXMgcmV0dXJuZWQgaWYKLSAgIHRoZXJlIHdhcyBhbiBlcnJvci4KKyAgICplbGVtZW50KiBoYXMgdG8gY29lcmNlIHRvIGEgb25lIGVsZW1lbnQgVW5pY29kZSBzdHJpbmcuIGBgLTFgYCBpcyByZXR1cm5lZAorICAgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKFB5T2JqZWN0ICoqc3RyaW5nKQpAQCAtMTEyMyw3ICsxNjYxLDYgQEAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoY29uc3QgY2hhciAqdikKIAogICAgQSBjb21iaW5hdGlvbiBvZiA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVN0cmluZ2AgYW5kCi0gICA6YzpmdW5jOmBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZWAsIHJldHVybmluZyBlaXRoZXIgYSBuZXcgdW5pY29kZSBzdHJpbmcgb2JqZWN0Ci0gICB0aGF0IGhhcyBiZWVuIGludGVybmVkLCBvciBhIG5ldyAoIm93bmVkIikgcmVmZXJlbmNlIHRvIGFuIGVhcmxpZXIgaW50ZXJuZWQKLSAgIHN0cmluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KLQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0ludGVybkluUGxhY2VgLCByZXR1cm5pbmcgZWl0aGVyIGEgbmV3IHVuaWNvZGUgc3RyaW5nCisgICBvYmplY3QgdGhhdCBoYXMgYmVlbiBpbnRlcm5lZCwgb3IgYSBuZXcgKCJvd25lZCIpIHJlZmVyZW5jZSB0byBhbiBlYXJsaWVyCisgICBpbnRlcm5lZCBzdHJpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUuCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0IGIvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdAppbmRleCA0MWNkZDZiLi40OTllYjNlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CisrKyBiL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKQEAgLTk1LDEyICs5NSw2IEBACiAgICBsZWF2aW5nICpjbG9zZWl0KiBzZXQgdG8gYGAwYGAgYW5kICpmbGFncyogc2V0IHRvICpOVUxMKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5UnVuX1NpbXBsZUZpbGVGbGFncyhGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MpCi0KLSAgIFRoaXMgaXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0byA6YzpmdW5jOmBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFnc2AgYmVsb3csCi0gICBsZWF2aW5nICpjbG9zZWl0KiBzZXQgdG8gYGAwYGAuCi0KLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeVJ1bl9TaW1wbGVGaWxlRXgoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY2xvc2VpdCkKIAogICAgVGhpcyBpcyBhIHNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIDpjOmZ1bmM6YFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzYCBiZWxvdywKZGlmZiAtLWdpdCBhL0RvYy9jb25mLnB5IGIvRG9jL2NvbmYucHkKaW5kZXggNTU1ZjI4MS4uNmIwODVlMCAxMDA2NDQKLS0tIGEvRG9jL2NvbmYucHkKKysrIGIvRG9jL2NvbmYucHkKQEAgLTkxLDcgKzkxLDcgQEAKIH0KIAogIyBPdXRwdXQgYW4gT3BlblNlYXJjaCBkZXNjcmlwdGlvbiBmaWxlLgotaHRtbF91c2Vfb3BlbnNlYXJjaCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMicKK2h0bWxfdXNlX29wZW5zZWFyY2ggPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy8nICsgdmVyc2lvbgogCiAjIEFkZGl0aW9uYWwgc3RhdGljIGZpbGVzLgogaHRtbF9zdGF0aWNfcGF0aCA9IFsndG9vbHMvc3BoaW54ZXh0L3N0YXRpYyddCmRpZmYgLS1naXQgYS9Eb2MvY29weXJpZ2h0LnJzdCBiL0RvYy9jb3B5cmlnaHQucnN0CmluZGV4IDlhMjQ1YzguLjk0Zjc3N2MgMTAwNjQ0Ci0tLSBhL0RvYy9jb3B5cmlnaHQucnN0CisrKyBiL0RvYy9jb3B5cmlnaHQucnN0CkBAIC00LDcgKzQsNyBAQAogCiBQeXRob24gYW5kIHRoaXMgZG9jdW1lbnRhdGlvbiBpczoKIAotQ29weXJpZ2h0IMKpIDIwMDEtMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0NvcHlyaWdodCDCqSAyMDAxLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIENvcHlyaWdodCDCqSAyMDAwIEJlT3Blbi5jb20uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGI1ZGRlMzMuLmZhYzg5YWYgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtNDY1LDYgKzQ2NSwxMSBAQAogUHlGdW5jdGlvbl9OZXc6UHlPYmplY3QqOmNvZGU6KzE6CiBQeUZ1bmN0aW9uX05ldzpQeU9iamVjdCo6Z2xvYmFsczorMToKIAorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOjorMToKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0Kjpjb2RlOisxOgorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOmdsb2JhbHM6KzE6CitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6cXVhbG5hbWU6KzE6CisKIFB5RnVuY3Rpb25fU2V0Q2xvc3VyZTppbnQ6OjoKIFB5RnVuY3Rpb25fU2V0Q2xvc3VyZTpQeU9iamVjdCo6b3A6MDoKIFB5RnVuY3Rpb25fU2V0Q2xvc3VyZTpQeU9iamVjdCo6Y2xvc3VyZTorMToKZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdCBiL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAppbmRleCA3NGZiYTRhLi4xMDZjYzUyIDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CkBAIC0xNjAsNyArMTYwLDcgQEAKIC4uIGNsYXNzOjogRXh0ZW5zaW9uCiAKICAgIFRoZSBFeHRlbnNpb24gY2xhc3MgZGVzY3JpYmVzIGEgc2luZ2xlIEMgb3IgQysrZXh0ZW5zaW9uIG1vZHVsZSBpbiBhIHNldHVwCi0gICBzY3JpcHQuIEl0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBpbiBpdHMgY29uc3RydWN0b3IKKyAgIHNjcmlwdC4gSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGl0cyBjb25zdHJ1Y3RvcjoKIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGFyZ3VtZW50IG5hbWUgICAgICAgICAgfCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0eXBlICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTk5Niw3ICs5OTYsNyBAQAogICAgdGhlc2UgZmlsZXMgaXMgYXZhaWxhYmxlIGluIGFuc3dlciBEMiBvZiB0aGUgYE5GUyBGQVEgcGFnZQogICAgPGh0dHA6Ly9uZnMuc291cmNlZm9yZ2UubmV0LyNzZWN0aW9uX2Q+YF8uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yLjQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zLjEKICAgICAgIE5GUyBmaWxlcyBhcmUgaWdub3JlZC4KIAogLi4gZnVuY3Rpb246OiByZW1vdmVfdHJlZShkaXJlY3RvcnlbLCB2ZXJib3NlPTAsIGRyeV9ydW49MF0pCkBAIC0xMTYzLDEyICsxMTYzLDExIEBACiAKIC4uIGZ1bmN0aW9uOjogZ3Jva19lbnZpcm9ubWVudF9lcnJvcihleGNbLCBwcmVmaXg9J2Vycm9yOiAnXSkKIAotICAgR2VuZXJhdGUgYSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBmcm9tIGFuIDpleGM6YEVudmlyb25tZW50RXJyb3JgICAoOmV4YzpgSU9FcnJvcmAKLSAgIG9yIDpleGM6YE9TRXJyb3JgKSBleGNlcHRpb24gb2JqZWN0LiAgIEhhbmRsZXMgUHl0aG9uIDEuNS4xIGFuZCBsYXRlciBzdHlsZXMsCi0gICBhbmQgZG9lcyB3aGF0IGl0IGNhbiB0byBkZWFsIHdpdGggIGV4Y2VwdGlvbiBvYmplY3RzIHRoYXQgZG9uJ3QgaGF2ZSBhIGZpbGVuYW1lCi0gICAod2hpY2ggaGFwcGVucyB3aGVuIHRoZSBlcnJvciAgaXMgZHVlIHRvIGEgdHdvLWZpbGUgb3BlcmF0aW9uLCBzdWNoIGFzCi0gICA6ZnVuYzpgcmVuYW1lYCBvciAgOmZ1bmM6YGxpbmtgKS4gIFJldHVybnMgdGhlIGVycm9yIG1lc3NhZ2UgYXMgYSBzdHJpbmcKLSAgIHByZWZpeGVkICB3aXRoICpwcmVmaXgqLgorICAgR2VuZXJhdGUgYSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBmcm9tIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBvYmplY3QuCisgICBIYW5kbGVzIFB5dGhvbiAxLjUuMSBhbmQgbGF0ZXIgc3R5bGVzLCBhbmQgZG9lcyB3aGF0IGl0IGNhbiB0byBkZWFsIHdpdGgKKyAgIGV4Y2VwdGlvbiBvYmplY3RzIHRoYXQgZG9uJ3QgaGF2ZSBhIGZpbGVuYW1lICh3aGljaCBoYXBwZW5zIHdoZW4gdGhlIGVycm9yCisgICBpcyBkdWUgdG8gYSB0d28tZmlsZSBvcGVyYXRpb24sIHN1Y2ggYXMgOmZ1bmM6YHJlbmFtZWAgb3IgOmZ1bmM6YGxpbmtgKS4KKyAgIFJldHVybnMgdGhlIGVycm9yIG1lc3NhZ2UgYXMgYSBzdHJpbmcgcHJlZml4ZWQgd2l0aCAqcHJlZml4Ki4KIAogCiAuLiBmdW5jdGlvbjo6IHNwbGl0X3F1b3RlZChzKQpkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CmluZGV4IDdmZDlmNzIuLmVmOTVhYzkgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKQEAgLTMyMSw3ICszMjEsNyBAQAogCiBUaGUgOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBiaXQgbWF5IGJlIHNldCBpbiB0aGUgdGhpcmQgZmllbGQgaWYga2V5d29yZAogYXJndW1lbnRzIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLiAgSW4gdGhpcyBjYXNlLCB0aGUgQyBmdW5jdGlvbiBzaG91bGQKLWFjY2VwdCBhIHRoaXJkIGBgUHlPYmplY3QgXCpgYCBwYXJhbWV0ZXIgd2hpY2ggd2lsbCBiZSBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZHMuCithY2NlcHQgYSB0aGlyZCBgYFB5T2JqZWN0ICpgYCBwYXJhbWV0ZXIgd2hpY2ggd2lsbCBiZSBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZHMuCiBVc2UgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzYCB0byBwYXJzZSB0aGUgYXJndW1lbnRzIHRvIHN1Y2ggYQogZnVuY3Rpb24uCiAKQEAgLTM4NCw5ICszODQsNiBAQAogICAgICAgICAgIGltcG9ydHMgaXQuICovCiAgICAgICAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzcGFtIik7CiAKLUFuIGV4YW1wbGUgbWF5IGJlIGZvdW5kIGluIHRoZSBmaWxlIDpmaWxlOmBEZW1vL2VtYmVkL2RlbW8uY2AgaW4gdGhlIFB5dGhvbgotc291cmNlIGRpc3RyaWJ1dGlvbi4KLQogLi4gbm90ZTo6CiAKICAgIFJlbW92aW5nIGVudHJpZXMgZnJvbSBgYHN5cy5tb2R1bGVzYGAgb3IgaW1wb3J0aW5nIGNvbXBpbGVkIG1vZHVsZXMgaW50bwpkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdAppbmRleCAzMDAxNDE1Li4wOGE3MGEyIDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdApAQCAtMjYsMTEgKzI2LDEyIEBACiA9PT09PT09PT09CiAKIFRoZSBQeXRob24gcnVudGltZSBzZWVzIGFsbCBQeXRob24gb2JqZWN0cyBhcyB2YXJpYWJsZXMgb2YgdHlwZQotOmM6dHlwZTpgUHlPYmplY3RcKmAuICBBIDpjOnR5cGU6YFB5T2JqZWN0YCBpcyBub3QgYSB2ZXJ5IG1hZ25pZmljZW50IG9iamVjdCAtIGl0Ci1qdXN0IGNvbnRhaW5zIHRoZSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIHRoZSBvYmplY3QncyAidHlwZSBvYmplY3QiLiAgVGhpcyBpcwotd2hlcmUgdGhlIGFjdGlvbiBpczsgdGhlIHR5cGUgb2JqZWN0IGRldGVybWluZXMgd2hpY2ggKEMpIGZ1bmN0aW9ucyBnZXQgY2FsbGVkCi13aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGF0dHJpYnV0ZSBnZXRzIGxvb2tlZCB1cCBvbiBhbiBvYmplY3Qgb3IgaXQgaXMgbXVsdGlwbGllZAotYnkgYW5vdGhlciBvYmplY3QuICBUaGVzZSBDIGZ1bmN0aW9ucyBhcmUgY2FsbGVkICJ0eXBlIG1ldGhvZHMiLgorOmM6dHlwZTpgUHlPYmplY3RcKmAsIHdoaWNoIHNlcnZlcyBhcyBhICJiYXNlIHR5cGUiIGZvciBhbGwgUHl0aG9uIG9iamVjdHMuCis6Yzp0eXBlOmBQeU9iamVjdGAgaXRzZWxmIG9ubHkgY29udGFpbnMgdGhlIHJlZmNvdW50IGFuZCBhIHBvaW50ZXIgdG8gdGhlCitvYmplY3QncyAidHlwZSBvYmplY3QiLiAgVGhpcyBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzOyB0aGUgdHlwZSBvYmplY3QgZGV0ZXJtaW5lcword2hpY2ggKEMpIGZ1bmN0aW9ucyBnZXQgY2FsbGVkIHdoZW4sIGZvciBpbnN0YW5jZSwgYW4gYXR0cmlidXRlIGdldHMgbG9va2VkCit1cCBvbiBhbiBvYmplY3Qgb3IgaXQgaXMgbXVsdGlwbGllZCBieSBhbm90aGVyIG9iamVjdC4gIFRoZXNlIEMgZnVuY3Rpb25zCithcmUgY2FsbGVkICJ0eXBlIG1ldGhvZHMiLgogCiBTbywgaWYgeW91IHdhbnQgdG8gZGVmaW5lIGEgbmV3IG9iamVjdCB0eXBlLCB5b3UgbmVlZCB0byBjcmVhdGUgYSBuZXcgdHlwZQogb2JqZWN0LgpAQCAtNTAsMTUgKzUxLDE1IEBACiAgICAgICAgUHlPYmplY3RfSEVBRAogICAgfSBub2RkeV9Ob2RkeU9iamVjdDsKIAotVGhpcyBpcyB3aGF0IGEgTm9kZHkgb2JqZWN0IHdpbGwgY29udGFpbi0tLWluIHRoaXMgY2FzZSwgbm90aGluZyBtb3JlIHRoYW4gZXZlcnkKLVB5dGhvbiBvYmplY3QgY29udGFpbnMsIG5hbWVseSBhIHJlZmNvdW50IGFuZCBhIHBvaW50ZXIgdG8gYSB0eXBlIG9iamVjdC4gIFRoZXNlCi1hcmUgdGhlIGZpZWxkcyB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm8gYnJpbmdzIGluLiAgVGhlIHJlYXNvbiBmb3IgdGhlIG1hY3JvCi1pcyB0byBzdGFuZGFyZGl6ZSB0aGUgbGF5b3V0IGFuZCB0byBlbmFibGUgc3BlY2lhbCBkZWJ1Z2dpbmcgZmllbGRzIGluIGRlYnVnCi1idWlsZHMuICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gc2VtaWNvbG9uIGFmdGVyIHRoZSBgYFB5T2JqZWN0X0hFQURgYCBtYWNybzsgb25lCi1pcyBpbmNsdWRlZCBpbiB0aGUgbWFjcm8gZGVmaW5pdGlvbi4gIEJlIHdhcnkgb2YgYWRkaW5nIG9uZSBieSBhY2NpZGVudDsgaXQncwotZWFzeSB0byBkbyBmcm9tIGhhYml0LCBhbmQgeW91ciBjb21waWxlciBtaWdodCBub3QgY29tcGxhaW4sIGJ1dCBzb21lb25lIGVsc2UncwotcHJvYmFibHkgd2lsbCEgIChPbiBXaW5kb3dzLCBNU1ZDIGlzIGtub3duIHRvIGNhbGwgdGhpcyBhbiBlcnJvciBhbmQgcmVmdXNlIHRvCi1jb21waWxlIHRoZSBjb2RlLikKK1RoaXMgaXMgd2hhdCBhIE5vZGR5IG9iamVjdCB3aWxsIGNvbnRhaW4tLS1pbiB0aGlzIGNhc2UsIG5vdGhpbmcgbW9yZSB0aGFuIHdoYXQKK2V2ZXJ5IFB5dGhvbiBvYmplY3QgY29udGFpbnMtLS1hIHJlZmNvdW50IGFuZCBhIHBvaW50ZXIgdG8gYSB0eXBlIG9iamVjdC4KK1RoZXNlIGFyZSB0aGUgZmllbGRzIHRoZSBgYFB5T2JqZWN0X0hFQURgYCBtYWNybyBicmluZ3MgaW4uICBUaGUgcmVhc29uIGZvciB0aGUKK21hY3JvIGlzIHRvIHN0YW5kYXJkaXplIHRoZSBsYXlvdXQgYW5kIHRvIGVuYWJsZSBzcGVjaWFsIGRlYnVnZ2luZyBmaWVsZHMgaW4KK2RlYnVnIGJ1aWxkcy4gIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBzZW1pY29sb24gYWZ0ZXIgdGhlIGBgUHlPYmplY3RfSEVBRGBgCittYWNybzsgb25lIGlzIGluY2x1ZGVkIGluIHRoZSBtYWNybyBkZWZpbml0aW9uLiAgQmUgd2FyeSBvZiBhZGRpbmcgb25lIGJ5CithY2NpZGVudDsgaXQncyBlYXN5IHRvIGRvIGZyb20gaGFiaXQsIGFuZCB5b3VyIGNvbXBpbGVyIG1pZ2h0IG5vdCBjb21wbGFpbiwKK2J1dCBzb21lb25lIGVsc2UncyBwcm9iYWJseSB3aWxsISAgKE9uIFdpbmRvd3MsIE1TVkMgaXMga25vd24gdG8gY2FsbCB0aGlzIGFuCitlcnJvciBhbmQgcmVmdXNlIHRvIGNvbXBpbGUgdGhlIGNvZGUuKQogCiBGb3IgY29udHJhc3QsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBjb3JyZXNwb25kaW5nIGRlZmluaXRpb24gZm9yIHN0YW5kYXJkCiBQeXRob24gZmxvYXRzOjoKQEAgLTIyNCw3ICsyMjUsNyBAQAogQWRkaW5nIGRhdGEgYW5kIG1ldGhvZHMgdG8gdGhlIEJhc2ljIGV4YW1wbGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUxldCdzIGV4cGVuZCB0aGUgYmFzaWMgZXhhbXBsZSB0byBhZGQgc29tZSBkYXRhIGFuZCBtZXRob2RzLiAgTGV0J3MgYWxzbyBtYWtlCitMZXQncyBleHRlbmQgdGhlIGJhc2ljIGV4YW1wbGUgdG8gYWRkIHNvbWUgZGF0YSBhbmQgbWV0aG9kcy4gIExldCdzIGFsc28gbWFrZQogdGhlIHR5cGUgdXNhYmxlIGFzIGEgYmFzZSBjbGFzcy4gV2UnbGwgY3JlYXRlIGEgbmV3IG1vZHVsZSwgOm1vZDpgbm9kZHkyYCB0aGF0CiBhZGRzIHRoZXNlIGNhcGFiaWxpdGllczoKIApAQCAtMjg4LDE4ICsyODksMTYgQEAKICAgICAgICBzZWxmID0gKE5vZGR5ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICAgICBzZWxmLT5maXJzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICAgICB7CisgICAgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KIAogICAgICAgICAgICBzZWxmLT5sYXN0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiIik7Ci0gICAgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpCi0gICAgICAgICAgICAgeworICAgICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KIAogICAgICAgICAgICBzZWxmLT5udW1iZXIgPSAwOwogICAgICAgIH0KQEAgLTMyNyw4ICszMjYsOCBAQAogY3JlYXRlZC4gTmV3IG1ldGhvZHMgYWx3YXlzIGFjY2VwdCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cywgYnV0IHRoZXkKIG9mdGVuIGlnbm9yZSB0aGUgYXJndW1lbnRzLCBsZWF2aW5nIHRoZSBhcmd1bWVudCBoYW5kbGluZyB0byBpbml0aWFsaXplcgogbWV0aG9kcy4gTm90ZSB0aGF0IGlmIHRoZSB0eXBlIHN1cHBvcnRzIHN1YmNsYXNzaW5nLCB0aGUgdHlwZSBwYXNzZWQgbWF5IG5vdCBiZQotdGhlIHR5cGUgYmVpbmcgZGVmaW5lZC4gIFRoZSBuZXcgbWV0aG9kIGNhbGxzIHRoZSB0cF9hbGxvYyBzbG90IHRvIGFsbG9jYXRlCi1tZW1vcnkuIFdlIGRvbid0IGZpbGwgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvdXJzZWx2ZXMuIFJhdGhlcgordGhlIHR5cGUgYmVpbmcgZGVmaW5lZC4gIFRoZSBuZXcgbWV0aG9kIGNhbGxzIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3QgdG8KK2FsbG9jYXRlIG1lbW9yeS4gV2UgZG9uJ3QgZmlsbCB0aGUgOmF0dHI6YHRwX2FsbG9jYCBzbG90IG91cnNlbHZlcy4gUmF0aGVyCiA6YzpmdW5jOmBQeVR5cGVfUmVhZHlgIGZpbGxzIGl0IGZvciB1cyBieSBpbmhlcml0aW5nIGl0IGZyb20gb3VyIGJhc2UgY2xhc3MsCiB3aGljaCBpcyA6Y2xhc3M6YG9iamVjdGAgYnkgZGVmYXVsdC4gIE1vc3QgdHlwZXMgdXNlIHRoZSBkZWZhdWx0IGFsbG9jYXRpb24uCiAKQEAgLTQ0NSwxNSArNDQ0LDYgQEAKICAgIHN0YXRpYyBQeU9iamVjdCAqCiAgICBOb2RkeV9uYW1lKE5vZGR5KiBzZWxmKQogICAgewotICAgICAgIHN0YXRpYyBQeU9iamVjdCAqZm9ybWF0ID0gTlVMTDsKLSAgICAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKLQotICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkgewotICAgICAgICAgICBmb3JtYXQgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICB9Ci0KICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ2NCwyMCArNDU0LDEzIEBACiAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgIH0KIAotICAgICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPTyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKLSAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgIHJlc3VsdCA9IFB5U3RyaW5nX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLQotICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKICAgIH0KIAogVGhlIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBhcyBhIEMgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIDpjbGFzczpgTm9kZHlgIChvcgogOmNsYXNzOmBOb2RkeWAgc3ViY2xhc3MpIGluc3RhbmNlIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gIE1ldGhvZHMgYWx3YXlzIHRha2UgYW4KIGluc3RhbmNlIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gTWV0aG9kcyBvZnRlbiB0YWtlIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLWFyZ3VtZW50cyBhcyB3ZWxsLCBidXQgaW4gdGhpcyBjYXNlZCB3ZSBkb24ndCB0YWtlIGFueSBhbmQgZG9uJ3QgbmVlZCB0byBhY2NlcHQKK2FyZ3VtZW50cyBhcyB3ZWxsLCBidXQgaW4gdGhpcyBjYXNlIHdlIGRvbid0IHRha2UgYW55IGFuZCBkb24ndCBuZWVkIHRvIGFjY2VwdAogYSBwb3NpdGlvbmFsIGFyZ3VtZW50IHR1cGxlIG9yIGtleXdvcmQgYXJndW1lbnQgZGljdGlvbmFyeS4gVGhpcyBtZXRob2QgaXMKIGVxdWl2YWxlbnQgdG8gdGhlIFB5dGhvbiBtZXRob2Q6OgogCkBAIC05OTksMTMgKzk4MiwxMyBAQAogICAgfQogCiAKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogc3RyaW5nOyBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgIGJ1aWx0aW46IHJlcHIKKwogT2JqZWN0IFByZXNlbnRhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBpbmRleDo6Ci0gICBidWlsdGluOiByZXByCi0gICBidWlsdGluOiBzdHIKLQogSW4gUHl0aG9uLCB0aGVyZSBhcmUgdHdvIHdheXMgdG8gZ2VuZXJhdGUgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdDoKIHRoZSA6ZnVuYzpgcmVwcmAgZnVuY3Rpb24sIGFuZCB0aGUgOmZ1bmM6YHN0cmAgZnVuY3Rpb24uICAoVGhlIDpmdW5jOmBwcmludGAKIGZ1bmN0aW9uIGp1c3QgY2FsbHMgOmZ1bmM6YHN0cmAuKSAgVGhlc2UgaGFuZGxlcnMgYXJlIGJvdGggb3B0aW9uYWwuCkBAIC0xMTI0LDkgKzExMDcsNiBAQAogYXQgdGhlIGVuZDsgaXQgaXMgYSBzZW50aW5lbCB0aGF0IG1hcmtzIHRoZSBlbmQgb2YgdGhlIGFycmF5LiAgVGhlCiA6YXR0cjpgbWxfbmFtZWAgZmllbGQgb2YgdGhlIHNlbnRpbmVsIG11c3QgYmUgKk5VTEwqLgogCi1YWFggTmVlZCB0byByZWZlciB0byBzb21lIHVuaWZpZWQgZGlzY3Vzc2lvbiBvZiB0aGUgc3RydWN0dXJlIGZpZWxkcywgc2hhcmVkCi13aXRoIHRoZSBuZXh0IHNlY3Rpb24uCi0KIFRoZSBzZWNvbmQgdGFibGUgaXMgdXNlZCB0byBkZWZpbmUgYXR0cmlidXRlcyB3aGljaCBtYXAgZGlyZWN0bHkgdG8gZGF0YSBzdG9yZWQKIGluIHRoZSBpbnN0YW5jZS4gIEEgdmFyaWV0eSBvZiBwcmltaXRpdmUgQyB0eXBlcyBhcmUgc3VwcG9ydGVkLCBhbmQgYWNjZXNzIG1heQogYmUgcmVhZC1vbmx5IG9yIHJlYWQtd3JpdGUuICBUaGUgc3RydWN0dXJlcyBpbiB0aGUgdGFibGUgYXJlIGRlZmluZWQgYXM6OgpAQCAtMTE0Niw4ICsxMTI2LDYgQEAKIGNvbnZlcnQgUHl0aG9uIHZhbHVlcyB0byBhbmQgZnJvbSBDIHZhbHVlcy4gIFRoZSA6YXR0cjpgZmxhZ3NgIGZpZWxkIGlzIHVzZWQgdG8KIHN0b3JlIGZsYWdzIHdoaWNoIGNvbnRyb2wgaG93IHRoZSBhdHRyaWJ1dGUgY2FuIGJlIGFjY2Vzc2VkLgogCi1YWFggTmVlZCB0byBtb3ZlIHNvbWUgb2YgdGhpcyB0byBhIHNoYXJlZCBzZWN0aW9uIQotCiBUaGUgZm9sbG93aW5nIGZsYWcgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIDpmaWxlOmBzdHJ1Y3RtZW1iZXIuaGA7IHRoZXkgbWF5IGJlCiBjb21iaW5lZCB1c2luZyBiaXR3aXNlLU9SLgogCkBAIC0xMzcyLDcgKzEzNTAsNyBAQAogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAKLVhYWCBzb21lIGZpZWxkcyBuZWVkIHRvIGJlIGFkZGVkIGhlcmUuLi4gOjoKKzo6CiAKICAgIC8qIEl0ZXJhdG9ycyAqLwogICAgZ2V0aXRlcmZ1bmMgdHBfaXRlcjsKZGlmZiAtLWdpdCBhL0RvYy9mYXEvZGVzaWduLnJzdCBiL0RvYy9mYXEvZGVzaWduLnJzdAppbmRleCBjMzA2MWFlLi4wNGM4YzFmIDEwMDY0NAotLS0gYS9Eb2MvZmFxL2Rlc2lnbi5yc3QKKysrIGIvRG9jL2ZhcS9kZXNpZ24ucnN0CkBAIC01MTIsMTQgKzUxMiwxNiBAQAogCiBEaWN0aW9uYXJpZXMgd29yayBieSBjb21wdXRpbmcgYSBoYXNoIGNvZGUgZm9yIGVhY2gga2V5IHN0b3JlZCBpbiB0aGUgZGljdGlvbmFyeQogdXNpbmcgdGhlIDpmdW5jOmBoYXNoYCBidWlsdC1pbiBmdW5jdGlvbi4gIFRoZSBoYXNoIGNvZGUgdmFyaWVzIHdpZGVseSBkZXBlbmRpbmcKLW9uIHRoZSBrZXk7IGZvciBleGFtcGxlLCAiUHl0aG9uIiBoYXNoZXMgdG8gLTUzOTI5NDI5NiB3aGlsZSAicHl0aG9uIiwgYSBzdHJpbmcKLXRoYXQgZGlmZmVycyBieSBhIHNpbmdsZSBiaXQsIGhhc2hlcyB0byAxMTQyMzMxOTc2LiAgVGhlIGhhc2ggY29kZSBpcyB0aGVuIHVzZWQKLXRvIGNhbGN1bGF0ZSBhIGxvY2F0aW9uIGluIGFuIGludGVybmFsIGFycmF5IHdoZXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHN0b3JlZC4KLUFzc3VtaW5nIHRoYXQgeW91J3JlIHN0b3Jpbmcga2V5cyB0aGF0IGFsbCBoYXZlIGRpZmZlcmVudCBoYXNoIHZhbHVlcywgdGhpcwotbWVhbnMgdGhhdCBkaWN0aW9uYXJpZXMgdGFrZSBjb25zdGFudCB0aW1lIC0tIE8oMSksIGluIGNvbXB1dGVyIHNjaWVuY2Ugbm90YXRpb24KLS0tIHRvIHJldHJpZXZlIGEga2V5LiAgSXQgYWxzbyBtZWFucyB0aGF0IG5vIHNvcnRlZCBvcmRlciBvZiB0aGUga2V5cyBpcwotbWFpbnRhaW5lZCwgYW5kIHRyYXZlcnNpbmcgdGhlIGFycmF5IGFzIHRoZSBgYC5rZXlzKClgYCBhbmQgYGAuaXRlbXMoKWBgIGRvIHdpbGwKLW91dHB1dCB0aGUgZGljdGlvbmFyeSdzIGNvbnRlbnQgaW4gc29tZSBhcmJpdHJhcnkganVtYmxlZCBvcmRlci4KK29uIHRoZSBrZXkgYW5kIGEgcGVyLXByb2Nlc3Mgc2VlZDsgZm9yIGV4YW1wbGUsICJQeXRob24iIGNvdWxkIGhhc2ggdG8KKy01MzkyOTQyOTYgd2hpbGUgInB5dGhvbiIsIGEgc3RyaW5nIHRoYXQgZGlmZmVycyBieSBhIHNpbmdsZSBiaXQsIGNvdWxkIGhhc2gKK3RvIDExNDIzMzE5NzYuICBUaGUgaGFzaCBjb2RlIGlzIHRoZW4gdXNlZCB0byBjYWxjdWxhdGUgYSBsb2NhdGlvbiBpbiBhbgoraW50ZXJuYWwgYXJyYXkgd2hlcmUgdGhlIHZhbHVlIHdpbGwgYmUgc3RvcmVkLiAgQXNzdW1pbmcgdGhhdCB5b3UncmUgc3RvcmluZwora2V5cyB0aGF0IGFsbCBoYXZlIGRpZmZlcmVudCBoYXNoIHZhbHVlcywgdGhpcyBtZWFucyB0aGF0IGRpY3Rpb25hcmllcyB0YWtlCitjb25zdGFudCB0aW1lIC0tIE8oMSksIGluIGNvbXB1dGVyIHNjaWVuY2Ugbm90YXRpb24gLS0gdG8gcmV0cmlldmUgYSBrZXkuICBJdAorYWxzbyBtZWFucyB0aGF0IG5vIHNvcnRlZCBvcmRlciBvZiB0aGUga2V5cyBpcyBtYWludGFpbmVkLCBhbmQgdHJhdmVyc2luZyB0aGUKK2FycmF5IGFzIHRoZSBgYC5rZXlzKClgYCBhbmQgYGAuaXRlbXMoKWBgIGRvIHdpbGwgb3V0cHV0IHRoZSBkaWN0aW9uYXJ5J3MKK2NvbnRlbnQgaW4gc29tZSBhcmJpdHJhcnkganVtYmxlZCBvcmRlciB0aGF0IGNhbiBjaGFuZ2Ugd2l0aCBldmVyeSBpbnZvY2F0aW9uIG9mCithIHByb2dyYW0uCiAKIAogV2h5IG11c3QgZGljdGlvbmFyeSBrZXlzIGJlIGltbXV0YWJsZT8KQEAgLTYzMSw3ICs2MzMsNyBAQAogUHl0aG9uIDIuNiBhZGRzIGFuIDptb2Q6YGFiY2AgbW9kdWxlIHRoYXQgbGV0cyB5b3UgZGVmaW5lIEFic3RyYWN0IEJhc2UgQ2xhc3NlcwogKEFCQ3MpLiAgWW91IGNhbiB0aGVuIHVzZSA6ZnVuYzpgaXNpbnN0YW5jZWAgYW5kIDpmdW5jOmBpc3N1YmNsYXNzYCB0byBjaGVjawogd2hldGhlciBhbiBpbnN0YW5jZSBvciBhIGNsYXNzIGltcGxlbWVudHMgYSBwYXJ0aWN1bGFyIEFCQy4gIFRoZQotOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSBkZWZpbmVzIGEgc2V0IG9mIHVzZWZ1bCBBQkNzIHN1Y2ggYXMKKzptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlIGRlZmluZXMgYSBzZXQgb2YgdXNlZnVsIEFCQ3Mgc3VjaCBhcwogOmNsYXNzOmBJdGVyYWJsZWAsIDpjbGFzczpgQ29udGFpbmVyYCwgYW5kIDpjbGFzczpgTXV0YWJsZU1hcHBpbmdgLgogCiBGb3IgUHl0aG9uLCBtYW55IG9mIHRoZSBhZHZhbnRhZ2VzIG9mIGludGVyZmFjZSBzcGVjaWZpY2F0aW9ucyBjYW4gYmUgb2J0YWluZWQKZGlmZiAtLWdpdCBhL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdCBiL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdAppbmRleCA3YzY4NGEwLi5mYTI0NWM3IDEwMDY0NAotLS0gYS9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2ZhcS9leHRlbmRpbmcucnN0CkBAIC00NDUsMzQgKzQ0NSwzIEBACiBUaGUgQm9vc3QgUHl0aG9uIExpYnJhcnkgKEJQTCwgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9weXRob24vZG9jL2luZGV4Lmh0bWwpCiBwcm92aWRlcyBhIHdheSBvZiBkb2luZyB0aGlzIGZyb20gQysrIChpLmUuIHlvdSBjYW4gaW5oZXJpdCBmcm9tIGFuIGV4dGVuc2lvbgogY2xhc3Mgd3JpdHRlbiBpbiBDKysgdXNpbmcgdGhlIEJQTCkuCi0KLQotV2hlbiBpbXBvcnRpbmcgbW9kdWxlIFgsIHdoeSBkbyBJIGdldCAidW5kZWZpbmVkIHN5bWJvbDogUHlVbmljb2RlVUNTMioiPwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Zb3UgYXJlIHVzaW5nIGEgdmVyc2lvbiBvZiBQeXRob24gdGhhdCB1c2VzIGEgNC1ieXRlIHJlcHJlc2VudGF0aW9uIGZvciBVbmljb2RlCi1jaGFyYWN0ZXJzLCBidXQgc29tZSBDIGV4dGVuc2lvbiBtb2R1bGUgeW91IGFyZSBpbXBvcnRpbmcgd2FzIGNvbXBpbGVkIHVzaW5nIGEKLVB5dGhvbiB0aGF0IHVzZXMgYSAyLWJ5dGUgcmVwcmVzZW50YXRpb24gZm9yIFVuaWNvZGUgY2hhcmFjdGVycyAodGhlIGRlZmF1bHQpLgotCi1JZiBpbnN0ZWFkIHRoZSBuYW1lIG9mIHRoZSB1bmRlZmluZWQgc3ltYm9sIHN0YXJ0cyB3aXRoIGBgUHlVbmljb2RlVUNTNGBgLCB0aGUKLXByb2JsZW0gaXMgdGhlIHJldmVyc2U6IFB5dGhvbiB3YXMgYnVpbHQgdXNpbmcgMi1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycywgYW5kCi10aGUgZXh0ZW5zaW9uIG1vZHVsZSB3YXMgY29tcGlsZWQgdXNpbmcgYSBQeXRob24gd2l0aCA0LWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzLgotCi1UaGlzIGNhbiBlYXNpbHkgb2NjdXIgd2hlbiB1c2luZyBwcmUtYnVpbHQgZXh0ZW5zaW9uIHBhY2thZ2VzLiAgUmVkSGF0IExpbnV4Ci03LngsIGluIHBhcnRpY3VsYXIsIHByb3ZpZGVkIGEgInB5dGhvbjIiIGJpbmFyeSB0aGF0IGlzIGNvbXBpbGVkIHdpdGggNC1ieXRlCi1Vbmljb2RlLiAgVGhpcyBvbmx5IGNhdXNlcyB0aGUgbGluayBmYWlsdXJlIGlmIHRoZSBleHRlbnNpb24gdXNlcyBhbnkgb2YgdGhlCi1gYFB5VW5pY29kZV8qKClgYCBmdW5jdGlvbnMuICBJdCBpcyBhbHNvIGEgcHJvYmxlbSBpZiBhbiBleHRlbnNpb24gdXNlcyBhbnkgb2YKLXRoZSBVbmljb2RlLXJlbGF0ZWQgZm9ybWF0IHNwZWNpZmllcnMgZm9yIDpjOmZ1bmM6YFB5X0J1aWxkVmFsdWVgIChvciBzaW1pbGFyKSBvcgotcGFyYW1ldGVyIHNwZWNpZmljYXRpb25zIGZvciA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlYC4KLQotWW91IGNhbiBjaGVjayB0aGUgc2l6ZSBvZiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgYSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXNpbmcgYnkKLWNoZWNraW5nIHRoZSB2YWx1ZSBvZiBzeXMubWF4dW5pY29kZToKLQotICAgPj4+IGltcG9ydCBzeXMKLSAgID4+PiBpZiBzeXMubWF4dW5pY29kZSA+IDY1NTM1OgotICAgLi4uICAgICBwcmludCgnVUNTNCBidWlsZCcpCi0gICAuLi4gZWxzZToKLSAgIC4uLiAgICAgcHJpbnQoJ1VDUzIgYnVpbGQnKQotCi1UaGUgb25seSB3YXkgdG8gc29sdmUgdGhpcyBwcm9ibGVtIGlzIHRvIHVzZSBleHRlbnNpb24gbW9kdWxlcyBjb21waWxlZCB3aXRoIGEKLVB5dGhvbiBiaW5hcnkgYnVpbHQgdXNpbmcgdGhlIHNhbWUgc2l6ZSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9saWJyYXJ5LnJzdCBiL0RvYy9mYXEvbGlicmFyeS5yc3QKaW5kZXggNzM4NWM1OS4uY2FiMmQ3YiAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9saWJyYXJ5LnJzdAorKysgYi9Eb2MvZmFxL2xpYnJhcnkucnN0CkBAIC0zNTEsNyArMzUxLDcgQEAKICAgIFdvcmtlciA8VGhyZWFkKHdvcmtlciAxLCBzdGFydGVkIDEzMDI4MzgzMjc5NzQ1Nik+IHJ1bm5pbmcgd2l0aCBhcmd1bWVudCA1CiAgICAuLi4KIAotQ29uc3VsdCB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzOyB0aGUgOmNsYXNzOmB+cXVldWUuUXVldWVgYAorQ29uc3VsdCB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzOyB0aGUgOmNsYXNzOmB+cXVldWUuUXVldWVgCiBjbGFzcyBwcm92aWRlcyBhIGZlYXR1cmVmdWwgaW50ZXJmYWNlLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9nbG9zc2FyeS5yc3QgYi9Eb2MvZ2xvc3NhcnkucnN0CmluZGV4IDU1YzM0NzAuLjY4ZGQ0YzggMTAwNjQ0Ci0tLSBhL0RvYy9nbG9zc2FyeS5yc3QKKysrIGIvRG9jL2dsb3NzYXJ5LnJzdApAQCAtMzQsNyArMzQsNyBAQAogICAgICAgc3ViY2xhc3Nlcywgd2hpY2ggYXJlIGNsYXNzZXMgdGhhdCBkb24ndCBpbmhlcml0IGZyb20gYSBjbGFzcyBidXQgYXJlCiAgICAgICBzdGlsbCByZWNvZ25pemVkIGJ5IDpmdW5jOmBpc2luc3RhbmNlYCBhbmQgOmZ1bmM6YGlzc3ViY2xhc3NgOyBzZWUgdGhlCiAgICAgICA6bW9kOmBhYmNgIG1vZHVsZSBkb2N1bWVudGF0aW9uLiAgUHl0aG9uIGNvbWVzIHdpdGggbWFueSBidWlsdC1pbiBBQkNzIGZvcgotICAgICAgZGF0YSBzdHJ1Y3R1cmVzIChpbiB0aGUgOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSksIG51bWJlcnMgKGluIHRoZQorICAgICAgZGF0YSBzdHJ1Y3R1cmVzIChpbiB0aGUgOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBtb2R1bGUpLCBudW1iZXJzIChpbiB0aGUKICAgICAgIDptb2Q6YG51bWJlcnNgIG1vZHVsZSksIHN0cmVhbXMgKGluIHRoZSA6bW9kOmBpb2AgbW9kdWxlKSwgaW1wb3J0IGZpbmRlcnMKICAgICAgIGFuZCBsb2FkZXJzIChpbiB0aGUgOm1vZDpgaW1wb3J0bGliLmFiY2AgbW9kdWxlKS4gIFlvdSBjYW4gY3JlYXRlIHlvdXIgb3duCiAgICAgICBBQkNzIHdpdGggdGhlIDptb2Q6YGFiY2AgbW9kdWxlLgpAQCAtMjI3LDkgKzIyNyw5IEBACiAKICAgIGZpbmRlcgogICAgICAgQW4gb2JqZWN0IHRoYXQgdHJpZXMgdG8gZmluZCB0aGUgOnRlcm06YGxvYWRlcmAgZm9yIGEgbW9kdWxlLiBJdCBtdXN0Ci0gICAgICBpbXBsZW1lbnQgYSBtZXRob2QgbmFtZWQgOm1ldGg6YGZpbmRfbW9kdWxlYC4gU2VlIDpwZXA6YDMwMmAgZm9yCi0gICAgICBkZXRhaWxzIGFuZCA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBmb3IgYW4KLSAgICAgIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYC4KKyAgICAgIGltcGxlbWVudCBlaXRoZXIgYSBtZXRob2QgbmFtZWQgOm1ldGg6YGZpbmRfbG9hZGVyYCBvciBhIG1ldGhvZCBuYW1lZAorICAgICAgOm1ldGg6YGZpbmRfbW9kdWxlYC4gU2VlIDpwZXA6YDMwMmAgYW5kIDpwZXA6YDQyMGAgZm9yIGRldGFpbHMgYW5kCisgICAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBmb3IgYW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgLgogCiAgICBmbG9vciBkaXZpc2lvbgogICAgICAgTWF0aGVtYXRpY2FsIGRpdmlzaW9uIHRoYXQgcm91bmRzIGRvd24gdG8gbmVhcmVzdCBpbnRlZ2VyLiAgVGhlIGZsb29yCkBAIC0zMzQsNiArMzM0LDE3IEBACiAgICAgICByb2xlIGluIHBsYWNlcyB3aGVyZSBhIGNvbnN0YW50IGhhc2ggdmFsdWUgaXMgbmVlZGVkLCBmb3IgZXhhbXBsZSBhcyBhIGtleQogICAgICAgaW4gYSBkaWN0aW9uYXJ5LgogCisgICBpbXBvcnQgcGF0aAorICAgICAgQSBsaXN0IG9mIGxvY2F0aW9ucyAob3IgOnRlcm06YHBhdGggZW50cmllcyA8cGF0aCBlbnRyeT5gKSB0aGF0IGFyZQorICAgICAgc2VhcmNoZWQgYnkgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAgZm9yIG1vZHVsZXMgdG8gaW1wb3J0LiBEdXJpbmcKKyAgICAgIGltcG9ydCwgdGhpcyBsaXN0IG9mIGxvY2F0aW9ucyB1c3VhbGx5IGNvbWVzIGZyb20gOmRhdGE6YHN5cy5wYXRoYCwgYnV0CisgICAgICBmb3Igc3VicGFja2FnZXMgaXQgbWF5IGFsc28gY29tZSBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZSdzIGBgX19wYXRoX19gYAorICAgICAgYXR0cmlidXRlLgorCisgICBpbXBvcnRpbmcKKyAgICAgIFRoZSBwcm9jZXNzIGJ5IHdoaWNoIFB5dGhvbiBjb2RlIGluIG9uZSBtb2R1bGUgaXMgbWFkZSBhdmFpbGFibGUgdG8KKyAgICAgIFB5dGhvbiBjb2RlIGluIGFub3RoZXIgbW9kdWxlLgorCiAgICBpbXBvcnRlcgogICAgICAgQW4gb2JqZWN0IHRoYXQgYm90aCBmaW5kcyBhbmQgbG9hZHMgYSBtb2R1bGU7IGJvdGggYQogICAgICAgOnRlcm06YGZpbmRlcmAgYW5kIDp0ZXJtOmBsb2FkZXJgIG9iamVjdC4KQEAgLTQ1MCwxMiArNDYxLDE3IEBACiAKICAgIG1hcHBpbmcKICAgICAgIEEgY29udGFpbmVyIG9iamVjdCB0aGF0IHN1cHBvcnRzIGFyYml0cmFyeSBrZXkgbG9va3VwcyBhbmQgaW1wbGVtZW50cyB0aGUKLSAgICAgIG1ldGhvZHMgc3BlY2lmaWVkIGluIHRoZSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5NYXBwaW5nYCBvcgotICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmdgCisgICAgICBtZXRob2RzIHNwZWNpZmllZCBpbiB0aGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgIG9yCisgICAgICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgCiAgICAgICA6cmVmOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlcz5gLiAgRXhhbXBsZXMKICAgICAgIGluY2x1ZGUgOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdGAsCiAgICAgICA6Y2xhc3M6YGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBhbmQgOmNsYXNzOmBjb2xsZWN0aW9ucy5Db3VudGVyYC4KIAorICAgbWV0YSBwYXRoIGZpbmRlcgorICAgICAgQSBmaW5kZXIgcmV0dXJuZWQgYnkgYSBzZWFyY2ggb2YgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLiAgTWV0YSBwYXRoCisgICAgICBmaW5kZXJzIGFyZSByZWxhdGVkIHRvLCBidXQgZGlmZmVyZW50IGZyb20gOnRlcm06YHBhdGggZW50cnkgZmluZGVycworICAgICAgPHBhdGggZW50cnkgZmluZGVyPmAuCisKICAgIG1ldGFjbGFzcwogICAgICAgVGhlIGNsYXNzIG9mIGEgY2xhc3MuICBDbGFzcyBkZWZpbml0aW9ucyBjcmVhdGUgYSBjbGFzcyBuYW1lLCBhIGNsYXNzCiAgICAgICBkaWN0aW9uYXJ5LCBhbmQgYSBsaXN0IG9mIGJhc2UgY2xhc3Nlcy4gIFRoZSBtZXRhY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yCkBAIC00ODAsNiArNDk2LDExIEBACiAgICAgICBmb3IgYSBtZW1iZXIgZHVyaW5nIGxvb2t1cC4gU2VlIGBUaGUgUHl0aG9uIDIuMyBNZXRob2QgUmVzb2x1dGlvbiBPcmRlcgogICAgICAgPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLz5gXy4KIAorICAgbW9kdWxlCisgICAgICBBbiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYW4gb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZS4gIE1vZHVsZXMKKyAgICAgIGhhdmUgYSBuYW1lc3BhY2UgY29udGFpbmluZyBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBNb2R1bGVzIGFyZSBsb2FkZWQKKyAgICAgIGludG8gUHl0aG9uIGJ5IHRoZSBwcm9jZXNzIG9mIDp0ZXJtOmBpbXBvcnRpbmdgLgorCiAgICBNUk8KICAgICAgIFNlZSA6dGVybTpgbWV0aG9kIHJlc29sdXRpb24gb3JkZXJgLgogCkBAIC01MTIsNiArNTMzLDEyIEBACiAgICAgICBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGJ5IHRoZSA6bW9kOmByYW5kb21gIGFuZCA6bW9kOmBpdGVydG9vbHNgCiAgICAgICBtb2R1bGVzLCByZXNwZWN0aXZlbHkuCiAKKyAgIG5hbWVzcGFjZSBwYWNrYWdlCisgICAgICBBIDpwZXA6YDQyMGAgOnRlcm06YHBhY2thZ2VgIHdoaWNoIHNlcnZlcyBvbmx5IGFzIGEgY29udGFpbmVyIGZvcgorICAgICAgc3VicGFja2FnZXMuICBOYW1lc3BhY2UgcGFja2FnZXMgbWF5IGhhdmUgbm8gcGh5c2ljYWwgcmVwcmVzZW50YXRpb24sCisgICAgICBhbmQgc3BlY2lmaWNhbGx5IGFyZSBub3QgbGlrZSBhIDp0ZXJtOmByZWd1bGFyIHBhY2thZ2VgIGJlY2F1c2UgdGhleQorICAgICAgaGF2ZSBubyBgYF9faW5pdF9fLnB5YGAgZmlsZS4KKwogICAgbmVzdGVkIHNjb3BlCiAgICAgICBUaGUgYWJpbGl0eSB0byByZWZlciB0byBhIHZhcmlhYmxlIGluIGFuIGVuY2xvc2luZyBkZWZpbml0aW9uLiAgRm9yCiAgICAgICBpbnN0YW5jZSwgYSBmdW5jdGlvbiBkZWZpbmVkIGluc2lkZSBhbm90aGVyIGZ1bmN0aW9uIGNhbiByZWZlciB0bwpAQCAtNTMyLDYgKzU1OSwxMSBAQAogICAgICAgKG1ldGhvZHMpLiAgQWxzbyB0aGUgdWx0aW1hdGUgYmFzZSBjbGFzcyBvZiBhbnkgOnRlcm06YG5ldy1zdHlsZQogICAgICAgY2xhc3NgLgogCisgICBwYWNrYWdlCisgICAgICBBIFB5dGhvbiBtb2R1bGUgd2hpY2ggY2FuIGNvbnRhaW4gc3VibW9kdWxlcyBvciByZWN1cnNpdmVseSwKKyAgICAgIHN1YnBhY2thZ2VzLiAgVGVjaG5pY2FsbHksIGEgcGFja2FnZSBpcyBhIFB5dGhvbiBtb2R1bGUgd2l0aCBhbgorICAgICAgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4KKwogICAgcGFyYW1ldGVyCiAgICAgICBBIG5hbWVkIGVudGl0eSBpbiBhIDp0ZXJtOmBmdW5jdGlvbmAgKG9yIG1ldGhvZCkgZGVmaW5pdGlvbiB0aGF0CiAgICAgICBzcGVjaWZpZXMgYW4gOnRlcm06YGFyZ3VtZW50YCAob3IgaW4gc29tZSBjYXNlcywgYXJndW1lbnRzKSB0aGF0IHRoZQpAQCAtNTc5LDEyICs2MTEsNDggQEAKICAgICAgIDxmYXEtYXJndW1lbnQtdnMtcGFyYW1ldGVyPmAsIHRoZSA6Y2xhc3M6YGluc3BlY3QuUGFyYW1ldGVyYCBjbGFzcywgdGhlCiAgICAgICA6cmVmOmBmdW5jdGlvbmAgc2VjdGlvbiwgYW5kIDpwZXA6YDM2MmAuCiAKKyAgIHBhdGggZW50cnkKKyAgICAgIEEgc2luZ2xlIGxvY2F0aW9uIG9uIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIHdoaWNoIHRoZSA6dGVybTpgcGF0aAorICAgICAgYmFzZWQgZmluZGVyYCBjb25zdWx0cyB0byBmaW5kIG1vZHVsZXMgZm9yIGltcG9ydGluZy4KKworICAgcGF0aCBlbnRyeSBmaW5kZXIKKyAgICAgIEEgOnRlcm06YGZpbmRlcmAgcmV0dXJuZWQgYnkgYSBjYWxsYWJsZSBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgCisgICAgICAoaS5lLiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tgKSB3aGljaCBrbm93cyBob3cgdG8gbG9jYXRlIG1vZHVsZXMgZ2l2ZW4KKyAgICAgIGEgOnRlcm06YHBhdGggZW50cnlgLgorCisgICBwYXRoIGVudHJ5IGhvb2sKKyAgICAgIEEgY2FsbGFibGUgb24gdGhlIDpkYXRhOmBzeXMucGF0aF9ob29rYCBsaXN0IHdoaWNoIHJldHVybnMgYSA6dGVybTpgcGF0aAorICAgICAgZW50cnkgZmluZGVyYCBpZiBpdCBrbm93cyBob3cgdG8gZmluZCBtb2R1bGVzIG9uIGEgc3BlY2lmaWMgOnRlcm06YHBhdGgKKyAgICAgIGVudHJ5YC4KKworICAgcGF0aCBiYXNlZCBmaW5kZXIKKyAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAorICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KKworICAgcG9ydGlvbgorICAgICAgQSBzZXQgb2YgZmlsZXMgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IChwb3NzaWJseSBzdG9yZWQgaW4gYSB6aXAgZmlsZSkKKyAgICAgIHRoYXQgY29udHJpYnV0ZSB0byBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhcyBkZWZpbmVkIGluIDpwZXA6YDQyMGAuCisKICAgIHBvc2l0aW9uYWwgYXJndW1lbnQKICAgICAgIFNlZSA6dGVybTpgYXJndW1lbnRgLgogCisgICBwcm92aXNpb25hbCBwYWNrYWdlCisgICAgICBBIHByb3Zpc2lvbmFsIHBhY2thZ2UgaXMgb25lIHdoaWNoIGhhcyBiZWVuIGRlbGliZXJhdGVseSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuICBXaGlsZSBtYWpvcgorICAgICAgY2hhbmdlcyB0byBzdWNoIHBhY2thZ2VzIGFyZSBub3QgZXhwZWN0ZWQsIGFzIGxvbmcgYXMgdGhleSBhcmUgbWFya2VkCisgICAgICBwcm92aXNpb25hbCwgYmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwKKyAgICAgIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSBjb3JlIGRldmVsb3BlcnMuICBTdWNoCisgICAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIG1hZGUgZ3JhdHVpdG91c2x5IC0tIHRoZXkgd2lsbCBvY2N1ciBvbmx5IGlmIHNlcmlvdXMKKyAgICAgIGZsYXdzIGFyZSB1bmNvdmVyZWQgdGhhdCB3ZXJlIG1pc3NlZCBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mIHRoZQorICAgICAgcGFja2FnZS4KKworICAgICAgVGhpcyBwcm9jZXNzIGFsbG93cyB0aGUgc3RhbmRhcmQgbGlicmFyeSB0byBjb250aW51ZSB0byBldm9sdmUgb3ZlcgorICAgICAgdGltZSwgd2l0aG91dCBsb2NraW5nIGluIHByb2JsZW1hdGljIGRlc2lnbiBlcnJvcnMgZm9yIGV4dGVuZGVkIHBlcmlvZHMKKyAgICAgIG9mIHRpbWUuICBTZWUgOnBlcDpgNDExYCBmb3IgbW9yZSBkZXRhaWxzLgorCiAgICBQeXRob24gMzAwMAotICAgICAgTmlja25hbWUgZm9yIHRoZSBQeXRob24gMy54IHJlbGVhc2UgbGluZSAoY29pbmVkIGxvbmcgYWdvIHdoZW4gdGhlIHJlbGVhc2UKLSAgICAgIG9mIHZlcnNpb24gMyB3YXMgc29tZXRoaW5nIGluIHRoZSBkaXN0YW50IGZ1dHVyZS4pICBUaGlzIGlzIGFsc28KKyAgICAgIE5pY2tuYW1lIGZvciB0aGUgUHl0aG9uIDMueCByZWxlYXNlIGxpbmUgKGNvaW5lZCBsb25nIGFnbyB3aGVuIHRoZQorICAgICAgcmVsZWFzZSBvZiB2ZXJzaW9uIDMgd2FzIHNvbWV0aGluZyBpbiB0aGUgZGlzdGFudCBmdXR1cmUuKSAgVGhpcyBpcyBhbHNvCiAgICAgICBhYmJyZXZpYXRlZCAiUHkzayIuCiAKICAgIFB5dGhvbmljCkBAIC02MDMsNiArNjcxLDMyIEBACiAgICAgICAgICBmb3IgcGllY2UgaW4gZm9vZDoKICAgICAgICAgICAgICBwcmludChwaWVjZSkKIAorICAgcXVhbGlmaWVkIG5hbWUKKyAgICAgIEEgZG90dGVkIG5hbWUgc2hvd2luZyB0aGUgInBhdGgiIGZyb20gYSBtb2R1bGUncyBnbG9iYWwgc2NvcGUgdG8gYQorICAgICAgY2xhc3MsIGZ1bmN0aW9uIG9yIG1ldGhvZCBkZWZpbmVkIGluIHRoYXQgbW9kdWxlLCBhcyBkZWZpbmVkIGluCisgICAgICA6cGVwOmAzMTU1YC4gIEZvciB0b3AtbGV2ZWwgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLCB0aGUgcXVhbGlmaWVkIG5hbWUKKyAgICAgIGlzIHRoZSBzYW1lIGFzIHRoZSBvYmplY3QncyBuYW1lOjoKKworICAgICAgICAgPj4+IGNsYXNzIEM6CisgICAgICAgICAuLi4gICAgIGNsYXNzIEQ6CisgICAgICAgICAuLi4gICAgICAgICBkZWYgbWV0aChzZWxmKToKKyAgICAgICAgIC4uLiAgICAgICAgICAgICBwYXNzCisgICAgICAgICAuLi4KKyAgICAgICAgID4+PiBDLl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MnCisgICAgICAgICA+Pj4gQy5ELl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MuRCcKKyAgICAgICAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICAgICAgICdDLkQubWV0aCcKKworICAgICAgV2hlbiB1c2VkIHRvIHJlZmVyIHRvIG1vZHVsZXMsIHRoZSAqZnVsbHkgcXVhbGlmaWVkIG5hbWUqIG1lYW5zIHRoZQorICAgICAgZW50aXJlIGRvdHRlZCBwYXRoIHRvIHRoZSBtb2R1bGUsIGluY2x1ZGluZyBhbnkgcGFyZW50IHBhY2thZ2VzLAorICAgICAgZS5nLiBgYGVtYWlsLm1pbWUudGV4dGBgOjoKKworICAgICAgICAgPj4+IGltcG9ydCBlbWFpbC5taW1lLnRleHQKKyAgICAgICAgID4+PiBlbWFpbC5taW1lLnRleHQuX19uYW1lX18KKyAgICAgICAgICdlbWFpbC5taW1lLnRleHQnCisKICAgIHJlZmVyZW5jZSBjb3VudAogICAgICAgVGhlIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIGFuIG9iamVjdC4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbgogICAgICAgb2JqZWN0IGRyb3BzIHRvIHplcm8sIGl0IGlzIGRlYWxsb2NhdGVkLiAgUmVmZXJlbmNlIGNvdW50aW5nIGlzCkBAIC02MTEsNiArNzA1LDEwIEBACiAgICAgICA6ZnVuYzpgfnN5cy5nZXRyZWZjb3VudGAgZnVuY3Rpb24gdGhhdCBwcm9ncmFtbWVycyBjYW4gY2FsbCB0byByZXR1cm4gdGhlCiAgICAgICByZWZlcmVuY2UgY291bnQgZm9yIGEgcGFydGljdWxhciBvYmplY3QuCiAKKyAgIHJlZ3VsYXIgcGFja2FnZQorICAgICAgQSB0cmFkaXRpb25hbCA6dGVybTpgcGFja2FnZWAsIHN1Y2ggYXMgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbgorICAgICAgYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIF9fc2xvdHNfXwogICAgICAgQSBkZWNsYXJhdGlvbiBpbnNpZGUgYSBjbGFzcyB0aGF0IHNhdmVzIG1lbW9yeSBieSBwcmUtZGVjbGFyaW5nIHNwYWNlIGZvcgogICAgICAgaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgZWxpbWluYXRpbmcgaW5zdGFuY2UgZGljdGlvbmFyaWVzLiAgVGhvdWdoCkBAIC02NDUsNiArNzQzLDE0IEBACiAgICAgICBhbiA6dGVybTpgZXhwcmVzc2lvbmAgb3IgYSBvbmUgb2Ygc2V2ZXJhbCBjb25zdHJ1Y3RzIHdpdGggYSBrZXl3b3JkLCBzdWNoCiAgICAgICBhcyA6a2V5d29yZDpgaWZgLCA6a2V5d29yZDpgd2hpbGVgIG9yIDprZXl3b3JkOmBmb3JgLgogCisgICBzdHJ1Y3Qgc2VxdWVuY2UKKyAgICAgIEEgdHVwbGUgd2l0aCBuYW1lZCBlbGVtZW50cy4gU3RydWN0IHNlcXVlbmNlcyBleHBvc2UgYW4gaW50ZXJmYWNlIHNpbWlsYXIKKyAgICAgIHRvIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaW4gdGhhdCBlbGVtZW50cyBjYW4gZWl0aGVyIGJlIGFjY2Vzc2VkIGVpdGhlciBieQorICAgICAgaW5kZXggb3IgYXMgYW4gYXR0cmlidXRlLiBIb3dldmVyLCB0aGV5IGRvIG5vdCBoYXZlIGFueSBvZiB0aGUgbmFtZWQgdHVwbGUKKyAgICAgIG1ldGhvZHMgbGlrZSA6bWV0aDpgfmNvbGxlY3Rpb25zLnNvbWVuYW1lZHR1cGxlLl9tYWtlYCBvcgorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5zb21lbmFtZWR0dXBsZS5fYXNkaWN0YC4gRXhhbXBsZXMgb2Ygc3RydWN0IHNlcXVlbmNlcworICAgICAgaW5jbHVkZSA6ZGF0YTpgc3lzLmZsb2F0X2luZm9gIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmBvcy5zdGF0YC4KKwogICAgdHJpcGxlLXF1b3RlZCBzdHJpbmcKICAgICAgIEEgc3RyaW5nIHdoaWNoIGlzIGJvdW5kIGJ5IHRocmVlIGluc3RhbmNlcyBvZiBlaXRoZXIgYSBxdW90YXRpb24gbWFyawogICAgICAgKCIpIG9yIGFuIGFwb3N0cm9waGUgKCcpLiAgV2hpbGUgdGhleSBkb24ndCBwcm92aWRlIGFueSBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY3BvcnRpbmcucnN0IGIvRG9jL2hvd3RvL2Nwb3J0aW5nLnJzdAppbmRleCA5ZDhhMWIwLi4xYWQ3N2Q2IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vY3BvcnRpbmcucnN0CisrKyBiL0RvYy9ob3d0by9jcG9ydGluZy5yc3QKQEAgLTEwMCwyNSArMTAwLDYgQEAKIHVzZWQgaW4gUHl0aG9uIDIgd2FzIHJlbW92ZWQuICBJbiB0aGUgQy1BUEksIGBgUHlJbnRfKmBgIGZ1bmN0aW9ucwogYXJlIHJlcGxhY2VkIGJ5IHRoZWlyIGBgUHlMb25nXypgYCBlcXVpdmFsZW50cy4KIAotVGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbiBoZXJlIGlzIHVzaW5nIHRoZSBgYFB5SW50XypgYCBmdW5jdGlvbnMgYWxpYXNlZCB0bwotYGBQeUxvbmdfKmBgIGZvdW5kIGluIDpmaWxlOmBpbnRvYmplY3QuaGAuICBUaGUgYWJzdHJhY3QgYGBQeU51bWJlcl8qYGAgQVBJcwotY2FuIGFsc28gYmUgdXNlZCBpbiBzb21lIGNhc2VzLiA6OgotCi0gICAjaW5jbHVkZSAiUHl0aG9uLmgiCi0gICAjaW5jbHVkZSAiaW50b2JqZWN0LmgiCi0KLSAgIHN0YXRpYyBQeU9iamVjdCAqCi0gICBhZGRfaW50cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKLSAgICAgICBpbnQgb25lLCB0d287Ci0gICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6YWRkX2ludHMiLCAmb25lLCAmdHdvKSkKLSAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcob25lICsgdHdvKTsKLSAgIH0KLQotCiAKIE1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgc3RhdGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdCBiL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdAppbmRleCAxNjE2ZjY3Li4wYjUxM2Y5IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKKysrIGIvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CkBAIC0zNiw5ICszNiw3IEBACiBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGUgZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbgogbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZCBpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuCiBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGUgcHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcwotd2VyZSBkZWZpbmVkLiAgTm90ZSB0aGF0IGRlc2NyaXB0b3JzIGFyZSBvbmx5IGludm9rZWQgZm9yIG5ldyBzdHlsZSBvYmplY3RzIG9yCi1jbGFzc2VzIChhIGNsYXNzIGlzIG5ldyBzdHlsZSBpZiBpdCBpbmhlcml0cyBmcm9tIDpjbGFzczpgb2JqZWN0YCBvcgotOmNsYXNzOmB0eXBlYCkuCit3ZXJlIGRlZmluZWQuCiAKIERlc2NyaXB0b3JzIGFyZSBhIHBvd2VyZnVsLCBnZW5lcmFsIHB1cnBvc2UgcHJvdG9jb2wuICBUaGV5IGFyZSB0aGUgbWVjaGFuaXNtCiBiZWhpbmQgcHJvcGVydGllcywgbWV0aG9kcywgc3RhdGljIG1ldGhvZHMsIGNsYXNzIG1ldGhvZHMsIGFuZCA6ZnVuYzpgc3VwZXIoKWAuCkBAIC04OSw4ICs4Nyw2IEBACiBpcyBpbnZva2VkIGFjY29yZGluZyB0byB0aGUgcHJlY2VkZW5jZSBydWxlcyBsaXN0ZWQgYmVsb3cuCiAKIFRoZSBkZXRhaWxzIG9mIGludm9jYXRpb24gZGVwZW5kIG9uIHdoZXRoZXIgYGBvYmpgYCBpcyBhbiBvYmplY3Qgb3IgYSBjbGFzcy4KLUVpdGhlciB3YXksIGRlc2NyaXB0b3JzIG9ubHkgd29yayBmb3IgbmV3IHN0eWxlIG9iamVjdHMgYW5kIGNsYXNzZXMuICBBIGNsYXNzIGlzCi1uZXcgc3R5bGUgaWYgaXQgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YG9iamVjdGAuCiAKIEZvciBvYmplY3RzLCB0aGUgbWFjaGluZXJ5IGlzIGluIDptZXRoOmBvYmplY3QuX19nZXRhdHRyaWJ1dGVfX2Agd2hpY2gKIHRyYW5zZm9ybXMgYGBiLnhgYCBpbnRvIGBgdHlwZShiKS5fX2RpY3RfX1sneCddLl9fZ2V0X18oYiwgdHlwZShiKSlgYC4gIFRoZQpAQCAtMTE1LDcgKzExMSw2IEBACiAKICogZGVzY3JpcHRvcnMgYXJlIGludm9rZWQgYnkgdGhlIDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBtZXRob2QKICogb3ZlcnJpZGluZyA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgcHJldmVudHMgYXV0b21hdGljIGRlc2NyaXB0b3IgY2FsbHMKLSogOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggbmV3IHN0eWxlIGNsYXNzZXMgYW5kIG9iamVjdHMKICogOm1ldGg6YG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fYCBhbmQgOm1ldGg6YHR5cGUuX19nZXRhdHRyaWJ1dGVfX2AgbWFrZQogICBkaWZmZXJlbnQgY2FsbHMgdG8gOm1ldGg6YF9fZ2V0X19gLgogKiBkYXRhIGRlc2NyaXB0b3JzIGFsd2F5cyBvdmVycmlkZSBpbnN0YW5jZSBkaWN0aW9uYXJpZXMuCkBAIC0xMjgsMTAgKzEyMyw3IEBACiBgYG1gYCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBJZiBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGBgbWBgIHJldmVydHMgdG8gYQogc2VhcmNoIHVzaW5nIDptZXRoOmBvYmplY3QuX19nZXRhdHRyaWJ1dGVfX2AuCiAKLU5vdGUsIGluIFB5dGhvbiAyLjIsIGBgc3VwZXIoQiwgb2JqKS5tKClgYCB3b3VsZCBvbmx5IGludm9rZSA6bWV0aDpgX19nZXRfX2AgaWYKLWBgbWBgIHdhcyBhIGRhdGEgZGVzY3JpcHRvci4gIEluIFB5dGhvbiAyLjMsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGFsc28gZ2V0Ci1pbnZva2VkIHVubGVzcyBhbiBvbGQtc3R5bGUgY2xhc3MgaXMgaW52b2x2ZWQuICBUaGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUKLWluIDpjOmZ1bmM6YHN1cGVyX2dldGF0dHJvKClgIGluCitUaGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgaW4gOmM6ZnVuYzpgc3VwZXJfZ2V0YXR0cm8oKWAgaW4KIGBPYmplY3RzL3R5cGVvYmplY3QuYyA8aHR0cDovL3N2bi5weXRob24ub3JnL3ZpZXcvcHl0aG9uL3RydW5rL09iamVjdHMvdHlwZW9iamVjdC5jP3ZpZXc9bWFya3VwPmBfCiBhbmQgYSBwdXJlIFB5dGhvbiBlcXVpdmFsZW50IGNhbiBiZSBmb3VuZCBpbiBgR3VpZG8ncyBUdXRvcmlhbGBfLgogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKaW5kZXggZWJiYjIyOS4uZDI0MWYxYSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CisrKyBiL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdApAQCAtMjkyLDEzICsyOTIsMTQgQEAKIEFwcGx5aW5nIDpmdW5jOmBpdGVyYCB0byBhIGRpY3Rpb25hcnkgYWx3YXlzIGxvb3BzIG92ZXIgdGhlIGtleXMsIGJ1dAogZGljdGlvbmFyaWVzIGhhdmUgbWV0aG9kcyB0aGF0IHJldHVybiBvdGhlciBpdGVyYXRvcnMuICBJZiB5b3Ugd2FudCB0byBpdGVyYXRlCiBvdmVyIHZhbHVlcyBvciBrZXkvdmFsdWUgcGFpcnMsIHlvdSBjYW4gZXhwbGljaXRseSBjYWxsIHRoZQotOm1ldGg6YH5kaWN0LnZhbHVlc2Agb3IgOm1ldGg6YH5kaWN0Lml0ZW1zYCBtZXRob2RzIHRvIGdldCBhbiBhcHByb3ByaWF0ZSBpdGVyYXRvci4KKzptZXRoOmB+ZGljdC52YWx1ZXNgIG9yIDptZXRoOmB+ZGljdC5pdGVtc2AgbWV0aG9kcyB0byBnZXQgYW4gYXBwcm9wcmlhdGUKK2l0ZXJhdG9yLgogCiBUaGUgOmZ1bmM6YGRpY3RgIGNvbnN0cnVjdG9yIGNhbiBhY2NlcHQgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGEgZmluaXRlIHN0cmVhbQogb2YgYGAoa2V5LCB2YWx1ZSlgYCB0dXBsZXM6CiAKICAgICA+Pj4gTCA9IFsoJ0l0YWx5JywgJ1JvbWUnKSwgKCdGcmFuY2UnLCAnUGFyaXMnKSwgKCdVUycsICdXYXNoaW5ndG9uIERDJyldCi0gICAgPj4+IGRpY3QoaXRlcihMKSkKKyAgICA+Pj4gZGljdChpdGVyKEwpKSAgI2RvY3Rlc3Q6ICtTS0lQCiAgICAgeydJdGFseSc6ICdSb21lJywgJ1VTJzogJ1dhc2hpbmd0b24gREMnLCAnRnJhbmNlJzogJ1BhcmlzJ30KIAogRmlsZXMgYWxzbyBzdXBwb3J0IGl0ZXJhdGlvbiBieSBjYWxsaW5nIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgCkBAIC00NzgsMTMgKzQ3OSwxMCBAQAogWW91IGNvdWxkIGVxdWFsbHkgd3JpdGUgYGBmb3IgaSBpbiBnZW5lcmF0ZV9pbnRzKDUpYGAsIG9yIGBgYSxiLGMgPQogZ2VuZXJhdGVfaW50cygzKWBgLgogCi1JbnNpZGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSBgYHJldHVybmBgIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhvdXQgYQotdmFsdWUsIGFuZCBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIHByb2Nlc3Npb24gb2YgdmFsdWVzOyBhZnRlciBleGVjdXRpbmcgYQotYGByZXR1cm5gYCB0aGUgZ2VuZXJhdG9yIGNhbm5vdCByZXR1cm4gYW55IGZ1cnRoZXIgdmFsdWVzLiAgYGByZXR1cm5gYCB3aXRoIGEKLXZhbHVlLCBzdWNoIGFzIGBgcmV0dXJuIDVgYCwgaXMgYSBzeW50YXggZXJyb3IgaW5zaWRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLiAgVGhlCi1lbmQgb2YgdGhlIGdlbmVyYXRvcidzIHJlc3VsdHMgY2FuIGFsc28gYmUgaW5kaWNhdGVkIGJ5IHJhaXNpbmcKLTpleGM6YFN0b3BJdGVyYXRpb25gIG1hbnVhbGx5LCBvciBieSBqdXN0IGxldHRpbmcgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGZhbGwgb2ZmCi10aGUgYm90dG9tIG9mIHRoZSBmdW5jdGlvbi4KK0luc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bworYGByYWlzZSBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgLiAgSWYgbm8gdmFsdWUgaXMgcmV0dXJuZWQgb3IgdGhlIGJvdHRvbSBvZiB0aGUKK2Z1bmN0aW9uIGlzIHJlYWNoZWQsIHRoZSBwcm9jZXNzaW9uIG9mIHZhbHVlcyBlbmRzIGFuZCB0aGUgZ2VuZXJhdG9yIGNhbm5vdAorcmV0dXJuIGFueSBmdXJ0aGVyIHZhbHVlcy4KIAogWW91IGNvdWxkIGFjaGlldmUgdGhlIGVmZmVjdCBvZiBnZW5lcmF0b3JzIG1hbnVhbGx5IGJ5IHdyaXRpbmcgeW91ciBvd24gY2xhc3MKIGFuZCBzdG9yaW5nIGFsbCB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBnZW5lcmF0b3IgYXMgaW5zdGFuY2UgdmFyaWFibGVzLiAgRm9yCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaW5kZXgucnN0IGIvRG9jL2hvd3RvL2luZGV4LnJzdAppbmRleCBhMTFkM2RhLi5mNDRlOGMwIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vaW5kZXgucnN0CisrKyBiL0RvYy9ob3d0by9pbmRleC5yc3QKQEAgLTI4LDQgKzI4LDUgQEAKICAgIHVybGxpYjIucnN0CiAgICB3ZWJzZXJ2ZXJzLnJzdAogICAgYXJncGFyc2UucnN0CisgICBpcGFkZHJlc3MucnN0CiAKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9pcGFkZHJlc3MucnN0IGIvRG9jL2hvd3RvL2lwYWRkcmVzcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUwZmYzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9ob3d0by9pcGFkZHJlc3MucnN0CkBAIC0wLDAgKzEsMzQxIEBACisuLiBfaXBhZGRyZXNzLWhvd3RvOgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0FuIGludHJvZHVjdGlvbiB0byB0aGUgaXBhZGRyZXNzIG1vZHVsZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzphdXRob3I6IFBldGVyIE1vb2R5Cis6YXV0aG9yOiBOaWNrIENvZ2hsYW4KKworLi4gdG9waWM6OiBPdmVydmlldworCisgICBUaGlzIGRvY3VtZW50IGFpbXMgdG8gcHJvdmlkZSBhIGdlbnRsZSBpbnRyb2R1Y3Rpb24gdG8gdGhlCisgICA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZS4gSXQgaXMgYWltZWQgcHJpbWFyaWx5IGF0IHVzZXJzIHRoYXQgYXJlbid0CisgICBhbHJlYWR5IGZhbWlsaWFyIHdpdGggSVAgbmV0d29ya2luZyB0ZXJtaW5vbG9neSwgYnV0IG1heSBhbHNvIGJlIHVzZWZ1bAorICAgdG8gbmV0d29yayBlbmdpbmVlcnMgd2FudGluZyBhbiBvdmVydmlldyBvZiBob3cgOm1vZDpgaXBhZGRyZXNzYAorICAgcmVwcmVzZW50cyBJUCBuZXR3b3JrIGFkZHJlc3NpbmcgY29uY2VwdHMuCisKKworQ3JlYXRpbmcgQWRkcmVzcy9OZXR3b3JrL0ludGVyZmFjZSBvYmplY3RzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2luY2UgOm1vZDpgaXBhZGRyZXNzYCBpcyBhIG1vZHVsZSBmb3IgaW5zcGVjdGluZyBhbmQgbWFuaXB1bGF0aW5nIElQIGFkZHJlc3NlcywKK3RoZSBmaXJzdCB0aGluZyB5b3UnbGwgd2FudCB0byBkbyBpcyBjcmVhdGUgc29tZSBvYmplY3RzLiAgWW91IGNhbiB1c2UKKzptb2Q6YGlwYWRkcmVzc2AgdG8gY3JlYXRlIG9iamVjdHMgZnJvbSBzdHJpbmdzIGFuZCBpbnRlZ2Vycy4KKworCitBIE5vdGUgb24gSVAgVmVyc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgcmVhZGVycyB0aGF0IGFyZW4ndCBwYXJ0aWN1bGFybHkgZmFtaWxpYXIgd2l0aCBJUCBhZGRyZXNzaW5nLCBpdCdzCitpbXBvcnRhbnQgdG8ga25vdyB0aGF0IHRoZSBJbnRlcm5ldCBQcm90b2NvbCBpcyBjdXJyZW50bHkgaW4gdGhlIHByb2Nlc3MKK29mIG1vdmluZyBmcm9tIHZlcnNpb24gNCBvZiB0aGUgcHJvdG9jb2wgdG8gdmVyc2lvbiA2LiBUaGlzIHRyYW5zaXRpb24gaXMKK29jY3VycmluZyBsYXJnZWx5IGJlY2F1c2UgdmVyc2lvbiA0IG9mIHRoZSBwcm90b2NvbCBkb2Vzbid0IHByb3ZpZGUgZW5vdWdoCithZGRyZXNzZXMgdG8gaGFuZGxlIHRoZSBuZWVkcyBvZiB0aGUgd2hvbGUgd29ybGQsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlCitpbmNyZWFzaW5nIG51bWJlciBvZiBkZXZpY2VzIHdpdGggZGlyZWN0IGNvbm5lY3Rpb25zIHRvIHRoZSBpbnRlcm5ldC4KKworRXhwbGFpbmluZyB0aGUgZGV0YWlscyBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIHZlcnNpb25zIG9mIHRoZQorcHJvdG9jb2wgaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIGludHJvZHVjdGlvbiwgYnV0IHJlYWRlcnMgbmVlZCB0byBhdAorbGVhc3QgYmUgYXdhcmUgdGhhdCB0aGVzZSB0d28gdmVyc2lvbnMgZXhpc3QsIGFuZCBpdCB3aWxsIHNvbWV0aW1lcyBiZQorbmVjZXNzYXJ5IHRvIGZvcmNlIHRoZSB1c2Ugb2Ygb25lIHZlcnNpb24gb3IgdGhlIG90aGVyLgorCisKK0lQIEhvc3QgQWRkcmVzc2VzCistLS0tLS0tLS0tLS0tLS0tLQorCitBZGRyZXNzZXMsIG9mdGVuIHJlZmVycmVkIHRvIGFzICJob3N0IGFkZHJlc3NlcyIgYXJlIHRoZSBtb3N0IGJhc2ljIHVuaXQKK3doZW4gd29ya2luZyB3aXRoIElQIGFkZHJlc3NpbmcuIFRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGFkZHJlc3NlcyBpcwordG8gdXNlIHRoZSA6ZnVuYzpgaXBhZGRyZXNzLmlwX2FkZHJlc3NgIGZhY3RvcnkgZnVuY3Rpb24sIHdoaWNoIGF1dG9tYXRpY2FsbHkKK2RldGVybWluZXMgd2hldGhlciB0byBjcmVhdGUgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MgYmFzZWQgb24gdGhlIHBhc3NlZCBpbgordmFsdWU6CisKKy4uIHRlc3RzZXR1cDo6CisgICA+Pj4gaW1wb3J0IGlwYWRkcmVzcworCis6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKworQWRkcmVzc2VzIGNhbiBhbHNvIGJlIGNyZWF0ZWQgZGlyZWN0bHkgZnJvbSBpbnRlZ2Vycy4gVmFsdWVzIHRoYXQgd2lsbAorZml0IHdpdGhpbiAzMiBiaXRzIGFyZSBhc3N1bWVkIHRvIGJlIElQdjQgYWRkcmVzc2VzOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDMyMjEyMjU5ODUpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcyg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MSkKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisKK1RvIGZvcmNlIHRoZSB1c2Ugb2YgSVB2NCBvciBJUHY2IGFkZHJlc3NlcywgdGhlIHJlbGV2YW50IGNsYXNzZXMgY2FuIGJlCitpbnZva2VkIGRpcmVjdGx5LiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgdG8gZm9yY2UgY3JlYXRpb24gb2YgSVB2NgorYWRkcmVzc2VzIGZvciBzbWFsbCBpbnRlZ2Vyczo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygxKQorICAgSVB2NEFkZHJlc3MoJzAuMC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygxKQorICAgSVB2NEFkZHJlc3MoJzAuMC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygxKQorICAgSVB2NkFkZHJlc3MoJzo6MScpCisKKworRGVmaW5pbmcgTmV0d29ya3MKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0hvc3QgYWRkcmVzc2VzIGFyZSB1c3VhbGx5IGdyb3VwZWQgdG9nZXRoZXIgaW50byBJUCBuZXR3b3Jrcywgc28KKzptb2Q6YGlwYWRkcmVzc2AgcHJvdmlkZXMgYSB3YXkgdG8gY3JlYXRlLCBpbnNwZWN0IGFuZCBtYW5pcHVsYXRlIG5ldHdvcmsKK2RlZmluaXRpb25zLiBJUCBuZXR3b3JrIG9iamVjdHMgYXJlIGNvbnN0cnVjdGVkIGZyb20gc3RyaW5ncyB0aGF0IGRlZmluZSB0aGUKK3JhbmdlIG9mIGhvc3QgYWRkcmVzc2VzIHRoYXQgYXJlIHBhcnQgb2YgdGhhdCBuZXR3b3JrLiBUaGUgc2ltcGxlc3QgZm9ybQorZm9yIHRoYXQgaW5mb3JtYXRpb24gaXMgYSAibmV0d29yayBhZGRyZXNzL25ldHdvcmsgcHJlZml4IiBwYWlyLCB3aGVyZSB0aGUKK3ByZWZpeCBkZWZpbmVzIHRoZSBudW1iZXIgb2YgbGVhZGluZyBiaXRzIHRoYXQgYXJlIGNvbXBhcmVkIHRvIGRldGVybWluZQord2hldGhlciBvciBub3QgYW4gYWRkcmVzcyBpcyBwYXJ0IG9mIHRoZSBuZXR3b3JrIGFuZCB0aGUgbmV0d29yayBhZGRyZXNzCitkZWZpbmVzIHRoZSBleHBlY3RlZCB2YWx1ZSBvZiB0aG9zZSBiaXRzLgorCitBcyBmb3IgYWRkcmVzc2VzLCBhIGZhY3RvcnkgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdGhhdCBkZXRlcm1pbmVzIHRoZSBjb3JyZWN0CitJUCB2ZXJzaW9uIGF1dG9tYXRpY2FsbHk6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQorICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorCitOZXR3b3JrIG9iamVjdHMgY2Fubm90IGhhdmUgYW55IGhvc3QgYml0cyBzZXQuICBUaGUgcHJhY3RpY2FsIGVmZmVjdCBvZiB0aGlzCitpcyB0aGF0IGBgMTkyLjAuMi4xLzI0YGAgZG9lcyBub3QgZGVzY3JpYmUgYSBuZXR3b3JrLiAgU3VjaCBkZWZpbml0aW9ucyBhcmUKK3JlZmVycmVkIHRvIGFzIGludGVyZmFjZSBvYmplY3RzIHNpbmNlIHRoZSBpcC1vbi1hLW5ldHdvcmsgbm90YXRpb24gaXMKK2NvbW1vbmx5IHVzZWQgdG8gZGVzY3JpYmUgbmV0d29yayBpbnRlcmZhY2VzIG9mIGEgY29tcHV0ZXIgb24gYSBnaXZlbiBuZXR3b3JrCithbmQgYXJlIGRlc2NyaWJlZCBmdXJ0aGVyIGluIHRoZSBuZXh0IHNlY3Rpb24uCisKK0J5IGRlZmF1bHQsIGF0dGVtcHRpbmcgdG8gY3JlYXRlIGEgbmV0d29yayBvYmplY3Qgd2l0aCBob3N0IGJpdHMgc2V0IHdpbGwKK3Jlc3VsdCBpbiA6ZXhjOmBWYWx1ZUVycm9yYCBiZWluZyByYWlzZWQuIFRvIHJlcXVlc3QgdGhhdCB0aGUKK2FkZGl0aW9uYWwgYml0cyBpbnN0ZWFkIGJlIGNvZXJjZWQgdG8gemVybywgdGhlIGZsYWcgYGBzdHJpY3Q9RmFsc2VgYCBjYW4KK2JlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3I6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMS8yNCcpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgIFZhbHVlRXJyb3I6IDE5Mi4wLjIuMS8yNCBoYXMgaG9zdCBiaXRzIHNldAorICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjEvMjQnLCBzdHJpY3Q9RmFsc2UpCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKworV2hpbGUgdGhlIHN0cmluZyBmb3JtIG9mZmVycyBzaWduaWZpY2FudGx5IG1vcmUgZmxleGliaWxpdHksIG5ldHdvcmtzIGNhbgorYWxzbyBiZSBkZWZpbmVkIHdpdGggaW50ZWdlcnMsIGp1c3QgbGlrZSBob3N0IGFkZHJlc3Nlcy4gSW4gdGhpcyBjYXNlLCB0aGUKK25ldHdvcmsgaXMgY29uc2lkZXJlZCB0byBjb250YWluIG9ubHkgdGhlIHNpbmdsZSBhZGRyZXNzIGlkZW50aWZpZWQgYnkgdGhlCitpbnRlZ2VyLCBzbyB0aGUgbmV0d29yayBwcmVmaXggaW5jbHVkZXMgdGhlIGVudGlyZSBuZXR3b3JrIGFkZHJlc3M6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoMzIyMTIyNTk4NCkKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKQorICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwKQorICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKKworQXMgd2l0aCBhZGRyZXNzZXMsIGNyZWF0aW9uIG9mIGEgcGFydGljdWxhciBraW5kIG9mIG5ldHdvcmsgY2FuIGJlIGZvcmNlZAorYnkgY2FsbGluZyB0aGUgY2xhc3MgY29uc3RydWN0b3IgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyB0aGUgZmFjdG9yeQorZnVuY3Rpb24uCisKKworSG9zdCBJbnRlcmZhY2VzCistLS0tLS0tLS0tLS0tLS0KKworQXMgbWVudGlvbmVkIGp1c3QgYWJvdmUsIGlmIHlvdSBuZWVkIHRvIGRlc2NyaWJlIGFuIGFkZHJlc3Mgb24gYSBwYXJ0aWN1bGFyCituZXR3b3JrLCBuZWl0aGVyIHRoZSBhZGRyZXNzIG5vciB0aGUgbmV0d29yayBjbGFzc2VzIGFyZSBzdWZmaWNpZW50LgorTm90YXRpb24gbGlrZSBgYDE5Mi4wLjIuMS8yNGBgIGlzIGNvbW1vbmx5IHVzZWQgYnkgbmV0d29yayBlbmdpbmVlcnMgYW5kIHRoZQorcGVvcGxlIHdobyB3cml0ZSB0b29scyBmb3IgZmlyZXdhbGxzIGFuZCByb3V0ZXJzIGFzIHNob3J0aGFuZCBmb3IgInRoZSBob3N0CitgYDE5Mi4wLjIuMWBgIG9uIHRoZSBuZXR3b3JrIGBgMTkyLjAuMi4wLzI0YGAiLCBBY2NvcmRpbmdseSwgOm1vZDpgaXBhZGRyZXNzYAorcHJvdmlkZXMgYSBzZXQgb2YgaHlicmlkIGNsYXNzZXMgdGhhdCBhc3NvY2lhdGUgYW4gYWRkcmVzcyB3aXRoIGEgcGFydGljdWxhcgorbmV0d29yay4gVGhlIGludGVyZmFjZSBmb3IgY3JlYXRpb24gaXMgaWRlbnRpY2FsIHRvIHRoYXQgZm9yIGRlZmluaW5nIG5ldHdvcmsKK29iamVjdHMsIGV4Y2VwdCB0aGF0IHRoZSBhZGRyZXNzIHBvcnRpb24gaXNuJ3QgY29uc3RyYWluZWQgdG8gYmVpbmcgYSBuZXR3b3JrCithZGRyZXNzLgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykKKyAgIElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQorICAgSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQorCitJbnRlZ2VyIGlucHV0cyBhcmUgYWNjZXB0ZWQgKGFzIHdpdGggbmV0d29ya3MpLCBhbmQgdXNlIG9mIGEgcGFydGljdWxhciBJUAordmVyc2lvbiBjYW4gYmUgZm9yY2VkIGJ5IGNhbGxpbmcgdGhlIHJlbGV2YW50IGNvbnN0cnVjdG9yIGRpcmVjdGx5LgorCisKK0luc3BlY3RpbmcgQWRkcmVzcy9OZXR3b3JrL0ludGVyZmFjZSBPYmplY3RzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitZb3UndmUgZ29uZSB0byB0aGUgdHJvdWJsZSBvZiBjcmVhdGluZyBhbiBJUHYoNHw2KShBZGRyZXNzfE5ldHdvcmt8SW50ZXJmYWNlKQorb2JqZWN0LCBzbyB5b3UgcHJvYmFibHkgd2FudCB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgaXQuICA6bW9kOmBpcGFkZHJlc3NgCit0cmllcyB0byBtYWtlIGRvaW5nIHRoaXMgZWFzeSBhbmQgaW50dWl0aXZlLgorCitFeHRyYWN0aW5nIHRoZSBJUCB2ZXJzaW9uOjoKKworICAgPj4+IGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OjEnKQorICAgPj4+IGFkZHI2LnZlcnNpb24KKyAgIDYKKyAgID4+PiBhZGRyNC52ZXJzaW9uCisgICA0CisKK09idGFpbmluZyB0aGUgbmV0d29yayBmcm9tIGFuIGludGVyZmFjZTo6CisKKyAgID4+PiBob3N0NCA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpCisgICA+Pj4gaG9zdDQubmV0d29yaworICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gaG9zdDYgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCisgICA+Pj4gaG9zdDYubmV0d29yaworICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorCitGaW5kaW5nIG91dCBob3cgbWFueSBpbmRpdmlkdWFsIGFkZHJlc3NlcyBhcmUgaW4gYSBuZXR3b3JrOjoKKworICAgPj4+IG5ldDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBuZXQ0Lm51bV9hZGRyZXNzZXMKKyAgIDI1NgorICAgPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQorICAgPj4+IG5ldDYubnVtX2FkZHJlc3NlcworICAgNDI5NDk2NzI5NgorCitJdGVyYXRpbmcgdGhyb3VnaCB0aGUgInVzYWJsZSIgYWRkcmVzc2VzIG9uIGEgbmV0d29yazo6CisKKyAgID4+PiBuZXQ0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gZm9yIHggaW4gbmV0NC5ob3N0cygpOgorICAgLi4uICAgICBwcmludCh4KSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKKyAgIDE5Mi4wLjIuMQorICAgMTkyLjAuMi4yCisgICAxOTIuMC4yLjMKKyAgIDE5Mi4wLjIuNAorICAgLi4uCisgICAxOTIuMC4yLjI1MgorICAgMTkyLjAuMi4yNTMKKyAgIDE5Mi4wLjIuMjU0CisKKworT2J0YWluaW5nIHRoZSBuZXRtYXNrIChpLmUuIHNldCBiaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldHdvcmsgcHJlZml4KSBvcgordGhlIGhvc3RtYXNrIChhbnkgYml0cyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgbmV0bWFzayk6CisKKyAgID4+PiBuZXQ0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gbmV0NC5uZXRtYXNrCisgICBJUHY0QWRkcmVzcygnMjU1LjI1NS4yNTUuMCcpCisgICA+Pj4gbmV0NC5ob3N0bWFzaworICAgSVB2NEFkZHJlc3MoJzAuMC4wLjI1NScpCisgICA+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCisgICA+Pj4gbmV0Ni5uZXRtYXNrCisgICBJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCisgICA+Pj4gbmV0Ni5ob3N0bWFzaworICAgSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmJykKKworCitFeHBsb2Rpbmcgb3IgY29tcHJlc3NpbmcgdGhlIGFkZHJlc3M6OgorCisgICA+Pj4gYWRkcjYuZXhwbG9kZWQKKyAgICcyMDAxOjBkYjg6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDEnCisgICA+Pj4gYWRkcjYuY29tcHJlc3NlZAorICAgJzIwMDE6ZGI4OjoxJworICAgPj4+IG5ldDYuZXhwbG9kZWQKKyAgICcyMDAxOjBkYjg6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvOTYnCisgICA+Pj4gbmV0Ni5jb21wcmVzc2VkCisgICAnMjAwMTpkYjg6Oi85NicKKworV2hpbGUgSVB2NCBkb2Vzbid0IHN1cHBvcnQgZXhwbG9zaW9uIG9yIGNvbXByZXNzaW9uLCB0aGUgYXNzb2NpYXRlZCBvYmplY3RzCitzdGlsbCBwcm92aWRlIHRoZSByZWxldmFudCBwcm9wZXJ0aWVzIHNvIHRoYXQgdmVyc2lvbiBuZXV0cmFsIGNvZGUgY2FuCitlYXNpbHkgZW5zdXJlIHRoZSBtb3N0IGNvbmNpc2Ugb3IgbW9zdCB2ZXJib3NlIGZvcm0gaXMgdXNlZCBmb3IgSVB2NgorYWRkcmVzc2VzIHdoaWxlIHN0aWxsIGNvcnJlY3RseSBoYW5kbGluZyBJUHY0IGFkZHJlc3Nlcy4KKworCitOZXR3b3JrcyBhcyBsaXN0cyBvZiBBZGRyZXNzZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJdCdzIHNvbWV0aW1lcyB1c2VmdWwgdG8gdHJlYXQgbmV0d29ya3MgYXMgbGlzdHMuICBUaGlzIG1lYW5zIGl0IGlzIHBvc3NpYmxlCit0byBpbmRleCB0aGVtIGxpa2UgdGhpczo6CisKKyAgID4+PiBuZXQ0WzFdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBuZXQ0Wy0xXQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMjU1JykKKyAgID4+PiBuZXQ2WzFdCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQorICAgPj4+IG5ldDZbLTFdCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OmZmZmY6ZmZmZicpCisKKworSXQgYWxzbyBtZWFucyB0aGF0IG5ldHdvcmsgb2JqZWN0cyBsZW5kIHRoZW1zZWx2ZXMgdG8gdXNpbmcgdGhlIGxpc3QKK21lbWJlcnNoaXAgdGVzdCBzeW50YXggbGlrZSB0aGlzOjoKKworICAgaWYgYWRkcmVzcyBpbiBuZXR3b3JrOgorICAgICAgICMgZG8gc29tZXRoaW5nCisKK0NvbnRhaW5tZW50IHRlc3RpbmcgaXMgZG9uZSBlZmZpY2llbnRseSBiYXNlZCBvbiB0aGUgbmV0d29yayBwcmVmaXg6OgorCisgICA+Pj4gYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBhZGRyNCBpbiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgIFRydWUKKyAgID4+PiBhZGRyNCBpbiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMy4wLzI0JykKKyAgIEZhbHNlCisKKworQ29tcGFyaXNvbnMKKz09PT09PT09PT09CisKKzptb2Q6YGlwYWRkcmVzc2AgcHJvdmlkZXMgc29tZSBzaW1wbGUsIGhvcGVmdWxseSBpbnR1aXRpdmUgd2F5cyB0byBjb21wYXJlCitvYmplY3RzLCB3aGVyZSBpdCBtYWtlcyBzZW5zZTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykgPCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4yJykKKyAgIFRydWUKKworQSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgeW91IHRyeSB0byBjb21wYXJlIG9iamVjdHMgb2YKK2RpZmZlcmVudCB2ZXJzaW9ucyBvciBkaWZmZXJlbnQgdHlwZXMuCisKKworVXNpbmcgSVAgQWRkcmVzc2VzIHdpdGggb3RoZXIgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPdGhlciBtb2R1bGVzIHRoYXQgdXNlIElQIGFkZHJlc3NlcyAoc3VjaCBhcyA6bW9kOmBzb2NrZXRgKSB1c3VhbGx5IHdvbid0CithY2NlcHQgb2JqZWN0cyBmcm9tIHRoaXMgbW9kdWxlIGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IG11c3QgYmUgY29lcmNlZCB0bworYW4gaW50ZWdlciBvciBzdHJpbmcgdGhhdCB0aGUgb3RoZXIgbW9kdWxlIHdpbGwgYWNjZXB0OjoKKworICAgPj4+IGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gc3RyKGFkZHI0KQorICAgJzE5Mi4wLjIuMScKKyAgID4+PiBpbnQoYWRkcjQpCisgICAzMjIxMjI1OTg1CisKKworR2V0dGluZyBtb3JlIGRldGFpbCB3aGVuIGluc3RhbmNlIGNyZWF0aW9uIGZhaWxzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBjcmVhdGluZyBhZGRyZXNzL25ldHdvcmsvaW50ZXJmYWNlIG9iamVjdHMgdXNpbmcgdGhlIHZlcnNpb24tYWdub3N0aWMKK2ZhY3RvcnkgZnVuY3Rpb25zLCBhbnkgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWQgYXMgOmV4YzpgVmFsdWVFcnJvcmAgd2l0aAorYSBnZW5lcmljIGVycm9yIG1lc3NhZ2UgdGhhdCBzaW1wbHkgc2F5cyB0aGUgcGFzc2VkIGluIHZhbHVlIHdhcyBub3QKK3JlY29nbml6ZWQgYXMgYW4gb2JqZWN0IG9mIHRoYXQgdHlwZS4gVGhlIGxhY2sgb2YgYSBzcGVjaWZpYyBlcnJvciBpcworYmVjYXVzZSBpdCdzIG5lY2Vzc2FyeSB0byBrbm93IHdoZXRoZXIgdGhlIHZhbHVlIGlzICpzdXBwb3NlZCogdG8gYmUgSVB2NAorb3IgSVB2NiBpbiBvcmRlciB0byBwcm92aWRlIG1vcmUgZGV0YWlsIG9uIHdoeSBpdCBoYXMgYmVlbiByZWplY3RlZC4KKworVG8gc3VwcG9ydCB1c2UgY2FzZXMgd2hlcmUgaXQgaXMgdXNlZnVsIHRvIGhhdmUgYWNjZXNzIHRvIHRoaXMgYWRkaXRpb25hbAorZGV0YWlsLCB0aGUgaW5kaXZpZHVhbCBjbGFzcyBjb25zdHJ1Y3RvcnMgYWN0dWFsbHkgcmFpc2UgdGhlCis6ZXhjOmBWYWx1ZUVycm9yYCBzdWJjbGFzc2VzIDpleGM6YGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvcmAgYW5kCis6ZXhjOmBpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3JgIHRvIGluZGljYXRlIGV4YWN0bHkgd2hpY2ggcGFydCBvZgordGhlIGRlZmluaXRpb24gZmFpbGVkIHRvIHBhcnNlIGNvcnJlY3RseS4KKworVGhlIGVycm9yIG1lc3NhZ2VzIGFyZSBzaWduaWZpY2FudGx5IG1vcmUgZGV0YWlsZWQgd2hlbiB1c2luZyB0aGUKK2NsYXNzIGNvbnN0cnVjdG9ycyBkaXJlY3RseS4gRm9yIGV4YW1wbGU6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjE5Mi4xNjguMC4yNTYiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFZhbHVlRXJyb3I6ICcxOTIuMTY4LjAuMjU2JyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoIjE5Mi4xNjguMC4yNTYiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvcjogT2N0ZXQgMjU2ICg+IDI1NSkgbm90IHBlcm1pdHRlZCBpbiAnMTkyLjE2OC4wLjI1NicKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCIxOTIuMTY4LjAuMS82NCIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgVmFsdWVFcnJvcjogJzE5Mi4xNjguMC4xLzY0JyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IG5ldHdvcmsKKyAgID4+PiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoIjE5Mi4xNjguMC4xLzY0IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3I6ICc2NCcgaXMgbm90IGEgdmFsaWQgbmV0bWFzaworCitIb3dldmVyLCBib3RoIG9mIHRoZSBtb2R1bGUgc3BlY2lmaWMgZXhjZXB0aW9ucyBoYXZlIDpleGM6YFZhbHVlRXJyb3JgIGFzIHRoZWlyCitwYXJlbnQgY2xhc3MsIHNvIGlmIHlvdSdyZSBub3QgY29uY2VybmVkIHdpdGggdGhlIHBhcnRpY3VsYXIgdHlwZSBvZiBlcnJvciwKK3lvdSBjYW4gc3RpbGwgd3JpdGUgY29kZSBsaWtlIHRoZSBmb2xsb3dpbmc6OgorCisgICB0cnk6CisgICAgICAgbmV0d29yayA9IGlwYWRkcmVzcy5JUHY0TmV0d29yayhhZGRyZXNzKQorICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgcHJpbnQoJ2FkZHJlc3MvbmV0bWFzayBpcyBpbnZhbGlkIGZvciBJUHY0OicsIGFkZHJlc3MpCisKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdCBiL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAppbmRleCAzNzBjNzU3Li45MmFmMGVjIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKKysrIGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CkBAIC0xMzE2LDYgKzEzMTYsMzMgQEAKIHNlY3Rpb24gPGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjMvdG9waWNzL2xvZ2dpbmcvI2NvbmZpZ3VyaW5nLWxvZ2dpbmc+YF8KIG9mIHRoZSBEamFuZ28gZG9jdW1lbnRhdGlvbi4KIAorLi4gX2Nvb2tib29rLXJvdGF0b3ItbmFtZXI6CisKK1VzaW5nIGEgcm90YXRvciBhbmQgbmFtZXIgdG8gY3VzdG9taXNlIGxvZyByb3RhdGlvbiBwcm9jZXNzaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBleGFtcGxlIG9mIGhvdyB5b3UgY2FuIGRlZmluZSBhIG5hbWVyIGFuZCByb3RhdG9yIGlzIGdpdmVuIGluIHRoZSBmb2xsb3dpbmcKK3NuaXBwZXQsIHdoaWNoIHNob3dzIHpsaWItYmFzZWQgY29tcHJlc3Npb24gb2YgdGhlIGxvZyBmaWxlOjoKKworICAgIGRlZiBuYW1lcihuYW1lKToKKyAgICAgICAgcmV0dXJuIG5hbWUgKyAiLmd6IgorCisgICAgZGVmIHJvdGF0b3Ioc291cmNlLCBkZXN0KToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgInJiIikgYXMgc2Y6CisgICAgICAgICAgICBkYXRhID0gc2YucmVhZCgpCisgICAgICAgICAgICBjb21wcmVzc2VkID0gemxpYi5jb21wcmVzcyhkYXRhLCA5KQorICAgICAgICAgICAgd2l0aCBvcGVuKGRlc3QsICJ3YiIpIGFzIGRmOgorICAgICAgICAgICAgICAgIGRmLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgIG9zLnJlbW92ZShzb3VyY2UpCisKKyAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlciguLi4pCisgICAgcmgucm90YXRvciA9IHJvdGF0b3IKKyAgICByaC5uYW1lciA9IG5hbWVyCisKK1RoZXNlIGFyZSBub3QgInRydWUiIC5neiBmaWxlcywgYXMgdGhleSBhcmUgYmFyZSBjb21wcmVzc2VkIGRhdGEsIHdpdGggbm8KKyJjb250YWluZXIiIHN1Y2ggYXMgeW914oCZZCBmaW5kIGluIGFuIGFjdHVhbCBnemlwIGZpbGUuIFRoaXMgc25pcHBldCBpcyBqdXN0Citmb3IgaWxsdXN0cmF0aW9uIHB1cnBvc2VzLgorCiBBIG1vcmUgZWxhYm9yYXRlIG11bHRpcHJvY2Vzc2luZyBleGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE1NzIsNyArMTU5OSw3IEBACiAKICAgICAgICdBU0NJSSBzZWN0aW9uXHVmZWZmVW5pY29kZSBzZWN0aW9uJwogCi0gICBUaGUgVW5pY29kZSBjb2RlIHBvaW50IGBgJ1xmZWZmYGBgLCB3aGVuIGVuY29kZWQgdXNpbmcgVVRGLTgsIHdpbGwgYmUKKyAgIFRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYGAnXGZlZmYnYGAsIHdoZW4gZW5jb2RlZCB1c2luZyBVVEYtOCwgd2lsbCBiZQogICAgZW5jb2RlZCBhcyBhIFVURi04IEJPTSAtLSB0aGUgYnl0ZS1zdHJpbmcgYGBiJ1x4ZWZceGJiXHhiZidgYC4KIAogIy4gUmVwbGFjZSB0aGUgQVNDSUkgc2VjdGlvbiB3aXRoIHdoYXRldmVyIHBsYWNlaG9sZGVycyB5b3UgbGlrZSwgYnV0IG1ha2Ugc3VyZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3NvY2tldHMucnN0IGIvRG9jL2hvd3RvL3NvY2tldHMucnN0CmluZGV4IDI3OWJiM2UuLmNhNjUyOGIgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9zb2NrZXRzLnJzdAorKysgYi9Eb2MvaG93dG8vc29ja2V0cy5yc3QKQEAgLTI1LDggKzI1LDggQEAKIHdvcmtpbmcuIEl0IGRvZXNuJ3QgY292ZXIgdGhlIGZpbmUgcG9pbnRzIChhbmQgdGhlcmUgYXJlIGEgbG90IG9mIHRoZW0pLCBidXQgSQogaG9wZSBpdCB3aWxsIGdpdmUgeW91IGVub3VnaCBiYWNrZ3JvdW5kIHRvIGJlZ2luIHVzaW5nIHRoZW0gZGVjZW50bHkuCiAKLUknbSBvbmx5IGdvaW5nIHRvIHRhbGsgYWJvdXQgSU5FVCBzb2NrZXRzLCBidXQgdGhleSBhY2NvdW50IGZvciBhdCBsZWFzdCA5OSUgb2YKLXRoZSBzb2NrZXRzIGluIHVzZS4gQW5kIEknbGwgb25seSB0YWxrIGFib3V0IFNUUkVBTSBzb2NrZXRzIC0gdW5sZXNzIHlvdSByZWFsbHkKK0knbSBvbmx5IGdvaW5nIHRvIHRhbGsgYWJvdXQgSU5FVCAoaS5lLiBJUHY0KSBzb2NrZXRzLCBidXQgdGhleSBhY2NvdW50IGZvciBhdCBsZWFzdCA5OSUgb2YKK3RoZSBzb2NrZXRzIGluIHVzZS4gQW5kIEknbGwgb25seSB0YWxrIGFib3V0IFNUUkVBTSAoaS5lLiBUQ1ApIHNvY2tldHMgLSB1bmxlc3MgeW91IHJlYWxseQoga25vdyB3aGF0IHlvdSdyZSBkb2luZyAoaW4gd2hpY2ggY2FzZSB0aGlzIEhPV1RPIGlzbid0IGZvciB5b3UhKSwgeW91J2xsIGdldAogYmV0dGVyIGJlaGF2aW9yIGFuZCBwZXJmb3JtYW5jZSBmcm9tIGEgU1RSRUFNIHNvY2tldCB0aGFuIGFueXRoaW5nIGVsc2UuIEkgd2lsbAogdHJ5IHRvIGNsZWFyIHVwIHRoZSBteXN0ZXJ5IG9mIHdoYXQgYSBzb2NrZXQgaXMsIGFzIHdlbGwgYXMgc29tZSBoaW50cyBvbiBob3cgdG8KQEAgLTIwOCwxMCArMjA4LDEwIEBACiAgICAgICAgICAgICAgICB0b3RhbHNlbnQgPSB0b3RhbHNlbnQgKyBzZW50CiAKICAgICAgICBkZWYgbXlyZWNlaXZlKHNlbGYpOgotICAgICAgICAgICBtc2cgPSAnJworICAgICAgICAgICBtc2cgPSBiJycKICAgICAgICAgICAgd2hpbGUgbGVuKG1zZykgPCBNU0dMRU46CiAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuc29jay5yZWN2KE1TR0xFTi1sZW4obXNnKSkKLSAgICAgICAgICAgICAgIGlmIGNodW5rID09ICcnOgorICAgICAgICAgICAgICAgaWYgY2h1bmsgPT0gYicnOgogICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic29ja2V0IGNvbm5lY3Rpb24gYnJva2VuIikKICAgICAgICAgICAgICAgIG1zZyA9IG1zZyArIGNodW5rCiAgICAgICAgICAgIHJldHVybiBtc2cKQEAgLTM3MSwxMiArMzcxLDYgQEAKIHBvdGVudGlhbF93cml0ZXJzIGxpc3QuIElmIGl0IHNob3dzIHVwIGluIHRoZSB3cml0YWJsZSBsaXN0LCB5b3UgaGF2ZSBhIGRlY2VudAogY2hhbmNlIHRoYXQgaXQgaGFzIGNvbm5lY3RlZC4KIAotT25lIHZlcnkgbmFzdHkgcHJvYmxlbSB3aXRoIGBgc2VsZWN0YGA6IGlmIHNvbWV3aGVyZSBpbiB0aG9zZSBpbnB1dCBsaXN0cyBvZgotc29ja2V0cyBpcyBvbmUgd2hpY2ggaGFzIGRpZWQgYSBuYXN0eSBkZWF0aCwgdGhlIGBgc2VsZWN0YGAgd2lsbCBmYWlsLiBZb3UgdGhlbgotbmVlZCB0byBsb29wIHRocm91Z2ggZXZlcnkgc2luZ2xlIGRhbW4gc29ja2V0IGluIGFsbCB0aG9zZSBsaXN0cyBhbmQgZG8gYQotYGBzZWxlY3QoW3NvY2tdLFtdLFtdLDApYGAgdW50aWwgeW91IGZpbmQgdGhlIGJhZCBvbmUuIFRoYXQgdGltZW91dCBvZiAwIG1lYW5zCi1pdCB3b24ndCB0YWtlIGxvbmcsIGJ1dCBpdCdzIHVnbHkuCi0KIEFjdHVhbGx5LCBgYHNlbGVjdGBgIGNhbiBiZSBoYW5keSBldmVuIHdpdGggYmxvY2tpbmcgc29ja2V0cy4gSXQncyBvbmUgd2F5IG9mCiBkZXRlcm1pbmluZyB3aGV0aGVyIHlvdSB3aWxsIGJsb2NrIC0gdGhlIHNvY2tldCByZXR1cm5zIGFzIHJlYWRhYmxlIHdoZW4gdGhlcmUncwogc29tZXRoaW5nIGluIHRoZSBidWZmZXJzLiAgSG93ZXZlciwgdGhpcyBzdGlsbCBkb2Vzbid0IGhlbHAgd2l0aCB0aGUgcHJvYmxlbSBvZgpAQCAtMzg2LDI2ICszODAsNiBAQAogZmlsZXMuIERvbid0IHRyeSB0aGlzIG9uIFdpbmRvd3MuIE9uIFdpbmRvd3MsIGBgc2VsZWN0YGAgd29ya3Mgd2l0aCBzb2NrZXRzCiBvbmx5LiBBbHNvIG5vdGUgdGhhdCBpbiBDLCBtYW55IG9mIHRoZSBtb3JlIGFkdmFuY2VkIHNvY2tldCBvcHRpb25zIGFyZSBkb25lCiBkaWZmZXJlbnRseSBvbiBXaW5kb3dzLiBJbiBmYWN0LCBvbiBXaW5kb3dzIEkgdXN1YWxseSB1c2UgdGhyZWFkcyAod2hpY2ggd29yawotdmVyeSwgdmVyeSB3ZWxsKSB3aXRoIG15IHNvY2tldHMuIEZhY2UgaXQsIGlmIHlvdSB3YW50IGFueSBraW5kIG9mIHBlcmZvcm1hbmNlLAoteW91ciBjb2RlIHdpbGwgbG9vayB2ZXJ5IGRpZmZlcmVudCBvbiBXaW5kb3dzIHRoYW4gb24gVW5peC4KK3ZlcnksIHZlcnkgd2VsbCkgd2l0aCBteSBzb2NrZXRzLgogCiAKLVBlcmZvcm1hbmNlCi0tLS0tLS0tLS0tLQotCi1UaGVyZSdzIG5vIHF1ZXN0aW9uIHRoYXQgdGhlIGZhc3Rlc3Qgc29ja2V0cyBjb2RlIHVzZXMgbm9uLWJsb2NraW5nIHNvY2tldHMgYW5kCi1zZWxlY3QgdG8gbXVsdGlwbGV4IHRoZW0uIFlvdSBjYW4gcHV0IHRvZ2V0aGVyIHNvbWV0aGluZyB0aGF0IHdpbGwgc2F0dXJhdGUgYQotTEFOIGNvbm5lY3Rpb24gd2l0aG91dCBwdXR0aW5nIGFueSBzdHJhaW4gb24gdGhlIENQVS4KLQotVGhlIHRyb3VibGUgaXMgdGhhdCBhbiBhcHAgd3JpdHRlbiB0aGlzIHdheSBjYW4ndCBkbyBtdWNoIG9mIGFueXRoaW5nIGVsc2UgLQotaXQgbmVlZHMgdG8gYmUgcmVhZHkgdG8gc2h1ZmZsZSBieXRlcyBhcm91bmQgYXQgYWxsIHRpbWVzLiBBc3N1bWluZyB0aGF0IHlvdXIKLWFwcCBpcyBhY3R1YWxseSBzdXBwb3NlZCB0byBkbyBzb21ldGhpbmcgbW9yZSB0aGFuIHRoYXQsIHRocmVhZGluZyBpcyB0aGUKLW9wdGltYWwgc29sdXRpb24sIChhbmQgdXNpbmcgbm9uLWJsb2NraW5nIHNvY2tldHMgd2lsbCBiZSBmYXN0ZXIgdGhhbiB1c2luZwotYmxvY2tpbmcgc29ja2V0cykuCi0KLUZpbmFsbHksIHJlbWVtYmVyIHRoYXQgZXZlbiB0aG91Z2ggYmxvY2tpbmcgc29ja2V0cyBhcmUgc29tZXdoYXQgc2xvd2VyIHRoYW4KLW5vbi1ibG9ja2luZywgaW4gbWFueSBjYXNlcyB0aGV5IGFyZSB0aGUgInJpZ2h0IiBzb2x1dGlvbi4gQWZ0ZXIgYWxsLCBpZiB5b3VyCi1hcHAgaXMgZHJpdmVuIGJ5IHRoZSBkYXRhIGl0IHJlY2VpdmVzIG92ZXIgYSBzb2NrZXQsIHRoZXJlJ3Mgbm90IG11Y2ggc2Vuc2UgaW4KLWNvbXBsaWNhdGluZyB0aGUgbG9naWMganVzdCBzbyB5b3VyIGFwcCBjYW4gd2FpdCBvbiBgYHNlbGVjdGBgIGluc3RlYWQgb2YKLWBgcmVjdmBgLgotCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdW5pY29kZS5yc3QgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKaW5kZXggYjMwOWY2MC4uNzUwMGRjZSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0CisrKyBiL0RvYy9ob3d0by91bmljb2RlLnJzdApAQCAtNDIyLDcgKzQyMiw3IEBACiAtLS0tLS0tLS0tCiAKIFRoZSA6Y2xhc3M6YHN0cmAgdHlwZSBpcyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBsaWJyYXJ5IHJlZmVyZW5jZSBhdAotOnJlZjpgdHlwZXNzZXFgLgorOnJlZjpgdGV4dHNlcWAuCiAKIFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOm1vZDpgdW5pY29kZWRhdGFgIG1vZHVsZS4KIApAQCAtNjE4LDcgKzYxOCw2IEBACiAgICBhbmQgdGhhdCB0aGUgSE9XVE8gb25seSBjb3ZlcnMgMi54LgogCiAuLiBjb21tZW50IERlc2NyaWJlIFB5dGhvbiAzLnggc3VwcG9ydCAobmV3IHNlY3Rpb24/IG5ldyBkb2N1bWVudD8pCi0uLiBjb21tZW50IEFkZGl0aW9uYWwgdG9waWM6IGJ1aWxkaW5nIFB5dGhvbiB3LyBVQ1MyIG9yIFVDUzQgc3VwcG9ydAogLi4gY29tbWVudCBEZXNjcmliZSB1c2Ugb2YgY29kZWNzLlN0cmVhbVJlY29kZXIgYW5kIFN0cmVhbVJlYWRlcldyaXRlcgogCiAuLiBjb21tZW50CkBAIC02NDgsNSArNjQ3LDMgQEAKICAgICAgICAtIFsgXSBXcml0aW5nIFVuaWNvZGUgcHJvZ3JhbXMKICAgICAgICAgICAgLSBbIF0gRG8gZXZlcnl0aGluZyBpbiBVbmljb2RlCiAgICAgICAgICAgIC0gWyBdIERlY2xhcmluZyBzb3VyY2UgY29kZSBlbmNvZGluZ3MgKFBFUCAyNjMpCi0gICAgICAgLSBbIF0gT3RoZXIgaXNzdWVzCi0gICAgICAgICAgIC0gWyBdIEJ1aWxkaW5nIFB5dGhvbiAoVUNTMiwgVUNTNCkKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by91cmxsaWIyLnJzdCBiL0RvYy9ob3d0by91cmxsaWIyLnJzdAppbmRleCA4N2Y0MmJhLi45NTVlNDU1IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QKKysrIGIvRG9jL2hvd3RvL3VybGxpYjIucnN0CkBAIC01Niw2ICs1NiwxMyBAQAogICAgIHJlc3BvbnNlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbignaHR0cDovL3B5dGhvbi5vcmcvJykKICAgICBodG1sID0gcmVzcG9uc2UucmVhZCgpCiAKK0lmIHlvdSB3aXNoIHRvIHJldHJpZXZlIGEgcmVzb3VyY2UgdmlhIFVSTCBhbmQgc3RvcmUgaXQgaW4gYSB0ZW1wb3JhcnkgbG9jYXRpb24sCit5b3UgY2FuIGRvIHNvIHZpYSB0aGUgOmZ1bmM6YHVybHJldHJpZXZlYCBmdW5jdGlvbjo6CisKKyAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICBsb2NhbF9maWxlbmFtZSwgaGVhZGVycyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwOi8vcHl0aG9uLm9yZy8nKQorICAgIGh0bWwgPSBvcGVuKGxvY2FsX2ZpbGVuYW1lKQorCiBNYW55IHVzZXMgb2YgdXJsbGliIHdpbGwgYmUgdGhhdCBzaW1wbGUgKG5vdGUgdGhhdCBpbnN0ZWFkIG9mIGFuICdodHRwOicgVVJMIHdlCiBjb3VsZCBoYXZlIHVzZWQgYW4gVVJMIHN0YXJ0aW5nIHdpdGggJ2Z0cDonLCAnZmlsZTonLCBldGMuKS4gIEhvd2V2ZXIsIGl0J3MgdGhlCiBwdXJwb3NlIG9mIHRoaXMgdHV0b3JpYWwgdG8gZXhwbGFpbiB0aGUgbW9yZSBjb21wbGljYXRlZCBjYXNlcywgY29uY2VudHJhdGluZyBvbgpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkgYi9Eb2MvaW5jbHVkZXMvbXBfYmVuY2htYXJrcy5weQppbmRleCBhY2RmNjQyLi4zNzYzZWE5IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvbXBfYmVuY2htYXJrcy5weQorKysgYi9Eb2MvaW5jbHVkZXMvbXBfYmVuY2htYXJrcy5weQpAQCAtNiwxNiArNiwxMiBAQAogIwogCiBpbXBvcnQgdGltZQotaW1wb3J0IHN5cwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgZ2MKIAotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgX3RpbWVyID0gdGltZS5jbG9jawotZWxzZToKLSAgICBfdGltZXIgPSB0aW1lLnRpbWUKK190aW1lciA9IHRpbWUucGVyZl9jb3VudGVyCiAKIGRlbHRhID0gMQogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKaW5kZXggOWI4ZWFmYi4uOTY0MTU1OCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTIuYwpAQCAtMjQsMTggKzI0LDE2IEBACiAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBzZWxmLT5sYXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICB9CkBAIC01MCwxMCArNDgsMTAgQEAKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlyc3QiLCAibGFzdCIsICJudW1iZXIiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PaSIsIGt3bGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsIAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPm51bWJlcikpCi0gICAgICAgIHJldHVybiAtMTsgCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChmaXJzdCkgewogICAgICAgICB0bXAgPSBzZWxmLT5maXJzdDsKQEAgLTg2LDE1ICs4NCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogTm9kZHlfbmFtZShOb2RkeSogc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImZpcnN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA1LDE0ICs5NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPTyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTICVTIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgTm9kZHlfbWV0aG9kc1tdID0gewpAQCAtMTQ1LDEyICsxMjcsMTIgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIE5vZGR5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBOb2RkeV9tZW1iZXJzLCAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0xNzMsNyArMTU1LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfbm9kZHkyKHZvaWQpIAorUHlJbml0X25vZGR5Mih2b2lkKQogewogICAgIFB5T2JqZWN0KiBtOwogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKaW5kZXggODlmM2E3Ny4uOGE1YTc1MyAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5My5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTMuYwpAQCAtMjQsMTggKzI0LDE2IEBACiAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBzZWxmLT5sYXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICB9CkBAIC01MCwxMCArNDgsMTAgQEAKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlyc3QiLCAibGFzdCIsICJudW1iZXIiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifFNTaSIsIGt3bGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsIAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifFNTaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPm51bWJlcikpCi0gICAgICAgIHJldHVybiAtMTsgCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChmaXJzdCkgewogICAgICAgICB0bXAgPSBzZWxmLT5maXJzdDsKQEAgLTg4LDIyICs4NiwyMiBAQAogc3RhdGljIGludAogTm9kZHlfc2V0Zmlyc3QoTm9kZHkgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQ2Fubm90IGRlbGV0ZSB0aGUgZmlyc3QgYXR0cmlidXRlIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIAotICBpZiAoISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICJUaGUgZmlyc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgICAgIAotICBQeV9ERUNSRUYoc2VsZi0+Zmlyc3QpOwotICBQeV9JTkNSRUYodmFsdWUpOwotICBzZWxmLT5maXJzdCA9IHZhbHVlOyAgICAKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQ2Fubm90IGRlbGV0ZSB0aGUgZmlyc3QgYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgcmV0dXJuIDA7CisgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaXJzdCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIHNlbGYtPmZpcnN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExNiwzMCArMTE0LDMwIEBACiBzdGF0aWMgaW50CiBOb2RkeV9zZXRsYXN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIAotICBpZiAoISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICJUaGUgbGFzdCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAgICAgCi0gIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+bGFzdCA9IHZhbHVlOyAgICAKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQ2Fubm90IGRlbGV0ZSB0aGUgbGFzdCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICByZXR1cm4gMDsKKyAgICBpZiAoISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGxhc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIHNlbGYtPmxhc3QgPSB2YWx1ZTsKKworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlHZXRTZXREZWYgTm9kZHlfZ2V0c2V0ZXJzW10gPSB7Ci0gICAgeyJmaXJzdCIsIAorICAgIHsiZmlyc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGZpcnN0LCAoc2V0dGVyKU5vZGR5X3NldGZpcnN0LAogICAgICAiZmlyc3QgbmFtZSIsCiAgICAgIE5VTEx9LAotICAgIHsibGFzdCIsIAorICAgIHsibGFzdCIsCiAgICAgIChnZXR0ZXIpTm9kZHlfZ2V0bGFzdCwgKHNldHRlcilOb2RkeV9zZXRsYXN0LAogICAgICAibGFzdCBuYW1lIiwKICAgICAgTlVMTH0sCkBAIC0xNDksMjMgKzE0Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogTm9kZHlfbmFtZShOb2RkeSogc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPTyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTICVTIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgTm9kZHlfbWV0aG9kc1tdID0gewpAQCAtMTk4LDEyICsxODAsMTIgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIE5vZGR5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBOb2RkeV9tZW1iZXJzLCAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgTm9kZHlfZ2V0c2V0ZXJzLCAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0yMjYsNyArMjA4LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfbm9kZHkzKHZvaWQpIAorUHlJbml0X25vZGR5Myh2b2lkKQogewogICAgIFB5T2JqZWN0KiBtOwogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKaW5kZXggNmE5NmZhYy4uZWI5NjIyYSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTQuYwpAQCAtMjcsNyArMjcsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IAorc3RhdGljIGludAogTm9kZHlfY2xlYXIoTm9kZHkgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKQEAgLTU4LDE4ICs1OCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtODQsMTAgKzgyLDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC0xMjAsMTUgKzExOCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogTm9kZHlfbmFtZShOb2RkeSogc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImZpcnN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM5LDE0ICsxMjgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE4MiwxMCArMTY0LDEwIEBACiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylOb2RkeV90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KU5vZGR5X2NsZWFyLCAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMjA4LDcgKzE5MCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5NCh2b2lkKSAKK1B5SW5pdF9ub2RkeTQodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QgYi9Eb2MvbGlicmFyeS9fdGhyZWFkLnJzdAppbmRleCAzNjllOWNkLi43NTFjM2U4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9fdGhyZWFkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9fdGhyZWFkLnJzdApAQCAtMzUsNiArMzUsOSBAQAogCiAgICBSYWlzZWQgb24gdGhyZWFkLXNwZWNpZmljIGVycm9ycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgaXMgbm93IGEgc3lub255bSBvZiB0aGUgYnVpbHQtaW4gOmV4YzpgUnVudGltZUVycm9yYC4KKwogCiAuLiBkYXRhOjogTG9ja1R5cGUKIApAQCAtOTEsNyArOTQsNyBAQAogICAgKnNpemUqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc3RhY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50bHkgY3JlYXRlZAogICAgdGhyZWFkcywgYW5kIG11c3QgYmUgMCAodXNlIHBsYXRmb3JtIG9yIGNvbmZpZ3VyZWQgZGVmYXVsdCkgb3IgYSBwb3NpdGl2ZQogICAgaW50ZWdlciB2YWx1ZSBvZiBhdCBsZWFzdCAzMiw3NjggKDMya0IpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKLSAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFRocmVhZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgc3BlY2lmaWVkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCiAgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKICAgIGlzIGN1cnJlbnRseSB0aGUgbWluaW11bSBzdXBwb3J0ZWQgc3RhY2sgc2l6ZSB2YWx1ZSB0byBndWFyYW50ZWUgc3VmZmljaWVudAogICAgc3RhY2sgc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBpdHNlbGYuICBOb3RlIHRoYXQgc29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FiYy5yc3QgYi9Eb2MvbGlicmFyeS9hYmMucnN0CmluZGV4IGRjZWMxOWEuLjZmMjM1OTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FiYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYWJjLnJzdApAQCAtMTgsNyArMTgsNyBAQAogCiBUaGUgOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSBoYXMgc29tZSBjb25jcmV0ZSBjbGFzc2VzIHRoYXQgZGVyaXZlIGZyb20KIEFCQ3M7IHRoZXNlIGNhbiwgb2YgY291cnNlLCBiZSBmdXJ0aGVyIGRlcml2ZWQuIEluIGFkZGl0aW9uIHRoZQotOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSBoYXMgc29tZSBBQkNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyCis6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIHN1Ym1vZHVsZSBoYXMgc29tZSBBQkNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyCiBhIGNsYXNzIG9yIGluc3RhbmNlIHByb3ZpZGVzIGEgcGFydGljdWxhciBpbnRlcmZhY2UsIGZvciBleGFtcGxlLCBpcyBpdAogaGFzaGFibGUgb3IgYSBtYXBwaW5nLgogCkBAIC01NSw2ICs1NSw5IEBACiAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR1cGxlLCBNeUFCQykKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoKCksIE15QUJDKQogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBzdWJjbGFzcywgdG8gYWxsb3cgdXNhZ2UgYXMgYSBjbGFzcyBkZWNvcmF0b3IuCisKICAgIFlvdSBjYW4gYWxzbyBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzOgogCiAgICAuLiBtZXRob2Q6OiBfX3N1YmNsYXNzaG9va19fKHN1YmNsYXNzKQpAQCAtMTI0LDE5ICsxMjcsMTggQEAKICAgIGF2YWlsYWJsZSBhcyBhIG1ldGhvZCBvZiBgYEZvb2BgLCBzbyBpdCBpcyBwcm92aWRlZCBzZXBhcmF0ZWx5LgogCiAKLUl0IGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkZWNvcmF0b3JzOgorVGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkZWNvcmF0b3JzOgogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdG1ldGhvZAogCiAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IG1ldGhvZHMuCiAKLSAgIFVzaW5nIHRoaXMgZGVjb3JhdG9yIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAgb3IKLSAgIGlzIGRlcml2ZWQgZnJvbSBpdC4KLSAgIEEgY2xhc3MgdGhhdCBoYXMgYSBtZXRhY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgQUJDTWV0YWAKLSAgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgdW5sZXNzIGFsbCBvZiBpdHMgYWJzdHJhY3QgbWV0aG9kcyBhbmQKLSAgIHByb3BlcnRpZXMgYXJlIG92ZXJyaWRkZW4uCi0gICBUaGUgYWJzdHJhY3QgbWV0aG9kcyBjYW4gYmUgY2FsbGVkIHVzaW5nIGFueSBvZiB0aGUgbm9ybWFsICdzdXBlcicgY2FsbAotICAgbWVjaGFuaXNtcy4KKyAgIFVzaW5nIHRoaXMgZGVjb3JhdG9yIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAKKyAgIG9yIGlzIGRlcml2ZWQgZnJvbSBpdC4gIEEgY2xhc3MgdGhhdCBoYXMgYSBtZXRhY2xhc3MgZGVyaXZlZCBmcm9tCisgICA6Y2xhc3M6YEFCQ01ldGFgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgdW5sZXNzIGFsbCBvZiBpdHMgYWJzdHJhY3QgbWV0aG9kcworICAgYW5kIHByb3BlcnRpZXMgYXJlIG92ZXJyaWRkZW4uICBUaGUgYWJzdHJhY3QgbWV0aG9kcyBjYW4gYmUgY2FsbGVkIHVzaW5nIGFueQorICAgb2YgdGhlIG5vcm1hbCAnc3VwZXInIGNhbGwgbWVjaGFuaXNtcy4gIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAgbWF5IGJlIHVzZWQKKyAgIHRvIGRlY2xhcmUgYWJzdHJhY3QgbWV0aG9kcyBmb3IgcHJvcGVydGllcyBhbmQgZGVzY3JpcHRvcnMuCiAKICAgIER5bmFtaWNhbGx5IGFkZGluZyBhYnN0cmFjdCBtZXRob2RzIHRvIGEgY2xhc3MsIG9yIGF0dGVtcHRpbmcgdG8gbW9kaWZ5IHRoZQogICAgYWJzdHJhY3Rpb24gc3RhdHVzIG9mIGEgbWV0aG9kIG9yIGNsYXNzIG9uY2UgaXQgaXMgY3JlYXRlZCwgYXJlIG5vdApAQCAtMTQ0LDEyICsxNDYsNTIgQEAKICAgIHJlZ3VsYXIgaW5oZXJpdGFuY2U7ICJ2aXJ0dWFsIHN1YmNsYXNzZXMiIHJlZ2lzdGVyZWQgd2l0aCB0aGUgQUJDJ3MKICAgIDptZXRoOmByZWdpc3RlcmAgbWV0aG9kIGFyZSBub3QgYWZmZWN0ZWQuCiAKLSAgIFVzYWdlOjoKKyAgIFdoZW4gOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpcyBhcHBsaWVkIGluIGNvbWJpbmF0aW9uIHdpdGggb3RoZXIgbWV0aG9kCisgICBkZXNjcmlwdG9ycywgaXQgc2hvdWxkIGJlIGFwcGxpZWQgYXMgdGhlIGlubmVybW9zdCBkZWNvcmF0b3IsIGFzIHNob3duIGluCisgICB0aGUgZm9sbG93aW5nIHVzYWdlIGV4YW1wbGVzOjoKIAogICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X21ldGhvZChzZWxmLCAuLi4pOgogICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfY2xhc3NtZXRob2QoY2xzLCAuLi4pOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3N0YXRpY21ldGhvZCguLi4pOgorICAgICAgICAgICAgICAuLi4KKworICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9wcm9wZXJ0eShzZWxmKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQG15X2Fic3RyYWN0X3Byb3BlcnR5LnNldHRlcgorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9wcm9wZXJ0eShzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAuLi4KKworICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBfZ2V0X3goc2VsZik6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBfc2V0X3goc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgeCA9IHByb3BlcnR5KF9nZXRfeCwgX3NldF94KQorCisgICBJbiBvcmRlciB0byBjb3JyZWN0bHkgaW50ZXJvcGVyYXRlIHdpdGggdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgbWFjaGluZXJ5LAorICAgdGhlIGRlc2NyaXB0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgYWJzdHJhY3QgdXNpbmcKKyAgIDphdHRyOmBfX2lzYWJzdHJhY3RtZXRob2RfX2AuIEluIGdlbmVyYWwsIHRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSBgYFRydWVgYAorICAgaWYgYW55IG9mIHRoZSBtZXRob2RzIHVzZWQgdG8gY29tcG9zZSB0aGUgZGVzY3JpcHRvciBhcmUgYWJzdHJhY3QuIEZvcgorICAgZXhhbXBsZSwgUHl0aG9uJ3MgYnVpbHQtaW4gcHJvcGVydHkgZG9lcyB0aGUgZXF1aXZhbGVudCBvZjo6CisKKyAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgLi4uCisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgZGVmIF9faXNhYnN0cmFjdG1ldGhvZF9fKHNlbGYpOgorICAgICAgICAgICAgICByZXR1cm4gYW55KGdldGF0dHIoZiwgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgIGYgaW4gKHNlbGYuX2ZnZXQsIHNlbGYuX2ZzZXQsIHNlbGYuX2ZkZWwpKQogCiAgICAuLiBub3RlOjoKIApAQCAtMTY2LDE0ICsyMDgsMjAgQEAKICAgIEEgc3ViY2xhc3Mgb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBjbGFzc21ldGhvZGAsIGluZGljYXRpbmcgYW4gYWJzdHJhY3QKICAgIGNsYXNzbWV0aG9kLiBPdGhlcndpc2UgaXQgaXMgc2ltaWxhciB0byA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgLgogCi0gICBVc2FnZTo6CisgICBUaGlzIHNwZWNpYWwgY2FzZSBpcyBkZXByZWNhdGVkLCBhcyB0aGUgOmZ1bmM6YGNsYXNzbWV0aG9kYCBkZWNvcmF0b3IKKyAgIGlzIG5vdyBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyBhYnN0cmFjdCB3aGVuIGFwcGxpZWQgdG8gYW4gYWJzdHJhY3QKKyAgIG1ldGhvZDo6CiAKICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUFCQ01ldGEpOgotICAgICAgICAgIEBhYnN0cmFjdGNsYXNzbWV0aG9kCisgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X2NsYXNzbWV0aG9kKGNscywgLi4uKToKICAgICAgICAgICAgICAgLi4uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgIEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgOmNsYXNzOmBjbGFzc21ldGhvZGAgd2l0aAorICAgICAgIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAsIG1ha2luZyB0aGlzIGRlY29yYXRvciByZWR1bmRhbnQuCiAKIAogLi4gZGVjb3JhdG9yOjogYWJzdHJhY3RzdGF0aWNtZXRob2QKQEAgLTE4MSw0MSArMjI5LDcwIEBACiAgICBBIHN1YmNsYXNzIG9mIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RhdGljbWV0aG9kYCwgaW5kaWNhdGluZyBhbiBhYnN0cmFjdAogICAgc3RhdGljbWV0aG9kLiBPdGhlcndpc2UgaXQgaXMgc2ltaWxhciB0byA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgLgogCi0gICBVc2FnZTo6CisgICBUaGlzIHNwZWNpYWwgY2FzZSBpcyBkZXByZWNhdGVkLCBhcyB0aGUgOmZ1bmM6YHN0YXRpY21ldGhvZGAgZGVjb3JhdG9yCisgICBpcyBub3cgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgYWJzdHJhY3Qgd2hlbiBhcHBsaWVkIHRvIGFuIGFic3RyYWN0CisgICBtZXRob2Q6OgogCiAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1BQkNNZXRhKToKLSAgICAgICAgICBAYWJzdHJhY3RzdGF0aWNtZXRob2QKKyAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3N0YXRpY21ldGhvZCguLi4pOgogICAgICAgICAgICAgICAuLi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSA6Y2xhc3M6YHN0YXRpY21ldGhvZGAgd2l0aAorICAgICAgIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAsIG1ha2luZyB0aGlzIGRlY29yYXRvciByZWR1bmRhbnQuCiAKIAotLi4gZnVuY3Rpb246OiBhYnN0cmFjdHByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKQorLi4gZGVjb3JhdG9yOjogYWJzdHJhY3Rwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKIAotICAgQSBzdWJjbGFzcyBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByb3BlcnR5YCwgaW5kaWNhdGluZyBhbiBhYnN0cmFjdCBwcm9wZXJ0eS4KKyAgIEEgc3ViY2xhc3Mgb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBwcm9wZXJ0eWAsIGluZGljYXRpbmcgYW4gYWJzdHJhY3QKKyAgIHByb3BlcnR5LgogCi0gICBVc2luZyB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAgb3IKLSAgIGlzIGRlcml2ZWQgZnJvbSBpdC4KLSAgIEEgY2xhc3MgdGhhdCBoYXMgYSBtZXRhY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlCi0gICBpbnN0YW50aWF0ZWQgdW5sZXNzIGFsbCBvZiBpdHMgYWJzdHJhY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4KLSAgIFRoZSBhYnN0cmFjdCBwcm9wZXJ0aWVzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55IG9mIHRoZSBub3JtYWwKLSAgICdzdXBlcicgY2FsbCBtZWNoYW5pc21zLgorICAgVXNpbmcgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBjbGFzcydzIG1ldGFjbGFzcyBpcyA6Y2xhc3M6YEFCQ01ldGFgCisgICBvciBpcyBkZXJpdmVkIGZyb20gaXQuIEEgY2xhc3MgdGhhdCBoYXMgYSBtZXRhY2xhc3MgZGVyaXZlZCBmcm9tCisgICA6Y2xhc3M6YEFCQ01ldGFgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgdW5sZXNzIGFsbCBvZiBpdHMgYWJzdHJhY3QgbWV0aG9kcworICAgYW5kIHByb3BlcnRpZXMgYXJlIG92ZXJyaWRkZW4uIFRoZSBhYnN0cmFjdCBwcm9wZXJ0aWVzIGNhbiBiZSBjYWxsZWQgdXNpbmcKKyAgIGFueSBvZiB0aGUgbm9ybWFsICdzdXBlcicgY2FsbCBtZWNoYW5pc21zLgogCi0gICBVc2FnZTo6CisgICBUaGlzIHNwZWNpYWwgY2FzZSBpcyBkZXByZWNhdGVkLCBhcyB0aGUgOmZ1bmM6YHByb3BlcnR5YCBkZWNvcmF0b3IKKyAgIGlzIG5vdyBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyBhYnN0cmFjdCB3aGVuIGFwcGxpZWQgdG8gYW4gYWJzdHJhY3QKKyAgIG1ldGhvZDo6CiAKICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUFCQ01ldGEpOgotICAgICAgICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYpOgogICAgICAgICAgICAgICAuLi4KIAotICAgVGhpcyBkZWZpbmVzIGEgcmVhZC1vbmx5IHByb3BlcnR5OyB5b3UgY2FuIGFsc28gZGVmaW5lIGEgcmVhZC13cml0ZSBhYnN0cmFjdAotICAgcHJvcGVydHkgdXNpbmcgdGhlICdsb25nJyBmb3JtIG9mIHByb3BlcnR5IGRlY2xhcmF0aW9uOjoKKyAgIFRoZSBhYm92ZSBleGFtcGxlIGRlZmluZXMgYSByZWFkLW9ubHkgcHJvcGVydHk7IHlvdSBjYW4gYWxzbyBkZWZpbmUgYQorICAgcmVhZC13cml0ZSBhYnN0cmFjdCBwcm9wZXJ0eSBieSBhcHByb3ByaWF0ZWx5IG1hcmtpbmcgb25lIG9yIG1vcmUgb2YgdGhlCisgICB1bmRlcmx5aW5nIG1ldGhvZHMgYXMgYWJzdHJhY3Q6OgogCiAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1BQkNNZXRhKToKLSAgICAgICAgICBkZWYgZ2V0eChzZWxmKTogLi4uCi0gICAgICAgICAgZGVmIHNldHgoc2VsZiwgdmFsdWUpOiAuLi4KLSAgICAgICAgICB4ID0gYWJzdHJhY3Rwcm9wZXJ0eShnZXR4LCBzZXR4KQorICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgIGRlZiB4KHNlbGYpOgorICAgICAgICAgICAgICAuLi4KKworICAgICAgICAgIEB4LnNldHRlcgorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiB4KHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgIC4uLgorCisgICBJZiBvbmx5IHNvbWUgY29tcG9uZW50cyBhcmUgYWJzdHJhY3QsIG9ubHkgdGhvc2UgY29tcG9uZW50cyBuZWVkIHRvIGJlCisgICB1cGRhdGVkIHRvIGNyZWF0ZSBhIGNvbmNyZXRlIHByb3BlcnR5IGluIGEgc3ViY2xhc3M6OgorCisgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgIEBDLnguc2V0dGVyCisgICAgICAgICAgZGVmIHgoc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgLi4uCisKKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgIEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgOmNsYXNzOmBwcm9wZXJ0eWAsIDptZXRoOmBwcm9wZXJ0eS5nZXR0ZXJgLAorICAgICAgIDptZXRoOmBwcm9wZXJ0eS5zZXR0ZXJgIGFuZCA6bWV0aDpgcHJvcGVydHkuZGVsZXRlcmAgd2l0aAorICAgICAgIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAsIG1ha2luZyB0aGlzIGRlY29yYXRvciByZWR1bmRhbnQuCiAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0IGIvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdAppbmRleCA3NWQxMzdjLi5jOTI4NDk0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QKQEAgLTUsOCArNSw5IEBACiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBzdXBwb3J0IGRhdGEgY29tcHJlc3Npb24gd2l0aCB0aGUgemxpYiwKLWd6aXAsIGFuZCBiemlwMiBhbGdvcml0aG1zLCBhbmQgIHRoZSBjcmVhdGlvbiBvZiBaSVAtIGFuZCB0YXItZm9ybWF0IGFyY2hpdmVzLgotU2VlIGFsc28gOnJlZjpgYXJjaGl2aW5nLW9wZXJhdGlvbnNgIHByb3ZpZGVkIGJ5IHRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZS4KK2d6aXAsIGJ6aXAyIGFuZCBsem1hIGFsZ29yaXRobXMsIGFuZCB0aGUgY3JlYXRpb24gb2YgWklQLSBhbmQgdGFyLWZvcm1hdAorYXJjaGl2ZXMuICBTZWUgYWxzbyA6cmVmOmBhcmNoaXZpbmctb3BlcmF0aW9uc2AgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHNodXRpbGAKK21vZHVsZS4KIAogCiAuLiB0b2N0cmVlOjoKQEAgLTE0LDUgKzE1LDYgQEAKICAgIHpsaWIucnN0CiAgICBnemlwLnJzdAogICAgYnoyLnJzdAorICAgbHptYS5yc3QKICAgIHppcGZpbGUucnN0CiAgICB0YXJmaWxlLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CmluZGV4IDFiODBkMmEuLmFiMDk1ZTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKQEAgLTM3MSwxNiArMzcxLDE2IEBACiBeXl5eXl5eXl5eXl5eXl4KIAogOmNsYXNzOmBBcmd1bWVudFBhcnNlcmAgb2JqZWN0cyBhbGxvdyB0aGUgaGVscCBmb3JtYXR0aW5nIHRvIGJlIGN1c3RvbWl6ZWQgYnkKLXNwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIGZvcm1hdHRpbmcgY2xhc3MuICBDdXJyZW50bHksIHRoZXJlIGFyZSB0aHJlZSBzdWNoCitzcGVjaWZ5aW5nIGFuIGFsdGVybmF0ZSBmb3JtYXR0aW5nIGNsYXNzLiAgQ3VycmVudGx5LCB0aGVyZSBhcmUgZm91ciBzdWNoCiBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcgogICAgICAgICAgICBSYXdUZXh0SGVscEZvcm1hdHRlcgogICAgICAgICAgICBBcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcgorICAgICAgICAgICBNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIKIAotVGhlIGZpcnN0IHR3byBhbGxvdyBtb3JlIGNvbnRyb2wgb3ZlciBob3cgdGV4dHVhbCBkZXNjcmlwdGlvbnMgYXJlIGRpc3BsYXllZCwKLXdoaWxlIHRoZSBsYXN0IGF1dG9tYXRpY2FsbHkgYWRkcyBpbmZvcm1hdGlvbiBhYm91dCBhcmd1bWVudCBkZWZhdWx0IHZhbHVlcy4KLQorOmNsYXNzOmBSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXJgIGFuZCA6Y2xhc3M6YFJhd1RleHRIZWxwRm9ybWF0dGVyYCBnaXZlCittb3JlIGNvbnRyb2wgb3ZlciBob3cgdGV4dHVhbCBkZXNjcmlwdGlvbnMgYXJlIGRpc3BsYXllZC4KIEJ5IGRlZmF1bHQsIDpjbGFzczpgQXJndW1lbnRQYXJzZXJgIG9iamVjdHMgbGluZS13cmFwIHRoZSBkZXNjcmlwdGlvbl8gYW5kCiBlcGlsb2dfIHRleHRzIGluIGNvbW1hbmQtbGluZSBoZWxwIG1lc3NhZ2VzOjoKIApAQCAtNDMzLDggKzQzMyw4IEBACiA6Y2xhc3M6YFJhd1RleHRIZWxwRm9ybWF0dGVyYCBtYWludGFpbnMgd2hpdGVzcGFjZSBmb3IgYWxsIHNvcnRzIG9mIGhlbHAgdGV4dCwKIGluY2x1ZGluZyBhcmd1bWVudCBkZXNjcmlwdGlvbnMuCiAKLVRoZSBvdGhlciBmb3JtYXR0ZXIgY2xhc3MgYXZhaWxhYmxlLCA6Y2xhc3M6YEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyYCwKLXdpbGwgYWRkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGVhY2ggb2YgdGhlIGFyZ3VtZW50czo6Cis6Y2xhc3M6YEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyYCBhdXRvbWF0aWNhbGx5IGFkZHMgaW5mb3JtYXRpb24gYWJvdXQKK2RlZmF1bHQgdmFsdWVzIHRvIGVhY2ggb2YgdGhlIGFyZ3VtZW50IGhlbHAgbWVzc2FnZXM6OgogCiAgICA+Pj4gcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCiAgICAuLi4gICAgIHByb2c9J1BST0cnLApAQCAtNDUxLDYgKzQ1MSwyNSBAQAogICAgIC1oLCAtLWhlbHAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKICAgICAtLWZvbyBGT08gICBGT08hIChkZWZhdWx0OiA0MikKIAorOmNsYXNzOmBNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXJgIHVzZXMgdGhlIG5hbWUgb2YgdGhlIHR5cGVfIGFyZ3VtZW50IGZvciBlYWNoCithcmd1bWVudCBhcyB0aGUgZGlzcGxheSBuYW1lIGZvciBpdHMgdmFsdWVzIChyYXRoZXIgdGhhbiB1c2luZyB0aGUgZGVzdF8KK2FzIHRoZSByZWd1bGFyIGZvcm1hdHRlciBkb2VzKTo6CisKKyAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgIC4uLiAgICAgcHJvZz0nUFJPRycsCisgICAuLi4gICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIpCisgICA+Pj4gcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1mb28nLCB0eXBlPWludCkKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCdiYXInLCB0eXBlPWZsb2F0KQorICAgPj4+IHBhcnNlci5wcmludF9oZWxwKCkKKyAgIHVzYWdlOiBQUk9HIFstaF0gWy0tZm9vIGludF0gZmxvYXQKKworICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CisgICAgIGZsb2F0CisKKyAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgLWgsIC0taGVscCAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAtLWZvbyBpbnQKKwogCiBjb25mbGljdF9oYW5kbGVyCiBeXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcnJheS5yc3QgYi9Eb2MvbGlicmFyeS9hcnJheS5yc3QKaW5kZXggZDU2M2NjZS4uOGY2OTQzYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJyYXkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FycmF5LnJzdApAQCAtMTQsMzYgKzE0LDU0IEBACiA6ZGZuOmB0eXBlIGNvZGVgLCB3aGljaCBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICBUaGUgZm9sbG93aW5nIHR5cGUgY29kZXMgYXJlCiBkZWZpbmVkOgogCi0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBUeXBlIGNvZGUgfCBDIFR5cGUgICAgICAgICB8IFB5dGhvbiBUeXBlICAgICAgIHwgTWluaW11bSBzaXplIGluIGJ5dGVzIHwKLSs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IGBgJ2InYGAgICB8IHNpZ25lZCBjaGFyICAgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnQidgYCAgIHwgdW5zaWduZWQgY2hhciAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCd1J2BgICAgfCBQeV9VTklDT0RFICAgICB8IFVuaWNvZGUgY2hhcmFjdGVyIHwgMiAoc2VlIG5vdGUpICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2gnYGAgICB8IHNpZ25lZCBzaG9ydCAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnSCdgYCAgIHwgdW5zaWduZWQgc2hvcnQgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdpJ2BgICAgfCBzaWduZWQgaW50ICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0knYGAgICB8IHVuc2lnbmVkIGludCAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnbCdgYCAgIHwgc2lnbmVkIGxvbmcgICAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdMJ2BgICAgfCB1bnNpZ25lZCBsb25nICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2YnYGAgICB8IGZsb2F0ICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnZCdgYCAgIHwgZG91YmxlICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDggICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgVHlwZSBjb2RlIHwgQyBUeXBlICAgICAgICAgICAgIHwgUHl0aG9uIFR5cGUgICAgICAgfCBNaW5pbXVtIHNpemUgaW4gYnl0ZXMgfCBOb3RlcyB8CisrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KworfCBgYCdiJ2BgICAgfCBzaWduZWQgY2hhciAgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0InYGAgICB8IHVuc2lnbmVkIGNoYXIgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAndSdgYCAgIHwgUHlfVU5JQ09ERSAgICAgICAgIHwgVW5pY29kZSBjaGFyYWN0ZXIgfCAyICAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdoJ2BgICAgfCBzaWduZWQgc2hvcnQgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0gnYGAgICB8IHVuc2lnbmVkIHNob3J0ICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnaSdgYCAgIHwgc2lnbmVkIGludCAgICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdJJ2BgICAgfCB1bnNpZ25lZCBpbnQgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2wnYGAgICB8IHNpZ25lZCBsb25nICAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnTCdgYCAgIHwgdW5zaWduZWQgbG9uZyAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdxJ2BgICAgfCBzaWduZWQgbG9uZyBsb25nICAgfCBpbnQgICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ1EnYGAgICB8IHVuc2lnbmVkIGxvbmcgbG9uZyB8IGludCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZidgYCAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdkJ2BgICAgfCBkb3VibGUgICAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDggICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKLS4uIG5vdGU6OgorTm90ZXM6CiAKLSAgIFRoZSBgYCd1J2BgIHR5cGVjb2RlIGNvcnJlc3BvbmRzIHRvIFB5dGhvbidzIHVuaWNvZGUgY2hhcmFjdGVyLiAgT24gbmFycm93Ci0gICBVbmljb2RlIGJ1aWxkcyB0aGlzIGlzIDItYnl0ZXMsIG9uIHdpZGUgYnVpbGRzIHRoaXMgaXMgNC1ieXRlcy4KKygxKQorICAgVGhlIGBgJ3UnYGAgdHlwZSBjb2RlIGNvcnJlc3BvbmRzIHRvIFB5dGhvbidzIG9ic29sZXRlIHVuaWNvZGUgY2hhcmFjdGVyCisgICAoOmM6dHlwZTpgUHlfVU5JQ09ERWAgd2hpY2ggaXMgOmM6dHlwZTpgd2NoYXJfdGApLiBEZXBlbmRpbmcgb24gdGhlCisgICBwbGF0Zm9ybSwgaXQgY2FuIGJlIDE2IGJpdHMgb3IgMzIgYml0cy4KKworICAgYGAndSdgYCB3aWxsIGJlIHJlbW92ZWQgdG9nZXRoZXIgd2l0aCB0aGUgcmVzdCBvZiB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAKKyAgIEFQSS4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorCisoMikKKyAgIFRoZSBgYCdxJ2BgIGFuZCBgYCdRJ2BgIHR5cGUgY29kZXMgYXJlIGF2YWlsYWJsZSBvbmx5IGlmCisgICB0aGUgcGxhdGZvcm0gQyBjb21waWxlciB1c2VkIHRvIGJ1aWxkIFB5dGhvbiBzdXBwb3J0cyBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AsCisgICBvciwgb24gV2luZG93cywgOmM6dHlwZTpgX19pbnQ2NGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiBUaGUgYWN0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBtYWNoaW5lIGFyY2hpdGVjdHVyZQogKHN0cmljdGx5IHNwZWFraW5nLCBieSB0aGUgQyBpbXBsZW1lbnRhdGlvbikuICBUaGUgYWN0dWFsIHNpemUgY2FuIGJlIGFjY2Vzc2VkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3QucnN0IGIvRG9jL2xpYnJhcnkvYXN0LnJzdAppbmRleCBlMmMwYjZkLi4xNmRlM2NhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzdC5yc3QKQEAgLTk2LDkgKzk2LDYgQEAKIEFic3RyYWN0IEdyYW1tYXIKIC0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIG1vZHVsZSBkZWZpbmVzIGEgc3RyaW5nIGNvbnN0YW50IGBgX192ZXJzaW9uX19gYCB3aGljaCBpcyB0aGUgZGVjaW1hbAotU3VidmVyc2lvbiByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgc2hvd24gYmVsb3cuCi0KIFRoZSBhYnN0cmFjdCBncmFtbWFyIGlzIGN1cnJlbnRseSBkZWZpbmVkIGFzIGZvbGxvd3M6CiAKIC4uIGxpdGVyYWxpbmNsdWRlOjogLi4vLi4vUGFyc2VyL1B5dGhvbi5hc2RsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKaW5kZXggNzViM2NkYS4uNTVjNjFkNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdApAQCAtMTk3LDYgKzE5Nyw5IEBACiBtYXJzaGFsbGVkLCBhZnRlciBzZXR0aW5nIHRoZSBjaGFubmVsIHRlcm1pbmF0b3IgdG8gYGBOb25lYGAgdG8gZW5zdXJlIHRoYXQKIGFueSBleHRyYW5lb3VzIGRhdGEgc2VudCBieSB0aGUgd2ViIGNsaWVudCBhcmUgaWdub3JlZC4gOjoKIAorCisgICBpbXBvcnQgYXN5bmNoYXQKKwogICAgY2xhc3MgaHR0cF9yZXF1ZXN0X2hhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc29jaywgYWRkciwgc2Vzc2lvbnMsIGxvZyk6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKaW5kZXggNjE5YjdiYi4uN2NhY2NhMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdApAQCAtMTg0LDEyICsxODQsMTUgQEAKICAgIE1vc3Qgb2YgdGhlc2UgYXJlIG5lYXJseSBpZGVudGljYWwgdG8gdGhlaXIgc29ja2V0IHBhcnRuZXJzLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9zb2NrZXQoZmFtaWx5LCB0eXBlKQorICAgLi4gbWV0aG9kOjogY3JlYXRlX3NvY2tldChmYW1pbHk9c29ja2V0LkFGX0lORVQsIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQogCiAgICAgICBUaGlzIGlzIGlkZW50aWNhbCB0byB0aGUgY3JlYXRpb24gb2YgYSBub3JtYWwgc29ja2V0LCBhbmQgd2lsbCB1c2UgdGhlCiAgICAgICBzYW1lIG9wdGlvbnMgZm9yIGNyZWF0aW9uLiAgUmVmZXIgdG8gdGhlIDptb2Q6YHNvY2tldGAgZG9jdW1lbnRhdGlvbiBmb3IKICAgICAgIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIHNvY2tldHMuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICAqZmFtaWx5KiBhbmQgKnR5cGUqIGFyZ3VtZW50cyBjYW4gYmUgb21pdHRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBjb25uZWN0KGFkZHJlc3MpCiAKQEAgLTI3NCwxMyArMjc3LDEzIEBACiBIZXJlIGlzIGEgdmVyeSBiYXNpYyBIVFRQIGNsaWVudCB0aGF0IHVzZXMgdGhlIDpjbGFzczpgZGlzcGF0Y2hlcmAgY2xhc3MgdG8KIGltcGxlbWVudCBpdHMgc29ja2V0IGhhbmRsaW5nOjoKIAotICAgaW1wb3J0IGFzeW5jb3JlLCBzb2NrZXQKKyAgIGltcG9ydCBhc3luY29yZQogCiAgICBjbGFzcyBIVFRQQ2xpZW50KGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBhdGgpOgogICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICBzZWxmLmNvbm5lY3QoIChob3N0LCA4MCkgKQogICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IGJ5dGVzKCdHRVQgJXMgSFRUUC8xLjBcclxuSG9zdDogJXNcclxuXHJcbicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXRoLCBob3N0KSwgJ2FzY2lpJykKQEAgLTMxNCw3ICszMTcsNiBAQAogY29ubmVjdGlvbnMgYW5kIGRpc3BhdGNoZXMgdGhlIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGEgaGFuZGxlcjo6CiAKICAgICBpbXBvcnQgYXN5bmNvcmUKLSAgICBpbXBvcnQgc29ja2V0CiAKICAgICBjbGFzcyBFY2hvSGFuZGxlcihhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZCk6CiAKQEAgLTMyNyw3ICszMjksNyBAQAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0KToKICAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQogICAgICAgICAgICAgc2VsZi5iaW5kKChob3N0LCBwb3J0KSkKICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCkBAIC0zMzgsNCArMzQwLDMgQEAKIAogICAgIHNlcnZlciA9IEVjaG9TZXJ2ZXIoJ2xvY2FsaG9zdCcsIDgwODApCiAgICAgYXN5bmNvcmUubG9vcCgpCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QgYi9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CmluZGV4IDdjNzZiYWIuLjJlMjJjYWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXRleGl0LnJzdApAQCAtOSwxMyArOSwxNCBAQAogCiBUaGUgOm1vZDpgYXRleGl0YCBtb2R1bGUgZGVmaW5lcyBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgY2xlYW51cAogZnVuY3Rpb25zLiAgRnVuY3Rpb25zIHRodXMgcmVnaXN0ZXJlZCBhcmUgYXV0b21hdGljYWxseSBleGVjdXRlZCB1cG9uIG5vcm1hbAotaW50ZXJwcmV0ZXIgdGVybWluYXRpb24uICBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGlzIG5vdAotZGVmaW5lZDsgaWYgeW91IGhhdmUgY2xlYW51cCBvcGVyYXRpb25zIHRoYXQgZGVwZW5kIG9uIGVhY2ggb3RoZXIsIHlvdSBzaG91bGQKLXdyYXAgdGhlbSBpbiBhIGZ1bmN0aW9uIGFuZCByZWdpc3RlciB0aGF0IG9uZS4gIFRoaXMga2VlcHMgOm1vZDpgYXRleGl0YCBzaW1wbGUuCitpbnRlcnByZXRlciB0ZXJtaW5hdGlvbi4gIDptb2Q6YGF0ZXhpdGAgcnVucyB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlICpyZXZlcnNlKgorb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIHJlZ2lzdGVyZWQ7IGlmIHlvdSByZWdpc3RlciBgYEFgYCwgYGBCYGAsIGFuZCBgYENgYCwKK2F0IGludGVycHJldGVyIHRlcm1pbmF0aW9uIHRpbWUgdGhleSB3aWxsIGJlIHJ1biBpbiB0aGUgb3JkZXIgYGBDYGAsIGBgQmBgLAorYGBBYGAuCiAKLU5vdGU6IHRoZSBmdW5jdGlvbnMgcmVnaXN0ZXJlZCB2aWEgdGhpcyBtb2R1bGUgYXJlIG5vdCBjYWxsZWQgd2hlbiB0aGUgcHJvZ3JhbQotaXMga2lsbGVkIGJ5IGEgc2lnbmFsIG5vdCBoYW5kbGVkIGJ5IFB5dGhvbiwgd2hlbiBhIFB5dGhvbiBmYXRhbCBpbnRlcm5hbCBlcnJvcgotaXMgZGV0ZWN0ZWQsIG9yIHdoZW4gOmZ1bmM6YG9zLl9leGl0YCBpcyBjYWxsZWQuCisqKk5vdGU6KiogVGhlIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHZpYSB0aGlzIG1vZHVsZSBhcmUgbm90IGNhbGxlZCB3aGVuIHRoZQorcHJvZ3JhbSBpcyBraWxsZWQgYnkgYSBzaWduYWwgbm90IGhhbmRsZWQgYnkgUHl0aG9uLCB3aGVuIGEgUHl0aG9uIGZhdGFsCitpbnRlcm5hbCBlcnJvciBpcyBkZXRlY3RlZCwgb3Igd2hlbiA6ZnVuYzpgb3MuX2V4aXRgIGlzIGNhbGxlZC4KIAogCiAuLiBmdW5jdGlvbjo6IHJlZ2lzdGVyKGZ1bmMsICphcmdzLCAqKmthcmdzKQpAQCAtNjcsOCArNjgsOSBAQAogbWFraW5nIGFuIGV4cGxpY2l0IGNhbGwgaW50byB0aGlzIG1vZHVsZSBhdCB0ZXJtaW5hdGlvbi4gOjoKIAogICAgdHJ5OgotICAgICAgIF9jb3VudCA9IGludChvcGVuKCIvdG1wL2NvdW50ZXIiKS5yZWFkKCkpCi0gICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICB3aXRoIG9wZW4oIi90bXAvY291bnRlciIpIGFzIGluZmlsZToKKyAgICAgICAgICAgX2NvdW50ID0gaW50KGluZmlsZS5yZWFkKCkpCisgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgX2NvdW50ID0gMAogCiAgICBkZWYgaW5jcmNvdW50ZXIobik6CkBAIC03Niw3ICs3OCw4IEBACiAgICAgICAgX2NvdW50ID0gX2NvdW50ICsgbgogCiAgICBkZWYgc2F2ZWNvdW50ZXIoKToKLSAgICAgICBvcGVuKCIvdG1wL2NvdW50ZXIiLCAidyIpLndyaXRlKCIlZCIgJSBfY291bnQpCisgICAgICAgd2l0aCBvcGVuKCIvdG1wL2NvdW50ZXIiLCAidyIpIGFzIG91dGZpbGU6CisgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiVkIiAlIF9jb3VudCkKIAogICAgaW1wb3J0IGF0ZXhpdAogICAgYXRleGl0LnJlZ2lzdGVyKHNhdmVjb3VudGVyKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdCBiL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKaW5kZXggYzA4ZGYxNS4uYWRlMGYwNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CkBAIC0xOCw5ICsxOCwxNCBAQAogCiBUaGVyZSBhcmUgdHdvIGludGVyZmFjZXMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUuICBUaGUgbW9kZXJuIGludGVyZmFjZQogc3VwcG9ydHMgZW5jb2RpbmcgYW5kIGRlY29kaW5nIEFTQ0lJIGJ5dGUgc3RyaW5nIG9iamVjdHMgdXNpbmcgYWxsIHRocmVlCi1hbHBoYWJldHMuICBUaGUgbGVnYWN5IGludGVyZmFjZSBwcm92aWRlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIGFuZCBmcm9tCi1maWxlLWxpa2Ugb2JqZWN0cyBhcyB3ZWxsIGFzIGJ5dGUgc3RyaW5ncywgYnV0IG9ubHkgdXNpbmcgdGhlIEJhc2U2NCBzdGFuZGFyZAotYWxwaGFiZXQuCithbHBoYWJldHMuIEFkZGl0aW9uYWxseSwgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZiB0aGUgbW9kZXJuIGludGVyZmFjZSBhbHNvCithY2NlcHQgVW5pY29kZSBzdHJpbmdzIGNvbnRhaW5pbmcgb25seSBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbGVnYWN5IGludGVyZmFjZQorcHJvdmlkZXMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB0byBhbmQgZnJvbSBmaWxlLWxpa2Ugb2JqZWN0cyBhcyB3ZWxsIGFzCitieXRlIHN0cmluZ3MsIGJ1dCBvbmx5IHVzaW5nIHRoZSBCYXNlNjQgc3RhbmRhcmQgYWxwaGFiZXQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBU0NJSS1vbmx5IFVuaWNvZGUgc3RyaW5ncyBhcmUgbm93IGFjY2VwdGVkIGJ5IHRoZSBkZWNvZGluZyBmdW5jdGlvbnMgb2YKKyAgIHRoZSBtb2Rlcm4gaW50ZXJmYWNlLgogCiBUaGUgbW9kZXJuIGludGVyZmFjZSBwcm92aWRlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFyeS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFmYmRjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2JpbmFyeS5yc3QKQEAgLTAsMCArMSwyMyBAQAorLi4gX2JpbmFyeXNlcnZpY2VzOgorCisqKioqKioqKioqKioqKioqKioqKgorQmluYXJ5IERhdGEgU2VydmljZXMKKyoqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBzb21lIGJhc2ljIHNlcnZpY2VzIG9wZXJhdGlvbnMKK2ZvciBtYW5pcHVsYXRpb24gb2YgYmluYXJ5IGRhdGEuIE90aGVyIG9wZXJhdGlvbnMgb24gYmluYXJ5IGRhdGEsIHNwZWNpZmljYWxseQoraW4gcmVsYXRpb24gdG8gZmlsZSBmb3JtYXRzIGFuZCBuZXR3b3JrIHByb3RvY29scywgYXJlIGRlc2NyaWJlZCBpbiB0aGUKK3JlbGV2YW50IHNlY3Rpb25zLgorCitTb21lIGxpYnJhcmllcyBkZXNjcmliZWQgdW5kZXIgOnJlZjpgdGV4dHNlcnZpY2VzYCBhbHNvIHdvcmsgd2l0aCBlaXRoZXIKK0FTQ0lJLWNvbXBhdGlibGUgYmluYXJ5IGZvcm1hdHMgKGZvciBleGFtcGxlLCA6bW9kOmByZWApIG9yIGFsbCBiaW5hcnkgZGF0YQorKGZvciBleGFtcGxlLCA6bW9kOmBkaWZmbGliYCkuCisKK0luIGFkZGl0aW9uLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIFB5dGhvbidzIGJ1aWx0LWluIGJpbmFyeSBkYXRhIHR5cGVzIGluCis6cmVmOmBiaW5hcnlzZXFgLgorCisuLiB0b2N0cmVlOjoKKworICAgc3RydWN0LnJzdAorICAgY29kZWNzLnJzdAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKaW5kZXggMmFhMzcwMi4uYmFmNDMwZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdApAQCAtMjAsOCArMjAsMTMgQEAKIAogLi4gbm90ZTo6CiAKLSAgIEVuY29kaW5nIGFuZCBkZWNvZGluZyBmdW5jdGlvbnMgZG8gbm90IGFjY2VwdCBVbmljb2RlIHN0cmluZ3MuICBPbmx5IGJ5dGVzdHJpbmcKLSAgIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBjYW4gYmUgcHJvY2Vzc2VkLgorICAgYGBhMmJfKmBgIGZ1bmN0aW9ucyBhY2NlcHQgVW5pY29kZSBzdHJpbmdzIGNvbnRhaW5pbmcgb25seSBBU0NJSSBjaGFyYWN0ZXJzLgorICAgT3RoZXIgZnVuY3Rpb25zIG9ubHkgYWNjZXB0IGJ5dGVzIGFuZCBieXRlcy1jb21wYXRpYmxlIG9iamVjdHMgKHN1Y2ggYXMKKyAgIGJ5dGVhcnJheSBvYmplY3RzIGFuZCBvdGhlciBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgYnVmZmVyIEFQSSkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBU0NJSS1vbmx5IHVuaWNvZGUgc3RyaW5ncyBhcmUgbm93IGFjY2VwdGVkIGJ5IHRoZSBgYGEyYl8qYGAgZnVuY3Rpb25zLgorCiAKIFRoZSA6bW9kOmBiaW5hc2NpaWAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QgYi9Eb2MvbGlicmFyeS9iejIucnN0CmluZGV4IDkzMTQ0YjYuLmQwNmEzOWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYnoyLnJzdApAQCAtMSwyMDEgKzEsMjAyIEBACi06bW9kOmBiejJgIC0tLSBDb21wcmVzc2lvbiBjb21wYXRpYmxlIHdpdGggOnByb2dyYW06YGJ6aXAyYAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzptb2Q6YGJ6MmAgLS0tIFN1cHBvcnQgZm9yIDpwcm9ncmFtOmBiemlwMmAgY29tcHJlc3Npb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogYnoyCi0gICA6c3lub3BzaXM6IEludGVyZmFjZSB0byBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiByb3V0aW5lcwotICAgICAgICAgICAgICBjb21wYXRpYmxlIHdpdGggYnppcDIuCisgICA6c3lub3BzaXM6IEludGVyZmFjZXMgZm9yIGJ6aXAyIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgogLi4gbW9kdWxlYXV0aG9yOjogR3VzdGF2byBOaWVtZXllciA8bmllbWV5ZXJAY29uZWN0aXZhLmNvbT4KKy4uIG1vZHVsZWF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KIAogCi1UaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvciB0aGUgYnoyIGNvbXByZXNzaW9uIGxpYnJhcnkuCi1JdCBpbXBsZW1lbnRzIGEgY29tcGxldGUgZmlsZSBpbnRlcmZhY2UsIG9uZS1zaG90IChkZSljb21wcmVzc2lvbiBmdW5jdGlvbnMsIGFuZAotdHlwZXMgZm9yIHNlcXVlbnRpYWwgKGRlKWNvbXByZXNzaW9uLgorVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIGludGVyZmFjZSBmb3IgY29tcHJlc3NpbmcgYW5kCitkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgdGhlIGJ6aXAyIGNvbXByZXNzaW9uIGFsZ29yaXRobS4KIAotSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlIGZlYXR1cmVzIG9mZmVyZWQgYnkgdGhlIGJ6MiBtb2R1bGU6CitUaGUgOm1vZDpgYnoyYCBtb2R1bGUgY29udGFpbnM6CiAKLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBpbXBsZW1lbnRzIGEgY29tcGxldGUgZmlsZSBpbnRlcmZhY2UsIGluY2x1ZGluZwotICA6bWV0aDpgfkJaMkZpbGUucmVhZGxpbmVgLCA6bWV0aDpgfkJaMkZpbGUucmVhZGxpbmVzYCwKLSAgOm1ldGg6YH5CWjJGaWxlLndyaXRlbGluZXNgLCA6bWV0aDpgfkJaMkZpbGUuc2Vla2AsIGV0YzsKKyogVGhlIDpmdW5jOmAub3BlbmAgZnVuY3Rpb24gYW5kIDpjbGFzczpgQloyRmlsZWAgY2xhc3MgZm9yIHJlYWRpbmcgYW5kCisgIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcy4KKyogVGhlIDpjbGFzczpgQloyQ29tcHJlc3NvcmAgYW5kIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCBjbGFzc2VzIGZvcgorICBpbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24uCisqIFRoZSA6ZnVuYzpgY29tcHJlc3NgIGFuZCA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb25zIGZvciBvbmUtc2hvdAorICAoZGUpY29tcHJlc3Npb24uCiAKLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBpbXBsZW1lbnRzIGVtdWxhdGVkIDptZXRoOmB+QloyRmlsZS5zZWVrYCBzdXBwb3J0OwotCi0qIDpjbGFzczpgQloyRmlsZWAgY2xhc3MgaW1wbGVtZW50cyB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0OwotCi0qIDpjbGFzczpgQloyRmlsZWAgY2xhc3Mgb2ZmZXJzIGFuIG9wdGltaXplZCBsaW5lIGl0ZXJhdGlvbiB1c2luZyBhIHJlYWRhaGVhZAotICBhbGdvcml0aG07Ci0KLSogU2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24gc3VwcG9ydGVkIGJ5IDpjbGFzczpgQloyQ29tcHJlc3NvcmAgYW5kCi0gIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCBjbGFzc2VzOwotCi0qIE9uZS1zaG90IChkZSljb21wcmVzc2lvbiBzdXBwb3J0ZWQgYnkgOmZ1bmM6YGNvbXByZXNzYCBhbmQgOmZ1bmM6YGRlY29tcHJlc3NgCi0gIGZ1bmN0aW9uczsKLQotKiBUaHJlYWQgc2FmZXR5IHVzZXMgaW5kaXZpZHVhbCBsb2NraW5nIG1lY2hhbmlzbS4KK0FsbCBvZiB0aGUgY2xhc3NlcyBpbiB0aGlzIG1vZHVsZSBtYXkgc2FmZWx5IGJlIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KIAogCiAoRGUpY29tcHJlc3Npb24gb2YgZmlsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1IYW5kbGluZyBvZiBjb21wcmVzc2VkIGZpbGVzIGlzIG9mZmVyZWQgYnkgdGhlIDpjbGFzczpgQloyRmlsZWAgY2xhc3MuCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3InLCBjb21wcmVzc2xldmVsPTksIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpCisKKyAgIE9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZSwgcmV0dXJuaW5nIGEgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuCisKKyAgIEFzIHdpdGggdGhlIGNvbnN0cnVjdG9yIGZvciA6Y2xhc3M6YEJaMkZpbGVgLCB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUKKyAgIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcKKyAgIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgYW55IG9mIGBgJ3InYGAsIGBgJ3JiJ2BgLCBgYCd3J2BgLCBgYCd3YidgYCwKKyAgIGBgJ2EnYGAsIG9yIGBgJ2FiJ2BgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAncnQnYGAsIGBgJ3d0J2BgLCBvciBgYCdhdCdgYCBmb3IKKyAgIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgaXMgYGAncmInYGAuCisKKyAgIFRoZSAqY29tcHJlc3NsZXZlbCogYXJndW1lbnQgaXMgYW4gaW50ZWdlciBmcm9tIDEgdG8gOSwgYXMgZm9yIHRoZQorICAgOmNsYXNzOmBCWjJGaWxlYCBjb25zdHJ1Y3Rvci4KKworICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIDpjbGFzczpgQloyRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYEJaMkZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWw9Y29tcHJlc3NsZXZlbClgYC4gSW4KKyAgIHRoaXMgY2FzZSwgdGhlICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzIG11c3Qgbm90IGJlCisgICBwcm92aWRlZC4KKworICAgRm9yIHRleHQgbW9kZSwgYSA6Y2xhc3M6YEJaMkZpbGVgIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCisgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBpbmRleDo6Ci0gICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgYnoyLkJaMkZpbGUgY2xhc3MKKy4uIGNsYXNzOjogQloyRmlsZShmaWxlbmFtZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpCiAKLS4uIGNsYXNzOjogQloyRmlsZShmaWxlbmFtZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0wLCBjb21wcmVzc2xldmVsPTkpCisgICBPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgogCi0gICBPcGVuIGEgYnoyIGZpbGUuIE1vZGUgY2FuIGJlIGVpdGhlciBgYCdyJ2BgIG9yIGBgJ3cnYGAsIGZvciByZWFkaW5nIChkZWZhdWx0KQotICAgb3Igd3JpdGluZy4gV2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0Ci0gICBleGlzdCwgYW5kIHRydW5jYXRlZCBvdGhlcndpc2UuIElmICpidWZmZXJpbmcqIGlzIGdpdmVuLCBgYDBgYCBtZWFucwotICAgdW5idWZmZXJlZCwgYW5kIGxhcmdlciBudW1iZXJzIHNwZWNpZnkgdGhlIGJ1ZmZlciBzaXplOyB0aGUgZGVmYXVsdCBpcwotICAgYGAwYGAuIElmICpjb21wcmVzc2xldmVsKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIGBgMWBgIGFuZAotICAgYGA5YGA7IHRoZSBkZWZhdWx0IGlzIGBgOWBgLiBBZGQgYSBgYCdVJ2BgIHRvIG1vZGUgdG8gb3BlbiB0aGUgZmlsZSBmb3IgaW5wdXQKLSAgIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuICBBbnkgbGluZSBlbmRpbmcgaW4gdGhlIGlucHV0IGZpbGUgd2lsbCBiZQotICAgc2VlbiBhcyBhIGBgJ1xuJ2BgIGluIFB5dGhvbi4gIEFsc28sIGEgZmlsZSBzbyBvcGVuZWQgZ2FpbnMgdGhlIGF0dHJpYnV0ZQotICAgOmF0dHI6YG5ld2xpbmVzYDsgdGhlIHZhbHVlIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyBvbmUgb2YgYGBOb25lYGAgKG5vIG5ld2xpbmUKLSAgIHJlYWQgeWV0KSwgYGAnXHInYGAsIGBgJ1xuJ2BgLCBgYCdcclxuJ2BgIG9yIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlCi0gICBuZXdsaW5lIHR5cGVzIHNlZW4uIFVuaXZlcnNhbCBuZXdsaW5lcyBhcmUgYXZhaWxhYmxlIG9ubHkgd2hlbgotICAgcmVhZGluZy4gSW5zdGFuY2VzIHN1cHBvcnQgaXRlcmF0aW9uIGluIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgOmNsYXNzOmBmaWxlYAotICAgaW5zdGFuY2VzLgorICAgSWYgKmZpbGVuYW1lKiBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsIG9wZW4gdGhlIG5hbWVkIGZpbGUKKyAgIGRpcmVjdGx5LiBPdGhlcndpc2UsICpmaWxlbmFtZSogc2hvdWxkIGJlIGEgOnRlcm06YGZpbGUgb2JqZWN0YCwgd2hpY2ggd2lsbAorICAgYmUgdXNlZCB0byByZWFkIG9yIHdyaXRlIHRoZSBjb21wcmVzc2VkIGRhdGEuCiAKLSAgIDpjbGFzczpgQloyRmlsZWAgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYGAncidgYCBmb3IgcmVhZGluZyAoZGVmYXVsdCksIGBgJ3cnYGAgZm9yCisgICBvdmVyd3JpdGluZywgb3IgYGAnYSdgYCBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzCisgICBgYCdyYidgYCwgYGAnd2InYGAsIGFuZCBgYCdhYidgYCByZXNwZWN0aXZlbHkuCisKKyAgIElmICpmaWxlbmFtZSogaXMgYSBmaWxlIG9iamVjdCAocmF0aGVyIHRoYW4gYW4gYWN0dWFsIGZpbGUgbmFtZSksIGEgbW9kZSBvZgorICAgYGAndydgYCBkb2VzIG5vdCB0cnVuY2F0ZSB0aGUgZmlsZSwgYW5kIGlzIGluc3RlYWQgZXF1aXZhbGVudCB0byBgYCdhJ2BgLgorCisgICBUaGUgKmJ1ZmZlcmluZyogYXJndW1lbnQgaXMgaWdub3JlZC4gSXRzIHVzZSBpcyBkZXByZWNhdGVkLgorCisgICBJZiAqbW9kZSogaXMgYGAndydgYCBvciBgYCdhJ2BgLCAqY29tcHJlc3NsZXZlbCogY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4KKyAgIGBgMWBgIGFuZCBgYDlgYCBzcGVjaWZ5aW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjogYGAxYGAgcHJvZHVjZXMgdGhlCisgICBsZWFzdCBjb21wcmVzc2lvbiwgYW5kIGBgOWBgIChkZWZhdWx0KSBwcm9kdWNlcyB0aGUgbW9zdCBjb21wcmVzc2lvbi4KKworICAgSWYgKm1vZGUqIGlzIGBgJ3InYGAsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBtdWx0aXBsZQorICAgY29tcHJlc3NlZCBzdHJlYW1zLgorCisgICA6Y2xhc3M6YEJaMkZpbGVgIHByb3ZpZGVzIGFsbCBvZiB0aGUgbWVtYmVycyBzcGVjaWZpZWQgYnkgdGhlCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCwgZXhjZXB0IGZvciA6bWV0aDpgZGV0YWNoYCBhbmQgOm1ldGg6YHRydW5jYXRlYC4KKyAgIEl0ZXJhdGlvbiBhbmQgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYXJlIHN1cHBvcnRlZC4KKworICAgOmNsYXNzOmBCWjJGaWxlYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBwZWVrKFtuXSkKKworICAgICAgUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uIEF0IGxlYXN0IG9uZQorICAgICAgYnl0ZSBvZiBkYXRhIHdpbGwgYmUgcmV0dXJuZWQgKHVubGVzcyBhdCBFT0YpLiBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzCisgICAgICByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBTdXBwb3J0IGZvciB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YGZpbGVub2AsIDptZXRoOmByZWFkYWJsZWAsIDptZXRoOmBzZWVrYWJsZWAsIDptZXRoOmB3cml0YWJsZWAsCisgICAgICA6bWV0aDpgcmVhZDFgIGFuZCA6bWV0aDpgcmVhZGludG9gIG1ldGhvZHMgd2VyZSBhZGRlZC4KIAotICAgLi4gbm90ZTo6CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCB3YXMgYWRkZWQgZm9yICpmaWxlbmFtZSogYmVpbmcgYSA6dGVybTpgZmlsZSBvYmplY3RgIGluc3RlYWQgb2YgYW4KKyAgICAgIGFjdHVhbCBmaWxlbmFtZS4KIAotICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCBzdXBwb3J0IGlucHV0IGZpbGVzIGNvbnRhaW5pbmcgbXVsdGlwbGUgc3RyZWFtcyAoc3VjaAotICAgICAgYXMgdGhvc2UgcHJvZHVjZWQgYnkgdGhlIDpwcm9ncmFtOmBwYnppcDJgIHRvb2wpLiBXaGVuIHJlYWRpbmcgc3VjaCBhbgotICAgICAgaW5wdXQgZmlsZSwgb25seSB0aGUgZmlyc3Qgc3RyZWFtIHdpbGwgYmUgYWNjZXNzaWJsZS4gSWYgeW91IHJlcXVpcmUKLSAgICAgIHN1cHBvcnQgZm9yIG11bHRpLXN0cmVhbSBmaWxlcywgY29uc2lkZXIgdXNpbmcgdGhlIHRoaXJkLXBhcnR5Ci0gICAgICA6bW9kOmBiejJmaWxlYCBtb2R1bGUgKGF2YWlsYWJsZSBmcm9tCi0gICAgICBgUHlQSSA8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL2J6MmZpbGU+YF8pLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhCi0gICAgICBiYWNrcG9ydCBvZiBQeXRob24gMy4zJ3MgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcywgd2hpY2ggZG9lcyBzdXBwb3J0CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIGBgJ2EnYGAgKGFwcGVuZCkgbW9kZSB3YXMgYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgcmVhZGluZwogICAgICAgbXVsdGktc3RyZWFtIGZpbGVzLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKLQotICAgICAgQ2xvc2UgdGhlIGZpbGUuIFNldHMgZGF0YSBhdHRyaWJ1dGUgOmF0dHI6YGNsb3NlZGAgdG8gdHJ1ZS4gQSBjbG9zZWQgZmlsZQotICAgICAgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuIDptZXRoOmBjbG9zZWAgbWF5IGJlIGNhbGxlZAotICAgICAgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KLQotCi0gICAuLiBtZXRob2Q6OiByZWFkKFtzaXplXSkKLQotICAgICAgUmVhZCBhdCBtb3N0ICpzaXplKiB1bmNvbXByZXNzZWQgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZSBzdHJpbmcuIElmIHRoZQotICAgICAgKnNpemUqIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCi0KLQotICAgLi4gbWV0aG9kOjogcmVhZGxpbmUoW3NpemVdKQotCi0gICAgICBSZXR1cm4gdGhlIG5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGUgc3RyaW5nLCByZXRhaW5pbmcgbmV3bGluZS4KLSAgICAgIEEgbm9uLW5lZ2F0aXZlICpzaXplKiBhcmd1bWVudCBsaW1pdHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvCi0gICAgICByZXR1cm4gKGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQgdGhlbikuIFJldHVybiBhbiBlbXB0eSBieXRlCi0gICAgICBzdHJpbmcgYXQgRU9GLgotCi0KLSAgIC4uIG1ldGhvZDo6IHJlYWRsaW5lcyhbc2l6ZV0pCi0KLSAgICAgIFJldHVybiBhIGxpc3Qgb2YgbGluZXMgcmVhZC4gVGhlIG9wdGlvbmFsICpzaXplKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIGlzIGFuCi0gICAgICBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lcyByZXR1cm5lZC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZWVrKG9mZnNldFssIHdoZW5jZV0pCi0KLSAgICAgIE1vdmUgdG8gbmV3IGZpbGUgcG9zaXRpb24uIEFyZ3VtZW50ICpvZmZzZXQqIGlzIGEgYnl0ZSBjb3VudC4gT3B0aW9uYWwKLSAgICAgIGFyZ3VtZW50ICp3aGVuY2UqIGRlZmF1bHRzIHRvIGBgb3MuU0VFS19TRVRgYCBvciBgYDBgYCAob2Zmc2V0IGZyb20gc3RhcnQKLSAgICAgIG9mIGZpbGU7IG9mZnNldCBzaG91bGQgYmUgYGA+PSAwYGApOyBvdGhlciB2YWx1ZXMgYXJlIGBgb3MuU0VFS19DVVJgYCBvcgotICAgICAgYGAxYGAgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbjsgb2Zmc2V0IGNhbiBiZSBwb3NpdGl2ZSBvcgotICAgICAgbmVnYXRpdmUpLCBhbmQgYGBvcy5TRUVLX0VORGBgIG9yIGBgMmBgIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlOwotICAgICAgb2Zmc2V0IGlzIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kCi0gICAgICB0aGUgZW5kIG9mIGEgZmlsZSkuCi0KLSAgICAgIE5vdGUgdGhhdCBzZWVraW5nIG9mIGJ6MiBmaWxlcyBpcyBlbXVsYXRlZCwgYW5kIGRlcGVuZGluZyBvbiB0aGUKLSAgICAgIHBhcmFtZXRlcnMgdGhlIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCi0KLQotICAgLi4gbWV0aG9kOjogdGVsbCgpCi0KLSAgICAgIFJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyLgotCi0KLSAgIC4uIG1ldGhvZDo6IHdyaXRlKGRhdGEpCi0KLSAgICAgIFdyaXRlIHRoZSBieXRlIHN0cmluZyAqZGF0YSogdG8gZmlsZS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsCi0gICAgICA6bWV0aDpgY2xvc2VgIG1heSBiZSBuZWVkZWQgYmVmb3JlIHRoZSBmaWxlIG9uIGRpc2sgcmVmbGVjdHMgdGhlIGRhdGEKLSAgICAgIHdyaXR0ZW4uCi0KLQotICAgLi4gbWV0aG9kOjogd3JpdGVsaW5lcyhzZXF1ZW5jZV9vZl9ieXRlX3N0cmluZ3MpCi0KLSAgICAgIFdyaXRlIHRoZSBzZXF1ZW5jZSBvZiBieXRlIHN0cmluZ3MgdG8gdGhlIGZpbGUuIE5vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90Ci0gICAgICBhZGRlZC4gVGhlIHNlcXVlbmNlIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZyBieXRlIHN0cmluZ3MuCi0gICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvciBlYWNoIGJ5dGUgc3RyaW5nLgotCi0KLVNlcXVlbnRpYWwgKGRlKWNvbXByZXNzaW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TZXF1ZW50aWFsIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIGlzIGRvbmUgdXNpbmcgdGhlIGNsYXNzZXMKLTpjbGFzczpgQloyQ29tcHJlc3NvcmAgYW5kIDpjbGFzczpgQloyRGVjb21wcmVzc29yYC4KLQorSW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWw9OSkKIAogICAgQ3JlYXRlIGEgbmV3IGNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBjb21wcmVzcyBkYXRhCi0gICBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QsIHVzZSB0aGUKLSAgIDpmdW5jOmBjb21wcmVzc2AgZnVuY3Rpb24gaW5zdGVhZC4gVGhlICpjb21wcmVzc2xldmVsKiBwYXJhbWV0ZXIsIGlmIGdpdmVuLAotICAgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIGBgMWBgIGFuZCBgYDlgYDsgdGhlIGRlZmF1bHQgaXMgYGA5YGAuCisgICBpbmNyZW1lbnRhbGx5LiBGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgOmZ1bmM6YGNvbXByZXNzYCBmdW5jdGlvbgorICAgaW5zdGVhZC4KKworICAgKmNvbXByZXNzbGV2ZWwqLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIGBgMWBgIGFuZCBgYDlgYC4gVGhlCisgICBkZWZhdWx0IGlzIGBgOWBgLgogCiAgICAuLiBtZXRob2Q6OiBjb21wcmVzcyhkYXRhKQogCi0gICAgICBQcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rcyBvZgotICAgICAgY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBXaGVuIHlvdSd2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0bwotICAgICAgY29tcHJlc3MsIGNhbGwgdGhlIDptZXRoOmBmbHVzaGAgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcywKLSAgICAgIGFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIGludGVybmFsIGJ1ZmZlcnMuCisgICAgICBQcm92aWRlIGRhdGEgdG8gdGhlIGNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgY29tcHJlc3NlZCBkYXRhCisgICAgICBpZiBwb3NzaWJsZSwgb3IgYW4gZW1wdHkgYnl0ZSBzdHJpbmcgb3RoZXJ3aXNlLgorCisgICAgICBXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvIHRoZSBjb21wcmVzc29yLCBjYWxsIHRoZQorICAgICAgOm1ldGg6YGZsdXNoYCBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLgogCiAKICAgIC4uIG1ldGhvZDo6IGZsdXNoKCkKIAotICAgICAgRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzIGFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIGludGVybmFsCi0gICAgICBidWZmZXJzLiBZb3UgbXVzdCBub3QgdXNlIHRoZSBjb21wcmVzc29yIG9iamVjdCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLgorICAgICAgRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdCBpbgorICAgICAgaW50ZXJuYWwgYnVmZmVycy4KKworICAgICAgVGhlIGNvbXByZXNzb3Igb2JqZWN0IG1heSBub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCiAKIAogLi4gY2xhc3M6OiBCWjJEZWNvbXByZXNzb3IoKQogCiAgICBDcmVhdGUgYSBuZXcgZGVjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gZGVjb21wcmVzcyBkYXRhCi0gICBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZQotICAgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9uIGluc3RlYWQuCisgICBpbmNyZW1lbnRhbGx5LiBGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9uCisgICBpbnN0ZWFkLgorCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgdHJhbnNwYXJlbnRseSBoYW5kbGUgaW5wdXRzIGNvbnRhaW5pbmcgbXVsdGlwbGUKKyAgICAgIGNvbXByZXNzZWQgc3RyZWFtcywgdW5saWtlIDpmdW5jOmBkZWNvbXByZXNzYCBhbmQgOmNsYXNzOmBCWjJGaWxlYC4gSWYKKyAgICAgIHlvdSBuZWVkIHRvIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAsCisgICAgICB5b3UgbXVzdCB1c2UgYSBuZXcgZGVjb21wcmVzc29yIGZvciBlYWNoIHN0cmVhbS4KIAogICAgLi4gbWV0aG9kOjogZGVjb21wcmVzcyhkYXRhKQogCi0gICAgICBQcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mCi0gICAgICBkZWNvbXByZXNzZWQgZGF0YSB3aGVuZXZlciBwb3NzaWJsZS4gSWYgeW91IHRyeSB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIKLSAgICAgIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIGZvdW5kLCA6ZXhjOmBFT0ZFcnJvcmAgd2lsbCBiZSByYWlzZWQuIElmIGFueSBkYXRhCi0gICAgICB3YXMgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0sIGl0J2xsIGJlIGlnbm9yZWQgYW5kIHNhdmVkIGluCi0gICAgICA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKyAgICAgIFByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZAorICAgICAgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYW4gZW1wdHkgYnl0ZSBzdHJpbmcgb3RoZXJ3aXNlLgorCisgICAgICBBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN0cmVhbSBpcworICAgICAgcmVhY2hlZCByYWlzZXMgYW4gOmV4YzpgRU9GRXJyb3JgLiBJZiBhbnkgZGF0YSBpcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mCisgICAgICB0aGUgc3RyZWFtLCBpdCBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YHVudXNlZF9kYXRhYCBhdHRyaWJ1dGUuCisKKworICAgLi4gYXR0cmlidXRlOjogZW9mCisKKyAgICAgIFRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHVudXNlZF9kYXRhCisKKyAgICAgIERhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uCisKKyAgICAgIElmIHRoaXMgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaGFzIGJlZW4KKyAgICAgIHJlYWNoZWQsIGl0cyB2YWx1ZSB3aWxsIGJlIGBgYicnYGAuCiAKIAogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT25lLXNob3QgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgOmZ1bmM6YGNvbXByZXNzYAotYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbnMuCi0KLQogLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBjb21wcmVzc2xldmVsPTkpCiAKLSAgIENvbXByZXNzICpkYXRhKiBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBzZXF1ZW50aWFsbHksIHVzZQotICAgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBpbnN0ZWFkLiBUaGUgKmNvbXByZXNzbGV2ZWwqIHBhcmFtZXRlciwKLSAgIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgOyB0aGUgZGVmYXVsdCBpcyBgYDlgYC4KKyAgIENvbXByZXNzICpkYXRhKi4KKworICAgKmNvbXByZXNzbGV2ZWwqLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIGBgMWBgIGFuZCBgYDlgYC4gVGhlCisgICBkZWZhdWx0IGlzIGBgOWBgLgorCisgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhIDpjbGFzczpgQloyQ29tcHJlc3NvcmAgaW5zdGVhZC4KIAogCiAuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YSkKIAotICAgRGVjb21wcmVzcyAqZGF0YSogaW4gb25lIHNob3QuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBzZXF1ZW50aWFsbHksCi0gICB1c2UgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGluc3RlYWQuCisgICBEZWNvbXByZXNzICpkYXRhKi4KKworICAgSWYgKmRhdGEqIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZGVjb21wcmVzcworICAgYWxsIG9mIHRoZSBzdHJlYW1zLgorCisgICBGb3IgaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbiwgdXNlIGEgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBtdWx0aS1zdHJlYW0gaW5wdXRzIHdhcyBhZGRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY2h1bmsucnN0IGIvRG9jL2xpYnJhcnkvY2h1bmsucnN0CmluZGV4IGQzNTU4YTQuLmMxYmE0OTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NodW5rLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jaHVuay5yc3QKQEAgLTg0LDggKzg0LDkgQEAKICAgICAgIENsb3NlIGFuZCBza2lwIHRvIHRoZSBlbmQgb2YgdGhlIGNodW5rLiAgVGhpcyBkb2VzIG5vdCBjbG9zZSB0aGUKICAgICAgIHVuZGVybHlpbmcgZmlsZS4KIAotICAgVGhlIHJlbWFpbmluZyBtZXRob2RzIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAgaWYgY2FsbGVkIGFmdGVyIHRoZQotICAgOm1ldGg6YGNsb3NlYCBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgorICAgVGhlIHJlbWFpbmluZyBtZXRob2RzIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgY2FsbGVkIGFmdGVyIHRoZQorICAgOm1ldGg6YGNsb3NlYCBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLiAgQmVmb3JlIFB5dGhvbiAzLjMsIHRoZXkgdXNlZCB0bworICAgcmFpc2UgOmV4YzpgSU9FcnJvcmAsIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAgICAuLiBtZXRob2Q6OiBpc2F0dHkoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY21kLnJzdCBiL0RvYy9saWJyYXJ5L2NtZC5yc3QKaW5kZXggOTQzYzA0YS4uOTcyMjkyOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY21kLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jbWQucnN0CkBAIC0yODUsOCArMjg1LDggQEAKICAgICAgICAgZGVmIGRvX3BsYXliYWNrKHNlbGYsIGFyZyk6CiAgICAgICAgICAgICAnUGxheWJhY2sgY29tbWFuZHMgZnJvbSBhIGZpbGU6ICBQTEFZQkFDSyByb3NlLmNtZCcKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQotICAgICAgICAgICAgY21kcyA9IG9wZW4oYXJnKS5yZWFkKCkuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICBzZWxmLmNtZHF1ZXVlLmV4dGVuZChjbWRzKQorICAgICAgICAgICAgd2l0aCBvcGVuKGFyZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmNtZHF1ZXVlLmV4dGVuZChmLnJlYWQoKS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIGRlZiBwcmVjbWQoc2VsZiwgbGluZSk6CiAgICAgICAgICAgICBsaW5lID0gbGluZS5sb3dlcigpCiAgICAgICAgICAgICBpZiBzZWxmLmZpbGUgYW5kICdwbGF5YmFjaycgbm90IGluIGxpbmU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0IGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAppbmRleCA3NjJiYjk4Li4yOGVhODlkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKQEAgLTE1NSwxMyArMTU1LDE2IEBACiAgICB3aGVuICpuYW1lKiBpcyBzcGVjaWZpZWQgYXMgdGhlIGVycm9ycyBwYXJhbWV0ZXIuCiAKICAgIEZvciBlbmNvZGluZyAqZXJyb3JfaGFuZGxlciogd2lsbCBiZSBjYWxsZWQgd2l0aCBhIDpleGM6YFVuaWNvZGVFbmNvZGVFcnJvcmAKLSAgIGluc3RhbmNlLCB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVycm9yLiBUaGUgZXJyb3IKLSAgIGhhbmRsZXIgbXVzdCBlaXRoZXIgcmFpc2UgdGhpcyBvciBhIGRpZmZlcmVudCBleGNlcHRpb24gb3IgcmV0dXJuIGEgdHVwbGUgd2l0aCBhCi0gICByZXBsYWNlbWVudCBmb3IgdGhlIHVuZW5jb2RhYmxlIHBhcnQgb2YgdGhlIGlucHV0IGFuZCBhIHBvc2l0aW9uIHdoZXJlIGVuY29kaW5nCi0gICBzaG91bGQgY29udGludWUuIFRoZSBlbmNvZGVyIHdpbGwgZW5jb2RlIHRoZSByZXBsYWNlbWVudCBhbmQgY29udGludWUgZW5jb2RpbmcKLSAgIHRoZSBvcmlnaW5hbCBpbnB1dCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBOZWdhdGl2ZSBwb3NpdGlvbiB2YWx1ZXMgd2lsbCBiZQotICAgdHJlYXRlZCBhcyBiZWluZyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuIElmIHRoZSByZXN1bHRpbmcKLSAgIHBvc2l0aW9uIGlzIG91dCBvZiBib3VuZCBhbiA6ZXhjOmBJbmRleEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIGluc3RhbmNlLCB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVycm9yLiBUaGUKKyAgIGVycm9yIGhhbmRsZXIgbXVzdCBlaXRoZXIgcmFpc2UgdGhpcyBvciBhIGRpZmZlcmVudCBleGNlcHRpb24gb3IgcmV0dXJuIGEKKyAgIHR1cGxlIHdpdGggYSByZXBsYWNlbWVudCBmb3IgdGhlIHVuZW5jb2RhYmxlIHBhcnQgb2YgdGhlIGlucHV0IGFuZCBhIHBvc2l0aW9uCisgICB3aGVyZSBlbmNvZGluZyBzaG91bGQgY29udGludWUuIFRoZSByZXBsYWNlbWVudCBtYXkgYmUgZWl0aGVyIDpjbGFzczpgc3RyYCBvcgorICAgOmNsYXNzOmBieXRlc2AuICBJZiB0aGUgcmVwbGFjZW1lbnQgaXMgYnl0ZXMsIHRoZSBlbmNvZGVyIHdpbGwgc2ltcGx5IGNvcHkKKyAgIHRoZW0gaW50byB0aGUgb3V0cHV0IGJ1ZmZlci4gSWYgdGhlIHJlcGxhY2VtZW50IGlzIGEgc3RyaW5nLCB0aGUgZW5jb2RlciB3aWxsCisgICBlbmNvZGUgdGhlIHJlcGxhY2VtZW50LiAgRW5jb2RpbmcgY29udGludWVzIG9uIG9yaWdpbmFsIGlucHV0IGF0IHRoZQorICAgc3BlY2lmaWVkIHBvc2l0aW9uLiBOZWdhdGl2ZSBwb3NpdGlvbiB2YWx1ZXMgd2lsbCBiZSB0cmVhdGVkIGFzIGJlaW5nCisgICByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuIElmIHRoZSByZXN1bHRpbmcgcG9zaXRpb24gaXMgb3V0IG9mCisgICBib3VuZCBhbiA6ZXhjOmBJbmRleEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAogICAgRGVjb2RpbmcgYW5kIHRyYW5zbGF0aW5nIHdvcmtzIHNpbWlsYXIsIGV4Y2VwdCA6ZXhjOmBVbmljb2RlRGVjb2RlRXJyb3JgIG9yCiAgICA6ZXhjOmBVbmljb2RlVHJhbnNsYXRlRXJyb3JgIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGFuZCB0aGF0IHRoZQpAQCAtNDU4LDcgKzQ2MSw4IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlc2V0KCkKIAotICAgICAgUmVzZXQgdGhlIGVuY29kZXIgdG8gdGhlIGluaXRpYWwgc3RhdGUuCisgICAgICBSZXNldCB0aGUgZW5jb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIG91dHB1dCBpcyBkaXNjYXJkZWQ6IGNhbGwKKyAgICAgIGBgLmVuY29kZSgnJywgZmluYWw9VHJ1ZSlgYCB0byByZXNldCB0aGUgZW5jb2RlciBhbmQgdG8gZ2V0IHRoZSBvdXRwdXQuCiAKIAogLi4gbWV0aG9kOjogSW5jcmVtZW50YWxFbmNvZGVyLmdldHN0YXRlKCkKQEAgLTc4NiwxMSArNzkwLDkgQEAKIEVuY29kaW5ncyBhbmQgVW5pY29kZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVN0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzICh0byBiZSBwcmVjaXNlCi1hcyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhcnJheXMpLiBEZXBlbmRpbmcgb24gdGhlIHdheSBQeXRob24gaXMgY29tcGlsZWQgKGVpdGhlcgotdmlhIGBgLS13aXRob3V0LXdpZGUtdW5pY29kZWBgIG9yIGBgLS13aXRoLXdpZGUtdW5pY29kZWBgLCB3aXRoIHRoZQotZm9ybWVyIGJlaW5nIHRoZSBkZWZhdWx0KSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBpcyBlaXRoZXIgYSAxNi1iaXQgb3IgMzItYml0IGRhdGEKLXR5cGUuIE9uY2UgYSBzdHJpbmcgb2JqZWN0IGlzIHVzZWQgb3V0c2lkZSBvZiBDUFUgYW5kIG1lbW9yeSwgQ1BVIGVuZGlhbm5lc3MKK1N0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzIGluIHJhbmdlIGBgMCAtIDEwRkZGRmBgCisoc2VlIDpwZXA6YDM5M2AgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24pLgorT25jZSBhIHN0cmluZyBvYmplY3QgaXMgdXNlZCBvdXRzaWRlIG9mIENQVSBhbmQgbWVtb3J5LCBDUFUgZW5kaWFubmVzcwogYW5kIGhvdyB0aGVzZSBhcnJheXMgYXJlIHN0b3JlZCBhcyBieXRlcyBiZWNvbWUgYW4gaXNzdWUuICBUcmFuc2Zvcm1pbmcgYQogc3RyaW5nIG9iamVjdCBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgaXMgY2FsbGVkIGVuY29kaW5nIGFuZCByZWNyZWF0aW5nIHRoZQogc3RyaW5nIG9iamVjdCBmcm9tIHRoZSBzZXF1ZW5jZSBvZiBieXRlcyBpcyBrbm93biBhcyBkZWNvZGluZy4gIFRoZXJlIGFyZSBtYW55CkBAIC05MDEsNiArOTAzLDE1IEBACiBjYXNlIG9yIHVzZSBhIGh5cGhlbiBpbnN0ZWFkIG9mIGFuIHVuZGVyc2NvcmUgYXJlIGFsc28gdmFsaWQgYWxpYXNlczsgdGhlcmVmb3JlLAogZS5nLiBgYCd1dGYtOCdgYCBpcyBhIHZhbGlkIGFsaWFzIGZvciB0aGUgYGAndXRmXzgnYGAgY29kZWMuCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgU29tZSBjb21tb24gZW5jb2RpbmdzIGNhbiBieXBhc3MgdGhlIGNvZGVjcyBsb29rdXAgbWFjaGluZXJ5IHRvCisgICBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgVGhlc2Ugb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgYXJlIG9ubHkKKyAgIHJlY29nbml6ZWQgYnkgQ1B5dGhvbiBmb3IgYSBsaW1pdGVkIHNldCBvZiBhbGlhc2VzOiB1dGYtOCwgdXRmOCwKKyAgIGxhdGluLTEsIGxhdGluMSwgaXNvLTg4NTktMSwgbWJjcyAoV2luZG93cyBvbmx5KSwgYXNjaWksIHV0Zi0xNiwKKyAgIGFuZCB1dGYtMzIuICBVc2luZyBhbHRlcm5hdGl2ZSBzcGVsbGluZ3MgZm9yIHRoZXNlIGVuY29kaW5ncyBtYXkKKyAgIHJlc3VsdCBpbiBzbG93ZXIgZXhlY3V0aW9uLgorCiBNYW55IG9mIHRoZSBjaGFyYWN0ZXIgc2V0cyBzdXBwb3J0IHRoZSBzYW1lIGxhbmd1YWdlcy4gVGhleSB2YXJ5IGluIGluZGl2aWR1YWwKIGNoYXJhY3RlcnMgKGUuZy4gd2hldGhlciB0aGUgRVVSTyBTSUdOIGlzIHN1cHBvcnRlZCBvciBub3QpLCBhbmQgaW4gdGhlCiBhc3NpZ25tZW50IG9mIGNoYXJhY3RlcnMgdG8gY29kZSBwb3NpdGlvbnMuIEZvciB0aGUgRXVyb3BlYW4gbGFuZ3VhZ2VzIGluCkBAIC0xMDAzLDYgKzEwMTQsMTEgQEAKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgY3AxMjU4ICAgICAgICAgIHwgd2luZG93cy0xMjU4ICAgICAgICAgICAgICAgICAgIHwgVmlldG5hbWVzZSAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgY3A2NTAwMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2luZG93cyBvbmx5OiBXaW5kb3dzIFVURi04ICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKGBgQ1BfVVRGOGBgKSAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4gdmVyc2lvbmFkZGVkOjogMy4zICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2pwICAgICAgICAgIHwgZXVjanAsIHVqaXMsIHUtamlzICAgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2ppc18yMDA0ICAgIHwgamlzeDAyMTMsIGV1Y2ppczIwMDQgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTExNjAsNiArMTE3Niw4IEBACiB8IHVuaWNvZGVfaW50ZXJuYWwgICB8ICAgICAgICAgfCBSZXR1cm4gdGhlIGludGVybmFsICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IHJlcHJlc2VudGF0aW9uIG9mIHRoZSAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgb3BlcmFuZCAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIGRlcHJlY2F0ZWQ6OiAzLjMgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFRoZSBmb2xsb3dpbmcgY29kZWNzIHByb3ZpZGUgYnl0ZXMtdG8tYnl0ZXMgbWFwcGluZ3MuCkBAIC0xMjcyLDEyICsxMjkwLDEzIEBACiAuLiBtb2R1bGU6OiBlbmNvZGluZ3MubWJjcwogICAgOnN5bm9wc2lzOiBXaW5kb3dzIEFOU0kgY29kZXBhZ2UKIAotRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLiBUaGlzIGNvZGVjIG9ubHkKLXN1cHBvcnRzIGBgJ3N0cmljdCdgYCBhbmQgYGAncmVwbGFjZSdgYCBlcnJvciBoYW5kbGVycyB0byBlbmNvZGUsIGFuZAotYGAnc3RyaWN0J2BgIGFuZCBgYCdpZ25vcmUnYGAgZXJyb3IgaGFuZGxlcnMgdG8gZGVjb2RlLgorRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLgogCiBBdmFpbGFiaWxpdHk6IFdpbmRvd3Mgb25seS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFN1cHBvcnQgYW55IGVycm9yIGhhbmRsZXIuCisKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBCZWZvcmUgMy4yLCB0aGUgKmVycm9ycyogYXJndW1lbnQgd2FzIGlnbm9yZWQ7IGBgJ3JlcGxhY2UnYGAgd2FzIGFsd2F5cyB1c2VkCiAgICB0byBlbmNvZGUsIGFuZCBgYCdpZ25vcmUnYGAgdG8gZGVjb2RlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4ZWI5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTAsMCArMSwxODIgQEAKKzptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgLS0tIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyBmb3IgQ29udGFpbmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGNvbGxlY3Rpb25zLmFiYworICAgOnN5bm9wc2lzOiBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGNvbnRhaW5lcnMKKy4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgRm9ybWVybHksIHRoaXMgbW9kdWxlIHdhcyBwYXJ0IG9mIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorCisuLiB0ZXN0c2V0dXA6OiAqCisKKyAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICoKKyAgIGltcG9ydCBpdGVydG9vbHMKKyAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29sbGVjdGlvbnMvYWJjLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmAgdGhhdAorY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyIGEgY2xhc3MgcHJvdmlkZXMgYSBwYXJ0aWN1bGFyIGludGVyZmFjZTsgZm9yCitleGFtcGxlLCB3aGV0aGVyIGl0IGlzIGhhc2hhYmxlIG9yIHdoZXRoZXIgaXQgaXMgYSBtYXBwaW5nLgorCisKKy4uIF9jb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM6CisKK0NvbGxlY3Rpb25zIEFic3RyYWN0IEJhc2UgQ2xhc3NlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb2xsZWN0aW9ucyBtb2R1bGUgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgOnRlcm06YEFCQ3MgPGFic3RyYWN0IGJhc2UgY2xhc3M+YDoKKworPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBQkMgICAgICAgICAgICAgICAgICAgICAgICBJbmhlcml0cyBmcm9tICAgICAgICAgIEFic3RyYWN0IE1ldGhvZHMgICAgICAgIE1peGluIE1ldGhvZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCis6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAorOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAorCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKworOmNsYXNzOmBNdXRhYmxlU2VxdWVuY2VgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgLCAgICAgICAgYGBhcHBlbmRgYCwgYGByZXZlcnNlYGAsIGBgZXh0ZW5kYGAsIGBgcG9wYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5zZXJ0YGAgICAgICAgICAgICAgIGBgcmVtb3ZlYGAsIGBgY2xlYXJgYCwgYW5kIGBgX19pYWRkX19gYAorCis6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorCis6Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgYWRkYGAsICAgICAgICAgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAgICAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2lhbmRfX2BgLCBgYF9faXhvcl9fYGAsIGFuZCBgYF9faXN1Yl9fYGAKKworOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCisKKzpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgICAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBgc2V0ZGVmYXVsdGBgCisKKworOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAorOmNsYXNzOmBJdGVtc1ZpZXdgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgS2V5c1ZpZXdgICAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFZhbHVlc1ZpZXdgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYAorPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLi4gY2xhc3M6OiBDb250YWluZXIKKyAgICAgICAgICAgSGFzaGFibGUKKyAgICAgICAgICAgU2l6ZWQKKyAgICAgICAgICAgQ2FsbGFibGUKKworICAgQUJDcyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgcmVzcGVjdGl2ZWx5IHRoZSBtZXRob2RzIDptZXRoOmBfX2NvbnRhaW5zX19gLAorICAgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9fbGVuX19gLCBhbmQgOm1ldGg6YF9fY2FsbF9fYC4KKworLi4gY2xhc3M6OiBJdGVyYWJsZQorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCisKKy4uIGNsYXNzOjogSXRlcmF0b3IKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBhbmQgOm1ldGg6YF9fbmV4dF9fYCBtZXRob2RzLgorICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhdG9yYC4KKworLi4gY2xhc3M6OiBTZXF1ZW5jZQorICAgICAgICAgICBNdXRhYmxlU2VxdWVuY2UKKworICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIDp0ZXJtOmBzZXF1ZW5jZXMgPHNlcXVlbmNlPmAuCisKKy4uIGNsYXNzOjogU2V0CisgICAgICAgICAgIE11dGFibGVTZXQKKworICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIHNldHMuCisKKy4uIGNsYXNzOjogTWFwcGluZworICAgICAgICAgICBNdXRhYmxlTWFwcGluZworCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YG1hcHBpbmdzIDxtYXBwaW5nPmAuCisKKy4uIGNsYXNzOjogTWFwcGluZ1ZpZXcKKyAgICAgICAgICAgSXRlbXNWaWV3CisgICAgICAgICAgIEtleXNWaWV3CisgICAgICAgICAgIFZhbHVlc1ZpZXcKKworICAgQUJDcyBmb3IgbWFwcGluZywgaXRlbXMsIGtleXMsIGFuZCB2YWx1ZXMgOnRlcm06YHZpZXdzIDx2aWV3PmAuCisKKworVGhlc2UgQUJDcyBhbGxvdyB1cyB0byBhc2sgY2xhc3NlcyBvciBpbnN0YW5jZXMgaWYgdGhleSBwcm92aWRlCitwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksIGZvciBleGFtcGxlOjoKKworICAgIHNpemUgPSBOb25lCisgICAgaWYgaXNpbnN0YW5jZShteXZhciwgY29sbGVjdGlvbnMuU2l6ZWQpOgorICAgICAgICBzaXplID0gbGVuKG15dmFyKQorCitTZXZlcmFsIG9mIHRoZSBBQkNzIGFyZSBhbHNvIHVzZWZ1bCBhcyBtaXhpbnMgdGhhdCBtYWtlIGl0IGVhc2llciB0byBkZXZlbG9wCitjbGFzc2VzIHN1cHBvcnRpbmcgY29udGFpbmVyIEFQSXMuICBGb3IgZXhhbXBsZSwgdG8gd3JpdGUgYSBjbGFzcyBzdXBwb3J0aW5nCit0aGUgZnVsbCA6Y2xhc3M6YFNldGAgQVBJLCBpdCBvbmx5IG5lY2Vzc2FyeSB0byBzdXBwbHkgdGhlIHRocmVlIHVuZGVybHlpbmcKK2Fic3RyYWN0IG1ldGhvZHM6IDptZXRoOmBfX2NvbnRhaW5zX19gLCA6bWV0aDpgX19pdGVyX19gLCBhbmQgOm1ldGg6YF9fbGVuX19gLgorVGhlIEFCQyBzdXBwbGllcyB0aGUgcmVtYWluaW5nIG1ldGhvZHMgc3VjaCBhcyA6bWV0aDpgX19hbmRfX2AgYW5kCis6bWV0aDpgaXNkaXNqb2ludGAgOjoKKworICAgIGNsYXNzIExpc3RCYXNlZFNldChjb2xsZWN0aW9ucy5TZXQpOgorICAgICAgICAgJycnIEFsdGVybmF0ZSBzZXQgaW1wbGVtZW50YXRpb24gZmF2b3Jpbmcgc3BhY2Ugb3ZlciBzcGVlZAorICAgICAgICAgICAgIGFuZCBub3QgcmVxdWlyaW5nIHRoZSBzZXQgZWxlbWVudHMgdG8gYmUgaGFzaGFibGUuICcnJworICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZXJhYmxlKToKKyAgICAgICAgICAgICBzZWxmLmVsZW1lbnRzID0gbHN0ID0gW10KKyAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gaXRlcmFibGU6CisgICAgICAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBsc3Q6CisgICAgICAgICAgICAgICAgICAgICBsc3QuYXBwZW5kKHZhbHVlKQorICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuZWxlbWVudHMpCisgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gc2VsZi5lbGVtZW50cworICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmVsZW1lbnRzKQorCisgICAgczEgPSBMaXN0QmFzZWRTZXQoJ2FiY2RlZicpCisgICAgczIgPSBMaXN0QmFzZWRTZXQoJ2RlZmdoaScpCisgICAgb3ZlcmxhcCA9IHMxICYgczIgICAgICAgICAgICAjIFRoZSBfX2FuZF9fKCkgbWV0aG9kIGlzIHN1cHBvcnRlZCBhdXRvbWF0aWNhbGx5CisKK05vdGVzIG9uIHVzaW5nIDpjbGFzczpgU2V0YCBhbmQgOmNsYXNzOmBNdXRhYmxlU2V0YCBhcyBhIG1peGluOgorCisoMSkKKyAgIFNpbmNlIHNvbWUgc2V0IG9wZXJhdGlvbnMgY3JlYXRlIG5ldyBzZXRzLCB0aGUgZGVmYXVsdCBtaXhpbiBtZXRob2RzIG5lZWQKKyAgIGEgd2F5IHRvIGNyZWF0ZSBuZXcgaW5zdGFuY2VzIGZyb20gYW4gaXRlcmFibGUuIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBpcworICAgYXNzdW1lZCB0byBoYXZlIGEgc2lnbmF0dXJlIGluIHRoZSBmb3JtIGBgQ2xhc3NOYW1lKGl0ZXJhYmxlKWBgLgorICAgVGhhdCBhc3N1bXB0aW9uIGlzIGZhY3RvcmVkLW91dCB0byBhbiBpbnRlcm5hbCBjbGFzc21ldGhvZCBjYWxsZWQKKyAgIDptZXRoOmBfZnJvbV9pdGVyYWJsZWAgd2hpY2ggY2FsbHMgYGBjbHMoaXRlcmFibGUpYGAgdG8gcHJvZHVjZSBhIG5ldyBzZXQuCisgICBJZiB0aGUgOmNsYXNzOmBTZXRgIG1peGluIGlzIGJlaW5nIHVzZWQgaW4gYSBjbGFzcyB3aXRoIGEgZGlmZmVyZW50CisgICBjb25zdHJ1Y3RvciBzaWduYXR1cmUsIHlvdSB3aWxsIG5lZWQgdG8gb3ZlcnJpZGUgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYAorICAgd2l0aCBhIGNsYXNzbWV0aG9kIHRoYXQgY2FuIGNvbnN0cnVjdCBuZXcgaW5zdGFuY2VzIGZyb20KKyAgIGFuIGl0ZXJhYmxlIGFyZ3VtZW50LgorCisoMikKKyAgIFRvIG92ZXJyaWRlIHRoZSBjb21wYXJpc29ucyAocHJlc3VtYWJseSBmb3Igc3BlZWQsIGFzIHRoZQorICAgc2VtYW50aWNzIGFyZSBmaXhlZCksIHJlZGVmaW5lIDptZXRoOmBfX2xlX19gIGFuZAorICAgdGhlbiB0aGUgb3RoZXIgb3BlcmF0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93IHN1aXQuCisKKygzKQorICAgVGhlIDpjbGFzczpgU2V0YCBtaXhpbiBwcm92aWRlcyBhIDptZXRoOmBfaGFzaGAgbWV0aG9kIHRvIGNvbXB1dGUgYSBoYXNoIHZhbHVlCisgICBmb3IgdGhlIHNldDsgaG93ZXZlciwgOm1ldGg6YF9faGFzaF9fYCBpcyBub3QgZGVmaW5lZCBiZWNhdXNlIG5vdCBhbGwgc2V0cworICAgYXJlIGhhc2hhYmxlIG9yIGltbXV0YWJsZS4gIFRvIGFkZCBzZXQgaGFzaGFiaWx0eSB1c2luZyBtaXhpbnMsCisgICBpbmhlcml0IGZyb20gYm90aCA6bWV0aDpgU2V0YCBhbmQgOm1ldGg6YEhhc2hhYmxlYCwgdGhlbiBkZWZpbmUKKyAgIGBgX19oYXNoX18gPSBTZXQuX2hhc2hgYC4KKworLi4gc2VlYWxzbzo6CisKKyAgICogYE9yZGVyZWRTZXQgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTQvPmBfIGZvciBhbgorICAgICBleGFtcGxlIGJ1aWx0IG9uIDpjbGFzczpgTXV0YWJsZVNldGAuCisKKyAgICogRm9yIG1vcmUgYWJvdXQgQUJDcywgc2VlIHRoZSA6bW9kOmBhYmNgIG1vZHVsZSBhbmQgOnBlcDpgMzExOWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKaW5kZXggN2EyODAyZC4uNmVmMTE0ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdApAQCAtMiwxNyArMiwxNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIG1vZHVsZTo6IGNvbGxlY3Rpb25zCi0gICA6c3lub3BzaXM6IENvbnRhaW5lciBkYXRhdHlwZXMKKyAgICA6c3lub3BzaXM6IENvbnRhaW5lciBkYXRhdHlwZXMKIC4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uQHJjbi5jb20+CiAKIC4uIHRlc3RzZXR1cDo6ICoKIAotICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgotICAgaW1wb3J0IGl0ZXJ0b29scwotICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICoKKyAgICBpbXBvcnQgaXRlcnRvb2xzCisgICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JwogCi0qKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy5weWAgYW5kIDpzb3VyY2U6YExpYi9fYWJjb2xsLnB5YAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHlgCiAKIC0tLS0tLS0tLS0tLS0tCiAKQEAgLTIzLDYgKzIzLDcgQEAKID09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA6ZnVuYzpgbmFtZWR0dXBsZWAgICAgICBmYWN0b3J5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyB0dXBsZSBzdWJjbGFzc2VzIHdpdGggbmFtZWQgZmllbGRzCiA6Y2xhc3M6YGRlcXVlYCAgICAgICAgICBsaXN0LWxpa2UgY29udGFpbmVyIHdpdGggZmFzdCBhcHBlbmRzIGFuZCBwb3BzIG9uIGVpdGhlciBlbmQKKzpjbGFzczpgQ2hhaW5NYXBgICAgICAgIGRpY3QtbGlrZSBjbGFzcyBmb3IgY3JlYXRpbmcgYSBzaW5nbGUgdmlldyBvZiBtdWx0aXBsZSBtYXBwaW5ncwogOmNsYXNzOmBDb3VudGVyYCAgICAgICAgZGljdCBzdWJjbGFzcyBmb3IgY291bnRpbmcgaGFzaGFibGUgb2JqZWN0cwogOmNsYXNzOmBPcmRlcmVkRGljdGAgICAgZGljdCBzdWJjbGFzcyB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgZW50cmllcyB3ZXJlIGFkZGVkCiA6Y2xhc3M6YGRlZmF1bHRkaWN0YCAgICBkaWN0IHN1YmNsYXNzIHRoYXQgY2FsbHMgYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIHN1cHBseSBtaXNzaW5nIHZhbHVlcwpAQCAtMzEsMTAgKzMyLDE2NyBAQAogOmNsYXNzOmBVc2VyU3RyaW5nYCAgICAgd3JhcHBlciBhcm91bmQgc3RyaW5nIG9iamVjdHMgZm9yIGVhc2llciBzdHJpbmcgc3ViY2xhc3NpbmcKID09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUluIGFkZGl0aW9uIHRvIHRoZSBjb25jcmV0ZSBjb250YWluZXIgY2xhc3NlcywgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZSBwcm92aWRlcwotOnJlZjpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxjb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM+YCB0aGF0IGNhbiBiZQotdXNlZCB0byB0ZXN0IHdoZXRoZXIgYSBjbGFzcyBwcm92aWRlcyBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLCBmb3IgZXhhbXBsZSwKLXdoZXRoZXIgaXQgaXMgaGFzaGFibGUgb3IgYSBtYXBwaW5nLgorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICBNb3ZlZCA6cmVmOmBjb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXNgIHRvIHRoZSA6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIG1vZHVsZS4KKyAgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZXkgY29udGludWUgdG8gYmUgdmlzaWJsZSBpbiB0aGlzIG1vZHVsZQorICAgIGFzIHdlbGwuCisKKworOmNsYXNzOmBDaGFpbk1hcGAgb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworQSA6Y2xhc3M6YENoYWluTWFwYCBjbGFzcyBpcyBwcm92aWRlZCBmb3IgcXVpY2tseSBsaW5raW5nIGEgbnVtYmVyIG9mIG1hcHBpbmdzCitzbyB0aGV5IGNhbiBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHVuaXQuICBJdCBpcyBvZnRlbiBtdWNoIGZhc3RlciB0aGFuIGNyZWF0aW5nCithIG5ldyBkaWN0aW9uYXJ5IGFuZCBydW5uaW5nIG11bHRpcGxlIDptZXRoOmB+ZGljdC51cGRhdGVgIGNhbGxzLgorCitUaGUgY2xhc3MgY2FuIGJlIHVzZWQgdG8gc2ltdWxhdGUgbmVzdGVkIHNjb3BlcyBhbmQgaXMgdXNlZnVsIGluIHRlbXBsYXRpbmcuCisKKy4uIGNsYXNzOjogQ2hhaW5NYXAoKm1hcHMpCisKKyAgICBBIDpjbGFzczpgQ2hhaW5NYXBgIGdyb3VwcyBtdWx0aXBsZSBkaWN0cyBvciBvdGhlciBtYXBwaW5ncyB0b2dldGhlciB0bworICAgIGNyZWF0ZSBhIHNpbmdsZSwgdXBkYXRlYWJsZSB2aWV3LiAgSWYgbm8gKm1hcHMqIGFyZSBzcGVjaWZpZWQsIGEgc2luZ2xlIGVtcHR5CisgICAgZGljdGlvbmFyeSBpcyBwcm92aWRlZCBzbyB0aGF0IGEgbmV3IGNoYWluIGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIG1hcHBpbmcuCisKKyAgICBUaGUgdW5kZXJseWluZyBtYXBwaW5ncyBhcmUgc3RvcmVkIGluIGEgbGlzdC4gIFRoYXQgbGlzdCBpcyBwdWJsaWMgYW5kIGNhbgorICAgIGFjY2Vzc2VkIG9yIHVwZGF0ZWQgdXNpbmcgdGhlICptYXBzKiBhdHRyaWJ1dGUuICBUaGVyZSBpcyBubyBvdGhlciBzdGF0ZS4KKworICAgIExvb2t1cHMgc2VhcmNoIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIHN1Y2Nlc3NpdmVseSB1bnRpbCBhIGtleSBpcyBmb3VuZC4gIEluCisgICAgY29udHJhc3QsIHdyaXRlcywgdXBkYXRlcywgYW5kIGRlbGV0aW9ucyBvbmx5IG9wZXJhdGUgb24gdGhlIGZpcnN0IG1hcHBpbmcuCisKKyAgICBBIDpjbGFzczpgQ2hhaW5NYXBgIGluY29ycG9yYXRlcyB0aGUgdW5kZXJseWluZyBtYXBwaW5ncyBieSByZWZlcmVuY2UuICBTbywgaWYKKyAgICBvbmUgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZ3MgZ2V0cyB1cGRhdGVkLCB0aG9zZSBjaGFuZ2VzIHdpbGwgYmUgcmVmbGVjdGVkCisgICAgaW4gOmNsYXNzOmBDaGFpbk1hcGAuCisKKyAgICBBbGwgb2YgdGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgc3VwcG9ydGVkLiAgSW4gYWRkaXRpb24sIHRoZXJlIGlzIGEKKyAgICAqbWFwcyogYXR0cmlidXRlLCBhIG1ldGhvZCBmb3IgY3JlYXRpbmcgbmV3IHN1YmNvbnRleHRzLCBhbmQgYSBwcm9wZXJ0eSBmb3IKKyAgICBhY2Nlc3NpbmcgYWxsIGJ1dCB0aGUgZmlyc3QgbWFwcGluZzoKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1hcHMKKworICAgICAgICBBIHVzZXIgdXBkYXRlYWJsZSBsaXN0IG9mIG1hcHBpbmdzLiAgVGhlIGxpc3QgaXMgb3JkZXJlZCBmcm9tCisgICAgICAgIGZpcnN0LXNlYXJjaGVkIHRvIGxhc3Qtc2VhcmNoZWQuICBJdCBpcyB0aGUgb25seSBzdG9yZWQgc3RhdGUgYW5kIGNhbgorICAgICAgICBiZSBtb2RpZmllZCB0byBjaGFuZ2Ugd2hpY2ggbWFwcGluZ3MgYXJlIHNlYXJjaGVkLiAgVGhlIGxpc3Qgc2hvdWxkCisgICAgICAgIGFsd2F5cyBjb250YWluIGF0IGxlYXN0IG9uZSBtYXBwaW5nLgorCisgICAgLi4gbWV0aG9kOjogbmV3X2NoaWxkKCkKKworICAgICAgICBSZXR1cm5zIGEgbmV3IDpjbGFzczpgQ2hhaW5NYXBgIGNvbnRhaW5pbmcgYSBuZXcgOmNsYXNzOmBkaWN0YCBmb2xsb3dlZCBieQorICAgICAgICBhbGwgb2YgdGhlIG1hcHMgaW4gdGhlIGN1cnJlbnQgaW5zdGFuY2UuICBBIGNhbGwgdG8gYGBkLm5ld19jaGlsZCgpYGAgaXMKKyAgICAgICAgZXF1aXZhbGVudCB0bzogYGBDaGFpbk1hcCh7fSwgKmQubWFwcylgYC4gIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yCisgICAgICAgIGNyZWF0aW5nIHN1YmNvbnRleHRzIHRoYXQgY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBhbHRlcmluZyB2YWx1ZXMgaW4gYW55CisgICAgICAgIG9mIHRoZSBwYXJlbnQgbWFwcGluZ3MuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBwYXJlbnRzCisKKyAgICAgICAgUHJvcGVydHkgcmV0dXJuaW5nIGEgbmV3IDpjbGFzczpgQ2hhaW5NYXBgIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBtYXBzIGluCisgICAgICAgIHRoZSBjdXJyZW50IGluc3RhbmNlIGV4Y2VwdCB0aGUgZmlyc3Qgb25lLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHNraXBwaW5nCisgICAgICAgIHRoZSBmaXJzdCBtYXAgaW4gdGhlIHNlYXJjaC4gIFVzZSBjYXNlcyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3IgdGhlCisgICAgICAgIDprZXl3b3JkOmBub25sb2NhbGAga2V5d29yZCB1c2VkIGluIDp0ZXJtOmBuZXN0ZWQgc2NvcGVzIDxuZXN0ZWQKKyAgICAgICAgc2NvcGU+YC4gIFRoZSB1c2UgY2FzZXMgYWxzbyBwYXJhbGxlbCB0aG9zZSBmb3IgdGhlIGJ1aWx0LWluCisgICAgICAgIDpmdW5jOmBzdXBlcmAgZnVuY3Rpb24uICBBIHJlZmVyZW5jZSB0byBgYGQucGFyZW50c2BgIGlzIGVxdWl2YWxlbnQgdG86CisgICAgICAgIGBgQ2hhaW5NYXAoKmQubWFwc1sxOl0pYGAuCisKKworLi4gc2VlYWxzbzo6CisKKyAgICAqIFRoZSBgTXVsdGlDb250ZXh0IGNsYXNzCisgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL2VudGhvdWdodC9jb2RldG9vbHMvYmxvYi80LjAuMC9jb2RldG9vbHMvY29udGV4dHMvbXVsdGlfY29udGV4dC5weT5gXworICAgICAgaW4gdGhlIEVudGhvdWdodCBgQ29kZVRvb2xzIHBhY2thZ2UKKyAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vZW50aG91Z2h0L2NvZGV0b29scz5gXyBoYXMgb3B0aW9ucyB0byBzdXBwb3J0CisgICAgICB3cml0aW5nIHRvIGFueSBtYXBwaW5nIGluIHRoZSBjaGFpbi4KKworICAgICogRGphbmdvJ3MgYENvbnRleHQgY2xhc3MKKyAgICAgIDxodHRwOi8vY29kZS5kamFuZ29wcm9qZWN0LmNvbS9icm93c2VyL2RqYW5nby90cnVuay9kamFuZ28vdGVtcGxhdGUvY29udGV4dC5weT5gXworICAgICAgZm9yIHRlbXBsYXRpbmcgaXMgYSByZWFkLW9ubHkgY2hhaW4gb2YgbWFwcGluZ3MuICBJdCBhbHNvIGZlYXR1cmVzCisgICAgICBwdXNoaW5nIGFuZCBwb3BwaW5nIG9mIGNvbnRleHRzIHNpbWlsYXIgdG8gdGhlCisgICAgICA6bWV0aDpgfmNvbGxlY3Rpb25zLkNoYWluTWFwLm5ld19jaGlsZGAgbWV0aG9kIGFuZCB0aGUKKyAgICAgIDptZXRoOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXAucGFyZW50c2AgcHJvcGVydHkuCisKKyAgICAqIFRoZSBgTmVzdGVkIENvbnRleHRzIHJlY2lwZQorICAgICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzQzNC8+YF8gaGFzIG9wdGlvbnMgdG8gY29udHJvbAorICAgICAgd2hldGhlciB3cml0ZXMgYW5kIG90aGVyIG11dGF0aW9ucyBhcHBseSBvbmx5IHRvIHRoZSBmaXJzdCBtYXBwaW5nIG9yIHRvCisgICAgICBhbnkgbWFwcGluZyBpbiB0aGUgY2hhaW4uCisKKyAgICAqIEEgYGdyZWF0bHkgc2ltcGxpZmllZCByZWFkLW9ubHkgdmVyc2lvbiBvZiBDaGFpbm1hcAorICAgICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzMwNTI2OC8+YF8uCisKKworOmNsYXNzOmBDaGFpbk1hcGAgRXhhbXBsZXMgYW5kIFJlY2lwZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoaXMgc2VjdGlvbiBzaG93cyB2YXJpb3VzIGFwcHJvYWNoZXMgdG8gd29ya2luZyB3aXRoIGNoYWluZWQgbWFwcy4KKworCitFeGFtcGxlIG9mIHNpbXVsYXRpbmcgUHl0aG9uJ3MgaW50ZXJuYWwgbG9va3VwIGNoYWluOjoKKworICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgcHlsb29rdXAgPSBDaGFpbk1hcChsb2NhbHMoKSwgZ2xvYmFscygpLCB2YXJzKGJ1aWx0aW5zKSkKKworRXhhbXBsZSBvZiBsZXR0aW5nIHVzZXIgc3BlY2lmaWVkIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIKK2Vudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBpbiB0dXJuIHRha2UgcHJlY2VkZW5jZSBvdmVyIGRlZmF1bHQgdmFsdWVzOjoKKworICAgICAgICBpbXBvcnQgb3MsIGFyZ3BhcnNlCisKKyAgICAgICAgZGVmYXVsdHMgPSB7J2NvbG9yJzogJ3JlZCcsICd1c2VyJzogJ2d1ZXN0J30KKworICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0tdXNlcicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY29sb3InKQorICAgICAgICBuYW1lc3BhY2UgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgICAgIGNvbW1hbmRfbGluZV9hcmdzID0ge2s6diBmb3IgaywgdiBpbiB2YXJzKG5hbWVzcGFjZSkuaXRlbXMoKSBpZiB2fQorCisgICAgICAgIGNvbWJpbmVkID0gQ2hhaW5NYXAoY29tbWFuZF9saW5lX2FyZ3MsIG9zLmVudmlyb24sIGRlZmF1bHRzKQorICAgICAgICBwcmludChjb21iaW5lZFsnY29sb3InXSkKKyAgICAgICAgcHJpbnQoY29tYmluZWRbJ3VzZXInXSkKKworRXhhbXBsZSBwYXR0ZXJucyBmb3IgdXNpbmcgdGhlIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIHRvIHNpbXVsYXRlIG5lc3RlZAorY29udGV4dHM6OgorCisgICAgICAgIGMgPSBDaGFpbk1hcCgpICAgICAgICAjIENyZWF0ZSByb290IGNvbnRleHQKKyAgICAgICAgZCA9IGMubmV3X2NoaWxkKCkgICAgICMgQ3JlYXRlIG5lc3RlZCBjaGlsZCBjb250ZXh0CisgICAgICAgIGUgPSBjLm5ld19jaGlsZCgpICAgICAjIENoaWxkIG9mIGMsIGluZGVwZW5kZW50IGZyb20gZAorICAgICAgICBlLm1hcHNbMF0gICAgICAgICAgICAgIyBDdXJyZW50IGNvbnRleHQgZGljdGlvbmFyeSAtLSBsaWtlIFB5dGhvbidzIGxvY2FscygpCisgICAgICAgIGUubWFwc1stMV0gICAgICAgICAgICAjIFJvb3QgY29udGV4dCAtLSBsaWtlIFB5dGhvbidzIGdsb2JhbHMoKQorICAgICAgICBlLnBhcmVudHMgICAgICAgICAgICAgIyBFbmNsb3NpbmcgY29udGV4dCBjaGFpbiAtLSBsaWtlIFB5dGhvbidzIG5vbmxvY2FscworCisgICAgICAgIGRbJ3gnXSAgICAgICAgICAgICAgICAjIEdldCBmaXJzdCBrZXkgaW4gdGhlIGNoYWluIG9mIGNvbnRleHRzCisgICAgICAgIGRbJ3gnXSA9IDEgICAgICAgICAgICAjIFNldCB2YWx1ZSBpbiBjdXJyZW50IGNvbnRleHQKKyAgICAgICAgZGVsIGRbJ3gnXSAgICAgICAgICAgICMgRGVsZXRlIGZyb20gY3VycmVudCBjb250ZXh0CisgICAgICAgIGxpc3QoZCkgICAgICAgICAgICAgICAjIEFsbCBuZXN0ZWQgdmFsdWVzCisgICAgICAgIGsgaW4gZCAgICAgICAgICAgICAgICAjIENoZWNrIGFsbCBuZXN0ZWQgdmFsdWVzCisgICAgICAgIGxlbihkKSAgICAgICAgICAgICAgICAjIE51bWJlciBvZiBuZXN0ZWQgdmFsdWVzCisgICAgICAgIGQuaXRlbXMoKSAgICAgICAgICAgICAjIEFsbCBuZXN0ZWQgaXRlbXMKKyAgICAgICAgZGljdChkKSAgICAgICAgICAgICAgICMgRmxhdHRlbiBpbnRvIGEgcmVndWxhciBkaWN0aW9uYXJ5CisKK1RoZSA6Y2xhc3M6YENoYWluTWFwYCBjbGFzcyBvbmx5IG1ha2VzIHVwZGF0ZXMgKHdyaXRlcyBhbmQgZGVsZXRpb25zKSB0byB0aGUKK2ZpcnN0IG1hcHBpbmcgaW4gdGhlIGNoYWluIHdoaWxlIGxvb2t1cHMgd2lsbCBzZWFyY2ggdGhlIGZ1bGwgY2hhaW4uICBIb3dldmVyLAoraWYgZGVlcCB3cml0ZXMgYW5kIGRlbGV0aW9ucyBhcmUgZGVzaXJlZCwgaXQgaXMgZWFzeSB0byBtYWtlIGEgc3ViY2xhc3MgdGhhdAordXBkYXRlcyBrZXlzIGZvdW5kIGRlZXBlciBpbiB0aGUgY2hhaW46OgorCisgICAgY2xhc3MgRGVlcENoYWluTWFwKENoYWluTWFwKToKKyAgICAgICAgJ1ZhcmlhbnQgb2YgQ2hhaW5NYXAgdGhhdCBhbGxvd3MgZGlyZWN0IHVwZGF0ZXMgdG8gaW5uZXIgc2NvcGVzJworCisgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYubWFwczoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gbWFwcGluZzoKKyAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxmLm1hcHNbMF1ba2V5XSA9IHZhbHVlCisKKyAgICAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICAgICBmb3IgbWFwcGluZyBpbiBzZWxmLm1hcHM6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIG1hcHBpbmc6CisgICAgICAgICAgICAgICAgICAgIGRlbCBtYXBwaW5nW2tleV0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByYWlzZSBLZXlFcnJvcihrZXkpCisKKyAgICA+Pj4gZCA9IERlZXBDaGFpbk1hcCh7J3plYnJhJzogJ2JsYWNrJ30sIHsnZWxlcGhhbnQnIDogJ2JsdWUnfSwgeydsaW9uJyA6ICd5ZWxsb3cnfSkKKyAgICA+Pj4gZFsnbGlvbiddID0gJ29yYW5nZScgICAgICAgICAjIHVwZGF0ZSBhbiBleGlzdGluZyBrZXkgdHdvIGxldmVscyBkb3duCisgICAgPj4+IGRbJ3NuYWtlJ10gPSAncmVkJyAgICAgICAgICAgIyBuZXcga2V5cyBnZXQgYWRkZWQgdG8gdGhlIHRvcG1vc3QgZGljdAorICAgID4+PiBkZWwgZFsnZWxlcGhhbnQnXSAgICAgICAgICAgICMgcmVtb3ZlIGFuIGV4aXN0aW5nIGtleSBvbmUgbGV2ZWwgZG93bgorICAgIERlZXBDaGFpbk1hcCh7J3plYnJhJzogJ2JsYWNrJywgJ3NuYWtlJzogJ3JlZCd9LCB7fSwgeydsaW9uJzogJ29yYW5nZSd9KQogCiAKIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cwpAQCAtNTksNjQgKzIxNyw2NCBAQAogCiAuLiBjbGFzczo6IENvdW50ZXIoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICBBIDpjbGFzczpgQ291bnRlcmAgaXMgYSA6Y2xhc3M6YGRpY3RgIHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzLgotICAgSXQgaXMgYW4gdW5vcmRlcmVkIGNvbGxlY3Rpb24gd2hlcmUgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IGtleXMKLSAgIGFuZCB0aGVpciBjb3VudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IHZhbHVlcy4gIENvdW50cyBhcmUgYWxsb3dlZCB0byBiZQotICAgYW55IGludGVnZXIgdmFsdWUgaW5jbHVkaW5nIHplcm8gb3IgbmVnYXRpdmUgY291bnRzLiAgVGhlIDpjbGFzczpgQ291bnRlcmAKLSAgIGNsYXNzIGlzIHNpbWlsYXIgdG8gYmFncyBvciBtdWx0aXNldHMgaW4gb3RoZXIgbGFuZ3VhZ2VzLgorICAgIEEgOmNsYXNzOmBDb3VudGVyYCBpcyBhIDpjbGFzczpgZGljdGAgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIG9iamVjdHMuCisgICAgSXQgaXMgYW4gdW5vcmRlcmVkIGNvbGxlY3Rpb24gd2hlcmUgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IGtleXMKKyAgICBhbmQgdGhlaXIgY291bnRzIGFyZSBzdG9yZWQgYXMgZGljdGlvbmFyeSB2YWx1ZXMuICBDb3VudHMgYXJlIGFsbG93ZWQgdG8gYmUKKyAgICBhbnkgaW50ZWdlciB2YWx1ZSBpbmNsdWRpbmcgemVybyBvciBuZWdhdGl2ZSBjb3VudHMuICBUaGUgOmNsYXNzOmBDb3VudGVyYAorICAgIGNsYXNzIGlzIHNpbWlsYXIgdG8gYmFncyBvciBtdWx0aXNldHMgaW4gb3RoZXIgbGFuZ3VhZ2VzLgogCi0gICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgaW5pdGlhbGl6ZWQgZnJvbSBhbm90aGVyCi0gICAqbWFwcGluZyogKG9yIGNvdW50ZXIpOgorICAgIEVsZW1lbnRzIGFyZSBjb3VudGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBpbml0aWFsaXplZCBmcm9tIGFub3RoZXIKKyAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpOgogCiAgICAgICAgID4+PiBjID0gQ291bnRlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG5ldywgZW1wdHkgY291bnRlcgogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2dhbGxhaGFkJykgICAgICAgICAgICAgICAgICMgYSBuZXcgY291bnRlciBmcm9tIGFuIGl0ZXJhYmxlCiAgICAgICAgID4+PiBjID0gQ291bnRlcih7J3JlZCc6IDQsICdibHVlJzogMn0pICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20gYSBtYXBwaW5nCiAgICAgICAgID4+PiBjID0gQ291bnRlcihjYXRzPTQsIGRvZ3M9OCkgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20ga2V5d29yZCBhcmdzCiAKLSAgIENvdW50ZXIgb2JqZWN0cyBoYXZlIGEgZGljdGlvbmFyeSBpbnRlcmZhY2UgZXhjZXB0IHRoYXQgdGhleSByZXR1cm4gYSB6ZXJvCi0gICBjb3VudCBmb3IgbWlzc2luZyBpdGVtcyBpbnN0ZWFkIG9mIHJhaXNpbmcgYSA6ZXhjOmBLZXlFcnJvcmA6CisgICAgQ291bnRlciBvYmplY3RzIGhhdmUgYSBkaWN0aW9uYXJ5IGludGVyZmFjZSBleGNlcHQgdGhhdCB0aGV5IHJldHVybiBhIHplcm8KKyAgICBjb3VudCBmb3IgbWlzc2luZyBpdGVtcyBpbnN0ZWFkIG9mIHJhaXNpbmcgYSA6ZXhjOmBLZXlFcnJvcmA6CiAKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKFsnZWdncycsICdoYW0nXSkKICAgICAgICAgPj4+IGNbJ2JhY29uJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvdW50IG9mIGEgbWlzc2luZyBlbGVtZW50IGlzIHplcm8KICAgICAgICAgMAogCi0gICBTZXR0aW5nIGEgY291bnQgdG8gemVybyBkb2VzIG5vdCByZW1vdmUgYW4gZWxlbWVudCBmcm9tIGEgY291bnRlci4KLSAgIFVzZSBgYGRlbGBgIHRvIHJlbW92ZSBpdCBlbnRpcmVseToKKyAgICBTZXR0aW5nIGEgY291bnQgdG8gemVybyBkb2VzIG5vdCByZW1vdmUgYW4gZWxlbWVudCBmcm9tIGEgY291bnRlci4KKyAgICBVc2UgYGBkZWxgYCB0byByZW1vdmUgaXQgZW50aXJlbHk6CiAKICAgICAgICAgPj4+IGNbJ3NhdXNhZ2UnXSA9IDAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvdW50ZXIgZW50cnkgd2l0aCBhIHplcm8gY291bnQKICAgICAgICAgPj4+IGRlbCBjWydzYXVzYWdlJ10gICAgICAgICAgICAgICAgICAgICAgICAjIGRlbCBhY3R1YWxseSByZW1vdmVzIHRoZSBlbnRyeQogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCi0gICBDb3VudGVyIG9iamVjdHMgc3VwcG9ydCB0aHJlZSBtZXRob2RzIGJleW9uZCB0aG9zZSBhdmFpbGFibGUgZm9yIGFsbAotICAgZGljdGlvbmFyaWVzOgorICAgIENvdW50ZXIgb2JqZWN0cyBzdXBwb3J0IHRocmVlIG1ldGhvZHMgYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgYWxsCisgICAgZGljdGlvbmFyaWVzOgogCi0gICAuLiBtZXRob2Q6OiBlbGVtZW50cygpCisgICAgLi4gbWV0aG9kOjogZWxlbWVudHMoKQogCi0gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBlbGVtZW50cyByZXBlYXRpbmcgZWFjaCBhcyBtYW55IHRpbWVzIGFzIGl0cwotICAgICAgY291bnQuICBFbGVtZW50cyBhcmUgcmV0dXJuZWQgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSWYgYW4gZWxlbWVudCdzIGNvdW50Ci0gICAgICBpcyBsZXNzIHRoYW4gb25lLCA6bWV0aDpgZWxlbWVudHNgIHdpbGwgaWdub3JlIGl0LgorICAgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBlbGVtZW50cyByZXBlYXRpbmcgZWFjaCBhcyBtYW55IHRpbWVzIGFzIGl0cworICAgICAgICBjb3VudC4gIEVsZW1lbnRzIGFyZSByZXR1cm5lZCBpbiBhcmJpdHJhcnkgb3JkZXIuICBJZiBhbiBlbGVtZW50J3MgY291bnQKKyAgICAgICAgaXMgbGVzcyB0aGFuIG9uZSwgOm1ldGg6YGVsZW1lbnRzYCB3aWxsIGlnbm9yZSBpdC4KIAogICAgICAgICAgICAgPj4+IGMgPSBDb3VudGVyKGE9NCwgYj0yLCBjPTAsIGQ9LTIpCiAgICAgICAgICAgICA+Pj4gbGlzdChjLmVsZW1lbnRzKCkpCiAgICAgICAgICAgICBbJ2EnLCAnYScsICdhJywgJ2EnLCAnYicsICdiJ10KIAotICAgLi4gbWV0aG9kOjogbW9zdF9jb21tb24oW25dKQorICAgIC4uIG1ldGhvZDo6IG1vc3RfY29tbW9uKFtuXSkKIAotICAgICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgKm4qIG1vc3QgY29tbW9uIGVsZW1lbnRzIGFuZCB0aGVpciBjb3VudHMgZnJvbSB0aGUKLSAgICAgIG1vc3QgY29tbW9uIHRvIHRoZSBsZWFzdC4gIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkLCA6ZnVuYzpgbW9zdF9jb21tb25gCi0gICAgICByZXR1cm5zICphbGwqIGVsZW1lbnRzIGluIHRoZSBjb3VudGVyLiAgRWxlbWVudHMgd2l0aCBlcXVhbCBjb3VudHMgYXJlCi0gICAgICBvcmRlcmVkIGFyYml0cmFyaWx5OgorICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSAqbiogbW9zdCBjb21tb24gZWxlbWVudHMgYW5kIHRoZWlyIGNvdW50cyBmcm9tIHRoZQorICAgICAgICBtb3N0IGNvbW1vbiB0byB0aGUgbGVhc3QuICBJZiAqbiogaXMgbm90IHNwZWNpZmllZCwgOmZ1bmM6YG1vc3RfY29tbW9uYAorICAgICAgICByZXR1cm5zICphbGwqIGVsZW1lbnRzIGluIHRoZSBjb3VudGVyLiAgRWxlbWVudHMgd2l0aCBlcXVhbCBjb3VudHMgYXJlCisgICAgICAgIG9yZGVyZWQgYXJiaXRyYXJpbHk6CiAKICAgICAgICAgICAgID4+PiBDb3VudGVyKCdhYnJhY2FkYWJyYScpLm1vc3RfY29tbW9uKDMpCiAgICAgICAgICAgICBbKCdhJywgNSksICgncicsIDIpLCAoJ2InLCAyKV0KIAotICAgLi4gbWV0aG9kOjogc3VidHJhY3QoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQorICAgIC4uIG1ldGhvZDo6IHN1YnRyYWN0KFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKIAotICAgICAgRWxlbWVudHMgYXJlIHN1YnRyYWN0ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGZyb20gYW5vdGhlciAqbWFwcGluZyoKLSAgICAgIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgc3VidHJhY3RzIGNvdW50cyBpbnN0ZWFkCi0gICAgICBvZiByZXBsYWNpbmcgdGhlbS4gIEJvdGggaW5wdXRzIGFuZCBvdXRwdXRzIG1heSBiZSB6ZXJvIG9yIG5lZ2F0aXZlLgorICAgICAgICBFbGVtZW50cyBhcmUgc3VidHJhY3RlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgZnJvbSBhbm90aGVyICptYXBwaW5nKgorICAgICAgICAob3IgY291bnRlcikuICBMaWtlIDptZXRoOmBkaWN0LnVwZGF0ZWAgYnV0IHN1YnRyYWN0cyBjb3VudHMgaW5zdGVhZAorICAgICAgICBvZiByZXBsYWNpbmcgdGhlbS4gIEJvdGggaW5wdXRzIGFuZCBvdXRwdXRzIG1heSBiZSB6ZXJvIG9yIG5lZ2F0aXZlLgogCiAgICAgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoYT00LCBiPTIsIGM9MCwgZD0tMikKICAgICAgICAgICAgID4+PiBkID0gQ291bnRlcihhPTEsIGI9MiwgYz0zLCBkPTQpCkBAIC0xMjQsMjEgKzI4MiwyMSBAQAogICAgICAgICAgICAgPj4+IGMKICAgICAgICAgICAgIENvdW50ZXIoeydhJzogMywgJ2InOiAwLCAnYyc6IC0zLCAnZCc6IC02fSkKIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICBUaGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBhdmFpbGFibGUgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cwotICAgZXhjZXB0IGZvciB0d28gd2hpY2ggd29yayBkaWZmZXJlbnRseSBmb3IgY291bnRlcnMuCisgICAgVGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKKyAgICBleGNlcHQgZm9yIHR3byB3aGljaCB3b3JrIGRpZmZlcmVudGx5IGZvciBjb3VudGVycy4KIAotICAgLi4gbWV0aG9kOjogZnJvbWtleXMoaXRlcmFibGUpCisgICAgLi4gbWV0aG9kOjogZnJvbWtleXMoaXRlcmFibGUpCiAKLSAgICAgIFRoaXMgY2xhc3MgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzLgorICAgICAgICBUaGlzIGNsYXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cy4KIAotICAgLi4gbWV0aG9kOjogdXBkYXRlKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKKyAgICAuLiBtZXRob2Q6OiB1cGRhdGUoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgYWRkZWQtaW4gZnJvbSBhbm90aGVyCi0gICAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBhZGRzIGNvdW50cwotICAgICAgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbS4gIEFsc28sIHRoZSAqaXRlcmFibGUqIGlzIGV4cGVjdGVkIHRvIGJlIGEKLSAgICAgIHNlcXVlbmNlIG9mIGVsZW1lbnRzLCBub3QgYSBzZXF1ZW5jZSBvZiBgYChrZXksIHZhbHVlKWBgIHBhaXJzLgorICAgICAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgYWRkZWQtaW4gZnJvbSBhbm90aGVyCisgICAgICAgICptYXBwaW5nKiAob3IgY291bnRlcikuICBMaWtlIDptZXRoOmBkaWN0LnVwZGF0ZWAgYnV0IGFkZHMgY291bnRzCisgICAgICAgIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0uICBBbHNvLCB0aGUgKml0ZXJhYmxlKiBpcyBleHBlY3RlZCB0byBiZSBhCisgICAgICAgIHNlcXVlbmNlIG9mIGVsZW1lbnRzLCBub3QgYSBzZXF1ZW5jZSBvZiBgYChrZXksIHZhbHVlKWBgIHBhaXJzLgogCiBDb21tb24gcGF0dGVybnMgZm9yIHdvcmtpbmcgd2l0aCA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHM6OgogCkBAIC0xNTAsNyArMzA4LDcgQEAKICAgICBjLml0ZW1zKCkgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCB0byBhIGxpc3Qgb2YgKGVsZW0sIGNudCkgcGFpcnMKICAgICBDb3VudGVyKGRpY3QobGlzdF9vZl9wYWlycykpICAgICMgY29udmVydCBmcm9tIGEgbGlzdCBvZiAoZWxlbSwgY250KSBwYWlycwogICAgIGMubW9zdF9jb21tb24oKVs6LW46LTFdICAgICAgICAgIyBuIGxlYXN0IGNvbW1vbiBlbGVtZW50cwotICAgIGMgKz0gQ291bnRlcigpICAgICAgICAgICAgICAgICAgIyByZW1vdmUgemVybyBhbmQgbmVnYXRpdmUgY291bnRzCisgICAgK2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB6ZXJvIGFuZCBuZWdhdGl2ZSBjb3VudHMKIAogU2V2ZXJhbCBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGNvbWJpbmluZyA6Y2xhc3M6YENvdW50ZXJgCiBvYmplY3RzIHRvIHByb2R1Y2UgbXVsdGlzZXRzIChjb3VudGVycyB0aGF0IGhhdmUgY291bnRzIGdyZWF0ZXIgdGhhbiB6ZXJvKS4KQEAgLTE3MCwzMiArMzI4LDQ0IEBACiAgICAgPj4+IGMgfCBkICAgICAgICAgICAgICAgICAgICAgICAjIHVuaW9uOiAgbWF4KGNbeF0sIGRbeF0pCiAgICAgQ291bnRlcih7J2EnOiAzLCAnYic6IDJ9KQogCitVbmFyeSBhZGRpdGlvbiBhbmQgc3Vic3RyYWN0aW9uIGFyZSBzaG9ydGN1dHMgZm9yIGFkZGluZyBhbiBlbXB0eSBjb3VudGVyCitvciBzdWJ0cmFjdGluZyBmcm9tIGFuIGVtcHR5IGNvdW50ZXIuCisKKyAgICA+Pj4gYyA9IENvdW50ZXIoYT0yLCBiPS00KQorICAgID4+PiArYworICAgIENvdW50ZXIoeydhJzogMn0pCisgICAgPj4+IC1jCisgICAgQ291bnRlcih7J2InOiA0fSkKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgQWRkZWQgc3VwcG9ydCBmb3IgdW5hcnkgcGx1cywgdW5hcnkgbWludXMsIGFuZCBpbi1wbGFjZSBtdWx0aXNldCBvcGVyYXRpb25zLgorCiAuLiBub3RlOjoKIAotICAgQ291bnRlcnMgd2VyZSBwcmltYXJpbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHBvc2l0aXZlIGludGVnZXJzIHRvIHJlcHJlc2VudAotICAgcnVubmluZyBjb3VudHM7IGhvd2V2ZXIsIGNhcmUgd2FzIHRha2VuIHRvIG5vdCB1bm5lY2Vzc2FyaWx5IHByZWNsdWRlIHVzZQotICAgY2FzZXMgbmVlZGluZyBvdGhlciB0eXBlcyBvciBuZWdhdGl2ZSB2YWx1ZXMuICBUbyBoZWxwIHdpdGggdGhvc2UgdXNlIGNhc2VzLAotICAgdGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgbWluaW11bSByYW5nZSBhbmQgdHlwZSByZXN0cmljdGlvbnMuCisgICAgQ291bnRlcnMgd2VyZSBwcmltYXJpbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHBvc2l0aXZlIGludGVnZXJzIHRvIHJlcHJlc2VudAorICAgIHJ1bm5pbmcgY291bnRzOyBob3dldmVyLCBjYXJlIHdhcyB0YWtlbiB0byBub3QgdW5uZWNlc3NhcmlseSBwcmVjbHVkZSB1c2UKKyAgICBjYXNlcyBuZWVkaW5nIG90aGVyIHR5cGVzIG9yIG5lZ2F0aXZlIHZhbHVlcy4gIFRvIGhlbHAgd2l0aCB0aG9zZSB1c2UgY2FzZXMsCisgICAgdGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgbWluaW11bSByYW5nZSBhbmQgdHlwZSByZXN0cmljdGlvbnMuCiAKLSAgICogVGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MgaXRzZWxmIGlzIGEgZGljdGlvbmFyeSBzdWJjbGFzcyB3aXRoIG5vCi0gICAgIHJlc3RyaWN0aW9ucyBvbiBpdHMga2V5cyBhbmQgdmFsdWVzLiAgVGhlIHZhbHVlcyBhcmUgaW50ZW5kZWQgdG8gYmUgbnVtYmVycwotICAgICByZXByZXNlbnRpbmcgY291bnRzLCBidXQgeW91ICpjb3VsZCogc3RvcmUgYW55dGhpbmcgaW4gdGhlIHZhbHVlIGZpZWxkLgorICAgICogVGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MgaXRzZWxmIGlzIGEgZGljdGlvbmFyeSBzdWJjbGFzcyB3aXRoIG5vCisgICAgICByZXN0cmljdGlvbnMgb24gaXRzIGtleXMgYW5kIHZhbHVlcy4gIFRoZSB2YWx1ZXMgYXJlIGludGVuZGVkIHRvIGJlIG51bWJlcnMKKyAgICAgIHJlcHJlc2VudGluZyBjb3VudHMsIGJ1dCB5b3UgKmNvdWxkKiBzdG9yZSBhbnl0aGluZyBpbiB0aGUgdmFsdWUgZmllbGQuCiAKLSAgICogVGhlIDptZXRoOmBtb3N0X2NvbW1vbmAgbWV0aG9kIHJlcXVpcmVzIG9ubHkgdGhhdCB0aGUgdmFsdWVzIGJlIG9yZGVyYWJsZS4KKyAgICAqIFRoZSA6bWV0aDpgbW9zdF9jb21tb25gIG1ldGhvZCByZXF1aXJlcyBvbmx5IHRoYXQgdGhlIHZhbHVlcyBiZSBvcmRlcmFibGUuCiAKLSAgICogRm9yIGluLXBsYWNlIG9wZXJhdGlvbnMgc3VjaCBhcyBgYGNba2V5XSArPSAxYGAsIHRoZSB2YWx1ZSB0eXBlIG5lZWQgb25seQotICAgICBzdXBwb3J0IGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbi4gIFNvIGZyYWN0aW9ucywgZmxvYXRzLCBhbmQgZGVjaW1hbHMgd291bGQKLSAgICAgd29yayBhbmQgbmVnYXRpdmUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuICBUaGUgc2FtZSBpcyBhbHNvIHRydWUgZm9yCi0gICAgIDptZXRoOmB1cGRhdGVgIGFuZCA6bWV0aDpgc3VidHJhY3RgIHdoaWNoIGFsbG93IG5lZ2F0aXZlIGFuZCB6ZXJvIHZhbHVlcwotICAgICBmb3IgYm90aCBpbnB1dHMgYW5kIG91dHB1dHMuCisgICAgKiBGb3IgaW4tcGxhY2Ugb3BlcmF0aW9ucyBzdWNoIGFzIGBgY1trZXldICs9IDFgYCwgdGhlIHZhbHVlIHR5cGUgbmVlZCBvbmx5CisgICAgICBzdXBwb3J0IGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbi4gIFNvIGZyYWN0aW9ucywgZmxvYXRzLCBhbmQgZGVjaW1hbHMgd291bGQKKyAgICAgIHdvcmsgYW5kIG5lZ2F0aXZlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiAgVGhlIHNhbWUgaXMgYWxzbyB0cnVlIGZvcgorICAgICAgOm1ldGg6YHVwZGF0ZWAgYW5kIDptZXRoOmBzdWJ0cmFjdGAgd2hpY2ggYWxsb3cgbmVnYXRpdmUgYW5kIHplcm8gdmFsdWVzCisgICAgICBmb3IgYm90aCBpbnB1dHMgYW5kIG91dHB1dHMuCiAKLSAgICogVGhlIG11bHRpc2V0IG1ldGhvZHMgYXJlIGRlc2lnbmVkIG9ubHkgZm9yIHVzZSBjYXNlcyB3aXRoIHBvc2l0aXZlIHZhbHVlcy4KLSAgICAgVGhlIGlucHV0cyBtYXkgYmUgbmVnYXRpdmUgb3IgemVybywgYnV0IG9ubHkgb3V0cHV0cyB3aXRoIHBvc2l0aXZlIHZhbHVlcwotICAgICBhcmUgY3JlYXRlZC4gIFRoZXJlIGFyZSBubyB0eXBlIHJlc3RyaWN0aW9ucywgYnV0IHRoZSB2YWx1ZSB0eXBlIG5lZWRzIHRvCi0gICAgIHN1cHBvcnQgYWRkaXRpb24sIHN1YnRyYWN0aW9uLCBhbmQgY29tcGFyaXNvbi4KKyAgICAqIFRoZSBtdWx0aXNldCBtZXRob2RzIGFyZSBkZXNpZ25lZCBvbmx5IGZvciB1c2UgY2FzZXMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMuCisgICAgICBUaGUgaW5wdXRzIG1heSBiZSBuZWdhdGl2ZSBvciB6ZXJvLCBidXQgb25seSBvdXRwdXRzIHdpdGggcG9zaXRpdmUgdmFsdWVzCisgICAgICBhcmUgY3JlYXRlZC4gIFRoZXJlIGFyZSBubyB0eXBlIHJlc3RyaWN0aW9ucywgYnV0IHRoZSB2YWx1ZSB0eXBlIG5lZWRzIHRvCisgICAgICBzdXBwb3J0IGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgYW5kIGNvbXBhcmlzb24uCiAKLSAgICogVGhlIDptZXRoOmBlbGVtZW50c2AgbWV0aG9kIHJlcXVpcmVzIGludGVnZXIgY291bnRzLiAgSXQgaWdub3JlcyB6ZXJvIGFuZAotICAgICBuZWdhdGl2ZSBjb3VudHMuCisgICAgKiBUaGUgOm1ldGg6YGVsZW1lbnRzYCBtZXRob2QgcmVxdWlyZXMgaW50ZWdlciBjb3VudHMuICBJdCBpZ25vcmVzIHplcm8gYW5kCisgICAgICBuZWdhdGl2ZSBjb3VudHMuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMTgsNyArMzg4LDcgQEAKICAgICAqIFRvIGVudW1lcmF0ZSBhbGwgZGlzdGluY3QgbXVsdGlzZXRzIG9mIGEgZ2l2ZW4gc2l6ZSBvdmVyIGEgZ2l2ZW4gc2V0IG9mCiAgICAgICBlbGVtZW50cywgc2VlIDpmdW5jOmBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRgLgogCi0gICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCisgICAgICAgICAgICBtYXAoQ291bnRlciwgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoJ0FCQycsIDIpKSAtLT4gQUEgQUIgQUMgQkIgQkMgQ0MKIAogCiA6Y2xhc3M6YGRlcXVlYCBvYmplY3RzCkBAIC0yMjYsMTA1ICszOTYsMTA1IEBACiAKIC4uIGNsYXNzOjogZGVxdWUoW2l0ZXJhYmxlLCBbbWF4bGVuXV0pCiAKLSAgIFJldHVybnMgYSBuZXcgZGVxdWUgb2JqZWN0IGluaXRpYWxpemVkIGxlZnQtdG8tcmlnaHQgKHVzaW5nIDptZXRoOmBhcHBlbmRgKSB3aXRoCi0gICBkYXRhIGZyb20gKml0ZXJhYmxlKi4gIElmICppdGVyYWJsZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBkZXF1ZSBpcyBlbXB0eS4KKyAgICBSZXR1cm5zIGEgbmV3IGRlcXVlIG9iamVjdCBpbml0aWFsaXplZCBsZWZ0LXRvLXJpZ2h0ICh1c2luZyA6bWV0aDpgYXBwZW5kYCkgd2l0aAorICAgIGRhdGEgZnJvbSAqaXRlcmFibGUqLiAgSWYgKml0ZXJhYmxlKiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IGRlcXVlIGlzIGVtcHR5LgogCi0gICBEZXF1ZXMgYXJlIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RhY2tzIGFuZCBxdWV1ZXMgKHRoZSBuYW1lIGlzIHByb25vdW5jZWQgImRlY2siCi0gICBhbmQgaXMgc2hvcnQgZm9yICJkb3VibGUtZW5kZWQgcXVldWUiKS4gIERlcXVlcyBzdXBwb3J0IHRocmVhZC1zYWZlLCBtZW1vcnkKLSAgIGVmZmljaWVudCBhcHBlbmRzIGFuZCBwb3BzIGZyb20gZWl0aGVyIHNpZGUgb2YgdGhlIGRlcXVlIHdpdGggYXBwcm94aW1hdGVseSB0aGUKLSAgIHNhbWUgTygxKSBwZXJmb3JtYW5jZSBpbiBlaXRoZXIgZGlyZWN0aW9uLgorICAgIERlcXVlcyBhcmUgYSBnZW5lcmFsaXphdGlvbiBvZiBzdGFja3MgYW5kIHF1ZXVlcyAodGhlIG5hbWUgaXMgcHJvbm91bmNlZCAiZGVjayIKKyAgICBhbmQgaXMgc2hvcnQgZm9yICJkb3VibGUtZW5kZWQgcXVldWUiKS4gIERlcXVlcyBzdXBwb3J0IHRocmVhZC1zYWZlLCBtZW1vcnkKKyAgICBlZmZpY2llbnQgYXBwZW5kcyBhbmQgcG9wcyBmcm9tIGVpdGhlciBzaWRlIG9mIHRoZSBkZXF1ZSB3aXRoIGFwcHJveGltYXRlbHkgdGhlCisgICAgc2FtZSBPKDEpIHBlcmZvcm1hbmNlIGluIGVpdGhlciBkaXJlY3Rpb24uCiAKLSAgIFRob3VnaCA6Y2xhc3M6YGxpc3RgIG9iamVjdHMgc3VwcG9ydCBzaW1pbGFyIG9wZXJhdGlvbnMsIHRoZXkgYXJlIG9wdGltaXplZCBmb3IKLSAgIGZhc3QgZml4ZWQtbGVuZ3RoIG9wZXJhdGlvbnMgYW5kIGluY3VyIE8obikgbWVtb3J5IG1vdmVtZW50IGNvc3RzIGZvcgotICAgYGBwb3AoMClgYCBhbmQgYGBpbnNlcnQoMCwgdilgYCBvcGVyYXRpb25zIHdoaWNoIGNoYW5nZSBib3RoIHRoZSBzaXplIGFuZAotICAgcG9zaXRpb24gb2YgdGhlIHVuZGVybHlpbmcgZGF0YSByZXByZXNlbnRhdGlvbi4KKyAgICBUaG91Z2ggOmNsYXNzOmBsaXN0YCBvYmplY3RzIHN1cHBvcnQgc2ltaWxhciBvcGVyYXRpb25zLCB0aGV5IGFyZSBvcHRpbWl6ZWQgZm9yCisgICAgZmFzdCBmaXhlZC1sZW5ndGggb3BlcmF0aW9ucyBhbmQgaW5jdXIgTyhuKSBtZW1vcnkgbW92ZW1lbnQgY29zdHMgZm9yCisgICAgYGBwb3AoMClgYCBhbmQgYGBpbnNlcnQoMCwgdilgYCBvcGVyYXRpb25zIHdoaWNoIGNoYW5nZSBib3RoIHRoZSBzaXplIGFuZAorICAgIHBvc2l0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgcmVwcmVzZW50YXRpb24uCiAKIAotICAgSWYgKm1heGxlbiogaXMgbm90IHNwZWNpZmllZCBvciBpcyAqTm9uZSosIGRlcXVlcyBtYXkgZ3JvdyB0byBhbgotICAgYXJiaXRyYXJ5IGxlbmd0aC4gIE90aGVyd2lzZSwgdGhlIGRlcXVlIGlzIGJvdW5kZWQgdG8gdGhlIHNwZWNpZmllZCBtYXhpbXVtCi0gICBsZW5ndGguICBPbmNlIGEgYm91bmRlZCBsZW5ndGggZGVxdWUgaXMgZnVsbCwgd2hlbiBuZXcgaXRlbXMgYXJlIGFkZGVkLCBhCi0gICBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBpdGVtcyBhcmUgZGlzY2FyZGVkIGZyb20gdGhlIG9wcG9zaXRlIGVuZC4gIEJvdW5kZWQKLSAgIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlciBpbgotICAgVW5peC4gVGhleSBhcmUgYWxzbyB1c2VmdWwgZm9yIHRyYWNraW5nIHRyYW5zYWN0aW9ucyBhbmQgb3RoZXIgcG9vbHMgb2YgZGF0YQotICAgd2hlcmUgb25seSB0aGUgbW9zdCByZWNlbnQgYWN0aXZpdHkgaXMgb2YgaW50ZXJlc3QuCisgICAgSWYgKm1heGxlbiogaXMgbm90IHNwZWNpZmllZCBvciBpcyAqTm9uZSosIGRlcXVlcyBtYXkgZ3JvdyB0byBhbgorICAgIGFyYml0cmFyeSBsZW5ndGguICBPdGhlcndpc2UsIHRoZSBkZXF1ZSBpcyBib3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgbWF4aW11bQorICAgIGxlbmd0aC4gIE9uY2UgYSBib3VuZGVkIGxlbmd0aCBkZXF1ZSBpcyBmdWxsLCB3aGVuIG5ldyBpdGVtcyBhcmUgYWRkZWQsIGEKKyAgICBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBpdGVtcyBhcmUgZGlzY2FyZGVkIGZyb20gdGhlIG9wcG9zaXRlIGVuZC4gIEJvdW5kZWQKKyAgICBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIgaW4KKyAgICBVbml4LiBUaGV5IGFyZSBhbHNvIHVzZWZ1bCBmb3IgdHJhY2tpbmcgdHJhbnNhY3Rpb25zIGFuZCBvdGhlciBwb29scyBvZiBkYXRhCisgICAgd2hlcmUgb25seSB0aGUgbW9zdCByZWNlbnQgYWN0aXZpdHkgaXMgb2YgaW50ZXJlc3QuCiAKIAotICAgRGVxdWUgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKyAgICBEZXF1ZSBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCi0gICAuLiBtZXRob2Q6OiBhcHBlbmQoeCkKKyAgICAuLiBtZXRob2Q6OiBhcHBlbmQoeCkKIAotICAgICAgQWRkICp4KiB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuCisgICAgICAgIEFkZCAqeCogdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGFwcGVuZGxlZnQoeCkKKyAgICAuLiBtZXRob2Q6OiBhcHBlbmRsZWZ0KHgpCiAKLSAgICAgIEFkZCAqeCogdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuCisgICAgICAgIEFkZCAqeCogdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuCiAKIAotICAgLi4gbWV0aG9kOjogY2xlYXIoKQorICAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKIAotICAgICAgUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZSBsZWF2aW5nIGl0IHdpdGggbGVuZ3RoIDAuCisgICAgICAgIFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUgbGVhdmluZyBpdCB3aXRoIGxlbmd0aCAwLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCisgICAgLi4gbWV0aG9kOjogY291bnQoeCkKIAotICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBkZXF1ZSBlbGVtZW50cyBlcXVhbCB0byAqeCouCisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgZGVxdWUgZWxlbWVudHMgZXF1YWwgdG8gKngqLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotICAgLi4gbWV0aG9kOjogZXh0ZW5kKGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGV4dGVuZChpdGVyYWJsZSkKIAotICAgICAgRXh0ZW5kIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUKLSAgICAgIGFyZ3VtZW50LgorICAgICAgICBFeHRlbmQgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZQorICAgICAgICBhcmd1bWVudC4KIAogCi0gICAuLiBtZXRob2Q6OiBleHRlbmRsZWZ0KGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGV4dGVuZGxlZnQoaXRlcmFibGUpCiAKLSAgICAgIEV4dGVuZCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSAqaXRlcmFibGUqLgotICAgICAgTm90ZSwgdGhlIHNlcmllcyBvZiBsZWZ0IGFwcGVuZHMgcmVzdWx0cyBpbiByZXZlcnNpbmcgdGhlIG9yZGVyIG9mCi0gICAgICBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUgYXJndW1lbnQuCisgICAgICAgIEV4dGVuZCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSAqaXRlcmFibGUqLgorICAgICAgICBOb3RlLCB0aGUgc2VyaWVzIG9mIGxlZnQgYXBwZW5kcyByZXN1bHRzIGluIHJldmVyc2luZyB0aGUgb3JkZXIgb2YKKyAgICAgICAgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFyZ3VtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IHBvcCgpCisgICAgLi4gbWV0aG9kOjogcG9wKCkKIAotICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KLSAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCisgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCisgICAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcG9wbGVmdCgpCisgICAgLi4gbWV0aG9kOjogcG9wbGVmdCgpCiAKLSAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KLSAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCisgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KKyAgICAgICAgZWxlbWVudHMgYXJlIHByZXNlbnQsIHJhaXNlcyBhbiA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiByZW1vdmUodmFsdWUpCisgICAgLi4gbWV0aG9kOjogcmVtb3ZlKHZhbHVlKQogCi0gICAgICBSZW1vdmVkIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCi0gICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQorICAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiByZXZlcnNlKCkKKyAgICAuLiBtZXRob2Q6OiByZXZlcnNlKCkKIAotICAgICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlcXVlIGluLXBsYWNlIGFuZCB0aGVuIHJldHVybiBgYE5vbmVgYC4KKyAgICAgICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlcXVlIGluLXBsYWNlIGFuZCB0aGVuIHJldHVybiBgYE5vbmVgYC4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IHJvdGF0ZShuKQorICAgIC4uIG1ldGhvZDo6IHJvdGF0ZShuKQogCi0gICAgICBSb3RhdGUgdGhlIGRlcXVlICpuKiBzdGVwcyB0byB0aGUgcmlnaHQuICBJZiAqbiogaXMgbmVnYXRpdmUsIHJvdGF0ZSB0bwotICAgICAgdGhlIGxlZnQuICBSb3RhdGluZyBvbmUgc3RlcCB0byB0aGUgcmlnaHQgaXMgZXF1aXZhbGVudCB0bzoKLSAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCisgICAgICAgIFJvdGF0ZSB0aGUgZGVxdWUgKm4qIHN0ZXBzIHRvIHRoZSByaWdodC4gIElmICpuKiBpcyBuZWdhdGl2ZSwgcm90YXRlIHRvCisgICAgICAgIHRoZSBsZWZ0LiAgUm90YXRpbmcgb25lIHN0ZXAgdG8gdGhlIHJpZ2h0IGlzIGVxdWl2YWxlbnQgdG86CisgICAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCiAKIAotICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CisgICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CiAKLSAgIC4uIGF0dHJpYnV0ZTo6IG1heGxlbgorICAgIC4uIGF0dHJpYnV0ZTo6IG1heGxlbgogCi0gICAgICBNYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciAqTm9uZSogaWYgdW5ib3VuZGVkLgorICAgICAgICBNYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciAqTm9uZSogaWYgdW5ib3VuZGVkLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLCBkZXF1ZXMgc3VwcG9ydCBpdGVyYXRpb24sIHBpY2tsaW5nLCBgYGxlbihkKWBgLApAQCAtMzM3LDU2ICs1MDcsNTYgQEAKIAogLi4gZG9jdGVzdDo6CiAKLSAgID4+PiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotICAgPj4+IGQgPSBkZXF1ZSgnZ2hpJykgICAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSB3aXRoIHRocmVlIGl0ZW1zCi0gICA+Pj4gZm9yIGVsZW0gaW4gZDogICAgICAgICAgICAgICAgICAgIyBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlJ3MgZWxlbWVudHMKLSAgIC4uLiAgICAgcHJpbnQoZWxlbS51cHBlcigpKQotICAgRwotICAgSAotICAgSQorICAgID4+PiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorICAgID4+PiBkID0gZGVxdWUoJ2doaScpICAgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgd2l0aCB0aHJlZSBpdGVtcworICAgID4+PiBmb3IgZWxlbSBpbiBkOiAgICAgICAgICAgICAgICAgICAjIGl0ZXJhdGUgb3ZlciB0aGUgZGVxdWUncyBlbGVtZW50cworICAgIC4uLiAgICAgcHJpbnQoZWxlbS51cHBlcigpKQorICAgIEcKKyAgICBICisgICAgSQogCi0gICA+Pj4gZC5hcHBlbmQoJ2onKSAgICAgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIHJpZ2h0IHNpZGUKLSAgID4+PiBkLmFwcGVuZGxlZnQoJ2YnKSAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbGVmdCBzaWRlCi0gICA+Pj4gZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVxdWUKLSAgIGRlcXVlKFsnZicsICdnJywgJ2gnLCAnaScsICdqJ10pCisgICAgPj4+IGQuYXBwZW5kKCdqJykgICAgICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSByaWdodCBzaWRlCisgICAgPj4+IGQuYXBwZW5kbGVmdCgnZicpICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBsZWZ0IHNpZGUKKyAgICA+Pj4gZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVxdWUKKyAgICBkZXF1ZShbJ2YnLCAnZycsICdoJywgJ2knLCAnaiddKQogCi0gICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgcmlnaHRtb3N0IGl0ZW0KLSAgICdqJwotICAgPj4+IGQucG9wbGVmdCgpICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIGxlZnRtb3N0IGl0ZW0KLSAgICdmJwotICAgPj4+IGxpc3QoZCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgdGhlIGRlcXVlCi0gICBbJ2cnLCAnaCcsICdpJ10KLSAgID4+PiBkWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgbGVmdG1vc3QgaXRlbQotICAgJ2cnCi0gICA+Pj4gZFstMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IHJpZ2h0bW9zdCBpdGVtCi0gICAnaScKKyAgICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgcmlnaHRtb3N0IGl0ZW0KKyAgICAnaicKKyAgICA+Pj4gZC5wb3BsZWZ0KCkgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgbGVmdG1vc3QgaXRlbQorICAgICdmJworICAgID4+PiBsaXN0KGQpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZXF1ZQorICAgIFsnZycsICdoJywgJ2knXQorICAgID4+PiBkWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgbGVmdG1vc3QgaXRlbQorICAgICdnJworICAgID4+PiBkWy0xXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgcmlnaHRtb3N0IGl0ZW0KKyAgICAnaScKIAotICAgPj4+IGxpc3QocmV2ZXJzZWQoZCkpICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgYSBkZXF1ZSBpbiByZXZlcnNlCi0gICBbJ2knLCAnaCcsICdnJ10KLSAgID4+PiAnaCcgaW4gZCAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlYXJjaCB0aGUgZGVxdWUKLSAgIFRydWUKLSAgID4+PiBkLmV4dGVuZCgnamtsJykgICAgICAgICAgICAgICAgICAjIGFkZCBtdWx0aXBsZSBlbGVtZW50cyBhdCBvbmNlCi0gICA+Pj4gZAotICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQotICAgPj4+IGQucm90YXRlKDEpICAgICAgICAgICAgICAgICAgICAgICMgcmlnaHQgcm90YXRpb24KLSAgID4+PiBkCi0gICBkZXF1ZShbJ2wnLCAnZycsICdoJywgJ2knLCAnaicsICdrJ10pCi0gICA+Pj4gZC5yb3RhdGUoLTEpICAgICAgICAgICAgICAgICAgICAgIyBsZWZ0IHJvdGF0aW9uCi0gICA+Pj4gZAotICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQorICAgID4+PiBsaXN0KHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgZGVxdWUgaW4gcmV2ZXJzZQorICAgIFsnaScsICdoJywgJ2cnXQorICAgID4+PiAnaCcgaW4gZCAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlYXJjaCB0aGUgZGVxdWUKKyAgICBUcnVlCisgICAgPj4+IGQuZXh0ZW5kKCdqa2wnKSAgICAgICAgICAgICAgICAgICMgYWRkIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UKKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKKyAgICA+Pj4gZC5yb3RhdGUoMSkgICAgICAgICAgICAgICAgICAgICAgIyByaWdodCByb3RhdGlvbgorICAgID4+PiBkCisgICAgZGVxdWUoWydsJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnayddKQorICAgID4+PiBkLnJvdGF0ZSgtMSkgICAgICAgICAgICAgICAgICAgICAjIGxlZnQgcm90YXRpb24KKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKIAotICAgPj4+IGRlcXVlKHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSBpbiByZXZlcnNlIG9yZGVyCi0gICBkZXF1ZShbJ2wnLCAnaycsICdqJywgJ2knLCAnaCcsICdnJ10pCi0gICA+Pj4gZC5jbGVhcigpICAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgZGVxdWUKLSAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQotICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8cHlzaGVsbCM2PiIsIGxpbmUgMSwgaW4gLXRvcGxldmVsLQotICAgICAgIGQucG9wKCkKLSAgIEluZGV4RXJyb3I6IHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlCisgICAgPj4+IGRlcXVlKHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSBpbiByZXZlcnNlIG9yZGVyCisgICAgZGVxdWUoWydsJywgJ2snLCAnaicsICdpJywgJ2gnLCAnZyddKQorICAgID4+PiBkLmNsZWFyKCkgICAgICAgICAgICAgICAgICAgICAgICAjIGVtcHR5IHRoZSBkZXF1ZQorICAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHB5c2hlbGwjNj4iLCBsaW5lIDEsIGluIC10b3BsZXZlbC0KKyAgICAgICAgICAgIGQucG9wKCkKKyAgICBJbmRleEVycm9yOiBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQogCi0gICA+Pj4gZC5leHRlbmRsZWZ0KCdhYmMnKSAgICAgICAgICAgICAgIyBleHRlbmRsZWZ0KCkgcmV2ZXJzZXMgdGhlIGlucHV0IG9yZGVyCi0gICA+Pj4gZAotICAgZGVxdWUoWydjJywgJ2InLCAnYSddKQorICAgID4+PiBkLmV4dGVuZGxlZnQoJ2FiYycpICAgICAgICAgICAgICAjIGV4dGVuZGxlZnQoKSByZXZlcnNlcyB0aGUgaW5wdXQgb3JkZXIKKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnYycsICdiJywgJ2EnXSkKIAogCiA6Y2xhc3M6YGRlcXVlYCBSZWNpcGVzCkBAIC0zOTcsOSArNTY3LDEwIEBACiBCb3VuZGVkIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlcgogaW4gVW5peDo6CiAKLSAgIGRlZiB0YWlsKGZpbGVuYW1lLCBuPTEwKToKLSAgICAgICAnUmV0dXJuIHRoZSBsYXN0IG4gbGluZXMgb2YgYSBmaWxlJwotICAgICAgIHJldHVybiBkZXF1ZShvcGVuKGZpbGVuYW1lKSwgbikKKyAgICBkZWYgdGFpbChmaWxlbmFtZSwgbj0xMCk6CisgICAgICAgICdSZXR1cm4gdGhlIGxhc3QgbiBsaW5lcyBvZiBhIGZpbGUnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBkZXF1ZShmLCBuKQogCiBBbm90aGVyIGFwcHJvYWNoIHRvIHVzaW5nIGRlcXVlcyBpcyB0byBtYWludGFpbiBhIHNlcXVlbmNlIG9mIHJlY2VudGx5CiBhZGRlZCBlbGVtZW50cyBieSBhcHBlbmRpbmcgdG8gdGhlIHJpZ2h0IGFuZCBwb3BwaW5nIHRvIHRoZSBsZWZ0OjoKQEAgLTQyMCwxMCArNTkxLDEwIEBACiBkZWxldGlvbi4gIEZvciBleGFtcGxlLCBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGBgZGVsIGRbbl1gYCByZWxpZXMgb24KIHRoZSA6bWV0aDpgcm90YXRlYCBtZXRob2QgdG8gcG9zaXRpb24gZWxlbWVudHMgdG8gYmUgcG9wcGVkOjoKIAotICAgZGVmIGRlbGV0ZV9udGgoZCwgbik6Ci0gICAgICAgZC5yb3RhdGUoLW4pCi0gICAgICAgZC5wb3BsZWZ0KCkKLSAgICAgICBkLnJvdGF0ZShuKQorICAgIGRlZiBkZWxldGVfbnRoKGQsIG4pOgorICAgICAgICBkLnJvdGF0ZSgtbikKKyAgICAgICAgZC5wb3BsZWZ0KCkKKyAgICAgICAgZC5yb3RhdGUobikKIAogVG8gaW1wbGVtZW50IDpjbGFzczpgZGVxdWVgIHNsaWNpbmcsIHVzZSBhIHNpbWlsYXIgYXBwcm9hY2ggYXBwbHlpbmcKIDptZXRoOmByb3RhdGVgIHRvIGJyaW5nIGEgdGFyZ2V0IGVsZW1lbnQgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIFJlbW92ZQpAQCAtNDM5LDUwICs2MTAsNTAgQEAKIAogLi4gY2xhc3M6OiBkZWZhdWx0ZGljdChbZGVmYXVsdF9mYWN0b3J5WywgLi4uXV0pCiAKLSAgIFJldHVybnMgYSBuZXcgZGljdGlvbmFyeS1saWtlIG9iamVjdC4gIDpjbGFzczpgZGVmYXVsdGRpY3RgIGlzIGEgc3ViY2xhc3Mgb2YgdGhlCi0gICBidWlsdC1pbiA6Y2xhc3M6YGRpY3RgIGNsYXNzLiAgSXQgb3ZlcnJpZGVzIG9uZSBtZXRob2QgYW5kIGFkZHMgb25lIHdyaXRhYmxlCi0gICBpbnN0YW5jZSB2YXJpYWJsZS4gIFRoZSByZW1haW5pbmcgZnVuY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlCi0gICA6Y2xhc3M6YGRpY3RgIGNsYXNzIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLgorICAgIFJldHVybnMgYSBuZXcgZGljdGlvbmFyeS1saWtlIG9iamVjdC4gIDpjbGFzczpgZGVmYXVsdGRpY3RgIGlzIGEgc3ViY2xhc3Mgb2YgdGhlCisgICAgYnVpbHQtaW4gOmNsYXNzOmBkaWN0YCBjbGFzcy4gIEl0IG92ZXJyaWRlcyBvbmUgbWV0aG9kIGFuZCBhZGRzIG9uZSB3cml0YWJsZQorICAgIGluc3RhbmNlIHZhcmlhYmxlLiAgVGhlIHJlbWFpbmluZyBmdW5jdGlvbmFsaXR5IGlzIHRoZSBzYW1lIGFzIGZvciB0aGUKKyAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLgogCi0gICBUaGUgZmlyc3QgYXJndW1lbnQgcHJvdmlkZXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YAotICAgYXR0cmlidXRlOyBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYC4gQWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUKLSAgIGFzIGlmIHRoZXkgd2VyZSBwYXNzZWQgdG8gdGhlIDpjbGFzczpgZGljdGAgY29uc3RydWN0b3IsIGluY2x1ZGluZyBrZXl3b3JkCi0gICBhcmd1bWVudHMuCisgICAgVGhlIGZpcnN0IGFyZ3VtZW50IHByb3ZpZGVzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKKyAgICBhdHRyaWJ1dGU7IGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLiBBbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdHJlYXRlZCB0aGUgc2FtZQorICAgIGFzIGlmIHRoZXkgd2VyZSBwYXNzZWQgdG8gdGhlIDpjbGFzczpgZGljdGAgY29uc3RydWN0b3IsIGluY2x1ZGluZyBrZXl3b3JkCisgICAgYXJndW1lbnRzLgogCiAKLSAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZCBpbiBhZGRpdGlvbiB0byB0aGUKLSAgIHN0YW5kYXJkIDpjbGFzczpgZGljdGAgb3BlcmF0aW9uczoKKyAgICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2QgaW4gYWRkaXRpb24gdG8gdGhlCisgICAgc3RhbmRhcmQgOmNsYXNzOmBkaWN0YCBvcGVyYXRpb25zOgogCi0gICAuLiBtZXRob2Q6OiBfX21pc3NpbmdfXyhrZXkpCisgICAgLi4gbWV0aG9kOjogX19taXNzaW5nX18oa2V5KQogCi0gICAgICBJZiB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgYXR0cmlidXRlIGlzIGBgTm9uZWBgLCB0aGlzIHJhaXNlcyBhCi0gICAgICA6ZXhjOmBLZXlFcnJvcmAgZXhjZXB0aW9uIHdpdGggdGhlICprZXkqIGFzIGFyZ3VtZW50LgorICAgICAgICBJZiB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgYXR0cmlidXRlIGlzIGBgTm9uZWBgLCB0aGlzIHJhaXNlcyBhCisgICAgICAgIDpleGM6YEtleUVycm9yYCBleGNlcHRpb24gd2l0aCB0aGUgKmtleSogYXMgYXJndW1lbnQuCiAKLSAgICAgIElmIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGlzIG5vdCBgYE5vbmVgYCwgaXQgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzCi0gICAgICB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdpdmVuICprZXkqLCB0aGlzIHZhbHVlIGlzIGluc2VydGVkIGluCi0gICAgICB0aGUgZGljdGlvbmFyeSBmb3IgdGhlICprZXkqLCBhbmQgcmV0dXJuZWQuCisgICAgICAgIElmIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGlzIG5vdCBgYE5vbmVgYCwgaXQgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzCisgICAgICAgIHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gKmtleSosIHRoaXMgdmFsdWUgaXMgaW5zZXJ0ZWQgaW4KKyAgICAgICAgdGhlIGRpY3Rpb25hcnkgZm9yIHRoZSAqa2V5KiwgYW5kIHJldHVybmVkLgogCi0gICAgICBJZiBjYWxsaW5nIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhpcyBleGNlcHRpb24gaXMKLSAgICAgIHByb3BhZ2F0ZWQgdW5jaGFuZ2VkLgorICAgICAgICBJZiBjYWxsaW5nIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhpcyBleGNlcHRpb24gaXMKKyAgICAgICAgcHJvcGFnYXRlZCB1bmNoYW5nZWQuCiAKLSAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgOm1ldGg6YF9fZ2V0aXRlbV9fYCBtZXRob2Qgb2YgdGhlCi0gICAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIHdoZW4gdGhlIHJlcXVlc3RlZCBrZXkgaXMgbm90IGZvdW5kOyB3aGF0ZXZlciBpdAotICAgICAgcmV0dXJucyBvciByYWlzZXMgaXMgdGhlbiByZXR1cm5lZCBvciByYWlzZWQgYnkgOm1ldGg6YF9fZ2V0aXRlbV9fYC4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSA6bWV0aDpgX19nZXRpdGVtX19gIG1ldGhvZCBvZiB0aGUKKyAgICAgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyB3aGVuIHRoZSByZXF1ZXN0ZWQga2V5IGlzIG5vdCBmb3VuZDsgd2hhdGV2ZXIgaXQKKyAgICAgICAgcmV0dXJucyBvciByYWlzZXMgaXMgdGhlbiByZXR1cm5lZCBvciByYWlzZWQgYnkgOm1ldGg6YF9fZ2V0aXRlbV9fYC4KIAotICAgICAgTm90ZSB0aGF0IDptZXRoOmBfX21pc3NpbmdfX2AgaXMgKm5vdCogY2FsbGVkIGZvciBhbnkgb3BlcmF0aW9ucyBiZXNpZGVzCi0gICAgICA6bWV0aDpgX19nZXRpdGVtX19gLiBUaGlzIG1lYW5zIHRoYXQgOm1ldGg6YGdldGAgd2lsbCwgbGlrZSBub3JtYWwKLSAgICAgIGRpY3Rpb25hcmllcywgcmV0dXJuIGBgTm9uZWBgIGFzIGEgZGVmYXVsdCByYXRoZXIgdGhhbiB1c2luZwotICAgICAgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAuCisgICAgICAgIE5vdGUgdGhhdCA6bWV0aDpgX19taXNzaW5nX19gIGlzICpub3QqIGNhbGxlZCBmb3IgYW55IG9wZXJhdGlvbnMgYmVzaWRlcworICAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gLiBUaGlzIG1lYW5zIHRoYXQgOm1ldGg6YGdldGAgd2lsbCwgbGlrZSBub3JtYWwKKyAgICAgICAgZGljdGlvbmFyaWVzLCByZXR1cm4gYGBOb25lYGAgYXMgYSBkZWZhdWx0IHJhdGhlciB0aGFuIHVzaW5nCisgICAgICAgIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgLgogCiAKLSAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlOgorICAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlOgogCiAKLSAgIC4uIGF0dHJpYnV0ZTo6IGRlZmF1bHRfZmFjdG9yeQorICAgIC4uIGF0dHJpYnV0ZTo6IGRlZmF1bHRfZmFjdG9yeQogCi0gICAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IHRoZSA6bWV0aDpgX19taXNzaW5nX19gIG1ldGhvZDsgaXQgaXMKLSAgICAgIGluaXRpYWxpemVkIGZyb20gdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciwgaWYgcHJlc2VudCwgb3IgdG8KLSAgICAgIGBgTm9uZWBgLCBpZiBhYnNlbnQuCisgICAgICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgYnkgdGhlIDptZXRoOmBfX21pc3NpbmdfX2AgbWV0aG9kOyBpdCBpcworICAgICAgICBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIGlmIHByZXNlbnQsIG9yIHRvCisgICAgICAgIGBgTm9uZWBgLCBpZiBhYnNlbnQuCiAKIAogOmNsYXNzOmBkZWZhdWx0ZGljdGAgRXhhbXBsZXMKQEAgLTQ5MSwxMyArNjYyLDEzIEBACiBVc2luZyA6Y2xhc3M6YGxpc3RgIGFzIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCwgaXQgaXMgZWFzeSB0byBncm91cCBhCiBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgaW50byBhIGRpY3Rpb25hcnkgb2YgbGlzdHM6CiAKLSAgID4+PiBzID0gWygneWVsbG93JywgMSksICgnYmx1ZScsIDIpLCAoJ3llbGxvdycsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKV0KLSAgID4+PiBkID0gZGVmYXVsdGRpY3QobGlzdCkKLSAgID4+PiBmb3IgaywgdiBpbiBzOgotICAgLi4uICAgICBkW2tdLmFwcGVuZCh2KQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCisgICAgPj4+IHMgPSBbKCd5ZWxsb3cnLCAxKSwgKCdibHVlJywgMiksICgneWVsbG93JywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpXQorICAgID4+PiBkID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGRba10uYXBwZW5kKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KIAogV2hlbiBlYWNoIGtleSBpcyBlbmNvdW50ZXJlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIGl0IGlzIG5vdCBhbHJlYWR5IGluIHRoZQogbWFwcGluZzsgc28gYW4gZW50cnkgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHVzaW5nIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YApAQCAtNTA3LDI0ICs2NzgsMjQgQEAKIDptZXRoOmBsaXN0LmFwcGVuZGAgb3BlcmF0aW9uIGFkZHMgYW5vdGhlciB2YWx1ZSB0byB0aGUgbGlzdC4gVGhpcyB0ZWNobmlxdWUgaXMKIHNpbXBsZXIgYW5kIGZhc3RlciB0aGFuIGFuIGVxdWl2YWxlbnQgdGVjaG5pcXVlIHVzaW5nIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgOgogCi0gICA+Pj4gZCA9IHt9Ci0gICA+Pj4gZm9yIGssIHYgaW4gczoKLSAgIC4uLiAgICAgZC5zZXRkZWZhdWx0KGssIFtdKS5hcHBlbmQodikKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQorICAgID4+PiBkID0ge30KKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGQuc2V0ZGVmYXVsdChrLCBbXSkuYXBwZW5kKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KIAogU2V0dGluZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgdG8gOmNsYXNzOmBpbnRgIG1ha2VzIHRoZQogOmNsYXNzOmBkZWZhdWx0ZGljdGAgdXNlZnVsIGZvciBjb3VudGluZyAobGlrZSBhIGJhZyBvciBtdWx0aXNldCBpbiBvdGhlcgogbGFuZ3VhZ2VzKToKIAotICAgPj4+IHMgPSAnbWlzc2lzc2lwcGknCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGludCkKLSAgID4+PiBmb3IgayBpbiBzOgotICAgLi4uICAgICBkW2tdICs9IDEKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnaScsIDQpLCAoJ3AnLCAyKSwgKCdzJywgNCksICgnbScsIDEpXQorICAgID4+PiBzID0gJ21pc3Npc3NpcHBpJworICAgID4+PiBkID0gZGVmYXVsdGRpY3QoaW50KQorICAgID4+PiBmb3IgayBpbiBzOgorICAgIC4uLiAgICAgZFtrXSArPSAxCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2knLCA0KSwgKCdwJywgMiksICgncycsIDQpLCAoJ20nLCAxKV0KIAogV2hlbiBhIGxldHRlciBpcyBmaXJzdCBlbmNvdW50ZXJlZCwgaXQgaXMgbWlzc2luZyBmcm9tIHRoZSBtYXBwaW5nLCBzbyB0aGUKIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGZ1bmN0aW9uIGNhbGxzIDpmdW5jOmBpbnRgIHRvIHN1cHBseSBhIGRlZmF1bHQgY291bnQgb2YKQEAgLTUzNSwyMyArNzA2LDIzIEBACiBpcyB0byB1c2UgYSBsYW1iZGEgZnVuY3Rpb24gd2hpY2ggY2FuIHN1cHBseSBhbnkgY29uc3RhbnQgdmFsdWUgKG5vdCBqdXN0CiB6ZXJvKToKIAotICAgPj4+IGRlZiBjb25zdGFudF9mYWN0b3J5KHZhbHVlKToKLSAgIC4uLiAgICAgcmV0dXJuIGxhbWJkYTogdmFsdWUKLSAgID4+PiBkID0gZGVmYXVsdGRpY3QoY29uc3RhbnRfZmFjdG9yeSgnPG1pc3Npbmc+JykpCi0gICA+Pj4gZC51cGRhdGUobmFtZT0nSm9obicsIGFjdGlvbj0ncmFuJykKLSAgID4+PiAnJShuYW1lKXMgJShhY3Rpb24pcyB0byAlKG9iamVjdClzJyAlIGQKLSAgICdKb2huIHJhbiB0byA8bWlzc2luZz4nCisgICAgPj4+IGRlZiBjb25zdGFudF9mYWN0b3J5KHZhbHVlKToKKyAgICAuLi4gICAgIHJldHVybiBsYW1iZGE6IHZhbHVlCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChjb25zdGFudF9mYWN0b3J5KCc8bWlzc2luZz4nKSkKKyAgICA+Pj4gZC51cGRhdGUobmFtZT0nSm9obicsIGFjdGlvbj0ncmFuJykKKyAgICA+Pj4gJyUobmFtZSlzICUoYWN0aW9uKXMgdG8gJShvYmplY3QpcycgJSBkCisgICAgJ0pvaG4gcmFuIHRvIDxtaXNzaW5nPicKIAogU2V0dGluZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgdG8gOmNsYXNzOmBzZXRgIG1ha2VzIHRoZQogOmNsYXNzOmBkZWZhdWx0ZGljdGAgdXNlZnVsIGZvciBidWlsZGluZyBhIGRpY3Rpb25hcnkgb2Ygc2V0czoKIAotICAgPj4+IHMgPSBbKCdyZWQnLCAxKSwgKCdibHVlJywgMiksICgncmVkJywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpLCAoJ2JsdWUnLCA0KV0KLSAgID4+PiBkID0gZGVmYXVsdGRpY3Qoc2V0KQotICAgPj4+IGZvciBrLCB2IGluIHM6Ci0gICAuLi4gICAgIGRba10uYWRkKHYpCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2JsdWUnLCBzZXQoWzIsIDRdKSksICgncmVkJywgc2V0KFsxLCAzXSkpXQorICAgID4+PiBzID0gWygncmVkJywgMSksICgnYmx1ZScsIDIpLCAoJ3JlZCcsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKSwgKCdibHVlJywgNCldCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChzZXQpCisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkW2tdLmFkZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgezIsIDR9KSwgKCdyZWQnLCB7MSwgM30pXQogCiAKIDpmdW5jOmBuYW1lZHR1cGxlYCBGYWN0b3J5IEZ1bmN0aW9uIGZvciBUdXBsZXMgd2l0aCBOYW1lZCBGaWVsZHMKQEAgLTU2MywxNjggKzczNCwxMzEgQEAKIAogLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQogCi0gICBSZXR1cm5zIGEgbmV3IHR1cGxlIHN1YmNsYXNzIG5hbWVkICp0eXBlbmFtZSouICBUaGUgbmV3IHN1YmNsYXNzIGlzIHVzZWQgdG8KLSAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKLSAgIHdlbGwgYXMgYmVpbmcgaW5kZXhhYmxlIGFuZCBpdGVyYWJsZS4gIEluc3RhbmNlcyBvZiB0aGUgc3ViY2xhc3MgYWxzbyBoYXZlIGEKLSAgIGhlbHBmdWwgZG9jc3RyaW5nICh3aXRoIHR5cGVuYW1lIGFuZCBmaWVsZF9uYW1lcykgYW5kIGEgaGVscGZ1bCA6bWV0aDpgX19yZXByX19gCi0gICBtZXRob2Qgd2hpY2ggbGlzdHMgdGhlIHR1cGxlIGNvbnRlbnRzIGluIGEgYGBuYW1lPXZhbHVlYGAgZm9ybWF0LgorICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bworICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKKyAgICB3ZWxsIGFzIGJlaW5nIGluZGV4YWJsZSBhbmQgaXRlcmFibGUuICBJbnN0YW5jZXMgb2YgdGhlIHN1YmNsYXNzIGFsc28gaGF2ZSBhCisgICAgaGVscGZ1bCBkb2NzdHJpbmcgKHdpdGggdHlwZW5hbWUgYW5kIGZpZWxkX25hbWVzKSBhbmQgYSBoZWxwZnVsIDptZXRoOmBfX3JlcHJfX2AKKyAgICBtZXRob2Qgd2hpY2ggbGlzdHMgdGhlIHR1cGxlIGNvbnRlbnRzIGluIGEgYGBuYW1lPXZhbHVlYGAgZm9ybWF0LgogCi0gICBUaGUgKmZpZWxkX25hbWVzKiBhcmUgYSBzaW5nbGUgc3RyaW5nIHdpdGggZWFjaCBmaWVsZG5hbWUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UKLSAgIGFuZC9vciBjb21tYXMsIGZvciBleGFtcGxlIGBgJ3ggeSdgYCBvciBgYCd4LCB5J2BgLiAgQWx0ZXJuYXRpdmVseSwgKmZpZWxkX25hbWVzKgotICAgY2FuIGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBzdWNoIGFzIGBgWyd4JywgJ3knXWBgLgorICAgIFRoZSAqZmllbGRfbmFtZXMqIGFyZSBhIHNpbmdsZSBzdHJpbmcgd2l0aCBlYWNoIGZpZWxkbmFtZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZQorICAgIGFuZC9vciBjb21tYXMsIGZvciBleGFtcGxlIGBgJ3ggeSdgYCBvciBgYCd4LCB5J2BgLiAgQWx0ZXJuYXRpdmVseSwgKmZpZWxkX25hbWVzKgorICAgIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgc3VjaCBhcyBgYFsneCcsICd5J11gYC4KIAotICAgQW55IHZhbGlkIFB5dGhvbiBpZGVudGlmaWVyIG1heSBiZSB1c2VkIGZvciBhIGZpZWxkbmFtZSBleGNlcHQgZm9yIG5hbWVzCi0gICBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBWYWxpZCBpZGVudGlmaWVycyBjb25zaXN0IG9mIGxldHRlcnMsIGRpZ2l0cywKLSAgIGFuZCB1bmRlcnNjb3JlcyBidXQgZG8gbm90IHN0YXJ0IHdpdGggYSBkaWdpdCBvciB1bmRlcnNjb3JlIGFuZCBjYW5ub3QgYmUKLSAgIGEgOm1vZDpga2V5d29yZGAgc3VjaCBhcyAqY2xhc3MqLCAqZm9yKiwgKnJldHVybiosICpnbG9iYWwqLCAqcGFzcyosCi0gICBvciAqcmFpc2UqLgorICAgIEFueSB2YWxpZCBQeXRob24gaWRlbnRpZmllciBtYXkgYmUgdXNlZCBmb3IgYSBmaWVsZG5hbWUgZXhjZXB0IGZvciBuYW1lcworICAgIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFZhbGlkIGlkZW50aWZpZXJzIGNvbnNpc3Qgb2YgbGV0dGVycywgZGlnaXRzLAorICAgIGFuZCB1bmRlcnNjb3JlcyBidXQgZG8gbm90IHN0YXJ0IHdpdGggYSBkaWdpdCBvciB1bmRlcnNjb3JlIGFuZCBjYW5ub3QgYmUKKyAgICBhIDptb2Q6YGtleXdvcmRgIHN1Y2ggYXMgKmNsYXNzKiwgKmZvciosICpyZXR1cm4qLCAqZ2xvYmFsKiwgKnBhc3MqLAorICAgIG9yICpyYWlzZSouCiAKLSAgIElmICpyZW5hbWUqIGlzIHRydWUsIGludmFsaWQgZmllbGRuYW1lcyBhcmUgYXV0b21hdGljYWxseSByZXBsYWNlZAotICAgd2l0aCBwb3NpdGlvbmFsIG5hbWVzLiAgRm9yIGV4YW1wbGUsIGBgWydhYmMnLCAnZGVmJywgJ2doaScsICdhYmMnXWBgIGlzCi0gICBjb252ZXJ0ZWQgdG8gYGBbJ2FiYycsICdfMScsICdnaGknLCAnXzMnXWBgLCBlbGltaW5hdGluZyB0aGUga2V5d29yZAotICAgYGBkZWZgYCBhbmQgdGhlIGR1cGxpY2F0ZSBmaWVsZG5hbWUgYGBhYmNgYC4KKyAgICBJZiAqcmVuYW1lKiBpcyB0cnVlLCBpbnZhbGlkIGZpZWxkbmFtZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQKKyAgICB3aXRoIHBvc2l0aW9uYWwgbmFtZXMuICBGb3IgZXhhbXBsZSwgYGBbJ2FiYycsICdkZWYnLCAnZ2hpJywgJ2FiYyddYGAgaXMKKyAgICBjb252ZXJ0ZWQgdG8gYGBbJ2FiYycsICdfMScsICdnaGknLCAnXzMnXWBgLCBlbGltaW5hdGluZyB0aGUga2V5d29yZAorICAgIGBgZGVmYGAgYW5kIHRoZSBkdXBsaWNhdGUgZmllbGRuYW1lIGBgYWJjYGAuCiAKLSAgIElmICp2ZXJib3NlKiBpcyB0cnVlLCB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyBwcmludGVkIGp1c3QgYmVmb3JlIGJlaW5nIGJ1aWx0LgorICAgIElmICp2ZXJib3NlKiBpcyB0cnVlLCB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyBwcmludGVkIGFmdGVyIGl0IGlzCisgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKKyAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCi0gICBOYW1lZCB0dXBsZSBpbnN0YW5jZXMgZG8gbm90IGhhdmUgcGVyLWluc3RhbmNlIGRpY3Rpb25hcmllcywgc28gdGhleSBhcmUKLSAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCisgICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCisgICAgbGlnaHR3ZWlnaHQgYW5kIHJlcXVpcmUgbm8gbW9yZSBtZW1vcnkgdGhhbiByZWd1bGFyIHR1cGxlcy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKLSAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgogCiAKIC4uIGRvY3Rlc3Q6OgotICAgOm9wdGlvbnM6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKIAotICAgPj4+ICMgQmFzaWMgZXhhbXBsZQotICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQotICAgPj4+IHAgPSBQb2ludCh4PTEwLCB5PTExKQotCi0gICA+Pj4gIyBFeGFtcGxlIHVzaW5nIHRoZSB2ZXJib3NlIG9wdGlvbiB0byBwcmludCB0aGUgY2xhc3MgZGVmaW5pdGlvbgotICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JywgdmVyYm9zZT1UcnVlKQotICAgY2xhc3MgUG9pbnQodHVwbGUpOgotICAgICAgICAgICAnUG9pbnQoeCwgeSknCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX2ZpZWxkcyA9ICgneCcsICd5JykKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX25ld19fKF9jbHMsIHgsIHkpOgotICAgICAgICAgICAgICAgJ0NyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQb2ludCh4LCB5KScKLSAgICAgICAgICAgICAgIHJldHVybiBfdHVwbGUuX19uZXdfXyhfY2xzLCAoeCwgeSkpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBAY2xhc3NtZXRob2QKLSAgICAgICAgICAgZGVmIF9tYWtlKGNscywgaXRlcmFibGUsIG5ldz10dXBsZS5fX25ld19fLCBsZW49bGVuKToKLSAgICAgICAgICAgICAgICdNYWtlIGEgbmV3IFBvaW50IG9iamVjdCBmcm9tIGEgc2VxdWVuY2Ugb3IgaXRlcmFibGUnCi0gICAgICAgICAgICAgICByZXN1bHQgPSBuZXcoY2xzLCBpdGVyYWJsZSkKLSAgICAgICAgICAgICAgIGlmIGxlbihyZXN1bHQpICE9IDI6Ci0gICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCAyIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihyZXN1bHQpKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBhIG5pY2VseSBmb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gc3RyaW5nJwotICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fICsgJyh4PSVyLCB5PSVyKScgJSBzZWxmCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX2FzZGljdChzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gYSBuZXcgT3JkZXJlZERpY3Qgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciB2YWx1ZXMnCi0gICAgICAgICAgICAgICByZXR1cm4gT3JkZXJlZERpY3QoemlwKHNlbGYuX2ZpZWxkcywgc2VsZikpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfX2RpY3RfXyA9IHByb3BlcnR5KF9hc2RpY3QpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX3JlcGxhY2UoX3NlbGYsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIGEgbmV3IFBvaW50IG9iamVjdCByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldyB2YWx1ZXMnCi0gICAgICAgICAgICAgICByZXN1bHQgPSBfc2VsZi5fbWFrZShtYXAoa3dkcy5wb3AsICgneCcsICd5JyksIF9zZWxmKSkKLSAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignR290IHVuZXhwZWN0ZWQgZmllbGQgbmFtZXM6ICVyJyAlIGxpc3Qoa3dkcy5rZXlzKCkpKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBzZWxmIGFzIGEgcGxhaW4gdHVwbGUuICAgVXNlZCBieSBjb3B5IGFuZCBwaWNrbGUuJwotICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICB4ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKDApLCBkb2M9J0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMCcpCi0gICAgICAgICAgIHkgPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoMSksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciAxJykKLQotICAgPj4+IHAgPSBQb2ludCgxMSwgeT0yMikgICAgICMgaW5zdGFudGlhdGUgd2l0aCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICA+Pj4gcFswXSArIHBbMV0gICAgICAgICAgICAgIyBpbmRleGFibGUgbGlrZSB0aGUgcGxhaW4gdHVwbGUgKDExLCAyMikKLSAgIDMzCi0gICA+Pj4geCwgeSA9IHAgICAgICAgICAgICAgICAgIyB1bnBhY2sgbGlrZSBhIHJlZ3VsYXIgdHVwbGUKLSAgID4+PiB4LCB5Ci0gICAoMTEsIDIyKQotICAgPj4+IHAueCArIHAueSAgICAgICAgICAgICAgICMgZmllbGRzIGFsc28gYWNjZXNzaWJsZSBieSBuYW1lCi0gICAzMwotICAgPj4+IHAgICAgICAgICAgICAgICAgICAgICAgICMgcmVhZGFibGUgX19yZXByX18gd2l0aCBhIG5hbWU9dmFsdWUgc3R5bGUKLSAgIFBvaW50KHg9MTEsIHk9MjIpCisgICAgPj4+ICMgQmFzaWMgZXhhbXBsZQorICAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKKyAgICA+Pj4gcCA9IFBvaW50KDExLCB5PTIyKSAgICAgIyBpbnN0YW50aWF0ZSB3aXRoIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMKKyAgICA+Pj4gcFswXSArIHBbMV0gICAgICAgICAgICAgIyBpbmRleGFibGUgbGlrZSB0aGUgcGxhaW4gdHVwbGUgKDExLCAyMikKKyAgICAzMworICAgID4+PiB4LCB5ID0gcCAgICAgICAgICAgICAgICAjIHVucGFjayBsaWtlIGEgcmVndWxhciB0dXBsZQorICAgID4+PiB4LCB5CisgICAgKDExLCAyMikKKyAgICA+Pj4gcC54ICsgcC55ICAgICAgICAgICAgICAgIyBmaWVsZHMgYWxzbyBhY2Nlc3NpYmxlIGJ5IG5hbWUKKyAgICAzMworICAgID4+PiBwICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWRhYmxlIF9fcmVwcl9fIHdpdGggYSBuYW1lPXZhbHVlIHN0eWxlCisgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogTmFtZWQgdHVwbGVzIGFyZSBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgYXNzaWduaW5nIGZpZWxkIG5hbWVzIHRvIHJlc3VsdCB0dXBsZXMgcmV0dXJuZWQKIGJ5IHRoZSA6bW9kOmBjc3ZgIG9yIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZXM6OgogCi0gICBFbXBsb3llZVJlY29yZCA9IG5hbWVkdHVwbGUoJ0VtcGxveWVlUmVjb3JkJywgJ25hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlJykKKyAgICBFbXBsb3llZVJlY29yZCA9IG5hbWVkdHVwbGUoJ0VtcGxveWVlUmVjb3JkJywgJ25hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlJykKIAotICAgaW1wb3J0IGNzdgotICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGNzdi5yZWFkZXIob3BlbigiZW1wbG95ZWVzLmNzdiIsICJyYiIpKSk6Ci0gICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKKyAgICBpbXBvcnQgY3N2CisgICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGNzdi5yZWFkZXIob3BlbigiZW1wbG95ZWVzLmNzdiIsICJyYiIpKSk6CisgICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCiAKLSAgIGltcG9ydCBzcWxpdGUzCi0gICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCcvY29tcGFueWRhdGEnKQotICAgY3Vyc29yID0gY29ubi5jdXJzb3IoKQotICAgY3Vyc29yLmV4ZWN1dGUoJ1NFTEVDVCBuYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZSBGUk9NIGVtcGxveWVlcycpCi0gICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3Vyc29yLmZldGNoYWxsKCkpOgotICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCisgICAgaW1wb3J0IHNxbGl0ZTMKKyAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCcvY29tcGFueWRhdGEnKQorICAgIGN1cnNvciA9IGNvbm4uY3Vyc29yKCkKKyAgICBjdXJzb3IuZXhlY3V0ZSgnU0VMRUNUIG5hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlIEZST00gZW1wbG95ZWVzJykKKyAgICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3Vyc29yLmZldGNoYWxsKCkpOgorICAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQogCiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBpbmhlcml0ZWQgZnJvbSB0dXBsZXMsIG5hbWVkIHR1cGxlcyBzdXBwb3J0Ci10aHJlZSBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIG9uZSBhdHRyaWJ1dGUuICBUbyBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoCit0aHJlZSBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIHR3byBhdHRyaWJ1dGVzLiAgVG8gcHJldmVudCBjb25mbGljdHMgd2l0aAogZmllbGQgbmFtZXMsIHRoZSBtZXRob2QgYW5kIGF0dHJpYnV0ZSBuYW1lcyBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUuCiAKIC4uIGNsYXNzbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX21ha2UoaXRlcmFibGUpCiAKLSAgIENsYXNzIG1ldGhvZCB0aGF0IG1ha2VzIGEgbmV3IGluc3RhbmNlIGZyb20gYW4gZXhpc3Rpbmcgc2VxdWVuY2Ugb3IgaXRlcmFibGUuCisgICAgQ2xhc3MgbWV0aG9kIHRoYXQgbWFrZXMgYSBuZXcgaW5zdGFuY2UgZnJvbSBhbiBleGlzdGluZyBzZXF1ZW5jZSBvciBpdGVyYWJsZS4KIAotLi4gZG9jdGVzdDo6CisgICAgLi4gZG9jdGVzdDo6CiAKLSAgICAgID4+PiB0ID0gWzExLCAyMl0KLSAgICAgID4+PiBQb2ludC5fbWFrZSh0KQotICAgICAgUG9pbnQoeD0xMSwgeT0yMikKKyAgICAgICAgPj4+IHQgPSBbMTEsIDIyXQorICAgICAgICA+Pj4gUG9pbnQuX21ha2UodCkKKyAgICAgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKLSAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgIHZhbHVlczo6CisgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgT3JkZXJlZERpY3RgIHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZworICAgIHZhbHVlcy4gIE5vdGUsIHRoaXMgbWV0aG9kIGlzIG5vIGxvbmdlciBuZWVkZWQgbm93IHRoYXQgdGhlIHNhbWUgZWZmZWN0IGNhbgorICAgIGJlIGFjaGlldmVkIGJ5IHVzaW5nIHRoZSBidWlsdC1pbiA6ZnVuYzpgdmFyc2AgZnVuY3Rpb246OgogCi0gICAgICA+Pj4gcC5fYXNkaWN0KCkKLSAgICAgIE9yZGVyZWREaWN0KFsoJ3gnLCAxMSksICgneScsIDIyKV0pCisgICAgICAgID4+PiB2YXJzKHApCisgICAgICAgIE9yZGVyZWREaWN0KFsoJ3gnLCAxMSksICgneScsIDIyKV0pCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBSZXR1cm5zIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIGluc3RlYWQgb2YgYSByZWd1bGFyIDpjbGFzczpgZGljdGAuCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKKyAgICAgICAgUmV0dXJucyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBpbnN0ZWFkIG9mIGEgcmVndWxhciA6Y2xhc3M6YGRpY3RgLgogCiAuLiBtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fcmVwbGFjZShrd2FyZ3MpCiAKLSAgIFJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgbmFtZWQgdHVwbGUgcmVwbGFjaW5nIHNwZWNpZmllZCBmaWVsZHMgd2l0aCBuZXcKLSAgIHZhbHVlczoKKyAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG5hbWVkIHR1cGxlIHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3CisgICAgdmFsdWVzOjoKIAotOjoKKyAgICAgICAgPj4+IHAgPSBQb2ludCh4PTExLCB5PTIyKQorICAgICAgICA+Pj4gcC5fcmVwbGFjZSh4PTMzKQorICAgICAgICBQb2ludCh4PTMzLCB5PTIyKQogCi0gICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCi0gICAgICA+Pj4gcC5fcmVwbGFjZSh4PTMzKQotICAgICAgUG9pbnQoeD0zMywgeT0yMikKKyAgICAgICAgPj4+IGZvciBwYXJ0bnVtLCByZWNvcmQgaW4gaW52ZW50b3J5Lml0ZW1zKCk6CisgICAgICAgIC4uLiAgICAgaW52ZW50b3J5W3BhcnRudW1dID0gcmVjb3JkLl9yZXBsYWNlKHByaWNlPW5ld3ByaWNlc1twYXJ0bnVtXSwgdGltZXN0YW1wPXRpbWUubm93KCkpCiAKLSAgICAgID4+PiBmb3IgcGFydG51bSwgcmVjb3JkIGluIGludmVudG9yeS5pdGVtcygpOgotICAgICAgLi4uICAgICBpbnZlbnRvcnlbcGFydG51bV0gPSByZWNvcmQuX3JlcGxhY2UocHJpY2U9bmV3cHJpY2VzW3BhcnRudW1dLCB0aW1lc3RhbXA9dGltZS5ub3coKSkKKy4uIGF0dHJpYnV0ZTo6IHNvbWVuYW1lZHR1cGxlLl9zb3VyY2UKKworICAgIEEgc3RyaW5nIHdpdGggdGhlIHB1cmUgUHl0aG9uIHNvdXJjZSBjb2RlIHVzZWQgdG8gY3JlYXRlIHRoZSBuYW1lZAorICAgIHR1cGxlIGNsYXNzLiAgVGhlIHNvdXJjZSBtYWtlcyB0aGUgbmFtZWQgdHVwbGUgc2VsZi1kb2N1bWVudGluZy4KKyAgICBJdCBjYW4gYmUgcHJpbnRlZCwgZXhlY3V0ZWQgdXNpbmcgOmZ1bmM6YGV4ZWNgLCBvciBzYXZlZCB0byBhIGZpbGUKKyAgICBhbmQgaW1wb3J0ZWQuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gYXR0cmlidXRlOjogc29tZW5hbWVkdHVwbGUuX2ZpZWxkcwogCi0gICBUdXBsZSBvZiBzdHJpbmdzIGxpc3RpbmcgdGhlIGZpZWxkIG5hbWVzLiAgVXNlZnVsIGZvciBpbnRyb3NwZWN0aW9uCi0gICBhbmQgZm9yIGNyZWF0aW5nIG5ldyBuYW1lZCB0dXBsZSB0eXBlcyBmcm9tIGV4aXN0aW5nIG5hbWVkIHR1cGxlcy4KKyAgICBUdXBsZSBvZiBzdHJpbmdzIGxpc3RpbmcgdGhlIGZpZWxkIG5hbWVzLiAgVXNlZnVsIGZvciBpbnRyb3NwZWN0aW9uCisgICAgYW5kIGZvciBjcmVhdGluZyBuZXcgbmFtZWQgdHVwbGUgdHlwZXMgZnJvbSBleGlzdGluZyBuYW1lZCB0dXBsZXMuCiAKLS4uIGRvY3Rlc3Q6OgorICAgIC4uIGRvY3Rlc3Q6OgogCi0gICAgICA+Pj4gcC5fZmllbGRzICAgICAgICAgICAgIyB2aWV3IHRoZSBmaWVsZCBuYW1lcwotICAgICAgKCd4JywgJ3knKQorICAgICAgICA+Pj4gcC5fZmllbGRzICAgICAgICAgICAgIyB2aWV3IHRoZSBmaWVsZCBuYW1lcworICAgICAgICAoJ3gnLCAneScpCiAKLSAgICAgID4+PiBDb2xvciA9IG5hbWVkdHVwbGUoJ0NvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKLSAgICAgID4+PiBQaXhlbCA9IG5hbWVkdHVwbGUoJ1BpeGVsJywgUG9pbnQuX2ZpZWxkcyArIENvbG9yLl9maWVsZHMpCi0gICAgICA+Pj4gUGl4ZWwoMTEsIDIyLCAxMjgsIDI1NSwgMCkKLSAgICAgIFBpeGVsKHg9MTEsIHk9MjIsIHJlZD0xMjgsIGdyZWVuPTI1NSwgYmx1ZT0wKQorICAgICAgICA+Pj4gQ29sb3IgPSBuYW1lZHR1cGxlKCdDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCisgICAgICAgID4+PiBQaXhlbCA9IG5hbWVkdHVwbGUoJ1BpeGVsJywgUG9pbnQuX2ZpZWxkcyArIENvbG9yLl9maWVsZHMpCisgICAgICAgID4+PiBQaXhlbCgxMSwgMjIsIDEyOCwgMjU1LCAwKQorICAgICAgICBQaXhlbCh4PTExLCB5PTIyLCByZWQ9MTI4LCBncmVlbj0yNTUsIGJsdWU9MCkKIAogVG8gcmV0cmlldmUgYSBmaWVsZCB3aG9zZSBuYW1lIGlzIHN0b3JlZCBpbiBhIHN0cmluZywgdXNlIHRoZSA6ZnVuYzpgZ2V0YXR0cmAKIGZ1bmN0aW9uOgpAQCAtNzM1LDMxICs4NjksMzAgQEAKIFRvIGNvbnZlcnQgYSBkaWN0aW9uYXJ5IHRvIGEgbmFtZWQgdHVwbGUsIHVzZSB0aGUgZG91YmxlLXN0YXItb3BlcmF0b3IKIChhcyBkZXNjcmliZWQgaW4gOnJlZjpgdHV0LXVucGFja2luZy1hcmd1bWVudHNgKToKIAotICAgPj4+IGQgPSB7J3gnOiAxMSwgJ3knOiAyMn0KLSAgID4+PiBQb2ludCgqKmQpCi0gICBQb2ludCh4PTExLCB5PTIyKQorICAgID4+PiBkID0geyd4JzogMTEsICd5JzogMjJ9CisgICAgPj4+IFBvaW50KCoqZCkKKyAgICBQb2ludCh4PTExLCB5PTIyKQogCiBTaW5jZSBhIG5hbWVkIHR1cGxlIGlzIGEgcmVndWxhciBQeXRob24gY2xhc3MsIGl0IGlzIGVhc3kgdG8gYWRkIG9yIGNoYW5nZQogZnVuY3Rpb25hbGl0eSB3aXRoIGEgc3ViY2xhc3MuICBIZXJlIGlzIGhvdyB0byBhZGQgYSBjYWxjdWxhdGVkIGZpZWxkIGFuZAogYSBmaXhlZC13aWR0aCBwcmludCBmb3JtYXQ6CiAKICAgICA+Pj4gY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgICAgIEBwcm9wZXJ0eQotICAgICAgICAgICAgZGVmIGh5cG90KHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCisgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgaHlwb3Qoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQorICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKIAogICAgID4+PiBmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNyk6Ci0gICAgICAgICAgICBwcmludChwKQorICAgICAgICBwcmludChwKQogICAgIFBvaW50OiB4PSAzLjAwMCAgeT0gNC4wMDAgIGh5cG90PSA1LjAwMAogICAgIFBvaW50OiB4PTE0LjAwMCAgeT0gMC43MTQgIGh5cG90PTE0LjAxOAogCiBUaGUgc3ViY2xhc3Mgc2hvd24gYWJvdmUgc2V0cyBgYF9fc2xvdHNfX2BgIHRvIGFuIGVtcHR5IHR1cGxlLiAgVGhpcyBoZWxwcwoga2VlcCBtZW1vcnkgcmVxdWlyZW1lbnRzIGxvdyBieSBwcmV2ZW50aW5nIHRoZSBjcmVhdGlvbiBvZiBpbnN0YW5jZSBkaWN0aW9uYXJpZXMuCiAKLQogU3ViY2xhc3NpbmcgaXMgbm90IHVzZWZ1bCBmb3IgYWRkaW5nIG5ldywgc3RvcmVkIGZpZWxkcy4gIEluc3RlYWQsIHNpbXBseQogY3JlYXRlIGEgbmV3IG5hbWVkIHR1cGxlIHR5cGUgZnJvbSB0aGUgOmF0dHI6YF9maWVsZHNgIGF0dHJpYnV0ZToKIApAQCAtNzcxLDYgKzkwNCw3IEBACiAgICAgPj4+IEFjY291bnQgPSBuYW1lZHR1cGxlKCdBY2NvdW50JywgJ293bmVyIGJhbGFuY2UgdHJhbnNhY3Rpb25fY291bnQnKQogICAgID4+PiBkZWZhdWx0X2FjY291bnQgPSBBY2NvdW50KCc8b3duZXIgbmFtZT4nLCAwLjAsIDApCiAgICAgPj4+IGpvaG5zX2FjY291bnQgPSBkZWZhdWx0X2FjY291bnQuX3JlcGxhY2Uob3duZXI9J0pvaG4nKQorICAgID4+PiBqYW5lc19hY2NvdW50ID0gZGVmYXVsdF9hY2NvdW50Ll9yZXBsYWNlKG93bmVyPSdKYW5lJykKIAogRW51bWVyYXRlZCBjb25zdGFudHMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGggbmFtZWQgdHVwbGVzLCBidXQgaXQgaXMgc2ltcGxlcgogYW5kIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBhIHNpbXBsZSBjbGFzcyBkZWNsYXJhdGlvbjoKQEAgLTc3OSwxOSArOTEzLDE5IEBACiAgICAgPj4+IFN0YXR1cy5vcGVuLCBTdGF0dXMucGVuZGluZywgU3RhdHVzLmNsb3NlZAogICAgICgwLCAxLCAyKQogICAgID4+PiBjbGFzcyBTdGF0dXM6Ci0gICAgICAgICAgICBvcGVuLCBwZW5kaW5nLCBjbG9zZWQgPSByYW5nZSgzKQorICAgICAgICBvcGVuLCBwZW5kaW5nLCBjbG9zZWQgPSByYW5nZSgzKQogCiAuLiBzZWVhbHNvOjoKIAotICAgKiBgTmFtZWQgdHVwbGUgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81MDAyNjEvPmBfCi0gICAgIGFkYXB0ZWQgZm9yIFB5dGhvbiAyLjQuCisgICAgKiBgTmFtZWQgdHVwbGUgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81MDAyNjEvPmBfCisgICAgICBhZGFwdGVkIGZvciBQeXRob24gMi40LgogCi0gICAqIGBSZWNpcGUgZm9yIG5hbWVkIHR1cGxlIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcyBtaXgtaW4KLSAgICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzYyOS1uYW1lZHR1cGxlYWJjLWFic3RyYWN0LWJhc2UtY2xhc3MtbWl4LWluLWZvci1uYW1lZC8+YF8KLSAgICAgYnkgSmFuIEthbGlzemV3c2tpLiAgQmVzaWRlcyBwcm92aWRpbmcgYW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvcgotICAgICBuYW1lZCB0dXBsZXMsIGl0IGFsc28gc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIDp0ZXJtOmBtZXRhY2xhc3NgLWJhc2VkCi0gICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKLSAgICAgc3ViY2xhc3NlZC4KKyAgICAqIGBSZWNpcGUgZm9yIG5hbWVkIHR1cGxlIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcyBtaXgtaW4KKyAgICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc2MjktbmFtZWR0dXBsZWFiYy1hYnN0cmFjdC1iYXNlLWNsYXNzLW1peC1pbi1mb3ItbmFtZWQvPmBfCisgICAgICBieSBKYW4gS2FsaXN6ZXdza2kuICBCZXNpZGVzIHByb3ZpZGluZyBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yCisgICAgICBuYW1lZCB0dXBsZXMsIGl0IGFsc28gc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIDp0ZXJtOmBtZXRhY2xhc3NgLWJhc2VkCisgICAgICBjb25zdHJ1Y3RvciB0aGF0IGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBuYW1lZCB0dXBsZXMgYXJlIGJlaW5nCisgICAgICBzdWJjbGFzc2VkLgogCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIG9iamVjdHMKQEAgLTgwMywzNiArOTM3LDM2IEBACiAKIC4uIGNsYXNzOjogT3JkZXJlZERpY3QoW2l0ZW1zXSkKIAotICAgUmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgZGljdCBzdWJjbGFzcywgc3VwcG9ydGluZyB0aGUgdXN1YWwgOmNsYXNzOmBkaWN0YAotICAgbWV0aG9kcy4gIEFuICpPcmRlcmVkRGljdCogaXMgYSBkaWN0IHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciB0aGF0IGtleXMKLSAgIHdlcmUgZmlyc3QgaW5zZXJ0ZWQuIElmIGEgbmV3IGVudHJ5IG92ZXJ3cml0ZXMgYW4gZXhpc3RpbmcgZW50cnksIHRoZQotICAgb3JpZ2luYWwgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIGxlZnQgdW5jaGFuZ2VkLiAgRGVsZXRpbmcgYW4gZW50cnkgYW5kCi0gICByZWluc2VydGluZyBpdCB3aWxsIG1vdmUgaXQgdG8gdGhlIGVuZC4KKyAgICBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBkaWN0IHN1YmNsYXNzLCBzdXBwb3J0aW5nIHRoZSB1c3VhbCA6Y2xhc3M6YGRpY3RgCisgICAgbWV0aG9kcy4gIEFuICpPcmRlcmVkRGljdCogaXMgYSBkaWN0IHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciB0aGF0IGtleXMKKyAgICB3ZXJlIGZpcnN0IGluc2VydGVkLiBJZiBhIG5ldyBlbnRyeSBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGVudHJ5LCB0aGUKKyAgICBvcmlnaW5hbCBpbnNlcnRpb24gcG9zaXRpb24gaXMgbGVmdCB1bmNoYW5nZWQuICBEZWxldGluZyBhbiBlbnRyeSBhbmQKKyAgICByZWluc2VydGluZyBpdCB3aWxsIG1vdmUgaXQgdG8gdGhlIGVuZC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKLSAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQorICAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQogCi0gICAgICBUaGUgOm1ldGg6YHBvcGl0ZW1gIG1ldGhvZCBmb3Igb3JkZXJlZCBkaWN0aW9uYXJpZXMgcmV0dXJucyBhbmQgcmVtb3ZlcyBhCi0gICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KKyAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQorICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgogCi0gICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKKyAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIAotICAgICAgTW92ZSBhbiBleGlzdGluZyAqa2V5KiB0byBlaXRoZXIgZW5kIG9mIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBpdGVtCi0gICAgICBpcyBtb3ZlZCB0byB0aGUgcmlnaHQgZW5kIGlmICpsYXN0KiBpcyB0cnVlICh0aGUgZGVmYXVsdCkgb3IgdG8gdGhlCi0gICAgICBiZWdpbm5pbmcgaWYgKmxhc3QqIGlzIGZhbHNlLiAgUmFpc2VzIDpleGM6YEtleUVycm9yYCBpZiB0aGUgKmtleSogZG9lcwotICAgICAgbm90IGV4aXN0OjoKKyAgICAgICAgTW92ZSBhbiBleGlzdGluZyAqa2V5KiB0byBlaXRoZXIgZW5kIG9mIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBpdGVtCisgICAgICAgIGlzIG1vdmVkIHRvIHRoZSByaWdodCBlbmQgaWYgKmxhc3QqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSBvciB0byB0aGUKKyAgICAgICAgYmVnaW5uaW5nIGlmICpsYXN0KiBpcyBmYWxzZS4gIFJhaXNlcyA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlICprZXkqIGRvZXMKKyAgICAgICAgbm90IGV4aXN0OjoKIAotICAgICAgICAgID4+PiBkID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKLSAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicpCi0gICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCi0gICAgICAgICAgJ2FjZGViJwotICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKLSAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKLSAgICAgICAgICAnYmFjZGUnCisgICAgICAgICAgICA+Pj4gZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCisgICAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicpCisgICAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKKyAgICAgICAgICAgICdhY2RlYicKKyAgICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKKyAgICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQorICAgICAgICAgICAgJ2JhY2RlJwogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIEluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBtYXBwaW5nIG1ldGhvZHMsIG9yZGVyZWQgZGljdGlvbmFyaWVzIGFsc28gc3VwcG9ydAogcmV2ZXJzZSBpdGVyYXRpb24gdXNpbmcgOmZ1bmM6YHJldmVyc2VkYC4KQEAgLTg1MCw4ICs5ODQsOCBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgYEVxdWl2YWxlbnQgT3JkZXJlZERpY3QgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvPmBfCi0gICB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCBvciBsYXRlci4KKyAgICBgRXF1aXZhbGVudCBPcmRlcmVkRGljdCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5My8+YF8KKyAgICB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCBvciBsYXRlci4KIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgRXhhbXBsZXMgYW5kIFJlY2lwZXMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC04OTQsNyArMTAyOCw3IEBACiBBbiBvcmRlcmVkIGRpY3Rpb25hcnkgY2FuIGJlIGNvbWJpbmVkIHdpdGggdGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MKIHNvIHRoYXQgdGhlIGNvdW50ZXIgcmVtZW1iZXJzIHRoZSBvcmRlciBlbGVtZW50cyBhcmUgZmlyc3QgZW5jb3VudGVyZWQ6OgogCi0gICBjbGFzcyBPcmRlcmVkQ291bnRlcihDb3VudGVyLCBPcmRlcmVkRGljdCk6CisgICAgY2xhc3MgT3JkZXJlZENvdW50ZXIoQ291bnRlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAnQ291bnRlciB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgZWxlbWVudHMgYXJlIGZpcnN0IGVuY291bnRlcmVkJwogCiAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTkxNSwxOSArMTA0OSwxOSBAQAogCiAuLiBjbGFzczo6IFVzZXJEaWN0KFtpbml0aWFsZGF0YV0pCiAKLSAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgZGljdGlvbmFyeS4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBrZXB0IGluIGEKLSAgIHJlZ3VsYXIgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YKLSAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcy4gIElmICppbml0aWFsZGF0YSogaXMgcHJvdmlkZWQsIDphdHRyOmBkYXRhYCBpcwotICAgaW5pdGlhbGl6ZWQgd2l0aCBpdHMgY29udGVudHM7IG5vdGUgdGhhdCBhIHJlZmVyZW5jZSB0byAqaW5pdGlhbGRhdGEqIHdpbGwgbm90Ci0gICBiZSBrZXB0LCBhbGxvd2luZyBpdCBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGRpY3Rpb25hcnkuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhCisgICAgcmVndWxhciBkaWN0aW9uYXJ5LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZgorICAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcy4gIElmICppbml0aWFsZGF0YSogaXMgcHJvdmlkZWQsIDphdHRyOmBkYXRhYCBpcworICAgIGluaXRpYWxpemVkIHdpdGggaXRzIGNvbnRlbnRzOyBub3RlIHRoYXQgYSByZWZlcmVuY2UgdG8gKmluaXRpYWxkYXRhKiB3aWxsIG5vdAorICAgIGJlIGtlcHQsIGFsbG93aW5nIGl0IGJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgogCi0gICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG1hcHBpbmdzLAotICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CisgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtYXBwaW5ncywKKyAgICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKIAotICAgLi4gYXR0cmlidXRlOjogZGF0YQorICAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKIAotICAgICAgQSByZWFsIGRpY3Rpb25hcnkgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlIDpjbGFzczpgVXNlckRpY3RgCi0gICAgICBjbGFzcy4KKyAgICAgICAgQSByZWFsIGRpY3Rpb25hcnkgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlIDpjbGFzczpgVXNlckRpY3RgCisgICAgICAgIGNsYXNzLgogCiAKIApAQCAtOTQ1LDE5ICsxMDc5LDE5IEBACiAKIC4uIGNsYXNzOjogVXNlckxpc3QoW2xpc3RdKQogCi0gICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGxpc3QuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhIHJlZ3VsYXIKLSAgIGxpc3QsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlckxpc3RgCi0gICBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKmxpc3QqLAotICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgbGlzdCBgYFtdYGAuICAqbGlzdCogY2FuIGJlIGFueSBpdGVyYWJsZSwgZm9yCi0gICBleGFtcGxlIGEgcmVhbCBQeXRob24gbGlzdCBvciBhIDpjbGFzczpgVXNlckxpc3RgIG9iamVjdC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGxpc3QuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhIHJlZ3VsYXIKKyAgICBsaXN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJMaXN0YAorICAgIGluc3RhbmNlcy4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqbGlzdCosCisgICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgbGlzdCBgYFtdYGAuICAqbGlzdCogY2FuIGJlIGFueSBpdGVyYWJsZSwgZm9yCisgICAgZXhhbXBsZSBhIHJlYWwgUHl0aG9uIGxpc3Qgb3IgYSA6Y2xhc3M6YFVzZXJMaXN0YCBvYmplY3QuCiAKLSAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbXV0YWJsZSBzZXF1ZW5jZXMsCi0gICA6Y2xhc3M6YFVzZXJMaXN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKKyAgICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG11dGFibGUgc2VxdWVuY2VzLAorICAgIDpjbGFzczpgVXNlckxpc3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgogCi0gICAuLiBhdHRyaWJ1dGU6OiBkYXRhCisgICAgLi4gYXR0cmlidXRlOjogZGF0YQogCi0gICAgICBBIHJlYWwgOmNsYXNzOmBsaXN0YCBvYmplY3QgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlCi0gICAgICA6Y2xhc3M6YFVzZXJMaXN0YCBjbGFzcy4KKyAgICAgICAgQSByZWFsIDpjbGFzczpgbGlzdGAgb2JqZWN0IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICA6Y2xhc3M6YFVzZXJMaXN0YCBjbGFzcy4KIAogKipTdWJjbGFzc2luZyByZXF1aXJlbWVudHM6KiogU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YFVzZXJMaXN0YCBhcmUgZXhwZWN0IHRvCiBvZmZlciBhIGNvbnN0cnVjdG9yIHdoaWNoIGNhbiBiZSBjYWxsZWQgd2l0aCBlaXRoZXIgbm8gYXJndW1lbnRzIG9yIG9uZQpAQCAtOTgyLDE2OCArMTExNiwxMCBAQAogCiAuLiBjbGFzczo6IFVzZXJTdHJpbmcoW3NlcXVlbmNlXSkKIAotICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBzdHJpbmcgb3IgYSBVbmljb2RlIHN0cmluZyBvYmplY3QuICBUaGUgaW5zdGFuY2UncwotICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKLSAgIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyU3RyaW5nYCBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncwotICAgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpzZXF1ZW5jZSouICBUaGUgKnNlcXVlbmNlKiBjYW4KLSAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKLSAgIHN1YmNsYXNzKSBvciBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCBpbnRvIGEgc3RyaW5nIHVzaW5nCi0gICB0aGUgYnVpbHQtaW4gOmZ1bmM6YHN0cmAgZnVuY3Rpb24uCi0KLQotLi4gX2NvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3NlczoKLQotQUJDcyAtIGFic3RyYWN0IGJhc2UgY2xhc3NlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgY29sbGVjdGlvbnMgbW9kdWxlIG9mZmVycyB0aGUgZm9sbG93aW5nIDp0ZXJtOmBBQkNzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmA6Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQUJDICAgICAgICAgICAgICAgICAgICAgICAgSW5oZXJpdHMgZnJvbSAgICAgICAgICBBYnN0cmFjdCBNZXRob2RzICAgICAgICBNaXhpbiBNZXRob2RzCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpjbGFzczpgQ29udGFpbmVyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYAotOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKLTpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAotOmNsYXNzOmBDYWxsYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY2FsbF9fYGAKLQotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCi0KLTpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19kZWxpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluc2VydGBgICAgICAgICAgICAgICBgYHJlbW92ZWBgLCBhbmQgYGBfX2lhZGRfX2BgCi0KLTpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCi0KLTpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBhZGRgYCwgICAgICAgICAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYCAgICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faWFuZF9fYGAsIGBgX19peG9yX19gYCwgYW5kIGBgX19pc3ViX19gYAotCi06Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKLQotOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAgICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGBzZXRkZWZhdWx0YGAKLQotCi06Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCi06Y2xhc3M6YEl0ZW1zVmlld2AgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0uLiBjbGFzczo6IENvbnRhaW5lcgotICAgICAgICAgICBIYXNoYWJsZQotICAgICAgICAgICBTaXplZAotICAgICAgICAgICBDYWxsYWJsZQotCi0gICBBQkNzIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSByZXNwZWN0aXZlbHkgdGhlIG1ldGhvZHMgOm1ldGg6YF9fY29udGFpbnNfX2AsCi0gICA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19sZW5fX2AsIGFuZCA6bWV0aDpgX19jYWxsX19gLgotCi0uLiBjbGFzczo6IEl0ZXJhYmxlCi0KLSAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgotICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KLQotLi4gY2xhc3M6OiBJdGVyYXRvcgotCi0gICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIGFuZCA6bWV0aDpgX19uZXh0X19gIG1ldGhvZHMuCi0gICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgotCi0uLiBjbGFzczo6IFNlcXVlbmNlCi0gICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KLQotLi4gY2xhc3M6OiBTZXQKLSAgICAgICAgICAgTXV0YWJsZVNldAotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KLQotLi4gY2xhc3M6OiBNYXBwaW5nCi0gICAgICAgICAgIE11dGFibGVNYXBwaW5nCi0KLSAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KLQotLi4gY2xhc3M6OiBNYXBwaW5nVmlldwotICAgICAgICAgICBJdGVtc1ZpZXcKLSAgICAgICAgICAgS2V5c1ZpZXcKLSAgICAgICAgICAgVmFsdWVzVmlldwotCi0gICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KLQotCi1UaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKLXBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgotCi0gICAgc2l6ZSA9IE5vbmUKLSAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6Ci0gICAgICAgIHNpemUgPSBsZW4obXl2YXIpCi0KLVNldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKLWNsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKLXRoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZwotYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCi1UaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKLTptZXRoOmBpc2Rpc2pvaW50YCA6OgotCi0gICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6Ci0gICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCi0gICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCi0gICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgotICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQotICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKLSAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKLSAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCi0gICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKLSAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgotICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCi0gICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCi0KLSAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKLSAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKLSAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKLQotTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46Ci0KLSgxKQotICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAotICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCi0gICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCi0gICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAotICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KLSAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKLSAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCi0gICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQotICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCi0KLSgyKQotICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCi0gICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCi0gICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KLQotKDMpCi0gICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKLSAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCi0gICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKLSAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQotICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgotCi0uLiBzZWVhbHNvOjoKLQotICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCi0gICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KLQotICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIHN0cmluZyBvciBhIFVuaWNvZGUgc3RyaW5nIG9iamVjdC4gIFRoZSBpbnN0YW5jZSdzCisgICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKKyAgICA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlclN0cmluZ2AgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MKKyAgICBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKnNlcXVlbmNlKi4gIFRoZSAqc2VxdWVuY2UqIGNhbgorICAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKKyAgICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZworICAgIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDJkYWUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVuY3kucnN0CkBAIC0wLDAgKzEsMzIgQEAKKy4uIF9jb25jdXJyZW5jeToKKworKioqKioqKioqKioqKioqKioqKioKK0NvbmN1cnJlbnQgRXhlY3V0aW9uCisqKioqKioqKioqKioqKioqKioqKgorCitUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgc3VwcG9ydCBmb3IgY29uY3VycmVudAorZXhlY3V0aW9uIG9mIGNvZGUuIFRoZSBhcHByb3ByaWF0ZSBjaG9pY2Ugb2YgdG9vbCB3aWxsIGRlcGVuZCBvbiB0aGUKK3Rhc2sgdG8gYmUgZXhlY3V0ZWQgKENQVSBib3VuZCB2cyBJTyBib3VuZCkgYW5kIHByZWZlcnJlZCBzdHlsZSBvZgorZGV2ZWxvcG1lbnQgKGV2ZW50IGRyaXZlbiBjb29wZXJhdGl2ZSBtdWx0aXRhc2tpbmcgdnMgcHJlZW1wdGl2ZQorbXVsdGl0YXNraW5nKSBIZXJlJ3MgYW4gb3ZlcnZpZXc6CisKKworLi4gdG9jdHJlZTo6CisKKyAgIHRocmVhZGluZy5yc3QKKyAgIG11bHRpcHJvY2Vzc2luZy5yc3QKKyAgIGNvbmN1cnJlbnQucnN0CisgICBjb25jdXJyZW50LmZ1dHVyZXMucnN0CisgICBzdWJwcm9jZXNzLnJzdAorICAgc2NoZWQucnN0CisgICBxdWV1ZS5yc3QKKyAgIHNlbGVjdC5yc3QKKworCitUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0IG1vZHVsZXMgZm9yIHNvbWUgb2YgdGhlIGFib3ZlIHNlcnZpY2VzOgorCisuLiB0b2N0cmVlOjoKKworICAgZHVtbXlfdGhyZWFkaW5nLnJzdAorICAgX3RocmVhZC5yc3QKKyAgIF9kdW1teV90aHJlYWQucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCBlZWUyMjg1Li43ZWQ5OWQ1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTEzNiwyMCArMTM2LDIzIEBACiAgICAgICAgICAgICdodHRwOi8vd3d3LmJiYy5jby51ay8nLAogICAgICAgICAgICAnaHR0cDovL3NvbWUtbWFkZS11cC1kb21haW4uY29tLyddCiAKKyAgICMgUmV0cmlldmUgYSBzaW5nbGUgcGFnZSBhbmQgcmVwb3J0IHRoZSB1cmwgYW5kIGNvbnRlbnRzCiAgICBkZWYgbG9hZF91cmwodXJsLCB0aW1lb3V0KToKLSAgICAgICByZXR1cm4gdXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwsIHRpbWVvdXQ9dGltZW91dCkucmVhZCgpCisgICAgICAgY29ubiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4odXJsLCB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgcmV0dXJuIGNvbm4ucmVhZGFsbCgpCiAKKyAgICMgV2UgY2FuIHVzZSBhIHdpdGggc3RhdGVtZW50IHRvIGVuc3VyZSB0aHJlYWRzIGFyZSBjbGVhbmVkIHVwIHByb21wdGx5CiAgICB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkgYXMgZXhlY3V0b3I6Ci0gICAgICAgZnV0dXJlX3RvX3VybCA9IGRpY3QoKGV4ZWN1dG9yLnN1Ym1pdChsb2FkX3VybCwgdXJsLCA2MCksIHVybCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXJsIGluIFVSTFMpCi0KKyAgICAgICAjIFN0YXJ0IHRoZSBsb2FkIG9wZXJhdGlvbnMgYW5kIG1hcmsgZWFjaCBmdXR1cmUgd2l0aCBpdHMgVVJMCisgICAgICAgZnV0dXJlX3RvX3VybCA9IHtleGVjdXRvci5zdWJtaXQobG9hZF91cmwsIHVybCwgNjApOnVybCBmb3IgdXJsIGluIFVSTFN9CiAgICAgICAgZm9yIGZ1dHVyZSBpbiBjb25jdXJyZW50LmZ1dHVyZXMuYXNfY29tcGxldGVkKGZ1dHVyZV90b191cmwpOgogICAgICAgICAgICB1cmwgPSBmdXR1cmVfdG9fdXJsW2Z1dHVyZV0KLSAgICAgICAgICAgaWYgZnV0dXJlLmV4Y2VwdGlvbigpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgcHJpbnQoJyVyIGdlbmVyYXRlZCBhbiBleGNlcHRpb246ICVzJyAlICh1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgIGRhdGEgPSBmdXR1cmUucmVzdWx0KCkKKyAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICBwcmludCgnJXIgZ2VuZXJhdGVkIGFuIGV4Y2VwdGlvbjogJXMnICUgKHVybCwgZXhjKSkKICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihmdXR1cmUucmVzdWx0KCkpKSkKKyAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihkYXRhKSkpCiAKIAogUHJvY2Vzc1Bvb2xFeGVjdXRvcgpAQCAtMTcwLDYgKzE3MywxMiBAQAogICAgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqIHByb2Nlc3Nlcy4gIElmICptYXhfd29ya2VycyogaXMgYGBOb25lYGAgb3Igbm90CiAgICBnaXZlbiwgaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBvbiB0aGUgbWFjaGluZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gb25lIG9mIHRoZSB3b3JrZXIgcHJvY2Vzc2VzIHRlcm1pbmF0ZXMgYWJydXB0bHksIGEKKyAgICAgIDpleGM6YEJyb2tlblByb2Nlc3NQb29sYCBlcnJvciBpcyBub3cgcmFpc2VkLiAgUHJldmlvdXNseSwgYmVoYXZpb3VyCisgICAgICB3YXMgdW5kZWZpbmVkIGJ1dCBvcGVyYXRpb25zIG9uIHRoZSBleGVjdXRvciBvciBpdHMgZnV0dXJlcyB3b3VsZCBvZnRlbgorICAgICAgZnJlZXplIG9yIGRlYWRsb2NrLgorCiAKIC4uIF9wcm9jZXNzcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTM3MSwzICszODAsMTYgQEAKICAgIDpwZXA6YDMxNDhgIC0tIGZ1dHVyZXMgLSBleGVjdXRlIGNvbXB1dGF0aW9ucyBhc3luY2hyb25vdXNseQogICAgICAgVGhlIHByb3Bvc2FsIHdoaWNoIGRlc2NyaWJlZCB0aGlzIGZlYXR1cmUgZm9yIGluY2x1c2lvbiBpbiB0aGUgUHl0aG9uCiAgICAgICBzdGFuZGFyZCBsaWJyYXJ5LgorCisKK0V4Y2VwdGlvbiBjbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiBleGNlcHRpb246OiBCcm9rZW5Qcm9jZXNzUG9vbAorCisgICBEZXJpdmVkIGZyb20gOmV4YzpgUnVudGltZUVycm9yYCwgdGhpcyBleGNlcHRpb24gY2xhc3MgaXMgcmFpc2VkIHdoZW4KKyAgIG9uZSBvZiB0aGUgd29ya2VycyBvZiBhIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaGFzIHRlcm1pbmF0ZWQKKyAgIGluIGEgbm9uLWNsZWFuIGZhc2hpb24gKGZvciBleGFtcGxlLCBpZiBpdCB3YXMga2lsbGVkIGZyb20gdGhlIG91dHNpZGUpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWJhNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QKQEAgLTAsMCArMSw2IEBACitUaGUgOm1vZDpgY29uY3VycmVudGAgcGFja2FnZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ3VycmVudGx5LCB0aGVyZSBpcyBvbmx5IG9uZSBtb2R1bGUgaW4gdGhpcyBwYWNrYWdlOgorCisqIDptb2Q6YGNvbmN1cnJlbnQuZnV0dXJlc2AgLS0gTGF1bmNoaW5nIHBhcmFsbGVsIHRhc2tzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IGU4ZGMxN2YuLjQxZGZkZWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xMiw4ICsxMiwxMSBAQAogc3RhdGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgIGFuZAogOnJlZjpgY29udGV4dC1tYW5hZ2Vyc2AuCiAKLUZ1bmN0aW9ucyBwcm92aWRlZDoKIAorVXRpbGl0aWVzCistLS0tLS0tLS0KKworRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCiAuLiBkZWNvcmF0b3I6OiBjb250ZXh0bWFuYWdlcgogCkBAIC0xNjgsNiArMTcxLDM0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBFeGl0U3RhY2soKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IGlzIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSB0byBwcm9ncmFtbWF0aWNhbGx5CisgICBjb21iaW5lIG90aGVyIGNvbnRleHQgbWFuYWdlcnMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHRob3NlCisgICB0aGF0IGFyZSBvcHRpb25hbCBvciBvdGhlcndpc2UgZHJpdmVuIGJ5IGlucHV0IGRhdGEuCisKKyAgIEZvciBleGFtcGxlLCBhIHNldCBvZiBmaWxlcyBtYXkgZWFzaWx5IGJlIGhhbmRsZWQgaW4gYSBzaW5nbGUgd2l0aAorICAgc3RhdGVtZW50IGFzIGZvbGxvd3M6OgorCisgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAjIGluIHRoZSBsaXN0IHJhaXNlIGFuIGV4Y2VwdGlvbgorCisgICBFYWNoIGluc3RhbmNlIG1haW50YWlucyBhIHN0YWNrIG9mIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBpbgorICAgcmV2ZXJzZSBvcmRlciB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgKGVpdGhlciBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkKKyAgIGF0IHRoZSBlbmQgb2YgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4gTm90ZSB0aGF0IGNhbGxiYWNrcyBhcmUgKm5vdCoKKyAgIGludm9rZWQgaW1wbGljaXRseSB3aGVuIHRoZSBjb250ZXh0IHN0YWNrIGluc3RhbmNlIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgorCisgICBUaGlzIHN0YWNrIG1vZGVsIGlzIHVzZWQgc28gdGhhdCBjb250ZXh0IG1hbmFnZXJzIHRoYXQgYWNxdWlyZSB0aGVpcgorICAgcmVzb3VyY2VzIGluIHRoZWlyIGBgX19pbml0X19gYCBtZXRob2QgKHN1Y2ggYXMgZmlsZSBvYmplY3RzKSBjYW4gYmUKKyAgIGhhbmRsZWQgY29ycmVjdGx5LgorCisgICBTaW5jZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBhcmUgaW52b2tlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlciBvZgorICAgcmVnaXN0cmF0aW9uLCB0aGlzIGVuZHMgdXAgYmVoYXZpbmcgYXMgaWYgbXVsdGlwbGUgbmVzdGVkIDprZXl3b3JkOmB3aXRoYAorICAgc3RhdGVtZW50cyBoYWQgYmVlbiB1c2VkIHdpdGggdGhlIHJlZ2lzdGVyZWQgc2V0IG9mIGNhbGxiYWNrcy4gVGhpcyBldmVuCisgICBleHRlbmRzIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyAtIGlmIGFuIGlubmVyIGNhbGxiYWNrIHN1cHByZXNzZXMgb3IgcmVwbGFjZXMKKyAgIGFuIGV4Y2VwdGlvbiwgdGhlbiBvdXRlciBjYWxsYmFja3Mgd2lsbCBiZSBwYXNzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoYXQKKyAgIHVwZGF0ZWQgc3RhdGUuCisKKyAgIFRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdyBsZXZlbCBBUEkgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBkZXRhaWxzIG9mCisgICBjb3JyZWN0bHkgdW53aW5kaW5nIHRoZSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcy4gSXQgcHJvdmlkZXMgYSBzdWl0YWJsZQorICAgZm91bmRhdGlvbiBmb3IgaGlnaGVyIGxldmVsIGNvbnRleHQgbWFuYWdlcnMgdGhhdCBtYW5pcHVsYXRlIHRoZSBleGl0CisgICBzdGFjayBpbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyB3YXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZW50ZXJfY29udGV4dChjbSkKKworICAgICAgRW50ZXJzIGEgbmV3IGNvbnRleHQgbWFuYWdlciBhbmQgYWRkcyBpdHMgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2QgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBjb250ZXh0CisgICAgICBtYW5hZ2VyJ3Mgb3duIDptZXRoOmBfX2VudGVyX19gIG1ldGhvZC4KKworICAgICAgVGhlc2UgY29udGV4dCBtYW5hZ2VycyBtYXkgc3VwcHJlc3MgZXhjZXB0aW9ucyBqdXN0IGFzIHRoZXkgbm9ybWFsbHkKKyAgICAgIHdvdWxkIGlmIHVzZWQgZGlyZWN0bHkgYXMgcGFydCBvZiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHB1c2goZXhpdCkKKworICAgICAgQWRkcyBhIGNvbnRleHQgbWFuYWdlcidzIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kIHRvIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgQXMgYGBfX2VudGVyX19gYCBpcyAqbm90KiBpbnZva2VkLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjb3ZlcgorICAgICAgcGFydCBvZiBhbiA6bWV0aDpgX19lbnRlcl9fYCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgY29udGV4dCBtYW5hZ2VyJ3Mgb3duCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZC4KKworICAgICAgSWYgcGFzc2VkIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhIGNvbnRleHQgbWFuYWdlciwgdGhpcyBtZXRob2QgYXNzdW1lcworICAgICAgaXQgaXMgYSBjYWxsYmFjayB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhIGNvbnRleHQgbWFuYWdlcidzCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZCBhbmQgYWRkcyBpdCBkaXJlY3RseSB0byB0aGUgY2FsbGJhY2sgc3RhY2suCisKKyAgICAgIEJ5IHJldHVybmluZyB0cnVlIHZhbHVlcywgdGhlc2UgY2FsbGJhY2tzIGNhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZQorICAgICAgc2FtZSB3YXkgY29udGV4dCBtYW5hZ2VyIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kcyBjYW4uCisKKyAgICAgIFRoZSBwYXNzZWQgaW4gb2JqZWN0IGlzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uLCBhbGxvd2luZyB0aGlzCisgICAgICBtZXRob2QgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworICAgLi4gbWV0aG9kOjogY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgIEFjY2VwdHMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgYW5kIGFkZHMgaXQgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgVW5saWtlIHRoZSBvdGhlciBtZXRob2RzLCBjYWxsYmFja3MgYWRkZWQgdGhpcyB3YXkgY2Fubm90IHN1cHByZXNzCisgICAgICBleGNlcHRpb25zIChhcyB0aGV5IGFyZSBuZXZlciBwYXNzZWQgdGhlIGV4Y2VwdGlvbiBkZXRhaWxzKS4KKworICAgICAgVGhlIHBhc3NlZCBpbiBjYWxsYmFjayBpcyByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbiwgYWxsb3dpbmcgdGhpcworICAgICAgbWV0aG9kIHRvIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IuCisKKyAgIC4uIG1ldGhvZDo6IHBvcF9hbGwoKQorCisgICAgICBUcmFuc2ZlcnMgdGhlIGNhbGxiYWNrIHN0YWNrIHRvIGEgZnJlc2ggOmNsYXNzOmBFeGl0U3RhY2tgIGluc3RhbmNlCisgICAgICBhbmQgcmV0dXJucyBpdC4gTm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIGJ5IHRoaXMgb3BlcmF0aW9uIC0gaW5zdGVhZCwKKyAgICAgIHRoZXkgd2lsbCBub3cgYmUgaW52b2tlZCB3aGVuIHRoZSBuZXcgc3RhY2sgaXMgY2xvc2VkIChlaXRoZXIKKyAgICAgIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBhdCB0aGUgZW5kIG9mIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCkuCisKKyAgICAgIEZvciBleGFtcGxlLCBhIGdyb3VwIG9mIGZpbGVzIGNhbiBiZSBvcGVuZWQgYXMgYW4gImFsbCBvciBub3RoaW5nIgorICAgICAgb3BlcmF0aW9uIGFzIGZvbGxvd3M6OgorCisgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAgY2xvc2VfZmlsZXMgPSBzdGFjay5wb3BfYWxsKCkuY2xvc2UKKyAgICAgICAgICAgICAjIElmIG9wZW5pbmcgYW55IGZpbGUgZmFpbHMsIGFsbCBwcmV2aW91c2x5IG9wZW5lZCBmaWxlcyB3aWxsIGJlCisgICAgICAgICAgICAgIyBjbG9zZWQgYXV0b21hdGljYWxseS4gSWYgYWxsIGZpbGVzIGFyZSBvcGVuZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICMgdGhleSB3aWxsIHJlbWFpbiBvcGVuIGV2ZW4gYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50IGVuZHMuCisgICAgICAgICAgICAgIyBjbG9zZV9maWxlcygpIGNhbiB0aGVuIGJlIGludm9rZWQgZXhwbGljaXRseSB0byBjbG9zZSB0aGVtIGFsbAorCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIEltbWVkaWF0ZWx5IHVud2luZHMgdGhlIGNhbGxiYWNrIHN0YWNrLCBpbnZva2luZyBjYWxsYmFja3MgaW4gdGhlCisgICAgICByZXZlcnNlIG9yZGVyIG9mIHJlZ2lzdHJhdGlvbi4gRm9yIGFueSBjb250ZXh0IG1hbmFnZXJzIGFuZCBleGl0CisgICAgICBjYWxsYmFja3MgcmVnaXN0ZXJlZCwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgaW4gd2lsbCBpbmRpY2F0ZSB0aGF0IG5vCisgICAgICBleGNlcHRpb24gb2NjdXJyZWQuCisKKworRXhhbXBsZXMgYW5kIFJlY2lwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSBleGFtcGxlcyBhbmQgcmVjaXBlcyBmb3IgbWFraW5nIGVmZmVjdGl2ZSB1c2Ugb2YKK3RoZSB0b29scyBwcm92aWRlZCBieSA6bW9kOmBjb250ZXh0bGliYC4KKworCitTdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3IgOmNsYXNzOmBFeGl0U3RhY2tgIGlzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlIGNsYXNzCitkb2N1bWVudGF0aW9uOiBzdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgYW5kIG90aGVyCitjbGVhbnVwIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlIHZhcmlhYmlsaXR5CittYXkgY29tZSBmcm9tIHRoZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBuZWVkZWQgYmVpbmcgZHJpdmVuIGJ5IHVzZXIKK2lucHV0IChzdWNoIGFzIG9wZW5pbmcgYSB1c2VyIHNwZWNpZmllZCBjb2xsZWN0aW9uIG9mIGZpbGVzKSwgb3IgZnJvbQorc29tZSBvZiB0aGUgY29udGV4dCBtYW5hZ2VycyBiZWluZyBvcHRpb25hbDo6CisKKyAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gcmVzb3VyY2VzOgorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChyZXNvdXJjZSkKKyAgICAgICAgaWYgbmVlZF9zcGVjaWFsIHJlc291cmNlOgorICAgICAgICAgICAgc3BlY2lhbCA9IGFjcXVpcmVfc3BlY2lhbF9yZXNvdXJjZSgpCisgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyZWxlYXNlX3NwZWNpYWxfcmVzb3VyY2UsIHNwZWNpYWwpCisgICAgICAgICMgUGVyZm9ybSBvcGVyYXRpb25zIHRoYXQgdXNlIHRoZSBhY3F1aXJlZCByZXNvdXJjZXMKKworQXMgc2hvd24sIDpjbGFzczpgRXhpdFN0YWNrYCBhbHNvIG1ha2VzIGl0IHF1aXRlIGVhc3kgdG8gdXNlIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50cyB0byBtYW5hZ2UgYXJiaXRyYXJ5IHJlc291cmNlcyB0aGF0IGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgdGhlCitjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisKKworU2ltcGxpZnlpbmcgc3VwcG9ydCBmb3Igc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGEgc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlciwgOmNsYXNzOmBFeGl0U3RhY2tgCitpbnN0YW5jZXMgY2FuIGJlIHVzZWQgYXMgYSAiZG8gbm90aGluZyIgY29udGV4dCBtYW5hZ2VyLCBhbGxvd2luZyBhIGNvbnRleHQKK21hbmFnZXIgdG8gZWFzaWx5IGJlIG9taXR0ZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mCit0aGUgc291cmNlIGNvZGU6OgorCisgICBkZWYgZGVidWdfdHJhY2UoZGV0YWlscyk6CisgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICByZXR1cm4gVHJhY2VDb250ZXh0KGRldGFpbHMpCisgICAgICAgIyBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIHdpdGggdGhlIGNvbnRleHQgaW4gcmVsZWFzZSBtb2RlCisgICAgICAgcmV0dXJuIEV4aXRTdGFjaygpCisKKyAgIHdpdGggZGVidWdfdHJhY2UoKToKKyAgICAgICAjIFN1aXRlIGlzIHRyYWNlZCBpbiBkZWJ1ZyBtb2RlLCBidXQgcnVucyBub3JtYWxseSBvdGhlcndpc2UKKworCitDYXRjaGluZyBleGNlcHRpb25zIGZyb20gYGBfX2VudGVyX19gYCBtZXRob2RzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0l0IGlzIG9jY2FzaW9uYWxseSBkZXNpcmFibGUgdG8gY2F0Y2ggZXhjZXB0aW9ucyBmcm9tIGFuIGBgX19lbnRlcl9fYGAKK21ldGhvZCBpbXBsZW1lbnRhdGlvbiwgKndpdGhvdXQqIGluYWR2ZXJ0ZW50bHkgY2F0Y2hpbmcgZXhjZXB0aW9ucyBmcm9tCit0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IG9yIHRoZSBjb250ZXh0IG1hbmFnZXIncyBgYF9fZXhpdF9fYGAKK21ldGhvZC4gQnkgdXNpbmcgOmNsYXNzOmBFeGl0U3RhY2tgIHRoZSBzdGVwcyBpbiB0aGUgY29udGV4dCBtYW5hZ2VtZW50Citwcm90b2NvbCBjYW4gYmUgc2VwYXJhdGVkIHNsaWdodGx5IGluIG9yZGVyIHRvIGFsbG93IHRoaXM6OgorCisgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICB0cnk6CisgICAgICAgeCA9IHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICMgaGFuZGxlIF9fZW50ZXJfXyBleGNlcHRpb24KKyAgIGVsc2U6CisgICAgICAgd2l0aCBzdGFjazoKKyAgICAgICAgICAgIyBIYW5kbGUgbm9ybWFsIGNhc2UKKworQWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGlzIGlzIGxpa2VseSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1bmRlcmx5aW5nIEFQSQorc2hvdWxkIGJlIHByb3ZpZGluZyBhIGRpcmVjdCByZXNvdXJjZSBtYW5hZ2VtZW50IGludGVyZmFjZSBmb3IgdXNlIHdpdGgKKzprZXl3b3JkOmB0cnlgLzprZXl3b3JkOmBleGNlcHRgLzprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnRzLCBidXQgbm90CithbGwgQVBJcyBhcmUgd2VsbCBkZXNpZ25lZCBpbiB0aGF0IHJlZ2FyZC4gV2hlbiBhIGNvbnRleHQgbWFuYWdlciBpcyB0aGUKK29ubHkgcmVzb3VyY2UgbWFuYWdlbWVudCBBUEkgcHJvdmlkZWQsIHRoZW4gOmNsYXNzOmBFeGl0U3RhY2tgIGNhbiBtYWtlIGl0CitlYXNpZXIgdG8gaGFuZGxlIHZhcmlvdXMgc2l0dWF0aW9ucyB0aGF0IGNhbid0IGJlIGhhbmRsZWQgZGlyZWN0bHkgaW4gYQorOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKworCitDbGVhbmluZyB1cCBpbiBhbiBgYF9fZW50ZXJfX2BgIGltcGxlbWVudGF0aW9uCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIG5vdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIDptZXRoOmBFeGl0U3RhY2sucHVzaGAsIHRoaXMKK21ldGhvZCBjYW4gYmUgdXNlZnVsIGluIGNsZWFuaW5nIHVwIGFuIGFscmVhZHkgYWxsb2NhdGVkIHJlc291cmNlIGlmIGxhdGVyCitzdGVwcyBpbiB0aGUgOm1ldGg6YF9fZW50ZXJfX2AgaW1wbGVtZW50YXRpb24gZmFpbC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgZG9pbmcgdGhpcyBmb3IgYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBhY2NlcHRzIHJlc291cmNlCithY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKK2FuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworCisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIob2JqZWN0KToKKworICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3F1aXJlX3Jlc291cmNlLCByZWxlYXNlX3Jlc291cmNlLCBjaGVja19yZXNvdXJjZV9vaz1Ob25lKToKKyAgICAgICAgICAgc2VsZi5hY3F1aXJlX3Jlc291cmNlID0gYWNxdWlyZV9yZXNvdXJjZQorICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UgPSByZWxlYXNlX3Jlc291cmNlCisgICAgICAgICAgIGlmIGNoZWNrX3Jlc291cmNlX29rIGlzIE5vbmU6CisgICAgICAgICAgICAgICBkZWYgY2hlY2tfcmVzb3VyY2Vfb2socmVzb3VyY2UpOgorICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgIHNlbGYuY2hlY2tfcmVzb3VyY2Vfb2sgPSBjaGVja19yZXNvdXJjZV9vaworCisgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgZGVmIF9jbGVhbnVwX29uX2Vycm9yKHNlbGYpOgorICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgc3RhY2sucHVzaChzZWxmKQorICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICMgVGhlIHZhbGlkYXRpb24gY2hlY2sgcGFzc2VkIGFuZCBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAjIEFjY29yZGluZ2x5LCB3ZSB3YW50IHRvIGtlZXAgdGhlIHJlc291cmNlLCBhbmQgcGFzcyBpdAorICAgICAgICAgICAgICAgIyBiYWNrIHRvIG91ciBjYWxsZXIKKyAgICAgICAgICAgICAgIHN0YWNrLnBvcF9hbGwoKQorCisgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgcmVzb3VyY2UgPSBzZWxmLmFjcXVpcmVfcmVzb3VyY2UoKQorICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfb25fZXJyb3IoKToKKyAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrX3Jlc291cmNlX29rKHJlc291cmNlKToKKyAgICAgICAgICAgICAgICAgICBtc2cgPSAiRmFpbGVkIHZhbGlkYXRpb24gZm9yIHshcn0iCisgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZy5mb3JtYXQocmVzb3VyY2UpKQorICAgICAgICAgICByZXR1cm4gcmVzb3VyY2UKKworICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGFueSBvZiBvdXIgcmVzb3VyY2UgcmVsZWFzZSBsb2dpYworICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UoKQorCisKK1JlcGxhY2luZyBhbnkgdXNlIG9mIGBgdHJ5LWZpbmFsbHlgYCBhbmQgZmxhZyB2YXJpYWJsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQSBwYXR0ZXJuIHlvdSB3aWxsIHNvbWV0aW1lcyBzZWUgaXMgYSBgYHRyeS1maW5hbGx5YGAgc3RhdGVtZW50IHdpdGggYSBmbGFnCit2YXJpYWJsZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgYm9keSBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHNob3VsZAorYmUgZXhlY3V0ZWQuIEluIGl0cyBzaW1wbGVzdCBmb3JtICh0aGF0IGNhbid0IGFscmVhZHkgYmUgaGFuZGxlZCBqdXN0IGJ5Cit1c2luZyBhbiBgYGV4Y2VwdGBgIGNsYXVzZSBpbnN0ZWFkKSwgaXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczo6CisKKyAgIGNsZWFudXBfbmVlZGVkID0gVHJ1ZQorICAgdHJ5OgorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIGNsZWFudXBfbmVlZGVkID0gRmFsc2UKKyAgIGZpbmFsbHk6CisgICAgICAgaWYgY2xlYW51cF9uZWVkZWQ6CisgICAgICAgICAgIGNsZWFudXBfcmVzb3VyY2VzKCkKKworQXMgd2l0aCBhbnkgYGB0cnlgYCBzdGF0ZW1lbnQgYmFzZWQgY29kZSwgdGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yCitkZXZlbG9wbWVudCBhbmQgcmV2aWV3LCBiZWNhdXNlIHRoZSBzZXR1cCBjb2RlIGFuZCB0aGUgY2xlYW51cCBjb2RlIGNhbiBlbmQKK3VwIGJlaW5nIHNlcGFyYXRlZCBieSBhcmJpdHJhcmlseSBsb25nIHNlY3Rpb25zIG9mIGNvZGUuCisKKzpjbGFzczpgRXhpdFN0YWNrYCBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbnN0ZWFkIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yCitleGVjdXRpb24gYXQgdGhlIGVuZCBvZiBhIGBgd2l0aGBgIHN0YXRlbWVudCwgYW5kIHRoZW4gbGF0ZXIgZGVjaWRlIHRvIHNraXAKK2V4ZWN1dGluZyB0aGF0IGNhbGxiYWNrOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBzdGFjay5jYWxsYmFjayhjbGVhbnVwX3Jlc291cmNlcykKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBzdGFjay5wb3BfYWxsKCkKKworVGhpcyBhbGxvd3MgdGhlIGludGVuZGVkIGNsZWFudXAgdXAgYmVoYXZpb3VyIHRvIGJlIG1hZGUgZXhwbGljaXQgdXAgZnJvbnQsCityYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSBmbGFnIHZhcmlhYmxlLgorCitJZiBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gdXNlcyB0aGlzIHBhdHRlcm4gYSBsb3QsIGl0IGNhbiBiZSBzaW1wbGlmaWVkCitldmVuIGZ1cnRoZXIgYnkgbWVhbnMgb2YgYSBzbWFsbCBoZWxwZXIgY2xhc3M6OgorCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRTdGFjaworCisgICBjbGFzcyBDYWxsYmFjayhFeGl0U3RhY2spOgorICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgIHN1cGVyKENhbGxiYWNrLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgICAgIHNlbGYuY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICAgICBzZWxmLnBvcF9hbGwoKQorCisgICB3aXRoIENhbGxiYWNrKGNsZWFudXBfcmVzb3VyY2VzKSBhcyBjYjoKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBjYi5jYW5jZWwoKQorCitJZiB0aGUgcmVzb3VyY2UgY2xlYW51cCBpc24ndCBhbHJlYWR5IG5lYXRseSBidW5kbGVkIGludG8gYSBzdGFuZGFsb25lCitmdW5jdGlvbiwgdGhlbiBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byB1c2UgdGhlIGRlY29yYXRvciBmb3JtIG9mCis6bWV0aDpgRXhpdFN0YWNrLmNhbGxiYWNrYCB0byBkZWNsYXJlIHRoZSByZXNvdXJjZSBjbGVhbnVwIGluCithZHZhbmNlOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICBkZWYgY2xlYW51cF9yZXNvdXJjZXMoKToKKyAgICAgICAgICAgLi4uCisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgc3RhY2sucG9wX2FsbCgpCisKK0R1ZSB0byB0aGUgd2F5IHRoZSBkZWNvcmF0b3IgcHJvdG9jb2wgd29ya3MsIGEgY2FsbGJhY2sgZnVuY3Rpb24KK2RlY2xhcmVkIHRoaXMgd2F5IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXJzLiBJbnN0ZWFkLCBhbnkgcmVzb3VyY2VzIHRvCitiZSByZWxlYXNlZCBtdXN0IGJlIGFjY2Vzc2VkIGFzIGNsb3N1cmUgdmFyaWFibGVzCisKKworVXNpbmcgYSBjb250ZXh0IG1hbmFnZXIgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgQ29udGV4dERlY29yYXRvcmAgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGEgY29udGV4dCBtYW5hZ2VyIGluCitib3RoIGFuIG9yZGluYXJ5IGBgd2l0aGBgIHN0YXRlbWVudCBhbmQgYWxzbyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworRm9yIGV4YW1wbGUsIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gd3JhcCBmdW5jdGlvbnMgb3IgZ3JvdXBzIG9mIHN0YXRlbWVudHMKK3dpdGggYSBsb2dnZXIgdGhhdCBjYW4gdHJhY2sgdGhlIHRpbWUgb2YgZW50cnkgYW5kIHRpbWUgb2YgZXhpdC4gIFJhdGhlciB0aGFuCit3cml0aW5nIGJvdGggYSBmdW5jdGlvbiBkZWNvcmF0b3IgYW5kIGEgY29udGV4dCBtYW5hZ2VyIGZvciB0aGUgdGFzaywKK2luaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YENvbnRleHREZWNvcmF0b3JgIHByb3ZpZGVzIGJvdGggY2FwYWJpbGl0aWVzIGluIGEKK3NpbmdsZSBkZWZpbml0aW9uOjoKKworICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgQ29udGV4dERlY29yYXRvcgorICAgIGltcG9ydCBsb2dnaW5nCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTykKKworICAgIGNsYXNzIHRyYWNrX2VudHJ5X2FuZF9leGl0KENvbnRleHREZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKK0luc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzIGJvdGggYSBjb250ZXh0IG1hbmFnZXI6OgorCisgICAgd2l0aCB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpOgorICAgICAgICBwcmludCgnU29tZSB0aW1lIGNvbnN1bWluZyBhY3Rpdml0eSBnb2VzIGhlcmUnKQorICAgICAgICBsb2FkX3dpZGdldCgpCisKK0FuZCBhbHNvIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yOjoKKworICAgIEB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpCisgICAgZGVmIGFjdGl2aXR5KCk6CisgICAgICAgIHByaW50KCdTb21lIHRpbWUgY29uc3VtaW5nIGFjdGl2aXR5IGdvZXMgaGVyZScpCisgICAgICAgIGxvYWRfd2lkZ2V0KCkKKworTm90ZSB0aGF0IHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsIGxpbWl0YXRpb24gd2hlbiB1c2luZyBjb250ZXh0IG1hbmFnZXJzCithcyBmdW5jdGlvbiBkZWNvcmF0b3JzOiB0aGVyZSdzIG5vIHdheSB0byBhY2Nlc3MgdGhlIHJldHVybiB2YWx1ZSBvZgorOm1ldGg6YF9fZW50ZXJfX2AuIElmIHRoYXQgdmFsdWUgaXMgbmVlZGVkLCB0aGVuIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byB1c2UKK2FuIGV4cGxpY2l0IGBgd2l0aGBgIHN0YXRlbWVudC4KKwogLi4gc2VlYWxzbzo6CiAKICAgIDpwZXA6YDAzNDNgIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0IGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKaW5kZXggZjM3MjFkMS4uNTBkNTg3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKQEAgLTMzLDkgKzMzLDExIEBACiAgICByZXR1cm5lZCBieSAqZnVuY3Rpb24qIGF0IHBpY2tsaW5nIHRpbWUuICA6ZXhjOmBUeXBlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmCiAgICAqb2JqZWN0KiBpcyBhIGNsYXNzIG9yICpjb25zdHJ1Y3RvciogaXMgbm90IGNhbGxhYmxlLgogCi0gICBTZWUgdGhlIDptb2Q6YHBpY2tsZWAgbW9kdWxlIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGludGVyZmFjZSBleHBlY3RlZCBvZgotICAgKmZ1bmN0aW9uKiBhbmQgKmNvbnN0cnVjdG9yKi4KLQorICAgU2VlIHRoZSA6bW9kOmBwaWNrbGVgIG1vZHVsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBpbnRlcmZhY2UKKyAgIGV4cGVjdGVkIG9mICpmdW5jdGlvbiogYW5kICpjb25zdHJ1Y3RvciouICBOb3RlIHRoYXQgdGhlCisgICA6YXR0cjpgfnBpY2tsZS5QaWNrbGVyLmRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUgb2YgYSBwaWNrbGVyCisgICBvYmplY3Qgb3Igc3ViY2xhc3Mgb2YgOmNsYXNzOmBwaWNrbGUuUGlja2xlcmAgY2FuIGFsc28gYmUgdXNlZCBmb3IKKyAgIGRlY2xhcmluZyByZWR1Y3Rpb24gZnVuY3Rpb25zLgogCiBFeGFtcGxlCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKaW5kZXggMGJlNTcxZS4uYjRjOTBjZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdApAQCAtMTUsOSArMTUsOSBAQAogCiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byB0aGUgOm1hbnBhZ2U6YGNyeXB0KDMpYCByb3V0aW5lLCB3aGljaCBpcwogYSBvbmUtd2F5IGhhc2ggZnVuY3Rpb24gYmFzZWQgdXBvbiBhIG1vZGlmaWVkIERFUyBhbGdvcml0aG07IHNlZSB0aGUgVW5peCBtYW4KLXBhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBhbGxvd2luZyBQeXRob24gc2NyaXB0cyB0bwotYWNjZXB0IHR5cGVkIHBhc3N3b3JkcyBmcm9tIHRoZSB1c2VyLCBvciBhdHRlbXB0aW5nIHRvIGNyYWNrIFVuaXggcGFzc3dvcmRzIHdpdGgKLWEgZGljdGlvbmFyeS4KK3BhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBzdG9yaW5nIGhhc2hlZCBwYXNzd29yZHMKK3NvIHlvdSBjYW4gY2hlY2sgcGFzc3dvcmRzIHdpdGhvdXQgc3RvcmluZyB0aGUgYWN0dWFsIHBhc3N3b3JkLCBvciBhdHRlbXB0aW5nCit0byBjcmFjayBVbml4IHBhc3N3b3JkcyB3aXRoIGEgZGljdGlvbmFyeS4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNyeXB0KDMpCiAKQEAgLTI2LDE1ICsyNiw3NCBAQAogZXh0ZW5zaW9ucyBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2lsbCBhbHNvICBiZSBhdmFpbGFibGUgb24KIHRoaXMgbW9kdWxlLgogCitIYXNoaW5nIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQpCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUgZGVmaW5lcyB0aGUgbGlzdCBvZiBoYXNoaW5nIG1ldGhvZHMgKG5vdCBhbGwgbWV0aG9kcworYXJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zKToKKworLi4gZGF0YTo6IE1FVEhPRF9TSEE1MTIKKworICAgQSBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgODYgY2hhcmFjdGVyCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgc3Ryb25nZXN0IG1ldGhvZC4KKworLi4gZGF0YTo6IE1FVEhPRF9TSEEyNTYKKworICAgQW5vdGhlciBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgNDMKKyAgIGNoYXJhY3RlciBoYXNoLgorCisuLiBkYXRhOjogTUVUSE9EX01ENQorCisgICBBbm90aGVyIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG1ldGhvZCB3aXRoIDggY2hhcmFjdGVyIHNhbHQgYW5kIDIyCisgICBjaGFyYWN0ZXIgaGFzaC4KKworLi4gZGF0YTo6IE1FVEhPRF9DUllQVAorCisgICBUaGUgdHJhZGl0aW9uYWwgbWV0aG9kIHdpdGggYSAyIGNoYXJhY3RlciBzYWx0IGFuZCAxMyBjaGFyYWN0ZXJzIG9mCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgd2Vha2VzdCBtZXRob2QuCisKKworTW9kdWxlIEF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBtZXRob2RzCisKKyAgIEEgbGlzdCBvZiBhdmFpbGFibGUgcGFzc3dvcmQgaGFzaGluZyBhbGdvcml0aG1zLCBhcworICAgYGBjcnlwdC5NRVRIT0RfKmBgIG9iamVjdHMuICBUaGlzIGxpc3QgaXMgc29ydGVkIGZyb20gc3Ryb25nZXN0IHRvCisgICB3ZWFrZXN0LCBhbmQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAuCisKKworTW9kdWxlIEZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCisuLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSkKIAogICAgKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXIncyBwYXNzd29yZCBhcyB0eXBlZCBhdCBhIHByb21wdCBvciAgaW4gYSBncmFwaGljYWwKLSAgIGludGVyZmFjZS4gICpzYWx0KiBpcyB1c3VhbGx5IGEgcmFuZG9tIHR3by1jaGFyYWN0ZXIgc3RyaW5nIHdoaWNoIHdpbGwgYmUgdXNlZAotICAgdG8gcGVydHVyYiB0aGUgREVTIGFsZ29yaXRobSBpbiBvbmUgb2YgNDA5NiB3YXlzLiAgVGhlIGNoYXJhY3RlcnMgaW4gKnNhbHQqIG11c3QKLSAgIGJlIGluIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAuICBSZXR1cm5zIHRoZSBoYXNoZWQgcGFzc3dvcmQgYXMgYSBzdHJpbmcsIHdoaWNoCi0gICB3aWxsIGJlIGNvbXBvc2VkIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2FtZSBhbHBoYWJldCBhcyB0aGUgc2FsdCAodGhlIGZpcnN0IHR3bwotICAgY2hhcmFjdGVycyByZXByZXNlbnQgdGhlIHNhbHQgaXRzZWxmKS4KKyAgIGludGVyZmFjZS4gIFRoZSBvcHRpb25hbCAqc2FsdCogaXMgZWl0aGVyIGEgc3RyaW5nIGFzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBta3NhbHRgLCBvbmUgb2YgdGhlIGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgKHRob3VnaCBub3QgYWxsCisgICBtYXkgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMpLCBvciBhIGZ1bGwgZW5jcnlwdGVkIHBhc3N3b3JkCisgICBpbmNsdWRpbmcgc2FsdCwgYXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4gIElmICpzYWx0KiBpcyBub3QKKyAgIHByb3ZpZGVkLCB0aGUgc3Ryb25nZXN0IG1ldGhvZCB3aWxsIGJlIHVzZWQgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgbWV0aG9kc2AuCisKKyAgIENoZWNraW5nIGEgcGFzc3dvcmQgaXMgdXN1YWxseSBkb25lIGJ5IHBhc3NpbmcgdGhlIHBsYWluLXRleHQgcGFzc3dvcmQKKyAgIGFzICp3b3JkKiBhbmQgdGhlIGZ1bGwgcmVzdWx0cyBvZiBhIHByZXZpb3VzIDpmdW5jOmBjcnlwdGAgY2FsbCwKKyAgIHdoaWNoIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcmVzdWx0cyBvZiB0aGlzIGNhbGwuCisKKyAgICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTYgY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aAorICAgYGAkZGlnaXQkYGAgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZCkgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlCisgICBlbmNyeXB0aW9uIGFsZ29yaXRobS4gIFRoZSBjaGFyYWN0ZXJzIGluICpzYWx0KiBtdXN0IGJlIGluIHRoZSBzZXQKKyAgIGBgWy4vYS16QS1aMC05XWBgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgTW9kdWxhciBDcnlwdCBGb3JtYXQgd2hpY2gKKyAgIHByZWZpeGVzIGEgYGAkZGlnaXQkYGAuCisKKyAgIFJldHVybnMgdGhlIGhhc2hlZCBwYXNzd29yZCBhcyBhIHN0cmluZywgd2hpY2ggd2lsbCBiZSBjb21wb3NlZCBvZgorICAgY2hhcmFjdGVycyBmcm9tIHRoZSBzYW1lIGFscGhhYmV0IGFzIHRoZSBzYWx0LgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogY3J5cHQoMykKIApAQCAtNDIsMTggKzEwMSw1MiBAQAogICAgZGlmZmVyZW50IHNpemVzIGluIHRoZSAqc2FsdCosIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAgdGhlIGZ1bGwgY3J5cHRlZAogICAgcGFzc3dvcmQgYXMgc2FsdCB3aGVuIGNoZWNraW5nIGZvciBhIHBhc3N3b3JkLgogCi1BIHNpbXBsZSBleGFtcGxlIGlsbHVzdHJhdGluZyB0eXBpY2FsIHVzZTo6CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWNjZXB0IGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgaW4gYWRkaXRpb24gdG8gc3RyaW5ncyBmb3IgKnNhbHQqLgogCi0gICBpbXBvcnQgY3J5cHQsIGdldHBhc3MsIHB3ZAorCisuLiBmdW5jdGlvbjo6IG1rc2FsdChtZXRob2Q9Tm9uZSkKKworICAgUmV0dXJuIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIHNhbHQgb2YgdGhlIHNwZWNpZmllZCBtZXRob2QuICBJZiBubworICAgKm1ldGhvZCogaXMgZ2l2ZW4sIHRoZSBzdHJvbmdlc3QgbWV0aG9kIGF2YWlsYWJsZSBhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YG1ldGhvZHNgIGlzIHVzZWQuCisKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgZWl0aGVyIG9mIDIgY2hhcmFjdGVycyBpbiBsZW5ndGggZm9yCisgICBgYGNyeXB0Lk1FVEhPRF9DUllQVGBgLCBvciAxOSBjaGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggYGAkZGlnaXQkYGAgYW5kCisgICAxNiByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAsIHN1aXRhYmxlIGZvcgorICAgcGFzc2luZyBhcyB0aGUgKnNhbHQqIGFyZ3VtZW50IHRvIDpmdW5jOmBjcnlwdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCitFeGFtcGxlcworLS0tLS0tLS0KKworQSBzaW1wbGUgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdHlwaWNhbCB1c2UgKGEgY29uc3RhbnQtdGltZSBjb21wYXJpc29uCitvcGVyYXRpb24gaXMgbmVlZGVkIHRvIGxpbWl0IGV4cG9zdXJlIHRvIHRpbWluZyBhdHRhY2tzLgorOmZ1bmM6YGhtYWMuY29tcGFyZV9kaWdlc3RgIGlzIHN1aXRhYmxlIGZvciB0aGlzIHB1cnBvc2UpOjoKKworICAgaW1wb3J0IHB3ZAorICAgaW1wb3J0IGNyeXB0CisgICBpbXBvcnQgZ2V0cGFzcworICAgZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2hhc2gKIAogICAgZGVmIGxvZ2luKCk6Ci0gICAgICAgdXNlcm5hbWUgPSBpbnB1dCgnUHl0aG9uIGxvZ2luOicpCisgICAgICAgdXNlcm5hbWUgPSBpbnB1dCgnUHl0aG9uIGxvZ2luOiAnKQogICAgICAgIGNyeXB0ZWRwYXNzd2QgPSBwd2QuZ2V0cHduYW0odXNlcm5hbWUpWzFdCiAgICAgICAgaWYgY3J5cHRlZHBhc3N3ZDoKICAgICAgICAgICAgaWYgY3J5cHRlZHBhc3N3ZCA9PSAneCcgb3IgY3J5cHRlZHBhc3N3ZCA9PSAnKic6Ci0gICAgICAgICAgICAgICByYWlzZSAiU29ycnksIGN1cnJlbnRseSBubyBzdXBwb3J0IGZvciBzaGFkb3cgcGFzc3dvcmRzIgorICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbm8gc3VwcG9ydCBmb3Igc2hhZG93IHBhc3N3b3JkcycpCiAgICAgICAgICAgIGNsZWFydGV4dCA9IGdldHBhc3MuZ2V0cGFzcygpCi0gICAgICAgICAgIHJldHVybiBjcnlwdC5jcnlwdChjbGVhcnRleHQsIGNyeXB0ZWRwYXNzd2QpID09IGNyeXB0ZWRwYXNzd2QKKyAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVfaGFzaChjcnlwdC5jcnlwdChjbGVhcnRleHQsIGNyeXB0ZWRwYXNzd2QpLCBjcnlwdGVkcGFzc3dkKQogICAgICAgIGVsc2U6Ci0gICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgIHJldHVybiBUcnVlCiAKK1RvIGdlbmVyYXRlIGEgaGFzaCBvZiBhIHBhc3N3b3JkIHVzaW5nIHRoZSBzdHJvbmdlc3QgYXZhaWxhYmxlIG1ldGhvZCBhbmQKK2NoZWNrIGl0IGFnYWluc3QgdGhlIG9yaWdpbmFsOjoKKworICAgaW1wb3J0IGNyeXB0CisgICBmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfaGFzaAorCisgICBoYXNoZWQgPSBjcnlwdC5jcnlwdChwbGFpbnRleHQpCisgICBpZiBub3QgY29tcGFyZV9oYXNoKGhhc2hlZCwgY3J5cHQuY3J5cHQocGxhaW50ZXh0LCBoYXNoZWQpKToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhhc2hlZCB2ZXJzaW9uIGRvZXNuJ3QgdmFsaWRhdGUgYWdhaW5zdCBvcmlnaW5hbCIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAppbmRleCBhMjMzNTYxLi40NjllZGU0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKQEAgLTgsNiArOCw3IEBACiAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaW1wbGVtZW50IHZhcmlvdXMgYWxnb3JpdGhtcyBvZiBhCiBjcnlwdG9ncmFwaGljIG5hdHVyZS4gIFRoZXkgYXJlIGF2YWlsYWJsZSBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgaW5zdGFsbGF0aW9uLgorT24gVW5peCBzeXN0ZW1zLCB0aGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiBIZXJlJ3MgYW4gb3ZlcnZpZXc6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggOTAyNjFlMi4uYTIwYzRiZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC0xMSwxNSArMTEsMTUgQEAKICAgIHBhaXI6IGRhdGE7IHRhYnVsYXIKIAogVGhlIHNvLWNhbGxlZCBDU1YgKENvbW1hIFNlcGFyYXRlZCBWYWx1ZXMpIGZvcm1hdCBpcyB0aGUgbW9zdCBjb21tb24gaW1wb3J0IGFuZAotZXhwb3J0IGZvcm1hdCBmb3Igc3ByZWFkc2hlZXRzIGFuZCBkYXRhYmFzZXMuICBUaGVyZSBpcyBubyAiQ1NWIHN0YW5kYXJkIiwgc28KLXRoZSBmb3JtYXQgaXMgb3BlcmF0aW9uYWxseSBkZWZpbmVkIGJ5IHRoZSBtYW55IGFwcGxpY2F0aW9ucyB3aGljaCByZWFkIGFuZAotd3JpdGUgaXQuICBUaGUgbGFjayBvZiBhIHN0YW5kYXJkIG1lYW5zIHRoYXQgc3VidGxlIGRpZmZlcmVuY2VzIG9mdGVuIGV4aXN0IGluCi10aGUgZGF0YSBwcm9kdWNlZCBhbmQgY29uc3VtZWQgYnkgZGlmZmVyZW50IGFwcGxpY2F0aW9ucy4gIFRoZXNlIGRpZmZlcmVuY2VzIGNhbgotbWFrZSBpdCBhbm5veWluZyB0byBwcm9jZXNzIENTViBmaWxlcyBmcm9tIG11bHRpcGxlIHNvdXJjZXMuICBTdGlsbCwgd2hpbGUgdGhlCi1kZWxpbWl0ZXJzIGFuZCBxdW90aW5nIGNoYXJhY3RlcnMgdmFyeSwgdGhlIG92ZXJhbGwgZm9ybWF0IGlzIHNpbWlsYXIgZW5vdWdoCi10aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGEgc2luZ2xlIG1vZHVsZSB3aGljaCBjYW4gZWZmaWNpZW50bHkgbWFuaXB1bGF0ZQotc3VjaCBkYXRhLCBoaWRpbmcgdGhlIGRldGFpbHMgb2YgcmVhZGluZyBhbmQgd3JpdGluZyB0aGUgZGF0YSBmcm9tIHRoZQotcHJvZ3JhbW1lci4KK2V4cG9ydCBmb3JtYXQgZm9yIHNwcmVhZHNoZWV0cyBhbmQgZGF0YWJhc2VzLiAgQ1NWIGZvcm1hdCB3YXMgdXNlZCBmb3IgbWFueQoreWVhcnMgcHJpb3IgdG8gYXR0ZW1wdHMgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCBpbiBhIHN0YW5kYXJkaXplZCB3YXkgaW4KKzpyZmM6YDQxODBgLiAgVGhlIGxhY2sgb2YgYSB3ZWxsLWRlZmluZWQgc3RhbmRhcmQgbWVhbnMgdGhhdCBzdWJ0bGUgZGlmZmVyZW5jZXMKK29mdGVuIGV4aXN0IGluIHRoZSBkYXRhIHByb2R1Y2VkIGFuZCBjb25zdW1lZCBieSBkaWZmZXJlbnQgYXBwbGljYXRpb25zLiAgVGhlc2UKK2RpZmZlcmVuY2VzIGNhbiBtYWtlIGl0IGFubm95aW5nIHRvIHByb2Nlc3MgQ1NWIGZpbGVzIGZyb20gbXVsdGlwbGUgc291cmNlcy4KK1N0aWxsLCB3aGlsZSB0aGUgZGVsaW1pdGVycyBhbmQgcXVvdGluZyBjaGFyYWN0ZXJzIHZhcnksIHRoZSBvdmVyYWxsIGZvcm1hdCBpcworc2ltaWxhciBlbm91Z2ggdGhhdCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBhIHNpbmdsZSBtb2R1bGUgd2hpY2ggY2FuCitlZmZpY2llbnRseSBtYW5pcHVsYXRlIHN1Y2ggZGF0YSwgaGlkaW5nIHRoZSBkZXRhaWxzIG9mIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGhlCitkYXRhIGZyb20gdGhlIHByb2dyYW1tZXIuCiAKIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSBpbXBsZW1lbnRzIGNsYXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgdGFidWxhciBkYXRhIGluIENTVgogZm9ybWF0LiAgSXQgYWxsb3dzIHByb2dyYW1tZXJzIHRvIHNheSwgIndyaXRlIHRoaXMgZGF0YSBpbiB0aGUgZm9ybWF0IHByZWZlcnJlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKaW5kZXggMzg4N2VlMS4uZTg0ODcyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CkBAIC0zOSw5ICszOSwxNCBAQAogY29udmVudGlvbiwgd2hpbGUgKndpbmRsbCogbGlicmFyaWVzIGNhbGwgZnVuY3Rpb25zIHVzaW5nIHRoZSBgYHN0ZGNhbGxgYAogY2FsbGluZyBjb252ZW50aW9uLiAqb2xlZGxsKiBhbHNvIHVzZXMgdGhlIGBgc3RkY2FsbGBgIGNhbGxpbmcgY29udmVudGlvbiwgYW5kCiBhc3N1bWVzIHRoZSBmdW5jdGlvbnMgcmV0dXJuIGEgV2luZG93cyA6Yzp0eXBlOmBIUkVTVUxUYCBlcnJvciBjb2RlLiBUaGUgZXJyb3IKLWNvZGUgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHJhaXNlIGEgOmNsYXNzOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiB3aGVuIHRoZQorY29kZSBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmFpc2UgYSA6Y2xhc3M6YE9TRXJyb3JgIGV4Y2VwdGlvbiB3aGVuIHRoZQogZnVuY3Rpb24gY2FsbCBmYWlscy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFdpbmRvd3MgZXJyb3JzIHVzZWQgdG8gcmFpc2UgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKworCiBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIGZvciBXaW5kb3dzLiBOb3RlIHRoYXQgYGBtc3ZjcnRgYCBpcyB0aGUgTVMgc3RhbmRhcmQgQwogbGlicmFyeSBjb250YWluaW5nIG1vc3Qgc3RhbmRhcmQgQyBmdW5jdGlvbnMsIGFuZCB1c2VzIHRoZSBjZGVjbCBjYWxsaW5nCiBjb252ZW50aW9uOjoKQEAgLTE4OSw3ICsxOTQsNyBAQAogICAgPj4+IHdpbmRsbC5rZXJuZWwzMi5HZXRNb2R1bGVIYW5kbGVBKDMyKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgIFdpbmRvd3NFcnJvcjogZXhjZXB0aW9uOiBhY2Nlc3MgdmlvbGF0aW9uIHJlYWRpbmcgMHgwMDAwMDAyMAorICAgT1NFcnJvcjogZXhjZXB0aW9uOiBhY2Nlc3MgdmlvbGF0aW9uIHJlYWRpbmcgMHgwMDAwMDAyMAogICAgPj4+CiAKIFRoZXJlIGFyZSwgaG93ZXZlciwgZW5vdWdoIHdheXMgdG8gY3Jhc2ggUHl0aG9uIHdpdGggOm1vZDpgY3R5cGVzYCwgc28geW91CkBAIC00OTYsNyArNTAxLDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAzLCBpbiBWYWxpZEhhbmRsZQotICAgV2luZG93c0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCisgICBPU0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCiAgICA+Pj4KIAogYGBXaW5FcnJvcmBgIGlzIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBjYWxsIFdpbmRvd3MgYGBGb3JtYXRNZXNzYWdlKClgYCBhcGkgdG8KQEAgLTkyNiwyMSArOTMxLDIxIEBACiA6bW9kOmBjdHlwZXNgIGFsbG93cyB0byBjcmVhdGUgQyBjYWxsYWJsZSBmdW5jdGlvbiBwb2ludGVycyBmcm9tIFB5dGhvbiBjYWxsYWJsZXMuCiBUaGVzZSBhcmUgc29tZXRpbWVzIGNhbGxlZCAqY2FsbGJhY2sgZnVuY3Rpb25zKi4KIAotRmlyc3QsIHlvdSBtdXN0IGNyZWF0ZSBhIGNsYXNzIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHRoZSBjbGFzcyBrbm93cyB0aGUKK0ZpcnN0LCB5b3UgbXVzdCBjcmVhdGUgYSBjbGFzcyBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiBUaGUgY2xhc3Mga25vd3MgdGhlCiBjYWxsaW5nIGNvbnZlbnRpb24sIHRoZSByZXR1cm4gdHlwZSwgYW5kIHRoZSBudW1iZXIgYW5kIHR5cGVzIG9mIGFyZ3VtZW50cyB0aGlzCiBmdW5jdGlvbiB3aWxsIHJlY2VpdmUuCiAKLVRoZSBDRlVOQ1RZUEUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlCi1ub3JtYWwgY2RlY2wgY2FsbGluZyBjb252ZW50aW9uLCBhbmQsIG9uIFdpbmRvd3MsIHRoZSBXSU5GVU5DVFlQRSBmYWN0b3J5Ci1mdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlIHN0ZGNhbGwgY2FsbGluZwotY29udmVudGlvbi4KK1RoZSA6ZnVuYzpgQ0ZVTkNUWVBFYCBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucwordXNpbmcgdGhlIGBgY2RlY2xgYCBjYWxsaW5nIGNvbnZlbnRpb24uIE9uIFdpbmRvd3MsIHRoZSA6ZnVuYzpgV0lORlVOQ1RZUEVgCitmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUgYGBzdGRjYWxsYGAKK2NhbGxpbmcgY29udmVudGlvbi4KIAogQm90aCBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCB0eXBlIGFzIGZpcnN0CiBhcmd1bWVudCwgYW5kIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgZXhwZWN0ZWQgYXJndW1lbnQgdHlwZXMgYXMgdGhlIHJlbWFpbmluZwogYXJndW1lbnRzLgogCiBJIHdpbGwgcHJlc2VudCBhbiBleGFtcGxlIGhlcmUgd2hpY2ggdXNlcyB0aGUgc3RhbmRhcmQgQyBsaWJyYXJ5J3MKLTpjOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiwgdGhpcyBpcyB1c2VkIHRvIHNvcnQgaXRlbXMgd2l0aCB0aGUgaGVscCBvZiBhIGNhbGxiYWNrCis6YzpmdW5jOmBxc29ydGAgZnVuY3Rpb24sIHRoYXQgaXMgdXNlZCB0byBzb3J0IGl0ZW1zIHdpdGggdGhlIGhlbHAgb2YgYSBjYWxsYmFjawogZnVuY3Rpb24uICA6YzpmdW5jOmBxc29ydGAgd2lsbCBiZSB1c2VkIHRvIHNvcnQgYW4gYXJyYXkgb2YgaW50ZWdlcnM6OgogCiAgICA+Pj4gSW50QXJyYXk1ID0gY19pbnQgKiA1CkBAIC05NTMsNyArOTU4LDcgQEAKIGl0ZW1zIGluIHRoZSBkYXRhIGFycmF5LCB0aGUgc2l6ZSBvZiBvbmUgaXRlbSwgYW5kIGEgcG9pbnRlciB0byB0aGUgY29tcGFyaXNvbgogZnVuY3Rpb24sIHRoZSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHdpbGwgdGhlbiBiZSBjYWxsZWQgd2l0aCB0d28gcG9pbnRlcnMgdG8KIGl0ZW1zLCBhbmQgaXQgbXVzdCByZXR1cm4gYSBuZWdhdGl2ZSBpbnRlZ2VyIGlmIHRoZSBmaXJzdCBpdGVtIGlzIHNtYWxsZXIgdGhhbgotdGhlIHNlY29uZCwgYSB6ZXJvIGlmIHRoZXkgYXJlIGVxdWFsLCBhbmQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGVsc2UuCit0aGUgc2Vjb25kLCBhIHplcm8gaWYgdGhleSBhcmUgZXF1YWwsIGFuZCBhIHBvc2l0aXZlIGludGVnZXIgb3RoZXJ3aXNlLgogCiBTbyBvdXIgY2FsbGJhY2sgZnVuY3Rpb24gcmVjZWl2ZXMgcG9pbnRlcnMgdG8gaW50ZWdlcnMsIGFuZCBtdXN0IHJldHVybiBhbgogaW50ZWdlci4gRmlyc3Qgd2UgY3JlYXRlIHRoZSBgYHR5cGVgYCBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOjoKQEAgLTk2MSwzNiArOTY2LDggQEAKICAgID4+PiBDTVBGVU5DID0gQ0ZVTkNUWVBFKGNfaW50LCBQT0lOVEVSKGNfaW50KSwgUE9JTlRFUihjX2ludCkpCiAgICA+Pj4KIAotRm9yIHRoZSBmaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHdlIHNpbXBseSBwcmludCB0aGUKLWFyZ3VtZW50cyB3ZSBnZXQsIGFuZCByZXR1cm4gMCAoaW5jcmVtZW50YWwgZGV2ZWxvcG1lbnQgOy0pOjoKLQotICAgPj4+IGRlZiBweV9jbXBfZnVuYyhhLCBiKToKLSAgIC4uLiAgICAgcHJpbnQoInB5X2NtcF9mdW5jIiwgYSwgYikKLSAgIC4uLiAgICAgcmV0dXJuIDAKLSAgIC4uLgotICAgPj4+Ci0KLUNyZWF0ZSB0aGUgQyBjYWxsYWJsZSBjYWxsYmFjazo6Ci0KLSAgID4+PiBjbXBfZnVuYyA9IENNUEZVTkMocHlfY21wX2Z1bmMpCi0gICA+Pj4KLQotQW5kIHdlJ3JlIHJlYWR5IHRvIGdvOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgPj4+Ci0KLVdlIGtub3cgaG93IHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgYSBwb2ludGVyLCBzbyBsZXRzIHJlZGVmaW5lIG91ciBjYWxsYmFjazo6CitUbyBnZXQgc3RhcnRlZCwgaGVyZSBpcyBhIHNpbXBsZSBjYWxsYmFjayB0aGF0IHNob3dzIHRoZSB2YWx1ZXMgaXQgZ2V0cworcGFzc2VkOjoKIAogICAgPj4+IGRlZiBweV9jbXBfZnVuYyhhLCBiKToKICAgIC4uLiAgICAgcHJpbnQoInB5X2NtcF9mdW5jIiwgYVswXSwgYlswXSkKQEAgLTk5OSwyMyArOTc2LDcgQEAKICAgID4+PiBjbXBfZnVuYyA9IENNUEZVTkMocHlfY21wX2Z1bmMpCiAgICA+Pj4KIAotSGVyZSBpcyB3aGF0IHdlIGdldCBvbiBXaW5kb3dzOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgNyAxCi0gICBweV9jbXBfZnVuYyAzMyAxCi0gICBweV9jbXBfZnVuYyA5OSAxCi0gICBweV9jbXBfZnVuYyA1IDEKLSAgIHB5X2NtcF9mdW5jIDcgNQotICAgcHlfY21wX2Z1bmMgMzMgNQotICAgcHlfY21wX2Z1bmMgOTkgNQotICAgcHlfY21wX2Z1bmMgNyA5OQotICAgcHlfY21wX2Z1bmMgMzMgOTkKLSAgIHB5X2NtcF9mdW5jIDcgMzMKLSAgID4+PgotCi1JdCBpcyBmdW5ueSB0byBzZWUgdGhhdCBvbiBsaW51eCB0aGUgc29ydCBmdW5jdGlvbiBzZWVtcyB0byB3b3JrIG11Y2ggbW9yZQotZWZmaWNpZW50bHksIGl0IGlzIGRvaW5nIGxlc3MgY29tcGFyaXNvbnM6OgorVGhlIHJlc3VsdDo6CiAKICAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgY21wX2Z1bmMpICMgZG9jdGVzdDogK0xJTlVYCiAgICBweV9jbXBfZnVuYyA1IDEKQEAgLTEwMjUsMzIgKzk4NiwxMyBAQAogICAgcHlfY21wX2Z1bmMgMSA3CiAgICA+Pj4KIAotQWgsIHdlJ3JlIG5lYXJseSBkb25lISBUaGUgbGFzdCBzdGVwIGlzIHRvIGFjdHVhbGx5IGNvbXBhcmUgdGhlIHR3byBpdGVtcyBhbmQKLXJldHVybiBhIHVzZWZ1bCByZXN1bHQ6OgorTm93IHdlIGNhbiBhY3R1YWxseSBjb21wYXJlIHRoZSB0d28gaXRlbXMgYW5kIHJldHVybiBhIHVzZWZ1bCByZXN1bHQ6OgogCiAgICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgogICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhWzBdLCBiWzBdKQogICAgLi4uICAgICByZXR1cm4gYVswXSAtIGJbMF0KICAgIC4uLgogICAgPj4+Ci0KLUZpbmFsIHJ1biBvbiBXaW5kb3dzOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBDTVBGVU5DKHB5X2NtcF9mdW5jKSkgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgMzMgNwotICAgcHlfY21wX2Z1bmMgOTkgMzMKLSAgIHB5X2NtcF9mdW5jIDUgOTkKLSAgIHB5X2NtcF9mdW5jIDEgOTkKLSAgIHB5X2NtcF9mdW5jIDMzIDcKLSAgIHB5X2NtcF9mdW5jIDEgMzMKLSAgIHB5X2NtcF9mdW5jIDUgMzMKLSAgIHB5X2NtcF9mdW5jIDUgNwotICAgcHlfY21wX2Z1bmMgMSA3Ci0gICBweV9jbXBfZnVuYyA1IDEKLSAgID4+PgotCi1hbmQgb24gTGludXg6OgotCiAgICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIENNUEZVTkMocHlfY21wX2Z1bmMpKSAjIGRvY3Rlc3Q6ICtMSU5VWAogICAgcHlfY21wX2Z1bmMgNSAxCiAgICBweV9jbXBfZnVuYyAzMyA5OQpAQCAtMTA1OSw5ICsxMDAxLDYgQEAKICAgIHB5X2NtcF9mdW5jIDUgNwogICAgPj4+CiAKLUl0IGlzIHF1aXRlIGludGVyZXN0aW5nIHRvIHNlZSB0aGF0IHRoZSBXaW5kb3dzIDpmdW5jOmBxc29ydGAgZnVuY3Rpb24gbmVlZHMKLW1vcmUgY29tcGFyaXNvbnMgdGhhbiB0aGUgbGludXggdmVyc2lvbiEKLQogQXMgd2UgY2FuIGVhc2lseSBjaGVjaywgb3VyIGFycmF5IGlzIHNvcnRlZCBub3c6OgogCiAgICA+Pj4gZm9yIGkgaW4gaWE6IHByaW50KGksIGVuZD0iICIpCkBAIC0xMDcxLDkgKzEwMTAsOSBAQAogCiAqKkltcG9ydGFudCBub3RlIGZvciBjYWxsYmFjayBmdW5jdGlvbnM6KioKIAotTWFrZSBzdXJlIHlvdSBrZWVwIHJlZmVyZW5jZXMgdG8gQ0ZVTkNUWVBFIG9iamVjdHMgYXMgbG9uZyBhcyB0aGV5IGFyZSB1c2VkIGZyb20KLUMgY29kZS4gOm1vZDpgY3R5cGVzYCBkb2Vzbid0LCBhbmQgaWYgeW91IGRvbid0LCB0aGV5IG1heSBiZSBnYXJiYWdlIGNvbGxlY3RlZCwKLWNyYXNoaW5nIHlvdXIgcHJvZ3JhbSB3aGVuIGEgY2FsbGJhY2sgaXMgbWFkZS4KK01ha2Ugc3VyZSB5b3Uga2VlcCByZWZlcmVuY2VzIHRvIDpmdW5jOmBDRlVOQ1RZUEVgIG9iamVjdHMgYXMgbG9uZyBhcyB0aGV5IGFyZQordXNlZCBmcm9tIEMgY29kZS4gOm1vZDpgY3R5cGVzYCBkb2Vzbid0LCBhbmQgaWYgeW91IGRvbid0LCB0aGV5IG1heSBiZSBnYXJiYWdlCitjb2xsZWN0ZWQsIGNyYXNoaW5nIHlvdXIgcHJvZ3JhbSB3aGVuIGEgY2FsbGJhY2sgaXMgbWFkZS4KIAogCiAuLiBfY3R5cGVzLWFjY2Vzc2luZy12YWx1ZXMtZXhwb3J0ZWQtZnJvbS1kbGxzOgpAQCAtMTM1MCw3ICsxMjg5LDEwIEBACiAgICBhc3N1bWVkIHRvIHJldHVybiB0aGUgd2luZG93cyBzcGVjaWZpYyA6Y2xhc3M6YEhSRVNVTFRgIGNvZGUuICA6Y2xhc3M6YEhSRVNVTFRgCiAgICB2YWx1ZXMgY29udGFpbiBpbmZvcm1hdGlvbiBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGNhbGwgZmFpbGVkIG9yCiAgICBzdWNjZWVkZWQsIHRvZ2V0aGVyIHdpdGggYWRkaXRpb25hbCBlcnJvciBjb2RlLiAgSWYgdGhlIHJldHVybiB2YWx1ZSBzaWduYWxzIGEKLSAgIGZhaWx1cmUsIGFuIDpjbGFzczpgV2luZG93c0Vycm9yYCBpcyBhdXRvbWF0aWNhbGx5IHJhaXNlZC4KKyAgIGZhaWx1cmUsIGFuIDpjbGFzczpgT1NFcnJvcmAgaXMgYXV0b21hdGljYWxseSByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBXaW5kb3dzRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLgogCiAKIC4uIGNsYXNzOjogV2luRExMKG5hbWUsIG1vZGU9REVGQVVMVF9NT0RFLCBoYW5kbGU9Tm9uZSwgdXNlX2Vycm5vPUZhbHNlLCB1c2VfbGFzdF9lcnJvcj1GYWxzZSkKQEAgLTE5NjcsMTEgKzE5MDksMTQgQEAKIC4uIGZ1bmN0aW9uOjogV2luRXJyb3IoY29kZT1Ob25lLCBkZXNjcj1Ob25lKQogCiAgICBXaW5kb3dzIG9ubHk6IHRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHdvcnN0LW5hbWVkIHRoaW5nIGluIGN0eXBlcy4gSXQKLSAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgV2luZG93c0Vycm9yLiAgSWYgKmNvZGUqIGlzIG5vdCBzcGVjaWZpZWQsCisgICBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIE9TRXJyb3IuICBJZiAqY29kZSogaXMgbm90IHNwZWNpZmllZCwKICAgIGBgR2V0TGFzdEVycm9yYGAgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgZXJyb3IgY29kZS4gSWYgKmRlc2NyKiBpcyBub3QKICAgIHNwZWNpZmllZCwgOmZ1bmM6YEZvcm1hdEVycm9yYCBpcyBjYWxsZWQgdG8gZ2V0IGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUKICAgIGVycm9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQW4gaW5zdGFuY2Ugb2YgOmV4YzpgV2luZG93c0Vycm9yYCB1c2VkIHRvIGJlIGNyZWF0ZWQuCisKIAogLi4gZnVuY3Rpb246OiB3c3RyaW5nX2F0KGFkZHJlc3MsIHNpemU9LTEpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CmluZGV4IDExYWI1ZDAuLjllNWNiNTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdApAQCAtNTk5LDYgKzU5OSwxNyBAQAogICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0Y2hgIGlzIGNhbGxlZC4KIAogCisuLiBmdW5jdGlvbjo6IHVuZ2V0X3djaChjaCkKKworICAgUHVzaCAqY2gqIHNvIHRoZSBuZXh0IDptZXRoOmBnZXRfd2NoYCB3aWxsIHJldHVybiBpdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIE9ubHkgb25lICpjaCogY2FuIGJlIHB1c2hlZCBiZWZvcmUgOm1ldGg6YGdldF93Y2hgIGlzIGNhbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiB1bmdldG1vdXNlKGlkLCB4LCB5LCB6LCBic3RhdGUpCiAKICAgIFB1c2ggYSA6Y29uc3Q6YEtFWV9NT1VTRWAgZXZlbnQgb250byB0aGUgaW5wdXQgcXVldWUsIGFzc29jaWF0aW5nIHRoZSBnaXZlbgpAQCAtNjQzLDcgKzY1NCw3IEBACiAtLS0tLS0tLS0tLS0tLQogCiBXaW5kb3cgb2JqZWN0cywgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGluaXRzY3JgIGFuZCA6ZnVuYzpgbmV3d2luYCBhYm92ZSwgaGF2ZQotdGhlIGZvbGxvd2luZyBtZXRob2RzOgordGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5hZGRjaChjaFssIGF0dHJdKQpAQCAtODMxLDYgKzg0MiwxNiBAQAogICAgZXZlbnQuCiAKIAorLi4gYXR0cmlidXRlOjogd2luZG93LmVuY29kaW5nCisKKyAgIEVuY29kaW5nIHVzZWQgdG8gZW5jb2RlIG1ldGhvZCBhcmd1bWVudHMgKFVuaWNvZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVycykuCisgICBUaGUgZW5jb2RpbmcgYXR0cmlidXRlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgd2luZG93IHdoZW4gYSBzdWJ3aW5kb3cKKyAgIGlzIGNyZWF0ZWQsIGZvciBleGFtcGxlIHdpdGggOm1ldGg6YHdpbmRvdy5zdWJ3aW5gLiBCeSBkZWZhdWx0LCB0aGUgbG9jYWxlCisgICBlbmNvZGluZyBpcyB1c2VkIChzZWUgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2ApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZXJhc2UoKQogCiAgICBDbGVhciB0aGUgd2luZG93LgpAQCAtODU0LDExICs4NzUsMjAgQEAKICAgIHVudGlsIGEga2V5IGlzIHByZXNzZWQuCiAKIAorLi4gbWV0aG9kOjogd2luZG93LmdldF93Y2goW3ksIHhdKQorCisgICBHZXQgYSB3aWRlIGNoYXJhY3Rlci4gUmV0dXJuIGEgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIG9yIGFuIGludGVnZXIgZm9yCisgICBmdW5jdGlvbiBrZXlzLCBrZXlwYWQga2V5cywgYW5kIG90aGVyIHNwZWNpYWwga2V5cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogd2luZG93LmdldGtleShbeSwgeF0pCiAKICAgIEdldCBhIGNoYXJhY3RlciwgcmV0dXJuaW5nIGEgc3RyaW5nIGluc3RlYWQgb2YgYW4gaW50ZWdlciwgYXMgOm1ldGg6YGdldGNoYAotICAgZG9lcy4gRnVuY3Rpb24ga2V5cywga2V5cGFkIGtleXMgYW5kIHNvIG9uIHJldHVybiBhIG11bHRpYnl0ZSBzdHJpbmcgY29udGFpbmluZwotICAgdGhlIGtleSBuYW1lLiAgSW4gbm8tZGVsYXkgbW9kZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGVyZSBpcyBubyBpbnB1dC4KKyAgIGRvZXMuIEZ1bmN0aW9uIGtleXMsIGtleXBhZCBrZXlzIGFuZCBvdGhlciBzcGVjaWFsIGtleXMgcmV0dXJuIGEgbXVsdGlieXRlCisgICBzdHJpbmcgY29udGFpbmluZyB0aGUga2V5IG5hbWUuICBJbiBuby1kZWxheSBtb2RlLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGlmCisgICB0aGVyZSBpcyBubyBpbnB1dC4KIAogCiAuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0bWF4eXgoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKaW5kZXggNmI0YTcxYS4uZDAzODJlMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CkBAIC0yMSwxMSArMjEsMTAgQEAKICAgIGRhdGV0aW1lLnJzdAogICAgY2FsZW5kYXIucnN0CiAgICBjb2xsZWN0aW9ucy5yc3QKKyAgIGNvbGxlY3Rpb25zLmFiYy5yc3QKICAgIGhlYXBxLnJzdAogICAgYmlzZWN0LnJzdAogICAgYXJyYXkucnN0Ci0gICBzY2hlZC5yc3QKLSAgIHF1ZXVlLnJzdAogICAgd2Vha3JlZi5yc3QKICAgIHR5cGVzLnJzdAogICAgY29weS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA4YmRkOTYxLi5jMWEyNDEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC00MDQsMTIgKzQwNCwxOSBAQAogLi4gY2xhc3NtZXRob2Q6OiBkYXRlLmZyb210aW1lc3RhbXAodGltZXN0YW1wKQogCiAgICBSZXR1cm4gdGhlIGxvY2FsIGRhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgUE9TSVggdGltZXN0YW1wLCBzdWNoIGFzIGlzIHJldHVybmVkCi0gICBieSA6ZnVuYzpgdGltZS50aW1lYC4gIFRoaXMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dAotICAgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmdW5jdGlvbi4KKyAgIGJ5IDpmdW5jOmB0aW1lLnRpbWVgLiAgVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0CisgICBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBsb2NhbHRpbWVgIGZ1bmN0aW9uLAorICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbHVyZS4KICAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgZnJvbSAxOTcwIHRocm91Z2ggMjAzOC4gIE5vdGUKICAgIHRoYXQgb24gbm9uLVBPU0lYIHN5c3RlbXMgdGhhdCBpbmNsdWRlIGxlYXAgc2Vjb25kcyBpbiB0aGVpciBub3Rpb24gb2YgYQogICAgdGltZXN0YW1wLCBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQgYnkgOm1ldGg6YGZyb210aW1lc3RhbXBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdGltZXN0YW1wCisgICAgICBpcyBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMKKyAgICAgIDpjOmZ1bmM6YGxvY2FsdGltZWAgZnVuY3Rpb24uIFJhaXNlIDpleGM6YE9TRXJyb3JgIGluc3RlYWQgb2YKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbHVyZS4KKwogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGUuZnJvbW9yZGluYWwob3JkaW5hbCkKIApAQCAtNzEzLDIzICs3MjAsNDQgQEAKICAgIGVxdWl2YWxlbnQgdG8KICAgIGBgdHouZnJvbXV0YyhkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkucmVwbGFjZSh0emluZm89dHopKWBgLgogCi0gICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dCBvZgorICAgOm1ldGg6YGZyb210aW1lc3RhbXBgIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcyBvdXQgb2YKICAgIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IKLSAgIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb25zLiAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbgorICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbnMsIGFuZCA6ZXhjOmBPU0Vycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yCisgICA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCisgICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluCiAgICAxOTcwIHRocm91Z2ggMjAzOC4gTm90ZSB0aGF0IG9uIG5vbi1QT1NJWCBzeXN0ZW1zIHRoYXQgaW5jbHVkZSBsZWFwIHNlY29uZHMgaW4KICAgIHRoZWlyIG5vdGlvbiBvZiBhIHRpbWVzdGFtcCwgbGVhcCBzZWNvbmRzIGFyZSBpZ25vcmVkIGJ5IDptZXRoOmBmcm9tdGltZXN0YW1wYCwKICAgIGFuZCB0aGVuIGl0J3MgcG9zc2libGUgdG8gaGF2ZSB0d28gdGltZXN0YW1wcyBkaWZmZXJpbmcgYnkgYSBzZWNvbmQgdGhhdCB5aWVsZAogICAgaWRlbnRpY2FsIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3RzLiBTZWUgYWxzbyA6bWV0aDpgdXRjZnJvbXRpbWVzdGFtcGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9ucy4gUmFpc2UgOmV4YzpgT1NFcnJvcmAKKyAgICAgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgCisgICAgICBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKICAgIFJldHVybiB0aGUgVVRDIDpjbGFzczpgLmRhdGV0aW1lYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAsIHdpdGgKLSAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcwotICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24uCisgICA6YXR0cjpgdHppbmZvYCBgYE5vbmVgYC4gVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMKKyAgIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLAorICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KICAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4gMTk3MCB0aHJvdWdoIDIwMzguIFNlZSBhbHNvCiAgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCiAKKyAgIE9uIHRoZSBQT1NJWCBjb21wbGlhbnQgcGxhdGZvcm1zLCBgYHV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKWBgCisgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbjo6CisKKyAgICAgZGF0ZXRpbWUoMTk3MCwgMSwgMSkgKyB0aW1lZGVsdGEoc2Vjb25kcz10aW1lc3RhbXApCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuZnJvbW9yZGluYWwob3JkaW5hbCkKIApAQCAtODczLDEzICs5MDEsMjAgQEAKICAgICpkYXRldGltZTEqIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuICpkYXRldGltZTIqIHdoZW4gKmRhdGV0aW1lMSogcHJlY2VkZXMKICAgICpkYXRldGltZTIqIGluIHRpbWUuCiAKLSAgIElmIG9uZSBjb21wYXJhbmQgaXMgbmFpdmUgYW5kIHRoZSBvdGhlciBpcyBhd2FyZSwgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisgICBJZiBvbmUgY29tcGFyYW5kIGlzIG5haXZlIGFuZCB0aGUgb3RoZXIgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAKKyAgIGlzIHJhaXNlZCBpZiBhbiBvcmRlciBjb21wYXJpc29uIGlzIGF0dGVtcHRlZC4gIEZvciBlcXVhbGl0eQorICAgY29tcGFyaXNvbnMsIG5haXZlIGluc3RhbmNlcyBhcmUgbmV2ZXIgZXF1YWwgdG8gYXdhcmUgaW5zdGFuY2VzLgorCiAgICBJZiBib3RoIGNvbXBhcmFuZHMgYXJlIGF3YXJlLCBhbmQgaGF2ZSB0aGUgc2FtZSA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUsIHRoZQogICAgY29tbW9uIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSBpcyBpZ25vcmVkIGFuZCB0aGUgYmFzZSBkYXRldGltZXMgYXJlCiAgICBjb21wYXJlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUgYW5kIGhhdmUgZGlmZmVyZW50IDphdHRyOmB0emluZm9gCiAgICBhdHRyaWJ1dGVzLCB0aGUgY29tcGFyYW5kcyBhcmUgZmlyc3QgYWRqdXN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlaXIgVVRDCiAgICBvZmZzZXRzIChvYnRhaW5lZCBmcm9tIGBgc2VsZi51dGNvZmZzZXQoKWBgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgZGF0ZXRpbWVgCisgICAgICBpbnN0YW5jZXMgZG9uJ3QgcmFpc2UgOmV4YzpgVHlwZUVycm9yYC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIEluIG9yZGVyIHRvIHN0b3AgY29tcGFyaXNvbiBmcm9tIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdCBzY2hlbWUgb2YgY29tcGFyaW5nCkBAIC05MjIsMTcgKzk1NywyMiBAQAogICAgZGF0ZXRpbWUgd2l0aCBubyBjb252ZXJzaW9uIG9mIGRhdGUgYW5kIHRpbWUgZGF0YS4KIAogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6KQorLi4gbWV0aG9kOjogZGF0ZXRpbWUuYXN0aW1lem9uZSh0ej1Ob25lKQogCi0gICBSZXR1cm4gYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdpdGggbmV3IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSAqdHoqLAorICAgUmV0dXJuIGEgOmNsYXNzOmBkYXRldGltZWAgb2JqZWN0IHdpdGggbmV3IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSAqdHoqLAogICAgYWRqdXN0aW5nIHRoZSBkYXRlIGFuZCB0aW1lIGRhdGEgc28gdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBVVEMgdGltZSBhcwogICAgKnNlbGYqLCBidXQgaW4gKnR6KidzIGxvY2FsIHRpbWUuCiAKLSAgICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cworICAgSWYgcHJvdmlkZWQsICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cwogICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgKnNlbGYqIG11c3QKICAgIGJlIGF3YXJlIChgYHNlbGYudHppbmZvYGAgbXVzdCBub3QgYmUgYGBOb25lYGAsIGFuZCBgYHNlbGYudXRjb2Zmc2V0KClgYCBtdXN0CiAgICBub3QgcmV0dXJuIGBgTm9uZWBgKS4KIAorICAgSWYgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIChvciB3aXRoIGBgdHo9Tm9uZWBgKSB0aGUgc3lzdGVtIGxvY2FsCisgICB0aW1lem9uZSBpcyBhc3N1bWVkLiAgVGhlIGBgdHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKKyAgIGRhdGV0aW1lIGluc3RhbmNlIHdpbGwgYmUgc2V0IHRvIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZXpvbmVgCisgICB3aXRoIHRoZSB6b25lIG5hbWUgYW5kIG9mZnNldCBvYnRhaW5lZCBmcm9tIHRoZSBPUy4KKwogICAgSWYgYGBzZWxmLnR6aW5mb2BgIGlzICp0eiosIGBgc2VsZi5hc3RpbWV6b25lKHR6KWBgIGlzIGVxdWFsIHRvICpzZWxmKjogIG5vCiAgICBhZGp1c3RtZW50IG9mIGRhdGUgb3IgdGltZSBkYXRhIGlzIHBlcmZvcm1lZC4gRWxzZSB0aGUgcmVzdWx0IGlzIGxvY2FsCiAgICB0aW1lIGluIHRpbWUgem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKQEAgLTk1OSw2ICs5OTksOSBAQAogICAgICAgICAgICMgQ29udmVydCBmcm9tIFVUQyB0byB0eidzIGxvY2FsIHRpbWUuCiAgICAgICAgICAgcmV0dXJuIHR6LmZyb211dGModXRjKQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnR6KiBub3cgY2FuIGJlIG9taXR0ZWQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudXRjb2Zmc2V0KCkKIApAQCAtMTAxNSw2ICsxMDU4LDM5IEBACiAgICBSZXR1cm4gdGhlIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbCBvZiB0aGUgZGF0ZS4gIFRoZSBzYW1lIGFzCiAgICBgYHNlbGYuZGF0ZSgpLnRvb3JkaW5hbCgpYGAuCiAKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWVzdGFtcCgpCisKKyAgIFJldHVybiBQT1NJWCB0aW1lc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgOmNsYXNzOmBkYXRldGltZWAKKyAgIGluc3RhbmNlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDpjbGFzczpgZmxvYXRgIHNpbWlsYXIgdG8gdGhhdAorICAgcmV0dXJuZWQgYnkgOmZ1bmM6YHRpbWUudGltZWAuCisKKyAgIE5haXZlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcyBhcmUgYXNzdW1lZCB0byByZXByZXNlbnQgbG9jYWwKKyAgIHRpbWUgYW5kIHRoaXMgbWV0aG9kIHJlbGllcyBvbiB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBta3RpbWVgCisgICBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBjb252ZXJzaW9uLiAgU2luY2UgOmNsYXNzOmBkYXRldGltZWAKKyAgIHN1cHBvcnRzIHdpZGVyIHJhbmdlIG9mIHZhbHVlcyB0aGFuIDpjOmZ1bmM6YG1rdGltZWAgb24gbWFueQorICAgcGxhdGZvcm1zLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgZm9yIHRpbWVzIGZhcgorICAgaW4gdGhlIHBhc3Qgb3IgZmFyIGluIHRoZSBmdXR1cmUuCisKKyAgIEZvciBhd2FyZSA6Y2xhc3M6YGRhdGV0aW1lYCBpbnN0YW5jZXMsIHRoZSByZXR1cm4gdmFsdWUgaXMgY29tcHV0ZWQKKyAgIGFzOjoKKworICAgICAgKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykpLnRvdGFsX3NlY29uZHMoKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBkaXJlY3RseSBmcm9tIGEKKyAgICAgIG5haXZlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlIHJlcHJlc2VudGluZyBVVEMgdGltZS4gIElmIHlvdXIKKyAgICAgIGFwcGxpY2F0aW9uIHVzZXMgdGhpcyBjb252ZW50aW9uIGFuZCB5b3VyIHN5c3RlbSB0aW1lem9uZSBpcyBub3QKKyAgICAgIHNldCB0byBVVEMsIHlvdSBjYW4gb2J0YWluIHRoZSBQT1NJWCB0aW1lc3RhbXAgYnkgc3VwcGx5aW5nCisgICAgICBgYHR6aW5mbz10aW1lem9uZS51dGNgYDo6CisKKyAgICAgICAgIHRpbWVzdGFtcCA9IGR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykudGltZXN0YW1wKCkKKworICAgICAgb3IgYnkgY2FsY3VsYXRpbmcgdGhlIHRpbWVzdGFtcCBkaXJlY3RseTo6CisKKyAgICAgICAgIHRpbWVzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEpKSAvIHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLndlZWtkYXkoKQogCkBAIC0xMjU0LDcgKzEzMzAsMTAgQEAKIAogKiBjb21wYXJpc29uIG9mIDpjbGFzczpgLnRpbWVgIHRvIDpjbGFzczpgLnRpbWVgLCB3aGVyZSAqYSogaXMgY29uc2lkZXJlZCBsZXNzCiAgIHRoYW4gKmIqIHdoZW4gKmEqIHByZWNlZGVzICpiKiBpbiB0aW1lLiAgSWYgb25lIGNvbXBhcmFuZCBpcyBuYWl2ZSBhbmQgdGhlIG90aGVyCi0gIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlCisgIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiBhbiBvcmRlciBjb21wYXJpc29uIGlzIGF0dGVtcHRlZC4gRm9yIGVxdWFsaXR5CisgIGNvbXBhcmlzb25zLCBuYWl2ZSBpbnN0YW5jZXMgYXJlIG5ldmVyIGVxdWFsIHRvIGF3YXJlIGluc3RhbmNlcy4KKworICBJZiBib3RoIGNvbXBhcmFuZHMgYXJlIGF3YXJlLCBhbmQgaGF2ZQogICB0aGUgc2FtZSA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUsIHRoZSBjb21tb24gOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlIGlzCiAgIGlnbm9yZWQgYW5kIHRoZSBiYXNlIHRpbWVzIGFyZSBjb21wYXJlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUgYW5kCiAgIGhhdmUgZGlmZmVyZW50IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZXMsIHRoZSBjb21wYXJhbmRzIGFyZSBmaXJzdCBhZGp1c3RlZCBieQpAQCAtMTI2NCw2ICsxMzQzLDEwIEBACiAgIGRpZmZlcmVudCB0eXBlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCB1bmxlc3MgdGhlIGNvbXBhcmlzb24gaXMgYGA9PWBgIG9yCiAgIGBgIT1gYC4gIFRoZSBsYXR0ZXIgY2FzZXMgcmV0dXJuIDpjb25zdDpgRmFsc2VgIG9yIDpjb25zdDpgVHJ1ZWAsIHJlc3BlY3RpdmVseS4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICBFcXVhbGl0eSBjb21wYXJpc29ucyBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZSA6Y2xhc3M6YHRpbWVgIGluc3RhbmNlcworICAgICBkb24ndCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLgorCiAqIGhhc2gsIHVzZSBhcyBkaWN0IGtleQogCiAqIGVmZmljaWVudCBwaWNrbGluZwpAQCAtMTU4NywxMSArMTY3MCwxMiBAQAogOmNsYXNzOmB0aW1lem9uZWAgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSA6Y2xhc3M6YHRpbWV6b25lYCBvYmplY3QgcmVwcmVzZW50cyBhIHRpbWV6b25lIHRoYXQgaXMgZGVmaW5lZCBieSBhCi1maXhlZCBvZmZzZXQgZnJvbSBVVEMuICBOb3RlIHRoYXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbm5vdCBiZSB1c2VkCi10byByZXByZXNlbnQgdGltZXpvbmUgaW5mb3JtYXRpb24gaW4gdGhlIGxvY2F0aW9ucyB3aGVyZSBkaWZmZXJlbnQKLW9mZnNldHMgYXJlIHVzZWQgaW4gZGlmZmVyZW50IGRheXMgb2YgdGhlIHllYXIgb3Igd2hlcmUgaGlzdG9yaWNhbAotY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBjaXZpbCB0aW1lLgorVGhlIDpjbGFzczpgdGltZXpvbmVgIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB0emluZm9gLCBlYWNoCitpbnN0YW5jZSBvZiB3aGljaCByZXByZXNlbnRzIGEgdGltZXpvbmUgZGVmaW5lZCBieSBhIGZpeGVkIG9mZnNldCBmcm9tCitVVEMuICBOb3RlIHRoYXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudAordGltZXpvbmUgaW5mb3JtYXRpb24gaW4gdGhlIGxvY2F0aW9ucyB3aGVyZSBkaWZmZXJlbnQgb2Zmc2V0cyBhcmUgdXNlZAoraW4gZGlmZmVyZW50IGRheXMgb2YgdGhlIHllYXIgb3Igd2hlcmUgaGlzdG9yaWNhbCBjaGFuZ2VzIGhhdmUgYmVlbgorbWFkZSB0byBjaXZpbCB0aW1lLgogCiAKIC4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0WywgbmFtZV0pCkBAIC0xNzYwLDggKzE4NDQsNyBAQAogfCAgICAgICAgICAgfCBkZWNpbWFsIG51bWJlciBbMDAsOTldLiAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIHwgXCg1KSAgfAotfCAgICAgICAgICAgfCBudW1iZXIgWzAwMDEsOTk5OV0gKHN0cnB0aW1lKSwgfCAgICAgICB8Ci18ICAgICAgICAgICB8IFsxMDAwLDk5OTldIChzdHJmdGltZSkuICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIFswMDAxLDk5OTldLiAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiB8IGBgJXpgYCAgICB8IFVUQyBvZmZzZXQgaW4gdGhlIGZvcm0gK0hITU0gICB8IFwoNikgIHwKIHwgICAgICAgICAgIHwgb3IgLUhITU0gKGVtcHR5IHN0cmluZyBpZiB0aGUgIHwgICAgICAgfApAQCAtMTc5NSwxMCArMTg3OCw3IEBACiAgICBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgogCiAoNSkKLSAgIEZvciB0ZWNobmljYWwgcmVhc29ucywgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2QgZG9lcyBub3Qgc3VwcG9ydAotICAgZGF0ZXMgYmVmb3JlIHllYXIgMTAwMDogYGB0LnN0cmZ0aW1lKGZvcm1hdClgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gYGB0LnllYXIgPCAxMDAwYGAgZXZlbiBpZiBgYGZvcm1hdGBgIGRvZXMKLSAgIG5vdCBjb250YWluIGBgJVlgYCBkaXJlY3RpdmUuICBUaGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QgY2FuCisgICBUaGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QgY2FuCiAgICBwYXJzZSB5ZWFycyBpbiB0aGUgZnVsbCBbMSwgOTk5OV0gcmFuZ2UsIGJ1dCB5ZWFycyA8IDEwMDAgbXVzdCBiZQogICAgemVyby1maWxsZWQgdG8gNC1kaWdpdCB3aWR0aC4KIApAQCAtMTgwNiw2ICsxODg2LDEwIEBACiAgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2Qgd2FzIHJlc3RyaWN0ZWQgdG8KICAgICAgIHllYXJzID49IDE5MDAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiB2ZXJzaW9uIDMuMiwgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2Qgd2FzIHJlc3RyaWN0ZWQgdG8KKyAgICAgIHllYXJzID49IDEwMDAuCisKICg2KQogICAgRm9yIGV4YW1wbGUsIGlmIDptZXRoOmB1dGNvZmZzZXRgIHJldHVybnMgYGB0aW1lZGVsdGEoaG91cnM9LTMsIG1pbnV0ZXM9LTMwKWBgLAogICAgYGAlemBgIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyBgYCctMDMzMCdgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlYnVnLnJzdCBiL0RvYy9saWJyYXJ5L2RlYnVnLnJzdAppbmRleCBiMmVlNGZhLi5jNjlmYjFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWJ1Zy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGVidWcucnN0CkBAIC0xMCw3ICsxMCw4IEBACiAuLiB0b2N0cmVlOjoKIAogICAgYmRiLnJzdAorICAgZmF1bHRoYW5kbGVyLnJzdAogICAgcGRiLnJzdAogICAgcHJvZmlsZS5yc3QKICAgIHRpbWVpdC5yc3QKLSAgIHRyYWNlLnJzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgIHRyYWNlLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCBkOTg5ZTNmLi45MDNhZjZjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtOSw2ICs5LDcgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KIC4uIG1vZHVsZWF1dGhvcjo6IEFhaHogPGFhaHogYXQgcG9ib3guY29tPgogLi4gbW9kdWxlYXV0aG9yOjogVGltIFBldGVycyA8dGltLm9uZSBhdCBjb21jYXN0Lm5ldD4KKy4uIG1vZHVsZWF1dGhvcjo6IFN0ZWZhbiBLcmFoIDxza3JhaCBhdCBieXRlcmVlZi5vcmc+CiAuLiBzZWN0aW9uYXV0aG9yOjogUmF5bW9uZCBELiBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogCiAuLiBpbXBvcnQgbW9kdWxlcyBmb3IgdGVzdGluZyBpbmxpbmUgZG9jdGVzdHMgd2l0aCB0aGUgU3BoaW54IGRvY3Rlc3QgYnVpbGRlcgpAQCAtMjAsOCArMjEsOSBAQAogICAgIyBtYWtlIHN1cmUgZWFjaCBncm91cCBnZXRzIGEgZnJlc2ggY29udGV4dAogICAgc2V0Y29udGV4dChDb250ZXh0KCkpCiAKLVRoZSA6bW9kOmBkZWNpbWFsYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZGVjaW1hbCBmbG9hdGluZyBwb2ludAotYXJpdGhtZXRpYy4gIEl0IG9mZmVycyBzZXZlcmFsIGFkdmFudGFnZXMgb3ZlciB0aGUgOmNsYXNzOmBmbG9hdGAgZGF0YXR5cGU6CitUaGUgOm1vZDpgZGVjaW1hbGAgbW9kdWxlIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGZhc3QgY29ycmVjdGx5LXJvdW5kZWQKK2RlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4gSXQgb2ZmZXJzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVyIHRoZQorOmNsYXNzOmBmbG9hdGAgZGF0YXR5cGU6CiAKICogRGVjaW1hbCAiaXMgYmFzZWQgb24gYSBmbG9hdGluZy1wb2ludCBtb2RlbCB3aGljaCB3YXMgZGVzaWduZWQgd2l0aCBwZW9wbGUKICAgaW4gbWluZCwgYW5kIG5lY2Vzc2FyaWx5IGhhcyBhIHBhcmFtb3VudCBndWlkaW5nIHByaW5jaXBsZSAtLSBjb21wdXRlcnMgbXVzdApAQCAtOTIsNyArOTQsNyBAQAogY29uc2lkZXJlZCBhcyBpbmZvcm1hdGlvbmFsLCBvciB0cmVhdGVkIGFzIGV4Y2VwdGlvbnMuIFRoZSBzaWduYWxzIGluIHRoZQogZGVjaW1hbCBtb2R1bGUgYXJlOiA6Y29uc3Q6YENsYW1wZWRgLCA6Y29uc3Q6YEludmFsaWRPcGVyYXRpb25gLAogOmNvbnN0OmBEaXZpc2lvbkJ5WmVyb2AsIDpjb25zdDpgSW5leGFjdGAsIDpjb25zdDpgUm91bmRlZGAsIDpjb25zdDpgU3Vibm9ybWFsYCwKLTpjb25zdDpgT3ZlcmZsb3dgLCBhbmQgOmNvbnN0OmBVbmRlcmZsb3dgLgorOmNvbnN0OmBPdmVyZmxvd2AsIDpjb25zdDpgVW5kZXJmbG93YCBhbmQgOmNvbnN0OmBGbG9hdE9wZXJhdGlvbmAuCiAKIEZvciBlYWNoIHNpZ25hbCB0aGVyZSBpcyBhIGZsYWcgYW5kIGEgdHJhcCBlbmFibGVyLiAgV2hlbiBhIHNpZ25hbCBpcwogZW5jb3VudGVyZWQsIGl0cyBmbGFnIGlzIHNldCB0byBvbmUsIHRoZW4sIGlmIHRoZSB0cmFwIGVuYWJsZXIgaXMKQEAgLTEyMiw3ICsxMjQsNyBAQAogCiAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCiAgICA+Pj4gZ2V0Y29udGV4dCgpCi0gICBDb250ZXh0KHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5OTk5LCBFbWF4PTk5OTk5OTk5OSwKKyAgIENvbnRleHQocHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bXSwgdHJhcHM9W092ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywKICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbl0pCiAKQEAgLTEzMiw3ICsxMzQsNyBAQAogQ29uc3RydWN0aW9uIGZyb20gYW4gaW50ZWdlciBvciBhIGZsb2F0IHBlcmZvcm1zIGFuIGV4YWN0IGNvbnZlcnNpb24gb2YgdGhlCiB2YWx1ZSBvZiB0aGF0IGludGVnZXIgb3IgZmxvYXQuICBEZWNpbWFsIG51bWJlcnMgaW5jbHVkZSBzcGVjaWFsIHZhbHVlcyBzdWNoIGFzCiA6Y29uc3Q6YE5hTmAgd2hpY2ggc3RhbmRzIGZvciAiTm90IGEgbnVtYmVyIiwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlCi06Y29uc3Q6YEluZmluaXR5YCwgYW5kIDpjb25zdDpgLTBgLgorOmNvbnN0OmBJbmZpbml0eWAsIGFuZCA6Y29uc3Q6YC0wYDo6CiAKICAgID4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDI4CiAgICA+Pj4gRGVjaW1hbCgxMCkKQEAgLTE1Miw2ICsxNTQsMjUgQEAKICAgID4+PiBEZWNpbWFsKCctSW5maW5pdHknKQogICAgRGVjaW1hbCgnLUluZmluaXR5JykKIAorSWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYCBzaWduYWwgaXMgdHJhcHBlZCwgYWNjaWRlbnRhbCBtaXhpbmcgb2YKK2RlY2ltYWxzIGFuZCBmbG9hdHMgaW4gY29uc3RydWN0b3JzIG9yIG9yZGVyaW5nIGNvbXBhcmlzb25zIHJhaXNlcworYW4gZXhjZXB0aW9uOjoKKworICAgPj4+IGMgPSBnZXRjb250ZXh0KCkKKyAgID4+PiBjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgID4+PiBEZWNpbWFsKDMuMTQpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgZGVjaW1hbC5GbG9hdE9wZXJhdGlvbjogWzxjbGFzcyAnZGVjaW1hbC5GbG9hdE9wZXJhdGlvbic+XQorICAgPj4+IERlY2ltYWwoJzMuNScpIDwgMy43CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uOiBbPGNsYXNzICdkZWNpbWFsLkZsb2F0T3BlcmF0aW9uJz5dCisgICA+Pj4gRGVjaW1hbCgnMy41JykgPT0gMy41CisgICBUcnVlCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBUaGUgc2lnbmlmaWNhbmNlIG9mIGEgbmV3IERlY2ltYWwgaXMgZGV0ZXJtaW5lZCBzb2xlbHkgYnkgdGhlIG51bWJlciBvZiBkaWdpdHMKIGlucHV0LiAgQ29udGV4dCBwcmVjaXNpb24gYW5kIHJvdW5kaW5nIG9ubHkgY29tZSBpbnRvIHBsYXkgZHVyaW5nIGFyaXRobWV0aWMKIG9wZXJhdGlvbnMuCkBAIC0xNjksNiArMTkwLDE2IEBACiAgICA+Pj4gRGVjaW1hbCgnMy4xNDE1OTI2NTM1JykgKyBEZWNpbWFsKCcyLjcxODI4MTgyODUnKQogICAgRGVjaW1hbCgnNS44NTk4OCcpCiAKK0lmIHRoZSBpbnRlcm5hbCBsaW1pdHMgb2YgdGhlIEMgdmVyc2lvbiBhcmUgZXhjZWVkZWQsIGNvbnN0cnVjdGluZworYSBkZWNpbWFsIHJhaXNlcyA6Y2xhc3M6YEludmFsaWRPcGVyYXRpb25gOjoKKworICAgPj4+IERlY2ltYWwoIjFlOTk5OTk5OTk5OTk5OTk5OTk5OSIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkludmFsaWRPcGVyYXRpb246IFs8Y2xhc3MgJ2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbic+XQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworCiBEZWNpbWFscyBpbnRlcmFjdCB3ZWxsIHdpdGggbXVjaCBvZiB0aGUgcmVzdCBvZiBQeXRob24uICBIZXJlIGlzIGEgc21hbGwgZGVjaW1hbAogZmxvYXRpbmcgcG9pbnQgZmx5aW5nIGNpcmN1czoKIApAQCAtMjQ0LDcgKzI3NSw3IEBACiAgICBEZWNpbWFsKCcwLjE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NycpCiAKICAgID4+PiBFeHRlbmRlZENvbnRleHQKLSAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OTk5OSwgRW1heD05OTk5OTk5OTksCisgICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bXSwgdHJhcHM9W10pCiAgICA+Pj4gc2V0Y29udGV4dChFeHRlbmRlZENvbnRleHQpCiAgICA+Pj4gRGVjaW1hbCgxKSAvIERlY2ltYWwoNykKQEAgLTI2OSw3ICszMDAsNyBAQAogICAgPj4+IERlY2ltYWwoMzU1KSAvIERlY2ltYWwoMTEzKQogICAgRGVjaW1hbCgnMy4xNDE1OTI5MicpCiAgICA+Pj4gZ2V0Y29udGV4dCgpCi0gICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTk5OTksIEVtYXg9OTk5OTk5OTk5LAorICAgQ29udGV4dChwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5LCBFbWF4PTk5OTk5OSwKICAgICAgICAgICAgY2FwaXRhbHM9MSwgY2xhbXA9MCwgZmxhZ3M9W0luZXhhY3QsIFJvdW5kZWRdLCB0cmFwcz1bXSkKIAogVGhlICpmbGFncyogZW50cnkgc2hvd3MgdGhhdCB0aGUgcmF0aW9uYWwgYXBwcm94aW1hdGlvbiB0byA6Y29uc3Q6YFBpYCB3YXMKQEAgLTM1OCw2ICszODksMTAgQEAKICAgICAgIFRoZSBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IgaXMgbm93IHBlcm1pdHRlZCB0byBiZSBhIDpjbGFzczpgZmxvYXRgCiAgICAgICBpbnN0YW5jZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpjbGFzczpgZmxvYXRgIGFyZ3VtZW50cyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYAorICAgICAgdHJhcCBpcyBzZXQuIEJ5IGRlZmF1bHQgdGhlIHRyYXAgaXMgb2ZmLgorCiAgICBEZWNpbWFsIGZsb2F0aW5nIHBvaW50IG9iamVjdHMgc2hhcmUgbWFueSBwcm9wZXJ0aWVzIHdpdGggdGhlIG90aGVyIGJ1aWx0LWluCiAgICBudW1lcmljIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBmbG9hdGAgYW5kIDpjbGFzczpgaW50YC4gIEFsbCBvZiB0aGUgdXN1YWwgbWF0aAogICAgb3BlcmF0aW9ucyBhbmQgc3BlY2lhbCBtZXRob2RzIGFwcGx5LiAgTGlrZXdpc2UsIGRlY2ltYWwgb2JqZWN0cyBjYW4gYmUKQEAgLTQyNCw3ICs0NTksNyBAQAogICAgICAgYSA6Y2xhc3M6YERlY2ltYWxgIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIHJldHVybnMKICAgICAgIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuCiAKLSAgIC4uIG1ldGhvZDo6IGNvbXBhcmUob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmUob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgQ29tcGFyZSB0aGUgdmFsdWVzIG9mIHR3byBEZWNpbWFsIGluc3RhbmNlcy4gIDptZXRoOmBjb21wYXJlYCByZXR1cm5zIGEKICAgICAgIERlY2ltYWwgaW5zdGFuY2UsIGFuZCBpZiBlaXRoZXIgb3BlcmFuZCBpcyBhIE5hTiB0aGVuIHRoZSByZXN1bHQgaXMgYQpAQCAtNDM1LDEzICs0NzAsMTMgQEAKICAgICAgICAgIGEgPT0gYiAgICAgICAgICAgPT0+IERlY2ltYWwoJzAnKQogICAgICAgICAgYSA+IGIgICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpCiAKLSAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfc2lnbmFsKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBjb21wYXJlX3NpZ25hbChvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIDptZXRoOmBjb21wYXJlYCBtZXRob2QsIGV4Y2VwdCB0aGF0IGFsbAogICAgICAgTmFOcyBzaWduYWwuICBUaGF0IGlzLCBpZiBuZWl0aGVyIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOIHRoZW4gYW55CiAgICAgICBxdWlldCBOYU4gb3BlcmFuZCBpcyB0cmVhdGVkIGFzIHRob3VnaCBpdCB3ZXJlIGEgc2lnbmFsaW5nIE5hTi4KIAotICAgLi4gbWV0aG9kOjogY29tcGFyZV90b3RhbChvdGhlcikKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfdG90YWwob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIKICAgICAgIG51bWVyaWNhbCB2YWx1ZS4gIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBjb21wYXJlYCBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0CkBAIC00NTksMTMgKzQ5NCwyMSBAQAogICAgICAgaGlnaGVyIGluIHRoZSB0b3RhbCBvcmRlciB0aGFuIHRoZSBzZWNvbmQgb3BlcmFuZC4gIFNlZSB0aGUgc3BlY2lmaWNhdGlvbgogICAgICAgZm9yIGRldGFpbHMgb2YgdGhlIHRvdGFsIG9yZGVyLgogCi0gICAuLiBtZXRob2Q6OiBjb21wYXJlX3RvdGFsX21hZyhvdGhlcikKKyAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkCisgICAgICBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiAgQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZQorICAgICAgSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LgorCisgICAuLiBtZXRob2Q6OiBjb21wYXJlX3RvdGFsX21hZyhvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGVpcgogICAgICAgdmFsdWUgYXMgaW4gOm1ldGg6YGNvbXBhcmVfdG90YWxgLCBidXQgaWdub3JpbmcgdGhlIHNpZ24gb2YgZWFjaCBvcGVyYW5kLgogICAgICAgYGB4LmNvbXBhcmVfdG90YWxfbWFnKHkpYGAgaXMgZXF1aXZhbGVudCB0bwogICAgICAgYGB4LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpYGAuCiAKKyAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkCisgICAgICBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiAgQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZQorICAgICAgSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LgorCiAgICAuLiBtZXRob2Q6OiBjb25qdWdhdGUoKQogCiAgICAgICBKdXN0IHJldHVybnMgc2VsZiwgdGhpcyBtZXRob2QgaXMgb25seSB0byBjb21wbHkgd2l0aCB0aGUgRGVjaW1hbApAQCAtNDgyLDcgKzUyNSw3IEBACiAgICAgICBSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgdGhlCiAgICAgICBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQgYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KIAotICAgLi4gbWV0aG9kOjogY29weV9zaWduKG90aGVyKQorICAgLi4gbWV0aG9kOjogY29weV9zaWduKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlCiAgICAgICBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gIEZvciBleGFtcGxlOgpAQCAtNDkwLDEwICs1MzMsMTEgQEAKICAgICAgICAgID4+PiBEZWNpbWFsKCcyLjMnKS5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNScpKQogICAgICAgICAgRGVjaW1hbCgnLTIuMycpCiAKLSAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUKLSAgICAgIGNoYW5nZWQgYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KKyAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkCisgICAgICBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiAgQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZQorICAgICAgSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LgogCi0gICAuLiBtZXRob2Q6OiBleHAoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogZXhwKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKG5hdHVyYWwpIGV4cG9uZW50aWFsIGZ1bmN0aW9uIGBgZSoqeGBgIGF0IHRoZQogICAgICAgZ2l2ZW4gbnVtYmVyLiAgVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUKQEAgLTUzMCw3ICs1NzQsNyBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAotICAgLi4gbWV0aG9kOjogZm1hKG90aGVyLCB0aGlyZFssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogZm1hKG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKQogCiAgICAgICBGdXNlZCBtdWx0aXBseS1hZGQuICBSZXR1cm4gc2VsZipvdGhlcit0aGlyZCB3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZQogICAgICAgaW50ZXJtZWRpYXRlIHByb2R1Y3Qgc2VsZipvdGhlci4KQEAgLTU1OSw3ICs2MDMsNyBAQAogICAgICAgUmV0dXJuIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIGFyZ3VtZW50IGlzIGEgKHF1aWV0IG9yIHNpZ25hbGluZykgTmFOIGFuZAogICAgICAgOmNvbnN0OmBGYWxzZWAgb3RoZXJ3aXNlLgogCi0gICAuLiBtZXRob2Q6OiBpc19ub3JtYWwoKQorICAgLi4gbWV0aG9kOjogaXNfbm9ybWFsKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIGFyZ3VtZW50IGlzIGEgKm5vcm1hbCogZmluaXRlIG51bWJlci4gIFJldHVybgogICAgICAgOmNvbnN0OmBGYWxzZWAgaWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uCkBAIC01NzksNyArNjIzLDcgQEAKICAgICAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIDpjb25zdDpgRmFsc2VgCiAgICAgICBvdGhlcndpc2UuCiAKLSAgIC4uIG1ldGhvZDo6IGlzX3N1Ym5vcm1hbCgpCisgICAuLiBtZXRob2Q6OiBpc19zdWJub3JtYWwoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgYXJndW1lbnQgaXMgc3Vibm9ybWFsLCBhbmQgOmNvbnN0OmBGYWxzZWAKICAgICAgIG90aGVyd2lzZS4KQEAgLTU4OSwxNyArNjMzLDE3IEBACiAgICAgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kCiAgICAgICA6Y29uc3Q6YEZhbHNlYCBvdGhlcndpc2UuCiAKLSAgIC4uIG1ldGhvZDo6IGxuKFtjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGxuKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4gIFRoZSByZXN1bHQgaXMKICAgICAgIGNvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZSA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAgcm91bmRpbmcgbW9kZS4KIAotICAgLi4gbWV0aG9kOjogbG9nMTAoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbG9nMTAoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4gIFRoZSByZXN1bHQgaXMgY29ycmVjdGx5CiAgICAgICByb3VuZGVkIHVzaW5nIHRoZSA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAgcm91bmRpbmcgbW9kZS4KIAotICAgLi4gbWV0aG9kOjogbG9nYihbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBsb2diKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgRm9yIGEgbm9uemVybyBudW1iZXIsIHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgaXRzIG9wZXJhbmQgYXMgYQogICAgICAgOmNsYXNzOmBEZWNpbWFsYCBpbnN0YW5jZS4gIElmIHRoZSBvcGVyYW5kIGlzIGEgemVybyB0aGVuCkBAIC02MDcsNzMgKzY1MSw3MyBAQAogICAgICAgaXMgcmFpc2VkLiAgSWYgdGhlIG9wZXJhbmQgaXMgYW4gaW5maW5pdHkgdGhlbiBgYERlY2ltYWwoJ0luZmluaXR5JylgYCBpcwogICAgICAgcmV0dXJuZWQuCiAKLSAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfYW5kKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBsb2dpY2FsX2FuZChvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICA6bWV0aDpgbG9naWNhbF9hbmRgIGlzIGEgbG9naWNhbCBvcGVyYXRpb24gd2hpY2ggdGFrZXMgdHdvICpsb2dpY2FsCiAgICAgICBvcGVyYW5kcyogKHNlZSA6cmVmOmBsb2dpY2FsX29wZXJhbmRzX2xhYmVsYCkuICBUaGUgcmVzdWx0IGlzIHRoZQogICAgICAgZGlnaXQtd2lzZSBgYGFuZGBgIG9mIHRoZSB0d28gb3BlcmFuZHMuCiAKLSAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfaW52ZXJ0KFtjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9Tm9uZSkKIAogICAgICAgOm1ldGg6YGxvZ2ljYWxfaW52ZXJ0YCBpcyBhIGxvZ2ljYWwgb3BlcmF0aW9uLiAgVGhlCiAgICAgICByZXN1bHQgaXMgdGhlIGRpZ2l0LXdpc2UgaW52ZXJzaW9uIG9mIHRoZSBvcGVyYW5kLgogCi0gICAuLiBtZXRob2Q6OiBsb2dpY2FsX29yKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBsb2dpY2FsX29yKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIDptZXRoOmBsb2dpY2FsX29yYCBpcyBhIGxvZ2ljYWwgb3BlcmF0aW9uIHdoaWNoIHRha2VzIHR3byAqbG9naWNhbAogICAgICAgb3BlcmFuZHMqIChzZWUgOnJlZjpgbG9naWNhbF9vcGVyYW5kc19sYWJlbGApLiAgVGhlIHJlc3VsdCBpcyB0aGUKICAgICAgIGRpZ2l0LXdpc2UgYGBvcmBgIG9mIHRoZSB0d28gb3BlcmFuZHMuCiAKLSAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfeG9yKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBsb2dpY2FsX3hvcihvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICA6bWV0aDpgbG9naWNhbF94b3JgIGlzIGEgbG9naWNhbCBvcGVyYXRpb24gd2hpY2ggdGFrZXMgdHdvICpsb2dpY2FsCiAgICAgICBvcGVyYW5kcyogKHNlZSA6cmVmOmBsb2dpY2FsX29wZXJhbmRzX2xhYmVsYCkuICBUaGUgcmVzdWx0IGlzIHRoZQogICAgICAgZGlnaXQtd2lzZSBleGNsdXNpdmUgb3Igb2YgdGhlIHR3byBvcGVyYW5kcy4KIAotICAgLi4gbWV0aG9kOjogbWF4KG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBtYXgob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgTGlrZSBgYG1heChzZWxmLCBvdGhlcilgYCBleGNlcHQgdGhhdCB0aGUgY29udGV4dCByb3VuZGluZyBydWxlIGlzIGFwcGxpZWQKICAgICAgIGJlZm9yZSByZXR1cm5pbmcgYW5kIHRoYXQgOmNvbnN0OmBOYU5gIHZhbHVlcyBhcmUgZWl0aGVyIHNpZ25hbGVkIG9yCiAgICAgICBpZ25vcmVkIChkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgYW5kIHdoZXRoZXIgdGhleSBhcmUgc2lnbmFsaW5nIG9yCiAgICAgICBxdWlldCkuCiAKLSAgIC4uIG1ldGhvZDo6IG1heF9tYWcob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IG1heF9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YC5tYXhgIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlCiAgICAgICBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLgogCi0gICAuLiBtZXRob2Q6OiBtaW4ob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IG1pbihvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBMaWtlIGBgbWluKHNlbGYsIG90aGVyKWBgIGV4Y2VwdCB0aGF0IHRoZSBjb250ZXh0IHJvdW5kaW5nIHJ1bGUgaXMgYXBwbGllZAogICAgICAgYmVmb3JlIHJldHVybmluZyBhbmQgdGhhdCA6Y29uc3Q6YE5hTmAgdmFsdWVzIGFyZSBlaXRoZXIgc2lnbmFsZWQgb3IKICAgICAgIGlnbm9yZWQgKGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCBhbmQgd2hldGhlciB0aGV5IGFyZSBzaWduYWxpbmcgb3IKICAgICAgIHF1aWV0KS4KIAotICAgLi4gbWV0aG9kOjogbWluX21hZyhvdGhlclssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbWluX21hZyhvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgLm1pbmAgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUKICAgICAgIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuCiAKLSAgIC4uIG1ldGhvZDo6IG5leHRfbWludXMoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbmV4dF9taW51cyhjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgbGFyZ2VzdCBudW1iZXIgcmVwcmVzZW50YWJsZSBpbiB0aGUgZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlCiAgICAgICBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlCiAgICAgICBnaXZlbiBvcGVyYW5kLgogCi0gICAuLiBtZXRob2Q6OiBuZXh0X3BsdXMoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbmV4dF9wbHVzKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIHRoZSBzbWFsbGVzdCBudW1iZXIgcmVwcmVzZW50YWJsZSBpbiB0aGUgZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlCiAgICAgICBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUKICAgICAgIGdpdmVuIG9wZXJhbmQuCiAKLSAgIC4uIG1ldGhvZDo6IG5leHRfdG93YXJkKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBuZXh0X3Rvd2FyZChvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm4gdGhlIG51bWJlciBjbG9zZXN0IHRvIHRoZSBmaXJzdAogICAgICAgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gIElmIGJvdGggb3BlcmFuZHMgYXJlCiAgICAgICBudW1lcmljYWxseSBlcXVhbCwgcmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIHRoZSBzaWduIHNldCB0bwogICAgICAgYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLgogCi0gICAuLiBtZXRob2Q6OiBub3JtYWxpemUoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbm9ybWFsaXplKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgTm9ybWFsaXplIHRoZSBudW1iZXIgYnkgc3RyaXBwaW5nIHRoZSByaWdodG1vc3QgdHJhaWxpbmcgemVyb3MgYW5kCiAgICAgICBjb252ZXJ0aW5nIGFueSByZXN1bHQgZXF1YWwgdG8gOmNvbnN0OmBEZWNpbWFsKCcwJylgIHRvCkBAIC02ODIsNyArNzI2LDcgQEAKICAgICAgIGBgRGVjaW1hbCgnMC4zMjEwMDBlKzInKWBgIGJvdGggbm9ybWFsaXplIHRvIHRoZSBlcXVpdmFsZW50IHZhbHVlCiAgICAgICBgYERlY2ltYWwoJzMyLjEnKWBgLgogCi0gICAuLiBtZXRob2Q6OiBudW1iZXJfY2xhc3MoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbnVtYmVyX2NsYXNzKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlICpjbGFzcyogb2YgdGhlIG9wZXJhbmQuICBUaGUgcmV0dXJuZWQgdmFsdWUKICAgICAgIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlbiBzdHJpbmdzLgpAQCAtNjk4LDcgKzc0Miw3IEBACiAgICAgICAqIGBgIk5hTiJgYCwgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIChOb3QgYSBOdW1iZXIpLgogICAgICAgKiBgYCJzTmFOImBgLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOLgogCi0gICAuLiBtZXRob2Q6OiBxdWFudGl6ZShleHBbLCByb3VuZGluZ1ssIGNvbnRleHRbLCB3YXRjaGV4cF1dXSkKKyAgIC4uIG1ldGhvZDo6IHF1YW50aXplKGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lLCB3YXRjaGV4cD1UcnVlKQogCiAgICAgICBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZQogICAgICAgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLgpAQCAtNzI1LDEzICs3NjksMTggQEAKICAgICAgIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gOmF0dHI6YEVtYXhgIG9yIGxlc3MgdGhhbgogICAgICAgOmF0dHI6YEV0aW55YC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgICAgKndhdGNoZXhwKiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZnJvbSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbgorICAgICAgICAgYW5kIGlzIG5vdCBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uCisgICAgICAgICAzLjQsIHdoZXJlIGl0IGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCiAgICAuLiBtZXRob2Q6OiByYWRpeCgpCiAKICAgICAgIFJldHVybiBgYERlY2ltYWwoMTApYGAsIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIDpjbGFzczpgRGVjaW1hbGAKICAgICAgIGNsYXNzIGRvZXMgYWxsIGl0cyBhcml0aG1ldGljLiAgSW5jbHVkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKICAgICAgIHNwZWNpZmljYXRpb24uCiAKLSAgIC4uIG1ldGhvZDo6IHJlbWFpbmRlcl9uZWFyKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiByZW1haW5kZXJfbmVhcihvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGRpdmlkaW5nICpzZWxmKiBieSAqb3RoZXIqLiAgVGhpcyBkaWZmZXJzIGZyb20KICAgICAgIGBgc2VsZiAlIG90aGVyYGAgaW4gdGhhdCB0aGUgc2lnbiBvZiB0aGUgcmVtYWluZGVyIGlzIGNob3NlbiBzbyBhcyB0bwpAQCAtNzQ5LDcgKzc5OCw3IEBACiAgICAgICA+Pj4gRGVjaW1hbCgzNSkucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxMCkpCiAgICAgICBEZWNpbWFsKCctNScpCiAKLSAgIC4uIG1ldGhvZDo6IHJvdGF0ZShvdGhlclssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogcm90YXRlKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgcmVzdWx0IG9mIHJvdGF0aW5nIHRoZSBkaWdpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50CiAgICAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBvcGVyYW5kLiAgVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlciBpbgpAQCAtNzYwLDE4ICs4MDksMjIgQEAKICAgICAgIGxlbmd0aCBwcmVjaXNpb24gaWYgbmVjZXNzYXJ5LiAgVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kCiAgICAgICBhcmUgdW5jaGFuZ2VkLgogCi0gICAuLiBtZXRob2Q6OiBzYW1lX3F1YW50dW0ob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IHNhbWVfcXVhbnR1bShvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBUZXN0IHdoZXRoZXIgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGUgc2FtZSBleHBvbmVudCBvciB3aGV0aGVyIGJvdGggYXJlCiAgICAgICA6Y29uc3Q6YE5hTmAuCiAKLSAgIC4uIG1ldGhvZDo6IHNjYWxlYihvdGhlclssIGNvbnRleHRdKQorICAgICAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQKKyAgICAgIGFuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuICBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlCisgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuCisKKyAgIC4uIG1ldGhvZDo6IHNjYWxlYihvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCBleHBvbmVudCBhZGp1c3RlZCBieSB0aGUgc2Vjb25kLgogICAgICAgRXF1aXZhbGVudGx5LCByZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgbXVsdGlwbGllZCBieSBgYDEwKipvdGhlcmBgLiAgVGhlCiAgICAgICBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIuCiAKLSAgIC4uIG1ldGhvZDo6IHNoaWZ0KG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBzaGlmdChvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvZiBzaGlmdGluZyB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudAogICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW4KQEAgLTc4MSwxMiArODM0LDEyIEBACiAgICAgICByaWdodC4gIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4gIFRoZSBzaWduIGFuZAogICAgICAgZXhwb25lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYXJlIHVuY2hhbmdlZC4KIAotICAgLi4gbWV0aG9kOjogc3FydChbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBzcXJ0KGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgdG8gZnVsbCBwcmVjaXNpb24uCiAKIAotICAgLi4gbWV0aG9kOjogdG9fZW5nX3N0cmluZyhbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiB0b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4KIApAQCAtNzk0LDEyICs4NDcsMTIgQEAKICAgICAgIGFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLiAgRm9yIGV4YW1wbGUsIGNvbnZlcnRzCiAgICAgICBgYERlY2ltYWwoJzEyM0UrMScpYGAgdG8gYGBEZWNpbWFsKCcxLjIzRSszJylgYAogCi0gICAuLiBtZXRob2Q6OiB0b19pbnRlZ3JhbChbcm91bmRpbmdbLCBjb250ZXh0XV0pCisgICAuLiBtZXRob2Q6OiB0b19pbnRlZ3JhbChyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIElkZW50aWNhbCB0byB0aGUgOm1ldGg6YHRvX2ludGVncmFsX3ZhbHVlYCBtZXRob2QuICBUaGUgYGB0b19pbnRlZ3JhbGBgCiAgICAgICBuYW1lIGhhcyBiZWVuIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy4KIAotICAgLi4gbWV0aG9kOjogdG9faW50ZWdyYWxfZXhhY3QoW3JvdW5kaW5nWywgY29udGV4dF1dKQorICAgLi4gbWV0aG9kOjogdG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKQogCiAgICAgICBSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBzaWduYWxpbmcgOmNvbnN0OmBJbmV4YWN0YCBvcgogICAgICAgOmNvbnN0OmBSb3VuZGVkYCBhcyBhcHByb3ByaWF0ZSBpZiByb3VuZGluZyBvY2N1cnMuICBUaGUgcm91bmRpbmcgbW9kZSBpcwpAQCAtODA3LDcgKzg2MCw3IEBACiAgICAgICBgYGNvbnRleHRgYC4gIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuIHRoZW4gdGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlCiAgICAgICBjdXJyZW50IGNvbnRleHQgaXMgdXNlZC4KIAotICAgLi4gbWV0aG9kOjogdG9faW50ZWdyYWxfdmFsdWUoW3JvdW5kaW5nWywgY29udGV4dF1dKQorICAgLi4gbWV0aG9kOjogdG9faW50ZWdyYWxfdmFsdWUocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKQogCiAgICAgICBSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHdpdGhvdXQgc2lnbmFsaW5nIDpjb25zdDpgSW5leGFjdGAgb3IKICAgICAgIDpjb25zdDpgUm91bmRlZGAuICBJZiBnaXZlbiwgYXBwbGllcyAqcm91bmRpbmcqOyBvdGhlcndpc2UsIHVzZXMgdGhlCkBAIC04NTMsMTAgKzkwNiwxMCBAQAogWW91IGNhbiBhbHNvIHVzZSB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhbmQgdGhlIDpmdW5jOmBsb2NhbGNvbnRleHRgCiBmdW5jdGlvbiB0byB0ZW1wb3JhcmlseSBjaGFuZ2UgdGhlIGFjdGl2ZSBjb250ZXh0LgogCi0uLiBmdW5jdGlvbjo6IGxvY2FsY29udGV4dChbY10pCisuLiBmdW5jdGlvbjo6IGxvY2FsY29udGV4dChjdHg9Tm9uZSkKIAogICAgUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGN1cnJlbnQgY29udGV4dCBmb3IgdGhlIGFjdGl2ZSB0aHJlYWQKLSAgIHRvIGEgY29weSBvZiAqYyogb24gZW50cnkgdG8gdGhlIHdpdGgtc3RhdGVtZW50IGFuZCByZXN0b3JlIHRoZSBwcmV2aW91cyBjb250ZXh0CisgICB0byBhIGNvcHkgb2YgKmN0eCogb24gZW50cnkgdG8gdGhlIHdpdGgtc3RhdGVtZW50IGFuZCByZXN0b3JlIHRoZSBwcmV2aW91cyBjb250ZXh0CiAgICB3aGVuIGV4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZCwgYSBjb3B5IG9mIHRoZQogICAgY3VycmVudCBjb250ZXh0IGlzIHVzZWQuCiAKQEAgLTkxMiwzOSArOTY1LDMzIEBACiAgICBJbiBzaW5nbGUgdGhyZWFkZWQgZW52aXJvbm1lbnRzLCBpdCBpcyBwcmVmZXJhYmxlIHRvIG5vdCB1c2UgdGhpcyBjb250ZXh0IGF0CiAgICBhbGwuICBJbnN0ZWFkLCBzaW1wbHkgY3JlYXRlIGNvbnRleHRzIGV4cGxpY2l0bHkgYXMgZGVzY3JpYmVkIGJlbG93LgogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIHByZWNpc2lvbj0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBhbmQgZW5hYmxlZCB0cmFwcwotICAgZm9yIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgRGl2aXNpb25CeVplcm8uCisgICBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIDphdHRyOmBwcmVjYFwgPVwgOmNvbnN0OmAyOGAsCisgICA6YXR0cjpgcm91bmRpbmdgXCA9XCA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAsCisgICBhbmQgZW5hYmxlZCB0cmFwcyBmb3IgOmNsYXNzOmBPdmVyZmxvd2AsIDpjbGFzczpgSW52YWxpZE9wZXJhdGlvbmAsIGFuZAorICAgOmNsYXNzOmBEaXZpc2lvbkJ5WmVyb2AuCiAKIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBzdXBwbGllZCBjb250ZXh0cywgbmV3IGNvbnRleHRzIGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlCiA6Y2xhc3M6YENvbnRleHRgIGNvbnN0cnVjdG9yLgogCiAKLS4uIGNsYXNzOjogQ29udGV4dChwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLCBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lKQorLi4gY2xhc3M6OiBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpCiAKICAgIENyZWF0ZXMgYSBuZXcgY29udGV4dC4gIElmIGEgZmllbGQgaXMgbm90IHNwZWNpZmllZCBvciBpcyA6Y29uc3Q6YE5vbmVgLCB0aGUKICAgIGRlZmF1bHQgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSB0aGUgOmNvbnN0OmBEZWZhdWx0Q29udGV4dGAuICBJZiB0aGUgKmZsYWdzKgogICAgZmllbGQgaXMgbm90IHNwZWNpZmllZCBvciBpcyA6Y29uc3Q6YE5vbmVgLCBhbGwgZmxhZ3MgYXJlIGNsZWFyZWQuCiAKLSAgIFRoZSAqcHJlYyogZmllbGQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgcHJlY2lzaW9uIGZvciBhcml0aG1ldGljCi0gICBvcGVyYXRpb25zIGluIHRoZSBjb250ZXh0LgorICAgKnByZWMqIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YDFgLCA6Y29uc3Q6YE1BWF9QUkVDYF0gdGhhdCBzZXRzCisgICB0aGUgcHJlY2lzaW9uIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMgaW4gdGhlIGNvbnRleHQuCiAKLSAgIFRoZSAqcm91bmRpbmcqIG9wdGlvbiBpcyBvbmUgb2Y6Ci0KLSAgICogOmNvbnN0OmBST1VORF9DRUlMSU5HYCAodG93YXJkcyA6Y29uc3Q6YEluZmluaXR5YCksCi0gICAqIDpjb25zdDpgUk9VTkRfRE9XTmAgKHRvd2FyZHMgemVybyksCi0gICAqIDpjb25zdDpgUk9VTkRfRkxPT1JgICh0b3dhcmRzIDpjb25zdDpgLUluZmluaXR5YCksCi0gICAqIDpjb25zdDpgUk9VTkRfSEFMRl9ET1dOYCAodG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG93YXJkcyB6ZXJvKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX0VWRU5gICh0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlciksCi0gICAqIDpjb25zdDpgUk9VTkRfSEFMRl9VUGAgKHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIGF3YXkgZnJvbSB6ZXJvKSwgb3IKLSAgICogOmNvbnN0OmBST1VORF9VUGAgKGF3YXkgZnJvbSB6ZXJvKS4KLSAgICogOmNvbnN0OmBST1VORF8wNVVQYCAoYXdheSBmcm9tIHplcm8gaWYgbGFzdCBkaWdpdCBhZnRlciByb3VuZGluZyB0b3dhcmRzIHplcm8KLSAgICAgd291bGQgaGF2ZSBiZWVuIDAgb3IgNTsgb3RoZXJ3aXNlIHRvd2FyZHMgemVybykKKyAgIFRoZSAqcm91bmRpbmcqIG9wdGlvbiBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBsaXN0ZWQgaW4gdGhlIHNlY3Rpb24KKyAgIGBSb3VuZGluZyBNb2Rlc2BfLgogCiAgICBUaGUgKnRyYXBzKiBhbmQgKmZsYWdzKiBmaWVsZHMgbGlzdCBhbnkgc2lnbmFscyB0byBiZSBzZXQuIEdlbmVyYWxseSwgbmV3CiAgICBjb250ZXh0cyBzaG91bGQgb25seSBzZXQgdHJhcHMgYW5kIGxlYXZlIHRoZSBmbGFncyBjbGVhci4KIAogICAgVGhlICpFbWluKiBhbmQgKkVtYXgqIGZpZWxkcyBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgb3V0ZXIgbGltaXRzIGFsbG93YWJsZQotICAgZm9yIGV4cG9uZW50cy4KKyAgIGZvciBleHBvbmVudHMuICpFbWluKiBtdXN0IGJlIGluIHRoZSByYW5nZSBbOmNvbnN0OmBNSU5fRU1JTmAsIDpjb25zdDpgMGBdLAorICAgKkVtYXgqIGluIHRoZSByYW5nZSBbOmNvbnN0OmAwYCwgOmNvbnN0OmBNQVhfRU1BWGBdLgogCiAgICBUaGUgKmNhcGl0YWxzKiBmaWVsZCBpcyBlaXRoZXIgOmNvbnN0OmAwYCBvciA6Y29uc3Q6YDFgICh0aGUgZGVmYXVsdCkuIElmIHNldCB0bwogICAgOmNvbnN0OmAxYCwgZXhwb25lbnRzIGFyZSBwcmludGVkIHdpdGggYSBjYXBpdGFsIDpjb25zdDpgRWA7IG90aGVyd2lzZSwgYQpAQCAtOTgzLDYgKzEwMzAsMTIgQEAKIAogICAgICAgUmVzZXRzIGFsbCBvZiB0aGUgZmxhZ3MgdG8gOmNvbnN0OmAwYC4KIAorICAgLi4gbWV0aG9kOjogY2xlYXJfdHJhcHMoKQorCisgICAgICBSZXNldHMgYWxsIG9mIHRoZSB0cmFwcyB0byA6Y29uc3Q6YDBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogICAgLi4gbWV0aG9kOjogY29weSgpCiAKICAgICAgIFJldHVybiBhIGR1cGxpY2F0ZSBvZiB0aGUgY29udGV4dC4KQEAgLTEyNzUsMTUgKzEzMjgsMjAgQEAKICAgICAgIGlkZW50aXR5IG9wZXJhdGlvbi4KIAogCi0gICAuLiBtZXRob2Q6OiBwb3dlcih4LCB5WywgbW9kdWxvXSkKKyAgIC4uIG1ldGhvZDo6IHBvd2VyKHgsIHksIG1vZHVsbz1Ob25lKQogCiAgICAgICBSZXR1cm4gYGB4YGAgdG8gdGhlIHBvd2VyIG9mIGBgeWBgLCByZWR1Y2VkIG1vZHVsbyBgYG1vZHVsb2BgIGlmIGdpdmVuLgogCiAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgYGB4Kip5YGAuICBJZiBgYHhgYCBpcyBuZWdhdGl2ZSB0aGVuIGBgeWBgCiAgICAgICBtdXN0IGJlIGludGVncmFsLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIGBgeWBgIGlzIGludGVncmFsIGFuZAogICAgICAgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuCi0gICAgICBUaGUgcmVzdWx0IHNob3VsZCBhbHdheXMgYmUgY29ycmVjdGx5IHJvdW5kZWQsIHVzaW5nIHRoZSByb3VuZGluZyBtb2RlIG9mCi0gICAgICB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0LgorICAgICAgVGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlIGNvbnRleHQgaXMgdXNlZC4gUmVzdWx0cyBhcmUgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkCisgICAgICBpbiB0aGUgUHl0aG9uIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgQyBtb2R1bGUgY29tcHV0ZXMgOm1ldGg6YHBvd2VyYCBpbiB0ZXJtcyBvZiB0aGUgY29ycmVjdGx5LXJvdW5kZWQKKyAgICAgICAgIDptZXRoOmBleHBgIGFuZCA6bWV0aDpgbG5gIGZ1bmN0aW9ucy4gVGhlIHJlc3VsdCBpcyB3ZWxsLWRlZmluZWQgYnV0CisgICAgICAgICBvbmx5ICJhbG1vc3QgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkIi4KIAogICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgYGAoeCoqeSkgJSBtb2R1bG9gYC4gIEZvciB0aGUgdGhyZWUgYXJndW1lbnQKICAgICAgIGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZSBhcmd1bWVudHMgaG9sZDoKQEAgLTEzNzEsNiArMTQyOSw2OSBAQAogCiAuLiAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKIAorLi4gX2RlY2ltYWwtcm91bmRpbmctbW9kZXM6CisKK0NvbnN0YW50cworLS0tLS0tLS0tCisKK1RoZSBjb25zdGFudHMgaW4gdGhpcyBzZWN0aW9uIGFyZSBvbmx5IHJlbGV2YW50IGZvciB0aGUgQyBtb2R1bGUuIFRoZXkKK2FyZSBhbHNvIGluY2x1ZGVkIGluIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5LgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgMzItYml0ICAgICAgICB8ICAgICAgICAgICAgNjQtYml0ICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IC4uIGRhdGE6OiBNQVhfUFJFQyAgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgLi4gZGF0YTo6IE1BWF9FTUFYICB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAuLiBkYXRhOjogTUlOX0VNSU4gIHwgOmNvbnN0OmAtNDI1MDAwMDAwYCB8IDpjb25zdDpgLTk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IC4uIGRhdGE6OiBNSU5fRVRJTlkgfCA6Y29uc3Q6YC04NDk5OTk5OTlgIHwgOmNvbnN0OmAtMTk5OTk5OTk5OTk5OTk5OTk5N2AgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworCisuLiBkYXRhOjogSEFWRV9USFJFQURTCisKKyAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIFRydWUuIElmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHMsIHRoZQorICAgQyB2ZXJzaW9uIGF1dG9tYXRpY2FsbHkgZGlzYWJsZXMgdGhlIGV4cGVuc2l2ZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICAgbWFjaGluZXJ5LiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZSBpcyBGYWxzZS4KKworUm91bmRpbmcgbW9kZXMKKy0tLS0tLS0tLS0tLS0tCisKKy4uIGRhdGE6OiBST1VORF9DRUlMSU5HCisKKyAgIFJvdW5kIHRvd2FyZHMgOmNvbnN0OmBJbmZpbml0eWAuCisKKy4uIGRhdGE6OiBST1VORF9ET1dOCisKKyAgIFJvdW5kIHRvd2FyZHMgemVyby4KKworLi4gZGF0YTo6IFJPVU5EX0ZMT09SCisKKyAgIFJvdW5kIHRvd2FyZHMgOmNvbnN0OmAtSW5maW5pdHlgLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9ET1dOCisKKyAgIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvd2FyZHMgemVyby4KKworLi4gZGF0YTo6IFJPVU5EX0hBTEZfRVZFTgorCisgICBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlci4KKworLi4gZGF0YTo6IFJPVU5EX0hBTEZfVVAKKworICAgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8uCisKKy4uIGRhdGE6OiBST1VORF9VUAorCisgICBSb3VuZCBhd2F5IGZyb20gemVyby4KKworLi4gZGF0YTo6IFJPVU5EXzA1VVAKKworICAgUm91bmQgYXdheSBmcm9tIHplcm8gaWYgbGFzdCBkaWdpdCBhZnRlciByb3VuZGluZyB0b3dhcmRzIHplcm8gd291bGQgaGF2ZQorICAgYmVlbiAwIG9yIDU7IG90aGVyd2lzZSByb3VuZCB0b3dhcmRzIHplcm8uCisKIAogLi4gX2RlY2ltYWwtc2lnbmFsczoKIApAQCAtMTQzNSw3ICsxNTU2LDYgQEAKICAgICAgIEluZmluaXR5IC8gSW5maW5pdHkKICAgICAgIHggJSAwCiAgICAgICBJbmZpbml0eSAlIHgKLSAgICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKICAgICAgIHNxcnQoLXgpIGFuZCB4ID4gMAogICAgICAgMCAqKiAwCiAgICAgICB4ICoqIChub24taW50ZWdlcikKQEAgLTE0NzgsNiArMTU5OCwyMyBAQAogICAgT2NjdXJzIHdoZW4gYSBzdWJub3JtYWwgcmVzdWx0IGlzIHB1c2hlZCB0byB6ZXJvIGJ5IHJvdW5kaW5nLiA6Y2xhc3M6YEluZXhhY3RgCiAgICBhbmQgOmNsYXNzOmBTdWJub3JtYWxgIGFyZSBhbHNvIHNpZ25hbGVkLgogCisKKy4uIGNsYXNzOjogRmxvYXRPcGVyYXRpb24KKworICAgIEVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGNvbnN0cnVjdG9yLAorICAgIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsYCBhbmQgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLgorICAgIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LiBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkCisgICAgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcgOmV4YzpgRmxvYXRPcGVyYXRpb25gIGluIHRoZQorICAgIGNvbnRleHQgZmxhZ3MuIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGggOm1ldGg6YH5kZWNpbWFsLkRlY2ltYWwuZnJvbV9mbG9hdGAKKyAgICBvciA6bWV0aDpgfmRlY2ltYWwuQ29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0YCBkbyBub3Qgc2V0IHRoZSBmbGFnLgorCisgICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAorICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIDpleGM6YEZsb2F0T3BlcmF0aW9uYC4KKworCiBUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIGhpZXJhcmNoeSBvZiBzaWduYWxzOjoKIAogICAgZXhjZXB0aW9ucy5Bcml0aG1ldGljRXJyb3IoZXhjZXB0aW9ucy5FeGNlcHRpb24pCkBAIC0xNDkwLDEwICsxNjI3LDEyIEBACiAgICAgICAgICAgIEludmFsaWRPcGVyYXRpb24KICAgICAgICAgICAgUm91bmRlZAogICAgICAgICAgICBTdWJub3JtYWwKKyAgICAgICAgICAgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgZXhjZXB0aW9ucy5UeXBlRXJyb3IpCiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCiAKKwogLi4gX2RlY2ltYWwtbm90ZXM6CiAKIEZsb2F0aW5nIFBvaW50IE5vdGVzCkBAIC0xNjAzLDcgKzE3NDIsNyBAQAogdGhlIGZvbGxvd2luZyBjYWxjdWxhdGlvbiByZXR1cm5zIGEgdmFsdWUgZXF1YWwgdG8gemVybzoKIAogICAgPj4+IDEgLyBEZWNpbWFsKCdJbmZpbml0eScpCi0gICBEZWNpbWFsKCcwRS0xMDAwMDAwMDI2JykKKyAgIERlY2ltYWwoJzBFLTEwMDAwMjYnKQogCiAuLiAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKIApAQCAtMTYxNSw3ICsxNzU0LDcgQEAKIAogVGhlIDpmdW5jOmBnZXRjb250ZXh0YCBmdW5jdGlvbiBhY2Nlc3NlcyBhIGRpZmZlcmVudCA6Y2xhc3M6YENvbnRleHRgIG9iamVjdCBmb3IKIGVhY2ggdGhyZWFkLiAgSGF2aW5nIHNlcGFyYXRlIHRocmVhZCBjb250ZXh0cyBtZWFucyB0aGF0IHRocmVhZHMgbWF5IG1ha2UKLWNoYW5nZXMgKHN1Y2ggYXMgYGBnZXRjb250ZXh0LnByZWM9MTBgYCkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRocmVhZHMuCitjaGFuZ2VzIChzdWNoIGFzIGBgZ2V0Y29udGV4dCgpLnByZWM9MTBgYCkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRocmVhZHMuCiAKIExpa2V3aXNlLCB0aGUgOmZ1bmM6YHNldGNvbnRleHRgIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgYXNzaWducyBpdHMgdGFyZ2V0IHRvCiB0aGUgY3VycmVudCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nIGIvRG9jL2xpYnJhcnkvZGVwZ3JhcGgtb3V0cHV0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjBiYjFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZGVwZ3JhcGgtb3V0cHV0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QgYi9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKaW5kZXggYzgyMmUwOC4uMjM2ODc2OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdApAQCAtMTksNSArMTksOCBAQAogICAgcHlkb2MucnN0CiAgICBkb2N0ZXN0LnJzdAogICAgdW5pdHRlc3QucnN0CisgICB1bml0dGVzdC5tb2NrLnJzdAorICAgdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKICAgIDJ0bzMucnN0CiAgICB0ZXN0LnJzdAorICAgdmVudi5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0IGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKaW5kZXggYmRjMzdiMy4uODM2ZTI0MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKQEAgLTc1Miw4ICs3NTIsOCBAQAogICAgICAgICMgd2UncmUgcGFzc2luZyB0aGVzZSBhcyBhcmd1bWVudHMgdG8gdGhlIGRpZmYgZnVuY3Rpb24KICAgICAgICBmcm9tZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdChmcm9tZmlsZSkuc3RfbXRpbWUpCiAgICAgICAgdG9kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KHRvZmlsZSkuc3RfbXRpbWUpCi0gICAgICAgZnJvbWxpbmVzID0gb3Blbihmcm9tZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQotICAgICAgIHRvbGluZXMgPSBvcGVuKHRvZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQorICAgICAgIHdpdGggb3Blbihmcm9tbGluZXMpIGFzIGZyb21mLCBvcGVuKHRvZmlsZSkgYXMgdG9mOgorICAgICAgICAgICBmcm9tbGluZXMsIHRvbGluZXMgPSBsaXN0KGZyb21mKSwgbGlzdCh0b2YpCiAKICAgICAgICBpZiBvcHRpb25zLnU6CiAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCAxMDhjZGE3Li40MzM5ZjU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTE3MSwxMSArMTcxLDYgQEAKIAogKipHZW5lcmFsIGluc3RydWN0aW9ucyoqCiAKLS4uIG9wY29kZTo6IFNUT1BfQ09ERQotCi0gICBJbmRpY2F0ZXMgZW5kLW9mLWNvZGUgdG8gdGhlIGNvbXBpbGVyLCBub3QgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCi0KLQogLi4gb3Bjb2RlOjogTk9QCiAKICAgIERvIG5vdGhpbmcgY29kZS4gIFVzZWQgYXMgYSBwbGFjZWhvbGRlciBieSB0aGUgYnl0ZWNvZGUgb3B0aW1pemVyLgpAQCAtNDM2LDYgKzQzMSwxMyBAQAogICAgUG9wcyBgYFRPU2BgIGFuZCB5aWVsZHMgaXQgZnJvbSBhIDp0ZXJtOmBnZW5lcmF0b3JgLgogCiAKKy4uIG9wY29kZTo6IFlJRUxEX0ZST00KKworICAgUG9wcyBgYFRPU2BgIGFuZCBkZWxlZ2F0ZXMgdG8gaXQgYXMgYSBzdWJpdGVyYXRvciBmcm9tIGEgOnRlcm06YGdlbmVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG9wY29kZTo6IElNUE9SVF9TVEFSCiAKICAgIExvYWRzIGFsbCBzeW1ib2xzIG5vdCBzdGFydGluZyB3aXRoIGBgJ18nYGAgZGlyZWN0bHkgZnJvbSB0aGUgbW9kdWxlIFRPUyB0byB0aGUKQEAgLTc1MiwxNyArNzU0LDE5IEBACiAKIC4uIG9wY29kZTo6IE1BS0VfRlVOQ1RJT04gKGFyZ2MpCiAKLSAgIFB1c2hlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3Qgb24gdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgIGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uIG9iamVjdCBpcyBkZWZpbmVkIHRvIGhhdmUgKmFyZ2MqIGRlZmF1bHQgcGFyYW1ldGVycywKLSAgIHdoaWNoIGFyZSBmb3VuZCBiZWxvdyBUT1MuCisgICBQdXNoZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0IG9uIHRoZSBzdGFjay4gIFRPUyBpcyB0aGUKKyAgIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGZ1bmN0aW9uOyBUT1MxIGlzIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aAorICAgdGhlIGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uIG9iamVjdCBpcyBkZWZpbmVkIHRvIGhhdmUgKmFyZ2MqIGRlZmF1bHQgcGFyYW1ldGVycywKKyAgIHdoaWNoIGFyZSBmb3VuZCBiZWxvdyBUT1MxLgogCiAKIC4uIG9wY29kZTo6IE1BS0VfQ0xPU1VSRSAoYXJnYykKIAogICAgQ3JlYXRlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3QsIHNldHMgaXRzICpfX2Nsb3N1cmVfXyogc2xvdCwgYW5kIHB1c2hlcyBpdCBvbgotICAgdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24sIFRPUzEgdGhlIHR1cGxlCi0gICBjb250YWluaW5nIGNlbGxzIGZvciB0aGUgY2xvc3VyZSdzIGZyZWUgdmFyaWFibGVzLiAgVGhlIGZ1bmN0aW9uIGFsc28gaGFzCi0gICAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgZm91bmQgYmVsb3cgdGhlIGNlbGxzLgorICAgdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiwgVE9TMSBpcyB0aGUKKyAgIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiwgYW5kIFRPUzIgaXMgdGhlIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yCisgICB0aGUgY2xvc3VyZSdzIGZyZWUgdmFyaWFibGVzLiAgVGhlIGZ1bmN0aW9uIGFsc28gaGFzICphcmdjKiBkZWZhdWx0IHBhcmFtZXRlcnMsCisgICB3aGljaCBhcmUgZm91bmQgYmVsb3cgdGhlIGNlbGxzLgogCiAKIC4uIG9wY29kZTo6IEJVSUxEX1NMSUNFIChhcmdjKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpc3R1dGlscy5yc3QKaW5kZXggMjM4Yjc5ZC4uMTFhMjk0OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0CkBAIC0xMiwxOCArMTIsMTQgQEAKIDEwMCUtcHVyZSBQeXRob24sIG9yIG1heSBiZSBleHRlbnNpb24gbW9kdWxlcyB3cml0dGVuIGluIEMsIG9yIG1heSBiZQogY29sbGVjdGlvbnMgb2YgUHl0aG9uIHBhY2thZ2VzIHdoaWNoIGluY2x1ZGUgbW9kdWxlcyBjb2RlZCBpbiBib3RoIFB5dGhvbiBhbmQgQy4KIAotVGhpcyBwYWNrYWdlIGlzIGRpc2N1c3NlZCBpbiB0d28gc2VwYXJhdGUgY2hhcHRlcnM6CiAKK1VzZXIgZG9jdW1lbnRhdGlvbiBhbmQgQVBJIHJlZmVyZW5jZSBhcmUgcHJvdmlkZWQgaW4gYW5vdGhlciBkb2N1bWVudDoKIAogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YGRpc3R1dGlscy1pbmRleGAKICAgICAgIFRoZSBtYW51YWwgZm9yIGRldmVsb3BlcnMgYW5kIHBhY2thZ2VycyBvZiBQeXRob24gbW9kdWxlcy4gIFRoaXMgZGVzY3JpYmVzCiAgICAgICBob3cgdG8gcHJlcGFyZSA6bW9kOmBkaXN0dXRpbHNgXCAtYmFzZWQgcGFja2FnZXMgc28gdGhhdCB0aGV5IG1heSBiZQotICAgICAgZWFzaWx5IGluc3RhbGxlZCBpbnRvIGFuIGV4aXN0aW5nIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0KLSAgIDpyZWY6YGluc3RhbGwtaW5kZXhgCi0gICAgICBBbiAiYWRtaW5pc3RyYXRvcnMiIG1hbnVhbCB3aGljaCBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsaW5nCi0gICAgICBtb2R1bGVzIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4gIFlvdSBkbyBub3QgbmVlZCB0byBiZSBhCi0gICAgICBQeXRob24gcHJvZ3JhbW1lciB0byByZWFkIHRoaXMgbWFudWFsLgotCisgICAgICBlYXNpbHkgaW5zdGFsbGVkIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4gIElmIGFsc28gY29udGFpbnMKKyAgICAgIGluc3RydWN0aW9ucyBmb3IgZW5kLXVzZXJzIHdhbnRpbmcgdG8gaW5zdGFsbCBhIGRpc3R1dGlscy1iYXNlZCBwYWNrYWdlLAorICAgICAgOnJlZjpgaW5zdGFsbC1pbmRleGAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CmluZGV4IGVjOGVkYmUuLjIyMmM3MTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CkBAIC0zMjAsNyArMzIwLDggQEAKICAgVGFicyBpbiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSB0ZXN0ZWQgY29kZSBhcmUgbm90IG1vZGlmaWVkLiAgQmVjYXVzZSBhbnkKICAgaGFyZCB0YWJzIGluIHRoZSBzYW1wbGUgb3V0cHV0ICphcmUqIGV4cGFuZGVkLCB0aGlzIG1lYW5zIHRoYXQgaWYgdGhlIGNvZGUKICAgb3V0cHV0IGluY2x1ZGVzIGhhcmQgdGFicywgdGhlIG9ubHkgd2F5IHRoZSBkb2N0ZXN0IGNhbiBwYXNzIGlzIGlmIHRoZQotICA6Y29uc3Q6YE5PUk1BTElaRV9XSElURVNQQUNFYCBvcHRpb24gb3IgZGlyZWN0aXZlIGlzIGluIGVmZmVjdC4KKyAgOmNvbnN0OmBOT1JNQUxJWkVfV0hJVEVTUEFDRWAgb3B0aW9uIG9yIDpyZWY6YGRpcmVjdGl2ZSA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAKKyAgaXMgaW4gZWZmZWN0LgogICBBbHRlcm5hdGl2ZWx5LCB0aGUgdGVzdCBjYW4gYmUgcmV3cml0dGVuIHRvIGNhcHR1cmUgdGhlIG91dHB1dCBhbmQgY29tcGFyZSBpdAogICB0byBhbiBleHBlY3RlZCB2YWx1ZSBhcyBwYXJ0IG9mIHRoZSB0ZXN0LiAgVGhpcyBoYW5kbGluZyBvZiB0YWJzIGluIHRoZQogICBzb3VyY2Ugd2FzIGFycml2ZWQgYXQgdGhyb3VnaCB0cmlhbCBhbmQgZXJyb3IsIGFuZCBoYXMgcHJvdmVuIHRvIGJlIHRoZSBsZWFzdApAQCAtNDg1LDE1ICs0ODYsMTYgQEAKICAgICAgU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4CiAKIAorLi4gX29wdGlvbi1mbGFncy1hbmQtZGlyZWN0aXZlczoKIC4uIF9kb2N0ZXN0LW9wdGlvbnM6CiAKLU9wdGlvbiBGbGFncyBhbmQgRGlyZWN0aXZlcwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCitPcHRpb24gRmxhZ3MKK15eXl5eXl5eXl5eXgogCiBBIG51bWJlciBvZiBvcHRpb24gZmxhZ3MgY29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgZG9jdGVzdCdzIGJlaGF2aW9yLgogU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFncyBhcmUgc3VwcGxpZWQgYXMgbW9kdWxlIGNvbnN0YW50cywgd2hpY2ggY2FuIGJlCiBvcidlZCB0b2dldGhlciBhbmQgcGFzc2VkIHRvIHZhcmlvdXMgZnVuY3Rpb25zLiAgVGhlIG5hbWVzIGNhbiBhbHNvIGJlIHVzZWQgaW4KLWRvY3Rlc3QgZGlyZWN0aXZlcyAoc2VlIGJlbG93KS4KKzpyZWY6YGRvY3Rlc3QgZGlyZWN0aXZlcyA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAuCiAKIFRoZSBmaXJzdCBncm91cCBvZiBvcHRpb25zIGRlZmluZSB0ZXN0IHNlbWFudGljcywgY29udHJvbGxpbmcgYXNwZWN0cyBvZiBob3cKIGRvY3Rlc3QgZGVjaWRlcyB3aGV0aGVyIGFjdHVhbCBvdXRwdXQgbWF0Y2hlcyBhbiBleGFtcGxlJ3MgZXhwZWN0ZWQgb3V0cHV0OgpAQCAtNTQ3LDE0ICs1NDksMTQgQEAKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJdCB3aWxsIGFsc28gaWdub3JlIHRoZSBtb2R1bGUgbmFtZSB1c2VkIGluIFB5dGhvbiAzIGRvY3Rlc3QgcmVwb3J0cy4gSGVuY2UKLSAgIGJvdGggdGhlc2UgdmFyaWF0aW9ucyB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB0ZXN0IGlzIHJ1biB1bmRlcgotICAgUHl0aG9uIDIuNyBvciBQeXRob24gMy4yIChvciBsYXRlciB2ZXJzaW9ucyk6CisgICBib3RoIG9mIHRoZXNlIHZhcmlhdGlvbnMgd2lsbCB3b3JrIHdpdGggdGhlIGZsYWcgc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mCisgICB3aGV0aGVyIHRoZSB0ZXN0IGlzIHJ1biB1bmRlciBQeXRob24gMi43IG9yIFB5dGhvbiAzLjIgKG9yIGxhdGVyIHZlcnNpb25zKTo6CiAKLSAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpICNkb2N0ZXN0OiArSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwKKyAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICBDdXN0b21FcnJvcjogbWVzc2FnZQogCi0gICAgICA+Pj4gcmFpc2UgQ3VzdG9tRXJyb3IoJ21lc3NhZ2UnKSAjZG9jdGVzdDogK0lHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICA+Pj4gcmFpc2UgQ3VzdG9tRXJyb3IoJ21lc3NhZ2UnKQogICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgbXlfbW9kdWxlLkN1c3RvbUVycm9yOiBtZXNzYWdlCiAKQEAgLTU2NCwxNSArNTY2LDE2IEBACiAgICBleGNlcHRpb24gbmFtZS4gVXNpbmcgOmNvbnN0OmBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTGAgYW5kIHRoZSBkZXRhaWxzCiAgICBmcm9tIFB5dGhvbiAyLjMgaXMgYWxzbyB0aGUgb25seSBjbGVhciB3YXkgdG8gd3JpdGUgYSBkb2N0ZXN0IHRoYXQgZG9lc24ndAogICAgY2FyZSBhYm91dCB0aGUgZXhjZXB0aW9uIGRldGFpbCB5ZXQgY29udGludWVzIHRvIHBhc3MgdW5kZXIgUHl0aG9uIDIuMyBvcgotICAgZWFybGllciAodGhvc2UgcmVsZWFzZXMgZG8gbm90IHN1cHBvcnQgZG9jdGVzdCBkaXJlY3RpdmVzIGFuZCBpZ25vcmUgdGhlbQotICAgYXMgaXJyZWxldmFudCBjb21tZW50cykuIEZvciBleGFtcGxlLCA6OgorICAgZWFybGllciAodGhvc2UgcmVsZWFzZXMgZG8gbm90IHN1cHBvcnQgOnJlZjpgZG9jdGVzdCBkaXJlY3RpdmVzCisgICA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAgYW5kIGlnbm9yZSB0aGVtIGFzIGlycmVsZXZhbnQgY29tbWVudHMpLiBGb3IgZXhhbXBsZTo6CiAKLSAgICAgID4+PiAoMSwgMilbM10gPSAnbW9vJyAjZG9jdGVzdDogK0lHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICA+Pj4gKDEsIDIpWzNdID0gJ21vbycKICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwogICAgICAgVHlwZUVycm9yOiBvYmplY3QgZG9lc24ndCBzdXBwb3J0IGl0ZW0gYXNzaWdubWVudAogCi0gICBwYXNzZXMgdW5kZXIgUHl0aG9uIDIuMyBhbmQgbGF0ZXIgUHl0aG9uIHZlcnNpb25zLCBldmVuIHRob3VnaCB0aGUgZGV0YWlsCisgICBwYXNzZXMgdW5kZXIgUHl0aG9uIDIuMyBhbmQgbGF0ZXIgUHl0aG9uIHZlcnNpb25zIHdpdGggdGhlIGZsYWcgc3BlY2lmaWVkLAorICAgZXZlbiB0aG91Z2ggdGhlIGRldGFpbAogICAgY2hhbmdlZCBpbiBQeXRob24gMi40IHRvIHNheSAiZG9lcyBub3QiIGluc3RlYWQgb2YgImRvZXNuJ3QiLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpAQCAtNjM0LDkgKzYzNywzMCBAQAogCiAgICBBIGJpdG1hc2sgb3InaW5nIHRvZ2V0aGVyIGFsbCB0aGUgcmVwb3J0aW5nIGZsYWdzIGFib3ZlLgogCi0iRG9jdGVzdCBkaXJlY3RpdmVzIiBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhlIG9wdGlvbiBmbGFncyBmb3IgaW5kaXZpZHVhbAotZXhhbXBsZXMuICBEb2N0ZXN0IGRpcmVjdGl2ZXMgYXJlIGV4cHJlc3NlZCBhcyBhIHNwZWNpYWwgUHl0aG9uIGNvbW1lbnQKLWZvbGxvd2luZyBhbiBleGFtcGxlJ3Mgc291cmNlIGNvZGU6CisKK1RoZXJlIGlzIGFsc28gYSB3YXkgdG8gcmVnaXN0ZXIgbmV3IG9wdGlvbiBmbGFnIG5hbWVzLCB0aG91Z2ggdGhpcyBpc24ndAordXNlZnVsIHVubGVzcyB5b3UgaW50ZW5kIHRvIGV4dGVuZCA6bW9kOmBkb2N0ZXN0YCBpbnRlcm5hbHMgdmlhIHN1YmNsYXNzaW5nOgorCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfb3B0aW9uZmxhZyhuYW1lKQorCisgICBDcmVhdGUgYSBuZXcgb3B0aW9uIGZsYWcgd2l0aCBhIGdpdmVuIG5hbWUsIGFuZCByZXR1cm4gdGhlIG5ldyBmbGFnJ3MgaW50ZWdlcgorICAgdmFsdWUuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2AgY2FuIGJlIHVzZWQgd2hlbiBzdWJjbGFzc2luZworICAgOmNsYXNzOmBPdXRwdXRDaGVja2VyYCBvciA6Y2xhc3M6YERvY1Rlc3RSdW5uZXJgIHRvIGNyZWF0ZSBuZXcgb3B0aW9ucyB0aGF0IGFyZQorICAgc3VwcG9ydGVkIGJ5IHlvdXIgc3ViY2xhc3Nlcy4gIDpmdW5jOmByZWdpc3Rlcl9vcHRpb25mbGFnYCBzaG91bGQgYWx3YXlzIGJlCisgICBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBpZGlvbTo6CisKKyAgICAgIE1ZX0ZMQUcgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdNWV9GTEFHJykKKworCisuLiBfZG9jdGVzdC1kaXJlY3RpdmVzOgorCitEaXJlY3RpdmVzCiteXl5eXl5eXl5eCisKK0RvY3Rlc3QgZGlyZWN0aXZlcyBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhlIDpyZWY6YG9wdGlvbiBmbGFncworPGRvY3Rlc3Qtb3B0aW9ucz5gIGZvciBhbiBpbmRpdmlkdWFsIGV4YW1wbGUuICBEb2N0ZXN0IGRpcmVjdGl2ZXMgYXJlCitzcGVjaWFsIFB5dGhvbiBjb21tZW50cyBmb2xsb3dpbmcgYW4gZXhhbXBsZSdzIHNvdXJjZSBjb2RlOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IGRvY3Rlc3QKICAgIGRpcmVjdGl2ZTogIiMiICJkb2N0ZXN0OiIgYGRpcmVjdGl2ZV9vcHRpb25zYApAQCAtNjkzLDIwICs3MTcsNiBAQAogZnVuY3Rpb25zIHRoYXQgcnVuIGRvY3Rlc3RzLCBlc3RhYmxpc2hpbmcgZGlmZmVyZW50IGRlZmF1bHRzLiAgSW4gc3VjaCBjYXNlcywKIGRpc2FibGluZyBhbiBvcHRpb24gdmlhIGBgLWBgIGluIGEgZGlyZWN0aXZlIGNhbiBiZSB1c2VmdWwuCiAKLVRoZXJlJ3MgYWxzbyBhIHdheSB0byByZWdpc3RlciBuZXcgb3B0aW9uIGZsYWcgbmFtZXMsIGFsdGhvdWdoIHRoaXMgaXNuJ3QgdXNlZnVsCi11bmxlc3MgeW91IGludGVuZCB0byBleHRlbmQgOm1vZDpgZG9jdGVzdGAgaW50ZXJuYWxzIHZpYSBzdWJjbGFzc2luZzoKLQotCi0uLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX29wdGlvbmZsYWcobmFtZSkKLQotICAgQ3JlYXRlIGEgbmV3IG9wdGlvbiBmbGFnIHdpdGggYSBnaXZlbiBuYW1lLCBhbmQgcmV0dXJuIHRoZSBuZXcgZmxhZydzIGludGVnZXIKLSAgIHZhbHVlLiAgOmZ1bmM6YHJlZ2lzdGVyX29wdGlvbmZsYWdgIGNhbiBiZSB1c2VkIHdoZW4gc3ViY2xhc3NpbmcKLSAgIDpjbGFzczpgT3V0cHV0Q2hlY2tlcmAgb3IgOmNsYXNzOmBEb2NUZXN0UnVubmVyYCB0byBjcmVhdGUgbmV3IG9wdGlvbnMgdGhhdCBhcmUKLSAgIHN1cHBvcnRlZCBieSB5b3VyIHN1YmNsYXNzZXMuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2Agc2hvdWxkIGFsd2F5cyBiZQotICAgY2FsbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgaWRpb206OgotCi0gICAgICBNWV9GTEFHID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnTVlfRkxBRycpCi0KIAogLi4gX2RvY3Rlc3Qtd2FybmluZ3M6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IGQ4ZjMzMGYuLjlmMGE5ZTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtNzMsMTcgKzczLDM4IEBACiAqIDpjbGFzczpgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0YCAtLSBUaGUgc3RhcnQgYm91bmRhcnkgY2xhaW1lZCBpbiB0aGUKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHdhcyBuZXZlciBmb3VuZC4KIAorKiA6Y2xhc3M6YENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdGAgLS0gQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dAorICBubyBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5IHdhcyBldmVyIGZvdW5kLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAqIDpjbGFzczpgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RgIC0tIFRoZSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbgogICBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4KIAogKiA6Y2xhc3M6YE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0YCAtIEEgIlVuaXggRnJvbSIgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUKICAgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLgogCisqIDpjbGFzczpgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RgIC0gQSBsaW5lIHdhcyBmb3VuZCB3aGlsZSBwYXJzaW5nCisgIGhlYWRlcnMgdGhhdCBoYWQgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBidXQgY29udGFpbmVkIG5vICc6Jy4gIFBhcnNpbmcKKyAgY29udGludWVzIGFzc3VtaW5nIHRoYXQgdGhlIGxpbmUgcmVwcmVzZW50cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYm9keS4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogKiA6Y2xhc3M6YE1hbGZvcm1lZEhlYWRlckRlZmVjdGAgLS0gQSBoZWFkZXIgd2FzIGZvdW5kIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwKICAgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuCiAKKyAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICBUaGlzIGRlZmVjdCBoYXMgbm90IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBQeXRob24gdmVyc2lvbnMuCisKICogOmNsYXNzOmBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEKICAgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4gIE5vdGUgdGhhdCB3aGVuIGEgbWVzc2FnZSBoYXMKICAgdGhpcyBkZWZlY3QsIGl0cyA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBmYWxzZSBldmVuIHRob3VnaCBpdHMKICAgY29udGVudCB0eXBlIGNsYWltcyB0byBiZSA6bWltZXR5cGU6YG11bHRpcGFydGAuCiAKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCB0aGUgcGFkZGluZyB3YXMgbm90IGNvcnJlY3QuICBFbm91Z2ggcGFkZGluZyBpcyBhZGRlZCB0bworICBwZXJmb3JtIHRoZSBkZWNvZGUsIGJ1dCB0aGUgcmVzdWx0aW5nIGRlY29kZWQgYnl0ZXMgbWF5IGJlIGludmFsaWQuCisKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NCBhbHBoZWJldCB3ZXJlIGVuY291bnRlcmVkLgorICBUaGUgY2hhcmFjdGVycyBhcmUgaWdub3JlZCwgYnV0IHRoZSByZXN1bHRpbmcgZGVjb2RlZCBieXRlcyBtYXkgYmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IDg4YzYyYTIuLmMxNzJhY2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtMzIsNyArMzIsNyBAQAogOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCkBAIC01MywxMCArNTMsMTcgQEAKICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgogCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAorICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKKyAgIGlzIHVzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKIAogCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9J1xcbicpCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKICAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCkBAIC03MiwxOSArNzksMjAgQEAKICAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCiAKICAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIEl0IGRlZmF1bHRzIHRvIGBgXG5gYCBiZWNhdXNlIHRoYXQgaXMKLSAgICAgIHRoZSBtb3N0IHVzZWZ1bCB2YWx1ZSBmb3IgUHl0aG9uIGFwcGxpY2F0aW9uIGNvZGUgKG90aGVyIGxpYnJhcnkgcGFja2FnZXMKLSAgICAgIGV4cGVjdCBgYFxuYGAgc2VwYXJhdGVkIGxpbmVzKS4gIGBgbGluZXNlcD1cclxuYGAgY2FuIGJlIHVzZWQgdG8KLSAgICAgIGdlbmVyYXRlIG91dHB1dCB3aXRoIFJGQy1jb21wbGlhbnQgbGluZSBzZXBhcmF0b3JzLgorICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQorICAgICAgc3BlY2lmaWVkIGJ5IHRoZSAqbXNnKlwncyBvciBgYEdlbmVyYXRvcmBgXCdzIGBgcG9saWN5YGAuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhCi0gICAgICB1c2UgYSA3Yml0IENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlIGhlYWRlcnMKLSAgICAgIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KKyAgICAgIEJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcywgaWYgdGhlIHBvbGljeSB0aGF0CisgICAgICBhcHBsaWVzIHdoZW4gYGBmbGF0dGVuYGAgaXMgcnVuIGhhcyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBzZXQgdG8gYGA4Yml0YGAsIGBgR2VuZXJhdG9yYGAgd2lsbCBvcGVyYXRlIGFzIGlmIGl0IHdlcmUgc2V0IHRvCisgICAgICBgYDdiaXRgYC4gIFRoaXMgbWVhbnMgdGhhdCBtZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUKKyAgICAgIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHdpbGwgYmUgY29udmVydGVkCisgICAgICB0byBhIHVzZSBhIGBgN2JpdGBgIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlCisgICAgICBoZWFkZXJzIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgYHVua25vd24tOGJpdGBgLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgOGJpdCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZSAqbGluZXNlcCoKLSAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKQEAgLTEwMyw3ICsxMTEsOCBAQAogZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKIDptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0uLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4KQorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgYmluYXJ5CiAgICA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0CkBAIC0xMjUsMTkgKzEzNCwzMSBAQAogICAgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5CiAgICA6cmZjOmAyODIyYC4KIAorICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQorICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeQorICAgbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgogCiAKLSAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD0nXG4nKQorICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCiAKICAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCiAgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgCiAgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0IHdpbGwgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLiAgSWYgdGhlIGlucHV0IHRoYXQgY3JlYXRlZCB0aGUgKm1zZyoKLSAgICAgIGNvbnRhaW5lZCBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYW5kIHRob3NlIGJ5dGVzIGhhdmUgbm90IGJlZW4KLSAgICAgIG1vZGlmaWVkLCB0aGV5IHdpbGwgYmUgY29waWVkIGZhaXRoZnVsbHkgdG8gdGhlIG91dHB1dCwgZXZlbiBpZiBkb2luZyBzbwotICAgICAgaXMgbm90IHN0cmljdGx5IFJGQyBjb21wbGlhbnQuICAoVG8gcHJvZHVjZSBzdHJpY3RseSBSRkMgY29tcGxpYW50Ci0gICAgICBvdXRwdXQsIHVzZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLikKKyAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCisgICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKKyAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKKyAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAorICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKKyAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQorICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGEgY29tcGxlbWVudGFyeSBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQworICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCiAgICAgICBNZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUgYQogICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQgd2lsbCBiZSByZWNvbnN0cnVjdGVkCkBAIC0xNTIsMTAgKzE3Myw4IEBACiAgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgogCiAgICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJdCBkZWZhdWx0cyB0byBgYFxuYGAgYmVjYXVzZSB0aGF0IGlzCi0gICAgICB0aGUgbW9zdCB1c2VmdWwgdmFsdWUgZm9yIFB5dGhvbiBhcHBsaWNhdGlvbiBjb2RlIChvdGhlciBsaWJyYXJ5IHBhY2thZ2VzCi0gICAgICBleHBlY3QgYGBcbmBgIHNlcGFyYXRlZCBsaW5lcykuICBgYGxpbmVzZXA9XHJcbmBgIGNhbiBiZSB1c2VkIHRvCi0gICAgICBnZW5lcmF0ZSBvdXRwdXQgd2l0aCBSRkMtY29tcGxpYW50IGxpbmUgc2VwYXJhdG9ycy4KKyAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKKyAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgJ3MgYGBwb2xpY3lgYC4KIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CmluZGV4IDdkMmRjMmUuLjM0NmQyM2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdApAQCAtMzEsOCArMzEsOCBAQAogICAgPj4+IG1zZyA9IE1lc3NhZ2UoKQogICAgPj4+IGggPSBIZWFkZXIoJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJykKICAgID4+PiBtc2dbJ1N1YmplY3QnXSA9IGgKLSAgID4+PiBwcmludChtc2cuYXNfc3RyaW5nKCkpCi0gICBTdWJqZWN0OiA9P2lzby04ODU5LTE/cT9wPUY2c3RhbD89CisgICA+Pj4gbXNnLmFzX3N0cmluZygpCisgICAnU3ViamVjdDogPT9pc28tODg1OS0xP3E/cD1GNnN0YWw/PVxuXG4nCiAKIAogCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogICAgICAgPj4+IGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBkZWNvZGVfaGVhZGVyCiAgICAgICA+Pj4gZGVjb2RlX2hlYWRlcignPT9pc28tODg1OS0xP3E/cD1GNnN0YWw/PScpCi0gICAgICBbKCdwXHhmNnN0YWwnLCAnaXNvLTg4NTktMScpXQorICAgICAgWyhiJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJyldCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX2hlYWRlcihkZWNvZGVkX3NlcSwgbWF4bGluZWxlbj1Ob25lLCBoZWFkZXJfbmFtZT1Ob25lLCBjb250aW51YXRpb25fd3M9JyAnKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ODQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKQEAgLTAsMCArMSw0NTIgQEAKKzptb2Q6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5YDogQ3VzdG9tIEhlYWRlciBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5oZWFkZXJyZWdpc3RyeQorICAgOnN5bm9wc2lzOiBBdXRvbWF0aWMgUGFyc2luZyBvZiBoZWFkZXJzIGJhc2VkIG9uIHRoZSBmaWVsZCBuYW1lCisKKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorCisKKy4uIG5vdGU6OgorCisgICBUaGUgaGVhZGVycmVnaXN0cnkgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKKyAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCisgICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAorICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCisKK0hlYWRlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IGN1c3RvbWl6ZWQgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHN0cmAuICBUaGUKK3BhcnRpY3VsYXIgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYSBnaXZlbiBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUKKzphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBvZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgaW4KK2VmZmVjdCB3aGVuIHRoZSBoZWFkZXJzIGFyZSBjcmVhdGVkLiAgVGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgcGFydGljdWxhcgorYGBoZWFkZXJfZmFjdG9yeWBgIGltcGxlbWVudGVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGZvciBoYW5kbGluZyA6UkZDOmA1MzIyYAorY29tcGxpYW50IGVtYWlsIG1lc3NhZ2VzLCB3aGljaCBub3Qgb25seSBwcm92aWRlcyBjdXN0b21pemVkIGhlYWRlciBvYmplY3RzIGZvcgordmFyaW91cyBoZWFkZXIgdHlwZXMsIGJ1dCBhbHNvIHByb3ZpZGVzIGFuIGV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIGFwcGxpY2F0aW9ucwordG8gYWRkIHRoZWlyIG93biBjdXN0b20gaGVhZGVyIHR5cGVzLgorCitXaGVuIHVzaW5nIGFueSBvZiB0aGUgcG9saWN5IG9iamVjdHMgZGVyaXZlZCBmcm9tCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAsIGFsbCBoZWFkZXJzIGFyZSBwcm9kdWNlZCBieQorOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgIGFuZCBoYXZlIDpjbGFzczpgLkJhc2VIZWFkZXJgIGFzIHRoZWlyIGxhc3QgYmFzZQorY2xhc3MuICBFYWNoIGhlYWRlciBjbGFzcyBoYXMgYW4gYWRkaXRpb25hbCBiYXNlIGNsYXNzIHRoYXQgaXMgZGV0ZXJtaW5lZCBieQordGhlIHR5cGUgb2YgdGhlIGhlYWRlci4gIEZvciBleGFtcGxlLCBtYW55IGhlYWRlcnMgaGF2ZSB0aGUgY2xhc3MKKzpjbGFzczpgLlVuc3RydWN0dXJlZEhlYWRlcmAgYXMgdGhlaXIgb3RoZXIgYmFzZSBjbGFzcy4gIFRoZSBzcGVjaWFsaXplZCBzZWNvbmQKK2NsYXNzIGZvciBhIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIsIHVzaW5nIGEgbG9va3VwCit0YWJsZSBzdG9yZWQgaW4gdGhlIDpjbGFzczpgLkhlYWRlclJlZ2lzdHJ5YC4gIEFsbCBvZiB0aGlzIGlzIG1hbmFnZWQKK3RyYW5zcGFyZW50bHkgZm9yIHRoZSB0eXBpY2FsIGFwcGxpY2F0aW9uIHByb2dyYW0sIGJ1dCBpbnRlcmZhY2VzIGFyZSBwcm92aWRlZAorZm9yIG1vZGlmeWluZyB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdXNlIGJ5IG1vcmUgY29tcGxleCBhcHBsaWNhdGlvbnMuCisKK1RoZSBzZWN0aW9ucyBiZWxvdyBmaXJzdCBkb2N1bWVudCB0aGUgaGVhZGVyIGJhc2UgY2xhc3NlcyBhbmQgdGhlaXIgYXR0cmlidXRlcywKK2ZvbGxvd2VkIGJ5IHRoZSBBUEkgZm9yIG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igb2YgOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgLCBhbmQKK2ZpbmFsbHkgdGhlIHN1cHBvcnQgY2xhc3NlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBwYXJzZWQgZnJvbSBzdHJ1Y3R1cmVkCitoZWFkZXJzLgorCisKKy4uIGNsYXNzOjogQmFzZUhlYWRlcihuYW1lLCB2YWx1ZSkKKworICAgKm5hbWUqIGFuZCAqdmFsdWUqIGFyZSBwYXNzZWQgdG8gYGBCYXNlSGVhZGVyYGAgZnJvbSB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBjYWxsLiAgVGhlIHN0cmluZyB2YWx1ZSBvZgorICAgYW55IGhlYWRlciBvYmplY3QgaXMgdGhlICp2YWx1ZSogZnVsbHkgZGVjb2RlZCB0byB1bmljb2RlLgorCisgICBUaGlzIGJhc2UgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHJlYWQtb25seSBwcm9wZXJ0aWVzOgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciAodGhlIHBvcnRpb24gb2YgdGhlIGZpZWxkIGJlZm9yZSB0aGUgJzonKS4gIFRoaXMKKyAgICAgIGlzIGV4YWN0bHkgdGhlIHZhbHVlIHBhc3NlZCBpbiB0aGUgOmF0dHI6YH5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAKKyAgICAgIGNhbGwgZm9yICpuYW1lKjsgdGhhdCBpcywgY2FzZSBpcyBwcmVzZXJ2ZWQuCisKKworICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cworCisgICAgICBBIHR1cGxlIG9mIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyRGVmZWN0YCBpbnN0YW5jZXMgcmVwb3J0aW5nIGFueQorICAgICAgUkZDIGNvbXBsaWFuY2UgcHJvYmxlbXMgZm91bmQgZHVyaW5nIHBhcnNpbmcuICBUaGUgZW1haWwgcGFja2FnZSB0cmllcyB0bworICAgICAgYmUgY29tcGxldGUgYWJvdXQgZGV0ZWN0aW5nIGNvbXBsaWFuY2UgaXNzdWVzLiAgU2VlIHRoZSA6bW9kOmBlcnJvcnNgCisgICAgICBtb2R1bGUgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUgdHlwZXMgb2YgZGVmZWN0cyB0aGF0IG1heSBiZSByZXBvcnRlZC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfY291bnQKKworICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhlYWRlcnMgb2YgdGhpcyB0eXBlIHRoYXQgY2FuIGhhdmUgdGhlIHNhbWUKKyAgICAgIGBgbmFtZWBgLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB1bmxpbWl0ZWQuICBUaGUgYGBCYXNlSGVhZGVyYGAgdmFsdWUKKyAgICAgIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYDsgaXQgaXMgZXhwZWN0ZWQgdGhhdCBzcGVjaWFsaXplZCBoZWFkZXIKKyAgICAgIGNsYXNzZXMgd2lsbCBvdmVycmlkZSB0aGlzIHZhbHVlIGFzIG5lZWRlZC4KKworICAgYGBCYXNlSGVhZGVyYGAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZCwgd2hpY2ggaXMgY2FsbGVkIGJ5IHRoZQorICAgZW1haWwgbGlicmFyeSBjb2RlIGFuZCBzaG91bGQgbm90IGluIGdlbmVyYWwgYmUgY2FsbGVkIGJ5IGFwcGxpY2F0aW9uCisgICBwcm9ncmFtczoKKworICAgLi4gbWV0aG9kOjogZm9sZCgqLCBwb2xpY3kpCisKKyAgICAgIFJldHVybiBhIHN0cmluZyBjb250YWluaW5nIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5saW5lc2VwYAorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZworICAgICAgdG8gKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YKKyAgICAgIGBgOGJpdGBgIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBzdHJpbmdzCisgICAgICBtYXkgbm90IGNvbnRhaW4gYmluYXJ5IGRhdGEuCisKKworICAgYGBCYXNlSGVhZGVyYGAgYnkgaXRzZWxmIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBvYmplY3QuICBJdAorICAgZGVmaW5lcyBhIHByb3RvY29sIHRoYXQgZWFjaCBzcGVjaWFsaXplZCBoZWFkZXIgY29vcGVyYXRlcyB3aXRoIGluIG9yZGVyIHRvCisgICBwcm9kdWNlIHRoZSBoZWFkZXIgb2JqZWN0LiAgU3BlY2lmaWNhbGx5LCBgYEJhc2VIZWFkZXJgYCByZXF1aXJlcyB0aGF0CisgICB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgcHJvdmlkZSBhIDpmdW5jOmBjbGFzc21ldGhvZGAgbmFtZWQgYGBwYXJzZWBgLiAgVGhpcworICAgbWV0aG9kIGlzIGNhbGxlZCBhcyBmb2xsb3dzOjoKKworICAgICAgIHBhcnNlKHN0cmluZywga3dkcykKKworICAgYGBrd2RzYGAgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgb25lIHByZS1pbml0aWFsaXplZCBrZXksIGBgZGVmZWN0c2BgLgorICAgYGBkZWZlY3RzYGAgaXMgYW4gZW1wdHkgbGlzdC4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFwcGVuZCBhbnkgZGV0ZWN0ZWQKKyAgIGRlZmVjdHMgdG8gdGhpcyBsaXN0LiAgT24gcmV0dXJuLCB0aGUgYGBrd2RzYGAgZGljdGlvbmFyeSAqbXVzdCogY29udGFpbgorICAgdmFsdWVzIGZvciBhdCBsZWFzdCB0aGUga2V5cyBgYGRlY29kZWRgYCBhbmQgYGBkZWZlY3RzYGAuICBgYGRlY29kZWRgYAorICAgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBoZWFkZXIgKHRoYXQgaXMsIHRoZSBoZWFkZXIgdmFsdWUgZnVsbHkKKyAgIGRlY29kZWQgdG8gdW5pY29kZSkuICBUaGUgcGFyc2UgbWV0aG9kIHNob3VsZCBhc3N1bWUgdGhhdCAqc3RyaW5nKiBtYXkKKyAgIGNvbnRhaW4gdHJhbnNwb3J0IGVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKKyAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KKworICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cworICAgYGBpbml0YGAgbWV0aG9kLiAgVGhlIHNwZWNpYWxpemVkIGNsYXNzIG9ubHkgbmVlZHMgdG8gcHJvdmlkZSBhbiBgYGluaXRgYAorICAgbWV0aG9kIGlmIGl0IHdpc2hlcyB0byBzZXQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGJleW9uZCB0aG9zZSBwcm92aWRlZCBieQorICAgYGBCYXNlSGVhZGVyYGAgaXRzZWxmLiAgU3VjaCBhbiBgYGluaXRgYCBtZXRob2Qgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOjoKKworICAgICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgc2VsZi5fbXlhdHRyID0ga3cucG9wKCdteWF0dHInKQorICAgICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgIFRoYXQgaXMsIGFueXRoaW5nIGV4dHJhIHRoYXQgdGhlIHNwZWNpYWxpemVkIGNsYXNzIHB1dHMgaW4gdG8gdGhlIGBga3dkc2BgCisgICBkaWN0aW9uYXJ5IHNob3VsZCBiZSByZW1vdmVkIGFuZCBoYW5kbGVkLCBhbmQgdGhlIHJlbWFpbmluZyBjb250ZW50cyBvZgorICAgYGBrd2BgIChhbmQgYGBhcmdzYGApIHBhc3NlZCB0byB0aGUgYGBCYXNlSGVhZGVyYGAgYGBpbml0YGAgbWV0aG9kLgorCisKKy4uIGNsYXNzOjogVW5zdHJ1Y3R1cmVkSGVhZGVyCisKKyAgIEFuICJ1bnN0cnVjdHVyZWQiIGhlYWRlciBpcyB0aGUgZGVmYXVsdCB0eXBlIG9mIGhlYWRlciBpbiA6cmZjOmA1MzIyYC4KKyAgIEFueSBoZWFkZXIgdGhhdCBkb2VzIG5vdCBoYXZlIGEgc3BlY2lmaWVkIHN5bnRheCBpcyB0cmVhdGVkIGFzCisgICB1bnN0cnVjdHVyZWQuICBUaGUgY2xhc3NpYyBleGFtcGxlIG9mIGFuIHVuc3RydWN0dXJlZCBoZWFkZXIgaXMgdGhlCisgICA6bWFpbGhlYWRlcjpgU3ViamVjdGAgaGVhZGVyLgorCisgICBJbiA6cmZjOmA1MzIyYCwgYW4gdW5zdHJ1Y3R1cmVkIGhlYWRlciBpcyBhIHJ1biBvZiBhcmJpdHJhcnkgdGV4dCBpbiB0aGUKKyAgIEFTQ0lJIGNoYXJhY3RlciBzZXQuICA6cmZjOmAyMDQ3YCwgaG93ZXZlciwgaGFzIGFuIDpyZmM6YDUzMjJgIGNvbXBhdGlibGUKKyAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKKyAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKKyAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCisgICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgorICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCisgICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKKyAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKKyAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIG5vIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KKworCisuLiBjbGFzczo6IERhdGVIZWFkZXIKKworICAgOnJmYzpgNTMyMmAgc3BlY2lmaWVzIGEgdmVyeSBzcGVjaWZpYyBmb3JtYXQgZm9yIGRhdGVzIHdpdGhpbiBlbWFpbCBoZWFkZXJzLgorICAgVGhlIGBgRGF0ZUhlYWRlcmBgIHBhcnNlciByZWNvZ25pemVzIHRoYXQgZGF0ZSBmb3JtYXQsIGFzIHdlbGwgYXMKKyAgIHJlY29nbml6aW5nIGEgbnVtYmVyIG9mIHZhcmlhbnQgZm9ybXMgdGhhdCBhcmUgc29tZXRpbWVzIGZvdW5kICJpbiB0aGUKKyAgIHdpbGQiLgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiBkYXRldGltZQorCisgICAgICBJZiB0aGUgaGVhZGVyIHZhbHVlIGNhbiBiZSByZWNvZ25pemVkIGFzIGEgdmFsaWQgZGF0ZSBvZiBvbmUgZm9ybSBvcgorICAgICAgYW5vdGhlciwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250YWluIGEgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgCisgICAgICBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhhdCBkYXRlLiAgSWYgdGhlIHRpbWV6b25lIG9mIHRoZSBpbnB1dCBkYXRlIGlzCisgICAgICBzcGVjaWZpZWQgYXMgYGAtMDAwMGBgIChpbmRpY2F0aW5nIGl0IGlzIGluIFVUQyBidXQgY29udGFpbnMgbm8KKyAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2UgdGltZXpvbmUpLCB0aGVuIDphdHRyOmAuZGF0ZXRpbWVgIHdpbGwgYmUgYQorICAgICAgbmFpdmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgLiAgSWYgYSBzcGVjaWZpYyB0aW1lem9uZSBvZmZzZXQgaXMKKyAgICAgIGZvdW5kIChpbmNsdWRpbmcgYCswMDAwYCksIHRoZW4gOmF0dHI6YC5kYXRldGltZWAgd2lsbCBjb250YWluIGFuIGF3YXJlCisgICAgICBgYGRhdGV0aW1lYGAgdGhhdCB1c2VzIDpjbGFzczpgZGF0ZXRpbWUudGltZXpvbmVgIHRvIHJlY29yZCB0aGUgdGltZXpvbmUKKyAgICAgIG9mZnNldC4KKworICAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSBmb3JtYXR0aW5nIHRoZQorICAgYGBkYXRldGltZWBgIGFjY29yZGluZyB0byB0aGUgOnJmYzpgNTMyMmAgcnVsZXM7IHRoYXQgaXMsIGl0IGlzIHNldCB0bzo6CisKKyAgICAgICBlbWFpbC51dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5kYXRldGltZSkKKworICAgV2hlbiBjcmVhdGluZyBhIGBgRGF0ZUhlYWRlcmBgLCAqdmFsdWUqIG1heSBiZQorICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLiAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQKKyAgIHRoZSBmb2xsb3dpbmcgY29kZSBpcyB2YWxpZCBhbmQgZG9lcyB3aGF0IG9uZSB3b3VsZCBleHBlY3Q6OgorCisgICAgICAgbXNnWydEYXRlJ10gID0gZGF0ZXRpbWUoMjAxMSwgNywgMTUsIDIxKQorCisgICBCZWNhdXNlIHRoaXMgaXMgYSBuYWl2ZSBgYGRhdGV0aW1lYGAgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIFVUQworICAgdGltZXN0YW1wLCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSB3aWxsIGhhdmUgYSB0aW1lem9uZSBvZiBgYC0wMDAwYGAuICBNdWNoCisgICBtb3JlIHVzZWZ1bCBpcyB0byB1c2UgdGhlIDpmdW5jOmB+ZW1haWwudXRpbHMubG9jYWx0aW1lYCBmdW5jdGlvbiBmcm9tIHRoZQorICAgOm1vZDpgfmVtYWlsLnV0aWxzYCBtb2R1bGU6OgorCisgICAgICAgbXNnWydEYXRlJ10gPSB1dGlscy5sb2NhbHRpbWUoKQorCisgICBUaGlzIGV4YW1wbGUgc2V0cyB0aGUgZGF0ZSBoZWFkZXIgdG8gdGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSB1c2luZworICAgdGhlIGN1cnJlbnQgdGltZXpvbmUgb2Zmc2V0LgorCisKKy4uIGNsYXNzOjogQWRkcmVzc0hlYWRlcgorCisgICBBZGRyZXNzIGhlYWRlcnMgYXJlIG9uZSBvZiB0aGUgbW9zdCBjb21wbGV4IHN0cnVjdHVyZWQgaGVhZGVyIHR5cGVzLgorICAgVGhlIGBgQWRkcmVzc0hlYWRlcmBgIGNsYXNzIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gYW55IGFkZHJlc3MKKyAgIGhlYWRlci4KKworICAgVGhpcyBoZWFkZXIgdHlwZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBncm91cHMKKworICAgICAgQSB0dXBsZSBvZiA6Y2xhc3M6YC5Hcm91cGAgb2JqZWN0cyBlbmNvZGluZyB0aGUKKyAgICAgIGFkZHJlc3NlcyBhbmQgZ3JvdXBzIGZvdW5kIGluIHRoZSBoZWFkZXIgdmFsdWUuICBBZGRyZXNzZXMgdGhhdCBhcmUKKyAgICAgIG5vdCBwYXJ0IG9mIGEgZ3JvdXAgYXJlIHJlcHJlc2VudGVkIGluIHRoaXMgbGlzdCBhcyBzaW5nbGUtYWRkcmVzcworICAgICAgYGBHcm91cHNgYCB3aG9zZSA6YXR0cjpgfi5Hcm91cC5kaXNwbGF5X25hbWVgIGlzIGBgTm9uZWBgLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJlc3NlcworCisgICAgICBBIHR1cGxlIG9mIDpjbGFzczpgLkFkZHJlc3NgIG9iamVjdHMgZW5jb2RpbmcgYWxsCisgICAgICBvZiB0aGUgaW5kaXZpZHVhbCBhZGRyZXNzZXMgZnJvbSB0aGUgaGVhZGVyIHZhbHVlLiAgSWYgdGhlIGhlYWRlciB2YWx1ZQorICAgICAgY29udGFpbnMgYW55IGdyb3VwcywgdGhlIGluZGl2aWR1YWwgYWRkcmVzc2VzIGZyb20gdGhlIGdyb3VwIGFyZSBpbmNsdWRlZAorICAgICAgaW4gdGhlIGxpc3QgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBncm91cCBvY2N1cnMgaW4gdGhlIHZhbHVlICh0aGF0IGlzLAorICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCisKKyAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQorICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgorICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorCisgICBBIGxpc3Qgb2YgOmNsYXNzOmAuQWRkcmVzc2AgYW5kIDpjbGFzczpgLkdyb3VwYCBvYmplY3RzIGluIGFueSBjb21iaW5hdGlvbgorICAgbWF5IGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZiBhbiBhZGRyZXNzIGhlYWRlci4gIGBgR3JvdXBgYCBvYmplY3RzIHdob3NlCisgICBgYGRpc3BsYXlfbmFtZWBgIGlzIGBgTm9uZWBgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc2luZ2xlIGFkZHJlc3Nlcywgd2hpY2gKKyAgIGFsbG93cyBhbiBhZGRyZXNzIGxpc3QgdG8gYmUgY29waWVkIHdpdGggZ3JvdXBzIGludGFjdCBieSB1c2luZyB0aGUgbGlzdAorICAgb2J0YWluZWQgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCisKKworLi4gY2xhc3M6OiBTaW5nbGVBZGRyZXNzSGVhZGVyCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmAuQWRkcmVzc0hlYWRlcmAgdGhhdCBhZGRzIG9uZQorICAgYWRkaXRpb25hbCBhdHRyaWJ1dGU6CisKKworICAgLi4gYXR0cmlidXRlOjogYWRkcmVzcworCisgICAgICBUaGUgc2luZ2xlIGFkZHJlc3MgZW5jb2RlZCBieSB0aGUgaGVhZGVyIHZhbHVlLiAgSWYgdGhlIGhlYWRlciB2YWx1ZQorICAgICAgYWN0dWFsbHkgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBhZGRyZXNzICh3aGljaCB3b3VsZCBiZSBhIHZpb2xhdGlvbiBvZgorICAgICAgdGhlIFJGQyB1bmRlciB0aGUgZGVmYXVsdCA6bW9kOmBwb2xpY3lgKSwgYWNjZXNzaW5nIHRoaXMgYXR0cmlidXRlIHdpbGwKKyAgICAgIHJlc3VsdCBpbiBhIDpleGM6YFZhbHVlRXJyb3JgLgorCisKK01hbnkgb2YgdGhlIGFib3ZlIGNsYXNzZXMgYWxzbyBoYXZlIGEgYGBVbmlxdWVgYCB2YXJpYW50IChmb3IgZXhhbXBsZSwKK2BgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyYGApLiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IGluIHRoZSBgYFVuaXF1ZWBgCit2YXJpYW50LCA6YXR0cjpgfi5CYXNlSGVhZGVyLm1heF9jb3VudGAgaXMgc2V0IHRvIDEuCisKKworLi4gY2xhc3M6OiBNSU1FVmVyc2lvbkhlYWRlcgorCisgICBUaGVyZSBpcyByZWFsbHkgb25seSBvbmUgdmFsaWQgdmFsdWUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAorICAgaGVhZGVyLCBhbmQgdGhhdCBpcyBgYDEuMGBgLiAgRm9yIGZ1dHVyZSBwcm9vZmluZywgdGhpcyBoZWFkZXIgY2xhc3MKKyAgIHN1cHBvcnRzIG90aGVyIHZhbGlkIHZlcnNpb24gbnVtYmVycy4gIElmIGEgdmVyc2lvbiBudW1iZXIgaGFzIGEgdmFsaWQgdmFsdWUKKyAgIHBlciA6cmZjOmAyMDQ1YCwgdGhlbiB0aGUgaGVhZGVyIG9iamVjdCB3aWxsIGhhdmUgbm9uLWBgTm9uZWBgIHZhbHVlcyBmb3IKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorCisgICAgICBUaGUgdmVyc2lvbiBudW1iZXIgYXMgYSBzdHJpbmcsIHdpdGggYW55IHdoaXRlc3BhY2UgYW5kL29yIGNvbW1lbnRzCisgICAgICByZW1vdmVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYWpvcgorCisgICAgICBUaGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgYXMgYW4gaW50ZWdlcgorCisgICAuLiBhdHRyaWJ1dGU6OiBtaW5vcgorCisgICAgICBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIgYXMgYW4gaW50ZWdlcgorCisKKy4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKKworICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBhIGNlcnRhaW4gdmFsdWUsIGRlc2NyaWJlZCB1bmRlciB0aGUgY2xhc3MgZm9yIHRoYXQgaGVhZGVyLiAgU29tZSBjYW4KKyAgICBhbHNvIHRha2UgYSBsaXN0IG9mIHN1cHBsZW1lbnRhbCBwYXJhbWV0ZXJzLCB3aGljaCBoYXZlIGEgY29tbW9uIGZvcm1hdC4KKyAgICBUaGlzIGNsYXNzIHNlcnZlcyBhcyBhIGJhc2UgZm9yIGFsbCB0aGUgTUlNRSBoZWFkZXJzIHRoYXQgdGFrZSBwYXJhbWV0ZXJzLgorCisgICAgLi4gYXR0cmlidXRlOjogcGFyYW1zCisKKyAgICAgICBBIGRpY3Rpb25hcnkgbWFwcGluZyBwYXJhbWV0ZXIgbmFtZXMgdG8gcGFyYW1ldGVyIHZhbHVlcy4KKworCisuLiBjbGFzczo6IENvbnRlbnRUeXBlSGVhZGVyCisKKyAgICBBIDpjbGFzczpgUGFyYW1ldGVyaXplZE1JTUVIaGVhZGVyYCBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisgICAgLi4gYXR0cmlidXRlOjogY29udGVudF90eXBlCisKKyAgICAgICBUaGUgY29udGVudCB0eXBlIHN0cmluZywgaW4gdGhlIGZvcm0gYGBtYWludHlwZS9zdWJ0eXBlYGAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtYWludHlwZQorCisgICAgLi4gYXR0cmlidXRlOjogc3VidHlwZQorCisKKy4uIGNsYXNzOjogQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyCisKKyAgICBBIDpjbGFzczpgUGFyYW1ldGVyaXplZE1JTUVIaGVhZGVyYCBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRlbnQtZGlzcG9zaXRpb24KKworICAgICAgIGBgaW5saW5lYGAgYW5kIGBgYXR0YWNobWVudGBgIGFyZSB0aGUgb25seSB2YWxpZCB2YWx1ZXMgaW4gY29tbW9uIHVzZS4KKworCisuLiBjbGFzczo6IENvbnRlbnRUcmFuc2ZlckVuY29kaW5nCisKKyAgIEhhbmRsZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGN0ZQorCisgICAgICBWYWxpZCB2YWx1ZXMgYXJlIGBgN2JpdGBgLCBgYDhiaXRgYCwgYGBiYXNlNjRgYCwgYW5kCisgICAgICBgYHF1b3RlZC1wcmludGFibGVgYC4gIFNlZSA6cmZjOmAyMDQ1YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCisKKy4uIGNsYXNzOjogSGVhZGVyUmVnaXN0cnkoYmFzZV9jbGFzcz1CYXNlSGVhZGVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfY2xhc3M9VW5zdHJ1Y3R1cmVkSGVhZGVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9kZWZhdWx0X21hcD1UcnVlKQorCisgICAgVGhpcyBpcyB0aGUgZmFjdG9yeSB1c2VkIGJ5IDpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAgYnkgZGVmYXVsdC4KKyAgICBgYEhlYWRlclJlZ2lzdHJ5YGAgYnVpbGRzIHRoZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBpbnN0YW5jZQorICAgIGR5bmFtaWNhbGx5LCB1c2luZyAqYmFzZV9jbGFzcyogYW5kIGEgc3BlY2lhbGl6ZWQgY2xhc3MgcmV0cmlldmVkIGZyb20gYQorICAgIHJlZ2lzdHJ5IHRoYXQgaXQgaG9sZHMuICBXaGVuIGEgZ2l2ZW4gaGVhZGVyIG5hbWUgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorICAgIHJlZ2lzdHJ5LCB0aGUgY2xhc3Mgc3BlY2lmaWVkIGJ5ICpkZWZhdWx0X2NsYXNzKiBpcyB1c2VkIGFzIHRoZSBzcGVjaWFsaXplZAorICAgIGNsYXNzLiAgV2hlbiAqdXNlX2RlZmF1bHRfbWFwKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCB0aGUgc3RhbmRhcmQKKyAgICBtYXBwaW5nIG9mIGhlYWRlciBuYW1lcyB0byBjbGFzc2VzIGlzIGNvcGllZCBpbiB0byB0aGUgcmVnaXN0cnkgZHVyaW5nCisgICAgaW5pdGlhbGl6YXRpb24uICAqYmFzZV9jbGFzcyogaXMgYWx3YXlzIHRoZSBsYXN0IGNsYXNzIGluIHRoZSBnZW5lcmF0ZWQKKyAgICBjbGFzcydzIGBgX19iYXNlc19fYGAgbGlzdC4KKworICAgIFRoZSBkZWZhdWx0IG1hcHBpbmdzIGFyZToKKworICAgICAgOnN1YmplY3Q6ICAgICAgICAgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyCisgICAgICA6ZGF0ZTogICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyCisgICAgICA6cmVzZW50LWRhdGU6ICAgICBEYXRlSGVhZGVyCisgICAgICA6b3JpZy1kYXRlOiAgICAgICBVbmlxdWVEYXRlSGVhZGVyCisgICAgICA6c2VuZGVyOiAgICAgICAgICBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LXNlbmRlcjogICBTaW5nbGVBZGRyZXNzSGVhZGVyCisgICAgICA6dG86ICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LXRvOiAgICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6Y2M6ICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LWNjOiAgICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6ZnJvbTogICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LWZyb206ICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6cmVwbHktdG86ICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisKKyAgICBgYEhlYWRlclJlZ2lzdHJ5YGAgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworCisgICAgLi4gbWV0aG9kOjogbWFwX3RvX3R5cGUoc2VsZiwgbmFtZSwgY2xzKQorCisgICAgICAgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gYmUgbWFwcGVkLiAgSXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAgICAgICBsb3dlciBjYXNlIGluIHRoZSByZWdpc3RyeS4gICpjbHMqIGlzIHRoZSBzcGVjaWFsaXplZCBjbGFzcyB0byBiZSB1c2VkLAorICAgICAgIGFsb25nIHdpdGggKmJhc2VfY2xhc3MqLCB0byBjcmVhdGUgdGhlIGNsYXNzIHVzZWQgdG8gaW5zdGFudGlhdGUgaGVhZGVycworICAgICAgIHRoYXQgbWF0Y2ggKm5hbWUqLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQorCisgICAgICAgQ29uc3RydWN0IGFuZCByZXR1cm4gYSBjbGFzcyB0byBoYW5kbGUgY3JlYXRpbmcgYSAqbmFtZSogaGVhZGVyLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2NhbGxfXyhuYW1lLCB2YWx1ZSkKKworICAgICAgIFJldHJpZXZlcyB0aGUgc3BlY2lhbGl6ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCAqbmFtZSogZnJvbSB0aGUKKyAgICAgICByZWdpc3RyeSAodXNpbmcgKmRlZmF1bHRfY2xhc3MqIGlmICpuYW1lKiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCisgICAgICAgcmVnaXN0cnkpIGFuZCBjb21wb3NlcyBpdCB3aXRoICpiYXNlX2NsYXNzKiB0byBwcm9kdWNlIGEgY2xhc3MsCisgICAgICAgY2FsbHMgdGhlIGNvbnN0cnVjdGVkIGNsYXNzJ3MgY29uc3RydWN0b3IsIHBhc3NpbmcgaXQgdGhlIHNhbWUKKyAgICAgICBhcmd1bWVudCBsaXN0LCBhbmQgZmluYWxseSByZXR1cm5zIHRoZSBjbGFzcyBpbnN0YW5jZSBjcmVhdGVkIHRoZXJlYnkuCisKKworVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB0aGUgY2xhc3NlcyB1c2VkIHRvIHJlcHJlc2VudCBkYXRhIHBhcnNlZCBmcm9tCitzdHJ1Y3R1cmVkIGhlYWRlcnMgYW5kIGNhbiwgaW4gZ2VuZXJhbCwgYmUgdXNlZCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRvCitjb25zdHJ1Y3Qgc3RydWN0dXJlZCB2YWx1ZXMgdG8gYXNzaWduIHRvIHNwZWNpZmljIGhlYWRlcnMuCisKKworLi4gY2xhc3M6OiBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nJywgdXNlcm5hbWU9JycsIGRvbWFpbj0nJywgYWRkcl9zcGVjPU5vbmUpCisKKyAgIFRoZSBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhbiBlbWFpbCBhZGRyZXNzLiAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhbgorICAgYWRkcmVzcyBpczo6CisKKyAgICAgIFtkaXNwbGF5X25hbWVdIDx1c2VybmFtZUBkb21haW4+CisKKyAgIG9yOjoKKworICAgICAgdXNlcm5hbWVAZG9tYWluCisKKyAgIHdoZXJlIGVhY2ggcGFydCBtdXN0IGNvbmZvcm0gdG8gc3BlY2lmaWMgc3ludGF4IHJ1bGVzIHNwZWxsZWQgb3V0IGluCisgICA6cmZjOmA1MzIyYC4KKworICAgQXMgYSBjb252ZW5pZW5jZSAqYWRkcl9zcGVjKiBjYW4gYmUgc3BlY2lmaWVkIGluc3RlYWQgb2YgKnVzZXJuYW1lKiBhbmQKKyAgICpkb21haW4qLCBpbiB3aGljaCBjYXNlICp1c2VybmFtZSogYW5kICpkb21haW4qIHdpbGwgYmUgcGFyc2VkIGZyb20gdGhlCisgICAqYWRkcl9zcGVjKi4gIEFuICphZGRyX3NwZWMqIG11c3QgYmUgYSBwcm9wZXJseSBSRkMgcXVvdGVkIHN0cmluZzsgaWYgaXQgaXMKKyAgIG5vdCBgYEFkZHJlc3NgYCB3aWxsIHJhaXNlIGFuIGVycm9yLiAgVW5pY29kZSBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGFuZAorICAgd2lsbCBiZSBwcm9wZXJ0eSBlbmNvZGVkIHdoZW4gc2VyaWFsaXplZC4gIEhvd2V2ZXIsIHBlciB0aGUgUkZDcywgdW5pY29kZSBpcworICAgKm5vdCogYWxsb3dlZCBpbiB0aGUgdXNlcm5hbWUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogZGlzcGxheV9uYW1lCisKKyAgICAgIFRoZSBkaXNwbGF5IG5hbWUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgaWYgYW55LCB3aXRoIGFsbCBxdW90aW5nCisgICAgICByZW1vdmVkLiAgSWYgdGhlIGFkZHJlc3MgZG9lcyBub3QgaGF2ZSBhIGRpc3BsYXkgbmFtZSwgdGhpcyBhdHRyaWJ1dGUKKyAgICAgIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLgorCisgICAuLiBhdHRyaWJ1dGU6OiB1c2VybmFtZQorCisgICAgICBUaGUgYGB1c2VybmFtZWBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MsIHdpdGggYWxsIHF1b3RpbmcgcmVtb3ZlZC4KKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIFRoZSBgYGRvbWFpbmBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJfc3BlYworCisgICAgICBUaGUgYGB1c2VybmFtZUBkb21haW5gYCBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBjb3JyZWN0bHkgcXVvdGVkCisgICAgICBmb3IgdXNlIGFzIGEgYmFyZSBhZGRyZXNzICh0aGUgc2Vjb25kIGZvcm0gc2hvd24gYWJvdmUpLiAgVGhpcworICAgICAgYXR0cmlidXRlIGlzIG5vdCBtdXRhYmxlLgorCisgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKKworICAgICAgVGhlIGBgc3RyYGAgdmFsdWUgb2YgdGhlIG9iamVjdCBpcyB0aGUgYWRkcmVzcyBxdW90ZWQgYWNjb3JkaW5nIHRvCisgICAgICA6cmZjOmA1MzIyYCBydWxlcywgYnV0IHdpdGggbm8gQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyBvZiBhbnkgbm9uLUFTQ0lJCisgICAgICBjaGFyYWN0ZXJzLgorCisgICBUbyBzdXBwb3J0IFNNVFAgKDpyZmM6YDUzMjFgKSwgYGBBZGRyZXNzYGAgaGFuZGxlcyBvbmUgc3BlY2lhbCBjYXNlOiBpZgorICAgYGB1c2VybmFtZWBgIGFuZCBgYGRvbWFpbmBgIGFyZSBib3RoIHRoZSBlbXB0eSBzdHJpbmcgKG9yIGBgTm9uZWBgKSwgdGhlbgorICAgdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgYGBBZGRyZXNzYGAgaXMgYGA8PmBgLgorCisKKy4uIGNsYXNzOjogR3JvdXAoZGlzcGxheV9uYW1lPU5vbmUsIGFkZHJlc3Nlcz1Ob25lKQorCisgICBUaGUgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYW4gYWRkcmVzcyBncm91cC4gIFRoZSBnZW5lcmFsIGZvcm0gb2YgYW4KKyAgIGFkZHJlc3MgZ3JvdXAgaXM6OgorCisgICAgIGRpc3BsYXlfbmFtZTogW2FkZHJlc3MtbGlzdF07CisKKyAgIEFzIGEgY29udmVuaWVuY2UgZm9yIHByb2Nlc3NpbmcgbGlzdHMgb2YgYWRkcmVzc2VzIHRoYXQgY29uc2lzdCBvZiBhIG1peHR1cmUKKyAgIG9mIGdyb3VwcyBhbmQgc2luZ2xlIGFkZHJlc3NlcywgYSBgYEdyb3VwYGAgbWF5IGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQKKyAgIHNpbmdsZSBhZGRyZXNzZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBncm91cCBieSBzZXR0aW5nICpkaXNwbGF5X25hbWUqIHRvCisgICBgYE5vbmVgYCBhbmQgcHJvdmlkaW5nIGEgbGlzdCBvZiB0aGUgc2luZ2xlIGFkZHJlc3MgYXMgKmFkZHJlc3NlcyouCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRpc3BsYXlfbmFtZQorCisgICAgICBUaGUgYGBkaXNwbGF5X25hbWVgYCBvZiB0aGUgZ3JvdXAuICBJZiBpdCBpcyBgYE5vbmVgYCBhbmQgdGhlcmUgaXMKKyAgICAgIGV4YWN0bHkgb25lIGBgQWRkcmVzc2BgIGluIGBgYWRkcmVzc2VzYGAsIHRoZW4gdGhlIGBgR3JvdXBgYCByZXByZXNlbnRzIGEKKyAgICAgIHNpbmdsZSBhZGRyZXNzIHRoYXQgaXMgbm90IGluIGEgZ3JvdXAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJlc3NlcworCisgICAgICBBIHBvc3NpYmx5IGVtcHR5IHR1cGxlIG9mIDpjbGFzczpgLkFkZHJlc3NgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZQorICAgICAgYWRkcmVzc2VzIGluIHRoZSBncm91cC4KKworICAgLi4gbWV0aG9kOjogX19zdHJfXygpCisKKyAgICAgIFRoZSBgYHN0cmBgIHZhbHVlIG9mIGEgYGBHcm91cGBgIGlzIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gOnJmYzpgNTMyMmAsCisgICAgICBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIG9mIGFueSBub24tQVNDSUkgY2hhcmFjdGVycy4gIElmCisgICAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIG5vbmUgYW5kIHRoZXJlIGlzIGEgc2luZ2xlIGBgQWRkcmVzc2BgIGluIHRoZQorICAgICAgYGBhZGRyZXNzZXNgYCBsaXN0LCB0aGUgYGBzdHJgYCB2YWx1ZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgYHN0cmBgIG9mCisgICAgICB0aGF0IHNpbmdsZSBgYEFkZHJlc3NgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggZjY4NWU1NC4uNTlhYjQ3ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTExMSwxMCArMTExLDE0IEBACiAgICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAogICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCiAgICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGlmIHRoZSBwYXlsb2FkIGhhcyBib2d1cyBiYXNlNjQgZGF0YSwgdGhlIHBheWxvYWQgaXMKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwogICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQogICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90CisgICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0CisgICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncworICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgogCiAgICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCiAgICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCBhZTM0MGY3Li5kYjU1ODRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtMTc1LDcgKzE3NSw3IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLnRleHQKIAotLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9J3VzLWFzY2lpJykKKy4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS50ZXh0YAogCkBAIC0xODUsNSArMTg1LDUgQEAKICAgIG1pbm9yIHR5cGUgYW5kIGRlZmF1bHRzIHRvIDptaW1ldHlwZTpgcGxhaW5gLiAgKl9jaGFyc2V0KiBpcyB0aGUgY2hhcmFjdGVyCiAgICBzZXQgb2YgdGhlIHRleHQgYW5kIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUKICAgIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cwotICAgdG8gYGB1cy1hc2NpaWBgLiAgTm8gZ3Vlc3Npbmcgb3IgZW5jb2RpbmcgaXMgcGVyZm9ybWVkIG9uIHRoZSB0ZXh0IGRhdGEuCi0KKyAgIHRvIGBgdXMtYXNjaWlgYCBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgYGBhc2NpaWBgIGNvZGVwb2ludHMsIGFuZAorICAgYGB1dGYtOGBgIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CmluZGV4IDQ5YTU5YzAuLjZhNDM1NjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdApAQCAtNTgsMTIgKzU4LDE4IEBACiBIZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgOgogCiAKLS4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCisuLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIENyZWF0ZSBhIDpjbGFzczpgRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEgbm8tYXJndW1lbnQKICAgIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLiAgSXQKICAgIGRlZmF1bHRzIHRvIHRoZSA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCiAKKyAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKKyAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKwogICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQogCiAgICAgICBGZWVkIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIHN0cmluZwpAQCAtOTQsMTUgKzEwMCwxOCBAQAogVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCiBwcm92aWRlcyBhbiBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXJzZSBhIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcGxldGUgY29udGVudHMKIG9mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSBzdHJpbmcgb3IgZmlsZS4gIFRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgCi1tb2R1bGUgYWxzbyBwcm92aWRlcyBhIHNlY29uZCBjbGFzcywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCB3aGljaCBjYW4gYmUKLXVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgaGVhZGVycyBvZiB0aGUgbWVzc2FnZS4KLTpjbGFzczpgSGVhZGVyUGFyc2VyYCBjYW4gYmUgbXVjaCBmYXN0ZXIgaW4gdGhlc2Ugc2l0dWF0aW9ucywgc2luY2UgaXQgZG9lcyBub3QKLWF0dGVtcHQgdG8gcGFyc2UgdGhlIG1lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keQotYXMgYSBzdHJpbmcuIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBoYXMgdGhlIHNhbWUgQVBJIGFzIHRoZSA6Y2xhc3M6YFBhcnNlcmAKLWNsYXNzLgorbW9kdWxlIGFsc28gcHJvdmlkZXMgaGVhZGVyLW9ubHkgcGFyc2VycywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQKKzpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAKK2NhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQorbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQoraGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAogICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZApAQCAtMTEwLDEzICsxMTksMTMgQEAKICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCiAgICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCiAKLSAgIFRoZSBvcHRpb25hbCAqc3RyaWN0KiBmbGFnIGlzIGlnbm9yZWQuCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDIuNAotICAgICAgQmVjYXVzZSB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIGlzIGEgYmFja3dhcmQgY29tcGF0aWJsZSBBUEkgd3JhcHBlcgotICAgICAgYXJvdW5kIHRoZSBuZXctaW4tUHl0aG9uIDIuNCA6Y2xhc3M6YEZlZWRQYXJzZXJgLCAqYWxsKiBwYXJzaW5nIGlzCi0gICAgICBlZmZlY3RpdmVseSBub24tc3RyaWN0LiAgWW91IHNob3VsZCBzaW1wbHkgc3RvcCBwYXNzaW5nIGEgKnN0cmljdCogZmxhZyB0bwotICAgICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQorICAgICAgKnBvbGljeSoga2V5d29yZC4KIAogICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YFBhcnNlcmAgbWV0aG9kcyBhcmU6CiAKQEAgLTE0NywxMiArMTU2LDE4IEBACiAgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgogCiAKLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCiAgICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4gICpzdHJpY3QqIGlzIHN1cHBvcnRlZCBvbmx5IHRvIG1ha2UgcG9ydGluZwotICAgY29kZSBlYXNpZXI7IGl0IGlzIGRlcHJlY2F0ZWQuCisgICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLgorCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdAorICAgY29udHJvbHMgYSBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQKKyAgIHBvbGljeSBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKICAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJvbmx5PUZhbHNlKQogCkBAIC0xOTAsMzkgKzIwNSw1MyBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwKIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KLSAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZCAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMKKyAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5kZWZhdWx0KQogCiAgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIGJ5dGUgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5CiAgICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKICAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLgotICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gIE9wdGlvbmFsICpfY2xhc3MqCi0gICBhbmQgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKgorICAgYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCBzdHJpY3Q9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKICAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICBPcHRpb25hbCAqX2NsYXNzKiBhbmQgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYAorICAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAKICAgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSB0aGlzIGF0IGFuIGludGVyYWN0aXZlIFB5dGhvbiBwcm9tcHQ6OgogCiAgICA+Pj4gaW1wb3J0IGVtYWlsCi0gICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhteVN0cmluZykKKyAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKSAgIyBkb2N0ZXN0OiArU0tJUAogCiAKIEFkZGl0aW9uYWwgbm90ZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC0wLDAgKzEsNDk3IEBACis6bW9kOmBlbWFpbC5wb2xpY3lgOiBQb2xpY3kgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gbW9kdWxlOjogZW1haWwucG9saWN5CisgICA6c3lub3BzaXM6IENvbnRyb2xsaW5nIHRoZSBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIG9mIG1lc3NhZ2VzCisKKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBwcmltZSBmb2N1cyBpcyB0aGUgaGFuZGxpbmcgb2YgZW1haWwgbWVzc2FnZXMgYXMKK2Rlc2NyaWJlZCBieSB0aGUgdmFyaW91cyBlbWFpbCBhbmQgTUlNRSBSRkNzLiAgSG93ZXZlciwgdGhlIGdlbmVyYWwgZm9ybWF0IG9mCitlbWFpbCBtZXNzYWdlcyAoYSBibG9jayBvZiBoZWFkZXIgZmllbGRzIGVhY2ggY29uc2lzdGluZyBvZiBhIG5hbWUgZm9sbG93ZWQgYnkKK2EgY29sb24gZm9sbG93ZWQgYnkgYSB2YWx1ZSwgdGhlIHdob2xlIGJsb2NrIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgYW4KK2FyYml0cmFyeSAnYm9keScpLCBpcyBhIGZvcm1hdCB0aGF0IGhhcyBmb3VuZCB1dGlsaXR5IG91dHNpZGUgb2YgdGhlIHJlYWxtIG9mCitlbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIFJGQ3MsIHNvbWUgZG8KK25vdC4gIEFuZCBldmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KK2JyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MuCisKK1BvbGljeSBvYmplY3RzIGdpdmUgdGhlIGVtYWlsIHBhY2thZ2UgdGhlIGZsZXhpYmlsaXR5IHRvIGhhbmRsZSBhbGwgdGhlc2UKK2Rpc3BhcmF0ZSB1c2UgY2FzZXMuCisKK0EgOmNsYXNzOmBQb2xpY3lgIG9iamVjdCBlbmNhcHN1bGF0ZXMgYSBzZXQgb2YgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB0aGF0Citjb250cm9sIHRoZSBiZWhhdmlvciBvZiB2YXJpb3VzIGNvbXBvbmVudHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgZHVyaW5nIHVzZS4KKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZXMgY2FuIGJlIHBhc3NlZCB0byB2YXJpb3VzIGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gdGhlCitlbWFpbCBwYWNrYWdlIHRvIGFsdGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAgVGhlIHNldHRhYmxlIHZhbHVlcyBhbmQgdGhlaXIKK2RlZmF1bHRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1RoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIFRoaXMKK3BvbGljeSBpcyBuYW1lZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2l0aCBhIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UKK25hbWVkIDpjb25zdDpgY29tcGF0MzJgLiAgSXQgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluCitzb21lIGNhc2VzLCBpbmNsdWRpbmcgYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUKK2VtYWlsIHBhY2thZ2UuCisKK1RoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjb3ZlcnMgdGhlIGZlYXR1cmVzIG9mIDpjbGFzczpgUG9saWN5YCwgYW4KKzp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCAgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCitwb2xpY3kgb2JqZWN0cywgaW5jbHVkaW5nIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcyBpbmNsdWRlcyBjZXJ0YWluIGhvb2sKK21ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHdoaWNoIGEgY3VzdG9tIHBvbGljeQorY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4KKworV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LgorQnkgZGVmYXVsdCB0aGlzIHdpbGwgYmUgOmNvbnN0OmBjb21wYXQzMmAsIGJ1dCBhIGRpZmZlcmVudCBwb2xpY3kgY2FuIGJlCitzcGVjaWZpZWQuICBJZiB0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeQorcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgTWVzc2FnZWBgIGl0IGNyZWF0ZXMuICBJZgordGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlIHBvbGljeSBjYW4gYmUgc3BlY2lmaWVkCit3aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgYGBNZXNzYWdlYGAgaXMgcGFzc2VkIHRvIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsCit0aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBgYE1lc3NhZ2VgYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvCitwYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uCit0aGUgYGBNZXNzYWdlYGAgb2JqZWN0LgorCis6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2VzIGFyZSBpbW11dGFibGUsIGJ1dCB0aGV5IGNhbiBiZSBjbG9uZWQsIGFjY2VwdGluZyB0aGUKK3NhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5pbmcgYSBuZXcKKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB0aGF0IGlzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYnV0IHdpdGggdGhlIHNwZWNpZmllZAorYXR0cmlidXRlcyB2YWx1ZXMgY2hhbmdlZC4KKworQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIGNvdWxkIGJlIHVzZWQgdG8gcmVhZCBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYQorZmlsZSBvbiBkaXNrIGFuZCBwYXNzIGl0IHRvIHRoZSBzeXN0ZW0gYGBzZW5kbWFpbGBgIHByb2dyYW0gb24gYSBVbml4IHN5c3RlbTo6CisKKyAgID4+PiBmcm9tIGVtYWlsIGltcG9ydCBtc2dfZnJvbV9iaW5hcnlfZmlsZQorICAgPj4+IGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgorICAgPj4+IGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKKyAgID4+PiB3aXRoIG9wZW4oJ215bXNnLnR4dCcsICdiJykgYXMgZjoKKyAgIC4uLiAgICAgbXNnID0gbXNnX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgID4+PiBwID0gUG9wZW4oWydzZW5kbWFpbCcsIG1zZ1snVG8nXVswXS5hZGRyZXNzXSwgc3RkaW49UElQRSkKKyAgID4+PiBnID0gQnl0ZXNHZW5lcmF0b3IocC5zdGRpbiwgcG9saWN5PW1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpKQorICAgPj4+IGcuZmxhdHRlbihtc2cpCisgICA+Pj4gcC5zdGRpbi5jbG9zZSgpCisgICA+Pj4gcmMgPSBwLndhaXQoKQorCitIZXJlIHdlIGFyZSB0ZWxsaW5nIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgdG8gdXNlIHRoZSBSRkMKK2NvcnJlY3QgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVycyB3aGVuIGNyZWF0aW5nIHRoZSBiaW5hcnkgc3RyaW5nIHRvIGZlZWQgaW50bworYGBzZW5kbWFpbCdzYGAgYGBzdGRpbmBgLCB3aGVyZSB0aGUgZGVmYXVsdCBwb2xpY3kgd291bGQgdXNlIGBgXG5gYCBsaW5lCitzZXBhcmF0b3JzLgorCitTb21lIGVtYWlsIHBhY2thZ2UgbWV0aG9kcyBhY2NlcHQgYSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50LCBhbGxvd2luZyB0aGUKK3BvbGljeSB0byBiZSBvdmVycmlkZGVuIGZvciB0aGF0IG1ldGhvZC4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgdXNlcwordGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AgbWV0aG9kIG9mIHRoZSAqbXNnKiBvYmplY3QgZnJvbQordGhlIHByZXZpb3VzIGV4YW1wbGUgYW5kIHdyaXRlcyB0aGUgbWVzc2FnZSB0byBhIGZpbGUgdXNpbmcgdGhlIG5hdGl2ZSBsaW5lCitzZXBhcmF0b3JzIGZvciB0aGUgcGxhdGZvcm0gb24gd2hpY2ggaXQgaXMgcnVubmluZzo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiB3aXRoIG9wZW4oJ2NvbnZlcnRlZC50eHQnLCAnd2InKSBhcyBmOgorICAgLi4uICAgICBmLndyaXRlKG1zZy5hc19zdHJpbmcocG9saWN5PW1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD1vcy5saW5lc2VwKSkKKworUG9saWN5IG9iamVjdHMgY2FuIGFsc28gYmUgY29tYmluZWQgdXNpbmcgdGhlIGFkZGl0aW9uIG9wZXJhdG9yLCBwcm9kdWNpbmcgYQorcG9saWN5IG9iamVjdCB3aG9zZSBzZXR0aW5ncyBhcmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgbm9uLWRlZmF1bHQgdmFsdWVzIG9mIHRoZQorc3VtbWVkIG9iamVjdHM6OgorCisgICA+Pj4gY29tcGF0X1NNVFAgPSBlbWFpbC5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpCisgICA+Pj4gY29tcGF0X3N0cmljdCA9IGVtYWlsLnBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgID4+PiBjb21wYXRfc3RyaWN0X1NNVFAgPSBjb21wYXRfU01UUCArIGNvbXBhdF9zdHJpY3QKKworVGhpcyBvcGVyYXRpb24gaXMgbm90IGNvbW11dGF0aXZlOyB0aGF0IGlzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIG9iamVjdHMgYXJlCithZGRlZCBtYXR0ZXJzLiAgVG8gaWxsdXN0cmF0ZTo6CisKKyAgID4+PiBwb2xpY3kxMDAgPSBjb21wYXQzMi5jbG9uZShtYXhfbGluZV9sZW5ndGg9MTAwKQorICAgPj4+IHBvbGljeTgwID0gY29tcGF0MzIuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTgwKQorICAgPj4+IGFwb2xpY3kgPSBwb2xpY3kxMDAgKyBQb2xpY3k4MAorICAgPj4+IGFwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICA4MAorICAgPj4+IGFwb2xpY3kgPSBwb2xpY3k4MCArIHBvbGljeTEwMAorICAgPj4+IGFwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICAxMDAKKworCisuLiBjbGFzczo6IFBvbGljeSgqKmt3KQorCisgICBUaGlzIGlzIHRoZSA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIGFsbCBwb2xpY3kgY2xhc3Nlcy4gIEl0IHByb3ZpZGVzCisgICBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgYSBjb3VwbGUgb2YgdHJpdmlhbCBtZXRob2RzLCBhcyB3ZWxsIGFzIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGltbXV0YWJpbGl0eSBwcm9wZXJ0eSwgdGhlIDptZXRoOmBjbG9uZWAgbWV0aG9kLCBhbmQKKyAgIHRoZSBjb25zdHJ1Y3RvciBzZW1hbnRpY3MuCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBvZiBhIHBvbGljeSBjbGFzcyBjYW4gYmUgcGFzc2VkIHZhcmlvdXMga2V5d29yZCBhcmd1bWVudHMuCisgICBUaGUgYXJndW1lbnRzIHRoYXQgbWF5IGJlIHNwZWNpZmllZCBhcmUgYW55IG5vbi1tZXRob2QgcHJvcGVydGllcyBvbiB0aGlzCisgICBjbGFzcywgcGx1cyBhbnkgYWRkaXRpb25hbCBub24tbWV0aG9kIHByb3BlcnRpZXMgb24gdGhlIGNvbmNyZXRlIGNsYXNzLiAgQQorICAgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSBjb25zdHJ1Y3RvciB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlLgorCisgICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLCBhbmQgdGh1cyB2YWx1ZXMgZm9yIHRoZQorICAgZm9sbG93aW5nIG1heSBiZSBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGFueSBwb2xpY3kgY2xhc3M6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9saW5lX2xlbmd0aAorCisgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGxpbmUgaW4gdGhlIHNlcmlhbGl6ZWQgb3V0cHV0LCBub3QgY291bnRpbmcgdGhlCisgICAgICBlbmQgb2YgbGluZSBjaGFyYWN0ZXIocykuICBEZWZhdWx0IGlzIDc4LCBwZXIgOnJmYzpgNTMyMmAuICBBIHZhbHVlIG9mCisgICAgICBgYDBgYCBvciA6Y29uc3Q6YE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIGxpbmUgd3JhcHBpbmcgc2hvdWxkIGJlCisgICAgICBkb25lIGF0IGFsbC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZXNlcAorCisgICAgICBUaGUgc3RyaW5nIHRvIGJlIHVzZWQgdG8gdGVybWluYXRlIGxpbmVzIGluIHNlcmlhbGl6ZWQgb3V0cHV0LiAgVGhlCisgICAgICBkZWZhdWx0IGlzIGBgXG5gYCBiZWNhdXNlIHRoYXQncyB0aGUgaW50ZXJuYWwgZW5kLW9mLWxpbmUgZGlzY2lwbGluZSB1c2VkCisgICAgICBieSBQeXRob24sIHRob3VnaCBgYFxyXG5gYCBpcyByZXF1aXJlZCBieSB0aGUgUkZDcy4KKworICAgLi4gYXR0cmlidXRlOjogY3RlX3R5cGUKKworICAgICAgQ29udHJvbHMgdGhlIHR5cGUgb2YgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MgdGhhdCBtYXkgYmUgb3IgYXJlCisgICAgICByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgIGBgN2JpdGBgICBhbGwgZGF0YSBtdXN0IGJlICI3IGJpdCBjbGVhbiIgKEFTQ0lJLW9ubHkpLiAgVGhpcyBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgd2hlcmUgbmVjZXNzYXJ5IGRhdGEgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGVpdGhlcgorICAgICAgICAgICAgICAgIHF1b3RlZC1wcmludGFibGUgb3IgYmFzZTY0IGVuY29kaW5nLgorCisgICAgICBgYDhiaXRgYCAgZGF0YSBpcyBub3QgY29uc3RyYWluZWQgdG8gYmUgNyBiaXQgY2xlYW4uICBEYXRhIGluIGhlYWRlcnMgaXMKKyAgICAgICAgICAgICAgICBzdGlsbCByZXF1aXJlZCB0byBiZSBBU0NJSS1vbmx5IGFuZCBzbyB3aWxsIGJlIGVuY29kZWQgKHNlZQorICAgICAgICAgICAgICAgICdiaW5hcnlfZm9sZCcgYmVsb3cgZm9yIGFuIGV4Y2VwdGlvbiksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgYGA4Yml0YGAgQ1RFLgorICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBBIGBgY3RlX3R5cGVgYCB2YWx1ZSBvZiBgYDhiaXRgYCBvbmx5IHdvcmtzIHdpdGggYGBCeXRlc0dlbmVyYXRvcmBgLCBub3QKKyAgICAgIGBgR2VuZXJhdG9yYGAsIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgY29udGFpbiBiaW5hcnkgZGF0YS4gIElmIGEKKyAgICAgIGBgR2VuZXJhdG9yYGAgaXMgb3BlcmF0aW5nIHVuZGVyIGEgcG9saWN5IHRoYXQgc3BlY2lmaWVzCisgICAgICBgYGN0ZV90eXBlPThiaXRgYCwgaXQgd2lsbCBhY3QgYXMgaWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiByYWlzZV9vbl9kZWZlY3QKKworICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2lsbCBiZSByYWlzZWQgYXMgZXJyb3JzLiAgSWYKKyAgICAgIDpjb25zdDpgRmFsc2VgICh0aGUgZGVmYXVsdCksIGRlZmVjdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCisKKyAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZworICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CisKKyAgIC4uIG1ldGhvZDo6IGNsb25lKCoqa3cpCisKKyAgICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2Ugd2hvc2UgYXR0cmlidXRlcyBoYXZlIHRoZSBzYW1lCisgICAgICB2YWx1ZXMgYXMgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGV4Y2VwdCB3aGVyZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZQorICAgICAgZ2l2ZW4gbmV3IHZhbHVlcyBieSB0aGUga2V5d29yZCBhcmd1bWVudHMuCisKKyAgIFRoZSByZW1haW5pbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgZW1haWwgcGFja2FnZSBjb2RlLAorICAgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlLgorICAgQSBjdXN0b20gcG9saWN5IG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGVzZSBtZXRob2RzLgorCisgICAuLiBtZXRob2Q6OiBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICBIYW5kbGUgYSAqZGVmZWN0KiBmb3VuZCBvbiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcworICAgICAgbWV0aG9kLCAqZGVmZWN0KiB3aWxsIGFsd2F5cyBiZSBhIHN1YmNsYXNzIG9mCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuRGVmZWN0YC4KKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2hlY2tzIHRoZSA6YXR0cjpgcmFpc2Vfb25fZGVmZWN0YCBmbGFnLiAgSWYKKyAgICAgIGl0IGlzIGBgVHJ1ZWBgLCAqZGVmZWN0KiBpcyByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLiAgSWYgaXQgaXMgYGBGYWxzZWBgCisgICAgICAodGhlIGRlZmF1bHQpLCAqb2JqKiBhbmQgKmRlZmVjdCogYXJlIHBhc3NlZCB0byA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YC4KKworICAgLi4gbWV0aG9kOjogcmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICBSZWdpc3RlciBhICpkZWZlY3QqIG9uICpvYmoqLiAgSW4gdGhlIGVtYWlsIHBhY2thZ2UsICpkZWZlY3QqIHdpbGwgYWx3YXlzCisgICAgICBiZSBhIHN1YmNsYXNzIG9mIDpjbGFzczpgfmVtYWlsLmVycm9ycy5EZWZlY3RgLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgYGBhcHBlbmRgYCBtZXRob2Qgb2YgdGhlIGBgZGVmZWN0c2BgCisgICAgICBhdHRyaWJ1dGUgb2YgKm9iaiouICBXaGVuIHRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIDphdHRyOmBoYW5kbGVfZGVmZWN0YCwKKyAgICAgICpvYmoqIHdpbGwgbm9ybWFsbHkgaGF2ZSBhIGBgZGVmZWN0c2BgIGF0dHJpYnV0ZSB0aGF0IGhhcyBhbiBgYGFwcGVuZGBgCisgICAgICBtZXRob2QuICBDdXN0b20gb2JqZWN0IHR5cGVzIHVzZWQgd2l0aCB0aGUgZW1haWwgcGFja2FnZSAoZm9yIGV4YW1wbGUsCisgICAgICBjdXN0b20gYGBNZXNzYWdlYGAgb2JqZWN0cykgc2hvdWxkIGFsc28gcHJvdmlkZSBzdWNoIGFuIGF0dHJpYnV0ZSwKKyAgICAgIG90aGVyd2lzZSBkZWZlY3RzIGluIHBhcnNlZCBtZXNzYWdlcyB3aWxsIHJhaXNlIHVuZXhwZWN0ZWQgZXJyb3JzLgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICpuYW1lKi4KKworICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCisgICAgICBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90IGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlCisgICAgICBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUgbmFtZSAqbmFtZSogZXF1YWwgdG8gdGhlIHZhbHVlCisgICAgICByZXR1cm5lZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGBNZXNzYWdlLl9fc2V0aXRlbV9fYGAgaXMgdG8gYXBwZW5kIHRoZQorICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKKyAgICAgIHdpdGhvdXQgcmVhbGl6aW5nIGl0LiAgVGhpcyBtZXRob2QgYWxsb3dzIGNlcnRhaW4gaGVhZGVycyB0byBiZSBsaW1pdGVkCisgICAgICBpbiB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB0aGF0IGhlYWRlciB0aGF0IG1heSBiZSBhZGRlZCB0byBhCisgICAgICBgYE1lc3NhZ2VgYCBwcm9ncmFtbWF0aWNhbGx5LiAgKFRoZSBsaW1pdCBpcyBub3Qgb2JzZXJ2ZWQgYnkgdGhlIHBhcnNlciwKKyAgICAgIHdoaWNoIHdpbGwgZmFpdGhmdWxseSBwcm9kdWNlIGFzIG1hbnkgaGVhZGVycyBhcyBleGlzdCBpbiB0aGUgbWVzc2FnZQorICAgICAgYmVpbmcgcGFyc2VkLikKKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgYE5vbmVgYCBmb3IgYWxsIGhlYWRlciBuYW1lcy4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCBhIGxpc3Qgb2Ygc3RyaW5ncywgZWFjaCBzdHJpbmcKKyAgICAgIGVuZGluZyB3aXRoIHRoZSBsaW5lIHNlcGFyYXRpb24gY2hhcmFjdGVycyBmb3VuZCBpbiB0aGUgc291cmNlIGJlaW5nCisgICAgICBwYXJzZWQuICBUaGUgZmlyc3QgbGluZSBpbmNsdWRlcyB0aGUgZmllbGQgaGVhZGVyIG5hbWUgYW5kIHNlcGFyYXRvci4KKyAgICAgIEFsbCB3aGl0ZXNwYWNlIGluIHRoZSBzb3VyY2UgaXMgcHJlc2VydmVkLiAgVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgYGAobmFtZSwgdmFsdWUpYGAgdHVwbGUgdGhhdCBpcyB0byBiZSBzdG9yZWQgaW4gdGhlIGBgTWVzc2FnZWBgIHRvCisgICAgICByZXByZXNlbnQgdGhlIHBhcnNlZCBoZWFkZXIuCisKKyAgICAgIElmIGFuIGltcGxlbWVudGF0aW9uIHdpc2hlcyB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGlzdGluZworICAgICAgZW1haWwgcGFja2FnZSBwb2xpY2llcywgKm5hbWUqIHNob3VsZCBiZSB0aGUgY2FzZSBwcmVzZXJ2ZWQgbmFtZSAoYWxsCisgICAgICBjaGFyYWN0ZXJzIHVwIHRvIHRoZSAnYGA6YGAnIHNlcGFyYXRvciksIHdoaWxlICp2YWx1ZSogc2hvdWxkIGJlIHRoZQorICAgICAgdW5mb2xkZWQgdmFsdWUgKGFsbCBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXJzIHJlbW92ZWQsIGJ1dCB3aGl0ZXNwYWNlCisgICAgICBrZXB0IGludGFjdCksIHN0cmlwcGVkIG9mIGxlYWRpbmcgd2hpdGVzcGFjZS4KKworICAgICAgKnNvdXJjZWxpbmVzKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgbmFtZSBhbmQgdmFsdWUgcHJvdmlkZWQgYnkKKyAgICAgIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gaXMgbW9kaWZ5aW5nIGEKKyAgICAgIGBgTWVzc2FnZWBgIHByb2dyYW1tYXRpY2FsbHkgKGFzIG9wcG9zZWQgdG8gYSBgYE1lc3NhZ2VgYCBjcmVhdGVkIGJ5IGEKKyAgICAgIHBhcnNlcikuICBUaGUgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIGBgKG5hbWUsIHZhbHVlKWBgIHR1cGxlIHRoYXQgaXMgdG8KKyAgICAgIGJlIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIuCisKKyAgICAgIElmIGFuIGltcGxlbWVudGF0aW9uIHdpc2hlcyB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGlzdGluZworICAgICAgZW1haWwgcGFja2FnZSBwb2xpY2llcywgdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBzaG91bGQgYmUgc3RyaW5ncyBvcgorICAgICAgc3RyaW5nIHN1YmNsYXNzZXMgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBwYXNzZWQgaW4KKyAgICAgIGFyZ3VtZW50cy4KKworICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKKyAgICAgIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgd2hlbiB0aGF0IGhlYWRlciBpcyByZXF1ZXN0ZWQgYnkgdGhlCisgICAgICBhcHBsaWNhdGlvbiBwcm9ncmFtLCBhbmQgd2hhdGV2ZXIgdGhlIG1ldGhvZCByZXR1cm5zIGlzIHdoYXQgaXMgcGFzc2VkCisgICAgICBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbiBhcyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBiZWluZyByZXRyaWV2ZWQuCisgICAgICBOb3RlIHRoYXQgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgaGVhZGVyIHdpdGggdGhlIHNhbWUgbmFtZSBzdG9yZWQgaW4KKyAgICAgIHRoZSBgYE1lc3NhZ2VgYDsgdGhlIG1ldGhvZCBpcyBwYXNzZWQgdGhlIHNwZWNpZmljIG5hbWUgYW5kIHZhbHVlIG9mIHRoZQorICAgICAgaGVhZGVyIGRlc3RpbmVkIHRvIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbWV0aG9kLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKKyAgICAgIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgZm9yIGEgZ2l2ZW4gaGVhZGVyLiAgVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEKKyAgICAgIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIgImZvbGRlZCIgY29ycmVjdGx5IChhY2NvcmRpbmcgdG8gdGhlCisgICAgICBwb2xpY3kgc2V0dGluZ3MpIGJ5IGNvbXBvc2luZyB0aGUgKm5hbWUqIHdpdGggdGhlICp2YWx1ZSogYW5kIGluc2VydGluZworICAgICAgOmF0dHI6YGxpbmVzZXBgIGNoYXJhY3RlcnMgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4gIFNlZSA6cmZjOmA1MzIyYAorICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUgcnVsZXMgZm9yIGZvbGRpbmcgZW1haWwgaGVhZGVycy4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBhCisgICAgICBieXRlcyBvYmplY3QgcmF0aGVyIHRoYW4gYSBzdHJpbmcuCisKKyAgICAgICp2YWx1ZSogbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4gIFRoZXNlIGNvdWxkIGJlCisgICAgICBjb252ZXJ0ZWQgYmFjayBpbnRvIGJpbmFyeSBkYXRhIGluIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QuCisKKworLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAorICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQorICAgOm1vZDpgcG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCisgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgorCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCisgICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKyAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgorCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQorICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKKyAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKKyAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKKyAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCisKKworLi4gbm90ZTo6CisKKyAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCisgICBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCisgICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgZmVhdHVyZSkKKyAgIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKworLi4gY2xhc3M6OiBFbWFpbFBvbGljeSgqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBwcm92aWRlcyBiZWhhdmlvciB0aGF0IGlzIGludGVuZGVkIHRvIGJlIGZ1bGx5CisgICBjb21wbGlhbnQgd2l0aCB0aGUgY3VycmVudCBlbWFpbCBSRkNzLiAgVGhlc2UgaW5jbHVkZSAoYnV0IGFyZSBub3QgbGltaXRlZAorICAgdG8pIDpyZmM6YDUzMjJgLCA6cmZjOmAyMDQ3YCwgYW5kIHRoZSBjdXJyZW50IE1JTUUgUkZDcy4KKworICAgVGhpcyBwb2xpY3kgYWRkcyBuZXcgaGVhZGVyIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtcy4gIEluc3RlYWQgb2YKKyAgIHNpbXBsZSBzdHJpbmdzLCBoZWFkZXJzIGFyZSBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBhdHRyaWJ1dGVzIGRlcGVuZGluZworICAgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5IGltcGxlbWVudAorICAgOnJmYzpgMjA0N2AgYW5kIDpyZmM6YDUzMjJgLgorCisgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKKyAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiByZWZvbGRfc291cmNlCisKKyAgICAgIElmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBvcmlnaW5hdGVkIGZyb20gYQorICAgICAgOm1vZDpgfmVtYWlsLnBhcnNlcmAgKGFzIG9wcG9zZWQgdG8gYmVpbmcgc2V0IGJ5IGEgcHJvZ3JhbSksIHRoaXMKKyAgICAgIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBnZW5lcmF0b3Igc2hvdWxkIHJlZm9sZCB0aGF0IHZhbHVlCisgICAgICB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8gc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzCisgICAgICBhcmU6CisKKyAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgIGBgbm9uZWBgICBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZworCisgICAgICBgYGxvbmdgYCAgc291cmNlIHZhbHVlcyB0aGF0IGhhdmUgYW55IGxpbmUgdGhhdCBpcyBsb25nZXIgdGhhbgorICAgICAgICAgICAgICAgIGBgbWF4X2xpbmVfbGVuZ3RoYGAgd2lsbCBiZSByZWZvbGRlZAorCisgICAgICBgYGFsbGBgICAgYWxsIHZhbHVlcyBhcmUgcmVmb2xkZWQuCisgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgbG9uZ2BgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJfZmFjdG9yeQorCisgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCwgd2hlcmUKKyAgICAgIGBgbmFtZWBgIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kIGBgdmFsdWVgYCBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQKKyAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIuICBBCisgICAgICBkZWZhdWx0IGBgaGVhZGVyX2ZhY3RvcnlgYCAoc2VlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWApIGlzIHByb3ZpZGVkCisgICAgICB0aGF0IHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIDpSRkM6YDUzMjJgIGhlYWRlciBmaWVsZCB0eXBlcy4gIChDdXJyZW50bHkKKyAgICAgIGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIKKyAgICAgIGZpZWxkcyBhcmUgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlCisgICAgICB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGFic3RyYWN0CisgICBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQorCisgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5tYXhfY291bnRgIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgIHNwZWNpYWxpemVkIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHRoZQorICAgICAgOmNsYXNzOmBDb21wYXQzMmAgcG9saWN5LgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYSBgYG5hbWVgYAorICAgICAgYXR0cmlidXRlIGFuZCBpdCBtYXRjaGVzICpuYW1lKiBpZ25vcmluZyBjYXNlLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQKKyAgICAgIHVuY2hhbmdlZC4gIE90aGVyd2lzZSB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGFyZSBwYXNzZWQgdG8KKyAgICAgIGBgaGVhZGVyX2ZhY3RvcnlgYCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQgYXMKKyAgICAgIHRoZSB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUKKyAgICAgIGNvbnRhaW5zIENSIG9yIExGIGNoYXJhY3RlcnMuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KKyAgICAgIE90aGVyd2lzZSB0aGUgKm5hbWUqLCBhbmQgdGhlICp2YWx1ZSogd2l0aCBhbnkgQ1Igb3IgTEYgY2hhcmFjdGVycworICAgICAgcmVtb3ZlZCwgYXJlIHBhc3NlZCB0byB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLCBhbmQgdGhlIHJlc3VsdGluZyBjdXN0b20KKyAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkIGludG8KKyAgICAgIHRoZSB1bmljb2RlIHVua25vd24tY2hhcmFjdGVyIGdseXBoLgorCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YXR0cjpgcmVmb2xkX3NvdXJjZWAgcG9saWN5IHNldHRpbmcuCisgICAgICBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSAnc291cmNlIHZhbHVlJyBpZiBhbmQgb25seSBpZiBpdCBkb2VzIG5vdAorICAgICAgaGF2ZSBhIGBgbmFtZWBgIGF0dHJpYnV0ZSAoaGF2aW5nIGEgYGBuYW1lYGAgYXR0cmlidXRlIG1lYW5zIGl0IGlzIGEKKyAgICAgIGhlYWRlciBvYmplY3Qgb2Ygc29tZSBzb3J0KS4gIElmIGEgc291cmNlIHZhbHVlIG5lZWRzIHRvIGJlIHJlZm9sZGVkCisgICAgICBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSwgaXQgaXMgY29udmVydGVkIGludG8gYSBjdXN0b20gaGVhZGVyIG9iamVjdCBieQorICAgICAgcGFzc2luZyB0aGUgKm5hbWUqIGFuZCB0aGUgKnZhbHVlKiB3aXRoIGFueSBDUiBhbmQgTEYgY2hhcmFjdGVycyByZW1vdmVkCisgICAgICB0byB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLiAgRm9sZGluZyBvZiBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIGRvbmUgYnkKKyAgICAgIGNhbGxpbmcgaXRzIGBgZm9sZGBgIG1ldGhvZCB3aXRoIHRoZSBjdXJyZW50IHBvbGljeS4KKworICAgICAgU291cmNlIHZhbHVlcyBhcmUgc3BsaXQgaW50byBsaW5lcyB1c2luZyA6bWV0aDpgfnN0ci5zcGxpdGxpbmVzYC4gIElmCisgICAgICB0aGUgdmFsdWUgaXMgbm90IHRvIGJlIHJlZm9sZGVkLCB0aGUgbGluZXMgYXJlIHJlam9pbmVkIHVzaW5nIHRoZQorICAgICAgYGBsaW5lc2VwYGAgZnJvbSB0aGUgcG9saWN5IGFuZCByZXR1cm5lZC4gIFRoZSBleGNlcHRpb24gaXMgbGluZXMKKyAgICAgIGNvbnRhaW5pbmcgbm9uLWFzY2lpIGJpbmFyeSBkYXRhLiAgSW4gdGhhdCBjYXNlIHRoZSB2YWx1ZSBpcyByZWZvbGRlZAorICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgYGByZWZvbGRfc291cmNlYGAgc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YQorICAgICAgdG8gYmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCBpZiA6YXR0cjpgY3RlX3R5cGVgIGlzIGBgN2JpdGBgLCBleGNlcHQgdGhhdAorICAgICAgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJ5dGVzLgorCisgICAgICBJZiA6YXR0cjpgY3RlX3R5cGVgIGlzIGBgOGJpdGBgLCBub24tQVNDSUkgYmluYXJ5IGRhdGEgaXMgY29udmVydGVkIGJhY2sKKyAgICAgIGludG8gYnl0ZXMuICBIZWFkZXJzIHdpdGggYmluYXJ5IGRhdGEgYXJlIG5vdCByZWZvbGRlZCwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgIGBgcmVmb2xkX2hlYWRlcmBgIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlCisgICAgICBiaW5hcnkgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgorCitUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBvZiA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwcm92aWRlIGRlZmF1bHRzIHN1aXRhYmxlIGZvcgorc3BlY2lmaWMgYXBwbGljYXRpb24gZG9tYWlucy4gIE5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBiZWhhdmlvciBvZiB0aGVzZQoraW5zdGFuY2VzIChpbiBwYXJ0aWN1bGFyIHRoZSBgYEhUVFBgYCBpbnN0YW5jZSkgbWF5IGJlIGFkanVzdGVkIHRvIGNvbmZvcm0gZXZlbgorbW9yZSBjbG9zZWx5IHRvIHRoZSBSRkNzIHJlbGV2YW50IHRvIHRoZWlyIGRvbWFpbnMuCisKKy4uIGRhdGE6OiBkZWZhdWx0CisKKyAgIEFuIGluc3RhbmNlIG9mIGBgRW1haWxQb2xpY3lgYCB3aXRoIGFsbCBkZWZhdWx0cyB1bmNoYW5nZWQuICBUaGlzIHBvbGljeQorICAgdXNlcyB0aGUgc3RhbmRhcmQgUHl0aG9uIGBgXG5gYCBsaW5lIGVuZGluZ3MgcmF0aGVyIHRoYW4gdGhlIFJGQy1jb3JyZWN0CisgICBgYFxyXG5gYC4KKworLi4gZGF0YTo6IFNNVFAKKworICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIGVtYWlsIFJGQ3MuCisgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQworICAgY29tcGxpYW50LgorCisuLiBkYXRhOjogSFRUUAorCisgICBTdWl0YWJsZSBmb3Igc2VyaWFsaXppbmcgaGVhZGVycyB3aXRoIGZvciB1c2UgaW4gSFRUUCB0cmFmZmljLiAgTGlrZQorICAgYGBTTVRQYGAgZXhjZXB0IHRoYXQgYGBtYXhfbGluZV9sZW5ndGhgYCBpcyBzZXQgdG8gYGBOb25lYGAgKHVubGltaXRlZCkuCisKKy4uIGRhdGE6OiBzdHJpY3QKKworICAgQ29udmVuaWVuY2UgaW5zdGFuY2UuICBUaGUgc2FtZSBhcyBgYGRlZmF1bHRgYCBleGNlcHQgdGhhdAorICAgYGByYWlzZV9vbl9kZWZlY3RgYCBpcyBzZXQgdG8gYGBUcnVlYGAuICBUaGlzIGFsbG93cyBhbnkgcG9saWN5IHRvIGJlIG1hZGUKKyAgIHN0cmljdCBieSB3cml0aW5nOjoKKworICAgICAgICBzb21lcG9saWN5ICsgcG9saWN5LnN0cmljdAorCitXaXRoIGFsbCBvZiB0aGVzZSA6Y2xhc3M6YEVtYWlsUG9saWNpZXMgPC5FbWFpbFBvbGljeT5gLCB0aGUgZWZmZWN0aXZlIEFQSSBvZgordGhlIGVtYWlsIHBhY2thZ2UgaXMgY2hhbmdlZCBmcm9tIHRoZSBQeXRob24gMy4yIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheXM6CisKKyAgICogU2V0dGluZyBhIGhlYWRlciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgcmVzdWx0cyBpbiB0aGF0CisgICAgIGhlYWRlciBiZWluZyBwYXJzZWQgYW5kIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgY3JlYXRlZC4KKworICAgKiBGZXRjaGluZyBhIGhlYWRlciB2YWx1ZSBmcm9tIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCByZXN1bHRzCisgICAgIGluIHRoYXQgaGVhZGVyIGJlaW5nIHBhcnNlZCBhbmQgYSBjdXN0b20gaGVhZGVyIG9iamVjdCBjcmVhdGVkIGFuZAorICAgICByZXR1cm5lZC4KKworICAgKiBBbnkgY3VzdG9tIGhlYWRlciBvYmplY3QsIG9yIGFueSBoZWFkZXIgdGhhdCBpcyByZWZvbGRlZCBkdWUgdG8gdGhlCisgICAgIHBvbGljeSBzZXR0aW5ncywgaXMgZm9sZGVkIHVzaW5nIGFuIGFsZ29yaXRobSB0aGF0IGZ1bGx5IGltcGxlbWVudHMgdGhlCisgICAgIFJGQyBmb2xkaW5nIGFsZ29yaXRobXMsIGluY2x1ZGluZyBrbm93aW5nIHdoZXJlIGVuY29kZWQgd29yZHMgYXJlIHJlcXVpcmVkCisgICAgIGFuZCBhbGxvd2VkLgorCitGcm9tIHRoZSBhcHBsaWNhdGlvbiB2aWV3LCB0aGlzIG1lYW5zIHRoYXQgYW55IGhlYWRlciBvYnRhaW5lZCB0aHJvdWdoIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IHdpdGggY3VzdG9tCithdHRyaWJ1dGVzLCB3aG9zZSBzdHJpbmcgdmFsdWUgaXMgdGhlIGZ1bGx5IGRlY29kZWQgdW5pY29kZSB2YWx1ZSBvZiB0aGUKK2hlYWRlci4gIExpa2V3aXNlLCBhIGhlYWRlciBtYXkgYmUgYXNzaWduZWQgYSBuZXcgdmFsdWUsIG9yIGEgbmV3IGhlYWRlcgorY3JlYXRlZCwgdXNpbmcgYSB1bmljb2RlIHN0cmluZywgYW5kIHRoZSBwb2xpY3kgd2lsbCB0YWtlIGNhcmUgb2YgY29udmVydGluZwordGhlIHVuaWNvZGUgc3RyaW5nIGludG8gdGhlIGNvcnJlY3QgUkZDIGVuY29kZWQgZm9ybS4KKworVGhlIGN1c3RvbSBoZWFkZXIgb2JqZWN0cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluCis6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CmluZGV4IDQ1MzBiOTUuLmVmNTM1NGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKQEAgLTUxLDYgKzUxLDggQEAKICAgIGVtYWlsLm1lc3NhZ2UucnN0CiAgICBlbWFpbC5wYXJzZXIucnN0CiAgICBlbWFpbC5nZW5lcmF0b3IucnN0CisgICBlbWFpbC5wb2xpY3kucnN0CisgICBlbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKICAgIGVtYWlsLm1pbWUucnN0CiAgICBlbWFpbC5oZWFkZXIucnN0CiAgICBlbWFpbC5jaGFyc2V0LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAppbmRleCAxMWJmM2IyLi5iYWQwYjI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdApAQCAtMjksMTMgKzI5LDIxIEBACiAgICBmYWlscywgaW4gd2hpY2ggY2FzZSBhIDItdHVwbGUgb2YgYGAoJycsICcnKWBgIGlzIHJldHVybmVkLgogCiAKLS4uIGZ1bmN0aW9uOjogZm9ybWF0YWRkcihwYWlyKQorLi4gZnVuY3Rpb246OiBmb3JtYXRhZGRyKHBhaXIsIGNoYXJzZXQ9J3V0Zi04JykKIAogICAgVGhlIGludmVyc2Ugb2YgOm1ldGg6YHBhcnNlYWRkcmAsIHRoaXMgdGFrZXMgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKHJlYWxuYW1lLAogICAgZW1haWxfYWRkcmVzcylgYCBhbmQgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIHN1aXRhYmxlIGZvciBhIDptYWlsaGVhZGVyOmBUb2Agb3IKICAgIDptYWlsaGVhZGVyOmBDY2AgaGVhZGVyLiAgSWYgdGhlIGZpcnN0IGVsZW1lbnQgb2YgKnBhaXIqIGlzIGZhbHNlLCB0aGVuIHRoZQogICAgc2Vjb25kIGVsZW1lbnQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KIAorICAgT3B0aW9uYWwgKmNoYXJzZXQqIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSA6cmZjOmAyMDQ3YAorICAgZW5jb2Rpbmcgb2YgdGhlIGBgcmVhbG5hbWVgYCBpZiB0aGUgYGByZWFsbmFtZWBgIGNvbnRhaW5zIG5vbi1BU0NJSQorICAgY2hhcmFjdGVycy4gIENhbiBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHN0cmAgb3IgYQorICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YC4gIERlZmF1bHRzIHRvIGBgdXRmLThgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqY2hhcnNldCogb3B0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YWRkcmVzc2VzKGZpZWxkdmFsdWVzKQogCkBAIC03NCw2ICs4MiwyMCBAQAogICAgaW5kZXhlcyA2LCA3LCBhbmQgOCBvZiB0aGUgcmVzdWx0IHR1cGxlIGFyZSBub3QgdXNhYmxlLgogCiAKKy4uIGZ1bmN0aW9uOjogcGFyc2VkYXRlX3RvX2RhdGV0aW1lKGRhdGUpCisKKyAgIFRoZSBpbnZlcnNlIG9mIDpmdW5jOmBmb3JtYXRfZGF0ZXRpbWVgLiAgUGVyZm9ybXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMKKyAgIDpmdW5jOmBwYXJzZWRhdGVgLCBidXQgb24gc3VjY2VzcyByZXR1cm5zIGEgOm1vZDpgfmRhdGV0aW1lLmRhdGV0aW1lYC4gIElmCisgICB0aGUgaW5wdXQgZGF0ZSBoYXMgYSB0aW1lem9uZSBvZiBgYC0wMDAwYGAsIHRoZSBgYGRhdGV0aW1lYGAgd2lsbCBiZSBhIG5haXZlCisgICBgYGRhdGV0aW1lYGAsIGFuZCBpZiB0aGUgZGF0ZSBpcyBjb25mb3JtaW5nIHRvIHRoZSBSRkNzIGl0IHdpbGwgcmVwcmVzZW50IGEKKyAgIHRpbWUgaW4gVVRDIGJ1dCB3aXRoIG5vIGluZGljYXRpb24gb2YgdGhlIGFjdHVhbCBzb3VyY2UgdGltZXpvbmUgb2YgdGhlCisgICBtZXNzYWdlIHRoZSBkYXRlIGNvbWVzIGZyb20uICBJZiB0aGUgaW5wdXQgZGF0ZSBoYXMgYW55IG90aGVyIHZhbGlkIHRpbWV6b25lCisgICBvZmZzZXQsIHRoZSBgYGRhdGV0aW1lYGAgd2lsbCBiZSBhbiBhd2FyZSBgYGRhdGV0aW1lYGAgd2l0aCB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgYSA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAgOmNsYXNzOmB+ZGF0ZXRpbWUudHppbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBta3RpbWVfdHoodHVwbGUpCiAKICAgIFR1cm4gYSAxMC10dXBsZSBhcyByZXR1cm5lZCBieSA6ZnVuYzpgcGFyc2VkYXRlX3R6YCBpbnRvIGEgVVRDIHRpbWVzdGFtcC4gIEl0CkBAIC0xMDUsNiArMTI3LDM2IEBACiAgICBgYEZhbHNlYGAuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAKIAorLi4gZnVuY3Rpb246OiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSkKKworICAgTGlrZSBgYGZvcm1hdGRhdGVgYCwgYnV0IHRoZSBpbnB1dCBpcyBhIDptb2Q6YGRhdGV0aW1lYCBpbnN0YW5jZS4gIElmIGl0IGlzCisgICBhIG5haXZlIGRhdGV0aW1lLCBpdCBpcyBhc3N1bWVkIHRvIGJlICJVVEMgd2l0aCBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHNvdXJjZSB0aW1lem9uZSIsIGFuZCB0aGUgY29udmVudGlvbmFsIGBgLTAwMDBgYCBpcyB1c2VkIGZvciB0aGUgdGltZXpvbmUuCisgICBJZiBpdCBpcyBhbiBhd2FyZSBgYGRhdGV0aW1lYGAsIHRoZW4gdGhlIG51bWVyaWMgdGltZXpvbmUgb2Zmc2V0IGlzIHVzZWQuCisgICBJZiBpdCBpcyBhbiBhd2FyZSB0aW1lem9uZSB3aXRoIG9mZnNldCB6ZXJvLCB0aGVuICp1c2VnbXQqIG1heSBiZSBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBzdHJpbmcgYGBHTVRgYCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG51bWVyaWMKKyAgIHRpbWV6b25lIG9mZnNldC4gIFRoaXMgcHJvdmlkZXMgYSB3YXkgdG8gZ2VuZXJhdGUgc3RhbmRhcmRzIGNvbmZvcm1hbnQgSFRUUAorICAgZGF0ZSBoZWFkZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQorCisgICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKKyAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQorICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAorICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcworICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCisgICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90CisgICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKKyAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKIAogICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKQEAgLTExNSw3ICsxNjcsOCBAQAogICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CiAgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIGRvbWFpbiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvZGVfcmZjMjIzMShzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCA3ZDYyMmMyLi45NTk1MjIxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMzQsNiArMzQsNDEgQEAKIGRlZmluaW5nIGV4Y2VwdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gVHV0b3JpYWwgdW5kZXIKIDpyZWY6YHR1dC11c2VyZXhjZXB0aW9uc2AuCiAKK1doZW4gcmFpc2luZyAob3IgcmUtcmFpc2luZykgYW4gZXhjZXB0aW9uIGluIGFuIDprZXl3b3JkOmBleGNlcHRgIGNsYXVzZQorOmF0dHI6YF9fY29udGV4dF9fYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgbGFzdCBleGNlcHRpb24gY2F1Z2h0OyBpZiB0aGUKK25ldyBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgdGhlIHRyYWNlYmFjayB0aGF0IGlzIGV2ZW50dWFsbHkgZGlzcGxheWVkIHdpbGwKK2luY2x1ZGUgdGhlIG9yaWdpbmF0aW5nIGV4Y2VwdGlvbihzKSBhbmQgdGhlIGZpbmFsIGV4Y2VwdGlvbi4KKworV2hlbiByYWlzaW5nIGEgbmV3IGV4Y2VwdGlvbiAocmF0aGVyIHRoYW4gdXNpbmcgYSBiYXJlIGBgcmFpc2VgYCB0byByZS1yYWlzZQordGhlIGV4Y2VwdGlvbiBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCksIHRoZSBpbXBsaWNpdCBleGNlcHRpb24gY29udGV4dCBjYW4gYmUKK3N1cHBsZW1lbnRlZCB3aXRoIGFuIGV4cGxpY2l0IGNhdXNlIGJ5IHVzaW5nIDprZXl3b3JkOmBmcm9tYCB3aXRoCis6a2V5d29yZDpgcmFpc2VgOjoKKworICAgcmFpc2UgbmV3X2V4YyBmcm9tIG9yaWdpbmFsX2V4YworCitUaGUgZXhwcmVzc2lvbiBmb2xsb3dpbmcgOmtleXdvcmQ6YGZyb21gIG11c3QgYmUgYW4gZXhjZXB0aW9uIG9yIGBgTm9uZWBgLiBJdAord2lsbCBiZSBzZXQgYXMgOmF0dHI6YF9fY2F1c2VfX2Agb24gdGhlIHJhaXNlZCBleGNlcHRpb24uIFNldHRpbmcKKzphdHRyOmBfX2NhdXNlX19gIGFsc28gaW1wbGljaXRseSBzZXRzIHRoZSA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gCithdHRyaWJ1dGUgdG8gYGBUcnVlYGAsIHNvIHRoYXQgdXNpbmcgYGByYWlzZSBuZXdfZXhjIGZyb20gTm9uZWBgCitlZmZlY3RpdmVseSByZXBsYWNlcyB0aGUgb2xkIGV4Y2VwdGlvbiB3aXRoIHRoZSBuZXcgb25lIGZvciBkaXNwbGF5CitwdXJwb3NlcyAoZS5nLiBjb252ZXJ0aW5nIDpleGM6YEtleUVycm9yYCB0byA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAsIHdoaWxlCitsZWF2aW5nIHRoZSBvbGQgZXhjZXB0aW9uIGF2YWlsYWJsZSBpbiA6YXR0cjpgX19jb250ZXh0X19gIGZvciBpbnRyb3NwZWN0aW9uCit3aGVuIGRlYnVnZ2luZy4KKworVGhlIGRlZmF1bHQgdHJhY2ViYWNrIGRpc3BsYXkgY29kZSBzaG93cyB0aGVzZSBjaGFpbmVkIGV4Y2VwdGlvbnMgaW4KK2FkZGl0aW9uIHRvIHRoZSB0cmFjZWJhY2sgZm9yIHRoZSBleGNlcHRpb24gaXRzZWxmLiBBbiBleHBsaWNpdGx5IGNoYWluZWQKK2V4Y2VwdGlvbiBpbiA6YXR0cjpgX19jYXVzZV9fYCBpcyBhbHdheXMgc2hvd24gd2hlbiBwcmVzZW50LiBBbiBpbXBsaWNpdGx5CitjaGFpbmVkIGV4Y2VwdGlvbiBpbiA6YXR0cjpgX19jb250ZXh0X19gIGlzIHNob3duIG9ubHkgaWYgOmF0dHI6YF9fY2F1c2VfX2AKK2lzIDpjb25zdDpgTm9uZWAgYW5kIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgaXMgZmFsc2UuCisKK0luIGVpdGhlciBjYXNlLCB0aGUgZXhjZXB0aW9uIGl0c2VsZiBpcyBhbHdheXMgc2hvd24gYWZ0ZXIgYW55IGNoYWluZWQKK2V4Y2VwdGlvbnMgc28gdGhhdCB0aGUgZmluYWwgbGluZSBvZiB0aGUgdHJhY2ViYWNrIGFsd2F5cyBzaG93cyB0aGUgbGFzdAorZXhjZXB0aW9uIHRoYXQgd2FzIHJhaXNlZC4KKworCitCYXNlIGNsYXNzZXMKKy0tLS0tLS0tLS0tLQorCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHVzZWQgbW9zdGx5IGFzIGJhc2UgY2xhc3NlcyBmb3Igb3RoZXIgZXhjZXB0aW9ucy4KIAogLi4gZXhjZXB0aW9uOjogQmFzZUV4Y2VwdGlvbgpAQCAtOTAsMjcgKzEyNSw4IEBACiAgICBjYW4gYmUgcmFpc2VkIGRpcmVjdGx5IGJ5IDpmdW5jOmBjb2RlY3MubG9va3VwYC4KIAogCi0uLiBleGNlcHRpb246OiBFbnZpcm9ubWVudEVycm9yCi0KLSAgIFRoZSBiYXNlIGNsYXNzIGZvciBleGNlcHRpb25zIHRoYXQgY2FuIG9jY3VyIG91dHNpZGUgdGhlIFB5dGhvbiBzeXN0ZW06Ci0gICA6ZXhjOmBJT0Vycm9yYCwgOmV4YzpgT1NFcnJvcmAuICBXaGVuIGV4Y2VwdGlvbnMgb2YgdGhpcyB0eXBlIGFyZSBjcmVhdGVkIHdpdGggYQotICAgMi10dXBsZSwgdGhlIGZpcnN0IGl0ZW0gaXMgYXZhaWxhYmxlIG9uIHRoZSBpbnN0YW5jZSdzIDphdHRyOmBlcnJub2AgYXR0cmlidXRlCi0gICAoaXQgaXMgYXNzdW1lZCB0byBiZSBhbiBlcnJvciBudW1iZXIpLCBhbmQgdGhlIHNlY29uZCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUKLSAgIDphdHRyOmBzdHJlcnJvcmAgYXR0cmlidXRlIChpdCBpcyB1c3VhbGx5IHRoZSBhc3NvY2lhdGVkIGVycm9yIG1lc3NhZ2UpLiAgVGhlCi0gICB0dXBsZSBpdHNlbGYgaXMgYWxzbyBhdmFpbGFibGUgb24gdGhlIDphdHRyOmBhcmdzYCBhdHRyaWJ1dGUuCi0KLSAgIFdoZW4gYW4gOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAgZXhjZXB0aW9uIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgMy10dXBsZSwgdGhlCi0gICBmaXJzdCB0d28gaXRlbXMgYXJlIGF2YWlsYWJsZSBhcyBhYm92ZSwgd2hpbGUgdGhlIHRoaXJkIGl0ZW0gaXMgYXZhaWxhYmxlIG9uIHRoZQotICAgOmF0dHI6YGZpbGVuYW1lYCBhdHRyaWJ1dGUuICBIb3dldmVyLCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZQotICAgOmF0dHI6YGFyZ3NgIGF0dHJpYnV0ZSBjb250YWlucyBvbmx5IGEgMi10dXBsZSBvZiB0aGUgZmlyc3QgdHdvIGNvbnN0cnVjdG9yCi0gICBhcmd1bWVudHMuCi0KLSAgIFRoZSA6YXR0cjpgZmlsZW5hbWVgIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCB3aGVuIHRoaXMgZXhjZXB0aW9uIGlzIGNyZWF0ZWQgd2l0aAotICAgb3RoZXIgdGhhbiAzIGFyZ3VtZW50cy4gIFRoZSA6YXR0cjpgZXJybm9gIGFuZCA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZXMgYXJlCi0gICBhbHNvIGBgTm9uZWBgIHdoZW4gdGhlIGluc3RhbmNlIHdhcyBjcmVhdGVkIHdpdGggb3RoZXIgdGhhbiAyIG9yIDMgYXJndW1lbnRzLgotICAgSW4gdGhpcyBsYXN0IGNhc2UsIDphdHRyOmBhcmdzYCBjb250YWlucyB0aGUgdmVyYmF0aW0gY29uc3RydWN0b3IgYXJndW1lbnRzIGFzIGEKLSAgIHR1cGxlLgotCitDb25jcmV0ZSBleGNlcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUgdGhlIGV4Y2VwdGlvbnMgdGhhdCBhcmUgdXN1YWxseSByYWlzZWQuCiAKQEAgLTE1MSwyMSArMTY3LDE5IEBACiAgICBpdCBpcyB0ZWNobmljYWxseSBub3QgYW4gZXJyb3IuCiAKIAotLi4gZXhjZXB0aW9uOjogSU9FcnJvcgotCi0gICBSYWlzZWQgd2hlbiBhbiBJL08gb3BlcmF0aW9uIChzdWNoIGFzIHRoZSBidWlsdC1pbiA6ZnVuYzpgcHJpbnRgIG9yCi0gICA6ZnVuYzpgb3BlbmAgZnVuY3Rpb25zIG9yIGEgbWV0aG9kIG9mIGEgOnRlcm06YGZpbGUgb2JqZWN0YCkgZmFpbHMgZm9yIGFuCi0gICBJL08tcmVsYXRlZCByZWFzb24sIGUuZy4sICJmaWxlIG5vdCBmb3VuZCIgb3IgImRpc2sgZnVsbCIuCi0KLSAgIFRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YEVudmlyb25tZW50RXJyb3JgLiAgU2VlIHRoZSBkaXNjdXNzaW9uIGFib3ZlCi0gICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb24gaW5zdGFuY2UgYXR0cmlidXRlcy4KLQotCiAuLiBleGNlcHRpb246OiBJbXBvcnRFcnJvcgogCiAgICBSYWlzZWQgd2hlbiBhbiA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgZmFpbHMgdG8gZmluZCB0aGUgbW9kdWxlIGRlZmluaXRpb24KICAgIG9yIHdoZW4gYSBgYGZyb20gLi4uIGltcG9ydGBgIGZhaWxzIHRvIGZpbmQgYSBuYW1lIHRoYXQgaXMgdG8gYmUgaW1wb3J0ZWQuCiAKKyAgIFRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgdXNpbmcga2V5d29yZC1vbmx5CisgICBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yLiBXaGVuIHNldCB0aGV5IHJlcHJlc2VudCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCisgICB0aGF0IHdhcyBhdHRlbXB0ZWQgdG8gYmUgaW1wb3J0ZWQgYW5kIHRoZSBwYXRoIHRvIGFueSBmaWxlIHdoaWNoIHRyaWdnZXJlZAorICAgdGhlIGV4Y2VwdGlvbiwgcmVzcGVjdGl2ZWx5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMuCisKIAogLi4gZXhjZXB0aW9uOjogSW5kZXhFcnJvcgogCkBAIC0yMjEsMTcgKzIzNSwzMCBAQAogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogZXJybm8KIAotICAgVGhpcyBleGNlcHRpb24gaXMgZGVyaXZlZCBmcm9tIDpleGM6YEVudmlyb25tZW50RXJyb3JgLiAgSXQgaXMgcmFpc2VkIHdoZW4gYQotICAgZnVuY3Rpb24gcmV0dXJucyBhIHN5c3RlbS1yZWxhdGVkIGVycm9yIChub3QgZm9yIGlsbGVnYWwgYXJndW1lbnQgdHlwZXMgb3IKLSAgIG90aGVyIGluY2lkZW50YWwgZXJyb3JzKS4gIFRoZSA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZSBpcyBhIG51bWVyaWMgZXJyb3IKLSAgIGNvZGUgZnJvbSA6YzpkYXRhOmBlcnJub2AsIGFuZCB0aGUgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGUgaXMgdGhlCi0gICBjb3JyZXNwb25kaW5nIHN0cmluZywgYXMgd291bGQgYmUgcHJpbnRlZCBieSB0aGUgQyBmdW5jdGlvbiA6YzpmdW5jOmBwZXJyb3JgLgotICAgU2VlIHRoZSBtb2R1bGUgOm1vZDpgZXJybm9gLCB3aGljaCBjb250YWlucyBuYW1lcyBmb3IgdGhlIGVycm9yIGNvZGVzIGRlZmluZWQKLSAgIGJ5IHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uCisgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHN5c3RlbSBmdW5jdGlvbiByZXR1cm5zIGEgc3lzdGVtLXJlbGF0ZWQKKyAgIGVycm9yLCBpbmNsdWRpbmcgSS9PIGZhaWx1cmVzIHN1Y2ggYXMgImZpbGUgbm90IGZvdW5kIiBvciAiZGlzayBmdWxsIgorICAgKG5vdCBmb3IgaWxsZWdhbCBhcmd1bWVudCB0eXBlcyBvciBvdGhlciBpbmNpZGVudGFsIGVycm9ycykuICBPZnRlbiBhCisgICBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCB3aWxsIGFjdHVhbGx5IGJlIHJhaXNlZCBhcyBkZXNjcmliZWQgaW4KKyAgIGBPUyBleGNlcHRpb25zYF8gYmVsb3cuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgYSBudW1lcmljIGVycm9yCisgICBjb2RlIGZyb20gdGhlIEMgdmFyaWFibGUgOmM6ZGF0YTpgZXJybm9gLgogCi0gICBGb3IgZXhjZXB0aW9ucyB0aGF0IGludm9sdmUgYSBmaWxlIHN5c3RlbSBwYXRoIChzdWNoIGFzIDpmdW5jOmBjaGRpcmAgb3IKLSAgIDpmdW5jOmB1bmxpbmtgKSwgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGNvbnRhaW4gYSB0aGlyZCBhdHRyaWJ1dGUsCi0gICA6YXR0cjpgZmlsZW5hbWVgLCB3aGljaCBpcyB0aGUgZmlsZSBuYW1lIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCisgICBVbmRlciBXaW5kb3dzLCB0aGUgOmF0dHI6YHdpbmVycm9yYCBhdHRyaWJ1dGUgZ2l2ZXMgeW91IHRoZSBuYXRpdmUKKyAgIFdpbmRvd3MgZXJyb3IgY29kZS4gIFRoZSA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZSBpcyB0aGVuIGFuIGFwcHJveGltYXRlCisgICB0cmFuc2xhdGlvbiwgaW4gUE9TSVggdGVybXMsIG9mIHRoYXQgbmF0aXZlIGVycm9yIGNvZGUuCisKKyAgIFVuZGVyIGFsbCBwbGF0Zm9ybXMsIHRoZSA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZSBpcyB0aGUgY29ycmVzcG9uZGluZworICAgZXJyb3IgbWVzc2FnZSBhcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSAoYXMgZm9ybWF0dGVkIGJ5IHRoZSBDCisgICBmdW5jdGlvbnMgOmM6ZnVuYzpgcGVycm9yYCB1bmRlciBQT1NJWCwgYW5kIDpjOmZ1bmM6YEZvcm1hdE1lc3NhZ2VgCisgICBXaW5kb3dzKS4KKworICAgRm9yIGV4Y2VwdGlvbnMgdGhhdCBpbnZvbHZlIGEgZmlsZSBzeXN0ZW0gcGF0aCAoc3VjaCBhcyA6ZnVuYzpgb3BlbmAgb3IKKyAgIDpmdW5jOmBvcy51bmxpbmtgKSwgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGNvbnRhaW4gYW4gYWRkaXRpb25hbAorICAgYXR0cmlidXRlLCA6YXR0cjpgZmlsZW5hbWVgLCB3aGljaCBpcyB0aGUgZmlsZSBuYW1lIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCwgOmV4YzpgSU9FcnJvcmAsIDpleGM6YFdpbmRvd3NFcnJvcmAsCisgICAgICA6ZXhjOmBWTVNFcnJvcmAsIDpleGM6YHNvY2tldC5lcnJvcmAsIDpleGM6YHNlbGVjdC5lcnJvcmAgYW5kCisgICAgICA6ZXhjOmBtbWFwLmVycm9yYCBoYXZlIGJlZW4gbWVyZ2VkIGludG8gOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gZXhjZXB0aW9uOjogT3ZlcmZsb3dFcnJvcgpAQCAtMjYyLDggKzI4OSwyMCBAQAogLi4gZXhjZXB0aW9uOjogU3RvcEl0ZXJhdGlvbgogCiAgICBSYWlzZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG5leHRgIGFuZCBhbiA6dGVybTpgaXRlcmF0b3JgXCdzCi0gICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYCBtZXRob2QgdG8gc2lnbmFsIHRoYXQgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgdmFsdWVzLgorICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kIHRvIHNpZ25hbCB0aGF0IHRoZXJlIGFyZSBubyBmdXJ0aGVyCisgICBpdGVtcyBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuCiAKKyAgIFRoZSBleGNlcHRpb24gb2JqZWN0IGhhcyBhIHNpbmdsZSBhdHRyaWJ1dGUgOmF0dHI6YHZhbHVlYCwgd2hpY2ggaXMKKyAgIGdpdmVuIGFzIGFuIGFyZ3VtZW50IHdoZW4gY29uc3RydWN0aW5nIHRoZSBleGNlcHRpb24sIGFuZCBkZWZhdWx0cworICAgdG8gOmNvbnN0OmBOb25lYC4KKworICAgV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiByZXR1cm5zLCBhIG5ldyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBpbnN0YW5jZSBpcworICAgcmFpc2VkLCBhbmQgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZQorICAgOmF0dHI6YHZhbHVlYCBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBleGNlcHRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBgYHZhbHVlYGAgYXR0cmlidXRlIGFuZCB0aGUgYWJpbGl0eSBmb3IgZ2VuZXJhdG9yIGZ1bmN0aW9ucyB0bworICAgICAgdXNlIGl0IHRvIHJldHVybiBhIHZhbHVlLgogCiAuLiBleGNlcHRpb246OiBTeW50YXhFcnJvcgogCkBAIC0zNDYsNiArMzg1LDMwIEBACiAgICBSYWlzZWQgd2hlbiBhIFVuaWNvZGUtcmVsYXRlZCBlbmNvZGluZyBvciBkZWNvZGluZyBlcnJvciBvY2N1cnMuICBJdCBpcyBhCiAgICBzdWJjbGFzcyBvZiA6ZXhjOmBWYWx1ZUVycm9yYC4KIAorICAgOmV4YzpgVW5pY29kZUVycm9yYCBoYXMgYXR0cmlidXRlcyB0aGF0IGRlc2NyaWJlIHRoZSBlbmNvZGluZyBvciBkZWNvZGluZworICAgZXJyb3IuICBGb3IgZXhhbXBsZSwgYGBlcnIub2JqZWN0W2Vyci5zdGFydDplcnIuZW5kXWBgIGdpdmVzIHRoZSBwYXJ0aWN1bGFyCisgICBpbnZhbGlkIGlucHV0IHRoYXQgdGhlIGNvZGVjIGZhaWxlZCBvbi4KKworICAgLi4gYXR0cmlidXRlOjogZW5jb2RpbmcKKworICAgICAgIFRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHJhaXNlZCB0aGUgZXJyb3IuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHJlYXNvbgorCisgICAgICAgQSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgc3BlY2lmaWMgY29kZWMgZXJyb3IuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG9iamVjdAorCisgICAgICAgVGhlIG9iamVjdCB0aGUgY29kZWMgd2FzIGF0dGVtcHRpbmcgdG8gZW5jb2RlIG9yIGRlY29kZS4KKworICAgLi4gYXR0cmlidXRlOjogc3RhcnQKKworICAgICAgIFRoZSBmaXJzdCBpbmRleCBvZiBpbnZhbGlkIGRhdGEgaW4gOmF0dHI6YG9iamVjdGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGVuZAorCisgICAgICAgVGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGludmFsaWQgZGF0YSBpbiA6YXR0cjpgb2JqZWN0YC4KKwogCiAuLiBleGNlcHRpb246OiBVbmljb2RlRW5jb2RlRXJyb3IKIApAQCAtMzcyLDIxICs0MzUsNiBAQAogICAgbW9yZSBwcmVjaXNlIGV4Y2VwdGlvbiBzdWNoIGFzIDpleGM6YEluZGV4RXJyb3JgLgogCiAKLS4uIGV4Y2VwdGlvbjo6IFZNU0Vycm9yCi0KLSAgIE9ubHkgYXZhaWxhYmxlIG9uIFZNUy4gIFJhaXNlZCB3aGVuIGEgVk1TLXNwZWNpZmljIGVycm9yIG9jY3Vycy4KLQotCi0uLiBleGNlcHRpb246OiBXaW5kb3dzRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYSBXaW5kb3dzLXNwZWNpZmljIGVycm9yIG9jY3VycyBvciB3aGVuIHRoZSBlcnJvciBudW1iZXIgZG9lcyBub3QKLSAgIGNvcnJlc3BvbmQgdG8gYW4gOmM6ZGF0YTpgZXJybm9gIHZhbHVlLiAgVGhlIDphdHRyOmB3aW5lcnJvcmAgYW5kCi0gICA6YXR0cjpgc3RyZXJyb3JgIHZhbHVlcyBhcmUgY3JlYXRlZCBmcm9tIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRoZQotICAgOmM6ZnVuYzpgR2V0TGFzdEVycm9yYCBhbmQgOmM6ZnVuYzpgRm9ybWF0TWVzc2FnZWAgZnVuY3Rpb25zIGZyb20gdGhlIFdpbmRvd3MKLSAgIFBsYXRmb3JtIEFQSS4gVGhlIDphdHRyOmBlcnJub2AgdmFsdWUgbWFwcyB0aGUgOmF0dHI6YHdpbmVycm9yYCB2YWx1ZSB0bwotICAgY29ycmVzcG9uZGluZyBgYGVycm5vLmhgYCB2YWx1ZXMuIFRoaXMgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KLQotCiAuLiBleGNlcHRpb246OiBaZXJvRGl2aXNpb25FcnJvcgogCiAgICBSYWlzZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIGEgZGl2aXNpb24gb3IgbW9kdWxvIG9wZXJhdGlvbiBpcyB6ZXJvLiAgVGhlCkBAIC0zOTQsNiArNDQyLDEzNiBAQAogICAgb3BlcmF0aW9uLgogCiAKK1RoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUga2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zOworc3RhcnRpbmcgZnJvbSBQeXRob24gMy4zLCB0aGV5IGFyZSBhbGlhc2VzIG9mIDpleGM6YE9TRXJyb3JgLgorCisuLiBleGNlcHRpb246OiBFbnZpcm9ubWVudEVycm9yCisKKy4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKKworLi4gZXhjZXB0aW9uOjogVk1TRXJyb3IKKworICAgT25seSBhdmFpbGFibGUgb24gVk1TLgorCisuLiBleGNlcHRpb246OiBXaW5kb3dzRXJyb3IKKworICAgT25seSBhdmFpbGFibGUgb24gV2luZG93cy4KKworCitPUyBleGNlcHRpb25zCiteXl5eXl5eXl5eXl5eCisKK1RoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUgc3ViY2xhc3NlcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhleSBnZXQgcmFpc2VkCitkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBlcnJvciBjb2RlLgorCisuLiBleGNlcHRpb246OiBCbG9ja2luZ0lPRXJyb3IKKworICAgUmFpc2VkIHdoZW4gYW4gb3BlcmF0aW9uIHdvdWxkIGJsb2NrIG9uIGFuIG9iamVjdCAoZS5nLiBzb2NrZXQpIHNldAorICAgZm9yIG5vbi1ibG9ja2luZyBvcGVyYXRpb24uCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQUdBSU5gYCwgYGBFQUxSRUFEWWBgLAorICAgYGBFV09VTERCTE9DS2BgIGFuZCBgYEVJTlBST0dSRVNTYGAuCisKKyAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YE9TRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGNhbiBoYXZlCisgICBvbmUgbW9yZSBhdHRyaWJ1dGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNoYXJhY3RlcnNfd3JpdHRlbgorCisgICAgICBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbQorICAgICAgYmVmb3JlIGl0IGJsb2NrZWQuICBUaGlzIGF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUKKyAgICAgIGJ1ZmZlcmVkIEkvTyBjbGFzc2VzIGZyb20gdGhlIDptb2Q6YGlvYCBtb2R1bGUuCisKKy4uIGV4Y2VwdGlvbjo6IENoaWxkUHJvY2Vzc0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiBvbiBhIGNoaWxkIHByb2Nlc3MgZmFpbGVkLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNISUxEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25FcnJvcgorCisgICBBIGJhc2UgY2xhc3MgZm9yIGNvbm5lY3Rpb24tcmVsYXRlZCBpc3N1ZXMuCisKKyAgIFN1YmNsYXNzZXMgYXJlIDpleGM6YEJyb2tlblBpcGVFcnJvcmAsIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLAorICAgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgYW5kIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYC4KKworLi4gZXhjZXB0aW9uOjogQnJva2VuUGlwZUVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIG9uIGEKKyAgIHBpcGUgd2hpbGUgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQsIG9yIHRyeWluZyB0byB3cml0ZSBvbiBhIHNvY2tldAorICAgd2hpY2ggaGFzIGJlZW4gc2h1dGRvd24gZm9yIHdyaXRpbmcuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFUElQRWBgIGFuZCBgYEVTSFVURE9XTmBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uQWJvcnRlZEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGF0dGVtcHQKKyAgIGlzIGFib3J0ZWQgYnkgdGhlIHBlZXIuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQ09OTkFCT1JURURgYC4KKworLi4gZXhjZXB0aW9uOjogQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICBpcyByZWZ1c2VkIGJ5IHRoZSBwZWVyLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNPTk5SRUZVU0VEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25SZXNldEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzCisgICByZXNldCBieSB0aGUgcGVlci4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDT05OUkVTRVRgYC4KKworLi4gZXhjZXB0aW9uOjogRmlsZUV4aXN0c0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGljaCBhbHJlYWR5IGV4aXN0cy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVFWElTVGBgLgorCisuLiBleGNlcHRpb246OiBGaWxlTm90Rm91bmRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHJlcXVlc3RlZCBidXQgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT0VOVGBgLgorCisuLiBleGNlcHRpb246OiBJbnRlcnJ1cHRlZEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYW4gaW5jb21pbmcgc2lnbmFsLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUlOVFJgYC4KKworLi4gZXhjZXB0aW9uOjogSXNBRGlyZWN0b3J5RXJyb3IKKworICAgUmFpc2VkIHdoZW4gYSBmaWxlIG9wZXJhdGlvbiAoc3VjaCBhcyA6ZnVuYzpgb3MucmVtb3ZlYCkgaXMgcmVxdWVzdGVkCisgICBvbiBhIGRpcmVjdG9yeS4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVJU0RJUmBgLgorCisuLiBleGNlcHRpb246OiBOb3RBRGlyZWN0b3J5RXJyb3IKKworICAgUmFpc2VkIHdoZW4gYSBkaXJlY3Rvcnkgb3BlcmF0aW9uIChzdWNoIGFzIDpmdW5jOmBvcy5saXN0ZGlyYCkgaXMgcmVxdWVzdGVkCisgICBvbiBzb21ldGhpbmcgd2hpY2ggaXMgbm90IGEgZGlyZWN0b3J5LgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRU5PVERJUmBgLgorCisuLiBleGNlcHRpb246OiBQZXJtaXNzaW9uRXJyb3IKKworICAgUmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHJ1biBhbiBvcGVyYXRpb24gd2l0aG91dCB0aGUgYWRlcXVhdGUgYWNjZXNzCisgICByaWdodHMgLSBmb3IgZXhhbXBsZSBmaWxlc3lzdGVtIHBlcm1pc3Npb25zLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUFDQ0VTYGAgYW5kIGBgRVBFUk1gYC4KKworLi4gZXhjZXB0aW9uOjogUHJvY2Vzc0xvb2t1cEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZ2l2ZW4gcHJvY2VzcyBkb2Vzbid0IGV4aXN0LgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRVNSQ0hgYC4KKworLi4gZXhjZXB0aW9uOjogVGltZW91dEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGZ1bmN0aW9uIHRpbWVkIG91dCBhdCB0aGUgc3lzdGVtIGxldmVsLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRVRJTUVET1VUYGAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgQWxsIHRoZSBhYm92ZSA6ZXhjOmBPU0Vycm9yYCBzdWJjbGFzc2VzIHdlcmUgYWRkZWQuCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxNTFgIC0gUmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gZXhjZXB0aW9uIGhpZXJhcmNoeQorCisKK1dhcm5pbmdzCistLS0tLS0tLQorCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHVzZWQgYXMgd2FybmluZyBjYXRlZ29yaWVzOyBzZWUgdGhlIDptb2Q6YHdhcm5pbmdzYAogbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0IGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzMzNjIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApAQCAtMCwwICsxLDEzNiBAQAorOm1vZDpgZmF1bHRoYW5kbGVyYCAtLS0gRHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjaworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBmYXVsdGhhbmRsZXIKKyAgIDpzeW5vcHNpczogRHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjay4KKworVGhpcyBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIHRvIGR1bXAgUHl0aG9uIHRyYWNlYmFja3MgZXhwbGljaXRseSwgb24gYSBmYXVsdCwKK2FmdGVyIGEgdGltZW91dCwgb3Igb24gYSB1c2VyIHNpZ25hbC4gQ2FsbCA6ZnVuYzpgZmF1bHRoYW5kbGVyLmVuYWJsZWAgdG8KK2luc3RhbGwgZmF1bHQgaGFuZGxlcnMgZm9yIHRoZSA6Y29uc3Q6YFNJR1NFR1ZgLCA6Y29uc3Q6YFNJR0ZQRWAsCis6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AsIGFuZCA6Y29uc3Q6YFNJR0lMTGAgc2lnbmFscy4gWW91IGNhbiBhbHNvCitlbmFibGUgdGhlbSBhdCBzdGFydHVwIGJ5IHNldHRpbmcgdGhlIDplbnZ2YXI6YFBZVEhPTkZBVUxUSEFORExFUmAgZW52aXJvbm1lbnQKK3ZhcmlhYmxlIG9yIGJ5IHVzaW5nIDpvcHRpb246YC1YYCBgYGZhdWx0aGFuZGxlcmBgIGNvbW1hbmQgbGluZSBvcHRpb24uCisKK1RoZSBmYXVsdCBoYW5kbGVyIGlzIGNvbXBhdGlibGUgd2l0aCBzeXN0ZW0gZmF1bHQgaGFuZGxlcnMgbGlrZSBBcHBvcnQgb3IgdGhlCitXaW5kb3dzIGZhdWx0IGhhbmRsZXIuIFRoZSBtb2R1bGUgdXNlcyBhbiBhbHRlcm5hdGl2ZSBzdGFjayBmb3Igc2lnbmFsIGhhbmRsZXJzCitpZiB0aGUgOmM6ZnVuYzpgc2lnYWx0c3RhY2tgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZS4gVGhpcyBhbGxvd3MgaXQgdG8gZHVtcCB0aGUKK3RyYWNlYmFjayBldmVuIG9uIGEgc3RhY2sgb3ZlcmZsb3cuCisKK1RoZSBmYXVsdCBoYW5kbGVyIGlzIGNhbGxlZCBvbiBjYXRhc3Ryb3BoaWMgY2FzZXMgYW5kIHRoZXJlZm9yZSBjYW4gb25seSB1c2UKK3NpZ25hbC1zYWZlIGZ1bmN0aW9ucyAoZS5nLiBpdCBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IG9uIHRoZSBoZWFwKS4gQmVjYXVzZSBvZgordGhpcyBsaW1pdGF0aW9uIHRyYWNlYmFjayBkdW1waW5nIGlzIG1pbmltYWwgY29tcGFyZWQgdG8gbm9ybWFsIFB5dGhvbgordHJhY2ViYWNrczoKKworKiBPbmx5IEFTQ0lJIGlzIHN1cHBvcnRlZC4gVGhlIGBgYmFja3NsYXNocmVwbGFjZWBgIGVycm9yIGhhbmRsZXIgaXMgdXNlZCBvbgorICBlbmNvZGluZy4KKyogRWFjaCBzdHJpbmcgaXMgbGltaXRlZCB0byA1MDAgY2hhcmFjdGVycy4KKyogT25seSB0aGUgZmlsZW5hbWUsIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCB0aGUgbGluZSBudW1iZXIgYXJlCisgIGRpc3BsYXllZC4gKG5vIHNvdXJjZSBjb2RlKQorKiBJdCBpcyBsaW1pdGVkIHRvIDEwMCBmcmFtZXMgYW5kIDEwMCB0aHJlYWRzLgorCitCeSBkZWZhdWx0LCB0aGUgUHl0aG9uIHRyYWNlYmFjayBpcyB3cml0dGVuIHRvIDpkYXRhOmBzeXMuc3RkZXJyYC4gVG8gc2VlCit0cmFjZWJhY2tzLCBhcHBsaWNhdGlvbnMgbXVzdCBiZSBydW4gaW4gdGhlIHRlcm1pbmFsLiBBIGxvZyBmaWxlIGNhbgorYWx0ZXJuYXRpdmVseSBiZSBwYXNzZWQgdG8gOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgLgorCitUaGUgbW9kdWxlIGlzIGltcGxlbWVudGVkIGluIEMsIHNvIHRyYWNlYmFja3MgY2FuIGJlIGR1bXBlZCBvbiBhIGNyYXNoIG9yIHdoZW4KK1B5dGhvbiBpcyBkZWFkbG9ja2VkLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitEdW1wIHRoZSB0cmFjZWJhY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGR1bXBfdHJhY2ViYWNrKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgRHVtcCB0aGUgdHJhY2ViYWNrcyBvZiBhbGwgdGhyZWFkcyBpbnRvICpmaWxlKi4gSWYgKmFsbF90aHJlYWRzKiBpcworICAgYGBGYWxzZWBgLCBkdW1wIG9ubHkgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisKK0ZhdWx0IGhhbmRsZXIgc3RhdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBlbmFibGUoZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlKQorCisgICBFbmFibGUgdGhlIGZhdWx0IGhhbmRsZXI6IGluc3RhbGwgaGFuZGxlcnMgZm9yIHRoZSA6Y29uc3Q6YFNJR1NFR1ZgLAorICAgOmNvbnN0OmBTSUdGUEVgLCA6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AgYW5kIDpjb25zdDpgU0lHSUxMYAorICAgc2lnbmFscyB0byBkdW1wIHRoZSBQeXRob24gdHJhY2ViYWNrLiBJZiAqYWxsX3RocmVhZHMqIGlzIGBgVHJ1ZWBgLAorICAgcHJvZHVjZSB0cmFjZWJhY2tzIGZvciBldmVyeSBydW5uaW5nIHRocmVhZC4gT3RoZXJ3aXNlLCBkdW1wIG9ubHkgdGhlIGN1cnJlbnQKKyAgIHRocmVhZC4KKworLi4gZnVuY3Rpb246OiBkaXNhYmxlKCkKKworICAgRGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcjogdW5pbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlcnMgaW5zdGFsbGVkIGJ5CisgICA6ZnVuYzpgZW5hYmxlYC4KKworLi4gZnVuY3Rpb246OiBpc19lbmFibGVkKCkKKworICAgQ2hlY2sgaWYgdGhlIGZhdWx0IGhhbmRsZXIgaXMgZW5hYmxlZC4KKworCitEdW1wIHRoZSB0cmFjZWJhY2tzIGFmdGVyIGEgdGltZW91dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBkdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCByZXBlYXQ9RmFsc2UsIGZpbGU9c3lzLnN0ZGVyciwgZXhpdD1GYWxzZSkKKworICAgRHVtcCB0aGUgdHJhY2ViYWNrcyBvZiBhbGwgdGhyZWFkcywgYWZ0ZXIgYSB0aW1lb3V0IG9mICp0aW1lb3V0KiBzZWNvbmRzLCBvcgorICAgZXZlcnkgKnRpbWVvdXQqIHNlY29uZHMgaWYgKnJlcGVhdCogaXMgYGBUcnVlYGAuICBJZiAqZXhpdCogaXMgYGBUcnVlYGAsIGNhbGwKKyAgIDpjOmZ1bmM6YF9leGl0YCB3aXRoIHN0YXR1cz0xIGFmdGVyIGR1bXBpbmcgdGhlIHRyYWNlYmFja3MuICAoTm90ZQorICAgOmM6ZnVuYzpgX2V4aXRgIGV4aXRzIHRoZSBwcm9jZXNzIGltbWVkaWF0ZWx5LCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGRvIGFueQorICAgY2xlYW51cCBsaWtlIGZsdXNoaW5nIGZpbGUgYnVmZmVycy4pIElmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgdHdpY2UsIHRoZSBuZXcKKyAgIGNhbGwgcmVwbGFjZXMgcHJldmlvdXMgcGFyYW1ldGVycyBhbmQgcmVzZXRzIHRoZSB0aW1lb3V0LiBUaGUgdGltZXIgaGFzIGEKKyAgIHN1Yi1zZWNvbmQgcmVzb2x1dGlvbi4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHdhdGNoZG9nIHRocmVhZCBhbmQgdGhlcmVmb3JlIGlzIG5vdAorICAgYXZhaWxhYmxlIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIHRocmVhZHMgZGlzYWJsZWQuCisKKy4uIGZ1bmN0aW9uOjogY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKworICAgQ2FuY2VsIHRoZSBsYXN0IGNhbGwgdG8gOmZ1bmM6YGR1bXBfdHJhY2ViYWNrX2xhdGVyYC4KKworCitEdW1wIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiByZWdpc3RlcihzaWdudW0sIGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSwgY2hhaW49RmFsc2UpCisKKyAgIFJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IGluc3RhbGwgYSBoYW5kbGVyIGZvciB0aGUgKnNpZ251bSogc2lnbmFsIHRvIGR1bXAKKyAgIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMsIG9yIG9mIHRoZSBjdXJyZW50IHRocmVhZCBpZiAqYWxsX3RocmVhZHMqIGlzCisgICBgYEZhbHNlYGAsIGludG8gKmZpbGUqLiBDYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyIGlmIGNoYWluIGlzIGBgVHJ1ZWBgLgorCisgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKy4uIGZ1bmN0aW9uOjogdW5yZWdpc3RlcihzaWdudW0pCisKKyAgIFVucmVnaXN0ZXIgYSB1c2VyIHNpZ25hbDogdW5pbnN0YWxsIHRoZSBoYW5kbGVyIG9mIHRoZSAqc2lnbnVtKiBzaWduYWwKKyAgIGluc3RhbGxlZCBieSA6ZnVuYzpgcmVnaXN0ZXJgLiBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHNpZ25hbCB3YXMgcmVnaXN0ZXJlZCwKKyAgIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKKyAgIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KKworCitGaWxlIGRlc2NyaXB0b3IgaXNzdWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6ZnVuYzpgZW5hYmxlYCwgOmZ1bmM6YGR1bXBfdHJhY2ViYWNrX2xhdGVyYCBhbmQgOmZ1bmM6YHJlZ2lzdGVyYCBrZWVwIHRoZQorZmlsZSBkZXNjcmlwdG9yIG9mIHRoZWlyICpmaWxlKiBhcmd1bWVudC4gSWYgdGhlIGZpbGUgaXMgY2xvc2VkIGFuZCBpdHMgZmlsZQorZGVzY3JpcHRvciBpcyByZXVzZWQgYnkgYSBuZXcgZmlsZSwgb3IgaWYgOmZ1bmM6YG9zLmR1cDJgIGlzIHVzZWQgdG8gcmVwbGFjZQordGhlIGZpbGUgZGVzY3JpcHRvciwgdGhlIHRyYWNlYmFjayB3aWxsIGJlIHdyaXR0ZW4gaW50byBhIGRpZmZlcmVudCBmaWxlLiBDYWxsCit0aGVzZSBmdW5jdGlvbnMgYWdhaW4gZWFjaCB0aW1lIHRoYXQgdGhlIGZpbGUgaXMgcmVwbGFjZWQuCisKKworRXhhbXBsZQorLS0tLS0tLQorCitFeGFtcGxlIG9mIGEgc2VnbWVudGF0aW9uIGZhdWx0IG9uIExpbnV4OiA6OgorCisgICAgJCBweXRob24gLXEgLVggZmF1bHRoYW5kbGVyCisgICAgPj4+IGltcG9ydCBjdHlwZXMKKyAgICA+Pj4gY3R5cGVzLnN0cmluZ19hdCgwKQorICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogU2VnbWVudGF0aW9uIGZhdWx0CisKKyAgICBDdXJyZW50IHRocmVhZCAweDAwMDA3ZmI4OTlmMzk3MDA6CisgICAgICBGaWxlICIvaG9tZS9weXRob24vY3B5dGhvbi9MaWIvY3R5cGVzL19faW5pdF9fLnB5IiwgbGluZSA0ODYgaW4gc3RyaW5nX2F0CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxIGluIDxtb2R1bGU+CisgICAgU2VnbWVudGF0aW9uIGZhdWx0CisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdCBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdAppbmRleCA2MTkyNDAwLi45YTljZGMxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mY250bC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmNudGwucnN0CkBAIC0xOSw2ICsxOSwxMSBAQAogYGBzeXMuc3RkaW4uZmlsZW5vKClgYCwgb3IgYSA6Y2xhc3M6YGlvLklPQmFzZWAgb2JqZWN0LCBzdWNoIGFzIGBgc3lzLnN0ZGluYGAKIGl0c2VsZiwgd2hpY2ggcHJvdmlkZXMgYSA6bWV0aDpgZmlsZW5vYCB0aGF0IHJldHVybnMgYSBnZW51aW5lIGZpbGUgZGVzY3JpcHRvci4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIE9wZXJhdGlvbnMgaW4gdGhpcyBtb2R1bGUgdXNlZCB0byByYWlzZSBhIDpleGM6YElPRXJyb3JgIHdoZXJlIHRoZXkgbm93CisgICByYWlzZSBhIDpleGM6YE9TRXJyb3JgLgorCisKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCkBAIC00MCw3ICs0NSw3IEBACiAgICBsYXJnZXIgdGhhbiAxMDI0IGJ5dGVzLCB0aGlzIGlzIG1vc3QgbGlrZWx5IHRvIHJlc3VsdCBpbiBhIHNlZ21lbnRhdGlvbgogICAgdmlvbGF0aW9uIG9yIGEgbW9yZSBzdWJ0bGUgZGF0YSBjb3JydXB0aW9uLgogCi0gICBJZiB0aGUgOmM6ZnVuYzpgZmNudGxgIGZhaWxzLCBhbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBJZiB0aGUgOmM6ZnVuYzpgZmNudGxgIGZhaWxzLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKIAogLi4gZnVuY3Rpb246OiBpb2N0bChmZCwgb3BbLCBhcmdbLCBtdXRhdGVfZmxhZ11dKQpAQCAtMTA3LDcgKzExMiw3IEBACiAgICBXaGVuICpvcGVyYXRpb24qIGlzIDpjb25zdDpgTE9DS19TSGAgb3IgOmNvbnN0OmBMT0NLX0VYYCwgaXQgY2FuIGFsc28gYmUKICAgIGJpdHdpc2UgT1JlZCB3aXRoIDpjb25zdDpgTE9DS19OQmAgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4KICAgIElmIDpjb25zdDpgTE9DS19OQmAgaXMgdXNlZCBhbmQgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbgotICAgOmV4YzpgSU9FcnJvcmAgd2lsbCBiZSByYWlzZWQgYW5kIHRoZSBleGNlcHRpb24gd2lsbCBoYXZlIGFuICplcnJubyoKKyAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwgaGF2ZSBhbiAqZXJybm8qCiAgICBhdHRyaWJ1dGUgc2V0IHRvIDpjb25zdDpgRUFDQ0VTYCBvciA6Y29uc3Q6YEVBR0FJTmAgKGRlcGVuZGluZyBvbiB0aGUKICAgIG9wZXJhdGluZyBzeXN0ZW07IGZvciBwb3J0YWJpbGl0eSwgY2hlY2sgZm9yIGJvdGggdmFsdWVzKS4gIE9uIGF0IGxlYXN0IHNvbWUKICAgIHN5c3RlbXMsIDpjb25zdDpgTE9DS19FWGAgY2FuIG9ubHkgYmUgdXNlZCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHJlZmVycyB0byBhCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlY21wLnJzdCBiL0RvYy9saWJyYXJ5L2ZpbGVjbXAucnN0CmluZGV4IDhmZDIzZGQuLjhhODhmOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZpbGVjbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVjbXAucnN0CkBAIC0yMSwxMSArMjEsOCBAQAogICAgQ29tcGFyZSB0aGUgZmlsZXMgbmFtZWQgKmYxKiBhbmQgKmYyKiwgcmV0dXJuaW5nIGBgVHJ1ZWBgIGlmIHRoZXkgc2VlbSBlcXVhbCwKICAgIGBgRmFsc2VgYCBvdGhlcndpc2UuCiAKLSAgIFVubGVzcyAqc2hhbGxvdyogaXMgZ2l2ZW4gYW5kIGlzIGZhbHNlLCBmaWxlcyB3aXRoIGlkZW50aWNhbCA6ZnVuYzpgb3Muc3RhdGAKLSAgIHNpZ25hdHVyZXMgYXJlIHRha2VuIHRvIGJlIGVxdWFsLgotCi0gICBGaWxlcyB0aGF0IHdlcmUgY29tcGFyZWQgdXNpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBiZSBjb21wYXJlZCBhZ2FpbiB1bmxlc3MKLSAgIHRoZWlyIDpmdW5jOmBvcy5zdGF0YCBzaWduYXR1cmUgY2hhbmdlcy4KKyAgIElmICpzaGFsbG93KiBpcyB0cnVlLCBmaWxlcyB3aXRoIGlkZW50aWNhbCA6ZnVuYzpgb3Muc3RhdGAgc2lnbmF0dXJlcyBhcmUKKyAgIHRha2VuIHRvIGJlIGVxdWFsLiAgT3RoZXJ3aXNlLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGVzIGFyZSBjb21wYXJlZC4KIAogICAgTm90ZSB0aGF0IG5vIGV4dGVybmFsIHByb2dyYW1zIGFyZSBjYWxsZWQgZnJvbSB0aGlzIGZ1bmN0aW9uLCBnaXZpbmcgaXQKICAgIHBvcnRhYmlsaXR5IGFuZCBlZmZpY2llbmN5LgpAQCAtNTEsMjMgKzQ4LDExIEBACiAgICBvbmUgb2YgdGhlIHRocmVlIHJldHVybmVkIGxpc3RzLgogCiAKLUV4YW1wbGU6OgotCi0gICA+Pj4gaW1wb3J0IGZpbGVjbXAKLSAgID4+PiBmaWxlY21wLmNtcCgndW5kb2MucnN0JywgJ3VuZG9jLnJzdCcpICMgZG9jdGVzdDogK1NLSVAKLSAgIFRydWUKLSAgID4+PiBmaWxlY21wLmNtcCgndW5kb2MucnN0JywgJ2luZGV4LnJzdCcpICMgZG9jdGVzdDogK1NLSVAKLSAgIEZhbHNlCi0KLQogLi4gX2RpcmNtcC1vYmplY3RzOgogCiBUaGUgOmNsYXNzOmBkaXJjbXBgIGNsYXNzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTpjbGFzczpgZGlyY21wYCBpbnN0YW5jZXMgYXJlIGJ1aWx0IHVzaW5nIHRoaXMgY29uc3RydWN0b3I6Ci0KLQogLi4gY2xhc3M6OiBkaXJjbXAoYSwgYiwgaWdub3JlPU5vbmUsIGhpZGU9Tm9uZSkKIAogICAgQ29uc3RydWN0IGEgbmV3IGRpcmVjdG9yeSBjb21wYXJpc29uIG9iamVjdCwgdG8gY29tcGFyZSB0aGUgZGlyZWN0b3JpZXMgKmEqIGFuZApAQCAtODMsNyArNjgsNyBAQAogCiAgICAuLiBtZXRob2Q6OiByZXBvcnQoKQogCi0gICAgICBQcmludCAodG8gYGBzeXMuc3Rkb3V0YGApIGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqLgorICAgICAgUHJpbnQgKHRvIDpkYXRhOmBzeXMuc3Rkb3V0YCkgYSBjb21wYXJpc29uIGJldHdlZW4gKmEqIGFuZCAqYiouCiAKIAogICAgLi4gbWV0aG9kOjogcmVwb3J0X3BhcnRpYWxfY2xvc3VyZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYzQ0MzExLi5mOGVjNDM2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTI4LDcgKzI4LDEwIEBACiBBbGwgZmlsZXMgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieQogc3BlY2lmeWluZyB0aGUgKm1vZGUqIHBhcmFtZXRlciBpbiB0aGUgY2FsbCB0byA6ZnVuYzpgLmlucHV0YCBvcgogOmNsYXNzOmBGaWxlSW5wdXRgLiAgSWYgYW4gSS9PIGVycm9yIG9jY3VycyBkdXJpbmcgb3BlbmluZyBvciByZWFkaW5nIGEgZmlsZSwKLTpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKzpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkOyBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIElmIGBgc3lzLnN0ZGluYGAgaXMgdXNlZCBtb3JlIHRoYW4gb25jZSwgdGhlIHNlY29uZCBhbmQgZnVydGhlciB1c2Ugd2lsbCByZXR1cm4KIG5vIGxpbmVzLCBleGNlcHQgcGVyaGFwcyBmb3IgaW50ZXJhY3RpdmUgdXNlLCBvciBpZiBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IHJlc2V0CkBAIC0xNjgsMTAgKzE3MSw2IEBACiBpdCBpcyBkZWxldGVkIHdoZW4gdGhlIG91dHB1dCBmaWxlIGlzIGNsb3NlZC4gIEluLXBsYWNlIGZpbHRlcmluZyBpcyBkaXNhYmxlZAogd2hlbiBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLgogCi0uLiBub3RlOjoKLQotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgd29yayBmb3IgTVMtRE9TIDgrMyBmaWxlc3lzdGVtcy4KLQogCiBUaGUgdHdvIGZvbGxvd2luZyBvcGVuaW5nIGhvb2tzIGFyZSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggMzI3NGYxOS4uYWJkODQ4MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC00MCw3ICs0MCw3IEBACiAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgogCi0uLiBjbGFzczo6IEZUUChob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JydbLCB0aW1lb3V0XSkKKy4uIGNsYXNzOjogRlRQKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgRlRQYCBjbGFzcy4gIFdoZW4gKmhvc3QqIGlzIGdpdmVuLCB0aGUKICAgIG1ldGhvZCBjYWxsIGBgY29ubmVjdChob3N0KWBgIGlzIG1hZGUuICBXaGVuICp1c2VyKiBpcyBnaXZlbiwgYWRkaXRpb25hbGx5CkBAIC00OCw3ICs0OCw4IEBACiAgICAqYWNjdCogZGVmYXVsdCB0byB0aGUgZW1wdHkgc3RyaW5nIHdoZW4gbm90IGdpdmVuKS4gIFRoZSBvcHRpb25hbCAqdGltZW91dCoKICAgIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIGJsb2NraW5nIG9wZXJhdGlvbnMgbGlrZSB0aGUKICAgIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgaXMgbm90IHNwZWNpZmllZCwgdGhlIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZwotICAgd2lsbCBiZSB1c2VkKS4KKyAgIHdpbGwgYmUgdXNlZCkuICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQKKyAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgogCiAgICA6Y2xhc3M6YEZUUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuIEhlcmUgaXMgYSBzYW1wbGUKICAgIG9uIGhvdyB1c2luZyBpdDoKQEAgLTY4LDggKzY5LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCi0uLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBba2V5ZmlsZVssIGNlcnRmaWxlWywgY29udGV4dFssIHRpbWVvdXRdXV1dKQorCisuLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgRlRQYCBzdWJjbGFzcyB3aGljaCBhZGRzIFRMUyBzdXBwb3J0IHRvIEZUUCBhcyBkZXNjcmliZWQgaW4KICAgIDpyZmM6YDQyMTdgLgpAQCAtODAsMTAgKzg0LDE1IEBACiAgICBwcml2YXRlIGtleSBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBuYW1lIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uCiAgICAqY29udGV4dCogcGFyYW1ldGVyIGlzIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cwogICAgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhCi0gICBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4KKyAgIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkgc3RydWN0dXJlLiAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZQorICAgYGAoaG9zdCwgcG9ydClgYCBmb3IgdGhlIHNvY2tldCB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUKKyAgIGNvbm5lY3RpbmcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczoKIAogICAgPj4+IGZyb20gZnRwbGliIGltcG9ydCBGVFBfVExTCkBAIC0xMzUsOCArMTQ0LDcgQEAKICAgIFRoZSBzZXQgb2YgYWxsIGV4Y2VwdGlvbnMgKGFzIGEgdHVwbGUpIHRoYXQgbWV0aG9kcyBvZiA6Y2xhc3M6YEZUUGAKICAgIGluc3RhbmNlcyBtYXkgcmFpc2UgYXMgYSByZXN1bHQgb2YgcHJvYmxlbXMgd2l0aCB0aGUgRlRQIGNvbm5lY3Rpb24gKGFzCiAgICBvcHBvc2VkIHRvIHByb2dyYW1taW5nIGVycm9ycyBtYWRlIGJ5IHRoZSBjYWxsZXIpLiAgVGhpcyBzZXQgaW5jbHVkZXMgdGhlCi0gICBmb3VyIGV4Y2VwdGlvbnMgbGlzdGVkIGFib3ZlIGFzIHdlbGwgYXMgOmV4Yzpgc29ja2V0LmVycm9yYCBhbmQKLSAgIDpleGM6YElPRXJyb3JgLgorICAgZm91ciBleGNlcHRpb25zIGxpc3RlZCBhYm92ZSBhcyB3ZWxsIGFzIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTc0LDcgKzE4Miw3IEBACiAgICBkZWJ1Z2dpbmcgb3V0cHV0LCBsb2dnaW5nIGVhY2ggbGluZSBzZW50IGFuZCByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBjb25uZWN0aW9uLgogCiAKLS4uIG1ldGhvZDo6IEZUUC5jb25uZWN0KGhvc3Q9JycsIHBvcnQ9MFssIHRpbWVvdXRdKQorLi4gbWV0aG9kOjogRlRQLmNvbm5lY3QoaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIENvbm5lY3QgdG8gdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQuICBUaGUgZGVmYXVsdCBwb3J0IG51bWJlciBpcyBgYDIxYGAsIGFzCiAgICBzcGVjaWZpZWQgYnkgdGhlIEZUUCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uLiAgSXQgaXMgcmFyZWx5IG5lZWRlZCB0byBzcGVjaWZ5IGEKQEAgLTE4MiwxMCArMTkwLDE0IEBACiAgICBpbnN0YW5jZTsgaXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXQgYWxsIGlmIGEgaG9zdCB3YXMgZ2l2ZW4gd2hlbiB0aGUgaW5zdGFuY2UKICAgIHdhcyBjcmVhdGVkLiAgQWxsIG90aGVyIG1ldGhvZHMgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KICAgIG1hZGUuCi0KICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQuIElmIG5vICp0aW1lb3V0KiBpcyBwYXNzZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0CiAgICBzZXR0aW5nIHdpbGwgYmUgdXNlZC4KKyAgICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcworICAgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKIC4uIG1ldGhvZDo6IEZUUC5nZXR3ZWxjb21lKCkKQEAgLTI0MSwxMyArMjUzLDEyIEBACiAKICAgIFJldHJpZXZlIGEgZmlsZSBvciBkaXJlY3RvcnkgbGlzdGluZyBpbiBBU0NJSSB0cmFuc2ZlciBtb2RlLiAgKmNtZCogc2hvdWxkIGJlCiAgICBhbiBhcHByb3ByaWF0ZSBgYFJFVFJgYCBjb21tYW5kIChzZWUgOm1ldGg6YHJldHJiaW5hcnlgKSBvciBhIGNvbW1hbmQgc3VjaCBhcwotICAgYGBMSVNUYGAsIGBgTkxTVGBgIG9yIGBgTUxTRGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KKyAgIGBgTElTVGBgIG9yIGBgTkxTVGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KICAgIGBgTElTVGBgIHJldHJpZXZlcyBhIGxpc3Qgb2YgZmlsZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IHRob3NlIGZpbGVzLgotICAgYGBOTFNUYGAgcmV0cmlldmVzIGEgbGlzdCBvZiBmaWxlIG5hbWVzLiAgT24gc29tZSBzZXJ2ZXJzLCBgYE1MU0RgYCByZXRyaWV2ZXMKLSAgIGEgbWFjaGluZSByZWFkYWJsZSBsaXN0IG9mIGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZSBmaWxlcy4gIFRoZQotICAgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnRhaW5pbmcKLSAgIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqIHByaW50cyB0aGUKLSAgIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCisgICBgYE5MU1RgYCByZXRyaWV2ZXMgYSBsaXN0IG9mIGZpbGUgbmFtZXMuCisgICBUaGUgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50CisgICBjb250YWluaW5nIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqCisgICBwcmludHMgdGhlIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCiAKIAogLi4gbWV0aG9kOjogRlRQLnNldF9wYXN2KGJvb2xlYW4pCkBAIC0zMDcsNiArMzE4LDIwIEBACiAgICBpbiA6bWV0aDpgdHJhbnNmZXJjbWRgLgogCiAKKy4uIG1ldGhvZDo6IEZUUC5tbHNkKHBhdGg9IiIsIGZhY3RzPVtdKQorCisgICBMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNEIGNvbW1hbmQKKyAgICg6cmZjOmAzNjU5YCkuICBJZiAqcGF0aCogaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYXNzdW1lZC4KKyAgICpmYWN0cyogaXMgYSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIGluZm9ybWF0aW9uIGRlc2lyZWQKKyAgIChlLmcuIGBgWyJ0eXBlIiwgInNpemUiLCAicGVybSJdYGApLiAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhCisgICB0dXBsZSBvZiB0d28gZWxlbWVudHMgZm9yIGV2ZXJ5IGZpbGUgZm91bmQgaW4gcGF0aC4gIEZpcnN0IGVsZW1lbnQgaXMgdGhlCisgICBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGZhY3RzIGFib3V0IHRoZSBmaWxlCisgICBuYW1lLiAgQ29udGVudCBvZiB0aGlzIGRpY3Rpb25hcnkgbWlnaHQgYmUgbGltaXRlZCBieSB0aGUgKmZhY3RzKiBhcmd1bWVudAorICAgYnV0IHNlcnZlciBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYWxsIHJlcXVlc3RlZCBmYWN0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogRlRQLm5sc3QoYXJndW1lbnRbLCAuLi5dKQogCiAgICBSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgYXMgcmV0dXJuZWQgYnkgdGhlIGBgTkxTVGBgIGNvbW1hbmQuICBUaGUKQEAgLTMxNCw2ICszMzksOCBAQAogICAgZGlyZWN0b3J5KS4gIE11bHRpcGxlIGFyZ3VtZW50cyBjYW4gYmUgdXNlZCB0byBwYXNzIG5vbi1zdGFuZGFyZCBvcHRpb25zIHRvCiAgICB0aGUgYGBOTFNUYGAgY29tbWFuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMyB1c2UgOm1ldGg6YG1sc2RgIGluc3RlYWQuCisKIAogLi4gbWV0aG9kOjogRlRQLmRpcihhcmd1bWVudFssIC4uLl0pCiAKQEAgLTMyNCw2ICszNTEsOCBAQAogICAgYXMgYSAqY2FsbGJhY2sqIGZ1bmN0aW9uIGFzIGZvciA6bWV0aDpgcmV0cmxpbmVzYDsgdGhlIGRlZmF1bHQgcHJpbnRzIHRvCiAgICBgYHN5cy5zdGRvdXRgYC4gIFRoaXMgbWV0aG9kIHJldHVybnMgYGBOb25lYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMgdXNlIDptZXRoOmBtbHNkYCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IEZUUC5yZW5hbWUoZnJvbW5hbWUsIHRvbmFtZSkKIApAQCAtMzk2LDYgKzQyNSwxNCBAQAogCiAgICBTZXQgdXAgc2VjdXJlIGNvbnRyb2wgY29ubmVjdGlvbiBieSB1c2luZyBUTFMgb3IgU1NMLCBkZXBlbmRpbmcgb24gd2hhdCBzcGVjaWZpZWQgaW4gOm1ldGg6YHNzbF92ZXJzaW9uYCBhdHRyaWJ1dGUuCiAKKy4uIG1ldGhvZDo6IEZUUF9UTFMuY2NjKCkKKworICAgUmV2ZXJ0IGNvbnRyb2wgY2hhbm5lbCBiYWNrIHRvIHBsYWludGV4dC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0YWtlCisgICBhZHZhbnRhZ2Ugb2YgZmlyZXdhbGxzIHRoYXQga25vdyBob3cgdG8gaGFuZGxlIE5BVCB3aXRoIG5vbi1zZWN1cmUgRlRQCisgICB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBtZXRob2Q6OiBGVFBfVExTLnByb3RfcCgpCiAKICAgIFNldCB1cCBzZWN1cmUgZGF0YSBjb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggMGQ4ZjYxYy4uMDc3NjVjZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0xNCwxMiArMTQsMTIgQEAKIDpmdW5jOmBhbGxgICAgICAgICAgIDpmdW5jOmBkaXJgICAgICAgICA6ZnVuYzpgaGV4YCAgICAgICAgIDpmdW5jOmBuZXh0YCAgICAgIDpmdW5jOmBzbGljZWAKIDpmdW5jOmBhbnlgICAgICAgICAgIDpmdW5jOmBkaXZtb2RgICAgICA6ZnVuYzpgaWRgICAgICAgICAgIDpmdW5jOmBvYmplY3RgICAgIDpmdW5jOmBzb3J0ZWRgCiA6ZnVuYzpgYXNjaWlgICAgICAgICA6ZnVuYzpgZW51bWVyYXRlYCAgOmZ1bmM6YGlucHV0YCAgICAgICA6ZnVuYzpgb2N0YCAgICAgICA6ZnVuYzpgc3RhdGljbWV0aG9kYAotOmZ1bmM6YGJpbmAgICAgICAgICAgOmZ1bmM6YGV2YWxgICAgICAgIDpmdW5jOmBpbnRgICAgICAgICAgOmZ1bmM6YG9wZW5gICAgICAgOmZ1bmM6YHN0cmAKKzpmdW5jOmBiaW5gICAgICAgICAgIDpmdW5jOmBldmFsYCAgICAgICA6ZnVuYzpgaW50YCAgICAgICAgIDpmdW5jOmBvcGVuYCAgICAgIHxmdW5jLXN0cnxfCiA6ZnVuYzpgYm9vbGAgICAgICAgICA6ZnVuYzpgZXhlY2AgICAgICAgOmZ1bmM6YGlzaW5zdGFuY2VgICA6ZnVuYzpgb3JkYCAgICAgICA6ZnVuYzpgc3VtYAogOmZ1bmM6YGJ5dGVhcnJheWAgICAgOmZ1bmM6YGZpbHRlcmAgICAgIDpmdW5jOmBpc3N1YmNsYXNzYCAgOmZ1bmM6YHBvd2AgICAgICAgOmZ1bmM6YHN1cGVyYAotOmZ1bmM6YGJ5dGVzYCAgICAgICAgOmZ1bmM6YGZsb2F0YCAgICAgIDpmdW5jOmBpdGVyYCAgICAgICAgOmZ1bmM6YHByaW50YCAgICAgOmZ1bmM6YHR1cGxlYAorOmZ1bmM6YGJ5dGVzYCAgICAgICAgOmZ1bmM6YGZsb2F0YCAgICAgIDpmdW5jOmBpdGVyYCAgICAgICAgOmZ1bmM6YHByaW50YCAgICAgfGZ1bmMtdHVwbGV8XwogOmZ1bmM6YGNhbGxhYmxlYCAgICAgOmZ1bmM6YGZvcm1hdGAgICAgIDpmdW5jOmBsZW5gICAgICAgICAgOmZ1bmM6YHByb3BlcnR5YCAgOmZ1bmM6YHR5cGVgCi06ZnVuYzpgY2hyYCAgICAgICAgICB8ZnVuYy1mcm96ZW5zZXR8XyAgOmZ1bmM6YGxpc3RgICAgICAgICA6ZnVuYzpgcmFuZ2VgICAgICA6ZnVuYzpgdmFyc2AKKzpmdW5jOmBjaHJgICAgICAgICAgIHxmdW5jLWZyb3plbnNldHxfICB8ZnVuYy1saXN0fF8gICAgICAgIHxmdW5jLXJhbmdlfF8gICAgIDpmdW5jOmB2YXJzYAogOmZ1bmM6YGNsYXNzbWV0aG9kYCAgOmZ1bmM6YGdldGF0dHJgICAgIDpmdW5jOmBsb2NhbHNgICAgICAgOmZ1bmM6YHJlcHJgICAgICAgOmZ1bmM6YHppcGAKIDpmdW5jOmBjb21waWxlYCAgICAgIDpmdW5jOmBnbG9iYWxzYCAgICA6ZnVuYzpgbWFwYCAgICAgICAgIDpmdW5jOmByZXZlcnNlZGAgIDpmdW5jOmBfX2ltcG9ydF9fYAogOmZ1bmM6YGNvbXBsZXhgICAgICAgOmZ1bmM6YGhhc2F0dHJgICAgIDpmdW5jOmBtYXhgICAgICAgICAgOmZ1bmM6YHJvdW5kYApAQCAtMzMsNiArMzMsMTAgQEAKIC4uIHxmdW5jLWZyb3plbnNldHwgcmVwbGFjZTo6IGBgZnJvemVuc2V0KClgYAogLi4gfGZ1bmMtbWVtb3J5dmlld3wgcmVwbGFjZTo6IGBgbWVtb3J5dmlldygpYGAKIC4uIHxmdW5jLXNldHwgcmVwbGFjZTo6IGBgc2V0KClgYAorLi4gfGZ1bmMtbGlzdHwgcmVwbGFjZTo6IGBgbGlzdCgpYGAKKy4uIHxmdW5jLXN0cnwgcmVwbGFjZTo6IGBgc3RyKClgYAorLi4gfGZ1bmMtdHVwbGV8IHJlcGxhY2U6OiBgYHR1cGxlKClgYAorLi4gfGZ1bmMtcmFuZ2V8IHJlcGxhY2U6OiBgYHJhbmdlKClgYAogCiAKIC4uIGZ1bmN0aW9uOjogYWJzKHgpCkBAIC05Myw2ICs5Nyw3IEBACiAgICAuLiBpbmRleDo6IHBhaXI6IEJvb2xlYW47IHR5cGUKIAogCisuLiBfZnVuYy1ieXRlYXJyYXk6CiAuLiBmdW5jdGlvbjo6IGJ5dGVhcnJheShbc291cmNlWywgZW5jb2RpbmdbLCBlcnJvcnNdXV0pCiAKICAgIFJldHVybiBhIG5ldyBhcnJheSBvZiBieXRlcy4gIFRoZSA6Y2xhc3M6YGJ5dGVhcnJheWAgdHlwZSBpcyBhIG11dGFibGUKQEAgLTExOCw3ICsxMjMsMTAgQEAKIAogICAgV2l0aG91dCBhbiBhcmd1bWVudCwgYW4gYXJyYXkgb2Ygc2l6ZSAwIGlzIGNyZWF0ZWQuCiAKKyAgIFNlZSBhbHNvIDpyZWY6YGJpbmFyeXNlcWAgYW5kIDpyZWY6YHR5cGVieXRlYXJyYXlgLgogCisKKy4uIF9mdW5jLWJ5dGVzOgogLi4gZnVuY3Rpb246OiBieXRlcyhbc291cmNlWywgZW5jb2RpbmdbLCBlcnJvcnNdXV0pCiAKICAgIFJldHVybiBhIG5ldyAiYnl0ZXMiIG9iamVjdCwgd2hpY2ggaXMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIGludGVnZXJzIGluCkBAIC0xMzAsNiArMTM4LDggQEAKIAogICAgQnl0ZXMgb2JqZWN0cyBjYW4gYWxzbyBiZSBjcmVhdGVkIHdpdGggbGl0ZXJhbHMsIHNlZSA6cmVmOmBzdHJpbmdzYC4KIAorICAgU2VlIGFsc28gOnJlZjpgYmluYXJ5c2VxYCwgOnJlZjpgdHlwZWJ5dGVzYCwgYW5kIDpyZWY6YGJ5dGVzLW1ldGhvZHNgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2FsbGFibGUob2JqZWN0KQogCkBAIC0xNTIsMTAgKzE2Miw2IEBACiAgICAxLDExNCwxMTEgKDB4MTBGRkZGIGluIGJhc2UgMTYpLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzCiAgICBvdXRzaWRlIHRoYXQgcmFuZ2UuCiAKLSAgIE5vdGUgdGhhdCBvbiBuYXJyb3cgVW5pY29kZSBidWlsZHMsIHRoZSByZXN1bHQgaXMgYSBzdHJpbmcgb2YKLSAgIGxlbmd0aCB0d28gZm9yICppKiBncmVhdGVyIHRoYW4gNjUsNTM1ICgweEZGRkYgaW4gaGV4YWRlY2ltYWwpLgotCi0KIAogLi4gZnVuY3Rpb246OiBjbGFzc21ldGhvZChmdW5jdGlvbikKIApAQCAtMzEyLDE3ICszMTgsMTggQEAKIAogICAgICAgPj4+IGltcG9ydCBzdHJ1Y3QKICAgICAgID4+PiBkaXIoKSAgICMgc2hvdyB0aGUgbmFtZXMgaW4gdGhlIG1vZHVsZSBuYW1lc3BhY2UKLSAgICAgIFsnX19idWlsdGluc19fJywgJ19fZG9jX18nLCAnX19uYW1lX18nLCAnc3RydWN0J10KLSAgICAgID4+PiBkaXIoc3RydWN0KSAgICMgc2hvdyB0aGUgbmFtZXMgaW4gdGhlIHN0cnVjdCBtb2R1bGUKLSAgICAgIFsnU3RydWN0JywgJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAnX19wYWNrYWdlX18nLCAnX2NsZWFyY2FjaGUnLCAnY2FsY3NpemUnLCAnZXJyb3InLCAncGFjaycsICdwYWNrX2ludG8nLAorICAgICAgWydfX2J1aWx0aW5zX18nLCAnX19uYW1lX18nLCAnc3RydWN0J10KKyAgICAgID4+PiBkaXIoc3RydWN0KSAgICMgc2hvdyB0aGUgbmFtZXMgaW4gdGhlIHN0cnVjdCBtb2R1bGUgIyBkb2N0ZXN0OiArU0tJUAorICAgICAgWydTdHJ1Y3QnLCAnX19hbGxfXycsICdfX2J1aWx0aW5zX18nLCAnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywKKyAgICAgICAnX19pbml0aWFsaXppbmdfXycsICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAnX2NsZWFyY2FjaGUnLCAnY2FsY3NpemUnLCAnZXJyb3InLCAncGFjaycsICdwYWNrX2ludG8nLAogICAgICAgICd1bnBhY2snLCAndW5wYWNrX2Zyb20nXQogICAgICAgPj4+IGNsYXNzIFNoYXBlKG9iamVjdCk6Ci0gICAgICAgICAgICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgotICAgICAgICAgICAgICAgICAgcmV0dXJuIFsnYXJlYScsICdwZXJpbWV0ZXInLCAnbG9jYXRpb24nXQorICAgICAgLi4uICAgICBkZWYgX19kaXJfXyhzZWxmKToKKyAgICAgIC4uLiAgICAgICAgIHJldHVybiBbJ2FyZWEnLCAncGVyaW1ldGVyJywgJ2xvY2F0aW9uJ10KICAgICAgID4+PiBzID0gU2hhcGUoKQogICAgICAgPj4+IGRpcihzKQotICAgICAgWydhcmVhJywgJ3BlcmltZXRlcicsICdsb2NhdGlvbiddCisgICAgICBbJ2FyZWEnLCAnbG9jYXRpb24nLCAncGVyaW1ldGVyJ10KIAogICAgLi4gbm90ZTo6CiAKQEAgLTUxNSwxMyArNTIyLDEzIEBACiAKICAgIFRoZSBmbG9hdCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IF9fZm9ybWF0X18KKyAgICAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisKIAogLi4gZnVuY3Rpb246OiBmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pCiAKLSAgIC4uIGluZGV4OjoKLSAgICAgIHBhaXI6IHN0cjsgZm9ybWF0Ci0gICAgICBzaW5nbGU6IF9fZm9ybWF0X18KLQogICAgQ29udmVydCBhICp2YWx1ZSogdG8gYSAiZm9ybWF0dGVkIiByZXByZXNlbnRhdGlvbiwgYXMgY29udHJvbGxlZCBieQogICAgKmZvcm1hdF9zcGVjKi4gIFRoZSBpbnRlcnByZXRhdGlvbiBvZiAqZm9ybWF0X3NwZWMqIHdpbGwgZGVwZW5kIG9uIHRoZSB0eXBlCiAgICBvZiB0aGUgKnZhbHVlKiBhcmd1bWVudCwgaG93ZXZlciB0aGVyZSBpcyBhIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4IHRoYXQKQEAgLTYyMyw5ICs2MzAsOSBAQAogICAgdG8gYSBzdHJpbmcgKHN0cmlwcGluZyBhIHRyYWlsaW5nIG5ld2xpbmUpLCBhbmQgcmV0dXJucyB0aGF0LiAgV2hlbiBFT0YgaXMKICAgIHJlYWQsIDpleGM6YEVPRkVycm9yYCBpcyByYWlzZWQuICBFeGFtcGxlOjoKIAotICAgICAgPj4+IHMgPSBpbnB1dCgnLS0+ICcpCisgICAgICA+Pj4gcyA9IGlucHV0KCctLT4gJykgICMgZG9jdGVzdDogK1NLSVAKICAgICAgIC0tPiBNb250eSBQeXRob24ncyBGbHlpbmcgQ2lyY3VzCi0gICAgICA+Pj4gcworICAgICAgPj4+IHMgICMgZG9jdGVzdDogK1NLSVAKICAgICAgICJNb250eSBQeXRob24ncyBGbHlpbmcgQ2lyY3VzIgogCiAgICBJZiB0aGUgOm1vZDpgcmVhZGxpbmVgIG1vZHVsZSB3YXMgbG9hZGVkLCB0aGVuIDpmdW5jOmBpbnB1dGAgd2lsbCB1c2UgaXQKQEAgLTY5MSw2ICs2OTgsOCBAQAogICAgKnNlbnRpbmVsKiwgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgd2lsbCBiZSByYWlzZWQsIG90aGVyd2lzZSB0aGUgdmFsdWUgd2lsbAogICAgYmUgcmV0dXJuZWQuCiAKKyAgIFNlZSBhbHNvIDpyZWY6YHR5cGVpdGVyYC4KKwogICAgT25lIHVzZWZ1bCBhcHBsaWNhdGlvbiBvZiB0aGUgc2Vjb25kIGZvcm0gb2YgOmZ1bmM6YGl0ZXJgIGlzIHRvIHJlYWQgbGluZXMgb2YKICAgIGEgZmlsZSB1bnRpbCBhIGNlcnRhaW4gbGluZSBpcyByZWFjaGVkLiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHJlYWRzIGEgZmlsZQogICAgdW50aWwgdGhlIDptZXRoOmByZWFkbGluZWAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nOjoKQEAgLTcwNiwxNiArNzE1LDEyIEBACiAgICBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBhIG1hcHBpbmcgKGRpY3Rpb25hcnkpLgogCiAKKy4uIF9mdW5jLWxpc3Q6CiAuLiBmdW5jdGlvbjo6IGxpc3QoW2l0ZXJhYmxlXSkKKyAgIDpub2luZGV4OgogCi0gICBSZXR1cm4gYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzCi0gICBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzCi0gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcwotICAgbWFkZSBhbmQgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLiAgRm9yIGluc3RhbmNlLCBgYGxpc3QoJ2FiYycpYGAKLSAgIHJldHVybnMgYGBbJ2EnLCAnYicsICdjJ11gYCBhbmQgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSwgMiwgM11gYC4KLSAgIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm5zIGEgbmV3IGVtcHR5IGxpc3QsIGBgW11gYC4KLQotICAgOmNsYXNzOmBsaXN0YCBpcyBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCisgICBSYXRoZXIgdGhhbiBiZWluZyBhIGZ1bmN0aW9uLCA6Y2xhc3M6YGxpc3RgIGlzIGFjdHVhbGx5IGEgbXV0YWJsZQorICAgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcS1saXN0YCBhbmQgOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogbG9jYWxzKCkKQEAgLTgxNCwxMCArODE5LDEwIEBACiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IGZpbGUgb2JqZWN0OyBvcGVuKCkgYnVpbHQtaW4gZnVuY3Rpb24KIAotLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSkKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKQogCiAgICBPcGVuICpmaWxlKiBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyA6dGVybTpgZmlsZSBvYmplY3RgLiAgSWYgdGhlIGZpbGUKLSAgIGNhbm5vdCBiZSBvcGVuZWQsIGFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKyAgIGNhbm5vdCBiZSBvcGVuZWQsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgKmZpbGUqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QgZ2l2aW5nIHRoZSBwYXRobmFtZSAoYWJzb2x1dGUgb3IKICAgIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0byBiZSBvcGVuZWQgb3IKQEAgLTgyOCwxNyArODMzLDIwIEBACiAgICAqbW9kZSogaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCiAgICBvcGVuZWQuICBJdCBkZWZhdWx0cyB0byBgYCdyJ2BgIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLgogICAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgYGAndydgYCBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZiBpdAotICAgYWxyZWFkeSBleGlzdHMpLCBhbmQgYGAnYSdgYCBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiAqc29tZSogVW5peCBzeXN0ZW1zLAotICAgbWVhbnMgdGhhdCAqYWxsKiB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUKLSAgIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuICBJbiB0ZXh0IG1vZGUsIGlmICplbmNvZGluZyogaXMgbm90IHNwZWNpZmllZCB0aGUKLSAgIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZQotICAgYmluYXJ5IG1vZGUgYW5kIGxlYXZlICplbmNvZGluZyogdW5zcGVjaWZpZWQuKSAgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6CisgICBhbHJlYWR5IGV4aXN0cyksIGBgJ3gnYGAgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiBhbmQgYGAnYSdgYCBmb3IgYXBwZW5kaW5nCisgICAod2hpY2ggb24gKnNvbWUqIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCAqYWxsKiB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YKKyAgIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuICBJbiB0ZXh0IG1vZGUsIGlmCisgICAqZW5jb2RpbmcqIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50OgorICAgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpYGAgaXMgY2FsbGVkIHRvIGdldCB0aGUgY3VycmVudCBsb2NhbGUKKyAgIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUKKyAgICplbmNvZGluZyogdW5zcGVjaWZpZWQuKSAgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6CiAKICAgID09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIENoYXJhY3RlciBNZWFuaW5nCiAgICAtLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBgYCdyJ2BgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdCkKICAgIGBgJ3cnYGAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0CisgICBgYCd4J2BgICAgb3BlbiBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uLCBmYWlsaW5nIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzCiAgICBgYCdhJ2BgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzCiAgICBgYCdiJ2BgICAgYmluYXJ5IG1vZGUKICAgIGBgJ3QnYGAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpCkBAIC05MjQsNiArOTMyLDI5IEBACiAgICBjbG9zZWQuICBJZiBhIGZpbGVuYW1lIGlzIGdpdmVuICpjbG9zZWZkKiBoYXMgbm8gZWZmZWN0IGFuZCBtdXN0IGJlIGBgVHJ1ZWBgCiAgICAodGhlIGRlZmF1bHQpLgogCisgICBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZworICAgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nICpvcGVuZXIqIHdpdGgKKyAgICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZworICAgOm1vZDpgb3Mub3BlbmAgYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZworICAgYGBOb25lYGApLgorCisgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgdXNlcyB0aGUgOnJlZjpgZGlyX2ZkIDxkaXJfZmQ+YCBwYXJhbWV0ZXIgb2YgdGhlCisgICA6ZnVuYzpgb3Mub3BlbmAgZnVuY3Rpb24gdG8gb3BlbiBhIGZpbGUgcmVsYXRpdmUgdG8gYSBnaXZlbiBkaXJlY3Rvcnk6OgorCisgICAgICA+Pj4gaW1wb3J0IG9zCisgICAgICA+Pj4gZGlyX2ZkID0gb3Mub3Blbignc29tZWRpcicsIG9zLk9fUkRPTkxZKQorICAgICAgPj4+IGRlZiBvcGVuZXIocGF0aCwgZmxhZ3MpOgorICAgICAgLi4uICAgICByZXR1cm4gb3Mub3BlbihwYXRoLCBmbGFncywgZGlyX2ZkPWRpcl9mZCkKKyAgICAgIC4uLgorICAgICAgPj4+IHdpdGggb3Blbignc3BhbXNwYW0udHh0JywgJ3cnLCBvcGVuZXI9b3BlbmVyKSBhcyBmOgorICAgICAgLi4uICAgICBwcmludCgnVGhpcyB3aWxsIGJlIHdyaXR0ZW4gdG8gc29tZWRpci9zcGFtc3BhbS50eHQnLCBmaWxlPWYpCisgICAgICAuLi4KKyAgICAgID4+PiBvcy5jbG9zZShkaXJfZmQpICAjIGRvbid0IGxlYWsgYSBmaWxlIGRlc2NyaXB0b3IKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCisKICAgIFRoZSB0eXBlIG9mIDp0ZXJtOmBmaWxlIG9iamVjdGAgcmV0dXJuZWQgYnkgdGhlIDpmdW5jOmBvcGVuYCBmdW5jdGlvbgogICAgZGVwZW5kcyBvbiB0aGUgbW9kZS4gIFdoZW4gOmZ1bmM6YG9wZW5gIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0CiAgICBtb2RlIChgYCd3J2BgLCBgYCdyJ2BgLCBgYCd3dCdgYCwgYGAncnQnYGAsIGV0Yy4pLCBpdCByZXR1cm5zIGEgc3ViY2xhc3Mgb2YKQEAgLTk0OSw2ICs5ODAsMTEgQEAKICAgICh3aGVyZSA6ZnVuYzpgb3BlbmAgaXMgZGVjbGFyZWQpLCA6bW9kOmBvc2AsIDptb2Q6YG9zLnBhdGhgLCA6bW9kOmB0ZW1wZmlsZWAsCiAgICBhbmQgOm1vZDpgc2h1dGlsYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisgICAgICA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQorICAgICAgY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisKIAogLi4gWFhYIHdvcmtzIGZvciBieXRlcyB0b28sIGJ1dCBzaG91bGQgaXQ/CiAuLiBmdW5jdGlvbjo6IG9yZChjKQpAQCAtOTU4LDkgKzk5NCw2IEBACiAgICBwb2ludCBvZiB0aGF0IGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYG9yZCgnYScpYGAgcmV0dXJucyB0aGUgaW50ZWdlciBgYDk3YGAKICAgIGFuZCBgYG9yZCgnXHUyMDIwJylgYCByZXR1cm5zIGBgODIyNGBgLiAgVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiA6ZnVuYzpgY2hyYC4KIAotICAgT24gd2lkZSBVbmljb2RlIGJ1aWxkcywgaWYgdGhlIGFyZ3VtZW50IGxlbmd0aCBpcyBub3Qgb25lLCBhCi0gICA6ZXhjOmBUeXBlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgT24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCBzdHJpbmdzCi0gICBvZiBsZW5ndGggdHdvIGFyZSBhY2NlcHRlZCB3aGVuIHRoZXkgZm9ybSBhIFVURi0xNiBzdXJyb2dhdGUgcGFpci4KIAogLi4gZnVuY3Rpb246OiBwb3coeCwgeVssIHpdKQogCkBAIC05NzgsNyArMTAxMSw3IEBACiAgICBtdXN0IGJlIG9mIGludGVnZXIgdHlwZXMsIGFuZCAqeSogbXVzdCBiZSBub24tbmVnYXRpdmUuCiAKIAotLi4gZnVuY3Rpb246OiBwcmludCgqb2JqZWN0cywgc2VwPScgJywgZW5kPSdcXG4nLCBmaWxlPXN5cy5zdGRvdXQpCisuLiBmdW5jdGlvbjo6IHByaW50KCpvYmplY3RzLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCwgZmx1c2g9RmFsc2UpCiAKICAgIFByaW50ICpvYmplY3RzKiB0byB0aGUgc3RyZWFtICpmaWxlKiwgc2VwYXJhdGVkIGJ5ICpzZXAqIGFuZCBmb2xsb3dlZCBieQogICAgKmVuZCouICAqc2VwKiwgKmVuZCogYW5kICpmaWxlKiwgaWYgcHJlc2VudCwgbXVzdCBiZSBnaXZlbiBhcyBrZXl3b3JkCkBAIC05OTEsOSArMTAyNCwxMiBAQAogICAgKmVuZCouCiAKICAgIFRoZSAqZmlsZSogYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBhIGBgd3JpdGUoc3RyaW5nKWBgIG1ldGhvZDsgaWYgaXQKLSAgIGlzIG5vdCBwcmVzZW50IG9yIGBgTm9uZWBgLCA6ZGF0YTpgc3lzLnN0ZG91dGAgd2lsbCBiZSB1c2VkLiBPdXRwdXQgYnVmZmVyaW5nCi0gICBpcyBkZXRlcm1pbmVkIGJ5ICpmaWxlKi4gVXNlIGBgZmlsZS5mbHVzaCgpYGAgdG8gZW5zdXJlLCBmb3IgaW5zdGFuY2UsCi0gICBpbW1lZGlhdGUgYXBwZWFyYW5jZSBvbiBhIHNjcmVlbi4KKyAgIGlzIG5vdCBwcmVzZW50IG9yIGBgTm9uZWBgLCA6ZGF0YTpgc3lzLnN0ZG91dGAgd2lsbCBiZSB1c2VkLiAgV2hldGhlciBvdXRwdXQKKyAgIGlzIGJ1ZmZlcmVkIGlzIHVzdWFsbHkgZGV0ZXJtaW5lZCBieSAqZmlsZSosIGJ1dCBpZiB0aGUgICpmbHVzaCoga2V5d29yZAorICAgYXJndW1lbnQgaXMgdHJ1ZSwgdGhlIHN0cmVhbSBpcyBmb3JjaWJseSBmbHVzaGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpmbHVzaCoga2V5d29yZCBhcmd1bWVudC4KIAogCiAuLiBmdW5jdGlvbjo6IHByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKQpAQCAtMTA2NSw2MyArMTEwMSwxMyBAQAogICAgYGBmZGVsYGAgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzLgogCiAKLS4uIFhYWCBkb2VzIGFjY2VwdCBvYmplY3RzIHdpdGggX19pbmRleF9fIHRvbworLi4gX2Z1bmMtcmFuZ2U6CiAuLiBmdW5jdGlvbjo6IHJhbmdlKHN0b3ApCiAgICAgICAgICAgICAgIHJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pCisgICA6bm9pbmRleDoKIAotICAgVGhpcyBpcyBhIHZlcnNhdGlsZSBmdW5jdGlvbiB0byBjcmVhdGUgaXRlcmFibGVzIHlpZWxkaW5nIGFyaXRobWV0aWMKLSAgIHByb2dyZXNzaW9ucy4gIEl0IGlzIG1vc3Qgb2Z0ZW4gdXNlZCBpbiA6a2V5d29yZDpgZm9yYCBsb29wcy4gIFRoZSBhcmd1bWVudHMKLSAgIG11c3QgYmUgaW50ZWdlcnMuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMWBgLgotICAgSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAwYGAuICBUaGUgZnVsbCBmb3JtCi0gICByZXR1cm5zIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzIGBgW3N0YXJ0LCBzdGFydCArIHN0ZXAsIHN0YXJ0ICsgMiAqIHN0ZXAsCi0gICAuLi5dYGAuICBJZiAqc3RlcCogaXMgcG9zaXRpdmUsIHRoZSBsYXN0IGVsZW1lbnQgaXMgdGhlIGxhcmdlc3QgYGBzdGFydCArIGkgKgotICAgc3RlcGBgIGxlc3MgdGhhbiAqc3RvcCo7IGlmICpzdGVwKiBpcyBuZWdhdGl2ZSwgdGhlIGxhc3QgZWxlbWVudCBpcyB0aGUKLSAgIHNtYWxsZXN0IGBgc3RhcnQgKyBpICogc3RlcGBgIGdyZWF0ZXIgdGhhbiAqc3RvcCouICAqc3RlcCogbXVzdCBub3QgYmUgemVybwotICAgKG9yIGVsc2UgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkKS4gIEV4YW1wbGU6Ci0KLSAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSkKLSAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XQotICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKQotICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXQotICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKQotICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XQotICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKQotICAgICAgWzAsIDMsIDYsIDldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSkKLSAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XQotICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpCi0gICAgICBbXQotICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpCi0gICAgICBbXQotCi0gICBSYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5TZXF1ZW5jZWAgQUJDLCBhbmQgcHJvdmlkZQotICAgZmVhdHVyZXMgc3VjaCBhcyBjb250YWlubWVudCB0ZXN0cywgZWxlbWVudCBpbmRleCBsb29rdXAsIHNsaWNpbmcgYW5kCi0gICBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgOnJlZjpgdHlwZXNzZXFgKToKLQotICAgICAgPj4+IHIgPSByYW5nZSgwLCAyMCwgMikKLSAgICAgID4+PiByCi0gICAgICByYW5nZSgwLCAyMCwgMikKLSAgICAgID4+PiAxMSBpbiByCi0gICAgICBGYWxzZQotICAgICAgPj4+IDEwIGluIHIKLSAgICAgIFRydWUKLSAgICAgID4+PiByLmluZGV4KDEwKQotICAgICAgNQotICAgICAgPj4+IHJbNV0KLSAgICAgIDEwCi0gICAgICA+Pj4gcls6NV0KLSAgICAgIHJhbmdlKDAsIDEwLCAyKQotICAgICAgPj4+IHJbLTFdCi0gICAgICAxOAotCi0gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gOmRhdGE6YHN5cy5tYXhzaXplYCBhcmUgcGVybWl0dGVkCi0gICBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyA6ZnVuYzpgbGVuYCkgd2lsbCByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYC4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLgotICAgICAgU3VwcG9ydCBzbGljaW5nIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLgotICAgICAgVGVzdCBpbnRlZ2VycyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudCB0aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nCi0gICAgICB0aHJvdWdoIGFsbCBpdGVtcy4KKyAgIFJhdGhlciB0aGFuIGJlaW5nIGEgZnVuY3Rpb24sIDpjbGFzczpgcmFuZ2VgIGlzIGFjdHVhbGx5IGFuIGltbXV0YWJsZQorICAgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcS1yYW5nZWAgYW5kIDpyZWY6YHR5cGVzc2VxYC4KIAogCiAuLiBmdW5jdGlvbjo6IHJlcHIob2JqZWN0KQpAQCAtMTI1MCw0NyArMTIzNiwxNSBAQAogICAgICAgc2luZ2xlOiBzdHJpbmc7IHN0cigpIChidWlsdC1pbiBmdW5jdGlvbikKIAogCisuLiBfZnVuYy1zdHI6CiAuLiBmdW5jdGlvbjo6IHN0cihvYmplY3Q9JycpCiAgICAgICAgICAgICAgIHN0cihvYmplY3Q9YicnLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisgICA6bm9pbmRleDoKIAotICAgUmV0dXJuIGEgOnJlZjpgc3RyaW5nIDx0eXBlc3NlcT5gIHZlcnNpb24gb2YgKm9iamVjdCouICBJZiAqb2JqZWN0KiBpcyBub3QKLSAgIHByb3ZpZGVkLCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuICBPdGhlcndpc2UsIHRoZSBiZWhhdmlvciBvZiBgYHN0cigpYGAKLSAgIGRlcGVuZHMgb24gd2hldGhlciAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIGdpdmVuLCBhcyBmb2xsb3dzLgorICAgUmV0dXJuIGEgOmNsYXNzOmBzdHJgIHZlcnNpb24gb2YgKm9iamVjdCouICBTZWUgOmZ1bmM6YHN0cmAgZm9yIGRldGFpbHMuCiAKLSAgIElmIG5laXRoZXIgKmVuY29kaW5nKiBub3IgKmVycm9ycyogaXMgZ2l2ZW4sIGBgc3RyKG9iamVjdClgYCByZXR1cm5zCi0gICA6bWV0aDpgb2JqZWN0Ll9fc3RyX18oKSA8b2JqZWN0Ll9fc3RyX18+YCwgd2hpY2ggaXMgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5Ci0gICBwcmludGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICpvYmplY3QqLiAgRm9yIHN0cmluZyBvYmplY3RzLCB0aGlzIGlzCi0gICB0aGUgc3RyaW5nIGl0c2VsZi4gIElmICpvYmplY3QqIGRvZXMgbm90IGhhdmUgYSA6bWV0aDpgfm9iamVjdC5fX3N0cl9fYAotICAgbWV0aG9kLCB0aGVuIDpmdW5jOmBzdHJgIGZhbGxzIGJhY2sgdG8gcmV0dXJuaW5nCi0gICA6bWV0aDpgcmVwcihvYmplY3QpIDxyZXByPmAuCi0KLSAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogYnVmZmVyIHByb3RvY29sOyBzdHIoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCi0gICAgICBzaW5nbGU6IGJ5dGVzOyBzdHIoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCi0KLSAgIElmIGF0IGxlYXN0IG9uZSBvZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIGdpdmVuLCAqb2JqZWN0KiBzaG91bGQgYmUgYQotICAgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgb3IgbW9yZSBnZW5lcmFsbHkgYW55IG9iamVjdAotICAgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAuICBJbiB0aGlzIGNhc2UsIGlmCi0gICAqb2JqZWN0KiBpcyBhIDpjbGFzczpgYnl0ZXNgIChvciA6Y2xhc3M6YGJ5dGVhcnJheWApIG9iamVjdCwgdGhlbgotICAgYGBzdHIoYnl0ZXMsIGVuY29kaW5nLCBlcnJvcnMpYGAgaXMgZXF1aXZhbGVudCB0bwotICAgOm1ldGg6YGJ5dGVzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKSA8Ynl0ZXMuZGVjb2RlPmAuICBPdGhlcndpc2UsIHRoZSBieXRlcwotICAgb2JqZWN0IHVuZGVybHlpbmcgdGhlIGJ1ZmZlciBvYmplY3QgaXMgb2J0YWluZWQgYmVmb3JlIGNhbGxpbmcKLSAgIDptZXRoOmBieXRlcy5kZWNvZGVgLiAgU2VlIHRoZSA6cmVmOmB0eXBlc3NlcWAgc2VjdGlvbiwgdGhlCi0gICA6cmVmOmB0eXBlbWVtb3J5dmlld2Agc2VjdGlvbiwgYW5kIDpyZWY6YGJ1ZmZlcm9iamVjdHNgIGZvciBpbmZvcm1hdGlvbiBvbgotICAgYnVmZmVyIG9iamVjdHMuCi0KLSAgIFBhc3NpbmcgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgdG8gOmZ1bmM6YHN0cmAgd2l0aG91dCB0aGUgKmVuY29kaW5nKgotICAgb3IgKmVycm9ycyogYXJndW1lbnRzIGZhbGxzIHVuZGVyIHRoZSBmaXJzdCBjYXNlIG9mIHJldHVybmluZyB0aGUgaW5mb3JtYWwKLSAgIHN0cmluZyByZXByZXNlbnRhdGlvbiAoc2VlIGFsc28gdGhlIDpvcHRpb246YC1iYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRvCi0gICBQeXRob24pLiAgRm9yIGV4YW1wbGU6OgotCi0gICAgICA+Pj4gc3RyKGInWm9vdCEnKQotICAgICAgImInWm9vdCEnIgotCi0gICBgYHN0cmBgIGlzIGEgYnVpbHQtaW4gOnRlcm06YHR5cGVgLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHN0cmluZwotICAgdHlwZSBhbmQgaXRzIG1ldGhvZHMsIHNlZSB0aGUgOnJlZjpgdHlwZXNzZXFgIGFuZCA6cmVmOmBzdHJpbmctbWV0aG9kc2AKLSAgIHNlY3Rpb25zLiAgVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYAotICAgc2VjdGlvbi4gIEluIGFkZGl0aW9uLCBzZWUgdGhlIDpyZWY6YHN0cmluZ3NlcnZpY2VzYCBzZWN0aW9uLgorICAgYGBzdHJgYCBpcyB0aGUgYnVpbHQtaW4gc3RyaW5nIDp0ZXJtOmBjbGFzc2AuICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbgorICAgYWJvdXQgc3RyaW5ncywgc2VlIDpyZWY6YHRleHRzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogc3VtKGl0ZXJhYmxlWywgc3RhcnRdKQpAQCAtMTM1MCwyNiArMTMwNCwyNCBAQAogICAgQWNjb3JkaW5nbHksIDpmdW5jOmBzdXBlcmAgaXMgdW5kZWZpbmVkIGZvciBpbXBsaWNpdCBsb29rdXBzIHVzaW5nIHN0YXRlbWVudHMgb3IKICAgIG9wZXJhdG9ycyBzdWNoIGFzIGBgc3VwZXIoKVtuYW1lXWBgLgogCi0gICBBbHNvIG5vdGUgdGhhdCA6ZnVuYzpgc3VwZXJgIGlzIG5vdCBsaW1pdGVkIHRvIHVzZSBpbnNpZGUgbWV0aG9kcy4gIFRoZSB0d28KLSAgIGFyZ3VtZW50IGZvcm0gc3BlY2lmaWVzIHRoZSBhcmd1bWVudHMgZXhhY3RseSBhbmQgbWFrZXMgdGhlIGFwcHJvcHJpYXRlCi0gICByZWZlcmVuY2VzLiAgVGhlIHplcm8gYXJndW1lbnQgZm9ybSBhdXRvbWF0aWNhbGx5IHNlYXJjaGVzIHRoZSBzdGFjayBmcmFtZQotICAgZm9yIHRoZSBjbGFzcyAoYGBfX2NsYXNzX19gYCkgYW5kIHRoZSBmaXJzdCBhcmd1bWVudC4KKyAgIEFsc28gbm90ZSB0aGF0LCBhc2lkZSBmcm9tIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm0sIDpmdW5jOmBzdXBlcmAgaXMgbm90CisgICBsaW1pdGVkIHRvIHVzZSBpbnNpZGUgbWV0aG9kcy4gIFRoZSB0d28gYXJndW1lbnQgZm9ybSBzcGVjaWZpZXMgdGhlCisgICBhcmd1bWVudHMgZXhhY3RseSBhbmQgbWFrZXMgdGhlIGFwcHJvcHJpYXRlIHJlZmVyZW5jZXMuICBUaGUgemVybworICAgYXJndW1lbnQgZm9ybSBvbmx5IHdvcmtzIGluc2lkZSBhIGNsYXNzIGRlZmluaXRpb24sIGFzIHRoZSBjb21waWxlciBmaWxscworICAgaW4gdGhlIG5lY2Vzc2FyeSBkZXRhaWxzIHRvIGNvcnJlY3RseSByZXRyaWV2ZSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCwKKyAgIGFzIHdlbGwgYXMgYWNjZXNzaW5nIHRoZSBjdXJyZW50IGluc3RhbmNlIGZvciBvcmRpbmFyeSBtZXRob2RzLgogCiAgICBGb3IgcHJhY3RpY2FsIHN1Z2dlc3Rpb25zIG9uIGhvdyB0byBkZXNpZ24gY29vcGVyYXRpdmUgY2xhc3NlcyB1c2luZwogICAgOmZ1bmM6YHN1cGVyYCwgc2VlIGBndWlkZSB0byB1c2luZyBzdXBlcigpCiAgICA8aHR0cDovL3JoZXR0aW5nZXIud29yZHByZXNzLmNvbS8yMDExLzA1LzI2L3N1cGVyLWNvbnNpZGVyZWQtc3VwZXIvPmBfLgogCiAKKy4uIF9mdW5jLXR1cGxlOgogLi4gZnVuY3Rpb246OiB0dXBsZShbaXRlcmFibGVdKQorICAgOm5vaW5kZXg6CiAKLSAgIFJldHVybiBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzCi0gICBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGEgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbgotICAgaXRlcmF0b3Igb2JqZWN0LiBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgotICAgRm9yIGluc3RhbmNlLCBgYHR1cGxlKCdhYmMnKWBgIHJldHVybnMgYGAoJ2EnLCAnYicsICdjJylgYCBhbmQgYGB0dXBsZShbMSwgMiwKLSAgIDNdKWBgIHJldHVybnMgYGAoMSwgMiwgMylgYC4gIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm5zIGEgbmV3IGVtcHR5Ci0gICB0dXBsZSwgYGAoKWBgLgotCi0gICA6Y2xhc3M6YHR1cGxlYCBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCisgICBSYXRoZXIgdGhhbiBiZWluZyBhIGZ1bmN0aW9uLCA6Y2xhc3M6YHR1cGxlYCBpcyBhY3R1YWxseSBhbiBpbW11dGFibGUKKyAgIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXEtdHVwbGVgIGFuZCA6cmVmOmB0eXBlc3NlcWAuCiAKIAogLi4gZnVuY3Rpb246OiB0eXBlKG9iamVjdCkKQEAgLTEzOTgsNiArMTM1MCw4IEBACiAgICAgICAuLi4KICAgICAgID4+PiBYID0gdHlwZSgnWCcsIChvYmplY3QsKSwgZGljdChhPTEpKQogCisgICBTZWUgYWxzbyA6cmVmOmBibHRpbi10eXBlLW9iamVjdHNgLgorCiAKIC4uIGZ1bmN0aW9uOjogdmFycyhbb2JqZWN0XSkKIApAQCAtMTQ1NCw3ICsxNDA4LDcgQEAKICAgICAgIFRydWUKIAogCi0uLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1bXSwgbGV2ZWw9LTEpCisuLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHN0YXRlbWVudDogaW1wb3J0CkBAIC0xNDY5LDggKzE0MjMsOSBAQAogICAgcmVwbGFjZWQgKGJ5IGltcG9ydGluZyB0aGUgOm1vZDpgYnVpbHRpbnNgIG1vZHVsZSBhbmQgYXNzaWduaW5nIHRvCiAgICBgYGJ1aWx0aW5zLl9faW1wb3J0X19gYCkgaW4gb3JkZXIgdG8gY2hhbmdlIHNlbWFudGljcyBvZiB0aGUKICAgIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCwgYnV0IG5vd2FkYXlzIGl0IGlzIHVzdWFsbHkgc2ltcGxlciB0byB1c2UgaW1wb3J0Ci0gICBob29rcyAoc2VlIDpwZXA6YDMwMmApLiAgRGlyZWN0IHVzZSBvZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgcmFyZSwgZXhjZXB0IGluCi0gICBjYXNlcyB3aGVyZSB5b3Ugd2FudCB0byBpbXBvcnQgYSBtb2R1bGUgd2hvc2UgbmFtZSBpcyBvbmx5IGtub3duIGF0IHJ1bnRpbWUuCisgICBob29rcyAoc2VlIDpwZXA6YDMwMmApIHRvIGF0dGFpbiB0aGUgc2FtZSBnb2Fscy4gIERpcmVjdCB1c2Ugb2YKKyAgIDpmdW5jOmBfX2ltcG9ydF9fYCBpcyBlbnRpcmVseSBkaXNjb3VyYWdlZCBpbiBmYXZvciBvZgorICAgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYC4KIAogICAgVGhlIGZ1bmN0aW9uIGltcG9ydHMgdGhlIG1vZHVsZSAqbmFtZSosIHBvdGVudGlhbGx5IHVzaW5nIHRoZSBnaXZlbiAqZ2xvYmFscyoKICAgIGFuZCAqbG9jYWxzKiB0byBkZXRlcm1pbmUgaG93IHRvIGludGVycHJldCB0aGUgbmFtZSBpbiBhIHBhY2thZ2UgY29udGV4dC4KQEAgLTE0NzksMTMgKzE0MzQsMTEgQEAKICAgIG5vdCB1c2UgaXRzICpsb2NhbHMqIGFyZ3VtZW50IGF0IGFsbCwgYW5kIHVzZXMgaXRzICpnbG9iYWxzKiBvbmx5IHRvCiAgICBkZXRlcm1pbmUgdGhlIHBhY2thZ2UgY29udGV4dCBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LgogCi0gICAqbGV2ZWwqIHNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiBgYDBgYAotICAgbWVhbnMgb25seSBwZXJmb3JtIGFic29sdXRlIGltcG9ydHMuIFBvc2l0aXZlIHZhbHVlcyBmb3IgKmxldmVsKiBpbmRpY2F0ZSB0aGUKLSAgIG51bWJlciBvZiBwYXJlbnQgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlCi0gICBtb2R1bGUgY2FsbGluZyA6ZnVuYzpgX19pbXBvcnRfX2AuICBOZWdhdGl2ZSB2YWx1ZXMgYXR0ZW1wdCBib3RoIGFuIGltcGxpY2l0Ci0gICByZWxhdGl2ZSBpbXBvcnQgYW5kIGFuIGFic29sdXRlIGltcG9ydCAodXNhZ2Ugb2YgbmVnYXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqCi0gICBhcmUgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbiBkbyBub3Qgc3VwcG9ydCBzdWNoCi0gICB2YWx1ZXMpLiBJbXBvcnQgc3RhdGVtZW50cyBvbmx5IHVzZSB2YWx1ZXMgb2YgMCBvciBncmVhdGVyLgorICAgKmxldmVsKiBzcGVjaWZpZXMgd2hldGhlciB0byB1c2UgYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gYGAwYGAgKHRoZQorICAgZGVmYXVsdCkgbWVhbnMgb25seSBwZXJmb3JtIGFic29sdXRlIGltcG9ydHMuICBQb3NpdGl2ZSB2YWx1ZXMgZm9yCisgICAqbGV2ZWwqIGluZGljYXRlIHRoZSBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUKKyAgIGRpcmVjdG9yeSBvZiB0aGUgbW9kdWxlIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gIChzZWUgOnBlcDpgMzI4YCBmb3IgdGhlCisgICBkZXRhaWxzKS4KIAogICAgV2hlbiB0aGUgKm5hbWUqIHZhcmlhYmxlIGlzIG9mIHRoZSBmb3JtIGBgcGFja2FnZS5tb2R1bGVgYCwgbm9ybWFsbHksIHRoZQogICAgdG9wLWxldmVsIHBhY2thZ2UgKHRoZSBuYW1lIHVwIHRpbGwgdGhlIGZpcnN0IGRvdCkgaXMgcmV0dXJuZWQsICpub3QqIHRoZQpAQCAtMTUxOCw2ICsxNDcxLDEwIEBACiAgICBJZiB5b3Ugc2ltcGx5IHdhbnQgdG8gaW1wb3J0IGEgbW9kdWxlIChwb3RlbnRpYWxseSB3aXRoaW4gYSBwYWNrYWdlKSBieSBuYW1lLAogICAgdXNlIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBOZWdhdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCogYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgKHdoaWNoIGFsc28gY2hhbmdlcworICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgdG8gMCkuCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CmluZGV4IDA0NzQzZDMuLmY1YzY2MDggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdApAQCAtNDAsNyArNDAsNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gZGVjb3JhdG9yOjogbHJ1X2NhY2hlKG1heHNpemU9MTAwKQorLi4gZGVjb3JhdG9yOjogbHJ1X2NhY2hlKG1heHNpemU9MTI4LCB0eXBlZD1GYWxzZSkKIAogICAgRGVjb3JhdG9yIHRvIHdyYXAgYSBmdW5jdGlvbiB3aXRoIGEgbWVtb2l6aW5nIGNhbGxhYmxlIHRoYXQgc2F2ZXMgdXAgdG8gdGhlCiAgICAqbWF4c2l6ZSogbW9zdCByZWNlbnQgY2FsbHMuICBJdCBjYW4gc2F2ZSB0aW1lIHdoZW4gYW4gZXhwZW5zaXZlIG9yIEkvTyBib3VuZApAQCAtNDksOCArNDksMTMgQEAKICAgIFNpbmNlIGEgZGljdGlvbmFyeSBpcyB1c2VkIHRvIGNhY2hlIHJlc3VsdHMsIHRoZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCiAgICBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIG11c3QgYmUgaGFzaGFibGUuCiAKLSAgIElmICptYXhzaXplKiBpcyBzZXQgdG8gTm9uZSwgdGhlIExSVSBmZWF0dXJlIGlzIGRpc2FibGVkIGFuZCB0aGUgY2FjaGUKLSAgIGNhbiBncm93IHdpdGhvdXQgYm91bmQuCisgICBJZiAqbWF4c2l6ZSogaXMgc2V0IHRvIE5vbmUsIHRoZSBMUlUgZmVhdHVyZSBpcyBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlIGNhbgorICAgZ3JvdyB3aXRob3V0IGJvdW5kLiAgVGhlIExSVSBmZWF0dXJlIHBlcmZvcm1zIGJlc3Qgd2hlbiAqbWF4c2l6ZSogaXMgYQorICAgcG93ZXItb2YtdHdvLgorCisgICBJZiAqdHlwZWQqIGlzIHNldCB0byBUcnVlLCBmdW5jdGlvbiBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzIHdpbGwgYmUKKyAgIGNhY2hlZCBzZXBhcmF0ZWx5LiAgRm9yIGV4YW1wbGUsIGBgZigzKWBgIGFuZCBgYGYoMy4wKWBgIHdpbGwgYmUgdHJlYXRlZAorICAgYXMgZGlzdGluY3QgY2FsbHMgd2l0aCBkaXN0aW5jdCByZXN1bHRzLgogCiAgICBUbyBoZWxwIG1lYXN1cmUgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGNhY2hlIGFuZCB0dW5lIHRoZSAqbWF4c2l6ZSoKICAgIHBhcmFtZXRlciwgdGhlIHdyYXBwZWQgZnVuY3Rpb24gaXMgaW5zdHJ1bWVudGVkIHdpdGggYSA6ZnVuYzpgY2FjaGVfaW5mb2AKQEAgLTY3LDggKzcyLDggQEAKIAogICAgQW4gYExSVSAobGVhc3QgcmVjZW50bHkgdXNlZCkgY2FjaGUKICAgIDxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhY2hlX2FsZ29yaXRobXMjTGVhc3RfUmVjZW50bHlfVXNlZD5gXyB3b3JrcwotICAgYmVzdCB3aGVuIG1vcmUgcmVjZW50IGNhbGxzIGFyZSB0aGUgYmVzdCBwcmVkaWN0b3JzIG9mIHVwY29taW5nIGNhbGxzIChmb3IKLSAgIGV4YW1wbGUsIHRoZSBtb3N0IHBvcHVsYXIgYXJ0aWNsZXMgb24gYSBuZXdzIHNlcnZlciB0ZW5kIHRvIGNoYW5nZSBkYWlseSkuCisgICBiZXN0IHdoZW4gdGhlIG1vc3QgcmVjZW50IGNhbGxzIGFyZSB0aGUgYmVzdCBwcmVkaWN0b3JzIG9mIHVwY29taW5nIGNhbGxzIChmb3IKKyAgIGV4YW1wbGUsIHRoZSBtb3N0IHBvcHVsYXIgYXJ0aWNsZXMgb24gYSBuZXdzIHNlcnZlciB0ZW5kIHRvIGNoYW5nZSBlYWNoIGRheSkuCiAgICBUaGUgY2FjaGUncyBzaXplIGxpbWl0IGFzc3VyZXMgdGhhdCB0aGUgY2FjaGUgZG9lcyBub3QgZ3JvdyB3aXRob3V0IGJvdW5kIG9uCiAgICBsb25nLXJ1bm5pbmcgcHJvY2Vzc2VzIHN1Y2ggYXMgd2ViIHNlcnZlcnMuCiAKQEAgLTExMSw2ICsxMTYsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqdHlwZWQqIG9wdGlvbi4KKwogLi4gZGVjb3JhdG9yOjogdG90YWxfb3JkZXJpbmcKIAogICAgR2l2ZW4gYSBjbGFzcyBkZWZpbmluZyBvbmUgb3IgbW9yZSByaWNoIGNvbXBhcmlzb24gb3JkZXJpbmcgbWV0aG9kcywgdGhpcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2MucnN0IGIvRG9jL2xpYnJhcnkvZ2MucnN0CmluZGV4IDAyODFiYjcuLjQxYmRhMWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2djLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nYy5yc3QKQEAgLTE1Myw4ICsxNTMsOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAotVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyBwcm92aWRlZCBmb3IgcmVhZC1vbmx5IGFjY2VzcyAoeW91IGNhbiBtdXRhdGUgaXRzCi12YWx1ZSBidXQgc2hvdWxkIG5vdCByZWJpbmQgaXQpOgorVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIHByb3ZpZGVkIGZvciByZWFkLW9ubHkgYWNjZXNzICh5b3UgY2FuIG11dGF0ZSB0aGUKK3ZhbHVlcyBidXQgc2hvdWxkIG5vdCByZWJpbmQgdGhlbSk6CiAKIC4uIGRhdGE6OiBnYXJiYWdlCiAKQEAgLTE4Myw2ICsxODMsNDEgQEAKICAgICAgIDpjb25zdDpgREVCVUdfVU5DT0xMRUNUQUJMRWAgaXMgc2V0LCBpbiBhZGRpdGlvbiBhbGwgdW5jb2xsZWN0YWJsZSBvYmplY3RzCiAgICAgICBhcmUgcHJpbnRlZC4KIAorLi4gZGF0YTo6IGNhbGxiYWNrcworCisgICBBIGxpc3Qgb2YgY2FsbGJhY2tzIHRoYXQgd2lsbCBiZSBpbnZva2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvciBiZWZvcmUgYW5kCisgICBhZnRlciBjb2xsZWN0aW9uLiAgVGhlIGNhbGxiYWNrcyB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsCisgICAqcGhhc2UqIGFuZCAqaW5mbyouCisKKyAgICpwaGFzZSogY2FuIGJlIG9uZSBvZiB0d28gdmFsdWVzOgorCisgICAgICAic3RhcnQiOiBUaGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIGFib3V0IHRvIHN0YXJ0LgorCisgICAgICAic3RvcCI6IFRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gaGFzIGZpbmlzaGVkLgorCisgICAqaW5mbyogaXMgYSBkaWN0IHByb3ZpZGluZyBtb3JlIGluZm9ybWF0aW9uIGZvciB0aGUgY2FsbGJhY2suICBUaGUgZm9sbG93aW5nCisgICBrZXlzIGFyZSBjdXJyZW50bHkgZGVmaW5lZDoKKworICAgICAgImdlbmVyYXRpb24iOiBUaGUgb2xkZXN0IGdlbmVyYXRpb24gYmVpbmcgY29sbGVjdGVkLgorCisgICAgICAiY29sbGVjdGVkIjogV2hlbiAqcGhhc2UqIGlzICJzdG9wIiwgdGhlIG51bWJlciBvZiBvYmplY3RzCisgICAgICBzdWNjZXNzZnVsbHkgY29sbGVjdGVkLgorCisgICAgICAidW5jb2xsZWN0YWJsZSI6IFdoZW4gKnBoYXNlKiBpcyAic3RvcCIsIHRoZSBudW1iZXIgb2Ygb2JqZWN0cworICAgICAgdGhhdCBjb3VsZCBub3QgYmUgY29sbGVjdGVkIGFuZCB3ZXJlIHB1dCBpbiA6ZGF0YTpgZ2FyYmFnZWAuCisKKyAgIEFwcGxpY2F0aW9ucyBjYW4gYWRkIHRoZWlyIG93biBjYWxsYmFja3MgdG8gdGhpcyBsaXN0LiAgVGhlIHByaW1hcnkKKyAgIHVzZSBjYXNlcyBhcmU6CisKKyAgICAgIEdhdGhlcmluZyBzdGF0aXN0aWNzIGFib3V0IGdhcmJhZ2UgY29sbGVjdGlvbiwgc3VjaCBhcyBob3cgb2Z0ZW4KKyAgICAgIHZhcmlvdXMgZ2VuZXJhdGlvbnMgYXJlIGNvbGxlY3RlZCwgYW5kIGhvdyBsb25nIHRoZSBjb2xsZWN0aW9uCisgICAgICB0YWtlcy4KKworICAgICAgQWxsb3dpbmcgYXBwbGljYXRpb25zIHRvIGlkZW50aWZ5IGFuZCBjbGVhciB0aGVpciBvd24gdW5jb2xsZWN0YWJsZQorICAgICAgdHlwZXMgd2hlbiB0aGV5IGFwcGVhciBpbiA6ZGF0YTpgZ2FyYmFnZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBwcm92aWRlZCBmb3IgdXNlIHdpdGggOmZ1bmM6YHNldF9kZWJ1Z2A6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0IGIvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKaW5kZXggMGZhMDIyYy4uODI1MzExYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKQEAgLTE4NSwxMCArMTg1LDEzIEBACiAgICB0cmFuc2xhdGlvbiBvYmplY3QgZnJvbSB0aGUgY2FjaGU7IHRoZSBhY3R1YWwgaW5zdGFuY2UgZGF0YSBpcyBzdGlsbCBzaGFyZWQgd2l0aAogICAgdGhlIGNhY2hlLgogCi0gICBJZiBubyA6ZmlsZTpgLm1vYCBmaWxlIGlzIGZvdW5kLCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyA6ZXhjOmBJT0Vycm9yYCBpZgorICAgSWYgbm8gOmZpbGU6YC5tb2AgZmlsZSBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYKICAgICpmYWxsYmFjayogaXMgZmFsc2UgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgYW5kIHJldHVybnMgYQogICAgOmNsYXNzOmBOdWxsVHJhbnNsYXRpb25zYCBpbnN0YW5jZSBpZiAqZmFsbGJhY2sqIGlzIHRydWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbChkb21haW4sIGxvY2FsZWRpcj1Ob25lLCBjb2Rlc2V0PU5vbmUsIG5hbWVzPU5vbmUpCiAKQEAgLTM0Miw3ICszNDUsNyBAQAogCiBJZiB0aGUgOmZpbGU6YC5tb2AgZmlsZSdzIG1hZ2ljIG51bWJlciBpcyBpbnZhbGlkLCBvciBpZiBvdGhlciBwcm9ibGVtcyBvY2N1cgogd2hpbGUgcmVhZGluZyB0aGUgZmlsZSwgaW5zdGFudGlhdGluZyBhIDpjbGFzczpgR05VVHJhbnNsYXRpb25zYCBjbGFzcyBjYW4gcmFpc2UKLTpleGM6YElPRXJyb3JgLgorOmV4YzpgT1NFcnJvcmAuCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBmcm9tIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nemlwLnJzdCBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CmluZGV4IGFiYmQwMTguLjJjYmQyZDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2d6aXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CkBAIC0xMyw5ICsxMywxMSBAQAogCiBUaGUgZGF0YSBjb21wcmVzc2lvbiBpcyBwcm92aWRlZCBieSB0aGUgOm1vZDpgemxpYmAgbW9kdWxlLgogCi1UaGUgOm1vZDpgZ3ppcGAgbW9kdWxlIHByb3ZpZGVzIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcy4gVGhlIDpjbGFzczpgR3ppcEZpbGVgCi1jbGFzcyByZWFkcyBhbmQgd3JpdGVzIDpwcm9ncmFtOmBnemlwYFwgLWZvcm1hdCBmaWxlcywgYXV0b21hdGljYWxseSBjb21wcmVzc2luZwotb3IgZGVjb21wcmVzc2luZyB0aGUgZGF0YSBzbyB0aGF0IGl0IGxvb2tzIGxpa2UgYW4gb3JkaW5hcnkgOnRlcm06YGZpbGUgb2JqZWN0YC4KK1RoZSA6bW9kOmBnemlwYCBtb2R1bGUgcHJvdmlkZXMgdGhlIDpjbGFzczpgR3ppcEZpbGVgIGNsYXNzLCBhcyB3ZWxsIGFzIHRoZQorOmZ1bmM6YC5vcGVuYCwgOmZ1bmM6YGNvbXByZXNzYCBhbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4KK1RoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcyByZWFkcyBhbmQgd3JpdGVzIDpwcm9ncmFtOmBnemlwYFwgLWZvcm1hdCBmaWxlcywKK2F1dG9tYXRpY2FsbHkgY29tcHJlc3Npbmcgb3IgZGVjb21wcmVzc2luZyB0aGUgZGF0YSBzbyB0aGF0IGl0IGxvb2tzIGxpa2UgYW4KK29yZGluYXJ5IDp0ZXJtOmBmaWxlIG9iamVjdGAuCiAKIE5vdGUgdGhhdCBhZGRpdGlvbmFsIGZpbGUgZm9ybWF0cyB3aGljaCBjYW4gYmUgZGVjb21wcmVzc2VkIGJ5IHRoZQogOnByb2dyYW06YGd6aXBgIGFuZCA6cHJvZ3JhbTpgZ3VuemlwYCBwcm9ncmFtcywgc3VjaCAgYXMgdGhvc2UgcHJvZHVjZWQgYnkKQEAgLTI0LDYgKzI2LDM0IEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBpdGVtczoKIAogCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3JiJywgY29tcHJlc3NsZXZlbD05LCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGEgZ3ppcC1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZSwgcmV0dXJuaW5nIGEgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuCisKKyAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgOmNsYXNzOmBzdHJgIG9yCisgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCdyJ2BgLCBgYCdyYidgYCwgYGAnYSdgYCwgYGAnYWInYGAsCisgICBgYCd3J2BgLCBvciBgYCd3YidgYCBmb3IgYmluYXJ5IG1vZGUsIG9yIGBgJ3J0J2BgLCBgYCdhdCdgYCwgb3IgYGAnd3QnYGAgZm9yCisgICB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGlzIGBgJ3JiJ2BgLgorCisgICBUaGUgKmNvbXByZXNzbGV2ZWwqIGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZnJvbSAwIHRvIDksIGFzIGZvciB0aGUKKyAgIDpjbGFzczpgR3ppcEZpbGVgIGNvbnN0cnVjdG9yLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBHemlwRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKWBgLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgIEZvciB0ZXh0IG1vZGUsIGEgOmNsYXNzOmBHemlwRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqZmlsZW5hbWUqIGJlaW5nIGEgZmlsZSBvYmplY3QsIHN1cHBvcnQgZm9yIHRleHQgbW9kZSwKKyAgICAgIGFuZCB0aGUgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMuCisKKwogLi4gY2xhc3M6OiBHemlwRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSwgZmlsZW9iaj1Ob25lLCBtdGltZT1Ob25lKQogCiAgICBDb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR3ppcEZpbGVgIGNsYXNzLCB3aGljaCBzaW11bGF0ZXMgbW9zdCBvZiB0aGUKQEAgLTQ2LDkgKzc2LDkgQEAKICAgIG9yIGBgJ3diJ2BgLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZmlsZSB3aWxsIGJlIHJlYWQgb3Igd3JpdHRlbi4gIFRoZSBkZWZhdWx0CiAgICBpcyB0aGUgbW9kZSBvZiAqZmlsZW9iaiogaWYgZGlzY2VybmlibGU7IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgYGAncmInYGAuCiAKLSAgIE5vdGUgdGhhdCB0aGUgZmlsZSBpcyBhbHdheXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlOyB0ZXh0IG1vZGUgaXMgbm90Ci0gICBzdXBwb3J0ZWQuIElmIHlvdSBuZWVkIHRvIHJlYWQgYSBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB3cmFwIHlvdXIKLSAgIDpjbGFzczpgR3ppcEZpbGVgIHdpdGggYW4gOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYC4KKyAgIE5vdGUgdGhhdCB0aGUgZmlsZSBpcyBhbHdheXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlLiBUbyBvcGVuIGEgY29tcHJlc3NlZCBmaWxlCisgICBpbiB0ZXh0IG1vZGUsIHVzZSA6ZnVuYzpgLm9wZW5gIChvciB3cmFwIHlvdXIgOmNsYXNzOmBHemlwRmlsZWAgd2l0aCBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCkuCiAKICAgIFRoZSAqY29tcHJlc3NsZXZlbCogYXJndW1lbnQgaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nCiAgICB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb247IGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdApAQCAtNzIsNyArMTAyLDcgQEAKIAogICAgOmNsYXNzOmBHemlwRmlsZWAgc3VwcG9ydHMgdGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGludGVyZmFjZSwKICAgIGluY2x1ZGluZyBpdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgT25seSB0aGUKLSAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kcyBhcmVuJ3QgaW1wbGVtZW50ZWQuCisgICA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAogICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKIApAQCAtOTQsMTIgKzEyNCw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdW5zZWVrYWJsZSBmaWxlcyB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWQxYCBtZXRob2QgaXMgbm93IGltcGxlbWVudGVkLgogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3JiJywgY29tcHJlc3NsZXZlbD05KQotCi0gICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYEd6aXBGaWxlKGZpbGVuYW1lLGBgIGBgbW9kZSxgYCBgYGNvbXByZXNzbGV2ZWwpYGAuCi0gICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBpcyByZXF1aXJlZDsgKm1vZGUqIGRlZmF1bHRzIHRvIGBgJ3JiJ2BgIGFuZAotICAgKmNvbXByZXNzbGV2ZWwqIGRlZmF1bHRzIHRvIGBgOWBgLgogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAppbmRleCBiYzhhYjJjLi45MjlkNDFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdApAQCAtNDAsMTIgKzQwLDEyIEBACiAKIC4uIG5vdGU6OgogCi0gICBGb3IgYmV0dGVyIG11bHRpdGhyZWFkaW5nIHBlcmZvcm1hbmNlLCB0aGUgUHl0aG9uIEdJTCBpcyByZWxlYXNlZCBmb3IKKyAgIEZvciBiZXR0ZXIgbXVsdGl0aHJlYWRpbmcgcGVyZm9ybWFuY2UsIHRoZSBQeXRob24gOnRlcm06YEdJTGAgaXMgcmVsZWFzZWQgZm9yCiAgICBzdHJpbmdzIG9mIG1vcmUgdGhhbiAyMDQ3IGJ5dGVzIGF0IG9iamVjdCBjcmVhdGlvbiBvciBvbiB1cGRhdGUuCiAKIC4uIG5vdGU6OgogCi0gICBGZWVkaW5nIHN0cmluZyBvYmplY3RzIGlzIHRvIDptZXRoOmB1cGRhdGVgIGlzIG5vdCBzdXBwb3J0ZWQsIGFzIGhhc2hlcyB3b3JrCisgICBGZWVkaW5nIHN0cmluZyBvYmplY3RzIGludG8gOm1ldGg6YHVwZGF0ZWAgaXMgbm90IHN1cHBvcnRlZCwgYXMgaGFzaGVzIHdvcmsKICAgIG9uIGJ5dGVzLCBub3Qgb24gY2hhcmFjdGVycy4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IE9wZW5TU0w7ICh1c2UgaW4gbW9kdWxlIGhhc2hsaWIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9obWFjLnJzdCBiL0RvYy9saWJyYXJ5L2htYWMucnN0CmluZGV4IGVmZjI3MjQuLjA3MDZmZjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2htYWMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2htYWMucnN0CkBAIC0zOCw2ICszOCwxMyBAQAogICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yLiAgSXQgbWF5IGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzLCBpbmNsdWRpbmcgTlVMCiAgICBieXRlcy4KIAorICAgLi4gd2FybmluZzo6CisKKyAgICAgIFdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgOm1ldGg6YGRpZ2VzdGAgdG8gYW4gZXh0ZXJuYWxseS1zdXBwbGllZAorICAgICAgZGlnZXN0IGR1cmluZyBhIHZlcmlmaWNhdGlvbiByb3V0aW5lLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlCisgICAgICA6ZnVuYzpgY29tcGFyZV9kaWdlc3RgIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGBgPT1gYCBvcGVyYXRvcgorICAgICAgdG8gcmVkdWNlIHRoZSB2dWxuZXJhYmlsaXR5IHRvIHRpbWluZyBhdHRhY2tzLgorCiAKIC4uIG1ldGhvZDo6IEhNQUMuaGV4ZGlnZXN0KCkKIApAQCAtNDUsNiArNTIsMTMgQEAKICAgIGxlbmd0aCBjb250YWluaW5nIG9ubHkgaGV4YWRlY2ltYWwgZGlnaXRzLiAgVGhpcyBtYXkgYmUgdXNlZCB0byBleGNoYW5nZSB0aGUKICAgIHZhbHVlIHNhZmVseSBpbiBlbWFpbCBvciBvdGhlciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KIAorICAgLi4gd2FybmluZzo6CisKKyAgICAgIFdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgOm1ldGg6YGhleGRpZ2VzdGAgdG8gYW4gZXh0ZXJuYWxseS1zdXBwbGllZAorICAgICAgZGlnZXN0IGR1cmluZyBhIHZlcmlmaWNhdGlvbiByb3V0aW5lLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlCisgICAgICA6ZnVuYzpgY29tcGFyZV9kaWdlc3RgIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGBgPT1gYCBvcGVyYXRvcgorICAgICAgdG8gcmVkdWNlIHRoZSB2dWxuZXJhYmlsaXR5IHRvIHRpbWluZyBhdHRhY2tzLgorCiAKIC4uIG1ldGhvZDo6IEhNQUMuY29weSgpCiAKQEAgLTUyLDYgKzY2LDI3IEBACiAgICBjb21wdXRlIHRoZSBkaWdlc3RzIG9mIHN0cmluZ3MgdGhhdCBzaGFyZSBhIGNvbW1vbiBpbml0aWFsIHN1YnN0cmluZy4KIAogCitUaGlzIG1vZHVsZSBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9uOgorCisuLiBmdW5jdGlvbjo6IGNvbXBhcmVfZGlnZXN0KGEsIGIpCisKKyAgIFJldHVybiBgYGEgPT0gYmBgLiAgVGhpcyBmdW5jdGlvbiB1c2VzIGFuIGFwcHJvYWNoIGRlc2lnbmVkIHRvIHByZXZlbnQKKyAgIHRpbWluZyBhbmFseXNpcyBieSBhdm9pZGluZyBjb250ZW50LWJhc2VkIHNob3J0IGNpcmN1aXRpbmcgYmVoYXZpb3VyLAorICAgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuICAqYSogYW5kICpiKiBtdXN0IGJvdGggYmUgb2YgdGhlCisgICBzYW1lIHR5cGU6IGVpdGhlciA6Y2xhc3M6YHN0cmAgKEFTQ0lJIG9ubHksIGFzIGUuZy4gcmV0dXJuZWQgYnkKKyAgIDptZXRoOmBITUFDLmhleGRpZ2VzdGApLCBvciBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgcHJvdG9jb2wKKyAgIChlLmcuIDpjbGFzczpgYnl0ZXNgKS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIElmICphKiBhbmQgKmIqIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3Rocywgb3IgaWYgYW4gZXJyb3Igb2NjdXJzLAorICAgICAgYSB0aW1pbmcgYXR0YWNrIGNvdWxkIHRoZW9yZXRpY2FsbHkgcmV2ZWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgdHlwZXMgYW5kIGxlbmd0aHMgb2YgKmEqIGFuZCAqYiotLWJ1dCBub3QgdGhlaXIgdmFsdWVzLgorCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgaGFzaGxpYmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QKaW5kZXggYjhiNGFhOC4uNjVjZTgxNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QKQEAgLTksMTEgKzksMTkgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgZGVmaW5lcyB0aHJlZSBkaWN0aW9uYXJpZXMsIGBgbmFtZTJjb2RlcG9pbnRgYCwgYGBjb2RlcG9pbnQybmFtZWBgLAotYW5kIGBgZW50aXR5ZGVmc2BgLiBgYGVudGl0eWRlZnNgYCBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIDphdHRyOmBlbnRpdHlkZWZzYAotYXR0cmlidXRlIG9mIHRoZSA6Y2xhc3M6YGh0bWwucGFyc2VyLkhUTUxQYXJzZXJgIGNsYXNzLiAgVGhlIGRlZmluaXRpb24gcHJvdmlkZWQKLWhlcmUgY29udGFpbnMgYWxsIHRoZSBlbnRpdGllcyBkZWZpbmVkIGJ5IFhIVE1MIDEuMCB0aGF0IGNhbiBiZSBoYW5kbGVkIHVzaW5nCi1zaW1wbGUgdGV4dHVhbCBzdWJzdGl0dXRpb24gaW4gdGhlIExhdGluLTEgY2hhcmFjdGVyIHNldCAoSVNPLTg4NTktMSkuCitUaGlzIG1vZHVsZSBkZWZpbmVzIGZvdXIgZGljdGlvbmFyaWVzLCA6ZGF0YTpgaHRtbDVgLAorOmRhdGE6YG5hbWUyY29kZXBvaW50YCwgOmRhdGE6YGNvZGVwb2ludDJuYW1lYCwgYW5kIDpkYXRhOmBlbnRpdHlkZWZzYC4KKworCisuLiBkYXRhOjogaHRtbDUKKworICAgQSBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBIVE1MNSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyBbI11fIHRvIHRoZQorICAgZXF1aXZhbGVudCBVbmljb2RlIGNoYXJhY3RlcihzKSwgZS5nLiBgYGh0bWw1WydndDsnXSA9PSAnPidgYC4KKyAgIE5vdGUgdGhhdCB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlzIGluY2x1ZGVkIGluIHRoZSBuYW1lIChlLmcuIGBgJ2d0OydgYCksCisgICBob3dldmVyIHNvbWUgb2YgdGhlIG5hbWVzIGFyZSBhY2NlcHRlZCBieSB0aGUgc3RhbmRhcmQgZXZlbiB3aXRob3V0IHRoZQorICAgc2VtaWNvbG9uOiBpbiB0aGlzIGNhc2UgdGhlIG5hbWUgaXMgcHJlc2VudCB3aXRoIGFuZCB3aXRob3V0IHRoZSBgYCc7J2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBkYXRhOjogZW50aXR5ZGVmcwpAQCAtMzAsMyArMzgsOCBAQAogLi4gZGF0YTo6IGNvZGVwb2ludDJuYW1lCiAKICAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgVW5pY29kZSBjb2RlcG9pbnRzIHRvIEhUTUwgZW50aXR5IG5hbWVzLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI10gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzLmh0bWwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdAppbmRleCBmM2MzNmVjLi5lNDE1NGVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CkBAIC0xNiwxMyArMTYsMTQgQEAKIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjbGFzcyA6Y2xhc3M6YEhUTUxQYXJzZXJgIHdoaWNoIHNlcnZlcyBhcyB0aGUgYmFzaXMgZm9yCiBwYXJzaW5nIHRleHQgZmlsZXMgZm9ybWF0dGVkIGluIEhUTUwgKEh5cGVyVGV4dCBNYXJrLXVwIExhbmd1YWdlKSBhbmQgWEhUTUwuCiAKLS4uIGNsYXNzOjogSFRNTFBhcnNlcihzdHJpY3Q9VHJ1ZSkKKy4uIGNsYXNzOjogSFRNTFBhcnNlcihzdHJpY3Q9RmFsc2UpCiAKLSAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4gIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksIGludmFsaWQKLSAgIEhUTUwgcmVzdWx0cyBpbiA6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbnMgWyNdXy4gIElmCi0gICAqc3RyaWN0KiBpcyBgYEZhbHNlYGAsIHRoZSBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIG1ha2UgYSBiZXN0IGd1ZXNzIGF0Ci0gICB0aGUgaW50ZW50aW9uIG9mIGFueSBpbnZhbGlkIEhUTUwgaXQgZW5jb3VudGVycywgc2ltaWxhciB0byB0aGUgd2F5IG1vc3QKLSAgIGJyb3dzZXJzIGRvLiAgVXNpbmcgYGBzdHJpY3Q9RmFsc2VgYCBpcyBhZHZpc2VkLgorICAgQ3JlYXRlIGEgcGFyc2VyIGluc3RhbmNlLiAgSWYgKnN0cmljdCogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCksIHRoZSBwYXJzZXIKKyAgIHdpbGwgYWNjZXB0IGFuZCBwYXJzZSBpbnZhbGlkIG1hcmt1cC4gIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgIHRoZSBwYXJzZXIKKyAgIHdpbGwgcmFpc2UgYW4gOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb24gaW5zdGVhZCBbI11fIHdoZW4KKyAgIGl0J3Mgbm90IGFibGUgdG8gcGFyc2UgdGhlIG1hcmt1cC4KKyAgIFRoZSB1c2Ugb2YgYGBzdHJpY3Q9VHJ1ZWBgIGlzIGRpc2NvdXJhZ2VkIGFuZCB0aGUgKnN0cmljdCogYXJndW1lbnQgaXMKKyAgIGRlcHJlY2F0ZWQuCiAKICAgIEFuIDpjbGFzczpgLkhUTUxQYXJzZXJgIGluc3RhbmNlIGlzIGZlZCBIVE1MIGRhdGEgYW5kIGNhbGxzIGhhbmRsZXIgbWV0aG9kcwogICAgd2hlbiBzdGFydCB0YWdzLCBlbmQgdGFncywgdGV4dCwgY29tbWVudHMsIGFuZCBvdGhlciBtYXJrdXAgZWxlbWVudHMgYXJlCkBAIC0zMiw3ICszMywxMiBAQAogICAgVGhpcyBwYXJzZXIgZG9lcyBub3QgY2hlY2sgdGhhdCBlbmQgdGFncyBtYXRjaCBzdGFydCB0YWdzIG9yIGNhbGwgdGhlIGVuZC10YWcKICAgIGhhbmRsZXIgZm9yIGVsZW1lbnRzIHdoaWNoIGFyZSBjbG9zZWQgaW1wbGljaXRseSBieSBjbG9zaW5nIGFuIG91dGVyIGVsZW1lbnQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yICpzdHJpY3QqIGtleXdvcmQgYWRkZWQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAqc3RyaWN0KiBrZXl3b3JkIGFkZGVkLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy41CisgICAgICBUaGUgKnN0cmljdCogYXJndW1lbnQgYW5kIHRoZSBzdHJpY3QgbW9kZSBoYXZlIGJlZW4gZGVwcmVjYXRlZC4KKyAgICAgIFRoZSBwYXJzZXIgaXMgbm93IGFibGUgdG8gYWNjZXB0IGFuZCBwYXJzZSBpbnZhbGlkIG1hcmt1cCB0b28uCiAKIEFuIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIHdlbGw6CiAKQEAgLTQ2LDYgKzUyLDEwIEBACiAgICBkZXRlY3RlZCwgYW5kIDphdHRyOmBvZmZzZXRgIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbnRvIHRoZSBsaW5lIGF0CiAgICB3aGljaCB0aGUgY29uc3RydWN0IHN0YXJ0cy4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQorICAgICAgVGhpcyBleGNlcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBiZWNhdXNlIGl0J3MgbmV2ZXIgcmFpc2VkIGJ5IHRoZSBwYXJzZXIKKyAgICAgICh3aGVuIHRoZSBkZWZhdWx0IG5vbi1zdHJpY3QgbW9kZSBpcyB1c2VkKS4KKwogCiBFeGFtcGxlIEhUTUwgUGFyc2VyIEFwcGxpY2F0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwucnN0CmluZGV4IDNhZDFjMGMuLjExMDdjYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwucnN0CkBAIC0xOSwzICsxOSwxMCBAQAogICAgYXR0cmlidXRlIHZhbHVlIGRlbGltaXRlZCBieSBxdW90ZXMsIGFzIGluIGBgPGEgaHJlZj0iLi4uIj5gYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKKy0tLS0tLS0tLS0tLS0tCisKK1N1Ym1vZHVsZXMgaW4gdGhlIGBgaHRtbGBgIHBhY2thZ2UgYXJlOgorCisqIDptb2Q6YGh0bWwucGFyc2VyYCAtLSBIVE1ML1hIVE1MIHBhcnNlciB3aXRoIGxlbmllbnQgcGFyc2luZyBtb2RlCisqIDptb2Q6YGh0bWwuZW50aXRpZXNgIC0tIEhUTUwgZW50aXR5IGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKaW5kZXggZDQzOWYyNC4uNTU5OWRhYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdApAQCAtMzQzLDYgKzM0MywxNSBAQAogfCA6Y29uc3Q6YFVQR1JBREVfUkVRVUlSRURgICAgICAgICAgICAgICAgIHwgYGA0MjZgYCB8IEhUVFAgVXBncmFkZSB0byBUTFMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMjgxN2AsIFNlY3Rpb24gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YFBSRUNPTkRJVElPTl9SRVFVSVJFRGAgICAgICAgICAgIHwgYGA0MjhgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YFRPT19NQU5ZX1JFUVVFU1RTYCAgICAgICAgICAgICAgIHwgYGA0MjlgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VgIHwgYGA0MzFgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCA6Y29uc3Q6YElOVEVSTkFMX1NFUlZFUl9FUlJPUmAgICAgICAgICAgIHwgYGA1MDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuMT5gXyAgfApAQCAtMzczLDYgKzM4MiwxMiBAQAogfCA6Y29uc3Q6YE5PVF9FWFRFTkRFRGAgICAgICAgICAgICAgICAgICAgIHwgYGA1MTBgYCB8IEFuIEhUVFAgRXh0ZW5zaW9uIEZyYW1ld29yaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMjc3NGAsIFNlY3Rpb24gNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29uc3Q6YE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgIHwgYGA1MTFgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgY29kZXMgYGA0MjhgYCwgYGA0MjlgYCwgYGA0MzFgYCBhbmQgYGA1MTFgYCBmcm9tIDpyZmM6YDY1ODVgLgogCiAKIC4uIGRhdGE6OiByZXNwb25zZXMKQEAgLTUwNiw2ICs1MjEsMTIgQEAKIAogICAgUmVhZHMgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHksIG9yIHVwIHRvIHRoZSBuZXh0ICphbXQqIGJ5dGVzLgogCisuLiBtZXRob2Q6OiBIVFRQUmVzcG9uc2UucmVhZGludG8oYikKKworICAgUmVhZHMgdXAgdG8gdGhlIG5leHQgbGVuKGIpIGJ5dGVzIG9mIHRoZSByZXNwb25zZSBib2R5IGludG8gdGhlIGJ1ZmZlciAqYiouCisgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IEhUVFBSZXNwb25zZS5nZXRoZWFkZXIobmFtZSwgZGVmYXVsdD1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QKaW5kZXggY2M4ZjI1MS4uNDBmMjRmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llamFyLnJzdApAQCAtNDAsNyArNDAsMTEgQEAKIC4uIGV4Y2VwdGlvbjo6IExvYWRFcnJvcgogCiAgICBJbnN0YW5jZXMgb2YgOmNsYXNzOmBGaWxlQ29va2llSmFyYCByYWlzZSB0aGlzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlIHRvIGxvYWQKLSAgIGNvb2tpZXMgZnJvbSBhIGZpbGUuICA6ZXhjOmBMb2FkRXJyb3JgIGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBjb29raWVzIGZyb20gYSBmaWxlLiAgOmV4YzpgTG9hZEVycm9yYCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTG9hZEVycm9yIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgSU9FcnJvcmAuCiAKIAogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKQEAgLTI1Nyw5ICsyNjEsMTIgQEAKICAgIEFyZ3VtZW50cyBhcmUgYXMgZm9yIDptZXRoOmBzYXZlYC4KIAogICAgVGhlIG5hbWVkIGZpbGUgbXVzdCBiZSBpbiB0aGUgZm9ybWF0IHVuZGVyc3Rvb2QgYnkgdGhlIGNsYXNzLCBvcgotICAgOmV4YzpgTG9hZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEFsc28sIDpleGM6YElPRXJyb3JgIG1heSBiZSByYWlzZWQsIGZvcgorICAgOmV4YzpgTG9hZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEFsc28sIDpleGM6YE9TRXJyb3JgIG1heSBiZSByYWlzZWQsIGZvcgogICAgZXhhbXBsZSBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gbWV0aG9kOjogRmlsZUNvb2tpZUphci5yZXZlcnQoZmlsZW5hbWU9Tm9uZSwgaWdub3JlX2Rpc2NhcmQ9RmFsc2UsIGlnbm9yZV9leHBpcmVzPUZhbHNlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAppbmRleCA1YWUzZmQ0Li42NDZmMmU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKQEAgLTIyLDkgKzIyLDEyIEBACiBDb29raWUgaGFuZGxpbmcuICBBcyBhIHJlc3VsdCwgdGhlIHBhcnNpbmcgcnVsZXMgdXNlZCBhcmUgYSBiaXQgbGVzcyBzdHJpY3QuCiAKIFRoZSBjaGFyYWN0ZXIgc2V0LCA6ZGF0YTpgc3RyaW5nLmFzY2lpX2xldHRlcnNgLCA6ZGF0YTpgc3RyaW5nLmRpZ2l0c2AgYW5kCi1gYCEjJCUmJyorLS5eX2B8fmBgIGRlbm90ZSB0aGUgc2V0IG9mIHZhbGlkIGNoYXJhY3RlcnMgYWxsb3dlZCBieSB0aGlzIG1vZHVsZQorYGAhIyQlJicqKy0uXl9gfH46YGAgZGVub3RlIHRoZSBzZXQgb2YgdmFsaWQgY2hhcmFjdGVycyBhbGxvd2VkIGJ5IHRoaXMgbW9kdWxlCiBpbiBDb29raWUgbmFtZSAoYXMgOmF0dHI6YH5Nb3JzZWwua2V5YCkuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGxvd2VkICc6JyBhcyBhIHZhbGlkIENvb2tpZSBuYW1lIGNoYXJhY3Rlci4KKwogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzg3YTM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5yc3QKQEAgLTAsMCArMSwxMSBAQAorOm1vZDpgaHR0cGAgLS0tIEhUVFAgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitgYGh0dHBgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCB0aGUKK0h5cGVyVGV4dCBUcmFuc2ZlciBQcm90b2NvbDoKKworKiA6bW9kOmBodHRwLmNsaWVudGAgaXMgYSBsb3ctbGV2ZWwgSFRUUCBwcm90b2NvbCBjbGllbnQ7IGZvciBoaWdoLWxldmVsIFVSTAorICBvcGVuaW5nIHVzZSA6bW9kOmB1cmxsaWIucmVxdWVzdGAKKyogOm1vZDpgaHR0cC5zZXJ2ZXJgIGNvbnRhaW5zIGJhc2ljIEhUVFAgc2VydmVyIGNsYXNzZXMgYmFzZWQgb24gOm1vZDpgc29ja2V0c2VydmVyYAorKiA6bW9kOmBodHRwLmNvb2tpZXNgIGhhcyB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBzdGF0ZSBtYW5hZ2VtZW50IHdpdGggY29va2llcworKiA6bW9kOmBodHRwLmNvb2tpZWphcmAgcHJvdmlkZXMgcGVyc2lzdGVuY2Ugb2YgY29va2llcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CmluZGV4IDMwMGUzMzIuLmNiYWQzZWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKQEAgLTE3OSwxOSArMTc5LDMwIEBACiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2UoY29kZSwgbWVzc2FnZT1Ob25lKQogCi0gICAgICBTZW5kcyBhIHJlc3BvbnNlIGhlYWRlciBhbmQgbG9ncyB0aGUgYWNjZXB0ZWQgcmVxdWVzdC4gVGhlIEhUVFAgcmVzcG9uc2UKLSAgICAgIGxpbmUgaXMgc2VudCwgZm9sbG93ZWQgYnkgKlNlcnZlciogYW5kICpEYXRlKiBoZWFkZXJzLiBUaGUgdmFsdWVzIGZvcgotICAgICAgdGhlc2UgdHdvIGhlYWRlcnMgYXJlIHBpY2tlZCB1cCBmcm9tIHRoZSA6bWV0aDpgdmVyc2lvbl9zdHJpbmdgIGFuZAotICAgICAgOm1ldGg6YGRhdGVfdGltZV9zdHJpbmdgIG1ldGhvZHMsIHJlc3BlY3RpdmVseS4KKyAgICAgIEFkZHMgYSByZXNwb25zZSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBsb2dzIHRoZSBhY2NlcHRlZAorICAgICAgcmVxdWVzdC4gVGhlIEhUVFAgcmVzcG9uc2UgbGluZSBpcyB3cml0dGVuIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsCisgICAgICBmb2xsb3dlZCBieSAqU2VydmVyKiBhbmQgKkRhdGUqIGhlYWRlcnMuIFRoZSB2YWx1ZXMgZm9yIHRoZXNlIHR3byBoZWFkZXJzCisgICAgICBhcmUgcGlja2VkIHVwIGZyb20gdGhlIDptZXRoOmB2ZXJzaW9uX3N0cmluZ2AgYW5kCisgICAgICA6bWV0aDpgZGF0ZV90aW1lX3N0cmluZ2AgbWV0aG9kcywgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgc2VydmVyIGRvZXMgbm90CisgICAgICBpbnRlbmQgdG8gc2VuZCBhbnkgb3RoZXIgaGVhZGVycyB1c2luZyB0aGUgOm1ldGg6YHNlbmRfaGVhZGVyYCBtZXRob2QsCisgICAgICB0aGVuIDptZXRoOmBzZW5kX3Jlc3BvbnNlYCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSA6bWV0aDpgZW5kX2hlYWRlcnNgCisgICAgICBjYWxsLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgSGVhZGVycyBhcmUgc3RvcmVkIHRvIGFuIGludGVybmFsIGJ1ZmZlciBhbmQgOm1ldGg6YGVuZF9oZWFkZXJzYAorICAgICAgICAgbmVlZHMgdG8gYmUgY2FsbGVkIGV4cGxpY2l0bHkuCisKIAogICAgLi4gbWV0aG9kOjogc2VuZF9oZWFkZXIoa2V5d29yZCwgdmFsdWUpCiAKLSAgICAgIFN0b3JlcyB0aGUgSFRUUCBoZWFkZXIgdG8gYW4gaW50ZXJuYWwgYnVmZmVyIHdoaWNoIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUKLSAgICAgIG91dHB1dCBzdHJlYW0gd2hlbiA6bWV0aDpgZW5kX2hlYWRlcnNgIG1ldGhvZCBpcyBpbnZva2VkLgotICAgICAgKmtleXdvcmQqIHNob3VsZCBzcGVjaWZ5IHRoZSBoZWFkZXIga2V5d29yZCwgd2l0aCAqdmFsdWUqCi0gICAgICBzcGVjaWZ5aW5nIGl0cyB2YWx1ZS4KKyAgICAgIEFkZHMgdGhlIEhUVFAgaGVhZGVyIHRvIGFuIGludGVybmFsIGJ1ZmZlciB3aGljaCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlCisgICAgICBvdXRwdXQgc3RyZWFtIHdoZW4gZWl0aGVyIDptZXRoOmBlbmRfaGVhZGVyc2Agb3IgOm1ldGg6YGZsdXNoX2hlYWRlcnNgIGlzCisgICAgICBpbnZva2VkLiAqa2V5d29yZCogc2hvdWxkIHNwZWNpZnkgdGhlIGhlYWRlciBrZXl3b3JkLCB3aXRoICp2YWx1ZSoKKyAgICAgIHNwZWNpZnlpbmcgaXRzIHZhbHVlLiBOb3RlIHRoYXQsIGFmdGVyIHRoZSBzZW5kX2hlYWRlciBjYWxscyBhcmUgZG9uZSwKKyAgICAgIDptZXRoOmBlbmRfaGVhZGVyc2AgTVVTVCBCRSBjYWxsZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4KIAotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgU3RvcmluZyB0aGUgaGVhZGVycyBpbiBhbiBpbnRlcm5hbCBidWZmZXIKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBIZWFkZXJzIGFyZSBzdG9yZWQgaW4gYW4gaW50ZXJuYWwgYnVmZmVyLgogCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2Vfb25seShjb2RlLCBtZXNzYWdlPU5vbmUpCkBAIC0yMDUsMTAgKzIxNiwxOSBAQAogCiAgICAuLiBtZXRob2Q6OiBlbmRfaGVhZGVycygpCiAKLSAgICAgIFdyaXRlIHRoZSBidWZmZXJlZCBIVFRQIGhlYWRlcnMgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHNlbmQgYSBibGFuawotICAgICAgbGluZSwgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlLgorICAgICAgQWRkcyBhIGJsYW5rIGxpbmUKKyAgICAgIChpbmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIEhUVFAgaGVhZGVycyBpbiB0aGUgcmVzcG9uc2UpCisgICAgICB0byB0aGUgaGVhZGVycyBidWZmZXIgYW5kIGNhbGxzIDptZXRoOmBmbHVzaF9oZWFkZXJzKClgLgogCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiBXcml0aW5nIHRoZSBidWZmZXJlZCBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSBidWZmZXJlZCBoZWFkZXJzIGFyZSB3cml0dGVuIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgorCisgICAuLiBtZXRob2Q6OiBmbHVzaF9oZWFkZXJzKCkKKworICAgICAgRmluYWxseSBzZW5kIHRoZSBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaCB0aGUgaW50ZXJuYWwKKyAgICAgIGhlYWRlcnMgYnVmZmVyLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gbWV0aG9kOjogbG9nX3JlcXVlc3QoY29kZT0nLScsIHNpemU9Jy0nKQogCkBAIC0yNTAsOCArMjcwLDExIEBACiAKICAgIC4uIG1ldGhvZDo6IGFkZHJlc3Nfc3RyaW5nKCkKIAotICAgICAgUmV0dXJucyB0aGUgY2xpZW50IGFkZHJlc3MsIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4gQSBuYW1lIGxvb2t1cCBpcwotICAgICAgcGVyZm9ybWVkIG9uIHRoZSBjbGllbnQncyBJUCBhZGRyZXNzLgorICAgICAgUmV0dXJucyB0aGUgY2xpZW50IGFkZHJlc3MuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCBhIG5hbWUgbG9va3VwIHdhcyBwZXJmb3JtZWQuIFRvIGF2b2lkIG5hbWUgcmVzb2x1dGlvbgorICAgICAgICAgZGVsYXlzLCBpdCBub3cgYWx3YXlzIHJldHVybnMgdGhlIElQIGFkZHJlc3MuCiAKIAogLi4gY2xhc3M6OiBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcikKQEAgLTI5OSw3ICszMjIsNyBAQAogICAgICAgcmVzcG9uc2UgaWYgdGhlIDpmdW5jOmBsaXN0ZGlyYCBmYWlscy4KIAogICAgICAgSWYgdGhlIHJlcXVlc3Qgd2FzIG1hcHBlZCB0byBhIGZpbGUsIGl0IGlzIG9wZW5lZCBhbmQgdGhlIGNvbnRlbnRzIGFyZQotICAgICAgcmV0dXJuZWQuICBBbnkgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGluIG9wZW5pbmcgdGhlIHJlcXVlc3RlZCBmaWxlIGlzCisgICAgICByZXR1cm5lZC4gIEFueSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaW4gb3BlbmluZyB0aGUgcmVxdWVzdGVkIGZpbGUgaXMKICAgICAgIG1hcHBlZCB0byBhIGBgNDA0YGAsIGBgJ0ZpbGUgbm90IGZvdW5kJ2BgIGVycm9yLiBPdGhlcndpc2UsIHRoZSBjb250ZW50CiAgICAgICB0eXBlIGlzIGd1ZXNzZWQgYnkgY2FsbGluZyB0aGUgOm1ldGg6YGd1ZXNzX3R5cGVgIG1ldGhvZCwgd2hpY2ggaW4gdHVybgogICAgICAgdXNlcyB0aGUgKmV4dGVuc2lvbnNfbWFwKiB2YXJpYWJsZS4KQEAgLTM3OCwzICs0MDEsOSBAQAogCiAgICBOb3RlIHRoYXQgQ0dJIHNjcmlwdHMgd2lsbCBiZSBydW4gd2l0aCBVSUQgb2YgdXNlciBub2JvZHksIGZvciBzZWN1cml0eQogICAgcmVhc29ucy4gIFByb2JsZW1zIHdpdGggdGhlIENHSSBzY3JpcHQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIGVycm9yIDQwMy4KKworOmNsYXNzOmBDR0lIVFRQUmVxdWVzdEhhbmRsZXJgIGNhbiBiZSBlbmFibGVkIGluIHRoZSBjb21tYW5kIGxpbmUgYnkgcGFzc2luZwordGhlIGBgLS1jZ2lgYCBvcHRpb24uOjoKKworICAgICAgICBweXRob24gLW0gaHR0cC5zZXJ2ZXIgLS1jZ2kgODAwMAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IDNmNDVjOTUuLjYyNmY2NjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC02NCwxNCArNjQsMjEgQEAKIFRoZXJlJ3MgYWxzbyBhIHN1YmNsYXNzIGZvciBzZWN1cmUgY29ubmVjdGlvbnM6CiAKIAotLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lKQorLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKQogCiAgICBUaGlzIGlzIGEgc3ViY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgSU1BUDRgIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wKICAgIGVuY3J5cHRlZCBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcyBjb21waWxlZAogICAgd2l0aCBTU0wgc3VwcG9ydCkuICBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgYGAnJ2BgICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4KICAgIElmICpwb3J0KiBpcyBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgSU1BUDQtb3Zlci1TU0wgcG9ydCAoOTkzKSBpcyB1c2VkLiAgKmtleWZpbGUqCiAgICBhbmQgKmNlcnRmaWxlKiBhcmUgYWxzbyBvcHRpb25hbCAtIHRoZXkgY2FuIGNvbnRhaW4gYSBQRU0gZm9ybWF0dGVkIHByaXZhdGUga2V5Ci0gICBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgorICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4gKnNzbF9jb250ZXh0KiBwYXJhbWV0ZXIgaXMgYQorICAgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbgorICAgb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkKKyAgIHN0cnVjdHVyZS4gTm90ZSB0aGF0IHRoZSAqa2V5ZmlsZSovKmNlcnRmaWxlKiBwYXJhbWV0ZXJzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCAqc3NsX2NvbnRleHQqLAorICAgYSA6Y2xhc3M6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqa2V5ZmlsZSovKmNlcnRmaWxlKiBpcyBwcm92aWRlZCBhbG9uZyB3aXRoICpzc2xfY29udGV4dCouCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqc3NsX2NvbnRleHQqIHBhcmFtZXRlciBhZGRlZC4KIAogCiBUaGUgc2Vjb25kIHN1YmNsYXNzIGFsbG93cyBmb3IgY29ubmVjdGlvbnMgY3JlYXRlZCBieSBhIGNoaWxkIHByb2Nlc3M6CkBAIC0xMDYsMTMgKzExMywxNSBAQAogCiAuLiBmdW5jdGlvbjo6IFRpbWUySW50ZXJuYWxkYXRlKGRhdGVfdGltZSkKIAotICAgQ29udmVydCAqZGF0ZV90aW1lKiB0byBhbiBJTUFQNCBgYElOVEVSTkFMREFURWBgIHJlcHJlc2VudGF0aW9uLiAgVGhlCi0gICByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm06IGBgIkRELU1tbS1ZWVlZIEhIOk1NOlNTCi0gICArSEhNTSJgYCAoaW5jbHVkaW5nIGRvdWJsZS1xdW90ZXMpLiAgVGhlICpkYXRlX3RpbWUqIGFyZ3VtZW50IGNhbiBiZSBhCi0gICBudW1iZXIgKGludCBvciBmbG9hdCkgcmVwcmVzZW50aW5nIHNlY29uZHMgc2luY2UgZXBvY2ggKGFzIHJldHVybmVkCi0gICBieSA6ZnVuYzpgdGltZS50aW1lYCksIGEgOS10dXBsZSByZXByZXNlbnRpbmcgbG9jYWwgdGltZSAoYXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmB0aW1lLmxvY2FsdGltZWApLCBvciBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QgY2FzZSwgaXQKLSAgIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCisgICBDb252ZXJ0ICpkYXRlX3RpbWUqIHRvIGFuIElNQVA0IGBgSU5URVJOQUxEQVRFYGAgcmVwcmVzZW50YXRpb24uCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtOiBgYCJERC1NbW0tWVlZWSBISDpNTTpTUworICAgK0hITU0iYGAgKGluY2x1ZGluZyBkb3VibGUtcXVvdGVzKS4gIFRoZSAqZGF0ZV90aW1lKiBhcmd1bWVudCBjYW4KKyAgIGJlIGEgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZyBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcworICAgcmV0dXJuZWQgYnkgOmZ1bmM6YHRpbWUudGltZWApLCBhIDktdHVwbGUgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUKKyAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZS5zdHJ1Y3RfdGltZWAgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgdGltZS5sb2NhbHRpbWVgKSwgYW4gYXdhcmUgaW5zdGFuY2Ugb2YKKyAgIDpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgLCBvciBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QKKyAgIGNhc2UsIGl0IGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCiAKIE5vdGUgdGhhdCBJTUFQNCBtZXNzYWdlIG51bWJlcnMgY2hhbmdlIGFzIHRoZSBtYWlsYm94IGNoYW5nZXM7IGluIHBhcnRpY3VsYXIsCiBhZnRlciBhbiBgYEVYUFVOR0VgYCBjb21tYW5kIHBlcmZvcm1zIGRlbGV0aW9ucyB0aGUgcmVtYWluaW5nIG1lc3NhZ2VzIGFyZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggMTM0NWIyNS4uNWNhZGRhOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC0zMCw2ICszMCw5IEBACiAgICA6Y29uc3Q6YFBZX1NPVVJDRWAsIDpjb25zdDpgUFlfQ09NUElMRURgLCBvciA6Y29uc3Q6YENfRVhURU5TSU9OYCwgZGVzY3JpYmVkCiAgICBiZWxvdy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIHRoZSBjb25zdGFudHMgZGVmaW5lZCBvbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCBpbnN0ZWFkLgorCiAKIC4uIGZ1bmN0aW9uOjogZmluZF9tb2R1bGUobmFtZVssIHBhdGhdKQogCkBAIC02OSw2ICs3Miw5IEBACiAgICB0aGVuIHVzZSA6ZnVuYzpgZmluZF9tb2R1bGVgIHdpdGggdGhlICpwYXRoKiBhcmd1bWVudCBzZXQgdG8gYGBQLl9fcGF0aF9fYGAuCiAgICBXaGVuICpQKiBpdHNlbGYgaGFzIGEgZG90dGVkIG5hbWUsIGFwcGx5IHRoaXMgcmVjaXBlIHJlY3Vyc2l2ZWx5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgaW5zdGVhZC4KKwogCiAuLiBmdW5jdGlvbjo6IGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIHBhdGhuYW1lLCBkZXNjcmlwdGlvbikKIApAQCAtOTAsNiArOTYsMTAgQEAKICAgIGl0IHdhcyBub3QgYGBOb25lYGAsIGV2ZW4gd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAgVGhpcyBpcyBiZXN0IGRvbmUKICAgIHVzaW5nIGEgOmtleXdvcmQ6YHRyeWAgLi4uIDprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVubmVlZGVkIGFzIGxvYWRlcnMgc2hvdWxkIGJlIHVzZWQgdG8gbG9hZCBtb2R1bGVzIGFuZAorICAgICAgOmZ1bmM6YGZpbmRfbW9kdWxlYCBpcyBkZXByZWNhdGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQogCkBAIC05NywzNyArMTA3LDYgQEAKICAgIGluIGBgc3lzLm1vZHVsZXNgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGxvY2tfaGVsZCgpCi0KLSAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgYGBGYWxzZWBgLiBPbgotICAgcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgYWx3YXlzIHJldHVybiBgYEZhbHNlYGAuCi0KLSAgIE9uIHBsYXRmb3JtcyB3aXRoIHRocmVhZHMsIGEgdGhyZWFkIGV4ZWN1dGluZyBhbiBpbXBvcnQgaG9sZHMgYW4gaW50ZXJuYWwgbG9jawotICAgdW50aWwgdGhlIGltcG9ydCBpcyBjb21wbGV0ZS4gVGhpcyBsb2NrIGJsb2NrcyBvdGhlciB0aHJlYWRzIGZyb20gZG9pbmcgYW4KLSAgIGltcG9ydCB1bnRpbCB0aGUgb3JpZ2luYWwgaW1wb3J0IGNvbXBsZXRlcywgd2hpY2ggaW4gdHVybiBwcmV2ZW50cyBvdGhlciB0aHJlYWRzCi0gICBmcm9tIHNlZWluZyBpbmNvbXBsZXRlIG1vZHVsZSBvYmplY3RzIGNvbnN0cnVjdGVkIGJ5IHRoZSBvcmlnaW5hbCB0aHJlYWQgd2hpbGUKLSAgIGluIHRoZSBwcm9jZXNzIG9mIGNvbXBsZXRpbmcgaXRzIGltcG9ydCAoYW5kIHRoZSBpbXBvcnRzLCBpZiBhbnksIHRyaWdnZXJlZCBieQotICAgdGhhdCkuCi0KLQotLi4gZnVuY3Rpb246OiBhY3F1aXJlX2xvY2soKQotCi0gICBBY3F1aXJlIHRoZSBpbnRlcnByZXRlcidzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuICBUaGlzIGxvY2sgc2hvdWxkCi0gICBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZyBtb2R1bGVzLgotCi0gICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCB0aGUgaW1wb3J0IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdAotICAgYWdhaW4gd2l0aG91dCBibG9ja2luZzsgdGhlIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcwotICAgYWNxdWlyZWQgaXQuCi0KLSAgIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVsZWFzZV9sb2NrKCkKLQotICAgUmVsZWFzZSB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jay4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcwotICAgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotCi0KIC4uIGZ1bmN0aW9uOjogcmVsb2FkKG1vZHVsZSkKIAogICAgUmVsb2FkIGEgcHJldmlvdXNseSBpbXBvcnRlZCAqbW9kdWxlKi4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbW9kdWxlIG9iamVjdCwgc28KQEAgLTIwMSwxNCArMTgwLDE5IEBACiAgICBzb3VyY2UgKnBhdGgqLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcyBgYC9mb28vYmFyL2Jhei5weWBgIHRoZSByZXR1cm4KICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKLSAgIDpmdW5jOmBnZXRfdGFnYCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbiBgYC5weWNgYCB3aGVuCi0gICBgYF9fZGVidWdfX2BgIGlzIFRydWUgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KKyAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCisgICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgVHJ1ZSBvciBgYC5weW9gYCBmb3IgYW4gb3B0aW1pemVkIFB5dGhvbgogICAgKGkuZS4gYGBfX2RlYnVnX19gYCBpcyBGYWxzZSkuICBCeSBwYXNzaW5nIGluIFRydWUgb3IgRmFsc2UgZm9yCiAgICAqZGVidWdfb3ZlcnJpZGUqIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgIGZvcgogICAgZXh0ZW5zaW9uIHNlbGVjdGlvbi4KIAogICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIGBgTm9uZWBgLCB0aGVuCisgICAgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCkBAIC0yMTYsNyArMjAwLDEzIEBACiAgICBmaWxlIHBhdGguICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzCiAgICBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIHRoZSByZXR1cm5lZCBwYXRoIHdvdWxkIGJlCiAgICBgYC9mb28vYmFyL2Jhei5weWBgLiAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LCBob3dldmVyIGlmIGl0IGRvZXMgbm90IGNvbmZvcm0KLSAgIHRvIDpwZXA6YDMxNDdgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuCisgICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiBJZgorICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLAorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2hlbgorICAgICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3RhZygpCkBAIC0yMjQsNiArMjE0LDY0IEBACiAgICBSZXR1cm4gdGhlIDpwZXA6YDMxNDdgIG1hZ2ljIHRhZyBzdHJpbmcgbWF0Y2hpbmcgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbidzCiAgICBtYWdpYyBudW1iZXIsIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBnZXRfbWFnaWNgLgogCisgICAuLiBub3RlOjoKKyAgICAgIFlvdSBtYXkgdXNlIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBkaXJlY3RseSBzdGFydGluZworICAgICAgaW4gUHl0aG9uIDMuMy4KKworCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBoZWxwIGludGVyYWN0IHdpdGggdGhlIGltcG9ydCBzeXN0ZW0ncyBpbnRlcm5hbAorbG9ja2luZyBtZWNoYW5pc20uICBMb2NraW5nIHNlbWFudGljcyBvZiBpbXBvcnRzIGFyZSBhbiBpbXBsZW1lbnRhdGlvbgorZGV0YWlsIHdoaWNoIG1heSB2YXJ5IGZyb20gcmVsZWFzZSB0byByZWxlYXNlLiAgSG93ZXZlciwgUHl0aG9uIGVuc3VyZXMKK3RoYXQgY2lyY3VsYXIgaW1wb3J0cyB3b3JrIHdpdGhvdXQgYW55IGRlYWRsb2Nrcy4KKworCisuLiBmdW5jdGlvbjo6IGxvY2tfaGVsZCgpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlCisgICBgYEZhbHNlYGAuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIGFsd2F5cyByZXR1cm4gYGBGYWxzZWBgLgorCisgICBPbiBwbGF0Zm9ybXMgd2l0aCB0aHJlYWRzLCBhIHRocmVhZCBleGVjdXRpbmcgYW4gaW1wb3J0IGZpcnN0IGhvbGRzIGEKKyAgIGdsb2JhbCBpbXBvcnQgbG9jaywgdGhlbiBzZXRzIHVwIGEgcGVyLW1vZHVsZSBsb2NrIGZvciB0aGUgcmVzdCBvZiB0aGUKKyAgIGltcG9ydC4gIFRoaXMgYmxvY2tzIG90aGVyIHRocmVhZHMgZnJvbSBpbXBvcnRpbmcgdGhlIHNhbWUgbW9kdWxlIHVudGlsCisgICB0aGUgb3JpZ2luYWwgaW1wb3J0IGNvbXBsZXRlcywgcHJldmVudGluZyBvdGhlciB0aHJlYWRzIGZyb20gc2VlaW5nCisgICBpbmNvbXBsZXRlIG1vZHVsZSBvYmplY3RzIGNvbnN0cnVjdGVkIGJ5IHRoZSBvcmlnaW5hbCB0aHJlYWQuICBBbgorICAgZXhjZXB0aW9uIGlzIG1hZGUgZm9yIGNpcmN1bGFyIGltcG9ydHMsIHdoaWNoIGJ5IGNvbnN0cnVjdGlvbiBoYXZlIHRvCisgICBleHBvc2UgYW4gaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0IGF0IHNvbWUgcG9pbnQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiBhY3F1aXJlX2xvY2soKQorCisgICBBY3F1aXJlIHRoZSBpbnRlcnByZXRlcidzIGdsb2JhbCBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuCisgICBpbXBvcnRpbmcgbW9kdWxlcy4KKworICAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgdGhlIGltcG9ydCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQKKyAgIGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKKyAgIGFjcXVpcmVkIGl0LgorCisgICBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBsb2NraW5nIHNjaGVtZSBoYXMgY2hhbmdlZCB0byBwZXItbW9kdWxlIGxvY2tzIGZvcgorICAgdGhlIG1vc3QgcGFydC4gIEEgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGtlcHQgZm9yIHNvbWUgY3JpdGljYWwgdGFza3MsCisgICBzdWNoIGFzIGluaXRpYWxpemluZyB0aGUgcGVyLW1vZHVsZSBsb2Nrcy4KKworCisuLiBmdW5jdGlvbjo6IHJlbGVhc2VfbG9jaygpCisKKyAgIFJlbGVhc2UgdGhlIGludGVycHJldGVyJ3MgZ2xvYmFsIGltcG9ydCBsb2NrLiBPbiBwbGF0Zm9ybXMgd2l0aG91dAorICAgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKIAogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgd2l0aCBpbnRlZ2VyIHZhbHVlcywgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSwgYXJlIHVzZWQKIHRvIGluZGljYXRlIHRoZSBzZWFyY2ggcmVzdWx0IG9mIDpmdW5jOmBmaW5kX21vZHVsZWAuCkBAIC0yMzMsMzEgKzI4MSw0MyBAQAogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIHNvdXJjZSBmaWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBZX0NPTVBJTEVECiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgY29tcGlsZWQgY29kZSBvYmplY3QgZmlsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBDX0VYVEVOU0lPTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBkeW5hbWljYWxseSBsb2FkYWJsZSBzaGFyZWQgbGlicmFyeS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQS0dfRElSRUNUT1JZCiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgcGFja2FnZSBkaXJlY3RvcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogQ19CVUlMVElOCiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgYnVpbHQtaW4gbW9kdWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBZX0ZST1pFTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGZyb3plbiBtb2R1bGUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBjbGFzczo6IE51bGxJbXBvcnRlcihwYXRoX3N0cmluZykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggMTY0OTA2My4uMDgzNjU2ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC02Myw3ICs2Myw3IEBACiBGdW5jdGlvbnMKIC0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1saXN0KCksIGxldmVsPTApCisuLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApCiAKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uLgogCkBAIC04Niw2ICs4NiwyOSBAQAogICAgIHRoYXQgd2FzIGltcG9ydGVkIChlLmcuIGBgcGtnLm1vZGBgKSwgd2hpbGUgOmZ1bmM6YF9faW1wb3J0X19gIHJldHVybnMgdGhlCiAgICAgdG9wLWxldmVsIHBhY2thZ2Ugb3IgbW9kdWxlIChlLmcuIGBgcGtnYGApLgogCisuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKG5hbWUsIHBhdGg9Tm9uZSkKKworICAgRmluZCB0aGUgbG9hZGVyIGZvciBhIG1vZHVsZSwgb3B0aW9uYWxseSB3aXRoaW4gdGhlIHNwZWNpZmllZCAqcGF0aCouIElmIHRoZQorICAgbW9kdWxlIGlzIGluIDphdHRyOmBzeXMubW9kdWxlc2AsIHRoZW4gYGBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fYGAgaXMKKyAgIHJldHVybmVkICh1bmxlc3MgdGhlIGxvYWRlciB3b3VsZCBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkKS4gT3RoZXJ3aXNlIGEgc2VhcmNoIHVzaW5nIDphdHRyOmBzeXMubWV0YV9wYXRoYAorICAgaXMgZG9uZS4gYGBOb25lYGAgaXMgcmV0dXJuZWQgaWYgbm8gbG9hZGVyIGlzIGZvdW5kLgorCisgICBBIGRvdHRlZCBuYW1lIGRvZXMgbm90IGhhdmUgaXRzIHBhcmVudCdzIGltcGxpY2l0bHkgaW1wb3J0ZWQgYXMgdGhhdCByZXF1aXJlcworICAgbG9hZGluZyB0aGVtIGFuZCB0aGF0IG1heSBub3QgYmUgZGVzaXJlZC4gVG8gcHJvcGVybHkgaW1wb3J0IGEgc3VibW9kdWxlIHlvdQorICAgd2lsbCBuZWVkIHRvIGltcG9ydCBhbGwgcGFyZW50IHBhY2thZ2VzIG9mIHRoZSBzdWJtb2R1bGUgYW5kIHVzZSB0aGUgY29ycmVjdAorICAgYXJndW1lbnQgdG8gKnBhdGgqLgorCisuLiBmdW5jdGlvbjo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgSW52YWxpZGF0ZSB0aGUgaW50ZXJuYWwgY2FjaGVzIG9mIGZpbmRlcnMgc3RvcmVkIGF0CisgICA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuIElmIGEgZmluZGVyIGltcGxlbWVudHMgYGBpbnZhbGlkYXRlX2NhY2hlcygpYGAgdGhlbiBpdAorICAgd2lsbCBiZSBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgaW52YWxpZGF0aW9uLiAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgbmVlZGVkIGlmCisgICBzb21lIG1vZHVsZXMgYXJlIGluc3RhbGxlZCB3aGlsZSB5b3VyIHByb2dyYW0gaXMgcnVubmluZyBhbmQgeW91IGV4cGVjdCB0aGUKKyAgIHByb2dyYW0gdG8gbm90aWNlIHRoZSBjaGFuZ2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiA6bW9kOmBpbXBvcnRsaWIuYWJjYCAtLSBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgcmVsYXRlZCB0byBpbXBvcnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTcsMTkgKzEyMCw5MCBAQAogdXNlZCBieSA6a2V5d29yZDpgaW1wb3J0YC4gU29tZSBzdWJjbGFzc2VzIG9mIHRoZSBjb3JlIGFic3RyYWN0IGJhc2UgY2xhc3NlcwogYXJlIGFsc28gcHJvdmlkZWQgdG8gaGVscCBpbiBpbXBsZW1lbnRpbmcgdGhlIGNvcmUgQUJDcy4KIAorQUJDIGhpZXJhcmNoeTo6CisKKyAgICBvYmplY3QKKyAgICAgKy0tIEZpbmRlciAoZGVwcmVjYXRlZCkKKyAgICAgfCAgICArLS0gTWV0YVBhdGhGaW5kZXIKKyAgICAgfCAgICArLS0gUGF0aEVudHJ5RmluZGVyCisgICAgICstLSBMb2FkZXIKKyAgICAgICAgICArLS0gUmVzb3VyY2VMb2FkZXIgLS0tLS0tLS0rCisgICAgICAgICAgKy0tIEluc3BlY3RMb2FkZXIgICAgICAgICAgfAorICAgICAgICAgICAgICAgKy0tIEV4ZWN1dGlvbkxvYWRlciAtLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0gRmlsZUxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBTb3VyY2VMb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBQeUxvYWRlciAoZGVwcmVjYXRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBQeVB5Y0xvYWRlciAoZGVwcmVjYXRlZCkKKwogCiAuLiBjbGFzczo6IEZpbmRlcgogCi0gICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgZmluZGVyYC4KLSAgICBTZWUgOnBlcDpgMzAyYCBmb3IgdGhlIGV4YWN0IGRlZmluaXRpb24gZm9yIGEgZmluZGVyLgorICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgZmluZGVyYC4KIAotICAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVc2UgOmNsYXNzOmBNZXRhUGF0aEZpbmRlcmAgb3IgOmNsYXNzOmBQYXRoRW50cnlGaW5kZXJgIGluc3RlYWQuCiAKLSAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgbW9kdWxlLiBJZiB0aGUgOnRlcm06YGZpbmRlcmAgaXMgZm91bmQgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGFuZCB0aGUKLSAgICAgICAgbW9kdWxlIHRvIGJlIHNlYXJjaGVkIGZvciBpcyBhIHN1YnBhY2thZ2Ugb3IgbW9kdWxlIHRoZW4gKnBhdGgqIHdpbGwKLSAgICAgICAgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UuIElmIGEgbG9hZGVyCi0gICAgICAgIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQorCisgICAgICBBbiBhYnN0YWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICBtb2R1bGUuICBPcmlnaW5hbGx5IHNwZWNpZmllZCBpbiA6cGVwOmAzMDJgLCB0aGlzIG1ldGhvZCB3YXMgbWVhbnQKKyAgICAgIGZvciB1c2UgaW4gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGFuZCBpbiB0aGUgcGF0aC1iYXNlZCBpbXBvcnQgc3Vic3lzdGVtLgorCisKKy4uIGNsYXNzOjogTWV0YVBhdGhGaW5kZXIKKworICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAuIEZvcgorICAgY29tcGF0aWJpbGl0eSwgdGhpcyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgRmluZGVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQorCisgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgbW9kdWxlLiAgSWYgdGhpcyBpcyBhIHRvcC1sZXZlbCBpbXBvcnQsICpwYXRoKiB3aWxsIGJlIGBgTm9uZWBgLgorICAgICAgT3RoZXJ3aXNlLCB0aGlzIGlzIGEgc2VhcmNoIGZvciBhIHN1YnBhY2thZ2Ugb3IgbW9kdWxlIGFuZCAqcGF0aCoKKyAgICAgIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUgcGFyZW50CisgICAgICBwYWNrYWdlLiBJZiBhIGxvYWRlciBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorCisgICAuLiBtZXRob2Q6OiBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgIEFuIG9wdGlvbmFsIG1ldGhvZCB3aGljaCwgd2hlbiBjYWxsZWQsIHNob3VsZCBpbnZhbGlkYXRlIGFueSBpbnRlcm5hbAorICAgICAgY2FjaGUgdXNlZCBieSB0aGUgZmluZGVyLiBVc2VkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgCisgICAgICB3aGVuIGludmFsaWRhdGluZyB0aGUgY2FjaGVzIG9mIGFsbCBmaW5kZXJzIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4KKworCisuLiBjbGFzczo6IFBhdGhFbnRyeUZpbmRlcgorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAuICBUaG91Z2gKKyAgIGl0IGJlYXJzIHNvbWUgc2ltaWxhcml0aWVzIHRvIDpjbGFzczpgTWV0YVBhdGhGaW5kZXJgLCBgYFBhdGhFbnRyeUZpbmRlcmBgCisgICBpcyBtZWFudCBmb3IgdXNlIG9ubHkgd2l0aGluIHRoZSBwYXRoLWJhc2VkIGltcG9ydCBzdWJzeXN0ZW0gcHJvdmlkZWQKKyAgIGJ5IDpjbGFzczpgUGF0aEZpbmRlcmAuIFRoaXMgQUJDIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBGaW5kZXJgIGZvcgorICAgY29tcGF0aWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbG9hZGVyKGZ1bGxuYW1lKToKKworICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgIG1vZHVsZS4gIFJldHVybnMgYSAyLXR1cGxlIG9mIGBgKGxvYWRlciwgcG9ydGlvbilgYCB3aGVyZSBgYHBvcnRpb25gYAorICAgICAgaXMgYSBzZXF1ZW5jZSBvZiBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgY29udHJpYnV0aW5nIHRvIHBhcnQgb2YgYSBuYW1lc3BhY2UKKyAgICAgIHBhY2thZ2UuIFRoZSBsb2FkZXIgbWF5IGJlIGBgTm9uZWBgIHdoaWxlIHNwZWNpZnlpbmcgYGBwb3J0aW9uYGAgdG8KKyAgICAgIHNpZ25pZnkgdGhlIGNvbnRyaWJ1dGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gbG9jYXRpb25zIHRvIGEgbmFtZXNwYWNlCisgICAgICBwYWNrYWdlLiBBbiBlbXB0eSBsaXN0IGNhbiBiZSB1c2VkIGZvciBgYHBvcnRpb25gYCB0byBzaWduaWZ5IHRoZSBsb2FkZXIKKyAgICAgIGlzIG5vdCBwYXJ0IG9mIGEgcGFja2FnZS4gSWYgYGBsb2FkZXJgYCBpcyBgYE5vbmVgYCBhbmQgYGBwb3J0aW9uYGAgaXMKKyAgICAgIHRoZSBlbXB0eSBsaXN0IHRoZW4gbm8gbG9hZGVyIG9yIGxvY2F0aW9uIGZvciBhIG5hbWVzcGFjZSBwYWNrYWdlIHdlcmUKKyAgICAgIGZvdW5kIChpLmUuIGZhaWx1cmUgdG8gZmluZCBhbnl0aGluZyBmb3IgdGhlIG1vZHVsZSkuCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lKToKKworICAgICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgRmluZGVyLmZpbmRfbW9kdWxlYCB3aGljaCBpcworICAgICAgZXF1aXZhbGVudCB0byBgYHNlbGYuZmluZF9sb2FkZXIoZnVsbG5hbWUpWzBdYGAuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQW4gb3B0aW9uYWwgbWV0aG9kIHdoaWNoLCB3aGVuIGNhbGxlZCwgc2hvdWxkIGludmFsaWRhdGUgYW55IGludGVybmFsCisgICAgICBjYWNoZSB1c2VkIGJ5IHRoZSBmaW5kZXIuIFVzZWQgYnkgOm1ldGg6YFBhdGhGaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXNgCisgICAgICB3aGVuIGludmFsaWRhdGluZyB0aGUgY2FjaGVzIG9mIGFsbCBjYWNoZWQgZmluZGVycy4KIAogCiAuLiBjbGFzczo6IExvYWRlcgpAQCAtMTU5LDYgKzI1MywxMyBAQAogICAgICAgICAgICAgKFRoaXMgaXMgbm90IHNldCBieSB0aGUgYnVpbHQtaW4gaW1wb3J0IG1hY2hpbmVyeSwKICAgICAgICAgICAgIGJ1dCBpdCBzaG91bGQgYmUgc2V0IHdoZW5ldmVyIGEgOnRlcm06YGxvYWRlcmAgaXMgdXNlZC4pCiAKKyAgICAuLiBtZXRob2Q6OiBtb2R1bGVfcmVwcihtb2R1bGUpCisKKyAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUKKyAgICAgICAgZ2l2ZW4gbW9kdWxlJ3MgcmVwciwgYXMgYSBzdHJpbmcuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOiAzLjMKKwogCiAuLiBjbGFzczo6IFJlc291cmNlTG9hZGVyCiAKQEAgLTIyNCw2ICszMjUsMzggQEAKICAgICAgICAgbW9kdWxlLgogCiAKKy4uIGNsYXNzOjogRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyB3aGljaCBpbmhlcml0cyBmcm9tIDpjbGFzczpgUmVzb3VyY2VMb2FkZXJgIGFuZAorICAgOmNsYXNzOmBFeGVjdXRpb25Mb2FkZXJgLCBwcm92aWRpbmcgY29uY3JlYXRlIGltcGxlbWVudGF0aW9ucyBvZgorICAgOm1ldGg6YFJlc291cmNlTG9hZGVyLmdldF9kYXRhYCBhbmQgOm1ldGg6YEV4ZWN1dGlvbkxvYWRlci5nZXRfZmlsZW5hbWVgLgorCisgICBUaGUgKmZ1bGxuYW1lKiBhcmd1bWVudCBpcyBhIGZ1bGx5IHJlc29sdmVkIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIGlzCisgICB0byBoYW5kbGUuIFRoZSAqcGF0aCogYXJndW1lbnQgaXMgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm9yIHRoZSBtb2R1bGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBjYW4gaGFuZGxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFBhdGggdG8gdGhlIGZpbGUgb2YgdGhlIG1vZHVsZS4KKworICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICAgIENhbGxzIHN1cGVyJ3MgYGBsb2FkX21vZHVsZSgpYGAuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9kYXRhKHBhdGgpCisKKyAgICAgIFJldHVybnMgdGhlIG9wZW4sIGJpbmFyeSBmaWxlIGZvciAqcGF0aCouCisKKwogLi4gY2xhc3M6OiBTb3VyY2VMb2FkZXIKIAogICAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyBzb3VyY2UgKGFuZCBvcHRpb25hbGx5IGJ5dGVjb2RlKQpAQCAtMjQzLDEyICszNzYsMzEgQEAKICAgICBvcHRpbWl6YXRpb24gdG8gc3BlZWQgdXAgbG9hZGluZyBieSByZW1vdmluZyB0aGUgcGFyc2luZyBzdGVwIG9mIFB5dGhvbidzCiAgICAgY29tcGlsZXIsIGFuZCBzbyBubyBieXRlY29kZS1zcGVjaWZpYyBBUEkgaXMgZXhwb3NlZC4KIAotICAgIC4uIG1ldGhvZDo6IHBhdGhfbXRpbWUoc2VsZiwgcGF0aCkKKyAgICAuLiBtZXRob2Q6OiBwYXRoX3N0YXRzKHBhdGgpCisKKyAgICAgICAgT3B0aW9uYWwgYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgYSA6Y2xhc3M6YGRpY3RgIGNvbnRhaW5pbmcKKyAgICAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHNwZWNpZmVkIHBhdGguICBTdXBwb3J0ZWQgZGljdGlvbmFyeSBrZXlzIGFyZToKKworICAgICAgICAtIGBgJ210aW1lJ2BgIChtYW5kYXRvcnkpOiBhbiBpbnRlZ2VyIG9yIGZsb2F0aW5nLXBvaW50IG51bWJlcgorICAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIHNvdXJjZSBjb2RlOworICAgICAgICAtIGBgJ3NpemUnYGAgKG9wdGlvbmFsKTogdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgorCisgICAgICAgIEFueSBvdGhlciBrZXlzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLCB0byBhbGxvdyBmb3IgZnV0dXJlCisgICAgICAgIGV4dGVuc2lvbnMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgICAuLiBtZXRob2Q6OiBwYXRoX210aW1lKHBhdGgpCiAKICAgICAgICAgT3B0aW9uYWwgYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUKICAgICAgICAgc3BlY2lmaWVkIHBhdGguCiAKLSAgICAuLiBtZXRob2Q6OiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKQorICAgICAgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIDptZXRoOmBwYXRoX3N0YXRzYC4gIFlvdSBkb24ndAorICAgICAgICAgICBoYXZlIHRvIGltcGxlbWVudCBpdCwgYnV0IGl0IGlzIHN0aWxsIGF2YWlsYWJsZSBmb3IgY29tcGF0aWJpbGl0eQorICAgICAgICAgICBwdXJwb3Nlcy4KKworICAgIC4uIG1ldGhvZDo6IHNldF9kYXRhKHBhdGgsIGRhdGEpCiAKICAgICAgICAgT3B0aW9uYWwgYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdyaXRlcyB0aGUgc3BlY2lmaWVkIGJ5dGVzIHRvIGEgZmlsZQogICAgICAgICBwYXRoLiBBbnkgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIHdoaWNoIGRvIG5vdCBleGlzdCBhcmUgdG8gYmUgY3JlYXRlZApAQCAtMjU3LDIzICs0MDksMjUgQEAKICAgICAgICAgV2hlbiB3cml0aW5nIHRvIHRoZSBwYXRoIGZhaWxzIGJlY2F1c2UgdGhlIHBhdGggaXMgcmVhZC1vbmx5CiAgICAgICAgICg6YXR0cjpgZXJybm8uRUFDQ0VTYCksIGRvIG5vdCBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbi4KIAotICAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQogCiAgICAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBJbnNwZWN0TG9hZGVyLmdldF9jb2RlYC4KIAotICAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAgICAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBMb2FkZXIubG9hZF9tb2R1bGVgLgogCi0gICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSkKKyAgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKGZ1bGxuYW1lKQogCiAgICAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBJbnNwZWN0TG9hZGVyLmdldF9zb3VyY2VgLgogCi0gICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSkKKyAgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQogCiAgICAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2VgLiBBIG1vZHVsZQotICAgICAgICBpcyBkZXRlcm1pbmVkIHRvIGJlIGEgcGFja2FnZSBpZiBpdHMgZmlsZSBwYXRoIGlzIGEgZmlsZSBuYW1lZAotICAgICAgICBgYF9faW5pdF9fYGAgd2hlbiB0aGUgZmlsZSBleHRlbnNpb24gaXMgcmVtb3ZlZC4KKyAgICAgICAgaXMgZGV0ZXJtaW5lZCB0byBiZSBhIHBhY2thZ2UgaWYgaXRzIGZpbGUgcGF0aCAoYXMgcHJvdmlkZWQgYnkKKyAgICAgICAgOm1ldGg6YEV4ZWN1dGlvbkxvYWRlci5nZXRfZmlsZW5hbWVgKSBpcyBhIGZpbGUgbmFtZWQKKyAgICAgICAgYGBfX2luaXRfX2BgIHdoZW4gdGhlIGZpbGUgZXh0ZW5zaW9uIGlzIHJlbW92ZWQgKiphbmQqKiB0aGUgbW9kdWxlIG5hbWUKKyAgICAgICAgaXRzZWxmIGRvZXMgbm90IGVuZCBpbiBgYF9faW5pdF9fYGAuCiAKIAogLi4gY2xhc3M6OiBQeUxvYWRlcgpAQCAtMzc0LDYgKzUyOCwxMCBAQAogICAgICAgICA6Y2xhc3M6YFB5TG9hZGVyYC4gRG8gbm90ZSB0aGF0IHRoaXMgc29sdXRpb24gd2lsbCBub3Qgc3VwcG9ydAogICAgICAgICBzb3VyY2VsZXNzL2J5dGVjb2RlLW9ubHkgbG9hZGluZzsgb25seSBzb3VyY2UgKmFuZCogYnl0ZWNvZGUgbG9hZGluZy4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgVXBkYXRlZCB0byBwYXJzZSAoYnV0IG5vdCB1c2UpIHRoZSBuZXcgc291cmNlIHNpemUgZmllbGQgaW4gYnl0ZWNvZGUKKyAgICAgICBmaWxlcyB3aGVuIHJlYWRpbmcgYW5kIHRvIHdyaXRlIG91dCB0aGUgZmllbGQgcHJvcGVybHkgd2hlbiB3cml0aW5nLgorCiAgICAgLi4gbWV0aG9kOjogc291cmNlX210aW1lKGZ1bGxuYW1lKQogCiAgICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHNvdXJjZQpAQCAtNDE3LDEyICs1NzUsNTkgQEAKIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSB2YXJpb3VzIG9iamVjdHMgdGhhdCBoZWxwIDprZXl3b3JkOmBpbXBvcnRgCiBmaW5kIGFuZCBsb2FkIG1vZHVsZXMuCiAKKy4uIGF0dHJpYnV0ZTo6IFNPVVJDRV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3Igc291cmNlCisgICBtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gYXR0cmlidXRlOjogREVCVUdfQllURUNPREVfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBub24tb3B0aW1pemVkIGJ5dGVjb2RlCisgICBtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gYXR0cmlidXRlOjogT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgZmlsZSBzdWZmaXhlcyBmb3Igb3B0aW1pemVkIGJ5dGVjb2RlCisgICBtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gYXR0cmlidXRlOjogQllURUNPREVfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yIGJ5dGVjb2RlCisgICBtb2R1bGVzLiBTZXQgdG8gZWl0aGVyIDphdHRyOmBERUJVR19CWVRFQ09ERV9TVUZGSVhFU2Agb3IKKyAgIDphdHRyOmBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVNgIGJhc2VkIG9uIHdoZXRoZXIgYGBfX2RlYnVnX19gYCBpcyB0cnVlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gYXR0cmlidXRlOjogRVhURU5TSU9OX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvcgorICAgZXh0ZW5zaW9uIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGFsbF9zdWZmaXhlcygpCisKKyAgIFJldHVybnMgYSBjb21iaW5lZCBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIGFsbCBmaWxlIHN1ZmZpeGVzIGZvcgorICAgbW9kdWxlcyByZWNvZ25pemVkIGJ5IHRoZSBzdGFuZGFyZCBpbXBvcnQgbWFjaGluZXJ5LiBUaGlzIGlzIGEKKyAgIGhlbHBlciBmb3IgY29kZSB3aGljaCBzaW1wbHkgbmVlZHMgdG8ga25vdyBpZiBhIGZpbGVzeXN0ZW0gcGF0aAorICAgcG90ZW50aWFsbHkgcmVmZXJzIHRvIGEgbW9kdWxlIHdpdGhvdXQgbmVlZGluZyBhbnkgZGV0YWlscyBvbiB0aGUga2luZAorICAgb2YgbW9kdWxlIChmb3IgZXhhbXBsZSwgOmZ1bmM6YGluc3BlY3QuZ2V0bW9kdWxlbmFtZWApCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGNsYXNzOjogQnVpbHRpbkltcG9ydGVyCiAKICAgICBBbiA6dGVybTpgaW1wb3J0ZXJgIGZvciBidWlsdC1pbiBtb2R1bGVzLiBBbGwga25vd24gYnVpbHQtaW4gbW9kdWxlcyBhcmUKICAgICBsaXN0ZWQgaW4gOmRhdGE6YHN5cy5idWlsdGluX21vZHVsZV9uYW1lc2AuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgCi0gICAgQUJDcy4KKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYCBBQkNzLgogCiAgICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgogICAgIGluc3RhbnRpYXRpb24uCkBAIC00MzEsNDggKzYzNiwyMjMgQEAKIC4uIGNsYXNzOjogRnJvemVuSW1wb3J0ZXIKIAogICAgIEFuIDp0ZXJtOmBpbXBvcnRlcmAgZm9yIGZyb3plbiBtb2R1bGVzLiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlCi0gICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYW5kIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYAotICAgIEFCQ3MuCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBhbmQKKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAgQUJDcy4KIAogICAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKICAgICBpbnN0YW50aWF0aW9uLgogCiAKKy4uIGNsYXNzOjogV2luZG93c1JlZ2lzdHJ5RmluZGVyCisKKyAgIDp0ZXJtOmBGaW5kZXJgIGZvciBtb2R1bGVzIGRlY2xhcmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiAgVGhpcyBjbGFzcworICAgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgQUJDLgorCisgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCisgICBpbnN0YW50aWF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjbGFzczo6IFBhdGhGaW5kZXIKIAotICAgIDp0ZXJtOmBGaW5kZXJgIGZvciA6ZGF0YTpgc3lzLnBhdGhgLiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlCi0gICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgQUJDLgorICAgQSA6dGVybTpgRmluZGVyYCBmb3IgOmRhdGE6YHN5cy5wYXRoYCBhbmQgcGFja2FnZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlcy4KKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBBQkMuCiAKLSAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHBlcmZlY3RseSBtaXJyb3IgdGhlIHNlbWFudGljcyBvZiA6a2V5d29yZDpgaW1wb3J0YCBpbgotICAgIHRlcm1zIG9mIDpkYXRhOmBzeXMucGF0aGAuIE5vIGltcGxpY2l0IHBhdGggaG9va3MgYXJlIGFzc3VtZWQgZm9yCi0gICAgc2ltcGxpZmljYXRpb24gb2YgdGhlIGNsYXNzIGFuZCBpdHMgc2VtYW50aWNzLgorICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgorICAgaW5zdGFudGlhdGlvbi4KIAotICAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKLSAgICBpbnN0YW50aWF0aW9uLgorICAgLi4gY2xhc3NtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQogCi0gICAgLi4gY2xhc3NtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQorICAgICBDbGFzcyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBmaW5kIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBtb2R1bGUKKyAgICAgc3BlY2lmaWVkIGJ5ICpmdWxsbmFtZSogb24gOmRhdGE6YHN5cy5wYXRoYCBvciwgaWYgZGVmaW5lZCwgb24KKyAgICAgKnBhdGgqLiBGb3IgZWFjaCBwYXRoIGVudHJ5IHRoYXQgaXMgc2VhcmNoZWQsCisgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgaXMgY2hlY2tlZC4gSWYgYSBub24tZmFsc2Ugb2JqZWN0IGlzCisgICAgIGZvdW5kIHRoZW4gaXQgaXMgdXNlZCBhcyB0aGUgOnRlcm06YGZpbmRlcmAgdG8gbG9vayBmb3IgdGhlIG1vZHVsZQorICAgICBiZWluZyBzZWFyY2hlZCBmb3IuIElmIG5vIGVudHJ5IGlzIGZvdW5kIGluCisgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAsIHRoZW4gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpcworICAgICBzZWFyY2hlZCBmb3IgYSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGFuZCwgaWYgZm91bmQsIGlzIHN0b3JlZCBpbgorICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGFsb25nIHdpdGggYmVpbmcgcXVlcmllZCBhYm91dCB0aGUKKyAgICAgbW9kdWxlLiBJZiBubyBmaW5kZXIgaXMgZXZlciBmb3VuZCB0aGVuIGBgTm9uZWBgIGlzIGJvdGggc3RvcmVkIGluCisgICAgIHRoZSBjYWNoZSBhbmQgcmV0dXJuZWQuCiAKLSAgICAgICAgQ2xhc3MgbWV0aG9kIHRoYXQgYXR0ZW1wdHMgdG8gZmluZCBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgbW9kdWxlCi0gICAgICAgIHNwZWNpZmllZCBieSAqZnVsbG5hbWUqIG9uIDpkYXRhOmBzeXMucGF0aGAgb3IsIGlmIGRlZmluZWQsIG9uCi0gICAgICAgICpwYXRoKi4gRm9yIGVhY2ggcGF0aCBlbnRyeSB0aGF0IGlzIHNlYXJjaGVkLAotICAgICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGlzIGNoZWNrZWQuIElmIGFuIG5vbi1mYWxzZSBvYmplY3QgaXMKLSAgICAgICAgZm91bmQgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSA6dGVybTpgZmluZGVyYCB0byBsb29rIGZvciB0aGUgbW9kdWxlCi0gICAgICAgIGJlaW5nIHNlYXJjaGVkIGZvci4gSWYgbm8gZW50cnkgaXMgZm91bmQgaW4KLSAgICAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzCi0gICAgICAgIHNlYXJjaGVkIGZvciBhIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgYW5kLCBpZiBmb3VuZCwgaXMgc3RvcmVkIGluCi0gICAgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYWxvbmcgd2l0aCBiZWluZyBxdWVyaWVkIGFib3V0IHRoZQotICAgICAgICBtb2R1bGUuIElmIG5vIGZpbmRlciBpcyBldmVyIGZvdW5kIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAuLiBjbGFzc21ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICBDYWxscyA6bWV0aDpgaW1wb3J0bGliLmFiYy5QYXRoRW50cnlGaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXNgIG9uIGFsbAorICAgICBmaW5kZXJzIHN0b3JlZCBpbiA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgorCisKKy4uIGNsYXNzOjogRmlsZUZpbmRlcihwYXRoLCBcKmxvYWRlcl9kZXRhaWxzKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5QYXRoRW50cnlGaW5kZXJgIHdoaWNoCisgICBjYWNoZXMgcmVzdWx0cyBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KKworICAgVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgZGlyZWN0b3J5IGZvciB3aGljaCB0aGUgZmluZGVyIGlzIGluIGNoYXJnZSBvZgorICAgc2VhcmNoaW5nLgorCisgICBUaGUgKmxvYWRlcl9kZXRhaWxzKiBhcmd1bWVudCBpcyBhIHZhcmlhYmxlIG51bWJlciBvZiAyLWl0ZW0gdHVwbGVzIGVhY2gKKyAgIGNvbnRhaW5pbmcgYSBsb2FkZXIgYW5kIGEgc2VxdWVuY2Ugb2YgZmlsZSBzdWZmaXhlcyB0aGUgbG9hZGVyIHJlY29nbml6ZXMuCisKKyAgIFRoZSBmaW5kZXIgd2lsbCBjYWNoZSB0aGUgZGlyZWN0b3J5IGNvbnRlbnRzIGFzIG5lY2Vzc2FyeSwgbWFraW5nIHN0YXQgY2FsbHMKKyAgIGZvciBlYWNoIG1vZHVsZSBzZWFyY2ggdG8gdmVyaWZ5IHRoZSBjYWNoZSBpcyBub3Qgb3V0ZGF0ZWQuIEJlY2F1c2UgY2FjaGUKKyAgIHN0YWxlbmVzcyByZWxpZXMgdXBvbiB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBzdGF0ZQorICAgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtLCB0aGVyZSBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvZgorICAgc2VhcmNoaW5nIGZvciBhIG1vZHVsZSwgY3JlYXRpbmcgYSBuZXcgZmlsZSwgYW5kIHRoZW4gc2VhcmNoaW5nIGZvciB0aGUKKyAgIG1vZHVsZSB0aGUgbmV3IGZpbGUgcmVwcmVzZW50cy4gSWYgdGhlIG9wZXJhdGlvbnMgaGFwcGVuIGZhc3QgZW5vdWdoIHRvIGZpdAorICAgd2l0aGluIHRoZSBncmFudWxhcml0eSBvZiBzdGF0IGNhbGxzLCB0aGVuIHRoZSBtb2R1bGUgc2VhcmNoIHdpbGwgZmFpbC4gVG8KKyAgIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZywgd2hlbiB5b3UgY3JlYXRlIGEgbW9kdWxlIGR5bmFtaWNhbGx5LCBtYWtlIHN1cmUKKyAgIHRvIGNhbGwgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBwYXRoIHRoZSBmaW5kZXIgd2lsbCBzZWFyY2ggaW4uCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgICBBdHRlbXB0IHRvIGZpbmQgdGhlIGxvYWRlciB0byBoYW5kbGUgKmZ1bGxuYW1lKiB3aXRoaW4gOmF0dHI6YHBhdGhgLgorCisgICAuLiBtZXRob2Q6OiBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgIENsZWFyIG91dCB0aGUgaW50ZXJuYWwgY2FjaGUuCisKKyAgIC4uIGNsYXNzbWV0aG9kOjogcGF0aF9ob29rKFwqbG9hZGVyX2RldGFpbHMpCisKKyAgICAgIEEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIGZvciB1c2Ugb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYC4KKyAgICAgIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgRmlsZUZpbmRlcmAgaXMgcmV0dXJuZWQgYnkgdGhlIGNsb3N1cmUgdXNpbmcgdGhlCisgICAgICBwYXRoIGFyZ3VtZW50IGdpdmVuIHRvIHRoZSBjbG9zdXJlIGRpcmVjdGx5IGFuZCAqbG9hZGVyX2RldGFpbHMqCisgICAgICBpbmRpcmVjdGx5LgorCisgICAgICBJZiB0aGUgYXJndW1lbnQgdG8gdGhlIGNsb3N1cmUgaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwKKyAgICAgIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisKKworLi4gY2xhc3M6OiBTb3VyY2VGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXJgIGJ5CisgICBzdWJjbGFzc2luZyA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcmAgYW5kIHByb3ZpZGluZyBzb21lIGNvbmNyZXRlCisgICBpbXBsZW1lbnRhdGlvbnMgb2Ygb3RoZXIgbWV0aG9kcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IHRoaXMgbG9hZGVyIHdpbGwgaGFuZGxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZS4KKworICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJuIHRydWUgaWYgOmF0dHI6YHBhdGhgIGFwcGVhcnMgdG8gYmUgZm9yIGEgcGFja2FnZS4KKworICAgLi4gbWV0aG9kOjogcGF0aF9zdGF0cyhwYXRoKQorCisgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIucGF0aF9zdGF0c2AuCisKKyAgIC4uIG1ldGhvZDo6IHNldF9kYXRhKHBhdGgsIGRhdGEpCisKKyAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5zZXRfZGF0YWAuCisKKworLi4gY2xhc3M6OiBTb3VyY2VsZXNzRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcmAgd2hpY2ggY2FuCisgICBpbXBvcnQgYnl0ZWNvZGUgZmlsZXMgKGkuZS4gbm8gc291cmNlIGNvZGUgZmlsZXMgZXhpc3QpLgorCisgICBQbGVhc2Ugbm90ZSB0aGF0IGRpcmVjdCB1c2Ugb2YgYnl0ZWNvZGUgZmlsZXMgKGFuZCB0aHVzIG5vdCBzb3VyY2UgY29kZQorICAgZmlsZXMpIGluaGliaXRzIHlvdXIgbW9kdWxlcyBmcm9tIGJlaW5nIHVzYWJsZSBieSBhbGwgUHl0aG9uCisgICBpbXBsZW1lbnRhdGlvbnMgb3IgbmV3IHZlcnNpb25zIG9mIFB5dGhvbiB3aGljaCBjaGFuZ2UgdGhlIGJ5dGVjb2RlCisgICBmb3JtYXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciB3aWxsIGhhbmRsZS4KKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBUaGUgcGF0aCB0byB0aGUgYnl0ZWNvZGUgZmlsZS4KKworICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShmdWxsbmFtZSkKKworICAgICAgRGV0ZXJtaW5lcyBpZiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSBiYXNlZCBvbiA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIHRoZSBjb2RlIG9iamVjdCBmb3IgOmF0dHI6YG5hbWVgIGNyZWF0ZWQgZnJvbSA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBOb25lYGAgYXMgYnl0ZWNvZGUgZmlsZXMgaGF2ZSBubyBzb3VyY2Ugd2hlbiB0aGlzIGxvYWRlciBpcworICAgICAgdXNlZC4KKworCisuLiBjbGFzczo6IEV4dGVuc2lvbkZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgIGZvcgorICAgZXh0ZW5zaW9uIG1vZHVsZXMuCisKKyAgIFRoZSAqZnVsbG5hbWUqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgaXMgdG8KKyAgIHN1cHBvcnQuIFRoZSAqcGF0aCogYXJndW1lbnQgaXMgdGhlIHBhdGggdG8gdGhlIGV4dGVuc2lvbiBtb2R1bGUncyBmaWxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBOYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBzdXBwb3J0cy4KKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBQYXRoIHRvIHRoZSBleHRlbnNpb24gbW9kdWxlLgorCisgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgTG9hZHMgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaWYgYW5kIG9ubHkgaWYgKmZ1bGxuYW1lKiBpcyB0aGUgc2FtZSBhcworICAgICAgOmF0dHI6YG5hbWVgIG9yIGlzIGBgTm9uZWBgLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgVHJ1ZWBgIGlmIHRoZSBmaWxlIHBhdGggcG9pbnRzIHRvIGEgcGFja2FnZSdzIGBgX19pbml0X19gYAorICAgICAgbW9kdWxlIGJhc2VkIG9uIDphdHRyOmBFWFRFTlNJT05fU1VGRklYRVNgLgorCisgICAuLiBtZXRob2Q6OiBnZXRfY29kZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBleHRlbnNpb24gbW9kdWxlcyBsYWNrIGEgY29kZSBvYmplY3QuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBOb25lYGAgYXMgZXh0ZW5zaW9uIG1vZHVsZXMgZG8gbm90IGhhdmUgc291cmNlIGNvZGUuCiAKIAogOm1vZDpgaW1wb3J0bGliLnV0aWxgIC0tIFV0aWxpdHkgY29kZSBmb3IgaW1wb3J0ZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gbW9kdWxlOjogaW1wb3J0bGliLnV0aWwKLSAgICA6c3lub3BzaXM6IEltcG9ydGVycyBhbmQgcGF0aCBob29rcworICAgIDpzeW5vcHNpczogVXRpbGl0eSBjb2RlIGZvciBpbXBvcnRlcnMKIAogVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIHZhcmlvdXMgb2JqZWN0cyB0aGF0IGhlbHAgaW4gdGhlIGNvbnN0cnVjdGlvbiBvZgogYW4gOnRlcm06YGltcG9ydGVyYC4KIAorLi4gZnVuY3Rpb246OiByZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSkKKworICAgUmVzb2x2ZSBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIHRvIGFuIGFic29sdXRlIG9uZS4KKworICAgSWYgICoqbmFtZSoqIGhhcyBubyBsZWFkaW5nIGRvdHMsIHRoZW4gKipuYW1lKiogaXMgc2ltcGx5IHJldHVybmVkLiBUaGlzCisgICBhbGxvd3MgZm9yIHVzYWdlIHN1Y2ggYXMKKyAgIGBgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCdzeXMnLCBfX3BhY2thZ2VfXylgYCB3aXRob3V0IGRvaW5nIGEKKyAgIGNoZWNrIHRvIHNlZSBpZiB0aGUgKipwYWNrYWdlKiogYXJndW1lbnQgaXMgbmVlZGVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKipuYW1lKiogaXMgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSBidXQKKyAgIHBhY2thZ2UgaXMgYSBmYWxzZSB2YWx1ZSAoZS5nLiBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nKS4KKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIGFsc28gcmFpc2VkIGEgcmVsYXRpdmUgbmFtZSB3b3VsZCBlc2NhcGUgaXRzIGNvbnRhaW5pbmcKKyAgIHBhY2thZ2UgKGUuZy4gcmVxdWVzdGluZyBgYC4uYmFjb25gYCBmcm9tIHdpdGhpbiB0aGUgYGBzcGFtYGAgcGFja2FnZSkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBkZWNvcmF0b3I6OiBtb2R1bGVfZm9yX2xvYWRlcgogCiAgICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgYSA6dGVybTpgbG9hZGVyYCBtZXRob2QsCkBAIC00ODEsMjIgKzg2MSwzMCBAQAogICAgIHNpZ25hdHVyZSB0YWtpbmcgdHdvIHBvc2l0aW9uYWwgYXJndW1lbnRzCiAgICAgKGUuZy4gYGBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpYGApIGZvciB3aGljaCB0aGUgc2Vjb25kIGFyZ3VtZW50CiAgICAgd2lsbCBiZSB0aGUgbW9kdWxlICoqb2JqZWN0KiogdG8gYmUgdXNlZCBieSB0aGUgbG9hZGVyLgotICAgIE5vdGUgdGhhdCB0aGUgZGVjb3JhdG9yCi0gICAgd2lsbCBub3Qgd29yayBvbiBzdGF0aWMgbWV0aG9kcyBiZWNhdXNlIG9mIHRoZSBhc3N1bXB0aW9uIG9mIHR3bwotICAgIGFyZ3VtZW50cy4KKyAgICBOb3RlIHRoYXQgdGhlIGRlY29yYXRvciB3aWxsIG5vdCB3b3JrIG9uIHN0YXRpYyBtZXRob2RzIGJlY2F1c2Ugb2YgdGhlCisgICAgYXNzdW1wdGlvbiBvZiB0d28gYXJndW1lbnRzLgogCiAgICAgVGhlIGRlY29yYXRlZCBtZXRob2Qgd2lsbCB0YWtlIGluIHRoZSAqKm5hbWUqKiBvZiB0aGUgbW9kdWxlIHRvIGJlIGxvYWRlZAogICAgIGFzIGV4cGVjdGVkIGZvciBhIDp0ZXJtOmBsb2FkZXJgLiBJZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbgogICAgIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBhIG5ldyBvbmUgaXMgY29uc3RydWN0ZWQgd2l0aCBpdHMKLSAgICA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZSBzZXQuIE90aGVyd2lzZSB0aGUgbW9kdWxlIGZvdW5kIGluCi0gICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB3aWxsIGJlIHBhc3NlZCBpbnRvIHRoZSBtZXRob2QuIElmIGFuCi0gICAgZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB0aGUgZGVjb3JhdGVkIG1ldGhvZCBhbmQgYSBtb2R1bGUgd2FzIGFkZGVkIHRvCisgICAgOmF0dHI6YF9fbmFtZV9fYCBhdHRyaWJ1dGUgc2V0IHRvICoqbmFtZSoqLCA6YXR0cjpgX19sb2FkZXJfX2Agc2V0IHRvCisgICAgKipzZWxmKiosIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gIHNldCBpZgorICAgIDptZXRoOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuaXNfcGFja2FnZWAgaXMgZGVmaW5lZCBmb3IgKipzZWxmKiogYW5kCisgICAgZG9lcyBub3QgcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIGZvciAqKm5hbWUqKi4gSWYgYSBuZXcgbW9kdWxlIGlzIG5vdAorICAgIG5lZWRlZCB0aGVuIHRoZSBtb2R1bGUgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCB3aWxsIGJlIHBhc3NlZCBpbnRvIHRoZQorICAgIG1ldGhvZC4KKworICAgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgdGhlIGRlY29yYXRlZCBtZXRob2QgYW5kIGEgbW9kdWxlIHdhcyBhZGRlZCB0bwogICAgIDpkYXRhOmBzeXMubW9kdWxlc2AgaXQgd2lsbCBiZSByZW1vdmVkIHRvIHByZXZlbnQgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKICAgICBtb2R1bGUgZnJvbSBiZWluZyBpbiBsZWZ0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AuIElmIHRoZSBtb2R1bGUgd2FzIGFscmVhZHkKICAgICBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHRoZW4gaXQgaXMgbGVmdCBhbG9uZS4KIAogICAgIFVzZSBvZiB0aGlzIGRlY29yYXRvciBoYW5kbGVzIGFsbCB0aGUgZGV0YWlscyBvZiB3aGljaCBtb2R1bGUgb2JqZWN0IGEKLSAgICBsb2FkZXIgc2hvdWxkIGluaXRpYWxpemUgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDMwMmAuCisgICAgbG9hZGVyIHNob3VsZCBpbml0aWFsaXplIGFzIHNwZWNpZmllZCBieSA6cGVwOmAzMDJgIGFzIGJlc3QgYXMgcG9zc2libGUuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIDphdHRyOmBfX2xvYWRlcl9fYCBhbmQgOmF0dHI6YF9fcGFja2FnZV9fYCBhcmUgYXV0b21hdGljYWxseSBzZXQKKyAgICAgICAod2hlbiBwb3NzaWJsZSkuCiAKIC4uIGRlY29yYXRvcjo6IHNldF9sb2FkZXIKIApAQCAtNTA0LDcgKzg5MiwxMyBAQAogICAgIHRvIHNldCB0aGUgOmF0dHI6YF9fbG9hZGVyX19gCiAgICAgYXR0cmlidXRlIG9uIGxvYWRlZCBtb2R1bGVzLiBJZiB0aGUgYXR0cmlidXRlIGlzIGFscmVhZHkgc2V0IHRoZSBkZWNvcmF0b3IKICAgICBkb2VzIG5vdGhpbmcuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudCB0byB0aGUKLSAgICB3cmFwcGVkIG1ldGhvZCBpcyB3aGF0IDphdHRyOmBfX2xvYWRlcl9fYCBzaG91bGQgYmUgc2V0IHRvLgorICAgIHdyYXBwZWQgbWV0aG9kIChpLmUuIGBgc2VsZmBgKSBpcyB3aGF0IDphdHRyOmBfX2xvYWRlcl9fYCBzaG91bGQgYmUgc2V0IHRvLgorCisgICAuLiBub3RlOjoKKworICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCA6ZnVuYzpgbW9kdWxlX2Zvcl9sb2FkZXJgIGJlIHVzZWQgb3ZlciB0aGlzCisgICAgICBkZWNvcmF0b3IgYXMgaXQgc3Vic3VtZXMgdGhpcyBmdW5jdGlvbmFsaXR5LgorCiAKIC4uIGRlY29yYXRvcjo6IHNldF9wYWNrYWdlCiAKQEAgLTUxNSw4ICs5MDksMTIgQEAKICAgICBzZXQgb24gYW5kIG5vdCB0aGUgbW9kdWxlIGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AuCiAKICAgICBSZWxpYW5jZSBvbiB0aGlzIGRlY29yYXRvciBpcyBkaXNjb3VyYWdlZCB3aGVuIGl0IGlzIHBvc3NpYmxlIHRvIHNldAotICAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYmVmb3JlIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvZGUgaXMgcG9zc2libGUuIEJ5Ci0gICAgc2V0dGluZyBpdCBiZWZvcmUgdGhlIGNvZGUgZm9yIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgaXQgYWxsb3dzIHRoZQotICAgIGF0dHJpYnV0ZSB0byBiZSB1c2VkIGF0IHRoZSBnbG9iYWwgbGV2ZWwgb2YgdGhlIG1vZHVsZSBkdXJpbmcKKyAgICA6YXR0cjpgX19wYWNrYWdlX19gIGJlZm9yZSBpbXBvcnRpbmcuIEJ5CisgICAgc2V0dGluZyBpdCBiZWZvcmVoYW5kIHRoZSBjb2RlIGZvciB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHdpdGggdGhlCisgICAgYXR0cmlidXRlIHNldCBhbmQgdGh1cyBjYW4gYmUgdXNlZCBieSBnbG9iYWwgbGV2ZWwgY29kZSBkdXJpbmcKICAgICBpbml0aWFsaXphdGlvbi4KIAorICAgLi4gbm90ZTo6CisKKyAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgOmZ1bmM6YG1vZHVsZV9mb3JfbG9hZGVyYCBiZSB1c2VkIG92ZXIgdGhpcworICAgICAgZGVjb3JhdG9yIGFzIGl0IHN1YnN1bWVzIHRoaXMgZnVuY3Rpb25hbGl0eS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2luZGV4LnJzdCBiL0RvYy9saWJyYXJ5L2luZGV4LnJzdAppbmRleCBiNmE1NTU5Li4xYjI1YzZlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbmRleC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW5kZXgucnN0CkBAIC00Myw3ICs0Myw4IEBACiAgICBzdGR0eXBlcy5yc3QKICAgIGV4Y2VwdGlvbnMucnN0CiAKLSAgIHN0cmluZ3MucnN0CisgICB0ZXh0LnJzdAorICAgYmluYXJ5LnJzdAogICAgZGF0YXR5cGVzLnJzdAogICAgbnVtZXJpYy5yc3QKICAgIGZ1bmN0aW9uYWwucnN0CkBAIC01Myw3ICs1NCw3IEBACiAgICBmaWxlZm9ybWF0cy5yc3QKICAgIGNyeXB0by5yc3QKICAgIGFsbG9zLnJzdAotICAgc29tZW9zLnJzdAorICAgY29uY3VycmVuY3kucnN0CiAgICBpcGMucnN0CiAgICBuZXRkYXRhLnJzdAogICAgbWFya3VwLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCBkMTI3Y2U4Li4wMWJiY2U4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMTkwLDEzICsxOTAsMjYgQEAKICAgIGNvbXBhcmVkIHRvIHRoZSBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgOm1vZDpgaW1wYCBtb2R1bGU7IHNlZSB0aGUKICAgIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vZHVsZSB0eXBlcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgWW91IG1heSBjaGVjayB0aGUgZmlsZSBwYXRoJ3Mgc3VmZml4IGFnYWluc3QgdGhlIHN1cHBvcnRlZCBzdWZmaXhlcworICAgICAgbGlzdGVkIGluIDptb2Q6YGltcG9ydGxpYi5tYWNoaW5lcnlgIHRvIGluZmVyIHRoZSBzYW1lIGluZm9ybWF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0bW9kdWxlbmFtZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBuYW1lZCBieSB0aGUgZmlsZSAqcGF0aCosIHdpdGhvdXQgaW5jbHVkaW5nIHRoZQotICAgbmFtZXMgb2YgZW5jbG9zaW5nIHBhY2thZ2VzLiAgVGhpcyB1c2VzIHRoZSBzYW1lIGFsZ29yaXRobSBhcyB0aGUgaW50ZXJwcmV0ZXIKLSAgIHVzZXMgd2hlbiBzZWFyY2hpbmcgZm9yIG1vZHVsZXMuICBJZiB0aGUgbmFtZSBjYW5ub3QgYmUgbWF0Y2hlZCBhY2NvcmRpbmcgdG8gdGhlCi0gICBpbnRlcnByZXRlcidzIHJ1bGVzLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIG5hbWVzIG9mIGVuY2xvc2luZyBwYWNrYWdlcy4gVGhlIGZpbGUgZXh0ZW5zaW9uIGlzIGNoZWNrZWQgYWdhaW5zdCBhbGwgb2YKKyAgIHRoZSBlbnRyaWVzIGluIDpmdW5jOmBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlc2AuIElmIGl0IG1hdGNoZXMsCisgICB0aGUgZmluYWwgcGF0aCBjb21wb25lbnQgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZXh0ZW5zaW9uIHJlbW92ZWQuCisgICBPdGhlcndpc2UsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorCisgICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiAqb25seSogcmV0dXJucyBhIG1lYW5pbmdmdWwgbmFtZSBmb3IgYWN0dWFsCisgICBQeXRob24gbW9kdWxlcyAtIHBhdGhzIHRoYXQgcG90ZW50aWFsbHkgcmVmZXIgdG8gUHl0aG9uIHBhY2thZ2VzIHdpbGwKKyAgIHN0aWxsIHJldHVybiBgYE5vbmVgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gdGhlCisgICAgICBkZXByZWNhdGVkIDpmdW5jOmBnZXRtb2R1bGVpbmZvYC4KIAogCiAuLiBmdW5jdGlvbjo6IGlzbW9kdWxlKG9iamVjdCkKQEAgLTM1NSwxNyArMzY4LDI1IEBACiAgICBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsIGZ1bmN0aW9uLCB0cmFjZWJhY2ssIGZyYW1lLCBvciBjb2RlCiAgICBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMgcmV0dXJuZWQgYXMgYSBsaXN0IG9mIHRoZSBsaW5lcyBjb3JyZXNwb25kaW5nIHRvIHRoZQogICAgb2JqZWN0IGFuZCB0aGUgbGluZSBudW1iZXIgaW5kaWNhdGVzIHdoZXJlIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSB0aGUgZmlyc3QKLSAgIGxpbmUgb2YgY29kZSB3YXMgZm91bmQuICBBbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbm5vdAorICAgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90CiAgICBiZSByZXRyaWV2ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIHRoZQorICAgICAgZm9ybWVyLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c291cmNlKG9iamVjdCkKIAogICAgUmV0dXJuIHRoZSB0ZXh0IG9mIHRoZSBzb3VyY2UgY29kZSBmb3IgYW4gb2JqZWN0LiBUaGUgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLAogICAgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUgb2JqZWN0LiAgVGhlIHNvdXJjZSBjb2RlIGlzCi0gICByZXR1cm5lZCBhcyBhIHNpbmdsZSBzdHJpbmcuICBBbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlCisgICByZXR1cm5lZCBhcyBhIHNpbmdsZSBzdHJpbmcuICBBbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlCiAgICBjYW5ub3QgYmUgcmV0cmlldmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgSU9FcnJvcmAsIG5vdyBhbiBhbGlhcyBvZiB0aGUKKyAgICAgIGZvcm1lci4KKwogCiAuLiBmdW5jdGlvbjo6IGNsZWFuZG9jKGRvYykKIApAQCAtMzc0LDYgKzM5NSwyNjQgQEAKICAgIG9ud2FyZHMgaXMgcmVtb3ZlZC4gIEFsc28sIGFsbCB0YWJzIGFyZSBleHBhbmRlZCB0byBzcGFjZXMuCiAKIAorLi4gX2luc3BlY3Qtc2lnbmF0dXJlLW9iamVjdDoKKworSW50cm9zcGVjdGluZyBjYWxsYWJsZXMgd2l0aCB0aGUgU2lnbmF0dXJlIG9iamVjdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgY2FsbCBzaWduYXR1cmUgb2YgYSBjYWxsYWJsZSBvYmplY3QgYW5kIGl0cworcmV0dXJuIGFubm90YXRpb24uICBUbyByZXRyaWV2ZSBhIFNpZ25hdHVyZSBvYmplY3QsIHVzZSB0aGUgOmZ1bmM6YHNpZ25hdHVyZWAKK2Z1bmN0aW9uLgorCisuLiBmdW5jdGlvbjo6IHNpZ25hdHVyZShjYWxsYWJsZSkKKworICAgUmV0dXJuIGEgOmNsYXNzOmBTaWduYXR1cmVgIG9iamVjdCBmb3IgdGhlIGdpdmVuIGBgY2FsbGFibGVgYDo6CisKKyAgICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IHNpZ25hdHVyZQorICAgICAgPj4+IGRlZiBmb28oYSwgKiwgYjppbnQsICoqa3dhcmdzKToKKyAgICAgIC4uLiAgICAgcGFzcworCisgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKGZvbykKKworICAgICAgPj4+IHN0cihzaWcpCisgICAgICAnKGEsICosIGI6aW50LCAqKmt3YXJncyknCisKKyAgICAgID4+PiBzdHIoc2lnLnBhcmFtZXRlcnNbJ2InXSkKKyAgICAgICdiOmludCcKKworICAgICAgPj4+IHNpZy5wYXJhbWV0ZXJzWydiJ10uYW5ub3RhdGlvbgorICAgICAgPGNsYXNzICdpbnQnPgorCisgICBBY2NlcHRzIGEgd2lkZSByYW5nZSBvZiBweXRob24gY2FsbGFibGVzLCBmcm9tIHBsYWluIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyB0bworICAgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYCBvYmplY3RzLgorCisgICAuLiBub3RlOjoKKworICAgICAgU29tZSBjYWxsYWJsZXMgbWF5IG5vdCBiZSBpbnRyb3NwZWN0YWJsZSBpbiBjZXJ0YWluIGltcGxlbWVudGF0aW9ucyBvZgorICAgICAgUHl0aG9uLiAgRm9yIGV4YW1wbGUsIGluIENQeXRob24sIGJ1aWx0LWluIGZ1bmN0aW9ucyBkZWZpbmVkIGluIEMgcHJvdmlkZQorICAgICAgbm8gbWV0YWRhdGEgYWJvdXQgdGhlaXIgYXJndW1lbnRzLgorCisKKy4uIGNsYXNzOjogU2lnbmF0dXJlCisKKyAgIEEgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBjYWxsIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIGFuZCBpdHMgcmV0dXJuCisgICBhbm5vdGF0aW9uLiAgRm9yIGVhY2ggcGFyYW1ldGVyIGFjY2VwdGVkIGJ5IHRoZSBmdW5jdGlvbiBpdCBzdG9yZXMgYQorICAgOmNsYXNzOmBQYXJhbWV0ZXJgIG9iamVjdCBpbiBpdHMgOmF0dHI6YHBhcmFtZXRlcnNgIGNvbGxlY3Rpb24uCisKKyAgIFNpZ25hdHVyZSBvYmplY3RzIGFyZSAqaW1tdXRhYmxlKi4gIFVzZSA6bWV0aDpgU2lnbmF0dXJlLnJlcGxhY2VgIHRvIG1ha2UgYQorICAgbW9kaWZpZWQgY29weS4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLmVtcHR5CisKKyAgICAgIEEgc3BlY2lhbCBjbGFzcy1sZXZlbCBtYXJrZXIgdG8gc3BlY2lmeSBhYnNlbmNlIG9mIGEgcmV0dXJuIGFubm90YXRpb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFNpZ25hdHVyZS5wYXJhbWV0ZXJzCisKKyAgICAgIEFuIG9yZGVyZWQgbWFwcGluZyBvZiBwYXJhbWV0ZXJzJyBuYW1lcyB0byB0aGUgY29ycmVzcG9uZGluZworICAgICAgOmNsYXNzOmBQYXJhbWV0ZXJgIG9iamVjdHMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFNpZ25hdHVyZS5yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgICBUaGUgInJldHVybiIgYW5ub3RhdGlvbiBmb3IgdGhlIGNhbGxhYmxlLiAgSWYgdGhlIGNhbGxhYmxlIGhhcyBubyAicmV0dXJuIgorICAgICAgYW5ub3RhdGlvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBTaWduYXR1cmUuZW1wdHlgLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUuYmluZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgIENyZWF0ZSBhIG1hcHBpbmcgZnJvbSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyB0byBwYXJhbWV0ZXJzLgorICAgICAgUmV0dXJucyA6Y2xhc3M6YEJvdW5kQXJndW1lbnRzYCBpZiBgYCphcmdzYGAgYW5kIGBgKiprd2FyZ3NgYCBtYXRjaCB0aGUKKyAgICAgIHNpZ25hdHVyZSwgb3IgcmFpc2VzIGEgOmV4YzpgVHlwZUVycm9yYC4KKworICAgLi4gbWV0aG9kOjogU2lnbmF0dXJlLmJpbmRfcGFydGlhbCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgIFdvcmtzIHRoZSBzYW1lIHdheSBhcyA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgLCBidXQgYWxsb3dzIHRoZSBvbWlzc2lvbiBvZgorICAgICAgc29tZSByZXF1aXJlZCBhcmd1bWVudHMgKG1pbWljcyA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgIGJlaGF2aW9yLikKKyAgICAgIFJldHVybnMgOmNsYXNzOmBCb3VuZEFyZ3VtZW50c2AsIG9yIHJhaXNlcyBhIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhlCisgICAgICBwYXNzZWQgYXJndW1lbnRzIGRvIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUucmVwbGFjZSgqWywgcGFyYW1ldGVyc11bLCByZXR1cm5fYW5ub3RhdGlvbl0pCisKKyAgICAgIENyZWF0ZSBhIG5ldyBTaWduYXR1cmUgaW5zdGFuY2UgYmFzZWQgb24gdGhlIGluc3RhbmNlIHJlcGxhY2Ugd2FzIGludm9rZWQKKyAgICAgIG9uLiAgSXQgaXMgcG9zc2libGUgdG8gcGFzcyBkaWZmZXJlbnQgYGBwYXJhbWV0ZXJzYGAgYW5kL29yCisgICAgICBgYHJldHVybl9hbm5vdGF0aW9uYGAgdG8gb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydGllcyBvZiB0aGUgYmFzZQorICAgICAgc2lnbmF0dXJlLiAgVG8gcmVtb3ZlIHJldHVybl9hbm5vdGF0aW9uIGZyb20gdGhlIGNvcGllZCBTaWduYXR1cmUsIHBhc3MgaW4KKyAgICAgIDphdHRyOmBTaWduYXR1cmUuZW1wdHlgLgorCisgICAgICA6OgorCisgICAgICAgICA+Pj4gZGVmIHRlc3QoYSwgYik6CisgICAgICAgICAuLi4gICAgIHBhc3MKKyAgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUodGVzdCkKKyAgICAgICAgID4+PiBuZXdfc2lnID0gc2lnLnJlcGxhY2UocmV0dXJuX2Fubm90YXRpb249Im5ldyByZXR1cm4gYW5ubyIpCisgICAgICAgICA+Pj4gc3RyKG5ld19zaWcpCisgICAgICAgICAiKGEsIGIpIC0+ICduZXcgcmV0dXJuIGFubm8nIgorCisKKy4uIGNsYXNzOjogUGFyYW1ldGVyCisKKyAgIFBhcmFtZXRlciBvYmplY3RzIGFyZSAqaW1tdXRhYmxlKi4gIEluc3RlYWQgb2YgbW9kaWZ5aW5nIGEgUGFyYW1ldGVyIG9iamVjdCwKKyAgIHlvdSBjYW4gdXNlIDptZXRoOmBQYXJhbWV0ZXIucmVwbGFjZWAgdG8gY3JlYXRlIGEgbW9kaWZpZWQgY29weS4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmVtcHR5CisKKyAgICAgIEEgc3BlY2lhbCBjbGFzcy1sZXZlbCBtYXJrZXIgdG8gc3BlY2lmeSBhYnNlbmNlIG9mIGRlZmF1bHQgdmFsdWVzIGFuZAorICAgICAgYW5ub3RhdGlvbnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5uYW1lCisKKyAgICAgIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuICBNdXN0IGJlIGEgdmFsaWQgcHl0aG9uIGlkZW50aWZpZXIKKyAgICAgIG5hbWUgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgYFBPU0lUSU9OQUxfT05MWWBgIHBhcmFtZXRlcnMsIHdoaWNoIGNhbiBoYXZlCisgICAgICBpdCBzZXQgdG8gYGBOb25lYGApLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZGVmYXVsdAorCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQKKyAgICAgIHZhbHVlLCB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5hbm5vdGF0aW9uCisKKyAgICAgIFRoZSBhbm5vdGF0aW9uIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gYW5ub3RhdGlvbiwKKyAgICAgIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmtpbmQKKworICAgICAgRGVzY3JpYmVzIGhvdyBhcmd1bWVudCB2YWx1ZXMgYXJlIGJvdW5kIHRvIHRoZSBwYXJhbWV0ZXIuICBQb3NzaWJsZSB2YWx1ZXMKKyAgICAgIChhY2Nlc3NpYmxlIHZpYSA6Y2xhc3M6YFBhcmFtZXRlcmAsIGxpa2UgYGBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZYGApOgorCisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICAgIE5hbWUgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICArPT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICAgICB8ICpQT1NJVElPTkFMX09OTFkqICAgICAgfCBWYWx1ZSBtdXN0IGJlIHN1cHBsaWVkIGFzIGEgcG9zaXRpb25hbCAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gaGFzIG5vIGV4cGxpY2l0IHN5bnRheCBmb3IgZGVmaW5pbmcgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgYnV0IG1hbnkgYnVpbHQtaW58CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgZXh0ZW5zaW9uIG1vZHVsZSBmdW5jdGlvbnMgKGVzcGVjaWFsbHkgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCB0aG9zZSB0aGF0IGFjY2VwdCBvbmx5IG9uZSBvciB0d28gcGFyYW1ldGVycyl8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBhY2NlcHQgdGhlbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICpQT1NJVElPTkFMX09SX0tFWVdPUkQqfCBWYWx1ZSBtYXkgYmUgc3VwcGxpZWQgYXMgZWl0aGVyIGEga2V5d29yZCBvciB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBwb3NpdGlvbmFsIGFyZ3VtZW50ICh0aGlzIGlzIHRoZSBzdGFuZGFyZCAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBiaW5kaW5nIGJlaGF2aW91ciBmb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBpbiBQeXRob24uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICpWQVJfUE9TSVRJT05BTCogICAgICAgfCBBIHR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYXQgYXJlbid0ICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBib3VuZCB0byBhbnkgb3RoZXIgcGFyYW1ldGVyLiBUaGlzICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBjb3JyZXNwb25kcyB0byBhIGBgKmFyZ3NgYCBwYXJhbWV0ZXIgaW4gYSAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gZnVuY3Rpb24gZGVmaW5pdGlvbi4gICAgICAgICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICpLRVlXT1JEX09OTFkqICAgICAgICAgfCBWYWx1ZSBtdXN0IGJlIHN1cHBsaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC58CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBLZXl3b3JkIG9ubHkgcGFyYW1ldGVycyBhcmUgdGhvc2Ugd2hpY2ggICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBhcHBlYXIgYWZ0ZXIgYSBgYCpgYCBvciBgYCphcmdzYGAgZW50cnkgaW4gYSB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gZnVuY3Rpb24gZGVmaW5pdGlvbi4gICAgICAgICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICpWQVJfS0VZV09SRCogICAgICAgICAgfCBBIGRpY3Qgb2Yga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmVuJ3QgYm91bmR8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCB0byBhbnkgb3RoZXIgcGFyYW1ldGVyLiBUaGlzIGNvcnJlc3BvbmRzIHRvIGF8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBgYCoqa3dhcmdzYGAgcGFyYW1ldGVyIGluIGEgUHl0aG9uIGZ1bmN0aW9uICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICAgIEV4YW1wbGU6IHByaW50IGFsbCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdpdGhvdXQgZGVmYXVsdCB2YWx1ZXM6OgorCisgICAgICAgICA+Pj4gZGVmIGZvbyhhLCBiLCAqLCBjLCBkPTEwKToKKyAgICAgICAgIC4uLiAgICAgcGFzcworCisgICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKGZvbykKKyAgICAgICAgID4+PiBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCk6CisgICAgICAgICAuLi4gICAgIGlmIChwYXJhbS5raW5kID09IHBhcmFtLktFWVdPUkRfT05MWSBhbmQKKyAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHQgaXMgcGFyYW0uZW1wdHkpOgorICAgICAgICAgLi4uICAgICAgICAgcHJpbnQoJ1BhcmFtZXRlcjonLCBwYXJhbSkKKyAgICAgICAgIFBhcmFtZXRlcjogYworCisgICAuLiBtZXRob2Q6OiBQYXJhbWV0ZXIucmVwbGFjZSgqWywgbmFtZV1bLCBraW5kXVssIGRlZmF1bHRdWywgYW5ub3RhdGlvbl0pCisKKyAgICAgIENyZWF0ZSBhIG5ldyBQYXJhbWV0ZXIgaW5zdGFuY2UgYmFzZWQgb24gdGhlIGluc3RhbmNlIHJlcGxhY2VkIHdhcyBpbnZva2VkCisgICAgICBvbi4gIFRvIG92ZXJyaWRlIGEgOmNsYXNzOmBQYXJhbWV0ZXJgIGF0dHJpYnV0ZSwgcGFzcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgYXJndW1lbnQuICBUbyByZW1vdmUgYSBkZWZhdWx0IHZhbHVlIG9yL2FuZCBhbiBhbm5vdGF0aW9uIGZyb20gYQorICAgICAgUGFyYW1ldGVyLCBwYXNzIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAgICA6OgorCisgICAgICAgICA+Pj4gZnJvbSBpbnNwZWN0IGltcG9ydCBQYXJhbWV0ZXIKKyAgICAgICAgID4+PiBwYXJhbSA9IFBhcmFtZXRlcignZm9vJywgUGFyYW1ldGVyLktFWVdPUkRfT05MWSwgZGVmYXVsdD00MikKKyAgICAgICAgID4+PiBzdHIocGFyYW0pCisgICAgICAgICAnZm9vPTQyJworCisgICAgICAgICA+Pj4gc3RyKHBhcmFtLnJlcGxhY2UoKSkgIyBXaWxsIGNyZWF0ZSBhIHNoYWxsb3cgY29weSBvZiAncGFyYW0nCisgICAgICAgICAnZm9vPTQyJworCisgICAgICAgICA+Pj4gc3RyKHBhcmFtLnJlcGxhY2UoZGVmYXVsdD1QYXJhbWV0ZXIuZW1wdHksIGFubm90YXRpb249J3NwYW0nKSkKKyAgICAgICAgICJmb286J3NwYW0nIgorCisKKy4uIGNsYXNzOjogQm91bmRBcmd1bWVudHMKKworICAgUmVzdWx0IG9mIGEgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBvciA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlhbGAgY2FsbC4KKyAgIEhvbGRzIHRoZSBtYXBwaW5nIG9mIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5hcmd1bWVudHMKKworICAgICAgQW4gb3JkZXJlZCwgbXV0YWJsZSBtYXBwaW5nICg6Y2xhc3M6YGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCkgb2YKKyAgICAgIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3VtZW50cycgdmFsdWVzLiAgQ29udGFpbnMgb25seSBleHBsaWNpdGx5IGJvdW5kCisgICAgICBhcmd1bWVudHMuICBDaGFuZ2VzIGluIDphdHRyOmBhcmd1bWVudHNgIHdpbGwgcmVmbGVjdCBpbiA6YXR0cjpgYXJnc2AgYW5kCisgICAgICA6YXR0cjpga3dhcmdzYC4KKworICAgICAgU2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCA6YXR0cjpgU2lnbmF0dXJlLnBhcmFtZXRlcnNgIGZvciBhbnkKKyAgICAgIGFyZ3VtZW50IHByb2Nlc3NpbmcgcHVycG9zZXMuCisKKyAgICAgIC4uIG5vdGU6OgorCisgICAgICAgICBBcmd1bWVudHMgZm9yIHdoaWNoIDptZXRoOmBTaWduYXR1cmUuYmluZGAgb3IKKyAgICAgICAgIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCByZWxpZWQgb24gYSBkZWZhdWx0IHZhbHVlIGFyZSBza2lwcGVkLgorICAgICAgICAgSG93ZXZlciwgaWYgbmVlZGVkLCBpdCBpcyBlYXN5IHRvIGluY2x1ZGUgdGhlbS4KKworICAgICAgOjoKKworICAgICAgICA+Pj4gZGVmIGZvbyhhLCBiPTEwKToKKyAgICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZShmb28pCisgICAgICAgID4+PiBiYSA9IHNpZy5iaW5kKDUpCisKKyAgICAgICAgPj4+IGJhLmFyZ3MsIGJhLmt3YXJncworICAgICAgICAoKDUsKSwge30pCisKKyAgICAgICAgPj4+IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgLi4uICAgICBpZiBwYXJhbS5uYW1lIG5vdCBpbiBiYS5hcmd1bWVudHM6CisgICAgICAgIC4uLiAgICAgICAgIGJhLmFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHBhcmFtLmRlZmF1bHQKKworICAgICAgICA+Pj4gYmEuYXJncywgYmEua3dhcmdzCisgICAgICAgICgoNSwgMTApLCB7fSkKKworCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5hcmdzCisKKyAgICAgIEEgdHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLiAgRHluYW1pY2FsbHkgY29tcHV0ZWQgZnJvbSB0aGUKKyAgICAgIDphdHRyOmBhcmd1bWVudHNgIGF0dHJpYnV0ZS4KKworICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMua3dhcmdzCisKKyAgICAgIEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMuICBEeW5hbWljYWxseSBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgOmF0dHI6YGFyZ3VtZW50c2AgYXR0cmlidXRlLgorCisgICBUaGUgOmF0dHI6YGFyZ3NgIGFuZCA6YXR0cjpga3dhcmdzYCBwcm9wZXJ0aWVzIGNhbiBiZSB1c2VkIHRvIGludm9rZQorICAgZnVuY3Rpb25zOjoKKworICAgICAgZGVmIHRlc3QoYSwgKiwgYik6CisgICAgICAgICAuLi4KKworICAgICAgc2lnID0gc2lnbmF0dXJlKHRlc3QpCisgICAgICBiYSA9IHNpZy5iaW5kKDEwLCBiPTIwKQorICAgICAgdGVzdCgqYmEuYXJncywgKipiYS5rd2FyZ3MpCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM2MmAgLSBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0LgorICAgICAgVGhlIGRldGFpbGVkIHNwZWNpZmljYXRpb24sIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGV4YW1wbGVzLgorCisKIC4uIF9pbnNwZWN0LWNsYXNzZXMtZnVuY3Rpb25zOgogCiBDbGFzc2VzIGFuZCBmdW5jdGlvbnMKQEAgLTM5Niw5ICs2NzUsOSBAQAogICAgOnRlcm06YG5hbWVkIHR1cGxlYCBgYEFyZ1NwZWMoYXJncywgdmFyYXJncywga2V5d29yZHMsIGRlZmF1bHRzKWBgIGlzCiAgICByZXR1cm5lZC4gKmFyZ3MqIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMuICp2YXJhcmdzKiBhbmQgKmtleXdvcmRzKgogICAgYXJlIHRoZSBuYW1lcyBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICpkZWZhdWx0cyogaXMgYQotICAgdHVwbGUgb2YgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgb3IgTm9uZSBpZiB0aGVyZSBhcmUgbm8gZGVmYXVsdCBhcmd1bWVudHM7Ci0gICBpZiB0aGlzIHR1cGxlIGhhcyAqbiogZWxlbWVudHMsIHRoZXkgY29ycmVzcG9uZCB0byB0aGUgbGFzdCAqbiogZWxlbWVudHMKLSAgIGxpc3RlZCBpbiAqYXJncyouCisgICB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBvciBgYE5vbmVgYCBpZiB0aGVyZSBhcmUgbm8gZGVmYXVsdAorICAgYXJndW1lbnRzOyBpZiB0aGlzIHR1cGxlIGhhcyAqbiogZWxlbWVudHMsIHRoZXkgY29ycmVzcG9uZCB0byB0aGUgbGFzdAorICAgKm4qIGVsZW1lbnRzIGxpc3RlZCBpbiAqYXJncyouCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjAKICAgICAgIFVzZSA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgIGluc3RlYWQsIHdoaWNoIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0CkBAIC00MTQsMTQgKzY5MywxOSBAQAogICAgYW5ub3RhdGlvbnMpYGAKIAogICAgKmFyZ3MqIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMuICAqdmFyYXJncyogYW5kICp2YXJrdyogYXJlIHRoZSBuYW1lcwotICAgb2YgdGhlIGBgKmBgIGFuZCBgYCoqYGAgYXJndW1lbnRzIG9yIGBgTm9uZWBgLiAgKmRlZmF1bHRzKiBpcyBhbiBuLXR1cGxlIG9mCi0gICB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBhcmd1bWVudHMuICAqa3dvbmx5YXJncyogaXMgYSBsaXN0IG9mCisgICBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqZGVmYXVsdHMqIGlzIGFuICpuKi10dXBsZQorICAgb2YgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBsYXN0ICpuKiBhcmd1bWVudHMsIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGFyZSBubworICAgZGVmYXVsdCBhcmd1bWVudHMuICAqa3dvbmx5YXJncyogaXMgYSBsaXN0IG9mCiAgICBrZXl3b3JkLW9ubHkgYXJndW1lbnQgbmFtZXMuICAqa3dvbmx5ZGVmYXVsdHMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzCiAgICBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuICAqYW5ub3RhdGlvbnMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50CiAgICBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAogICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gOmZ1bmM6YGdldGFyZ3NwZWNgLgogCisgICAuLiBub3RlOjoKKyAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAKKyAgICAgIGludGVyZmFjZSwgd2hpY2ggcHJvdmlkZXMgYSBiZXR0ZXIgd2F5IG9mIGludHJvc3BlY3RpbmcgZnVuY3Rpb25zLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YXJndmFsdWVzKGZyYW1lKQogCkBAIC00MzIsMTEgKzcxNiwyMyBAQAogICAgbG9jYWxzIGRpY3Rpb25hcnkgb2YgdGhlIGdpdmVuIGZyYW1lLgogCiAKLS4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZV0pCisuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3NwZWMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zWywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWUsIGZvcm1hdHJldHVybnMsIGZvcm1hdGFubm90YXRpb25zXV0pCiAKLSAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIGZvdXIgdmFsdWVzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgZ2V0YXJnc3BlY2AuICBUaGUgZm9ybWF0XCogYXJndW1lbnRzIGFyZSB0aGUgY29ycmVzcG9uZGluZyBvcHRpb25hbAotICAgZm9ybWF0dGluZyBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHRvIHR1cm4gbmFtZXMgYW5kIHZhbHVlcyBpbnRvIHN0cmluZ3MuCisgICBGb3JtYXQgYSBwcmV0dHkgYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBnZXRhcmdzcGVjYCBvciA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgLgorCisgICBUaGUgZmlyc3Qgc2V2ZW4gYXJndW1lbnRzIGFyZSAoYGBhcmdzYGAsIGBgdmFyYXJnc2BgLCBgYHZhcmt3YGAsCisgICBgYGRlZmF1bHRzYGAsIGBga3dvbmx5YXJnc2BgLCBgYGt3b25seWRlZmF1bHRzYGAsIGBgYW5ub3RhdGlvbnNgYCkuIFRoZQorICAgb3RoZXIgZml2ZSBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsIGZvcm1hdHRpbmcgZnVuY3Rpb25zCisgICB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4gVGhlIGxhc3QgYXJndW1lbnQKKyAgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgc2VxdWVuY2Ugb2YgYXJndW1lbnRzLiBGb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gZnJvbSBpbnNwZWN0IGltcG9ydCBmb3JtYXRhcmdzcGVjLCBnZXRmdWxsYXJnc3BlYworICAgID4+PiBkZWYgZihhOiBpbnQsIGI6IGZsb2F0KToKKyAgICAuLi4gICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gZm9ybWF0YXJnc3BlYygqZ2V0ZnVsbGFyZ3NwZWMoZikpCisgICAgJyhhOiBpbnQsIGI6IGZsb2F0KScKIAogCiAuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3ZhbHVlcyhhcmdzWywgdmFyYXJncywgdmFya3csIGxvY2FscywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWVdKQpAQCAtNDY4LDE3ICs3NjQsMzYgQEAKICAgICA+Pj4gZnJvbSBpbnNwZWN0IGltcG9ydCBnZXRjYWxsYXJncwogICAgID4+PiBkZWYgZihhLCBiPTEsICpwb3MsICoqbmFtZWQpOgogICAgIC4uLiAgICAgcGFzcwotICAgID4+PiBnZXRjYWxsYXJncyhmLCAxLCAyLCAzKQotICAgIHsnYSc6IDEsICduYW1lZCc6IHt9LCAnYic6IDIsICdwb3MnOiAoMywpfQotICAgID4+PiBnZXRjYWxsYXJncyhmLCBhPTIsIHg9NCkKLSAgICB7J2EnOiAyLCAnbmFtZWQnOiB7J3gnOiA0fSwgJ2InOiAxLCAncG9zJzogKCl9CisgICAgPj4+IGdldGNhbGxhcmdzKGYsIDEsIDIsIDMpID09IHsnYSc6IDEsICduYW1lZCc6IHt9LCAnYic6IDIsICdwb3MnOiAoMywpfQorICAgIFRydWUKKyAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgYT0yLCB4PTQpID09IHsnYSc6IDIsICduYW1lZCc6IHsneCc6IDR9LCAnYic6IDEsICdwb3MnOiAoKX0KKyAgICBUcnVlCiAgICAgPj4+IGdldGNhbGxhcmdzKGYpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgIC4uLgotICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGF0IGxlYXN0IDEgYXJndW1lbnQgKDAgZ2l2ZW4pCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJwogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gbm90ZTo6CisgICAgICBDb25zaWRlciB1c2luZyB0aGUgbmV3IDptZXRoOmBTaWduYXR1cmUuYmluZGAgaW5zdGVhZC4KKworCisuLiBmdW5jdGlvbjo6IGdldGNsb3N1cmV2YXJzKGZ1bmMpCisKKyAgIEdldCB0aGUgbWFwcGluZyBvZiBleHRlcm5hbCBuYW1lIHJlZmVyZW5jZXMgaW4gYSBQeXRob24gZnVuY3Rpb24gb3IKKyAgIG1ldGhvZCAqZnVuYyogdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuIEEKKyAgIDp0ZXJtOmBuYW1lZCB0dXBsZWAgYGBDbG9zdXJlVmFycyhub25sb2NhbHMsIGdsb2JhbHMsIGJ1aWx0aW5zLCB1bmJvdW5kKWBgCisgICBpcyByZXR1cm5lZC4gKm5vbmxvY2FscyogbWFwcyByZWZlcmVuY2VkIG5hbWVzIHRvIGxleGljYWwgY2xvc3VyZQorICAgdmFyaWFibGVzLCAqZ2xvYmFscyogdG8gdGhlIGZ1bmN0aW9uJ3MgbW9kdWxlIGdsb2JhbHMgYW5kICpidWlsdGlucyogdG8KKyAgIHRoZSBidWlsdGlucyB2aXNpYmxlIGZyb20gdGhlIGZ1bmN0aW9uIGJvZHkuICp1bmJvdW5kKiBpcyB0aGUgc2V0IG9mIG5hbWVzCisgICByZWZlcmVuY2VkIGluIHRoZSBmdW5jdGlvbiB0aGF0IGNvdWxkIG5vdCBiZSByZXNvbHZlZCBhdCBhbGwgZ2l2ZW4gdGhlCisgICBjdXJyZW50IG1vZHVsZSBnbG9iYWxzIGFuZCBidWlsdGlucy4KKworICAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYgKmZ1bmMqIGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbiBvciBtZXRob2QuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIF9pbnNwZWN0LXN0YWNrOgogCkBAIC02NDMsMyArOTU4LDI3IEBACiAgICAgKiBHRU5fQ0xPU0VEOiBFeGVjdXRpb24gaGFzIGNvbXBsZXRlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKK1RoZSBjdXJyZW50IGludGVybmFsIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgY2FuIGFsc28gYmUgcXVlcmllZC4gVGhpcyBpcworbW9zdGx5IHVzZWZ1bCBmb3IgdGVzdGluZyBwdXJwb3NlcywgdG8gZW5zdXJlIHRoYXQgaW50ZXJuYWwgc3RhdGUgaXMgYmVpbmcKK3VwZGF0ZWQgYXMgZXhwZWN0ZWQ6CisKKy4uIGZ1bmN0aW9uOjogZ2V0Z2VuZXJhdG9ybG9jYWxzKGdlbmVyYXRvcikKKworICAgR2V0IHRoZSBtYXBwaW5nIG9mIGxpdmUgbG9jYWwgdmFyaWFibGVzIGluICpnZW5lcmF0b3IqIHRvIHRoZWlyIGN1cnJlbnQKKyAgIHZhbHVlcy4gIEEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB0aGF0IG1hcHMgZnJvbSB2YXJpYWJsZSBuYW1lcyB0byB2YWx1ZXMuCisgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGNhbGxpbmcgOmZ1bmM6YGxvY2Fsc2AgaW4gdGhlIGJvZHkgb2YgdGhlCisgICBnZW5lcmF0b3IsIGFuZCBhbGwgdGhlIHNhbWUgY2F2ZWF0cyBhcHBseS4KKworICAgSWYgKmdlbmVyYXRvciogaXMgYSA6dGVybTpgZ2VuZXJhdG9yYCB3aXRoIG5vIGN1cnJlbnRseSBhc3NvY2lhdGVkIGZyYW1lLAorICAgdGhlbiBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkLiAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICpnZW5lcmF0b3IqIGlzIG5vdCBhIFB5dGhvbiBnZW5lcmF0b3Igb2JqZWN0LgorCisgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gcmVsaWVzIG9uIHRoZSBnZW5lcmF0b3IgZXhwb3NpbmcgYSBQeXRob24gc3RhY2sgZnJhbWUKKyAgICAgIGZvciBpbnRyb3NwZWN0aW9uLCB3aGljaCBpc24ndCBndWFyYW50ZWVkIHRvIGJlIHRoZSBjYXNlIGluIGFsbAorICAgICAgaW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbi4gSW4gc3VjaCBjYXNlcywgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cworICAgICAgcmV0dXJuIGFuIGVtcHR5IGRpY3Rpb25hcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0IGIvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0CmluZGV4IDZmYTc4NzMuLmI4OTUwYmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QKQEAgLTIzLDEwICsyMywxMiBAQAogICAgY2dpLnJzdAogICAgY2dpdGIucnN0CiAgICB3c2dpcmVmLnJzdAorICAgdXJsbGliLnJzdAogICAgdXJsbGliLnJlcXVlc3QucnN0CiAgICB1cmxsaWIucGFyc2UucnN0CiAgICB1cmxsaWIuZXJyb3IucnN0CiAgICB1cmxsaWIucm9ib3RwYXJzZXIucnN0CisgICBodHRwLnJzdAogICAgaHR0cC5jbGllbnQucnN0CiAgICBmdHBsaWIucnN0CiAgICBwb3BsaWIucnN0CkBAIC00MCw1ICs0Miw3IEBACiAgICBodHRwLnNlcnZlci5yc3QKICAgIGh0dHAuY29va2llcy5yc3QKICAgIGh0dHAuY29va2llamFyLnJzdAorICAgeG1scnBjLnJzdAogICAgeG1scnBjLmNsaWVudC5yc3QKICAgIHhtbHJwYy5zZXJ2ZXIucnN0CisgICBpcGFkZHJlc3MucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pby5yc3QgYi9Eb2MvbGlicmFyeS9pby5yc3QKaW5kZXggMTkzOTM1Mi4uOThlMDM1OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lvLnJzdApAQCAtMzcsNiArMzcsMTAgQEAKIHdpbGwgcmFpc2UgYSBgYFR5cGVFcnJvcmBgLiAgU28gd2lsbCBnaXZpbmcgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgdG8gdGhlCiBgYHdyaXRlKClgYCBtZXRob2Qgb2YgYSB0ZXh0IHN0cmVhbS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIE9wZXJhdGlvbnMgdGhhdCB1c2VkIHRvIHJhaXNlIDpleGM6YElPRXJyb3JgIG5vdyByYWlzZSA6ZXhjOmBPU0Vycm9yYCwgc2luY2UKKyAgIDpleGM6YElPRXJyb3JgIGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiBUZXh0IEkvTwogXl5eXl5eXl4KQEAgLTU1LDcgKzU5LDcgQEAKIAogICAgZiA9IGlvLlN0cmluZ0lPKCJzb21lIGluaXRpYWwgdGV4dCBkYXRhIikKIAotVGhlIHRleHQgc3RyZWFtIEFQSSBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUKK1RoZSB0ZXh0IHN0cmVhbSBBUEkgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZgogOmNsYXNzOmBUZXh0SU9CYXNlYC4KIAogCkBAIC0xMTMsMjEgKzExNywxMyBAQAogCiAuLiBleGNlcHRpb246OiBCbG9ja2luZ0lPRXJyb3IKIAotICAgRXJyb3IgcmFpc2VkIHdoZW4gYmxvY2tpbmcgd291bGQgb2NjdXIgb24gYSBub24tYmxvY2tpbmcgc3RyZWFtLiAgSXQgaW5oZXJpdHMKLSAgIDpleGM6YElPRXJyb3JgLgotCi0gICBJbiBhZGRpdGlvbiB0byB0aG9zZSBvZiA6ZXhjOmBJT0Vycm9yYCwgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBoYXMgb25lCi0gICBhdHRyaWJ1dGU6Ci0KLSAgIC4uIGF0dHJpYnV0ZTo6IGNoYXJhY3RlcnNfd3JpdHRlbgotCi0gICAgICBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbQotICAgICAgYmVmb3JlIGl0IGJsb2NrZWQuCisgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBhbGlhcyBmb3IgdGhlIGJ1aWx0aW4gOmV4YzpgQmxvY2tpbmdJT0Vycm9yYAorICAgZXhjZXB0aW9uLgogCiAKIC4uIGV4Y2VwdGlvbjo6IFVuc3VwcG9ydGVkT3BlcmF0aW9uCiAKLSAgIEFuIGV4Y2VwdGlvbiBpbmhlcml0aW5nIDpleGM6YElPRXJyb3JgIGFuZCA6ZXhjOmBWYWx1ZUVycm9yYCB0aGF0IGlzIHJhaXNlZAorICAgQW4gZXhjZXB0aW9uIGluaGVyaXRpbmcgOmV4YzpgT1NFcnJvcmAgYW5kIDpleGM6YFZhbHVlRXJyb3JgIHRoYXQgaXMgcmFpc2VkCiAgICB3aGVuIGFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyBjYWxsZWQgb24gYSBzdHJlYW0uCiAKIApAQCAtMjI1LDggKzIyMSw4IEBACiAgICBFdmVuIHRob3VnaCA6Y2xhc3M6YElPQmFzZWAgZG9lcyBub3QgZGVjbGFyZSA6bWV0aDpgcmVhZGAsIDptZXRoOmByZWFkaW50b2AsCiAgICBvciA6bWV0aDpgd3JpdGVgIGJlY2F1c2UgdGhlaXIgc2lnbmF0dXJlcyB3aWxsIHZhcnksIGltcGxlbWVudGF0aW9ucyBhbmQKICAgIGNsaWVudHMgc2hvdWxkIGNvbnNpZGVyIHRob3NlIG1ldGhvZHMgcGFydCBvZiB0aGUgaW50ZXJmYWNlLiAgQWxzbywKLSAgIGltcGxlbWVudGF0aW9ucyBtYXkgcmFpc2UgYSA6ZXhjOmBJT0Vycm9yYCB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3QKLSAgIHN1cHBvcnQgYXJlIGNhbGxlZC4KKyAgIGltcGxlbWVudGF0aW9ucyBtYXkgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCAob3IgOmV4YzpgVW5zdXBwb3J0ZWRPcGVyYXRpb25gKQorICAgd2hlbiBvcGVyYXRpb25zIHRoZXkgZG8gbm90IHN1cHBvcnQgYXJlIGNhbGxlZC4KIAogICAgVGhlIGJhc2ljIHR5cGUgdXNlZCBmb3IgYmluYXJ5IGRhdGEgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8gYSBmaWxlIGlzCiAgICA6Y2xhc3M6YGJ5dGVzYC4gIDpjbGFzczpgYnl0ZWFycmF5YFxzIGFyZSBhY2NlcHRlZCB0b28sIGFuZCBpbiBzb21lIGNhc2VzCkBAIC0yMzQsMTUgKzIzMCwxNSBAQAogICAgOmNsYXNzOmBzdHJgIGRhdGEuCiAKICAgIE5vdGUgdGhhdCBjYWxsaW5nIGFueSBtZXRob2QgKGV2ZW4gaW5xdWlyaWVzKSBvbiBhIGNsb3NlZCBzdHJlYW0gaXMKLSAgIHVuZGVmaW5lZC4gIEltcGxlbWVudGF0aW9ucyBtYXkgcmFpc2UgOmV4YzpgSU9FcnJvcmAgaW4gdGhpcyBjYXNlLgorICAgdW5kZWZpbmVkLiAgSW1wbGVtZW50YXRpb25zIG1heSByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpbiB0aGlzIGNhc2UuCiAKLSAgIElPQmFzZSAoYW5kIGl0cyBzdWJjbGFzc2VzKSBzdXBwb3J0cyB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIG1lYW5pbmcgdGhhdCBhbgotICAgOmNsYXNzOmBJT0Jhc2VgIG9iamVjdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB5aWVsZGluZyB0aGUgbGluZXMgaW4gYSBzdHJlYW0uCi0gICBMaW5lcyBhcmUgZGVmaW5lZCBzbGlnaHRseSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgc3RyZWFtIGlzCi0gICBhIGJpbmFyeSBzdHJlYW0gKHlpZWxkaW5nIGJ5dGVzKSwgb3IgYSB0ZXh0IHN0cmVhbSAoeWllbGRpbmcgY2hhcmFjdGVyCi0gICBzdHJpbmdzKS4gIFNlZSA6bWV0aDpgfklPQmFzZS5yZWFkbGluZWAgYmVsb3cuCisgICA6Y2xhc3M6YElPQmFzZWAgKGFuZCBpdHMgc3ViY2xhc3Nlcykgc3VwcG9ydHMgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nCisgICB0aGF0IGFuIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEKKyAgIHN0cmVhbS4gIExpbmVzIGFyZSBkZWZpbmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICAgc3RyZWFtIGlzIGEgYmluYXJ5IHN0cmVhbSAoeWllbGRpbmcgYnl0ZXMpLCBvciBhIHRleHQgc3RyZWFtICh5aWVsZGluZworICAgY2hhcmFjdGVyIHN0cmluZ3MpLiAgU2VlIDptZXRoOmB+SU9CYXNlLnJlYWRsaW5lYCBiZWxvdy4KIAotICAgSU9CYXNlIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgSU9CYXNlYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgSW4gdGhpcyBleGFtcGxlLCAqZmlsZSogaXMgY2xvc2VkIGFmdGVyIHRoZQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCdzIHN1aXRlIGlzIGZpbmlzaGVkLS0tZXZlbiBpZiBhbiBleGNlcHRpb24gb2NjdXJzOjoKIApAQCAtMjYyLDEyICsyNTgsMTIgQEAKIAogICAgLi4gYXR0cmlidXRlOjogY2xvc2VkCiAKLSAgICAgIFRydWUgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KIAogICAgLi4gbWV0aG9kOjogZmlsZW5vKCkKIAogICAgICAgUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikgb2YgdGhlIHN0cmVhbSBpZiBpdAotICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQorICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQogICAgICAgZGVzY3JpcHRvci4KIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQpAQCAtMjgzLDcgKzI3OSw3IEBACiAgICAuLiBtZXRob2Q6OiByZWFkYWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGNhbiBiZSByZWFkIGZyb20uICBJZiBGYWxzZSwgOm1ldGg6YHJlYWRgCi0gICAgICB3aWxsIHJhaXNlIDpleGM6YElPRXJyb3JgLgorICAgICAgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gbWV0aG9kOjogcmVhZGxpbmUobGltaXQ9LTEpCiAKQEAgLTMxOCwxMCArMzE0LDE1IEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKICAgICAgICAgIFRoZSBgYFNFRUtfKmBgIGNvbnN0YW50cy4KIAorICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIGNvdWxkIHN1cHBvcnQgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgICAgIDpkYXRhOmBvcy5TRUVLX0hPTEVgIG9yIDpkYXRhOmBvcy5TRUVLX0RBVEFgLiBUaGUgdmFsaWQgdmFsdWVzCisgICAgICAgICBmb3IgYSBmaWxlIGNvdWxkIGRlcGVuZCBvbiBpdCBiZWluZyBvcGVuIGluIHRleHQgb3IgYmluYXJ5IG1vZGUuCisKICAgIC4uIG1ldGhvZDo6IHNlZWthYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy4gIElmIGBgRmFsc2VgYCwKLSAgICAgIDptZXRoOmBzZWVrYCwgOm1ldGg6YHRlbGxgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCBhbmQgOm1ldGg6YHRydW5jYXRlYCB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiB0ZWxsKCkKIApAQCAtMzM5LDcgKzM0MCw3IEBACiAgICAuLiBtZXRob2Q6OiB3cml0YWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIHN1cHBvcnRzIHdyaXRpbmcuICBJZiBgYEZhbHNlYGAsCi0gICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlbGluZXMobGluZXMpCiAKQEAgLTM1OCw3ICszNTksNyBAQAogICAgKHRoaXMgaXMgbGVmdCB0byBCdWZmZXJlZCBJL08gYW5kIFRleHQgSS9PLCBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBwYWdlKS4KIAogICAgSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgZnJvbSA6Y2xhc3M6YElPQmFzZWAsCi0gICBSYXdJT0Jhc2UgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOmNsYXNzOmBSYXdJT0Jhc2VgIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCkBAIC0zNzgsMTggKzM3OSwxOCBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyCi0gICAgICBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KKyAgICAgIFJlYWQgdXAgdG8gYGBsZW4oYilgYCBieXRlcyBpbnRvIDpjbGFzczpgYnl0ZWFycmF5YCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KICAgICAgIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqLCB0byB0aGUgdW5kZXJseWluZyByYXcKLSAgICAgIHN0cmVhbSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIFRoaXMgY2FuIGJlIGxlc3MgdGhhbgotICAgICAgYGBsZW4oYilgYCwgZGVwZW5kaW5nIG9uIHNwZWNpZmljcyBvZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtLCBhbmQKLSAgICAgIGVzcGVjaWFsbHkgaWYgaXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBgYE5vbmVgYCBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIHJhdyBzdHJlYW0gaXMgc2V0IG5vdCB0byBibG9jayBhbmQgbm8gc2luZ2xlIGJ5dGUgY291bGQgYmUgcmVhZGlseQotICAgICAgd3JpdHRlbiB0byBpdC4KKyAgICAgIFdyaXRlIHRoZSBnaXZlbiA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiosIHRvIHRoZQorICAgICAgdW5kZXJseWluZyByYXcgc3RyZWFtIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4KKyAgICAgIGJlIGxlc3MgdGhhbiBgYGxlbihiKWBgLCBkZXBlbmRpbmcgb24gc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIHJhdworICAgICAgc3RyZWFtLCBhbmQgZXNwZWNpYWxseSBpZiBpdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4gIGBgTm9uZWBgIGlzCisgICAgICByZXR1cm5lZCBpZiB0aGUgcmF3IHN0cmVhbSBpcyBzZXQgbm90IHRvIGJsb2NrIGFuZCBubyBzaW5nbGUgYnl0ZSBjb3VsZAorICAgICAgYmUgcmVhZGlseSB3cml0dGVuIHRvIGl0LgogCiAKIC4uIGNsYXNzOjogQnVmZmVyZWRJT0Jhc2UKQEAgLTQzOSw4ICs0NDAsOCBAQAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCiAgICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKm4qIGJ5dGVzLiAgSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGBgTm9uZWBgLCBvcgotICAgICAgbmVnYXRpdmUsIGRhdGEgaXMgcmVhZCBhbmQgcmV0dXJuZWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuICBBbiBlbXB0eSBieXRlcwotICAgICAgb2JqZWN0IGlzIHJldHVybmVkIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIEFuIGVtcHR5CisgICAgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGF0IEVPRi4KIAogICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIHBvc2l0aXZlLCBhbmQgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBub3QKICAgICAgIGludGVyYWN0aXZlLCBtdWx0aXBsZSByYXcgcmVhZHMgbWF5IGJlIGlzc3VlZCB0byBzYXRpc2Z5IHRoZSBieXRlIGNvdW50CkBAIC00NjAsMjIgKzQ2MSwyMyBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICByZWFkLgorICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgIGJ5dGVzIHJlYWQuCiAKICAgICAgIExpa2UgOm1ldGg6YHJlYWRgLCBtdWx0aXBsZSByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwotICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyAnaW50ZXJhY3RpdmUnLgorICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyBpbnRlcmFjdGl2ZS4KIAogICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluCiAgICAgICBub24gYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlcgotICAgICAgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscwotICAgICAgYW4gOmV4YzpgSU9FcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKLSAgICAgIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZSB1bmRlcmx5aW5nCi0gICAgICBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5IHJlYXNvbnMuCisgICAgICBXcml0ZSB0aGUgZ2l2ZW4gOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgKmIqIGFuZAorICAgICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmCisgICAgICB0aGUgd3JpdGUgZmFpbHMgYW4gOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZQorICAgICAgYWN0dWFsIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZQorICAgICAgdW5kZXJseWluZyBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5CisgICAgICByZWFzb25zLgogCiAgICAgICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgZGF0YSBuZWVkZWQgdG8gYmUgd3JpdHRlbiB0byB0aGUgcmF3IHN0cmVhbSBidXQgaXQgY291bGRuJ3QgYWNjZXB0CkBAIC00ODUsNyArNDg3LDcgQEAKIFJhdyBGaWxlIEkvTwogXl5eXl5eXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsZUlPKG5hbWUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUpCisuLiBjbGFzczo6IEZpbGVJTyhuYW1lLCBtb2RlPSdyJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgOmNsYXNzOmBGaWxlSU9gIHJlcHJlc2VudHMgYW4gT1MtbGV2ZWwgZmlsZSBjb250YWluaW5nIGJ5dGVzIGRhdGEuCiAgICBJdCBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YFJhd0lPQmFzZWAgaW50ZXJmYWNlIChhbmQgdGhlcmVmb3JlIHRoZQpAQCAtNDkzLDIyICs0OTUsMzggQEAKIAogICAgVGhlICpuYW1lKiBjYW4gYmUgb25lIG9mIHR3byB0aGluZ3M6CiAKLSAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGZpbGUKLSAgICAgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CisgICAqIGEgY2hhcmFjdGVyIHN0cmluZyBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZQorICAgICBmaWxlIHdoaWNoIHdpbGwgYmUgb3BlbmVkOwogICAgKiBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGFuIGV4aXN0aW5nIE9TLWxldmVsIGZpbGUgZGVzY3JpcHRvcgogICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4KIAotICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgd3JpdGluZywKLSAgIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvcgotICAgd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQWRkIGEKKyAgIFRoZSAqbW9kZSogY2FuIGJlIGBgJ3InYGAsIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBmb3IgcmVhZGluZworICAgKGRlZmF1bHQpLCB3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiBUaGUgZmlsZSB3aWxsIGJlCisgICBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlCisgICB0cnVuY2F0ZWQgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKKyAgIGl0IGFscmVhZHkgZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nCisgICBpbXBsaWVzIHdyaXRpbmcsIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gYGAndydgYC4gQWRkIGEKICAgIGBgJysnYGAgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuCiAKICAgIFRoZSA6bWV0aDpgcmVhZGAgKHdoZW4gY2FsbGVkIHdpdGggYSBwb3NpdGl2ZSBhcmd1bWVudCksIDptZXRoOmByZWFkaW50b2AKICAgIGFuZCA6bWV0aDpgd3JpdGVgIG1ldGhvZHMgb24gdGhpcyBjbGFzcyB3aWxsIG9ubHkgbWFrZSBvbmUgc3lzdGVtIGNhbGwuCiAKKyAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aAorICAgKCpuYW1lKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nCisgICA6bW9kOmBvcy5vcGVuYCBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nCisgICBgYE5vbmVgYCkuCisKKyAgIFNlZSB0aGUgOmZ1bmM6YG9wZW5gIGJ1aWx0LWluIGZ1bmN0aW9uIGZvciBleGFtcGxlcyBvbiB1c2luZyB0aGUgKm9wZW5lcioKKyAgIHBhcmFtZXRlci4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIGZyb20gOmNsYXNzOmBJT0Jhc2VgIGFuZAogICAgOmNsYXNzOmBSYXdJT0Jhc2VgLCA6Y2xhc3M6YEZpbGVJT2AgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkYXRhCi0gICBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzOgorICAgYXR0cmlidXRlczoKIAogICAgLi4gYXR0cmlidXRlOjogbW9kZQogCkBAIC01NTYsNyArNTc0LDcgQEAKIAogICAgLi4gbWV0aG9kOjogZ2V0dmFsdWUoKQogCi0gICAgICBSZXR1cm4gYGBieXRlc2BgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyLgorICAgICAgUmV0dXJuIDpjbGFzczpgYnl0ZXNgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyLgogCiAgICAuLiBtZXRob2Q6OiByZWFkMSgpCiAKQEAgLTYwMCw3ICs2MTgsNyBAQAogCiAgICBBIGJ1ZmZlciBwcm92aWRpbmcgaGlnaGVyLWxldmVsIGFjY2VzcyB0byBhIHdyaXRlYWJsZSwgc2VxdWVudGlhbAogICAgOmNsYXNzOmBSYXdJT0Jhc2VgIG9iamVjdC4gIEl0IGluaGVyaXRzIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgLgotICAgV2hlbiB3cml0aW5nIHRvIHRoaXMgb2JqZWN0LCBkYXRhIGlzIG5vcm1hbGx5IGhlbGQgaW50byBhbiBpbnRlcm5hbAorICAgV2hlbiB3cml0aW5nIHRvIHRoaXMgb2JqZWN0LCBkYXRhIGlzIG5vcm1hbGx5IHBsYWNlZCBpbnRvIGFuIGludGVybmFsCiAgICBidWZmZXIuICBUaGUgYnVmZmVyIHdpbGwgYmUgd3JpdHRlbiBvdXQgdG8gdGhlIHVuZGVybHlpbmcgOmNsYXNzOmBSYXdJT0Jhc2VgCiAgICBvYmplY3QgdW5kZXIgdmFyaW91cyBjb25kaXRpb25zLCBpbmNsdWRpbmc6CiAKQEAgLTYxMyw4ICs2MzEsNiBAQAogICAgKnJhdyogc3RyZWFtLiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIHRoaXJkIGFyZ3VtZW50LCAqbWF4X2J1ZmZlcl9zaXplKiwgaXMgc3VwcG9ydGVkLCBidXQgdW51c2VkIGFuZCBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCBwcm92aWRlcyBvciBvdmVycmlkZXMgdGhlc2UgbWV0aG9kcyBpbiBhZGRpdGlvbiB0bwogICAgdGhvc2UgZnJvbSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBhbmQgOmNsYXNzOmBJT0Jhc2VgOgogCkBAIC02MjUsOSArNjQxLDEwIEBACiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKLSAgICAgIFdyaXRlIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICB3cml0dGVuLiAgV2hlbiBpbiBub24tYmxvY2tpbmcgbW9kZSwgYSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZAotICAgICAgaWYgdGhlIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0dGVuIG91dCBidXQgdGhlIHJhdyBzdHJlYW0gYmxvY2tzLgorICAgICAgV3JpdGUgdGhlIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QsICpiKiBhbmQgcmV0dXJuIHRoZQorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhCisgICAgICA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgYnVmZmVyIG5lZWRzIHRvIGJlIHdyaXR0ZW4gb3V0IGJ1dAorICAgICAgdGhlIHJhdyBzdHJlYW0gYmxvY2tzLgogCiAKIC4uIGNsYXNzOjogQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKQpAQCAtNjQwLDggKzY1Nyw2IEBACiAgICBpbiB0aGUgZmlyc3QgYXJndW1lbnQuICBJZiB0aGUgKmJ1ZmZlcl9zaXplKiBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvCiAgICA6ZGF0YTpgREVGQVVMVF9CVUZGRVJfU0laRWAuCiAKLSAgIEEgdGhpcmQgYXJndW1lbnQsICptYXhfYnVmZmVyX3NpemUqLCBpcyBzdXBwb3J0ZWQsIGJ1dCB1bnVzZWQgYW5kIGRlcHJlY2F0ZWQuCi0KICAgIDpjbGFzczpgQnVmZmVyZWRSYW5kb21gIGlzIGNhcGFibGUgb2YgYW55dGhpbmcgOmNsYXNzOmBCdWZmZXJlZFJlYWRlcmAgb3IKICAgIDpjbGFzczpgQnVmZmVyZWRXcml0ZXJgIGNhbiBkby4KIApAQCAtNjU2LDkgKzY3MSw2IEBACiAgICB3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIGZvdXJ0aCBhcmd1bWVudCwgKm1heF9idWZmZXJfc2l6ZSosIGlzIHN1cHBvcnRlZCwgYnV0IHVudXNlZCBhbmQKLSAgIGRlcHJlY2F0ZWQuCi0KICAgIDpjbGFzczpgQnVmZmVyZWRSV1BhaXJgIGltcGxlbWVudHMgYWxsIG9mIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgXCdzIG1ldGhvZHMKICAgIGV4Y2VwdCBmb3IgOm1ldGg6YH5CdWZmZXJlZElPQmFzZS5kZXRhY2hgLCB3aGljaCByYWlzZXMKICAgIDpleGM6YFVuc3VwcG9ydGVkT3BlcmF0aW9uYC4KQEAgLTcwMSw3ICs3MTMsNyBAQAogCiAgICAgICBUaGUgdW5kZXJseWluZyBiaW5hcnkgYnVmZmVyIChhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgIGluc3RhbmNlKSB0aGF0CiAgICAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIGRlYWxzIHdpdGguICBUaGlzIGlzIG5vdCBwYXJ0IG9mIHRoZQotICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBBUEkgYW5kIG1heSBub3QgZXhpc3Qgb24gc29tZSBpbXBsZW1lbnRhdGlvbnMuCisgICAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIEFQSSBhbmQgbWF5IG5vdCBleGlzdCBpbiBzb21lIGltcGxlbWVudGF0aW9ucy4KIAogICAgLi4gbWV0aG9kOjogZGV0YWNoKCkKIApAQCAtNzYxLDEzICs3NzMsMTUgQEAKICAgICAgIHdyaXR0ZW4uCiAKIAotLi4gY2xhc3M6OiBUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgbGluZV9idWZmZXJpbmc9RmFsc2UpCisuLiBjbGFzczo6IFRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpCiAKICAgIEEgYnVmZmVyZWQgdGV4dCBzdHJlYW0gb3ZlciBhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgIGJpbmFyeSBzdHJlYW0uCiAgICBJdCBpbmhlcml0cyA6Y2xhc3M6YFRleHRJT0Jhc2VgLgogCiAgICAqZW5jb2RpbmcqIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHRoZSBzdHJlYW0gd2lsbCBiZSBkZWNvZGVkIG9yCi0gICBlbmNvZGVkIHdpdGguICBJdCBkZWZhdWx0cyB0byA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nYC4KKyAgIGVuY29kZWQgd2l0aC4gIEl0IGRlZmF1bHRzIHRvCisgICA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAuCiAKICAgICplcnJvcnMqIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyBob3cgZW5jb2RpbmcgYW5kIGRlY29kaW5nCiAgICBlcnJvcnMgYXJlIHRvIGJlIGhhbmRsZWQuICBQYXNzIGBgJ3N0cmljdCdgYCB0byByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgCkBAIC04MDQsNiArODE4LDE5IEBACiAgICBJZiAqbGluZV9idWZmZXJpbmcqIGlzIGBgVHJ1ZWBgLCA6bWV0aDpgZmx1c2hgIGlzIGltcGxpZWQgd2hlbiBhIGNhbGwgdG8KICAgIHdyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuCiAKKyAgIElmICp3cml0ZV90aHJvdWdoKiBpcyBgYFRydWVgYCwgY2FsbHMgdG8gOm1ldGg6YHdyaXRlYCBhcmUgZ3VhcmFudGVlZAorICAgbm90IHRvIGJlIGJ1ZmZlcmVkOiBhbnkgZGF0YSB3cml0dGVuIG9uIHRoZSA6Y2xhc3M6YFRleHRJT1dyYXBwZXJgCisgICBvYmplY3QgaXMgaW1tZWRpYXRlbHkgaGFuZGxlZCB0byBpdHMgdW5kZXJseWluZyBiaW5hcnkgKmJ1ZmZlciouCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKndyaXRlX3Rocm91Z2gqIGFyZ3VtZW50IGhhcyBiZWVuIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIGRlZmF1bHQgKmVuY29kaW5nKiBpcyBub3cgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpYGAKKyAgICAgIGluc3RlYWQgb2YgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKWBgLiBEb24ndCBjaGFuZ2UgdGVtcG9yYXJ5IHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIHVzaW5nIDpmdW5jOmBsb2NhbGUuc2V0bG9jYWxlYCwgdXNlIHRoZSBjdXJyZW50IGxvY2FsZQorICAgICAgZW5jb2RpbmcgaW5zdGVhZCBvZiB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcuCisKICAgIDpjbGFzczpgVGV4dElPV3JhcHBlcmAgcHJvdmlkZXMgb25lIGF0dHJpYnV0ZSBpbiBhZGRpdGlvbiB0byB0aG9zZSBvZgogICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBhbmQgaXRzIHBhcmVudHM6CiAKQEAgLTg3MCw4ICs4OTcsOCBAQAoga2luZCBvZiBJL08gd2hpY2ggaXMgcGVyZm9ybWVkLiAgRm9yIGV4YW1wbGUsIG9uIHNvbWUgbW9kZXJuIE9TZXMgc3VjaCBhcyBMaW51eCwKIHVuYnVmZmVyZWQgZGlzayBJL08gY2FuIGJlIGFzIGZhc3QgYXMgYnVmZmVyZWQgSS9PLiAgVGhlIGJvdHRvbSBsaW5lLCBob3dldmVyLAogaXMgdGhhdCBidWZmZXJlZCBJL08gb2ZmZXJzIHByZWRpY3RhYmxlIHBlcmZvcm1hbmNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtCi1hbmQgdGhlIGJhY2tpbmcgZGV2aWNlLiAgVGhlcmVmb3JlLCBpdCBpcyBtb3N0IGFsd2F5cyBwcmVmZXJhYmxlIHRvIHVzZSBidWZmZXJlZAotSS9PIHJhdGhlciB0aGFuIHVuYnVmZmVyZWQgSS9PIGZvciBiaW5hcnkgZGF0YWwKK2FuZCB0aGUgYmFja2luZyBkZXZpY2UuICBUaGVyZWZvcmUsIGl0IGlzIGFsbW9zdCBhbHdheXMgcHJlZmVyYWJsZSB0byB1c2UKK2J1ZmZlcmVkIEkvTyByYXRoZXIgdGhhbiB1bmJ1ZmZlcmVkIEkvTyBmb3IgYmluYXJ5IGRhdGEuCiAKIFRleHQgSS9PCiBeXl5eXl5eXgpAQCAtOTA2LDggKzkzMyw4IEBACiA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCwgOmNsYXNzOmBCdWZmZXJlZFJhbmRvbWAgYW5kIDpjbGFzczpgQnVmZmVyZWRSV1BhaXJgKQogYXJlIG5vdCByZWVudHJhbnQuICBXaGlsZSByZWVudHJhbnQgY2FsbHMgd2lsbCBub3QgaGFwcGVuIGluIG5vcm1hbCBzaXR1YXRpb25zLAogdGhleSBjYW4gYXJpc2UgZnJvbSBkb2luZyBJL08gaW4gYSA6bW9kOmBzaWduYWxgIGhhbmRsZXIuICBJZiBhIHRocmVhZCB0cmllcyB0bwotcmVudGVyIGEgYnVmZmVyZWQgb2JqZWN0IHdoaWNoIGl0IGlzIGFscmVhZHkgYWNjZXNzaW5nLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMKLXJhaXNlZC4gIE5vdGUgdGhpcyBkb2Vzbid0IHByb2hpYml0IGEgZGlmZmVyZW50IHRocmVhZCBmcm9tIGVudGVyaW5nIHRoZQorcmUtZW50ZXIgYSBidWZmZXJlZCBvYmplY3Qgd2hpY2ggaXQgaXMgYWxyZWFkeSBhY2Nlc3NpbmcsIGEgOmV4YzpgUnVudGltZUVycm9yYAoraXMgcmFpc2VkLiAgTm90ZSB0aGlzIGRvZXNuJ3QgcHJvaGliaXQgYSBkaWZmZXJlbnQgdGhyZWFkIGZyb20gZW50ZXJpbmcgdGhlCiBidWZmZXJlZCBvYmplY3QuCiAKIFRoZSBhYm92ZSBpbXBsaWNpdGx5IGV4dGVuZHMgdG8gdGV4dCBmaWxlcywgc2luY2UgdGhlIDpmdW5jOmBvcGVuKClgIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0IGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQ4NGFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdApAQCAtMCwwICsxLDgwNCBAQAorOm1vZDpgaXBhZGRyZXNzYCAtLS0gSVB2NC9JUHY2IG1hbmlwdWxhdGlvbiBsaWJyYXJ5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogaXBhZGRyZXNzCisgICA6c3lub3BzaXM6IElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeS4KKy4uIG1vZHVsZWF1dGhvcjo6IFBldGVyIE1vb2R5CisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2lwYWRkcmVzcy5weWAKKworLS0tLS0tLS0tLS0tLS0KKworLi4gbm90ZTo6CisKKyAgIFRoZSBgYGlwYWRkcmVzc2BgIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCisgICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQorICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCisgICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KKworOm1vZDpgaXBhZGRyZXNzYCBwcm92aWRlcyB0aGUgY2FwYWJpbGl0aWVzIHRvIGNyZWF0ZSwgbWFuaXB1bGF0ZSBhbmQKK29wZXJhdGUgb24gSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzLgorCitUaGUgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGluIHRoaXMgbW9kdWxlIG1ha2UgaXQgc3RyYWlnaHRmb3J3YXJkIHRvIGhhbmRsZQordmFyaW91cyB0YXNrcyByZWxhdGVkIHRvIElQIGFkZHJlc3NlcywgaW5jbHVkaW5nIGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHR3bworaG9zdHMgYXJlIG9uIHRoZSBzYW1lIHN1Ym5ldCwgaXRlcmF0aW5nIG92ZXIgYWxsIGhvc3RzIGluIGEgcGFydGljdWxhcgorc3VibmV0LCBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCBhIHN0cmluZyByZXByZXNlbnRzIGEgdmFsaWQgSVAgYWRkcmVzcyBvcgorbmV0d29yayBkZWZpbml0aW9uLCBhbmQgc28gb24uCisKK1RoaXMgaXMgdGhlIGZ1bGwgbW9kdWxlIEFQSSByZWZlcmVuY2UgLSBmb3IgYW4gb3ZlcnZpZXcgYW5kIGludHJvZHVjdGlvbiwKK3NlZSA6cmVmOmBpcGFkZHJlc3MtaG93dG9gLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitDb252ZW5pZW5jZSBmYWN0b3J5IGZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YGlwYWRkcmVzc2AgbW9kdWxlIHByb3ZpZGVzIGZhY3RvcnkgZnVuY3Rpb25zIHRvIGNvbnZlbmllbnRseSBjcmVhdGUKK0lQIGFkZHJlc3NlcywgbmV0d29ya3MgYW5kIGludGVyZmFjZXM6CisKKy4uIGZ1bmN0aW9uOjogaXBfYWRkcmVzcyhhZGRyZXNzKQorCisgICBSZXR1cm4gYW4gOmNsYXNzOmBJUHY0QWRkcmVzc2Agb3IgOmNsYXNzOmBJUHY2QWRkcmVzc2Agb2JqZWN0IGRlcGVuZGluZyBvbgorICAgdGhlIElQIGFkZHJlc3MgcGFzc2VkIGFzIGFyZ3VtZW50LiAgRWl0aGVyIElQdjQgb3IgSVB2NiBhZGRyZXNzZXMgbWF5IGJlCisgICBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuCisgICBBIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NAorICAgb3IgSVB2NiBhZGRyZXNzLgorCisuLiB0ZXN0c2V0dXA6OgorICAgPj4+IGltcG9ydCBpcGFkZHJlc3MKKyAgID4+PiBmcm9tIGlwYWRkcmVzcyBpbXBvcnQgKGlwX25ldHdvcmssIElQdjRBZGRyZXNzLCBJUHY0SW50ZXJmYWNlLAorICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgSVB2NE5ldHdvcmspCisKKzo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OicpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisKKworLi4gZnVuY3Rpb246OiBpcF9uZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKQorCisgICBSZXR1cm4gYW4gOmNsYXNzOmBJUHY0TmV0d29ya2Agb3IgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0IGRlcGVuZGluZyBvbgorICAgdGhlIElQIGFkZHJlc3MgcGFzc2VkIGFzIGFyZ3VtZW50LiAgKmFkZHJlc3MqIGlzIGEgc3RyaW5nIG9yIGludGVnZXIKKyAgIHJlcHJlc2VudGluZyB0aGUgSVAgbmV0d29yay4gIEVpdGhlciBJUHY0IG9yIElQdjYgbmV0d29ya3MgbWF5IGJlIHN1cHBsaWVkOworICAgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuICAqc3RyaWN0KgorICAgaXMgcGFzc2VkIHRvIDpjbGFzczpgSVB2NE5ldHdvcmtgIG9yIDpjbGFzczpgSVB2Nk5ldHdvcmtgIGNvbnN0cnVjdG9yLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBJUHY0IG9yCisgICBJUHY2IGFkZHJlc3MsIG9yIGlmIHRoZSBuZXR3b3JrIGhhcyBob3N0IGJpdHMgc2V0LgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4xNjguMC4wLzI4JykKKyAgIElQdjROZXR3b3JrKCcxOTIuMTY4LjAuMC8yOCcpCisKKworLi4gZnVuY3Rpb246OiBpcF9pbnRlcmZhY2UoYWRkcmVzcykKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NEludGVyZmFjZWAgb3IgOmNsYXNzOmBJUHY2SW50ZXJmYWNlYCBvYmplY3QgZGVwZW5kaW5nCisgICBvbiB0aGUgSVAgYWRkcmVzcyBwYXNzZWQgYXMgYXJndW1lbnQuICAqYWRkcmVzcyogaXMgYSBzdHJpbmcgb3IgaW50ZWdlcgorICAgcmVwcmVzZW50aW5nIHRoZSBJUCBhZGRyZXNzLiAgRWl0aGVyIElQdjQgb3IgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOworICAgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIElQdjQgb3IKKyAgIElQdjYgYWRkcmVzcy4KKworT25lIGRvd25zaWRlIG9mIHRoZXNlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBpcyB0aGF0IHRoZSBuZWVkIHRvIGhhbmRsZSBib3RoCitJUHY0IGFuZCBJUHY2IGZvcm1hdHMgbWVhbnMgdGhhdCBlcnJvciBtZXNzYWdlcyBwcm92aWRlIG1pbmltYWwKK2luZm9ybWF0aW9uIG9uIHRoZSBwcmVjaXNlIGVycm9yLCBhcyB0aGUgZnVuY3Rpb25zIGRvbid0IGtub3cgd2hldGhlciB0aGUKK0lQdjQgb3IgSVB2NiBmb3JtYXQgd2FzIGludGVuZGVkLiBNb3JlIGRldGFpbGVkIGVycm9yIHJlcG9ydGluZyBjYW4gYmUKK29idGFpbmVkIGJ5IGNhbGxpbmcgdGhlIGFwcHJvcHJpYXRlIHZlcnNpb24gc3BlY2lmaWMgY2xhc3MgY29uc3RydWN0b3JzCitkaXJlY3RseS4KKworCitJUCBBZGRyZXNzZXMKKy0tLS0tLS0tLS0tLQorCitBZGRyZXNzIG9iamVjdHMKK15eXl5eXl5eXl5eXl5eXgorCitUaGUgOmNsYXNzOmBJUHY0QWRkcmVzc2AgYW5kIDpjbGFzczpgSVB2NkFkZHJlc3NgIG9iamVjdHMgc2hhcmUgYSBsb3Qgb2YgY29tbW9uCithdHRyaWJ1dGVzLiAgU29tZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIG9ubHkgbWVhbmluZ2Z1bCBmb3IgSVB2NiBhZGRyZXNzZXMgYXJlCithbHNvIGltcGxlbWVudGVkIGJ5IDpjbGFzczpgSVB2NEFkZHJlc3NgIG9iamVjdHMsIGluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvCit3cml0ZSBjb2RlIHRoYXQgaGFuZGxlcyBib3RoIElQIHZlcnNpb25zIGNvcnJlY3RseS4KKworLi4gY2xhc3M6OiBJUHY0QWRkcmVzcyhhZGRyZXNzKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NCBhZGRyZXNzLiAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KKworICAgVGhlIGZvbGxvd2luZyBjb25zdGl0dXRlcyBhIHZhbGlkIElQdjQgYWRkcmVzczoKKworICAgMS4gQSBzdHJpbmcgaW4gZGVjaW1hbC1kb3Qgbm90YXRpb24sIGNvbnNpc3Rpbmcgb2YgZm91ciBkZWNpbWFsIGludGVnZXJzIGluCisgICAgICB0aGUgaW5jbHVzaXZlIHJhbmdlIDAtMjU1LCBzZXBhcmF0ZWQgYnkgZG90cyAoZS5nLiBgYDE5Mi4xNjguMC4xYGApLiBFYWNoCisgICAgICBpbnRlZ2VyIHJlcHJlc2VudHMgYW4gb2N0ZXQgKGJ5dGUpIGluIHRoZSBhZGRyZXNzLiBMZWFkaW5nIHplcm9lcyBhcmUKKyAgICAgIHRvbGVyYXRlZCBvbmx5IGZvciB2YWx1ZXMgbGVzcyB0aGVuIDggKGFzIHRoZXJlIGlzIG5vIGFtYmlndWl0eQorICAgICAgYmV0d2VlbiB0aGUgZGVjaW1hbCBhbmQgb2N0YWwgaW50ZXJwcmV0YXRpb25zIG9mIHN1Y2ggc3RyaW5ncykuCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDMyIGJpdHMuCisgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCA0IChtb3N0CisgICAgICBzaWduaWZpY2FudCBvY3RldCBmaXJzdCkuCisKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDMyMzIyMzU1MjEpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhiJ1x4QzBceEE4XHgwMFx4MDEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorCisgICAgICBUaGUgYXBwcm9wcmlhdGUgdmVyc2lvbiBudW1iZXI6IGBgNGBgIGZvciBJUHY0LCBgYDZgYCBmb3IgSVB2Ni4KKworICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorCisgICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGFkZHJlc3MgcmVwcmVzZW50YXRpb24gZm9yIHRoaXMKKyAgICAgIHZlcnNpb246IGBgMzJgYCBmb3IgSVB2NCwgYGAxMjhgYCBmb3IgSVB2Ni4KKworICAgICAgVGhlIHByZWZpeCBkZWZpbmVzIHRoZSBudW1iZXIgb2YgbGVhZGluZyBiaXRzIGluIGFuICBhZGRyZXNzIHRoYXQKKyAgICAgIGFyZSBjb21wYXJlZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYW4gYWRkcmVzcyBpcyBwYXJ0IG9mIGEKKyAgICAgIG5ldHdvcmsuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbXByZXNzZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGV4cGxvZGVkCisKKyAgICAgIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW4gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uIExlYWRpbmcgemVyb2VzCisgICAgICBhcmUgbmV2ZXIgaW5jbHVkZWQgaW4gdGhlIHJlcHJlc2VudGF0aW9uLgorCisgICAgICBBcyBJUHY0IGRvZXMgbm90IGRlZmluZSBhIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgYWRkcmVzc2VzIHdpdGggb2N0ZXRzCisgICAgICBzZXQgdG8gemVybywgdGhlc2UgdHdvIGF0dHJpYnV0ZXMgYXJlIGFsd2F5cyB0aGUgc2FtZSBhcyBgYHN0cihhZGRyKWBgCisgICAgICBmb3IgSVB2NCBhZGRyZXNzZXMuIEV4cG9zaW5nIHRoZXNlIGF0dHJpYnV0ZXMgbWFrZXMgaXQgZWFzaWVyIHRvCisgICAgICB3cml0ZSBkaXNwbGF5IGNvZGUgdGhhdCBjYW4gaGFuZGxlIGJvdGggSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhY2tlZAorCisgICAgICBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYWRkcmVzcyAtIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mCisgICAgICB0aGUgYXBwcm9wcmlhdGUgbGVuZ3RoIChtb3N0IHNpZ25pZmljYW50IG9jdGV0IGZpcnN0KS4gVGhpcyBpcyA0IGJ5dGVzCisgICAgICBmb3IgSVB2NCBhbmQgMTYgYnl0ZXMgZm9yIElQdjYuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4gIFNlZQorICAgICAgOlJGQzpgMzE3MWAgKGZvciBJUHY0KSBvciA6UkZDOmAyMzczYCAoZm9yIElQdjYpLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4gIFNlZQorICAgICAgOlJGQzpgMTkxOGAgKGZvciBJUHY0KSBvciA6UkZDOmA0MTkzYCAoZm9yIElQdjYpLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4gIFNlZSA6UkZDOmA1Mzc1YCAoZm9yIElQdjQpCisgICAgICBvciA6UkZDOmAyMzczYCAoZm9yIElQdjYpLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19yZXNlcnZlZAorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgLi4gYXR0cmlidXRlOjogaXNfbG9vcGJhY2sKKworICAgICAgYGBUcnVlYGAgaWYgdGhpcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuICBTZWUgOlJGQzpgMzMzMGAgKGZvciBJUHY0KQorICAgICAgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfbGlua19sb2NhbAorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbCB1c2FnZS4gIFNlZQorICAgICAgOlJGQzpgMzkyN2AuCisKKworLi4gY2xhc3M6OiBJUHY2QWRkcmVzcyhhZGRyZXNzKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NiBhZGRyZXNzLiAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KKworICAgVGhlIGZvbGxvd2luZyBjb25zdGl0dXRlcyBhIHZhbGlkIElQdjYgYWRkcmVzczoKKworICAgMS4gQSBzdHJpbmcgY29uc2lzdGluZyBvZiBlaWdodCBncm91cHMgb2YgZm91ciBoZXhhZGVjaW1hbCBkaWdpdHMsIGVhY2gKKyAgICAgIGdyb3VwIHJlcHJlc2VudGluZyAxNiBiaXRzLiAgVGhlIGdyb3VwcyBhcmUgc2VwYXJhdGVkIGJ5IGNvbG9ucy4KKyAgICAgIFRoaXMgZGVzY3JpYmVzIGFuICpleHBsb2RlZCogKGxvbmdoYW5kKSBub3RhdGlvbi4gIFRoZSBzdHJpbmcgY2FuCisgICAgICBhbHNvIGJlICpjb21wcmVzc2VkKiAoc2hvcnRoYW5kIG5vdGF0aW9uKSBieSB2YXJpb3VzIG1lYW5zLiAgU2VlCisgICAgICA6UkZDOmA0MjkxYCBmb3IgZGV0YWlscy4gIEZvciBleGFtcGxlLAorICAgICAgYGAiMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjBhYmM6MDAwNzowZGVmImBgIGNhbiBiZSBjb21wcmVzc2VkIHRvCisgICAgICBgYCI6OmFiYzo3OmRlZiJgYC4KKyAgIDIuIEFuIGludGVnZXIgdGhhdCBmaXRzIGludG8gMTI4IGJpdHMuCisgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCAxNiwgYmlnLWVuZGlhbi4KKworICAgPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKKworICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorCisgICBUaGUgc2hvcnQgZm9ybSBvZiB0aGUgYWRkcmVzcyByZXByZXNlbnRhdGlvbiwgd2l0aCBsZWFkaW5nIHplcm9lcyBpbgorICAgZ3JvdXBzIG9taXR0ZWQgYW5kIHRoZSBsb25nZXN0IHNlcXVlbmNlIG9mIGdyb3VwcyBjb25zaXN0aW5nIGVudGlyZWx5IG9mCisgICB6ZXJvZXMgY29sbGFwc2VkIHRvIGEgc2luZ2xlIGVtcHR5IGdyb3VwLgorCisgICBUaGlzIGlzIGFsc28gdGhlIHZhbHVlIHJldHVybmVkIGJ5IGBgc3RyKGFkZHIpYGAgZm9yIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorCisgICBUaGUgbG9uZyBmb3JtIG9mIHRoZSBhZGRyZXNzIHJlcHJlc2VudGF0aW9uLCB3aXRoIGFsbCBsZWFkaW5nIHplcm9lcyBhbmQKKyAgIGdyb3VwcyBjb25zaXN0aW5nIGVudGlyZWx5IG9mIHplcm9lcyBpbmNsdWRlZC4KKworICAgLi4gYXR0cmlidXRlOjogcGFja2VkCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19yZXNlcnZlZAorICAgLi4gYXR0cmlidXRlOjogaXNfbG9vcGJhY2sKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgUmVmZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGRvY3VtZW50YXRpb24gaW4KKyAgICAgIDpjbGFzczpgSVB2NEFkZHJlc3NgCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3NpdGVfbG9jYWwKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIHNpdGUtbG9jYWwgdXNhZ2UuICBOb3RlIHRoYXQKKyAgICAgIHRoZSBzaXRlLWxvY2FsIGFkZHJlc3Mgc3BhY2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSA6UkZDOmAzODc5YC4gVXNlCisgICAgICA6YXR0cjpgfklQdjRBZGRyZXNzLmlzX3ByaXZhdGVgIHRvIHRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGluIHRoZQorICAgICAgc3BhY2Ugb2YgdW5pcXVlIGxvY2FsIGFkZHJlc3NlcyBhcyBkZWZpbmVkIGJ5IDpSRkM6YDQxOTNgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpcHY0X21hcHBlZAorCisgICAgICBGb3IgYWRkcmVzc2VzIHRoYXQgYXBwZWFyIHRvIGJlIElQdjQgbWFwcGVkIGFkZHJlc3NlcyAoc3RhcnRpbmcgd2l0aAorICAgICAgYGA6OkZGRkYvOTZgYCksIHRoaXMgcHJvcGVydHkgd2lsbCByZXBvcnQgdGhlIGVtYmVkZGVkIElQdjQgYWRkcmVzcy4KKyAgICAgIEZvciBhbnkgb3RoZXIgYWRkcmVzcywgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGBgTm9uZWBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzaXh0b2ZvdXIKKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSA2dG80IGFkZHJlc3NlcyAgKHN0YXJ0aW5nIHdpdGgKKyAgICAgIGBgMjAwMjo6LzE2YGApIGFzIGRlZmluZWQgYnkgOlJGQzpgMzA1NmAsIHRoaXMgcHJvcGVydHkgd2lsbCByZXBvcnQKKyAgICAgIHRoZSBlbWJlZGRlZCBJUHY0IGFkZHJlc3MuICBGb3IgYW55IG90aGVyIGFkZHJlc3MsIHRoaXMgcHJvcGVydHkgd2lsbAorICAgICAgYmUgYGBOb25lYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHRlcmVkbworCisgICAgICBGb3IgYWRkcmVzc2VzIHRoYXQgYXBwZWFyIHRvIGJlIFRlcmVkbyBhZGRyZXNzZXMgKHN0YXJ0aW5nIHdpdGgKKyAgICAgIGBgMjAwMTo6LzMyYGApIGFzIGRlZmluZWQgYnkgOlJGQzpgNDM4MGAsIHRoaXMgcHJvcGVydHkgd2lsbCByZXBvcnQKKyAgICAgIHRoZSBlbWJlZGRlZCBgYChzZXJ2ZXIsIGNsaWVudClgYCBJUCBhZGRyZXNzIHBhaXIuICBGb3IgYW55IG90aGVyCisgICAgICBhZGRyZXNzLCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgYGBOb25lYGAuCisKKworQ29udmVyc2lvbiB0byBTdHJpbmdzIGFuZCBJbnRlZ2VycworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUbyBpbnRlcm9wZXJhdGUgd2l0aCBuZXR3b3JraW5nIGludGVyZmFjZXMgc3VjaCBhcyB0aGUgc29ja2V0IG1vZHVsZSwKK2FkZHJlc3NlcyBtdXN0IGJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIG9yIGludGVnZXJzLiBUaGlzIGlzIGhhbmRsZWQgdXNpbmcKK3RoZSA6ZnVuYzpgc3RyYCBhbmQgOmZ1bmM6YGludGAgYnVpbHRpbiBmdW5jdGlvbnM6OgorCisgICA+Pj4gc3RyKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKSkKKyAgICcxOTIuMTY4LjAuMScKKyAgID4+PiBpbnQoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpKQorICAgMzIzMjIzNTUyMQorICAgPj4+IHN0cihpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorICAgJzo6MScKKyAgID4+PiBpbnQoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKyAgIDEKKworCitPcGVyYXRvcnMKK15eXl5eXl5eXgorCitBZGRyZXNzIG9iamVjdHMgc3VwcG9ydCBzb21lIG9wZXJhdG9ycy4gIFVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCBvcGVyYXRvcnMgY2FuCitvbmx5IGJlIGFwcGxpZWQgYmV0d2VlbiBjb21wYXRpYmxlIG9iamVjdHMgKGkuZS4gSVB2NCB3aXRoIElQdjQsIElQdjYgd2l0aAorSVB2NikuCisKKworTG9naWNhbCBvcGVyYXRvcnMKKyIiIiIiIiIiIiIiIiIiIiIiCisKK0FkZHJlc3Mgb2JqZWN0cyBjYW4gYmUgY29tcGFyZWQgd2l0aCB0aGUgdXN1YWwgc2V0IG9mIGxvZ2ljYWwgb3BlcmF0b3JzLiAgU29tZQorZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpID4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICBUcnVlCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpID09IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgRmFsc2UKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgIT0gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICBUcnVlCisKKworQXJpdGhtZXRpYyBvcGVyYXRvcnMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK0ludGVnZXJzIGNhbiBiZSBhZGRlZCB0byBvciBzdWJ0cmFjdGVkIGZyb20gYWRkcmVzcyBvYmplY3RzLiAgU29tZSBleGFtcGxlczo6CisKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgKyAzCisgICBJUHY0QWRkcmVzcygnMTI3LjAuMC41JykKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgLSAzCisgICBJUHY0QWRkcmVzcygnMTI2LjI1NS4yNTUuMjU1JykKKyAgID4+PiBJUHY0QWRkcmVzcygnMjU1LjI1NS4yNTUuMjU1JykgKyAxCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3I6IDQyOTQ5NjcyOTYgKD49IDIqKjMyKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcworCisKK0lQIE5ldHdvcmsgZGVmaW5pdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3RzIHByb3ZpZGUgYSBtZWNoYW5pc20KK2ZvciBkZWZpbmluZyBhbmQgaW5zcGVjdGluZyBJUCBuZXR3b3JrIGRlZmluaXRpb25zLiAgQSBuZXR3b3JrIGRlZmluaXRpb24KK2NvbnNpc3RzIG9mIGEgKm1hc2sqIGFuZCBhICpuZXR3b3JrIGFkZHJlc3MqLCBhbmQgYXMgc3VjaCBkZWZpbmVzIGEgcmFuZ2Ugb2YKK0lQIGFkZHJlc3NlcyB0aGF0IGVxdWFsIHRoZSBuZXR3b3JrIGFkZHJlc3Mgd2hlbiBtYXNrZWQgKGJpbmFyeSBBTkQpIHdpdGggdGhlCittYXNrLiAgRm9yIGV4YW1wbGUsIGEgbmV0d29yayBkZWZpbml0aW9uIHdpdGggdGhlIG1hc2sgYGAyNTUuMjU1LjI1NS4wYGAgYW5kCit0aGUgbmV0d29yayBhZGRyZXNzIGBgMTkyLjE2OC4xLjBgYCBjb25zaXN0cyBvZiBJUCBhZGRyZXNzZXMgaW4gdGhlIGluY2x1c2l2ZQorcmFuZ2UgYGAxOTIuMTY4LjEuMGBgIHRvIGBgMTkyLjE2OC4xLjI1NWBgLgorCisKK1ByZWZpeCwgbmV0IG1hc2sgYW5kIGhvc3QgbWFzaworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZXJlIGFyZSBzZXZlcmFsIGVxdWl2YWxlbnQgd2F5cyB0byBzcGVjaWZ5IElQIG5ldHdvcmsgbWFza3MuICBBICpwcmVmaXgqCitgYC88bmJpdHM+YGAgaXMgYSBub3RhdGlvbiB0aGF0IGRlbm90ZXMgaG93IG1hbnkgaGlnaC1vcmRlciBiaXRzIGFyZSBzZXQgaW4KK3RoZSBuZXR3b3JrIG1hc2suICBBICpuZXQgbWFzayogaXMgYW4gSVAgYWRkcmVzcyB3aXRoIHNvbWUgbnVtYmVyIG9mCitoaWdoLW9yZGVyIGJpdHMgc2V0LiAgVGh1cyB0aGUgcHJlZml4IGBgLzI0YGAgaXMgZXF1aXZhbGVudCB0byB0aGUgbmV0IG1hc2sKK2BgMjU1LjI1NS4yNTUuMGBgIGluIElQdjQsIG9yIGBgZmZmZjpmZjAwOjpgYCBpbiBJUHY2LiAgSW4gYWRkaXRpb24sIGEKKypob3N0IG1hc2sqIGlzIHRoZSBsb2dpY2FsIGludmVyc2Ugb2YgYSAqbmV0IG1hc2sqLCBhbmQgaXMgc29tZXRpbWVzIHVzZWQKKyhmb3IgZXhhbXBsZSBpbiBDaXNjbyBhY2Nlc3MgY29udHJvbCBsaXN0cykgdG8gZGVub3RlIGEgbmV0d29yayBtYXNrLiAgVGhlCitob3N0IG1hc2sgZXF1aXZhbGVudCB0byBgYC8yNGBgIGluIElQdjQgaXMgYGAwLjAuMC4yNTVgYC4KKworCitOZXR3b3JrIG9iamVjdHMKK15eXl5eXl5eXl5eXl5eXgorCitBbGwgYXR0cmlidXRlcyBpbXBsZW1lbnRlZCBieSBhZGRyZXNzIG9iamVjdHMgYXJlIGltcGxlbWVudGVkIGJ5IG5ldHdvcmsKK29iamVjdHMgYXMgd2VsbC4gIEluIGFkZGl0aW9uLCBuZXR3b3JrIG9iamVjdHMgaW1wbGVtZW50IGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KK0FsbCBvZiB0aGVzZSBhcmUgY29tbW9uIGJldHdlZW4gOmNsYXNzOmBJUHY0TmV0d29ya2AgYW5kIDpjbGFzczpgSVB2Nk5ldHdvcmtgLAorc28gdG8gYXZvaWQgZHVwbGljYXRpb24gdGhleSBhcmUgb25seSBkb2N1bWVudGVkIGZvciA6Y2xhc3M6YElQdjROZXR3b3JrYC4KKworLi4gY2xhc3M6OiBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSkKKworICAgQ29uc3RydWN0IGFuIElQdjQgbmV0d29yayBkZWZpbml0aW9uLiAgKmFkZHJlc3MqIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgMS4gQSBzdHJpbmcgY29uc2lzdGluZyBvZiBhbiBJUCBhZGRyZXNzIGFuZCBhbiBvcHRpb25hbCBtYXNrLCBzZXBhcmF0ZWQgYnkKKyAgICAgIGEgc2xhc2ggKGBgL2BgKS4gIFRoZSBJUCBhZGRyZXNzIGlzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGFuZCB0aGUgbWFzaworICAgICAgY2FuIGJlIGVpdGhlciBhIHNpbmdsZSBudW1iZXIsIHdoaWNoIG1lYW5zIGl0J3MgYSAqcHJlZml4Kiwgb3IgYSBzdHJpbmcKKyAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgYWRkcmVzcy4gIElmIGl0J3MgdGhlIGxhdHRlciwgdGhlIG1hc2sgaXMKKyAgICAgIGludGVycHJldGVkIGFzIGEgKm5ldCBtYXNrKiBpZiBpdCBzdGFydHMgd2l0aCBhIG5vbi16ZXJvIGZpZWxkLCBvciBhcworICAgICAgYSAqaG9zdCBtYXNrKiBpZiBpdCBzdGFydHMgd2l0aCBhIHplcm8gZmllbGQuICBJZiBubyBtYXNrIGlzIHByb3ZpZGVkLAorICAgICAgaXQncyBjb25zaWRlcmVkIHRvIGJlIGBgLzMyYGAuCisKKyAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nICphZGRyZXNzKiBzcGVjaWZpY2F0aW9ucyBhcmUgZXF1aXZhbGVudDoKKyAgICAgIGBgMTkyLjE2OC4xLjAvMjRgYCwgYGAxOTIuMTY4LjEuMC8yNTUuMjU1LjI1NS4wYGAgYW5kCisgICAgICBgYDE5Mi4xNjguMS4wLzAuMC4wLjI1NWBgLgorCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDMyIGJpdHMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYQorICAgICAgc2luZ2xlLWFkZHJlc3MgbmV0d29yaywgd2l0aCB0aGUgbmV0d29yayBhZGRyZXNzIGJlaW5nICphZGRyZXNzKiBhbmQKKyAgICAgIHRoZSBtYXNrIGJlaW5nIGBgLzMyYGAuCisKKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDQsIGJpZy1lbmRpYW4uCisgICAgICBUaGUgaW50ZXJwcmV0YXRpb24gaXMgc2ltaWxhciB0byBhbiBpbnRlZ2VyICphZGRyZXNzKi4KKworICAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NAorICAgYWRkcmVzcy4gIEEgOmV4YzpgTmV0bWFza1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgbWFzayBpcyBub3QgdmFsaWQgZm9yCisgICBhbiBJUHY0IGFkZHJlc3MuCisKKyAgIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgIGFuZCBob3N0IGJpdHMgYXJlIHNldCBpbiB0aGUgc3VwcGxpZWQgYWRkcmVzcywKKyAgIHRoZW4gOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgaG9zdCBiaXRzIGFyZSBtYXNrZWQgb3V0CisgICB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgYWRkcmVzcy4KKworICAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIGFsbCBuZXR3b3JrIG1ldGhvZHMgYWNjZXB0aW5nIG90aGVyIG5ldHdvcmsvYWRkcmVzcworICAgb2JqZWN0cyB3aWxsIHJhaXNlIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhlIGFyZ3VtZW50J3MgSVAgdmVyc2lvbiBpcworICAgaW5jb21wYXRpYmxlIHRvIGBgc2VsZmBgCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKworICAgICAgUmVmZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGRvY3VtZW50YXRpb24gaW4KKyAgICAgIDpjbGFzczpgSVB2NEFkZHJlc3NgCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAorICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworICAgLi4gYXR0cmlidXRlOjogaXNfbGlua19sb2NhbAorCisgICAgICBUaGVzZSBhdHRyaWJ1dGVzIGFyZSB0cnVlIGZvciB0aGUgbmV0d29yayBhcyBhIHdob2xlIGlmIHRoZXkgYXJlIHRydWUKKyAgICAgIHRydWUgZm9yIGJvdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBhbmQgdGhlIGJyb2FkY2FzdCBhZGRyZXNzCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmtfYWRkcmVzcworCisgICAgICBUaGUgbmV0d29yayBhZGRyZXNzIGZvciB0aGUgbmV0d29yay4gVGhlIG5ldHdvcmsgYWRkcmVzcyBhbmQgdGhlCisgICAgICBwcmVmaXggbGVuZ3RoIHRvZ2V0aGVyIHVuaXF1ZWx5IGRlZmluZSBhIG5ldHdvcmsuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGJyb2FkY2FzdF9hZGRyZXNzCisKKyAgICAgIFRoZSBicm9hZGNhc3QgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmsuIFBhY2tldHMgc2VudCB0byB0aGUgYnJvYWRjYXN0CisgICAgICBhZGRyZXNzIHNob3VsZCBiZSByZWNlaXZlZCBieSBldmVyeSBob3N0IG9uIHRoZSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBob3N0IG1hc2sKKworICAgICAgVGhlIGhvc3QgbWFzaywgYXMgYSBzdHJpbmcuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yaywgd2l0aCB0aGUgbWFzayBpbiBwcmVmaXgKKyAgICAgIG5vdGF0aW9uLgorCisgICAgICBgYHdpdGhfcHJlZml4bGVuYGAgYW5kIGBgY29tcHJlc3NlZGBgIGFyZSBhbHdheXMgdGhlIHNhbWUgYXMKKyAgICAgIGBgc3RyKG5ldHdvcmspYGAuCisgICAgICBgYGV4cGxvZGVkYGAgdXNlcyB0aGUgZXhwbG9kZWQgZm9ybSB0aGUgbmV0d29yayBhZGRyZXNzLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX25ldG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmssIHdpdGggdGhlIG1hc2sgaW4gbmV0IG1hc2sKKyAgICAgIG5vdGF0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX2hvc3RtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrLCB3aXRoIHRoZSBtYXNrIGluIGhvc3QgbWFzaworICAgICAgbm90YXRpb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG51bV9hZGRyZXNzZXMKKworICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiBhZGRyZXNzZXMgaW4gdGhlIG5ldHdvcmsuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHByZWZpeGxlbgorCisgICAgICBMZW5ndGggb2YgdGhlIG5ldHdvcmsgcHJlZml4LCBpbiBiaXRzLgorCisgICAuLiBtZXRob2Q6OiBob3N0cygpCisKKyAgICAgIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciB0aGUgdXNhYmxlIGhvc3RzIGluIHRoZSBuZXR3b3JrLiAgVGhlIHVzYWJsZQorICAgICAgaG9zdHMgYXJlIGFsbCB0aGUgSVAgYWRkcmVzc2VzIHRoYXQgYmVsb25nIHRvIHRoZSBuZXR3b3JrLCBleGNlcHQgdGhlCisgICAgICBuZXR3b3JrIGFkZHJlc3MgaXRzZWxmIGFuZCB0aGUgbmV0d29yayBicm9hZGNhc3QgYWRkcmVzcy4KKworICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI5JykuaG9zdHMoKSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0QWRkcmVzcygnMTkyLjAuMi4xJyksIElQdjRBZGRyZXNzKCcxOTIuMC4yLjInKSwKKyAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4zJyksIElQdjRBZGRyZXNzKCcxOTIuMC4yLjQnKSwKKyAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi41JyksIElQdjRBZGRyZXNzKCcxOTIuMC4yLjYnKV0KKworICAgLi4gbWV0aG9kOjogb3ZlcmxhcHMob3RoZXIpCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoaXMgbmV0d29yayBpcyBwYXJ0bHkgb3Igd2hvbGx5IGNvbnRhaW5lZCBpbiAqb3RoZXIqIG9yCisgICAgICBvciAqb3RoZXIqIGlzIHdob2xseSBjb250YWluZWQgaW4gdGhpcyBuZXR3b3JrLgorCisgICAuLiBtZXRob2Q6OiBhZGRyZXNzX2V4Y2x1ZGUobmV0d29yaykKKworICAgICAgQ29tcHV0ZXMgdGhlIG5ldHdvcmsgZGVmaW5pdGlvbnMgcmVzdWx0aW5nIGZyb20gcmVtb3ZpbmcgdGhlIGdpdmVuCisgICAgICAqbmV0d29yayogZnJvbSB0aGlzIG9uZS4gIFJldHVybnMgYW4gaXRlcmF0b3Igb2YgbmV0d29yayBvYmplY3RzLgorICAgICAgUmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmICpuZXR3b3JrKiBpcyBub3QgY29tcGxldGVseSBjb250YWluZWQgaW4KKyAgICAgIHRoaXMgbmV0d29yay4KKworICAgICAgICAgPj4+IG4xID0gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgICAgICAgID4+PiBuMiA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpCisgICAgICAgICA+Pj4gbGlzdChuMS5hZGRyZXNzX2V4Y2x1ZGUobjIpKSAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjgvMjknKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNC8zMCcpLAorICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjIvMzEnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8zMicpXQorCisgICAuLiBtZXRob2Q6OiBzdWJuZXRzKHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKworICAgICAgVGhlIHN1Ym5ldHMgdGhhdCBqb2luIHRvIG1ha2UgdGhlIGN1cnJlbnQgbmV0d29yayBkZWZpbml0aW9uLCBkZXBlbmRpbmcKKyAgICAgIG9uIHRoZSBhcmd1bWVudCB2YWx1ZXMuICAqcHJlZml4bGVuX2RpZmYqIGlzIHRoZSBhbW91bnQgb3VyIHByZWZpeAorICAgICAgbGVuZ3RoIHNob3VsZCBiZSBpbmNyZWFzZWQgYnkuICAqbmV3X3ByZWZpeCogaXMgdGhlIGRlc2lyZWQgbmV3CisgICAgICBwcmVmaXggb2YgdGhlIHN1Ym5ldHM7IGl0IG11c3QgYmUgbGFyZ2VyIHRoYW4gb3VyIHByZWZpeC4gIE9uZSBhbmQKKyAgICAgIG9ubHkgb25lIG9mICpwcmVmaXhsZW5fZGlmZiogYW5kICpuZXdfcHJlZml4KiBtdXN0IGJlIHNldC4gIFJldHVybnMgYW4KKyAgICAgIGl0ZXJhdG9yIG9mIG5ldHdvcmsgb2JqZWN0cy4KKworICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cygpKQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTIpKSAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNjQvMjYnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JyldCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKG5ld19wcmVmaXg9MjYpKSAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNjQvMjYnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JyldCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKG5ld19wcmVmaXg9MjMpKQorICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBsb25nZXInKQorICAgICAgICAgVmFsdWVFcnJvcjogbmV3IHByZWZpeCBtdXN0IGJlIGxvbmdlcgorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTI1KSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXQorCisgICAuLiBtZXRob2Q6OiBzdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisKKyAgICAgIFRoZSBzdXBlcm5ldCBjb250YWluaW5nIHRoaXMgbmV0d29yayBkZWZpbml0aW9uLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBhcmd1bWVudCB2YWx1ZXMuICAqcHJlZml4bGVuX2RpZmYqIGlzIHRoZSBhbW91bnQgb3VyIHByZWZpeCBsZW5ndGgKKyAgICAgIHNob3VsZCBiZSBkZWNyZWFzZWQgYnkuICAqbmV3X3ByZWZpeCogaXMgdGhlIGRlc2lyZWQgbmV3IHByZWZpeCBvZgorICAgICAgdGhlIHN1cGVybmV0OyBpdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBvdXIgcHJlZml4LiAgT25lIGFuZCBvbmx5IG9uZQorICAgICAgb2YgKnByZWZpeGxlbl9kaWZmKiBhbmQgKm5ld19wcmVmaXgqIG11c3QgYmUgc2V0LiAgUmV0dXJucyBhIHNpbmdsZQorICAgICAgbmV0d29yayBvYmplY3QuCisKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdXBlcm5ldCgpCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzIzJykKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0yKQorICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yMicpCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VwZXJuZXQobmV3X3ByZWZpeD0yMCkKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjAvMjAnKQorCisgICAuLiBtZXRob2Q6OiBjb21wYXJlX25ldHdvcmtzKG90aGVyKQorCisgICAgICBDb21wYXJlIHRoaXMgbmV0d29yayB0byAqb3RoZXIqLiAgSW4gdGhpcyBjb21wYXJpc29uIG9ubHkgdGhlIG5ldHdvcmsKKyAgICAgIGFkZHJlc3NlcyBhcmUgY29uc2lkZXJlZDsgaG9zdCBiaXRzIGFyZW4ndC4gIFJldHVybnMgZWl0aGVyIGBgLTFgYCwKKyAgICAgIGBgMGBgIG9yIGBgMWBgLgorCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykuY29tcGFyZV9uZXR3b3JrcyhpcF9uZXR3b3JrKCcxOTIuMC4yLjIvMzInKSkKKyAgICAgICAgIC0xCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykuY29tcGFyZV9uZXR3b3JrcyhpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMzInKSkKKyAgICAgICAgIDEKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKS5jb21wYXJlX25ldHdvcmtzKGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpKQorICAgICAgICAgMAorCisKKy4uIGNsYXNzOjogSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IG5ldHdvcmsgZGVmaW5pdGlvbi4gICphZGRyZXNzKiBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gSVAgYWRkcmVzcyBhbmQgYW4gb3B0aW9uYWwgbWFzaywgc2VwYXJhdGVkIGJ5CisgICAgICBhIHNsYXNoIChgYC9gYCkuICBUaGUgSVAgYWRkcmVzcyBpcyB0aGUgbmV0d29yayBhZGRyZXNzLCBhbmQgdGhlIG1hc2sKKyAgICAgIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgbnVtYmVyLCB3aGljaCBtZWFucyBpdCdzIGEgKnByZWZpeCosIG9yIGEgc3RyaW5nCisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IGFkZHJlc3MuICBJZiBpdCdzIHRoZSBsYXR0ZXIsIHRoZSBtYXNrIGlzCisgICAgICBpbnRlcnByZXRlZCBhcyBhICpuZXQgbWFzayouICBJZiBubyBtYXNrIGlzIHByb3ZpZGVkLCBpdCdzIGNvbnNpZGVyZWQgdG8KKyAgICAgIGJlIGBgLzEyOGBgLgorCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyAqYWRkcmVzcyogc3BlY2lmaWNhdGlvbnMgYXJlIGVxdWl2YWxlbnQ6CisgICAgICBgYDIwMDE6ZGIwMDo6MC8yNGBgIGFuZCBgYDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OmBgLgorCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDEyOCBiaXRzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEKKyAgICAgIHNpbmdsZS1hZGRyZXNzIG5ldHdvcmssIHdpdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBiZWluZyAqYWRkcmVzcyogYW5kCisgICAgICB0aGUgbWFzayBiZWluZyBgYC8xMjhgYC4KKworICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMTYsIGJpdC1lbmRpYW4uCisgICAgICBUaGUgaW50ZXJwcmV0YXRpb24gaXMgc2ltaWxhciB0byBhbiBpbnRlZ2VyICphZGRyZXNzKi4KKworICAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NgorICAgYWRkcmVzcy4gIEEgOmV4YzpgTmV0bWFza1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgbWFzayBpcyBub3QgdmFsaWQgZm9yCisgICBhbiBJUHY2IGFkZHJlc3MuCisKKyAgIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgIGFuZCBob3N0IGJpdHMgYXJlIHNldCBpbiB0aGUgc3VwcGxpZWQgYWRkcmVzcywKKyAgIHRoZW4gOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgaG9zdCBiaXRzIGFyZSBtYXNrZWQgb3V0CisgICB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrX2FkZHJlc3MKKyAgIC4uIGF0dHJpYnV0ZTo6IGJyb2FkY2FzdF9hZGRyZXNzCisgICAuLiBhdHRyaWJ1dGU6OiBob3N0IG1hc2sKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX2hvc3RtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiBudW1fYWRkcmVzc2VzCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVmaXhsZW4KKyAgIC4uIG1ldGhvZDo6IGhvc3RzKCkKKyAgIC4uIG1ldGhvZDo6IG92ZXJsYXBzKG90aGVyKQorICAgLi4gbWV0aG9kOjogYWRkcmVzc19leGNsdWRlKG5ldHdvcmspCisgICAuLiBtZXRob2Q6OiBzdWJuZXRzKHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IHN1cGVybmV0KHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfbmV0d29ya3Mob3RoZXIpCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjROZXR3b3JrYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19zaXRlX2xvY2FsCisKKyAgICAgIFRoZXNlIGF0dHJpYnV0ZSBpcyB0cnVlIGZvciB0aGUgbmV0d29yayBhcyBhIHdob2xlIGlmIGl0IGlzIHRydWUKKyAgICAgIHRydWUgZm9yIGJvdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBhbmQgdGhlIGJyb2FkY2FzdCBhZGRyZXNzCisKKworT3BlcmF0b3JzCiteXl5eXl5eXl4KKworTmV0d29yayBvYmplY3RzIHN1cHBvcnQgc29tZSBvcGVyYXRvcnMuICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgb3BlcmF0b3JzIGNhbgorb25seSBiZSBhcHBsaWVkIGJldHdlZW4gY29tcGF0aWJsZSBvYmplY3RzIChpLmUuIElQdjQgd2l0aCBJUHY0LCBJUHY2IHdpdGgKK0lQdjYpLgorCisKK0xvZ2ljYWwgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIgorCitOZXR3b3JrIG9iamVjdHMgY2FuIGJlIGNvbXBhcmVkIHdpdGggdGhlIHVzdWFsIHNldCBvZiBsb2dpY2FsIG9wZXJhdG9ycywKK3NpbWlsYXJseSB0byBhZGRyZXNzIG9iamVjdHMuCisKKworSXRlcmF0aW9uCisiIiIiIiIiIiIKKworTmV0d29yayBvYmplY3RzIGNhbiBiZSBpdGVyYXRlZCB0byBsaXN0IGFsbCB0aGUgYWRkcmVzc2VzIGJlbG9uZ2luZyB0byB0aGUKK25ldHdvcmsuICBGb3IgaXRlcmF0aW9uLCAqYWxsKiBob3N0cyBhcmUgcmV0dXJuZWQsIGluY2x1ZGluZyB1bnVzYWJsZSBob3N0cworKGZvciB1c2FibGUgaG9zdHMsIHVzZSB0aGUgOm1ldGg6YH5JUHY0TmV0d29yay5ob3N0c2AgbWV0aG9kKS4gIEFuCitleGFtcGxlOjoKKworICAgPj4+IGZvciBhZGRyIGluIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKToKKyAgIC4uLiAgIGFkZHIKKyAgIC4uLgorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjInKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMycpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi40JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjUnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNicpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi43JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjgnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuOScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xMCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xMicpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xMycpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xNCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xNScpCisKKworTmV0d29ya3MgYXMgY29udGFpbmVycyBvZiBhZGRyZXNzZXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK05ldHdvcmsgb2JqZWN0cyBjYW4gYWN0IGFzIGNvbnRhaW5lcnMgb2YgYWRkcmVzc2VzLiAgU29tZSBleGFtcGxlczo6CisKKyAgID4+PiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JylbMF0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKQorICAgPj4+IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKVsxNV0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjE1JykKKyAgID4+PiBJUHY0QWRkcmVzcygnMTkyLjAuMi42JykgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpCisgICBUcnVlCisgICA+Pj4gSVB2NEFkZHJlc3MoJzE5Mi4wLjMuNicpIGluIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgRmFsc2UKKworCitJbnRlcmZhY2Ugb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gY2xhc3M6OiBJUHY0SW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY0IGludGVyZmFjZS4gIFRoZSBtZWFuaW5nIG9mICphZGRyZXNzKiBpcyBhcyBpbiB0aGUKKyAgIGNvbnN0cnVjdG9yIG9mIDpjbGFzczpgSVB2NE5ldHdvcmtgLCBleGNlcHQgdGhhdCBhcmJpdHJhcnkgaG9zdCBhZGRyZXNzZXMKKyAgIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisKKyAgIDpjbGFzczpgSVB2NEludGVyZmFjZWAgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YElQdjRBZGRyZXNzYCwgc28gaXQgaW5oZXJpdHMKKyAgIGFsbCB0aGUgYXR0cmlidXRlcyBmcm9tIHRoYXQgY2xhc3MuICBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzCisgICBhcmUgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBpcAorCisgICAgICBUaGUgYWRkcmVzcyAoOmNsYXNzOmBJUHY0QWRkcmVzc2ApIHdpdGhvdXQgbmV0d29yayBpbmZvcm1hdGlvbi4KKworICAgICAgICAgPj4+IGludGVyZmFjZSA9IElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuNS8yNCcpCisgICAgICAgICA+Pj4gaW50ZXJmYWNlLmlwCisgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi41JykKKworICAgLi4gYXR0cmlidXRlOjogbmV0d29yaworCisgICAgICBUaGUgbmV0d29yayAoOmNsYXNzOmBJUHY0TmV0d29ya2ApIHRoaXMgaW50ZXJmYWNlIGJlbG9uZ3MgdG8uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS5uZXR3b3JrCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9wcmVmaXhsZW4KKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSB3aXRoIHRoZSBtYXNrIGluIHByZWZpeCBub3RhdGlvbi4KKworICAgICAgICAgPj4+IGludGVyZmFjZSA9IElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuNS8yNCcpCisgICAgICAgICA+Pj4gaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuCisgICAgICAgICAnMTkyLjAuMi41LzI0JworCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX25ldG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSB3aXRoIHRoZSBuZXR3b3JrIGFzIGEgbmV0IG1hc2suCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS53aXRoX25ldG1hc2sKKyAgICAgICAgICcxOTIuMC4yLjUvMjU1LjI1NS4yNTUuMCcKKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHdpdGggdGhlIG5ldHdvcmsgYXMgYSBob3N0IG1hc2suCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS53aXRoX2hvc3RtYXNrCisgICAgICAgICAnMTkyLjAuMi41LzAuMC4wLjI1NScKKworCisuLiBjbGFzczo6IElQdjZJbnRlcmZhY2UoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjYgaW50ZXJmYWNlLiAgVGhlIG1lYW5pbmcgb2YgKmFkZHJlc3MqIGlzIGFzIGluIHRoZQorICAgY29uc3RydWN0b3Igb2YgOmNsYXNzOmBJUHY2TmV0d29ya2AsIGV4Y2VwdCB0aGF0IGFyYml0cmFyeSBob3N0IGFkZHJlc3NlcworICAgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKworICAgOmNsYXNzOmBJUHY2SW50ZXJmYWNlYCBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgSVB2NkFkZHJlc3NgLCBzbyBpdCBpbmhlcml0cworICAgYWxsIHRoZSBhdHRyaWJ1dGVzIGZyb20gdGhhdCBjbGFzcy4gIEluIGFkZGl0aW9uLCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMKKyAgIGFyZSBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlwCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX2hvc3RtYXNrCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgLgorCisKK090aGVyIE1vZHVsZSBMZXZlbCBGdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1vZHVsZSBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGxldmVsIGZ1bmN0aW9uczoKKworLi4gZnVuY3Rpb246OiB2NF9pbnRfdG9fcGFja2VkKGFkZHJlc3MpCisKKyAgIFJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDQgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorICAgKmFkZHJlc3MqIGlzIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBJUCBhZGRyZXNzLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBpbnRlZ2VyIGlzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSB0byBiZSBhbgorICAgSVB2NCBJUCBhZGRyZXNzLgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoMzIyMTIyNTk4NSkKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGlwYWRkcmVzcy52NF9pbnRfdG9fcGFja2VkKDMyMjEyMjU5ODUpCisgICBiJ1x4YzBceDAwXHgwMlx4MDEnCisKKworLi4gZnVuY3Rpb246OiB2Nl9pbnRfdG9fcGFja2VkKGFkZHJlc3MpCisKKyAgIFJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDE2IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKyAgICphZGRyZXNzKiBpcyBhbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjYgSVAgYWRkcmVzcy4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgIElQdjYgSVAgYWRkcmVzcy4KKworCisuLiBmdW5jdGlvbjo6IHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKGZpcnN0LCBsYXN0KQorCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgdGhlIHN1bW1hcml6ZWQgbmV0d29yayByYW5nZSBnaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QKKyAgIElQIGFkZHJlc3Nlcy4gICpmaXJzdCogaXMgdGhlIGZpcnN0IDpjbGFzczpgSVB2NEFkZHJlc3NgIG9yCisgICA6Y2xhc3M6YElQdjZBZGRyZXNzYCBpbiB0aGUgcmFuZ2UgYW5kICpsYXN0KiBpcyB0aGUgbGFzdCA6Y2xhc3M6YElQdjRBZGRyZXNzYAorICAgb3IgOmNsYXNzOmBJUHY2QWRkcmVzc2AgaW4gdGhlIHJhbmdlLiAgQSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmZpcnN0KiBvciAqbGFzdCogYXJlIG5vdCBJUCBhZGRyZXNzZXMgb3IgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICpsYXN0KiBpcyBub3QgZ3JlYXRlciB0aGFuICpmaXJzdCogb3IgaWYKKyAgICpmaXJzdCogYWRkcmVzcyB2ZXJzaW9uIGlzIG5vdCA0IG9yIDYuCisKKyAgID4+PiBbaXBhZGRyIGZvciBpcGFkZHIgaW4gaXBhZGRyZXNzLnN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKAorICAgLi4uICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4wJyksCisgICAuLi4gICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMC4yLjEzMCcpKV0KKyAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8zMScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMzAvMzInKV0KKworCisuLiBmdW5jdGlvbjo6IGNvbGxhcHNlX2FkZHJlc3NlcyhhZGRyZXNzZXMpCisKKyAgIFJldHVybiBhbiBpdGVyYXRvciBvZiB0aGUgY29sbGFwc2VkIDpjbGFzczpgSVB2NE5ldHdvcmtgIG9yCisgICA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3RzLiAgKmFkZHJlc3NlcyogaXMgYW4gaXRlcmF0b3Igb2YKKyAgIDpjbGFzczpgSVB2NE5ldHdvcmtgIG9yIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdHMuICBBIDpleGM6YFR5cGVFcnJvcmAgaXMKKyAgIHJhaXNlZCBpZiAqYWRkcmVzc2VzKiBjb250YWlucyBtaXhlZCB2ZXJzaW9uIG9iamVjdHMuCisKKyAgID4+PiBbaXBhZGRyIGZvciBpcGFkZHIgaW4KKyAgIC4uLiBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLAorICAgLi4uIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0pXQorICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKV0KKworCisuLiBmdW5jdGlvbjo6IGdldF9taXhlZF90eXBlX2tleShvYmopCisKKyAgIFJldHVybiBhIGtleSBzdWl0YWJsZSBmb3Igc29ydGluZyBiZXR3ZWVuIG5ldHdvcmtzIGFuZCBhZGRyZXNzZXMuICBBZGRyZXNzCisgICBhbmQgTmV0d29yayBvYmplY3RzIGFyZSBub3Qgc29ydGFibGUgYnkgZGVmYXVsdDsgdGhleSdyZSBmdW5kYW1lbnRhbGx5CisgICBkaWZmZXJlbnQsIHNvIHRoZSBleHByZXNzaW9uOjoKKworICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykgPD0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKKyAgIGRvZXNuJ3QgbWFrZSBzZW5zZS4gIFRoZXJlIGFyZSBzb21lIHRpbWVzIGhvd2V2ZXIsIHdoZXJlIHlvdSBtYXkgd2lzaCB0bworICAgaGF2ZSA6bW9kOmBpcGFkZHJlc3NgIHNvcnQgdGhlc2UgYW55d2F5LiAgSWYgeW91IG5lZWQgdG8gZG8gdGhpcywgeW91IGNhbiB1c2UKKyAgIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGBga2V5YGAgYXJndW1lbnQgdG8gOmZ1bmM6YHNvcnRlZCgpYC4KKworICAgKm9iaiogaXMgZWl0aGVyIGEgbmV0d29yayBvciBhZGRyZXNzIG9iamVjdC4KKworCitDdXN0b20gRXhjZXB0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gc3VwcG9ydCBtb3JlIHNwZWNpZmljIGVycm9yIHJlcG9ydGluZyBmcm9tIGNsYXNzIGNvbnN0cnVjdG9ycywgdGhlCittb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CisKKy4uIGV4Y2VwdGlvbjo6IEFkZHJlc3NWYWx1ZUVycm9yKFZhbHVlRXJyb3IpCisKKyAgIEFueSB2YWx1ZSBlcnJvciByZWxhdGVkIHRvIHRoZSBhZGRyZXNzLgorCisKKy4uIGV4Y2VwdGlvbjo6IE5ldG1hc2tWYWx1ZUVycm9yKFZhbHVlRXJyb3IpCisKKyAgIEFueSB2YWx1ZSBlcnJvciByZWxhdGVkIHRvIHRoZSBuZXRtYXNrLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXBjLnJzdCBiL0RvYy9saWJyYXJ5L2lwYy5yc3QKaW5kZXggYzg3MzA2NS4uOTFlYzY5MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaXBjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pcGMucnN0CkBAIC04LDcgKzgsNyBAQAogdG8gY29tbXVuaWNhdGUuCiAKIFNvbWUgbW9kdWxlcyBvbmx5IHdvcmsgZm9yIHR3byBwcm9jZXNzZXMgdGhhdCBhcmUgb24gdGhlIHNhbWUgbWFjaGluZSwgZS5nLgotOm1vZDpgc2lnbmFsYCBhbmQgOm1vZDpgc3VicHJvY2Vzc2AuICBPdGhlciBtb2R1bGVzIHN1cHBvcnQgbmV0d29ya2luZyBwcm90b2NvbHMKKzptb2Q6YHNpZ25hbGAgYW5kIDptb2Q6YG1tYXBgLiAgT3RoZXIgbW9kdWxlcyBzdXBwb3J0IG5ldHdvcmtpbmcgcHJvdG9jb2xzCiB0aGF0IHR3byBvciBtb3JlIHByb2Nlc3NlcyBjYW4gdXNlZCB0byBjb21tdW5pY2F0ZSBhY3Jvc3MgbWFjaGluZXMuCiAKIFRoZSBsaXN0IG9mIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBpczoKQEAgLTE2LDkgKzE2LDkgQEAKIAogLi4gdG9jdHJlZTo6CiAKLSAgIHN1YnByb2Nlc3MucnN0CiAgICBzb2NrZXQucnN0CiAgICBzc2wucnN0Ci0gICBzaWduYWwucnN0CiAgICBhc3luY29yZS5yc3QKICAgIGFzeW5jaGF0LnJzdAorICAgc2lnbmFsLnJzdAorICAgbW1hcC5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IDMwOGY5MjUuLjFlYjU1NGEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtNDYsNyArNDYsNyBAQAogPT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogSXRlcmF0b3IgICAgICAgICAgICAgICAgQXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZQogPT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotOmZ1bmM6YGFjY3VtdWxhdGVgICAgICAgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMCwgcDArcDEsIHAwK3AxK3AyLCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBhY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSAtLT4gMSAzIDYgMTAgMTVgYAorOmZ1bmM6YGFjY3VtdWxhdGVgICAgICAgcCBbLGZ1bmNdICAgICAgICAgICAgICAgICAgICAgICBwMCwgcDArcDEsIHAwK3AxK3AyLCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBhY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSAtLT4gMSAzIDYgMTAgMTVgYAogOmZ1bmM6YGNoYWluYCAgICAgICAgICAgcCwgcSwgLi4uICAgICAgICAgICAgICAgICAgICAgICBwMCwgcDEsIC4uLiBwbGFzdCwgcTAsIHExLCAuLi4gICAgICAgICAgICAgICAgICAgICAgYGBjaGFpbignQUJDJywgJ0RFRicpIC0tPiBBIEIgQyBEIEUgRmBgCiA6ZnVuYzpgY29tcHJlc3NgICAgICAgICBkYXRhLCBzZWxlY3RvcnMgICAgICAgICAgICAgICAgIChkWzBdIGlmIHNbMF0pLCAoZFsxXSBpZiBzWzFdKSwgLi4uICAgICAgICAgICAgICAgICBgYGNvbXByZXNzKCdBQkNERUYnLCBbMSwwLDEsMCwxLDFdKSAtLT4gQSBDIEUgRmBgCiA6ZnVuYzpgZHJvcHdoaWxlYCAgICAgICBwcmVkLCBzZXEgICAgICAgICAgICAgICAgICAgICAgIHNlcVtuXSwgc2VxW24rMV0sIHN0YXJ0aW5nIHdoZW4gcHJlZCBmYWlscyAgICAgICAgICBgYGRyb3B3aGlsZShsYW1iZGEgeDogeDw1LCBbMSw0LDYsNCwxXSkgLS0+IDYgNCAxYGAKQEAgLTg0LDIzICs4NCw2MSBAQAogc3RyZWFtcyBvZiBpbmZpbml0ZSBsZW5ndGgsIHNvIHRoZXkgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgYnkgZnVuY3Rpb25zIG9yCiBsb29wcyB0aGF0IHRydW5jYXRlIHRoZSBzdHJlYW0uCiAKLS4uIGZ1bmN0aW9uOjogYWNjdW11bGF0ZShpdGVyYWJsZSkKKy4uIGZ1bmN0aW9uOjogYWNjdW11bGF0ZShpdGVyYWJsZVssIGZ1bmNdKQogCiAgICAgTWFrZSBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgYWNjdW11bGF0ZWQgc3Vtcy4gRWxlbWVudHMgbWF5IGJlIGFueSBhZGRhYmxlCi0gICAgdHlwZSBpbmNsdWRpbmcgOmNsYXNzOmBEZWNpbWFsYCBvciA6Y2xhc3M6YEZyYWN0aW9uYC4gIEVxdWl2YWxlbnQgdG86OgorICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgRGVjaW1hbGAgb3IgOmNsYXNzOmBGcmFjdGlvbmAuICBJZiB0aGUgb3B0aW9uYWwKKyAgICAqZnVuYyogYXJndW1lbnQgaXMgc3VwcGxpZWQsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uIG9mIHR3byBhcmd1bWVudHMKKyAgICBhbmQgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgYWRkaXRpb24uCiAKLSAgICAgICAgZGVmIGFjY3VtdWxhdGUoaXRlcmFibGUpOgorICAgIEVxdWl2YWxlbnQgdG86OgorCisgICAgICAgIGRlZiBhY2N1bXVsYXRlKGl0ZXJhYmxlLCBmdW5jPW9wZXJhdG9yLmFkZCk6CiAgICAgICAgICAgICAnUmV0dXJuIHJ1bm5pbmcgdG90YWxzJwogICAgICAgICAgICAgIyBhY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSAtLT4gMSAzIDYgMTAgMTUKKyAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSwgb3BlcmF0b3IubXVsKSAtLT4gMSAyIDYgMjQgMTIwCiAgICAgICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCiAgICAgICAgICAgICB0b3RhbCA9IG5leHQoaXQpCiAgICAgICAgICAgICB5aWVsZCB0b3RhbAogICAgICAgICAgICAgZm9yIGVsZW1lbnQgaW4gaXQ6Ci0gICAgICAgICAgICAgICAgdG90YWwgPSB0b3RhbCArIGVsZW1lbnQKKyAgICAgICAgICAgICAgICB0b3RhbCA9IGZ1bmModG90YWwsIGVsZW1lbnQpCiAgICAgICAgICAgICAgICAgeWllbGQgdG90YWwKIAorICAgIFRoZXJlIGFyZSBhIG51bWJlciBvZiB1c2VzIGZvciB0aGUgKmZ1bmMqIGFyZ3VtZW50LiAgSXQgY2FuIGJlIHNldCB0bworICAgIDpmdW5jOmBtaW5gIGZvciBhIHJ1bm5pbmcgbWluaW11bSwgOmZ1bmM6YG1heGAgZm9yIGEgcnVubmluZyBtYXhpbXVtLCBvcgorICAgIDpmdW5jOmBvcGVyYXRvci5tdWxgIGZvciBhIHJ1bm5pbmcgcHJvZHVjdC4gIEFtb3J0aXphdGlvbiB0YWJsZXMgY2FuIGJlCisgICAgYnVpbHQgYnkgYWNjdW11bGF0aW5nIGludGVyZXN0IGFuZCBhcHBseWluZyBwYXltZW50cy4gIEZpcnN0LW9yZGVyCisgICAgYHJlY3VycmVuY2UgcmVsYXRpb25zIDxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlY3VycmVuY2VfcmVsYXRpb24+YF8KKyAgICBjYW4gYmUgbW9kZWxlZCBieSBzdXBwbHlpbmcgdGhlIGluaXRpYWwgdmFsdWUgaW4gdGhlIGl0ZXJhYmxlIGFuZCB1c2luZyBvbmx5CisgICAgdGhlIGFjY3VtdWxhdGVkIHRvdGFsIGluICpmdW5jKiBhcmd1bWVudDo6CisKKyAgICAgID4+PiBkYXRhID0gWzMsIDQsIDYsIDIsIDEsIDksIDAsIDcsIDUsIDhdCisgICAgICA+Pj4gbGlzdChhY2N1bXVsYXRlKGRhdGEsIG9wZXJhdG9yLm11bCkpICAgICAjIHJ1bm5pbmcgcHJvZHVjdAorICAgICAgWzMsIDEyLCA3MiwgMTQ0LCAxNDQsIDEyOTYsIDAsIDAsIDAsIDBdCisgICAgICA+Pj4gbGlzdChhY2N1bXVsYXRlKGRhdGEsIG1heCkpICAgICAgICAgICAgICAjIHJ1bm5pbmcgbWF4aW11bQorICAgICAgWzMsIDQsIDYsIDYsIDYsIDksIDksIDksIDksIDldCisKKyAgICAgICMgQW1vcnRpemUgYSA1JSBsb2FuIG9mIDEwMDAgd2l0aCA0IGFubnVhbCBwYXltZW50cyBvZiA5MAorICAgICAgPj4+IGNhc2hmbG93cyA9IFsxMDAwLCAtOTAsIC05MCwgLTkwLCAtOTBdCisgICAgICA+Pj4gbGlzdChhY2N1bXVsYXRlKGNhc2hmbG93cywgbGFtYmRhIGJhbCwgcG10OiBiYWwqMS4wNSArIHBtdCkpCisgICAgICBbMTAwMCwgOTYwLjAsIDkxOC4wLCA4NzMuOTAwMDAwMDAwMDAwMSwgODI3LjU5NTAwMDAwMDAwMDFdCisKKyAgICAgICMgQ2hhb3RpYyByZWN1cnJlbmNlIHJlbGF0aW9uIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTG9naXN0aWNfbWFwCisgICAgICA+Pj4gbG9naXN0aWNfbWFwID0gbGFtYmRhIHgsIF86ICByICogeCAqICgxIC0geCkKKyAgICAgID4+PiByID0gMy44CisgICAgICA+Pj4geDAgPSAwLjQKKyAgICAgID4+PiBpbnB1dHMgPSByZXBlYXQoeDAsIDM2KSAgICAgIyBvbmx5IHRoZSBpbml0aWFsIHZhbHVlIGlzIHVzZWQKKyAgICAgID4+PiBbZm9ybWF0KHgsICcuMmYnKSBmb3IgeCBpbiBhY2N1bXVsYXRlKGlucHV0cywgbG9naXN0aWNfbWFwKV0KKyAgICAgIFsnMC40MCcsICcwLjkxJywgJzAuMzAnLCAnMC44MScsICcwLjYwJywgJzAuOTInLCAnMC4yOScsICcwLjc5JywgJzAuNjMnLAorICAgICAgICcwLjg4JyAsJzAuMzknLCAnMC45MCcsICcwLjMzJywgJzAuODQnLCAnMC41MicsICcwLjk1JywgJzAuMTgnLCAnMC41NycsCisgICAgICAgJzAuOTMnLCAnMC4yNScsICcwLjcxJywgJzAuNzknLCAnMC42MycsICcwLjg4JywgJzAuMzknLCAnMC45MScsICcwLjMyJywKKyAgICAgICAnMC44MycsICcwLjU0JywgJzAuOTUnLCAnMC4yMCcsICcwLjYwJywgJzAuOTEnLCAnMC4zMCcsICcwLjgwJywgJzAuNjAnXQorCiAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCAqZnVuYyogcGFyYW1ldGVyLgorCiAuLiBmdW5jdGlvbjo6IGNoYWluKCppdGVyYWJsZXMpCiAKICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGVsZW1lbnRzIGZyb20gdGhlIGZpcnN0IGl0ZXJhYmxlIHVudGlsIGl0IGlzCkBAIC02NjgsNyArNzA2LDggQEAKICAgICAgICByZXR1cm4gemlwKGEsIGIpCiAKICAgIGRlZiBncm91cGVyKG4sIGl0ZXJhYmxlLCBmaWxsdmFsdWU9Tm9uZSk6Ci0gICAgICAgImdyb3VwZXIoMywgJ0FCQ0RFRkcnLCAneCcpIC0tPiBBQkMgREVGIEd4eCIKKyAgICAgICAiQ29sbGVjdCBkYXRhIGludG8gZml4ZWQtbGVuZ3RoIGNodW5rcyBvciBibG9ja3MiCisgICAgICAgIyBncm91cGVyKDMsICdBQkNERUZHJywgJ3gnKSAtLT4gQUJDIERFRiBHeHgiCiAgICAgICAgYXJncyA9IFtpdGVyKGl0ZXJhYmxlKV0gKiBuCiAgICAgICAgcmV0dXJuIHppcF9sb25nZXN0KCphcmdzLCBmaWxsdmFsdWU9ZmlsbHZhbHVlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2NhbGUucnN0IGIvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAppbmRleCA0NWFiYTBhLi5kNDZmMWNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKQEAgLTQ3NSw4ICs0NzUsMTEgQEAKIGxvY2FsZSBzb21ld2hhdCBwYWluZnVsIHRvIHVzZSBjb3JyZWN0bHkuCiAKIEluaXRpYWxseSwgd2hlbiBhIHByb2dyYW0gaXMgc3RhcnRlZCwgdGhlIGxvY2FsZSBpcyB0aGUgYGBDYGAgbG9jYWxlLCBubyBtYXR0ZXIKLXdoYXQgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIGlzLiAgVGhlIHByb2dyYW0gbXVzdCBleHBsaWNpdGx5IHNheSB0aGF0IGl0Ci13YW50cyB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgc2V0dGluZ3MgYnkgY2FsbGluZyBgYHNldGxvY2FsZShMQ19BTEwsICcnKWBgLgord2hhdCB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgaXMuICBUaGVyZSBpcyBvbmUgZXhjZXB0aW9uOiB0aGUKKzpkYXRhOmBMQ19DVFlQRWAgY2F0ZWdvcnkgaXMgY2hhbmdlZCBhdCBzdGFydHVwIHRvIHNldCB0aGUgY3VycmVudCBsb2NhbGUKK2VuY29kaW5nIHRvIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBlbmNvZGluZy4gVGhlIHByb2dyYW0gbXVzdCBleHBsaWNpdGx5CitzYXkgdGhhdCBpdCB3YW50cyB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgc2V0dGluZ3MgZm9yIG90aGVyIGNhdGVnb3JpZXMgYnkKK2NhbGxpbmcgYGBzZXRsb2NhbGUoTENfQUxMLCAnJylgYC4KIAogSXQgaXMgZ2VuZXJhbGx5IGEgYmFkIGlkZWEgdG8gY2FsbCA6ZnVuYzpgc2V0bG9jYWxlYCBpbiBzb21lIGxpYnJhcnkgcm91dGluZSwKIHNpbmNlIGFzIGEgc2lkZSBlZmZlY3QgaXQgYWZmZWN0cyB0aGUgZW50aXJlIHByb2dyYW0uICBTYXZpbmcgYW5kIHJlc3RvcmluZyBpdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAppbmRleCBlZjY1Y2ZhLi41MzdiOGM3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdApAQCAtMTY0LDYgKzE2NCw4NyBAQAogICAgICAgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcyBmbHVzaGVkIGFuZCBjbG9zZWQgYW5kIHRoZQogICAgICAgZmlsZSBvcGVuZWQgYWdhaW4sIGJlZm9yZSBvdXRwdXR0aW5nIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUuCiAKKy4uIF9iYXNlLXJvdGF0aW5nLWhhbmRsZXI6CisKK0Jhc2VSb3RhdGluZ0hhbmRsZXIKK15eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgQmFzZVJvdGF0aW5nSGFuZGxlcmAgY2xhc3MsIGxvY2F0ZWQgaW4gdGhlIDptb2Q6YGxvZ2dpbmcuaGFuZGxlcnNgCittb2R1bGUsIGlzIHRoZSBiYXNlIGNsYXNzIGZvciB0aGUgcm90YXRpbmcgZmlsZSBoYW5kbGVycywKKzpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAgYW5kIDpjbGFzczpgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyYC4gWW91IHNob3VsZAorbm90IG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcyBjbGFzcywgYnV0IGl0IGhhcyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIHlvdSBtYXkKK25lZWQgdG8gb3ZlcnJpZGUuCisKKy4uIGNsYXNzOjogQmFzZVJvdGF0aW5nSGFuZGxlcihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UpCisKKyAgIFRoZSBwYXJhbWV0ZXJzIGFyZSBhcyBmb3IgOmNsYXNzOmBGaWxlSGFuZGxlcmAuIFRoZSBhdHRyaWJ1dGVzIGFyZToKKworICAgLi4gYXR0cmlidXRlOjogbmFtZXIKKworICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIGEgY2FsbGFibGUsIHRoZSA6bWV0aDpgcm90YXRpb25fZmlsZW5hbWVgCisgICAgICBtZXRob2QgZGVsZWdhdGVzIHRvIHRoaXMgY2FsbGFibGUuIFRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgY2FsbGFibGUKKyAgICAgIGFyZSB0aG9zZSBwYXNzZWQgdG8gOm1ldGg6YHJvdGF0aW9uX2ZpbGVuYW1lYC4KKworICAgICAgLi4gbm90ZTo6IFRoZSBuYW1lciBmdW5jdGlvbiBpcyBjYWxsZWQgcXVpdGUgYSBmZXcgdGltZXMgZHVyaW5nIHJvbGxvdmVyLAorICAgICAgICAgc28gaXQgc2hvdWxkIGJlIGFzIHNpbXBsZSBhbmQgYXMgZmFzdCBhcyBwb3NzaWJsZS4gSXQgc2hvdWxkIGFsc28KKyAgICAgICAgIHJldHVybiB0aGUgc2FtZSBvdXRwdXQgZXZlcnkgdGltZSBmb3IgYSBnaXZlbiBpbnB1dCwgb3RoZXJ3aXNlIHRoZQorICAgICAgICAgcm9sbG92ZXIgYmVoYXZpb3VyIG1heSBub3Qgd29yayBhcyBleHBlY3RlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworICAgLi4gYXR0cmlidXRlOjogQmFzZVJvdGF0aW5nSGFuZGxlci5yb3RhdG9yCisKKyAgICAgIElmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBhIGNhbGxhYmxlLCB0aGUgOm1ldGg6YHJvdGF0ZWAgbWV0aG9kCisgICAgICBkZWxlZ2F0ZXMgdG8gdGhpcyBjYWxsYWJsZS4gIFRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgY2FsbGFibGUgYXJlCisgICAgICB0aG9zZSBwYXNzZWQgdG8gOm1ldGg6YHJvdGF0ZWAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBtZXRob2Q6OiBCYXNlUm90YXRpbmdIYW5kbGVyLnJvdGF0aW9uX2ZpbGVuYW1lKGRlZmF1bHRfbmFtZSkKKworICAgICAgTW9kaWZ5IHRoZSBmaWxlbmFtZSBvZiBhIGxvZyBmaWxlIHdoZW4gcm90YXRpbmcuCisKKyAgICAgIFRoaXMgaXMgcHJvdmlkZWQgc28gdGhhdCBhIGN1c3RvbSBmaWxlbmFtZSBjYW4gYmUgcHJvdmlkZWQuCisKKyAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAnbmFtZXInIGF0dHJpYnV0ZSBvZiB0aGUgaGFuZGxlciwKKyAgICAgIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIGRlZmF1bHQgbmFtZSB0byBpdC4gSWYgdGhlIGF0dHJpYnV0ZSBpc24ndAorICAgICAgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgKSwgdGhlIG5hbWUgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgorCisgICAgICA6cGFyYW0gZGVmYXVsdF9uYW1lOiBUaGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgbG9nIGZpbGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKyAgIC4uIG1ldGhvZDo6IEJhc2VSb3RhdGluZ0hhbmRsZXIucm90YXRlKHNvdXJjZSwgZGVzdCkKKworICAgICAgV2hlbiByb3RhdGluZywgcm90YXRlIHRoZSBjdXJyZW50IGxvZy4KKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlICdyb3RhdG9yJyBhdHRyaWJ1dGUgb2YgdGhlIGhhbmRsZXIsCisgICAgICBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBzb3VyY2UgYW5kIGRlc3QgYXJndW1lbnRzIHRvIGl0LiBJZiB0aGUKKyAgICAgIGF0dHJpYnV0ZSBpc24ndCBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgYGBOb25lYGApLCB0aGUgc291cmNlIGlzIHNpbXBseQorICAgICAgcmVuYW1lZCB0byB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgIDpwYXJhbSBzb3VyY2U6IFRoZSBzb3VyY2UgZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkgdGhlIGJhc2UKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBlLmcuICd0ZXN0LmxvZycKKyAgICAgIDpwYXJhbSBkZXN0OiAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseQorICAgICAgICAgICAgICAgICAgICAgd2hhdCB0aGUgc291cmNlIGlzIHJvdGF0ZWQgdG8sIGUuZy4gJ3Rlc3QubG9nLjEnLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIHJlYXNvbiB0aGUgYXR0cmlidXRlcyBleGlzdCBpcyB0byBzYXZlIHlvdSBoYXZpbmcgdG8gc3ViY2xhc3MgLSB5b3UgY2FuIHVzZQordGhlIHNhbWUgY2FsbGFibGVzIGZvciBpbnN0YW5jZXMgb2YgOmNsYXNzOmBSb3RhdGluZ0ZpbGVIYW5kbGVyYCBhbmQKKzpjbGFzczpgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyYC4gSWYgZWl0aGVyIHRoZSBuYW1lciBvciByb3RhdG9yIGNhbGxhYmxlCityYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGlzIHdpbGwgYmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgYW55IG90aGVyCitleGNlcHRpb24gZHVyaW5nIGFuIDptZXRoOmBlbWl0YCBjYWxsLCBpLmUuIHZpYSB0aGUgOm1ldGg6YGhhbmRsZUVycm9yYCBtZXRob2QKK29mIHRoZSBoYW5kbGVyLgorCitJZiB5b3UgbmVlZCB0byBtYWtlIG1vcmUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byByb3RhdGlvbiBwcm9jZXNzaW5nLCB5b3UgY2FuCitvdmVycmlkZSB0aGUgbWV0aG9kcy4KKworRm9yIGFuIGV4YW1wbGUsIHNlZSA6cmVmOmBjb29rYm9vay1yb3RhdG9yLW5hbWVyYC4KKworCiAuLiBfcm90YXRpbmctZmlsZS1oYW5kbGVyOgogCiBSb3RhdGluZ0ZpbGVIYW5kbGVyCkBAIC00NTIsNiArNTMzLDE1IEBACiAgICAgICAgICBiZWhhdmlvdXIpIGJ1dCBjYW4gYmUgc2V0IHRvIGBgRmFsc2VgYCBvbiBhIGBgU3lzTG9nSGFuZGxlcmBgIGluc3RhbmNlCiAgICAgICAgICBpbiBvcmRlciBmb3IgdGhhdCBpbnN0YW5jZSB0byAqbm90KiBhcHBlbmQgdGhlIE5VTCB0ZXJtaW5hdG9yLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgKFNlZTogOmlzc3VlOmAxMjQxOWAuKSBJbiBlYXJsaWVyIHZlcnNpb25zLCB0aGVyZSB3YXMgbm8gZmFjaWxpdHkgZm9yCisgICAgICAgICBhbiAiaWRlbnQiIG9yICJ0YWciIHByZWZpeCB0byBpZGVudGlmeSB0aGUgc291cmNlIG9mIHRoZSBtZXNzYWdlLiBUaGlzCisgICAgICAgICBjYW4gbm93IGJlIHNwZWNpZmllZCB1c2luZyBhIGNsYXNzLWxldmVsIGF0dHJpYnV0ZSwgZGVmYXVsdGluZyB0bworICAgICAgICAgYGAiImBgIHRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciwgYnV0IHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIG9uCisgICAgICAgICBhIGBgU3lzTG9nSGFuZGxlcmBgIGluc3RhbmNlIGluIG9yZGVyIGZvciB0aGF0IGluc3RhbmNlIHRvIHByZXBlbmQKKyAgICAgICAgIHRoZSBpZGVudCB0byBldmVyeSBtZXNzYWdlIGhhbmRsZWQuIE5vdGUgdGhhdCB0aGUgcHJvdmlkZWQgaWRlbnQgbXVzdAorICAgICAgICAgYmUgdGV4dCwgbm90IGJ5dGVzLCBhbmQgaXMgcHJlcGVuZGVkIHRvIHRoZSBtZXNzYWdlIGV4YWN0bHkgYXMgaXMuCisKICAgIC4uIG1ldGhvZDo6IGVuY29kZVByaW9yaXR5KGZhY2lsaXR5LCBwcmlvcml0eSkKIAogICAgICAgRW5jb2RlcyB0aGUgZmFjaWxpdHkgYW5kIHByaW9yaXR5IGludG8gYW4gaW50ZWdlci4gWW91IGNhbiBwYXNzIGluIHN0cmluZ3MKQEAgLTYxNCw3ICs3MDQsNyBAQAogc3VwcG9ydHMgc2VuZGluZyBsb2dnaW5nIG1lc3NhZ2VzIHRvIGFuIGVtYWlsIGFkZHJlc3MgdmlhIFNNVFAuCiAKIAotLi4gY2xhc3M6OiBTTVRQSGFuZGxlcihtYWlsaG9zdCwgZnJvbWFkZHIsIHRvYWRkcnMsIHN1YmplY3QsIGNyZWRlbnRpYWxzPU5vbmUsIHNlY3VyZT1Ob25lKQorLi4gY2xhc3M6OiBTTVRQSGFuZGxlcihtYWlsaG9zdCwgZnJvbWFkZHIsIHRvYWRkcnMsIHN1YmplY3QsIGNyZWRlbnRpYWxzPU5vbmUsIHNlY3VyZT1Ob25lLCB0aW1lb3V0PTEuMCkKIAogICAgUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBTTVRQSGFuZGxlcmAgY2xhc3MuIFRoZSBpbnN0YW5jZSBpcwogICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgZnJvbSBhbmQgdG8gYWRkcmVzc2VzIGFuZCBzdWJqZWN0IGxpbmUgb2YgdGhlIGVtYWlsLiBUaGUKQEAgLTYzMCw2ICs3MjAsMTIgQEAKICAgIGFuZCBjZXJ0aWZpY2F0ZSBmaWxlLiAoVGhpcyB0dXBsZSBpcyBwYXNzZWQgdG8gdGhlCiAgICA6bWV0aDpgc210cGxpYi5TTVRQLnN0YXJ0dGxzYCBtZXRob2QuKQogCisgICBBIHRpbWVvdXQgY2FuIGJlIHNwZWNpZmllZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBTTVRQIHNlcnZlciB1c2luZyB0aGUKKyAgICp0aW1lb3V0KiBhcmd1bWVudC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IHdhcyBhZGRlZC4KKwogICAgLi4gbWV0aG9kOjogZW1pdChyZWNvcmQpCiAKICAgICAgIEZvcm1hdHMgdGhlIHJlY29yZCBhbmQgc2VuZHMgaXQgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzZWVzLgpAQCAtNjkwLDcgKzc4Niw3IEBACiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAotICAgICAgQ2FsbHMgOm1ldGg6YGZsdXNoYCwgc2V0cyB0aGUgdGFyZ2V0IHRvIDpjb25zdDpgTm9uZWAgYW5kIGNsZWFycyB0aGUKKyAgICAgIENhbGxzIDptZXRoOmBmbHVzaGAsIHNldHMgdGhlIHRhcmdldCB0byBgYE5vbmVgYCBhbmQgY2xlYXJzIHRoZQogICAgICAgYnVmZmVyLgogCiAKQEAgLTg1OSw2ICs5NTUsMTUgQEAKICAgICAgIE5vdGUgdGhhdCBpZiB5b3UgZG9uJ3QgY2FsbCB0aGlzIGJlZm9yZSB5b3VyIGFwcGxpY2F0aW9uIGV4aXRzLCB0aGVyZQogICAgICAgbWF5IGJlIHNvbWUgcmVjb3JkcyBzdGlsbCBsZWZ0IG9uIHRoZSBxdWV1ZSwgd2hpY2ggd29uJ3QgYmUgcHJvY2Vzc2VkLgogCisgICAuLiBtZXRob2Q6OiBlbnF1ZXVlX3NlbnRpbmVsKCkKKworICAgICAgV3JpdGVzIGEgc2VudGluZWwgdG8gdGhlIHF1ZXVlIHRvIHRlbGwgdGhlIGxpc3RlbmVyIHRvIHF1aXQuIFRoaXMKKyAgICAgIGltcGxlbWVudGF0aW9uIHVzZXMgYGBwdXRfbm93YWl0KClgYC4gIFlvdSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzCisgICAgICBtZXRob2QgaWYgeW91IHdhbnQgdG8gdXNlIHRpbWVvdXRzIG9yIHdvcmsgd2l0aCBjdXN0b20gcXVldWUKKyAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKaW5kZXggMmU2NDE0Ni4uYzdlZjMxMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKQEAgLTIxMyw2ICsyMTMsOSBAQAogICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoaXMgbG9nZ2VyLiBUaGUgYXJndW1lbnRzIGFyZQogICAgaW50ZXJwcmV0ZWQgYXMgZm9yIDptZXRoOmBkZWJ1Z2AuCiAKKyAgIC4uIG5vdGU6OiBUaGVyZSBpcyBhbiBvYnNvbGV0ZSBtZXRob2QgYGB3YXJuYGAgd2hpY2ggaXMgZnVuY3Rpb25hbGx5CisgICAgICBpZGVudGljYWwgdG8gYGB3YXJuaW5nYGAuIEFzIGBgd2FybmBgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSBkbyBub3QgdXNlCisgICAgICBpdCAtIHVzZSBgYHdhcm5pbmdgYCBpbnN0ZWFkLgogCiAuLiBtZXRob2Q6OiBMb2dnZXIuZXJyb3IobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKQEAgLTQ5Miw2ICs0OTUsMTkgQEAKICAgICAgIHdhbnQgYWxsIGxvZ2dpbmcgdGltZXMgdG8gYmUgc2hvd24gaW4gR01ULCBzZXQgdGhlIGBgY29udmVydGVyYGAKICAgICAgIGF0dHJpYnV0ZSBpbiB0aGUgYGBGb3JtYXR0ZXJgYCBjbGFzcy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFByZXZpb3VzbHksIHRoZSBkZWZhdWx0IElTTyA4NjAxIGZvcm1hdCB3YXMgaGFyZC1jb2RlZCBhcyBpbiB0aGlzCisgICAgICAgICBleGFtcGxlOiBgYDIwMTAtMDktMDYgMjI6Mzg6MTUsMjkyYGAgd2hlcmUgdGhlIHBhcnQgYmVmb3JlIHRoZSBjb21tYSBpcworICAgICAgICAgaGFuZGxlZCBieSBhIHN0cnB0aW1lIGZvcm1hdCBzdHJpbmcgKGBgJyVZLSVtLSVkICVIOiVNOiVTJ2BgKSwgYW5kIHRoZQorICAgICAgICAgcGFydCBhZnRlciB0aGUgY29tbWEgaXMgYSBtaWxsaXNlY29uZCB2YWx1ZS4gQmVjYXVzZSBzdHJwdGltZSBkb2VzIG5vdAorICAgICAgICAgaGF2ZSBhIGZvcm1hdCBwbGFjZWhvbGRlciBmb3IgbWlsbGlzZWNvbmRzLCB0aGUgbWlsbGlzZWNvbmQgdmFsdWUgaXMKKyAgICAgICAgIGFwcGVuZGVkIHVzaW5nIGFub3RoZXIgZm9ybWF0IHN0cmluZywgYGAnJXMsJTAzZCdgYCDigJMgYW5kIGJvdGggb2YgdGhlc2UKKyAgICAgICAgIGZvcm1hdCBzdHJpbmdzIGhhdmUgYmVlbiBoYXJkY29kZWQgaW50byB0aGlzIG1ldGhvZC4gV2l0aCB0aGUgY2hhbmdlLAorICAgICAgICAgdGhlc2Ugc3RyaW5ncyBhcmUgZGVmaW5lZCBhcyBjbGFzcy1sZXZlbCBhdHRyaWJ1dGVzIHdoaWNoIGNhbiBiZQorICAgICAgICAgb3ZlcnJpZGRlbiBhdCB0aGUgaW5zdGFuY2UgbGV2ZWwgd2hlbiBkZXNpcmVkLiBUaGUgbmFtZXMgb2YgdGhlCisgICAgICAgICBhdHRyaWJ1dGVzIGFyZSBgYGRlZmF1bHRfdGltZV9mb3JtYXRgYCAoZm9yIHRoZSBzdHJwdGltZSBmb3JtYXQgc3RyaW5nKQorICAgICAgICAgYW5kIGBgZGVmYXVsdF9tc2VjX2Zvcm1hdGBgIChmb3IgYXBwZW5kaW5nIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSkuCisKICAgIC4uIG1ldGhvZDo6IGZvcm1hdEV4Y2VwdGlvbihleGNfaW5mbykKIAogICAgICAgRm9ybWF0cyB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiAoYSBzdGFuZGFyZCBleGNlcHRpb24gdHVwbGUgYXMKQEAgLTkwMSw4ICs5MTcsMTIgQEAKIAogLi4gZnVuY3Rpb246OiB3YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi0gICBMb2dzIGEgbWVzc2FnZSB3aXRoIGxldmVsIDpjb25zdDpgV0FSTklOR2Agb24gdGhlIHJvb3QgbG9nZ2VyLiBUaGUgYXJndW1lbnRzIGFyZQotICAgaW50ZXJwcmV0ZWQgYXMgZm9yIDpmdW5jOmBkZWJ1Z2AuCisgICBMb2dzIGEgbWVzc2FnZSB3aXRoIGxldmVsIDpjb25zdDpgV0FSTklOR2Agb24gdGhlIHJvb3QgbG9nZ2VyLiBUaGUgYXJndW1lbnRzCisgICBhcmUgaW50ZXJwcmV0ZWQgYXMgZm9yIDpmdW5jOmBkZWJ1Z2AuCisKKyAgIC4uIG5vdGU6OiBUaGVyZSBpcyBhbiBvYnNvbGV0ZSBmdW5jdGlvbiBgYHdhcm5gYCB3aGljaCBpcyBmdW5jdGlvbmFsbHkKKyAgICAgIGlkZW50aWNhbCB0byBgYHdhcm5pbmdgYC4gQXMgYGB3YXJuYGAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIGRvIG5vdCB1c2UKKyAgICAgIGl0IC0gdXNlIGBgd2FybmluZ2BgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiBlcnJvcihtc2csICphcmdzLCAqKmt3YXJncykKQEAgLTEwMjgsMTIgKzEwNDgsMjcgQEAKICAgIHwgYGBzdHJlYW1gYCAgIHwgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlICB8CiAgICB8ICAgICAgICAgICAgICB8IFN0cmVhbUhhbmRsZXIuIE5vdGUgdGhhdCB0aGlzIGFyZ3VtZW50IGlzICAgfAogICAgfCAgICAgICAgICAgICAgfCBpbmNvbXBhdGlibGUgd2l0aCAnZmlsZW5hbWUnIC0gaWYgYm90aCBhcmUgIHwKLSAgIHwgICAgICAgICAgICAgIHwgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4gICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGBoYW5kbGVyc2BgIHwgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiB8CisgICB8ICAgICAgICAgICAgICB8IGFscmVhZHkgY3JlYXRlZCBoYW5kbGVycyB0byBhZGQgdG8gdGhlIHJvb3QgfAorICAgfCAgICAgICAgICAgICAgfCBsb2dnZXIuIEFueSBoYW5kbGVycyB3aGljaCBkb24ndCBhbHJlYWR5ICAgIHwKKyAgIHwgICAgICAgICAgICAgIHwgaGF2ZSBhIGZvcm1hdHRlciBzZXQgd2lsbCBiZSBhc3NpZ25lZCB0aGUgICB8CisgICB8ICAgICAgICAgICAgICB8IGRlZmF1bHQgZm9ybWF0dGVyIGNyZWF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4gfAorICAgfCAgICAgICAgICAgICAgfCBOb3RlIHRoYXQgdGhpcyBhcmd1bWVudCBpcyBpbmNvbXBhdGlibGUgICAgIHwKKyAgIHwgICAgICAgICAgICAgIHwgd2l0aCAnZmlsZW5hbWUnIG9yICdzdHJlYW0nIC0gaWYgYm90aCBhcmUgICB8CisgICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSBgYHN0eWxlYGAgYXJndW1lbnQgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIGBgaGFuZGxlcnNgYCBhcmd1bWVudCB3YXMgYWRkZWQuIEFkZGl0aW9uYWwgY2hlY2tzIHdlcmUgYWRkZWQgdG8KKyAgICAgIGNhdGNoIHNpdHVhdGlvbnMgd2hlcmUgaW5jb21wYXRpYmxlIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkIChlLmcuCisgICAgICBgYGhhbmRsZXJzYGAgdG9nZXRoZXIgd2l0aCBgYHN0cmVhbWBgIG9yIGBgZmlsZW5hbWVgYCwgb3IgYGBzdHJlYW1gYAorICAgICAgdG9nZXRoZXIgd2l0aCBgYGZpbGVuYW1lYGApLgorCiAKIC4uIGZ1bmN0aW9uOjogc2h1dGRvd24oKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sem1hLnJzdCBiL0RvYy9saWJyYXJ5L2x6bWEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwOWZhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApAQCAtMCwwICsxLDM4MiBAQAorOm1vZDpgbHptYWAgLS0tIENvbXByZXNzaW9uIHVzaW5nIHRoZSBMWk1BIGFsZ29yaXRobQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBsem1hCisgICA6c3lub3BzaXM6IEEgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBsaWJsem1hIGNvbXByZXNzaW9uIGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGNvbXByZXNzaW5nIGFuZAorZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nIHRoZSBMWk1BIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gQWxzbyBpbmNsdWRlZCBpcyBhIGZpbGUKK2ludGVyZmFjZSBzdXBwb3J0aW5nIHRoZSBgYC54emBgIGFuZCBsZWdhY3kgYGAubHptYWBgIGZpbGUgZm9ybWF0cyB1c2VkIGJ5IHRoZQorOnByb2dyYW06YHh6YCB1dGlsaXR5LCBhcyB3ZWxsIGFzIHJhdyBjb21wcmVzc2VkIHN0cmVhbXMuCisKK1RoZSBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUgaXMgdmVyeSBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIDptb2Q6YGJ6MmAKK21vZHVsZS4gSG93ZXZlciwgbm90ZSB0aGF0IDpjbGFzczpgTFpNQUZpbGVgIGlzICpub3QqIHRocmVhZC1zYWZlLCB1bmxpa2UKKzpjbGFzczpgYnoyLkJaMkZpbGVgLCBzbyBpZiB5b3UgbmVlZCB0byB1c2UgYSBzaW5nbGUgOmNsYXNzOmBMWk1BRmlsZWAgaW5zdGFuY2UKK2Zyb20gbXVsdGlwbGUgdGhyZWFkcywgaXQgaXMgbmVjZXNzYXJ5IHRvIHByb3RlY3QgaXQgd2l0aCBhIGxvY2suCisKKworLi4gZXhjZXB0aW9uOjogTFpNQUVycm9yCisKKyAgIFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgY29tcHJlc3Npb24gb3IKKyAgIGRlY29tcHJlc3Npb24sIG9yIHdoaWxlIGluaXRpYWxpemluZyB0aGUgY29tcHJlc3Nvci9kZWNvbXByZXNzb3Igc3RhdGUuCisKKworUmVhZGluZyBhbmQgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsIFwqLCBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpCisKKyAgIE9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZSwgcmV0dXJuaW5nIGEgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuCisKKyAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMKKyAgIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgYW55IG9mIGBgInIiYGAsIGBgInJiImBgLCBgYCJ3ImBgLCBgYCJ3YiJgYCwKKyAgIGBgImEiYGAgb3IgYGAiYWIiYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCJydCJgYCwgYGAid3QiYGAsIG9yIGBgImF0ImBgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCJyYiJgYC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpmb3JtYXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUKKyAgIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLiBJbiB0aGlzIGNhc2UsIHRoZSAqY2hlY2sqCisgICBhbmQgKnByZXNldCogYXJndW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZywgdGhlICpmb3JtYXQqLCAqY2hlY2sqLCAqcHJlc2V0KiBhbmQKKyAgICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAuCisKKyAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSA6Y2xhc3M6YExaTUFGaWxlYAorICAgY29uc3RydWN0b3I6IGBgTFpNQUZpbGUoZmlsZW5hbWUsIG1vZGUsIC4uLilgYC4gSW4gdGhpcyBjYXNlLCB0aGUgKmVuY29kaW5nKiwKKyAgICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgTFpNQUZpbGVgIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCisgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisKKy4uIGNsYXNzOjogTFpNQUZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT0iciIsIFwqLCBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIE9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCisKKyAgIEFuIDpjbGFzczpgTFpNQUZpbGVgIGNhbiB3cmFwIGFuIGFscmVhZHktb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBvcGVyYXRlCisgICBkaXJlY3RseSBvbiBhIG5hbWVkIGZpbGUuIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IHNwZWNpZmllcyBlaXRoZXIgdGhlIGZpbGUKKyAgIG9iamVjdCB0byB3cmFwLCBvciB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBvcGVuIChhcyBhIDpjbGFzczpgc3RyYCBvcgorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0KS4gV2hlbiB3cmFwcGluZyBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgdGhlIHdyYXBwZWQKKyAgIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkIHdoZW4gdGhlIDpjbGFzczpgTFpNQUZpbGVgIGlzIGNsb3NlZC4KKworICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGBgInIiYGAgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCBgYCJ3ImBgIGZvcgorICAgb3ZlcndyaXRpbmcsIG9yIGBgImEiYGAgZm9yIGFwcGVuZGluZy4gVGhlc2UgY2FuIGVxdWl2YWxlbnRseSBiZSBnaXZlbiBhcworICAgYGAicmIiYGAsIGBgIndiImBgLCBhbmQgYGAiYWIiYGAgcmVzcGVjdGl2ZWx5LgorCisgICBJZiAqZmlsZW5hbWUqIGlzIGEgZmlsZSBvYmplY3QgKHJhdGhlciB0aGFuIGFuIGFjdHVhbCBmaWxlIG5hbWUpLCBhIG1vZGUgb2YKKyAgIGBgInciYGAgZG9lcyBub3QgdHJ1bmNhdGUgdGhlIGZpbGUsIGFuZCBpcyBpbnN0ZWFkIGVxdWl2YWxlbnQgdG8gYGAiYSJgYC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mCisgICBtdWx0aXBsZSBzZXBhcmF0ZSBjb21wcmVzc2VkIHN0cmVhbXMuIFRoZXNlIGFyZSB0cmFuc3BhcmVudGx5IGRlY29kZWQgYXMgYQorICAgc2luZ2xlIGxvZ2ljYWwgc3RyZWFtLgorCisgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nLCB0aGUgKmZvcm1hdCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZQorICAgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQURlY29tcHJlc3NvcmAuIEluIHRoaXMgY2FzZSwgdGhlICpjaGVjayoKKyAgIGFuZCAqcHJlc2V0KiBhcmd1bWVudHMgc2hvdWxkIG5vdCBiZSB1c2VkLgorCisgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciB3cml0aW5nLCB0aGUgKmZvcm1hdCosICpjaGVjayosICpwcmVzZXQqIGFuZAorICAgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFDb21wcmVzc29yYC4KKworICAgOmNsYXNzOmBMWk1BRmlsZWAgc3VwcG9ydHMgYWxsIHRoZSBtZW1iZXJzIHNwZWNpZmllZCBieQorICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAsIGV4Y2VwdCBmb3IgOm1ldGg6YGRldGFjaGAgYW5kIDptZXRoOmB0cnVuY2F0ZWAuCisgICBJdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGFyZSBzdXBwb3J0ZWQuCisKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kIGlzIGFsc28gcHJvdmlkZWQ6CisKKyAgIC4uIG1ldGhvZDo6IHBlZWsoc2l6ZT0tMSkKKworICAgICAgUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uIEF0IGxlYXN0IG9uZQorICAgICAgYnl0ZSBvZiBkYXRhIHdpbGwgYmUgcmV0dXJuZWQsIHVubGVzcyBFT0YgaGFzIGJlZW4gcmVhY2hlZC4gVGhlIGV4YWN0CisgICAgICBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgaXMgdW5zcGVjaWZpZWQgKHRoZSAqc2l6ZSogYXJndW1lbnQgaXMgaWdub3JlZCkuCisKKworQ29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcgZGF0YSBpbiBtZW1vcnkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGNsYXNzOjogTFpNQUNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIENyZWF0ZSBhIGNvbXByZXNzb3Igb2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBjb21wcmVzcyBkYXRhIGluY3JlbWVudGFsbHkuCisKKyAgIEZvciBhIG1vcmUgY29udmVuaWVudCB3YXkgb2YgY29tcHJlc3NpbmcgYSBzaW5nbGUgY2h1bmsgb2YgZGF0YSwgc2VlCisgICA6ZnVuYzpgY29tcHJlc3NgLgorCisgICBUaGUgKmZvcm1hdCogYXJndW1lbnQgc3BlY2lmaWVzIHdoYXQgY29udGFpbmVyIGZvcm1hdCBzaG91bGQgYmUgdXNlZC4KKyAgIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICogOmNvbnN0OmBGT1JNQVRfWFpgOiBUaGUgYGAueHpgYCBjb250YWluZXIgZm9ybWF0LgorICAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3JtYXQuCisKKyAgICogOmNvbnN0OmBGT1JNQVRfQUxPTkVgOiBUaGUgbGVnYWN5IGBgLmx6bWFgYCBjb250YWluZXIgZm9ybWF0LgorICAgICAgVGhpcyBmb3JtYXQgaXMgbW9yZSBsaW1pdGVkIHRoYW4gYGAueHpgYCAtLSBpdCBkb2VzIG5vdCBzdXBwb3J0IGludGVncml0eQorICAgICAgY2hlY2tzIG9yIG11bHRpcGxlIGZpbHRlcnMuCisKKyAgICogOmNvbnN0OmBGT1JNQVRfUkFXYDogQSByYXcgZGF0YSBzdHJlYW0sIG5vdCB1c2luZyBhbnkgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgZm9ybWF0IHNwZWNpZmllciBkb2VzIG5vdCBzdXBwb3J0IGludGVncml0eSBjaGVja3MsIGFuZCByZXF1aXJlcyB0aGF0CisgICAgICB5b3UgYWx3YXlzIHNwZWNpZnkgYSBjdXN0b20gZmlsdGVyIGNoYWluIChmb3IgYm90aCBjb21wcmVzc2lvbiBhbmQKKyAgICAgIGRlY29tcHJlc3Npb24pLiBBZGRpdGlvbmFsbHksIGRhdGEgY29tcHJlc3NlZCBpbiB0aGlzIG1hbm5lciBjYW5ub3QgYmUKKyAgICAgIGRlY29tcHJlc3NlZCB1c2luZyA6Y29uc3Q6YEZPUk1BVF9BVVRPYCAoc2VlIDpjbGFzczpgTFpNQURlY29tcHJlc3NvcmApLgorCisgICBUaGUgKmNoZWNrKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgaW50ZWdyaXR5IGNoZWNrIHRvIGluY2x1ZGUgaW4gdGhlCisgICBjb21wcmVzc2VkIGRhdGEuIFRoaXMgY2hlY2sgaXMgdXNlZCB3aGVuIGRlY29tcHJlc3NpbmcsIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgZGF0YSBoYXMgbm90IGJlZW4gY29ycnVwdGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisgICAqIDpjb25zdDpgQ0hFQ0tfTk9ORWA6IE5vIGludGVncml0eSBjaGVjay4KKyAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCAoYW5kIHRoZSBvbmx5IGFjY2VwdGFibGUgdmFsdWUpIGZvcgorICAgICA6Y29uc3Q6YEZPUk1BVF9BTE9ORWAgYW5kIDpjb25zdDpgRk9STUFUX1JBV2AuCisKKyAgICogOmNvbnN0OmBDSEVDS19DUkMzMmA6IDMyLWJpdCBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4KKworICAgKiA6Y29uc3Q6YENIRUNLX0NSQzY0YDogNjQtYml0IEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrLgorICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciA6Y29uc3Q6YEZPUk1BVF9YWmAuCisKKyAgICogOmNvbnN0OmBDSEVDS19TSEEyNTZgOiAyNTYtYml0IFNlY3VyZSBIYXNoIEFsZ29yaXRobS4KKworICAgSWYgdGhlIHNwZWNpZmllZCBjaGVjayBpcyBub3Qgc3VwcG9ydGVkLCBhbiA6Y2xhc3M6YExaTUFFcnJvcmAgaXMgcmFpc2VkLgorCisgICBUaGUgY29tcHJlc3Npb24gc2V0dGluZ3MgY2FuIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBwcmVzZXQgY29tcHJlc3Npb24KKyAgIGxldmVsICh3aXRoIHRoZSAqcHJlc2V0KiBhcmd1bWVudCksIG9yIGluIGRldGFpbCBhcyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4KKyAgICh3aXRoIHRoZSAqZmlsdGVycyogYXJndW1lbnQpLgorCisgICBUaGUgKnByZXNldCogYXJndW1lbnQgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIGBgMGBgIGFuZAorICAgYGA5YGAgKGluY2x1c2l2ZSksIG9wdGlvbmFsbHkgT1ItZWQgd2l0aCB0aGUgY29uc3RhbnQKKyAgIDpjb25zdDpgUFJFU0VUX0VYVFJFTUVgLiBJZiBuZWl0aGVyICpwcmVzZXQqIG5vciAqZmlsdGVycyogYXJlIGdpdmVuLCB0aGUKKyAgIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gdXNlIDpjb25zdDpgUFJFU0VUX0RFRkFVTFRgIChwcmVzZXQgbGV2ZWwgYGA2YGApLgorICAgSGlnaGVyIHByZXNldHMgcHJvZHVjZSBzbWFsbGVyIG91dHB1dCwgYnV0IG1ha2UgdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MKKyAgIHNsb3dlci4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEluIGFkZGl0aW9uIHRvIGJlaW5nIG1vcmUgQ1BVLWludGVuc2l2ZSwgY29tcHJlc3Npb24gd2l0aCBoaWdoZXIgcHJlc2V0cworICAgICAgYWxzbyByZXF1aXJlcyBtdWNoIG1vcmUgbWVtb3J5IChhbmQgcHJvZHVjZXMgb3V0cHV0IHRoYXQgbmVlZHMgbW9yZSBtZW1vcnkKKyAgICAgIHRvIGRlY29tcHJlc3MpLiBXaXRoIHByZXNldCBgYDlgYCBmb3IgZXhhbXBsZSwgdGhlIG92ZXJoZWFkIGZvciBhbgorICAgICAgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAgb2JqZWN0IGNhbiBiZSBhcyBoaWdoIGFzIDgwME1pQi4gRm9yIHRoaXMgcmVhc29uLAorICAgICAgaXQgaXMgZ2VuZXJhbGx5IGJlc3QgdG8gc3RpY2sgd2l0aCB0aGUgZGVmYXVsdCBwcmVzZXQuCisKKyAgIFRoZSAqZmlsdGVycyogYXJndW1lbnQgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYSBmaWx0ZXIgY2hhaW4gc3BlY2lmaWVyLgorICAgU2VlIDpyZWY6YGZpbHRlci1jaGFpbi1zcGVjc2AgZm9yIGRldGFpbHMuCisKKyAgIC4uIG1ldGhvZDo6IGNvbXByZXNzKGRhdGEpCisKKyAgICAgIENvbXByZXNzICpkYXRhKiAoYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCByZXR1cm5pbmcgYSA6Y2xhc3M6YGJ5dGVzYAorICAgICAgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhIGZvciBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBpbnB1dC4gU29tZSBvZgorICAgICAgKmRhdGEqIG1heSBiZSBidWZmZXJlZCBpbnRlcm5hbGx5LCBmb3IgdXNlIGluIGxhdGVyIGNhbGxzIHRvCisgICAgICA6bWV0aDpgY29tcHJlc3NgIGFuZCA6bWV0aDpgZmx1c2hgLiBUaGUgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUKKyAgICAgIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBvdXRwdXQgb2YgYW55IHByZXZpb3VzIGNhbGxzIHRvIDptZXRoOmBjb21wcmVzc2AuCisKKyAgIC4uIG1ldGhvZDo6IGZsdXNoKCkKKworICAgICAgRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLCByZXR1cm5pbmcgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QKKyAgICAgIGNvbnRhaW5pbmcgYW55IGRhdGEgc3RvcmVkIGluIHRoZSBjb21wcmVzc29yJ3MgaW50ZXJuYWwgYnVmZmVycy4KKworICAgICAgVGhlIGNvbXByZXNzb3IgY2Fubm90IGJlIHVzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgorCisKKy4uIGNsYXNzOjogTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgQ3JlYXRlIGEgZGVjb21wcmVzc29yIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZGVjb21wcmVzcyBkYXRhCisgICBpbmNyZW1lbnRhbGx5LgorCisgICBGb3IgYSBtb3JlIGNvbnZlbmllbnQgd2F5IG9mIGRlY29tcHJlc3NpbmcgYW4gZW50aXJlIGNvbXByZXNzZWQgc3RyZWFtIGF0CisgICBvbmNlLCBzZWUgOmZ1bmM6YGRlY29tcHJlc3NgLgorCisgICBUaGUgKmZvcm1hdCogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IHRoYXQgc2hvdWxkIGJlIHVzZWQuIFRoZQorICAgZGVmYXVsdCBpcyA6Y29uc3Q6YEZPUk1BVF9BVVRPYCwgd2hpY2ggY2FuIGRlY29tcHJlc3MgYm90aCBgYC54emBgIGFuZAorICAgYGAubHptYWBgIGZpbGVzLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIDpjb25zdDpgRk9STUFUX1haYCwKKyAgIDpjb25zdDpgRk9STUFUX0FMT05FYCwgYW5kIDpjb25zdDpgRk9STUFUX1JBV2AuCisKKyAgIFRoZSAqbWVtbGltaXQqIGFyZ3VtZW50IHNwZWNpZmllcyBhIGxpbWl0IChpbiBieXRlcykgb24gdGhlIGFtb3VudCBvZiBtZW1vcnkKKyAgIHRoYXQgdGhlIGRlY29tcHJlc3NvciBjYW4gdXNlLiBXaGVuIHRoaXMgYXJndW1lbnQgaXMgdXNlZCwgZGVjb21wcmVzc2lvbiB3aWxsCisgICBmYWlsIHdpdGggYW4gOmNsYXNzOmBMWk1BRXJyb3JgIGlmIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWNvbXByZXNzIHRoZSBpbnB1dAorICAgd2l0aGluIHRoZSBnaXZlbiBtZW1vcnkgbGltaXQuCisKKyAgIFRoZSAqZmlsdGVycyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBmaWx0ZXIgY2hhaW4gdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUKKyAgIHRoZSBzdHJlYW0gYmVpbmcgZGVjb21wcmVzc2VkLiBUaGlzIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGlmICpmb3JtYXQqIGlzCisgICA6Y29uc3Q6YEZPUk1BVF9SQVdgLCBidXQgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBvdGhlciBmb3JtYXRzLgorICAgU2VlIDpyZWY6YGZpbHRlci1jaGFpbi1zcGVjc2AgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZmlsdGVyIGNoYWlucy4KKworICAgLi4gbm90ZTo6CisgICAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHRyYW5zcGFyZW50bHkgaGFuZGxlIGlucHV0cyBjb250YWluaW5nIG11bHRpcGxlCisgICAgICBjb21wcmVzc2VkIHN0cmVhbXMsIHVubGlrZSA6ZnVuYzpgZGVjb21wcmVzc2AgYW5kIDpjbGFzczpgTFpNQUZpbGVgLiBUbworICAgICAgZGVjb21wcmVzcyBhIG11bHRpLXN0cmVhbSBpbnB1dCB3aXRoIDpjbGFzczpgTFpNQURlY29tcHJlc3NvcmAsIHlvdSBtdXN0CisgICAgICBjcmVhdGUgYSBuZXcgZGVjb21wcmVzc29yIGZvciBlYWNoIHN0cmVhbS4KKworICAgLi4gbWV0aG9kOjogZGVjb21wcmVzcyhkYXRhKQorCisgICAgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCByZXR1cm5pbmcgYSA6Y2xhc3M6YGJ5dGVzYAorICAgICAgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBkYXRhIGZvciBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBpbnB1dC4KKyAgICAgIFNvbWUgb2YgKmRhdGEqIG1heSBiZSBidWZmZXJlZCBpbnRlcm5hbGx5LCBmb3IgdXNlIGluIGxhdGVyIGNhbGxzIHRvCisgICAgICA6bWV0aDpgZGVjb21wcmVzc2AuIFRoZSByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUKKyAgICAgIG91dHB1dCBvZiBhbnkgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjaGVjaworCisgICAgICBUaGUgSUQgb2YgdGhlIGludGVncml0eSBjaGVjayB1c2VkIGJ5IHRoZSBpbnB1dCBzdHJlYW0uIFRoaXMgbWF5IGJlCisgICAgICA6Y29uc3Q6YENIRUNLX1VOS05PV05gIHVudGlsIGVub3VnaCBvZiB0aGUgaW5wdXQgaGFzIGJlZW4gZGVjb2RlZCB0bworICAgICAgZGV0ZXJtaW5lIHdoYXQgaW50ZWdyaXR5IGNoZWNrIGl0IHVzZXMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGVvZgorCisgICAgICBUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiB1bnVzZWRfZGF0YQorCisgICAgICBEYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLgorCisgICAgICBCZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIHJlYWNoZWQsIHRoaXMgd2lsbCBiZSBgYGIiImBgLgorCisKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIENvbXByZXNzICpkYXRhKiAoYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCByZXR1cm5pbmcgdGhlIGNvbXByZXNzZWQgZGF0YSBhcyBhCisgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisKKyAgIFNlZSA6Y2xhc3M6YExaTUFDb21wcmVzc29yYCBhYm92ZSBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgKmZvcm1hdCosICpjaGVjayosCisgICAqcHJlc2V0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cy4KKworCisuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIERlY29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEKKyAgIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorCisgICBJZiAqZGF0YSogaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgZGlzdGluY3QgY29tcHJlc3NlZCBzdHJlYW1zLAorICAgZGVjb21wcmVzcyBhbGwgb2YgdGhlc2Ugc3RyZWFtcywgYW5kIHJldHVybiB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgcmVzdWx0cy4KKworICAgU2VlIDpjbGFzczpgTFpNQURlY29tcHJlc3NvcmAgYWJvdmUgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICpmb3JtYXQqLAorICAgKm1lbWxpbWl0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cy4KKworCitNaXNjZWxsYW5lb3VzCistLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogaXNfY2hlY2tfc3VwcG9ydGVkKGNoZWNrKQorCisgICBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGludGVncml0eSBjaGVjayBpcyBzdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0uCisKKyAgIDpjb25zdDpgQ0hFQ0tfTk9ORWAgYW5kIDpjb25zdDpgQ0hFQ0tfQ1JDMzJgIGFyZSBhbHdheXMgc3VwcG9ydGVkLgorICAgOmNvbnN0OmBDSEVDS19DUkM2NGAgYW5kIDpjb25zdDpgQ0hFQ0tfU0hBMjU2YCBtYXkgYmUgdW5hdmFpbGFibGUgaWYgeW91IGFyZQorICAgdXNpbmcgYSB2ZXJzaW9uIG9mIDpwcm9ncmFtOmBsaWJsem1hYCB0aGF0IHdhcyBjb21waWxlZCB3aXRoIGEgbGltaXRlZAorICAgZmVhdHVyZSBzZXQuCisKKworLi4gX2ZpbHRlci1jaGFpbi1zcGVjczoKKworU3BlY2lmeWluZyBjdXN0b20gZmlsdGVyIGNoYWlucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGZpbHRlciBjaGFpbiBzcGVjaWZpZXIgaXMgYSBzZXF1ZW5jZSBvZiBkaWN0aW9uYXJpZXMsIHdoZXJlIGVhY2ggZGljdGlvbmFyeQorY29udGFpbnMgdGhlIElEIGFuZCBvcHRpb25zIGZvciBhIHNpbmdsZSBmaWx0ZXIuIEVhY2ggZGljdGlvbmFyeSBtdXN0IGNvbnRhaW4KK3RoZSBrZXkgYGAiaWQiYGAsIGFuZCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGtleXMgdG8gc3BlY2lmeSBmaWx0ZXItZGVwZW5kZW50CitvcHRpb25zLiBWYWxpZCBmaWx0ZXIgSURzIGFyZSBhcyBmb2xsb3dzOgorCisqIENvbXByZXNzaW9uIGZpbHRlcnM6CisgICAqIDpjb25zdDpgRklMVEVSX0xaTUExYCAoZm9yIHVzZSB3aXRoIDpjb25zdDpgRk9STUFUX0FMT05FYCkKKyAgICogOmNvbnN0OmBGSUxURVJfTFpNQTJgIChmb3IgdXNlIHdpdGggOmNvbnN0OmBGT1JNQVRfWFpgIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgKQorCisqIERlbHRhIGZpbHRlcjoKKyAgICogOmNvbnN0OmBGSUxURVJfREVMVEFgCisKKyogQnJhbmNoLUNhbGwtSnVtcCAoQkNKKSBmaWx0ZXJzOgorICAgKiA6Y29uc3Q6YEZJTFRFUl9YODZgCisgICAqIDpjb25zdDpgRklMVEVSX0lBNjRgCisgICAqIDpjb25zdDpgRklMVEVSX0FSTWAKKyAgICogOmNvbnN0OmBGSUxURVJfQVJNVEhVTUJgCisgICAqIDpjb25zdDpgRklMVEVSX1BPV0VSUENgCisgICAqIDpjb25zdDpgRklMVEVSX1NQQVJDYAorCitBIGZpbHRlciBjaGFpbiBjYW4gY29uc2lzdCBvZiB1cCB0byA0IGZpbHRlcnMsIGFuZCBjYW5ub3QgYmUgZW1wdHkuIFRoZSBsYXN0CitmaWx0ZXIgaW4gdGhlIGNoYWluIG11c3QgYmUgYSBjb21wcmVzc2lvbiBmaWx0ZXIsIGFuZCBhbnkgb3RoZXIgZmlsdGVycyBtdXN0IGJlCitkZWx0YSBvciBCQ0ogZmlsdGVycy4KKworQ29tcHJlc3Npb24gZmlsdGVycyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyAoc3BlY2lmaWVkIGFzIGFkZGl0aW9uYWwKK2VudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkgcmVwcmVzZW50aW5nIHRoZSBmaWx0ZXIpOgorCisgICAqIGBgcHJlc2V0YGA6IEEgY29tcHJlc3Npb24gcHJlc2V0IHRvIHVzZSBhcyBhIHNvdXJjZSBvZiBkZWZhdWx0IHZhbHVlcyBmb3IKKyAgICAgb3B0aW9ucyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkuCisgICAqIGBgZGljdF9zaXplYGA6IERpY3Rpb25hcnkgc2l6ZSBpbiBieXRlcy4gVGhpcyBzaG91bGQgYmUgYmV0d2VlbiA0S2lCIGFuZAorICAgICAxLjVHaUIgKGluY2x1c2l2ZSkuCisgICAqIGBgbGNgYDogTnVtYmVyIG9mIGxpdGVyYWwgY29udGV4dCBiaXRzLgorICAgKiBgYGxwYGA6IE51bWJlciBvZiBsaXRlcmFsIHBvc2l0aW9uIGJpdHMuIFRoZSBzdW0gYGBsYyArIGxwYGAgbXVzdCBiZSBhdAorICAgICBtb3N0IDQuCisgICAqIGBgcGJgYDogTnVtYmVyIG9mIHBvc2l0aW9uIGJpdHM7IG11c3QgYmUgYXQgbW9zdCA0LgorICAgKiBgYG1vZGVgYDogOmNvbnN0OmBNT0RFX0ZBU1RgIG9yIDpjb25zdDpgTU9ERV9OT1JNQUxgLgorICAgKiBgYG5pY2VfbGVuYGA6IFdoYXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAibmljZSBsZW5ndGgiIGZvciBhIG1hdGNoLgorICAgICBUaGlzIHNob3VsZCBiZSAyNzMgb3IgbGVzcy4KKyAgICogYGBtZmBgOiBXaGF0IG1hdGNoIGZpbmRlciB0byB1c2UgLS0gOmNvbnN0OmBNRl9IQzNgLCA6Y29uc3Q6YE1GX0hDNGAsCisgICAgIDpjb25zdDpgTUZfQlQyYCwgOmNvbnN0OmBNRl9CVDNgLCBvciA6Y29uc3Q6YE1GX0JUNGAuCisgICAqIGBgZGVwdGhgYDogTWF4aW11bSBzZWFyY2ggZGVwdGggdXNlZCBieSBtYXRjaCBmaW5kZXIuIDAgKGRlZmF1bHQpIG1lYW5zIHRvCisgICAgIHNlbGVjdCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIG90aGVyIGZpbHRlciBvcHRpb25zLgorCitUaGUgZGVsdGEgZmlsdGVyIHN0b3JlcyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBieXRlcywgcHJvZHVjaW5nIG1vcmUgcmVwZXRpdGl2ZQoraW5wdXQgZm9yIHRoZSBjb21wcmVzc29yIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4gSXQgb25seSBzdXBwb3J0cyBhIHNpbmdsZQorVGhlIGRlbHRhIGZpbHRlciBzdXBwb3J0cyBvbmx5IG9uZSBvcHRpb24sIGBgZGlzdGBgLiBUaGlzIGluZGljYXRlcyB0aGUgZGlzdGFuY2UKK2JldHdlZW4gYnl0ZXMgdG8gYmUgc3VidHJhY3RlZC4gVGhlIGRlZmF1bHQgaXMgMSwgaS5lLiB0YWtlIHRoZSBkaWZmZXJlbmNlcworYmV0d2VlbiBhZGphY2VudCBieXRlcy4KKworVGhlIEJDSiBmaWx0ZXJzIGFyZSBpbnRlbmRlZCB0byBiZSBhcHBsaWVkIHRvIG1hY2hpbmUgY29kZS4gVGhleSBjb252ZXJ0CityZWxhdGl2ZSBicmFuY2hlcywgY2FsbHMgYW5kIGp1bXBzIGluIHRoZSBjb2RlIHRvIHVzZSBhYnNvbHV0ZSBhZGRyZXNzaW5nLCB3aXRoCit0aGUgYWltIG9mIGluY3JlYXNpbmcgdGhlIHJlZHVuZGFuY3kgdGhhdCBjYW4gYmUgZXhwbG9pdGVkIGJ5IHRoZSBjb21wcmVzc29yLgorVGhlc2UgZmlsdGVycyBzdXBwb3J0IG9uZSBvcHRpb24sIGBgc3RhcnRfb2Zmc2V0YGAuIFRoaXMgc3BlY2lmaWVzIHRoZSBhZGRyZXNzCit0aGF0IHNob3VsZCBiZSBtYXBwZWQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQgZGF0YS4gVGhlIGRlZmF1bHQgaXMgMC4KKworCitFeGFtcGxlcworLS0tLS0tLS0KKworUmVhZGluZyBpbiBhIGNvbXByZXNzZWQgZmlsZTo6CisKKyAgIGltcG9ydCBsem1hCisgICB3aXRoIGx6bWEub3BlbigiZmlsZS54eiIpIGFzIGY6CisgICAgICAgZmlsZV9jb250ZW50ID0gZi5yZWFkKCkKKworQ3JlYXRpbmcgYSBjb21wcmVzc2VkIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgZGF0YSA9IGIiSW5zZXJ0IERhdGEgSGVyZSIKKyAgIHdpdGggbHptYS5vcGVuKCJmaWxlLnh6IiwgInciKSBhcyBmOgorICAgICAgIGYud3JpdGUoZGF0YSkKKworQ29tcHJlc3NpbmcgZGF0YSBpbiBtZW1vcnk6OgorCisgICBpbXBvcnQgbHptYQorICAgZGF0YV9pbiA9IGIiSW5zZXJ0IERhdGEgSGVyZSIKKyAgIGRhdGFfb3V0ID0gbHptYS5jb21wcmVzcyhkYXRhX2luKQorCitJbmNyZW1lbnRhbCBjb21wcmVzc2lvbjo6CisKKyAgIGltcG9ydCBsem1hCisgICBsemMgPSBsem1hLkxaTUFDb21wcmVzc29yKCkKKyAgIG91dDEgPSBsemMuY29tcHJlc3MoYiJTb21lIGRhdGFcbiIpCisgICBvdXQyID0gbHpjLmNvbXByZXNzKGIiQW5vdGhlciBwaWVjZSBvZiBkYXRhXG4iKQorICAgb3V0MyA9IGx6Yy5jb21wcmVzcyhiIkV2ZW4gbW9yZSBkYXRhXG4iKQorICAgb3V0NCA9IGx6Yy5mbHVzaCgpCisgICAjIENvbmNhdGVuYXRlIGFsbCB0aGUgcGFydGlhbCByZXN1bHRzOgorICAgcmVzdWx0ID0gYiIiLmpvaW4oW291dDEsIG91dDIsIG91dDMsIG91dDRdKQorCitXcml0aW5nIGNvbXByZXNzZWQgZGF0YSB0byBhbiBhbHJlYWR5LW9wZW4gZmlsZTo6CisKKyAgIGltcG9ydCBsem1hCisgICB3aXRoIG9wZW4oImZpbGUueHoiLCAid2IiKSBhcyBmOgorICAgICAgIGYud3JpdGUoYiJUaGlzIGRhdGEgd2lsbCBub3QgYmUgY29tcHJlc3NlZFxuIikKKyAgICAgICB3aXRoIGx6bWEub3BlbihmLCAidyIpIGFzIGx6ZjoKKyAgICAgICAgICAgbHpmLndyaXRlKGIiVGhpcyAqd2lsbCogYmUgY29tcHJlc3NlZFxuIikKKyAgICAgICBmLndyaXRlKGIiTm90IGNvbXByZXNzZWRcbiIpCisKK0NyZWF0aW5nIGEgY29tcHJlc3NlZCBmaWxlIHVzaW5nIGEgY3VzdG9tIGZpbHRlciBjaGFpbjo6CisKKyAgIGltcG9ydCBsem1hCisgICBteV9maWx0ZXJzID0gWworICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImRpc3QiOiA1fSwKKyAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiA3IHwgbHptYS5QUkVTRVRfRVhUUkVNRX0sCisgICBdCisgICB3aXRoIGx6bWEub3BlbigiZmlsZS54eiIsICJ3IiwgZmlsdGVycz1teV9maWx0ZXJzKSBhcyBmOgorICAgICAgIGYud3JpdGUoYiJibGFoIGJsYWggYmxhaCIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXJrdXAucnN0IGIvRG9jL2xpYnJhcnkvbWFya3VwLnJzdAppbmRleCAxYjRjY2E1Li4xNTg4YWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXJrdXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hcmt1cC5yc3QKQEAgLTksMjAgKzksMTMgQEAKIExhbmd1YWdlIChTR01MKSBhbmQgdGhlIEh5cGVydGV4dCBNYXJrdXAgTGFuZ3VhZ2UgKEhUTUwpLCBhbmQgc2V2ZXJhbCBpbnRlcmZhY2VzCiBmb3Igd29ya2luZyB3aXRoIHRoZSBFeHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSAoWE1MKS4KIAotSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCBtb2R1bGVzIGluIHRoZSA6bW9kOmB4bWxgIHBhY2thZ2UgcmVxdWlyZSB0aGF0Ci10aGVyZSBiZSBhdCBsZWFzdCBvbmUgU0FYLWNvbXBsaWFudCBYTUwgcGFyc2VyIGF2YWlsYWJsZS4gVGhlIEV4cGF0IHBhcnNlciBpcwotaW5jbHVkZWQgd2l0aCBQeXRob24sIHNvIHRoZSA6bW9kOmB4bWwucGFyc2Vycy5leHBhdGAgbW9kdWxlIHdpbGwgYWx3YXlzIGJlCi1hdmFpbGFibGUuCi0KLVRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOm1vZDpgeG1sLmRvbWAgYW5kIDptb2Q6YHhtbC5zYXhgIHBhY2thZ2VzIGFyZSB0aGUKLWRlZmluaXRpb24gb2YgdGhlIFB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERPTSBhbmQgU0FYIGludGVyZmFjZXMuCi0KIAogLi4gdG9jdHJlZTo6CiAKICAgIGh0bWwucnN0CiAgICBodG1sLnBhcnNlci5yc3QKICAgIGh0bWwuZW50aXRpZXMucnN0CisgICB4bWwucnN0CiAgICB4bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CiAgICB4bWwuZG9tLnJzdAogICAgeG1sLmRvbS5taW5pZG9tLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdAppbmRleCBjMDgyOTgwLi4yZjI1NThiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdApAQCAtMTg3LDYgKzE4NywxOSBAQAogICAgcmVzdWx0IGlzIGNhbGN1bGF0ZWQgaW4gYSB3YXkgd2hpY2ggaXMgYWNjdXJhdGUgZm9yICp4KiBuZWFyIHplcm8uCiAKIAorLi4gZnVuY3Rpb246OiBsb2cyKHgpCisKKyAgIFJldHVybiB0aGUgYmFzZS0yIGxvZ2FyaXRobSBvZiAqeCouIFRoaXMgaXMgdXN1YWxseSBtb3JlIGFjY3VyYXRlIHRoYW4KKyAgIGBgbG9nKHgsIDIpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOm1ldGg6YGludC5iaXRfbGVuZ3RoYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50CisgICAgICBhbiBpbnRlZ2VyIGluIGJpbmFyeSwgZXhjbHVkaW5nIHRoZSBzaWduIGFuZCBsZWFkaW5nIHplcm9zLgorCisKIC4uIGZ1bmN0aW9uOjogbG9nMTAoeCkKIAogICAgUmV0dXJuIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiAqeCouICBUaGlzIGlzIHVzdWFsbHkgbW9yZSBhY2N1cmF0ZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdAppbmRleCA1ZjBmMDA0Li4xYTE5YTdlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tbWFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdApAQCAtMTk2LDEyICsxOTYsMTYgQEAKICAgICAgIG1vdmUgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uLgogCiAKLSAgIC4uIG1ldGhvZDo6IHJlYWQobnVtKQorICAgLi4gbWV0aG9kOjogcmVhZChbbl0pCiAKLSAgICAgIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIGNvbnRhaW5pbmcgdXAgdG8gKm51bSogYnl0ZXMgc3RhcnRpbmcgZnJvbSB0aGUKLSAgICAgIGN1cnJlbnQgZmlsZSBwb3NpdGlvbjsgdGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUKLSAgICAgIGJ5dGVzIHRoYXQgd2VyZSByZXR1cm5lZC4KKyAgICAgIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIGNvbnRhaW5pbmcgdXAgdG8gKm4qIGJ5dGVzIHN0YXJ0aW5nIGZyb20gdGhlCisgICAgICBjdXJyZW50IGZpbGUgcG9zaXRpb24uIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCAqTm9uZSogb3IgbmVnYXRpdmUsCisgICAgICByZXR1cm4gYWxsIGJ5dGVzIGZyb20gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiB0byB0aGUgZW5kIG9mIHRoZQorICAgICAgbWFwcGluZy4gVGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdCB3ZXJlCisgICAgICByZXR1cm5lZC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFyZ3VtZW50IGNhbiBiZSBvbWl0dGVkIG9yICpOb25lKi4KIAogICAgLi4gbWV0aG9kOjogcmVhZF9ieXRlKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdCBiL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKaW5kZXggODg5YTBjNS4uOWQyMzcyMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CkBAIC0yMCw2ICsyMCwxMSBAQAogZm9yIGludGVybmF0aW9uYWxpemVkIGFwcGxpY2F0aW9ucy4gVGhlIHdpZGUgY2hhciBBUEkgc2hvdWxkIGJlIHVzZWQgd2hlcmUKIGV2ZXIgcG9zc2libGUKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIE9wZXJhdGlvbnMgaW4gdGhpcyBtb2R1bGUgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgIHdoZXJlIDpleGM6YElPRXJyb3JgCisgICB3YXMgcmFpc2VkLgorCisKIC4uIF9tc3ZjcnQtZmlsZXM6CiAKIEZpbGUgT3BlcmF0aW9ucwpAQCAtMjksNyArMzQsNyBAQAogLi4gZnVuY3Rpb246OiBsb2NraW5nKGZkLCBtb2RlLCBuYnl0ZXMpCiAKICAgIExvY2sgcGFydCBvZiBhIGZpbGUgYmFzZWQgb24gZmlsZSBkZXNjcmlwdG9yICpmZCogZnJvbSB0aGUgQyBydW50aW1lLiAgUmFpc2VzCi0gICA6ZXhjOmBJT0Vycm9yYCBvbiBmYWlsdXJlLiAgVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tIHRoZQorICAgOmV4YzpgT1NFcnJvcmAgb24gZmFpbHVyZS4gIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbSB0aGUKICAgIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBmb3IgKm5ieXRlcyogYnl0ZXMsIGFuZCBtYXkgY29udGludWUgYmV5b25kIHRoZSBlbmQgb2YgdGhlCiAgICBmaWxlLiAgKm1vZGUqIG11c3QgYmUgb25lIG9mIHRoZSA6Y29uc3Q6YExLX1wqYCBjb25zdGFudHMgbGlzdGVkIGJlbG93LiBNdWx0aXBsZQogICAgcmVnaW9ucyBpbiBhIGZpbGUgbWF5IGJlIGxvY2tlZCBhdCB0aGUgc2FtZSB0aW1lLCBidXQgbWF5IG5vdCBvdmVybGFwLiAgQWRqYWNlbnQKQEAgLTQxLDEzICs0NiwxMyBAQAogCiAgICBMb2NrcyB0aGUgc3BlY2lmaWVkIGJ5dGVzLiBJZiB0aGUgYnl0ZXMgY2Fubm90IGJlIGxvY2tlZCwgdGhlIHByb2dyYW0KICAgIGltbWVkaWF0ZWx5IHRyaWVzIGFnYWluIGFmdGVyIDEgc2Vjb25kLiAgSWYsIGFmdGVyIDEwIGF0dGVtcHRzLCB0aGUgYnl0ZXMgY2Fubm90Ci0gICBiZSBsb2NrZWQsIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKyAgIGJlIGxvY2tlZCwgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGRhdGE6OiBMS19OQkxDSwogICAgICAgICAgIExLX05CUkxDSwogCi0gICBMb2NrcyB0aGUgc3BlY2lmaWVkIGJ5dGVzLiBJZiB0aGUgYnl0ZXMgY2Fubm90IGJlIGxvY2tlZCwgOmV4YzpgSU9FcnJvcmAgaXMKKyAgIExvY2tzIHRoZSBzcGVjaWZpZWQgYnl0ZXMuIElmIHRoZSBieXRlcyBjYW5ub3QgYmUgbG9ja2VkLCA6ZXhjOmBPU0Vycm9yYCBpcwogICAgcmFpc2VkLgogCiAKQEAgLTczLDcgKzc4LDcgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRfb3NmaGFuZGxlKGZkKQogCi0gICBSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBSYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYKKyAgIFJldHVybiB0aGUgZmlsZSBoYW5kbGUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gIFJhaXNlcyA6ZXhjOmBPU0Vycm9yYCBpZgogICAgKmZkKiBpcyBub3QgcmVjb2duaXplZC4KIAogCkBAIC0xNDQsNCArMTQ5LDQgQEAKIC4uIGZ1bmN0aW9uOjogaGVhcG1pbigpCiAKICAgIEZvcmNlIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGhlYXAgdG8gY2xlYW4gaXRzZWxmIHVwIGFuZCByZXR1cm4gdW51c2VkIGJsb2NrcyB0bwotICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyA6ZXhjOmBJT0Vycm9yYC4KKyAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgOmV4YzpgT1NFcnJvcmAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0IGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAppbmRleCA0MjcxZmMyLi5hNzgzZWZjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKICAgICBGdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGlzIHBhY2thZ2UgcmVxdWlyZXMgdGhhdCB0aGUgYGBfX21haW5fX2BgIG1vZHVsZSBiZQogICAgIGltcG9ydGFibGUgYnkgdGhlIGNoaWxkcmVuLiBUaGlzIGlzIGNvdmVyZWQgaW4gOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb2dyYW1taW5nYAogICAgIGhvd2V2ZXIgaXQgaXMgd29ydGggcG9pbnRpbmcgb3V0IGhlcmUuIFRoaXMgbWVhbnMgdGhhdCBzb21lIGV4YW1wbGVzLCBzdWNoCi0gICAgYXMgdGhlIDpjbGFzczpgbXVsdGlwcm9jZXNzaW5nLlBvb2xgIGV4YW1wbGVzIHdpbGwgbm90IHdvcmsgaW4gdGhlCisgICAgYXMgdGhlIDpjbGFzczpgbXVsdGlwcm9jZXNzaW5nLnBvb2wuUG9vbGAgZXhhbXBsZXMgd2lsbCBub3Qgd29yayBpbiB0aGUKICAgICBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4gRm9yIGV4YW1wbGU6OgogCiAgICAgICAgID4+PiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUG9vbApAQCAtMTIxLDkgKzEyMSw3IEBACiAgICAgICAgICAgcHJpbnQocS5nZXQoKSkgICAgIyBwcmludHMgIls0MiwgTm9uZSwgJ2hlbGxvJ10iCiAgICAgICAgICAgcC5qb2luKCkKIAotICAgUXVldWVzIGFyZSB0aHJlYWQgYW5kIHByb2Nlc3Mgc2FmZSwgYnV0IG5vdGUgdGhhdCB0aGV5IG11c3QgbmV2ZXIKLSAgIGJlIGluc3RhbnRpYXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGltcG9ydGluZyBhIG1vZHVsZTogdGhpcyBjYW4gbGVhZAotICAgdG8gYSBkZWFkbG9jayEgIChzZWUgOnJlZjpgdGhyZWFkZWQtaW1wb3J0c2ApCisgICBRdWV1ZXMgYXJlIHRocmVhZCBhbmQgcHJvY2VzcyBzYWZlLgogCiAqKlBpcGVzKioKIApAQCAtMjI5LDExICsyMjcsMTEgQEAKICAgIGhvbGRzIFB5dGhvbiBvYmplY3RzIGFuZCBhbGxvd3Mgb3RoZXIgcHJvY2Vzc2VzIHRvIG1hbmlwdWxhdGUgdGhlbSB1c2luZwogICAgcHJveGllcy4KIAotICAgQSBtYW5hZ2VyIHJldHVybmVkIGJ5IDpmdW5jOmBNYW5hZ2VyYCB3aWxsIHN1cHBvcnQgdHlwZXMgOmNsYXNzOmBsaXN0YCwKLSAgIDpjbGFzczpgZGljdGAsIDpjbGFzczpgTmFtZXNwYWNlYCwgOmNsYXNzOmBMb2NrYCwgOmNsYXNzOmBSTG9ja2AsCi0gICA6Y2xhc3M6YFNlbWFwaG9yZWAsIDpjbGFzczpgQm91bmRlZFNlbWFwaG9yZWAsIDpjbGFzczpgQ29uZGl0aW9uYCwKLSAgIDpjbGFzczpgRXZlbnRgLCA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBWYWx1ZWAgYW5kIDpjbGFzczpgQXJyYXlgLiAgRm9yCi0gICBleGFtcGxlLCA6OgorICAgQSBtYW5hZ2VyIHJldHVybmVkIGJ5IDpmdW5jOmBNYW5hZ2VyYCB3aWxsIHN1cHBvcnQgdHlwZXMKKyAgIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgZGljdGAsIDpjbGFzczpgTmFtZXNwYWNlYCwgOmNsYXNzOmBMb2NrYCwKKyAgIDpjbGFzczpgUkxvY2tgLCA6Y2xhc3M6YFNlbWFwaG9yZWAsIDpjbGFzczpgQm91bmRlZFNlbWFwaG9yZWAsCisgICA6Y2xhc3M6YENvbmRpdGlvbmAsIDpjbGFzczpgRXZlbnRgLCA6Y2xhc3M6YEJhcnJpZXJgLAorICAgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgVmFsdWVgIGFuZCA6Y2xhc3M6YEFycmF5YC4gIEZvciBleGFtcGxlLCA6OgogCiAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgTWFuYWdlcgogCkBAIC0yNDQsMTcgKzI0MiwxNiBAQAogICAgICAgICAgIGwucmV2ZXJzZSgpCiAKICAgICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIoKQorICAgICAgICAgIHdpdGggTWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgICAgIGQgPSBtYW5hZ2VyLmRpY3QoKQorICAgICAgICAgICAgICBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKIAotICAgICAgICAgIGQgPSBtYW5hZ2VyLmRpY3QoKQotICAgICAgICAgIGwgPSBtYW5hZ2VyLmxpc3QocmFuZ2UoMTApKQorICAgICAgICAgICAgICBwID0gUHJvY2Vzcyh0YXJnZXQ9ZiwgYXJncz0oZCwgbCkpCisgICAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgICBwLmpvaW4oKQogCi0gICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWYsIGFyZ3M9KGQsIGwpKQotICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgIHAuam9pbigpCi0KLSAgICAgICAgICBwcmludChkKQotICAgICAgICAgIHByaW50KGwpCisgICAgICAgICAgICAgIHByaW50KGQpCisgICAgICAgICAgICAgIHByaW50KGwpCiAKICAgIHdpbGwgcHJpbnQgOjoKIApAQCAtMjgyLDEwICsyNzksMTAgQEAKICAgICAgICByZXR1cm4geCp4CiAKICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgcG9vbCA9IFBvb2wocHJvY2Vzc2VzPTQpICAgICAgICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKLSAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKGYsIFsxMF0pICAgICAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdwotICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKKyAgICAgICB3aXRoIFBvb2wocHJvY2Vzc2VzPTQpIGFzIHBvb2w6ICAgICAgICAjIHN0YXJ0IDQgd29ya2VyIHByb2Nlc3NlcworICAgICAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKGYsIFsxMF0pICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CisgICAgICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgogCiAKIFJlZmVyZW5jZQpAQCAtMjk4LDcgKzI5NSw4IEBACiA6Y2xhc3M6YFByb2Nlc3NgIGFuZCBleGNlcHRpb25zCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLS4uIGNsYXNzOjogUHJvY2Vzcyhncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30pCisuLiBjbGFzczo6IFByb2Nlc3MoZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9LCBcCisgICAgICAgICAgICAgICAgICAgKiwgZGFlbW9uPU5vbmUpCiAKICAgIFByb2Nlc3Mgb2JqZWN0cyByZXByZXNlbnQgYWN0aXZpdHkgdGhhdCBpcyBydW4gaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLiBUaGUKICAgIDpjbGFzczpgUHJvY2Vzc2AgY2xhc3MgaGFzIGVxdWl2YWxlbnRzIG9mIGFsbCB0aGUgbWV0aG9kcyBvZgpAQCAtMzA4LDE4ICszMDYsMjIgQEAKICAgIHNob3VsZCBhbHdheXMgYmUgYGBOb25lYGA7IGl0IGV4aXN0cyBzb2xlbHkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aAogICAgOmNsYXNzOmB0aHJlYWRpbmcuVGhyZWFkYC4gICp0YXJnZXQqIGlzIHRoZSBjYWxsYWJsZSBvYmplY3QgdG8gYmUgaW52b2tlZCBieQogICAgdGhlIDptZXRoOmBydW4oKWAgbWV0aG9kLiAgSXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsIG1lYW5pbmcgbm90aGluZyBpcwotICAgY2FsbGVkLiAqbmFtZSogaXMgdGhlIHByb2Nlc3MgbmFtZS4gIEJ5IGRlZmF1bHQsIGEgdW5pcXVlIG5hbWUgaXMgY29uc3RydWN0ZWQKLSAgIG9mIHRoZSBmb3JtICdQcm9jZXNzLU5cIDpzdWI6YDFgOk5cIDpzdWI6YDJgOi4uLjpOXCA6c3ViOmBrYCcgd2hlcmUgTlwKLSAgIDpzdWI6YDFgLE5cIDpzdWI6YDJgLC4uLixOXCA6c3ViOmBrYCBpcyBhIHNlcXVlbmNlIG9mIGludGVnZXJzIHdob3NlIGxlbmd0aAotICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgKmdlbmVyYXRpb24qIG9mIHRoZSBwcm9jZXNzLiAgKmFyZ3MqIGlzIHRoZSBhcmd1bWVudAotICAgdHVwbGUgZm9yIHRoZSB0YXJnZXQgaW52b2NhdGlvbi4gICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBvZiBrZXl3b3JkCi0gICBhcmd1bWVudHMgZm9yIHRoZSB0YXJnZXQgaW52b2NhdGlvbi4gIEJ5IGRlZmF1bHQsIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvCi0gICAqdGFyZ2V0Ki4KKyAgIGNhbGxlZC4gKm5hbWUqIGlzIHRoZSBwcm9jZXNzIG5hbWUgKHNlZSA6YXR0cjpgbmFtZWAgZm9yIG1vcmUgZGV0YWlscykuCisgICAqYXJncyogaXMgdGhlIGFyZ3VtZW50IHR1cGxlIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICAqa3dhcmdzKiBpcyBhCisgICBkaWN0aW9uYXJ5IG9mIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICBJZiBwcm92aWRlZCwKKyAgIHRoZSBrZXl3b3JkLW9ubHkgKmRhZW1vbiogYXJndW1lbnQgc2V0cyB0aGUgcHJvY2VzcyA6YXR0cjpgZGFlbW9uYCBmbGFnCisgICB0byBgYFRydWVgYCBvciBgYEZhbHNlYGAuICBJZiBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB0aGlzIGZsYWcgd2lsbCBiZQorICAgaW5oZXJpdGVkIGZyb20gdGhlIGNyZWF0aW5nIHByb2Nlc3MuCisKKyAgIEJ5IGRlZmF1bHQsIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvICp0YXJnZXQqLgogCiAgICBJZiBhIHN1YmNsYXNzIG92ZXJyaWRlcyB0aGUgY29uc3RydWN0b3IsIGl0IG11c3QgbWFrZSBzdXJlIGl0IGludm9rZXMgdGhlCiAgICBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yICg6bWV0aDpgUHJvY2Vzcy5fX2luaXRfX2ApIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlCiAgICB0byB0aGUgcHJvY2Vzcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGFlbW9uKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogcnVuKCkKIAogICAgICAgTWV0aG9kIHJlcHJlc2VudGluZyB0aGUgcHJvY2VzcydzIGFjdGl2aXR5LgpAQCAtMzM4LDEwICszNDAsOSBAQAogCiAgICAuLiBtZXRob2Q6OiBqb2luKFt0aW1lb3V0XSkKIAotICAgICAgQmxvY2sgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBwcm9jZXNzIHdob3NlIDptZXRoOmBqb2luYCBtZXRob2QgaXMKLSAgICAgIGNhbGxlZCB0ZXJtaW5hdGVzIG9yIHVudGlsIHRoZSBvcHRpb25hbCB0aW1lb3V0IG9jY3Vycy4KLQotICAgICAgSWYgKnRpbWVvdXQqIGlzIGBgTm9uZWBgIHRoZW4gdGhlcmUgaXMgbm8gdGltZW91dC4KKyAgICAgIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqdGltZW91dCogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdGhlIG1ldGhvZAorICAgICAgYmxvY2tzIHVudGlsIHRoZSBwcm9jZXNzIHdob3NlIDptZXRoOmBqb2luYCBtZXRob2QgaXMgY2FsbGVkIHRlcm1pbmF0ZXMuCisgICAgICBJZiAqdGltZW91dCogaXMgYSBwb3NpdGl2ZSBudW1iZXIsIGl0IGJsb2NrcyBhdCBtb3N0ICp0aW1lb3V0KiBzZWNvbmRzLgogCiAgICAgICBBIHByb2Nlc3MgY2FuIGJlIGpvaW5lZCBtYW55IHRpbWVzLgogCkBAIC0zNTAsMTEgKzM1MSwxNCBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCiAKLSAgICAgIFRoZSBwcm9jZXNzJ3MgbmFtZS4KKyAgICAgIFRoZSBwcm9jZXNzJ3MgbmFtZS4gIFRoZSBuYW1lIGlzIGEgc3RyaW5nIHVzZWQgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzCisgICAgICBvbmx5LiAgSXQgaGFzIG5vIHNlbWFudGljcy4gIE11bHRpcGxlIHByb2Nlc3NlcyBtYXkgYmUgZ2l2ZW4gdGhlIHNhbWUKKyAgICAgIG5hbWUuCiAKLSAgICAgIFRoZSBuYW1lIGlzIGEgc3RyaW5nIHVzZWQgZm9yIGlkZW50aWZpY2F0aW9uIHB1cnBvc2VzIG9ubHkuICBJdCBoYXMgbm8KLSAgICAgIHNlbWFudGljcy4gIE11bHRpcGxlIHByb2Nlc3NlcyBtYXkgYmUgZ2l2ZW4gdGhlIHNhbWUgbmFtZS4gIFRoZSBpbml0aWFsCi0gICAgICBuYW1lIGlzIHNldCBieSB0aGUgY29uc3RydWN0b3IuCisgICAgICBUaGUgaW5pdGlhbCBuYW1lIGlzIHNldCBieSB0aGUgY29uc3RydWN0b3IuICBJZiBubyBleHBsaWNpdCBuYW1lIGlzCisgICAgICBwcm92aWRlZCB0byB0aGUgY29uc3RydWN0b3IsIGEgbmFtZSBvZiB0aGUgZm9ybQorICAgICAgJ1Byb2Nlc3MtTlwgOnN1YjpgMWA6TlwgOnN1YjpgMmA6Li4uOk5cIDpzdWI6YGtgJyBpcyBjb25zdHJ1Y3RlZCwgd2hlcmUKKyAgICAgIGVhY2ggTlwgOnN1Yjpga2AgaXMgdGhlIE4tdGggY2hpbGQgb2YgaXRzIHBhcmVudC4KIAogICAgLi4gbWV0aG9kOjogaXNfYWxpdmUKIApAQCAtNDA2LDYgKzQxMCwyMSBAQAogCiAgICAgICBTZWUgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLWF1dGgta2V5c2AuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHNlbnRpbmVsCisKKyAgICAgIEEgbnVtZXJpYyBoYW5kbGUgb2YgYSBzeXN0ZW0gb2JqZWN0IHdoaWNoIHdpbGwgYmVjb21lICJyZWFkeSIgd2hlbgorICAgICAgdGhlIHByb2Nlc3MgZW5kcy4KKworICAgICAgWW91IGNhbiB1c2UgdGhpcyB2YWx1ZSBpZiB5b3Ugd2FudCB0byB3YWl0IG9uIHNldmVyYWwgZXZlbnRzIGF0CisgICAgICBvbmNlIHVzaW5nIDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0YC4gIE90aGVyd2lzZQorICAgICAgY2FsbGluZyA6bWV0aDpgam9pbigpYCBpcyBzaW1wbGVyLgorCisgICAgICBPbiBXaW5kb3dzLCB0aGlzIGlzIGFuIE9TIGhhbmRsZSB1c2FibGUgd2l0aCB0aGUgYGBXYWl0Rm9yU2luZ2xlT2JqZWN0YGAKKyAgICAgIGFuZCBgYFdhaXRGb3JNdWx0aXBsZU9iamVjdHNgYCBmYW1pbHkgb2YgQVBJIGNhbGxzLiAgT24gVW5peCwgdGhpcyBpcworICAgICAgYSBmaWxlIGRlc2NyaXB0b3IgdXNhYmxlIHdpdGggcHJpbWl0aXZlcyBmcm9tIHRoZSA6bW9kOmBzZWxlY3RgIG1vZHVsZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IHRlcm1pbmF0ZSgpCiAKICAgICAgIFRlcm1pbmF0ZSB0aGUgcHJvY2Vzcy4gIE9uIFVuaXggdGhpcyBpcyBkb25lIHVzaW5nIHRoZSBgYFNJR1RFUk1gYCBzaWduYWw7CkBAIC00NDUsNiArNDY0LDkgQEAKICAgICAgICA+Pj4gcC5leGl0Y29kZSA9PSAtc2lnbmFsLlNJR1RFUk0KICAgICAgICBUcnVlCiAKKy4uIGV4Y2VwdGlvbjo6IFByb2Nlc3NFcnJvcgorCisgICBUaGUgYmFzZSBjbGFzcyBvZiBhbGwgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBleGNlcHRpb25zLgogCiAuLiBleGNlcHRpb246OiBCdWZmZXJUb29TaG9ydAogCkBAIC00NTQsNiArNDc2LDEzIEBACiAgICBJZiBgYGVgYCBpcyBhbiBpbnN0YW5jZSBvZiA6ZXhjOmBCdWZmZXJUb29TaG9ydGAgdGhlbiBgYGUuYXJnc1swXWBgIHdpbGwgZ2l2ZQogICAgdGhlIG1lc3NhZ2UgYXMgYSBieXRlIHN0cmluZy4KIAorLi4gZXhjZXB0aW9uOjogQXV0aGVudGljYXRpb25FcnJvcgorCisgICBSYWlzZWQgd2hlbiB0aGVyZSBpcyBhbiBhdXRoZW50aWNhdGlvbiBlcnJvci4KKworLi4gZXhjZXB0aW9uOjogVGltZW91dEVycm9yCisKKyAgIFJhaXNlZCBieSBtZXRob2RzIHdpdGggYSB0aW1lb3V0IHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4KIAogUGlwZXMgYW5kIFF1ZXVlcwogfn5+fn5+fn5+fn5+fn5+fgpAQCAtNDY1LDcgKzQ5NCw3IEBACiBGb3IgcGFzc2luZyBtZXNzYWdlcyBvbmUgY2FuIHVzZSA6ZnVuYzpgUGlwZWAgKGZvciBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0d28KIHByb2Nlc3Nlcykgb3IgYSBxdWV1ZSAod2hpY2ggYWxsb3dzIG11bHRpcGxlIHByb2R1Y2VycyBhbmQgY29uc3VtZXJzKS4KIAotVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKK1RoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMgYXJlIG11bHRpLXByb2R1Y2VyLAogbXVsdGktY29uc3VtZXIgRklGTyBxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQogc3RhbmRhcmQgbGlicmFyeS4gIFRoZXkgZGlmZmVyIGluIHRoYXQgOmNsYXNzOmBRdWV1ZWAgbGFja3MgdGhlCiA6bWV0aDpgfnF1ZXVlLlF1ZXVlLnRhc2tfZG9uZWAgYW5kIDptZXRoOmB+cXVldWUuUXVldWUuam9pbmAgbWV0aG9kcyBpbnRyb2R1Y2VkCkBAIC02MTEsNyArNjQwLDcgQEAKICAgICAgIGV4aXRzIC0tIHNlZSA6bWV0aDpgam9pbl90aHJlYWRgLgogCiAKLS4uIGNsYXNzOjogbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcy5TaW1wbGVRdWV1ZSgpCisuLiBjbGFzczo6IFNpbXBsZVF1ZXVlKCkKIAogICAgSXQgaXMgYSBzaW1wbGlmaWVkIDpjbGFzczpgUXVldWVgIHR5cGUsIHZlcnkgY2xvc2UgdG8gYSBsb2NrZWQgOmNsYXNzOmBQaXBlYC4KIApAQCAtNjM1LDggKzY2NCw4IEBACiAKICAgIC4uIG1ldGhvZDo6IHRhc2tfZG9uZSgpCiAKLSAgICAgIEluZGljYXRlIHRoYXQgYSBmb3JtZXJseSBlbnF1ZXVlZCB0YXNrIGlzIGNvbXBsZXRlLiBVc2VkIGJ5IHF1ZXVlIGNvbnN1bWVyCi0gICAgICB0aHJlYWRzLiAgRm9yIGVhY2ggOm1ldGg6YH5RdWV1ZS5nZXRgIHVzZWQgdG8gZmV0Y2ggYSB0YXNrLCBhIHN1YnNlcXVlbnQKKyAgICAgIEluZGljYXRlIHRoYXQgYSBmb3JtZXJseSBlbnF1ZXVlZCB0YXNrIGlzIGNvbXBsZXRlLiBVc2VkIGJ5IHF1ZXVlCisgICAgICBjb25zdW1lcnMuICBGb3IgZWFjaCA6bWV0aDpgflF1ZXVlLmdldGAgdXNlZCB0byBmZXRjaCBhIHRhc2ssIGEgc3Vic2VxdWVudAogICAgICAgY2FsbCB0byA6bWV0aDpgdGFza19kb25lYCB0ZWxscyB0aGUgcXVldWUgdGhhdCB0aGUgcHJvY2Vzc2luZyBvbiB0aGUgdGFzawogICAgICAgaXMgY29tcGxldGUuCiAKQEAgLTY1Myw3ICs2ODIsNyBAQAogICAgICAgQmxvY2sgdW50aWwgYWxsIGl0ZW1zIGluIHRoZSBxdWV1ZSBoYXZlIGJlZW4gZ290dGVuIGFuZCBwcm9jZXNzZWQuCiAKICAgICAgIFRoZSBjb3VudCBvZiB1bmZpbmlzaGVkIHRhc2tzIGdvZXMgdXAgd2hlbmV2ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUKLSAgICAgIHF1ZXVlLiAgVGhlIGNvdW50IGdvZXMgZG93biB3aGVuZXZlciBhIGNvbnN1bWVyIHRocmVhZCBjYWxscworICAgICAgcXVldWUuICBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgY2FsbHMKICAgICAgIDptZXRoOmB0YXNrX2RvbmVgIHRvIGluZGljYXRlIHRoYXQgdGhlIGl0ZW0gd2FzIHJldHJpZXZlZCBhbmQgYWxsIHdvcmsgb24KICAgICAgIGl0IGlzIGNvbXBsZXRlLiAgV2hlbiB0aGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBkcm9wcyB0byB6ZXJvLAogICAgICAgOm1ldGg6YH5RdWV1ZS5qb2luYCB1bmJsb2Nrcy4KQEAgLTc2Nyw2ICs3OTYsOSBAQAogICAgICAgKnRpbWVvdXQqIGlzIGEgbnVtYmVyIHRoZW4gdGhpcyBzcGVjaWZpZXMgdGhlIG1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRvCiAgICAgICBibG9jay4gIElmICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIGFuIGluZmluaXRlIHRpbWVvdXQgaXMgdXNlZC4KIAorICAgICAgTm90ZSB0aGF0IG11bHRpcGxlIGNvbm5lY3Rpb24gb2JqZWN0cyBtYXkgYmUgcG9sbGVkIGF0IG9uY2UgYnkKKyAgICAgIHVzaW5nIDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0YC4KKwogICAgLi4gbWV0aG9kOjogc2VuZF9ieXRlcyhidWZmZXJbLCBvZmZzZXRbLCBzaXplXV0pCiAKICAgICAgIFNlbmQgYnl0ZSBkYXRhIGZyb20gYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgYXMgYQpAQCAtNzg1LDkgKzgxNywxNCBAQAogICAgICAgdG8gcmVjZWl2ZSBhbmQgdGhlIG90aGVyIGVuZCBoYXMgY2xvc2VkLgogCiAgICAgICBJZiAqbWF4bGVuZ3RoKiBpcyBzcGVjaWZpZWQgYW5kIHRoZSBtZXNzYWdlIGlzIGxvbmdlciB0aGFuICptYXhsZW5ndGgqCi0gICAgICB0aGVuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIGNvbm5lY3Rpb24gd2lsbCBubyBsb25nZXIgYmUKKyAgICAgIHRoZW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGFuZCB0aGUgY29ubmVjdGlvbiB3aWxsIG5vIGxvbmdlciBiZQogICAgICAgcmVhZGFibGUuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBJT0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworCiAgICAuLiBtZXRob2Q6OiByZWN2X2J5dGVzX2ludG8oYnVmZmVyWywgb2Zmc2V0XSkKIAogICAgICAgUmVhZCBpbnRvICpidWZmZXIqIGEgY29tcGxldGUgbWVzc2FnZSBvZiBieXRlIGRhdGEgc2VudCBmcm9tIHRoZSBvdGhlciBlbmQKQEAgLTgwNSw2ICs4NDIsMTQgQEAKICAgICAgIHJhaXNlZCBhbmQgdGhlIGNvbXBsZXRlIG1lc3NhZ2UgaXMgYXZhaWxhYmxlIGFzIGBgZS5hcmdzWzBdYGAgd2hlcmUgYGBlYGAKICAgICAgIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2UuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBDb25uZWN0aW9uIG9iamVjdHMgdGhlbXNlbHZlcyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIGJldHdlZW4gcHJvY2Vzc2VzCisgICAgICB1c2luZyA6bWV0aDpgQ29ubmVjdGlvbi5zZW5kYCBhbmQgOm1ldGg6YENvbm5lY3Rpb24ucmVjdmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQ29ubmVjdGlvbiBvYmplY3RzIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgLS0gc2VlCisgICAgICA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLiAgOm1ldGg6YF9fZW50ZXJfX2AgcmV0dXJucyB0aGUKKyAgICAgIGNvbm5lY3Rpb24gb2JqZWN0LCBhbmQgOm1ldGg6YF9fZXhpdF9fYCBjYWxscyA6bWV0aDpgY2xvc2VgLgogCiBGb3IgZXhhbXBsZToKIApAQCAtODU2LDYgKzkwMSwxMiBAQAogTm90ZSB0aGF0IG9uZSBjYW4gYWxzbyBjcmVhdGUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYnkgdXNpbmcgYSBtYW5hZ2VyCiBvYmplY3QgLS0gc2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1tYW5hZ2Vyc2AuCiAKKy4uIGNsYXNzOjogQmFycmllcihwYXJ0aWVzWywgYWN0aW9uWywgdGltZW91dF1dKQorCisgICBBIGJhcnJpZXIgb2JqZWN0OiBhIGNsb25lIG9mIDpjbGFzczpgdGhyZWFkaW5nLkJhcnJpZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gY2xhc3M6OiBCb3VuZGVkU2VtYXBob3JlKFt2YWx1ZV0pCiAKICAgIEEgYm91bmRlZCBzZW1hcGhvcmUgb2JqZWN0OiBhIGNsb25lIG9mIDpjbGFzczpgdGhyZWFkaW5nLkJvdW5kZWRTZW1hcGhvcmVgLgpAQCAtODY1LDIwICs5MTYsMTcgQEAKIAogLi4gY2xhc3M6OiBDb25kaXRpb24oW2xvY2tdKQogCi0gICBBIGNvbmRpdGlvbiB2YXJpYWJsZTogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5Db25kaXRpb25gLgorICAgQSBjb25kaXRpb24gdmFyaWFibGU6IGFuIGFsaWFzIGZvciA6Y2xhc3M6YHRocmVhZGluZy5Db25kaXRpb25gLgogCiAgICBJZiAqbG9jayogaXMgc3BlY2lmaWVkIHRoZW4gaXQgc2hvdWxkIGJlIGEgOmNsYXNzOmBMb2NrYCBvciA6Y2xhc3M6YFJMb2NrYAogICAgb2JqZWN0IGZyb20gOm1vZDpgbXVsdGlwcm9jZXNzaW5nYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgd2FpdF9mb3JgIG1ldGhvZCB3YXMgYWRkZWQuCisKIC4uIGNsYXNzOjogRXZlbnQoKQogCiAgICBBIGNsb25lIG9mIDpjbGFzczpgdGhyZWFkaW5nLkV2ZW50YC4KLSAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBpbnRlcm5hbCBzZW1hcGhvcmUgb24gZXhpdCwgc28gaXQKLSAgIHdpbGwgYWx3YXlzIHJldHVybiBgYFRydWVgYCBleGNlcHQgaWYgYSB0aW1lb3V0IGlzIGdpdmVuIGFuZCB0aGUgb3BlcmF0aW9uCi0gICB0aW1lcyBvdXQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBQcmV2aW91c2x5LCB0aGUgbWV0aG9kIGFsd2F5cyByZXR1cm5lZCBgYE5vbmVgYC4KIAogLi4gY2xhc3M6OiBMb2NrKCkKIApAQCAtODk0LDYgKzk0MiwxMiBAQAogCiAuLiBub3RlOjoKIAorICAgVGhlIDptZXRoOmBhY3F1aXJlYCBhbmQgOm1ldGg6YHdhaXRgIG1ldGhvZHMgb2YgZWFjaCBvZiB0aGVzZSB0eXBlcworICAgdHJlYXQgbmVnYXRpdmUgdGltZW91dHMgYXMgemVybyB0aW1lb3V0cy4gIFRoaXMgZGlmZmVycyBmcm9tCisgICA6bW9kOmB0aHJlYWRpbmdgIHdoZXJlLCBzaW5jZSB2ZXJzaW9uIDMuMiwgdGhlIGVxdWl2YWxlbnQKKyAgIDptZXRoOmBhY3F1aXJlYCBtZXRob2RzIHRyZWF0IG5lZ2F0aXZlIHRpbWVvdXRzIGFzIGluZmluaXRlCisgICB0aW1lb3V0cy4KKwogICAgT24gTWFjIE9TIFgsIGBgc2VtX3RpbWVkd2FpdGBgIGlzIHVuc3VwcG9ydGVkLCBzbyBjYWxsaW5nIGBgYWNxdWlyZSgpYGAgd2l0aAogICAgYSB0aW1lb3V0IHdpbGwgZW11bGF0ZSB0aGF0IGZ1bmN0aW9uJ3MgYmVoYXZpb3IgdXNpbmcgYSBzbGVlcGluZyBsb29wLgogCkBAIC05MTUsMTAgKzk2OSwxMSBAQAogSXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHNoYXJlZCBvYmplY3RzIHVzaW5nIHNoYXJlZCBtZW1vcnkgd2hpY2ggY2FuIGJlCiBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2Vzc2VzLgogCi0uLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpCiAKICAgIFJldHVybiBhIDptb2Q6YGN0eXBlc2Agb2JqZWN0IGFsbG9jYXRlZCBmcm9tIHNoYXJlZCBtZW1vcnkuICBCeSBkZWZhdWx0IHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGEgc3luY2hyb25pemVkIHdyYXBwZXIgZm9yIHRoZSBvYmplY3QuCisgICByZXR1cm4gdmFsdWUgaXMgYWN0dWFsbHkgYSBzeW5jaHJvbml6ZWQgd3JhcHBlciBmb3IgdGhlIG9iamVjdC4gIFRoZSBvYmplY3QKKyAgIGl0c2VsZiBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSAqdmFsdWUqIGF0dHJpYnV0ZSBvZiBhIDpjbGFzczpgVmFsdWVgLgogCiAgICAqdHlwZWNvZGVfb3JfdHlwZSogZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0OiBpdCBpcyBlaXRoZXIgYQogICAgY3R5cGVzIHR5cGUgb3IgYSBvbmUgY2hhcmFjdGVyIHR5cGVjb2RlIG9mIHRoZSBraW5kIHVzZWQgYnkgdGhlIDptb2Q6YGFycmF5YApAQCAtMTAwNyw3ICsxMDYyLDcgQEAKICAgIGF0dHJpYnV0ZXMgd2hpY2ggYWxsb3cgb25lIHRvIHVzZSBpdCB0byBzdG9yZSBhbmQgcmV0cmlldmUgc3RyaW5ncyAtLSBzZWUKICAgIGRvY3VtZW50YXRpb24gZm9yIDptb2Q6YGN0eXBlc2AuCiAKLS4uIGZ1bmN0aW9uOjogQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKmFyZ3NbLCBsb2NrXSkKKy4uIGZ1bmN0aW9uOjogQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKQogCiAgICBUaGUgc2FtZSBhcyA6ZnVuYzpgUmF3QXJyYXlgIGV4Y2VwdCB0aGF0IGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgKmxvY2sqIGEKICAgIHByb2Nlc3Mtc2FmZSBzeW5jaHJvbml6YXRpb24gd3JhcHBlciBtYXkgYmUgcmV0dXJuZWQgaW5zdGVhZCBvZiBhIHJhdyBjdHlwZXMKQEAgLTEwMjIsNyArMTA3Nyw3IEBACiAKICAgIE5vdGUgdGhhdCAqbG9jayogaXMgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3NbLCBsb2NrXSkKKy4uIGZ1bmN0aW9uOjogVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSkKIAogICAgVGhlIHNhbWUgYXMgOmZ1bmM6YFJhd1ZhbHVlYCBleGNlcHQgdGhhdCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICpsb2NrKiBhCiAgICBwcm9jZXNzLXNhZmUgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgbWF5IGJlIHJldHVybmVkIGluc3RlYWQgb2YgYSByYXcgY3R5cGVzCkBAIC0xMTI0LDggKzExNzksMTAgQEAKIH5+fn5+fn5+CiAKIE1hbmFnZXJzIHByb3ZpZGUgYSB3YXkgdG8gY3JlYXRlIGRhdGEgd2hpY2ggY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGRpZmZlcmVudAotcHJvY2Vzc2VzLiBBIG1hbmFnZXIgb2JqZWN0IGNvbnRyb2xzIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2ggbWFuYWdlcyAqc2hhcmVkCi1vYmplY3RzKi4gIE90aGVyIHByb2Nlc3NlcyBjYW4gYWNjZXNzIHRoZSBzaGFyZWQgb2JqZWN0cyBieSB1c2luZyBwcm94aWVzLgorcHJvY2Vzc2VzLCBpbmNsdWRpbmcgc2hhcmluZyBvdmVyIGEgbmV0d29yayBiZXR3ZWVuIHByb2Nlc3NlcyBydW5uaW5nIG9uCitkaWZmZXJlbnQgbWFjaGluZXMuIEEgbWFuYWdlciBvYmplY3QgY29udHJvbHMgYSBzZXJ2ZXIgcHJvY2VzcyB3aGljaCBtYW5hZ2VzCisqc2hhcmVkIG9iamVjdHMqLiAgT3RoZXIgcHJvY2Vzc2VzIGNhbiBhY2Nlc3MgdGhlIHNoYXJlZCBvYmplY3RzIGJ5IHVzaW5nCitwcm94aWVzLgogCiAuLiBmdW5jdGlvbjo6IG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyKCkKIApAQCAtMTE5OCw5ICsxMjU1LDEwIEBACiAgICAgICB0eXBlIG9mIHNoYXJlZCBvYmplY3QuICBUaGlzIG11c3QgYmUgYSBzdHJpbmcuCiAKICAgICAgICpjYWxsYWJsZSogaXMgYSBjYWxsYWJsZSB1c2VkIGZvciBjcmVhdGluZyBvYmplY3RzIGZvciB0aGlzIHR5cGUKLSAgICAgIGlkZW50aWZpZXIuICBJZiBhIG1hbmFnZXIgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZQotICAgICAgOm1ldGg6YGZyb21fYWRkcmVzc2AgY2xhc3NtZXRob2Qgb3IgaWYgdGhlICpjcmVhdGVfbWV0aG9kKiBhcmd1bWVudCBpcwotICAgICAgYGBGYWxzZWBgIHRoZW4gdGhpcyBjYW4gYmUgbGVmdCBhcyBgYE5vbmVgYC4KKyAgICAgIGlkZW50aWZpZXIuICBJZiBhIG1hbmFnZXIgaW5zdGFuY2Ugd2lsbCBiZSBjb25uZWN0ZWQgdG8gdGhlCisgICAgICBzZXJ2ZXIgdXNpbmcgdGhlIDptZXRoOmBjb25uZWN0YCBtZXRob2QsIG9yIGlmIHRoZQorICAgICAgKmNyZWF0ZV9tZXRob2QqIGFyZ3VtZW50IGlzIGBgRmFsc2VgYCB0aGVuIHRoaXMgY2FuIGJlIGxlZnQgYXMKKyAgICAgIGBgTm9uZWBgLgogCiAgICAgICAqcHJveHl0eXBlKiBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgQmFzZVByb3h5YCB3aGljaCBpcyB1c2VkIHRvIGNyZWF0ZQogICAgICAgcHJveGllcyBmb3Igc2hhcmVkIG9iamVjdHMgd2l0aCB0aGlzICp0eXBlaWQqLiAgSWYgYGBOb25lYGAgdGhlbiBhIHByb3h5CkBAIC0xMjMyLDYgKzEyOTAsMTQgQEAKIAogICAgICAgVGhlIGFkZHJlc3MgdXNlZCBieSB0aGUgbWFuYWdlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE1hbmFnZXIgb2JqZWN0cyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgLS0gc2VlCisgICAgICA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLiAgOm1ldGg6YF9fZW50ZXJfX2Agc3RhcnRzIHRoZSBzZXJ2ZXIKKyAgICAgIHByb2Nlc3MgKGlmIGl0IGhhcyBub3QgYWxyZWFkeSBzdGFydGVkKSBhbmQgdGhlbiByZXR1cm5zIHRoZQorICAgICAgbWFuYWdlciBvYmplY3QuICA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBzaHV0ZG93bmAuCisKKyAgICAgIEluIHByZXZpb3VzIHZlcnNpb25zIDptZXRoOmBfX2VudGVyX19gIGRpZCBub3Qgc3RhcnQgdGhlCisgICAgICBtYW5hZ2VyJ3Mgc2VydmVyIHByb2Nlc3MgaWYgaXQgd2FzIG5vdCBhbHJlYWR5IHN0YXJ0ZWQuCiAKIC4uIGNsYXNzOjogU3luY01hbmFnZXIKIApAQCAtMTI0MSw2ICsxMzA3LDEzIEBACiAKICAgIEl0IGFsc28gc3VwcG9ydHMgY3JlYXRpb24gb2Ygc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCiAKKyAgIC4uIG1ldGhvZDo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKKworICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgdGhyZWFkaW5nLkJhcnJpZXJgIG9iamVjdCBhbmQgcmV0dXJuIGEKKyAgICAgIHByb3h5IGZvciBpdC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IEJvdW5kZWRTZW1hcGhvcmUoW3ZhbHVlXSkKIAogICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgdGhyZWFkaW5nLkJvdW5kZWRTZW1hcGhvcmVgIG9iamVjdCBhbmQgcmV0dXJuIGEKQEAgLTEyNTQsNiArMTMyNyw5IEBACiAgICAgICBJZiAqbG9jayogaXMgc3VwcGxpZWQgdGhlbiBpdCBzaG91bGQgYmUgYSBwcm94eSBmb3IgYQogICAgICAgOmNsYXNzOmB0aHJlYWRpbmcuTG9ja2Agb3IgOmNsYXNzOmB0aHJlYWRpbmcuUkxvY2tgIG9iamVjdC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSA6bWV0aDpgd2FpdF9mb3JgIG1ldGhvZCB3YXMgYWRkZWQuCisKICAgIC4uIG1ldGhvZDo6IEV2ZW50KCkKIAogICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgdGhyZWFkaW5nLkV2ZW50YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KQEAgLTEzNTksMTEgKzE0MzUsMTAgQEAKICAgIE15TWFuYWdlci5yZWdpc3RlcignTWF0aHMnLCBNYXRoc0NsYXNzKQogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIG1hbmFnZXIgPSBNeU1hbmFnZXIoKQotICAgICAgIG1hbmFnZXIuc3RhcnQoKQotICAgICAgIG1hdGhzID0gbWFuYWdlci5NYXRocygpCi0gICAgICAgcHJpbnQobWF0aHMuYWRkKDQsIDMpKSAgICAgICAgICMgcHJpbnRzIDcKLSAgICAgICBwcmludChtYXRocy5tdWwoNywgOCkpICAgICAgICAgIyBwcmludHMgNTYKKyAgICAgICB3aXRoIE15TWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgIG1hdGhzID0gbWFuYWdlci5NYXRocygpCisgICAgICAgICAgIHByaW50KG1hdGhzLmFkZCg0LCAzKSkgICAgICAgICAjIHByaW50cyA3CisgICAgICAgICAgIHByaW50KG1hdGhzLm11bCg3LCA4KSkgICAgICAgICAjIHByaW50cyA1NgogCiAKIFVzaW5nIGEgcmVtb3RlIG1hbmFnZXIKQEAgLTE1NjMsNyArMTYzOCw3IEBACiBPbmUgY2FuIGNyZWF0ZSBhIHBvb2wgb2YgcHJvY2Vzc2VzIHdoaWNoIHdpbGwgY2Fycnkgb3V0IHRhc2tzIHN1Ym1pdHRlZCB0byBpdAogd2l0aCB0aGUgOmNsYXNzOmBQb29sYCBjbGFzcy4KIAotLi4gY2xhc3M6OiBtdWx0aXByb2Nlc3NpbmcuUG9vbChbcHJvY2Vzc2VzWywgaW5pdGlhbGl6ZXJbLCBpbml0YXJnc1ssIG1heHRhc2tzcGVyY2hpbGRdXV1dKQorLi4gY2xhc3M6OiBQb29sKFtwcm9jZXNzZXNbLCBpbml0aWFsaXplclssIGluaXRhcmdzWywgbWF4dGFza3NwZXJjaGlsZF1dXV0pCiAKICAgIEEgcHJvY2VzcyBwb29sIG9iamVjdCB3aGljaCBjb250cm9scyBhIHBvb2wgb2Ygd29ya2VyIHByb2Nlc3NlcyB0byB3aGljaCBqb2JzCiAgICBjYW4gYmUgc3VibWl0dGVkLiAgSXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIHJlc3VsdHMgd2l0aCB0aW1lb3V0cyBhbmQKQEAgLTE2NTgsNiArMTczMywyNCBAQAogICAgICAgcmV0dXJuZWQgaXRlcmF0b3Igc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXJiaXRyYXJ5LiAgKE9ubHkgd2hlbiB0aGVyZSBpcwogICAgICAgb25seSBvbmUgd29ya2VyIHByb2Nlc3MgaXMgdGhlIG9yZGVyIGd1YXJhbnRlZWQgdG8gYmUgImNvcnJlY3QiLikKIAorICAgLi4gbWV0aG9kOjogc3Rhcm1hcChmdW5jLCBpdGVyYWJsZVssIGNodW5rc2l6ZV0pCisKKyAgICAgIExpa2UgOm1ldGg6YG1hcGAgZXhjZXB0IHRoYXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBgaXRlcmFibGVgIGFyZSBleHBlY3RlZAorICAgICAgdG8gYmUgaXRlcmFibGVzIHRoYXQgYXJlIHVucGFja2VkIGFzIGFyZ3VtZW50cy4KKworICAgICAgSGVuY2UgYW4gYGl0ZXJhYmxlYCBvZiBgWygxLDIpLCAoMywgNCldYCByZXN1bHRzIGluIGBbZnVuYygxLDIpLAorICAgICAgZnVuYygzLDQpXWAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBtZXRob2Q6OiBzdGFybWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlWywgY2h1bmtzaXplWywgY2FsbGJhY2tbLCBlcnJvcl9iYWNrXV1dKQorCisgICAgICBBIGNvbWJpbmF0aW9uIG9mIDptZXRoOmBzdGFybWFwYCBhbmQgOm1ldGg6YG1hcF9hc3luY2AgdGhhdCBpdGVyYXRlcyBvdmVyCisgICAgICBgaXRlcmFibGVgIG9mIGl0ZXJhYmxlcyBhbmQgY2FsbHMgYGZ1bmNgIHdpdGggdGhlIGl0ZXJhYmxlcyB1bnBhY2tlZC4KKyAgICAgIFJldHVybnMgYSByZXN1bHQgb2JqZWN0LgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCiAgICAgICBQcmV2ZW50cyBhbnkgbW9yZSB0YXNrcyBmcm9tIGJlaW5nIHN1Ym1pdHRlZCB0byB0aGUgcG9vbC4gIE9uY2UgYWxsIHRoZQpAQCAtMTY3NCw2ICsxNzY3LDExIEBACiAgICAgICBXYWl0IGZvciB0aGUgd29ya2VyIHByb2Nlc3NlcyB0byBleGl0LiAgT25lIG11c3QgY2FsbCA6bWV0aDpgY2xvc2VgIG9yCiAgICAgICA6bWV0aDpgdGVybWluYXRlYCBiZWZvcmUgdXNpbmcgOm1ldGg6YGpvaW5gLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFBvb2wgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlIHBvb2wKKyAgICAgIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YHRlcm1pbmF0ZWAuCisKIAogLi4gY2xhc3M6OiBBc3luY1Jlc3VsdAogCkBAIC0xNzA4LDIxICsxODA2LDIwIEBACiAgICAgICAgcmV0dXJuIHgqeAogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIHBvb2wgPSBQb29sKHByb2Nlc3Nlcz00KSAgICAgICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICB3aXRoIFBvb2wocHJvY2Vzc2VzPTQpIGFzIHBvb2w6ICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCAoMTAsKSkgIyBldmFsdWF0ZSAiZigxMCkiIGFzeW5jaHJvbm91c2x5CisgICAgICAgICAgIHByaW50KHJlc3VsdC5nZXQodGltZW91dD0xKSkgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CiAKLSAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKGYsICgxMCwpKSAgICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQotICAgICAgIHByaW50KHJlc3VsdC5nZXQodGltZW91dD0xKSkgICAgICAgICAgIyBwcmludHMgIjEwMCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKKyAgICAgICAgICAgcHJpbnQocG9vbC5tYXAoZiwgcmFuZ2UoMTApKSkgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgogCi0gICAgICAgcHJpbnQocG9vbC5tYXAoZiwgcmFuZ2UoMTApKSkgICAgICAgICAjIHByaW50cyAiWzAsIDEsIDQsLi4uLCA4MV0iCisgICAgICAgICAgIGl0ID0gcG9vbC5pbWFwKGYsIHJhbmdlKDEwKSkKKyAgICAgICAgICAgcHJpbnQobmV4dChpdCkpICAgICAgICAgICAgICAgICAgICAgIyBwcmludHMgIjAiCisgICAgICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIxIgorICAgICAgICAgICBwcmludChpdC5uZXh0KHRpbWVvdXQ9MSkpICAgICAgICAgICAjIHByaW50cyAiNCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKIAotICAgICAgIGl0ID0gcG9vbC5pbWFwKGYsIHJhbmdlKDEwKSkKLSAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIwIgotICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICAgIyBwcmludHMgIjEiCi0gICAgICAgcHJpbnQoaXQubmV4dCh0aW1lb3V0PTEpKSAgICAgICAgICAgICAjIHByaW50cyAiNCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKLQotICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyh0aW1lLnNsZWVwLCAoMTAsKSkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICMgcmFpc2VzIFRpbWVvdXRFcnJvcgorICAgICAgICAgICBpbXBvcnQgdGltZQorICAgICAgICAgICByZXN1bHQgPSBwb29sLmFwcGx5X2FzeW5jKHRpbWUuc2xlZXAsICgxMCwpKQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAjIHJhaXNlcyBUaW1lb3V0RXJyb3IKIAogCiAuLiBfbXVsdGlwcm9jZXNzaW5nLWxpc3RlbmVycy1jbGllbnRzOgpAQCAtMTczOCw4ICsxODM1LDkgQEAKIAogSG93ZXZlciwgdGhlIDptb2Q6YG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uYCBtb2R1bGUgYWxsb3dzIHNvbWUgZXh0cmEKIGZsZXhpYmlsaXR5LiAgSXQgYmFzaWNhbGx5IGdpdmVzIGEgaGlnaCBsZXZlbCBtZXNzYWdlIG9yaWVudGVkIEFQSSBmb3IgZGVhbGluZwotd2l0aCBzb2NrZXRzIG9yIFdpbmRvd3MgbmFtZWQgcGlwZXMsIGFuZCBhbHNvIGhhcyBzdXBwb3J0IGZvciAqZGlnZXN0Ci1hdXRoZW50aWNhdGlvbiogdXNpbmcgdGhlIDptb2Q6YGhtYWNgIG1vZHVsZS4KK3dpdGggc29ja2V0cyBvciBXaW5kb3dzIG5hbWVkIHBpcGVzLiAgSXQgYWxzbyBoYXMgc3VwcG9ydCBmb3IgKmRpZ2VzdAorYXV0aGVudGljYXRpb24qIHVzaW5nIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUsIGFuZCBmb3IgcG9sbGluZworbXVsdGlwbGUgY29ubmVjdGlvbnMgYXQgdGhlIHNhbWUgdGltZS4KIAogCiAuLiBmdW5jdGlvbjo6IGRlbGl2ZXJfY2hhbGxlbmdlKGNvbm5lY3Rpb24sIGF1dGhrZXkpCkBAIC0xNzQ5LDE1ICsxODQ3LDE1IEBACiAKICAgIElmIHRoZSByZXBseSBtYXRjaGVzIHRoZSBkaWdlc3Qgb2YgdGhlIG1lc3NhZ2UgdXNpbmcgKmF1dGhrZXkqIGFzIHRoZSBrZXkKICAgIHRoZW4gYSB3ZWxjb21lIG1lc3NhZ2UgaXMgc2VudCB0byB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0aW9uLiAgT3RoZXJ3aXNlCi0gICA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogLi4gZnVuY3Rpb246OiBhbnN3ZXJDaGFsbGVuZ2UoY29ubmVjdGlvbiwgYXV0aGtleSkKIAogICAgUmVjZWl2ZSBhIG1lc3NhZ2UsIGNhbGN1bGF0ZSB0aGUgZGlnZXN0IG9mIHRoZSBtZXNzYWdlIHVzaW5nICphdXRoa2V5KiBhcyB0aGUKICAgIGtleSwgYW5kIHRoZW4gc2VuZCB0aGUgZGlnZXN0IGJhY2suCiAKLSAgIElmIGEgd2VsY29tZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCwgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcwotICAgcmFpc2VkLgorICAgSWYgYSB3ZWxjb21lIG1lc3NhZ2UgaXMgbm90IHJlY2VpdmVkLCB0aGVuCisgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogLi4gZnVuY3Rpb246OiBDbGllbnQoYWRkcmVzc1ssIGZhbWlseVssIGF1dGhlbnRpY2F0ZVssIGF1dGhrZXldXV0pCiAKQEAgLTE3NzEsNyArMTg2OSw4IEBACiAgICBJZiAqYXV0aGVudGljYXRlKiBpcyBgYFRydWVgYCBvciAqYXV0aGtleSogaXMgYSBieXRlIHN0cmluZyB0aGVuIGRpZ2VzdAogICAgYXV0aGVudGljYXRpb24gaXMgdXNlZC4gIFRoZSBrZXkgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gd2lsbCBiZSBlaXRoZXIKICAgICphdXRoa2V5KiBvciBgYGN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXlgYCBpZiAqYXV0aGtleSogaXMgYGBOb25lYGAuCi0gICBJZiBhdXRoZW50aWNhdGlvbiBmYWlscyB0aGVuIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4gIFNlZQorICAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuICBTZWUKICAgIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCiAuLiBjbGFzczo6IExpc3RlbmVyKFthZGRyZXNzWywgZmFtaWx5WywgYmFja2xvZ1ssIGF1dGhlbnRpY2F0ZVssIGF1dGhrZXldXV1dXSkKQEAgLTE4MTIsMTMgKzE5MTEsMTUgQEAKICAgIGBgY3VycmVudF9wcm9jZXNzKCkuYXV0aGtleWBgIGlzIHVzZWQgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGtleS4gIElmCiAgICAqYXV0aGtleSogaXMgYGBOb25lYGAgYW5kICphdXRoZW50aWNhdGUqIGlzIGBgRmFsc2VgYCB0aGVuIG5vCiAgICBhdXRoZW50aWNhdGlvbiBpcyBkb25lLiAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbgotICAgOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLiAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICBTZWUgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLWF1dGgta2V5c2AuCiAKICAgIC4uIG1ldGhvZDo6IGFjY2VwdCgpCiAKICAgICAgIEFjY2VwdCBhIGNvbm5lY3Rpb24gb24gdGhlIGJvdW5kIHNvY2tldCBvciBuYW1lZCBwaXBlIG9mIHRoZSBsaXN0ZW5lcgogICAgICAgb2JqZWN0IGFuZCByZXR1cm4gYSA6Y2xhc3M6YENvbm5lY3Rpb25gIG9iamVjdC4gIElmIGF1dGhlbnRpY2F0aW9uIGlzCi0gICAgICBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIGF0dGVtcHRlZCBhbmQgZmFpbHMsIHRoZW4KKyAgICAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTE4MzcsMTIgKzE5MzgsNDQgQEAKICAgICAgIFRoZSBhZGRyZXNzIGZyb20gd2hpY2ggdGhlIGxhc3QgYWNjZXB0ZWQgY29ubmVjdGlvbiBjYW1lLiAgSWYgdGhpcyBpcwogICAgICAgdW5hdmFpbGFibGUgdGhlbiBpdCBpcyBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBMaXN0ZW5lciBvYmplY3RzIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgLS0gc2VlCisgICAgICA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLiAgOm1ldGg6YF9fZW50ZXJfX2AgcmV0dXJucyB0aGUKKyAgICAgIGxpc3RlbmVyIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YGNsb3NlYC4KIAotVGhlIG1vZHVsZSBkZWZpbmVzIHR3byBleGNlcHRpb25zOgorLi4gZnVuY3Rpb246OiB3YWl0KG9iamVjdF9saXN0LCB0aW1lb3V0PU5vbmUpCiAKLS4uIGV4Y2VwdGlvbjo6IEF1dGhlbnRpY2F0aW9uRXJyb3IKKyAgIFdhaXQgdGlsbCBhbiBvYmplY3QgaW4gKm9iamVjdF9saXN0KiBpcyByZWFkeS4gIFJldHVybnMgdGhlIGxpc3Qgb2YKKyAgIHRob3NlIG9iamVjdHMgaW4gKm9iamVjdF9saXN0KiB3aGljaCBhcmUgcmVhZHkuICBJZiAqdGltZW91dCogaXMgYQorICAgZmxvYXQgdGhlbiB0aGUgY2FsbCBibG9ja3MgZm9yIGF0IG1vc3QgdGhhdCBtYW55IHNlY29uZHMuICBJZgorICAgKnRpbWVvdXQqIGlzIGBgTm9uZWBgIHRoZW4gaXQgd2lsbCBibG9jayBmb3IgYW4gdW5saW1pdGVkIHBlcmlvZC4KKyAgIEEgbmVnYXRpdmUgdGltZW91dCBpcyBlcXVpdmFsZW50IHRvIGEgemVybyB0aW1lb3V0LgogCi0gICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisgICBGb3IgYm90aCBVbml4IGFuZCBXaW5kb3dzLCBhbiBvYmplY3QgY2FuIGFwcGVhciBpbiAqb2JqZWN0X2xpc3QqIGlmCisgICBpdCBpcworCisgICAqIGEgcmVhZGFibGUgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIG9iamVjdDsKKyAgICogYSBjb25uZWN0ZWQgYW5kIHJlYWRhYmxlIDpjbGFzczpgc29ja2V0LnNvY2tldGAgb2JqZWN0OyBvcgorICAgKiB0aGUgOmF0dHI6YH5tdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5zZW50aW5lbGAgYXR0cmlidXRlIG9mIGEKKyAgICAgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgIG9iamVjdC4KKworICAgQSBjb25uZWN0aW9uIG9yIHNvY2tldCBvYmplY3QgaXMgcmVhZHkgd2hlbiB0aGVyZSBpcyBkYXRhIGF2YWlsYWJsZQorICAgdG8gYmUgcmVhZCBmcm9tIGl0LCBvciB0aGUgb3RoZXIgZW5kIGhhcyBiZWVuIGNsb3NlZC4KKworICAgKipVbml4Kio6IGBgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dClgYCBhbG1vc3QgZXF1aXZhbGVudAorICAgYGBzZWxlY3Quc2VsZWN0KG9iamVjdF9saXN0LCBbXSwgW10sIHRpbWVvdXQpYGAuICBUaGUgZGlmZmVyZW5jZSBpcworICAgdGhhdCwgaWYgOmZ1bmM6YHNlbGVjdC5zZWxlY3RgIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBpdCBjYW4KKyAgIHJhaXNlIDpleGM6YE9TRXJyb3JgIHdpdGggYW4gZXJyb3IgbnVtYmVyIG9mIGBgRUlOVFJgYCwgd2hlcmVhcworICAgOmZ1bmM6YHdhaXRgIHdpbGwgbm90LgorCisgICAqKldpbmRvd3MqKjogQW4gaXRlbSBpbiAqb2JqZWN0X2xpc3QqIG11c3QgZWl0aGVyIGJlIGFuIGludGVnZXIKKyAgIGhhbmRsZSB3aGljaCBpcyB3YWl0YWJsZSAoYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9uIHVzZWQgYnkgdGhlCisgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBXaW4zMiBmdW5jdGlvbiBgYFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoKWBgKQorICAgb3IgaXQgY2FuIGJlIGFuIG9iamVjdCB3aXRoIGEgOm1ldGg6YGZpbGVub2AgbWV0aG9kIHdoaWNoIHJldHVybnMgYQorICAgc29ja2V0IGhhbmRsZSBvciBwaXBlIGhhbmRsZS4gIChOb3RlIHRoYXQgcGlwZSBoYW5kbGVzIGFuZCBzb2NrZXQKKyAgIGhhbmRsZXMgYXJlICoqbm90Kiogd2FpdGFibGUgaGFuZGxlcy4pCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKICoqRXhhbXBsZXMqKgpAQCAtMTg1NSwxOSArMTk4OCwxNiBAQAogICAgZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKIAogICAgYWRkcmVzcyA9ICgnbG9jYWxob3N0JywgNjAwMCkgICAgICMgZmFtaWx5IGlzIGRlZHVjZWQgdG8gYmUgJ0FGX0lORVQnCi0gICBsaXN0ZW5lciA9IExpc3RlbmVyKGFkZHJlc3MsIGF1dGhrZXk9YidzZWNyZXQgcGFzc3dvcmQnKQogCi0gICBjb25uID0gbGlzdGVuZXIuYWNjZXB0KCkKLSAgIHByaW50KCdjb25uZWN0aW9uIGFjY2VwdGVkIGZyb20nLCBsaXN0ZW5lci5sYXN0X2FjY2VwdGVkKQorICAgd2l0aCBMaXN0ZW5lcihhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykgYXMgbGlzdGVuZXI6CisgICAgICAgd2l0aCBsaXN0ZW5lci5hY2NlcHQoKSBhcyBjb25uOgorICAgICAgICAgICBwcmludCgnY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tJywgbGlzdGVuZXIubGFzdF9hY2NlcHRlZCkKIAotICAgY29ubi5zZW5kKFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XSkKKyAgICAgICAgICAgY29ubi5zZW5kKFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XSkKIAotICAgY29ubi5zZW5kX2J5dGVzKGInaGVsbG8nKQorICAgICAgICAgICBjb25uLnNlbmRfYnl0ZXMoYidoZWxsbycpCiAKLSAgIGNvbm4uc2VuZF9ieXRlcyhhcnJheSgnaScsIFs0MiwgMTcyOV0pKQotCi0gICBjb25uLmNsb3NlKCkKLSAgIGxpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGFycmF5KCdpJywgWzQyLCAxNzI5XSkpCiAKIFRoZSBmb2xsb3dpbmcgY29kZSBjb25uZWN0cyB0byB0aGUgc2VydmVyIGFuZCByZWNlaXZlcyBzb21lIGRhdGEgZnJvbSB0aGUKIHNlcnZlcjo6CkBAIC0xODc2LDE3ICsyMDA2LDUwIEBACiAgICBmcm9tIGFycmF5IGltcG9ydCBhcnJheQogCiAgICBhZGRyZXNzID0gKCdsb2NhbGhvc3QnLCA2MDAwKQotICAgY29ubiA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykKIAotICAgcHJpbnQoY29ubi5yZWN2KCkpICAgICAgICAgICAgICAgICAgIyA9PiBbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0KKyAgIHdpdGggQ2xpZW50KGFkZHJlc3MsIGF1dGhrZXk9YidzZWNyZXQgcGFzc3dvcmQnKSBhcyBjb25uOgorICAgICAgIHByaW50KGNvbm4ucmVjdigpKSAgICAgICAgICAgICAgICAgICMgPT4gWzIuMjUsIE5vbmUsICdqdW5rJywgZmxvYXRdCiAKLSAgIHByaW50KGNvbm4ucmVjdl9ieXRlcygpKSAgICAgICAgICAgICMgPT4gJ2hlbGxvJworICAgICAgIHByaW50KGNvbm4ucmVjdl9ieXRlcygpKSAgICAgICAgICAgICMgPT4gJ2hlbGxvJwogCi0gICBhcnIgPSBhcnJheSgnaScsIFswLCAwLCAwLCAwLCAwXSkKLSAgIHByaW50KGNvbm4ucmVjdl9ieXRlc19pbnRvKGFycikpICAgICMgPT4gOAotICAgcHJpbnQoYXJyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyA9PiBhcnJheSgnaScsIFs0MiwgMTcyOSwgMCwgMCwgMF0pCisgICAgICAgYXJyID0gYXJyYXkoJ2knLCBbMCwgMCwgMCwgMCwgMF0pCisgICAgICAgcHJpbnQoY29ubi5yZWN2X2J5dGVzX2ludG8oYXJyKSkgICAgIyA9PiA4CisgICAgICAgcHJpbnQoYXJyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyA9PiBhcnJheSgnaScsIFs0MiwgMTcyOSwgMCwgMCwgMF0pCiAKLSAgIGNvbm4uY2xvc2UoKQorVGhlIGZvbGxvd2luZyBjb2RlIHVzZXMgOmZ1bmM6YH5tdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0YCB0bword2FpdCBmb3IgbWVzc2FnZXMgZnJvbSBtdWx0aXBsZSBwcm9jZXNzZXMgYXQgb25jZTo6CisKKyAgIGltcG9ydCB0aW1lLCByYW5kb20KKyAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBQaXBlLCBjdXJyZW50X3Byb2Nlc3MKKyAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworICAgZGVmIGZvbyh3KToKKyAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgIHcuc2VuZCgoaSwgY3VycmVudF9wcm9jZXNzKCkubmFtZSkpCisgICAgICAgdy5jbG9zZSgpCisKKyAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgICAgcmVhZGVycyA9IFtdCisKKyAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgciwgdyA9IFBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyKQorICAgICAgICAgICBwID0gUHJvY2Vzcyh0YXJnZXQ9Zm9vLCBhcmdzPSh3LCkpCisgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAjIFdlIGNsb3NlIHRoZSB3cml0YWJsZSBlbmQgb2YgdGhlIHBpcGUgbm93IHRvIGJlIHN1cmUgdGhhdAorICAgICAgICAgICAjIHAgaXMgdGhlIG9ubHkgcHJvY2VzcyB3aGljaCBvd25zIGEgaGFuZGxlIGZvciBpdC4gIFRoaXMKKyAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgd2hlbiBwIGNsb3NlcyBpdHMgaGFuZGxlIGZvciB0aGUgd3JpdGFibGUgZW5kLAorICAgICAgICAgICAjIHdhaXQoKSB3aWxsIHByb21wdGx5IHJlcG9ydCB0aGUgcmVhZGFibGUgZW5kIGFzIGJlaW5nIHJlYWR5LgorICAgICAgICAgICB3LmNsb3NlKCkKKworICAgICAgIHdoaWxlIHJlYWRlcnM6CisgICAgICAgICAgIGZvciByIGluIHdhaXQocmVhZGVycyk6CisgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgbXNnID0gci5yZWN2KCkKKyAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICByZWFkZXJzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICBwcmludChtc2cpCiAKIAogLi4gX211bHRpcHJvY2Vzc2luZy1hZGRyZXNzLWZvcm1hdHM6CkBAIC0yMDQ3LDcgKzIyMTAsNyBAQAogCiAgICAgSXQgaXMgcHJvYmFibHkgYmVzdCB0byBzdGljayB0byB1c2luZyBxdWV1ZXMgb3IgcGlwZXMgZm9yIGNvbW11bmljYXRpb24KICAgICBiZXR3ZWVuIHByb2Nlc3NlcyByYXRoZXIgdGhhbiB1c2luZyB0aGUgbG93ZXIgbGV2ZWwgc3luY2hyb25pemF0aW9uCi0gICAgcHJpbWl0aXZlcyBmcm9tIHRoZSA6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZS4KKyAgICBwcmltaXRpdmVzLgogCiBQaWNrbGFiaWxpdHkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdAppbmRleCAyNDdlZmI3Li44N2E1MGIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdApAQCAtNzAsMTAgKzcwLDIzIEBACiAgICBjb25uZWN0aW5nIHRvIGFuIE5OVFAgc2VydmVyIG9uIHRoZSBsb2NhbCBtYWNoaW5lIGFuZCBpbnRlbmQgdG8gY2FsbAogICAgcmVhZGVyLXNwZWNpZmljIGNvbW1hbmRzLCBzdWNoIGFzIGBgZ3JvdXBgYC4gIElmIHlvdSBnZXQgdW5leHBlY3RlZAogICAgOmV4YzpgTk5UUFBlcm1hbmVudEVycm9yYFwgcywgeW91IG1pZ2h0IG5lZWQgdG8gc2V0ICpyZWFkZXJtb2RlKi4KKyAgIDpjbGFzczpgTk5UUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgdG8KKyAgIHVuY29uZGl0aW9uYWxseSBjb25zdW1lIDpleGM6YHNvY2tldC5lcnJvcmAgZXhjZXB0aW9ucyBhbmQgdG8gY2xvc2UgdGhlIE5OVFAKKyAgIGNvbm5lY3Rpb24gd2hlbiBkb25lLiBIZXJlIGlzIGEgc2FtcGxlIG9uIGhvdyB1c2luZyBpdDoKKworICAgID4+PiBmcm9tIG5udHBsaWIgaW1wb3J0IE5OVFAKKyAgICA+Pj4gd2l0aCBOTlRQKCduZXdzLmdtYW5lLm9yZycpIGFzIG46CisgICAgLi4uICAgICBuLmdyb3VwKCdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgICAuLi4KKyAgICAoJzIxMSAxNzU1IDEgMTc1NSBnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJywgMTc1NSwgMSwgMTc1NSwgJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICAgID4+PgorCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAqdXNlbmV0cmMqIGlzIG5vdyBGYWxzZSBieSBkZWZhdWx0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCiAuLiBjbGFzczo6IE5OVFBfU1NMKGhvc3QsIHBvcnQ9NTYzLCB1c2VyPU5vbmUsIHBhc3N3b3JkPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUsIHJlYWRlcm1vZGU9Tm9uZSwgdXNlbmV0cmM9RmFsc2UsIFt0aW1lb3V0XSkKIApAQCAtNTA0LDYgKzUxNyw5IEBACiAgICBhcnRpY2xlIHdpdGggbWVzc2FnZSBJRCAqaWQqLiAgTW9zdCBvZiB0aGUgdGltZSwgdGhpcyBleHRlbnNpb24gaXMgbm90CiAgICBlbmFibGVkIGJ5IE5OVFAgc2VydmVyIGFkbWluaXN0cmF0b3JzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGUgWFBBVEggZXh0ZW5zaW9uIGlzIG5vdCBhY3RpdmVseSB1c2VkLgorCiAKIC4uIFhYWCBkZXByZWNhdGVkOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9udW1lcmljLnJzdCBiL0RvYy9saWJyYXJ5L251bWVyaWMucnN0CmluZGV4IGJhMjJjYjYuLjI3MzJhODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L251bWVyaWMucnN0CisrKyBiL0RvYy9saWJyYXJ5L251bWVyaWMucnN0CkBAIC04LDkgKzgsOSBAQAogVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIG51bWVyaWMgYW5kIG1hdGgtcmVsYXRlZCBmdW5jdGlvbnMKIGFuZCBkYXRhIHR5cGVzLiBUaGUgOm1vZDpgbnVtYmVyc2AgbW9kdWxlIGRlZmluZXMgYW4gYWJzdHJhY3QgaGllcmFyY2h5IG9mCiBudW1lcmljIHR5cGVzLiBUaGUgOm1vZDpgbWF0aGAgYW5kIDptb2Q6YGNtYXRoYCBtb2R1bGVzIGNvbnRhaW4gdmFyaW91cwotbWF0aGVtYXRpY2FsIGZ1bmN0aW9ucyBmb3IgZmxvYXRpbmctcG9pbnQgYW5kIGNvbXBsZXggbnVtYmVycy4gRm9yIHVzZXJzIG1vcmUKLWludGVyZXN0ZWQgaW4gZGVjaW1hbCBhY2N1cmFjeSB0aGFuIGluIHNwZWVkLCB0aGUgOm1vZDpgZGVjaW1hbGAgbW9kdWxlIHN1cHBvcnRzCi1leGFjdCByZXByZXNlbnRhdGlvbnMgb2YgZGVjaW1hbCBudW1iZXJzLgorbWF0aGVtYXRpY2FsIGZ1bmN0aW9ucyBmb3IgZmxvYXRpbmctcG9pbnQgYW5kIGNvbXBsZXggbnVtYmVycy4gVGhlIDptb2Q6YGRlY2ltYWxgCittb2R1bGUgc3VwcG9ydHMgZXhhY3QgcmVwcmVzZW50YXRpb25zIG9mIGRlY2ltYWwgbnVtYmVycywgdXNpbmcgYXJiaXRyYXJ5IHByZWNpc2lvbgorYXJpdGhtZXRpYy4KIAogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFyZSBkb2N1bWVudGVkIGluIHRoaXMgY2hhcHRlcjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCAzNWQ1ZTE2Li4zNmE2MWE1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNzcsMTEgKzc3LDE2IEBACiAKIC4uIGZ1bmN0aW9uOjogZXhpc3RzKHBhdGgpCiAKLSAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIHBhdGguICBSZXR1cm5zIGBgRmFsc2VgYCBmb3IKLSAgIGJyb2tlbiBzeW1ib2xpYyBsaW5rcy4gT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBgYEZhbHNlYGAgaWYKLSAgIHBlcm1pc3Npb24gaXMgbm90IGdyYW50ZWQgdG8gZXhlY3V0ZSA6ZnVuYzpgb3Muc3RhdGAgb24gdGhlIHJlcXVlc3RlZCBmaWxlLCBldmVuCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhbiBleGlzdGluZyBwYXRoIG9yIGFuIG9wZW4KKyAgIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybnMgYGBGYWxzZWBgIGZvciBicm9rZW4gc3ltYm9saWMgbGlua3MuICBPbgorICAgc29tZSBwbGF0Zm9ybXMsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBgYEZhbHNlYGAgaWYgcGVybWlzc2lvbiBpcworICAgbm90IGdyYW50ZWQgdG8gZXhlY3V0ZSA6ZnVuYzpgb3Muc3RhdGAgb24gdGhlIHJlcXVlc3RlZCBmaWxlLCBldmVuCiAgICBpZiB0aGUgKnBhdGgqIHBoeXNpY2FsbHkgZXhpc3RzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnBhdGgqIGNhbiBub3cgYmUgYW4gaW50ZWdlcjogYGBUcnVlYGAgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYW4KKyAgICAgICBvcGVuIGZpbGUgZGVzY3JpcHRvciwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKwogCiAuLiBmdW5jdGlvbjo6IGxleGlzdHMocGF0aCkKIApAQCAtMTI2LDcgKzEzMSw3IEBACiAKICAgIFJldHVybiB0aGUgdGltZSBvZiBsYXN0IGFjY2VzcyBvZiAqcGF0aCouICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgbnVtYmVyIGdpdmluZwogICAgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAoc2VlIHRoZSAgOm1vZDpgdGltZWAgbW9kdWxlKS4gIFJhaXNlCi0gICA6ZXhjOmBvcy5lcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgorICAgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgogCiAgICBJZiA6ZnVuYzpgb3Muc3RhdF9mbG9hdF90aW1lc2AgcmV0dXJucyBUcnVlLCB0aGUgcmVzdWx0IGlzIGEgZmxvYXRpbmcgcG9pbnQKICAgIG51bWJlci4KQEAgLTEzNiw3ICsxNDEsNyBAQAogCiAgICBSZXR1cm4gdGhlIHRpbWUgb2YgbGFzdCBtb2RpZmljYXRpb24gb2YgKnBhdGgqLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIG51bWJlcgogICAgZ2l2aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKHNlZSB0aGUgIDptb2Q6YHRpbWVgIG1vZHVsZSkuCi0gICBSYWlzZSA6ZXhjOmBvcy5lcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgorICAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgogCiAgICBJZiA6ZnVuYzpgb3Muc3RhdF9mbG9hdF90aW1lc2AgcmV0dXJucyBUcnVlLCB0aGUgcmVzdWx0IGlzIGEgZmxvYXRpbmcgcG9pbnQKICAgIG51bWJlci4KQEAgLTE0NywxMyArMTUyLDEzIEBACiAgICBSZXR1cm4gdGhlIHN5c3RlbSdzIGN0aW1lIHdoaWNoLCBvbiBzb21lIHN5c3RlbXMgKGxpa2UgVW5peCkgaXMgdGhlIHRpbWUgb2YgdGhlCiAgICBsYXN0IGNoYW5nZSwgYW5kLCBvbiBvdGhlcnMgKGxpa2UgV2luZG93cyksIGlzIHRoZSBjcmVhdGlvbiB0aW1lIGZvciAqcGF0aCouCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgbnVtYmVyIGdpdmluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChzZWUKLSAgIHRoZSAgOm1vZDpgdGltZWAgbW9kdWxlKS4gIFJhaXNlIDpleGM6YG9zLmVycm9yYCBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvcgorICAgdGhlICA6bW9kOmB0aW1lYCBtb2R1bGUpLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IKICAgIGlzIGluYWNjZXNzaWJsZS4KIAogCiAuLiBmdW5jdGlvbjo6IGdldHNpemUocGF0aCkKIAotICAgUmV0dXJuIHRoZSBzaXplLCBpbiBieXRlcywgb2YgKnBhdGgqLiAgUmFpc2UgOmV4Yzpgb3MuZXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMKKyAgIFJldHVybiB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mICpwYXRoKi4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMKICAgIG5vdCBleGlzdCBvciBpcyBpbmFjY2Vzc2libGUuCiAKIApAQCAtMjYxLDcgKzI2Niw4IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgQWRkZWQgV2luZG93cyBzdXBwb3J0LgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAogCiAuLiBmdW5jdGlvbjo6IHNhbWVzdGF0KHN0YXQxLCBzdGF0MikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCBhYmFjZDI0Li4wMjdhZDcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC05Niw2ICs5NiwxMyBAQAogcHJvY2VzcyBhbmQgdXNlci4KIAogCisuLiBmdW5jdGlvbjo6IGN0ZXJtaWQoKQorCisgICBSZXR1cm4gdGhlIGZpbGVuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIG9mIHRoZSBwcm9jZXNzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKwogLi4gZGF0YTo6IGVudmlyb24KIAogICAgQSA6dGVybTpgbWFwcGluZ2Agb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3RyaW5nIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwKQEAgLTE3Nyw2ICsxODQsMjggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGZ1bmN0aW9uOjogZ2V0ZW52KGtleSwgZGVmYXVsdD1Ob25lKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCisgICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgc3RyLgorCisgICBPbiBVbml4LCBrZXlzIGFuZCB2YWx1ZXMgYXJlIGRlY29kZWQgd2l0aCA6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZ2AKKyAgIGFuZCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlci4gVXNlIDpmdW5jOmBvcy5nZXRlbnZiYCBpZiB5b3UKKyAgIHdvdWxkIGxpa2UgdG8gdXNlIGEgZGlmZmVyZW50IGVuY29kaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LCBXaW5kb3dzLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0ZW52YihrZXksIGRlZmF1bHQ9Tm9uZSkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgorICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIGJ5dGVzLgorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworCiAuLiBmdW5jdGlvbjo6IGdldF9leGVjX3BhdGgoZW52PU5vbmUpCiAKICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCB3aWxsIGJlIHNlYXJjaGVkIGZvciBhIG5hbWVkCkBAIC0xODgsMTMgKzIxNyw2IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0uLiBmdW5jdGlvbjo6IGN0ZXJtaWQoKQotCi0gICBSZXR1cm4gdGhlIGZpbGVuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIG9mIHRoZSBwcm9jZXNzLgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLQogLi4gZnVuY3Rpb246OiBnZXRlZ2lkKCkKIAogICAgUmV0dXJuIHRoZSBlZmZlY3RpdmUgZ3JvdXAgaWQgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlCkBAIC0yMjEsNiArMjQzLDE3IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBnZXRncm91cGxpc3QodXNlciwgZ3JvdXApCisKKyAgIFJldHVybiBsaXN0IG9mIGdyb3VwIGlkcyB0aGF0ICp1c2VyKiBiZWxvbmdzIHRvLiBJZiAqZ3JvdXAqIGlzIG5vdCBpbiB0aGUKKyAgIGxpc3QsIGl0IGlzIGluY2x1ZGVkOyB0eXBpY2FsbHksICpncm91cCogaXMgc3BlY2lmaWVkIGFzIHRoZSBncm91cCBJRAorICAgZmllbGQgZnJvbSB0aGUgcGFzc3dvcmQgcmVjb3JkIGZvciAqdXNlciouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnZXRncm91cHMoKQogCiAgICBSZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgaWRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBwcm9jZXNzLgpAQCAtMjQyLDE3ICsyNzUsNiBAQAogICAgICAgb2J0YWluZWQgd2l0aCA6ZnVuYzpgc3lzY29uZmlnLmdldF9jb25maWdfdmFyYC4KIAogCi0uLiBmdW5jdGlvbjo6IGluaXRncm91cHModXNlcm5hbWUsIGdpZCkKLQotICAgQ2FsbCB0aGUgc3lzdGVtIGluaXRncm91cHMoKSB0byBpbml0aWFsaXplIHRoZSBncm91cCBhY2Nlc3MgbGlzdCB3aXRoIGFsbCBvZgotICAgdGhlIGdyb3VwcyBvZiB3aGljaCB0aGUgc3BlY2lmaWVkIHVzZXJuYW1lIGlzIGEgbWVtYmVyLCBwbHVzIHRoZSBzcGVjaWZpZWQKLSAgIGdyb3VwIGlkLgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0KIC4uIGZ1bmN0aW9uOjogZ2V0bG9naW4oKQogCiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHVzZXIgbG9nZ2VkIGluIG9uIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUKQEAgLTI5NywxMSArMzE5LDQwIEBACiAgICB0aGUgaWQgcmV0dXJuZWQgaXMgdGhlIG9uZSBvZiB0aGUgaW5pdCBwcm9jZXNzICgxKSwgb24gV2luZG93cyBpdCBpcyBzdGlsbAogICAgdGhlIHNhbWUgaWQsIHdoaWNoIG1heSBiZSBhbHJlYWR5IHJldXNlZCBieSBhbm90aGVyIHByb2Nlc3MuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cy4KIAorCisuLiBmdW5jdGlvbjo6IGdldHByaW9yaXR5KHdoaWNoLCB3aG8pCisKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBwcm9jZXNzOyBzY2hlZHVsaW5nIHByaW9yaXR5CisKKyAgIEdldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuICBUaGUgdmFsdWUgKndoaWNoKiBpcyBvbmUgb2YKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgOmNvbnN0OmBQUklPX1BHUlBgLCBvciA6Y29uc3Q6YFBSSU9fVVNFUmAsIGFuZCAqd2hvKgorICAgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gKndoaWNoKiAoYSBwcm9jZXNzIGlkZW50aWZpZXIgZm9yCisgICA6Y29uc3Q6YFBSSU9fUFJPQ0VTU2AsIHByb2Nlc3MgZ3JvdXAgaWRlbnRpZmllciBmb3IgOmNvbnN0OmBQUklPX1BHUlBgLCBhbmQgYQorICAgdXNlciBJRCBmb3IgOmNvbnN0OmBQUklPX1VTRVJgKS4gIEEgemVybyB2YWx1ZSBmb3IgKndobyogZGVub3RlcworICAgKHJlc3BlY3RpdmVseSkgdGhlIGNhbGxpbmcgcHJvY2VzcywgdGhlIHByb2Nlc3MgZ3JvdXAgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcywKKyAgIG9yIHRoZSByZWFsIHVzZXIgSUQgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogUFJJT19QUk9DRVNTCisgICAgICAgICAgUFJJT19QR1JQCisgICAgICAgICAgUFJJT19VU0VSCisKKyAgIFBhcmFtZXRlcnMgZm9yIHRoZSA6ZnVuYzpgZ2V0cHJpb3JpdHlgIGFuZCA6ZnVuYzpgc2V0cHJpb3JpdHlgIGZ1bmN0aW9ucy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdldHJlc3VpZCgpCiAKICAgIFJldHVybiBhIHR1cGxlIChydWlkLCBldWlkLCBzdWlkKSBkZW5vdGluZyB0aGUgY3VycmVudCBwcm9jZXNzJ3MKQEAgLTMzMSwyNCArMzgyLDEzIEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAotLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCisuLiBmdW5jdGlvbjo6IGluaXRncm91cHModXNlcm5hbWUsIGdpZCkKIAotICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgotICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIHN0ci4KKyAgIENhbGwgdGhlIHN5c3RlbSBpbml0Z3JvdXBzKCkgdG8gaW5pdGlhbGl6ZSB0aGUgZ3JvdXAgYWNjZXNzIGxpc3Qgd2l0aCBhbGwgb2YKKyAgIHRoZSBncm91cHMgb2Ygd2hpY2ggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBpcyBhIG1lbWJlciwgcGx1cyB0aGUgc3BlY2lmaWVkCisgICBncm91cCBpZC4KIAotICAgT24gVW5peCwga2V5cyBhbmQgdmFsdWVzIGFyZSBkZWNvZGVkIHdpdGggOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmdgCi0gICBhbmQgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIuIFVzZSA6ZnVuYzpgb3MuZ2V0ZW52YmAgaWYgeW91Ci0gICB3b3VsZCBsaWtlIHRvIHVzZSBhIGRpZmZlcmVudCBlbmNvZGluZy4KLQotICAgQXZhaWxhYmlsaXR5OiBtb3N0IGZsYXZvcnMgb2YgVW5peCwgV2luZG93cy4KLQotCi0uLiBmdW5jdGlvbjo6IGdldGVudmIoa2V5LCBkZWZhdWx0PU5vbmUpCi0KLSAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKLSAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBieXRlcy4KLQotICAgQXZhaWxhYmlsaXR5OiBtb3N0IGZsYXZvcnMgb2YgVW5peC4KKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTQxMCw3ICs0NTAsNyBAQAogCiAuLiBmdW5jdGlvbjo6IHNldHBncnAoKQogCi0gICBDYWxsIHRoZSBzeXN0ZW0gY2FsbCA6YzpmdW5jOmBzZXRwZ3JwYCBvciA6YzpmdW5jOmBzZXRwZ3JwKDAsIDApYCBkZXBlbmRpbmcgb24KKyAgIENhbGwgdGhlIHN5c3RlbSBjYWxsIDpjOmZ1bmM6YHNldHBncnBgIG9yIGBgc2V0cGdycCgwLCAwKWBgIGRlcGVuZGluZyBvbgogICAgd2hpY2ggdmVyc2lvbiBpcyBpbXBsZW1lbnRlZCAoaWYgYW55KS4gIFNlZSB0aGUgVW5peCBtYW51YWwgZm9yIHRoZSBzZW1hbnRpY3MuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KQEAgLTQyNSw2ICs0NjUsMjUgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW9yaXR5KQorCisgICAuLiBpbmRleDo6IHNpbmdsZTogcHJvY2Vzczsgc2NoZWR1bGluZyBwcmlvcml0eQorCisgICBTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiBUaGUgdmFsdWUgKndoaWNoKiBpcyBvbmUgb2YKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgOmNvbnN0OmBQUklPX1BHUlBgLCBvciA6Y29uc3Q6YFBSSU9fVVNFUmAsIGFuZCAqd2hvKgorICAgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gKndoaWNoKiAoYSBwcm9jZXNzIGlkZW50aWZpZXIgZm9yCisgICA6Y29uc3Q6YFBSSU9fUFJPQ0VTU2AsIHByb2Nlc3MgZ3JvdXAgaWRlbnRpZmllciBmb3IgOmNvbnN0OmBQUklPX1BHUlBgLCBhbmQgYQorICAgdXNlciBJRCBmb3IgOmNvbnN0OmBQUklPX1VTRVJgKS4gQSB6ZXJvIHZhbHVlIGZvciAqd2hvKiBkZW5vdGVzCisgICAocmVzcGVjdGl2ZWx5KSB0aGUgY2FsbGluZyBwcm9jZXNzLCB0aGUgcHJvY2VzcyBncm91cCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLAorICAgb3IgdGhlIHJlYWwgdXNlciBJRCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLgorICAgKnByaW9yaXR5KiBpcyBhIHZhbHVlIGluIHRoZSByYW5nZSAtMjAgdG8gMTkuIFRoZSBkZWZhdWx0IHByaW9yaXR5IGlzIDA7CisgICBsb3dlciBwcmlvcml0aWVzIGNhdXNlIG1vcmUgZmF2b3JhYmxlIHNjaGVkdWxpbmcuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IHNldHJlZ2lkKHJnaWQsIGVnaWQpCiAKICAgIFNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIGdyb3VwIGlkcy4KQEAgLTUxMSwxNSArNTcwLDMxIEBACiAgICAgICBzaW5nbGU6IGdldGhvc3RuYW1lKCkgKGluIG1vZHVsZSBzb2NrZXQpCiAgICAgICBzaW5nbGU6IGdldGhvc3RieWFkZHIoKSAoaW4gbW9kdWxlIHNvY2tldCkKIAotICAgUmV0dXJuIGEgNS10dXBsZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZwotICAgc3lzdGVtLiAgVGhlIHR1cGxlIGNvbnRhaW5zIDUgc3RyaW5nczogYGAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sCi0gICBtYWNoaW5lKWBgLiAgU29tZSBzeXN0ZW1zIHRydW5jYXRlIHRoZSBub2RlbmFtZSB0byA4IGNoYXJhY3RlcnMgb3IgdG8gdGhlCisgICBSZXR1cm5zIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGZpdmUgYXR0cmlidXRlczoKKworICAgKiA6YXR0cjpgc3lzbmFtZWAgLSBvcGVyYXRpbmcgc3lzdGVtIG5hbWUKKyAgICogOmF0dHI6YG5vZGVuYW1lYCAtIG5hbWUgb2YgbWFjaGluZSBvbiBuZXR3b3JrIChpbXBsZW1lbnRhdGlvbi1kZWZpbmVkKQorICAgKiA6YXR0cjpgcmVsZWFzZWAgLSBvcGVyYXRpbmcgc3lzdGVtIHJlbGVhc2UKKyAgICogOmF0dHI6YHZlcnNpb25gIC0gb3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uCisgICAqIDphdHRyOmBtYWNoaW5lYCAtIGhhcmR3YXJlIGlkZW50aWZpZXIKKworICAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGlzIG9iamVjdCBpcyBhbHNvIGl0ZXJhYmxlLCBiZWhhdmluZworICAgbGlrZSBhIGZpdmUtdHVwbGUgY29udGFpbmluZyA6YXR0cjpgc3lzbmFtZWAsIDphdHRyOmBub2RlbmFtZWAsCisgICA6YXR0cjpgcmVsZWFzZWAsIDphdHRyOmB2ZXJzaW9uYCwgYW5kIDphdHRyOmBtYWNoaW5lYAorICAgaW4gdGhhdCBvcmRlci4KKworICAgU29tZSBzeXN0ZW1zIHRydW5jYXRlIDphdHRyOmBub2RlbmFtZWAgdG8gOCBjaGFyYWN0ZXJzIG9yIHRvIHRoZQogICAgbGVhZGluZyBjb21wb25lbnQ7IGEgYmV0dGVyIHdheSB0byBnZXQgdGhlIGhvc3RuYW1lIGlzCiAgICA6ZnVuYzpgc29ja2V0LmdldGhvc3RuYW1lYCAgb3IgZXZlbgogICAgYGBzb2NrZXQuZ2V0aG9zdGJ5YWRkcihzb2NrZXQuZ2V0aG9zdG5hbWUoKSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiByZWNlbnQgZmxhdm9ycyBvZiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSB0dXBsZS1saWtlIG9iamVjdAorICAgICAgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzLgorCiAKIC4uIGZ1bmN0aW9uOjogdW5zZXRlbnYoa2V5KQogCkBAIC01NDIsMTUgKzYxNywxNiBAQAogRmlsZSBPYmplY3QgQ3JlYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoZXNlIGZ1bmN0aW9ucyBjcmVhdGUgbmV3IDp0ZXJtOmBmaWxlIG9iamVjdHMgPGZpbGUgb2JqZWN0PmAuIChTZWUgYWxzbyA6ZnVuYzpgb3BlbmAuKQorVGhpcyBmdW5jdGlvbiBjcmVhdGVzIG5ldyA6dGVybTpgZmlsZSBvYmplY3RzIDxmaWxlIG9iamVjdD5gLiAgKFNlZSBhbHNvCis6ZnVuYzpgfm9zLm9wZW5gIGZvciBvcGVuaW5nIGZpbGUgZGVzY3JpcHRvcnMuKQogCiAKIC4uIGZ1bmN0aW9uOjogZmRvcGVuKGZkLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgIFJldHVybiBhbiBvcGVuIGZpbGUgb2JqZWN0IGNvbm5lY3RlZCB0byB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouCi0gICBUaGlzIGlzIGFuIGFsaWFzIG9mIDpmdW5jOmBvcGVuYCBhbmQgYWNjZXB0cyB0aGUgc2FtZSBhcmd1bWVudHMuCi0gICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIDpmdW5jOmBmZG9wZW5gCi0gICBtdXN0IGFsd2F5cyBiZSBhbiBpbnRlZ2VyLgorICAgUmV0dXJuIGFuIG9wZW4gZmlsZSBvYmplY3QgY29ubmVjdGVkIHRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gIFRoaXMgaXMgYW4KKyAgIGFsaWFzIG9mIHRoZSA6ZnVuYzpgb3BlbmAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzLgorICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBvZiA6ZnVuYzpgZmRvcGVuYCBtdXN0IGFsd2F5cworICAgYmUgYW4gaW50ZWdlci4KIAogCiAuLiBfb3MtZmQtb3BzOgpAQCAtNTcyLDYgKzY0OCw3IEBACiBkZXNjcmlwdG9yIGRpcmVjdGx5IHdpbGwgYnlwYXNzIHRoZSBmaWxlIG9iamVjdCBtZXRob2RzLCBpZ25vcmluZyBhc3BlY3RzIHN1Y2gKIGFzIGludGVybmFsIGJ1ZmZlcmluZyBvZiBkYXRhLgogCisKIC4uIGZ1bmN0aW9uOjogY2xvc2UoZmQpCiAKICAgIENsb3NlIGZpbGUgZGVzY3JpcHRvciAqZmQqLgpAQCAtNTg5LDcgKzY2Niw3IEBACiAuLiBmdW5jdGlvbjo6IGNsb3NlcmFuZ2UoZmRfbG93LCBmZF9oaWdoKQogCiAgICBDbG9zZSBhbGwgZmlsZSBkZXNjcmlwdG9ycyBmcm9tICpmZF9sb3cqIChpbmNsdXNpdmUpIHRvICpmZF9oaWdoKiAoZXhjbHVzaXZlKSwKLSAgIGlnbm9yaW5nIGVycm9ycy4gRXF1aXZhbGVudCB0bzo6CisgICBpZ25vcmluZyBlcnJvcnMuIEVxdWl2YWxlbnQgdG8gKGJ1dCBtdWNoIGZhc3RlciB0aGFuKTo6CiAKICAgICAgIGZvciBmZCBpbiByYW5nZShmZF9sb3csIGZkX2hpZ2gpOgogICAgICAgICAgIHRyeToKQEAgLTYyMiw4ICs2OTksOSBAQAogCiAuLiBmdW5jdGlvbjo6IGZjaG1vZChmZCwgbW9kZSkKIAotICAgQ2hhbmdlIHRoZSBtb2RlIG9mIHRoZSBmaWxlIGdpdmVuIGJ5ICpmZCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiAgU2VlIHRoZSBkb2NzCi0gICBmb3IgOmZ1bmM6YGNobW9kYCBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4KKyAgIENoYW5nZSB0aGUgbW9kZSBvZiB0aGUgZmlsZSBnaXZlbiBieSAqZmQqIHRvIHRoZSBudW1lcmljICptb2RlKi4gIFNlZSB0aGUKKyAgIGRvY3MgZm9yIDpmdW5jOmBjaG1vZGAgZm9yIHBvc3NpYmxlIHZhbHVlcyBvZiAqbW9kZSouICBBcyBvZiBQeXRob24gMy4zLCB0aGlzCisgICBpcyBlcXVpdmFsZW50IHRvIGBgb3MuY2htb2QoZmQsIG1vZGUpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNjMxLDcgKzcwOSw5IEBACiAuLiBmdW5jdGlvbjo6IGZjaG93bihmZCwgdWlkLCBnaWQpCiAKICAgIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIGdpdmVuIGJ5ICpmZCogdG8gdGhlIG51bWVyaWMgKnVpZCoKLSAgIGFuZCAqZ2lkKi4gIFRvIGxlYXZlIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLgorICAgYW5kICpnaWQqLiAgVG8gbGVhdmUgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuICBTZWUKKyAgIDpmdW5jOmBjaG93bmAuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5jaG93bihmZCwgdWlkLAorICAgZ2lkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTY2MiwyMCArNzQyLDI0IEBACiAgICBpbmNsdWRlZCBpbiBgYHBhdGhjb25mX25hbWVzYGAsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCB3aXRoCiAgICA6Y29uc3Q6YGVycm5vLkVJTlZBTGAgZm9yIHRoZSBlcnJvciBudW1iZXIuCiAKKyAgIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLnBhdGhjb25mKGZkLCBuYW1lKWBgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAogLi4gZnVuY3Rpb246OiBmc3RhdChmZCkKIAotICAgUmV0dXJuIHN0YXR1cyBmb3IgZmlsZSBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YH5vcy5zdGF0YC4KKyAgIFJldHVybiBzdGF0dXMgZm9yIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmB+b3Muc3RhdGAuICBBcyBvZiBQeXRob24KKyAgIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3Muc3RhdChmZClgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAKIC4uIGZ1bmN0aW9uOjogZnN0YXR2ZnMoZmQpCiAKLSAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCBmaWxlCi0gICBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YHN0YXR2ZnNgLgorICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoCisgICBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgc3RhdHZmc2AuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzCisgICBlcXVpdmFsZW50IHRvIGBgb3Muc3RhdHZmcyhmZClgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC02ODksMTMgKzc3MywxNCBAQAogICAgYGBmLmZsdXNoKClgYCwgYW5kIHRoZW4gZG8gYGBvcy5mc3luYyhmLmZpbGVubygpKWBgLCB0byBlbnN1cmUgdGhhdCBhbGwgaW50ZXJuYWwKICAgIGJ1ZmZlcnMgYXNzb2NpYXRlZCB3aXRoICpmKiBhcmUgd3JpdHRlbiB0byBkaXNrLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIGFuZCBXaW5kb3dzLgorICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAKIC4uIGZ1bmN0aW9uOjogZnRydW5jYXRlKGZkLCBsZW5ndGgpCiAKLSAgIFRydW5jYXRlIHRoZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gZmlsZSBkZXNjcmlwdG9yICpmZCosIHNvIHRoYXQgaXQgaXMgYXQgbW9zdAotICAgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4KKyAgIFRydW5jYXRlIHRoZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gZmlsZSBkZXNjcmlwdG9yICpmZCosIHNvIHRoYXQgaXQgaXMgYXQKKyAgIG1vc3QgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgYGBvcy50cnVuY2F0ZShmZCwgbGVuZ3RoKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTcwOCw2ICs3OTMsMzEgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IGxvY2tmKGZkLCBjbWQsIGxlbikKKworICAgQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgICpmZCogaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAqY21kKiBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIC0gb25lIG9mIDpkYXRhOmBGX0xPQ0tgLCA6ZGF0YTpgRl9UTE9DS2AsCisgICA6ZGF0YTpgRl9VTE9DS2Agb3IgOmRhdGE6YEZfVEVTVGAuCisgICAqbGVuKiBzcGVjaWZpZXMgdGhlIHNlY3Rpb24gb2YgdGhlIGZpbGUgdG8gbG9jay4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogRl9MT0NLCisgICAgICAgICAgRl9UTE9DSworICAgICAgICAgIEZfVUxPQ0sKKyAgICAgICAgICBGX1RFU1QKKworICAgRmxhZ3MgdGhhdCBzcGVjaWZ5IHdoYXQgYWN0aW9uIDpmdW5jOmBsb2NrZmAgd2lsbCB0YWtlLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbHNlZWsoZmQsIHBvcywgaG93KQogCiAgICBTZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgZmlsZSBkZXNjcmlwdG9yICpmZCogdG8gcG9zaXRpb24gKnBvcyosIG1vZGlmaWVkCkBAIC03MjQsMjEgKzgzNCwyOSBAQAogICAgICAgICAgIFNFRUtfRU5ECiAKICAgIFBhcmFtZXRlcnMgdG8gdGhlIDpmdW5jOmBsc2Vla2AgZnVuY3Rpb24uIFRoZWlyIHZhbHVlcyBhcmUgMCwgMSwgYW5kIDIsCi0gICByZXNwZWN0aXZlbHkuIEF2YWlsYWJpbGl0eTogV2luZG93cywgVW5peC4KKyAgIHJlc3BlY3RpdmVseS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgY291bGQgc3VwcG9ydCBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQorICAgICAgOmRhdGE6YG9zLlNFRUtfSE9MRWAgb3IgOmRhdGE6YG9zLlNFRUtfREFUQWAuCiAKIAotLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIGZsYWdzWywgbW9kZV0pCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgZmxhZ3MsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCiAgICBPcGVuIHRoZSBmaWxlICpmaWxlKiBhbmQgc2V0IHZhcmlvdXMgZmxhZ3MgYWNjb3JkaW5nIHRvICpmbGFncyogYW5kIHBvc3NpYmx5Ci0gICBpdHMgbW9kZSBhY2NvcmRpbmcgdG8gKm1vZGUqLiAgVGhlIGRlZmF1bHQgKm1vZGUqIGlzIGBgMG83NzdgYCAob2N0YWwpLCBhbmQKLSAgIHRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IKLSAgIHRoZSBuZXdseSBvcGVuZWQgZmlsZS4KKyAgIGl0cyBtb2RlIGFjY29yZGluZyB0byAqbW9kZSouICBXaGVuIGNvbXB1dGluZyAqbW9kZSosIHRoZSBjdXJyZW50IHVtYXNrIHZhbHVlCisgICBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBuZXdseSBvcGVuZWQgZmlsZS4KIAogICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZsYWcgYW5kIG1vZGUgdmFsdWVzLCBzZWUgdGhlIEMgcnVuLXRpbWUgZG9jdW1lbnRhdGlvbjsKICAgIGZsYWcgY29uc3RhbnRzIChsaWtlIDpjb25zdDpgT19SRE9OTFlgIGFuZCA6Y29uc3Q6YE9fV1JPTkxZYCkgYXJlIGRlZmluZWQgaW4KICAgIHRoaXMgbW9kdWxlIHRvbyAoc2VlIDpyZWY6YG9wZW4tY29uc3RhbnRzYCkuICBJbiBwYXJ0aWN1bGFyLCBvbiBXaW5kb3dzIGFkZGluZwogICAgOmNvbnN0OmBPX0JJTkFSWWAgaXMgbmVlZGVkIHRvIG9wZW4gZmlsZXMgaW4gYmluYXJ5IG1vZGUuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gbm90ZTo6CkBAIC03NDgsNiArODY2LDkgQEAKICAgICAgIDptZXRoOmB+ZmlsZS5yZWFkYCBhbmQgOm1ldGg6YH5maWxlLndyaXRlYCBtZXRob2RzIChhbmQgbWFueSBtb3JlKS4gIFRvCiAgICAgICB3cmFwIGEgZmlsZSBkZXNjcmlwdG9yIGluIGEgZmlsZSBvYmplY3QsIHVzZSA6ZnVuYzpgZmRvcGVuYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiBvcGVucHR5KCkKIApAQCAtNzY4LDYgKzg4OSw3OSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAKKy4uIGZ1bmN0aW9uOjogcGlwZTIoZmxhZ3MpCisKKyAgIENyZWF0ZSBhIHBpcGUgd2l0aCAqZmxhZ3MqIHNldCBhdG9taWNhbGx5LgorICAgKmZsYWdzKiBjYW4gYmUgY29uc3RydWN0ZWQgYnkgT1JpbmcgdG9nZXRoZXIgb25lIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzOgorICAgOmRhdGE6YE9fTk9OQkxPQ0tgLCA6ZGF0YTpgT19DTE9FWEVDYC4KKyAgIFJldHVybiBhIHBhaXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBgYChyLCB3KWBgIHVzYWJsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZywKKyAgIHJlc3BlY3RpdmVseS4KKworICAgQXZhaWxhYmlsaXR5OiBzb21lIGZsYXZvcnMgb2YgVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKQorCisgICBFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKmZkKgorICAgc3RhcnRpbmcgZnJvbSAqb2Zmc2V0KiBhbmQgY29udGludWluZyBmb3IgKmxlbiogYnl0ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIGxlbiwgYWR2aWNlKQorCisgICBBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiB0aHVzIGFsbG93aW5nCisgICB0aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy4KKyAgIFRoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqZmQqIHN0YXJ0aW5nIGF0CisgICAqb2Zmc2V0KiBhbmQgY29udGludWluZyBmb3IgKmxlbiogYnl0ZXMuCisgICAqYWR2aWNlKiBpcyBvbmUgb2YgOmRhdGE6YFBPU0lYX0ZBRFZfTk9STUFMYCwgOmRhdGE6YFBPU0lYX0ZBRFZfU0VRVUVOVElBTGAsCisgICA6ZGF0YTpgUE9TSVhfRkFEVl9SQU5ET01gLCA6ZGF0YTpgUE9TSVhfRkFEVl9OT1JFVVNFYCwKKyAgIDpkYXRhOmBQT1NJWF9GQURWX1dJTExORUVEYCBvciA6ZGF0YTpgUE9TSVhfRkFEVl9ET05UTkVFRGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IFBPU0lYX0ZBRFZfTk9STUFMCisgICAgICAgICAgUE9TSVhfRkFEVl9TRVFVRU5USUFMCisgICAgICAgICAgUE9TSVhfRkFEVl9SQU5ET00KKyAgICAgICAgICBQT1NJWF9GQURWX05PUkVVU0UKKyAgICAgICAgICBQT1NJWF9GQURWX1dJTExORUVECisgICAgICAgICAgUE9TSVhfRkFEVl9ET05UTkVFRAorCisgICBGbGFncyB0aGF0IGNhbiBiZSB1c2VkIGluICphZHZpY2UqIGluIDpmdW5jOmBwb3NpeF9mYWR2aXNlYCB0aGF0IHNwZWNpZnkKKyAgIHRoZSBhY2Nlc3MgcGF0dGVybiB0aGF0IGlzIGxpa2VseSB0byBiZSB1c2VkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHJlYWQoZmQsIGJ1ZmZlcnNpemUsIG9mZnNldCkKKworICAgUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCAqZmQqLCBhdCBhIHBvc2l0aW9uIG9mICpvZmZzZXQqLiBJdCB3aWxsIHJlYWQgdXAKKyAgIHRvICpidWZmZXJzaXplKiBudW1iZXIgb2YgYnl0ZXMuIFRoZSBmaWxlIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHB3cml0ZShmZCwgc3RyaW5nLCBvZmZzZXQpCisKKyAgIFdyaXRlICpzdHJpbmcqIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCAqZmQqLCBmcm9tICpvZmZzZXQqLCBsZWF2aW5nIHRoZSBmaWxlCisgICBvZmZzZXQgdW5jaGFuZ2VkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogcmVhZChmZCwgbikKIAogICAgUmVhZCBhdCBtb3N0ICpuKiBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciAqZmQqLiBSZXR1cm4gYSBieXRlc3RyaW5nIGNvbnRhaW5pbmcgdGhlCkBAIC03NzksMTAgKzk3Myw2MiBAQAogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGxvdy1sZXZlbCBJL08gYW5kIG11c3QgYmUgYXBwbGllZCB0byBhIGZpbGUKLSAgICAgIGRlc2NyaXB0b3IgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9zLm9wZW5gIG9yIDpmdW5jOmBwaXBlYC4gIFRvIHJlYWQgYSAiZmlsZSBvYmplY3QiCi0gICAgICByZXR1cm5lZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG9wZW5gIG9yIGJ5IDpmdW5jOmBwb3BlbmAgb3IKLSAgICAgIDpmdW5jOmBmZG9wZW5gLCBvciA6ZGF0YTpgc3lzLnN0ZGluYCwgdXNlIGl0cyA6bWV0aDpgfmZpbGUucmVhZGAgb3IKLSAgICAgIDptZXRoOmB+ZmlsZS5yZWFkbGluZWAgbWV0aG9kcy4KKyAgICAgIGRlc2NyaXB0b3IgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9zLm9wZW5gIG9yIDpmdW5jOmBwaXBlYC4gIFRvIHJlYWQgYQorICAgICAgImZpbGUgb2JqZWN0IiByZXR1cm5lZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG9wZW5gIG9yIGJ5CisgICAgICA6ZnVuYzpgcG9wZW5gIG9yIDpmdW5jOmBmZG9wZW5gLCBvciA6ZGF0YTpgc3lzLnN0ZGluYCwgdXNlIGl0cworICAgICAgOm1ldGg6YH5maWxlLnJlYWRgIG9yIDptZXRoOmB+ZmlsZS5yZWFkbGluZWAgbWV0aG9kcy4KKworCisuLiBmdW5jdGlvbjo6IHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgICBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIG5ieXRlcywgaGVhZGVycz1Ob25lLCB0cmFpbGVycz1Ob25lLCBmbGFncz0wKQorCisgICBDb3B5ICpuYnl0ZXMqIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yICppbiogdG8gZmlsZSBkZXNjcmlwdG9yICpvdXQqCisgICBzdGFydGluZyBhdCAqb2Zmc2V0Ki4KKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQuIFdoZW4gRU9GIGlzIHJlYWNoZWQgcmV0dXJuIDAuCisKKyAgIFRoZSBmaXJzdCBmdW5jdGlvbiBub3RhdGlvbiBpcyBzdXBwb3J0ZWQgYnkgYWxsIHBsYXRmb3JtcyB0aGF0IGRlZmluZQorICAgOmZ1bmM6YHNlbmRmaWxlYC4KKworICAgT24gTGludXgsIGlmICpvZmZzZXQqIGlzIGdpdmVuIGFzIGBgTm9uZWBgLCB0aGUgYnl0ZXMgYXJlIHJlYWQgZnJvbSB0aGUKKyAgIGN1cnJlbnQgcG9zaXRpb24gb2YgKmluKiBhbmQgdGhlIHBvc2l0aW9uIG9mICppbiogaXMgdXBkYXRlZC4KKworICAgVGhlIHNlY29uZCBjYXNlIG1heSBiZSB1c2VkIG9uIE1hYyBPUyBYIGFuZCBGcmVlQlNEIHdoZXJlICpoZWFkZXJzKiBhbmQKKyAgICp0cmFpbGVycyogYXJlIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnVmZmVycyB0aGF0IGFyZSB3cml0dGVuIGJlZm9yZSBhbmQKKyAgIGFmdGVyIHRoZSBkYXRhIGZyb20gKmluKiBpcyB3cml0dGVuLiBJdCByZXR1cm5zIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBjYXNlLgorCisgICBPbiBNYWMgT1MgWCBhbmQgRnJlZUJTRCwgYSB2YWx1ZSBvZiAwIGZvciAqbmJ5dGVzKiBzcGVjaWZpZXMgdG8gc2VuZCB1bnRpbAorICAgdGhlIGVuZCBvZiAqaW4qIGlzIHJlYWNoZWQuCisKKyAgIE9uIFNvbGFyaXMsICpvdXQqIG1heSBiZSB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIGEgcmVndWxhciBmaWxlIG9yIHRoZSBmaWxlCisgICBkZXNjcmlwdG9yIG9mIGEgc29ja2V0LiBPbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCAqb3V0KiBtdXN0IGJlIHRoZSBmaWxlCisgICBkZXNjcmlwdG9yIG9mIGFuIG9wZW4gc29ja2V0LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBTRl9OT0RJU0tJTworICAgICAgICAgIFNGX01OT1dBSVQKKyAgICAgICAgICBTRl9TWU5DCisKKyAgIFBhcmFtZXRlcnMgdG8gdGhlIDpmdW5jOmBzZW5kZmlsZWAgZnVuY3Rpb24sIGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cworICAgdGhlbS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHJlYWR2KGZkLCBidWZmZXJzKQorCisgICBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgaW50byBhIG51bWJlciBvZiB3cml0YWJsZSBidWZmZXJzLiAqYnVmZmVycyogaXMKKyAgIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiB3cml0YWJsZSBidWZmZXJzLiBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMKKyAgIHJlYWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZnVuY3Rpb246OiB0Y2dldHBncnAoZmQpCkBAIC04MjYsNiArMTA3MiwxNyBAQAogICAgICAgOm1ldGg6YH5maWxlLndyaXRlYCBtZXRob2QuCiAKIAorLi4gZnVuY3Rpb246OiB3cml0ZXYoZmQsIGJ1ZmZlcnMpCisKKyAgIFdyaXRlIHRoZSBjb250ZW50cyBvZiAqYnVmZmVycyogdG8gZmlsZSBkZXNjcmlwdG9yICpmZCosIHdoZXJlICpidWZmZXJzKgorICAgaXMgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIGJ1ZmZlcnMuCisgICBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBfb3Blbi1jb25zdGFudHM6CiAKIGBgb3BlbigpYGAgZmxhZyBjb25zdGFudHMKQEAgLTg1Nyw5ICsxMTE0LDEyIEBACiAgICAgICAgICAgT19OT0NUVFkKICAgICAgICAgICBPX1NITE9DSwogICAgICAgICAgIE9fRVhMT0NLCisgICAgICAgICAgT19DTE9FWEVDCiAKICAgIFRoZXNlIGNvbnN0YW50cyBhcmUgb25seSBhdmFpbGFibGUgb24gVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZCA6ZGF0YTpgT19DTE9FWEVDYCBjb25zdGFudC4KIAogLi4gZGF0YTo6IE9fQklOQVJZCiAgICAgICAgICAgT19OT0lOSEVSSVQKQEAgLTg4MiwxMiArMTE0MiwxMDYgQEAKICAgIHRoZSBDIGxpYnJhcnkuCiAKIAorLi4gZGF0YTo6IFJUTERfTEFaWQorICAgICAgICAgIFJUTERfTk9XCisgICAgICAgICAgUlRMRF9HTE9CQUwKKyAgICAgICAgICBSVExEX0xPQ0FMCisgICAgICAgICAgUlRMRF9OT0RFTEVURQorICAgICAgICAgIFJUTERfTk9MT0FECisgICAgICAgICAgUlRMRF9ERUVQQklORAorCisgICBTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UgOm1hbnBhZ2U6YGRsb3BlbigzKWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIF90ZXJtaW5hbC1zaXplOgorCitRdWVyeWluZyB0aGUgc2l6ZSBvZiBhIHRlcm1pbmFsCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGdldF90ZXJtaW5hbF9zaXplKGZkPVNURE9VVF9GSUxFTk8pCisKKyAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93IGFzIGBgKGNvbHVtbnMsIGxpbmVzKWBgLAorICAgdHVwbGUgb2YgdHlwZSA6Y2xhc3M6YHRlcm1pbmFsX3NpemVgLgorCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgYGBmZGBgIChkZWZhdWx0IGBgU1RET1VUX0ZJTEVOT2BgLCBvciBzdGFuZGFyZAorICAgb3V0cHV0KSBzcGVjaWZpZXMgd2hpY2ggZmlsZSBkZXNjcmlwdG9yIHNob3VsZCBiZSBxdWVyaWVkLgorCisgICBJZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbCwgYW4gOmV4YzpgT1NFcnJvcmAKKyAgIGlzIHJhaXNlZC4KKworICAgOmZ1bmM6YHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZWAgaXMgdGhlIGhpZ2gtbGV2ZWwgZnVuY3Rpb24gd2hpY2gKKyAgIHNob3VsZCBub3JtYWxseSBiZSB1c2VkLCBgYG9zLmdldF90ZXJtaW5hbF9zaXplYGAgaXMgdGhlIGxvdy1sZXZlbAorICAgaW1wbGVtZW50YXRpb24uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworLi4gY2xhc3M6OiB0ZXJtaW5hbF9zaXplCisKKyAgIEEgc3ViY2xhc3Mgb2YgdHVwbGUsIGhvbGRpbmcgYGAoY29sdW1ucywgbGluZXMpYGAgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBzaXplLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb2x1bW5zCisKKyAgICAgIFdpZHRoIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycy4KKworICAgLi4gYXR0cmlidXRlOjogbGluZXMKKworICAgICAgSGVpZ2h0IG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycy4KKworCiAuLiBfb3MtZmlsZS1kaXI6CiAKIEZpbGVzIGFuZCBEaXJlY3RvcmllcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIGZ1bmN0aW9uOjogYWNjZXNzKHBhdGgsIG1vZGUpCitPbiBzb21lIFVuaXggcGxhdGZvcm1zLCBtYW55IG9mIHRoZXNlIGZ1bmN0aW9ucyBzdXBwb3J0IG9uZSBvciBtb3JlIG9mIHRoZXNlCitmZWF0dXJlczoKKworLi4gX3BhdGhfZmQ6CisKKyogKipzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yOioqCisgIEZvciBzb21lIGZ1bmN0aW9ucywgdGhlICpwYXRoKiBhcmd1bWVudCBjYW4gYmUgbm90IG9ubHkgYSBzdHJpbmcgZ2l2aW5nIGEgcGF0aAorICBuYW1lLCBidXQgYWxzbyBhIGZpbGUgZGVzY3JpcHRvci4gIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gb3BlcmF0ZSBvbiB0aGUgZmlsZQorICByZWZlcnJlZCB0byBieSB0aGUgZGVzY3JpcHRvci4gIChGb3IgUE9TSVggc3lzdGVtcywgUHl0aG9uIHdpbGwgY2FsbCB0aGUKKyAgYGBmLi4uYGAgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uKQorCisgIFlvdSBjYW4gY2hlY2sgd2hldGhlciBvciBub3QgKnBhdGgqIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSBmaWxlIGRlc2NyaXB0b3Igb24KKyAgeW91ciBwbGF0Zm9ybSB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgLiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0CisgIHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworICBJZiB0aGUgZnVuY3Rpb24gYWxzbyBzdXBwb3J0cyAqZGlyX2ZkKiBvciAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMsIGl0IGlzCisgIGFuIGVycm9yIHRvIHNwZWNpZnkgb25lIG9mIHRob3NlIHdoZW4gc3VwcGx5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvci4KKworLi4gX2Rpcl9mZDoKKworKiAqKnBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9yczoqKiBJZiAqZGlyX2ZkKiBpcyBub3QgYGBOb25lYGAsIGl0CisgIHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcGF0aCB0byBvcGVyYXRlCisgIG9uIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuICBJZiB0aGUKKyAgcGF0aCBpcyBhYnNvbHV0ZSwgKmRpcl9mZCogaXMgaWdub3JlZC4gIChGb3IgUE9TSVggc3lzdGVtcywgUHl0aG9uIHdpbGwgY2FsbAorICB0aGUgYGAuLi5hdGBgIG9yIGBgZi4uLmF0YGAgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uKQorCisgIFlvdSBjYW4gY2hlY2sgd2hldGhlciBvciBub3QgKmRpcl9mZCogaXMgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm0gdXNpbmcKKyAgOmRhdGE6YG9zLnN1cHBvcnRzX2Rpcl9mZGAuICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhCisgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCisuLiBfZm9sbG93X3N5bWxpbmtzOgorCisqICoqbm90IGZvbGxvd2luZyBzeW1saW5rczoqKiBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcworICBgYEZhbHNlYGAsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIHRvIG9wZXJhdGUgb24gaXMgYSBzeW1ib2xpYyBsaW5rLAorICB0aGUgZnVuY3Rpb24gd2lsbCBvcGVyYXRlIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZQorICBsaW5rIHBvaW50cyB0by4gIChGb3IgUE9TSVggc3lzdGVtcywgUHl0aG9uIHdpbGwgY2FsbCB0aGUgYGBsLi4uYGAgdmVyc2lvbiBvZgorICB0aGUgZnVuY3Rpb24uKQorCisgIFlvdSBjYW4gY2hlY2sgd2hldGhlciBvciBub3QgKmZvbGxvd19zeW1saW5rcyogaXMgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm0KKyAgdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2AuICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQKKyAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCisKKworLi4gZnVuY3Rpb246OiBhY2Nlc3MocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gKnBhdGgqLiAgTm90ZSB0aGF0IG1vc3Qgb3BlcmF0aW9ucwogICAgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpcyByb3V0aW5lIGNhbiBiZSB1c2VkIGluIGEKQEAgLTg5OCw2ICsxMjUyLDE1IEBACiAgICA6Y29uc3Q6YEZhbHNlYCBpZiBub3QuIFNlZSB0aGUgVW5peCBtYW4gcGFnZSA6bWFucGFnZTpgYWNjZXNzKDIpYCBmb3IgbW9yZQogICAgaW5mb3JtYXRpb24uCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkKKyAgIGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKyAgIElmICplZmZlY3RpdmVfaWRzKiBpcyBgYFRydWVgYCwgOmZ1bmM6YGFjY2Vzc2Agd2lsbCBwZXJmb3JtIGl0cyBhY2Nlc3MKKyAgIGNoZWNrcyB1c2luZyB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZiB0aGUgcmVhbCB1aWQvZ2lkLgorICAgKmVmZmVjdGl2ZV9pZHMqIG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm07IHlvdSBjYW4gY2hlY2sgd2hldGhlcgorICAgb3Igbm90IGl0IGlzIGF2YWlsYWJsZSB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkc2AuICBJZiBpdCBpcworICAgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKQEAgLTkxNywxMSArMTI4MCw4IEBACiAKICAgICAgICAgIHRyeToKICAgICAgICAgICAgICBmcCA9IG9wZW4oIm15ZmlsZSIpCi0gICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgotICAgICAgICAgICAgICAgICByZXR1cm4gInNvbWUgZGVmYXVsdCBkYXRhIgotICAgICAgICAgICAgICMgTm90IGEgcGVybWlzc2lvbiBlcnJvci4KLSAgICAgICAgICAgICByYWlzZQorICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKKyAgICAgICAgICAgICByZXR1cm4gInNvbWUgZGVmYXVsdCBkYXRhIgogICAgICAgICAgZWxzZToKICAgICAgICAgICAgICB3aXRoIGZwOgogICAgICAgICAgICAgICAgICByZXR1cm4gZnAucmVhZCgpCkBAIC05MzIsMjkgKzEyOTIsMTggQEAKICAgICAgIHN1Y2NlZWQsIHBhcnRpY3VsYXJseSBmb3Igb3BlcmF0aW9ucyBvbiBuZXR3b3JrIGZpbGVzeXN0ZW1zIHdoaWNoIG1heSBoYXZlCiAgICAgICBwZXJtaXNzaW9ucyBzZW1hbnRpY3MgYmV5b25kIHRoZSB1c3VhbCBQT1NJWCBwZXJtaXNzaW9uLWJpdCBtb2RlbC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiwgKmVmZmVjdGl2ZV9pZHMqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogcGFyYW1ldGVycy4KKwogCiAuLiBkYXRhOjogRl9PSworICAgICAgICAgIFJfT0sKKyAgICAgICAgICBXX09LCisgICAgICAgICAgWF9PSwogCi0gICBWYWx1ZSB0byBwYXNzIGFzIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlIGV4aXN0ZW5jZSBvZgotICAgKnBhdGgqLgotCi0KLS4uIGRhdGE6OiBSX09LCi0KLSAgIFZhbHVlIHRvIGluY2x1ZGUgaW4gdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUKLSAgIHJlYWRhYmlsaXR5IG9mICpwYXRoKi4KLQotCi0uLiBkYXRhOjogV19PSwotCi0gICBWYWx1ZSB0byBpbmNsdWRlIGluIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlCi0gICB3cml0YWJpbGl0eSBvZiAqcGF0aCouCi0KLQotLi4gZGF0YTo6IFhfT0sKLQotICAgVmFsdWUgdG8gaW5jbHVkZSBpbiB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byBkZXRlcm1pbmUgaWYKLSAgICpwYXRoKiBjYW4gYmUgZXhlY3V0ZWQuCisgICBWYWx1ZXMgdG8gcGFzcyBhcyB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZQorICAgZXhpc3RlbmNlLCByZWFkYWJpbGl0eSwgd3JpdGFiaWxpdHkgYW5kIGV4ZWN1dGFiaWxpdHkgb2YgKnBhdGgqLAorICAgcmVzcGVjdGl2ZWx5LgogCiAKIC4uIGZ1bmN0aW9uOjogY2hkaXIocGF0aCkKQEAgLTk2MywzMyArMTMxMiwxNyBAQAogCiAgICBDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gKnBhdGgqLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KLQotLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCi0KLSAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZGlyZWN0b3J5IHJlcHJlc2VudGVkIGJ5IHRoZSBmaWxlCi0gICBkZXNjcmlwdG9yICpmZCouICBUaGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbiBvcGVuCi0gICBmaWxlLgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLQotLi4gZnVuY3Rpb246OiBnZXRjd2QoKQotCi0gICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuICBUaGUKKyAgIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhbiBvcGVuZWQgZGlyZWN0b3J5LCBub3QgYW4gb3BlbiBmaWxlLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKLQotLi4gZnVuY3Rpb246OiBnZXRjd2RiKCkKLQotICAgUmV0dXJuIGEgYnl0ZXN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IKKyAgICAgIG9uIHNvbWUgcGxhdGZvcm1zLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hmbGFncyhwYXRoLCBmbGFncykKKy4uIGZ1bmN0aW9uOjogY2hmbGFncyhwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFNldCB0aGUgZmxhZ3Mgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICpmbGFncyouICpmbGFncyogbWF5IHRha2UgYSBjb21iaW5hdGlvbgogICAgKGJpdHdpc2UgT1IpIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzIChhcyBkZWZpbmVkIGluIHRoZSA6bW9kOmBzdGF0YCBtb2R1bGUpOgpAQCAtMTAwNywxNiArMTM0MCwxNSBAQAogICAgKiA6ZGF0YTpgc3RhdC5TRl9OT1VOTElOS2AKICAgICogOmRhdGE6YHN0YXQuU0ZfU05BUFNIT1RgCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAotCi0uLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQotCi0gICBDaGFuZ2UgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gKnBhdGgqLiBBdmFpbGFiaWxpdHk6Ci0gICBVbml4LgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKIAotLi4gZnVuY3Rpb246OiBjaG1vZChwYXRoLCBtb2RlKQorLi4gZnVuY3Rpb246OiBjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIENoYW5nZSB0aGUgbW9kZSBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiAqbW9kZSogbWF5IHRha2Ugb25lIG9mIHRoZQogICAgZm9sbG93aW5nIHZhbHVlcyAoYXMgZGVmaW5lZCBpbiB0aGUgOm1vZDpgc3RhdGAgbW9kdWxlKSBvciBiaXR3aXNlIE9SZWQKQEAgLTEwNDIsMjggKzEzNzQsNzcgQEAKICAgICogOmRhdGE6YHN0YXQuU19JV09USGAKICAgICogOmRhdGE6YHN0YXQuU19JWE9USGAKIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gbm90ZTo6CiAKLSAgICAgIEFsdGhvdWdoIFdpbmRvd3Mgc3VwcG9ydHMgOmZ1bmM6YGNobW9kYCwgeW91IGNhbiBvbmx5ICBzZXQgdGhlIGZpbGUncyByZWFkLW9ubHkKLSAgICAgIGZsYWcgd2l0aCBpdCAodmlhIHRoZSBgYHN0YXQuU19JV1JJVEVgYCAgYW5kIGBgc3RhdC5TX0lSRUFEYGAKLSAgICAgIGNvbnN0YW50cyBvciBhIGNvcnJlc3BvbmRpbmcgaW50ZWdlciB2YWx1ZSkuICBBbGwgb3RoZXIgYml0cyBhcmUKLSAgICAgIGlnbm9yZWQuCisgICAgICBBbHRob3VnaCBXaW5kb3dzIHN1cHBvcnRzIDpmdW5jOmBjaG1vZGAsIHlvdSBjYW4gb25seSBzZXQgdGhlIGZpbGUncworICAgICAgcmVhZC1vbmx5IGZsYWcgd2l0aCBpdCAodmlhIHRoZSBgYHN0YXQuU19JV1JJVEVgYCBhbmQgYGBzdGF0LlNfSVJFQURgYAorICAgICAgY29uc3RhbnRzIG9yIGEgY29ycmVzcG9uZGluZyBpbnRlZ2VyIHZhbHVlKS4gIEFsbCBvdGhlciBiaXRzIGFyZSBpZ25vcmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLAorICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQpCisuLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKLSAgIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqdWlkKiBhbmQgKmdpZCouIFRvIGxlYXZlCi0gICBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4KKyAgIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqdWlkKiBhbmQgKmdpZCouICBUbworICAgbGVhdmUgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLAorICAgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90CisgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisgICBTZWUgOmZ1bmM6YHNodXRpbC5jaG93bmAgZm9yIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBuYW1lcyBpbgorICAgYWRkaXRpb24gdG8gbnVtZXJpYyBpZHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCisgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCisKKworLi4gZnVuY3Rpb246OiBjaHJvb3QocGF0aCkKKworICAgQ2hhbmdlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvICpwYXRoKi4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogZmNoZGlyKGZkKQorCisgICBDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRpcmVjdG9yeSByZXByZXNlbnRlZCBieSB0aGUgZmlsZQorICAgZGVzY3JpcHRvciAqZmQqLiAgVGhlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhbiBvcGVuZWQgZGlyZWN0b3J5LCBub3QgYW4KKyAgIG9wZW4gZmlsZS4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLmNoZGlyKGZkKWBgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKworLi4gZnVuY3Rpb246OiBnZXRjd2QoKQorCisgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKworLi4gZnVuY3Rpb246OiBnZXRjd2RiKCkKKworICAgUmV0dXJuIGEgYnl0ZXN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworCiAuLiBmdW5jdGlvbjo6IGxjaGZsYWdzKHBhdGgsIGZsYWdzKQogCi0gICBTZXQgdGhlIGZsYWdzIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqZmxhZ3MqLCBsaWtlIDpmdW5jOmBjaGZsYWdzYCwgYnV0IGRvIG5vdAotICAgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorICAgU2V0IHRoZSBmbGFncyBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKmZsYWdzKiwgbGlrZSA6ZnVuYzpgY2hmbGFnc2AsIGJ1dCBkbworICAgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgYGBvcy5jaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtMTA3MSwxMTAgKzE0NTIsMTAxIEBACiAuLiBmdW5jdGlvbjo6IGxjaG1vZChwYXRoLCBtb2RlKQogCiAgICBDaGFuZ2UgdGhlIG1vZGUgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICptb2RlKi4gSWYgcGF0aCBpcyBhIHN5bWxpbmssIHRoaXMKLSAgIGFmZmVjdHMgdGhlIHN5bWxpbmsgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4gU2VlIHRoZSBkb2NzIGZvciA6ZnVuYzpgY2htb2RgCi0gICBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4KKyAgIGFmZmVjdHMgdGhlIHN5bWxpbmsgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4gIFNlZSB0aGUgZG9jcyBmb3IgOmZ1bmM6YGNobW9kYAorICAgZm9yIHBvc3NpYmxlIHZhbHVlcyBvZiAqbW9kZSouICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgIGBgb3MuY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAogLi4gZnVuY3Rpb246OiBsY2hvd24ocGF0aCwgdWlkLCBnaWQpCiAKLSAgIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqdWlkKiBhbmQgKmdpZCouIFRoaXMKLSAgIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KKyAgIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqdWlkKiBhbmQgKmdpZCouICBUaGlzCisgICBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQKKyAgIHRvIGBgb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKLS4uIGZ1bmN0aW9uOjogbGluayhzb3VyY2UsIGxpbmtfbmFtZSkKKy4uIGZ1bmN0aW9uOjogbGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCi0gICBDcmVhdGUgYSBoYXJkIGxpbmsgcG9pbnRpbmcgdG8gKnNvdXJjZSogbmFtZWQgKmxpbmtfbmFtZSouCisgICBDcmVhdGUgYSBoYXJkIGxpbmsgcG9pbnRpbmcgdG8gKnNyYyogbmFtZWQgKmRzdCouCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyAqc3JjX2Rpcl9mZCogYW5kL29yICpkc3RfZGlyX2ZkKiB0bworICAgc3VwcGx5IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAsIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnNyY19kaXJfZmQqLCAqZHN0X2Rpcl9mZCosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCisKIAogLi4gZnVuY3Rpb246OiBsaXN0ZGlyKHBhdGg9Jy4nKQogCiAgICBSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBlbnRyaWVzIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkKLSAgICpwYXRoKiAoZGVmYXVsdDogYGAnLidgYCkuICBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsCisgICAqcGF0aCouICBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIsIGFuZCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsCiAgICBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LgogCi0gICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgd2l0aCBhIGJ5dGVzIG9yIHN0cmluZyBhcmd1bWVudCwgYW5kIHJldHVybnMKLSAgIGZpbGVuYW1lcyBvZiB0aGUgc2FtZSBkYXRhdHlwZS4KKyAgICpwYXRoKiBtYXkgYmUgZWl0aGVyIG9mIHR5cGUgYGBzdHJgYCBvciBvZiB0eXBlIGBgYnl0ZXNgYC4gIElmICpwYXRoKgorICAgaXMgb2YgdHlwZSBgYGJ5dGVzYGAsIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIG9mIHR5cGUgYGBieXRlc2BgOworICAgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXMsIHRoZXkgd2lsbCBiZSBvZiB0eXBlIGBgc3RyYGAuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yCisgICA8cGF0aF9mZD5gOyB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVG8gZW5jb2RlIGBgc3RyYGAgZmlsZW5hbWVzIHRvIGBgYnl0ZXNgYCwgdXNlIDpmdW5jOmB+b3MuZnNlbmNvZGVgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgKnBhdGgqIHBhcmFtZXRlciBiZWNhbWUgb3B0aW9uYWwuCiAKLS4uIGZ1bmN0aW9uOjogbHN0YXQocGF0aCkKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorCisKKy4uIGZ1bmN0aW9uOjogbHN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYW4gOmM6ZnVuYzpgbHN0YXRgIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLgogICAgU2ltaWxhciB0byA6ZnVuYzpgfm9zLnN0YXRgLCBidXQgZG9lcyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiAgT24KICAgIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHN5bWJvbGljIGxpbmtzLCB0aGlzIGlzIGFuIGFsaWFzIGZvcgotICAgOmZ1bmM6YH5vcy5zdGF0YC4KKyAgIDpmdW5jOmB+b3Muc3RhdGAuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0KHBhdGgsCisgICBkaXJfZmQ9ZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MgNi4wIChWaXN0YSkgc3ltYm9saWMgbGlua3MuCiAKLQotLi4gZnVuY3Rpb246OiBta2ZpZm8ocGF0aFssIG1vZGVdKQotCi0gICBDcmVhdGUgYSBGSUZPIChhIG5hbWVkIHBpcGUpIG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouICBUaGUKLSAgIGRlZmF1bHQgKm1vZGUqIGlzIGBgMG82NjZgYCAob2N0YWwpLiAgVGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUgaXMgZmlyc3QgbWFza2VkCi0gICBvdXQgZnJvbSB0aGUgbW9kZS4KLQotICAgRklGT3MgYXJlIHBpcGVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGxpa2UgcmVndWxhciBmaWxlcy4gIEZJRk9zIGV4aXN0IHVudGlsIHRoZXkKLSAgIGFyZSBkZWxldGVkIChmb3IgZXhhbXBsZSB3aXRoIDpmdW5jOmBvcy51bmxpbmtgKS4gR2VuZXJhbGx5LCBGSUZPcyBhcmUgdXNlZCBhcwotICAgcmVuZGV6dm91cyBiZXR3ZWVuICJjbGllbnQiIGFuZCAic2VydmVyIiB0eXBlIHByb2Nlc3NlczogdGhlIHNlcnZlciBvcGVucyB0aGUKLSAgIEZJRk8gZm9yIHJlYWRpbmcsIGFuZCB0aGUgY2xpZW50IG9wZW5zIGl0IGZvciB3cml0aW5nLiAgTm90ZSB0aGF0IDpmdW5jOmBta2ZpZm9gCi0gICBkb2Vzbid0IG9wZW4gdGhlIEZJRk8gLS0tIGl0IGp1c3QgY3JlYXRlcyB0aGUgcmVuZGV6dm91cyBwb2ludC4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKIAotLi4gZnVuY3Rpb246OiBta25vZChmaWxlbmFtZVssIG1vZGU9MG82MDBbLCBkZXZpY2U9MF1dKQorLi4gZnVuY3Rpb246OiBta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSkKIAotICAgQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpIG5hbWVkCi0gICAqZmlsZW5hbWUqLiAqbW9kZSogc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlIHR5cGUgb2Ygbm9kZQotICAgdG8gYmUgY3JlYXRlZCwgYmVpbmcgY29tYmluZWQgKGJpdHdpc2UgT1IpIHdpdGggb25lIG9mIGBgc3RhdC5TX0lGUkVHYGAsCi0gICBgYHN0YXQuU19JRkNIUmBgLCBgYHN0YXQuU19JRkJMS2BgLCBhbmQgYGBzdGF0LlNfSUZJRk9gYCAodGhvc2UgY29uc3RhbnRzIGFyZQotICAgYXZhaWxhYmxlIGluIDptb2Q6YHN0YXRgKS4gIEZvciBgYHN0YXQuU19JRkNIUmBgIGFuZCBgYHN0YXQuU19JRkJMS2BgLAotICAgKmRldmljZSogZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZwotICAgOmZ1bmM6YG9zLm1ha2VkZXZgKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuCisgICBDcmVhdGUgYSBkaXJlY3RvcnkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4KIAorICAgT24gc29tZSBzeXN0ZW1zLCAqbW9kZSogaXMgaWdub3JlZC4gIFdoZXJlIGl0IGlzIHVzZWQsIHRoZSBjdXJyZW50IHVtYXNrCisgICB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgSWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cywgOmV4YzpgT1NFcnJvcmAKKyAgIGlzIHJhaXNlZC4KIAotLi4gZnVuY3Rpb246OiBtYWpvcihkZXZpY2UpCi0KLSAgIEV4dHJhY3QgdGhlIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQotICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgotCi0KLS4uIGZ1bmN0aW9uOjogbWlub3IoZGV2aWNlKQotCi0gICBFeHRyYWN0IHRoZSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKLSAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KLQotCi0uLiBmdW5jdGlvbjo6IG1ha2VkZXYobWFqb3IsIG1pbm9yKQotCi0gICBDb21wb3NlIGEgcmF3IGRldmljZSBudW1iZXIgZnJvbSB0aGUgbWFqb3IgYW5kIG1pbm9yIGRldmljZSBudW1iZXJzLgotCi0KLS4uIGZ1bmN0aW9uOjogbWtkaXIocGF0aFssIG1vZGVdKQotCi0gICBDcmVhdGUgYSBkaXJlY3RvcnkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4gVGhlIGRlZmF1bHQgKm1vZGUqCi0gICBpcyBgYDBvNzc3YGAgKG9jdGFsKS4gIE9uIHNvbWUgc3lzdGVtcywgKm1vZGUqIGlzIGlnbm9yZWQuICBXaGVyZSBpdCBpcyB1c2VkLAotICAgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dC4gIElmIHRoZSBkaXJlY3RvcnkgYWxyZWFkeQotICAgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCiAKICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3Rvcmllczsgc2VlIHRoZQogICAgOm1vZDpgdGVtcGZpbGVgIG1vZHVsZSdzIDpmdW5jOmB0ZW1wZmlsZS5ta2R0ZW1wYCBmdW5jdGlvbi4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKwogCiAuLiBmdW5jdGlvbjo6IG1ha2VkaXJzKHBhdGgsIG1vZGU9MG83NzcsIGV4aXN0X29rPUZhbHNlKQogCkBAIC0xMjA1LDYgKzE1NzcsNjAgQEAKICAgICAgIFRoZSAqZXhpc3Rfb2sqIHBhcmFtZXRlci4KIAogCisuLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSkKKworICAgQ3JlYXRlIGEgRklGTyAoYSBuYW1lZCBwaXBlKSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLgorICAgVGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dCBmcm9tIHRoZSBtb2RlLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKKyAgIEZJRk9zIGFyZSBwaXBlcyB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBsaWtlIHJlZ3VsYXIgZmlsZXMuICBGSUZPcyBleGlzdCB1bnRpbCB0aGV5CisgICBhcmUgZGVsZXRlZCAoZm9yIGV4YW1wbGUgd2l0aCA6ZnVuYzpgb3MudW5saW5rYCkuIEdlbmVyYWxseSwgRklGT3MgYXJlIHVzZWQgYXMKKyAgIHJlbmRlenZvdXMgYmV0d2VlbiAiY2xpZW50IiBhbmQgInNlcnZlciIgdHlwZSBwcm9jZXNzZXM6IHRoZSBzZXJ2ZXIgb3BlbnMgdGhlCisgICBGSUZPIGZvciByZWFkaW5nLCBhbmQgdGhlIGNsaWVudCBvcGVucyBpdCBmb3Igd3JpdGluZy4gIE5vdGUgdGhhdCA6ZnVuYzpgbWtmaWZvYAorICAgZG9lc24ndCBvcGVuIHRoZSBGSUZPIC0tLSBpdCBqdXN0IGNyZWF0ZXMgdGhlIHJlbmRlenZvdXMgcG9pbnQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKKworLi4gZnVuY3Rpb246OiBta25vZChmaWxlbmFtZSwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKQorCisgICBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSkgbmFtZWQKKyAgICpmaWxlbmFtZSouICptb2RlKiBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGUgdHlwZSBvZiBub2RlCisgICB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2YgYGBzdGF0LlNfSUZSRUdgYCwKKyAgIGBgc3RhdC5TX0lGQ0hSYGAsIGBgc3RhdC5TX0lGQkxLYGAsIGFuZCBgYHN0YXQuU19JRklGT2BgICh0aG9zZSBjb25zdGFudHMgYXJlCisgICBhdmFpbGFibGUgaW4gOm1vZDpgc3RhdGApLiAgRm9yIGBgc3RhdC5TX0lGQ0hSYGAgYW5kIGBgc3RhdC5TX0lGQkxLYGAsCisgICAqZGV2aWNlKiBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nCisgICA6ZnVuYzpgb3MubWFrZWRldmApLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKworCisuLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKKworICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCisgICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCisKKworLi4gZnVuY3Rpb246OiBtaW5vcihkZXZpY2UpCisKKyAgIEV4dHJhY3QgdGhlIGRldmljZSBtaW5vciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQorICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgorCisKKy4uIGZ1bmN0aW9uOjogbWFrZWRldihtYWpvciwgbWlub3IpCisKKyAgIENvbXBvc2UgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuCisKKwogLi4gZnVuY3Rpb246OiBwYXRoY29uZihwYXRoLCBuYW1lKQogCiAgICBSZXR1cm4gc3lzdGVtIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gYSBuYW1lZCBmaWxlLiAqbmFtZSoKQEAgLTEyMjAsNiArMTY0Niw5IEBACiAgICBpbmNsdWRlZCBpbiBgYHBhdGhjb25mX25hbWVzYGAsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCB3aXRoCiAgICA6Y29uc3Q6YGVycm5vLkVJTlZBTGAgZm9yIHRoZSBlcnJvciBudW1iZXIuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgorICAgPHBhdGhfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKQEAgLTEyMjcsMzggKzE2NTYsNTMgQEAKIAogICAgRGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIGFjY2VwdGVkIGJ5IDpmdW5jOmBwYXRoY29uZmAgYW5kIDpmdW5jOmBmcGF0aGNvbmZgIHRvCiAgICB0aGUgaW50ZWdlciB2YWx1ZXMgZGVmaW5lZCBmb3IgdGhvc2UgbmFtZXMgYnkgdGhlIGhvc3Qgb3BlcmF0aW5nIHN5c3RlbS4gIFRoaXMKLSAgIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V0IG9mIG5hbWVzIGtub3duIHRvIHRoZSBzeXN0ZW0uIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNldCBvZiBuYW1lcyBrbm93biB0byB0aGUgc3lzdGVtLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAotLi4gZnVuY3Rpb246OiByZWFkbGluayhwYXRoKQorLi4gZnVuY3Rpb246OiByZWFkbGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGF0aCB0byB3aGljaCB0aGUgc3ltYm9saWMgbGluayBwb2ludHMuICBUaGUKLSAgIHJlc3VsdCBtYXkgYmUgZWl0aGVyIGFuIGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhuYW1lOyBpZiBpdCBpcyByZWxhdGl2ZSwgaXQgbWF5Ci0gICBiZSBjb252ZXJ0ZWQgdG8gYW4gYWJzb2x1dGUgcGF0aG5hbWUgdXNpbmcgYGBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHBhdGgpLAotICAgcmVzdWx0KWBgLgorICAgcmVzdWx0IG1heSBiZSBlaXRoZXIgYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aG5hbWU7IGlmIGl0IGlzIHJlbGF0aXZlLCBpdAorICAgbWF5IGJlIGNvbnZlcnRlZCB0byBhbiBhYnNvbHV0ZSBwYXRobmFtZSB1c2luZworICAgYGBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHBhdGgpLCByZXN1bHQpYGAuCiAKICAgIElmIHRoZSAqcGF0aCogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYWxzbyBiZSBhIHN0cmluZyBvYmplY3QsCiAgICBhbmQgdGhlIGNhbGwgbWF5IHJhaXNlIGFuIFVuaWNvZGVEZWNvZGVFcnJvci4gSWYgdGhlICpwYXRoKiBpcyBhIGJ5dGVzCiAgICBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MgNi4wIChWaXN0YSkgc3ltYm9saWMgbGlua3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCi0uLiBmdW5jdGlvbjo6IHJlbW92ZShwYXRoKQorCisuLiBmdW5jdGlvbjo6IHJlbW92ZShwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIElmICpwYXRoKiBpcyBhIGRpcmVjdG9yeSwgOmV4YzpgT1NFcnJvcmAgaXMKLSAgIHJhaXNlZDsgc2VlIDpmdW5jOmBybWRpcmAgYmVsb3cgdG8gcmVtb3ZlIGEgZGlyZWN0b3J5LiAgVGhpcyBpcyBpZGVudGljYWwgdG8KLSAgIHRoZSA6ZnVuYzpgdW5saW5rYCBmdW5jdGlvbiBkb2N1bWVudGVkIGJlbG93LiAgT24gV2luZG93cywgYXR0ZW1wdGluZyB0bwotICAgcmVtb3ZlIGEgZmlsZSB0aGF0IGlzIGluIHVzZSBjYXVzZXMgYW4gZXhjZXB0aW9uIHRvIGJlIHJhaXNlZDsgb24gVW5peCwgdGhlCi0gICBkaXJlY3RvcnkgZW50cnkgaXMgcmVtb3ZlZCBidXQgdGhlIHN0b3JhZ2UgYWxsb2NhdGVkIHRvIHRoZSBmaWxlIGlzIG5vdCBtYWRlCi0gICBhdmFpbGFibGUgdW50aWwgdGhlIG9yaWdpbmFsIGZpbGUgaXMgbm8gbG9uZ2VyIGluIHVzZS4KKyAgIHJhaXNlZC4gIFVzZSA6ZnVuYzpgcm1kaXJgIHRvIHJlbW92ZSBkaXJlY3Rvcmllcy4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKworICAgT24gV2luZG93cywgYXR0ZW1wdGluZyB0byByZW1vdmUgYSBmaWxlIHRoYXQgaXMgaW4gdXNlIGNhdXNlcyBhbiBleGNlcHRpb24gdG8KKyAgIGJlIHJhaXNlZDsgb24gVW5peCwgdGhlIGRpcmVjdG9yeSBlbnRyeSBpcyByZW1vdmVkIGJ1dCB0aGUgc3RvcmFnZSBhbGxvY2F0ZWQKKyAgIHRvIHRoZSBmaWxlIGlzIG5vdCBtYWRlIGF2YWlsYWJsZSB1bnRpbCB0aGUgb3JpZ2luYWwgZmlsZSBpcyBubyBsb25nZXIgaW4gdXNlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byA6ZnVuYzpgdW5saW5rYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZWRpcnMocGF0aCkKIApAQCAtMTI3NCw3ICsxNzE4LDcgQEAKICAgIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgogCiAKLS4uIGZ1bmN0aW9uOjogcmVuYW1lKHNyYywgZHN0KQorLi4gZnVuY3Rpb246OiByZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQogCiAgICBSZW5hbWUgdGhlIGZpbGUgb3IgZGlyZWN0b3J5ICpzcmMqIHRvICpkc3QqLiAgSWYgKmRzdCogaXMgYSBkaXJlY3RvcnksCiAgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gIE9uIFVuaXgsIGlmICpkc3QqIGV4aXN0cyBhbmQgaXMgYSBmaWxlLCBpdCB3aWxsCkBAIC0xMjgyLDExICsxNzI2LDE4IEBACiAgICBVbml4IGZsYXZvcnMgaWYgKnNyYyogYW5kICpkc3QqIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMuICBJZiBzdWNjZXNzZnVsLAogICAgdGhlIHJlbmFtaW5nIHdpbGwgYmUgYW4gYXRvbWljIG9wZXJhdGlvbiAodGhpcyBpcyBhIFBPU0lYIHJlcXVpcmVtZW50KS4gIE9uCiAgICBXaW5kb3dzLCBpZiAqZHN0KiBhbHJlYWR5IGV4aXN0cywgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQgZXZlbiBpZiBpdCBpcyBhCi0gICBmaWxlOyB0aGVyZSBtYXkgYmUgbm8gd2F5IHRvIGltcGxlbWVudCBhbiBhdG9taWMgcmVuYW1lIHdoZW4gKmRzdCogbmFtZXMgYW4KLSAgIGV4aXN0aW5nIGZpbGUuCisgICBmaWxlLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgKnNyY19kaXJfZmQqIGFuZC9vciAqZHN0X2Rpcl9mZCogdG8KKyAgIHN1cHBseSA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gLgorCisgICBJZiB5b3Ugd2FudCBjcm9zcy1wbGF0Zm9ybSBvdmVyd3JpdGluZyBvZiB0aGUgZGVzdGluYXRpb24sIHVzZSA6ZnVuYzpgcmVwbGFjZWAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKnNyY19kaXJfZmQqIGFuZCAqZHN0X2Rpcl9mZCogYXJndW1lbnRzLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVuYW1lcyhvbGQsIG5ldykKIApAQCAtMTMwMSwyMiArMTc1Miw0NiBAQAogICAgICAgcGVybWlzc2lvbnMgbmVlZGVkIHRvIHJlbW92ZSB0aGUgbGVhZiBkaXJlY3Rvcnkgb3IgZmlsZS4KIAogCi0uLiBmdW5jdGlvbjo6IHJtZGlyKHBhdGgpCisuLiBmdW5jdGlvbjo6IHJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQorCisgICBSZW5hbWUgdGhlIGZpbGUgb3IgZGlyZWN0b3J5ICpzcmMqIHRvICpkc3QqLiAgSWYgKmRzdCogaXMgYSBkaXJlY3RvcnksCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gIElmICpkc3QqIGV4aXN0cyBhbmQgaXMgYSBmaWxlLCBpdCB3aWxsCisgICBiZSByZXBsYWNlZCBzaWxlbnRseSBpZiB0aGUgdXNlciBoYXMgcGVybWlzc2lvbi4gIFRoZSBvcGVyYXRpb24gbWF5IGZhaWwKKyAgIGlmICpzcmMqIGFuZCAqZHN0KiBhcmUgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW1zLiAgSWYgc3VjY2Vzc2Z1bCwKKyAgIHRoZSByZW5hbWluZyB3aWxsIGJlIGFuIGF0b21pYyBvcGVyYXRpb24gKHRoaXMgaXMgYSBQT1NJWCByZXF1aXJlbWVudCkuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyAqc3JjX2Rpcl9mZCogYW5kL29yICpkc3RfZGlyX2ZkKiB0bworICAgc3VwcGx5IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUmVtb3ZlIChkZWxldGUpIHRoZSBkaXJlY3RvcnkgKnBhdGgqLiAgT25seSB3b3JrcyB3aGVuIHRoZSBkaXJlY3RvcnkgaXMKICAgIGVtcHR5LCBvdGhlcndpc2UsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4gIEluIG9yZGVyIHRvIHJlbW92ZSB3aG9sZQogICAgZGlyZWN0b3J5IHRyZWVzLCA6ZnVuYzpgc2h1dGlsLnJtdHJlZWAgY2FuIGJlIHVzZWQuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCi0uLiBmdW5jdGlvbjo6IHN0YXQocGF0aCkKKworLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhIDpjOmZ1bmM6YHN0YXRgIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLgotICAgKFRoaXMgZnVuY3Rpb24gZm9sbG93cyBzeW1saW5rczsgdG8gc3RhdCBhIHN5bWxpbmsgdXNlIDpmdW5jOmBsc3RhdGAuKQorICAgKnBhdGgqIG1heSBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIGEgc3RyaW5nIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgKFRoaXMgZnVuY3Rpb24gbm9ybWFsbHkgZm9sbG93cyBzeW1saW5rczsgdG8gc3RhdCBhIHN5bWxpbmsgYWRkIHRoZSBhcmd1bWVudAorICAgYGBmb2xsb3dfc3ltbGlua3M9RmFsc2VgYCwgb3IgdXNlIDpmdW5jOmBsc3RhdGAuKQogCi0gICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCB3aG9zZSBhdHRyaWJ1dGVzIGNvcnJlc3BvbmQgdG8gdGhlIG1lbWJlcnMKLSAgIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIG5hbWVseToKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdob3NlIGF0dHJpYnV0ZXMgY29ycmVzcG9uZCByb3VnaGx5CisgICB0byB0aGUgbWVtYmVycyBvZiB0aGUgOmM6dHlwZTpgc3RhdGAgc3RydWN0dXJlLCBuYW1lbHk6CiAKICAgICogOmF0dHI6YHN0X21vZGVgIC0gcHJvdGVjdGlvbiBiaXRzLAogICAgKiA6YXR0cjpgc3RfaW5vYCAtIGlub2RlIG51bWJlciwKQEAgLTEzMjUsMTAgKzE4MDAsMTggQEAKICAgICogOmF0dHI6YHN0X3VpZGAgLSB1c2VyIGlkIG9mIG93bmVyLAogICAgKiA6YXR0cjpgc3RfZ2lkYCAtIGdyb3VwIGlkIG9mIG93bmVyLAogICAgKiA6YXR0cjpgc3Rfc2l6ZWAgLSBzaXplIG9mIGZpbGUsIGluIGJ5dGVzLAotICAgKiA6YXR0cjpgc3RfYXRpbWVgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBhY2Nlc3MsCi0gICAqIDphdHRyOmBzdF9tdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGNvbnRlbnQgbW9kaWZpY2F0aW9uLAotICAgKiA6YXR0cjpgc3RfY3RpbWVgIC0gcGxhdGZvcm0gZGVwZW5kZW50OyB0aW1lIG9mIG1vc3QgcmVjZW50IG1ldGFkYXRhIGNoYW5nZSBvbgotICAgICBVbml4LCBvciB0aGUgdGltZSBvZiBjcmVhdGlvbiBvbiBXaW5kb3dzKQorICAgKiA6YXR0cjpgc3RfYXRpbWVgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBhY2Nlc3MgZXhwcmVzc2VkIGluIHNlY29uZHMsCisgICAqIDphdHRyOmBzdF9tdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGNvbnRlbnQgbW9kaWZpY2F0aW9uCisgICAgIGV4cHJlc3NlZCBpbiBzZWNvbmRzLAorICAgKiA6YXR0cjpgc3RfY3RpbWVgIC0gcGxhdGZvcm0gZGVwZW5kZW50OyB0aW1lIG9mIG1vc3QgcmVjZW50IG1ldGFkYXRhCisgICAgIGNoYW5nZSBvbiBVbml4LCBvciB0aGUgdGltZSBvZiBjcmVhdGlvbiBvbiBXaW5kb3dzLCBleHByZXNzZWQgaW4gc2Vjb25kcworICAgKiA6YXR0cjpgc3RfYXRpbWVfbnNgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBhY2Nlc3MKKyAgICAgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzIGFzIGFuIGludGVnZXIsCisgICAqIDphdHRyOmBzdF9tdGltZV9uc2AgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGNvbnRlbnQgbW9kaWZpY2F0aW9uCisgICAgIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcyBhcyBhbiBpbnRlZ2VyLAorICAgKiA6YXR0cjpgc3RfY3RpbWVfbnNgIC0gcGxhdGZvcm0gZGVwZW5kZW50OyB0aW1lIG9mIG1vc3QgcmVjZW50IG1ldGFkYXRhCisgICAgIGNoYW5nZSBvbiBVbml4LCBvciB0aGUgdGltZSBvZiBjcmVhdGlvbiBvbiBXaW5kb3dzLAorICAgICBleHByZXNzZWQgaW4gbmFub3NlY29uZHMgYXMgYW4gaW50ZWdlcgogCiAgICBPbiBzb21lIFVuaXggc3lzdGVtcyAoc3VjaCBhcyBMaW51eCksIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBtYXkgYWxzbyBiZQogICAgYXZhaWxhYmxlOgpAQCAtMTM1OCwxMyArMTg0MSwyNSBAQAogICAgICAgb3IgRkFUMzIgZmlsZSBzeXN0ZW1zLCA6YXR0cjpgc3RfbXRpbWVgIGhhcyAyLXNlY29uZCByZXNvbHV0aW9uLCBhbmQKICAgICAgIDphdHRyOmBzdF9hdGltZWAgaGFzIG9ubHkgMS1kYXkgcmVzb2x1dGlvbi4gIFNlZSB5b3VyIG9wZXJhdGluZyBzeXN0ZW0KICAgICAgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisgICAgICBTaW1pbGFybHksIGFsdGhvdWdoIDphdHRyOmBzdF9hdGltZV9uc2AsIDphdHRyOmBzdF9tdGltZV9uc2AsCisgICAgICBhbmQgOmF0dHI6YHN0X2N0aW1lX25zYCBhcmUgYWx3YXlzIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcywgbWFueQorICAgICAgc3lzdGVtcyBkbyBub3QgcHJvdmlkZSBuYW5vc2Vjb25kIHByZWNpc2lvbi4gIE9uIHN5c3RlbXMgdGhhdCBkbworICAgICAgcHJvdmlkZSBuYW5vc2Vjb25kIHByZWNpc2lvbiwgdGhlIGZsb2F0aW5nLXBvaW50IG9iamVjdCB1c2VkIHRvCisgICAgICBzdG9yZSA6YXR0cjpgc3RfYXRpbWVgLCA6YXR0cjpgc3RfbXRpbWVgLCBhbmQgOmF0dHI6YHN0X2N0aW1lYAorICAgICAgY2Fubm90IHByZXNlcnZlIGFsbCBvZiBpdCwgYW5kIGFzIHN1Y2ggd2lsbCBiZSBzbGlnaHRseSBpbmV4YWN0LgorICAgICAgSWYgeW91IG5lZWQgdGhlIGV4YWN0IHRpbWVzdGFtcHMgeW91IHNob3VsZCBhbHdheXMgdXNlCisgICAgICA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLCBhbmQgOmF0dHI6YHN0X2N0aW1lX25zYC4KIAotICAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSByZXR1cm4gdmFsdWUgb2YgOmZ1bmM6YH5vcy5zdGF0YCBpcyBhbHNvIGFjY2Vzc2libGUKLSAgIGFzIGEgdHVwbGUgb2YgYXQgbGVhc3QgMTAgaW50ZWdlcnMgZ2l2aW5nIHRoZSBtb3N0IGltcG9ydGFudCAoYW5kIHBvcnRhYmxlKQotICAgbWVtYmVycyBvZiB0aGUgOmM6dHlwZTpgc3RhdGAgc3RydWN0dXJlLCBpbiB0aGUgb3JkZXIgOmF0dHI6YHN0X21vZGVgLAotICAgOmF0dHI6YHN0X2lub2AsIDphdHRyOmBzdF9kZXZgLCA6YXR0cjpgc3RfbmxpbmtgLCA6YXR0cjpgc3RfdWlkYCwKLSAgIDphdHRyOmBzdF9naWRgLCA6YXR0cjpgc3Rfc2l6ZWAsIDphdHRyOmBzdF9hdGltZWAsIDphdHRyOmBzdF9tdGltZWAsCi0gICA6YXR0cjpgc3RfY3RpbWVgLiBNb3JlIGl0ZW1zIG1heSBiZSBhZGRlZCBhdCB0aGUgZW5kIGJ5IHNvbWUgaW1wbGVtZW50YXRpb25zLgorICAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSByZXR1cm4gdmFsdWUgb2YgOmZ1bmM6YH5vcy5zdGF0YCBpcyBhbHNvCisgICBhY2Nlc3NpYmxlIGFzIGEgdHVwbGUgb2YgYXQgbGVhc3QgMTAgaW50ZWdlcnMgZ2l2aW5nIHRoZSBtb3N0IGltcG9ydGFudCAoYW5kCisgICBwb3J0YWJsZSkgbWVtYmVycyBvZiB0aGUgOmM6dHlwZTpgc3RhdGAgc3RydWN0dXJlLCBpbiB0aGUgb3JkZXIKKyAgIDphdHRyOmBzdF9tb2RlYCwgOmF0dHI6YHN0X2lub2AsIDphdHRyOmBzdF9kZXZgLCA6YXR0cjpgc3RfbmxpbmtgLAorICAgOmF0dHI6YHN0X3VpZGAsIDphdHRyOmBzdF9naWRgLCA6YXR0cjpgc3Rfc2l6ZWAsIDphdHRyOmBzdF9hdGltZWAsCisgICA6YXR0cjpgc3RfbXRpbWVgLCA6YXR0cjpgc3RfY3RpbWVgLiBNb3JlIGl0ZW1zIG1heSBiZSBhZGRlZCBhdCB0aGUgZW5kIGJ5CisgICBzb21lIGltcGxlbWVudGF0aW9ucy4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IHN0YXQKIApAQCAtMTM4NSw2ICsxODgwLDEyIEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywKKyAgICAgIHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHBhdGgsCisgICAgICBhbmQgdGhlIDphdHRyOmBzdF9hdGltZV9uc2AsIDphdHRyOmBzdF9tdGltZV9uc2AsCisgICAgICBhbmQgOmF0dHI6YHN0X2N0aW1lX25zYCBtZW1iZXJzLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdF9mbG9hdF90aW1lcyhbbmV3dmFsdWVdKQogCkBAIC0xNDEwLDYgKzE5MTEsOCBAQAogICAgYXJlIHByb2Nlc3NlZCwgdGhpcyBhcHBsaWNhdGlvbiBzaG91bGQgdHVybiB0aGUgZmVhdHVyZSBvZmYgdW50aWwgdGhlIGxpYnJhcnkKICAgIGhhcyBiZWVuIGNvcnJlY3RlZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogc3RhdHZmcyhwYXRoKQogCkBAIC0xNDI1LDM0ICsxOTI4LDExOCBAQAogICAgcmVhZC1vbmx5LCBhbmQgaWYgOmNvbnN0OmBTVF9OT1NVSURgIGlzIHNldCwgdGhlIHNlbWFudGljcyBvZgogICAgc2V0dWlkL3NldGdpZCBiaXRzIGFyZSBkaXNhYmxlZCBvciBub3Qgc3VwcG9ydGVkLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSA6Y29uc3Q6YFNUX1JET05MWWAgYW5kIDpjb25zdDpgU1RfTk9TVUlEYCBjb25zdGFudHMgd2VyZSBhZGRlZC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KIAotLi4gZnVuY3Rpb246OiBzeW1saW5rKHNvdXJjZSwgbGlua19uYW1lKQotICAgICAgICAgICAgICBzeW1saW5rKHNvdXJjZSwgbGlua19uYW1lLCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlKQorCisuLiBkYXRhOjogc3VwcG9ydHNfZGlyX2ZkCisKKyAgIEEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuU2V0YCBvYmplY3QgaW5kaWNhdGluZyB3aGljaCBmdW5jdGlvbnMgaW4gdGhlCisgICA6bW9kOmBvc2AgbW9kdWxlIHBlcm1pdCB1c2Ugb2YgdGhlaXIgKmRpcl9mZCogcGFyYW1ldGVyLiAgRGlmZmVyZW50IHBsYXRmb3JtcworICAgcHJvdmlkZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSwgYW5kIGFuIG9wdGlvbiB0aGF0IG1pZ2h0IHdvcmsgb24gb25lIG1pZ2h0CisgICBiZSB1bnN1cHBvcnRlZCBvbiBhbm90aGVyLiAgRm9yIGNvbnNpc3RlbmN5J3Mgc2FrZXMsIGZ1bmN0aW9ucyB0aGF0IHN1cHBvcnQKKyAgICpkaXJfZmQqIGFsd2F5cyBhbGxvdyBzcGVjaWZ5aW5nIHRoZSBwYXJhbWV0ZXIsIGJ1dCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGFjdHVhbGx5IGF2YWlsYWJsZS4KKworICAgVG8gY2hlY2sgd2hldGhlciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gcGVybWl0cyB1c2Ugb2YgaXRzICpkaXJfZmQqCisgICBwYXJhbWV0ZXIsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uIGBgc3VwcG9ydHNfZGlyX2ZkYGAuICBBcyBhbiBleGFtcGxlLAorICAgdGhpcyBleHByZXNzaW9uIGRldGVybWluZXMgd2hldGhlciB0aGUgKmRpcl9mZCogcGFyYW1ldGVyIG9mIDpmdW5jOmBvcy5zdGF0YAorICAgaXMgbG9jYWxseSBhdmFpbGFibGU6OgorCisgICAgICAgb3Muc3RhdCBpbiBvcy5zdXBwb3J0c19kaXJfZmQKKworICAgQ3VycmVudGx5ICpkaXJfZmQqIHBhcmFtZXRlcnMgb25seSB3b3JrIG9uIFVuaXggcGxhdGZvcm1zOyBub25lIG9mIHRoZW0gd29yaworICAgb24gV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IHN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGUgKmVmZmVjdGl2ZV9pZHMqIHBhcmFtZXRlciBmb3IKKyAgIDpmdW5jOmBvcy5hY2Nlc3NgLiAgSWYgdGhlIGxvY2FsIHBsYXRmb3JtIHN1cHBvcnRzIGl0LCB0aGUgY29sbGVjdGlvbiB3aWxsCisgICBjb250YWluIDpmdW5jOmBvcy5hY2Nlc3NgLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBlbXB0eS4KKworICAgVG8gY2hlY2sgd2hldGhlciB5b3UgY2FuIHVzZSB0aGUgKmVmZmVjdGl2ZV9pZHMqIHBhcmFtZXRlciBmb3IKKyAgIDpmdW5jOmBvcy5hY2Nlc3NgLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbiBgYHN1cHBvcnRzX2Rpcl9mZGBgLCBsaWtlIHNvOjoKKworICAgICAgIG9zLmFjY2VzcyBpbiBvcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzCisKKyAgIEN1cnJlbnRseSAqZWZmZWN0aXZlX2lkcyogb25seSB3b3JrcyBvbiBVbml4IHBsYXRmb3JtczsgaXQgZG9lcyBub3Qgd29yayBvbgorICAgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IHN1cHBvcnRzX2ZkCisKKyAgIEEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuU2V0YCBvYmplY3QgaW5kaWNhdGluZyB3aGljaCBmdW5jdGlvbnMgaW4gdGhlCisgICA6bW9kOmBvc2AgbW9kdWxlIHBlcm1pdCBzcGVjaWZ5aW5nIHRoZWlyICpwYXRoKiBwYXJhbWV0ZXIgYXMgYW4gb3BlbiBmaWxlCisgICBkZXNjcmlwdG9yLiAgRGlmZmVyZW50IHBsYXRmb3JtcyBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4KKyAgIG9wdGlvbiB0aGF0IG1pZ2h0IHdvcmsgb24gb25lIG1pZ2h0IGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IKKyAgIGNvbnNpc3RlbmN5J3Mgc2FrZXMsIGZ1bmN0aW9ucyB0aGF0IHN1cHBvcnQgKmZkKiBhbHdheXMgYWxsb3cgc3BlY2lmeWluZworICAgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdAorICAgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlCisgICBkZXNjcmlwdG9yIGZvciBpdHMgKnBhdGgqIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24KKyAgIGBgc3VwcG9ydHNfZmRgYC4gQXMgYW4gZXhhbXBsZSwgdGhpcyBleHByZXNzaW9uIGRldGVybWluZXMgd2hldGhlcgorICAgOmZ1bmM6YG9zLmNoZGlyYCBhY2NlcHRzIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGNhbGxlZCBvbiB5b3VyIGxvY2FsCisgICBwbGF0Zm9ybTo6CisKKyAgICAgICBvcy5jaGRpciBpbiBvcy5zdXBwb3J0c19mZAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzCisKKyAgIEEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuU2V0YCBvYmplY3QgaW5kaWNhdGluZyB3aGljaCBmdW5jdGlvbnMgaW4gdGhlCisgICA6bW9kOmBvc2AgbW9kdWxlIHBlcm1pdCB1c2Ugb2YgdGhlaXIgKmZvbGxvd19zeW1saW5rcyogcGFyYW1ldGVyLiAgRGlmZmVyZW50CisgICBwbGF0Zm9ybXMgcHJvdmlkZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSwgYW5kIGFuIG9wdGlvbiB0aGF0IG1pZ2h0IHdvcmsgb24KKyAgIG9uZSBtaWdodCBiZSB1bnN1cHBvcnRlZCBvbiBhbm90aGVyLiAgRm9yIGNvbnNpc3RlbmN5J3Mgc2FrZXMsIGZ1bmN0aW9ucyB0aGF0CisgICBzdXBwb3J0ICpmb2xsb3dfc3ltbGlua3MqIGFsd2F5cyBhbGxvdyBzcGVjaWZ5aW5nIHRoZSBwYXJhbWV0ZXIsIGJ1dCB3aWxsCisgICByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGFjdHVhbGx5IGF2YWlsYWJsZS4KKworICAgVG8gY2hlY2sgd2hldGhlciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gcGVybWl0cyB1c2Ugb2YgaXRzICpmb2xsb3dfc3ltbGlua3MqCisgICBwYXJhbWV0ZXIsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uIGBgc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYGAuICBBcyBhbgorICAgZXhhbXBsZSwgdGhpcyBleHByZXNzaW9uIGRldGVybWluZXMgd2hldGhlciB0aGUgKmZvbGxvd19zeW1saW5rcyogcGFyYW1ldGVyCisgICBvZiA6ZnVuYzpgb3Muc3RhdGAgaXMgbG9jYWxseSBhdmFpbGFibGU6OgorCisgICAgICAgb3Muc3RhdCBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBzeW1saW5rKHNvdXJjZSwgbGlua19uYW1lLCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byAqc291cmNlKiBuYW1lZCAqbGlua19uYW1lKi4KIAotICAgT24gV2luZG93cywgc3ltbGluayB2ZXJzaW9uIHRha2VzIGFuIGFkZGl0aW9uYWwgb3B0aW9uYWwgcGFyYW1ldGVyLAotICAgKnRhcmdldF9pc19kaXJlY3RvcnkqLCB3aGljaCBkZWZhdWx0cyB0byBgYEZhbHNlYGAuCi0KLSAgIE9uIFdpbmRvd3MsIGEgc3ltbGluayByZXByZXNlbnRzIGEgZmlsZSBvciBhIGRpcmVjdG9yeSwgYW5kIGRvZXMgbm90IG1vcnBoIHRvCi0gICB0aGUgdGFyZ2V0IGR5bmFtaWNhbGx5LiAgSWYgKnRhcmdldF9pc19kaXJlY3RvcnkqIGlzIHNldCB0byBgYFRydWVgYCwgdGhlCi0gICBzeW1saW5rIHdpbGwgYmUgY3JlYXRlZCBhcyBhIGRpcmVjdG9yeSBzeW1saW5rLCBvdGhlcndpc2UgYXMgYSBmaWxlIHN5bWxpbmsKLSAgICh0aGUgZGVmYXVsdCkuCisgICBPbiBXaW5kb3dzLCBhIHN5bWxpbmsgcmVwcmVzZW50cyBlaXRoZXIgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LCBhbmQgZG9lcyBub3QKKyAgIG1vcnBoIHRvIHRoZSB0YXJnZXQgZHluYW1pY2FsbHkuICBJZiAqdGFyZ2V0X2lzX2RpcmVjdG9yeSogaXMgc2V0IHRvIGBgVHJ1ZWBgLAorICAgdGhlIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGFzIGEgZGlyZWN0b3J5IHN5bWxpbmssIG90aGVyd2lzZSBhcyBhIGZpbGUgc3ltbGluaworICAgKHRoZSBkZWZhdWx0KS4gIE9uIG5vbi1XaW5kb3cgcGxhdGZvcm1zLCAqdGFyZ2V0X2lzX2RpcmVjdG9yeSogaXMgaWdub3JlZC4KIAogICAgU3ltYm9saWMgbGluayBzdXBwb3J0IHdhcyBpbnRyb2R1Y2VkIGluIFdpbmRvd3MgNi4wIChWaXN0YSkuICA6ZnVuYzpgc3ltbGlua2AKICAgIHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBvbiBXaW5kb3dzIHZlcnNpb25zIGVhcmxpZXIgdGhhbiA2LjAuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKICAgIC4uIG5vdGU6OgogCi0gICAgICBUaGUgKlNlQ3JlYXRlU3ltYm9saWNMaW5rUHJpdmlsZWdlKiBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBzdWNjZXNzZnVsbHkKLSAgICAgIGNyZWF0ZSBzeW1saW5rcy4gVGhpcyBwcml2aWxlZ2UgaXMgbm90IHR5cGljYWxseSBncmFudGVkIHRvIHJlZ3VsYXIKLSAgICAgIHVzZXJzIGJ1dCBpcyBhdmFpbGFibGUgdG8gYWNjb3VudHMgd2hpY2ggY2FuIGVzY2FsYXRlIHByaXZpbGVnZXMgdG8gdGhlCi0gICAgICBhZG1pbmlzdHJhdG9yIGxldmVsLiBFaXRoZXIgb2J0YWluaW5nIHRoZSBwcml2aWxlZ2Ugb3IgcnVubmluZyB5b3VyCisgICAgICBPbiBXaW5kb3dzLCB0aGUgKlNlQ3JlYXRlU3ltYm9saWNMaW5rUHJpdmlsZWdlKiBpcyByZXF1aXJlZCBpbiBvcmRlciB0bworICAgICAgc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBzeW1saW5rcy4gVGhpcyBwcml2aWxlZ2UgaXMgbm90IHR5cGljYWxseSBncmFudGVkIHRvCisgICAgICByZWd1bGFyIHVzZXJzIGJ1dCBpcyBhdmFpbGFibGUgdG8gYWNjb3VudHMgd2hpY2ggY2FuIGVzY2FsYXRlIHByaXZpbGVnZXMKKyAgICAgIHRvIHRoZSBhZG1pbmlzdHJhdG9yIGxldmVsLiBFaXRoZXIgb2J0YWluaW5nIHRoZSBwcml2aWxlZ2Ugb3IgcnVubmluZyB5b3VyCiAgICAgICBhcHBsaWNhdGlvbiBhcyBhbiBhZG1pbmlzdHJhdG9yIGFyZSB3YXlzIHRvIHN1Y2Nlc3NmdWxseSBjcmVhdGUgc3ltbGlua3MuCiAKICAgICAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYW4gdW5wcml2aWxlZ2VkCkBAIC0xNDYzLDMxICsyMDUwLDg1IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYXJndW1lbnQsIGFuZCBub3cgYWxsb3cgKnRhcmdldF9pc19kaXJlY3RvcnkqCisgICAgICBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuCiAKLS4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgpCiAKLSAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzCi0gICA6ZnVuYzpgcmVtb3ZlYDsgdGhlIDpmdW5jOmB1bmxpbmtgIG5hbWUgaXMgaXRzIHRyYWRpdGlvbmFsIFVuaXgKLSAgIG5hbWUuCisuLiBmdW5jdGlvbjo6IHN5bmMoKQorCisgICBGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiB0cnVuY2F0ZShwYXRoLCBsZW5ndGgpCisKKyAgIFRydW5jYXRlIHRoZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gKnBhdGgqLCBzbyB0aGF0IGl0IGlzIGF0IG1vc3QKKyAgICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQorCisgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8KKyAgIDpmdW5jOmByZW1vdmVgOyB0aGUgYGB1bmxpbmtgYCBuYW1lIGlzIGl0cyB0cmFkaXRpb25hbCBVbml4CisgICBuYW1lLiAgUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgOmZ1bmM6YHJlbW92ZWAgZm9yCisgICBmdXJ0aGVyIGluZm9ybWF0aW9uLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAotLi4gZnVuY3Rpb246OiB1dGltZShwYXRoLCB0aW1lcykKIAotICAgU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqcGF0aCouIElmICp0aW1lcyoKLSAgIGlzIGBgTm9uZWBgLCB0aGVuIHRoZSBmaWxlJ3MgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyBhcmUgc2V0IHRvIHRoZSBjdXJyZW50Ci0gICB0aW1lLiAoVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHJ1bm5pbmcgdGhlIFVuaXggcHJvZ3JhbSA6cHJvZ3JhbTpgdG91Y2hgIG9uCi0gICB0aGUgcGF0aC4pICBPdGhlcndpc2UsICp0aW1lcyogbXVzdCBiZSBhIDItdHVwbGUgb2YgbnVtYmVycywgb2YgdGhlIGZvcm0KLSAgIGBgKGF0aW1lLCBtdGltZSlgYCB3aGljaCBpcyB1c2VkIHRvIHNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcywKLSAgIHJlc3BlY3RpdmVseS4gV2hldGhlciBhIGRpcmVjdG9yeSBjYW4gYmUgZ2l2ZW4gZm9yICpwYXRoKiBkZXBlbmRzIG9uIHdoZXRoZXIKLSAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGltcGxlbWVudHMgZGlyZWN0b3JpZXMgYXMgZmlsZXMgKGZvciBleGFtcGxlLCBXaW5kb3dzCi0gICBkb2VzIG5vdCkuICBOb3RlIHRoYXQgdGhlIGV4YWN0IHRpbWVzIHlvdSBzZXQgaGVyZSBtYXkgbm90IGJlIHJldHVybmVkIGJ5IGEKLSAgIHN1YnNlcXVlbnQgOmZ1bmM6YH5vcy5zdGF0YCBjYWxsLCBkZXBlbmRpbmcgb24gdGhlIHJlc29sdXRpb24gd2l0aCB3aGljaCB5b3VyCi0gICBvcGVyYXRpbmcgc3lzdGVtIHJlY29yZHMgYWNjZXNzIGFuZCBtb2RpZmljYXRpb24gdGltZXM7IHNlZSA6ZnVuYzpgfm9zLnN0YXRgLgorLi4gZnVuY3Rpb246OiB1dGltZShwYXRoLCB0aW1lcz1Ob25lLCAqLCBucz1Ob25lLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKnBhdGgqLgorCisgICA6ZnVuYzpgdXRpbWVgIHRha2VzIHR3byBvcHRpb25hbCBwYXJhbWV0ZXJzLCAqdGltZXMqIGFuZCAqbnMqLgorICAgVGhlc2Ugc3BlY2lmeSB0aGUgdGltZXMgc2V0IG9uICpwYXRoKiBhbmQgYXJlIHVzZWQgYXMgZm9sbG93czoKKworICAgLSBJZiAqbnMqIGlzIG5vdCBgYE5vbmVgYCwKKyAgICAgaXQgbXVzdCBiZSBhIDItdHVwbGUgb2YgdGhlIGZvcm0gYGAoYXRpbWVfbnMsIG10aW1lX25zKWBgCisgICAgIHdoZXJlIGVhY2ggbWVtYmVyIGlzIGFuIGludCBleHByZXNzaW5nIG5hbm9zZWNvbmRzLgorICAgLSBJZiAqdGltZXMqIGlzIG5vdCBgYE5vbmVgYCwKKyAgICAgaXQgbXVzdCBiZSBhIDItdHVwbGUgb2YgdGhlIGZvcm0gYGAoYXRpbWUsIG10aW1lKWBgCisgICAgIHdoZXJlIGVhY2ggbWVtYmVyIGlzIGFuIGludCBvciBmbG9hdCBleHByZXNzaW5nIHNlY29uZHMuCisgICAtIElmICp0aW1lcyogYW5kICpucyogYXJlIGJvdGggYGBOb25lYGAsCisgICAgIHRoaXMgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nIGBgbnM9KGF0aW1lX25zLCBtdGltZV9ucylgYAorICAgICB3aGVyZSBib3RoIHRpbWVzIGFyZSB0aGUgY3VycmVudCB0aW1lLgorICAgICAoVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHJ1bm5pbmcgdGhlIFVuaXggcHJvZ3JhbQorICAgICA6cHJvZ3JhbTpgdG91Y2hgIG9uICpwYXRoKi4pCisKKyAgIEl0IGlzIGFuIGVycm9yIHRvIHNwZWNpZnkgdHVwbGVzIGZvciBib3RoICp0aW1lcyogYW5kICpucyouCisKKyAgIFdoZXRoZXIgYSBkaXJlY3RvcnkgY2FuIGJlIGdpdmVuIGZvciAqcGF0aCoKKyAgIGRlcGVuZHMgb24gd2hldGhlciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbXBsZW1lbnRzIGRpcmVjdG9yaWVzIGFzIGZpbGVzCisgICAoZm9yIGV4YW1wbGUsIFdpbmRvd3MgZG9lcyBub3QpLiAgTm90ZSB0aGF0IHRoZSBleGFjdCB0aW1lcyB5b3Ugc2V0IGhlcmUgbWF5CisgICBub3QgYmUgcmV0dXJuZWQgYnkgYSBzdWJzZXF1ZW50IDpmdW5jOmB+b3Muc3RhdGAgY2FsbCwgZGVwZW5kaW5nIG9uIHRoZQorICAgcmVzb2x1dGlvbiB3aXRoIHdoaWNoIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSByZWNvcmRzIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uCisgICB0aW1lczsgc2VlIDpmdW5jOmB+b3Muc3RhdGAuICBUaGUgYmVzdCB3YXkgdG8gcHJlc2VydmUgZXhhY3QgdGltZXMgaXMgdG8KKyAgIHVzZSB0aGUgKnN0X2F0aW1lX25zKiBhbmQgKnN0X210aW1lX25zKiBmaWVsZHMgZnJvbSB0aGUgOmZ1bmM6YG9zLnN0YXRgCisgICByZXN1bHQgb2JqZWN0IHdpdGggdGhlICpucyogcGFyYW1ldGVyIHRvIGB1dGltZWAuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLAorICAgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90CisgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAorICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCisKIAogLi4gZnVuY3Rpb246OiB3YWxrKHRvcCwgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsIGZvbGxvd2xpbmtzPUZhbHNlKQogCkBAIC0xNTM0LDkgKzIxNzUsOSBAQAogCiAgICAuLiBub3RlOjoKIAotICAgICAgQmUgYXdhcmUgdGhhdCBzZXR0aW5nICpmb2xsb3dsaW5rcyogdG8gYGBUcnVlYGAgY2FuIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uIGlmIGEKLSAgICAgIGxpbmsgcG9pbnRzIHRvIGEgcGFyZW50IGRpcmVjdG9yeSBvZiBpdHNlbGYuIDpmdW5jOmB3YWxrYCBkb2VzIG5vdCBrZWVwIHRyYWNrIG9mCi0gICAgICB0aGUgZGlyZWN0b3JpZXMgaXQgdmlzaXRlZCBhbHJlYWR5LgorICAgICAgQmUgYXdhcmUgdGhhdCBzZXR0aW5nICpmb2xsb3dsaW5rcyogdG8gYGBUcnVlYGAgY2FuIGxlYWQgdG8gaW5maW5pdGUKKyAgICAgIHJlY3Vyc2lvbiBpZiBhIGxpbmsgcG9pbnRzIHRvIGEgcGFyZW50IGRpcmVjdG9yeSBvZiBpdHNlbGYuIDpmdW5jOmB3YWxrYAorICAgICAgZG9lcyBub3Qga2VlcCB0cmFjayBvZiB0aGUgZGlyZWN0b3JpZXMgaXQgdmlzaXRlZCBhbHJlYWR5LgogCiAgICAuLiBub3RlOjoKIApAQCAtMTU3Miw2ICsyMjEzLDEzNyBAQAogICAgICAgICAgICAgICBvcy5ybWRpcihvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCiAKIAorLi4gZnVuY3Rpb246OiBmd2Fsayh0b3A9Jy4nLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSkKKworICAgLi4gaW5kZXg6OgorICAgICAgc2luZ2xlOiBkaXJlY3Rvcnk7IHdhbGtpbmcKKyAgICAgIHNpbmdsZTogZGlyZWN0b3J5OyB0cmF2ZXJzYWwKKworICAgVGhpcyBiZWhhdmVzIGV4YWN0bHkgbGlrZSA6ZnVuYzpgd2Fsa2AsIGV4Y2VwdCB0aGF0IGl0IHlpZWxkcyBhIDQtdHVwbGUKKyAgIGBgKGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMsIGRpcmZkKWBgLCBhbmQgaXQgc3VwcG9ydHMgYGBkaXJfZmRgYC4KKworICAgKmRpcnBhdGgqLCAqZGlybmFtZXMqIGFuZCAqZmlsZW5hbWVzKiBhcmUgaWRlbnRpY2FsIHRvIDpmdW5jOmB3YWxrYCBvdXRwdXQsCisgICBhbmQgKmRpcmZkKiBpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gdGhlIGRpcmVjdG9yeSAqZGlycGF0aCouCisKKyAgIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHN1cHBvcnRzIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4gIE5vdGUgaG93ZXZlcgorICAgdGhhdCwgdW5saWtlIG90aGVyIGZ1bmN0aW9ucywgdGhlIDpmdW5jOmBmd2Fsa2AgZGVmYXVsdCB2YWx1ZSBmb3IKKyAgICpmb2xsb3dfc3ltbGlua3MqIGlzIGBgRmFsc2VgYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFNpbmNlIDpmdW5jOmBmd2Fsa2AgeWllbGRzIGZpbGUgZGVzY3JpcHRvcnMsIHRob3NlIGFyZSBvbmx5IHZhbGlkIHVudGlsCisgICAgICB0aGUgbmV4dCBpdGVyYXRpb24gc3RlcCwgc28geW91IHNob3VsZCBkdXBsaWNhdGUgdGhlbSAoZS5nLiB3aXRoCisgICAgICA6ZnVuYzpgZHVwYCkgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGxvbmdlci4KKworICAgVGhpcyBleGFtcGxlIGRpc3BsYXlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGFrZW4gYnkgbm9uLWRpcmVjdG9yeSBmaWxlcyBpbiBlYWNoCisgICBkaXJlY3RvcnkgdW5kZXIgdGhlIHN0YXJ0aW5nIGRpcmVjdG9yeSwgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBsb29rIHVuZGVyIGFueQorICAgQ1ZTIHN1YmRpcmVjdG9yeTo6CisKKyAgICAgIGltcG9ydCBvcworICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoJ3B5dGhvbi9MaWIvZW1haWwnKToKKyAgICAgICAgICBwcmludChyb290LCAiY29uc3VtZXMiLCBlbmQ9IiIpCisgICAgICAgICAgcHJpbnQoc3VtKFtvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQpLnN0X3NpemUgZm9yIG5hbWUgaW4gZmlsZXNdKSwKKyAgICAgICAgICAgICAgICBlbmQ9IiIpCisgICAgICAgICAgcHJpbnQoImJ5dGVzIGluIiwgbGVuKGZpbGVzKSwgIm5vbi1kaXJlY3RvcnkgZmlsZXMiKQorICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CisgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKKworICAgSW4gdGhlIG5leHQgZXhhbXBsZSwgd2Fsa2luZyB0aGUgdHJlZSBib3R0b20tdXAgaXMgZXNzZW50aWFsOgorICAgOmZ1bmM6YHJtZGlyYCBkb2Vzbid0IGFsbG93IGRlbGV0aW5nIGEgZGlyZWN0b3J5IGJlZm9yZSB0aGUgZGlyZWN0b3J5IGlzCisgICBlbXB0eTo6CisKKyAgICAgICMgRGVsZXRlIGV2ZXJ5dGhpbmcgcmVhY2hhYmxlIGZyb20gdGhlIGRpcmVjdG9yeSBuYW1lZCBpbiAidG9wIiwKKyAgICAgICMgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIHN5bWJvbGljIGxpbmtzLgorICAgICAgIyBDQVVUSU9OOiAgVGhpcyBpcyBkYW5nZXJvdXMhICBGb3IgZXhhbXBsZSwgaWYgdG9wID09ICcvJywgaXQKKyAgICAgICMgY291bGQgZGVsZXRlIGFsbCB5b3VyIGRpc2sgZmlsZXMuCisgICAgICBpbXBvcnQgb3MKKyAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKHRvcCwgdG9wZG93bj1GYWxzZSk6CisgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgYXZhaWxhYmxlIG9uIExpbnV4IG9ubHkuCisKKy4uIGZ1bmN0aW9uOjogZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogZm9yCisgICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZAorICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworCisuLiBmdW5jdGlvbjo6IGxpc3R4YXR0cihwYXRoPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMgb24gKnBhdGgqLiAgVGhlCisgICBhdHRyaWJ1dGVzIGluIHRoZSBsaXN0IGFyZSByZXByZXNlbnRlZCBhcyBzdHJpbmdzIGRlY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbQorICAgZW5jb2RpbmcuICBJZiAqcGF0aCogaXMgYGBOb25lYGAsIDpmdW5jOmBsaXN0eGF0dHJgIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudAorICAgZGlyZWN0b3J5LgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogcmVtb3ZleGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgUmVtb3ZlcyB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogZnJvbSAqcGF0aCouCisgICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAorICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworCisuLiBmdW5jdGlvbjo6IHNldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgdmFsdWUsIGZsYWdzPTAsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBTZXQgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIG9uICpwYXRoKiB0byAqdmFsdWUqLgorICAgKmF0dHJpYnV0ZSogbXVzdCBiZSBhIGJ5dGVzIG9yIHN0ciB3aXRoIG5vIGVtYmVkZGVkIE5VTHMuIElmIGl0IGlzIGEgc3RyLAorICAgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLiAgKmZsYWdzKiBtYXkgYmUKKyAgIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBvciA6ZGF0YTpgWEFUVFJfQ1JFQVRFYC4gSWYgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIGlzCisgICBnaXZlbiBhbmQgdGhlIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgYGBFRVhJU1RTYGAgd2lsbCBiZSByYWlzZWQuCisgICBJZiA6ZGF0YTpgWEFUVFJfQ1JFQVRFYCBpcyBnaXZlbiBhbmQgdGhlIGF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cywgdGhlCisgICBhdHRyaWJ1dGUgd2lsbCBub3QgYmUgY3JlYXRlZCBhbmQgYGBFTk9EQVRBYGAgd2lsbCBiZSByYWlzZWQuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBBIGJ1ZyBpbiBMaW51eCBrZXJuZWwgdmVyc2lvbnMgbGVzcyB0aGFuIDIuNi4zOSBjYXVzZWQgdGhlIGZsYWdzIGFyZ3VtZW50CisgICAgICB0byBiZSBpZ25vcmVkIG9uIHNvbWUgZmlsZXN5c3RlbXMuCisKKworLi4gZGF0YTo6IFhBVFRSX1NJWkVfTUFYCisKKyAgIFRoZSBtYXhpbXVtIHNpemUgdGhlIHZhbHVlIG9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBjYW4gYmUuIEN1cnJlbnRseSwgdGhpcworICAgaXMgNjQga2lsb2J5dGVzIG9uIExpbnV4LgorCisKKy4uIGRhdGE6OiBYQVRUUl9DUkVBVEUKKworICAgVGhpcyBpcyBhIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgZmxhZ3MgYXJndW1lbnQgaW4gOmZ1bmM6YHNldHhhdHRyYC4gSXQKKyAgIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIG11c3QgY3JlYXRlIGFuIGF0dHJpYnV0ZS4KKworCisuLiBkYXRhOjogWEFUVFJfUkVQTEFDRQorCisgICBUaGlzIGlzIGEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSBmbGFncyBhcmd1bWVudCBpbiA6ZnVuYzpgc2V0eGF0dHJgLiBJdAorICAgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gbXVzdCByZXBsYWNlIGFuIGV4aXN0aW5nIGF0dHJpYnV0ZS4KKworCiAuLiBfb3MtcHJvY2VzczoKIAogUHJvY2VzcyBNYW5hZ2VtZW50CkBAIC0xNjQ1LDggKzI0MTcsMTYgQEAKICAgIDpmdW5jOmBleGVjbHBgLCA6ZnVuYzpgZXhlY3ZgLCBhbmQgOmZ1bmM6YGV4ZWN2cGAgYWxsIGNhdXNlIHRoZSBuZXcgcHJvY2VzcyB0bwogICAgaW5oZXJpdCB0aGUgZW52aXJvbm1lbnQgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4KIAorICAgRm9yIDpmdW5jOmBleGVjdmVgIG9uIHNvbWUgcGxhdGZvcm1zLCAqcGF0aCogbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4KKyAgIGZpbGUgZGVzY3JpcHRvci4gIFRoaXMgZnVuY3Rpb25hbGl0eSBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtOworICAgeW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCBpdCBpcyBhdmFpbGFibGUgdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2ZkYC4KKyAgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCoKKyAgICAgIGZvciA6ZnVuYzpgZXhlY3ZlYC4KIAogLi4gZnVuY3Rpb246OiBfZXhpdChuKQogCkBAIC0xODM2LDYgKzI2MTYsOCBAQAogICAgd2lsbCBiZSBzZXQgdG8gKnNpZyouIFRoZSBXaW5kb3dzIHZlcnNpb24gb2YgOmZ1bmM6YGtpbGxgIGFkZGl0aW9uYWxseSB0YWtlcwogICAgcHJvY2VzcyBoYW5kbGVzIHRvIGJlIGtpbGxlZC4KIAorICAgU2VlIGFsc28gOmZ1bmM6YHNpZ25hbC5wdGhyZWFkX2tpbGxgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgICAgIFdpbmRvd3Mgc3VwcG9ydC4KIApAQCAtMjAyNiwxNCArMjgwOCwzMCBAQAogCiAuLiBmdW5jdGlvbjo6IHRpbWVzKCkKIAotICAgUmV0dXJuIGEgNS10dXBsZSBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluZGljYXRpbmcgYWNjdW11bGF0ZWQgKHByb2Nlc3NvcgotICAgb3Igb3RoZXIpIHRpbWVzLCBpbiBzZWNvbmRzLiAgVGhlIGl0ZW1zIGFyZTogdXNlciB0aW1lLCBzeXN0ZW0gdGltZSwKLSAgIGNoaWxkcmVuJ3MgdXNlciB0aW1lLCBjaGlsZHJlbidzIHN5c3RlbSB0aW1lLCBhbmQgZWxhcHNlZCByZWFsIHRpbWUgc2luY2UgYQotICAgZml4ZWQgcG9pbnQgaW4gdGhlIHBhc3QsIGluIHRoYXQgb3JkZXIuICBTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKLSAgIDptYW5wYWdlOmB0aW1lcygyKWAgb3IgdGhlIGNvcnJlc3BvbmRpbmcgV2luZG93cyBQbGF0Zm9ybSBBUEkgZG9jdW1lbnRhdGlvbi4KLSAgIE9uIFdpbmRvd3MsIG9ubHkgdGhlIGZpcnN0IHR3byBpdGVtcyBhcmUgZmlsbGVkLCB0aGUgb3RoZXJzIGFyZSB6ZXJvLgorICAgUmV0dXJucyB0aGUgY3VycmVudCBnbG9iYWwgcHJvY2VzcyB0aW1lcy4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggZml2ZSBhdHRyaWJ1dGVzOgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MKKyAgICogOmF0dHI6YHVzZXJgIC0gdXNlciB0aW1lCisgICAqIDphdHRyOmBzeXN0ZW1gIC0gc3lzdGVtIHRpbWUKKyAgICogOmF0dHI6YGNoaWxkcmVuX3VzZXJgIC0gdXNlciB0aW1lIG9mIGFsbCBjaGlsZCBwcm9jZXNzZXMKKyAgICogOmF0dHI6YGNoaWxkcmVuX3N5c3RlbWAgLSBzeXN0ZW0gdGltZSBvZiBhbGwgY2hpbGQgcHJvY2Vzc2VzCisgICAqIDphdHRyOmBlbGFwc2VkYCAtIGVsYXBzZWQgcmVhbCB0aW1lIHNpbmNlIGEgZml4ZWQgcG9pbnQgaW4gdGhlIHBhc3QKKworICAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGlzIG9iamVjdCBhbHNvIGJlaGF2ZXMgbGlrZSBhIGZpdmUtdHVwbGUKKyAgIGNvbnRhaW5pbmcgOmF0dHI6YHVzZXJgLCA6YXR0cjpgc3lzdGVtYCwgOmF0dHI6YGNoaWxkcmVuX3VzZXJgLAorICAgOmF0dHI6YGNoaWxkcmVuX3N5c3RlbWAsIGFuZCA6YXR0cjpgZWxhcHNlZGAgaW4gdGhhdCBvcmRlci4KKworICAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlCisgICA6bWFucGFnZTpgdGltZXMoMilgIG9yIHRoZSBjb3JyZXNwb25kaW5nIFdpbmRvd3MgUGxhdGZvcm0gQVBJIGRvY3VtZW50YXRpb24uCisgICBPbiBXaW5kb3dzLCBvbmx5IDphdHRyOmB1c2VyYCBhbmQgOmF0dHI6YHN5c3RlbWAgYXJlIGtub3duOyB0aGUgb3RoZXIKKyAgIGF0dHJpYnV0ZXMgYXJlIHplcm8uCisgICBPbiBPUy8yLCBvbmx5IDphdHRyOmBlbGFwc2VkYCBpcyBrbm93bjsgdGhlIG90aGVyIGF0dHJpYnV0ZXMgYXJlIHplcm8uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSBhIHR1cGxlIHRvIGEgdHVwbGUtbGlrZSBvYmplY3QKKyAgICAgIHdpdGggbmFtZWQgYXR0cmlidXRlcy4KIAogCiAuLiBmdW5jdGlvbjo6IHdhaXQoKQpAQCAtMjA0Niw2ICsyODQ0LDU4IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorLi4gZnVuY3Rpb246OiB3YWl0aWQoaWR0eXBlLCBpZCwgb3B0aW9ucykKKworICAgV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLgorICAgKmlkdHlwZSogY2FuIGJlIDpkYXRhOmBQX1BJRGAsIDpkYXRhOmBQX1BHSURgIG9yIDpkYXRhOmBQX0FMTGAuCisgICAqaWQqIHNwZWNpZmllcyB0aGUgcGlkIHRvIHdhaXQgb24uCisgICAqb3B0aW9ucyogaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgOmRhdGE6YFdFWElURURgLAorICAgOmRhdGE6YFdTVE9QUEVEYCBvciA6ZGF0YTpgV0NPTlRJTlVFRGAgYW5kIGFkZGl0aW9uYWxseSBtYXkgYmUgT1JlZCB3aXRoCisgICA6ZGF0YTpgV05PSEFOR2Agb3IgOmRhdGE6YFdOT1dBSVRgLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdAorICAgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgOmM6dHlwZTpgc2lnaW5mb190YCBzdHJ1Y3R1cmUsIG5hbWVseToKKyAgIDphdHRyOmBzaV9waWRgLCA6YXR0cjpgc2lfdWlkYCwgOmF0dHI6YHNpX3NpZ25vYCwgOmF0dHI6YHNpX3N0YXR1c2AsCisgICA6YXR0cjpgc2lfY29kZWAgb3IgYGBOb25lYGAgaWYgOmRhdGE6YFdOT0hBTkdgIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlIG5vCisgICBjaGlsZHJlbiBpbiBhIHdhaXRhYmxlIHN0YXRlLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogUF9QSUQKKyAgICAgICAgICBQX1BHSUQKKyAgICAgICAgICBQX0FMTAorCisgICBUaGVzZSBhcmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgKmlkdHlwZSogaW4gOmZ1bmM6YHdhaXRpZGAuIFRoZXkgYWZmZWN0CisgICBob3cgKmlkKiBpcyBpbnRlcnByZXRlZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFdFWElURUQKKyAgICAgICAgICBXU1RPUFBFRAorICAgICAgICAgIFdOT1dBSVQKKworICAgRmxhZ3MgdGhhdCBjYW4gYmUgdXNlZCBpbiAqb3B0aW9ucyogaW4gOmZ1bmM6YHdhaXRpZGAgdGhhdCBzcGVjaWZ5IHdoYXQKKyAgIGNoaWxkIHNpZ25hbCB0byB3YWl0IGZvci4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xEX0VYSVRFRAorICAgICAgICAgIENMRF9EVU1QRUQKKyAgICAgICAgICBDTERfVFJBUFBFRAorICAgICAgICAgIENMRF9DT05USU5VRUQKKworICAgVGhlc2UgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIDphdHRyOmBzaV9jb2RlYCBpbiB0aGUgcmVzdWx0IHJldHVybmVkIGJ5CisgICA6ZnVuYzpgd2FpdGlkYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBmdW5jdGlvbjo6IHdhaXRwaWQocGlkLCBvcHRpb25zKQogCkBAIC0yMTEwLDcgKzI5NjAsNyBAQAogICAgVGhpcyBvcHRpb24gY2F1c2VzIGNoaWxkIHByb2Nlc3NlcyB0byBiZSByZXBvcnRlZCBpZiB0aGV5IGhhdmUgYmVlbiBjb250aW51ZWQKICAgIGZyb20gYSBqb2IgY29udHJvbCBzdG9wIHNpbmNlIHRoZWlyIHN0YXR1cyB3YXMgbGFzdCByZXBvcnRlZC4KIAotICAgQXZhaWxhYmlsaXR5OiBTb21lIFVuaXggc3lzdGVtcy4KKyAgIEF2YWlsYWJpbGl0eTogc29tZSBVbml4IHN5c3RlbXMuCiAKIAogLi4gZGF0YTo6IFdVTlRSQUNFRApAQCAtMjE4Nyw2ICszMDM3LDEyOSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKK0ludGVyZmFjZSB0byB0aGUgc2NoZWR1bGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBmdW5jdGlvbnMgY29udHJvbCBob3cgYSBwcm9jZXNzIGlzIGFsbG9jYXRlZCBDUFUgdGltZSBieSB0aGUgb3BlcmF0aW5nCitzeXN0ZW0uIFRoZXkgYXJlIG9ubHkgYXZhaWxhYmxlIG9uIHNvbWUgVW5peCBwbGF0Zm9ybXMuIEZvciBtb3JlIGRldGFpbGVkCitpbmZvcm1hdGlvbiwgY29uc3VsdCB5b3VyIFVuaXggbWFucGFnZXMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgZm9sbG93aW5nIHNjaGVkdWxpbmcgcG9saWNpZXMgYXJlIGV4cG9zZWQgaWYgdGhleSBhcmUgYSBzdXBwb3J0ZWQgYnkgdGhlCitvcGVyYXRpbmcgc3lzdGVtLgorCisuLiBkYXRhOjogU0NIRURfT1RIRVIKKworICAgVGhlIGRlZmF1bHQgc2NoZWR1bGluZyBwb2xpY3kuCisKKy4uIGRhdGE6OiBTQ0hFRF9CQVRDSAorCisgICBTY2hlZHVsaW5nIHBvbGljeSBmb3IgQ1BVLWludGVuc2l2ZSBwcm9jZXNzZXMgdGhhdCB0cmllcyB0byBwcmVzZXJ2ZQorICAgaW50ZXJhY3Rpdml0eSBvbiB0aGUgcmVzdCBvZiB0aGUgY29tcHV0ZXIuCisKKy4uIGRhdGE6OiBTQ0hFRF9JRExFCisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBleHRyZW1lbHkgbG93IHByaW9yaXR5IGJhY2tncm91bmQgdGFza3MuCisKKy4uIGRhdGE6OiBTQ0hFRF9TUE9SQURJQworCisgICBTY2hlZHVsaW5nIHBvbGljeSBmb3Igc3BvcmFkaWMgc2VydmVyIHByb2dyYW1zLgorCisuLiBkYXRhOjogU0NIRURfRklGTworCisgICBBIEZpcnN0IEluIEZpcnN0IE91dCBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX1JSCisKKyAgIEEgcm91bmQtcm9iaW4gc2NoZWR1bGluZyBwb2xpY3kuCisKKy4uIGRhdGE6OiBTQ0hFRF9SRVNFVF9PTl9GT1JLCisKKyAgIFRoaXMgZmxhZyBjYW4gT1InZWQgd2l0aCBhbnkgb3RoZXIgc2NoZWR1bGluZyBwb2xpY3kuIFdoZW4gYSBwcm9jZXNzIHdpdGgKKyAgIHRoaXMgZmxhZyBzZXQgZm9ya3MsIGl0cyBjaGlsZCdzIHNjaGVkdWxpbmcgcG9saWN5IGFuZCBwcmlvcml0eSBhcmUgcmVzZXQgdG8KKyAgIHRoZSBkZWZhdWx0LgorCisKKy4uIGNsYXNzOjogc2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpCisKKyAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0dW5hYmxlIHNjaGVkdWxpbmcgcGFyYW1ldGVycyB1c2VkIGluCisgICA6ZnVuYzpgc2NoZWRfc2V0cGFyYW1gLCA6ZnVuYzpgc2NoZWRfc2V0c2NoZWR1bGVyYCwgYW5kCisgICA6ZnVuYzpgc2NoZWRfZ2V0cGFyYW1gLiBJdCBpcyBpbW11dGFibGUuCisKKyAgIEF0IHRoZSBtb21lbnQsIHRoZXJlIGlzIG9ubHkgb25lIHBvc3NpYmxlIHBhcmFtZXRlcjoKKworICAgLi4gYXR0cmlidXRlOjogc2NoZWRfcHJpb3JpdHkKKworICAgICAgVGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIGEgc2NoZWR1bGluZyBwb2xpY3kuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSkKKworICAgR2V0IHRoZSBtaW5pbXVtIHByaW9yaXR5IHZhbHVlIGZvciAqcG9saWN5Ki4gKnBvbGljeSogaXMgb25lIG9mIHRoZQorICAgc2NoZWR1bGluZyBwb2xpY3kgY29uc3RhbnRzIGFib3ZlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpCisKKyAgIEdldCB0aGUgbWF4aW11bSBwcmlvcml0eSB2YWx1ZSBmb3IgKnBvbGljeSouICpwb2xpY3kqIGlzIG9uZSBvZiB0aGUKKyAgIHNjaGVkdWxpbmcgcG9saWN5IGNvbnN0YW50cyBhYm92ZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pCisKKyAgIFNldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBICpwaWQqIG9mIDAgbWVhbnMKKyAgIHRoZSBjYWxsaW5nIHByb2Nlc3MuICpwb2xpY3kqIGlzIG9uZSBvZiB0aGUgc2NoZWR1bGluZyBwb2xpY3kgY29uc3RhbnRzCisgICBhYm92ZS4gKnBhcmFtKiBpcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0c2NoZWR1bGVyKHBpZCkKKworICAgUmV0dXJuIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMAorICAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gVGhlIHJlc3VsdCBpcyBvbmUgb2YgdGhlIHNjaGVkdWxpbmcgcG9saWN5CisgICBjb25zdGFudHMgYWJvdmUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKQorCisgICBTZXQgYSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBICpwaWQqIG9mIDAgbWVhbnMKKyAgIHRoZSBjYWxsaW5nIHByb2Nlc3MuICpwYXJhbSogaXMgYSA6Y2xhc3M6YHNjaGVkX3BhcmFtYCBpbnN0YW5jZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldHBhcmFtKHBpZCkKKworICAgUmV0dXJuIHRoZSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgYXMgYSA6Y2xhc3M6YHNjaGVkX3BhcmFtYCBpbnN0YW5jZSBmb3IgdGhlCisgICBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBICpwaWQqIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWQpCisKKyAgIFJldHVybiB0aGUgcm91bmQtcm9iaW4gcXVhbnR1bSBpbiBzZWNvbmRzIGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQQorICAgKnBpZCogb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfeWllbGQoKQorCisgICBWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9zZXRhZmZpbml0eShwaWQsIG1hc2spCisKKyAgIFJlc3RyaWN0IHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIChvciB0aGUgY3VycmVudCBwcm9jZXNzIGlmIHplcm8pIHRvIGEKKyAgIHNldCBvZiBDUFVzLiAgKm1hc2sqIGlzIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzIHJlcHJlc2VudGluZyB0aGUgc2V0IG9mCisgICBDUFVzIHRvIHdoaWNoIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXN0cmljdGVkLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0YWZmaW5pdHkocGlkKQorCisgICBSZXR1cm4gdGhlIHNldCBvZiBDUFVzIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIChvciB0aGUgY3VycmVudCBwcm9jZXNzCisgICBpZiB6ZXJvKSBpcyByZXN0cmljdGVkIHRvLgorCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50YCByZXR1cm5zIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUKKyAgICAgIHN5c3RlbS4KKworCiAuLiBfb3MtcGF0aDoKIAogTWlzY2VsbGFuZW91cyBTeXN0ZW0gSW5mb3JtYXRpb24KQEAgLTIyMTEsNyArMzE4NCw3IEBACiAgICBpbmNsdWRlZCBpbiBgYGNvbmZzdHJfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4CisgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAogLi4gZGF0YTo6IGNvbmZzdHJfbmFtZXMKQEAgLTIzMzMsNiArMzMwNiw5IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyByYW5kb20gYnl0ZXMgZnJvbSBhbiBPUy1zcGVjaWZpYyByYW5kb21uZXNzIHNvdXJjZS4gIFRoZQogICAgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgdW5wcmVkaWN0YWJsZSBlbm91Z2ggZm9yIGNyeXB0b2dyYXBoaWMgYXBwbGljYXRpb25zLAotICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLiAgT24gYSBVTklYLWxpa2UKKyAgIHRob3VnaCBpdHMgZXhhY3QgcXVhbGl0eSBkZXBlbmRzIG9uIHRoZSBPUyBpbXBsZW1lbnRhdGlvbi4gIE9uIGEgVW5peC1saWtlCiAgICBzeXN0ZW0gdGhpcyB3aWxsIHF1ZXJ5IC9kZXYvdXJhbmRvbSwgYW5kIG9uIFdpbmRvd3MgaXQgd2lsbCB1c2UgQ3J5cHRHZW5SYW5kb20uCiAgICBJZiBhIHJhbmRvbW5lc3Mgc291cmNlIGlzIG5vdCBmb3VuZCwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisKKyAgIEZvciBhbiBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCisgICBwcm92aWRlZCBieSB5b3VyIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QgYi9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKaW5kZXggZWQ4NDQxMy4uMzAwMjcwMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdApAQCAtMzgsNiArMzgsMTAgQEAKICAgIFRoaXMgcHJvYmFibHkgYWxsIHdhcnJhbnRzIGEgZm9vdG5vdGUgb3IgdHdvLCBidXQgSSBkb24ndCB1bmRlcnN0YW5kCiAgICB0aGluZ3Mgd2VsbCBlbm91Z2ggcmlnaHQgbm93IHRvIHdyaXRlIGl0ISAgIC0tR1BXCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIG5vdyByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aGVyZSA6ZXhjOmBJT0Vycm9yYAorICAgd2FzIHJhaXNlZC4KKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtNTYsNyArNjAsNyBAQAogICAgd2hhdCB3ZW50IHdyb25nLgogCiAgICAoSWYgOm1vZDpgb3NzYXVkaW9kZXZgIHJlY2VpdmVzIGFuIGVycm9yIGZyb20gYSBzeXN0ZW0gY2FsbCBzdWNoIGFzCi0gICA6YzpmdW5jOmBvcGVuYCwgOmM6ZnVuYzpgd3JpdGVgLCBvciA6YzpmdW5jOmBpb2N0bGAsIGl0IHJhaXNlcyA6ZXhjOmBJT0Vycm9yYC4KKyAgIDpjOmZ1bmM6YG9wZW5gLCA6YzpmdW5jOmB3cml0ZWAsIG9yIDpjOmZ1bmM6YGlvY3RsYCwgaXQgcmFpc2VzIDpleGM6YE9TRXJyb3JgLgogICAgRXJyb3JzIGRldGVjdGVkIGRpcmVjdGx5IGJ5IDptb2Q6YG9zc2F1ZGlvZGV2YCByZXN1bHQgaW4gOmV4YzpgT1NTQXVkaW9FcnJvcmAuKQogCiAgICAoRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgZXhjZXB0aW9uIGNsYXNzIGlzIGFsc28gYXZhaWxhYmxlIGFzCkBAIC0xNjksNyArMTczLDcgQEAKIGNvcnJlc3BvbmRlbmNlIGlzIG9idmlvdXM6IGZvciBleGFtcGxlLCA6bWV0aDpgc2V0Zm10YCBjb3JyZXNwb25kcyB0byB0aGUKIGBgU05EQ1RMX0RTUF9TRVRGTVRgYCBpb2N0bCwgYW5kIDptZXRoOmBzeW5jYCB0byBgYFNORENUTF9EU1BfU1lOQ2BgICh0aGlzIGNhbgogYmUgdXNlZnVsIHdoZW4gY29uc3VsdGluZyB0aGUgT1NTIGRvY3VtZW50YXRpb24pLiAgSWYgdGhlIHVuZGVybHlpbmcKLTpmdW5jOmBpb2N0bGAgZmFpbHMsIHRoZXkgYWxsIHJhaXNlIDpleGM6YElPRXJyb3JgLgorOmZ1bmM6YGlvY3RsYCBmYWlscywgdGhleSBhbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gbWV0aG9kOjogb3NzX2F1ZGlvX2RldmljZS5ub25ibG9jaygpCkBAIC0zNDUsNyArMzQ5LDcgQEAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2UuY2xvc2UoKQogCiAgICBUaGlzIG1ldGhvZCBjbG9zZXMgdGhlIG9wZW4gbWl4ZXIgZGV2aWNlIGZpbGUuICBBbnkgZnVydGhlciBhdHRlbXB0cyB0byB1c2UgdGhlCi0gICBtaXhlciBhZnRlciB0aGlzIGZpbGUgaXMgY2xvc2VkIHdpbGwgcmFpc2UgYW4gOmV4YzpgSU9FcnJvcmAuCisgICBtaXhlciBhZnRlciB0aGlzIGZpbGUgaXMgY2xvc2VkIHdpbGwgcmFpc2UgYW4gOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gbWV0aG9kOjogb3NzX21peGVyX2RldmljZS5maWxlbm8oKQpAQCAtNDA0LDcgKzQwOCw3IEBACiAgICByZXR1cm5lZCwgYnV0IGJvdGggdm9sdW1lcyBhcmUgdGhlIHNhbWUuCiAKICAgIFJhaXNlcyA6ZXhjOmBPU1NBdWRpb0Vycm9yYCBpZiBhbiBpbnZhbGlkIGNvbnRyb2wgd2FzIGlzIHNwZWNpZmllZCwgb3IKLSAgIDpleGM6YElPRXJyb3JgIGlmIGFuIHVuc3VwcG9ydGVkIGNvbnRyb2wgaXMgc3BlY2lmaWVkLgorICAgOmV4YzpgT1NFcnJvcmAgaWYgYW4gdW5zdXBwb3J0ZWQgY29udHJvbCBpcyBzcGVjaWZpZWQuCiAKIAogLi4gbWV0aG9kOjogb3NzX21peGVyX2RldmljZS5zZXQoY29udHJvbCwgKGxlZnQsIHJpZ2h0KSkKQEAgLTQyOCw3ICs0MzIsNyBAQAogLi4gbWV0aG9kOjogb3NzX21peGVyX2RldmljZS5zZXRfcmVjc3JjKGJpdG1hc2spCiAKICAgIENhbGwgdGhpcyBmdW5jdGlvbiB0byBzcGVjaWZ5IGEgcmVjb3JkaW5nIHNvdXJjZS4gIFJldHVybnMgYSBiaXRtYXNrIGluZGljYXRpbmcKLSAgIHRoZSBuZXcgcmVjb3JkaW5nIHNvdXJjZSAob3Igc291cmNlcykgaWYgc3VjY2Vzc2Z1bDsgcmFpc2VzIDpleGM6YElPRXJyb3JgIGlmIGFuCisgICB0aGUgbmV3IHJlY29yZGluZyBzb3VyY2UgKG9yIHNvdXJjZXMpIGlmIHN1Y2Nlc3NmdWw7IHJhaXNlcyA6ZXhjOmBPU0Vycm9yYCBpZiBhbgogICAgaW52YWxpZCBzb3VyY2Ugd2FzIHNwZWNpZmllZC4gIFRvIHNldCB0aGUgY3VycmVudCByZWNvcmRpbmcgc291cmNlIHRvIHRoZQogICAgbWljcm9waG9uZSBpbnB1dDo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BkYi5yc3QgYi9Eb2MvbGlicmFyeS9wZGIucnN0CmluZGV4IDFlOWRlNjMuLmY0ZTM3YWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BkYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGRiLnJzdApAQCAtMzgsNiArMzgsMTEgQEAKICAgID4gPHN0cmluZz4oMSk/KCkKICAgIChQZGIpCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUYWItY29tcGxldGlvbiB2aWEgdGhlIDptb2Q6YHJlYWRsaW5lYCBtb2R1bGUgaXMgYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQKKyAgIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbCBhbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMKKyAgIGFyZ3VtZW50cyBvZiB0aGUgYGBwcmludGBgIGNvbW1hbmQuCisKIDpmaWxlOmBwZGIucHlgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy4gIEZvcgogZXhhbXBsZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CmluZGV4IGUyNTBkY2YuLjE2OGVmNTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdApAQCAtMjg3LDYgKzI4NywyOSBAQAogCiAgICAgICBTZWUgOnJlZjpgcGlja2xlLXBlcnNpc3RlbnRgIGZvciBkZXRhaWxzIGFuZCBleGFtcGxlcyBvZiB1c2VzLgogCisgICAuLiBhdHRyaWJ1dGU6OiBkaXNwYXRjaF90YWJsZQorCisgICAgICBBIHBpY2tsZXIgb2JqZWN0J3MgZGlzcGF0Y2ggdGFibGUgaXMgYSByZWdpc3RyeSBvZiAqcmVkdWN0aW9uCisgICAgICBmdW5jdGlvbnMqIG9mIHRoZSBraW5kIHdoaWNoIGNhbiBiZSBkZWNsYXJlZCB1c2luZworICAgICAgOmZ1bmM6YGNvcHlyZWcucGlja2xlYC4gIEl0IGlzIGEgbWFwcGluZyB3aG9zZSBrZXlzIGFyZSBjbGFzc2VzCisgICAgICBhbmQgd2hvc2UgdmFsdWVzIGFyZSByZWR1Y3Rpb24gZnVuY3Rpb25zLiAgQSByZWR1Y3Rpb24gZnVuY3Rpb24KKyAgICAgIHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50IG9mIHRoZSBhc3NvY2lhdGVkIGNsYXNzIGFuZCBzaG91bGQKKyAgICAgIGNvbmZvcm0gdG8gdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGEgOm1ldGg6YH5vYmplY3QuX19yZWR1Y2VfX2AKKyAgICAgIG1ldGhvZC4KKworICAgICAgQnkgZGVmYXVsdCwgYSBwaWNrbGVyIG9iamVjdCB3aWxsIG5vdCBoYXZlIGEKKyAgICAgIDphdHRyOmBkaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlLCBhbmQgaXQgd2lsbCBpbnN0ZWFkIHVzZSB0aGUKKyAgICAgIGdsb2JhbCBkaXNwYXRjaCB0YWJsZSBtYW5hZ2VkIGJ5IHRoZSA6bW9kOmBjb3B5cmVnYCBtb2R1bGUuCisgICAgICBIb3dldmVyLCB0byBjdXN0b21pemUgdGhlIHBpY2tsaW5nIGZvciBhIHNwZWNpZmljIHBpY2tsZXIgb2JqZWN0CisgICAgICBvbmUgY2FuIHNldCB0aGUgOmF0dHI6YGRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUgdG8gYSBkaWN0LWxpa2UKKyAgICAgIG9iamVjdC4gIEFsdGVybmF0aXZlbHksIGlmIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBQaWNrbGVyYCBoYXMgYQorICAgICAgOmF0dHI6YGRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUgdGhlbiB0aGlzIHdpbGwgYmUgdXNlZCBhcyB0aGUKKyAgICAgIGRlZmF1bHQgZGlzcGF0Y2ggdGFibGUgZm9yIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzLgorCisgICAgICBTZWUgOnJlZjpgcGlja2xlLWRpc3BhdGNoYCBmb3IgdXNhZ2UgZXhhbXBsZXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBhdHRyaWJ1dGU6OiBmYXN0CiAKICAgICAgIERlcHJlY2F0ZWQuIEVuYWJsZSBmYXN0IG1vZGUgaWYgc2V0IHRvIGEgdHJ1ZSB2YWx1ZS4gIFRoZSBmYXN0IG1vZGUKQEAgLTU3OCw2ICs2MDEsNDQgQEAKIAogLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9kYnBpY2tsZS5weQogCisuLiBfcGlja2xlLWRpc3BhdGNoOgorCitEaXNwYXRjaCBUYWJsZXMKK15eXl5eXl5eXl5eXl5eXgorCitJZiBvbmUgd2FudHMgdG8gY3VzdG9taXplIHBpY2tsaW5nIG9mIHNvbWUgY2xhc3NlcyB3aXRob3V0IGRpc3R1cmJpbmcKK2FueSBvdGhlciBjb2RlIHdoaWNoIGRlcGVuZHMgb24gcGlja2xpbmcsIHRoZW4gb25lIGNhbiBjcmVhdGUgYQorcGlja2xlciB3aXRoIGEgcHJpdmF0ZSBkaXNwYXRjaCB0YWJsZS4KKworVGhlIGdsb2JhbCBkaXNwYXRjaCB0YWJsZSBtYW5hZ2VkIGJ5IHRoZSA6bW9kOmBjb3B5cmVnYCBtb2R1bGUgaXMKK2F2YWlsYWJsZSBhcyA6ZGF0YTpgY29weXJlZy5kaXNwYXRjaF90YWJsZWAuICBUaGVyZWZvcmUsIG9uZSBtYXkKK2Nob29zZSB0byB1c2UgYSBtb2RpZmllZCBjb3B5IG9mIDpkYXRhOmBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlYCBhcyBhCitwcml2YXRlIGRpc3BhdGNoIHRhYmxlLgorCitGb3IgZXhhbXBsZSA6OgorCisgICBmID0gaW8uQnl0ZXNJTygpCisgICBwID0gcGlja2xlLlBpY2tsZXIoZikKKyAgIHAuZGlzcGF0Y2hfdGFibGUgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorICAgcC5kaXNwYXRjaF90YWJsZVtTb21lQ2xhc3NdID0gcmVkdWNlX1NvbWVDbGFzcworCitjcmVhdGVzIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgcGlja2xlLlBpY2tsZXJgIHdpdGggYSBwcml2YXRlIGRpc3BhdGNoCit0YWJsZSB3aGljaCBoYW5kbGVzIHRoZSBgYFNvbWVDbGFzc2BgIGNsYXNzIHNwZWNpYWxseS4gIEFsdGVybmF0aXZlbHksCit0aGUgY29kZSA6OgorCisgICBjbGFzcyBNeVBpY2tsZXIocGlja2xlLlBpY2tsZXIpOgorICAgICAgIGRpc3BhdGNoX3RhYmxlID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgICAgICBkaXNwYXRjaF90YWJsZVtTb21lQ2xhc3NdID0gcmVkdWNlX1NvbWVDbGFzcworICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgcCA9IE15UGlja2xlcihmKQorCitkb2VzIHRoZSBzYW1lLCBidXQgYWxsIGluc3RhbmNlcyBvZiBgYE15UGlja2xlcmBgIHdpbGwgYnkgZGVmYXVsdAorc2hhcmUgdGhlIHNhbWUgZGlzcGF0Y2ggdGFibGUuICBUaGUgZXF1aXZhbGVudCBjb2RlIHVzaW5nIHRoZQorOm1vZDpgY29weXJlZ2AgbW9kdWxlIGlzIDo6CisKKyAgIGNvcHlyZWcucGlja2xlKFNvbWVDbGFzcywgcmVkdWNlX1NvbWVDbGFzcykKKyAgIGYgPSBpby5CeXRlc0lPKCkKKyAgIHAgPSBwaWNrbGUuUGlja2xlcihmKQogCiAuLiBfcGlja2xlLXN0YXRlOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CmluZGV4IDMxMThmZjIuLjIyZDQ0ZWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CkBAIC01NiwyMSArNTYsMzIgQEAKICAgIE5vdGUgdGhhdCA6Y2xhc3M6YEltcEltcG9ydGVyYCBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBiZWluZyB1c2VkIGJ5CiAgICBwbGFjZW1lbnQgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGVtdWxhdGlvbiBpcyBubyBsb25nZXIgbmVlZGVkLCBhcyB0aGUgc3RhbmRhcmQgaW1wb3J0IG1lY2hhbmlzbQorICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYAorCiAKIC4uIGNsYXNzOjogSW1wTG9hZGVyKGZ1bGxuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZXRjKQogCiAgICA6cGVwOmAzMDJgIExvYWRlciB0aGF0IHdyYXBzIFB5dGhvbidzICJjbGFzc2ljIiBpbXBvcnQgYWxnb3JpdGhtLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGVtdWxhdGlvbiBpcyBubyBsb25nZXIgbmVlZGVkLCBhcyB0aGUgc3RhbmRhcmQgaW1wb3J0IG1lY2hhbmlzbQorICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYAorCiAKIC4uIGZ1bmN0aW9uOjogZmluZF9sb2FkZXIoZnVsbG5hbWUpCiAKLSAgIEZpbmQgYSA6cGVwOmAzMDJgICJsb2FkZXIiIG9iamVjdCBmb3IgKmZ1bGxuYW1lKi4KKyAgIFJldHJpZXZlIGEgOnBlcDpgMzAyYCBtb2R1bGUgbG9hZGVyIGZvciB0aGUgZ2l2ZW4gKmZ1bGxuYW1lKi4KIAotICAgSWYgKmZ1bGxuYW1lKiBjb250YWlucyBkb3RzLCBwYXRoIG11c3QgYmUgdGhlIGNvbnRhaW5pbmcgcGFja2FnZSdzCi0gICBgYF9fcGF0aF9fYGAuICBSZXR1cm5zIGBgTm9uZWBgIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgotICAgVGhpcyBmdW5jdGlvbiB1c2VzIDpmdW5jOmBpdGVyX2ltcG9ydGVyc2AsIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUKLSAgIGxpbWl0YXRpb25zIHJlZ2FyZGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBzcGVjaWFsIGltcG9ydCBsb2NhdGlvbnMgc3VjaCBhcyB0aGUKLSAgIFdpbmRvd3MgcmVnaXN0cnkuCisgICBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgdGhhdAorICAgc2V0cyB0aGUgKnBhdGgqIGFyZ3VtZW50IGNvcnJlY3RseSB3aGVuIHNlYXJjaGluZyBmb3Igc3VibW9kdWxlcywgYW5kCisgICBhbHNvIGVuc3VyZXMgcGFyZW50IHBhY2thZ2VzIChpZiBhbnkpIGFyZSBpbXBvcnRlZCBiZWZvcmUgc2VhcmNoaW5nIGZvcgorICAgc3VibW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCiAKIAogLi4gZnVuY3Rpb246OiBnZXRfaW1wb3J0ZXIocGF0aF9pdGVtKQpAQCAtODAsMTMgKzkxLDEzIEBACiAgICBUaGUgcmV0dXJuZWQgaW1wb3J0ZXIgaXMgY2FjaGVkIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgaWYgaXQgd2FzCiAgICBuZXdseSBjcmVhdGVkIGJ5IGEgcGF0aCBob29rLgogCi0gICBJZiB0aGVyZSBpcyBubyBpbXBvcnRlciwgYSB3cmFwcGVyIGFyb3VuZCB0aGUgYmFzaWMgaW1wb3J0IG1hY2hpbmVyeSBpcwotICAgcmV0dXJuZWQuICBUaGlzIHdyYXBwZXIgaXMgbmV2ZXIgaW5zZXJ0ZWQgaW50byB0aGUgaW1wb3J0ZXIgY2FjaGUgKGBgTm9uZWBgCi0gICBpcyBpbnNlcnRlZCBpbnN0ZWFkKS4KLQogICAgVGhlIGNhY2hlIChvciBwYXJ0IG9mIGl0KSBjYW4gYmUgY2xlYXJlZCBtYW51YWxseSBpZiBhIHJlc2NhbiBvZgogICAgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpcyBuZWNlc3NhcnkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2xvYWRlcihtb2R1bGVfb3JfbmFtZSkKIApAQCAtMTAyLDQ2ICsxMTMsNTIgQEAKICAgIGxpbWl0YXRpb25zIHJlZ2FyZGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBzcGVjaWFsIGltcG9ydCBsb2NhdGlvbnMgc3VjaCBhcyB0aGUKICAgIFdpbmRvd3MgcmVnaXN0cnkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogaXRlcl9pbXBvcnRlcnMoZnVsbG5hbWU9JycpCiAKICAgIFlpZWxkIDpwZXA6YDMwMmAgaW1wb3J0ZXJzIGZvciB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUuCiAKLSAgIElmIGZ1bGxuYW1lIGNvbnRhaW5zIGEgJy4nLCB0aGUgaW1wb3J0ZXJzIHdpbGwgYmUgZm9yIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcKLSAgIGZ1bGxuYW1lLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGltcG9ydGVycyBmb3IgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLAotICAgOmRhdGE6YHN5cy5wYXRoYCwgYW5kIFB5dGhvbidzICJjbGFzc2ljIiBpbXBvcnQgbWFjaGluZXJ5LCBpbiB0aGF0IG9yZGVyLiAgSWYKLSAgIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlIGVmZmVjdAotICAgb2YgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KKyAgIElmIGZ1bGxuYW1lIGNvbnRhaW5zIGEgJy4nLCB0aGUgaW1wb3J0ZXJzIHdpbGwgYmUgZm9yIHRoZSBwYWNrYWdlCisgICBjb250YWluaW5nIGZ1bGxuYW1lLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbCByZWdpc3RlcmVkIHRvcCBsZXZlbAorICAgaW1wb3J0ZXJzIChpLmUuIHRob3NlIG9uIGJvdGggc3lzLm1ldGFfcGF0aCBhbmQgc3lzLnBhdGhfaG9va3MpLgogCi0gICBOb24tOnBlcDpgMzAyYCBtZWNoYW5pc21zIChlLmcuIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5KSB1c2VkIGJ5IHRoZSBzdGFuZGFyZAotICAgaW1wb3J0IG1hY2hpbmVyeSB0byBmaW5kIGZpbGVzIGluIGFsdGVybmF0aXZlIGxvY2F0aW9ucyBhcmUgcGFydGlhbGx5Ci0gICBzdXBwb3J0ZWQsIGJ1dCBhcmUgc2VhcmNoZWQgKmFmdGVyKiA6ZGF0YTpgc3lzLnBhdGhgLiAgTm9ybWFsbHksIHRoZXNlCi0gICBsb2NhdGlvbnMgYXJlIHNlYXJjaGVkICpiZWZvcmUqIDpkYXRhOmBzeXMucGF0aGAsIHByZXZlbnRpbmcgOmRhdGE6YHN5cy5wYXRoYAotICAgZW50cmllcyBmcm9tIHNoYWRvd2luZyB0aGVtLgorICAgSWYgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUKKyAgIGVmZmVjdCBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgogCi0gICBGb3IgdGhpcyB0byBjYXVzZSBhIHZpc2libGUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvdXIsIHRoZXJlIG11c3QgYmUgYSBtb2R1bGUKLSAgIG9yIHBhY2thZ2UgbmFtZSB0aGF0IGlzIGFjY2Vzc2libGUgdmlhIGJvdGggOmRhdGE6YHN5cy5wYXRoYCBhbmQgb25lIG9mIHRoZQotICAgbm9uLTpwZXA6YDMwMmAgZmlsZSBzeXN0ZW0gbWVjaGFuaXNtcy4gIEluIHRoaXMgY2FzZSwgdGhlIGVtdWxhdGlvbiB3aWxsIGZpbmQKLSAgIHRoZSBmb3JtZXIgdmVyc2lvbiwgd2hpbGUgdGhlIGJ1aWx0aW4gaW1wb3J0IG1lY2hhbmlzbSB3aWxsIGZpbmQgdGhlIGxhdHRlci4KKyAgIElmIG5vIG1vZHVsZSBuYW1lIGlzIHNwZWNpZmllZCwgYWxsIHRvcCBsZXZlbCBpbXBvcnRlcnMgYXJlIHByb2R1Y2VkLgogCi0gICBJdGVtcyBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIGNhbiBiZSBhZmZlY3RlZCBieSB0aGlzIGRpc2NyZXBhbmN5OgotICAgYGBpbXAuQ19FWFRFTlNJT05gYCwgYGBpbXAuUFlfU09VUkNFYGAsIGBgaW1wLlBZX0NPTVBJTEVEYGAsCi0gICBgYGltcC5QS0dfRElSRUNUT1JZYGAuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJykKIAotICAgWWllbGRzIGBgKG1vZHVsZV9sb2FkZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgorICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgogICAgcGF0aCBpcyBgYE5vbmVgYCwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIGBgc3lzLnBhdGhgYC4KIAogICAgKnBhdGgqIHNob3VsZCBiZSBlaXRoZXIgYGBOb25lYGAgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uCiAKICAgICpwcmVmaXgqIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUgb24gb3V0cHV0LgogCisgICAuLiBub3RlOjoKKyAgICAgIE9ubHkgd29ya3MgZm9yIGEgOnRlcm06YGZpbmRlcmAgd2hpY2ggZGVmaW5lcyBhbiBgYGl0ZXJfbW9kdWxlcygpYGAKKyAgICAgIG1ldGhvZC4gVGhpcyBpbnRlcmZhY2UgaXMgbm9uLXN0YW5kYXJkLCBzbyB0aGUgbW9kdWxlIGFsc28gcHJvdmlkZXMKKyAgICAgIGltcGxlbWVudGF0aW9ucyBmb3IgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXJgIGFuZAorICAgICAgOmNsYXNzOmB6aXBpbXBvcnQuemlwaW1wb3J0ZXJgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSkKIAotICAgWWllbGRzIGBgKG1vZHVsZV9sb2FkZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgorICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgogICAgKnBhdGgqLCBvciwgaWYgcGF0aCBpcyBgYE5vbmVgYCwgYWxsIGFjY2Vzc2libGUgbW9kdWxlcy4KIAogICAgKnBhdGgqIHNob3VsZCBiZSBlaXRoZXIgYGBOb25lYGAgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uCkBAIC0xNjYsNiArMTgzLDE2IEBACiAgICAgICAjIGxpc3QgYWxsIHN1Ym1vZHVsZXMgb2YgY3R5cGVzCiAgICAgICB3YWxrX3BhY2thZ2VzKGN0eXBlcy5fX3BhdGhfXywgY3R5cGVzLl9fbmFtZV9fICsgJy4nKQogCisgICAuLiBub3RlOjoKKyAgICAgIE9ubHkgd29ya3MgZm9yIGEgOnRlcm06YGZpbmRlcmAgd2hpY2ggZGVmaW5lcyBhbiBgYGl0ZXJfbW9kdWxlcygpYGAKKyAgICAgIG1ldGhvZC4gVGhpcyBpbnRlcmZhY2UgaXMgbm9uLXN0YW5kYXJkLCBzbyB0aGUgbW9kdWxlIGFsc28gcHJvdmlkZXMKKyAgICAgIGltcGxlbWVudGF0aW9ucyBmb3IgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXJgIGFuZAorICAgICAgOmNsYXNzOmB6aXBpbXBvcnQuemlwaW1wb3J0ZXJgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGdldF9kYXRhKHBhY2thZ2UsIHJlc291cmNlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKaW5kZXggMTU3YWMzYS4uYTZhOThmMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdApAQCAtMzAsOCArMzAsOCBAQAogICAgcmV0dXJuZWQgYXMgc3RyaW5ncy4KIAogICAgVmFsdWVzIHRoYXQgY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHJldHVybmVkIGFzIGdpdmVuIGJ5IHRoZSBwYXJhbWV0ZXIgcHJlc2V0cy4KLSAgIElmIGJpdHMgaXMgZ2l2ZW4gYXMgYGAnJ2BgLCB0aGUgOmM6ZnVuYzpgc2l6ZW9mKHBvaW50ZXIpYCAob3IKLSAgIDpjOmZ1bmM6YHNpemVvZihsb25nKWAgb24gUHl0aG9uIHZlcnNpb24gPCAxLjUuMikgaXMgdXNlZCBhcyBpbmRpY2F0b3IgZm9yIHRoZQorICAgSWYgYml0cyBpcyBnaXZlbiBhcyBgYCcnYGAsIHRoZSBgYHNpemVvZihwb2ludGVyKWBgIChvcgorICAgYGBzaXplb2YobG9uZylgYCBvbiBQeXRob24gdmVyc2lvbiA8IDEuNS4yKSBpcyB1c2VkIGFzIGluZGljYXRvciBmb3IgdGhlCiAgICBzdXBwb3J0ZWQgcG9pbnRlciBzaXplLgogCiAgICBUaGUgZnVuY3Rpb24gcmVsaWVzIG9uIHRoZSBzeXN0ZW0ncyA6ZmlsZTpgZmlsZWAgY29tbWFuZCB0byBkbyB0aGUgYWN0dWFsIHdvcmsuCkBAIC0xNTgsMTQgKzE1OCwyMCBAQAogCiAuLiBmdW5jdGlvbjo6IHVuYW1lKCkKIAotICAgRmFpcmx5IHBvcnRhYmxlIHVuYW1lIGludGVyZmFjZS4gUmV0dXJucyBhIHR1cGxlIG9mIHN0cmluZ3MgYGAoc3lzdGVtLCBub2RlLAotICAgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSwgcHJvY2Vzc29yKWBgIGlkZW50aWZ5aW5nIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLgorICAgRmFpcmx5IHBvcnRhYmxlIHVuYW1lIGludGVyZmFjZS4gUmV0dXJucyBhIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAKKyAgIGNvbnRhaW5pbmcgc2l4IGF0dHJpYnV0ZXM6IDphdHRyOmBzeXN0ZW1gLCA6YXR0cjpgbm9kZWAsIDphdHRyOmByZWxlYXNlYCwKKyAgIDphdHRyOmB2ZXJzaW9uYCwgOmF0dHI6YG1hY2hpbmVgLCBhbmQgOmF0dHI6YHByb2Nlc3NvcmAuCiAKLSAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIDpmdW5jOmBvcy51bmFtZWAgZnVuY3Rpb24gdGhpcyBhbHNvIHJldHVybnMgcG9zc2libGUKLSAgIHByb2Nlc3NvciBpbmZvcm1hdGlvbiBhcyBhZGRpdGlvbmFsIHR1cGxlIGVudHJ5LgorICAgTm90ZSB0aGF0IHRoaXMgYWRkcyBhIHNpeHRoIGF0dHJpYnV0ZSAoOmF0dHI6YHByb2Nlc3NvcmApIG5vdCBwcmVzZW50CisgICBpbiB0aGUgOmZ1bmM6YG9zLnVuYW1lYCByZXN1bHQuICBBbHNvLCB0aGUgYXR0cmlidXRlIG5hbWVzIGFyZSBkaWZmZXJlbnQKKyAgIGZvciB0aGUgZmlyc3QgdHdvIGF0dHJpYnV0ZXM7IDpmdW5jOmBvcy51bmFtZWAgbmFtZXMgdGhlbQorICAgOmF0dHI6YHN5c25hbWVgIGFuZCA6YXR0cjpgbm9kZW5hbWVgLgogCiAgICBFbnRyaWVzIHdoaWNoIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGFyZSBzZXQgdG8gYGAnJ2BgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVzdWx0IGNoYW5nZWQgZnJvbSBhIHR1cGxlIHRvIGEgbmFtZWR0dXBsZS4KKwogCiBKYXZhIFBsYXRmb3JtCiAtLS0tLS0tLS0tLS0tCkBAIC0yMTQsNiArMjIwLDEwIEBACiAgICBwcmVmZXJyaW5nIDpmdW5jOmB3aW4zMnBpcGUucG9wZW5gLiAgT24gV2luZG93cyBOVCwgOmZ1bmM6YHdpbjMycGlwZS5wb3BlbmAKICAgIHNob3VsZCB3b3JrOyBvbiBXaW5kb3dzIDl4IGl0IGhhbmdzIGR1ZSB0byBidWdzIGluIHRoZSBNUyBDIGxpYnJhcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgb2Jzb2xldGUuICBVc2UgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIG1vZHVsZS4gIENoZWNrCisgICAgICBlc3BlY2lhbGx5IHRoZSA6cmVmOmBzdWJwcm9jZXNzLXJlcGxhY2VtZW50c2Agc2VjdGlvbi4KKwogCiBNYWMgT1MgUGxhdGZvcm0KIC0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKaW5kZXggMWNkNGQyNi4uNTVjOWQ3MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CkBAIC00Myw2ICs0MywxMiBAQAogdXNlcyB0aGUgc3lzdGVtIGZ1bmN0aW9uIDpmdW5jOmBvcy51cmFuZG9tYCB0byBnZW5lcmF0ZSByYW5kb20gbnVtYmVycwogZnJvbSBzb3VyY2VzIHByb3ZpZGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLgogCisuLiB3YXJuaW5nOjoKKworICAgVGhlIGdlbmVyYXRvcnMgb2YgdGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlIHNob3VsZCBub3QgYmUgdXNlZCBmb3Igc2VjdXJpdHkKKyAgIHB1cnBvc2VzLiBVc2UgOmZ1bmM6YHNzbC5SQU5EX2J5dGVzYCBpZiB5b3UgcmVxdWlyZSBhIGNyeXB0b2dyYXBoaWNhbGx5CisgICBzZWN1cmUgcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCisKIAogQm9va2tlZXBpbmcgZnVuY3Rpb25zOgogCkBAIC0xNDUsNiArMTUxLDkgQEAKICAgIGFyZ3VtZW50LiAgVGhpcyBpcyBlc3BlY2lhbGx5IGZhc3QgYW5kIHNwYWNlIGVmZmljaWVudCBmb3Igc2FtcGxpbmcgZnJvbSBhIGxhcmdlCiAgICBwb3B1bGF0aW9uOiAgYGBzYW1wbGUocmFuZ2UoMTAwMDAwMDApLCA2MClgYC4KIAorICAgSWYgdGhlIHNhbXBsZSBzaXplIGlzIGxhcmdlciB0aGFuIHRoZSBwb3B1bGF0aW9uIHNpemUsIGEgOmV4YzpgVmFsdWVFcnJvcmAKKyAgIGlzIHJhaXNlZC4KKwogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZ2VuZXJhdGUgc3BlY2lmaWMgcmVhbC12YWx1ZWQgZGlzdHJpYnV0aW9ucy4gRnVuY3Rpb24KIHBhcmFtZXRlcnMgYXJlIG5hbWVkIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlcyBpbiB0aGUgZGlzdHJpYnV0aW9uJ3MKIGVxdWF0aW9uLCBhcyB1c2VkIGluIGNvbW1vbiBtYXRoZW1hdGljYWwgcHJhY3RpY2U7IG1vc3Qgb2YgdGhlc2UgZXF1YXRpb25zIGNhbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmUucnN0IGIvRG9jL2xpYnJhcnkvcmUucnN0CmluZGV4IDI2ZjJhMzguLmIwY2I4NzAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZS5yc3QKQEAgLTQxNCwxNyArNDE0LDI0IEBACiBhY2NlcHRlZCBieSB0aGUgcmVndWxhciBleHByZXNzaW9uIHBhcnNlcjo6CiAKICAgIFxhICAgICAgXGIgICAgICBcZiAgICAgIFxuCi0gICBcciAgICAgIFx0ICAgICAgXHYgICAgICBceAotICAgXFwKKyAgIFxyICAgICAgXHQgICAgICBcdSAgICAgIFxVCisgICBcdiAgICAgIFx4ICAgICAgXFwKIAogKE5vdGUgdGhhdCBgYFxiYGAgaXMgdXNlZCB0byByZXByZXNlbnQgd29yZCBib3VuZGFyaWVzLCBhbmQgbWVhbnMgImJhY2tzcGFjZSIKIG9ubHkgaW5zaWRlIGNoYXJhY3RlciBjbGFzc2VzLikKIAorYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG9ubHkgcmVjb2duaXplZCBpbiBVbmljb2RlCitwYXR0ZXJucy4gIEluIGJ5dGVzIHBhdHRlcm5zIHRoZXkgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS4KKwogT2N0YWwgZXNjYXBlcyBhcmUgaW5jbHVkZWQgaW4gYSBsaW1pdGVkIGZvcm0uICBJZiB0aGUgZmlyc3QgZGlnaXQgaXMgYSAwLCBvciBpZgogdGhlcmUgYXJlIHRocmVlIG9jdGFsIGRpZ2l0cywgaXQgaXMgY29uc2lkZXJlZCBhbiBvY3RhbCBlc2NhcGUuIE90aGVyd2lzZSwgaXQgaXMKIGEgZ3JvdXAgcmVmZXJlbmNlLiAgQXMgZm9yIHN0cmluZyBsaXRlcmFscywgb2N0YWwgZXNjYXBlcyBhcmUgYWx3YXlzIGF0IG1vc3QKIHRocmVlIGRpZ2l0cyBpbiBsZW5ndGguCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGVzY2FwZSBzZXF1ZW5jZXMgaGF2ZSBiZWVuIGFkZGVkLgorCisKIAogLi4gX2NvbnRlbnRzLW9mLW1vZHVsZS1yZToKIApAQCAtNjg0LDkgKzY5MSwxMiBAQAogCiAuLiBmdW5jdGlvbjo6IGVzY2FwZShzdHJpbmcpCiAKLSAgIFJldHVybiAqc3RyaW5nKiB3aXRoIGFsbCBub24tYWxwaGFudW1lcmljcyBiYWNrc2xhc2hlZDsgdGhpcyBpcyB1c2VmdWwgaWYgeW91Ci0gICB3YW50IHRvIG1hdGNoIGFuIGFyYml0cmFyeSBsaXRlcmFsIHN0cmluZyB0aGF0IG1heSBoYXZlIHJlZ3VsYXIgZXhwcmVzc2lvbgotICAgbWV0YWNoYXJhY3RlcnMgaW4gaXQuCisgICBFc2NhcGUgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHBhdHRlcm4gZXhjZXB0IEFTQ0lJIGxldHRlcnMsIG51bWJlcnMgYW5kIGBgJ18nYGAuCisgICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBtYXRjaCBhbiBhcmJpdHJhcnkgbGl0ZXJhbCBzdHJpbmcgdGhhdCBtYXkKKyAgIGhhdmUgcmVndWxhciBleHByZXNzaW9uIG1ldGFjaGFyYWN0ZXJzIGluIGl0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIGBgJ18nYGAgY2hhcmFjdGVyIGlzIG5vIGxvbmdlciBlc2NhcGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogcHVyZ2UoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0IGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CmluZGV4IGFiNTUxOTcuLjExMzQ2MTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKQEAgLTE5OSw3ICsxOTksNyBAQAogICAgaGlzdGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+IiksICIucHloaXN0IikKICAgIHRyeToKICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoaXN0ZmlsZSkKLSAgIGV4Y2VwdCBJT0Vycm9yOgorICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgIHBhc3MKICAgIGltcG9ydCBhdGV4aXQKICAgIGF0ZXhpdC5yZWdpc3RlcihyZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUsIGhpc3RmaWxlKQpAQCAtMjI0LDcgKzIyNCw3IEBACiAgICAgICAgICAgIGlmIGhhc2F0dHIocmVhZGxpbmUsICJyZWFkX2hpc3RvcnlfZmlsZSIpOgogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RmaWxlKQotICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgYXRleGl0LnJlZ2lzdGVyKHNlbGYuc2F2ZV9oaXN0b3J5LCBoaXN0ZmlsZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0IGIvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0CmluZGV4IGMxNmIwMTMuLjAzYTdjYjUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QKQEAgLTE0LDEzICsxNCwxNSBAQAogU3ltYm9saWMgY29uc3RhbnRzIGFyZSB1c2VkIHRvIHNwZWNpZnkgcGFydGljdWxhciBzeXN0ZW0gcmVzb3VyY2VzIGFuZCB0bwogcmVxdWVzdCB1c2FnZSBpbmZvcm1hdGlvbiBhYm91dCBlaXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBvciBpdHMgY2hpbGRyZW4uCiAKLUEgc2luZ2xlIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGZvciBlcnJvcnM6CitBbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgb24gc3lzY2FsbCBmYWlsdXJlLgogCiAKIC4uIGV4Y2VwdGlvbjo6IGVycm9yCiAKLSAgIFRoZSBmdW5jdGlvbnMgZGVzY3JpYmVkIGJlbG93IG1heSByYWlzZSB0aGlzIGVycm9yIGlmIHRoZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsCi0gICBmYWlsdXJlcyB1bmV4cGVjdGVkbHkuCisgICBBIGRlcHJlY2F0ZWQgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBGb2xsb3dpbmcgOnBlcDpgMzE1MWAsIHRoaXMgY2xhc3Mgd2FzIG1hZGUgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogUmVzb3VyY2UgTGltaXRzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zY2hlZC5yc3QgYi9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKaW5kZXggMDAwZGJhMC4uY2I1ZmU0ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2NoZWQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NjaGVkLnJzdApAQCAtMTQsNyArMTQsNyBAQAogVGhlIDptb2Q6YHNjaGVkYCBtb2R1bGUgZGVmaW5lcyBhIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgYSBnZW5lcmFsIHB1cnBvc2UgZXZlbnQKIHNjaGVkdWxlcjoKIAotLi4gY2xhc3M6OiBzY2hlZHVsZXIodGltZWZ1bmMsIGRlbGF5ZnVuYykKKy4uIGNsYXNzOjogc2NoZWR1bGVyKHRpbWVmdW5jPXRpbWUudGltZSwgZGVsYXlmdW5jPXRpbWUuc2xlZXApCiAKICAgIFRoZSA6Y2xhc3M6YHNjaGVkdWxlcmAgY2xhc3MgZGVmaW5lcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHRvIHNjaGVkdWxpbmcgZXZlbnRzLgogICAgSXQgbmVlZHMgdHdvIGZ1bmN0aW9ucyB0byBhY3R1YWxseSBkZWFsIHdpdGggdGhlICJvdXRzaWRlIHdvcmxkIiAtLS0gKnRpbWVmdW5jKgpAQCAtMjUsNTIgKzI1LDM1IEBACiAgICBldmVudCBpcyBydW4gdG8gYWxsb3cgb3RoZXIgdGhyZWFkcyBhbiBvcHBvcnR1bml0eSB0byBydW4gaW4gbXVsdGktdGhyZWFkZWQKICAgIGFwcGxpY2F0aW9ucy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lZnVuYyogYW5kICpkZWxheWZ1bmMqIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmNsYXNzOmBzY2hlZHVsZXJgIGNsYXNzIGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZAorICAgICAgZW52aXJvbm1lbnRzLgorCiBFeGFtcGxlOjoKIAogICAgPj4+IGltcG9ydCBzY2hlZCwgdGltZQogICAgPj4+IHMgPSBzY2hlZC5zY2hlZHVsZXIodGltZS50aW1lLCB0aW1lLnNsZWVwKQotICAgPj4+IGRlZiBwcmludF90aW1lKCk6IHByaW50KCJGcm9tIHByaW50X3RpbWUiLCB0aW1lLnRpbWUoKSkKKyAgID4+PiBkZWYgcHJpbnRfdGltZShhPSdkZWZhdWx0Jyk6CisgICAuLi4gICAgIHByaW50KCJGcm9tIHByaW50X3RpbWUiLCB0aW1lLnRpbWUoKSwgYSkKICAgIC4uLgogICAgPj4+IGRlZiBwcmludF9zb21lX3RpbWVzKCk6CiAgICAuLi4gICAgIHByaW50KHRpbWUudGltZSgpKQotICAgLi4uICAgICBzLmVudGVyKDUsIDEsIHByaW50X3RpbWUsICgpKQotICAgLi4uICAgICBzLmVudGVyKDEwLCAxLCBwcmludF90aW1lLCAoKSkKKyAgIC4uLiAgICAgcy5lbnRlcigxMCwgMSwgcHJpbnRfdGltZSkKKyAgIC4uLiAgICAgcy5lbnRlcig1LCAyLCBwcmludF90aW1lLCBhcmd1bWVudD0oJ3Bvc2l0aW9uYWwnLCkpCisgICAuLi4gICAgIHMuZW50ZXIoNSwgMSwgcHJpbnRfdGltZSwga3dhcmdzPXsnYSc6ICdrZXl3b3JkJ30pCiAgICAuLi4gICAgIHMucnVuKCkKICAgIC4uLiAgICAgcHJpbnQodGltZS50aW1lKCkpCiAgICAuLi4KICAgID4+PiBwcmludF9zb21lX3RpbWVzKCkKICAgIDkzMDM0MzY5MC4yNTcKLSAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM2OTUuMjc0Ci0gICBGcm9tIHByaW50X3RpbWUgOTMwMzQzNzAwLjI3MworICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzY5NS4yNzQgcG9zaXRpb25hbAorICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzY5NS4yNzUga2V5d29yZAorICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzcwMC4yNzMgZGVmYXVsdAogICAgOTMwMzQzNzAwLjI3NgogCi1JbiBtdWx0aS10aHJlYWRlZCBlbnZpcm9ubWVudHMsIHRoZSA6Y2xhc3M6YHNjaGVkdWxlcmAgY2xhc3MgaGFzIGxpbWl0YXRpb25zCi13aXRoIHJlc3BlY3QgdG8gdGhyZWFkLXNhZmV0eSwgaW5hYmlsaXR5IHRvIGluc2VydCBhIG5ldyB0YXNrIGJlZm9yZQotdGhlIG9uZSBjdXJyZW50bHkgcGVuZGluZyBpbiBhIHJ1bm5pbmcgc2NoZWR1bGVyLCBhbmQgaG9sZGluZyB1cCB0aGUgbWFpbgotdGhyZWFkIHVudGlsIHRoZSBldmVudCBxdWV1ZSBpcyBlbXB0eS4gIEluc3RlYWQsIHRoZSBwcmVmZXJyZWQgYXBwcm9hY2gKLWlzIHRvIHVzZSB0aGUgOmNsYXNzOmB0aHJlYWRpbmcuVGltZXJgIGNsYXNzIGluc3RlYWQuCi0KLUV4YW1wbGU6OgotCi0gICAgPj4+IGltcG9ydCB0aW1lCi0gICAgPj4+IGZyb20gdGhyZWFkaW5nIGltcG9ydCBUaW1lcgotICAgID4+PiBkZWYgcHJpbnRfdGltZSgpOgotICAgIC4uLiAgICAgcHJpbnQoIkZyb20gcHJpbnRfdGltZSIsIHRpbWUudGltZSgpKQotICAgIC4uLgotICAgID4+PiBkZWYgcHJpbnRfc29tZV90aW1lcygpOgotICAgIC4uLiAgICAgcHJpbnQodGltZS50aW1lKCkpCi0gICAgLi4uICAgICBUaW1lcig1LCBwcmludF90aW1lLCAoKSkuc3RhcnQoKQotICAgIC4uLiAgICAgVGltZXIoMTAsIHByaW50X3RpbWUsICgpKS5zdGFydCgpCi0gICAgLi4uICAgICB0aW1lLnNsZWVwKDExKSAgIyBzbGVlcCB3aGlsZSB0aW1lLWRlbGF5IGV2ZW50cyBleGVjdXRlCi0gICAgLi4uICAgICBwcmludCh0aW1lLnRpbWUoKSkKLSAgICAuLi4KLSAgICA+Pj4gcHJpbnRfc29tZV90aW1lcygpCi0gICAgOTMwMzQzNjkwLjI1NwotICAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM2OTUuMjc0Ci0gICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzcwMC4yNzMKLSAgICA5MzAzNDM3MDEuMzAxCi0KLQogLi4gX3NjaGVkdWxlci1vYmplY3RzOgogCiBTY2hlZHVsZXIgT2JqZWN0cwpAQCAtNzksMjYgKzYyLDM4IEBACiA6Y2xhc3M6YHNjaGVkdWxlcmAgaW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAKLS4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKKy4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD0oKSwga3dhcmdzPXt9KQogCiAgICBTY2hlZHVsZSBhIG5ldyBldmVudC4gVGhlICp0aW1lKiBhcmd1bWVudCBzaG91bGQgYmUgYSBudW1lcmljIHR5cGUgY29tcGF0aWJsZQogICAgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSAqdGltZWZ1bmMqIGZ1bmN0aW9uIHBhc3NlZCAgdG8gdGhlIGNvbnN0cnVjdG9yLgogICAgRXZlbnRzIHNjaGVkdWxlZCBmb3IgdGhlIHNhbWUgKnRpbWUqIHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIG9mIHRoZWlyCiAgICAqcHJpb3JpdHkqLgogCi0gICBFeGVjdXRpbmcgdGhlIGV2ZW50IG1lYW5zIGV4ZWN1dGluZyBgYGFjdGlvbigqYXJndW1lbnQpYGAuICAqYXJndW1lbnQqIG11c3QgYmUgYQotICAgc2VxdWVuY2UgaG9sZGluZyB0aGUgcGFyYW1ldGVycyBmb3IgKmFjdGlvbiouCisgICBFeGVjdXRpbmcgdGhlIGV2ZW50IG1lYW5zIGV4ZWN1dGluZyBgYGFjdGlvbigqYXJndW1lbnQsICoqa3dhcmdzKWBgLgorICAgKmFyZ3VtZW50KiBpcyBhIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGZvciAqYWN0aW9uKi4KKyAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBob2xkaW5nIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgKmFjdGlvbiouCiAKICAgIFJldHVybiB2YWx1ZSBpcyBhbiBldmVudCB3aGljaCBtYXkgYmUgdXNlZCBmb3IgbGF0ZXIgY2FuY2VsbGF0aW9uIG9mIHRoZSBldmVudAogICAgKHNlZSA6bWV0aDpgY2FuY2VsYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqYXJndW1lbnQqIHBhcmFtZXRlciBpcyBvcHRpb25hbC4KIAotLi4gbWV0aG9kOjogc2NoZWR1bGVyLmVudGVyKGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgKmt3YXJncyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKworCisuLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXIoZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50PSgpLCBrd2FyZ3M9e30pCiAKICAgIFNjaGVkdWxlIGFuIGV2ZW50IGZvciAqZGVsYXkqIG1vcmUgdGltZSB1bml0cy4gT3RoZXIgdGhhbiB0aGUgcmVsYXRpdmUgdGltZSwgdGhlCiAgICBvdGhlciBhcmd1bWVudHMsIHRoZSBlZmZlY3QgYW5kIHRoZSByZXR1cm4gdmFsdWUgYXJlIHRoZSBzYW1lIGFzIHRob3NlIGZvcgogICAgOm1ldGg6YGVudGVyYWJzYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICphcmd1bWVudCogcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgICprd2FyZ3MqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIC4uIG1ldGhvZDo6IHNjaGVkdWxlci5jYW5jZWwoZXZlbnQpCiAKQEAgLTExMSwxMiArMTA2LDE2IEBACiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXZlbnQgcXVldWUgaXMgZW1wdHkuCiAKIAotLi4gbWV0aG9kOjogc2NoZWR1bGVyLnJ1bigpCisuLiBtZXRob2Q6OiBzY2hlZHVsZXIucnVuKGJsb2NraW5nPVRydWUpCiAKLSAgIFJ1biBhbGwgc2NoZWR1bGVkIGV2ZW50cy4gVGhpcyBmdW5jdGlvbiB3aWxsIHdhaXQgICh1c2luZyB0aGUgOmZ1bmM6YGRlbGF5ZnVuY2AKKyAgIFJ1biBhbGwgc2NoZWR1bGVkIGV2ZW50cy4gVGhpcyBtZXRob2Qgd2lsbCB3YWl0ICAodXNpbmcgdGhlIDpmdW5jOmBkZWxheWZ1bmNgCiAgICBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yKSBmb3IgdGhlIG5leHQgZXZlbnQsIHRoZW4gZXhlY3V0ZSBpdCBhbmQgc28KICAgIG9uIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIHNjaGVkdWxlZCBldmVudHMuCiAKKyAgIElmICpibG9ja2luZyogaXMgRmFsc2UgZXhlY3V0ZXMgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZSBzb29uZXN0CisgICAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4gdGhlIGRlYWRsaW5lIG9mIHRoZSBuZXh0IHNjaGVkdWxlZCBjYWxsIGluIHRoZQorICAgc2NoZWR1bGVyIChpZiBhbnkpLgorCiAgICBFaXRoZXIgKmFjdGlvbiogb3IgKmRlbGF5ZnVuYyogY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIEluIGVpdGhlciBjYXNlLCB0aGUKICAgIHNjaGVkdWxlciB3aWxsIG1haW50YWluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgcHJvcGFnYXRlIHRoZSBleGNlcHRpb24uICBJZiBhbgogICAgZXhjZXB0aW9uIGlzIHJhaXNlZCBieSAqYWN0aW9uKiwgdGhlIGV2ZW50IHdpbGwgbm90IGJlIGF0dGVtcHRlZCBpbiBmdXR1cmUgY2FsbHMKQEAgLTEyNyw4ICsxMjYsMTEgQEAKICAgIHRoZSBjYWxsaW5nIGNvZGUgaXMgcmVzcG9uc2libGUgZm9yIGNhbmNlbGluZyAgZXZlbnRzIHdoaWNoIGFyZSBubyBsb25nZXIKICAgIHBlcnRpbmVudC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAqYmxvY2tpbmcqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKIC4uIGF0dHJpYnV0ZTo6IHNjaGVkdWxlci5xdWV1ZQogCiAgICBSZWFkLW9ubHkgYXR0cmlidXRlIHJldHVybmluZyBhIGxpc3Qgb2YgdXBjb21pbmcgZXZlbnRzIGluIHRoZSBvcmRlciB0aGV5CiAgICB3aWxsIGJlIHJ1bi4gIEVhY2ggZXZlbnQgaXMgc2hvd24gYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIHdpdGggdGhlCi0gICBmb2xsb3dpbmcgZmllbGRzOiAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQuCisgICBmb2xsb3dpbmcgZmllbGRzOiAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CmluZGV4IGE0NTBlYzIuLjRlNjBmNGEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdApAQCAtNiw3ICs2LDggQEAKIAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIDpjOmZ1bmM6YHNlbGVjdGAgYW5kIDpjOmZ1bmM6YHBvbGxgIGZ1bmN0aW9ucwotYXZhaWxhYmxlIGluIG1vc3Qgb3BlcmF0aW5nIHN5c3RlbXMsIDpjOmZ1bmM6YGVwb2xsYCBhdmFpbGFibGUgb24gTGludXggMi41KyBhbmQKK2F2YWlsYWJsZSBpbiBtb3N0IG9wZXJhdGluZyBzeXN0ZW1zLCA6YzpmdW5jOmBkZXZwb2xsYCBhdmFpbGFibGUgb24KK1NvbGFyaXMgYW5kIGRlcml2YXRpdmVzLCA6YzpmdW5jOmBlcG9sbGAgYXZhaWxhYmxlIG9uIExpbnV4IDIuNSsgYW5kCiA6YzpmdW5jOmBrcXVldWVgIGF2YWlsYWJsZSBvbiBtb3N0IEJTRC4KIE5vdGUgdGhhdCBvbiBXaW5kb3dzLCBpdCBvbmx5IHdvcmtzIGZvciBzb2NrZXRzOyBvbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcywKIGl0IGFsc28gd29ya3MgZm9yIG90aGVyIGZpbGUgdHlwZXMgKGluIHBhcnRpY3VsYXIsIG9uIFVuaXgsIGl0IHdvcmtzIG9uIHBpcGVzKS4KQEAgLTE4LDE3ICsxOSwzOCBAQAogCiAuLiBleGNlcHRpb246OiBlcnJvcgogCi0gICBUaGUgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGFuIGVycm9yIG9jY3Vycy4gIFRoZSBhY2NvbXBhbnlpbmcgdmFsdWUgaXMgYSBwYWlyCi0gICBjb250YWluaW5nIHRoZSBudW1lcmljIGVycm9yIGNvZGUgZnJvbSA6YzpkYXRhOmBlcnJub2AgYW5kIHRoZSBjb3JyZXNwb25kaW5nCi0gICBzdHJpbmcsIGFzIHdvdWxkIGJlIHByaW50ZWQgYnkgdGhlIEMgZnVuY3Rpb24gOmM6ZnVuYzpgcGVycm9yYC4KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEZvbGxvd2luZyA6cGVwOmAzMTUxYCwgdGhpcyBjbGFzcyB3YXMgbWFkZSBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCi0uLiBmdW5jdGlvbjo6IGVwb2xsKHNpemVoaW50PS0xKQorLi4gZnVuY3Rpb246OiBkZXZwb2xsKCkKIAotICAgKE9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IDIuNS40NCBhbmQgbmV3ZXIuKSAgUmV0dXJucyBhbiBlZGdlIHBvbGxpbmcgb2JqZWN0LAotICAgd2hpY2ggY2FuIGJlIHVzZWQgYXMgRWRnZSBvciBMZXZlbCBUcmlnZ2VyZWQgaW50ZXJmYWNlIGZvciBJL08gZXZlbnRzOyBzZWUKLSAgIHNlY3Rpb24gOnJlZjpgZXBvbGwtb2JqZWN0c2AgYmVsb3cgZm9yIHRoZSBtZXRob2RzIHN1cHBvcnRlZCBieSBlcG9sbGluZwotICAgb2JqZWN0cy4KKyAgIChPbmx5IHN1cHBvcnRlZCBvbiBTb2xhcmlzIGFuZCBkZXJpdmF0aXZlcy4pICBSZXR1cm5zIGEgYGAvZGV2L3BvbGxgYAorICAgcG9sbGluZyBvYmplY3Q7IHNlZSBzZWN0aW9uIDpyZWY6YGRldnBvbGwtb2JqZWN0c2AgYmVsb3cgZm9yIHRoZQorICAgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgZGV2cG9sbCBvYmplY3RzLgorCisgICA6YzpmdW5jOmBkZXZwb2xsYCBvYmplY3RzIGFyZSBsaW5rZWQgdG8gdGhlIG51bWJlciBvZiBmaWxlCisgICBkZXNjcmlwdG9ycyBhbGxvd2VkIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24uIElmIHlvdXIgcHJvZ3JhbQorICAgcmVkdWNlcyB0aGlzIHZhbHVlLCA6YzpmdW5jOmBkZXZwb2xsYCB3aWxsIGZhaWwuIElmIHlvdXIgcHJvZ3JhbQorICAgaW5jcmVhc2VzIHRoaXMgdmFsdWUsIDpjOmZ1bmM6YGRldnBvbGxgIG1heSByZXR1cm4gYW4KKyAgIGluY29tcGxldGUgbGlzdCBvZiBhY3RpdmUgZmlsZSBkZXNjcmlwdG9ycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogZXBvbGwoc2l6ZWhpbnQ9LTEsIGZsYWdzPTApCisKKyAgIChPbmx5IHN1cHBvcnRlZCBvbiBMaW51eCAyLjUuNDQgYW5kIG5ld2VyLikgUmV0dXJuIGFuIGVkZ2UgcG9sbGluZyBvYmplY3QsCisgICB3aGljaCBjYW4gYmUgdXNlZCBhcyBFZGdlIG9yIExldmVsIFRyaWdnZXJlZCBpbnRlcmZhY2UgZm9yIEkvTworICAgZXZlbnRzLiAqc2l6ZWhpbnQqIGlzIGRlcHJlY2F0ZWQgYW5kIGNvbXBsZXRlbHkgaWdub3JlZC4gKmZsYWdzKiBjYW4gYmUgc2V0CisgICB0byA6Y29uc3Q6YEVQT0xMX0NMT0VYRUNgLCB3aGljaCBjYXVzZXMgdGhlIGVwb2xsIGRlc2NyaXB0b3IgdG8gYmUgY2xvc2VkCisgICBhdXRvbWF0aWNhbGx5IHdoZW4gOmZ1bmM6YG9zLmV4ZWN2ZWAgaXMgY2FsbGVkLiBTZWUgc2VjdGlvbgorICAgOnJlZjpgZXBvbGwtb2JqZWN0c2AgYmVsb3cgZm9yIHRoZSBtZXRob2RzIHN1cHBvcnRlZCBieSBlcG9sbGluZyBvYmplY3RzLgorCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmZsYWdzKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBwb2xsKCkKQEAgLTEwNiw2ICsxMjgsNzQgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIF9kZXZwb2xsLW9iamVjdHM6CisKK2BgL2Rldi9wb2xsYGAgUG9sbGluZyBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIGh0dHA6Ly9kZXZlbG9wZXJzLnN1bi5jb20vc29sYXJpcy9hcnRpY2xlcy91c2luZ19kZXZwb2xsLmh0bWwKKyAgIGh0dHA6Ly9kZXZlbG9wZXJzLnN1bi5jb20vc29sYXJpcy9hcnRpY2xlcy9wb2xsaW5nX2VmZmljaWVudC5odG1sCisKK1NvbGFyaXMgYW5kIGRlcml2YXRpdmVzIGhhdmUgYGAvZGV2L3BvbGxgYC4gV2hpbGUgOmM6ZnVuYzpgc2VsZWN0YCBpcworTyhoaWdoZXN0IGZpbGUgZGVzY3JpcHRvcikgYW5kIDpjOmZ1bmM6YHBvbGxgIGlzIE8obnVtYmVyIG9mIGZpbGUKK2Rlc2NyaXB0b3JzKSwgYGAvZGV2L3BvbGxgYCBpcyBPKGFjdGl2ZSBmaWxlIGRlc2NyaXB0b3JzKS4KKworYGAvZGV2L3BvbGxgYCBiZWhhdmlvdXIgaXMgdmVyeSBjbG9zZSB0byB0aGUgc3RhbmRhcmQgOmM6ZnVuYzpgcG9sbGAKK29iamVjdC4KKworCisuLiBtZXRob2Q6OiBkZXZwb2xsLnJlZ2lzdGVyKGZkWywgZXZlbnRtYXNrXSkKKworICAgUmVnaXN0ZXIgYSBmaWxlIGRlc2NyaXB0b3Igd2l0aCB0aGUgcG9sbGluZyBvYmplY3QuICBGdXR1cmUgY2FsbHMgdG8gdGhlCisgICA6bWV0aDpgcG9sbGAgbWV0aG9kIHdpbGwgdGhlbiBjaGVjayB3aGV0aGVyIHRoZSBmaWxlIGRlc2NyaXB0b3IgaGFzIGFueSBwZW5kaW5nCisgICBJL08gZXZlbnRzLiAgKmZkKiBjYW4gYmUgZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgOm1ldGg6YGZpbGVub2AKKyAgIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW50ZWdlci4gIEZpbGUgb2JqZWN0cyBpbXBsZW1lbnQgOm1ldGg6YGZpbGVub2AsIHNvIHRoZXkKKyAgIGNhbiBhbHNvIGJlIHVzZWQgYXMgdGhlIGFyZ3VtZW50LgorCisgICAqZXZlbnRtYXNrKiBpcyBhbiBvcHRpb25hbCBiaXRtYXNrIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgZXZlbnRzIHlvdSB3YW50IHRvCisgICBjaGVjayBmb3IuIFRoZSBjb25zdGFudHMgYXJlIHRoZSBzYW1lIHRoYXQgd2l0aCA6YzpmdW5jOmBwb2xsYAorICAgb2JqZWN0LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBjb25zdGFudHMgOmNvbnN0OmBQT0xMSU5gLAorICAgOmNvbnN0OmBQT0xMUFJJYCwgYW5kIDpjb25zdDpgUE9MTE9VVGAuCisKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBSZWdpc3RlcmluZyBhIGZpbGUgZGVzY3JpcHRvciB0aGF0J3MgYWxyZWFkeSByZWdpc3RlcmVkIGlzIG5vdCBhbgorICAgICAgZXJyb3IsIGJ1dCB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4gVGhlIGFwcHJvcGlhdGUgYWN0aW9uIGlzIHRvCisgICAgICB1bnJlZ2lzdGVyIG9yIG1vZGlmeSBpdCBmaXJzdC4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZQorICAgICAgY29tcGFyZWQgd2l0aCA6YzpmdW5jOmBwb2xsYC4KKworCisuLiBtZXRob2Q6OiBkZXZwb2xsLm1vZGlmeShmZFssIGV2ZW50bWFza10pCisKKyAgIFRoaXMgbWV0aG9kIGRvZXMgYW4gOm1ldGg6YHVucmVnaXN0ZXJgIGZvbGxvd2VkIGJ5IGEKKyAgIDptZXRoOmByZWdpc3RlcmAuIEl0IGlzIChhIGJpdCkgbW9yZSBlZmZpY2llbnQgdGhhdCBkb2luZyB0aGUgc2FtZQorICAgZXhwbGljaXRseS4KKworCisuLiBtZXRob2Q6OiBkZXZwb2xsLnVucmVnaXN0ZXIoZmQpCisKKyAgIFJlbW92ZSBhIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0cmFja2VkIGJ5IGEgcG9sbGluZyBvYmplY3QuICBKdXN0IGxpa2UgdGhlCisgICA6bWV0aDpgcmVnaXN0ZXJgIG1ldGhvZCwgKmZkKiBjYW4gYmUgYW4gaW50ZWdlciBvciBhbiBvYmplY3Qgd2l0aCBhCisgICA6bWV0aDpgZmlsZW5vYCBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGludGVnZXIuCisKKyAgIEF0dGVtcHRpbmcgdG8gcmVtb3ZlIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQgd2FzIG5ldmVyIHJlZ2lzdGVyZWQgaXMKKyAgIHNhZmVseSBpZ25vcmVkLgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwucG9sbChbdGltZW91dF0pCisKKyAgIFBvbGxzIHRoZSBzZXQgb2YgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3JzLCBhbmQgcmV0dXJucyBhIHBvc3NpYmx5LWVtcHR5IGxpc3QKKyAgIGNvbnRhaW5pbmcgYGAoZmQsIGV2ZW50KWBgIDItdHVwbGVzIGZvciB0aGUgZGVzY3JpcHRvcnMgdGhhdCBoYXZlIGV2ZW50cyBvcgorICAgZXJyb3JzIHRvIHJlcG9ydC4gKmZkKiBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yLCBhbmQgKmV2ZW50KiBpcyBhIGJpdG1hc2sgd2l0aAorICAgYml0cyBzZXQgZm9yIHRoZSByZXBvcnRlZCBldmVudHMgZm9yIHRoYXQgZGVzY3JpcHRvciAtLS0gOmNvbnN0OmBQT0xMSU5gIGZvcgorICAgd2FpdGluZyBpbnB1dCwgOmNvbnN0OmBQT0xMT1VUYCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBkZXNjcmlwdG9yIGNhbiBiZSB3cml0dGVuCisgICB0bywgYW5kIHNvIGZvcnRoLiBBbiBlbXB0eSBsaXN0IGluZGljYXRlcyB0aGF0IHRoZSBjYWxsIHRpbWVkIG91dCBhbmQgbm8gZmlsZQorICAgZGVzY3JpcHRvcnMgaGFkIGFueSBldmVudHMgdG8gcmVwb3J0LiBJZiAqdGltZW91dCogaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB0aGUKKyAgIGxlbmd0aCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyB3aGljaCB0aGUgc3lzdGVtIHdpbGwgd2FpdCBmb3IgZXZlbnRzIGJlZm9yZQorICAgcmV0dXJuaW5nLiBJZiAqdGltZW91dCogaXMgb21pdHRlZCwgLTEsIG9yIDpjb25zdDpgTm9uZWAsIHRoZSBjYWxsIHdpbGwKKyAgIGJsb2NrIHVudGlsIHRoZXJlIGlzIGFuIGV2ZW50IGZvciB0aGlzIHBvbGwgb2JqZWN0LgorCisKIC4uIF9lcG9sbC1vYmplY3RzOgogCiBFZGdlIGFuZCBMZXZlbCBUcmlnZ2VyIFBvbGxpbmcgKGVwb2xsKSBPYmplY3RzCkBAIC0xNjUsMTEgKzI1NSw2IEBACiAKICAgIFJlZ2lzdGVyIGEgZmQgZGVzY3JpcHRvciB3aXRoIHRoZSBlcG9sbCBvYmplY3QuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgIFJlZ2lzdGVyaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQgcmFpc2VzIGFuCi0gICAgIElPRXJyb3IgLS0gY29udHJhcnkgdG8gOnJlZjpgcG9sbC1vYmplY3RzYCdzIHJlZ2lzdGVyLgotCiAKIC4uIG1ldGhvZDo6IGVwb2xsLm1vZGlmeShmZCwgZXZlbnRtYXNrKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKaW5kZXggMDExM2ZiNy4uOTQxZTA5MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdApAQCAtMzQsNiArMzQsNDAgQEAKICAgICAgIHBhc3NpbmcgYGBOb25lYGAgZm9yICpzKiB3aWxsIHJlYWQgdGhlIHN0cmluZyB0byBzcGxpdCBmcm9tIHN0YW5kYXJkCiAgICAgICBpbnB1dC4KIAorCisuLiBmdW5jdGlvbjo6IHF1b3RlKHMpCisKKyAgIFJldHVybiBhIHNoZWxsLWVzY2FwZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nICpzKi4gIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhCisgICBzdHJpbmcgdGhhdCBjYW4gc2FmZWx5IGJlIHVzZWQgYXMgb25lIHRva2VuIGluIGEgc2hlbGwgY29tbWFuZCBsaW5lLCBmb3IKKyAgIGNhc2VzIHdoZXJlIHlvdSBjYW5ub3QgdXNlIGEgbGlzdC4KKworICAgVGhpcyBpZGlvbSB3b3VsZCBiZSB1bnNhZmU6OgorCisgICAgICA+Pj4gZmlsZW5hbWUgPSAnc29tZWZpbGU7IHJtIC1yZiB+JworICAgICAgPj4+IGNvbW1hbmQgPSAnbHMgLWwge30nLmZvcm1hdChmaWxlbmFtZSkKKyAgICAgID4+PiBwcmludChjb21tYW5kKSAgIyBleGVjdXRlZCBieSBhIHNoZWxsOiBib29tIQorICAgICAgbHMgLWwgc29tZWZpbGU7IHJtIC1yZiB+CisKKyAgIDpmdW5jOmBxdW90ZWAgbGV0cyB5b3UgcGx1ZyB0aGUgc2VjdXJpdHkgaG9sZTo6CisKKyAgICAgID4+PiBjb21tYW5kID0gJ2xzIC1sIHt9Jy5mb3JtYXQocXVvdGUoZmlsZW5hbWUpKQorICAgICAgPj4+IHByaW50KGNvbW1hbmQpCisgICAgICBscyAtbCAnc29tZWZpbGU7IHJtIC1yZiB+JworICAgICAgPj4+IHJlbW90ZV9jb21tYW5kID0gJ3NzaCBob21lIHt9Jy5mb3JtYXQocXVvdGUoY29tbWFuZCkpCisgICAgICA+Pj4gcHJpbnQocmVtb3RlX2NvbW1hbmQpCisgICAgICBzc2ggaG9tZSAnbHMgLWwgJyInIidzb21lZmlsZTsgcm0gLXJmIH4nIiciJycKKworICAgVGhlIHF1b3RpbmcgaXMgY29tcGF0aWJsZSB3aXRoIFVOSVggc2hlbGxzIGFuZCB3aXRoIDpmdW5jOmBzcGxpdGA6CisKKyAgICAgID4+PiByZW1vdGVfY29tbWFuZCA9IHNwbGl0KHJlbW90ZV9jb21tYW5kKQorICAgICAgPj4+IHJlbW90ZV9jb21tYW5kCisgICAgICBbJ3NzaCcsICdob21lJywgImxzIC1sICdzb21lZmlsZTsgcm0gLXJmIH4nIl0KKyAgICAgID4+PiBjb21tYW5kID0gc3BsaXQocmVtb3RlX2NvbW1hbmRbLTFdKQorICAgICAgPj4+IGNvbW1hbmQKKyAgICAgIFsnbHMnLCAnLWwnLCAnc29tZWZpbGU7IHJtIC1yZiB+J10KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIFRoZSA6bW9kOmBzaGxleGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzczoKIAogCkBAIC0yODIsNSArMzE2LDQgQEAKIAogKiBFT0YgaXMgc2lnbmFsZWQgd2l0aCBhIDpjb25zdDpgTm9uZWAgdmFsdWU7CiAKLSogUXVvdGVkIGVtcHR5IHN0cmluZ3MgKGBgJydgYCkgYXJlIGFsbG93ZWQ7Ci0KKyogUXVvdGVkIGVtcHR5IHN0cmluZ3MgKGBgJydgYCkgYXJlIGFsbG93ZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0IGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAppbmRleCAxOGY2NDg1Li5lOTYyMTEyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKQEAgLTQ3LDQ1ICs0NywxMjkgQEAKICAgIGJlIGNvcGllZC4KIAogCi0uLiBmdW5jdGlvbjo6IGNvcHlmaWxlKHNyYywgZHN0KQorLi4gZnVuY3Rpb246OiBjb3B5ZmlsZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIENvcHkgdGhlIGNvbnRlbnRzIChubyBtZXRhZGF0YSkgb2YgdGhlIGZpbGUgbmFtZWQgKnNyYyogdG8gYSBmaWxlIG5hbWVkCi0gICAqZHN0Ki4gICpkc3QqIG11c3QgYmUgdGhlIGNvbXBsZXRlIHRhcmdldCBmaWxlIG5hbWU7IGxvb2sgYXQKLSAgIDpmdW5jOmBzaHV0aWwuY29weWAgZm9yIGEgY29weSB0aGF0IGFjY2VwdHMgYSB0YXJnZXQgZGlyZWN0b3J5IHBhdGguICBJZgotICAgKnNyYyogYW5kICpkc3QqIGFyZSB0aGUgc2FtZSBmaWxlcywgOmV4YzpgRXJyb3JgIGlzIHJhaXNlZC4KLSAgIFRoZSBkZXN0aW5hdGlvbiBsb2NhdGlvbiBtdXN0IGJlIHdyaXRhYmxlOyBvdGhlcndpc2UsICBhbiA6ZXhjOmBJT0Vycm9yYCBleGNlcHRpb24KLSAgIHdpbGwgYmUgcmFpc2VkLiBJZiAqZHN0KiBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXBsYWNlZC4gICBTcGVjaWFsIGZpbGVzCi0gICBzdWNoIGFzIGNoYXJhY3RlciBvciBibG9jayBkZXZpY2VzIGFuZCBwaXBlcyBjYW5ub3QgYmUgY29waWVkIHdpdGggdGhpcwotICAgZnVuY3Rpb24uICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgICpkc3QqIGFuZCByZXR1cm4gKmRzdCouICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgICpkc3QqIG11c3QgYmUgdGhlIGNvbXBsZXRlIHRhcmdldCBmaWxlIG5hbWU7IGxvb2sgYXQgOmZ1bmM6YHNodXRpbC5jb3B5YAorICAgZm9yIGEgY29weSB0aGF0IGFjY2VwdHMgYSB0YXJnZXQgZGlyZWN0b3J5IHBhdGguICBJZiAqc3JjKiBhbmQgKmRzdCoKKyAgIHNwZWNpZnkgdGhlIHNhbWUgZmlsZSwgOmV4YzpgRXJyb3JgIGlzIHJhaXNlZC4KIAorICAgVGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uIG11c3QgYmUgd3JpdGFibGU7IG90aGVyd2lzZSwgYW4gOmV4YzpgT1NFcnJvcmAKKyAgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gSWYgKmRzdCogYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmVwbGFjZWQuCisgICBTcGVjaWFsIGZpbGVzIHN1Y2ggYXMgY2hhcmFjdGVyIG9yIGJsb2NrIGRldmljZXMgYW5kIHBpcGVzIGNhbm5vdCBiZQorICAgY29waWVkIHdpdGggdGhpcyBmdW5jdGlvbi4KIAotLi4gZnVuY3Rpb246OiBjb3B5bW9kZShzcmMsIGRzdCkKKyAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlIGFuZCAqc3JjKiBpcyBhIHN5bWJvbGljIGxpbmssCisgICBhIG5ldyBzeW1ib2xpYyBsaW5rIHdpbGwgYmUgY3JlYXRlZCBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlCisgICBmaWxlICpzcmMqIHBvaW50cyB0by4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgT1NFcnJvcmAuCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KKyAgICAgIE5vdyByZXR1cm5zICpkc3QqLgorCisuLiBmdW5jdGlvbjo6IGNvcHltb2RlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzIGZyb20gKnNyYyogdG8gKmRzdCouICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZAogICAgZ3JvdXAgYXJlIHVuYWZmZWN0ZWQuICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLCBhbmQgYm90aCAqc3JjKiBhbmQgKmRzdCogYXJlIHN5bWJvbGljIGxpbmtzLAorICAgOmZ1bmM6YGNvcHltb2RlYCB3aWxsIGF0dGVtcHQgdG8gbW9kaWZ5IHRoZSBtb2RlIG9mICpkc3QqIGl0c2VsZiAocmF0aGVyCisgICB0aGFuIHRoZSBmaWxlIGl0IHBvaW50cyB0bykuICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWlsYWJsZSBvbiBldmVyeQorICAgcGxhdGZvcm07IHBsZWFzZSBzZWUgOmZ1bmM6YGNvcHlzdGF0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIElmCisgICA6ZnVuYzpgY29weW1vZGVgIGNhbm5vdCBtb2RpZnkgc3ltYm9saWMgbGlua3Mgb24gdGhlIGxvY2FsIHBsYXRmb3JtLCBhbmQgaXQKKyAgIGlzIGFza2VkIHRvIGRvIHNvLCBpdCB3aWxsIGRvIG5vdGhpbmcgYW5kIHJldHVybi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgogCi0uLiBmdW5jdGlvbjo6IGNvcHlzdGF0KHNyYywgZHN0KQorLi4gZnVuY3Rpb246OiBjb3B5c3RhdChzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKLSAgIENvcHkgdGhlIHBlcm1pc3Npb24gYml0cywgbGFzdCBhY2Nlc3MgdGltZSwgbGFzdCBtb2RpZmljYXRpb24gdGltZSwgYW5kIGZsYWdzCi0gICBmcm9tICpzcmMqIHRvICpkc3QqLiAgVGhlIGZpbGUgY29udGVudHMsIG93bmVyLCBhbmQgZ3JvdXAgYXJlIHVuYWZmZWN0ZWQuICAqc3JjKgotICAgYW5kICpkc3QqIGFyZSBwYXRoIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuCisgICBDb3B5IHRoZSBwZXJtaXNzaW9uIGJpdHMsIGxhc3QgYWNjZXNzIHRpbWUsIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUsIGFuZAorICAgZmxhZ3MgZnJvbSAqc3JjKiB0byAqZHN0Ki4gIE9uIExpbnV4LCA6ZnVuYzpgY29weXN0YXRgIGFsc28gY29waWVzIHRoZQorICAgImV4dGVuZGVkIGF0dHJpYnV0ZXMiIHdoZXJlIHBvc3NpYmxlLiAgVGhlIGZpbGUgY29udGVudHMsIG93bmVyLCBhbmQKKyAgIGdyb3VwIGFyZSB1bmFmZmVjdGVkLiAgKnNyYyogYW5kICpkc3QqIGFyZSBwYXRoIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuCiAKKyAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLCBhbmQgKnNyYyogYW5kICpkc3QqIGJvdGgKKyAgIHJlZmVyIHRvIHN5bWJvbGljIGxpbmtzLCA6ZnVuYzpgY29weXN0YXRgIHdpbGwgb3BlcmF0ZSBvbgorICAgdGhlIHN5bWJvbGljIGxpbmtzIHRoZW1zZWx2ZXMgcmF0aGVyIHRoYW4gdGhlIGZpbGVzIHRoZQorICAgc3ltYm9saWMgbGlua3MgcmVmZXIgdG8tLXJlYWRpbmcgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlCisgICAqc3JjKiBzeW1ib2xpYyBsaW5rLCBhbmQgd3JpdGluZyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlCisgICAqZHN0KiBzeW1ib2xpYyBsaW5rLgogCi0uLiBmdW5jdGlvbjo6IGNvcHkoc3JjLCBkc3QpCisgICAuLiBub3RlOjoKIAotICAgQ29weSB0aGUgZmlsZSAqc3JjKiB0byB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwgYQotICAgZmlsZSB3aXRoIHRoZSBzYW1lIGJhc2VuYW1lIGFzICpzcmMqICBpcyBjcmVhdGVkIChvciBvdmVyd3JpdHRlbikgaW4gdGhlCi0gICBkaXJlY3Rvcnkgc3BlY2lmaWVkLiAgUGVybWlzc2lvbiBiaXRzIGFyZSBjb3BpZWQuICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGgKLSAgIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuCisgICAgICBOb3QgYWxsIHBsYXRmb3JtcyBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIGV4YW1pbmUgYW5kCisgICAgICBtb2RpZnkgc3ltYm9saWMgbGlua3MuICBQeXRob24gaXRzZWxmIGNhbiB0ZWxsIHlvdSB3aGF0CisgICAgICBmdW5jdGlvbmFsaXR5IGlzIGxvY2FsbHkgYXZhaWxhYmxlLgogCisgICAgICAqIElmIGBgb3MuY2htb2QgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYGAgaXMKKyAgICAgICAgYGBUcnVlYGAsIDpmdW5jOmBjb3B5c3RhdGAgY2FuIG1vZGlmeSB0aGUgcGVybWlzc2lvbgorICAgICAgICBiaXRzIG9mIGEgc3ltYm9saWMgbGluay4KIAotLi4gZnVuY3Rpb246OiBjb3B5MihzcmMsIGRzdCkKKyAgICAgICogSWYgYGBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYCBpcworICAgICAgICBgYFRydWVgYCwgOmZ1bmM6YGNvcHlzdGF0YCBjYW4gbW9kaWZ5IHRoZSBsYXN0IGFjY2VzcworICAgICAgICBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzIG9mIGEgc3ltYm9saWMgbGluay4KIAotICAgU2ltaWxhciB0byA6ZnVuYzpgc2h1dGlsLmNvcHlgLCBidXQgbWV0YWRhdGEgaXMgY29waWVkIGFzIHdlbGwgLS0gaW4gZmFjdCwKLSAgIHRoaXMgaXMganVzdCA6ZnVuYzpgc2h1dGlsLmNvcHlgIGZvbGxvd2VkIGJ5IDpmdW5jOmBjb3B5c3RhdGAuICBUaGlzIGlzCi0gICBzaW1pbGFyIHRvIHRoZSBVbml4IGNvbW1hbmQgOnByb2dyYW06YGNwIC1wYC4KKyAgICAgICogSWYgYGBvcy5jaGZsYWdzIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2BgIGlzCisgICAgICAgIGBgVHJ1ZWBgLCA6ZnVuYzpgY29weXN0YXRgIGNhbiBtb2RpZnkgdGhlIGZsYWdzIG9mCisgICAgICAgIGEgc3ltYm9saWMgbGluay4gIChgYG9zLmNoZmxhZ3NgYCBpcyBub3QgYXZhaWxhYmxlIG9uCisgICAgICAgIGFsbCBwbGF0Zm9ybXMuKQogCisgICAgICBPbiBwbGF0Zm9ybXMgd2hlcmUgc29tZSBvciBhbGwgb2YgdGhpcyBmdW5jdGlvbmFsaXR5CisgICAgICBpcyB1bmF2YWlsYWJsZSwgd2hlbiBhc2tlZCB0byBtb2RpZnkgYSBzeW1ib2xpYyBsaW5rLAorICAgICAgOmZ1bmM6YGNvcHlzdGF0YCB3aWxsIGNvcHkgZXZlcnl0aGluZyBpdCBjYW4uCisgICAgICA6ZnVuYzpgY29weXN0YXRgIG5ldmVyIHJldHVybnMgZmFpbHVyZS4KKworICAgICAgUGxlYXNlIHNlZSA6ZGF0YTpgb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYAorICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudCBhbmQgc3VwcG9ydCBmb3IgTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcy4KKworLi4gZnVuY3Rpb246OiBjb3B5KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgQ29waWVzIHRoZSBmaWxlICpzcmMqIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqZHN0Ki4gICpzcmMqIGFuZCAqZHN0KgorICAgc2hvdWxkIGJlIHN0cmluZ3MuICBJZiAqZHN0KiBzcGVjaWZpZXMgYSBkaXJlY3RvcnksIHRoZSBmaWxlIHdpbGwgYmUKKyAgIGNvcGllZCBpbnRvICpkc3QqIHVzaW5nIHRoZSBiYXNlIGZpbGVuYW1lIGZyb20gKnNyYyouICBSZXR1cm5zIHRoZQorICAgcGF0aCB0byB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgorCisgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBmYWxzZSwgYW5kICpzcmMqIGlzIGEgc3ltYm9saWMgbGluaywKKyAgICpkc3QqIHdpbGwgYmUgY3JlYXRlZCBhcyBhIHN5bWJvbGljIGxpbmsuICBJZiAqZm9sbG93X3N5bWxpbmtzKgorICAgaXMgdHJ1ZSBhbmQgKnNyYyogaXMgYSBzeW1ib2xpYyBsaW5rLCAqZHN0KiB3aWxsIGJlIGEgY29weSBvZgorICAgdGhlIGZpbGUgKnNyYyogcmVmZXJzIHRvLgorCisgICA6ZnVuYzpgY29weWAgY29waWVzIHRoZSBmaWxlIGRhdGEgYW5kIHRoZSBmaWxlJ3MgcGVybWlzc2lvbgorICAgbW9kZSAoc2VlIDpmdW5jOmBvcy5jaG1vZGApLiAgT3RoZXIgbWV0YWRhdGEsIGxpa2UgdGhlCisgICBmaWxlJ3MgY3JlYXRpb24gYW5kIG1vZGlmaWNhdGlvbiB0aW1lcywgaXMgbm90IHByZXNlcnZlZC4KKyAgIFRvIHByZXNlcnZlIGFsbCBmaWxlIG1ldGFkYXRhIGZyb20gdGhlIG9yaWdpbmFsLCB1c2UKKyAgIDpmdW5jOmB+c2h1dGlsLmNvcHkyYCBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCisgICAgICBOb3cgcmV0dXJucyBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCisKKy4uIGZ1bmN0aW9uOjogY29weTIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBJZGVudGljYWwgdG8gOmZ1bmM6YH5zaHV0aWwuY29weWAgZXhjZXB0IHRoYXQgOmZ1bmM6YGNvcHkyYAorICAgYWxzbyBhdHRlbXB0cyB0byBwcmVzZXJ2ZSBhbGwgZmlsZSBtZXRhZGF0YS4KKworICAgV2hlbiAqZm9sbG93X3N5bWxpbmtzKiBpcyBmYWxzZSwgYW5kICpzcmMqIGlzIGEgc3ltYm9saWMKKyAgIGxpbmssIDpmdW5jOmBjb3B5MmAgYXR0ZW1wdHMgdG8gY29weSBhbGwgbWV0YWRhdGEgZnJvbSB0aGUKKyAgICpzcmMqIHN5bWJvbGljIGxpbmsgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgKmRzdCogc3ltYm9saWMgbGluay4KKyAgIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuCisgICBPbiBwbGF0Zm9ybXMgd2hlcmUgc29tZSBvciBhbGwgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGlzCisgICB1bmF2YWlsYWJsZSwgOmZ1bmM6YGNvcHkyYCB3aWxsIHByZXNlcnZlIGFsbCB0aGUgbWV0YWRhdGEKKyAgIGl0IGNhbjsgOmZ1bmM6YGNvcHkyYCBuZXZlciByZXR1cm5zIGZhaWx1cmUuCisKKyAgIDpmdW5jOmBjb3B5MmAgdXNlcyA6ZnVuYzpgY29weXN0YXRgIHRvIGNvcHkgdGhlIGZpbGUgbWV0YWRhdGEuCisgICBQbGVhc2Ugc2VlIDpmdW5jOmBjb3B5c3RhdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgIGFib3V0IHBsYXRmb3JtIHN1cHBvcnQgZm9yIG1vZGlmeWluZyBzeW1ib2xpYyBsaW5rIG1ldGFkYXRhLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQsIHRyeSB0byBjb3B5IGV4dGVuZGVkCisgICAgICBmaWxlIHN5c3RlbSBhdHRyaWJ1dGVzIHRvbyAoY3VycmVudGx5IExpbnV4IG9ubHkpLgorICAgICAgTm93IHJldHVybnMgcGF0aCB0byB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgogCiAuLiBmdW5jdGlvbjo6IGlnbm9yZV9wYXR0ZXJucyhcKnBhdHRlcm5zKQogCkBAIC05NiwxNiArMTgwLDE3IEBACiAKIC4uIGZ1bmN0aW9uOjogY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPUZhbHNlLCBpZ25vcmU9Tm9uZSwgY29weV9mdW5jdGlvbj1jb3B5MiwgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzPUZhbHNlKQogCi0gICBSZWN1cnNpdmVseSBjb3B5IGFuIGVudGlyZSBkaXJlY3RvcnkgdHJlZSByb290ZWQgYXQgKnNyYyouICBUaGUgZGVzdGluYXRpb24KKyAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKiwgcmV0dXJuaW5nIHRoZQorICAgZGVzdGluYXRpb24gZGlyZWN0b3J5LiAgVGhlIGRlc3RpbmF0aW9uCiAgICBkaXJlY3RvcnksIG5hbWVkIGJ5ICpkc3QqLCBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0OyBpdCB3aWxsIGJlIGNyZWF0ZWQgYXMKICAgIHdlbGwgYXMgbWlzc2luZyBwYXJlbnQgZGlyZWN0b3JpZXMuICBQZXJtaXNzaW9ucyBhbmQgdGltZXMgb2YgZGlyZWN0b3JpZXMKICAgIGFyZSBjb3BpZWQgd2l0aCA6ZnVuYzpgY29weXN0YXRgLCBpbmRpdmlkdWFsIGZpbGVzIGFyZSBjb3BpZWQgdXNpbmcKICAgIDpmdW5jOmBzaHV0aWwuY29weTJgLgogCiAgICBJZiAqc3ltbGlua3MqIGlzIHRydWUsIHN5bWJvbGljIGxpbmtzIGluIHRoZSBzb3VyY2UgdHJlZSBhcmUgcmVwcmVzZW50ZWQgYXMKLSAgIHN5bWJvbGljIGxpbmtzIGluIHRoZSBuZXcgdHJlZSwgYnV0IHRoZSBtZXRhZGF0YSBvZiB0aGUgb3JpZ2luYWwgbGlua3MgaXMgTk9UCi0gICBjb3BpZWQ7IGlmIGZhbHNlIG9yIG9taXR0ZWQsIHRoZSBjb250ZW50cyBhbmQgbWV0YWRhdGEgb2YgdGhlIGxpbmtlZCBmaWxlcwotICAgYXJlIGNvcGllZCB0byB0aGUgbmV3IHRyZWUuCisgICBzeW1ib2xpYyBsaW5rcyBpbiB0aGUgbmV3IHRyZWUgYW5kIHRoZSBtZXRhZGF0YSBvZiB0aGUgb3JpZ2luYWwgbGlua3Mgd2lsbAorICAgYmUgY29waWVkIGFzIGZhciBhcyB0aGUgcGxhdGZvcm0gYWxsb3dzOyBpZiBmYWxzZSBvciBvbWl0dGVkLCB0aGUgY29udGVudHMKKyAgIGFuZCBtZXRhZGF0YSBvZiB0aGUgbGlua2VkIGZpbGVzIGFyZSBjb3BpZWQgdG8gdGhlIG5ldyB0cmVlLgogCiAgICBXaGVuICpzeW1saW5rcyogaXMgZmFsc2UsIGlmIHRoZSBmaWxlIHBvaW50ZWQgYnkgdGhlIHN5bWxpbmsgZG9lc24ndAogICAgZXhpc3QsIGEgZXhjZXB0aW9uIHdpbGwgYmUgYWRkZWQgaW4gdGhlIGxpc3Qgb2YgZXJyb3JzIHJhaXNlZCBpbgpAQCAtMTI5LDEzICsyMTQsMTUgQEAKICAgIElmICpjb3B5X2Z1bmN0aW9uKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNvcHkKICAgIGVhY2ggZmlsZS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgc291cmNlIHBhdGggYW5kIHRoZSBkZXN0aW5hdGlvbiBwYXRoCiAgICBhcyBhcmd1bWVudHMuIEJ5IGRlZmF1bHQsIDpmdW5jOmBzaHV0aWwuY29weTJgIGlzIHVzZWQsIGJ1dCBhbnkgZnVuY3Rpb24KLSAgIHRoYXQgc3VwcG9ydHMgdGhlIHNhbWUgc2lnbmF0dXJlIChsaWtlIDpmdW5jOmBjb3B5YCkgY2FuIGJlIHVzZWQuCisgICB0aGF0IHN1cHBvcnRzIHRoZSBzYW1lIHNpZ25hdHVyZSAobGlrZSA6ZnVuYzpgc2h1dGlsLmNvcHlgKSBjYW4gYmUgdXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIENvcHkgbWV0YWRhdGEgd2hlbiAqc3ltbGlua3MqIGlzIGZhbHNlLgorICAgICAgTm93IHJldHVybnMgKmRzdCouCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgKmNvcHlfZnVuY3Rpb24qIGFyZ3VtZW50IHRvIGJlIGFibGUgdG8gcHJvdmlkZSBhIGN1c3RvbSBjb3B5CiAgICAgICBmdW5jdGlvbi4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzKiBhcmd1bWVudCB0byBzaWxlbnQgZGFuZ2xpbmcgc3ltbGlua3MKICAgICAgIGVycm9ycyB3aGVuICpzeW1saW5rcyogaXMgZmFsc2UuCiAKQEAgLTE1MCwxOSArMjM3LDQyIEBACiAgICBoYW5kbGVkIGJ5IGNhbGxpbmcgYSBoYW5kbGVyIHNwZWNpZmllZCBieSAqb25lcnJvciogb3IsIGlmIHRoYXQgaXMgb21pdHRlZCwKICAgIHRoZXkgcmFpc2UgYW4gZXhjZXB0aW9uLgogCisgICAuLiBub3RlOjoKKworICAgICAgT24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGUgbmVjZXNzYXJ5IGZkLWJhc2VkIGZ1bmN0aW9ucyBhIHN5bWxpbmsKKyAgICAgIGF0dGFjayByZXNpc3RhbnQgdmVyc2lvbiBvZiA6ZnVuYzpgcm10cmVlYCBpcyB1c2VkIGJ5IGRlZmF1bHQuICBPbiBvdGhlcgorICAgICAgcGxhdGZvcm1zLCB0aGUgOmZ1bmM6YHJtdHJlZWAgaW1wbGVtZW50YXRpb24gaXMgc3VzY2VwdGlibGUgdG8gYSBzeW1saW5rCisgICAgICBhdHRhY2s6IGdpdmVuIHByb3BlciB0aW1pbmcgYW5kIGNpcmN1bXN0YW5jZXMsIGF0dGFja2VycyBjYW4gbWFuaXB1bGF0ZQorICAgICAgc3ltbGlua3Mgb24gdGhlIGZpbGVzeXN0ZW0gdG8gZGVsZXRlIGZpbGVzIHRoZXkgd291bGRuJ3QgYmUgYWJsZSB0byBhY2Nlc3MKKyAgICAgIG90aGVyd2lzZS4gIEFwcGxpY2F0aW9ucyBjYW4gdXNlIHRoZSA6ZGF0YTpgcm10cmVlLmF2b2lkc19zeW1saW5rX2F0dGFja3NgCisgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGNhc2UgYXBwbGllcy4KKwogICAgSWYgKm9uZXJyb3IqIGlzIHByb3ZpZGVkLCBpdCBtdXN0IGJlIGEgY2FsbGFibGUgdGhhdCBhY2NlcHRzIHRocmVlCi0gICBwYXJhbWV0ZXJzOiAqZnVuY3Rpb24qLCAqcGF0aCosIGFuZCAqZXhjaW5mbyouIFRoZSBmaXJzdCBwYXJhbWV0ZXIsCi0gICAqZnVuY3Rpb24qLCBpcyB0aGUgZnVuY3Rpb24gd2hpY2ggcmFpc2VkIHRoZSBleGNlcHRpb247IGl0IHdpbGwgYmUKLSAgIDpmdW5jOmBvcy5wYXRoLmlzbGlua2AsIDpmdW5jOmBvcy5saXN0ZGlyYCwgOmZ1bmM6YG9zLnJlbW92ZWAgb3IKLSAgIDpmdW5jOmBvcy5ybWRpcmAuICBUaGUgc2Vjb25kIHBhcmFtZXRlciwgKnBhdGgqLCB3aWxsIGJlIHRoZSBwYXRoIG5hbWUgcGFzc2VkCi0gICB0byAqZnVuY3Rpb24qLiAgVGhlIHRoaXJkIHBhcmFtZXRlciwgKmV4Y2luZm8qLCB3aWxsIGJlIHRoZSBleGNlcHRpb24KLSAgIGluZm9ybWF0aW9uIHJldHVybiBieSA6ZnVuYzpgc3lzLmV4Y19pbmZvYC4gIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5ICpvbmVycm9yKgotICAgd2lsbCBub3QgYmUgY2F1Z2h0LgorICAgcGFyYW1ldGVyczogKmZ1bmN0aW9uKiwgKnBhdGgqLCBhbmQgKmV4Y2luZm8qLgorCisgICBUaGUgZmlyc3QgcGFyYW1ldGVyLCAqZnVuY3Rpb24qLCBpcyB0aGUgZnVuY3Rpb24gd2hpY2ggcmFpc2VkIHRoZSBleGNlcHRpb247CisgICBpdCBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybSBhbmQgaW1wbGVtZW50YXRpb24uICBUaGUgc2Vjb25kIHBhcmFtZXRlciwKKyAgICpwYXRoKiwgd2lsbCBiZSB0aGUgcGF0aCBuYW1lIHBhc3NlZCB0byAqZnVuY3Rpb24qLiAgVGhlIHRoaXJkIHBhcmFtZXRlciwKKyAgICpleGNpbmZvKiwgd2lsbCBiZSB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgc3lzLmV4Y19pbmZvYC4gIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5ICpvbmVycm9yKiB3aWxsIG5vdCBiZSBjYXVnaHQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBhIHN5bWxpbmsgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIHRoYXQgaXMgdXNlZCBhdXRvbWF0aWNhbGx5CisgICAgICBpZiBwbGF0Zm9ybSBzdXBwb3J0cyBmZC1iYXNlZCBmdW5jdGlvbnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzCisKKyAgICAgIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGFuZCBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyBhCisgICAgICBzeW1saW5rIGF0dGFjayByZXNpc3RhbnQgdmVyc2lvbiBvZiA6ZnVuYzpgcm10cmVlYC4gIEN1cnJlbnRseSB0aGlzIGlzCisgICAgICBvbmx5IHRydWUgZm9yIHBsYXRmb3JtcyBzdXBwb3J0aW5nIGZkLWJhc2VkIGRpcmVjdG9yeSBhY2Nlc3MgZnVuY3Rpb25zLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBmdW5jdGlvbjo6IG1vdmUoc3JjLCBkc3QpCiAKLSAgIFJlY3Vyc2l2ZWx5IG1vdmUgYSBmaWxlIG9yIGRpcmVjdG9yeSAoKnNyYyopIHRvIGFub3RoZXIgbG9jYXRpb24gKCpkc3QqKS4KKyAgIFJlY3Vyc2l2ZWx5IG1vdmUgYSBmaWxlIG9yIGRpcmVjdG9yeSAoKnNyYyopIHRvIGFub3RoZXIgbG9jYXRpb24gKCpkc3QqKQorICAgYW5kIHJldHVybiB0aGUgZGVzdGluYXRpb24uCiAKICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZW4gKnNyYyogaXMKICAgIG1vdmVkIGluc2lkZSB0aGF0IGRpcmVjdG9yeS4KQEAgLTE3Myw3ICsyODMsNjEgQEAKIAogICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIG9uIHRoZSBjdXJyZW50IGZpbGVzeXN0ZW0sIHRoZW4gOmZ1bmM6YG9zLnJlbmFtZWAgaXMKICAgIHVzZWQuICBPdGhlcndpc2UsICpzcmMqIGlzIGNvcGllZCAodXNpbmcgOmZ1bmM6YHNodXRpbC5jb3B5MmApIHRvICpkc3QqIGFuZAotICAgdGhlbiByZW1vdmVkLgorICAgdGhlbiByZW1vdmVkLiBJbiBjYXNlIG9mIHN5bWxpbmtzLCBhIG5ldyBzeW1saW5rIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgb2YKKyAgICpzcmMqIHdpbGwgYmUgY3JlYXRlZCBpbiBvciBhcyAqZHN0KiBhbmQgKnNyYyogd2lsbCBiZSByZW1vdmVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgZXhwbGljaXQgc3ltbGluayBoYW5kbGluZyBmb3IgZm9yZWlnbiBmaWxlc3lzdGVtcywgdGh1cyBhZGFwdGluZworICAgICAgaXQgdG8gdGhlIGJlaGF2aW9yIG9mIEdOVSdzIDpwcm9ncmFtOmBtdmAuCisgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KKworLi4gZnVuY3Rpb246OiBkaXNrX3VzYWdlKHBhdGgpCisKKyAgIFJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgCisgICB3aXRoIHRoZSBhdHRyaWJ1dGVzICp0b3RhbCosICp1c2VkKiBhbmQgKmZyZWUqLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZgorICAgdG90YWwsIHVzZWQgYW5kIGZyZWUgc3BhY2UsIGluIGJ5dGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisuLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVzZXI9Tm9uZSwgZ3JvdXA9Tm9uZSkKKworICAgQ2hhbmdlIG93bmVyICp1c2VyKiBhbmQvb3IgKmdyb3VwKiBvZiB0aGUgZ2l2ZW4gKnBhdGgqLgorCisgICAqdXNlciogY2FuIGJlIGEgc3lzdGVtIHVzZXIgbmFtZSBvciBhIHVpZDsgdGhlIHNhbWUgYXBwbGllcyB0byAqZ3JvdXAqLiBBdAorICAgbGVhc3Qgb25lIGFyZ3VtZW50IGlzIHJlcXVpcmVkLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgb3MuY2hvd25gLCB0aGUgdW5kZXJseWluZyBmdW5jdGlvbi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHdoaWNoKGNtZCwgbW9kZT1vcy5GX09LIHwgb3MuWF9PSywgcGF0aD1Ob25lKQorCisgICBSZXR1cm4gdGhlIHBhdGggdG8gYW4gZXhlY3V0YWJsZSB3aGljaCB3b3VsZCBiZSBydW4gaWYgdGhlIGdpdmVuICpjbWQqIHdhcworICAgY2FsbGVkLiAgSWYgbm8gKmNtZCogd291bGQgYmUgY2FsbGVkLCByZXR1cm4gYGBOb25lYGAuCisKKyAgICptb2RlKiBpcyBhIHBlcm1pc3Npb24gbWFzayBwYXNzZWQgYSB0byA6ZnVuYzpgb3MuYWNjZXNzYCwgYnkgZGVmYXVsdAorICAgZGV0ZXJtaW5pbmcgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZCBleGVjdXRhYmxlLgorCisgICBXaGVuIG5vICpwYXRoKiBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHRzIG9mIDpmdW5jOmBvcy5lbnZpcm9uYCBhcmUgdXNlZCwKKyAgIHJldHVybmluZyBlaXRoZXIgdGhlICJQQVRIIiB2YWx1ZSBvciBhIGZhbGxiYWNrIG9mIDphdHRyOmBvcy5kZWZwYXRoYC4KKworICAgT24gV2luZG93cywgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGFsd2F5cyBwcmVwZW5kZWQgdG8gdGhlICpwYXRoKiB3aGV0aGVyCisgICBvciBub3QgeW91IHVzZSB0aGUgZGVmYXVsdCBvciBwcm92aWRlIHlvdXIgb3duLCB3aGljaCBpcyB0aGUgYmVoYXZpb3IgdGhlCisgICBjb21tYW5kIHNoZWxsIHVzZXMgd2hlbiBmaW5kaW5nIGV4ZWN1dGFibGVzLiAgQWRkaXRpb25hbHksIHdoZW4gZmluZGluZyB0aGUKKyAgICpjbWQqIGluIHRoZSAqcGF0aCosIHRoZSBgYFBBVEhFWFRgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBjaGVja2VkLiAgRm9yCisgICBleGFtcGxlLCBpZiB5b3UgY2FsbCBgYHNodXRpbC53aGljaCgicHl0aG9uIilgYCwgOmZ1bmM6YHdoaWNoYCB3aWxsIHNlYXJjaAorICAgYGBQQVRIRVhUYGAgdG8ga25vdyB0aGF0IGl0IHNob3VsZCBsb29rIGZvciBgYHB5dGhvbi5leGVgYCB3aXRoaW4gdGhlICpwYXRoKgorICAgZGlyZWN0b3JpZXMuICBGb3IgZXhhbXBsZSwgb24gV2luZG93czo6CisKKyAgICAgID4+PiBzaHV0aWwud2hpY2goInB5dGhvbiIpCisgICAgICAnYzpcXHB5dGhvbjMzXFxweXRob24uZXhlJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBleGNlcHRpb246OiBFcnJvcgpAQCAtMTg2LDcgKzM1MCw3IEBACiAuLiBfc2h1dGlsLWNvcHl0cmVlLWV4YW1wbGU6CiAKIGNvcHl0cmVlIGV4YW1wbGUKLTo6Ojo6Ojo6Ojo6Ojo6OjoKK35+fn5+fn5+fn5+fn5+fn4KIAogVGhpcyBleGFtcGxlIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgOmZ1bmM6YGNvcHl0cmVlYCBmdW5jdGlvbiwgZGVzY3JpYmVkCiBhYm92ZSwgd2l0aCB0aGUgZG9jc3RyaW5nIG9taXR0ZWQuICBJdCBkZW1vbnN0cmF0ZXMgbWFueSBvZiB0aGUgb3RoZXIgZnVuY3Rpb25zCkBAIC0yMDgsNyArMzcyLDcgQEAKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgY29weTIoc3JjbmFtZSwgZHN0bmFtZSkKICAgICAgICAgICAgICAgICMgWFhYIFdoYXQgYWJvdXQgZGV2aWNlcywgc29ja2V0cyBldGMuPwotICAgICAgICAgICBleGNlcHQgKElPRXJyb3IsIG9zLmVycm9yKSBhcyB3aHk6CisgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHNyY25hbWUsIGRzdG5hbWUsIHN0cih3aHkpKSkKICAgICAgICAgICAgIyBjYXRjaCB0aGUgRXJyb3IgZnJvbSB0aGUgcmVjdXJzaXZlIGNvcHl0cmVlIHNvIHRoYXQgd2UgY2FuCiAgICAgICAgICAgICMgY29udGludWUgd2l0aCBvdGhlciBmaWxlcwpAQCAtMjUwLDYgKzQxNCw4IEBACiBBcmNoaXZpbmcgb3BlcmF0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKIEhpZ2gtbGV2ZWwgdXRpbGl0aWVzIHRvIGNyZWF0ZSBhbmQgcmVhZCBjb21wcmVzc2VkIGFuZCBhcmNoaXZlZCBmaWxlcyBhcmUgYWxzbwogcHJvdmlkZWQuICBUaGV5IHJlbHkgb24gdGhlIDptb2Q6YHppcGZpbGVgIGFuZCA6bW9kOmB0YXJmaWxlYCBtb2R1bGVzLgogCkBAIC0yNzcsOCArNDQzLDYgQEAKICAgICpsb2dnZXIqIG11c3QgYmUgYW4gb2JqZWN0IGNvbXBhdGlibGUgd2l0aCA6cGVwOmAyODJgLCB1c3VhbGx5IGFuIGluc3RhbmNlIG9mCiAgICA6Y2xhc3M6YGxvZ2dpbmcuTG9nZ2VyYC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiBnZXRfYXJjaGl2ZV9mb3JtYXRzKCkKIApAQCAtMjk1LDggKzQ1OSw2IEBACiAgICBZb3UgY2FuIHJlZ2lzdGVyIG5ldyBmb3JtYXRzIG9yIHByb3ZpZGUgeW91ciBvd24gYXJjaGl2ZXIgZm9yIGFueSBleGlzdGluZwogICAgZm9ybWF0cywgYnkgdXNpbmcgOmZ1bmM6YHJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0YC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdChuYW1lLCBmdW5jdGlvbiwgW2V4dHJhX2FyZ3MsIFtkZXNjcmlwdGlvbl1dKQogCkBAIC0zMDksMTUgKzQ3MSwxMSBAQAogICAgKmRlc2NyaXB0aW9uKiBpcyB1c2VkIGJ5IDpmdW5jOmBnZXRfYXJjaGl2ZV9mb3JtYXRzYCB3aGljaCByZXR1cm5zIHRoZQogICAgbGlzdCBvZiBhcmNoaXZlcnMuIERlZmF1bHRzIHRvIGFuIGVtcHR5IGxpc3QuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogdW5yZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdChuYW1lKQogCiAgICBSZW1vdmUgdGhlIGFyY2hpdmUgZm9ybWF0ICpuYW1lKiBmcm9tIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBmb3JtYXRzLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHVucGFja19hcmNoaXZlKGZpbGVuYW1lWywgZXh0cmFjdF9kaXJbLCBmb3JtYXRdXSkKIApAQCAtMzMyLDggKzQ5MCw2IEBACiAgICBhbmQgc2VlIGlmIGFuIHVucGFja2VyIHdhcyByZWdpc3RlcmVkIGZvciB0aGF0IGV4dGVuc2lvbi4gSW4gY2FzZSBub25lIGlzCiAgICBmb3VuZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdChuYW1lLCBleHRlbnNpb25zLCBmdW5jdGlvblssIGV4dHJhX2FyZ3NbLCBkZXNjcmlwdGlvbl1dKQogCkBAIC0zNTEsMTUgKzUwNywxMSBAQAogICAgKmRlc2NyaXB0aW9uKiBjYW4gYmUgcHJvdmlkZWQgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCwgYW5kIHdpbGwgYmUgcmV0dXJuZWQKICAgIGJ5IHRoZSA6ZnVuYzpgZ2V0X3VucGFja19mb3JtYXRzYCBmdW5jdGlvbi4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiB1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQobmFtZSkKIAogICAgVW5yZWdpc3RlciBhbiB1bnBhY2sgZm9ybWF0LiAqbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiBnZXRfdW5wYWNrX2Zvcm1hdHMoKQogCkBAIC0zNzcsMTMgKzUyOSwxMSBAQAogICAgWW91IGNhbiByZWdpc3RlciBuZXcgZm9ybWF0cyBvciBwcm92aWRlIHlvdXIgb3duIHVucGFja2VyIGZvciBhbnkgZXhpc3RpbmcKICAgIGZvcm1hdHMsIGJ5IHVzaW5nIDpmdW5jOmByZWdpc3Rlcl91bnBhY2tfZm9ybWF0YC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gX3NodXRpbC1hcmNoaXZpbmctZXhhbXBsZToKIAogQXJjaGl2aW5nIGV4YW1wbGUKLTo6Ojo6Ojo6Ojo6Ojo6Ojo6Cit+fn5+fn5+fn5+fn5+fn5+fgogCiBJbiB0aGlzIGV4YW1wbGUsIHdlIGNyZWF0ZSBhIGd6aXAnZWQgdGFyLWZpbGUgYXJjaGl2ZSBjb250YWluaW5nIGFsbCBmaWxlcwogZm91bmQgaW4gdGhlIDpmaWxlOmAuc3NoYCBkaXJlY3Rvcnkgb2YgdGhlIHVzZXI6OgpAQCAtNDA2LDMgKzU1NiwzNiBAQAogICAgIC1ydy0tLS0tLS0gdGFyZWsvc3RhZmYgICAgMTY3NSAyMDA4LTA2LTA5IDEzOjI2OjU0IC4vaWRfcnNhCiAgICAgLXJ3LXItLXItLSB0YXJlay9zdGFmZiAgICAgMzk3IDIwMDgtMDYtMDkgMTM6MjY6NTQgLi9pZF9yc2EucHViCiAgICAgLXJ3LXItLXItLSB0YXJlay9zdGFmZiAgIDM3MTkyIDIwMTAtMDItMDYgMTg6MjM6MTAgLi9rbm93bl9ob3N0cworCisKK1F1ZXJ5aW5nIHRoZSBzaXplIG9mIHRoZSBvdXRwdXQgdGVybWluYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogZ2V0X3Rlcm1pbmFsX3NpemUoZmFsbGJhY2s9KGNvbHVtbnMsIGxpbmVzKSkKKworICAgR2V0IHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cuCisKKyAgIEZvciBlYWNoIG9mIHRoZSB0d28gZGltZW5zaW9ucywgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLCBgYENPTFVNTlNgYAorICAgYW5kIGBgTElORVNgYCByZXNwZWN0aXZlbHksIGlzIGNoZWNrZWQuIElmIHRoZSB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZAorICAgdGhlIHZhbHVlIGlzIGEgcG9zaXRpdmUgaW50ZWdlciwgaXQgaXMgdXNlZC4KKworICAgV2hlbiBgYENPTFVNTlNgYCBvciBgYExJTkVTYGAgaXMgbm90IGRlZmluZWQsIHdoaWNoIGlzIHRoZSBjb21tb24gY2FzZSwKKyAgIHRoZSB0ZXJtaW5hbCBjb25uZWN0ZWQgdG8gOmRhdGE6YHN5cy5fX3N0ZG91dF9fYCBpcyBxdWVyaWVkCisgICBieSBpbnZva2luZyA6ZnVuYzpgb3MuZ2V0X3Rlcm1pbmFsX3NpemVgLgorCisgICBJZiB0aGUgdGVybWluYWwgc2l6ZSBjYW5ub3QgYmUgc3VjY2Vzc2Z1bGx5IHF1ZXJpZWQsIGVpdGhlciBiZWNhdXNlCisgICB0aGUgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBxdWVyeWluZywgb3IgYmVjYXVzZSB3ZSBhcmUgbm90CisgICBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbCwgdGhlIHZhbHVlIGdpdmVuIGluIGBgZmFsbGJhY2tgYCBwYXJhbWV0ZXIKKyAgIGlzIHVzZWQuIGBgZmFsbGJhY2tgYCBkZWZhdWx0cyB0byBgYCg4MCwgMjQpYGAgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKyAgIHNpemUgdXNlZCBieSBtYW55IHRlcm1pbmFsIGVtdWxhdG9ycy4KKworICAgVGhlIHZhbHVlIHJldHVybmVkIGlzIGEgbmFtZWQgdHVwbGUgb2YgdHlwZSA6Y2xhc3M6YG9zLnRlcm1pbmFsX3NpemVgLgorCisgICBTZWUgYWxzbzogVGhlIFNpbmdsZSBVTklYIFNwZWNpZmljYXRpb24sIFZlcnNpb24gMiwKKyAgIGBPdGhlciBFbnZpcm9ubWVudCBWYXJpYWJsZXNgXy4KKworLi4gX2BPdGhlciBFbnZpcm9ubWVudCBWYXJpYWJsZXNgOgorICAgaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzc5MDg3OTkveGJkL2VudnZhci5odG1sI3RhZ18wMDJfMDAzCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QgYi9Eb2MvbGlicmFyeS9zaWduYWwucnN0CmluZGV4IGQxY2FlMTMuLjJhNDcyZmUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdApAQCAtNDQsNiArNDQsOSBAQAogICBzaWduYWwgaGFuZGxlcnMgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgY2FsY3VsYXRpb24gZmluaXNoZXMuCiAKIAorLi4gX3NpZ25hbHMtYW5kLXRocmVhZHM6CisKKwogU2lnbmFscyBhbmQgdGhyZWFkcwogXl5eXl5eXl5eXl5eXl5eXl5eXgogCkBAIC0xMzEsNiArMTM0LDI4IEBACiAgICBpbiB1c2VyIGFuZCBrZXJuZWwgc3BhY2UuIFNJR1BST0YgaXMgZGVsaXZlcmVkIHVwb24gZXhwaXJhdGlvbi4KIAogCisuLiBkYXRhOjogU0lHX0JMT0NLCisKKyAgIEEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSAqaG93KiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AKKyAgIGluZGljYXRpbmcgdGhhdCBzaWduYWxzIGFyZSB0byBiZSBibG9ja2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFNJR19VTkJMT0NLCisKKyAgIEEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSAqaG93KiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AKKyAgIGluZGljYXRpbmcgdGhhdCBzaWduYWxzIGFyZSB0byBiZSB1bmJsb2NrZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogU0lHX1NFVE1BU0sKKworICAgQSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlICpob3cqIHBhcmFtZXRlciB0byA6ZnVuYzpgcHRocmVhZF9zaWdtYXNrYAorICAgaW5kaWNhdGluZyB0aGF0IHRoZSBzaWduYWwgbWFzayBpcyB0byBiZSByZXBsYWNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogVGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGRlZmluZXMgb25lIGV4Y2VwdGlvbjoKIAogLi4gZXhjZXB0aW9uOjogSXRpbWVyRXJyb3IKQEAgLTEzOCw3ICsxNjMsMTEgQEAKICAgIFJhaXNlZCB0byBzaWduYWwgYW4gZXJyb3IgZnJvbSB0aGUgdW5kZXJseWluZyA6ZnVuYzpgc2V0aXRpbWVyYCBvcgogICAgOmZ1bmM6YGdldGl0aW1lcmAgaW1wbGVtZW50YXRpb24uIEV4cGVjdCB0aGlzIGVycm9yIGlmIGFuIGludmFsaWQKICAgIGludGVydmFsIHRpbWVyIG9yIGEgbmVnYXRpdmUgdGltZSBpcyBwYXNzZWQgdG8gOmZ1bmM6YHNldGl0aW1lcmAuCi0gICBUaGlzIGVycm9yIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBJT0Vycm9yYC4KKyAgIFRoaXMgZXJyb3IgaXMgYSBzdWJ0eXBlIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoaXMgZXJyb3IgdXNlZCB0byBiZSBhIHN1YnR5cGUgb2YgOmV4YzpgSU9FcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogVGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CkBAIC0xNzIsNiArMjAxLDY1IEBACiAgICB3aWxsIHRoZW4gYmUgY2FsbGVkLiAgUmV0dXJucyBub3RoaW5nLiAgTm90IG9uIFdpbmRvd3MuIChTZWUgdGhlIFVuaXggbWFuIHBhZ2UKICAgIDptYW5wYWdlOmBzaWduYWwoMilgLikKIAorICAgU2VlIGFsc28gOmZ1bmM6YHNpZ3dhaXRgLCA6ZnVuYzpgc2lnd2FpdGluZm9gLCA6ZnVuYzpgc2lndGltZWR3YWl0YCBhbmQKKyAgIDpmdW5jOmBzaWdwZW5kaW5nYC4KKworCisuLiBmdW5jdGlvbjo6IHB0aHJlYWRfa2lsbCh0aHJlYWRfaWQsIHNpZ251bSkKKworICAgU2VuZCB0aGUgc2lnbmFsICpzaWdudW0qIHRvIHRoZSB0aHJlYWQgKnRocmVhZF9pZCosIGFub3RoZXIgdGhyZWFkIGluIHRoZQorICAgc2FtZSBwcm9jZXNzIGFzIHRoZSBjYWxsZXIuICBUaGUgdGFyZ2V0IHRocmVhZCBjYW4gYmUgZXhlY3V0aW5nIGFueSBjb2RlCisgICAoUHl0aG9uIG9yIG5vdCkuICBIb3dldmVyLCBpZiB0aGUgdGFyZ2V0IHRocmVhZCBpcyBleGVjdXRpbmcgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIsIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXJzIHdpbGwgYmUgOnJlZjpgZXhlY3V0ZWQgYnkgdGhlIG1haW4KKyAgIHRocmVhZCA8c2lnbmFscy1hbmQtdGhyZWFkcz5gLiAgVGhlcmVmb3JlLCB0aGUgb25seSBwb2ludCBvZiBzZW5kaW5nIGEgc2lnbmFsIHRvIGEgcGFydGljdWxhcgorICAgUHl0aG9uIHRocmVhZCB3b3VsZCBiZSB0byBmb3JjZSBhIHJ1bm5pbmcgc3lzdGVtIGNhbGwgdG8gZmFpbCB3aXRoCisgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKworICAgVXNlIDpmdW5jOmB0aHJlYWRpbmcuZ2V0X2lkZW50KClgIG9yIHRoZSA6YXR0cjpgfnRocmVhZGluZy5UaHJlYWQuaWRlbnRgCisgICBhdHRyaWJ1dGUgb2YgOmNsYXNzOmB0aHJlYWRpbmcuVGhyZWFkYCBvYmplY3RzIHRvIGdldCBhIHN1aXRhYmxlIHZhbHVlCisgICBmb3IgKnRocmVhZF9pZCouCisKKyAgIElmICpzaWdudW0qIGlzIDAsIHRoZW4gbm8gc2lnbmFsIGlzIHNlbnQsIGJ1dCBlcnJvciBjaGVja2luZyBpcyBzdGlsbAorICAgcGVyZm9ybWVkOyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB0YXJnZXQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgcHRocmVhZF9raWxsKDMpYCBmb3IgZnVydGhlcgorICAgaW5mb3JtYXRpb24pLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgb3Mua2lsbGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHRocmVhZF9zaWdtYXNrKGhvdywgbWFzaykKKworICAgRmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLiAgVGhlIHNpZ25hbCBtYXNrCisgICBpcyB0aGUgc2V0IG9mIHNpZ25hbHMgd2hvc2UgZGVsaXZlcnkgaXMgY3VycmVudGx5IGJsb2NrZWQgZm9yIHRoZSBjYWxsZXIuCisgICBSZXR1cm4gdGhlIG9sZCBzaWduYWwgbWFzayBhcyBhIHNldCBvZiBzaWduYWxzLgorCisgICBUaGUgYmVoYXZpb3Igb2YgdGhlIGNhbGwgaXMgZGVwZW5kZW50IG9uIHRoZSB2YWx1ZSBvZiAqaG93KiwgYXMgZm9sbG93cy4KKworICAgKiA6ZGF0YTpgU0lHX0JMT0NLYDogVGhlIHNldCBvZiBibG9ja2VkIHNpZ25hbHMgaXMgdGhlIHVuaW9uIG9mIHRoZSBjdXJyZW50CisgICAgIHNldCBhbmQgdGhlICptYXNrKiBhcmd1bWVudC4KKyAgICogOmRhdGE6YFNJR19VTkJMT0NLYDogVGhlIHNpZ25hbHMgaW4gKm1hc2sqIGFyZSByZW1vdmVkIGZyb20gdGhlIGN1cnJlbnQKKyAgICAgc2V0IG9mIGJsb2NrZWQgc2lnbmFscy4gIEl0IGlzIHBlcm1pc3NpYmxlIHRvIGF0dGVtcHQgdG8gdW5ibG9jayBhCisgICAgIHNpZ25hbCB3aGljaCBpcyBub3QgYmxvY2tlZC4KKyAgICogOmRhdGE6YFNJR19TRVRNQVNLYDogVGhlIHNldCBvZiBibG9ja2VkIHNpZ25hbHMgaXMgc2V0IHRvIHRoZSAqbWFzayoKKyAgICAgYXJndW1lbnQuCisKKyAgICptYXNrKiBpcyBhIHNldCBvZiBzaWduYWwgbnVtYmVycyAoZS5nLiB7OmNvbnN0OmBzaWduYWwuU0lHSU5UYCwKKyAgIDpjb25zdDpgc2lnbmFsLlNJR1RFUk1gfSkuIFVzZSBgYHJhbmdlKDEsIHNpZ25hbC5OU0lHKWBgIGZvciBhIGZ1bGwgbWFzaworICAgaW5jbHVkaW5nIGFsbCBzaWduYWxzLgorCisgICBGb3IgZXhhbXBsZSwgYGBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtdKWBgIHJlYWRzIHRoZQorICAgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguIFNlZSB0aGUgbWFuIHBhZ2UgOm1hbnBhZ2U6YHNpZ3Byb2NtYXNrKDMpYCBhbmQKKyAgIDptYW5wYWdlOmBwdGhyZWFkX3NpZ21hc2soMylgIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgcGF1c2VgLCA6ZnVuYzpgc2lncGVuZGluZ2AgYW5kIDpmdW5jOmBzaWd3YWl0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiBzZXRpdGltZXIod2hpY2gsIHNlY29uZHNbLCBpbnRlcnZhbF0pCiAKQEAgLTIwMSwxMyArMjg5LDE3IEBACiAKIC4uIGZ1bmN0aW9uOjogc2V0X3dha2V1cF9mZChmZCkKIAotICAgU2V0IHRoZSB3YWtldXAgZmQgdG8gKmZkKi4gIFdoZW4gYSBzaWduYWwgaXMgcmVjZWl2ZWQsIGEgYGAnXDAnYGAgYnl0ZSBpcwotICAgd3JpdHRlbiB0byB0aGUgZmQuICBUaGlzIGNhbiBiZSB1c2VkIGJ5IGEgbGlicmFyeSB0byB3YWtldXAgYSBwb2xsIG9yIHNlbGVjdAotICAgY2FsbCwgYWxsb3dpbmcgdGhlIHNpZ25hbCB0byBiZSBmdWxseSBwcm9jZXNzZWQuCisgICBTZXQgdGhlIHdha2V1cCBmaWxlIGRlc2NyaXB0b3IgdG8gKmZkKi4gIFdoZW4gYSBzaWduYWwgaXMgcmVjZWl2ZWQsIHRoZQorICAgc2lnbmFsIG51bWJlciBpcyB3cml0dGVuIGFzIGEgc2luZ2xlIGJ5dGUgaW50byB0aGUgZmQuICBUaGlzIGNhbiBiZSB1c2VkIGJ5CisgICBhIGxpYnJhcnkgdG8gd2FrZXVwIGEgcG9sbCBvciBzZWxlY3QgY2FsbCwgYWxsb3dpbmcgdGhlIHNpZ25hbCB0byBiZSBmdWxseQorICAgcHJvY2Vzc2VkLgogCiAgICBUaGUgb2xkIHdha2V1cCBmZCBpcyByZXR1cm5lZC4gICpmZCogbXVzdCBiZSBub24tYmxvY2tpbmcuICBJdCBpcyB1cCB0byB0aGUKICAgIGxpYnJhcnkgdG8gcmVtb3ZlIGFueSBieXRlcyBiZWZvcmUgY2FsbGluZyBwb2xsIG9yIHNlbGVjdCBhZ2Fpbi4KIAorICAgVXNlIGZvciBleGFtcGxlIGBgc3RydWN0LnVucGFjaygnJXVCJyAlIGxlbihkYXRhKSwgZGF0YSlgYCB0byBkZWNvZGUgdGhlCisgICBzaWduYWwgbnVtYmVycyBsaXN0LgorCiAgICBXaGVuIHRocmVhZHMgYXJlIGVuYWJsZWQsIHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkOwogICAgYXR0ZW1wdGluZyB0byBjYWxsIGl0IGZyb20gb3RoZXIgdGhyZWFkcyB3aWxsIGNhdXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAKICAgIGV4Y2VwdGlvbiB0byBiZSByYWlzZWQuCkBAIC0yNDcsNiArMzM5LDczIEBACiAgICA6Y29uc3Q6YFNJR1RFUk1gLiBBIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGluIGFueSBvdGhlciBjYXNlLgogCiAKKy4uIGZ1bmN0aW9uOjogc2lncGVuZGluZygpCisKKyAgIEV4YW1pbmUgdGhlIHNldCBvZiBzaWduYWxzIHRoYXQgYXJlIHBlbmRpbmcgZm9yIGRlbGl2ZXJ5IHRvIHRoZSBjYWxsaW5nCisgICB0aHJlYWQgKGkuZS4sIHRoZSBzaWduYWxzIHdoaWNoIGhhdmUgYmVlbiByYWlzZWQgd2hpbGUgYmxvY2tlZCkuICBSZXR1cm4gdGhlCisgICBzZXQgb2YgdGhlIHBlbmRpbmcgc2lnbmFscy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWdwZW5kaW5nKDIpYCBmb3IgZnVydGhlcgorICAgaW5mb3JtYXRpb24pLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgcGF1c2VgLCA6ZnVuYzpgcHRocmVhZF9zaWdtYXNrYCBhbmQgOmZ1bmM6YHNpZ3dhaXRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHNpZ3dhaXQoc2lnc2V0KQorCisgICBTdXNwZW5kIGV4ZWN1dGlvbiBvZiB0aGUgY2FsbGluZyB0aHJlYWQgdW50aWwgdGhlIGRlbGl2ZXJ5IG9mIG9uZSBvZiB0aGUKKyAgIHNpZ25hbHMgc3BlY2lmaWVkIGluIHRoZSBzaWduYWwgc2V0ICpzaWdzZXQqLiAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgdGhlIHNpZ25hbAorICAgKHJlbW92ZXMgaXQgZnJvbSB0aGUgcGVuZGluZyBsaXN0IG9mIHNpZ25hbHMpLCBhbmQgcmV0dXJucyB0aGUgc2lnbmFsIG51bWJlci4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWd3YWl0KDMpYCBmb3IgZnVydGhlcgorICAgaW5mb3JtYXRpb24pLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgcGF1c2VgLCA6ZnVuYzpgcHRocmVhZF9zaWdtYXNrYCwgOmZ1bmM6YHNpZ3BlbmRpbmdgLAorICAgOmZ1bmM6YHNpZ3dhaXRpbmZvYCBhbmQgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc2lnd2FpdGluZm8oc2lnc2V0KQorCisgICBTdXNwZW5kIGV4ZWN1dGlvbiBvZiB0aGUgY2FsbGluZyB0aHJlYWQgdW50aWwgdGhlIGRlbGl2ZXJ5IG9mIG9uZSBvZiB0aGUKKyAgIHNpZ25hbHMgc3BlY2lmaWVkIGluIHRoZSBzaWduYWwgc2V0ICpzaWdzZXQqLiAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgdGhlCisgICBzaWduYWwgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgcGVuZGluZyBsaXN0IG9mIHNpZ25hbHMuIElmIG9uZSBvZiB0aGUKKyAgIHNpZ25hbHMgaW4gKnNpZ3NldCogaXMgYWxyZWFkeSBwZW5kaW5nIGZvciB0aGUgY2FsbGluZyB0aHJlYWQsIHRoZSBmdW5jdGlvbgorICAgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHNpZ25hbC4gVGhlIHNpZ25hbAorICAgaGFuZGxlciBpcyBub3QgY2FsbGVkIGZvciB0aGUgZGVsaXZlcmVkIHNpZ25hbC4gVGhlIGZ1bmN0aW9uIHJhaXNlcyBhbgorICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgdGhhdCBpcyBub3QgaW4KKyAgICpzaWdzZXQqLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZQorICAgOmM6dHlwZTpgc2lnaW5mb190YCBzdHJ1Y3R1cmUsIG5hbWVseTogOmF0dHI6YHNpX3NpZ25vYCwgOmF0dHI6YHNpX2NvZGVgLAorICAgOmF0dHI6YHNpX2Vycm5vYCwgOmF0dHI6YHNpX3BpZGAsIDphdHRyOmBzaV91aWRgLCA6YXR0cjpgc2lfc3RhdHVzYCwKKyAgIDphdHRyOmBzaV9iYW5kYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWd3YWl0aW5mbygyKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHNpZ3dhaXRgIGFuZCA6ZnVuYzpgc2lndGltZWR3YWl0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBzaWd0aW1lZHdhaXQoc2lnc2V0LCB0aW1lb3V0KQorCisgICBMaWtlIDpmdW5jOmBzaWd3YWl0aW5mb2AsIGJ1dCB0YWtlcyBhbiBhZGRpdGlvbmFsICp0aW1lb3V0KiBhcmd1bWVudAorICAgc3BlY2lmeWluZyBhIHRpbWVvdXQuIElmICp0aW1lb3V0KiBpcyBzcGVjaWZpZWQgYXMgOmNvbnN0OmAwYCwgYSBwb2xsIGlzCisgICBwZXJmb3JtZWQuIFJldHVybnMgOmNvbnN0OmBOb25lYCBpZiBhIHRpbWVvdXQgb2NjdXJzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXggKHNlZSB0aGUgbWFuIHBhZ2UgOm1hbnBhZ2U6YHNpZ3RpbWVkd2FpdCgyKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHNpZ3dhaXRgIGFuZCA6ZnVuYzpgc2lnd2FpdGluZm9gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBfc2lnbmFsLWV4YW1wbGU6CiAKIEV4YW1wbGUKQEAgLTI2Myw3ICs0MjIsNyBAQAogCiAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICBwcmludCgnU2lnbmFsIGhhbmRsZXIgY2FsbGVkIHdpdGggc2lnbmFsJywgc2lnbnVtKQotICAgICAgIHJhaXNlIElPRXJyb3IoIkNvdWxkbid0IG9wZW4gZGV2aWNlISIpCisgICAgICAgcmFpc2UgT1NFcnJvcigiQ291bGRuJ3Qgb3BlbiBkZXZpY2UhIikKIAogICAgIyBTZXQgdGhlIHNpZ25hbCBoYW5kbGVyIGFuZCBhIDUtc2Vjb25kIGFsYXJtCiAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QgYi9Eb2MvbGlicmFyeS9zaXRlLnJzdAppbmRleCA1Nzk1NzFhLi4zNmI4MGMzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaXRlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaXRlLnJzdApAQCAtMTYsNyArMTYsMTQgQEAKIC4uIGluZGV4OjogdHJpcGxlOiBtb2R1bGU7IHNlYXJjaDsgcGF0aAogCiBJbXBvcnRpbmcgdGhpcyBtb2R1bGUgd2lsbCBhcHBlbmQgc2l0ZS1zcGVjaWZpYyBwYXRocyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoCi1hbmQgYWRkIGEgZmV3IGJ1aWx0aW5zLgorYW5kIGFkZCBhIGZldyBidWlsdGlucywgdW5sZXNzIDpvcHRpb246YC1TYCB3YXMgdXNlZC4gIEluIHRoYXQgY2FzZSwgdGhpcyBtb2R1bGUKK2NhbiBiZSBzYWZlbHkgaW1wb3J0ZWQgd2l0aCBubyBhdXRvbWF0aWMgbW9kaWZpY2F0aW9ucyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoCitvciBhZGRpdGlvbnMgdG8gdGhlIGJ1aWx0aW5zLiAgVG8gZXhwbGljaXRseSB0cmlnZ2VyIHRoZSB1c3VhbCBzaXRlLXNwZWNpZmljCithZGRpdGlvbnMsIGNhbGwgdGhlIDpmdW5jOmBzaXRlLm1haW5gIGZ1bmN0aW9uLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgSW1wb3J0aW5nIHRoZSBtb2R1bGUgdXNlZCB0byB0cmlnZ2VyIHBhdGhzIG1hbmlwdWxhdGlvbiBldmVuIHdoZW4gdXNpbmcKKyAgIDpvcHRpb246YC1TYC4KIAogLi4gaW5kZXg6OgogICAgcGFpcjogc2l0ZS1weXRob247IGRpcmVjdG9yeQpAQCAtMzEsNiArMzgsMTUgQEAKIGlmIGl0IHJlZmVycyB0byBhbiBleGlzdGluZyBkaXJlY3RvcnksIGFuZCBpZiBzbywgYWRkcyBpdCB0byBgYHN5cy5wYXRoYGAgYW5kCiBhbHNvIGluc3BlY3RzIHRoZSBuZXdseSBhZGRlZCBwYXRoIGZvciBjb25maWd1cmF0aW9uIGZpbGVzLgogCitJZiBhIGZpbGUgbmFtZWQgInB5dmVudi5jZmciIGV4aXN0cyBvbmUgZGlyZWN0b3J5IGFib3ZlIHN5cy5leGVjdXRhYmxlLAorc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IGFyZSBzZXQgdG8gdGhhdCBkaXJlY3RvcnkgYW5kCitpdCBpcyBhbHNvIGNoZWNrZWQgZm9yIHNpdGUtcGFja2FnZXMgYW5kIHNpdGUtcHl0aG9uIChzeXMuYmFzZV9wcmVmaXggYW5kCitzeXMuYmFzZV9leGVjX3ByZWZpeCB3aWxsIGFsd2F5cyBiZSB0aGUgInJlYWwiIHByZWZpeGVzIG9mIHRoZSBQeXRob24KK2luc3RhbGxhdGlvbikuIElmICJweXZlbnYuY2ZnIiAoYSBib290c3RyYXAgY29uZmlndXJhdGlvbiBmaWxlKSBjb250YWlucwordGhlIGtleSAiaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyIgc2V0IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gImZhbHNlIgorKGNhc2UtaW5zZW5zaXRpdmUpLCB0aGUgc3lzdGVtLWxldmVsIHByZWZpeGVzIHdpbGwgc3RpbGwgYWxzbyBiZQorc2VhcmNoZWQgZm9yIHNpdGUtcGFja2FnZXM7IG90aGVyd2lzZSB0aGV5IHdvbid0LgorCiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybSA6ZmlsZTpge25hbWV9LnB0aGAKIGFuZCBleGlzdHMgaW4gb25lIG9mIHRoZSBmb3VyIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBhYm92ZTsgaXRzIGNvbnRlbnRzIGFyZQogYWRkaXRpb25hbCBpdGVtcyAob25lIHBlciBsaW5lKSB0byBiZSBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBOb24tZXhpc3RpbmcgaXRlbXMKQEAgLTEyOSw4ICsxNDUsMTkgQEAKICAgIDpmaWxlOmB+L0xpYnJhcnkvUHl0aG9uL3tYLll9YCBmb3IgTWFjIGZyYW1ld29yayBidWlsZHMsIGFuZAogICAgOmZpbGU6YHslQVBQREFUQSV9XFxQeXRob25gIGZvciBXaW5kb3dzLiAgVGhpcyB2YWx1ZSBpcyB1c2VkIGJ5IERpc3R1dGlscyB0bwogICAgY29tcHV0ZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzIGZvciBzY3JpcHRzLCBkYXRhIGZpbGVzLCBQeXRob24gbW9kdWxlcywKLSAgIGV0Yy4gZm9yIHRoZSA6cmVmOmB1c2VyIGluc3RhbGxhdGlvbiBzY2hlbWUgPGluc3QtYWx0LWluc3RhbGwtdXNlcj5gLiAgU2VlCi0gICBhbHNvIDplbnZ2YXI6YFBZVEhPTlVTRVJCQVNFYC4KKyAgIGV0Yy4gZm9yIHRoZSA6cmVmOmB1c2VyIGluc3RhbGxhdGlvbiBzY2hlbWUgPGluc3QtYWx0LWluc3RhbGwtdXNlcj5gLgorICAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OVVNFUkJBU0VgLgorCisKKy4uIGZ1bmN0aW9uOjogbWFpbigpCisKKyAgIEFkZHMgYWxsIHRoZSBzdGFuZGFyZCBzaXRlLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBtb2R1bGUgc2VhcmNoCisgICBwYXRoLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoaXMgbW9kdWxlIGlzIGltcG9ydGVkLAorICAgdW5sZXNzIHRoZSA6cHJvZ3JhbTpgcHl0aG9uYCBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZSA6b3B0aW9uOmAtU2AKKyAgIGZsYWcuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gYmUgY2FsbGVkIHVuY29uZGl0aW9ubmFsbHkuCiAKIAogLi4gZnVuY3Rpb246OiBhZGRzaXRlZGlyKHNpdGVkaXIsIGtub3duX3BhdGhzPU5vbmUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKaW5kZXggYmZkYzcyNy4uMmNhNzFmZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdApAQCAtMjAsMTcgKzIwLDI0IEBACiBBZGRpdGlvbmFsbHkgdGhlIFNNVFBDaGFubmVsIG1heSBiZSBleHRlbmRlZCB0byBpbXBsZW1lbnQgdmVyeSBzcGVjaWZpYwogaW50ZXJhY3Rpb24gYmVoYXZpb3VyIHdpdGggU01UUCBjbGllbnRzLgogCitUaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBleHRlbnNpb24uCisKKwogU01UUFNlcnZlciBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0KIAogCi0uLiBjbGFzczo6IFNNVFBTZXJ2ZXIobG9jYWxhZGRyLCByZW1vdGVhZGRyKQorLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgSXQKICAgIGluaGVyaXRzIGZyb20gOmNsYXNzOmBhc3luY29yZS5kaXNwYXRjaGVyYCwgYW5kIHNvIHdpbGwgaW5zZXJ0IGl0c2VsZiBpbnRvCiAgICA6bW9kOmBhc3luY29yZWAncyBldmVudCBsb29wIG9uIGluc3RhbnRpYXRpb24uCiAKKyAgICpkYXRhX3NpemVfbGltaXQqIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3aWxsIGJlCisgICBhY2NlcHRlZCBpbiBhIGBgREFUQWBgIGNvbW1hbmQuICBBIHZhbHVlIG9mIGBgTm9uZWBgIG9yIGBgMGBgIG1lYW5zIG5vCisgICBsaW1pdC4KKwogICAgLi4gbWV0aG9kOjogcHJvY2Vzc19tZXNzYWdlKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKQogCiAgICAgICBSYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24uIE92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0bwpAQCAtMTU2LDExICsxNjMsMTUgQEAKICAgIENvbW1hbmQgIEFjdGlvbiB0YWtlbgogICAgPT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgSEVMTyAgICAgQWNjZXB0cyB0aGUgZ3JlZXRpbmcgZnJvbSB0aGUgY2xpZW50IGFuZCBzdG9yZXMgaXQgaW4KLSAgICAgICAgICAgIDphdHRyOmBzZWVuX2dyZWV0aW5nYC4KKyAgICAgICAgICAgIDphdHRyOmBzZWVuX2dyZWV0aW5nYC4gIFNldHMgc2VydmVyIHRvIGJhc2UgY29tbWFuZCBtb2RlLgorICAgRUhMTyAgICAgQWNjZXB0cyB0aGUgZ3JlZXRpbmcgZnJvbSB0aGUgY2xpZW50IGFuZCBzdG9yZXMgaXQgaW4KKyAgICAgICAgICAgIDphdHRyOmBzZWVuX2dyZWV0aW5nYC4gIFNldHMgc2VydmVyIHRvIGV4dGVuZGVkIGNvbW1hbmQgbW9kZS4KICAgIE5PT1AgICAgIFRha2VzIG5vIGFjdGlvbi4KICAgIFFVSVQgICAgIENsb3NlcyB0aGUgY29ubmVjdGlvbiBjbGVhbmx5LgogICAgTUFJTCAgICAgQWNjZXB0cyB0aGUgIk1BSUwgRlJPTToiIHN5bnRheCBhbmQgc3RvcmVzIHRoZSBzdXBwbGllZCBhZGRyZXNzIGFzCi0gICAgICAgICAgICA6YXR0cjpgbWFpbGZyb21gLgorICAgICAgICAgICAgOmF0dHI6YG1haWxmcm9tYC4gIEluIGV4dGVuZGVkIGNvbW1hbmQgbW9kZSwgYWNjZXB0cyB0aGUKKyAgICAgICAgICAgIDpyZmM6YDE4NzBgIFNJWkUgYXR0cmlidXRlIGFuZCByZXNwb25kcyBhcHByb3ByaWF0ZWx5IGJhc2VkIG9uIHRoZQorICAgICAgICAgICAgdmFsdWUgb2YgKmRhdGFfc2l6ZV9saW1pdCouCiAgICBSQ1BUICAgICBBY2NlcHRzIHRoZSAiUkNQVCBUTzoiIHN5bnRheCBhbmQgc3RvcmVzIHRoZSBzdXBwbGllZCBhZGRyZXNzZXMgaW4KICAgICAgICAgICAgIHRoZSA6YXR0cjpgcmNwdHRvc2AgbGlzdC4KICAgIFJTRVQgICAgIFJlc2V0cyB0aGUgOmF0dHI6YG1haWxmcm9tYCwgOmF0dHI6YHJjcHR0b3NgLCBhbmQKQEAgLTE2OCw0ICsxNzksNyBAQAogICAgREFUQSAgICAgU2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUgdG8gOmF0dHI6YERBVEFgIGFuZCBzdG9yZXMgcmVtYWluaW5nIGxpbmVzCiAgICAgICAgICAgICBmcm9tIHRoZSBjbGllbnQgaW4gOmF0dHI6YHJlY2VpdmVkX2RhdGFgIHVudGlsIHRoZSB0ZXJtaW5hdG9yCiAgICAgICAgICAgICBgYCJcclxuLlxyXG4iYGAgaXMgcmVjZWl2ZWQuCisgICBIRUxQICAgICBSZXR1cm5zIG1pbmltYWwgaW5mb3JtYXRpb24gb24gY29tbWFuZCBzeW50YXgKKyAgIFZSRlkgICAgIFJldHVybnMgY29kZSAyNTIgKHRoZSBzZXJ2ZXIgZG9lc24ndCBrbm93IGlmIHRoZSBhZGRyZXNzIGlzIHZhbGlkKQorICAgRVhQTiAgICAgUmVwb3J0cyB0aGF0IHRoZSBjb21tYW5kIGlzIG5vdCBpbXBsZW1lbnRlZC4KICAgID09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKaW5kZXggNGE1MzlmYy4uNDBiMjU2MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKQEAgLTIwLDcgKzIwLDcgQEAKIFByb3RvY29sKSBhbmQgOnJmYzpgMTg2OWAgKFNNVFAgU2VydmljZSBFeHRlbnNpb25zKS4KIAogCi0uLiBjbGFzczo6IFNNVFAoaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lWywgdGltZW91dF0pCisuLiBjbGFzczo6IFNNVFAoaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lWywgdGltZW91dF0sIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIEEgOmNsYXNzOmBTTVRQYCBpbnN0YW5jZSBlbmNhcHN1bGF0ZXMgYW4gU01UUCBjb25uZWN0aW9uLiAgSXQgaGFzIG1ldGhvZHMKICAgIHRoYXQgc3VwcG9ydCBhIGZ1bGwgcmVwZXJ0b2lyZSBvZiBTTVRQIGFuZCBFU01UUCBvcGVyYXRpb25zLiBJZiB0aGUgb3B0aW9uYWwKQEAgLTI5LDE0ICsyOSwzNSBAQAogICAgcmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaG9zdCBkb2Vzbid0IHJlc3BvbmQgY29ycmVjdGx5LiBUaGUgb3B0aW9uYWwKICAgICp0aW1lb3V0KiBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvciBibG9ja2luZyBvcGVyYXRpb25zCiAgICBsaWtlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0Ci0gICBzZXR0aW5nIHdpbGwgYmUgdXNlZCkuCisgICBzZXR0aW5nIHdpbGwgYmUgdXNlZCkuIFRoZSBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIgYWxsb3dzIHRvIGJpbmQgdG8gc29tZQorICAgc3BlY2lmaWMgc291cmNlIGFkZHJlc3MgaW4gYSBtYWNoaW5lIHdpdGggbXVsdGlwbGUgbmV0d29yayBpbnRlcmZhY2VzLAorICAgYW5kL29yIHRvIHNvbWUgc3BlY2lmaWMgc291cmNlIFRDUCBwb3J0LiBJdCB0YWtlcyBhIDItdHVwbGUgKGhvc3QsIHBvcnQpLAorICAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuIElmCisgICBvbWl0dGVkIChvciBpZiBob3N0IG9yIHBvcnQgYXJlIGBgJydgYCBhbmQvb3IgMCByZXNwZWN0aXZlbHkpIHRoZSBPUyBkZWZhdWx0CisgICBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCiAKICAgIEZvciBub3JtYWwgdXNlLCB5b3Ugc2hvdWxkIG9ubHkgcmVxdWlyZSB0aGUgaW5pdGlhbGl6YXRpb24vY29ubmVjdCwKICAgIDptZXRoOmBzZW5kbWFpbGAsIGFuZCA6bWV0aDpgfnNtdHBsaWIucXVpdGAgbWV0aG9kcy4KICAgIEFuIGV4YW1wbGUgaXMgaW5jbHVkZWQgYmVsb3cuCiAKKyAgIFRoZSA6Y2xhc3M6YFNNVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgV2hlbiB1c2VkCisgICBsaWtlIHRoaXMsIHRoZSBTTVRQIGBgUVVJVGBgIGNvbW1hbmQgaXMgaXNzdWVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUKKyAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgZXhpdHMuICBFLmcuOjoKIAotLi4gY2xhc3M6OiBTTVRQX1NTTChob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZVssIHRpbWVvdXRdKQorICAgID4+PiBmcm9tIHNtdHBsaWIgaW1wb3J0IFNNVFAKKyAgICA+Pj4gd2l0aCBTTVRQKCJkb21haW4ub3JnIikgYXMgc210cDoKKyAgICAuLi4gICAgIHNtdHAubm9vcCgpCisgICAgLi4uCisgICAgKDI1MCwgYidPaycpCisgICAgPj4+CisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBzb3VyY2VfYWRkcmVzcyBhcmd1bWVudCB3YXMgYWRkZWQuCisKKy4uIGNsYXNzOjogU01UUF9TU0woaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmVbLCB0aW1lb3V0XSwgY29udGV4dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgU01UUF9TU0xgIGluc3RhbmNlIGJlaGF2ZXMgZXhhY3RseSB0aGUgc2FtZSBhcyBpbnN0YW5jZXMgb2YKICAgIDpjbGFzczpgU01UUGAuIDpjbGFzczpgU01UUF9TU0xgIHNob3VsZCBiZSB1c2VkIGZvciBzaXR1YXRpb25zIHdoZXJlIFNTTCBpcwpAQCAtNDQsMTggKzY1LDMzIEBACiAgICBub3QgYXBwcm9wcmlhdGUuIElmICpob3N0KiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbG9jYWwgaG9zdCBpcyB1c2VkLiBJZgogICAgKnBvcnQqIGlzIHplcm8sIHRoZSBzdGFuZGFyZCBTTVRQLW92ZXItU1NMIHBvcnQgKDQ2NSkgaXMgdXNlZC4gKmtleWZpbGUqCiAgICBhbmQgKmNlcnRmaWxlKiBhcmUgYWxzbyBvcHRpb25hbCwgYW5kIGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleQotICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4gVGhlIG9wdGlvbmFsICp0aW1lb3V0KgorICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4gKmNvbnRleHQqIGFsc28gb3B0aW9uYWwsIGNhbiBjb250YWluCisgICBhIFNTTENvbnRleHQsIGFuZCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBrZXlmaWxlIGFuZCBjZXJ0ZmlsZTsgSWYgaXQgaXMgc3BlY2lmaWVkIGJvdGgKKyAgIGtleWZpbGUgYW5kIGNlcnRmaWxlIG11c3QgYmUgTm9uZS4gIFRoZSBvcHRpb25hbCAqdGltZW91dCoKICAgIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIGJsb2NraW5nIG9wZXJhdGlvbnMgbGlrZSB0aGUKICAgIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgbm90IHNwZWNpZmllZCwgdGhlIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZwotICAgd2lsbCBiZSB1c2VkKS4KKyAgIHdpbGwgYmUgdXNlZCkuIFRoZSBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIgYWxsb3dzIHRvIGJpbmQgdG8gc29tZQorICAgc3BlY2lmaWMgc291cmNlIGFkZHJlc3MgaW4gYSBtYWNoaW5lIHdpdGggbXVsdGlwbGUgbmV0d29yayBpbnRlcmZhY2VzLAorICAgYW5kL29yIHRvIHNvbWUgc3BlY2lmaWMgc291cmNlIHRjcCBwb3J0LiBJdCB0YWtlcyBhIDItdHVwbGUgKGhvc3QsIHBvcnQpLAorICAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuIElmCisgICBvbWl0dGVkIChvciBpZiBob3N0IG9yIHBvcnQgYXJlIGBgJydgYCBhbmQvb3IgMCByZXNwZWN0aXZlbHkpIHRoZSBPUyBkZWZhdWx0CisgICBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqY29udGV4dCogd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgc291cmNlX2FkZHJlc3MgYXJndW1lbnQgd2FzIGFkZGVkLgogCiAKLS4uIGNsYXNzOjogTE1UUChob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSkKKy4uIGNsYXNzOjogTE1UUChob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgVGhlIExNVFAgcHJvdG9jb2wsIHdoaWNoIGlzIHZlcnkgc2ltaWxhciB0byBFU01UUCwgaXMgaGVhdmlseSBiYXNlZCBvbiB0aGUKLSAgIHN0YW5kYXJkIFNNVFAgY2xpZW50LiBJdCdzIGNvbW1vbiB0byB1c2UgVW5peCBzb2NrZXRzIGZvciBMTVRQLCBzbyBvdXIgOm1ldGg6YGNvbm5lY3RgCi0gICBtZXRob2QgbXVzdCBzdXBwb3J0IHRoYXQgYXMgd2VsbCBhcyBhIHJlZ3VsYXIgaG9zdDpwb3J0IHNlcnZlci4gVG8gc3BlY2lmeSBhCi0gICBVbml4IHNvY2tldCwgeW91IG11c3QgdXNlIGFuIGFic29sdXRlIHBhdGggZm9yICpob3N0Kiwgc3RhcnRpbmcgd2l0aCBhICcvJy4KKyAgIHN0YW5kYXJkIFNNVFAgY2xpZW50LiBJdCdzIGNvbW1vbiB0byB1c2UgVW5peCBzb2NrZXRzIGZvciBMTVRQLCBzbyBvdXIKKyAgIDptZXRoOmBjb25uZWN0YCBtZXRob2QgbXVzdCBzdXBwb3J0IHRoYXQgYXMgd2VsbCBhcyBhIHJlZ3VsYXIgaG9zdDpwb3J0CisgICBzZXJ2ZXIuIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgbG9jYWxfaG9zdG5hbWUgYW5kIHNvdXJjZV9hZGRyZXNzIGhhdmUgdGhlCisgICBzYW1lIG1lYW5pbmcgYXMgdGhhdCBvZiBTTVRQIGNsaWVudC4gVG8gc3BlY2lmeSBhIFVuaXggc29ja2V0LCB5b3UgbXVzdCB1c2UKKyAgIGFuIGFic29sdXRlIHBhdGggZm9yICpob3N0Kiwgc3RhcnRpbmcgd2l0aCBhICcvJy4KIAogICAgQXV0aGVudGljYXRpb24gaXMgc3VwcG9ydGVkLCB1c2luZyB0aGUgcmVndWxhciBTTVRQIG1lY2hhbmlzbS4gV2hlbiB1c2luZyBhIFVuaXgKICAgIHNvY2tldCwgTE1UUCBnZW5lcmFsbHkgZG9uJ3Qgc3VwcG9ydCBvciByZXF1aXJlIGFueSBhdXRoZW50aWNhdGlvbiwgYnV0IHlvdXIKQEAgLTI0Myw3ICsyNzksNyBAQAogICAgICAgTm8gc3VpdGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kIHdhcyBmb3VuZC4KIAogCi0uLiBtZXRob2Q6OiBTTVRQLnN0YXJ0dGxzKGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSkKKy4uIG1ldGhvZDo6IFNNVFAuc3RhcnR0bHMoa2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpCiAKICAgIFB1dCB0aGUgU01UUCBjb25uZWN0aW9uIGluIFRMUyAoVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5KSBtb2RlLiAgQWxsIFNNVFAKICAgIGNvbW1hbmRzIHRoYXQgZm9sbG93IHdpbGwgYmUgZW5jcnlwdGVkLiAgWW91IHNob3VsZCB0aGVuIGNhbGwgOm1ldGg6YGVobG9gCkBAIC0yNTIsNiArMjg4LDkgQEAKICAgIElmICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgcHJvdmlkZWQsIHRoZXNlIGFyZSBwYXNzZWQgdG8gdGhlIDptb2Q6YHNvY2tldGAKICAgIG1vZHVsZSdzIDpmdW5jOmBzc2xgIGZ1bmN0aW9uLgogCisgICBPcHRpb25hbCAqY29udGV4dCogcGFyYW1ldGVyIGlzIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0OyBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIHRvCisgICB1c2luZyBhIGtleWZpbGUgYW5kIGEgY2VydGZpbGUgYW5kIGlmIHNwZWNpZmllZCBib3RoICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBzaG91bGQgYmUgTm9uZS4KKwogICAgSWYgdGhlcmUgaGFzIGJlZW4gbm8gcHJldmlvdXMgYGBFSExPYGAgb3IgYGBIRUxPYGAgY29tbWFuZCB0aGlzIHNlc3Npb24sCiAgICB0aGlzIG1ldGhvZCB0cmllcyBFU01UUCBgYEVITE9gYCBmaXJzdC4KIApAQCAtMjY0LDYgKzMwMyw5IEBACiAgICA6ZXhjOmBSdW50aW1lRXJyb3JgCiAgICAgIFNTTC9UTFMgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlIHRvIHlvdXIgUHl0aG9uIGludGVycHJldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBTTVRQLnNlbmRtYWlsKGZyb21fYWRkciwgdG9fYWRkcnMsIG1zZywgbWFpbF9vcHRpb25zPVtdLCByY3B0X29wdGlvbnM9W10pCiAKQEAgLTMyMSw3ICszNjMsOCBAQAogICAgVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBvcGVuIGV2ZW4gYWZ0ZXIgYW4gZXhjZXB0aW9uIGlzCiAgICByYWlzZWQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yICptc2cqIG1heSBiZSBhIGJ5dGUgc3RyaW5nLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICptc2cqIG1heSBiZSBhIGJ5dGUgc3RyaW5nLgogCiAKIC4uIG1ldGhvZDo6IFNNVFAuc2VuZF9tZXNzYWdlKG1zZywgZnJvbV9hZGRyPU5vbmUsIHRvX2FkZHJzPU5vbmUsIFwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDM0NGEyOWYuLjU3MzdiNDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtNDAsOSArNDAsMjMgQEAKIERlcGVuZGluZyBvbiB0aGUgc3lzdGVtIGFuZCB0aGUgYnVpbGQgb3B0aW9ucywgdmFyaW91cyBzb2NrZXQgZmFtaWxpZXMKIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuCiAKLVNvY2tldCBhZGRyZXNzZXMgYXJlIHJlcHJlc2VudGVkIGFzIGZvbGxvd3M6CitUaGUgYWRkcmVzcyBmb3JtYXQgcmVxdWlyZWQgYnkgYSBwYXJ0aWN1bGFyIHNvY2tldCBvYmplY3QgaXMgYXV0b21hdGljYWxseQorc2VsZWN0ZWQgYmFzZWQgb24gdGhlIGFkZHJlc3MgZmFtaWx5IHNwZWNpZmllZCB3aGVuIHRoZSBzb2NrZXQgb2JqZWN0IHdhcworY3JlYXRlZC4gIFNvY2tldCBhZGRyZXNzZXMgYXJlIHJlcHJlc2VudGVkIGFzIGZvbGxvd3M6CiAKLS0gQSBzaW5nbGUgc3RyaW5nIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX1VOSVhgIGFkZHJlc3MgZmFtaWx5LgorLSBUaGUgYWRkcmVzcyBvZiBhbiA6Y29uc3Q6YEFGX1VOSVhgIHNvY2tldCBib3VuZCB0byBhIGZpbGUgc3lzdGVtIG5vZGUKKyAgaXMgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcsIHVzaW5nIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBhbmQgdGhlCisgIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyIChzZWUgOnBlcDpgMzgzYCkuICBBbiBhZGRyZXNzIGluCisgIExpbnV4J3MgYWJzdHJhY3QgbmFtZXNwYWNlIGlzIHJldHVybmVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IHdpdGgKKyAgYW4gaW5pdGlhbCBudWxsIGJ5dGU7IG5vdGUgdGhhdCBzb2NrZXRzIGluIHRoaXMgbmFtZXNwYWNlIGNhbgorICBjb21tdW5pY2F0ZSB3aXRoIG5vcm1hbCBmaWxlIHN5c3RlbSBzb2NrZXRzLCBzbyBwcm9ncmFtcyBpbnRlbmRlZCB0bworICBydW4gb24gTGludXggbWF5IG5lZWQgdG8gZGVhbCB3aXRoIGJvdGggdHlwZXMgb2YgYWRkcmVzcy4gIEEgc3RyaW5nIG9yCisgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBjYW4gYmUgdXNlZCBmb3IgZWl0aGVyIHR5cGUgb2YgYWRkcmVzcyB3aGVuCisgIHBhc3NpbmcgaXQgYXMgYW4gYXJndW1lbnQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBQcmV2aW91c2x5LCA6Y29uc3Q6YEFGX1VOSVhgIHNvY2tldCBwYXRocyB3ZXJlIGFzc3VtZWQgdG8gdXNlIFVURi04CisgICAgICBlbmNvZGluZy4KIAogLSBBIHBhaXIgYGAoaG9zdCwgcG9ydClgYCBpcyB1c2VkIGZvciB0aGUgOmNvbnN0OmBBRl9JTkVUYCBhZGRyZXNzIGZhbWlseSwKICAgd2hlcmUgKmhvc3QqIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyBlaXRoZXIgYSBob3N0bmFtZSBpbiBJbnRlcm5ldCBkb21haW4KQEAgLTgwLDYgKzk0LDE5IEBACiAgICAgSWYgKmFkZHJfdHlwZSogaXMgOmNvbnN0OmBUSVBDX0FERFJfSURgLCB0aGVuICp2MSogaXMgdGhlIG5vZGUsICp2MiogaXMgdGhlCiAgICAgcmVmZXJlbmNlLCBhbmQgKnYzKiBzaG91bGQgYmUgc2V0IHRvIDAuCiAKKy0gQSB0dXBsZSBgYChpbnRlcmZhY2UsIClgYCBpcyB1c2VkIGZvciB0aGUgOmNvbnN0OmBBRl9DQU5gIGFkZHJlc3MgZmFtaWx5LAorICB3aGVyZSAqaW50ZXJmYWNlKiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGxpa2UKKyAgYGAnY2FuMCdgYC4gVGhlIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWUgYGAnJ2BgIGNhbiBiZSB1c2VkIHRvIHJlY2VpdmUgcGFja2V0cworICBmcm9tIGFsbCBuZXR3b3JrIGludGVyZmFjZXMgb2YgdGhpcyBmYW1pbHkuCisKKy0gQSBzdHJpbmcgb3IgYSB0dXBsZSBgYChpZCwgdW5pdClgYCBpcyB1c2VkIGZvciB0aGUgOmNvbnN0OmBTWVNQUk9UT19DT05UUk9MYAorICBwcm90b2NvbCBvZiB0aGUgOmNvbnN0OmBQRl9TWVNURU1gIGZhbWlseS4gVGhlIHN0cmluZyBpcyB0aGUgbmFtZSBvZiBhCisgIGtlcm5lbCBjb250cm9sIHVzaW5nIGEgZHluYW1pY2FsbHktYXNzaWduZWQgSUQuIFRoZSB0dXBsZSBjYW4gYmUgdXNlZCBpZiBJRAorICBhbmQgdW5pdCBudW1iZXIgb2YgdGhlIGtlcm5lbCBjb250cm9sIGFyZSBrbm93biBvciBpZiBhIHJlZ2lzdGVyZWQgSUQgaXMKKyAgdXNlZC4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLSBDZXJ0YWluIG90aGVyIGFkZHJlc3MgZmFtaWxpZXMgKDpjb25zdDpgQUZfQkxVRVRPT1RIYCwgOmNvbnN0OmBBRl9QQUNLRVRgKQogICBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KIApAQCAtOTksOCArMTI2LDkgQEAKIG51bWVyaWMgYWRkcmVzcyBpbiAqaG9zdCogcG9ydGlvbi4KIAogQWxsIGVycm9ycyByYWlzZSBleGNlcHRpb25zLiAgVGhlIG5vcm1hbCBleGNlcHRpb25zIGZvciBpbnZhbGlkIGFyZ3VtZW50IHR5cGVzCi1hbmQgb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zIGNhbiBiZSByYWlzZWQ7IGVycm9ycyByZWxhdGVkIHRvIHNvY2tldCBvciBhZGRyZXNzCi1zZW1hbnRpY3MgcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCithbmQgb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zIGNhbiBiZSByYWlzZWQ7IHN0YXJ0aW5nIGZyb20gUHl0aG9uIDMuMywgZXJyb3JzCityZWxhdGVkIHRvIHNvY2tldCBvciBhZGRyZXNzIHNlbWFudGljcyByYWlzZSA6ZXhjOmBPU0Vycm9yYCBvciBvbmUgb2YgaXRzCitzdWJjbGFzc2VzICh0aGV5IHVzZWQgdG8gcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCkuCiAKIE5vbi1ibG9ja2luZyBtb2RlIGlzIHN1cHBvcnRlZCB0aHJvdWdoIDptZXRoOmB+c29ja2V0LnNldGJsb2NraW5nYC4gIEEKIGdlbmVyYWxpemF0aW9uIG9mIHRoaXMgYmFzZWQgb24gdGltZW91dHMgaXMgc3VwcG9ydGVkIHRocm91Z2gKQEAgLTExNSwyMCArMTQzLDE1IEBACiAKIC4uIGV4Y2VwdGlvbjo6IGVycm9yCiAKLSAgIC4uIGluZGV4OjogbW9kdWxlOiBlcnJubworICAgQSBkZXByZWNhdGVkIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCi0gICBBIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZm9yIHNvY2tldC1yZWxhdGVkCi0gICBlcnJvcnMuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBpbnNwZWN0IGl0cyBgYGVycm5vYGAgYXR0cmlidXRlIHRvCi0gICBkaXNjcmltaW5hdGUgYmV0d2VlbiBkaWZmZXJlbnQga2luZHMgb2YgZXJyb3JzLgotCi0gICAuLiBzZWVhbHNvOjoKLSAgICAgIFRoZSA6bW9kOmBlcnJub2AgbW9kdWxlIGNvbnRhaW5zIHN5bWJvbGljIG5hbWVzIGZvciB0aGUgZXJyb3IgY29kZXMKLSAgICAgIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBGb2xsb3dpbmcgOnBlcDpgMzE1MWAsIHRoaXMgY2xhc3Mgd2FzIG1hZGUgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gZXhjZXB0aW9uOjogaGVycm9yCiAKLSAgIEEgc3ViY2xhc3Mgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgorICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgogICAgYWRkcmVzcy1yZWxhdGVkIGVycm9ycywgaS5lLiBmb3IgZnVuY3Rpb25zIHRoYXQgdXNlICpoX2Vycm5vKiBpbiB0aGUgUE9TSVgKICAgIEMgQVBJLCBpbmNsdWRpbmcgOmZ1bmM6YGdldGhvc3RieW5hbWVfZXhgIGFuZCA6ZnVuYzpgZ2V0aG9zdGJ5YWRkcmAuCiAgICBUaGUgYWNjb21wYW55aW5nIHZhbHVlIGlzIGEgcGFpciBgYChoX2Vycm5vLCBzdHJpbmcpYGAgcmVwcmVzZW50aW5nIGFuCkBAIC0xMzYsMTAgKzE1OSwxMiBAQAogICAgKnN0cmluZyogcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24gb2YgKmhfZXJybm8qLCBhcyByZXR1cm5lZCBieSB0aGUKICAgIDpjOmZ1bmM6YGhzdHJlcnJvcmAgQyBmdW5jdGlvbi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgY2xhc3Mgd2FzIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogLi4gZXhjZXB0aW9uOjogZ2FpZXJyb3IKIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZm9yCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgZm9yCiAgICBhZGRyZXNzLXJlbGF0ZWQgZXJyb3JzIGJ5IDpmdW5jOmBnZXRhZGRyaW5mb2AgYW5kIDpmdW5jOmBnZXRuYW1laW5mb2AuCiAgICBUaGUgYWNjb21wYW55aW5nIHZhbHVlIGlzIGEgcGFpciBgYChlcnJvciwgc3RyaW5nKWBgIHJlcHJlc2VudGluZyBhbiBlcnJvcgogICAgcmV0dXJuZWQgYnkgYSBsaWJyYXJ5IGNhbGwuICAqc3RyaW5nKiByZXByZXNlbnRzIHRoZSBkZXNjcmlwdGlvbiBvZgpAQCAtMTQ3LDE1ICsxNzIsMTkgQEAKICAgIG51bWVyaWMgKmVycm9yKiB2YWx1ZSB3aWxsIG1hdGNoIG9uZSBvZiB0aGUgOmNvbnN0OmBFQUlfXCpgIGNvbnN0YW50cwogICAgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgY2xhc3Mgd2FzIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogLi4gZXhjZXB0aW9uOjogdGltZW91dAogCi0gICBBIHN1YmNsYXNzIG9mIDpleGM6YHNvY2tldC5lcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgdGltZW91dAorICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSB0aW1lb3V0CiAgICBvY2N1cnMgb24gYSBzb2NrZXQgd2hpY2ggaGFzIGhhZCB0aW1lb3V0cyBlbmFibGVkIHZpYSBhIHByaW9yIGNhbGwgdG8KICAgIDptZXRoOmB+c29ja2V0LnNldHRpbWVvdXRgIChvciBpbXBsaWNpdGx5IHRocm91Z2gKICAgIDpmdW5jOmB+c29ja2V0LnNldGRlZmF1bHR0aW1lb3V0YCkuICBUaGUgYWNjb21wYW55aW5nIHZhbHVlIGlzIGEgc3RyaW5nCiAgICB3aG9zZSB2YWx1ZSBpcyBjdXJyZW50bHkgYWx3YXlzICJ0aW1lZCBvdXQiLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBjbGFzcyB3YXMgbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAuLiBkYXRhOjogQUZfVU5JWAogICAgICAgICAgIEFGX0lORVQKQEAgLTE5OCw2ICsyMjcsNyBAQAogICAgICAgICAgIFNPTUFYQ09OTgogICAgICAgICAgIE1TR18qCiAgICAgICAgICAgU09MXyoKKyAgICAgICAgICBTQ01fKgogICAgICAgICAgIElQUFJPVE9fKgogICAgICAgICAgIElQUE9SVF8qCiAgICAgICAgICAgSU5BRERSXyoKQEAgLTIxNSw2ICsyNDUsMzIgQEAKICAgIGluIHRoZSBVbml4IGhlYWRlciBmaWxlcyBhcmUgZGVmaW5lZDsgZm9yIGEgZmV3IHN5bWJvbHMsIGRlZmF1bHQgdmFsdWVzIGFyZQogICAgcHJvdmlkZWQuCiAKKy4uIGRhdGE6OiBBRl9DQU4KKyAgICAgICAgICBQRl9DQU4KKyAgICAgICAgICBTT0xfQ0FOXyoKKyAgICAgICAgICBDQU5fKgorCisgICBNYW55IGNvbnN0YW50cyBvZiB0aGVzZSBmb3JtcywgZG9jdW1lbnRlZCBpbiB0aGUgTGludXggZG9jdW1lbnRhdGlvbiwgYXJlCisgICBhbHNvIGRlZmluZWQgaW4gdGhlIHNvY2tldCBtb2R1bGUuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjI1LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQUZfUkRTCisgICAgICAgICAgUEZfUkRTCisgICAgICAgICAgU09MX1JEUworICAgICAgICAgIFJEU18qCisKKyAgIE1hbnkgY29uc3RhbnRzIG9mIHRoZXNlIGZvcm1zLCBkb2N1bWVudGVkIGluIHRoZSBMaW51eCBkb2N1bWVudGF0aW9uLCBhcmUKKyAgIGFsc28gZGVmaW5lZCBpbiB0aGUgc29ja2V0IG1vZHVsZS4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCA+PSAyLjYuMzAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGRhdGE6OiBTSU9fKgogICAgICAgICAgIFJDVkFMTF8qCiAKQEAgLTM5MywxMCArNDQ5LDE1IEBACiAKICAgIENyZWF0ZSBhIG5ldyBzb2NrZXQgdXNpbmcgdGhlIGdpdmVuIGFkZHJlc3MgZmFtaWx5LCBzb2NrZXQgdHlwZSBhbmQgcHJvdG9jb2wKICAgIG51bWJlci4gIFRoZSBhZGRyZXNzIGZhbWlseSBzaG91bGQgYmUgOmNvbnN0OmBBRl9JTkVUYCAodGhlIGRlZmF1bHQpLAotICAgOmNvbnN0OmBBRl9JTkVUNmAgb3IgOmNvbnN0OmBBRl9VTklYYC4gIFRoZSBzb2NrZXQgdHlwZSBzaG91bGQgYmUKLSAgIDpjb25zdDpgU09DS19TVFJFQU1gICh0aGUgZGVmYXVsdCksIDpjb25zdDpgU09DS19ER1JBTWAgb3IgcGVyaGFwcyBvbmUgb2YgdGhlCi0gICBvdGhlciBgYFNPQ0tfYGAgY29uc3RhbnRzLiAgVGhlIHByb3RvY29sIG51bWJlciBpcyB1c3VhbGx5IHplcm8gYW5kIG1heSBiZQotICAgb21pdHRlZCBpbiB0aGF0IGNhc2UuCisgICA6Y29uc3Q6YEFGX0lORVQ2YCwgOmNvbnN0OmBBRl9VTklYYCwgOmNvbnN0OmBBRl9DQU5gIG9yIDpjb25zdDpgQUZfUkRTYC4gVGhlCisgICBzb2NrZXQgdHlwZSBzaG91bGQgYmUgOmNvbnN0OmBTT0NLX1NUUkVBTWAgKHRoZSBkZWZhdWx0KSwKKyAgIDpjb25zdDpgU09DS19ER1JBTWAsIDpjb25zdDpgU09DS19SQVdgIG9yIHBlcmhhcHMgb25lIG9mIHRoZSBvdGhlciBgYFNPQ0tfYGAKKyAgIGNvbnN0YW50cy4gVGhlIHByb3RvY29sIG51bWJlciBpcyB1c3VhbGx5IHplcm8gYW5kIG1heSBiZSBvbWl0dGVkIGluIHRoYXQKKyAgIGNhc2Ugb3IgOmNvbnN0OmBDQU5fUkFXYCBpbiBjYXNlIHRoZSBhZGRyZXNzIGZhbWlseSBpcyA6Y29uc3Q6YEFGX0NBTmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgQUZfQ0FOIGZhbWlseSB3YXMgYWRkZWQuCisgICAgICBUaGUgQUZfUkRTIGZhbWlseSB3YXMgYWRkZWQuCiAKIAogLi4gZnVuY3Rpb246OiBzb2NrZXRwYWlyKFtmYW1pbHlbLCB0eXBlWywgcHJvdG9dXV0pCkBAIC00NjQsNyArNTI1LDcgQEAKICAgIFVuaXggbWFudWFsIHBhZ2UgOm1hbnBhZ2U6YGluZXQoMylgIGZvciBkZXRhaWxzLgogCiAgICBJZiB0aGUgSVB2NCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpcyBpbnZhbGlkLAotICAgOmV4Yzpgc29ja2V0LmVycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCiAgICB0aGUgdW5kZXJseWluZyBDIGltcGxlbWVudGF0aW9uIG9mIDpjOmZ1bmM6YGluZXRfYXRvbmAuCiAKICAgIDpmdW5jOmBpbmV0X2F0b25gIGRvZXMgbm90IHN1cHBvcnQgSVB2NiwgYW5kIDpmdW5jOmBpbmV0X3B0b25gIHNob3VsZCBiZSB1c2VkCkBAIC00ODEsNyArNTQyLDcgQEAKICAgIGFyZ3VtZW50LgogCiAgICBJZiB0aGUgYnl0ZSBzZXF1ZW5jZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpcyBub3QgZXhhY3RseSA0IGJ5dGVzIGluCi0gICBsZW5ndGgsIDpleGM6YHNvY2tldC5lcnJvcmAgd2lsbCBiZSByYWlzZWQuIDpmdW5jOmBpbmV0X250b2FgIGRvZXMgbm90CisgICBsZW5ndGgsIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiA6ZnVuYzpgaW5ldF9udG9hYCBkb2VzIG5vdAogICAgc3VwcG9ydCBJUHY2LCBhbmQgOmZ1bmM6YGluZXRfbnRvcGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBmb3IgSVB2NC92NiBkdWFsCiAgICBzdGFjayBzdXBwb3J0LgogCkBAIC00OTUsNyArNTU2LDcgQEAKIAogICAgU3VwcG9ydGVkIHZhbHVlcyBmb3IgKmFkZHJlc3NfZmFtaWx5KiBhcmUgY3VycmVudGx5IDpjb25zdDpgQUZfSU5FVGAgYW5kCiAgICA6Y29uc3Q6YEFGX0lORVQ2YC4gSWYgdGhlIElQIGFkZHJlc3Mgc3RyaW5nICppcF9zdHJpbmcqIGlzIGludmFsaWQsCi0gICA6ZXhjOmBzb2NrZXQuZXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBOb3RlIHRoYXQgZXhhY3RseSB3aGF0IGlzIHZhbGlkIGRlcGVuZHMgb24KKyAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBOb3RlIHRoYXQgZXhhY3RseSB3aGF0IGlzIHZhbGlkIGRlcGVuZHMgb24KICAgIGJvdGggdGhlIHZhbHVlIG9mICphZGRyZXNzX2ZhbWlseSogYW5kIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIG9mCiAgICA6YzpmdW5jOmBpbmV0X3B0b25gLgogCkBAIC01MTMsMTEgKzU3NCw1NCBAQAogICAgU3VwcG9ydGVkIHZhbHVlcyBmb3IgKmFkZHJlc3NfZmFtaWx5KiBhcmUgY3VycmVudGx5IDpjb25zdDpgQUZfSU5FVGAgYW5kCiAgICA6Y29uc3Q6YEFGX0lORVQ2YC4gSWYgdGhlIHN0cmluZyAqcGFja2VkX2lwKiBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIGZvciB0aGUKICAgIHNwZWNpZmllZCBhZGRyZXNzIGZhbWlseSwgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBCi0gICA6ZXhjOmBzb2NrZXQuZXJyb3JgIGlzIHJhaXNlZCBmb3IgZXJyb3JzIGZyb20gdGhlIGNhbGwgdG8gOmZ1bmM6YGluZXRfbnRvcGAuCisgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgZm9yIGVycm9ycyBmcm9tIHRoZSBjYWxsIHRvIDpmdW5jOmBpbmV0X250b3BgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXggKG1heWJlIG5vdCBhbGwgcGxhdGZvcm1zKS4KIAogCisuLgorICAgWFhYOiBBcmUgc2VuZG1zZygpLCByZWN2bXNnKCkgYW5kIENNU0dfKigpIGF2YWlsYWJsZSBvbiBhbnkKKyAgIG5vbi1Vbml4IHBsYXRmb3Jtcz8gIFRoZSBvbGQgKG9ic29sZXRlPykgNC4yQlNEIGZvcm0gb2YgdGhlCisgICBpbnRlcmZhY2UsIGluIHdoaWNoIHN0cnVjdCBtc2doZHIgaGFzIG5vIG1zZ19jb250cm9sIG9yCisgICBtc2dfY29udHJvbGxlbiBtZW1iZXJzLCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKworLi4gZnVuY3Rpb246OiBDTVNHX0xFTihsZW5ndGgpCisKKyAgIFJldHVybiB0aGUgdG90YWwgbGVuZ3RoLCB3aXRob3V0IHRyYWlsaW5nIHBhZGRpbmcsIG9mIGFuIGFuY2lsbGFyeQorICAgZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiAqbGVuZ3RoKi4gIFRoaXMgdmFsdWUKKyAgIGNhbiBvZnRlbiBiZSB1c2VkIGFzIHRoZSBidWZmZXIgc2l6ZSBmb3IgOm1ldGg6YH5zb2NrZXQucmVjdm1zZ2AgdG8KKyAgIHJlY2VpdmUgYSBzaW5nbGUgaXRlbSBvZiBhbmNpbGxhcnkgZGF0YSwgYnV0IDpyZmM6YDM1NDJgIHJlcXVpcmVzCisgICBwb3J0YWJsZSBhcHBsaWNhdGlvbnMgdG8gdXNlIDpmdW5jOmBDTVNHX1NQQUNFYCBhbmQgdGh1cyBpbmNsdWRlCisgICBzcGFjZSBmb3IgcGFkZGluZywgZXZlbiB3aGVuIHRoZSBpdGVtIHdpbGwgYmUgdGhlIGxhc3QgaW4gdGhlCisgICBidWZmZXIuICBSYWlzZXMgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaWYgKmxlbmd0aCogaXMgb3V0c2lkZSB0aGUKKyAgIHBlcm1pc3NpYmxlIHJhbmdlIG9mIHZhbHVlcy4KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogQ01TR19TUEFDRShsZW5ndGgpCisKKyAgIFJldHVybiB0aGUgYnVmZmVyIHNpemUgbmVlZGVkIGZvciA6bWV0aDpgfnNvY2tldC5yZWN2bXNnYCB0bworICAgcmVjZWl2ZSBhbiBhbmNpbGxhcnkgZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbgorICAgKmxlbmd0aCosIGFsb25nIHdpdGggYW55IHRyYWlsaW5nIHBhZGRpbmcuICBUaGUgYnVmZmVyIHNwYWNlIG5lZWRlZAorICAgdG8gcmVjZWl2ZSBtdWx0aXBsZSBpdGVtcyBpcyB0aGUgc3VtIG9mIHRoZSA6ZnVuYzpgQ01TR19TUEFDRWAKKyAgIHZhbHVlcyBmb3IgdGhlaXIgYXNzb2NpYXRlZCBkYXRhIGxlbmd0aHMuICBSYWlzZXMKKyAgIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmICpsZW5ndGgqIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIHJhbmdlCisgICBvZiB2YWx1ZXMuCisKKyAgIE5vdGUgdGhhdCBzb21lIHN5c3RlbXMgbWlnaHQgc3VwcG9ydCBhbmNpbGxhcnkgZGF0YSB3aXRob3V0CisgICBwcm92aWRpbmcgdGhpcyBmdW5jdGlvbi4gIEFsc28gbm90ZSB0aGF0IHNldHRpbmcgdGhlIGJ1ZmZlciBzaXplCisgICB1c2luZyB0aGUgcmVzdWx0cyBvZiB0aGlzIGZ1bmN0aW9uIG1heSBub3QgcHJlY2lzZWx5IGxpbWl0IHRoZQorICAgYW1vdW50IG9mIGFuY2lsbGFyeSBkYXRhIHRoYXQgY2FuIGJlIHJlY2VpdmVkLCBzaW5jZSBhZGRpdGlvbmFsCisgICBkYXRhIG1heSBiZSBhYmxlIHRvIGZpdCBpbnRvIHRoZSBwYWRkaW5nIGFyZWEuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdldGRlZmF1bHR0aW1lb3V0KCkKIAogICAgUmV0dXJuIHRoZSBkZWZhdWx0IHRpbWVvdXQgaW4gc2Vjb25kcyAoZmxvYXQpIGZvciBuZXcgc29ja2V0IG9iamVjdHMuIEEgdmFsdWUKQEAgLTUzMyw2ICs2MzcsNTkgQEAKICAgIG1lYW5pbmdzLgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0aG9zdG5hbWUobmFtZSkKKworICAgU2V0IHRoZSBtYWNoaW5lJ3MgaG9zdG5hbWUgdG8gKm5hbWUqLiAgVGhpcyB3aWxsIHJhaXNlIGEKKyAgIDpleGM6YE9TRXJyb3JgIGlmIHlvdSBkb24ndCBoYXZlIGVub3VnaCByaWdodHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBpZl9uYW1laW5kZXgoKQorCisgICBSZXR1cm4gYSBsaXN0IG9mIG5ldHdvcmsgaW50ZXJmYWNlIGluZm9ybWF0aW9uCisgICAoaW5kZXggaW50LCBuYW1lIHN0cmluZykgdHVwbGVzLgorICAgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIHN5c3RlbSBjYWxsIGZhaWxzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogaWZfbmFtZXRvaW5kZXgoaWZfbmFtZSkKKworICAgUmV0dXJuIGEgbmV0d29yayBpbnRlcmZhY2UgaW5kZXggbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gYW4KKyAgIGludGVyZmFjZSBuYW1lLgorICAgOmV4YzpgT1NFcnJvcmAgaWYgbm8gaW50ZXJmYWNlIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogaWZfaW5kZXh0b25hbWUoaWZfaW5kZXgpCisKKyAgIFJldHVybiBhIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWUgY29ycmVzcG9uZGluZyB0byBhCisgICBpbnRlcmZhY2UgaW5kZXggbnVtYmVyLgorICAgOmV4YzpgT1NFcnJvcmAgaWYgbm8gaW50ZXJmYWNlIHdpdGggdGhlIGdpdmVuIGluZGV4IGV4aXN0cy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGZyb21zaGFyZShkYXRhKQorCisgICBJbnN0YW50aWF0ZSBhIHNvY2tldCBmcm9tIGRhdGEgb2J0YWluZWQgZnJvbSA6bWV0aDpgfnNvY2tldC5zaGFyZWAuCisgICBUaGUgc29ja2V0IGlzIGFzc3VtZWQgdG8gYmUgaW4gYmxvY2tpbmcgbW9kZS4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogU29ja2V0VHlwZQogCiAgICBUaGlzIGlzIGEgUHl0aG9uIHR5cGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgc29ja2V0IG9iamVjdCB0eXBlLiBJdCBpcyB0aGUKQEAgLTcwNiw2ICs4NjMsMTA5IEBACiAgICB0byB6ZXJvLiAoVGhlIGZvcm1hdCBvZiAqYWRkcmVzcyogZGVwZW5kcyBvbiB0aGUgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZSBhYm92ZS4pCiAKIAorLi4gbWV0aG9kOjogc29ja2V0LnJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQorCisgICBSZWNlaXZlIG5vcm1hbCBkYXRhICh1cCB0byAqYnVmc2l6ZSogYnl0ZXMpIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tCisgICB0aGUgc29ja2V0LiAgVGhlICphbmNidWZzaXplKiBhcmd1bWVudCBzZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mCisgICB0aGUgaW50ZXJuYWwgYnVmZmVyIHVzZWQgdG8gcmVjZWl2ZSB0aGUgYW5jaWxsYXJ5IGRhdGE7IGl0IGRlZmF1bHRzCisgICB0byAwLCBtZWFuaW5nIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgd2lsbCBiZSByZWNlaXZlZC4gIEFwcHJvcHJpYXRlCisgICBidWZmZXIgc2l6ZXMgZm9yIGFuY2lsbGFyeSBkYXRhIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nCisgICA6ZnVuYzpgQ01TR19TUEFDRWAgb3IgOmZ1bmM6YENNU0dfTEVOYCwgYW5kIGl0ZW1zIHdoaWNoIGRvIG5vdCBmaXQKKyAgIGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZSB0cnVuY2F0ZWQgb3IgZGlzY2FyZGVkLiAgVGhlICpmbGFncyoKKyAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgOm1ldGg6YHJlY3ZgLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogYGAoZGF0YSwgYW5jZGF0YSwgbXNnX2ZsYWdzLAorICAgYWRkcmVzcylgYC4gIFRoZSAqZGF0YSogaXRlbSBpcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBob2xkaW5nIHRoZQorICAgbm9uLWFuY2lsbGFyeSBkYXRhIHJlY2VpdmVkLiAgVGhlICphbmNkYXRhKiBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvCisgICBvciBtb3JlIHR1cGxlcyBgYChjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSlgYCByZXByZXNlbnRpbmcKKyAgIHRoZSBhbmNpbGxhcnkgZGF0YSAoY29udHJvbCBtZXNzYWdlcykgcmVjZWl2ZWQ6ICpjbXNnX2xldmVsKiBhbmQKKyAgICpjbXNnX3R5cGUqIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBsZXZlbCBhbmQKKyAgIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LCBhbmQgKmNtc2dfZGF0YSogaXMgYQorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWQgZGF0YS4gIFRoZSAqbXNnX2ZsYWdzKgorICAgaXRlbSBpcyB0aGUgYml0d2lzZSBPUiBvZiB2YXJpb3VzIGZsYWdzIGluZGljYXRpbmcgY29uZGl0aW9ucyBvbgorICAgdGhlIHJlY2VpdmVkIG1lc3NhZ2U7IHNlZSB5b3VyIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorICAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsICphZGRyZXNzKiBpcyB0aGUgYWRkcmVzcyBvZgorICAgdGhlIHNlbmRpbmcgc29ja2V0LCBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSwgaXRzIHZhbHVlIGlzCisgICB1bnNwZWNpZmllZC4KKworICAgT24gc29tZSBzeXN0ZW1zLCA6bWV0aDpgc2VuZG1zZ2AgYW5kIDptZXRoOmByZWN2bXNnYCBjYW4gYmUgdXNlZCB0bworICAgcGFzcyBmaWxlIGRlc2NyaXB0b3JzIGJldHdlZW4gcHJvY2Vzc2VzIG92ZXIgYW4gOmNvbnN0OmBBRl9VTklYYAorICAgc29ja2V0LiAgV2hlbiB0aGlzIGZhY2lsaXR5IGlzIHVzZWQgKGl0IGlzIG9mdGVuIHJlc3RyaWN0ZWQgdG8KKyAgIDpjb25zdDpgU09DS19TVFJFQU1gIHNvY2tldHMpLCA6bWV0aDpgcmVjdm1zZ2Agd2lsbCByZXR1cm4sIGluIGl0cworICAgYW5jaWxsYXJ5IGRhdGEsIGl0ZW1zIG9mIHRoZSBmb3JtIGBgKHNvY2tldC5TT0xfU09DS0VULAorICAgc29ja2V0LlNDTV9SSUdIVFMsIGZkcylgYCwgd2hlcmUgKmZkcyogaXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QKKyAgIHJlcHJlc2VudGluZyB0aGUgbmV3IGZpbGUgZGVzY3JpcHRvcnMgYXMgYSBiaW5hcnkgYXJyYXkgb2YgdGhlCisgICBuYXRpdmUgQyA6Yzp0eXBlOmBpbnRgIHR5cGUuICBJZiA6bWV0aDpgcmVjdm1zZ2AgcmFpc2VzIGFuCisgICBleGNlcHRpb24gYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsIHJldHVybnMsIGl0IHdpbGwgZmlyc3QgYXR0ZW1wdCB0bworICAgY2xvc2UgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhIHRoaXMgbWVjaGFuaXNtLgorCisgICBTb21lIHN5c3RlbXMgZG8gbm90IGluZGljYXRlIHRoZSB0cnVuY2F0ZWQgbGVuZ3RoIG9mIGFuY2lsbGFyeSBkYXRhCisgICBpdGVtcyB3aGljaCBoYXZlIGJlZW4gb25seSBwYXJ0aWFsbHkgcmVjZWl2ZWQuICBJZiBhbiBpdGVtIGFwcGVhcnMKKyAgIHRvIGV4dGVuZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCA6bWV0aDpgcmVjdm1zZ2Agd2lsbCBpc3N1ZQorICAgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AsIGFuZCB3aWxsIHJldHVybiB0aGUgcGFydCBvZiBpdCB3aGljaCBpcworICAgaW5zaWRlIHRoZSBidWZmZXIgcHJvdmlkZWQgaXQgaGFzIG5vdCBiZWVuIHRydW5jYXRlZCBiZWZvcmUgdGhlCisgICBzdGFydCBvZiBpdHMgYXNzb2NpYXRlZCBkYXRhLgorCisgICBPbiBzeXN0ZW1zIHdoaWNoIHN1cHBvcnQgdGhlIDpjb25zdDpgU0NNX1JJR0hUU2AgbWVjaGFuaXNtLCB0aGUKKyAgIGZvbGxvd2luZyBmdW5jdGlvbiB3aWxsIHJlY2VpdmUgdXAgdG8gKm1heGZkcyogZmlsZSBkZXNjcmlwdG9ycywKKyAgIHJldHVybmluZyB0aGUgbWVzc2FnZSBkYXRhIGFuZCBhIGxpc3QgY29udGFpbmluZyB0aGUgZGVzY3JpcHRvcnMKKyAgICh3aGlsZSBpZ25vcmluZyB1bmV4cGVjdGVkIGNvbmRpdGlvbnMgc3VjaCBhcyB1bnJlbGF0ZWQgY29udHJvbAorICAgbWVzc2FnZXMgYmVpbmcgcmVjZWl2ZWQpLiAgU2VlIGFsc28gOm1ldGg6YHNlbmRtc2dgLiA6OgorCisgICAgICBpbXBvcnQgc29ja2V0LCBhcnJheQorCisgICAgICBkZWYgcmVjdl9mZHMoc29jaywgbXNnbGVuLCBtYXhmZHMpOgorICAgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikgICAjIEFycmF5IG9mIGludHMKKyAgICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc29jay5yZWN2bXNnKG1zZ2xlbiwgc29ja2V0LkNNU0dfTEVOKG1heGZkcyAqIGZkcy5pdGVtc2l6ZSkpCisgICAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZCBjbXNnX3R5cGUgPT0gc29ja2V0LlNDTV9SSUdIVFMpOgorICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgZGF0YSwgaWdub3JpbmcgYW55IHRydW5jYXRlZCBpbnRlZ2VycyBhdCB0aGUgZW5kLgorICAgICAgICAgICAgICAgICAgZmRzLmZyb21zdHJpbmcoY21zZ19kYXRhWzpsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICAgIHJldHVybiBtc2csIGxpc3QoZmRzKQorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gbWV0aG9kOjogc29ja2V0LnJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pCisKKyAgIFJlY2VpdmUgbm9ybWFsIGRhdGEgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlIHNvY2tldCwgYmVoYXZpbmcgYXMKKyAgIDptZXRoOmByZWN2bXNnYCB3b3VsZCwgYnV0IHNjYXR0ZXIgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YSBpbnRvIGEKKyAgIHNlcmllcyBvZiBidWZmZXJzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbmV3IGJ5dGVzIG9iamVjdC4gIFRoZQorICAgKmJ1ZmZlcnMqIGFyZ3VtZW50IG11c3QgYmUgYW4gaXRlcmFibGUgb2Ygb2JqZWN0cyB0aGF0IGV4cG9ydAorICAgd3JpdGFibGUgYnVmZmVycyAoZS5nLiA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyk7IHRoZXNlIHdpbGwgYmUKKyAgIGZpbGxlZCB3aXRoIHN1Y2Nlc3NpdmUgY2h1bmtzIG9mIHRoZSBub24tYW5jaWxsYXJ5IGRhdGEgdW50aWwgaXQKKyAgIGhhcyBhbGwgYmVlbiB3cml0dGVuIG9yIHRoZXJlIGFyZSBubyBtb3JlIGJ1ZmZlcnMuICBUaGUgb3BlcmF0aW5nCisgICBzeXN0ZW0gbWF5IHNldCBhIGxpbWl0ICg6ZnVuYzpgfm9zLnN5c2NvbmZgIHZhbHVlIGBgU0NfSU9WX01BWGBgKQorICAgb24gdGhlIG51bWJlciBvZiBidWZmZXJzIHRoYXQgY2FuIGJlIHVzZWQuICBUaGUgKmFuY2J1ZnNpemUqIGFuZAorICAgKmZsYWdzKiBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciA6bWV0aDpgcmVjdm1zZ2AuCisKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSA0LXR1cGxlOiBgYChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywKKyAgIGFkZHJlc3MpYGAsIHdoZXJlICpuYnl0ZXMqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb2YKKyAgIG5vbi1hbmNpbGxhcnkgZGF0YSB3cml0dGVuIGludG8gdGhlIGJ1ZmZlcnMsIGFuZCAqYW5jZGF0YSosCisgICAqbXNnX2ZsYWdzKiBhbmQgKmFkZHJlc3MqIGFyZSB0aGUgc2FtZSBhcyBmb3IgOm1ldGg6YHJlY3Ztc2dgLgorCisgICBFeGFtcGxlOjoKKworICAgICAgPj4+IGltcG9ydCBzb2NrZXQKKyAgICAgID4+PiBzMSwgczIgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICA+Pj4gYjEgPSBieXRlYXJyYXkoYictLS0tJykKKyAgICAgID4+PiBiMiA9IGJ5dGVhcnJheShiJzAxMjM0NTY3ODknKQorICAgICAgPj4+IGIzID0gYnl0ZWFycmF5KGInLS0tLS0tLS0tLS0tLS0nKQorICAgICAgPj4+IHMxLnNlbmQoYidNYXJ5IGhhZCBhIGxpdHRsZSBsYW1iJykKKyAgICAgIDIyCisgICAgICA+Pj4gczIucmVjdm1zZ19pbnRvKFtiMSwgbWVtb3J5dmlldyhiMilbMjo5XSwgYjNdKQorICAgICAgKDIyLCBbXSwgMCwgTm9uZSkKKyAgICAgID4+PiBbYjEsIGIyLCBiM10KKyAgICAgIFtieXRlYXJyYXkoYidNYXJ5JyksIGJ5dGVhcnJheShiJzAxIGhhZCBhIDknKSwgYnl0ZWFycmF5KGInbGl0dGxlIGxhbWItLS0nKV0KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IHNvY2tldC5yZWN2ZnJvbV9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pCiAKICAgIFJlY2VpdmUgZGF0YSBmcm9tIHRoZSBzb2NrZXQsIHdyaXRpbmcgaXQgaW50byAqYnVmZmVyKiBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEKQEAgLTc1NSw2ICsxMDE1LDQxIEBACiAgICBhYm92ZS4pCiAKIAorLi4gbWV0aG9kOjogc29ja2V0LnNlbmRtc2coYnVmZmVyc1ssIGFuY2RhdGFbLCBmbGFnc1ssIGFkZHJlc3NdXV0pCisKKyAgIFNlbmQgbm9ybWFsIGFuZCBhbmNpbGxhcnkgZGF0YSB0byB0aGUgc29ja2V0LCBnYXRoZXJpbmcgdGhlCisgICBub24tYW5jaWxsYXJ5IGRhdGEgZnJvbSBhIHNlcmllcyBvZiBidWZmZXJzIGFuZCBjb25jYXRlbmF0aW5nIGl0CisgICBpbnRvIGEgc2luZ2xlIG1lc3NhZ2UuICBUaGUgKmJ1ZmZlcnMqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUKKyAgIG5vbi1hbmNpbGxhcnkgZGF0YSBhcyBhbiBpdGVyYWJsZSBvZiBidWZmZXItY29tcGF0aWJsZSBvYmplY3RzCisgICAoZS5nLiA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzKTsgdGhlIG9wZXJhdGluZyBzeXN0ZW0gbWF5IHNldCBhIGxpbWl0CisgICAoOmZ1bmM6YH5vcy5zeXNjb25mYCB2YWx1ZSBgYFNDX0lPVl9NQVhgYCkgb24gdGhlIG51bWJlciBvZiBidWZmZXJzCisgICB0aGF0IGNhbiBiZSB1c2VkLiAgVGhlICphbmNkYXRhKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGFuY2lsbGFyeQorICAgZGF0YSAoY29udHJvbCBtZXNzYWdlcykgYXMgYW4gaXRlcmFibGUgb2YgemVybyBvciBtb3JlIHR1cGxlcworICAgYGAoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpYGAsIHdoZXJlICpjbXNnX2xldmVsKiBhbmQKKyAgICpjbXNnX3R5cGUqIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBsZXZlbCBhbmQKKyAgIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LCBhbmQgKmNtc2dfZGF0YSogaXMgYQorICAgYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWQgZGF0YS4gIE5vdGUgdGhhdAorICAgc29tZSBzeXN0ZW1zIChpbiBwYXJ0aWN1bGFyLCBzeXN0ZW1zIHdpdGhvdXQgOmZ1bmM6YENNU0dfU1BBQ0VgKQorICAgbWlnaHQgc3VwcG9ydCBzZW5kaW5nIG9ubHkgb25lIGNvbnRyb2wgbWVzc2FnZSBwZXIgY2FsbC4gIFRoZQorICAgKmZsYWdzKiBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgIDptZXRoOmBzZW5kYC4gIElmICphZGRyZXNzKiBpcyBzdXBwbGllZCBhbmQgbm90IGBgTm9uZWBgLCBpdCBzZXRzIGEKKyAgIGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIHRoZSBtZXNzYWdlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBvZiBub24tYW5jaWxsYXJ5IGRhdGEgc2VudC4KKworICAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBzZW5kcyB0aGUgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzICpmZHMqCisgICBvdmVyIGFuIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0LCBvbiBzeXN0ZW1zIHdoaWNoIHN1cHBvcnQgdGhlCisgICA6Y29uc3Q6YFNDTV9SSUdIVFNgIG1lY2hhbmlzbS4gIFNlZSBhbHNvIDptZXRoOmByZWN2bXNnYC4gOjoKKworICAgICAgaW1wb3J0IHNvY2tldCwgYXJyYXkKKworICAgICAgZGVmIHNlbmRfZmRzKHNvY2ssIG1zZywgZmRzKToKKyAgICAgICAgICByZXR1cm4gc29jay5zZW5kbXNnKFttc2ddLCBbKHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU0NNX1JJR0hUUywgYXJyYXkuYXJyYXkoImkiLCBmZHMpKV0pCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2V0YmxvY2tpbmcoZmxhZykKIAogICAgU2V0IGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBtb2RlIG9mIHRoZSBzb2NrZXQ6IGlmICpmbGFnKiBpcyBmYWxzZSwgdGhlCkBAIC03OTYsOSArMTA5MSwyMiBAQAogICAgU2h1dCBkb3duIG9uZSBvciBib3RoIGhhbHZlcyBvZiB0aGUgY29ubmVjdGlvbi4gIElmICpob3cqIGlzIDpjb25zdDpgU0hVVF9SRGAsCiAgICBmdXJ0aGVyIHJlY2VpdmVzIGFyZSBkaXNhbGxvd2VkLiAgSWYgKmhvdyogaXMgOmNvbnN0OmBTSFVUX1dSYCwgZnVydGhlciBzZW5kcwogICAgYXJlIGRpc2FsbG93ZWQuICBJZiAqaG93KiBpcyA6Y29uc3Q6YFNIVVRfUkRXUmAsIGZ1cnRoZXIgc2VuZHMgYW5kIHJlY2VpdmVzIGFyZQotICAgZGlzYWxsb3dlZC4gIERlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0sIHNodXR0aW5nIGRvd24gb25lIGhhbGYgb2YgdGhlIGNvbm5lY3Rpb24KLSAgIGNhbiBhbHNvIGNsb3NlIHRoZSBvcHBvc2l0ZSBoYWxmIChlLmcuIG9uIE1hYyBPUyBYLCBgYHNodXRkb3duKFNIVVRfV1IpYGAgZG9lcwotICAgbm90IGFsbG93IGZ1cnRoZXIgcmVhZHMgb24gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbikuCisgICBkaXNhbGxvd2VkLgorCisKKy4uIG1ldGhvZDo6IHNvY2tldC5zaGFyZShwcm9jZXNzX2lkKQorCisgICAgOnBsYXRmb3JtOiBXaW5kb3dzCisKKyAgICBEdXBsYWNldCBhIHNvY2tldCBhbmQgcHJlcGFyZSBpdCBmb3Igc2hhcmluZyB3aXRoIGEgdGFyZ2V0IHByb2Nlc3MuICBUaGUKKyAgICB0YXJnZXQgcHJvY2VzcyBtdXN0IGJlIHByb3ZpZGVkIHdpdGggKnByb2Nlc3NfaWQqLiAgVGhlIHJlc3VsdGluZyBieXRlcyBvYmplY3QKKyAgICBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gdGhlIHRhcmdldCBwcm9jZXNzIHVzaW5nIHNvbWUgZm9ybSBvZiBpbnRlcnByb2Nlc3MKKyAgICBjb21tdW5pY2F0aW9uIGFuZCB0aGUgc29ja2V0IGNhbiBiZSByZWNyZWF0ZWQgdGhlcmUgdXNpbmcgOmZ1bmM6YGZyb21zaGFyZWAuCisgICAgT25jZSB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGl0IGlzIHNhZmUgdG8gY2xvc2UgdGhlIHNvY2tldCBzaW5jZQorICAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGhhcyBhbHJlYWR5IGR1cGxpY2F0ZWQgaXQgZm9yIHRoZSB0YXJnZXQgcHJvY2Vzcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBtZXRob2RzIDptZXRoOmByZWFkYCBvciA6bWV0aDpgd3JpdGVgOyB1c2UKIDptZXRoOmB+c29ja2V0LnJlY3ZgIGFuZCA6bWV0aDpgfnNvY2tldC5zZW5kYCB3aXRob3V0ICpmbGFncyogYXJndW1lbnQgaW5zdGVhZC4KQEAgLTk0MywxMyArMTI1MSwxMyBAQAogICAgICAgIGFmLCBzb2NrdHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc2EgPSByZXMKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KGFmLCBzb2NrdHlwZSwgcHJvdG8pCi0gICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzID0gTm9uZQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHRyeToKICAgICAgICAgICAgcy5iaW5kKHNhKQogICAgICAgICAgICBzLmxpc3RlbigxKQotICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgIHMgPSBOb25lCiAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05NzgsMTIgKzEyODYsMTIgQEAKICAgICAgICBhZiwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNhID0gcmVzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChhZiwgc29ja3R5cGUsIHByb3RvKQotICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMuY29ubmVjdChzYSkKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICBzID0gTm9uZQogICAgICAgICAgICBjb250aW51ZQpAQCAtOTk3LDcgKzEzMDUsNyBAQAogICAgcHJpbnQoJ1JlY2VpdmVkJywgcmVwcihkYXRhKSkKIAogCi1UaGUgbGFzdCBleGFtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIHZlcnkgc2ltcGxlIG5ldHdvcmsgc25pZmZlciB3aXRoIHJhdworVGhlIG5leHQgZXhhbXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSB2ZXJ5IHNpbXBsZSBuZXR3b3JrIHNuaWZmZXIgd2l0aCByYXcKIHNvY2tldHMgb24gV2luZG93cy4gVGhlIGV4YW1wbGUgcmVxdWlyZXMgYWRtaW5pc3RyYXRvciBwcml2aWxlZ2VzIHRvIG1vZGlmeQogdGhlIGludGVyZmFjZTo6CiAKQEAgLTEwMjIsMTEgKzEzMzAsNTEgQEAKICAgICMgZGlzYWJsZWQgcHJvbWlzY3VvdXMgbW9kZQogICAgcy5pb2N0bChzb2NrZXQuU0lPX1JDVkFMTCwgc29ja2V0LlJDVkFMTF9PRkYpCiAKK1RoZSBsYXN0IGV4YW1wbGUgc2hvd3MgaG93IHRvIHVzZSB0aGUgc29ja2V0IGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSB0byBhIENBTgorbmV0d29yay4gVGhpcyBleGFtcGxlIG1pZ2h0IHJlcXVpcmUgc3BlY2lhbCBwcml2aWxlZGdlOjoKKworICAgaW1wb3J0IHNvY2tldAorICAgaW1wb3J0IHN0cnVjdAorCisKKyAgICMgQ0FOIGZyYW1lIHBhY2tpbmcvdW5wYWNraW5nIChzZWUgJ3N0cnVjdCBjYW5fZnJhbWUnIGluIDxsaW51eC9jYW4uaD4pCisKKyAgIGNhbl9mcmFtZV9mbXQgPSAiPUlCM3g4cyIKKyAgIGNhbl9mcmFtZV9zaXplID0gc3RydWN0LmNhbGNzaXplKGNhbl9mcmFtZV9mbXQpCisKKyAgIGRlZiBidWlsZF9jYW5fZnJhbWUoY2FuX2lkLCBkYXRhKToKKyAgICAgICBjYW5fZGxjID0gbGVuKGRhdGEpCisgICAgICAgZGF0YSA9IGRhdGEubGp1c3QoOCwgYidceDAwJykKKyAgICAgICByZXR1cm4gc3RydWN0LnBhY2soY2FuX2ZyYW1lX2ZtdCwgY2FuX2lkLCBjYW5fZGxjLCBkYXRhKQorCisgICBkZWYgZGlzc2VjdF9jYW5fZnJhbWUoZnJhbWUpOgorICAgICAgIGNhbl9pZCwgY2FuX2RsYywgZGF0YSA9IHN0cnVjdC51bnBhY2soY2FuX2ZyYW1lX2ZtdCwgZnJhbWUpCisgICAgICAgcmV0dXJuIChjYW5faWQsIGNhbl9kbGMsIGRhdGFbOmNhbl9kbGNdKQorCisKKyAgICMgY3JlYXRlIGEgcmF3IHNvY2tldCBhbmQgYmluZCBpdCB0byB0aGUgJ3ZjYW4wJyBpbnRlcmZhY2UKKyAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCisgICBzLmJpbmQoKCd2Y2FuMCcsKSkKKworICAgd2hpbGUgVHJ1ZToKKyAgICAgICBjZiwgYWRkciA9IHMucmVjdmZyb20oY2FuX2ZyYW1lX3NpemUpCisKKyAgICAgICBwcmludCgnUmVjZWl2ZWQ6IGNhbl9pZD0leCwgY2FuX2RsYz0leCwgZGF0YT0lcycgJSBkaXNzZWN0X2Nhbl9mcmFtZShjZikpCisKKyAgICAgICB0cnk6CisgICAgICAgICAgIHMuc2VuZChjZikKKyAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHNlbmRpbmcgQ0FOIGZyYW1lJykKKworICAgICAgIHRyeToKKyAgICAgICAgICAgcy5zZW5kKGJ1aWxkX2Nhbl9mcmFtZSgweDAxLCBiJ1x4MDFceDAyXHgwMycpKQorICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICBwcmludCgnRXJyb3Igc2VuZGluZyBDQU4gZnJhbWUnKQogCiBSdW5uaW5nIGFuIGV4YW1wbGUgc2V2ZXJhbCB0aW1lcyB3aXRoIHRvbyBzbWFsbCBkZWxheSBiZXR3ZWVuIGV4ZWN1dGlvbnMsIGNvdWxkCiBsZWFkIHRvIHRoaXMgZXJyb3I6OgogCi0gICBzb2NrZXQuZXJyb3I6IFtFcnJubyA5OF0gQWRkcmVzcyBhbHJlYWR5IGluIHVzZQorICAgT1NFcnJvcjogW0Vycm5vIDk4XSBBZGRyZXNzIGFscmVhZHkgaW4gdXNlCiAKIFRoaXMgaXMgYmVjYXVzZSB0aGUgcHJldmlvdXMgZXhlY3V0aW9uIGhhcyBsZWZ0IHRoZSBzb2NrZXQgaW4gYSBgYFRJTUVfV0FJVGBgCiBzdGF0ZSwgYW5kIGNhbid0IGJlIGltbWVkaWF0ZWx5IHJldXNlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CmluZGV4IDRmMjIzNDcuLmU3ZjY2OGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdApAQCAtMTUzLDEwICsxNTMsMjQgQEAKIAogLi4gbWV0aG9kOjogQmFzZVNlcnZlci5zZXJ2ZV9mb3JldmVyKHBvbGxfaW50ZXJ2YWw9MC41KQogCi0gICBIYW5kbGUgcmVxdWVzdHMgdW50aWwgYW4gZXhwbGljaXQgOm1ldGg6YHNodXRkb3duYCByZXF1ZXN0LgotICAgUG9sbCBmb3Igc2h1dGRvd24gZXZlcnkgKnBvbGxfaW50ZXJ2YWwqIHNlY29uZHMuIElnbm9yZXMgOmF0dHI6YHNlbGYudGltZW91dGAuCi0gICBJZiB5b3UgbmVlZCB0byBkbyBwZXJpb2RpYyB0YXNrcywgZG8gdGhlbSBpbiBhbm90aGVyIHRocmVhZC4KKyAgIEhhbmRsZSByZXF1ZXN0cyB1bnRpbCBhbiBleHBsaWNpdCA6bWV0aDpgc2h1dGRvd25gIHJlcXVlc3QuICBQb2xsIGZvcgorICAgc2h1dGRvd24gZXZlcnkgKnBvbGxfaW50ZXJ2YWwqIHNlY29uZHMuIElnbm9yZXMgOmF0dHI6YHNlbGYudGltZW91dGAuICBJdAorICAgYWxzbyBjYWxscyA6bWV0aDpgc2VydmljZV9hY3Rpb25zYCwgd2hpY2ggbWF5IGJlIHVzZWQgYnkgYSBzdWJjbGFzcyBvciBtaXhpbgorICAgdG8gcHJvdmlkZSBhY3Rpb25zIHNwZWNpZmljIHRvIGEgZ2l2ZW4gc2VydmljZS4gIEZvciBleGFtcGxlLCB0aGUKKyAgIDpjbGFzczpgRm9ya2luZ01peEluYCBjbGFzcyB1c2VzIDptZXRoOmBzZXJ2aWNlX2FjdGlvbnNgIHRvIGNsZWFuIHVwIHpvbWJpZQorICAgY2hpbGQgcHJvY2Vzc2VzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIEFkZGVkIGBgc2VydmljZV9hY3Rpb25zYGAgY2FsbCB0byB0aGUgYGBzZXJ2ZV9mb3JldmVyYGAgbWV0aG9kLgorCisKKy4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2VydmljZV9hY3Rpb25zKCkKKworICAgVGhpcyBpcyBjYWxsZWQgaW4gdGhlIDptZXRoOmBzZXJ2ZV9mb3JldmVyYCBsb29wLiBUaGlzIG1ldGhvZCBpcyBjYW4gYmUKKyAgIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBvciBtaXhpbiBjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBzcGVjaWZpYyB0bworICAgYSBnaXZlbiBzZXJ2aWNlLCBzdWNoIGFzIGNsZWFudXAgYWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2h1dGRvd24oKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb21lb3MucnN0IGIvRG9jL2xpYnJhcnkvc29tZW9zLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDIwMDliYi4uMDAwMDAwMAotLS0gYS9Eb2MvbGlicmFyeS9zb21lb3MucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLi4gX3NvbWVvczoKLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1UaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgaW50ZXJmYWNlcyB0byBvcGVyYXRpbmcgc3lzdGVtCi1mZWF0dXJlcyB0aGF0IGFyZSBhdmFpbGFibGUgb24gc2VsZWN0ZWQgb3BlcmF0aW5nIHN5c3RlbXMgb25seS4gVGhlIGludGVyZmFjZXMKLWFyZSBnZW5lcmFsbHkgbW9kZWxlZCBhZnRlciB0aGUgVW5peCBvciBDIGludGVyZmFjZXMgYnV0IHRoZXkgYXJlIGF2YWlsYWJsZSBvbgotc29tZSBvdGhlciBzeXN0ZW1zIGFzIHdlbGwgKGUuZy4gV2luZG93cykuICBIZXJlJ3MgYW4gb3ZlcnZpZXc6Ci0KLQotLi4gdG9jdHJlZTo6Ci0KLSAgIHNlbGVjdC5yc3QKLSAgIHRocmVhZGluZy5yc3QKLSAgIG11bHRpcHJvY2Vzc2luZy5yc3QKLSAgIGNvbmN1cnJlbnQuZnV0dXJlcy5yc3QKLSAgIG1tYXAucnN0Ci0gICByZWFkbGluZS5yc3QKLSAgIHJsY29tcGxldGVyLnJzdAotICAgZHVtbXlfdGhyZWFkaW5nLnJzdAotICAgX3RocmVhZC5yc3QKLSAgIF9kdW1teV90aHJlYWQucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IDI4ZWRmY2YuLmUzMWFlNzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC0zOTEsNiArMzkxLDIyIEBACiAgICAgICBtZXRob2Qgd2l0aCA6Y29uc3Q6YE5vbmVgIGZvciAqaGFuZGxlciouCiAKIAorICAgLi4gbWV0aG9kOjogc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlX2NhbGxiYWNrKQorCisgICAgICBSZWdpc3RlcnMgKnRyYWNlX2NhbGxiYWNrKiB0byBiZSBjYWxsZWQgZm9yIGVhY2ggU1FMIHN0YXRlbWVudCB0aGF0IGlzCisgICAgICBhY3R1YWxseSBleGVjdXRlZCBieSB0aGUgU1FMaXRlIGJhY2tlbmQuCisKKyAgICAgIFRoZSBvbmx5IGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgaXMgdGhlIHN0YXRlbWVudCAoYXMgc3RyaW5nKSB0aGF0CisgICAgICBpcyBiZWluZyBleGVjdXRlZC4gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY2FsbGJhY2sgaXMgaWdub3JlZC4gTm90ZSB0aGF0CisgICAgICB0aGUgYmFja2VuZCBkb2VzIG5vdCBvbmx5IHJ1biBzdGF0ZW1lbnRzIHBhc3NlZCB0byB0aGUgOm1ldGg6YEN1cnNvci5leGVjdXRlYAorICAgICAgbWV0aG9kcy4gIE90aGVyIHNvdXJjZXMgaW5jbHVkZSB0aGUgdHJhbnNhY3Rpb24gbWFuYWdlbWVudCBvZiB0aGUgUHl0aG9uCisgICAgICBtb2R1bGUgYW5kIHRoZSBleGVjdXRpb24gb2YgdHJpZ2dlcnMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4KKworICAgICAgUGFzc2luZyA6Y29uc3Q6YE5vbmVgIGFzICp0cmFjZV9jYWxsYmFjayogd2lsbCBkaXNhYmxlIHRoZSB0cmFjZSBjYWxsYmFjay4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogICAgLi4gbWV0aG9kOjogZW5hYmxlX2xvYWRfZXh0ZW5zaW9uKGVuYWJsZWQpCiAKICAgICAgIFRoaXMgcm91dGluZSBhbGxvd3MvZGlzYWxsb3dzIHRoZSBTUUxpdGUgZW5naW5lIHRvIGxvYWQgU1FMaXRlIGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CmluZGV4IDBmNWNlYTIuLjc3MTk2ZTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdApAQCAtNTMsOSArNTMsNjkgQEAKICAgIChjdXJyZW50bHkgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyeSkuICBUaGlzIHNpZ25pZmllcyBzb21lCiAgICBwcm9ibGVtIGluIHRoZSBoaWdoZXItbGV2ZWwgZW5jcnlwdGlvbiBhbmQgYXV0aGVudGljYXRpb24gbGF5ZXIgdGhhdCdzCiAgICBzdXBlcmltcG9zZWQgb24gdGhlIHVuZGVybHlpbmcgbmV0d29yayBjb25uZWN0aW9uLiAgVGhpcyBlcnJvcgotICAgaXMgYSBzdWJ0eXBlIG9mIDpleGM6YHNvY2tldC5lcnJvcmAsIHdoaWNoIGluIHR1cm4gaXMgYSBzdWJ0eXBlIG9mCi0gICA6ZXhjOmBJT0Vycm9yYC4gIFRoZSBlcnJvciBjb2RlIGFuZCBtZXNzYWdlIG9mIDpleGM6YFNTTEVycm9yYCBpbnN0YW5jZXMKLSAgIGFyZSBwcm92aWRlZCBieSB0aGUgT3BlblNTTCBsaWJyYXJ5LgorICAgaXMgYSBzdWJ0eXBlIG9mIDpleGM6YE9TRXJyb3JgLiAgVGhlIGVycm9yIGNvZGUgYW5kIG1lc3NhZ2Ugb2YKKyAgIDpleGM6YFNTTEVycm9yYCBpbnN0YW5jZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBTU0xFcnJvcmAgdXNlZCB0byBiZSBhIHN1YnR5cGUgb2YgOmV4Yzpgc29ja2V0LmVycm9yYC4KKworICAgLi4gYXR0cmlidXRlOjogbGlicmFyeQorCisgICAgICBBIHN0cmluZyBtbmVtb25pYyBkZXNpZ25hdGluZyB0aGUgT3BlblNTTCBzdWJtb2R1bGUgaW4gd2hpY2ggdGhlIGVycm9yCisgICAgICBvY2N1cnJlZCwgc3VjaCBhcyBgYFNTTGBgLCBgYFBFTWBgIG9yIGBgWDUwOWBgLiAgVGhlIHJhbmdlIG9mIHBvc3NpYmxlCisgICAgICB2YWx1ZXMgZGVwZW5kcyBvbiB0aGUgT3BlblNTTCB2ZXJzaW9uLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogcmVhc29uCisKKyAgICAgIEEgc3RyaW5nIG1uZW1vbmljIGRlc2lnbmF0aW5nIHRoZSByZWFzb24gdGhpcyBlcnJvciBvY2N1cnJlZCwgZm9yCisgICAgICBleGFtcGxlIGBgQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRGBgLiAgVGhlIHJhbmdlIG9mIHBvc3NpYmxlCisgICAgICB2YWx1ZXMgZGVwZW5kcyBvbiB0aGUgT3BlblNTTCB2ZXJzaW9uLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMWmVyb1JldHVybkVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCB3aGVuIHRyeWluZyB0byByZWFkIG9yIHdyaXRlIGFuZAorICAgdGhlIFNTTCBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCBjbGVhbmx5LiAgTm90ZSB0aGF0IHRoaXMgZG9lc24ndAorICAgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCAocmVhZCBUQ1ApIGhhcyBiZWVuIGNsb3NlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFdhbnRSZWFkRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIGJ5IGEgOnJlZjpgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXQKKyAgIDxzc2wtbm9uYmxvY2tpbmc+YCB3aGVuIHRyeWluZyB0byByZWFkIG9yIHdyaXRlIGRhdGEsIGJ1dCBtb3JlIGRhdGEgbmVlZHMKKyAgIHRvIGJlIHJlY2VpdmVkIG9uIHRoZSB1bmRlcmx5aW5nIFRDUCB0cmFuc3BvcnQgYmVmb3JlIHRoZSByZXF1ZXN0IGNhbiBiZQorICAgZnVsZmlsbGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMV2FudFdyaXRlRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIGJ5IGEgOnJlZjpgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXQKKyAgIDxzc2wtbm9uYmxvY2tpbmc+YCB3aGVuIHRyeWluZyB0byByZWFkIG9yIHdyaXRlIGRhdGEsIGJ1dCBtb3JlIGRhdGEgbmVlZHMKKyAgIHRvIGJlIHNlbnQgb24gdGhlIHVuZGVybHlpbmcgVENQIHRyYW5zcG9ydCBiZWZvcmUgdGhlIHJlcXVlc3QgY2FuIGJlCisgICBmdWxmaWxsZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xTeXNjYWxsRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gYSBzeXN0ZW0gZXJyb3Igd2FzIGVuY291bnRlcmVkCisgICB3aGlsZSB0cnlpbmcgdG8gZnVsZmlsbCBhbiBvcGVyYXRpb24gb24gYSBTU0wgc29ja2V0LiAgVW5mb3J0dW5hdGVseSwKKyAgIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGluc3BlY3QgdGhlIG9yaWdpbmFsIGVycm5vIG51bWJlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTEVPRkVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCB3aGVuIHRoZSBTU0wgY29ubmVjdGlvbiBoYXMgYmVlbgorICAgdGVybWluYXRlZCBhYnJ1cHRseS4gIEdlbmVyYWxseSwgeW91IHNob3VsZG4ndCB0cnkgdG8gcmV1c2UgdGhlIHVuZGVybHlpbmcKKyAgIHRyYW5zcG9ydCB3aGVuIHRoaXMgZXJyb3IgaXMgZW5jb3VudGVyZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBleGNlcHRpb246OiBDZXJ0aWZpY2F0ZUVycm9yCiAKQEAgLTE2MSw2ICsyMjEsMzUgQEAKIFJhbmRvbSBnZW5lcmF0aW9uCiBeXl5eXl5eXl5eXl5eXl5eXgogCisuLiBmdW5jdGlvbjo6IFJBTkRfYnl0ZXMobnVtKQorCisgICBSZXR1cm5zICpudW0qIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiBSYWlzZXMgYW4KKyAgIDpjbGFzczpgU1NMRXJyb3JgIGlmIHRoZSBQUk5HIGhhcyBub3QgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBvciBpZiB0aGUKKyAgIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IFJBTkQgbWV0aG9kLiA6ZnVuYzpgUkFORF9zdGF0dXNgCisgICBjYW4gYmUgdXNlZCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBQUk5HIGFuZCA6ZnVuYzpgUkFORF9hZGRgIGNhbiBiZSB1c2VkCisgICB0byBzZWVkIHRoZSBQUk5HLgorCisgICBSZWFkIHRoZSBXaWtpcGVkaWEgYXJ0aWNsZSwgYENyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBwc2V1ZG9yYW5kb20gbnVtYmVyCisgICBnZW5lcmF0b3IgKENTUFJORykKKyAgIDxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NyeXB0b2dyYXBoaWNhbGx5X3NlY3VyZV9wc2V1ZG9yYW5kb21fbnVtYmVyX2dlbmVyYXRvcj5gXywKKyAgIHRvIGdldCB0aGUgcmVxdWlyZW1lbnRzIG9mIGEgY3J5cHRvZ3JhcGhpY2FsbHkgZ2VuZXJhdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBSQU5EX3BzZXVkb19ieXRlcyhudW0pCisKKyAgIFJldHVybnMgKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKTogYnl0ZXMgYXJlICpudW0qIHBzZXVkby1yYW5kb20gYnl0ZXMsCisgICBpc19jcnlwdG9ncmFwaGljIGlzIFRydWUgaWYgdGhlIGJ5dGVzIGdlbmVyYXRlZCBhcmUgY3J5cHRvZ3JhcGhpY2FsbHkKKyAgIHN0cm9uZy4gUmFpc2VzIGFuIDpjbGFzczpgU1NMRXJyb3JgIGlmIHRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUKKyAgIGN1cnJlbnQgUkFORCBtZXRob2QuCisKKyAgIEdlbmVyYXRlZCBwc2V1ZG8tcmFuZG9tIGJ5dGUgc2VxdWVuY2VzIHdpbGwgYmUgdW5pcXVlIGlmIHRoZXkgYXJlIG9mCisgICBzdWZmaWNpZW50IGxlbmd0aCwgYnV0IGFyZSBub3QgbmVjZXNzYXJpbHkgdW5wcmVkaWN0YWJsZS4gVGhleSBjYW4gYmUgdXNlZAorICAgZm9yIG5vbi1jcnlwdG9ncmFwaGljIHB1cnBvc2VzIGFuZCBmb3IgY2VydGFpbiBwdXJwb3NlcyBpbiBjcnlwdG9ncmFwaGljCisgICBwcm90b2NvbHMsIGJ1dCB1c3VhbGx5IG5vdCBmb3Iga2V5IGdlbmVyYXRpb24gZXRjLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZnVuY3Rpb246OiBSQU5EX3N0YXR1cygpCiAKICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBoYXMgYmVlbiBzZWVkZWQgd2l0aApAQCAtMTcwLDcgKzI1OSw3IEBACiAKIC4uIGZ1bmN0aW9uOjogUkFORF9lZ2QocGF0aCkKIAotICAgSWYgeW91IGFyZSBydW5uaW5nIGFuIGVudHJvcHktZ2F0aGVyaW5nIGRhZW1vbiAoRUdEKSBzb21ld2hlcmUsIGFuZCBgYHBhdGhgYAorICAgSWYgeW91IGFyZSBydW5uaW5nIGFuIGVudHJvcHktZ2F0aGVyaW5nIGRhZW1vbiAoRUdEKSBzb21ld2hlcmUsIGFuZCAqcGF0aCoKICAgIGlzIHRoZSBwYXRobmFtZSBvZiBhIHNvY2tldCBjb25uZWN0aW9uIG9wZW4gdG8gaXQsIHRoaXMgd2lsbCByZWFkIDI1NiBieXRlcwogICAgb2YgcmFuZG9tbmVzcyBmcm9tIHRoZSBzb2NrZXQsIGFuZCBhZGQgaXQgdG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlcgogICAgZ2VuZXJhdG9yIHRvIGluY3JlYXNlIHRoZSBzZWN1cml0eSBvZiBnZW5lcmF0ZWQgc2VjcmV0IGtleXMuICBUaGlzIGlzCkBAIC0xODEsOCArMjcwLDggQEAKIAogLi4gZnVuY3Rpb246OiBSQU5EX2FkZChieXRlcywgZW50cm9weSkKIAotICAgTWl4ZXMgdGhlIGdpdmVuIGBgYnl0ZXNgYCBpbnRvIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiAgVGhlCi0gICBwYXJhbWV0ZXIgYGBlbnRyb3B5YGAgKGEgZmxvYXQpIGlzIGEgbG93ZXIgYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluCisgICBNaXhlcyB0aGUgZ2l2ZW4gKmJ5dGVzKiBpbnRvIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiAgVGhlCisgICBwYXJhbWV0ZXIgKmVudHJvcHkqIChhIGZsb2F0KSBpcyBhIGxvd2VyIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbgogICAgc3RyaW5nIChzbyB5b3UgY2FuIGFsd2F5cyB1c2UgOmNvbnN0OmAwLjBgKS4gIFNlZSA6cmZjOmAxNzUwYCBmb3IgbW9yZQogICAgaW5mb3JtYXRpb24gb24gc291cmNlcyBvZiBlbnRyb3B5LgogCkBAIC0yMzgsNiArMzI3LDkgQEAKICAgIHdpbGwgYXR0ZW1wdCB0byB2YWxpZGF0ZSB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGFnYWluc3QgdGhhdCBzZXQgb2Ygcm9vdAogICAgY2VydGlmaWNhdGVzLCBhbmQgd2lsbCBmYWlsIGlmIHRoZSB2YWxpZGF0aW9uIGF0dGVtcHQgZmFpbHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBJUHY2LWNvbXBhdGlibGUuCisKIC4uIGZ1bmN0aW9uOjogREVSX2NlcnRfdG9fUEVNX2NlcnQoREVSX2NlcnRfYnl0ZXMpCiAKICAgIEdpdmVuIGEgY2VydGlmaWNhdGUgYXMgYSBERVItZW5jb2RlZCBibG9iIG9mIGJ5dGVzLCByZXR1cm5zIGEgUEVNLWVuY29kZWQKQEAgLTM0NSw2ICs0MzcsNDYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGRhdGE6OiBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKworICAgVXNlIHRoZSBzZXJ2ZXIncyBjaXBoZXIgb3JkZXJpbmcgcHJlZmVyZW5jZSwgcmF0aGVyIHRoYW4gdGhlIGNsaWVudCdzLgorICAgVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBjbGllbnQgc29ja2V0cyBhbmQgU1NMdjIgc2VydmVyIHNvY2tldHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogT1BfU0lOR0xFX0RIX1VTRQorCisgICBQcmV2ZW50cyByZS11c2Ugb2YgdGhlIHNhbWUgREgga2V5IGZvciBkaXN0aW5jdCBTU0wgc2Vzc2lvbnMuICBUaGlzCisgICBpbXByb3ZlcyBmb3J3YXJkIHNlY3JlY3kgYnV0IHJlcXVpcmVzIG1vcmUgY29tcHV0YXRpb25hbCByZXNvdXJjZXMuCisgICBUaGlzIG9wdGlvbiBvbmx5IGFwcGxpZXMgdG8gc2VydmVyIHNvY2tldHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogT1BfU0lOR0xFX0VDREhfVVNFCisKKyAgIFByZXZlbnRzIHJlLXVzZSBvZiB0aGUgc2FtZSBFQ0RIIGtleSBmb3IgZGlzdGluY3QgU1NMIHNlc3Npb25zLiAgVGhpcworICAgaW1wcm92ZXMgZm9yd2FyZCBzZWNyZWN5IGJ1dCByZXF1aXJlcyBtb3JlIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzLgorICAgVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHNlcnZlciBzb2NrZXRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IE9QX05PX0NPTVBSRVNTSU9OCisKKyAgIERpc2FibGUgY29tcHJlc3Npb24gb24gdGhlIFNTTCBjaGFubmVsLiAgVGhpcyBpcyB1c2VmdWwgaWYgdGhlIGFwcGxpY2F0aW9uCisgICBwcm90b2NvbCBzdXBwb3J0cyBpdHMgb3duIGNvbXByZXNzaW9uIHNjaGVtZS4KKworICAgVGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgd2l0aCBPcGVuU1NMIDEuMC4wIGFuZCBsYXRlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBIQVNfRUNESAorCisgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIEVsbGlwdGljIEN1cnZlLWJhc2VkCisgICBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UuICBUaGlzIHNob3VsZCBiZSB0cnVlIHVubGVzcyB0aGUgZmVhdHVyZSB3YXMKKyAgIGV4cGxpY2l0bHkgZGlzYWJsZWQgYnkgdGhlIGRpc3RyaWJ1dG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZGF0YTo6IEhBU19TTkkKIAogICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgKlNlcnZlciBOYW1lCkBAIC0zNTQsNiArNDg2LDIzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBkYXRhOjogSEFTX05QTgorCisgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yICpOZXh0IFByb3RvY29sCisgICBOZWdvdGlhdGlvbiogYXMgZGVzY3JpYmVkIGluIHRoZSBgTlBOIGRyYWZ0IHNwZWNpZmljYXRpb24KKyAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1hZ2wtdGxzLW5leHRwcm90b25lZz5gXy4gV2hlbiB0cnVlLAorICAgeW91IGNhbiB1c2UgdGhlIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCBtZXRob2QgdG8gYWR2ZXJ0aXNlCisgICB3aGljaCBwcm90b2NvbHMgeW91IHdhbnQgdG8gc3VwcG9ydC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBDSEFOTkVMX0JJTkRJTkdfVFlQRVMKKworICAgTGlzdCBvZiBzdXBwb3J0ZWQgVExTIGNoYW5uZWwgYmluZGluZyB0eXBlcy4gIFN0cmluZ3MgaW4gdGhpcyBsaXN0CisgICBjYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgdG8gOm1ldGg6YFNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRhdGE6OiBPUEVOU1NMX1ZFUlNJT04KIAogICAgVGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSBPcGVuU1NMIGxpYnJhcnkgbG9hZGVkIGJ5IHRoZSBpbnRlcnByZXRlcjo6CkBAIC00NzksNiArNjI4LDM3IEBACiAgICB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCBkZWZpbmVzIGl0cyB1c2UsIGFuZCB0aGUgbnVtYmVyIG9mIHNlY3JldAogICAgYml0cyBiZWluZyB1c2VkLiAgSWYgbm8gY29ubmVjdGlvbiBoYXMgYmVlbiBlc3RhYmxpc2hlZCwgcmV0dXJucyBgYE5vbmVgYC4KIAorLi4gbWV0aG9kOjogU1NMU29ja2V0LmNvbXByZXNzaW9uKCkKKworICAgUmV0dXJuIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gYmVpbmcgdXNlZCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgIGlmIHRoZSBjb25uZWN0aW9uIGlzbid0IGNvbXByZXNzZWQuCisKKyAgIElmIHRoZSBoaWdoZXItbGV2ZWwgcHJvdG9jb2wgc3VwcG9ydHMgaXRzIG93biBjb21wcmVzc2lvbiBtZWNoYW5pc20sCisgICB5b3UgY2FuIHVzZSA6ZGF0YTpgT1BfTk9fQ09NUFJFU1NJT05gIHRvIGRpc2FibGUgU1NMLWxldmVsIGNvbXByZXNzaW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMU29ja2V0LmdldF9jaGFubmVsX2JpbmRpbmcoY2JfdHlwZT0idGxzLXVuaXF1ZSIpCisKKyAgIEdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgY3VycmVudCBjb25uZWN0aW9uLCBhcyBhIGJ5dGVzIG9iamVjdC4gIFJldHVybnMKKyAgIGBgTm9uZWBgIGlmIG5vdCBjb25uZWN0ZWQgb3IgdGhlIGhhbmRzaGFrZSBoYXMgbm90IGJlZW4gY29tcGxldGVkLgorCisgICBUaGUgKmNiX3R5cGUqIHBhcmFtZXRlciBhbGxvdyBzZWxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgY2hhbm5lbCBiaW5kaW5nCisgICB0eXBlLiBWYWxpZCBjaGFubmVsIGJpbmRpbmcgdHlwZXMgYXJlIGxpc3RlZCBpbiB0aGUKKyAgIDpkYXRhOmBDSEFOTkVMX0JJTkRJTkdfVFlQRVNgIGxpc3QuICBDdXJyZW50bHkgb25seSB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwKKyAgIGJpbmRpbmcsIGRlZmluZWQgYnkgOnJmYzpgNTkyOWAsIGlzIHN1cHBvcnRlZC4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUKKyAgIHJhaXNlZCBpZiBhbiB1bnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSBpcyByZXF1ZXN0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKKworICAgUmV0dXJucyB0aGUgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMvU1NMIGhhbmRzaGFrZS4gSWYKKyAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgb3IgaWYgdGhlIG90aGVyIHBhcnR5CisgICBkb2VzIG5vdCBzdXBwb3J0IE5QTiwgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IHlldCBoYXBwZW5lZCwgdGhpcyB3aWxsCisgICByZXR1cm4gYGBOb25lYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQudW53cmFwKCkKIApAQCAtNDg4LDcgKzY2OCw2IEBACiAgICByZXR1cm5lZCBzb2NrZXQgc2hvdWxkIGFsd2F5cyBiZSB1c2VkIGZvciBmdXJ0aGVyIGNvbW11bmljYXRpb24gd2l0aCB0aGUKICAgIG90aGVyIHNpZGUgb2YgdGhlIGNvbm5lY3Rpb24sIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBzb2NrZXQuCiAKLQogLi4gYXR0cmlidXRlOjogU1NMU29ja2V0LmNvbnRleHQKIAogICAgVGhlIDpjbGFzczpgU1NMQ29udGV4dGAgb2JqZWN0IHRoaXMgU1NMIHNvY2tldCBpcyB0aWVkIHRvLiAgSWYgdGhlIFNTTApAQCAtNTE4LDcgKzY5Nyw3IEBACiAKIDpjbGFzczpgU1NMQ29udGV4dGAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAotLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGU9Tm9uZSkKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlPU5vbmUsIHBhc3N3b3JkPU5vbmUpCiAKICAgIExvYWQgYSBwcml2YXRlIGtleSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgY2VydGlmaWNhdGUuICBUaGUgKmNlcnRmaWxlKgogICAgc3RyaW5nIG11c3QgYmUgdGhlIHBhdGggdG8gYSBzaW5nbGUgZmlsZSBpbiBQRU0gZm9ybWF0IGNvbnRhaW5pbmcgdGhlCkBAIC01MjksOSArNzA4LDI1IEBACiAgICA6cmVmOmBzc2wtY2VydGlmaWNhdGVzYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGNlcnRpZmljYXRlCiAgICBpcyBzdG9yZWQgaW4gdGhlICpjZXJ0ZmlsZSouCiAKKyAgIFRoZSAqcGFzc3dvcmQqIGFyZ3VtZW50IG1heSBiZSBhIGZ1bmN0aW9uIHRvIGNhbGwgdG8gZ2V0IHRoZSBwYXNzd29yZCBmb3IKKyAgIGRlY3J5cHRpbmcgdGhlIHByaXZhdGUga2V5LiAgSXQgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMKKyAgIGVuY3J5cHRlZCBhbmQgYSBwYXNzd29yZCBpcyBuZWNlc3NhcnkuICBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywKKyAgIGFuZCBpdCBzaG91bGQgcmV0dXJuIGEgc3RyaW5nLCBieXRlcywgb3IgYnl0ZWFycmF5LiAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcworICAgYSBzdHJpbmcgaXQgd2lsbCBiZSBlbmNvZGVkIGFzIFVURi04IGJlZm9yZSB1c2luZyBpdCB0byBkZWNyeXB0IHRoZSBrZXkuCisgICBBbHRlcm5hdGl2ZWx5IGEgc3RyaW5nLCBieXRlcywgb3IgYnl0ZWFycmF5IHZhbHVlIG1heSBiZSBzdXBwbGllZCBkaXJlY3RseQorICAgYXMgdGhlICpwYXNzd29yZCogYXJndW1lbnQuICBJdCB3aWxsIGJlIGlnbm9yZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIG5vdAorICAgZW5jcnlwdGVkIGFuZCBubyBwYXNzd29yZCBpcyBuZWVkZWQuCisKKyAgIElmIHRoZSAqcGFzc3dvcmQqIGFyZ3VtZW50IGlzIG5vdCBzcGVjaWZpZWQgYW5kIGEgcGFzc3dvcmQgaXMgcmVxdWlyZWQsCisgICBPcGVuU1NMJ3MgYnVpbHQtaW4gcGFzc3dvcmQgcHJvbXB0aW5nIG1lY2hhbmlzbSB3aWxsIGJlIHVzZWQgdG8KKyAgIGludGVyYWN0aXZlbHkgcHJvbXB0IHRoZSB1c2VyIGZvciBhIHBhc3N3b3JkLgorCiAgICBBbiA6Y2xhc3M6YFNTTEVycm9yYCBpcyByYWlzZWQgaWYgdGhlIHByaXZhdGUga2V5IGRvZXNuJ3QKICAgIG1hdGNoIHdpdGggdGhlIGNlcnRpZmljYXRlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTmV3IG9wdGlvbmFsIGFyZ3VtZW50ICpwYXNzd29yZCouCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSkKIAogICAgTG9hZCBhIHNldCBvZiAiY2VydGlmaWNhdGlvbiBhdXRob3JpdHkiIChDQSkgY2VydGlmaWNhdGVzIHVzZWQgdG8gdmFsaWRhdGUKQEAgLTU3MCw2ICs3NjUsNTMgQEAKICAgICAgIHdoZW4gY29ubmVjdGVkLCB0aGUgOm1ldGg6YFNTTFNvY2tldC5jaXBoZXJgIG1ldGhvZCBvZiBTU0wgc29ja2V0cyB3aWxsCiAgICAgICBnaXZlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgY2lwaGVyLgogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKHByb3RvY29scykKKworICAgU3BlY2lmeSB3aGljaCBwcm90b2NvbHMgdGhlIHNvY2tldCBzaG91bGQgYXZlcnRpc2UgZHVyaW5nIHRoZSBTU0wvVExTCisgICBoYW5kc2hha2UuIEl0IHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3RyaW5ncywgbGlrZSBgYFsnaHR0cC8xLjEnLCAnc3BkeS8yJ11gYCwKKyAgIG9yZGVyZWQgYnkgcHJlZmVyZW5jZS4gVGhlIHNlbGVjdGlvbiBvZiBhIHByb3RvY29sIHdpbGwgaGFwcGVuIGR1cmluZyB0aGUKKyAgIGhhbmRzaGFrZSwgYW5kIHdpbGwgcGxheSBvdXQgYWNjb3JkaW5nIHRvIHRoZSBgTlBOIGRyYWZ0IHNwZWNpZmljYXRpb24KKyAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1hZ2wtdGxzLW5leHRwcm90b25lZz5gXy4gQWZ0ZXIgYQorICAgc3VjY2Vzc2Z1bCBoYW5kc2hha2UsIHRoZSA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbGAgbWV0aG9kIHdpbGwKKyAgIHJldHVybiB0aGUgYWdyZWVkLXVwb24gcHJvdG9jb2wuCisKKyAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgOmRhdGE6YEhBU19OUE5gIGlzCisgICBGYWxzZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoZGhmaWxlKQorCisgICBMb2FkIHRoZSBrZXkgZ2VuZXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBEaWZmaWUtSGVsbWFuIChESCkga2V5IGV4Y2hhbmdlLgorICAgVXNpbmcgREgga2V5IGV4Y2hhbmdlIGltcHJvdmVzIGZvcndhcmQgc2VjcmVjeSBhdCB0aGUgZXhwZW5zZSBvZgorICAgY29tcHV0YXRpb25hbCByZXNvdXJjZXMgKGJvdGggb24gdGhlIHNlcnZlciBhbmQgb24gdGhlIGNsaWVudCkuCisgICBUaGUgKmRoZmlsZSogcGFyYW1ldGVyIHNob3VsZCBiZSB0aGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBESAorICAgcGFyYW1ldGVycyBpbiBQRU0gZm9ybWF0LgorCisgICBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBjbGllbnQgc29ja2V0cy4gIFlvdSBjYW4gYWxzbyB1c2UgdGhlCisgICA6ZGF0YTpgT1BfU0lOR0xFX0RIX1VTRWAgb3B0aW9uIHRvIGZ1cnRoZXIgaW1wcm92ZSBzZWN1cml0eS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X2VjZGhfY3VydmUoY3VydmVfbmFtZSkKKworICAgU2V0IHRoZSBjdXJ2ZSBuYW1lIGZvciBFbGxpcHRpYyBDdXJ2ZS1iYXNlZCBEaWZmaWUtSGVsbG1hbiAoRUNESCkga2V5CisgICBleGNoYW5nZS4gIEVDREggaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiByZWd1bGFyIERIIHdoaWxlIGFyZ3VhYmx5CisgICBhcyBzZWN1cmUuICBUaGUgKmN1cnZlX25hbWUqIHBhcmFtZXRlciBzaG91bGQgYmUgYSBzdHJpbmcgZGVzY3JpYmluZworICAgYSB3ZWxsLWtub3duIGVsbGlwdGljIGN1cnZlLCBmb3IgZXhhbXBsZSBgYHByaW1lMjU2djFgYCBmb3IgYSB3aWRlbHkKKyAgIHN1cHBvcnRlZCBjdXJ2ZS4KKworICAgVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gY2xpZW50IHNvY2tldHMuICBZb3UgY2FuIGFsc28gdXNlIHRoZQorICAgOmRhdGE6YE9QX1NJTkdMRV9FQ0RIX1VTRWAgb3B0aW9uIHRvIGZ1cnRoZXIgaW1wcm92ZSBzZWN1cml0eS4KKworICAgVGhpcyBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSBpZiA6ZGF0YTpgSEFTX0VDREhgIGlzIEZhbHNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gc2VlYWxzbzo6CisgICAgICBgU1NML1RMUyAmIFBlcmZlY3QgRm9yd2FyZCBTZWNyZWN5IDxodHRwOi8vdmluY2VudC5iZXJuYXQuaW0vZW4vYmxvZy8yMDExLXNzbC1wZXJmZWN0LWZvcndhcmQtc2VjcmVjeS5odG1sPmBfCisgICAgICAgICBWaW5jZW50IEJlcm5hdC4KKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgXAogICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgXAogICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCkBAIC05ODQsMTMgKzEyMjYsMTAgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29jay5kb19oYW5kc2hha2UoKQogICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzb2NrXSwgW10sIFtdKQotICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEU6Ci0gICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NvY2tdLCBbXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc29ja10sIFtdLCBbXSkKKyAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzb2NrXSwgW10pCiAKIAogLi4gX3NzbC1zZWN1cml0eToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0YXQucnN0IGIvRG9jL2xpYnJhcnkvc3RhdC5yc3QKaW5kZXggN2RlOThiNi4uMDI1MTNkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RhdC5yc3QKQEAgLTEwNCw2ICsxMDQsMTYgQEAKICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgICAgd2Fsa3RyZWUoc3lzLmFyZ3ZbMV0sIHZpc2l0ZmlsZSkKIAorQW4gYWRkaXRpb25hbCB1dGlsaXR5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIGNvdmVydCBhIGZpbGUncyBtb2RlIGluIGEgaHVtYW4KK3JlYWRhYmxlIHN0cmluZzoKKworLi4gZnVuY3Rpb246OiBmaWxlbW9kZShtb2RlKQorCisgICBDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0gJy1yd3hyd3hyd3gnLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiBBbGwgdGhlIHZhcmlhYmxlcyBiZWxvdyBhcmUgc2ltcGx5IHN5bWJvbGljIGluZGV4ZXMgaW50byB0aGUgMTAtdHVwbGUgcmV0dXJuZWQKIGJ5IDpmdW5jOmBvcy5zdGF0YCwgOmZ1bmM6YG9zLmZzdGF0YCBvciA6ZnVuYzpgb3MubHN0YXRgLgogCkBAIC0xNzIsMTAgKzE4Miw2IEBACiAKIFVzZSBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlIGlzIG1vcmUgcG9ydGFibGUgdGhhbiB1c2Ugb2YgdGhlIGZpcnN0IHNldCBvZiBmbGFnczoKIAotLi4gZGF0YTo6IFNfSUZNVAotCi0gICBCaXQgbWFzayBmb3IgdGhlIGZpbGUgdHlwZSBiaXQgZmllbGRzLgotCiAuLiBkYXRhOjogU19JRlNPQ0sKIAogICAgU29ja2V0LgpAQCAtMzQ0LDQgKzM1MCwzIEBACiAgICBUaGUgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUuCiAKIFNlZSB0aGUgXCpCU0Qgb3IgTWFjIE9TIHN5c3RlbXMgbWFuIHBhZ2UgOm1hbnBhZ2U6YGNoZmxhZ3MoMilgIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKaW5kZXggNGIyMjRiMy4uMTM4NDA1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdApAQCAtMTUsNiArMTUsMTAgQEAKIFRoZSBwcmluY2lwYWwgYnVpbHQtaW4gdHlwZXMgYXJlIG51bWVyaWNzLCBzZXF1ZW5jZXMsIG1hcHBpbmdzLCBjbGFzc2VzLAogaW5zdGFuY2VzIGFuZCBleGNlcHRpb25zLgogCitTb21lIGNvbGxlY3Rpb24gY2xhc3NlcyBhcmUgbXV0YWJsZS4gIFRoZSBtZXRob2RzIHRoYXQgYWRkLCBzdWJ0cmFjdCwgb3IKK3JlYXJyYW5nZSB0aGVpciBtZW1iZXJzIGluIHBsYWNlLCBhbmQgZG9uJ3QgcmV0dXJuIGEgc3BlY2lmaWMgaXRlbSwgbmV2ZXIgcmV0dXJuCit0aGUgY29sbGVjdGlvbiBpbnN0YW5jZSBpdHNlbGYgYnV0IGBgTm9uZWBgLgorCiBTb21lIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZCBieSBzZXZlcmFsIG9iamVjdCB0eXBlczsgaW4gcGFydGljdWxhciwKIHByYWN0aWNhbGx5IGFsbCBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCwgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgYW5kIGNvbnZlcnRlZAogdG8gYSBzdHJpbmcgKHdpdGggdGhlIDpmdW5jOmByZXByYCBmdW5jdGlvbiBvciB0aGUgc2xpZ2h0bHkgZGlmZmVyZW50CkBAIC02NDEsMzQgKzY0NSwzNCBAQAogCiBIZXJlIGFyZSB0aGUgcnVsZXMgaW4gZGV0YWlsOgogCi0gLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbm9ubmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGFuZCBgYG5gYCBpcyBub3QgZGl2aXNpYmxlCi0gICBieSBgYFBgYCwgZGVmaW5lIGBgaGFzaCh4KWBgIGFzIGBgbSAqIGludm1vZChuLCBQKSAlIFBgYCwgd2hlcmUgYGBpbnZtb2QobiwKLSAgIFApYGAgZ2l2ZXMgdGhlIGludmVyc2Ugb2YgYGBuYGAgbW9kdWxvIGBgUGBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbm9ubmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGFuZCBgYG5gYCBpcyBub3QgZGl2aXNpYmxlCisgIGJ5IGBgUGBgLCBkZWZpbmUgYGBoYXNoKHgpYGAgYXMgYGBtICogaW52bW9kKG4sIFApICUgUGBgLCB3aGVyZSBgYGludm1vZChuLAorICBQKWBgIGdpdmVzIHRoZSBpbnZlcnNlIG9mIGBgbmBgIG1vZHVsbyBgYFBgYC4KIAotIC0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMKLSAgIGRpdmlzaWJsZSBieSBgYFBgYCAoYnV0IGBgbWBgIGlzIG5vdCkgdGhlbiBgYG5gYCBoYXMgbm8gaW52ZXJzZQotICAgbW9kdWxvIGBgUGBgIGFuZCB0aGUgcnVsZSBhYm92ZSBkb2Vzbid0IGFwcGx5OyBpbiB0aGlzIGNhc2UgZGVmaW5lCi0gICBgYGhhc2goeClgYCB0byBiZSB0aGUgY29uc3RhbnQgdmFsdWUgYGBzeXMuaGFzaF9pbmZvLmluZmBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbm9ubmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGFuZCBgYG5gYCBpcworICBkaXZpc2libGUgYnkgYGBQYGAgKGJ1dCBgYG1gYCBpcyBub3QpIHRoZW4gYGBuYGAgaGFzIG5vIGludmVyc2UKKyAgbW9kdWxvIGBgUGBgIGFuZCB0aGUgcnVsZSBhYm92ZSBkb2Vzbid0IGFwcGx5OyBpbiB0aGlzIGNhc2UgZGVmaW5lCisgIGBgaGFzaCh4KWBgIHRvIGJlIHRoZSBjb25zdGFudCB2YWx1ZSBgYHN5cy5oYXNoX2luZm8uaW5mYGAuCiAKLSAtIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBuZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgZGVmaW5lIGBgaGFzaCh4KWBgCi0gICBhcyBgYC1oYXNoKC14KWBgLiAgSWYgdGhlIHJlc3VsdGluZyBoYXNoIGlzIGBgLTFgYCwgcmVwbGFjZSBpdCB3aXRoCi0gICBgYC0yYGAuCistIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBuZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgZGVmaW5lIGBgaGFzaCh4KWBgCisgIGFzIGBgLWhhc2goLXgpYGAuICBJZiB0aGUgcmVzdWx0aW5nIGhhc2ggaXMgYGAtMWBgLCByZXBsYWNlIGl0IHdpdGgKKyAgYGAtMmBgLgogCi0gLSBUaGUgcGFydGljdWxhciB2YWx1ZXMgYGBzeXMuaGFzaF9pbmZvLmluZmBgLCBgYC1zeXMuaGFzaF9pbmZvLmluZmBgCi0gICBhbmQgYGBzeXMuaGFzaF9pbmZvLm5hbmBgIGFyZSB1c2VkIGFzIGhhc2ggdmFsdWVzIGZvciBwb3NpdGl2ZQotICAgaW5maW5pdHksIG5lZ2F0aXZlIGluZmluaXR5LCBvciBuYW5zIChyZXNwZWN0aXZlbHkpLiAgKEFsbCBoYXNoYWJsZQotICAgbmFucyBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUuKQorLSBUaGUgcGFydGljdWxhciB2YWx1ZXMgYGBzeXMuaGFzaF9pbmZvLmluZmBgLCBgYC1zeXMuaGFzaF9pbmZvLmluZmBgCisgIGFuZCBgYHN5cy5oYXNoX2luZm8ubmFuYGAgYXJlIHVzZWQgYXMgaGFzaCB2YWx1ZXMgZm9yIHBvc2l0aXZlCisgIGluZmluaXR5LCBuZWdhdGl2ZSBpbmZpbml0eSwgb3IgbmFucyAocmVzcGVjdGl2ZWx5KS4gIChBbGwgaGFzaGFibGUKKyAgbmFucyBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUuKQogCi0gLSBGb3IgYSA6Y2xhc3M6YGNvbXBsZXhgIG51bWJlciBgYHpgYCwgdGhlIGhhc2ggdmFsdWVzIG9mIHRoZSByZWFsCi0gICBhbmQgaW1hZ2luYXJ5IHBhcnRzIGFyZSBjb21iaW5lZCBieSBjb21wdXRpbmcgYGBoYXNoKHoucmVhbCkgKwotICAgc3lzLmhhc2hfaW5mby5pbWFnICogaGFzaCh6LmltYWcpYGAsIHJlZHVjZWQgbW9kdWxvCi0gICBgYDIqKnN5cy5oYXNoX2luZm8ud2lkdGhgYCBzbyB0aGF0IGl0IGxpZXMgaW4KLSAgIGBgcmFuZ2UoLTIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0gMSksIDIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0KLSAgIDEpKWBgLiAgQWdhaW4sIGlmIHRoZSByZXN1bHQgaXMgYGAtMWBgLCBpdCdzIHJlcGxhY2VkIHdpdGggYGAtMmBgLgorLSBGb3IgYSA6Y2xhc3M6YGNvbXBsZXhgIG51bWJlciBgYHpgYCwgdGhlIGhhc2ggdmFsdWVzIG9mIHRoZSByZWFsCisgIGFuZCBpbWFnaW5hcnkgcGFydHMgYXJlIGNvbWJpbmVkIGJ5IGNvbXB1dGluZyBgYGhhc2goei5yZWFsKSArCisgIHN5cy5oYXNoX2luZm8uaW1hZyAqIGhhc2goei5pbWFnKWBgLCByZWR1Y2VkIG1vZHVsbworICBgYDIqKnN5cy5oYXNoX2luZm8ud2lkdGhgYCBzbyB0aGF0IGl0IGxpZXMgaW4KKyAgYGByYW5nZSgtMioqKHN5cy5oYXNoX2luZm8ud2lkdGggLSAxKSwgMioqKHN5cy5oYXNoX2luZm8ud2lkdGggLQorICAxKSlgYC4gIEFnYWluLCBpZiB0aGUgcmVzdWx0IGlzIGBgLTFgYCwgaXQncyByZXBsYWNlZCB3aXRoIGBgLTJgYC4KIAogCiBUbyBjbGFyaWZ5IHRoZSBhYm92ZSBydWxlcywgaGVyZSdzIHNvbWUgZXhhbXBsZSBQeXRob24gY29kZSwKLWVxdWl2YWxlbnQgdG8gdGhlIGJ1aWx0aW4gaGFzaCwgZm9yIGNvbXB1dGluZyB0aGUgaGFzaCBvZiBhIHJhdGlvbmFsCitlcXVpdmFsZW50IHRvIHRoZSBidWlsdC1pbiBoYXNoLCBmb3IgY29tcHV0aW5nIHRoZSBoYXNoIG9mIGEgcmF0aW9uYWwKIG51bWJlciwgOmNsYXNzOmBmbG9hdGAsIG9yIDpjbGFzczpgY29tcGxleGA6OgogCiAKQEAgLTc5NCwxMTggKzc5OCwzNyBAQAogdGhlIHlpZWxkIGV4cHJlc3Npb24gPHlpZWxkZXhwcj5gLgogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogc3RyaW5nOyBzZXF1ZW5jZSB0eXBlcwotCiAuLiBfdHlwZXNzZXE6CiAKLVNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAsIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YHJhbmdlYAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTZXF1ZW5jZSBUeXBlcyAtLS0gOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmB0dXBsZWAsIDpjbGFzczpgcmFuZ2VgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZXJlIGFyZSBzaXggc2VxdWVuY2UgdHlwZXM6IHN0cmluZ3MsIGJ5dGUgc2VxdWVuY2VzICg6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzKSwKLWJ5dGUgYXJyYXlzICg6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyksIGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZSBvYmplY3RzLiAgRm9yCi1vdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gOmNsYXNzOmBkaWN0YCBhbmQgOmNsYXNzOmBzZXRgIGNsYXNzZXMsIGFuZAotdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUuCitUaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZSBvYmplY3RzLgorQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZgorOnJlZjpgYmluYXJ5IGRhdGEgPGJpbmFyeXNlcT5gIGFuZCA6cmVmOmB0ZXh0IHN0cmluZ3MgPHRleHRzZXE+YCBhcmUKK2Rlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuCiAKLS4uIGluZGV4OjoKLSAgIG9iamVjdDogc2VxdWVuY2UKLSAgIG9iamVjdDogYnl0ZXMKLSAgIG9iamVjdDogYnl0ZWFycmF5Ci0gICBvYmplY3Q6IHR1cGxlCi0gICBvYmplY3Q6IGxpc3QKLSAgIG9iamVjdDogcmFuZ2UKLSAgIG9iamVjdDogc3RyaW5nCi0gICBzaW5nbGU6IHN0cmluZwotICAgc2luZ2xlOiBzdHIoKSAoYnVpbHQtaW4gZnVuY3Rpb24pOyAoc2VlIGFsc28gc3RyaW5nKQogCi1UZXh0dWFsIGRhdGEgaW4gUHl0aG9uIGlzIGhhbmRsZWQgd2l0aCA6Y2xhc3M6YHN0cmAgb2JqZWN0cywgb3IgOmRmbjpgc3RyaW5nc2AuCi1TdHJpbmdzIGFyZSBpbW11dGFibGUgOnJlZjpgc2VxdWVuY2VzIDx0eXBlc3NlcT5gIG9mIFVuaWNvZGUgY29kZSBwb2ludHMuCi1TdHJpbmcgbGl0ZXJhbHMgYXJlIHdyaXR0ZW4gaW4gc2luZ2xlIG9yCi1kb3VibGUgcXVvdGVzOiBgYCd4eXp6eSdgYCwgYGAiZnJvYm96eiJgYC4gIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dAotc3RyaW5nIGxpdGVyYWxzLiAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZQotYWxzbyBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLgorLi4gX3R5cGVzc2VxLWNvbW1vbjoKIAotQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNvbnRhaW4gc2luZ2xlIGJ5dGVzIC0tIHRoZSBmb3JtZXIgaXMgaW1tdXRhYmxlCi13aGlsZSB0aGUgbGF0dGVyIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZS4KLUJ5dGVzIG9iamVjdHMgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IHVzaW5nIHRoZQotY29uc3RydWN0b3IsIDpmdW5jOmBieXRlc2AsIGFuZCBmcm9tIGxpdGVyYWxzOyB1c2UgYSBgYGJgYCBwcmVmaXggd2l0aCBub3JtYWwKLXN0cmluZyBzeW50YXg6IGBgYid4eXp6eSdgYC4gIFRvIGNvbnN0cnVjdCBieXRlIGFycmF5cywgdXNlIHRoZQotOmZ1bmM6YGJ5dGVhcnJheWAgZnVuY3Rpb24uCitDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hpbGUgc3RyaW5nIG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzIChyZXByZXNlbnRlZCBieSBzdHJpbmdzIG9mCi1sZW5ndGggMSksIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mICppbnRlZ2VycyogKGJldHdlZW4gMAotYW5kIDI1NSksIHJlcHJlc2VudGluZyB0aGUgQVNDSUkgdmFsdWUgb2Ygc2luZ2xlIGJ5dGVzLiAgVGhhdCBtZWFucyB0aGF0IGZvcgotYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0ICpiKiwgYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZQotYGBiWzA6MV1gYCB3aWxsIGJlIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCBvZiBsZW5ndGggMS4gIFRoZQotcmVwcmVzZW50YXRpb24gb2YgYnl0ZXMgb2JqZWN0cyB1c2VzIHRoZSBsaXRlcmFsIGZvcm1hdCAoYGBiJy4uLidgYCkgc2luY2UgaXQKLWlzIGdlbmVyYWxseSBtb3JlIHVzZWZ1bCB0aGFuIGUuZy4gYGBieXRlcyhbNTAsIDE5LCAxMDBdKWBgLiAgWW91IGNhbiBhbHdheXMKLWNvbnZlcnQgYSBieXRlcyBvYmplY3QgaW50byBhIGxpc3Qgb2YgaW50ZWdlcnMgdXNpbmcgYGBsaXN0KGIpYGAuCisuLiBpbmRleDo6IG9iamVjdDogc2VxdWVuY2UKIAotQWxzbywgd2hpbGUgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zLCBieXRlIHN0cmluZ3MgYW5kIFVuaWNvZGUgc3RyaW5ncwotY291bGQgYmUgZXhjaGFuZ2VkIGZvciBlYWNoIG90aGVyIHJhdGhlciBmcmVlbHkgKGJhcnJpbmcgZW5jb2RpbmcgaXNzdWVzKSwKLXN0cmluZ3MgYW5kIGJ5dGVzIGFyZSBub3cgY29tcGxldGVseSBzZXBhcmF0ZSBjb25jZXB0cy4gIFRoZXJlJ3Mgbm8gaW1wbGljaXQKLWVuLS9kZWNvZGluZyBpZiB5b3UgcGFzcyBhbiBvYmplY3Qgb2YgdGhlIHdyb25nIHR5cGUuICBBIHN0cmluZyBhbHdheXMKLWNvbXBhcmVzIHVuZXF1YWwgdG8gYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LgotCi1MaXN0cyBhcmUgY29uc3RydWN0ZWQgd2l0aCBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2EsCi1iLCBjXWBgLiAgVHVwbGVzIGFyZSBjb25zdHJ1Y3RlZCBieSB0aGUgY29tbWEgb3BlcmF0b3IgKG5vdCB3aXRoaW4gc3F1YXJlCi1icmFja2V0cyksIHdpdGggb3Igd2l0aG91dCBlbmNsb3NpbmcgcGFyZW50aGVzZXMsIGJ1dCBhbiBlbXB0eSB0dXBsZSBtdXN0IGhhdmUKLXRoZSBlbmNsb3NpbmcgcGFyZW50aGVzZXMsIHN1Y2ggYXMgYGBhLCBiLCBjYGAgb3IgYGAoKWBgLiAgQSBzaW5nbGUgaXRlbSB0dXBsZQotbXVzdCBoYXZlIGEgdHJhaWxpbmcgY29tbWEsIHN1Y2ggYXMgYGAoZCwpYGAuCi0KLU9iamVjdHMgb2YgdHlwZSByYW5nZSBhcmUgY3JlYXRlZCB1c2luZyB0aGUgOmZ1bmM6YHJhbmdlYCBmdW5jdGlvbi4gIFRoZXkgZG9uJ3QKLXN1cHBvcnQgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLCBhbmQgdXNpbmcgOmZ1bmM6YG1pbmAgb3IgOmZ1bmM6YG1heGAgb24KLXRoZW0gaXMgaW5lZmZpY2llbnQuCi0KLU1vc3Qgc2VxdWVuY2UgdHlwZXMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuICBUaGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgCi1vcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvbiBvcGVyYXRpb25zLiAgVGhlIGBgK2BgIGFuZAotYGAqYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4KLVszXV8gQWRkaXRpb25hbCBtZXRob2RzIGFyZSBwcm92aWRlZCBmb3IgOnJlZjpgdHlwZXNzZXEtbXV0YWJsZWAuCitUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZSB0eXBlcywKK2JvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgIEFCQyBpcworcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uCitjdXN0b20gc2VxdWVuY2UgdHlwZXMuCiAKIFRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eQogKG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkpLiAgSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KgotYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlOyAqbiosICppKiwgKmoqIGFuZCAqayogYXJlIGludGVnZXJzLgorYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKiwgKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMKK2FuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmQgdmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqLgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IE9wZXJhdGlvbiAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8Ci0rPT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCi18IGBgeCBpbiBzYGAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgfCBcKDEpICAgICB8Ci18ICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgeCBub3QgaW4gc2BgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgfCBcKDEpICAgICB8Ci18ICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgcyArIHRgYCAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICAgfCBcKDYpICAgICB8Ci18ICAgICAgICAgICAgICAgICAgfCAqdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgcyAqIG4sIG4gKiBzYGAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgfCBcKDIpICAgICB8Ci18ICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgc1tpXWBgICAgICAgICAgfCAqaSpcIHRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgfCBcKDMpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgc1tpOmpdYGAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAoMykoNCkgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgc1tpOmo6a11gYCAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAoMykoNSkgICB8Ci18ICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgbGVuKHMpYGAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgbWluKHMpYGAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgbWF4KHMpYGAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgcy5pbmRleChpKWBgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlICAgfCAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgfCBvZiAqaSogaW4gKnMqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IGBgcy5jb3VudChpKWBgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiAgfCAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgfCAqaSogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi0KLVNlcXVlbmNlIHR5cGVzIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsIHR1cGxlcyBhbmQgbGlzdHMgYXJlCi1jb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmcgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdAotdG8gY29tcGFyZSBlcXVhbCwgZXZlcnkgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUKLW9mIHRoZSBzYW1lIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlCi06cmVmOmBjb21wYXJpc29uc2AgaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pCitUaGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZQorY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgYGArYGAgKGNvbmNhdGVuYXRpb24pIGFuZCBgYCpgYCAocmVwZXRpdGlvbikKK29wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuCiAKIC4uIGluZGV4OjoKICAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgc2VxdWVuY2U7IHR5cGVzCkBAIC05MTgsMTggKzg0MSw2NyBAQAogICAgcGFpcjogc2xpY2U7IG9wZXJhdGlvbgogICAgb3BlcmF0b3I6IGluCiAgICBvcGVyYXRvcjogbm90IGluCisgICBzaW5nbGU6IGNvdW50KCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogaW5kZXgoKSAoc2VxdWVuY2UgbWV0aG9kKQorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCit8IGBgeCBpbiBzYGAgICAgICAgICAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICB8IFwoMSkgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgeCBub3QgaW4gc2BgICAgICAgICAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyB8IFwoMSkgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcyArIHRgYCAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgICB8ICg2KSg3KSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcyAqIG5gYCBvciAgICAgICAgICAgICB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAqcyogICAgICB8ICgyKSg3KSAgIHwKK3wgYGBuICogc2BgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgc1tpXWBgICAgICAgICAgICAgICAgICB8ICppKlwgdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICB8IFwoMykgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAoMykoNCkgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzW2k6ajprXWBgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDUpICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBsZW4ocylgYCAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgbWluKHMpYGAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYG1heChzKWBgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSAgIHwgXCg4KSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiAqeCogaW4gKnMqIChhdCBvciBhZnRlciAgICAgfCAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4ICppKiBhbmQgYmVmb3JlIGluZGV4ICpqKil8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMuY291bnQoeClgYCAgICAgICAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiAgfCAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworCitTZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLCB0dXBsZXMKK2FuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuCitUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnkgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZQordHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsCitkZXRhaWxzIHNlZSA6cmVmOmBjb21wYXJpc29uc2AgaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pCiAKIE5vdGVzOgogCiAoMSkKLSAgIFdoZW4gKnMqIGlzIGEgc3RyaW5nIG9iamVjdCwgdGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGFjdCBsaWtlIGEKLSAgIHN1YnN0cmluZyB0ZXN0LgorICAgV2hpbGUgdGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZQorICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlcworICAgKHN1Y2ggYXMgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgKSBhbHNvIHVzZQorICAgdGhlbSBmb3Igc3Vic2VxdWVuY2UgdGVzdGluZzo6CisKKyAgICAgID4+PiAiZ2ciIGluICJlZ2dzIgorICAgICAgVHJ1ZQogCiAoMikKICAgIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW4gZW1wdHkKICAgIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXMgYXJlIHNoYWxsb3c7CiAgICBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7Ci0gICBjb25zaWRlcjoKKyAgIGNvbnNpZGVyOjoKIAogICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDMKICAgICAgID4+PiBsaXN0cwpAQCAtOTQxLDcgKzkxMyw3IEBACiAgICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nIGFuIGVtcHR5CiAgICBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnMgdG8pIHRoaXMgc2luZ2xlIGVtcHR5CiAgICBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2YgYGBsaXN0c2BgIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuCi0gICBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2YgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OgorICAgWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTo6CiAKICAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV0KICAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMykKQEAgLTk3MiwzMyArOTQ0LDUyNiBAQAogICAgSWYgKmsqIGlzIGBgTm9uZWBgLCBpdCBpcyB0cmVhdGVkIGxpa2UgYGAxYGAuCiAKICg2KQotICAgQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc3RyaW5ncyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuICBUaGlzIG1lYW5zCi0gICB0aGF0IGJ1aWxkaW5nIHVwIGEgc3RyaW5nIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEgcXVhZHJhdGljCi0gICBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHN0cmluZyBsZW5ndGguICBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LAotICAgeW91IG11c3Qgc3dpdGNoIHRvIG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGJlbG93OgorICAgQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC4gIFRoaXMKKyAgIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhCisgICBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzZXF1ZW5jZSBsZW5ndGguICBUbyBnZXQgYSBsaW5lYXIKKyAgIHJ1bnRpbWUgY29zdCwgeW91IG11c3Qgc3dpdGNoIHRvIG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGJlbG93OgogCiAgICAqIGlmIGNvbmNhdGVuYXRpbmcgOmNsYXNzOmBzdHJgIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2UKLSAgICAgOm1ldGg6YHN0ci5qb2luYCBhdCB0aGUgZW5kOworICAgICA6bWV0aDpgc3RyLmpvaW5gIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhIDpjbGFzczpgaW8uU3RyaW5nSU9gCisgICAgIGluc3RhbmNlIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZQogCiAgICAqIGlmIGNvbmNhdGVuYXRpbmcgOmNsYXNzOmBieXRlc2Agb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlCi0gICAgIDptZXRoOmBieXRlcy5qb2luYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZSBjb25jYXRlbmF0aW9uIHdpdGggYQotICAgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LiAgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kCi0gICAgIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbS4KKyAgICAgOm1ldGg6YGJ5dGVzLmpvaW5gIG9yIDpjbGFzczpgaW8uQnl0ZXNJT2AsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UKKyAgICAgY29uY2F0ZW5hdGlvbiB3aXRoIGEgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdC4gIDpjbGFzczpgYnl0ZWFycmF5YAorICAgICBvYmplY3RzIGFyZSBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc20KIAorICAgKiBpZiBjb25jYXRlbmF0aW5nIDpjbGFzczpgdHVwbGVgIG9iamVjdHMsIGV4dGVuZCBhIDpjbGFzczpgbGlzdGAgaW5zdGVhZAorCisgICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb24KKworCisoNykKKyAgU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyA6Y2xhc3M6YHJhbmdlYCkgb25seSBzdXBwb3J0IGl0ZW0gc2VxdWVuY2VzCisgIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uJ3Qgc3VwcG9ydCBzZXF1ZW5jZQorICBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uCisKKyg4KQorICAgYGBpbmRleGBgIHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLgorICAgV2hlbiBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93CisgICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGUgZXh0cmEKKyAgIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBzW2k6al0uaW5kZXgoeClgYCwgb25seQorICAgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhIGFuZCB3aXRoIHRoZSByZXR1cm5lZCBpbmRleCBiZWluZyByZWxhdGl2ZSB0bworICAgdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgb2YgdGhlIHNsaWNlLgorCisKKy4uIF90eXBlc3NlcS1pbW11dGFibGU6CisKK0ltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHRyaXBsZTogaW1tdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKKyAgIG9iamVjdDogdHVwbGUKKyAgIGJ1aWx0aW46IGhhc2gKKworVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnQgdGhhdCBpcworbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvciB0aGUgOmZ1bmM6YGhhc2hgCitidWlsdC1pbi4KKworVGhpcyBzdXBwb3J0IGFsbG93cyBpbW11dGFibGUgc2VxdWVuY2VzLCBzdWNoIGFzIDpjbGFzczpgdHVwbGVgIGluc3RhbmNlcywgdG8KK2JlIHVzZWQgYXMgOmNsYXNzOmBkaWN0YCBrZXlzIGFuZCBzdG9yZWQgaW4gOmNsYXNzOmBzZXRgIGFuZCA6Y2xhc3M6YGZyb3plbnNldGAKK2luc3RhbmNlcy4KKworQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGUgdmFsdWVzIHdpbGwKK3Jlc3VsdCBpbiA6ZXhjOmBUeXBlRXJyb3JgLgorCisKKy4uIF90eXBlc3NlcS1tdXRhYmxlOgorCitNdXRhYmxlIFNlcXVlbmNlIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHRyaXBsZTogbXV0YWJsZTsgc2VxdWVuY2U7IHR5cGVzCisgICBvYmplY3Q6IGxpc3QKKyAgIG9iamVjdDogYnl0ZWFycmF5CisKK1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcy4KK1RoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2VgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlIGl0CitlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy4KKworSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueQoraXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlCithbmQgdmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgOmNsYXNzOmBieXRlYXJyYXlgIG9ubHkKK2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiBgYDAgPD0geCA8PSAyNTVgYCkuCisKKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBzZXF1ZW5jZTsgdHlwZXMKKyAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgbGlzdDsgdHlwZQorICAgcGFpcjogc3Vic2NyaXB0OyBhc3NpZ25tZW50CisgICBwYWlyOiBzbGljZTsgYXNzaWdubWVudAorICAgc3RhdGVtZW50OiBkZWwKKyAgIHNpbmdsZTogYXBwZW5kKCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogY2xlYXIoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBjb3B5KCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogZXh0ZW5kKCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogaW5zZXJ0KCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogcG9wKCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogcmVtb3ZlKCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogcmV2ZXJzZSgpIChzZXF1ZW5jZSBtZXRob2QpCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PSsKK3wgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXMgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgICB8IFwoMSkgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJlIHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuY2xlYXIoKWBgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgIHwgXCg1KSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuY29weSgpYGAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYHwgXCg1KSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuZXh0ZW5kKHQpYGAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250ZW50cyBvZiAqdCogKHNhbWUgYXMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tsZW4ocyk6bGVuKHMpXSA9IHRgYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzW2k6aV0gPSBbeF1gYCkgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICB8IFwoMikgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiB8IFwoMykgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICB8IFwoNCkgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworCitOb3RlczoKKworKDEpCisgICAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLgorCisoMikKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxhc3QKKyAgIGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuCisKKygzKQorICAgYGByZW1vdmVgYCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4KKworKDQpCisgICBUaGUgOm1ldGg6YHJldmVyc2VgIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2YKKyAgIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlcyBieQorICAgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgcmV2ZXJzZWQgc2VxdWVuY2UuCisKKyg1KQorICAgOm1ldGg6YGNsZWFyYCBhbmQgOm1ldGg6YCFjb3B5YCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlCisgICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZyBvcGVyYXRpb25zCisgICAoc3VjaCBhcyA6Y2xhc3M6YGRpY3RgIGFuZCA6Y2xhc3M6YHNldGApCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgOm1ldGg6YGNsZWFyYCBhbmQgOm1ldGg6YCFjb3B5YCBtZXRob2RzLgorCisKKy4uIF90eXBlc3NlcS1saXN0OgorCitMaXN0cworLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IGxpc3QKKworTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZgoraG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgdmFyeSBieQorYXBwbGljYXRpb24pLgorCisuLiBjbGFzczo6IGxpc3QoW2l0ZXJhYmxlXSkKKworICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czoKKworICAgKiBVc2luZyBhIHBhaXIgb2Ygc3F1YXJlIGJyYWNrZXRzIHRvIGRlbm90ZSB0aGUgZW1wdHkgbGlzdDogYGBbXWBgCisgICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYV1gYCwgYGBbYSwgYiwgY11gYAorICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogYGBbeCBmb3IgeCBpbiBpdGVyYWJsZV1gYAorICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogYGBsaXN0KClgYCBvciBgYGxpc3QoaXRlcmFibGUpYGAKKworICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGUgc2FtZQorICAgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGEgc2VxdWVuY2UsIGEKKyAgIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3Igb2JqZWN0LiAgSWYgKml0ZXJhYmxlKgorICAgaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZCByZXR1cm5lZCwgc2ltaWxhciB0byBgYGl0ZXJhYmxlWzpdYGAuCisgICBGb3IgZXhhbXBsZSwgYGBsaXN0KCdhYmMnKWBgIHJldHVybnMgYGBbJ2EnLCAnYicsICdjJ11gYCBhbmQKKyAgIGBgbGlzdCggKDEsIDIsIDMpIClgYCByZXR1cm5zIGBgWzEsIDIsIDNdYGAuCisgICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgbGlzdCwgYGBbXWBgLgorCisKKyAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGUgOmZ1bmM6YHNvcnRlZGAKKyAgIGJ1aWx0LWluLgorCisgICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIGFuZAorICAgOnJlZjpgbXV0YWJsZSA8dHlwZXNzZXEtbXV0YWJsZT5gIHNlcXVlbmNlIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUKKyAgIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDoKKworICAgLi4gbWV0aG9kOjogbGlzdC5zb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpCisKKyAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5IGBgPGBgIGNvbXBhcmlzb25zCisgICAgICBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmIGFueSBjb21wYXJpc29uIG9wZXJhdGlvbnMKKyAgICAgIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbCBmYWlsIChhbmQgdGhlIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdAorICAgICAgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWQgc3RhdGUpLgorCisgICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3QgYQorICAgICAgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yIGV4YW1wbGUsIGBga2V5PXN0ci5sb3dlcmBgKS4KKyAgICAgIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gdGhlIGxpc3QgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZAorICAgICAgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmcgcHJvY2Vzcy4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgYGBOb25lYGAKKyAgICAgIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZQorICAgICAga2V5IHZhbHVlLgorCisgICAgICBUaGUgOmZ1bmM6YGZ1bmN0b29scy5jbXBfdG9fa2V5YCB1dGlsaXR5IGlzIGF2YWlsYWJsZSB0byBjb252ZXJ0IGEgMi54CisgICAgICBzdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLgorCisgICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBsaXN0IGVsZW1lbnRzCisgICAgICBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLgorCisgICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbgorICAgICAgc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZQorICAgICAgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlIDpmdW5jOmBzb3J0ZWRgIHRvCisgICAgICBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgaW5zdGFuY2UpLgorCisgICAgICBUaGUgOm1ldGg6YHNvcnRgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGUgaWYgaXQKKyAgICAgIGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsCisgICAgICAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkKKyAgICAgIGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS4KKworICAgICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICAgICBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLCB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuCisgICAgICAgICBpbnNwZWN0LCB0aGUgbGlzdCBpcyB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlCisgICAgICAgICBsaXN0IGFwcGVhciBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmIGl0IGNhbgorICAgICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LgorCisKKy4uIF90eXBlc3NlcS10dXBsZToKKworVHVwbGVzCistLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IHR1cGxlCisKK1R1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2YKK2hldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlIDpmdW5jOmBlbnVtZXJhdGVgCitidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YKK2hvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSA6Y2xhc3M6YHNldGAgb3IKKzpjbGFzczpgZGljdGAgaW5zdGFuY2UpLgorCisuLiBjbGFzczo6IHR1cGxlKFtpdGVyYWJsZV0pCisKKyAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czoKKworICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogYGAoKWBgCisgICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiBgYGEsYGAgb3IgYGAoYSwpYGAKKyAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBhLCBiLCBjYGAgb3IgYGAoYSwgYiwgYylgYAorICAgKiBVc2luZyB0aGUgOmZ1bmM6YHR1cGxlYCBidWlsdC1pbjogYGB0dXBsZSgpYGAgb3IgYGB0dXBsZShpdGVyYWJsZSlgYAorCisgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGUgc2FtZQorICAgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGEgc2VxdWVuY2UsIGEKKyAgIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3Igb2JqZWN0LiAgSWYgKml0ZXJhYmxlKgorICAgaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuIEZvciBleGFtcGxlLAorICAgYGB0dXBsZSgnYWJjJylgYCByZXR1cm5zIGBgKCdhJywgJ2InLCAnYycpYGAgYW5kCisgICBgYHR1cGxlKCBbMSwgMiwgM10gKWBgIHJldHVybnMgYGAoMSwgMiwgMylgYC4KKyAgIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgYGAoKWBgLgorCisgICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGUgcGFyZW50aGVzZXMuCisgICBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5IHR1cGxlIGNhc2UsIG9yCisgICB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LiBGb3IgZXhhbXBsZSwKKyAgIGBgZihhLCBiLCBjKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlIGFyZ3VtZW50cywgd2hpbGUKKyAgIGBgZigoYSwgYiwgYykpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlIGFyZ3VtZW50LgorCisgICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgOnJlZjpgY29tbW9uIDx0eXBlc3NlcS1jb21tb24+YCBzZXF1ZW5jZQorICAgb3BlcmF0aW9ucy4KKworRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyBjbGVhcmVyIHRoYW4KK2FjY2VzcyBieSBpbmRleCwgOmZ1bmM6YGNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIG1heSBiZSBhIG1vcmUgYXBwcm9wcmlhdGUKK2Nob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC4KKworCisuLiBfdHlwZXNzZXEtcmFuZ2U6CisKK1JhbmdlcworLS0tLS0tCisKKy4uIGluZGV4Ojogb2JqZWN0OiByYW5nZQorCitUaGUgOmNsYXNzOmByYW5nZWAgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCBpcworY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiA6a2V5d29yZDpgZm9yYAorbG9vcHMuCisKKy4uIGNsYXNzOjogcmFuZ2Uoc3RvcCkKKyAgICAgICAgICAgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkKKworICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyIGJ1aWx0LWluCisgICA6Y2xhc3M6YGludGAgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGBgX19pbmRleF9fYGAgc3BlY2lhbAorICAgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAxYGAuCisgICBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4KKyAgIElmICpzdGVwKiBpcyB6ZXJvLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgYGByYGAgYXJlIGRldGVybWluZWQgYnkgdGhlCisgICBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAgd2hlcmUgYGBpID49IDBgYCBhbmQKKyAgIGBgcltpXSA8IHN0b3BgYC4KKworICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbCBkZXRlcm1pbmVkIGJ5CisgICB0aGUgZm9ybXVsYSBgYHJbaV0gPSBzdGFydCArIHN0ZXAqaWBgLCBidXQgdGhlIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgCisgICBhbmQgYGByW2ldID4gc3RvcGBgLgorCisgICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmIGBgclswXWBgIGRvZXMgbm90IG1lYW50IHRoZSB2YWx1ZQorICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlIGFyZSBpbnRlcnByZXRlZAorICAgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBkZXRlcm1pbmVkIGJ5IHRoZSBwb3NpdGl2ZQorICAgaW5kaWNlcy4KKworICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuIDpkYXRhOmBzeXMubWF4c2l6ZWAgYXJlCisgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgOmZ1bmM6YGxlbmApIG1heSByYWlzZQorICAgOmV4YzpgT3ZlcmZsb3dFcnJvcmAuCisKKyAgIFJhbmdlIGV4YW1wbGVzOjoKKworICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQorICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCisgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCisgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCisgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCisgICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCisgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCisgICAgICBbMCwgMywgNiwgOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQorICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCisgICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKKyAgICAgIFtdCisgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKKyAgICAgIFtdCisKKyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlIG9wZXJhdGlvbnMKKyAgIGV4Y2VwdCBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSBvYmplY3RzIGNhbgorICAgb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gYW5kIHJlcGV0aXRpb24gYW5kCisgICBjb25jYXRlbmF0aW9uIHdpbGwgdXN1YWxseSB2aW9sYXRlIHRoYXQgcGF0dGVybikuCisKKyAgIC4uIGRhdGE6IHN0YXJ0CisKKyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yIGBgMGBgIGlmIHRoZSBwYXJhbWV0ZXIgd2FzCisgICAgICBub3Qgc3VwcGxpZWQpCisKKyAgIC4uIGRhdGE6IHN0b3AKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyCisKKyAgIC4uIGRhdGE6IHN0ZXAKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciBgYDFgYCBpZiB0aGUgcGFyYW1ldGVyIHdhcworICAgICAgbm90IHN1cHBsaWVkKQorCitUaGUgYWR2YW50YWdlIG9mIHRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIG92ZXIgYSByZWd1bGFyIDpjbGFzczpgbGlzdGAgb3IKKzpjbGFzczpgdHVwbGVgIGlzIHRoYXQgYSA6Y2xhc3M6YHJhbmdlYCBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZQorKHNtYWxsKSBhbW91bnQgb2YgbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0Citvbmx5IHN0b3JlcyB0aGUgYGBzdGFydGBgLCBgYHN0b3BgYCBhbmQgYGBzdGVwYGAgdmFsdWVzLCBjYWxjdWxhdGluZyBpbmRpdmlkdWFsCitpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuCisKK1JhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCitmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKK3N1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgorCisgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQorICAgPj4+IHIKKyAgIHJhbmdlKDAsIDIwLCAyKQorICAgPj4+IDExIGluIHIKKyAgIEZhbHNlCisgICA+Pj4gMTAgaW4gcgorICAgVHJ1ZQorICAgPj4+IHIuaW5kZXgoMTApCisgICA1CisgICA+Pj4gcls1XQorICAgMTAKKyAgID4+PiByWzo1XQorICAgcmFuZ2UoMCwgMTAsIDIpCisgICA+Pj4gclstMV0KKyAgIDE4CisKK1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCBgYD09YGAgYW5kIGBgIT1gYCBjb21wYXJlcwordGhlbSBhcyBzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZgordGhleSByZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2UKK29iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50IDphdHRyOmBzdGFydGAsCis6YXR0cjpgc3RvcGAgYW5kIDphdHRyOmBzdGVwYCBhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSBgYHJhbmdlKDApID09CityYW5nZSgyLCAxLCAzKWBgIG9yIGBgcmFuZ2UoMCwgMywgMikgPT0gcmFuZ2UoMCwgNCwgMilgYC4pCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4KKyAgIFN1cHBvcnQgc2xpY2luZyBhbmQgbmVnYXRpdmUgaW5kaWNlcy4KKyAgIFRlc3QgOmNsYXNzOmBpbnRgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnQgdGltZSBpbnN0ZWFkIG9mCisgICBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24gdGhlCisgICBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nIGJhc2VkIG9uCisgICBvYmplY3QgaWRlbnRpdHkpLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIFRoZSA6YXR0cjpgc3RhcnRgLCA6YXR0cjpgc3RvcGAgYW5kIDphdHRyOmBzdGVwYCBhdHRyaWJ1dGVzLgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogc3RyaW5nOyB0ZXh0IHNlcXVlbmNlIHR5cGUKKyAgIHNpbmdsZTogc3RyIChidWlsdC1pbiBjbGFzcyk7IChzZWUgYWxzbyBzdHJpbmcpCisgICBvYmplY3Q6IHN0cmluZworCisuLiBfdGV4dHNlcToKKworVGV4dCBTZXF1ZW5jZSBUeXBlIC0tLSA6Y2xhc3M6YHN0cmAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RleHR1YWwgZGF0YSBpbiBQeXRob24gaXMgaGFuZGxlZCB3aXRoIDpjbGFzczpgc3RyYCBvYmplY3RzLCBvciA6ZGZuOmBzdHJpbmdzYC4KK1N0cmluZ3MgYXJlIGltbXV0YWJsZQorOnJlZjpgc2VxdWVuY2VzIDx0eXBlc3NlcT5gIG9mIFVuaWNvZGUgY29kZSBwb2ludHMuICBTdHJpbmcgbGl0ZXJhbHMgYXJlCit3cml0dGVuIGluIGEgdmFyaWV0eSBvZiB3YXlzOgorCisqIFNpbmdsZSBxdW90ZXM6IGBgJ2FsbG93cyBlbWJlZGRlZCAiZG91YmxlIiBxdW90ZXMnYGAKKyogRG91YmxlIHF1b3RlczogYGAiYWxsb3dzIGVtYmVkZGVkICdzaW5nbGUnIHF1b3RlcyJgYC4KKyogVHJpcGxlIHF1b3RlZDogYGAnJydUaHJlZSBzaW5nbGUgcXVvdGVzJycnYGAsIGBgIiIiVGhyZWUgZG91YmxlIHF1b3RlcyIiImBgCisKK1RyaXBsZSBxdW90ZWQgc3RyaW5ncyBtYXkgc3BhbiBtdWx0aXBsZSBsaW5lcyAtIGFsbCBhc3NvY2lhdGVkIHdoaXRlc3BhY2Ugd2lsbAorYmUgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyBsaXRlcmFsLgorCitTdHJpbmcgbGl0ZXJhbHMgdGhhdCBhcmUgcGFydCBvZiBhIHNpbmdsZSBleHByZXNzaW9uIGFuZCBoYXZlIG9ubHkgd2hpdGVzcGFjZQorYmV0d2VlbiB0aGVtIHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwuIFRoYXQKK2lzLCBgYCgic3BhbSAiICJlZ2dzIikgPT0gInNwYW0gZWdncyJgYC4KKworU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0IHRoZSB2YXJpb3VzIGZvcm1zIG9mIHN0cmluZyBsaXRlcmFsLAoraW5jbHVkaW5nIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2VzLCBhbmQgdGhlIGBgcmBgICgicmF3IikgcHJlZml4IHRoYXQKK2Rpc2FibGVzIG1vc3QgZXNjYXBlIHNlcXVlbmNlIHByb2Nlc3NpbmcuCisKK1N0cmluZ3MgbWF5IGFsc28gYmUgY3JlYXRlZCBmcm9tIG90aGVyIG9iamVjdHMgdXNpbmcgdGhlIDpjbGFzczpgc3RyYAorY29uc3RydWN0b3IuCisKK1NpbmNlIHRoZXJlIGlzIG5vIHNlcGFyYXRlICJjaGFyYWN0ZXIiIHR5cGUsIGluZGV4aW5nIGEgc3RyaW5nIHByb2R1Y2VzCitzdHJpbmdzIG9mIGxlbmd0aCAxLiBUaGF0IGlzLCBmb3IgYSBub24tZW1wdHkgc3RyaW5nICpzKiwgYGBzWzBdID09IHNbMDoxXWBgLgorCisuLiBpbmRleDo6CisgICBvYmplY3Q6IGlvLlN0cmluZ0lPCisKK1RoZXJlIGlzIGFsc28gbm8gbXV0YWJsZSBzdHJpbmcgdHlwZSwgYnV0IDptZXRoOmBzdHIuam9pbmAgb3IKKzpjbGFzczpgaW8uU3RyaW5nSU9gIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvbnN0cnVjdCBzdHJpbmdzIGZyb20KK211bHRpcGxlIGZyYWdtZW50cy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMiBzZXJpZXMsIHRoZSBgYHVgYCBwcmVmaXggaXMKKyAgIG9uY2UgYWdhaW4gcGVybWl0dGVkIG9uIHN0cmluZyBsaXRlcmFscy4gSXQgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZworICAgb2Ygc3RyaW5nIGxpdGVyYWxzIGFuZCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUgYGByYGAgcHJlZml4LgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogc3RyaW5nOyBzdHIgKGJ1aWx0LWluIGNsYXNzKQorCisuLiBjbGFzczo6IHN0cihvYmplY3Q9JycpCisgICAgICAgICAgIHN0cihvYmplY3Q9YicnLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgIFJldHVybiBhIDpyZWY6YHN0cmluZyA8dGV4dHNlcT5gIHZlcnNpb24gb2YgKm9iamVjdCouICBJZiAqb2JqZWN0KiBpcyBub3QKKyAgIHByb3ZpZGVkLCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuICBPdGhlcndpc2UsIHRoZSBiZWhhdmlvciBvZiBgYHN0cigpYGAKKyAgIGRlcGVuZHMgb24gd2hldGhlciAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIGdpdmVuLCBhcyBmb2xsb3dzLgorCisgICBJZiBuZWl0aGVyICplbmNvZGluZyogbm9yICplcnJvcnMqIGlzIGdpdmVuLCBgYHN0cihvYmplY3QpYGAgcmV0dXJucworICAgOm1ldGg6YG9iamVjdC5fX3N0cl9fKCkgPG9iamVjdC5fX3N0cl9fPmAsIHdoaWNoIGlzIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseQorICAgcHJpbnRhYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiAqb2JqZWN0Ki4gIEZvciBzdHJpbmcgb2JqZWN0cywgdGhpcyBpcworICAgdGhlIHN0cmluZyBpdHNlbGYuICBJZiAqb2JqZWN0KiBkb2VzIG5vdCBoYXZlIGEgOm1ldGg6YH5vYmplY3QuX19zdHJfX2AKKyAgIG1ldGhvZCwgdGhlbiA6ZnVuYzpgc3RyYCBmYWxscyBiYWNrIHRvIHJldHVybmluZworICAgOm1ldGg6YHJlcHIob2JqZWN0KSA8cmVwcj5gLgorCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IGJ1ZmZlciBwcm90b2NvbDsgc3RyIChidWlsdC1pbiBjbGFzcykKKyAgICAgIHNpbmdsZTogYnl0ZXM7IHN0ciAoYnVpbHQtaW4gY2xhc3MpCisKKyAgIElmIGF0IGxlYXN0IG9uZSBvZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIGdpdmVuLCAqb2JqZWN0KiBzaG91bGQgYmUgYQorICAgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgb3IgbW9yZSBnZW5lcmFsbHkgYW55IG9iamVjdAorICAgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAuICBJbiB0aGlzIGNhc2UsIGlmCisgICAqb2JqZWN0KiBpcyBhIDpjbGFzczpgYnl0ZXNgIChvciA6Y2xhc3M6YGJ5dGVhcnJheWApIG9iamVjdCwgdGhlbgorICAgYGBzdHIoYnl0ZXMsIGVuY29kaW5nLCBlcnJvcnMpYGAgaXMgZXF1aXZhbGVudCB0bworICAgOm1ldGg6YGJ5dGVzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKSA8Ynl0ZXMuZGVjb2RlPmAuICBPdGhlcndpc2UsIHRoZSBieXRlcworICAgb2JqZWN0IHVuZGVybHlpbmcgdGhlIGJ1ZmZlciBvYmplY3QgaXMgb2J0YWluZWQgYmVmb3JlIGNhbGxpbmcKKyAgIDptZXRoOmBieXRlcy5kZWNvZGVgLiAgU2VlIDpyZWY6YGJpbmFyeXNlcWAgYW5kCisgICA6cmVmOmBidWZmZXJvYmplY3RzYCBmb3IgaW5mb3JtYXRpb24gb24gYnVmZmVyIG9iamVjdHMuCisKKyAgIFBhc3NpbmcgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgdG8gOmZ1bmM6YHN0cmAgd2l0aG91dCB0aGUgKmVuY29kaW5nKgorICAgb3IgKmVycm9ycyogYXJndW1lbnRzIGZhbGxzIHVuZGVyIHRoZSBmaXJzdCBjYXNlIG9mIHJldHVybmluZyB0aGUgaW5mb3JtYWwKKyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiAoc2VlIGFsc28gdGhlIDpvcHRpb246YC1iYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRvCisgICBQeXRob24pLiAgRm9yIGV4YW1wbGU6OgorCisgICAgICA+Pj4gc3RyKGInWm9vdCEnKQorICAgICAgImInWm9vdCEnIgorCisgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYGBzdHJgYCBjbGFzcyBhbmQgaXRzIG1ldGhvZHMsIHNlZQorICAgOnJlZjpgdGV4dHNlcWAgYW5kIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbiBiZWxvdy4gIFRvIG91dHB1dAorICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwKKyAgIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisKKworLi4gaW5kZXg6OgorICAgcGFpcjogc3RyaW5nOyBtZXRob2RzCiAKIC4uIF9zdHJpbmctbWV0aG9kczoKIAogU3RyaW5nIE1ldGhvZHMKIC0tLS0tLS0tLS0tLS0tCiAKLS4uIGluZGV4OjogcGFpcjogc3RyaW5nOyBtZXRob2RzCisuLiBpbmRleDo6CisgICBtb2R1bGU6IHJlCiAKLVN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LgorU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCitvcGVyYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LgogCi1JbiBhZGRpdGlvbiwgUHl0aG9uJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZQotOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZQotOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3Igc3RyaW5nCi1mdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KK1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYSBsYXJnZQorZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgOm1ldGg6YHN0ci5mb3JtYXRgLAorOnJlZjpgZm9ybWF0c3RyaW5nc2AgYW5kIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCkgYW5kIHRoZSBvdGhlciBiYXNlZCBvbiBDCitgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXMgYW5kIGlzCitzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlIGNhc2VzIGl0IGNhbgoraGFuZGxlICg6cmVmOmBvbGQtc3RyaW5nLWZvcm1hdHRpbmdgKS4KKworVGhlIDpyZWY6YHRleHRzZXJ2aWNlc2Agc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnMgYSBudW1iZXIgb2YKK290aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllcyAoaW5jbHVkaW5nIHJlZ3VsYXIKK2V4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgOm1vZDpgcmVgIG1vZHVsZSkuCiAKIC4uIG1ldGhvZDo6IHN0ci5jYXBpdGFsaXplKCkKIApAQCAtMTAwNiw2ICsxNDcxLDIzIEBACiAgICByZXN0IGxvd2VyY2FzZWQuCiAKIAorLi4gbWV0aG9kOjogc3RyLmNhc2Vmb2xkKCkKKworICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmUgdXNlZCBmb3IKKyAgIGNhc2VsZXNzIG1hdGNoaW5nLgorCisgICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZSBpdCBpcworICAgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHRoZSBHZXJtYW4KKyAgIGxvd2VyY2FzZSBsZXR0ZXIgYGAnw58nYGAgaXMgZXF1aXZhbGVudCB0byBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeQorICAgbG93ZXJjYXNlLCA6bWV0aDpgbG93ZXJgIHdvdWxkIGRvIG5vdGhpbmcgdG8gYGAnw58nYGA7IDptZXRoOmBjYXNlZm9sZGAKKyAgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLgorCisgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKQogCiAgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUKQEAgLTEyMTMsNiArMTY5NSw5IEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIGxvd2VyY2FzZS4KIAorICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCiAKIC4uIG1ldGhvZDo6IHN0ci5sc3RyaXAoW2NoYXJzXSkKIApAQCAtMTI4NSw3ICsxNzcwLDcgQEAKICAgIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIGl0c2VsZi4KIAogCi0uLiBtZXRob2Q6OiBzdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZSBkZWxpbWl0ZXIgc3RyaW5nLgogICAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqCkBAIC0xMzA3LDcgKzE3OTIsNyBAQAogICAgICAgJ21pc3Npc3MnCiAKIAotLi4gbWV0aG9kOjogc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlIGRlbGltaXRlcgogICAgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSAodGh1cywKQEAgLTEzNzYsNyArMTg2MSw4IEBACiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZAotICAgdmljZSB2ZXJzYS4KKyAgIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0CisgICBgYHMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHNgYC4KIAogCiAuLiBtZXRob2Q6OiBzdHIudGl0bGUoKQpAQCAtMTQyNyw3ICsxOTEzLDExIEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0IGJlIGBgRmFsc2VgYCBpZiBgYHNgYAogICAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcKLSAgIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuCisgICBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLAorICAgdGl0bGVjYXNlKS4KKworICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgogCiAKIC4uIG1ldGhvZDo6IHN0ci56ZmlsbCh3aWR0aCkKQEAgLTE0NDAsOCArMTkzMCw4IEBACiAKIC4uIF9vbGQtc3RyaW5nLWZvcm1hdHRpbmc6CiAKLU9sZCBTdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBwcmludGZgYC1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGZvcm1hdHRpbmcsIHN0cmluZyAoJSkKQEAgLTE0NTMsMjMgKzE5NDMsMTkgQEAKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgaW50ZXJwb2xhdGlvbgogCi0uLiBYWFggaXMgdGhlIG5vdGUgZW5vdWdoPwotCiAuLiBub3RlOjoKIAotICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgbW9kZWxsZWQgb24gQydzIHByaW50ZigpCi0gICBzeW50YXguICBUaGV5IG9ubHkgc3VwcG9ydCBmb3JtYXR0aW5nIG9mIGNlcnRhaW4gYnVpbHRpbiB0eXBlcy4gIFRoZQotICAgdXNlIG9mIGEgYmluYXJ5IG9wZXJhdG9yIG1lYW5zIHRoYXQgY2FyZSBtYXkgYmUgbmVlZGVkIGluIG9yZGVyIHRvCi0gICBmb3JtYXQgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgY29ycmVjdGx5LiAgQXMgdGhlIG5ldwotICAgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHN5bnRheCBpcyBtb3JlIGZsZXhpYmxlIGFuZCBoYW5kbGVzIHR1cGxlcyBhbmQKLSAgIGRpY3Rpb25hcmllcyBuYXR1cmFsbHksIGl0IGlzIHJlY29tbWVuZGVkIGZvciBuZXcgY29kZS4gIEhvd2V2ZXIsIHRoZXJlCi0gICBhcmUgbm8gY3VycmVudCBwbGFucyB0byBkZXByZWNhdGUgcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcuCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycywgYW5kIGFsc28gcHJvdmlkZXMgYSBnZW5lcmFsbHkgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbgogc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgotVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZSB1c2luZyA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCiAKIElmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCiBvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCkBAIC0xNjI3LDIxMSArMjExMywxODEgQEAKICAgIGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZSB2YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vCiAgICBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLgogCi0uLiBpbmRleDo6Ci0gICBtb2R1bGU6IHN0cmluZwotICAgbW9kdWxlOiByZQotCi1BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXMgOm1vZDpgc3RyaW5nYCBhbmQKLTptb2Q6YHJlYC4KLQotCi0uLiBfdHlwZXNzZXEtcmFuZ2U6Ci0KLVJhbmdlIFR5cGUKLS0tLS0tLS0tLS0KLQotLi4gaW5kZXg6OiBvYmplY3Q6IHJhbmdlCi0KLVRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB3aGljaCBpcyBjb21tb25seSB1c2VkIGZvcgotbG9vcGluZy4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgaXMgdGhhdCBhbiA6Y2xhc3M6YHJhbmdlYAotb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZQotcmFuZ2UgaXQgcmVwcmVzZW50cy4KLQotUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsIGNvbnRhaW5zLAotaXRlcmF0aW9uLCB0aGUgOmZ1bmM6YGxlbmAgZnVuY3Rpb24sIGFuZCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLS4uIG1ldGhvZDo6IHJhbmdlLmNvdW50KHgpCi0KLSAgIFJldHVybiB0aGUgbnVtYmVyIG9mICppKidzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLS4uIG1ldGhvZDo6IHJhbmdlLmluZGV4KHgpCi0KLSAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLS4uIF90eXBlc3NlcS1tdXRhYmxlOgotCi1NdXRhYmxlIFNlcXVlbmNlIFR5cGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGluZGV4OjoKLSAgIHRyaXBsZTogbXV0YWJsZTsgc2VxdWVuY2U7IHR5cGVzCi0gICBvYmplY3Q6IGxpc3QKKyAgIHNpbmdsZTogYnVmZmVyIHByb3RvY29sOyBiaW5hcnkgc2VxdWVuY2UgdHlwZXMKKworLi4gX2JpbmFyeXNlcToKKworQmluYXJ5IFNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YG1lbW9yeXZpZXdgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gaW5kZXg6OgorICAgb2JqZWN0OiBieXRlcwogICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogbWVtb3J5dmlldworICAgbW9kdWxlOiBhcnJheQogCi1MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93IGluLXBsYWNlCi1tb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZW4gYWRkZWQgdG8gdGhlCi1sYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLiAgU3RyaW5ncyBhbmQgdHVwbGVzIGFyZQotaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90IGJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlCi1mb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4KLWFyYml0cmFyeSBvYmplY3QpLgorVGhlIGNvcmUgYnVpbHQtaW4gdHlwZXMgZm9yIG1hbmlwdWxhdGluZyBiaW5hcnkgZGF0YSBhcmUgOmNsYXNzOmBieXRlc2AgYW5kCis6Y2xhc3M6YGJ5dGVhcnJheWAuIFRoZXkgYXJlIHN1cHBvcnRlZCBieSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHdoaWNoIHVzZXMKK3RoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB0byBhY2Nlc3MgdGhlIG1lbW9yeSBvZiBvdGhlcgorYmluYXJ5IG9iamVjdHMgd2l0aG91dCBuZWVkaW5nIHRvIG1ha2UgYSBjb3B5LgogCi1Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheSBvYmplY3QKLSJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LgorVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUgc3VwcG9ydHMgZWZmaWNpZW50IHN0b3JhZ2Ugb2YgYmFzaWMgZGF0YSB0eXBlcyBsaWtlCiszMi1iaXQgaW50ZWdlcnMgYW5kIElFRUU3NTQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyB2YWx1ZXMuCiAKLS4uIGluZGV4OjoKLSAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgc2VxdWVuY2U7IHR5cGVzCi0gICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IGxpc3Q7IHR5cGUKLSAgIHBhaXI6IHN1YnNjcmlwdDsgYXNzaWdubWVudAotICAgcGFpcjogc2xpY2U7IGFzc2lnbm1lbnQKLSAgIHN0YXRlbWVudDogZGVsCi0gICBzaW5nbGU6IGFwcGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGV4dGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGNvdW50KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogaW5kZXgoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBpbnNlcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBwb3AoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiByZW1vdmUoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiByZXZlcnNlKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogc29ydCgpIChzZXF1ZW5jZSBtZXRob2QpCisuLiBfdHlwZWJ5dGVzOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rCi18IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzIHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgICAgfCBcKDEpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZSByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt4XWBgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgfCBcKDIpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKidzIGZvciAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgfCBcKDMpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgICB8ICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgamBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6aV0gPSBbeF1gYCAgICAgICB8IFwoNCkgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgeCA9IHNbaV07IGRlbCBzW2ldOyAgfCBcKDUpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiB4YGAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgZGVsIHNbcy5pbmRleCh4KV1gYCAgfCBcKDMpICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgIHwgXCg2KSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqIGluIHBsYWNlIHwgKDYpLCAoNyksICg4KSAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK0J5dGVzCistLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogYnl0ZXMKKworQnl0ZXMgb2JqZWN0cyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcyBvZiBzaW5nbGUgYnl0ZXMuIFNpbmNlIG1hbnkgbWFqb3IKK2JpbmFyeSBwcm90b2NvbHMgYXJlIGJhc2VkIG9uIHRoZSBBU0NJSSB0ZXh0IGVuY29kaW5nLCBieXRlcyBvYmplY3RzIG9mZmVyCitzZXZlcmFsIG1ldGhvZHMgdGhhdCBhcmUgb25seSB2YWxpZCB3aGVuIHdvcmtpbmcgd2l0aCBBU0NJSSBjb21wYXRpYmxlCitkYXRhIGFuZCBhcmUgY2xvc2VseSByZWxhdGVkIHRvIHN0cmluZyBvYmplY3RzIGluIGEgdmFyaWV0eSBvZiBvdGhlciB3YXlzLgorCitGaXJzdGx5LCB0aGUgc3ludGF4IGZvciBieXRlcyBsaXRlcmFscyBpcyBsYXJnZWx5IHRoZSBzYW1lIGFzIHRoYXQgZm9yIHN0cmluZworbGl0ZXJhbHMsIGV4Y2VwdCB0aGF0IGEgYGBiYGAgcHJlZml4IGlzIGFkZGVkOgorCisqIFNpbmdsZSBxdW90ZXM6IGBgYidzdGlsbCBhbGxvd3MgZW1iZWRkZWQgImRvdWJsZSIgcXVvdGVzJ2BgCisqIERvdWJsZSBxdW90ZXM6IGBgYiJzdGlsbCBhbGxvd3MgZW1iZWRkZWQgJ3NpbmdsZScgcXVvdGVzImBgLgorKiBUcmlwbGUgcXVvdGVkOiBgYGInJyczIHNpbmdsZSBxdW90ZXMnJydgYCwgYGBiIiIiMyBkb3VibGUgcXVvdGVzIiIiYGAKKworT25seSBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBwZXJtaXR0ZWQgaW4gYnl0ZXMgbGl0ZXJhbHMgKHJlZ2FyZGxlc3Mgb2YgdGhlCitkZWNsYXJlZCBzb3VyY2UgY29kZSBlbmNvZGluZykuIEFueSBiaW5hcnkgdmFsdWVzIG92ZXIgMTI3IG11c3QgYmUgZW50ZXJlZAoraW50byBieXRlcyBsaXRlcmFscyB1c2luZyB0aGUgYXBwcm9wcmlhdGUgZXNjYXBlIHNlcXVlbmNlLgorCitBcyB3aXRoIHN0cmluZyBsaXRlcmFscywgYnl0ZXMgbGl0ZXJhbHMgbWF5IGFsc28gdXNlIGEgYGByYGAgcHJlZml4IHRvIGRpc2FibGUKK3Byb2Nlc3Npbmcgb2YgZXNjYXBlIHNlcXVlbmNlcy4gU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0IHRoZSB2YXJpb3VzCitmb3JtcyBvZiBieXRlcyBsaXRlcmFsLCBpbmNsdWRpbmcgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZXMuCisKK1doaWxlIGJ5dGVzIGxpdGVyYWxzIGFuZCByZXByZXNlbnRhdGlvbnMgYXJlIGJhc2VkIG9uIEFTQ0lJIHRleHQsIGJ5dGVzCitvYmplY3RzIGFjdHVhbGx5IGJlaGF2ZSBsaWtlIGltbXV0YWJsZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMsIHdpdGggZWFjaAordmFsdWUgaW4gdGhlIHNlcXVlbmNlIHJlc3RyaWN0ZWQgc3VjaCB0aGF0IGBgMCA8PSB4IDwgMjU2YGAgKGF0dGVtcHRzIHRvCit2aW9sYXRlIHRoaXMgcmVzdHJpY3Rpb24gd2lsbCB0cmlnZ2VyIDpleGM6YFZhbHVlRXJyb3JgLiBUaGlzIGlzIGRvbmUKK2RlbGliZXJhdGVseSB0byBlbXBoYXNpc2UgdGhhdCB3aGlsZSBtYW55IGJpbmFyeSBmb3JtYXRzIGluY2x1ZGUgQVNDSUkgYmFzZWQKK2VsZW1lbnRzIGFuZCBjYW4gYmUgdXNlZnVsbHkgbWFuaXB1bGF0ZWQgd2l0aCBzb21lIHRleHQtb3JpZW50ZWQgYWxnb3JpdGhtcywKK3RoaXMgaXMgbm90IGdlbmVyYWxseSB0aGUgY2FzZSBmb3IgYXJiaXRyYXJ5IGJpbmFyeSBkYXRhIChibGluZGx5IGFwcGx5aW5nCit0ZXh0IHByb2Nlc3NpbmcgYWxnb3JpdGhtcyB0byBiaW5hcnkgZGF0YSBmb3JtYXRzIHRoYXQgYXJlIG5vdCBBU0NJSQorY29tcGF0aWJsZSB3aWxsIHVzdWFsbHkgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24pLgorCitJbiBhZGRpdGlvbiB0byB0aGUgbGl0ZXJhbCBmb3JtcywgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZCBpbiBhIG51bWJlciBvZgorb3RoZXIgd2F5czoKKworKiBBIHplcm8tZmlsbGVkIGJ5dGVzIG9iamVjdCBvZiBhIHNwZWNpZmllZCBsZW5ndGg6IGBgYnl0ZXMoMTApYGAKKyogRnJvbSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VyczogYGBieXRlcyhyYW5nZSgyMCkpYGAKKyogQ29weWluZyBleGlzdGluZyBiaW5hcnkgZGF0YSB2aWEgdGhlIGJ1ZmZlciBwcm90b2NvbDogIGBgYnl0ZXMob2JqKWBgCisKK0Fsc28gc2VlIHRoZSA6cmVmOmBieXRlcyA8ZnVuYy1ieXRlcz5gIGJ1aWx0LWluLgorCitTaW5jZSBieXRlcyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMsIGZvciBhIGJ5dGVzIG9iamVjdCAqYiosCitgYGJbMF1gYCB3aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdCBvZgorbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlIGJvdGggaW5kZXhpbmcgYW5kCitzbGljaW5nIHdpbGwgcHJvZHVjZSBhIHN0cmluZyBvZiBsZW5ndGggMSkKKworVGhlIHJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApCitzaW5jZSBpdCBpcyBvZnRlbiBtb3JlIHVzZWZ1bCB0aGFuIGUuZy4gYGBieXRlcyhbNDYsIDQ2LCA0Nl0pYGAuICBZb3UgY2FuCithbHdheXMgY29udmVydCBhIGJ5dGVzIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC4KIAogCi1Ob3RlczoKLQotKDEpCi0gICAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLgotCi0oMikKLSAgICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC4KLQotKDMpCi0gICBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzCi0gICBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIDptZXRoOmBpbmRleGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UKLSAgIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkCi0gICB0byB6ZXJvLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4KLQotKDQpCi0gICBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlIDptZXRoOmBpbnNlcnRgCi0gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwKLSAgIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuCi0KLSg1KQotICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdAotICAgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC4KLQotKDYpCi0gICBUaGUgOm1ldGg6YHNvcnRgIGFuZCA6bWV0aDpgcmV2ZXJzZWAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvcgotICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgeW91Ci0gICB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleSBkb24ndCByZXR1cm4gdGhlIHNvcnRlZCBvciByZXZlcnNlZAotICAgc2VxdWVuY2UuCi0KLSg3KQotICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGUKLSAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCi0KLSAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCBhIGNvbXBhcmlzb24KLSAgIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLgotICAgVXNlIDpmdW5jOmBmdW5jdG9vbHMuY21wX3RvX2tleWAgdG8gY29udmVydCBhbgotICAgb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uCisuLiBub3RlOjoKKyAgIEZvciBQeXRob24gMi54IHVzZXJzOiBJbiB0aGUgUHl0aG9uIDIueCBzZXJpZXMsIGEgdmFyaWV0eSBvZiBpbXBsaWNpdAorICAgY29udmVyc2lvbnMgYmV0d2VlbiA4LWJpdCBzdHJpbmdzICh0aGUgY2xvc2VzdCB0aGluZyAyLnggb2ZmZXJzIHRvIGEKKyAgIGJ1aWx0LWluIGJpbmFyeSBkYXRhIHR5cGUpIGFuZCBVbmljb2RlIHN0cmluZ3Mgd2VyZSBwZXJtaXR0ZWQuIFRoaXMgd2FzIGEKKyAgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdvcmthcm91bmQgdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBQeXRob24KKyAgIG9yaWdpbmFsbHkgb25seSBzdXBwb3J0ZWQgOC1iaXQgdGV4dCwgYW5kIFVuaWNvZGUgdGV4dCB3YXMgYSBsYXRlcgorICAgYWRkaXRpb24uIEluIFB5dGhvbiAzLngsIHRob3NlIGltcGxpY2l0IGNvbnZlcnNpb25zIGFyZSBnb25lIC0gY29udmVyc2lvbnMKKyAgIGJldHdlZW4gOC1iaXQgYmluYXJ5IGRhdGEgYW5kIFVuaWNvZGUgdGV4dCBtdXN0IGJlIGV4cGxpY2l0LCBhbmQgYnl0ZXMgYW5kCisgICBzdHJpbmcgb2JqZWN0cyB3aWxsIGFsd2F5cyBjb21wYXJlIHVuZXF1YWwuCiAKIAotICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdCBlbGVtZW50cyBhcmUKLSAgIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC4KKy4uIF90eXBlYnl0ZWFycmF5OgogCi0gICBUaGUgOm1ldGg6YHNvcnRgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEKLSAgIHNvcnQgaXMgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMKLSAgIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3NlcyAoZm9yCi0gICBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS4KK0J5dGVhcnJheSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQogCi0gICAuLiBpbXBsLWRldGFpbDo6CisuLiBpbmRleDo6IG9iamVjdDogYnl0ZWFycmF5CiAKLSAgICAgIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4KLSAgICAgIGluc3BlY3QsIHRoZSBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUKLSAgICAgIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgaXQgY2FuCi0gICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuCis6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBhcmUgYSBtdXRhYmxlIGNvdW50ZXJwYXJ0IHRvIDpjbGFzczpgYnl0ZXNgCitvYmplY3RzLiBUaGVyZSBpcyBubyBkZWRpY2F0ZWQgbGl0ZXJhbCBzeW50YXggZm9yIGJ5dGVhcnJheSBvYmplY3RzLCBpbnN0ZWFkCit0aGV5IGFyZSBhbHdheXMgY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBjb25zdHJ1Y3RvcjoKIAotKDgpCi0gICA6bWV0aDpgc29ydGAgaXMgbm90IHN1cHBvcnRlZCBieSA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KKyogQ3JlYXRpbmcgYW4gZW1wdHkgaW5zdGFuY2U6IGBgYnl0ZWFycmF5KClgYAorKiBDcmVhdGluZyBhIHplcm8tZmlsbGVkIGluc3RhbmNlIHdpdGggYSBnaXZlbiBsZW5ndGg6IGBgYnl0ZWFycmF5KDEwKWBgCisqIEZyb20gYW4gaXRlcmFibGUgb2YgaW50ZWdlcnM6IGBgYnl0ZWFycmF5KHJhbmdlKDIwKSlgYAorKiBDb3B5aW5nIGV4aXN0aW5nIGJpbmFyeSBkYXRhIHZpYSB0aGUgYnVmZmVyIHByb3RvY29sOiAgYGBieXRlYXJyYXkoYidIaSEnKWBgCisKK0FzIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBtdXRhYmxlLCB0aGV5IHN1cHBvcnQgdGhlCis6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucyBpbiBhZGRpdGlvbiB0byB0aGUKK2NvbW1vbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9wZXJhdGlvbnMgZGVzY3JpYmVkIGluIDpyZWY6YGJ5dGVzLW1ldGhvZHNgLgorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZWFycmF5IDxmdW5jLWJ5dGVhcnJheT5gIGJ1aWx0LWluLgogCiAKIC4uIF9ieXRlcy1tZXRob2RzOgogCi1CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCeXRlcyBhbmQgQnl0ZWFycmF5IE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6IHBhaXI6IGJ5dGVzOyBtZXRob2RzCiAgICAgICAgICAgIHBhaXI6IGJ5dGVhcnJheTsgbWV0aG9kcwogCi1CeXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMsIGJlaW5nICJzdHJpbmdzIG9mIGJ5dGVzIiwgaGF2ZSBhbGwgbWV0aG9kcyBmb3VuZCBvbgotc3RyaW5ncywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIDpmdW5jOmBlbmNvZGVgLCA6ZnVuYzpgZm9ybWF0YCBhbmQKLTpmdW5jOmBpc2lkZW50aWZpZXJgLCB3aGljaCBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIHRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcKLXRoZSBvYmplY3RzIHRvIHN0cmluZ3MsIHRoZXkgaGF2ZSBhIDpmdW5jOmBkZWNvZGVgIG1ldGhvZC4KK0JvdGggYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAKK3NlcXVlbmNlIG9wZXJhdGlvbnMuIFRoZXkgaW50ZXJvcGVyYXRlIG5vdCBqdXN0IHdpdGggb3BlcmFuZHMgb2YgdGhlIHNhbWUKK3R5cGUsIGJ1dCB3aXRoIGFueSBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUKKzpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gLiBEdWUgdG8gdGhpcyBmbGV4aWJpbGl0eSwgdGhleSBjYW4gYmUKK2ZyZWVseSBtaXhlZCBpbiBvcGVyYXRpb25zIHdpdGhvdXQgY2F1c2luZyBlcnJvcnMuIEhvd2V2ZXIsIHRoZSByZXR1cm4gdHlwZQorb2YgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBvcGVyYW5kcy4KIAotV2hlcmV2ZXIgb25lIG9mIHRoZXNlIG1ldGhvZHMgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcyBjaGFyYWN0ZXJzCi0oZS5nLiB0aGUgOmZ1bmM6YGlzLi4uYCBtZXRob2RzKSwgdGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZC4KK0R1ZSB0byB0aGUgY29tbW9uIHVzZSBvZiBBU0NJSSB0ZXh0IGFzIHRoZSBiYXNpcyBmb3IgYmluYXJ5IHByb3RvY29scywgYnl0ZXMKK2FuZCBieXRlYXJyYXkgb2JqZWN0cyBwcm92aWRlIGFsbW9zdCBhbGwgbWV0aG9kcyBmb3VuZCBvbiB0ZXh0IHN0cmluZ3MsIHdpdGgKK3RoZSBleGNlcHRpb25zIG9mOgorCisqIDptZXRoOmBzdHIuZW5jb2RlYCAod2hpY2ggY29udmVydHMgdGV4dCBzdHJpbmdzIHRvIGJ5dGVzIG9iamVjdHMpCisqIDptZXRoOmBzdHIuZm9ybWF0YCBhbmQgOm1ldGg6YHN0ci5mb3JtYXRfbWFwYCAod2hpY2ggYXJlIHVzZWQgdG8gZm9ybWF0CisgIHRleHQgZm9yIGRpc3BsYXkgdG8gdXNlcnMpCisqIDptZXRoOmBzdHIuaXNpZGVudGlmaWVyYCwgOm1ldGg6YHN0ci5pc251bWVyaWNgLCA6bWV0aDpgc3RyLmlzZGVjaW1hbGAsCisgIDptZXRoOmBzdHIuaXNwcmludGFibGVgICh3aGljaCBhcmUgdXNlZCB0byBjaGVjayB2YXJpb3VzIHByb3BlcnRpZXMgb2YKKyAgdGV4dCBzdHJpbmdzIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IGFwcGxpY2FibGUgdG8gYmluYXJ5IHByb3RvY29scykuCisKK0FsbCBvdGhlciBzdHJpbmcgbWV0aG9kcyBhcmUgc3VwcG9ydGVkLCBhbHRob3VnaCBzb21ldGltZXMgd2l0aCBzbGlnaHQKK2RpZmZlcmVuY2VzIGluIGZ1bmN0aW9uYWxpdHkgYW5kIHNlbWFudGljcyAoYXMgZGVzY3JpYmVkIGJlbG93KS4KIAogLi4gbm90ZTo6CiAKICAgIFRoZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBkb24ndCBhY2NlcHQgc3RyaW5ncyBhcyB0aGVpcgogICAgYXJndW1lbnRzLCBqdXN0IGFzIHRoZSBtZXRob2RzIG9uIHN0cmluZ3MgZG9uJ3QgYWNjZXB0IGJ5dGVzIGFzIHRoZWlyCi0gICBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgeW91IGhhdmUgdG8gd3JpdGUgOjoKKyAgIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZTo6CiAKICAgICAgIGEgPSAiYWJjIgogICAgICAgYiA9IGEucmVwbGFjZSgiYSIsICJmIikKIAotICAgYW5kIDo6CisgICBhbmQ6OgogCiAgICAgICBhID0gYiJhYmMiCiAgICAgICBiID0gYS5yZXBsYWNlKGIiYSIsIGIiZiIpCiAKK1doZW5ldmVyIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG1ldGhvZCBuZWVkcyB0byBpbnRlcnByZXQgdGhlIGJ5dGVzIGFzCitjaGFyYWN0ZXJzIChlLmcuIHRoZSA6bWV0aDpgaXMuLi5gIG1ldGhvZHMsIDptZXRoOmBzcGxpdGAsIDptZXRoOmBzdHJpcGApLAordGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZCAodGV4dCBzdHJpbmdzIHVzZSBVbmljb2RlIHNlbWFudGljcykuCisKKy4uIG5vdGU6OgorICAgVXNpbmcgdGhlc2UgQVNDSUkgYmFzZWQgbWV0aG9kcyB0byBtYW5pcHVsYXRlIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90CisgICBzdG9yZWQgaW4gYW4gQVNDSUkgYmFzZWQgZm9ybWF0IG1heSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbi4KKworVGhlIHNlYXJjaCBvcGVyYXRpb25zICg6a2V5d29yZDpgaW5gLCA6bWV0aDpgY291bnRgLCA6bWV0aDpgZmluZGAsCis6bWV0aDpgaW5kZXhgLCA6bWV0aDpgcmZpbmRgIGFuZCA6bWV0aDpgcmluZGV4YCkgYWxsIGFjY2VwdCBib3RoIGludGVnZXJzCitpbiB0aGUgcmFuZ2UgMCB0byAyNTUgKGluY2x1c2l2ZSkgYXMgd2VsbCBhcyBieXRlcyBhbmQgYnl0ZSBhcnJheSBzZXF1ZW5jZXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGwgb2YgdGhlIHNlYXJjaCBtZXRob2RzIGFsc28gYWNjZXB0IGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAgdG8gMjU1CisgICAoaW5jbHVzaXZlKSBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworCitFYWNoIGJ5dGVzIGFuZCBieXRlYXJyYXkgaW5zdGFuY2UgcHJvdmlkZXMgYSA6bWV0aDpgZGVjb2RlYCBjb252ZW5pZW5jZQorbWV0aG9kIHRoYXQgaXMgdGhlIGludmVyc2Ugb2YgOm1ldGg6YHN0ci5lbmNvZGVgOgogCiAuLiBtZXRob2Q6OiBieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKQogICAgICAgICAgICAgYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xODQ3LDggKzIzMDMsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cy4KIAotCi1UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOgorU2luY2UgMiBoZXhhZGVjaW1hbCBkaWdpdHMgY29ycmVzcG9uZCBwcmVjaXNlbHkgdG8gYSBzaW5nbGUgYnl0ZSwgaGV4YWRlY2ltYWwKK251bWJlcnMgYXJlIGEgY29tbW9ubHkgdXNlZCBmb3JtYXQgZm9yIGRlc2NyaWJpbmcgYmluYXJ5IGRhdGEuIEFjY29yZGluZ2x5LAordGhlIGJ5dGVzIGFuZCBieXRlYXJyYXkgdHlwZXMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNsYXNzIG1ldGhvZCB0byByZWFkIGRhdGEgaW4KK3RoYXQgZm9ybWF0OgogCiAuLiBjbGFzc21ldGhvZDo6IGJ5dGVzLmZyb21oZXgoc3RyaW5nKQogICAgICAgICAgICAgICAgICBieXRlYXJyYXkuZnJvbWhleChzdHJpbmcpCkBAIC0xODU3LDggKzIzMTUsOCBAQAogICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d28gaGV4YWRlY2ltYWwKICAgIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLgogCi0gICA+Pj4gYnl0ZXMuZnJvbWhleCgnZjAgZjFmMiAgJykKLSAgIGInXHhmMFx4ZjFceGYyJworICAgPj4+IGJ5dGVzLmZyb21oZXgoJzJFZjAgRjFmMiAgJykKKyAgIGInLlx4ZjBceGYxXHhmMicKIAogCiBUaGUgbWFrZXRyYW5zIGFuZCB0cmFuc2xhdGUgbWV0aG9kcyBkaWZmZXIgaW4gc2VtYW50aWNzIGZyb20gdGhlIHZlcnNpb25zCkBAIC0xODkyLDYgKzIzNTAsNDI4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisuLiBfdHlwZW1lbW9yeXZpZXc6CisKK01lbW9yeSBWaWV3cworLS0tLS0tLS0tLS0tCisKKzpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cyBhbGxvdyBQeXRob24gY29kZSB0byBhY2Nlc3MgdGhlIGludGVybmFsIGRhdGEKK29mIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB3aXRob3V0Citjb3B5aW5nLgorCisuLiBjbGFzczo6IG1lbW9yeXZpZXcob2JqKQorCisgICBDcmVhdGUgYSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHRoYXQgcmVmZXJlbmNlcyAqb2JqKi4gICpvYmoqIG11c3Qgc3VwcG9ydCB0aGUKKyAgIGJ1ZmZlciBwcm90b2NvbC4gIEJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgaW5jbHVkZQorICAgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YC4KKworICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyB0aGUgbm90aW9uIG9mIGFuICplbGVtZW50Kiwgd2hpY2ggaXMgdGhlCisgICBhdG9taWMgbWVtb3J5IHVuaXQgaGFuZGxlZCBieSB0aGUgb3JpZ2luYXRpbmcgb2JqZWN0ICpvYmoqLiAgRm9yIG1hbnkKKyAgIHNpbXBsZSB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAsIGFuIGVsZW1lbnQKKyAgIGlzIGEgc2luZ2xlIGJ5dGUsIGJ1dCBvdGhlciB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYXJyYXkuYXJyYXlgIG1heSBoYXZlCisgICBiaWdnZXIgZWxlbWVudHMuCisKKyAgIGBgbGVuKHZpZXcpYGAgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiA6Y2xhc3M6YH5tZW1vcnl2aWV3LnRvbGlzdGAuCisgICBJZiBgYHZpZXcubmRpbSA9IDBgYCwgdGhlIGxlbmd0aCBpcyAxLiBJZiBgYHZpZXcubmRpbSA9IDFgYCwgdGhlIGxlbmd0aAorICAgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdmlldy4gRm9yIGhpZ2hlciBkaW1lbnNpb25zLAorICAgdGhlIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZgorICAgdGhlIHZpZXcuIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgorCisgICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuIElmCisgICA6Y2xhc3M6YH5tZW1vcnl2aWV3LmZvcm1hdGAgaXMgb25lIG9mIHRoZSBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMKKyAgIGZyb20gdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLCBpbmRleGluZyB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50CisgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuIEZ1bGwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgorCisgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICA+Pj4gdlsxXQorICAgIDk4CisgICAgPj4+IHZbLTFdCisgICAgMTAzCisgICAgPj4+IHZbMTo0XQorICAgIDxtZW1vcnkgYXQgMHg3ZjNkZGM5ZjQzNTA+CisgICAgPj4+IGJ5dGVzKHZbMTo0XSkKKyAgICBiJ2JjZScKKworICAgT3RoZXIgbmF0aXZlIGZvcm1hdHM6OgorCisgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWy0xMTExMTExMSwgMjIyMjIyMjIsIC0zMzMzMzMzMywgNDQ0NDQ0NDRdKQorICAgICAgPj4+IGFbMF0KKyAgICAgIC0xMTExMTExMQorICAgICAgPj4+IGFbLTFdCisgICAgICA0NDQ0NDQ0NAorICAgICAgPj4+IGFbMjozXS50b2xpc3QoKQorICAgICAgWy0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6Ml0udG9saXN0KCkKKyAgICAgIFstMTExMTExMTEsIC0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6LTFdLnRvbGlzdCgpCisgICAgICBbNDQ0NDQ0NDQsIC0zMzMzMzMzMywgMjIyMjIyMjIsIC0xMTExMTExMV0KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIElmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB3cml0YWJsZSwgdGhlIG1lbW9yeXZpZXcgc3VwcG9ydHMgc2xpY2UKKyAgIGFzc2lnbm1lbnQuIFJlc2l6aW5nIGlzIG5vdCBhbGxvd2VkOjoKKworICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQorICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCisgICAgICA+Pj4gdi5yZWFkb25seQorICAgICAgRmFsc2UKKyAgICAgID4+PiB2WzBdID0gb3JkKGIneicpCisgICAgICA+Pj4gZGF0YQorICAgICAgYnl0ZWFycmF5KGInemJjZWZnJykKKyAgICAgID4+PiB2WzE6NF0gPSBiJzEyMycKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MTIzZmcnKQorICAgICAgPj4+IHZbMjozXSA9IGInc3BhbScKKyAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIFZhbHVlRXJyb3I6IG1lbW9yeXZpZXcgYXNzaWdubWVudDogbHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcworICAgICAgPj4+IHZbMjo2XSA9IGInc3BhbScKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MXNwYW0nKQorCisgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgb2YgaGFzaGFibGUgKHJlYWQtb25seSkgdHlwZXMgd2l0aCBmb3JtYXRzCisgICAnQicsICdiJyBvciAnYycgYXJlIGFsc28gaGFzaGFibGUuIFRoZSBoYXNoIGlzIGRlZmluZWQgYXMKKyAgIGBgaGFzaChtKSA9PSBoYXNoKG0udG9ieXRlcygpKWBgOjoKKworICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICAgID4+PiBoYXNoKHYpID09IGhhc2goYidhYmNlZmcnKQorICAgICAgVHJ1ZQorICAgICAgPj4+IGhhc2godlsyOjRdKSA9PSBoYXNoKGInY2UnKQorICAgICAgVHJ1ZQorICAgICAgPj4+IGhhc2godls6Oi0yXSkgPT0gaGFzaChiJ2FiY2VmZydbOjotMl0pCisgICAgICBUcnVlCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgd2l0aCBmb3JtYXRzICdCJywgJ2InIG9yICdjJyBhcmUgbm93IGhhc2hhYmxlLgorCisgICA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyBzZXZlcmFsIG1ldGhvZHM6CisKKyAgIC4uIG1ldGhvZDo6IF9fZXFfXyhleHBvcnRlcikKKworICAgICAgQSBtZW1vcnl2aWV3IGFuZCBhIDpwZXA6YDMxMThgIGV4cG9ydGVyIGFyZSBlcXVhbCBpZiB0aGVpciBzaGFwZXMgYXJlCisgICAgICBlcXVpdmFsZW50IGFuZCBpZiBhbGwgY29ycmVzcG9uZGluZyB2YWx1ZXMgYXJlIGVxdWFsIHdoZW4gdGhlIG9wZXJhbmRzJworICAgICAgcmVzcGVjdGl2ZSBmb3JtYXQgY29kZXMgYXJlIGludGVycHJldGVkIHVzaW5nIDptb2Q6YHN0cnVjdGAgc3ludGF4LgorCisgICAgICBGb3IgdGhlIHN1YnNldCBvZiA6bW9kOmBzdHJ1Y3RgIGZvcm1hdCBzdHJpbmdzIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkKKyAgICAgIDptZXRoOmB0b2xpc3RgLCBgYHZgYCBhbmQgYGB3YGAgYXJlIGVxdWFsIGlmIGBgdi50b2xpc3QoKSA9PSB3LnRvbGlzdCgpYGA6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdJJywgWzEsIDIsIDMsIDQsIDVdKQorICAgICAgICAgPj4+IGIgPSBhcnJheS5hcnJheSgnZCcsIFsxLjAsIDIuMCwgMy4wLCA0LjAsIDUuMF0pCisgICAgICAgICA+Pj4gYyA9IGFycmF5LmFycmF5KCdiJywgWzUsIDMsIDFdKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4geSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiB4ID09IGEgPT0geSA9PSBiCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4geC50b2xpc3QoKSA9PSBhLnRvbGlzdCgpID09IHkudG9saXN0KCkgPT0gYi50b2xpc3QoKQorICAgICAgICAgVHJ1ZQorICAgICAgICAgPj4+IHogPSB5Wzo6LTJdCisgICAgICAgICA+Pj4geiA9PSBjCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4gei50b2xpc3QoKSA9PSBjLnRvbGlzdCgpCisgICAgICAgICBUcnVlCisKKyAgICAgIElmIGVpdGhlciBmb3JtYXQgc3RyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLAorICAgICAgdGhlbiB0aGUgb2JqZWN0cyB3aWxsIGFsd2F5cyBjb21wYXJlIGFzIHVuZXF1YWwgKGV2ZW4gaWYgdGhlIGZvcm1hdAorICAgICAgc3RyaW5ncyBhbmQgYnVmZmVyIGNvbnRlbnRzIGFyZSBpZGVudGljYWwpOjoKKworICAgICAgICAgPj4+IGZyb20gY3R5cGVzIGltcG9ydCBCaWdFbmRpYW5TdHJ1Y3R1cmUsIGNfbG9uZworICAgICAgICAgPj4+IGNsYXNzIEJFUG9pbnQoQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgIC4uLiAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY19sb25nKSwgKCJ5IiwgY19sb25nKV0KKyAgICAgICAgIC4uLgorICAgICAgICAgPj4+IHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgID4+PiBhID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgID4+PiBiID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgID4+PiBhID09IHBvaW50CisgICAgICAgICBGYWxzZQorICAgICAgICAgPj4+IGEgPT0gYgorICAgICAgICAgRmFsc2UKKworICAgICAgTm90ZSB0aGF0LCBhcyB3aXRoIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGBgdiBpcyB3YGAgZG9lcyAqbm90KiBpbXBseQorICAgICAgYGB2ID09IHdgYCBmb3IgbWVtb3J5dmlldyBvYmplY3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXMgdmVyc2lvbnMgY29tcGFyZWQgdGhlIHJhdyBtZW1vcnkgZGlzcmVnYXJkaW5nIHRoZSBpdGVtIGZvcm1hdAorICAgICAgICAgYW5kIHRoZSBsb2dpY2FsIGFycmF5IHN0cnVjdHVyZS4KKworICAgLi4gbWV0aG9kOjogdG9ieXRlcygpCisKKyAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgYnl0ZXN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAgY2FsbGluZyB0aGUgOmNsYXNzOmBieXRlc2AgY29uc3RydWN0b3Igb24gdGhlIG1lbW9yeXZpZXcuIDo6CisKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiImFiYyIpCisgICAgICAgICA+Pj4gbS50b2J5dGVzKCkKKyAgICAgICAgIGInYWJjJworICAgICAgICAgPj4+IGJ5dGVzKG0pCisgICAgICAgICBiJ2FiYycKKworICAgICAgRm9yIG5vbi1jb250aWd1b3VzIGFycmF5cyB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIHRoZSBmbGF0dGVuZWQgbGlzdAorICAgICAgcmVwcmVzZW50YXRpb24gd2l0aCBhbGwgZWxlbWVudHMgY29udmVydGVkIHRvIGJ5dGVzLiA6bWV0aDpgdG9ieXRlc2AKKyAgICAgIHN1cHBvcnRzIGFsbCBmb3JtYXQgc3RyaW5ncywgaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIG5vdCBpbgorICAgICAgOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4LgorCisgICAuLiBtZXRob2Q6OiB0b2xpc3QoKQorCisgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIDo6CisKKyAgICAgICAgID4+PiBtZW1vcnl2aWV3KGInYWJjJykudG9saXN0KCkKKyAgICAgICAgIFs5NywgOTgsIDk5XQorICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICAgPj4+IG0udG9saXN0KCkKKyAgICAgICAgIFsxLjEsIDIuMiwgMy4zXQorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgOm1ldGg6YHRvbGlzdGAgbm93IHN1cHBvcnRzIGFsbCBzaW5nbGUgY2hhcmFjdGVyIG5hdGl2ZSBmb3JtYXRzIGluCisgICAgICAgICA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzeW50YXggYXMgd2VsbCBhcyBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICAgcmVwcmVzZW50YXRpb25zLgorCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSB0aGUgdW5kZXJseWluZyBidWZmZXIgZXhwb3NlZCBieSB0aGUgbWVtb3J5dmlldyBvYmplY3QuICBNYW55CisgICAgICBvYmplY3RzIHRha2Ugc3BlY2lhbCBhY3Rpb25zIHdoZW4gYSB2aWV3IGlzIGhlbGQgb24gdGhlbSAoZm9yIGV4YW1wbGUsCisgICAgICBhIDpjbGFzczpgYnl0ZWFycmF5YCB3b3VsZCB0ZW1wb3JhcmlseSBmb3JiaWQgcmVzaXppbmcpOyB0aGVyZWZvcmUsCisgICAgICBjYWxsaW5nIHJlbGVhc2UoKSBpcyBoYW5keSB0byByZW1vdmUgdGhlc2UgcmVzdHJpY3Rpb25zIChhbmQgZnJlZSBhbnkKKyAgICAgIGRhbmdsaW5nIHJlc291cmNlcykgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAgQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBhbnkgZnVydGhlciBvcGVyYXRpb24gb24gdGhlIHZpZXcKKyAgICAgIHJhaXNlcyBhIDpjbGFzczpgVmFsdWVFcnJvcmAgKGV4Y2VwdCA6bWV0aDpgcmVsZWFzZSgpYCBpdHNlbGYgd2hpY2ggY2FuCisgICAgICBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMpOjoKKworICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGInYWJjJykKKyAgICAgICAgID4+PiBtLnJlbGVhc2UoKQorICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKKworICAgICAgVGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCBjYW4gYmUgdXNlZCBmb3IgYSBzaW1pbGFyIGVmZmVjdCwKKyAgICAgIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQ6OgorCisgICAgICAgICA+Pj4gd2l0aCBtZW1vcnl2aWV3KGInYWJjJykgYXMgbToKKyAgICAgICAgIC4uLiAgICAgbVswXQorICAgICAgICAgLi4uCisgICAgICAgICA5NworICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKKyAgIC4uIG1ldGhvZDo6IGNhc3QoZm9ybWF0Wywgc2hhcGVdKQorCisgICAgICBDYXN0IGEgbWVtb3J5dmlldyB0byBhIG5ldyBmb3JtYXQgb3Igc2hhcGUuICpzaGFwZSogZGVmYXVsdHMgdG8KKyAgICAgIGBgW2J5dGVfbGVuZ3RoLy9uZXdfaXRlbXNpemVdYGAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlc3VsdCB2aWV3CisgICAgICB3aWxsIGJlIG9uZS1kaW1lbnNpb25hbC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyBtZW1vcnl2aWV3LCBidXQKKyAgICAgIHRoZSBidWZmZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuIFN1cHBvcnRlZCBjYXN0cyBhcmUgMUQgLT4gQy1jb250aWd1b3VzCisgICAgICBhbmQgQy1jb250aWd1b3VzIC0+IDFELgorCisgICAgICBCb3RoIGZvcm1hdHMgYXJlIHJlc3RyaWN0ZWQgdG8gc2luZ2xlIGVsZW1lbnQgbmF0aXZlIGZvcm1hdHMgaW4KKyAgICAgIDptb2Q6YHN0cnVjdGAgc3ludGF4LiBPbmUgb2YgdGhlIGZvcm1hdHMgbXVzdCBiZSBhIGJ5dGUgZm9ybWF0CisgICAgICAoJ0InLCAnYicgb3IgJ2MnKS4gVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbXVzdCBiZSB0aGUgc2FtZQorICAgICAgYXMgdGhlIG9yaWdpbmFsIGxlbmd0aC4KKworICAgICAgQ2FzdCAxRC9sb25nIHRvIDFEL3Vuc2lnbmVkIGJ5dGVzOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnbCcsIFsxLDIsM10pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiB4LmZvcm1hdAorICAgICAgICAgJ2wnCisgICAgICAgICA+Pj4geC5pdGVtc2l6ZQorICAgICAgICAgOAorICAgICAgICAgPj4+IGxlbih4KQorICAgICAgICAgMworICAgICAgICAgPj4+IHgubmJ5dGVzCisgICAgICAgICAyNAorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ0InKQorICAgICAgICAgPj4+IHkuZm9ybWF0CisgICAgICAgICAnQicKKyAgICAgICAgID4+PiB5Lml0ZW1zaXplCisgICAgICAgICAxCisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAyNAorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICAyNAorCisgICAgICBDYXN0IDFEL3Vuc2lnbmVkIGJ5dGVzIHRvIDFEL2NoYXI6OgorCisgICAgICAgICA+Pj4gYiA9IGJ5dGVhcnJheShiJ3p5eicpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiB4WzBdID0gYidhJworICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgVmFsdWVFcnJvcjogbWVtb3J5dmlldzogaW52YWxpZCB2YWx1ZSBmb3IgZm9ybWF0ICJCIgorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2MnKQorICAgICAgICAgPj4+IHlbMF0gPSBiJ2EnCisgICAgICAgICA+Pj4gYgorICAgICAgICAgYnl0ZWFycmF5KGInYXl6JykKKworICAgICAgQ2FzdCAxRC9ieXRlcyB0byAzRC9pbnRzIHRvIDFEL3NpZ25lZCBjaGFyOjoKKworICAgICAgICAgPj4+IGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgID4+PiBidWYgPSBzdHJ1Y3QucGFjaygiaSIqMTIsICpsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2knLCBzaGFwZT1bMiwyLDNdKQorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbWzAsIDEsIDJdLCBbMywgNCwgNV1dLCBbWzYsIDcsIDhdLCBbOSwgMTAsIDExXV1dCisgICAgICAgICA+Pj4geS5mb3JtYXQKKyAgICAgICAgICdpJworICAgICAgICAgPj4+IHkuaXRlbXNpemUKKyAgICAgICAgIDQKKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDIKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgNDgKKyAgICAgICAgID4+PiB6ID0geS5jYXN0KCdiJykKKyAgICAgICAgID4+PiB6LmZvcm1hdAorICAgICAgICAgJ2InCisgICAgICAgICA+Pj4gei5pdGVtc2l6ZQorICAgICAgICAgMQorICAgICAgICAgPj4+IGxlbih6KQorICAgICAgICAgNDgKKyAgICAgICAgID4+PiB6Lm5ieXRlcworICAgICAgICAgNDgKKworICAgICAgQ2FzdCAxRC91bnNpZ25lZCBjaGFyIHRvIHRvIDJEL3Vuc2lnbmVkIGxvbmc6OgorCisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soIkwiKjYsICpsaXN0KHJhbmdlKDYpKSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhidWYpCisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnTCcsIHNoYXBlPVsyLDNdKQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMgorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA0OAorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbMCwgMSwgMl0sIFszLCA0LCA1XV0KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIFRoZXJlIGFyZSBhbHNvIHNldmVyYWwgcmVhZG9ubHkgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG9iagorCisgICAgICBUaGUgdW5kZXJseWluZyBvYmplY3Qgb2YgdGhlIG1lbW9yeXZpZXc6OgorCisgICAgICAgICA+Pj4gYiAgPSBieXRlYXJyYXkoYid4eXonKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICA+Pj4gbS5vYmogaXMgYgorICAgICAgICAgVHJ1ZQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmJ5dGVzCisKKyAgICAgIGBgbmJ5dGVzID09IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPT0gbGVuKG0udG9ieXRlcygpKWBgLiBUaGlzIGlzCisgICAgICB0aGUgYW1vdW50IG9mIHNwYWNlIGluIGJ5dGVzIHRoYXQgdGhlIGFycmF5IHdvdWxkIHVzZSBpbiBhIGNvbnRpZ3VvdXMKKyAgICAgIHJlcHJlc2VudGF0aW9uLiBJdCBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gbGVuKG0pOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnaScsIFsxLDIsMyw0LDVdKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4gbGVuKG0pCisgICAgICAgICA1CisgICAgICAgICA+Pj4gbS5uYnl0ZXMKKyAgICAgICAgIDIwCisgICAgICAgICA+Pj4geSA9IG1bOjoyXQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMworICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICAxMgorICAgICAgICAgPj4+IGxlbih5LnRvYnl0ZXMoKSkKKyAgICAgICAgIDEyCisKKyAgICAgIE11bHRpLWRpbWVuc2lvbmFsIGFycmF5czo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgc3RydWN0CisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soImQiKjEyLCAqWzEuNSp4IGZvciB4IGluIHJhbmdlKDEyKV0pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2QnLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgID4+PiB5LnRvbGlzdCgpCisgICAgICAgICBbWzAuMCwgMS41LCAzLjAsIDQuNV0sIFs2LjAsIDcuNSwgOS4wLCAxMC41XSwgWzEyLjAsIDEzLjUsIDE1LjAsIDE2LjVdXQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMworICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA5NgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogcmVhZG9ubHkKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4KKworICAgLi4gYXR0cmlidXRlOjogZm9ybWF0CisKKyAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUpIGZvciBlYWNoCisgICAgICBlbGVtZW50IGluIHRoZSB2aWV3LiBBIG1lbW9yeXZpZXcgY2FuIGJlIGNyZWF0ZWQgZnJvbSBleHBvcnRlcnMgd2l0aAorICAgICAgYXJiaXRyYXJ5IGZvcm1hdCBzdHJpbmdzLCBidXQgc29tZSBtZXRob2RzIChlLmcuIDptZXRoOmB0b2xpc3RgKSBhcmUKKyAgICAgIHJlc3RyaWN0ZWQgdG8gbmF0aXZlIHNpbmdsZSBlbGVtZW50IGZvcm1hdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBmb3JtYXQgYGAnQidgYCBpcyBub3cgaGFuZGxlZCBhY2NvcmRpbmcgdG8gdGhlIHN0cnVjdCBtb2R1bGUgc3ludGF4LgorICAgICAgICAgVGhpcyBtZWFucyB0aGF0IGBgbWVtb3J5dmlldyhiJ2FiYycpWzBdID09IGInYWJjJ1swXSA9PSA5N2BgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpdGVtc2l6ZQorCisgICAgICBUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXc6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5LCBzdHJ1Y3QKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhcnJheS5hcnJheSgnSCcsIFszMjAwMCwgMzIwMDEsIDMyMDAyXSkpCisgICAgICAgICA+Pj4gbS5pdGVtc2l6ZQorICAgICAgICAgMgorICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIDMyMDAwCisgICAgICAgICA+Pj4gc3RydWN0LmNhbGNzaXplKCdIJykgPT0gbS5pdGVtc2l6ZQorICAgICAgICAgVHJ1ZQorCisgICAuLiBhdHRyaWJ1dGU6OiBuZGltCisKKyAgICAgIEFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkgdGhlCisgICAgICBtZW1vcnkgcmVwcmVzZW50cy4KKworICAgLi4gYXR0cmlidXRlOjogc2hhcGUKKworICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZQorICAgICAgbWVtb3J5IGFzIGFuIE4tZGltZW5zaW9uYWwgYXJyYXkuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbiBuZGltID0gMC4KKworICAgLi4gYXR0cmlidXRlOjogc3RyaWRlcworCisgICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2l6ZSBpbiBieXRlcyB0bworICAgICAgYWNjZXNzIGVhY2ggZWxlbWVudCBmb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQW4gZW1wdHkgdHVwbGUgaW5zdGVhZCBvZiBOb25lIHdoZW4gbmRpbSA9IDAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN1Ym9mZnNldHMKKworICAgICAgVXNlZCBpbnRlcm5hbGx5IGZvciBQSUwtc3R5bGUgYXJyYXlzLiBUaGUgdmFsdWUgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBjX2NvbnRpZ3VvdXMKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMtY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZfY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiBjb250aWd1b3VzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3R5cGVzLXNldDoKIAogU2V0IFR5cGVzIC0tLSA6Y2xhc3M6YHNldGAsIDpjbGFzczpgZnJvemVuc2V0YApAQCAtMTkwMyw3ICsyNzgzLDcgQEAKIENvbW1vbiB1c2VzIGluY2x1ZGUgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kCiBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLCBhbmQKIHN5bW1ldHJpYyBkaWZmZXJlbmNlLgotKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBsaXN0YCwKKyhGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LWluIDpjbGFzczpgZGljdGAsIDpjbGFzczpgbGlzdGAsCiBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLikKIAogTGlrZSBvdGhlciBjb2xsZWN0aW9ucywgc2V0cyBzdXBwb3J0IGBgeCBpbiBzZXRgYCwgYGBsZW4oc2V0KWBgLCBhbmQgYGBmb3IgeCBpbgpAQCAtMjEwMyw3ICsyOTgzLDcgQEAKIAogQSA6dGVybTpgbWFwcGluZ2Agb2JqZWN0IG1hcHMgOnRlcm06YGhhc2hhYmxlYCB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuCiBNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkIG1hcHBpbmcKLXR5cGUsIHRoZSA6ZGZuOmBkaWN0aW9uYXJ5YC4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluCit0eXBlLCB0aGUgOmRmbjpgZGljdGlvbmFyeWAuICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1pbgogOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBzZXRgLCBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZQogOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZS4pCiAKQEAgLTIyMzUsMTMgKzMxMTUsMTMgQEAKIAogICAgLi4gbWV0aG9kOjogaXRlbXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgIHBhaXJzKS4gIFNlZQotICAgICAgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLgorICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYCBwYWlycykuCisgICAgICBTZWUgdGhlIDpyZWY6YGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCiAKICAgIC4uIG1ldGhvZDo6IGtleXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YKLSAgICAgIHZpZXcgb2JqZWN0cy4KKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSB0aGUgOnJlZjpgZG9jdW1lbnRhdGlvbgorICAgICAgb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCiAKICAgIC4uIG1ldGhvZDo6IHBvcChrZXlbLCBkZWZhdWx0XSkKIApAQCAtMjI3NSw4ICszMTU1LDEyIEBACiAKICAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlIGJlbG93IGZvciBkb2N1bWVudGF0aW9uIG9mCi0gICAgICB2aWV3IG9iamVjdHMuCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSB0aGUKKyAgICAgIDpyZWY6YGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCisKKy4uIHNlZWFsc286OgorICAgOmNsYXNzOmB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlldworICAgb2YgYSA6Y2xhc3M6YGRpY3RgLgogCiAKIC4uIF9kaWN0LXZpZXdzOgpAQCAtMjMyMiw3ICszMjA2LDcgQEAKIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZSwKIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlIG5vdCB0cmVhdGVkIGFzIHNldC1saWtlCiBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKSAgRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlCi1vcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIDpjbGFzczpgY29sbGVjdGlvbnMuU2V0YCBhcmUKK29wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YCBhcmUKIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCwgYGA8YGAsIG9yIGBgXmBgKS4KIAogQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6OgpAQCAtMjM1NywxNTkgKzMyNDEsNiBAQAogICAgeydqdWljZScsICdzYXVzYWdlJywgJ2JhY29uJywgJ3NwYW0nfQogCiAKLS4uIF90eXBlbWVtb3J5dmlldzoKLQotbWVtb3J5dmlldyB0eXBlCi09PT09PT09PT09PT09PT0KLQotOmNsYXNzOmBtZW1vcnl2aWV3YCBvYmplY3RzIGFsbG93IFB5dGhvbiBjb2RlIHRvIGFjY2VzcyB0aGUgaW50ZXJuYWwgZGF0YQotb2YgYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gIHdpdGhvdXQKLWNvcHlpbmcuICBNZW1vcnkgaXMgZ2VuZXJhbGx5IGludGVycHJldGVkIGFzIHNpbXBsZSBieXRlcy4KLQotLi4gY2xhc3M6OiBtZW1vcnl2aWV3KG9iaikKLQotICAgQ3JlYXRlIGEgOmNsYXNzOmBtZW1vcnl2aWV3YCB0aGF0IHJlZmVyZW5jZXMgKm9iaiouICAqb2JqKiBtdXN0IHN1cHBvcnQgdGhlCi0gICBidWZmZXIgcHJvdG9jb2wuICBCdWlsdC1pbiBvYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIGluY2x1ZGUKLSAgIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCi0KLSAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgdGhlIG5vdGlvbiBvZiBhbiAqZWxlbWVudCosIHdoaWNoIGlzIHRoZQotICAgYXRvbWljIG1lbW9yeSB1bml0IGhhbmRsZWQgYnkgdGhlIG9yaWdpbmF0aW5nIG9iamVjdCAqb2JqKi4gIEZvciBtYW55Ci0gICBzaW1wbGUgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgLCBhbiBlbGVtZW50Ci0gICBpcyBhIHNpbmdsZSBieXRlLCBidXQgb3RoZXIgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGFycmF5LmFycmF5YCBtYXkgaGF2ZQotICAgYmlnZ2VyIGVsZW1lbnRzLgotCi0gICBgYGxlbih2aWV3KWBgIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbWVtb3J5dmlldywKLSAgICp2aWV3Ki4gIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKLSAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgotCi0gICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuICBUYWtpbmcgYSBzaW5nbGUKLSAgIGluZGV4IHdpbGwgcmV0dXJuIGEgc2luZ2xlIGVsZW1lbnQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuICBGdWxsCi0gICBzbGljaW5nIHdpbGwgcmVzdWx0IGluIGEgc3Vidmlldzo6Ci0KLSAgICAgID4+PiB2ID0gbWVtb3J5dmlldyhiJ2FiY2VmZycpCi0gICAgICA+Pj4gdlsxXQotICAgICAgYidiJwotICAgICAgPj4+IHZbLTFdCi0gICAgICBiJ2cnCi0gICAgICA+Pj4gdlsxOjRdCi0gICAgICA8bWVtb3J5IGF0IDB4NzdhYjI4PgotICAgICAgPj4+IGJ5dGVzKHZbMTo0XSkKLSAgICAgIGInYmNlJwotCi0gICBJZiB0aGUgb2JqZWN0IHRoZSBtZW1vcnl2aWV3IGlzIG92ZXIgc3VwcG9ydHMgY2hhbmdpbmcgaXRzIGRhdGEsIHRoZQotICAgbWVtb3J5dmlldyBzdXBwb3J0cyBzbGljZSBhc3NpZ25tZW50OjoKLQotICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQotICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCi0gICAgICA+Pj4gdi5yZWFkb25seQotICAgICAgRmFsc2UKLSAgICAgID4+PiB2WzBdID0gYid6JwotICAgICAgPj4+IGRhdGEKLSAgICAgIGJ5dGVhcnJheShiJ3piY2VmZycpCi0gICAgICA+Pj4gdlsxOjRdID0gYicxMjMnCi0gICAgICA+Pj4gZGF0YQotICAgICAgYnl0ZWFycmF5KGInejEyM2ZnJykKLSAgICAgID4+PiB2WzJdID0gYidzcGFtJwotICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgVmFsdWVFcnJvcjogY2Fubm90IG1vZGlmeSBzaXplIG9mIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgIE5vdGljZSBob3cgdGhlIHNpemUgb2YgdGhlIG1lbW9yeXZpZXcgb2JqZWN0IGNhbm5vdCBiZSBjaGFuZ2VkLgotCi0gICA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyBzZXZlcmFsIG1ldGhvZHM6Ci0KLSAgIC4uIG1ldGhvZDo6IHRvYnl0ZXMoKQotCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGVzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgIGNhbGxpbmcgdGhlIDpjbGFzczpgYnl0ZXNgIGNvbnN0cnVjdG9yIG9uIHRoZSBtZW1vcnl2aWV3LiA6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQotICAgICAgICAgPj4+IG0udG9ieXRlcygpCi0gICAgICAgICBiJ2FiYycKLSAgICAgICAgID4+PiBieXRlcyhtKQotICAgICAgICAgYidhYmMnCi0KLSAgIC4uIG1ldGhvZDo6IHRvbGlzdCgpCi0KLSAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgbGlzdCBvZiBpbnRlZ2Vycy4gOjoKLQotICAgICAgICAgPj4+IG1lbW9yeXZpZXcoYidhYmMnKS50b2xpc3QoKQotICAgICAgICAgWzk3LCA5OCwgOTldCi0KLSAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQotCi0gICAgICBSZWxlYXNlIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBleHBvc2VkIGJ5IHRoZSBtZW1vcnl2aWV3IG9iamVjdC4gIE1hbnkKLSAgICAgIG9iamVjdHMgdGFrZSBzcGVjaWFsIGFjdGlvbnMgd2hlbiBhIHZpZXcgaXMgaGVsZCBvbiB0aGVtIChmb3IgZXhhbXBsZSwKLSAgICAgIGEgOmNsYXNzOmBieXRlYXJyYXlgIHdvdWxkIHRlbXBvcmFyaWx5IGZvcmJpZCByZXNpemluZyk7IHRoZXJlZm9yZSwKLSAgICAgIGNhbGxpbmcgcmVsZWFzZSgpIGlzIGhhbmR5IHRvIHJlbW92ZSB0aGVzZSByZXN0cmljdGlvbnMgKGFuZCBmcmVlIGFueQotICAgICAgZGFuZ2xpbmcgcmVzb3VyY2VzKSBhcyBzb29uIGFzIHBvc3NpYmxlLgotCi0gICAgICBBZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGFueSBmdXJ0aGVyIG9wZXJhdGlvbiBvbiB0aGUgdmlldwotICAgICAgcmFpc2VzIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCAoZXhjZXB0IDptZXRoOmByZWxlYXNlKClgIGl0c2VsZiB3aGljaCBjYW4KLSAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyk6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYidhYmMnKQotICAgICAgICAgPj4+IG0ucmVsZWFzZSgpCi0gICAgICAgICA+Pj4gbVswXQotICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgICAgVmFsdWVFcnJvcjogb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdAotCi0gICAgICBUaGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIGNhbiBiZSB1c2VkIGZvciBhIHNpbWlsYXIgZWZmZWN0LAotICAgICAgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudDo6Ci0KLSAgICAgICAgID4+PiB3aXRoIG1lbW9yeXZpZXcoYidhYmMnKSBhcyBtOgotICAgICAgICAgLi4uICAgICBtWzBdCi0gICAgICAgICAuLi4KLSAgICAgICAgIGInYScKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgICAgICBWYWx1ZUVycm9yOiBvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0gICBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsIHJlYWRvbmx5IGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgotCi0gICAuLiBhdHRyaWJ1dGU6OiBmb3JtYXQKLQotICAgICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0IChpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSkgZm9yIGVhY2gKLSAgICAgIGVsZW1lbnQgaW4gdGhlIHZpZXcuICBUaGlzIGRlZmF1bHRzIHRvIGBgJ0InYGAsIGEgc2ltcGxlIGJ5dGVzdHJpbmcuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IGl0ZW1zaXplCi0KLSAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldzo6Ci0KLSAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhcnJheS5hcnJheSgnSCcsIFsxLDIsM10pKQotICAgICAgICAgPj4+IG0uaXRlbXNpemUKLSAgICAgICAgIDIKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBiJ1x4MDFceDAwJwotICAgICAgICAgPj4+IGxlbihtWzBdKSA9PSBtLml0ZW1zaXplCi0gICAgICAgICBUcnVlCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHNoYXBlCi0KLSAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaGFwZSBvZiB0aGUKLSAgICAgIG1lbW9yeSBhcyBhIE4tZGltZW5zaW9uYWwgYXJyYXkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IG5kaW0KLQotICAgICAgQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSB0aGUKLSAgICAgIG1lbW9yeSByZXByZXNlbnRzLgotCi0gICAuLiBhdHRyaWJ1dGU6OiBzdHJpZGVzCi0KLSAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaXplIGluIGJ5dGVzIHRvCi0gICAgICBhY2Nlc3MgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHJlYWRvbmx5Ci0KLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyByZWFkIG9ubHkuCi0KLSAgIC4uIG1lbW9yeXZpZXcuc3Vib2Zmc2V0cyBpc24ndCBkb2N1bWVudGVkIGJlY2F1c2UgaXQgb25seSBzZWVtcyB1c2VmdWwgZm9yIEMKLQotCiAuLiBfdHlwZWNvbnRleHRtYW5hZ2VyOgogCiBDb250ZXh0IE1hbmFnZXIgVHlwZXMKQEAgLTI3MzcsNyArMzQ2OCw3IEBACiAKIFRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGEgdmFsdWUuICBJdAogc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbCBvYmplY3QsIG5hbWVkCi1gYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4KK2BgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKE5vbmUpKClgYCBwcm9kdWNlcyB0aGUgc2FtZSBzaW5nbGV0b24uCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBOb25lYGAuCiAKQEAgLTI3NDksNyArMzQ4MCw4IEBACiAKIFRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlIDpyZWY6YHNsaWNpbmdzYCkuICBJdCBzdXBwb3J0cyBubwogc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZAotOmNvbnN0OmBFbGxpcHNpc2AgKGEgYnVpbHQtaW4gbmFtZSkuCis6Y29uc3Q6YEVsbGlwc2lzYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShFbGxpcHNpcykoKWBgIHByb2R1Y2VzIHRoZQorOmNvbnN0OmBFbGxpcHNpc2Agc2luZ2xldG9uLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgRWxsaXBzaXNgYCBvciBgYC4uLmBgLgogCkBAIC0yNzYxLDcgKzM0OTMsOCBAQAogCiBUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBmcm9tIGNvbXBhcmlzb25zIGFuZCBiaW5hcnkgb3BlcmF0aW9ucyB3aGVuIHRoZXkgYXJlCiBhc2tlZCB0byBvcGVyYXRlIG9uIHR5cGVzIHRoZXkgZG9uJ3Qgc3VwcG9ydC4gU2VlIDpyZWY6YGNvbXBhcmlzb25zYCBmb3IgbW9yZQotaW5mb3JtYXRpb24uCitpbmZvcm1hdGlvbi4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGBgTm90SW1wbGVtZW50ZWRgYCBvYmplY3QuCitgYHR5cGUoTm90SW1wbGVtZW50ZWQpKClgYCBwcm9kdWNlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgTm90SW1wbGVtZW50ZWRgYC4KIApAQCAtMjgyNyw2ICszNTYwLDEzIEBACiAgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBjbGFzcy5fX3F1YWxuYW1lX18KKworICAgVGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGNsYXNzIG9yIHR5cGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGF0dHJpYnV0ZTo6IGNsYXNzLl9fbXJvX18KIAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlbiBsb29raW5nIGZvcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKaW5kZXggNTc3ODk4MC4uZmE4ZDllNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CkBAIC0xMCw3ICsxMCw3IEBACiAKIC4uIHNlZWFsc286OgogCi0gICA6cmVmOmB0eXBlc3NlcWAKKyAgIDpyZWY6YHRleHRzZXFgCiAKICAgIDpyZWY6YHN0cmluZy1tZXRob2RzYAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGYxNjU4Li4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLi4gX3N0cmluZ3NlcnZpY2VzOgotCi0qKioqKioqKioqKioqKioKLVN0cmluZyBTZXJ2aWNlcwotKioqKioqKioqKioqKioqCi0KLVRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCi1tYW5pcHVsYXRpb24gb3BlcmF0aW9ucy4KLQotSW4gYWRkaXRpb24sIFB5dGhvbidzIGJ1aWx0LWluIHN0cmluZyBjbGFzc2VzIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHR5cGUgbWV0aG9kcwotZGVzY3JpYmVkIGluIHRoZSA6cmVmOmB0eXBlc3NlcWAgc2VjdGlvbiwgYW5kIGFsc28gdGhlIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzCi1kZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLiAgVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLAotc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2Agc2VjdGlvbi4gQWxzbywgc2VlIHRoZSA6bW9kOmByZWAgbW9kdWxlIGZvcgotc3RyaW5nIGZ1bmN0aW9ucyBiYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzdHJpbmcucnN0Ci0gICByZS5yc3QKLSAgIHN0cnVjdC5yc3QKLSAgIGRpZmZsaWIucnN0Ci0gICB0ZXh0d3JhcC5yc3QKLSAgIGNvZGVjcy5yc3QKLSAgIHVuaWNvZGVkYXRhLnJzdAotICAgc3RyaW5ncHJlcC5yc3QKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggMTI4MjBlMC4uOTk0NTA2YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC0xODcsMTcgKzE4NywyNCBAQAogfCBgYFFgYCAgfCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoMiksIFwoMykgfAogfCAgICAgICAgfCBsb25nYCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorfCBgYG5gYCAgfCA6Yzp0eXBlOmBzc2l6ZV90YCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorfCBgYE5gYCAgfCA6Yzp0eXBlOmBzaXplX3RgICAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYHNgYCAgfCA6Yzp0eXBlOmBjaGFyW11gICAgICAgICAgfCBieXRlcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYHBgYCAgfCA6Yzp0eXBlOmBjaGFyW11gICAgICAgICAgfCBieXRlcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYFBgYCAgfCA6Yzp0eXBlOmB2b2lkIFwqYCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorfCBgYFBgYCAgfCA6Yzp0eXBlOmB2b2lkIFwqYCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNikgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ24nYGAgYW5kIGBgJ04nYGAgZm9ybWF0cy4KKwogTm90ZXM6CiAKICgxKQpAQCAtMjE5LDExICsyMjYsMTcgQEAKICAgICAgIFVzZSBvZiB0aGUgOm1ldGg6YF9faW5kZXhfX2AgbWV0aG9kIGZvciBub24taW50ZWdlcnMgaXMgbmV3IGluIDMuMi4KIAogKDQpCisgICBUaGUgYGAnbidgYCBhbmQgYGAnTidgYCBjb252ZXJzaW9uIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIG5hdGl2ZQorICAgc2l6ZSAoc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3Igd2l0aCB0aGUgYGAnQCdgYCBieXRlIG9yZGVyIGNoYXJhY3RlcikuCisgICBGb3IgdGhlIHN0YW5kYXJkIHNpemUsIHlvdSBjYW4gdXNlIHdoaWNoZXZlciBvZiB0aGUgb3RoZXIgaW50ZWdlciBmb3JtYXRzCisgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCisKKyg1KQogICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwogICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCiAgICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCiAKLSg1KQorKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKICAgIChzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvciB3aXRoIHRoZSBgYCdAJ2BgIGJ5dGUgb3JkZXIgY2hhcmFjdGVyKS4gVGhlIGJ5dGUKICAgIG9yZGVyIGNoYXJhY3RlciBgYCc9J2BgIGNob29zZXMgdG8gdXNlIGxpdHRsZS0gb3IgYmlnLWVuZGlhbiBvcmRlcmluZyBiYXNlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCBmYzQ1NmExLi5iMDljNjQyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzAsMTYgKzMwLDIxIEBACiB1c2UgY2FzZXMsIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgUG9wZW5gIGludGVyZmFjZSBjYW4gYmUgdXNlZCBkaXJlY3RseS4KIAogCi0uLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biB0aGUgY29tbWFuZCBkZXNjcmliZWQgYnkgKmFyZ3MqLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSwgdGhlbgogICAgcmV0dXJuIHRoZSA6YXR0cjpgcmV0dXJuY29kZWAgYXR0cmlidXRlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwotICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSBzbGlnaHRseSBvZGQgbm90YXRpb24gaW4KLSAgIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXMKLSAgIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC02Miw4ICs2NywxMSBAQAogICAgICAgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAKICAgICAgIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUuIElmIHRoZSByZXR1cm4KICAgIGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKQEAgLTcxLDEwICs3OSwxNSBAQAogICAgOmF0dHI6YHJldHVybmNvZGVgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzCi0gICB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb25zIHBhc3NlcyBhbGwKLSAgIHN1cHBsaWVkIGFyZ3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtODYsOCArOTksNiBAQAogICAgICAgICAgLi4uCiAgICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNQotCiAgICAuLiB3YXJuaW5nOjoKIAogICAgICAgSW52b2tpbmcgdGhlIHN5c3RlbSBzaGVsbCB3aXRoIGBgc2hlbGw9VHJ1ZWBgIGNhbiBiZSBhIHNlY3VyaXR5IGhhemFyZApAQCAtMTAxLDggKzExMiwxMSBAQAogICAgICAgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAKICAgICAgIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQgYXMgYSBieXRlIHN0cmluZy4KIApAQCAtMTEyLDExICsxMjYsMTcgQEAKICAgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yLCBleGNlcHQgdGhhdCAqc3Rkb3V0KiBpcwotICAgbm90IHBlcm1pdHRlZCBhcyBpdCBpcyB1c2VkIGludGVybmFsbHkuIEFsbCBvdGhlciBzdXBwbGllZCBhcmd1bWVudHMgYXJlCi0gICBwYXNzZWQgZGlyZWN0bHkgdGhyb3VnaCB0byB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIEluIGFkZGl0aW9uLCAqc3Rkb3V0KiBpcyBub3QgcGVybWl0dGVkIGFzIGFuIGFyZ3VtZW50LCBhcyBpdCBpcyB1c2VkCisgICBpbnRlcm5hbGx5IHRvIGNvbGxlY3QgdGhlIG91dHB1dCBmcm9tIHRoZSBzdWJwcm9jZXNzLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC0xNDcsNyArMTY3LDcgQEAKICAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKICAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMi43CisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogICAgLi4gd2FybmluZzo6CiAKQEAgLTE2MSw2ICsxODEsMTggQEAKICAgICAgIHJlYWQgaW4gdGhlIGN1cnJlbnQgcHJvY2VzcywgdGhlIGNoaWxkIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0CiAgICAgICBnZW5lcmF0ZXMgZW5vdWdoIG91dHB1dCB0byB0aGUgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCisKKworLi4gZGF0YTo6IERFVk5VTEwKKworICAgU3BlY2lhbCB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBvciAqc3RkZXJyKiBhcmd1bWVudAorICAgdG8gOmNsYXNzOmBQb3BlbmAgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBzcGVjaWFsIGZpbGUgOmRhdGE6YG9zLmRldm51bGxgCisgICB3aWxsIGJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQSVBFCiAKQEAgLTE3NiwxMCArMjA4LDM4IEBACiAgICBvdXRwdXQuCiAKIAorLi4gZXhjZXB0aW9uOjogU3VicHJvY2Vzc0Vycm9yCisKKyAgICBCYXNlIGNsYXNzIGZvciBhbGwgb3RoZXIgZXhjZXB0aW9ucyBmcm9tIHRoaXMgbW9kdWxlLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZXhjZXB0aW9uOjogVGltZW91dEV4cGlyZWQKKworICAgIFN1YmNsYXNzIG9mIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAsIHJhaXNlZCB3aGVuIGEgdGltZW91dCBleHBpcmVzCisgICAgd2hpbGUgd2FpdGluZyBmb3IgYSBjaGlsZCBwcm9jZXNzLgorCisgICAgLi4gYXR0cmlidXRlOjogY21kCisKKyAgICAgICAgQ29tbWFuZCB0aGF0IHdhcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzLgorCisgICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorCisgICAgICAgIFRpbWVvdXQgaW4gc2Vjb25kcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG91dHB1dAorCisgICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkKKyAgICAgICAgOmZ1bmM6YGNoZWNrX291dHB1dGAuICBPdGhlcndpc2UsIGBgTm9uZWBgLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZXhjZXB0aW9uOjogQ2FsbGVkUHJvY2Vzc0Vycm9yCiAKLSAgICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSA6ZnVuYzpgY2hlY2tfY2FsbGAgb3IKLSAgICA6ZnVuYzpgY2hlY2tfb3V0cHV0YCByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgU3VicHJvY2Vzc0Vycm9yYCwgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieQorICAgIDpmdW5jOmBjaGVja19jYWxsYCBvciA6ZnVuYzpgY2hlY2tfb3V0cHV0YCByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCiAKICAgICAuLiBhdHRyaWJ1dGU6OiByZXR1cm5jb2RlCiAKQEAgLTIxNiwyNSArMjc2LDI3IEBACiAKICAgICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBzcGVjaWZ5IHRoZSBleGVjdXRlZCBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQsCiAgICBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZpbGUgaGFuZGxlcywgcmVzcGVjdGl2ZWx5LiAgVmFsaWQgdmFsdWVzCi0gICBhcmUgOmRhdGE6YFBJUEVgLCBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IgKGEgcG9zaXRpdmUgaW50ZWdlciksIGFuCi0gICBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEgbmV3IHBpcGUKLSAgIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgYGBOb25lYGAsIG5vCi0gICByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUKLSAgIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdAotICAgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgc2hvdWxkIGJlIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZQotICAgaGFuZGxlIGFzIGZvciBzdGRvdXQuCisgICBhcmUgOmRhdGE6YFBJUEVgLCA6ZGF0YTpgREVWTlVMTGAsIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciAoYSBwb3NpdGl2ZQorICAgaW50ZWdlciksIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBhbmQgYGBOb25lYGAuICA6ZGF0YTpgUElQRWAgaW5kaWNhdGVzCisgICB0aGF0IGEgbmV3IHBpcGUgdG8gdGhlIGNoaWxkIHNob3VsZCBiZSBjcmVhdGVkLiAgOmRhdGE6YERFVk5VTExgIGluZGljYXRlcworICAgdGhhdCB0aGUgc3BlY2lhbCBmaWxlIDpkYXRhOmBvcy5kZXZudWxsYCB3aWxsIGJlIHVzZWQuICBXaXRoIHRoZSBkZWZhdWx0CisgICBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZSBoYW5kbGVzCisgICB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBjaGlsZAorICAgcHJvY2VzcyBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZSBmaWxlIGhhbmRsZSBhcyBmb3IgKnN0ZG91dCouCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBzdWJwcm9jZXNzIG1vZHVsZQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYAotICAgbW9kZSB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2AuCi0gICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKLSAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQKLSAgICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZSBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuCi0gICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAKLSAgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQKKyAgICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlCisgICB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YC4gIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzCisgICBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IKKyAgIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlCisgICBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKgorICAgYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMjU0LDYgKzMxNiwxMiBAQAogICAgOm1vZDpgZm5tYXRjaGAsIDpmdW5jOmBvcy53YWxrYCwgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdmFyc2AsCiAgICA6ZnVuYzpgb3MucGF0aC5leHBhbmR1c2VyYCwgYW5kIDptb2Q6YHNodXRpbGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgV2hlbiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGNsYXNzIHVzZXMgdGhlIGVuY29kaW5nCisgICAgICA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAKKyAgICAgIGluc3RlYWQgb2YgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKWBgLiAgU2VlIHRoZQorICAgICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNoYW5nZS4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIEV4ZWN1dGluZyBzaGVsbCBjb21tYW5kcyB0aGF0IGluY29ycG9yYXRlIHVuc2FuaXRpemVkIGlucHV0IGZyb20gYW4KQEAgLTI3Myw2ICszNDEsMTAgQEAKICAgICAgIGZyb20gdGhpcyB2dWxuZXJhYmlsaXR5OyBzZWUgdGhlIE5vdGUgaW4gdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yCiAgICAgICBkb2N1bWVudGF0aW9uIGZvciBoZWxwZnVsIGhpbnRzIGluIGdldHRpbmcgYGBzaGVsbD1GYWxzZWBgIHRvIHdvcmsuCiAKKyAgICAgIFdoZW4gdXNpbmcgYGBzaGVsbD1UcnVlYGAsIDpmdW5jOmBzaGxleC5xdW90ZWAgY2FuIGJlIHVzZWQgdG8gcHJvcGVybHkKKyAgICAgIGVzY2FwZSB3aGl0ZXNwYWNlIGFuZCBzaGVsbCBtZXRhY2hhcmFjdGVycyBpbiBzdHJpbmdzIHRoYXQgYXJlIGdvaW5nIHRvCisgICAgICBiZSB1c2VkIHRvIGNvbnN0cnVjdCBzaGVsbCBjb21tYW5kcy4KKwogVGhlc2Ugb3B0aW9ucywgYWxvbmcgd2l0aCBhbGwgb2YgdGhlIG90aGVyIG9wdGlvbnMsIGFyZSBkZXNjcmliZWQgaW4gbW9yZQogZGV0YWlsIGluIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciBkb2N1bWVudGF0aW9uLgogCkBAIC0zODIsMTMgKzQ1NCwxNCBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEKLSAgIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YKLSAgIGBgTm9uZWBgLCBubyByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZQotICAgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLAotICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUKLSAgIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yIHN0ZG91dC4KKyAgIGFyZSA6ZGF0YTpgUElQRWAsIDpkYXRhOmBERVZOVUxMYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCisgICBpbnRlZ2VyKSwgYW4gZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgCisgICBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYAorICAgaW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiBXaXRoIHRoZQorICAgZGVmYXVsdCBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZQorICAgaGFuZGxlcyB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBhcHBsaWNhdGlvbnMKKyAgIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciBzdGRvdXQuCiAKICAgIElmICpwcmVleGVjX2ZuKiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkIGluIHRoZQogICAgY2hpbGQgcHJvY2VzcyBqdXN0IGJlZm9yZSB0aGUgY2hpbGQgaXMgZXhlY3V0ZWQuCkBAIC00OTgsNiArNTcxLDE1IEBACiA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGlmIHRoZSBjYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuCiBjb2RlLgogCitBbGwgb2YgdGhlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IGFjY2VwdCBhICp0aW1lb3V0KiBwYXJhbWV0ZXIsIHN1Y2ggYXMKKzpmdW5jOmBjYWxsYCBhbmQgOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCB3aWxsIHJhaXNlIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBpZgordGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKK0V4Y2VwdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBhbGwgaW5oZXJpdCBmcm9tIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAgYmFzZSBjbGFzcyB3YXMgYWRkZWQuCisKIAogU2VjdXJpdHkKIF5eXl5eXl5eCkBAIC01MjEsMTEgKzYwMywxNSBAQAogICAgYXR0cmlidXRlLgogCiAKLS4uIG1ldGhvZDo6IFBvcGVuLndhaXQoKQorLi4gbWV0aG9kOjogUG9wZW4ud2FpdCh0aW1lb3V0PU5vbmUpCiAKICAgIFdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgU2V0IGFuZCByZXR1cm4gOmF0dHI6YHJldHVybmNvZGVgCiAgICBhdHRyaWJ1dGUuCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgcmFpc2UgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbi4gIEl0IGlzIHNhZmUgdG8gY2F0Y2ggdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeSB0aGUgd2FpdC4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIFRoaXMgd2lsbCBkZWFkbG9jayB3aGVuIHVzaW5nIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKQEAgLTUzMywxMyArNjE5LDE3IEBACiAgICAgICBhIHBpcGUgc3VjaCB0aGF0IGl0IGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgT1MgcGlwZSBidWZmZXIgdG8KICAgICAgIGFjY2VwdCBtb3JlIGRhdGEuICBVc2UgOm1ldGg6YGNvbW11bmljYXRlYCB0byBhdm9pZCB0aGF0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAotLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSkKKworLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKQogCiAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLAotICAgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8gdGVybWluYXRlLiBUaGUgb3B0aW9uYWwKLSAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbAorICAgKmlucHV0KiBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvcgorICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgVGhlIHR5cGUgb2YgKmlucHV0KgorICAgbXVzdCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBhIHN0cmluZy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSlgYC4KIApAQCAtNTQ4LDExICs2MzgsMjkgQEAKICAgIGBgTm9uZWBgIGluIHRoZSByZXN1bHQgdHVwbGUsIHlvdSBuZWVkIHRvIGdpdmUgYGBzdGRvdXQ9UElQRWBgIGFuZC9vcgogICAgYGBzdGRlcnI9UElQRWBgIHRvby4KIAorICAgSWYgdGhlIHByb2Nlc3MgZG9lcyBub3QgdGVybWluYXRlIGFmdGVyICp0aW1lb3V0KiBzZWNvbmRzLCBhCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiAgQ2F0Y2hpbmcgdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeWluZyBjb21tdW5pY2F0aW9uIHdpbGwgbm90IGxvc2UgYW55IG91dHB1dC4KKworICAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgbm90IGtpbGxlZCBpZiB0aGUgdGltZW91dCBleHBpcmVzLCBzbyBpbiBvcmRlciB0bworICAgY2xlYW51cCBwcm9wZXJseSBhIHdlbGwtYmVoYXZlZCBhcHBsaWNhdGlvbiBzaG91bGQga2lsbCB0aGUgY2hpbGQgcHJvY2VzcyBhbmQKKyAgIGZpbmlzaCBjb21tdW5pY2F0aW9uOjoKKworICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oLi4uKQorICAgICAgdHJ5OgorICAgICAgICAgIG91dHMsIGVycnMgPSBwcm9jLmNvbW11bmljYXRlKHRpbWVvdXQ9MTUpCisgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgcHJvYy5raWxsKCkKKyAgICAgICAgICBvdXRzLCBlcnJzID0gcHJvYy5jb21tdW5pY2F0ZSgpCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgZGF0YSByZWFkIGlzIGJ1ZmZlcmVkIGluIG1lbW9yeSwgc28gZG8gbm90IHVzZSB0aGlzIG1ldGhvZCBpZiB0aGUgZGF0YQogICAgICAgc2l6ZSBpcyBsYXJnZSBvciB1bmxpbWl0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFBvcGVuLnNlbmRfc2lnbmFsKHNpZ25hbCkKIApAQCAtOTk0LDMgKzExMDIsOSBAQAogICAgYmFja3NsYXNoLiAgSWYgdGhlIG51bWJlciBvZiBiYWNrc2xhc2hlcyBpcyBvZGQsIHRoZSBsYXN0CiAgICBiYWNrc2xhc2ggZXNjYXBlcyB0aGUgbmV4dCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgYXMKICAgIGRlc2NyaWJlZCBpbiBydWxlIDMuCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDptb2Q6YHNobGV4YAorICAgICAgTW9kdWxlIHdoaWNoIHByb3ZpZGVzIGZ1bmN0aW9uIHRvIHBhcnNlIGFuZCBlc2NhcGUgY29tbWFuZCBsaW5lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IGEzYzE0ZTYuLjYyNjQ0MzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjksNiArMjksMzMgQEAKICAgIGNvbW1hbmQgbGluZSwgc2VlIHRoZSA6bW9kOmBmaWxlaW5wdXRgIG1vZHVsZS4KIAogCisuLiBkYXRhOjogYmFzZV9leGVjX3ByZWZpeAorCisgICBTZXQgZHVyaW5nIFB5dGhvbiBzdGFydHVwLCBiZWZvcmUgYGBzaXRlLnB5YGAgaXMgcnVuLCB0byB0aGUgc2FtZSB2YWx1ZSBhcworICAgOmRhdGE6YGV4ZWNfcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYQorICAgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudCA8dmVudi1kZWY+YCwgdGhlIHZhbHVlcyB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmCisgICBgYHNpdGUucHlgYCBmaW5kcyB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBpbiB1c2UsIHRoZSB2YWx1ZXMgb2YKKyAgIDpkYXRhOmBwcmVmaXhgIGFuZCA6ZGF0YTpgZXhlY19wcmVmaXhgIHdpbGwgYmUgY2hhbmdlZCB0byBwb2ludCB0byB0aGUKKyAgIHZpcnR1YWwgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmRhdGE6YGJhc2VfcHJlZml4YCBhbmQKKyAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YCB3aWxsIHJlbWFpbiBwb2ludGluZyB0byB0aGUgYmFzZSBQeXRob24KKyAgIGluc3RhbGxhdGlvbiAodGhlIG9uZSB3aGljaCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCBmcm9tKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IGJhc2VfcHJlZml4CisKKyAgIFNldCBkdXJpbmcgUHl0aG9uIHN0YXJ0dXAsIGJlZm9yZSBgYHNpdGUucHlgYCBpcyBydW4sIHRvIHRoZSBzYW1lIHZhbHVlIGFzCisgICA6ZGF0YTpgcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gLCB0aGUgdmFsdWVzCisgICB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmIGBgc2l0ZS5weWBgIGZpbmRzIHRoYXQgYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGluCisgICB1c2UsIHRoZSB2YWx1ZXMgb2YgOmRhdGE6YHByZWZpeGAgYW5kIDpkYXRhOmBleGVjX3ByZWZpeGAgd2lsbCBiZSBjaGFuZ2VkIHRvCisgICBwb2ludCB0byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgd2hlcmVhcyA6ZGF0YTpgYmFzZV9wcmVmaXhgIGFuZAorICAgOmRhdGE6YGJhc2VfZXhlY19wcmVmaXhgIHdpbGwgcmVtYWluIHBvaW50aW5nIHRvIHRoZSBiYXNlIFB5dGhvbgorICAgaW5zdGFsbGF0aW9uICh0aGUgb25lIHdoaWNoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdhcyBjcmVhdGVkIGZyb20pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogYnl0ZW9yZGVyCiAKICAgIEFuIGluZGljYXRvciBvZiB0aGUgbmF0aXZlIGJ5dGUgb3JkZXIuICBUaGlzIHdpbGwgaGF2ZSB0aGUgdmFsdWUgYGAnYmlnJ2BgIG9uCkBAIC04MCw2ICsxMDcsMjIgQEAKICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgZm9yIGludGVybmFsIGFuZCBzcGVjaWFsaXplZCBwdXJwb3NlcyBvbmx5LgogCiAKKy4uIGZ1bmN0aW9uOjogX2RlYnVnbWFsbG9jc3RhdHMoKQorCisgICBQcmludCBsb3ctbGV2ZWwgaW5mb3JtYXRpb24gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBDUHl0aG9uJ3MgbWVtb3J5CisgICBhbGxvY2F0b3IuCisKKyAgIElmIFB5dGhvbiBpcyBjb25maWd1cmVkIC0td2l0aC1weWRlYnVnLCBpdCBhbHNvIHBlcmZvcm1zIHNvbWUgZXhwZW5zaXZlCisgICBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbi4gIFRoZSBleGFjdCBvdXRwdXQgZm9ybWF0IGlzIG5vdAorICAgICAgZGVmaW5lZCBoZXJlLCBhbmQgbWF5IGNoYW5nZS4KKworCiAuLiBkYXRhOjogZGxsaGFuZGxlCiAKICAgIEludGVnZXIgc3BlY2lmeWluZyB0aGUgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMLiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCkBAIC0xNzIsMjEgKzIxNSw2IEBACiAgICBhIHRyYWNlYmFjayBvYmplY3QgKHNlZSB0aGUgUmVmZXJlbmNlIE1hbnVhbCkgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBjYWxsCiAgICBzdGFjayBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvcmlnaW5hbGx5IG9jY3VycmVkLgogCi0gICAuLiB3YXJuaW5nOjoKLQotICAgICAgQXNzaWduaW5nIHRoZSAqdHJhY2ViYWNrKiByZXR1cm4gdmFsdWUgdG8gYSBsb2NhbCB2YXJpYWJsZSBpbiBhIGZ1bmN0aW9uCi0gICAgICB0aGF0IGlzIGhhbmRsaW5nIGFuIGV4Y2VwdGlvbiB3aWxsIGNhdXNlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLiAgU2luY2UgbW9zdAotICAgICAgZnVuY3Rpb25zIGRvbid0IG5lZWQgYWNjZXNzIHRvIHRoZSB0cmFjZWJhY2ssIHRoZSBiZXN0IHNvbHV0aW9uIGlzIHRvIHVzZQotICAgICAgc29tZXRoaW5nIGxpa2UgYGBleGN0eXBlLCB2YWx1ZSA9IHN5cy5leGNfaW5mbygpWzoyXWBgIHRvIGV4dHJhY3Qgb25seSB0aGUKLSAgICAgIGV4Y2VwdGlvbiB0eXBlIGFuZCB2YWx1ZS4gIElmIHlvdSBkbyBuZWVkIHRoZSB0cmFjZWJhY2ssIG1ha2Ugc3VyZSB0bwotICAgICAgZGVsZXRlIGl0IGFmdGVyIHVzZSAoYmVzdCBkb25lIHdpdGggYSA6a2V5d29yZDpgdHJ5YAotICAgICAgLi4uIDprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnQpIG9yIHRvIGNhbGwgOmZ1bmM6YGV4Y19pbmZvYCBpbiBhCi0gICAgICBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IGl0c2VsZiBoYW5kbGUgYW4gZXhjZXB0aW9uLgotCi0gICAgICBTdWNoIGN5Y2xlcyBhcmUgbm9ybWFsbHkgYXV0b21hdGljYWxseSByZWNsYWltZWQgd2hlbiBnYXJiYWdlIGNvbGxlY3Rpb24KLSAgICAgIGlzIGVuYWJsZWQgYW5kIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlLCBidXQgaXQgcmVtYWlucyBtb3JlIGVmZmljaWVudCB0bwotICAgICAgYXZvaWQgY3JlYXRpbmcgY3ljbGVzLgotCiAKIC4uIGRhdGE6OiBleGVjX3ByZWZpeAogCkBAIC0xOTksNiArMjI3LDExIEBACiAgICBpbnN0YWxsZWQgaW4gOmZpbGU6YHtleGVjX3ByZWZpeH0vbGliL3B5dGhvbntYLll9L2xpYi1keW5sb2FkYCwgd2hlcmUgKlguWSoKICAgIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgICBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLCB2aWEKKyAgICAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YC4KKwogCiAuLiBkYXRhOjogZXhlY3V0YWJsZQogCkBAIC0yMzUsMTQgKzI2OCwxMyBAQAogCiAuLiBkYXRhOjogZmxhZ3MKIAotICAgVGhlIHN0cnVjdCBzZXF1ZW5jZSAqZmxhZ3MqIGV4cG9zZXMgdGhlIHN0YXR1cyBvZiBjb21tYW5kIGxpbmUgZmxhZ3MuIFRoZQotICAgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgorICAgVGhlIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgICpmbGFncyogZXhwb3NlcyB0aGUgc3RhdHVzIG9mIGNvbW1hbmQgbGluZQorICAgZmxhZ3MuIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCiAKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBhdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICBmbGFnCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgOmNvbnN0OmBkZWJ1Z2AgICAgICAgICAgICAgICAgOm9wdGlvbjpgLWRgCi0gICA6Y29uc3Q6YGRpdmlzaW9uX3dhcm5pbmdgICAgICA6b3B0aW9uOmAtUWAKICAgIDpjb25zdDpgaW5zcGVjdGAgICAgICAgICAgICAgIDpvcHRpb246YC1pYAogICAgOmNvbnN0OmBpbnRlcmFjdGl2ZWAgICAgICAgICAgOm9wdGlvbjpgLWlgCiAgICA6Y29uc3Q6YG9wdGltaXplYCAgICAgICAgICAgICA6b3B0aW9uOmAtT2Agb3IgOm9wdGlvbjpgLU9PYApAQCAtMjYyLDE1ICsyOTQsMTggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAgICAgICBUaGUgYGBoYXNoX3JhbmRvbWl6YXRpb25gYCBhdHRyaWJ1dGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIG9ic29sZXRlIGBgZGl2aXNpb25fd2FybmluZ2BgIGF0dHJpYnV0ZS4KKwogCiAuLiBkYXRhOjogZmxvYXRfaW5mbwogCi0gICBBIHN0cnVjdHNlcSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdCBjb250YWlucyBsb3cgbGV2ZWwKLSAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsIHJlcHJlc2VudGF0aW9uLiAgVGhlIHZhbHVlcwotICAgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludCBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgc3RhbmRhcmQKLSAgIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgc2VlIHNlY3Rpb24KLSAgIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQgW0M5OV1fLCAnQ2hhcmFjdGVyaXN0aWNzIG9mCi0gICBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdAorICAgY29udGFpbnMgbG93IGxldmVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsCisgICByZXByZXNlbnRhdGlvbi4gIFRoZSB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludAorICAgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJworICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHNlZSBzZWN0aW9uIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQKKyAgIFtDOTldXywgJ0NoYXJhY3RlcmlzdGljcyBvZiBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGF0dHJpYnV0ZSAgICAgICAgICAgfCBmbG9hdC5oIG1hY3JvICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC00MDksNiArNDQ0LDkgQEAKICAgIGRvZXMgbm90IGhhdmUgdG8gaG9sZCB0cnVlIGZvciB0aGlyZC1wYXJ0eSBleHRlbnNpb25zIGFzIGl0IGlzIGltcGxlbWVudGF0aW9uCiAgICBzcGVjaWZpYy4KIAorICAgT25seSB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIGRpcmVjdGx5IGF0dHJpYnV0ZWQgdG8gdGhlIG9iamVjdCBpcworICAgYWNjb3VudGVkIGZvciwgbm90IHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2Ygb2JqZWN0cyBpdCByZWZlcnMgdG8uCisKICAgIElmIGdpdmVuLCAqZGVmYXVsdCogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgb2JqZWN0IGRvZXMgbm90IHByb3ZpZGUgbWVhbnMgdG8KICAgIHJldHJpZXZlIHRoZSBzaXplLiAgT3RoZXJ3aXNlIGEgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIApAQCAtNTIwLDggKzU1OCw5IEBACiAKIC4uIGRhdGE6OiBoYXNoX2luZm8KIAotICAgQSBzdHJ1Y3RzZXEgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIEZvcgotICAgbW9yZSBkZXRhaWxzIGFib3V0IGhhc2hpbmcgb2YgbnVtZXJpYyB0eXBlcywgc2VlIDpyZWY6YG51bWVyaWMtaGFzaGAuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2gKKyAgIGltcGxlbWVudGF0aW9uLiAgRm9yIG1vcmUgZGV0YWlscyBhYm91dCBoYXNoaW5nIG9mIG51bWVyaWMgdHlwZXMsIHNlZQorICAgOnJlZjpgbnVtZXJpYy1oYXNoYC4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXR0cmlidXRlICAgICAgICAgICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC01NTYsOCArNTk1LDggQEAKIAogICAgVGhpcyBpcyBjYWxsZWQgYGBoZXh2ZXJzaW9uYGAgc2luY2UgaXQgb25seSByZWFsbHkgbG9va3MgbWVhbmluZ2Z1bCB3aGVuIHZpZXdlZAogICAgYXMgdGhlIHJlc3VsdCBvZiBwYXNzaW5nIGl0IHRvIHRoZSBidWlsdC1pbiA6ZnVuYzpgaGV4YCBmdW5jdGlvbi4gIFRoZQotICAgc3RydWN0IHNlcXVlbmNlICA6ZGF0YTpgc3lzLnZlcnNpb25faW5mb2AgbWF5IGJlIHVzZWQgZm9yIGEgbW9yZSBodW1hbi1mcmllbmRseQotICAgZW5jb2Rpbmcgb2YgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisgICA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gIG1heSBiZSB1c2VkIGZvciBhIG1vcmUKKyAgIGh1bWFuLWZyaWVuZGx5IGVuY29kaW5nIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uLgogCiAgICBUaGUgYGBoZXh2ZXJzaW9uYGAgaXMgYSAzMi1iaXQgbnVtYmVyIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAKQEAgLTU4MywxMCArNjIyLDUxIEBACiAKICAgIFRodXMgYGAyLjEuMGEzYGAgaXMgaGV4dmVyc2lvbiBgYDB4MDIwMTAwYTNgYC4KIAorCisuLiBkYXRhOjogaW1wbGVtZW50YXRpb24KKworICAgQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgY3VycmVudGx5IHJ1bm5pbmcgUHl0aG9uIGludGVycHJldGVyLiAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZQorICAgcmVxdWlyZWQgdG8gZXhpc3QgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICpuYW1lKiBpcyB0aGUgaW1wbGVtZW50YXRpb24ncyBpZGVudGlmaWVyLCBlLmcuIGBgJ2NweXRob24nYGAuICBUaGUgYWN0dWFsCisgICBzdHJpbmcgaXMgZGVmaW5lZCBieSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBidXQgaXQgaXMgZ3VhcmFudGVlZCB0byBiZQorICAgbG93ZXIgY2FzZS4KKworICAgKnZlcnNpb24qIGlzIGEgbmFtZWQgdHVwbGUsIGluIHRoZSBzYW1lIGZvcm1hdCBhcworICAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gLiAgSXQgcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUgUHl0aG9uCisgICAqaW1wbGVtZW50YXRpb24qLiAgVGhpcyBoYXMgYSBkaXN0aW5jdCBtZWFuaW5nIGZyb20gdGhlIHNwZWNpZmljCisgICB2ZXJzaW9uIG9mIHRoZSBQeXRob24gKmxhbmd1YWdlKiB0byB3aGljaCB0aGUgY3VycmVudGx5IHJ1bm5pbmcKKyAgIGludGVycHJldGVyIGNvbmZvcm1zLCB3aGljaCBgYHN5cy52ZXJzaW9uX2luZm9gYCByZXByZXNlbnRzLiAgRm9yCisgICBleGFtcGxlLCBmb3IgUHlQeSAxLjggYGBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbmBgIG1pZ2h0IGJlCisgICBgYHN5cy52ZXJzaW9uX2luZm8oMSwgOCwgMCwgJ2ZpbmFsJywgMClgYCwgd2hlcmVhcyBgYHN5cy52ZXJzaW9uX2luZm9gYAorICAgd291bGQgYmUgYGBzeXMudmVyc2lvbl9pbmZvKDIsIDcsIDIsICdmaW5hbCcsIDApYGAuICBGb3IgQ1B5dGhvbiB0aGV5CisgICBhcmUgdGhlIHNhbWUgdmFsdWUsIHNpbmNlIGl0IGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisKKyAgICpoZXh2ZXJzaW9uKiBpcyB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbiBpbiBoZXhhZGVjaW1hbCBmb3JtYXQsIGxpa2UKKyAgIDpkYXRhOmBzeXMuaGV4dmVyc2lvbmAuCisKKyAgICpjYWNoZV90YWcqIGlzIHRoZSB0YWcgdXNlZCBieSB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpbiB0aGUgZmlsZW5hbWVzIG9mCisgICBjYWNoZWQgbW9kdWxlcy4gIEJ5IGNvbnZlbnRpb24sIGl0IHdvdWxkIGJlIGEgY29tcG9zaXRlIG9mIHRoZQorICAgaW1wbGVtZW50YXRpb24ncyBuYW1lIGFuZCB2ZXJzaW9uLCBsaWtlIGBgJ2NweXRob24tMzMnYGAuICBIb3dldmVyLCBhCisgICBQeXRob24gaW1wbGVtZW50YXRpb24gbWF5IHVzZSBzb21lIG90aGVyIHZhbHVlIGlmIGFwcHJvcHJpYXRlLiAgSWYKKyAgIGBgY2FjaGVfdGFnYGAgaXMgc2V0IHRvIGBgTm9uZWBgLCBpdCBpbmRpY2F0ZXMgdGhhdCBtb2R1bGUgY2FjaGluZyBzaG91bGQKKyAgIGJlIGRpc2FibGVkLgorCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8KKyAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uICBUaGVzZSBub24tc3RhbmRhcmQgYXR0cmlidXRlcyBtdXN0IHN0YXJ0IHdpdGgKKyAgIGFuIHVuZGVyc2NvcmUsIGFuZCBhcmUgbm90IGRlc2NyaWJlZCBoZXJlLiAgUmVnYXJkbGVzcyBvZiBpdHMgY29udGVudHMsCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCB3aWxsIG5vdCBjaGFuZ2UgZHVyaW5nIGEgcnVuIG9mIHRoZSBpbnRlcnByZXRlciwKKyAgIG5vciBiZXR3ZWVuIGltcGxlbWVudGF0aW9uIHZlcnNpb25zLiAgKEl0IG1heSBjaGFuZ2UgYmV0d2VlbiBQeXRob24KKyAgIGxhbmd1YWdlIHZlcnNpb25zLCBob3dldmVyLikgIFNlZSBgUEVQIDQyMWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGRhdGE6OiBpbnRfaW5mbwogCi0gICBBIHN0cnVjdCBzZXF1ZW5jZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbidzCi0gICBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2Vycy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgUHl0aG9uJ3MgaW50ZXJuYWwKKyAgIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC02NDEsOSArNzIxLDEzIEBACiAKIC4uIGRhdGE6OiBtYXh1bmljb2RlCiAKLSAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBjb2RlIHBvaW50IGZvciBhIFVuaWNvZGUgY2hhcmFjdGVyLiAgVGhlCi0gICB2YWx1ZSBvZiB0aGlzIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgVW5pY29kZQotICAgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGFzIFVDUy0yIG9yIFVDUy00LgorICAgQW4gaW50ZWdlciBnaXZpbmcgdGhlIHZhbHVlIG9mIHRoZSBsYXJnZXN0IFVuaWNvZGUgY29kZSBwb2ludCwKKyAgIGkuZS4gYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYCBpbiBoZXhhZGVjaW1hbCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBCZWZvcmUgOnBlcDpgMzkzYCwgYGBzeXMubWF4dW5pY29kZWBgIHVzZWQgdG8gYmUgZWl0aGVyIGBgMHhGRkZGYGAKKyAgICAgIG9yIGBgMHgxMEZGRkZgYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNwZWNpZmllZAorICAgICAgd2hldGhlciBVbmljb2RlIGNoYXJhY3RlcnMgd2VyZSBzdG9yZWQgYXMgVUNTLTIgb3IgVUNTLTQuCiAKIAogLi4gZGF0YTo6IG1ldGFfcGF0aApAQCAtNjg0LDcgKzc2OCw5IEBACiAgICBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdC4gIE5vdGljZSB0aGF0IHRoZSBzY3JpcHQgZGlyZWN0b3J5IGlzIGluc2VydGVkICpiZWZvcmUqCiAgICB0aGUgZW50cmllcyBpbnNlcnRlZCBhcyBhIHJlc3VsdCBvZiA6ZW52dmFyOmBQWVRIT05QQVRIYC4KIAotICAgQSBwcm9ncmFtIGlzIGZyZWUgdG8gbW9kaWZ5IHRoaXMgbGlzdCBmb3IgaXRzIG93biBwdXJwb3Nlcy4KKyAgIEEgcHJvZ3JhbSBpcyBmcmVlIHRvIG1vZGlmeSB0aGlzIGxpc3QgZm9yIGl0cyBvd24gcHVycG9zZXMuICBPbmx5IHN0cmluZ3MKKyAgIGFuZCBieXRlcyBzaG91bGQgYmUgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYDsgYWxsIG90aGVyIGRhdGEgdHlwZXMgYXJlCisgICBpZ25vcmVkIGR1cmluZyBpbXBvcnQuCiAKIAogICAgLi4gc2VlYWxzbzo6CkBAIC03MTgsMzYgKzgwNCwzNSBAQAogICAgVGhpcyBzdHJpbmcgY29udGFpbnMgYSBwbGF0Zm9ybSBpZGVudGlmaWVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwZW5kCiAgICBwbGF0Zm9ybS1zcGVjaWZpYyBjb21wb25lbnRzIHRvIDpkYXRhOmBzeXMucGF0aGAsIGZvciBpbnN0YW5jZS4KIAotICAgRm9yIG1vc3QgVW5peCBzeXN0ZW1zLCB0aGlzIGlzIHRoZSBsb3dlcmNhc2VkIE9TIG5hbWUgYXMgcmV0dXJuZWQgYnkgYGB1bmFtZQotICAgLXNgYCB3aXRoIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB2ZXJzaW9uIGFzIHJldHVybmVkIGJ5IGBgdW5hbWUgLXJgYCBhcHBlbmRlZCwKLSAgIGUuZy4gYGAnc3Vub3M1J2BgLCAqYXQgdGhlIHRpbWUgd2hlbiBQeXRob24gd2FzIGJ1aWx0Ki4gIFVubGVzcyB5b3Ugd2FudCB0bwotICAgdGVzdCBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0gdmVyc2lvbiwgaXQgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUKLSAgIGZvbGxvd2luZyBpZGlvbTo6CisgICBGb3IgVW5peCBzeXN0ZW1zLCBleGNlcHQgb24gTGludXgsIHRoaXMgaXMgdGhlIGxvd2VyY2FzZWQgT1MgbmFtZSBhcworICAgcmV0dXJuZWQgYnkgYGB1bmFtZSAtc2BgIHdpdGggdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHZlcnNpb24gYXMgcmV0dXJuZWQgYnkKKyAgIGBgdW5hbWUgLXJgYCBhcHBlbmRlZCwgZS5nLiBgYCdzdW5vczUnYGAgb3IgYGAnZnJlZWJzZDgnYGAsICphdCB0aGUgdGltZQorICAgd2hlbiBQeXRob24gd2FzIGJ1aWx0Ki4gIFVubGVzcyB5b3Ugd2FudCB0byB0ZXN0IGZvciBhIHNwZWNpZmljIHN5c3RlbQorICAgdmVyc2lvbiwgaXQgaXMgdGhlcmVmb3JlIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgZm9sbG93aW5nIGlkaW9tOjoKIAogICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKToKICAgICAgICAgICAjIEZyZWVCU0Qtc3BlY2lmaWMgY29kZSBoZXJlLi4uCiAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICMgTGludXgtc3BlY2lmaWMgY29kZSBoZXJlLi4uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yLjIKLSAgICAgIFNpbmNlIGxvdHMgb2YgY29kZSBjaGVjayBmb3IgYGBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4MidgYCwgYW5kIHRoZXJlIGlzCi0gICAgICBubyBlc3NlbnRpYWwgY2hhbmdlIGJldHdlZW4gTGludXggMi54IGFuZCAzLngsIGBgc3lzLnBsYXRmb3JtYGAgaXMgYWx3YXlzCi0gICAgICBzZXQgdG8gYGAnbGludXgyJ2BgLCBldmVuIG9uIExpbnV4IDMueC4gIEluIFB5dGhvbiAzLjMgYW5kIGxhdGVyLCB0aGUKLSAgICAgIHZhbHVlIHdpbGwgYWx3YXlzIGJlIHNldCB0byBgYCdsaW51eCdgYCwgc28gaXQgaXMgcmVjb21tZW5kZWQgdG8gYWx3YXlzCi0gICAgICB1c2UgdGhlIGBgc3RhcnRzd2l0aGBgIGlkaW9tIHByZXNlbnRlZCBhYm92ZS4KLQogICAgRm9yIG90aGVyIHN5c3RlbXMsIHRoZSB2YWx1ZXMgYXJlOgogCi0gICA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgU3lzdGVtICAgICAgICAgICAgICAgICBgYHBsYXRmb3JtYGAgdmFsdWUKLSAgID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICBMaW51eCAoMi54ICphbmQqIDMueCkgIGBgJ2xpbnV4MidgYAotICAgV2luZG93cyAgICAgICAgICAgICAgICBgYCd3aW4zMidgYAotICAgV2luZG93cy9DeWd3aW4gICAgICAgICBgYCdjeWd3aW4nYGAKLSAgIE1hYyBPUyBYICAgICAgICAgICAgICAgYGAnZGFyd2luJ2BgCi0gICBPUy8yICAgICAgICAgICAgICAgICAgIGBgJ29zMidgYAotICAgT1MvMiBFTVggICAgICAgICAgICAgICBgYCdvczJlbXgnYGAKLSAgID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgU3lzdGVtICAgICAgICAgICBgYHBsYXRmb3JtYGAgdmFsdWUKKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBMaW51eCAgICAgICAgICAgIGBgJ2xpbnV4J2BgCisgICBXaW5kb3dzICAgICAgICAgIGBgJ3dpbjMyJ2BgCisgICBXaW5kb3dzL0N5Z3dpbiAgIGBgJ2N5Z3dpbidgYAorICAgTWFjIE9TIFggICAgICAgICBgYCdkYXJ3aW4nYGAKKyAgIE9TLzIgICAgICAgICAgICAgYGAnb3MyJ2BgCisgICBPUy8yIEVNWCAgICAgICAgIGBgJ29zMmVteCdgYAorICAgPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uIExpbnV4LCA6YXR0cjpgc3lzLnBsYXRmb3JtYCBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24gYW55bW9yZS4KKyAgICAgIEl0IGlzIGFsd2F5cyBgYCdsaW51eCdgYCwgaW5zdGVhZCBvZiBgYCdsaW51eDInYGAgb3IgYGAnbGludXgzJ2BgLiAgU2luY2UKKyAgICAgIG9sZGVyIFB5dGhvbiB2ZXJzaW9ucyBpbmNsdWRlIHRoZSB2ZXJzaW9uIG51bWJlciwgaXQgaXMgcmVjb21tZW5kZWQgdG8KKyAgICAgIGFsd2F5cyB1c2UgdGhlIGBgc3RhcnRzd2l0aGBgIGlkaW9tIHByZXNlbnRlZCBhYm92ZS4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTc2NCwxMSArODQ5LDE2IEBACiAgICBpbmRlcGVuZGVudCBQeXRob24gZmlsZXMgYXJlIGluc3RhbGxlZDsgYnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgc3RyaW5nCiAgICBgYCcvdXNyL2xvY2FsJ2BgLiAgVGhpcyBjYW4gYmUgc2V0IGF0IGJ1aWxkIHRpbWUgd2l0aCB0aGUgYGAtLXByZWZpeGBgCiAgICBhcmd1bWVudCB0byB0aGUgOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0LiAgVGhlIG1haW4gY29sbGVjdGlvbiBvZiBQeXRob24KLSAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YGAKKyAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YAogICAgd2hpbGUgdGhlIHBsYXRmb3JtIGluZGVwZW5kZW50IGhlYWRlciBmaWxlcyAoYWxsIGV4Y2VwdCA6ZmlsZTpgcHljb25maWcuaGApIGFyZQogICAgc3RvcmVkIGluIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbntYLll9YCwgd2hlcmUgKlguWSogaXMgdGhlIHZlcnNpb24KICAgIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwKKyAgICAgIGVudmlyb25tZW50LiBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUKKyAgICAgIGF2YWlsYWJsZSwgdmlhIDpkYXRhOmBiYXNlX3ByZWZpeGAuCisKIAogLi4gZGF0YTo6IHBzMQogICAgICAgICAgIHBzMgpAQCAtODA2LDExICs4OTYsMTEgQEAKICAgIHRoZSBpbnRlcnByZXRlciBsb2FkcyBleHRlbnNpb24gbW9kdWxlcy4gIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyB3aWxsIGVuYWJsZSBhCiAgICBsYXp5IHJlc29sdmluZyBvZiBzeW1ib2xzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlLCBpZiBjYWxsZWQgYXMKICAgIGBgc3lzLnNldGRsb3BlbmZsYWdzKDApYGAuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhcwotICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3MoY3R5cGVzLlJUTERfR0xPQkFMKWBgLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZQotICAgZmxhZyBtb2R1bGVzIGNhbiBiZSBlaXRoZXIgZm91bmQgaW4gdGhlIDptb2Q6YGN0eXBlc2AgbW9kdWxlLCBvciBpbiB0aGUgOm1vZDpgRExGQ05gCi0gICBtb2R1bGUuIElmIDptb2Q6YERMRkNOYCBpcyBub3QgYXZhaWxhYmxlLCBpdCBjYW4gYmUgZ2VuZXJhdGVkIGZyb20KLSAgIDpmaWxlOmAvdXNyL2luY2x1ZGUvZGxmY24uaGAgdXNpbmcgdGhlIDpwcm9ncmFtOmBoMnB5YCBzY3JpcHQuIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICBgYHN5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyBtb2R1bGVzCisgICBjYW4gYmUgZm91bmQgaW4gdGhlIDptb2Q6YG9zYCBtb2R1bGUgKGBgUlRMRF94eHhgYCBjb25zdGFudHMsIGUuZy4KKyAgIDpkYXRhOmBvcy5SVExEX0xBWllgKS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAuLiBmdW5jdGlvbjo6IHNldHByb2ZpbGUocHJvZmlsZWZ1bmMpCiAKQEAgLTEwMDMsMjIgKzEwOTMsMzMgQEAKICAgICAgICB0byBhIGNvbnNvbGUgYW5kIFB5dGhvbiBhcHBzIHN0YXJ0ZWQgd2l0aCA6cHJvZ3JhbTpgcHl0aG9ud2AuCiAKIAotLi4gZGF0YTo6IHN1YnZlcnNpb24KKy4uIGRhdGE6OiB0aHJlYWRfaW5mbwogCi0gICBBIHRyaXBsZSAocmVwbywgYnJhbmNoLCB2ZXJzaW9uKSByZXByZXNlbnRpbmcgdGhlIFN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlCi0gICBQeXRob24gaW50ZXJwcmV0ZXIuICpyZXBvKiBpcyB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeSwgYGAnQ1B5dGhvbidgYC4KLSAgICpicmFuY2gqIGlzIGEgc3RyaW5nIG9mIG9uZSBvZiB0aGUgZm9ybXMgYGAndHJ1bmsnYGAsIGBgJ2JyYW5jaGVzL25hbWUnYGAgb3IKLSAgIGBgJ3RhZ3MvbmFtZSdgYC4gKnZlcnNpb24qIGlzIHRoZSBvdXRwdXQgb2YgYGBzdm52ZXJzaW9uYGAsIGlmIHRoZSBpbnRlcnByZXRlcgotICAgd2FzIGJ1aWx0IGZyb20gYSBTdWJ2ZXJzaW9uIGNoZWNrb3V0OyBpdCBjb250YWlucyB0aGUgcmV2aXNpb24gbnVtYmVyIChyYW5nZSkKLSAgIGFuZCBwb3NzaWJseSBhIHRyYWlsaW5nICdNJyBpZiB0aGVyZSB3ZXJlIGxvY2FsIG1vZGlmaWNhdGlvbnMuIElmIHRoZSB0cmVlIHdhcwotICAgZXhwb3J0ZWQgKG9yIHN2bnZlcnNpb24gd2FzIG5vdCBhdmFpbGFibGUpLCBpdCBpcyB0aGUgcmV2aXNpb24gb2YKLSAgIGBgSW5jbHVkZS9wYXRjaGxldmVsLmhgYCBpZiB0aGUgYnJhbmNoIGlzIGEgdGFnLiBPdGhlcndpc2UsIGl0IGlzIGBgTm9uZWBgLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQKKyAgIGltcGxlbWVudGF0aW9uLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy4yLjEKLSAgICAgIFB5dGhvbiBpcyBub3cgYGRldmVsb3BlZCA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8+YF8gdXNpbmcKLSAgICAgIE1lcmN1cmlhbC4gIEluIHJlY2VudCBQeXRob24gMy4yIGJ1Z2ZpeCByZWxlYXNlcywgOmRhdGE6YHN1YnZlcnNpb25gCi0gICAgICB0aGVyZWZvcmUgY29udGFpbnMgcGxhY2Vob2xkZXIgaW5mb3JtYXRpb24uICBJdCBpcyByZW1vdmVkIGluIFB5dGhvbgotICAgICAgMy4zLgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IEF0dHJpYnV0ZSAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YG5hbWVgICAgIHwgTmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ250J2BgOiBXaW5kb3dzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnb3MyJ2BgOiBPUy8yIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdwdGhyZWFkJ2BgOiBQT1NJWCB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NvbGFyaXMnYGA6IFNvbGFyaXMgdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgbG9ja2AgICAgfCBOYW1lIG9mIHRoZSBsb2NrIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnc2VtYXBob3JlJ2BgOiBhIGxvY2sgdXNlcyBhIHNlbWFwaG9yZSAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdtdXRleCtjb25kJ2BgOiBhIGxvY2sgdXNlcyBhIG11dGV4ICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgIGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGBOb25lYGAgaWYgdGhpcyBpbmZvcm1hdGlvbiBpcyB1bmtub3duICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmB2ZXJzaW9uYCB8IE5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5LiBJdCBpcyBhIHN0cmluZywgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgdGhlc2UgaW5mb3JtYXRpb25zIGFyZSB1bmtub3duLiAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IHRyYWNlYmFja2xpbWl0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0IGIvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdAppbmRleCA5NzRlY2Y5Li42ZTkwZGMwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2xvZy5yc3QKQEAgLTc5LDEyICs3OSwxNCBAQAogRmFjaWxpdGllczoKICAgIDpjb25zdDpgTE9HX0tFUk5gLCA6Y29uc3Q6YExPR19VU0VSYCwgOmNvbnN0OmBMT0dfTUFJTGAsIDpjb25zdDpgTE9HX0RBRU1PTmAsCiAgICA6Y29uc3Q6YExPR19BVVRIYCwgOmNvbnN0OmBMT0dfTFBSYCwgOmNvbnN0OmBMT0dfTkVXU2AsIDpjb25zdDpgTE9HX1VVQ1BgLAotICAgOmNvbnN0OmBMT0dfQ1JPTmAsIDpjb25zdDpgTE9HX1NZU0xPR2AgYW5kIDpjb25zdDpgTE9HX0xPQ0FMMGAgdG8KLSAgIDpjb25zdDpgTE9HX0xPQ0FMN2AuCisgICA6Y29uc3Q6YExPR19DUk9OYCwgOmNvbnN0OmBMT0dfU1lTTE9HYCwgOmNvbnN0OmBMT0dfTE9DQUwwYCB0bworICAgOmNvbnN0OmBMT0dfTE9DQUw3YCwgYW5kLCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLAorICAgOmNvbnN0OmBMT0dfQVVUSFBSSVZgLgogCiBMb2cgb3B0aW9uczoKLSAgIDpjb25zdDpgTE9HX1BJRGAsIDpjb25zdDpgTE9HX0NPTlNgLCA6Y29uc3Q6YExPR19OREVMQVlgLCA6Y29uc3Q6YExPR19OT1dBSVRgCi0gICBhbmQgOmNvbnN0OmBMT0dfUEVSUk9SYCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLgorICAgOmNvbnN0OmBMT0dfUElEYCwgOmNvbnN0OmBMT0dfQ09OU2AsIDpjb25zdDpgTE9HX05ERUxBWWAsIGFuZCwgaWYgZGVmaW5lZAorICAgaW4gYGA8c3lzbG9nLmg+YGAsIDpjb25zdDpgTE9HX09ERUxBWWAsIDpjb25zdDpgTE9HX05PV0FJVGAsIGFuZAorICAgOmNvbnN0OmBMT0dfUEVSUk9SYC4KIAogCiBFeGFtcGxlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAppbmRleCA0NmU0OTAwLi44NmRkMzNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdApAQCAtMTMsMTMgKzEzLDEzIEBACiAtLS0tLS0tLS0tLS0tLQogCiBUaGUgOm1vZDpgdGFyZmlsZWAgbW9kdWxlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlYWQgYW5kIHdyaXRlIHRhcgotYXJjaGl2ZXMsIGluY2x1ZGluZyB0aG9zZSB1c2luZyBnemlwIG9yIGJ6MiBjb21wcmVzc2lvbi4KK2FyY2hpdmVzLCBpbmNsdWRpbmcgdGhvc2UgdXNpbmcgZ3ppcCwgYnoyIGFuZCBsem1hIGNvbXByZXNzaW9uLgogVXNlIHRoZSA6bW9kOmB6aXBmaWxlYCBtb2R1bGUgdG8gcmVhZCBvciB3cml0ZSA6ZmlsZTpgLnppcGAgZmlsZXMsIG9yIHRoZQogaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBpbiA6cmVmOmBzaHV0aWwgPGFyY2hpdmluZy1vcGVyYXRpb25zPmAuCiAKIFNvbWUgZmFjdHMgYW5kIGZpZ3VyZXM6CiAKLSogcmVhZHMgYW5kIHdyaXRlcyA6bW9kOmBnemlwYCBhbmQgOm1vZDpgYnoyYCBjb21wcmVzc2VkIGFyY2hpdmVzLgorKiByZWFkcyBhbmQgd3JpdGVzIDptb2Q6YGd6aXBgLCA6bW9kOmBiejJgIGFuZCA6bW9kOmBsem1hYCBjb21wcmVzc2VkIGFyY2hpdmVzLgogCiAqIHJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgdGhlIFBPU0lYLjEtMTk4OCAodXN0YXIpIGZvcm1hdC4KIApAQCAtMzMsNiArMzMsOSBAQAogICBjaGFyYWN0ZXIgZGV2aWNlcyBhbmQgYmxvY2sgZGV2aWNlcyBhbmQgaXMgYWJsZSB0byBhY3F1aXJlIGFuZCByZXN0b3JlIGZpbGUKICAgaW5mb3JtYXRpb24gbGlrZSB0aW1lc3RhbXAsIGFjY2VzcyBwZXJtaXNzaW9ucyBhbmQgb3duZXIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBsem1hYCBjb21wcmVzc2lvbi4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW4obmFtZT1Ob25lLCBtb2RlPSdyJywgZmlsZW9iaj1Ob25lLCBidWZzaXplPTEwMjQwLCBcKlwqa3dhcmdzKQogCkBAIC01Niw2ICs1OSw4IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjpiejInYGAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBiemlwMiBjb21wcmVzc2lvbi4gICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3I6eHonYGAgICAgICAgfCBPcGVuIGZvciByZWFkaW5nIHdpdGggbHptYSBjb21wcmVzc2lvbi4gICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtNjUsMTEgKzcwLDEzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAndzpiejInYGAgICAgICB8IE9wZW4gZm9yIGJ6aXAyIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3c6eHonYGAgICAgICAgfCBPcGVuIGZvciBsem1hIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBOb3RlIHRoYXQgYGAnYTpneidgYCBvciBgYCdhOmJ6MidgYCBpcyBub3QgcG9zc2libGUuIElmICptb2RlKiBpcyBub3Qgc3VpdGFibGUKLSAgIHRvIG9wZW4gYSBjZXJ0YWluIChjb21wcmVzc2VkKSBmaWxlIGZvciByZWFkaW5nLCA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlCi0gICAqbW9kZSogYGAncidgYCB0byBhdm9pZCB0aGlzLiAgSWYgYSBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwKLSAgIDpleGM6YENvbXByZXNzaW9uRXJyb3JgIGlzIHJhaXNlZC4KKyAgIE5vdGUgdGhhdCBgYCdhOmd6J2BgLCBgYCdhOmJ6MidgYCBvciBgYCdhOnh6J2BgIGlzIG5vdCBwb3NzaWJsZS4gSWYgKm1vZGUqCisgICBpcyBub3Qgc3VpdGFibGUgdG8gb3BlbiBhIGNlcnRhaW4gKGNvbXByZXNzZWQpIGZpbGUgZm9yIHJlYWRpbmcsCisgICA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlICptb2RlKiBgYCdyJ2BgIHRvIGF2b2lkIHRoaXMuICBJZiBhCisgICBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwgOmV4YzpgQ29tcHJlc3Npb25FcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJZiAqZmlsZW9iaiogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgOnRlcm06YGZpbGUgb2JqZWN0YAogICAgb3BlbmVkIGluIGJpbmFyeSBtb2RlIGZvciAqbmFtZSouIEl0IGlzIHN1cHBvc2VkIHRvIGJlIGF0IHBvc2l0aW9uIDAuCkBAIC0xMDAsNiArMTA3LDkgQEAKICAgIHwgYGAncnxiejInYGAgfCBPcGVuIGEgYnppcDIgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAogICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAncnx4eidgYCAgfCBPcGVuIGEgbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICAgfAorICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnd3wnYGAgICAgfCBPcGVuIGFuIHVuY29tcHJlc3NlZCAqc3RyZWFtKiBmb3Igd3JpdGluZy4gfAogICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3d8Z3onYGAgIHwgT3BlbiBhIGd6aXAgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgIHwKQEAgLTEwOCw2ICsxMTgsOSBAQAogICAgfCBgYCd3fGJ6MidgYCB8IE9wZW4gYSBiemlwMiBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CiAgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd3fHh6J2BgICB8IE9wZW4gYW4gbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CisgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIGNsYXNzOjogVGFyRmlsZQpAQCAtMjYzLDkgKzI3Niw5IEBACiAKICAgIElmICplcnJvcmxldmVsKiBpcyBgYDBgYCwgYWxsIGVycm9ycyBhcmUgaWdub3JlZCB3aGVuIHVzaW5nIDptZXRoOmBUYXJGaWxlLmV4dHJhY3RgLgogICAgTmV2ZXJ0aGVsZXNzLCB0aGV5IGFwcGVhciBhcyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgZGVidWcgb3V0cHV0LCB3aGVuIGRlYnVnZ2luZwotICAgaXMgZW5hYmxlZC4gIElmIGBgMWBgLCBhbGwgKmZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcyA6ZXhjOmBPU0Vycm9yYCBvcgotICAgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9ucy4gSWYgYGAyYGAsIGFsbCAqbm9uLWZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcwotICAgOmV4YzpgVGFyRXJyb3JgIGV4Y2VwdGlvbnMgYXMgd2VsbC4KKyAgIGlzIGVuYWJsZWQuICBJZiBgYDFgYCwgYWxsICpmYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgT1NFcnJvcmAKKyAgIGV4Y2VwdGlvbnMuIElmIGBgMmBgLCBhbGwgKm5vbi1mYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgVGFyRXJyb3JgCisgICBleGNlcHRpb25zIGFzIHdlbGwuCiAKICAgIFRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMgZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gYmUKICAgIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgYXJjaGl2ZSBhbmQgaG93IGNvbnZlcnNpb24gZXJyb3JzIGFyZSBnb2luZwpAQCAtMzYzLDE1ICszNzYsMTIgQEAKIC4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGZpbGUobWVtYmVyKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlIG9iamVjdC4gKm1lbWJlciogbWF5IGJlIGEgZmlsZW5hbWUKLSAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlLCBhIDp0ZXJtOmBmaWxlLWxpa2UKLSAgIG9iamVjdGAgaXMgcmV0dXJuZWQuIElmICptZW1iZXIqIGlzIGEgbGluaywgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20KLSAgIHRoZSBsaW5rJ3MgdGFyZ2V0LiBJZiAqbWVtYmVyKiBpcyBub25lIG9mIHRoZSBhYm92ZSwgOmNvbnN0OmBOb25lYCBpcyByZXR1cm5lZC4KKyAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlIG9yIGEgbGluaywgYW4KKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCA6Y29uc3Q6YE5vbmVgIGlzCisgICByZXR1cm5lZC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seS4gIEl0IHByb3ZpZGVzIHRoZSBtZXRob2RzCi0gICAgICA6bWV0aDpgcmVhZGAsIDptZXRoOmByZWFkbGluZWAsIDptZXRoOmByZWFkbGluZXNgLCA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCwKLSAgICAgIGFuZCA6bWV0aDpgY2xvc2VgLCBhbmQgYWxzbyBzdXBwb3J0cyBpdGVyYXRpb24gb3ZlciBpdHMgbGluZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIGFuIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdC4KIAogCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmFkZChuYW1lLCBhcmNuYW1lPU5vbmUsIHJlY3Vyc2l2ZT1UcnVlLCBleGNsdWRlPU5vbmUsICosIGZpbHRlcj1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdCBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKaW5kZXggNjQ2NjM0ZC4uOWJjNzljNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CkBAIC0xNjIsOSArMTYyLDEzIEBACiAuLiBtZXRob2Q6OiBUZWxuZXQud3JpdGUoYnVmZmVyKQogCiAgICBXcml0ZSBhIGJ5dGUgc3RyaW5nIHRvIHRoZSBzb2NrZXQsIGRvdWJsaW5nIGFueSBJQUMgY2hhcmFjdGVycy4gVGhpcyBjYW4KLSAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCBpZiB0aGUKKyAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlCiAgICBjb25uZWN0aW9uIGlzIGNsb3NlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgbWV0aG9kIHVzZWQgdG8gcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICAgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBtZXRob2Q6OiBUZWxuZXQuaW50ZXJhY3QoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggYzE0M2I4OC4uOTZlYWQxZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMjUsNyArMjUsNyBAQAogCiBBbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCiBhbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogYW5kICp0ZW1wbGF0ZSogdmFyaWFibGVzLgorbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCkBAIC03Niw4ICs3Niw3IEBACiAgICBkYXRhIGlzIHNwb29sZWQgaW4gbWVtb3J5IHVudGlsIHRoZSBmaWxlIHNpemUgZXhjZWVkcyAqbWF4X3NpemUqLCBvcgogICAgdW50aWwgdGhlIGZpbGUncyA6ZnVuYzpgZmlsZW5vYCBtZXRob2QgaXMgY2FsbGVkLCBhdCB3aGljaCBwb2ludCB0aGUKICAgIGNvbnRlbnRzIGFyZSB3cml0dGVuIHRvIGRpc2sgYW5kIG9wZXJhdGlvbiBwcm9jZWVkcyBhcyB3aXRoCi0gICA6ZnVuYzpgVGVtcG9yYXJ5RmlsZWAuICBBbHNvLCBpdCdzIGBgdHJ1bmNhdGVgYCBtZXRob2QgZG9lcyBub3QKLSAgIGFjY2VwdCBhIGBgc2l6ZWBgIGFyZ3VtZW50LgorICAgOmZ1bmM6YFRlbXBvcmFyeUZpbGVgLgogCiAgICBUaGUgcmVzdWx0aW5nIGZpbGUgaGFzIG9uZSBhZGRpdGlvbmFsIG1ldGhvZCwgOmZ1bmM6YHJvbGxvdmVyYCwgd2hpY2gKICAgIGNhdXNlcyB0aGUgZmlsZSB0byByb2xsIG92ZXIgdG8gYW4gb24tZGlzayBmaWxlIHJlZ2FyZGxlc3Mgb2YgaXRzIHNpemUuCkBAIC04Nyw2ICs4Niw5IEBACiAgICB3aGV0aGVyIDpmdW5jOmByb2xsb3ZlcmAgaGFzIGJlZW4gY2FsbGVkLiBUaGlzIGZpbGUtbGlrZSBvYmplY3QgY2FuIGJlCiAgICB1c2VkIGluIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCwganVzdCBsaWtlIGEgbm9ybWFsIGZpbGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICB0aGUgdHJ1bmNhdGUgbWV0aG9kIG5vdyBhY2NlcHRzIGEgYGBzaXplYGAgYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiBUZW1wb3JhcnlEaXJlY3Rvcnkoc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDQwZjQxMTUuLjJlOGJhMzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC04MCwxNyArODAsMTIgQEAKIAogICAgLi4uIG1vcmUgdGVzdCBjbGFzc2VzIC4uLgogCi0gICBkZWYgdGVzdF9tYWluKCk6Ci0gICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTXlUZXN0Q2FzZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNeVRlc3RDYXNlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiBsaXN0IG90aGVyIHRlc3RzIC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgdGVzdF9tYWluKCkKKyAgICAgICB1bml0dGVzdC5tYWluKCkKIAotVGhpcyBib2lsZXJwbGF0ZSBjb2RlIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAKLWFzIHdlbGwgYXMgb24gaXRzIG93biBhcyBhIHNjcmlwdC4KK1RoaXMgY29kZSBwYXR0ZXJuIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAsCitvbiBpdHMgb3duIGFzIGEgc2NyaXB0IHRoYXQgc3VwcG9ydHMgdGhlIDptb2Q6YHVuaXR0ZXN0YCBDTEksIG9yIHZpYSB0aGUKK2BweXRob24gLW0gdW5pdHRlc3RgIENMSS4KIAogVGhlIGdvYWwgZm9yIHJlZ3Jlc3Npb24gdGVzdGluZyBpcyB0byB0cnkgdG8gYnJlYWsgY29kZS4gVGhpcyBsZWFkcyB0byBhIGZldwogZ3VpZGVsaW5lcyB0byBiZSBmb2xsb3dlZDoKQEAgLTEyOSwyMiArMTI0LDI3IEBACiAgIGFzIHdoYXQgdHlwZSBvZiBpbnB1dCBpcyB1c2VkLiBNaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IHN1YmNsYXNzaW5nIGEKICAgYmFzaWMgdGVzdCBjbGFzcyB3aXRoIGEgY2xhc3MgdGhhdCBzcGVjaWZpZXMgdGhlIGlucHV0OjoKIAotICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbjoKIAogICAgICAgICAgZnVuYyA9IG15U3VwZXJXaGFtbXlGdW5jdGlvbgogCiAgICAgICAgICBkZWYgdGVzdF9mdW5jKHNlbGYpOgogICAgICAgICAgICAgIHNlbGYuZnVuYyhzZWxmLmFyZykKIAotICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgYXJnID0gWzEsIDIsIDNdCiAKLSAgICAgY2xhc3MgQWNjZXB0U3RyaW5ncyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRTdHJpbmdzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICBhcmcgPSAnYWJjJwogCi0gICAgIGNsYXNzIEFjY2VwdFR1cGxlcyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRUdXBsZXMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIGFyZyA9ICgxLCAyLCAzKQogCisgIFdoZW4gdXNpbmcgdGhpcyBwYXR0ZXJuLCByZW1lbWJlciB0aGF0IGFsbCBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tCisgIGB1bml0dGVzdC5UZXN0Q2FzZWAgYXJlIHJ1biBhcyB0ZXN0cy4gIFRoZSBgTWl4aW5gIGNsYXNzIGluIHRoZSBleGFtcGxlIGFib3ZlCisgIGRvZXMgbm90IGhhdmUgYW55IGRhdGEgYW5kIHNvIGNhbid0IGJlIHJ1biBieSBpdHNlbGYsIHRodXMgaXQgZG9lcyBub3QKKyAgaW5oZXJpdCBmcm9tIGB1bml0dGVzdC5UZXN0Q2FzZWAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE2MCwxNCArMTYwLDE1IEBACiBUaGUgOm1vZDpgdGVzdGAgcGFja2FnZSBjYW4gYmUgcnVuIGFzIGEgc2NyaXB0IHRvIGRyaXZlIFB5dGhvbidzIHJlZ3Jlc3Npb24KIHRlc3Qgc3VpdGUsIHRoYW5rcyB0byB0aGUgOm9wdGlvbjpgLW1gIG9wdGlvbjogOnByb2dyYW06YHB5dGhvbiAtbSB0ZXN0YC4gVW5kZXIKIHRoZSBob29kLCBpdCB1c2VzIDptb2Q6YHRlc3QucmVncnRlc3RgOyB0aGUgY2FsbCA6cHJvZ3JhbTpgcHl0aG9uIC1tCi10ZXN0LnJlZ3J0ZXN0YCB1c2VkIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyBzdGlsbCB3b3JrcykuCi1SdW5uaW5nIHRoZSBzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24KLXRlc3RzIGluIHRoZSA6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUKLXBhY2thZ2Ugd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZQotZnVuY3Rpb24gOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudC4gVGhlIG5hbWVzIG9mIHRlc3RzIHRvIGV4ZWN1dGUgbWF5IGFsc28KLWJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlIHJlZ3Jlc3Npb24gdGVzdCAoOnByb2dyYW06YHB5dGhvbgotLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQgb25seSBwcmludAotd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkIGFuZCB0aHVzIG1pbmltaXplIG91dHB1dC4KK3Rlc3QucmVncnRlc3RgIHVzZWQgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zIHN0aWxsIHdvcmtzKS4gIFJ1bm5pbmcgdGhlCitzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24gdGVzdHMgaW4gdGhlCis6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUgcGFja2FnZSB3aG9zZQorbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZSBmdW5jdGlvbgorOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudCBvciBsb2FkaW5nIHRoZSB0ZXN0cyB2aWEKK3VuaXR0ZXN0LlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSBpZiBgYHRlc3RfbWFpbmBgIGRvZXMgbm90IGV4aXN0LiAgVGhlCituYW1lcyBvZiB0ZXN0cyB0byBleGVjdXRlIG1heSBhbHNvIGJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlCityZWdyZXNzaW9uIHRlc3QgKDpwcm9ncmFtOmBweXRob24gLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQKK29ubHkgcHJpbnQgd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkLgogCiBSdW5uaW5nIDptb2Q6YHRlc3RgIGRpcmVjdGx5IGFsbG93cyB3aGF0IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGZvcgogdGVzdHMgdG8gdXNlIHRvIGJlIHNldC4gWW91IGRvIHRoaXMgYnkgdXNpbmcgdGhlIGBgLXVgYCBjb21tYW5kLWxpbmUKQEAgLTIyMywxNCArMjI0LDE0IEBACiAKIC4uIGRhdGE6OiB2ZXJib3NlCiAKLSAgIDpjb25zdDpgVHJ1ZWAgd2hlbiB2ZXJib3NlIG91dHB1dCBpcyBlbmFibGVkLiBTaG91bGQgYmUgY2hlY2tlZCB3aGVuIG1vcmUKKyAgIGBgVHJ1ZWBgIHdoZW4gdmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZC4gU2hvdWxkIGJlIGNoZWNrZWQgd2hlbiBtb3JlCiAgICBkZXRhaWxlZCBpbmZvcm1hdGlvbiBpcyBkZXNpcmVkIGFib3V0IGEgcnVubmluZyB0ZXN0LiAqdmVyYm9zZSogaXMgc2V0IGJ5CiAgICA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YC4KIAogCiAuLiBkYXRhOjogaXNfanl0aG9uCiAKLSAgIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgorICAgYGBUcnVlYGAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgogCiAKIC4uIGRhdGE6OiBURVNURk4KQEAgLTI0OSw3ICsyNTAsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpCiAKLSAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgogICAgYXZhaWxhYmxlIHJlc291cmNlcyBpcyBvbmx5IHNldCB3aGVuIDptb2Q6YHRlc3QucmVncnRlc3RgIGlzIGV4ZWN1dGluZyB0aGUKICAgIHRlc3RzLgogCkBAIC0yNTgsNyArMjU5LDcgQEAKIAogICAgUmFpc2UgOmV4YzpgUmVzb3VyY2VEZW5pZWRgIGlmICpyZXNvdXJjZSogaXMgbm90IGF2YWlsYWJsZS4gKm1zZyogaXMgdGhlCiAgICBhcmd1bWVudCB0byA6ZXhjOmBSZXNvdXJjZURlbmllZGAgaWYgaXQgaXMgcmFpc2VkLiBBbHdheXMgcmV0dXJucwotICAgOmNvbnN0OmBUcnVlYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCisgICBgYFRydWVgYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCiAgICBVc2VkIHdoZW4gdGVzdHMgYXJlIGV4ZWN1dGVkIGJ5IDptb2Q6YHRlc3QucmVncnRlc3RgLgogCiAKQEAgLTI4Niw2ICsyODcsMTUgQEAKICAgIFRoaXMgd2lsbCBydW4gYWxsIHRlc3RzIGRlZmluZWQgaW4gdGhlIG5hbWVkIG1vZHVsZS4KIAogCisuLiBmdW5jdGlvbjo6IHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUpCisKKyAgIFJ1biA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBvbiB0aGUgZ2l2ZW4gKm1vZHVsZSouICBSZXR1cm4KKyAgIGBgKGZhaWx1cmVfY291bnQsIHRlc3RfY291bnQpYGAuCisKKyAgIElmICp2ZXJib3NpdHkqIGlzIGBgTm9uZWBgLCA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBpcyBydW4gd2l0aCB2ZXJib3NpdHkKKyAgIHNldCB0byA6ZGF0YTpgdmVyYm9zZWAuICBPdGhlcndpc2UsIGl0IGlzIHJ1biB3aXRoIHZlcmJvc2l0eSBzZXQgdG8KKyAgIGBgTm9uZWBgLgorCiAuLiBmdW5jdGlvbjo6IGNoZWNrX3dhcm5pbmdzKFwqZmlsdGVycywgcXVpZXQ9VHJ1ZSkKIAogICAgQSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciA6ZnVuYzpgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKWAgdGhhdCBtYWtlcyBpdApAQCAtMjk2LDEyICszMDYsMTIgQEAKIAogICAgYGBjaGVja193YXJuaW5nc2BgIGFjY2VwdHMgMi10dXBsZXMgb2YgdGhlIGZvcm0gYGAoIm1lc3NhZ2UgcmVnZXhwIiwKICAgIFdhcm5pbmdDYXRlZ29yeSlgYCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gSWYgb25lIG9yIG1vcmUgKmZpbHRlcnMqIGFyZQotICAgcHJvdmlkZWQsIG9yIGlmIHRoZSBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICpxdWlldCogaXMgOmNvbnN0OmBGYWxzZWAsCisgICBwcm92aWRlZCwgb3IgaWYgdGhlIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKnF1aWV0KiBpcyBgYEZhbHNlYGAsCiAgICBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSB3YXJuaW5ncyBhcmUgYXMgZXhwZWN0ZWQ6ICBlYWNoIHNwZWNpZmllZCBmaWx0ZXIKICAgIG11c3QgbWF0Y2ggYXQgbGVhc3Qgb25lIG9mIHRoZSB3YXJuaW5ncyByYWlzZWQgYnkgdGhlIGVuY2xvc2VkIGNvZGUgb3IgdGhlCiAgICB0ZXN0IGZhaWxzLCBhbmQgaWYgYW55IHdhcm5pbmdzIGFyZSByYWlzZWQgdGhhdCBkbyBub3QgbWF0Y2ggYW55IG9mIHRoZQogICAgc3BlY2lmaWVkIGZpbHRlcnMgdGhlIHRlc3QgZmFpbHMuICBUbyBkaXNhYmxlIHRoZSBmaXJzdCBvZiB0aGVzZSBjaGVja3MsCi0gICBzZXQgKnF1aWV0KiB0byA6Y29uc3Q6YFRydWVgLgorICAgc2V0ICpxdWlldCogdG8gYGBUcnVlYGAuCiAKICAgIElmIG5vIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0bzo6CiAKQEAgLTMxNiw3ICszMjYsNyBAQAogICAgcmVwcmVzZW50aW5nIHRoZSBtb3N0IHJlY2VudCB3YXJuaW5nIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IHRocm91Z2gKICAgIHRoZSByZWNvcmRlciBvYmplY3QgKHNlZSBleGFtcGxlIGJlbG93KS4gIElmIG5vIHdhcm5pbmcgaGFzIGJlZW4gcmFpc2VkLAogICAgdGhlbiBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgZXhwZWN0ZWQgb24gYW4gb2JqZWN0Ci0gICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIDpjb25zdDpgTm9uZWAuCisgICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIGBgTm9uZWBgLgogCiAgICBUaGUgcmVjb3JkZXIgb2JqZWN0IGFsc28gaGFzIGEgOm1ldGg6YHJlc2V0YCBtZXRob2QsIHdoaWNoIGNsZWFycyB0aGUKICAgIHdhcm5pbmdzIGxpc3QuCkBAIC0zNTQsNyArMzY0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBjYXB0dXJlZF9zdGRvdXQoKQogCi0gICBUaGlzIGlzIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgcnVucyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IHVzaW5nCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHJ1bnMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYm9keSB1c2luZwogICAgYSA6Y2xhc3M6YFN0cmluZ0lPLlN0cmluZ0lPYCBvYmplY3QgYXMgc3lzLnN0ZG91dC4gIFRoYXQgb2JqZWN0IGNhbiBiZQogICAgcmV0cmlldmVkIHVzaW5nIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LgogCkBAIC0zNjUsNiArMzc1LDU3IEBACiAgICAgICBhc3NlcnQgcy5nZXR2YWx1ZSgpID09ICJoZWxsb1xuIgogCiAKKy4uIGZ1bmN0aW9uOjogdGVtcF9jd2QobmFtZT0ndGVtcGN3ZCcsIHF1aWV0PUZhbHNlLCBwYXRoPU5vbmUpCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nCisgICBkaXJlY3RvcnkgKENXRCkuCisKKyAgIEFuIGV4aXN0aW5nIHBhdGggbWF5IGJlIHByb3ZpZGVkIGFzICpwYXRoKiwgaW4gd2hpY2ggY2FzZSB0aGlzIGZ1bmN0aW9uCisgICBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlIHN5c3RlbS4KKworICAgT3RoZXJ3aXNlLCB0aGUgbmV3IENXRCBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgaXQncyBuYW1lZAorICAgKm5hbWUqLiAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgYW5kIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgorICAgY2hhbmdlIHRoZSBDV0QsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0J3MgYGBUcnVlYGAsIG9ubHkgYSB3YXJuaW5nCisgICBpcyByYWlzZWQgYW5kIHRoZSBvcmlnaW5hbCBDV0QgaXMgdXNlZC4KKworCisuLiBmdW5jdGlvbjo6IHRlbXBfdW1hc2sodW1hc2spCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4KKworCisuLiBmdW5jdGlvbjo6IGNhbl9zeW1saW5rKCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBPUyBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcywgYGBGYWxzZWBgCisgICBvdGhlcndpc2UuCisKKworLi4gZGVjb3JhdG9yOjogc2tpcF91bmxlc3Nfc3ltbGluaygpCisKKyAgIEEgZGVjb3JhdG9yIGZvciBydW5uaW5nIHRlc3RzIHRoYXQgcmVxdWlyZSBzdXBwb3J0IGZvciBzeW1ib2xpYyBsaW5rcy4KKworCisuLiBkZWNvcmF0b3I6OiBhbnRpY2lwYXRlX2ZhaWx1cmUoY29uZGl0aW9uKQorCisgICBBIGRlY29yYXRvciB0byBjb25kaXRpb25hbGx5IG1hcmsgdGVzdHMgd2l0aAorICAgOmZ1bmM6YHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZWAuIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkCisgICBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWVudCBpZGVudGlmeWluZyB0aGUgcmVsZXZhbnQgdHJhY2tlciBpc3N1ZS4KKworCisuLiBkZWNvcmF0b3I6OiBydW5fd2l0aF9sb2NhbGUoY2F0c3RyLCAqbG9jYWxlcykKKworICAgQSBkZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBsb2NhbGUsIGNvcnJlY3RseQorICAgcmVzZXR0aW5nIGl0IGFmdGVyIGl0IGhhcyBmaW5pc2hlZC4gICpjYXRzdHIqIGlzIHRoZSBsb2NhbGUgY2F0ZWdvcnkgYXMKKyAgIGEgc3RyaW5nIChmb3IgZXhhbXBsZSBgYCJMQ19BTEwiYGApLiAgVGhlICpsb2NhbGVzKiBwYXNzZWQgd2lsbCBiZSB0cmllZAorICAgc2VxdWVudGlhbGx5LCBhbmQgdGhlIGZpcnN0IHZhbGlkIGxvY2FsZSB3aWxsIGJlIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiBtYWtlX2JhZF9mZCgpCisKKyAgIENyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBieSBvcGVuaW5nIGFuZCBjbG9zaW5nIGEgdGVtcG9yYXJ5IGZpbGUsCisgICBhbmQgcmV0dXJuaW5nIGl0cyBkZXNjcmlwb3IuCisKKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIGRlcHJlY2F0ZWQ9RmFsc2UpCiAKICAgIFRoaXMgZnVuY3Rpb24gaW1wb3J0cyBhbmQgcmV0dXJucyB0aGUgbmFtZWQgbW9kdWxlLiBVbmxpa2UgYSBub3JtYWwKQEAgLTM3Miw3ICs0MzMsNyBAQAogICAgY2Fubm90IGJlIGltcG9ydGVkLgogCiAgICBNb2R1bGUgYW5kIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgZHVyaW5nIHRoaXMgaW1wb3J0Ci0gICBpZiAqZGVwcmVjYXRlZCogaXMgOmNvbnN0OmBUcnVlYC4KKyAgIGlmICpkZXByZWNhdGVkKiBpcyBgYFRydWVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKQEAgLTM5Niw5ICs0NTcsOSBAQAogICAgYGBzeXMubW9kdWxlc2BgIHdoZW4gdGhlIGZyZXNoIGltcG9ydCBpcyBjb21wbGV0ZS4KIAogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAotICAgaWYgKmRlcHJlY2F0ZWQqIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBpZiAqZGVwcmVjYXRlZCogaXMgYGBUcnVlYGAuCiAKLSAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSA6ZXhjOmB1bml0dGVzdC5Ta2lwVGVzdGAgaXMgdGhlIG5hbWVkIG1vZHVsZQorICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIDpleGM6YHVuaXR0ZXN0LlNraXBUZXN0YCBpZiB0aGUgbmFtZWQgbW9kdWxlCiAgICBjYW5ub3QgYmUgaW1wb3J0ZWQuCiAKICAgIEV4YW1wbGUgdXNlOjoKQEAgLTQxMyw2ICs0NzQsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKKy4uIGZ1bmN0aW9uOjogYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCkKKworICAgQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCisgICBlcGhlbWVyYWwgcG9ydHMgaW4gb3JkZXIgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyBhbiB1bmJvdW5kIHBvcnQuICBUaGlzIGlzCisgICBpbXBvcnRhbnQgYXMgbWFueSB0ZXN0cyBtYXkgYmUgcnVubmluZyBzaW11bHRhbmVvdXNseSwgZXNwZWNpYWxseSBpbiBhCisgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlCisgICBgYHNvY2suZmFtaWx5YGAgaXMgOmNvbnN0OmB+c29ja2V0LkFGX0lORVRgIGFuZCBgYHNvY2sudHlwZWBgIGlzCisgICA6Y29uc3Q6YH5zb2NrZXQuU09DS19TVFJFQU1gLCBhbmQgdGhlIHNvY2tldCBoYXMKKyAgIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRUFERFJgIG9yIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRVBPUlRgIHNldCBvbiBpdC4KKyAgIFRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMgZm9yIFRDUC9JUCBzb2NrZXRzLgorICAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcgbXVsdGljYXN0aW5nIHZpYQorICAgbXVsdGlwbGUgVURQIHNvY2tldHMuCisKKyAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIDpjb25zdDpgfnNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFYCBzb2NrZXQgb3B0aW9uIGlzCisgICBhdmFpbGFibGUgKGkuZS4gb24gV2luZG93cyksIGl0IHdpbGwgYmUgc2V0IG9uIHRoZSBzb2NrZXQuICBUaGlzIHdpbGwKKyAgIHByZXZlbnQgYW55b25lIGVsc2UgZnJvbSBiaW5kaW5nIHRvIG91ciBob3N0L3BvcnQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKKyAgIHRlc3QuCisKKworLi4gZnVuY3Rpb246OiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICBSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcworICAgYWNoaWV2ZWQgYnkgY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgc29ja2V0IHdpdGggdGhlIHNhbWUgZmFtaWx5IGFuZCB0eXBlIGFzCisgICB0aGUgYGBzb2NrYGAgcGFyYW1ldGVyIChkZWZhdWx0IGlzIDpjb25zdDpgfnNvY2tldC5BRl9JTkVUYCwKKyAgIDpjb25zdDpgfnNvY2tldC5TT0NLX1NUUkVBTWApLAorICAgYW5kIGJpbmRpbmcgaXQgdG8gdGhlIHNwZWNpZmllZCBob3N0IGFkZHJlc3MgKGRlZmF1bHRzIHRvIGBgMC4wLjAuMGBgKQorICAgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwgZWxpY2l0aW5nIGFuIHVudXNlZCBlcGhlbWVyYWwgcG9ydCBmcm9tIHRoZSBPUy4KKyAgIFRoZSB0ZW1wb3Jhcnkgc29ja2V0IGlzIHRoZW4gY2xvc2VkIGFuZCBkZWxldGVkLCBhbmQgdGhlIGVwaGVtZXJhbCBwb3J0IGlzCisgICByZXR1cm5lZC4KKworICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIDpmdW5jOmBiaW5kX3BvcnRgIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMKKyAgIHdoZXJlIGEgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlCisgICBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KKyAgIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcgYSBweXRob24KKyAgIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgorICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIGBgLWFjY2VwdGBgIGFyZ3VtZW50IHRvCisgICBvcGVuc3NsJ3Mgc19zZXJ2ZXIgbW9kZSkuICBBbHdheXMgcHJlZmVyIDpmdW5jOmBiaW5kX3BvcnRgIG92ZXIKKyAgIDpmdW5jOmBmaW5kX3VudXNlZF9wb3J0YCB3aGVyZSBwb3NzaWJsZS4gIFVzaW5nIGEgaGFyZCBjb2RlZCBwb3J0IGlzCisgICBkaXNjb3VyYWdlZCBzaW5jZSBpdCBjYW4gbWFrZXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSB0ZXN0IGltcG9zc2libGUgdG8KKyAgIHJ1biBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYSBwcm9ibGVtIGZvciBidWlsZGJvdHMuCisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L3RleHQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YjY3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS90ZXh0LnJzdApAQCAtMCwwICsxLDI2IEBACisuLiBfc3RyaW5nc2VydmljZXM6CisuLiBfdGV4dHNlcnZpY2VzOgorCisqKioqKioqKioqKioqKioqKioqKioqKioKK1RleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCittYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBhbmQgb3RoZXIgdGV4dCBwcm9jZXNzaW5nIHNlcnZpY2VzLgorCitUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YGJpbmFyeXNlcnZpY2VzYCBpcyBhbHNvCitoaWdobHkgcmVsZXZhbnQgdG8gdGV4dCBwcm9jZXNzaW5nLiBJbiBhZGRpdGlvbiwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorUHl0aG9uJ3MgYnVpbHQtaW4gc3RyaW5nIHR5cGUgaW4gOnJlZjpgdGV4dHNlcWAuCisKKworLi4gdG9jdHJlZTo6CisKKyAgIHN0cmluZy5yc3QKKyAgIHJlLnJzdAorICAgZGlmZmxpYi5yc3QKKyAgIHRleHR3cmFwLnJzdAorICAgdW5pY29kZWRhdGEucnN0CisgICBzdHJpbmdwcmVwLnJzdAorICAgcmVhZGxpbmUucnN0CisgICBybGNvbXBsZXRlci5yc3QKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0IGIvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0CmluZGV4IDNjMWVjZjYuLmM2MjUyNTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXh0d3JhcC5yc3QKQEAgLTEyLDcgKzEyLDcgQEAKIAogVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgcHJvdmlkZXMgdHdvIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgOmZ1bmM6YHdyYXBgIGFuZAogOmZ1bmM6YGZpbGxgLCBhcyB3ZWxsIGFzIDpjbGFzczpgVGV4dFdyYXBwZXJgLCB0aGUgY2xhc3MgdGhhdCBkb2VzIGFsbCB0aGUgd29yaywKLWFuZCBhIHV0aWxpdHkgZnVuY3Rpb24gIDpmdW5jOmBkZWRlbnRgLiAgSWYgeW91J3JlIGp1c3Qgd3JhcHBpbmcgb3IgZmlsbGluZyBvbmUKK2FuZCB0d28gdXRpbGl0eSBmdW5jdGlvbnMsIDpmdW5jOmBkZWRlbnRgIGFuZCA6ZnVuYzpgaW5kZW50YC4gIElmIHlvdSdyZSBqdXN0IHdyYXBwaW5nIG9yIGZpbGxpbmcgb25lCiBvciB0d28gIHRleHQgc3RyaW5ncywgdGhlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgZ29vZCBlbm91Z2g7CiBvdGhlcndpc2UsICB5b3Ugc2hvdWxkIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRleHRXcmFwcGVyYCBmb3IgZWZmaWNpZW5jeS4KIApAQCAtNDgsOSArNDgsMTAgQEAKIGh5cGhlbmF0ZWQgd29yZHM7IG9ubHkgdGhlbiB3aWxsIGxvbmcgd29yZHMgYmUgYnJva2VuIGlmIG5lY2Vzc2FyeSwgdW5sZXNzCiA6YXR0cjpgVGV4dFdyYXBwZXIuYnJlYWtfbG9uZ193b3Jkc2AgaXMgc2V0IHRvIGZhbHNlLgogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24sIDpmdW5jOmBkZWRlbnRgLCBpcyBwcm92aWRlZCB0byByZW1vdmUKLWluZGVudGF0aW9uIGZyb20gc3RyaW5ncyB0aGF0IGhhdmUgdW53YW50ZWQgd2hpdGVzcGFjZSB0byB0aGUgbGVmdCBvZiB0aGUgdGV4dC4KLQorVHdvIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiwgOmZ1bmM6YGRlZGVudGAgYW5kIDpmdW5jOmBpbmRlbnRgLCBhcmUKK3Byb3ZpZGVkIHRvIHJlbW92ZSBpbmRlbnRhdGlvbiBmcm9tIHN0cmluZ3MgdGhhdCBoYXZlIHVud2FudGVkIHdoaXRlc3BhY2UKK3RvIHRoZSBsZWZ0IG9mIHRoZSB0ZXh0IGFuZCB0byBhZGQgYW4gYXJiaXRyYXJ5IHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcworaW4gYSBibG9jayBvZiB0ZXh0LgogCiAuLiBmdW5jdGlvbjo6IGRlZGVudCh0ZXh0KQogCkBAIC03NSw2ICs3NiwzMiBAQAogICAgICAgICAgIHByaW50KHJlcHIoZGVkZW50KHMpKSkgICMgcHJpbnRzICdoZWxsb1xuICB3b3JsZFxuJwogCiAKKy4uIGZ1bmN0aW9uOjogaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlPU5vbmUpCisKKyAgIEFkZCAqcHJlZml4KiB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICp0ZXh0Ki4KKworICAgTGluZXMgYXJlIHNlcGFyYXRlZCBieSBjYWxsaW5nIGBgdGV4dC5zcGxpdGxpbmVzKFRydWUpYGAuCisKKyAgIEJ5IGRlZmF1bHQsICpwcmVmaXgqIGlzIGFkZGVkIHRvIGFsbCBsaW5lcyB0aGF0IGRvIG5vdCBjb25zaXN0CisgICBzb2xlbHkgb2Ygd2hpdGVzcGFjZSAoaW5jbHVkaW5nIGFueSBsaW5lIGVuZGluZ3MpLgorCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBzID0gJ2hlbGxvXG5cbiBcbndvcmxkJworICAgICAgPj4+IGluZGVudChzLCAnICAnKQorICAgICAgJyAgaGVsbG9cblxuIFxuICB3b3JsZCcKKworICAgVGhlIG9wdGlvbmFsICpwcmVkaWNhdGUqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggbGluZXMKKyAgIGFyZSBpbmRlbnRlZC4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gYWRkICpwcmVmaXgqIHRvIGV2ZW4gZW1wdHkKKyAgIGFuZCB3aGl0ZXNwYWNlLW9ubHkgbGluZXM6OgorCisgICAgICA+Pj4gcHJpbnQoaW5kZW50KHMsICcrICcsIGxhbWJkYSBsaW5lOiBUcnVlKSkKKyAgICAgICsgaGVsbG8KKyAgICAgICsKKyAgICAgICsKKyAgICAgICsgd29ybGQKKworCiAuLiBjbGFzczo6IFRleHRXcmFwcGVyKCoqa3dhcmdzKQogCiAgICBUaGUgOmNsYXNzOmBUZXh0V3JhcHBlcmAgY29uc3RydWN0b3IgYWNjZXB0cyBhIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkCkBAIC0xMTAsNiArMTM3LDE1IEBACiAgICAgICBleHBhbmRlZCB0byBzcGFjZXMgdXNpbmcgdGhlIDptZXRoOmBleHBhbmR0YWJzYCBtZXRob2Qgb2YgKnRleHQqLgogCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHRhYnNpemUKKworICAgICAgKGRlZmF1bHQ6IGBgOGBgKSBJZiA6YXR0cjpgZXhwYW5kX3RhYnNgIGlzIHRydWUsIHRoZW4gYWxsIHRhYiBjaGFyYWN0ZXJzCisgICAgICBpbiAqdGV4dCogd2lsbCBiZSBleHBhbmRlZCB0byB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIGdpdmVuIHRhYiBzaXplLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBhdHRyaWJ1dGU6OiByZXBsYWNlX3doaXRlc3BhY2UKIAogICAgICAgKGRlZmF1bHQ6IGBgVHJ1ZWBgKSBJZiB0cnVlLCBhZnRlciB0YWIgZXhwYW5zaW9uIGJ1dCBiZWZvcmUgd3JhcHBpbmcsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0IGIvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdAppbmRleCA0YTAxMjExLi5lYzIzNTA0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RocmVhZGluZy5yc3QKQEAgLTIwLDE5ICsyMCw4IEBACiAgICBtZXRob2RzIGFuZCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgaW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzIGFyZSBzdGlsbAogICAgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi0uLiBpbXBsLWRldGFpbDo6CiAKLSAgIEluIENQeXRob24sIGR1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgb25seSBvbmUgdGhyZWFkCi0gICBjYW4gZXhlY3V0ZSBQeXRob24gY29kZSBhdCBvbmNlIChldmVuIHRob3VnaCBjZXJ0YWluIHBlcmZvcm1hbmNlLW9yaWVudGVkCi0gICBsaWJyYXJpZXMgbWlnaHQgb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uKS4KLSAgIElmIHlvdSB3YW50IHlvdXIgYXBwbGljYXRpb24gdG8gbWFrZSBiZXR0ZXIgdXNlIG9mIHRoZSBjb21wdXRhdGlvbmFsCi0gICByZXNvdXJjZXMgb2YgbXVsdGktY29yZSBtYWNoaW5lcywgeW91IGFyZSBhZHZpc2VkIHRvIHVzZQotICAgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBvciA6Y2xhc3M6YGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yYC4KLSAgIEhvd2V2ZXIsIHRocmVhZGluZyBpcyBzdGlsbCBhbiBhcHByb3ByaWF0ZSBtb2RlbCBpZiB5b3Ugd2FudCB0byBydW4KLSAgIG11bHRpcGxlIEkvTy1ib3VuZCB0YXNrcyBzaW11bHRhbmVvdXNseS4KLQotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFuZCBvYmplY3RzOgorVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCiAuLiBmdW5jdGlvbjo6IGFjdGl2ZV9jb3VudCgpCkBAIC00MSwxNiArMzAsNiBAQAogICAgY291bnQgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCByZXR1cm5lZCBieSA6ZnVuYzpgLmVudW1lcmF0ZWAuCiAKIAotLi4gZnVuY3Rpb246OiBDb25kaXRpb24oKQotICAgOm5vaW5kZXg6Ci0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgY29uZGl0aW9uIHZhcmlhYmxlIG9iamVjdC4gQSBjb25kaXRpb24KLSAgIHZhcmlhYmxlIGFsbG93cyBvbmUgb3IgbW9yZSB0aHJlYWRzIHRvIHdhaXQgdW50aWwgdGhleSBhcmUgbm90aWZpZWQgYnkgYW5vdGhlcgotICAgdGhyZWFkLgotCi0gICBTZWUgOnJlZjpgY29uZGl0aW9uLW9iamVjdHNgLgotCi0KIC4uIGZ1bmN0aW9uOjogY3VycmVudF90aHJlYWQoKQogCiAgICBSZXR1cm4gdGhlIGN1cnJlbnQgOmNsYXNzOmBUaHJlYWRgIG9iamVjdCwgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbGVyJ3MgdGhyZWFkCkBAIC01OSw2ICszOCwxNyBAQAogICAgcmV0dXJuZWQuCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfaWRlbnQoKQorCisgICBSZXR1cm4gdGhlICd0aHJlYWQgaWRlbnRpZmllcicgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiAgVGhpcyBpcyBhIG5vbnplcm8KKyAgIGludGVnZXIuICBJdHMgdmFsdWUgaGFzIG5vIGRpcmVjdCBtZWFuaW5nOyBpdCBpcyBpbnRlbmRlZCBhcyBhIG1hZ2ljIGNvb2tpZQorICAgdG8gYmUgdXNlZCBlLmcuIHRvIGluZGV4IGEgZGljdGlvbmFyeSBvZiB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRocmVhZAorICAgaWRlbnRpZmllcnMgbWF5IGJlIHJlY3ljbGVkIHdoZW4gYSB0aHJlYWQgZXhpdHMgYW5kIGFub3RoZXIgdGhyZWFkIGlzCisgICBjcmVhdGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGVudW1lcmF0ZSgpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIDpjbGFzczpgVGhyZWFkYCBvYmplY3RzIGN1cnJlbnRseSBhbGl2ZS4gIFRoZSBsaXN0CkBAIC02Nyw4OSArNTcsNiBAQAogICAgYW5kIHRocmVhZHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBzdGFydGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogRXZlbnQoKQotICAgOm5vaW5kZXg6Ci0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgZXZlbnQgb2JqZWN0LiAgQW4gZXZlbnQgbWFuYWdlcyBhIGZsYWcKLSAgIHRoYXQgY2FuIGJlIHNldCB0byB0cnVlIHdpdGggdGhlIDptZXRoOmB+RXZlbnQuc2V0YCBtZXRob2QgYW5kIHJlc2V0IHRvIGZhbHNlCi0gICB3aXRoIHRoZSA6bWV0aDpgY2xlYXJgIG1ldGhvZC4gIFRoZSA6bWV0aDpgd2FpdGAgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgZmxhZwotICAgaXMgdHJ1ZS4KLQotICAgU2VlIDpyZWY6YGV2ZW50LW9iamVjdHNgLgotCi0KLS4uIGNsYXNzOjogbG9jYWwKLQotICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhyZWFkLWxvY2FsIGRhdGEuICBUaHJlYWQtbG9jYWwgZGF0YSBhcmUgZGF0YSB3aG9zZQotICAgdmFsdWVzIGFyZSB0aHJlYWQgc3BlY2lmaWMuICBUbyBtYW5hZ2UgdGhyZWFkLWxvY2FsIGRhdGEsIGp1c3QgY3JlYXRlIGFuCi0gICBpbnN0YW5jZSBvZiA6Y2xhc3M6YGxvY2FsYCAob3IgYSBzdWJjbGFzcykgYW5kIHN0b3JlIGF0dHJpYnV0ZXMgb24gaXQ6OgotCi0gICAgICBteWRhdGEgPSB0aHJlYWRpbmcubG9jYWwoKQotICAgICAgbXlkYXRhLnggPSAxCi0KLSAgIFRoZSBpbnN0YW5jZSdzIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCBmb3Igc2VwYXJhdGUgdGhyZWFkcy4KLQotICAgRm9yIG1vcmUgZGV0YWlscyBhbmQgZXh0ZW5zaXZlIGV4YW1wbGVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZQotICAgOm1vZDpgX3RocmVhZGluZ19sb2NhbGAgbW9kdWxlLgotCi0KLS4uIGZ1bmN0aW9uOjogTG9jaygpCi0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgcHJpbWl0aXZlIGxvY2sgb2JqZWN0LiAgT25jZSBhIHRocmVhZCBoYXMKLSAgIGFjcXVpcmVkIGl0LCBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjcXVpcmUgaXQgYmxvY2ssIHVudGlsIGl0IGlzIHJlbGVhc2VkOyBhbnkKLSAgIHRocmVhZCBtYXkgcmVsZWFzZSBpdC4KLQotICAgU2VlIDpyZWY6YGxvY2stb2JqZWN0c2AuCi0KLQotLi4gZnVuY3Rpb246OiBSTG9jaygpCi0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgcmVlbnRyYW50IGxvY2sgb2JqZWN0LiBBIHJlZW50cmFudCBsb2NrCi0gICBtdXN0IGJlIHJlbGVhc2VkIGJ5IHRoZSB0aHJlYWQgdGhhdCBhY3F1aXJlZCBpdC4gT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgYQotICAgcmVlbnRyYW50IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdCBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUKLSAgIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcyBhY3F1aXJlZCBpdC4KLQotICAgU2VlIDpyZWY6YHJsb2NrLW9iamVjdHNgLgotCi0KLS4uIGZ1bmN0aW9uOjogU2VtYXBob3JlKHZhbHVlPTEpCi0gICA6bm9pbmRleDoKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBzZW1hcGhvcmUgb2JqZWN0LiAgQSBzZW1hcGhvcmUgbWFuYWdlcyBhCi0gICBjb3VudGVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIDptZXRoOmByZWxlYXNlYCBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mCi0gICA6bWV0aDpgYWNxdWlyZWAgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gVGhlIDptZXRoOmBhY3F1aXJlYCBtZXRob2QgYmxvY2tzCi0gICBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlciBuZWdhdGl2ZS4gIElmIG5vdAotICAgZ2l2ZW4sICp2YWx1ZSogZGVmYXVsdHMgdG8gMS4KLQotICAgU2VlIDpyZWY6YHNlbWFwaG9yZS1vYmplY3RzYC4KLQotCi0uLiBmdW5jdGlvbjo6IEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBib3VuZGVkIHNlbWFwaG9yZSBvYmplY3QuICBBIGJvdW5kZWQKLSAgIHNlbWFwaG9yZSBjaGVja3MgdG8gbWFrZSBzdXJlIGl0cyBjdXJyZW50IHZhbHVlIGRvZXNuJ3QgZXhjZWVkIGl0cyBpbml0aWFsCi0gICB2YWx1ZS4gIElmIGl0IGRvZXMsIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zIHNlbWFwaG9yZXMKLSAgIGFyZSB1c2VkIHRvIGd1YXJkIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuICBJZiB0aGUgc2VtYXBob3JlIGlzIHJlbGVhc2VkCi0gICB0b28gbWFueSB0aW1lcyBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gIElmIG5vdCBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgotCi0KLS4uIGNsYXNzOjogVGhyZWFkCi0gICA6bm9pbmRleDoKLQotICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB0aHJlYWQgb2YgY29udHJvbC4gIFRoaXMgY2xhc3MgY2FuIGJlIHNhZmVseQotICAgc3ViY2xhc3NlZCBpbiBhIGxpbWl0ZWQgZmFzaGlvbi4KLQotICAgU2VlIDpyZWY6YHRocmVhZC1vYmplY3RzYC4KLQotCi0uLiBjbGFzczo6IFRpbWVyCi0gICA6bm9pbmRleDoKLQotICAgQSB0aHJlYWQgdGhhdCBleGVjdXRlcyBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIGludGVydmFsIGhhcyBwYXNzZWQuCi0KLSAgIFNlZSA6cmVmOmB0aW1lci1vYmplY3RzYC4KLQotCiAuLiBmdW5jdGlvbjo6IHNldHRyYWNlKGZ1bmMpCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiB0cmFjZSBmdW5jdGlvbgpAQCAtMTc0LDcgKzgxLDcgQEAKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKICAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBzcGVjaWZpZWQgc3RhY2sgc2l6ZSBpcwogICAgaW52YWxpZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBzdGFjayBzaXplIGlzIHVubW9kaWZpZWQuICAzMmtCCiAgICBpcyBjdXJyZW50bHkgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHN0YWNrIHNpemUgdmFsdWUgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQKICAgIHN0YWNrIHNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmLiAgTm90ZSB0aGF0IHNvbWUgcGxhdGZvcm1zIG1heSBoYXZlCkBAIC0xOTgsNyArMTA1LDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLURldGFpbGVkIGludGVyZmFjZXMgZm9yIHRoZSBvYmplY3RzIGFyZSBkb2N1bWVudGVkIGJlbG93LgorVGhpcyBtb2R1bGUgZGVmaW5lcyBhIG51bWJlciBvZiBjbGFzc2VzLCB3aGljaCBhcmUgZGV0YWlsZWQgaW4gdGhlIHNlY3Rpb25zCitiZWxvdy4KIAogVGhlIGRlc2lnbiBvZiB0aGlzIG1vZHVsZSBpcyBsb29zZWx5IGJhc2VkIG9uIEphdmEncyB0aHJlYWRpbmcgbW9kZWwuIEhvd2V2ZXIsCiB3aGVyZSBKYXZhIG1ha2VzIGxvY2tzIGFuZCBjb25kaXRpb24gdmFyaWFibGVzIGJhc2ljIGJlaGF2aW9yIG9mIGV2ZXJ5IG9iamVjdCwKQEAgLTIxMSwxNyArMTE5LDM4IEBACiBBbGwgb2YgdGhlIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93IGFyZSBleGVjdXRlZCBhdG9taWNhbGx5LgogCiAKK1RocmVhZC1Mb2NhbCBEYXRhCistLS0tLS0tLS0tLS0tLS0tLQorCitUaHJlYWQtbG9jYWwgZGF0YSBpcyBkYXRhIHdob3NlIHZhbHVlcyBhcmUgdGhyZWFkIHNwZWNpZmljLiAgVG8gbWFuYWdlCit0aHJlYWQtbG9jYWwgZGF0YSwganVzdCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBsb2NhbGAgKG9yIGEKK3N1YmNsYXNzKSBhbmQgc3RvcmUgYXR0cmlidXRlcyBvbiBpdDo6CisKKyAgbXlkYXRhID0gdGhyZWFkaW5nLmxvY2FsKCkKKyAgbXlkYXRhLnggPSAxCisKK1RoZSBpbnN0YW5jZSdzIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCBmb3Igc2VwYXJhdGUgdGhyZWFkcy4KKworCisuLiBjbGFzczo6IGxvY2FsKCkKKworICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhyZWFkLWxvY2FsIGRhdGEuCisKKyAgIEZvciBtb3JlIGRldGFpbHMgYW5kIGV4dGVuc2l2ZSBleGFtcGxlcywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUKKyAgIDptb2Q6YF90aHJlYWRpbmdfbG9jYWxgIG1vZHVsZS4KKworCiAuLiBfdGhyZWFkLW9iamVjdHM6CiAKIFRocmVhZCBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIGNsYXNzIHJlcHJlc2VudHMgYW4gYWN0aXZpdHkgdGhhdCBpcyBydW4gaW4gYSBzZXBhcmF0ZSB0aHJlYWQgb2YgY29udHJvbC4KLVRoZXJlIGFyZSB0d28gd2F5cyB0byBzcGVjaWZ5IHRoZSBhY3Rpdml0eTogYnkgcGFzc2luZyBhIGNhbGxhYmxlIG9iamVjdCB0byB0aGUKLWNvbnN0cnVjdG9yLCBvciBieSBvdmVycmlkaW5nIHRoZSA6bWV0aDpgflRocmVhZC5ydW5gIG1ldGhvZCBpbiBhIHN1YmNsYXNzLgotTm8gb3RoZXIgbWV0aG9kcyAoZXhjZXB0IGZvciB0aGUgY29uc3RydWN0b3IpIHNob3VsZCBiZSBvdmVycmlkZGVuIGluIGEKLXN1YmNsYXNzLiAgSW4gb3RoZXIgd29yZHMsICAqb25seSogIG92ZXJyaWRlIHRoZSA6bWV0aDpgflRocmVhZC5fX2luaXRfX2AKLWFuZCA6bWV0aDpgflRocmVhZC5ydW5gIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy4KK1RoZSA6Y2xhc3M6YFRocmVhZGAgY2xhc3MgcmVwcmVzZW50cyBhbiBhY3Rpdml0eSB0aGF0IGlzIHJ1biBpbiBhIHNlcGFyYXRlCit0aHJlYWQgb2YgY29udHJvbC4gIFRoZXJlIGFyZSB0d28gd2F5cyB0byBzcGVjaWZ5IHRoZSBhY3Rpdml0eTogYnkgcGFzc2luZyBhCitjYWxsYWJsZSBvYmplY3QgdG8gdGhlIGNvbnN0cnVjdG9yLCBvciBieSBvdmVycmlkaW5nIHRoZSA6bWV0aDpgflRocmVhZC5ydW5gCittZXRob2QgaW4gYSBzdWJjbGFzcy4gIE5vIG90aGVyIG1ldGhvZHMgKGV4Y2VwdCBmb3IgdGhlIGNvbnN0cnVjdG9yKSBzaG91bGQgYmUKK292ZXJyaWRkZW4gaW4gYSBzdWJjbGFzcy4gIEluIG90aGVyIHdvcmRzLCAqb25seSogIG92ZXJyaWRlIHRoZQorOm1ldGg6YH5UaHJlYWQuX19pbml0X19gIGFuZCA6bWV0aDpgflRocmVhZC5ydW5gIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy4KIAogT25jZSBhIHRocmVhZCBvYmplY3QgaXMgY3JlYXRlZCwgaXRzIGFjdGl2aXR5IG11c3QgYmUgc3RhcnRlZCBieSBjYWxsaW5nIHRoZQogdGhyZWFkJ3MgOm1ldGg6YH5UaHJlYWQuc3RhcnRgIG1ldGhvZC4gIFRoaXMgaW52b2tlcyB0aGUgOm1ldGg6YH5UaHJlYWQucnVuYApAQCAtMjM5LDEwICsxNjgsMTEgQEAKIEEgdGhyZWFkIGhhcyBhIG5hbWUuICBUaGUgbmFtZSBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciwgYW5kIHJlYWQgb3IKIGNoYW5nZWQgdGhyb3VnaCB0aGUgOmF0dHI6YH5UaHJlYWQubmFtZWAgYXR0cmlidXRlLgogCi1BIHRocmVhZCBjYW4gYmUgZmxhZ2dlZCBhcyBhICJkYWVtb24gdGhyZWFkIi4gIFRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBmbGFnCi1pcyB0aGF0IHRoZSBlbnRpcmUgUHl0aG9uIHByb2dyYW0gZXhpdHMgd2hlbiBvbmx5IGRhZW1vbiB0aHJlYWRzIGFyZSBsZWZ0LgotVGhlIGluaXRpYWwgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGNyZWF0aW5nIHRocmVhZC4gIFRoZSBmbGFnIGNhbiBiZQotc2V0IHRocm91Z2ggdGhlIDphdHRyOmB+VGhyZWFkLmRhZW1vbmAgcHJvcGVydHkuCitBIHRocmVhZCBjYW4gYmUgZmxhZ2dlZCBhcyBhICJkYWVtb24gdGhyZWFkIi4gIFRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBmbGFnIGlzCit0aGF0IHRoZSBlbnRpcmUgUHl0aG9uIHByb2dyYW0gZXhpdHMgd2hlbiBvbmx5IGRhZW1vbiB0aHJlYWRzIGFyZSBsZWZ0LiAgVGhlCitpbml0aWFsIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyB0aHJlYWQuICBUaGUgZmxhZyBjYW4gYmUgc2V0Cit0aHJvdWdoIHRoZSA6YXR0cjpgflRocmVhZC5kYWVtb25gIHByb3BlcnR5IG9yIHRoZSAqZGFlbW9uKiBjb25zdHJ1Y3RvcgorYXJndW1lbnQuCiAKIFRoZXJlIGlzIGEgIm1haW4gdGhyZWFkIiBvYmplY3Q7IHRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgdGhyZWFkIG9mCiBjb250cm9sIGluIHRoZSBQeXRob24gcHJvZ3JhbS4gIEl0IGlzIG5vdCBhIGRhZW1vbiB0aHJlYWQuCkBAIC0yNTUsNyArMTg1LDggQEAKIHNpbmNlIGl0IGlzIGltcG9zc2libGUgdG8gZGV0ZWN0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhbGllbiB0aHJlYWRzLgogCiAKLS4uIGNsYXNzOjogVGhyZWFkKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSkKKy4uIGNsYXNzOjogVGhyZWFkKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwgKiwgXAorICAgICAgICAgICAgICAgICAgZGFlbW9uPU5vbmUpCiAKICAgIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4gIEFyZ3VtZW50cwogICAgYXJlOgpAQCAtMjc0LDEwICsyMDUsMTcgQEAKICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLgogICAgRGVmYXVsdHMgdG8gYGB7fWBgLgogCisgICBJZiBub3QgYGBOb25lYGAsICpkYWVtb24qIGV4cGxpY2l0bHkgc2V0cyB3aGV0aGVyIHRoZSB0aHJlYWQgaXMgZGFlbW9uaWMuCisgICBJZiBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB0aGUgZGFlbW9uaWMgcHJvcGVydHkgaXMgaW5oZXJpdGVkIGZyb20gdGhlCisgICBjdXJyZW50IHRocmVhZC4KKwogICAgSWYgdGhlIHN1YmNsYXNzIG92ZXJyaWRlcyB0aGUgY29uc3RydWN0b3IsIGl0IG11c3QgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUKICAgIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgKGBgVGhyZWFkLl9faW5pdF9fKClgYCkgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UgdG8KICAgIHRoZSB0aHJlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHN0YXJ0KCkKIAogICAgICAgU3RhcnQgdGhlIHRocmVhZCdzIGFjdGl2aXR5LgpAQCAtMzY4LDYgKzMwNiwxOCBAQAogICAgICAgcHJvcGVydHkgaW5zdGVhZC4KIAogCisuLiBpbXBsLWRldGFpbDo6CisKKyAgIEluIENQeXRob24sIGR1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgb25seSBvbmUgdGhyZWFkCisgICBjYW4gZXhlY3V0ZSBQeXRob24gY29kZSBhdCBvbmNlIChldmVuIHRob3VnaCBjZXJ0YWluIHBlcmZvcm1hbmNlLW9yaWVudGVkCisgICBsaWJyYXJpZXMgbWlnaHQgb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uKS4KKyAgIElmIHlvdSB3YW50IHlvdXIgYXBwbGljYXRpb24gdG8gbWFrZSBiZXR0ZXIgdXNlIG9mIHRoZSBjb21wdXRhdGlvbmFsCisgICByZXNvdXJjZXMgb2YgbXVsdGktY29yZSBtYWNoaW5lcywgeW91IGFyZSBhZHZpc2VkIHRvIHVzZQorICAgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBvciA6Y2xhc3M6YGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yYC4KKyAgIEhvd2V2ZXIsIHRocmVhZGluZyBpcyBzdGlsbCBhbiBhcHByb3ByaWF0ZSBtb2RlbCBpZiB5b3Ugd2FudCB0byBydW4KKyAgIG11bHRpcGxlIEkvTy1ib3VuZCB0YXNrcyBzaW11bHRhbmVvdXNseS4KKworCiAuLiBfbG9jay1vYmplY3RzOgogCiBMb2NrIE9iamVjdHMKQEAgLTM5OSw0NSArMzQ5LDU1IEBACiBBbGwgbWV0aG9kcyBhcmUgZXhlY3V0ZWQgYXRvbWljYWxseS4KIAogCi0uLiBtZXRob2Q6OiBMb2NrLmFjcXVpcmUoYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSkKKy4uIGNsYXNzOjogTG9jaygpCiAKLSAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCisgICBUaGUgY2xhc3MgaW1wbGVtZW50aW5nIHByaW1pdGl2ZSBsb2NrIG9iamVjdHMuICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCBhCisgICBsb2NrLCBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjcXVpcmUgaXQgYmxvY2ssIHVudGlsIGl0IGlzIHJlbGVhc2VkOyBhbnkKKyAgIHRocmVhZCBtYXkgcmVsZWFzZSBpdC4KIAotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksCi0gICBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZCwgdGhlbiBzZXQgaXQgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBgYEZhbHNlYGAsIGRvIG5vdCBibG9jay4KLSAgIElmIGEgY2FsbCB3aXRoICpibG9ja2luZyogc2V0IHRvIGBgVHJ1ZWBgIHdvdWxkIGJsb2NrLCByZXR1cm4gYGBGYWxzZWBgCi0gICBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBzZXQgdGhlIGxvY2sgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKLSAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgotICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgQSBuZWdhdGl2ZSAqdGltZW91dCogYXJndW1lbnQKLSAgIHNwZWNpZmllcyBhbiB1bmJvdW5kZWQgd2FpdC4gIEl0IGlzIGZvcmJpZGRlbiB0byBzcGVjaWZ5IGEgKnRpbWVvdXQqCi0gICB3aGVuICpibG9ja2luZyogaXMgZmFsc2UuCi0KLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYGBUcnVlYGAgaWYgdGhlIGxvY2sgaXMgYWNxdWlyZWQgc3VjY2Vzc2Z1bGx5LAotICAgYGBGYWxzZWBgIGlmIG5vdCAoZm9yIGV4YW1wbGUgaWYgdGhlICp0aW1lb3V0KiBleHBpcmVkKS4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIExvY2sgYWNxdWlyZXMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIG9uIFBPU0lYLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIENoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KIAogCi0uLiBtZXRob2Q6OiBMb2NrLnJlbGVhc2UoKQorICAgLi4gbWV0aG9kOjogYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKQogCi0gICBSZWxlYXNlIGEgbG9jay4gIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQsIG5vdCBvbmx5IHRoZSB0aHJlYWQKLSAgIHdoaWNoIGhhcyBhY3F1aXJlZCB0aGUgbG9jay4KKyAgICAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCiAKLSAgIFdoZW4gdGhlIGxvY2sgaXMgbG9ja2VkLCByZXNldCBpdCB0byB1bmxvY2tlZCwgYW5kIHJldHVybi4gIElmIGFueSBvdGhlciB0aHJlYWRzCi0gICBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgdW5sb2NrZWQsIGFsbG93IGV4YWN0bHkgb25lIG9mIHRoZW0KLSAgIHRvIHByb2NlZWQuCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwKKyAgICAgIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLCB0aGVuIHNldCBpdCB0byBsb2NrZWQgYW5kIHJldHVybiBgYFRydWVgYC4KIAotICAgV2hlbiBpbnZva2VkIG9uIGFuIHVubG9ja2VkIGxvY2ssIGEgOmV4YzpgVGhyZWFkRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBgYEZhbHNlYGAsIGRvIG5vdCBibG9jay4KKyAgICAgIElmIGEgY2FsbCB3aXRoICpibG9ja2luZyogc2V0IHRvIGBgVHJ1ZWBgIHdvdWxkIGJsb2NrLCByZXR1cm4gYGBGYWxzZWBgCisgICAgICBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBzZXQgdGhlIGxvY2sgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCiAKLSAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKKyAgICAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgorICAgICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgQSBuZWdhdGl2ZSAqdGltZW91dCogYXJndW1lbnQKKyAgICAgIHNwZWNpZmllcyBhbiB1bmJvdW5kZWQgd2FpdC4gIEl0IGlzIGZvcmJpZGRlbiB0byBzcGVjaWZ5IGEgKnRpbWVvdXQqCisgICAgICB3aGVuICpibG9ja2luZyogaXMgZmFsc2UuCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYGBUcnVlYGAgaWYgdGhlIGxvY2sgaXMgYWNxdWlyZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgYGBGYWxzZWBgIGlmIG5vdCAoZm9yIGV4YW1wbGUgaWYgdGhlICp0aW1lb3V0KiBleHBpcmVkKS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIExvY2sgYWNxdWlyZXMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIG9uIFBPU0lYLgorCisKKyAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQorCisgICAgICBSZWxlYXNlIGEgbG9jay4gIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQsIG5vdCBvbmx5IHRoZSB0aHJlYWQKKyAgICAgIHdoaWNoIGhhcyBhY3F1aXJlZCB0aGUgbG9jay4KKworICAgICAgV2hlbiB0aGUgbG9jayBpcyBsb2NrZWQsIHJlc2V0IGl0IHRvIHVubG9ja2VkLCBhbmQgcmV0dXJuLiAgSWYgYW55IG90aGVyIHRocmVhZHMKKyAgICAgIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUgb2YgdGhlbQorICAgICAgdG8gcHJvY2VlZC4KKworICAgICAgV2hlbiBpbnZva2VkIG9uIGFuIHVubG9ja2VkIGxvY2ssIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KIAogCiAuLiBfcmxvY2stb2JqZWN0czoKQEAgLTQ2MSw0NyArNDIxLDU5IEBACiBSZWVudHJhbnQgbG9ja3MgYWxzbyBzdXBwb3J0IHRoZSA6cmVmOmBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgPHdpdGgtbG9ja3M+YC4KIAogCi0uLiBtZXRob2Q6OiBSTG9jay5hY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpCisuLiBjbGFzczo6IFJMb2NrKCkKIAotICAgQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyByZWVudHJhbnQgbG9jayBvYmplY3RzLiAgQSByZWVudHJhbnQgbG9jayBtdXN0IGJlCisgICByZWxlYXNlZCBieSB0aGUgdGhyZWFkIHRoYXQgYWNxdWlyZWQgaXQuICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCBhCisgICByZWVudHJhbnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0IGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZQorICAgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQgaGFzIGFjcXVpcmVkIGl0LgogCi0gICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoaXMgdGhyZWFkIGFscmVhZHkgb3ducyB0aGUgbG9jaywgaW5jcmVtZW50Ci0gICB0aGUgcmVjdXJzaW9uIGxldmVsIGJ5IG9uZSwgYW5kIHJldHVybiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSwgaWYgYW5vdGhlcgotICAgdGhyZWFkIG93bnMgdGhlIGxvY2ssIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLiAgT25jZSB0aGUgbG9jayBpcwotICAgdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgdGhlbiBncmFiIG93bmVyc2hpcCwgc2V0IHRoZSByZWN1cnNpb24gbGV2ZWwKLSAgIHRvIG9uZSwgYW5kIHJldHVybi4gIElmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGlzIGJsb2NrZWQgd2FpdGluZyB1bnRpbCB0aGUgbG9jawotICAgaXMgdW5sb2NrZWQsIG9ubHkgb25lIGF0IGEgdGltZSB3aWxsIGJlIGFibGUgdG8gZ3JhYiBvd25lcnNoaXAgb2YgdGhlIGxvY2suCi0gICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUgaW4gdGhpcyBjYXNlLgotCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcgYXMgd2hlbgotICAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBmYWxzZSwgZG8gbm90IGJsb2NrLiAgSWYgYSBjYWxsCi0gICB3aXRob3V0IGFuIGFyZ3VtZW50IHdvdWxkIGJsb2NrLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgZG8gdGhlCi0gICBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKLSAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgotICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgUmV0dXJuIHRydWUgaWYgdGhlIGxvY2sgaGFzCi0gICBiZWVuIGFjcXVpcmVkLCBmYWxzZSBpZiB0aGUgdGltZW91dCBoYXMgZWxhcHNlZC4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KKyAgIE5vdGUgdGhhdCBgYFJMb2NrYGAgaXMgYWN0dWFsbHkgYSBmYWN0b3J5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gaW5zdGFuY2UKKyAgIG9mIHRoZSBtb3N0IGVmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBjb25jcmV0ZSBSTG9jayBjbGFzcyB0aGF0IGlzIHN1cHBvcnRlZAorICAgYnkgdGhlIHBsYXRmb3JtLgogCiAKLS4uIG1ldGhvZDo6IFJMb2NrLnJlbGVhc2UoKQorICAgLi4gbWV0aG9kOjogYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKQogCi0gICBSZWxlYXNlIGEgbG9jaywgZGVjcmVtZW50aW5nIHRoZSByZWN1cnNpb24gbGV2ZWwuICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IGl0IGlzCi0gICB6ZXJvLCByZXNldCB0aGUgbG9jayB0byB1bmxvY2tlZCAobm90IG93bmVkIGJ5IGFueSB0aHJlYWQpLCBhbmQgaWYgYW55IG90aGVyCi0gICB0aHJlYWRzIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUKLSAgIG9mIHRoZW0gdG8gcHJvY2VlZC4gIElmIGFmdGVyIHRoZSBkZWNyZW1lbnQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBpcyBzdGlsbAotICAgbm9uemVybywgdGhlIGxvY2sgcmVtYWlucyBsb2NrZWQgYW5kIG93bmVkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KKyAgICAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCiAKLSAgIE9ubHkgY2FsbCB0aGlzIG1ldGhvZCB3aGVuIHRoZSBjYWxsaW5nIHRocmVhZCBvd25zIHRoZSBsb2NrLiBBCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbG9jayBpcwotICAgdW5sb2NrZWQuCisgICAgICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoaXMgdGhyZWFkIGFscmVhZHkgb3ducyB0aGUgbG9jaywgaW5jcmVtZW50CisgICAgICB0aGUgcmVjdXJzaW9uIGxldmVsIGJ5IG9uZSwgYW5kIHJldHVybiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSwgaWYgYW5vdGhlcgorICAgICAgdGhyZWFkIG93bnMgdGhlIGxvY2ssIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLiAgT25jZSB0aGUgbG9jayBpcworICAgICAgdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgdGhlbiBncmFiIG93bmVyc2hpcCwgc2V0IHRoZSByZWN1cnNpb24gbGV2ZWwKKyAgICAgIHRvIG9uZSwgYW5kIHJldHVybi4gIElmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGlzIGJsb2NrZWQgd2FpdGluZyB1bnRpbCB0aGUgbG9jaworICAgICAgaXMgdW5sb2NrZWQsIG9ubHkgb25lIGF0IGEgdGltZSB3aWxsIGJlIGFibGUgdG8gZ3JhYiBvd25lcnNoaXAgb2YgdGhlIGxvY2suCisgICAgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUgaW4gdGhpcyBjYXNlLgogCi0gICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcgYXMgd2hlbgorICAgICAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCisKKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBmYWxzZSwgZG8gbm90IGJsb2NrLiAgSWYgYSBjYWxsCisgICAgICB3aXRob3V0IGFuIGFyZ3VtZW50IHdvdWxkIGJsb2NrLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgZG8gdGhlCisgICAgICBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCisKKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKKyAgICAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgorICAgICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgUmV0dXJuIHRydWUgaWYgdGhlIGxvY2sgaGFzCisgICAgICBiZWVuIGFjcXVpcmVkLCBmYWxzZSBpZiB0aGUgdGltZW91dCBoYXMgZWxhcHNlZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KKworCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSBhIGxvY2ssIGRlY3JlbWVudGluZyB0aGUgcmVjdXJzaW9uIGxldmVsLiAgSWYgYWZ0ZXIgdGhlIGRlY3JlbWVudCBpdCBpcworICAgICAgemVybywgcmVzZXQgdGhlIGxvY2sgdG8gdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgYW5kIGlmIGFueSBvdGhlcgorICAgICAgdGhyZWFkcyBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgdW5sb2NrZWQsIGFsbG93IGV4YWN0bHkgb25lCisgICAgICBvZiB0aGVtIHRvIHByb2NlZWQuICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IHRoZSByZWN1cnNpb24gbGV2ZWwgaXMgc3RpbGwKKyAgICAgIG5vbnplcm8sIHRoZSBsb2NrIHJlbWFpbnMgbG9ja2VkIGFuZCBvd25lZCBieSB0aGUgY2FsbGluZyB0aHJlYWQuCisKKyAgICAgIE9ubHkgY2FsbCB0aGlzIG1ldGhvZCB3aGVuIHRoZSBjYWxsaW5nIHRocmVhZCBvd25zIHRoZSBsb2NrLiBBCisgICAgICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbG9jayBpcworICAgICAgdW5sb2NrZWQuCisKKyAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KIAogCiAuLiBfY29uZGl0aW9uLW9iamVjdHM6CkBAIC01MzYsMTAgKzUwOCw2IEBACiB0aGUgdGhyZWFkIHRoYXQgY2FsbGVkIDptZXRoOmB+Q29uZGl0aW9uLm5vdGlmeWAgb3IgOm1ldGg6YH5Db25kaXRpb24ubm90aWZ5X2FsbGAKIGZpbmFsbHkgcmVsaW5xdWlzaGVzIG93bmVyc2hpcCBvZiB0aGUgbG9jay4KIAotCi1Vc2FnZQotXl5eXl4KLQogVGhlIHR5cGljYWwgcHJvZ3JhbW1pbmcgc3R5bGUgdXNpbmcgY29uZGl0aW9uIHZhcmlhYmxlcyB1c2VzIHRoZSBsb2NrIHRvCiBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gc29tZSBzaGFyZWQgc3RhdGU7IHRocmVhZHMgdGhhdCBhcmUgaW50ZXJlc3RlZCBpbiBhCiBwYXJ0aWN1bGFyIGNoYW5nZSBvZiBzdGF0ZSBjYWxsIDptZXRoOmB+Q29uZGl0aW9uLndhaXRgIHJlcGVhdGVkbHkgdW50aWwgdGhleQpAQCAtNTc4LDE1ICs1NDYsMTggQEAKIGl0ZW0gdG8gdGhlIGJ1ZmZlciBvbmx5IG5lZWRzIHRvIHdha2UgdXAgb25lIGNvbnN1bWVyIHRocmVhZC4KIAogCi1JbnRlcmZhY2UKLV5eXl5eXl5eXgotCiAuLiBjbGFzczo6IENvbmRpdGlvbihsb2NrPU5vbmUpCiAKKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBjb25kaXRpb24gdmFyaWFibGUgb2JqZWN0cy4gIEEgY29uZGl0aW9uIHZhcmlhYmxlCisgICBhbGxvd3Mgb25lIG9yIG1vcmUgdGhyZWFkcyB0byB3YWl0IHVudGlsIHRoZXkgYXJlIG5vdGlmaWVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCiAgICBJZiB0aGUgKmxvY2sqIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBub3QgYGBOb25lYGAsIGl0IG11c3QgYmUgYSA6Y2xhc3M6YExvY2tgCiAgICBvciA6Y2xhc3M6YFJMb2NrYCBvYmplY3QsIGFuZCBpdCBpcyB1c2VkIGFzIHRoZSB1bmRlcmx5aW5nIGxvY2suICBPdGhlcndpc2UsCiAgICBhIG5ldyA6Y2xhc3M6YFJMb2NrYCBvYmplY3QgaXMgY3JlYXRlZCBhbmQgdXNlZCBhcyB0aGUgdW5kZXJseWluZyBsb2NrLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCiAgICAuLiBtZXRob2Q6OiBhY3F1aXJlKCphcmdzKQogCiAgICAgICBBY3F1aXJlIHRoZSB1bmRlcmx5aW5nIGxvY2suIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBvbgpAQCAtNjk2LDEwICs2NjcsMTkgQEAKIAogLi4gY2xhc3M6OiBTZW1hcGhvcmUodmFsdWU9MSkKIAorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHNlbWFwaG9yZSBvYmplY3RzLiAgQSBzZW1hcGhvcmUgbWFuYWdlcyBhIGNvdW50ZXIKKyAgIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIDptZXRoOmByZWxlYXNlYCBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mCisgICA6bWV0aDpgYWNxdWlyZWAgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gIFRoZSA6bWV0aDpgYWNxdWlyZWAgbWV0aG9kCisgICBibG9ja3MgaWYgbmVjZXNzYXJ5IHVudGlsIGl0IGNhbiByZXR1cm4gd2l0aG91dCBtYWtpbmcgdGhlIGNvdW50ZXIgbmVnYXRpdmUuCisgICBJZiBub3QgZ2l2ZW4sICp2YWx1ZSogZGVmYXVsdHMgdG8gMS4KKwogICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGdpdmVzIHRoZSBpbml0aWFsICp2YWx1ZSogZm9yIHRoZSBpbnRlcm5hbCBjb3VudGVyOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxYGAuIElmIHRoZSAqdmFsdWUqIGdpdmVuIGlzIGxlc3MgdGhhbiAwLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcwogICAgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCiAgICAuLiBtZXRob2Q6OiBhY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9Tm9uZSkKIAogICAgICAgQWNxdWlyZSBhIHNlbWFwaG9yZS4KQEAgLTczMiw2ICs3MTIsMTggQEAKICAgICAgIHRoYW4gemVybyBhZ2Fpbiwgd2FrZSB1cCB0aGF0IHRocmVhZC4KIAogCisuLiBjbGFzczo6IEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKKworICAgQ2xhc3MgaW1wbGVtZW50aW5nIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdHMuICBBIGJvdW5kZWQgc2VtYXBob3JlIGNoZWNrcyB0bworICAgbWFrZSBzdXJlIGl0cyBjdXJyZW50IHZhbHVlIGRvZXNuJ3QgZXhjZWVkIGl0cyBpbml0aWFsIHZhbHVlLiAgSWYgaXQgZG9lcywKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zIHNlbWFwaG9yZXMgYXJlIHVzZWQgdG8gZ3VhcmQKKyAgIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuICBJZiB0aGUgc2VtYXBob3JlIGlzIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCisgICBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gIElmIG5vdCBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCisKIC4uIF9zZW1hcGhvcmUtZXhhbXBsZXM6CiAKIDpjbGFzczpgU2VtYXBob3JlYCBFeGFtcGxlCkBAIC03NDMsNyArNzM1LDcgQEAKIG1haW4gdGhyZWFkIHdvdWxkIGluaXRpYWxpemUgdGhlIHNlbWFwaG9yZTo6CiAKICAgIG1heGNvbm5lY3Rpb25zID0gNQotICAgLi4uCisgICAjIC4uLgogICAgcG9vbF9zZW1hID0gQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT1tYXhjb25uZWN0aW9ucykKIAogT25jZSBzcGF3bmVkLCB3b3JrZXIgdGhyZWFkcyBjYWxsIHRoZSBzZW1hcGhvcmUncyBhY3F1aXJlIGFuZCByZWxlYXNlIG1ldGhvZHMKQEAgLTc1Miw3ICs3NDQsNyBAQAogICAgd2l0aCBwb29sX3NlbWE6CiAgICAgICAgY29ubiA9IGNvbm5lY3RkYigpCiAgICAgICAgdHJ5OgotICAgICAgICAgICAuLi4gdXNlIGNvbm5lY3Rpb24gLi4uCisgICAgICAgICAgICMgLi4uIHVzZSBjb25uZWN0aW9uIC4uLgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogCkBAIC03NzUsNyArNzY3LDEzIEBACiAKIC4uIGNsYXNzOjogRXZlbnQoKQogCi0gICBUaGUgaW50ZXJuYWwgZmxhZyBpcyBpbml0aWFsbHkgZmFsc2UuCisgICBDbGFzcyBpbXBsZW1lbnRpbmcgZXZlbnQgb2JqZWN0cy4gIEFuIGV2ZW50IG1hbmFnZXMgYSBmbGFnIHRoYXQgY2FuIGJlIHNldCB0bworICAgdHJ1ZSB3aXRoIHRoZSA6bWV0aDpgfkV2ZW50LnNldGAgbWV0aG9kIGFuZCByZXNldCB0byBmYWxzZSB3aXRoIHRoZQorICAgOm1ldGg6YGNsZWFyYCBtZXRob2QuICBUaGUgOm1ldGg6YHdhaXRgIG1ldGhvZCBibG9ja3MgdW50aWwgdGhlIGZsYWcgaXMgdHJ1ZS4KKyAgIFRoZSBmbGFnIGlzIGluaXRpYWxseSBmYWxzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGNoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KIAogICAgLi4gbWV0aG9kOjogaXNfc2V0KCkKIApAQCAtODQwLDYgKzgzOCw5IEBACiAgICBDcmVhdGUgYSB0aW1lciB0aGF0IHdpbGwgcnVuICpmdW5jdGlvbiogd2l0aCBhcmd1bWVudHMgKmFyZ3MqIGFuZCAga2V5d29yZAogICAgYXJndW1lbnRzICprd2FyZ3MqLCBhZnRlciAqaW50ZXJ2YWwqIHNlY29uZHMgaGF2ZSBwYXNzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBjaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCisKICAgIC4uIG1ldGhvZDo6IGNhbmNlbCgpCiAKICAgICAgIFN0b3AgdGhlIHRpbWVyLCBhbmQgY2FuY2VsIHRoZSBleGVjdXRpb24gb2YgdGhlIHRpbWVyJ3MgYWN0aW9uLiAgVGhpcyB3aWxsCkBAIC05NzMsMjcgKzk3NCwzIEBACiBDdXJyZW50bHksIDpjbGFzczpgTG9ja2AsIDpjbGFzczpgUkxvY2tgLCA6Y2xhc3M6YENvbmRpdGlvbmAsCiA6Y2xhc3M6YFNlbWFwaG9yZWAsIGFuZCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgIG9iamVjdHMgbWF5IGJlIHVzZWQgYXMKIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgY29udGV4dCBtYW5hZ2Vycy4KLQotCi0uLiBfdGhyZWFkZWQtaW1wb3J0czoKLQotSW1wb3J0aW5nIGluIHRocmVhZGVkIGNvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdoaWxlIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzIHRocmVhZC1zYWZlLCB0aGVyZSBhcmUgdHdvIGtleSByZXN0cmljdGlvbnMgb24KLXRocmVhZGVkIGltcG9ydHMgZHVlIHRvIGluaGVyZW50IGxpbWl0YXRpb25zIGluIHRoZSB3YXkgdGhhdCB0aHJlYWQtc2FmZXR5IGlzCi1wcm92aWRlZDoKLQotKiBGaXJzdGx5LCBvdGhlciB0aGFuIGluIHRoZSBtYWluIG1vZHVsZSwgYW4gaW1wb3J0IHNob3VsZCBub3QgaGF2ZSB0aGUKLSAgc2lkZSBlZmZlY3Qgb2Ygc3Bhd25pbmcgYSBuZXcgdGhyZWFkIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoYXQgdGhyZWFkIGluCi0gIGFueSB3YXkuIEZhaWxpbmcgdG8gYWJpZGUgYnkgdGhpcyByZXN0cmljdGlvbiBjYW4gbGVhZCB0byBhIGRlYWRsb2NrIGlmCi0gIHRoZSBzcGF3bmVkIHRocmVhZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGF0dGVtcHRzIHRvIGltcG9ydCBhIG1vZHVsZS4KLSogU2Vjb25kbHksIGFsbCBpbXBvcnQgYXR0ZW1wdHMgbXVzdCBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoZSBpbnRlcnByZXRlcgotICBzdGFydHMgc2h1dHRpbmcgaXRzZWxmIGRvd24uIFRoaXMgY2FuIGJlIG1vc3QgZWFzaWx5IGFjaGlldmVkIGJ5IG9ubHkKLSAgcGVyZm9ybWluZyBpbXBvcnRzIGZyb20gbm9uLWRhZW1vbiB0aHJlYWRzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgdGhyZWFkaW5nCi0gIG1vZHVsZS4gRGFlbW9uIHRocmVhZHMgYW5kIHRocmVhZHMgY3JlYXRlZCBkaXJlY3RseSB3aXRoIHRoZSB0aHJlYWQKLSAgbW9kdWxlIHdpbGwgcmVxdWlyZSBzb21lIG90aGVyIGZvcm0gb2Ygc3luY2hyb25pemF0aW9uIHRvIGVuc3VyZSB0aGV5IGRvCi0gIG5vdCBhdHRlbXB0IGltcG9ydHMgYWZ0ZXIgc3lzdGVtIHNodXRkb3duIGhhcyBjb21tZW5jZWQuIEZhaWx1cmUgdG8KLSAgYWJpZGUgYnkgdGhpcyByZXN0cmljdGlvbiB3aWxsIGxlYWQgdG8gaW50ZXJtaXR0ZW50IGV4Y2VwdGlvbnMgYW5kCi0gIGNyYXNoZXMgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duIChhcyB0aGUgbGF0ZSBpbXBvcnRzIGF0dGVtcHQgdG8KLSAgYWNjZXNzIG1hY2hpbmVyeSB3aGljaCBpcyBubyBsb25nZXIgaW4gYSB2YWxpZCBzdGF0ZSkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1lLnJzdCBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CmluZGV4IGUwYzcwMDcuLmQ3ZDgyMzAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CkBAIC00MSwyNSArNDEsNiBAQAogICBwYXJzZWQsIHRoZXkgYXJlIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIFBPU0lYIGFuZCBJU08gQyBzdGFuZGFyZHM6IHZhbHVlcwogICA2OS0tOTkgYXJlIG1hcHBlZCB0byAxOTY5LS0xOTk5LCBhbmQgdmFsdWVzIDAtLTY4IGFyZSBtYXBwZWQgdG8gMjAwMC0tMjA2OC4KIAotICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgeWVhcnMgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMgYXJlIHRyZWF0ZWQKLSAgc3BlY2lhbGx5IGJ5IDpmdW5jOmBhc2N0aW1lYCwgOmZ1bmM6YG1rdGltZWAsIGFuZCA6ZnVuYzpgc3RyZnRpbWVgIGZ1bmN0aW9ucwotICB0aGF0IG9wZXJhdGUgb24gYSA5LXR1cGxlIG9yIDpjbGFzczpgc3RydWN0X3RpbWVgIHZhbHVlcy4gSWYgeWVhciAodGhlIGZpcnN0Ci0gIHZhbHVlIGluIHRoZSA5LXR1cGxlKSBpcyBzcGVjaWZpZWQgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMsIGl0cyBpbnRlcnByZXRhdGlvbgotICBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiBgYGFjY2VwdDJkeWVhcmBgIHZhcmlhYmxlLgotCi0gIElmIGBgYWNjZXB0MmR5ZWFyYGAgaXMgdHJ1ZSAoZGVmYXVsdCksIGEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBiZWhhdmlvciBpcwotICBpbnZva2VkIGFzIGZvbGxvd3M6Ci0KLSAgICAtIGZvciAyLWRpZ2l0IHllYXIsIGNlbnR1cnkgaXMgZ3Vlc3NlZCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMgZm9yCi0gICAgICBgYCV5YGAgc3RycHRpbWUgZm9ybWF0LiAgQSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGlzc3VlZCB3aGVuIGNlbnR1cnkKLSAgICAgIGluZm9ybWF0aW9uIGlzIGd1ZXNzZWQgaW4gdGhpcyB3YXkuCi0KLSAgICAtIGZvciAzLWRpZ2l0IG9yIG5lZ2F0aXZlIHllYXIsIGEgOmV4YzpgVmFsdWVFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotICBJZiBgYGFjY2VwdDJkeWVhcmBgIGlzIGZhbHNlIChzZXQgYnkgdGhlIHByb2dyYW0gb3IgYXMgYSByZXN1bHQgb2YgYQotICBub24tZW1wdHkgdmFsdWUgYXNzaWduZWQgdG8gYGBQWVRIT05ZMktgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSkgYWxsIHllYXIKLSAgdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBnaXZlbi4KLQogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBVVEMKICAgIHNpbmdsZTogQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUKQEAgLTk2LDYgKzc3LDExIEBACiAKICAgU2VlIDpjbGFzczpgc3RydWN0X3RpbWVgIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZXNlIG9iamVjdHMuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgVGhlIDpjbGFzczpgc3RydWN0X3RpbWVgIHR5cGUgd2FzIGV4dGVuZGVkIHRvIHByb3ZpZGUgdGhlIDphdHRyOmB0bV9nbXRvZmZgCisgICAgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyB3aGVuIHBsYXRmb3JtIHN1cHBvcnRzIGNvcnJlc3BvbmRpbmcKKyAgICAgYGBzdHJ1Y3QgdG1gYCBtZW1iZXJzLgorCiAqIFVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gdGltZSByZXByZXNlbnRhdGlvbnM6CiAKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTE3LDI0ICsxMDMsNiBAQAogCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYW5kIGRhdGEgaXRlbXM6CiAKLQotLi4gZGF0YTo6IGFjY2VwdDJkeWVhcgotCi0gICBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0d28tZGlnaXQgeWVhciB2YWx1ZXMgd2lsbCBiZQotICAgbWFwcGVkIHRvIDE5NjktLTIwNjggcmFuZ2UgYnkgOmZ1bmM6YGFzY3RpbWVgLCA6ZnVuYzpgbWt0aW1lYCwgYW5kCi0gICA6ZnVuYzpgc3RyZnRpbWVgIGZ1bmN0aW9ucy4gIFRoaXMgaXMgdHJ1ZSBieSBkZWZhdWx0LCBidXQgd2lsbCBiZQotICAgc2V0IHRvIGZhbHNlIGlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05ZMktgIGhhcwotICAgYmVlbiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLiAgSXQgbWF5IGFsc28gYmUgbW9kaWZpZWQgYXQgcnVuCi0gICB0aW1lLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy4yCi0gICAgICBNYXBwaW5nIG9mIDItZGlnaXQgeWVhciB2YWx1ZXMgYnkgOmZ1bmM6YGFzY3RpbWVgLAotICAgICAgOmZ1bmM6YG1rdGltZWAsIGFuZCA6ZnVuYzpgc3RyZnRpbWVgIGZ1bmN0aW9ucyB0byAxOTY5LS0yMDY4Ci0gICAgICByYW5nZSBpcyBkZXByZWNhdGVkLiAgUHJvZ3JhbXMgdGhhdCBuZWVkIHRvIHByb2Nlc3MgMi1kaWdpdAotICAgICAgeWVhcnMgc2hvdWxkIHVzZSBgYCV5YGAgY29kZSBhdmFpbGFibGUgaW4gOmZ1bmM6YHN0cnB0aW1lYAotICAgICAgZnVuY3Rpb24gb3IgY29udmVydCAyLWRpZ2l0IHllYXIgdmFsdWVzIHRvIDQtZGlnaXQgdGhlbXNlbHZlcy4KLQotCiAuLiBkYXRhOjogYWx0em9uZQogCiAgICBUaGUgb2Zmc2V0IG9mIHRoZSBsb2NhbCBEU1QgdGltZXpvbmUsIGluIHNlY29uZHMgd2VzdCBvZiBVVEMsIGlmIG9uZSBpcyBkZWZpbmVkLgpAQCAtMTUyLDcgKzEyMCw4IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBVbmxpa2UgdGhlIEMgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSwgdGhlcmUgaXMgbm8gdHJhaWxpbmcgbmV3bGluZS4KKyAgICAgIFVubGlrZSB0aGUgQyBmdW5jdGlvbiBvZiB0aGUgc2FtZSBuYW1lLCA6ZnVuYzpgYXNjdGltZWAgZG9lcyBub3QgYWRkIGEKKyAgICAgIHRyYWlsaW5nIG5ld2xpbmUuCiAKIAogLi4gZnVuY3Rpb246OiBjbG9jaygpCkBAIC0xNzIsNiArMTQxLDk3IEBACiAgICA6YzpmdW5jOmBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcmAuIFRoZSByZXNvbHV0aW9uIGlzIHR5cGljYWxseSBiZXR0ZXIgdGhhbiBvbmUKICAgIG1pY3Jvc2Vjb25kLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGUgYmVoYXZpb3VyIG9mIHRoaXMgZnVuY3Rpb24gZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06IHVzZQorICAgICAgOmZ1bmM6YHBlcmZfY291bnRlcmAgb3IgOmZ1bmM6YHByb2Nlc3NfdGltZWAgaW5zdGVhZCwgZGVwZW5kaW5nIG9uIHlvdXIKKyAgICAgIHJlcXVpcmVtZW50cywgdG8gaGF2ZSBhIHdlbGwgZGVmaW5lZCBiZWhhdmlvdXIuCisKKworLi4gZnVuY3Rpb246OiBjbG9ja19nZXRyZXMoY2xrX2lkKQorCisgICBSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayAqY2xrX2lkKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGNsb2NrX2dldHRpbWUoY2xrX2lkKQorCisgICBSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayAqY2xrX2lkKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKQorCisgICBTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayAqY2xrX2lkKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfSElHSFJFUworCisgICBUaGUgU29sYXJpcyBPUyBoYXMgYSBDTE9DS19ISUdIUkVTIHRpbWVyIHRoYXQgYXR0ZW1wdHMgdG8gdXNlIGFuIG9wdGltYWwKKyAgIGhhcmR3YXJlIHNvdXJjZSwgYW5kIG1heSBnaXZlIGNsb3NlIHRvIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4gIENMT0NLX0hJR0hSRVMKKyAgIGlzIHRoZSBub25hZGp1c3RhYmxlLCBoaWdoLXJlc29sdXRpb24gY2xvY2suCisKKyAgIEF2YWlsYWJpbGl0eTogU29sYXJpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX01PTk9UT05JQworCisgICBDbG9jayB0aGF0IGNhbm5vdCBiZSBzZXQgYW5kIHJlcHJlc2VudHMgbW9ub3RvbmljIHRpbWUgc2luY2Ugc29tZSB1bnNwZWNpZmllZAorICAgc3RhcnRpbmcgcG9pbnQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX01PTk9UT05JQ19SQVcKKworICAgU2ltaWxhciB0byA6ZGF0YTpgQ0xPQ0tfTU9OT1RPTklDYCwgYnV0IHByb3ZpZGVzIGFjY2VzcyB0byBhIHJhdworICAgaGFyZHdhcmUtYmFzZWQgdGltZSB0aGF0IGlzIG5vdCBzdWJqZWN0IHRvIE5UUCBhZGp1c3RtZW50cy4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCAyLjYuMjggb3IgbGF0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKKworICAgSGlnaC1yZXNvbHV0aW9uIHBlci1wcm9jZXNzIHRpbWVyIGZyb20gdGhlIENQVS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfUkVBTFRJTUUKKworICAgU3lzdGVtLXdpZGUgcmVhbC10aW1lIGNsb2NrLiAgU2V0dGluZyB0aGlzIGNsb2NrIHJlcXVpcmVzIGFwcHJvcHJpYXRlCisgICBwcml2aWxlZ2VzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAorCisgICBUaHJlYWQtc3BlY2lmaWMgQ1BVLXRpbWUgY2xvY2suCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiBjdGltZShbc2Vjc10pCiAKQEAgLTE4Niw2ICsyNDYsMzEgQEAKICAgIE5vbnplcm8gaWYgYSBEU1QgdGltZXpvbmUgaXMgZGVmaW5lZC4KIAogCisuLiBmdW5jdGlvbjo6IGdldF9jbG9ja19pbmZvKG5hbWUpCisKKyAgIEdldCBpbmZvcm1hdGlvbiBvbiB0aGUgc3BlY2lmaWVkIGNsb2NrIGFzIGEgbmFtZXNwYWNlIG9iamVjdC4KKyAgIFN1cHBvcnRlZCBjbG9jayBuYW1lcyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIHRvIHJlYWQgdGhlaXIgdmFsdWUKKyAgIGFyZToKKworICAgKiBgYCdjbG9jaydgYDogOmZ1bmM6YHRpbWUuY2xvY2tgCisgICAqIGBgJ21vbm90b25pYydgYDogOmZ1bmM6YHRpbWUubW9ub3RvbmljYAorICAgKiBgYCdwZXJmX2NvdW50ZXInYGA6IDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAKKyAgICogYGAncHJvY2Vzc190aW1lJ2BgOiA6ZnVuYzpgdGltZS5wcm9jZXNzX3RpbWVgCisgICAqIGBgJ3RpbWUnYGA6IDpmdW5jOmB0aW1lLnRpbWVgCisKKyAgIFRoZSByZXN1bHQgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICAgLSAqYWRqdXN0YWJsZSo6IGBgVHJ1ZWBgIGlmIHRoZSBjbG9jayBjYW4gYmUgY2hhbmdlZCBhdXRvbWF0aWNhbGx5IChlLmcuIGJ5CisgICAgIGEgTlRQIGRhZW1vbikgb3IgbWFudWFsbHkgYnkgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yLCBgYEZhbHNlYGAgb3RoZXJ3aXNlCisgICAtICppbXBsZW1lbnRhdGlvbio6IFRoZSBuYW1lIG9mIHRoZSB1bmRlcmx5aW5nIEMgZnVuY3Rpb24gdXNlZCB0byBnZXQKKyAgICAgdGhlIGNsb2NrIHZhbHVlCisgICAtICptb25vdG9uaWMqOiBgYFRydWVgYCBpZiB0aGUgY2xvY2sgY2Fubm90IGdvIGJhY2t3YXJkLAorICAgICBgYEZhbHNlYGAgb3RoZXJ3aXNlCisgICAtICpyZXNvbHV0aW9uKjogVGhlIHJlc29sdXRpb24gb2YgdGhlIGNsb2NrIGluIHNlY29uZHMgKDpjbGFzczpgZmxvYXRgKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdtdGltZShbc2Vjc10pCiAKICAgIENvbnZlcnQgYSB0aW1lIGV4cHJlc3NlZCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCB0byBhIDpjbGFzczpgc3RydWN0X3RpbWVgIGluCkBAIC0yMTUsNiArMzAwLDQ3IEBACiAgICBUaGUgZWFybGllc3QgZGF0ZSBmb3Igd2hpY2ggaXQgY2FuIGdlbmVyYXRlIGEgdGltZSBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQuCiAKIAorLi4gZnVuY3Rpb246OiBtb25vdG9uaWMoKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIChpbiBmcmFjdGlvbmFsIHNlY29uZHMpIG9mIGEgbW9ub3RvbmljIGNsb2NrLCBpLmUuIGEgY2xvY2sKKyAgIHRoYXQgY2Fubm90IGdvIGJhY2t3YXJkcy4gIFRoZSBjbG9jayBpcyBub3QgYWZmZWN0ZWQgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMuCisgICBUaGUgcmVmZXJlbmNlIHBvaW50IG9mIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB1bmRlZmluZWQsIHNvIHRoYXQgb25seSB0aGUKKyAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVzdWx0cyBvZiBjb25zZWN1dGl2ZSBjYWxscyBpcyB2YWxpZC4KKworICAgT24gV2luZG93cyB2ZXJzaW9ucyBvbGRlciB0aGFuIFZpc3RhLCA6ZnVuYzpgbW9ub3RvbmljYCBkZXRlY3RzCisgICA6YzpmdW5jOmBHZXRUaWNrQ291bnRgIGludGVnZXIgb3ZlcmZsb3cgKDMyIGJpdHMsIHJvbGwtb3ZlciBhZnRlciA0OS43IGRheXMpLgorICAgSXQgaW5jcmVhc2VzIGFuIGludGVybmFsIGVwb2NoIChyZWZlcmVuY2UgdGltZSkgYnkgMlwgOnN1cDpgMzJgIGVhY2ggdGltZQorICAgdGhhdCBhbiBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gIFRoZSBlcG9jaCBpcyBzdG9yZWQgaW4gdGhlIHByb2Nlc3MtbG9jYWwgc3RhdGUKKyAgIGFuZCBzbyB0aGUgdmFsdWUgb2YgOmZ1bmM6YG1vbm90b25pY2AgbWF5IGJlIGRpZmZlcmVudCBpbiB0d28gUHl0aG9uCisgICBwcm9jZXNzZXMgcnVubmluZyBmb3IgbW9yZSB0aGFuIDQ5IGRheXMuIE9uIG1vcmUgcmVjZW50IHZlcnNpb25zIG9mIFdpbmRvd3MKKyAgIGFuZCBvbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcywgOmZ1bmM6YG1vbm90b25pY2AgaXMgc3lzdGVtLXdpZGUuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cywgTWFjIE9TIFgsIExpbnV4LCBGcmVlQlNELCBPcGVuQlNELCBTb2xhcmlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBlcmZfY291bnRlcigpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgKGluIGZyYWN0aW9uYWwgc2Vjb25kcykgb2YgYSBwZXJmb3JtYW5jZSBjb3VudGVyLCBpLmUuIGEKKyAgIGNsb2NrIHdpdGggdGhlIGhpZ2hlc3QgYXZhaWxhYmxlIHJlc29sdXRpb24gdG8gbWVhc3VyZSBhIHNob3J0IGR1cmF0aW9uLiAgSXQKKyAgIGRvZXMgaW5jbHVkZSB0aW1lIGVsYXBzZWQgZHVyaW5nIHNsZWVwIGFuZCBpcyBzeXN0ZW0td2lkZS4gIFRoZSByZWZlcmVuY2UKKyAgIHBvaW50IG9mIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB1bmRlZmluZWQsIHNvIHRoYXQgb25seSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICB0aGUgcmVzdWx0cyBvZiBjb25zZWN1dGl2ZSBjYWxscyBpcyB2YWxpZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwcm9jZXNzX3RpbWUoKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIChpbiBmcmFjdGlvbmFsIHNlY29uZHMpIG9mIHRoZSBzdW0gb2YgdGhlIHN5c3RlbSBhbmQgdXNlcgorICAgQ1BVIHRpbWUgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGltZSBlbGFwc2VkIGR1cmluZworICAgc2xlZXAuICBJdCBpcyBwcm9jZXNzLXdpZGUgYnkgZGVmaW5pdGlvbi4gIFRoZSByZWZlcmVuY2UgcG9pbnQgb2YgdGhlCisgICByZXR1cm5lZCB2YWx1ZSBpcyB1bmRlZmluZWQsIHNvIHRoYXQgb25seSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSByZXN1bHRzCisgICBvZiBjb25zZWN1dGl2ZSBjYWxscyBpcyB2YWxpZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGZ1bmN0aW9uOjogc2xlZXAoc2VjcykKIAogICAgU3VzcGVuZCBleGVjdXRpb24gZm9yIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4gIFRoZSBhcmd1bWVudCBtYXkgYmUgYQpAQCAtMzA4LDkgKzQzNCwxNSBAQAogICAgfCBgYCV5YGAgICAgfCBZZWFyIHdpdGhvdXQgY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICAgfCBbMDAsOTldLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotICAgfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyLiAgICAgICAgIHwgXCg0KSAgfAorICAgfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyLiAgICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworICAgfCBgYCV6YGAgICAgfCBUaW1lIHpvbmUgb2Zmc2V0IGluZGljYXRpbmcgYSBwb3NpdGl2ZSBvciAgICAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSB0aW1lIGRpZmZlcmVuY2UgZnJvbSBVVEMvR01UIG9mIHRoZSAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBmb3JtICtISE1NIG9yIC1ISE1NLCB3aGVyZSBIIHJlcHJlc2VudHMgZGVjaW1hbHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBob3VyIGRpZ2l0cyBhbmQgTSByZXByZXNlbnRzIGRlY2ltYWwgbWludXRlICAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBkaWdpdHMgWy0yMzo1OSwgKzIzOjU5XS4gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogICAgfCBgYCVaYGAgICAgfCBUaW1lIHpvbmUgbmFtZSAobm8gY2hhcmFjdGVycyBpZiBubyB0aW1lIHpvbmUgIHwgICAgICAgfAogICAgfCAgICAgICAgICAgfCBleGlzdHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwpAQCAtMzMyLDEyICs0NjQsNiBAQAogICAgICAgV2hlbiB1c2VkIHdpdGggdGhlIDpmdW5jOmBzdHJwdGltZWAgZnVuY3Rpb24sIGBgJVVgYCBhbmQgYGAlV2BgIGFyZSBvbmx5IHVzZWQgaW4KICAgICAgIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCiAKLSAgICg0KQotICAgICAgUHJvZHVjZXMgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZgotICAgICAgYGB0aW1lLmFjY2VwdDJkeWVhcmBgIHZhcmlhYmxlLiAgU2VlIDpyZWY6YFllYXIgMjAwMCAoWTJLKQotICAgICAgaXNzdWVzIDx0aW1lLXkya2lzc3Vlcz5gIGZvciBkZXRhaWxzLgotCi0KICAgIEhlcmUgaXMgYW4gZXhhbXBsZSwgYSBmb3JtYXQgZm9yIGRhdGVzIGNvbXBhdGlibGUgd2l0aCB0aGF0IHNwZWNpZmllZCAgaW4gdGhlCiAgICA6cmZjOmAyODIyYCBJbnRlcm5ldCBlbWFpbCBzdGFuZGFyZC4gIFsjXV8gOjoKIApAQCAtNDE2LDEwICs1NDIsMTMgQEAKICAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA4ICAgICB8IDphdHRyOmB0bV9pc2RzdGAgIHwgMCwgMSBvciAtMTsgc2VlIGJlbG93ICAgICAgICAgICB8CiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgTi9BICAgfCA6YXR0cjpgdG1fem9uZWAgICB8IGFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lICAgfAorICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IE4vQSAgIHwgOmF0dHI6YHRtX2dtdG9mZmAgfCBvZmZzZXQgZWFzdCBvZiBVVEMgaW4gc2Vjb25kcyAgIHwKKyAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBOb3RlIHRoYXQgdW5saWtlIHRoZSBDIHN0cnVjdHVyZSwgdGhlIG1vbnRoIHZhbHVlIGlzIGEgcmFuZ2Ugb2YgWzEsIDEyXSwgbm90Ci0gICBbMCwgMTFdLiAgQSB5ZWFyIHZhbHVlIHdpbGwgYmUgaGFuZGxlZCBhcyBkZXNjcmliZWQgdW5kZXIgOnJlZjpgWWVhciAyMDAwCi0gICAoWTJLKSBpc3N1ZXMgPHRpbWUteTJraXNzdWVzPmAgYWJvdmUuICBBIGBgLTFgYCBhcmd1bWVudCBhcyB0aGUgZGF5bGlnaHQKKyAgIFswLCAxMV0uICBBIGBgLTFgYCBhcmd1bWVudCBhcyB0aGUgZGF5bGlnaHQKICAgIHNhdmluZ3MgZmxhZywgcGFzc2VkIHRvIDpmdW5jOmBta3RpbWVgIHdpbGwgdXN1YWxseSByZXN1bHQgaW4gdGhlIGNvcnJlY3QKICAgIGRheWxpZ2h0IHNhdmluZ3Mgc3RhdGUgdG8gYmUgZmlsbGVkIGluLgogCkBAIC00MjcsNiArNTU2LDkgQEAKICAgIDpjbGFzczpgc3RydWN0X3RpbWVgLCBvciBoYXZpbmcgZWxlbWVudHMgb2YgdGhlIHdyb25nIHR5cGUsIGEKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcworICAgICB3aXRoIEMgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbiBgYHN0cnVjdCB0bWBgLgogCiAuLiBmdW5jdGlvbjo6IHRpbWUoKQogCkBAIC00MzcsNyArNTY5LDYgQEAKICAgIGxvd2VyIHZhbHVlIHRoYW4gYSBwcmV2aW91cyBjYWxsIGlmIHRoZSBzeXN0ZW0gY2xvY2sgaGFzIGJlZW4gc2V0IGJhY2sgYmV0d2VlbgogICAgdGhlIHR3byBjYWxscy4KIAotCiAuLiBkYXRhOjogdGltZXpvbmUKIAogICAgVGhlIG9mZnNldCBvZiB0aGUgbG9jYWwgKG5vbi1EU1QpIHRpbWV6b25lLCBpbiBzZWNvbmRzIHdlc3Qgb2YgVVRDIChuZWdhdGl2ZSBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggYTNlYzY2Zi4uYTQ4NzkxNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC03MywxMyArNzMsMTAgQEAKIAogLi4gZnVuY3Rpb246OiBkZWZhdWx0X3RpbWVyKCkKIAotICAgRGVmaW5lIGEgZGVmYXVsdCB0aW1lciwgaW4gYSBwbGF0Zm9ybS1zcGVjaWZpYyBtYW5uZXIuIE9uIFdpbmRvd3MsCi0gICA6ZnVuYzpgdGltZS5jbG9ja2AgaGFzIG1pY3Jvc2Vjb25kIGdyYW51bGFyaXR5LCBidXQgOmZ1bmM6YHRpbWUudGltZWAncwotICAgZ3JhbnVsYXJpdHkgaXMgMS82MHRoIG9mIGEgc2Vjb25kLiAgT24gVW5peCwgOmZ1bmM6YHRpbWUuY2xvY2tgIGhhcyAxLzEwMHRoIG9mCi0gICBhIHNlY29uZCBncmFudWxhcml0eSwgYW5kIDpmdW5jOmB0aW1lLnRpbWVgIGlzIG11Y2ggbW9yZSBwcmVjaXNlLiAgT24gZWl0aGVyCi0gICBwbGF0Zm9ybSwgOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmVzIHdhbGwgY2xvY2sgdGltZSwgbm90IHRoZSBDUFUKLSAgIHRpbWUuICBUaGlzIG1lYW5zIHRoYXQgb3RoZXIgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZXIgbWF5Ci0gICBpbnRlcmZlcmUgd2l0aCB0aGUgdGltaW5nLgorICAgVGhlIGRlZmF1bHQgdGltZXIsIHdoaWNoIGlzIGFsd2F5cyA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCBpcyBub3cgdGhlIGRlZmF1bHQgdGltZXIuCiAKIAogLi4gY2xhc3M6OiBUaW1lcihzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08dGltZXIgZnVuY3Rpb24+KQpAQCAtMTg3LDEzICsxODQsMjAgQEAKIAogICAgc3RhdGVtZW50IHRvIGJlIGV4ZWN1dGVkIG9uY2UgaW5pdGlhbGx5IChkZWZhdWx0IGBgcGFzc2BgKQogCisuLiBjbWRvcHRpb246OiAtcCwgLS1wcm9jZXNzCisKKyAgIG1lYXN1cmUgcHJvY2VzcyB0aW1lLCBub3Qgd2FsbGNsb2NrIHRpbWUsIHVzaW5nIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAKKyAgIGluc3RlYWQgb2YgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNtZG9wdGlvbjo6IC10LCAtLXRpbWUKIAotICAgdXNlIDpmdW5jOmB0aW1lLnRpbWVgIChkZWZhdWx0IG9uIGFsbCBwbGF0Zm9ybXMgYnV0IFdpbmRvd3MpCisgICB1c2UgOmZ1bmM6YHRpbWUudGltZWAgKGRlcHJlY2F0ZWQpCiAKIC4uIGNtZG9wdGlvbjo6IC1jLCAtLWNsb2NrCiAKLSAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlZmF1bHQgb24gV2luZG93cykKKyAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlcHJlY2F0ZWQpCiAKIC4uIGNtZG9wdGlvbjo6IC12LCAtLXZlcmJvc2UKIApAQCAtMjExLDEyICsyMTUsMTEgQEAKIElmIDpvcHRpb246YC1uYCBpcyBub3QgZ2l2ZW4sIGEgc3VpdGFibGUgbnVtYmVyIG9mIGxvb3BzIGlzIGNhbGN1bGF0ZWQgYnkgdHJ5aW5nCiBzdWNjZXNzaXZlIHBvd2VycyBvZiAxMCB1bnRpbCB0aGUgdG90YWwgdGltZSBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kcy4KIAotOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmF0aW9ucyBjYW4gYmUgYWZmZWN0ZWQgYnkgb3RoZXIgcHJvZ3JhbXMgcnVubmluZyBvbgotdGhlIHNhbWUgbWFjaGluZSwgc28KLXRoZSBiZXN0IHRoaW5nIHRvIGRvIHdoZW4gYWNjdXJhdGUgdGltaW5nIGlzIG5lY2Vzc2FyeSBpcyB0byByZXBlYXQKLXRoZSB0aW1pbmcgYSBmZXcgdGltZXMgYW5kIHVzZSB0aGUgYmVzdCB0aW1lLiAgVGhlIDpvcHRpb246YC1yYCBvcHRpb24gaXMgZ29vZAotZm9yIHRoaXM7IHRoZSBkZWZhdWx0IG9mIDMgcmVwZXRpdGlvbnMgaXMgcHJvYmFibHkgZW5vdWdoIGluIG1vc3QgY2FzZXMuICBPbgotVW5peCwgeW91IGNhbiB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIHRvIG1lYXN1cmUgQ1BVIHRpbWUuCis6ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyZW1lbnRzIGNhbiBiZSBhZmZlY3RlZCBieSBvdGhlciBwcm9ncmFtcyBydW5uaW5nIG9uCit0aGUgc2FtZSBtYWNoaW5lLCBzbyB0aGUgYmVzdCB0aGluZyB0byBkbyB3aGVuIGFjY3VyYXRlIHRpbWluZyBpcyBuZWNlc3NhcnkgaXMKK3RvIHJlcGVhdCB0aGUgdGltaW5nIGEgZmV3IHRpbWVzIGFuZCB1c2UgdGhlIGJlc3QgdGltZS4gIFRoZSA6b3B0aW9uOmAtcmAKK29wdGlvbiBpcyBnb29kIGZvciB0aGlzOyB0aGUgZGVmYXVsdCBvZiAzIHJlcGV0aXRpb25zIGlzIHByb2JhYmx5IGVub3VnaCBpbgorbW9zdCBjYXNlcy4gIFlvdSBjYW4gdXNlIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAgdG8gbWVhc3VyZSBDUFUgdGltZS4KIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0IGIvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKaW5kZXggZjZlMDk1YS4uODNhNTM3NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKQEAgLTE5NCwzNSArMTk0LDMwIEBACiAKIDo6CiAKLSAgIGZyb20gdGtpbnRlciBpbXBvcnQgKgorICAgIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLSAgIGNsYXNzIEFwcGxpY2F0aW9uKEZyYW1lKToKLSAgICAgICBkZWYgc2F5X2hpKHNlbGYpOgotICAgICAgICAgICBwcmludCgiaGkgdGhlcmUsIGV2ZXJ5b25lISIpCisgICAgY2xhc3MgQXBwbGljYXRpb24odGsuRnJhbWUpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUpOgorICAgICAgICAgICAgdGsuRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyKQorICAgICAgICAgICAgc2VsZi5wYWNrKCkKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlV2lkZ2V0cygpCiAKLSAgICAgICBkZWYgY3JlYXRlV2lkZ2V0cyhzZWxmKToKLSAgICAgICAgICAgc2VsZi5RVUlUID0gQnV0dG9uKHNlbGYpCi0gICAgICAgICAgIHNlbGYuUVVJVFsidGV4dCJdID0gIlFVSVQiCi0gICAgICAgICAgIHNlbGYuUVVJVFsiZmciXSA9ICJyZWQiCi0gICAgICAgICAgIHNlbGYuUVVJVFsiY29tbWFuZCJdID0gc2VsZi5xdWl0CisgICAgICAgIGRlZiBjcmVhdGVXaWRnZXRzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5oaV90aGVyZSA9IHRrLkJ1dHRvbihzZWxmKQorICAgICAgICAgICAgc2VsZi5oaV90aGVyZVsidGV4dCJdID0gIkhlbGxvIFdvcmxkXG4oY2xpY2sgbWUpIgorICAgICAgICAgICAgc2VsZi5oaV90aGVyZVsiY29tbWFuZCJdID0gc2VsZi5zYXlfaGkKKyAgICAgICAgICAgIHNlbGYuaGlfdGhlcmUucGFjayhzaWRlPSJ0b3AiKQogCi0gICAgICAgICAgIHNlbGYuUVVJVC5wYWNrKHsic2lkZSI6ICJsZWZ0In0pCisgICAgICAgICAgICBzZWxmLlFVSVQgPSB0ay5CdXR0b24oc2VsZiwgdGV4dD0iUVVJVCIsIGZnPSJyZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1yb290LmRlc3Ryb3kpCisgICAgICAgICAgICBzZWxmLlFVSVQucGFjayhzaWRlPSJib3R0b20iKQogCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmUgPSBCdXR0b24oc2VsZikKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZVsidGV4dCJdID0gIkhlbGxvIiwKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZVsiY29tbWFuZCJdID0gc2VsZi5zYXlfaGkKKyAgICAgICAgZGVmIHNheV9oaShzZWxmKToKKyAgICAgICAgICAgIHByaW50KCJoaSB0aGVyZSwgZXZlcnlvbmUhIikKIAotICAgICAgICAgICBzZWxmLmhpX3RoZXJlLnBhY2soeyJzaWRlIjogImxlZnQifSkKLQotICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSk6Ci0gICAgICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlcikKLSAgICAgICAgICAgc2VsZi5wYWNrKCkKLSAgICAgICAgICAgc2VsZi5jcmVhdGVXaWRnZXRzKCkKLQotICAgcm9vdCA9IFRrKCkKLSAgIGFwcCA9IEFwcGxpY2F0aW9uKG1hc3Rlcj1yb290KQotICAgYXBwLm1haW5sb29wKCkKLSAgIHJvb3QuZGVzdHJveSgpCisgICAgcm9vdCA9IHRrLlRrKCkKKyAgICBhcHAgPSBBcHBsaWNhdGlvbihtYXN0ZXI9cm9vdCkKKyAgICBhcHAubWFpbmxvb3AoKQogCiAKIEEgKFZlcnkpIFF1aWNrIExvb2sgYXQgVGNsL1RrCkBAIC03NTUsMjIgKzc1MCwzMiBAQAogICAgZGlzcGxheWVkLiAgWW91IGNhbiB1c2UgdGhlc2UgOm1vZDpgdGtpbnRlcmAgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGVzZSBzcGVjaWFsCiAgICBwb2ludHMgaW4gdGV4dCB3aWRnZXRzOgogCi0gICBBdEVuZCgpCisuLiBmdW5jdGlvbjo6IEF0RW5kKCkKICAgICAgIHJlZmVycyB0byB0aGUgbGFzdCBwb3NpdGlvbiBpbiB0aGUgdGV4dAogCi0gICBBdEluc2VydCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRJbnNlcnQoKQogICAgICAgcmVmZXJzIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgdGV4dCBjdXJzb3IgaXMKIAotICAgQXRTZWxGaXJzdCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRTZWxGaXJzdCgpCiAgICAgICBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBwb2ludCBvZiB0aGUgc2VsZWN0ZWQgdGV4dAogCi0gICBBdFNlbExhc3QoKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0U2VsTGFzdCgpCiAgICAgICBkZW5vdGVzIHRoZSBsYXN0IHBvaW50IG9mIHRoZSBzZWxlY3RlZCB0ZXh0IGFuZCBmaW5hbGx5CiAKLSAgIEF0KHhbLCB5XSkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdCh4WywgeV0pCiAgICAgICByZWZlcnMgdG8gdGhlIGNoYXJhY3RlciBhdCBwaXhlbCBsb2NhdGlvbiAqeCosICp5KiAod2l0aCAqeSogbm90IHVzZWQgaW4gdGhlCiAgICAgICBjYXNlIG9mIGEgdGV4dCBlbnRyeSB3aWRnZXQsIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlIGxpbmUgb2YgdGV4dCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogVGV4dCB3aWRnZXQgaW5kZXhlcwogICAgVGhlIGluZGV4IG5vdGF0aW9uIGZvciBUZXh0IHdpZGdldHMgaXMgdmVyeSByaWNoIGFuZCBpcyBiZXN0IGRlc2NyaWJlZCBpbiB0aGUgVGsKICAgIG1hbiBwYWdlcy4KQEAgLTgxOCw0ICs4MjMsMyBAQAogcmVmZXJlbmNlIHRvIHRoZSBpbWFnZS4gV2hlbiB0aGUgbGFzdCBQeXRob24gcmVmZXJlbmNlIHRvIHRoZSBpbWFnZSBvYmplY3QgaXMKIGRlbGV0ZWQsIHRoZSBpbWFnZSBkYXRhIGlzIGRlbGV0ZWQgYXMgd2VsbCwgYW5kIFRrIHdpbGwgZGlzcGxheSBhbiBlbXB0eSBib3gKIHdoZXJldmVyIHRoZSBpbWFnZSB3YXMgdXNlZC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0IGIvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0CmluZGV4IDcwOTE5Y2EuLjM3ZDlmNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdAorKysgYi9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QKQEAgLTE3LDkgKzE3LDExIEBACiAKIFRvIHNpbXBsaWZ5IHRva2VuIHN0cmVhbSBoYW5kbGluZywgYWxsIDpyZWY6YG9wZXJhdG9yc2AgYW5kIDpyZWY6YGRlbGltaXRlcnNgCiB0b2tlbnMgYXJlIHJldHVybmVkIHVzaW5nIHRoZSBnZW5lcmljIDpkYXRhOmB0b2tlbi5PUGAgdG9rZW4gdHlwZS4gIFRoZSBleGFjdAotdHlwZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgdG9rZW4gYGBzdHJpbmdgYCBmaWVsZCBvbiB0aGUKLTp0ZXJtOmBuYW1lZCB0dXBsZWAgcmV0dXJuZWQgZnJvbSA6ZnVuYzpgdG9rZW5pemUudG9rZW5pemVgIGZvciB0aGUgY2hhcmFjdGVyCi1zZXF1ZW5jZSB0aGF0IGlkZW50aWZpZXMgYSBzcGVjaWZpYyBvcGVyYXRvciB0b2tlbi4KK3R5cGUgY2FuIGJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIGBgZXhhY3RfdHlwZWBgIHByb3BlcnR5IG9uIHRoZQorOnRlcm06YG5hbWVkIHR1cGxlYCByZXR1cm5lZCBmcm9tIDpmdW5jOmB0b2tlbml6ZS50b2tlbml6ZWAuCisKK1Rva2VuaXppbmcgSW5wdXQKKy0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIHByaW1hcnkgZW50cnkgcG9pbnQgaXMgYSA6dGVybTpgZ2VuZXJhdG9yYDoKIApAQCAtMzksOSArNDEsMTcgQEAKICAgIHJldHVybmVkIGFzIGEgOnRlcm06YG5hbWVkIHR1cGxlYCB3aXRoIHRoZSBmaWVsZCBuYW1lczoKICAgIGBgdHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmVgYC4KIAorICAgVGhlIHJldHVybmVkIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaGFzIGEgYWRkaXRpb25hbCBwcm9wZXJ0eSBuYW1lZAorICAgYGBleGFjdF90eXBlYGAgdGhhdCBjb250YWlucyB0aGUgZXhhY3Qgb3BlcmF0b3IgdHlwZSBmb3IKKyAgIDpkYXRhOmB0b2tlbi5PUGAgdG9rZW5zLiAgRm9yIGFsbCBvdGhlciB0b2tlbiB0eXBlcyBgYGV4YWN0X3R5cGVgYAorICAgZXF1YWxzIHRoZSBuYW1lZCB0dXBsZSBgYHR5cGVgYCBmaWVsZC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIG5hbWVkIHR1cGxlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGBgZXhhY3RfdHlwZWBgLgorCiAgICA6ZnVuYzpgdG9rZW5pemVgIGRldGVybWluZXMgdGhlIHNvdXJjZSBlbmNvZGluZyBvZiB0aGUgZmlsZSBieSBsb29raW5nIGZvciBhCiAgICBVVEYtOCBCT00gb3IgZW5jb2RpbmcgY29va2llLCBhY2NvcmRpbmcgdG8gOnBlcDpgMjYzYC4KIApAQCAtMTIyLDYgKzEzMiwzOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gX3Rva2VuaXplLWNsaToKKworQ29tbWFuZC1MaW5lIFVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSA6bW9kOmB0b2tlbml6ZWAgbW9kdWxlIGNhbiBiZSBleGVjdXRlZCBhcyBhIHNjcmlwdCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCitJdCBpcyBhcyBzaW1wbGUgYXM6CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICBweXRob24gLW0gdG9rZW5pemUgWy1lXSBbZmlsZW5hbWUucHldCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWNjZXB0ZWQ6CisKKy4uIHByb2dyYW06OiB0b2tlbml6ZQorCisuLiBjbWRvcHRpb246OiAtaCwgLS1oZWxwCisKKyAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKworLi4gY21kb3B0aW9uOjogLWUsIC0tZXhhY3QKKworICAgZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZQorCitJZiA6ZmlsZTpgZmlsZW5hbWUucHlgIGlzIHNwZWNpZmllZCBpdHMgY29udGVudHMgYXJlIHRva2VuaXplZCB0byBzdGRvdXQuCitPdGhlcndpc2UsIHRva2VuaXphdGlvbiBpcyBwZXJmb3JtZWQgb24gc3RkaW4uCisKK0V4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKwogRXhhbXBsZSBvZiBhIHNjcmlwdCByZXdyaXRlciB0aGF0IHRyYW5zZm9ybXMgZmxvYXQgbGl0ZXJhbHMgaW50byBEZWNpbWFsCiBvYmplY3RzOjoKIApAQCAtMTY0LDMgKzIwNiw2MyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHRva251bSwgdG9rdmFsKSkKICAgICAgICAgcmV0dXJuIHVudG9rZW5pemUocmVzdWx0KS5kZWNvZGUoJ3V0Zi04JykKIAorRXhhbXBsZSBvZiB0b2tlbml6aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIFRoZSBzY3JpcHQ6OgorCisgICAgZGVmIHNheV9oZWxsbygpOgorICAgICAgICBwcmludCgiSGVsbG8sIFdvcmxkISIpCisKKyAgICBzYXlfaGVsbG8oKQorCit3aWxsIGJlIHRva2VuaXplZCB0byB0aGUgZm9sbG93aW5nIG91dHB1dCB3aGVyZSB0aGUgZmlyc3QgY29sdW1uIGlzIHRoZSByYW5nZQorb2YgdGhlIGxpbmUvY29sdW1uIGNvb3JkaW5hdGVzIHdoZXJlIHRoZSB0b2tlbiBpcyBmb3VuZCwgdGhlIHNlY29uZCBjb2x1bW4gaXMKK3RoZSBuYW1lIG9mIHRoZSB0b2tlbiwgYW5kIHRoZSBmaW5hbCBjb2x1bW4gaXMgdGhlIHZhbHVlIG9mIHRoZSB0b2tlbiAoaWYgYW55KQorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgICQgcHl0aG9uIC1tIHRva2VuaXplIGhlbGxvLnB5CisgICAgMCwwLTAsMDogICAgICAgICAgICBFTkNPRElORyAgICAgICAndXRmLTgnCisgICAgMSwwLTEsMzogICAgICAgICAgICBOQU1FICAgICAgICAgICAnZGVmJworICAgIDEsNC0xLDEzOiAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICAxLDEzLTEsMTQ6ICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDEsMTQtMSwxNTogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgMSwxNS0xLDE2OiAgICAgICAgICBPUCAgICAgICAgICAgICAnOicKKyAgICAxLDE2LTEsMTc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAyLDAtMiw0OiAgICAgICAgICAgIElOREVOVCAgICAgICAgICcgICAgJworICAgIDIsNC0yLDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3ByaW50JworICAgIDIsOS0yLDEwOiAgICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgMiwxMC0yLDI1OiAgICAgICAgICBTVFJJTkcgICAgICAgICAnIkhlbGxvLCBXb3JsZCEiJworICAgIDIsMjUtMiwyNjogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgMiwyNi0yLDI3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMywwLTMsMTogICAgICAgICAgICBOTCAgICAgICAgICAgICAnXG4nCisgICAgNCwwLTQsMDogICAgICAgICAgICBERURFTlQgICAgICAgICAnJworICAgIDQsMC00LDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICA0LDktNCwxMDogICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDQsMTAtNCwxMTogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgNCwxMS00LDEyOiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgNSwwLTUsMDogICAgICAgICAgICBFTkRNQVJLRVIgICAgICAnJworCitUaGUgZXhhY3QgdG9rZW4gdHlwZSBuYW1lcyBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoZSBgYC1lYGAgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgICQgcHl0aG9uIC1tIHRva2VuaXplIC1lIGhlbGxvLnB5CisgICAgMCwwLTAsMDogICAgICAgICAgICBFTkNPRElORyAgICAgICAndXRmLTgnCisgICAgMSwwLTEsMzogICAgICAgICAgICBOQU1FICAgICAgICAgICAnZGVmJworICAgIDEsNC0xLDEzOiAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICAxLDEzLTEsMTQ6ICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDEsMTQtMSwxNTogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgMSwxNS0xLDE2OiAgICAgICAgICBDT0xPTiAgICAgICAgICAnOicKKyAgICAxLDE2LTEsMTc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAyLDAtMiw0OiAgICAgICAgICAgIElOREVOVCAgICAgICAgICcgICAgJworICAgIDIsNC0yLDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3ByaW50JworICAgIDIsOS0yLDEwOiAgICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgMiwxMC0yLDI1OiAgICAgICAgICBTVFJJTkcgICAgICAgICAnIkhlbGxvLCBXb3JsZCEiJworICAgIDIsMjUtMiwyNjogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgMiwyNi0yLDI3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMywwLTMsMTogICAgICAgICAgICBOTCAgICAgICAgICAgICAnXG4nCisgICAgNCwwLTQsMDogICAgICAgICAgICBERURFTlQgICAgICAgICAnJworICAgIDQsMC00LDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICA0LDktNCwxMDogICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDQsMTAtNCwxMTogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgNCwxMS00LDEyOiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgNSwwLTUsMDogICAgICAgICAgICBFTkRNQVJLRVIgICAgICAnJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IGQ0YTc2YjYuLjY5NTQ4MGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTEsNSArMSw1IEBACi06bW9kOmB0eXBlc2AgLS0tIE5hbWVzIGZvciBidWlsdC1pbiB0eXBlcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzptb2Q6YHR5cGVzYCAtLS0gRHluYW1pYyB0eXBlIGNyZWF0aW9uIGFuZCBuYW1lcyBmb3IgYnVpbHQtaW4gdHlwZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogdHlwZXMKICAgIDpzeW5vcHNpczogTmFtZXMgZm9yIGJ1aWx0LWluIHR5cGVzLgpAQCAtOCwyMCArOCw3NyBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIG5hbWVzIGZvciBzb21lIG9iamVjdCB0eXBlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZAorVGhpcyBtb2R1bGUgZGVmaW5lcyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGFzc2lzdCBpbiBkeW5hbWljIGNyZWF0aW9uIG9mCituZXcgdHlwZXMuCisKK0l0IGFsc28gZGVmaW5lcyBuYW1lcyBmb3Igc29tZSBvYmplY3QgdHlwZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUgc3RhbmRhcmQKIFB5dGhvbiBpbnRlcnByZXRlciwgYnV0IG5vdCBleHBvc2VkIGFzIGJ1aWx0aW5zIGxpa2UgOmNsYXNzOmBpbnRgIG9yCi06Y2xhc3M6YHN0cmAgYXJlLiAgQWxzbywgaXQgZG9lcyBub3QgaW5jbHVkZSBzb21lIG9mIHRoZSB0eXBlcyB0aGF0IGFyaXNlCi10cmFuc3BhcmVudGx5IGR1cmluZyBwcm9jZXNzaW5nIHN1Y2ggYXMgdGhlIGBgbGlzdGl0ZXJhdG9yYGAgdHlwZS4KKzpjbGFzczpgc3RyYCBhcmUuCiAKLVR5cGljYWwgdXNlIGlzIGZvciA6ZnVuYzpgaXNpbnN0YW5jZWAgb3IgOmZ1bmM6YGlzc3ViY2xhc3NgIGNoZWNrcy4KIAotVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgbmFtZXM6CitEeW5hbWljIFR5cGUgQ3JlYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IG5ld19jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lLCBleGVjX2JvZHk9Tm9uZSkKKworICAgQ3JlYXRlcyBhIGNsYXNzIG9iamVjdCBkeW5hbWljYWxseSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLgorCisgICBUaGUgZmlyc3QgdGhyZWUgYXJndW1lbnRzIGFyZSB0aGUgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgYSBjbGFzcworICAgZGVmaW5pdGlvbiBoZWFkZXI6IHRoZSBjbGFzcyBuYW1lLCB0aGUgYmFzZSBjbGFzc2VzIChpbiBvcmRlciksIHRoZQorICAga2V5d29yZCBhcmd1bWVudHMgKHN1Y2ggYXMgYGBtZXRhY2xhc3NgYCkuCisKKyAgIFRoZSAqZXhlY19ib2R5KiBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUKKyAgIGZyZXNobHkgY3JlYXRlZCBjbGFzcyBuYW1lc3BhY2UuIEl0IHNob3VsZCBhY2NlcHQgdGhlIGNsYXNzIG5hbWVzcGFjZQorICAgYXMgaXRzIHNvbGUgYXJndW1lbnQgYW5kIHVwZGF0ZSB0aGUgbmFtZXNwYWNlIGRpcmVjdGx5IHdpdGggdGhlIGNsYXNzCisgICBjb250ZW50cy4gSWYgbm8gY2FsbGJhY2sgaXMgcHJvdmlkZWQsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgcGFzc2luZworICAgaW4gYGBsYW1iZGEgbnM6IG5zYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXM9KCksIGt3ZHM9Tm9uZSkKKworICAgQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGFuZCBjcmVhdGVzIHRoZSBjbGFzcyBuYW1lc3BhY2UuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCBhIGNsYXNzIGRlZmluaXRpb24gaGVhZGVyOgorICAgdGhlIGNsYXNzIG5hbWUsIHRoZSBiYXNlIGNsYXNzZXMgKGluIG9yZGVyKSBhbmQgdGhlIGtleXdvcmQgYXJndW1lbnRzCisgICAoc3VjaCBhcyBgYG1ldGFjbGFzc2BgKS4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDMtdHVwbGU6IGBgbWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHNgYAorCisgICAqbWV0YWNsYXNzKiBpcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLCAqbmFtZXNwYWNlKiBpcyB0aGUKKyAgIHByZXBhcmVkIGNsYXNzIG5hbWVzcGFjZSBhbmQgKmt3ZHMqIGlzIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUgcGFzc2VkCisgICBpbiAqa3dkcyogYXJndW1lbnQgd2l0aCBhbnkgYGAnbWV0YWNsYXNzJ2BgIGVudHJ5IHJlbW92ZWQuIElmIG5vICprd2RzKgorICAgYXJndW1lbnQgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwgYmUgYW4gZW1wdHkgZGljdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIHNlZWFsc286OgorCisgICA6cmVmOmBtZXRhY2xhc3Nlc2AKKyAgICAgIEZ1bGwgZGV0YWlscyBvZiB0aGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBzdXBwb3J0ZWQgYnkgdGhlc2UgZnVuY3Rpb25zCisKKyAgIDpwZXA6YDMxMTVgIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDAKKyAgICAgIEludHJvZHVjZWQgdGhlIGBgX19wcmVwYXJlX19gYCBuYW1lc3BhY2UgaG9vaworCisKK1N0YW5kYXJkIEludGVycHJldGVyIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBuYW1lcyBmb3IgbWFueSBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8KK2ltcGxlbWVudCBhIFB5dGhvbiBpbnRlcnByZXRlci4gSXQgZGVsaWJlcmF0ZWx5IGF2b2lkcyBpbmNsdWRpbmcgc29tZSBvZgordGhlIHR5cGVzIHRoYXQgYXJpc2Ugb25seSBpbmNpZGVudGFsbHkgZHVyaW5nIHByb2Nlc3Npbmcgc3VjaCBhcyB0aGUKK2BgbGlzdGl0ZXJhdG9yYGAgdHlwZS4KKworVHlwaWNhbCB1c2Ugb2YgdGhlc2UgbmFtZXMgaXMgZm9yIDpmdW5jOmBpc2luc3RhbmNlYCBvcgorOmZ1bmM6YGlzc3ViY2xhc3NgIGNoZWNrcy4KKworU3RhbmRhcmQgbmFtZXMgYXJlIGRlZmluZWQgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6CiAKIC4uIGRhdGE6OiBGdW5jdGlvblR5cGUKICAgICAgICAgICBMYW1iZGFUeXBlCiAKLSAgIFRoZSB0eXBlIG9mIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9ucyBjcmVhdGVkIGJ5IDprZXl3b3JkOmBsYW1iZGFgCi0gICBleHByZXNzaW9ucy4KKyAgIFRoZSB0eXBlIG9mIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9ucyBjcmVhdGVkIGJ5CisgICA6a2V5d29yZDpgbGFtYmRhYCAgZXhwcmVzc2lvbnMuCiAKIAogLi4gZGF0YTo6IEdlbmVyYXRvclR5cGUKQEAgLTg1LDMgKzE0Miw3OSBAQAogCiAgICAgICBJbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLCB0aGlzIHR5cGUgbWF5IGJlIGlkZW50aWNhbCB0bwogICAgICAgYGBHZXRTZXREZXNjcmlwdG9yVHlwZWBgLgorCisuLiBjbGFzczo6IE1hcHBpbmdQcm94eVR5cGUobWFwcGluZykKKworICAgUmVhZC1vbmx5IHByb3h5IG9mIGEgbWFwcGluZy4gSXQgcHJvdmlkZXMgYSBkeW5hbWljIHZpZXcgb24gdGhlIG1hcHBpbmcncworICAgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBtYXBwaW5nIGNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlCisgICBjaGFuZ2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gZGVzY3JpYmU6OiBrZXkgaW4gcHJveHkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcgaGFzIGEga2V5ICprZXkqLCBlbHNlCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIGRlc2NyaWJlOjogcHJveHlba2V5XQorCisgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZyB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaWYgKmtleSogaXMgbm90IGluIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIGRlc2NyaWJlOjogaXRlcihwcm94eSkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZy4gIFRoaXMgaXMgYQorICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihwcm94eS5rZXlzKCkpYGAuCisKKyAgIC4uIGRlc2NyaWJlOjogbGVuKHByb3h5KQorCisgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLgorCisgICAuLiBtZXRob2Q6OiBjb3B5KCkKKworICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIG1ldGhvZDo6IGdldChrZXlbLCBkZWZhdWx0XSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIHVuZGVybHlpbmcgbWFwcGluZywgZWxzZQorICAgICAgKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsIHNvIHRoYXQKKyAgICAgIHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhIDpleGM6YEtleUVycm9yYC4KKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGAKKyAgICAgIHBhaXJzKS4KKworICAgLi4gbWV0aG9kOjoga2V5cygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyBrZXlzLgorCisgICAuLiBtZXRob2Q6OiB2YWx1ZXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3MgdmFsdWVzLgorCisKKy4uIGNsYXNzOjogU2ltcGxlTmFtZXNwYWNlCisKKyAgIEEgc2ltcGxlIDpjbGFzczpgb2JqZWN0YCBzdWJjbGFzcyB0aGF0IHByb3ZpZGVzIGF0dHJpYnV0ZSBhY2Nlc3MgdG8gaXRzCisgICBuYW1lc3BhY2UsIGFzIHdlbGwgYXMgYSBtZWFuaW5nZnVsIHJlcHIuCisKKyAgIFVubGlrZSA6Y2xhc3M6YG9iamVjdGAsIHdpdGggYGBTaW1wbGVOYW1lc3BhY2VgYCB5b3UgY2FuIGFkZCBhbmQgcmVtb3ZlCisgICBhdHRyaWJ1dGVzLiAgSWYgYSBgYFNpbXBsZU5hbWVzcGFjZWBgIG9iamVjdCBpcyBpbml0aWFsaXplZCB3aXRoIGtleXdvcmQKKyAgIGFyZ3VtZW50cywgdGhvc2UgYXJlIGRpcmVjdGx5IGFkZGVkIHRvIHRoZSB1bmRlcmx5aW5nIG5hbWVzcGFjZS4KKworICAgVGhlIHR5cGUgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgY29kZTo6CisKKyAgICAgICBjbGFzcyBTaW1wbGVOYW1lc3BhY2U6CisgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgIGtleXMgPSBzb3J0ZWQoc2VsZi5fX2RpY3RfXykKKyAgICAgICAgICAgICAgIGl0ZW1zID0gKCJ7fT17IXJ9Ii5mb3JtYXQoaywgc2VsZi5fX2RpY3RfX1trXSkgZm9yIGsgaW4ga2V5cykKKyAgICAgICAgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQodHlwZShzZWxmKS5fX25hbWVfXywgIiwgIi5qb2luKGl0ZW1zKSkKKworICAgYGBTaW1wbGVOYW1lc3BhY2VgYCBtYXkgYmUgdXNlZnVsIGFzIGEgcmVwbGFjZW1lbnQgZm9yIGBgY2xhc3MgTlM6IHBhc3NgYC4KKyAgIEhvd2V2ZXIsIGZvciBhIHN0cnVjdHVyZWQgcmVjb3JkIHR5cGUgdXNlIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAKKyAgIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0IGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CmluZGV4IDMzYjVjZTAuLmFkNzBkZDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKQEAgLTE1LDggKzE1LDggQEAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSB3aGljaAogZGVmaW5lcyBjaGFyYWN0ZXIgcHJvcGVydGllcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycy4gVGhlIGRhdGEgY29udGFpbmVkIGluCi10aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA2LjAuMAotPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMC4wL3VjZD5gXy4KK3RoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMS4wCis8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkPmBfLgogCiBUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSBVbmljb2RlCiBTdGFuZGFyZCBBbm5leCAjNDQsIGAiVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UiCkBAIC0yOSw2ICsyOSw5IEBACiAgICBMb29rIHVwIGNoYXJhY3RlciBieSBuYW1lLiAgSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuCiAgICB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWyNdXyBhbmQgbmFtZWQgc2VxdWVuY2VzIFsjXV8gaGFzIGJlZW4gYWRkZWQuCisKIAogLi4gZnVuY3Rpb246OiBuYW1lKGNoclssIGRlZmF1bHRdKQogCkBAIC0xNjAsMyArMTYzLDkgQEAKICAgID4+PiB1bmljb2RlZGF0YS5iaWRpcmVjdGlvbmFsKCdcdTA2NjAnKSAjICdBJ3JhYmljLCAnTid1bWJlcgogICAgJ0FOJwogCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2JiNWFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKQEAgLTAsMCArMSwxMjQ2IEBACis6bW9kOmB1bml0dGVzdC5tb2NrYCAtLS0gZ2V0dGluZyBzdGFydGVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZWF1dGhvcjo6IE1pY2hhZWwgRm9vcmQgPG1pY2hhZWxAcHl0aG9uLm9yZz4KKy4uIGN1cnJlbnRtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIF9nZXR0aW5nLXN0YXJ0ZWQ6CisKK1VzaW5nIE1vY2sKKy0tLS0tLS0tLS0KKworTW9jayBQYXRjaGluZyBNZXRob2RzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQ29tbW9uIHVzZXMgZm9yIDpjbGFzczpgTW9ja2Agb2JqZWN0cyBpbmNsdWRlOgorCisqIFBhdGNoaW5nIG1ldGhvZHMKKyogUmVjb3JkaW5nIG1ldGhvZCBjYWxscyBvbiBvYmplY3RzCisKK1lvdSBtaWdodCB3YW50IHRvIHJlcGxhY2UgYSBtZXRob2Qgb24gYW4gb2JqZWN0IHRvIGNoZWNrIHRoYXQKK2l0IGlzIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50cyBieSBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbToKKworICAgID4+PiByZWFsID0gU29tZUNsYXNzKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QgPSBNYWdpY01vY2sobmFtZT0nbWV0aG9kJykKKyAgICA+Pj4gcmVhbC5tZXRob2QoMywgNCwgNSwga2V5PSd2YWx1ZScpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtZXRob2QoKScgaWQ9Jy4uLic+CisKK09uY2Ugb3VyIG1vY2sgaGFzIGJlZW4gdXNlZCAoYHJlYWwubWV0aG9kYCBpbiB0aGlzIGV4YW1wbGUpIGl0IGhhcyBtZXRob2RzCithbmQgYXR0cmlidXRlcyB0aGF0IGFsbG93IHlvdSB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgaG93IGl0IGhhcyBiZWVuIHVzZWQuCisKKy4uIG5vdGU6OgorCisgICAgSW4gbW9zdCBvZiB0aGVzZSBleGFtcGxlcyB0aGUgOmNsYXNzOmBNb2NrYCBhbmQgOmNsYXNzOmBNYWdpY01vY2tgIGNsYXNzZXMKKyAgICBhcmUgaW50ZXJjaGFuZ2VhYmxlLiBBcyB0aGUgYE1hZ2ljTW9ja2AgaXMgdGhlIG1vcmUgY2FwYWJsZSBjbGFzcyBpdCBtYWtlcworICAgIGEgc2Vuc2libGUgb25lIHRvIHVzZSBieSBkZWZhdWx0LgorCitPbmNlIHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCBpdHMgOmF0dHI6YH5Nb2NrLmNhbGxlZGAgYXR0cmlidXRlIGlzIHNldCB0bworYFRydWVgLiBNb3JlIGltcG9ydGFudGx5IHdlIGNhbiB1c2UgdGhlIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIG9yCis6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIG1ldGhvZCB0byBjaGVjayB0aGF0IGl0IHdhcyBjYWxsZWQgd2l0aAordGhlIGNvcnJlY3QgYXJndW1lbnRzLgorCitUaGlzIGV4YW1wbGUgdGVzdHMgdGhhdCBjYWxsaW5nIGBQcm9kdWN0aW9uQ2xhc3MoKS5tZXRob2RgIHJlc3VsdHMgaW4gYSBjYWxsIHRvCit0aGUgYHNvbWV0aGluZ2AgbWV0aG9kOgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnNvbWV0aGluZygxLCAyLCAzKQorICAgIC4uLiAgICAgZGVmIHNvbWV0aGluZyhzZWxmLCBhLCBiLCBjKToKKyAgICAuLi4gICAgICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHJlYWwgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgID4+PiByZWFsLnNvbWV0aGluZyA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHJlYWwubWV0aG9kKCkKKyAgICA+Pj4gcmVhbC5zb21ldGhpbmcuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKworCisKK01vY2sgZm9yIE1ldGhvZCBDYWxscyBvbiBhbiBPYmplY3QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSW4gdGhlIGxhc3QgZXhhbXBsZSB3ZSBwYXRjaGVkIGEgbWV0aG9kIGRpcmVjdGx5IG9uIGFuIG9iamVjdCB0byBjaGVjayB0aGF0IGl0Cit3YXMgY2FsbGVkIGNvcnJlY3RseS4gQW5vdGhlciBjb21tb24gdXNlIGNhc2UgaXMgdG8gcGFzcyBhbiBvYmplY3QgaW50byBhCittZXRob2QgKG9yIHNvbWUgcGFydCBvZiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QpIGFuZCB0aGVuIGNoZWNrIHRoYXQgaXQgaXMgdXNlZAoraW4gdGhlIGNvcnJlY3Qgd2F5LgorCitUaGUgc2ltcGxlIGBQcm9kdWN0aW9uQ2xhc3NgIGJlbG93IGhhcyBhIGBjbG9zZXJgIG1ldGhvZC4gSWYgaXQgaXMgY2FsbGVkIHdpdGgKK2FuIG9iamVjdCB0aGVuIGl0IGNhbGxzIGBjbG9zZWAgb24gaXQuCisKKyAgICA+Pj4gY2xhc3MgUHJvZHVjdGlvbkNsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgY2xvc2VyKHNlbGYsIHNvbWV0aGluZyk6CisgICAgLi4uICAgICAgICAgc29tZXRoaW5nLmNsb3NlKCkKKyAgICAuLi4KKworU28gdG8gdGVzdCBpdCB3ZSBuZWVkIHRvIHBhc3MgaW4gYW4gb2JqZWN0IHdpdGggYSBgY2xvc2VgIG1ldGhvZCBhbmQgY2hlY2sKK3RoYXQgaXQgd2FzIGNhbGxlZCBjb3JyZWN0bHkuCisKKyAgICA+Pj4gcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gcmVhbC5jbG9zZXIobW9jaykKKyAgICA+Pj4gbW9jay5jbG9zZS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCitXZSBkb24ndCBoYXZlIHRvIGRvIGFueSB3b3JrIHRvIHByb3ZpZGUgdGhlICdjbG9zZScgbWV0aG9kIG9uIG91ciBtb2NrLgorQWNjZXNzaW5nIGNsb3NlIGNyZWF0ZXMgaXQuIFNvLCBpZiAnY2xvc2UnIGhhc24ndCBhbHJlYWR5IGJlZW4gY2FsbGVkIHRoZW4KK2FjY2Vzc2luZyBpdCBpbiB0aGUgdGVzdCB3aWxsIGNyZWF0ZSBpdCwgYnV0IDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgCit3aWxsIHJhaXNlIGEgZmFpbHVyZSBleGNlcHRpb24uCisKKworTW9ja2luZyBDbGFzc2VzCit+fn5+fn5+fn5+fn5+fn4KKworQSBjb21tb24gdXNlIGNhc2UgaXMgdG8gbW9jayBvdXQgY2xhc3NlcyBpbnN0YW50aWF0ZWQgYnkgeW91ciBjb2RlIHVuZGVyIHRlc3QuCitXaGVuIHlvdSBwYXRjaCBhIGNsYXNzLCB0aGVuIHRoYXQgY2xhc3MgaXMgcmVwbGFjZWQgd2l0aCBhIG1vY2suIEluc3RhbmNlcworYXJlIGNyZWF0ZWQgYnkgKmNhbGxpbmcgdGhlIGNsYXNzKi4gVGhpcyBtZWFucyB5b3UgYWNjZXNzIHRoZSAibW9jayBpbnN0YW5jZSIKK2J5IGxvb2tpbmcgYXQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbW9ja2VkIGNsYXNzLgorCitJbiB0aGUgZXhhbXBsZSBiZWxvdyB3ZSBoYXZlIGEgZnVuY3Rpb24gYHNvbWVfZnVuY3Rpb25gIHRoYXQgaW5zdGFudGlhdGVzIGBGb29gCithbmQgY2FsbHMgYSBtZXRob2Qgb24gaXQuIFRoZSBjYWxsIHRvIGBwYXRjaGAgcmVwbGFjZXMgdGhlIGNsYXNzIGBGb29gIHdpdGggYQorbW9jay4gVGhlIGBGb29gIGluc3RhbmNlIGlzIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgbW9jaywgc28gaXQgaXMgY29uZmlndXJlZAorYnkgbW9kaWZ5aW5nIHRoZSBtb2NrIDphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgLgorCisgICAgPj4+IGRlZiBzb21lX2Z1bmN0aW9uKCk6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IG1vZHVsZS5Gb28oKQorICAgIC4uLiAgICAgcmV0dXJuIGluc3RhbmNlLm1ldGhvZCgpCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ21vZHVsZS5Gb28nKSBhcyBtb2NrOgorICAgIC4uLiAgICAgaW5zdGFuY2UgPSBtb2NrLnJldHVybl92YWx1ZQorICAgIC4uLiAgICAgaW5zdGFuY2UubWV0aG9kLnJldHVybl92YWx1ZSA9ICd0aGUgcmVzdWx0JworICAgIC4uLiAgICAgcmVzdWx0ID0gc29tZV9mdW5jdGlvbigpCisgICAgLi4uICAgICBhc3NlcnQgcmVzdWx0ID09ICd0aGUgcmVzdWx0JworCisKK05hbWluZyB5b3VyIG1vY2tzCit+fn5+fn5+fn5+fn5+fn5+fgorCitJdCBjYW4gYmUgdXNlZnVsIHRvIGdpdmUgeW91ciBtb2NrcyBhIG5hbWUuIFRoZSBuYW1lIGlzIHNob3duIGluIHRoZSByZXByIG9mCit0aGUgbW9jayBhbmQgY2FuIGJlIGhlbHBmdWwgd2hlbiB0aGUgbW9jayBhcHBlYXJzIGluIHRlc3QgZmFpbHVyZSBtZXNzYWdlcy4gVGhlCituYW1lIGlzIGFsc28gcHJvcGFnYXRlZCB0byBhdHRyaWJ1dGVzIG9yIG1ldGhvZHMgb2YgdGhlIG1vY2s6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhuYW1lPSdmb28nKQorICAgID4+PiBtb2NrCisgICAgPE1hZ2ljTW9jayBuYW1lPSdmb28nIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1ldGhvZAorICAgIDxNYWdpY01vY2sgbmFtZT0nZm9vLm1ldGhvZCcgaWQ9Jy4uLic+CisKKworVHJhY2tpbmcgYWxsIENhbGxzCit+fn5+fn5+fn5+fn5+fn5+fn4KKworT2Z0ZW4geW91IHdhbnQgdG8gdHJhY2sgbW9yZSB0aGFuIGEgc2luZ2xlIGNhbGwgdG8gYSBtZXRob2QuIFRoZQorOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIGF0dHJpYnV0ZSByZWNvcmRzIGFsbCBjYWxscwordG8gY2hpbGQgYXR0cmlidXRlcyBvZiB0aGUgbW9jayAtIGFuZCBhbHNvIHRvIHRoZWlyIGNoaWxkcmVuLgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5hdHRyaWJ1dGUubWV0aG9kKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5tZXRob2QoKSwgY2FsbC5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKV0KKworSWYgeW91IG1ha2UgYW4gYXNzZXJ0aW9uIGFib3V0IGBtb2NrX2NhbGxzYCBhbmQgYW55IHVuZXhwZWN0ZWQgbWV0aG9kcworaGF2ZSBiZWVuIGNhbGxlZCwgdGhlbiB0aGUgYXNzZXJ0aW9uIHdpbGwgZmFpbC4gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBhcyB3ZWxsCithcyBhc3NlcnRpbmcgdGhhdCB0aGUgY2FsbHMgeW91IGV4cGVjdGVkIGhhdmUgYmVlbiBtYWRlLCB5b3UgYXJlIGFsc28gY2hlY2tpbmcKK3RoYXQgdGhleSB3ZXJlIG1hZGUgaW4gdGhlIHJpZ2h0IG9yZGVyIGFuZCB3aXRoIG5vIGFkZGl0aW9uYWwgY2FsbHM6CisKK1lvdSB1c2UgdGhlIDpkYXRhOmBjYWxsYCBvYmplY3QgdG8gY29uc3RydWN0IGxpc3RzIGZvciBjb21wYXJpbmcgd2l0aAorYG1vY2tfY2FsbHNgOgorCisgICAgPj4+IGV4cGVjdGVkID0gW2NhbGwubWV0aG9kKCksIGNhbGwuYXR0cmlidXRlLm1ldGhvZCgxMCwgeD01MyldCisgICAgPj4+IG1vY2subW9ja19jYWxscyA9PSBleHBlY3RlZAorICAgIFRydWUKKworCitTZXR0aW5nIFJldHVybiBWYWx1ZXMgYW5kIEF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTZXR0aW5nIHRoZSByZXR1cm4gdmFsdWVzIG9uIGEgbW9jayBvYmplY3QgaXMgdHJpdmlhbGx5IGVhc3k6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLnJldHVybl92YWx1ZSA9IDMKKyAgICA+Pj4gbW9jaygpCisgICAgMworCitPZiBjb3Vyc2UgeW91IGNhbiBkbyB0aGUgc2FtZSBmb3IgbWV0aG9kcyBvbiB0aGUgbW9jazoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2subWV0aG9kLnJldHVybl92YWx1ZSA9IDMKKyAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgIDMKKworVGhlIHJldHVybiB2YWx1ZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT0zKQorICAgID4+PiBtb2NrKCkKKyAgICAzCisKK0lmIHlvdSBuZWVkIGFuIGF0dHJpYnV0ZSBzZXR0aW5nIG9uIHlvdXIgbW9jaywganVzdCBkbyBpdDoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2sueCA9IDMKKyAgICA+Pj4gbW9jay54CisgICAgMworCitTb21ldGltZXMgeW91IHdhbnQgdG8gbW9jayB1cCBhIG1vcmUgY29tcGxleCBzaXR1YXRpb24sIGxpa2UgZm9yIGV4YW1wbGUKK2Btb2NrLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKWAuIElmIHdlIHdhbnRlZCB0aGlzIGNhbGwgdG8KK3JldHVybiBhIGxpc3QsIHRoZW4gd2UgaGF2ZSB0byBjb25maWd1cmUgdGhlIHJlc3VsdCBvZiB0aGUgbmVzdGVkIGNhbGwuCisKK1dlIGNhbiB1c2UgOmRhdGE6YGNhbGxgIHRvIGNvbnN0cnVjdCB0aGUgc2V0IG9mIGNhbGxzIGluIGEgImNoYWluZWQgY2FsbCIgbGlrZQordGhpcyBmb3IgZWFzeSBhc3NlcnRpb24gYWZ0ZXJ3YXJkczoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IGN1cnNvciA9IG1vY2suY29ubmVjdGlvbi5jdXJzb3IucmV0dXJuX3ZhbHVlCisgICAgPj4+IGN1cnNvci5leGVjdXRlLnJldHVybl92YWx1ZSA9IFsnZm9vJ10KKyAgICA+Pj4gbW9jay5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoIlNFTEVDVCAxIikKKyAgICBbJ2ZvbyddCisgICAgPj4+IGV4cGVjdGVkID0gY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoIlNFTEVDVCAxIikuY2FsbF9saXN0KCkKKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzCisgICAgW2NhbGwuY29ubmVjdGlvbi5jdXJzb3IoKSwgY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoJ1NFTEVDVCAxJyldCisgICAgPj4+IG1vY2subW9ja19jYWxscyA9PSBleHBlY3RlZAorICAgIFRydWUKKworSXQgaXMgdGhlIGNhbGwgdG8gYC5jYWxsX2xpc3QoKWAgdGhhdCB0dXJucyBvdXIgY2FsbCBvYmplY3QgaW50byBhIGxpc3Qgb2YKK2NhbGxzIHJlcHJlc2VudGluZyB0aGUgY2hhaW5lZCBjYWxscy4KKworCitSYWlzaW5nIGV4Y2VwdGlvbnMgd2l0aCBtb2Nrcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQSB1c2VmdWwgYXR0cmlidXRlIGlzIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAuIElmIHlvdSBzZXQgdGhpcyB0byBhbgorZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlIHRoZW4gdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHRoZSBtb2NrCitpcyBjYWxsZWQuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9RXhjZXB0aW9uKCdCb29tIScpKQorICAgID4+PiBtb2NrKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBFeGNlcHRpb246IEJvb20hCisKKworU2lkZSBlZmZlY3QgZnVuY3Rpb25zIGFuZCBpdGVyYWJsZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK2BzaWRlX2VmZmVjdGAgY2FuIGFsc28gYmUgc2V0IHRvIGEgZnVuY3Rpb24gb3IgYW4gaXRlcmFibGUuIFRoZSB1c2UgY2FzZSBmb3IKK2BzaWRlX2VmZmVjdGAgYXMgYW4gaXRlcmFibGUgaXMgd2hlcmUgeW91ciBtb2NrIGlzIGdvaW5nIHRvIGJlIGNhbGxlZCBzZXZlcmFsCit0aW1lcywgYW5kIHlvdSB3YW50IGVhY2ggY2FsbCB0byByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUuIFdoZW4geW91IHNldAorYHNpZGVfZWZmZWN0YCB0byBhbiBpdGVyYWJsZSBldmVyeSBjYWxsIHRvIHRoZSBtb2NrIHJldHVybnMgdGhlIG5leHQgdmFsdWUKK2Zyb20gdGhlIGl0ZXJhYmxlOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9WzQsIDUsIDZdKQorICAgID4+PiBtb2NrKCkKKyAgICA0CisgICAgPj4+IG1vY2soKQorICAgIDUKKyAgICA+Pj4gbW9jaygpCisgICAgNgorCisKK0ZvciBtb3JlIGFkdmFuY2VkIHVzZSBjYXNlcywgbGlrZSBkeW5hbWljYWxseSB2YXJ5aW5nIHRoZSByZXR1cm4gdmFsdWVzCitkZXBlbmRpbmcgb24gd2hhdCB0aGUgbW9jayBpcyBjYWxsZWQgd2l0aCwgYHNpZGVfZWZmZWN0YCBjYW4gYmUgYSBmdW5jdGlvbi4KK1RoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbW9jay4gV2hhdGV2ZXIgdGhlCitmdW5jdGlvbiByZXR1cm5zIGlzIHdoYXQgdGhlIGNhbGwgcmV0dXJuczoKKworICAgID4+PiB2YWxzID0geygxLCAyKTogMSwgKDIsIDMpOiAyfQorICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MpOgorICAgIC4uLiAgICAgcmV0dXJuIHZhbHNbYXJnc10KKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICA+Pj4gbW9jaygxLCAyKQorICAgIDEKKyAgICA+Pj4gbW9jaygyLCAzKQorICAgIDIKKworCitDcmVhdGluZyBhIE1vY2sgZnJvbSBhbiBFeGlzdGluZyBPYmplY3QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitPbmUgcHJvYmxlbSB3aXRoIG92ZXIgdXNlIG9mIG1vY2tpbmcgaXMgdGhhdCBpdCBjb3VwbGVzIHlvdXIgdGVzdHMgdG8gdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIG1vY2tzIHJhdGhlciB0aGFuIHlvdXIgcmVhbCBjb2RlLiBTdXBwb3NlIHlvdSBoYXZlIGEKK2NsYXNzIHRoYXQgaW1wbGVtZW50cyBgc29tZV9tZXRob2RgLiBJbiBhIHRlc3QgZm9yIGFub3RoZXIgY2xhc3MsIHlvdQorcHJvdmlkZSBhIG1vY2sgb2YgdGhpcyBvYmplY3QgdGhhdCAqYWxzbyogcHJvdmlkZXMgYHNvbWVfbWV0aG9kYC4gSWYgbGF0ZXIKK3lvdSByZWZhY3RvciB0aGUgZmlyc3QgY2xhc3MsIHNvIHRoYXQgaXQgbm8gbG9uZ2VyIGhhcyBgc29tZV9tZXRob2RgIC0gdGhlbgoreW91ciB0ZXN0cyB3aWxsIGNvbnRpbnVlIHRvIHBhc3MgZXZlbiB0aG91Z2ggeW91ciBjb2RlIGlzIG5vdyBicm9rZW4hCisKK2BNb2NrYCBhbGxvd3MgeW91IHRvIHByb3ZpZGUgYW4gb2JqZWN0IGFzIGEgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG1vY2ssCit1c2luZyB0aGUgYHNwZWNgIGtleXdvcmQgYXJndW1lbnQuIEFjY2Vzc2luZyBtZXRob2RzIC8gYXR0cmlidXRlcyBvbiB0aGUKK21vY2sgdGhhdCBkb24ndCBleGlzdCBvbiB5b3VyIHNwZWNpZmljYXRpb24gb2JqZWN0IHdpbGwgaW1tZWRpYXRlbHkgcmFpc2UgYW4KK2F0dHJpYnV0ZSBlcnJvci4gSWYgeW91IGNoYW5nZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgeW91ciBzcGVjaWZpY2F0aW9uLCB0aGVuCit0ZXN0cyB0aGF0IHVzZSB0aGF0IGNsYXNzIHdpbGwgc3RhcnQgZmFpbGluZyBpbW1lZGlhdGVseSB3aXRob3V0IHlvdSBoYXZpbmcgdG8KK2luc3RhbnRpYXRlIHRoZSBjbGFzcyBpbiB0aG9zZSB0ZXN0cy4KKworICAgID4+PiBtb2NrID0gTW9jayhzcGVjPVNvbWVDbGFzcykKKyAgICA+Pj4gbW9jay5vbGRfbWV0aG9kKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdvbGRfbWV0aG9kJworCitJZiB5b3Ugd2FudCBhIHN0cm9uZ2VyIGZvcm0gb2Ygc3BlY2lmaWNhdGlvbiB0aGF0IHByZXZlbnRzIHRoZSBzZXR0aW5nCitvZiBhcmJpdHJhcnkgYXR0cmlidXRlcyBhcyB3ZWxsIGFzIHRoZSBnZXR0aW5nIG9mIHRoZW0gdGhlbiB5b3UgY2FuIHVzZQorYHNwZWNfc2V0YCBpbnN0ZWFkIG9mIGBzcGVjYC4KKworCisKK1BhdGNoIERlY29yYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0KKworLi4gbm90ZTo6CisKKyAgIFdpdGggYHBhdGNoYCBpdCBtYXR0ZXJzIHRoYXQgeW91IHBhdGNoIG9iamVjdHMgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSB0aGV5CisgICBhcmUgbG9va2VkIHVwLiBUaGlzIGlzIG5vcm1hbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGZvciBhIHF1aWNrIGd1aWRlCisgICByZWFkIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCisKK0EgY29tbW9uIG5lZWQgaW4gdGVzdHMgaXMgdG8gcGF0Y2ggYSBjbGFzcyBhdHRyaWJ1dGUgb3IgYSBtb2R1bGUgYXR0cmlidXRlLAorZm9yIGV4YW1wbGUgcGF0Y2hpbmcgYSBidWlsdGluIG9yIHBhdGNoaW5nIGEgY2xhc3MgaW4gYSBtb2R1bGUgdG8gdGVzdCB0aGF0IGl0CitpcyBpbnN0YW50aWF0ZWQuIE1vZHVsZXMgYW5kIGNsYXNzZXMgYXJlIGVmZmVjdGl2ZWx5IGdsb2JhbCwgc28gcGF0Y2hpbmcgb24KK3RoZW0gaGFzIHRvIGJlIHVuZG9uZSBhZnRlciB0aGUgdGVzdCBvciB0aGUgcGF0Y2ggd2lsbCBwZXJzaXN0IGludG8gb3RoZXIKK3Rlc3RzIGFuZCBjYXVzZSBoYXJkIHRvIGRpYWdub3NlIHByb2JsZW1zLgorCittb2NrIHByb3ZpZGVzIHRocmVlIGNvbnZlbmllbnQgZGVjb3JhdG9ycyBmb3IgdGhpczogYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgYW5kCitgcGF0Y2guZGljdGAuIGBwYXRjaGAgdGFrZXMgYSBzaW5nbGUgc3RyaW5nLCBvZiB0aGUgZm9ybQorYHBhY2thZ2UubW9kdWxlLkNsYXNzLmF0dHJpYnV0ZWAgdG8gc3BlY2lmeSB0aGUgYXR0cmlidXRlIHlvdSBhcmUgcGF0Y2hpbmcuIEl0CithbHNvIG9wdGlvbmFsbHkgdGFrZXMgYSB2YWx1ZSB0aGF0IHlvdSB3YW50IHRoZSBhdHRyaWJ1dGUgKG9yIGNsYXNzIG9yCit3aGF0ZXZlcikgdG8gYmUgcmVwbGFjZWQgd2l0aC4gJ3BhdGNoLm9iamVjdCcgdGFrZXMgYW4gb2JqZWN0IGFuZCB0aGUgbmFtZSBvZgordGhlIGF0dHJpYnV0ZSB5b3Ugd291bGQgbGlrZSBwYXRjaGVkLCBwbHVzIG9wdGlvbmFsbHkgdGhlIHZhbHVlIHRvIHBhdGNoIGl0Cit3aXRoLgorCitgcGF0Y2gub2JqZWN0YDoKKworICAgID4+PiBvcmlnaW5hbCA9IFNvbWVDbGFzcy5hdHRyaWJ1dGUKKyAgICA+Pj4gQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uIGRlZiB0ZXN0KCk6CisgICAgLi4uICAgICBhc3NlcnQgU29tZUNsYXNzLmF0dHJpYnV0ZSA9PSBzZW50aW5lbC5hdHRyaWJ1dGUKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisgICAgPj4+IGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IG9yaWdpbmFsCisKKyAgICA+Pj4gQHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5hdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uIGRlZiB0ZXN0KCk6CisgICAgLi4uICAgICBmcm9tIHBhY2thZ2UubW9kdWxlIGltcG9ydCBhdHRyaWJ1dGUKKyAgICAuLi4gICAgIGFzc2VydCBhdHRyaWJ1dGUgaXMgc2VudGluZWwuYXR0cmlidXRlCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitJZiB5b3UgYXJlIHBhdGNoaW5nIGEgbW9kdWxlIChpbmNsdWRpbmcgYF9fYnVpbHRpbl9fYCkgdGhlbiB1c2UgYHBhdGNoYAoraW5zdGVhZCBvZiBgcGF0Y2gub2JqZWN0YDoKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZSA9IHNlbnRpbmVsLmZpbGVfaGFuZGxlKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX2J1aWx0aW5fXy5vcGVuJywgbW9jayk6CisgICAgLi4uICAgICBoYW5kbGUgPSBvcGVuKCdmaWxlbmFtZScsICdyJykKKyAgICAuLi4KKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ2ZpbGVuYW1lJywgJ3InKQorICAgID4+PiBhc3NlcnQgaGFuZGxlID09IHNlbnRpbmVsLmZpbGVfaGFuZGxlLCAiaW5jb3JyZWN0IGZpbGUgaGFuZGxlIHJldHVybmVkIgorCitUaGUgbW9kdWxlIG5hbWUgY2FuIGJlICdkb3R0ZWQnLCBpbiB0aGUgZm9ybSBgcGFja2FnZS5tb2R1bGVgIGlmIG5lZWRlZDoKKworICAgID4+PiBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZS5hdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uIGRlZiB0ZXN0KCk6CisgICAgLi4uICAgICBmcm9tIHBhY2thZ2UubW9kdWxlIGltcG9ydCBDbGFzc05hbWUKKyAgICAuLi4gICAgIGFzc2VydCBDbGFzc05hbWUuYXR0cmlidXRlID09IHNlbnRpbmVsLmF0dHJpYnV0ZQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworQSBuaWNlIHBhdHRlcm4gaXMgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGVzdCBtZXRob2RzIHRoZW1zZWx2ZXM6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5hdHRyaWJ1dGUsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWwgPSBTb21lQ2xhc3MuYXR0cmlidXRlCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS50ZXN0X3NvbWV0aGluZygpCisgICAgPj4+IGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IG9yaWdpbmFsCisKK0lmIHlvdSB3YW50IHRvIHBhdGNoIHdpdGggYSBNb2NrLCB5b3UgY2FuIHVzZSBgcGF0Y2hgIHdpdGggb25seSBvbmUgYXJndW1lbnQKKyhvciBgcGF0Y2gub2JqZWN0YCB3aXRoIHR3byBhcmd1bWVudHMpLiBUaGUgbW9jayB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSBhbmQKK3Bhc3NlZCBpbnRvIHRoZSB0ZXN0IGZ1bmN0aW9uIC8gbWV0aG9kOgorCisgICAgPj4+IGNsYXNzIE15VGVzdCh1bml0dGVzdDIuVGVzdENhc2UpOgorICAgIC4uLiAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdzdGF0aWNfbWV0aG9kJykKKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmLCBtb2NrX21ldGhvZCk6CisgICAgLi4uICAgICAgICAgU29tZUNsYXNzLnN0YXRpY19tZXRob2QoKQorICAgIC4uLiAgICAgICAgIG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS50ZXN0X3NvbWV0aGluZygpCisKK1lvdSBjYW4gc3RhY2sgdXAgbXVsdGlwbGUgcGF0Y2ggZGVjb3JhdG9ycyB1c2luZyB0aGlzIHBhdHRlcm46CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTEnKQorICAgIC4uLiAgICAgQHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUyJykKKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmLCBNb2NrQ2xhc3MyLCBNb2NrQ2xhc3MxKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydElzKHBhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTEsIE1vY2tDbGFzczEpCisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUyLCBNb2NrQ2xhc3MyKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykudGVzdF9zb21ldGhpbmcoKQorCitXaGVuIHlvdSBuZXN0IHBhdGNoIGRlY29yYXRvcnMgdGhlIG1vY2tzIGFyZSBwYXNzZWQgaW4gdG8gdGhlIGRlY29yYXRlZAorZnVuY3Rpb24gaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBsaWVkICh0aGUgbm9ybWFsICpweXRob24qIG9yZGVyIHRoYXQKK2RlY29yYXRvcnMgYXJlIGFwcGxpZWQpLiBUaGlzIG1lYW5zIGZyb20gdGhlIGJvdHRvbSB1cCwgc28gaW4gdGhlIGV4YW1wbGUKK2Fib3ZlIHRoZSBtb2NrIGZvciBgdGVzdF9tb2R1bGUuQ2xhc3NOYW1lMmAgaXMgcGFzc2VkIGluIGZpcnN0LgorCitUaGVyZSBpcyBhbHNvIDpmdW5jOmBwYXRjaC5kaWN0YCBmb3Igc2V0dGluZyB2YWx1ZXMgaW4gYSBkaWN0aW9uYXJ5IGp1c3QKK2R1cmluZyBhIHNjb3BlIGFuZCByZXN0b3JpbmcgdGhlIGRpY3Rpb25hcnkgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIHdoZW4gdGhlIHRlc3QKK2VuZHM6CisKKyAgID4+PiBmb28gPSB7J2tleSc6ICd2YWx1ZSd9CisgICA+Pj4gb3JpZ2luYWwgPSBmb28uY29weSgpCisgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KGZvbywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSwgY2xlYXI9VHJ1ZSk6CisgICAuLi4gICAgIGFzc2VydCBmb28gPT0geyduZXdrZXknOiAnbmV3dmFsdWUnfQorICAgLi4uCisgICA+Pj4gYXNzZXJ0IGZvbyA9PSBvcmlnaW5hbAorCitgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQgYHBhdGNoLmRpY3RgIGNhbiBhbGwgYmUgdXNlZCBhcyBjb250ZXh0IG1hbmFnZXJzLgorCitXaGVyZSB5b3UgdXNlIGBwYXRjaGAgdG8gY3JlYXRlIGEgbW9jayBmb3IgeW91LCB5b3UgY2FuIGdldCBhIHJlZmVyZW5jZSB0byB0aGUKK21vY2sgdXNpbmcgdGhlICJhcyIgZm9ybSBvZiB0aGUgd2l0aCBzdGF0ZW1lbnQ6CisKKyAgICA+Pj4gY2xhc3MgUHJvZHVjdGlvbkNsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoUHJvZHVjdGlvbkNsYXNzLCAnbWV0aG9kJykgYXMgbW9ja19tZXRob2Q6CisgICAgLi4uICAgICBtb2NrX21ldGhvZC5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgLi4uICAgICByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICAuLi4gICAgIHJlYWwubWV0aG9kKDEsIDIsIDMpCisgICAgLi4uCisgICAgPj4+IG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzKQorCisKK0FzIGFuIGFsdGVybmF0aXZlIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIGFuZCBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMKK2NsYXNzIGRlY29yYXRvcnMuIFdoZW4gdXNlZCBpbiB0aGlzIHdheSBpdCBpcyB0aGUgc2FtZSBhcyBhcHBseWluZyB0aGUKK2RlY29yYXRvciBpbmR2aWR1YWxseSB0byBldmVyeSBtZXRob2Qgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAidGVzdCIuCisKKworLi4gX2Z1cnRoZXItZXhhbXBsZXM6CisKK0Z1cnRoZXIgRXhhbXBsZXMKKz09PT09PT09PT09PT09PT0KKworCitIZXJlIGFyZSBzb21lIG1vcmUgZXhhbXBsZXMgZm9yIHNvbWUgc2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3MuCisKKworTW9ja2luZyBjaGFpbmVkIGNhbGxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTW9ja2luZyBjaGFpbmVkIGNhbGxzIGlzIGFjdHVhbGx5IHN0cmFpZ2h0Zm9yd2FyZCB3aXRoIG1vY2sgb25jZSB5b3UKK3VuZGVyc3RhbmQgdGhlIDphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4gV2hlbiBhIG1vY2sgaXMgY2FsbGVkIGZvcgordGhlIGZpcnN0IHRpbWUsIG9yIHlvdSBmZXRjaCBpdHMgYHJldHVybl92YWx1ZWAgYmVmb3JlIGl0IGhhcyBiZWVuIGNhbGxlZCwgYQorbmV3IGBNb2NrYCBpcyBjcmVhdGVkLgorCitUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzZWUgaG93IHRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSBhIGNhbGwgdG8gYSBtb2NrZWQKK29iamVjdCBoYXMgYmVlbiB1c2VkIGJ5IGludGVycm9nYXRpbmcgdGhlIGByZXR1cm5fdmFsdWVgIG1vY2s6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrKCkuZm9vKGE9MiwgYj0zKQorICAgIDxNb2NrIG5hbWU9J21vY2soKS5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmZvby5hc3NlcnRfY2FsbGVkX3dpdGgoYT0yLCBiPTMpCisKK0Zyb20gaGVyZSBpdCBpcyBhIHNpbXBsZSBzdGVwIHRvIGNvbmZpZ3VyZSBhbmQgdGhlbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQKK2NoYWluZWQgY2FsbHMuIE9mIGNvdXJzZSBhbm90aGVyIGFsdGVybmF0aXZlIGlzIHdyaXRpbmcgeW91ciBjb2RlIGluIGEgbW9yZQordGVzdGFibGUgd2F5IGluIHRoZSBmaXJzdCBwbGFjZS4uLgorCitTbywgc3VwcG9zZSB3ZSBoYXZlIHNvbWUgY29kZSB0aGF0IGxvb2tzIGEgbGl0dGxlIGJpdCBsaWtlIHRoaXM6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5iYWNrZW5kID0gQmFja2VuZFByb3ZpZGVyKCkKKyAgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmJhY2tlbmQuZ2V0X2VuZHBvaW50KCdmb29iYXInKS5jcmVhdGVfY2FsbCgnc3BhbScsICdlZ2dzJykuc3RhcnRfY2FsbCgpCisgICAgLi4uICAgICAgICAgIyBtb3JlIGNvZGUKKworQXNzdW1pbmcgdGhhdCBgQmFja2VuZFByb3ZpZGVyYCBpcyBhbHJlYWR5IHdlbGwgdGVzdGVkLCBob3cgZG8gd2UgdGVzdAorYG1ldGhvZCgpYD8gU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY29kZSBzZWN0aW9uIGAjIG1vcmUKK2NvZGVgIHVzZXMgdGhlIHJlc3BvbnNlIG9iamVjdCBpbiB0aGUgY29ycmVjdCB3YXkuCisKK0FzIHRoaXMgY2hhaW4gb2YgY2FsbHMgaXMgbWFkZSBmcm9tIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSB3ZSBjYW4gbW9ua2V5IHBhdGNoCit0aGUgYGJhY2tlbmRgIGF0dHJpYnV0ZSBvbiBhIGBTb21ldGhpbmdgIGluc3RhbmNlLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZQord2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGZpbmFsIGNhbGwgdG8KK2BzdGFydF9jYWxsYCBzbyB3ZSBkb24ndCBoYXZlIG11Y2ggY29uZmlndXJhdGlvbiB0byBkby4gTGV0J3MgYXNzdW1lIHRoZQorb2JqZWN0IGl0IHJldHVybnMgaXMgJ2ZpbGUtbGlrZScsIHNvIHdlJ2xsIGVuc3VyZSB0aGF0IG91ciByZXNwb25zZSBvYmplY3QKK3VzZXMgdGhlIGJ1aWx0aW4gYGZpbGVgIGFzIGl0cyBgc3BlY2AuCisKK1RvIGRvIHRoaXMgd2UgY3JlYXRlIGEgbW9jayBpbnN0YW5jZSBhcyBvdXIgbW9jayBiYWNrZW5kIGFuZCBjcmVhdGUgYSBtb2NrCityZXNwb25zZSBvYmplY3QgZm9yIGl0LiBUbyBzZXQgdGhlIHJlc3BvbnNlIGFzIHRoZSByZXR1cm4gdmFsdWUgZm9yIHRoYXQgZmluYWwKK2BzdGFydF9jYWxsYCB3ZSBjb3VsZCBkbyB0aGlzOgorCisgICAgYG1vY2tfYmFja2VuZC5nZXRfZW5kcG9pbnQucmV0dXJuX3ZhbHVlLmNyZWF0ZV9jYWxsLnJldHVybl92YWx1ZS5zdGFydF9jYWxsLnJldHVybl92YWx1ZSA9IG1vY2tfcmVzcG9uc2VgLgorCitXZSBjYW4gZG8gdGhhdCBpbiBhIHNsaWdodGx5IG5pY2VyIHdheSB1c2luZyB0aGUgOm1ldGg6YH5Nb2NrLmNvbmZpZ3VyZV9tb2NrYAorbWV0aG9kIHRvIGRpcmVjdGx5IHNldCB0aGUgcmV0dXJuIHZhbHVlIGZvciB1czoKKworICAgID4+PiBzb21ldGhpbmcgPSBTb21ldGhpbmcoKQorICAgID4+PiBtb2NrX3Jlc3BvbnNlID0gTW9jayhzcGVjPWZpbGUpCisgICAgPj4+IG1vY2tfYmFja2VuZCA9IE1vY2soKQorICAgID4+PiBjb25maWcgPSB7J2dldF9lbmRwb2ludC5yZXR1cm5fdmFsdWUuY3JlYXRlX2NhbGwucmV0dXJuX3ZhbHVlLnN0YXJ0X2NhbGwucmV0dXJuX3ZhbHVlJzogbW9ja19yZXNwb25zZX0KKyAgICA+Pj4gbW9ja19iYWNrZW5kLmNvbmZpZ3VyZV9tb2NrKCoqY29uZmlnKQorCitXaXRoIHRoZXNlIHdlIG1vbmtleSBwYXRjaCB0aGUgIm1vY2sgYmFja2VuZCIgaW4gcGxhY2UgYW5kIGNhbiBtYWtlIHRoZSByZWFsCitjYWxsOgorCisgICAgPj4+IHNvbWV0aGluZy5iYWNrZW5kID0gbW9ja19iYWNrZW5kCisgICAgPj4+IHNvbWV0aGluZy5tZXRob2QoKQorCitVc2luZyA6YXR0cjpgfk1vY2subW9ja19jYWxsc2Agd2UgY2FuIGNoZWNrIHRoZSBjaGFpbmVkIGNhbGwgd2l0aCBhIHNpbmdsZQorYXNzZXJ0LiBBIGNoYWluZWQgY2FsbCBpcyBzZXZlcmFsIGNhbGxzIGluIG9uZSBsaW5lIG9mIGNvZGUsIHNvIHRoZXJlIHdpbGwgYmUKK3NldmVyYWwgZW50cmllcyBpbiBgbW9ja19jYWxsc2AuIFdlIGNhbiB1c2UgOm1ldGg6YGNhbGwuY2FsbF9saXN0YCB0byBjcmVhdGUKK3RoaXMgbGlzdCBvZiBjYWxscyBmb3IgdXM6CisKKyAgICA+Pj4gY2hhaW5lZCA9IGNhbGwuZ2V0X2VuZHBvaW50KCdmb29iYXInKS5jcmVhdGVfY2FsbCgnc3BhbScsICdlZ2dzJykuc3RhcnRfY2FsbCgpCisgICAgPj4+IGNhbGxfbGlzdCA9IGNoYWluZWQuY2FsbF9saXN0KCkKKyAgICA+Pj4gYXNzZXJ0IG1vY2tfYmFja2VuZC5tb2NrX2NhbGxzID09IGNhbGxfbGlzdAorCisKK1BhcnRpYWwgbW9ja2luZworLS0tLS0tLS0tLS0tLS0tCisKK0luIHNvbWUgdGVzdHMgSSB3YW50ZWQgdG8gbW9jayBvdXQgYSBjYWxsIHRvIGBkYXRldGltZS5kYXRlLnRvZGF5KCkKKzxodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvZGF0ZXRpbWUuaHRtbCNkYXRldGltZS5kYXRlLnRvZGF5PmBfIHRvIHJldHVybgorYSBrbm93biBkYXRlLCBidXQgSSBkaWRuJ3Qgd2FudCB0byBwcmV2ZW50IHRoZSBjb2RlIHVuZGVyIHRlc3QgZnJvbQorY3JlYXRpbmcgbmV3IGRhdGUgb2JqZWN0cy4gVW5mb3J0dW5hdGVseSBgZGF0ZXRpbWUuZGF0ZWAgaXMgd3JpdHRlbiBpbiBDLCBhbmQKK3NvIEkgY291bGRuJ3QganVzdCBtb25rZXktcGF0Y2ggb3V0IHRoZSBzdGF0aWMgYGRhdGUudG9kYXlgIG1ldGhvZC4KKworSSBmb3VuZCBhIHNpbXBsZSB3YXkgb2YgZG9pbmcgdGhpcyB0aGF0IGludm9sdmVkIGVmZmVjdGl2ZWx5IHdyYXBwaW5nIHRoZSBkYXRlCitjbGFzcyB3aXRoIGEgbW9jaywgYnV0IHBhc3NpbmcgdGhyb3VnaCBjYWxscyB0byB0aGUgY29uc3RydWN0b3IgdG8gdGhlIHJlYWwKK2NsYXNzIChhbmQgcmV0dXJuaW5nIHJlYWwgaW5zdGFuY2VzKS4KKworVGhlIDpmdW5jOmBwYXRjaCBkZWNvcmF0b3IgPHBhdGNoPmAgaXMgdXNlZCBoZXJlIHRvCittb2NrIG91dCB0aGUgYGRhdGVgIGNsYXNzIGluIHRoZSBtb2R1bGUgdW5kZXIgdGVzdC4gVGhlIDphdHRyOmBzaWRlX2VmZmVjdGAKK2F0dHJpYnV0ZSBvbiB0aGUgbW9jayBkYXRlIGNsYXNzIGlzIHRoZW4gc2V0IHRvIGEgbGFtYmRhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucworYSByZWFsIGRhdGUuIFdoZW4gdGhlIG1vY2sgZGF0ZSBjbGFzcyBpcyBjYWxsZWQgYSByZWFsIGRhdGUgd2lsbCBiZQorY29uc3RydWN0ZWQgYW5kIHJldHVybmVkIGJ5IGBzaWRlX2VmZmVjdGAuCisKKyAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQorICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5kYXRlJykgYXMgbW9ja19kYXRlOgorICAgIC4uLiAgICAgbW9ja19kYXRlLnRvZGF5LnJldHVybl92YWx1ZSA9IGRhdGUoMjAxMCwgMTAsIDgpCisgICAgLi4uICAgICBtb2NrX2RhdGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgKmFyZ3MsICoqa3c6IGRhdGUoKmFyZ3MsICoqa3cpCisgICAgLi4uCisgICAgLi4uICAgICBhc3NlcnQgbXltb2R1bGUuZGF0ZS50b2RheSgpID09IGRhdGUoMjAxMCwgMTAsIDgpCisgICAgLi4uICAgICBhc3NlcnQgbXltb2R1bGUuZGF0ZSgyMDA5LCA2LCA4KSA9PSBkYXRlKDIwMDksIDYsIDgpCisgICAgLi4uCisKK05vdGUgdGhhdCB3ZSBkb24ndCBwYXRjaCBgZGF0ZXRpbWUuZGF0ZWAgZ2xvYmFsbHksIHdlIHBhdGNoIGBkYXRlYCBpbiB0aGUKK21vZHVsZSB0aGF0ICp1c2VzKiBpdC4gU2VlIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCitXaGVuIGBkYXRlLnRvZGF5KClgIGlzIGNhbGxlZCBhIGtub3duIGRhdGUgaXMgcmV0dXJuZWQsIGJ1dCBjYWxscyB0byB0aGUKK2BkYXRlKC4uLilgIGNvbnN0cnVjdG9yIHN0aWxsIHJldHVybiBub3JtYWwgZGF0ZXMuIFdpdGhvdXQgdGhpcyB5b3UgY2FuIGZpbmQKK3lvdXJzZWxmIGhhdmluZyB0byBjYWxjdWxhdGUgYW4gZXhwZWN0ZWQgcmVzdWx0IHVzaW5nIGV4YWN0bHkgdGhlIHNhbWUKK2FsZ29yaXRobSBhcyB0aGUgY29kZSB1bmRlciB0ZXN0LCB3aGljaCBpcyBhIGNsYXNzaWMgdGVzdGluZyBhbnRpLXBhdHRlcm4uCisKK0NhbGxzIHRvIHRoZSBkYXRlIGNvbnN0cnVjdG9yIGFyZSByZWNvcmRlZCBpbiB0aGUgYG1vY2tfZGF0ZWAgYXR0cmlidXRlcworKGBjYWxsX2NvdW50YCBhbmQgZnJpZW5kcykgd2hpY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciB5b3VyIHRlc3RzLgorCitBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgZGVhbGluZyB3aXRoIG1vY2tpbmcgZGF0ZXMsIG9yIG90aGVyIGJ1aWx0aW4gY2xhc3NlcywKK2lzIGRpc2N1c3NlZCBpbiBgdGhpcyBibG9nIGVudHJ5Cis8aHR0cDovL3dpbGxpYW1qb2huYmVydC5jb20vMjAxMS8wNy9ob3ctdG8tdW5pdC10ZXN0aW5nLWluLWRqYW5nby13aXRoLW1vY2tpbmctYW5kLXBhdGNoaW5nLz5gXy4KKworCitNb2NraW5nIGEgR2VuZXJhdG9yIE1ldGhvZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBQeXRob24gZ2VuZXJhdG9yIGlzIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgdXNlcyB0aGUgYHlpZWxkIHN0YXRlbWVudAorPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5odG1sI3RoZS15aWVsZC1zdGF0ZW1lbnQ+YF8gdG8KK3JldHVybiBhIHNlcmllcyBvZiB2YWx1ZXMgd2hlbiBpdGVyYXRlZCBvdmVyIFsjXV8uCisKK0EgZ2VuZXJhdG9yIG1ldGhvZCAvIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byByZXR1cm4gdGhlIGdlbmVyYXRvciBvYmplY3QuIEl0IGlzCit0aGUgZ2VuZXJhdG9yIG9iamVjdCB0aGF0IGlzIHRoZW4gaXRlcmF0ZWQgb3Zlci4gVGhlIHByb3RvY29sIG1ldGhvZCBmb3IKK2l0ZXJhdGlvbiBpcyBgX19pdGVyX18KKzxodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvc3RkdHlwZXMuaHRtbCNjb250YWluZXIuX19pdGVyX18+YF8sIHNvIHdlIGNhbgorbW9jayB0aGlzIHVzaW5nIGEgYE1hZ2ljTW9ja2AuCisKK0hlcmUncyBhbiBleGFtcGxlIGNsYXNzIHdpdGggYW4gIml0ZXIiIG1ldGhvZCBpbXBsZW1lbnRlZCBhcyBhIGdlbmVyYXRvcjoKKworICAgID4+PiBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBpdGVyKHNlbGYpOgorICAgIC4uLiAgICAgICAgIGZvciBpIGluIFsxLCAyLCAzXToKKyAgICAuLi4gICAgICAgICAgICAgeWllbGQgaQorICAgIC4uLgorICAgID4+PiBmb28gPSBGb28oKQorICAgID4+PiBsaXN0KGZvby5pdGVyKCkpCisgICAgWzEsIDIsIDNdCisKKworSG93IHdvdWxkIHdlIG1vY2sgdGhpcyBjbGFzcywgYW5kIGluIHBhcnRpY3VsYXIgaXRzICJpdGVyIiBtZXRob2Q/CisKK1RvIGNvbmZpZ3VyZSB0aGUgdmFsdWVzIHJldHVybmVkIGZyb20gdGhlIGl0ZXJhdGlvbiAoaW1wbGljaXQgaW4gdGhlIGNhbGwgdG8KK2BsaXN0YCksIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gYGZvby5pdGVyKClgLgorCisgICAgPj4+IG1vY2tfZm9vID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9ja19mb28uaXRlci5yZXR1cm5fdmFsdWUgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICA+Pj4gbGlzdChtb2NrX2Zvby5pdGVyKCkpCisgICAgWzEsIDIsIDNdCisKKy4uIFsjXSBUaGVyZSBhcmUgYWxzbyBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgYW5kIG1vcmUgYGFkdmFuY2VkIHVzZXMKKyAgICA8aHR0cDovL3d3dy5kYWJlYXouY29tL2Nvcm91dGluZXMvaW5kZXguaHRtbD5gXyBvZiBnZW5lcmF0b3JzLCBidXQgd2UgYXJlbid0CisgICAgY29uY2VybmVkIGFib3V0IHRoZW0gaGVyZS4gQSB2ZXJ5IGdvb2QgaW50cm9kdWN0aW9uIHRvIGdlbmVyYXRvcnMgYW5kIGhvdworICAgIHBvd2VyZnVsIHRoZXkgYXJlIGlzOiBgR2VuZXJhdG9yIFRyaWNrcyBmb3IgU3lzdGVtcyBQcm9ncmFtbWVycworICAgIDxodHRwOi8vd3d3LmRhYmVhei5jb20vZ2VuZXJhdG9ycy8+YF8uCisKKworQXBwbHlpbmcgdGhlIHNhbWUgcGF0Y2ggdG8gZXZlcnkgdGVzdCBtZXRob2QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHNldmVyYWwgcGF0Y2hlcyBpbiBwbGFjZSBmb3IgbXVsdGlwbGUgdGVzdCBtZXRob2RzIHRoZSBvYnZpb3VzIHdheQoraXMgdG8gYXBwbHkgdGhlIHBhdGNoIGRlY29yYXRvcnMgdG8gZXZlcnkgbWV0aG9kLiBUaGlzIGNhbiBmZWVsIGxpa2UgdW5uZWNlc3NhcnkKK3JlcGV0aXRpb24uIEZvciBQeXRob24gMi42IG9yIG1vcmUgcmVjZW50IHlvdSBjYW4gdXNlIGBwYXRjaGAgKGluIGFsbCBpdHMKK3ZhcmlvdXMgZm9ybXMpIGFzIGEgY2xhc3MgZGVjb3JhdG9yLiBUaGlzIGFwcGxpZXMgdGhlIHBhdGNoZXMgdG8gYWxsIHRlc3QKK21ldGhvZHMgb24gdGhlIGNsYXNzLiBBIHRlc3QgbWV0aG9kIGlzIGlkZW50aWZpZWQgYnkgbWV0aG9kcyB3aG9zZSBuYW1lcyBzdGFydAord2l0aCBgdGVzdGA6CisKKyAgICA+Pj4gQHBhdGNoKCdteW1vZHVsZS5Tb21lQ2xhc3MnKQorICAgIC4uLiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIE1vY2tTb21lQ2xhc3MpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXltb2R1bGUuU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfdHdvKHNlbGYsIE1vY2tTb21lQ2xhc3MpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXltb2R1bGUuU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIG5vdF9hX3Rlc3Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuICdzb21ldGhpbmcnCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9vbmUnKS50ZXN0X29uZSgpCisgICAgPj4+IE15VGVzdCgndGVzdF90d28nKS50ZXN0X3R3bygpCisgICAgPj4+IE15VGVzdCgndGVzdF90d28nKS5ub3RfYV90ZXN0KCkKKyAgICAnc29tZXRoaW5nJworCitBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgbWFuYWdpbmcgcGF0Y2hlcyBpcyB0byB1c2UgdGhlIDpyZWY6YHN0YXJ0LWFuZC1zdG9wYC4KK1RoZXNlIGFsbG93IHlvdSB0byBtb3ZlIHRoZSBwYXRjaGluZyBpbnRvIHlvdXIgYHNldFVwYCBhbmQgYHRlYXJEb3duYCBtZXRob2RzLgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyID0gcGF0Y2goJ215bW9kdWxlLmZvbycpCisgICAgLi4uICAgICAgICAgc2VsZi5tb2NrX2ZvbyA9IHNlbGYucGF0Y2hlci5zdGFydCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRJcyhteW1vZHVsZS5mb28sIHNlbGYubW9ja19mb28pCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyLnN0b3AoKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykucnVuKCkKKworSWYgeW91IHVzZSB0aGlzIHRlY2huaXF1ZSB5b3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgcGF0Y2hpbmcgaXMgInVuZG9uZSIgYnkKK2NhbGxpbmcgYHN0b3BgLiBUaGlzIGNhbiBiZSBmaWRkbGllciB0aGFuIHlvdSBtaWdodCB0aGluaywgYmVjYXVzZSBpZiBhbgorZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGUgc2V0VXAgdGhlbiB0ZWFyRG93biBpcyBub3QgY2FsbGVkLgorOm1ldGg6YHVuaXR0ZXN0LlRlc3RDYXNlLmFkZENsZWFudXBgIG1ha2VzIHRoaXMgZWFzaWVyOgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCdteW1vZHVsZS5mb28nKQorICAgIC4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisgICAgLi4uICAgICAgICAgc2VsZi5tb2NrX2ZvbyA9IHBhdGNoZXIuc3RhcnQoKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXltb2R1bGUuZm9vLCBzZWxmLm1vY2tfZm9vKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykucnVuKCkKKworCitNb2NraW5nIFVuYm91bmQgTWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbHN0IHdyaXRpbmcgdGVzdHMgdG9kYXkgSSBuZWVkZWQgdG8gcGF0Y2ggYW4gKnVuYm91bmQgbWV0aG9kKiAocGF0Y2hpbmcgdGhlCittZXRob2Qgb24gdGhlIGNsYXNzIHJhdGhlciB0aGFuIG9uIHRoZSBpbnN0YW5jZSkuIEkgbmVlZGVkIHNlbGYgdG8gYmUgcGFzc2VkCitpbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYmVjYXVzZSBJIHdhbnQgdG8gbWFrZSBhc3NlcnRzIGFib3V0IHdoaWNoIG9iamVjdHMKK3dlcmUgY2FsbGluZyB0aGlzIHBhcnRpY3VsYXIgbWV0aG9kLiBUaGUgaXNzdWUgaXMgdGhhdCB5b3UgY2FuJ3QgcGF0Y2ggd2l0aCBhCittb2NrIGZvciB0aGlzLCBiZWNhdXNlIGlmIHlvdSByZXBsYWNlIGFuIHVuYm91bmQgbWV0aG9kIHdpdGggYSBtb2NrIGl0IGRvZXNuJ3QKK2JlY29tZSBhIGJvdW5kIG1ldGhvZCB3aGVuIGZldGNoZWQgZnJvbSB0aGUgaW5zdGFuY2UsIGFuZCBzbyBpdCBkb2Vzbid0IGdldAorc2VsZiBwYXNzZWQgaW4uIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHBhdGNoIHRoZSB1bmJvdW5kIG1ldGhvZCB3aXRoIGEgcmVhbAorZnVuY3Rpb24gaW5zdGVhZC4gVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9yIG1ha2VzIGl0IHNvIHNpbXBsZSB0bworcGF0Y2ggb3V0IG1ldGhvZHMgd2l0aCBhIG1vY2sgdGhhdCBoYXZpbmcgdG8gY3JlYXRlIGEgcmVhbCBmdW5jdGlvbiBiZWNvbWVzIGEKK251aXNhbmNlLgorCitJZiB5b3UgcGFzcyBgYXV0b3NwZWM9VHJ1ZWAgdG8gcGF0Y2ggdGhlbiBpdCBkb2VzIHRoZSBwYXRjaGluZyB3aXRoIGEKKypyZWFsKiBmdW5jdGlvbiBvYmplY3QuIFRoaXMgZnVuY3Rpb24gb2JqZWN0IGhhcyB0aGUgc2FtZSBzaWduYXR1cmUgYXMgdGhlIG9uZQoraXQgaXMgcmVwbGFjaW5nLCBidXQgZGVsZWdhdGVzIHRvIGEgbW9jayB1bmRlciB0aGUgaG9vZC4gWW91IHN0aWxsIGdldCB5b3VyCittb2NrIGF1dG8tY3JlYXRlZCBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyBiZWZvcmUuIFdoYXQgaXQgbWVhbnMgdGhvdWdoLCBpcwordGhhdCBpZiB5b3UgdXNlIGl0IHRvIHBhdGNoIG91dCBhbiB1bmJvdW5kIG1ldGhvZCBvbiBhIGNsYXNzIHRoZSBtb2NrZWQKK2Z1bmN0aW9uIHdpbGwgYmUgdHVybmVkIGludG8gYSBib3VuZCBtZXRob2QgaWYgaXQgaXMgZmV0Y2hlZCBmcm9tIGFuIGluc3RhbmNlLgorSXQgd2lsbCBoYXZlIGBzZWxmYCBwYXNzZWQgaW4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSQord2FudGVkOgorCisgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgIC4uLiAgIGRlZiBmb28oc2VsZik6CisgICAgLi4uICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIGF1dG9zcGVjPVRydWUpIGFzIG1vY2tfZm9vOgorICAgIC4uLiAgIG1vY2tfZm9vLnJldHVybl92YWx1ZSA9ICdmb28nCisgICAgLi4uICAgZm9vID0gRm9vKCkKKyAgICAuLi4gICBmb28uZm9vKCkKKyAgICAuLi4KKyAgICAnZm9vJworICAgID4+PiBtb2NrX2Zvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChmb28pCisKK0lmIHdlIGRvbid0IHVzZSBgYXV0b3NwZWM9VHJ1ZWAgdGhlbiB0aGUgdW5ib3VuZCBtZXRob2QgaXMgcGF0Y2hlZCBvdXQKK3dpdGggYSBNb2NrIGluc3RhbmNlIGluc3RlYWQsIGFuZCBpc24ndCBjYWxsZWQgd2l0aCBgc2VsZmAuCisKKworQ2hlY2tpbmcgbXVsdGlwbGUgY2FsbHMgd2l0aCBtb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbW9jayBoYXMgYSBuaWNlIEFQSSBmb3IgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaG93IHlvdXIgbW9jayBvYmplY3RzIGFyZSB1c2VkLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5mb29fYmFyLnJldHVybl92YWx1ZSA9IE5vbmUKKyAgICA+Pj4gbW9jay5mb29fYmFyKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfd2l0aCgnYmF6Jywgc3BhbT0nZWdncycpCisKK0lmIHlvdXIgbW9jayBpcyBvbmx5IGJlaW5nIGNhbGxlZCBvbmNlIHlvdSBjYW4gdXNlIHRoZQorOm1ldGg6YGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCBtZXRob2QgdGhhdCBhbHNvIGFzc2VydHMgdGhhdCB0aGUKKzphdHRyOmBjYWxsX2NvdW50YCBpcyBvbmUuCisKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICA+Pj4gbW9jay5mb29fYmFyKCkKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKK0JvdGggYGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIGBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgbWFrZSBhc3NlcnRpb25zIGFib3V0Cit0aGUgKm1vc3QgcmVjZW50KiBjYWxsLiBJZiB5b3VyIG1vY2sgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHNldmVyYWwgdGltZXMsIGFuZAoreW91IHdhbnQgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0ICphbGwqIHRob3NlIGNhbGxzIHlvdSBjYW4gdXNlCis6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2soNCwgNSwgNikKKyAgICA+Pj4gbW9jaygpCisgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgxLCAyLCAzKSwgY2FsbCg0LCA1LCA2KSwgY2FsbCgpXQorCitUaGUgOmRhdGE6YGNhbGxgIGhlbHBlciBtYWtlcyBpdCBlYXN5IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGVzZSBjYWxscy4gWW91CitjYW4gYnVpbGQgdXAgYSBsaXN0IG9mIGV4cGVjdGVkIGNhbGxzIGFuZCBjb21wYXJlIGl0IHRvIGBjYWxsX2FyZ3NfbGlzdGAuIFRoaXMKK2xvb2tzIHJlbWFya2FibHkgc2ltaWxhciB0byB0aGUgcmVwciBvZiB0aGUgYGNhbGxfYXJnc19saXN0YDoKKworICAgID4+PiBleHBlY3RlZCA9IFtjYWxsKDEsIDIsIDMpLCBjYWxsKDQsIDUsIDYpLCBjYWxsKCldCisgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QgPT0gZXhwZWN0ZWQKKyAgICBUcnVlCisKKworQ29waW5nIHdpdGggbXV0YWJsZSBhcmd1bWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fub3RoZXIgc2l0dWF0aW9uIGlzIHJhcmUsIGJ1dCBjYW4gYml0ZSB5b3UsIGlzIHdoZW4geW91ciBtb2NrIGlzIGNhbGxlZCB3aXRoCittdXRhYmxlIGFyZ3VtZW50cy4gYGNhbGxfYXJnc2AgYW5kIGBjYWxsX2FyZ3NfbGlzdGAgc3RvcmUgKnJlZmVyZW5jZXMqIHRvIHRoZQorYXJndW1lbnRzLiBJZiB0aGUgYXJndW1lbnRzIGFyZSBtdXRhdGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QgdGhlbiB5b3UgY2FuIG5vCitsb25nZXIgbWFrZSBhc3NlcnRpb25zIGFib3V0IHdoYXQgdGhlIHZhbHVlcyB3ZXJlIHdoZW4gdGhlIG1vY2sgd2FzIGNhbGxlZC4KKworSGVyZSdzIHNvbWUgZXhhbXBsZSBjb2RlIHRoYXQgc2hvd3MgdGhlIHByb2JsZW0uIEltYWdpbmUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMKK2RlZmluZWQgaW4gJ215bW9kdWxlJzo6CisKKyAgICBkZWYgZnJvYih2YWwpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ3JvYih2YWwpOgorICAgICAgICAiRmlyc3QgZnJvYiBhbmQgdGhlbiBjbGVhciB2YWwiCisgICAgICAgIGZyb2IodmFsKQorICAgICAgICB2YWwuY2xlYXIoKQorCitXaGVuIHdlIHRyeSB0byB0ZXN0IHRoYXQgYGdyb2JgIGNhbGxzIGBmcm9iYCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50IGxvb2sKK3doYXQgaGFwcGVuczoKKworICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5mcm9iJykgYXMgbW9ja19mcm9iOgorICAgIC4uLiAgICAgdmFsID0gc2V0KFs2XSkKKyAgICAuLi4gICAgIG15bW9kdWxlLmdyb2IodmFsKQorICAgIC4uLgorICAgID4+PiB2YWwKKyAgICBzZXQoW10pCisgICAgPj4+IG1vY2tfZnJvYi5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KFs2XSkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQ6ICgoc2V0KFs2XSksKSwge30pCisgICAgQ2FsbGVkIHdpdGg6ICgoc2V0KFtdKSwpLCB7fSkKKworT25lIHBvc3NpYmlsaXR5IHdvdWxkIGJlIGZvciBtb2NrIHRvIGNvcHkgdGhlIGFyZ3VtZW50cyB5b3UgcGFzcyBpbi4gVGhpcworY291bGQgdGhlbiBjYXVzZSBwcm9ibGVtcyBpZiB5b3UgZG8gYXNzZXJ0aW9ucyB0aGF0IHJlbHkgb24gb2JqZWN0IGlkZW50aXR5Citmb3IgZXF1YWxpdHkuCisKK0hlcmUncyBvbmUgc29sdXRpb24gdGhhdCB1c2VzIHRoZSA6YXR0cjpgc2lkZV9lZmZlY3RgCitmdW5jdGlvbmFsaXR5LiBJZiB5b3UgcHJvdmlkZSBhIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gZm9yIGEgbW9jayB0aGVuCitgc2lkZV9lZmZlY3RgIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgYXJncyBhcyB0aGUgbW9jay4gVGhpcyBnaXZlcyB1cyBhbgorb3Bwb3J0dW5pdHkgdG8gY29weSB0aGUgYXJndW1lbnRzIGFuZCBzdG9yZSB0aGVtIGZvciBsYXRlciBhc3NlcnRpb25zLiBJbiB0aGlzCitleGFtcGxlIEknbSB1c2luZyAqYW5vdGhlciogbW9jayB0byBzdG9yZSB0aGUgYXJndW1lbnRzIHNvIHRoYXQgSSBjYW4gdXNlIHRoZQorbW9jayBtZXRob2RzIGZvciBkb2luZyB0aGUgYXNzZXJ0aW9uLiBBZ2FpbiBhIGhlbHBlciBmdW5jdGlvbiBzZXRzIHRoaXMgdXAgZm9yCittZS4KKworICAgID4+PiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgcGF0Y2gsIERFRkFVTFQKKyAgICA+Pj4gZGVmIGNvcHlfY2FsbF9hcmdzKG1vY2spOgorICAgIC4uLiAgICAgbmV3X21vY2sgPSBNb2NrKCkKKyAgICAuLi4gICAgIGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgIC4uLiAgICAgICAgIGFyZ3MgPSBkZWVwY29weShhcmdzKQorICAgIC4uLiAgICAgICAgIGt3YXJncyA9IGRlZXBjb3B5KGt3YXJncykKKyAgICAuLi4gICAgICAgICBuZXdfbW9jaygqYXJncywgKiprd2FyZ3MpCisgICAgLi4uICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAuLi4gICAgIG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgIC4uLiAgICAgcmV0dXJuIG5ld19tb2NrCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLmZyb2InKSBhcyBtb2NrX2Zyb2I6CisgICAgLi4uICAgICBuZXdfbW9jayA9IGNvcHlfY2FsbF9hcmdzKG1vY2tfZnJvYikKKyAgICAuLi4gICAgIHZhbCA9IHNldChbNl0pCisgICAgLi4uICAgICBteW1vZHVsZS5ncm9iKHZhbCkKKyAgICAuLi4KKyAgICA+Pj4gbmV3X21vY2suYXNzZXJ0X2NhbGxlZF93aXRoKHNldChbNl0pKQorICAgID4+PiBuZXdfbW9jay5jYWxsX2FyZ3MKKyAgICBjYWxsKHNldChbNl0pKQorCitgY29weV9jYWxsX2FyZ3NgIGlzIGNhbGxlZCB3aXRoIHRoZSBtb2NrIHRoYXQgd2lsbCBiZSBjYWxsZWQuIEl0IHJldHVybnMgYSBuZXcKK21vY2sgdGhhdCB3ZSBkbyB0aGUgYXNzZXJ0aW9uIG9uLiBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBtYWtlcyBhIGNvcHkgb2YKK3RoZSBhcmdzIGFuZCBjYWxscyBvdXIgYG5ld19tb2NrYCB3aXRoIHRoZSBjb3B5LgorCisuLiBub3RlOjoKKworICAgIElmIHlvdXIgbW9jayBpcyBvbmx5IGdvaW5nIHRvIGJlIHVzZWQgb25jZSB0aGVyZSBpcyBhbiBlYXNpZXIgd2F5IG9mCisgICAgY2hlY2tpbmcgYXJndW1lbnRzIGF0IHRoZSBwb2ludCB0aGV5IGFyZSBjYWxsZWQuIFlvdSBjYW4gc2ltcGx5IGRvIHRoZQorICAgIGNoZWNraW5nIGluc2lkZSBhIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24uCisKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdChhcmcpOgorICAgICAgICAuLi4gICAgIGFzc2VydCBhcmcgPT0gc2V0KFs2XSkKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgPj4+IG1vY2soc2V0KFs2XSkpCisgICAgICAgID4+PiBtb2NrKHNldCgpKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgQXNzZXJ0aW9uRXJyb3IKKworQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgc3ViY2xhc3Mgb2YgYE1vY2tgIG9yIGBNYWdpY01vY2tgIHRoYXQKK2NvcGllcyAodXNpbmcgOmZ1bmM6YGNvcHkuZGVlcGNvcHlgKSB0aGUgYXJndW1lbnRzLgorSGVyZSdzIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb246CisKKyAgICA+Pj4gZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorICAgID4+PiBjbGFzcyBDb3B5aW5nTW9jayhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MpCisgICAgLi4uICAgICAgICAga3dhcmdzID0gZGVlcGNvcHkoa3dhcmdzKQorICAgIC4uLiAgICAgICAgIHJldHVybiBzdXBlcihDb3B5aW5nTW9jaywgc2VsZikuX19jYWxsX18oKmFyZ3MsICoqa3dhcmdzKQorICAgIC4uLgorICAgID4+PiBjID0gQ29weWluZ01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IGFyZyA9IHNldCgpCisgICAgPj4+IGMoYXJnKQorICAgID4+PiBhcmcuYWRkKDEpCisgICAgPj4+IGMuYXNzZXJ0X2NhbGxlZF93aXRoKHNldCgpKQorICAgID4+PiBjLmFzc2VydF9jYWxsZWRfd2l0aChhcmcpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgY2FsbDogbW9jayhzZXQoWzFdKSkKKyAgICBBY3R1YWwgY2FsbDogbW9jayhzZXQoW10pKQorICAgID4+PiBjLmZvbworICAgIDxDb3B5aW5nTW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisKK1doZW4geW91IHN1YmNsYXNzIGBNb2NrYCBvciBgTWFnaWNNb2NrYCBhbGwgZHluYW1pY2FsbHkgY3JlYXRlZCBhdHRyaWJ1dGVzLAorYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCB3aWxsIHVzZSB5b3VyIHN1YmNsYXNzIGF1dG9tYXRpY2FsbHkuIFRoYXQgbWVhbnMgYWxsCitjaGlsZHJlbiBvZiBhIGBDb3B5aW5nTW9ja2Agd2lsbCBhbHNvIGhhdmUgdGhlIHR5cGUgYENvcHlpbmdNb2NrYC4KKworCitOZXN0aW5nIFBhdGNoZXMKKy0tLS0tLS0tLS0tLS0tLQorCitVc2luZyBwYXRjaCBhcyBhIGNvbnRleHQgbWFuYWdlciBpcyBuaWNlLCBidXQgaWYgeW91IGRvIG11bHRpcGxlIHBhdGNoZXMgeW91CitjYW4gZW5kIHVwIHdpdGggbmVzdGVkIHdpdGggc3RhdGVtZW50cyBpbmRlbnRpbmcgZnVydGhlciBhbmQgZnVydGhlciB0byB0aGUKK3JpZ2h0OgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuRm9vJykgYXMgbW9ja19mb286CisgICAgLi4uICAgICAgICAgICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkJhcicpIGFzIG1vY2tfYmFyOgorICAgIC4uLiAgICAgICAgICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuU3BhbScpIGFzIG1vY2tfc3BhbToKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG1vY2tfZm9vCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkJhciBpcyBtb2NrX2JhcgorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBteW1vZHVsZS5TcGFtIGlzIG1vY2tfc3BhbQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IG15bW9kdWxlLkZvbworICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykudGVzdF9mb28oKQorICAgID4+PiBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG9yaWdpbmFsCisKK1dpdGggdW5pdHRlc3QgYGNsZWFudXBgIGZ1bmN0aW9ucyBhbmQgdGhlIDpyZWY6YHN0YXJ0LWFuZC1zdG9wYCB3ZSBjYW4KK2FjaGlldmUgdGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgdGhlIG5lc3RlZCBpbmRlbnRhdGlvbi4gQSBzaW1wbGUgaGVscGVyCittZXRob2QsIGBjcmVhdGVfcGF0Y2hgLCBwdXRzIHRoZSBwYXRjaCBpbiBwbGFjZSBhbmQgcmV0dXJucyB0aGUgY3JlYXRlZCBtb2NrCitmb3IgdXM6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKG5hbWUpCisgICAgLi4uICAgICAgICAgdGhpbmcgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgIC4uLiAgICAgICAgIHJldHVybiB0aGluZworICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIG1vY2tfZm9vID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLkZvbycpCisgICAgLi4uICAgICAgICAgbW9ja19iYXIgPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuQmFyJykKKyAgICAuLi4gICAgICAgICBtb2NrX3NwYW0gPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuU3BhbScpCisgICAgLi4uCisgICAgLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBtb2NrX2ZvbworICAgIC4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5CYXIgaXMgbW9ja19iYXIKKyAgICAuLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuU3BhbSBpcyBtb2NrX3NwYW0KKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWwgPSBteW1vZHVsZS5Gb28KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCisgICAgPj4+IGFzc2VydCBteW1vZHVsZS5Gb28gaXMgb3JpZ2luYWwKKworCitNb2NraW5nIGEgZGljdGlvbmFyeSB3aXRoIE1hZ2ljTW9jaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IG1heSB3YW50IHRvIG1vY2sgYSBkaWN0aW9uYXJ5LCBvciBvdGhlciBjb250YWluZXIgb2JqZWN0LCByZWNvcmRpbmcgYWxsCithY2Nlc3MgdG8gaXQgd2hpbHN0IGhhdmluZyBpdCBzdGlsbCBiZWhhdmUgbGlrZSBhIGRpY3Rpb25hcnkuCisKK1dlIGNhbiBkbyB0aGlzIHdpdGggOmNsYXNzOmBNYWdpY01vY2tgLCB3aGljaCB3aWxsIGJlaGF2ZSBsaWtlIGEgZGljdGlvbmFyeSwKK2FuZCB1c2luZyA6ZGF0YTpgfk1vY2suc2lkZV9lZmZlY3RgIHRvIGRlbGVnYXRlIGRpY3Rpb25hcnkgYWNjZXNzIHRvIGEgcmVhbAordW5kZXJseWluZyBkaWN0aW9uYXJ5IHRoYXQgaXMgdW5kZXIgb3VyIGNvbnRyb2wuCisKK1doZW4gdGhlIGBfX2dldGl0ZW1fX2AgYW5kIGBfX3NldGl0ZW1fX2AgbWV0aG9kcyBvZiBvdXIgYE1hZ2ljTW9ja2AgYXJlIGNhbGxlZAorKG5vcm1hbCBkaWN0aW9uYXJ5IGFjY2VzcykgdGhlbiBgc2lkZV9lZmZlY3RgIGlzIGNhbGxlZCB3aXRoIHRoZSBrZXkgKGFuZCBpbgordGhlIGNhc2Ugb2YgYF9fc2V0aXRlbV9fYCB0aGUgdmFsdWUgdG9vKS4gV2UgY2FuIGFsc28gY29udHJvbCB3aGF0IGlzIHJldHVybmVkLgorCitBZnRlciB0aGUgYE1hZ2ljTW9ja2AgaGFzIGJlZW4gdXNlZCB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXMgbGlrZQorOmRhdGE6YH5Nb2NrLmNhbGxfYXJnc19saXN0YCB0byBhc3NlcnQgYWJvdXQgaG93IHRoZSBkaWN0aW9uYXJ5IHdhcyB1c2VkOgorCisgICAgPj4+IG15X2RpY3QgPSB7J2EnOiAxLCAnYic6IDIsICdjJzogM30KKyAgICA+Pj4gZGVmIGdldGl0ZW0obmFtZSk6CisgICAgLi4uICAgICAgcmV0dXJuIG15X2RpY3RbbmFtZV0KKyAgICAuLi4KKyAgICA+Pj4gZGVmIHNldGl0ZW0obmFtZSwgdmFsKToKKyAgICAuLi4gICAgIG15X2RpY3RbbmFtZV0gPSB2YWwKKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCisgICAgPj4+IG1vY2suX19zZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBzZXRpdGVtCisKKy4uIG5vdGU6OgorCisgICAgQW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgYE1hZ2ljTW9ja2AgaXMgdG8gdXNlIGBNb2NrYCBhbmQgKm9ubHkqIHByb3ZpZGUKKyAgICB0aGUgbWFnaWMgbWV0aG9kcyB5b3Ugc3BlY2lmaWNhbGx5IHdhbnQ6CisKKyAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgPj4+IG1vY2suX19zZXRpdGVtX18gPSBNb2NrKHNpZGVfZWZmZWN0PWdldGl0ZW0pCisgICAgICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fID0gTW9jayhzaWRlX2VmZmVjdD1zZXRpdGVtKQorCisgICAgQSAqdGhpcmQqIG9wdGlvbiBpcyB0byB1c2UgYE1hZ2ljTW9ja2AgYnV0IHBhc3NpbmcgaW4gYGRpY3RgIGFzIHRoZSBgc3BlY2AKKyAgICAob3IgYHNwZWNfc2V0YCkgYXJndW1lbnQgc28gdGhhdCB0aGUgYE1hZ2ljTW9ja2AgY3JlYXRlZCBvbmx5IGhhcworICAgIGRpY3Rpb25hcnkgbWFnaWMgbWV0aG9kcyBhdmFpbGFibGU6CisKKyAgICAgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soc3BlY19zZXQ9ZGljdCkKKyAgICAgICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCisgICAgICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gc2V0aXRlbQorCitXaXRoIHRoZXNlIHNpZGUgZWZmZWN0IGZ1bmN0aW9ucyBpbiBwbGFjZSwgdGhlIGBtb2NrYCB3aWxsIGJlaGF2ZSBsaWtlIGEgbm9ybWFsCitkaWN0aW9uYXJ5IGJ1dCByZWNvcmRpbmcgdGhlIGFjY2Vzcy4gSXQgZXZlbiByYWlzZXMgYSBgS2V5RXJyb3JgIGlmIHlvdSB0cnkKK3RvIGFjY2VzcyBhIGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QuCisKKyAgICA+Pj4gbW9ja1snYSddCisgICAgMQorICAgID4+PiBtb2NrWydjJ10KKyAgICAzCisgICAgPj4+IG1vY2tbJ2QnXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgS2V5RXJyb3I6ICdkJworICAgID4+PiBtb2NrWydiJ10gPSAnZmlzaCcKKyAgICA+Pj4gbW9ja1snZCddID0gJ2VnZ3MnCisgICAgPj4+IG1vY2tbJ2InXQorICAgICdmaXNoJworICAgID4+PiBtb2NrWydkJ10KKyAgICAnZWdncycKKworQWZ0ZXIgaXQgaGFzIGJlZW4gdXNlZCB5b3UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGUgYWNjZXNzIHVzaW5nIHRoZSBub3JtYWwKK21vY2sgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoJ2EnKSwgY2FsbCgnYycpLCBjYWxsKCdkJyksIGNhbGwoJ2InKSwgY2FsbCgnZCcpXQorICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoJ2InLCAnZmlzaCcpLCBjYWxsKCdkJywgJ2VnZ3MnKV0KKyAgICA+Pj4gbXlfZGljdAorICAgIHsnYSc6IDEsICdjJzogMywgJ2InOiAnZmlzaCcsICdkJzogJ2VnZ3MnfQorCisKK01vY2sgc3ViY2xhc3NlcyBhbmQgdGhlaXIgYXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB2YXJpb3VzIHJlYXNvbnMgd2h5IHlvdSBtaWdodCB3YW50IHRvIHN1YmNsYXNzIGBNb2NrYC4gT25lIHJlYXNvbgorbWlnaHQgYmUgdG8gYWRkIGhlbHBlciBtZXRob2RzLiBIZXJlJ3MgYSBzaWxseSBleGFtcGxlOgorCisgICAgPj4+IGNsYXNzIE15TW9jayhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIGhhc19iZWVuX2NhbGxlZChzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5jYWxsZWQKKyAgICAuLi4KKyAgICA+Pj4gbXltb2NrID0gTXlNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBteW1vY2sKKyAgICA8TXlNb2NrIGlkPScuLi4nPgorICAgID4+PiBteW1vY2suaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBGYWxzZQorICAgID4+PiBteW1vY2soKQorICAgID4+PiBteW1vY2suaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBUcnVlCisKK1RoZSBzdGFuZGFyZCBiZWhhdmlvdXIgZm9yIGBNb2NrYCBpbnN0YW5jZXMgaXMgdGhhdCBhdHRyaWJ1dGVzIGFuZCB0aGUgcmV0dXJuCit2YWx1ZSBtb2NrcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgbW9jayB0aGV5IGFyZSBhY2Nlc3NlZCBvbi4gVGhpcyBlbnN1cmVzCit0aGF0IGBNb2NrYCBhdHRyaWJ1dGVzIGFyZSBgTW9ja3NgIGFuZCBgTWFnaWNNb2NrYCBhdHRyaWJ1dGVzIGFyZSBgTWFnaWNNb2Nrc2AKK1sjXV8uIFNvIGlmIHlvdSdyZSBzdWJjbGFzc2luZyB0byBhZGQgaGVscGVyIG1ldGhvZHMgdGhlbiB0aGV5J2xsIGFsc28gYmUKK2F2YWlsYWJsZSBvbiB0aGUgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlIG1vY2sgb2YgaW5zdGFuY2VzIG9mIHlvdXIKK3N1YmNsYXNzLgorCisgICAgPj4+IG15bW9jay5mb28KKyAgICA8TXlNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKyAgICA+Pj4gbXltb2NrLmZvby5oYXNfYmVlbl9jYWxsZWQoKQorICAgIEZhbHNlCisgICAgPj4+IG15bW9jay5mb28oKQorICAgIDxNeU1vY2sgbmFtZT0nbW9jay5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IG15bW9jay5mb28uaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBUcnVlCisKK1NvbWV0aW1lcyB0aGlzIGlzIGluY29udmVuaWVudC4gRm9yIGV4YW1wbGUsIGBvbmUgdXNlcgorPGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvbW9jay9pc3N1ZXMvZGV0YWlsP2lkPTEwNT5gXyBpcyBzdWJjbGFzc2luZyBtb2NrIHRvCitjcmVhdGVkIGEgYFR3aXN0ZWQgYWRhcHRvcgorPGh0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS9kb2N1bWVudHMvMTEuMC4wL2FwaS90d2lzdGVkLnB5dGhvbi5jb21wb25lbnRzLmh0bWw+YF8uCitIYXZpbmcgdGhpcyBhcHBsaWVkIHRvIGF0dHJpYnV0ZXMgdG9vIGFjdHVhbGx5IGNhdXNlcyBlcnJvcnMuCisKK2BNb2NrYCAoaW4gYWxsIGl0cyBmbGF2b3VycykgdXNlcyBhIG1ldGhvZCBjYWxsZWQgYF9nZXRfY2hpbGRfbW9ja2AgdG8gY3JlYXRlCit0aGVzZSAic3ViLW1vY2tzIiBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlcy4gWW91IGNhbiBwcmV2ZW50IHlvdXIKK3N1YmNsYXNzIGJlaW5nIHVzZWQgZm9yIGF0dHJpYnV0ZXMgYnkgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZC4gVGhlIHNpZ25hdHVyZSBpcwordGhhdCBpdCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgKGAqKmt3YXJnc2ApIHdoaWNoIGFyZSB0aGVuIHBhc3NlZAorb250byB0aGUgbW9jayBjb25zdHJ1Y3RvcjoKKworICAgID4+PiBjbGFzcyBTdWJjbGFzcyhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAuLi4KKyAgICA+Pj4gbXltb2NrID0gU3ViY2xhc3MoKQorICAgID4+PiBteW1vY2suZm9vCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisgICAgPj4+IGFzc2VydCBpc2luc3RhbmNlKG15bW9jaywgU3ViY2xhc3MpCisgICAgPj4+IGFzc2VydCBub3QgaXNpbnN0YW5jZShteW1vY2suZm9vLCBTdWJjbGFzcykKKyAgICA+Pj4gYXNzZXJ0IG5vdCBpc2luc3RhbmNlKG15bW9jaygpLCBTdWJjbGFzcykKKworLi4gWyNdIEFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgYXJlIHRoZSBub24tY2FsbGFibGUgbW9ja3MuIEF0dHJpYnV0ZXMgdXNlIHRoZQorICAgIGNhbGxhYmxlIHZhcmlhbnQgYmVjYXVzZSBvdGhlcndpc2Ugbm9uLWNhbGxhYmxlIG1vY2tzIGNvdWxkbid0IGhhdmUgY2FsbGFibGUKKyAgICBtZXRob2RzLgorCisKK01vY2tpbmcgaW1wb3J0cyB3aXRoIHBhdGNoLmRpY3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25lIHNpdHVhdGlvbiB3aGVyZSBtb2NraW5nIGNhbiBiZSBoYXJkIGlzIHdoZXJlIHlvdSBoYXZlIGEgbG9jYWwgaW1wb3J0IGluc2lkZQorYSBmdW5jdGlvbi4gVGhlc2UgYXJlIGhhcmRlciB0byBtb2NrIGJlY2F1c2UgdGhleSBhcmVuJ3QgdXNpbmcgYW4gb2JqZWN0IGZyb20KK3RoZSBtb2R1bGUgbmFtZXNwYWNlIHRoYXQgd2UgY2FuIHBhdGNoIG91dC4KKworR2VuZXJhbGx5IGxvY2FsIGltcG9ydHMgYXJlIHRvIGJlIGF2b2lkZWQuIFRoZXkgYXJlIHNvbWV0aW1lcyBkb25lIHRvIHByZXZlbnQKK2NpcmN1bGFyIGRlcGVuZGVuY2llcywgZm9yIHdoaWNoIHRoZXJlIGlzICp1c3VhbGx5KiBhIG11Y2ggYmV0dGVyIHdheSB0byBzb2x2ZQordGhlIHByb2JsZW0gKHJlZmFjdG9yIHRoZSBjb2RlKSBvciB0byBwcmV2ZW50ICJ1cCBmcm9udCBjb3N0cyIgYnkgZGVsYXlpbmcgdGhlCitpbXBvcnQuIFRoaXMgY2FuIGFsc28gYmUgc29sdmVkIGluIGJldHRlciB3YXlzIHRoYW4gYW4gdW5jb25kaXRpb25hbCBsb2NhbAoraW1wb3J0IChzdG9yZSB0aGUgbW9kdWxlIGFzIGEgY2xhc3Mgb3IgbW9kdWxlIGF0dHJpYnV0ZSBhbmQgb25seSBkbyB0aGUgaW1wb3J0CitvbiBmaXJzdCB1c2UpLgorCitUaGF0IGFzaWRlIHRoZXJlIGlzIGEgd2F5IHRvIHVzZSBgbW9ja2AgdG8gYWZmZWN0IHRoZSByZXN1bHRzIG9mIGFuIGltcG9ydC4KK0ltcG9ydGluZyBmZXRjaGVzIGFuICpvYmplY3QqIGZyb20gdGhlIGBzeXMubW9kdWxlc2AgZGljdGlvbmFyeS4gTm90ZSB0aGF0IGl0CitmZXRjaGVzIGFuICpvYmplY3QqLCB3aGljaCBuZWVkIG5vdCBiZSBhIG1vZHVsZS4gSW1wb3J0aW5nIGEgbW9kdWxlIGZvciB0aGUKK2ZpcnN0IHRpbWUgcmVzdWx0cyBpbiBhIG1vZHVsZSBvYmplY3QgYmVpbmcgcHV0IGluIGBzeXMubW9kdWxlc2AsIHNvIHVzdWFsbHkKK3doZW4geW91IGltcG9ydCBzb21ldGhpbmcgeW91IGdldCBhIG1vZHVsZSBiYWNrLiBUaGlzIG5lZWQgbm90IGJlIHRoZSBjYXNlCitob3dldmVyLgorCitUaGlzIG1lYW5zIHlvdSBjYW4gdXNlIDpmdW5jOmBwYXRjaC5kaWN0YCB0byAqdGVtcG9yYXJpbHkqIHB1dCBhIG1vY2sgaW4gcGxhY2UKK2luIGBzeXMubW9kdWxlc2AuIEFueSBpbXBvcnRzIHdoaWxzdCB0aGlzIHBhdGNoIGlzIGFjdGl2ZSB3aWxsIGZldGNoIHRoZSBtb2NrLgorV2hlbiB0aGUgcGF0Y2ggaXMgY29tcGxldGUgKHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gZXhpdHMsIHRoZSB3aXRoIHN0YXRlbWVudAorYm9keSBpcyBjb21wbGV0ZSBvciBgcGF0Y2hlci5zdG9wKClgIGlzIGNhbGxlZCkgdGhlbiB3aGF0ZXZlciB3YXMgdGhlcmUKK3ByZXZpb3VzbHkgd2lsbCBiZSByZXN0b3JlZCBzYWZlbHkuCisKK0hlcmUncyBhbiBleGFtcGxlIHRoYXQgbW9ja3Mgb3V0IHRoZSAnZm9vYmxlJyBtb2R1bGUuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgeydmb29ibGUnOiBtb2NrfSk6CisgICAgLi4uICAgIGltcG9ydCBmb29ibGUKKyAgICAuLi4gICAgZm9vYmxlLmJsb2IoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2suYmxvYigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gYXNzZXJ0ICdmb29ibGUnIG5vdCBpbiBzeXMubW9kdWxlcworICAgID4+PiBtb2NrLmJsb2IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCitBcyB5b3UgY2FuIHNlZSB0aGUgYGltcG9ydCBmb29ibGVgIHN1Y2NlZWRzLCBidXQgb24gZXhpdCB0aGVyZSBpcyBubyAnZm9vYmxlJworbGVmdCBpbiBgc3lzLm1vZHVsZXNgLgorCitUaGlzIGFsc28gd29ya3MgZm9yIHRoZSBgZnJvbSBtb2R1bGUgaW1wb3J0IG5hbWVgIGZvcm06CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgeydmb29ibGUnOiBtb2NrfSk6CisgICAgLi4uICAgIGZyb20gZm9vYmxlIGltcG9ydCBibG9iCisgICAgLi4uICAgIGJsb2IuYmxpcCgpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5ibG9iLmJsaXAoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2suYmxvYi5ibGlwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworV2l0aCBzbGlnaHRseSBtb3JlIHdvcmsgeW91IGNhbiBhbHNvIG1vY2sgcGFja2FnZSBpbXBvcnRzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9kdWxlcyA9IHsncGFja2FnZSc6IG1vY2ssICdwYWNrYWdlLm1vZHVsZSc6IG1vY2subW9kdWxlfQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgbW9kdWxlcyk6CisgICAgLi4uICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGZvb2JsZQorICAgIC4uLiAgICBmb29ibGUoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2subW9kdWxlLmZvb2JsZSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tb2R1bGUuZm9vYmxlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCitUcmFja2luZyBvcmRlciBvZiBjYWxscyBhbmQgbGVzcyB2ZXJib3NlIGNhbGwgYXNzZXJ0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgTW9ja2AgY2xhc3MgYWxsb3dzIHlvdSB0byB0cmFjayB0aGUgKm9yZGVyKiBvZiBtZXRob2QgY2FsbHMgb24KK3lvdXIgbW9jayBvYmplY3RzIHRocm91Z2ggdGhlIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgIGF0dHJpYnV0ZS4gVGhpcworZG9lc24ndCBhbGxvdyB5b3UgdG8gdHJhY2sgdGhlIG9yZGVyIG9mIGNhbGxzIGJldHdlZW4gc2VwYXJhdGUgbW9jayBvYmplY3RzLAoraG93ZXZlciB3ZSBjYW4gdXNlIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdC4KKworQmVjYXVzZSBtb2NrcyB0cmFjayBjYWxscyB0byBjaGlsZCBtb2NrcyBpbiBgbW9ja19jYWxsc2AsIGFuZCBhY2Nlc3NpbmcgYW4KK2FyYml0cmFyeSBhdHRyaWJ1dGUgb2YgYSBtb2NrIGNyZWF0ZXMgYSBjaGlsZCBtb2NrLCB3ZSBjYW4gY3JlYXRlIG91ciBzZXBhcmF0ZQorbW9ja3MgZnJvbSBhIHBhcmVudCBvbmUuIENhbGxzIHRvIHRob3NlIGNoaWxkIG1vY2sgd2lsbCB0aGVuIGFsbCBiZSByZWNvcmRlZCwKK2luIG9yZGVyLCBpbiB0aGUgYG1vY2tfY2FsbHNgIG9mIHRoZSBwYXJlbnQ6CisKKyAgICA+Pj4gbWFuYWdlciA9IE1vY2soKQorICAgID4+PiBtb2NrX2ZvbyA9IG1hbmFnZXIuZm9vCisgICAgPj4+IG1vY2tfYmFyID0gbWFuYWdlci5iYXIKKworICAgID4+PiBtb2NrX2Zvby5zb21ldGhpbmcoKQorICAgIDxNb2NrIG5hbWU9J21vY2suZm9vLnNvbWV0aGluZygpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9ja19iYXIub3RoZXIudGhpbmcoKQorICAgIDxNb2NrIG5hbWU9J21vY2suYmFyLm90aGVyLnRoaW5nKCknIGlkPScuLi4nPgorCisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscworICAgIFtjYWxsLmZvby5zb21ldGhpbmcoKSwgY2FsbC5iYXIub3RoZXIudGhpbmcoKV0KKworV2UgY2FuIHRoZW4gYXNzZXJ0IGFib3V0IHRoZSBjYWxscywgaW5jbHVkaW5nIHRoZSBvcmRlciwgYnkgY29tcGFyaW5nIHdpdGgKK3RoZSBgbW9ja19jYWxsc2AgYXR0cmlidXRlIG9uIHRoZSBtYW5hZ2VyIG1vY2s6CisKKyAgICA+Pj4gZXhwZWN0ZWRfY2FsbHMgPSBbY2FsbC5mb28uc29tZXRoaW5nKCksIGNhbGwuYmFyLm90aGVyLnRoaW5nKCldCisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscyA9PSBleHBlY3RlZF9jYWxscworICAgIFRydWUKKworSWYgYHBhdGNoYCBpcyBjcmVhdGluZywgYW5kIHB1dHRpbmcgaW4gcGxhY2UsIHlvdXIgbW9ja3MgdGhlbiB5b3UgY2FuIGF0dGFjaAordGhlbSB0byBhIG1hbmFnZXIgbW9jayB1c2luZyB0aGUgOm1ldGg6YH5Nb2NrLmF0dGFjaF9tb2NrYCBtZXRob2QuIEFmdGVyCithdHRhY2hpbmcgY2FsbHMgd2lsbCBiZSByZWNvcmRlZCBpbiBgbW9ja19jYWxsc2Agb2YgdGhlIG1hbmFnZXIuCisKKyAgICA+Pj4gbWFuYWdlciA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLkNsYXNzMScpIGFzIE1vY2tDbGFzczE6CisgICAgLi4uICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5DbGFzczInKSBhcyBNb2NrQ2xhc3MyOgorICAgIC4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMSwgJ01vY2tDbGFzczEnKQorICAgIC4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMiwgJ01vY2tDbGFzczInKQorICAgIC4uLiAgICAgICAgIE1vY2tDbGFzczEoKS5mb28oKQorICAgIC4uLiAgICAgICAgIE1vY2tDbGFzczIoKS5iYXIoKQorICAgIC4uLgorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MxKCkuZm9vKCknIGlkPScuLi4nPgorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MyKCkuYmFyKCknIGlkPScuLi4nPgorICAgID4+PiBtYW5hZ2VyLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5Nb2NrQ2xhc3MxKCksCisgICAgIGNhbGwuTW9ja0NsYXNzMSgpLmZvbygpLAorICAgICBjYWxsLk1vY2tDbGFzczIoKSwKKyAgICAgY2FsbC5Nb2NrQ2xhc3MyKCkuYmFyKCldCisKK0lmIG1hbnkgY2FsbHMgaGF2ZSBiZWVuIG1hZGUsIGJ1dCB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIGEgcGFydGljdWxhcgorc2VxdWVuY2Ugb2YgdGhlbSB0aGVuIGFuIGFsdGVybmF0aXZlIGlzIHRvIHVzZSB0aGUKKzptZXRoOmB+TW9jay5hc3NlcnRfaGFzX2NhbGxzYCBtZXRob2QuIFRoaXMgdGFrZXMgYSBsaXN0IG9mIGNhbGxzIChjb25zdHJ1Y3RlZAord2l0aCB0aGUgOmRhdGE6YGNhbGxgIG9iamVjdCkuIElmIHRoYXQgc2VxdWVuY2Ugb2YgY2FsbHMgYXJlIGluCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgdGhlbiB0aGUgYXNzZXJ0IHN1Y2NlZWRzLgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtKCkuZm9vKCkuYmFyKCkuYmF6KCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKS5mb28oKS5iYXIoKS5iYXooKScgaWQ9Jy4uLic+CisgICAgPj4+IG0ub25lKCkudHdvKCkudGhyZWUoKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5vbmUoKS50d28oKS50aHJlZSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gY2FsbHMgPSBjYWxsLm9uZSgpLnR3bygpLnRocmVlKCkuY2FsbF9saXN0KCkKKyAgICA+Pj4gbS5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorCitFdmVuIHRob3VnaCB0aGUgY2hhaW5lZCBjYWxsIGBtLm9uZSgpLnR3bygpLnRocmVlKClgIGFyZW4ndCB0aGUgb25seSBjYWxscyB0aGF0CitoYXZlIGJlZW4gbWFkZSB0byB0aGUgbW9jaywgdGhlIGFzc2VydCBzdGlsbCBzdWNjZWVkcy4KKworU29tZXRpbWVzIGEgbW9jayBtYXkgaGF2ZSBzZXZlcmFsIGNhbGxzIG1hZGUgdG8gaXQsIGFuZCB5b3UgYXJlIG9ubHkgaW50ZXJlc3RlZAoraW4gYXNzZXJ0aW5nIGFib3V0ICpzb21lKiBvZiB0aG9zZSBjYWxscy4gWW91IG1heSBub3QgZXZlbiBjYXJlIGFib3V0IHRoZQorb3JkZXIuIEluIHRoaXMgY2FzZSB5b3UgY2FuIHBhc3MgYGFueV9vcmRlcj1UcnVlYCB0byBgYXNzZXJ0X2hhc19jYWxsc2A6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oMSksIG0udHdvKDIsIDMpLCBtLnNldmVuKDcpLCBtLmZpZnR5KCc1MCcpCisgICAgKC4uLikKKyAgICA+Pj4gY2FsbHMgPSBbY2FsbC5maWZ0eSgnNTAnKSwgY2FsbCgxKSwgY2FsbC5zZXZlbig3KV0KKyAgICA+Pj4gbS5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9VHJ1ZSkKKworCitNb3JlIGNvbXBsZXggYXJndW1lbnQgbWF0Y2hpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVc2luZyB0aGUgc2FtZSBiYXNpYyBjb25jZXB0IGFzIDpkYXRhOmBBTllgIHdlIGNhbiBpbXBsZW1lbnQgbWF0Y2hlcnMgdG8gZG8gbW9yZQorY29tcGxleCBhc3NlcnRpb25zIG9uIG9iamVjdHMgdXNlZCBhcyBhcmd1bWVudHMgdG8gbW9ja3MuCisKK1N1cHBvc2Ugd2UgZXhwZWN0IHNvbWUgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byBhIG1vY2sgdGhhdCBieSBkZWZhdWx0Citjb21wYXJlcyBlcXVhbCBiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkgKHdoaWNoIGlzIHRoZSBQeXRob24gZGVmYXVsdCBmb3IgdXNlcgorZGVmaW5lZCBjbGFzc2VzKS4gVG8gdXNlIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIHdlIHdvdWxkIG5lZWQgdG8gcGFzcworaW4gdGhlIGV4YWN0IHNhbWUgb2JqZWN0LiBJZiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMKK29mIHRoaXMgb2JqZWN0IHRoZW4gd2UgY2FuIGNyZWF0ZSBhIG1hdGNoZXIgdGhhdCB3aWxsIGNoZWNrIHRoZXNlIGF0dHJpYnV0ZXMKK2ZvciB1cy4KKworWW91IGNhbiBzZWUgaW4gdGhpcyBleGFtcGxlIGhvdyBhICdzdGFuZGFyZCcgY2FsbCB0byBgYXNzZXJ0X2NhbGxlZF93aXRoYCBpc24ndAorc3VmZmljaWVudDoKKworICAgID4+PiBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhLCBiKToKKyAgICAuLi4gICAgICAgICBzZWxmLmEsIHNlbGYuYiA9IGEsIGIKKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soRm9vKDEsIDIpKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChGb28oMSwgMikpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQ6IGNhbGwoPF9fbWFpbl9fLkZvbyBvYmplY3QgYXQgMHguLi4+KQorICAgIEFjdHVhbCBjYWxsOiBjYWxsKDxfX21haW5fXy5Gb28gb2JqZWN0IGF0IDB4Li4uPikKKworQSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBvdXIgYEZvb2AgY2xhc3MgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgICAgPj4+IGRlZiBjb21wYXJlKHNlbGYsIG90aGVyKToKKyAgICAuLi4gICAgIGlmIG5vdCB0eXBlKHNlbGYpID09IHR5cGUob3RoZXIpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBGYWxzZQorICAgIC4uLiAgICAgaWYgc2VsZi5hICE9IG90aGVyLmE6CisgICAgLi4uICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgLi4uICAgICBpZiBzZWxmLmIgIT0gb3RoZXIuYjoKKyAgICAuLi4gICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAuLi4gICAgIHJldHVybiBUcnVlCisgICAgLi4uCisKK0FuZCBhIG1hdGNoZXIgb2JqZWN0IHRoYXQgY2FuIHVzZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBsaWtlIHRoaXMgZm9yIGl0cworZXF1YWxpdHkgb3BlcmF0aW9uIHdvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKworICAgID4+PiBjbGFzcyBNYXRjaGVyKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgY29tcGFyZSwgc29tZV9vYmopOgorICAgIC4uLiAgICAgICAgIHNlbGYuY29tcGFyZSA9IGNvbXBhcmUKKyAgICAuLi4gICAgICAgICBzZWxmLnNvbWVfb2JqID0gc29tZV9vYmoKKyAgICAuLi4gICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBzZWxmLmNvbXBhcmUoc2VsZi5zb21lX29iaiwgb3RoZXIpCisgICAgLi4uCisKK1B1dHRpbmcgYWxsIHRoaXMgdG9nZXRoZXI6CisKKyAgICA+Pj4gbWF0Y2hfZm9vID0gTWF0Y2hlcihjb21wYXJlLCBGb28oMSwgMikpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKG1hdGNoX2ZvbykKKworVGhlIGBNYXRjaGVyYCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBvdXIgY29tcGFyZSBmdW5jdGlvbiBhbmQgdGhlIGBGb29gIG9iamVjdAord2Ugd2FudCB0byBjb21wYXJlIGFnYWluc3QuIEluIGBhc3NlcnRfY2FsbGVkX3dpdGhgIHRoZSBgTWF0Y2hlcmAgZXF1YWxpdHkKK21ldGhvZCB3aWxsIGJlIGNhbGxlZCwgd2hpY2ggY29tcGFyZXMgdGhlIG9iamVjdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGgKK2FnYWluc3QgdGhlIG9uZSB3ZSBjcmVhdGVkIG91ciBtYXRjaGVyIHdpdGguIElmIHRoZXkgbWF0Y2ggdGhlbgorYGFzc2VydF9jYWxsZWRfd2l0aGAgcGFzc2VzLCBhbmQgaWYgdGhleSBkb24ndCBhbiBgQXNzZXJ0aW9uRXJyb3JgIGlzIHJhaXNlZDoKKworICAgID4+PiBtYXRjaF93cm9uZyA9IE1hdGNoZXIoY29tcGFyZSwgRm9vKDMsIDQpKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChtYXRjaF93cm9uZykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZDogKCg8TWF0Y2hlciBvYmplY3QgYXQgMHguLi4+LCksIHt9KQorICAgIENhbGxlZCB3aXRoOiAoKDxGb28gb2JqZWN0IGF0IDB4Li4uPiwpLCB7fSkKKworV2l0aCBhIGJpdCBvZiB0d2Vha2luZyB5b3UgY291bGQgaGF2ZSB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiByYWlzZSB0aGUKK2BBc3NlcnRpb25FcnJvcmAgZGlyZWN0bHkgYW5kIHByb3ZpZGUgYSBtb3JlIHVzZWZ1bCBmYWlsdXJlIG1lc3NhZ2UuCisKK0FzIG9mIHZlcnNpb24gMS41LCB0aGUgUHl0aG9uIHRlc3RpbmcgbGlicmFyeSBgUHlIYW1jcmVzdAorPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9QeUhhbWNyZXN0PmBfIHByb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwKK3RoYXQgbWF5IGJlIHVzZWZ1bCBoZXJlLCBpbiB0aGUgZm9ybSBvZiBpdHMgZXF1YWxpdHkgbWF0Y2hlcgorKGBoYW1jcmVzdC5saWJyYXJ5LmludGVncmF0aW9uLm1hdGNoX2VxdWFsaXR5Cis8aHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvUHlIYW1jcmVzdC9pbnRlZ3JhdGlvbi5odG1sI2hhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHk+YF8pLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTcyNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKQEAgLTAsMCArMSwyMjI2IEBACisKKzptb2Q6YHVuaXR0ZXN0Lm1vY2tgIC0tLSBtb2NrIG9iamVjdCBsaWJyYXJ5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisgICA6c3lub3BzaXM6IE1vY2sgb2JqZWN0IGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBNaWNoYWVsIEZvb3JkIDxtaWNoYWVsQHB5dGhvbi5vcmc+CisuLiBjdXJyZW50bW9kdWxlOjogdW5pdHRlc3QubW9jaworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworOm1vZDpgdW5pdHRlc3QubW9ja2AgaXMgYSBsaWJyYXJ5IGZvciB0ZXN0aW5nIGluIFB5dGhvbi4gSXQgYWxsb3dzIHlvdSB0bworcmVwbGFjZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSB1bmRlciB0ZXN0IHdpdGggbW9jayBvYmplY3RzIGFuZCBtYWtlIGFzc2VydGlvbnMKK2Fib3V0IGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkLgorCitgdW5pdHRlc3QubW9ja2AgcHJvdmlkZXMgYSBjb3JlIDpjbGFzczpgTW9ja2AgY2xhc3MgcmVtb3ZpbmcgdGhlIG5lZWQgdG8KK2NyZWF0ZSBhIGhvc3Qgb2Ygc3R1YnMgdGhyb3VnaG91dCB5b3VyIHRlc3Qgc3VpdGUuIEFmdGVyIHBlcmZvcm1pbmcgYW4KK2FjdGlvbiwgeW91IGNhbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQgd2hpY2ggbWV0aG9kcyAvIGF0dHJpYnV0ZXMgd2VyZSB1c2VkCithbmQgYXJndW1lbnRzIHRoZXkgd2VyZSBjYWxsZWQgd2l0aC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgcmV0dXJuIHZhbHVlcyBhbmQKK3NldCBuZWVkZWQgYXR0cmlidXRlcyBpbiB0aGUgbm9ybWFsIHdheS4KKworQWRkaXRpb25hbGx5LCBtb2NrIHByb3ZpZGVzIGEgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgdGhhdCBoYW5kbGVzIHBhdGNoaW5nCittb2R1bGUgYW5kIGNsYXNzIGxldmVsIGF0dHJpYnV0ZXMgd2l0aGluIHRoZSBzY29wZSBvZiBhIHRlc3QsIGFsb25nIHdpdGgKKzpjb25zdDpgc2VudGluZWxgIGZvciBjcmVhdGluZyB1bmlxdWUgb2JqZWN0cy4gU2VlIHRoZSBgcXVpY2sgZ3VpZGVgXyBmb3IKK3NvbWUgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSA6Y2xhc3M6YE1vY2tgLCA6Y2xhc3M6YE1hZ2ljTW9ja2AgYW5kCis6ZnVuYzpgcGF0Y2hgLgorCitNb2NrIGlzIHZlcnkgZWFzeSB0byB1c2UgYW5kIGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCA6bW9kOmB1bml0dGVzdGAuIE1vY2sKK2lzIGJhc2VkIG9uIHRoZSAnYWN0aW9uIC0+IGFzc2VydGlvbicgcGF0dGVybiBpbnN0ZWFkIG9mIGAncmVjb3JkIC0+IHJlcGxheSdgCit1c2VkIGJ5IG1hbnkgbW9ja2luZyBmcmFtZXdvcmtzLgorCitUaGVyZSBpcyBhIGJhY2twb3J0IG9mIGB1bml0dGVzdC5tb2NrYCBmb3IgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24sCithdmFpbGFibGUgYXMgYG1vY2sgb24gUHlQSSA8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL21vY2s+YF8uCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3VuaXR0ZXN0L21vY2sucHlgCisKKworUXVpY2sgR3VpZGUKKy0tLS0tLS0tLS0tCisKKzpjbGFzczpgTW9ja2AgYW5kIDpjbGFzczpgTWFnaWNNb2NrYCBvYmplY3RzIGNyZWF0ZSBhbGwgYXR0cmlidXRlcyBhbmQKK21ldGhvZHMgYXMgeW91IGFjY2VzcyB0aGVtIGFuZCBzdG9yZSBkZXRhaWxzIG9mIGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkLiBZb3UKK2NhbiBjb25maWd1cmUgdGhlbSwgdG8gc3BlY2lmeSByZXR1cm4gdmFsdWVzIG9yIGxpbWl0IHdoYXQgYXR0cmlidXRlcyBhcmUKK2F2YWlsYWJsZSwgYW5kIHRoZW4gbWFrZSBhc3NlcnRpb25zIGFib3V0IGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTWFnaWNNb2NrCisgICAgPj4+IHRoaW5nID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gdGhpbmcubWV0aG9kID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT0zKQorICAgID4+PiB0aGluZy5tZXRob2QoMywgNCwgNSwga2V5PSd2YWx1ZScpCisgICAgMworICAgID4+PiB0aGluZy5tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIDQsIDUsIGtleT0ndmFsdWUnKQorCis6YXR0cjpgc2lkZV9lZmZlY3RgIGFsbG93cyB5b3UgdG8gcGVyZm9ybSBzaWRlIGVmZmVjdHMsIGluY2x1ZGluZyByYWlzaW5nIGFuCitleGNlcHRpb24gd2hlbiBhIG1vY2sgaXMgY2FsbGVkOgorCisgICA+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5RXJyb3IoJ2ZvbycpKQorICAgPj4+IG1vY2soKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgS2V5RXJyb3I6ICdmb28nCisKKyAgID4+PiB2YWx1ZXMgPSB7J2EnOiAxLCAnYic6IDIsICdjJzogM30KKyAgID4+PiBkZWYgc2lkZV9lZmZlY3QoYXJnKToKKyAgIC4uLiAgICAgcmV0dXJuIHZhbHVlc1thcmddCisgICAuLi4KKyAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgID4+PiBtb2NrKCdhJyksIG1vY2soJ2InKSwgbW9jaygnYycpCisgICAoMSwgMiwgMykKKyAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gWzUsIDQsIDMsIDIsIDFdCisgICA+Pj4gbW9jaygpLCBtb2NrKCksIG1vY2soKQorICAgKDUsIDQsIDMpCisKK01vY2sgaGFzIG1hbnkgb3RoZXIgd2F5cyB5b3UgY2FuIGNvbmZpZ3VyZSBpdCBhbmQgY29udHJvbCBpdHMgYmVoYXZpb3VyLiBGb3IKK2V4YW1wbGUgdGhlIGBzcGVjYCBhcmd1bWVudCBjb25maWd1cmVzIHRoZSBtb2NrIHRvIHRha2UgaXRzIHNwZWNpZmljYXRpb24KK2Zyb20gYW5vdGhlciBvYmplY3QuIEF0dGVtcHRpbmcgdG8gYWNjZXNzIGF0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvbiB0aGUgbW9jawordGhhdCBkb24ndCBleGlzdCBvbiB0aGUgc3BlYyB3aWxsIGZhaWwgd2l0aCBhbiBgQXR0cmlidXRlRXJyb3JgLgorCitUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgLyBjb250ZXh0IG1hbmFnZXIgbWFrZXMgaXQgZWFzeSB0byBtb2NrIGNsYXNzZXMgb3IKK29iamVjdHMgaW4gYSBtb2R1bGUgdW5kZXIgdGVzdC4gVGhlIG9iamVjdCB5b3Ugc3BlY2lmeSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorbW9jayAob3Igb3RoZXIgb2JqZWN0KSBkdXJpbmcgdGhlIHRlc3QgYW5kIHJlc3RvcmVkIHdoZW4gdGhlIHRlc3QgZW5kczoKKworICAgID4+PiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisgICAgPj4+IEBwYXRjaCgnbW9kdWxlLkNsYXNzTmFtZTInKQorICAgIC4uLiBAcGF0Y2goJ21vZHVsZS5DbGFzc05hbWUxJykKKyAgICAuLi4gZGVmIHRlc3QoTW9ja0NsYXNzMSwgTW9ja0NsYXNzMik6CisgICAgLi4uICAgICBtb2R1bGUuQ2xhc3NOYW1lMSgpCisgICAgLi4uICAgICBtb2R1bGUuQ2xhc3NOYW1lMigpCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMSBpcyBtb2R1bGUuQ2xhc3NOYW1lMQorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczIgaXMgbW9kdWxlLkNsYXNzTmFtZTIKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MxLmNhbGxlZAorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczIuY2FsbGVkCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCisuLiBub3RlOjoKKworICAgV2hlbiB5b3UgbmVzdCBwYXRjaCBkZWNvcmF0b3JzIHRoZSBtb2NrcyBhcmUgcGFzc2VkIGluIHRvIHRoZSBkZWNvcmF0ZWQKKyAgIGZ1bmN0aW9uIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwbGllZCAodGhlIG5vcm1hbCAqcHl0aG9uKiBvcmRlciB0aGF0CisgICBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkKS4gVGhpcyBtZWFucyBmcm9tIHRoZSBib3R0b20gdXAsIHNvIGluIHRoZSBleGFtcGxlCisgICBhYm92ZSB0aGUgbW9jayBmb3IgYG1vZHVsZS5DbGFzc05hbWUxYCBpcyBwYXNzZWQgaW4gZmlyc3QuCisKKyAgIFdpdGggYHBhdGNoYCBpdCBtYXR0ZXJzIHRoYXQgeW91IHBhdGNoIG9iamVjdHMgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSB0aGV5CisgICBhcmUgbG9va2VkIHVwLiBUaGlzIGlzIG5vcm1hbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGZvciBhIHF1aWNrIGd1aWRlCisgICByZWFkIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCitBcyB3ZWxsIGFzIGEgZGVjb3JhdG9yIGBwYXRjaGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgaW4gYSB3aXRoCitzdGF0ZW1lbnQ6CisKKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoUHJvZHVjdGlvbkNsYXNzLCAnbWV0aG9kJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIG1vY2tfbWV0aG9kOgorICAgIC4uLiAgICAgdGhpbmcgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgIC4uLiAgICAgdGhpbmcubWV0aG9kKDEsIDIsIDMpCisgICAgLi4uCisgICAgPj4+IG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisKKworVGhlcmUgaXMgYWxzbyA6ZnVuYzpgcGF0Y2guZGljdGAgZm9yIHNldHRpbmcgdmFsdWVzIGluIGEgZGljdGlvbmFyeSBqdXN0CitkdXJpbmcgYSBzY29wZSBhbmQgcmVzdG9yaW5nIHRoZSBkaWN0aW9uYXJ5IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSB3aGVuIHRoZSB0ZXN0CitlbmRzOgorCisgICA+Pj4gZm9vID0geydrZXknOiAndmFsdWUnfQorICAgPj4+IG9yaWdpbmFsID0gZm9vLmNvcHkoKQorICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30sIGNsZWFyPVRydWUpOgorICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgIC4uLgorICAgPj4+IGFzc2VydCBmb28gPT0gb3JpZ2luYWwKKworTW9jayBzdXBwb3J0cyB0aGUgbW9ja2luZyBvZiBQeXRob24gOnJlZjpgbWFnaWMgbWV0aG9kcyA8bWFnaWMtbWV0aG9kcz5gLiBUaGUKK2Vhc2llc3Qgd2F5IG9mIHVzaW5nIG1hZ2ljIG1ldGhvZHMgaXMgd2l0aCB0aGUgOmNsYXNzOmBNYWdpY01vY2tgIGNsYXNzLiBJdAorYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZToKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9jay5fX3N0cl9fLnJldHVybl92YWx1ZSA9ICdmb29iYXJiYXonCisgICAgPj4+IHN0cihtb2NrKQorICAgICdmb29iYXJiYXonCisgICAgPj4+IG1vY2suX19zdHJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCitNb2NrIGFsbG93cyB5b3UgdG8gYXNzaWduIGZ1bmN0aW9ucyAob3Igb3RoZXIgTW9jayBpbnN0YW5jZXMpIHRvIG1hZ2ljIG1ldGhvZHMKK2FuZCB0aGV5IHdpbGwgYmUgY2FsbGVkIGFwcHJvcHJpYXRlbHkuIFRoZSBgTWFnaWNNb2NrYCBjbGFzcyBpcyBqdXN0IGEgTW9jawordmFyaWFudCB0aGF0IGhhcyBhbGwgb2YgdGhlIG1hZ2ljIG1ldGhvZHMgcHJlLWNyZWF0ZWQgZm9yIHlvdSAod2VsbCwgYWxsIHRoZQordXNlZnVsIG9uZXMgYW55d2F5KS4KKworVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIG1hZ2ljIG1ldGhvZHMgd2l0aCB0aGUgb3JkaW5hcnkgTW9jaworY2xhc3M6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLl9fc3RyX18gPSBNb2NrKHJldHVybl92YWx1ZT0nd2hlZWVlZWUnKQorICAgID4+PiBzdHIobW9jaykKKyAgICAnd2hlZWVlZWUnCisKK0ZvciBlbnN1cmluZyB0aGF0IHRoZSBtb2NrIG9iamVjdHMgaW4geW91ciB0ZXN0cyBoYXZlIHRoZSBzYW1lIGFwaSBhcyB0aGUKK29iamVjdHMgdGhleSBhcmUgcmVwbGFjaW5nLCB5b3UgY2FuIHVzZSA6cmVmOmBhdXRvLXNwZWNjaW5nIDxhdXRvLXNwZWNjaW5nPmAuCitBdXRvLXNwZWNjaW5nIGNhbiBiZSBkb25lIHRocm91Z2ggdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQgdG8gcGF0Y2gsIG9yIHRoZQorOmZ1bmM6YGNyZWF0ZV9hdXRvc3BlY2AgZnVuY3Rpb24uIEF1dG8tc3BlY2NpbmcgY3JlYXRlcyBtb2NrIG9iamVjdHMgdGhhdAoraGF2ZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIGFzIHRoZSBvYmplY3RzIHRoZXkgYXJlIHJlcGxhY2luZywgYW5kCithbnkgZnVuY3Rpb25zIGFuZCBtZXRob2RzIChpbmNsdWRpbmcgY29uc3RydWN0b3JzKSBoYXZlIHRoZSBzYW1lIGNhbGwKK3NpZ25hdHVyZSBhcyB0aGUgcmVhbCBvYmplY3QuCisKK1RoaXMgZW5zdXJlcyB0aGF0IHlvdXIgbW9ja3Mgd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyB5b3VyIHByb2R1Y3Rpb24KK2NvZGUgaWYgdGhleSBhcmUgdXNlZCBpbmNvcnJlY3RseToKKworICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgY3JlYXRlX2F1dG9zcGVjCisgICA+Pj4gZGVmIGZ1bmN0aW9uKGEsIGIsIGMpOgorICAgLi4uICAgICBwYXNzCisgICAuLi4KKyAgID4+PiBtb2NrX2Z1bmN0aW9uID0gY3JlYXRlX2F1dG9zcGVjKGZ1bmN0aW9uLCByZXR1cm5fdmFsdWU9J2Zpc2h5JykKKyAgID4+PiBtb2NrX2Z1bmN0aW9uKDEsIDIsIDMpCisgICAnZmlzaHknCisgICA+Pj4gbW9ja19mdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgPj4+IG1vY2tfZnVuY3Rpb24oJ3dyb25nIGFyZ3VtZW50cycpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICBUeXBlRXJyb3I6IDxsYW1iZGE+KCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbikKKworYGNyZWF0ZV9hdXRvc3BlY2AgY2FuIGFsc28gYmUgdXNlZCBvbiBjbGFzc2VzLCB3aGVyZSBpdCBjb3BpZXMgdGhlIHNpZ25hdHVyZSBvZgordGhlIGBfX2luaXRfX2AgbWV0aG9kLCBhbmQgb24gY2FsbGFibGUgb2JqZWN0cyB3aGVyZSBpdCBjb3BpZXMgdGhlIHNpZ25hdHVyZSBvZgordGhlIGBfX2NhbGxfX2AgbWV0aG9kLgorCisKKworVGhlIE1vY2sgQ2xhc3MKKy0tLS0tLS0tLS0tLS0tCisKKworYE1vY2tgIGlzIGEgZmxleGlibGUgbW9jayBvYmplY3QgaW50ZW5kZWQgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIHN0dWJzIGFuZAordGVzdCBkb3VibGVzIHRocm91Z2hvdXQgeW91ciBjb2RlLiBNb2NrcyBhcmUgY2FsbGFibGUgYW5kIGNyZWF0ZSBhdHRyaWJ1dGVzIGFzCituZXcgbW9ja3Mgd2hlbiB5b3UgYWNjZXNzIHRoZW0gWyNdXy4gQWNjZXNzaW5nIHRoZSBzYW1lIGF0dHJpYnV0ZSB3aWxsIGFsd2F5cworcmV0dXJuIHRoZSBzYW1lIG1vY2suIE1vY2tzIHJlY29yZCBob3cgeW91IHVzZSB0aGVtLCBhbGxvd2luZyB5b3UgdG8gbWFrZQorYXNzZXJ0aW9ucyBhYm91dCB3aGF0IHlvdXIgY29kZSBoYXMgZG9uZSB0byB0aGVtLgorCis6Y2xhc3M6YE1hZ2ljTW9ja2AgaXMgYSBzdWJjbGFzcyBvZiBgTW9ja2Agd2l0aCBhbGwgdGhlIG1hZ2ljIG1ldGhvZHMKK3ByZS1jcmVhdGVkIGFuZCByZWFkeSB0byB1c2UuIFRoZXJlIGFyZSBhbHNvIG5vbi1jYWxsYWJsZSB2YXJpYW50cywgdXNlZnVsCit3aGVuIHlvdSBhcmUgbW9ja2luZyBvdXQgb2JqZWN0cyB0aGF0IGFyZW4ndCBjYWxsYWJsZToKKzpjbGFzczpgTm9uQ2FsbGFibGVNb2NrYCBhbmQgOmNsYXNzOmBOb25DYWxsYWJsZU1hZ2ljTW9ja2AKKworVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9ycyBtYWtlcyBpdCBlYXN5IHRvIHRlbXBvcmFyaWx5IHJlcGxhY2UgY2xhc3NlcworaW4gYSBwYXJ0aWN1bGFyIG1vZHVsZSB3aXRoIGEgYE1vY2tgIG9iamVjdC4gQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgY3JlYXRlCithIGBNYWdpY01vY2tgIGZvciB5b3UuIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBjbGFzcyBvZiBgTW9ja2AgdXNpbmcKK3RoZSBgbmV3X2NhbGxhYmxlYCBhcmd1bWVudCB0byBgcGF0Y2hgLgorCisKKy4uIGNsYXNzOjogTW9jayhzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsICoqa3dhcmdzKQorCisgICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cworICAgIHRoYXQgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBNb2NrIG9iamVjdDoKKworICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCisgICAgICBjbGFzcyBvciBpbnN0YW5jZSkgdGhhdCBhY3RzIGFzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jayBvYmplY3QuIElmCisgICAgICB5b3UgcGFzcyBpbiBhbiBvYmplY3QgdGhlbiBhIGxpc3Qgb2Ygc3RyaW5ncyBpcyBmb3JtZWQgYnkgY2FsbGluZyBkaXIgb24KKyAgICAgIHRoZSBvYmplY3QgKGV4Y2x1ZGluZyB1bnN1cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4KKyAgICAgIEFjY2Vzc2luZyBhbnkgYXR0cmlidXRlIG5vdCBpbiB0aGlzIGxpc3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgorICAgICAgOmF0dHI6YF9fY2xhc3NfX2AgcmV0dXJucyB0aGUgY2xhc3Mgb2YgdGhlIHNwZWMgb2JqZWN0LiBUaGlzIGFsbG93cyBtb2NrcworICAgICAgdG8gcGFzcyBgaXNpbnN0YW5jZWAgdGVzdHMuCisKKyAgICAqIGBzcGVjX3NldGA6IEEgc3RyaWN0ZXIgdmFyaWFudCBvZiBgc3BlY2AuIElmIHVzZWQsIGF0dGVtcHRpbmcgdG8gKnNldCoKKyAgICAgIG9yIGdldCBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vY2sgdGhhdCBpc24ndCBvbiB0aGUgb2JqZWN0IHBhc3NlZCBhcworICAgICAgYHNwZWNfc2V0YCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCisgICAgICB0aGUgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBhdHRyaWJ1dGUuIFVzZWZ1bCBmb3IgcmFpc2luZyBleGNlcHRpb25zIG9yCisgICAgICBkeW5hbWljYWxseSBjaGFuZ2luZyByZXR1cm4gdmFsdWVzLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUKKyAgICAgIGFyZ3VtZW50cyBhcyB0aGUgbW9jaywgYW5kIHVubGVzcyBpdCByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAgIEFsdGVybmF0aXZlbHkgYHNpZGVfZWZmZWN0YCBjYW4gYmUgYW4gZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLiBJbgorICAgICAgdGhpcyBjYXNlIHRoZSBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuCisKKyAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KKyAgICAgIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLgorCisgICAgICBBIGBzaWRlX2VmZmVjdGAgY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBpdCB0byBgTm9uZWAuCisKKyAgICAqIGByZXR1cm5fdmFsdWVgOiBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIEJ5IGRlZmF1bHQKKyAgICAgIHRoaXMgaXMgYSBuZXcgTW9jayAoY3JlYXRlZCBvbiBmaXJzdCBhY2Nlc3MpLiBTZWUgdGhlCisgICAgICA6YXR0cjpgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCisKKyAgICAqIGB3cmFwc2A6IEl0ZW0gZm9yIHRoZSBtb2NrIG9iamVjdCB0byB3cmFwLiBJZiBgd3JhcHNgIGlzIG5vdCBOb25lIHRoZW4KKyAgICAgIGNhbGxpbmcgdGhlIE1vY2sgd2lsbCBwYXNzIHRoZSBjYWxsIHRocm91Z2ggdG8gdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAocmV0dXJuaW5nIHRoZSByZWFsIHJlc3VsdCkuIEF0dHJpYnV0ZSBhY2Nlc3Mgb24gdGhlIG1vY2sgd2lsbCByZXR1cm4gYQorICAgICAgTW9jayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgdGhlIHdyYXBwZWQKKyAgICAgIG9iamVjdCAoc28gYXR0ZW1wdGluZyB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCB3aWxsCisgICAgICByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgKS4KKworICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCisgICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgorCisgICAgKiBgbmFtZWA6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCisgICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAorICAgICAgbW9ja3MuCisKKyAgICBNb2NrcyBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUKKyAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuIFNlZSB0aGUKKyAgICA6bWV0aDpgY29uZmlndXJlX21vY2tgIG1ldGhvZCBmb3IgZGV0YWlscy4KKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBhIGNvbnZlbmllbnQgd2F5IG9mIGFzc2VydGluZyB0aGF0IGNhbGxzIGFyZSBtYWRlIGluIGEKKyAgICAgICAgcGFydGljdWxhciB3YXk6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoMSwgMiwgMywgdGVzdD0nd293JykKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCB0ZXN0PSd3b3cnKQorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZSBhbmQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgYXJndW1lbnRzLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgID4+PiBtb2NrKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCAnbW9jaycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBUaGUgYXNzZXJ0IHBhc3NlcyBpZiB0aGUgbW9jayBoYXMgKmV2ZXIqIGJlZW4gY2FsbGVkLCB1bmxpa2UKKyAgICAgICAgOm1ldGg6YGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIDptZXRoOmBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdAorICAgICAgICBvbmx5IHBhc3MgaWYgdGhlIGNhbGwgaXMgdGhlIG1vc3QgcmVjZW50IG9uZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2soMSwgMiwgYXJnPSd0aGluZycpCisgICAgICAgICAgICA+Pj4gbW9jaygnc29tZScsICd0aGluZycsICdlbHNlJykKKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCAyLCBhcmc9J3RoaW5nJykKKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPUZhbHNlKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNhbGxzLgorICAgICAgICBUaGUgYG1vY2tfY2FsbHNgIGxpc3QgaXMgY2hlY2tlZCBmb3IgdGhlIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgY2FsbHMgbXVzdCBiZQorICAgICAgICBzZXF1ZW50aWFsLiBUaGVyZSBjYW4gYmUgZXh0cmEgY2FsbHMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgVHJ1ZSB0aGVuIHRoZSBjYWxscyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKKyAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gOmF0dHI6YG1vY2tfY2FsbHNgLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygxKQorICAgICAgICAgICAgPj4+IG1vY2soMikKKyAgICAgICAgICAgID4+PiBtb2NrKDMpCisgICAgICAgICAgICA+Pj4gbW9jayg0KQorICAgICAgICAgICAgPj4+IGNhbGxzID0gW2NhbGwoMiksIGNhbGwoMyldCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorICAgICAgICAgICAgPj4+IGNhbGxzID0gW2NhbGwoNCksIGNhbGwoMiksIGNhbGwoMyldCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9VHJ1ZSkKKworCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisKKyAgICAgICAgVGhlIHJlc2V0X21vY2sgbWV0aG9kIHJlc2V0cyBhbGwgdGhlIGNhbGwgYXR0cmlidXRlcyBvbiBhIG1vY2sgb2JqZWN0OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygnaGVsbG8nKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAorICAgICAgICAgICAgRmFsc2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlcmUgeW91IHdhbnQgdG8gbWFrZSBhIHNlcmllcyBvZiBhc3NlcnRpb25zIHRoYXQKKyAgICAgICAgcmV1c2UgdGhlIHNhbWUgb2JqZWN0LiBOb3RlIHRoYXQgYHJlc2V0X21vY2tgICpkb2Vzbid0KiBjbGVhciB0aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlLCA6YXR0cjpgc2lkZV9lZmZlY3RgIG9yIGFueSBjaGlsZCBhdHRyaWJ1dGVzIHlvdSBoYXZlCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jaworICAgICAgICAoaWYgYW55KSBhcmUgcmVzZXQgYXMgd2VsbC4KKworCisgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKKworICAgICAgICBBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBgVHJ1ZWAgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4KKworCisgICAgLi4gbWV0aG9kOjogYXR0YWNoX21vY2sobW9jaywgYXR0cmlidXRlKQorCisgICAgICAgIEF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIHRoaXMgb25lLCByZXBsYWNpbmcgaXRzIG5hbWUgYW5kCisgICAgICAgIHBhcmVudC4gQ2FsbHMgdG8gdGhlIGF0dGFjaGVkIG1vY2sgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUKKyAgICAgICAgOmF0dHI6YG1ldGhvZF9jYWxsc2AgYW5kIDphdHRyOmBtb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIG9mIHRoaXMgb25lLgorCisKKyAgICAuLiBtZXRob2Q6OiBjb25maWd1cmVfbW9jaygqKmt3YXJncykKKworICAgICAgICBTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgIEF0dHJpYnV0ZXMgcGx1cyByZXR1cm4gdmFsdWVzIGFuZCBzaWRlIGVmZmVjdHMgY2FuIGJlIHNldCBvbiBjaGlsZAorICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCisgICAgICAgIG1ldGhvZCBjYWxsOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgICAgICA+Pj4gbW9jay5jb25maWd1cmVfbW9jaygqKmF0dHJzKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDMKKyAgICAgICAgICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorCisgICAgICAgIFRoZSBzYW1lIHRoaW5nIGNhbiBiZSBhY2hpZXZlZCBpbiB0aGUgY29uc3RydWN0b3IgY2FsbCB0byBtb2NrczoKKworICAgICAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soc29tZV9hdHRyaWJ1dGU9J2VnZ3MnLCAqKmF0dHJzKQorICAgICAgICAgICAgPj4+IG1vY2suc29tZV9hdHRyaWJ1dGUKKyAgICAgICAgICAgICdlZ2dzJworICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDMKKyAgICAgICAgICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorCisgICAgICAgIGBjb25maWd1cmVfbW9ja2AgZXhpc3RzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRvIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgYWZ0ZXIgdGhlIG1vY2sgaGFzIGJlZW4gY3JlYXRlZC4KKworCisgICAgLi4gbWV0aG9kOjogX19kaXJfXygpCisKKyAgICAgICAgYE1vY2tgIG9iamVjdHMgbGltaXQgdGhlIHJlc3VsdHMgb2YgYGRpcihzb21lX21vY2spYCB0byB1c2VmdWwgcmVzdWx0cy4KKyAgICAgICAgRm9yIG1vY2tzIHdpdGggYSBgc3BlY2AgdGhpcyBpbmNsdWRlcyBhbGwgdGhlIHBlcm1pdHRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGZvciB0aGUgbW9jay4KKworICAgICAgICBTZWUgOmRhdGE6YEZJTFRFUl9ESVJgIGZvciB3aGF0IHRoaXMgZmlsdGVyaW5nIGRvZXMsIGFuZCBob3cgdG8KKyAgICAgICAgc3dpdGNoIGl0IG9mZi4KKworCisgICAgLi4gbWV0aG9kOjogX2dldF9jaGlsZF9tb2NrKCoqa3cpCisKKyAgICAgICAgQ3JlYXRlIHRoZSBjaGlsZCBtb2NrcyBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlLgorICAgICAgICBCeSBkZWZhdWx0IGNoaWxkIG1vY2tzIHdpbGwgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgcGFyZW50LgorICAgICAgICBTdWJjbGFzc2VzIG9mIE1vY2sgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcyB0byBjdXN0b21pemUgdGhlIHdheQorICAgICAgICBjaGlsZCBtb2NrcyBhcmUgbWFkZS4KKworICAgICAgICBGb3Igbm9uLWNhbGxhYmxlIG1vY2tzIHRoZSBjYWxsYWJsZSB2YXJpYW50IHdpbGwgYmUgdXNlZCAocmF0aGVyIHRoYW4KKyAgICAgICAgYW55IGN1c3RvbSBzdWJjbGFzcykuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxlZAorCisgICAgICAgIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhlIG1vY2sgb2JqZWN0IGhhcyBiZWVuIGNhbGxlZDoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBGYWxzZQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBUcnVlCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBjYWxsX2NvdW50CisKKyAgICAgICAgQW4gaW50ZWdlciB0ZWxsaW5nIHlvdSBob3cgbWFueSB0aW1lcyB0aGUgbW9jayBvYmplY3QgaGFzIGJlZW4gY2FsbGVkOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2NvdW50CisgICAgICAgICAgICAwCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2NvdW50CisgICAgICAgICAgICAyCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IHJldHVybl92YWx1ZQorCisgICAgICAgIFNldCB0aGlzIHRvIGNvbmZpZ3VyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGluZyB0aGUgbW9jazoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZSA9ICdmaXNoJworICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgJ2Zpc2gnCisKKyAgICAgICAgVGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGlzIGEgbW9jayBvYmplY3QgYW5kIHlvdSBjYW4gY29uZmlndXJlIGl0IGluCisgICAgICAgIHRoZSBub3JtYWwgd2F5OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmF0dHJpYnV0ZSA9IHNlbnRpbmVsLkF0dHJpYnV0ZQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2soKSgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCisgICAgICAgIGByZXR1cm5fdmFsdWVgIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3I6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgMworCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzaWRlX2VmZmVjdAorCisgICAgICAgIFRoaXMgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZCwKKyAgICAgICAgb3IgYW4gZXhjZXB0aW9uIChjbGFzcyBvciBpbnN0YW5jZSkgdG8gYmUgcmFpc2VkLgorCisgICAgICAgIElmIHlvdSBwYXNzIGluIGEgZnVuY3Rpb24gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBzYW1lIGFyZ3VtZW50cyBhcyB0aGUKKyAgICAgICAgbW9jayBhbmQgdW5sZXNzIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSA6ZGF0YTpgREVGQVVMVGAgc2luZ2xldG9uIHRoZQorICAgICAgICBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgdGhlbiByZXR1cm4gd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMuIElmIHRoZQorICAgICAgICBmdW5jdGlvbiByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCB0aGVuIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGl0cyBub3JtYWwKKyAgICAgICAgdmFsdWUgKGZyb20gdGhlIDphdHRyOmByZXR1cm5fdmFsdWVgLgorCisgICAgICAgIEFuIGV4YW1wbGUgb2YgYSBtb2NrIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiAodG8gdGVzdCBleGNlcHRpb24KKyAgICAgICAgaGFuZGxpbmcgb2YgYW4gQVBJKToKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gRXhjZXB0aW9uKCdCb29tIScpCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgRXhjZXB0aW9uOiBCb29tIQorCisgICAgICAgIFVzaW5nIGBzaWRlX2VmZmVjdGAgdG8gcmV0dXJuIGEgc2VxdWVuY2Ugb2YgdmFsdWVzOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBbMywgMiwgMV0KKyAgICAgICAgICAgID4+PiBtb2NrKCksIG1vY2soKSwgbW9jaygpCisgICAgICAgICAgICAoMywgMiwgMSkKKworICAgICAgICBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlCisgICAgICAgIG1vY2sgKHNvIGl0IGlzIHdpc2UgZm9yIGl0IHRvIHRha2UgYXJiaXRyYXJ5IGFyZ3MgYW5kIGtleXdvcmQKKyAgICAgICAgYXJndW1lbnRzKSBhbmQgd2hhdGV2ZXIgaXQgcmV0dXJucyBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgZm9yCisgICAgICAgIHRoZSBjYWxsLiBUaGUgZXhjZXB0aW9uIGlzIGlmIGBzaWRlX2VmZmVjdGAgcmV0dXJucyA6ZGF0YTpgREVGQVVMVGAsCisgICAgICAgIGluIHdoaWNoIGNhc2UgdGhlIG5vcm1hbCA6YXR0cjpgcmV0dXJuX3ZhbHVlYCBpcyB1c2VkLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAuLi4gICAgIHJldHVybiBERUZBVUxUCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgIDMKKworICAgICAgICBgc2lkZV9lZmZlY3RgIGNhbiBiZSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLiBIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0CisgICAgICAgIGFkZHMgb25lIHRvIHRoZSB2YWx1ZSB0aGUgbW9jayBpcyBjYWxsZWQgd2l0aCBhbmQgcmV0dXJucyBpdDoKKworICAgICAgICAgICAgPj4+IHNpZGVfZWZmZWN0ID0gbGFtYmRhIHZhbHVlOiB2YWx1ZSArIDEKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgICAgID4+PiBtb2NrKDMpCisgICAgICAgICAgICA0CisgICAgICAgICAgICA+Pj4gbW9jaygtOCkKKyAgICAgICAgICAgIC03CisKKyAgICAgICAgU2V0dGluZyBgc2lkZV9lZmZlY3RgIHRvIGBOb25lYCBjbGVhcnMgaXQ6CisKKyAgICAgICAgICAgID4+PiBtID0gTW9jayhzaWRlX2VmZmVjdD1LZXlFcnJvciwgcmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICA+Pj4gbSgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorICAgICAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBOb25lCisgICAgICAgICAgICA+Pj4gbSgpCisgICAgICAgICAgICAzCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfYXJncworCisgICAgICAgIFRoaXMgaXMgZWl0aGVyIGBOb25lYCAoaWYgdGhlIG1vY2sgaGFzbid0IGJlZW4gY2FsbGVkKSwgb3IgdGhlCisgICAgICAgIGFyZ3VtZW50cyB0aGF0IHRoZSBtb2NrIHdhcyBsYXN0IGNhbGxlZCB3aXRoLiBUaGlzIHdpbGwgYmUgaW4gdGhlCisgICAgICAgIGZvcm0gb2YgYSB0dXBsZTogdGhlIGZpcnN0IG1lbWJlciBpcyBhbnkgb3JkZXJlZCBhcmd1bWVudHMgdGhlIG1vY2sKKyAgICAgICAgd2FzIGNhbGxlZCB3aXRoIChvciBhbiBlbXB0eSB0dXBsZSkgYW5kIHRoZSBzZWNvbmQgbWVtYmVyIGlzIGFueQorICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyAob3IgYW4gZW1wdHkgZGljdGlvbmFyeSkuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBwcmludCBtb2NrLmNhbGxfYXJncworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJncyA9PSAoKQorICAgICAgICAgICAgVHJ1ZQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJncworICAgICAgICAgICAgY2FsbCgzLCA0KQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzID09ICgoMywgNCksKQorICAgICAgICAgICAgVHJ1ZQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCwgNSwga2V5PSdmaXNoJywgbmV4dD0ndzAwdCEnKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKDMsIDQsIDUsIGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJykKKworICAgICAgICBgY2FsbF9hcmdzYCwgYWxvbmcgd2l0aCBtZW1iZXJzIG9mIHRoZSBsaXN0cyA6YXR0cjpgY2FsbF9hcmdzX2xpc3RgLAorICAgICAgICA6YXR0cjpgbWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YG1vY2tfY2FsbHNgIGFyZSA6ZGF0YTpgY2FsbGAgb2JqZWN0cy4KKyAgICAgICAgVGhlc2UgYXJlIHR1cGxlcywgc28gdGhleSBjYW4gYmUgdW5wYWNrZWQgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsCisgICAgICAgIGFyZ3VtZW50cyBhbmQgbWFrZSBtb3JlIGNvbXBsZXggYXNzZXJ0aW9ucy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfYXJnc19saXN0CisKKyAgICAgICAgVGhpcyBpcyBhIGxpc3Qgb2YgYWxsIHRoZSBjYWxscyBtYWRlIHRvIHRoZSBtb2NrIG9iamVjdCBpbiBzZXF1ZW5jZQorICAgICAgICAoc28gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGl0IGhhcyBiZWVuCisgICAgICAgIGNhbGxlZCkuIEJlZm9yZSBhbnkgY2FsbHMgaGF2ZSBiZWVuIG1hZGUgaXQgaXMgYW4gZW1wdHkgbGlzdC4gVGhlCisgICAgICAgIDpkYXRhOmBjYWxsYCBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGNvbnZlbmllbnRseSBjb25zdHJ1Y3RpbmcgbGlzdHMgb2YKKyAgICAgICAgY2FsbHMgdG8gY29tcGFyZSB3aXRoIGBjYWxsX2FyZ3NfbGlzdGAuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrKDMsIDQpCisgICAgICAgICAgICA+Pj4gbW9jayhrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdAorICAgICAgICAgICAgW2NhbGwoKSwgY2FsbCgzLCA0KSwgY2FsbChrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpXQorICAgICAgICAgICAgPj4+IGV4cGVjdGVkID0gWygpLCAoKDMsIDQpLCksICh7J2tleSc6ICdmaXNoJywgJ25leHQnOiAndzAwdCEnfSwpXQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBNZW1iZXJzIG9mIGBjYWxsX2FyZ3NfbGlzdGAgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLiBUaGVzZSBjYW4gYmUKKyAgICAgICAgdW5wYWNrZWQgYXMgdHVwbGVzIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuIFNlZQorICAgICAgICA6cmVmOmBjYWxscyBhcyB0dXBsZXMgPGNhbGxzLWFzLXR1cGxlcz5gLgorCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtZXRob2RfY2FsbHMKKworICAgICAgICBBcyB3ZWxsIGFzIHRyYWNraW5nIGNhbGxzIHRvIHRoZW1zZWx2ZXMsIG1vY2tzIGFsc28gdHJhY2sgY2FsbHMgdG8KKyAgICAgICAgbWV0aG9kcyBhbmQgYXR0cmlidXRlcywgYW5kICp0aGVpciogbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5wcm9wZXJ0eS5tZXRob2QuYXR0cmlidXRlKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kX2NhbGxzCisgICAgICAgICAgICBbY2FsbC5tZXRob2QoKSwgY2FsbC5wcm9wZXJ0eS5tZXRob2QuYXR0cmlidXRlKCldCisKKyAgICAgICAgTWVtYmVycyBvZiBgbWV0aG9kX2NhbGxzYCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1vY2tfY2FsbHMKKworICAgICAgICBgbW9ja19jYWxsc2AgcmVjb3JkcyAqYWxsKiBjYWxscyB0byB0aGUgbW9jayBvYmplY3QsIGl0cyBtZXRob2RzLCBtYWdpYworICAgICAgICBtZXRob2RzICphbmQqIHJldHVybiB2YWx1ZSBtb2Nrcy4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICAgICAgPj4+IHJlc3VsdCA9IG1vY2soMSwgMiwgMykKKyAgICAgICAgICAgID4+PiBtb2NrLmZpcnN0KGE9MykKKyAgICAgICAgICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5maXJzdCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnNlY29uZCgpCisgICAgICAgICAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suc2Vjb25kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IGludChtb2NrKQorICAgICAgICAgICAgMQorICAgICAgICAgICAgPj4+IHJlc3VsdCgxKQorICAgICAgICAgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrKCkoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbCgxLCAyLCAzKSwgY2FsbC5maXJzdChhPTMpLCBjYWxsLnNlY29uZCgpLAorICAgICAgICAgICAgLi4uIGNhbGwuX19pbnRfXygpLCBjYWxsKCkoMSldCisgICAgICAgICAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgICAgICAgICBUcnVlCisKKyAgICAgICAgTWVtYmVycyBvZiBgbW9ja19jYWxsc2AgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLiBUaGVzZSBjYW4gYmUKKyAgICAgICAgdW5wYWNrZWQgYXMgdHVwbGVzIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuIFNlZQorICAgICAgICA6cmVmOmBjYWxscyBhcyB0dXBsZXMgPGNhbGxzLWFzLXR1cGxlcz5gLgorCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBfX2NsYXNzX18KKworICAgICAgICBOb3JtYWxseSB0aGUgYF9fY2xhc3NfX2AgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aWxsIHJldHVybiBpdHMgdHlwZS4KKyAgICAgICAgRm9yIGEgbW9jayBvYmplY3Qgd2l0aCBhIGBzcGVjYCBgX19jbGFzc19fYCByZXR1cm5zIHRoZSBzcGVjIGNsYXNzCisgICAgICAgIGluc3RlYWQuIFRoaXMgYWxsb3dzIG1vY2sgb2JqZWN0cyB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cyBmb3IgdGhlCisgICAgICAgIG9iamVjdCB0aGV5IGFyZSByZXBsYWNpbmcgLyBtYXNxdWVyYWRpbmcgYXM6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzcGVjPTMpCisgICAgICAgICAgICA+Pj4gaXNpbnN0YW5jZShtb2NrLCBpbnQpCisgICAgICAgICAgICBUcnVlCisKKyAgICAgICAgYF9fY2xhc3NfX2AgaXMgYXNzaWduYWJsZSB0bywgdGhpcyBhbGxvd3MgYSBtb2NrIHRvIHBhc3MgYW4KKyAgICAgICAgYGlzaW5zdGFuY2VgIGNoZWNrIHdpdGhvdXQgZm9yY2luZyB5b3UgdG8gdXNlIGEgc3BlYzoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLl9fY2xhc3NfXyA9IGRpY3QKKyAgICAgICAgICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIGRpY3QpCisgICAgICAgICAgICBUcnVlCisKKy4uIGNsYXNzOjogTm9uQ2FsbGFibGVNb2NrKHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKworICAgIEEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1vY2tgLiBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lCisgICAgbWVhbmluZyBvZiBgTW9ja2AsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgcmV0dXJuX3ZhbHVlYCBhbmQgYHNpZGVfZWZmZWN0YAorICAgIHdoaWNoIGhhdmUgbm8gbWVhbmluZyBvbiBhIG5vbi1jYWxsYWJsZSBtb2NrLgorCitNb2NrIG9iamVjdHMgdGhhdCB1c2UgYSBjbGFzcyBvciBhbiBpbnN0YW5jZSBhcyBhIGBzcGVjYCBvciBgc3BlY19zZXRgIGFyZSBhYmxlCit0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0czoKKworICAgID4+PiBtb2NrID0gTW9jayhzcGVjPVNvbWVDbGFzcykKKyAgICA+Pj4gaXNpbnN0YW5jZShtb2NrLCBTb21lQ2xhc3MpCisgICAgVHJ1ZQorICAgID4+PiBtb2NrID0gTW9jayhzcGVjX3NldD1Tb21lQ2xhc3MoKSkKKyAgICA+Pj4gaXNpbnN0YW5jZShtb2NrLCBTb21lQ2xhc3MpCisgICAgVHJ1ZQorCitUaGUgYE1vY2tgIGNsYXNzZXMgaGF2ZSBzdXBwb3J0IGZvciBtb2NraW5nIG1hZ2ljIG1ldGhvZHMuIFNlZSA6cmVmOmBtYWdpYworbWV0aG9kcyA8bWFnaWMtbWV0aG9kcz5gIGZvciB0aGUgZnVsbCBkZXRhaWxzLgorCitUaGUgbW9jayBjbGFzc2VzIGFuZCB0aGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3JzIGFsbCB0YWtlIGFyYml0cmFyeSBrZXl3b3JkCithcmd1bWVudHMgZm9yIGNvbmZpZ3VyYXRpb24uIEZvciB0aGUgYHBhdGNoYCBkZWNvcmF0b3JzIHRoZSBrZXl3b3JkcyBhcmUKK3Bhc3NlZCB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIG1vY2sgYmVpbmcgY3JlYXRlZC4gVGhlIGtleXdvcmQgYXJndW1lbnRzCithcmUgZm9yIGNvbmZpZ3VyaW5nIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2s6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soYXR0cmlidXRlPTMsIG90aGVyPSdmaXNoJykKKyAgICAgICAgPj4+IG0uYXR0cmlidXRlCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0ub3RoZXIKKyAgICAgICAgJ2Zpc2gnCisKK1RoZSByZXR1cm4gdmFsdWUgYW5kIHNpZGUgZWZmZWN0IG9mIGNoaWxkIG1vY2tzIGNhbiBiZSBzZXQgaW4gdGhlIHNhbWUgd2F5LAordXNpbmcgZG90dGVkIG5vdGF0aW9uLiBBcyB5b3UgY2FuJ3QgdXNlIGRvdHRlZCBuYW1lcyBkaXJlY3RseSBpbiBhIGNhbGwgeW91CitoYXZlIHRvIGNyZWF0ZSBhIGRpY3Rpb25hcnkgYW5kIHVucGFjayBpdCB1c2luZyBgKipgOgorCisgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgPj4+IG1vY2sgPSBNb2NrKHNvbWVfYXR0cmlidXRlPSdlZ2dzJywgKiphdHRycykKKyAgICA+Pj4gbW9jay5zb21lX2F0dHJpYnV0ZQorICAgICdlZ2dzJworICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgMworICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBLZXlFcnJvcgorCisKKy4uIGNsYXNzOjogUHJvcGVydHlNb2NrKCphcmdzLCAqKmt3YXJncykKKworICAgQSBtb2NrIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9wZXJ0eSwgb3Igb3RoZXIgZGVzY3JpcHRvciwgb24gYSBjbGFzcy4KKyAgIGBQcm9wZXJ0eU1vY2tgIHByb3ZpZGVzIGBfX2dldF9fYCBhbmQgYF9fc2V0X19gIG1ldGhvZHMgc28geW91IGNhbiBzcGVjaWZ5CisgICBhIHJldHVybiB2YWx1ZSB3aGVuIGl0IGlzIGZldGNoZWQuCisKKyAgIEZldGNoaW5nIGEgYFByb3BlcnR5TW9ja2AgaW5zdGFuY2UgZnJvbSBhbiBvYmplY3QgY2FsbHMgdGhlIG1vY2ssIHdpdGgKKyAgIG5vIGFyZ3MuIFNldHRpbmcgaXQgY2FsbHMgdGhlIG1vY2sgd2l0aCB0aGUgdmFsdWUgYmVpbmcgc2V0LgorCisgICAgICAgID4+PiBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgLi4uICAgICBAcHJvcGVydHkKKyAgICAgICAgLi4uICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICByZXR1cm4gJ3NvbWV0aGluZycKKyAgICAgICAgLi4uICAgICBAZm9vLnNldHRlcgorICAgICAgICAuLi4gICAgIGRlZiBmb28oc2VsZiwgdmFsdWUpOgorICAgICAgICAuLi4gICAgICAgICBwYXNzCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uRm9vLmZvbycsIG5ld19jYWxsYWJsZT1Qcm9wZXJ0eU1vY2spIGFzIG1vY2tfZm9vOgorICAgICAgICAuLi4gICAgIG1vY2tfZm9vLnJldHVybl92YWx1ZSA9ICdtb2NraXR5LW1vY2snCisgICAgICAgIC4uLiAgICAgdGhpc19mb28gPSBGb28oKQorICAgICAgICAuLi4gICAgIHByaW50IHRoaXNfZm9vLmZvbworICAgICAgICAuLi4gICAgIHRoaXNfZm9vLmZvbyA9IDYKKyAgICAgICAgLi4uCisgICAgICAgIG1vY2tpdHktbW9jaworICAgICAgICA+Pj4gbW9ja19mb28ubW9ja19jYWxscworICAgICAgICBbY2FsbCgpLCBjYWxsKDYpXQorCitCZWNhdXNlIG9mIHRoZSB3YXkgbW9jayBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgeW91IGNhbid0IGRpcmVjdGx5IGF0dGFjaCBhCitgUHJvcGVydHlNb2NrYCB0byBhIG1vY2sgb2JqZWN0LiBJbnN0ZWFkIHlvdSBjYW4gYXR0YWNoIGl0IHRvIHRoZSBtb2NrIHR5cGUKK29iamVjdDo6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHAgPSBQcm9wZXJ0eU1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IHR5cGUobSkuZm9vID0gcAorICAgID4+PiBtLmZvbworICAgIDMKKyAgICA+Pj4gcC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKworQ2FsbGluZworfn5+fn5+fgorCitNb2NrIG9iamVjdHMgYXJlIGNhbGxhYmxlLiBUaGUgY2FsbCB3aWxsIHJldHVybiB0aGUgdmFsdWUgc2V0IGFzIHRoZQorOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAgYXR0cmlidXRlLiBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgaXMgYSBuZXcgTW9jaworb2JqZWN0OyBpdCBpcyBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIHRoZSByZXR1cm4gdmFsdWUgaXMgYWNjZXNzZWQgKGVpdGhlcgorZXhwbGljaXRseSBvciBieSBjYWxsaW5nIHRoZSBNb2NrKSAtIGJ1dCBpdCBpcyBzdG9yZWQgYW5kIHRoZSBzYW1lIG9uZQorcmV0dXJuZWQgZWFjaCB0aW1lLgorCitDYWxscyBtYWRlIHRvIHRoZSBvYmplY3Qgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgYXR0cmlidXRlcworbGlrZSA6YXR0cjpgfk1vY2suY2FsbF9hcmdzYCBhbmQgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc19saXN0YC4KKworSWYgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBpcyBzZXQgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgY2FsbCBoYXMKK2JlZW4gcmVjb3JkZWQsIHNvIGlmIGBzaWRlX2VmZmVjdGAgcmFpc2VzIGFuIGV4Y2VwdGlvbiB0aGUgY2FsbCBpcyBzdGlsbAorcmVjb3JkZWQuCisKK1RoZSBzaW1wbGVzdCB3YXkgdG8gbWFrZSBhIG1vY2sgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gY2FsbGVkIGlzIHRvIG1ha2UKKzphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgYW4gZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PUluZGV4RXJyb3IpCisgICAgICAgID4+PiBtKDEsIDIsIDMpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgSW5kZXhFcnJvcgorICAgICAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKDEsIDIsIDMpXQorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IEtleUVycm9yKCdCYW5nIScpCisgICAgICAgID4+PiBtKCd0d28nLCAndGhyZWUnLCAnZm91cicpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgS2V5RXJyb3I6ICdCYW5nIScKKyAgICAgICAgPj4+IG0ubW9ja19jYWxscworICAgICAgICBbY2FsbCgxLCAyLCAzKSwgY2FsbCgndHdvJywgJ3RocmVlJywgJ2ZvdXInKV0KKworSWYgYHNpZGVfZWZmZWN0YCBpcyBhIGZ1bmN0aW9uIHRoZW4gd2hhdGV2ZXIgdGhhdCBmdW5jdGlvbiByZXR1cm5zIGlzIHdoYXQKK2NhbGxzIHRvIHRoZSBtb2NrIHJldHVybi4gVGhlIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlCitzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbW9jay4gVGhpcyBhbGxvd3MgeW91IHRvIHZhcnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKK2NhbGwgZHluYW1pY2FsbHksIGJhc2VkIG9uIHRoZSBpbnB1dDoKKworICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KHZhbHVlKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gdmFsdWUgKyAxCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgPj4+IG0oMSkKKyAgICAgICAgMgorICAgICAgICA+Pj4gbSgyKQorICAgICAgICAzCisgICAgICAgID4+PiBtLm1vY2tfY2FsbHMKKyAgICAgICAgW2NhbGwoMSksIGNhbGwoMildCisKK0lmIHlvdSB3YW50IHRoZSBtb2NrIHRvIHN0aWxsIHJldHVybiB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgKGEgbmV3IG1vY2spLCBvcgorYW55IHNldCByZXR1cm4gdmFsdWUsIHRoZW4gdGhlcmUgYXJlIHR3byB3YXlzIG9mIGRvaW5nIHRoaXMuIEVpdGhlciByZXR1cm4KK2Btb2NrLnJldHVybl92YWx1ZWAgZnJvbSBpbnNpZGUgYHNpZGVfZWZmZWN0YCwgb3IgcmV0dXJuIDpkYXRhOmBERUZBVUxUYDoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gbS5yZXR1cm5fdmFsdWUKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgPj4+IG0ucmV0dXJuX3ZhbHVlID0gMworICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAuLi4gICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworCitUbyByZW1vdmUgYSBgc2lkZV9lZmZlY3RgLCBhbmQgcmV0dXJuIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91ciwgc2V0IHRoZQorYHNpZGVfZWZmZWN0YCB0byBgTm9uZWA6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPTYpCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gMworICAgICAgICAuLi4KKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBOb25lCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgNgorCitUaGUgYHNpZGVfZWZmZWN0YCBjYW4gYWxzbyBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LiBSZXBlYXRlZCBjYWxscyB0byB0aGUgbW9jaword2lsbCByZXR1cm4gdmFsdWVzIGZyb20gdGhlIGl0ZXJhYmxlICh1bnRpbCB0aGUgaXRlcmFibGUgaXMgZXhoYXVzdGVkIGFuZAorYSBgU3RvcEl0ZXJhdGlvbmAgaXMgcmFpc2VkKToKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1bMSwgMiwgM10pCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMQorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDIKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBTdG9wSXRlcmF0aW9uCisKK0lmIGFueSBtZW1iZXJzIG9mIHRoZSBpdGVyYWJsZSBhcmUgZXhjZXB0aW9ucyB0aGV5IHdpbGwgYmUgcmFpc2VkIGluc3RlYWQgb2YKK3JldHVybmVkOjoKKworICAgICAgICA+Pj4gaXRlcmFibGUgPSAoMzMsIFZhbHVlRXJyb3IsIDY2KQorICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1pdGVyYWJsZSkKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzMworICAgICAgICA+Pj4gbSgpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgIC4uLgorICAgICAgICBWYWx1ZUVycm9yCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgNjYKKworCisuLiBfZGVsZXRpbmctYXR0cmlidXRlczoKKworRGVsZXRpbmcgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fgorCitNb2NrIG9iamVjdHMgY3JlYXRlIGF0dHJpYnV0ZXMgb24gZGVtYW5kLiBUaGlzIGFsbG93cyB0aGVtIHRvIHByZXRlbmQgdG8gYmUKK29iamVjdHMgb2YgYW55IHR5cGUuCisKK1lvdSBtYXkgd2FudCBhIG1vY2sgb2JqZWN0IHRvIHJldHVybiBgRmFsc2VgIHRvIGEgYGhhc2F0dHJgIGNhbGwsIG9yIHJhaXNlIGFuCitgQXR0cmlidXRlRXJyb3JgIHdoZW4gYW4gYXR0cmlidXRlIGlzIGZldGNoZWQuIFlvdSBjYW4gZG8gdGhpcyBieSBwcm92aWRpbmcKK2FuIG9iamVjdCBhcyBhIGBzcGVjYCBmb3IgYSBtb2NrLCBidXQgdGhhdCBpc24ndCBhbHdheXMgY29udmVuaWVudC4KKworWW91ICJibG9jayIgYXR0cmlidXRlcyBieSBkZWxldGluZyB0aGVtLiBPbmNlIGRlbGV0ZWQsIGFjY2Vzc2luZyBhbiBhdHRyaWJ1dGUKK3dpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gaGFzYXR0cihtb2NrLCAnbScpCisgICAgVHJ1ZQorICAgID4+PiBkZWwgbW9jay5tCisgICAgPj4+IGhhc2F0dHIobW9jaywgJ20nKQorICAgIEZhbHNlCisgICAgPj4+IGRlbCBtb2NrLmYKKyAgICA+Pj4gbW9jay5mCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogZgorCisKK0F0dGFjaGluZyBNb2NrcyBhcyBBdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitXaGVuIHlvdSBhdHRhY2ggYSBtb2NrIGFzIGFuIGF0dHJpYnV0ZSBvZiBhbm90aGVyIG1vY2sgKG9yIGFzIHRoZSByZXR1cm4KK3ZhbHVlKSBpdCBiZWNvbWVzIGEgImNoaWxkIiBvZiB0aGF0IG1vY2suIENhbGxzIHRvIHRoZSBjaGlsZCBhcmUgcmVjb3JkZWQgaW4KK3RoZSA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgb2YgdGhlCitwYXJlbnQuIFRoaXMgaXMgdXNlZnVsIGZvciBjb25maWd1cmluZyBjaGlsZCBtb2NrcyBhbmQgdGhlbiBhdHRhY2hpbmcgdGhlbSB0bwordGhlIHBhcmVudCwgb3IgZm9yIGF0dGFjaGluZyBtb2NrcyB0byBhIHBhcmVudCB0aGF0IHJlY29yZHMgYWxsIGNhbGxzIHRvIHRoZQorY2hpbGRyZW4gYW5kIGFsbG93cyB5b3UgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IHRoZSBvcmRlciBvZiBjYWxscyBiZXR3ZWVuCittb2NrczoKKworICAgID4+PiBwYXJlbnQgPSBNYWdpY01vY2soKQorICAgID4+PiBjaGlsZDEgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IGNoaWxkMiA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gcGFyZW50LmNoaWxkMSA9IGNoaWxkMQorICAgID4+PiBwYXJlbnQuY2hpbGQyID0gY2hpbGQyCisgICAgPj4+IGNoaWxkMSgxKQorICAgID4+PiBjaGlsZDIoMikKKyAgICA+Pj4gcGFyZW50Lm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jaGlsZDEoMSksIGNhbGwuY2hpbGQyKDIpXQorCitUaGUgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIG1vY2sgaGFzIGEgbmFtZS4gVGhpcyBhbGxvd3MgeW91IHRvIHByZXZlbnQKK3RoZSAicGFyZW50aW5nIiBpZiBmb3Igc29tZSByZWFzb24geW91IGRvbid0IHdhbnQgaXQgdG8gaGFwcGVuLgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBub3RfYV9jaGlsZCA9IE1hZ2ljTW9jayhuYW1lPSdub3QtYS1jaGlsZCcpCisgICAgPj4+IG1vY2suYXR0cmlidXRlID0gbm90X2FfY2hpbGQKKyAgICA+Pj4gbW9jay5hdHRyaWJ1dGUoKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbm90LWEtY2hpbGQoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subW9ja19jYWxscworICAgIFtdCisKK01vY2tzIGNyZWF0ZWQgZm9yIHlvdSBieSA6ZnVuYzpgcGF0Y2hgIGFyZSBhdXRvbWF0aWNhbGx5IGdpdmVuIG5hbWVzLiBUbworYXR0YWNoIG1vY2tzIHRoYXQgaGF2ZSBuYW1lcyB0byBhIHBhcmVudCB5b3UgdXNlIHRoZSA6bWV0aDpgfk1vY2suYXR0YWNoX21vY2tgCittZXRob2Q6CisKKyAgICA+Pj4gdGhpbmcxID0gb2JqZWN0KCkKKyAgICA+Pj4gdGhpbmcyID0gb2JqZWN0KCkKKyAgICA+Pj4gcGFyZW50ID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18udGhpbmcxJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIGNoaWxkMToKKyAgICAuLi4gICAgIHdpdGggcGF0Y2goJ19fbWFpbl9fLnRoaW5nMicsIHJldHVybl92YWx1ZT1Ob25lKSBhcyBjaGlsZDI6CisgICAgLi4uICAgICAgICAgcGFyZW50LmF0dGFjaF9tb2NrKGNoaWxkMSwgJ2NoaWxkMScpCisgICAgLi4uICAgICAgICAgcGFyZW50LmF0dGFjaF9tb2NrKGNoaWxkMiwgJ2NoaWxkMicpCisgICAgLi4uICAgICAgICAgY2hpbGQxKCdvbmUnKQorICAgIC4uLiAgICAgICAgIGNoaWxkMigndHdvJykKKyAgICAuLi4KKyAgICA+Pj4gcGFyZW50Lm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jaGlsZDEoJ29uZScpLCBjYWxsLmNoaWxkMigndHdvJyldCisKKworLi4gWyNdIFRoZSBvbmx5IGV4Y2VwdGlvbnMgYXJlIG1hZ2ljIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMgKHRob3NlIHRoYXQgaGF2ZQorICAgICAgIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGRvdWJsZSB1bmRlcnNjb3JlcykuIE1vY2sgZG9lc24ndCBjcmVhdGUgdGhlc2UgYnV0CisgICAgICAgaW5zdGVhZCBvZiByYWlzZXMgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGludGVycHJldGVyCisgICAgICAgd2lsbCBvZnRlbiBpbXBsaWNpdGx5IHJlcXVlc3QgdGhlc2UgbWV0aG9kcywgYW5kIGdldHMgKnZlcnkqIGNvbmZ1c2VkIHRvCisgICAgICAgZ2V0IGEgbmV3IE1vY2sgb2JqZWN0IHdoZW4gaXQgZXhwZWN0cyBhIG1hZ2ljIG1ldGhvZC4gSWYgeW91IG5lZWQgbWFnaWMKKyAgICAgICBtZXRob2Qgc3VwcG9ydCBzZWUgOnJlZjpgbWFnaWMgbWV0aG9kcyA8bWFnaWMtbWV0aG9kcz5gLgorCisKK1RoZSBwYXRjaGVycworPT09PT09PT09PT09CisKK1RoZSBwYXRjaCBkZWNvcmF0b3JzIGFyZSB1c2VkIGZvciBwYXRjaGluZyBvYmplY3RzIG9ubHkgd2l0aGluIHRoZSBzY29wZSBvZgordGhlIGZ1bmN0aW9uIHRoZXkgZGVjb3JhdGUuIFRoZXkgYXV0b21hdGljYWxseSBoYW5kbGUgdGhlIHVucGF0Y2hpbmcgZm9yIHlvdSwKK2V2ZW4gaWYgZXhjZXB0aW9ucyBhcmUgcmFpc2VkLiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGNhbiBhbHNvIGJlIHVzZWQgaW4gd2l0aAorc3RhdGVtZW50cyBvciBhcyBjbGFzcyBkZWNvcmF0b3JzLgorCisKK3BhdGNoCistLS0tLQorCisuLiBub3RlOjoKKworICAgIGBwYXRjaGAgaXMgc3RyYWlnaHRmb3J3YXJkIHRvIHVzZS4gVGhlIGtleSBpcyB0byBkbyB0aGUgcGF0Y2hpbmcgaW4gdGhlCisgICAgcmlnaHQgbmFtZXNwYWNlLiBTZWUgdGhlIHNlY3Rpb24gYHdoZXJlIHRvIHBhdGNoYF8uCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2godGFyZ2V0LCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIGBwYXRjaGAgYWN0cyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEluc2lkZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24gb3Igd2l0aCBzdGF0ZW1lbnQsIHRoZSBgdGFyZ2V0YAorICAgIGlzIHBhdGNoZWQgd2l0aCBhIGBuZXdgIG9iamVjdC4gV2hlbiB0aGUgZnVuY3Rpb24vd2l0aCBzdGF0ZW1lbnQgZXhpdHMKKyAgICB0aGUgcGF0Y2ggaXMgdW5kb25lLgorCisgICAgSWYgYG5ld2AgaXMgb21pdHRlZCwgdGhlbiB0aGUgdGFyZ2V0IGlzIHJlcGxhY2VkIHdpdGggYQorICAgIDpjbGFzczpgTWFnaWNNb2NrYC4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgZGVjb3JhdG9yIGFuZCBgbmV3YCBpcworICAgIG9taXR0ZWQsIHRoZSBjcmVhdGVkIG1vY2sgaXMgcGFzc2VkIGluIGFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvIHRoZQorICAgIGRlY29yYXRlZCBmdW5jdGlvbi4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRoZSBjcmVhdGVkCisgICAgbW9jayBpcyByZXR1cm5lZCBieSB0aGUgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHRhcmdldGAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIGAncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lJ2AuIFRoZQorICAgIGB0YXJnZXRgIGlzIGltcG9ydGVkIGFuZCB0aGUgc3BlY2lmaWVkIG9iamVjdCByZXBsYWNlZCB3aXRoIHRoZSBgbmV3YAorICAgIG9iamVjdCwgc28gdGhlIGB0YXJnZXRgIG11c3QgYmUgaW1wb3J0YWJsZSBmcm9tIHRoZSBlbnZpcm9ubWVudCB5b3UgYXJlCisgICAgY2FsbGluZyBgcGF0Y2hgIGZyb20uIFRoZSB0YXJnZXQgaXMgaW1wb3J0ZWQgd2hlbiB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCisgICAgaXMgZXhlY3V0ZWQsIG5vdCBhdCBkZWNvcmF0aW9uIHRpbWUuCisKKyAgICBUaGUgYHNwZWNgIGFuZCBgc3BlY19zZXRgIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGBNYWdpY01vY2tgCisgICAgaWYgcGF0Y2ggaXMgY3JlYXRpbmcgb25lIGZvciB5b3UuCisKKyAgICBJbiBhZGRpdGlvbiB5b3UgY2FuIHBhc3MgYHNwZWM9VHJ1ZWAgb3IgYHNwZWNfc2V0PVRydWVgLCB3aGljaCBjYXVzZXMKKyAgICBwYXRjaCB0byBwYXNzIGluIHRoZSBvYmplY3QgYmVpbmcgbW9ja2VkIGFzIHRoZSBzcGVjL3NwZWNfc2V0IG9iamVjdC4KKworICAgIGBuZXdfY2FsbGFibGVgIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBjbGFzcywgb3IgY2FsbGFibGUgb2JqZWN0LAorICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY3JlYXRlIHRoZSBgbmV3YCBvYmplY3QuIEJ5IGRlZmF1bHQgYE1hZ2ljTW9ja2AgaXMKKyAgICB1c2VkLgorCisgICAgQSBtb3JlIHBvd2VyZnVsIGZvcm0gb2YgYHNwZWNgIGlzIGBhdXRvc3BlY2AuIElmIHlvdSBzZXQgYGF1dG9zcGVjPVRydWVgCisgICAgdGhlbiB0aGUgbW9jayB3aXRoIGJlIGNyZWF0ZWQgd2l0aCBhIHNwZWMgZnJvbSB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLgorICAgIEFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrIHdpbGwgYWxzbyBoYXZlIHRoZSBzcGVjIG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgYXR0cmlidXRlIG9mIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuIE1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBiZWluZyBtb2NrZWQKKyAgICB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQgYW5kIHdpbGwgcmFpc2UgYSBgVHlwZUVycm9yYCBpZiB0aGV5IGFyZQorICAgIGNhbGxlZCB3aXRoIHRoZSB3cm9uZyBzaWduYXR1cmUuIEZvciBtb2NrcworICAgIHJlcGxhY2luZyBhIGNsYXNzLCB0aGVpciByZXR1cm4gdmFsdWUgKHRoZSAnaW5zdGFuY2UnKSB3aWxsIGhhdmUgdGhlIHNhbWUKKyAgICBzcGVjIGFzIHRoZSBjbGFzcy4gU2VlIHRoZSA6ZnVuYzpgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbiBhbmQKKyAgICA6cmVmOmBhdXRvLXNwZWNjaW5nYC4KKworICAgIEluc3RlYWQgb2YgYGF1dG9zcGVjPVRydWVgIHlvdSBjYW4gcGFzcyBgYXV0b3NwZWM9c29tZV9vYmplY3RgIHRvIHVzZSBhbgorICAgIGFyYml0cmFyeSBvYmplY3QgYXMgdGhlIHNwZWMgaW5zdGVhZCBvZiB0aGUgb25lIGJlaW5nIHJlcGxhY2VkLgorCisgICAgQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgZmFpbCB0byByZXBsYWNlIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdC4gSWYKKyAgICB5b3UgcGFzcyBpbiBgY3JlYXRlPVRydWVgLCBhbmQgdGhlIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LCBwYXRjaCB3aWxsCisgICAgY3JlYXRlIHRoZSBhdHRyaWJ1dGUgZm9yIHlvdSB3aGVuIHRoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kCisgICAgZGVsZXRlIGl0IGFnYWluIGFmdGVyd2FyZHMuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3RzIGFnYWluc3QKKyAgICBhdHRyaWJ1dGVzIHRoYXQgeW91ciBwcm9kdWN0aW9uIGNvZGUgY3JlYXRlcyBhdCBydW50aW1lLiBJdCBpcyBvZmYgYnkgYnkKKyAgICBkZWZhdWx0IGJlY2F1c2UgaXQgY2FuIGJlIGRhbmdlcm91cy4gV2l0aCBpdCBzd2l0Y2hlZCBvbiB5b3UgY2FuIHdyaXRlCisgICAgcGFzc2luZyB0ZXN0cyBhZ2FpbnN0IEFQSXMgdGhhdCBkb24ndCBhY3R1YWxseSBleGlzdCEKKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgYFRlc3RDYXNlYCBjbGFzcyBkZWNvcmF0b3IuIEl0IHdvcmtzIGJ5CisgICAgZGVjb3JhdGluZyBlYWNoIHRlc3QgbWV0aG9kIGluIHRoZSBjbGFzcy4gVGhpcyByZWR1Y2VzIHRoZSBib2lsZXJwbGF0ZQorICAgIGNvZGUgd2hlbiB5b3VyIHRlc3QgbWV0aG9kcyBzaGFyZSBhIGNvbW1vbiBwYXRjaGluZ3Mgc2V0LiBgcGF0Y2hgIGZpbmRzCisgICAgdGVzdHMgYnkgbG9va2luZyBmb3IgbWV0aG9kIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBgcGF0Y2guVEVTVF9QUkVGSVhgLgorICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBgdGVzdGAsIHdoaWNoIG1hdGNoZXMgdGhlIHdheSBgdW5pdHRlc3RgIGZpbmRzIHRlc3RzLgorICAgIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwcmVmaXggYnkgc2V0dGluZyBgcGF0Y2guVEVTVF9QUkVGSVhgLgorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHdpdGggdGhlIHdpdGggc3RhdGVtZW50LiBIZXJlIHRoZQorICAgIHBhdGNoaW5nIGFwcGxpZXMgdG8gdGhlIGluZGVudGVkIGJsb2NrIGFmdGVyIHRoZSB3aXRoIHN0YXRlbWVudC4gSWYgeW91CisgICAgdXNlICJhcyIgdGhlbiB0aGUgcGF0Y2hlZCBvYmplY3Qgd2lsbCBiZSBib3VuZCB0byB0aGUgbmFtZSBhZnRlciB0aGUKKyAgICAiYXMiOyB2ZXJ5IHVzZWZ1bCBpZiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBvYmplY3QgZm9yIHlvdS4KKworICAgIGBwYXRjaGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlIHBhc3NlZCB0bworICAgIHRoZSBgTW9ja2AgKG9yIGBuZXdfY2FsbGFibGVgKSBvbiBjb25zdHJ1Y3Rpb24uCisKKyAgICBgcGF0Y2guZGljdCguLi4pYCwgYHBhdGNoLm11bHRpcGxlKC4uLilgIGFuZCBgcGF0Y2gub2JqZWN0KC4uLilgIGFyZQorICAgIGF2YWlsYWJsZSBmb3IgYWx0ZXJuYXRlIHVzZS1jYXNlcy4KKworYHBhdGNoYCBhcyBmdW5jdGlvbiBkZWNvcmF0b3IsIGNyZWF0aW5nIHRoZSBtb2NrIGZvciB5b3UgYW5kIHBhc3NpbmcgaXQgaW50bwordGhlIGRlY29yYXRlZCBmdW5jdGlvbjoKKworICAgID4+PiBAcGF0Y2goJ19fbWFpbl9fLlNvbWVDbGFzcycpCisgICAgLi4uIGRlZiBmdW5jdGlvbihub3JtYWxfYXJndW1lbnQsIG1vY2tfY2xhc3MpOgorICAgIC4uLiAgICAgcHJpbnQobW9ja19jbGFzcyBpcyBTb21lQ2xhc3MpCisgICAgLi4uCisgICAgPj4+IGZ1bmN0aW9uKE5vbmUpCisgICAgVHJ1ZQorCitQYXRjaGluZyBhIGNsYXNzIHJlcGxhY2VzIHRoZSBjbGFzcyB3aXRoIGEgYE1hZ2ljTW9ja2AgKmluc3RhbmNlKi4gSWYgdGhlCitjbGFzcyBpcyBpbnN0YW50aWF0ZWQgaW4gdGhlIGNvZGUgdW5kZXIgdGVzdCB0aGVuIGl0IHdpbGwgYmUgdGhlCis6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBvZiB0aGUgbW9jayB0aGF0IHdpbGwgYmUgdXNlZC4KKworSWYgdGhlIGNsYXNzIGlzIGluc3RhbnRpYXRlZCBtdWx0aXBsZSB0aW1lcyB5b3UgY291bGQgdXNlCis6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIHRvIHJldHVybiBhIG5ldyBtb2NrIGVhY2ggdGltZS4gQWx0ZXJuYXRpdmVseSB5b3UKK2NhbiBzZXQgdGhlIGByZXR1cm5fdmFsdWVgIHRvIGJlIGFueXRoaW5nIHlvdSB3YW50LgorCitUbyBjb25maWd1cmUgcmV0dXJuIHZhbHVlcyBvbiBtZXRob2RzIG9mICppbnN0YW5jZXMqIG9uIHRoZSBwYXRjaGVkIGNsYXNzCit5b3UgbXVzdCBkbyB0aGlzIG9uIHRoZSBgcmV0dXJuX3ZhbHVlYC4gRm9yIGV4YW1wbGU6CisKKyAgICA+Pj4gY2xhc3MgQ2xhc3Mob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcGFzcworICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5DbGFzcycpIGFzIE1vY2tDbGFzczoKKyAgICAuLi4gICAgIGluc3RhbmNlID0gTW9ja0NsYXNzLnJldHVybl92YWx1ZQorICAgIC4uLiAgICAgaW5zdGFuY2UubWV0aG9kLnJldHVybl92YWx1ZSA9ICdmb28nCisgICAgLi4uICAgICBhc3NlcnQgQ2xhc3MoKSBpcyBpbnN0YW5jZQorICAgIC4uLiAgICAgYXNzZXJ0IENsYXNzKCkubWV0aG9kKCkgPT0gJ2ZvbycKKyAgICAuLi4KKworSWYgeW91IHVzZSBgc3BlY2Agb3IgYHNwZWNfc2V0YCBhbmQgYHBhdGNoYCBpcyByZXBsYWNpbmcgYSAqY2xhc3MqLCB0aGVuIHRoZQorcmV0dXJuIHZhbHVlIG9mIHRoZSBjcmVhdGVkIG1vY2sgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuCisKKyAgICA+Pj4gT3JpZ2luYWwgPSBDbGFzcworICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ19fbWFpbl9fLkNsYXNzJywgc3BlYz1UcnVlKQorICAgID4+PiBNb2NrQ2xhc3MgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICA+Pj4gaW5zdGFuY2UgPSBNb2NrQ2xhc3MoKQorICAgID4+PiBhc3NlcnQgaXNpbnN0YW5jZShpbnN0YW5jZSwgT3JpZ2luYWwpCisgICAgPj4+IHBhdGNoZXIuc3RvcCgpCisKK1RoZSBgbmV3X2NhbGxhYmxlYCBhcmd1bWVudCBpcyB1c2VmdWwgd2hlcmUgeW91IHdhbnQgdG8gdXNlIGFuIGFsdGVybmF0aXZlCitjbGFzcyB0byB0aGUgZGVmYXVsdCA6Y2xhc3M6YE1hZ2ljTW9ja2AgZm9yIHRoZSBjcmVhdGVkIG1vY2suIEZvciBleGFtcGxlLCBpZgoreW91IHdhbnRlZCBhIDpjbGFzczpgTm9uQ2FsbGFibGVNb2NrYCB0byBiZSB1c2VkOgorCisgICAgPj4+IHRoaW5nID0gb2JqZWN0KCkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18udGhpbmcnLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNb2NrKSBhcyBtb2NrX3RoaW5nOgorICAgIC4uLiAgICAgYXNzZXJ0IHRoaW5nIGlzIG1vY2tfdGhpbmcKKyAgICAuLi4gICAgIHRoaW5nKCkKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdOb25DYWxsYWJsZU1vY2snIG9iamVjdCBpcyBub3QgY2FsbGFibGUKKworQW5vdGhlciB1c2UgY2FzZSBtaWdodCBiZSB0byByZXBsYWNlIGFuIG9iamVjdCB3aXRoIGEgYFN0cmluZ0lPYCBpbnN0YW5jZToKKworICAgID4+PiBmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworICAgID4+PiBkZWYgZm9vKCk6CisgICAgLi4uICAgICBwcmludCAnU29tZXRoaW5nJworICAgIC4uLgorICAgID4+PiBAcGF0Y2goJ3N5cy5zdGRvdXQnLCBuZXdfY2FsbGFibGU9U3RyaW5nSU8pCisgICAgLi4uIGRlZiB0ZXN0KG1vY2tfc3Rkb3V0KToKKyAgICAuLi4gICAgIGZvbygpCisgICAgLi4uICAgICBhc3NlcnQgbW9ja19zdGRvdXQuZ2V0dmFsdWUoKSA9PSAnU29tZXRoaW5nXG4nCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitXaGVuIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIGZvciB5b3UsIGl0IGlzIGNvbW1vbiB0aGF0IHRoZSBmaXJzdCB0aGluZworeW91IG5lZWQgdG8gZG8gaXMgdG8gY29uZmlndXJlIHRoZSBtb2NrLiBTb21lIG9mIHRoYXQgY29uZmlndXJhdGlvbiBjYW4gYmUgZG9uZQoraW4gdGhlIGNhbGwgdG8gcGF0Y2guIEFueSBhcmJpdHJhcnkga2V5d29yZHMgeW91IHBhc3MgaW50byB0aGUgY2FsbCB3aWxsIGJlCit1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBjcmVhdGVkIG1vY2s6CisKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy50aGluZycsIGZpcnN0PSdvbmUnLCBzZWNvbmQ9J3R3bycpCisgICAgPj4+IG1vY2tfdGhpbmcgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICA+Pj4gbW9ja190aGluZy5maXJzdAorICAgICdvbmUnCisgICAgPj4+IG1vY2tfdGhpbmcuc2Vjb25kCisgICAgJ3R3bycKKworQXMgd2VsbCBhcyBhdHRyaWJ1dGVzIG9uIHRoZSBjcmVhdGVkIG1vY2sgYXR0cmlidXRlcywgbGlrZSB0aGUKKzphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIGFuZCA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgLCBvZiBjaGlsZCBtb2NrcyBjYW4KK2Fsc28gYmUgY29uZmlndXJlZC4gVGhlc2UgYXJlbid0IHN5bnRhY3RpY2FsbHkgdmFsaWQgdG8gcGFzcyBpbiBkaXJlY3RseSBhcwora2V5d29yZCBhcmd1bWVudHMsIGJ1dCBhIGRpY3Rpb25hcnkgd2l0aCB0aGVzZSBhcyBrZXlzIGNhbiBzdGlsbCBiZSBleHBhbmRlZAoraW50byBhIGBwYXRjaGAgY2FsbCB1c2luZyBgKipgOgorCisgICAgPj4+IGNvbmZpZyA9IHsnbWV0aG9kLnJldHVybl92YWx1ZSc6IDMsICdvdGhlci5zaWRlX2VmZmVjdCc6IEtleUVycm9yfQorICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ19fbWFpbl9fLnRoaW5nJywgKipjb25maWcpCisgICAgPj4+IG1vY2tfdGhpbmcgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICA+Pj4gbW9ja190aGluZy5tZXRob2QoKQorICAgIDMKKyAgICA+Pj4gbW9ja190aGluZy5vdGhlcigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgS2V5RXJyb3IKKworCitwYXRjaC5vYmplY3QKKy0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IHBhdGNoLm9iamVjdCh0YXJnZXQsIGF0dHJpYnV0ZSwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLCBzcGVjX3NldD1Ob25lLCBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MpCisKKyAgICBwYXRjaCB0aGUgbmFtZWQgbWVtYmVyIChgYXR0cmlidXRlYCkgb24gYW4gb2JqZWN0IChgdGFyZ2V0YCkgd2l0aCBhIG1vY2sKKyAgICBvYmplY3QuCisKKyAgICBgcGF0Y2gub2JqZWN0YCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEFyZ3VtZW50cyBgbmV3YCwgYHNwZWNgLCBgY3JlYXRlYCwgYHNwZWNfc2V0YCwgYGF1dG9zcGVjYCBhbmQKKyAgICBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIExpa2UgYHBhdGNoYCwKKyAgICBgcGF0Y2gub2JqZWN0YCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBtb2NrCisgICAgb2JqZWN0IGl0IGNyZWF0ZXMuCisKKyAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm9iamVjdGAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKworWW91IGNhbiBlaXRoZXIgY2FsbCBgcGF0Y2gub2JqZWN0YCB3aXRoIHRocmVlIGFyZ3VtZW50cyBvciB0d28gYXJndW1lbnRzLiBUaGUKK3RocmVlIGFyZ3VtZW50IGZvcm0gdGFrZXMgdGhlIG9iamVjdCB0byBiZSBwYXRjaGVkLCB0aGUgYXR0cmlidXRlIG5hbWUgYW5kIHRoZQorb2JqZWN0IHRvIHJlcGxhY2UgdGhlIGF0dHJpYnV0ZSB3aXRoLgorCitXaGVuIGNhbGxpbmcgd2l0aCB0aGUgdHdvIGFyZ3VtZW50IGZvcm0geW91IG9taXQgdGhlIHJlcGxhY2VtZW50IG9iamVjdCwgYW5kIGEKK21vY2sgaXMgY3JlYXRlZCBmb3IgeW91IGFuZCBwYXNzZWQgaW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gdGhlIGRlY29yYXRlZAorZnVuY3Rpb246CisKKyAgICA+Pj4gQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19tZXRob2QnKQorICAgIC4uLiBkZWYgdGVzdChtb2NrX21ldGhvZCk6CisgICAgLi4uICAgICBTb21lQ2xhc3MuY2xhc3NfbWV0aG9kKDMpCisgICAgLi4uICAgICBtb2NrX21ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK2BzcGVjYCwgYGNyZWF0ZWAgYW5kIHRoZSBvdGhlciBhcmd1bWVudHMgdG8gYHBhdGNoLm9iamVjdGAgaGF2ZSB0aGUgc2FtZQorbWVhbmluZyBhcyB0aGV5IGRvIGZvciBgcGF0Y2hgLgorCisKK3BhdGNoLmRpY3QKKy0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBwYXRjaC5kaWN0KGluX2RpY3QsIHZhbHVlcz0oKSwgY2xlYXI9RmFsc2UsICoqa3dhcmdzKQorCisgICAgUGF0Y2ggYSBkaWN0aW9uYXJ5LCBvciBkaWN0aW9uYXJ5IGxpa2Ugb2JqZWN0LCBhbmQgcmVzdG9yZSB0aGUgZGljdGlvbmFyeQorICAgIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSBhZnRlciB0aGUgdGVzdC4KKworICAgIGBpbl9kaWN0YCBjYW4gYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbWFwcGluZyBsaWtlIGNvbnRhaW5lci4gSWYgaXQgaXMgYQorICAgIG1hcHBpbmcgdGhlbiBpdCBtdXN0IGF0IGxlYXN0IHN1cHBvcnQgZ2V0dGluZywgc2V0dGluZyBhbmQgZGVsZXRpbmcgaXRlbXMKKyAgICBwbHVzIGl0ZXJhdGluZyBvdmVyIGtleXMuCisKKyAgICBgaW5fZGljdGAgY2FuIGFsc28gYmUgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgZGljdGlvbmFyeSwgd2hpY2gKKyAgICB3aWxsIHRoZW4gYmUgZmV0Y2hlZCBieSBpbXBvcnRpbmcgaXQuCisKKyAgICBgdmFsdWVzYCBjYW4gYmUgYSBkaWN0aW9uYXJ5IG9mIHZhbHVlcyB0byBzZXQgaW4gdGhlIGRpY3Rpb25hcnkuIGB2YWx1ZXNgCisgICAgY2FuIGFsc28gYmUgYW4gaXRlcmFibGUgb2YgYChrZXksIHZhbHVlKWAgcGFpcnMuCisKKyAgICBJZiBgY2xlYXJgIGlzIFRydWUgdGhlbiB0aGUgZGljdGlvbmFyeSB3aWxsIGJlIGNsZWFyZWQgYmVmb3JlIHRoZSBuZXcKKyAgICB2YWx1ZXMgYXJlIHNldC4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdG8gc2V0CisgICAgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5LgorCisgICAgYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCBkZWNvcmF0b3Igb3IgY2xhc3MKKyAgICBkZWNvcmF0b3IuIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2guZGljdGAgaG9ub3VycworICAgIGBwYXRjaC5URVNUX1BSRUZJWGAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKworYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIHRvIGFkZCBtZW1iZXJzIHRvIGEgZGljdGlvbmFyeSwgb3Igc2ltcGx5IGxldCBhIHRlc3QKK2NoYW5nZSBhIGRpY3Rpb25hcnksIGFuZCBlbnN1cmUgdGhlIGRpY3Rpb25hcnkgaXMgcmVzdG9yZWQgd2hlbiB0aGUgdGVzdAorZW5kcy4KKworICAgID4+PiBmb28gPSB7fQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J25ld2tleSc6ICduZXd2YWx1ZSd9KToKKyAgICAuLi4gICAgIGFzc2VydCBmb28gPT0geyduZXdrZXknOiAnbmV3dmFsdWUnfQorICAgIC4uLgorICAgID4+PiBhc3NlcnQgZm9vID09IHt9CisKKyAgICA+Pj4gaW1wb3J0IG9zCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnb3MuZW52aXJvbicsIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30pOgorICAgIC4uLiAgICAgcHJpbnQgb3MuZW52aXJvblsnbmV3a2V5J10KKyAgICAuLi4KKyAgICBuZXd2YWx1ZQorICAgID4+PiBhc3NlcnQgJ25ld2tleScgbm90IGluIG9zLmVudmlyb24KKworS2V5d29yZHMgY2FuIGJlIHVzZWQgaW4gdGhlIGBwYXRjaC5kaWN0YCBjYWxsIHRvIHNldCB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnk6CisKKyAgICA+Pj4gbXltb2R1bGUgPSBNYWdpY01vY2soKQorICAgID4+PiBteW1vZHVsZS5mdW5jdGlvbi5yZXR1cm5fdmFsdWUgPSAnZmlzaCcKKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIG15bW9kdWxlPW15bW9kdWxlKToKKyAgICAuLi4gICAgIGltcG9ydCBteW1vZHVsZQorICAgIC4uLiAgICAgbXltb2R1bGUuZnVuY3Rpb24oJ3NvbWUnLCAnYXJncycpCisgICAgLi4uCisgICAgJ2Zpc2gnCisKK2BwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCB3aXRoIGRpY3Rpb25hcnkgbGlrZSBvYmplY3RzIHRoYXQgYXJlbid0IGFjdHVhbGx5CitkaWN0aW9uYXJpZXMuIEF0IHRoZSB2ZXJ5IG1pbmltdW0gdGhleSBtdXN0IHN1cHBvcnQgaXRlbSBnZXR0aW5nLCBzZXR0aW5nLAorZGVsZXRpbmcgYW5kIGVpdGhlciBpdGVyYXRpb24gb3IgbWVtYmVyc2hpcCB0ZXN0LiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQorbWFnaWMgbWV0aG9kcyBgX19nZXRpdGVtX19gLCBgX19zZXRpdGVtX19gLCBgX19kZWxpdGVtX19gIGFuZCBlaXRoZXIKK2BfX2l0ZXJfX2Agb3IgYF9fY29udGFpbnNfX2AuCisKKyAgICA+Pj4gY2xhc3MgQ29udGFpbmVyKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi52YWx1ZXMgPSB7fQorICAgIC4uLiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWUpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlc1tuYW1lXQorICAgIC4uLiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAuLi4gICAgICAgICBzZWxmLnZhbHVlc1tuYW1lXSA9IHZhbHVlCisgICAgLi4uICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgZGVsIHNlbGYudmFsdWVzW25hbWVdCisgICAgLi4uICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi52YWx1ZXMpCisgICAgLi4uCisgICAgPj4+IHRoaW5nID0gQ29udGFpbmVyKCkKKyAgICA+Pj4gdGhpbmdbJ29uZSddID0gMQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QodGhpbmcsIG9uZT0yLCB0d289Myk6CisgICAgLi4uICAgICBhc3NlcnQgdGhpbmdbJ29uZSddID09IDIKKyAgICAuLi4gICAgIGFzc2VydCB0aGluZ1sndHdvJ10gPT0gMworICAgIC4uLgorICAgID4+PiBhc3NlcnQgdGhpbmdbJ29uZSddID09IDEKKyAgICA+Pj4gYXNzZXJ0IGxpc3QodGhpbmcpID09IFsnb25lJ10KKworCitwYXRjaC5tdWx0aXBsZQorLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBwYXRjaC5tdWx0aXBsZSh0YXJnZXQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLCBzcGVjX3NldD1Ob25lLCBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MpCisKKyAgICBQZXJmb3JtIG11bHRpcGxlIHBhdGNoZXMgaW4gYSBzaW5nbGUgY2FsbC4gSXQgdGFrZXMgdGhlIG9iamVjdCB0byBiZQorICAgIHBhdGNoZWQgKGVpdGhlciBhcyBhbiBvYmplY3Qgb3IgYSBzdHJpbmcgdG8gZmV0Y2ggdGhlIG9iamVjdCBieSBpbXBvcnRpbmcpCisgICAgYW5kIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgcGF0Y2hlczo6CisKKyAgICAgICAgd2l0aCBwYXRjaC5tdWx0aXBsZShzZXR0aW5ncywgRklSU1RfUEFUQ0g9J29uZScsIFNFQ09ORF9QQVRDSD0ndHdvJyk6CisgICAgICAgICAgICAuLi4KKworICAgIFVzZSA6ZGF0YTpgREVGQVVMVGAgYXMgdGhlIHZhbHVlIGlmIHlvdSB3YW50IGBwYXRjaC5tdWx0aXBsZWAgdG8gY3JlYXRlCisgICAgbW9ja3MgZm9yIHlvdS4gSW4gdGhpcyBjYXNlIHRoZSBjcmVhdGVkIG1vY2tzIGFyZSBwYXNzZWQgaW50byBhIGRlY29yYXRlZAorICAgIGZ1bmN0aW9uIGJ5IGtleXdvcmQsIGFuZCBhIGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQgd2hlbiBgcGF0Y2gubXVsdGlwbGVgIGlzCisgICAgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKworICAgIGBwYXRjaC5tdWx0aXBsZWAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBUaGUgYXJndW1lbnRzIGBzcGVjYCwgYHNwZWNfc2V0YCwgYGNyZWF0ZWAsIGBhdXRvc3BlY2AgYW5kCisgICAgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBUaGVzZSBhcmd1bWVudHMgd2lsbAorICAgIGJlIGFwcGxpZWQgdG8gKmFsbCogcGF0Y2hlcyBkb25lIGJ5IGBwYXRjaC5tdWx0aXBsZWAuCisKKyAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm11bHRpcGxlYCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKKyAgICBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorCitJZiB5b3Ugd2FudCBgcGF0Y2gubXVsdGlwbGVgIHRvIGNyZWF0ZSBtb2NrcyBmb3IgeW91LCB0aGVuIHlvdSBjYW4gdXNlCis6ZGF0YTpgREVGQVVMVGAgYXMgdGhlIHZhbHVlLiBJZiB5b3UgdXNlIGBwYXRjaC5tdWx0aXBsZWAgYXMgYSBkZWNvcmF0b3IKK3RoZW4gdGhlIGNyZWF0ZWQgbW9ja3MgYXJlIHBhc3NlZCBpbnRvIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gYnkga2V5d29yZC4KKworICAgID4+PiB0aGluZyA9IG9iamVjdCgpCisgICAgPj4+IG90aGVyID0gb2JqZWN0KCkKKworICAgID4+PiBAcGF0Y2gubXVsdGlwbGUoJ19fbWFpbl9fJywgdGhpbmc9REVGQVVMVCwgb3RoZXI9REVGQVVMVCkKKyAgICAuLi4gZGVmIHRlc3RfZnVuY3Rpb24odGhpbmcsIG90aGVyKToKKyAgICAuLi4gICAgIGFzc2VydCBpc2luc3RhbmNlKHRoaW5nLCBNYWdpY01vY2spCisgICAgLi4uICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgTWFnaWNNb2NrKQorICAgIC4uLgorICAgID4+PiB0ZXN0X2Z1bmN0aW9uKCkKKworYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgbmVzdGVkIHdpdGggb3RoZXIgYHBhdGNoYCBkZWNvcmF0b3JzLCBidXQgcHV0IGFyZ3VtZW50cworcGFzc2VkIGJ5IGtleXdvcmQgKmFmdGVyKiBhbnkgb2YgdGhlIHN0YW5kYXJkIGFyZ3VtZW50cyBjcmVhdGVkIGJ5IGBwYXRjaGA6CisKKyAgICA+Pj4gQHBhdGNoKCdzeXMuZXhpdCcpCisgICAgLi4uIEBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKQorICAgIC4uLiBkZWYgdGVzdF9mdW5jdGlvbihtb2NrX2V4aXQsIG90aGVyLCB0aGluZyk6CisgICAgLi4uICAgICBhc3NlcnQgJ290aGVyJyBpbiByZXByKG90aGVyKQorICAgIC4uLiAgICAgYXNzZXJ0ICd0aGluZycgaW4gcmVwcih0aGluZykKKyAgICAuLi4gICAgIGFzc2VydCAnZXhpdCcgaW4gcmVwcihtb2NrX2V4aXQpCisgICAgLi4uCisgICAgPj4+IHRlc3RfZnVuY3Rpb24oKQorCitJZiBgcGF0Y2gubXVsdGlwbGVgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUKK2NvbnRleHQgbWFuZ2VyIGlzIGEgZGljdGlvbmFyeSB3aGVyZSBjcmVhdGVkIG1vY2tzIGFyZSBrZXllZCBieSBuYW1lOgorCisgICAgPj4+IHdpdGggcGF0Y2gubXVsdGlwbGUoJ19fbWFpbl9fJywgdGhpbmc9REVGQVVMVCwgb3RoZXI9REVGQVVMVCkgYXMgdmFsdWVzOgorICAgIC4uLiAgICAgYXNzZXJ0ICdvdGhlcicgaW4gcmVwcih2YWx1ZXNbJ290aGVyJ10pCisgICAgLi4uICAgICBhc3NlcnQgJ3RoaW5nJyBpbiByZXByKHZhbHVlc1sndGhpbmcnXSkKKyAgICAuLi4gICAgIGFzc2VydCB2YWx1ZXNbJ3RoaW5nJ10gaXMgdGhpbmcKKyAgICAuLi4gICAgIGFzc2VydCB2YWx1ZXNbJ290aGVyJ10gaXMgb3RoZXIKKyAgICAuLi4KKworCisuLiBfc3RhcnQtYW5kLXN0b3A6CisKK3BhdGNoIG1ldGhvZHM6IHN0YXJ0IGFuZCBzdG9wCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgdGhlIHBhdGNoZXJzIGhhdmUgYHN0YXJ0YCBhbmQgYHN0b3BgIG1ldGhvZHMuIFRoZXNlIG1ha2UgaXQgc2ltcGxlciB0byBkbworcGF0Y2hpbmcgaW4gYHNldFVwYCBtZXRob2RzIG9yIHdoZXJlIHlvdSB3YW50IHRvIGRvIG11bHRpcGxlIHBhdGNoZXMgd2l0aG91dAorbmVzdGluZyBkZWNvcmF0b3JzIG9yIHdpdGggc3RhdGVtZW50cy4KKworVG8gdXNlIHRoZW0gY2FsbCBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBvciBgcGF0Y2guZGljdGAgYXMgbm9ybWFsIGFuZCBrZWVwIGEKK3JlZmVyZW5jZSB0byB0aGUgcmV0dXJuZWQgYHBhdGNoZXJgIG9iamVjdC4gWW91IGNhbiB0aGVuIGNhbGwgYHN0YXJ0YCB0byBwdXQKK3RoZSBwYXRjaCBpbiBwbGFjZSBhbmQgYHN0b3BgIHRvIHVuZG8gaXQuCisKK0lmIHlvdSBhcmUgdXNpbmcgYHBhdGNoYCB0byBjcmVhdGUgYSBtb2NrIGZvciB5b3UgdGhlbiBpdCB3aWxsIGJlIHJldHVybmVkIGJ5Cit0aGUgY2FsbCB0byBgcGF0Y2hlci5zdGFydGAuCisKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUnKQorICAgID4+PiBmcm9tIHBhY2thZ2UgaW1wb3J0IG1vZHVsZQorICAgID4+PiBvcmlnaW5hbCA9IG1vZHVsZS5DbGFzc05hbWUKKyAgICA+Pj4gbmV3X21vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbm90IG9yaWdpbmFsCisgICAgPj4+IGFzc2VydCBtb2R1bGUuQ2xhc3NOYW1lIGlzIG5ld19tb2NrCisgICAgPj4+IHBhdGNoZXIuc3RvcCgpCisgICAgPj4+IGFzc2VydCBtb2R1bGUuQ2xhc3NOYW1lIGlzIG9yaWdpbmFsCisgICAgPj4+IGFzc2VydCBtb2R1bGUuQ2xhc3NOYW1lIGlzIG5vdCBuZXdfbW9jaworCisKK0EgdHlwaWNhbCB1c2UgY2FzZSBmb3IgdGhpcyBtaWdodCBiZSBmb3IgZG9pbmcgbXVsdGlwbGUgcGF0Y2hlcyBpbiB0aGUgYHNldFVwYAorbWV0aG9kIG9mIGEgYFRlc3RDYXNlYDoKKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjEgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MxJykKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIyID0gcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzMicpCisgICAgLi4uICAgICAgICAgc2VsZi5Nb2NrQ2xhc3MxID0gc2VsZi5wYXRjaGVyMS5zdGFydCgpCisgICAgLi4uICAgICAgICAgc2VsZi5Nb2NrQ2xhc3MyID0gc2VsZi5wYXRjaGVyMi5zdGFydCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyMS5zdG9wKCkKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIyLnN0b3AoKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYpOgorICAgIC4uLiAgICAgICAgIGFzc2VydCBwYWNrYWdlLm1vZHVsZS5DbGFzczEgaXMgc2VsZi5Nb2NrQ2xhc3MxCisgICAgLi4uICAgICAgICAgYXNzZXJ0IHBhY2thZ2UubW9kdWxlLkNsYXNzMiBpcyBzZWxmLk1vY2tDbGFzczIKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnJ1bigpCisKKy4uIGNhdXRpb246OgorCisgICAgSWYgeW91IHVzZSB0aGlzIHRlY2huaXF1ZSB5b3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgcGF0Y2hpbmcgaXMgInVuZG9uZSIgYnkKKyAgICBjYWxsaW5nIGBzdG9wYC4gVGhpcyBjYW4gYmUgZmlkZGxpZXIgdGhhbiB5b3UgbWlnaHQgdGhpbmssIGJlY2F1c2UgaWYgYW4KKyAgICBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRoZSBgYHNldFVwYGAgdGhlbiBgYHRlYXJEb3duYGAgaXMgbm90IGNhbGxlZC4KKyAgICA6bWV0aDpgdW5pdHRlc3QuVGVzdENhc2UuYWRkQ2xlYW51cGAgbWFrZXMgdGhpcyBlYXNpZXI6CisKKyAgICAgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgICAgIC4uLiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICBwYXRjaGVyID0gcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzJykKKyAgICAgICAgLi4uICAgICAgICAgc2VsZi5Nb2NrQ2xhc3MgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgLi4uICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKyAgICAgICAgLi4uCisgICAgICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICBhc3NlcnQgcGFja2FnZS5tb2R1bGUuQ2xhc3MgaXMgc2VsZi5Nb2NrQ2xhc3MKKyAgICAgICAgLi4uCisKKyAgICBBcyBhbiBhZGRlZCBib251cyB5b3Ugbm8gbG9uZ2VyIG5lZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgYHBhdGNoZXJgCisgICAgb2JqZWN0LgorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHN0b3AgYWxsIHBhdGNoZXMgd2hpY2ggaGF2ZSBiZWVuIHN0YXJ0ZWQgYnkgdXNpbmcKK2BwYXRjaC5zdG9wYWxsYC4KKworLi4gZnVuY3Rpb246OiBwYXRjaC5zdG9wYWxsCisKKyAgICBTdG9wIGFsbCBhY3RpdmUgcGF0Y2hlcy4gT25seSBzdG9wcyBwYXRjaGVzIHN0YXJ0ZWQgd2l0aCBgc3RhcnRgLgorCisKK1RFU1RfUFJFRklYCistLS0tLS0tLS0tLQorCitBbGwgb2YgdGhlIHBhdGNoZXJzIGNhbiBiZSB1c2VkIGFzIGNsYXNzIGRlY29yYXRvcnMuIFdoZW4gdXNlZCBpbiB0aGlzIHdheQordGhleSB3cmFwIGV2ZXJ5IHRlc3QgbWV0aG9kIG9uIHRoZSBjbGFzcy4gVGhlIHBhdGNoZXJzIHJlY29nbmlzZSBtZXRob2RzIHRoYXQKK3N0YXJ0IHdpdGggYHRlc3RgIGFzIGJlaW5nIHRlc3QgbWV0aG9kcy4gVGhpcyBpcyB0aGUgc2FtZSB3YXkgdGhhdCB0aGUKKzpjbGFzczpgdW5pdHRlc3QuVGVzdExvYWRlcmAgZmluZHMgdGVzdCBtZXRob2RzIGJ5IGRlZmF1bHQuCisKK0l0IGlzIHBvc3NpYmxlIHRoYXQgeW91IHdhbnQgdG8gdXNlIGEgZGlmZmVyZW50IHByZWZpeCBmb3IgeW91ciB0ZXN0cy4gWW91IGNhbgoraW5mb3JtIHRoZSBwYXRjaGVycyBvZiB0aGUgZGlmZmVyZW50IHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGA6CisKKyAgICA+Pj4gcGF0Y2guVEVTVF9QUkVGSVggPSAnZm9vJworICAgID4+PiB2YWx1ZSA9IDMKKyAgICA+Pj4KKyAgICA+Pj4gQHBhdGNoKCdfX21haW5fXy52YWx1ZScsICdub3QgdGhyZWUnKQorICAgIC4uLiBjbGFzcyBUaGluZyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIGZvb19vbmUoc2VsZik6CisgICAgLi4uICAgICAgICAgcHJpbnQgdmFsdWUKKyAgICAuLi4gICAgIGRlZiBmb29fdHdvKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHByaW50IHZhbHVlCisgICAgLi4uCisgICAgPj4+CisgICAgPj4+IFRoaW5nKCkuZm9vX29uZSgpCisgICAgbm90IHRocmVlCisgICAgPj4+IFRoaW5nKCkuZm9vX3R3bygpCisgICAgbm90IHRocmVlCisgICAgPj4+IHZhbHVlCisgICAgMworCisKK05lc3RpbmcgUGF0Y2ggRGVjb3JhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHRvIHBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyB0aGVuIHlvdSBjYW4gc2ltcGx5IHN0YWNrIHVwIHRoZQorZGVjb3JhdG9ycy4KKworWW91IGNhbiBzdGFjayB1cCBtdWx0aXBsZSBwYXRjaCBkZWNvcmF0b3JzIHVzaW5nIHRoaXMgcGF0dGVybjoKKworICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2NsYXNzX21ldGhvZCcpCisgICAgLi4uIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnc3RhdGljX21ldGhvZCcpCisgICAgLi4uIGRlZiB0ZXN0KG1vY2sxLCBtb2NrMik6CisgICAgLi4uICAgICBhc3NlcnQgU29tZUNsYXNzLnN0YXRpY19tZXRob2QgaXMgbW9jazEKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3MuY2xhc3NfbWV0aG9kIGlzIG1vY2syCisgICAgLi4uICAgICBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCgnZm9vJykKKyAgICAuLi4gICAgIFNvbWVDbGFzcy5jbGFzc19tZXRob2QoJ2JhcicpCisgICAgLi4uICAgICByZXR1cm4gbW9jazEsIG1vY2syCisgICAgLi4uCisgICAgPj4+IG1vY2sxLCBtb2NrMiA9IHRlc3QoKQorICAgID4+PiBtb2NrMS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKyAgICA+Pj4gbW9jazIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JhcicpCisKKworTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGZyb20gdGhlIGJvdHRvbSB1cHdhcmRzLiBUaGlzIGlzIHRoZQorc3RhbmRhcmQgd2F5IHRoYXQgUHl0aG9uIGFwcGxpZXMgZGVjb3JhdG9ycy4gVGhlIG9yZGVyIG9mIHRoZSBjcmVhdGVkIG1vY2tzCitwYXNzZWQgaW50byB5b3VyIHRlc3QgZnVuY3Rpb24gbWF0Y2hlcyB0aGlzIG9yZGVyLgorCisKKy4uIF93aGVyZS10by1wYXRjaDoKKworV2hlcmUgdG8gcGF0Y2gKKy0tLS0tLS0tLS0tLS0tCisKK2BwYXRjaGAgd29ya3MgYnkgKHRlbXBvcmFyaWx5KSBjaGFuZ2luZyB0aGUgb2JqZWN0IHRoYXQgYSAqbmFtZSogcG9pbnRzIHRvIHdpdGgKK2Fub3RoZXIgb25lLiBUaGVyZSBjYW4gYmUgbWFueSBuYW1lcyBwb2ludGluZyB0byBhbnkgaW5kaXZpZHVhbCBvYmplY3QsIHNvCitmb3IgcGF0Y2hpbmcgdG8gd29yayB5b3UgbXVzdCBlbnN1cmUgdGhhdCB5b3UgcGF0Y2ggdGhlIG5hbWUgdXNlZCBieSB0aGUgc3lzdGVtCit1bmRlciB0ZXN0LgorCitUaGUgYmFzaWMgcHJpbmNpcGxlIGlzIHRoYXQgeW91IHBhdGNoIHdoZXJlIGFuIG9iamVjdCBpcyAqbG9va2VkIHVwKiwgd2hpY2gKK2lzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBwbGFjZSBhcyB3aGVyZSBpdCBpcyBkZWZpbmVkLiBBIGNvdXBsZSBvZgorZXhhbXBsZXMgd2lsbCBoZWxwIHRvIGNsYXJpZnkgdGhpcy4KKworSW1hZ2luZSB3ZSBoYXZlIGEgcHJvamVjdCB0aGF0IHdlIHdhbnQgdG8gdGVzdCB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjoKKworICAgIGEucHkKKyAgICAgICAgLT4gRGVmaW5lcyBTb21lQ2xhc3MKKworICAgIGIucHkKKyAgICAgICAgLT4gZnJvbSBhIGltcG9ydCBTb21lQ2xhc3MKKyAgICAgICAgLT4gc29tZV9mdW5jdGlvbiBpbnN0YW50aWF0ZXMgU29tZUNsYXNzCisKK05vdyB3ZSB3YW50IHRvIHRlc3QgYHNvbWVfZnVuY3Rpb25gIGJ1dCB3ZSB3YW50IHRvIG1vY2sgb3V0IGBTb21lQ2xhc3NgIHVzaW5nCitgcGF0Y2hgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdoZW4gd2UgaW1wb3J0IG1vZHVsZSBiLCB3aGljaCB3ZSB3aWxsIGhhdmUgdG8KK2RvIHRoZW4gaXQgaW1wb3J0cyBgU29tZUNsYXNzYCBmcm9tIG1vZHVsZSBhLiBJZiB3ZSB1c2UgYHBhdGNoYCB0byBtb2NrIG91dAorYGEuU29tZUNsYXNzYCB0aGVuIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24gb3VyIHRlc3Q7IG1vZHVsZSBiIGFscmVhZHkgaGFzIGEKK3JlZmVyZW5jZSB0byB0aGUgKnJlYWwqIGBTb21lQ2xhc3NgIGFuZCBpdCBsb29rcyBsaWtlIG91ciBwYXRjaGluZyBoYWQgbm8KK2VmZmVjdC4KKworVGhlIGtleSBpcyB0byBwYXRjaCBvdXQgYFNvbWVDbGFzc2Agd2hlcmUgaXQgaXMgdXNlZCAob3Igd2hlcmUgaXQgaXMgbG9va2VkIHVwCispLiBJbiB0aGlzIGNhc2UgYHNvbWVfZnVuY3Rpb25gIHdpbGwgYWN0dWFsbHkgbG9vayB1cCBgU29tZUNsYXNzYCBpbiBtb2R1bGUgYiwKK3doZXJlIHdlIGhhdmUgaW1wb3J0ZWQgaXQuIFRoZSBwYXRjaGluZyBzaG91bGQgbG9vayBsaWtlOjoKKworICAgIEBwYXRjaCgnYi5Tb21lQ2xhc3MnKQorCitIb3dldmVyLCBjb25zaWRlciB0aGUgYWx0ZXJuYXRpdmUgc2NlbmFyaW8gd2hlcmUgaW5zdGVhZCBvZiBgZnJvbSBhIGltcG9ydAorU29tZUNsYXNzYCBtb2R1bGUgYiBkb2VzIGBpbXBvcnQgYWAgYW5kIGBzb21lX2Z1bmN0aW9uYCB1c2VzIGBhLlNvbWVDbGFzc2AuIEJvdGgKK29mIHRoZXNlIGltcG9ydCBmb3JtcyBhcmUgY29tbW9uLiBJbiB0aGlzIGNhc2UgdGhlIGNsYXNzIHdlIHdhbnQgdG8gcGF0Y2ggaXMKK2JlaW5nIGxvb2tlZCB1cCBvbiB0aGUgYSBtb2R1bGUgYW5kIHNvIHdlIGhhdmUgdG8gcGF0Y2ggYGEuU29tZUNsYXNzYCBpbnN0ZWFkOjoKKworICAgIEBwYXRjaCgnYS5Tb21lQ2xhc3MnKQorCisKK1BhdGNoaW5nIERlc2NyaXB0b3JzIGFuZCBQcm94eSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb3RoIHBhdGNoXyBhbmQgcGF0Y2gub2JqZWN0XyBjb3JyZWN0bHkgcGF0Y2ggYW5kIHJlc3RvcmUgZGVzY3JpcHRvcnM6IGNsYXNzCittZXRob2RzLCBzdGF0aWMgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4gWW91IHNob3VsZCBwYXRjaCB0aGVzZSBvbiB0aGUgKmNsYXNzKgorcmF0aGVyIHRoYW4gYW4gaW5zdGFuY2UuIFRoZXkgYWxzbyB3b3JrIHdpdGggKnNvbWUqIG9iamVjdHMKK3RoYXQgcHJveHkgYXR0cmlidXRlIGFjY2VzcywgbGlrZSB0aGUgYGRqYW5nbyBzZXR0dGluZ3Mgb2JqZWN0Cis8aHR0cDovL3d3dy52b2lkc3BhY2Uub3JnLnVrL3B5dGhvbi93ZWJsb2cvYXJjaF9kN18yMDEwXzEyXzA0LnNodG1sI2UxMTk4PmBfLgorCisKK01hZ2ljTW9jayBhbmQgbWFnaWMgbWV0aG9kIHN1cHBvcnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gX21hZ2ljLW1ldGhvZHM6CisKK01vY2tpbmcgTWFnaWMgTWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpjbGFzczpgTW9ja2Agc3VwcG9ydHMgbW9ja2luZyB0aGUgUHl0aG9uIHByb3RvY29sIG1ldGhvZHMsIGFsc28ga25vd24gYXMKKyJtYWdpYyBtZXRob2RzIi4gVGhpcyBhbGxvd3MgbW9jayBvYmplY3RzIHRvIHJlcGxhY2UgY29udGFpbmVycyBvciBvdGhlcgorb2JqZWN0cyB0aGF0IGltcGxlbWVudCBQeXRob24gcHJvdG9jb2xzLgorCitCZWNhdXNlIG1hZ2ljIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBkaWZmZXJlbnRseSBmcm9tIG5vcm1hbCBtZXRob2RzIFsjXV8sIHRoaXMKK3N1cHBvcnQgaGFzIGJlZW4gc3BlY2lhbGx5IGltcGxlbWVudGVkLiBUaGlzIG1lYW5zIHRoYXQgb25seSBzcGVjaWZpYyBtYWdpYworbWV0aG9kcyBhcmUgc3VwcG9ydGVkLiBUaGUgc3VwcG9ydGVkIGxpc3QgaW5jbHVkZXMgKmFsbW9zdCogYWxsIG9mIHRoZW0uIElmCit0aGVyZSBhcmUgYW55IG1pc3NpbmcgdGhhdCB5b3UgbmVlZCBwbGVhc2UgbGV0IHVzIGtub3cuCisKK1lvdSBtb2NrIG1hZ2ljIG1ldGhvZHMgYnkgc2V0dGluZyB0aGUgbWV0aG9kIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0byBhIGZ1bmN0aW9uCitvciBhIG1vY2sgaW5zdGFuY2UuIElmIHlvdSBhcmUgdXNpbmcgYSBmdW5jdGlvbiB0aGVuIGl0ICptdXN0KiB0YWtlIGBgc2VsZmBgIGFzCit0aGUgZmlyc3QgYXJndW1lbnQgWyNdXy4KKworICAgPj4+IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgLi4uICAgICByZXR1cm4gJ2Zvb2JsZScKKyAgIC4uLgorICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9fc3RyX18gPSBfX3N0cl9fCisgICA+Pj4gc3RyKG1vY2spCisgICAnZm9vYmxlJworCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19zdHJfXyA9IE1vY2soKQorICAgPj4+IG1vY2suX19zdHJfXy5yZXR1cm5fdmFsdWUgPSAnZm9vYmxlJworICAgPj4+IHN0cihtb2NrKQorICAgJ2Zvb2JsZScKKworICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICA+Pj4gbGlzdChtb2NrKQorICAgW10KKworT25lIHVzZSBjYXNlIGZvciB0aGlzIGlzIGZvciBtb2NraW5nIG9iamVjdHMgdXNlZCBhcyBjb250ZXh0IG1hbmFnZXJzIGluIGEKK2B3aXRoYCBzdGF0ZW1lbnQ6CisKKyAgID4+PiBtb2NrID0gTW9jaygpCisgICA+Pj4gbW9jay5fX2VudGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT0nZm9vJykKKyAgID4+PiBtb2NrLl9fZXhpdF9fID0gTW9jayhyZXR1cm5fdmFsdWU9RmFsc2UpCisgICA+Pj4gd2l0aCBtb2NrIGFzIG06CisgICAuLi4gICAgIGFzc2VydCBtID09ICdmb28nCisgICAuLi4KKyAgID4+PiBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgPj4+IG1vY2suX19leGl0X18uYXNzZXJ0X2NhbGxlZF93aXRoKE5vbmUsIE5vbmUsIE5vbmUpCisKK0NhbGxzIHRvIG1hZ2ljIG1ldGhvZHMgZG8gbm90IGFwcGVhciBpbiA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYCwgYnV0IHRoZXkKK2FyZSByZWNvcmRlZCBpbiA6YXR0cjpgfk1vY2subW9ja19jYWxsc2AuCisKKy4uIG5vdGU6OgorCisgICBJZiB5b3UgdXNlIHRoZSBgc3BlY2Aga2V5d29yZCBhcmd1bWVudCB0byBjcmVhdGUgYSBtb2NrIHRoZW4gYXR0ZW1wdGluZyB0bworICAgc2V0IGEgbWFnaWMgbWV0aG9kIHRoYXQgaXNuJ3QgaW4gdGhlIHNwZWMgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCitUaGUgZnVsbCBsaXN0IG9mIHN1cHBvcnRlZCBtYWdpYyBtZXRob2RzIGlzOgorCisqIGBgX19oYXNoX19gYCwgYGBfX3NpemVvZl9fYGAsIGBgX19yZXByX19gYCBhbmQgYGBfX3N0cl9fYGAKKyogYGBfX2Rpcl9fYGAsIGBgX19mb3JtYXRfX2BgIGFuZCBgYF9fc3ViY2xhc3Nlc19fYGAKKyogYGBfX2Zsb29yX19gYCwgYGBfX3RydW5jX19gYCBhbmQgYGBfX2NlaWxfX2BgCisqIENvbXBhcmlzb25zOiBgYF9fY21wX19gYCwgYGBfX2x0X19gYCwgYGBfX2d0X19gYCwgYGBfX2xlX19gYCwgYGBfX2dlX19gYCwKKyAgYGBfX2VxX19gYCBhbmQgYGBfX25lX19gYAorKiBDb250YWluZXIgbWV0aG9kczogYGBfX2dldGl0ZW1fX2BgLCBgYF9fc2V0aXRlbV9fYGAsIGBgX19kZWxpdGVtX19gYCwKKyAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2xlbl9fYGAsIGBgX19pdGVyX19gYCwgYGBfX2dldHNsaWNlX19gYCwKKyAgYGBfX3NldHNsaWNlX19gYCwgYGBfX3JldmVyc2VkX19gYCBhbmQgYGBfX21pc3NpbmdfX2BgCisqIENvbnRleHQgbWFuYWdlcjogYGBfX2VudGVyX19gYCBhbmQgYGBfX2V4aXRfX2BgCisqIFVuYXJ5IG51bWVyaWMgbWV0aG9kczogYGBfX25lZ19fYGAsIGBgX19wb3NfX2BgIGFuZCBgYF9faW52ZXJ0X19gYAorKiBUaGUgbnVtZXJpYyBtZXRob2RzIChpbmNsdWRpbmcgcmlnaHQgaGFuZCBhbmQgaW4tcGxhY2UgdmFyaWFudHMpOgorICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fZGl2X19gYCwKKyAgYGBfX2Zsb29yZGl2X19gYCwgYGBfX21vZF9fYGAsIGBgX19kaXZtb2RfX2BgLCBgYF9fbHNoaWZ0X19gYCwKKyAgYGBfX3JzaGlmdF9fYGAsIGBgX19hbmRfX2BgLCBgYF9feG9yX19gYCwgYGBfX29yX19gYCwgYW5kIGBgX19wb3dfX2BgCisqIE51bWVyaWMgY29udmVyc2lvbiBtZXRob2RzOiBgYF9fY29tcGxleF9fYGAsIGBgX19pbnRfX2BgLCBgYF9fZmxvYXRfX2BgLAorICBgYF9faW5kZXhfX2BgIGFuZCBgYF9fY29lcmNlX19gYAorKiBEZXNjcmlwdG9yIG1ldGhvZHM6IGBgX19nZXRfX2BgLCBgYF9fc2V0X19gYCBhbmQgYGBfX2RlbGV0ZV9fYGAKKyogUGlja2xpbmc6IGBgX19yZWR1Y2VfX2BgLCBgYF9fcmVkdWNlX2V4X19gYCwgYGBfX2dldGluaXRhcmdzX19gYCwKKyAgYGBfX2dldG5ld2FyZ3NfX2BgLCBgYF9fZ2V0c3RhdGVfX2BgIGFuZCBgYF9fc2V0c3RhdGVfX2BgCisKKworVGhlIGZvbGxvd2luZyBtZXRob2RzIGV4aXN0IGJ1dCBhcmUgKm5vdCogc3VwcG9ydGVkIGFzIHRoZXkgYXJlIGVpdGhlciBpbiB1c2UKK2J5IG1vY2ssIGNhbid0IGJlIHNldCBkeW5hbWljYWxseSwgb3IgY2FuIGNhdXNlIHByb2JsZW1zOgorCisqIGBgX19nZXRhdHRyX19gYCwgYGBfX3NldGF0dHJfX2BgLCBgYF9faW5pdF9fYGAgYW5kIGBgX19uZXdfX2BgCisqIGBgX19wcmVwYXJlX19gYCwgYGBfX2luc3RhbmNlY2hlY2tfX2BgLCBgYF9fc3ViY2xhc3NjaGVja19fYGAsIGBgX19kZWxfX2BgCisKKworCitNYWdpYyBNb2NrCistLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB0d28gYE1hZ2ljTW9ja2AgdmFyaWFudHM6IGBNYWdpY01vY2tgIGFuZCBgTm9uQ2FsbGFibGVNYWdpY01vY2tgLgorCisKKy4uIGNsYXNzOjogTWFnaWNNb2NrKCphcmdzLCAqKmt3KQorCisgICBgYE1hZ2ljTW9ja2BgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBNb2NrYCB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCisgICBvZiBtb3N0IG9mIHRoZSBtYWdpYyBtZXRob2RzLiBZb3UgY2FuIHVzZSBgYE1hZ2ljTW9ja2BgIHdpdGhvdXQgaGF2aW5nIHRvCisgICBjb25maWd1cmUgdGhlIG1hZ2ljIG1ldGhvZHMgeW91cnNlbGYuCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgOmNsYXNzOmBNb2NrYC4KKworICAgSWYgeW91IHVzZSB0aGUgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJndW1lbnRzIHRoZW4gKm9ubHkqIG1hZ2ljIG1ldGhvZHMKKyAgIHRoYXQgZXhpc3QgaW4gdGhlIHNwZWMgd2lsbCBiZSBjcmVhdGVkLgorCisKKy4uIGNsYXNzOjogTm9uQ2FsbGFibGVNYWdpY01vY2soKmFyZ3MsICoqa3cpCisKKyAgICBBIG5vbi1jYWxsYWJsZSB2ZXJzaW9uIG9mIGBNYWdpY01vY2tgLgorCisgICAgVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgIDpjbGFzczpgTWFnaWNNb2NrYCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGByZXR1cm5fdmFsdWVgIGFuZAorICAgIGBzaWRlX2VmZmVjdGAgd2hpY2ggaGF2ZSBubyBtZWFuaW5nIG9uIGEgbm9uLWNhbGxhYmxlIG1vY2suCisKK1RoZSBtYWdpYyBtZXRob2RzIGFyZSBzZXR1cCB3aXRoIGBNYWdpY01vY2tgIG9iamVjdHMsIHNvIHlvdSBjYW4gY29uZmlndXJlIHRoZW0KK2FuZCB1c2UgdGhlbSBpbiB0aGUgdXN1YWwgd2F5OgorCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gbW9ja1szXSA9ICdmaXNoJworICAgPj4+IG1vY2suX19zZXRpdGVtX18uYXNzZXJ0X2NhbGxlZF93aXRoKDMsICdmaXNoJykKKyAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLnJldHVybl92YWx1ZSA9ICdyZXN1bHQnCisgICA+Pj4gbW9ja1syXQorICAgJ3Jlc3VsdCcKKworQnkgZGVmYXVsdCBtYW55IG9mIHRoZSBwcm90b2NvbCBtZXRob2RzIGFyZSByZXF1aXJlZCB0byByZXR1cm4gb2JqZWN0cyBvZiBhCitzcGVjaWZpYyB0eXBlLiBUaGVzZSBtZXRob2RzIGFyZSBwcmVjb25maWd1cmVkIHdpdGggYSBkZWZhdWx0IHJldHVybiB2YWx1ZSwgc28KK3RoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRob3V0IHlvdSBoYXZpbmcgdG8gZG8gYW55dGhpbmcgaWYgeW91IGFyZW4ndCBpbnRlcmVzdGVkCitpbiB0aGUgcmV0dXJuIHZhbHVlLiBZb3UgY2FuIHN0aWxsICpzZXQqIHRoZSByZXR1cm4gdmFsdWUgbWFudWFsbHkgaWYgeW91IHdhbnQKK3RvIGNoYW5nZSB0aGUgZGVmYXVsdC4KKworTWV0aG9kcyBhbmQgdGhlaXIgZGVmYXVsdHM6CisKKyogYGBfX2x0X19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2d0X19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2xlX19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2dlX19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2ludF9fYGAgOiAxCisqIGBgX19jb250YWluc19fYGAgOiBGYWxzZQorKiBgYF9fbGVuX19gYCA6IDEKKyogYGBfX2l0ZXJfX2BgIDogaXRlcihbXSkKKyogYGBfX2V4aXRfX2BgIDogRmFsc2UKKyogYGBfX2NvbXBsZXhfX2BgIDogMWoKKyogYGBfX2Zsb2F0X19gYCA6IDEuMAorKiBgYF9fYm9vbF9fYGAgOiBUcnVlCisqIGBgX19pbmRleF9fYGAgOiAxCisqIGBgX19oYXNoX19gYCA6IGRlZmF1bHQgaGFzaCBmb3IgdGhlIG1vY2sKKyogYGBfX3N0cl9fYGAgOiBkZWZhdWx0IHN0ciBmb3IgdGhlIG1vY2sKKyogYGBfX3NpemVvZl9fYGA6IGRlZmF1bHQgc2l6ZW9mIGZvciB0aGUgbW9jaworCitGb3IgZXhhbXBsZToKKworICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgPj4+IGludChtb2NrKQorICAgMQorICAgPj4+IGxlbihtb2NrKQorICAgMAorICAgPj4+IGxpc3QobW9jaykKKyAgIFtdCisgICA+Pj4gb2JqZWN0KCkgaW4gbW9jaworICAgRmFsc2UKKworVGhlIHR3byBlcXVhbGl0eSBtZXRob2QsIGBfX2VxX19gIGFuZCBgX19uZV9fYCwgYXJlIHNwZWNpYWwuCitUaGV5IGRvIHRoZSBkZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmlzb24gb24gaWRlbnRpdHksIHVzaW5nIGEgc2lkZQorZWZmZWN0LCB1bmxlc3MgeW91IGNoYW5nZSB0aGVpciByZXR1cm4gdmFsdWUgdG8gcmV0dXJuIHNvbWV0aGluZyBlbHNlOgorCisgICA+Pj4gTWFnaWNNb2NrKCkgPT0gMworICAgRmFsc2UKKyAgID4+PiBNYWdpY01vY2soKSAhPSAzCisgICBUcnVlCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gbW9jay5fX2VxX18ucmV0dXJuX3ZhbHVlID0gVHJ1ZQorICAgPj4+IG1vY2sgPT0gMworICAgVHJ1ZQorCitUaGUgcmV0dXJuIHZhbHVlIG9mIGBNYWdpY01vY2suX19pdGVyX19gIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0IGFuZCBpc24ndAorcmVxdWlyZWQgdG8gYmUgYW4gaXRlcmF0b3I6CisKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBtb2NrLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IFsnYScsICdiJywgJ2MnXQorICAgPj4+IGxpc3QobW9jaykKKyAgIFsnYScsICdiJywgJ2MnXQorICAgPj4+IGxpc3QobW9jaykKKyAgIFsnYScsICdiJywgJ2MnXQorCitJZiB0aGUgcmV0dXJuIHZhbHVlICppcyogYW4gaXRlcmF0b3IsIHRoZW4gaXRlcmF0aW5nIG92ZXIgaXQgb25jZSB3aWxsIGNvbnN1bWUKK2l0IGFuZCBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMgd2lsbCByZXN1bHQgaW4gYW4gZW1wdHkgbGlzdDoKKworICAgPj4+IG1vY2suX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbJ2EnLCAnYicsICdjJ10pCisgICA+Pj4gbGlzdChtb2NrKQorICAgWydhJywgJ2InLCAnYyddCisgICA+Pj4gbGlzdChtb2NrKQorICAgW10KKworYGBNYWdpY01vY2tgYCBoYXMgYWxsIG9mIHRoZSBzdXBwb3J0ZWQgbWFnaWMgbWV0aG9kcyBjb25maWd1cmVkIGV4Y2VwdCBmb3Igc29tZQorb2YgdGhlIG9ic2N1cmUgYW5kIG9ic29sZXRlIG9uZXMuIFlvdSBjYW4gc3RpbGwgc2V0IHRoZXNlIHVwIGlmIHlvdSB3YW50LgorCitNYWdpYyBtZXRob2RzIHRoYXQgYXJlIHN1cHBvcnRlZCBidXQgbm90IHNldHVwIGJ5IGRlZmF1bHQgaW4gYGBNYWdpY01vY2tgYCBhcmU6CisKKyogYGBfX3N1YmNsYXNzZXNfX2BgCisqIGBgX19kaXJfX2BgCisqIGBgX19mb3JtYXRfX2BgCisqIGBgX19nZXRfX2BgLCBgYF9fc2V0X19gYCBhbmQgYGBfX2RlbGV0ZV9fYGAKKyogYGBfX3JldmVyc2VkX19gYCBhbmQgYGBfX21pc3NpbmdfX2BgCisqIGBgX19yZWR1Y2VfX2BgLCBgYF9fcmVkdWNlX2V4X19gYCwgYGBfX2dldGluaXRhcmdzX19gYCwgYGBfX2dldG5ld2FyZ3NfX2BgLAorICBgYF9fZ2V0c3RhdGVfX2BgIGFuZCBgYF9fc2V0c3RhdGVfX2BgCisqIGBgX19nZXRmb3JtYXRfX2BgIGFuZCBgYF9fc2V0Zm9ybWF0X19gYAorCisKKworLi4gWyNdIE1hZ2ljIG1ldGhvZHMgKnNob3VsZCogYmUgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyByYXRoZXIgdGhhbiB0aGUKKyAgIGluc3RhbmNlLiBEaWZmZXJlbnQgdmVyc2lvbnMgb2YgUHl0aG9uIGFyZSBpbmNvbnNpc3RlbnQgYWJvdXQgYXBwbHlpbmcgdGhpcworICAgcnVsZS4gVGhlIHN1cHBvcnRlZCBwcm90b2NvbCBtZXRob2RzIHNob3VsZCB3b3JrIHdpdGggYWxsIHN1cHBvcnRlZCB2ZXJzaW9ucworICAgb2YgUHl0aG9uLgorLi4gWyNdIFRoZSBmdW5jdGlvbiBpcyBiYXNpY2FsbHkgaG9va2VkIHVwIHRvIHRoZSBjbGFzcywgYnV0IGVhY2ggYGBNb2NrYGAKKyAgIGluc3RhbmNlIGlzIGtlcHQgaXNvbGF0ZWQgZnJvbSB0aGUgb3RoZXJzLgorCisKK0hlbHBlcnMKKz09PT09PT0KKworc2VudGluZWwKKy0tLS0tLS0tCisKKy4uIGRhdGE6OiBzZW50aW5lbAorCisgICAgVGhlIGBgc2VudGluZWxgYCBvYmplY3QgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSBvZiBwcm92aWRpbmcgdW5pcXVlCisgICAgb2JqZWN0cyBmb3IgeW91ciB0ZXN0cy4KKworICAgIEF0dHJpYnV0ZXMgYXJlIGNyZWF0ZWQgb24gZGVtYW5kIHdoZW4geW91IGFjY2VzcyB0aGVtIGJ5IG5hbWUuIEFjY2Vzc2luZworICAgIHRoZSBzYW1lIGF0dHJpYnV0ZSB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LiBUaGUgb2JqZWN0cworICAgIHJldHVybmVkIGhhdmUgYSBzZW5zaWJsZSByZXByIHNvIHRoYXQgdGVzdCBmYWlsdXJlIG1lc3NhZ2VzIGFyZSByZWFkYWJsZS4KKworU29tZXRpbWVzIHdoZW4gdGVzdGluZyB5b3UgbmVlZCB0byB0ZXN0IHRoYXQgYSBzcGVjaWZpYyBvYmplY3QgaXMgcGFzc2VkIGFzIGFuCithcmd1bWVudCB0byBhbm90aGVyIG1ldGhvZCwgb3IgcmV0dXJuZWQuIEl0IGNhbiBiZSBjb21tb24gdG8gY3JlYXRlIG5hbWVkCitzZW50aW5lbCBvYmplY3RzIHRvIHRlc3QgdGhpcy4gYHNlbnRpbmVsYCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IG9mCitjcmVhdGluZyBhbmQgdGVzdGluZyB0aGUgaWRlbnRpdHkgb2Ygb2JqZWN0cyBsaWtlIHRoaXMuCisKK0luIHRoaXMgZXhhbXBsZSB3ZSBtb25rZXkgcGF0Y2ggYG1ldGhvZGAgdG8gcmV0dXJuIGBzZW50aW5lbC5zb21lX29iamVjdGA6CisKKyAgICA+Pj4gcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IHJlYWwubWV0aG9kID0gTW9jayhuYW1lPSJtZXRob2QiKQorICAgID4+PiByZWFsLm1ldGhvZC5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5zb21lX29iamVjdAorICAgID4+PiByZXN1bHQgPSByZWFsLm1ldGhvZCgpCisgICAgPj4+IGFzc2VydCByZXN1bHQgaXMgc2VudGluZWwuc29tZV9vYmplY3QKKyAgICA+Pj4gc2VudGluZWwuc29tZV9vYmplY3QKKyAgICBzZW50aW5lbC5zb21lX29iamVjdAorCisKK0RFRkFVTFQKKy0tLS0tLS0KKworCisuLiBkYXRhOjogREVGQVVMVAorCisgICAgVGhlIGBERUZBVUxUYCBvYmplY3QgaXMgYSBwcmUtY3JlYXRlZCBzZW50aW5lbCAoYWN0dWFsbHkKKyAgICBgc2VudGluZWwuREVGQVVMVGApLiBJdCBjYW4gYmUgdXNlZCBieSA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgCisgICAgZnVuY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgdGhlIG5vcm1hbCByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHVzZWQuCisKKworCitjYWxsCistLS0tCisKKy4uIGZ1bmN0aW9uOjogY2FsbCgqYXJncywgKiprd2FyZ3MpCisKKyAgICBgY2FsbGAgaXMgYSBoZWxwZXIgb2JqZWN0IGZvciBtYWtpbmcgc2ltcGxlciBhc3NlcnRpb25zLCBmb3IgY29tcGFyaW5nIHdpdGgKKyAgICA6YXR0cjpgfk1vY2suY2FsbF9hcmdzYCwgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc19saXN0YCwKKyAgICA6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgYW5kIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgLiBgY2FsbGAgY2FuIGFsc28gYmUKKyAgICB1c2VkIHdpdGggOm1ldGg6YH5Nb2NrLmFzc2VydF9oYXNfY2FsbHNgLgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICA+Pj4gbSgxLCAyLCBhPSdmb28nLCBiPSdiYXInKQorICAgICAgICA+Pj4gbSgpCisgICAgICAgID4+PiBtLmNhbGxfYXJnc19saXN0ID09IFtjYWxsKDEsIDIsIGE9J2ZvbycsIGI9J2JhcicpLCBjYWxsKCldCisgICAgICAgIFRydWUKKworLi4gbWV0aG9kOjogY2FsbC5jYWxsX2xpc3QoKQorCisgICAgRm9yIGEgY2FsbCBvYmplY3QgdGhhdCByZXByZXNlbnRzIG11bHRpcGxlIGNhbGxzLCBgY2FsbF9saXN0YAorICAgIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgaW50ZXJtZWRpYXRlIGNhbGxzIGFzIHdlbGwgYXMgdGhlCisgICAgZmluYWwgY2FsbC4KKworYGNhbGxfbGlzdGAgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgbWFraW5nIGFzc2VydGlvbnMgb24gImNoYWluZWQgY2FsbHMiLiBBCitjaGFpbmVkIGNhbGwgaXMgbXVsdGlwbGUgY2FsbHMgb24gYSBzaW5nbGUgbGluZSBvZiBjb2RlLiBUaGlzIHJlc3VsdHMgaW4KK211bHRpcGxlIGVudHJpZXMgaW4gOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIG9uIGEgbW9jay4gTWFudWFsbHkgY29uc3RydWN0aW5nCit0aGUgc2VxdWVuY2Ugb2YgY2FsbHMgY2FuIGJlIHRlZGlvdXMuCisKKzptZXRoOmB+Y2FsbC5jYWxsX2xpc3RgIGNhbiBjb25zdHJ1Y3QgdGhlIHNlcXVlbmNlIG9mIGNhbGxzIGZyb20gdGhlIHNhbWUKK2NoYWluZWQgY2FsbDoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbSgxKS5tZXRob2QoYXJnPSdmb28nKS5vdGhlcignYmFyJykoMi4wKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jaygpLm1ldGhvZCgpLm90aGVyKCkoKScgaWQ9Jy4uLic+CisgICAgPj4+IGthbGwgPSBjYWxsKDEpLm1ldGhvZChhcmc9J2ZvbycpLm90aGVyKCdiYXInKSgyLjApCisgICAgPj4+IGthbGwuY2FsbF9saXN0KCkKKyAgICBbY2FsbCgxKSwKKyAgICAgY2FsbCgpLm1ldGhvZChhcmc9J2ZvbycpLAorICAgICBjYWxsKCkubWV0aG9kKCkub3RoZXIoJ2JhcicpLAorICAgICBjYWxsKCkubWV0aG9kKCkub3RoZXIoKSgyLjApXQorICAgID4+PiBtLm1vY2tfY2FsbHMgPT0ga2FsbC5jYWxsX2xpc3QoKQorICAgIFRydWUKKworLi4gX2NhbGxzLWFzLXR1cGxlczoKKworQSBgY2FsbGAgb2JqZWN0IGlzIGVpdGhlciBhIHR1cGxlIG9mIChwb3NpdGlvbmFsIGFyZ3MsIGtleXdvcmQgYXJncykgb3IKKyhuYW1lLCBwb3NpdGlvbmFsIGFyZ3MsIGtleXdvcmQgYXJncykgZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMgY29uc3RydWN0ZWQuIFdoZW4KK3lvdSBjb25zdHJ1Y3QgdGhlbSB5b3Vyc2VsZiB0aGlzIGlzbid0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZywgYnV0IHRoZSBgY2FsbGAKK29iamVjdHMgdGhhdCBhcmUgaW4gdGhlIDphdHRyOmBNb2NrLmNhbGxfYXJnc2AsIDphdHRyOmBNb2NrLmNhbGxfYXJnc19saXN0YCBhbmQKKzphdHRyOmBNb2NrLm1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgY2FuIGJlIGludHJvc3BlY3RlZCB0byBnZXQgYXQgdGhlIGluZGl2aWR1YWwKK2FyZ3VtZW50cyB0aGV5IGNvbnRhaW4uCisKK1RoZSBgY2FsbGAgb2JqZWN0cyBpbiA6YXR0cjpgTW9jay5jYWxsX2FyZ3NgIGFuZCA6YXR0cjpgTW9jay5jYWxsX2FyZ3NfbGlzdGAKK2FyZSB0d28tdHVwbGVzIG9mIChwb3NpdGlvbmFsIGFyZ3MsIGtleXdvcmQgYXJncykgd2hlcmVhcyB0aGUgYGNhbGxgIG9iamVjdHMKK2luIDphdHRyOmBNb2NrLm1vY2tfY2FsbHNgLCBhbG9uZyB3aXRoIG9uZXMgeW91IGNvbnN0cnVjdCB5b3Vyc2VsZiwgYXJlCit0aHJlZS10dXBsZXMgb2YgKG5hbWUsIHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKS4KKworWW91IGNhbiB1c2UgdGhlaXIgInR1cGxlbmVzcyIgdG8gcHVsbCBvdXQgdGhlIGluZGl2aWR1YWwgYXJndW1lbnRzIGZvciBtb3JlCitjb21wbGV4IGludHJvc3BlY3Rpb24gYW5kIGFzc2VydGlvbnMuIFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgYSB0dXBsZQorKGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIGFyZSBubyBwb3NpdGlvbmFsIGFyZ3VtZW50cykgYW5kIHRoZSBrZXl3b3JkCithcmd1bWVudHMgYXJlIGEgZGljdGlvbmFyeToKKworICAgID4+PiBtID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtKDEsIDIsIDMsIGFyZz0nb25lJywgYXJnMj0ndHdvJykKKyAgICA+Pj4ga2FsbCA9IG0uY2FsbF9hcmdzCisgICAgPj4+IGFyZ3MsIGt3YXJncyA9IGthbGwKKyAgICA+Pj4gYXJncworICAgICgxLCAyLCAzKQorICAgID4+PiBrd2FyZ3MKKyAgICB7J2FyZzInOiAndHdvJywgJ2FyZyc6ICdvbmUnfQorICAgID4+PiBhcmdzIGlzIGthbGxbMF0KKyAgICBUcnVlCisgICAgPj4+IGt3YXJncyBpcyBrYWxsWzFdCisgICAgVHJ1ZQorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtLmZvbyg0LCA1LCA2LCBhcmc9J3R3bycsIGFyZzI9J3RocmVlJykKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suZm9vKCknIGlkPScuLi4nPgorICAgID4+PiBrYWxsID0gbS5tb2NrX2NhbGxzWzBdCisgICAgPj4+IG5hbWUsIGFyZ3MsIGt3YXJncyA9IGthbGwKKyAgICA+Pj4gbmFtZQorICAgICdmb28nCisgICAgPj4+IGFyZ3MKKyAgICAoNCwgNSwgNikKKyAgICA+Pj4ga3dhcmdzCisgICAgeydhcmcyJzogJ3RocmVlJywgJ2FyZyc6ICd0d28nfQorICAgID4+PiBuYW1lIGlzIG0ubW9ja19jYWxsc1swXVswXQorICAgIFRydWUKKworCitjcmVhdGVfYXV0b3NwZWMKKy0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSwgaW5zdGFuY2U9RmFsc2UsICoqa3dhcmdzKQorCisgICAgQ3JlYXRlIGEgbW9jayBvYmplY3QgdXNpbmcgYW5vdGhlciBvYmplY3QgYXMgYSBzcGVjLiBBdHRyaWJ1dGVzIG9uIHRoZQorICAgIG1vY2sgd2lsbCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9uIHRoZSBgc3BlY2Agb2JqZWN0IGFzIHRoZWlyCisgICAgc3BlYy4KKworICAgIEZ1bmN0aW9ucyBvciBtZXRob2RzIGJlaW5nIG1vY2tlZCB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQgdG8KKyAgICBlbnN1cmUgdGhhdCB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBzaWduYXR1cmUuCisKKyAgICBJZiBgc3BlY19zZXRgIGlzIGBUcnVlYCB0aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdAorICAgIG9uIHRoZSBzcGVjIG9iamVjdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICBJZiBhIGNsYXNzIGlzIHVzZWQgYXMgYSBzcGVjIHRoZW4gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbW9jayAodGhlCisgICAgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzKSB3aWxsIGhhdmUgdGhlIHNhbWUgc3BlYy4gWW91IGNhbiB1c2UgYSBjbGFzcyBhcyB0aGUKKyAgICBzcGVjIGZvciBhbiBpbnN0YW5jZSBvYmplY3QgYnkgcGFzc2luZyBgaW5zdGFuY2U9VHJ1ZWAuIFRoZSByZXR1cm5lZCBtb2NrCisgICAgd2lsbCBvbmx5IGJlIGNhbGxhYmxlIGlmIGluc3RhbmNlcyBvZiB0aGUgbW9jayBhcmUgY2FsbGFibGUuCisKKyAgICBgY3JlYXRlX2F1dG9zcGVjYCBhbHNvIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQgdG8KKyAgICB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGNyZWF0ZWQgbW9jay4KKworU2VlIDpyZWY6YGF1dG8tc3BlY2NpbmdgIGZvciBleGFtcGxlcyBvZiBob3cgdG8gdXNlIGF1dG8tc3BlY2Npbmcgd2l0aAorYGNyZWF0ZV9hdXRvc3BlY2AgYW5kIHRoZSBgYXV0b3NwZWNgIGFyZ3VtZW50IHRvIDpmdW5jOmBwYXRjaGAuCisKKworQU5ZCistLS0KKworLi4gZGF0YTo6IEFOWQorCitTb21ldGltZXMgeW91IG1heSBuZWVkIHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCAqc29tZSogb2YgdGhlIGFyZ3VtZW50cyBpbiBhCitjYWxsIHRvIG1vY2ssIGJ1dCBlaXRoZXIgbm90IGNhcmUgYWJvdXQgc29tZSBvZiB0aGUgYXJndW1lbnRzIG9yIHdhbnQgdG8gcHVsbAordGhlbSBpbmRpdmlkdWFsbHkgb3V0IG9mIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NgIGFuZCBtYWtlIG1vcmUgY29tcGxleAorYXNzZXJ0aW9ucyBvbiB0aGVtLgorCitUbyBpZ25vcmUgY2VydGFpbiBhcmd1bWVudHMgeW91IGNhbiBwYXNzIGluIG9iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIHRvCisqZXZlcnl0aGluZyouIENhbGxzIHRvIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIGFuZAorOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB3aWxsIHRoZW4gc3VjY2VlZCBubyBtYXR0ZXIgd2hhdCB3YXMKK3Bhc3NlZCBpbi4KKworICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jaygnZm9vJywgYmFyPW9iamVjdCgpKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nLCBiYXI9QU5ZKQorCitgQU5ZYCBjYW4gYWxzbyBiZSB1c2VkIGluIGNvbXBhcmlzb25zIHdpdGggY2FsbCBsaXN0cyBsaWtlCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2A6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbSgxKQorICAgID4+PiBtKDEsIDIpCisgICAgPj4+IG0ob2JqZWN0KCkpCisgICAgPj4+IG0ubW9ja19jYWxscyA9PSBbY2FsbCgxKSwgY2FsbCgxLCAyKSwgQU5ZXQorICAgIFRydWUKKworCisKK0ZJTFRFUl9ESVIKKy0tLS0tLS0tLS0KKworLi4gZGF0YTo6IEZJTFRFUl9ESVIKKworYEZJTFRFUl9ESVJgIGlzIGEgbW9kdWxlIGxldmVsIHZhcmlhYmxlIHRoYXQgY29udHJvbHMgdGhlIHdheSBtb2NrIG9iamVjdHMKK3Jlc3BvbmQgdG8gYGRpcmAgKG9ubHkgZm9yIFB5dGhvbiAyLjYgb3IgbW9yZSByZWNlbnQpLiBUaGUgZGVmYXVsdCBpcyBgVHJ1ZWAsCit3aGljaCB1c2VzIHRoZSBmaWx0ZXJpbmcgZGVzY3JpYmVkIGJlbG93LCB0byBvbmx5IHNob3cgdXNlZnVsIG1lbWJlcnMuIElmIHlvdQorZGlzbGlrZSB0aGlzIGZpbHRlcmluZywgb3IgbmVlZCB0byBzd2l0Y2ggaXQgb2ZmIGZvciBkaWFnbm9zdGljIHB1cnBvc2VzLCB0aGVuCitzZXQgYG1vY2suRklMVEVSX0RJUiA9IEZhbHNlYC4KKworV2l0aCBmaWx0ZXJpbmcgb24sIGBkaXIoc29tZV9tb2NrKWAgc2hvd3Mgb25seSB1c2VmdWwgYXR0cmlidXRlcyBhbmQgd2lsbAoraW5jbHVkZSBhbnkgZHluYW1pY2FsbHkgY3JlYXRlZCBhdHRyaWJ1dGVzIHRoYXQgd291bGRuJ3Qgbm9ybWFsbHkgYmUgc2hvd24uCitJZiB0aGUgbW9jayB3YXMgY3JlYXRlZCB3aXRoIGEgYHNwZWNgIChvciBgYXV0b3NwZWNgIG9mIGNvdXJzZSkgdGhlbiBhbGwgdGhlCithdHRyaWJ1dGVzIGZyb20gdGhlIG9yaWdpbmFsIGFyZSBzaG93biwgZXZlbiBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBhY2Nlc3NlZAoreWV0OgorCisgICAgPj4+IGRpcihNb2NrKCkpCisgICAgWydhc3NlcnRfYW55X2NhbGwnLAorICAgICAnYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgnLAorICAgICAnYXNzZXJ0X2NhbGxlZF93aXRoJywKKyAgICAgJ2Fzc2VydF9oYXNfY2FsbHMnLAorICAgICAnYXR0YWNoX21vY2snLAorICAgICAuLi4KKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gZGlyKE1vY2soc3BlYz1yZXF1ZXN0KSkKKyAgICBbJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsCisgICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywKKyAgICAgJ0Fic3RyYWN0SFRUUEhhbmRsZXInLAorICAgICAnQmFzZUhhbmRsZXInLAorICAgICAuLi4KKworTWFueSBvZiB0aGUgbm90LXZlcnktdXNlZnVsIChwcml2YXRlIHRvIGBNb2NrYCByYXRoZXIgdGhhbiB0aGUgdGhpbmcgYmVpbmcKK21vY2tlZCkgdW5kZXJzY29yZSBhbmQgZG91YmxlIHVuZGVyc2NvcmUgcHJlZml4ZWQgYXR0cmlidXRlcyBoYXZlIGJlZW4KK2ZpbHRlcmVkIGZyb20gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIGBkaXJgIG9uIGEgYE1vY2tgLiBJZiB5b3UgZGlzbGlrZSB0aGlzCitiZWhhdmlvdXIgeW91IGNhbiBzd2l0Y2ggaXQgb2ZmIGJ5IHNldHRpbmcgdGhlIG1vZHVsZSBsZXZlbCBzd2l0Y2gKK2BGSUxURVJfRElSYDoKKworICAgID4+PiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisgICAgPj4+IG1vY2suRklMVEVSX0RJUiA9IEZhbHNlCisgICAgPj4+IGRpcihtb2NrLk1vY2soKSkKKyAgICBbJ19Ob25DYWxsYWJsZU1vY2tfX2dldF9yZXR1cm5fdmFsdWUnLAorICAgICAnX05vbkNhbGxhYmxlTW9ja19fZ2V0X3NpZGVfZWZmZWN0JywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX3JldHVybl92YWx1ZV9kb2MnLAorICAgICAnX05vbkNhbGxhYmxlTW9ja19fc2V0X3JldHVybl92YWx1ZScsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19zZXRfc2lkZV9lZmZlY3QnLAorICAgICAnX19jYWxsX18nLAorICAgICAnX19jbGFzc19fJywKKyAgICAgLi4uCisKK0FsdGVybmF0aXZlbHkgeW91IGNhbiBqdXN0IHVzZSBgdmFycyhteV9tb2NrKWAgKGluc3RhbmNlIG1lbWJlcnMpIGFuZAorYGRpcih0eXBlKG15X21vY2spKWAgKHR5cGUgbWVtYmVycykgdG8gYnlwYXNzIHRoZSBmaWx0ZXJpbmcgaXJyZXNwZWN0aXZlIG9mCitgbW9jay5GSUxURVJfRElSYC4KKworCittb2NrX29wZW4KKy0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IG1vY2tfb3Blbihtb2NrPU5vbmUsIHJlYWRfZGF0YT1Ob25lKQorCisgICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbW9jayB0byByZXBsYWNlIHRoZSB1c2Ugb2YgYG9wZW5gLiBJdCB3b3JrcworICAgIGZvciBgb3BlbmAgY2FsbGVkIGRpcmVjdGx5IG9yIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBUaGUgYG1vY2tgIGFyZ3VtZW50IGlzIHRoZSBtb2NrIG9iamVjdCB0byBjb25maWd1cmUuIElmIGBOb25lYCAodGhlCisgICAgZGVmYXVsdCkgdGhlbiBhIGBNYWdpY01vY2tgIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LCB3aXRoIHRoZSBBUEkgbGltaXRlZAorICAgIHRvIG1ldGhvZHMgb3IgYXR0cmlidXRlcyBhdmFpbGFibGUgb24gc3RhbmRhcmQgZmlsZSBoYW5kbGVzLgorCisgICAgYHJlYWRfZGF0YWAgaXMgYSBzdHJpbmcgZm9yIHRoZSBgcmVhZGAgbWV0aG9kIG9mIHRoZSBmaWxlIGhhbmRsZSB0byByZXR1cm4uCisgICAgVGhpcyBpcyBhbiBlbXB0eSBzdHJpbmcgYnkgZGVmYXVsdC4KKworVXNpbmcgYG9wZW5gIGFzIGEgY29udGV4dCBtYW5hZ2VyIGlzIGEgZ3JlYXQgd2F5IHRvIGVuc3VyZSB5b3VyIGZpbGUgaGFuZGxlcworYXJlIGNsb3NlZCBwcm9wZXJseSBhbmQgaXMgYmVjb21pbmcgY29tbW9uOjoKKworICAgIHdpdGggb3BlbignL3NvbWUvcGF0aCcsICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgnc29tZXRoaW5nJykKKworVGhlIGlzc3VlIGlzIHRoYXQgZXZlbiBpZiB5b3UgbW9jayBvdXQgdGhlIGNhbGwgdG8gYG9wZW5gIGl0IGlzIHRoZQorKnJldHVybmVkIG9iamVjdCogdGhhdCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIChhbmQgaGFzIGBfX2VudGVyX19gIGFuZAorYF9fZXhpdF9fYCBjYWxsZWQpLgorCitNb2NraW5nIGNvbnRleHQgbWFuYWdlcnMgd2l0aCBhIDpjbGFzczpgTWFnaWNNb2NrYCBpcyBjb21tb24gZW5vdWdoIGFuZCBmaWRkbHkKK2Vub3VnaCB0aGF0IGEgaGVscGVyIGZ1bmN0aW9uIGlzIHVzZWZ1bC4KKworICAgID4+PiBtID0gbW9ja19vcGVuKCkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18ub3BlbicsIG0sIGNyZWF0ZT1UcnVlKToKKyAgICAuLi4gICAgIHdpdGggb3BlbignZm9vJywgJ3cnKSBhcyBoOgorICAgIC4uLiAgICAgICAgIGgud3JpdGUoJ3NvbWUgc3R1ZmYnKQorICAgIC4uLgorICAgID4+PiBtLm1vY2tfY2FsbHMKKyAgICBbY2FsbCgnZm9vJywgJ3cnKSwKKyAgICAgY2FsbCgpLl9fZW50ZXJfXygpLAorICAgICBjYWxsKCkud3JpdGUoJ3NvbWUgc3R1ZmYnKSwKKyAgICAgY2FsbCgpLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpXQorICAgID4+PiBtLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nLCAndycpCisgICAgPj4+IGhhbmRsZSA9IG0oKQorICAgID4+PiBoYW5kbGUud3JpdGUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ3NvbWUgc3R1ZmYnKQorCitBbmQgZm9yIHJlYWRpbmcgZmlsZXM6CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18ub3BlbicsIG1vY2tfb3BlbihyZWFkX2RhdGE9J2JpYmJsZScpLCBjcmVhdGU9VHJ1ZSkgYXMgbToKKyAgICAuLi4gICAgIHdpdGggb3BlbignZm9vJykgYXMgaDoKKyAgICAuLi4gICAgICAgICByZXN1bHQgPSBoLnJlYWQoKQorICAgIC4uLgorICAgID4+PiBtLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nKQorICAgID4+PiBhc3NlcnQgcmVzdWx0ID09ICdiaWJibGUnCisKKworLi4gX2F1dG8tc3BlY2Npbmc6CisKK0F1dG9zcGVjY2luZworLS0tLS0tLS0tLS0tCisKK0F1dG9zcGVjY2luZyBpcyBiYXNlZCBvbiB0aGUgZXhpc3RpbmcgYHNwZWNgIGZlYXR1cmUgb2YgbW9jay4gSXQgbGltaXRzIHRoZQorYXBpIG9mIG1vY2tzIHRvIHRoZSBhcGkgb2YgYW4gb3JpZ2luYWwgb2JqZWN0ICh0aGUgc3BlYyksIGJ1dCBpdCBpcyByZWN1cnNpdmUKKyhpbXBsZW1lbnRlZCBsYXppbHkpIHNvIHRoYXQgYXR0cmlidXRlcyBvZiBtb2NrcyBvbmx5IGhhdmUgdGhlIHNhbWUgYXBpIGFzCit0aGUgYXR0cmlidXRlcyBvZiB0aGUgc3BlYy4gSW4gYWRkaXRpb24gbW9ja2VkIGZ1bmN0aW9ucyAvIG1ldGhvZHMgaGF2ZSB0aGUKK3NhbWUgY2FsbCBzaWduYXR1cmUgYXMgdGhlIG9yaWdpbmFsIHNvIHRoZXkgcmFpc2UgYSBgVHlwZUVycm9yYCBpZiB0aGV5IGFyZQorY2FsbGVkIGluY29ycmVjdGx5LgorCitCZWZvcmUgSSBleHBsYWluIGhvdyBhdXRvLXNwZWNjaW5nIHdvcmtzLCBoZXJlJ3Mgd2h5IGl0IGlzIG5lZWRlZC4KKworYE1vY2tgIGlzIGEgdmVyeSBwb3dlcmZ1bCBhbmQgZmxleGlibGUgb2JqZWN0LCBidXQgaXQgc3VmZmVycyBmcm9tIHR3byBmbGF3cword2hlbiB1c2VkIHRvIG1vY2sgb3V0IG9iamVjdHMgZnJvbSBhIHN5c3RlbSB1bmRlciB0ZXN0LiBPbmUgb2YgdGhlc2UgZmxhd3MgaXMKK3NwZWNpZmljIHRvIHRoZSBgTW9ja2AgYXBpIGFuZCB0aGUgb3RoZXIgaXMgYSBtb3JlIGdlbmVyYWwgcHJvYmxlbSB3aXRoIHVzaW5nCittb2NrIG9iamVjdHMuCisKK0ZpcnN0IHRoZSBwcm9ibGVtIHNwZWNpZmljIHRvIGBNb2NrYC4gYE1vY2tgIGhhcyB0d28gYXNzZXJ0IG1ldGhvZHMgdGhhdCBhcmUKK2V4dHJlbWVseSBoYW5keTogOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgYW5kCis6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKG5hbWU9J1RoaW5nJywgcmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soMSwgMiwgMykKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCAnbW9jaycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCitCZWNhdXNlIG1vY2tzIGF1dG8tY3JlYXRlIGF0dHJpYnV0ZXMgb24gZGVtYW5kLCBhbmQgYWxsb3cgeW91IHRvIGNhbGwgdGhlbQord2l0aCBhcmJpdHJhcnkgYXJndW1lbnRzLCBpZiB5b3UgbWlzc3BlbGwgb25lIG9mIHRoZXNlIGFzc2VydCBtZXRob2RzIHRoZW4KK3lvdXIgYXNzZXJ0aW9uIGlzIGdvbmU6CisKKy4uIGNvZGUtYmxvY2s6OiBweWNvbgorCisgICAgPj4+IG1vY2sgPSBNb2NrKG5hbWU9J1RoaW5nJywgcmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soMSwgMiwgMykKKyAgICA+Pj4gbW9jay5hc3NyZXRfY2FsbGVkX29uY2Vfd2l0aCg0LCA1LCA2KQorCitZb3VyIHRlc3RzIGNhbiBwYXNzIHNpbGVudGx5IGFuZCBpbmNvcnJlY3RseSBiZWNhdXNlIG9mIHRoZSB0eXBvLgorCitUaGUgc2Vjb25kIGlzc3VlIGlzIG1vcmUgZ2VuZXJhbCB0byBtb2NraW5nLiBJZiB5b3UgcmVmYWN0b3Igc29tZSBvZiB5b3VyCitjb2RlLCByZW5hbWUgbWVtYmVycyBhbmQgc28gb24sIGFueSB0ZXN0cyBmb3IgY29kZSB0aGF0IGlzIHN0aWxsIHVzaW5nIHRoZQorKm9sZCBhcGkqIGJ1dCB1c2VzIG1vY2tzIGluc3RlYWQgb2YgdGhlIHJlYWwgb2JqZWN0cyB3aWxsIHN0aWxsIHBhc3MuIFRoaXMKK21lYW5zIHlvdXIgdGVzdHMgY2FuIGFsbCBwYXNzIGV2ZW4gdGhvdWdoIHlvdXIgY29kZSBpcyBicm9rZW4uCisKK05vdGUgdGhhdCB0aGlzIGlzIGFub3RoZXIgcmVhc29uIHdoeSB5b3UgbmVlZCBpbnRlZ3JhdGlvbiB0ZXN0cyBhcyB3ZWxsIGFzCit1bml0IHRlc3RzLiBUZXN0aW5nIGV2ZXJ5dGhpbmcgaW4gaXNvbGF0aW9uIGlzIGFsbCBmaW5lIGFuZCBkYW5keSwgYnV0IGlmIHlvdQorZG9uJ3QgdGVzdCBob3cgeW91ciB1bml0cyBhcmUgIndpcmVkIHRvZ2V0aGVyIiB0aGVyZSBpcyBzdGlsbCBsb3RzIG9mIHJvb20KK2ZvciBidWdzIHRoYXQgdGVzdHMgbWlnaHQgaGF2ZSBjYXVnaHQuCisKK2Btb2NrYCBhbHJlYWR5IHByb3ZpZGVzIGEgZmVhdHVyZSB0byBoZWxwIHdpdGggdGhpcywgY2FsbGVkIHNwZWNjaW5nLiBJZiB5b3UKK3VzZSBhIGNsYXNzIG9yIGluc3RhbmNlIGFzIHRoZSBgc3BlY2AgZm9yIGEgbW9jayB0aGVuIHlvdSBjYW4gb25seSBhY2Nlc3MKK2F0dHJpYnV0ZXMgb24gdGhlIG1vY2sgdGhhdCBleGlzdCBvbiB0aGUgcmVhbCBjbGFzczoKKworICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBtb2NrID0gTW9jayhzcGVjPXJlcXVlc3QuUmVxdWVzdCkKKyAgICA+Pj4gbW9jay5hc3NyZXRfY2FsbGVkX3dpdGgKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhc3NyZXRfY2FsbGVkX3dpdGgnCisKK1RoZSBzcGVjIG9ubHkgYXBwbGllcyB0byB0aGUgbW9jayBpdHNlbGYsIHNvIHdlIHN0aWxsIGhhdmUgdGhlIHNhbWUgaXNzdWUKK3dpdGggYW55IG1ldGhvZHMgb24gdGhlIG1vY2s6CisKKy4uIGNvZGUtYmxvY2s6OiBweWNvbgorCisgICAgPj4+IG1vY2suaGFzX2RhdGEoKQorICAgIDxtb2NrLk1vY2sgb2JqZWN0IGF0IDB4Li4uPgorICAgID4+PiBtb2NrLmhhc19kYXRhLmFzc3JldF9jYWxsZWRfd2l0aCgpCisKK0F1dG8tc3BlY2Npbmcgc29sdmVzIHRoaXMgcHJvYmxlbS4gWW91IGNhbiBlaXRoZXIgcGFzcyBgYXV0b3NwZWM9VHJ1ZWAgdG8KK2BwYXRjaGAgLyBgcGF0Y2gub2JqZWN0YCBvciB1c2UgdGhlIGBjcmVhdGVfYXV0b3NwZWNgIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhCittb2NrIHdpdGggYSBzcGVjLiBJZiB5b3UgdXNlIHRoZSBgYXV0b3NwZWM9VHJ1ZWAgYXJndW1lbnQgdG8gYHBhdGNoYCB0aGVuIHRoZQorb2JqZWN0IHRoYXQgaXMgYmVpbmcgcmVwbGFjZWQgd2lsbCBiZSB1c2VkIGFzIHRoZSBzcGVjIG9iamVjdC4gQmVjYXVzZSB0aGUKK3NwZWNjaW5nIGlzIGRvbmUgImxhemlseSIgKHRoZSBzcGVjIGlzIGNyZWF0ZWQgYXMgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhcmUKK2FjY2Vzc2VkKSB5b3UgY2FuIHVzZSBpdCB3aXRoIHZlcnkgY29tcGxleCBvciBkZWVwbHkgbmVzdGVkIG9iamVjdHMgKGxpa2UKK21vZHVsZXMgdGhhdCBpbXBvcnQgbW9kdWxlcyB0aGF0IGltcG9ydCBtb2R1bGVzKSB3aXRob3V0IGEgYmlnIHBlcmZvcm1hbmNlCitoaXQuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGl0IGluIHVzZToKKworICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ19fbWFpbl9fLnJlcXVlc3QnLCBhdXRvc3BlYz1UcnVlKQorICAgID4+PiBtb2NrX3JlcXVlc3QgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICA+Pj4gcmVxdWVzdCBpcyBtb2NrX3JlcXVlc3QKKyAgICBUcnVlCisgICAgPj4+IG1vY2tfcmVxdWVzdC5SZXF1ZXN0CisgICAgPE1hZ2ljTW9jayBuYW1lPSdyZXF1ZXN0LlJlcXVlc3QnIHNwZWM9J1JlcXVlc3QnIGlkPScuLi4nPgorCitZb3UgY2FuIHNlZSB0aGF0IGByZXF1ZXN0LlJlcXVlc3RgIGhhcyBhIHNwZWMuIGByZXF1ZXN0LlJlcXVlc3RgIHRha2VzIHR3bworYXJndW1lbnRzIGluIHRoZSBjb25zdHJ1Y3RvciAob25lIG9mIHdoaWNoIGlzIGBzZWxmYCkuIEhlcmUncyB3aGF0IGhhcHBlbnMgaWYKK3dlIHRyeSB0byBjYWxsIGl0IGluY29ycmVjdGx5OgorCisgICAgPj4+IHJlcSA9IHJlcXVlc3QuUmVxdWVzdCgpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IDxsYW1iZGE+KCkgdGFrZXMgYXQgbGVhc3QgMiBhcmd1bWVudHMgKDEgZ2l2ZW4pCisKK1RoZSBzcGVjIGFsc28gYXBwbGllcyB0byBpbnN0YW50aWF0ZWQgY2xhc3NlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mCitzcGVjY2VkIG1vY2tzKToKKworICAgID4+PiByZXEgPSByZXF1ZXN0LlJlcXVlc3QoJ2ZvbycpCisgICAgPj4+IHJlcQorICAgIDxOb25DYWxsYWJsZU1hZ2ljTW9jayBuYW1lPSdyZXF1ZXN0LlJlcXVlc3QoKScgc3BlYz0nUmVxdWVzdCcgaWQ9Jy4uLic+CisKK2BSZXF1ZXN0YCBvYmplY3RzIGFyZSBub3QgY2FsbGFibGUsIHNvIHRoZSByZXR1cm4gdmFsdWUgb2YgaW5zdGFudGlhdGluZyBvdXIKK21vY2tlZCBvdXQgYHJlcXVlc3QuUmVxdWVzdGAgaXMgYSBub24tY2FsbGFibGUgbW9jay4gV2l0aCB0aGUgc3BlYyBpbiBwbGFjZQorYW55IHR5cG9zIGluIG91ciBhc3NlcnRzIHdpbGwgcmFpc2UgdGhlIGNvcnJlY3QgZXJyb3I6CisKKyAgICA+Pj4gcmVxLmFkZF9oZWFkZXIoJ3NwYW0nLCAnZWdncycpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdyZXF1ZXN0LlJlcXVlc3QoKS5hZGRfaGVhZGVyKCknIGlkPScuLi4nPgorICAgID4+PiByZXEuYWRkX2hlYWRlci5hc3NyZXRfY2FsbGVkX3dpdGgKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhc3NyZXRfY2FsbGVkX3dpdGgnCisgICAgPj4+IHJlcS5hZGRfaGVhZGVyLmFzc2VydF9jYWxsZWRfd2l0aCgnc3BhbScsICdlZ2dzJykKKworSW4gbWFueSBjYXNlcyB5b3Ugd2lsbCBqdXN0IGJlIGFibGUgdG8gYWRkIGBhdXRvc3BlYz1UcnVlYCB0byB5b3VyIGV4aXN0aW5nCitgcGF0Y2hgIGNhbGxzIGFuZCB0aGVuIGJlIHByb3RlY3RlZCBhZ2FpbnN0IGJ1Z3MgZHVlIHRvIHR5cG9zIGFuZCBhcGkKK2NoYW5nZXMuCisKK0FzIHdlbGwgYXMgdXNpbmcgYGF1dG9zcGVjYCB0aHJvdWdoIGBwYXRjaGAgdGhlcmUgaXMgYQorOmZ1bmM6YGNyZWF0ZV9hdXRvc3BlY2AgZm9yIGNyZWF0aW5nIGF1dG9zcGVjY2VkIG1vY2tzIGRpcmVjdGx5OgorCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IG1vY2tfcmVxdWVzdCA9IGNyZWF0ZV9hdXRvc3BlYyhyZXF1ZXN0KQorICAgID4+PiBtb2NrX3JlcXVlc3QuUmVxdWVzdCgnZm9vJywgJ2JhcicpCisgICAgPE5vbkNhbGxhYmxlTWFnaWNNb2NrIG5hbWU9J21vY2suUmVxdWVzdCgpJyBzcGVjPSdSZXF1ZXN0JyBpZD0nLi4uJz4KKworVGhpcyBpc24ndCB3aXRob3V0IGNhdmVhdHMgYW5kIGxpbWl0YXRpb25zIGhvd2V2ZXIsIHdoaWNoIGlzIHdoeSBpdCBpcyBub3QKK3RoZSBkZWZhdWx0IGJlaGF2aW91ci4gSW4gb3JkZXIgdG8ga25vdyB3aGF0IGF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSBvbiB0aGUKK3NwZWMgb2JqZWN0LCBhdXRvc3BlYyBoYXMgdG8gaW50cm9zcGVjdCAoYWNjZXNzIGF0dHJpYnV0ZXMpIHRoZSBzcGVjLiBBcyB5b3UKK3RyYXZlcnNlIGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYSBjb3JyZXNwb25kaW5nIHRyYXZlcnNhbCBvZiB0aGUgb3JpZ2luYWwKK29iamVjdCBpcyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIElmIGFueSBvZiB5b3VyIHNwZWNjZWQgb2JqZWN0cyBoYXZlCitwcm9wZXJ0aWVzIG9yIGRlc2NyaXB0b3JzIHRoYXQgY2FuIHRyaWdnZXIgY29kZSBleGVjdXRpb24gdGhlbiB5b3UgbWF5IG5vdCBiZQorYWJsZSB0byB1c2UgYXV0b3NwZWMuIE9uIHRoZSBvdGhlciBoYW5kIGl0IGlzIG11Y2ggYmV0dGVyIHRvIGRlc2lnbiB5b3VyCitvYmplY3RzIHNvIHRoYXQgaW50cm9zcGVjdGlvbiBpcyBzYWZlIFsjXV8uCisKK0EgbW9yZSBzZXJpb3VzIHByb2JsZW0gaXMgdGhhdCBpdCBpcyBjb21tb24gZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMgdG8gYmUKK2NyZWF0ZWQgaW4gdGhlIGBfX2luaXRfX2AgbWV0aG9kIGFuZCBub3QgdG8gZXhpc3Qgb24gdGhlIGNsYXNzIGF0IGFsbC4KK2BhdXRvc3BlY2AgY2FuJ3Qga25vdyBhYm91dCBhbnkgZHluYW1pY2FsbHkgY3JlYXRlZCBhdHRyaWJ1dGVzIGFuZCByZXN0cmljdHMKK3RoZSBhcGkgdG8gdmlzaWJsZSBhdHRyaWJ1dGVzLgorCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIC4uLiAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgIHNlbGYuYSA9IDMzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVRydWUpOgorICAgIC4uLiAgIHRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAuLi4gICB0aGluZy5hCisgICAgLi4uCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2EnCisKK1RoZXJlIGFyZSBhIGZldyBkaWZmZXJlbnQgd2F5cyBvZiByZXNvbHZpbmcgdGhpcyBwcm9ibGVtLiBUaGUgZWFzaWVzdCwgYnV0Citub3QgbmVjZXNzYXJpbHkgdGhlIGxlYXN0IGFubm95aW5nLCB3YXkgaXMgdG8gc2ltcGx5IHNldCB0aGUgcmVxdWlyZWQKK2F0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgY3JlYXRpb24uIEp1c3QgYmVjYXVzZSBgYXV0b3NwZWNgIGRvZXNuJ3QgYWxsb3cKK3lvdSB0byBmZXRjaCBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3Qgb24gdGhlIHNwZWMgaXQgZG9lc24ndCBwcmV2ZW50IHlvdQorc2V0dGluZyB0aGVtOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVRydWUpOgorICAgIC4uLiAgIHRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAuLi4gICB0aGluZy5hID0gMzMKKyAgICAuLi4KKworVGhlcmUgaXMgYSBtb3JlIGFnZ3Jlc3NpdmUgdmVyc2lvbiBvZiBib3RoIGBzcGVjYCBhbmQgYGF1dG9zcGVjYCB0aGF0ICpkb2VzKgorcHJldmVudCB5b3Ugc2V0dGluZyBub24tZXhpc3RlbnQgYXR0cmlidXRlcy4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8KK2Vuc3VyZSB5b3VyIGNvZGUgb25seSAqc2V0cyogdmFsaWQgYXR0cmlidXRlcyB0b28sIGJ1dCBvYnZpb3VzbHkgaXQgcHJldmVudHMKK3RoaXMgcGFydGljdWxhciBzY2VuYXJpbzoKKworICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Tb21ldGhpbmcnLCBhdXRvc3BlYz1UcnVlLCBzcGVjX3NldD1UcnVlKToKKyAgICAuLi4gICB0aGluZyA9IFNvbWV0aGluZygpCisgICAgLi4uICAgdGhpbmcuYSA9IDMzCisgICAgLi4uCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYScKKworUHJvYmFibHkgdGhlIGJlc3Qgd2F5IG9mIHNvbHZpbmcgdGhlIHByb2JsZW0gaXMgdG8gYWRkIGNsYXNzIGF0dHJpYnV0ZXMgYXMKK2RlZmF1bHQgdmFsdWVzIGZvciBpbnN0YW5jZSBtZW1iZXJzIGluaXRpYWxpc2VkIGluIGBfX2luaXRfX2AuIE5vdGUgdGhhdCBpZgoreW91IGFyZSBvbmx5IHNldHRpbmcgZGVmYXVsdCBhdHRyaWJ1dGVzIGluIGBfX2luaXRfX2AgdGhlbiBwcm92aWRpbmcgdGhlbSB2aWEKK2NsYXNzIGF0dHJpYnV0ZXMgKHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiBjb3Vyc2UpIGlzIGZhc3RlciB0b28uIGUuZy4KKworLi4gY29kZS1ibG9jazo6IHB5dGhvbgorCisgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgIGEgPSAzMworCitUaGlzIGJyaW5ncyB1cCBhbm90aGVyIGlzc3VlLiBJdCBpcyByZWxhdGl2ZWx5IGNvbW1vbiB0byBwcm92aWRlIGEgZGVmYXVsdAordmFsdWUgb2YgYE5vbmVgIGZvciBtZW1iZXJzIHRoYXQgd2lsbCBsYXRlciBiZSBhbiBvYmplY3Qgb2YgYSBkaWZmZXJlbnQgdHlwZS4KK2BOb25lYCB3b3VsZCBiZSB1c2VsZXNzIGFzIGEgc3BlYyBiZWNhdXNlIGl0IHdvdWxkbid0IGxldCB5b3UgYWNjZXNzICphbnkqCithdHRyaWJ1dGVzIG9yIG1ldGhvZHMgb24gaXQuIEFzIGBOb25lYCBpcyAqbmV2ZXIqIGdvaW5nIHRvIGJlIHVzZWZ1bCBhcyBhCitzcGVjLCBhbmQgcHJvYmFibHkgaW5kaWNhdGVzIGEgbWVtYmVyIHRoYXQgd2lsbCBub3JtYWxseSBvZiBzb21lIG90aGVyIHR5cGUsCitgYXV0b3NwZWNgIGRvZXNuJ3QgdXNlIGEgc3BlYyBmb3IgbWVtYmVycyB0aGF0IGFyZSBzZXQgdG8gYE5vbmVgLiBUaGVzZSB3aWxsCitqdXN0IGJlIG9yZGluYXJ5IG1vY2tzICh3ZWxsIC0gYE1hZ2ljTW9ja3NgKToKKworICAgID4+PiBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAuLi4gICAgIG1lbWJlciA9IE5vbmUKKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhTb21ldGhpbmcpCisgICAgPj4+IG1vY2subWVtYmVyLmZvby5iYXIuYmF6KCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2subWVtYmVyLmZvby5iYXIuYmF6KCknIGlkPScuLi4nPgorCitJZiBtb2RpZnlpbmcgeW91ciBwcm9kdWN0aW9uIGNsYXNzZXMgdG8gYWRkIGRlZmF1bHRzIGlzbid0IHRvIHlvdXIgbGlraW5nCit0aGVuIHRoZXJlIGFyZSBtb3JlIG9wdGlvbnMuIE9uZSBvZiB0aGVzZSBpcyBzaW1wbHkgdG8gdXNlIGFuIGluc3RhbmNlIGFzIHRoZQorc3BlYyByYXRoZXIgdGhhbiB0aGUgY2xhc3MuIFRoZSBvdGhlciBpcyB0byBjcmVhdGUgYSBzdWJjbGFzcyBvZiB0aGUKK3Byb2R1Y3Rpb24gY2xhc3MgYW5kIGFkZCB0aGUgZGVmYXVsdHMgdG8gdGhlIHN1YmNsYXNzIHdpdGhvdXQgYWZmZWN0aW5nIHRoZQorcHJvZHVjdGlvbiBjbGFzcy4gQm90aCBvZiB0aGVzZSByZXF1aXJlIHlvdSB0byB1c2UgYW4gYWx0ZXJuYXRpdmUgb2JqZWN0IGFzCit0aGUgc3BlYy4gVGhhbmtmdWxseSBgcGF0Y2hgIHN1cHBvcnRzIHRoaXMgLSB5b3UgY2FuIHNpbXBseSBwYXNzIHRoZQorYWx0ZXJuYXRpdmUgb2JqZWN0IGFzIHRoZSBgYXV0b3NwZWNgIGFyZ3VtZW50OgorCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIC4uLiAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgIHNlbGYuYSA9IDMzCisgICAgLi4uCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZ0ZvclRlc3QoU29tZXRoaW5nKToKKyAgICAuLi4gICBhID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gcCA9IHBhdGNoKCdfX21haW5fXy5Tb21ldGhpbmcnLCBhdXRvc3BlYz1Tb21ldGhpbmdGb3JUZXN0KQorICAgID4+PiBtb2NrID0gcC5zdGFydCgpCisgICAgPj4+IG1vY2suYQorICAgIDxOb25DYWxsYWJsZU1hZ2ljTW9jayBuYW1lPSdTb21ldGhpbmcuYScgc3BlYz0naW50JyBpZD0nLi4uJz4KKworCisuLiBbI10gVGhpcyBvbmx5IGFwcGxpZXMgdG8gY2xhc3NlcyBvciBhbHJlYWR5IGluc3RhbnRpYXRlZCBvYmplY3RzLiBDYWxsaW5nCisgICBhIG1vY2tlZCBjbGFzcyB0byBjcmVhdGUgYSBtb2NrIGluc3RhbmNlICpkb2VzIG5vdCogY3JlYXRlIGEgcmVhbCBpbnN0YW5jZS4KKyAgIEl0IGlzIG9ubHkgYXR0cmlidXRlIGxvb2t1cHMgLSBhbG9uZyB3aXRoIGNhbGxzIHRvIGBkaXJgIC0gdGhhdCBhcmUgZG9uZS4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CmluZGV4IDQ0MjI1MzMuLjM0NzY5NTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKQEAgLTExLDE3ICsxMSwxNCBAQAogKElmIHlvdSBhcmUgYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBiYXNpYyBjb25jZXB0cyBvZiB0ZXN0aW5nLCB5b3UgbWlnaHQgd2FudAogdG8gc2tpcCB0byA6cmVmOmB0aGUgbGlzdCBvZiBhc3NlcnQgbWV0aG9kcyA8YXNzZXJ0LW1ldGhvZHM+YC4pCiAKLVRoZSBQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yaywgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICJQeVVuaXQsIiBpcyBhCi1QeXRob24gbGFuZ3VhZ2UgdmVyc2lvbiBvZiBKVW5pdCwgYnkgS2VudCBCZWNrIGFuZCBFcmljaCBHYW1tYS4gSlVuaXQgaXMsIGluCi10dXJuLCBhIEphdmEgdmVyc2lvbiBvZiBLZW50J3MgU21hbGx0YWxrIHRlc3RpbmcgZnJhbWV3b3JrLiAgRWFjaCBpcyB0aGUgZGUKLWZhY3RvIHN0YW5kYXJkIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIGl0cyByZXNwZWN0aXZlIGxhbmd1YWdlLgorVGhlIDptb2Q6YHVuaXR0ZXN0YCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIHdhcyBvcmlnaW5hbGx5IGluc3BpcmVkIGJ5IEpVbml0CithbmQgaGFzIGEgc2ltaWxhciBmbGF2b3IgYXMgbWFqb3IgdW5pdCB0ZXN0aW5nIGZyYW1ld29ya3MgaW4gb3RoZXIKK2xhbmd1YWdlcy4gIEl0IHN1cHBvcnRzIHRlc3QgYXV0b21hdGlvbiwgc2hhcmluZyBvZiBzZXR1cCBhbmQgc2h1dGRvd24gY29kZQorZm9yIHRlc3RzLCBhZ2dyZWdhdGlvbiBvZiB0ZXN0cyBpbnRvIGNvbGxlY3Rpb25zLCBhbmQgaW5kZXBlbmRlbmNlIG9mIHRoZQordGVzdHMgZnJvbSB0aGUgcmVwb3J0aW5nIGZyYW1ld29yay4KIAotOm1vZDpgdW5pdHRlc3RgIHN1cHBvcnRzIHRlc3QgYXV0b21hdGlvbiwgc2hhcmluZyBvZiBzZXR1cCBhbmQgc2h1dGRvd24gY29kZSBmb3IKLXRlc3RzLCBhZ2dyZWdhdGlvbiBvZiB0ZXN0cyBpbnRvIGNvbGxlY3Rpb25zLCBhbmQgaW5kZXBlbmRlbmNlIG9mIHRoZSB0ZXN0cyBmcm9tCi10aGUgcmVwb3J0aW5nIGZyYW1ld29yay4gIFRoZSA6bW9kOmB1bml0dGVzdGAgbW9kdWxlIHByb3ZpZGVzIGNsYXNzZXMgdGhhdCBtYWtlCi1pdCBlYXN5IHRvIHN1cHBvcnQgdGhlc2UgcXVhbGl0aWVzIGZvciBhIHNldCBvZiB0ZXN0cy4KLQotVG8gYWNoaWV2ZSB0aGlzLCA6bW9kOmB1bml0dGVzdGAgc3VwcG9ydHMgc29tZSBpbXBvcnRhbnQgY29uY2VwdHM6CitUbyBhY2hpZXZlIHRoaXMsIDptb2Q6YHVuaXR0ZXN0YCBzdXBwb3J0cyBzb21lIGltcG9ydGFudCBjb25jZXB0cyBpbiBhbgorb2JqZWN0LW9yaWVudGVkIHdheToKIAogdGVzdCBmaXh0dXJlCiAgICBBIDpkZm46YHRlc3QgZml4dHVyZWAgcmVwcmVzZW50cyB0aGUgcHJlcGFyYXRpb24gbmVlZGVkIHRvIHBlcmZvcm0gb25lIG9yIG1vcmUKQEAgLTMwLDcgKzI3LDcgQEAKICAgIHByb2Nlc3MuCiAKIHRlc3QgY2FzZQotICAgQSA6ZGZuOmB0ZXN0IGNhc2VgIGlzIHRoZSBzbWFsbGVzdCB1bml0IG9mIHRlc3RpbmcuICBJdCBjaGVja3MgZm9yIGEgc3BlY2lmaWMKKyAgIEEgOmRmbjpgdGVzdCBjYXNlYCBpcyB0aGUgaW5kaXZpZHVhbCB1bml0IG9mIHRlc3RpbmcuICBJdCBjaGVja3MgZm9yIGEgc3BlY2lmaWMKICAgIHJlc3BvbnNlIHRvIGEgcGFydGljdWxhciBzZXQgb2YgaW5wdXRzLiAgOm1vZDpgdW5pdHRlc3RgIHByb3ZpZGVzIGEgYmFzZSBjbGFzcywKICAgIDpjbGFzczpgVGVzdENhc2VgLCB3aGljaCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgbmV3IHRlc3QgY2FzZXMuCiAKQEAgLTQ0LDQzICs0MSwxMiBAQAogICAgYSB0ZXh0dWFsIGludGVyZmFjZSwgb3IgcmV0dXJuIGEgc3BlY2lhbCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0cyBvZgogICAgZXhlY3V0aW5nIHRoZSB0ZXN0cy4KIAotVGhlIHRlc3QgY2FzZSBhbmQgdGVzdCBmaXh0dXJlIGNvbmNlcHRzIGFyZSBzdXBwb3J0ZWQgdGhyb3VnaCB0aGUKLTpjbGFzczpgVGVzdENhc2VgIGFuZCA6Y2xhc3M6YEZ1bmN0aW9uVGVzdENhc2VgIGNsYXNzZXM7IHRoZSBmb3JtZXIgc2hvdWxkIGJlCi11c2VkIHdoZW4gY3JlYXRpbmcgbmV3IHRlc3RzLCBhbmQgdGhlIGxhdHRlciBjYW4gYmUgdXNlZCB3aGVuIGludGVncmF0aW5nCi1leGlzdGluZyB0ZXN0IGNvZGUgd2l0aCBhIDptb2Q6YHVuaXR0ZXN0YFwgLWRyaXZlbiBmcmFtZXdvcmsuIFdoZW4gYnVpbGRpbmcgdGVzdAotZml4dHVyZXMgdXNpbmcgOmNsYXNzOmBUZXN0Q2FzZWAsIHRoZSA6bWV0aDpgflRlc3RDYXNlLnNldFVwYCBhbmQKLTptZXRoOmB+VGVzdENhc2UudGVhckRvd25gIG1ldGhvZHMgY2FuIGJlIG92ZXJyaWRkZW4gdG8gcHJvdmlkZSBpbml0aWFsaXphdGlvbgotYW5kIGNsZWFudXAgZm9yIHRoZSBmaXh0dXJlLiAgV2l0aCA6Y2xhc3M6YEZ1bmN0aW9uVGVzdENhc2VgLCBleGlzdGluZyBmdW5jdGlvbnMKLWNhbiBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGZvciB0aGVzZSBwdXJwb3Nlcy4gIFdoZW4gdGhlIHRlc3QgaXMgcnVuLCB0aGUKLWZpeHR1cmUgaW5pdGlhbGl6YXRpb24gaXMgcnVuIGZpcnN0OyBpZiBpdCBzdWNjZWVkcywgdGhlIGNsZWFudXAgbWV0aG9kIGlzIHJ1bgotYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gZXhlY3V0ZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIG91dGNvbWUgb2YgdGhlIHRlc3QuICBFYWNoCi1pbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBUZXN0Q2FzZWAgd2lsbCBvbmx5IGJlIHVzZWQgdG8gcnVuIGEgc2luZ2xlIHRlc3QgbWV0aG9kLAotc28gYSBuZXcgZml4dHVyZSBpcyBjcmVhdGVkIGZvciBlYWNoIHRlc3QuCi0KLVRlc3Qgc3VpdGVzIGFyZSBpbXBsZW1lbnRlZCBieSB0aGUgOmNsYXNzOmBUZXN0U3VpdGVgIGNsYXNzLiAgVGhpcyBjbGFzcyBhbGxvd3MKLWluZGl2aWR1YWwgdGVzdHMgYW5kIHRlc3Qgc3VpdGVzIHRvIGJlIGFnZ3JlZ2F0ZWQ7IHdoZW4gdGhlIHN1aXRlIGlzIGV4ZWN1dGVkLAotYWxsIHRlc3RzIGFkZGVkIGRpcmVjdGx5IHRvIHRoZSBzdWl0ZSBhbmQgaW4gImNoaWxkIiB0ZXN0IHN1aXRlcyBhcmUgcnVuLgotCi1BIHRlc3QgcnVubmVyIGlzIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIGEgc2luZ2xlIG1ldGhvZCwKLTptZXRoOmB+VGVzdFJ1bm5lci5ydW5gLCB3aGljaCBhY2NlcHRzIGEgOmNsYXNzOmBUZXN0Q2FzZWAgb3IgOmNsYXNzOmBUZXN0U3VpdGVgCi1vYmplY3QgYXMgYSBwYXJhbWV0ZXIsIGFuZCByZXR1cm5zIGEgcmVzdWx0IG9iamVjdC4gIFRoZSBjbGFzcwotOmNsYXNzOmBUZXN0UmVzdWx0YCBpcyBwcm92aWRlZCBmb3IgdXNlIGFzIHRoZSByZXN1bHQgb2JqZWN0LiA6bW9kOmB1bml0dGVzdGAKLXByb3ZpZGVzIHRoZSA6Y2xhc3M6YFRleHRUZXN0UnVubmVyYCBhcyBhbiBleGFtcGxlIHRlc3QgcnVubmVyIHdoaWNoIHJlcG9ydHMKLXRlc3QgcmVzdWx0cyBvbiB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGJ5IGRlZmF1bHQuICBBbHRlcm5hdGUgcnVubmVycyBjYW4gYmUKLWltcGxlbWVudGVkIGZvciBvdGhlciBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgZ3JhcGhpY2FsIGVudmlyb25tZW50cykgd2l0aG91dCBhbnkKLW5lZWQgdG8gZGVyaXZlIGZyb20gYSBzcGVjaWZpYyBjbGFzcy4KLQogCiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YGRvY3Rlc3RgCiAgICAgICBBbm90aGVyIHRlc3Qtc3VwcG9ydCBtb2R1bGUgd2l0aCBhIHZlcnkgZGlmZmVyZW50IGZsYXZvci4KIAotICAgYHVuaXR0ZXN0MjogQSBiYWNrcG9ydCBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMgZm9yIFB5dGhvbiAyLjQtMi42IDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvdW5pdHRlc3QyPmBfCi0gICAgICBNYW55IG5ldyBmZWF0dXJlcyB3ZXJlIGFkZGVkIHRvIHVuaXR0ZXN0IGluIFB5dGhvbiAyLjcsIGluY2x1ZGluZyB0ZXN0Ci0gICAgICBkaXNjb3ZlcnkuIHVuaXR0ZXN0MiBhbGxvd3MgeW91IHRvIHVzZSB0aGVzZSBmZWF0dXJlcyB3aXRoIGVhcmxpZXIKLSAgICAgIHZlcnNpb25zIG9mIFB5dGhvbi4KLQogICAgYFNpbXBsZSBTbWFsbHRhbGsgVGVzdGluZzogV2l0aCBQYXR0ZXJucyA8aHR0cDovL3d3dy5YUHJvZ3JhbW1pbmcuY29tL3Rlc3RmcmFtLmh0bT5gXwogICAgICAgS2VudCBCZWNrJ3Mgb3JpZ2luYWwgcGFwZXIgb24gdGVzdGluZyBmcmFtZXdvcmtzIHVzaW5nIHRoZSBwYXR0ZXJuIHNoYXJlZAogICAgICAgYnkgOm1vZDpgdW5pdHRlc3RgLgpAQCAtODksNyArNTUsNyBAQAogICAgICAgVGhpcmQtcGFydHkgdW5pdHRlc3QgZnJhbWV3b3JrcyB3aXRoIGEgbGlnaHRlci13ZWlnaHQgc3ludGF4IGZvciB3cml0aW5nCiAgICAgICB0ZXN0cy4gIEZvciBleGFtcGxlLCBgYGFzc2VydCBmdW5jKDEwKSA9PSA0MmBgLgogCi0gICBgVGhlIFB5dGhvbiBUZXN0aW5nIFRvb2xzIFRheG9ub215IDxodHRwOi8vcHljaGVlc2VjYWtlLm9yZy93aWtpL1B5dGhvblRlc3RpbmdUb29sc1RheG9ub215PmBfCisgICBgVGhlIFB5dGhvbiBUZXN0aW5nIFRvb2xzIFRheG9ub215IDxodHRwOi8vd2lraS5weXRob24ub3JnL21vaW4vUHl0aG9uVGVzdGluZ1Rvb2xzVGF4b25vbXk+YF8KICAgICAgIEFuIGV4dGVuc2l2ZSBsaXN0IG9mIFB5dGhvbiB0ZXN0aW5nIHRvb2xzIGluY2x1ZGluZyBmdW5jdGlvbmFsIHRlc3RpbmcKICAgICAgIGZyYW1ld29ya3MgYW5kIG1vY2sgb2JqZWN0IGxpYnJhcmllcy4KIApAQCAtMTczLDE1ICsxMzksOCBAQAogCiAgICBPSwogCi1JbnN0ZWFkIG9mIDpmdW5jOmB1bml0dGVzdC5tYWluYCwgdGhlcmUgYXJlIG90aGVyIHdheXMgdG8gcnVuIHRoZSB0ZXN0cyB3aXRoIGEKLWZpbmVyIGxldmVsIG9mIGNvbnRyb2wsIGxlc3MgdGVyc2Ugb3V0cHV0LCBhbmQgbm8gcmVxdWlyZW1lbnQgdG8gYmUgcnVuIGZyb20gdGhlCi1jb21tYW5kIGxpbmUuICBGb3IgZXhhbXBsZSwgdGhlIGxhc3QgdHdvIGxpbmVzIG1heSBiZSByZXBsYWNlZCB3aXRoOjoKLQotICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkubG9hZFRlc3RzRnJvbVRlc3RDYXNlKFRlc3RTZXF1ZW5jZUZ1bmN0aW9ucykKLSAgIHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHZlcmJvc2l0eT0yKS5ydW4oc3VpdGUpCi0KLVJ1bm5pbmcgdGhlIHJldmlzZWQgc2NyaXB0IGZyb20gdGhlIGludGVycHJldGVyIG9yIGFub3RoZXIgc2NyaXB0IHByb2R1Y2VzIHRoZQotZm9sbG93aW5nIG91dHB1dDo6CitQYXNzaW5nIHRoZSBgYC12YGAgb3B0aW9uIHRvIHlvdXIgdGVzdCBzY3JpcHQgd2lsbCBpbnN0cnVjdCA6ZnVuYzpgdW5pdHRlc3QubWFpbmAKK3RvIGVuYWJsZSBhIGhpZ2hlciBsZXZlbCBvZiB2ZXJib3NpdHksIGFuZCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgb3V0cHV0OjoKIAogICAgdGVzdF9jaG9pY2UgKF9fbWFpbl9fLlRlc3RTZXF1ZW5jZUZ1bmN0aW9ucykgLi4uIG9rCiAgICB0ZXN0X3NhbXBsZSAoX19tYWluX18uVGVzdFNlcXVlbmNlRnVuY3Rpb25zKSAuLi4gb2sKQEAgLTM1OSw0NSArMzE4LDMwIEBACiBUbyBtYWtlIHlvdXIgb3duIHRlc3QgY2FzZXMgeW91IG11c3Qgd3JpdGUgc3ViY2xhc3NlcyBvZgogOmNsYXNzOmBUZXN0Q2FzZWAgb3IgdXNlIDpjbGFzczpgRnVuY3Rpb25UZXN0Q2FzZWAuCiAKLUFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmBUZXN0Q2FzZWBcIC1kZXJpdmVkIGNsYXNzIGlzIGFuIG9iamVjdCB0aGF0IGNhbgotY29tcGxldGVseSBydW4gYSBzaW5nbGUgdGVzdCBtZXRob2QsIHRvZ2V0aGVyIHdpdGggb3B0aW9uYWwgc2V0LXVwIGFuZCB0aWR5LXVwCi1jb2RlLgotCiBUaGUgdGVzdGluZyBjb2RlIG9mIGEgOmNsYXNzOmBUZXN0Q2FzZWAgaW5zdGFuY2Ugc2hvdWxkIGJlIGVudGlyZWx5IHNlbGYKIGNvbnRhaW5lZCwgc3VjaCB0aGF0IGl0IGNhbiBiZSBydW4gZWl0aGVyIGluIGlzb2xhdGlvbiBvciBpbiBhcmJpdHJhcnkKIGNvbWJpbmF0aW9uIHdpdGggYW55IG51bWJlciBvZiBvdGhlciB0ZXN0IGNhc2VzLgogCi1UaGUgc2ltcGxlc3QgOmNsYXNzOmBUZXN0Q2FzZWAgc3ViY2xhc3Mgd2lsbCBzaW1wbHkgb3ZlcnJpZGUgdGhlCi06bWV0aDpgflRlc3RDYXNlLnJ1blRlc3RgIG1ldGhvZCBpbiBvcmRlciB0byBwZXJmb3JtIHNwZWNpZmljIHRlc3RpbmcgY29kZTo6CitUaGUgc2ltcGxlc3QgOmNsYXNzOmBUZXN0Q2FzZWAgc3ViY2xhc3Mgd2lsbCBzaW1wbHkgaW1wbGVtZW50IGEgdGVzdCBtZXRob2QKKyhpLmUuIGEgbWV0aG9kIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggYGB0ZXN0YGApIGluIG9yZGVyIHRvIHBlcmZvcm0gc3BlY2lmaWMKK3Rlc3RpbmcgY29kZTo6CiAKICAgIGltcG9ydCB1bml0dGVzdAogCiAgICBjbGFzcyBEZWZhdWx0V2lkZ2V0U2l6ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICBkZWYgdGVzdF9kZWZhdWx0X3dpZGdldF9zaXplKHNlbGYpOgogICAgICAgICAgICB3aWRnZXQgPSBXaWRnZXQoJ1RoZSB3aWRnZXQnKQotICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpZGdldC5zaXplKCksICg1MCwgNTApLCAnaW5jb3JyZWN0IGRlZmF1bHQgc2l6ZScpCisgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lkZ2V0LnNpemUoKSwgKDUwLCA1MCkpCiAKIE5vdGUgdGhhdCBpbiBvcmRlciB0byB0ZXN0IHNvbWV0aGluZywgd2UgdXNlIG9uZSBvZiB0aGUgOm1ldGg6YGFzc2VydFwqYAogbWV0aG9kcyBwcm92aWRlZCBieSB0aGUgOmNsYXNzOmBUZXN0Q2FzZWAgYmFzZSBjbGFzcy4gIElmIHRoZSB0ZXN0IGZhaWxzLCBhbgogZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLCBhbmQgOm1vZDpgdW5pdHRlc3RgIHdpbGwgaWRlbnRpZnkgdGhlIHRlc3QgY2FzZSBhcyBhCi06ZGZuOmBmYWlsdXJlYC4gIEFueSBvdGhlciBleGNlcHRpb25zIHdpbGwgYmUgdHJlYXRlZCBhcyA6ZGZuOmBlcnJvcnNgLiBUaGlzCi1oZWxwcyB5b3UgaWRlbnRpZnkgd2hlcmUgdGhlIHByb2JsZW0gaXM6IDpkZm46YGZhaWx1cmVzYCBhcmUgY2F1c2VkIGJ5IGluY29ycmVjdAotcmVzdWx0cyAtIGEgNSB3aGVyZSB5b3UgZXhwZWN0ZWQgYSA2LiA6ZGZuOmBFcnJvcnNgIGFyZSBjYXVzZWQgYnkgaW5jb3JyZWN0Ci1jb2RlIC0gZS5nLiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGNhdXNlZCBieSBhbiBpbmNvcnJlY3QgZnVuY3Rpb24gY2FsbC4KKzpkZm46YGZhaWx1cmVgLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgd2lsbCBiZSB0cmVhdGVkIGFzIDpkZm46YGVycm9yc2AuCiAKLVRoZSB3YXkgdG8gcnVuIGEgdGVzdCBjYXNlIHdpbGwgYmUgZGVzY3JpYmVkIGxhdGVyLiAgRm9yIG5vdywgbm90ZSB0aGF0IHRvCi1jb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2Ygc3VjaCBhIHRlc3QgY2FzZSwgd2UgY2FsbCBpdHMgY29uc3RydWN0b3Igd2l0aG91dAotYXJndW1lbnRzOjoKLQotICAgdGVzdENhc2UgPSBEZWZhdWx0V2lkZ2V0U2l6ZVRlc3RDYXNlKCkKLQotTm93LCBzdWNoIHRlc3QgY2FzZXMgY2FuIGJlIG51bWVyb3VzLCBhbmQgdGhlaXIgc2V0LXVwIGNhbiBiZSByZXBldGl0aXZlLiAgSW4KLXRoZSBhYm92ZSBjYXNlLCBjb25zdHJ1Y3RpbmcgYSA6Y2xhc3M6YFdpZGdldGAgaW4gZWFjaCBvZiAxMDAgV2lkZ2V0IHRlc3QgY2FzZQotc3ViY2xhc3NlcyB3b3VsZCBtZWFuIHVuc2lnaHRseSBkdXBsaWNhdGlvbi4KLQotTHVja2lseSwgd2UgY2FuIGZhY3RvciBvdXQgc3VjaCBzZXQtdXAgY29kZSBieSBpbXBsZW1lbnRpbmcgYSBtZXRob2QgY2FsbGVkCi06bWV0aDpgflRlc3RDYXNlLnNldFVwYCwgd2hpY2ggdGhlIHRlc3RpbmcgZnJhbWV3b3JrIHdpbGwgYXV0b21hdGljYWxseSBjYWxsIGZvcgotdXMgd2hlbiB3ZSBydW4gdGhlIHRlc3Q6OgorVGVzdHMgY2FuIGJlIG51bWVyb3VzLCBhbmQgdGhlaXIgc2V0LXVwIGNhbiBiZSByZXBldGl0aXZlLiAgTHVja2lseSwgd2UKK2NhbiBmYWN0b3Igb3V0IHNldC11cCBjb2RlIGJ5IGltcGxlbWVudGluZyBhIG1ldGhvZCBjYWxsZWQKKzptZXRoOmB+VGVzdENhc2Uuc2V0VXBgLCB3aGljaCB0aGUgdGVzdGluZyBmcmFtZXdvcmsgd2lsbCBhdXRvbWF0aWNhbGx5CitjYWxsIGZvciBldmVyeSBzaW5nbGUgdGVzdCB3ZSBydW46OgogCiAgICBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNDA1LDIzICszNDksMjYgQEAKICAgICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICAgIHNlbGYud2lkZ2V0ID0gV2lkZ2V0KCdUaGUgd2lkZ2V0JykKIAotICAgY2xhc3MgRGVmYXVsdFdpZGdldFNpemVUZXN0Q2FzZShTaW1wbGVXaWRnZXRUZXN0Q2FzZSk6Ci0gICAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgZGVmIHRlc3RfZGVmYXVsdF93aWRnZXRfc2l6ZShzZWxmKToKICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLndpZGdldC5zaXplKCksICg1MCw1MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY29ycmVjdCBkZWZhdWx0IHNpemUnKQogCi0gICBjbGFzcyBXaWRnZXRSZXNpemVUZXN0Q2FzZShTaW1wbGVXaWRnZXRUZXN0Q2FzZSk6Ci0gICAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgZGVmIHRlc3Rfd2lkZ2V0X3Jlc2l6ZShzZWxmKToKICAgICAgICAgICAgc2VsZi53aWRnZXQucmVzaXplKDEwMCwxNTApCiAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi53aWRnZXQuc2l6ZSgpLCAoMTAwLDE1MCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nIHNpemUgYWZ0ZXIgcmVzaXplJykKIAorLi4gbm90ZTo6CisgICBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlIHZhcmlvdXMgdGVzdHMgd2lsbCBiZSBydW4gaXMgZGV0ZXJtaW5lZAorICAgYnkgc29ydGluZyB0aGUgdGVzdCBtZXRob2QgbmFtZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBidWlsdC1pbgorICAgb3JkZXJpbmcgZm9yIHN0cmluZ3MuCisKIElmIHRoZSA6bWV0aDpgflRlc3RDYXNlLnNldFVwYCBtZXRob2QgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGlsZSB0aGUgdGVzdCBpcwotcnVubmluZywgdGhlIGZyYW1ld29yayB3aWxsIGNvbnNpZGVyIHRoZSB0ZXN0IHRvIGhhdmUgc3VmZmVyZWQgYW4gZXJyb3IsIGFuZCB0aGUKLTptZXRoOmB+VGVzdENhc2UucnVuVGVzdGAgbWV0aG9kIHdpbGwgbm90IGJlIGV4ZWN1dGVkLgorcnVubmluZywgdGhlIGZyYW1ld29yayB3aWxsIGNvbnNpZGVyIHRoZSB0ZXN0IHRvIGhhdmUgc3VmZmVyZWQgYW4gZXJyb3IsIGFuZAordGhlIHRlc3QgbWV0aG9kIHdpbGwgbm90IGJlIGV4ZWN1dGVkLgogCiBTaW1pbGFybHksIHdlIGNhbiBwcm92aWRlIGEgOm1ldGg6YH5UZXN0Q2FzZS50ZWFyRG93bmAgbWV0aG9kIHRoYXQgdGlkaWVzIHVwCi1hZnRlciB0aGUgOm1ldGg6YH5UZXN0Q2FzZS5ydW5UZXN0YCBtZXRob2QgaGFzIGJlZW4gcnVuOjoKK2FmdGVyIHRoZSB0ZXN0IG1ldGhvZCBoYXMgYmVlbiBydW46OgogCiAgICBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNDMxLDU5ICszNzgsMjAgQEAKIAogICAgICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgICAgc2VsZi53aWRnZXQuZGlzcG9zZSgpCi0gICAgICAgICAgIHNlbGYud2lkZ2V0ID0gTm9uZQogCi1JZiA6bWV0aDpgflRlc3RDYXNlLnNldFVwYCBzdWNjZWVkZWQsIHRoZSA6bWV0aDpgflRlc3RDYXNlLnRlYXJEb3duYCBtZXRob2Qgd2lsbAotYmUgcnVuIHdoZXRoZXIgOm1ldGg6YH5UZXN0Q2FzZS5ydW5UZXN0YCBzdWNjZWVkZWQgb3Igbm90LgorSWYgOm1ldGg6YH5UZXN0Q2FzZS5zZXRVcGAgc3VjY2VlZGVkLCA6bWV0aDpgflRlc3RDYXNlLnRlYXJEb3duYCB3aWxsIGJlCitydW4gd2hldGhlciB0aGUgdGVzdCBtZXRob2Qgc3VjY2VlZGVkIG9yIG5vdC4KIAogU3VjaCBhIHdvcmtpbmcgZW52aXJvbm1lbnQgZm9yIHRoZSB0ZXN0aW5nIGNvZGUgaXMgY2FsbGVkIGEgOmRmbjpgZml4dHVyZWAuCiAKLU9mdGVuLCBtYW55IHNtYWxsIHRlc3QgY2FzZXMgd2lsbCB1c2UgdGhlIHNhbWUgZml4dHVyZS4gIEluIHRoaXMgY2FzZSwgd2Ugd291bGQKLWVuZCB1cCBzdWJjbGFzc2luZyA6Y2xhc3M6YFNpbXBsZVdpZGdldFRlc3RDYXNlYCBpbnRvIG1hbnkgc21hbGwgb25lLW1ldGhvZAotY2xhc3NlcyBzdWNoIGFzIDpjbGFzczpgRGVmYXVsdFdpZGdldFNpemVUZXN0Q2FzZWAuICBUaGlzIGlzIHRpbWUtY29uc3VtaW5nIGFuZAotZGlzY291cmFnaW5nLCBzbyBpbiB0aGUgc2FtZSB2ZWluIGFzIEpVbml0LCA6bW9kOmB1bml0dGVzdGAgcHJvdmlkZXMgYSBzaW1wbGVyCi1tZWNoYW5pc206OgotCi0gICBpbXBvcnQgdW5pdHRlc3QKLQotICAgY2xhc3MgV2lkZ2V0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgICAgc2VsZi53aWRnZXQgPSBXaWRnZXQoJ1RoZSB3aWRnZXQnKQotCi0gICAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAgICBzZWxmLndpZGdldC5kaXNwb3NlKCkKLSAgICAgICAgICAgc2VsZi53aWRnZXQgPSBOb25lCi0KLSAgICAgICBkZWYgdGVzdF9kZWZhdWx0X3NpemUoc2VsZik6Ci0gICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi53aWRnZXQuc2l6ZSgpLCAoNTAsNTApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNvcnJlY3QgZGVmYXVsdCBzaXplJykKLQotICAgICAgIGRlZiB0ZXN0X3Jlc2l6ZShzZWxmKToKLSAgICAgICAgICAgc2VsZi53aWRnZXQucmVzaXplKDEwMCwxNTApCi0gICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi53aWRnZXQuc2l6ZSgpLCAoMTAwLDE1MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nIHNpemUgYWZ0ZXIgcmVzaXplJykKLQotSGVyZSB3ZSBoYXZlIG5vdCBwcm92aWRlZCBhIDptZXRoOmB+VGVzdENhc2UucnVuVGVzdGAgbWV0aG9kLCBidXQgaGF2ZSBpbnN0ZWFkCi1wcm92aWRlZCB0d28gZGlmZmVyZW50IHRlc3QgbWV0aG9kcy4gIENsYXNzIGluc3RhbmNlcyB3aWxsIG5vdyBlYWNoIHJ1biBvbmUgb2YKLXRoZSA6bWV0aDpgdGVzdF9cKmAgbWV0aG9kcywgd2l0aCBgYHNlbGYud2lkZ2V0YGAgY3JlYXRlZCBhbmQgZGVzdHJveWVkCi1zZXBhcmF0ZWx5IGZvciBlYWNoIGluc3RhbmNlLiAgV2hlbiBjcmVhdGluZyBhbiBpbnN0YW5jZSB3ZSBtdXN0IHNwZWNpZnkgdGhlCi10ZXN0IG1ldGhvZCBpdCBpcyB0byBydW4uICBXZSBkbyB0aGlzIGJ5IHBhc3NpbmcgdGhlIG1ldGhvZCBuYW1lIGluIHRoZQotY29uc3RydWN0b3I6OgotCi0gICBkZWZhdWx0U2l6ZVRlc3RDYXNlID0gV2lkZ2V0VGVzdENhc2UoJ3Rlc3RfZGVmYXVsdF9zaXplJykKLSAgIHJlc2l6ZVRlc3RDYXNlID0gV2lkZ2V0VGVzdENhc2UoJ3Rlc3RfcmVzaXplJykKLQogVGVzdCBjYXNlIGluc3RhbmNlcyBhcmUgZ3JvdXBlZCB0b2dldGhlciBhY2NvcmRpbmcgdG8gdGhlIGZlYXR1cmVzIHRoZXkgdGVzdC4KIDptb2Q6YHVuaXR0ZXN0YCBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgdGhpczogdGhlIDpkZm46YHRlc3Qgc3VpdGVgLAotcmVwcmVzZW50ZWQgYnkgOm1vZDpgdW5pdHRlc3RgJ3MgOmNsYXNzOmBUZXN0U3VpdGVgIGNsYXNzOjoKK3JlcHJlc2VudGVkIGJ5IDptb2Q6YHVuaXR0ZXN0YCdzIDpjbGFzczpgVGVzdFN1aXRlYCBjbGFzcy4gIEluIG1vc3QgY2FzZXMsCitjYWxsaW5nIDpmdW5jOmB1bml0dGVzdC5tYWluYCB3aWxsIGRvIHRoZSByaWdodCB0aGluZyBhbmQgY29sbGVjdCBhbGwgdGhlCittb2R1bGUncyB0ZXN0IGNhc2VzIGZvciB5b3UsIGFuZCB0aGVuIGV4ZWN1dGUgdGhlbS4KIAotICAgd2lkZ2V0VGVzdFN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKLSAgIHdpZGdldFRlc3RTdWl0ZS5hZGRUZXN0KFdpZGdldFRlc3RDYXNlKCd0ZXN0X2RlZmF1bHRfc2l6ZScpKQotICAgd2lkZ2V0VGVzdFN1aXRlLmFkZFRlc3QoV2lkZ2V0VGVzdENhc2UoJ3Rlc3RfcmVzaXplJykpCi0KLUZvciB0aGUgZWFzZSBvZiBydW5uaW5nIHRlc3RzLCBhcyB3ZSB3aWxsIHNlZSBsYXRlciwgaXQgaXMgYSBnb29kIGlkZWEgdG8KLXByb3ZpZGUgaW4gZWFjaCB0ZXN0IG1vZHVsZSBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IHJldHVybnMgYSBwcmUtYnVpbHQgdGVzdAotc3VpdGU6OgorSG93ZXZlciwgc2hvdWxkIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgYnVpbGRpbmcgb2YgeW91ciB0ZXN0IHN1aXRlLAoreW91IGNhbiBkbyBpdCB5b3Vyc2VsZjo6CiAKICAgIGRlZiBzdWl0ZSgpOgogICAgICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKQEAgLTQ5MSwzNyArMzk5LDYgQEAKICAgICAgICBzdWl0ZS5hZGRUZXN0KFdpZGdldFRlc3RDYXNlKCd0ZXN0X3Jlc2l6ZScpKQogICAgICAgIHJldHVybiBzdWl0ZQogCi1vciBldmVuOjoKLQotICAgZGVmIHN1aXRlKCk6Ci0gICAgICAgdGVzdHMgPSBbJ3Rlc3RfZGVmYXVsdF9zaXplJywgJ3Rlc3RfcmVzaXplJ10KLQotICAgICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUobWFwKFdpZGdldFRlc3RDYXNlLCB0ZXN0cykpCi0KLVNpbmNlIGl0IGlzIGEgY29tbW9uIHBhdHRlcm4gdG8gY3JlYXRlIGEgOmNsYXNzOmBUZXN0Q2FzZWAgc3ViY2xhc3Mgd2l0aCBtYW55Ci1zaW1pbGFybHkgbmFtZWQgdGVzdCBmdW5jdGlvbnMsIDptb2Q6YHVuaXR0ZXN0YCBwcm92aWRlcyBhIDpjbGFzczpgVGVzdExvYWRlcmAKLWNsYXNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXV0b21hdGUgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgYSB0ZXN0IHN1aXRlIGFuZAotcG9wdWxhdGluZyBpdCB3aXRoIGluZGl2aWR1YWwgdGVzdHMuIEZvciBleGFtcGxlLCA6OgotCi0gICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tVGVzdENhc2UoV2lkZ2V0VGVzdENhc2UpCi0KLXdpbGwgY3JlYXRlIGEgdGVzdCBzdWl0ZSB0aGF0IHdpbGwgcnVuIGBgV2lkZ2V0VGVzdENhc2UudGVzdF9kZWZhdWx0X3NpemUoKWBgIGFuZAotYGBXaWRnZXRUZXN0Q2FzZS50ZXN0X3Jlc2l6ZWBgLiA6Y2xhc3M6YFRlc3RMb2FkZXJgIHVzZXMgdGhlIGBgJ3Rlc3QnYGAgbWV0aG9kCi1uYW1lIHByZWZpeCB0byBpZGVudGlmeSB0ZXN0IG1ldGhvZHMgYXV0b21hdGljYWxseS4KLQotTm90ZSB0aGF0IHRoZSBvcmRlciBpbiB3aGljaCB0aGUgdmFyaW91cyB0ZXN0IGNhc2VzIHdpbGwgYmUgcnVuIGlzCi1kZXRlcm1pbmVkIGJ5IHNvcnRpbmcgdGhlIHRlc3QgZnVuY3Rpb24gbmFtZXMgd2l0aCByZXNwZWN0IHRvIHRoZQotYnVpbHQtaW4gb3JkZXJpbmcgZm9yIHN0cmluZ3MuCi0KLU9mdGVuIGl0IGlzIGRlc2lyYWJsZSB0byBncm91cCBzdWl0ZXMgb2YgdGVzdCBjYXNlcyB0b2dldGhlciwgc28gYXMgdG8gcnVuIHRlc3RzCi1mb3IgdGhlIHdob2xlIHN5c3RlbSBhdCBvbmNlLiAgVGhpcyBpcyBlYXN5LCBzaW5jZSA6Y2xhc3M6YFRlc3RTdWl0ZWAgaW5zdGFuY2VzCi1jYW4gYmUgYWRkZWQgdG8gYSA6Y2xhc3M6YFRlc3RTdWl0ZWAganVzdCBhcyA6Y2xhc3M6YFRlc3RDYXNlYCBpbnN0YW5jZXMgY2FuIGJlCi1hZGRlZCB0byBhIDpjbGFzczpgVGVzdFN1aXRlYDo6Ci0KLSAgIHN1aXRlMSA9IG1vZHVsZTEuVGhlVGVzdFN1aXRlKCkKLSAgIHN1aXRlMiA9IG1vZHVsZTIuVGhlVGVzdFN1aXRlKCkKLSAgIGFsbHRlc3RzID0gdW5pdHRlc3QuVGVzdFN1aXRlKFtzdWl0ZTEsIHN1aXRlMl0pCi0KIFlvdSBjYW4gcGxhY2UgdGhlIGRlZmluaXRpb25zIG9mIHRlc3QgY2FzZXMgYW5kIHRlc3Qgc3VpdGVzIGluIHRoZSBzYW1lIG1vZHVsZXMKIGFzIHRoZSBjb2RlIHRoZXkgYXJlIHRvIHRlc3QgKHN1Y2ggYXMgOmZpbGU6YHdpZGdldC5weWApLCBidXQgdGhlcmUgYXJlIHNldmVyYWwKIGFkdmFudGFnZXMgdG8gcGxhY2luZyB0aGUgdGVzdCBjb2RlIGluIGEgc2VwYXJhdGUgbW9kdWxlLCBzdWNoIGFzCkBAIC01NjQsMjMgKzQ0MSwxMyBAQAogICAgICAgIGFzc2VydCBzb21ldGhpbmcubmFtZSBpcyBub3QgTm9uZQogICAgICAgICMgLi4uCiAKLW9uZSBjYW4gY3JlYXRlIGFuIGVxdWl2YWxlbnQgdGVzdCBjYXNlIGluc3RhbmNlIGFzIGZvbGxvd3M6OgotCi0gICB0ZXN0Y2FzZSA9IHVuaXR0ZXN0LkZ1bmN0aW9uVGVzdENhc2UodGVzdFNvbWV0aGluZykKLQotSWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQgYXMKLXBhcnQgb2YgdGhlIHRlc3QgY2FzZSdzIG9wZXJhdGlvbiwgdGhleSBjYW4gYWxzbyBiZSBwcm92aWRlZCBsaWtlIHNvOjoKK29uZSBjYW4gY3JlYXRlIGFuIGVxdWl2YWxlbnQgdGVzdCBjYXNlIGluc3RhbmNlIGFzIGZvbGxvd3MsIHdpdGggb3B0aW9uYWwKK3NldC11cCBhbmQgdGVhci1kb3duIG1ldGhvZHM6OgogCiAgICB0ZXN0Y2FzZSA9IHVuaXR0ZXN0LkZ1bmN0aW9uVGVzdENhc2UodGVzdFNvbWV0aGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRVcD1tYWtlU29tZXRoaW5nREIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhckRvd249ZGVsZXRlU29tZXRoaW5nREIpCiAKLVRvIG1ha2UgbWlncmF0aW5nIGV4aXN0aW5nIHRlc3Qgc3VpdGVzIGVhc2llciwgOm1vZDpgdW5pdHRlc3RgIHN1cHBvcnRzIHRlc3RzCi1yYWlzaW5nIDpleGM6YEFzc2VydGlvbkVycm9yYCB0byBpbmRpY2F0ZSB0ZXN0IGZhaWx1cmUuIEhvd2V2ZXIsIGl0IGlzCi1yZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGhlIGV4cGxpY2l0IDptZXRoOmBUZXN0Q2FzZS5mYWlsXCpgIGFuZAotOm1ldGg6YFRlc3RDYXNlLmFzc2VydFwqYCBtZXRob2RzIGluc3RlYWQsIGFzIGZ1dHVyZSB2ZXJzaW9ucyBvZiA6bW9kOmB1bml0dGVzdGAKLW1heSB0cmVhdCA6ZXhjOmBBc3NlcnRpb25FcnJvcmAgZGlmZmVyZW50bHkuCi0KIC4uIG5vdGU6OgogCiAgICBFdmVuIHRob3VnaCA6Y2xhc3M6YEZ1bmN0aW9uVGVzdENhc2VgIGNhbiBiZSB1c2VkIHRvIHF1aWNrbHkgY29udmVydCBhbgpAQCAtNzA0LDMyICs1NzEsMjQgQEAKIAogLi4gY2xhc3M6OiBUZXN0Q2FzZShtZXRob2ROYW1lPSdydW5UZXN0JykKIAotICAgSW5zdGFuY2VzIG9mIHRoZSA6Y2xhc3M6YFRlc3RDYXNlYCBjbGFzcyByZXByZXNlbnQgdGhlIHNtYWxsZXN0IHRlc3RhYmxlIHVuaXRzCisgICBJbnN0YW5jZXMgb2YgdGhlIDpjbGFzczpgVGVzdENhc2VgIGNsYXNzIHJlcHJlc2VudCB0aGUgbG9naWNhbCB0ZXN0IHVuaXRzCiAgICBpbiB0aGUgOm1vZDpgdW5pdHRlc3RgIHVuaXZlcnNlLiAgVGhpcyBjbGFzcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgYmFzZQogICAgY2xhc3MsIHdpdGggc3BlY2lmaWMgdGVzdHMgYmVpbmcgaW1wbGVtZW50ZWQgYnkgY29uY3JldGUgc3ViY2xhc3Nlcy4gIFRoaXMgY2xhc3MKICAgIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSBuZWVkZWQgYnkgdGhlIHRlc3QgcnVubmVyIHRvIGFsbG93IGl0IHRvIGRyaXZlIHRoZQotICAgdGVzdCwgYW5kIG1ldGhvZHMgdGhhdCB0aGUgdGVzdCBjb2RlIGNhbiB1c2UgdG8gY2hlY2sgZm9yIGFuZCByZXBvcnQgdmFyaW91cworICAgdGVzdHMsIGFuZCBtZXRob2RzIHRoYXQgdGhlIHRlc3QgY29kZSBjYW4gdXNlIHRvIGNoZWNrIGZvciBhbmQgcmVwb3J0IHZhcmlvdXMKICAgIGtpbmRzIG9mIGZhaWx1cmUuCiAKLSAgIEVhY2ggaW5zdGFuY2Ugb2YgOmNsYXNzOmBUZXN0Q2FzZWAgd2lsbCBydW4gYSBzaW5nbGUgdGVzdCBtZXRob2Q6IHRoZSBtZXRob2QKLSAgIG5hbWVkICptZXRob2ROYW1lKi4gIElmIHlvdSByZW1lbWJlciwgd2UgaGFkIGFuIGVhcmxpZXIgZXhhbXBsZSB0aGF0IHdlbnQKLSAgIHNvbWV0aGluZyBsaWtlIHRoaXM6OgotCi0gICAgICBkZWYgc3VpdGUoKToKLSAgICAgICAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgICAgICAgc3VpdGUuYWRkVGVzdChXaWRnZXRUZXN0Q2FzZSgndGVzdF9kZWZhdWx0X3NpemUnKSkKLSAgICAgICAgICBzdWl0ZS5hZGRUZXN0KFdpZGdldFRlc3RDYXNlKCd0ZXN0X3Jlc2l6ZScpKQotICAgICAgICAgIHJldHVybiBzdWl0ZQotCi0gICBIZXJlLCB3ZSBjcmVhdGUgdHdvIGluc3RhbmNlcyBvZiA6Y2xhc3M6YFdpZGdldFRlc3RDYXNlYCwgZWFjaCBvZiB3aGljaCBydW5zIGEKLSAgIHNpbmdsZSB0ZXN0LgorICAgRWFjaCBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRlc3RDYXNlYCB3aWxsIHJ1biBhIHNpbmdsZSBiYXNlIG1ldGhvZDogdGhlIG1ldGhvZAorICAgbmFtZWQgKm1ldGhvZE5hbWUqLiAgSG93ZXZlciwgdGhlIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkZWZhdWx0CisgICAqbWV0aG9kTmFtZSosIGBgcnVuVGVzdCgpYGAsIHdpbGwgcnVuIGV2ZXJ5IG1ldGhvZCBzdGFydGluZyB3aXRoIGBgdGVzdGBgCisgICBhcyBhbiBpbmRpdmlkdWFsIHRlc3QsIGFuZCBjb3VudCBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzIGFjY29yZGluZ2x5LgorICAgVGhlcmVmb3JlLCBpbiBtb3N0IHVzZXMgb2YgOmNsYXNzOmBUZXN0Q2FzZWAsIHlvdSB3aWxsIG5laXRoZXIgY2hhbmdlCisgICB0aGUgKm1ldGhvZE5hbWUqIG5vciByZWltcGxlbWVudCB0aGUgZGVmYXVsdCBgYHJ1blRlc3QoKWBgIG1ldGhvZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIDpjbGFzczpgVGVzdENhc2VgIGNhbiBiZSBpbnN0YW50aWF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGhvdXQgcHJvdmlkaW5nIGEgbWV0aG9kCi0gICAgICBuYW1lLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBleHBlcmltZW50IHdpdGggOmNsYXNzOmBUZXN0Q2FzZWAgZnJvbSB0aGUKLSAgICAgIGludGVyYWN0aXZlIGludGVycHJldGVyLgotCi0gICAqbWV0aG9kTmFtZSogZGVmYXVsdHMgdG8gOm1ldGg6YHJ1blRlc3RgLgorICAgICAgOmNsYXNzOmBUZXN0Q2FzZWAgY2FuIGJlIGluc3RhbnRpYXRlZCBzdWNjZXNzZnVsbHkgd2l0aG91dCBwcm92aWRpbmcgYQorICAgICAgKm1ldGhvZE5hbWUqLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBleHBlcmltZW50IHdpdGggOmNsYXNzOmBUZXN0Q2FzZWAKKyAgICAgIGZyb20gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyLgogCiAgICA6Y2xhc3M6YFRlc3RDYXNlYCBpbnN0YW5jZXMgcHJvdmlkZSB0aHJlZSBncm91cHMgb2YgbWV0aG9kczogb25lIGdyb3VwIHVzZWQKICAgIHRvIHJ1biB0aGUgdGVzdCwgYW5vdGhlciB1c2VkIGJ5IHRoZSB0ZXN0IGltcGxlbWVudGF0aW9uIHRvIGNoZWNrIGNvbmRpdGlvbnMKQEAgLTczOCw3ICs1OTcsNiBAQAogCiAgICBNZXRob2RzIGluIHRoZSBmaXJzdCBncm91cCAocnVubmluZyB0aGUgdGVzdCkgYXJlOgogCi0KICAgIC4uIG1ldGhvZDo6IHNldFVwKCkKIAogICAgICAgTWV0aG9kIGNhbGxlZCB0byBwcmVwYXJlIHRoZSB0ZXN0IGZpeHR1cmUuICBUaGlzIGlzIGNhbGxlZCBpbW1lZGlhdGVseQpAQCAtNzkwLDE0ICs2NDgsMTggQEAKIAogICAgLi4gbWV0aG9kOjogcnVuKHJlc3VsdD1Ob25lKQogCi0gICAgICBSdW4gdGhlIHRlc3QsIGNvbGxlY3RpbmcgdGhlIHJlc3VsdCBpbnRvIHRoZSB0ZXN0IHJlc3VsdCBvYmplY3QgcGFzc2VkIGFzCi0gICAgICAqcmVzdWx0Ki4gIElmICpyZXN1bHQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGEgdGVtcG9yYXJ5IHJlc3VsdAotICAgICAgb2JqZWN0IGlzIGNyZWF0ZWQgKGJ5IGNhbGxpbmcgdGhlIDptZXRoOmBkZWZhdWx0VGVzdFJlc3VsdGAgbWV0aG9kKSBhbmQKLSAgICAgIHVzZWQuIFRoZSByZXN1bHQgb2JqZWN0IGlzIG5vdCByZXR1cm5lZCB0byA6bWV0aDpgcnVuYCdzIGNhbGxlci4KKyAgICAgIFJ1biB0aGUgdGVzdCwgY29sbGVjdGluZyB0aGUgcmVzdWx0IGludG8gdGhlIDpjbGFzczpgVGVzdFJlc3VsdGAgb2JqZWN0CisgICAgICBwYXNzZWQgYXMgKnJlc3VsdCouICBJZiAqcmVzdWx0KiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCBhIHRlbXBvcmFyeQorICAgICAgcmVzdWx0IG9iamVjdCBpcyBjcmVhdGVkIChieSBjYWxsaW5nIHRoZSA6bWV0aDpgZGVmYXVsdFRlc3RSZXN1bHRgCisgICAgICBtZXRob2QpIGFuZCB1c2VkLiBUaGUgcmVzdWx0IG9iamVjdCBpcyByZXR1cm5lZCB0byA6bWV0aDpgcnVuYCdzCisgICAgICBjYWxsZXIuCiAKICAgICAgIFRoZSBzYW1lIGVmZmVjdCBtYXkgYmUgaGFkIGJ5IHNpbXBseSBjYWxsaW5nIHRoZSA6Y2xhc3M6YFRlc3RDYXNlYAogICAgICAgaW5zdGFuY2UuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91cyB2ZXJzaW9ucyBvZiBgYHJ1bmBgIGRpZCBub3QgcmV0dXJuIHRoZSByZXN1bHQuIE5laXRoZXIgZGlkCisgICAgICAgICBjYWxsaW5nIGFuIGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBza2lwVGVzdChyZWFzb24pCiAKQEAgLTg1OCwxMCArNzIwLDExIEBACiAgICB8IDxUZXN0Q2FzZS5hc3NlcnROb3RJc0luc3RhbmNlPmAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKIAotICAgQWxsIHRoZSBhc3NlcnQgbWV0aG9kcyAoZXhjZXB0IDptZXRoOmBhc3NlcnRSYWlzZXNgLAotICAgOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YGFzc2VydFdhcm5zYCwgOm1ldGg6YGFzc2VydFdhcm5zUmVnZXhgKQotICAgYWNjZXB0IGEgKm1zZyogYXJndW1lbnQgdGhhdCwgaWYgc3BlY2lmaWVkLCBpcyB1c2VkIGFzIHRoZSBlcnJvciBtZXNzYWdlIG9uCi0gICBmYWlsdXJlIChzZWUgYWxzbyA6ZGF0YTpgbG9uZ01lc3NhZ2VgKS4KKyAgIEFsbCB0aGUgYXNzZXJ0IG1ldGhvZHMgYWNjZXB0IGEgKm1zZyogYXJndW1lbnQgdGhhdCwgaWYgc3BlY2lmaWVkLCBpcyB1c2VkCisgICBhcyB0aGUgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlIChzZWUgYWxzbyA6ZGF0YTpgbG9uZ01lc3NhZ2VgKS4KKyAgIE5vdGUgdGhhdCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIHRvIDptZXRoOmBhc3NlcnRSYWlzZXNgLAorICAgOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YGFzc2VydFdhcm5zYCwgOm1ldGg6YGFzc2VydFdhcm5zUmVnZXhgCisgICBvbmx5IHdoZW4gdGhleSBhcmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCiAKQEAgLTk1Niw3ICs4MTksNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFJhaXNlcyhleGNlcHRpb24sIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgIGFzc2VydFJhaXNlcyhleGNlcHRpb24sIG1zZz1Ob25lKQogCiAgICAgICBUZXN0IHRoYXQgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuICpjYWxsYWJsZSogaXMgY2FsbGVkIHdpdGggYW55CiAgICAgICBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIGFsc28gcGFzc2VkIHRvCkBAIC05NjUsMTIgKzgyOCwxNiBAQAogICAgICAgVG8gY2F0Y2ggYW55IG9mIGEgZ3JvdXAgb2YgZXhjZXB0aW9ucywgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlcHRpb24KICAgICAgIGNsYXNzZXMgbWF5IGJlIHBhc3NlZCBhcyAqZXhjZXB0aW9uKi4KIAotICAgICAgSWYgb25seSB0aGUgKmV4Y2VwdGlvbiogYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28KLSAgICAgIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CisgICAgICBJZiBvbmx5IHRoZSAqZXhjZXB0aW9uKiBhbmQgcG9zc2libHkgdGhlICptc2cqIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sCisgICAgICByZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgc28gdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuCisgICAgICBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CiAKICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgV2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBhY2NlcHRzIHRoZQorICAgICAgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICptc2cqLgorCiAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIHdpbGwgc3RvcmUgdGhlIGNhdWdodCBleGNlcHRpb24gb2JqZWN0IGluIGl0cwogICAgICAgOmF0dHI6YGV4Y2VwdGlvbmAgYXR0cmlidXRlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHRoZSBpbnRlbnRpb24KICAgICAgIGlzIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlIGV4Y2VwdGlvbiByYWlzZWQ6OgpAQCAtOTg3LDkgKzg1NCwxMiBAQAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgZXhjZXB0aW9uYCBhdHRyaWJ1dGUuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uLCByZWdleCwgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4KQorICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uLCByZWdleCwgbXNnPU5vbmUpCiAKICAgICAgIExpa2UgOm1ldGg6YGFzc2VydFJhaXNlc2AgYnV0IGFsc28gdGVzdHMgdGhhdCAqcmVnZXgqIG1hdGNoZXMKICAgICAgIG9uIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJhaXNlZCBleGNlcHRpb24uICAqcmVnZXgqIG1heSBiZQpAQCAtMTAwNiwxMiArODc2LDE2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogICAgICAgICAgdW5kZXIgdGhlIG5hbWUgYGBhc3NlcnRSYWlzZXNSZWdleHBgYC4KKwogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIFJlbmFtZWQgdG8gOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRXYXJucyh3YXJuaW5nLCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFdhcm5zKHdhcm5pbmcpCisgICAgICAgICAgICAgICBhc3NlcnRXYXJucyh3YXJuaW5nLCBtc2c9Tm9uZSkKIAogICAgICAgVGVzdCB0aGF0IGEgd2FybmluZyBpcyB0cmlnZ2VyZWQgd2hlbiAqY2FsbGFibGUqIGlzIGNhbGxlZCB3aXRoIGFueQogICAgICAgcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBhbHNvIHBhc3NlZCB0bwpAQCAtMTAyMCwxMiArODk0LDE2IEBACiAgICAgICBUbyBjYXRjaCBhbnkgb2YgYSBncm91cCBvZiB3YXJuaW5ncywgYSB0dXBsZSBjb250YWluaW5nIHRoZSB3YXJuaW5nCiAgICAgICBjbGFzc2VzIG1heSBiZSBwYXNzZWQgYXMgKndhcm5pbmdzKi4KIAotICAgICAgSWYgb25seSB0aGUgKndhcm5pbmcqIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm5zIGEgY29udGV4dCBtYW5hZ2VyIHNvCi0gICAgICB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4gaW5saW5lIHJhdGhlciB0aGFuIGFzIGEgZnVuY3Rpb246OgorICAgICAgSWYgb25seSB0aGUgKndhcm5pbmcqIGFuZCBwb3NzaWJseSB0aGUgKm1zZyogYXJndW1lbnRzIGFyZSBnaXZlbiwKKyAgICAgIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28gdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuCisgICAgICBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CiAKICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhTb21lV2FybmluZyk6CiAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgV2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBhY2NlcHRzIHRoZQorICAgICAgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICptc2cqLgorCiAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIHdpbGwgc3RvcmUgdGhlIGNhdWdodCB3YXJuaW5nIG9iamVjdCBpbiBpdHMKICAgICAgIDphdHRyOmB3YXJuaW5nYCBhdHRyaWJ1dGUsIGFuZCB0aGUgc291cmNlIGxpbmUgd2hpY2ggdHJpZ2dlcmVkIHRoZQogICAgICAgd2FybmluZ3MgaW4gdGhlIDphdHRyOmBmaWxlbmFtZWAgYW5kIDphdHRyOmBsaW5lbm9gIGF0dHJpYnV0ZXMuCkBAIC0xMDQzLDkgKzkyMSwxMiBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRXYXJuc1JlZ2V4KHdhcm5pbmcsIHJlZ2V4LCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgpCisgICAgICAgICAgICAgICBhc3NlcnRXYXJuc1JlZ2V4KHdhcm5pbmcsIHJlZ2V4LCBtc2c9Tm9uZSkKIAogICAgICAgTGlrZSA6bWV0aDpgYXNzZXJ0V2FybnNgIGJ1dCBhbHNvIHRlc3RzIHRoYXQgKnJlZ2V4KiBtYXRjaGVzIG9uIHRoZQogICAgICAgbWVzc2FnZSBvZiB0aGUgdHJpZ2dlcmVkIHdhcm5pbmcuICAqcmVnZXgqIG1heSBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpAQCAtMTA2Myw2ICs5NDQsOCBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAogCiAgICBUaGVyZSBhcmUgYWxzbyBvdGhlciBtZXRob2RzIHVzZWQgdG8gcGVyZm9ybSBtb3JlIHNwZWNpZmljIGNoZWNrcywgc3VjaCBhczoKQEAgLTExNTIsMjEgKzEwMzUsNiBAQAogICAgICAgICAgOm1ldGg6YC5hc3NlcnROb3RSZWdleGAuCiAKIAotICAgLi4gbWV0aG9kOjogYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KHN1YnNldCwgZGljdGlvbmFyeSwgbXNnPU5vbmUpCi0KLSAgICAgIFRlc3RzIHdoZXRoZXIgdGhlIGtleS92YWx1ZSBwYWlycyBpbiAqZGljdGlvbmFyeSogYXJlIGEgc3VwZXJzZXQgb2YKLSAgICAgIHRob3NlIGluICpzdWJzZXQqLiAgSWYgbm90LCBhbiBlcnJvciBtZXNzYWdlIGxpc3RpbmcgdGhlIG1pc3Npbmcga2V5cwotICAgICAgYW5kIG1pc21hdGNoZWQgdmFsdWVzIGlzIGdlbmVyYXRlZC4KLQotICAgICAgTm90ZSwgdGhlIGFyZ3VtZW50cyBhcmUgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIG9mIHdoYXQgdGhlIG1ldGhvZCBuYW1lCi0gICAgICBkaWN0YXRlcy4gIEluc3RlYWQsIGNvbnNpZGVyIHVzaW5nIHRoZSBzZXQtbWV0aG9kcyBvbiA6cmVmOmBkaWN0aW9uYXJ5Ci0gICAgICB2aWV3cyA8ZGljdC12aWV3cz5gLCBmb3IgZXhhbXBsZTogYGBkLmtleXMoKSA8PSBlLmtleXMoKWBgIG9yCi0gICAgICBgYGQuaXRlbXMoKSA8PSBkLml0ZW1zKClgYC4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCi0gICAgICAuLiBkZXByZWNhdGVkOjogMy4yCi0KLQogICAgLi4gbWV0aG9kOjogYXNzZXJ0Q291bnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKIAogICAgICAgVGVzdCB0aGF0IHNlcXVlbmNlICpmaXJzdCogY29udGFpbnMgdGhlIHNhbWUgZWxlbWVudHMgYXMgKnNlY29uZCosCkBAIC0xMTgxLDIxICsxMDQ5LDYgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIG1ldGhvZDo6IGFzc2VydFNhbWVFbGVtZW50cyhmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKLQotICAgICAgVGVzdCB0aGF0IHNlcXVlbmNlICpmaXJzdCogY29udGFpbnMgdGhlIHNhbWUgZWxlbWVudHMgYXMgKnNlY29uZCosCi0gICAgICByZWdhcmRsZXNzIG9mIHRoZWlyIG9yZGVyLiBXaGVuIHRoZXkgZG9uJ3QsIGFuIGVycm9yIG1lc3NhZ2UgbGlzdGluZwotICAgICAgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHNlcXVlbmNlcyB3aWxsIGJlIGdlbmVyYXRlZC4KLQotICAgICAgRHVwbGljYXRlIGVsZW1lbnRzIGFyZSBpZ25vcmVkIHdoZW4gY29tcGFyaW5nICpmaXJzdCogYW5kICpzZWNvbmQqLgotICAgICAgSXQgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYGBhc3NlcnRFcXVhbChzZXQoZmlyc3QpLCBzZXQoc2Vjb25kKSlgYAotICAgICAgYnV0IGl0IHdvcmtzIHdpdGggc2VxdWVuY2VzIG9mIHVuaGFzaGFibGUgb2JqZWN0cyBhcyB3ZWxsLiBCZWNhdXNlCi0gICAgICBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkLCB0aGlzIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgotICAgICAgOm1ldGg6YGFzc2VydENvdW50RXF1YWxgLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKLSAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLQogCiAgICAuLiBfdHlwZS1zcGVjaWZpYy1tZXRob2RzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdAppbmRleCA5YzA0ODU5Li45YzNmZTkxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKQEAgLTgsMjEgKzgsMjMgQEAKIAogCiBUaGUgOm1vZDpgdXJsbGliLmVycm9yYCBtb2R1bGUgZGVmaW5lcyB0aGUgZXhjZXB0aW9uIGNsYXNzZXMgZm9yIGV4Y2VwdGlvbnMKLXJhaXNlZCBieSA6bW9kOmB1cmxsaWIucmVxdWVzdGAuICBUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgOmV4YzpgVVJMRXJyb3JgLAotd2hpY2ggaW5oZXJpdHMgZnJvbSA6ZXhjOmBJT0Vycm9yYC4KK3JhaXNlZCBieSA6bW9kOmB1cmxsaWIucmVxdWVzdGAuICBUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgOmV4YzpgVVJMRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHJhaXNlZCBieSA6bW9kOmB1cmxsaWIuZXJyb3JgIGFzIGFwcHJvcHJpYXRlOgogCiAuLiBleGNlcHRpb246OiBVUkxFcnJvcgogCiAgICBUaGUgaGFuZGxlcnMgcmFpc2UgdGhpcyBleGNlcHRpb24gKG9yIGRlcml2ZWQgZXhjZXB0aW9ucykgd2hlbiB0aGV5IHJ1biBpbnRvCi0gICBhIHByb2JsZW0uICBJdCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLgorICAgYSBwcm9ibGVtLiAgSXQgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gYXR0cmlidXRlOjogcmVhc29uCiAKICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgZXJyb3IuICBJdCBjYW4gYmUgYSBtZXNzYWdlIHN0cmluZyBvciBhbm90aGVyCi0gICAgICBleGNlcHRpb24gaW5zdGFuY2UgKDpleGM6YHNvY2tldC5lcnJvcmAgZm9yIHJlbW90ZSBVUkxzLCA6ZXhjOmBPU0Vycm9yYAotICAgICAgZm9yIGxvY2FsIFVSTHMpLgorICAgICAgZXhjZXB0aW9uIGluc3RhbmNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgVVJMRXJyb3JgIGhhcyBiZWVuIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCBpbnN0ZWFkCisgICAgICBvZiA6ZXhjOmBJT0Vycm9yYC4KIAogCiAuLiBleGNlcHRpb246OiBIVFRQRXJyb3IKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CmluZGV4IGJjMWRhNjIuLjIwOGNiOTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdApAQCAtODEsOCArODEsNyBAQAogICAgdGhpcyBhcmd1bWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nLgogCiAgICBJZiB0aGUgKmFsbG93X2ZyYWdtZW50cyogYXJndW1lbnQgaXMgZmFsc2UsIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBub3QKLSAgIGFsbG93ZWQsIGV2ZW4gaWYgdGhlIFVSTCdzIGFkZHJlc3Npbmcgc2NoZW1lIG5vcm1hbGx5IGRvZXMgc3VwcG9ydCB0aGVtLiAgVGhlCi0gICBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGFyZ3VtZW50IGlzIDpjb25zdDpgVHJ1ZWAuCisgICBhbGxvd2VkLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgYXJndW1lbnQgaXMgOmNvbnN0OmBUcnVlYC4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgdHVwbGVgLiAgVGhpcwogICAgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCByZWFkLW9ubHkgY29udmVuaWVuY2UgYXR0cmlidXRlczoKQEAgLTExOSw2ICsxMTgsMTEgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBJUHY2IFVSTCBwYXJzaW5nIGNhcGFiaWxpdGllcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBmcmFnbWVudCBpcyBub3cgcGFyc2VkIGZvciBhbGwgVVJMIHNjaGVtZXMgKHVubGVzcyAqYWxsb3dfZnJhZ21lbnQqIGlzCisgICAgICBmYWxzZSksIGluIGFjY29yZGFuY2Ugd2l0aCA6cmZjOmAzOTg2YC4gIFByZXZpb3VzbHksIGEgd2hpdGVsaXN0IG9mCisgICAgICBzY2hlbWVzIHRoYXQgc3VwcG9ydCBmcmFnbWVudHMgZXhpc3RlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHBhcnNlX3FzKHFzLCBrZWVwX2JsYW5rX3ZhbHVlcz1GYWxzZSwgc3RyaWN0X3BhcnNpbmc9RmFsc2UsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpCiAKQEAgLTE0MSw4ICsxNDUsOSBAQAogICAgcGVyY2VudC1lbmNvZGVkIHNlcXVlbmNlcyBpbnRvIFVuaWNvZGUgY2hhcmFjdGVycywgYXMgYWNjZXB0ZWQgYnkgdGhlCiAgICA6bWV0aDpgYnl0ZXMuZGVjb2RlYCBtZXRob2QuCiAKLSAgIFVzZSB0aGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRvIGNvbnZlcnQgc3VjaAotICAgZGljdGlvbmFyaWVzIGludG8gcXVlcnkgc3RyaW5ncy4KKyAgIFVzZSB0aGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uICh3aXRoIHRoZSBgYGRvc2VxYGAKKyAgIHBhcmFtZXRlciBzZXQgdG8gYGBUcnVlYGApIHRvIGNvbnZlcnQgc3VjaCBkaWN0aW9uYXJpZXMgaW50byBxdWVyeQorICAgc3RyaW5ncy4KIAogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IGI0NzY0Y2MuLjIxMjU1ZTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTE2LDcgKzE2LDcgQEAKIFRoZSA6bW9kOmB1cmxsaWIucmVxdWVzdGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIAotLi4gZnVuY3Rpb246OiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lWywgdGltZW91dF0sICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogdXJsb3Blbih1cmwsIGRhdGE9Tm9uZVssIHRpbWVvdXRdLCAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1UcnVlKQogCiAgICBPcGVuIHRoZSBVUkwgKnVybCosIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYQogICAgOmNsYXNzOmBSZXF1ZXN0YCBvYmplY3QuCkBAIC01Myw5ICs1MywxNSBAQAogICAgcG9pbnQgdG8gYSBkaXJlY3Rvcnkgb2YgaGFzaGVkIGNlcnRpZmljYXRlIGZpbGVzLiAgTW9yZSBpbmZvcm1hdGlvbiBjYW4KICAgIGJlIGZvdW5kIGluIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnNgLgogCisgICBUaGUgKmNhZGVmYXVsdCogcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRvIGZhbGwgYmFjayB0byBsb2FkaW5nIGEKKyAgIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZGVmaW5lZCBieSB0aGUgdW5kZXJseWluZyBPcGVuU1NMIGxpYnJhcnkgaWYgdGhlCisgICAqY2FmaWxlKiBhbmQgKmNhcGF0aCogcGFyYW1ldGVycyBhcmUgb21pdHRlZC4gIFRoaXMgd2lsbCBvbmx5IHdvcmsgb24KKyAgIHNvbWUgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorCiAgICAuLiB3YXJuaW5nOjoKLSAgICAgIElmIG5laXRoZXIgKmNhZmlsZSogbm9yICpjYXBhdGgqIGlzIHNwZWNpZmllZCwgYW4gSFRUUFMgcmVxdWVzdAotICAgICAgd2lsbCBub3QgZG8gYW55IHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUuCisgICAgICBJZiBuZWl0aGVyICpjYWZpbGUqIG5vciAqY2FwYXRoKiBpcyBzcGVjaWZpZWQsIGFuZCAqY2FkZWZhdWx0KiBpcyBGYWxzZSwKKyAgICAgIGFuIEhUVFBTIHJlcXVlc3Qgd2lsbCBub3QgZG8gYW55IHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyJ3MKKyAgICAgIGNlcnRpZmljYXRlLgogCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBmaWxlLWxpa2Ugb2JqZWN0IHRoYXQgd29ya3MgYXMgYSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCwKICAgIHdpdGggdHdvIGFkZGl0aW9uYWwgbWV0aG9kcyBmcm9tIHRoZSA6bW9kOmB1cmxsaWIucmVzcG9uc2VgIG1vZHVsZQpAQCAtOTIsNiArOTgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICAqZGF0YSogY2FuIGJlIGFuIGl0ZXJhYmxlIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpjYWRlZmF1bHQqIHdhcyBhZGRlZC4KKwogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKICAgIEluc3RhbGwgYW4gOmNsYXNzOmBPcGVuZXJEaXJlY3RvcmAgaW5zdGFuY2UgYXMgdGhlIGRlZmF1bHQgZ2xvYmFsIG9wZW5lci4KQEAgLTE0NSw3ICsxNTQsNyBAQAogCiBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHByb3ZpZGVkOgogCi0uLiBjbGFzczo6IFJlcXVlc3QodXJsLCBkYXRhPU5vbmUsIGhlYWRlcnM9e30sIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UpCisuLiBjbGFzczo6IFJlcXVlc3QodXJsLCBkYXRhPU5vbmUsIGhlYWRlcnM9e30sIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UsIG1ldGhvZD1Ob25lKQogCiAgICBUaGlzIGNsYXNzIGlzIGFuIGFic3RyYWN0aW9uIG9mIGEgVVJMIHJlcXVlc3QuCiAKQEAgLTE5OCw2ICsyMDcsMTMgQEAKICAgIGRvY3VtZW50LCBhbmQgdGhlIHVzZXIgaGFkIG5vIG9wdGlvbiB0byBhcHByb3ZlIHRoZSBhdXRvbWF0aWMKICAgIGZldGNoaW5nIG9mIHRoZSBpbWFnZSwgdGhpcyBzaG91bGQgYmUgdHJ1ZS4KIAorICAgKm1ldGhvZCogc2hvdWxkIGJlIGEgc3RyaW5nIHRoYXQgaW5kaWNhdGVzIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRoYXQKKyAgIHdpbGwgYmUgdXNlZCAoZS5nLiBgYCdIRUFEJ2BgKS4gIEl0cyB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlCisgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgYW5kIGlzIHVzZWQgYnkgOm1ldGg6YGdldF9tZXRob2QoKWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIGFyZ3VtZW50IGlzIGFkZGVkIHRvIHRoZSBSZXF1ZXN0IGNsYXNzLgorCiAKIC4uIGNsYXNzOjogT3BlbmVyRGlyZWN0b3IoKQogCkBAIC0yNjMsMTAgKzI3OSwxMSBAQAogCiAuLiBjbGFzczo6IEhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQogCi0gICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkIGJlCi0gICBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0byBzZWN0aW9uCi0gICA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0IGJlCi0gICBzdXBwb3J0ZWQuCisgICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkCisgICBiZSBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0bworICAgc2VjdGlvbiA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0CisgICBiZSBzdXBwb3J0ZWQuIEhUVFBCYXNpY0F1dGhIYW5kbGVyIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuCisgICBwcmVzZW50ZWQgd2l0aCBhIHdyb25nIEF1dGhlbnRpY2F0aW9uIHNjaGVtZS4KIAogCiAuLiBjbGFzczo6IFByb3h5QmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKQEAgLTI4OCwxMCArMzA1LDE5IEBACiAKIC4uIGNsYXNzOjogSFRUUERpZ2VzdEF1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQogCi0gICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkIGJlCi0gICBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0byBzZWN0aW9uCi0gICA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0IGJlCi0gICBzdXBwb3J0ZWQuCisgICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkCisgICBiZSBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0bworICAgc2VjdGlvbiA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0CisgICBiZSBzdXBwb3J0ZWQuIFdoZW4gYm90aCBEaWdlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlciBhbmQgQmFzaWMKKyAgIEF1dGhlbnRpY2F0aW9uIEhhbmRsZXIgYXJlIGJvdGggYWRkZWQsIERpZ2VzdCBBdXRoZW50aWNhdGlvbiBpcyBhbHdheXMgdHJpZWQKKyAgIGZpcnN0LiBJZiB0aGUgRGlnZXN0IEF1dGhlbnRpY2F0aW9uIHJldHVybnMgYSA0MHggcmVzcG9uc2UgYWdhaW4sIGl0IGlzIHNlbnQKKyAgIHRvIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGhhbmRsZXIgdG8gSGFuZGxlLiAgVGhpcyBIYW5kbGVyIG1ldGhvZCB3aWxsIHJhaXNlIGEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gYXV0aGVudGljYXRpb24gc2NoZW1lIG90aGVyIHRoYW4KKyAgIERpZ2VzdCBvciBCYXNpYy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YFZhbHVlRXJyb3JgIG9uIHVuc3VwcG9ydGVkIEF1dGhlbnRpY2F0aW9uIFNjaGVtZS4KKwogCiAKIC4uIGNsYXNzOjogUHJveHlEaWdlc3RBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKQEAgLTM4MiwyNyArNDA4LDI1IEBACiAgICBib29sZWFuLCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVxdWVzdCBpcyB1bnZlcmlmaWFibGUgYXMgZGVmaW5lZAogICAgYnkgUkZDIDI5NjUuCiAKLS4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2RhdGEoZGF0YSkKKy4uIGF0dHJpYnV0ZTo6IFJlcXVlc3QubWV0aG9kCiAKLSAgIFNldCB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBkYXRhIHRvICpkYXRhKi4gIFRoaXMgaXMgaWdub3JlZCBieSBhbGwgaGFuZGxlcnMgZXhjZXB0Ci0gICBIVFRQIGhhbmRsZXJzIC0tLSBhbmQgdGhlcmUgaXQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcsIGFuZCB3aWxsIGNoYW5nZSB0aGUKLSAgIHJlcXVlc3QgdG8gYmUgYGBQT1NUYGAgcmF0aGVyIHRoYW4gYGBHRVRgYC4KKyAgIFRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIHVzZS4gIFRoaXMgdmFsdWUgaXMgdXNlZCBieQorICAgOm1ldGg6YH5SZXF1ZXN0LmdldF9tZXRob2RgIHRvIG92ZXJyaWRlIHRoZSBjb21wdXRlZCBIVFRQIHJlcXVlc3QKKyAgIG1ldGhvZCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXR1cm5lZC4gIFRoaXMgYXR0cmlidXRlIGlzIGluaXRpYWxpemVkIHdpdGgKKyAgIHRoZSB2YWx1ZSBvZiB0aGUgKm1ldGhvZCogYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfbWV0aG9kKCkKIAotICAgUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuICBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IKLSAgIEhUVFAgcmVxdWVzdHMsIGFuZCBjdXJyZW50bHkgYWx3YXlzIHJldHVybnMgYGAnR0VUJ2BgIG9yIGBgJ1BPU1QnYGAuCisgICBSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4gIElmCisgICA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIGlzIG5vdCBgYE5vbmVgYCwgcmV0dXJuIGl0cyB2YWx1ZSwgb3RoZXJ3aXNlIHJldHVybgorICAgYGAnR0VUJ2BgIGlmIDphdHRyOmBSZXF1ZXN0LmRhdGFgIGlzIGBgTm9uZWBgLCBvciBgYCdQT1NUJ2BgIGlmIGl0J3Mgbm90LgorICAgVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIEhUVFAgcmVxdWVzdHMuCiAKLQotLi4gbWV0aG9kOjogUmVxdWVzdC5oYXNfZGF0YSgpCi0KLSAgIFJldHVybiB3aGV0aGVyIHRoZSBpbnN0YW5jZSBoYXMgYSBub24tXCBgYE5vbmVgYCBkYXRhLgotCi0KLS4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X2RhdGEoKQotCi0gICBSZXR1cm4gdGhlIGluc3RhbmNlJ3MgZGF0YS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBnZXRfbWV0aG9kIG5vdyBsb29rcyBhdCB0aGUgdmFsdWUgb2YgOmF0dHI6YFJlcXVlc3QubWV0aG9kYC4KIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmFkZF9oZWFkZXIoa2V5LCB2YWwpCkBAIC00MzIsMjAgKzQ1Niw2MCBAQAogICAgUmV0dXJuIHRoZSBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgogCiAKKy4uIG1ldGhvZDo6IFJlcXVlc3Quc2V0X3Byb3h5KGhvc3QsIHR5cGUpCisKKyAgIFByZXBhcmUgdGhlIHJlcXVlc3QgYnkgY29ubmVjdGluZyB0byBhIHByb3h5IHNlcnZlci4gVGhlICpob3N0KiBhbmQgKnR5cGUqIHdpbGwKKyAgIHJlcGxhY2UgdGhvc2Ugb2YgdGhlIGluc3RhbmNlLCBhbmQgdGhlIGluc3RhbmNlJ3Mgc2VsZWN0b3Igd2lsbCBiZSB0aGUgb3JpZ2luYWwKKyAgIFVSTCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3IuCisKKworLi4gbWV0aG9kOjogUmVxdWVzdC5hZGRfZGF0YShkYXRhKQorCisgICBTZXQgdGhlIDpjbGFzczpgUmVxdWVzdGAgZGF0YSB0byAqZGF0YSouICBUaGlzIGlzIGlnbm9yZWQgYnkgYWxsIGhhbmRsZXJzIGV4Y2VwdAorICAgSFRUUCBoYW5kbGVycyAtLS0gYW5kIHRoZXJlIGl0IHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nLCBhbmQgd2lsbCBjaGFuZ2UgdGhlCisgICByZXF1ZXN0IHRvIGJlIGBgUE9TVGBgIHJhdGhlciB0aGFuIGBgR0VUYGAuICBEZXByZWNhdGVkIGluIDMuMywgdXNlCisgICA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisKKy4uIG1ldGhvZDo6IFJlcXVlc3QuaGFzX2RhdGEoKQorCisgICBSZXR1cm4gd2hldGhlciB0aGUgaW5zdGFuY2UgaGFzIGEgbm9uLVwgYGBOb25lYGAgZGF0YS4gRGVwcmVjYXRlZCBpbiAzLjMsCisgICB1c2UgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworCisuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9kYXRhKCkKKworICAgUmV0dXJuIHRoZSBpbnN0YW5jZSdzIGRhdGEuICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfdHlwZSgpCiAKLSAgIFJldHVybiB0aGUgdHlwZSBvZiB0aGUgVVJMIC0tLSBhbHNvIGtub3duIGFzIHRoZSBzY2hlbWUuCisgICBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIFVSTCAtLS0gYWxzbyBrbm93biBhcyB0aGUgc2NoZW1lLiAgRGVwcmVjYXRlZCBpbiAzLjMsCisgICB1c2UgOmF0dHI6YFJlcXVlc3QudHlwZWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9ob3N0KCkKIAotICAgUmV0dXJuIHRoZSBob3N0IHRvIHdoaWNoIGEgY29ubmVjdGlvbiB3aWxsIGJlIG1hZGUuCisgICBSZXR1cm4gdGhlIGhvc3QgdG8gd2hpY2ggYSBjb25uZWN0aW9uIHdpbGwgYmUgbWFkZS4gRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QuaG9zdGAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9zZWxlY3RvcigpCiAKICAgIFJldHVybiB0aGUgc2VsZWN0b3IgLS0tIHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuCisgICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0LnNlbGVjdG9yYC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9oZWFkZXIoaGVhZGVyX25hbWUsIGRlZmF1bHQ9Tm9uZSkKIApAQCAtNDYwLDIxICs1MjQsMjIgQEAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5zZXRfcHJveHkoaG9zdCwgdHlwZSkKIAotICAgUHJlcGFyZSB0aGUgcmVxdWVzdCBieSBjb25uZWN0aW5nIHRvIGEgcHJveHkgc2VydmVyLiBUaGUgKmhvc3QqIGFuZCAqdHlwZSogd2lsbAotICAgcmVwbGFjZSB0aG9zZSBvZiB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgaW5zdGFuY2UncyBzZWxlY3RvciB3aWxsIGJlIHRoZSBvcmlnaW5hbAotICAgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KLQotCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9vcmlnaW5fcmVxX2hvc3QoKQogCi0gICBSZXR1cm4gdGhlIHJlcXVlc3QtaG9zdCBvZiB0aGUgb3JpZ2luIHRyYW5zYWN0aW9uLCBhcyBkZWZpbmVkIGJ5IDpyZmM6YDI5NjVgLgotICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4KKyAgIFJldHVybiB0aGUgcmVxdWVzdC1ob3N0IG9mIHRoZSBvcmlnaW4gdHJhbnNhY3Rpb24sIGFzIGRlZmluZWQgYnkKKyAgIDpyZmM6YDI5NjVgLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4KKyAgIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UgOmF0dHI6YFJlcXVlc3Qub3JpZ2luX3JlcV9ob3N0YC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlKCkKIAogICAgUmV0dXJuIHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgdW52ZXJpZmlhYmxlLCBhcyBkZWZpbmVkIGJ5IFJGQyAyOTY1LiBTZWUgdGhlCi0gICBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4KKyAgIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGNvbnN0cnVjdG9yLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QudW52ZXJpZmlhYmxlYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAKIC4uIF9vcGVuZXItZGlyZWN0b3Itb2JqZWN0czoKQEAgLTExMzgsMTYgKzEyMDMsMTQgQEAKIGBgdXJsbGliYGAgKGFzIG9wcG9zZWQgdG8gYGB1cmxsaWIyYGApLiAgVGhleSBtaWdodCBiZWNvbWUgZGVwcmVjYXRlZCBhdAogc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLgogCi0KIC4uIGZ1bmN0aW9uOjogdXJscmV0cmlldmUodXJsLCBmaWxlbmFtZT1Ob25lLCByZXBvcnRob29rPU5vbmUsIGRhdGE9Tm9uZSkKIAotICAgQ29weSBhIG5ldHdvcmsgb2JqZWN0IGRlbm90ZWQgYnkgYSBVUkwgdG8gYSBsb2NhbCBmaWxlLCBpZiBuZWNlc3NhcnkuIElmIHRoZSBVUkwKLSAgIHBvaW50cyB0byBhIGxvY2FsIGZpbGUsIG9yIGEgdmFsaWQgY2FjaGVkIGNvcHkgb2YgdGhlIG9iamVjdCBleGlzdHMsIHRoZSBvYmplY3QKLSAgIGlzIG5vdCBjb3BpZWQuICBSZXR1cm4gYSB0dXBsZSBgYChmaWxlbmFtZSwgaGVhZGVycylgYCB3aGVyZSAqZmlsZW5hbWUqIGlzIHRoZQorICAgQ29weSBhIG5ldHdvcmsgb2JqZWN0IGRlbm90ZWQgYnkgYSBVUkwgdG8gYSBsb2NhbCBmaWxlLiBJZiB0aGUgVVJMCisgICBwb2ludHMgdG8gYSBsb2NhbCBmaWxlLCB0aGUgb2JqZWN0IHdpbGwgbm90IGJlIGNvcGllZCB1bmxlc3MgZmlsZW5hbWUgaXMgc3VwcGxpZWQuCisgICBSZXR1cm4gYSB0dXBsZSBgYChmaWxlbmFtZSwgaGVhZGVycylgYCB3aGVyZSAqZmlsZW5hbWUqIGlzIHRoZQogICAgbG9jYWwgZmlsZSBuYW1lIHVuZGVyIHdoaWNoIHRoZSBvYmplY3QgY2FuIGJlIGZvdW5kLCBhbmQgKmhlYWRlcnMqIGlzIHdoYXRldmVyCiAgICB0aGUgOm1ldGg6YGluZm9gIG1ldGhvZCBvZiB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IDpmdW5jOmB1cmxvcGVuYCByZXR1cm5lZCAoZm9yCi0gICBhIHJlbW90ZSBvYmplY3QsIHBvc3NpYmx5IGNhY2hlZCkuIEV4Y2VwdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvcgotICAgOmZ1bmM6YHVybG9wZW5gLgorICAgYSByZW1vdGUgb2JqZWN0KS4gRXhjZXB0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpmdW5jOmB1cmxvcGVuYC4KIAogICAgVGhlIHNlY29uZCBhcmd1bWVudCwgaWYgcHJlc2VudCwgc3BlY2lmaWVzIHRoZSBmaWxlIGxvY2F0aW9uIHRvIGNvcHkgdG8gKGlmCiAgICBhYnNlbnQsIHRoZSBsb2NhdGlvbiB3aWxsIGJlIGEgdGVtcGZpbGUgd2l0aCBhIGdlbmVyYXRlZCBuYW1lKS4gVGhlIHRoaXJkCkBAIC0xMTU4LDYgKzEyMjEsMTMgQEAKICAgIHRoaXJkIGFyZ3VtZW50IG1heSBiZSBgYC0xYGAgb24gb2xkZXIgRlRQIHNlcnZlcnMgd2hpY2ggZG8gbm90IHJldHVybiBhIGZpbGUKICAgIHNpemUgaW4gcmVzcG9uc2UgdG8gYSByZXRyaWV2YWwgcmVxdWVzdC4KIAorICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIHRoZSBtb3N0IGNvbW1vbiB1c2FnZSBzY2VuYXJpbzo6CisKKyAgICAgID4+PiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICAgID4+PiBsb2NhbF9maWxlbmFtZSwgaGVhZGVycyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwOi8vcHl0aG9uLm9yZy8nKQorICAgICAgPj4+IGh0bWwgPSBvcGVuKGxvY2FsX2ZpbGVuYW1lKQorICAgICAgPj4+IGh0bWwuY2xvc2UoKQorCiAgICBJZiB0aGUgKnVybCogdXNlcyB0aGUgOmZpbGU6YGh0dHA6YCBzY2hlbWUgaWRlbnRpZmllciwgdGhlIG9wdGlvbmFsICpkYXRhKgogICAgYXJndW1lbnQgbWF5IGJlIGdpdmVuIHRvIHNwZWNpZnkgYSBgYFBPU1RgYCByZXF1ZXN0IChub3JtYWxseSB0aGUgcmVxdWVzdAogICAgdHlwZSBpcyBgYEdFVGBgKS4gIFRoZSAqZGF0YSogYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBpbiBzdGFuZGFyZApAQCAtMTE3MCwyMCArMTI0MCwyMCBAQAogICAgdGhlICBkb3dubG9hZCBpcyBpbnRlcnJ1cHRlZC4KIAogICAgVGhlICpDb250ZW50LUxlbmd0aCogaXMgdHJlYXRlZCBhcyBhIGxvd2VyIGJvdW5kOiBpZiB0aGVyZSdzIG1vcmUgZGF0YSAgdG8gcmVhZCwKLSAgIDpmdW5jOmB1cmxyZXRyaWV2ZWAgcmVhZHMgbW9yZSBkYXRhLCBidXQgaWYgbGVzcyBkYXRhIGlzIGF2YWlsYWJsZSwgIGl0IHJhaXNlcwotICAgdGhlIGV4Y2VwdGlvbi4KKyAgIHVybHJldHJpZXZlIHJlYWRzIG1vcmUgZGF0YSwgYnV0IGlmIGxlc3MgZGF0YSBpcyBhdmFpbGFibGUsICBpdCByYWlzZXMgdGhlCisgICBleGNlcHRpb24uCiAKICAgIFlvdSBjYW4gc3RpbGwgcmV0cmlldmUgdGhlIGRvd25sb2FkZWQgZGF0YSBpbiB0aGlzIGNhc2UsIGl0IGlzIHN0b3JlZCAgaW4gdGhlCiAgICA6YXR0cjpgY29udGVudGAgYXR0cmlidXRlIG9mIHRoZSBleGNlcHRpb24gaW5zdGFuY2UuCiAKLSAgIElmIG5vICpDb250ZW50LUxlbmd0aCogaGVhZGVyIHdhcyBzdXBwbGllZCwgOmZ1bmM6YHVybHJldHJpZXZlYCBjYW4gbm90IGNoZWNrCi0gICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBpdCBoYXMgZG93bmxvYWRlZCwgYW5kIGp1c3QgcmV0dXJucyBpdC4gIEluIHRoaXMgY2FzZQotICAgeW91IGp1c3QgaGF2ZSB0byBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwuCisgICBJZiBubyAqQ29udGVudC1MZW5ndGgqIGhlYWRlciB3YXMgc3VwcGxpZWQsIHVybHJldHJpZXZlIGNhbiBub3QgY2hlY2sgdGhlIHNpemUKKyAgIG9mIHRoZSBkYXRhIGl0IGhhcyBkb3dubG9hZGVkLCBhbmQganVzdCByZXR1cm5zIGl0LiAgSW4gdGhpcyBjYXNlIHlvdSBqdXN0IGhhdmUKKyAgIHRvIGFzc3VtZSB0aGF0IHRoZSBkb3dubG9hZCB3YXMgc3VjY2Vzc2Z1bC4KIAogLi4gZnVuY3Rpb246OiB1cmxjbGVhbnVwKCkKIAotICAgQ2xlYXIgdGhlIGNhY2hlIHRoYXQgbWF5IGhhdmUgYmVlbiBidWlsdCB1cCBieSBwcmV2aW91cyBjYWxscyB0bwotICAgOmZ1bmM6YHVybHJldHJpZXZlYC4KKyAgIENsZWFucyB1cCB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGxlZnQgYmVoaW5kIGJ5IHByZXZpb3VzCisgICBjYWxscyB0byA6ZnVuYzpgdXJscmV0cmlldmVgLgogCiAuLiBjbGFzczo6IFVSTG9wZW5lcihwcm94aWVzPU5vbmUsICoqeDUwOSkKIApAQCAtMTIwNyw3ICsxMjc3LDcgQEAKICAgICprZXlfZmlsZSogYW5kICpjZXJ0X2ZpbGUqIGFyZSBzdXBwb3J0ZWQgdG8gcHJvdmlkZSBhbiAgU1NMIGtleSBhbmQgY2VydGlmaWNhdGU7CiAgICBib3RoIGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBjbGllbnQgYXV0aGVudGljYXRpb24uCiAKLSAgIDpjbGFzczpgVVJMb3BlbmVyYCBvYmplY3RzIHdpbGwgcmFpc2UgYW4gOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGlmIHRoZSBzZXJ2ZXIKKyAgIDpjbGFzczpgVVJMb3BlbmVyYCBvYmplY3RzIHdpbGwgcmFpc2UgYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlmIHRoZSBzZXJ2ZXIKICAgIHJldHVybnMgYW4gZXJyb3IgY29kZS4KIAogICAgIC4uIG1ldGhvZDo6IG9wZW4oZnVsbHVybCwgZGF0YT1Ob25lKQpAQCAtMTIzNSw3ICsxMzA1LDggQEAKICAgICAgICAqZmlsZW5hbWUqIGlzIG5vdCBnaXZlbiwgdGhlIGZpbGVuYW1lIGlzIHRoZSBvdXRwdXQgb2YgOmZ1bmM6YHRlbXBmaWxlLm1rdGVtcGAKICAgICAgICB3aXRoIGEgc3VmZml4IHRoYXQgbWF0Y2hlcyB0aGUgc3VmZml4IG9mIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IG9mIHRoZSBpbnB1dAogICAgICAgIFVSTC4gIElmICpyZXBvcnRob29rKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIGFjY2VwdGluZyB0aHJlZSBudW1lcmljCi0gICAgICAgcGFyYW1ldGVycy4gIEl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIGVhY2ggY2h1bmsgb2YgZGF0YSBpcyByZWFkIGZyb20gdGhlCisgICAgICAgcGFyYW1ldGVyczogQSBjaHVuayBudW1iZXIsIHRoZSBtYXhpbXVtIHNpemUgY2h1bmtzIGFyZSByZWFkIGluIGFuZCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZG93bmxvYWQKKyAgICAgICAoLTEgaWYgdW5rbm93bikuICBJdCB3aWxsIGJlIGNhbGxlZCBvbmNlIGF0IHRoZSBzdGFydCBhbmQgYWZ0ZXIgZWFjaCBjaHVuayBvZiBkYXRhIGlzIHJlYWQgZnJvbSB0aGUKICAgICAgICBuZXR3b3JrLiAgKnJlcG9ydGhvb2sqIGlzIGlnbm9yZWQgZm9yIGxvY2FsIFVSTHMuCiAKICAgICAgICBJZiB0aGUgKnVybCogdXNlcyB0aGUgOmZpbGU6YGh0dHA6YCBzY2hlbWUgaWRlbnRpZmllciwgdGhlIG9wdGlvbmFsICpkYXRhKgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhNzRiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKQEAgLTAsMCArMSw5IEBACis6bW9kOmB1cmxsaWJgIC0tLSBVUkwgaGFuZGxpbmcgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYGB1cmxsaWJgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCBVUkxzOgorCisqIDptb2Q6YHVybGxpYi5yZXF1ZXN0YCBmb3Igb3BlbmluZyBhbmQgcmVhZGluZyBVUkxzCisqIDptb2Q6YHVybGxpYi5lcnJvcmAgY29udGFpbmluZyB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisqIDptb2Q6YHVybGxpYi5wYXJzZWAgZm9yIHBhcnNpbmcgVVJMcworKiA6bW9kOmB1cmxsaWIucm9ib3RwYXJzZXJgIGZvciBwYXJzaW5nIGBgcm9ib3RzLnR4dGBgIGZpbGVzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS92ZW52LnJzdCBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0OTk5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS92ZW52LnJzdApAQCAtMCwwICsxLDE4MCBAQAorOm1vZDpgdmVudmAgLS0tIENyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogdmVudgorICAgOnN5bm9wc2lzOiBDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cy4KKy4uIG1vZHVsZWF1dGhvcjo6IFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEB5YWhvby5jby51az4KKy4uIHNlY3Rpb25hdXRob3I6OiBWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAeWFob28uY28udWs+CisKKworLi4gaW5kZXg6OiBwYWlyOiBFbnZpcm9ubWVudHM7IHZpcnR1YWwKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3ZlbnYucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB2ZW52YCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbGlnaHR3ZWlnaHQgInZpcnR1YWwKK2Vudmlyb25tZW50cyIgd2l0aCB0aGVpciBvd24gc2l0ZSBkaXJlY3Rvcmllcywgb3B0aW9uYWxseSBpc29sYXRlZCBmcm9tIHN5c3RlbQorc2l0ZSBkaXJlY3Rvcmllcy4gIEVhY2ggdmlydHVhbCBlbnZpcm9ubWVudCBoYXMgaXRzIG93biBQeXRob24gYmluYXJ5IChhbGxvd2luZworY3JlYXRpb24gb2YgZW52aXJvbm1lbnRzIHdpdGggdmFyaW91cyBQeXRob24gdmVyc2lvbnMpIGFuZCBjYW4gaGF2ZSBpdHMgb3duCitpbmRlcGVuZGVudCBzZXQgb2YgaW5zdGFsbGVkIFB5dGhvbiBwYWNrYWdlcyBpbiBpdHMgc2l0ZSBkaXJlY3Rvcmllcy4KKworCitDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5jbHVkZTo6IC91c2luZy92ZW52LWNyZWF0ZS5pbmMKKworCisuLiBfdmVudi1kZWY6CisKKy4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCisgICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCisgICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAorICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAorICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorCisgICBBIHZlbnYgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZSBmaWxlcyBhbmQKKyAgIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2ZW52LgorCisgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBEaXN0cmlidXRlYGAgYW5kIGBgcGlwYGAgd29yayBhcworICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCisgICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIGluc3RhbGwgdGhlbSBpbnRvIHRoZSB2ZW52IGZpcnN0OiB0aGlzIGNvdWxkIGJlCisgICBkb25lIGJ5IHJ1bm5pbmcgYGBkaXN0cmlidXRlX3NldHVwLnB5YGAgd2l0aCB0aGUgdmVudiBhY3RpdmF0ZWQsCisgICBmb2xsb3dlZCBieSBydW5uaW5nIGBgZWFzeV9pbnN0YWxsIHBpcGBgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgZG93bmxvYWQKKyAgIHRoZSBzb3VyY2UgdGFyYmFsbHMgYW5kIHJ1biBgYHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsYGAgYWZ0ZXIgdW5wYWNraW5nLAorICAgd2l0aCB0aGUgdmVudiBhY3RpdmF0ZWQuCisKKyAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSAoaS5lLiB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlCisgICBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UKKyAgIGRpcmVjdG9yeSBvZiB0aGUgdmVudiwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24KKyAgIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmVudi4gSWYgYSB2ZW52IGlzIG5vdCBhY3RpdmUsIHRoZW4KKyAgIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkKKyAgIGFsbCBwb2ludCB0byBhIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24pLgorCisKK0FQSQorLS0tCisKKy4uIGhpZ2hsaWdodDo6IHB5dGhvbgorCitUaGUgaGlnaC1sZXZlbCBtZXRob2QgZGVzY3JpYmVkIGFib3ZlIG1ha2VzIHVzZSBvZiBhIHNpbXBsZSBBUEkgd2hpY2ggcHJvdmlkZXMKK21lY2hhbmlzbXMgZm9yIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgY3JlYXRvcnMgdG8gY3VzdG9taXplIGVudmlyb25tZW50CitjcmVhdGlvbiBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMsIHRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzLgorCisuLiBjbGFzczo6IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSkKKworICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgorICAgIGluc3RhbnRpYXRpb246CisKKyAgICAqIGBgc3lzdGVtX3NpdGVfcGFja2FnZXNgYCAtLSBhIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB0aGF0IHRoZSBzeXN0ZW0gUHl0aG9uCisgICAgICBzaXRlLXBhY2thZ2VzIHNob3VsZCBiZSBhdmFpbGFibGUgdG8gdGhlIGVudmlyb25tZW50IChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisgICAgKiBgYGNsZWFyYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIGRlbGV0ZSBhbnkgZXhpc3RpbmcgdGFyZ2V0CisgICAgICBkaXJlY3RvcnkgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbiAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworICAgICogYGBzeW1saW5rc2BgIC0tIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXR0ZW1wdCB0byBzeW1saW5rIHRoZQorICAgICAgUHl0aG9uIGJpbmFyeSAoYW5kIGFueSBuZWNlc3NhcnkgRExMcyBvciBvdGhlciBiaW5hcmllcywKKyAgICAgIGUuZy4gYGBweXRob253LmV4ZWBgKSwgcmF0aGVyIHRoYW4gY29weWluZy4gRGVmYXVsdHMgdG8gYGBUcnVlYGAgb24gTGludXggYW5kCisgICAgICBVbml4IHN5c3RlbXMsIGJ1dCBgYEZhbHNlYGAgb24gV2luZG93cy4KKworICAgICogYGB1cGdyYWRlYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIHVwZ3JhZGUgYW4gZXhpc3RpbmcKKyAgICAgIGVudmlyb25tZW50IHdpdGggdGhlIHJ1bm5pbmcgUHl0aG9uIC0gZm9yIHVzZSB3aGVuIHRoYXQgUHl0aG9uIGhhcyBiZWVuCisgICAgICB1cGdyYWRlZCBpbi1wbGFjZSAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworCisKKyAgICBDcmVhdG9ycyBvZiB0aGlyZC1wYXJ0eSB2aXJ0dWFsIGVudmlyb25tZW50IHRvb2xzIHdpbGwgYmUgZnJlZSB0byB1c2UgdGhlCisgICAgcHJvdmlkZWQgYGBFbnZCdWlsZGVyYGAgY2xhc3MgYXMgYSBiYXNlIGNsYXNzLgorCisgICAgVGhlIHJldHVybmVkIGVudi1idWlsZGVyIGlzIGFuIG9iamVjdCB3aGljaCBoYXMgYSBtZXRob2QsIGBgY3JlYXRlYGA6CisKKyAgICAuLiBtZXRob2Q6OiBjcmVhdGUoZW52X2RpcikKKworICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhcyByZXF1aXJlZCBhcmd1bWVudCB0aGUgcGF0aCAoYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8KKyAgICAgICAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5KSBvZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB3aGljaCBpcyB0byBjb250YWluIHRoZQorICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LiAgVGhlIGBgY3JlYXRlYGAgbWV0aG9kIHdpbGwgZWl0aGVyIGNyZWF0ZSB0aGUKKyAgICAgICAgZW52aXJvbm1lbnQgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnksIG9yIHJhaXNlIGFuIGFwcHJvcHJpYXRlCisgICAgICAgIGV4Y2VwdGlvbi4KKworICAgICAgICBUaGUgYGBjcmVhdGVgYCBtZXRob2Qgb2YgdGhlIGBgRW52QnVpbGRlcmBgIGNsYXNzIGlsbHVzdHJhdGVzIHRoZSBob29rcworICAgICAgICBhdmFpbGFibGUgZm9yIHN1YmNsYXNzIGN1c3RvbWl6YXRpb246OgorCisgICAgICAgICAgICBkZWYgY3JlYXRlKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIENyZWF0ZSBhIHZpcnR1YWxpemVkIFB5dGhvbiBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBlbnZfZGlyIGlzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBlbnZfZGlyID0gb3MucGF0aC5hYnNwYXRoKGVudl9kaXIpCisgICAgICAgICAgICAgICAgY29udGV4dCA9IHNlbGYuY3JlYXRlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfY29uZmlndXJhdGlvbihjb250ZXh0KQorICAgICAgICAgICAgICAgIHNlbGYuc2V0dXBfcHl0aG9uKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5zZXR1cF9zY3JpcHRzKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICAgICAgRWFjaCBvZiB0aGUgbWV0aG9kcyA6bWV0aDpgY3JlYXRlX2RpcmVjdG9yaWVzYCwKKyAgICAgICAgOm1ldGg6YGNyZWF0ZV9jb25maWd1cmF0aW9uYCwgOm1ldGg6YHNldHVwX3B5dGhvbmAsCisgICAgICAgIDptZXRoOmBzZXR1cF9zY3JpcHRzYCBhbmQgOm1ldGg6YHBvc3Rfc2V0dXBgIGNhbiBiZSBvdmVycmlkZGVuLgorCisgICAgLi4gbWV0aG9kOjogY3JlYXRlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisKKyAgICAgICAgQ3JlYXRlcyB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGFuZCBhbGwgbmVjZXNzYXJ5IGRpcmVjdG9yaWVzLCBhbmQKKyAgICAgICAgcmV0dXJucyBhIGNvbnRleHQgb2JqZWN0LiAgVGhpcyBpcyBqdXN0IGEgaG9sZGVyIGZvciBhdHRyaWJ1dGVzIChzdWNoIGFzCisgICAgICAgIHBhdGhzKSwgZm9yIHVzZSBieSB0aGUgb3RoZXIgbWV0aG9kcy4KKworICAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisKKyAgICAgICAgQ3JlYXRlcyB0aGUgYGBweXZlbnYuY2ZnYGAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IHNldHVwX3B5dGhvbihjb250ZXh0KQorCisgICAgICAgIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBQeXRob24gZXhlY3V0YWJsZSAoYW5kLCB1bmRlciBXaW5kb3dzLCBETExzKSBpbgorICAgICAgICB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBzZXR1cF9zY3JpcHRzKGNvbnRleHQpCisKKyAgICAgICAgSW5zdGFsbHMgYWN0aXZhdGlvbiBzY3JpcHRzIGFwcHJvcHJpYXRlIHRvIHRoZSBwbGF0Zm9ybSBpbnRvIHRoZSB2aXJ0dWFsCisgICAgICAgIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogcG9zdF9zZXR1cChjb250ZXh0KQorCisgICAgICAgIEEgcGxhY2Vob2xkZXIgbWV0aG9kIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIGluIHRoaXJkIHBhcnR5CisgICAgICAgIGltcGxlbWVudGF0aW9ucyB0byBwcmUtaW5zdGFsbCBwYWNrYWdlcyBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBvcgorICAgICAgICBwZXJmb3JtIG90aGVyIHBvc3QtY3JlYXRpb24gc3RlcHMuCisKKyAgICBJbiBhZGRpdGlvbiwgOmNsYXNzOmBFbnZCdWlsZGVyYCBwcm92aWRlcyB0aGlzIHV0aWxpdHkgbWV0aG9kIHRoYXQgY2FuIGJlCisgICAgY2FsbGVkIGZyb20gOm1ldGg6YHNldHVwX3NjcmlwdHNgIG9yIDptZXRoOmBwb3N0X3NldHVwYCBpbiBzdWJjbGFzc2VzIHRvCisgICAgYXNzaXN0IGluIGluc3RhbGxpbmcgY3VzdG9tIHNjcmlwdHMgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IGluc3RhbGxfc2NyaXB0cyhjb250ZXh0LCBwYXRoKQorCisgICAgICAgICpwYXRoKiBpcyB0aGUgcGF0aCB0byBhIGRpcmVjdG9yeSB0aGF0IHNob3VsZCBjb250YWluIHN1YmRpcmVjdG9yaWVzCisgICAgICAgICJjb21tb24iLCAicG9zaXgiLCAibnQiLCBlYWNoIGNvbnRhaW5pbmcgc2NyaXB0cyBkZXN0aW5lZCBmb3IgdGhlIGJpbgorICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIGVudmlyb25tZW50LiAgVGhlIGNvbnRlbnRzIG9mICJjb21tb24iIGFuZCB0aGUKKyAgICAgICAgZGlyZWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gOmRhdGE6YG9zLm5hbWVgIGFyZSBjb3BpZWQgYWZ0ZXIgc29tZSB0ZXh0CisgICAgICAgIHJlcGxhY2VtZW50IG9mIHBsYWNlaG9sZGVyczoKKworICAgICAgICAqIGBgX19WRU5WX0RJUl9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9OQU1FX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBlbnZpcm9ubWVudCBuYW1lIChmaW5hbCBwYXRoCisgICAgICAgICAgc2VnbWVudCBvZiBlbnZpcm9ubWVudCBkaXJlY3RvcnkpLgorCisgICAgICAgICogYGBfX1ZFTlZfQklOX05BTUVfX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGJpbiBkaXJlY3RvcnkKKyAgICAgICAgICAoZWl0aGVyIGBgYmluYGAgb3IgYGBTY3JpcHRzYGApLgorCisgICAgICAgICogYGBfX1ZFTlZfUFlUSE9OX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZQorICAgICAgICAgIGVudmlyb25tZW50J3MgZXhlY3V0YWJsZS4KKworCitUaGVyZSBpcyBhbHNvIGEgbW9kdWxlLWxldmVsIGNvbnZlbmllbmNlIGZ1bmN0aW9uOgorCisuLiBmdW5jdGlvbjo6IGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlKQorCisgICAgQ3JlYXRlIGFuIDpjbGFzczpgRW52QnVpbGRlcmAgd2l0aCB0aGUgZ2l2ZW4ga2V5d29yZCBhcmd1bWVudHMsIGFuZCBjYWxsIGl0cworICAgIDptZXRoOmB+RW52QnVpbGRlci5jcmVhdGVgIG1ldGhvZCB3aXRoIHRoZSAqZW52X2RpciogYXJndW1lbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKaW5kZXggOGFmMTlhMi4uODM4N2Y1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdApAQCAtMzM5LDggKzMzOSw3IEBACiAgICBXcml0ZSBhIHdhcm5pbmcgdG8gYSBmaWxlLiAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMKICAgIGBgZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZSlgYCBhbmQgd3JpdGVzIHRoZQogICAgcmVzdWx0aW5nIHN0cmluZyB0byAqZmlsZSosIHdoaWNoIGRlZmF1bHRzIHRvIGBgc3lzLnN0ZGVycmBgLiAgWW91IG1heSByZXBsYWNlCi0gICB0aGlzIGZ1bmN0aW9uIHdpdGggYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gYnkgYXNzaWduaW5nIHRvCi0gICBgYHdhcm5pbmdzLnNob3d3YXJuaW5nYGAuCisgICB0aGlzIGZ1bmN0aW9uIHdpdGggYW55IGNhbGxhYmxlIGJ5IGFzc2lnbmluZyB0byBgYHdhcm5pbmdzLnNob3d3YXJuaW5nYGAuCiAgICAqbGluZSogaXMgYSBsaW5lIG9mIHNvdXJjZSBjb2RlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSB3YXJuaW5nCiAgICBtZXNzYWdlOyBpZiAqbGluZSogaXMgbm90IHN1cHBsaWVkLCA6ZnVuYzpgc2hvd3dhcm5pbmdgIHdpbGwKICAgIHRyeSB0byByZWFkIHRoZSBsaW5lIHNwZWNpZmllZCBieSAqZmlsZW5hbWUqIGFuZCAqbGluZW5vKi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0IGIvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QKaW5kZXggYjJkY2Y4Zi4uOWMyYjNhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QKQEAgLTk4LDQ3ICs5OCw1NSBAQAogbWF5IGJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGdldGAgZnVuY3Rpb24gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluc3RhbnRpYXRpb25zCiBmb3IgdGhlIGNvbnRyb2xsZXIgY2xhc3NlcywgYWxsIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCiAKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBUeXBlIE5hbWUgICAgICAgICAgICAgfCBDbGFzcyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKLXwgYGAnbW96aWxsYSdgYCAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2ZpcmVmb3gnYGAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCduZXRzY2FwZSdgYCAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ25ldHNjYXBlJylgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZ2FsZW9uJ2BgICAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2dhbGVvbicpYCAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2VwaXBoYW55J2BgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdlcGlwaGFueScpYCAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdza2lwc3RvbmUnYGAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdza2lwc3RvbmUnKWAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAna2ZtY2xpZW50J2BgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2tvbnF1ZXJvcidgYCAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdrZm0nYGAgICAgICAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbW9zYWljJ2BgICAgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3NlcignbW9zYWljJylgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ29wZXJhJ2BgICAgICAgICAgICB8IDpjbGFzczpgT3BlcmEoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdncmFpbCdgYCAgICAgICAgICAgfCA6Y2xhc3M6YEdyYWlsKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbGlua3MnYGAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbGlua3MnKWAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2VsaW5rcydgYCAgICAgICAgICB8IDpjbGFzczpgRWxpbmtzKCdlbGlua3MnKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdseW54J2BgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdseW54JylgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAndzNtJ2BgICAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcigndzNtJylgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3dpbmRvd3MtZGVmYXVsdCdgYCB8IDpjbGFzczpgV2luZG93c0RlZmF1bHRgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdtYWNvc3gnYGAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnZGVmYXVsdCcpYCAgICAgICAgICAgICAgfCBcKDMpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnc2FmYXJpJ2BgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ3NhZmFyaScpYCAgICAgICAgICAgICAgIHwgXCgzKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IFR5cGUgTmFtZSAgICAgICAgICAgICAgfCBDbGFzcyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ21vemlsbGEnYGAgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2ZpcmVmb3gnYGAgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ25ldHNjYXBlJ2BgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ25ldHNjYXBlJylgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2dhbGVvbidgYCAgICAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZ2FsZW9uJylgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2VwaXBoYW55J2BgICAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZXBpcGhhbnknKWAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3NraXBzdG9uZSdgYCAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdza2lwc3RvbmUnKWAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2tmbWNsaWVudCdgYCAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2tvbnF1ZXJvcidgYCAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2tmbSdgYCAgICAgICAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ21vc2FpYydgYCAgICAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdtb3NhaWMnKWAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ29wZXJhJ2BgICAgICAgICAgICAgfCA6Y2xhc3M6YE9wZXJhKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2dyYWlsJ2BgICAgICAgICAgICAgfCA6Y2xhc3M6YEdyYWlsKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2xpbmtzJ2BgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdsaW5rcycpYCAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2VsaW5rcydgYCAgICAgICAgICAgfCA6Y2xhc3M6YEVsaW5rcygnZWxpbmtzJylgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2x5bngnYGAgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdseW54JylgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3czbSdgYCAgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCd3M20nKWAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3dpbmRvd3MtZGVmYXVsdCdgYCAgfCA6Y2xhc3M6YFdpbmRvd3NEZWZhdWx0YCAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ21hY29zeCdgYCAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnZGVmYXVsdCcpYCAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3NhZmFyaSdgYCAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnc2FmYXJpJylgICAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2dvb2dsZS1jaHJvbWUnYGAgICAgfCA6Y2xhc3M6YENocm9tZSgnZ29vZ2xlLWNocm9tZScpYCAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2Nocm9tZSdgYCAgICAgICAgICAgfCA6Y2xhc3M6YENocm9tZSgnY2hyb21lJylgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2Nocm9taXVtJ2BgICAgICAgICAgfCA6Y2xhc3M6YENocm9taXVtKCdjaHJvbWl1bScpYCAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2Nocm9taXVtLWJyb3dzZXInYGAgfCA6Y2xhc3M6YENocm9taXVtKCdjaHJvbWl1bS1icm93c2VyJylgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKIE5vdGVzOgogCkBAIC0xNTUsMTIgKzE2MywxNSBAQAogKDMpCiAgICBPbmx5IG9uIE1hYyBPUyBYIHBsYXRmb3JtLgogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIFN1cHBvcnQgZm9yIENocm9tZS9DaHJvbWl1bSBoYXMgYmVlbiBhZGRlZC4KKwogSGVyZSBhcmUgc29tZSBzaW1wbGUgZXhhbXBsZXM6OgogCi0gICB1cmwgPSAnaHR0cDovL3d3dy5weXRob24ub3JnLycKKyAgIHVybCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnLycKIAogICAgIyBPcGVuIFVSTCBpbiBhIG5ldyB0YWIsIGlmIGEgYnJvd3NlciB3aW5kb3cgaXMgYWxyZWFkeSBvcGVuLgotICAgd2ViYnJvd3Nlci5vcGVuX25ld190YWIodXJsICsgJ2RvYy8nKQorICAgd2ViYnJvd3Nlci5vcGVuX25ld190YWIodXJsKQogCiAgICAjIE9wZW4gVVJMIGluIG5ldyB3aW5kb3csIHJhaXNpbmcgdGhlIHdpbmRvdyBpZiBwb3NzaWJsZS4KICAgIHdlYmJyb3dzZXIub3Blbl9uZXcodXJsKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdCBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKaW5kZXggY2RjMDdiMS4uNjBmM2JkOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CkBAIC0xMiw2ICsxMiwxNyBAQAogdG8gZW5zdXJlIHRoYXQgdGhlIGhhbmRsZXMgYXJlIGNsb3NlZCBjb3JyZWN0bHksIGV2ZW4gaWYgdGhlIHByb2dyYW1tZXIgbmVnbGVjdHMKIHRvIGV4cGxpY2l0bHkgY2xvc2UgdGhlbS4KIAorLi4gX2V4Y2VwdGlvbi1jaGFuZ2VkOgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgU2V2ZXJhbCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgdXNlZCB0byByYWlzZSBhCisgICA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKy4uIF9mdW5jdGlvbnM6CisKK0Z1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tCisKIFRoaXMgbW9kdWxlIG9mZmVycyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCkBAIC0zNyw4ICs0OCwxMSBAQAogCiAgICAqa2V5KiBpcyB0aGUgcHJlZGVmaW5lZCBoYW5kbGUgdG8gY29ubmVjdCB0by4KIAotICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEKLSAgIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbgorICAgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFNlZSA6cmVmOmBhYm92ZSA8ZXhjZXB0aW9uLWNoYW5nZWQ+YC4KIAogCiAuLiBmdW5jdGlvbjo6IENyZWF0ZUtleShrZXksIHN1Yl9rZXkpCkBAIC01Niw4ICs3MCwxMSBAQAogCiAgICBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuCiAKLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4KKyAgIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCiAKIAogLi4gZnVuY3Rpb246OiBDcmVhdGVLZXlFeChrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz1LRVlfV1JJVEUpCkBAIC04MSwxMSArOTgsMTQgQEAKIAogICAgSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LgogCi0gICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYQotICAgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFNlZSA6cmVmOmBhYm92ZSA8ZXhjZXB0aW9uLWNoYW5nZWQ+YC4KKwogCiAuLiBmdW5jdGlvbjo6IERlbGV0ZUtleShrZXksIHN1Yl9rZXkpCiAKQEAgLTEwMCw3ICsxMjAsMTAgQEAKICAgICpUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy4qCiAKICAgIElmIHRoZSBtZXRob2Qgc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsIGlzIHJlbW92ZWQuCi0gICBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIElmIHRoZSBtZXRob2QgZmFpbHMsIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCiAKIAogLi4gZnVuY3Rpb246OiBEZWxldGVLZXlFeChrZXksIHN1Yl9rZXksIGFjY2Vzcz1LRVlfV09XNjRfNjRLRVksIHJlc2VydmVkPTApCkBAIC0xMjksMTIgKzE1MiwxNSBAQAogICAgKlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLioKIAogICAgSWYgdGhlIG1ldGhvZCBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywgaXMKLSAgIHJlbW92ZWQuIElmIHRoZSBtZXRob2QgZmFpbHMsIGEgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgcmVtb3ZlZC4gSWYgdGhlIG1ldGhvZCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KIAogICAgT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFNlZSA6cmVmOmBhYm92ZSA8ZXhjZXB0aW9uLWNoYW5nZWQ+YC4KKwogCiAuLiBmdW5jdGlvbjo6IERlbGV0ZVZhbHVlKGtleSwgdmFsdWUpCiAKQEAgLTE1Niw5ICsxODIsMTIgQEAKICAgICppbmRleCogaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuCiAKICAgIFRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiAgSXQgaXMKLSAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzCisgICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzCiAgICByYWlzZWQsIGluZGljYXRpbmcsIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCisKIAogLi4gZnVuY3Rpb246OiBFbnVtVmFsdWUoa2V5LCBpbmRleCkKIApAQCAtMTcwLDcgKzE5OSw3IEBACiAgICAqaW5kZXgqIGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuCiAKICAgIFRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiBJdCBpcwotICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzCisgICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzLgogCiAgICBUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczoKQEAgLTE4OSw2ICsyMTgsOSBAQAogICAgfCAgICAgICB8IDptZXRoOmBTZXRWYWx1ZUV4YCkgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFNlZSA6cmVmOmBhYm92ZSA8ZXhjZXB0aW9uLWNoYW5nZWQ+YC4KKwogCiAuLiBmdW5jdGlvbjo6IEV4cGFuZEVudmlyb25tZW50U3RyaW5ncyhzdHIpCiAKQEAgLTI2MSw5ICsyOTMsMTMgQEAKIAogICAgVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuCiAKLSAgIElmIHRoZSBmdW5jdGlvbiBmYWlscywgOmV4YzpgV2luZG93c0Vycm9yYCBpcyByYWlzZWQuCisgICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgQWxsb3cgdGhlIHVzZSBvZiBuYW1lZCBhcmd1bWVudHMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWxsb3cgdGhlIHVzZSBvZiBuYW1lZCBhcmd1bWVudHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCiAKIAogLi4gZnVuY3Rpb246OiBRdWVyeUluZm9LZXkoa2V5KQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCAxZmQzNDUxLi4xY2VmMmU5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtNjA5LDYgKzYwOSw5IEBACiAgICAgICBhcyA6Y2xhc3M6YEJhc2VDR0lIYW5kbGVyYCBhbmQgOmNsYXNzOmBDR0lIYW5kbGVyYCkgdGhhdCBhcmUgbm90IEhUVFAgb3JpZ2luCiAgICAgICBzZXJ2ZXJzLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgVGhlIHRlcm0gIlB5dGhvbiIgaXMgcmVwbGFjZWQgd2l0aCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UKKyAgICAgICAgICJDUHl0aG9uIiwgIkp5dGhvbiIgZXRjLgogCiAgICAuLiBtZXRob2Q6OiBCYXNlSGFuZGxlci5nZXRfc2NoZW1lKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKaW5kZXggYWUyODZiMC4uYTVjNmZiMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CkBAIC0xNDcsMTIgKzE0Nyw3IEBACiAgICB0aGUgRE9NIG5vZGUuCiAKICAgIFdpdGggYW4gZXhwbGljaXQgKmVuY29kaW5nKiBbMV1fIGFyZ3VtZW50LCB0aGUgcmVzdWx0IGlzIGEgYnl0ZQotICAgc3RyaW5nIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdQotICAgYWx3YXlzIHNwZWNpZnkgYW4gZW5jb2Rpbmc7IHlvdSBtYXkgdXNlIGFueSBlbmNvZGluZyB5b3UgbGlrZSwgYnV0Ci0gICBhbiBhcmd1bWVudCBvZiAidXRmLTgiIGlzIHRoZSBtb3N0IGNvbW1vbiBjaG9pY2UsIGF2b2lkaW5nCi0gICA6ZXhjOmBVbmljb2RlRXJyb3JgIGV4Y2VwdGlvbnMgaW4gY2FzZSBvZiB1bnJlcHJlc2VudGFibGUgdGV4dAotICAgZGF0YS4KLQorICAgc3RyaW5nIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcuCiAgICBXaXRoIG5vICplbmNvZGluZyogYXJndW1lbnQsIHRoZSByZXN1bHQgaXMgYSBVbmljb2RlIHN0cmluZywgYW5kIHRoZQogICAgWE1MIGRlY2xhcmF0aW9uIGluIHRoZSByZXN1bHRpbmcgc3RyaW5nIGRvZXMgbm90IHNwZWNpZnkgYW4KICAgIGVuY29kaW5nLiBFbmNvZGluZyB0aGlzIHN0cmluZyBpbiBhbiBlbmNvZGluZyBvdGhlciB0aGFuIFVURi04IGlzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0IGIvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAppbmRleCBkOWIwYTUyLi4xNDRlMzQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKQEAgLTUsNDkgKzUsMzIzIEBACiAgICA6c3lub3BzaXM6IEltcGxlbWVudGF0aW9uIG9mIHRoZSBFbGVtZW50VHJlZSBBUEkuCiAuLiBtb2R1bGVhdXRob3I6OiBGcmVkcmlrIEx1bmRoIDxmcmVkcmlrQHB5dGhvbndhcmUuY29tPgogCi0qKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHlgCitUaGUgOm1vZDpgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCBtb2R1bGUgaW1wbGVtZW50cyBhIHNpbXBsZSBhbmQgZWZmaWNpZW50IEFQSQorZm9yIHBhcnNpbmcgYW5kIGNyZWF0aW5nIFhNTCBkYXRhLgogCi0tLS0tLS0tLS0tLS0tLQorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoaXMgbW9kdWxlIHdpbGwgdXNlIGEgZmFzdCBpbXBsZW1lbnRhdGlvbiB3aGVuZXZlciBhdmFpbGFibGUuCisgICBUaGUgOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQuCiAKLVRoZSA6Y2xhc3M6YEVsZW1lbnRgIHR5cGUgaXMgYSBmbGV4aWJsZSBjb250YWluZXIgb2JqZWN0LCBkZXNpZ25lZCB0byBzdG9yZQotaGllcmFyY2hpY2FsIGRhdGEgc3RydWN0dXJlcyBpbiBtZW1vcnkuICBUaGUgdHlwZSBjYW4gYmUgZGVzY3JpYmVkIGFzIGEgY3Jvc3MKLWJldHdlZW4gYSBsaXN0IGFuZCBhIGRpY3Rpb25hcnkuCitUdXRvcmlhbAorLS0tLS0tLS0KIAotRWFjaCBlbGVtZW50IGhhcyBhIG51bWJlciBvZiBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCBpdDoKK1RoaXMgaXMgYSBzaG9ydCB0dXRvcmlhbCBmb3IgdXNpbmcgOm1vZDpgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCAoYGBFVGBgIGluCitzaG9ydCkuICBUaGUgZ29hbCBpcyB0byBkZW1vbnN0cmF0ZSBzb21lIG9mIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIGJhc2ljCitjb25jZXB0cyBvZiB0aGUgbW9kdWxlLgogCi0qIGEgdGFnIHdoaWNoIGlzIGEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoYXQga2luZCBvZiBkYXRhIHRoaXMgZWxlbWVudCByZXByZXNlbnRzCi0gICh0aGUgZWxlbWVudCB0eXBlLCBpbiBvdGhlciB3b3JkcykuCitYTUwgdHJlZSBhbmQgZWxlbWVudHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0qIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMsIHN0b3JlZCBpbiBhIFB5dGhvbiBkaWN0aW9uYXJ5LgorWE1MIGlzIGFuIGluaGVyZW50bHkgaGllcmFyY2hpY2FsIGRhdGEgZm9ybWF0LCBhbmQgdGhlIG1vc3QgbmF0dXJhbCB3YXkgdG8KK3JlcHJlc2VudCBpdCBpcyB3aXRoIGEgdHJlZS4gIGBgRVRgYCBoYXMgdHdvIGNsYXNzZXMgZm9yIHRoaXMgcHVycG9zZSAtCis6Y2xhc3M6YEVsZW1lbnRUcmVlYCByZXByZXNlbnRzIHRoZSB3aG9sZSBYTUwgZG9jdW1lbnQgYXMgYSB0cmVlLCBhbmQKKzpjbGFzczpgRWxlbWVudGAgcmVwcmVzZW50cyBhIHNpbmdsZSBub2RlIGluIHRoaXMgdHJlZS4gIEludGVyYWN0aW9ucyB3aXRoCit0aGUgd2hvbGUgZG9jdW1lbnQgKHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8vZnJvbSBmaWxlcykgYXJlIHVzdWFsbHkgZG9uZQorb24gdGhlIDpjbGFzczpgRWxlbWVudFRyZWVgIGxldmVsLiAgSW50ZXJhY3Rpb25zIHdpdGggYSBzaW5nbGUgWE1MIGVsZW1lbnQKK2FuZCBpdHMgc3ViLWVsZW1lbnRzIGFyZSBkb25lIG9uIHRoZSA6Y2xhc3M6YEVsZW1lbnRgIGxldmVsLgogCi0qIGEgdGV4dCBzdHJpbmcuCisuLiBfZWxlbWVudHRyZWUtcGFyc2luZy14bWw6CiAKLSogYW4gb3B0aW9uYWwgdGFpbCBzdHJpbmcuCitQYXJzaW5nIFhNTAorXl5eXl5eXl5eXl4KIAotKiBhIG51bWJlciBvZiBjaGlsZCBlbGVtZW50cywgc3RvcmVkIGluIGEgUHl0aG9uIHNlcXVlbmNlCitXZSdsbCBiZSB1c2luZyB0aGUgZm9sbG93aW5nIFhNTCBkb2N1bWVudCBhcyB0aGUgc2FtcGxlIGRhdGEgZm9yIHRoaXMgc2VjdGlvbjoKIAotVG8gY3JlYXRlIGFuIGVsZW1lbnQgaW5zdGFuY2UsIHVzZSB0aGUgOmNsYXNzOmBFbGVtZW50YCBjb25zdHJ1Y3RvciBvciB0aGUKLTpmdW5jOmBTdWJFbGVtZW50YCBmYWN0b3J5IGZ1bmN0aW9uLgorLi4gY29kZS1ibG9jazo6IHhtbAogCi1UaGUgOmNsYXNzOmBFbGVtZW50VHJlZWAgY2xhc3MgY2FuIGJlIHVzZWQgdG8gd3JhcCBhbiBlbGVtZW50IHN0cnVjdHVyZSwgYW5kCi1jb252ZXJ0IGl0IGZyb20gYW5kIHRvIFhNTC4KKyAgIDw/eG1sIHZlcnNpb249IjEuMCI/PgorICAgPGRhdGE+CisgICAgICAgPGNvdW50cnkgbmFtZT0iTGllY2h0ZW5zdGVpbiI+CisgICAgICAgICAgIDxyYW5rPjE8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMDg8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xNDExMDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQXVzdHJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJTd2l0emVybGFuZCIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlNpbmdhcG9yZSI+CisgICAgICAgICAgIDxyYW5rPjQ8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz41OTkwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJNYWxheXNpYSIgZGlyZWN0aW9uPSJOIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlBhbmFtYSI+CisgICAgICAgICAgIDxyYW5rPjY4PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTM2MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29zdGEgUmljYSIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb2xvbWJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgPC9kYXRhPgogCi1BIEMgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBBUEkgaXMgYXZhaWxhYmxlIGFzIDptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgLgorV2UgY2FuIGltcG9ydCB0aGlzIGRhdGEgYnkgcmVhZGluZyBmcm9tIGEgZmlsZTo6CisKKyAgIGltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKKyAgIHRyZWUgPSBFVC5wYXJzZSgnY291bnRyeV9kYXRhLnhtbCcpCisgICByb290ID0gdHJlZS5nZXRyb290KCkKKworT3IgZGlyZWN0bHkgZnJvbSBhIHN0cmluZzo6CisKKyAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKGNvdW50cnlfZGF0YV9hc19zdHJpbmcpCisKKzpmdW5jOmBmcm9tc3RyaW5nYCBwYXJzZXMgWE1MIGZyb20gYSBzdHJpbmcgZGlyZWN0bHkgaW50byBhbiA6Y2xhc3M6YEVsZW1lbnRgLAord2hpY2ggaXMgdGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgcGFyc2VkIHRyZWUuICBPdGhlciBwYXJzaW5nIGZ1bmN0aW9ucyBtYXkKK2NyZWF0ZSBhbiA6Y2xhc3M6YEVsZW1lbnRUcmVlYC4gIENoZWNrIHRoZSBkb2N1bWVudGF0aW9uIHRvIGJlIHN1cmUuCisKK0FzIGFuIDpjbGFzczpgRWxlbWVudGAsIGBgcm9vdGBgIGhhcyBhIHRhZyBhbmQgYSBkaWN0aW9uYXJ5IG9mIGF0dHJpYnV0ZXM6OgorCisgICA+Pj4gcm9vdC50YWcKKyAgICdkYXRhJworICAgPj4+IHJvb3QuYXR0cmliCisgICB7fQorCitJdCBhbHNvIGhhcyBjaGlsZHJlbiBub2RlcyBvdmVyIHdoaWNoIHdlIGNhbiBpdGVyYXRlOjoKKworICAgPj4+IGZvciBjaGlsZCBpbiByb290OgorICAgLi4uICAgcHJpbnQoY2hpbGQudGFnLCBjaGlsZC5hdHRyaWIpCisgICAuLi4KKyAgIGNvdW50cnkgeyduYW1lJzogJ0xpZWNodGVuc3RlaW4nfQorICAgY291bnRyeSB7J25hbWUnOiAnU2luZ2Fwb3JlJ30KKyAgIGNvdW50cnkgeyduYW1lJzogJ1BhbmFtYSd9CisKK0NoaWxkcmVuIGFyZSBuZXN0ZWQsIGFuZCB3ZSBjYW4gYWNjZXNzIHNwZWNpZmljIGNoaWxkIG5vZGVzIGJ5IGluZGV4OjoKKworICAgPj4+IHJvb3RbMF1bMV0udGV4dAorICAgJzIwMDgnCisKK0ZpbmRpbmcgaW50ZXJlc3RpbmcgZWxlbWVudHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworOmNsYXNzOmBFbGVtZW50YCBoYXMgc29tZSB1c2VmdWwgbWV0aG9kcyB0aGF0IGhlbHAgaXRlcmF0ZSByZWN1cnNpdmVseSBvdmVyIGFsbAordGhlIHN1Yi10cmVlIGJlbG93IGl0IChpdHMgY2hpbGRyZW4sIHRoZWlyIGNoaWxkcmVuLCBhbmQgc28gb24pLiAgRm9yIGV4YW1wbGUsCis6bWV0aDpgRWxlbWVudC5pdGVyYDo6CisKKyAgID4+PiBmb3IgbmVpZ2hib3IgaW4gcm9vdC5pdGVyKCduZWlnaGJvcicpOgorICAgLi4uICAgcHJpbnQobmVpZ2hib3IuYXR0cmliKQorICAgLi4uCisgICB7J25hbWUnOiAnQXVzdHJpYScsICdkaXJlY3Rpb24nOiAnRSd9CisgICB7J25hbWUnOiAnU3dpdHplcmxhbmQnLCAnZGlyZWN0aW9uJzogJ1cnfQorICAgeyduYW1lJzogJ01hbGF5c2lhJywgJ2RpcmVjdGlvbic6ICdOJ30KKyAgIHsnbmFtZSc6ICdDb3N0YSBSaWNhJywgJ2RpcmVjdGlvbic6ICdXJ30KKyAgIHsnbmFtZSc6ICdDb2xvbWJpYScsICdkaXJlY3Rpb24nOiAnRSd9CisKKzptZXRoOmBFbGVtZW50LmZpbmRhbGxgIGZpbmRzIG9ubHkgZWxlbWVudHMgd2l0aCBhIHRhZyB3aGljaCBhcmUgZGlyZWN0CitjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBlbGVtZW50LiAgOm1ldGg6YEVsZW1lbnQuZmluZGAgZmluZHMgdGhlICpmaXJzdCogY2hpbGQKK3dpdGggYSBwYXJ0aWN1bGFyIHRhZywgYW5kIDptZXRoOmBFbGVtZW50LnRleHRgIGFjY2Vzc2VzIHRoZSBlbGVtZW50J3MgdGV4dAorY29udGVudC4gIDptZXRoOmBFbGVtZW50LmdldGAgYWNjZXNzZXMgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzOjoKKworICAgPj4+IGZvciBjb3VudHJ5IGluIHJvb3QuZmluZGFsbCgnY291bnRyeScpOgorICAgLi4uICAgcmFuayA9IGNvdW50cnkuZmluZCgncmFuaycpLnRleHQKKyAgIC4uLiAgIG5hbWUgPSBjb3VudHJ5LmdldCgnbmFtZScpCisgICAuLi4gICBwcmludChuYW1lLCByYW5rKQorICAgLi4uCisgICBMaWVjaHRlbnN0ZWluIDEKKyAgIFNpbmdhcG9yZSA0CisgICBQYW5hbWEgNjgKKworTW9yZSBzb3BoaXN0aWNhdGVkIHNwZWNpZmljYXRpb24gb2Ygd2hpY2ggZWxlbWVudHMgdG8gbG9vayBmb3IgaXMgcG9zc2libGUgYnkKK3VzaW5nIDpyZWY6YFhQYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLgorCitNb2RpZnlpbmcgYW4gWE1MIEZpbGUKK15eXl5eXl5eXl5eXl5eXl5eXl5eXgorCis6Y2xhc3M6YEVsZW1lbnRUcmVlYCBwcm92aWRlcyBhIHNpbXBsZSB3YXkgdG8gYnVpbGQgWE1MIGRvY3VtZW50cyBhbmQgd3JpdGUgdGhlbSB0byBmaWxlcy4KK1RoZSA6bWV0aDpgRWxlbWVudFRyZWUud3JpdGVgIG1ldGhvZCBzZXJ2ZXMgdGhpcyBwdXJwb3NlLgorCitPbmNlIGNyZWF0ZWQsIGFuIDpjbGFzczpgRWxlbWVudGAgb2JqZWN0IG1heSBiZSBtYW5pcHVsYXRlZCBieSBkaXJlY3RseSBjaGFuZ2luZworaXRzIGZpZWxkcyAoc3VjaCBhcyA6YXR0cjpgRWxlbWVudC50ZXh0YCksIGFkZGluZyBhbmQgbW9kaWZ5aW5nIGF0dHJpYnV0ZXMKKyg6bWV0aDpgRWxlbWVudC5zZXRgIG1ldGhvZCksIGFzIHdlbGwgYXMgYWRkaW5nIG5ldyBjaGlsZHJlbiAoZm9yIGV4YW1wbGUKK3dpdGggOm1ldGg6YEVsZW1lbnQuYXBwZW5kYCkuCisKK0xldCdzIHNheSB3ZSB3YW50IHRvIGFkZCBvbmUgdG8gZWFjaCBjb3VudHJ5J3MgcmFuaywgYW5kIGFkZCBhbiBgYHVwZGF0ZWRgYAorYXR0cmlidXRlIHRvIHRoZSByYW5rIGVsZW1lbnQ6OgorCisgICA+Pj4gZm9yIHJhbmsgaW4gcm9vdC5pdGVyKCdyYW5rJyk6CisgICAuLi4gICBuZXdfcmFuayA9IGludChyYW5rLnRleHQpICsgMQorICAgLi4uICAgcmFuay50ZXh0ID0gc3RyKG5ld19yYW5rKQorICAgLi4uICAgcmFuay5zZXQoJ3VwZGF0ZWQnLCAneWVzJykKKyAgIC4uLgorICAgPj4+IHRyZWUud3JpdGUoJ291dHB1dC54bWwnKQorCitPdXIgWE1MIG5vdyBsb29rcyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiB4bWwKKworICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+CisgICA8ZGF0YT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJMaWVjaHRlbnN0ZWluIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj4yPC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTQxMTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkF1c3RyaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iU3dpdHplcmxhbmQiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJTaW5nYXBvcmUiPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjU8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz41OTkwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJNYWxheXNpYSIgZGlyZWN0aW9uPSJOIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlBhbmFtYSI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+Njk8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xMzYwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb3N0YSBSaWNhIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvbG9tYmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICA8L2NvdW50cnk+CisgICA8L2RhdGE+CisKK1dlIGNhbiByZW1vdmUgZWxlbWVudHMgdXNpbmcgOm1ldGg6YEVsZW1lbnQucmVtb3ZlYC4gIExldCdzIHNheSB3ZSB3YW50IHRvCityZW1vdmUgYWxsIGNvdW50cmllcyB3aXRoIGEgcmFuayBoaWdoZXIgdGhhbiA1MDo6CisKKyAgID4+PiBmb3IgY291bnRyeSBpbiByb290LmZpbmRhbGwoJ2NvdW50cnknKToKKyAgIC4uLiAgIHJhbmsgPSBpbnQoY291bnRyeS5maW5kKCdyYW5rJykudGV4dCkKKyAgIC4uLiAgIGlmIHJhbmsgPiA1MDoKKyAgIC4uLiAgICAgcm9vdC5yZW1vdmUoY291bnRyeSkKKyAgIC4uLgorICAgPj4+IHRyZWUud3JpdGUoJ291dHB1dC54bWwnKQorCitPdXIgWE1MIG5vdyBsb29rcyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiB4bWwKKworICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+CisgICA8ZGF0YT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJMaWVjaHRlbnN0ZWluIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj4yPC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTQxMTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkF1c3RyaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iU3dpdHplcmxhbmQiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJTaW5nYXBvcmUiPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjU8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz41OTkwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJNYWxheXNpYSIgZGlyZWN0aW9uPSJOIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgPC9kYXRhPgorCitCdWlsZGluZyBYTUwgZG9jdW1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6ZnVuYzpgU3ViRWxlbWVudGAgZnVuY3Rpb24gYWxzbyBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvIGNyZWF0ZSBuZXcKK3N1Yi1lbGVtZW50cyBmb3IgYSBnaXZlbiBlbGVtZW50OjoKKworICAgPj4+IGEgPSBFVC5FbGVtZW50KCdhJykKKyAgID4+PiBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCisgICA+Pj4gYyA9IEVULlN1YkVsZW1lbnQoYSwgJ2MnKQorICAgPj4+IGQgPSBFVC5TdWJFbGVtZW50KGMsICdkJykKKyAgID4+PiBFVC5kdW1wKGEpCisgICA8YT48YiAvPjxjPjxkIC8+PC9jPjwvYT4KKworQWRkaXRpb25hbCByZXNvdXJjZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIFNlZSBodHRwOi8vZWZmYm90Lm9yZy96b25lL2VsZW1lbnQtaW5kZXguaHRtIGZvciB0dXRvcmlhbHMgYW5kIGxpbmtzIHRvIG90aGVyCi1kb2NzLiAgRnJlZHJpayBMdW5kaCdzIHBhZ2UgaXMgYWxzbyB0aGUgbG9jYXRpb24gb2YgdGhlIGRldmVsb3BtZW50IHZlcnNpb24gb2YKLXRoZSB4bWwuZXRyZWUuRWxlbWVudFRyZWUuCitkb2NzLgogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgVGhlIEVsZW1lbnRUcmVlIEFQSSBpcyB1cGRhdGVkIHRvIDEuMy4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKLSAgIGBJbnRyb2R1Y2luZyBFbGVtZW50VHJlZSAxLjMKLSAgIDxodHRwOi8vZWZmYm90Lm9yZy96b25lL2VsZW1lbnR0cmVlLTEzLWludHJvLmh0bT5gXy4KIAorLi4gX2VsZW1lbnR0cmVlLXhwYXRoOgorCitYUGF0aCBzdXBwb3J0CistLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGxpbWl0ZWQgc3VwcG9ydCBmb3IKK2BYUGF0aCBleHByZXNzaW9ucyA8aHR0cDovL3d3dy53My5vcmcvVFIveHBhdGg+YF8gZm9yIGxvY2F0aW5nIGVsZW1lbnRzIGluIGEKK3RyZWUuICBUaGUgZ29hbCBpcyB0byBzdXBwb3J0IGEgc21hbGwgc3Vic2V0IG9mIHRoZSBhYmJyZXZpYXRlZCBzeW50YXg7IGEgZnVsbAorWFBhdGggZW5naW5lIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBtb2R1bGUuCisKK0V4YW1wbGUKK15eXl5eXl4KKworSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBkZW1vbnN0cmF0ZXMgc29tZSBvZiB0aGUgWFBhdGggY2FwYWJpbGl0aWVzIG9mIHRoZQorbW9kdWxlLiAgV2UnbGwgYmUgdXNpbmcgdGhlIGBgY291bnRyeWRhdGFgYCBYTUwgZG9jdW1lbnQgZnJvbSB0aGUKKzpyZWY6YFBhcnNpbmcgWE1MIDxlbGVtZW50dHJlZS1wYXJzaW5nLXhtbD5gIHNlY3Rpb246OgorCisgICBpbXBvcnQgeG1sLmV0cmVlLkVsZW1lbnRUcmVlIGFzIEVUCisKKyAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKGNvdW50cnlkYXRhKQorCisgICAjIFRvcC1sZXZlbCBlbGVtZW50cworICAgcm9vdC5maW5kYWxsKCIuIikKKworICAgIyBBbGwgJ25laWdoYm9yJyBncmFuZC1jaGlsZHJlbiBvZiAnY291bnRyeScgY2hpbGRyZW4gb2YgdGhlIHRvcC1sZXZlbAorICAgIyBlbGVtZW50cworICAgcm9vdC5maW5kYWxsKCIuL2NvdW50cnkvbmVpZ2hib3IiKQorCisgICAjIE5vZGVzIHdpdGggbmFtZT0nU2luZ2Fwb3JlJyB0aGF0IGhhdmUgYSAneWVhcicgY2hpbGQKKyAgIHJvb3QuZmluZGFsbCgiLi8veWVhci8uLltAbmFtZT0nU2luZ2Fwb3JlJ10iKQorCisgICAjICd5ZWFyJyBub2RlcyB0aGF0IGFyZSBjaGlsZHJlbiBvZiBub2RlcyB3aXRoIG5hbWU9J1NpbmdhcG9yZScKKyAgIHJvb3QuZmluZGFsbCgiLi8vKltAbmFtZT0nU2luZ2Fwb3JlJ10veWVhciIpCisKKyAgICMgQWxsICduZWlnaGJvcicgbm9kZXMgdGhhdCBhcmUgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGVpciBwYXJlbnQKKyAgIHJvb3QuZmluZGFsbCgiLi8vbmVpZ2hib3JbMl0iKQorCitTdXBwb3J0ZWQgWFBhdGggc3ludGF4CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFN5bnRheCAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgYGB0YWdgYCAgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgY2hpbGQgZWxlbWVudHMgd2l0aCB0aGUgZ2l2ZW4gdGFnLiAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IEZvciBleGFtcGxlLCBgYHNwYW1gYCBzZWxlY3RzIGFsbCBjaGlsZCBlbGVtZW50cyAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lZCBgYHNwYW1gYCwgYGBzcGFtL2VnZ2BgIHNlbGVjdHMgYWxsICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgZ3JhbmRjaGlsZHJlbiBuYW1lZCBgYGVnZ2BgIGluIGFsbCBjaGlsZHJlbiBuYW1lZCAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGBgc3BhbWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAqYGAgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgY2hpbGQgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgYGAqL2VnZ2BgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHNlbGVjdHMgYWxsIGdyYW5kY2hpbGRyZW4gbmFtZWQgYGBlZ2dgYC4gICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAuYGAgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyB0aGUgY3VycmVudCBub2RlLiAgVGhpcyBpcyBtb3N0bHkgdXNlZnVsICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGgsIHRvIGluZGljYXRlIHRoYXQgaXQncyAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBhIHJlbGF0aXZlIHBhdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgLy9gYCAgICAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIHN1YmVsZW1lbnRzLCBvbiBhbGwgbGV2ZWxzIGJlbmVhdGggdGhlICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBjdXJyZW50ICBlbGVtZW50LiAgRm9yIGV4YW1wbGUsIGBgLi8vZWdnYGAgc2VsZWN0cyAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYWxsIGBgZWdnYGAgZWxlbWVudHMgaW4gdGhlIGVudGlyZSB0cmVlLiAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYC4uYGAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIHRoZSBwYXJlbnQgZWxlbWVudC4gIFJldHVybnMgYGBOb25lYGAgaWYgdGhlIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCBhdHRlbXB0cyB0byByZWFjaCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBzdGFydCAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGVsZW1lbnQgKHRoZSBlbGVtZW50IGBgZmluZGBgIHdhcyBjYWxsZWQgb24pLiAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbQGF0dHJpYl1gYCAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSBnaXZlbiBhdHRyaWJ1dGUuICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYFtAYXR0cmliPSd2YWx1ZSddYGAgfCBTZWxlY3RzIGFsbCBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIGdpdmVuIGF0dHJpYnV0ZSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgaGFzIHRoZSBnaXZlbiB2YWx1ZS4gIFRoZSB2YWx1ZSBjYW5ub3QgY29udGFpbiAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHF1b3Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbdGFnXWBgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIGEgY2hpbGQgbmFtZWQgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGBgdGFnYGAuICBPbmx5IGltbWVkaWF0ZSBjaGlsZHJlbiBhcmUgc3VwcG9ydGVkLiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbcG9zaXRpb25dYGAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgbG9jYXRlZCBhdCB0aGUgZ2l2ZW4gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlciAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCAoMSBpcyB0aGUgZmlyc3QgcG9zaXRpb24pLCB0aGUgZXhwcmVzc2lvbiBgYGxhc3QoKWBgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgKGZvciB0aGUgbGFzdCBwb3NpdGlvbiksIG9yIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBsYXN0IHBvc2l0aW9uIChlLmcuIGBgbGFzdCgpLTFgYCkuICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworUHJlZGljYXRlcyAoZXhwcmVzc2lvbnMgd2l0aGluIHNxdWFyZSBicmFja2V0cykgbXVzdCBiZSBwcmVjZWRlZCBieSBhIHRhZworbmFtZSwgYW4gYXN0ZXJpc2ssIG9yIGFub3RoZXIgcHJlZGljYXRlLiAgYGBwb3NpdGlvbmBgIHByZWRpY2F0ZXMgbXVzdCBiZQorcHJlY2VkZWQgYnkgYSB0YWcgbmFtZS4KKworUmVmZXJlbmNlCistLS0tLS0tLS0KIAogLi4gX2VsZW1lbnR0cmVlLWZ1bmN0aW9uczoKIAogRnVuY3Rpb25zCi0tLS0tLS0tLS0KK15eXl5eXl5eXgogCiAKIC4uIGZ1bmN0aW9uOjogQ29tbWVudCh0ZXh0PU5vbmUpCkBAIC0xNTksOSArNDMzLDkgQEAKICAgIEdlbmVyYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBYTUwgZWxlbWVudCwgaW5jbHVkaW5nIGFsbAogICAgc3ViZWxlbWVudHMuICAqZWxlbWVudCogaXMgYW4gOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZS4gICplbmNvZGluZyogWzFdXyBpcwogICAgdGhlIG91dHB1dCBlbmNvZGluZyAoZGVmYXVsdCBpcyBVUy1BU0NJSSkuICBVc2UgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0bwotICAgZ2VuZXJhdGUgYSBVbmljb2RlIHN0cmluZy4gICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsCi0gICBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4gIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpCi0gICBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KKyAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcgKG90aGVyd2lzZSwgYSBieXRlc3RyaW5nIGlzIGdlbmVyYXRlZCkuICAqbWV0aG9kKgorICAgaXMgZWl0aGVyIGBgInhtbCJgYCwgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuCisgICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KIAogCiAuLiBmdW5jdGlvbjo6IHRvc3RyaW5nbGlzdChlbGVtZW50LCBlbmNvZGluZz0idXMtYXNjaWkiLCBtZXRob2Q9InhtbCIpCkBAIC0xNjksMTEgKzQ0MywxMSBAQAogICAgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCiAgICBzdWJlbGVtZW50cy4gICplbGVtZW50KiBpcyBhbiA6Y2xhc3M6YEVsZW1lbnRgIGluc3RhbmNlLiAgKmVuY29kaW5nKiBbMV1fIGlzCiAgICB0aGUgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4gIFVzZSBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvCi0gICBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLiAgKm1ldGhvZCogaXMgZWl0aGVyIGBgInhtbCJgYCwKLSAgIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcyBgYCJ4bWwiYGApLiAgUmV0dXJucyBhIGxpc3Qgb2YKLSAgIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZ3MgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuICBJdCBkb2VzIG5vdCBndWFyYW50ZWUKLSAgIGFueSBzcGVjaWZpYyBzZXF1ZW5jZSwgZXhjZXB0IHRoYXQgYGAiIi5qb2luKHRvc3RyaW5nbGlzdChlbGVtZW50KSkgPT0KLSAgIHRvc3RyaW5nKGVsZW1lbnQpYGAuCisgICBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nIChvdGhlcndpc2UsIGEgYnl0ZXN0cmluZyBpcyBnZW5lcmF0ZWQpLiAgKm1ldGhvZCoKKyAgIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcyBgYCJ4bWwiYGApLgorICAgUmV0dXJucyBhIGxpc3Qgb2YgKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5ncyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KKyAgIEl0IGRvZXMgbm90IGd1YXJhbnRlZSBhbnkgc3BlY2lmaWMgc2VxdWVuY2UsIGV4Y2VwdCB0aGF0CisgICBgYCIiLmpvaW4odG9zdHJpbmdsaXN0KGVsZW1lbnQpKSA9PSB0b3N0cmluZyhlbGVtZW50KWBgLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTk4LDggKzQ3Miw3IEBACiAuLiBfZWxlbWVudHRyZWUtZWxlbWVudC1vYmplY3RzOgogCiBFbGVtZW50IE9iamVjdHMKLS0tLS0tLS0tLS0tLS0tLQotCiteXl5eXl5eXl5eXl5eXl4KIAogLi4gY2xhc3M6OiBFbGVtZW50KHRhZywgYXR0cmliPXt9LCAqKmV4dHJhKQogCkBAIC0yNTAsNyArNTIzLDcgQEAKICAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKIAogICAgICAgUmVzZXRzIGFuIGVsZW1lbnQuICBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYWxsIHN1YmVsZW1lbnRzLCBjbGVhcnMgYWxsCi0gICAgICBhdHRyaWJ1dGVzLCBhbmQgc2V0cyB0aGUgdGV4dCBhbmQgdGFpbCBhdHRyaWJ1dGVzIHRvIE5vbmUuCisgICAgICBhdHRyaWJ1dGVzLCBhbmQgc2V0cyB0aGUgdGV4dCBhbmQgdGFpbCBhdHRyaWJ1dGVzIHRvIGBgTm9uZWBgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldChrZXksIGRlZmF1bHQ9Tm9uZSkKQEAgLTI4MSwzNiArNTU0LDQzIEBACiAKICAgIC4uIG1ldGhvZDo6IGFwcGVuZChzdWJlbGVtZW50KQogCi0gICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudHMgaW50ZXJuYWwgbGlzdAotICAgICAgb2Ygc3ViZWxlbWVudHMuCisgICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudCdzIGludGVybmFsIGxpc3QKKyAgICAgIG9mIHN1YmVsZW1lbnRzLiAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgKnN1YmVsZW1lbnQqIGlzIG5vdCBhbgorICAgICAgOmNsYXNzOmBFbGVtZW50YC4KIAogCiAgICAuLiBtZXRob2Q6OiBleHRlbmQoc3ViZWxlbWVudHMpCiAKICAgICAgIEFwcGVuZHMgKnN1YmVsZW1lbnRzKiBmcm9tIGEgc2VxdWVuY2Ugb2JqZWN0IHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzLgotICAgICAgUmFpc2VzIDpleGM6YEFzc2VydGlvbkVycm9yYCBpZiBhIHN1YmVsZW1lbnQgaXMgbm90IGEgdmFsaWQgb2JqZWN0LgorICAgICAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgYSBzdWJlbGVtZW50IGlzIG5vdCBhbiA6Y2xhc3M6YEVsZW1lbnRgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBGaW5kcyB0aGUgZmlyc3Qgc3ViZWxlbWVudCBtYXRjaGluZyAqbWF0Y2gqLiAgKm1hdGNoKiBtYXkgYmUgYSB0YWcgbmFtZQotICAgICAgb3IgcGF0aC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZSBvciBgYE5vbmVgYC4KKyAgICAgIG9yIGEgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZQorICAgICAgb3IgYGBOb25lYGAuICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIGEgbGlzdAotICAgICAgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yCisgICAgICA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcKKyAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLiAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbQorICAgICAgbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGZpbmR0ZXh0KG1hdGNoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkKIAogICAgICAgRmluZHMgdGV4dCBmb3IgdGhlIGZpcnN0IHN1YmVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlCi0gICAgICBhIHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nCi0gICAgICBlbGVtZW50IGhhcyBubyB0ZXh0IGNvbnRlbnQgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorICAgICAgYSB0YWcgbmFtZSBvciBhIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAgIG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nIGVsZW1lbnQgaGFzIG5vIHRleHQgY29udGVudCBhbiBlbXB0eSBzdHJpbmcKKyAgICAgIGlzIHJldHVybmVkLiAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRjaGlsZHJlbigpCkBAIC0zMjUsOSArNjA1LDEwIEBACiAgICAgICAgICBVc2UgbWV0aG9kIDptZXRoOmBFbGVtZW50Lml0ZXJgIGluc3RlYWQuCiAKIAotICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBlbGVtZW50KQorICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBzdWJlbGVtZW50KQogCi0gICAgICBJbnNlcnRzIGEgc3ViZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBlbGVtZW50LgorICAgICAgSW5zZXJ0cyAqc3ViZWxlbWVudCogYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGluIHRoaXMgZWxlbWVudC4gIFJhaXNlcworICAgICAgOmV4YzpgVHlwZUVycm9yYCBpZiAqc3ViZWxlbWVudCogaXMgbm90IGFuIDpjbGFzczpgRWxlbWVudGAuCiAKIAogICAgLi4gbWV0aG9kOjogaXRlcih0YWc9Tm9uZSkKQEAgLTM0MSwxMCArNjIyLDEzIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYW4gaXRlcmFibGUKLSAgICAgIHlpZWxkaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IKKyAgICAgIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbAorICAgICAgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nCisgICAgICBmcm9tIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgorCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0zODksNyArNjczLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50dHJlZS1vYmplY3RzOgogCiBFbGVtZW50VHJlZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBFbGVtZW50VHJlZShlbGVtZW50PU5vbmUsIGZpbGU9Tm9uZSkKQEAgLTQwOSwyOCArNjkzLDE5IEBACiAgICAgICBjYXJlLiAgKmVsZW1lbnQqIGlzIGFuIGVsZW1lbnQgaW5zdGFuY2UuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgdGhlIGZpcnN0IHRvcGxldmVsIGVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlIGEgdGFnCi0gICAgICBuYW1lIG9yIHBhdGguICBTYW1lIGFzIGdldHJvb3QoKS5maW5kKG1hdGNoKS4gIFJldHVybnMgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciBgYE5vbmVgYCBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KKyAgICAgIFNhbWUgYXMgOm1ldGg6YEVsZW1lbnQuZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmRhbGwobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFNhbWUgYXMKLSAgICAgIGdldHJvb3QoKS5maW5kYWxsKG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYQotICAgICAgbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cywgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRhbGxgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lKQorICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyB0aGUgZWxlbWVudCB0ZXh0IGZvciB0aGUgZmlyc3QgdG9wbGV2ZWwgZWxlbWVudCB3aXRoIGdpdmVuIHRhZy4KLSAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmR0ZXh0KG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4KLSAgICAgICpkZWZhdWx0KiBpcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgZm91bmQuICBSZXR1cm5zCi0gICAgICB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciB0aGUgZGVmYXVsdCB2YWx1ZSBubwotICAgICAgZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIGVsZW1lbnQgaXMgZm91bmQsIGJ1dCBoYXMgbm8gdGV4dAotICAgICAgY29udGVudCwgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmR0ZXh0YCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0aXRlcmF0b3IodGFnPU5vbmUpCkBAIC00NTEsMTEgKzcyNiw5IEBACiAgICAgICB0byBsb29rIGZvciAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKQogCiAKLSAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLiAgU2FtZSBhcwotICAgICAgZ2V0cm9vdCgpLml0ZXJmaW5kKG1hdGNoKS4gUmV0dXJucyBhbiBpdGVyYWJsZSB5aWVsZGluZyBhbGwgbWF0Y2hpbmcKLSAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgU2FtZSBhcyA6bWV0aDpgRWxlbWVudC5pdGVyZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDY0LDggKzczNyw4IEBACiAKICAgICAgIExvYWRzIGFuIGV4dGVybmFsIFhNTCBzZWN0aW9uIGludG8gdGhpcyBlbGVtZW50IHRyZWUuICAqc291cmNlKiBpcyBhIGZpbGUKICAgICAgIG5hbWUgb3IgOnRlcm06YGZpbGUgb2JqZWN0YC4gICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4KLSAgICAgIElmIG5vdCBnaXZlbiwgdGhlIHN0YW5kYXJkIFhNTFBhcnNlciBwYXJzZXIgaXMgdXNlZC4gIFJldHVybnMgdGhlIHNlY3Rpb24KLSAgICAgIHJvb3QgZWxlbWVudC4KKyAgICAgIElmIG5vdCBnaXZlbiwgdGhlIHN0YW5kYXJkIDpjbGFzczpgWE1MUGFyc2VyYCBwYXJzZXIgaXMgdXNlZC4gIFJldHVybnMgdGhlCisgICAgICBzZWN0aW9uIHJvb3QgZWxlbWVudC4KIAogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShmaWxlLCBlbmNvZGluZz0idXMtYXNjaWkiLCB4bWxfZGVjbGFyYXRpb249Tm9uZSwgXApAQCAtNDczLDEzICs3NDYsMjEgQEAKIAogICAgICAgV3JpdGVzIHRoZSBlbGVtZW50IHRyZWUgdG8gYSBmaWxlLCBhcyBYTUwuICAqZmlsZSogaXMgYSBmaWxlIG5hbWUsIG9yIGEKICAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGAgb3BlbmVkIGZvciB3cml0aW5nLiAgKmVuY29kaW5nKiBbMV1fIGlzIHRoZSBvdXRwdXQKLSAgICAgIGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4gIFVzZSBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvIHdyaXRlIGEKLSAgICAgIFVuaWNvZGUgc3RyaW5nLiAgKnhtbF9kZWNsYXJhdGlvbiogY29udHJvbHMgaWYgYW4gWE1MIGRlY2xhcmF0aW9uCi0gICAgICBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUuICBVc2UgRmFsc2UgZm9yIG5ldmVyLCBUcnVlIGZvciBhbHdheXMsIE5vbmUKLSAgICAgIGZvciBvbmx5IGlmIG5vdCBVUy1BU0NJSSBvciBVVEYtOCBvciBVbmljb2RlIChkZWZhdWx0IGlzIE5vbmUpLgorICAgICAgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgorICAgICAgKnhtbF9kZWNsYXJhdGlvbiogY29udHJvbHMgaWYgYW4gWE1MIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKyAgICAgIGZpbGUuICBVc2UgYGBGYWxzZWBgIGZvciBuZXZlciwgYGBUcnVlYGAgZm9yIGFsd2F5cywgYGBOb25lYGAKKyAgICAgIGZvciBvbmx5IGlmIG5vdCBVUy1BU0NJSSBvciBVVEYtOCBvciBVbmljb2RlIChkZWZhdWx0IGlzIGBgTm9uZWBgKS4KICAgICAgICpkZWZhdWx0X25hbWVzcGFjZSogc2V0cyB0aGUgZGVmYXVsdCBYTUwgbmFtZXNwYWNlIChmb3IgInhtbG5zIikuCiAgICAgICAqbWV0aG9kKiBpcyBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMKLSAgICAgIGBgInhtbCJgYCkuICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZy4KKyAgICAgIGBgInhtbCJgYCkuCisKKyAgICAgIFRoZSBvdXRwdXQgaXMgZWl0aGVyIGEgc3RyaW5nICg6Y2xhc3M6YHN0cmApIG9yIGJpbmFyeSAoOmNsYXNzOmBieXRlc2ApLgorICAgICAgVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAqZW5jb2RpbmcqIGFyZ3VtZW50LiAgSWYgKmVuY29kaW5nKiBpcworICAgICAgYGAidW5pY29kZSJgYCwgdGhlIG91dHB1dCBpcyBhIHN0cmluZzsgb3RoZXJ3aXNlLCBpdCdzIGJpbmFyeS4gIE5vdGUgdGhhdAorICAgICAgdGhpcyBtYXkgY29uZmxpY3Qgd2l0aCB0aGUgdHlwZSBvZiAqZmlsZSogaWYgaXQncyBhbiBvcGVuCisgICAgICA6dGVybTpgZmlsZSBvYmplY3RgOyBtYWtlIHN1cmUgeW91IGRvIG5vdCB0cnkgdG8gd3JpdGUgYSBzdHJpbmcgdG8gYQorICAgICAgYmluYXJ5IHN0cmVhbSBhbmQgdmljZSB2ZXJzYS4KKwogCiBUaGlzIGlzIHRoZSBYTUwgZmlsZSB0aGF0IGlzIGdvaW5nIHRvIGJlIG1hbmlwdWxhdGVkOjoKIApAQCAtNTEyLDcgKzc5Myw3IEBACiAuLiBfZWxlbWVudHRyZWUtcW5hbWUtb2JqZWN0czoKIAogUU5hbWUgT2JqZWN0cwotLS0tLS0tLS0tLS0tLQorXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogUU5hbWUodGV4dF9vcl91cmksIHRhZz1Ob25lKQpAQCAtNTI4LDcgKzgwOSw3IEBACiAuLiBfZWxlbWVudHRyZWUtdHJlZWJ1aWxkZXItb2JqZWN0czoKIAogVHJlZUJ1aWxkZXIgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0tLQorXl5eXl5eXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PU5vbmUpCkBAIC01MzYsOSArODE3LDkgQEAKICAgIEdlbmVyaWMgZWxlbWVudCBzdHJ1Y3R1cmUgYnVpbGRlci4gIFRoaXMgYnVpbGRlciBjb252ZXJ0cyBhIHNlcXVlbmNlIG9mCiAgICBzdGFydCwgZGF0YSwgYW5kIGVuZCBtZXRob2QgY2FsbHMgdG8gYSB3ZWxsLWZvcm1lZCBlbGVtZW50IHN0cnVjdHVyZS4gIFlvdQogICAgY2FuIHVzZSB0aGlzIGNsYXNzIHRvIGJ1aWxkIGFuIGVsZW1lbnQgc3RydWN0dXJlIHVzaW5nIGEgY3VzdG9tIFhNTCBwYXJzZXIsCi0gICBvciBhIHBhcnNlciBmb3Igc29tZSBvdGhlciBYTUwtbGlrZSBmb3JtYXQuICBUaGUgKmVsZW1lbnRfZmFjdG9yeSogaXMgY2FsbGVkCi0gICB0byBjcmVhdGUgbmV3IDpjbGFzczpgRWxlbWVudGAgaW5zdGFuY2VzIHdoZW4gZ2l2ZW4uCi0KKyAgIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4gICplbGVtZW50X2ZhY3RvcnkqLCB3aGVuIGdpdmVuLAorICAgbXVzdCBiZSBhIGNhbGxhYmxlIGFjY2VwdGluZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHM6IGEgdGFnIGFuZAorICAgYSBkaWN0IG9mIGF0dHJpYnV0ZXMuICBJdCBpcyBleHBlY3RlZCB0byByZXR1cm4gYSBuZXcgZWxlbWVudCBpbnN0YW5jZS4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC01NzksNyArODYwLDcgQEAKIC4uIF9lbGVtZW50dHJlZS14bWxwYXJzZXItb2JqZWN0czoKIAogWE1MUGFyc2VyIE9iamVjdHMKLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXgogCiAKIC4uIGNsYXNzOjogWE1MUGFyc2VyKGh0bWw9MCwgdGFyZ2V0PU5vbmUsIGVuY29kaW5nPU5vbmUpCkBAIC01ODcsOSArODY4LDkgQEAKICAgIDpjbGFzczpgRWxlbWVudGAgc3RydWN0dXJlIGJ1aWxkZXIgZm9yIFhNTCBzb3VyY2UgZGF0YSwgYmFzZWQgb24gdGhlIGV4cGF0CiAgICBwYXJzZXIuICAqaHRtbCogYXJlIHByZWRlZmluZWQgSFRNTCBlbnRpdGllcy4gIFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIGJ5CiAgICB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4gICp0YXJnZXQqIGlzIHRoZSB0YXJnZXQgb2JqZWN0LiAgSWYgb21pdHRlZCwgdGhlCi0gICBidWlsZGVyIHVzZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN0YW5kYXJkIFRyZWVCdWlsZGVyIGNsYXNzLiAgKmVuY29kaW5nKiBbMV1fCi0gICBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhlCi0gICBYTUwgZmlsZS4KKyAgIGJ1aWxkZXIgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgOmNsYXNzOmBUcmVlQnVpbGRlcmAgY2xhc3MuCisgICAqZW5jb2RpbmcqIFsxXV8gaXMgb3B0aW9uYWwuICBJZiBnaXZlbiwgdGhlIHZhbHVlIG92ZXJyaWRlcyB0aGUgZW5jb2RpbmcKKyAgIHNwZWNpZmllZCBpbiB0aGUgWE1MIGZpbGUuCiAKIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQpAQCAtNjQ3LDYgKzkyOCwyNCBAQAogICAgID4+PiBwYXJzZXIuY2xvc2UoKQogICAgIDQKIAorRXhjZXB0aW9ucworXl5eXl5eXl5eXgorCisuLiBjbGFzczo6IFBhcnNlRXJyb3IKKworICAgWE1MIHBhcnNlIGVycm9yLCByYWlzZWQgYnkgdGhlIHZhcmlvdXMgcGFyc2luZyBtZXRob2RzIGluIHRoaXMgbW9kdWxlIHdoZW4KKyAgIHBhcnNpbmcgZmFpbHMuICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGluc3RhbmNlIG9mIHRoaXMgZXhjZXB0aW9uCisgICB3aWxsIGNvbnRhaW4gYSB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICBJbiBhZGRpdGlvbiwgaXQgd2lsbCBoYXZlCisgICB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb2RlCisKKyAgICAgIEEgbnVtZXJpYyBlcnJvciBjb2RlIGZyb20gdGhlIGV4cGF0IHBhcnNlci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mCisgICAgICA6bW9kOmB4bWwucGFyc2Vycy5leHBhdGAgZm9yIHRoZSBsaXN0IG9mIGVycm9yIGNvZGVzIGFuZCB0aGVpciBtZWFuaW5ncy4KKworICAgLi4gYXR0cmlidXRlOjogcG9zaXRpb24KKworICAgICAgQSB0dXBsZSBvZiAqbGluZSosICpjb2x1bW4qIG51bWJlcnMsIHNwZWNpZnlpbmcgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLgogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiMmUyMwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3htbC5yc3QKQEAgLTAsMCArMSwyOSBAQAorLi4gX3htbDoKKworWE1MIFByb2Nlc3NpbmcgTW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PQorCitQeXRob24ncyBpbnRlcmZhY2VzIGZvciBwcm9jZXNzaW5nIFhNTCBhcmUgZ3JvdXBlZCBpbiB0aGUgYGB4bWxgYCBwYWNrYWdlLgorCitJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG1vZHVsZXMgaW4gdGhlIDptb2Q6YHhtbGAgcGFja2FnZSByZXF1aXJlIHRoYXQKK3RoZXJlIGJlIGF0IGxlYXN0IG9uZSBTQVgtY29tcGxpYW50IFhNTCBwYXJzZXIgYXZhaWxhYmxlLiBUaGUgRXhwYXQgcGFyc2VyIGlzCitpbmNsdWRlZCB3aXRoIFB5dGhvbiwgc28gdGhlIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YCBtb2R1bGUgd2lsbCBhbHdheXMgYmUKK2F2YWlsYWJsZS4KKworVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6bW9kOmB4bWwuZG9tYCBhbmQgOm1vZDpgeG1sLnNheGAgcGFja2FnZXMgYXJlIHRoZQorZGVmaW5pdGlvbiBvZiB0aGUgUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgRE9NIGFuZCBTQVggaW50ZXJmYWNlcy4KKworVGhlIFhNTCBoYW5kbGluZyBzdWJtb2R1bGVzIGFyZToKKworKiA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgOiB0aGUgRWxlbWVudFRyZWUgQVBJLCBhIHNpbXBsZSBhbmQgbGlnaHR3ZWlnaHQKKworLi4KKworKiA6bW9kOmB4bWwuZG9tYDogdGhlIERPTSBBUEkgZGVmaW5pdGlvbgorKiA6bW9kOmB4bWwuZG9tLm1pbmlkb21gOiBhIGxpZ2h0d2VpZ2h0IERPTSBpbXBsZW1lbnRhdGlvbgorKiA6bW9kOmB4bWwuZG9tLnB1bGxkb21gOiBzdXBwb3J0IGZvciBidWlsZGluZyBwYXJ0aWFsIERPTSB0cmVlcworCisuLgorCisqIDptb2Q6YHhtbC5zYXhgOiBTQVgyIGJhc2UgY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zCisqIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YDogdGhlIEV4cGF0IHBhcnNlciBiaW5kaW5nCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CmluZGV4IGZmMzZmZDguLjBhNDAzOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CkBAIC02Miw3ICs2Miw3IEBACiAgICB0YWdzLCBpZiBzZXQgdG8gKlRydWUqIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBzaW5nbGUgc2VsZi1jbG9zZWQgdGFnLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzCisgICAgICBUaGUgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiBwYXJhbWV0ZXIuCiAKIAogLi4gY2xhc3M6OiBYTUxGaWx0ZXJCYXNlKGJhc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGU3Mjc3MGEuLjE4NzFjOTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC04LDcgKzgsNyBAQAogCiAKIC4uIFhYWCBOb3QgZXZlcnl0aGluZyBpcyBkb2N1bWVudGVkIHlldC4gIEl0IG1pZ2h0IGJlIGdvb2QgdG8gZGVzY3JpYmUKLSAgIE1hcnNoYWxsZXIsIFVubWFyc2hhbGxlciwgZ2V0cGFyc2VyLCBkdW1wcywgbG9hZHMsIGFuZCBUcmFuc3BvcnQuCisgICBNYXJzaGFsbGVyLCBVbm1hcnNoYWxsZXIsIGdldHBhcnNlciBhbmQgVHJhbnNwb3J0LgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi94bWxycGMvY2xpZW50LnB5YAogCkBAIC0yMSw3ICsyMSwxMiBAQAogYmV0d2VlbiBjb25mb3JtYWJsZSBQeXRob24gb2JqZWN0cyBhbmQgWE1MIG9uIHRoZSB3aXJlLgogCiAKLS4uIGNsYXNzOjogU2VydmVyUHJveHkodXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlKQorLi4gY2xhc3M6OiBTZXJ2ZXJQcm94eSh1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAgICBBIDpjbGFzczpgU2VydmVyUHJveHlgIGluc3RhbmNlIGlzIGFuIG9iamVjdCB0aGF0IG1hbmFnZXMgY29tbXVuaWNhdGlvbiB3aXRoIGEKICAgIHJlbW90ZSBYTUwtUlBDIHNlcnZlci4gIFRoZSByZXF1aXJlZCBmaXJzdCBhcmd1bWVudCBpcyBhIFVSSSAoVW5pZm9ybSBSZXNvdXJjZQpAQCAtMzQsOSArMzksMTMgQEAKICAgIFhNTDsgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGZvciBgYE5vbmVgYCB0byByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIFRoaXMgaXMKICAgIGEgY29tbW9ubHktdXNlZCBleHRlbnNpb24gdG8gdGhlIFhNTC1SUEMgc3BlY2lmaWNhdGlvbiwgYnV0IGlzbid0IHN1cHBvcnRlZCBieQogICAgYWxsIGNsaWVudHMgYW5kIHNlcnZlcnM7IHNlZSBodHRwOi8vb250b3N5cy5jb20veG1sLXJwYy9leHRlbnNpb25zLnBocCBmb3IgYQotICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvCi0gICBiZSBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGNhbGxzLgorICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMKKyAgIHRvIGJlIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIGFuZCBiaW5hcnkgZGF0YSB0byBiZQorICAgcHJlc2VudGVkIGFzIDpjbGFzczpgYnl0ZXNgIG9iamVjdHM7IHRoaXMgZmxhZyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgYW5kIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgbWF5IGJlIHBhc3NlZCB0byBjYWxscy4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCiAKICAgIEJvdGggdGhlIEhUVFAgYW5kIEhUVFBTIHRyYW5zcG9ydHMgc3VwcG9ydCB0aGUgVVJMIHN5bnRheCBleHRlbnNpb24gZm9yIEhUVFAKICAgIEJhc2ljIEF1dGhlbnRpY2F0aW9uOiBgYGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGhgYC4gIFRoZSAgYGB1c2VyOnBhc3NgYApAQCAtNzgsMTIgKzg3LDEyIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvbmx5IHRoZWlyICpfX2RpY3RfXyogYXR0cmlidXRlIGlzICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgZGF0ZXNgICAgICAgICAgICAgICAgICAgfCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAocGFzcyBpbiBhbiAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YERhdGVUaW1lYCBjbGFzcykgb3IgfAorICAgfCA6Y29uc3Q6YGRhdGVzYCAgICAgICAgICAgICAgICAgIHwgSW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guICBQYXNzIGluIGFuICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBEYXRlVGltZWAgY2xhc3Mgb3IgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UuICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgYmluYXJ5IGRhdGFgICAgICAgICAgICAgfCBwYXNzIGluIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEJpbmFyeWAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyYXBwZXIgY2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCA6Y29uc3Q6YGJpbmFyeSBkYXRhYCAgICAgICAgICAgIHwgUGFzcyBpbiBhbiBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBCaW5hcnlgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3cmFwcGVyIGNsYXNzIG9yIGEgOmNsYXNzOmBieXRlc2AgaW5zdGFuY2UuIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieSBYTUwtUlBDLiAgTWV0aG9kIGNhbGxzIG1heSBhbHNvCkBAIC05OCw4ICsxMDcsOSBAQAogICAgZW5zdXJlIHRoYXQgdGhlIHN0cmluZyBpcyBmcmVlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmVuJ3QgYWxsb3dlZCBpbiBYTUwsIHN1Y2ggYXMKICAgIHRoZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aCBBU0NJSSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAzMSAoZXhjZXB0LCBvZiBjb3Vyc2UsCiAgICB0YWIsIG5ld2xpbmUgYW5kIGNhcnJpYWdlIHJldHVybik7IGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBYTUwtUlBDCi0gICByZXF1ZXN0IHRoYXQgaXNuJ3Qgd2VsbC1mb3JtZWQgWE1MLiAgSWYgeW91IGhhdmUgdG8gcGFzcyBhcmJpdHJhcnkgc3RyaW5ncyB2aWEKLSAgIFhNTC1SUEMsIHVzZSB0aGUgOmNsYXNzOmBCaW5hcnlgIHdyYXBwZXIgY2xhc3MgZGVzY3JpYmVkIGJlbG93LgorICAgcmVxdWVzdCB0aGF0IGlzbid0IHdlbGwtZm9ybWVkIFhNTC4gIElmIHlvdSBoYXZlIHRvIHBhc3MgYXJiaXRyYXJ5IGJ5dGVzCisgICB2aWEgWE1MLVJQQywgdXNlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBjbGFzcyBvciB0aGUgY2xhc3M6YEJpbmFyeWAgd3JhcHBlciBjbGFzcworICAgZGVzY3JpYmVkIGJlbG93LgogCiAgICA6Y2xhc3M6YFNlcnZlcmAgaXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgZm9yIDpjbGFzczpgU2VydmVyUHJveHlgIGZvciBiYWNrd2FyZHMKICAgIGNvbXBhdGliaWxpdHkuICBOZXcgY29kZSBzaG91bGQgdXNlIDpjbGFzczpgU2VydmVyUHJveHlgLgpAQCAtMjQ5LDcgKzI1OSw3IEBACiBCaW5hcnkgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBzdHJpbmcgZGF0YSAod2hpY2ggbWF5IGluY2x1ZGUgTlVMcykuIFRoZQorVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBieXRlcyBkYXRhICh3aGljaCBtYXkgaW5jbHVkZSBOVUxzKS4gVGhlCiBwcmltYXJ5IGFjY2VzcyB0byB0aGUgY29udGVudCBvZiBhIDpjbGFzczpgQmluYXJ5YCBvYmplY3QgaXMgcHJvdmlkZWQgYnkgYW4KIGF0dHJpYnV0ZToKIApAQCAtMjU3LDE1ICsyNjcsMTUgQEAKIC4uIGF0dHJpYnV0ZTo6IEJpbmFyeS5kYXRhCiAKICAgIFRoZSBiaW5hcnkgZGF0YSBlbmNhcHN1bGF0ZWQgYnkgdGhlIDpjbGFzczpgQmluYXJ5YCBpbnN0YW5jZS4gIFRoZSBkYXRhIGlzCi0gICBwcm92aWRlZCBhcyBhbiA4LWJpdCBzdHJpbmcuCisgICBwcm92aWRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KIAogOmNsYXNzOmBCaW5hcnlgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMsIHN1cHBvcnRlZCBtYWlubHkgZm9yCiBpbnRlcm5hbCB1c2UgYnkgdGhlIG1hcnNoYWxsaW5nL3VubWFyc2hhbGxpbmcgY29kZToKIAogCi0uLiBtZXRob2Q6OiBCaW5hcnkuZGVjb2RlKHN0cmluZykKKy4uIG1ldGhvZDo6IEJpbmFyeS5kZWNvZGUoYnl0ZXMpCiAKLSAgIEFjY2VwdCBhIGJhc2U2NCBzdHJpbmcgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KKyAgIEFjY2VwdCBhIGJhc2U2NCA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KIAogCiAuLiBtZXRob2Q6OiBCaW5hcnkuZW5jb2RlKG91dCkKQEAgLTQ3MSwxNCArNDgxLDIxIEBACiAgICBpdCB2aWEgYW4gZXh0ZW5zaW9uLCAgcHJvdmlkZSBhIHRydWUgdmFsdWUgZm9yICphbGxvd19ub25lKi4KIAogCi0uLiBmdW5jdGlvbjo6IGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ29udmVydCBhbiBYTUwtUlBDIHJlcXVlc3Qgb3IgcmVzcG9uc2UgaW50byBQeXRob24gb2JqZWN0cywgYSBgYChwYXJhbXMsCiAgICBtZXRob2RuYW1lKWBgLiAgKnBhcmFtcyogaXMgYSB0dXBsZSBvZiBhcmd1bWVudDsgKm1ldGhvZG5hbWUqIGlzIGEgc3RyaW5nLCBvcgogICAgYGBOb25lYGAgaWYgbm8gbWV0aG9kIG5hbWUgaXMgcHJlc2VudCBpbiB0aGUgcGFja2V0LiBJZiB0aGUgWE1MLVJQQyBwYWNrZXQKICAgIHJlcHJlc2VudHMgYSBmYXVsdCBjb25kaXRpb24sIHRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSBhIDpleGM6YEZhdWx0YCBleGNlcHRpb24uCi0gICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlIHByZXNlbnRlZCBhcwotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlCisgICBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBhbmQgYmluYXJ5IGRhdGEgdG8gYmUKKyAgIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzOyB0aGlzIGZsYWcgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBfeG1scnBjLWNsaWVudC1leGFtcGxlOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU2ODE1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5yc3QKQEAgLTAsMCArMSwxMiBAQAorOm1vZDpgeG1scnBjYCAtLS0gWE1MUlBDIHNlcnZlciBhbmQgY2xpZW50IG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1hNTC1SUEMgaXMgYSBSZW1vdGUgUHJvY2VkdXJlIENhbGwgbWV0aG9kIHRoYXQgdXNlcyBYTUwgcGFzc2VkIHZpYSBIVFRQIGFzIGEKK3RyYW5zcG9ydC4gIFdpdGggaXQsIGEgY2xpZW50IGNhbiBjYWxsIG1ldGhvZHMgd2l0aCBwYXJhbWV0ZXJzIG9uIGEgcmVtb3RlCitzZXJ2ZXIgKHRoZSBzZXJ2ZXIgaXMgbmFtZWQgYnkgYSBVUkkpIGFuZCBnZXQgYmFjayBzdHJ1Y3R1cmVkIGRhdGEuCisKK2BgeG1scnBjYGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2VydmVyIGFuZCBjbGllbnQgbW9kdWxlcyBpbXBsZW1lbnRpbmcKK1hNTC1SUEMuICBUaGUgbW9kdWxlcyBhcmU6CisKKyogOm1vZDpgeG1scnBjLmNsaWVudGAKKyogOm1vZDpgeG1scnBjLnNlcnZlcmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKaW5kZXggNjdmZWJhNi4uNjQ5M2ZkNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKQEAgLTE2LDcgKzE2LDkgQEAKIDpjbGFzczpgQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXJgLgogCiAKLS4uIGNsYXNzOjogU2ltcGxlWE1MUlBDU2VydmVyKGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKQorLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsXAorICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSxcCisgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IHNlcnZlciBpbnN0YW5jZS4gIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVnaXN0cmF0aW9uIG9mCiAgICBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBYTUwtUlBDIHByb3RvY29sLiAgVGhlICpyZXF1ZXN0SGFuZGxlcioKQEAgLTI1LDE4ICsyNywzMSBAQAogICAgYXJlIHBhc3NlZCB0byB0aGUgOmNsYXNzOmBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyYCBjb25zdHJ1Y3Rvci4gIElmICpsb2dSZXF1ZXN0cyoKICAgIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgcmVxdWVzdHMgd2lsbCBiZSBsb2dnZWQ7IHNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gZmFsc2UKICAgIHdpbGwgdHVybiBvZmYgbG9nZ2luZy4gICBUaGUgKmFsbG93X25vbmUqIGFuZCAqZW5jb2RpbmcqIHBhcmFtZXRlcnMgYXJlIHBhc3NlZAotICAgb24gdG8gIDptb2Q6YHhtbHJwYy5jbGllbnRgIGFuZCBjb250cm9sIHRoZSBYTUwtUlBDIHJlc3BvbnNlcyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQKKyAgIG9uIHRvIDptb2Q6YHhtbHJwYy5jbGllbnRgIGFuZCBjb250cm9sIHRoZSBYTUwtUlBDIHJlc3BvbnNlcyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQKICAgIGZyb20gdGhlIHNlcnZlci4gVGhlICpiaW5kX2FuZF9hY3RpdmF0ZSogcGFyYW1ldGVyIGNvbnRyb2xzIHdoZXRoZXIKICAgIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kIDptZXRoOmBzZXJ2ZXJfYWN0aXZhdGVgIGFyZSBjYWxsZWQgaW1tZWRpYXRlbHkgYnkgdGhlCiAgICBjb25zdHJ1Y3RvcjsgaXQgZGVmYXVsdHMgdG8gdHJ1ZS4gU2V0dGluZyBpdCB0byBmYWxzZSBhbGxvd3MgY29kZSB0byBtYW5pcHVsYXRlCiAgICB0aGUgKmFsbG93X3JldXNlX2FkZHJlc3MqIGNsYXNzIHZhcmlhYmxlIGJlZm9yZSB0aGUgYWRkcmVzcyBpcyBib3VuZC4KKyAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gdGhlCisgICA6ZnVuYzpgfnhtbHJwYy5jbGllbnQubG9hZHNgIGZ1bmN0aW9uIGFuZCBjb250cm9scyB3aGljaCB0eXBlcyBhcmUgcHJvY2Vzc2VkCisgICB3aGVuIGRhdGUvdGltZXMgdmFsdWVzIG9yIGJpbmFyeSBkYXRhIGFyZSByZWNlaXZlZDsgaXQgZGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCi0uLiBjbGFzczo6IENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUpCisuLiBjbGFzczo6IENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsXAorICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSB0byBoYW5kbGUgWE1MLVJQQyByZXF1ZXN0cyBpbiBhIENHSSBlbnZpcm9ubWVudC4gIFRoZQogICAgKmFsbG93X25vbmUqIGFuZCAqZW5jb2RpbmcqIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBvbiB0byA6bW9kOmB4bWxycGMuY2xpZW50YAogICAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuCisgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBwYXJhbWV0ZXIgaXMgcGFzc2VkIHRvIHRoZQorICAgOmZ1bmM6YH54bWxycGMuY2xpZW50LmxvYWRzYCBmdW5jdGlvbiBhbmQgY29udHJvbHMgd2hpY2ggdHlwZXMgYXJlIHByb2Nlc3NlZAorICAgd2hlbiBkYXRlL3RpbWVzIHZhbHVlcyBvciBiaW5hcnkgZGF0YSBhcmUgcmVjZWl2ZWQ7IGl0IGRlZmF1bHRzIHRvIGZhbHNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyB3YXMgYWRkZWQuCiAKIAogLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcigpCkBAIC0yMzMsMTIgKzI0OCwxNyBAQAogOmNsYXNzOmBEb2NDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKIAotLi4gY2xhc3M6OiBEb2NYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9RG9jWE1MUlBDUmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpCisuLiBjbGFzczo6IERvY1hNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlcixcCisgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLFwKKyAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCiAKICAgIENyZWF0ZSBhIG5ldyBzZXJ2ZXIgaW5zdGFuY2UuIEFsbCBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKICAgIDpjbGFzczpgU2ltcGxlWE1MUlBDU2VydmVyYDsgKnJlcXVlc3RIYW5kbGVyKiBkZWZhdWx0cyB0bwogICAgOmNsYXNzOmBEb2NYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KKwogCiAuLiBjbGFzczo6IERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAppbmRleCAyNjRjZDQ3Li45ZjZlMDc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdApAQCAtODcsNyArODcsMzAgQEAKIC4uIGRhdGE6OiBaSVBfREVGTEFURUQKIAogICAgVGhlIG51bWVyaWMgY29uc3RhbnQgZm9yIHRoZSB1c3VhbCBaSVAgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKLSAgIDptb2Q6YHpsaWJgIG1vZHVsZS4gIE5vIG90aGVyIGNvbXByZXNzaW9uIG1ldGhvZHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCisgICA6bW9kOmB6bGliYCBtb2R1bGUuCisKKworLi4gZGF0YTo6IFpJUF9CWklQMgorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIEJaSVAyIGNvbXByZXNzaW9uIG1ldGhvZC4gIFRoaXMgcmVxdWlyZXMgdGhlCisgICA6bW9kOmBiejJgIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBaSVBfTFpNQQorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIExaTUEgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKKyAgIDptb2Q6YGx6bWFgIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGUgWklQIGZpbGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaGFzIGluY2x1ZGVkIHN1cHBvcnQgZm9yIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICBzaW5jZSAyMDAxLCBhbmQgZm9yIExaTUEgY29tcHJlc3Npb24gc2luY2UgMjAwNi4gSG93ZXZlciwgc29tZSB0b29scworICAgICAgKGluY2x1ZGluZyBvbGRlciBQeXRob24gcmVsZWFzZXMpIGRvIG5vdCBzdXBwb3J0IHRoZXNlIGNvbXByZXNzaW9uCisgICAgICBtZXRob2RzLCBhbmQgbWF5IGVpdGhlciByZWZ1c2UgdG8gcHJvY2VzcyB0aGUgWklQIGZpbGUgYWx0b2dldGhlciwKKyAgICAgIG9yIGZhaWwgdG8gZXh0cmFjdCBpbmRpdmlkdWFsIGZpbGVzLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTE4LDkgKzE0MSwxMSBAQAogICAgYWRkaW5nIGEgWklQIGFyY2hpdmUgdG8gYW5vdGhlciBmaWxlIChzdWNoIGFzIDpmaWxlOmBweXRob24uZXhlYCkuICBJZgogICAgKm1vZGUqIGlzIGBgYWBgIGFuZCB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBhdCBhbGwsIGl0IGlzIGNyZWF0ZWQuCiAgICAqY29tcHJlc3Npb24qIGlzIHRoZSBaSVAgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZSB3aGVuIHdyaXRpbmcgdGhlIGFyY2hpdmUsCi0gICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAgb3IgOmNvbnN0OmBaSVBfREVGTEFURURgOyB1bnJlY29nbml6ZWQKLSAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgCi0gICBpcyBzcGVjaWZpZWQgYnV0IHRoZSA6bW9kOmB6bGliYCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAorICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCisgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZAorICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgUnVudGltZUVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCisgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgY29ycmVzcG9uZGVkIG1vZHVsZQorICAgKDptb2Q6YHpsaWJgLCA6bW9kOmBiejJgIG9yIDptb2Q6YGx6bWFgKSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCiAgICBpcyBhbHNvIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcwogICAgYGBUcnVlYGAgemlwZmlsZSB3aWxsIGNyZWF0ZSBaSVAgZmlsZXMgdGhhdCB1c2UgdGhlIFpJUDY0IGV4dGVuc2lvbnMgd2hlbgogICAgdGhlIHppcGZpbGUgaXMgbGFyZ2VyIHRoYW4gMiBHQi4gSWYgaXQgaXMgIGZhbHNlICh0aGUgZGVmYXVsdCkgOm1vZDpgemlwZmlsZWAKQEAgLTE0Myw2ICsxNjgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgYWJpbGl0eSB0byB1c2UgOmNsYXNzOmBaaXBGaWxlYCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDptb2Q6YGJ6aXAyIDxiejI+YCBhbmQgOm1vZDpgbHptYWAgY29tcHJlc3Npb24uCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QgYi9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CmluZGV4IDRmMTcwOTIuLmI0N2MzNWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aG5hbWUpCiAKLSAgICAgIFJldHVybiB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggKnBhdGhuYW1lKi4gUmFpc2UgOmV4YzpgSU9FcnJvcmAgaWYgdGhlCisgICAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICpwYXRobmFtZSouIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZQogICAgICAgZmlsZSB3YXNuJ3QgZm91bmQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKICAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmdWxsbmFtZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemxpYi5yc3QgYi9Eb2MvbGlicmFyeS96bGliLnJzdAppbmRleCA3NTY0MGQ0Li43MzEwMjNlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS96bGliLnJzdApAQCAtNTEsMjEgKzUxLDQ2IEBACiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YVssIGxldmVsXSkKIAotICAgQ29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZwotICAgY29tcHJlc3NlZCBkYXRhLiAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcgdGhlCi0gICBsZXZlbCBvZiBjb21wcmVzc2lvbjsgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLAotICAgYGA5YGAgaXMgc2xvd2VzdCBhbmQgcHJvZHVjZXMgdGhlIG1vc3QuIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiBUaGUgZGVmYXVsdAotICAgdmFsdWUgaXMgYGA2YGAuICBSYWlzZXMgdGhlIDpleGM6YGVycm9yYCBleGNlcHRpb24gaWYgYW55IGVycm9yIG9jY3Vycy4KKyAgIENvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgorICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOworICAgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLCBgYDlgYCBpcyBzbG93ZXN0IGFuZAorICAgcHJvZHVjZXMgdGhlIG1vc3QuICBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgNmBgLgorICAgUmFpc2VzIHRoZSA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uIGlmIGFueSBlcnJvciBvY2N1cnMuCiAKIAotLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihbbGV2ZWxdKQorLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtbGV2ZWw9OCwgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKQogCiAgICBSZXR1cm5zIGEgY29tcHJlc3Npb24gb2JqZWN0LCB0byBiZSB1c2VkIGZvciBjb21wcmVzc2luZyBkYXRhIHN0cmVhbXMgdGhhdCB3b24ndAotICAgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDBgYCB0byBgYDlgYCBjb250cm9sbGluZwotICAgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOyBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sCi0gICBgYDlgYCBpcyBzbG93ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbW9zdC4gIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiAgVGhlIGRlZmF1bHQKKyAgIGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLgorCisgICAqbGV2ZWwqIGlzIHRoZSBjb21wcmVzc2lvbiBsZXZlbCAtLSBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAuIEEgdmFsdWUKKyAgIG9mIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgd2hpbGUgYSB2YWx1ZSBvZgorICAgYGA5YGAgaXMgc2xvd2VzdCBhbmQgcHJvZHVjZXMgdGhlIG1vc3QuIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiBUaGUgZGVmYXVsdAogICAgdmFsdWUgaXMgYGA2YGAuCiAKKyAgICptZXRob2QqIGlzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzCisgICBgYERFRkxBVEVEYGAuCisKKyAgICp3Yml0cyogaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGJ1ZmZlci4gVGhpcworICAgc2hvdWxkIGJlIGFuIGludGVnZXIgZnJvbSBgYDhgYCB0byBgYDE1YGAuIEhpZ2hlciB2YWx1ZXMgZ2l2ZSBiZXR0ZXIKKyAgIGNvbXByZXNzaW9uLCBidXQgdXNlIG1vcmUgbWVtb3J5LgorCisgICAqbWVtbGV2ZWwqIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgZm9yIGludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLgorICAgVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gYGAxYGAgdG8gYGA5YGAuIEhpZ2hlciB2YWx1ZXMgdXNpbmcgbW9yZSBtZW1vcnksCisgICBidXQgYXJlIGZhc3RlciBhbmQgcHJvZHVjZSBzbWFsbGVyIG91dHB1dC4KKworICAgKnN0cmF0ZWd5KiBpcyB1c2VkIHRvIHR1bmUgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gUG9zc2libGUgdmFsdWVzIGFyZQorICAgYGBaX0RFRkFVTFRfU1RSQVRFR1lgYCwgYGBaX0ZJTFRFUkVEYGAsIGFuZCBgYFpfSFVGRk1BTl9PTkxZYGAuCisKKyAgICp6ZGljdCogaXMgYSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiBieXRlcworICAgKHN1Y2ggYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGV4cGVjdGVkCisgICB0byBvY2N1ciBmcmVxdWVudGx5IGluIHRoZSBkYXRhIHRoYXQgaXMgdG8gYmUgY29tcHJlc3NlZC4gVGhvc2Ugc3Vic2VxdWVuY2VzCisgICB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBtb3N0IGNvbW1vbiBzaG91bGQgY29tZSBhdCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICptZXRob2QqLCAqd2JpdHMqLCAqbWVtbGV2ZWwqLCAqc3RyYXRlZ3kqIGFuZCAqemRpY3QqCisgICAgICBwYXJhbWV0ZXJzLgorCiAKIC4uIGZ1bmN0aW9uOjogY3JjMzIoZGF0YVssIHZhbHVlXSkKIApAQCAtODMsMTIgKzEwOCwxMyBAQAogCiAgICBBbHdheXMgcmV0dXJucyBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlci4KIAotLi4gbm90ZTo6Ci0gICBUbyBnZW5lcmF0ZSB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGFjcm9zcyBhbGwgUHl0aG9uIHZlcnNpb25zIGFuZAotICAgcGxhdGZvcm1zIHVzZSBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmYuICBJZiB5b3UgYXJlIG9ubHkgdXNpbmcKLSAgIHRoZSBjaGVja3N1bSBpbiBwYWNrZWQgYmluYXJ5IGZvcm1hdCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYXMgdGhlCi0gICByZXR1cm4gdmFsdWUgaXMgdGhlIGNvcnJlY3QgMzJiaXQgYmluYXJ5IHJlcHJlc2VudGF0aW9uCi0gICByZWdhcmRsZXNzIG9mIHNpZ24uCisgICAuLiBub3RlOjoKKworICAgICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKKyAgICAgIHBsYXRmb3JtcywgdXNlIGBgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuICBJZiB5b3UgYXJlIG9ubHkgdXNpbmcKKyAgICAgIHRoZSBjaGVja3N1bSBpbiBwYWNrZWQgYmluYXJ5IGZvcm1hdCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYXMgdGhlCisgICAgICByZXR1cm4gdmFsdWUgaXMgdGhlIGNvcnJlY3QgMzItYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgorICAgICAgcmVnYXJkbGVzcyBvZiBzaWduLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhWywgd2JpdHNbLCBidWZzaXplXV0pCkBAIC0xMTUsMTEgKzE0MSwyNiBAQAogICAgdG8gOmM6ZnVuYzpgbWFsbG9jYC4gIFRoZSBkZWZhdWx0IHNpemUgaXMgMTYzODQuCiAKIAotLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKFt3Yml0c10pCisuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3NvYmood2JpdHM9MTVbLCB6ZGljdF0pCiAKICAgIFJldHVybnMgYSBkZWNvbXByZXNzaW9uIG9iamVjdCwgdG8gYmUgdXNlZCBmb3IgZGVjb21wcmVzc2luZyBkYXRhIHN0cmVhbXMgdGhhdAotICAgd29uJ3QgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIHNpemUgb2YgdGhlCi0gICB3aW5kb3cgYnVmZmVyLgorICAgd29uJ3QgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuCisKKyAgIFRoZSAqd2JpdHMqIHBhcmFtZXRlciBjb250cm9scyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGJ1ZmZlci4KKworICAgVGhlICp6ZGljdCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeS4gSWYKKyAgIHByb3ZpZGVkLCB0aGlzIG11c3QgYmUgdGhlIHNhbWUgZGljdGlvbmFyeSBhcyB3YXMgdXNlZCBieSB0aGUgY29tcHJlc3NvciB0aGF0CisgICBwcm9kdWNlZCB0aGUgZGF0YSB0aGF0IGlzIHRvIGJlIGRlY29tcHJlc3NlZC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIElmICp6ZGljdCogaXMgYSBtdXRhYmxlIG9iamVjdCAoc3VjaCBhcyBhIDpjbGFzczpgYnl0ZWFycmF5YCksIHlvdSBtdXN0IG5vdAorICAgICAgbW9kaWZ5IGl0cyBjb250ZW50cyBiZXR3ZWVuIHRoZSBjYWxsIHRvIDpmdW5jOmBkZWNvbXByZXNzb2JqYCBhbmQgdGhlIGZpcnN0CisgICAgICBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IncyBgYGRlY29tcHJlc3MoKWBgIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqemRpY3QqIHBhcmFtZXRlci4KKwogCiBDb21wcmVzc2lvbiBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCkBAIC0xNTEsNyArMTkyLDcgQEAKICAgIGNvbXByZXNzIGEgc2V0IG9mIGRhdGEgdGhhdCBzaGFyZSBhIGNvbW1vbiBpbml0aWFsIHByZWZpeC4KIAogCi1EZWNvbXByZXNzaW9uIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHMsIGFuZCB0d28gYXR0cmlidXRlczoKK0RlY29tcHJlc3Npb24gb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogCiAuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLnVudXNlZF9kYXRhCkBAIC0xNjEsMTMgKzIwMiw2IEBACiAgICBhdmFpbGFibGUuICBJZiB0aGUgd2hvbGUgYnl0ZXN0cmluZyB0dXJuZWQgb3V0IHRvIGNvbnRhaW4gY29tcHJlc3NlZCBkYXRhLCB0aGlzIGlzCiAgICBgYGIiImBgLCBhbiBlbXB0eSBieXRlcyBvYmplY3QuCiAKLSAgIFRoZSBvbmx5IHdheSB0byBkZXRlcm1pbmUgd2hlcmUgYSBieXRlc3RyaW5nIG9mIGNvbXByZXNzZWQgZGF0YSBlbmRzIGlzIGJ5IGFjdHVhbGx5Ci0gICBkZWNvbXByZXNzaW5nIGl0LiAgVGhpcyBtZWFucyB0aGF0IHdoZW4gY29tcHJlc3NlZCBkYXRhIGlzIGNvbnRhaW5lZCBwYXJ0IG9mIGEKLSAgIGxhcmdlciBmaWxlLCB5b3UgY2FuIG9ubHkgZmluZCB0aGUgZW5kIG9mIGl0IGJ5IHJlYWRpbmcgZGF0YSBhbmQgZmVlZGluZyBpdAotICAgZm9sbG93ZWQgYnkgc29tZSBub24tZW1wdHkgYnl0ZXN0cmluZyBpbnRvIGEgZGVjb21wcmVzc2lvbiBvYmplY3QncwotICAgOm1ldGg6YGRlY29tcHJlc3NgIG1ldGhvZCB1bnRpbCB0aGUgOmF0dHI6YHVudXNlZF9kYXRhYCBhdHRyaWJ1dGUgaXMgbm8gbG9uZ2VyCi0gICBlbXB0eS4KLQogCiAuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbAogCkBAIC0xNzgsNiArMjEyLDE3IEBACiAgICA6bWV0aDpgZGVjb21wcmVzc2AgbWV0aG9kIGNhbGwgaW4gb3JkZXIgdG8gZ2V0IGNvcnJlY3Qgb3V0cHV0LgogCiAKKy4uIGF0dHJpYnV0ZTo6IERlY29tcHJlc3MuZW9mCisKKyAgIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIHN0cmVhbSBoYXMgYmVlbgorICAgcmVhY2hlZC4KKworICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgcHJvcGVybHktZm9ybWVkIGNvbXByZXNzZWQKKyAgIHN0cmVhbSwgYW5kIGFuIGluY29tcGxldGUgb3IgdHJ1bmNhdGVkIG9uZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGFbLCBtYXhfbGVuZ3RoXSkKIAogICAgRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQpAQCAtMjEyLDYgKzI1NywyNCBAQAogICAgc2Vla3MgaW50byB0aGUgc3RyZWFtIGF0IGEgZnV0dXJlIHBvaW50LgogCiAKK0luZm9ybWF0aW9uIGFib3V0IHRoZSB2ZXJzaW9uIG9mIHRoZSB6bGliIGxpYnJhcnkgaW4gdXNlIGlzIGF2YWlsYWJsZSB0aHJvdWdoCit0aGUgZm9sbG93aW5nIGNvbnN0YW50czoKKworCisuLiBkYXRhOjogWkxJQl9WRVJTSU9OCisKKyAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgemxpYiBsaWJyYXJ5IHRoYXQgd2FzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBtb2R1bGUuCisgICBUaGlzIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgemxpYiBsaWJyYXJ5IGFjdHVhbGx5IHVzZWQgYXQgcnVudGltZSwgd2hpY2gKKyAgIGlzIGF2YWlsYWJsZSBhcyA6Y29uc3Q6YFpMSUJfUlVOVElNRV9WRVJTSU9OYC4KKworCisuLiBkYXRhOjogWkxJQl9SVU5USU1FX1ZFUlNJT04KKworICAgVGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSB6bGliIGxpYnJhcnkgYWN0dWFsbHkgbG9hZGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gc2VlYWxzbzo6CiAKICAgIE1vZHVsZSA6bW9kOmBnemlwYApkaWZmIC0tZ2l0IGEvRG9jL2xpY2Vuc2UucnN0IGIvRG9jL2xpY2Vuc2UucnN0CmluZGV4IGE0NGZhMDQuLjViN2ZjYmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWNlbnNlLnJzdAorKysgYi9Eb2MvbGljZW5zZS5yc3QKQEAgLTEyMCw2ICsxMjAsOCBAQAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKIHwgMy4yLjMgICAgICAgICAgfCAzLjIuMiAgICAgICAgfCAyMDEyICAgICAgIHwgUFNGICAgICAgICB8IHllcyAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworfCAzLjMuMCAgICAgICAgICB8IDMuMiAgICAgICAgICB8IDIwMTIgICAgICAgfCBQU0YgICAgICAgIHwgeWVzICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCiAKIC4uIG5vdGU6OgogCkBAIC0xNDgsNyArMTUwLDcgQEAKICAgIGFuYWx5emUsIHRlc3QsIHBlcmZvcm0gYW5kL29yIGRpc3BsYXkgcHVibGljbHksIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcywKICAgIGRpc3RyaWJ1dGUsIGFuZCBvdGhlcndpc2UgdXNlIFB5dGhvbiB8cmVsZWFzZXwgYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUKICAgIHZlcnNpb24sIHByb3ZpZGVkLCBob3dldmVyLCB0aGF0IFBTRidzIExpY2Vuc2UgQWdyZWVtZW50IGFuZCBQU0YncyBub3RpY2Ugb2YKLSAgIGNvcHlyaWdodCwgaS5lLiwgIkNvcHlyaWdodCDCqSAyMDAxLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMKKyAgIGNvcHlyaWdodCwgaS5lLiwgIkNvcHlyaWdodCDCqSAyMDAxLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMKICAgIFJlc2VydmVkIiBhcmUgcmV0YWluZWQgaW4gUHl0aG9uIHxyZWxlYXNlfCBhbG9uZSBvciBpbiBhbnkgZGVyaXZhdGl2ZSB2ZXJzaW9uCiAgICBwcmVwYXJlZCBieSBMaWNlbnNlZS4KIApkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDRlYTJkNTEuLmEyMjIwYzAgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTM3LDcgKzM3LDcgQEAKIHN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvU3BoaW54LTEuMC43L3NwaGlueCB0b29scy9zcGhpbngKIHN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvZG9jdXRpbHMtMC42L2RvY3V0aWxzIHRvb2xzL2RvY3V0aWxzCiBzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL0ppbmphLTIuMy4xL2ppbmphMiB0b29scy9qaW5qYTIKLXN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvUHlnbWVudHMtMS4zLjEvcHlnbWVudHMgdG9vbHMvcHlnbWVudHMKK3N2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvUHlnbWVudHMtMS41ZGV2LTIwMTIwOTMwL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzCiBnb3RvIGVuZAogCiA6dXBkYXRlCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggNGJhZDJkNS4uN2M1MTA2OCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtMzUsMTIgKzM1LDE5IEBACiBFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3QncyAqaWRlbnRpdHkqIG5ldmVyCiBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdCBhcyB0aGUgb2JqZWN0J3MgYWRkcmVzcyBpbgogbWVtb3J5LiAgVGhlICc6a2V5d29yZDpgaXNgJyBvcGVyYXRvciBjb21wYXJlcyB0aGUgaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZQotOmZ1bmM6YGlkYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eSAoY3VycmVudGx5Ci1pbXBsZW1lbnRlZCBhcyBpdHMgYWRkcmVzcykuIEFuIG9iamVjdCdzIDpkZm46YHR5cGVgIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbI11fCis6ZnVuYzpgaWRgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LgorCisuLiBpbXBsLWRldGFpbDo6CisKKyAgIEZvciBDUHl0aG9uLCBgYGlkKHgpYGAgaXMgdGhlIG1lbW9yeSBhZGRyZXNzIHdoZXJlIGBgeGBgIGlzIHN0b3JlZC4KKwogQW4gb2JqZWN0J3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0cyAoZS5nLiwgImRvZXMKIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBvYmplY3RzIG9mIHRoYXQKIHR5cGUuICBUaGUgOmZ1bmM6YHR5cGVgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0J3MgdHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0Ci1pdHNlbGYpLiAgVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhbgoraXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3QncyA6ZGZuOmB0eXBlYCBpcyBhbHNvIHVuY2hhbmdlYWJsZS4KK1sjXV8KKworVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhbgogY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyB1bmNoYW5nZWFibGUgb25jZSB0aGV5CiBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuIGltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0CiB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXIncyB2YWx1ZQpAQCAtMjY3LDI1ICsyNzQsMjcgQEAKIAogICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczoKIAorICAgICAgLi4gaW5kZXg6OgorICAgICAgICAgc2luZ2xlOiBzdHJpbmc7IGltbXV0YWJsZSBzZXF1ZW5jZXMKKwogICAgICAgU3RyaW5ncwogICAgICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgICAgYnVpbHRpbjogY2hyCiAgICAgICAgICAgICBidWlsdGluOiBvcmQKLSAgICAgICAgICAgIGJ1aWx0aW46IHN0cgogICAgICAgICAgICAgc2luZ2xlOiBjaGFyYWN0ZXIKICAgICAgICAgICAgIHNpbmdsZTogaW50ZWdlcgogICAgICAgICAgICAgc2luZ2xlOiBVbmljb2RlCiAKLSAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHN0cmluZyBvYmplY3QgYXJlIFVuaWNvZGUgY29kZSB1bml0cy4gIEEgVW5pY29kZSBjb2RlCi0gICAgICAgICB1bml0IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIG9iamVjdCBvZiBvbmUgaXRlbSBhbmQgY2FuIGhvbGQgZWl0aGVyCi0gICAgICAgICBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWUgcmVwcmVzZW50aW5nIGEgVW5pY29kZSBvcmRpbmFsICh0aGUgbWF4aW11bQotICAgICAgICAgdmFsdWUgZm9yIHRoZSBvcmRpbmFsIGlzIGdpdmVuIGluIGBgc3lzLm1heHVuaWNvZGVgYCwgYW5kIGRlcGVuZHMgb24KLSAgICAgICAgIGhvdyBQeXRob24gaXMgY29uZmlndXJlZCBhdCBjb21waWxlIHRpbWUpLiAgU3Vycm9nYXRlIHBhaXJzIG1heSBiZQotICAgICAgICAgcHJlc2VudCBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZCB3aWxsIGJlIHJlcG9ydGVkIGFzIHR3byBzZXBhcmF0ZQotICAgICAgICAgaXRlbXMuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25zIDpmdW5jOmBjaHJgIGFuZCA6ZnVuYzpgb3JkYCBjb252ZXJ0Ci0gICAgICAgICBiZXR3ZWVuIGNvZGUgdW5pdHMgYW5kIG5vbm5lZ2F0aXZlIGludGVnZXJzIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZQotICAgICAgICAgb3JkaW5hbHMgYXMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBTdGFuZGFyZCAzLjAuIENvbnZlcnNpb24gZnJvbSBhbmQgdG8KLSAgICAgICAgIG90aGVyIGVuY29kaW5ncyBhcmUgcG9zc2libGUgdGhyb3VnaCB0aGUgc3RyaW5nIG1ldGhvZCA6bWV0aDpgZW5jb2RlYC4KKyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgY29kZXBvaW50cy4KKyAgICAgICAgIEFsbCB0aGUgY29kZXBvaW50cyBpbiByYW5nZSBgYFUrMDAwMCAtIFUrMTBGRkZGYGAgY2FuIGJlIHJlcHJlc2VudGVkCisgICAgICAgICBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSA6Yzp0eXBlOmBjaHJgIHR5cGUsIGFuZAorICAgICAgICAgZXZlcnkgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcgb2JqZWN0CisgICAgICAgICB3aXRoIGxlbmd0aCBgYDFgYC4gIFRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3JkYCBjb252ZXJ0cyBhCisgICAgICAgICBjaGFyYWN0ZXIgdG8gaXRzIGNvZGVwb2ludCAoYXMgYW4gaW50ZWdlcik7IDpmdW5jOmBjaHJgIGNvbnZlcnRzCisgICAgICAgICBhbiBpbnRlZ2VyIGluIHJhbmdlIGBgMCAtIDEwRkZGRmBgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4KKyAgICAgICAgIDptZXRoOmBzdHIuZW5jb2RlYCBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgOmNsYXNzOmBzdHJgIHRvCisgICAgICAgICA6Y2xhc3M6YGJ5dGVzYCB1c2luZyB0aGUgZ2l2ZW4gZW5jb2RpbmcsIGFuZCA6bWV0aDpgYnl0ZXMuZGVjb2RlYCBjYW4KKyAgICAgICAgIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuCiAKICAgICAgIFR1cGxlcwogICAgICAgICAgLi4gaW5kZXg6OgpAQCAtNDQ4LDYgKzQ1NywxMSBAQAogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKICAgICAgIHwgOmF0dHI6YF9fbmFtZV9fYCAgICAgICAgfCBUaGUgZnVuY3Rpb24ncyBuYW1lICAgICAgICAgICB8IFdyaXRhYmxlICB8CiAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKworICAgICAgfCA6YXR0cjpgX19xdWFsbmFtZV9fYCAgICB8IFRoZSBmdW5jdGlvbidzICAgICAgICAgICAgICAgIHwgV3JpdGFibGUgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCA6dGVybTpgcXVhbGlmaWVkIG5hbWVgICAgICAgICB8ICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuMyAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCiAgICAgICB8IDphdHRyOmBfX21vZHVsZV9fYCAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgfCBXcml0YWJsZSAgfAogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgIHwgICAgICAgICAgIHwKICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS4gICAgICB8ICAgICAgICAgICB8CkBAIC02MzksMTcgKzY1MywyMCBAQAogICAgICAgc3RhdGVtZW50OiBpbXBvcnQKICAgICAgIG9iamVjdDogbW9kdWxlCiAKLSAgIE1vZHVsZXMgYXJlIGltcG9ydGVkIGJ5IHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgKHNlZSBzZWN0aW9uCi0gICA6cmVmOmBpbXBvcnRgKS4gQSBtb2R1bGUgb2JqZWN0IGhhcyBhCi0gICBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpcyB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkCi0gICBieSB0aGUgX19nbG9iYWxzX18gYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlCi0gICByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYG0ueGBgIGlzCi0gICBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdYGAuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlCi0gICBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzbid0IG5lZWRlZCBvbmNlIHRoZQotICAgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuCisgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmUgY3JlYXRlZCBieQorICAgdGhlIDpyZWY6YGltcG9ydCBzeXN0ZW0gPGltcG9ydHN5c3RlbT5gIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZQorICAgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IChzZWUgOmtleXdvcmQ6YGltcG9ydGApLCBvciBieSBjYWxsaW5nCisgICBmdW5jdGlvbnMgc3VjaCBhcyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIGFuZCBidWlsdC1pbgorICAgOmZ1bmM6YF9faW1wb3J0X19gLiAgQSBtb2R1bGUgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhCisgICBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpcyB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZ2xvYmFsc19fYGAKKyAgIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZQorICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpcyBlcXVpdmFsZW50IHRvCisgICBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZSBvYmplY3QgdXNlZAorICAgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMKKyAgIGRvbmUpLgogCi0gICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnggPQotICAgMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuCisgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSwgZS5nLiwKKyAgIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBfX2RpY3RfXyAobW9kdWxlIGF0dHJpYnV0ZSkKIApAQCAtNjcxLDExICs2ODgsMTIgQEAKIAogICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IDphdHRyOmBfX25hbWVfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWU7CiAgICA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZgotICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlIG1vZHVsZQotICAgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlIGlzIG5vdAotICAgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IKLSAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZQotICAgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuCisgICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUKKyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYAorICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQyBtb2R1bGVzCisgICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzCisgICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZAorICAgbGlicmFyeSBmaWxlLgogCiBDdXN0b20gY2xhc3NlcwogICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlIHNlY3Rpb24KQEAgLTExNTMsNyArMTE3MSw3IEBACiAgICBDYWxsZWQgYnkgOmZ1bmM6YHN0cihvYmplY3QpIDxzdHI+YCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucwogICAgOmZ1bmM6YGZvcm1hdGAgYW5kIDpmdW5jOmBwcmludGAgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkKICAgIHByaW50YWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEKLSAgIDpyZWY6YHN0cmluZyA8dHlwZXNzZXE+YCBvYmplY3QuCisgICA6cmVmOmBzdHJpbmcgPHRleHRzZXE+YCBvYmplY3QuCiAKICAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSA6bWV0aDpgb2JqZWN0Ll9fcmVwcl9fYCBpbiB0aGF0IHRoZXJlIGlzIG5vCiAgICBleHBlY3RhdGlvbiB0aGF0IDptZXRoOmBfX3N0cl9fYCByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlCkBAIC0xMTcyLDE0ICsxMTkwLDE0IEBACiAgICBDYWxsZWQgYnkgOmZ1bmM6YGJ5dGVzYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4KICAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC4KIAorICAgLi4gaW5kZXg6OgorICAgICAgc2luZ2xlOiBzdHJpbmc7IF9fZm9ybWF0X18oKSAob2JqZWN0IG1ldGhvZCkKKyAgICAgIHBhaXI6IHN0cmluZzsgY29udmVyc2lvbgorICAgICAgYnVpbHRpbjogcHJpbnQKKwogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYykKIAotICAgLi4gaW5kZXg6OgotICAgICAgcGFpcjogc3RyaW5nOyBjb252ZXJzaW9uCi0gICAgICBidWlsdGluOiBzdHIKLSAgICAgIGJ1aWx0aW46IHByaW50Ci0KICAgIENhbGxlZCBieSB0aGUgOmZ1bmM6YGZvcm1hdGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZQogICAgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBvZiBjbGFzcyA6Y2xhc3M6YHN0cmApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIgogICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcwpAQCAtMTI1OCwxMCArMTI3NiwxMCBAQAogICAgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0J3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoCiAgICBidWNrZXQpLgogCi0KICAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgOm1ldGg6YF9fZXFfX2AgYW5kIDptZXRoOmBfX2hhc2hfX2AgbWV0aG9kcwogICAgYnkgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoIHRoZW1zZWx2ZXMpCi0gICBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGBgaWQoeClgYC4KKyAgIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaCB0aGF0IGBgeCA9PSB5YGAKKyAgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PSBoYXNoKHkpYGAuCiAKICAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgOm1ldGg6YF9fZXFfX2AgYW5kIGRvZXMgbm90IGRlZmluZSA6bWV0aDpgX19oYXNoX19gCiAgICB3aWxsIGhhdmUgaXRzIDptZXRoOmBfX2hhc2hfX2AgaW1wbGljaXRseSBzZXQgdG8gYGBOb25lYGAuICBXaGVuIHRoZQpAQCAtMTI4MCw3ICsxMjk4LDI3IEBACiAgICBhIDpleGM6YFR5cGVFcnJvcmAgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhcyBoYXNoYWJsZSBieQogICAgYW4gYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgY2FsbC4KIAotICAgU2VlIGFsc28gdGhlIDpvcHRpb246YC1SYCBjb21tYW5kLWxpbmUgb3B0aW9uLgorCisgICAuLiBub3RlOjoKKworICAgICAgQnkgZGVmYXVsdCwgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lCisgICAgICBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLiAgQWx0aG91Z2ggdGhleQorICAgICAgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZSBub3QKKyAgICAgIHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorCisgICAgICBUaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLW9mLXNlcnZpY2UgY2F1c2VkCisgICAgICBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYQorICAgICAgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCisgICAgICBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yIGRldGFpbHMuCisKKyAgICAgIENoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZiBkaWN0cywgc2V0cyBhbmQKKyAgICAgIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXMgYWJvdXQgdGhpcyBvcmRlcmluZworICAgICAgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgYnVpbGRzKS4KKworICAgICAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19ib29sX18oc2VsZikKQEAgLTEzNjEsNyArMTM5OSw4IEBACiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2Rpcl9fKHNlbGYpCiAKLSAgIENhbGxlZCB3aGVuIDpmdW5jOmBkaXJgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiAgQSBsaXN0IG11c3QgYmUgcmV0dXJuZWQuCisgICBDYWxsZWQgd2hlbiA6ZnVuYzpgZGlyYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlCisgICByZXR1cm5lZC4gOmZ1bmM6YGRpcmAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmQgc29ydHMgaXQuCiAKIAogLi4gX2Rlc2NyaXB0b3JzOgpAQCAtMTUzMiw1MyArMTU3MSwxMTUgQEAKIEN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIEEgY2xhc3MgZGVmaW5pdGlvbiBpcwotcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGUKLXJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuCitCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIFRoZSBjbGFzcyBib2R5IGlzCitleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlCityZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuCiAKLVdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQKLWlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZSBjYWxsYWJsZSBnaXZlbiB3aWxsIGJlCi1jYWxsZWQgaW5zdGVhZCBvZiA6ZnVuYzpgdHlwZWAuICBJZiBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkLCB0aGV5Ci13aWxsIGFsc28gYmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3MuICBUaGlzIGFsbG93cyBjbGFzc2VzIG9yIGZ1bmN0aW9ucyB0byBiZQotd3JpdHRlbiB3aGljaCBtb25pdG9yIG9yIGFsdGVyIHRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzOgorVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGUgYGBtZXRhY2xhc3NgYAora2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieSBpbmhlcml0aW5nIGZyb20gYW4KK2V4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLAorYm90aCBgYE15Q2xhc3NgYCBhbmQgYGBNeVN1YmNsYXNzYGAgYXJlIGluc3RhbmNlcyBvZiBgYE1ldGFgYDo6CiAKLSogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLgorICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICBwYXNzCiAKLSogUmV0dXJuaW5nIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgY2xhc3MgLS0gZXNzZW50aWFsbHkgcGVyZm9ybWluZyB0aGUgcm9sZSBvZiBhCi0gIGZhY3RvcnkgZnVuY3Rpb24uCisgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICBwYXNzCiAKLVRoZXNlIHN0ZXBzIHdpbGwgaGF2ZSB0byBiZSBwZXJmb3JtZWQgaW4gdGhlIG1ldGFjbGFzcydzIDptZXRoOmBfX25ld19fYCBtZXRob2QKLS0tIDptZXRoOmB0eXBlLl9fbmV3X19gIGNhbiB0aGVuIGJlIGNhbGxlZCBmcm9tIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIGNsYXNzCi13aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgVGhpcyBleGFtcGxlIGFkZHMgYSBuZXcgZWxlbWVudCB0byB0aGUgY2xhc3MKLWRpY3Rpb25hcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjbGFzczo6CisgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOgorICAgICAgIHBhc3MKIAotICBjbGFzcyBtZXRhY2xzKHR5cGUpOgotICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6Ci0gICAgICAgICAgZGljdFsnZm9vJ10gPSAnbWV0YWNscyB3YXMgaGVyZScKLSAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpCitBbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZQorcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy4KIAotWW91IGNhbiBvZiBjb3Vyc2UgYWxzbyBvdmVycmlkZSBvdGhlciBjbGFzcyBtZXRob2RzIChvciBhZGQgbmV3IG1ldGhvZHMpOyBmb3IKLWV4YW1wbGUgZGVmaW5pbmcgYSBjdXN0b20gOm1ldGg6YF9fY2FsbF9fYCBtZXRob2QgaW4gdGhlIG1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tCi1iZWhhdmlvciB3aGVuIHRoZSBjbGFzcyBpcyBjYWxsZWQsIGUuZy4gbm90IGFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS4KK1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOgogCi1JZiB0aGUgbWV0YWNsYXNzIGhhcyBhIDptZXRoOmBfX3ByZXBhcmVfX2AgYXR0cmlidXRlICh1c3VhbGx5IGltcGxlbWVudGVkIGFzIGEKLWNsYXNzIG9yIHN0YXRpYyBtZXRob2QpLCBpdCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBjbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoCi10aGUgbmFtZSBvZiB0aGUgY2xhc3MgYW5kIGEgdHVwbGUgb2YgaXRzIGJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuCi1hbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgbWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlCi1uYW1lc3BhY2Ugb2YgdGhlIGNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLAotZm9yIGV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWQgaW4gYnkKLXJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuCisqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZAorKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkCisqIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkCisqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZAogCi1UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBwcmVjZWRlbmNlIHJ1bGVzOgorRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdCBpcyB1c2VkLgorVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXMgZm9sbG93czoKIAotKiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBiYXNlIGNsYXNzLCBpdHMgbWV0YWNsYXNzIGlzIHVzZWQuCisqIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuIDpmdW5jOmB0eXBlYCBpcyB1c2VkCisqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2YKKyAgOmZ1bmM6YHR5cGVgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzcworKiBpZiBhbiBpbnN0YW5jZSBvZiA6ZnVuYzpgdHlwZWAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3IKKyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZAogCi0qIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgbWV0YWNsYXNzICg6Y2xhc3M6YHR5cGVgKSBpcyB1c2VkLgorVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQKK21ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuIGBgdHlwZShjbHMpYGApIG9mIGFsbCBzcGVjaWZpZWQKK2Jhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGEgc3VidHlwZSBvZiAqYWxsKgorb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMKK3RoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIHdpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuCisKKworUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2UKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK09uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKK2lzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZAorYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlCithZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuCisKK0lmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQoraXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgOmZ1bmM6YGRpY3RgIGluc3RhbmNlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzExNWAgLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMAorICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rCisKKworRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzCitgYGV4ZWMoYm9keSwgZ2xvYmFscygpLCBuYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsCitjYWxsIHRvIDpmdW5jOmBleGVjYCBpcyB0aGF0IGxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZworYW55IG1ldGhvZHMpIHRvIHJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUKK2NsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLgorCitIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sIG1ldGhvZHMKK2RlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlIGNsYXNzIHNjb3BlLgorQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yCitjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbCBmcm9tIHN0YXRpYyBtZXRob2RzLgorCisKK0NyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3QKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzIGJvZHksCit0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZworYGBtZXRhY2xhc3MobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKWBgICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcworcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lIGFzIHRob3NlIHBhc3NlZCB0byBgYF9fcHJlcGFyZV9fYGApLgorCitUaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLWFyZ3VtZW50Citmb3JtIG9mIDpmdW5jOmBzdXBlcmAuIGBgX19jbGFzc19fYGAgaXMgYW4gaW1wbGljaXQgY2xvc3VyZSByZWZlcmVuY2UKK2NyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlciB0byBlaXRoZXIKK2BgX19jbGFzc19fYGAgb3IgYGBzdXBlcmBgLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtIG9mCis6ZnVuYzpgc3VwZXJgIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvbgorbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZQorY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgbWV0aG9kLgorCitBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3MgZGVjb3JhdG9ycworaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIGJvdW5kCitpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzEzNWAgLSBOZXcgc3VwZXIKKyAgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlIHJlZmVyZW5jZQorCisKK01ldGFjbGFzcyBleGFtcGxlCiteXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlIGJlZW4KLWV4cGxvcmVkIGluY2x1ZGluZyBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpYyBkZWxlZ2F0aW9uLCBhdXRvbWF0aWMKK2V4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWMgZGVsZWdhdGlvbiwgYXV0b21hdGljCiBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kIGF1dG9tYXRpYyByZXNvdXJjZQogbG9ja2luZy9zeW5jaHJvbml6YXRpb24uCiAKQEAgLTE1OTEsOSArMTY5Miw5IEBACiAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6CiAgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogCi0gICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOgotICAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QoY2xhc3NkaWN0KSkKLSAgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUoY2xhc3NkaWN0KQorICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOgorICAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSkKKyAgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKToKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0IGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKaW5kZXggNjhkZTNjOC4uZjg4NzA5ZSAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKQEAgLTMxOCw5ICszMTgsMTAgQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgeWllbGRfYXRvbTogIigiIGB5aWVsZF9leHByZXNzaW9uYCAiKSIKLSAgIHlpZWxkX2V4cHJlc3Npb246ICJ5aWVsZCIgW2BleHByZXNzaW9uX2xpc3RgXQorICAgeWllbGRfZXhwcmVzc2lvbjogInlpZWxkIiBbYGV4cHJlc3Npb25fbGlzdGAgfCAiZnJvbSIgYGV4cHJlc3Npb25gXQogCi1UaGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLAorVGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIDp0ZXJtOmBnZW5lcmF0b3JgCitmdW5jdGlvbiwKIGFuZCBjYW4gb25seSBiZSB1c2VkIGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFVzaW5nIGEKIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byBjYXVzZSB0aGF0CiBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbm9ybWFsIGZ1bmN0aW9uLgpAQCAtMzM2LDcgKzMzNywxMCBAQAogdGhlIGdlbmVyYXRvcidzIG1ldGhvZHMsIHRoZSBmdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZQogOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIHdhcyBqdXN0IGFub3RoZXIgZXh0ZXJuYWwgY2FsbC4gIFRoZSB2YWx1ZSBvZiB0aGUKIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBhZnRlciByZXN1bWluZyBkZXBlbmRzIG9uIHRoZSBtZXRob2Qgd2hpY2ggcmVzdW1lZAotdGhlIGV4ZWN1dGlvbi4KK3RoZSBleGVjdXRpb24uIElmIDptZXRoOmBfX25leHRfX2AgaXMgdXNlZCAodHlwaWNhbGx5IHZpYSBlaXRoZXIgYQorOmtleXdvcmQ6YGZvcmAgb3IgdGhlIDpmdW5jOmBuZXh0YCBidWlsdGluKSB0aGVuIHRoZSByZXN1bHQgaXMgOmNvbnN0OmBOb25lYCwKK290aGVyd2lzZSwgaWYgOm1ldGg6YHNlbmRgIGlzIHVzZWQsIHRoZW4gdGhlIHJlc3VsdCB3aWxsIGJlIHRoZSB2YWx1ZSBwYXNzZWQKK2luIHRvIHRoYXQgbWV0aG9kLgogCiAuLiBpbmRleDo6IHNpbmdsZTogY29yb3V0aW5lCiAKQEAgLTM0NiwxMiArMzUwLDMyIEBACiB3aGVyZSBzaG91bGQgdGhlIGV4ZWN1dGlvbiBjb250aW51ZSBhZnRlciBpdCB5aWVsZHM7IHRoZSBjb250cm9sIGlzIGFsd2F5cwogdHJhbnNmZXJyZWQgdG8gdGhlIGdlbmVyYXRvcidzIGNhbGxlci4KIAotVGhlIDprZXl3b3JkOmB5aWVsZGAgc3RhdGVtZW50IGlzIGFsbG93ZWQgaW4gdGhlIDprZXl3b3JkOmB0cnlgIGNsYXVzZSBvZiBhCis6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIHRoZSA6a2V5d29yZDpgdHJ5YCBjbGF1c2Ugb2YgYQogOmtleXdvcmQ6YHRyeWAgLi4uICA6a2V5d29yZDpgZmluYWxseWAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QKIHJlc3VtZWQgYmVmb3JlIGl0IGlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZwogZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgOm1ldGg6YGNsb3NlYCBtZXRob2Qgd2lsbCBiZQogY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlcyB0byBleGVjdXRlLgogCitXaGVuIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCBpcyB1c2VkLCBpdCB0cmVhdHMgdGhlIHN1cHBsaWVkIGV4cHJlc3Npb24gYXMKK2Egc3ViaXRlcmF0b3IuIEFsbCB2YWx1ZXMgcHJvZHVjZWQgYnkgdGhhdCBzdWJpdGVyYXRvciBhcmUgcGFzc2VkIGRpcmVjdGx5Cit0byB0aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGdlbmVyYXRvcidzIG1ldGhvZHMuIEFueSB2YWx1ZXMgcGFzc2VkIGluIHdpdGgKKzptZXRoOmBzZW5kYCBhbmQgYW55IGV4Y2VwdGlvbnMgcGFzc2VkIGluIHdpdGggOm1ldGg6YHRocm93YCBhcmUgcGFzc2VkIHRvCit0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpZiBpdCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1ldGhvZHMuIElmIHRoaXMgaXMgbm90IHRoZQorY2FzZSwgdGhlbiA6bWV0aDpgc2VuZGAgd2lsbCByYWlzZSA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgb3IgOmV4YzpgVHlwZUVycm9yYCwKK3doaWxlIDptZXRoOmB0aHJvd2Agd2lsbCBqdXN0IHJhaXNlIHRoZSBwYXNzZWQgaW4gZXhjZXB0aW9uIGltbWVkaWF0ZWx5LgorCitXaGVuIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIGlzIGNvbXBsZXRlLCB0aGUgOmF0dHI6YH5TdG9wSXRlcmF0aW9uLnZhbHVlYAorYXR0cmlidXRlIG9mIHRoZSByYWlzZWQgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW5zdGFuY2UgYmVjb21lcyB0aGUgdmFsdWUgb2YKK3RoZSB5aWVsZCBleHByZXNzaW9uLiBJdCBjYW4gYmUgZWl0aGVyIHNldCBleHBsaWNpdGx5IHdoZW4gcmFpc2luZworOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIG9yIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgc3ViLWl0ZXJhdG9yIGlzIGEgZ2VuZXJhdG9yCisoYnkgcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgc3ViLWdlbmVyYXRvcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBgYHlpZWxkIGZyb20gPGV4cHI+YGAgdG8gZGVsZWdhdGUgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3IKKworVGhlIHBhcmVudGhlc2VzIGNhbiBiZSBvbWl0dGVkIHdoZW4gdGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBpcyB0aGUKK3NvbGUgZXhwcmVzc2lvbiBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50LgorCiAuLiBpbmRleDo6IG9iamVjdDogZ2VuZXJhdG9yCiAKIApAQCAtNDE1LDYgKzQzOSwxMiBAQAogICAgb3RoZXIgZXhjZXB0aW9uLCBpdCBpcyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuICA6bWV0aDpgY2xvc2VgIGRvZXMgbm90aGluZwogICAgaWYgdGhlIGdlbmVyYXRvciBoYXMgYWxyZWFkeSBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiBvciBub3JtYWwgZXhpdC4KIAorCisuLiBpbmRleDo6IHNpbmdsZTogeWllbGQ7IGV4YW1wbGVzCisKK0V4YW1wbGVzCiteXl5eXl5eXgorCiBIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGUgdGhhdCBkZW1vbnN0cmF0ZXMgdGhlIGJlaGF2aW9yIG9mIGdlbmVyYXRvcnMgYW5kCiBnZW5lcmF0b3IgZnVuY3Rpb25zOjoKIApAQCAtNDQyLDYgKzQ3Miw5IEBACiAgICA+Pj4gZ2VuZXJhdG9yLmNsb3NlKCkKICAgIERvbid0IGZvcmdldCB0byBjbGVhbiB1cCB3aGVuICdjbG9zZSgpJyBpcyBjYWxsZWQuCiAKK0ZvciBleGFtcGxlcyB1c2luZyBgYHlpZWxkIGZyb21gYCwgc2VlIDpyZWY6YHBlcC0zODBgIGluICJXaGF0J3MgTmV3IGluCitQeXRob24uIgorCiAKIC4uIHNlZWFsc286OgogCkBAIC00NTIsNiArNDg1LDEwIEBACiAgICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nIHRoZW0KICAgICAgIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy4KIAorICAgOnBlcDpgMDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIDp0b2tlbjpgeWllbGRfZnJvbWAgc3ludGF4LCBtYWtpbmcgZGVsZWdhdGlvbgorICAgICAgdG8gc3ViLWdlbmVyYXRvcnMgZWFzeS4KKwogCiAuLiBfcHJpbWFyaWVzOgogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYwMjM1ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMCwwICsxLDcwMyBAQAorCisuLiBfaW1wb3J0c3lzdGVtOgorCisqKioqKioqKioqKioqKioqKgorVGhlIGltcG9ydCBzeXN0ZW0KKyoqKioqKioqKioqKioqKioqCisKKy4uIGluZGV4Ojogc2luZ2xlOiBpbXBvcnQgbWFjaGluZXJ5CisKK1B5dGhvbiBjb2RlIGluIG9uZSA6dGVybTpgbW9kdWxlYCBnYWlucyBhY2Nlc3MgdG8gdGhlIGNvZGUgaW4gYW5vdGhlciBtb2R1bGUKK2J5IHRoZSBwcm9jZXNzIG9mIDp0ZXJtOmBpbXBvcnRpbmdgIGl0LiAgVGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBpcwordGhlIG1vc3QgY29tbW9uIHdheSBvZiBpbnZva2luZyB0aGUgaW1wb3J0IG1hY2hpbmVyeSwgYnV0IGl0IGlzIG5vdCB0aGUgb25seQord2F5LiAgRnVuY3Rpb25zIHN1Y2ggYXMgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBhbmQgYnVpbHQtaW4KKzpmdW5jOmBfX2ltcG9ydF9fYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGludm9rZSB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KKworVGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBjb21iaW5lcyB0d28gb3BlcmF0aW9uczsgaXQgc2VhcmNoZXMgZm9yIHRoZQorbmFtZWQgbW9kdWxlLCB0aGVuIGl0IGJpbmRzIHRoZSByZXN1bHRzIG9mIHRoYXQgc2VhcmNoIHRvIGEgbmFtZSBpbiB0aGUgbG9jYWwKK3Njb3BlLiAgVGhlIHNlYXJjaCBvcGVyYXRpb24gb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBpcyBkZWZpbmVkIGFzCithIGNhbGwgdG8gdGhlIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiwgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYXJndW1lbnRzLgorVGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdXNlZCB0byBwZXJmb3JtIHRoZSBuYW1lCitiaW5kaW5nIG9wZXJhdGlvbiBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LiAgU2VlIHRoZQorOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZvciB0aGUgZXhhY3QgZGV0YWlscyBvZiB0aGF0IG5hbWUgYmluZGluZworb3BlcmF0aW9uLgorCitBIGRpcmVjdCBjYWxsIHRvIDpmdW5jOmBfX2ltcG9ydF9fYCBwZXJmb3JtcyBvbmx5IHRoZSBtb2R1bGUgc2VhcmNoIGFuZCwgaWYKK2ZvdW5kLCB0aGUgbW9kdWxlIGNyZWF0aW9uIG9wZXJhdGlvbi4gIFdoaWxlIGNlcnRhaW4gc2lkZS1lZmZlY3RzIG1heSBvY2N1ciwKK3N1Y2ggYXMgdGhlIGltcG9ydGluZyBvZiBwYXJlbnQgcGFja2FnZXMsIGFuZCB0aGUgdXBkYXRpbmcgb2YgdmFyaW91cyBjYWNoZXMKKyhpbmNsdWRpbmcgOmRhdGE6YHN5cy5tb2R1bGVzYCksIG9ubHkgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBwZXJmb3JtcworYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uLgorCitXaGVuIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gIGFzIHBhcnQgb2YgYW4gaW1wb3J0IHN0YXRlbWVudCwgdGhlCitpbXBvcnQgc3lzdGVtIGZpcnN0IGNoZWNrcyB0aGUgbW9kdWxlIGdsb2JhbCBuYW1lc3BhY2UgZm9yIGEgZnVuY3Rpb24gYnkKK3RoYXQgbmFtZS4gSWYgaXQgaXMgbm90IGZvdW5kLCB0aGVuIHRoZSBzdGFuZGFyZCBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYAoraXMgY2FsbGVkLiBPdGhlciBtZWNoYW5pc21zIGZvciBpbnZva2luZyB0aGUgaW1wb3J0IHN5c3RlbSAoc3VjaCBhcworOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCkgZG8gbm90IHBlcmZvcm0gdGhpcyBjaGVjayBhbmQgd2lsbCBhbHdheXMKK3VzZSB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbS4KKworV2hlbiBhIG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgUHl0aG9uIHNlYXJjaGVzIGZvciB0aGUgbW9kdWxlIGFuZCBpZiBmb3VuZCwKK2l0IGNyZWF0ZXMgYSBtb2R1bGUgb2JqZWN0IFsjZm5tb11fLCBpbml0aWFsaXppbmcgaXQuICBJZiB0aGUgbmFtZWQgbW9kdWxlCitjYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCitzdHJhdGVnaWVzIHRvIHNlYXJjaCBmb3IgdGhlIG5hbWVkIG1vZHVsZSB3aGVuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzCitpbnZva2VkLiAgVGhlc2Ugc3RyYXRlZ2llcyBjYW4gYmUgbW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IHVzaW5nIHZhcmlvdXMgaG9va3MKK2Rlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbnMgYmVsb3cuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgaW1wb3J0IHN5c3RlbSBoYXMgYmVlbiB1cGRhdGVkIHRvIGZ1bGx5IGltcGxlbWVudCB0aGUgc2Vjb25kIHBoYXNlCisgICBvZiA6cGVwOmAzMDJgLiBUaGVyZSBpcyBubyBsb25nZXIgYW55IGltcGxpY2l0IGltcG9ydCBtYWNoaW5lcnkgLSB0aGUgZnVsbAorICAgaW1wb3J0IHN5c3RlbSBpcyBleHBvc2VkIHRocm91Z2ggOmRhdGE6YHN5cy5tZXRhX3BhdGhgLiBJbiBhZGRpdGlvbiwKKyAgIG5hdGl2ZSBuYW1lc3BhY2UgcGFja2FnZSBzdXBwb3J0IGhhcyBiZWVuIGltcGxlbWVudGVkIChzZWUgOnBlcDpgNDIwYCkuCisKKworOm1vZDpgaW1wb3J0bGliYAorPT09PT09PT09PT09PT09PQorCitUaGUgOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUgcHJvdmlkZXMgYSByaWNoIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKK2ltcG9ydCBzeXN0ZW0uICBGb3IgZXhhbXBsZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIHByb3ZpZGVzIGEKK3JlY29tbWVuZGVkLCBzaW1wbGVyIEFQSSB0aGFuIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmb3IgaW52b2tpbmcgdGhlCitpbXBvcnQgbWFjaGluZXJ5LiAgUmVmZXIgdG8gdGhlIDptb2Q6YGltcG9ydGxpYmAgbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvcgorYWRkaXRpb25hbCBkZXRhaWwuCisKKworCitQYWNrYWdlcworPT09PT09PT0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogcGFja2FnZQorCitQeXRob24gaGFzIG9ubHkgb25lIHR5cGUgb2YgbW9kdWxlIG9iamVjdCwgYW5kIGFsbCBtb2R1bGVzIGFyZSBvZiB0aGlzIHR5cGUsCityZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIEMsIG9yIHNvbWV0aGluZworZWxzZS4gIFRvIGhlbHAgb3JnYW5pemUgbW9kdWxlcyBhbmQgcHJvdmlkZSBhIG5hbWluZyBoaWVyYXJjaHksIFB5dGhvbiBoYXMgYQorY29uY2VwdCBvZiA6dGVybTpgcGFja2FnZXMgPHBhY2thZ2U+YC4KKworWW91IGNhbiB0aGluayBvZiBwYWNrYWdlcyBhcyB0aGUgZGlyZWN0b3JpZXMgb24gYSBmaWxlIHN5c3RlbSBhbmQgbW9kdWxlcyBhcworZmlsZXMgd2l0aGluIGRpcmVjdG9yaWVzLCBidXQgZG9uJ3QgdGFrZSB0aGlzIGFuYWxvZ3kgdG9vIGxpdGVyYWxseSBzaW5jZQorcGFja2FnZXMgYW5kIG1vZHVsZXMgbmVlZCBub3Qgb3JpZ2luYXRlIGZyb20gdGhlIGZpbGUgc3lzdGVtLiAgRm9yIHRoZQorcHVycG9zZXMgb2YgdGhpcyBkb2N1bWVudGF0aW9uLCB3ZSdsbCB1c2UgdGhpcyBjb252ZW5pZW50IGFuYWxvZ3kgb2YKK2RpcmVjdG9yaWVzIGFuZCBmaWxlcy4gIExpa2UgZmlsZSBzeXN0ZW0gZGlyZWN0b3JpZXMsIHBhY2thZ2VzIGFyZSBvcmdhbml6ZWQKK2hpZXJhcmNoaWNhbGx5LCBhbmQgcGFja2FnZXMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBzdWJwYWNrYWdlcywgYXMgd2VsbCBhcworcmVndWxhciBtb2R1bGVzLgorCitJdCdzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgdGhhdCBhbGwgcGFja2FnZXMgYXJlIG1vZHVsZXMsIGJ1dCBub3QgYWxsCittb2R1bGVzIGFyZSBwYWNrYWdlcy4gIE9yIHB1dCBhbm90aGVyIHdheSwgcGFja2FnZXMgYXJlIGp1c3QgYSBzcGVjaWFsIGtpbmQgb2YKK21vZHVsZS4gIFNwZWNpZmljYWxseSwgYW55IG1vZHVsZSB0aGF0IGNvbnRhaW5zIGEgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBpcworY29uc2lkZXJlZCBhIHBhY2thZ2UuCisKK0FsbCBtb2R1bGVzIGhhdmUgYSBuYW1lLiAgU3VicGFja2FnZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGZyb20gdGhlaXIgcGFyZW50CitwYWNrYWdlIG5hbWUgYnkgZG90cywgYWtpbiB0byBQeXRob24ncyBzdGFuZGFyZCBhdHRyaWJ1dGUgYWNjZXNzIHN5bnRheC4gIFRodXMKK3lvdSBtaWdodCBoYXZlIGEgbW9kdWxlIGNhbGxlZCA6bW9kOmBzeXNgIGFuZCBhIHBhY2thZ2UgY2FsbGVkIDptb2Q6YGVtYWlsYCwKK3doaWNoIGluIHR1cm4gaGFzIGEgc3VicGFja2FnZSBjYWxsZWQgOm1vZDpgZW1haWwubWltZWAgYW5kIGEgbW9kdWxlIHdpdGhpbgordGhhdCBzdWJwYWNrYWdlIGNhbGxlZCA6bW9kOmBlbWFpbC5taW1lLnRleHRgLgorCisKK1JlZ3VsYXIgcGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHBhaXI6IHBhY2thZ2U7IHJlZ3VsYXIKKworUHl0aG9uIGRlZmluZXMgdHdvIHR5cGVzIG9mIHBhY2thZ2VzLCA6dGVybTpgcmVndWxhciBwYWNrYWdlcyA8cmVndWxhcgorcGFja2FnZT5gIGFuZCA6dGVybTpgbmFtZXNwYWNlIHBhY2thZ2VzIDxuYW1lc3BhY2UgcGFja2FnZT5gLiAgUmVndWxhcgorcGFja2FnZXMgYXJlIHRyYWRpdGlvbmFsIHBhY2thZ2VzIGFzIHRoZXkgZXhpc3RlZCBpbiBQeXRob24gMy4yIGFuZCBlYXJsaWVyLgorQSByZWd1bGFyIHBhY2thZ2UgaXMgdHlwaWNhbGx5IGltcGxlbWVudGVkIGFzIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW4KK2BgX19pbml0X18ucHlgYCBmaWxlLiAgV2hlbiBhIHJlZ3VsYXIgcGFja2FnZSBpcyBpbXBvcnRlZCwgdGhpcworYGBfX2luaXRfXy5weWBgIGZpbGUgaXMgaW1wbGljaXRseSBleGVjdXRlZCwgYW5kIHRoZSBvYmplY3RzIGl0IGRlZmluZXMgYXJlCitib3VuZCB0byBuYW1lcyBpbiB0aGUgcGFja2FnZSdzIG5hbWVzcGFjZS4gIFRoZSBgYF9faW5pdF9fLnB5YGAgZmlsZSBjYW4KK2NvbnRhaW4gdGhlIHNhbWUgUHl0aG9uIGNvZGUgdGhhdCBhbnkgb3RoZXIgbW9kdWxlIGNhbiBjb250YWluLCBhbmQgUHl0aG9uCit3aWxsIGFkZCBzb21lIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0byB0aGUgbW9kdWxlIHdoZW4gaXQgaXMgaW1wb3J0ZWQuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGZpbGUgc3lzdGVtIGxheW91dCBkZWZpbmVzIGEgdG9wIGxldmVsIGBgcGFyZW50YGAKK3BhY2thZ2Ugd2l0aCB0aHJlZSBzdWJwYWNrYWdlczo6CisKKyAgICBwYXJlbnQvCisgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIG9uZS8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIHR3by8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisgICAgICAgIHRocmVlLworICAgICAgICAgICAgX19pbml0X18ucHkKKworSW1wb3J0aW5nIGBgcGFyZW50Lm9uZWBgIHdpbGwgaW1wbGljaXRseSBleGVjdXRlIGBgcGFyZW50L19faW5pdF9fLnB5YGAgYW5kCitgYHBhcmVudC9vbmUvX19pbml0X18ucHlgYC4gIFN1YnNlcXVlbnQgaW1wb3J0cyBvZiBgYHBhcmVudC50d29gYCBvcgorYGBwYXJlbnQudGhyZWVgYCB3aWxsIGV4ZWN1dGUgYGBwYXJlbnQvdHdvL19faW5pdF9fLnB5YGAgYW5kCitgYHBhcmVudC90aHJlZS9fX2luaXRfXy5weWBgIHJlc3BlY3RpdmVseS4KKworCitOYW1lc3BhY2UgcGFja2FnZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgcGFpcjo6IHBhY2thZ2U7IG5hbWVzcGFjZQorICAgIHBhaXI6OiBwYWNrYWdlOyBwb3J0aW9uCisKK0EgbmFtZXNwYWNlIHBhY2thZ2UgaXMgYSBjb21wb3NpdGUgb2YgdmFyaW91cyA6dGVybTpgcG9ydGlvbnMgPHBvcnRpb24+YCwKK3doZXJlIGVhY2ggcG9ydGlvbiBjb250cmlidXRlcyBhIHN1YnBhY2thZ2UgdG8gdGhlIHBhcmVudCBwYWNrYWdlLiAgUG9ydGlvbnMKK21heSByZXNpZGUgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyBvbiB0aGUgZmlsZSBzeXN0ZW0uICBQb3J0aW9ucyBtYXkgYWxzbyBiZQorZm91bmQgaW4gemlwIGZpbGVzLCBvbiB0aGUgbmV0d29yaywgb3IgYW55d2hlcmUgZWxzZSB0aGF0IFB5dGhvbiBzZWFyY2hlcworZHVyaW5nIGltcG9ydC4gIE5hbWVzcGFjZSBwYWNrYWdlcyBtYXkgb3IgbWF5IG5vdCBjb3JyZXNwb25kIGRpcmVjdGx5IHRvCitvYmplY3RzIG9uIHRoZSBmaWxlIHN5c3RlbTsgdGhleSBtYXkgYmUgdmlydHVhbCBtb2R1bGVzIHRoYXQgaGF2ZSBubyBjb25jcmV0ZQorcmVwcmVzZW50YXRpb24uCisKK05hbWVzcGFjZSBwYWNrYWdlcyBkbyBub3QgdXNlIGFuIG9yZGluYXJ5IGxpc3QgZm9yIHRoZWlyIGBgX19wYXRoX19gYAorYXR0cmlidXRlLiBUaGV5IGluc3RlYWQgdXNlIGEgY3VzdG9tIGl0ZXJhYmxlIHR5cGUgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5CitwZXJmb3JtIGEgbmV3IHNlYXJjaCBmb3IgcGFja2FnZSBwb3J0aW9ucyBvbiB0aGUgbmV4dCBpbXBvcnQgYXR0ZW1wdCB3aXRoaW4KK3RoYXQgcGFja2FnZSBpZiB0aGUgcGF0aCBvZiB0aGVpciBwYXJlbnQgcGFja2FnZSAob3IgOmRhdGE6YHN5cy5wYXRoYCBmb3IgYQordG9wIGxldmVsIHBhY2thZ2UpIGNoYW5nZXMuCisKK1dpdGggbmFtZXNwYWNlIHBhY2thZ2VzLCB0aGVyZSBpcyBubyBgYHBhcmVudC9fX2luaXRfXy5weWBgIGZpbGUuICBJbiBmYWN0LAordGhlcmUgbWF5IGJlIG11bHRpcGxlIGBgcGFyZW50YGAgZGlyZWN0b3JpZXMgZm91bmQgZHVyaW5nIGltcG9ydCBzZWFyY2gsIHdoZXJlCitlYWNoIG9uZSBpcyBwcm92aWRlZCBieSBhIGRpZmZlcmVudCBwb3J0aW9uLiAgVGh1cyBgYHBhcmVudC9vbmVgYCBtYXkgbm90IGJlCitwaHlzaWNhbGx5IGxvY2F0ZWQgbmV4dCB0byBgYHBhcmVudC90d29gYC4gIEluIHRoaXMgY2FzZSwgUHl0aG9uIHdpbGwgY3JlYXRlIGEKK25hbWVzcGFjZSBwYWNrYWdlIGZvciB0aGUgdG9wLWxldmVsIGBgcGFyZW50YGAgcGFja2FnZSB3aGVuZXZlciBpdCBvciBvbmUgb2YKK2l0cyBzdWJwYWNrYWdlcyBpcyBpbXBvcnRlZC4KKworU2VlIGFsc28gOnBlcDpgNDIwYCBmb3IgdGhlIG5hbWVzcGFjZSBwYWNrYWdlIHNwZWNpZmljYXRpb24uCisKKworU2VhcmNoaW5nCis9PT09PT09PT0KKworVG8gYmVnaW4gdGhlIHNlYXJjaCwgUHl0aG9uIG5lZWRzIHRoZSA6dGVybTpgZnVsbHkgcXVhbGlmaWVkIDxxdWFsaWZpZWQgbmFtZT5gCituYW1lIG9mIHRoZSBtb2R1bGUgKG9yIHBhY2thZ2UsIGJ1dCBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGlzY3Vzc2lvbiwgdGhlCitkaWZmZXJlbmNlIGlzIGltbWF0ZXJpYWwpIGJlaW5nIGltcG9ydGVkLiAgVGhpcyBuYW1lIG1heSBjb21lIGZyb20gdmFyaW91cworYXJndW1lbnRzIHRvIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIG9yIGZyb20gdGhlIHBhcmFtZXRlcnMgdG8gdGhlCis6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIG9yIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbnMuCisKK1RoaXMgbmFtZSB3aWxsIGJlIHVzZWQgaW4gdmFyaW91cyBwaGFzZXMgb2YgdGhlIGltcG9ydCBzZWFyY2gsIGFuZCBpdCBtYXkgYmUKK3RoZSBkb3R0ZWQgcGF0aCB0byBhIHN1Ym1vZHVsZSwgZS5nLiBgYGZvby5iYXIuYmF6YGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbgorZmlyc3QgdHJpZXMgdG8gaW1wb3J0IGBgZm9vYGAsIHRoZW4gYGBmb28uYmFyYGAsIGFuZCBmaW5hbGx5IGBgZm9vLmJhci5iYXpgYC4KK0lmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCitUaGUgbW9kdWxlIGNhY2hlCistLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5tb2R1bGVzCisKK1RoZSBmaXJzdCBwbGFjZSBjaGVja2VkIGR1cmluZyBpbXBvcnQgc2VhcmNoIGlzIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGlzCittYXBwaW5nIHNlcnZlcyBhcyBhIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgaW1wb3J0ZWQsCitpbmNsdWRpbmcgdGhlIGludGVybWVkaWF0ZSBwYXRocy4gIFNvIGlmIGBgZm9vLmJhci5iYXpgYCB3YXMgcHJldmlvdXNseQoraW1wb3J0ZWQsIDpkYXRhOmBzeXMubW9kdWxlc2Agd2lsbCBjb250YWluIGVudHJpZXMgZm9yIGBgZm9vYGAsIGBgZm9vLmJhcmBgLAorYW5kIGBgZm9vLmJhci5iYXpgYC4gIEVhY2gga2V5IHdpbGwgaGF2ZSBhcyBpdHMgdmFsdWUgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlCitvYmplY3QuCisKK0R1cmluZyBpbXBvcnQsIHRoZSBtb2R1bGUgbmFtZSBpcyBsb29rZWQgdXAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBhbmQgaWYKK3ByZXNlbnQsIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIHRoZSBtb2R1bGUgc2F0aXNmeWluZyB0aGUgaW1wb3J0LCBhbmQgdGhlCitwcm9jZXNzIGNvbXBsZXRlcy4gIEhvd2V2ZXIsIGlmIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgdGhlbiBhbgorOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAorY29udGludWUgc2VhcmNoaW5nIGZvciB0aGUgbW9kdWxlLgorCis6ZGF0YTpgc3lzLm1vZHVsZXNgIGlzIHdyaXRhYmxlLiAgRGVsZXRpbmcgYSBrZXkgbWF5IG5vdCBkZXN0cm95IHRoZQorYXNzb2NpYXRlZCBtb2R1bGUgKGFzIG90aGVyIG1vZHVsZXMgbWF5IGhvbGQgcmVmZXJlbmNlcyB0byBpdCksCitidXQgaXQgd2lsbCBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgY2F1c2luZworUHl0aG9uIHRvIHNlYXJjaCBhbmV3IGZvciB0aGUgbmFtZWQgbW9kdWxlIHVwb24gaXRzIG5leHQKK2ltcG9ydC4gVGhlIGtleSBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBgYE5vbmVgYCwgZm9yY2luZyB0aGUgbmV4dCBpbXBvcnQKK29mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YEltcG9ydEVycm9yYC4KKworQmV3YXJlIHRob3VnaCwgYXMgaWYgeW91IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsCitpbnZhbGlkYXRlIGl0cyBjYWNoZSBlbnRyeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBhbmQgdGhlbiByZS1pbXBvcnQgdGhlCituYW1lZCBtb2R1bGUsIHRoZSB0d28gbW9kdWxlIG9iamVjdHMgd2lsbCAqbm90KiBiZSB0aGUgc2FtZS4gQnkgY29udHJhc3QsCis6ZnVuYzpgaW1wLnJlbG9hZGAgd2lsbCByZXVzZSB0aGUgKnNhbWUqIG1vZHVsZSBvYmplY3QsIGFuZCBzaW1wbHkKK3JlaW5pdGlhbGlzZSB0aGUgbW9kdWxlIGNvbnRlbnRzIGJ5IHJlcnVubmluZyB0aGUgbW9kdWxlJ3MgY29kZS4KKworCitGaW5kZXJzIGFuZCBsb2FkZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IGZpbmRlcgorICAgIHNpbmdsZTogbG9hZGVyCisKK0lmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZW4gUHl0aG9uJ3MgaW1wb3J0Citwcm90b2NvbCBpcyBpbnZva2VkIHRvIGZpbmQgYW5kIGxvYWQgdGhlIG1vZHVsZS4gIFRoaXMgcHJvdG9jb2wgY29uc2lzdHMgb2YKK3R3byBjb25jZXB0dWFsIG9iamVjdHMsIDp0ZXJtOmBmaW5kZXJzIDxmaW5kZXI+YCBhbmQgOnRlcm06YGxvYWRlcnMgPGxvYWRlcj5gLgorQSBmaW5kZXIncyBqb2IgaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgY2FuIGZpbmQgdGhlIG5hbWVkIG1vZHVsZSB1c2luZword2hhdGV2ZXIgc3RyYXRlZ3kgaXQga25vd3MgYWJvdXQuIE9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYm90aCBvZiB0aGVzZQoraW50ZXJmYWNlcyBhcmUgcmVmZXJyZWQgdG8gYXMgOnRlcm06YGltcG9ydGVycyA8aW1wb3J0ZXI+YCAtIHRoZXkgcmV0dXJuCit0aGVtc2VsdmVzIHdoZW4gdGhleSBmaW5kIHRoYXQgdGhleSBjYW4gbG9hZCB0aGUgcmVxdWVzdGVkIG1vZHVsZS4KKworUHl0aG9uIGluY2x1ZGVzIGEgbnVtYmVyIG9mIGRlZmF1bHQgZmluZGVycyBhbmQgaW1wb3J0ZXJzLiAgVGhlIGZpcnN0IG9uZQora25vd3MgaG93IHRvIGxvY2F0ZSBidWlsdC1pbiBtb2R1bGVzLCBhbmQgdGhlIHNlY29uZCBrbm93cyBob3cgdG8gbG9jYXRlCitmcm96ZW4gbW9kdWxlcy4gIEEgdGhpcmQgZGVmYXVsdCBmaW5kZXIgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYAorZm9yIG1vZHVsZXMuICBUaGUgOnRlcm06YGltcG9ydCBwYXRoYCBpcyBhIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgbWF5CituYW1lIGZpbGUgc3lzdGVtIHBhdGhzIG9yIHppcCBmaWxlcy4gIEl0IGNhbiBhbHNvIGJlIGV4dGVuZGVkIHRvIHNlYXJjaAorZm9yIGFueSBsb2NhdGFibGUgcmVzb3VyY2UsIHN1Y2ggYXMgdGhvc2UgaWRlbnRpZmllZCBieSBVUkxzLgorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBpcyBleHRlbnNpYmxlLCBzbyBuZXcgZmluZGVycyBjYW4gYmUgYWRkZWQgdG8gZXh0ZW5kIHRoZQorcmFuZ2UgYW5kIHNjb3BlIG9mIG1vZHVsZSBzZWFyY2hpbmcuCisKK0ZpbmRlcnMgZG8gbm90IGFjdHVhbGx5IGxvYWQgbW9kdWxlcy4gIElmIHRoZXkgY2FuIGZpbmQgdGhlIG5hbWVkIG1vZHVsZSwgdGhleQorcmV0dXJuIGEgOnRlcm06YGxvYWRlcmAsIHdoaWNoIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHRoZW4gaW52b2tlcyB0byBsb2FkIHRoZQorbW9kdWxlIGFuZCBjcmVhdGUgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdC4KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgcHJvdG9jb2wgZm9yIGZpbmRlcnMgYW5kIGxvYWRlcnMgaW4gbW9yZQorZGV0YWlsLCBpbmNsdWRpbmcgaG93IHlvdSBjYW4gY3JlYXRlIGFuZCByZWdpc3RlciBuZXcgb25lcyB0byBleHRlbmQgdGhlCitpbXBvcnQgbWFjaGluZXJ5LgorCisKK0ltcG9ydCBob29rcworLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogaW1wb3J0IGhvb2tzCisgICBzaW5nbGU6IG1ldGEgaG9va3MKKyAgIHNpbmdsZTogcGF0aCBob29rcworICAgcGFpcjogaG9va3M7IGltcG9ydAorICAgcGFpcjogaG9va3M7IG1ldGEKKyAgIHBhaXI6IGhvb2tzOyBwYXRoCisKK1RoZSBpbXBvcnQgbWFjaGluZXJ5IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGU7IHRoZSBwcmltYXJ5IG1lY2hhbmlzbSBmb3IKK3RoaXMgYXJlIHRoZSAqaW1wb3J0IGhvb2tzKi4gIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW1wb3J0IGhvb2tzOiAqbWV0YQoraG9va3MqIGFuZCAqaW1wb3J0IHBhdGggaG9va3MqLgorCitNZXRhIGhvb2tzIGFyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGltcG9ydCBwcm9jZXNzaW5nLCBiZWZvcmUgYW55IG90aGVyCitpbXBvcnQgcHJvY2Vzc2luZyBoYXMgb2NjdXJyZWQsIG90aGVyIHRoYW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBjYWNoZSBsb29rIHVwLgorVGhpcyBhbGxvd3MgbWV0YSBob29rcyB0byBvdmVycmlkZSA6ZGF0YTpgc3lzLnBhdGhgIHByb2Nlc3NpbmcsIGZyb3plbgorbW9kdWxlcywgb3IgZXZlbiBidWlsdC1pbiBtb2R1bGVzLiAgTWV0YSBob29rcyBhcmUgcmVnaXN0ZXJlZCBieSBhZGRpbmcgbmV3CitmaW5kZXIgb2JqZWN0cyB0byA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworSW1wb3J0IHBhdGggaG9va3MgYXJlIGNhbGxlZCBhcyBwYXJ0IG9mIDpkYXRhOmBzeXMucGF0aGAgKG9yCitgYHBhY2thZ2UuX19wYXRoX19gYCkgcHJvY2Vzc2luZywgYXQgdGhlIHBvaW50IHdoZXJlIHRoZWlyIGFzc29jaWF0ZWQgcGF0aAoraXRlbSBpcyBlbmNvdW50ZXJlZC4gIEltcG9ydCBwYXRoIGhvb2tzIGFyZSByZWdpc3RlcmVkIGJ5IGFkZGluZyBuZXcgY2FsbGFibGVzCit0byA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworCitUaGUgbWV0YSBwYXRoCistLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5tZXRhX3BhdGgKKyAgICBwYWlyOiBmaW5kZXI7IGZpbmRfbW9kdWxlCisgICAgcGFpcjogZmluZGVyOyBmaW5kX2xvYWRlcgorCitXaGVuIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIFB5dGhvbiBuZXh0CitzZWFyY2hlcyA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIHdoaWNoIGNvbnRhaW5zIGEgbGlzdCBvZiBtZXRhIHBhdGggZmluZGVyCitvYmplY3RzLiAgVGhlc2UgZmluZGVycyBhcmUgcXVlcmllZCBpbiBvcmRlciB0byBzZWUgaWYgdGhleSBrbm93IGhvdyB0byBoYW5kbGUKK3RoZSBuYW1lZCBtb2R1bGUuICBNZXRhIHBhdGggZmluZGVycyBtdXN0IGltcGxlbWVudCBhIG1ldGhvZCBjYWxsZWQKKzptZXRoOmBmaW5kX21vZHVsZSgpYCB3aGljaCB0YWtlcyB0d28gYXJndW1lbnRzLCBhIG5hbWUgYW5kIGFuIGltcG9ydCBwYXRoLgorVGhlIG1ldGEgcGF0aCBmaW5kZXIgY2FuIHVzZSBhbnkgc3RyYXRlZ3kgaXQgd2FudHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgY2FuCitoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSBvciBub3QuCisKK0lmIHRoZSBtZXRhIHBhdGggZmluZGVyIGtub3dzIGhvdyB0byBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBhCitsb2FkZXIgb2JqZWN0LiAgSWYgaXQgY2Fubm90IGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGBgTm9uZWBgLiAgSWYKKzpkYXRhOmBzeXMubWV0YV9wYXRoYCBwcm9jZXNzaW5nIHJlYWNoZXMgdGhlIGVuZCBvZiBpdHMgbGlzdCB3aXRob3V0IHJldHVybmluZworYSBsb2FkZXIsIHRoZW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zIHJhaXNlZAorYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCisKK1RoZSA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIG9mIG1ldGEgcGF0aCBmaW5kZXJzIGlzIGNhbGxlZCB3aXRoIHR3bworYXJndW1lbnRzLiAgVGhlIGZpcnN0IGlzIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nCitpbXBvcnRlZCwgZm9yIGV4YW1wbGUgYGBmb28uYmFyLmJhemBgLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgcGF0aAorZW50cmllcyB0byB1c2UgZm9yIHRoZSBtb2R1bGUgc2VhcmNoLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgc2Vjb25kCithcmd1bWVudCBpcyBgYE5vbmVgYCwgYnV0IGZvciBzdWJtb2R1bGVzIG9yIHN1YnBhY2thZ2VzLCB0aGUgc2Vjb25kCithcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmVudCBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4gSWYKK3RoZSBhcHByb3ByaWF0ZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGNhbm5vdCBiZSBhY2Nlc3NlZCwgYW4KKzpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisKK1RoZSBtZXRhIHBhdGggbWF5IGJlIHRyYXZlcnNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgYSBzaW5nbGUgaW1wb3J0IHJlcXVlc3QuCitGb3IgZXhhbXBsZSwgYXNzdW1pbmcgbm9uZSBvZiB0aGUgbW9kdWxlcyBpbnZvbHZlZCBoYXMgYWxyZWFkeSBiZWVuIGNhY2hlZCwKK2ltcG9ydGluZyBgYGZvby5iYXIuYmF6YGAgd2lsbCBmaXJzdCBwZXJmb3JtIGEgdG9wIGxldmVsIGltcG9ydCwgY2FsbGluZworYGBtcGYuZmluZF9tb2R1bGUoImZvbyIsIE5vbmUpYGAgb24gZWFjaCBtZXRhIHBhdGggZmluZGVyIChgYG1wZmBgKS4gQWZ0ZXIKK2BgZm9vYGAgaGFzIGJlZW4gaW1wb3J0ZWQsIGBgZm9vLmJhcmBgIHdpbGwgYmUgaW1wb3J0ZWQgYnkgdHJhdmVyc2luZyB0aGUKK21ldGEgcGF0aCBhIHNlY29uZCB0aW1lLCBjYWxsaW5nCitgYG1wZi5maW5kX21vZHVsZSgiZm9vLmJhciIsIGZvby5fX3BhdGhfXylgYC4gT25jZSBgYGZvby5iYXJgYCBoYXMgYmVlbgoraW1wb3J0ZWQsIHRoZSBmaW5hbCB0cmF2ZXJzYWwgd2lsbCBjYWxsCitgYG1wZi5maW5kX21vZHVsZSgiZm9vLmJhci5iYXoiLCBmb28uYmFyLl9fcGF0aF9fKWBgLgorCitTb21lIG1ldGEgcGF0aCBmaW5kZXJzIG9ubHkgc3VwcG9ydCB0b3AgbGV2ZWwgaW1wb3J0cy4gVGhlc2UgaW1wb3J0ZXJzIHdpbGwKK2Fsd2F5cyByZXR1cm4gYGBOb25lYGAgd2hlbiBhbnl0aGluZyBvdGhlciB0aGFuIGBgTm9uZWBgIGlzIHBhc3NlZCBhcyB0aGUKK3NlY29uZCBhcmd1bWVudC4KKworUHl0aG9uJ3MgZGVmYXVsdCA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgaGFzIHRocmVlIG1ldGEgcGF0aCBmaW5kZXJzLCBvbmUgdGhhdAora25vd3MgaG93IHRvIGltcG9ydCBidWlsdC1pbiBtb2R1bGVzLCBvbmUgdGhhdCBrbm93cyBob3cgdG8gaW1wb3J0IGZyb3plbgorbW9kdWxlcywgYW5kIG9uZSB0aGF0IGtub3dzIGhvdyB0byBpbXBvcnQgbW9kdWxlcyBmcm9tIGFuIDp0ZXJtOmBpbXBvcnQgcGF0aGAKKyhpLmUuIHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgKS4KKworCitMb2FkZXJzCis9PT09PT09CisKK0lmIGFuZCB3aGVuIGEgbW9kdWxlIGxvYWRlciBpcyBmb3VuZCBpdHMKKzptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIG1ldGhvZCBpcyBjYWxsZWQsIHdpdGggYSBzaW5nbGUKK2FyZ3VtZW50LCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZC4gIFRoaXMgbWV0aG9kCitoYXMgc2V2ZXJhbCByZXNwb25zaWJpbGl0aWVzLCBhbmQgc2hvdWxkIHJldHVybiB0aGUgbW9kdWxlIG9iamVjdCBpdCBoYXMKK2xvYWRlZCBbI2ZubG9dXy4gIElmIGl0IGNhbm5vdCBsb2FkIHRoZSBtb2R1bGUsIGl0IHNob3VsZCByYWlzZSBhbgorOmV4YzpgSW1wb3J0RXJyb3JgLCBhbHRob3VnaCBhbnkgb3RoZXIgZXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcKKzptZXRoOmBsb2FkX21vZHVsZSgpYCB3aWxsIGJlIHByb3BhZ2F0ZWQuCisKK0luIG1hbnkgY2FzZXMsIHRoZSBmaW5kZXIgYW5kIGxvYWRlciBjYW4gYmUgdGhlIHNhbWUgb2JqZWN0OyBpbiBzdWNoIGNhc2VzIHRoZQorOm1ldGg6YGZpbmRlci5maW5kX21vZHVsZSgpYCB3b3VsZCBqdXN0IHJldHVybiBgYHNlbGZgYC4KKworTG9hZGVycyBtdXN0IHNhdGlzZnkgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHM6CisKKyAqIElmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIG1vZHVsZSBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpbgorICAgOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGxvYWRlciBtdXN0IHVzZSB0aGF0IGV4aXN0aW5nIG1vZHVsZS4gIChPdGhlcndpc2UsCisgICA6ZnVuYzpgaW1wLnJlbG9hZGAgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuKSAgSWYgdGhlIG5hbWVkIG1vZHVsZSBkb2VzCisgICBub3QgZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGxvYWRlciBtdXN0IGNyZWF0ZSBhIG5ldyBtb2R1bGUKKyAgIG9iamVjdCBhbmQgYWRkIGl0IHRvIDpkYXRhOmBzeXMubW9kdWxlc2AuCisKKyAgIE5vdGUgdGhhdCB0aGUgbW9kdWxlICptdXN0KiBleGlzdCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGJlZm9yZSB0aGUgbG9hZGVyCisgICBleGVjdXRlcyB0aGUgbW9kdWxlIGNvZGUuICBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSB0aGUgbW9kdWxlIGNvZGUgbWF5CisgICAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgaW1wb3J0IGl0c2VsZjsgYWRkaW5nIGl0IHRvIDpkYXRhOmBzeXMubW9kdWxlc2AKKyAgIGJlZm9yZWhhbmQgcHJldmVudHMgdW5ib3VuZGVkIHJlY3Vyc2lvbiBpbiB0aGUgd29yc3QgY2FzZSBhbmQgbXVsdGlwbGUKKyAgIGxvYWRpbmcgaW4gdGhlIGJlc3QuCisKKyAgIElmIGxvYWRpbmcgZmFpbHMsIHRoZSBsb2FkZXIgbXVzdCByZW1vdmUgYW55IG1vZHVsZXMgaXQgaGFzIGluc2VydGVkIGludG8KKyAgIDpkYXRhOmBzeXMubW9kdWxlc2AsIGJ1dCBpdCBtdXN0IHJlbW92ZSAqKm9ubHkqKiB0aGUgZmFpbGluZyBtb2R1bGUsIGFuZAorICAgb25seSBpZiB0aGUgbG9hZGVyIGl0c2VsZiBoYXMgbG9hZGVkIGl0IGV4cGxpY2l0bHkuICBBbnkgbW9kdWxlIGFscmVhZHkgaW4KKyAgIHRoZSA6ZGF0YTpgc3lzLm1vZHVsZXNgIGNhY2hlLCBhbmQgYW55IG1vZHVsZSB0aGF0IHdhcyBzdWNjZXNzZnVsbHkgbG9hZGVkCisgICBhcyBhIHNpZGUtZWZmZWN0LCBtdXN0IHJlbWFpbiBpbiB0aGUgY2FjaGUuCisKKyAqIFRoZSBsb2FkZXIgbWF5IHNldCB0aGUgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlLiAgSWYgc2V0LCB0aGlzCisgICBhdHRyaWJ1dGUncyB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLiAgVGhlIGxvYWRlciBtYXkgb3B0IHRvIGxlYXZlCisgICBgYF9fZmlsZV9fYGAgdW5zZXQgaWYgaXQgaGFzIG5vIHNlbWFudGljIG1lYW5pbmcgKGUuZy4gYSBtb2R1bGUgbG9hZGVkIGZyb20KKyAgIGEgZGF0YWJhc2UpLgorCisgKiBUaGUgbG9hZGVyIG1heSBzZXQgdGhlIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUgb2YgdGhlIG1vZHVsZS4gIFdoaWxlIG5vdAorICAgcmVxdWlyZWQsIHNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHNvIHRoYXQgdGhlCisgICA6bWV0aDpgcmVwcigpYCBvZiB0aGUgbW9kdWxlIGlzIG1vcmUgaW5mb3JtYXRpdmUuCisKKyAqIElmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIChlaXRoZXIgcmVndWxhciBvciBuYW1lc3BhY2UpLCB0aGUgbG9hZGVyIG11c3QKKyAgIHNldCB0aGUgbW9kdWxlIG9iamVjdCdzIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuICBUaGUgdmFsdWUgbXVzdCBiZQorICAgaXRlcmFibGUsIGJ1dCBtYXkgYmUgZW1wdHkgaWYgYGBfX3BhdGhfX2BgIGhhcyBubyBmdXJ0aGVyIHNpZ25pZmljYW5jZQorICAgdG8gdGhlIGxvYWRlci4gSWYgYGBfX3BhdGhfX2BgIGlzIG5vdCBlbXB0eSwgaXQgbXVzdCBwcm9kdWNlIHN0cmluZ3MKKyAgIHdoZW4gaXRlcmF0ZWQgb3Zlci4gTW9yZSBkZXRhaWxzIG9uIHRoZSBzZW1hbnRpY3Mgb2YgYGBfX3BhdGhfX2BgIGFyZQorICAgZ2l2ZW4gOnJlZjpgYmVsb3cgPHBhY2thZ2UtcGF0aC1ydWxlcz5gLgorCisgKiBUaGUgYGBfX2xvYWRlcl9fYGAgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBsb2FkZXIgb2JqZWN0IHRoYXQgbG9hZGVkCisgICB0aGUgbW9kdWxlLiAgVGhpcyBpcyBtb3N0bHkgZm9yIGludHJvc3BlY3Rpb24gYW5kIHJlbG9hZGluZywgYnV0IGNhbiBiZQorICAgdXNlZCBmb3IgYWRkaXRpb25hbCBsb2FkZXItc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGUgZ2V0dGluZworICAgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBsb2FkZXIuCisKKyAqIFRoZSBtb2R1bGUncyBgYF9fcGFja2FnZV9fYGAgYXR0cmlidXRlIHNob3VsZCBiZSBzZXQuICBJdHMgdmFsdWUgbXVzdCBiZSBhCisgICBzdHJpbmcsIGJ1dCBpdCBjYW4gYmUgdGhlIHNhbWUgdmFsdWUgYXMgaXRzIGBgX19uYW1lX19gYC4gIElmIHRoZSBhdHRyaWJ1dGUKKyAgIGlzIHNldCB0byBgYE5vbmVgYCBvciBpcyBtaXNzaW5nLCB0aGUgaW1wb3J0IHN5c3RlbSB3aWxsIGZpbGwgaXQgaW4gd2l0aCBhCisgICBtb3JlIGFwcHJvcHJpYXRlIHZhbHVlLiAgV2hlbiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSwgaXRzIGBgX19wYWNrYWdlX19gYAorICAgdmFsdWUgc2hvdWxkIGJlIHNldCB0byBpdHMgYGBfX25hbWVfX2BgLiAgV2hlbiB0aGUgbW9kdWxlIGlzIG5vdCBhIHBhY2thZ2UsCisgICBgYF9fcGFja2FnZV9fYGAgc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGZvciB0b3AtbGV2ZWwgbW9kdWxlcywgb3IKKyAgIGZvciBzdWJtb2R1bGVzLCB0byB0aGUgcGFyZW50IHBhY2thZ2UncyBuYW1lLiAgU2VlIDpwZXA6YDM2NmAgZm9yIGZ1cnRoZXIKKyAgIGRldGFpbHMuCisKKyAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgaW5zdGVhZCBvZiBgYF9fbmFtZV9fYGAgdG8gY2FsY3VsYXRlIGV4cGxpY2l0CisgICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4KKworICogSWYgdGhlIG1vZHVsZSBpcyBhIFB5dGhvbiBtb2R1bGUgKGFzIG9wcG9zZWQgdG8gYSBidWlsdC1pbiBtb2R1bGUgb3IgYQorICAgZHluYW1pY2FsbHkgbG9hZGVkIGV4dGVuc2lvbiksIHRoZSBsb2FkZXIgc2hvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZSdzIGNvZGUKKyAgIGluIHRoZSBtb2R1bGUncyBnbG9iYWwgbmFtZSBzcGFjZSAoYGBtb2R1bGUuX19kaWN0X19gYCkuCisKKworTW9kdWxlIHJlcHJzCistLS0tLS0tLS0tLS0KKworQnkgZGVmYXVsdCwgYWxsIG1vZHVsZXMgaGF2ZSBhIHVzYWJsZSByZXByLCBob3dldmVyIGRlcGVuZGluZyBvbiB0aGUKK2F0dHJpYnV0ZXMgc2V0IGFib3ZlLCBhbmQgaG9va3MgaW4gdGhlIGxvYWRlciwgeW91IGNhbiBtb3JlIGV4cGxpY2l0bHkgY29udHJvbAordGhlIHJlcHIgb2YgbW9kdWxlIG9iamVjdHMuCisKK0xvYWRlcnMgbWF5IGltcGxlbWVudCBhIDptZXRoOmBtb2R1bGVfcmVwcigpYCBtZXRob2Qgd2hpY2ggdGFrZXMgYSBzaW5nbGUKK2FyZ3VtZW50LCB0aGUgbW9kdWxlIG9iamVjdC4gIFdoZW4gYGByZXByKG1vZHVsZSlgYCBpcyBjYWxsZWQgZm9yIGEgbW9kdWxlCit3aXRoIGEgbG9hZGVyIHN1cHBvcnRpbmcgdGhpcyBwcm90b2NvbCwgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgZnJvbQorYGBtb2R1bGUuX19sb2FkZXJfXy5tb2R1bGVfcmVwcihtb2R1bGUpYGAgaXMgcmV0dXJuZWQgYXMgdGhlIG1vZHVsZSdzIHJlcHIKK3dpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLiAgVGhpcyByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZy4KKworSWYgdGhlIG1vZHVsZSBoYXMgbm8gYGBfX2xvYWRlcl9fYGAgYXR0cmlidXRlLCBvciB0aGUgbG9hZGVyIGhhcyBubworOm1ldGg6YG1vZHVsZV9yZXByKClgIG1ldGhvZCwgdGhlbiB0aGUgbW9kdWxlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYKK3dpbGwgY3JhZnQgYSBkZWZhdWx0IHJlcHIgdXNpbmcgd2hhdGV2ZXIgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLiAgSXQgd2lsbAordHJ5IHRvIHVzZSB0aGUgYGBtb2R1bGUuX19uYW1lX19gYCwgYGBtb2R1bGUuX19maWxlX19gYCwgYW5kCitgYG1vZHVsZS5fX2xvYWRlcl9fYGAgYXMgaW5wdXQgaW50byB0aGUgcmVwciwgd2l0aCBkZWZhdWx0cyBmb3Igd2hhdGV2ZXIKK2luZm9ybWF0aW9uIGlzIG1pc3NpbmcuCisKK0hlcmUgYXJlIHRoZSBleGFjdCBydWxlcyB1c2VkOgorCisgKiBJZiB0aGUgbW9kdWxlIGhhcyBhIGBgX19sb2FkZXJfX2BgIGFuZCB0aGF0IGxvYWRlciBoYXMgYQorICAgOm1ldGg6YG1vZHVsZV9yZXByKClgIG1ldGhvZCwgY2FsbCBpdCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUKKyAgIG1vZHVsZSBvYmplY3QuICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgdXNlZCBhcyB0aGUgbW9kdWxlJ3MgcmVwci4KKworICogSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiA6bWV0aDpgbW9kdWxlX3JlcHIoKWAsIHRoZSBleGNlcHRpb24gaXMgY2F1Z2h0CisgICBhbmQgZGlzY2FyZGVkLCBhbmQgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBtb2R1bGUncyByZXByIGNvbnRpbnVlcyBhcyBpZgorICAgOm1ldGg6YG1vZHVsZV9yZXByKClgIGRpZCBub3QgZXhpc3QuCisKKyAqIElmIHRoZSBtb2R1bGUgaGFzIGEgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSwgdGhpcyBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlCisgICBtb2R1bGUncyByZXByLgorCisgKiBJZiB0aGUgbW9kdWxlIGhhcyBubyBgYF9fZmlsZV9fYGAgYnV0IGRvZXMgaGF2ZSBhIGBgX19sb2FkZXJfX2BgLCB0aGVuIHRoZQorICAgbG9hZGVyJ3MgcmVwciBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlIG1vZHVsZSdzIHJlcHIuCisKKyAqIE90aGVyd2lzZSwganVzdCB1c2UgdGhlIG1vZHVsZSdzIGBgX19uYW1lX19gYCBpbiB0aGUgcmVwci4KKworVGhpcyBleGFtcGxlLCBmcm9tIDpwZXA6YDQyMGAgc2hvd3MgaG93IGEgbG9hZGVyIGNhbiBjcmFmdCBpdHMgb3duIG1vZHVsZQorcmVwcjo6CisKKyAgICBjbGFzcyBOYW1lc3BhY2VMb2FkZXI6CisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgorICAgICAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKG5hbWVzcGFjZSk+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisKKy4uIF9wYWNrYWdlLXBhdGgtcnVsZXM6CisKK21vZHVsZS5fX3BhdGhfXworLS0tLS0tLS0tLS0tLS0tCisKK0J5IGRlZmluaXRpb24sIGlmIGEgbW9kdWxlIGhhcyBhbiBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLCBpdCBpcyBhIHBhY2thZ2UsCityZWdhcmRsZXNzIG9mIGl0cyB2YWx1ZS4KKworQSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBpcyB1c2VkIGR1cmluZyBpbXBvcnRzIG9mIGl0cyBzdWJwYWNrYWdlcy4KK1dpdGhpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSwgaXQgZnVuY3Rpb25zIG11Y2ggdGhlIHNhbWUgYXMgOmRhdGE6YHN5cy5wYXRoYCwKK2kuZS4gcHJvdmlkaW5nIGEgbGlzdCBvZiBsb2NhdGlvbnMgdG8gc2VhcmNoIGZvciBtb2R1bGVzIGR1cmluZyBpbXBvcnQuCitIb3dldmVyLCBgYF9fcGF0aF9fYGAgaXMgdHlwaWNhbGx5IG11Y2ggbW9yZSBjb25zdHJhaW5lZCB0aGFuCis6ZGF0YTpgc3lzLnBhdGhgLgorCitgYF9fcGF0aF9fYGAgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBzdHJpbmdzLCBidXQgaXQgbWF5IGJlIGVtcHR5LgorVGhlIHNhbWUgcnVsZXMgdXNlZCBmb3IgOmRhdGE6YHN5cy5wYXRoYCBhbHNvIGFwcGx5IHRvIGEgcGFja2FnZSdzCitgYF9fcGF0aF9fYGAsIGFuZCA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIChkZXNjcmliZWQgYmVsb3cpIGFyZQorY29uc3VsdGVkIHdoZW4gdHJhdmVyc2luZyBhIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAuCisKK0EgcGFja2FnZSdzIGBgX19pbml0X18ucHlgYCBmaWxlIG1heSBzZXQgb3IgYWx0ZXIgdGhlIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZSwgYW5kIHRoaXMgd2FzIHR5cGljYWxseSB0aGUgd2F5IG5hbWVzcGFjZSBwYWNrYWdlcyB3ZXJlIGltcGxlbWVudGVkCitwcmlvciB0byA6cGVwOmA0MjBgLiAgV2l0aCB0aGUgYWRvcHRpb24gb2YgOnBlcDpgNDIwYCwgbmFtZXNwYWNlIHBhY2thZ2VzIG5vCitsb25nZXIgbmVlZCB0byBzdXBwbHkgYGBfX2luaXRfXy5weWBgIGZpbGVzIGNvbnRhaW5pbmcgb25seSBgYF9fcGF0aF9fYGAKK21hbmlwdWxhdGlvbiBjb2RlOyB0aGUgbmFtZXNwYWNlIGxvYWRlciBhdXRvbWF0aWNhbGx5IHNldHMgYGBfX3BhdGhfX2BgCitjb3JyZWN0bHkgZm9yIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KKworCitUaGUgUGF0aCBCYXNlZCBGaW5kZXIKKz09PT09PT09PT09PT09PT09PT09PQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBwYXRoIGJhc2VkIGZpbmRlcgorCitBcyBtZW50aW9uZWQgcHJldmlvdXNseSwgUHl0aG9uIGNvbWVzIHdpdGggc2V2ZXJhbCBkZWZhdWx0IG1ldGEgcGF0aCBmaW5kZXJzLgorT25lIG9mIHRoZXNlLCBjYWxsZWQgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAsIHNlYXJjaGVzIGFuIDp0ZXJtOmBpbXBvcnQKK3BhdGhgLCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YgOnRlcm06YHBhdGggZW50cmllcyA8cGF0aCBlbnRyeT5gLiAgRWFjaCBwYXRoCitlbnRyeSBuYW1lcyBhIGxvY2F0aW9uIHRvIHNlYXJjaCBmb3IgbW9kdWxlcy4KKworVGhlIHBhdGggYmFzZWQgZmluZGVyIGl0c2VsZiBkb2Vzbid0IGtub3cgaG93IHRvIGltcG9ydCBhbnl0aGluZy4gSW5zdGVhZCwgaXQKK3RyYXZlcnNlcyB0aGUgaW5kaXZpZHVhbCBwYXRoIGVudHJpZXMsIGFzc29jaWF0aW5nIGVhY2ggb2YgdGhlbSB3aXRoIGEKK3BhdGggZW50cnkgZmluZGVyIHRoYXQga25vd3MgaG93IHRvIGhhbmRsZSB0aGF0IHBhcnRpY3VsYXIga2luZCBvZiBwYXRoLgorCitUaGUgZGVmYXVsdCBzZXQgb2YgcGF0aCBlbnRyeSBmaW5kZXJzIGltcGxlbWVudCBhbGwgdGhlIHNlbWFudGljcyBmb3IgZmluZGluZworbW9kdWxlcyBvbiB0aGUgZmlsZSBzeXN0ZW0sIGhhbmRsaW5nIHNwZWNpYWwgZmlsZSB0eXBlcyBzdWNoIGFzIFB5dGhvbiBzb3VyY2UKK2NvZGUgKGBgLnB5YGAgZmlsZXMpLCBQeXRob24gYnl0ZSBjb2RlIChgYC5weWNgYCBhbmQgYGAucHlvYGAgZmlsZXMpIGFuZAorc2hhcmVkIGxpYnJhcmllcyAoZS5nLiBgYC5zb2BgIGZpbGVzKS4gV2hlbiBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHppcGltcG9ydGAKK21vZHVsZSBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSwgdGhlIGRlZmF1bHQgcGF0aCBlbnRyeSBmaW5kZXJzIGFsc28gaGFuZGxlCitsb2FkaW5nIGFsbCBvZiB0aGVzZSBmaWxlIHR5cGVzIChvdGhlciB0aGFuIHNoYXJlZCBsaWJyYXJpZXMpIGZyb20gemlwZmlsZXMuCisKK1BhdGggZW50cmllcyBuZWVkIG5vdCBiZSBsaW1pdGVkIHRvIGZpbGUgc3lzdGVtIGxvY2F0aW9ucy4gIFRoZXkgY2FuIHJlZmVyIHRvCitVUkxzLCBkYXRhYmFzZSBxdWVyaWVzLCBvciBhbnkgb3RoZXIgbG9jYXRpb24gdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEKK3N0cmluZy4KKworVGhlIHBhdGggYmFzZWQgZmluZGVyIHByb3ZpZGVzIGFkZGl0aW9uYWwgaG9va3MgYW5kIHByb3RvY29scyBzbyB0aGF0IHlvdQorY2FuIGV4dGVuZCBhbmQgY3VzdG9taXplIHRoZSB0eXBlcyBvZiBzZWFyY2hhYmxlIHBhdGggZW50cmllcy4gIEZvciBleGFtcGxlLAoraWYgeW91IHdhbnRlZCB0byBzdXBwb3J0IHBhdGggZW50cmllcyBhcyBuZXR3b3JrIFVSTHMsIHlvdSBjb3VsZCB3cml0ZSBhIGhvb2sKK3RoYXQgaW1wbGVtZW50cyBIVFRQIHNlbWFudGljcyB0byBmaW5kIG1vZHVsZXMgb24gdGhlIHdlYi4gIFRoaXMgaG9vayAoYQorY2FsbGFibGUpIHdvdWxkIHJldHVybiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgc3VwcG9ydGluZyB0aGUgcHJvdG9jb2wKK2Rlc2NyaWJlZCBiZWxvdywgd2hpY2ggd2FzIHRoZW4gdXNlZCB0byBnZXQgYSBsb2FkZXIgZm9yIHRoZSBtb2R1bGUgZnJvbSB0aGUKK3dlYi4KKworQSB3b3JkIG9mIHdhcm5pbmc6IHRoaXMgc2VjdGlvbiBhbmQgdGhlIHByZXZpb3VzIGJvdGggdXNlIHRoZSB0ZXJtICpmaW5kZXIqLAorZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiB0aGVtIGJ5IHVzaW5nIHRoZSB0ZXJtcyA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgYW5kCis6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgLiAgVGhlc2UgdHdvIHR5cGVzIG9mIGZpbmRlcnMgYXJlIHZlcnkgc2ltaWxhciwKK3N1cHBvcnQgc2ltaWxhciBwcm90b2NvbHMsIGFuZCBmdW5jdGlvbiBpbiBzaW1pbGFyIHdheXMgZHVyaW5nIHRoZSBpbXBvcnQKK3Byb2Nlc3MsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGV5IGFyZSBzdWJ0bHkgZGlmZmVyZW50LgorSW4gcGFydGljdWxhciwgbWV0YSBwYXRoIGZpbmRlcnMgb3BlcmF0ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbXBvcnQKK3Byb2Nlc3MsIGFzIGtleWVkIG9mZiB0aGUgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHRyYXZlcnNhbC4KKworQnkgY29udHJhc3QsIHBhdGggZW50cnkgZmluZGVycyBhcmUgaW4gYSBzZW5zZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKK29mIHRoZSBwYXRoIGJhc2VkIGZpbmRlciwgYW5kIGluIGZhY3QsIGlmIHRoZSBwYXRoIGJhc2VkIGZpbmRlciB3ZXJlIHRvIGJlCityZW1vdmVkIGZyb20gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCBub25lIG9mIHRoZSBwYXRoIGVudHJ5IGZpbmRlciBzZW1hbnRpY3MKK3dvdWxkIGJlIGludm9rZWQuCisKKworUGF0aCBlbnRyeSBmaW5kZXJzCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogc3lzLnBhdGgKKyAgICBzaW5nbGU6IHN5cy5wYXRoX2hvb2tzCisgICAgc2luZ2xlOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQorICAgIHNpbmdsZTogUFlUSE9OUEFUSAorCitUaGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBhbmQgbG9hZGluZyBQeXRob24KK21vZHVsZXMgYW5kIHBhY2thZ2VzIHdob3NlIGxvY2F0aW9uIGlzIHNwZWNpZmllZCB3aXRoIGEgc3RyaW5nIDp0ZXJtOmBwYXRoCitlbnRyeWAuICBNb3N0IHBhdGggZW50cmllcyBuYW1lIGxvY2F0aW9ucyBpbiB0aGUgZmlsZSBzeXN0ZW0sIGJ1dCB0aGV5IG5lZWQKK25vdCBiZSBsaW1pdGVkIHRvIHRoaXMuCisKK0FzIGEgbWV0YSBwYXRoIGZpbmRlciwgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAgaW1wbGVtZW50cyB0aGUKKzptZXRoOmBmaW5kX21vZHVsZSgpYCBwcm90b2NvbCBwcmV2aW91c2x5IGRlc2NyaWJlZCwgaG93ZXZlciBpdCBleHBvc2VzCithZGRpdGlvbmFsIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIGhvdyBtb2R1bGVzIGFyZSBmb3VuZCBhbmQKK2xvYWRlZCBmcm9tIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgLgorCitUaHJlZSB2YXJpYWJsZXMgYXJlIHVzZWQgYnkgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAsIDpkYXRhOmBzeXMucGF0aGAsCis6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGFuZCA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLiAgVGhlIGBgX19wYXRoX19gYAorYXR0cmlidXRlcyBvbiBwYWNrYWdlIG9iamVjdHMgYXJlIGFsc28gdXNlZC4gIFRoZXNlIHByb3ZpZGUgYWRkaXRpb25hbCB3YXlzCit0aGF0IHRoZSBpbXBvcnQgbWFjaGluZXJ5IGNhbiBiZSBjdXN0b21pemVkLgorCis6ZGF0YTpgc3lzLnBhdGhgIGNvbnRhaW5zIGEgbGlzdCBvZiBzdHJpbmdzIHByb3ZpZGluZyBzZWFyY2ggbG9jYXRpb25zIGZvcgorbW9kdWxlcyBhbmQgcGFja2FnZXMuICBJdCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSA6ZGF0YTpgUFlUSE9OUEFUSGAKK2Vudmlyb25tZW50IHZhcmlhYmxlIGFuZCB2YXJpb3VzIG90aGVyIGluc3RhbGxhdGlvbi0gYW5kCitpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBkZWZhdWx0cy4gIEVudHJpZXMgaW4gOmRhdGE6YHN5cy5wYXRoYCBjYW4gbmFtZQorZGlyZWN0b3JpZXMgb24gdGhlIGZpbGUgc3lzdGVtLCB6aXAgZmlsZXMsIGFuZCBwb3RlbnRpYWxseSBvdGhlciAibG9jYXRpb25zIgorKHNlZSB0aGUgOm1vZDpgc2l0ZWAgbW9kdWxlKSB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZCBmb3IgbW9kdWxlcywgc3VjaCBhcworVVJMcywgb3IgZGF0YWJhc2UgcXVlcmllcy4gIE9ubHkgc3RyaW5ncyBhbmQgYnl0ZXMgc2hvdWxkIGJlIHByZXNlbnQgb24KKzpkYXRhOmBzeXMucGF0aGA7IGFsbCBvdGhlciBkYXRhIHR5cGVzIGFyZSBpZ25vcmVkLiAgVGhlIGVuY29kaW5nIG9mIGJ5dGVzCitlbnRyaWVzIGlzIGRldGVybWluZWQgYnkgdGhlIGluZGl2aWR1YWwgOnRlcm06YHBhdGggZW50cnkgZmluZGVycyA8cGF0aCBlbnRyeQorZmluZGVyPmAuCisKK1RoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGlzIGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgLCBzbyB0aGUgaW1wb3J0CittYWNoaW5lcnkgYmVnaW5zIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIHNlYXJjaCBieSBjYWxsaW5nIHRoZSBwYXRoCitiYXNlZCBmaW5kZXIncyA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIGFzIGRlc2NyaWJlZCBwcmV2aW91c2x5LiAgV2hlbgordGhlIGBgcGF0aGBgIGFyZ3VtZW50IHRvIDptZXRoOmBmaW5kX21vZHVsZSgpYCBpcyBnaXZlbiwgaXQgd2lsbCBiZSBhCitsaXN0IG9mIHN0cmluZyBwYXRocyB0byB0cmF2ZXJzZSAtIHR5cGljYWxseSBhIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZSBmb3IgYW4gaW1wb3J0IHdpdGhpbiB0aGF0IHBhY2thZ2UuICBJZiB0aGUgYGBwYXRoYGAgYXJndW1lbnQKK2lzIGBgTm9uZWBgLCB0aGlzIGluZGljYXRlcyBhIHRvcCBsZXZlbCBpbXBvcnQgYW5kIDpkYXRhOmBzeXMucGF0aGAgaXMgdXNlZC4KKworVGhlIHBhdGggYmFzZWQgZmluZGVyIGl0ZXJhdGVzIG92ZXIgZXZlcnkgZW50cnkgaW4gdGhlIHNlYXJjaCBwYXRoLCBhbmQKK2ZvciBlYWNoIG9mIHRoZXNlLCBsb29rcyBmb3IgYW4gYXBwcm9wcmlhdGUgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBmb3IgdGhlCitwYXRoIGVudHJ5LiAgQmVjYXVzZSB0aGlzIGNhbiBiZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIChlLmcuIHRoZXJlIG1heSBiZQorYHN0YXQoKWAgY2FsbCBvdmVyaGVhZHMgZm9yIHRoaXMgc2VhcmNoKSwgdGhlIHBhdGggYmFzZWQgZmluZGVyIG1haW50YWlucworYSBjYWNoZSBtYXBwaW5nIHBhdGggZW50cmllcyB0byBwYXRoIGVudHJ5IGZpbmRlcnMuICBUaGlzIGNhY2hlIGlzIG1haW50YWluZWQKK2luIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgKGRlc3BpdGUgdGhlIG5hbWUsIHRoaXMgY2FjaGUgYWN0dWFsbHkKK3N0b3JlcyBmaW5kZXIgb2JqZWN0cyByYXRoZXIgdGhhbiBiZWluZyBsaW1pdGVkIHRvIDp0ZXJtOmBpbXBvcnRlcmAgb2JqZWN0cykuCitJbiB0aGlzIHdheSwgdGhlIGV4cGVuc2l2ZSBzZWFyY2ggZm9yIGEgcGFydGljdWxhciA6dGVybTpgcGF0aCBlbnRyeWAKK2xvY2F0aW9uJ3MgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBuZWVkIG9ubHkgYmUgZG9uZSBvbmNlLiAgVXNlciBjb2RlIGlzCitmcmVlIHRvIHJlbW92ZSBjYWNoZSBlbnRyaWVzIGZyb20gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBmb3JjaW5nCit0aGUgcGF0aCBiYXNlZCBmaW5kZXIgdG8gcGVyZm9ybSB0aGUgcGF0aCBlbnRyeSBzZWFyY2ggYWdhaW4gWyNmbnBpY11fLgorCitJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgcHJlc2VudCBpbiB0aGUgY2FjaGUsIHRoZSBwYXRoIGJhc2VkIGZpbmRlciBpdGVyYXRlcworb3ZlciBldmVyeSBjYWxsYWJsZSBpbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLiAgRWFjaCBvZiB0aGUgOnRlcm06YHBhdGggZW50cnkKK2hvb2tzIDxwYXRoIGVudHJ5IGhvb2s+YCBpbiB0aGlzIGxpc3QgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQsIHRoZQorcGF0aCBlbnRyeSB0byBiZSBzZWFyY2hlZC4gIFRoaXMgY2FsbGFibGUgbWF5IGVpdGhlciByZXR1cm4gYSA6dGVybTpgcGF0aAorZW50cnkgZmluZGVyYCB0aGF0IGNhbiBoYW5kbGUgdGhlIHBhdGggZW50cnksIG9yIGl0IG1heSByYWlzZQorOmV4YzpgSW1wb3J0RXJyb3JgLiAgQW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHVzZWQgYnkgdGhlIHBhdGggYmFzZWQgZmluZGVyIHRvCitzaWduYWwgdGhhdCB0aGUgaG9vayBjYW5ub3QgZmluZCBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgZm9yIHRoYXQKKzp0ZXJtOmBwYXRoIGVudHJ5YC4gIFRoZSBleGNlcHRpb24gaXMgaWdub3JlZCBhbmQgOnRlcm06YGltcG9ydCBwYXRoYAoraXRlcmF0aW9uIGNvbnRpbnVlcy4gIFRoZSBob29rIHNob3VsZCBleHBlY3QgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdDsKK3RoZSBlbmNvZGluZyBvZiBieXRlcyBvYmplY3RzIGlzIHVwIHRvIHRoZSBob29rIChlLmcuIGl0IG1heSBiZSBhIGZpbGUgc3lzdGVtCitlbmNvZGluZywgVVRGLTgsIG9yIHNvbWV0aGluZyBlbHNlKSwgYW5kIGlmIHRoZSBob29rIGNhbm5vdCBkZWNvZGUgdGhlCithcmd1bWVudCwgaXQgc2hvdWxkIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYC4KKworSWYgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpdGVyYXRpb24gZW5kcyB3aXRoIG5vIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAKK2JlaW5nIHJldHVybmVkLCB0aGVuIHRoZSBwYXRoIGJhc2VkIGZpbmRlcidzIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QKK3dpbGwgc3RvcmUgYGBOb25lYGAgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCAodG8gaW5kaWNhdGUgdGhhdAordGhlcmUgaXMgbm8gZmluZGVyIGZvciB0aGlzIHBhdGggZW50cnkpIGFuZCByZXR1cm4gYGBOb25lYGAsIGluZGljYXRpbmcgdGhhdAordGhpcyA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgY291bGQgbm90IGZpbmQgdGhlIG1vZHVsZS4KKworSWYgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgICppcyogcmV0dXJuZWQgYnkgb25lIG9mIHRoZSA6dGVybTpgcGF0aCBlbnRyeQoraG9va2AgY2FsbGFibGVzIG9uIDpkYXRhOmBzeXMucGF0aF9ob29rc2AsIHRoZW4gdGhlIGZvbGxvd2luZyBwcm90b2NvbCBpcyB1c2VkCit0byBhc2sgdGhlIGZpbmRlciBmb3IgYSBtb2R1bGUgbG9hZGVyLCB3aGljaCBpcyB0aGVuIHVzZWQgdG8gbG9hZCB0aGUgbW9kdWxlLgorCisKK1BhdGggZW50cnkgZmluZGVyIHByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byBzdXBwb3J0IGltcG9ydHMgb2YgbW9kdWxlcyBhbmQgaW5pdGlhbGl6ZWQgcGFja2FnZXMgYW5kIGFsc28gdG8KK2NvbnRyaWJ1dGUgcG9ydGlvbnMgdG8gbmFtZXNwYWNlIHBhY2thZ2VzLCBwYXRoIGVudHJ5IGZpbmRlcnMgbXVzdCBpbXBsZW1lbnQKK3RoZSA6bWV0aDpgZmluZF9sb2FkZXIoKWAgbWV0aG9kLgorCis6bWV0aDpgZmluZF9sb2FkZXIoKWAgdGFrZXMgb25lIGFyZ3VtZW50LCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlCittb2R1bGUgYmVpbmcgaW1wb3J0ZWQuICA6bWV0aDpgZmluZF9sb2FkZXIoKWAgcmV0dXJucyBhIDItdHVwbGUgd2hlcmUgdGhlCitmaXJzdCBpdGVtIGlzIHRoZSBsb2FkZXIgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhIG5hbWVzcGFjZSA6dGVybTpgcG9ydGlvbmAuCitXaGVuIHRoZSBmaXJzdCBpdGVtIChpLmUuIHRoZSBsb2FkZXIpIGlzIGBgTm9uZWBgLCB0aGlzIG1lYW5zIHRoYXQgd2hpbGUgdGhlCitwYXRoIGVudHJ5IGZpbmRlciBkb2VzIG5vdCBoYXZlIGEgbG9hZGVyIGZvciB0aGUgbmFtZWQgbW9kdWxlLCBpdCBrbm93cyB0aGF0IHRoZQorcGF0aCBlbnRyeSBjb250cmlidXRlcyB0byBhIG5hbWVzcGFjZSBwb3J0aW9uIGZvciB0aGUgbmFtZWQgbW9kdWxlLiAgVGhpcyB3aWxsCithbG1vc3QgYWx3YXlzIGJlIHRoZSBjYXNlIHdoZXJlIFB5dGhvbiBpcyBhc2tlZCB0byBpbXBvcnQgYSBuYW1lc3BhY2UgcGFja2FnZQordGhhdCBoYXMgbm8gcGh5c2ljYWwgcHJlc2VuY2Ugb24gdGhlIGZpbGUgc3lzdGVtLiAgV2hlbiBhIHBhdGggZW50cnkgZmluZGVyCityZXR1cm5zIGBgTm9uZWBgIGZvciB0aGUgbG9hZGVyLCB0aGUgc2Vjb25kIGl0ZW0gb2YgdGhlIDItdHVwbGUgcmV0dXJuIHZhbHVlCittdXN0IGJlIGEgc2VxdWVuY2UsIGFsdGhvdWdoIGl0IGNhbiBiZSBlbXB0eS4KKworSWYgOm1ldGg6YGZpbmRfbG9hZGVyKClgIHJldHVybnMgYSBub24tYGBOb25lYGAgbG9hZGVyIHZhbHVlLCB0aGUgcG9ydGlvbiBpcworaWdub3JlZCBhbmQgdGhlIGxvYWRlciBpcyByZXR1cm5lZCBmcm9tIHRoZSBwYXRoIGJhc2VkIGZpbmRlciwgdGVybWluYXRpbmcKK3RoZSBzZWFyY2ggdGhyb3VnaCB0aGUgcGF0aCBlbnRyaWVzLgorCitGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydAorcHJvdG9jb2wsIG1hbnkgcGF0aCBlbnRyeSBmaW5kZXJzIGFsc28gc3VwcG9ydCB0aGUgc2FtZSwKK3RyYWRpdGlvbmFsIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QgdGhhdCBtZXRhIHBhdGggZmluZGVycyBzdXBwb3J0LgorSG93ZXZlciBwYXRoIGVudHJ5IGZpbmRlciA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kcyBhcmUgbmV2ZXIgY2FsbGVkCit3aXRoIGEgYGBwYXRoYGAgYXJndW1lbnQgKHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJlY29yZCB0aGUgYXBwcm9wcmlhdGUKK3BhdGggaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5pdGlhbCBjYWxsIHRvIHRoZSBwYXRoIGhvb2spLgorCitUaGUgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBvbiBwYXRoIGVudHJ5IGZpbmRlcnMgaXMgZGVwcmVjYXRlZCwKK2FzIGl0IGRvZXMgbm90IGFsbG93IHRoZSBwYXRoIGVudHJ5IGZpbmRlciB0byBjb250cmlidXRlIHBvcnRpb25zIHRvCituYW1lc3BhY2UgcGFja2FnZXMuIEluc3RlYWQgcGF0aCBlbnRyeSBmaW5kZXJzIHNob3VsZCBpbXBsZW1lbnQgdGhlCis6bWV0aDpgZmluZF9sb2FkZXIoKWAgbWV0aG9kIGFzIGRlc2NyaWJlZCBhYm92ZS4gSWYgaXQgZXhpc3RzIG9uIHRoZSBwYXRoCitlbnRyeSBmaW5kZXIsIHRoZSBpbXBvcnQgc3lzdGVtIHdpbGwgYWx3YXlzIGNhbGwgOm1ldGg6YGZpbmRfbG9hZGVyKClgCitpbiBwcmVmZXJlbmNlIHRvIDptZXRoOmBmaW5kX21vZHVsZSgpYC4KKworCitSZXBsYWNpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgbW9zdCByZWxpYWJsZSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyB0aGUgZW50aXJlIGltcG9ydCBzeXN0ZW0gaXMgdG8KK2RlbGV0ZSB0aGUgZGVmYXVsdCBjb250ZW50cyBvZiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIHJlcGxhY2luZyB0aGVtCitlbnRpcmVseSB3aXRoIGEgY3VzdG9tIG1ldGEgcGF0aCBob29rLgorCitJZiBpdCBpcyBhY2NlcHRhYmxlIHRvIG9ubHkgYWx0ZXIgdGhlIGJlaGF2aW91ciBvZiBpbXBvcnQgc3RhdGVtZW50cword2l0aG91dCBhZmZlY3Rpbmcgb3RoZXIgQVBJcyB0aGF0IGFjY2VzcyB0aGUgaW1wb3J0IHN5c3RlbSwgdGhlbiByZXBsYWNpbmcKK3RoZSBidWlsdGluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBtYXkgYmUgc3VmZmljaWVudC4gVGhpcyB0ZWNobmlxdWUKK21heSBhbHNvIGJlIGVtcGxveWVkIGF0IHRoZSBtb2R1bGUgbGV2ZWwgdG8gb25seSBhbHRlciB0aGUgYmVoYXZpb3VyIG9mCitpbXBvcnQgc3RhdGVtZW50cyB3aXRoaW4gdGhhdCBtb2R1bGUuCisKK1RvIHNlbGVjdGl2ZWx5IHByZXZlbnQgaW1wb3J0IG9mIHNvbWUgbW9kdWxlcyBmcm9tIGEgaG9vayBlYXJseSBvbiB0aGUKK21ldGEgcGF0aCAocmF0aGVyIHRoYW4gZGlzYWJsaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtIGVudGlyZWx5KSwKK2l0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIGRpcmVjdGx5IGZyb20KKzptZXRoOmBmaW5kX21vZHVsZWAgaW5zdGVhZCBvZiByZXR1cm5pbmcgYGBOb25lYGAuIFRoZSBsYXR0ZXIgaW5kaWNhdGVzCit0aGF0IHRoZSBtZXRhIHBhdGggc2VhcmNoIHNob3VsZCBjb250aW51ZS4gd2hpbGUgcmFpc2luZyBhbiBleGNlcHRpb24KK3Rlcm1pbmF0ZXMgaXQgaW1tZWRpYXRlbHkuCisKKworT3BlbiBpc3N1ZXMKKz09PT09PT09PT09CisKK1hYWCBJdCB3b3VsZCBiZSByZWFsbHkgbmljZSB0byBoYXZlIGEgZGlhZ3JhbS4KKworWFhYICogKGltcG9ydF9tYWNoaW5lcnkucnN0KSBob3cgYWJvdXQgYSBzZWN0aW9uIGRldm90ZWQganVzdCB0byB0aGUKK2F0dHJpYnV0ZXMgb2YgbW9kdWxlcyBhbmQgcGFja2FnZXMsIHBlcmhhcHMgZXhwYW5kaW5nIHVwb24gb3Igc3VwcGxhbnRpbmcgdGhlCityZWxhdGVkIGVudHJpZXMgaW4gdGhlIGRhdGEgbW9kZWwgcmVmZXJlbmNlIHBhZ2U/CisKK1hYWCBydW5weSwgcGtndXRpbCwgZXQgYWwgaW4gdGhlIGxpYnJhcnkgbWFudWFsIHNob3VsZCBhbGwgZ2V0ICJTZWUgQWxzbyIKK2xpbmtzIGF0IHRoZSB0b3AgcG9pbnRpbmcgdG8gdGhlIG5ldyBpbXBvcnQgc3lzdGVtIHNlY3Rpb24uCisKKworUmVmZXJlbmNlcworPT09PT09PT09PQorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBoYXMgZXZvbHZlZCBjb25zaWRlcmFibHkgc2luY2UgUHl0aG9uJ3MgZWFybHkgZGF5cy4gIFRoZQorb3JpZ2luYWwgYHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzCis8aHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbD5gXyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCwKK2FsdGhvdWdoIHNvbWUgZGV0YWlscyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHdyaXRpbmcgb2YgdGhhdCBkb2N1bWVudC4KKworVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCB3YXMgOnBlcDpgMzAyYCwgd2l0aAorc3Vic2VxdWVudCBleHRlbnNpb24gaW4gOnBlcDpgNDIwYC4KKworOnBlcDpgNDIwYCBpbnRyb2R1Y2VkIDp0ZXJtOmBuYW1lc3BhY2UgcGFja2FnZXMgPG5hbWVzcGFjZSBwYWNrYWdlPmAgZm9yCitQeXRob24gMy4zLiAgOnBlcDpgNDIwYCBhbHNvIGludHJvZHVjZWQgdGhlIDptZXRoOmBmaW5kX2xvYWRlcmAgcHJvdG9jb2wgYXMgYW4KK2FsdGVybmF0aXZlIHRvIDptZXRoOmBmaW5kX21vZHVsZWAuCisKKzpwZXA6YDM2NmAgZGVzY3JpYmVzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGBfX3BhY2thZ2VfX2BgIGF0dHJpYnV0ZSBmb3IKK2V4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgaW4gbWFpbiBtb2R1bGVzLgorCis6cGVwOmAzMjhgIGludHJvZHVjZWQgYWJzb2x1dGUgYW5kIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydHMgYW5kIGluaXRpYWxseQorcHJvcG9zZWQgYGBfX25hbWVfX2BgIGZvciBzZW1hbnRpY3MgOnBlcDpgMzY2YCB3b3VsZCBldmVudHVhbGx5IHNwZWNpZnkgZm9yCitgYF9fcGFja2FnZV9fYGAuCisKKzpwZXA6YDMzOGAgZGVmaW5lcyBleGVjdXRpbmcgbW9kdWxlcyBhcyBzY3JpcHRzLgorCisKK0Zvb3Rub3RlcworPT09PT09PT09CisKKy4uIFsjZm5tb10gU2VlIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAuCisKKy4uIFsjZm5sb10gVGhlIGltcG9ydGxpYiBpbXBsZW1lbnRhdGlvbiBhdm9pZHMgdXNpbmcgdGhlIHJldHVybiB2YWx1ZQorICAgZGlyZWN0bHkuIEluc3RlYWQsIGl0IGdldHMgdGhlIG1vZHVsZSBvYmplY3QgYnkgbG9va2luZyB0aGUgbW9kdWxlIG5hbWUgdXAKKyAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGUgaW5kaXJlY3QgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCBhbiBpbXBvcnRlZAorICAgbW9kdWxlIG1heSByZXBsYWNlIGl0c2VsZiBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhpcyBpcworICAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgYmVoYXZpb3IgdGhhdCBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrIGluIG90aGVyCisgICBQeXRob24gaW1wbGVtZW50YXRpb25zLgorCisuLiBbI2ZucGljXSBJbiBsZWdhY3kgY29kZSwgaXQgaXMgcG9zc2libGUgdG8gZmluZCBpbnN0YW5jZXMgb2YKKyAgIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgaW4gdGhlIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuICBJdAorICAgaXMgcmVjb21tZW5kZWQgdGhhdCBjb2RlIGJlIGNoYW5nZWQgdG8gdXNlIGBgTm9uZWBgIGluc3RlYWQuICBTZWUKKyAgIDpyZWY6YHBvcnRpbmdweXRob25jb2RlYCBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdAppbmRleCA1MTNlNDQ1Li5hNjY2NzNiIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdApAQCAtMjEsNiArMjEsNyBAQAogICAgbGV4aWNhbF9hbmFseXNpcy5yc3QKICAgIGRhdGFtb2RlbC5yc3QKICAgIGV4ZWN1dGlvbm1vZGVsLnJzdAorICAgaW1wb3J0LnJzdAogICAgZXhwcmVzc2lvbnMucnN0CiAgICBzaW1wbGVfc3RtdHMucnN0CiAgICBjb21wb3VuZF9zdG10cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CmluZGV4IDRiNDk3MzguLjk0ZjIxOWIgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdApAQCAtNDAxLDcgKzQwMSw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHN0cmluZ2xpdGVyYWw6IFtgc3RyaW5ncHJlZml4YF0oYHNob3J0c3RyaW5nYCB8IGBsb25nc3RyaW5nYCkKLSAgIHN0cmluZ3ByZWZpeDogInIiIHwgIlIiCisgICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIgogICAgc2hvcnRzdHJpbmc6ICInIiBgc2hvcnRzdHJpbmdpdGVtYCogIiciIHwgJyInIGBzaG9ydHN0cmluZ2l0ZW1gKiAnIicKICAgIGxvbmdzdHJpbmc6ICInJyciIGBsb25nc3RyaW5naXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdzdHJpbmdpdGVtYCogJyIiIicKICAgIHNob3J0c3RyaW5naXRlbTogYHNob3J0c3RyaW5nY2hhcmAgfCBgc3RyaW5nZXNjYXBlc2VxYApAQCAtNDEyLDcgKzQxMiw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGJ5dGVzbGl0ZXJhbDogYGJ5dGVzcHJlZml4YChgc2hvcnRieXRlc2AgfCBgbG9uZ2J5dGVzYCkKLSAgIGJ5dGVzcHJlZml4OiAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiCisgICBieXRlc3ByZWZpeDogImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiIKICAgIHNob3J0Ynl0ZXM6ICInIiBgc2hvcnRieXRlc2l0ZW1gKiAiJyIgfCAnIicgYHNob3J0Ynl0ZXNpdGVtYCogJyInCiAgICBsb25nYnl0ZXM6ICInJyciIGBsb25nYnl0ZXNpdGVtYCogIicnJyIgfCAnIiIiJyBgbG9uZ2J5dGVzaXRlbWAqICciIiInCiAgICBzaG9ydGJ5dGVzaXRlbTogYHNob3J0Ynl0ZXNjaGFyYCB8IGBieXRlc2VzY2FwZXNlcWAKQEAgLTQ0MSwxMCArNDQxLDI0IEBACiBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCBvciBncmVhdGVyCiBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuCiAKK0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGEKK2BgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy4KKwogQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYSBsZXR0ZXIgYGAncidgYAogb3IgYGAnUidgYDsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgOmRmbjpgcmF3IHN0cmluZ3NgIGFuZCB0cmVhdCBiYWNrc2xhc2hlcyBhcwogbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscywgYGAnXFUnYGAgYW5kIGBgJ1x1J2BgCi1lc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuCitlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdwordW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhbiBQeXRob24gMy54J3MgdGhlIGBgJ3VyJ2BgIHN5bnRheAoraXMgbm90IHN1cHBvcnRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgYGAncmInYGAgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0KKyAgICAgIG9mIGBgJ2JyJ2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsIChgYHUndmFsdWUnYGApIHdhcyByZWludHJvZHVjZWQKKyAgICAgIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuCisgICAgICBTZWUgOnBlcDpgNDE0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogSW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZCAoYW5kIGFyZQogcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93IHRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEKQEAgLTQ5MiwxMyArNTA2LDEzIEBACiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiB8IEVzY2FwZSBTZXF1ZW5jZSB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CiArPT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCi18IGBgXE57bmFtZX1gYCAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgfCAgICAgICB8Cit8IGBgXE57bmFtZX1gYCAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgfCBcKDQpICB8CiB8ICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgXHV4eHh4YGAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgfCBcKDQpICB8Cit8IGBgXHV4eHh4YGAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgfCBcKDUpICB8CiB8ICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgXFV4eHh4eHh4eGBgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgfCBcKDUpICB8Cit8IGBgXFV4eHh4eHh4eGBgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgfCBcKDYpICB8CiB8ICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKQEAgLTUxNiwxMyArNTMwLDE1IEBACiAgICB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KIAogKDQpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsjXV8gaGFzIGJlZW4gYWRkZWQuCisKKyg1KQogICAgSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmUgZW5jb2RlZCB1c2luZwogICAgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuCiAKLSg1KQotICAgQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LCBidXQgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYwotICAgTXVsdGlsaW5ndWFsIFBsYW5lIChCTVApIHdpbGwgYmUgZW5jb2RlZCB1c2luZyBhIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcwotICAgY29tcGlsZWQgdG8gdXNlIDE2LWJpdCBjb2RlIHVuaXRzICh0aGUgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMKKyg2KQorICAgQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodCBoZXggZGlnaXRzCiAgICBhcmUgcmVxdWlyZWQuCiAKIApAQCAtNzA2LDMgKzcyMiw4IEBACiBvY2N1cnJlbmNlIG91dHNpZGUgc3RyaW5nIGxpdGVyYWxzIGFuZCBjb21tZW50cyBpcyBhbiB1bmNvbmRpdGlvbmFsIGVycm9yOjoKIAogICAgJCAgICAgICA/ICAgICAgIGAKKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZC9OYW1lQWxpYXNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCA3MzE4M2Q1Li44MWRjNzQ4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC00MjQsMTAgKzQyNCwxMCBAQAogOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZSwgdGhhdCA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZQogcmVhbGx5IGxlYXZpbmcgdGhlIGZ1bmN0aW9uLgogCi1JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIDprZXl3b3JkOmByZXR1cm5gIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCB0bwotaW5jbHVkZSBhbiA6dG9rZW46YGV4cHJlc3Npb25fbGlzdGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSA6a2V5d29yZDpgcmV0dXJuYAotaW5kaWNhdGVzIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIDpleGM6YFN0b3BJdGVyYXRpb25gIHRvIGJlCi1yYWlzZWQuCitJbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIDprZXl3b3JkOmByZXR1cm5gIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGUKK2dlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIDpleGM6YFN0b3BJdGVyYXRpb25gIHRvIGJlIHJhaXNlZC4gVGhlIHJldHVybmVkCit2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBhbmQKK2JlY29tZXMgdGhlIDphdHRyOmBTdG9wSXRlcmF0aW9uLnZhbHVlYCBhdHRyaWJ1dGUuCiAKIAogLi4gX3lpZWxkOgpAQCAtNDQ5LDYgKzQ0OSw3IEBACiBhbmQgaXMgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uIFVzaW5nIGEgOmtleXdvcmQ6YHlpZWxkYAogc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvIGNhdXNlIHRoYXQgZGVmaW5pdGlvbiB0bwogY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWwgZnVuY3Rpb24uCisKIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuIGl0ZXJhdG9yIGtub3duIGFzIGEgZ2VuZXJhdG9yCiBpdGVyYXRvciwgb3IgbW9yZSBjb21tb25seSwgYSBnZW5lcmF0b3IuICBUaGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzCiBleGVjdXRlZCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24gb24gdGhlIGdlbmVyYXRvciByZXBlYXRlZGx5IHVudGlsCkBAIC00NjgsMTQgKzQ2OSwyOCBAQAogZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgOm1ldGg6YGNsb3NlYCBtZXRob2Qgd2lsbCBiZQogY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlcyB0byBleGVjdXRlLgogCitXaGVuIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCBpcyB1c2VkLCBpdCB0cmVhdHMgdGhlIHN1cHBsaWVkIGV4cHJlc3Npb24gYXMKK2Egc3ViaXRlcmF0b3IsIHByb2R1Y2luZyB2YWx1ZXMgZnJvbSBpdCB1bnRpbCB0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpcworZXhoYXVzdGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlIGNvbnRyb2wgZmxvdyB0byBhIHN1Yml0ZXJhdG9yCisKK0ZvciBmdWxsIGRldGFpbHMgb2YgOmtleXdvcmQ6YHlpZWxkYCBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSA6cmVmOmB5aWVsZGV4cHJgCitzZWN0aW9uLgorCiAuLiBzZWVhbHNvOjoKIAogICAgOnBlcDpgMDI1NWAgLSBTaW1wbGUgR2VuZXJhdG9ycwogICAgICAgVGhlIHByb3Bvc2FsIGZvciBhZGRpbmcgZ2VuZXJhdG9ycyBhbmQgdGhlIDprZXl3b3JkOmB5aWVsZGAgc3RhdGVtZW50IHRvIFB5dGhvbi4KIAogICAgOnBlcDpgMDM0MmAgLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzCi0gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWQgYWxsb3dpbmcKLSAgICAgIDprZXl3b3JkOmB5aWVsZGAgdG8gYXBwZWFyIGluc2lkZSBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgYmxvY2suCisgICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nIHRoZW0KKyAgICAgIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy4KKworICAgOnBlcDpgMDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIDp0b2tlbjpgeWllbGRfZnJvbWAgc3ludGF4LCBtYWtpbmcgZGVsZWdhdGlvbgorICAgICAgdG8gc3ViLWdlbmVyYXRvcnMgZWFzeS4KIAogCiAuLiBfcmFpc2U6CkBAIC02NDUsMTYxICs2NjAsOTggQEAKICAgIHJlbGF0aXZlX21vZHVsZTogIi4iKiBgbW9kdWxlYCB8ICIuIisKICAgIG5hbWU6IGBpZGVudGlmaWVyYAogCi1JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kIGluaXRpYWxpemUKLWl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSAob2YgdGhlIHNjb3BlCi13aGVyZSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3VycykuIFRoZSBzdGF0ZW1lbnQgY29tZXMgaW4gdHdvCi1mb3JtcyBkaWZmZXJpbmcgb24gd2hldGhlciBpdCB1c2VzIHRoZSA6a2V5d29yZDpgZnJvbWAga2V5d29yZC4gVGhlIGZpcnN0IGZvcm0KLSh3aXRob3V0IDprZXl3b3JkOmBmcm9tYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3IgZWFjaCBpZGVudGlmaWVyIGluIHRoZSBsaXN0LgotVGhlIGZvcm0gd2l0aCA6a2V5d29yZDpgZnJvbWAgcGVyZm9ybXMgc3RlcCAoMSkgb25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcAotKDIpIHJlcGVhdGVkbHkuIEZvciBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZQotOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUuCitUaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gOmtleXdvcmQ6YGZyb21gIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvCitzdGVwczoKIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogcGFja2FnZQorIy4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeQorIy4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmUKKyAgIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzLgogCi1UbyB1bmRlcnN0YW5kIGhvdyBzdGVwICgxKSBvY2N1cnMsIG9uZSBtdXN0IGZpcnN0IHVuZGVyc3RhbmQgaG93IFB5dGhvbiBoYW5kbGVzCi1oaWVyYXJjaGljYWwgbmFtaW5nIG9mIG1vZHVsZXMuIFRvIGhlbHAgb3JnYW5pemUgbW9kdWxlcyBhbmQgcHJvdmlkZSBhCi1oaWVyYXJjaHkgaW4gbmFtaW5nLCBQeXRob24gaGFzIGEgY29uY2VwdCBvZiBwYWNrYWdlcy4gQSBwYWNrYWdlIGNhbiBjb250YWluCi1vdGhlciBwYWNrYWdlcyBhbmQgbW9kdWxlcyB3aGlsZSBtb2R1bGVzIGNhbm5vdCBjb250YWluIG90aGVyIG1vZHVsZXMgb3IKLXBhY2thZ2VzLiBGcm9tIGEgZmlsZSBzeXN0ZW0gcGVyc3BlY3RpdmUsIHBhY2thZ2VzIGFyZSBkaXJlY3RvcmllcyBhbmQgbW9kdWxlcwotYXJlIGZpbGVzLiBUaGUgb3JpZ2luYWwgYHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzCi08aHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbD5gXyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCwKLWFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXQgZG9jdW1lbnQuCitXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5Citjb21tYXMpIHRoZSB0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0CithcyB0aG91Z2ggdGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWRpdWFsIGltcG9ydAorc3RhdGVtZW50cy4KIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLm1vZHVsZXMKK1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXMgZGVzY3JpYmVkIGluCitncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgOnJlZjpgaW1wb3J0IHN5c3RlbSA8aW1wb3J0c3lzdGVtPmAsCit3aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbgorYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZQordGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlIGVpdGhlcgordGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUKK2luaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlIG1vZHVsZSdzIGNvZGUuCiAKLU9uY2UgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpcyBrbm93biAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZSB0ZXJtCi0ibW9kdWxlIiB3aWxsIHJlZmVyIHRvIGJvdGggcGFja2FnZXMgYW5kIG1vZHVsZXMpLCBzZWFyY2hpbmcKLWZvciB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgY2FuIGJlZ2luLiBUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBpcwotOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkCi1wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKSBvZiBpbXBvcnQKLXVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBpbiB3aGljaCBjYXNlCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlCithdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czoKIAotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLm1ldGFfcGF0aAotICAgIHNpbmdsZTogZmluZGVyCi0gICAgcGFpcjogZmluZGVyOyBmaW5kX21vZHVsZQotICAgIHNpbmdsZTogX19wYXRoX18KKyogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IDprZXl3b3JkOmBhc2AsIHRoZW4gdGhlIG5hbWUKKyAgZm9sbG93aW5nIDprZXl3b3JkOmBhc2AgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS4KKyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGEgdG9wCisgIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhCisgIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlCisqIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZSBuYW1lCisgIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW4gdGhlIGxvY2FsCisgIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZSBpbXBvcnRlZCBtb2R1bGUKKyAgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZSByYXRoZXIgdGhhbiBkaXJlY3RseQogCi1JZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiB0aGUgY2FjaGUsIHRoZW4gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGlzIHNlYXJjaGVkCi0odGhlIHNwZWNpZmljYXRpb24gZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBjYW4gYmUgZm91bmQgaW4gOnBlcDpgMzAyYCkuCi1UaGUgb2JqZWN0IGlzIGEgbGlzdCBvZiA6dGVybTpgZmluZGVyYCBvYmplY3RzIHdoaWNoIGFyZSBxdWVyaWVkIGluIG9yZGVyIGFzIHRvCi13aGV0aGVyIHRoZXkga25vdyBob3cgdG8gbG9hZCB0aGUgbW9kdWxlIGJ5IGNhbGxpbmcgdGhlaXIgOm1ldGg6YGZpbmRfbW9kdWxlYAotbWV0aG9kIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZAotd2l0aGluIGEgcGFja2FnZSAoYXMgZGVub3RlZCBieSB0aGUgZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhCi1zZWNvbmQgYXJndW1lbnQgdG8gOm1ldGg6YGZpbmRfbW9kdWxlYCBpcyBnaXZlbiBhcyB0aGUgdmFsdWUgb2YgdGhlCi06YXR0cjpgX19wYXRoX19gIGF0dHJpYnV0ZSBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdAotZG90IGluIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlCi1pdCByZXR1cm5zIGEgOnRlcm06YGxvYWRlcmAgKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogc3lzLnBhdGhfaG9va3MKLSAgICBzaW5nbGU6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgc2luZ2xlOiBzeXMucGF0aAotCi1JZiBub25lIG9mIHRoZSBmaW5kZXJzIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBhcmUgYWJsZSB0byBmaW5kIHRoZSBtb2R1bGUKLXRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC4gSW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbgotdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZSBkZWZpbmVkLiBUaGUgb25lIHRoZXkgYWxsIGRvCi1kZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlcyA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLAotOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgYW5kIDpkYXRhOmBzeXMucGF0aGAuCi0KLVRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiIHNwZWNpZmllZAotaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW0gcGF0aHMpLiBJZiB0aGUKLW1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWQgd2l0aGluIGEgcGFja2FnZSB0aGVuIHRoZQotc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byA6bWV0aDpgZmluZF9tb2R1bGVgLCA6YXR0cjpgX19wYXRoX19gIG9uIHRoZSBwYXJlbnQKLXBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWYgdGhlIG1vZHVsZSBpcyBub3QgY29udGFpbmVkIGluIGEKLXBhY2thZ2UgdGhlbiA6ZGF0YTpgc3lzLnBhdGhgIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4KLQotT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYSBmaW5kZXIgdGhhdAotY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0IDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgY2FjaGVzCi1maW5kZXJzIGZvciBwYXRocyBhbmQgaXMgY2hlY2tlZCBmb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYQotZmluZGVyIGNhY2hlZCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMgc2VhcmNoZWQgYnkgY2FsbGluZyBlYWNoIG9iamVjdCBpbgotdGhlIGxpc3Qgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCBvZiB0aGUgcGF0aCwgcmV0dXJuaW5nIGEgZmluZGVyIG9yIHJhaXNlcwotOmV4YzpgSW1wb3J0RXJyb3JgLiBJZiBhIGZpbmRlciBpcyByZXR1cm5lZCB0aGVuIGl0IGlzIGNhY2hlZCBpbgotOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbmQgdGhlbiB1c2VkIGZvciB0aGF0IHBhdGggZW50cnkuIElmIG5vIGZpbmRlcgotY2FuIGJlIGZvdW5kIGJ1dCB0aGUgcGF0aCBleGlzdHMgdGhlbiBhIHZhbHVlIG9mIGBgTm9uZWBgIGlzCi1zdG9yZWQgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsCi1maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlcyBzaG91bGQgYmUKLXVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlciB3aGljaCBhbHdheXMKLXJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IGxvYWRlcgotICAgIHBhaXI6IGxvYWRlcjsgbG9hZF9tb2R1bGUKLSAgICBleGNlcHRpb246IEltcG9ydEVycm9yCi0KLUlmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gT3RoZXJ3aXNlCi1zb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSA6bWV0aDpgbG9hZF9tb2R1bGVgIG1ldGhvZCBpcyBjYWxsZWQgd2l0aAotdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIChzZWUgOnBlcDpgMzAyYCBmb3IgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24gb2YKLWxvYWRlcnMpLiBBIGxvYWRlciBoYXMgc2V2ZXJhbCByZXNwb25zaWJpbGl0aWVzIHRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQKLWxvYWRzLiBGaXJzdCwgaWYgdGhlIG1vZHVsZSBhbHJlYWR5IGV4aXN0cyBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIChhCi1wb3NzaWJpbGl0eSBpZiB0aGUgbG9hZGVyIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRoZSBpbXBvcnQgbWFjaGluZXJ5KSB0aGVuIGl0Ci1pcyB0byB1c2UgdGhhdCBtb2R1bGUgZm9yIGluaXRpYWxpemF0aW9uIGFuZCBub3QgYSBuZXcgbW9kdWxlLiBCdXQgaWYgdGhlCi1tb2R1bGUgZG9lcyBub3QgZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGl0IGlzIHRvIGJlIGFkZGVkIHRvIHRoYXQKLWRpY3QgYmVmb3JlIGluaXRpYWxpemF0aW9uIGJlZ2lucy4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIG9mIHRoZQotbW9kdWxlIGFuZCBpdCB3YXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlCi1kaWN0LiBJZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBpdAotaXMgbGVmdCBpbiB0aGUgZGljdC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogX19uYW1lX18KLSAgICBzaW5nbGU6IF9fZmlsZV9fCi0gICAgc2luZ2xlOiBfX3BhdGhfXwotICAgIHNpbmdsZTogX19wYWNrYWdlX18KLSAgICBzaW5nbGU6IF9fbG9hZGVyX18KLQotVGhlIGxvYWRlciBtdXN0IHNldCBzZXZlcmFsIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZS4gOmRhdGE6YF9fbmFtZV9fYCBpcyB0byBiZQotc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIDpkYXRhOmBfX2ZpbGVfX2AgaXMgdG8gYmUgdGhlICJwYXRoIiB0byB0aGUgZmlsZQotdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpbgotOmRhdGE6YHN5cy5idWlsdGluX21vZHVsZV9uYW1lc2ApIGluIHdoaWNoIGNhc2UgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LgotSWYgd2hhdCBpcyBiZWluZyBpbXBvcnRlZCBpcyBhIHBhY2thZ2UgdGhlbiA6ZGF0YTpgX19wYXRoX19gIGlzIHRvIGJlIHNldCB0byBhCi1saXN0IG9mIHBhdGhzIHRvIGJlIHNlYXJjaGVkIHdoZW4gbG9va2luZyBmb3IgbW9kdWxlcyBhbmQgcGFja2FnZXMgY29udGFpbmVkCi13aXRoaW4gdGhlIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQuIDpkYXRhOmBfX3BhY2thZ2VfX2AgaXMgb3B0aW9uYWwgYnV0IHNob3VsZAotYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgKHRoZSBlbXB0eQotc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkIGluIGEgcGFja2FnZSkuIDpkYXRhOmBfX2xvYWRlcl9fYCBpcwotYWxzbyBvcHRpb25hbCBidXQgc2hvdWxkIGJlIHNldCB0byB0aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlCi1tb2R1bGUuCi0KLS4uIGluZGV4OjoKLSAgICBleGNlcHRpb246IEltcG9ydEVycm9yCi0KLUlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyB0aGVuIHRoZSBsb2FkZXIgcmFpc2VzIDpleGM6YEltcG9ydEVycm9yYCBpZgotc29tZSBvdGhlciBleGNlcHRpb24gaXMgbm90IGFscmVhZHkgYmVpbmcgcHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIKLXJldHVybnMgdGhlIG1vZHVsZSB0aGF0IHdhcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkLgotCi1XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhbiBiZWdpbi4KLQotVGhlIGZpcnN0IGZvcm0gb2YgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGUgbG9jYWwKLW5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlIG5leHQgaWRlbnRpZmllciwKLWlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSA6a2V5d29yZDpgYXNgLCB0aGUgbmFtZSBmb2xsb3dpbmcKLTprZXl3b3JkOmBhc2AgaXMgdXNlZCBhcyB0aGUgbG9jYWwgbmFtZSBmb3IgdGhlIG1vZHVsZS4KIAogLi4gaW5kZXg6OgogICAgcGFpcjogbmFtZTsgYmluZGluZworICAga2V5d29yZDogZnJvbQogICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgogCi1UaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gZG9lcyBub3QgYmluZCB0aGUgbW9kdWxlIG5hbWU6IGl0IGdvZXMgdGhyb3VnaCB0aGUgbGlzdAotb2YgaWRlbnRpZmllcnMsIGxvb2tzIGVhY2ggb25lIG9mIHRoZW0gdXAgaW4gdGhlIG1vZHVsZSBmb3VuZCBpbiBzdGVwICgxKSwgYW5kCi1iaW5kcyB0aGUgbmFtZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBvYmplY3QgdGh1cyBmb3VuZC4gIEFzIHdpdGggdGhlCi1maXJzdCBmb3JtIG9mIDprZXl3b3JkOmBpbXBvcnRgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZSBjYW4gYmUgc3VwcGxpZWQgYnkKLXNwZWNpZnlpbmcgIjprZXl3b3JkOmBhc2AgbG9jYWxuYW1lIi4gIElmIGEgbmFtZSBpcyBub3QgZm91bmQsCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyCi0oYGAnKidgYCksIGFsbCBwdWJsaWMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwKLW5hbWVzcGFjZSBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LgorVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczoKKworIy4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgOmtleXdvcmQ6YGZyb21gIGNsYXVzZSBsb2FkaW5nIGFuZAorICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTsKKyMuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlIDprZXl3b3JkOmBpbXBvcnRgIGNsYXVzZXM6CisKKyAgICMuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUKKyAgICMuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW4KKyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlCisgICAjLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKyAgICMuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlLAorICAgICAgdXNpbmcgdGhlIG5hbWUgaW4gdGhlIDprZXl3b3JkOmBhc2AgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsCisgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lCisKK0V4YW1wbGVzOjoKKworICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHkKKyAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5CisgICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmIKKyAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhegorICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHIKKworSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyIChgYCcqJ2BgKSwgYWxsIHB1YmxpYworbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUKK3doZXJlIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzLgogCiAuLiBpbmRleDo6IHNpbmdsZTogX19hbGxfXyAob3B0aW9uYWwgbW9kdWxlIGF0dHJpYnV0ZSkKIAogVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIG1vZHVsZSdzCi1uYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZSBvZgotc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbgotYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAKLWlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzCi1uYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKGBgJ18nYGApLgotYGBfX2FsbF9fYGAgc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZAotYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkKLW1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuCituYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZQorb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcworZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYKK2BgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQKK2luIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIKKyhgYCdfJ2BgKS4gIGBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQKK3RvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcworbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgorCitUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4KK0F0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYQorOmV4YzpgU3ludGF4RXJyb3JgLgorCisuLiBpbmRleDo6IHNpbmdsZTogX19hbGxfXyAob3B0aW9uYWwgbW9kdWxlIGF0dHJpYnV0ZSkKKworVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIG1vZHVsZSdzCituYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0IG11c3QgYmUgYSBzZXF1ZW5jZQorb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0IG1vZHVsZS4gIFRoZSBuYW1lcworZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYKK2BgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQKK2luIHRoZSBtb2R1bGUncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90IGJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIKKyhgYCdfJ2BgKS4gIGBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQKK3RvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcworbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgogCiBUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZSB3aWxkCiBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbCBiL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKaW5kZXggNzQ4Y2I5MS4uYTBlYzMyZiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbAorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCkBAIC0zLDcgKzMsNyBAQAogCSAgICA8aDM+RG9jcyBmb3Igb3RoZXIgdmVyc2lvbnM8L2gzPgogCSAgICA8dWw+CiAJICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMi43LyI+UHl0aG9uIDIuNyAoc3RhYmxlKTwvYT48L2xpPgotCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8iPlB5dGhvbiAzLjMgKGluIGRldmVsb3BtZW50KTwvYT48L2xpPgorCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC8iPlB5dGhvbiAzLjQgKGluIGRldmVsb3BtZW50KTwvYT48L2xpPgogICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy92ZXJzaW9ucy8iPk9sZCB2ZXJzaW9uczwvYT48L2xpPgogICAgICAgICAgICAgPC91bD4KIApkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbCBiL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwKaW5kZXggNGIxNmIzZi4uMTZhOTIxMiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbAorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2xheW91dC5odG1sCkBAIC0xNiw2ICsxNiw2MyBAQAogICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSJ7eyBwYXRodG8oJ19zdGF0aWMvcHkucG5nJywgMSkgfX0iIC8+CiAgICAgeyUgaWYgbm90IGVtYmVkZGVkICV9PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3sgcGF0aHRvKCdfc3RhdGljL2NvcHlidXR0b24uanMnLCAxKSB9fSI+PC9zY3JpcHQ+eyUgZW5kaWYgJX0KICAgICB7JSBpZiB2ZXJzaW9uc3dpdGNoZXIgaXMgZGVmaW5lZCBhbmQgbm90IGVtYmVkZGVkICV9PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3sgcGF0aHRvKCdfc3RhdGljL3ZlcnNpb25fc3dpdGNoLmpzJywgMSkgfX0iPjwvc2NyaXB0PnslIGVuZGlmICV9CisgICAgeyUgaWYgcGFnZW5hbWUgPT0gJ3doYXRzbmV3L2NoYW5nZWxvZycgJX0KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKyAgICAgICAgICAvLyBhZGQgdGhlIHNlYXJjaCBmb3JtIGFuZCBiaW5kIHRoZSBldmVudHMKKyAgICAgICAgICAkKCdoMScpLmFmdGVyKFsKKyAgICAgICAgICAgICc8cD5GaWx0ZXIgZW50cmllcyBieSBjb250ZW50OicsCisgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSIiIGlkPSJzZWFyY2hib3giIHN0eWxlPSJ3aWR0aDogNTAlIj4nLAorICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJzZWFyY2hib3gtc3VibWl0IiB2YWx1ZT0iRmlsdGVyIj48L3A+JworICAgICAgICAgIF0uam9pbignXG4nKSk7CisKKyAgICAgICAgICBmdW5jdGlvbiBkb2ZpbHRlcigpIHsKKyAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgIHZhciBxdWVyeSA9IG5ldyBSZWdFeHAoJCgnI3NlYXJjaGJveCcpLnZhbCgpLCAnaScpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIG5vdCBhIHZhbGlkIHJlZ2V4ICh5ZXQpCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgLy8gZmluZCBoZWFkZXJzIGZvciB0aGUgdmVyc2lvbnMgKFdoYXQncyBuZXcgaW4gUHl0aG9uIFguWS5aPykKKyAgICAgICAgICAgICAgJCgnI2NoYW5nZWxvZyBoMicpLmVhY2goZnVuY3Rpb24oaW5kZXgxLCBoMikgeworICAgICAgICAgICAgICAgICAgdmFyIGgyX3BhcmVudCA9ICQoaDIpLnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb25zX2ZvdW5kID0gMDsKKyAgICAgICAgICAgICAgICAgIC8vIGZpbmQgaGVhZGVycyBmb3IgdGhlIHNlY3Rpb25zIChDb3JlLCBMaWJyYXJ5LCBldGMuKQorICAgICAgICAgICAgICAgICAgaDJfcGFyZW50LmZpbmQoJ2gzJykuZWFjaChmdW5jdGlvbihpbmRleDIsIGgzKSB7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGgzX3BhcmVudCA9ICQoaDMpLnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgICAgIHZhciBlbnRyaWVzX2ZvdW5kID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBmaW5kIGFsbCB0aGUgZW50cmllcworICAgICAgICAgICAgICAgICAgICAgIGgzX3BhcmVudC5maW5kKCdsaScpLmVhY2goZnVuY3Rpb24oaW5kZXgzLCBsaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGkgPSAkKGxpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIHF1ZXJ5IG1hdGNoZXMgdGhlIGVudHJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeS50ZXN0KGxpLnRleHQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpLnNob3coKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXNfZm91bmQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpLmhpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBlbnRyaWVzLCBzaG93IHRoZSBzZWN0aW9uLCBvdGhlcndpc2UgaGlkZSBpdAorICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzX2ZvdW5kID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBoM19wYXJlbnQuc2hvdygpOworICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uc19mb3VuZCsrOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaDNfcGFyZW50LmhpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uc19mb3VuZCA+IDApCisgICAgICAgICAgICAgICAgICAgICAgaDJfcGFyZW50LnNob3coKTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICBoMl9wYXJlbnQuaGlkZSgpOworICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisgICAgICAgICAgJCgnI3NlYXJjaGJveCcpLmtleXVwKGRvZmlsdGVyKTsKKyAgICAgICAgICAkKCcjc2VhcmNoYm94LXN1Ym1pdCcpLmNsaWNrKGRvZmlsdGVyKTsKKyAgICAgIH0pOworICAgIDwvc2NyaXB0PgorICAgIHslIGVuZGlmICV9CiB7eyBzdXBlcigpIH19CiB7JSBlbmRibG9jayAlfQogeyUgYmxvY2sgZm9vdGVyICV9CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkKaW5kZXggYjA3MGQ2MC4uYmNhMmViOCAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weQpAQCAtMzQsOCArMzQsNyBAQAogCiAgICAgcmVsZWFzZSA9IHZlcnNpb24gPSAnJXMuJXMnICUgKGRbJ1BZX01BSk9SX1ZFUlNJT04nXSwgZFsnUFlfTUlOT1JfVkVSU0lPTiddKQogICAgIG1pY3JvID0gaW50KGRbJ1BZX01JQ1JPX1ZFUlNJT04nXSkKLSAgICBpZiBtaWNybyAhPSAwOgotICAgICAgICByZWxlYXNlICs9ICcuJyArIHN0cihtaWNybykKKyAgICByZWxlYXNlICs9ICcuJyArIHN0cihtaWNybykKIAogICAgIGxldmVsID0gZFsnUFlfUkVMRUFTRV9MRVZFTCddCiAgICAgc3VmZml4ZXMgPSB7CkBAIC01MSw4ICs1MCw3IEBACiBkZWYgZ2V0X3N5c192ZXJzaW9uX2luZm8oKToKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwogICAgIHJlbGVhc2UgPSB2ZXJzaW9uID0gJyVzLiVzJyAlIChtYWpvciwgbWlub3IpCi0gICAgaWYgbWljcm86Ci0gICAgICAgIHJlbGVhc2UgKz0gJy4lcycgJSBtaWNybworICAgIHJlbGVhc2UgKz0gJy4lcycgJSBtaWNybwogICAgIGlmIGxldmVsICE9ICdmaW5hbCc6CiAgICAgICAgIHJlbGVhc2UgKz0gJyVzJXMnICUgKGxldmVsWzBdLCBzZXJpYWwpCiAgICAgcmV0dXJuIHZlcnNpb24sIHJlbGVhc2UKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQppbmRleCA5YjJjYzQ3Li5lOGViNzAzIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CkBAIC01LDEyICs1LDEyIEBACiAKICAgICBTcGhpbnggZXh0ZW5zaW9uIHdpdGggUHl0aG9uIGRvYy1zcGVjaWZpYyBtYXJrdXAuCiAKLSAgICA6Y29weXJpZ2h0OiAyMDA4LCAyMDA5LCAyMDEwIGJ5IEdlb3JnIEJyYW5kbC4KKyAgICA6Y29weXJpZ2h0OiAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIGJ5IEdlb3JnIEJyYW5kbC4KICAgICA6bGljZW5zZTogUHl0aG9uIGxpY2Vuc2UuCiAiIiIKIAogSVNTVUVfVVJJID0gJ2h0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUlcycKLVNPVVJDRV9VUkkgPSAnaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMi8lcycKK1NPVVJDRV9VUkkgPSAnaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMy8lcycKIAogZnJvbSBkb2N1dGlscyBpbXBvcnQgbm9kZXMsIHV0aWxzCiBmcm9tIHNwaGlueC51dGlsLm5vZGVzIGltcG9ydCBzcGxpdF9leHBsaWNpdF90aXRsZQpAQCAtMTc0LDYgKzE3NCw0NyBAQAogICAgICAgICByZXR1cm4gcmV0CiAKIAorIyBTdXBwb3J0IGZvciBpbmNsdWRpbmcgTWlzYy9ORVdTCisKK2ltcG9ydCByZQoraW1wb3J0IGNvZGVjcworCitpc3N1ZV9yZSA9IHJlLmNvbXBpbGUoJyhbSWldKXNzdWUgIyhbMC05XSspJykKK3doYXRzbmV3X3JlID0gcmUuY29tcGlsZShyIig/aW0pXndoYXQncyBuZXcgaW4gKC4qPylcPz8kIikKKworY2xhc3MgTWlzY05ld3MoRGlyZWN0aXZlKToKKyAgICBoYXNfY29udGVudCA9IEZhbHNlCisgICAgcmVxdWlyZWRfYXJndW1lbnRzID0gMQorICAgIG9wdGlvbmFsX2FyZ3VtZW50cyA9IDAKKyAgICBmaW5hbF9hcmd1bWVudF93aGl0ZXNwYWNlID0gRmFsc2UKKyAgICBvcHRpb25fc3BlYyA9IHt9CisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBmbmFtZSA9IHNlbGYuYXJndW1lbnRzWzBdCisgICAgICAgIHNvdXJjZSA9IHNlbGYuc3RhdGVfbWFjaGluZS5pbnB1dF9saW5lcy5zb3VyY2UoCisgICAgICAgICAgICBzZWxmLmxpbmVubyAtIHNlbGYuc3RhdGVfbWFjaGluZS5pbnB1dF9vZmZzZXQgLSAxKQorICAgICAgICBzb3VyY2VfZGlyID0gcGF0aC5kaXJuYW1lKHBhdGguYWJzcGF0aChzb3VyY2UpKQorICAgICAgICBmcGF0aCA9IHBhdGguam9pbihzb3VyY2VfZGlyLCBmbmFtZSkKKyAgICAgICAgc2VsZi5zdGF0ZS5kb2N1bWVudC5zZXR0aW5ncy5yZWNvcmRfZGVwZW5kZW5jaWVzLmFkZChmcGF0aCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnAgPSBjb2RlY3Mub3BlbihmcGF0aCwgZW5jb2Rpbmc9J3V0Zi04JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb250ZW50ID0gZnAucmVhZCgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHRleHQgPSAnVGhlIE5FV1MgZmlsZSBpcyBub3QgYXZhaWxhYmxlLicKKyAgICAgICAgICAgIG5vZGUgPSBub2Rlcy5zdHJvbmcodGV4dCwgdGV4dCkKKyAgICAgICAgICAgIHJldHVybiBbbm9kZV0KKyAgICAgICAgY29udGVudCA9IGlzc3VlX3JlLnN1YihyJ2BcMXNzdWUgI1wyIDxodHRwOi8vYnVncy5weXRob24ub3JnL1wyPmBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkKKyAgICAgICAgY29udGVudCA9IHdoYXRzbmV3X3JlLnN1YihyJ1wxJywgY29udGVudCkKKyAgICAgICAgIyByZW1vdmUgZmlyc3QgMyBsaW5lcyBhcyB0aGV5IGFyZSB0aGUgbWFpbiBoZWFkaW5nCisgICAgICAgIGxpbmVzID0gWycuLiBkZWZhdWx0LXJvbGU6OiBvYmonLCAnJ10gKyBjb250ZW50LnNwbGl0bGluZXMoKVszOl0KKyAgICAgICAgc2VsZi5zdGF0ZV9tYWNoaW5lLmluc2VydF9pbnB1dChsaW5lcywgZm5hbWUpCisgICAgICAgIHJldHVybiBbXQorCisKICMgU3VwcG9ydCBmb3IgYnVpbGRpbmcgInRvcGljIGhlbHAiIGZvciBweWRvYwogCiBweWRvY190b3BpY19sYWJlbHMgPSBbCkBAIC0yMzAsMTEgKzI3MSwxMiBAQAogICAgICAgICAgICAgZG9jdW1lbnQuYXBwZW5kKGRvY3RyZWUuaWRzW2xhYmVsaWRdKQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBTdHJpbmdPdXRwdXQoZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgICAgIHdyaXRlci53cml0ZShkb2N1bWVudCwgZGVzdGluYXRpb24pCi0gICAgICAgICAgICBzZWxmLnRvcGljc1tsYWJlbF0gPSBzdHIod3JpdGVyLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYudG9waWNzW2xhYmVsXSA9IHdyaXRlci5vdXRwdXQuZW5jb2RlKCd1dGYtOCcpCiAKICAgICBkZWYgZmluaXNoKHNlbGYpOgogICAgICAgICBmID0gb3BlbihwYXRoLmpvaW4oc2VsZi5vdXRkaXIsICd0b3BpY3MucHknKSwgJ3cnKQogICAgICAgICB0cnk6CisgICAgICAgICAgICBmLndyaXRlKCcjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuJykKICAgICAgICAgICAgIGYud3JpdGUoJyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gJXNcbicgJSBhc2N0aW1lKCkpCiAgICAgICAgICAgICBmLndyaXRlKCd0b3BpY3MgPSAnICsgcGZvcm1hdChzZWxmLnRvcGljcykgKyAnXG4nKQogICAgICAgICBmaW5hbGx5OgpAQCAtMzA0LDMgKzM0Niw0IEBACiAgICAgYXBwLmFkZF9kZXNjcmlwdGlvbl91bml0KCcydG8zZml4ZXInLCAnMnRvM2ZpeGVyJywgJyVzICgydG8zIGZpeGVyKScpCiAgICAgYXBwLmFkZF9kaXJlY3RpdmVfdG9fZG9tYWluKCdweScsICdkZWNvcmF0b3InLCBQeURlY29yYXRvckZ1bmN0aW9uKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnZGVjb3JhdG9ybWV0aG9kJywgUHlEZWNvcmF0b3JNZXRob2QpCisgICAgYXBwLmFkZF9kaXJlY3RpdmUoJ21pc2NuZXdzJywgTWlzY05ld3MpCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKaW5kZXggNTA3NmFlZC4uMmMxNWE1YyAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgpAQCAtMSwxNiArMSwyNCBAQAogYy1hcGkvYXJnLCw6cmVmLCJQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiT3xPOnJlZiIiLCAmb2JqZWN0LCAmY2FsbGJhY2spIgogYy1hcGkvbGlzdCwsOmhpZ2gsbGlzdFtsb3c6aGlnaF0KIGMtYXBpL2xpc3QsLDpoaWdoLGxpc3RbbG93OmhpZ2hdID0gaXRlbWxpc3QKK2MtYXBpL3NlcXVlbmNlLCw6aTIsZGVsIG9baTE6aTJdCiBjLWFwaS9zZXF1ZW5jZSwsOmkyLG9baTE6aTJdCiBjLWFwaS9zZXF1ZW5jZSwsOmkyLG9baTE6aTJdID0gdgotYy1hcGkvc2VxdWVuY2UsLDppMixkZWwgb1tpMTppMl0KIGMtYXBpL3VuaWNvZGUsLDplbmQsc3RyW3N0YXJ0OmVuZF0KK2MtYXBpL3VuaWNvZGUsLDpzdGFydCx1bmljb2RlW3N0YXJ0OnN0YXJ0K2xlbmd0aF0KK2Rpc3R1dGlscy9leGFtcGxlcywyNjcsYCxUaGlzIGlzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBmb29iYXJgYCBwYWNrYWdlLgogZGlzdHV0aWxzL3NldHVwc2NyaXB0LCw6OiwKIGV4dGVuZGluZy9lbWJlZGRpbmcsLDpudW1hcmdzLCJpZighUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIjpudW1hcmdzIiIpKSIKLWV4dGVuZGluZy9leHRlbmRpbmcsLDpzZXQsImlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiTzpzZXRfY2FsbGJhY2siIiwgJnRlbXApKSB7IgogZXh0ZW5kaW5nL2V4dGVuZGluZywsOm15ZnVuY3Rpb24sIlB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJEOm15ZnVuY3Rpb24iIiwgJmMpOyIKK2V4dGVuZGluZy9leHRlbmRpbmcsLDpzZXQsImlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiTzpzZXRfY2FsbGJhY2siIiwgJnRlbXApKSB7IgogZXh0ZW5kaW5nL25ld3R5cGVzLCw6Y2FsbCwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIic3NzOmNhbGwiIiwgJmFyZzEsICZhcmcyLCAmYXJnMykpIHsiCiBleHRlbmRpbmcvd2luZG93cywsOmluaXRzcGFtLC9leHBvcnQ6aW5pdHNwYW0KK2ZhcS9wcm9ncmFtbWluZywsOmNociwiPj00LjApIG9yIDErZih4Yyx5Yyx4KngteSp5K3hjLDIuMCp4KnkreWMsay0xLGYpOmYoeGMseWMseCx5LGssZik6Y2hyKCIKK2ZhcS9wcm9ncmFtbWluZywsOjosZm9yIHggaW4gc2VxdWVuY2VbOjotMV06CitmYXEvcHJvZ3JhbW1pbmcsLDpyZWR1Y2UsInByaW50KChsYW1iZGEgUnUsUm8sSXUsSW8sSU0sU3gsU3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeSwiCitmYXEvcHJvZ3JhbW1pbmcsLDpyZWR1Y2UsIlN4PVN4LFN5PVN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHgseGM9UnUseWM9eWMsUnU9UnUsUm89Um8sIgorZmFxL3dpbmRvd3MsMjI5LDpFT0YsQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgJiBweXRob24gLXggJX5mMCAlKiAmIGdvdG8gOkVPRgorZmFxL3dpbmRvd3MsMzkzLDpSRUcsLnB5IDpSRUdfU1o6IGM6XDxwYXRoIHRvIHB5dGhvbj5ccHl0aG9uLmV4ZSAtdSAlcyAlcwogaG93dG8vY3BvcnRpbmcsLDphZGQsImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiImlpOmFkZF9pbnRzIiIsICZvbmUsICZ0d28pKSIKIGhvd3RvL2Nwb3J0aW5nLCw6ZW5jb2RlLCJpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJPOmVuY29kZV9vYmplY3QiIiwgJm15b2JqKSkiCiBob3d0by9jcG9ydGluZywsOnNheSwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiVTpzYXlfaGVsbG8iIiwgJm5hbWUpKSIKQEAgLTIyLDE5ICszMCw5MSBAQAogaG93dG8vY3Vyc2VzLCw6cmVkLCJUaGV5IGFyZTogMDpibGFjaywgMTpyZWQsIDI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQiCiBob3d0by9jdXJzZXMsLDp3aGl0ZSwiNzp3aGl0ZS4iCiBob3d0by9jdXJzZXMsLDp5ZWxsb3csIlRoZXkgYXJlOiAwOmJsYWNrLCAxOnJlZCwgMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCIKK2hvd3RvL2lwYWRkcmVzcywsOkRCOCw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnOjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGFkZHI2ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gaG9zdDYgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBob3N0NiA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOmZmZmYsSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6OmZmZmY6ZmZmZicpCitob3d0by9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCcyMDAxOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LCcyMDAxOmRiODo6JworaG93dG8vaXBhZGRyZXNzLCw6OiwnMjAwMTpkYjg6OicKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCwnMjAwMTpkYjg6Oi85NicKK2hvd3RvL2lwYWRkcmVzcywsOjosJzIwMDE6ZGI4OjovOTYnCitob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOkFuZCB0aGlzLCB0b28iCitob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOnJvb3Q6QW5kIHRoaXMsIHRvbyIKK2hvd3RvL2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitob3d0by9sb2dnaW5nLCw6RmluaXNoZWQsSU5GTzpyb290OkZpbmlzaGVkCitob3d0by9sb2dnaW5nLCw6bG9nZ2VyLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKK2hvd3RvL2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2hvd3RvL2xvZ2dpbmcsLDptZXNzYWdlLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKK2hvd3RvL2xvZ2dpbmcsLDpyb290LERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpGaW5pc2hlZAoraG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U3RhcnRlZAoraG93dG8vbG9nZ2luZywsOnJvb3QsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgoraG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQoraG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290OldhdGNoIG91dCEKK2hvd3RvL2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKK2hvd3RvL2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCitob3d0by9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAoraG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQoraG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6VGhpcyBtZXNzYWdlIHNob3VsZCBhcHBlYXIgb24gdGhlIGNvbnNvbGUKK2hvd3RvL2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQoraG93dG8vcHlwb3J0aW5nLDc1LDo6LCMgbWFrZSBzdXJlIHRvIHVzZSA6OiBQeXRob24gKmFuZCogOjogUHl0aG9uIDo6IDMgc28KK2hvd3RvL3B5cG9ydGluZyw3NSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgoraG93dG8vcHlwb3J0aW5nLDc1LDo6LCdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMycKIGhvd3RvL3JlZ2V4LCw6OiwKIGhvd3RvL3JlZ2V4LCw6Zm9vLCg/OmZvbykKIGhvd3RvL3VybGxpYjIsLDpleGFtcGxlLCJmb3IgZXhhbXBsZSAiImpvZUBwYXNzd29yZDpleGFtcGxlLmNvbSIiIgogaG93dG8vd2Vic2VydmVycywsLi4gaW1hZ2U6LC4uIGltYWdlOjogaHR0cC5wbmcKIGxpYnJhcnkvYXVkaW9vcCwsOmlwb3MsIiMgZmFjdG9yID0gYXVkaW9vcC5maW5kZmFjdG9yKGluX3Rlc3RbaXBvcyoyOmlwb3MqMitsZW4ob3V0X3Rlc3QpXSwiCitsaWJyYXJ5L2Jpc2VjdCwzMiw6aGksYWxsKHZhbCA+PSB4IGZvciB2YWwgaW4gYVtpOmhpXSkKK2xpYnJhcnkvYmlzZWN0LDQyLDpoaSxhbGwodmFsID4geCBmb3IgdmFsIGluIGFbaTpoaV0pCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOmhvbWUsbXlfZGlyOiAke0NvbW1vbjpob21lX2Rpcn0vdHdvc2hlZHMKK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6b3B0aW9uLCR7c2VjdGlvbjpvcHRpb259CitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnBhdGgscHl0aG9uX2RpcjogJHtGcmFtZXdvcmtzOnBhdGh9L1B5dGhvbi9WZXJzaW9ucy8ke0ZyYW1ld29ya3M6UHl0aG9ufQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpQeXRob24scHl0aG9uX2RpcjogJHtGcmFtZXdvcmtzOnBhdGh9L1B5dGhvbi9WZXJzaW9ucy8ke0ZyYW1ld29ya3M6UHl0aG9ufQorbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBTZXQgdGhlIG9wdGlvbmFsIGByYXdgIGFyZ3VtZW50IG9mIGdldCgpIHRvIFRydWUgaWYgeW91IHdpc2ggdG8gZGlzYWJsZQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpzeXN0ZW0scGF0aDogJHtDb21tb246c3lzdGVtX2Rpcn0vTGlicmFyeS9GcmFtZXdvcmtzLworbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYGZhbGxiYWNrYCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGEgZmFsbGJhY2sgdmFsdWUKK2xpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgVGhlIG9wdGlvbmFsIGB2YXJzYCBhcmd1bWVudCBpcyBhIGRpY3Qgd2l0aCBtZW1iZXJzIHRoYXQgd2lsbCB0YWtlCiBsaWJyYXJ5L2RhdGV0aW1lLCw6TU0sCiBsaWJyYXJ5L2RhdGV0aW1lLCw6U1MsCiBsaWJyYXJ5L2RlY2ltYWwsLDpvcHRpb25hbCwidHJhaWxuZWc6b3B0aW9uYWwgdHJhaWxpbmcgbWludXMgaW5kaWNhdG9yIgogbGlicmFyeS9kaWZmbGliLCw6YWhpLGFbYWxvOmFoaV0KIGxpYnJhcnkvZGlmZmxpYiwsOmJoaSxiW2JsbzpiaGldCitsaWJyYXJ5L2RpZmZsaWIsLDppMSwKIGxpYnJhcnkvZGlmZmxpYiwsOmkyLAogbGlicmFyeS9kaWZmbGliLCw6ajIsCi1saWJyYXJ5L2RpZmZsaWIsLDppMSwKIGxpYnJhcnkvZGlzLCw6VE9TLAogbGlicmFyeS9kaXMsLGAsVE9TID0gYFRPU2AKIGxpYnJhcnkvZG9jdGVzdCwsYCxgYGZhY3RvcmlhbGBgIGZyb20gdGhlIGBgZXhhbXBsZWBgIG1vZHVsZToKQEAgLTQ0LDk2ICsxMjQsMTg2IEBACiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsImFbc3RhcnQ6c3RvcCwgaV0iCiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsYVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2hvdHNob3QsLDpsaW5lbm8sIm5jYWxscyAgdG90dGltZSAgcGVyY2FsbCAgY3VtdGltZSAgcGVyY2FsbCBmaWxlbmFtZTpsaW5lbm8oZnVuY3Rpb24pIgotbGlicmFyeS9odHRwbGliLCw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTICtISE1NIiIiCi1saWJyYXJ5L2ltYXBsaWIsLDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSIiIgotbGlicmFyeS9pdGVydG9vbHMsLDpzdG9wLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaHR0cC5jbGllbnQsLDpwb3J0LGhvc3Q6cG9ydAorbGlicmFyeS9odHRwLmNvb2tpZXMsLGAsISMkJSYnKistLl5fYHx+OgorbGlicmFyeS9pbWFwbGliLCw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCitsaWJyYXJ5L2ltYXBsaWIsLDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKK2xpYnJhcnkvaW5zcGVjdCwsOmludCwiPj4+IGRlZiBmb28oYSwgKiwgYjppbnQsICoqa3dhcmdzKToiCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsIicoYSwgKiwgYjppbnQsICoqa3dhcmdzKSciCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsJ2I6aW50JworbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykubmV0d29yaworbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEwMDAvOTYnKS5uZXR3b3JrCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpLm5ldG1hc2sKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykubmV0bWFzaworbGlicmFyeS9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCwiPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvOTYnLCBzdHJpY3Q9RmFsc2UpIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCI+Pj4gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC85NicsIHN0cmljdD1GYWxzZSkiCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosIiIiOjphYmM6NzpkZWYiIiIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGVmLCIiIjo6YWJjOjc6ZGVmIiIiCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosOjpGRkZGLzk2CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMjo6LzE2CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTo6LzMyCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IHN0cihpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCc6OjEnCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGludChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorbGlicmFyeS9pcGFkZHJlc3MsLDpmZjAwLGZmZmY6ZmYwMDo6CitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiMDAsMjAwMTpkYjAwOjowLzI0CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTpkYjAwOjowLzI0CitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiMDAsMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CitsaWJyYXJ5L2lwYWRkcmVzcywsOjosMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CitsaWJyYXJ5L2lwYWRkcmVzcywsOmZmMDAsMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6CiBsaWJyYXJ5L2l0ZXJ0b29scywsOnN0ZXAsZWxlbWVudHMgZnJvbSBzZXFbc3RhcnQ6c3RvcDpzdGVwXQorbGlicmFyeS9pdGVydG9vbHMsLDpzdG9wLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KIGxpYnJhcnkvbGluZWNhY2hlLCw6c3lzLCJzeXM6eDozOjM6c3lzOi9kZXY6L2Jpbi9zaCIKIGxpYnJhcnkvbG9nZ2luZywsOkFuZCwKK2xpYnJhcnkvbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKK2xpYnJhcnkvbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAorbGlicmFyeS9sb2dnaW5nLCw6bG9nZ2VyLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKK2xpYnJhcnkvbG9nZ2luZywsOkxvb2ssV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQorbGlicmFyeS9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwYWNrYWdlMSwKIGxpYnJhcnkvbG9nZ2luZywsOnBhY2thZ2UyLAotbGlicmFyeS9sb2dnaW5nLCw6cm9vdCwKLWxpYnJhcnkvbG9nZ2luZywsOlRoaXMsCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwb3J0LGhvc3Q6cG9ydAorbGlicmFyeS9sb2dnaW5nLCw6cm9vdCwKK2xpYnJhcnkvbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcworbGlicmFyeS9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcworbGlicmFyeS9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAorbGlicmFyeS9sb2dnaW5nLCw6VGhpcywKK2xpYnJhcnkvbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCitsaWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAogbGlicmFyeS9tbWFwLCw6aTIsb2JqW2kxOmkyXQotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLDpxdWV1ZSwiPj4+IFF1ZXVlTWFuYWdlci5yZWdpc3RlcignZ2V0X3F1ZXVlJywgY2FsbGFibGU9bGFtYmRhOnF1ZXVlKSIKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYCIKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRzbGljZV9fJywgKDIsIDcpKSAgICMgZXF1aXYgdG8gYGxbMjo3XWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBCYXNlTWFuYWdlcmAuCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBQb29sLmltYXAoKWAgKHdoaWNoIHdpbGwgc2F2ZSBvbiB0aGUgYW1vdW50IG9mIGNvZGUgbmVlZGVkIGFueXdheSkuCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEFkZCBtb3JlIHRhc2tzIHVzaW5nIGBwdXQoKWAKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgQSB0ZXN0IGZpbGUgZm9yIHRoZSBgbXVsdGlwcm9jZXNzaW5nYCBwYWNrYWdlCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEEgdGVzdCBvZiBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgIGNsYXNzCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEFkZCBtb3JlIHRhc2tzIHVzaW5nIGBwdXQoKWAKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgYEJhc2VNYW5hZ2VyYC4KK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLGBDbHVzdGVyYCBpcyBhIHN1YmNsYXNzIG9mIGBTeW5jTWFuYWdlcmAgc28gaXQgYWxsb3dzIGNyZWF0aW9uIG9mCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGNyZWF0ZSBzZXJ2ZXIgZm9yIGEgYEhvc3RNYW5hZ2VyYCBvYmplY3QKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgRGVwZW5kcyBvbiBgbXVsdGlwcm9jZXNzaW5nYCBwYWNrYWdlIC0tIHRlc3RlZCB3aXRoIGBwcm9jZXNzaW5nLTAuNjBgCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgaG9zdG5hbWVgIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBob3N0LiAgSWYgaG9zdG5hbWUgaXMgbm90CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGluIHRoZSBvcmlnaW5hbCBvcmRlciB0aGVuIGNvbnNpZGVyIHVzaW5nIGBQb29sLm1hcCgpYCBvcgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIj4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsICgyMCwpKSAgICAgIyBlcXVpdiB0byBgbFsyMF1gIgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIj4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldHNsaWNlX18nLCAoMiwgNykpICAgIyBlcXVpdiB0byBgbFsyOjddYCIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgTm90IHN1cmUgaWYgd2Ugc2hvdWxkIHN5bmNocm9uaXplIGFjY2VzcyB0byBgc29ja2V0LmFjY2VwdCgpYCBtZXRob2QgYnkKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgb2JqZWN0LiAgKFdlIGltcG9ydCBgbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbmAgdG8gZW5hYmxlIHRoaXMgcGlja2xpbmcuKQorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgUG9vbC5pbWFwKClgICh3aGljaCB3aWxsIHNhdmUgb24gdGhlIGFtb3VudCBvZiBjb2RlIG5lZWRlZCBhbnl3YXkpLgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLDpxdWV1ZSwiPj4+IFF1ZXVlTWFuYWdlci5yZWdpc3RlcignZ2V0X3F1ZXVlJywgY2FsbGFibGU9bGFtYmRhOnF1ZXVlKSIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZigpYCBhbmQgYGcoKWAgYWNjZXNzaWJsZSB2aWEgcHJveHkKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZygpYCBhbmQgYF9oKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gYmF6OyB1c2UgYEdlbmVyYXRvclByb3h5YCB0byBtYWtlIHByb3hpZXMKLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLGBDbHVzdGVyYCBpcyBhIHN1YmNsYXNzIG9mIGBTeW5jTWFuYWdlcmAgc28gaXQgYWxsb3dzIGNyZWF0aW9uIG9mCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgaG9zdG5hbWVgIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBob3N0LiAgSWYgaG9zdG5hbWUgaXMgbm90CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgc2xvdHNgIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHNsb3RzIGZvciBwcm9jZXNzZXMgb24KK2xpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLDpieXRlcworbGlicmFyeS9ubnRwbGliLCw6Ynl0ZXMsIlsneHJlZicsICdmcm9tJywgJzpsaW5lcycsICc6Ynl0ZXMnLCAncmVmZXJlbmNlcycsICdkYXRlJywgJ21lc3NhZ2UtaWQnLCAnc3ViamVjdCddIgorbGlicmFyeS9ubnRwbGliLCw6bGluZXMsOmxpbmVzCitsaWJyYXJ5L25udHBsaWIsLDpsaW5lcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCiBsaWJyYXJ5L29wdHBhcnNlLCw6bGVuLCJkZWwgcGFyc2VyLnJhcmdzWzpsZW4odmFsdWUpXSIKIGxpYnJhcnkvb3MucGF0aCwsOmZvbyxjOmZvbwogbGlicmFyeS9wYXJzZXIsLGAsIiIiTWFrZSBhIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIGFuIGFyZ3VtZW50IHRvIHRoZSBleHBvbmVudCBgZXhwYC4iIiIKK2xpYnJhcnkvcGRiLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubworbGlicmFyeS9wZGIsLDpsaW5lbm8sW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXQorbGlicmFyeS9waWNrbGUsLDptZW1vcnksImNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIiI6bWVtb3J5OiIiKSIKIGxpYnJhcnkvcG9zaXgsLGAsIkNGTEFHUz0iImBnZXRjb25mIExGU19DRkxBR1NgIiIgT1BUPSIiLWcgLU8yICRDRkxBR1MiIiIKLWxpYnJhcnkvcHJvZmlsZSwsOmxpbmVubyxuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInY2xhc3NpZmllcnMnOiBbJ0RldmVsb3BtZW50IFN0YXR1cyA6OiA0IC0gQmV0YScsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInTGljZW5zZSA6OiBPU0kgQXBwcm92ZWQgOjogTUlUIExpY2Vuc2UnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ05hdHVyYWwgTGFuZ3VhZ2UgOjogRW5nbGlzaCcsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInT3BlcmF0aW5nIFN5c3RlbSA6OiBPUyBJbmRlcGVuZGVudCcsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMnXSwiCiBsaWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLG5jYWxscyAgdG90dGltZSAgcGVyY2FsbCAgY3VtdGltZSAgcGVyY2FsbCBmaWxlbmFtZTpsaW5lbm8oZnVuY3Rpb24pCitsaWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sIihzb3J0IGJ5IGZpbGVuYW1lOmxpbmVubyksIgogbGlicmFyeS9weWV4cGF0LCw6ZWxlbTEsPHB5OmVsZW0xIC8+CiBsaWJyYXJ5L3B5ZXhwYXQsLDpweSwieG1sbnM6cHkgPSAiImh0dHA6Ly93d3cucHl0aG9uLm9yZy9ucy8iIj4iCiBsaWJyYXJ5L3JlcHIsLGAsInJldHVybiBgb2JqYCIKIGxpYnJhcnkvc210cGxpYiwsOnBvcnQsImFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydCBzZXJ2ZXIuIgorbGlicmFyeS9zbXRwbGliLCw6cG9ydCxtZXRob2QgbXVzdCBzdXBwb3J0IHRoYXQgYXMgd2VsbCBhcyBhIHJlZ3VsYXIgaG9zdDpwb3J0CitsaWJyYXJ5L3NvY2tldCwsOjosIigxMCwgMSwgNiwgJycsICgnMjAwMTo4ODg6MjAwMDpkOjphMicsIDgwLCAwLCAwKSldIgogbGlicmFyeS9zb2NrZXQsLDo6LCc1YWVmOjJiOjo4JwotbGlicmFyeS9zcWxpdGUzLCw6bWVtb3J5LAorbGlicmFyeS9zb2NrZXQsLDpjYW4sInJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkiCitsaWJyYXJ5L3NvY2tldCwsOmxlbixmZHMuZnJvbXN0cmluZyhjbXNnX2RhdGFbOmxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCitsaWJyYXJ5L3NxbGl0ZTMsLDphZ2UsImN1ci5leGVjdXRlKCIic2VsZWN0ICogZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIiIsIHsiIndobyIiOiB3aG8sICIiYWdlIiI6IGFnZX0pIgogbGlicmFyeS9zcWxpdGUzLCw6YWdlLCJzZWxlY3QgbmFtZV9sYXN0LCBhZ2UgZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIgotbGlicmFyeS9zcWxpdGUzLCw6d2hvLCJzZWxlY3QgbmFtZV9sYXN0LCBhZ2UgZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIgotbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KSBbSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkXTpNeSBPcmdhbml6YXRpb24sIEluYy4iCitsaWJyYXJ5L3NxbGl0ZTMsLDptZW1vcnksCitsaWJyYXJ5L3NxbGl0ZTMsLDp3aG8sImN1ci5leGVjdXRlKCIic2VsZWN0ICogZnJvbSBwZW9wbGUgd2hlcmUgbmFtZV9sYXN0PTp3aG8gYW5kIGFnZT06YWdlIiIsIHsiIndobyIiOiB3aG8sICIiYWdlIiI6IGFnZX0pIgogbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uYWwgVW5pdCBOYW1lIChlZywgc2VjdGlvbikgW106TXkgR3JvdXAiCitsaWJyYXJ5L3NzbCwsOk15LCJPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpIFtJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGRdOk15IE9yZ2FuaXphdGlvbiwgSW5jLiIKIGxpYnJhcnkvc3NsLCw6bXlzZXJ2ZXIsIkNvbW1vbiBOYW1lIChlZywgWU9VUiBuYW1lKSBbXTpteXNlcnZlci5teWdyb3VwLm15b3JnYW5pemF0aW9uLmNvbSIKIGxpYnJhcnkvc3NsLCw6TXlTdGF0ZSxTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxsIG5hbWUpIFtTb21lLVN0YXRlXTpNeVN0YXRlCiBsaWJyYXJ5L3NzbCwsOm9wcyxFbWFpbCBBZGRyZXNzIFtdOm9wc0BteXNlcnZlci5teWdyb3VwLm15b3JnYW5pemF0aW9uLmNvbQogbGlicmFyeS9zc2wsLDpTb21lLCJMb2NhbGl0eSBOYW1lIChlZywgY2l0eSkgW106U29tZSBDaXR5IgogbGlicmFyeS9zc2wsLDpVUyxDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpIFtBVV06VVMKK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBhWzo6LTFdLnRvbGlzdCgpCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6OjJdLnRvbGlzdCgpCitsaWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGhhc2godls6Oi0yXSkgPT0gaGFzaChiJ2FiY2VmZydbOjotMl0pCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6bGVuLHNbbGVuKHMpOmxlbihzKV0KLWxpYnJhcnkvc3RkdHlwZXMsLDpsZW4sc1tsZW4ocyk6bGVuKHMpXQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IHkgPSBtWzo6Ml0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiB6ID0geVs6Oi0yXQogbGlicmFyeS9zdHJpbmcsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N0cmluZywsOmVuZCxzW3N0YXJ0OmVuZF0KLWxpYnJhcnkvc3VicHJvY2VzcywsYCwib3V0cHV0PWBteWNtZCBteWFyZ2AiCiBsaWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gZG1lc2cgfCBncmVwIGhkYWAiCitsaWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gbXljbWQgbXlhcmdgIgorbGlicmFyeS90YXJmaWxlLCw6YnoyLAogbGlicmFyeS90YXJmaWxlLCw6Y29tcHJlc3Npb24sZmlsZW1vZGVbOmNvbXByZXNzaW9uXQogbGlicmFyeS90YXJmaWxlLCw6Z3osCi1saWJyYXJ5L3RhcmZpbGUsLDpiejIsCitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwnYTp4eicKK2xpYnJhcnkvdGFyZmlsZSwsOnh6LCdyOnh6JworbGlicmFyeS90YXJmaWxlLCw6eHosJ3c6eHonCiBsaWJyYXJ5L3RpbWUsLDptbSwKIGxpYnJhcnkvdGltZSwsOnNzLAogbGlicmFyeS90dXJ0bGUsLDo6LEV4YW1wbGU6OgotbGlicmFyeS91cmxsaWIsLDpwb3J0LDpwb3J0CiBsaWJyYXJ5L3VybGxpYjIsLDpwYXNzd29yZCwiIiJqb2U6cGFzc3dvcmRAcHl0aG9uLm9yZyIiIgorbGlicmFyeS91cmxsaWIsLDpwb3J0LDpwb3J0CitsaWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6Y2xvc2UsQ29ubmVjdGlvbjpjbG9zZQorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmxhbmcsInhtbG5zPSIiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIiIHhtbDpsYW5nPSIiZW4iIiBsYW5nPSIiZW4iIj5cblxuPGhlYWQ+XG4iCitsaWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKIGxpYnJhcnkvdXVpZCwsOnV1aWQsdXJuOnV1aWQ6MTIzNDU2NzgtMTIzNC01Njc4LTEyMzQtNTY3ODEyMzQ1Njc4Ci1saWJyYXJ5L3htbHJwY2xpYiwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAotbGlicmFyeS94bWxycGNsaWIsLDpwYXNzLHVzZXI6cGFzcwotbGlicmFyeS94bWxycGNsaWIsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAorbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAorbGljZW5zZSwsYCwiYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIgorbGljZW5zZSwsYCwiVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwiCitsaWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKK2xpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorbGljZW5zZSwsYCwqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE9wZW5TU0wgUFJPSkVDVCBgYEFTIElTJycgQU5EIEFOWQogbGljZW5zZSwsYCxUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBQUk9KRUNUIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogbGljZW5zZSwsOnpvb2tvLG1haWx0bzp6b29rb0B6b29rby5jb20KLWxpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotcmVmZXJlbmNlL2RhdGFtb2RlbCwsOnN0ZXAsYVtpOmo6c3RlcF0KIHJlZmVyZW5jZS9kYXRhbW9kZWwsLDptYXgsCi1yZWZlcmVuY2UvZXhwcmVzc2lvbnMsLDppbmRleCx4W2luZGV4OmluZGV4XQorcmVmZXJlbmNlL2RhdGFtb2RlbCwsOnN0ZXAsYVtpOmo6c3RlcF0KIHJlZmVyZW5jZS9leHByZXNzaW9ucywsOmRhdHVtLHtrZXk6ZGF0dW0uLi59CiByZWZlcmVuY2UvZXhwcmVzc2lvbnMsLGAsYGV4cHJlc3Npb25zLi4uYAorcmVmZXJlbmNlL2V4cHJlc3Npb25zLCw6aW5kZXgseFtpbmRleDppbmRleF0KIHJlZmVyZW5jZS9ncmFtbWFyLCw6b3V0cHV0LCNkaWFncmFtOm91dHB1dAogcmVmZXJlbmNlL2dyYW1tYXIsLDpydWxlcywjZGlhZ3JhbTpydWxlcwotcmVmZXJlbmNlL2dyYW1tYXIsLDp0b2tlbiwjZGlhZ3JhbTp0b2tlbgogcmVmZXJlbmNlL2dyYW1tYXIsLGAsJ2AnIHRlc3RsaXN0MSAnYCcKLXJlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLCw6ZmlsZWVuY29kaW5nLCMgdmltOmZpbGVlbmNvZGluZz08ZW5jb2RpbmctbmFtZT4KK3JlZmVyZW5jZS9ncmFtbWFyLCw6dG9rZW4sI2RpYWdyYW06dG9rZW4KIHJlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLCxgLCIsICAgICAgIDogICAgICAgLiAgICAgICBgICAgICAgID0gICAgICAgOyIKLXR1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLCw6dmFsdWUsa2V5OnZhbHVlIHBhaXJzIHdpdGhpbiB0aGUgYnJhY2VzIGFkZHMgaW5pdGlhbCBrZXk6dmFsdWUgcGFpcnMKK3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLCxgLCQgICAgICAgPyAgICAgICBgCityZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsOmZpbGVlbmNvZGluZywjIHZpbTpmaWxlZW5jb2Rpbmc9PGVuY29kaW5nLW5hbWU+CiB0dXRvcmlhbC9kYXRhc3RydWN0dXJlcywsOnZhbHVlLEl0IGlzIGFsc28gcG9zc2libGUgdG8gZGVsZXRlIGEga2V5OnZhbHVlCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsImZpZWxkcyA9IHN0cnVjdC51bnBhY2soJzxJSUlISCcsIGRhdGFbc3RhcnQ6c3RhcnQrMTZdKSIKLXR1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxleHRyYSA9IGRhdGFbc3RhcnQ6c3RhcnQrZXh0cmFfc2l6ZV0KLXR1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxmaWxlbmFtZSA9IGRhdGFbc3RhcnQ6c3RhcnQrZmlsZW5hbWVzaXplXQordHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMsLDp2YWx1ZSxrZXk6dmFsdWUgcGFpcnMgd2l0aGluIHRoZSBicmFjZXMgYWRkcyBpbml0aWFsIGtleTp2YWx1ZSBwYWlycwogdHV0b3JpYWwvc3RkbGliMiwsOmNvbmZpZywibG9nZ2luZy53YXJuaW5nKCdXYXJuaW5nOmNvbmZpZyBmaWxlICVzIG5vdCBmb3VuZCcsICdzZXJ2ZXIuY29uZicpIgogdHV0b3JpYWwvc3RkbGliMiwsOmNvbmZpZyxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKIHR1dG9yaWFsL3N0ZGxpYjIsLDpDcml0aWNhbCxDUklUSUNBTDpyb290OkNyaXRpY2FsIGVycm9yIC0tIHNodXR0aW5nIGRvd24KQEAgLTE0MSwxNSArMzExLDE2IEBACiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxDUklUSUNBTDpyb290OkNyaXRpY2FsIGVycm9yIC0tIHNodXR0aW5nIGRvd24KIHR1dG9yaWFsL3N0ZGxpYjIsLDpyb290LEVSUk9SOnJvb3Q6RXJyb3Igb2NjdXJyZWQKIHR1dG9yaWFsL3N0ZGxpYjIsLDpyb290LFdBUk5JTkc6cm9vdDpXYXJuaW5nOmNvbmZpZyBmaWxlIHNlcnZlci5jb25mIG5vdCBmb3VuZAordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LGV4dHJhID0gZGF0YVtzdGFydDpzdGFydCtleHRyYV9zaXplXQordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCit0dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KIHR1dG9yaWFsL3N0ZGxpYjIsLDpXYXJuaW5nLFdBUk5JTkc6cm9vdDpXYXJuaW5nOmNvbmZpZyBmaWxlIHNlcnZlci5jb25mIG5vdCBmb3VuZAotdXNpbmcvY21kbGluZSwsOmxpbmUsZmlsZTpsaW5lOiBjYXRlZ29yeTogbWVzc2FnZQogdXNpbmcvY21kbGluZSwsOmNhdGVnb3J5LGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCit1c2luZy9jbWRsaW5lLCw6ZXJyb3JoYW5kbGVyLDplcnJvcmhhbmRsZXIKIHVzaW5nL2NtZGxpbmUsLDpsaW5lLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCit1c2luZy9jbWRsaW5lLCw6bGluZSxmaWxlOmxpbmU6IGNhdGVnb3J5OiBtZXNzYWdlCiB1c2luZy9jbWRsaW5lLCw6bWVzc2FnZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOm1vZHVsZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQotdXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCi11c2luZy93aW5kb3dzLDE2MixgLGBgIHRoaXMgZml4ZXMgc3ludGF4IGhpZ2hsaWdodGluZyBlcnJvcnMgaW4gc29tZSBlZGl0b3JzIGR1ZSB0byB0aGUgXFxcXCBoYWNrZXJ5Ci11c2luZy93aW5kb3dzLDE3MCxgLGBgCiB3aGF0c25ldy8yLjAsNDE4LDpsZW4sCiB3aGF0c25ldy8yLjMsLDo6LAogd2hhdHNuZXcvMi4zLCw6Y29uZmlnLApAQCAtMTYzLDExMyArMzM0LDM4IEBACiB3aGF0c25ldy8yLjUsLDptZW1vcnksOm1lbW9yeToKIHdoYXRzbmV3LzIuNSwsOnN0ZXAsW3N0YXJ0OnN0b3A6c3RlcF0KIHdoYXRzbmV3LzIuNSwsOnN0b3AsW3N0YXJ0OnN0b3A6c3RlcF0KLWRpc3R1dGlscy9leGFtcGxlcywyNjcsYCxUaGlzIGlzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBmb29iYXJgYCBwYWNrYWdlLgotZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJwcmludCgobGFtYmRhIFJ1LFJvLEl1LElvLElNLFN4LFN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHksIgotZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJTeD1TeCxTeT1TeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB4LHhjPVJ1LHljPXljLFJ1PVJ1LFJvPVJvLCIKLWZhcS9wcm9ncmFtbWluZywsOmNociwiPj00LjApIG9yIDErZih4Yyx5Yyx4KngteSp5K3hjLDIuMCp4KnkreWMsay0xLGYpOmYoeGMseWMseCx5LGssZik6Y2hyKCIKLWZhcS9wcm9ncmFtbWluZywsOjosZm9yIHggaW4gc2VxdWVuY2VbOjotMV06Ci1mYXEvd2luZG93cywyMjksOkVPRixAc2V0bG9jYWwgZW5hYmxlZXh0ZW5zaW9ucyAmIHB5dGhvbiAteCAlfmYwICUqICYgZ290byA6RU9GCi1mYXEvd2luZG93cywzOTMsOlJFRywucHkgOlJFR19TWjogYzpcPHBhdGggdG8gcHl0aG9uPlxweXRob24uZXhlIC11ICVzICVzCi1saWJyYXJ5L2Jpc2VjdCwzMiw6aGksYWxsKHZhbCA+PSB4IGZvciB2YWwgaW4gYVtpOmhpXSkKLWxpYnJhcnkvYmlzZWN0LDQyLDpoaSxhbGwodmFsID4geCBmb3IgdmFsIGluIGFbaTpoaV0pCi1saWJyYXJ5L2h0dHAuY2xpZW50LDUyLDpwb3J0LGhvc3Q6cG9ydAotbGlicmFyeS9ubnRwbGliLCw6Ynl0ZXMsOmJ5dGVzCi1saWJyYXJ5L25udHBsaWIsLDpsaW5lcyw6bGluZXMKLWxpYnJhcnkvbm50cGxpYiwsOmxpbmVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKLWxpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKLWxpYnJhcnkvcGlja2xlLCw6bWVtb3J5LCJjb25uID0gc3FsaXRlMy5jb25uZWN0KCIiOm1lbW9yeToiIikiCi1saWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sIihzb3J0IGJ5IGZpbGVuYW1lOmxpbmVubyksIgotbGlicmFyeS9zb2NrZXQsLDo6LCIoMTAsIDEsIDYsICcnLCAoJzIwMDE6ODg4OjIwMDA6ZDo6YTInLCA4MCwgMCwgMCkpXSIKLWxpYnJhcnkvc3RkdHlwZXMsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmNsb3NlLENvbm5lY3Rpb246Y2xvc2UKLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpwYXNzd29yZCwiIiJqb2U6cGFzc3dvcmRAcHl0aG9uLm9yZyIiIgotbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmxhbmcsInhtbG5zPSIiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIiIHhtbDpsYW5nPSIiZW4iIiBsYW5nPSIiZW4iIj5cblxuPGhlYWQ+XG4iCi1saWJyYXJ5L3htbHJwYy5jbGllbnQsMTAzLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjLmNsaWVudCwxMDMsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAotbGlicmFyeS94bWxycGMuY2xpZW50LDEwMyw6cGFzcyx1c2VyOnBhc3MKLWxpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKLWxpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEVSSUMgWU9VTkcgYGBBUyBJUycnIEFORAotbGljZW5zZSwsYCwiYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIgotbGljZW5zZSwsYCwiVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwiCi1yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcyw3MDQsYCwkICAgICAgID8gICAgICAgYAotd2hhdHNuZXcvMi43LDczNSw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jwotd2hhdHNuZXcvMi43LDg2Miw6OiwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDg2Miw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCi13aGF0c25ldy8yLjcsMTYxOSw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQogd2hhdHNuZXcvMi43LDE2MTksOjosIlBhcnNlUmVzdWx0KHNjaGVtZT0naHR0cCcsIG5ldGxvYz0nWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0nLCIKLWxpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgU2V0IHRoZSBvcHRpb25hbCBgcmF3YCBhcmd1bWVudCBvZiBnZXQoKSB0byBUcnVlIGlmIHlvdSB3aXNoIHRvIGRpc2FibGUKLWxpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgVGhlIG9wdGlvbmFsIGB2YXJzYCBhcmd1bWVudCBpcyBhIGRpY3Qgd2l0aCBtZW1iZXJzIHRoYXQgd2lsbCB0YWtlCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgZmFsbGJhY2tgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYSBmYWxsYmFjayB2YWx1ZQotbGlicmFyeS9jb25maWdwYXJzZXIsLDpvcHRpb24sJHtzZWN0aW9uOm9wdGlvbn0KLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6c3lzdGVtLHBhdGg6ICR7Q29tbW9uOnN5c3RlbV9kaXJ9L0xpYnJhcnkvRnJhbWV3b3Jrcy8KLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6aG9tZSxteV9kaXI6ICR7Q29tbW9uOmhvbWVfZGlyfS90d29zaGVkcwotbGlicmFyeS9jb25maWdwYXJzZXIsLDpwYXRoLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6UHl0aG9uLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KLWxpYnJhcnkvcGRiLCw6bGluZW5vLFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV0KLWxpYnJhcnkvcGRiLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubwotbGlicmFyeS9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKLWxpYnJhcnkvbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotbGlicmFyeS9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAotbGlicmFyeS9sb2dnaW5nLCw6RG9pbmcsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZwotbGlicmFyeS9sb2dnaW5nLCw6RmluaXNoZWQsSU5GTzpyb290OkZpbmlzaGVkCi1saWJyYXJ5L2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWxpYnJhcnkvbG9nZ2luZywsOlNvLElORk86U28gc2hvdWxkIHRoaXMKLWxpYnJhcnkvbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1saWJyYXJ5L2xvZ2dpbmcsLDptZXNzYWdlLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKLXdoYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwuLi4gICAke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKLXdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLC4uLiB6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Ci13aGF0c25ldy8zLjIsLDpwcmVmaXgsLi4uIHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotaG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290OldhdGNoIG91dCEKLWhvd3RvL2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQotaG93dG8vbG9nZ2luZywsOnJvb3QsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQotaG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6cm9vdDpUaGlzIG1lc3NhZ2Ugc2hvdWxkIGdvIHRvIHRoZSBsb2cgZmlsZQotaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCi1ob3d0by9sb2dnaW5nLCw6U28sSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCi1ob3d0by9sb2dnaW5nLCw6cm9vdCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOnJvb3Q6QW5kIHRoaXMsIHRvbyIKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTdGFydGVkCi1ob3d0by9sb2dnaW5nLCw6U3RhcnRlZCxJTkZPOnJvb3Q6U3RhcnRlZAotaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZwotaG93dG8vbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpGaW5pc2hlZAotaG93dG8vbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAotaG93dG8vbG9nZ2luZywsOnJvb3QsV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQotaG93dG8vbG9nZ2luZywsOkxvb2ssV0FSTklORzpyb290Okxvb2sgYmVmb3JlIHlvdSBsZWFwIQotaG93dG8vbG9nZ2luZywsOlRoaXMsREVCVUc6VGhpcyBtZXNzYWdlIHNob3VsZCBhcHBlYXIgb24gdGhlIGNvbnNvbGUKLWhvd3RvL2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCi1ob3d0by9sb2dnaW5nLCw6QW5kLCJXQVJOSU5HOkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6bG9nZ2VyLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKLWhvd3RvL2xvZ2dpbmcsLDptZXNzYWdlLHNldmVyaXR5OmxvZ2dlciBuYW1lOm1lc3NhZ2UKLWxpYnJhcnkvbG9nZ2luZy5oYW5kbGVycywsOnBvcnQsaG9zdDpwb3J0Ci1saWJyYXJ5L2ltYXBsaWIsMTE2LDpNTSwiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKLWxpYnJhcnkvaW1hcGxpYiwxMTYsOlNTLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgotd2hhdHNuZXcvMy4yLCw6OiwiJCBleHBvcnQgUFlUSE9OV0FSTklOR1M9J2lnbm9yZTo6UnVudGltZVdhcm5pbmc6OixvbmNlOjpVbmljb2RlV2FybmluZzo6JyIKLWhvd3RvL3B5cG9ydGluZyw3NSw6OiwjIG1ha2Ugc3VyZSB0byB1c2UgOjogUHl0aG9uICphbmQqIDo6IFB5dGhvbiA6OiAzIHNvCi1ob3d0by9weXBvcnRpbmcsNzUsOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKLWhvd3RvL3B5cG9ydGluZyw3NSw6OiwnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMnCi13aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igotd2hhdHNuZXcvMy4yLCw6ZGlyZWN0b3J5LCR7YnVpbGRvdXQ6ZGlyZWN0b3J5fS9kb3dubG9hZHMvZGlzdAotd2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQotd2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotd2hhdHNuZXcvMy4yLCw6YmVlZiw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpjYWZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmFmZmUsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6ZGVhZiw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpmZWVkLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKLXdoYXRzbmV3LzMuMiwsOmNhZmUsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzIuNywxNjE5LDo6LD4+PiB1cmxwYXJzZS51cmxwYXJzZSgnaHR0cDovL1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdL2ZvbycpCit3aGF0c25ldy8yLjcsNzM1LDpTdW5kYXksJzIwMDk6NDpTdW5kYXknCit3aGF0c25ldy8yLjcsODYyLDpDb29raWUsImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKK3doYXRzbmV3LzIuNyw4NjIsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKIHdoYXRzbmV3LzMuMiwsOmFmZmUsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmFmZmUsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6YmVlZiwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgord2hhdHNuZXcvMy4yLCw6YmVlZiw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCit3aGF0c25ldy8zLjIsLDpjYWZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDpjYWZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKIHdoYXRzbmV3LzMuMiwsOmRlYWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmRlYWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6ZGlyZWN0b3J5LC4uLiAgICR7YnVpbGRvdXQ6ZGlyZWN0b3J5fS9kb3dubG9hZHMvZGlzdAord2hhdHNuZXcvMy4yLCw6ZGlyZWN0b3J5LCR7YnVpbGRvdXQ6ZGlyZWN0b3J5fS9kb3dubG9hZHMvZGlzdAord2hhdHNuZXcvMy4yLCw6OiwiJCBleHBvcnQgUFlUSE9OV0FSTklOR1M9J2lnbm9yZTo6UnVudGltZVdhcm5pbmc6OixvbmNlOjpVbmljb2RlV2FybmluZzo6JyIKIHdoYXRzbmV3LzMuMiwsOmZlZWQsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJ10sIgord2hhdHNuZXcvMy4yLCw6ZmVlZCw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCit3aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igord2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sLi4uIHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KK3doYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KK3doYXRzbmV3LzMuMiwsOnByZWZpeCwuLi4gem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCit3aGF0c25ldy8zLjIsLDpwcmVmaXgsem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCit3aGF0c25ldy9uZXdzLCw6cGxhdGZvcm0sOnBsYXRmb3JtOgord2hhdHNuZXcvbmV3cywsOnBhc3N3b3JkLDogVW5xdW90ZSBiZWZvcmUgYjY0ZW5jb2RpbmcgdXNlcjpwYXNzd29yZCBkdXJpbmcgQmFzaWMKK3doYXRzbmV3L25ld3MsLDpjbG9zZSxDb25uZWN0aW9uOmNsb3NlIGhlYWRlci4KK3doYXRzbmV3L25ld3MsLDpQeXRob25DbWQsIldpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQiCit3aGF0c25ldy9uZXdzLCw6Y2xvc2UsOiBDb25uZWN0aW9uOmNsb3NlIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgord2hhdHNuZXcvbmV3cywsOjosIjogRml4IEZUUCB0ZXN0cyBmb3IgSVB2NiwgYmluZCB0byAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIi4iCit3aGF0c25ldy9uZXdzLCw6dGVzdCw6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCit3aGF0c25ldy9uZXdzLCw6dGVzdCw6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCit3aGF0c25ldy9uZXdzLCw6T2xpbWl0LERyb3AgLU9QVDpPbGltaXQgY29tcGlsZXIgb3B0aW9uLgord2hhdHNuZXcvbmV3cywsOk1BWFlFQVIsdGltZWRlbHRhIGZyb20gZGF0ZSBvciBkYXRldGltZSBmYWxscyBvdXRzaWRlIG9mIHRoZSBNSU5ZRUFSOk1BWFlFQVIgcmFuZ2UuCit3aGF0c25ldy9uZXdzLCw6YnoyLHdpdGggbW9kZSAncicgb3IgJ3I6YnoyJyBhbmQgYSBmaWxlb2JqIGFyZ3VtZW50IHRoYXQgY29udGFpbmVkIG5vIGRhdGEgb3IKK3doYXRzbmV3L25ld3MsLDpkYjIsOiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0IGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CmluZGV4IGNmZjI3MTAuLjMyODNlNTQgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKQEAgLTE4NCw3ICsxODQsNiBAQAogCiAuLiBjb2RlLWJsb2NrOjogbm9uZQogCi0KICAgIEFmdGVyIGxvY2FsIGFzc2lnbm1lbnQ6IHRlc3Qgc3BhbQogICAgQWZ0ZXIgbm9ubG9jYWwgYXNzaWdubWVudDogbm9ubG9jYWwgc3BhbQogICAgQWZ0ZXIgZ2xvYmFsIGFzc2lnbm1lbnQ6IG5vbmxvY2FsIHNwYW0KQEAgLTY5OCw5ICs2OTcsOSBAQAogICAgY2xhc3MgRChDKToKICAgICAgICBwYXNzCiAKLSAgIGZvciBjIGluIFtCLCBDLCBEXToKKyAgIGZvciBjbHMgaW4gW0IsIEMsIERdOgogICAgICAgIHRyeToKLSAgICAgICAgICAgcmFpc2UgYygpCisgICAgICAgICAgIHJhaXNlIGNscygpCiAgICAgICAgZXhjZXB0IEQ6CiAgICAgICAgICAgIHByaW50KCJEIikKICAgICAgICBleGNlcHQgQzoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IDBlZTRkY2EuLjUzMDc3ZTQgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtMTksMTMgKzE5LDEzIEBACiAuLiBtZXRob2Q6OiBsaXN0LmFwcGVuZCh4KQogICAgOm5vaW5kZXg6CiAKLSAgIEFkZCBhbiBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Q7IGVxdWl2YWxlbnQgdG8gYGBhW2xlbihhKTpdID0gW3hdYGAuCisgICBBZGQgYW4gaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LiAgRXF1aXZhbGVudCB0byBgYGFbbGVuKGEpOl0gPSBbeF1gYC4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LmV4dGVuZChMKQogICAgOm5vaW5kZXg6CiAKLSAgIEV4dGVuZCB0aGUgbGlzdCBieSBhcHBlbmRpbmcgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gbGlzdDsgZXF1aXZhbGVudCB0bworICAgRXh0ZW5kIHRoZSBsaXN0IGJ5IGFwcGVuZGluZyBhbGwgdGhlIGl0ZW1zIGluIHRoZSBnaXZlbiBsaXN0LiAgRXF1aXZhbGVudCB0bwogICAgYGBhW2xlbihhKTpdID0gTGBgLgogCiAKQEAgLTQwLDggKzQwLDggQEAKIC4uIG1ldGhvZDo6IGxpc3QucmVtb3ZlKHgpCiAgICA6bm9pbmRleDoKIAotICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiBJdCBpcyBhbiBlcnJvciBpZiB0aGVyZQotICAgaXMgbm8gc3VjaCBpdGVtLgorICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiAgSXQgaXMgYW4gZXJyb3IgaWYKKyAgIHRoZXJlIGlzIG5vIHN1Y2ggaXRlbS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnBvcChbaV0pCkBAIC03MCwxMyArNzAsMTQgQEAKIC4uIG1ldGhvZDo6IGxpc3Quc29ydCgpCiAgICA6bm9pbmRleDoKIAotICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QsIGluIHBsYWNlLgorICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5yZXZlcnNlKCkKICAgIDpub2luZGV4OgogCi0gICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCwgaW4gcGxhY2UuCisgICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKwogCiBBbiBleGFtcGxlIHRoYXQgdXNlcyBtb3N0IG9mIHRoZSBsaXN0IG1ldGhvZHM6OgogCkBAIC05OSw2ICsxMDAsMTAgQEAKICAgID4+PiBhCiAgICBbLTEsIDEsIDY2LjI1LCAzMzMsIDMzMywgMTIzNC41XQogCitZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgbWV0aG9kcyBsaWtlIGBgaW5zZXJ0YGAsIGBgcmVtb3ZlYGAgb3IgYGBzb3J0YGAgdGhhdAorbW9kaWZ5IHRoZSBsaXN0IGhhdmUgbm8gcmV0dXJuIHZhbHVlIHByaW50ZWQgLS0gdGhleSByZXR1cm4gYGBOb25lYGAuIFsxXV8gIFRoaXMKK2lzIGEgZGVzaWduIHByaW5jaXBsZSBmb3IgYWxsIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmVzIGluIFB5dGhvbi4KKwogCiAuLiBfdHV0LWxpc3RzLWFzLXN0YWNrczoKIApAQCAtNDgwLDcgKzQ4NSw3IEBACiAKIFBlcmZvcm1pbmcgYGBsaXN0KGQua2V5cygpKWBgIG9uIGEgZGljdGlvbmFyeSByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGtleXMKIHVzZWQgaW4gdGhlIGRpY3Rpb25hcnksIGluIGFyYml0cmFyeSBvcmRlciAoaWYgeW91IHdhbnQgaXQgc29ydGVkLCBqdXN0IHVzZQotYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsxXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQorYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsyXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQogZGljdGlvbmFyeSwgdXNlIHRoZSA6a2V5d29yZDpgaW5gIGtleXdvcmQuCiAKIEhlcmUgaXMgYSBzbWFsbCBleGFtcGxlIHVzaW5nIGEgZGljdGlvbmFyeTo6CkBAIC02NzcsNiArNjgyLDkgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsxXSBDYWxsaW5nIGBgZC5rZXlzKClgYCB3aWxsIHJldHVybiBhIDpkZm46YGRpY3Rpb25hcnkgdmlld2Agb2JqZWN0LiAgSXQKKy4uIFsxXSBPdGhlciBsYW5ndWFnZXMgbWF5IHJldHVybiB0aGUgbXV0YXRlZCBvYmplY3QsIHdoaWNoIGFsbG93cyBtZXRob2QKKyAgICAgICBjaGFpbmluZywgc3VjaCBhcyBgYGQtPmluc2VydCgiYSIpLT5yZW1vdmUoImIiKS0+c29ydCgpO2BgLgorCisuLiBbMl0gQ2FsbGluZyBgYGQua2V5cygpYGAgd2lsbCByZXR1cm4gYSA6ZGZuOmBkaWN0aW9uYXJ5IHZpZXdgIG9iamVjdC4gIEl0CiAgICAgICAgc3VwcG9ydHMgb3BlcmF0aW9ucyBsaWtlIG1lbWJlcnNoaXAgdGVzdCBhbmQgaXRlcmF0aW9uLCBidXQgaXRzIGNvbnRlbnRzCiAgICAgICAgYXJlIG5vdCBpbmRlcGVuZGVudCBvZiB0aGUgb3JpZ2luYWwgZGljdGlvbmFyeSAtLSBpdCBpcyBvbmx5IGEgKnZpZXcqLgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggZDYxZGFmYy4uY2RjMmJmMiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMCwxMyArMTAsMTMgQEAKIEludm9raW5nIHRoZSBJbnRlcnByZXRlcgogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuMmAKK1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuM2AKIG9uIHRob3NlIG1hY2hpbmVzIHdoZXJlIGl0IGlzIGF2YWlsYWJsZTsgcHV0dGluZyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW5gIGluIHlvdXIKIFVuaXggc2hlbGwncyBzZWFyY2ggcGF0aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzdGFydCBpdCBieSB0eXBpbmcgdGhlIGNvbW1hbmQ6CiAKIC4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLSAgIHB5dGhvbjMuMgorICAgcHl0aG9uMy4zCiAKIHRvIHRoZSBzaGVsbC4gWyNdXyBTaW5jZSB0aGUgY2hvaWNlIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGludGVycHJldGVyIGxpdmVzCiBpcyBhbiBpbnN0YWxsYXRpb24gb3B0aW9uLCBvdGhlciBwbGFjZXMgYXJlIHBvc3NpYmxlOyBjaGVjayB3aXRoIHlvdXIgbG9jYWwKQEAgLTI0LDExICsyNCwxMSBAQAogcG9wdWxhciBhbHRlcm5hdGl2ZSBsb2NhdGlvbi4pCiAKIE9uIFdpbmRvd3MgbWFjaGluZXMsIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGlzIHVzdWFsbHkgcGxhY2VkIGluCi06ZmlsZTpgQzpcXFB5dGhvbjMyYCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKKzpmaWxlOmBDOlxcUHl0aG9uMzNgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQogaW5zdGFsbGVyLiAgVG8gYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgIHlvdSBjYW4gdHlwZSB0aGUgZm9sbG93aW5nCiBjb21tYW5kIGludG8gdGhlIGNvbW1hbmQgcHJvbXB0IGluIGEgRE9TIGJveDo6CiAKLSAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zMgorICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjMzCiAKIFR5cGluZyBhbiBlbmQtb2YtZmlsZSBjaGFyYWN0ZXIgKDprYmQ6YENvbnRyb2wtRGAgb24gVW5peCwgOmtiZDpgQ29udHJvbC1aYCBvbgogV2luZG93cykgYXQgdGhlIHByaW1hcnkgcHJvbXB0IGNhdXNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gZXhpdCB3aXRoIGEgemVybyBleGl0CkBAIC05NSw4ICs5NSw4IEBACiBwcmludHMgYSB3ZWxjb21lIG1lc3NhZ2Ugc3RhdGluZyBpdHMgdmVyc2lvbiBudW1iZXIgYW5kIGEgY29weXJpZ2h0IG5vdGljZQogYmVmb3JlIHByaW50aW5nIHRoZSBmaXJzdCBwcm9tcHQ6OgogCi0gICAkIHB5dGhvbjMuMgotICAgUHl0aG9uIDMuMi4zIChkZWZhdWx0LCBNYXkgIDMgMjAxMiwgMTU6NTQ6NDIpCisgICAkIHB5dGhvbjMuMworICAgUHl0aG9uIDMuMyAoZGVmYXVsdCwgU2VwIDI0IDIwMTIsIDA5OjI1OjA0KQogICAgW0dDQyA0LjYuM10gb24gbGludXgyCiAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICA+Pj4KQEAgLTE0OSw3ICsxNDksNyBAQAogT24gQlNEJ2lzaCBVbml4IHN5c3RlbXMsIFB5dGhvbiBzY3JpcHRzIGNhbiBiZSBtYWRlIGRpcmVjdGx5IGV4ZWN1dGFibGUsIGxpa2UKIHNoZWxsIHNjcmlwdHMsIGJ5IHB1dHRpbmcgdGhlIGxpbmUgOjoKIAotICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMgorICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMwogCiAoYXNzdW1pbmcgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaXMgb24gdGhlIHVzZXIncyA6ZW52dmFyOmBQQVRIYCkgYXQgdGhlIGJlZ2lubmluZwogb2YgdGhlIHNjcmlwdCBhbmQgZ2l2aW5nIHRoZSBmaWxlIGFuIGV4ZWN1dGFibGUgbW9kZS4gIFRoZSBgYCMhYGAgbXVzdCBiZSB0aGUKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0IGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKaW5kZXggYjZkOTRhYy4uNGI3ZjYwZCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKQEAgLTM5MCw3ICszOTAsNyBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgOnJlZjpgdHlwZXNzZXFgCisgICA6cmVmOmB0ZXh0c2VxYAogICAgICAgU3RyaW5ncyBhcmUgZXhhbXBsZXMgb2YgKnNlcXVlbmNlIHR5cGVzKiwgYW5kIHN1cHBvcnQgdGhlIGNvbW1vbgogICAgICAgb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgc3VjaCB0eXBlcy4KIApAQCAtNjAwLDE5ICs2MDAsMTkgQEAKICAgZ3Vlc3Mgd2hlbiB5b3UgaGF2ZSB0eXBlZCB0aGUgbGFzdCBsaW5lKS4gIE5vdGUgdGhhdCBlYWNoIGxpbmUgd2l0aGluIGEgYmFzaWMKICAgYmxvY2sgbXVzdCBiZSBpbmRlbnRlZCBieSB0aGUgc2FtZSBhbW91bnQuCiAKLSogVGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24gd3JpdGVzIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbihzKSBpdCBpcwotICBnaXZlbi4gIEl0IGRpZmZlcnMgZnJvbSBqdXN0IHdyaXRpbmcgdGhlIGV4cHJlc3Npb24geW91IHdhbnQgdG8gd3JpdGUgKGFzIHdlIGRpZAotICBlYXJsaWVyIGluIHRoZSBjYWxjdWxhdG9yIGV4YW1wbGVzKSBpbiB0aGUgd2F5IGl0IGhhbmRsZXMgbXVsdGlwbGUKLSAgZXhwcmVzc2lvbnMsIGZsb2F0aW5nIHBvaW50IHF1YW50aXRpZXMsCi0gIGFuZCBzdHJpbmdzLiAgU3RyaW5ncyBhcmUgcHJpbnRlZCB3aXRob3V0IHF1b3RlcywgYW5kIGEgc3BhY2UgaXMgaW5zZXJ0ZWQKLSAgYmV0d2VlbiBpdGVtcywgc28geW91IGNhbiBmb3JtYXQgdGhpbmdzIG5pY2VseSwgbGlrZSB0aGlzOjoKKyogVGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24gd3JpdGVzIHRoZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQocykgaXQgaXMgZ2l2ZW4uCisgIEl0IGRpZmZlcnMgZnJvbSBqdXN0IHdyaXRpbmcgdGhlIGV4cHJlc3Npb24geW91IHdhbnQgdG8gd3JpdGUgKGFzIHdlIGRpZAorICBlYXJsaWVyIGluIHRoZSBjYWxjdWxhdG9yIGV4YW1wbGVzKSBpbiB0aGUgd2F5IGl0IGhhbmRsZXMgbXVsdGlwbGUgYXJndW1lbnRzLAorICBmbG9hdGluZyBwb2ludCBxdWFudGl0aWVzLCBhbmQgc3RyaW5ncy4gIFN0cmluZ3MgYXJlIHByaW50ZWQgd2l0aG91dCBxdW90ZXMsCisgIGFuZCBhIHNwYWNlIGlzIGluc2VydGVkIGJldHdlZW4gaXRlbXMsIHNvIHlvdSBjYW4gZm9ybWF0IHRoaW5ncyBuaWNlbHksIGxpa2UKKyAgdGhpczo6CiAKICAgICAgPj4+IGkgPSAyNTYqMjU2CiAgICAgID4+PiBwcmludCgnVGhlIHZhbHVlIG9mIGkgaXMnLCBpKQogICAgICBUaGUgdmFsdWUgb2YgaSBpcyA2NTUzNgogCi0gIFRoZSBrZXl3b3JkICplbmQqIGNhbiBiZSB1c2VkIHRvIGF2b2lkIHRoZSBuZXdsaW5lIGFmdGVyIHRoZSBvdXRwdXQsIG9yIGVuZAotICB0aGUgb3V0cHV0IHdpdGggYSBkaWZmZXJlbnQgc3RyaW5nOjoKKyAgVGhlIGtleXdvcmQgYXJndW1lbnQgKmVuZCogY2FuIGJlIHVzZWQgdG8gYXZvaWQgdGhlIG5ld2xpbmUgYWZ0ZXIgdGhlIG91dHB1dCwKKyAgb3IgZW5kIHRoZSBvdXRwdXQgd2l0aCBhIGRpZmZlcmVudCBzdHJpbmc6OgogCiAgICAgID4+PiBhLCBiID0gMCwgMQogICAgICA+Pj4gd2hpbGUgYiA8IDEwMDA6CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKaW5kZXggODZjMWEwZC4uYzRkODZhYyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdApAQCAtMjg5LDIxICsyODksMjQgQEAKICAgID4+PiBkaXIoZmlibykKICAgIFsnX19uYW1lX18nLCAnZmliJywgJ2ZpYjInXQogICAgPj4+IGRpcihzeXMpICAjIGRvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQotICAgWydfX2Rpc3BsYXlob29rX18nLCAnX19kb2NfXycsICdfX2V4Y2VwdGhvb2tfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCi0gICAgJ19fc3RkZXJyX18nLCAnX19zdGRpbl9fJywgJ19fc3Rkb3V0X18nLCAnX2NsZWFyX3R5cGVfY2FjaGUnLAotICAgICdfY3VycmVudF9mcmFtZXMnLCAnX2dldGZyYW1lJywgJ19tZXJjdXJpYWwnLCAnX3hvcHRpb25zJywgJ2FiaWZsYWdzJywKLSAgICAnYXBpX3ZlcnNpb24nLCAnYXJndicsICdidWlsdGluX21vZHVsZV9uYW1lcycsICdieXRlb3JkZXInLCAnY2FsbF90cmFjaW5nJywKLSAgICAnY2FsbHN0YXRzJywgJ2NvcHlyaWdodCcsICdkaXNwbGF5aG9vaycsICdkb250X3dyaXRlX2J5dGVjb2RlJywgJ2V4Y19pbmZvJywKKyAgIFsnX19kaXNwbGF5aG9va19fJywgJ19fZG9jX18nLCAnX19lZ2dpbnNlcnQnLCAnX19leGNlcHRob29rX18nLAorICAgICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGxlbicsICdfX3N0ZGVycl9fJywKKyAgICAnX19zdGRpbl9fJywgJ19fc3Rkb3V0X18nLCAnX2NsZWFyX3R5cGVfY2FjaGUnLCAnX2N1cnJlbnRfZnJhbWVzJywKKyAgICAnX2RlYnVnbWFsbG9jc3RhdHMnLCAnX2dldGZyYW1lJywgJ19ob21lJywgJ19tZXJjdXJpYWwnLCAnX3hvcHRpb25zJywKKyAgICAnYWJpZmxhZ3MnLCAnYXBpX3ZlcnNpb24nLCAnYXJndicsICdiYXNlX2V4ZWNfcHJlZml4JywgJ2Jhc2VfcHJlZml4JywKKyAgICAnYnVpbHRpbl9tb2R1bGVfbmFtZXMnLCAnYnl0ZW9yZGVyJywgJ2NhbGxfdHJhY2luZycsICdjYWxsc3RhdHMnLAorICAgICdjb3B5cmlnaHQnLCAnZGlzcGxheWhvb2snLCAnZG9udF93cml0ZV9ieXRlY29kZScsICdleGNfaW5mbycsCiAgICAgJ2V4Y2VwdGhvb2snLCAnZXhlY19wcmVmaXgnLCAnZXhlY3V0YWJsZScsICdleGl0JywgJ2ZsYWdzJywgJ2Zsb2F0X2luZm8nLAogICAgICdmbG9hdF9yZXByX3N0eWxlJywgJ2dldGNoZWNraW50ZXJ2YWwnLCAnZ2V0ZGVmYXVsdGVuY29kaW5nJywKICAgICAnZ2V0ZGxvcGVuZmxhZ3MnLCAnZ2V0ZmlsZXN5c3RlbWVuY29kaW5nJywgJ2dldG9iamVjdHMnLCAnZ2V0cHJvZmlsZScsCiAgICAgJ2dldHJlY3Vyc2lvbmxpbWl0JywgJ2dldHJlZmNvdW50JywgJ2dldHNpemVvZicsICdnZXRzd2l0Y2hpbnRlcnZhbCcsCi0gICAgJ2dldHRvdGFscmVmY291bnQnLCAnZ2V0dHJhY2UnLCAnaGFzaF9pbmZvJywgJ2hleHZlcnNpb24nLCAnaW50X2luZm8nLAotICAgICdpbnRlcm4nLCAnbWF4c2l6ZScsICdtYXh1bmljb2RlJywgJ21ldGFfcGF0aCcsICdtb2R1bGVzJywgJ3BhdGgnLAotICAgICdwYXRoX2hvb2tzJywgJ3BhdGhfaW1wb3J0ZXJfY2FjaGUnLCAncGxhdGZvcm0nLCAncHJlZml4JywgJ3BzMScsCi0gICAgJ3NldGNoZWNraW50ZXJ2YWwnLCAnc2V0ZGxvcGVuZmxhZ3MnLCAnc2V0cHJvZmlsZScsICdzZXRyZWN1cnNpb25saW1pdCcsCi0gICAgJ3NldHN3aXRjaGludGVydmFsJywgJ3NldHRyYWNlJywgJ3N0ZGVycicsICdzdGRpbicsICdzdGRvdXQnLCAnc3VidmVyc2lvbicsCi0gICAgJ3ZlcnNpb24nLCAndmVyc2lvbl9pbmZvJywgJ3dhcm5vcHRpb25zJ10KKyAgICAnZ2V0dG90YWxyZWZjb3VudCcsICdnZXR0cmFjZScsICdoYXNoX2luZm8nLCAnaGV4dmVyc2lvbicsCisgICAgJ2ltcGxlbWVudGF0aW9uJywgJ2ludF9pbmZvJywgJ2ludGVybicsICdtYXhzaXplJywgJ21heHVuaWNvZGUnLAorICAgICdtZXRhX3BhdGgnLCAnbW9kdWxlcycsICdwYXRoJywgJ3BhdGhfaG9va3MnLCAncGF0aF9pbXBvcnRlcl9jYWNoZScsCisgICAgJ3BsYXRmb3JtJywgJ3ByZWZpeCcsICdwczEnLCAnc2V0Y2hlY2tpbnRlcnZhbCcsICdzZXRkbG9wZW5mbGFncycsCisgICAgJ3NldHByb2ZpbGUnLCAnc2V0cmVjdXJzaW9ubGltaXQnLCAnc2V0c3dpdGNoaW50ZXJ2YWwnLCAnc2V0dHJhY2UnLAorICAgICdzdGRlcnInLCAnc3RkaW4nLCAnc3Rkb3V0JywgJ3RocmVhZF9pbmZvJywgJ3ZlcnNpb24nLCAndmVyc2lvbl9pbmZvJywKKyAgICAnd2Fybm9wdGlvbnMnXQogCiBXaXRob3V0IGFyZ3VtZW50cywgOmZ1bmM6YGRpcmAgbGlzdHMgdGhlIG5hbWVzIHlvdSBoYXZlIGRlZmluZWQgY3VycmVudGx5OjoKIApAQCAtMzI0LDI5ICszMjcsMzQgQEAKICAgID4+PiBpbXBvcnQgYnVpbHRpbnMKICAgID4+PiBkaXIoYnVpbHRpbnMpICAjIGRvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQogICAgWydBcml0aG1ldGljRXJyb3InLCAnQXNzZXJ0aW9uRXJyb3InLCAnQXR0cmlidXRlRXJyb3InLCAnQmFzZUV4Y2VwdGlvbicsCi0gICAgJ0J1ZmZlckVycm9yJywgJ0J5dGVzV2FybmluZycsICdEZXByZWNhdGlvbldhcm5pbmcnLCAnRU9GRXJyb3InLAotICAgICdFbGxpcHNpcycsICdFbnZpcm9ubWVudEVycm9yJywgJ0V4Y2VwdGlvbicsICdGYWxzZScsICdGbG9hdGluZ1BvaW50RXJyb3InLAorICAgICdCbG9ja2luZ0lPRXJyb3InLCAnQnJva2VuUGlwZUVycm9yJywgJ0J1ZmZlckVycm9yJywgJ0J5dGVzV2FybmluZycsCisgICAgJ0NoaWxkUHJvY2Vzc0Vycm9yJywgJ0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3InLCAnQ29ubmVjdGlvbkVycm9yJywKKyAgICAnQ29ubmVjdGlvblJlZnVzZWRFcnJvcicsICdDb25uZWN0aW9uUmVzZXRFcnJvcicsICdEZXByZWNhdGlvbldhcm5pbmcnLAorICAgICdFT0ZFcnJvcicsICdFbGxpcHNpcycsICdFbnZpcm9ubWVudEVycm9yJywgJ0V4Y2VwdGlvbicsICdGYWxzZScsCisgICAgJ0ZpbGVFeGlzdHNFcnJvcicsICdGaWxlTm90Rm91bmRFcnJvcicsICdGbG9hdGluZ1BvaW50RXJyb3InLAogICAgICdGdXR1cmVXYXJuaW5nJywgJ0dlbmVyYXRvckV4aXQnLCAnSU9FcnJvcicsICdJbXBvcnRFcnJvcicsCi0gICAgJ0ltcG9ydFdhcm5pbmcnLCAnSW5kZW50YXRpb25FcnJvcicsICdJbmRleEVycm9yJywgJ0tleUVycm9yJywKLSAgICAnS2V5Ym9hcmRJbnRlcnJ1cHQnLCAnTG9va3VwRXJyb3InLCAnTWVtb3J5RXJyb3InLCAnTmFtZUVycm9yJywgJ05vbmUnLAotICAgICdOb3RJbXBsZW1lbnRlZCcsICdOb3RJbXBsZW1lbnRlZEVycm9yJywgJ09TRXJyb3InLCAnT3ZlcmZsb3dFcnJvcicsCi0gICAgJ1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcnLCAnUmVmZXJlbmNlRXJyb3InLCAnUmVzb3VyY2VXYXJuaW5nJywKLSAgICAnUnVudGltZUVycm9yJywgJ1J1bnRpbWVXYXJuaW5nJywgJ1N0b3BJdGVyYXRpb24nLCAnU3ludGF4RXJyb3InLAotICAgICdTeW50YXhXYXJuaW5nJywgJ1N5c3RlbUVycm9yJywgJ1N5c3RlbUV4aXQnLCAnVGFiRXJyb3InLCAnVHJ1ZScsCi0gICAgJ1R5cGVFcnJvcicsICdVbmJvdW5kTG9jYWxFcnJvcicsICdVbmljb2RlRGVjb2RlRXJyb3InLAotICAgICdVbmljb2RlRW5jb2RlRXJyb3InLCAnVW5pY29kZUVycm9yJywgJ1VuaWNvZGVUcmFuc2xhdGVFcnJvcicsCi0gICAgJ1VuaWNvZGVXYXJuaW5nJywgJ1VzZXJXYXJuaW5nJywgJ1ZhbHVlRXJyb3InLCAnV2FybmluZycsCi0gICAgJ1plcm9EaXZpc2lvbkVycm9yJywgJ18nLCAnX19idWlsZF9jbGFzc19fJywgJ19fZGVidWdfXycsICdfX2RvY19fJywKLSAgICAnX19pbXBvcnRfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdhYnMnLCAnYWxsJywgJ2FueScsICdhc2NpaScsCi0gICAgJ2JpbicsICdib29sJywgJ2J5dGVhcnJheScsICdieXRlcycsICdjYWxsYWJsZScsICdjaHInLCAnY2xhc3NtZXRob2QnLAotICAgICdjb21waWxlJywgJ2NvbXBsZXgnLCAnY29weXJpZ2h0JywgJ2NyZWRpdHMnLCAnZGVsYXR0cicsICdkaWN0JywgJ2RpcicsCi0gICAgJ2Rpdm1vZCcsICdlbnVtZXJhdGUnLCAnZXZhbCcsICdleGVjJywgJ2V4aXQnLCAnZmlsdGVyJywgJ2Zsb2F0JywgJ2Zvcm1hdCcsCi0gICAgJ2Zyb3plbnNldCcsICdnZXRhdHRyJywgJ2dsb2JhbHMnLCAnaGFzYXR0cicsICdoYXNoJywgJ2hlbHAnLCAnaGV4JywgJ2lkJywKLSAgICAnaW5wdXQnLCAnaW50JywgJ2lzaW5zdGFuY2UnLCAnaXNzdWJjbGFzcycsICdpdGVyJywgJ2xlbicsICdsaWNlbnNlJywKLSAgICAnbGlzdCcsICdsb2NhbHMnLCAnbWFwJywgJ21heCcsICdtZW1vcnl2aWV3JywgJ21pbicsICduZXh0JywgJ29iamVjdCcsCi0gICAgJ29jdCcsICdvcGVuJywgJ29yZCcsICdwb3cnLCAncHJpbnQnLCAncHJvcGVydHknLCAncXVpdCcsICdyYW5nZScsICdyZXByJywKLSAgICAncmV2ZXJzZWQnLCAncm91bmQnLCAnc2V0JywgJ3NldGF0dHInLCAnc2xpY2UnLCAnc29ydGVkJywgJ3N0YXRpY21ldGhvZCcsCi0gICAgJ3N0cicsICdzdW0nLCAnc3VwZXInLCAndHVwbGUnLCAndHlwZScsICd2YXJzJywgJ3ppcCddCisgICAgJ0ltcG9ydFdhcm5pbmcnLCAnSW5kZW50YXRpb25FcnJvcicsICdJbmRleEVycm9yJywgJ0ludGVycnVwdGVkRXJyb3InLAorICAgICdJc0FEaXJlY3RvcnlFcnJvcicsICdLZXlFcnJvcicsICdLZXlib2FyZEludGVycnVwdCcsICdMb29rdXBFcnJvcicsCisgICAgJ01lbW9yeUVycm9yJywgJ05hbWVFcnJvcicsICdOb25lJywgJ05vdEFEaXJlY3RvcnlFcnJvcicsICdOb3RJbXBsZW1lbnRlZCcsCisgICAgJ05vdEltcGxlbWVudGVkRXJyb3InLCAnT1NFcnJvcicsICdPdmVyZmxvd0Vycm9yJywKKyAgICAnUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZycsICdQZXJtaXNzaW9uRXJyb3InLCAnUHJvY2Vzc0xvb2t1cEVycm9yJywKKyAgICAnUmVmZXJlbmNlRXJyb3InLCAnUmVzb3VyY2VXYXJuaW5nJywgJ1J1bnRpbWVFcnJvcicsICdSdW50aW1lV2FybmluZycsCisgICAgJ1N0b3BJdGVyYXRpb24nLCAnU3ludGF4RXJyb3InLCAnU3ludGF4V2FybmluZycsICdTeXN0ZW1FcnJvcicsCisgICAgJ1N5c3RlbUV4aXQnLCAnVGFiRXJyb3InLCAnVGltZW91dEVycm9yJywgJ1RydWUnLCAnVHlwZUVycm9yJywKKyAgICAnVW5ib3VuZExvY2FsRXJyb3InLCAnVW5pY29kZURlY29kZUVycm9yJywgJ1VuaWNvZGVFbmNvZGVFcnJvcicsCisgICAgJ1VuaWNvZGVFcnJvcicsICdVbmljb2RlVHJhbnNsYXRlRXJyb3InLCAnVW5pY29kZVdhcm5pbmcnLCAnVXNlcldhcm5pbmcnLAorICAgICdWYWx1ZUVycm9yJywgJ1dhcm5pbmcnLCAnWmVyb0RpdmlzaW9uRXJyb3InLCAnXycsICdfX2J1aWxkX2NsYXNzX18nLAorICAgICdfX2RlYnVnX18nLCAnX19kb2NfXycsICdfX2ltcG9ydF9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ2FicycsCisgICAgJ2FsbCcsICdhbnknLCAnYXNjaWknLCAnYmluJywgJ2Jvb2wnLCAnYnl0ZWFycmF5JywgJ2J5dGVzJywgJ2NhbGxhYmxlJywKKyAgICAnY2hyJywgJ2NsYXNzbWV0aG9kJywgJ2NvbXBpbGUnLCAnY29tcGxleCcsICdjb3B5cmlnaHQnLCAnY3JlZGl0cycsCisgICAgJ2RlbGF0dHInLCAnZGljdCcsICdkaXInLCAnZGl2bW9kJywgJ2VudW1lcmF0ZScsICdldmFsJywgJ2V4ZWMnLCAnZXhpdCcsCisgICAgJ2ZpbHRlcicsICdmbG9hdCcsICdmb3JtYXQnLCAnZnJvemVuc2V0JywgJ2dldGF0dHInLCAnZ2xvYmFscycsICdoYXNhdHRyJywKKyAgICAnaGFzaCcsICdoZWxwJywgJ2hleCcsICdpZCcsICdpbnB1dCcsICdpbnQnLCAnaXNpbnN0YW5jZScsICdpc3N1YmNsYXNzJywKKyAgICAnaXRlcicsICdsZW4nLCAnbGljZW5zZScsICdsaXN0JywgJ2xvY2FscycsICdtYXAnLCAnbWF4JywgJ21lbW9yeXZpZXcnLAorICAgICdtaW4nLCAnbmV4dCcsICdvYmplY3QnLCAnb2N0JywgJ29wZW4nLCAnb3JkJywgJ3BvdycsICdwcmludCcsICdwcm9wZXJ0eScsCisgICAgJ3F1aXQnLCAncmFuZ2UnLCAncmVwcicsICdyZXZlcnNlZCcsICdyb3VuZCcsICdzZXQnLCAnc2V0YXR0cicsICdzbGljZScsCisgICAgJ3NvcnRlZCcsICdzdGF0aWNtZXRob2QnLCAnc3RyJywgJ3N1bScsICdzdXBlcicsICd0dXBsZScsICd0eXBlJywgJ3ZhcnMnLAorICAgICd6aXAnXQogCiAuLiBfdHV0LXBhY2thZ2VzOgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CmluZGV4IDEyOGU2YTYuLjFlYmY3OTIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CkBAIC0xNSw3ICsxNSw3IEBACiAKICAgID4+PiBpbXBvcnQgb3MKICAgID4+PiBvcy5nZXRjd2QoKSAgICAgICMgUmV0dXJuIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAnQzpcXFB5dGhvbjMxJworICAgJ0M6XFxQeXRob24zMycKICAgID4+PiBvcy5jaGRpcignL3NlcnZlci9hY2Nlc3Nsb2dzJykgICAjIENoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAgICA+Pj4gb3Muc3lzdGVtKCdta2RpciB0b2RheScpICAgIyBSdW4gdGhlIGNvbW1hbmQgbWtkaXIgaW4gdGhlIHN5c3RlbSBzaGVsbAogICAgMApAQCAtMjAzLDcgKzIwMyw3IEBACiA9PT09PT09PT09PT09PT09CiAKIENvbW1vbiBkYXRhIGFyY2hpdmluZyBhbmQgY29tcHJlc3Npb24gZm9ybWF0cyBhcmUgZGlyZWN0bHkgc3VwcG9ydGVkIGJ5IG1vZHVsZXMKLWluY2x1ZGluZzogOm1vZDpgemxpYmAsIDptb2Q6YGd6aXBgLCA6bW9kOmBiejJgLCA6bW9kOmB6aXBmaWxlYCBhbmQKK2luY2x1ZGluZzogOm1vZDpgemxpYmAsIDptb2Q6YGd6aXBgLCA6bW9kOmBiejJgLCA6bW9kOmBsem1hYCwgOm1vZDpgemlwZmlsZWAgYW5kCiA6bW9kOmB0YXJmaWxlYC4gOjoKIAogICAgPj4+IGltcG9ydCB6bGliCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggMjI2NWNkMC4uNGI2ZTAzNiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMTQxLDcgKzE0MSw5IEBACiAKICAgIGltcG9ydCBzdHJ1Y3QKIAotICAgZGF0YSA9IG9wZW4oJ215ZmlsZS56aXAnLCAncmInKS5yZWFkKCkKKyAgIHdpdGggb3BlbignbXlmaWxlLnppcCcsICdyYicpIGFzIGY6CisgICAgICAgZGF0YSA9IGYucmVhZCgpCisKICAgIHN0YXJ0ID0gMAogICAgZm9yIGkgaW4gcmFuZ2UoMyk6ICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgZmlyc3QgMyBmaWxlIGhlYWRlcnMKICAgICAgICBzdGFydCArPSAxNApAQCAtMjczLDcgKzI3NSw3IEBACiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICAgZFsncHJpbWFyeSddICAgICAgICAgICAgICAgICMgZW50cnkgd2FzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZAotICAgICBGaWxlICJDOi9weXRob24zMS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCisgICAgIEZpbGUgIkM6L3B5dGhvbjMzL2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgS2V5RXJyb3I6ICdwcmltYXJ5JwogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKaW5kZXggY2Q0ZDAyZi4uMjcwMzY4NCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0CisrKyBiL0RvYy91c2luZy9jbWRsaW5lLnJzdApAQCAtMjQsNyArMjQsNyBAQAogCiBXaGVuIGludm9raW5nIFB5dGhvbiwgeW91IG1heSBzcGVjaWZ5IGFueSBvZiB0aGVzZSBvcHRpb25zOjoKIAotICAgIHB5dGhvbiBbLWJCZEVoaU9ScXNTdXZWV3g/XSBbLWMgY29tbWFuZCB8IC1tIG1vZHVsZS1uYW1lIHwgc2NyaXB0IHwgLSBdIFthcmdzXQorICAgIHB5dGhvbiBbLWJCZEVoaU9xc1N1dlZXeD9dIFstYyBjb21tYW5kIHwgLW0gbW9kdWxlLW5hbWUgfCBzY3JpcHQgfCAtIF0gW2FyZ3NdCiAKIFRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBpcywgb2YgY291cnNlLCBhIHNpbXBsZSBpbnZvY2F0aW9uIG9mIGEgc2NyaXB0OjoKIApAQCAtMjI5LDIzICsyMjksMjIgQEAKIAogLi4gY21kb3B0aW9uOjogLVIKIAotICAgVHVybiBvbiBoYXNoIHJhbmRvbWl6YXRpb24sIHNvIHRoYXQgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMKLSAgIGFuZCBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLgotICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlCi0gICBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisgICBLZXB0IGZvciBjb21wYXRpYmlsaXR5LiAgT24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlciwgaGFzaCByYW5kb21pemF0aW9uIGlzCisgICB0dXJuZWQgb24gYnkgZGVmYXVsdC4KIAotICAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1vZi1zZXJ2aWNlIGNhdXNlZCBieQotICAgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdAotICAgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQorICAgT24gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uLCB0aGlzIG9wdGlvbiB0dXJucyBvbiBoYXNoIHJhbmRvbWl6YXRpb24sCisgICBzbyB0aGF0IHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZQorICAgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuICBBbHRob3VnaCB0aGV5IHJlbWFpbgorICAgY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZQorICAgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisKKyAgIEhhc2ggcmFuZG9taXphdGlvbiBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhCisgICBkZW5pYWwtb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdAorICAgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQogICAgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvciBkZXRhaWxzLgogCi0gICBDaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBvcmRlciBpbiB3aGljaCBrZXlzIGFyZSByZXRyaWV2ZWQgZnJvbSBhCi0gICBkaWN0LiAgQWx0aG91Z2ggUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXMgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0Ci0gICB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgYnVpbGRzKSwgZW5vdWdoIHJlYWwtd29ybGQgY29kZQotICAgaW1wbGljaXRseSByZWxpZXMgb24gdGhpcyBub24tZ3VhcmFudGVlZCBiZWhhdmlvciB0aGF0IHRoZSByYW5kb21pemF0aW9uIGlzCi0gICBkaXNhYmxlZCBieSBkZWZhdWx0LgotCi0gICBTZWUgYWxzbyA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAuCisgICA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAgYWxsb3dzIHlvdSB0byBzZXQgYSBmaXhlZCB2YWx1ZSBmb3IgdGhlIGhhc2gKKyAgIHNlZWQgc2VjcmV0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogCkBAIC0yNjMsNyArMjYyLDkgQEAKIC4uIGNtZG9wdGlvbjo6IC1TCiAKICAgIERpc2FibGUgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIDptb2Q6YHNpdGVgIGFuZCB0aGUgc2l0ZS1kZXBlbmRlbnQKLSAgIG1hbmlwdWxhdGlvbnMgb2YgOmRhdGE6YHN5cy5wYXRoYCB0aGF0IGl0IGVudGFpbHMuCisgICBtYW5pcHVsYXRpb25zIG9mIDpkYXRhOmBzeXMucGF0aGAgdGhhdCBpdCBlbnRhaWxzLiAgQWxzbyBkaXNhYmxlIHRoZXNlCisgICBtYW5pcHVsYXRpb25zIGlmIDptb2Q6YHNpdGVgIGlzIGV4cGxpY2l0bHkgaW1wb3J0ZWQgbGF0ZXIgKGNhbGwKKyAgIDpmdW5jOmBzaXRlLm1haW5gIGlmIHlvdSB3YW50IHRoZW0gdG8gYmUgdHJpZ2dlcmVkKS4KIAogCiAuLiBjbWRvcHRpb246OiAtdQpAQCAtMzU3LDcgKzM1OCw4IEBACiAuLiBjbWRvcHRpb246OiAtWAogCiAgICBSZXNlcnZlZCBmb3IgdmFyaW91cyBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBvcHRpb25zLiAgQ1B5dGhvbiBjdXJyZW50bHkKLSAgIGRlZmluZXMgbm9uZSBvZiB0aGVtLCBidXQgYWxsb3dzIHRvIHBhc3MgYXJiaXRyYXJ5IHZhbHVlcyBhbmQgcmV0cmlldmUKKyAgIGRlZmluZXMganVzdCBvbmUsIHlvdSBjYW4gdXNlIGBgLVggZmF1bHRoYW5kZXJgYCB0byBlbmFibGUKKyAgIDpkYXRhOmBmYXVsdGhhbmRsZXJgLiBJdCBhbHNvIGFsbG93cyB0byBwYXNzIGFyYml0cmFyeSB2YWx1ZXMgYW5kIHJldHJpZXZlCiAgICB0aGVtIHRocm91Z2ggdGhlIDpkYXRhOmBzeXMuX3hvcHRpb25zYCBkaWN0aW9uYXJ5LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpAQCAtNDc1LDcgKzQ3Nyw3IEBACiAuLiBlbnZ2YXI6OiBQWVRIT05DQVNFT0sKIAogICAgSWYgdGhpcyBpcyBzZXQsIFB5dGhvbiBpZ25vcmVzIGNhc2UgaW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50cy4gIFRoaXMKLSAgIG9ubHkgd29ya3Mgb24gV2luZG93cywgT1MgWCwgYW5kIE9TLzIuCisgICBvbmx5IHdvcmtzIG9uIFdpbmRvd3MgYW5kIE9TIFguCiAKIAogLi4gZW52dmFyOjogUFlUSE9ORE9OVFdSSVRFQllURUNPREUKQEAgLTQ4Nyw5ICs0ODksOCBAQAogCiAuLiBlbnZ2YXI6OiBQWVRIT05IQVNIU0VFRAogCi0gICBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byBgYHJhbmRvbWBgLCB0aGUgZWZmZWN0IGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcKLSAgIHRoZSA6b3B0aW9uOmAtUmAgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsCi0gICBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KKyAgIElmIHRoaXMgdmFyaWFibGUgaXMgbm90IHNldCBvciBzZXQgdG8gYGByYW5kb21gYCwgYSByYW5kb20gdmFsdWUgaXMgdXNlZAorICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCiAKICAgIElmIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYCBpcyBzZXQgdG8gYW4gaW50ZWdlciB2YWx1ZSwgaXQgaXMgdXNlZCBhcyBhIGZpeGVkCiAgICBzZWVkIGZvciBnZW5lcmF0aW5nIHRoZSBoYXNoKCkgb2YgdGhlIHR5cGVzIGNvdmVyZWQgYnkgdGhlIGhhc2gKQEAgLTUwMCw4ICs1MDEsNyBAQAogICAgdmFsdWVzLgogCiAgICBUaGUgaW50ZWdlciBtdXN0IGJlIGEgZGVjaW1hbCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdLiAgU3BlY2lmeWluZwotICAgdGhlIHZhbHVlIDAgd2lsbCBsZWFkIHRvIHRoZSBzYW1lIGhhc2ggdmFsdWVzIGFzIHdoZW4gaGFzaCByYW5kb21pemF0aW9uIGlzCi0gICBkaXNhYmxlZC4KKyAgIHRoZSB2YWx1ZSAwIHdpbGwgZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAKQEAgLTUzMSw4ICs1MzEsOCBAQAogCiAgICBEZWZpbmVzIHRoZSA6ZGF0YTpgdXNlciBiYXNlIGRpcmVjdG9yeSA8c2l0ZS5VU0VSX0JBU0U+YCwgd2hpY2ggaXMgdXNlZCB0bwogICAgY29tcHV0ZSB0aGUgcGF0aCBvZiB0aGUgOmRhdGE6YHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkgPHNpdGUuVVNFUl9TSVRFPmAKLSAgIGFuZCA6cmVmOmBEaXN0dXRpbHMgaW5zdGFsbGF0aW9uIHBhdGhzIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YCBmb3IgYGBweXRob24KLSAgIHNldHVwLnB5IGluc3RhbGwgLS11c2VyYGAuCisgICBhbmQgOnJlZjpgRGlzdHV0aWxzIGluc3RhbGxhdGlvbiBwYXRocyA8aW5zdC1hbHQtaW5zdGFsbC11c2VyPmAgZm9yCisgICBgYHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlcmBgLgogCiAgICAuLiBzZWVhbHNvOjoKIApAQCAtNTUxLDYgKzU1MSwxNCBAQAogICAgc2VwYXJhdGVkIHN0cmluZywgaXQgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nIDpvcHRpb246YC1XYCBtdWx0aXBsZQogICAgdGltZXMuCiAKKy4uIGVudnZhcjo6IFBZVEhPTkZBVUxUSEFORExFUgorCisgICBJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIGlzIGNhbGxlZAorICAgYXQgc3RhcnR1cDogaW5zdGFsbCBhIGhhbmRsZXIgZm9yIDpjb25zdDpgU0lHU0VHVmAsIDpjb25zdDpgU0lHRlBFYCwKKyAgIDpjb25zdDpgU0lHQUJSVGAsIDpjb25zdDpgU0lHQlVTYCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMgdG8gZHVtcCB0aGUKKyAgIFB5dGhvbiB0cmFjZWJhY2suICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gOm9wdGlvbjpgLVhgIGBgZmF1bHRoYW5kbGVyYGAKKyAgIG9wdGlvbi4KKwogCiBEZWJ1Zy1tb2RlIHZhcmlhYmxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9pbmRleC5yc3QgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CmluZGV4IDEyMDExNTMuLjUwMmFmYTkgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9pbmRleC5yc3QKKysrIGIvRG9jL3VzaW5nL2luZGV4LnJzdApAQCAtMTcsNCArMTcsNCBAQAogICAgdW5peC5yc3QKICAgIHdpbmRvd3MucnN0CiAgICBtYWMucnN0Ci0KKyAgIHNjcmlwdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM4NzQxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy9zY3JpcHRzLnJzdApAQCAtMCwwICsxLDEyIEBACisuLiBfdG9vbHMtYW5kLXNjcmlwdHM6CisKK0FkZGl0aW9uYWwgVG9vbHMgYW5kIFNjcmlwdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gX3NjcmlwdHMtcHl2ZW52OgorCitweXZlbnYgLSBDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5jbHVkZTo6IHZlbnYtY3JlYXRlLmluYworCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRiYzliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpAQCAtMCwwICsxLDg1IEBACitDcmVhdGlvbiBvZiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8dmVudi1kZWY+YCBpcyBkb25lIGJ5IGV4ZWN1dGluZyB0aGUKK2BgcHl2ZW52YGAgc2NyaXB0OjoKKworICAgIHB5dmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAorCitSdW5uaW5nIHRoaXMgY29tbWFuZCBjcmVhdGVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IChjcmVhdGluZyBhbnkgcGFyZW50CitkaXJlY3RvcmllcyB0aGF0IGRvbid0IGV4aXN0IGFscmVhZHkpIGFuZCBwbGFjZXMgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGluIGl0Cit3aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBjb21tYW5kIHdhcyBydW4KK2Zyb20uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKK2NvbnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBgYHB5dGhvbmBgIGJpbmFyeSAob3IgYmluYXJpZXMsIGluIHRoZSBjYXNlIG9mCitXaW5kb3dzKS4gIEl0IGFsc28gY3JlYXRlcyBhbiAoaW5pdGlhbGx5IGVtcHR5KSBgYGxpYi9weXRob25YLlkvc2l0ZS1wYWNrYWdlc2BgCitzdWJkaXJlY3RvcnkgKG9uIFdpbmRvd3MsIHRoaXMgaXMgYGBMaWJcc2l0ZS1wYWNrYWdlc2BgKS4KKworLi4gaGlnaGxpZ2h0Ojogbm9uZQorCitPbiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgdG8gaW52b2tlIHRoZSBgYHB5dmVudmBgIHNjcmlwdCBhcyBmb2xsb3dzLCBpZiB5b3UKK2Rvbid0IGhhdmUgdGhlIHJlbGV2YW50IFBBVEggYW5kIFBBVEhFWFQgc2V0dGluZ3M6OgorCisgICAgYzpcVGVtcD5jOlxQeXRob24zM1xweXRob24gYzpcUHl0aG9uMzNcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKKworb3IgZXF1aXZhbGVudGx5OjoKKworICAgIGM6XFRlbXA+YzpcUHl0aG9uMzNccHl0aG9uIC1tIHZlbnYgbXllbnYKKworVGhlIGNvbW1hbmQsIGlmIHJ1biB3aXRoIGBgLWhgYCwgd2lsbCBzaG93IHRoZSBhdmFpbGFibGUgb3B0aW9uczo6CisKKyAgICB1c2FnZTogcHl2ZW52IFstaF0gWy0tc3lzdGVtLXNpdGUtcGFja2FnZXNdIFstLXN5bWxpbmtzXSBbLS1jbGVhcl0KKyAgICAgICAgICAgICAgICAgIFstLXVwZ3JhZGVdIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQorCisgICAgQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgorCisgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CisgICAgICBFTlZfRElSICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisKKyAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMgR2l2ZSBhY2Nlc3MgdG8gdGhlIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jbGVhciAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisKK0lmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLCB1bmxlc3MKK3RoZSBgYC0tY2xlYXJgYCBvciBgYC0tdXBncmFkZWBgIG9wdGlvbiB3YXMgcHJvdmlkZWQuCisKK1RoZSBjcmVhdGVkIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxzbyBpbmNsdWRlcyB0aGUKK2BgaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc2BgIGtleSwgc2V0IHRvIGBgdHJ1ZWBgIGlmIGBgdmVudmBgIGlzCitydW4gd2l0aCB0aGUgYGAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzYGAgb3B0aW9uLCBgYGZhbHNlYGAgb3RoZXJ3aXNlLgorCitNdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGBweXZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwKK3ZpcnR1YWxlbnYgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2gKK3Byb3ZpZGVkIHBhdGguCisKK09uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKK3ZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOiBvbgorYSBQb3NpeCBwbGF0Zm9ybSwgeW91IHdvdWxkIHR5cGljYWxseSBkbzo6CisKKyAgICAkIHNvdXJjZSA8dmVudj4vYmluL2FjdGl2YXRlCisKK3doZXJlYXMgb24gV2luZG93cywgeW91IG1pZ2h0IGRvOjoKKworICAgIEM6XD4gPHZlbnY+L1NjcmlwdHMvYWN0aXZhdGUKKworaWYgeW91IGFyZSB1c2luZyB0aGUgYGBjbWQuZXhlYGAgc2hlbGwsIG9yIHBlcmhhcHM6OgorCisgICAgUFMgQzpcPiA8dmVudj4vU2NyaXB0cy9BY3RpdmF0ZS5wczEKKworaWYgeW91IHVzZSBQb3dlclNoZWxsLgorCitZb3UgZG9uJ3Qgc3BlY2lmaWNhbGx5ICpuZWVkKiB0byBhY3RpdmF0ZSBhbiBlbnZpcm9ubWVudDsgYWN0aXZhdGlvbiBqdXN0CitwcmVwZW5kcyB0aGUgdmVudidzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0ICJweXRob24iIGludm9rZXMgdGhlCit2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1biBpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0bwordXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMgaW5zdGFsbGVkIGluIGEgdmVudiBzaG91bGQgYmUKK3J1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwgYW5kIHJ1biB3aXRoIHRoZSB2ZW52J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCisKK1lvdSBjYW4gZGVhY3RpdmF0ZSBhIHZlbnYgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLiBUaGUgZXhhY3QKK21lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24gc2NyaXB0IGRlZmluZXMKK2EgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlIHNjcmlwdHMgY2FsbGVkCitgYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkIHdoZW4gdGhlIHZlbnYgaXMKK2NyZWF0ZWQuCisKZGlmZiAtLWdpdCBhL0RvYy91c2luZy93aW5kb3dzLnJzdCBiL0RvYy91c2luZy93aW5kb3dzLnJzdAppbmRleCBjODVhZmQyLi5hZTI1MjE1IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QKKysrIGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CkBAIC0xMzIsMjEgKzEzMiwzMyBAQAogICAgICAgU2V0dGluZyBFbnZpcm9ubWVudCB2YXJpYWJsZXMsIExvdWlzIEouIEZhcnJ1Z2lhCiAKIAorLi4gX3dpbmRvd3MtcGF0aC1tb2Q6CisKIEZpbmRpbmcgdGhlIFB5dGhvbiBleGVjdXRhYmxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworCiBCZXNpZGVzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgc3RhcnQgbWVudSBlbnRyeSBmb3IgdGhlIFB5dGhvbgotaW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgRE9TIHByb21wdC4gIFRvIG1ha2UgdGhpcwotd29yaywgeW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZQotZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwgZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uIGZyb20gb3RoZXIKLWVudHJpZXMuICBBbiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvCi1lbnRyaWVzIGFyZSBXaW5kb3dzJyBkZWZhdWx0KTo6CitpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gQXMgb2YKK1B5dGhvbiAzLjMsIHRoZSBpbnN0YWxsZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgogCi0gICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFB5dGhvbjI1CitBdCB0aGUgIkN1c3RvbWl6ZSBQeXRob24gMy4zIiBzY3JlZW4sIGFuIG9wdGlvbiBjYWxsZWQKKyJBZGQgcHl0aG9uLmV4ZSB0byBzZWFyY2ggcGF0aCIgY2FuIGJlIGVuYWJsZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIHBsYWNlCit5b3VyIGluc3RhbGxhdGlvbiBpbnRvIHRoZSA6ZW52dmFyOmAlUEFUSCVgLiBUaGlzIGFsbG93cyB5b3UgdG8gdHlwZQorOmNvbW1hbmQ6YHB5dGhvbmAgdG8gcnVuIHRoZSBpbnRlcnByZXRlci4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgorc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLCBzZWUgOnJlZjpgdXNpbmctb24tY21kbGluZWAgZG9jdW1lbnRhdGlvbi4KIAotVHlwaW5nIDpjb21tYW5kOmBweXRob25gIG9uIHlvdXIgY29tbWFuZCBwcm9tcHQgd2lsbCBub3cgZmlyZSB1cCB0aGUgUHl0aG9uCi1pbnRlcnByZXRlci4gIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIgc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLAotc2VlIDpyZWY6YHVzaW5nLW9uLWNtZGxpbmVgIGRvY3VtZW50YXRpb24uCitJZiB5b3UgZG9uJ3QgZW5hYmxlIHRoaXMgb3B0aW9uIGF0IGluc3RhbGwgdGltZSwgeW91IGNhbiBhbHdheXMgcmUtcnVuIHRoZQoraW5zdGFsbGVyIHRvIGNob29zZSBpdC4KKworVGhlIGFsdGVybmF0aXZlIGlzIG1hbnVhbGx5IG1vZGlmeWluZyB0aGUgOmVudnZhcjpgJVBBVEglYCB1c2luZyB0aGUKK2RpcmVjdGlvbnMgaW4gOnJlZjpgc2V0dGluZy1lbnZ2YXJzYC4gWW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYAorZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwKK2RlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuIEFuIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vaworbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYXJlIFdpbmRvd3MnIGRlZmF1bHQpOjoKKworICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24zMwogCiAKIEZpbmRpbmcgbW9kdWxlcwpAQCAtMjA1LDEzICsyMTcsMTkgQEAKIEV4ZWN1dGluZyBzY3JpcHRzCiAtLS0tLS0tLS0tLS0tLS0tLQogCi1QeXRob24gc2NyaXB0cyAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uIGBgLnB5YGApIHdpbGwgYmUgZXhlY3V0ZWQgYnkKLTpwcm9ncmFtOmBweXRob24uZXhlYCBieSBkZWZhdWx0LiAgVGhpcyBleGVjdXRhYmxlIG9wZW5zIGEgdGVybWluYWwsIHdoaWNoIHN0YXlzCi1vcGVuIGV2ZW4gaWYgdGhlIHByb2dyYW0gdXNlcyBhIEdVSS4gIElmIHlvdSBkbyBub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiwgdXNlIHRoZQotZXh0ZW5zaW9uIGBgLnB5d2BgIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNjcmlwdCB0byBiZSBleGVjdXRlZCBieQotOnByb2dyYW06YHB5dGhvbncuZXhlYCBieSBkZWZhdWx0IChib3RoIGV4ZWN1dGFibGVzIGFyZSBsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwKLW9mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkpLiAgVGhpcyBzdXBwcmVzc2VzIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24KLXN0YXJ0dXAuCitBcyBvZiBQeXRob24gMy4zLCBQeXRob24gaW5jbHVkZXMgYSBsYXVuY2hlciB3aGljaCBmYWNpbGl0YXRlcyBydW5uaW5nIFB5dGhvbgorc2NyaXB0cy4gU2VlIDpyZWY6YGxhdW5jaGVyYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworRXhlY3V0aW5nIHNjcmlwdHMgd2l0aG91dCB0aGUgUHl0aG9uIGxhdW5jaGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2l0aG91dCB0aGUgUHl0aG9uIGxhdW5jaGVyIGluc3RhbGxlZCwgUHl0aG9uIHNjcmlwdHMgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbgorYGAucHlgYCkgd2lsbCBiZSBleGVjdXRlZCBieSA6cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgYnkgZGVmYXVsdC4gIFRoaXMgZXhlY3V0YWJsZQorb3BlbnMgYSB0ZXJtaW5hbCwgd2hpY2ggc3RheXMgb3BlbiBldmVuIGlmIHRoZSBwcm9ncmFtIHVzZXMgYSBHVUkuICBJZiB5b3UgZG8KK25vdCB3YW50IHRoaXMgdG8gaGFwcGVuLCB1c2UgdGhlIGV4dGVuc2lvbiBgYC5weXdgYCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzY3JpcHQKK3RvIGJlIGV4ZWN1dGVkIGJ5IDpwcm9ncmFtOmBweXRob253LmV4ZWAgYnkgZGVmYXVsdCAoYm90aCBleGVjdXRhYmxlcyBhcmUKK2xvY2F0ZWQgaW4gdGhlIHRvcC1sZXZlbCBvZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gZGlyZWN0b3J5KS4gIFRoaXMKK3N1cHByZXNzZXMgdGhlIHRlcm1pbmFsIHdpbmRvdyBvbiBzdGFydHVwLgogCiBZb3UgY2FuIGFsc28gbWFrZSBhbGwgYGAucHlgYCBzY3JpcHRzIGV4ZWN1dGUgd2l0aCA6cHJvZ3JhbTpgcHl0aG9udy5leGVgLAogc2V0dGluZyB0aGlzIHRocm91Z2ggdGhlIHVzdWFsIGZhY2lsaXRpZXMsIGZvciBleGFtcGxlIChtaWdodCByZXF1aXJlCkBAIC0yMjcsNiArMjQ1LDI1MCBAQAogICAgICAgZnR5cGUgUHl0aG9uLkZpbGU9QzpcUGF0aFx0b1xweXRob253LmV4ZSAiJTEiICUqCiAKIAorLi4gX2xhdW5jaGVyOgorCitQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cyBpcyBhIHV0aWxpdHkgd2hpY2ggYWlkcyBpbiB0aGUgbG9jYXRpb24gYW5kCitleGVjdXRpb24gb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKK2NvbW1hbmQtbGluZSkgdG8gaW5kaWNhdGUgYSBwcmVmZXJlbmNlIGZvciBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLCBhbmQKK3dpbGwgbG9jYXRlIGFuZCBleGVjdXRlIHRoYXQgdmVyc2lvbi4KKworR2V0dGluZyBzdGFydGVkCistLS0tLS0tLS0tLS0tLS0KKworRnJvbSB0aGUgY29tbWFuZC1saW5lCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworWW91IHNob3VsZCBlbnN1cmUgdGhlIGxhdW5jaGVyIGlzIG9uIHlvdXIgUEFUSCAtIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzCitpbnN0YWxsZWQgaXQgbWF5IGFscmVhZHkgYmUgdGhlcmUsIGJ1dCBjaGVjayBqdXN0IGluIGNhc2UgaXQgaXMgbm90LgorCitGcm9tIGEgY29tbWFuZC1wcm9tcHQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCis6OgorCisgIHB5CisKK1lvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCBpcworc3RhcnRlZCAtIGl0IGNhbiBiZSBleGl0ZWQgYXMgbm9ybWFsLCBhbmQgYW55IGFkZGl0aW9uYWwgY29tbWFuZC1saW5lCithcmd1bWVudHMgc3BlY2lmaWVkIHdpbGwgYmUgc2VudCBkaXJlY3RseSB0byBQeXRob24uCisKK0lmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiAyLnggaW5zdGFsbGVkIChlLmcuLCAyLjYgYW5kIDIuNykgeW91Cit3aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiAyLjcgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNiwgdHJ5IHRoZQorY29tbWFuZDoKKworOjoKKworICBweSAtMi42CisKK0lmIHlvdSBoYXZlIGEgUHl0aG9uIDMueCBpbnN0YWxsZWQsIHRyeSB0aGUgY29tbWFuZDoKKworOjoKKworICBweSAtMworCitZb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAzLnggc3RhcnRzLgorCitGcm9tIGEgc2NyaXB0CiteXl5eXl5eXl5eXl5eCisKK0xldCdzIGNyZWF0ZSBhIHRlc3QgUHl0aG9uIHNjcmlwdCAtIGNyZWF0ZSBhIGZpbGUgY2FsbGVkIGBgaGVsbG8ucHlgYCB3aXRoIHRoZQorZm9sbG93aW5nIGNvbnRlbnRzCisKKzo6CisKKyAgICAjISBweXRob24KKyAgICBpbXBvcnQgc3lzCisgICAgc3lzLnN0ZG91dC53cml0ZSgiaGVsbG8gZnJvbSBQeXRob24gJXNcbiIgJSAoc3lzLnZlcnNpb24sKSkKKworRnJvbSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGhlbGxvLnB5IGxpdmVzLCBleGVjdXRlIHRoZSBjb21tYW5kOgorCis6OgorCisgICBweSBoZWxsby5weQorCitZb3Ugc2hvdWxkIG5vdGljZSB0aGUgdmVyc2lvbiBudW1iZXIgb2YgeW91ciBsYXRlc3QgUHl0aG9uIDIueCBpbnN0YWxsYXRpb24KK2lzIHByaW50ZWQuICBOb3cgdHJ5IGNoYW5naW5nIHRoZSBmaXJzdCBsaW5lIHRvIGJlOgorCis6OgorCisgICAgIyEgcHl0aG9uMworCitSZS1leGVjdXRpbmcgdGhlIGNvbW1hbmQgc2hvdWxkIG5vdyBwcmludCB0aGUgbGF0ZXN0IFB5dGhvbiAzLnggaW5mb3JtYXRpb24uCitBcyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kLWxpbmUgZXhhbXBsZXMsIHlvdSBjYW4gc3BlY2lmeSBhIG1vcmUgZXhwbGljaXQKK3ZlcnNpb24gcXVhbGlmaWVyLiAgQXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNiBpbnN0YWxsZWQsIHRyeSBjaGFuZ2luZyB0aGUKK2ZpcnN0IGxpbmUgdG8gYGAjISBweXRob24yLjZgYCBhbmQgeW91IHNob3VsZCBmaW5kIHRoZSAyLjYgdmVyc2lvbgoraW5mb3JtYXRpb24gcHJpbnRlZC4KKworRnJvbSBmaWxlIGFzc29jaWF0aW9ucworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgbGF1bmNoZXIgc2hvdWxkIGhhdmUgYmVlbiBhc3NvY2lhdGVkIHdpdGggUHl0aG9uIGZpbGVzIChpLmUuIGBgLnB5YGAsCitgYC5weXdgYCwgYGAucHljYGAsIGBgLnB5b2BgIGZpbGVzKSB3aGVuIGl0IHdhcyBpbnN0YWxsZWQuICBUaGlzIG1lYW5zIHRoYXQKK3doZW4geW91IGRvdWJsZS1jbGljayBvbiBvbmUgb2YgdGhlc2UgZmlsZXMgZnJvbSBXaW5kb3dzIGV4cGxvcmVyIHRoZSBsYXVuY2hlcgord2lsbCBiZSB1c2VkLCBhbmQgdGhlcmVmb3JlIHlvdSBjYW4gdXNlIHRoZSBzYW1lIGZhY2lsaXRpZXMgZGVzY3JpYmVkIGFib3ZlIHRvCitoYXZlIHRoZSBzY3JpcHQgc3BlY2lmeSB0aGUgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC4KKworVGhlIGtleSBiZW5lZml0IG9mIHRoaXMgaXMgdGhhdCBhIHNpbmdsZSBsYXVuY2hlciBjYW4gc3VwcG9ydCBtdWx0aXBsZSBQeXRob24KK3ZlcnNpb25zIGF0IHRoZSBzYW1lIHRpbWUgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgZmlyc3QgbGluZS4KKworU2hlYmFuZyBMaW5lcworLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZmlyc3QgbGluZSBvZiBhIHNjcmlwdCBmaWxlIHN0YXJ0cyB3aXRoIGBgIyFgYCwgaXQgaXMga25vd24gYXMgYQorInNoZWJhbmciIGxpbmUuICBMaW51eCBhbmQgb3RoZXIgVW5peCBsaWtlIG9wZXJhdGluZyBzeXN0ZW1zIGhhdmUgbmF0aXZlCitzdXBwb3J0IGZvciBzdWNoIGxpbmVzIGFuZCBhcmUgY29tbW9ubHkgdXNlZCBvbiBzdWNoIHN5c3RlbXMgdG8gaW5kaWNhdGUgaG93CithIHNjcmlwdCBzaG91bGQgYmUgZXhlY3V0ZWQuICBUaGlzIGxhdW5jaGVyIGFsbG93cyB0aGUgc2FtZSBmYWNpbGl0aWVzIHRvIGJlCit1c2luZyB3aXRoIFB5dGhvbiBzY3JpcHRzIG9uIFdpbmRvd3MgYW5kIHRoZSBleGFtcGxlcyBhYm92ZSBkZW1vbnN0cmF0ZSB0aGVpcgordXNlLgorCitUbyBhbGxvdyBzaGViYW5nIGxpbmVzIGluIFB5dGhvbiBzY3JpcHRzIHRvIGJlIHBvcnRhYmxlIGJldHdlZW4gVW5peCBhbmQKK1dpbmRvd3MsIHRoaXMgbGF1bmNoZXIgc3VwcG9ydHMgYSBudW1iZXIgb2YgJ3ZpcnR1YWwnIGNvbW1hbmRzIHRvIHNwZWNpZnkKK3doaWNoIGludGVycHJldGVyIHRvIHVzZS4gIFRoZSBzdXBwb3J0ZWQgdmlydHVhbCBjb21tYW5kcyBhcmU6CisKKyogYGAvdXNyL2Jpbi9lbnYgcHl0aG9uYGAKKyogYGAvdXNyL2Jpbi9weXRob25gYAorKiBgYC91c3IvbG9jYWwvYmluL3B5dGhvbmBgCisqIGBgcHl0aG9uYGAKKworRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBsaW5lIG9mIHlvdXIgc2NyaXB0IHN0YXJ0cyB3aXRoCisKKzo6CisKKyAgIyEgL3Vzci9iaW4vcHl0aG9uCisKK1RoZSBkZWZhdWx0IFB5dGhvbiB3aWxsIGJlIGxvY2F0ZWQgYW5kIHVzZWQuICBBcyBtYW55IFB5dGhvbiBzY3JpcHRzIHdyaXR0ZW4KK3RvIHdvcmsgb24gVW5peCB3aWxsIGFscmVhZHkgaGF2ZSB0aGlzIGxpbmUsIHlvdSBzaG91bGQgZmluZCB0aGVzZSBzY3JpcHRzIGNhbgorYmUgdXNlZCBieSB0aGUgbGF1bmNoZXIgd2l0aG91dCBtb2RpZmljYXRpb24uICBJZiB5b3UgYXJlIHdyaXRpbmcgYSBuZXcgc2NyaXB0CitvbiBXaW5kb3dzIHdoaWNoIHlvdSBob3BlIHdpbGwgYmUgdXNlZnVsIG9uIFVuaXgsIHlvdSBzaG91bGQgdXNlIG9uZSBvZiB0aGUKK3NoZWJhbmcgbGluZXMgc3RhcnRpbmcgd2l0aCBgYC91c3JgYC4KKworQXJndW1lbnRzIGluIHNoZWJhbmcgbGluZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzaGViYW5nIGxpbmVzIGNhbiBhbHNvIHNwZWNpZnkgYWRkaXRpb25hbCBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byB0aGUKK1B5dGhvbiBpbnRlcnByZXRlci4gIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIHNoZWJhbmcgbGluZToKKworOjoKKworICAjISAvdXNyL2Jpbi9weXRob24gLXYKKworVGhlbiBQeXRob24gd2lsbCBiZSBzdGFydGVkIHdpdGggdGhlIGBgLXZgYCBvcHRpb24KKworQ3VzdG9taXphdGlvbgorLS0tLS0tLS0tLS0tLQorCitDdXN0b21pemF0aW9uIHZpYSBJTkkgZmlsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCisgICAgVHdvIC5pbmkgZmlsZXMgd2lsbCBiZSBzZWFyY2hlZCBieSB0aGUgbGF1bmNoZXIgLSBgYHB5LmluaWBgIGluIHRoZQorICAgIGN1cnJlbnQgdXNlcidzICJhcHBsaWNhdGlvbiBkYXRhIiBkaXJlY3RvcnkgKGkuZS4gdGhlIGRpcmVjdG9yeSByZXR1cm5lZAorICAgIGJ5IGNhbGxpbmcgdGhlIFdpbmRvd3MgZnVuY3Rpb24gU0hHZXRGb2xkZXJQYXRoIHdpdGggQ1NJRExfTE9DQUxfQVBQREFUQSkKKyAgICBhbmQgYGBweS5pbmlgYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGxhdW5jaGVyLiAgVGhlIHNhbWUgLmluaQorICAgIGZpbGVzIGFyZSB1c2VkIGZvciBib3RoIHRoZSAnY29uc29sZScgdmVyc2lvbiBvZiB0aGUgbGF1bmNoZXIgKGkuZS4KKyAgICBweS5leGUpIGFuZCBmb3IgdGhlICd3aW5kb3dzJyB2ZXJzaW9uIChpLmUuIHB5dy5leGUpCisKKyAgICBDdXN0b21pemF0aW9uIHNwZWNpZmllZCBpbiB0aGUgImFwcGxpY2F0aW9uIGRpcmVjdG9yeSIgd2lsbCBoYXZlCisgICAgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUgbmV4dCB0byB0aGUgZXhlY3V0YWJsZSwgc28gYSB1c2VyLCB3aG8gbWF5IG5vdAorICAgIGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSAuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZQorICAgIGNvbW1hbmRzIGluIHRoYXQgZ2xvYmFsIC5pbmkgZmlsZSkKKworQ3VzdG9taXppbmcgZGVmYXVsdCBQeXRob24gdmVyc2lvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHNvbWUgY2FzZXMsIGEgdmVyc2lvbiBxdWFsaWZpZXIgY2FuIGJlIGluY2x1ZGVkIGluIGEgY29tbWFuZCB0byBkaWN0YXRlCit3aGljaCB2ZXJzaW9uIG9mIFB5dGhvbiB3aWxsIGJlIHVzZWQgYnkgdGhlIGNvbW1hbmQuIEEgdmVyc2lvbiBxdWFsaWZpZXIKK3N0YXJ0cyB3aXRoIGEgbWFqb3IgdmVyc2lvbiBudW1iZXIgYW5kIGNhbiBvcHRpb25hbGx5IGJlIGZvbGxvd2VkIGJ5IGEgcGVyaW9kCisoJy4nKSBhbmQgYSBtaW5vciB2ZXJzaW9uIHNwZWNpZmllci4gSWYgdGhlIG1pbm9yIHF1YWxpZmllciBpcyBzcGVjaWZpZWQsIGl0CittYXkgb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSAiLTMyIiB0byBpbmRpY2F0ZSB0aGUgMzItYml0IGltcGxlbWVudGF0aW9uIG9mCit0aGF0IHZlcnNpb24gYmUgdXNlZC4KKworRm9yIGV4YW1wbGUsIGEgc2hlYmFuZyBsaW5lIG9mIGBgIyFweXRob25gYCBoYXMgbm8gdmVyc2lvbiBxdWFsaWZpZXIsIHdoaWxlCitgYCMhcHl0aG9uM2BgIGhhcyBhIHZlcnNpb24gcXVhbGlmaWVyIHdoaWNoIHNwZWNpZmllcyBvbmx5IGEgbWFqb3IgdmVyc2lvbi4KKworSWYgbm8gdmVyc2lvbiBxdWFsaWZpZXJzIGFyZSBmb3VuZCBpbiBhIGNvbW1hbmQsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorYGBQWV9QWVRIT05gYCBjYW4gYmUgc2V0IHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmVyc2lvbiBxdWFsaWZpZXIgLSB0aGUgZGVmYXVsdAordmFsdWUgaXMgIjIiLiBOb3RlIHRoaXMgdmFsdWUgY291bGQgc3BlY2lmeSBqdXN0IGEgbWFqb3IgdmVyc2lvbiAoZS5nLiAiMiIpIG9yCithIG1ham9yLm1pbm9yIHF1YWxpZmllciAoZS5nLiAiMi42IiksIG9yIGV2ZW4gbWFqb3IubWlub3ItMzIuCisKK0lmIG5vIG1pbm9yIHZlcnNpb24gcXVhbGlmaWVycyBhcmUgZm91bmQsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorYGBQWV9QWVRIT057bWFqb3J9YGAgKHdoZXJlIGBge21ham9yfWBgIGlzIHRoZSBjdXJyZW50IG1ham9yIHZlcnNpb24gcXVhbGlmaWVyCithcyBkZXRlcm1pbmVkIGFib3ZlKSBjYW4gYmUgc2V0IHRvIHNwZWNpZnkgdGhlIGZ1bGwgdmVyc2lvbi4gSWYgbm8gc3VjaCBvcHRpb24KK2lzIGZvdW5kLCB0aGUgbGF1bmNoZXIgd2lsbCBlbnVtZXJhdGUgdGhlIGluc3RhbGxlZCBQeXRob24gdmVyc2lvbnMgYW5kIHVzZQordGhlIGxhdGVzdCBtaW5vciByZWxlYXNlIGZvdW5kIGZvciB0aGUgbWFqb3IgdmVyc2lvbiwgd2hpY2ggaXMgbGlrZWx5LAorYWx0aG91Z2ggbm90IGd1YXJhbnRlZWQsIHRvIGJlIHRoZSBtb3N0IHJlY2VudGx5IGluc3RhbGxlZCB2ZXJzaW9uIGluIHRoYXQKK2ZhbWlseS4KKworT24gNjQtYml0IFdpbmRvd3Mgd2l0aCBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZQorKG1ham9yLm1pbm9yKSBQeXRob24gdmVyc2lvbiBpbnN0YWxsZWQsIHRoZSA2NC1iaXQgdmVyc2lvbiB3aWxsIGFsd2F5cyBiZQorcHJlZmVycmVkLiBUaGlzIHdpbGwgYmUgdHJ1ZSBmb3IgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCitsYXVuY2hlciAtIGEgMzItYml0IGxhdW5jaGVyIHdpbGwgcHJlZmVyIHRvIGV4ZWN1dGUgYSA2NC1iaXQgUHl0aG9uIGluc3RhbGxhdGlvbgorb2YgdGhlIHNwZWNpZmllZCB2ZXJzaW9uIGlmIGF2YWlsYWJsZS4gVGhpcyBpcyBzbyB0aGUgYmVoYXZpb3Igb2YgdGhlIGxhdW5jaGVyCitjYW4gYmUgcHJlZGljdGVkIGtub3dpbmcgb25seSB3aGF0IHZlcnNpb25zIGFyZSBpbnN0YWxsZWQgb24gdGhlIFBDIGFuZAord2l0aG91dCByZWdhcmQgdG8gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBpbnN0YWxsZWQgKGkuZS4sIHdpdGhvdXQga25vd2luZword2hldGhlciBhIDMyIG9yIDY0LWJpdCB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgY29ycmVzcG9uZGluZyBsYXVuY2hlciB3YXMKK2luc3RhbGxlZCBsYXN0KS4gQXMgbm90ZWQgYWJvdmUsIGFuIG9wdGlvbmFsICItMzIiIHN1ZmZpeCBjYW4gYmUgdXNlZCBvbiBhCit2ZXJzaW9uIHNwZWNpZmllciB0byBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIuCisKK0V4YW1wbGVzOgorCisqIElmIG5vIHJlbGV2YW50IG9wdGlvbnMgYXJlIHNldCwgdGhlIGNvbW1hbmRzIGBgcHl0aG9uYGAgYW5kCisgIGBgcHl0aG9uMmBgIHdpbGwgdXNlIHRoZSBsYXRlc3QgUHl0aG9uIDIueCB2ZXJzaW9uIGluc3RhbGxlZCBhbmQKKyAgdGhlIGNvbW1hbmQgYGBweXRob24zYGAgd2lsbCB1c2UgdGhlIGxhdGVzdCBQeXRob24gMy54IGluc3RhbGxlZC4KKworKiBUaGUgY29tbWFuZHMgYGBweXRob24zLjFgYCBhbmQgYGBweXRob24yLjdgYCB3aWxsIG5vdCBjb25zdWx0IGFueQorICBvcHRpb25zIGF0IGFsbCBhcyB0aGUgdmVyc2lvbnMgYXJlIGZ1bGx5IHNwZWNpZmllZC4KKworKiBJZiBgYFBZX1BZVEhPTj0zYGAsIHRoZSBjb21tYW5kcyBgYHB5dGhvbmBgIGFuZCBgYHB5dGhvbjNgYCB3aWxsIGJvdGggdXNlCisgIHRoZSBsYXRlc3QgaW5zdGFsbGVkIFB5dGhvbiAzIHZlcnNpb24uCisKKyogSWYgYGBQWV9QWVRIT049My4xLTMyYGAsIHRoZSBjb21tYW5kIGBgcHl0aG9uYGAgd2lsbCB1c2UgdGhlIDMyLWJpdAorICBpbXBsZW1lbnRhdGlvbiBvZiAzLjEgd2hlcmVhcyB0aGUgY29tbWFuZCBgYHB5dGhvbjNgYCB3aWxsIHVzZSB0aGUgbGF0ZXN0CisgIGluc3RhbGxlZCBQeXRob24gKFBZX1BZVEhPTiB3YXMgbm90IGNvbnNpZGVyZWQgYXQgYWxsIGFzIGEgbWFqb3IKKyAgdmVyc2lvbiB3YXMgc3BlY2lmaWVkLikKKworKiBJZiBgYFBZX1BZVEhPTj0zYGAgYW5kIGBgUFlfUFlUSE9OMz0zLjFgYCwgdGhlIGNvbW1hbmRzCisgIGBgcHl0aG9uYGAgYW5kIGBgcHl0aG9uM2BgIHdpbGwgYm90aCB1c2Ugc3BlY2lmaWNhbGx5IDMuMQorCitJbiBhZGRpdGlvbiB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHRoZSBzYW1lIHNldHRpbmdzIGNhbiBiZSBjb25maWd1cmVkCitpbiB0aGUgLklOSSBmaWxlIHVzZWQgYnkgdGhlIGxhdW5jaGVyLiAgVGhlIHNlY3Rpb24gaW4gdGhlIElOSSBmaWxlIGlzCitjYWxsZWQgYGBbZGVmYXVsdHNdYGAgYW5kIHRoZSBrZXkgbmFtZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZQorZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGhvdXQgdGhlIGxlYWRpbmcgYGBQWV9gYCBwcmVmaXggKGFuZCBub3RlIHRoYXQKK3RoZSBrZXkgbmFtZXMgaW4gdGhlIElOSSBmaWxlIGFyZSBjYXNlIGluc2Vuc2l0aXZlLikgIFRoZSBjb250ZW50cyBvZgorYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2lsbCBvdmVycmlkZSB0aGluZ3Mgc3BlY2lmaWVkIGluIHRoZSBJTkkgZmlsZS4KKworRm9yIGV4YW1wbGU6CisKKyogU2V0dGluZyBgYFBZX1BZVEhPTj0zLjFgYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBJTkkgZmlsZSBjb250YWluaW5nOgorCis6OgorCisgIFtkZWZhdWx0c10KKyAgcHl0aG9uPTMuMQorCisqIFNldHRpbmcgYGBQWV9QWVRIT049M2BgIGFuZCBgYFBZX1BZVEhPTjM9My4xYGAgaXMgZXF1aXZhbGVudCB0byB0aGUgSU5JIGZpbGUKKyAgY29udGFpbmluZzoKKworOjoKKworICBbZGVmYXVsdHNdCisgIHB5dGhvbj0zCisgIHB5dGhvbjM9My4xCisKK0RpYWdub3N0aWNzCistLS0tLS0tLS0tLQorCitJZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYFBZTEFVTkNIX0RFQlVHYGAgaXMgc2V0ICh0byBhbnkgdmFsdWUpLCB0aGUKK2xhdW5jaGVyIHdpbGwgcHJpbnQgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiB0byBzdGRlcnIgKGkuZS4gdG8gdGhlIGNvbnNvbGUpLgorV2hpbGUgdGhpcyBpbmZvcm1hdGlvbiBtYW5hZ2VzIHRvIGJlIHNpbXVsdGFuZW91c2x5IHZlcmJvc2UgKmFuZCogdGVyc2UsIGl0CitzaG91bGQgYWxsb3cgeW91IHRvIHNlZSB3aGF0IHZlcnNpb25zIG9mIFB5dGhvbiB3ZXJlIGxvY2F0ZWQsIHdoeSBhCitwYXJ0aWN1bGFyIHZlcnNpb24gd2FzIGNob3NlbiBhbmQgdGhlIGV4YWN0IGNvbW1hbmQtbGluZSB1c2VkIHRvIGV4ZWN1dGUgdGhlCit0YXJnZXQgUHl0aG9uLgorCisKIEFkZGl0aW9uYWwgbW9kdWxlcwogPT09PT09PT09PT09PT09PT09CiAKQEAgLTM0MywzICs2MDUsNyBAQAogICAgYEEgUHl0aG9uIGZvciBXaW5kb3dzIFR1dG9yaWFsIDxodHRwOi8vd3d3LmltbGFkcmlzLmNvbS9TY3JpcHRzL1B5dGhvbkZvcldpbmRvd3MuaHRtbD5gXwogICAgICAgYnkgQW1hbmRhIEJpcm1pbmdoYW0sIDIwMDQKIAorICAgOnBlcDpgMzk3YCAtIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cworICAgICAgVGhlIHByb3Bvc2FsIGZvciB0aGUgbGF1bmNoZXIgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFB5dGhvbiBkaXN0cmlidXRpb24uCisKKwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4wLnJzdAppbmRleCA4NTBlNTdkLi42NGI5MDhiIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4wLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4wLnJzdApAQCAtMTY2LDcgKzE2Niw3IEBACiByZWdpc3RlcmluZyBuZXcgZW5jb2RpbmdzIHRoYXQgYXJlIHRoZW4gYXZhaWxhYmxlIHRocm91Z2hvdXQgYSBQeXRob24gcHJvZ3JhbS4KIElmIGFuIGVuY29kaW5nIGlzbid0IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgdXN1YWxseSA3LWJpdCBBU0NJSSwKIHRob3VnaCBpdCBjYW4gYmUgY2hhbmdlZCBmb3IgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGJ5IGNhbGxpbmcgdGhlCi06ZnVuYzpgc3lzLnNldGRlZmF1bHRlbmNvZGluZyhlbmNvZGluZylgIGZ1bmN0aW9uIGluIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mCitgYHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoZW5jb2RpbmcpYGAgZnVuY3Rpb24gaW4gYSBjdXN0b21pc2VkIHZlcnNpb24gb2YKIDpmaWxlOmBzaXRlLnB5YC4KIAogQ29tYmluaW5nIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgYWx3YXlzIGNvZXJjZXMgdG8gVW5pY29kZSwgdXNpbmcgdGhlIGRlZmF1bHQKQEAgLTIwMyw3ICsyMDMsNyBAQAogCiBUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIHRvIGxvb2sgdXAgZXhpc3RpbmcgZW5jb2RpbmdzIGFuZAogcmVnaXN0ZXIgbmV3IG9uZXMuICBVbmxlc3MgeW91IHdhbnQgdG8gaW1wbGVtZW50IGEgbmV3IGVuY29kaW5nLCB5b3UnbGwgbW9zdAotb2Z0ZW4gdXNlIHRoZSA6ZnVuYzpgY29kZWNzLmxvb2t1cChlbmNvZGluZylgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEKK29mdGVuIHVzZSB0aGUgYGBjb2RlY3MubG9va3VwKGVuY29kaW5nKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEKIDQtZWxlbWVudCB0dXBsZTogYGAoZW5jb2RlX2Z1bmMsIGRlY29kZV9mdW5jLCBzdHJlYW1fcmVhZGVyLCBzdHJlYW1fd3JpdGVyKWBgLgogCiAqICplbmNvZGVfZnVuYyogaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgVW5pY29kZSBzdHJpbmcsIGFuZCByZXR1cm5zIGEgMi10dXBsZQpAQCAtNjAwLDcgKzYwMCw3IEBACiBDaGFuZ2VzIHRvIEJ1aWx0LWluIEZ1bmN0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSBuZXcgYnVpbHQtaW4sIDpmdW5jOmB6aXAoc2VxMSwgc2VxMiwgLi4uKWAsIGhhcyBiZWVuIGFkZGVkLiAgOmZ1bmM6YHppcGAKK0EgbmV3IGJ1aWx0LWluLCBgYHppcChzZXExLCBzZXEyLCAuLi4pYGAsIGhhcyBiZWVuIGFkZGVkLiAgOmZ1bmM6YHppcGAKIHJldHVybnMgYSBsaXN0IG9mIHR1cGxlcyB3aGVyZSBlYWNoIHR1cGxlIGNvbnRhaW5zIHRoZSBpLXRoIGVsZW1lbnQgZnJvbSBlYWNoIG9mCiB0aGUgYXJndW1lbnQgc2VxdWVuY2VzLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiA6ZnVuYzpgemlwYCBhbmQgYGBtYXAoTm9uZSwKIHNlcTEsIHNlcTIpYGAgaXMgdGhhdCA6ZnVuYzpgbWFwYCBwYWRzIHRoZSBzZXF1ZW5jZXMgd2l0aCBgYE5vbmVgYCBpZiB0aGUKQEAgLTYxOSw3ICs2MTksNyBAQAogd291bGQgYmUgYGAoMiwgMCwgMSwgJ2JldGEnLCAxKWBgLiAqbGV2ZWwqIGlzIGEgc3RyaW5nIHN1Y2ggYXMgYGAiYWxwaGEiYGAsCiBgYCJiZXRhImBgLCBvciBgYCJmaW5hbCJgYCBmb3IgYSBmaW5hbCByZWxlYXNlLgogCi1EaWN0aW9uYXJpZXMgaGF2ZSBhbiBvZGQgbmV3IG1ldGhvZCwgOm1ldGg6YHNldGRlZmF1bHQoa2V5LCBkZWZhdWx0KWAsIHdoaWNoCitEaWN0aW9uYXJpZXMgaGF2ZSBhbiBvZGQgbmV3IG1ldGhvZCwgYGBzZXRkZWZhdWx0KGtleSwgZGVmYXVsdClgYCwgd2hpY2gKIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHRoZSBleGlzdGluZyA6bWV0aDpgZ2V0YCBtZXRob2QuICBIb3dldmVyLCBpZiB0aGUga2V5IGlzCiBtaXNzaW5nLCA6bWV0aDpgc2V0ZGVmYXVsdGAgYm90aCByZXR1cm5zIHRoZSB2YWx1ZSBvZiAqZGVmYXVsdCogYXMgOm1ldGg6YGdldGAKIHdvdWxkIGRvLCBhbmQgYWxzbyBpbnNlcnRzIGl0IGludG8gdGhlIGRpY3Rpb25hcnkgYXMgdGhlIHZhbHVlIGZvciAqa2V5Ki4gIFRodXMsCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBTb2NrZXQgTGF5ZXIsIHdoaWNoIGVuY3J5cHRzIHRoZSBkYXRhIGJlaW5nCiBzZW50IG92ZXIgYSBzb2NrZXQuICBXaGVuIGNvbXBpbGluZyBQeXRob24sIHlvdSBjYW4gZWRpdCA6ZmlsZTpgTW9kdWxlcy9TZXR1cGAKIHRvIGluY2x1ZGUgU1NMIHN1cHBvcnQsIHdoaWNoIGFkZHMgYW4gYWRkaXRpb25hbCBmdW5jdGlvbiB0byB0aGUgOm1vZDpgc29ja2V0YAotbW9kdWxlOiA6ZnVuYzpgc29ja2V0LnNzbChzb2NrZXQsIGtleWZpbGUsIGNlcnRmaWxlKWAsIHdoaWNoIHRha2VzIGEgc29ja2V0Cittb2R1bGU6IGBgc29ja2V0LnNzbChzb2NrZXQsIGtleWZpbGUsIGNlcnRmaWxlKWBgLCB3aGljaCB0YWtlcyBhIHNvY2tldAogb2JqZWN0IGFuZCByZXR1cm5zIGFuIFNTTCBzb2NrZXQuICBUaGUgOm1vZDpgaHR0cGxpYmAgYW5kIDptb2Q6YHVybGxpYmAgbW9kdWxlcwogd2VyZSBhbHNvIGNoYW5nZWQgdG8gc3VwcG9ydCBgYGh0dHBzOi8vYGAgVVJMcywgdGhvdWdoIG5vIG9uZSBoYXMgaW1wbGVtZW50ZWQKIEZUUCBvciBTTVRQIG92ZXIgU1NMLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAppbmRleCAxMTdhZjEwLi5iMWFiNDhlIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdApAQCAtMjA0LDcgKzIwNCw3IEBACiBsaXN0LCBvciBhbnkgb3RoZXIgUHl0aG9uIG9iamVjdC4gIEFsdGVybmF0aXZlbHkgdGhleSBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIGlmCiB0aGUgY29tcGFyaXNvbiBpcyBpbXBvc3NpYmxlLCBpbmNvbnNpc3RlbnQsIG9yIG90aGVyd2lzZSBtZWFuaW5nbGVzcy4KIAotVGhlIGJ1aWx0LWluIDpmdW5jOmBjbXAoQSxCKWAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKK1RoZSBidWlsdC1pbiBgYGNtcChBLEIpYGAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKIGFuZCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24gb3BlcmF0aW9uIHRvCiB1c2U7IHRoaXMgaXMgZ2l2ZW4gYXMgb25lIG9mIHRoZSBzdHJpbmdzIGBgIjwiYGAsIGBgIjw9ImBgLCBgYCI+ImBgLCBgYCI+PSJgYCwKIGBgIj09ImBgLCBvciBgYCIhPSJgYC4gIElmIGNhbGxlZCB3aXRob3V0IHRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwKQEAgLTM1MCw3ICszNTAsNyBAQAogYW5kIGFub3RoZXIgYmVpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiBkYXRhIHN0cnVjdHVyZXMgc3VjaCBhcyB0cmVlcy4KIAogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgbWVtb2l6aW5nIGZ1bmN0aW9uIHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGFub3RoZXIKLWZ1bmN0aW9uIDpmdW5jOmBmKHgpYCBieSBzdG9yaW5nIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGFuZCBpdHMgcmVzdWx0IGluIGEKK2Z1bmN0aW9uIGBgZih4KWBgIGJ5IHN0b3JpbmcgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgYW5kIGl0cyByZXN1bHQgaW4gYQogZGljdGlvbmFyeTo6CiAKICAgIF9jYWNoZSA9IHt9CkBAIC02NTYsNyArNjU2LDcgQEAKICAgdXNlIDptb2Q6YGZ0cGxpYmAgdG8gcmV0cmlldmUgZmlsZXMgYW5kIHRoZW4gZG9uJ3Qgd29yayBmcm9tIGJlaGluZCBhIGZpcmV3YWxsLgogICBJdCdzIGRlZW1lZCB1bmxpa2VseSB0aGF0IHRoaXMgd2lsbCBjYXVzZSBwcm9ibGVtcyBmb3IgYW55b25lLCBiZWNhdXNlIE5ldHNjYXBlCiAgIGRlZmF1bHRzIHRvIHBhc3NpdmUgbW9kZSBhbmQgZmV3IHBlb3BsZSBjb21wbGFpbiwgYnV0IGlmIHBhc3NpdmUgbW9kZSBpcwotICB1bnN1aXRhYmxlIGZvciB5b3VyIGFwcGxpY2F0aW9uIG9yIG5ldHdvcmsgc2V0dXAsIGNhbGwgOm1ldGg6YHNldF9wYXN2KDApYCBvbgorICB1bnN1aXRhYmxlIGZvciB5b3VyIGFwcGxpY2F0aW9uIG9yIG5ldHdvcmsgc2V0dXAsIGNhbGwgYGBzZXRfcGFzdigwKWBgIG9uCiAgIEZUUCBvYmplY3RzIHRvIGRpc2FibGUgcGFzc2l2ZSBtb2RlLgogCiAqIFN1cHBvcnQgZm9yIHJhdyBzb2NrZXQgYWNjZXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSwKQEAgLTY2Niw3ICs2NjYsNyBAQAogICBmb3IgZGlzcGxheWluZyB0aW1pbmcgcHJvZmlsZXMgZm9yIFB5dGhvbiBwcm9ncmFtcywgaW52b2tlZCB3aGVuIHRoZSBtb2R1bGUgaXMKICAgcnVuIGFzIGEgc2NyaXB0LiAgQ29udHJpYnV0ZWQgYnkgIEVyaWMgUy4gUmF5bW9uZC4KIAotKiBBIG5ldyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZnVuY3Rpb24sIDpmdW5jOmBzeXMuX2dldGZyYW1lKFtkZXB0aF0pYCwgaGFzCisqIEEgbmV3IGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBmdW5jdGlvbiwgYGBzeXMuX2dldGZyYW1lKFtkZXB0aF0pYGAsIGhhcwogICBiZWVuIGFkZGVkIHRvIHJldHVybiBhIGdpdmVuIGZyYW1lIG9iamVjdCBmcm9tIHRoZSBjdXJyZW50IGNhbGwgc3RhY2suCiAgIDpmdW5jOmBzeXMuX2dldGZyYW1lYCByZXR1cm5zIHRoZSBmcmFtZSBhdCB0aGUgdG9wIG9mIHRoZSBjYWxsIHN0YWNrOyAgaWYgdGhlCiAgIG9wdGlvbmFsIGludGVnZXIgYXJndW1lbnQgKmRlcHRoKiBpcyBzdXBwbGllZCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4yLnJzdCBiL0RvYy93aGF0c25ldy8yLjIucnN0CmluZGV4IDFkYjFlZTcuLjJlNzA2OWQgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjIucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjIucnN0CkBAIC0xNzMsMTIgKzE3MywxMiBAQAogCiAqIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgYXR0cmlidXRlJ3MgZG9jc3RyaW5nLgogCi0qIDptZXRoOmBfX2dldF9fKG9iamVjdClgIGlzIGEgbWV0aG9kIHRoYXQgcmV0cmlldmVzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZnJvbQorKiBgYF9fZ2V0X18ob2JqZWN0KWBgIGlzIGEgbWV0aG9kIHRoYXQgcmV0cmlldmVzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZnJvbQogICAqb2JqZWN0Ki4KIAotKiA6bWV0aDpgX19zZXRfXyhvYmplY3QsIHZhbHVlKWAgc2V0cyB0aGUgYXR0cmlidXRlIG9uICpvYmplY3QqIHRvICp2YWx1ZSouCisqIGBgX19zZXRfXyhvYmplY3QsIHZhbHVlKWBgIHNldHMgdGhlIGF0dHJpYnV0ZSBvbiAqb2JqZWN0KiB0byAqdmFsdWUqLgogCi0qIDptZXRoOmBfX2RlbGV0ZV9fKG9iamVjdCwgdmFsdWUpYCBkZWxldGVzIHRoZSAqdmFsdWUqICBhdHRyaWJ1dGUgb2YgKm9iamVjdCouCisqIGBgX19kZWxldGVfXyhvYmplY3QsIHZhbHVlKWBgIGRlbGV0ZXMgdGhlICp2YWx1ZSogIGF0dHJpYnV0ZSBvZiAqb2JqZWN0Ki4KIAogRm9yIGV4YW1wbGUsIHdoZW4geW91IHdyaXRlIGBgb2JqLnhgYCwgdGhlIHN0ZXBzIHRoYXQgUHl0aG9uIGFjdHVhbGx5IHBlcmZvcm1zCiBhcmU6OgpAQCAtMjg4LDcgKzI4OCw3IEBACiB3aGljaCBpcyB0aGUgYmVoYXZpb3VyIHdlJ3JlIGFmdGVyLiAgVGhpcyBsb29rdXAgcnVsZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lCiBmb2xsb3dlZCBieSBDb21tb24gTGlzcC4gIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgc3VwZXJgLCBwcm92aWRlcyBhIHdheQogdG8gZ2V0IGF0IGEgY2xhc3MncyBzdXBlcmNsYXNzZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVpbXBsZW1lbnQgUHl0aG9uJ3MKLWFsZ29yaXRobS4gVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmb3JtIHdpbGwgYmUgIDpmdW5jOmBzdXBlcihjbGFzcywgb2JqKWAsIHdoaWNoCithbGdvcml0aG0uIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9ybSB3aWxsIGJlICBgYHN1cGVyKGNsYXNzLCBvYmopYGAsIHdoaWNoCiByZXR1cm5zICBhIGJvdW5kIHN1cGVyY2xhc3Mgb2JqZWN0IChub3QgdGhlIGFjdHVhbCBjbGFzcyBvYmplY3QpLiAgVGhpcyBmb3JtCiB3aWxsIGJlIHVzZWQgaW4gbWV0aG9kcyB0byBjYWxsIGEgbWV0aG9kIGluIHRoZSBzdXBlcmNsYXNzOyBmb3IgZXhhbXBsZSwKIDpjbGFzczpgRGAncyA6bWV0aDpgc2F2ZWAgbWV0aG9kIHdvdWxkIGxvb2sgbGlrZSB0aGlzOjoKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAgICAgICAuLi4KIAogOmZ1bmM6YHN1cGVyYCBjYW4gYWxzbyByZXR1cm4gdW5ib3VuZCBzdXBlcmNsYXNzIG9iamVjdHMgd2hlbiBjYWxsZWQgYXMKLTpmdW5jOmBzdXBlcihjbGFzcylgIG9yIDpmdW5jOmBzdXBlcihjbGFzczEsIGNsYXNzMilgLCBidXQgdGhpcyBwcm9iYWJseSB3b24ndAorYGBzdXBlcihjbGFzcylgYCBvciBgYHN1cGVyKGNsYXNzMSwgY2xhc3MyKWBgLCBidXQgdGhpcyBwcm9iYWJseSB3b24ndAogb2Z0ZW4gYmUgdXNlZnVsLgogCiAKQEAgLTMxNCwxMyArMzE0LDEzIEBACiBgYG9iai5wYXJlbnRgYCBpbnRvIGEgbWV0aG9kIGNhbGwgc3VjaCBhcyBgYG9iai5nZXRfcGFyZW50YGAuICBQeXRob24gMi4yIGFkZHMKIHNvbWUgbmV3IHdheXMgb2YgY29udHJvbGxpbmcgYXR0cmlidXRlIGFjY2Vzcy4KIAotRmlyc3QsIDptZXRoOmBfX2dldGF0dHJfXyhhdHRyX25hbWUpYCBpcyBzdGlsbCBzdXBwb3J0ZWQgYnkgbmV3LXN0eWxlIGNsYXNzZXMsCitGaXJzdCwgYGBfX2dldGF0dHJfXyhhdHRyX25hbWUpYGAgaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IG5ldy1zdHlsZSBjbGFzc2VzLAogYW5kIG5vdGhpbmcgYWJvdXQgaXQgaGFzIGNoYW5nZWQuICBBcyBiZWZvcmUsIGl0IHdpbGwgYmUgY2FsbGVkIHdoZW4gYW4gYXR0ZW1wdAogaXMgbWFkZSB0byBhY2Nlc3MgYGBvYmouZm9vYGAgYW5kIG5vIGF0dHJpYnV0ZSBuYW1lZCBgYGZvb2BgIGlzIGZvdW5kIGluIHRoZQogaW5zdGFuY2UncyBkaWN0aW9uYXJ5LgogCiBOZXctc3R5bGUgY2xhc3NlcyBhbHNvIHN1cHBvcnQgYSBuZXcgbWV0aG9kLAotOm1ldGg6YF9fZ2V0YXR0cmlidXRlX18oYXR0cl9uYW1lKWAuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcyBpcworYGBfX2dldGF0dHJpYnV0ZV9fKGF0dHJfbmFtZSlgYC4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBtZXRob2RzIGlzCiB0aGF0IDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBpcyAqYWx3YXlzKiBjYWxsZWQgd2hlbmV2ZXIgYW55IGF0dHJpYnV0ZSBpcwogYWNjZXNzZWQsIHdoaWxlIHRoZSBvbGQgOm1ldGg6YF9fZ2V0YXR0cl9fYCBpcyBvbmx5IGNhbGxlZCBpZiBgYGZvb2BgIGlzbid0CiBmb3VuZCBpbiB0aGUgaW5zdGFuY2UncyBkaWN0aW9uYXJ5LgpAQCAtNDQxLDggKzQ0MSw4IEBACiAKIEluIFB5dGhvbiAyLjIsIGl0ZXJhdGlvbiBjYW4gYmUgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSwgYW5kIDptZXRoOmBfX2dldGl0ZW1fX2AKIG1ldGhvZHMgY2FuIGJlIGxpbWl0ZWQgdG8gY2xhc3NlcyB0aGF0IHJlYWxseSBkbyBzdXBwb3J0IHJhbmRvbSBhY2Nlc3MuICBUaGUKLWJhc2ljIGlkZWEgb2YgaXRlcmF0b3JzIGlzICBzaW1wbGUuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YGl0ZXIob2JqKWAKLW9yIGBgaXRlcihDLCBzZW50aW5lbClgYCwgaXMgdXNlZCB0byBnZXQgYW4gaXRlcmF0b3IuIDpmdW5jOmBpdGVyKG9iailgIHJldHVybnMKK2Jhc2ljIGlkZWEgb2YgaXRlcmF0b3JzIGlzICBzaW1wbGUuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgYGBpdGVyKG9iailgYAorb3IgYGBpdGVyKEMsIHNlbnRpbmVsKWBgLCBpcyB1c2VkIHRvIGdldCBhbiBpdGVyYXRvci4gYGBpdGVyKG9iailgYCByZXR1cm5zCiBhbiBpdGVyYXRvciBmb3IgdGhlIG9iamVjdCAqb2JqKiwgd2hpbGUgYGBpdGVyKEMsIHNlbnRpbmVsKWBgIHJldHVybnMgYW4KIGl0ZXJhdG9yIHRoYXQgd2lsbCBpbnZva2UgdGhlIGNhbGxhYmxlIG9iamVjdCAqQyogdW50aWwgaXQgcmV0dXJucyAqc2VudGluZWwqIHRvCiBzaWduYWwgdGhhdCB0aGUgaXRlcmF0b3IgaXMgZG9uZS4KQEAgLTc5Myw3ICs3OTMsNyBAQAogCiBBbm90aGVyIGNoYW5nZSBpcyBzaW1wbGVyIHRvIGV4cGxhaW4uIFNpbmNlIHRoZWlyIGludHJvZHVjdGlvbiwgVW5pY29kZSBzdHJpbmdzCiBoYXZlIHN1cHBvcnRlZCBhbiA6bWV0aDpgZW5jb2RlYCBtZXRob2QgdG8gY29udmVydCB0aGUgc3RyaW5nIHRvIGEgc2VsZWN0ZWQKLWVuY29kaW5nIHN1Y2ggYXMgVVRGLTggb3IgTGF0aW4tMS4gIEEgc3ltbWV0cmljIDptZXRoOmBkZWNvZGUoWyplbmNvZGluZypdKWAKK2VuY29kaW5nIHN1Y2ggYXMgVVRGLTggb3IgTGF0aW4tMS4gIEEgc3ltbWV0cmljIGBgZGVjb2RlKFsqZW5jb2RpbmcqXSlgYAogbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIDgtYml0IHN0cmluZ3MgKHRob3VnaCBub3QgdG8gVW5pY29kZSBzdHJpbmdzKSBpbiAyLjIuCiA6bWV0aDpgZGVjb2RlYCBhc3N1bWVzIHRoYXQgdGhlIHN0cmluZyBpcyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGFuZCBkZWNvZGVzCiBpdCwgcmV0dXJuaW5nIHdoYXRldmVyIGlzIHJldHVybmVkIGJ5IHRoZSBjb2RlYy4KQEAgLTEyMDMsNyArMTIwMyw3IEBACiAgIHRvIGFuIE1CQ1MgZW5jb2RlZCBzdHJpbmcsIGFzIHVzZWQgYnkgdGhlIE1pY3Jvc29mdCBmaWxlIEFQSXMuICBBcyBNQkNTIGlzCiAgIGV4cGxpY2l0bHkgdXNlZCBieSB0aGUgZmlsZSBBUElzLCBQeXRob24ncyBjaG9pY2Ugb2YgQVNDSUkgYXMgdGhlIGRlZmF1bHQKICAgZW5jb2RpbmcgdHVybnMgb3V0IHRvIGJlIGFuIGFubm95YW5jZS4gIE9uIFVuaXgsIHRoZSBsb2NhbGUncyBjaGFyYWN0ZXIgc2V0IGlzCi0gIHVzZWQgaWYgOmZ1bmM6YGxvY2FsZS5ubF9sYW5naW5mbyhDT0RFU0VUKWAgaXMgYXZhaWxhYmxlLiAgKFdpbmRvd3Mgc3VwcG9ydCB3YXMKKyAgdXNlZCBpZiBgYGxvY2FsZS5ubF9sYW5naW5mbyhDT0RFU0VUKWBgIGlzIGF2YWlsYWJsZS4gIChXaW5kb3dzIHN1cHBvcnQgd2FzCiAgIGNvbnRyaWJ1dGVkIGJ5IE1hcmsgSGFtbW9uZCB3aXRoIGFzc2lzdGFuY2UgZnJvbSBNYXJjLUFuZHLDqSBMZW1idXJnLiBVbml4CiAgIHN1cHBvcnQgd2FzIGFkZGVkIGJ5IE1hcnRpbiB2b24gTMO2d2lzLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4zLnJzdAppbmRleCBmNGM3OWU0Li5mMGU0OGQ5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4zLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4zLnJzdApAQCAtNTA0LDggKzUwNCw4IEBACiAgICBaZXJvRGl2aXNpb25FcnJvcjogaW50ZWdlciBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVybwogCiBTbGlnaHRseSBtb3JlIGFkdmFuY2VkIHByb2dyYW1zIHdpbGwgdXNlIGEgbG9nZ2VyIG90aGVyIHRoYW4gdGhlIHJvb3QgbG9nZ2VyLgotVGhlIDpmdW5jOmBnZXRMb2dnZXIobmFtZSlgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGEgcGFydGljdWxhciBsb2csIGNyZWF0aW5nCi1pdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4gOmZ1bmM6YGdldExvZ2dlcihOb25lKWAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CitUaGUgYGBnZXRMb2dnZXIobmFtZSlgYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBhIHBhcnRpY3VsYXIgbG9nLCBjcmVhdGluZworaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuIGBgZ2V0TG9nZ2VyKE5vbmUpYGAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CiAKICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdzZXJ2ZXInKQogICAgIC4uLgpAQCAtNzI0LDEwICs3MjQsMTAgQEAKICAgb2JqZWN0cyB0byBpdC4gIEFkZGl0aW9uYWwgYnVpbHQtaW4gYW5kIGZyb3plbiBtb2R1bGVzIGNhbiBiZSBpbXBvcnRlZCBieSBhbgogICBvYmplY3QgYWRkZWQgdG8gdGhpcyBsaXN0LgogCi1JbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIDptZXRoOmBmaW5kX21vZHVsZShmdWxsbmFtZSwKLXBhdGg9Tm9uZSlgLiAgKmZ1bGxuYW1lKiB3aWxsIGJlIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwgZS5nLiBgYHN0cmluZ2BgIG9yCitJbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIGBgZmluZF9tb2R1bGUoZnVsbG5hbWUsCitwYXRoPU5vbmUpYGAuICAqZnVsbG5hbWUqIHdpbGwgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lLCBlLmcuIGBgc3RyaW5nYGAgb3IKIGBgZGlzdHV0aWxzLmNvcmVgYC4gIDptZXRoOmBmaW5kX21vZHVsZWAgbXVzdCByZXR1cm4gYSBsb2FkZXIgb2JqZWN0IHRoYXQgaGFzIGEKLXNpbmdsZSBtZXRob2QsIDptZXRoOmBsb2FkX21vZHVsZShmdWxsbmFtZSlgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCitzaW5nbGUgbWV0aG9kLCBgYGxvYWRfbW9kdWxlKGZ1bGxuYW1lKWBgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCiBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QuCiAKIFBzZXVkby1jb2RlIGZvciBQeXRob24ncyBuZXcgaW1wb3J0IGxvZ2ljLCB0aGVyZWZvcmUsIGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXMKQEAgLTkzNSw3ICs5MzUsNyBAQAogICAgWzAsIDIsIDRdCiAKIFRvIHNpbXBsaWZ5IGltcGxlbWVudGluZyBzZXF1ZW5jZXMgdGhhdCBzdXBwb3J0IGV4dGVuZGVkIHNsaWNpbmcsIHNsaWNlIG9iamVjdHMKLW5vdyBoYXZlIGEgbWV0aG9kIDptZXRoOmBpbmRpY2VzKGxlbmd0aClgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCitub3cgaGF2ZSBhIG1ldGhvZCBgYGluZGljZXMobGVuZ3RoKWBgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCiByZXR1cm5zIGEgYGAoc3RhcnQsIHN0b3AsIHN0ZXApYGAgdHVwbGUgdGhhdCBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvCiA6ZnVuYzpgcmFuZ2VgLiA6bWV0aDpgaW5kaWNlc2AgaGFuZGxlcyBvbWl0dGVkIGFuZCBvdXQtb2YtYm91bmRzIGluZGljZXMgaW4gYQogbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcyAoYW5kIHRoaXMgaW5ub2N1b3VzIHBocmFzZSBoaWRlcyBhIHdlbHRlcgpAQCAtOTg0LDcgKzk4NCw3IEBACiAqIEJ1aWx0LWluIHR5cGVzIG5vdyBzdXBwb3J0IHRoZSBleHRlbmRlZCBzbGljaW5nIHN5bnRheCwgYXMgZGVzY3JpYmVkIGluCiAgIHNlY3Rpb24gOnJlZjpgc2VjdGlvbi1zbGljZXNgIG9mIHRoaXMgZG9jdW1lbnQuCiAKLSogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBzdW0oaXRlcmFibGUsIHN0YXJ0PTApYCwgIGFkZHMgdXAgdGhlIG51bWVyaWMKKyogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgc3VtKGl0ZXJhYmxlLCBzdGFydD0wKWBgLCAgYWRkcyB1cCB0aGUgbnVtZXJpYwogICBpdGVtcyBpbiB0aGUgaXRlcmFibGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZWlyIHN1bS4gIDpmdW5jOmBzdW1gIG9ubHkgYWNjZXB0cwogICBudW1iZXJzLCBtZWFuaW5nIHRoYXQgeW91IGNhbid0IHVzZSBpdCB0byBjb25jYXRlbmF0ZSBhIGJ1bmNoIG9mIHN0cmluZ3MuCiAgIChDb250cmlidXRlZCBieSBBbGV4IE1hcnRlbGxpLikKQEAgLTk5OCw3ICs5OTgsNyBAQAogICBpdHMgaW5kZXgsIG5vdyB0YWtlcyBvcHRpb25hbCAgKnN0YXJ0KiBhbmQgKnN0b3AqIGFyZ3VtZW50cyB0byBsaW1pdCB0aGUgc2VhcmNoCiAgIHRvICBvbmx5IHBhcnQgb2YgdGhlIGxpc3QuCiAKLSogRGljdGlvbmFyaWVzIGhhdmUgYSBuZXcgbWV0aG9kLCA6bWV0aDpgcG9wKGtleVssICpkZWZhdWx0Kl0pYCwgdGhhdCByZXR1cm5zCisqIERpY3Rpb25hcmllcyBoYXZlIGEgbmV3IG1ldGhvZCwgYGBwb3Aoa2V5WywgKmRlZmF1bHQqXSlgYCwgdGhhdCByZXR1cm5zCiAgIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvICprZXkqIGFuZCByZW1vdmVzIHRoYXQga2V5L3ZhbHVlIHBhaXIgZnJvbSB0aGUKICAgZGljdGlvbmFyeS4gIElmIHRoZSByZXF1ZXN0ZWQga2V5IGlzbid0IHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksICpkZWZhdWx0KiBpcwogICByZXR1cm5lZCBpZiBpdCdzIHNwZWNpZmllZCBhbmQgOmV4YzpgS2V5RXJyb3JgIHJhaXNlZCBpZiBpdCBpc24ndC4gOjoKQEAgLTEwMjAsNyArMTAyMCw3IEBACiAgICAgIHt9CiAgICAgID4+PgogCi0gIFRoZXJlJ3MgYWxzbyBhIG5ldyBjbGFzcyBtZXRob2QsICA6bWV0aDpgZGljdC5mcm9ta2V5cyhpdGVyYWJsZSwgdmFsdWUpYCwgdGhhdAorICBUaGVyZSdzIGFsc28gYSBuZXcgY2xhc3MgbWV0aG9kLCAgYGBkaWN0LmZyb21rZXlzKGl0ZXJhYmxlLCB2YWx1ZSlgYCwgdGhhdAogICBjcmVhdGVzIGEgZGljdGlvbmFyeSB3aXRoIGtleXMgdGFrZW4gZnJvbSB0aGUgc3VwcGxpZWQgaXRlcmF0b3IgKml0ZXJhYmxlKiBhbmQKICAgYWxsIHZhbHVlcyBzZXQgdG8gKnZhbHVlKiwgZGVmYXVsdGluZyB0byBgYE5vbmVgYC4KIApAQCAtMTA5Myw3ICsxMDkzLDcgQEAKICAgMTAwIGJ5dGVjb2Rlcywgc3BlZWRpbmcgdXAgc2luZ2xlLXRocmVhZGVkIGFwcGxpY2F0aW9ucyBieSByZWR1Y2luZyB0aGUKICAgc3dpdGNoaW5nIG92ZXJoZWFkLiAgU29tZSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucyBtYXkgc3VmZmVyIHNsb3dlciByZXNwb25zZQogICB0aW1lLCBidXQgdGhhdCdzIGVhc2lseSBmaXhlZCBieSBzZXR0aW5nIHRoZSBsaW1pdCBiYWNrIHRvIGEgbG93ZXIgbnVtYmVyIHVzaW5nCi0gIDpmdW5jOmBzeXMuc2V0Y2hlY2tpbnRlcnZhbChOKWAuIFRoZSBsaW1pdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggdGhlIG5ldworICBgYHN5cy5zZXRjaGVja2ludGVydmFsKE4pYGAuIFRoZSBsaW1pdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggdGhlIG5ldwogICA6ZnVuYzpgc3lzLmdldGNoZWNraW50ZXJ2YWxgIGZ1bmN0aW9uLgogCiAqIE9uZSBtaW5vciBidXQgZmFyLXJlYWNoaW5nIGNoYW5nZSBpcyB0aGF0IHRoZSBuYW1lcyBvZiBleHRlbnNpb24gdHlwZXMgZGVmaW5lZApAQCAtMTI3MiwxMCArMTI3MiwxMCBAQAogCiAqIFByZXZpb3VzbHkgdGhlIDptb2Q6YGRvY3Rlc3RgIG1vZHVsZSB3b3VsZCBvbmx5IHNlYXJjaCB0aGUgZG9jc3RyaW5ncyBvZgogICBwdWJsaWMgbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGZvciB0ZXN0IGNhc2VzLCBidXQgaXQgbm93IGFsc28gZXhhbWluZXMgcHJpdmF0ZQotICBvbmVzIGFzIHdlbGwuICBUaGUgOmZ1bmM6YERvY1Rlc3RTdWl0ZShgIGZ1bmN0aW9uIGNyZWF0ZXMgYQorICBvbmVzIGFzIHdlbGwuICBUaGUgOmZ1bmM6YERvY1Rlc3RTdWl0ZWAgZnVuY3Rpb24gY3JlYXRlcyBhCiAgIDpjbGFzczpgdW5pdHRlc3QuVGVzdFN1aXRlYCBvYmplY3QgZnJvbSBhIHNldCBvZiA6bW9kOmBkb2N0ZXN0YCB0ZXN0cy4KIAotKiBUaGUgbmV3IDpmdW5jOmBnYy5nZXRfcmVmZXJlbnRzKG9iamVjdClgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUKKyogVGhlIG5ldyBgYGdjLmdldF9yZWZlcmVudHMob2JqZWN0KWBgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUKICAgb2JqZWN0cyByZWZlcmVuY2VkIGJ5ICpvYmplY3QqLgogCiAqIFRoZSA6bW9kOmBnZXRvcHRgIG1vZHVsZSBnYWluZWQgYSBuZXcgZnVuY3Rpb24sIDpmdW5jOmBnbnVfZ2V0b3B0YCwgdGhhdApAQCAtMTM0Nyw4ICsxMzQ3LDggQEAKICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBUd28gbmV3IGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlLCA6ZnVuYzpgZGVncmVlcyhyYWRzKWAgYW5kCi0gIDpmdW5jOmByYWRpYW5zKGRlZ3MpYCwgY29udmVydCBiZXR3ZWVuIHJhZGlhbnMgYW5kIGRlZ3JlZXMuICBPdGhlciBmdW5jdGlvbnMgaW4KKyogVHdvIG5ldyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSwgYGBkZWdyZWVzKHJhZHMpYGAgYW5kCisgIGBgcmFkaWFucyhkZWdzKWBgLCBjb252ZXJ0IGJldHdlZW4gcmFkaWFucyBhbmQgZGVncmVlcy4gIE90aGVyIGZ1bmN0aW9ucyBpbgogICB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlIHN1Y2ggYXMgOmZ1bmM6YG1hdGguc2luYCBhbmQgOmZ1bmM6YG1hdGguY29zYCBoYXZlIGFsd2F5cwogICByZXF1aXJlZCBpbnB1dCB2YWx1ZXMgbWVhc3VyZWQgaW4gcmFkaWFucy4gIEFsc28sIGFuIG9wdGlvbmFsICpiYXNlKiBhcmd1bWVudAogICB3YXMgYWRkZWQgdG8gOmZ1bmM6YG1hdGgubG9nYCB0byBtYWtlIGl0IGVhc2llciB0byBjb21wdXRlIGxvZ2FyaXRobXMgZm9yIGJhc2VzCkBAIC0xNDA1LDcgKzE0MDUsNyBAQAogICBhbmQgdGhlcmVmb3JlIGZhc3RlciBwZXJmb3JtYW5jZS4gIFNldHRpbmcgdGhlIHBhcnNlciBvYmplY3QncwogICA6YXR0cjpgYnVmZmVyX3RleHRgIGF0dHJpYnV0ZSB0byA6Y29uc3Q6YFRydWVgIHdpbGwgZW5hYmxlIGJ1ZmZlcmluZy4KIAotKiBUaGUgOmZ1bmM6YHNhbXBsZShwb3B1bGF0aW9uLCBrKWAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmByYW5kb21gCisqIFRoZSBgYHNhbXBsZShwb3B1bGF0aW9uLCBrKWBgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgcmFuZG9tYAogICBtb2R1bGUuICAqcG9wdWxhdGlvbiogaXMgYSBzZXF1ZW5jZSBvciA6Y2xhc3M6YHhyYW5nZWAgb2JqZWN0IGNvbnRhaW5pbmcgdGhlCiAgIGVsZW1lbnRzIG9mIGEgcG9wdWxhdGlvbiwgYW5kIDpmdW5jOmBzYW1wbGVgIGNob29zZXMgKmsqIGVsZW1lbnRzIGZyb20gdGhlCiAgIHBvcHVsYXRpb24gd2l0aG91dCByZXBsYWNpbmcgY2hvc2VuIGVsZW1lbnRzLiAgKmsqIGNhbiBiZSBhbnkgdmFsdWUgdXAgdG8KQEAgLTE0NTEsNyArMTQ1MSw3IEBACiAgIGVuY3J5cHRpb24gaXMgbm90IGJlbGlldmVkIHRvIGJlIHNlY3VyZS4gIElmIHlvdSBuZWVkIGVuY3J5cHRpb24sIHVzZSBvbmUgb2YgdGhlCiAgIHNldmVyYWwgQUVTIFB5dGhvbiBtb2R1bGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBzZXBhcmF0ZWx5LgogCi0qIFRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZSBnYWluZWQgYSA6ZnVuYzpgbW92ZShzcmMsIGRlc3QpYCBmdW5jdGlvbiB0aGF0CisqIFRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZSBnYWluZWQgYSBgYG1vdmUoc3JjLCBkZXN0KWBgIGZ1bmN0aW9uIHRoYXQKICAgcmVjdXJzaXZlbHkgbW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhIG5ldyBsb2NhdGlvbi4KIAogKiBTdXBwb3J0IGZvciBtb3JlIGFkdmFuY2VkIFBPU0lYIHNpZ25hbCBoYW5kbGluZyB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHNpZ25hbGAKQEAgLTE0NTksNyArMTQ1OSw3IEBACiAgIHBsYXRmb3Jtcy4KIAogKiBUaGUgOm1vZDpgc29ja2V0YCBtb2R1bGUgbm93IHN1cHBvcnRzIHRpbWVvdXRzLiAgWW91IGNhbiBjYWxsIHRoZQotICA6bWV0aDpgc2V0dGltZW91dCh0KWAgbWV0aG9kIG9uIGEgc29ja2V0IG9iamVjdCB0byBzZXQgYSB0aW1lb3V0IG9mICp0KiBzZWNvbmRzLgorICBgYHNldHRpbWVvdXQodClgYCBtZXRob2Qgb24gYSBzb2NrZXQgb2JqZWN0IHRvIHNldCBhIHRpbWVvdXQgb2YgKnQqIHNlY29uZHMuCiAgIFN1YnNlcXVlbnQgc29ja2V0IG9wZXJhdGlvbnMgdGhhdCB0YWtlIGxvbmdlciB0aGFuICp0KiBzZWNvbmRzIHRvIGNvbXBsZXRlIHdpbGwKICAgYWJvcnQgYW5kIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIGV4Y2VwdGlvbi4KIApAQCAtMTQ4MCw5ICsxNDgwLDkgQEAKICAgOnByb2dyYW06YHRhcmBcIC1mb3JtYXQgYXJjaGl2ZSBmaWxlcy4gKENvbnRyaWJ1dGVkIGJ5IExhcnMgR3VzdMOkYmVsLikKIAogKiBUaGUgbmV3IDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciB3cmFwcGluZyBzdHJpbmdzCi0gIGNvbnRhaW5pbmcgcGFyYWdyYXBocyBvZiB0ZXh0LiAgVGhlIDpmdW5jOmB3cmFwKHRleHQsIHdpZHRoKWAgZnVuY3Rpb24gdGFrZXMgYQorICBjb250YWluaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4gIFRoZSBgYHdyYXAodGV4dCwgd2lkdGgpYGAgZnVuY3Rpb24gdGFrZXMgYQogICBzdHJpbmcgYW5kIHJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIHRleHQgc3BsaXQgaW50byBsaW5lcyBvZiBubyBtb3JlIHRoYW4KLSAgdGhlIGNob3NlbiB3aWR0aC4gIFRoZSA6ZnVuYzpgZmlsbCh0ZXh0LCB3aWR0aClgIGZ1bmN0aW9uIHJldHVybnMgYSBzaW5nbGUKKyAgdGhlIGNob3NlbiB3aWR0aC4gIFRoZSBgYGZpbGwodGV4dCwgd2lkdGgpYGAgZnVuY3Rpb24gcmV0dXJucyBhIHNpbmdsZQogICBzdHJpbmcsIHJlZm9ybWF0dGVkIHRvIGZpdCBpbnRvIGxpbmVzIG5vIGxvbmdlciB0aGFuIHRoZSBjaG9zZW4gd2lkdGguIChBcyB5b3UKICAgY2FuIGd1ZXNzLCA6ZnVuYzpgZmlsbGAgaXMgYnVpbHQgb24gdG9wIG9mIDpmdW5jOmB3cmFwYC4gIEZvciBleGFtcGxlOjoKIApAQCAtMTkwMyw3ICsxOTAzLDcgQEAKICAgc2hvcnQgaW50YCwgIGBgSWBgIGZvciA6Yzp0eXBlOmB1bnNpZ25lZCBpbnRgLCAgYW5kIGBgS2BgIGZvciA6Yzp0eXBlOmB1bnNpZ25lZAogICBsb25nIGxvbmdgLgogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeU9iamVjdF9EZWxJdGVtU3RyaW5nKG1hcHBpbmcsIGNoYXIgXCprZXkpYCB3YXMgYWRkZWQKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlPYmplY3RfRGVsSXRlbVN0cmluZyhtYXBwaW5nLCBjaGFyICprZXkpYGAgd2FzIGFkZGVkCiAgIGFzIHNob3J0aGFuZCBmb3IgYGBQeU9iamVjdF9EZWxJdGVtKG1hcHBpbmcsIFB5U3RyaW5nX05ldyhrZXkpKWBgLgogCiAqIEZpbGUgb2JqZWN0cyBub3cgbWFuYWdlIHRoZWlyIGludGVybmFsIHN0cmluZyBidWZmZXIgZGlmZmVyZW50bHksIGluY3JlYXNpbmcKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjQucnN0IGIvRG9jL3doYXRzbmV3LzIuNC5yc3QKaW5kZXggOWQzMzlhNS4uNWEyOGY4OSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuNC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuNC5yc3QKQEAgLTM3LDcgKzM3LDcgQEAKIAogUHl0aG9uIDIuMyBpbnRyb2R1Y2VkIHRoZSA6bW9kOmBzZXRzYCBtb2R1bGUuICBDIGltcGxlbWVudGF0aW9ucyBvZiBzZXQgZGF0YQogdHlwZXMgaGF2ZSBub3cgYmVlbiBhZGRlZCB0byB0aGUgUHl0aG9uIGNvcmUgYXMgdHdvIG5ldyBidWlsdC1pbiB0eXBlcywKLTpmdW5jOmBzZXQoaXRlcmFibGUpYCBhbmQgOmZ1bmM6YGZyb3plbnNldChpdGVyYWJsZSlgLiAgVGhleSBwcm92aWRlIGhpZ2ggc3BlZWQKK2Bgc2V0KGl0ZXJhYmxlKWBgIGFuZCBgYGZyb3plbnNldChpdGVyYWJsZSlgYC4gIFRoZXkgcHJvdmlkZSBoaWdoIHNwZWVkCiBvcGVyYXRpb25zIGZvciBtZW1iZXJzaGlwIHRlc3RpbmcsIGZvciBlbGltaW5hdGluZyBkdXBsaWNhdGVzIGZyb20gc2VxdWVuY2VzLAogYW5kIGZvciBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBsaWtlIHVuaW9ucywgaW50ZXJzZWN0aW9ucywgZGlmZmVyZW5jZXMsIGFuZAogc3ltbWV0cmljIGRpZmZlcmVuY2VzLiA6OgpAQCAtMzQ2LDcgKzM0Niw3IEBACiBQRVAgMzIyOiBSZXZlcnNlIEl0ZXJhdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmByZXZlcnNlZChzZXEpYCwgdGFrZXMgYSBzZXF1ZW5jZSBhbmQgcmV0dXJucyBhbgorQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgcmV2ZXJzZWQoc2VxKWBgLCB0YWtlcyBhIHNlcXVlbmNlIGFuZCByZXR1cm5zIGFuCiBpdGVyYXRvciB0aGF0IGxvb3BzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXF1ZW5jZSAgaW4gcmV2ZXJzZSBvcmRlci4gICA6OgogCiAgICA+Pj4gZm9yIGkgaW4gcmV2ZXJzZWQoeHJhbmdlKDEsNCkpOgpAQCAtMzg0LDcgKzM4NCw3IEBACiAKIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IHByb3ZpZGVzIGEgbnVtYmVyIG9mIHdheXMgdG8gZXhlY3V0ZSBhIHN1YnByb2Nlc3MsIG9mZmVyaW5nCiBkaWZmZXJlbnQgZmVhdHVyZXMgYW5kIGRpZmZlcmVudCBsZXZlbHMgb2YgY29tcGxleGl0eS4KLTpmdW5jOmBvcy5zeXN0ZW0oY29tbWFuZClgIGlzIGVhc3kgdG8gdXNlLCBidXQgc2xvdyAoaXQgcnVucyBhIHNoZWxsIHByb2Nlc3MKK2Bgb3Muc3lzdGVtKGNvbW1hbmQpYGAgaXMgZWFzeSB0byB1c2UsIGJ1dCBzbG93IChpdCBydW5zIGEgc2hlbGwgcHJvY2Vzcwogd2hpY2ggZXhlY3V0ZXMgdGhlIGNvbW1hbmQpIGFuZCBkYW5nZXJvdXMgKHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgZXNjYXBpbmcKIHRoZSBzaGVsbCdzIG1ldGFjaGFyYWN0ZXJzKS4gIFRoZSA6bW9kOmBwb3BlbjJgIG1vZHVsZSBvZmZlcnMgY2xhc3NlcyB0aGF0IGNhbgogY2FwdHVyZSBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZyb20gdGhlIHN1YnByb2Nlc3MsIGJ1dCB0aGUgbmFtaW5nCkBAIC00MzEsOCArNDMxLDggQEAKIAogT25jZSB5b3UndmUgY3JlYXRlZCB0aGUgOmNsYXNzOmBQb3BlbmAgaW5zdGFuY2UsICB5b3UgY2FuIGNhbGwgaXRzIDptZXRoOmB3YWl0YAogbWV0aG9kIHRvIHBhdXNlIHVudGlsIHRoZSBzdWJwcm9jZXNzIGhhcyBleGl0ZWQsIDptZXRoOmBwb2xsYCB0byBjaGVjayBpZiBpdCdzCi1leGl0ZWQgd2l0aG91dCBwYXVzaW5nLCAgb3IgOm1ldGg6YGNvbW11bmljYXRlKGRhdGEpYCB0byBzZW5kIHRoZSBzdHJpbmcgKmRhdGEqCi10byB0aGUgc3VicHJvY2VzcydzIHN0YW5kYXJkIGlucHV0LiAgIDptZXRoOmBjb21tdW5pY2F0ZShkYXRhKWAgIHRoZW4gcmVhZHMgYW55CitleGl0ZWQgd2l0aG91dCBwYXVzaW5nLCAgb3IgYGBjb21tdW5pY2F0ZShkYXRhKWBgIHRvIHNlbmQgdGhlIHN0cmluZyAqZGF0YSoKK3RvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RhbmRhcmQgaW5wdXQuICAgYGBjb21tdW5pY2F0ZShkYXRhKWBgICB0aGVuIHJlYWRzIGFueQogZGF0YSB0aGF0IHRoZSBzdWJwcm9jZXNzIGhhcyBzZW50IHRvIGl0cyBzdGFuZGFyZCBvdXRwdXQgIG9yIHN0YW5kYXJkIGVycm9yLAogcmV0dXJuaW5nIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgogCkBAIC03NDksMTAgKzc0OSwxMCBAQAogVGhlIHNvbHV0aW9uIGRlc2NyaWJlZCBpbiB0aGUgUEVQIGlzIHRvIGFkZCB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIHRoZSBQeXRob24KIEFQSSB0aGF0IHBlcmZvcm0gQVNDSUktb25seSBjb252ZXJzaW9ucywgaWdub3JpbmcgdGhlIGxvY2FsZSBzZXR0aW5nOgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWAgIGFuZCA6YzpmdW5jOmBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYAorKiBgYFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWBgICBhbmQgYGBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYGAKICAgYm90aCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgQyA6Yzp0eXBlOmBkb3VibGVgLgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfZm9ybWF0ZChidWZmZXIsIGJ1Zl9sZW4sIGZvcm1hdCwgZClgIGNvbnZlcnRzIGEKKyogYGBQeU9TX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCBidWZfbGVuLCBmb3JtYXQsIGQpYGAgY29udmVydHMgYQogICA6Yzp0eXBlOmBkb3VibGVgIHRvIGFuIEFTQ0lJIHN0cmluZy4KIAogVGhlIGNvZGUgZm9yIHRoZXNlIGZ1bmN0aW9ucyBjYW1lIGZyb20gdGhlIEdMaWIgbGlicmFyeQpAQCAtNzc4LDcgKzc3OCw3IEBACiAqIERlY29yYXRvcnMgZm9yIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB3ZXJlIGFkZGVkICg6cGVwOmAzMThgKS4KIAogKiBCdWlsdC1pbiA6ZnVuYzpgc2V0YCBhbmQgOmZ1bmM6YGZyb3plbnNldGAgdHlwZXMgd2VyZSAgYWRkZWQgKDpwZXA6YDIxOGApLgotICBPdGhlciBuZXcgYnVpbHQtaW5zIGluY2x1ZGUgdGhlIDpmdW5jOmByZXZlcnNlZChzZXEpYCBmdW5jdGlvbiAoOnBlcDpgMzIyYCkuCisgIE90aGVyIG5ldyBidWlsdC1pbnMgaW5jbHVkZSB0aGUgYGByZXZlcnNlZChzZXEpYGAgZnVuY3Rpb24gKDpwZXA6YDMyMmApLgogCiAqIEdlbmVyYXRvciBleHByZXNzaW9ucyB3ZXJlIGFkZGVkICg6cGVwOmAyODlgKS4KIApAQCAtODU3LDcgKzg1Nyw3IEBACiAKICAgKEFsbCBjaGFuZ2VzIHRvIDptZXRoOmBzb3J0YCBjb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKLSogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YHNvcnRlZChpdGVyYWJsZSlgIHRoYXQgd29ya3MgbGlrZSB0aGUKKyogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gYGBzb3J0ZWQoaXRlcmFibGUpYGAgdGhhdCB3b3JrcyBsaWtlIHRoZQogICBpbi1wbGFjZSA6bWV0aDpgbGlzdC5zb3J0YCBtZXRob2QgYnV0IGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zLiAgVGhlCiAgIGRpZmZlcmVuY2VzIGFyZToKIApAQCAtODk4LDggKzg5OCw4IEBACiAgIEZvciBleGFtcGxlLCAgeW91IGNhbiBub3cgcnVuIHRoZSBQeXRob24gcHJvZmlsZXIgd2l0aCBgYHB5dGhvbiAtbSBwcm9maWxlYGAuCiAgIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4uKQogCi0qIFRoZSA6ZnVuYzpgZXZhbChleHByLCBnbG9iYWxzLCBsb2NhbHMpYCBhbmQgOmZ1bmM6YGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAotICBsb2NhbHMpYCBmdW5jdGlvbnMgYW5kIHRoZSBgYGV4ZWNgYCBzdGF0ZW1lbnQgbm93IGFjY2VwdCBhbnkgbWFwcGluZyB0eXBlCisqIFRoZSBgYGV2YWwoZXhwciwgZ2xvYmFscywgbG9jYWxzKWBgIGFuZCBgYGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAorICBsb2NhbHMpYGAgZnVuY3Rpb25zIGFuZCB0aGUgYGBleGVjYGAgc3RhdGVtZW50IG5vdyBhY2NlcHQgYW55IG1hcHBpbmcgdHlwZQogICBmb3IgdGhlICpsb2NhbHMqIHBhcmFtZXRlci4gIFByZXZpb3VzbHkgdGhpcyBoYWQgdG8gYmUgYSByZWd1bGFyIFB5dGhvbgogICBkaWN0aW9uYXJ5LiAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApAQCAtMTA5MCw3ICsxMDkwLDcgQEAKICAgWXZlcyBEaW9ubmUpIGFuZCBuZXcgOm1ldGg6YGRlbGV0ZWFjbGAgYW5kIDptZXRoOmBteXJpZ2h0c2AgbWV0aG9kcyAoY29udHJpYnV0ZWQKICAgYnkgQXJuYXVkIE1hemluKS4KIAotKiBUaGUgOm1vZDpgaXRlcnRvb2xzYCBtb2R1bGUgZ2FpbmVkIGEgOmZ1bmM6YGdyb3VwYnkoaXRlcmFibGVbLCAqZnVuYypdKWAKKyogVGhlIDptb2Q6YGl0ZXJ0b29sc2AgbW9kdWxlIGdhaW5lZCBhIGBgZ3JvdXBieShpdGVyYWJsZVssICpmdW5jKl0pYGAKICAgZnVuY3Rpb24uICppdGVyYWJsZSogaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8gcmV0dXJuIGEgc3RyZWFtCiAgIG9mIGVsZW1lbnRzLCBhbmQgdGhlIG9wdGlvbmFsICpmdW5jKiBwYXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuCiAgIGVsZW1lbnQgYW5kIHJldHVybnMgYSBrZXkgdmFsdWU7IGlmIG9taXR0ZWQsIHRoZSBrZXkgaXMgc2ltcGx5IHRoZSBlbGVtZW50CkBAIC0xMTM5LDcgKzExMzksNyBAQAogCiAgIChDb250cmlidXRlZCBieSBIeWUtU2hpayBDaGFuZy4pCiAKLSogOm1vZDpgaXRlcnRvb2xzYCBhbHNvIGdhaW5lZCBhIGZ1bmN0aW9uIG5hbWVkIDpmdW5jOmB0ZWUoaXRlcmF0b3IsIE4pYCB0aGF0CisqIDptb2Q6YGl0ZXJ0b29sc2AgYWxzbyBnYWluZWQgYSBmdW5jdGlvbiBuYW1lZCBgYHRlZShpdGVyYXRvciwgTilgYCB0aGF0CiAgIHJldHVybnMgKk4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyB0aGF0IHJlcGxpY2F0ZSAqaXRlcmF0b3IqLiAgSWYgKk4qIGlzIG9taXR0ZWQsCiAgIHRoZSBkZWZhdWx0IGlzIDIuIDo6CiAKQEAgLTExNzcsNyArMTE3Nyw3IEBACiAgICAgICAgICBsZXZlbD0wLCAgIyBMb2cgYWxsIG1lc3NhZ2VzCiAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKTolKHByb2Nlc3MpOiUodGhyZWFkKTolKG1lc3NhZ2UpJykKIAotICBPdGhlciBhZGRpdGlvbnMgdG8gdGhlIDptb2Q6YGxvZ2dpbmdgIHBhY2thZ2UgaW5jbHVkZSBhIDptZXRoOmBsb2cobGV2ZWwsIG1zZylgCisgIE90aGVyIGFkZGl0aW9ucyB0byB0aGUgOm1vZDpgbG9nZ2luZ2AgcGFja2FnZSBpbmNsdWRlIGEgYGBsb2cobGV2ZWwsIG1zZylgYAogICBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHdlbGwgYXMgYSA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAgY2xhc3MgdGhhdAogICByb3RhdGVzIGl0cyBsb2cgZmlsZXMgYXQgYSB0aW1lZCBpbnRlcnZhbC4gIFRoZSBtb2R1bGUgYWxyZWFkeSBoYWQKICAgOmNsYXNzOmBSb3RhdGluZ0ZpbGVIYW5kbGVyYCwgd2hpY2ggcm90YXRlZCBsb2dzIG9uY2UgdGhlIGZpbGUgZXhjZWVkZWQgYQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAKICAgZ3JvdXAgb3IgZm9yIGEgcmFuZ2Ugb2YgZ3JvdXBzLiAoQ29udHJpYnV0ZWQgYnkgSsO8cmdlbiBBLiBFcmhhcmQuKQogCiAqIFR3byBuZXcgZnVuY3Rpb25zIHdlcmUgYWRkZWQgdG8gdGhlIDptb2Q6YG9wZXJhdG9yYCBtb2R1bGUsCi0gIDpmdW5jOmBhdHRyZ2V0dGVyKGF0dHIpYCBhbmQgOmZ1bmM6YGl0ZW1nZXR0ZXIoaW5kZXgpYC4gQm90aCBmdW5jdGlvbnMgcmV0dXJuCisgIGBgYXR0cmdldHRlcihhdHRyKWBgIGFuZCBgYGl0ZW1nZXR0ZXIoaW5kZXgpYGAuIEJvdGggZnVuY3Rpb25zIHJldHVybgogICBjYWxsYWJsZXMgdGhhdCB0YWtlIGEgc2luZ2xlIGFyZ3VtZW50IGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9yCiAgIGl0ZW07IHRoZXNlIGNhbGxhYmxlcyBtYWtlIGV4Y2VsbGVudCBkYXRhIGV4dHJhY3RvcnMgd2hlbiB1c2VkIHdpdGggOmZ1bmM6YG1hcGAKICAgb3IgOmZ1bmM6YHNvcnRlZGAuICBGb3IgZXhhbXBsZTo6CkBAIC0xMjIzLDE0ICsxMjIzLDE0IEBACiAgIHJlcGxhY2VtZW50IGZvciA6ZnVuYzpgcmZjODIyLmZvcm1hdGRhdGVgLiAgWW91IG1heSB3YW50IHRvIHdyaXRlIG5ldyBlLW1haWwKICAgcHJvY2Vzc2luZyBjb2RlIHdpdGggdGhpcyBpbiBtaW5kLiAgKENoYW5nZSBpbXBsZW1lbnRlZCBieSBBbnRob255IEJheHRlci4pCiAKLSogQSBuZXcgOmZ1bmM6YHVyYW5kb20obilgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgb3NgIG1vZHVsZSwgcmV0dXJuaW5nCisqIEEgbmV3IGBgdXJhbmRvbShuKWBgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgb3NgIG1vZHVsZSwgcmV0dXJuaW5nCiAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgKm4qIGJ5dGVzIG9mIHJhbmRvbSBkYXRhLiAgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8KICAgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlcyBvZiByYW5kb21uZXNzIHN1Y2ggYXMgOmZpbGU6YC9kZXYvdXJhbmRvbWAgb24gTGludXggb3IKICAgdGhlIFdpbmRvd3MgQ3J5cHRvQVBJLiAgKENvbnRyaWJ1dGVkIGJ5IFRyZXZvciBQZXJyaW4uKQogCi0qIEFub3RoZXIgbmV3IGZ1bmN0aW9uOiA6ZnVuYzpgb3MucGF0aC5sZXhpc3RzKHBhdGgpYCAgcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlCisqIEFub3RoZXIgbmV3IGZ1bmN0aW9uOiBgYG9zLnBhdGgubGV4aXN0cyhwYXRoKWBgICByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUKICAgc3BlY2lmaWVkIGJ5ICpwYXRoKiBleGlzdHMsIHdoZXRoZXIgb3Igbm90IGl0J3MgYSBzeW1ib2xpYyBsaW5rLiAgVGhpcyBkaWZmZXJzCi0gIGZyb20gdGhlIGV4aXN0aW5nIDpmdW5jOmBvcy5wYXRoLmV4aXN0cyhwYXRoKWAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgZmFsc2UgaWYKKyAgZnJvbSB0aGUgZXhpc3RpbmcgYGBvcy5wYXRoLmV4aXN0cyhwYXRoKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGZhbHNlIGlmCiAgICpwYXRoKiBpcyBhIHN5bWxpbmsgdGhhdCBwb2ludHMgdG8gYSBkZXN0aW5hdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QuCiAgIChDb250cmlidXRlZCBieSBCZW5pIENoZXJuaWF2c2t5LikKIApAQCAtMTI0Myw3ICsxMjQzLDcgQEAKICogVGhlIDptb2Q6YHByb2ZpbGVgIG1vZHVsZSBjYW4gbm93IHByb2ZpbGUgQyBleHRlbnNpb24gZnVuY3Rpb25zLiAoQ29udHJpYnV0ZWQKICAgYnkgTmljayBCYXN0aW4uKQogCi0qIFRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBoYXMgYSBuZXcgbWV0aG9kIGNhbGxlZCA6bWV0aDpgZ2V0cmFuZGJpdHMoTilgIHRoYXQKKyogVGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlIGhhcyBhIG5ldyBtZXRob2QgY2FsbGVkIGBgZ2V0cmFuZGJpdHMoTilgYCB0aGF0CiAgIHJldHVybnMgYSBsb25nIGludGVnZXIgKk4qIGJpdHMgaW4gbGVuZ3RoLiAgVGhlIGV4aXN0aW5nIDptZXRoOmByYW5kcmFuZ2VgCiAgIG1ldGhvZCBub3cgdXNlcyA6bWV0aDpgZ2V0cmFuZGJpdHNgIHdoZXJlIGFwcHJvcHJpYXRlLCBtYWtpbmcgZ2VuZXJhdGlvbiBvZgogICBhcmJpdHJhcmlseSBsYXJnZSByYW5kb20gbnVtYmVycyBtb3JlIGVmZmljaWVudC4gIChDb250cmlidXRlZCBieSBSYXltb25kCkBAIC0xMjcyLDcgKzEyNzIsNyBAQAogICB0aGlzLCBidXQgMi40IHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGV4Y2VwdGlvbi4KIAogKiBUd28gbmV3IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZS4gOmZ1bmM6YHNvY2tldHBhaXJgCi0gIHJldHVybnMgYSBwYWlyIG9mIGNvbm5lY3RlZCBzb2NrZXRzIGFuZCA6ZnVuYzpgZ2V0c2VydmJ5cG9ydChwb3J0KWAgbG9va3MgdXAgdGhlCisgIHJldHVybnMgYSBwYWlyIG9mIGNvbm5lY3RlZCBzb2NrZXRzIGFuZCBgYGdldHNlcnZieXBvcnQocG9ydClgYCBsb29rcyB1cCB0aGUKICAgc2VydmljZSBuYW1lIGZvciBhIGdpdmVuIHBvcnQgbnVtYmVyLiAoQ29udHJpYnV0ZWQgYnkgRGF2ZSBDb2xlIGFuZCBCYXJyeQogICBXYXJzYXcuKQogCkBAIC0xNDU0LDExICsxNDU0LDExIEBACiAqIEFub3RoZXIgbmV3IG1hY3JvLCA6YzptYWNybzpgUHlfQ0xFQVIob2JqKWAsICBkZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZgogICAqb2JqKiBhbmQgc2V0cyAqb2JqKiB0byB0aGUgbnVsbCBwb2ludGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEppbSBGdWx0b24uKQogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeVR1cGxlX1BhY2soTiwgb2JqMSwgb2JqMiwgLi4uLCBvYmpOKWAsIGNvbnN0cnVjdHMKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlUdXBsZV9QYWNrKE4sIG9iajEsIG9iajIsIC4uLiwgb2JqTilgYCwgY29uc3RydWN0cwogICB0dXBsZXMgZnJvbSBhIHZhcmlhYmxlIGxlbmd0aCBhcmd1bWVudCBsaXN0IG9mIFB5dGhvbiBvYmplY3RzLiAgKENvbnRyaWJ1dGVkIGJ5CiAgIFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlEaWN0X0NvbnRhaW5zKGQsIGspYCwgaW1wbGVtZW50cyBmYXN0IGRpY3Rpb25hcnkKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlEaWN0X0NvbnRhaW5zKGQsIGspYGAsIGltcGxlbWVudHMgZmFzdCBkaWN0aW9uYXJ5CiAgIGxvb2t1cHMgd2l0aG91dCBtYXNraW5nIGV4Y2VwdGlvbnMgcmFpc2VkIGR1cmluZyB0aGUgbG9vay11cCBwcm9jZXNzLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi41LnJzdCBiL0RvYy93aGF0c25ldy8yLjUucnN0CmluZGV4IGUwNTljZDUuLmI5MWU2NDcgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjUucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjUucnN0CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgICAgcG9wdXBfbWVudS5hcHBlbmQoICgiT3BlbiIsIG9wZW5fZnVuYywgMSkgKQogCiBBbm90aGVyIGZ1bmN0aW9uIGluIHRoZSA6bW9kOmBmdW5jdG9vbHNgIG1vZHVsZSBpcyB0aGUKLTpmdW5jOmB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB3cmFwcGVkKWAgZnVuY3Rpb24gdGhhdCBoZWxwcyB5b3Ugd3JpdGUgd2VsbC0KK2BgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgd3JhcHBlZClgYCBmdW5jdGlvbiB0aGF0IGhlbHBzIHlvdSB3cml0ZSB3ZWxsLQogYmVoYXZlZCBkZWNvcmF0b3JzLiAgOmZ1bmM6YHVwZGF0ZV93cmFwcGVyYCBjb3BpZXMgdGhlIG5hbWUsIG1vZHVsZSwgYW5kCiBkb2NzdHJpbmcgYXR0cmlidXRlIHRvIGEgd3JhcHBlciBmdW5jdGlvbiBzbyB0aGF0IHRyYWNlYmFja3MgaW5zaWRlIHRoZSB3cmFwcGVkCiBmdW5jdGlvbiBhcmUgZWFzaWVyIHRvIHVuZGVyc3RhbmQuICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdyaXRlOjoKQEAgLTQ1NCw3ICs0NTQsNyBAQAogYGB2YWwgPSB5aWVsZCBpYGAgYnV0IGhhdmUgdG8gdXNlIHBhcmVudGhlc2VzIHdoZW4gdGhlcmUncyBhbiBvcGVyYXRpb24sIGFzIGluCiBgYHZhbCA9ICh5aWVsZCBpKSArIDEyYGAuKQogCi1WYWx1ZXMgYXJlIHNlbnQgaW50byBhIGdlbmVyYXRvciBieSBjYWxsaW5nIGl0cyA6bWV0aDpgc2VuZCh2YWx1ZSlgIG1ldGhvZC4gIFRoZQorVmFsdWVzIGFyZSBzZW50IGludG8gYSBnZW5lcmF0b3IgYnkgY2FsbGluZyBpdHMgYGBzZW5kKHZhbHVlKWBgIG1ldGhvZC4gIFRoZQogZ2VuZXJhdG9yJ3MgY29kZSBpcyB0aGVuIHJlc3VtZWQgYW5kIHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gcmV0dXJucyB0aGUKIHNwZWNpZmllZCAqdmFsdWUqLiAgSWYgdGhlIHJlZ3VsYXIgOm1ldGg6YG5leHRgIG1ldGhvZCBpcyBjYWxsZWQsIHRoZQogOmtleXdvcmQ6YHlpZWxkYCByZXR1cm5zIDpjb25zdDpgTm9uZWAuCkBAIC00OTYsNyArNDk2LDcgQEAKIAogSW4gYWRkaXRpb24gdG8gOm1ldGg6YHNlbmRgLCB0aGVyZSBhcmUgdHdvIG90aGVyIG5ldyBtZXRob2RzIG9uIGdlbmVyYXRvcnM6CiAKLSogOm1ldGg6YHRocm93KHR5cGUsIHZhbHVlPU5vbmUsIHRyYWNlYmFjaz1Ob25lKWAgaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KKyogYGB0aHJvdyh0eXBlLCB2YWx1ZT1Ob25lLCB0cmFjZWJhY2s9Tm9uZSlgYCBpcyB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbgogICBpbnNpZGUgdGhlIGdlbmVyYXRvcjsgdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgdGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbgogICB3aGVyZSB0aGUgZ2VuZXJhdG9yJ3MgZXhlY3V0aW9uIGlzIHBhdXNlZC4KIApAQCAtNjYwLDcgKzY2MCw3IEBACiAKICogVGhlIGNvZGUgaW4gKkJMT0NLKiBpcyBleGVjdXRlZC4KIAotKiBJZiAqQkxPQ0sqIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSA6bWV0aDpgX19leGl0X18odHlwZSwgdmFsdWUsIHRyYWNlYmFjaylgCisqIElmICpCTE9DSyogcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGBgX19leGl0X18odHlwZSwgdmFsdWUsIHRyYWNlYmFjaylgYAogICBpcyBjYWxsZWQgd2l0aCB0aGUgZXhjZXB0aW9uIGRldGFpbHMsIHRoZSBzYW1lIHZhbHVlcyByZXR1cm5lZCBieQogICA6ZnVuYzpgc3lzLmV4Y19pbmZvYC4gIFRoZSBtZXRob2QncyByZXR1cm4gdmFsdWUgY29udHJvbHMgd2hldGhlciB0aGUgZXhjZXB0aW9uCiAgIGlzIHJlLXJhaXNlZDogYW55IGZhbHNlIHZhbHVlIHJlLXJhaXNlcyB0aGUgZXhjZXB0aW9uLCBhbmQgYGBUcnVlYGAgd2lsbCByZXN1bHQKQEAgLTc3Myw3ICs3NzMsNyBAQAogICAgd2l0aCBkYl90cmFuc2FjdGlvbihkYikgYXMgY3Vyc29yOgogICAgICAgIC4uLgogCi1UaGUgOm1vZDpgY29udGV4dGxpYmAgbW9kdWxlIGFsc28gaGFzIGEgOmZ1bmM6YG5lc3RlZChtZ3IxLCBtZ3IyLCAuLi4pYCBmdW5jdGlvbgorVGhlIDptb2Q6YGNvbnRleHRsaWJgIG1vZHVsZSBhbHNvIGhhcyBhIGBgbmVzdGVkKG1ncjEsIG1ncjIsIC4uLilgYCBmdW5jdGlvbgogdGhhdCBjb21iaW5lcyBhIG51bWJlciBvZiBjb250ZXh0IG1hbmFnZXJzIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdyaXRlIG5lc3RlZAogJzprZXl3b3JkOmB3aXRoYCcgc3RhdGVtZW50cy4gIEluIHRoaXMgZXhhbXBsZSwgdGhlIHNpbmdsZSAnOmtleXdvcmQ6YHdpdGhgJwogc3RhdGVtZW50IGJvdGggc3RhcnRzIGEgZGF0YWJhc2UgdHJhbnNhY3Rpb24gYW5kIGFjcXVpcmVzIGEgdGhyZWFkIGxvY2s6OgpAQCAtNzgyLDcgKzc4Miw3IEBACiAgICB3aXRoIG5lc3RlZCAoZGJfdHJhbnNhY3Rpb24oZGIpLCBsb2NrKSBhcyAoY3Vyc29yLCBsb2NrZWQpOgogICAgICAgIC4uLgogCi1GaW5hbGx5LCB0aGUgOmZ1bmM6YGNsb3Npbmcob2JqZWN0KWAgZnVuY3Rpb24gcmV0dXJucyAqb2JqZWN0KiBzbyB0aGF0IGl0IGNhbiBiZQorRmluYWxseSwgdGhlIGBgY2xvc2luZyhvYmplY3QpYGAgZnVuY3Rpb24gcmV0dXJucyAqb2JqZWN0KiBzbyB0aGF0IGl0IGNhbiBiZQogYm91bmQgdG8gYSB2YXJpYWJsZSwgYW5kIGNhbGxzIGBgb2JqZWN0LmNsb3NlYGAgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2suIDo6CiAKICAgIGltcG9ydCB1cmxsaWIsIHN5cwpAQCAtOTU1LDcgKzk1NSw3IEBACiAKIEEgY29ycmVzcG9uZGluZyA6YXR0cjpgbmJfaW5kZXhgIHNsb3Qgd2FzIGFkZGVkIHRvIHRoZSBDLWxldmVsCiA6Yzp0eXBlOmBQeU51bWJlck1ldGhvZHNgIHN0cnVjdHVyZSB0byBsZXQgQyBleHRlbnNpb25zIGltcGxlbWVudCB0aGlzIHByb3RvY29sLgotOmM6ZnVuYzpgUHlOdW1iZXJfSW5kZXgob2JqKWAgY2FuIGJlIHVzZWQgaW4gZXh0ZW5zaW9uIGNvZGUgdG8gY2FsbCB0aGUKK2BgUHlOdW1iZXJfSW5kZXgob2JqKWBgIGNhbiBiZSB1c2VkIGluIGV4dGVuc2lvbiBjb2RlIHRvIGNhbGwgdGhlCiA6bWV0aDpgX19pbmRleF9fYCBmdW5jdGlvbiBhbmQgcmV0cmlldmUgaXRzIHJlc3VsdC4KIAogCkBAIC05NzYsNyArOTc2LDcgQEAKIAogKiBUaGUgOmNsYXNzOmBkaWN0YCB0eXBlIGhhcyBhIG5ldyBob29rIGZvciBsZXR0aW5nIHN1YmNsYXNzZXMgcHJvdmlkZSBhIGRlZmF1bHQKICAgdmFsdWUgd2hlbiBhIGtleSBpc24ndCBjb250YWluZWQgaW4gdGhlIGRpY3Rpb25hcnkuIFdoZW4gYSBrZXkgaXNuJ3QgZm91bmQsIHRoZQotICBkaWN0aW9uYXJ5J3MgOm1ldGg6YF9fbWlzc2luZ19fKGtleSlgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4gIFRoaXMgaG9vayBpcyB1c2VkCisgIGRpY3Rpb25hcnkncyBgYF9fbWlzc2luZ19fKGtleSlgYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuICBUaGlzIGhvb2sgaXMgdXNlZAogICB0byBpbXBsZW1lbnQgdGhlIG5ldyA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBjbGFzcyBpbiB0aGUgOm1vZDpgY29sbGVjdGlvbnNgCiAgIG1vZHVsZS4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgZGljdGlvbmFyeSAgdGhhdCByZXR1cm5zIHplcm8gZm9yIGFueQogICBtaXNzaW5nIGtleTo6CkBAIC05ODksMTYgKzk4OSwxNiBAQAogICAgICBwcmludCBkWzFdLCBkWzJdICAgIyBQcmludHMgMSwgMgogICAgICBwcmludCBkWzNdLCBkWzRdICAgIyBQcmludHMgMCwgMAogCi0qIEJvdGggOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5ncyBoYXZlIG5ldyA6bWV0aDpgcGFydGl0aW9uKHNlcClgICBhbmQKLSAgOm1ldGg6YHJwYXJ0aXRpb24oc2VwKWAgbWV0aG9kcyB0aGF0IHNpbXBsaWZ5IGEgY29tbW9uIHVzZSBjYXNlLgorKiBCb3RoIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgaGF2ZSBuZXcgYGBwYXJ0aXRpb24oc2VwKWBgICBhbmQKKyAgYGBycGFydGl0aW9uKHNlcClgYCBtZXRob2RzIHRoYXQgc2ltcGxpZnkgYSBjb21tb24gdXNlIGNhc2UuCiAKLSAgVGhlIDptZXRoOmBmaW5kKFMpYCBtZXRob2QgaXMgb2Z0ZW4gdXNlZCB0byBnZXQgYW4gaW5kZXggd2hpY2ggaXMgdGhlbiB1c2VkIHRvCisgIFRoZSBgYGZpbmQoUylgYCBtZXRob2QgaXMgb2Z0ZW4gdXNlZCB0byBnZXQgYW4gaW5kZXggd2hpY2ggaXMgdGhlbiB1c2VkIHRvCiAgIHNsaWNlIHRoZSBzdHJpbmcgYW5kIG9idGFpbiB0aGUgcGllY2VzIHRoYXQgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgOm1ldGg6YHBhcnRpdGlvbihzZXApYCBjb25kZW5zZXMgdGhpcyBwYXR0ZXJuIGludG8gYSBzaW5nbGUgbWV0aG9kIGNhbGwgdGhhdAorICBgYHBhcnRpdGlvbihzZXApYGAgY29uZGVuc2VzIHRoaXMgcGF0dGVybiBpbnRvIGEgc2luZ2xlIG1ldGhvZCBjYWxsIHRoYXQKICAgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3Vic3RyaW5nIGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCiAgIGl0c2VsZiwgYW5kIHRoZSBzdWJzdHJpbmcgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXNuJ3QgZm91bmQsCiAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSB0dXBsZSBpcyB0aGUgZW50aXJlIHN0cmluZyBhbmQgdGhlIG90aGVyIHR3byBlbGVtZW50cwotICBhcmUgZW1wdHkuICA6bWV0aDpgcnBhcnRpdGlvbihzZXApYCBhbHNvIHJldHVybnMgYSAzLXR1cGxlIGJ1dCBzdGFydHMgc2VhcmNoaW5nCisgIGFyZSBlbXB0eS4gIGBgcnBhcnRpdGlvbihzZXApYGAgYWxzbyByZXR1cm5zIGEgMy10dXBsZSBidXQgc3RhcnRzIHNlYXJjaGluZwogICBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZzsgdGhlIGBgcmBgIHN0YW5kcyBmb3IgJ3JldmVyc2UnLgogCiAgIFNvbWUgZXhhbXBsZXM6OgpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAKIAogICAuLiBQYXRjaCAxMzEzOTM5LCAxMzU5NjE4CiAKLSogVGhlIDpmdW5jOmBsb25nKHN0ciwgYmFzZSlgIGZ1bmN0aW9uIGlzIG5vdyBmYXN0ZXIgb24gbG9uZyBkaWdpdCBzdHJpbmdzCisqIFRoZSBgYGxvbmcoc3RyLCBiYXNlKWBgIGZ1bmN0aW9uIGlzIG5vdyBmYXN0ZXIgb24gbG9uZyBkaWdpdCBzdHJpbmdzCiAgIGJlY2F1c2UgZmV3ZXIgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYXJlIGNhbGN1bGF0ZWQuICBUaGUgcGVhayBpcyBmb3Igc3RyaW5ncyBvZgogICBhcm91bmQgODAwLS0xMDAwIGRpZ2l0cyB3aGVyZSAgdGhlIGZ1bmN0aW9uIGlzIDYgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkKICAgQWxhbiBNY0ludHlyZSBhbmQgY29tbWl0dGVkIGF0IHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50LikKQEAgLTEyNjgsNyArMTI2OCw3IEBACiAgIChDb250cmlidXRlZCBieSBHdWlkbyB2YW4gUm9zc3VtLikKIAogKiBUaGUgOmNsYXNzOmBkZXF1ZWAgZG91YmxlLWVuZGVkIHF1ZXVlIHR5cGUgc3VwcGxpZWQgYnkgdGhlIDptb2Q6YGNvbGxlY3Rpb25zYAotICBtb2R1bGUgbm93IGhhcyBhIDptZXRoOmByZW1vdmUodmFsdWUpYCBtZXRob2QgdGhhdCByZW1vdmVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlCisgIG1vZHVsZSBub3cgaGFzIGEgYGByZW1vdmUodmFsdWUpYGAgbWV0aG9kIHRoYXQgcmVtb3ZlcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQogICBvZiAqdmFsdWUqIGluIHRoZSBxdWV1ZSwgcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdmFsdWUgaXNuJ3QgZm91bmQuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKQEAgLTEyOTEsNyArMTI5MSw3IEBACiAqIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSwgd2hpY2ggcGFyc2VzIGZpbGVzIGluIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZSBmb3JtYXQsCiAgIHJlY2VpdmVkIHNldmVyYWwgZW5oYW5jZW1lbnRzIGFuZCBhIG51bWJlciBvZiBidWdmaXhlcy4gIFlvdSBjYW4gbm93IHNldCB0aGUKICAgbWF4aW11bSBzaXplIGluIGJ5dGVzIG9mIGEgZmllbGQgYnkgY2FsbGluZyB0aGUKLSAgOm1ldGg6YGNzdi5maWVsZF9zaXplX2xpbWl0KG5ld19saW1pdClgIGZ1bmN0aW9uOyBvbWl0dGluZyB0aGUgKm5ld19saW1pdCoKKyAgYGBjc3YuZmllbGRfc2l6ZV9saW1pdChuZXdfbGltaXQpYGAgZnVuY3Rpb247IG9taXR0aW5nIHRoZSAqbmV3X2xpbWl0KgogICBhcmd1bWVudCB3aWxsIHJldHVybiB0aGUgY3VycmVudGx5LXNldCBsaW1pdC4gIFRoZSA6Y2xhc3M6YHJlYWRlcmAgY2xhc3Mgbm93IGhhcwogICBhIDphdHRyOmBsaW5lX251bWAgYXR0cmlidXRlIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgbGluZXMgcmVhZCBmcm9tCiAgIHRoZSBzb3VyY2U7IHJlY29yZHMgY2FuIHNwYW4gbXVsdGlwbGUgcGh5c2ljYWwgbGluZXMsIHNvIDphdHRyOmBsaW5lX251bWAgaXMgbm90CkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgU2tpcCBNb250YW5hcm8gYW5kIEFuZHJldyBNY05hbWFyYS4pCiAKICogVGhlIDpjbGFzczpgZGF0ZXRpbWVgIGNsYXNzIGluIHRoZSA6bW9kOmBkYXRldGltZWAgIG1vZHVsZSBub3cgaGFzIGEKLSAgOm1ldGg6YHN0cnB0aW1lKHN0cmluZywgZm9ybWF0KWAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCisgIGBgc3RycHRpbWUoc3RyaW5nLCBmb3JtYXQpYGAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCiAgIGJ5IEpvc2ggU3BvZXJyaS4gSXQgdXNlcyB0aGUgc2FtZSBmb3JtYXQgY2hhcmFjdGVycyBhcyA6ZnVuYzpgdGltZS5zdHJwdGltZWAgYW5kCiAgIDpmdW5jOmB0aW1lLnN0cmZ0aW1lYDo6CiAKQEAgLTE0MDMsNyArMTQwMyw3IEBACiAqIFRoZSA6bW9kOmBtYWlsYm94YCBtb2R1bGUgdW5kZXJ3ZW50IGEgbWFzc2l2ZSByZXdyaXRlIHRvIGFkZCB0aGUgY2FwYWJpbGl0eSB0bwogICBtb2RpZnkgbWFpbGJveGVzIGluIGFkZGl0aW9uIHRvIHJlYWRpbmcgdGhlbS4gIEEgbmV3IHNldCBvZiBjbGFzc2VzIHRoYXQgaW5jbHVkZQogICA6Y2xhc3M6YG1ib3hgLCA6Y2xhc3M6YE1IYCwgYW5kIDpjbGFzczpgTWFpbGRpcmAgYXJlIHVzZWQgdG8gcmVhZCBtYWlsYm94ZXMsIGFuZAotICBoYXZlIGFuIDptZXRoOmBhZGQobWVzc2FnZSlgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIDptZXRoOmByZW1vdmUoa2V5KWAgdG8KKyAgaGF2ZSBhbiBgYGFkZChtZXNzYWdlKWBgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIGBgcmVtb3ZlKGtleSlgYCB0bwogICByZW1vdmUgbWVzc2FnZXMsIGFuZCA6bWV0aDpgbG9ja2AvOm1ldGg6YHVubG9ja2AgdG8gbG9jay91bmxvY2sgdGhlIG1haWxib3guCiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb252ZXJ0cyBhIG1haWxkaXItZm9ybWF0IG1haWxib3ggaW50byBhbiBtYm94LWZvcm1hdAogICBvbmU6OgpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAKICAgOmZ1bmM6YHdhaXQ0YCByZXR1cm4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIDpmdW5jOmB3YWl0M2AgZG9lc24ndCB0YWtlIGEKICAgcHJvY2VzcyBJRCBhcyBpbnB1dCwgc28gaXQgd2FpdHMgZm9yIGFueSBjaGlsZCBwcm9jZXNzIHRvIGV4aXQgYW5kIHJldHVybnMgYQogICAzLXR1cGxlIG9mICpwcm9jZXNzLWlkKiwgKmV4aXQtc3RhdHVzKiwgKnJlc291cmNlLXVzYWdlKiBhcyByZXR1cm5lZCBmcm9tIHRoZQotICA6ZnVuYzpgcmVzb3VyY2UuZ2V0cnVzYWdlYCBmdW5jdGlvbi4gOmZ1bmM6YHdhaXQ0KHBpZClgIGRvZXMgdGFrZSBhIHByb2Nlc3MgSUQuCisgIDpmdW5jOmByZXNvdXJjZS5nZXRydXNhZ2VgIGZ1bmN0aW9uLiBgYHdhaXQ0KHBpZClgYCBkb2VzIHRha2UgYSBwcm9jZXNzIElELgogICAoQ29udHJpYnV0ZWQgYnkgQ2hhZCBKLiBTY2hyb2VkZXIuKQogCiAgIE9uIEZyZWVCU0QsIHRoZSA6ZnVuYzpgb3Muc3RhdGAgZnVuY3Rpb24gbm93IHJldHVybnMgIHRpbWVzIHdpdGggbmFub3NlY29uZApAQCAtMTUzMiw4ICsxNTMyLDggQEAKICAgSW4gUHl0aG9uIGNvZGUsIG5ldGxpbmsgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBhIHR1cGxlIG9mIDIgaW50ZWdlcnMsCiAgIGBgKHBpZCwgZ3JvdXBfbWFzaylgYC4KIAotICBUd28gbmV3IG1ldGhvZHMgb24gc29ja2V0IG9iamVjdHMsIDptZXRoOmByZWN2X2ludG8oYnVmZmVyKWAgYW5kCi0gIDptZXRoOmByZWN2ZnJvbV9pbnRvKGJ1ZmZlcilgLCBzdG9yZSB0aGUgcmVjZWl2ZWQgZGF0YSBpbiBhbiBvYmplY3QgIHRoYXQKKyAgVHdvIG5ldyBtZXRob2RzIG9uIHNvY2tldCBvYmplY3RzLCBgYHJlY3ZfaW50byhidWZmZXIpYGAgYW5kCisgIGBgcmVjdmZyb21faW50byhidWZmZXIpYGAsIHN0b3JlIHRoZSByZWNlaXZlZCBkYXRhIGluIGFuIG9iamVjdCAgdGhhdAogICBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBkYXRhIGFzIGEgc3RyaW5nLiAgVGhpcwogICBtZWFucyB5b3UgY2FuIHB1dCB0aGUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LW1hcHBlZCBmaWxlLgogCkBAIC0xNTU3LDggKzE1NTcsOCBAQAogICAgICB5ZWFyLCBudW1iZXIsIG5hbWUgPSBzLnVucGFjayhkYXRhKQogCiAgIFlvdSBjYW4gYWxzbyBwYWNrIGFuZCB1bnBhY2sgZGF0YSB0byBhbmQgZnJvbSBidWZmZXIgb2JqZWN0cyBkaXJlY3RseSB1c2luZyB0aGUKLSAgOm1ldGg6YHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYCBhbmQgOm1ldGg6YHVucGFja19mcm9tKGJ1ZmZlciwKLSAgb2Zmc2V0KWAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQorICBgYHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYGAgYW5kIGBgdW5wYWNrX2Zyb20oYnVmZmVyLAorICBvZmZzZXQpYGAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQogICBtYXBwZWQgZmlsZS4KIAogICAoOmNsYXNzOmBTdHJ1Y3RgIG9iamVjdHMgd2VyZSBpbXBsZW1lbnRlZCBieSBCb2IgSXBwb2xpdG8gYXQgdGhlIE5lZWRGb3JTcGVlZApAQCAtMTU5Miw3ICsxNTkyLDcgQEAKICAgLi4gcGF0Y2ggOTE4MTAxCiAKICogVGhlIDptb2Q6YHRocmVhZGluZ2AgbW9kdWxlIG5vdyBsZXRzIHlvdSBzZXQgdGhlIHN0YWNrIHNpemUgdXNlZCB3aGVuIG5ldwotICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgOmZ1bmM6YHN0YWNrX3NpemUoWypzaXplKl0pYCBmdW5jdGlvbiByZXR1cm5zIHRoZQorICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgYGBzdGFja19zaXplKFsqc2l6ZSpdKWBgIGZ1bmN0aW9uIHJldHVybnMgdGhlCiAgIGN1cnJlbnRseSBjb25maWd1cmVkIHN0YWNrIHNpemUsIGFuZCBzdXBwbHlpbmcgdGhlIG9wdGlvbmFsICpzaXplKiBwYXJhbWV0ZXIKICAgc2V0cyBhIG5ldyB2YWx1ZS4gIE5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgY2hhbmdpbmcgdGhlIHN0YWNrIHNpemUsIGJ1dAogICBXaW5kb3dzLCBQT1NJWCB0aHJlYWRpbmcsIGFuZCBPUy8yIGFsbCBkby4gKENvbnRyaWJ1dGVkIGJ5IEFuZHJldyBNYWNJbnR5cmUuKQpAQCAtMTkxMSw3ICsxOTExLDcgQEAKICAgIGggPSBoYXNobGliLm5ldygnbWQ1JykgICAgICAgICAgIyBQcm92aWRlIGFsZ29yaXRobSBhcyBhIHN0cmluZwogCiBPbmNlIGEgaGFzaCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgaXRzIG1ldGhvZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZToKLTptZXRoOmB1cGRhdGUoc3RyaW5nKWAgaGFzaGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8gdGhlICBjdXJyZW50IGRpZ2VzdAorYGB1cGRhdGUoc3RyaW5nKWBgIGhhc2hlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSAgY3VycmVudCBkaWdlc3QKIHN0YXRlLCA6bWV0aDpgZGlnZXN0YCBhbmQgOm1ldGg6YGhleGRpZ2VzdGAgcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBiaW5hcnkKIHN0cmluZyBvciBhIHN0cmluZyBvZiBoZXggZGlnaXRzLCBhbmQgOm1ldGg6YGNvcHlgIHJldHVybnMgYSBuZXcgaGFzaGluZyBvYmplY3QKIHdpdGggdGhlIHNhbWUgZGlnZXN0IHN0YXRlLgpAQCAtMjE2OCwyMCArMjE2OCwyMCBAQAogCiAqIFR3byBuZXcgbWFjcm9zIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIEMgZnVuY3Rpb25zIHRoYXQgYXJlIGxvY2FsIHRvIHRoZQogICBjdXJyZW50IGZpbGUgc28gdGhhdCBhIGZhc3RlciBjYWxsaW5nIGNvbnZlbnRpb24gY2FuIGJlIHVzZWQuCi0gIDpjOmZ1bmM6YFB5X0xPQ0FMKHR5cGUpYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCisgIGBgUHlfTE9DQUwodHlwZSlgYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCiAgIHNwZWNpZmllZCAqdHlwZSogYW5kIHVzZXMgYSBmYXN0LWNhbGxpbmcgcXVhbGlmaWVyLgotICA6YzpmdW5jOmBQeV9MT0NBTF9JTkxJTkUodHlwZSlgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYW5kIGFsc28gcmVxdWVzdHMgdGhlCisgIGBgUHlfTE9DQUxfSU5MSU5FKHR5cGUpYGAgZG9lcyB0aGUgc2FtZSB0aGluZyBhbmQgYWxzbyByZXF1ZXN0cyB0aGUKICAgZnVuY3Rpb24gYmUgaW5saW5lZC4gIElmIDpjOmZ1bmM6YFBZX0xPQ0FMX0FHR1JFU1NJVkVgIGlzIGRlZmluZWQgYmVmb3JlCiAgIDpmaWxlOmBweXRob24uaGAgaXMgaW5jbHVkZWQsIGEgc2V0IG9mIG1vcmUgYWdncmVzc2l2ZSBvcHRpbWl6YXRpb25zIGFyZSBlbmFibGVkCiAgIGZvciB0aGUgbW9kdWxlOyB5b3Ugc2hvdWxkIGJlbmNobWFyayB0aGUgcmVzdWx0cyB0byBmaW5kIG91dCBpZiB0aGVzZQogICBvcHRpbWl6YXRpb25zIGFjdHVhbGx5IG1ha2UgdGhlIGNvZGUgZmFzdGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEZyZWRyaWsgTHVuZGggYXQKICAgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQuKQogCi0qIDpjOmZ1bmM6YFB5RXJyX05ld0V4Y2VwdGlvbihuYW1lLCBiYXNlLCBkaWN0KWAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCisqIGBgUHlFcnJfTmV3RXhjZXB0aW9uKG5hbWUsIGJhc2UsIGRpY3QpYGAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCiAgIGNsYXNzZXMgYXMgaXRzICpiYXNlKiBhcmd1bWVudC4gIChDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwuKQogCiAqIFRoZSA6YzpmdW5jOmBQeUVycl9XYXJuYCBmdW5jdGlvbiBmb3IgaXNzdWluZyB3YXJuaW5ncyBpcyBub3cgZGVwcmVjYXRlZCBpbgotICBmYXZvdXIgb2YgOmM6ZnVuYzpgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWAgd2hpY2ggbGV0cyB5b3UKKyAgZmF2b3VyIG9mIGBgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWBgIHdoaWNoIGxldHMgeW91CiAgIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgc2VwYXJhdGluZyB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgY2FsbGVyLiAgQQogICAqc3RhY2tsZXZlbCogb2YgMSBpcyB0aGUgZnVuY3Rpb24gY2FsbGluZyA6YzpmdW5jOmBQeUVycl9XYXJuRXhgLCAyIGlzIHRoZQogICBmdW5jdGlvbiBhYm92ZSB0aGF0LCBhbmQgc28gZm9ydGguICAoQWRkZWQgYnkgTmVhbCBOb3J3aXR6LikKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjAucnN0IGIvRG9jL3doYXRzbmV3LzMuMC5yc3QKaW5kZXggMTMzZWNhYi4uNzFiODdiOCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMC5yc3QKQEAgLTgxMCw3ICs4MTAsNyBAQAogKiBUaGUgOmZ1bmM6YHJvdW5kYCBmdW5jdGlvbiByb3VuZGluZyBzdHJhdGVneSBhbmQgcmV0dXJuIHR5cGUgaGF2ZQogICBjaGFuZ2VkLiAgRXhhY3QgaGFsZndheSBjYXNlcyBhcmUgbm93IHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgZXZlbgogICByZXN1bHQgaW5zdGVhZCBvZiBhd2F5IGZyb20gemVyby4gIChGb3IgZXhhbXBsZSwgYGByb3VuZCgyLjUpYGAgbm93Ci0gIHJldHVybnMgYGAyYGAgcmF0aGVyIHRoYW4gYGAzYGAuKSAgOmZ1bmM6YHJvdW5kKHhbLCBuXSlgIG5vdworICByZXR1cm5zIGBgMmBgIHJhdGhlciB0aGFuIGBgM2BgLikgIGBgcm91bmQoeFssIG5dKWBgIG5vdwogICBkZWxlZ2F0ZXMgdG8gYGB4Ll9fcm91bmRfXyhbbl0pYGAgaW5zdGVhZCBvZiBhbHdheXMgcmV0dXJuaW5nIGEKICAgZmxvYXQuICBJdCBnZW5lcmFsbHkgcmV0dXJucyBhbiBpbnRlZ2VyIHdoZW4gY2FsbGVkIHdpdGggYSBzaW5nbGUKICAgYXJndW1lbnQgYW5kIGEgdmFsdWUgb2YgdGhlIHNhbWUgdHlwZSBhcyBgYHhgYCB3aGVuIGNhbGxlZCB3aXRoIHR3bwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAppbmRleCAwOTY0MGY2Li42ZjBlNDA3IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdApAQCAtNTAsNyArNTAsNyBAQAogCiBUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy4yIGFzIGNvbXBhcmVkIHRvIDMuMS4gIEl0CiBmb2N1c2VzIG9uIGEgZmV3IGhpZ2hsaWdodHMgYW5kIGdpdmVzIGEgZmV3IGV4YW1wbGVzLiAgRm9yIGZ1bGwgZGV0YWlscywgc2VlIHRoZQotOnNvdXJjZTpgTWlzYy9ORVdTIDxNaXNjL05FV1M+YCBmaWxlLgorYE1pc2MvTkVXUyA8aHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMi9NaXNjL05FV1M+YF8gZmlsZS4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTI2OCw3ICsyNjgsNyBAQAogICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMxLnR4dCcsICdkZXN0MS50eHQnKQogICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMyLnR4dCcsICdkZXN0Mi50eHQnKQogICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMzLnR4dCcsICdkZXN0My50eHQnKQotICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmM0LnR4dCcsICdkZXN0NC50eHQnKQorICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMzLnR4dCcsICdkZXN0NC50eHQnKQogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjM1Miw3ICsyMzUyLDcgQEAKICAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91OyA6aXNzdWU6YDMwMDFgLikKIAogKiBUaGUgZmFzdC1zZWFyY2ggYWxnb3JpdGhtIGluIHN0cmluZ2xpYiBpcyBub3cgdXNlZCBieSB0aGUgOm1ldGg6YHNwbGl0YCwKLSAgOm1ldGg6YHNwbGl0bGluZXNgIGFuZCA6bWV0aDpgcmVwbGFjZWAgbWV0aG9kcyBvbgorICA6bWV0aDpgcnNwbGl0YCwgOm1ldGg6YHNwbGl0bGluZXNgIGFuZCA6bWV0aDpgcmVwbGFjZWAgbWV0aG9kcyBvbgogICA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgIGFuZCA6Y2xhc3M6YHN0cmAgb2JqZWN0cy4gTGlrZXdpc2UsIHRoZQogICBhbGdvcml0aG0gaXMgYWxzbyB1c2VkIGJ5IDptZXRoOmByZmluZGAsIDptZXRoOmByaW5kZXhgLCA6bWV0aDpgcnNwbGl0YCBhbmQKICAgOm1ldGg6YHJwYXJ0aXRpb25gLgpAQCAtMjQ2OSwxNCArMjQ2OSwxNCBAQAogCiBJbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgU3VidmVyc2lvbiBjb2RlIHJlcG9zaXRvcnkgYXQgaHR0cDovL3N2bi5weXRob24ub3JnCiB0aGVyZSBpcyBub3cgYSBgTWVyY3VyaWFsIDxodHRwOi8vbWVyY3VyaWFsLnNlbGVuaWMuY29tLz5gXyByZXBvc2l0b3J5IGF0Ci1odHRwOi8vaGcucHl0aG9uLm9yZy9cLgoraHR0cDovL2hnLnB5dGhvbi5vcmcvIC4KIAogQWZ0ZXIgdGhlIDMuMiByZWxlYXNlLCB0aGVyZSBhcmUgcGxhbnMgdG8gc3dpdGNoIHRvIE1lcmN1cmlhbCBhcyB0aGUgcHJpbWFyeQogcmVwb3NpdG9yeS4gIFRoaXMgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBzaG91bGQgbWFrZSBpdCBlYXNpZXIgZm9yCiBtZW1iZXJzIG9mIHRoZSBjb21tdW5pdHkgdG8gY3JlYXRlIGFuZCBzaGFyZSBleHRlcm5hbCBjaGFuZ2VzZXRzLiAgU2VlCiA6cGVwOmAzODVgIGZvciBkZXRhaWxzLgogCi1UbyBsZWFybiB0aGUgbmV3IHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIHNlZSB0aGUgYHR1dG9yaWFsIGJ5IEpvZWwKK1RvIGxlYXJuIHRvIHVzZSB0aGUgbmV3IHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIHNlZSB0aGUgYHR1dG9yaWFsIGJ5IEpvZWwKIFNwb2xza3kgPGh0dHA6Ly9oZ2luaXQuY29tPmBfIG9yIHRoZSBgR3VpZGUgdG8gTWVyY3VyaWFsIFdvcmtmbG93cwogPGh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vZ3VpZGUvPmBfLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdCBiL0RvYy93aGF0c25ldy8zLjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYTQ5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApAQCAtMCwwICsxLDI1MTIgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy4zCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjMsIGNvbXBhcmVkIHRvIDMuMi4KK1B5dGhvbiAzLjMgd2FzIHJlbGVhc2VkIG9uIFNlcHRlbWJlciAyOSwgMjAxMi4gIEZvciBmdWxsIGRldGFpbHMsCitzZWUgdGhlIGBjaGFuZ2Vsb2cgPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zL3doYXRzbmV3L2NoYW5nZWxvZy5odG1sPmBfLgorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDM5OGAgLSBQeXRob24gMy4zIFJlbGVhc2UgU2NoZWR1bGUKKworCitTdW1tYXJ5IC0tIFJlbGVhc2UgaGlnaGxpZ2h0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gVGhpcyBzZWN0aW9uIHNpbmdsZXMgb3V0IHRoZSBtb3N0IGltcG9ydGFudCBjaGFuZ2VzIGluIFB5dGhvbiAzLjMuCisgICBCcmV2aXR5IGlzIGtleS4KKworTmV3IHN5bnRheCBmZWF0dXJlczoKKworKiBOZXcgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbiBmb3IgOnJlZjpgZ2VuZXJhdG9yIGRlbGVnYXRpb24gPHBlcC0zODA+YC4KKyogVGhlIGBgdSd1bmljb2RlJ2BgIHN5bnRheCBpcyBhY2NlcHRlZCBhZ2FpbiBmb3IgOmNsYXNzOmBzdHJgIG9iamVjdHMuCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgZmF1bHRoYW5kbGVyYCAoaGVscHMgZGVidWdnaW5nIGxvdy1sZXZlbCBjcmFzaGVzKQorKiA6bW9kOmBpcGFkZHJlc3NgIChoaWdoLWxldmVsIG9iamVjdHMgcmVwcmVzZW50aW5nIElQIGFkZHJlc3NlcyBhbmQgbWFza3MpCisqIDptb2Q6YGx6bWFgIChjb21wcmVzcyBkYXRhIHVzaW5nIHRoZSBYWiAvIExaTUEgYWxnb3JpdGhtKQorKiA6bW9kOmB1bml0dGVzdC5tb2NrYCAocmVwbGFjZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSB1bmRlciB0ZXN0IHdpdGggbW9jayBvYmplY3RzKQorKiA6bW9kOmB2ZW52YCAoUHl0aG9uIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnRzIDxwZXAtNDA1PmAsIGFzIGluIHRoZQorICBwb3B1bGFyIGBgdmlydHVhbGVudmBgIHBhY2thZ2UpCisKK05ldyBidWlsdC1pbiBmZWF0dXJlczoKKworKiBSZXdvcmtlZCA6cmVmOmBJL08gZXhjZXB0aW9uIGhpZXJhcmNoeSA8cGVwLTMxNTE+YC4KKworSW1wbGVtZW50YXRpb24gaW1wcm92ZW1lbnRzOgorCisqIFJld3JpdHRlbiA6cmVmOmBpbXBvcnQgbWFjaGluZXJ5IDxpbXBvcnRsaWI+YCBiYXNlZCBvbiA6bW9kOmBpbXBvcnRsaWJgLgorKiBNb3JlIGNvbXBhY3QgOnJlZjpgdW5pY29kZSBzdHJpbmdzIDxwZXAtMzkzPmAuCisqIE1vcmUgY29tcGFjdCA6cmVmOmBhdHRyaWJ1dGUgZGljdGlvbmFyaWVzIDxwZXAtNDEyPmAuCisKK1NpZ25pZmljYW50bHkgSW1wcm92ZWQgTGlicmFyeSBNb2R1bGVzOgorCisqIEMgQWNjZWxlcmF0b3IgZm9yIHRoZSA6cmVmOmBkZWNpbWFsIDxuZXctZGVjaW1hbD5gIG1vZHVsZS4KKyogQmV0dGVyIHVuaWNvZGUgaGFuZGxpbmcgaW4gdGhlIDpyZWY6YGVtYWlsIDxuZXctZW1haWw+YCBtb2R1bGUKKyAgKDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgcGFja2FnZT5gKS4KKworU2VjdXJpdHkgaW1wcm92ZW1lbnRzOgorCisqIEhhc2ggcmFuZG9taXphdGlvbiBpcyBzd2l0Y2hlZCBvbiBieSBkZWZhdWx0LgorCitQbGVhc2UgcmVhZCBvbiBmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdXNlci1mYWNpbmcgY2hhbmdlcy4KKworCisuLiBfcGVwLTQwNToKKworUEVQIDQwNTogVmlydHVhbCBFbnZpcm9ubWVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1ZpcnR1YWwgZW52aXJvbm1lbnRzIGhlbHAgY3JlYXRlIHNlcGFyYXRlIFB5dGhvbiBzZXR1cHMgd2hpbGUgc2hhcmluZyBhCitzeXN0ZW0td2lkZSBiYXNlIGluc3RhbGwsIGZvciBlYXNlIG9mIG1haW50ZW5hbmNlLiAgVmlydHVhbCBlbnZpcm9ubWVudHMKK2hhdmUgdGhlaXIgb3duIHNldCBvZiBwcml2YXRlIHNpdGUgcGFja2FnZXMgKGkuZS4gbG9jYWxseS1pbnN0YWxsZWQKK2xpYnJhcmllcyksIGFuZCBhcmUgb3B0aW9uYWxseSBzZWdyZWdhdGVkIGZyb20gdGhlIHN5c3RlbS13aWRlIHNpdGUKK3BhY2thZ2VzLiAgVGhlaXIgY29uY2VwdCBhbmQgaW1wbGVtZW50YXRpb24gYXJlIGluc3BpcmVkIGJ5IHRoZSBwb3B1bGFyCitgYHZpcnR1YWxlbnZgYCB0aGlyZC1wYXJ0eSBwYWNrYWdlLCBidXQgYmVuZWZpdCBmcm9tIHRpZ2h0ZXIgaW50ZWdyYXRpb24KK3dpdGggdGhlIGludGVycHJldGVyIGNvcmUuCisKK1RoaXMgUEVQIGFkZHMgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcywgYW5kIHRoZQorOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKK2FkbWluaXN0cmF0aW9uLiAgVGhlIFB5dGhvbiBpbnRlcnByZXRlciBjaGVja3MgZm9yIGEgYGBweXZlbnYuY2ZnYGAsCitmaWxlIHdob3NlIGV4aXN0ZW5jZSBzaWduYWxzIHRoZSBiYXNlIG9mIGEgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeQordHJlZS4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0MDVgIC0gUHl0aG9uIFZpcnR1YWwgRW52aXJvbm1lbnRzCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2FybCBNZXllcjsgaW1wbGVtZW50YXRpb24gYnkgQ2FybCBNZXllciBhbmQgVmluYXkgU2FqaXAKKworCitQRVAgNDIwOiBJbXBsaWNpdCBOYW1lc3BhY2UgUGFja2FnZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOYXRpdmUgc3VwcG9ydCBmb3IgcGFja2FnZSBkaXJlY3RvcmllcyB0aGF0IGRvbid0IHJlcXVpcmUgYGBfX2luaXRfXy5weWBgCittYXJrZXIgZmlsZXMgYW5kIGNhbiBhdXRvbWF0aWNhbGx5IHNwYW4gbXVsdGlwbGUgcGF0aCBzZWdtZW50cyAoaW5zcGlyZWQgYnkKK3ZhcmlvdXMgdGhpcmQgcGFydHkgYXBwcm9hY2hlcyB0byBuYW1lc3BhY2UgcGFja2FnZXMsIGFzIGRlc2NyaWJlZCBpbgorOnBlcDpgNDIwYCkKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQyMGAgLSBJbXBsaWNpdCBOYW1lc3BhY2UgUGFja2FnZXMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEVyaWMgVi4gU21pdGg7IGltcGxlbWVudGF0aW9uIGJ5IEVyaWMgVi4gU21pdGgKKyAgICAgIGFuZCBCYXJyeSBXYXJzYXcKKworCisuLiBfcGVwLTMxMTgtdXBkYXRlOgorCitQRVAgMzExODogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gYW5kIGJ1ZmZlciBwcm90b2NvbCBkb2N1bWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiA6cGVwOmAzMTE4YCBoYXMgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorCitUaGUgbmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gY29tcHJlaGVuc2l2ZWx5IGZpeGVzIGFsbCBvd25lcnNoaXAgYW5kCitsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGZpZWxkcyBpbiB0aGUgUHlfYnVmZmVyIHN0cnVjdAordGhhdCBsZWQgdG8gbXVsdGlwbGUgY3Jhc2ggcmVwb3J0cy4gQWRkaXRpb25hbGx5LCBzZXZlcmFsIGZ1bmN0aW9ucyB0aGF0CitjcmFzaGVkIG9yIHJldHVybmVkIGluY29ycmVjdCByZXN1bHRzIGZvciBub24tY29udGlndW91cyBvciBtdWx0aS1kaW1lbnNpb25hbAoraW5wdXQgaGF2ZSBiZWVuIGZpeGVkLgorCitUaGUgbWVtb3J5dmlldyBvYmplY3Qgbm93IGhhcyBhIFBFUC0zMTE4IGNvbXBsaWFudCBnZXRidWZmZXJwcm9jKCkKK3RoYXQgY2hlY2tzIHRoZSBjb25zdW1lcidzIHJlcXVlc3QgdHlwZS4gTWFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuCithZGRlZCwgbW9zdCBvZiB0aGVtIHdvcmsgaW4gZnVsbCBnZW5lcmFsaXR5IGZvciBub24tY29udGlndW91cyBhcnJheXMKK2FuZCBhcnJheXMgd2l0aCBzdWJvZmZzZXRzLgorCitUaGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLCBjbGVhcmx5IHNwZWxsaW5nIG91dCByZXNwb25zaWJpbGl0aWVzCitmb3IgYm90aCBleHBvcnRlcnMgYW5kIGNvbnN1bWVycy4gQnVmZmVyIHJlcXVlc3QgZmxhZ3MgYXJlIGdyb3VwZWQgaW50bworYmFzaWMgYW5kIGNvbXBvdW5kIGZsYWdzLiBUaGUgbWVtb3J5IGxheW91dCBvZiBub24tY29udGlndW91cyBhbmQKK211bHRpLWRpbWVuc2lvbmFsIE51bVB5LXN0eWxlIGFycmF5cyBpcyBleHBsYWluZWQuCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCisqIEFsbCBuYXRpdmUgc2luZ2xlIGNoYXJhY3RlciBmb3JtYXQgc3BlY2lmaWVycyBpbiBzdHJ1Y3QgbW9kdWxlIHN5bnRheAorICAob3B0aW9uYWxseSBwcmVmaXhlZCB3aXRoICdAJykgYXJlIG5vdyBzdXBwb3J0ZWQuCisKKyogV2l0aCBzb21lIHJlc3RyaWN0aW9ucywgdGhlIGNhc3QoKSBtZXRob2QgYWxsb3dzIGNoYW5naW5nIG9mIGZvcm1hdCBhbmQKKyAgc2hhcGUgb2YgQy1jb250aWd1b3VzIGFycmF5cy4KKworKiBNdWx0aS1kaW1lbnNpb25hbCBsaXN0IHJlcHJlc2VudGF0aW9ucyBhcmUgc3VwcG9ydGVkIGZvciBhbnkgYXJyYXkgdHlwZS4KKworKiBNdWx0aS1kaW1lbnNpb25hbCBjb21wYXJpc29ucyBhcmUgc3VwcG9ydGVkIGZvciBhbnkgYXJyYXkgdHlwZS4KKworKiBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgb2YgaGFzaGFibGUgKHJlYWQtb25seSkgdHlwZXMgd2l0aCBmb3JtYXRzIEIsCisgIGIgb3IgYyBhcmUgbm93IGhhc2hhYmxlLiAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzQxMWApCisKKyogQXJiaXRyYXJ5IHNsaWNpbmcgb2YgYW55IDEtRCBhcnJheXMgdHlwZSBpcyBzdXBwb3J0ZWQuIEZvciBleGFtcGxlLCBpdAorICBpcyBub3cgcG9zc2libGUgdG8gcmV2ZXJzZSBhIG1lbW9yeXZpZXcgaW4gTygxKSBieSB1c2luZyBhIG5lZ2F0aXZlIHN0ZXAuCisKK0FQSSBjaGFuZ2VzCistLS0tLS0tLS0tLQorCisqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaW1lbnNpb25zIGlzIG9mZmljaWFsbHkgbGltaXRlZCB0byA2NC4KKworKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgZW1wdHkgc2hhcGUsIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgaXMgbm93CisgIGFuIGVtcHR5IHR1cGxlIGluc3RlYWQgb2YgTm9uZS4KKworKiBBY2Nlc3NpbmcgYSBtZW1vcnl2aWV3IGVsZW1lbnQgd2l0aCBmb3JtYXQgJ0InICh1bnNpZ25lZCBieXRlcykKKyAgbm93IHJldHVybnMgYW4gaW50ZWdlciAoaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzdHJ1Y3QgbW9kdWxlIHN5bnRheCkuCisgIEZvciByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgdGhlIHZpZXcgbXVzdCBiZSBjYXN0IHRvICdjJyBmaXJzdC4KKworKiBtZW1vcnl2aWV3IGNvbXBhcmlzb25zIG5vdyB1c2UgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBvcGVyYW5kcworICBhbmQgY29tcGFyZSBhbGwgYXJyYXkgZWxlbWVudHMgYnkgdmFsdWUuIEFsbCBmb3JtYXQgc3RyaW5ncyBpbiBzdHJ1Y3QKKyAgbW9kdWxlIHN5bnRheCBhcmUgc3VwcG9ydGVkLiBWaWV3cyB3aXRoIHVucmVjb2duaXNlZCBmb3JtYXQgc3RyaW5ncworICBhcmUgc3RpbGwgcGVybWl0dGVkLCBidXQgd2lsbCBhbHdheXMgY29tcGFyZSBhcyB1bmVxdWFsLCByZWdhcmRsZXNzCisgIG9mIHZpZXcgY29udGVudHMuCisKKyogRm9yIGZ1cnRoZXIgY2hhbmdlcyBzZWUgYEJ1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzYF8gYW5kIGBQb3J0aW5nIEMgY29kZWBfIC4KKworKENvbnRyaWJ1dGVkIGJ5IFN0ZWZhbiBLcmFoIGluIDppc3N1ZTpgMTAxODFgKQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzExOGAgLSBSZXZpc2luZyB0aGUgQnVmZmVyIFByb3RvY29sCisKKworLi4gX3BlcC0zOTM6CisKK1BFUCAzOTM6IEZsZXhpYmxlIFN0cmluZyBSZXByZXNlbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBVbmljb2RlIHN0cmluZyB0eXBlIGlzIGNoYW5nZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbnRlcm5hbAorcmVwcmVzZW50YXRpb25zLCBkZXBlbmRpbmcgb24gdGhlIGNoYXJhY3RlciB3aXRoIHRoZSBsYXJnZXN0IFVuaWNvZGUgb3JkaW5hbAorKDEsIDIsIG9yIDQgYnl0ZXMpIGluIHRoZSByZXByZXNlbnRlZCBzdHJpbmcuICBUaGlzIGFsbG93cyBhIHNwYWNlLWVmZmljaWVudAorcmVwcmVzZW50YXRpb24gaW4gY29tbW9uIGNhc2VzLCBidXQgZ2l2ZXMgYWNjZXNzIHRvIGZ1bGwgVUNTLTQgb24gYWxsCitzeXN0ZW1zLiAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBBUElzLCBzZXZlcmFsIHJlcHJlc2VudGF0aW9ucyBtYXkKK2V4aXN0IGluIHBhcmFsbGVsOyBvdmVyIHRpbWUsIHRoaXMgY29tcGF0aWJpbGl0eSBzaG91bGQgYmUgcGhhc2VkIG91dC4KKworT24gdGhlIFB5dGhvbiBzaWRlLCB0aGVyZSBzaG91bGQgYmUgbm8gZG93bnNpZGUgdG8gdGhpcyBjaGFuZ2UuCisKK09uIHRoZSBDIEFQSSBzaWRlLCBQRVAgMzkzIGlzIGZ1bGx5IGJhY2t3YXJkIGNvbXBhdGlibGUuICBUaGUgbGVnYWN5IEFQSQorc2hvdWxkIHJlbWFpbiBhdmFpbGFibGUgYXQgbGVhc3QgZml2ZSB5ZWFycy4gIEFwcGxpY2F0aW9ucyB1c2luZyB0aGUgbGVnYWN5CitBUEkgd2lsbCBub3QgZnVsbHkgYmVuZWZpdCBvZiB0aGUgbWVtb3J5IHJlZHVjdGlvbiwgb3IgLSB3b3JzZSAtIG1heSB1c2UKK2EgYml0IG1vcmUgbWVtb3J5LCBiZWNhdXNlIFB5dGhvbiBtYXkgaGF2ZSB0byBtYWludGFpbiB0d28gdmVyc2lvbnMgb2YgZWFjaAorc3RyaW5nIChpbiB0aGUgbGVnYWN5IGZvcm1hdCBhbmQgaW4gdGhlIG5ldyBlZmZpY2llbnQgc3RvcmFnZSkuCisKK0Z1bmN0aW9uYWxpdHkKKy0tLS0tLS0tLS0tLS0KKworQ2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IDpwZXA6YDM5M2AgYXJlIHRoZSBmb2xsb3dpbmc6CisKKyogUHl0aG9uIG5vdyBhbHdheXMgc3VwcG9ydHMgdGhlIGZ1bGwgcmFuZ2Ugb2YgVW5pY29kZSBjb2RlcG9pbnRzLCBpbmNsdWRpbmcKKyAgbm9uLUJNUCBvbmVzIChpLmUuIGZyb20gYGBVKzAwMDBgYCB0byBgYFUrMTBGRkZGYGApLiAgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4KKyAgbmFycm93IGFuZCB3aWRlIGJ1aWxkcyBubyBsb25nZXIgZXhpc3RzIGFuZCBQeXRob24gbm93IGJlaGF2ZXMgbGlrZSBhIHdpZGUKKyAgYnVpbGQsIGV2ZW4gdW5kZXIgV2luZG93cy4KKworKiBXaXRoIHRoZSBkZWF0aCBvZiBuYXJyb3cgYnVpbGRzLCB0aGUgcHJvYmxlbXMgc3BlY2lmaWMgdG8gbmFycm93IGJ1aWxkcyBoYXZlCisgIGFsc28gYmVlbiBmaXhlZCwgZm9yIGV4YW1wbGU6CisKKyAgKiA6ZnVuYzpgbGVuYCBub3cgYWx3YXlzIHJldHVybnMgMSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzLAorICAgIHNvIGBgbGVuKCdcVTAwMTBGRkZGJykgPT0gMWBgOworCisgICogc3Vycm9nYXRlIHBhaXJzIGFyZSBub3QgcmVjb21iaW5lZCBpbiBzdHJpbmcgbGl0ZXJhbHMsCisgICAgc28gYGAnXHVEQkZGXHVERkZGJyAhPSAnXFUwMDEwRkZGRidgYDsKKworICAqIGluZGV4aW5nIG9yIHNsaWNpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVlLAorICAgIHNvIGBgJ1xVMDAxMEZGRkYnWzBdYGAgbm93IHJldHVybnMgYGAnXFUwMDEwRkZGRidgYCBhbmQgbm90IGBgJ1x1REJGRidgYDsKKworICAqIGFsbCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgbm93IGNvcnJlY3RseSBoYW5kbGUKKyAgICBub24tQk1QIGNvZGVwb2ludHMuCisKKyogVGhlIHZhbHVlIG9mIDpkYXRhOmBzeXMubWF4dW5pY29kZWAgaXMgbm93IGFsd2F5cyBgYDExMTQxMTFgYCAoYGAweDEwRkZGRmBgCisgIGluIGhleGFkZWNpbWFsKS4gIFRoZSA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TWF4YCBmdW5jdGlvbiBzdGlsbCByZXR1cm5zCisgIGVpdGhlciBgYDB4RkZGRmBgIG9yIGBgMHgxMEZGRkZgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgYW5kIGl0IHNob3VsZAorICBub3QgYmUgdXNlZCB3aXRoIHRoZSBuZXcgVW5pY29kZSBBUEkgKHNlZSA6aXNzdWU6YDEzMDU0YCkuCisKKyogVGhlIDpmaWxlOmAuL2NvbmZpZ3VyZWAgZmxhZyBgYC0td2l0aC13aWRlLXVuaWNvZGVgYCBoYXMgYmVlbiByZW1vdmVkLgorCitQZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3RvcmFnZSBvZiBVbmljb2RlIHN0cmluZ3Mgbm93IGRlcGVuZHMgb24gdGhlIGhpZ2hlc3QgY29kZXBvaW50IGluIHRoZSBzdHJpbmc6CisKKyogcHVyZSBBU0NJSSBhbmQgTGF0aW4xIHN0cmluZ3MgKGBgVSswMDAwLVUrMDBGRmBgKSB1c2UgMSBieXRlIHBlciBjb2RlcG9pbnQ7CisKKyogQk1QIHN0cmluZ3MgKGBgVSswMDAwLVUrRkZGRmBgKSB1c2UgMiBieXRlcyBwZXIgY29kZXBvaW50OworCisqIG5vbi1CTVAgc3RyaW5ncyAoYGBVKzEwMDAwLVUrMTBGRkZGYGApIHVzZSA0IGJ5dGVzIHBlciBjb2RlcG9pbnQuCisKK1RoZSBuZXQgZWZmZWN0IGlzIHRoYXQgZm9yIG1vc3QgYXBwbGljYXRpb25zLCBtZW1vcnkgdXNhZ2Ugb2Ygc3RyaW5nCitzdG9yYWdlIHNob3VsZCBkZWNyZWFzZSBzaWduaWZpY2FudGx5IC0gZXNwZWNpYWxseSBjb21wYXJlZCB0byBmb3JtZXIKK3dpZGUgdW5pY29kZSBidWlsZHMgLSBhcywgaW4gbWFueSBjYXNlcywgc3RyaW5ncyB3aWxsIGJlIHB1cmUgQVNDSUkKK2V2ZW4gaW4gaW50ZXJuYXRpb25hbCBjb250ZXh0cyAoYmVjYXVzZSBtYW55IHN0cmluZ3Mgc3RvcmUgbm9uLWh1bWFuCitsYW5ndWFnZSBkYXRhLCBzdWNoIGFzIFhNTCBmcmFnbWVudHMsIEhUVFAgaGVhZGVycywgSlNPTi1lbmNvZGVkIGRhdGEsCitldGMuKS4gIFdlIGFsc28gaG9wZSB0aGF0IGl0IHdpbGwsIGZvciB0aGUgc2FtZSByZWFzb25zLCBpbmNyZWFzZSBDUFUKK2NhY2hlIGVmZmljaWVuY3kgb24gbm9uLXRyaXZpYWwgYXBwbGljYXRpb25zLiBUaGUgbWVtb3J5IHVzYWdlIG9mCitQeXRob24gMy4zIGlzIHR3byB0byB0aHJlZSB0aW1lcyBzbWFsbGVyIHRoYW4gUHl0aG9uIDMuMiwgYW5kIGEgbGl0dGxlCitiaXQgYmV0dGVyIHRoYW4gUHl0aG9uIDIuNywgb24gYSBEamFuZ28gYmVuY2htYXJrIChzZWUgdGhlIFBFUCBmb3IKK2RldGFpbHMpLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzkzYCAtIEZsZXhpYmxlIFN0cmluZyBSZXByZXNlbnRhdGlvbgorICAgICAgUEVQIHdyaXR0ZW4gYnkgTWFydGluIHZvbiBMw7Z3aXM7IGltcGxlbWVudGF0aW9uIGJ5IFRvcnN0ZW4gQmVja2VyCisgICAgICBhbmQgTWFydGluIHZvbiBMw7Z3aXMuCisKKworLi4gX3BlcC0zOTc6CisKK1BFUCAzOTc6IFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBQeXRob24gMy4zIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhIGBgcHlgYCBsYXVuY2hlciBhcHBsaWNhdGlvbgordGhhdCBjYW4gYmUgdXNlZCB0byBsYXVuY2ggUHl0aG9uIGFwcGxpY2F0aW9ucyBpbiBhIHZlcnNpb24gaW5kZXBlbmRlbnQKK2Zhc2hpb24uCisKK1RoaXMgbGF1bmNoZXIgaXMgaW52b2tlZCBpbXBsaWNpdGx5IHdoZW4gZG91YmxlLWNsaWNraW5nIGBgKi5weWBgIGZpbGVzLgorSWYgb25seSBhIHNpbmdsZSBQeXRob24gdmVyc2lvbiBpcyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSwgdGhhdCB2ZXJzaW9uCit3aWxsIGJlIHVzZWQgdG8gcnVuIHRoZSBmaWxlLiBJZiBtdWx0aXBsZSB2ZXJzaW9ucyBhcmUgaW5zdGFsbGVkLCB0aGUgbW9zdAorcmVjZW50IHZlcnNpb24gaXMgdXNlZCBieSBkZWZhdWx0LCBidXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbmNsdWRpbmcKK2EgVW5peC1zdHlsZSAic2hlYmFuZyBsaW5lIiBpbiB0aGUgUHl0aG9uIHNjcmlwdC4KKworVGhlIGxhdW5jaGVyIGNhbiBhbHNvIGJlIHVzZWQgZXhwbGljaXRseSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgYXMgdGhlIGBgcHlgYAorYXBwbGljYXRpb24uIFJ1bm5pbmcgYGBweWBgIGZvbGxvd3MgdGhlIHNhbWUgdmVyc2lvbiBzZWxlY3Rpb24gcnVsZXMgYXMKK2ltcGxpY2l0bHkgbGF1bmNoaW5nIHNjcmlwdHMsIGJ1dCBhIG1vcmUgc3BlY2lmaWMgdmVyc2lvbiBjYW4gYmUgc2VsZWN0ZWQKK2J5IHBhc3NpbmcgYXBwcm9wcmlhdGUgYXJndW1lbnRzIChzdWNoIGFzIGBgLTNgYCB0byByZXF1ZXN0IFB5dGhvbiAzIHdoZW4KK1B5dGhvbiAyIGlzIGFsc28gaW5zdGFsbGVkLCBvciBgYC0yLjZgYCB0byBzcGVjaWZjbGx5IHJlcXVlc3QgYW4gZWFybGllcgorUHl0aG9uIHZlcnNpb24gd2hlbiBhIG1vcmUgcmVjZW50IHZlcnNpb24gaXMgaW5zdGFsbGVkKS4KKworSW4gYWRkaXRpb24gdG8gdGhlIGxhdW5jaGVyLCB0aGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGluY2x1ZGVzIGFuCitvcHRpb24gdG8gYWRkIHRoZSBuZXdseSBpbnN0YWxsZWQgUHl0aG9uIHRvIHRoZSBzeXN0ZW0gUEFUSCAoY29udHJpYnV0ZWQKK2J5IEJyaWFuIEN1cnRpbiBpbiA6aXNzdWU6YDM1NjFgKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM5N2AgLSBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKyAgICAgIFBFUCB3cml0dGVuIGJ5IE1hcmsgSGFtbW9uZCBhbmQgTWFydGluIHYuIEzDtndpczsgaW1wbGVtZW50YXRpb24gYnkKKyAgICAgIFZpbmF5IFNhamlwLgorCisgICBMYXVuY2hlciBkb2N1bWVudGF0aW9uOiA6cmVmOmBsYXVuY2hlcmAKKworICAgSW5zdGFsbGVyIFBBVEggbW9kaWZpY2F0aW9uOiA6cmVmOmB3aW5kb3dzLXBhdGgtbW9kYAorCisKKy4uIF9wZXAtMzE1MToKKworUEVQIDMxNTE6IFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBoaWVyYXJjaHkgb2YgZXhjZXB0aW9ucyByYWlzZWQgYnkgb3BlcmF0aW5nIHN5c3RlbSBlcnJvcnMgaXMgbm93IGJvdGgKK3NpbXBsaWZpZWQgYW5kIGZpbmVyLWdyYWluZWQuCisKK1lvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFueW1vcmUgYWJvdXQgY2hvb3NpbmcgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbgordHlwZSBiZXR3ZWVuIDpleGM6YE9TRXJyb3JgLCA6ZXhjOmBJT0Vycm9yYCwgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsCis6ZXhjOmBXaW5kb3dzRXJyb3JgLCA6ZXhjOmBtbWFwLmVycm9yYCwgOmV4Yzpgc29ja2V0LmVycm9yYCBvcgorOmV4Yzpgc2VsZWN0LmVycm9yYC4gIEFsbCB0aGVzZSBleGNlcHRpb24gdHlwZXMgYXJlIG5vdyBvbmx5IG9uZToKKzpleGM6YE9TRXJyb3JgLiAgVGhlIG90aGVyIG5hbWVzIGFyZSBrZXB0IGFzIGFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHkKK3JlYXNvbnMuCisKK0Fsc28sIGl0IGlzIG5vdyBlYXNpZXIgdG8gY2F0Y2ggYSBzcGVjaWZpYyBlcnJvciBjb25kaXRpb24uICBJbnN0ZWFkIG9mCitpbnNwZWN0aW5nIHRoZSBgYGVycm5vYGAgYXR0cmlidXRlIChvciBgYGFyZ3NbMF1gYCkgZm9yIGEgcGFydGljdWxhcgorY29uc3RhbnQgZnJvbSB0aGUgOm1vZDpgZXJybm9gIG1vZHVsZSwgeW91IGNhbiBjYXRjaCB0aGUgYWRlcXVhdGUKKzpleGM6YE9TRXJyb3JgIHN1YmNsYXNzLiAgVGhlIGF2YWlsYWJsZSBzdWJjbGFzc2VzIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIDpleGM6YEJsb2NraW5nSU9FcnJvcmAKKyogOmV4YzpgQ2hpbGRQcm9jZXNzRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25FcnJvcmAKKyogOmV4YzpgRmlsZUV4aXN0c0Vycm9yYAorKiA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAKKyogOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAKKyogOmV4YzpgSXNBRGlyZWN0b3J5RXJyb3JgCisqIDpleGM6YE5vdEFEaXJlY3RvcnlFcnJvcmAKKyogOmV4YzpgUGVybWlzc2lvbkVycm9yYAorKiA6ZXhjOmBQcm9jZXNzTG9va3VwRXJyb3JgCisqIDpleGM6YFRpbWVvdXRFcnJvcmAKKworQW5kIHRoZSA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIGl0c2VsZiBoYXMgZmluZXItZ3JhaW5lZCBzdWJjbGFzc2VzOgorCisqIDpleGM6YEJyb2tlblBpcGVFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvblJlc2V0RXJyb3JgCisKK1RoYW5rcyB0byB0aGUgbmV3IGV4Y2VwdGlvbnMsIGNvbW1vbiB1c2FnZXMgb2YgdGhlIDptb2Q6YGVycm5vYCBjYW4gbm93IGJlCithdm9pZGVkLiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZSB3cml0dGVuIGZvciBQeXRob24gMy4yOjoKKworICAgIGZyb20gZXJybm8gaW1wb3J0IEVOT0VOVCwgRUFDQ0VTLCBFUEVSTQorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oImRvY3VtZW50LnR4dCIpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgIGlmIGVyci5lcnJubyA9PSBFTk9FTlQ6CisgICAgICAgICAgICBwcmludCgiZG9jdW1lbnQudHh0IGZpbGUgaXMgbWlzc2luZyIpCisgICAgICAgIGVsaWYgZXJyLmVycm5vIGluIChFQUNDRVMsIEVQRVJNKToKKyAgICAgICAgICAgIHByaW50KCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHJlYWQgZG9jdW1lbnQudHh0IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisKK2NhbiBub3cgYmUgd3JpdHRlbiB3aXRob3V0IHRoZSA6bW9kOmBlcnJub2AgaW1wb3J0IGFuZCB3aXRob3V0IG1hbnVhbAoraW5zcGVjdGlvbiBvZiBleGNlcHRpb24gYXR0cmlidXRlczo6CisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbigiZG9jdW1lbnQudHh0IikgYXMgZjoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgcHJpbnQoImRvY3VtZW50LnR4dCBmaWxlIGlzIG1pc3NpbmciKQorICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgIHByaW50KCJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHJlYWQgZG9jdW1lbnQudHh0IikKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxNTFgIC0gUmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gRXhjZXB0aW9uIEhpZXJhcmNoeQorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEFudG9pbmUgUGl0cm91CisKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiB5aWVsZDsgeWllbGQgZnJvbSAoaW4gV2hhdCdzIE5ldykKKworLi4gX3BlcC0zODA6CisKK1BFUCAzODA6IFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BFUCAzODAgYWRkcyB0aGUgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbiwgYWxsb3dpbmcgYSA6dGVybTpgZ2VuZXJhdG9yYCB0bworZGVsZWdhdGUKK3BhcnQgb2YgaXRzIG9wZXJhdGlvbnMgdG8gYW5vdGhlciBnZW5lcmF0b3IuIFRoaXMgYWxsb3dzIGEgc2VjdGlvbiBvZiBjb2RlCitjb250YWluaW5nIDprZXl3b3JkOmB5aWVsZGAgdG8gYmUgZmFjdG9yZWQgb3V0IGFuZCBwbGFjZWQgaW4gYW5vdGhlciBnZW5lcmF0b3IuCitBZGRpdGlvbmFsbHksIHRoZSBzdWJnZW5lcmF0b3IgaXMgYWxsb3dlZCB0byByZXR1cm4gd2l0aCBhIHZhbHVlLCBhbmQgdGhlCit2YWx1ZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgZGVsZWdhdGluZyBnZW5lcmF0b3IuCisKK1doaWxlIGRlc2lnbmVkIHByaW1hcmlseSBmb3IgdXNlIGluIGRlbGVnYXRpbmcgdG8gYSBzdWJnZW5lcmF0b3IsIHRoZSBgYHlpZWxkCitmcm9tYGAgZXhwcmVzc2lvbiBhY3R1YWxseSBhbGxvd3MgZGVsZWdhdGlvbiB0byBhcmJpdHJhcnkgc3ViaXRlcmF0b3JzLgorCitGb3Igc2ltcGxlIGl0ZXJhdG9ycywgYGB5aWVsZCBmcm9tIGl0ZXJhYmxlYGAgaXMgZXNzZW50aWFsbHkganVzdCBhIHNob3J0ZW5lZAorZm9ybSBvZiBgYGZvciBpdGVtIGluIGl0ZXJhYmxlOiB5aWVsZCBpdGVtYGA6OgorCisgICAgPj4+IGRlZiBnKHgpOgorICAgIC4uLiAgICAgeWllbGQgZnJvbSByYW5nZSh4LCAwLCAtMSkKKyAgICAuLi4gICAgIHlpZWxkIGZyb20gcmFuZ2UoeCkKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChnKDUpKQorICAgIFs1LCA0LCAzLCAyLCAxLCAwLCAxLCAyLCAzLCA0XQorCitIb3dldmVyLCB1bmxpa2UgYW4gb3JkaW5hcnkgbG9vcCwgYGB5aWVsZCBmcm9tYGAgYWxsb3dzIHN1YmdlbmVyYXRvcnMgdG8KK3JlY2VpdmUgc2VudCBhbmQgdGhyb3duIHZhbHVlcyBkaXJlY3RseSBmcm9tIHRoZSBjYWxsaW5nIHNjb3BlLCBhbmQKK3JldHVybiBhIGZpbmFsIHZhbHVlIHRvIHRoZSBvdXRlciBnZW5lcmF0b3I6OgorCisgICAgPj4+IGRlZiBhY2N1bXVsYXRlKCk6CisgICAgLi4uICAgICB0YWxseSA9IDAKKyAgICAuLi4gICAgIHdoaWxlIDE6CisgICAgLi4uICAgICAgICAgbmV4dCA9IHlpZWxkCisgICAgLi4uICAgICAgICAgaWYgbmV4dCBpcyBOb25lOgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gdGFsbHkKKyAgICAuLi4gICAgICAgICB0YWxseSArPSBuZXh0CisgICAgLi4uCisgICAgPj4+IGRlZiBnYXRoZXJfdGFsbGllcyh0YWxsaWVzKToKKyAgICAuLi4gICAgIHdoaWxlIDE6CisgICAgLi4uICAgICAgICAgdGFsbHkgPSB5aWVsZCBmcm9tIGFjY3VtdWxhdGUoKQorICAgIC4uLiAgICAgICAgIHRhbGxpZXMuYXBwZW5kKHRhbGx5KQorICAgIC4uLgorICAgID4+PiB0YWxsaWVzID0gW10KKyAgICA+Pj4gYWNjID0gZ2F0aGVyX3RhbGxpZXModGFsbGllcykKKyAgICA+Pj4gbmV4dChhY2MpICMgRW5zdXJlIHRoZSBhY2N1bXVsYXRvciBpcyByZWFkeSB0byBhY2NlcHQgdmFsdWVzCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgYWNjLnNlbmQoaSkKKyAgICAuLi4KKyAgICA+Pj4gYWNjLnNlbmQoTm9uZSkgIyBGaW5pc2ggdGhlIGZpcnN0IHRhbGx5CisgICAgPj4+IGZvciBpIGluIHJhbmdlKDUpOgorICAgIC4uLiAgICAgYWNjLnNlbmQoaSkKKyAgICAuLi4KKyAgICA+Pj4gYWNjLnNlbmQoTm9uZSkgIyBGaW5pc2ggdGhlIHNlY29uZCB0YWxseQorICAgID4+PiB0YWxsaWVzCisgICAgWzYsIDEwXQorCitUaGUgbWFpbiBwcmluY2lwbGUgZHJpdmluZyB0aGlzIGNoYW5nZSBpcyB0byBhbGxvdyBldmVuIGdlbmVyYXRvcnMgdGhhdCBhcmUKK2Rlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGUgYGBzZW5kYGAgYW5kIGBgdGhyb3dgYCBtZXRob2RzIHRvIGJlIHNwbGl0IGludG8KK211bHRpcGxlIHN1YmdlbmVyYXRvcnMgYXMgZWFzaWx5IGFzIGEgc2luZ2xlIGxhcmdlIGZ1bmN0aW9uIGNhbiBiZSBzcGxpdCBpbnRvCittdWx0aXBsZSBzdWJmdW5jdGlvbnMuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzODBgIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCisgICAgICBQRVAgd3JpdHRlbiBieSBHcmVnIEV3aW5nOyBpbXBsZW1lbnRhdGlvbiBieSBHcmVnIEV3aW5nLCBpbnRlZ3JhdGVkIGludG8KKyAgICAgIDMuMyBieSBSZW5hdWQgQmxhbmNoLCBSeWFuIEtlbGx5IGFuZCBOaWNrIENvZ2hsYW47IGRvY3VtZW50YXRpb24gYnkKKyAgICAgIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbgorCisKK1BFUCA0MDk6IFN1cHByZXNzaW5nIGV4Y2VwdGlvbiBjb250ZXh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQRVAgNDA5IGludHJvZHVjZXMgbmV3IHN5bnRheCB0aGF0IGFsbG93cyB0aGUgZGlzcGxheSBvZiB0aGUgY2hhaW5lZAorZXhjZXB0aW9uIGNvbnRleHQgdG8gYmUgZGlzYWJsZWQuIFRoaXMgYWxsb3dzIGNsZWFuZXIgZXJyb3IgbWVzc2FnZXMgaW4KK2FwcGxpY2F0aW9ucyB0aGF0IGNvbnZlcnQgYmV0d2VlbiBleGNlcHRpb24gdHlwZXM6OgorCisgICAgPj4+IGNsYXNzIEQ6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0cmEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXMgPSBleHRyYQorICAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgIC4uLiAgICAgICAgIHRyeToKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXNbYXR0cl0KKyAgICAuLi4gICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgLi4uICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpIGZyb20gTm9uZQorICAgIC4uLgorICAgID4+PiBEKHt9KS54CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDgsIGluIF9fZ2V0YXR0cl9fCisgICAgQXR0cmlidXRlRXJyb3I6IHgKKworV2l0aG91dCB0aGUgYGBmcm9tIE5vbmVgYCBzdWZmaXggdG8gc3VwcHJlc3MgdGhlIGNhdXNlLCB0aGUgb3JpZ2luYWwKK2V4Y2VwdGlvbiB3b3VsZCBiZSBkaXNwbGF5ZWQgYnkgZGVmYXVsdDo6CisKKyAgICA+Pj4gY2xhc3MgQzoKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYSk6CisgICAgLi4uICAgICAgICAgc2VsZi5fZXh0cmFfYXR0cmlidXRlcyA9IGV4dHJhCisgICAgLi4uICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgLi4uICAgICAgICAgdHJ5OgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFfYXR0cmlidXRlc1thdHRyXQorICAgIC4uLiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAuLi4gICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKKyAgICAuLi4KKyAgICA+Pj4gQyh7fSkueAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDYsIGluIF9fZ2V0YXR0cl9fCisgICAgS2V5RXJyb3I6ICd4JworCisgICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgorCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDgsIGluIF9fZ2V0YXR0cl9fCisgICAgQXR0cmlidXRlRXJyb3I6IHgKKworTm8gZGVidWdnaW5nIGNhcGFiaWxpdHkgaXMgbG9zdCwgYXMgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBjb250ZXh0IHJlbWFpbnMKK2F2YWlsYWJsZSBpZiBuZWVkZWQgKGZvciBleGFtcGxlLCBpZiBhbiBpbnRlcnZlbmluZyBsaWJyYXJ5IGhhcyBpbmNvcnJlY3RseQorc3VwcHJlc3NlZCB2YWx1YWJsZSB1bmRlcmx5aW5nIGRldGFpbHMpOjoKKworICAgID4+PiB0cnk6CisgICAgLi4uICAgICBEKHt9KS54CisgICAgLi4uIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBleGM6CisgICAgLi4uICAgICBwcmludChyZXByKGV4Yy5fX2NvbnRleHRfXykpCisgICAgLi4uCisgICAgS2V5RXJyb3IoJ3gnLCkKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQwOWAgLSBTdXBwcmVzc2luZyBleGNlcHRpb24gY29udGV4dAorICAgICAgUEVQIHdyaXR0ZW4gYnkgRXRoYW4gRnVybWFuOyBpbXBsZW1lbnRlZCBieSBFdGhhbiBGdXJtYW4gYW5kIE5pY2sKKyAgICAgIENvZ2hsYW4uCisKKworUEVQIDQxNDogRXhwbGljaXQgVW5pY29kZSBsaXRlcmFscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gZWFzZSB0aGUgdHJhbnNpdGlvbiBmcm9tIFB5dGhvbiAyIGZvciBVbmljb2RlIGF3YXJlIFB5dGhvbiBhcHBsaWNhdGlvbnMKK3RoYXQgbWFrZSBoZWF2eSB1c2Ugb2YgVW5pY29kZSBsaXRlcmFscywgUHl0aG9uIDMuMyBvbmNlIGFnYWluIHN1cHBvcnRzIHRoZQorImBgdWBgIiBwcmVmaXggZm9yIHN0cmluZyBsaXRlcmFscy4gVGhpcyBwcmVmaXggaGFzIG5vIHNlbWFudGljIHNpZ25pZmljYW5jZQoraW4gUHl0aG9uIDMsIGl0IGlzIHByb3ZpZGVkIHNvbGVseSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBwdXJlbHkgbWVjaGFuaWNhbAorY2hhbmdlcyBpbiBtaWdyYXRpbmcgdG8gUHl0aG9uIDMsIG1ha2luZyBpdCBlYXNpZXIgZm9yIGRldmVsb3BlcnMgdG8gZm9jdXMgb24KK3RoZSBtb3JlIHNpZ25pZmljYW50IHNlbWFudGljIGNoYW5nZXMgKHN1Y2ggYXMgdGhlIHN0cmljdGVyIGRlZmF1bHQKK3NlcGFyYXRpb24gb2YgYmluYXJ5IGFuZCB0ZXh0IGRhdGEpLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDE0YCAtIEV4cGxpY2l0IFVuaWNvZGUgbGl0ZXJhbHMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEFybWluIFJvbmFjaGVyLgorCisKK1BFUCAzMTU1OiBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGdW5jdGlvbnMgYW5kIGNsYXNzIG9iamVjdHMgaGF2ZSBhIG5ldyBgYF9fcXVhbG5hbWVfX2BgIGF0dHJpYnV0ZSByZXByZXNlbnRpbmcKK3RoZSAicGF0aCIgZnJvbSB0aGUgbW9kdWxlIHRvcC1sZXZlbCB0byB0aGVpciBkZWZpbml0aW9uLiAgRm9yIGdsb2JhbCBmdW5jdGlvbnMKK2FuZCBjbGFzc2VzLCB0aGlzIGlzIHRoZSBzYW1lIGFzIGBgX19uYW1lX19gYC4gIEZvciBvdGhlciBmdW5jdGlvbnMgYW5kIGNsYXNzZXMsCitpdCBwcm92aWRlcyBiZXR0ZXIgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhleSB3ZXJlIGFjdHVhbGx5IGRlZmluZWQsIGFuZAoraG93IHRoZXkgbWlnaHQgYmUgYWNjZXNzaWJsZSBmcm9tIHRoZSBnbG9iYWwgc2NvcGUuCisKK0V4YW1wbGUgd2l0aCAobm9uLWJvdW5kKSBtZXRob2RzOjoKKworICAgPj4+IGNsYXNzIEM6CisgICAuLi4gICAgIGRlZiBtZXRoKHNlbGYpOgorICAgLi4uICAgICAgICAgcGFzcworICAgPj4+IEMubWV0aC5fX25hbWVfXworICAgJ21ldGgnCisgICA+Pj4gQy5tZXRoLl9fcXVhbG5hbWVfXworICAgJ0MubWV0aCcKKworRXhhbXBsZSB3aXRoIG5lc3RlZCBjbGFzc2VzOjoKKworICAgPj4+IGNsYXNzIEM6CisgICAuLi4gICAgIGNsYXNzIEQ6CisgICAuLi4gICAgICAgICBkZWYgbWV0aChzZWxmKToKKyAgIC4uLiAgICAgICAgICAgICBwYXNzCisgICAuLi4KKyAgID4+PiBDLkQuX19uYW1lX18KKyAgICdEJworICAgPj4+IEMuRC5fX3F1YWxuYW1lX18KKyAgICdDLkQnCisgICA+Pj4gQy5ELm1ldGguX19uYW1lX18KKyAgICdtZXRoJworICAgPj4+IEMuRC5tZXRoLl9fcXVhbG5hbWVfXworICAgJ0MuRC5tZXRoJworCitFeGFtcGxlIHdpdGggbmVzdGVkIGZ1bmN0aW9uczo6CisKKyAgID4+PiBkZWYgb3V0ZXIoKToKKyAgIC4uLiAgICAgZGVmIGlubmVyKCk6CisgICAuLi4gICAgICAgICBwYXNzCisgICAuLi4gICAgIHJldHVybiBpbm5lcgorICAgLi4uCisgICA+Pj4gb3V0ZXIoKS5fX25hbWVfXworICAgJ2lubmVyJworICAgPj4+IG91dGVyKCkuX19xdWFsbmFtZV9fCisgICAnb3V0ZXIuPGxvY2Fscz4uaW5uZXInCisKK1RoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhvc2Ugb2JqZWN0cyBpcyBhbHNvIGNoYW5nZWQgdG8gaW5jbHVkZSB0aGUKK25ldywgbW9yZSBwcmVjaXNlIGluZm9ybWF0aW9uOjoKKworICAgPj4+IHN0cihDLkQpCisgICAiPGNsYXNzICdfX21haW5fXy5DLkQnPiIKKyAgID4+PiBzdHIoQy5ELm1ldGgpCisgICAnPGZ1bmN0aW9uIEMuRC5tZXRoIGF0IDB4N2Y0NmI5ZmUzMWUwPicKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxNTVgIC0gUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEFudG9pbmUgUGl0cm91LgorCisKKy4uIF9wZXAtNDEyOgorCitQRVAgNDEyOiBLZXktU2hhcmluZyBEaWN0aW9uYXJ5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RpY3Rpb25hcmllcyB1c2VkIGZvciB0aGUgc3RvcmFnZSBvZiBvYmplY3RzJyBhdHRyaWJ1dGVzIGFyZSBub3cgYWJsZSB0bworc2hhcmUgcGFydCBvZiB0aGVpciBpbnRlcm5hbCBzdG9yYWdlIGJldHdlZW4gZWFjaCBvdGhlciAobmFtZWx5LCB0aGUgcGFydAord2hpY2ggc3RvcmVzIHRoZSBrZXlzIGFuZCB0aGVpciByZXNwZWN0aXZlIGhhc2hlcykuICBUaGlzIHJlZHVjZXMgdGhlIG1lbW9yeQorY29uc3VtcHRpb24gb2YgcHJvZ3JhbXMgY3JlYXRpbmcgbWFueSBpbnN0YW5jZXMgb2Ygbm9uLWJ1aWx0aW4gdHlwZXMuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MTJgIC0gS2V5LVNoYXJpbmcgRGljdGlvbmFyeQorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IE1hcmsgU2hhbm5vbi4KKworCitQRVAgMzYyOiBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgbmV3IGZ1bmN0aW9uIDpmdW5jOmBpbnNwZWN0LnNpZ25hdHVyZWAgbWFrZXMgaW50cm9zcGVjdGlvbiBvZiBweXRob24KK2NhbGxhYmxlcyBlYXN5IGFuZCBzdHJhaWdodGZvcndhcmQuICBBIGJyb2FkIHJhbmdlIG9mIGNhbGxhYmxlcyBpcyBzdXBwb3J0ZWQ6CitweXRob24gZnVuY3Rpb25zLCBkZWNvcmF0ZWQgb3Igbm90LCBjbGFzc2VzLCBhbmQgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYAorb2JqZWN0cy4gIE5ldyBjbGFzc2VzIDpjbGFzczpgaW5zcGVjdC5TaWduYXR1cmVgLCA6Y2xhc3M6YGluc3BlY3QuUGFyYW1ldGVyYAorYW5kIDpjbGFzczpgaW5zcGVjdC5Cb3VuZEFyZ3VtZW50c2AgaG9sZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbCBzaWduYXR1cmVzLAorc3VjaCBhcywgYW5ub3RhdGlvbnMsIGRlZmF1bHQgdmFsdWVzLCBwYXJhbWV0ZXJzIGtpbmRzLCBhbmQgYm91bmQgYXJndW1lbnRzLAord2hpY2ggY29uc2lkZXJhYmx5IHNpbXBsaWZpZXMgd3JpdGluZyBkZWNvcmF0b3JzIGFuZCBhbnkgY29kZSB0aGF0IHZhbGlkYXRlcworb3IgYW1lbmRzIGNhbGxpbmcgc2lnbmF0dXJlcyBvciBhcmd1bWVudHMuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzNjJgOiAtICBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0CisgICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24sIFl1cnkgU2VsaXZhbm92LCBMYXJyeSBIYXN0aW5ncywgSml3b24gU2VvOworICAgICAgaW1wbGVtZW50ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKworUEVQIDQyMTogQWRkaW5nIHN5cy5pbXBsZW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIG5ldyBhdHRyaWJ1dGUgb24gdGhlIDptb2Q6YHN5c2AgbW9kdWxlIGV4cG9zZXMgZGV0YWlscyBzcGVjaWZpYyB0byB0aGUKK2ltcGxlbWVudGF0aW9uIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBpbnRlcnByZXRlci4gIFRoZSBpbml0aWFsIHNldCBvZgorYXR0cmlidXRlcyBvbiA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uYCBhcmUgYGBuYW1lYGAsIGBgdmVyc2lvbmBgLAorYGBoZXh2ZXJzaW9uYGAsIGFuZCBgYGNhY2hlX3RhZ2BgLgorCitUaGUgaW50ZW50aW9uIG9mIGBgc3lzLmltcGxlbWVudGF0aW9uYGAgaXMgdG8gY29uc29saWRhdGUgaW50byBvbmUgbmFtZXNwYWNlCit0aGUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZGF0YSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhpcyBhbGxvd3MKK2RpZmZlcmVudCBQeXRob24gaW1wbGVtZW50YXRpb25zIHRvIHNoYXJlIGEgc2luZ2xlIHN0YW5kYXJkIGxpYnJhcnkgY29kZSBiYXNlCittdWNoIG1vcmUgZWFzaWx5LiAgSW4gaXRzIGluaXRpYWwgc3RhdGUsIGBgc3lzLmltcGxlbWVudGF0aW9uYGAgaG9sZHMgb25seSBhCitzbWFsbCBwb3J0aW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBkYXRhLiAgT3ZlciB0aW1lIHRoYXQgcmF0aW8gd2lsbAorc2hpZnQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgc3RhbmRhcmQgbGlicmFyeSBtb3JlIHBvcnRhYmxlLgorCitPbmUgZXhhbXBsZSBvZiBpbXByb3ZlZCBzdGFuZGFyZCBsaWJyYXJ5IHBvcnRhYmlsaXR5IGlzIGBgY2FjaGVfdGFnYGAuICBBcyBvZgorUHl0aG9uIDMuMywgYGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYGAgaXMgdXNlZCBieSA6bW9kOmBpbXBvcnRsaWJgIHRvCitzdXBwb3J0IDpwZXA6YDMxNDdgIGNvbXBsaWFuY2UuICBBbnkgUHl0aG9uIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcworYGBpbXBvcnRsaWJgYCBmb3IgaXRzIGJ1aWx0LWluIGltcG9ydCBzeXN0ZW0gbWF5IHVzZSBgYGNhY2hlX3RhZ2BgIHRvIGNvbnRyb2wKK3RoZSBjYWNoaW5nIGJlaGF2aW9yIGZvciBtb2R1bGVzLgorCitTaW1wbGVOYW1lc3BhY2UKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgYGBzeXMuaW1wbGVtZW50YXRpb25gYCBhbHNvIGludHJvZHVjZXMgYSBuZXcgdHlwZSB0bworUHl0aG9uOiA6Y2xhc3M6YHR5cGVzLlNpbXBsZU5hbWVzcGFjZWAuICBJbiBjb250cmFzdCB0byBhIG1hcHBpbmctYmFzZWQKK25hbWVzcGFjZSwgbGlrZSA6Y2xhc3M6YGRpY3RgLCBgYFNpbXBsZU5hbWVzcGFjZWBgIGlzIGF0dHJpYnV0ZS1iYXNlZCwgbGlrZQorOmNsYXNzOmBvYmplY3RgLiAgSG93ZXZlciwgdW5saWtlIGBgb2JqZWN0YGAsIGBgU2ltcGxlTmFtZXNwYWNlYGAgaW5zdGFuY2VzCithcmUgd3JpdGFibGUuICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBhZGQsIHJlbW92ZSwgYW5kIG1vZGlmeSB0aGUgbmFtZXNwYWNlCit0aHJvdWdoIG5vcm1hbCBhdHRyaWJ1dGUgYWNjZXNzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDIxYCAtIEFkZGluZyBzeXMuaW1wbGVtZW50YXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFNub3cuCisKKworLi4gX2ltcG9ydGxpYjoKKworVXNpbmcgaW1wb3J0bGliIGFzIHRoZSBJbXBsZW1lbnRhdGlvbiBvZiBJbXBvcnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6aXNzdWU6YDIzNzdgIC0gUmVwbGFjZSBfX2ltcG9ydF9fIHcvIGltcG9ydGxpYi5fX2ltcG9ydF9fCis6aXNzdWU6YDEzOTU5YCAtIFJlLWltcGxlbWVudCBwYXJ0cyBvZiA6bW9kOmBpbXBgIGluIHB1cmUgUHl0aG9uCis6aXNzdWU6YDE0NjA1YCAtIE1ha2UgaW1wb3J0IG1hY2hpbmVyeSBleHBsaWNpdAorOmlzc3VlOmAxNDY0NmAgLSBSZXF1aXJlIGxvYWRlcnMgc2V0IF9fbG9hZGVyX18gYW5kIF9fcGFja2FnZV9fCisKK1RoZSA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gaXMgbm93IHBvd2VyZWQgYnkgOmZ1bmM6YGltcG9ydGxpYi5fX2ltcG9ydF9fYC4KK1RoaXMgd29yayBsZWFkcyB0byB0aGUgY29tcGxldGlvbiBvZiAicGhhc2UgMiIgb2YgOnBlcDpgMzAyYC4gVGhlcmUgYXJlCittdWx0aXBsZSBiZW5lZml0cyB0byB0aGlzIGNoYW5nZS4gRmlyc3QsIGl0IGhhcyBhbGxvd2VkIGZvciBtb3JlIG9mIHRoZQorbWFjaGluZXJ5IHBvd2VyaW5nIGltcG9ydCB0byBiZSBleHBvc2VkIGluc3RlYWQgb2YgYmVpbmcgaW1wbGljaXQgYW5kIGhpZGRlbgord2l0aGluIHRoZSBDIGNvZGUuIEl0IGFsc28gcHJvdmlkZXMgYSBzaW5nbGUgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBQeXRob24gVk1zCitzdXBwb3J0aW5nIFB5dGhvbiAzLjMgdG8gdXNlLCBoZWxwaW5nIHRvIGVuZCBhbnkgVk0tc3BlY2lmaWMgZGV2aWF0aW9ucyBpbgoraW1wb3J0IHNlbWFudGljcy4gQW5kIGZpbmFsbHkgaXQgZWFzZXMgdGhlIG1haW50ZW5hbmNlIG9mIGltcG9ydCwgYWxsb3dpbmcgZm9yCitmdXR1cmUgZ3Jvd3RoIHRvIG9jY3VyLgorCitGb3IgdGhlIGNvbW1vbiB1c2VyLCB0aGVyZSBzaG91bGQgYmUgbm8gdmlzaWJsZSBjaGFuZ2UgaW4gc2VtYW50aWNzLiAgRm9yCit0aG9zZSB3aG9zZSBjb2RlIGN1cnJlbnRseSBtYW5pcHVsYXRlcyBpbXBvcnQgb3IgY2FsbHMgaW1wb3J0Citwcm9ncmFtbWF0aWNhbGx5LCB0aGUgY29kZSBjaGFuZ2VzIHRoYXQgbWlnaHQgcG9zc2libHkgYmUgcmVxdWlyZWQgYXJlIGNvdmVyZWQKK2luIHRoZSBgUG9ydGluZyBQeXRob24gY29kZWBfIHNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudC4KKworTmV3IEFQSXMKKy0tLS0tLS0tCitPbmUgb2YgdGhlIGxhcmdlIGJlbmVmaXRzIG9mIHRoaXMgd29yayBpcyB0aGUgZXhwb3N1cmUgb2Ygd2hhdCBnb2VzIGludG8KK21ha2luZyB0aGUgaW1wb3J0IHN0YXRlbWVudCB3b3JrLiBUaGF0IG1lYW5zIHRoZSB2YXJpb3VzIGltcG9ydGVycyB0aGF0IHdlcmUKK29uY2UgaW1wbGljaXQgYXJlIG5vdyBmdWxseSBleHBvc2VkIGFzIHBhcnQgb2YgdGhlIDptb2Q6YGltcG9ydGxpYmAgcGFja2FnZS4KKworVGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBkZWZpbmVkIGluIDptb2Q6YGltcG9ydGxpYi5hYmNgIGhhdmUgYmVlbiBleHBhbmRlZAordG8gcHJvcGVybHkgZGVsaW5lYXRlIGJldHdlZW4gOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJzIDxtZXRhIHBhdGggZmluZGVyPmAKK2FuZCA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJzIDxwYXRoIGVudHJ5IGZpbmRlcj5gIGJ5IGludHJvZHVjaW5nCis6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcmAsIHJlc3BlY3RpdmVseS4gVGhlIG9sZCBBQkMgb2YKKzpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGlzIG5vdyBvbmx5IHByb3ZpZGVkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQorYW5kIGRvZXMgbm90IGVuZm9yY2UgYW55IG1ldGhvZCByZXF1aXJlbWVudHMuCisKK0luIHRlcm1zIG9mIGZpbmRlcnMsIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyYCBleHBvc2VzIHRoZQorbWVjaGFuaXNtIHVzZWQgdG8gc2VhcmNoIGZvciBzb3VyY2UgYW5kIGJ5dGVjb2RlIGZpbGVzIG9mIGEgbW9kdWxlLiBQcmV2aW91c2x5Cit0aGlzIGNsYXNzIHdhcyBhbiBpbXBsaWNpdCBtZW1iZXIgb2YgOmF0dHI6YHN5cy5wYXRoX2hvb2tzYC4KKworRm9yIGxvYWRlcnMsIHRoZSBuZXcgYWJzdHJhY3QgYmFzZSBjbGFzcyA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcmAgaGVscHMKK3dyaXRlIGEgbG9hZGVyIHRoYXQgdXNlcyB0aGUgZmlsZSBzeXN0ZW0gYXMgdGhlIHN0b3JhZ2UgbWVjaGFuaXNtIGZvciBhIG1vZHVsZSdzCitjb2RlLiBUaGUgbG9hZGVyIGZvciBzb3VyY2UgZmlsZXMKKyg6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcmApLCBzb3VyY2VsZXNzIGJ5dGVjb2RlIGZpbGVzCisoOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyYCksIGFuZCBleHRlbnNpb24gbW9kdWxlcworKDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYCkgYXJlIG5vdyBhdmFpbGFibGUgZm9yCitkaXJlY3QgdXNlLgorCis6ZXhjOmBJbXBvcnRFcnJvcmAgbm93IGhhcyBgYG5hbWVgYCBhbmQgYGBwYXRoYGAgYXR0cmlidXRlcyB3aGljaCBhcmUgc2V0IHdoZW4KK3RoZXJlIGlzIHJlbGV2YW50IGRhdGEgdG8gcHJvdmlkZS4gVGhlIG1lc3NhZ2UgZm9yIGZhaWxlZCBpbXBvcnRzIHdpbGwgYWxzbworcHJvdmlkZSB0aGUgZnVsbCBuYW1lIG9mIHRoZSBtb2R1bGUgbm93IGluc3RlYWQgb2YganVzdCB0aGUgdGFpbCBlbmQgb2YgdGhlCittb2R1bGUncyBuYW1lLgorCitUaGUgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AgZnVuY3Rpb24gd2lsbCBub3cgY2FsbCB0aGUgbWV0aG9kIHdpdGgKK3RoZSBzYW1lIG5hbWUgb24gYWxsIGZpbmRlcnMgY2FjaGVkIGluIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgdG8gaGVscAorY2xlYW4gdXAgYW55IHN0b3JlZCBzdGF0ZSBhcyBuZWNlc3NhcnkuCisKK1Zpc2libGUgQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBwb3RlbnRpYWwgcmVxdWlyZWQgY2hhbmdlcyB0byBjb2RlLCBzZWUgdGhlIGBQb3J0aW5nIFB5dGhvbiBjb2RlYF8KK3NlY3Rpb24uCisKK0JleW9uZCB0aGUgZXhwYW5zZSBvZiB3aGF0IDptb2Q6YGltcG9ydGxpYmAgbm93IGV4cG9zZXMsIHRoZXJlIGFyZSBvdGhlcgordmlzaWJsZSBjaGFuZ2VzIHRvIGltcG9ydC4gVGhlIGJpZ2dlc3QgaXMgdGhhdCA6YXR0cjpgc3lzLm1ldGFfcGF0aGAgYW5kCis6YXR0cjpgc3lzLnBhdGhfaG9va3NgIG5vdyBzdG9yZSBhbGwgb2YgdGhlIG1ldGEgcGF0aCBmaW5kZXJzIGFuZCBwYXRoIGVudHJ5Citob29rcyB1c2VkIGJ5IGltcG9ydC4gIFByZXZpb3VzbHkgdGhlIGZpbmRlcnMgd2VyZSBpbXBsaWNpdCBhbmQgaGlkZGVuIHdpdGhpbgordGhlIEMgY29kZSBvZiBpbXBvcnQgaW5zdGVhZCBvZiBiZWluZyBkaXJlY3RseSBleHBvc2VkLiBUaGlzIG1lYW5zIHRoYXQgb25lIGNhbgorbm93IGVhc2lseSByZW1vdmUgb3IgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgdmFyaW91cyBmaW5kZXJzIHRvIGZpdCBvbmUncyBuZWVkcy4KKworQW5vdGhlciBjaGFuZ2UgaXMgdGhhdCBhbGwgbW9kdWxlcyBoYXZlIGEgYGBfX2xvYWRlcl9fYGAgYXR0cmlidXRlLCBzdG9yaW5nIHRoZQorbG9hZGVyIHVzZWQgdG8gY3JlYXRlIHRoZSBtb2R1bGUuIDpwZXA6YDMwMmAgaGFzIGJlZW4gdXBkYXRlZCB0byBtYWtlIHRoaXMKK2F0dHJpYnV0ZSBtYW5kYXRvcnkgZm9yIGxvYWRlcnMgdG8gaW1wbGVtZW50LCBzbyBpbiB0aGUgZnV0dXJlIG9uY2UgM3JkLXBhcnR5Citsb2FkZXJzIGhhdmUgYmVlbiB1cGRhdGVkIHBlb3BsZSB3aWxsIGJlIGFibGUgdG8gcmVseSBvbiB0aGUgZXhpc3RlbmNlIG9mIHRoZQorYXR0cmlidXRlLiBVbnRpbCBzdWNoIHRpbWUsIHRob3VnaCwgaW1wb3J0IGlzIHNldHRpbmcgdGhlIG1vZHVsZSBwb3N0LWxvYWQuCisKK0xvYWRlcnMgYXJlIGFsc28gbm93IGV4cGVjdGVkIHRvIHNldCB0aGUgYGBfX3BhY2thZ2VfX2BgIGF0dHJpYnV0ZSBmcm9tCis6cGVwOmAzNjZgLiBPbmNlIGFnYWluLCBpbXBvcnQgaXRzZWxmIGlzIGFscmVhZHkgc2V0dGluZyB0aGlzIG9uIGFsbCBsb2FkZXJzCitmcm9tIDptb2Q6YGltcG9ydGxpYmAgYW5kIGltcG9ydCBpdHNlbGYgaXMgc2V0dGluZyB0aGUgYXR0cmlidXRlIHBvc3QtbG9hZC4KKworYGBOb25lYGAgaXMgbm93IGluc2VydGVkIGludG8gOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB3aGVuIG5vIGZpbmRlcgorY2FuIGJlIGZvdW5kIG9uIDphdHRyOmBzeXMucGF0aF9ob29rc2AuIFNpbmNlIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgaXMgbm90CitkaXJlY3RseSBleHBvc2VkIG9uIDphdHRyOmBzeXMucGF0aF9ob29rc2AgaXQgY291bGQgbm8gbG9uZ2VyIGJlIHJlbGllZCB1cG9uIHRvCithbHdheXMgYmUgYXZhaWxhYmxlIHRvIHVzZSBhcyBhIHZhbHVlIHJlcHJlc2VudGluZyBubyBmaW5kZXIgZm91bmQuCisKK0FsbCBvdGhlciBjaGFuZ2VzIHJlbGF0ZSB0byBzZW1hbnRpYyBjaGFuZ2VzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvCitjb25zaWRlcmF0aW9uIHdoZW4gdXBkYXRpbmcgY29kZSBmb3IgUHl0aG9uIDMuMywgYW5kIHRodXMgc2hvdWxkIGJlIHJlYWQgYWJvdXQKK2luIHRoZSBgUG9ydGluZyBQeXRob24gY29kZWBfIHNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudC4KKworKEltcGxlbWVudGF0aW9uIGJ5IEJyZXR0IENhbm5vbikKKworCitPdGhlciBMYW5ndWFnZSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgc21hbGxlciBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvcmUgUHl0aG9uIGxhbmd1YWdlIGFyZToKKworKiBBZGRlZCBzdXBwb3J0IGZvciBVbmljb2RlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLgorICBCb3RoIDpmdW5jOmB1bmljb2RlZGF0YS5sb29rdXAoKWAgYW5kIGBgJ1xOey4uLn0nYGAgbm93IHJlc29sdmUgbmFtZSBhbGlhc2VzLAorICBhbmQgOmZ1bmM6YHVuaWNvZGVkYXRhLmxvb2t1cCgpYCByZXNvbHZlcyBuYW1lZCBzZXF1ZW5jZXMgdG9vLgorCisgIChDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgaW4gOmlzc3VlOmAxMjc1M2ApCisKKyogVW5pY29kZSBkYXRhYmFzZSB1cGRhdGVkIHRvIFVDRCB2ZXJzaW9uIDYuMS4wCisKKyogRXF1YWxpdHkgY29tcGFyaXNvbnMgb24gOmZ1bmM6YHJhbmdlYCBvYmplY3RzIG5vdyByZXR1cm4gYSByZXN1bHQgcmVmbGVjdGluZworICB0aGUgZXF1YWxpdHkgb2YgdGhlIHVuZGVybHlpbmcgc2VxdWVuY2VzIGdlbmVyYXRlZCBieSB0aG9zZSByYW5nZSBvYmplY3RzLgorICAoOmlzc3VlOmAxMzIwMWApCisKKyogVGhlIGBgY291bnQoKWBgLCBgYGZpbmQoKWBgLCBgYHJmaW5kKClgYCwgYGBpbmRleCgpYGAgYW5kIGBgcmluZGV4KClgYAorICBtZXRob2RzIG9mIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBub3cgYWNjZXB0IGFuCisgIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyNTUgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuIGluIDppc3N1ZTpgMTIxNzBgKQorCisqIFRoZSBgYHJqdXN0KClgYCwgYGBsanVzdCgpYGAsIGFuZCBgYGNlbnRlcigpYGAgbWV0aG9kcyBvZiA6Y2xhc3M6YGJ5dGVzYAorICBhbmQgOmNsYXNzOmBieXRlYXJyYXlgIG5vdyBhY2NlcHQgYSA6Y2xhc3M6YGJ5dGVhcnJheWAgZm9yIHRoZSBgYGZpbGxgYAorICBhcmd1bWVudC4gIChDb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbiBpbiA6aXNzdWU6YDEyMzgwYC4pCisKKyogTmV3IG1ldGhvZHMgaGF2ZSBiZWVuIGFkZGVkIHRvIDpjbGFzczpgbGlzdGAgYW5kIDpjbGFzczpgYnl0ZWFycmF5YDoKKyAgYGBjb3B5KClgYCBhbmQgYGBjbGVhcigpYGAgKDppc3N1ZTpgMTA1MTZgKS4gIENvbnNlcXVlbnRseSwKKyAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAgbm93IGFsc28gZGVmaW5lcyBhCisgIDptZXRoOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZS5jbGVhcmAgbWV0aG9kICg6aXNzdWU6YDExMzg4YCkuCisKKyogUmF3IGJ5dGVzIGxpdGVyYWxzIGNhbiBub3cgYmUgd3JpdHRlbiBgYHJiIi4uLiJgYCBhcyB3ZWxsIGFzIGBgYnIiLi4uImBgLgorCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNzQ4YC4pCisKKyogOm1ldGg6YGRpY3Quc2V0ZGVmYXVsdGAgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LCBtYWtpbmcKKyAgaXQgYXRvbWljIHdoZW4gdXNlZCB3aXRoIGJ1aWx0LWluIHR5cGVzLgorCisgIChDb250cmlidXRlZCBieSBGaWxpcCBHcnVzemN6ecWEc2tpIGluIDppc3N1ZTpgMTM1MjFgLikKKworKiBUaGUgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgd2hlbiBhIGZ1bmN0aW9uIGNhbGwgZG9lcyBub3QgbWF0Y2ggdGhlIGZ1bmN0aW9uCisgIHNpZ25hdHVyZSBoYXZlIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KKworICAoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24uKQorCisKK0EgRmluZXItR3JhaW5lZCBJbXBvcnQgTG9jaworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1ByZXZpb3VzIHZlcnNpb25zIG9mIENQeXRob24gaGF2ZSBhbHdheXMgcmVsaWVkIG9uIGEgZ2xvYmFsIGltcG9ydCBsb2NrLgorVGhpcyBsZWQgdG8gdW5leHBlY3RlZCBhbm5veWFuY2VzLCBzdWNoIGFzIGRlYWRsb2NrcyB3aGVuIGltcG9ydGluZyBhIG1vZHVsZQord291bGQgdHJpZ2dlciBjb2RlIGV4ZWN1dGlvbiBpbiBhIGRpZmZlcmVudCB0aHJlYWQgYXMgYSBzaWRlLWVmZmVjdC4KK0NsdW1zeSB3b3JrYXJvdW5kcyB3ZXJlIHNvbWV0aW1lcyBlbXBsb3llZCwgc3VjaCBhcyB0aGUKKzpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2tgIEMgQVBJIGZ1bmN0aW9uLgorCitJbiBQeXRob24gMy4zLCBpbXBvcnRpbmcgYSBtb2R1bGUgdGFrZXMgYSBwZXItbW9kdWxlIGxvY2suICBUaGlzIGNvcnJlY3RseQorc2VyaWFsaXplcyBpbXBvcnRhdGlvbiBvZiBhIGdpdmVuIG1vZHVsZSBmcm9tIG11bHRpcGxlIHRocmVhZHMgKHByZXZlbnRpbmcKK3RoZSBleHBvc3VyZSBvZiBpbmNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgbW9kdWxlcyksIHdoaWxlIGVsaW1pbmF0aW5nIHRoZQorYWZvcmVtZW50aW9uZWQgYW5ub3lhbmNlcy4KKworKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgOTI2MGAuKQorCisKK0J1aWx0aW4gZnVuY3Rpb25zIGFuZCB0eXBlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyogOmZ1bmM6YG9wZW5gIGdldHMgYSBuZXcgKm9wZW5lciogcGFyYW1ldGVyOiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IKKyAgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLAorICAqZmxhZ3MqKS4gSXQgY2FuIGJlIHVzZWQgdG8gdXNlIGN1c3RvbSBmbGFncyBsaWtlIDpkYXRhOmBvcy5PX0NMT0VYRUNgIGZvcgorICBleGFtcGxlLiBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZDogb3BlbiBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uLCBmYWlsaW5nIGlmCisgIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLgorKiA6ZnVuYzpgcHJpbnRgOiBhZGRlZCB0aGUgKmZsdXNoKiBrZXl3b3JkIGFyZ3VtZW50LiBJZiB0aGUgKmZsdXNoKiBrZXl3b3JkCisgIGFyZ3VtZW50IGlzIHRydWUsIHRoZSBzdHJlYW0gaXMgZm9yY2libHkgZmx1c2hlZC4KKyogOmZ1bmM6YGhhc2hgOiBoYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzZWUKKyAgOm1ldGg6YG9iamVjdC5fX2hhc2hfX2AgYW5kIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYC4KKyogVGhlIDpjbGFzczpgc3RyYCB0eXBlIGdldHMgYSBuZXcgOm1ldGg6YH5zdHIuY2FzZWZvbGRgIG1ldGhvZDogcmV0dXJuIGEKKyAgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcsIGNhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmUgdXNlZCBmb3IgY2FzZWxlc3MKKyAgbWF0Y2hpbmcuIEZvciBleGFtcGxlLCBgYCfDnycuY2FzZWZvbGQoKWBgIHJldHVybnMgYGAnc3MnYGAuCisqIFRoZSBzZXF1ZW5jZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHN1YnN0YW50aWFsbHkgcmV3cml0dGVuIHRvIGJldHRlcgorICBleHBsYWluIHRoZSBiaW5hcnkvdGV4dCBzZXF1ZW5jZSBkaXN0aW5jdGlvbiBhbmQgdG8gcHJvdmlkZSBzcGVjaWZpYworICBkb2N1bWVudGF0aW9uIHNlY3Rpb25zIGZvciB0aGUgaW5kaXZpZHVhbCBidWlsdGluIHNlcXVlbmNlIHR5cGVzCisgICg6aXNzdWU6YDQ5NjZgKQorCisKK05ldyBNb2R1bGVzCis9PT09PT09PT09PQorCitmYXVsdGhhbmRsZXIKKy0tLS0tLS0tLS0tLQorCitUaGlzIG5ldyBkZWJ1ZyBtb2R1bGUgOm1vZDpgZmF1bHRoYW5kbGVyYCBjb250YWlucyBmdW5jdGlvbnMgdG8gZHVtcCBQeXRob24gdHJhY2ViYWNrcyBleHBsaWNpdGx5LAorb24gYSBmYXVsdCAoYSBjcmFzaCBsaWtlIGEgc2VnbWVudGF0aW9uIGZhdWx0KSwgYWZ0ZXIgYSB0aW1lb3V0LCBvciBvbiBhIHVzZXIKK3NpZ25hbC4gQ2FsbCA6ZnVuYzpgZmF1bHRoYW5kbGVyLmVuYWJsZWAgdG8gaW5zdGFsbCBmYXVsdCBoYW5kbGVycyBmb3IgdGhlCis6Y29uc3Q6YFNJR1NFR1ZgLCA6Y29uc3Q6YFNJR0ZQRWAsIDpjb25zdDpgU0lHQUJSVGAsIDpjb25zdDpgU0lHQlVTYCwgYW5kCis6Y29uc3Q6YFNJR0lMTGAgc2lnbmFscy4gWW91IGNhbiBhbHNvIGVuYWJsZSB0aGVtIGF0IHN0YXJ0dXAgYnkgc2V0dGluZyB0aGUKKzplbnZ2YXI6YFBZVEhPTkZBVUxUSEFORExFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgYnkgdXNpbmcgOm9wdGlvbjpgLVhgCitgYGZhdWx0aGFuZGxlcmBgIGNvbW1hbmQgbGluZSBvcHRpb24uCisKK0V4YW1wbGUgb2YgYSBzZWdtZW50YXRpb24gZmF1bHQgb24gTGludXg6IDo6CisKKyAgICAkIHB5dGhvbiAtcSAtWCBmYXVsdGhhbmRsZXIKKyAgICA+Pj4gaW1wb3J0IGN0eXBlcworICAgID4+PiBjdHlwZXMuc3RyaW5nX2F0KDApCisgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBTZWdtZW50YXRpb24gZmF1bHQKKworICAgIEN1cnJlbnQgdGhyZWFkIDB4MDAwMDdmYjg5OWYzOTcwMDoKKyAgICAgIEZpbGUgIi9ob21lL3B5dGhvbi9jcHl0aG9uL0xpYi9jdHlwZXMvX19pbml0X18ucHkiLCBsaW5lIDQ4NiBpbiBzdHJpbmdfYXQKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEgaW4gPG1vZHVsZT4KKyAgICBTZWdtZW50YXRpb24gZmF1bHQKKworCitpcGFkZHJlc3MKKy0tLS0tLS0tLQorCitUaGUgbmV3IDptb2Q6YGlwYWRkcmVzc2AgbW9kdWxlIHByb3ZpZGVzIHRvb2xzIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nCitvYmplY3RzIHJlcHJlc2VudGluZyBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcywgbmV0d29ya3MgYW5kIGludGVyZmFjZXMgKGkuZS4KK2FuIElQIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgSVAgc3VibmV0KS4KKworKENvbnRyaWJ1dGVkIGJ5IEdvb2dsZSBhbmQgUGV0ZXIgTW9vZHkgaW4gOnBlcDpgMzE0NGApCisKK2x6bWEKKy0tLS0KKworVGhlIG5ld2x5LWFkZGVkIDptb2Q6YGx6bWFgIG1vZHVsZSBwcm92aWRlcyBkYXRhIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uCit1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0sIGluY2x1ZGluZyBzdXBwb3J0IGZvciB0aGUgYGAueHpgYCBhbmQgYGAubHptYWBgCitmaWxlIGZvcm1hdHMuCisKKyhDb250cmlidXRlZCBieSBOYWRlZW0gVmF3ZGEgYW5kIFBlciDDmHl2aW5kIEthcmxzZW4gaW4gOmlzc3VlOmA2NzE1YCkKKworCitJbXByb3ZlZCBNb2R1bGVzCis9PT09PT09PT09PT09PT09CisKK2FiYworLS0tCisKK0ltcHJvdmVkIHN1cHBvcnQgZm9yIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBjb250YWluaW5nIGRlc2NyaXB0b3JzIGNvbXBvc2VkIHdpdGgKK2Fic3RyYWN0IG1ldGhvZHMuIFRoZSByZWNvbW1lbmRlZCBhcHByb2FjaCB0byBkZWNsYXJpbmcgYWJzdHJhY3QgZGVzY3JpcHRvcnMgaXMKK25vdyB0byBwcm92aWRlIDphdHRyOmBfX2lzYWJzdHJhY3RtZXRob2RfX2AgYXMgYSBkeW5hbWljYWxseSB1cGRhdGVkCitwcm9wZXJ0eS4gVGhlIGJ1aWx0LWluIGRlc2NyaXB0b3JzIGhhdmUgYmVlbiB1cGRhdGVkIGFjY29yZGluZ2x5LgorCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3Rwcm9wZXJ0eWAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlIDpjbGFzczpgcHJvcGVydHlgCisgICAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgY2xhc3NtZXRob2RgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBzdGF0aWNtZXRob2RgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKworKENvbnRyaWJ1dGVkIGJ5IERhcnJlbiBEYWxlIGluIDppc3N1ZTpgMTE2MTBgKQorCis6bWV0aDpgYWJjLkFCQ01ldGEucmVnaXN0ZXJgIG5vdyByZXR1cm5zIHRoZSByZWdpc3RlcmVkIHN1YmNsYXNzLCB3aGljaCBtZWFucworaXQgY2FuIG5vdyBiZSB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yICg6aXNzdWU6YDEwODY4YCkuCisKKworYXJyYXkKKy0tLS0tCisKK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlIHN1cHBvcnRzIHRoZSA6Yzp0eXBlOmBsb25nIGxvbmdgIHR5cGUgdXNpbmcgYGBxYGAgYW5kCitgYFFgYCB0eXBlIGNvZGVzLgorCisoQ29udHJpYnV0ZWQgYnkgT3JlbiBUaXJvc2ggYW5kIEhpcm9rYXp1IFlhbWFtb3RvIGluIDppc3N1ZTpgMTE3MjcxMWApCisKKworYmFzZTY0CistLS0tLS0KKworQVNDSUktb25seSBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdyBhY2NlcHRlZCBieSB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mIHRoZQorOm1vZDpgYmFzZTY0YCBtb2Rlcm4gaW50ZXJmYWNlLiBGb3IgZXhhbXBsZSwgYGBiYXNlNjQuYjY0ZGVjb2RlKCdZV0pqJylgYAorcmV0dXJucyBgYGInYWJjJ2BgLiAgKENvbnRyaWJ1dGVkIGJ5IENhdGFsaW4gSWFjb2IgaW4gOmlzc3VlOmAxMzY0MWAuKQorCisKK2JpbmFzY2lpCistLS0tLS0tLQorCitJbiBhZGRpdGlvbiB0byB0aGUgYmluYXJ5IG9iamVjdHMgdGhleSBub3JtYWxseSBhY2NlcHQsIHRoZSBgYGEyYl9gYCBmdW5jdGlvbnMKK25vdyBhbGwgYWxzbyBhY2NlcHQgQVNDSUktb25seSBzdHJpbmdzIGFzIGlucHV0LiAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUKK1BpdHJvdSBpbiA6aXNzdWU6YDEzNjM3YC4pCisKKworYnoyCistLS0KKworVGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGhhcyBiZWVuIHJld3JpdHRlbiBmcm9tIHNjcmF0Y2guIEluIHRoZSBwcm9jZXNzLCBzZXZlcmFsCituZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkOgorCisqIE5ldyA6ZnVuYzpgYnoyLm9wZW5gIGZ1bmN0aW9uOiBvcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvcgorICB0ZXh0IG1vZGUuCisKKyogOmNsYXNzOmBiejIuQloyRmlsZWAgY2FuIG5vdyByZWFkIGZyb20gYW5kIHdyaXRlIHRvIGFyYml0cmFyeSBmaWxlLWxpa2UKKyAgb2JqZWN0cywgYnkgbWVhbnMgb2YgaXRzIGNvbnN0cnVjdG9yJ3MgKmZpbGVvYmoqIGFyZ3VtZW50LgorCisgIChDb250cmlidXRlZCBieSBOYWRlZW0gVmF3ZGEgaW4gOmlzc3VlOmA1ODYzYCkKKworKiA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBhbmQgOmZ1bmM6YGJ6Mi5kZWNvbXByZXNzYCBjYW4gbm93IGRlY29tcHJlc3MKKyAgbXVsdGktc3RyZWFtIGlucHV0cyAoc3VjaCBhcyB0aG9zZSBwcm9kdWNlZCBieSB0aGUgOnByb2dyYW06YHBiemlwMmAgdG9vbCkuCisgIDpjbGFzczpgYnoyLkJaMkZpbGVgIGNhbiBub3cgYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSB0aGlzIHR5cGUgb2YgZmlsZSwgdXNpbmcKKyAgdGhlIGBgJ2EnYGAgKGFwcGVuZCkgbW9kZS4KKworICAoQ29udHJpYnV0ZWQgYnkgTmlyIEFpZGVzIGluIDppc3N1ZTpgMTYyNWApCisKKyogOmNsYXNzOmBiejIuQloyRmlsZWAgbm93IGltcGxlbWVudHMgYWxsIG9mIHRoZSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBBUEksCisgIGV4Y2VwdCBmb3IgdGhlIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZHMuCisKKworY29kZWNzCistLS0tLS0KKworVGhlIDptb2Q6YH5lbmNvZGluZ3MubWJjc2AgY29kZWMgaGFzIGJlZW4gcmV3cml0dGVuIHRvIGhhbmRsZSBjb3JyZWN0bHkKK2BgcmVwbGFjZWBgIGFuZCBgYGlnbm9yZWBgIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiAgVGhlCis6bW9kOmB+ZW5jb2RpbmdzLm1iY3NgIGNvZGVjIG5vdyBzdXBwb3J0cyBhbGwgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seQorYGByZXBsYWNlYGAgdG8gZW5jb2RlIGFuZCBgYGlnbm9yZWBgIHRvIGRlY29kZS4KKworQSBuZXcgV2luZG93cy1vbmx5IGNvZGVjIGhhcyBiZWVuIGFkZGVkOiBgYGNwNjUwMDFgYCAoOmlzc3VlOmAxMzIxNmApLiBJdCBpcyB0aGUKK1dpbmRvd3MgY29kZSBwYWdlIDY1MDAxIChXaW5kb3dzIFVURi04LCBgYENQX1VURjhgYCkuICBGb3IgZXhhbXBsZSwgaXQgaXMgdXNlZAorYnkgYGBzeXMuc3Rkb3V0YGAgaWYgdGhlIGNvbnNvbGUgb3V0cHV0IGNvZGUgcGFnZSBpcyBzZXQgdG8gY3A2NTAwMSAoZS5nLiwgdXNpbmcKK2BgY2hjcCA2NTAwMWBgIGNvbW1hbmQpLgorCitNdWx0aWJ5dGUgQ0pLIGRlY29kZXJzIG5vdyByZXN5bmNocm9uaXplIGZhc3Rlci4gIFRoZXkgb25seSBpZ25vcmUgdGhlIGZpcnN0CitieXRlIG9mIGFuIGludmFsaWQgYnl0ZSBzZXF1ZW5jZS4gRm9yIGV4YW1wbGUsIGBgYidceGZmXG4nLmRlY29kZSgnZ2IyMzEyJywKKydyZXBsYWNlJylgYCBub3cgcmV0dXJucyBhIGBgXG5gYCBhZnRlciB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLgorCisoOmlzc3VlOmAxMjAxNmApCisKK0luY3JlbWVudGFsIENKSyBjb2RlYyBlbmNvZGVycyBhcmUgbm8gbG9uZ2VyIHJlc2V0IGF0IGVhY2ggY2FsbCB0byB0aGVpcgorZW5jb2RlKCkgbWV0aG9kcy4gRm9yIGV4YW1wbGU6OgorCisgICAgJCAuL3B5dGhvbiAtcQorICAgID4+PiBpbXBvcnQgY29kZWNzCisgICAgPj4+IGVuY29kZXIgPSBjb2RlY3MuZ2V0aW5jcmVtZW50YWxlbmNvZGVyKCdoeicpKCdzdHJpY3QnKQorICAgID4+PiBiJycuam9pbihlbmNvZGVyLmVuY29kZSh4KSBmb3IgeCBpbiAnXHU1MmZmXHU2NWJkXHU2NWJjXHU0ZWJhXHUzMDAyIEJ5ZS4nKQorICAgIGInfntOcEopbDZISyEjfn0gQnllLicKKworVGhpcyBleGFtcGxlIGdpdmVzIGBgYid+e05wfn1+e0opfn1+e2w2fn1+e0hLfn1+eyEjfn0gQnllLidgYCB3aXRoIG9sZGVyIFB5dGhvbgordmVyc2lvbnMuCisKKyg6aXNzdWU6YDEyMTAwYCkKKworVGhlIGBgdW5pY29kZV9pbnRlcm5hbGBgIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKKworY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tCisKK0FkZGl0aW9uIG9mIGEgbmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLkNoYWluTWFwYCBjbGFzcyB0byBhbGxvdyB0cmVhdGluZyBhCitudW1iZXIgb2YgbWFwcGluZ3MgYXMgYSBzaW5nbGUgdW5pdC4gIChXcml0dGVuIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGZvcgorOmlzc3VlOmAxMTA4OWAsIG1hZGUgcHVibGljIGluIDppc3N1ZTpgMTEyOTdgKQorCitUaGUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGhhdmUgYmVlbiBtb3ZlZCBpbiBhIG5ldyA6bW9kOmBjb2xsZWN0aW9ucy5hYmNgCittb2R1bGUsIHRvIGJldHRlciBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIGFic3RyYWN0IGFuZCB0aGUgY29uY3JldGUKK2NvbGxlY3Rpb25zIGNsYXNzZXMuICBBbGlhc2VzIGZvciBBQkNzIGFyZSBzdGlsbCBwcmVzZW50IGluIHRoZQorOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSB0byBwcmVzZXJ2ZSBleGlzdGluZyBpbXBvcnRzLiAgKDppc3N1ZTpgMTEwODVgKQorCisuLiBYWFggYWRkaXRpb24gb2YgX19zbG90c19fIHRvIEFCQ3Mgbm90IHJlY29yZGVkIGhlcmU6IGludGVybmFsIGRldGFpbAorCitUaGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuQ291bnRlcmAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSB1bmFyeSBgYCtgYCBhbmQgYGAtYGAKK29wZXJhdG9ycywgYXMgd2VsbCBhcyB0aGUgaW4tcGxhY2Ugb3BlcmF0b3JzIGBgKz1gYCwgYGAtPWBgLCBgYHw9YGAsIGFuZAorYGAmPWBgLiAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTMxMjFgLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKKzpjbGFzczpgfmNvbnRleHRsaWIuRXhpdFN0YWNrYCBub3cgcHJvdmlkZXMgYSBzb2xpZCBmb3VuZGF0aW9uIGZvcgorcHJvZ3JhbW1hdGljIG1hbmlwdWxhdGlvbiBvZiBjb250ZXh0IG1hbmFnZXJzIGFuZCBzaW1pbGFyIGNsZWFudXAKK2Z1bmN0aW9uYWxpdHkuIFVubGlrZSB0aGUgcHJldmlvdXMgYGBjb250ZXh0bGliLm5lc3RlZGBgIEFQSSAod2hpY2ggd2FzCitkZXByZWNhdGVkIGFuZCByZW1vdmVkKSwgdGhlIG5ldyBBUEkgaXMgZGVzaWduZWQgdG8gd29yayBjb3JyZWN0bHkKK3JlZ2FyZGxlc3Mgb2Ygd2hldGhlciBjb250ZXh0IG1hbmFnZXJzIGFjcXVpcmUgdGhlaXIgcmVzb3VyY2VzIGluCit0aGVpciBgYF9faW5pdF9fYGAgbWV0aG9kIChmb3IgZXhhbXBsZSwgZmlsZSBvYmplY3RzKSBvciBpbiB0aGVpcgorYGBfX2VudGVyX19gYCBtZXRob2QgKGZvciBleGFtcGxlLCBzeW5jaHJvbmlzYXRpb24gb2JqZWN0cyBmcm9tIHRoZQorOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUpLgorCisoOmlzc3VlOmAxMzU4NWApCisKKworY3J5cHQKKy0tLS0tCisKK0FkZGl0aW9uIG9mIHNhbHQgYW5kIG1vZHVsYXIgY3J5cHQgZm9ybWF0IChoYXNoaW5nIG1ldGhvZCkgYW5kIHRoZSA6ZnVuYzpgfmNyeXB0Lm1rc2FsdGAKK2Z1bmN0aW9uIHRvIHRoZSA6bW9kOmBjcnlwdGAgbW9kdWxlLgorCisoOmlzc3VlOmAxMDkyNGApCisKK2N1cnNlcworLS0tLS0tCisKKyAqIElmIHRoZSA6bW9kOmBjdXJzZXNgIG1vZHVsZSBpcyBsaW5rZWQgdG8gdGhlIG5jdXJzZXN3IGxpYnJhcnksIHVzZSBVbmljb2RlCisgICBmdW5jdGlvbnMgd2hlbiBVbmljb2RlIHN0cmluZ3Mgb3IgY2hhcmFjdGVycyBhcmUgcGFzc2VkIChlLmcuCisgICA6YzpmdW5jOmB3YWRkd3N0cmApLCBhbmQgYnl0ZXMgZnVuY3Rpb25zIG90aGVyd2lzZSAoZS5nLiA6YzpmdW5jOmB3YWRkc3RyYCkuCisgKiBVc2UgdGhlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIGBgdXRmLThgYCB0byBlbmNvZGUgVW5pY29kZSBzdHJpbmdzLgorICogOmNsYXNzOmBjdXJzZXMud2luZG93YCBoYXMgYSBuZXcgOmF0dHI6YGN1cnNlcy53aW5kb3cuZW5jb2RpbmdgIGF0dHJpYnV0ZS4KKyAqIFRoZSA6Y2xhc3M6YGN1cnNlcy53aW5kb3dgIGNsYXNzIGhhcyBhIG5ldyA6bWV0aDpgfmN1cnNlcy53aW5kb3cuZ2V0X3djaGAKKyAgIG1ldGhvZCB0byBnZXQgYSB3aWRlIGNoYXJhY3RlcgorICogVGhlIDptb2Q6YGN1cnNlc2AgbW9kdWxlIGhhcyBhIG5ldyA6bWV0aDpgfmN1cnNlcy51bmdldF93Y2hgIGZ1bmN0aW9uIHRvCisgICBwdXNoIGEgd2lkZSBjaGFyYWN0ZXIgc28gdGhlIG5leHQgOm1ldGg6YH5jdXJzZXMud2luZG93LmdldF93Y2hgIHdpbGwgcmV0dXJuCisgICBpdAorCisoQ29udHJpYnV0ZWQgYnkgScOxaWdvIFNlcm5hIGluIDppc3N1ZTpgNjc1NWApCisKK2RhdGV0aW1lCistLS0tLS0tLQorCisgKiBFcXVhbGl0eSBjb21wYXJpc29ucyBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAKKyAgIGluc3RhbmNlcyBub3cgcmV0dXJuIDpjb25zdDpgRmFsc2VgIGluc3RlYWQgb2YgcmFpc2luZyA6ZXhjOmBUeXBlRXJyb3JgCisgICAoOmlzc3VlOmAxNTAwNmApLgorICogTmV3IDptZXRoOmBkYXRldGltZS5kYXRldGltZS50aW1lc3RhbXBgIG1ldGhvZDogUmV0dXJuIFBPU0lYIHRpbWVzdGFtcAorICAgY29ycmVzcG9uZGluZyB0byB0aGUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLgorICogVGhlIDptZXRoOmBkYXRldGltZS5kYXRldGltZS5zdHJmdGltZWAgbWV0aG9kIHN1cHBvcnRzIGZvcm1hdHRpbmcgeWVhcnMKKyAgIG9sZGVyIHRoYW4gMTAwMC4KKyAqIFRoZSA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUuYXN0aW1lem9uZWAgbWV0aG9kIGNhbiBub3cgYmUKKyAgIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cyB0byBjb252ZXJ0IGRhdGV0aW1lIGluc3RhbmNlIHRvIHRoZSBzeXN0ZW0KKyAgIHRpbWV6b25lLgorCisKKy4uIF9uZXctZGVjaW1hbDoKKworZGVjaW1hbAorLS0tLS0tLQorCis6aXNzdWU6YDc2NTJgIC0gaW50ZWdyYXRlIGZhc3QgbmF0aXZlIGRlY2ltYWwgYXJpdGhtZXRpYy4KKyAgIEMtbW9kdWxlIGFuZCBsaWJtcGRlYyB3cml0dGVuIGJ5IFN0ZWZhbiBLcmFoLgorCitUaGUgbmV3IEMgdmVyc2lvbiBvZiB0aGUgZGVjaW1hbCBtb2R1bGUgaW50ZWdyYXRlcyB0aGUgaGlnaCBzcGVlZCBsaWJtcGRlYworbGlicmFyeSBmb3IgYXJiaXRyYXJ5IHByZWNpc2lvbiBjb3JyZWN0bHktcm91bmRlZCBkZWNpbWFsIGZsb2F0aW5nIHBvaW50Cithcml0aG1ldGljLiBsaWJtcGRlYyBjb25mb3JtcyB0byBJQk0ncyBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLgorCitQZXJmb3JtYW5jZSBnYWlucyByYW5nZSBmcm9tIDEweCBmb3IgZGF0YWJhc2UgYXBwbGljYXRpb25zIHRvIDEwMHggZm9yCitudW1lcmljYWxseSBpbnRlbnNpdmUgYXBwbGljYXRpb25zLiBUaGVzZSBudW1iZXJzIGFyZSBleHBlY3RlZCBnYWlucworZm9yIHN0YW5kYXJkIHByZWNpc2lvbnMgdXNlZCBpbiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMuIFNpbmNlCit0aGUgcHJlY2lzaW9uIGlzIHVzZXIgY29uZmlndXJhYmxlLCB0aGUgZXhhY3QgZmlndXJlcyBtYXkgdmFyeS4gRm9yIGV4YW1wbGUsCitpbiBpbnRlZ2VyIGJpZ251bSBhcml0aG1ldGljIHRoZSBkaWZmZXJlbmNlcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBoaWdoZXIuCisKK1RoZSBmb2xsb3dpbmcgdGFibGUgaXMgbWVhbnQgYXMgYW4gaWxsdXN0cmF0aW9uLiBCZW5jaG1hcmtzIGFyZSBhdmFpbGFibGUKK2F0IGh0dHA6Ly93d3cuYnl0ZXJlZWYub3JnL21wZGVjaW1hbC9xdWlja3N0YXJ0Lmh0bWwuCisKKyAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKworICAgfCAgICAgICAgIHwgIGRlY2ltYWwucHkgfCAgIF9kZWNpbWFsICAgfCAgIHNwZWVkdXAgICB8CisgICArPT09PT09PT09Kz09PT09PT09PT09PT0rPT09PT09PT09PT09PT0rPT09PT09PT09PT09PSsKKyAgIHwgICBwaSAgICB8ICAgIDQyLjAycyAgIHwgICAgMC4zNDVzICAgIHwgICAgMTIweCAgICAgfAorICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICB8IHRlbGNvICAgfCAgIDE3Mi4xOXMgICB8ICAgIDUuNjhzICAgICB8ICAgICAzMHggICAgIHwKKyAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKworICAgfCBwc3ljb3BnIHwgICAgIDMuNTdzICAgfCAgICAwLjI5cyAgICAgfCAgICAgMTJ4ICAgICB8CisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKworRmVhdHVyZXMKK35+fn5+fn5+CisKKyogVGhlIDpleGM6YH5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uYCBzaWduYWwgb3B0aW9uYWxseSBlbmFibGVzIHN0cmljdGVyCisgIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyogSWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkcywgdGhlIEMgdmVyc2lvbiBhdXRvbWF0aWNhbGx5CisgIGRpc2FibGVzIHRoZSBleHBlbnNpdmUgdGhyZWFkIGxvY2FsIGNvbnRleHQgbWFjaGluZXJ5LiBJbiB0aGlzIGNhc2UsCisgIHRoZSB2YXJpYWJsZSA6ZGF0YTpgfmRlY2ltYWwuSEFWRV9USFJFQURTYCBpcyBzZXQgdG8gRmFsc2UuCisKK0FQSSBjaGFuZ2VzCit+fn5+fn5+fn5+fgorCisqIFRoZSBDIG1vZHVsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZXh0IGxpbWl0cywgZGVwZW5kaW5nIG9uIHRoZSBtYWNoaW5lCisgIGFyY2hpdGVjdHVyZToKKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAzMi1iaXQgICAgICAgIHwgICAgICAgICAgICA2NC1iaXQgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YE1BWF9QUkVDYCB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgTUFYX0VNQVhgIHwgOmNvbnN0OmA0MjUwMDAwMDBgICB8IDpjb25zdDpgOTk5OTk5OTk5OTk5OTk5OTk5YCAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBNSU5fRU1JTmAgfCA6Y29uc3Q6YC00MjUwMDAwMDBgIHwgOmNvbnN0OmAtOTk5OTk5OTk5OTk5OTk5OTk5YCB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisqIEluIHRoZSBjb250ZXh0IHRlbXBsYXRlcyAoOmNsYXNzOmB+ZGVjaW1hbC5EZWZhdWx0Q29udGV4dGAsCisgIDpjbGFzczpgfmRlY2ltYWwuQmFzaWNDb250ZXh0YCBhbmQgOmNsYXNzOmB+ZGVjaW1hbC5FeHRlbmRlZENvbnRleHRgKQorICB0aGUgbWFnbml0dWRlIG9mIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LkVtYXhgIGFuZAorICA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5FbWluYCBoYXMgY2hhbmdlZCB0byA6Y29uc3Q6YDk5OTk5OWAuCisKKyogVGhlIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgY29uc3RydWN0b3IgaW4gZGVjaW1hbC5weSBkb2VzIG5vdCBvYnNlcnZlCisgIHRoZSBjb250ZXh0IGxpbWl0cyBhbmQgY29udmVydHMgdmFsdWVzIHdpdGggYXJiaXRyYXJ5IGV4cG9uZW50cyBvciBwcmVjaXNpb24KKyAgZXhhY3RseS4gU2luY2UgdGhlIEMgdmVyc2lvbiBoYXMgaW50ZXJuYWwgbGltaXRzLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBpcworICB1c2VkOiBJZiBwb3NzaWJsZSwgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgZXhhY3RseSwgb3RoZXJ3aXNlCisgIDpleGM6YH5kZWNpbWFsLkludmFsaWRPcGVyYXRpb25gIGlzIHJhaXNlZCBhbmQgdGhlIHJlc3VsdCBpcyBOYU4uIEluIHRoZQorICBsYXR0ZXIgY2FzZSBpdCBpcyBhbHdheXMgcG9zc2libGUgdG8gdXNlIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsYAorICBpbiBvcmRlciB0byBvYnRhaW4gYSByb3VuZGVkIG9yIGluZXhhY3QgdmFsdWUuCisKKworKiBUaGUgcG93ZXIgZnVuY3Rpb24gaW4gZGVjaW1hbC5weSBpcyBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQuIEluIHRoZQorICBDIHZlcnNpb24sIGl0IGlzIGRlZmluZWQgaW4gdGVybXMgb2YgdGhlIGNvcnJlY3RseS1yb3VuZGVkCisgIDptZXRoOmB+ZGVjaW1hbC5EZWNpbWFsLmV4cGAgYW5kIDptZXRoOmB+ZGVjaW1hbC5EZWNpbWFsLmxuYCBmdW5jdGlvbnMsCisgIGJ1dCB0aGUgZmluYWwgcmVzdWx0IGlzIG9ubHkgImFsbW9zdCBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQiLgorCisKKyogSW4gdGhlIEMgdmVyc2lvbiwgdGhlIGNvbnRleHQgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBzaWduYWxzIGlzIGEKKyAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYC4gIEZvciBzcGVlZCByZWFzb25zLAorICA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5mbGFnc2AgYW5kIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LnRyYXBzYCBhbHdheXMKKyAgcmVmZXIgdG8gdGhlIHNhbWUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYCB0aGF0IHRoZSBjb250ZXh0CisgIHdhcyBpbml0aWFsaXplZCB3aXRoLiBJZiBhIG5ldyBzaWduYWwgZGljdGlvbmFyeSBpcyBhc3NpZ25lZCwKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuZmxhZ3NgIGFuZCA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC50cmFwc2AKKyAgYXJlIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IHZhbHVlcywgYnV0IHRoZXkgZG8gbm90IHJlZmVyZW5jZSB0aGUgUkhTCisgIGRpY3Rpb25hcnkuCisKKworKiBQaWNrbGluZyBhIDpjbGFzczpgfmRlY2ltYWwuQ29udGV4dGAgcHJvZHVjZXMgYSBkaWZmZXJlbnQgb3V0cHV0IGluIG9yZGVyCisgIHRvIGhhdmUgYSBjb21tb24gaW50ZXJjaGFuZ2UgZm9ybWF0IGZvciB0aGUgUHl0aG9uIGFuZCBDIHZlcnNpb25zLgorCisKKyogVGhlIG9yZGVyIG9mIGFyZ3VtZW50cyBpbiB0aGUgOmNsYXNzOmB+ZGVjaW1hbC5Db250ZXh0YCBjb25zdHJ1Y3RvciBoYXMgYmVlbgorICBjaGFuZ2VkIHRvIG1hdGNoIHRoZSBvcmRlciBkaXNwbGF5ZWQgYnkgOmZ1bmM6YHJlcHJgLgorCisKKyogVGhlIGBgd2F0Y2hleHBgYCBwYXJhbWV0ZXIgaW4gdGhlIDptZXRoOmB+ZGVjaW1hbC5EZWNpbWFsLnF1YW50aXplYCBtZXRob2QKKyAgaXMgZGVwcmVjYXRlZC4KKworCisuLiBfbmV3LWVtYWlsOgorCitlbWFpbAorLS0tLS0KKworUG9saWN5IEZyYW1ld29yaworfn5+fn5+fn5+fn5+fn5+fgorCitUaGUgZW1haWwgcGFja2FnZSBub3cgaGFzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgZnJhbWV3b3JrLiAgQQorOmNsYXNzOmB+ZW1haWwucG9saWN5LlBvbGljeWAgaXMgYW4gb2JqZWN0IHdpdGggc2V2ZXJhbCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzCit0aGF0IGNvbnRyb2wgaG93IHRoZSBlbWFpbCBwYWNrYWdlIGJlaGF2ZXMuICBUaGUgcHJpbWFyeSBwb2xpY3kgZm9yIFB5dGhvbiAzLjMKK2lzIHRoZSA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuQ29tcGF0MzJgIHBvbGljeSwgd2hpY2ggcHJvdmlkZXMgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgd2l0aCB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgQSBgYHBvbGljeWBgIGNhbiBiZQorc3BlY2lmaWVkIHdoZW4gYW4gZW1haWwgbWVzc2FnZSBpcyBwYXJzZWQgYnkgYSA6bW9kOmB+ZW1haWwucGFyc2VyYCwgb3Igd2hlbiBhCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBpcyBjcmVhdGVkLCBvciB3aGVuIGFuIGVtYWlsIGlzCitzZXJpYWxpemVkIHVzaW5nIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAuICBVbmxlc3Mgb3ZlcnJpZGRlbiwgYSBwb2xpY3kgcGFzc2VkCit0byBhIGBgcGFyc2VyYGAgaXMgaW5oZXJpdGVkIGJ5IGFsbCB0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IGFuZCBzdWItb2JqZWN0cworY3JlYXRlZCBieSB0aGUgYGBwYXJzZXJgYC4gIEJ5IGRlZmF1bHQgYSBgYGdlbmVyYXRvcmBgIHdpbGwgdXNlIHRoZSBwb2xpY3kgb2YKK3RoZSBgYE1lc3NhZ2VgYCBvYmplY3QgaXQgaXMgc2VyaWFsaXppbmcuICBUaGUgZGVmYXVsdCBwb2xpY3kgaXMKKzpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYC4KKworVGhlIG1pbmltdW0gc2V0IG9mIGNvbnRyb2xzIGltcGxlbWVudGVkIGJ5IGFsbCBgYHBvbGljeWBgIG9iamVjdHMgYXJlOgorCisgICAgPT09PT09PT09PT09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgbWF4X2xpbmVfbGVuZ3RoICAgICBUaGUgbWF4aW11bSBsZW5ndGgsIGV4Y2x1ZGluZyB0aGUgbGluZXNlcCBjaGFyYWN0ZXIocyksCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsIGxpbmVzIG1heSBoYXZlIHdoZW4gYSBgYE1lc3NhZ2VgYCBpcworICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZC4gIERlZmF1bHRzIHRvIDc4LgorCisgICAgbGluZXNlcCAgICAgICAgICAgICBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgaW5kaXZpZHVhbCBsaW5lcyB3aGVuIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGBgTWVzc2FnZWBgIGlzIHNlcmlhbGl6ZWQuICBEZWZhdWx0cyB0byBgYFxuYGAuCisKKyAgICBjdGVfdHlwZSAgICAgICAgICAgIGBgN2JpdGBgIG9yIGBgOGJpdGBgLiAgYGA4Yml0YGAgYXBwbGllcyBvbmx5IHRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGBgQnl0ZXNgYCBgYGdlbmVyYXRvcmBgLCBhbmQgbWVhbnMgdGhhdCBub24tQVNDSUkgbWF5CisgICAgICAgICAgICAgICAgICAgICAgICBiZSB1c2VkIHdoZXJlIGFsbG93ZWQgYnkgdGhlIHByb3RvY29sIChvciB3aGVyZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSBvcmlnaW5hbCBpbnB1dCkuCisKKyAgICByYWlzZV9vbl9kZWZlY3QgICAgIENhdXNlcyBhIGBgcGFyc2VyYGAgdG8gcmFpc2UgZXJyb3Igd2hlbiBkZWZlY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb3VudGVyZWQgaW5zdGVhZCBvZiBhZGRpbmcgdGhlbSB0byB0aGUgYGBNZXNzYWdlYGAKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCdzIGBgZGVmZWN0c2BgIGxpc3QuCisgICAgPT09PT09PT09PT09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgbmV3IHBvbGljeSBpbnN0YW5jZSwgd2l0aCBuZXcgc2V0dGluZ3MsIGlzIGNyZWF0ZWQgdXNpbmcgdGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY2xvbmVgIG1ldGhvZCBvZiBwb2xpY3kgb2JqZWN0cy4gIGBgY2xvbmVgYCB0YWtlcworYW55IG9mIHRoZSBhYm92ZSBjb250cm9scyBhcyBrZXl3b3JkIGFyZ3VtZW50cy4gIEFueSBjb250cm9sIG5vdCBzcGVjaWZpZWQgaW4KK3RoZSBjYWxsIHJldGFpbnMgaXRzIGRlZmF1bHQgdmFsdWUuICBUaHVzIHlvdSBjYW4gY3JlYXRlIGEgcG9saWN5IHRoYXQgdXNlcworYGBcclxuYGAgbGluZXNlcCBjaGFyYWN0ZXJzIGxpa2UgdGhpczo6CisKKyAgICBteXBvbGljeSA9IGNvbXBhdDMyLmNsb25lKGxpbmVzZXA9J1xyXG4nKQorCitQb2xpY2llcyBjYW4gYmUgdXNlZCB0byBtYWtlIHRoZSBnZW5lcmF0aW9uIG9mIG1lc3NhZ2VzIGluIHRoZSBmb3JtYXQgbmVlZGVkIGJ5Cit5b3VyIGFwcGxpY2F0aW9uIHNpbXBsZXIuICBJbnN0ZWFkIG9mIGhhdmluZyB0byByZW1lbWJlciB0byBzcGVjaWZ5CitgYGxpbmVzZXA9J1xyXG4nYGAgaW4gYWxsIHRoZSBwbGFjZXMgeW91IGNhbGwgYSBgYGdlbmVyYXRvcmBgLCB5b3UgY2FuIHNwZWNpZnkKK2l0IG9uY2UsIHdoZW4geW91IHNldCB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgcGFyc2VyYGAgb3IgdGhlIGBgTWVzc2FnZWBgLAord2hpY2hldmVyIHlvdXIgcHJvZ3JhbSB1c2VzIHRvIGNyZWF0ZSBgYE1lc3NhZ2VgYCBvYmplY3RzLiAgT24gdGhlIG90aGVyIGhhbmQsCitpZiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBtZXNzYWdlcyBpbiBtdWx0aXBsZSBmb3JtcywgeW91IGNhbiBzdGlsbCBzcGVjaWZ5IHRoZQorcGFyYW1ldGVycyBpbiB0aGUgYXBwcm9wcmlhdGUgYGBnZW5lcmF0b3JgYCBjYWxsLiAgT3IgeW91IGNhbiBoYXZlIGN1c3RvbQorcG9saWN5IGluc3RhbmNlcyBmb3IgeW91ciBkaWZmZXJlbnQgY2FzZXMsIGFuZCBwYXNzIHRob3NlIGluIHdoZW4geW91IGNyZWF0ZQordGhlIGBgZ2VuZXJhdG9yYGAuCisKKworUHJvdmlzaW9uYWwgUG9saWN5IHdpdGggTmV3IEhlYWRlciBBUEkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1doaWxlIHRoZSBwb2xpY3kgZnJhbWV3b3JrIGlzIHdvcnRod2hpbGUgYWxsIGJ5IGl0c2VsZiwgdGhlIG1haW4gbW90aXZhdGlvbiBmb3IKK2ludHJvZHVjaW5nIGl0IGlzIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBuZXcgcG9saWNpZXMgdGhhdCBpbXBsZW1lbnQgbmV3CitmZWF0dXJlcyBmb3IgdGhlIGVtYWlsIHBhY2thZ2UgaW4gYSB3YXkgdGhhdCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorZm9yIHRob3NlIHdobyBkbyBub3QgdXNlIHRoZSBuZXcgcG9saWNpZXMuICBCZWNhdXNlIHRoZSBuZXcgcG9saWNpZXMgaW50cm9kdWNlIGEKK25ldyBBUEksIHdlIGFyZSByZWxlYXNpbmcgdGhlbSBpbiBQeXRob24gMy4zIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIHBvbGljeQorPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZworcmVtb3ZhbCBvZiB0aGUgY29kZSkgbWF5IG9jY3VyIGlmIGRlZW1lZCBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KKworVGhlIG5ldyBwb2xpY2llcyBhcmUgaW5zdGFuY2VzIG9mIDpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAsCithbmQgYWRkIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBjb250cm9sczoKKworICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHJlZm9sZF9zb3VyY2UgICAgICAgQ29udHJvbHMgd2hldGhlciBvciBub3QgaGVhZGVycyBwYXJzZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZDpgfmVtYWlsLnBhcnNlcmAgYXJlIHJlZm9sZGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAuICBJdCBjYW4gYmUgYGBub25lYGAsIGBgbG9uZ2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgb3IgYGBhbGxgYC4gIFRoZSBkZWZhdWx0IGlzIGBgbG9uZ2BgLCB3aGljaCBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgaGVhZGVycyB3aXRoIGEgbGluZSBsb25nZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgYGBtYXhfbGluZV9sZW5ndGhgYCBnZXQgcmVmb2xkZWQuICBgYG5vbmVgYCBtZWFucyBubworICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBnZXQgcmVmb2xkZWQsIGFuZCBgYGFsbGBgIG1lYW5zIHRoYXQgYWxsIGxpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICBnZXQgcmVmb2xkZWQuCisKKyAgICBoZWFkZXJfZmFjdG9yeSAgICAgIEEgY2FsbGFibGUgdGhhdCB0YWtlIGEgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIGEgY3VzdG9tIGhlYWRlciBvYmplY3QuCisgICAgPT09PT09PT09PT09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBgYGhlYWRlcl9mYWN0b3J5YGAgaXMgdGhlIGtleSB0byB0aGUgbmV3IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBuZXcKK3BvbGljaWVzLiAgV2hlbiBvbmUgb2YgdGhlIG5ldyBwb2xpY2llcyBpcyB1c2VkLCBhbnkgaGVhZGVyIHJldHJpZXZlZCBmcm9tCithIGBgTWVzc2FnZWBgIG9iamVjdCBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIGBgaGVhZGVyX2ZhY3RvcnlgYCwgYW5kIGFueQordGltZSB5b3Ugc2V0IGEgaGVhZGVyIG9uIGEgYGBNZXNzYWdlYGAgaXQgYmVjb21lcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkKK2BgaGVhZGVyX2ZhY3RvcnlgYC4gIEFsbCBzdWNoIGhlYWRlciBvYmplY3RzIGhhdmUgYSBgYG5hbWVgYCBhdHRyaWJ1dGUgZXF1YWwKK3RvIHRoZSBoZWFkZXIgbmFtZS4gIEFkZHJlc3MgYW5kIERhdGUgaGVhZGVycyBoYXZlIGFkZGl0aW9uYWwgYXR0cmlidXRlcwordGhhdCBnaXZlIHlvdSBhY2Nlc3MgdG8gdGhlIHBhcnNlZCBkYXRhIG9mIHRoZSBoZWFkZXIuICBUaGlzIG1lYW5zIHlvdSBjYW4gbm93CitkbyB0aGluZ3MgbGlrZSB0aGlzOjoKKworICAgID4+PiBtID0gTWVzc2FnZShwb2xpY3k9U01UUCkKKyAgICA+Pj4gbVsnVG8nXSA9ICfDiXJpYyA8Zm9vQGV4YW1wbGUuY29tPicKKyAgICA+Pj4gbVsndG8nXQorICAgICfDiXJpYyA8Zm9vQGV4YW1wbGUuY29tPicKKyAgICA+Pj4gbVsndG8nXS5hZGRyZXNzZXMKKyAgICAoQWRkcmVzcyhkaXNwbGF5X25hbWU9J8OJcmljJywgdXNlcm5hbWU9J2ZvbycsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSwpCisgICAgPj4+IG1bJ3RvJ10uYWRkcmVzc2VzWzBdLnVzZXJuYW1lCisgICAgJ2ZvbycKKyAgICA+Pj4gbVsndG8nXS5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lCisgICAgJ8OJcmljJworICAgID4+PiBtWydEYXRlJ10gPSBlbWFpbC51dGlscy5sb2NhbHRpbWUoKQorICAgID4+PiBtWydEYXRlJ10uZGF0ZXRpbWUKKyAgICBkYXRldGltZS5kYXRldGltZSgyMDEyLCA1LCAyNSwgMjEsIDM5LCAyNCwgNDY1NDg0LCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKC0xLCA3MjAwMCksICdFRFQnKSkKKyAgICA+Pj4gbVsnRGF0ZSddCisgICAgJ0ZyaSwgMjUgTWF5IDIwMTIgMjE6NDQ6MjcgLTA0MDAnCisgICAgPj4+IHByaW50KG0pCisgICAgVG86ID0/dXRmLTg/cT89QzM9ODlyaWM/PSA8Zm9vQGV4YW1wbGUuY29tPgorICAgIERhdGU6IEZyaSwgMjUgTWF5IDIwMTIgMjE6NDQ6MjcgLTA0MDAKKworWW91IHdpbGwgbm90ZSB0aGF0IHRoZSB1bmljb2RlIGRpc3BsYXkgbmFtZSBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgYXMKK2BgdXRmLThgYCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQsIGJ1dCB0aGF0IHdoZW4gdGhlIGhlYWRlciBpcyBhY2Nlc3NlZAorZGlyZWN0bHksIHlvdSBnZXQgdGhlIHVuaWNvZGUgdmVyc2lvbi4gIFRoaXMgZWxpbWluYXRlcyBhbnkgbmVlZCB0byBkZWFsIHdpdGgKK3RoZSA6bW9kOmBlbWFpbC5oZWFkZXJgIDptZXRoOmB+ZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXJgIG9yCis6bWV0aDpgfmVtYWlsLmhlYWRlci5tYWtlX2hlYWRlcmAgZnVuY3Rpb25zLgorCitZb3UgY2FuIGFsc28gY3JlYXRlIGFkZHJlc3NlcyBmcm9tIHBhcnRzOjoKKworICAgID4+PiBtWydjYyddID0gW0dyb3VwKCdwYWxzJywgW0FkZHJlc3MoJ0JvYicsICdib2InLCAnZXhhbXBsZS5jb20nKSwKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCdTYWxseScsICdzYWxseScsICdleGFtcGxlLmNvbScpXSksCisgICAgLi4uICAgICAgICAgICAgQWRkcmVzcygnQm9uem8nLCBhZGRyX3NwZWM9J2JvbnpAbGF1Z2guY29tJyldCisgICAgPj4+IHByaW50KG0pCisgICAgVG86ID0/dXRmLTg/cT89QzM9ODlyaWM/PSA8Zm9vQGV4YW1wbGUuY29tPgorICAgIERhdGU6IEZyaSwgMjUgTWF5IDIwMTIgMjE6NDQ6MjcgLTA0MDAKKyAgICBjYzogcGFsczogQm9iIDxib2JAZXhhbXBsZS5jb20+LCBTYWxseSA8c2FsbHlAZXhhbXBsZS5jb20+OywgQm9uem8gPGJvbnpAbGF1Z2guY29tPgorCitEZWNvZGluZyB0byB1bmljb2RlIGlzIGRvbmUgYXV0b21hdGljYWxseTo6CisKKyAgICA+Pj4gbTIgPSBtZXNzYWdlX2Zyb21fc3RyaW5nKHN0cihtKSkKKyAgICA+Pj4gbTJbJ3RvJ10KKyAgICAnw4lyaWMgPGZvb0BleGFtcGxlLmNvbT4nCisKK1doZW4geW91IHBhcnNlIGEgbWVzc2FnZSwgeW91IGNhbiB1c2UgdGhlIGBgYWRkcmVzc2VzYGAgYW5kIGBgZ3JvdXBzYGAKK2F0dHJpYnV0ZXMgb2YgdGhlIGhlYWRlciBvYmplY3RzIHRvIGFjY2VzcyB0aGUgZ3JvdXBzIGFuZCBpbmRpdmlkdWFsCithZGRyZXNzZXM6OgorCisgICAgPj4+IG0yWydjYyddLmFkZHJlc3NlcworICAgIChBZGRyZXNzKGRpc3BsYXlfbmFtZT0nQm9iJywgdXNlcm5hbWU9J2JvYicsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSwgQWRkcmVzcyhkaXNwbGF5X25hbWU9J1NhbGx5JywgdXNlcm5hbWU9J3NhbGx5JywgZG9tYWluPSdleGFtcGxlLmNvbScpLCBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nQm9uem8nLCB1c2VybmFtZT0nYm9ueicsIGRvbWFpbj0nbGF1Z2guY29tJykpCisgICAgPj4+IG0yWydjYyddLmdyb3VwcworICAgIChHcm91cChkaXNwbGF5X25hbWU9J3BhbHMnLCBhZGRyZXNzZXM9KEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb2InLCB1c2VybmFtZT0nYm9iJywgZG9tYWluPSdleGFtcGxlLmNvbScpLCBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nU2FsbHknLCB1c2VybmFtZT0nc2FsbHknLCBkb21haW49J2V4YW1wbGUuY29tJykpLCBHcm91cChkaXNwbGF5X25hbWU9Tm9uZSwgYWRkcmVzc2VzPShBZGRyZXNzKGRpc3BsYXlfbmFtZT0nQm9uem8nLCB1c2VybmFtZT0nYm9ueicsIGRvbWFpbj0nbGF1Z2guY29tJyksKSkKKworSW4gc3VtbWFyeSwgaWYgeW91IHVzZSBvbmUgb2YgdGhlIG5ldyBwb2xpY2llcywgaGVhZGVyIG1hbmlwdWxhdGlvbiB3b3JrcyB0aGUKK3dheSBpdCBvdWdodCB0bzogIHlvdXIgYXBwbGljYXRpb24gd29ya3Mgd2l0aCB1bmljb2RlIHN0cmluZ3MsIGFuZCB0aGUgZW1haWwKK3BhY2thZ2UgdHJhbnNwYXJlbnRseSBlbmNvZGVzIGFuZCBkZWNvZGVzIHRoZSB1bmljb2RlIHRvIGFuZCBmcm9tIHRoZSBSRkMKK3N0YW5kYXJkIENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmdzLgorCitPdGhlciBBUEkgQ2hhbmdlcworfn5+fn5+fn5+fn5+fn5+fn4KKworTmV3IDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc0hlYWRlclBhcnNlcmAsIGFkZGVkIHRvIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYAorbW9kdWxlIHRvIGNvbXBsZW1lbnQgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkhlYWRlclBhcnNlcmAgYW5kIGNvbXBsZXRlIHRoZSBCeXRlcworQVBJLgorCitOZXcgdXRpbGl0eSBmdW5jdGlvbnM6CisKKyAgICogOmZ1bmM6YH5lbWFpbC51dGlscy5mb3JtYXRfZGF0ZXRpbWVgOiBnaXZlbiBhIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCwKKyAgICAgcHJvZHVjZSBhIHN0cmluZyBmb3JtYXR0ZWQgZm9yIHVzZSBpbiBhbiBlbWFpbCBoZWFkZXIuCisKKyAgICogOmZ1bmM6YH5lbWFpbC51dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWVgOiBnaXZlbiBhIGRhdGUgc3RyaW5nIGZyb20KKyAgICAgYW4gZW1haWwgaGVhZGVyLCBjb252ZXJ0IGl0IGludG8gYW4gYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgLAorICAgICBvciBhIG5haXZlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpZiB0aGUgb2Zmc2V0IGlzIGBgLTAwMDBgYC4KKworICAgKiA6ZnVuYzpgfmVtYWlsLnV0aWxzLmxvY2FsdGltZWA6IFdpdGggbm8gYXJndW1lbnQsIHJldHVybnMgdGhlCisgICAgIGN1cnJlbnQgbG9jYWwgdGltZSBhcyBhbiBhd2FyZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgdXNpbmcgdGhlIGxvY2FsCisgICAgIDpjbGFzczpgfmRhdGV0aW1lLnRpbWV6b25lYC4gIEdpdmVuIGFuIGF3YXJlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCwKKyAgICAgY29udmVydHMgaXQgaW50byBhbiBhd2FyZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgdXNpbmcgdGhlCisgICAgIGxvY2FsIDpjbGFzczpgfmRhdGV0aW1lLnRpbWV6b25lYC4KKworCitmdHBsaWIKKy0tLS0tLQorCisqIDpjbGFzczpgZnRwbGliLkZUUGAgbm93IGFjY2VwdHMgYSBgYHNvdXJjZV9hZGRyZXNzYGAga2V5d29yZCBhcmd1bWVudCB0bworICBzcGVjaWZ5IHRoZSBgYChob3N0LCBwb3J0KWBgIHRvIHVzZSBhcyB0aGUgc291cmNlIGFkZHJlc3MgaW4gdGhlIGJpbmQgY2FsbAorICB3aGVuIGNyZWF0aW5nIHRoZSBvdXRnb2luZyBzb2NrZXQuICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AKKyAgaW4gOmlzc3VlOmA4NTk0YC4pCisKKyogVGhlIDpjbGFzczpgfmZ0cGxpYi5GVFBfVExTYCBjbGFzcyBub3cgcHJvdmlkZXMgYSBuZXcKKyAgOmZ1bmM6YH5mdHBsaWIuRlRQX1RMUy5jY2NgIGZ1bmN0aW9uIHRvIHJldmVydCBjb250cm9sIGNoYW5uZWwgYmFjayB0bworICBwbGFpbnRleHQuICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgZmlyZXdhbGxzIHRoYXQga25vdyBob3cKKyAgdG8gaGFuZGxlIE5BVCB3aXRoIG5vbi1zZWN1cmUgRlRQIHdpdGhvdXQgb3BlbmluZyBmaXhlZCBwb3J0cy4gIChDb250cmlidXRlZAorICBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEyMTM5YCkKKworKiBBZGRlZCA6bWV0aDpgZnRwbGliLkZUUC5tbHNkYCBtZXRob2Qgd2hpY2ggcHJvdmlkZXMgYSBwYXJzYWJsZSBkaXJlY3RvcnkKKyAgbGlzdGluZyBmb3JtYXQgYW5kIGRlcHJlY2F0ZXMgOm1ldGg6YGZ0cGxpYi5GVFAubmxzdGAgYW5kCisgIDptZXRoOmBmdHBsaWIuRlRQLmRpcmAuICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMTA3MmApCisKKworZnVuY3Rvb2xzCistLS0tLS0tLS0KKworVGhlIDpmdW5jOmBmdW5jdG9vbHMubHJ1X2NhY2hlYCBkZWNvcmF0b3Igbm93IGFjY2VwdHMgYSBgYHR5cGVkYGAga2V5d29yZAorYXJndW1lbnQgKHRoYXQgZGVmYXVsdHMgdG8gYGBGYWxzZWBgIHRvIGVuc3VyZSB0aGF0IGl0IGNhY2hlcyB2YWx1ZXMgb2YKK2RpZmZlcmVudCB0eXBlcyB0aGF0IGNvbXBhcmUgZXF1YWwgaW4gc2VwYXJhdGUgY2FjaGUgc2xvdHMuICAoQ29udHJpYnV0ZWQKK2J5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTMyMjdgLikKKworCitnYworLS0KKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIHJlZ2lzdGVyIGNhbGxiYWNrcyBpbnZva2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvcgorYmVmb3JlIGFuZCBhZnRlciBjb2xsZWN0aW9uIHVzaW5nIHRoZSBuZXcgOmRhdGE6YH5nYy5jYWxsYmFja3NgIGxpc3QuCisKKworaG1hYworLS0tLQorCitBIG5ldyA6ZnVuYzpgfmhtYWMuY29tcGFyZV9kaWdlc3RgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHByZXZlbnQgc2lkZQorY2hhbm5lbCBhdHRhY2tzIG9uIGRpZ2VzdHMgdGhyb3VnaCB0aW1pbmcgYW5hbHlzaXMuICAoQ29udHJpYnV0ZWQgYnkgTmljaworQ29naGxhbiBhbmQgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE1MDYxYCkKKworCitodHRwCistLS0tCisKKzpjbGFzczpgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcmAgbm93IGJ1ZmZlcnMgdGhlIGhlYWRlcnMgYW5kIHdyaXRlcwordGhlbSBhbGwgYXQgb25jZSB3aGVuIDptZXRoOmB+aHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5lbmRfaGVhZGVyc2AgaXMKK2NhbGxlZC4gIEEgbmV3IG1ldGhvZCA6bWV0aDpgfmh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuZmx1c2hfaGVhZGVyc2AKK2NhbiBiZSB1c2VkIHRvIGRpcmVjdGx5IG1hbmFnZSB3aGVuIHRoZSBhY2N1bWxhdGVkIGhlYWRlcnMgYXJlIHNlbnQuCisoQ29udHJpYnV0ZWQgYnkgQW5kcmV3IFNjaGFhZiBpbiA6aXNzdWU6YDM3MDlgLikKKworOmNsYXNzOmBodHRwLnNlcnZlcmAgbm93IHByb2R1Y2VzIHZhbGlkIGBgSFRNTCA0LjAxIHN0cmljdGBgIG91dHB1dC4KKyhDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgaW4gOmlzc3VlOmAxMzI5NWAuKQorCis6Y2xhc3M6YGh0dHAuY2xpZW50LkhUVFBSZXNwb25zZWAgbm93IGhhcyBhCis6bWV0aDpgfmh0dHAuY2xpZW50LkhUVFBSZXNwb25zZS5yZWFkaW50b2AgbWV0aG9kLCB3aGljaCBtZWFucyBpdCBjYW4gYmUgdXNlZAorYXMgYSA6Y2xhc3M6YGlvLlJhd0lPQmFzZWAgY2xhc3MuICAoQ29udHJpYnV0ZWQgYnkgSm9obiBLdWhuIGluCis6aXNzdWU6YDEzNDY0YC4pCisKKworaHRtbAorLS0tLQorCis6Y2xhc3M6YGh0bWwucGFyc2VyLkhUTUxQYXJzZXJgIGlzIG5vdyBhYmxlIHRvIHBhcnNlIGJyb2tlbiBtYXJrdXAgd2l0aG91dAorcmFpc2luZyBlcnJvcnMsIHRoZXJlZm9yZSB0aGUgKnN0cmljdCogYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGFuZCB0aGUKKzpleGM6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcmAgZXhjZXB0aW9uIGFyZSBub3cgZGVwcmVjYXRlZC4KK1RoZSBhYmlsaXR5IHRvIHBhcnNlIGJyb2tlbiBtYXJrdXAgaXMgdGhlIHJlc3VsdCBvZiBhIG51bWJlciBvZiBidWcgZml4ZXMgdGhhdAorYXJlIGFsc28gYXZhaWxhYmxlIG9uIHRoZSBsYXRlc3QgYnVnIGZpeCByZWxlYXNlcyBvZiBQeXRob24gMi43LzMuMi4KKyhDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgaW4gOmlzc3VlOmAxNTExNGAsIGFuZCA6aXNzdWU6YDE0NTM4YCwKKzppc3N1ZTpgMTM5OTNgLCA6aXNzdWU6YDEzOTYwYCwgOmlzc3VlOmAxMzM1OGAsIDppc3N1ZTpgMTc0NTc2MWAsCis6aXNzdWU6YDc1NTY3MGAsIDppc3N1ZTpgMTMzNTdgLCA6aXNzdWU6YDEyNjI5YCwgOmlzc3VlOmAxMjAwMzEzYCwKKzppc3N1ZTpgNjcwNjY0YCwgOmlzc3VlOmAxMzI3M2AsIDppc3N1ZTpgMTI4ODhgLCA6aXNzdWU6YDczMTFgKQorCitBIG5ldyA6ZGF0YTpgfmh0bWwuZW50aXRpZXMuaHRtbDVgIGRpY3Rpb25hcnkgdGhhdCBtYXBzIEhUTUw1IG5hbWVkIGNoYXJhY3RlcgorcmVmZXJlbmNlcyB0byB0aGUgZXF1aXZhbGVudCBVbmljb2RlIGNoYXJhY3RlcihzKSAoZS5nLiBgYGh0bWw1WydndDsnXSA9PQorJz4nYGApIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBodG1sLmVudGl0aWVzYCBtb2R1bGUuICBUaGUgZGljdGlvbmFyeSBpcworbm93IGFsc28gdXNlZCBieSA6Y2xhc3M6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VyYC4gIChDb250cmlidXRlZCBieSBFemlvCitNZWxvdHRpIGluIDppc3N1ZTpgMTExMTNgIGFuZCA6aXNzdWU6YDE1MTU2YCkKKworCitpbWFwbGliCistLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5pbWFwbGliLklNQVA0X1NTTGAgY29uc3RydWN0b3Igbm93IGFjY2VwdHMgYW4gU1NMQ29udGV4dAorcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlIGNoYW5uZWwuCisKKyhDb250cmlidXRlZCBieSBTaWppbiBKb3NlcGggaW4gOmlzc3VlOmA4ODA4YCkKKworCitpbnNwZWN0CistLS0tLS0tCisKK0EgbmV3IDpmdW5jOmB+aW5zcGVjdC5nZXRjbG9zdXJldmFyc2AgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuIFRoaXMgZnVuY3Rpb24KK3JlcG9ydHMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBhbGwgbmFtZXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBmdW5jdGlvbiBib2R5IGFuZAord2hlcmUgdGhvc2UgbmFtZXMgd2VyZSByZXNvbHZlZCwgbWFraW5nIGl0IGVhc2llciB0byB2ZXJpZnkgY29ycmVjdCBpbnRlcm5hbAorc3RhdGUgd2hlbiB0ZXN0aW5nIGNvZGUgdGhhdCByZWxpZXMgb24gc3RhdGVmdWwgY2xvc3VyZXMuCisKKyhDb250cmlidXRlZCBieSBNZWFkb3IgSW5nZSBhbmQgTmljayBDb2dobGFuIGluIDppc3N1ZTpgMTMwNjJgKQorCitBIG5ldyA6ZnVuYzpgfmluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzYCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZC4gVGhpcworZnVuY3Rpb24gcmVwb3J0cyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdG9yJ3MKK3N0YWNrIGZyYW1lLCBtYWtpbmcgaXQgZWFzaWVyIHRvIHZlcmlmeSBjb3JyZWN0IGludGVybmFsIHN0YXRlIHdoZW4gdGVzdGluZworZ2VuZXJhdG9ycy4KKworKENvbnRyaWJ1dGVkIGJ5IE1lYWRvciBJbmdlIGluIDppc3N1ZTpgMTUxNTNgKQorCitpbworLS0KKworVGhlIDpmdW5jOmB+aW8ub3BlbmAgZnVuY3Rpb24gaGFzIGEgbmV3IGBgJ3gnYGAgbW9kZSB0aGF0IGNhbiBiZSB1c2VkIHRvCitleGNsdXNpdmVseSBjcmVhdGUgYSBuZXcgZmlsZSwgYW5kIHJhaXNlIGEgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZQorYWxyZWFkeSBleGlzdHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBDMTEgJ3gnIG1vZGUgdG8gZm9wZW4oKS4KKworKENvbnRyaWJ1dGVkIGJ5IERhdmlkIFRvd25zaGVuZCBpbiA6aXNzdWU6YDEyNzYwYCkKKworVGhlIGNvbnN0cnVjdG9yIG9mIHRoZSA6Y2xhc3M6YH5pby5UZXh0SU9XcmFwcGVyYCBjbGFzcyBoYXMgYSBuZXcKKyp3cml0ZV90aHJvdWdoKiBvcHRpb25hbCBhcmd1bWVudC4gSWYgKndyaXRlX3Rocm91Z2gqIGlzIGBgVHJ1ZWBgLCBjYWxscyB0bworOm1ldGg6YH5pby5UZXh0SU9XcmFwcGVyLndyaXRlYCBhcmUgZ3VhcmFudGVlZCBub3QgdG8gYmUgYnVmZmVyZWQ6IGFueSBkYXRhCit3cml0dGVuIG9uIHRoZSA6Y2xhc3M6YH5pby5UZXh0SU9XcmFwcGVyYCBvYmplY3QgaXMgaW1tZWRpYXRlbHkgaGFuZGxlZCB0byBpdHMKK3VuZGVybHlpbmcgYmluYXJ5IGJ1ZmZlci4KKworCitpdGVydG9vbHMKKy0tLS0tLS0tLQorCis6ZnVuYzpgfml0ZXJ0b29scy5hY2N1bXVsYXRlYCBub3cgdGFrZXMgYW4gb3B0aW9uYWwgYGBmdW5jYGAgYXJndW1lbnQgZm9yCitwcm92aWRpbmcgYSB1c2VyLXN1cHBsaWVkIGJpbmFyeSBmdW5jdGlvbi4KKworCitsb2dnaW5nCistLS0tLS0tCisKK1RoZSA6ZnVuYzpgfmxvZ2dpbmcuYmFzaWNDb25maWdgIGZ1bmN0aW9uIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCBgYGhhbmRsZXJzYGAKK2FyZ3VtZW50IHRha2luZyBhbiBpdGVyYWJsZSBvZiBoYW5kbGVycyB0byBiZSBhZGRlZCB0byB0aGUgcm9vdCBsb2dnZXIuCisKK0EgY2xhc3MgbGV2ZWwgYXR0cmlidXRlIDphdHRyOmB+bG9nZ2luZy5oYW5kbGVycy5TeXNMb2dIYW5kbGVyLmFwcGVuZF9udWxgIGhhcworYmVlbiBhZGRlZCB0byA6Y2xhc3M6YH5sb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXJgIHRvIGFsbG93IGNvbnRyb2wgb2YgdGhlCithcHBlbmRpbmcgb2YgdGhlIGBgTlVMYGAgKGBgXDAwMGBgKSBieXRlIHRvIHN5c2xvZyByZWNvcmRzLCBzaW5jZSBmb3Igc29tZQorZGVhbW9ucyBpdCBpcyByZXF1aXJlZCB3aGlsZSBmb3Igb3RoZXJzIGl0IGlzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBsb2cuCisKKworCittYXRoCistLS0tCisKK1RoZSA6bW9kOmBtYXRoYCBtb2R1bGUgaGFzIGEgbmV3IGZ1bmN0aW9uLCA6ZnVuYzpgfm1hdGgubG9nMmAsICB3aGljaCByZXR1cm5zCit0aGUgYmFzZS0yIGxvZ2FyaXRobSBvZiAqeCouCisKKyhXcml0dGVuIGJ5IE1hcmsgRGlja2luc29uIGluIDppc3N1ZTpgMTE4ODhgKS4KKworCittbWFwCistLS0tCisKK1RoZSA6bWV0aDpgfm1tYXAubW1hcC5yZWFkYCBtZXRob2QgaXMgbm93IG1vcmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIGZpbGUtbGlrZQorb2JqZWN0czogaWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3Igc3BlY2lmaWVkIGFzIGBgTm9uZWBgLCBpdCByZXR1cm5zIHRoZQorYnl0ZXMgZnJvbSB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIHRvIHRoZSBlbmQgb2YgdGhlIG1hcHBpbmcuICAoQ29udHJpYnV0ZWQKK2J5IFBldHJpIExlaHRpbmVuIGluIDppc3N1ZTpgMTIwMjFgLikKKworCittdWx0aXByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmV3IDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0YCBmdW5jdGlvbiBhbGxvd3MgdG8gcG9sbAorbXVsdGlwbGUgb2JqZWN0cyAoc3VjaCBhcyBjb25uZWN0aW9ucywgc29ja2V0cyBhbmQgcGlwZXMpIHdpdGggYSB0aW1lb3V0LgorKENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgT3Vka2VyayBpbiA6aXNzdWU6YDEyMzI4YC4pCisKKzpjbGFzczpgbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIG9iamVjdHMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCittdWx0aXByb2Nlc3NpbmcgY29ubmVjdGlvbnMuCisoQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBPdWRrZXJrIGluIDppc3N1ZTpgNDg5MmAuKQorCis6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYCBub3cgYWNjZXB0cyBhIGBgZGFlbW9uYGAga2V5d29yZCBhcmd1bWVudAordG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgaW5oZXJpdGluZyB0aGUgYGBkYWVtb25gYCBmbGFnIGZyb20KK3RoZSBwYXJlbnQgcHJvY2VzcyAoOmlzc3VlOmA2MDY0YCkuCisKK05ldyBhdHRyaWJ1dGUgYXR0cmlidXRlIDpkYXRhOmBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5zZW50aW5lbGAgYWxsb3dzIGEKK3Byb2dyYW0gdG8gd2FpdCBvbiBtdWx0aXBsZSA6Y2xhc3M6YH5tdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2Agb2JqZWN0cyBhdCBvbmUKK3RpbWUgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIE9TIHByaW1pdGl2ZXMgKGZvciBleGFtcGxlLCA6bW9kOmBzZWxlY3RgIG9uCitwb3NpeCBzeXN0ZW1zKS4KKworTmV3IG1ldGhvZHMgOm1ldGg6YG11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2wuc3Rhcm1hcGAgYW5kCis6bWV0aDpgfm11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2wuc3Rhcm1hcF9hc3luY2AgcHJvdmlkZQorOmZ1bmM6YGl0ZXJ0b29scy5zdGFybWFwYCBlcXVpdmFsZW50cyB0byB0aGUgZXhpc3RpbmcKKzptZXRoOmBtdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLm1hcGAgYW5kCis6bWV0aDpgfm11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2wubWFwX2FzeW5jYCBmdW5jdGlvbnMuICAoQ29udHJpYnV0ZWQgYnkgSHluZWsKK1NjaGxhd2FjayBpbiA6aXNzdWU6YDEyNzA4YC4pCisKKworbm50cGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmBubnRwbGliLk5OVFBgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvCit1bmNvbmRpdGlvbmFsbHkgY29uc3VtZSA6ZXhjOmBzb2NrZXQuZXJyb3JgIGV4Y2VwdGlvbnMgYW5kIHRvIGNsb3NlIHRoZSBOTlRQCitjb25uZWN0aW9uIHdoZW4gZG9uZTo6CisKKyAgPj4+IGZyb20gbm50cGxpYiBpbXBvcnQgTk5UUAorICA+Pj4gd2l0aCBOTlRQKCduZXdzLmdtYW5lLm9yZycpIGFzIG46CisgIC4uLiAgICAgbi5ncm91cCgnZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycpCisgIC4uLgorICAoJzIxMSAxNzU1IDEgMTc1NSBnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJywgMTc1NSwgMSwgMTc1NSwgJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICA+Pj4KKworKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgOTc5NWApCisKKworb3MKKy0tCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3MucGlwZTJgIGZ1bmN0aW9uIHRoYXQgbWFrZXMgaXQKKyAgcG9zc2libGUgdG8gY3JlYXRlIGEgcGlwZSB3aXRoIDpkYXRhOmB+b3MuT19DTE9FWEVDYCBvcgorICA6ZGF0YTpgfm9zLk9fTk9OQkxPQ0tgIGZsYWdzIHNldCBhdG9taWNhbGx5LiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvCisgIGF2b2lkIHJhY2UgY29uZGl0aW9ucyBpbiBtdWx0aS10aHJlYWRlZCBwcm9ncmFtcy4KKworKiBUaGUgOm1vZDpgb3NgIG1vZHVsZSBoYXMgYSBuZXcgOmZ1bmM6YH5vcy5zZW5kZmlsZWAgZnVuY3Rpb24gd2hpY2ggcHJvdmlkZXMKKyAgYW4gZWZmaWNlbnQgInplcm8tY29weSIgd2F5IGZvciBjb3B5aW5nIGRhdGEgZnJvbSBvbmUgZmlsZSAob3Igc29ja2V0KQorICBkZXNjcmlwdG9yIHRvIGFub3RoZXIuIFRoZSBwaHJhc2UgInplcm8tY29weSIgcmVmZXJzIHRvIHRoZSBmYWN0IHRoYXQgYWxsIG9mCisgIHRoZSBjb3B5aW5nIG9mIGRhdGEgYmV0d2VlbiB0aGUgdHdvIGRlc2NyaXB0b3JzIGlzIGRvbmUgZW50aXJlbHkgYnkgdGhlCisgIGtlcm5lbCwgd2l0aCBubyBjb3B5aW5nIG9mIGRhdGEgaW50byB1c2Vyc3BhY2UgYnVmZmVycy4gOmZ1bmM6YH5vcy5zZW5kZmlsZWAKKyAgY2FuIGJlIHVzZWQgdG8gZWZmaWNpZW50bHkgY29weSBkYXRhIGZyb20gYSBmaWxlIG9uIGRpc2sgdG8gYSBuZXR3b3JrIHNvY2tldCwKKyAgZS5nLiBmb3IgZG93bmxvYWRpbmcgYSBmaWxlLgorCisgIChQYXRjaCBzdWJtaXR0ZWQgYnkgUm9zcyBMYWdlcndhbGwgYW5kIEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTA4ODJgLikKKworKiBUbyBhdm9pZCByYWNlIGNvbmRpdGlvbnMgbGlrZSBzeW1saW5rIGF0dGFja3MgYW5kIGlzc3VlcyB3aXRoIHRlbXBvcmFyeQorICBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGl0IGlzIG1vcmUgcmVsaWFibGUgKGFuZCBhbHNvIGZhc3RlcikgdG8gbWFuaXB1bGF0ZQorICBmaWxlIGRlc2NyaXB0b3JzIGluc3RlYWQgb2YgZmlsZSBuYW1lcy4gUHl0aG9uIDMuMyBlbmhhbmNlcyBleGlzdGluZyBmdW5jdGlvbnMKKyAgYW5kIGludHJvZHVjZXMgbmV3IGZ1bmN0aW9ucyB0byB3b3JrIG9uIGZpbGUgZGVzY3JpcHRvcnMgKDppc3N1ZTpgNDc2MWAsCisgIDppc3N1ZTpgMTA3NTVgIGFuZCA6aXNzdWU6YDE0NjI2YCkuCisKKyAgLSBUaGUgOm1vZDpgb3NgIG1vZHVsZSBoYXMgYSBuZXcgOmZ1bmM6YH5vcy5md2Fsa2AgZnVuY3Rpb24gc2ltaWxhciB0bworICAgIDpmdW5jOmB+b3Mud2Fsa2AgZXhjZXB0IHRoYXQgaXQgYWxzbyB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycyByZWZlcnJpbmcgdG8gdGhlCisgICAgZGlyZWN0b3JpZXMgdmlzaXRlZC4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0byBhdm9pZCBzeW1saW5rIHJhY2VzLgorCisgIC0gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZ2V0IG5ldyBvcHRpb25hbCAqZGlyX2ZkKiAoOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8KKyAgICBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gKSBhbmQvb3IgKmZvbGxvd19zeW1saW5rcyogKDpyZWY6YG5vdAorICAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmApOgorICAgIDpmdW5jOmB+b3MuYWNjZXNzYCwgOmZ1bmM6YH5vcy5jaGZsYWdzYCwgOmZ1bmM6YH5vcy5jaG1vZGAsIDpmdW5jOmB+b3MuY2hvd25gLAorICAgIDpmdW5jOmB+b3MubGlua2AsIDpmdW5jOmB+b3MubHN0YXRgLCA6ZnVuYzpgfm9zLm1rZGlyYCwgOmZ1bmM6YH5vcy5ta2ZpZm9gLAorICAgIDpmdW5jOmB+b3MubWtub2RgLCA6ZnVuYzpgfm9zLm9wZW5gLCA6ZnVuYzpgfm9zLnJlYWRsaW5rYCwgOmZ1bmM6YH5vcy5yZW1vdmVgLAorICAgIDpmdW5jOmB+b3MucmVuYW1lYCwgOmZ1bmM6YH5vcy5yZXBsYWNlYCwgOmZ1bmM6YH5vcy5ybWRpcmAsIDpmdW5jOmB+b3Muc3RhdGAsCisgICAgOmZ1bmM6YH5vcy5zeW1saW5rYCwgOmZ1bmM6YH5vcy51bmxpbmtgLCA6ZnVuYzpgfm9zLnV0aW1lYC4gIFBsYXRmb3JtCisgICAgc3VwcG9ydCBmb3IgdXNpbmcgdGhlc2UgcGFyYW1ldGVycyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlIHNldHMKKyAgICA6ZGF0YTpgb3Muc3VwcG9ydHNfZGlyX2ZkYCBhbmQgOmRhdGE6YG9zLnN1cHBvcnRzX2ZvbGxvd3Nfc3ltbGlua3NgLgorCisgIC0gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbm93IHN1cHBvcnQgYSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZWlyIHBhdGggYXJndW1lbnQ6CisgICAgOmZ1bmM6YH5vcy5jaGRpcmAsIDpmdW5jOmB+b3MuY2htb2RgLCA6ZnVuYzpgfm9zLmNob3duYCwKKyAgICA6ZnVuYzpgfm9zLmV4ZWN2ZWAsIDpmdW5jOmB+b3MubGlzdGRpcmAsIDpmdW5jOmB+b3MucGF0aGNvbmZgLCA6ZnVuYzpgfm9zLnBhdGguZXhpc3RzYCwKKyAgICA6ZnVuYzpgfm9zLnN0YXRgLCA6ZnVuYzpgfm9zLnN0YXR2ZnNgLCA6ZnVuYzpgfm9zLnV0aW1lYC4gIFBsYXRmb3JtIHN1cHBvcnQKKyAgICBmb3IgdGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlIDpkYXRhOmBvcy5zdXBwb3J0c19mZGAgc2V0LgorCisqIDpmdW5jOmB+b3MuYWNjZXNzYCBhY2NlcHRzIGFuIGBgZWZmZWN0aXZlX2lkc2BgIGtleXdvcmQgYXJndW1lbnQgdG8gdHVybiBvbgorICB1c2luZyB0aGUgZWZmZWN0aXZlIHVpZC9naWQgcmF0aGVyIHRoYW4gdGhlIHJlYWwgdWlkL2dpZCBpbiB0aGUgYWNjZXNzIGNoZWNrLgorICBQbGF0Zm9ybSBzdXBwb3J0IGZvciB0aGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUKKyAgOmRhdGE6YH5vcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzYCBzZXQuCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIHR3byBuZXcgZnVuY3Rpb25zOiA6ZnVuYzpgfm9zLmdldHByaW9yaXR5YCBhbmQKKyAgOmZ1bmM6YH5vcy5zZXRwcmlvcml0eWAuIFRoZXkgY2FuIGJlIHVzZWQgdG8gZ2V0IG9yIHNldCBwcm9jZXNzCisgIG5pY2VuZXNzL3ByaW9yaXR5IGluIGEgZmFzaGlvbiBzaW1pbGFyIHRvIDpmdW5jOmBvcy5uaWNlYCBidXQgZXh0ZW5kZWQgdG8gYWxsCisgIHByb2Nlc3NlcyBpbnN0ZWFkIG9mIGp1c3QgdGhlIGN1cnJlbnQgb25lLgorCisgIChQYXRjaCBzdWJtaXR0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMDc4NGAuKQorCisqIFRoZSBuZXcgOmZ1bmM6YG9zLnJlcGxhY2VgIGZ1bmN0aW9uIGFsbG93cyBjcm9zcy1wbGF0Zm9ybSByZW5hbWluZyBvZiBhCisgIGZpbGUgd2l0aCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uICBXaXRoIDpmdW5jOmBvcy5yZW5hbWVgLCBhbiBleGlzdGluZworICBkZXN0aW5hdGlvbiBmaWxlIGlzIG92ZXJ3cml0dGVuIHVuZGVyIFBPU0lYLCBidXQgcmFpc2VzIGFuIGVycm9yIHVuZGVyCisgIFdpbmRvd3MuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDg4MjhgLikKKworKiBUaGUgc3RhdCBmYW1pbHkgb2YgZnVuY3Rpb25zICg6ZnVuYzpgfm9zLnN0YXRgLCA6ZnVuYzpgfm9zLmZzdGF0YCwKKyAgYW5kIDpmdW5jOmB+b3MubHN0YXRgKSBub3cgc3VwcG9ydCByZWFkaW5nIGEgZmlsZSdzIHRpbWVzdGFtcHMKKyAgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbi4gIFN5bW1ldHJpY2FsbHksIDpmdW5jOmB+b3MudXRpbWVgCisgIGNhbiBub3cgd3JpdGUgZmlsZSB0aW1lc3RhbXBzIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24uICAoQ29udHJpYnV0ZWQgYnkKKyAgTGFycnkgSGFzdGluZ3MgaW4gOmlzc3VlOmAxNDEyN2AuKQorCisqIFRoZSBuZXcgOmZ1bmM6YG9zLmdldF90ZXJtaW5hbF9zaXplYCBmdW5jdGlvbiBxdWVyaWVzIHRoZSBzaXplIG9mIHRoZQorICB0ZXJtaW5hbCBhdHRhY2hlZCB0byBhIGZpbGUgZGVzY3JpcHRvci4gU2VlIGFsc28KKyAgOmZ1bmM6YHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZWAuCisgIChDb250cmlidXRlZCBieSBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGluIDppc3N1ZTpgMTM2MDlgLikKKworLi4gWFhYIHNvcnQgb3V0IHRoaXMgbWVzcyBhZnRlciBiZXRhMQorCisqIE5ldyBmdW5jdGlvbnMgdG8gc3VwcG9ydCBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzICg6aXNzdWU6YDEyNzIwYCk6CisgIDpmdW5jOmB+b3MuZ2V0eGF0dHJgLCA6ZnVuYzpgfm9zLmxpc3R4YXR0cmAsIDpmdW5jOmB+b3MucmVtb3ZleGF0dHJgLAorICA6ZnVuYzpgfm9zLnNldHhhdHRyYC4KKworKiBOZXcgaW50ZXJmYWNlIHRvIHRoZSBzY2hlZHVsZXIuIFRoZXNlIGZ1bmN0aW9ucworICBjb250cm9sIGhvdyBhIHByb2Nlc3MgaXMgYWxsb2NhdGVkIENQVSB0aW1lIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBOZXcKKyAgZnVuY3Rpb25zOgorICA6ZnVuYzpgfm9zLnNjaGVkX2dldF9wcmlvcml0eV9tYXhgLCA6ZnVuYzpgfm9zLnNjaGVkX2dldF9wcmlvcml0eV9taW5gLAorICA6ZnVuYzpgfm9zLnNjaGVkX2dldGFmZmluaXR5YCwgOmZ1bmM6YH5vcy5zY2hlZF9nZXRwYXJhbWAsCisgIDpmdW5jOmB+b3Muc2NoZWRfZ2V0c2NoZWR1bGVyYCwgOmZ1bmM6YH5vcy5zY2hlZF9ycl9nZXRfaW50ZXJ2YWxgLAorICA6ZnVuYzpgfm9zLnNjaGVkX3NldGFmZmluaXR5YCwgOmZ1bmM6YH5vcy5zY2hlZF9zZXRwYXJhbWAsCisgIDpmdW5jOmB+b3Muc2NoZWRfc2V0c2NoZWR1bGVyYCwgOmZ1bmM6YH5vcy5zY2hlZF95aWVsZGAsCisKKyogTmV3IGZ1bmN0aW9ucyB0byBjb250cm9sIHRoZSBmaWxlIHN5c3RlbToKKworICAqIDpmdW5jOmB+b3MucG9zaXhfZmFkdmlzZWA6IEFubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYQorICAgIHNwZWNpZmljIHBhdHRlcm4gdGh1cyBhbGxvd2luZyB0aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy4KKyAgKiA6ZnVuYzpgfm9zLnBvc2l4X2ZhbGxvY2F0ZWA6IEVuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQKKyAgICBmb3IgYSBmaWxlLgorICAqIDpmdW5jOmB+b3Muc3luY2A6IEZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4KKworKiBBZGRpdGlvbmFsIG5ldyAgcG9zaXggZnVuY3Rpb25zOgorCisgICogOmZ1bmM6YH5vcy5sb2NrZmA6IEFwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICogOmZ1bmM6YH5vcy5wcmVhZGA6IFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBhdCBhbiBvZmZzZXQsIHRoZSBmaWxlCisgICAgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLgorICAqIDpmdW5jOmB+b3MucHdyaXRlYDogV3JpdGUgdG8gYSBmaWxlIGRlc2NyaXB0b3IgZnJvbSBhbiBvZmZzZXQsIGxlYXZpbmcKKyAgICB0aGUgZmlsZSBvZmZzZXQgdW5jaGFuZ2VkLgorICAqIDpmdW5jOmB+b3MucmVhZHZgOiBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgaW50byBhIG51bWJlciBvZiB3cml0YWJsZSBidWZmZXJzLgorICAqIDpmdW5jOmB+b3MudHJ1bmNhdGVgOiBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvICpwYXRoKiwgc28gdGhhdAorICAgIGl0IGlzIGF0IG1vc3QgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4KKyAgKiA6ZnVuYzpgfm9zLndhaXRpZGA6IFdhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIG9uZSBvciBtb3JlIGNoaWxkIHByb2Nlc3Nlcy4KKyAgKiA6ZnVuYzpgfm9zLndyaXRldmA6IFdyaXRlIHRoZSBjb250ZW50cyBvZiAqYnVmZmVycyogdG8gYSBmaWxlIGRlc2NyaXB0b3IsCisgICAgd2hlcmUgKmJ1ZmZlcnMqIGlzIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBidWZmZXJzLgorICAqIDpmdW5jOmB+b3MuZ2V0Z3JvdXBsaXN0YCAoOmlzc3VlOmA5MzQ0YCk6IFJldHVybiBsaXN0IG9mIGdyb3VwIGlkcyB0aGF0CisgICAgc3BlY2lmaWVkIHVzZXIgYmVsb25ncyB0by4KKworKiA6ZnVuYzpgfm9zLnRpbWVzYCBhbmQgOmZ1bmM6YH5vcy51bmFtZWA6IFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSBhIHR1cGxlIHRvCisgIGEgdHVwbGUtbGlrZSBvYmplY3Qgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzLgorCisqIFNvbWUgcGxhdGZvcm1zIG5vdyBzdXBwb3J0IGFkZGl0aW9uYWwgY29uc3RhbnRzIGZvciB0aGUgOmZ1bmM6YH5vcy5sc2Vla2AKKyAgZnVuY3Rpb24sIHN1Y2ggYXMgYGBvcy5TRUVLX0hPTEVgYCBhbmQgYGBvcy5TRUVLX0RBVEFgYC4KKworKiBOZXcgY29uc3RhbnRzIDpkYXRhOmB+b3MuUlRMRF9MQVpZYCwgOmRhdGE6YH5vcy5SVExEX05PV2AsCisgIDpkYXRhOmB+b3MuUlRMRF9HTE9CQUxgLCA6ZGF0YTpgfm9zLlJUTERfTE9DQUxgLCA6ZGF0YTpgfm9zLlJUTERfTk9ERUxFVEVgLAorICA6ZGF0YTpgfm9zLlJUTERfTk9MT0FEYCwgYW5kIDpkYXRhOmB+b3MuUlRMRF9ERUVQQklORGAgYXJlIGF2YWlsYWJsZSBvbgorICBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHRoZW0uICAgVGhlc2UgYXJlIGZvciB1c2Ugd2l0aCB0aGUKKyAgOmZ1bmM6YHN5cy5zZXRkbG9wZW5mbGFnc2AgZnVuY3Rpb24sIGFuZCBzdXBlcnNlZGUgdGhlIHNpbWlsYXIgY29uc3RhbnRzCisgIGRlZmluZWQgaW4gOm1vZDpgY3R5cGVzYCBhbmQgOm1vZDpgRExGQ05gLiAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyCisgIGluIDppc3N1ZTpgMTMyMjZgLikKKworKiA6ZnVuYzpgb3Muc3ltbGlua2Agbm93IGFjY2VwdHMgKGFuZCBpZ25vcmVzKSB0aGUgYGB0YXJnZXRfaXNfZGlyZWN0b3J5YGAKKyAga2V5d29yZCBhcmd1bWVudCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMsIHRvIGVhc2UgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydC4KKworCitwZGIKKy0tLQorCitUYWItY29tcGxldGlvbiBpcyBub3cgYXZhaWxhYmxlIG5vdCBvbmx5IGZvciBjb21tYW5kIG5hbWVzLCBidXQgYWxzbyB0aGVpcgorYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGZvciB0aGUgYGBicmVha2BgIGNvbW1hbmQsIGZ1bmN0aW9uIGFuZCBmaWxlIG5hbWVzCithcmUgY29tcGxldGVkLgorCisoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsIGluIDppc3N1ZTpgMTQyMTBgKQorCisKK3BpY2tsZQorLS0tLS0tCisKKzpjbGFzczpgcGlja2xlLlBpY2tsZXJgIG9iamVjdHMgbm93IGhhdmUgYW4gb3B0aW9uYWwKKzphdHRyOmB+cGlja2xlLlBpY2tsZXIuZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSBhbGxvd2luZyB0byBzZXQgcGVyLXBpY2tsZXIKK3JlZHVjdGlvbiBmdW5jdGlvbnMuCisKKyhDb250cmlidXRlZCBieSBSaWNoYXJkIE91ZGtlcmsgaW4gOmlzc3VlOmAxNDE2NmAuKQorCisKK3B5ZG9jCistLS0tLQorCitUaGUgVGsgR1VJIGFuZCB0aGUgOmZ1bmM6YH5weWRvYy5zZXJ2ZWAgZnVuY3Rpb24gaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUKKzptb2Q6YHB5ZG9jYCBtb2R1bGU6IGBgcHlkb2MgLWdgYCBhbmQgOmZ1bmM6YH5weWRvYy5zZXJ2ZWAgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQKK2luIFB5dGhvbiAzLjIuCisKKworcmUKKy0tCisKKzpjbGFzczpgc3RyYCByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyBzdXBwb3J0IGBgXHVgYCBhbmQgYGBcVWBgIGVzY2FwZXMuCisKKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMzY2NWAuKQorCisKK3NjaGVkCistLS0tLQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLnJ1bmAgbm93IGFjY2VwdHMgYSAqYmxvY2tpbmcqIHBhcmFtZXRlciB3aGljaCB3aGVuCisgIHNldCB0byBGYWxzZSBtYWtlcyB0aGUgbWV0aG9kIGV4ZWN1dGUgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZQorICBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiBpbW1lZGlhdGVseS4KKyAgVGhpcyBpcyB1c2VmdWwgaW4gY2FzZSB5b3Ugd2FudCB0byB1c2UgdGhlIDpjbGFzczpgfnNjaGVkLnNjaGVkdWxlcmAgaW4KKyAgbm9uLWJsb2NraW5nIGFwcGxpY2F0aW9ucy4gIChDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEzNDQ5YCkKKworKiA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGNsYXNzIGNhbiBub3cgYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKKyAgZW52aXJvbm1lbnRzLiAgKENvbnRyaWJ1dGVkIGJ5IEpvc2lhaCBDYXJsc29uIGFuZCBHaWFtcGFvbG8gUm9kb2zDoCBpbgorICA6aXNzdWU6YDg2ODRgKQorCisqICp0aW1lZnVuYyogYW5kICpkZWxheWZ1bmN0KiBwYXJhbWV0ZXJzIG9mIDpjbGFzczpgfnNjaGVkLnNjaGVkdWxlcmAgY2xhc3MKKyAgY29uc3RydWN0b3IgYXJlIG5vdyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gOmZ1bmM6YHRpbWUudGltZWAgYW5kCisgIDpmdW5jOmB0aW1lLnNsZWVwYCByZXNwZWN0aXZlbHkuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsgaW4KKyAgOmlzc3VlOmAxMzI0NWApCisKKyogOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJgIGFuZCA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmFic2AKKyAgKmFyZ3VtZW50KiBwYXJhbWV0ZXIgaXMgbm93IG9wdGlvbmFsLiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYCBhbmQgOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJhYnNgCisgIG5vdyBhY2NlcHQgYSAqa3dhcmdzKiBwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsgaW4KKyAgOmlzc3VlOmAxMzI0NWApCisKKworc2VsZWN0CistLS0tLS0KKworU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMgcGxhdGZvcm1zIGhhdmUgYSBuZXcgY2xhc3MgOmNsYXNzOmBzZWxlY3QuZGV2cG9sbGAKK2ZvciBoaWdoIHBlcmZvcm1hbmNlIGFzeW5jaHJvbm91cyBzb2NrZXRzIHZpYSA6ZmlsZTpgL2Rldi9wb2xsYC4KKyhDb250cmlidXRlZCBieSBKZXPDunMgQ2VhIEF2acOzbiBpbiA6aXNzdWU6YDYzOTdgLikKKworCitzaGxleAorLS0tLS0KKworVGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIGhlbHBlciBmdW5jdGlvbiBgYHF1b3RlYGAgZnJvbSB0aGUKKzptb2Q6YHBpcGVzYCBtb2R1bGVzIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSA6bW9kOmBzaGxleGAgbW9kdWxlIGFuZAorZG9jdW1lbnRlZC4gIDpmdW5jOmB+c2hsZXgucXVvdGVgIHByb3Blcmx5IGVzY2FwZXMgYWxsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcKK3RoYXQgbWlnaHQgYmUgb3RoZXJ3aXNlIGdpdmVuIHNwZWNpYWwgbWVhbmluZyBieSB0aGUgc2hlbGwuCisKKworc2h1dGlsCistLS0tLS0KKworKiBOZXcgZnVuY3Rpb25zOgorCisgICogOmZ1bmM6YH5zaHV0aWwuZGlza191c2FnZWA6IHByb3ZpZGVzIHRvdGFsLCB1c2VkIGFuZCBmcmVlIGRpc2sgc3BhY2UKKyAgICBzdGF0aXN0aWNzLiAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMjQ0MmApCisgICogOmZ1bmM6YH5zaHV0aWwuY2hvd25gOiBhbGxvd3Mgb25lIHRvIGNoYW5nZSB1c2VyIGFuZC9vciBncm91cCBvZiB0aGUgZ2l2ZW4KKyAgICBwYXRoIGFsc28gc3BlY2lmeWluZyB0aGUgdXNlci9ncm91cCBuYW1lcyBhbmQgbm90IG9ubHkgdGhlaXIgbnVtZXJpYworICAgIGlkcy4gKENvbnRyaWJ1dGVkIGJ5IFNhbmRybyBUb3NpIGluIDppc3N1ZTpgMTIxOTFgKQorICAqIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgOiByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cKKyAgICB0byB3aGljaCB0aGUgaW50ZXJwcmV0ZXIgaXMgYXR0YWNoZWQuICAoQ29udHJpYnV0ZWQgYnkgWmJpZ25pZXcKKyAgICBKxJlkcnplamV3c2tpLVN6bWVrIGluIDppc3N1ZTpgMTM2MDlgLikKKworKiA6ZnVuYzpgfnNodXRpbC5jb3B5MmAgYW5kIDpmdW5jOmB+c2h1dGlsLmNvcHlzdGF0YCBub3cgcHJlc2VydmUgZmlsZQorICB0aW1lc3RhbXBzIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24gb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdC4KKyAgVGhleSBhbHNvIHByZXNlcnZlIGZpbGUgImV4dGVuZGVkIGF0dHJpYnV0ZXMiIG9uIExpbnV4LiAgKENvbnRyaWJ1dGVkCisgIGJ5IExhcnJ5IEhhc3RpbmdzIGluIDppc3N1ZTpgMTQxMjdgIGFuZCAgOmlzc3VlOmAxNTIzOGAuKQorCisqIFNldmVyYWwgZnVuY3Rpb25zIG5vdyB0YWtlIGFuIG9wdGlvbmFsIGBgc3ltbGlua3NgYCBhcmd1bWVudDogd2hlbiB0aGF0CisgIHBhcmFtZXRlciBpcyB0cnVlLCBzeW1saW5rcyBhcmVuJ3QgZGVyZWZlcmVuY2VkIGFuZCB0aGUgb3BlcmF0aW9uIGluc3RlYWQKKyAgYWN0cyBvbiB0aGUgc3ltbGluayBpdHNlbGYgKG9yIGNyZWF0ZXMgb25lLCBpZiByZWxldmFudCkuCisgIChDb250cmlidXRlZCBieSBIeW5layBTY2hsYXdhY2sgaW4gOmlzc3VlOmAxMjcxNWAuKQorCisqIFdoZW4gY29weWluZyBmaWxlcyB0byBhIGRpZmZlcmVudCBmaWxlIHN5c3RlbSwgOmZ1bmM6YH5zaHV0aWwubW92ZWAgbm93CisgIGhhbmRsZXMgc3ltbGlua3MgdGhlIHdheSB0aGUgcG9zaXggYGBtdmBgIGNvbW1hbmQgZG9lcywgcmVjcmVhdGluZyB0aGUKKyAgc3ltbGluayByYXRoZXIgdGhhbiBjb3B5aW5nIHRoZSB0YXJnZXQgZmlsZSBjb250ZW50cy4gIChDb250cmlidXRlZCBieQorICBKb25hdGhhbiBOaWVob2YgaW4gOmlzc3VlOmA5OTkzYC4pICA6ZnVuYzpgfnNodXRpbC5tb3ZlYCBub3cgYWxzbyByZXR1cm5zCisgIHRoZSBgYGRzdGBgIGFyZ3VtZW50IGFzIGl0cyByZXN1bHQuCisKKyogOmZ1bmM6YH5zaHV0aWwucm10cmVlYCBpcyBub3cgcmVzaXN0YW50IHRvIHN5bWxpbmsgYXR0YWNrcyBvbiBwbGF0Zm9ybXMKKyAgd2hpY2ggc3VwcG9ydCB0aGUgbmV3IGBgZGlyX2ZkYGAgcGFyYW1ldGVyIGluIDpmdW5jOmBvcy5vcGVuYCBhbmQKKyAgOmZ1bmM6YG9zLnVubGlua2AuIChDb250cmlidXRlZCBieSBNYXJ0aW4gdm9uIEzDtndpcyBhbmQgSHluZWsgU2NobGF3YWNrCisgIGluIDppc3N1ZTpgNDQ4OWAuKQorCisKK3NpZ25hbAorLS0tLS0tCisKKyogVGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGhhcyBuZXcgZnVuY3Rpb25zOgorCisgICogOmZ1bmM6YH5zaWduYWwucHRocmVhZF9zaWdtYXNrYDogZmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlCisgICAgY2FsbGluZyB0aHJlYWQgKENvbnRyaWJ1dGVkIGJ5IEplYW4tUGF1bCBDYWxkZXJvbmUgaW4gOmlzc3VlOmA4NDA3YCkgOworICAqIDpmdW5jOmB+c2lnbmFsLnB0aHJlYWRfa2lsbGA6IHNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQgOworICAqIDpmdW5jOmB+c2lnbmFsLnNpZ3BlbmRpbmdgOiBleGFtaW5lIHBlbmRpbmcgZnVuY3Rpb25zIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0YDogd2FpdCBhIHNpZ25hbC4KKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0aW5mb2A6IHdhaXQgZm9yIGEgc2lnbmFsLCByZXR1cm5pbmcgZGV0YWlsZWQKKyAgICBpbmZvcm1hdGlvbiBhYm91dCBpdC4KKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWd0aW1lZHdhaXRgOiBsaWtlIDpmdW5jOmB+c2lnbmFsLnNpZ3dhaXRpbmZvYCBidXQgd2l0aCBhCisgICAgdGltZW91dC4KKworKiBUaGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVzIHRoZSBzaWduYWwgbnVtYmVyIGFzIGEgc2luZ2xlIGJ5dGUgaW5zdGVhZCBvZgorICBhIG51bCBieXRlIGludG8gdGhlIHdha2V1cCBmaWxlIGRlc2NyaXB0b3IuIFNvIGl0IGlzIHBvc3NpYmxlIHRvIHdhaXQgbW9yZQorICB0aGFuIG9uZSBzaWduYWwgYW5kIGtub3cgd2hpY2ggc2lnbmFscyB3ZXJlIHJhaXNlZC4KKworKiA6ZnVuYzpgc2lnbmFsLnNpZ25hbGAgYW5kIDpmdW5jOmBzaWduYWwuc2lnaW50ZXJydXB0YCByYWlzZSBhbiBPU0Vycm9yLAorICBpbnN0ZWFkIG9mIGEgUnVudGltZUVycm9yOiBPU0Vycm9yIGhhcyBhbiBlcnJubyBhdHRyaWJ1dGUuCisKKworc210cGQKKy0tLS0tCisKK1RoZSA6bW9kOmBzbXRwZGAgbW9kdWxlIG5vdyBzdXBwb3J0cyA6cmZjOmA1MzIxYCAoZXh0ZW5kZWQgU01UUCkgYW5kIDpyZmM6YDE4NzBgCisoc2l6ZSBleHRlbnNpb24pLiAgUGVyIHRoZSBzdGFuZGFyZCwgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCBpZiBhbmQgb25seQoraWYgdGhlIGNsaWVudCBpbml0aWF0ZXMgdGhlIHNlc3Npb24gd2l0aCBhbiBgYEVITE9gYCBjb21tYW5kLgorCisoSW5pdGlhbCBgYEVMSE9gYCBzdXBwb3J0IGJ5IEFsYmVydG8gVHJldmluby4gIFNpemUgZXh0ZW5zaW9uIGJ5IEp1aGFuYQorSmF1aGlhaW5lbi4gIFN1YnN0YW50aWFsIGFkZGl0aW9uYWwgd29yayBvbiB0aGUgcGF0Y2ggY29udHJpYnV0ZWQgYnkgTWljaGVsZQorT3Jyw7kgYW5kIERhbiBCb3N3ZWxsLiAgOmlzc3VlOmA4NzM5YCkKKworCitzbXRwbGliCistLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5zbXRwbGliLlNNVFBgLCA6Y2xhc3M6YH5zbXRwbGliLlNNVFBfU1NMYCwgYW5kCis6Y2xhc3M6YH5zbXRwbGliLkxNVFBgIGNsYXNzZXMgbm93IGFjY2VwdCBhIGBgc291cmNlX2FkZHJlc3NgYCBrZXl3b3JkIGFyZ3VtZW50Cit0byBzcGVjaWZ5IHRoZSBgYChob3N0LCBwb3J0KWBgIHRvIHVzZSBhcyB0aGUgc291cmNlIGFkZHJlc3MgaW4gdGhlIGJpbmQgY2FsbAord2hlbiBjcmVhdGluZyB0aGUgb3V0Z29pbmcgc29ja2V0LiAgKENvbnRyaWJ1dGVkIGJ5IFBhdWxvIFNjYXJkaW5lIGluCis6aXNzdWU6YDExMjgxYC4pCisKKzpjbGFzczpgfnNtdHBsaWIuU01UUGAgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wsIGFsbG93aW5nIGFuCitgYFNNVFBgYCBpbnN0YW5jZSB0byBiZSB1c2VkIGluIGEgYGB3aXRoYGAgc3RhdGVtZW50LiAgKENvbnRyaWJ1dGVkCitieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDExMjg5YC4pCisKK1RoZSA6Y2xhc3M6YH5zbXRwbGliLlNNVFBfU1NMYCBjb25zdHJ1Y3RvciBhbmQgdGhlIDptZXRoOmB+c210cGxpYi5TTVRQLnN0YXJ0dGxzYAorbWV0aG9kIG5vdyBhY2NlcHQgYW4gU1NMQ29udGV4dCBwYXJhbWV0ZXIgdG8gY29udHJvbCBwYXJhbWV0ZXJzIG9mIHRoZSBzZWN1cmUKK2NoYW5uZWwuICAoQ29udHJpYnV0ZWQgYnkgS2FzdW4gSGVyYXRoIGluIDppc3N1ZTpgODgwOWApCisKKworc29ja2V0CistLS0tLS0KKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IGV4cG9zZXMgYWRkaXRpb25hbCBtZXRob2RzIHRvIHByb2Nlc3MKKyAgYW5jaWxsYXJ5IGRhdGEgd2hlbiBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm06CisKKyAgKiA6ZnVuYzpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ2AKKyAgKiA6ZnVuYzpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ2AKKyAgKiA6ZnVuYzpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ19pbnRvYAorCisgIChDb250cmlidXRlZCBieSBEYXZpZCBXYXRzb24gaW4gOmlzc3VlOmA2NTYwYCwgYmFzZWQgb24gYW4gZWFybGllciBwYXRjaCBieQorICBIZWlrbyBXdW5kcmFtKQorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIFBGX0NBTiBwcm90b2NvbCBmYW1pbHkKKyAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29ja2V0Y2FuKSwgb24gTGludXgKKyAgKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzI1MzQyNSkuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IE1hdHRoaWFzIEZ1Y2hzLCB1cGRhdGVkIGJ5IFRpYWdvIEdvbsOnYWx2ZXMgaW4gOmlzc3VlOmAxMDE0MWApCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgUEZfUkRTIHByb3RvY29sIGZhbWlseQorICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWxpYWJsZV9EYXRhZ3JhbV9Tb2NrZXRzIGFuZAorICBodHRwOi8vb3NzLm9yYWNsZS5jb20vcHJvamVjdHMvcmRzLykuCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgYGBQRl9TWVNURU1gYCBwcm90b2NvbAorICBmYW1pbHkgb24gT1MgWC4gIChDb250cmlidXRlZCBieSBNaWNoYWVsIEdvZGVyYmF1ZXIgaW4gOmlzc3VlOmAxMzc3N2AuKQorCisqIE5ldyBmdW5jdGlvbiA6ZnVuYzpgfnNvY2tldC5zZXRob3N0bmFtZWAgYWxsb3dzIHRoZSBob3N0bmFtZSB0byBiZSBzZXQKKyAgb24gdW5peCBzeXN0ZW1zIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgaGFzIHN1ZmZpY2llbnQgcHJpdmlsZWdlcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFJvc3MgTGFnZXJ3YWxsIGluIDppc3N1ZTpgMTA4NjZgLikKKworCitzb2NrZXRzZXJ2ZXIKKy0tLS0tLS0tLS0tLQorCis6Y2xhc3M6YH5zb2NrZXRzZXJ2ZXIuQmFzZVNlcnZlcmAgbm93IGhhcyBhbiBvdmVycmlkYWJsZSBtZXRob2QKKzptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuc2VydmljZV9hY3Rpb25zYCB0aGF0IGlzIGNhbGxlZCBieSB0aGUKKzptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcmAgbWV0aG9kIGluIHRoZSBzZXJ2aWNlIGxvb3AuCis6Y2xhc3M6YH5zb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluYCBub3cgdXNlcyB0aGlzIHRvIGNsZWFuIHVwIHpvbWJpZQorY2hpbGQgcHJvY2VzZXMuICAoQ29udHJpYnV0ZWQgYnkgSnVzdGluIFdhcmtlbnRpbiBpbiA6aXNzdWU6YDExMTA5YC4pCisKKworc3FsaXRlMworLS0tLS0tLQorCitOZXcgOmNsYXNzOmBzcWxpdGUzLkNvbm5lY3Rpb25gIG1ldGhvZAorOm1ldGg6YH5zcWxpdGUzLkNvbm5lY3Rpb24uc2V0X3RyYWNlX2NhbGxiYWNrYCBjYW4gYmUgdXNlZCB0byBjYXB0dXJlIGEgdHJhY2Ugb2YKK2FsbCBzcWwgY29tbWFuZHMgcHJvY2Vzc2VkIGJ5IHNxbGl0ZS4gIChDb250cmlidXRlZCBieSBUb3JzdGVuIExhbmRzY2hvZmYKK2luIDppc3N1ZTpgMTE2ODhgLikKKworCitzc2wKKy0tLQorCisqIFRoZSA6bW9kOmBzc2xgIG1vZHVsZSBoYXMgdHdvIG5ldyByYW5kb20gZ2VuZXJhdGlvbiBmdW5jdGlvbnM6CisKKyAgKiA6ZnVuYzpgfnNzbC5SQU5EX2J5dGVzYDogZ2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nCisgICAgcHNldWRvLXJhbmRvbSBieXRlcy4KKyAgKiA6ZnVuYzpgfnNzbC5SQU5EX3BzZXVkb19ieXRlc2A6IGdlbmVyYXRlIHBzZXVkby1yYW5kb20gYnl0ZXMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTIwNDlgKQorCisqIFRoZSA6bW9kOmBzc2xgIG1vZHVsZSBub3cgZXhwb3NlcyBhIGZpbmVyLWdyYWluZWQgZXhjZXB0aW9uIGhpZXJhcmNoeQorICBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciB0byBpbnNwZWN0IHRoZSB2YXJpb3VzIGtpbmRzIG9mIGVycm9ycy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTExODNgKQorCisqIDptZXRoOmB+c3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBub3cgYWNjZXB0cyBhICpwYXNzd29yZCogYXJndW1lbnQKKyAgdG8gYmUgdXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgZW5jcnlwdGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQWRhbSBTaW1wa2lucyBpbiA6aXNzdWU6YDEyODAzYCkKKworKiBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIGJvdGggcmVndWxhciBhbmQgRWxsaXB0aWMgQ3VydmUtYmFzZWQsIGlzCisgIG5vdyBzdXBwb3J0ZWQgdGhyb3VnaCB0aGUgOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtc2AgYW5kCisgIDptZXRoOmB+c3NsLlNTTENvbnRleHQuc2V0X2VjZGhfY3VydmVgIG1ldGhvZHMuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNjI2YCBhbmQgOmlzc3VlOmAxMzYyN2ApCisKKyogU1NMIHNvY2tldHMgaGF2ZSBhIG5ldyA6bWV0aDpgfnNzbC5TU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZ2AgbWV0aG9kCisgIGFsbG93aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjZXJ0YWluIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgc3VjaCBhcworICBTQ1JBTS1TSEEtMS1QTFVTLiAgKENvbnRyaWJ1dGVkIGJ5IEphY2VrIEtvbmllY3pueSBpbiA6aXNzdWU6YDEyNTUxYCkKKworKiBZb3UgY2FuIHF1ZXJ5IHRoZSBTU0wgY29tcHJlc3Npb24gYWxnb3JpdGhtIHVzZWQgYnkgYW4gU1NMIHNvY2tldCwgdGhhbmtzCisgIHRvIGl0cyBuZXcgOm1ldGg6YH5zc2wuU1NMU29ja2V0LmNvbXByZXNzaW9uYCBtZXRob2QuICBUaGUgbmV3IGF0dHJpYnV0ZQorICA6YXR0cjpgfnNzbC5PUF9OT19DT01QUkVTU0lPTmAgY2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBjb21wcmVzc2lvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM2MzRgKQorCisqIFN1cHBvcnQgaGFzIGJlZW4gYWRkZWQgZm9yIHRoZSBOZXh0IFByb2NvdG9sIE5lZ290aWF0aW9uIGV4dGVuc2lvbiB1c2luZworICB0aGUgOm1ldGg6YHNzbC5TU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCBtZXRob2QuCisgIChDb250cmlidXRlZCBieSBDb2xpbiBNYXJjIGluIDppc3N1ZTpgMTQyMDRgKQorCisqIFNTTCBlcnJvcnMgY2FuIG5vdyBiZSBpbnRyb3NwZWN0ZWQgbW9yZSBlYXNpbHkgdGhhbmtzIHRvCisgIDphdHRyOmB+c3NsLlNTTEVycm9yLmxpYnJhcnlgIGFuZCA6YXR0cjpgfnNzbC5TU0xFcnJvci5yZWFzb25gIGF0dHJpYnV0ZXMuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDE0ODM3YCkKKworKiBUaGUgOmZ1bmM6YH5zc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZWAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIElQdjYuCisgIChDb250cmlidXRlZCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkgaW4gOmlzc3VlOmAxMTgxMWAuKQorCisqIE5ldyBhdHRyaWJ1dGUgOmF0dHI6YH5zc2wuT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFYCBhbGxvd3Mgc2V0dGluZworICBTU0x2MyBzZXJ2ZXIgc29ja2V0cyB0byB1c2UgdGhlIHNlcnZlcidzIGNpcGhlciBvcmRlcmluZyBwcmVmZXJlbmNlIHJhdGhlcgorICB0aGFuIHRoZSBjbGllbnQncyAoOmlzc3VlOmAxMzYzNWApLgorCisKK3N0YXQKKy0tLS0KKworVGhlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlIGZ1bmN0aW9uIGhhcyBiZWVuIG1vdmVkIHRvCis6ZnVuYzpgc3RhdC5maWxlbW9kZWAuIEl0IGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZgordGhlIGZvcm0gJy1yd3hyd3hyd3gnLgorCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxNDgwN2ApCisKKworc3RydWN0CistLS0tLS0KKworVGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlIG5vdyBzdXBwb3J0cyBgYHNzaXplX3RgYCBhbmQgYGBzaXplX3RgYCB2aWEgdGhlCituZXcgY29kZXMgYGBuYGAgYW5kIGBgTmBgLCByZXNwZWN0aXZlbHkuICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UKK2luIDppc3N1ZTpgMzE2M2AuKQorCisKK3N1YnByb2Nlc3MKKy0tLS0tLS0tLS0KKworQ29tbWFuZCBzdHJpbmdzIGNhbiBub3cgYmUgYnl0ZXMgb2JqZWN0cyBvbiBwb3NpeCBwbGF0Zm9ybXMuICAoQ29udHJpYnV0ZWQgYnkKK1ZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgODUxM2AuKQorCitBIG5ldyBjb25zdGFudCA6ZGF0YTpgfnN1YnByb2Nlc3MuREVWTlVMTGAgYWxsb3dzIHN1cHByZXNzaW5nIG91dHB1dCBpbiBhCitwbGF0Zm9ybS1pbmRlcGVuZGVudCBmYXNoaW9uLiAgKENvbnRyaWJ1dGVkIGJ5IFJvc3MgTGFnZXJ3YWxsIGluCis6aXNzdWU6YDU4NzBgLikKKworCitzeXMKKy0tLQorCitUaGUgOm1vZDpgc3lzYCBtb2R1bGUgaGFzIGEgbmV3IDpkYXRhOmB+c3lzLnRocmVhZF9pbmZvYCA6dGVybTpgc3RydWN0CitzZXF1ZW5jZWAgaG9sZGluZyBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbgorKDppc3N1ZTpgMTEyMjNgKS4KKworCit0YXJmaWxlCistLS0tLS0tCisKKzptb2Q6YHRhcmZpbGVgIG5vdyBzdXBwb3J0cyBgYGx6bWFgYCBlbmNvZGluZyB2aWEgdGhlIDptb2Q6YGx6bWFgIG1vZHVsZS4KKyhDb250cmlidXRlZCBieSBMYXJzIEd1c3TDpGJlbCBpbiA6aXNzdWU6YDU2ODlgLikKKworCit0ZW1wZmlsZQorLS0tLS0tLS0KKworOmNsYXNzOmB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZWBcJ3MKKzptZXRoOmB+dGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUudHJ1Y2F0ZWAgbWV0aG9kIG5vdyBhY2NlcHRzCithIGBgc2l6ZWBgIHBhcmFtZXRlci4gIChDb250cmlidXRlZCBieSBSeWFuIEtlbGx5IGluIDppc3N1ZTpgOTk1N2AuKQorCisKK3RleHR3cmFwCistLS0tLS0tLQorCitUaGUgOm1vZDpgdGV4dHdyYXBgIG1vZHVsZSBoYXMgYSBuZXcgOmZ1bmM6YH50ZXh0d3JhcC5pbmRlbnRgIHRoYXQgbWFrZXMKK2l0IHN0cmFpZ2h0Zm9yd2FyZCB0byBhZGQgYSBjb21tb24gcHJlZml4IHRvIHNlbGVjdGVkIGxpbmVzIGluIGEgYmxvY2sKK29mIHRleHQgICg6aXNzdWU6YDEzODU3YCkuCisKKwordGhyZWFkaW5nCistLS0tLS0tLS0KKworOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYCwgOmNsYXNzOmB0aHJlYWRpbmcuU2VtYXBob3JlYCwKKzpjbGFzczpgdGhyZWFkaW5nLkJvdW5kZWRTZW1hcGhvcmVgLCA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAsIGFuZAorOmNsYXNzOmB0aHJlYWRpbmcuVGltZXJgLCBhbGwgb2Ygd2hpY2ggdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgYQorY2xhc3MgaW5zdGFuY2UsIGFyZSBub3cgY2xhc3NlcyBhbmQgbWF5IGJlIHN1YmNsYXNzZWQuIChDb250cmlidXRlZCBieSDDiXJpYworQXJhdWpvIGluIDppc3N1ZTpgMTA5NjhgKS4KKworVGhlIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgY29uc3RydWN0b3Igbm93IGFjY2VwdHMgYSBgYGRhZW1vbmBgIGtleXdvcmQKK2FyZ3VtZW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGluaGVyaXRpbmcgdGhlIGBgZGVhbW9uYGAgZmxhZwordmFsdWUgZnJvbSB0aGUgcGFyZW50IHRocmVhZCAoOmlzc3VlOmA2MDY0YCkuCisKK1RoZSBmb3JtZXJseSBwcml2YXRlIGZ1bmN0aW9uIGBgX3RocmVhZC5nZXRfaWRlbnRgYCBpcyBub3cgYXZhaWxhYmxlIGFzIHRoZQorcHVibGljIGZ1bmN0aW9uIDpmdW5jOmB0aHJlYWRpbmcuZ2V0X2lkZW50YC4gIFRoaXMgZWxpbWluYXRlcyBzZXZlcmFsIGNhc2VzIG9mCitkaXJlY3QgYWNjZXNzIHRvIHRoZSBgYF90aHJlYWRgYCBtb2R1bGUgaW4gdGhlIHN0ZGxpYi4gIFRoaXJkIHBhcnR5IGNvZGUgdGhhdAordXNlZCBgYF90aHJlYWQuZ2V0X2lkZW50YGAgc2hvdWxkIGxpa2V3aXNlIGJlIGNoYW5nZWQgdG8gdXNlIHRoZSBuZXcgcHVibGljCitpbnRlcmZhY2UuCisKKwordGltZQorLS0tLQorCitUaGUgOnBlcDpgNDE4YCBhZGRlZCBuZXcgZnVuY3Rpb25zIHRvIHRoZSA6bW9kOmB0aW1lYCBtb2R1bGU6CisKKyogOmZ1bmM6YH50aW1lLmdldF9jbG9ja19pbmZvYDogR2V0IGluZm9ybWF0aW9uIG9uIGEgY2xvY2suCisqIDpmdW5jOmB+dGltZS5tb25vdG9uaWNgOiBNb25vdG9uaWMgY2xvY2sgKGNhbm5vdCBnbyBiYWNrd2FyZCksIG5vdCBhZmZlY3RlZAorICBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcy4KKyogOmZ1bmM6YH50aW1lLnBlcmZfY291bnRlcmA6IFBlcmZvcm1hbmNlIGNvdW50ZXIgd2l0aCB0aGUgaGlnaGVzdCBhdmFpbGFibGUKKyAgcmVzb2x1dGlvbiB0byBtZWFzdXJlIGEgc2hvcnQgZHVyYXRpb24uCisqIDpmdW5jOmB+dGltZS5wcm9jZXNzX3RpbWVgOiBTdW0gb2YgdGhlIHN5c3RlbSBhbmQgdXNlciBDUFUgdGltZSBvZiB0aGUKKyAgY3VycmVudCBwcm9jZXNzLgorCitPdGhlciBuZXcgZnVuY3Rpb25zOgorCisqIDpmdW5jOmB+dGltZS5jbG9ja19nZXRyZXNgLCA6ZnVuYzpgfnRpbWUuY2xvY2tfZ2V0dGltZWAgYW5kCisgIDpmdW5jOmB+dGltZS5jbG9ja19zZXR0aW1lYCBmdW5jdGlvbnMgd2l0aCBgYENMT0NLX3h4eGBgIGNvbnN0YW50cy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTAyNzhgKQorCitUbyBpbXByb3ZlIGNyb3NzIHBsYXRmb3JtIGNvbnNpc3RlbmN5LCA6ZnVuYzpgfnRpbWUuc2xlZXBgIG5vdyByYWlzZXMgYQorOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBwYXNzZWQgYSBuZWdhdGl2ZSBzbGVlcCB2YWx1ZS4gIFByZXZpb3VzbHkgdGhpcyB3YXMgYW4KK2Vycm9yIG9uIHBvc2l4LCBidXQgcHJvZHVjZWQgYW4gaW5maW5pdGUgc2xlZXAgb24gV2luZG93cy4KKworCit0eXBlcworLS0tLS0KKworQWRkIGEgbmV3IDpjbGFzczpgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWAgY2xhc3M6IFJlYWQtb25seSBwcm94eSBvZiBhIG1hcHBpbmcuCisoOmlzc3VlOmAxNDM4NmApCisKKworVGhlIG5ldyBmdW5jdGlvbnMgYHR5cGVzLm5ld19jbGFzc2AgYW5kIGB0eXBlcy5wcmVwYXJlX2NsYXNzYCBwcm92aWRlIHN1cHBvcnQKK2ZvciBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyB0eXBlIGNyZWF0aW9uLiAoOmlzc3VlOmAxNDU4OGApCisKKwordW5pdHRlc3QKKy0tLS0tLS0tCisKKzptZXRoOmAuYXNzZXJ0UmFpc2VzYCwgOm1ldGg6YC5hc3NlcnRSYWlzZXNSZWdleGAsIDptZXRoOmAuYXNzZXJ0V2FybnNgLCBhbmQKKzptZXRoOmAuYXNzZXJ0V2FybnNSZWdleGAgbm93IGFjY2VwdCBhIGtleXdvcmQgYXJndW1lbnQgKm1zZyogd2hlbiB1c2VkIGFzCitjb250ZXh0IG1hbmFnZXJzLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBhbmQgV2luc3RvbiBFd2VydCBpbgorOmlzc3VlOmAxMDc3NWApCisKKzptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5ydW5gIG5vdyByZXR1cm5zIHRoZSA6Y2xhc3M6YH51bml0dGVzdC5UZXN0UmVzdWx0YAorb2JqZWN0LgorCisKK3VybGxpYgorLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5SZXF1ZXN0YCBjbGFzcywgbm93IGFjY2VwdHMgYSAqbWV0aG9kKiBhcmd1bWVudAordXNlZCBieSA6bWV0aDpgfnVybGxpYi5yZXF1ZXN0LlJlcXVlc3QuZ2V0X21ldGhvZGAgdG8gZGV0ZXJtaW5lIHdoYXQgSFRUUCBtZXRob2QKK3Nob3VsZCBiZSB1c2VkLiAgRm9yIGV4YW1wbGUsIHRoaXMgd2lsbCBzZW5kIGEgYGAnSEVBRCdgYCByZXF1ZXN0OjoKKworICAgPj4+IHVybG9wZW4oUmVxdWVzdCgnaHR0cDovL3d3dy5weXRob24ub3JnJywgbWV0aG9kPSdIRUFEJykpCisKKyg6aXNzdWU6YDE2NzMwMDdgKQorCisKK3dlYmJyb3dzZXIKKy0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHdlYmJyb3dzZXJgIG1vZHVsZSBzdXBwb3J0cyBtb3JlICJicm93c2VycyI6IEdvb2dsZSBDaHJvbWUgKG5hbWVkCis6cHJvZ3JhbTpgY2hyb21lYCwgOnByb2dyYW06YGNocm9taXVtYCwgOnByb2dyYW06YGNocm9tZS1icm93c2VyYCBvcgorOnByb2dyYW06YGNocm9taXVtLWJyb3dzZXJgIGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBhbmQgb3BlcmF0aW5nIHN5c3RlbSksCithbmQgdGhlIGdlbmVyaWMgbGF1bmNoZXJzIDpwcm9ncmFtOmB4ZGctb3BlbmAsIGZyb20gdGhlIEZyZWVEZXNrdG9wLm9yZworcHJvamVjdCwgYW5kIDpwcm9ncmFtOmBndmZzLW9wZW5gLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBVUkkgaGFuZGxlciBmb3IgR05PTUUKKzMuICAoVGhlIGZvcm1lciBjb250cmlidXRlZCBieSBBcm5hdWQgQ2FsbWV0dGVzIGluIDppc3N1ZTpgMTM2MjBgLCB0aGUgbGF0dGVyCitieSBNYXR0aGlhcyBLbG9zZSBpbiA6aXNzdWU6YDE0NDkzYCkKKworCit4bWwuZXRyZWUuRWxlbWVudFRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCBtb2R1bGUgbm93IGltcG9ydHMgaXRzIEMgYWNjZWxlcmF0b3IgYnkKK2RlZmF1bHQ7IHRoZXJlIGlzIG5vIGxvbmdlciBhIG5lZWQgdG8gZXhwbGljaXRseSBpbXBvcnQKKzptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgICh0aGlzIG1vZHVsZSBzdGF5cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksCitidXQgaXMgbm93IGRlcHJlY2F0ZWQpLiAgSW4gYWRkaXRpb24sICB0aGUgYGBpdGVyYGAgZmFtaWx5IG9mIG1ldGhvZHMgb2YKKzpjbGFzczpgfnhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50YCBoYXMgYmVlbiBvcHRpbWl6ZWQgKHJld3JpdHRlbiBpbiBDKS4KK1RoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGhhcyBhbHNvIGJlZW4gZ3JlYXRseSBpbXByb3ZlZCB3aXRoIGFkZGVkIGV4YW1wbGVzCithbmQgYSBtb3JlIGRldGFpbGVkIHJlZmVyZW5jZS4KKworCit6bGliCistLS0tCisKK05ldyBhdHRyaWJ1dGUgOmF0dHI6YHpsaWIuRGVjb21wcmVzcy5lb2ZgIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoCitiZXR3ZWVuIGEgcHJvcGVybHktZm9ybWVkIGNvbXByZXNzZWQgc3RyZWFtIGFuZCBhbiBpbmNvbXBsZXRlIG9yIHRydW5jYXRlZCBvbmUuCisoQ29udHJpYnV0ZWQgYnkgTmFkZWVtIFZhd2RhIGluIDppc3N1ZTpgMTI2NDZgLikKKworTmV3IGF0dHJpYnV0ZSA6YXR0cjpgemxpYi5aTElCX1JVTlRJTUVfVkVSU0lPTmAgcmVwb3J0cyB0aGUgdmVyc2lvbiBzdHJpbmcgb2YKK3RoZSB1bmRlcmx5aW5nIGBgemxpYmBgIGxpYnJhcnkgdGhhdCBpcyBsb2FkZWQgYXQgcnVudGltZS4gIChDb250cmlidXRlZCBieQorVG9yc3RlbiBMYW5kc2Nob2ZmIGluIDppc3N1ZTpgMTIzMDZgLikKKworCitPcHRpbWl6YXRpb25zCis9PT09PT09PT09PT09CisKK01ham9yIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBoYXZlIGJlZW4gYWRkZWQ6CisKKyogVGhhbmtzIHRvIDpwZXA6YDM5M2AsIHNvbWUgb3BlcmF0aW9ucyBvbiBVbmljb2RlIHN0cmluZ3MgaGF2ZSBiZWVuIG9wdGltaXplZDoKKworICAqIHRoZSBtZW1vcnkgZm9vdHByaW50IGlzIGRpdmlkZWQgYnkgMiB0byA0IGRlcGVuZGluZyBvbiB0aGUgdGV4dAorICAqIGVuY29kZSBhbiBBU0NJSSBzdHJpbmcgdG8gVVRGLTggZG9lc24ndCBuZWVkIHRvIGVuY29kZSBjaGFyYWN0ZXJzIGFueW1vcmUsCisgICAgdGhlIFVURi04IHJlcHJlc2VudGF0aW9uIGlzIHNoYXJlZCB3aXRoIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbgorICAqIHRoZSBVVEYtOCBlbmNvZGVyIGhhcyBiZWVuIG9wdGltaXplZAorICAqIHJlcGVhdGluZyBhIHNpbmdsZSBBU0NJSSBsZXR0ZXIgYW5kIGdldHRpbmcgYSBzdWJzdHJpbmcgb2YgYSBBU0NJSSBzdHJpbmdzCisgICAgaXMgNCB0aW1lcyBmYXN0ZXIKKworKiBVVEYtOCBpcyBub3cgMnggdG8gNHggZmFzdGVyLiAgVVRGLTE2IGVuY29kaW5nIGlzIG5vdyB1cCB0byAxMHggZmFzdGVyLgorCisgIChjb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthLCA6aXNzdWU6YDE0NjI0YCwgOmlzc3VlOmAxNDczOGAgYW5kCisgIDppc3N1ZTpgMTUwMjZgLikKKworCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworQ2hhbmdlcyB0byBQeXRob24ncyBidWlsZCBwcm9jZXNzIGFuZCB0byB0aGUgQyBBUEkgaW5jbHVkZToKKworKiBOZXcgOnBlcDpgMzExOGAgcmVsYXRlZCBmdW5jdGlvbjoKKworICAqIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5YAorCisqIDpwZXA6YDM5M2AgYWRkZWQgbmV3IFVuaWNvZGUgdHlwZXMsIG1hY3JvcyBhbmQgZnVuY3Rpb25zOgorCisgICogSGlnaC1sZXZlbCBBUEk6CisKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVyc2AKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9GaW5kQ2hhcmAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgLCA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX1N1YnN0cmluZ2AKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9SZWFkQ2hhcmAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Xcml0ZUNoYXJgCisKKyAgKiBMb3ctbGV2ZWwgQVBJOgorCisgICAgKiA6Yzp0eXBlOmBQeV9VQ1MxYCwgOmM6dHlwZTpgUHlfVUNTMmAsIDpjOnR5cGU6YFB5X1VDUzRgIHR5cGVzCisgICAgKiA6Yzp0eXBlOmBQeUFTQ0lJT2JqZWN0YCBhbmQgOmM6dHlwZTpgUHlDb21wYWN0VW5pY29kZU9iamVjdGAgc3RydWN0dXJlcworICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEWWAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0YCwgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNENvcHlgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX0RBVEFgLCA6YzptYWNybzpgUHlVbmljb2RlXzFCWVRFX0RBVEFgLAorICAgICAgOmM6bWFjcm86YFB5VW5pY29kZV8yQllURV9EQVRBYCwgOmM6bWFjcm86YFB5VW5pY29kZV80QllURV9EQVRBYAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9LSU5EYCB3aXRoIDpjOnR5cGU6YFB5VW5pY29kZV9LaW5kYCBlbnVtOgorICAgICAgOmM6ZGF0YTpgUHlVbmljb2RlX1dDSEFSX0tJTkRgLCA6YzpkYXRhOmBQeVVuaWNvZGVfMUJZVEVfS0lORGAsCisgICAgICA6YzpkYXRhOmBQeVVuaWNvZGVfMkJZVEVfS0lORGAsIDpjOmRhdGE6YFB5VW5pY29kZV80QllURV9LSU5EYAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEYCwgOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEX0NIQVJgLCA6YzptYWNybzpgUHlVbmljb2RlX1dSSVRFYAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRWAKKworKiA6YzptYWNybzpgUHlBcmdfUGFyc2VUdXBsZWAgbm93IGFjY2VwdHMgYSA6Y2xhc3M6YGJ5dGVhcnJheWAgZm9yIHRoZSBgYGNgYAorICBmb3JtYXQgKDppc3N1ZTpgMTIzODBgKS4KKworCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworVW5zdXBwb3J0ZWQgT3BlcmF0aW5nIFN5c3RlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09TLzIgYW5kIFZNUyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBkdWUgdG8gdGhlIGxhY2sgb2YgYSBtYWludGFpbmVyLgorCitXaW5kb3dzIDIwMDAgYW5kIFdpbmRvd3MgcGxhdGZvcm1zIHdoaWNoIHNldCBgYENPTVNQRUNgYCB0byBgYGNvbW1hbmQuY29tYGAKK2FyZSBubyBsb25nZXIgc3VwcG9ydGVkIGR1ZSB0byBtYWludGVuYW5jZSBidXJkZW4uCisKK09TRiBzdXBwb3J0LCB3aGljaCB3YXMgZGVwcmVjYXRlZCBpbiAzLjIsIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZC4KKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFBhc3NpbmcgYSBub24tZW1wdHkgc3RyaW5nIHRvIGBgb2JqZWN0Ll9fZm9ybWF0X18oKWBgIGlzIGRlcHJlY2F0ZWQsIGFuZAorICB3aWxsIHByb2R1Y2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGluIFB5dGhvbiAzLjQgKDppc3N1ZTpgOTg1NmApLgorKiBUaGUgYGB1bmljb2RlX2ludGVybmFsYGAgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCBiZWNhdXNlIG9mIHRoZQorICA6cGVwOmAzOTNgLCB1c2UgVVRGLTgsIFVURi0xNiAoYGB1dGYtMTYtbGVgYCBvciBgYHV0Zi0xNi1iZWBgKSwgb3IgVVRGLTMyCisgIChgYHV0Zi0zMi1sZWBgIG9yIGBgdXRmLTMyLWJlYGApCisqIDptZXRoOmBmdHBsaWIuRlRQLm5sc3RgIGFuZCA6bWV0aDpgZnRwbGliLkZUUC5kaXJgOiB1c2UKKyAgOm1ldGg6YGZ0cGxpYi5GVFAubWxzZGAKKyogOmZ1bmM6YHBsYXRmb3JtLnBvcGVuYDogdXNlIHRoZSA6bW9kOmBzdWJwcm9jZXNzYCBtb2R1bGUuIENoZWNrIGVzcGVjaWFsbHkKKyAgdGhlIDpyZWY6YHN1YnByb2Nlc3MtcmVwbGFjZW1lbnRzYCBzZWN0aW9uICg6aXNzdWU6YDExMzc3YCkuCisqIDppc3N1ZTpgMTMzNzRgOiBUaGUgV2luZG93cyBieXRlcyBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB0aGUgOm1vZDpgb3NgCisgIG1vZHVsZS4gVXNlIFVuaWNvZGUgZmlsZW5hbWVzLCBpbnN0ZWFkIG9mIGJ5dGVzIGZpbGVuYW1lcywgdG8gbm90IGRlcGVuZCBvbgorICB0aGUgQU5TSSBjb2RlIHBhZ2UgYW55bW9yZSBhbmQgdG8gc3VwcG9ydCBhbnkgZmlsZW5hbWUuCisqIDppc3N1ZTpgMTM5ODhgOiBUaGUgOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQuICBUaGUKKyAgYWNjZWxlcmF0b3IgaXMgdXNlZCBhdXRvbWF0aWNhbGx5IHdoZW5ldmVyIGF2YWlsYWJsZS4KKyogVGhlIGJlaGF2aW91ciBvZiA6ZnVuYzpgdGltZS5jbG9ja2AgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06IHVzZSB0aGUgbmV3CisgIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAgb3IgOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYCBmdW5jdGlvbiBpbnN0ZWFkLAorICBkZXBlbmRpbmcgb24geW91ciByZXF1aXJlbWVudHMsIHRvIGhhdmUgYSB3ZWxsIGRlZmluZWQgYmVoYXZpb3VyLgorKiBUaGUgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuCisqIDptb2Q6YGFiY2AgbW9kdWxlOgorCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3Rwcm9wZXJ0eWAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlIDpjbGFzczpgcHJvcGVydHlgCisgICAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgY2xhc3NtZXRob2RgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBzdGF0aWNtZXRob2RgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKworKiA6bW9kOmBpbXBvcnRsaWJgIHBhY2thZ2U6CisKKyAgKiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIucGF0aF9tdGltZWAgaXMgbm93IGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCisgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnBhdGhfc3RhdHNgIGFzIGJ5dGVjb2RlIGZpbGVzIG5vdyBzdG9yZQorICAgIGJvdGggdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGFuZCBzaXplIG9mIHRoZSBzb3VyY2UgZmlsZSB0aGUgYnl0ZWNvZGUgZmlsZSB3YXMKKyAgICBjb21waWxlZCBmcm9tLgorCisKKworCisKK0RlcHJlY2F0ZWQgZnVuY3Rpb25zIGFuZCB0eXBlcyBvZiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgOnBlcDpgMzkzYCBhbmQgd2lsbCBiZQorcmVtb3ZlZCBpbiBQeXRob24gNC4gQWxsIGZ1bmN0aW9ucyB1c2luZyB0aGlzIHR5cGUgYXJlIGRlcHJlY2F0ZWQ6CisKK1VuaWNvZGUgZnVuY3Rpb25zIGFuZCBtZXRob2RzIHVzaW5nIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZAorOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHR5cGVzOgorCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfRnJvbVVuaWNvZGVgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcmAgb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YWAKKyogOmM6bWFjcm86YFB5VW5pY29kZV9BU19VTklDT0RFYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZWAsCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0FTX0RBVEFgOiB1c2UgOmM6bWFjcm86YFB5VW5pY29kZV9EQVRBYCB3aXRoCisgIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRGAgYW5kIDpjOm1hY3JvOmBQeVVuaWNvZGVfV1JJVEVgCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX1NJWkVgLCA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0U2l6ZWA6IHVzZQorICA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgIG9yIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRWA6IHVzZQorICBgYFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBQeVVuaWNvZGVfS0lORChzdHIpYGAgKG9ubHkgd29yayBvbiByZWFkeQorICBzdHJpbmdzKQorKiA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlQ29weWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAgb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRNYXhgCisKKworRnVuY3Rpb25zIGFuZCBtYWNyb3MgbWFuaXB1bGF0aW5nIFB5X1VOSUNPREUqIHN0cmluZ3M6CisKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RybGVuYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgIG9yCisgIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RyY2F0YDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVyc2Agb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Gb3JtYXRgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNweWAsIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cm5jcHlgLAorICA6YzptYWNybzpgUHlfVU5JQ09ERV9DT1BZYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVyc2Agb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1N1YnN0cmluZ2AKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RyY21wYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Db21wYXJlYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJuY21wYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9UYWlsbWF0Y2hgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNocmAsIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cnJjaHJgOiB1c2UKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0ZpbmRDaGFyYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9GSUxMYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9GaWxsYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9NQVRDSGAKKworRW5jb2RlcnM6CisKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0YAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGN2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjhgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOGAgb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOFN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjMyYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGMTZgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlOmAgdXNlCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlOmAgdXNlCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVMYXRpbjFgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQVNDSUlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVDaGFybWFwYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcGAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZU1CQ1NgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTUJDU1N0cmluZ2Agb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlYCAod2l0aCBgYENQX0FDUGBgIGNvZGVfcGFnZSkKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZURlY2ltYWxgLAorICA6YzpmdW5jOmBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUlgCisKKworRGVwcmVjYXRlZCBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgYXJyYXlgIG1vZHVsZSdzIGBgJ3UnYGAgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKK3JlbW92ZWQgaW4gUHl0aG9uIDQgdG9nZXRoZXIgd2l0aCB0aGUgcmVzdCBvZiB0aGUgKDpjOnR5cGU6YFB5X1VOSUNPREVgKSBBUEkuCisKKworUG9ydGluZyB0byBQeXRob24gMy4zCis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCisuLiBfcG9ydGluZ3B5dGhvbmNvZGU6CisKK1BvcnRpbmcgUHl0aG9uIGNvZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBTZXQgdGhlIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYAorICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgYDBgYCB0byBkaXNhYmxlIGhhc2ggcmFuZG9taXphdGlvbi4gU2VlIGFsc28gdGhlCisgIDptZXRoOmBvYmplY3QuX19oYXNoX19gIG1ldGhvZC4KKworKiA6aXNzdWU6YDEyMzI2YDogT24gTGludXgsIHN5cy5wbGF0Zm9ybSBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24KKyAgYW55bW9yZS4gSXQgaXMgbm93IGFsd2F5cyAnbGludXgnLCBpbnN0ZWFkIG9mICdsaW51eDInIG9yICdsaW51eDMnIGRlcGVuZGluZworICBvbiB0aGUgTGludXggdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIFB5dGhvbi4gUmVwbGFjZSBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4MicKKyAgd2l0aCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSwgb3IgZGlyZWN0bHkgc3lzLnBsYXRmb3JtID09ICdsaW51eCcgaWYKKyAgeW91IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBvbGRlciBQeXRob24gdmVyc2lvbnMuCisKKyogOmlzc3VlOmAxMzg0N2AsIDppc3N1ZTpgMTQxODBgOiA6bW9kOmB0aW1lYCBhbmQgOm1vZDpgZGF0ZXRpbWVgOgorICA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgYQorICB0aW1lc3RhbXAgaXMgb3V0IG9mIHJhbmdlLiA6ZXhjOmBPU0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIEMgZnVuY3Rpb25zCisgIDpjOmZ1bmM6YGdtdGltZWAgb3IgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsZWQuCisKKyogVGhlIGRlZmF1bHQgZmluZGVycyB1c2VkIGJ5IGltcG9ydCBub3cgdXRpbGl6ZSBhIGNhY2hlIG9mIHdoYXQgaXMgY29udGFpbmVkCisgIHdpdGhpbiBhIHNwZWNpZmljIGRpcmVjdG9yeS4gSWYgeW91IGNyZWF0ZSBhIFB5dGhvbiBzb3VyY2UgZmlsZSBvciBzb3VyY2VsZXNzCisgIGJ5dGVjb2RlIGZpbGUsIG1ha2Ugc3VyZSB0byBjYWxsIDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgIHRvIGNsZWFyCisgIG91dCB0aGUgY2FjaGUgZm9yIHRoZSBmaW5kZXJzIHRvIG5vdGljZSB0aGUgbmV3IGZpbGUuCisKKyogOmV4YzpgSW1wb3J0RXJyb3JgIG5vdyB1c2VzIHRoZSBmdWxsIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IHdhcyBhdHRlbXBlZCB0bworICBiZSBpbXBvcnRlZC4gRG9jdGVzdHMgdGhhdCBjaGVjayBJbXBvcnRFcnJvcnMnIG1lc3NhZ2Ugd2lsbCBuZWVkIHRvIGJlCisgIHVwZGF0ZWQgdG8gdXNlIHRoZSBmdWxsIG5hbWUgb2YgdGhlIG1vZHVsZSBpbnN0ZWFkIG9mIGp1c3QgdGhlIHRhaWwgb2YgdGhlCisgIG5hbWUuCisKKyogVGhlICppbmRleCogYXJndW1lbnQgdG8gOmZ1bmM6YF9faW1wb3J0X19gIG5vdyBkZWZhdWx0cyB0byAwIGluc3RlYWQgb2YgLTEKKyAgYW5kIG5vIGxvbmdlciBzdXBwb3J0IG5lZ2F0aXZlIHZhbHVlcy4gSXQgd2FzIGFuIG92ZXJzaWdodCB3aGVuIDpwZXA6YDMyOGAgd2FzCisgIGltcGxlbWVudGVkIHRoYXQgdGhlIGRlZmF1bHQgdmFsdWUgcmVtYWluZWQgLTEuIElmIHlvdSBuZWVkIHRvIGNvbnRpbnVlIHRvCisgIHBlcmZvcm0gYSByZWxhdGl2ZSBpbXBvcnQgZm9sbG93ZWQgYnkgYW4gYWJzb2x1dGUgaW1wb3J0LCB0aGVuIHBlcmZvcm0gdGhlCisgIHJlbGF0aXZlIGltcG9ydCB1c2luZyBhbiBpbmRleCBvZiAxLCBmb2xsb3dlZCBieSBhbm90aGVyIGltcG9ydCB1c2luZyBhbgorICBpbmRleCBvZiAwLiBJdCBpcyBwcmVmZXJyZWQsIHRob3VnaCwgdGhhdCB5b3UgdXNlCisgIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgcmF0aGVyIHRoYW4gY2FsbCA6ZnVuYzpgX19pbXBvcnRfX2AgZGlyZWN0bHkuCisKKyogOmZ1bmM6YF9faW1wb3J0X19gIG5vIGxvbmdlciBhbGxvd3Mgb25lIHRvIHVzZSBhbiBpbmRleCB2YWx1ZSBvdGhlciB0aGFuIDAKKyAgZm9yIHRvcC1sZXZlbCBtb2R1bGVzLiBFLmcuIGBgX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSlgYCBpcyBub3cgYW4gZXJyb3IuCisKKyogQmVjYXVzZSA6YXR0cjpgc3lzLm1ldGFfcGF0aGAgYW5kIDphdHRyOmBzeXMucGF0aF9ob29rc2Agbm93IGhhdmUgZmluZGVycyBvbgorICB0aGVtIGJ5IGRlZmF1bHQsIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHdhbnQgdG8gdXNlIDptZXRoOmBsaXN0Lmluc2VydGAgaW5zdGVhZAorICBvZiA6bWV0aDpgbGlzdC5hcHBlbmRgIHRvIGFkZCB0byB0aG9zZSBsaXN0cy4KKworKiBCZWNhdXNlIGBgTm9uZWBgIGlzIG5vdyBpbnNlcnRlZCBpbnRvIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAsIGlmIHlvdQorICBhcmUgY2xlYXJpbmcgb3V0IGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkgb2YgcGF0aHMgdGhhdCBkbyBub3QgaGF2ZSBhCisgIGZpbmRlciwgeW91IHdpbGwgbmVlZCB0byByZW1vdmUga2V5cyBwYWlyZWQgd2l0aCB2YWx1ZXMgb2YgYGBOb25lYGAgKiphbmQqKgorICA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIHRvIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlLiBUaGlzIHdpbGwgbGVhZCB0byBleHRyYQorICBvdmVyaGVhZCBvbiBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24gdGhhdCByZS1pbnNlcnQgYGBOb25lYGAgaW50bworICA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHdoZXJlIGl0IHJlcGVzZW50cyB0aGUgdXNlIG9mIGltcGxpY2l0CisgIGZpbmRlcnMsIGJ1dCBzZW1hbnRpY2FsbHkgaXQgc2hvdWxkIG5vdCBjaGFuZ2UgYW55dGhpbmcuCisKKyogOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgbm8gbG9uZ2VyIHNwZWNpZmllcyBhIGBmaW5kX21vZHVsZSgpYCBhYnN0cmFjdAorICBtZXRob2QgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkLiBJZiB5b3Ugd2VyZSByZWx5aW5nIG9uIHN1YmNsYXNzZXMgdG8KKyAgaW1wbGVtZW50IHRoYXQgbWV0aG9kLCBtYWtlIHN1cmUgdG8gY2hlY2sgZm9yIHRoZSBtZXRob2QncyBleGlzdGVuY2UgZmlyc3QuCisgIFlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gY2hlY2sgZm9yIGBmaW5kX2xvYWRlcigpYCBmaXJzdCwgdGhvdWdoLCBpbiB0aGUKKyAgY2FzZSBvZiB3b3JraW5nIHdpdGggOnRlcm06YHBhdGggZW50cnkgZmluZGVycyA8cGF0aCBlbnRyeSBmaW5kZXI+YC4KKworKiA6bW9kOmBwa2d1dGlsYCBoYXMgYmVlbiBjb252ZXJ0ZWQgdG8gdXNlIDptb2Q6YGltcG9ydGxpYmAgaW50ZXJuYWxseS4gVGhpcworICBlbGltaW5hdGVzIG1hbnkgZWRnZSBjYXNlcyB3aGVyZSB0aGUgb2xkIGJlaGF2aW91ciBvZiB0aGUgUEVQIDMwMiBpbXBvcnQKKyAgZW11bGF0aW9uIGZhaWxlZCB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIHRoZSByZWFsIGltcG9ydCBzeXN0ZW0uIFRoZQorICBpbXBvcnQgZW11bGF0aW9uIGl0c2VsZiBpcyBzdGlsbCBwcmVzZW50LCBidXQgaXMgbm93IGRlcHJlY2F0ZWQuIFRoZQorICA6ZnVuYzpgcGtndXRpbC5pdGVyX2ltcG9ydGVyc2AgYW5kIDpmdW5jOmBwa2d1dGlsLndhbGtfcGFja2FnZXNgIGZ1bmN0aW9ucworICBzcGVjaWFsIGNhc2UgdGhlIHN0YW5kYXJkIGltcG9ydCBob29rcyBzbyB0aGV5IGFyZSBzdGlsbCBzdXBwb3J0ZWQgZXZlbgorICB0aG91Z2ggdGhleSBkbyBub3QgcHJvdmlkZSB0aGUgbm9uLXN0YW5kYXJkIGBgaXRlcl9tb2R1bGVzKClgYCBtZXRob2QuCisKKyogQSBsb25nc3RhbmRpbmcgUkZDLWNvbXBsaWFuY2UgYnVnICg6aXNzdWU6YDEwNzlgKSBpbiB0aGUgcGFyc2luZyBkb25lIGJ5CisgIDpmdW5jOmBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlcmAgaGFzIGJlZW4gZml4ZWQuICBDb2RlIHRoYXQgdXNlcyB0aGUKKyAgc3RhbmRhcmQgaWRpb20gdG8gY29udmVydCBlbmNvZGVkIGhlYWRlcnMgaW50byB1bmljb2RlCisgIChgYHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKGgpKWBgKSB3aWxsIHNlZSBubyBjaGFuZ2UsIGJ1dCBjb2RlIHRoYXQKKyAgbG9va3MgYXQgdGhlIGluZGl2aWR1YWwgdHVwbGVzIHJldHVybmVkIGJ5IGRlY29kZV9oZWFkZXIgd2lsbCBzZWUgdGhhdAorICB3aGl0ZXNwYWNlIHRoYXQgcHJlY2VkZXMgb3IgZm9sbG93cyBgYEFTQ0lJYGAgc2VjdGlvbnMgaXMgbm93IGluY2x1ZGVkIGluIHRoZQorICBgYEFTQ0lJYGAgc2VjdGlvbi4gIENvZGUgdGhhdCBidWlsZHMgaGVhZGVycyB1c2luZyBgYG1ha2VfaGVhZGVyYGAgc2hvdWxkCisgIGFsc28gY29udGludWUgdG8gd29yayB3aXRob3V0IGNoYW5nZSwgc2luY2UgYGBtYWtlX2hlYWRlcmBgIGNvbnRpbnVlcyB0byBhZGQKKyAgd2hpdGVzcGFjZSBiZXR3ZWVuIGBgQVNDSUlgYCBhbmQgbm9uLWBgQVNDSUlgYCBzZWN0aW9ucyBpZiBpdCBpcyBub3QgYWxyZWFkeQorICBwcmVzZW50IGluIHRoZSBpbnB1dCBzdHJpbmdzLgorCisqIDpmdW5jOmBlbWFpbC51dGlscy5mb3JtYXRhZGRyYCBub3cgZG9lcyB0aGUgY29ycmVjdCBjb250ZW50IHRyYW5zZmVyCisgIGVuY29kaW5nIHdoZW4gcGFzc2VkIG5vbi1gYEFTQ0lJYGAgZGlzcGxheSBuYW1lcy4gIEFueSBjb2RlIHRoYXQgZGVwZW5kZWQgb24KKyAgdGhlIHByZXZpb3VzIGJ1Z2d5IGJlaGF2aW9yIHRoYXQgcHJlc2VydmVkIHRoZSBub24tYGBBU0NJSWBgIHVuaWNvZGUgaW4gdGhlCisgIGZvcm1hdHRlZCBvdXRwdXQgc3RyaW5nIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkICg6aXNzdWU6YDE2OTA2MDhgKS4KKworKiA6bWV0aDpgcG9wbGliLlBPUDMucXVpdGAgbWF5IG5vdyByYWlzZSBwcm90b2NvbCBlcnJvcnMgbGlrZSBhbGwgb3RoZXIKKyAgYGBwb3BsaWJgYCBtZXRob2RzLiAgQ29kZSB0aGF0IGFzc3VtZXMgYGBxdWl0YGAgZG9lcyBub3QgcmFpc2UKKyAgOmV4YzpgcG9wbGliLmVycm9yX3Byb3RvYCBlcnJvcnMgbWF5IG5lZWQgdG8gYmUgY2hhbmdlZCBpZiBlcnJvcnMgb24gYGBxdWl0YGAKKyAgYXJlIGVuY291bnRlcmVkIGJ5IGEgcGFydGljdWxhciBhcHBsaWNhdGlvbiAoOmlzc3VlOmAxMTI5MWApLgorCisqIFRoZSBgYHN0cmljdGBgIGFyZ3VtZW50IHRvIDpjbGFzczpgZW1haWwucGFyc2VyLlBhcnNlcmAsIGRlcHJlY2F0ZWQgc2luY2UKKyAgUHl0aG9uIDIuNCwgaGFzIGZpbmFsbHkgYmVlbiByZW1vdmVkLgorCisqIFRoZSBkZXByZWNhdGVkIG1ldGhvZCBgYHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFNhbWVFbGVtZW50c2BgIGhhcyBiZWVuCisgIHJlbW92ZWQuCisKKyogVGhlIGRlcHJlY2F0ZWQgdmFyaWFibGUgYGB0aW1lLmFjY2VwdDJkeWVhcmBgIGhhcyBiZWVuIHJlbW92ZWQuCisKKyogVGhlIGRlcHJlY2F0ZWQgYGBDb250ZXh0Ll9jbGFtcGBgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlCisgIDptb2Q6YGRlY2ltYWxgIG1vZHVsZS4gIEl0IHdhcyBwcmV2aW91c2x5IHJlcGxhY2VkIGJ5IHRoZSBwdWJsaWMgYXR0cmlidXRlCisgIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LmNsYW1wYC4gIChTZWUgOmlzc3VlOmA4NTQwYC4pCisKKyogVGhlIHVuZG9jdW1lbnRlZCBpbnRlcm5hbCBoZWxwZXIgY2xhc3MgYGBTU0xGYWtlRmlsZWBgIGhhcyBiZWVuIHJlbW92ZWQKKyAgZnJvbSA6bW9kOmBzbXRwbGliYCwgc2luY2UgaXRzIGZ1bmN0aW9uYWxpdHkgaGFzIGxvbmcgYmVlbiBwcm92aWRlZCBkaXJlY3RseQorICBieSA6bWV0aDpgc29ja2V0LnNvY2tldC5tYWtlZmlsZWAuCisKKyogUGFzc2luZyBhIG5lZ2F0aXZlIHZhbHVlIHRvIDpmdW5jOmB0aW1lLnNsZWVwYCBvbiBXaW5kb3dzIG5vdyByYWlzZXMgYW4KKyAgZXJyb3IgaW5zdGVhZCBvZiBzbGVlcGluZyBmb3JldmVyLiAgSXQgaGFzIGFsd2F5cyByYWlzZWQgYW4gZXJyb3Igb24gcG9zaXguCisKKyogVGhlIGBgYXN0Ll9fdmVyc2lvbl9fYGAgY29uc3RhbnQgaGFzIGJlZW4gcmVtb3ZlZC4gIElmIHlvdSBuZWVkIHRvCisgIG1ha2UgZGVjaXNpb25zIGFmZmVjdGVkIGJ5IHRoZSBBU1QgdmVyc2lvbiwgdXNlIDphdHRyOmBzeXMudmVyc2lvbl9pbmZvYAorICB0byBtYWtlIHRoZSBkZWNpc2lvbi4KKworKiBDb2RlIHRoYXQgdXNlZCB0byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHRoZSA6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZSB1c2VkCisgIGZhY3RvcnkgZnVuY3Rpb25zIGJ5IHN1YmNsYXNzaW5nIHRoZSBwcml2YXRlIGNsYXNzZXMgd2lsbCBuZWVkIHRvIGNoYW5nZSB0bworICBzdWJjbGFzcyB0aGUgbm93LXB1YmxpYyBjbGFzc2VzLgorCisqIFRoZSB1bmRvY3VtZW50ZWQgZGVidWdnaW5nIG1hY2hpbmVyeSBpbiB0aGUgdGhyZWFkaW5nIG1vZHVsZSBoYXMgYmVlbgorICByZW1vdmVkLCBzaW1wbGlmeWluZyB0aGUgY29kZS4gIFRoaXMgc2hvdWxkIGhhdmUgbm8gZWZmZWN0IG9uIHByb2R1Y3Rpb24KKyAgY29kZSwgYnV0IGlzIG1lbnRpb25lZCBoZXJlIGluIGNhc2UgYW55IGFwcGxpY2F0aW9uIGRlYnVnIGZyYW1ld29ya3Mgd2VyZQorICBpbnRlcmFjdGluZyB3aXRoIGl0ICg6aXNzdWU6YDEzNTUwYCkuCisKKworUG9ydGluZyBDIGNvZGUKKy0tLS0tLS0tLS0tLS0tCisKKyogSW4gdGhlIGNvdXJzZSBvZiBjaGFuZ2VzIHRvIHRoZSBidWZmZXIgQVBJIHRoZSB1bmRvY3VtZW50ZWQKKyAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNtYWxsdGFibGVgIG1lbWJlciBvZiB0aGUKKyAgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgdGhlCisgIGxheW91dCBvZiB0aGUgOmM6dHlwZTpgUHlNZW1vcnlWaWV3T2JqZWN0YCBoYXMgY2hhbmdlZC4KKworICBBbGwgZXh0ZW5zaW9ucyByZWx5aW5nIG9uIHRoZSByZWxldmFudCBwYXJ0cyBpbiBgYG1lbW9yeW9iamVjdC5oYGAKKyAgb3IgYGBvYmplY3QuaGBgIG11c3QgYmUgcmVidWlsdC4KKworKiBEdWUgdG8gOnJlZjpgUEVQIDM5MyA8cGVwLTM5Mz5gLCB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgdHlwZSBhbmQgYWxsCisgIGZ1bmN0aW9ucyB1c2luZyB0aGlzIHR5cGUgYXJlIGRlcHJlY2F0ZWQgKGJ1dCB3aWxsIHN0YXkgYXZhaWxhYmxlIGZvcgorICBhdCBsZWFzdCBmaXZlIHllYXJzKS4gIElmIHlvdSB3ZXJlIHVzaW5nIGxvdy1sZXZlbCBVbmljb2RlIEFQSXMgdG8KKyAgY29uc3RydWN0IGFuZCBhY2Nlc3MgdW5pY29kZSBvYmplY3RzIGFuZCB5b3Ugd2FudCB0byBiZW5lZml0IG9mIHRoZQorICBtZW1vcnkgZm9vdHByaW50IHJlZHVjdGlvbiBwcm92aWRlZCBieSBQRVAgMzkzLCB5b3UgaGF2ZSB0byBjb252ZXJ0CisgIHlvdXIgY29kZSB0byB0aGUgbmV3IDpkb2M6YFVuaWNvZGUgQVBJIDwuLi9jLWFwaS91bmljb2RlPmAuCisKKyAgSG93ZXZlciwgaWYgeW91IG9ubHkgaGF2ZSBiZWVuIHVzaW5nIGhpZ2gtbGV2ZWwgZnVuY3Rpb25zIHN1Y2ggYXMKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0NvbmNhdCgpYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0pvaW5gIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0KClgLCB5b3VyIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IHRha2UKKyAgYWR2YW50YWdlIG9mIHRoZSBuZXcgdW5pY29kZSByZXByZXNlbnRhdGlvbnMuCisKKyogOmM6ZnVuYzpgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXJgIG5vdyByZXR1cm5zIC0xIHVwb24gZmFpbHVyZS4KKworKiBBcyBhIG5lZ2F0aXZlIHZhbHVlIGZvciB0aGUgKmxldmVsKiBhcmd1bWVudCB0byA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgbm8KKyAgbG9uZ2VyIHZhbGlkLCB0aGUgc2FtZSBub3cgaG9sZHMgZm9yIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsYC4KKyAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIHZhbHVlIG9mICpsZXZlbCogdXNlZCBieQorICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeGAgaXMgbm93IDAgaW5zdGVhZCBvZiAtMS4KKworCitCdWlsZGluZyBDIGV4dGVuc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSByYW5nZSBvZiBwb3NzaWJsZSBmaWxlIG5hbWVzIGZvciBDIGV4dGVuc2lvbnMgaGFzIGJlZW4gbmFycm93ZWQuCisgIFZlcnkgcmFyZWx5IHVzZWQgc3BlbGxpbmdzIGhhdmUgYmVlbiBzdXBwcmVzc2VkOiB1bmRlciBQT1NJWCwgZmlsZXMKKyAgbmFtZWQgYGB4eHhtb2R1bGUuc29gYCwgYGB4eHhtb2R1bGUuYWJpMy5zb2BgIGFuZAorICBgYHh4eG1vZHVsZS5jcHl0aG9uLSouc29gYCBhcmUgbm8gbG9uZ2VyIHJlY29nbml6ZWQgYXMgaW1wbGVtZW50aW5nCisgIHRoZSBgYHh4eGBgIG1vZHVsZS4gIElmIHlvdSBoYWQgYmVlbiBnZW5lcmF0aW5nIHN1Y2ggZmlsZXMsIHlvdSBoYXZlCisgIHRvIHN3aXRjaCB0byB0aGUgb3RoZXIgc3BlbGxpbmdzIChpLmUuLCByZW1vdmUgdGhlIGBgbW9kdWxlYGAgc3RyaW5nCisgIGZyb20gdGhlIGZpbGUgbmFtZXMpLgorCisgIChpbXBsZW1lbnRlZCBpbiA6aXNzdWU6YDE0MDQwYC4pCisKKworQ29tbWFuZCBMaW5lIFN3aXRjaCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgLVEgY29tbWFuZC1saW5lIGZsYWcgYW5kIHJlbGF0ZWQgYXJ0aWZhY3RzIGhhdmUgYmVlbiByZW1vdmVkLiAgQ29kZQorICBjaGVja2luZyBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyB3aWxsIG5lZWQgdXBkYXRpbmcuCisKKyAgKDppc3N1ZTpgMTA5OThgLCBjb250cmlidXRlZCBieSDDiXJpYyBBcmF1am8uKQorCisqIFdoZW4gOnByb2dyYW06YHB5dGhvbmAgaXMgc3RhcnRlZCB3aXRoIDpvcHRpb246YC1TYCwgYGBpbXBvcnQgc2l0ZWBgCisgIHdpbGwgbm8gbG9uZ2VyIGFkZCBzaXRlLXNwZWNpZmljIHBhdGhzIHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGhzLiAgSW4KKyAgcHJldmlvdXMgdmVyc2lvbnMsIGl0IGRpZC4KKworICAoOmlzc3VlOmAxMTU5MWAsIGNvbnRyaWJ1dGVkIGJ5IENhcmwgTWV5ZXIgd2l0aCBlZGl0aW9ucyBieSDDiXJpYyBBcmF1am8uKQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2NoYW5nZWxvZy5yc3QgYi9Eb2Mvd2hhdHNuZXcvY2hhbmdlbG9nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2UyZGFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3doYXRzbmV3L2NoYW5nZWxvZy5yc3QKQEAgLTAsMCArMSw2IEBACisrKysrKysrKysKK0NoYW5nZWxvZworKysrKysrKysrCisKKy4uIG1pc2NuZXdzOjogLi4vLi4vTWlzYy9ORVdTCisKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy9pbmRleC5yc3QgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CmluZGV4IDgyMjBiZDIuLmJjMTIwNmIgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy9pbmRleC5yc3QKKysrIGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdApAQCAtMTEsNiArMTEsNyBAQAogLi4gdG9jdHJlZTo6CiAgICA6bWF4ZGVwdGg6IDIKIAorICAgMy4zLnJzdAogICAgMy4yLnJzdAogICAgMy4xLnJzdAogICAgMy4wLnJzdApAQCAtMjIsMyArMjMsMTEgQEAKICAgIDIuMi5yc3QKICAgIDIuMS5yc3QKICAgIDIuMC5yc3QKKworVGhlICJDaGFuZ2Vsb2ciIGlzIGEgSFRNTCB2ZXJzaW9uIG9mIHRoZSBmaWxlIDpzb3VyY2U6YE1pc2MvTkVXU2Agd2hpY2gKK2NvbnRhaW5zICphbGwqIG5vbnRyaXZpYWwgY2hhbmdlcyB0byBQeXRob24gZm9yIHRoZSBjdXJyZW50IHZlcnNpb24uCisKKy4uIHRvY3RyZWU6OgorICAgOm1heGRlcHRoOiAyCisKKyAgIGNoYW5nZWxvZy5yc3QKZGlmZiAtLWdpdCBhL0dyYW1tYXIvR3JhbW1hciBiL0dyYW1tYXIvR3JhbW1hcgppbmRleCBjZWE2OGRlLi5kN2FhZmZkIDEwMDY0NAotLS0gYS9HcmFtbWFyL0dyYW1tYXIKKysrIGIvR3JhbW1hci9HcmFtbWFyCkBAIC0xMyw3ICsxMyw3IEBACiAjIFN0YXJ0IHN5bWJvbHMgZm9yIHRoZSBncmFtbWFyOgogIyAgICAgICBzaW5nbGVfaW5wdXQgaXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50OwogIyAgICAgICBmaWxlX2lucHV0IGlzIGEgbW9kdWxlIG9yIHNlcXVlbmNlIG9mIGNvbW1hbmRzIHJlYWQgZnJvbSBhbiBpbnB1dCBmaWxlOwotIyAgICAgICBldmFsX2lucHV0IGlzIHRoZSBpbnB1dCBmb3IgdGhlIGV2YWwoKSBhbmQgaW5wdXQoKSBmdW5jdGlvbnMuCisjICAgICAgIGV2YWxfaW5wdXQgaXMgdGhlIGlucHV0IGZvciB0aGUgZXZhbCgpIGZ1bmN0aW9ucy4KICMgTkI6IGNvbXBvdW5kX3N0bXQgaW4gc2luZ2xlX2lucHV0IGlzIGZvbGxvd2VkIGJ5IGV4dHJhIE5FV0xJTkUhCiBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQogZmlsZV9pbnB1dDogKE5FV0xJTkUgfCBzdG10KSogRU5ETUFSS0VSCkBAIC0xMjksNCArMTI5LDUgQEAKICMgbm90IHVzZWQgaW4gZ3JhbW1hciwgYnV0IG1heSBhcHBlYXIgaW4gIm5vZGUiIHBhc3NlZCBmcm9tIFBhcnNlciB0byBDb21waWxlcgogZW5jb2RpbmdfZGVjbDogTkFNRQogCi15aWVsZF9leHByOiAneWllbGQnIFt0ZXN0bGlzdF0KK3lpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KK3lpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCAwYWQ3ODhiLi43YWQ2Y2IzIDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtMzYsNiArMzYsOCBAQAogCiB0eXBlZGVmIHN0cnVjdCBfYWxpYXMgKmFsaWFzX3R5OwogCit0eXBlZGVmIHN0cnVjdCBfd2l0aGl0ZW0gKndpdGhpdGVtX3R5OworCiAKIGVudW0gX21vZF9raW5kIHtNb2R1bGVfa2luZD0xLCBJbnRlcmFjdGl2ZV9raW5kPTIsIEV4cHJlc3Npb25fa2luZD0zLAogICAgICAgICAgICAgICAgICBTdWl0ZV9raW5kPTR9OwpAQCAtNjQsMTAgKzY2LDkgQEAKIGVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBDbGFzc0RlZl9raW5kPTIsIFJldHVybl9raW5kPTMsCiAgICAgICAgICAgICAgICAgICBEZWxldGVfa2luZD00LCBBc3NpZ25fa2luZD01LCBBdWdBc3NpZ25fa2luZD02LCBGb3Jfa2luZD03LAogICAgICAgICAgICAgICAgICAgV2hpbGVfa2luZD04LCBJZl9raW5kPTksIFdpdGhfa2luZD0xMCwgUmFpc2Vfa2luZD0xMSwKLSAgICAgICAgICAgICAgICAgIFRyeUV4Y2VwdF9raW5kPTEyLCBUcnlGaW5hbGx5X2tpbmQ9MTMsIEFzc2VydF9raW5kPTE0LAotICAgICAgICAgICAgICAgICAgSW1wb3J0X2tpbmQ9MTUsIEltcG9ydEZyb21fa2luZD0xNiwgR2xvYmFsX2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBOb25sb2NhbF9raW5kPTE4LCBFeHByX2tpbmQ9MTksIFBhc3Nfa2luZD0yMCwgQnJlYWtfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIENvbnRpbnVlX2tpbmQ9MjJ9OworICAgICAgICAgICAgICAgICAgVHJ5X2tpbmQ9MTIsIEFzc2VydF9raW5kPTEzLCBJbXBvcnRfa2luZD0xNCwKKyAgICAgICAgICAgICAgICAgIEltcG9ydEZyb21fa2luZD0xNSwgR2xvYmFsX2tpbmQ9MTYsIE5vbmxvY2FsX2tpbmQ9MTcsCisgICAgICAgICAgICAgICAgICBFeHByX2tpbmQ9MTgsIFBhc3Nfa2luZD0xOSwgQnJlYWtfa2luZD0yMCwgQ29udGludWVfa2luZD0yMX07CiBzdHJ1Y3QgX3N0bXQgewogICAgICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICAgICAgdW5pb24gewpAQCAtMTI4LDggKzEyOSw3IEBACiAgICAgICAgICAgICAgICAgfSBJZjsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqaXRlbXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICB9IFdpdGg7CiAgICAgICAgICAgICAgICAgCkBAIC0xNDIsMTIgKzE0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpoYW5kbGVyczsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7Ci0gICAgICAgICAgICAgICAgfSBUcnlFeGNlcHQ7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmZpbmFsYm9keTsKLSAgICAgICAgICAgICAgICB9IFRyeUZpbmFsbHk7CisgICAgICAgICAgICAgICAgfSBUcnk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdGVzdDsKQEAgLTE4NCwxMCArMTgwLDEwIEBACiBlbnVtIF9leHByX2tpbmQge0Jvb2xPcF9raW5kPTEsIEJpbk9wX2tpbmQ9MiwgVW5hcnlPcF9raW5kPTMsIExhbWJkYV9raW5kPTQsCiAgICAgICAgICAgICAgICAgICBJZkV4cF9raW5kPTUsIERpY3Rfa2luZD02LCBTZXRfa2luZD03LCBMaXN0Q29tcF9raW5kPTgsCiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBZaWVsZF9raW5kPTEyLCBDb21wYXJlX2tpbmQ9MTMsIENhbGxfa2luZD0xNCwgTnVtX2tpbmQ9MTUsCi0gICAgICAgICAgICAgICAgICBTdHJfa2luZD0xNiwgQnl0ZXNfa2luZD0xNywgRWxsaXBzaXNfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTE5LCBTdWJzY3JpcHRfa2luZD0yMCwgU3RhcnJlZF9raW5kPTIxLAotICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTIyLCBMaXN0X2tpbmQ9MjMsIFR1cGxlX2tpbmQ9MjR9OworICAgICAgICAgICAgICAgICAgWWllbGRfa2luZD0xMiwgWWllbGRGcm9tX2tpbmQ9MTMsIENvbXBhcmVfa2luZD0xNCwKKyAgICAgICAgICAgICAgICAgIENhbGxfa2luZD0xNSwgTnVtX2tpbmQ9MTYsIFN0cl9raW5kPTE3LCBCeXRlc19raW5kPTE4LAorICAgICAgICAgICAgICAgICAgRWxsaXBzaXNfa2luZD0xOSwgQXR0cmlidXRlX2tpbmQ9MjAsIFN1YnNjcmlwdF9raW5kPTIxLAorICAgICAgICAgICAgICAgICAgU3RhcnJlZF9raW5kPTIyLCBOYW1lX2tpbmQ9MjMsIExpc3Rfa2luZD0yNCwgVHVwbGVfa2luZD0yNX07CiBzdHJ1Y3QgX2V4cHIgewogICAgICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICAgICAgdW5pb24gewpAQCAtMjUzLDYgKzI0OSwxMCBAQAogICAgICAgICAgICAgICAgIH0gWWllbGQ7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgfSBZaWVsZEZyb207CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfaW50X3NlcSAqb3BzOwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmNvbXBhcmF0b3JzOwpAQCAtMjc1LDcgKzI3NSw3IEBACiAgICAgICAgICAgICAgICAgfSBTdHI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBzOworICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgczsKICAgICAgICAgICAgICAgICB9IEJ5dGVzOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CkBAIC0zODMsNiArMzgzLDExIEBACiAgICAgICAgIGlkZW50aWZpZXIgYXNuYW1lOwogfTsKIAorc3RydWN0IF93aXRoaXRlbSB7CisgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOworICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7Cit9OworCiAKICNkZWZpbmUgTW9kdWxlKGEwLCBhMSkgX1B5X01vZHVsZShhMCwgYTEpCiBtb2RfdHkgX1B5X01vZHVsZShhc2RsX3NlcSAqIGJvZHksIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQyMSwxOCArNDI2LDE2IEBACiAjZGVmaW5lIElmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9JZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogc3RtdF90eSBfUHlfSWYoZXhwcl90eSB0ZXN0LCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgV2l0aChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfV2l0aChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQotc3RtdF90eSBfUHlfV2l0aChleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBhc2RsX3NlcSAqIGJvZHksCi0gICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpCitzdG10X3R5IF9QeV9XaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgUmFpc2UoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfUmFpc2UoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfUmFpc2UoZXhwcl90eSBleGMsIGV4cHJfdHkgY2F1c2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBUcnlFeGNlcHQoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1RyeUV4Y2VwdChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQotc3RtdF90eSBfUHlfVHJ5RXhjZXB0KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgVHJ5RmluYWxseShhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9UcnlGaW5hbGx5KGEwLCBhMSwgYTIsIGEzLCBhNCkKLXN0bXRfdHkgX1B5X1RyeUZpbmFsbHkoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGZpbmFsYm9keSwgaW50IGxpbmVubywgaW50Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgVHJ5KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfVHJ5KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfVHJ5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsCisgICAgICAgICAgICAgICAgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQXNzZXJ0KGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X0Fzc2VydChhMCwgYTEsIGEyLCBhMywgYTQpCiBzdG10X3R5IF9QeV9Bc3NlcnQoZXhwcl90eSB0ZXN0LCBleHByX3R5IG1zZywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNDkwLDYgKzQ5Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBZaWVsZChhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfWWllbGQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKSBfUHlfWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfWWllbGRGcm9tKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQ29tcGFyZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQ29tcGFyZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogZXhwcl90eSBfUHlfQ29tcGFyZShleHByX3R5IGxlZnQsIGFzZGxfaW50X3NlcSAqIG9wcywgYXNkbF9zZXEgKiBjb21wYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTUwMiw3ICs1MDgsNyBAQAogI2RlZmluZSBTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9TdHIoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9TdHIoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCi1leHByX3R5IF9QeV9CeXRlcyhzdHJpbmcgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKK2V4cHJfdHkgX1B5X0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEVsbGlwc2lzKGEwLCBhMSwgYTIpIF9QeV9FbGxpcHNpcyhhMCwgYTEsIGEyKQogZXhwcl90eSBfUHlfRWxsaXBzaXMoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKQEAgLTU0Nyw2ICs1NTMsOSBAQAoga2V5d29yZF90eSBfUHlfa2V5d29yZChpZGVudGlmaWVyIGFyZywgZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBhbGlhcyhhMCwgYTEsIGEyKSBfUHlfYWxpYXMoYTAsIGExLCBhMikKIGFsaWFzX3R5IF9QeV9hbGlhcyhpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXIgYXNuYW1lLCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIHdpdGhpdGVtKGEwLCBhMSwgYTIpIF9QeV93aXRoaXRlbShhMCwgYTEsIGEyKQord2l0aGl0ZW1fdHkgX1B5X3dpdGhpdGVtKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogCiBQeU9iamVjdCogUHlBU1RfbW9kMm9iaihtb2RfdHkgdCk7CiBtb2RfdHkgUHlBU1Rfb2JqMm1vZChQeU9iamVjdCogYXN0LCBQeUFyZW5hKiBhcmVuYSwgaW50IG1vZGUpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24uaCBiL0luY2x1ZGUvUHl0aG9uLmgKaW5kZXggZDZlNDdjMi4uYTc4YTcyMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24uaAorKysgYi9JbmNsdWRlL1B5dGhvbi5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKICNpbmNsdWRlICJweXBvcnQuaCIKKyNpbmNsdWRlICJweW1hY3JvLmgiCiAKICNpbmNsdWRlICJweWF0b21pYy5oIgogCkBAIC0xMDAsNiArMTAxLDcgQEAKICNpbmNsdWRlICJ3YXJuaW5ncy5oIgogI2luY2x1ZGUgIndlYWtyZWZvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RzZXEuaCIKKyNpbmNsdWRlICJuYW1lc3BhY2VvYmplY3QuaCIKIAogI2luY2x1ZGUgImNvZGVjcy5oIgogI2luY2x1ZGUgInB5ZXJyb3JzLmgiCkBAIC0xMjUsNDMgKzEyNyw2IEBACiAjaW5jbHVkZSAicHlzdHJjbXAuaCIKICNpbmNsdWRlICJkdG9hLmgiCiAjaW5jbHVkZSAiZmlsZXV0aWxzLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyogX1B5X01hbmdsZSBpcyBkZWZpbmVkIGluIGNvbXBpbGUuYyAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9NYW5nbGUoUHlPYmplY3QgKnAsIFB5T2JqZWN0ICpuYW1lKTsKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0vKiBBcmd1bWVudCBtdXN0IGJlIGEgY2hhciBvciBhbiBpbnQgaW4gWy0xMjgsIDEyN10gb3IgWzAsIDI1NV0uICovCi0jZGVmaW5lIFB5X0NIQVJNQVNLKGMpICAgICAgICAgICgodW5zaWduZWQgY2hhcikoKGMpICYgMHhmZikpCi0KICNpbmNsdWRlICJweWZwZS5oIgogCi0vKiBUaGVzZSBkZWZpbml0aW9ucyBtdXN0IG1hdGNoIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnMgaW4gZ3JhbWluaXQuaC4KLSAgIFRoZXJlJ3MgY29kZSBpbiBjb21waWxlLmMgdGhhdCBjaGVja3MgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gKi8KLSNkZWZpbmUgUHlfc2luZ2xlX2lucHV0IDI1NgotI2RlZmluZSBQeV9maWxlX2lucHV0IDI1NwotI2RlZmluZSBQeV9ldmFsX2lucHV0IDI1OAotCi0jaWZkZWYgSEFWRV9QVEgKLS8qIEdOVSBwdGggdXNlci1zcGFjZSB0aHJlYWQgc3VwcG9ydCAqLwotI2luY2x1ZGUgPHB0aC5oPgotI2VuZGlmCi0KLS8qIERlZmluZSBtYWNyb3MgZm9yIGlubGluZSBkb2N1bWVudGF0aW9uLiAqLwotI2RlZmluZSBQeURvY19WQVIobmFtZSkgc3RhdGljIGNoYXIgbmFtZVtdCi0jZGVmaW5lIFB5RG9jX1NUUlZBUihuYW1lLHN0cikgUHlEb2NfVkFSKG5hbWUpID0gUHlEb2NfU1RSKHN0cikKLSNpZmRlZiBXSVRIX0RPQ19TVFJJTkdTCi0jZGVmaW5lIFB5RG9jX1NUUihzdHIpIHN0cgotI2Vsc2UKLSNkZWZpbmUgUHlEb2NfU1RSKHN0cikgIiIKLSNlbmRpZgotCiAjZW5kaWYgLyogIVB5X1BZVEhPTl9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Fic3RyYWN0LmggYi9JbmNsdWRlL2Fic3RyYWN0LmgKaW5kZXggMGZlMDk1Ni4uNDRiNWFmNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hYnN0cmFjdC5oCisrKyBiL0luY2x1ZGUvYWJzdHJhY3QuaApAQCAtNyw2ICs3LDcgQEAKICNpZmRlZiBQWV9TU0laRV9UX0NMRUFOCiAjZGVmaW5lIFB5T2JqZWN0X0NhbGxGdW5jdGlvbiBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCiAjZGVmaW5lIFB5T2JqZWN0X0NhbGxNZXRob2QgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxNZXRob2RJZCBfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUCiAjZW5kaWYKIAogLyogQWJzdHJhY3QgT2JqZWN0IEludGVyZmFjZSAobWFueSB0aGFua3MgdG8gSmltIEZ1bHRvbikgKi8KQEAgLTMwNywxMSArMzA4LDIyIEBACiAgICAgIFB5dGhvbiBleHByZXNzaW9uOiBvLm1ldGhvZChhcmdzKS4KICAgICAgICAqLwogCisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOworCisgICAgICAgLyoKKyAgICAgICAgIExpa2UgUHlPYmplY3RfQ2FsbE1ldGhvZCwgYnV0IGV4cGVjdCBhIF9QeV9JZGVudGlmaWVyKiBhcyB0aGUKKyAgICAgICAgIG1ldGhvZCBuYW1lLgorICAgICAgICovCisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVChQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9JZGVudGlmaWVyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKQEAgLTMyNyw2ICszMzksMTAgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRob2QsIC4uLik7CisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoUHlPYmplY3QgKm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworCiAKICAgICAgICAvKgogICAgICBDYWxsIHRoZSBtZXRob2QgbmFtZWQgbSBvZiBvYmplY3QgbyB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mCkBAIC01MTksMTEgKzUzNSwxMiBAQAogCiAKIAorICAgICAvKiBJbXBsZW1lbnRhdGlvbiBpbiBtZW1vcnlvYmplY3QuYyAqLwogICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfVG9Db250aWd1b3VzKHZvaWQgKmJ1ZiwgUHlfYnVmZmVyICp2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIGZvcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIG9yZGVyKTsKIAogICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfRnJvbUNvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCB2b2lkICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIG9yZGVyKTsKIAogCiAgICAgLyogQ29weSBsZW4gYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeQpAQCAtNTQ3LDcgKzU2NCw3IEBACiAgICAgLyogQ29weSB0aGUgZGF0YSBmcm9tIHRoZSBzcmMgYnVmZmVyIHRvIHRoZSBidWZmZXIgb2YgZGVzdGluYXRpb24KICAgICAgKi8KIAotICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBmb3J0KTsKKyAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0lzQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCk7CiAKIAogICAgICBQeUFQSV9GVU5DKHZvaWQpIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbXMsCkBAIC03NjEsMjEgKzc3OCw2IEBACiAgICAgIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlOdW1iZXJfQXNTc2l6ZV90KFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqZXhjKTsKIAogICAgICAgIC8qCi0gICAgIFJldHVybnMgdGhlIEludGVncmFsIGluc3RhbmNlIGNvbnZlcnRlZCB0byBhbiBpbnQuIFRoZQotICAgICBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBiZSBpbnQgb3IgbG9uZyBvciBoYXZlIGFuIF9faW50X18KLSAgICAgbWV0aG9kLiBTdGVhbHMgaW50ZWdyYWwncyByZWZlcmVuY2UuIGVycm9yX2Zvcm1hdCB3aWxsIGJlCi0gICAgIHVzZWQgdG8gY3JlYXRlIHRoZSBUeXBlRXJyb3IgaWYgaW50ZWdyYWwgaXNuJ3QgYWN0dWFsbHkgYW4KLSAgICAgSW50ZWdyYWwgaW5zdGFuY2UuIGVycm9yX2Zvcm1hdCBzaG91bGQgYmUgYSBmb3JtYXQgc3RyaW5nCi0gICAgIHRoYXQgY2FuIGFjY2VwdCBhIGNoYXIqIG5hbWluZyBpbnRlZ3JhbCdzIHR5cGUuCi0gICAgICAgKi8KLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU51bWJlcl9Db252ZXJ0SW50ZWdyYWxUb0ludCgKLSAgICAgICAgIFB5T2JqZWN0ICppbnRlZ3JhbCwKLSAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yX2Zvcm1hdCk7Ci0jZW5kaWYKLQotICAgICAgIC8qCiAgICAgUmV0dXJucyB0aGUgb2JqZWN0IGNvbnZlcnRlZCB0byBQeV9zc2l6ZV90IGJ5IGdvaW5nIHRocm91Z2gKICAgICBQeU51bWJlcl9JbmRleCBmaXJzdC4gIElmIGFuIG92ZXJmbG93IGVycm9yIG9jY3VycyB3aGlsZQogICAgIGNvbnZlcnRpbmcgdGhlIGludC1vci1sb25nIHRvIFB5X3NzaXplX3QsIHRoZW4gdGhlIHNlY29uZCBhcmd1bWVudApAQCAtMTAxNCw3ICsxMDE2LDcgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2VxdWVuY2VfRmFzdChQeU9iamVjdCAqbywgY29uc3QgY2hhciogbSk7CiAgICAgICAgLyoKLSAgICAgUmV0dXJucyB0aGUgc2VxdWVuY2UsIG8sIGFzIGEgdHVwbGUsIHVubGVzcyBpdCdzIGFscmVhZHkgYQorICAgICBSZXR1cm5zIHRoZSBzZXF1ZW5jZSwgbywgYXMgYSBsaXN0LCB1bmxlc3MgaXQncyBhbHJlYWR5IGEKICAgICAgdHVwbGUgb3IgbGlzdC4gIFVzZSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0gdG8gYWNjZXNzIHRoZQogICAgICBtZW1iZXJzIG9mIHRoaXMgbGlzdCwgYW5kIFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRSB0byBnZXQgaXRzIGxlbmd0aC4KIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hc2RsLmggYi9JbmNsdWRlL2FzZGwuaAppbmRleCA5YmIwNjk3Li42YmY2MThmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2FzZGwuaAorKysgYi9JbmNsdWRlL2FzZGwuaApAQCAtMyw2ICszLDcgQEAKIAogdHlwZWRlZiBQeU9iamVjdCAqIGlkZW50aWZpZXI7CiB0eXBlZGVmIFB5T2JqZWN0ICogc3RyaW5nOwordHlwZWRlZiBQeU9iamVjdCAqIGJ5dGVzOwogdHlwZWRlZiBQeU9iamVjdCAqIG9iamVjdDsKIAogLyogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXNkbF9jLnB5IHdhcyBjb21wbGV0ZWx5CkBAIC0xNCwxNyArMTUsMTcgQEAKIC8qIFhYWCBBIHNlcXVlbmNlIHNob3VsZCBiZSB0eXBlZCBzbyB0aGF0IGl0cyB1c2UgY2FuIGJlIHR5cGVjaGVja2VkLiAqLwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50IHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplOwogICAgIHZvaWQgKmVsZW1lbnRzWzFdOwogfSBhc2RsX3NlcTsKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBpbnQgZWxlbWVudHNbMV07CiB9IGFzZGxfaW50X3NlcTsKIAotYXNkbF9zZXEgKmFzZGxfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOwotYXNkbF9pbnRfc2VxICphc2RsX2ludF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSk7Cithc2RsX3NlcSAqYXNkbF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOworYXNkbF9pbnRfc2VxICphc2RsX2ludF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOwogCiAjZGVmaW5lIGFzZGxfc2VxX0dFVChTLCBJKSAoUyktPmVsZW1lbnRzWyhJKV0KICNkZWZpbmUgYXNkbF9zZXFfTEVOKFMpICgoUykgPT0gTlVMTCA/IDAgOiAoUyktPnNpemUpCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzdC5oIGIvSW5jbHVkZS9hc3QuaAppbmRleCBhMDE1MzM2Li4wNTVlOGRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2FzdC5oCisrKyBiL0luY2x1ZGUvYXN0LmgKQEAgLTQsNiArNCw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKGludCkgUHlBU1RfVmFsaWRhdGUobW9kX3R5KTsKIFB5QVBJX0ZVTkMobW9kX3R5KSBQeUFTVF9Gcm9tTm9kZSgKICAgICBjb25zdCBub2RlICpuLAogICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmggYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKaW5kZXggZTFhZjg5Zi4uZDdjN2ZmZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc29iamVjdC5oCisrKyBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaApAQCAtNjIsOCArNjIsNiBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0TG9uZyhQeU9iamVjdCosIGludCwgaW50LAotCQkJCQkJICBpbnQsIGNoYXIqKiwgaW50Kik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlLmggYi9JbmNsdWRlL2NvZGUuaAppbmRleCBlNzczYjZhLi43YzdlNWJmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGUuaAorKysgYi9JbmNsdWRlL2NvZGUuaApAQCAtMjIsNiArMjIsNyBAQAogICAgIFB5T2JqZWN0ICpjb19mcmVldmFyczsJLyogdHVwbGUgb2Ygc3RyaW5ncyAoZnJlZSB2YXJpYWJsZSBuYW1lcykgKi8KICAgICBQeU9iamVjdCAqY29fY2VsbHZhcnM7ICAgICAgLyogdHVwbGUgb2Ygc3RyaW5ncyAoY2VsbCB2YXJpYWJsZSBuYW1lcykgKi8KICAgICAvKiBUaGUgcmVzdCBkb2Vzbid0IGNvdW50IGZvciBoYXNoIG9yIGNvbXBhcmlzb25zICovCisgICAgdW5zaWduZWQgY2hhciAqY29fY2VsbDJhcmc7IC8qIE1hcHMgY2VsbCB2YXJzIHdoaWNoIGFyZSBhcmd1bWVudHMuICovCiAgICAgUHlPYmplY3QgKmNvX2ZpbGVuYW1lOwkvKiB1bmljb2RlICh3aGVyZSBpdCB3YXMgbG9hZGVkIGZyb20pICovCiAgICAgUHlPYmplY3QgKmNvX25hbWU7CQkvKiB1bmljb2RlIChuYW1lLCBmb3IgcmVmZXJlbmNlKSAqLwogICAgIGludCBjb19maXJzdGxpbmVubzsJCS8qIGZpcnN0IHNvdXJjZSBsaW5lIG51bWJlciAqLwpAQCAtNTcsNiArNTgsMTEgQEAKIAogI2RlZmluZSBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCAgMHg0MDAwMAogCisvKiBUaGlzIHZhbHVlIGlzIGZvdW5kIGluIHRoZSBjb19jZWxsMmFyZyBhcnJheSB3aGVuIHRoZSBhc3NvY2lhdGVkIGNlbGwKKyAgIHZhcmlhYmxlIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW4gYXJndW1lbnQuIFRoZSBtYXhpbXVtIG51bWJlciBvZgorICAgYXJndW1lbnRzIGlzIDI1NSAoaW5kZXhlZCB1cCB0byAyNTQpLCBzbyAyNTUgd29yayBhcyBhIHNwZWNpYWwgZmxhZy4qLworI2RlZmluZSBDT19DRUxMX05PVF9BTl9BUkcgMjU1CisKIC8qIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgaWYgYSBmdXR1cmUgc3RhdGVtZW50IG1vZGlmaWVzIHRoZSBzeW50YXguCiAgICBGb3IgZXhhbXBsZSwgd2hlbiBhIGtleXdvcmQgaXMgYWRkZWQuCiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlY3MuaCBiL0luY2x1ZGUvY29kZWNzLmgKaW5kZXggZGZmMDllNy4uMGQ5ZTliNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlY3MuaAorKysgYi9JbmNsdWRlL2NvZGVjcy5oCkBAIC0xNzQsNiArMTc0LDggQEAKIC8qIHJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKFx4LCBcdSBhbmQgXFUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKTsKIAorUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X2hleGRpZ2l0czsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29tcGlsZS5oIGIvSW5jbHVkZS9jb21waWxlLmgKaW5kZXggYmM1M2IzOS4uYWMyNjM2ZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb21waWxlLmgKKysrIGIvSW5jbHVkZS9jb21waWxlLmgKQEAgLTEsNyArMSw3IEBACi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjaWZuZGVmIFB5X0NPTVBJTEVfSAogI2RlZmluZSBQeV9DT01QSUxFX0gKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2luY2x1ZGUgImNvZGUuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zOCw5ICszOCwxOSBAQAogICAgIFB5QXJlbmEgKmFyZW5hKTsKIFB5QVBJX0ZVTkMoUHlGdXR1cmVGZWF0dXJlcyAqKSBQeUZ1dHVyZV9Gcm9tQVNUKHN0cnVjdCBfbW9kICosIGNvbnN0IGNoYXIgKik7CiAKKy8qIF9QeV9NYW5nbGUgaXMgZGVmaW5lZCBpbiBjb21waWxlLmMgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfTWFuZ2xlKFB5T2JqZWN0ICpwLCBQeU9iamVjdCAqbmFtZSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCi0jZW5kaWYgLyogIVB5X0NPTVBJTEVfSCAqLworCiAjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKKy8qIFRoZXNlIGRlZmluaXRpb25zIG11c3QgbWF0Y2ggY29ycmVzcG9uZGluZyBkZWZpbml0aW9ucyBpbiBncmFtaW5pdC5oLgorICAgVGhlcmUncyBjb2RlIGluIGNvbXBpbGUuYyB0aGF0IGNoZWNrcyB0aGF0IHRoZXkgYXJlIHRoZSBzYW1lLiAqLworI2RlZmluZSBQeV9zaW5nbGVfaW5wdXQgMjU2CisjZGVmaW5lIFB5X2ZpbGVfaW5wdXQgMjU3CisjZGVmaW5lIFB5X2V2YWxfaW5wdXQgMjU4CisKKyNlbmRpZiAvKiAhUHlfQ09NUElMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaCBiL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCmluZGV4IGMzNzliMDguLjE5MzRmM2IgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCisrKyBiL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCkBAIC02Myw5ICs2MywxMiBAQAogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kYXRldGltZS5oIGIvSW5jbHVkZS9kYXRldGltZS5oCmluZGV4IGRiNTdhMTguLjQxZTNiY2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGF0ZXRpbWUuaAorKysgYi9JbmNsdWRlL2RhdGV0aW1lLmgKQEAgLTEzNSw2ICsxMzUsMTIgQEAKICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs0XSA8PCA4KSAgfCAgICAgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzVdKQogCisvKiBBcHBseSBmb3IgdGltZSBkZWx0YSBpbnN0YW5jZXMgKi8KKyNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUyhvKSAgICAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5kYXlzKQorI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTKG8pICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPnNlY29uZHMpCisjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EUyhvKSAgICAgICAgICAgIFwKKyAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+bWljcm9zZWNvbmRzKQorCiAKIC8qIERlZmluZSBzdHJ1Y3R1cmUgZm9yIEMgQVBJLiAqLwogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kZXNjcm9iamVjdC5oIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCmluZGV4IDY0NmIzY2MuLmUyYmE5N2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaAorKysgYi9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKQEAgLTQyLDYgKzQyLDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlUeXBlT2JqZWN0ICpkX3R5cGU7CiAgICAgUHlPYmplY3QgKmRfbmFtZTsKKyAgICBQeU9iamVjdCAqZF9xdWFsbmFtZTsKIH0gUHlEZXNjck9iamVjdDsKIAogI2RlZmluZSBQeURlc2NyX0NPTU1PTiBQeURlc2NyT2JqZWN0IGRfY29tbW9uCmRpZmYgLS1naXQgYS9JbmNsdWRlL2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvZGljdG9iamVjdC5oCmluZGV4IGIwMjY3ODUuLmQ4OWFhYzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGljdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGljdG9iamVjdC5oCkBAIC0xMyw3OCArMTMsMjAgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAotLyoKLVRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6Ci0KLTEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCi0gICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KLSAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAotICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgotCi0yLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCi0gICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgdXBvbgotICAga2V5IGRlbGV0aW9uLiAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCi0KLTMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCi0gICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KLSAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KLSAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KLSAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCi0gICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCi0KLU5vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KLW1lYW5pbmcgb3RoZXJ3aXNlLgotKi8KLQotLyogUHlEaWN0X01JTlNJWkUgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIGRpY3Rpb25hcnkuICBUaGlzIG1hbnkgc2xvdHMgYXJlCi0gKiBhbGxvY2F0ZWQgZGlyZWN0bHkgaW4gdGhlIGRpY3Qgb2JqZWN0IChpbiB0aGUgbWFfc21hbGx0YWJsZSBtZW1iZXIpLgotICogSXQgbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGFuZCBhdCBsZWFzdCA0LiAgOCBhbGxvd3MgZGljdHMgd2l0aCBubyBtb3JlCi0gKiB0aGFuIDUgYWN0aXZlIGVudHJpZXMgdG8gbGl2ZSBpbiBtYV9zbWFsbHRhYmxlIChhbmQgc28gYXZvaWQgYW4KLSAqIGFkZGl0aW9uYWwgbWFsbG9jKTsgaW5zdHJ1bWVudGF0aW9uIHN1Z2dlc3RlZCB0aGlzIHN1ZmZpY2VzIGZvciB0aGUKLSAqIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsIGluc3RhbmNlIGRpY3RzIGFuZAotICogdXN1YWxseS1zbWFsbCBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgotICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFIDgKIAordHlwZWRlZiBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IFB5RGljdEtleXNPYmplY3Q7CisKKy8qIFRoZSBtYV92YWx1ZXMgcG9pbnRlciBpcyBOVUxMIGZvciBhIGNvbWJpbmVkIHRhYmxlCisgKiBvciBwb2ludHMgdG8gYW4gYXJyYXkgb2YgUHlPYmplY3QqIGZvciBhIHNwbGl0IHRhYmxlCisgKi8KIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIG1lX2tleS4gKi8KLSAgICBQeV9oYXNoX3QgbWVfaGFzaDsKLSAgICBQeU9iamVjdCAqbWVfa2V5OwotICAgIFB5T2JqZWN0ICptZV92YWx1ZTsKLX0gUHlEaWN0RW50cnk7Ci0KLS8qCi1UbyBlbnN1cmUgdGhlIGxvb2t1cCBhbGdvcml0aG0gdGVybWluYXRlcywgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgVW51c2VkCi1zbG90IChOVUxMIGtleSkgaW4gdGhlIHRhYmxlLgotVGhlIHZhbHVlIG1hX2ZpbGwgaXMgdGhlIG51bWJlciBvZiBub24tTlVMTCBrZXlzIChzdW0gb2YgQWN0aXZlIGFuZCBEdW1teSk7Ci1tYV91c2VkIGlzIHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwsIG5vbi1kdW1teSBrZXlzICg9PSB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMCi12YWx1ZXMgPT0gdGhlIG51bWJlciBvZiBBY3RpdmUgaXRlbXMpLgotVG8gYXZvaWQgc2xvd2luZyBkb3duIGxvb2t1cHMgb24gYSBuZWFyLWZ1bGwgdGFibGUsIHdlIHJlc2l6ZSB0aGUgdGFibGUgd2hlbgotaXQncyB0d28tdGhpcmRzIGZ1bGwuCi0qLwotdHlwZWRlZiBzdHJ1Y3QgX2RpY3RvYmplY3QgUHlEaWN0T2JqZWN0Owotc3RydWN0IF9kaWN0b2JqZWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfc3NpemVfdCBtYV9maWxsOyAgLyogIyBBY3RpdmUgKyAjIER1bW15ICovCi0gICAgUHlfc3NpemVfdCBtYV91c2VkOyAgLyogIyBBY3RpdmUgKi8KKyAgICBQeV9zc2l6ZV90IG1hX3VzZWQ7CisgICAgUHlEaWN0S2V5c09iamVjdCAqbWFfa2V5czsKKyAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKK30gUHlEaWN0T2JqZWN0OwogCi0gICAgLyogVGhlIHRhYmxlIGNvbnRhaW5zIG1hX21hc2sgKyAxIHNsb3RzLCBhbmQgdGhhdCdzIGEgcG93ZXIgb2YgMi4KLSAgICAgKiBXZSBzdG9yZSB0aGUgbWFzayBpbnN0ZWFkIG9mIHRoZSBzaXplIGJlY2F1c2UgdGhlIG1hc2sgaXMgbW9yZQotICAgICAqIGZyZXF1ZW50bHkgbmVlZGVkLgotICAgICAqLwotICAgIFB5X3NzaXplX3QgbWFfbWFzazsKLQotICAgIC8qIG1hX3RhYmxlIHBvaW50cyB0byBtYV9zbWFsbHRhYmxlIGZvciBzbWFsbCB0YWJsZXMsIGVsc2UgdG8KLSAgICAgKiBhZGRpdGlvbmFsIG1hbGxvYydlZCBtZW1vcnkuICBtYV90YWJsZSBpcyBuZXZlciBOVUxMISAgVGhpcyBydWxlCi0gICAgICogc2F2ZXMgcmVwZWF0ZWQgcnVudGltZSBudWxsLXRlc3RzIGluIHRoZSB3b3JraG9yc2UgZ2V0aXRlbSBhbmQKLSAgICAgKiBzZXRpdGVtIGNhbGxzLgotICAgICAqLwotICAgIFB5RGljdEVudHJ5ICptYV90YWJsZTsKLSAgICBQeURpY3RFbnRyeSAqKCptYV9sb29rdXApKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKTsKLSAgICBQeURpY3RFbnRyeSBtYV9zbWFsbHRhYmxlW1B5RGljdF9NSU5TSVpFXTsKLX07CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RGljdF9UeXBlOwpAQCAtMTA5LDEyICs1MSwxNiBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfTmV3KHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfU2V0SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwogUHlBUElfRlVOQyh2b2lkKSBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfTmV4dCgKICAgICBQeU9iamVjdCAqbXAsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlEaWN0S2V5c09iamVjdCAqX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSwgUHlfaGFzaF90ICpoYXNoKTsKICNlbmRpZgpAQCAtMTI5LDYgKzc1LDEwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfTmV3UHJlc2l6ZWQoUHlfc3NpemVfdCBtaW51c2VkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9NYXliZVVudHJhY2soUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICptcCk7CitQeV9zc2l6ZV90IF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CisjZGVmaW5lIF9QeURpY3RfSGFzU3BsaXRUYWJsZShkKSAoKGQpLT5tYV92YWx1ZXMgIT0gTlVMTCkKKworUHlBUElfRlVOQyhpbnQpIFB5RGljdF9DbGVhckZyZWVMaXN0KHZvaWQpOwogI2VuZGlmCiAKIC8qIFB5RGljdF9VcGRhdGUobXAsIG90aGVyKSBpcyBlcXVpdmFsZW50IHRvIFB5RGljdF9NZXJnZShtcCwgb3RoZXIsIDEpLiAqLwpAQCAtMTUzLDkgKzEwMywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfU2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSwgUHlPYmplY3QgKml0ZW0pOworUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfU2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICppdGVtKTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfRGVsSXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK2ludCBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlUeXBlT2JqZWN0ICp0cCwgUHlPYmplY3QgKipkaWN0cHRyLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKTsKK1B5T2JqZWN0ICpfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICosIFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZHRvYS5oIGIvSW5jbHVkZS9kdG9hLmgKaW5kZXggODE5YmQwZi4uOWJmYjYyNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kdG9hLmgKKysrIGIvSW5jbHVkZS9kdG9hLmgKQEAgLTgsNiArOCw4IEBACiBQeUFQSV9GVU5DKGNoYXIgKikgX1B5X2RnX2R0b2EoZG91YmxlIGQsIGludCBtb2RlLCBpbnQgbmRpZ2l0cywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZGVjcHQsIGludCAqc2lnbiwgY2hhciAqKnJ2ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9kZ19mcmVlZHRvYShjaGFyICpzKTsKK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlfZGdfc3RkbmFuKGludCBzaWduKTsKK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlfZGdfaW5maW5pdHkoaW50IHNpZ24pOwogCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9lcnJjb2RlLmggYi9JbmNsdWRlL2VycmNvZGUuaAppbmRleCA2YmIzY2MxLi41OTQ2Njg2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2VycmNvZGUuaAorKysgYi9JbmNsdWRlL2VycmNvZGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBFX0VPTFMJCTI0CS8qIEVPTCBpbiBzaW5nbGUtcXVvdGVkIHN0cmluZyAqLwogI2RlZmluZSBFX0xJTkVDT05UCTI1CS8qIFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBhIGxpbmUgY29udGludWF0aW9uICovCiAjZGVmaW5lIEVfSURFTlRJRklFUiAgICAyNiAgICAgIC8qIEludmFsaWQgY2hhcmFjdGVycyBpbiBpZGVudGlmaWVyICovCisjZGVmaW5lIEVfQkFEU0lOR0xFCTI3CS8qIElsbC1mb3JtZWQgc2luZ2xlIHN0YXRlbWVudCBpbnB1dCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZXV0aWxzLmggYi9JbmNsdWRlL2ZpbGV1dGlscy5oCmluZGV4IDJmYWRlOWIuLjdjMThjZjIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZXV0aWxzLmgKKysrIGIvSW5jbHVkZS9maWxldXRpbHMuaApAQCAtNSw2ICs1LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOworCiBQeUFQSV9GVU5DKHdjaGFyX3QgKikgX1B5X2NoYXIyd2NoYXIoCiAgICAgY29uc3QgY2hhciAqYXJnLAogICAgIHNpemVfdCAqc2l6ZSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKaW5kZXggOTBmMGE0NS4uZTI0MGZkYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjZGVmaW5lIFB5X1JFVFVSTl9OQU4gcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeV9OQU4pCiAjZW5kaWYKIAotI2RlZmluZSBQeV9SRVRVUk5fSU5GKHNpZ24pIGRvCQkJCQlcCi0JaWYgKGNvcHlzaWduKDEuLCBzaWduKSA9PSAxLikgewkJCQlcCi0JCXJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfSFVHRV9WQUwpOwlcCi0JfSBlbHNlIHsJCQkJCQlcCi0JCXJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoLVB5X0hVR0VfVkFMKTsJXAotCX0gd2hpbGUoMCkKKyNkZWZpbmUgUHlfUkVUVVJOX0lORihzaWduKSBkbyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoY29weXNpZ24oMS4sIHNpZ24pID09IDEuKSB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeV9IVUdFX1ZBTCk7ICAgIFwKKyAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgtUHlfSFVHRV9WQUwpOyAgIFwKKyAgICB9IHdoaWxlKDApCiAKIFB5QVBJX0ZVTkMoZG91YmxlKSBQeUZsb2F0X0dldE1heCh2b2lkKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBQeUZsb2F0X0dldE1pbih2b2lkKTsKQEAgLTExMCwxMSArMTEwLDE2IEBACiAvKiBmcmVlIGxpc3QgYXBpICovCiBQeUFQSV9GVU5DKGludCkgUHlGbG9hdF9DbGVhckZyZWVMaXN0KHZvaWQpOwogCitQeUFQSV9GVU5DKHZvaWQpIF9QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSogb3V0KTsKKwogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotCQkJCQkgICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0JCQkJCSAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mcmFtZW9iamVjdC5oIGIvSW5jbHVkZS9mcmFtZW9iamVjdC5oCmluZGV4IDFmYjY0YmIuLjMzZjczYWYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnJhbWVvYmplY3QuaAorKysgYi9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKQEAgLTksNDUgKzksNDUgQEAKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50IGJfdHlwZTsJCQkvKiB3aGF0IGtpbmQgb2YgYmxvY2sgdGhpcyBpcyAqLwotICAgIGludCBiX2hhbmRsZXI7CQkvKiB3aGVyZSB0byBqdW1wIHRvIGZpbmQgaGFuZGxlciAqLwotICAgIGludCBiX2xldmVsOwkJLyogdmFsdWUgc3RhY2sgbGV2ZWwgdG8gcG9wIHRvICovCisgICAgaW50IGJfdHlwZTsgICAgICAgICAgICAgICAgIC8qIHdoYXQga2luZCBvZiBibG9jayB0aGlzIGlzICovCisgICAgaW50IGJfaGFuZGxlcjsgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGp1bXAgdG8gZmluZCBoYW5kbGVyICovCisgICAgaW50IGJfbGV2ZWw7ICAgICAgICAgICAgICAgIC8qIHZhbHVlIHN0YWNrIGxldmVsIHRvIHBvcCB0byAqLwogfSBQeVRyeUJsb2NrOwogCiB0eXBlZGVmIHN0cnVjdCBfZnJhbWUgewogICAgIFB5T2JqZWN0X1ZBUl9IRUFECi0gICAgc3RydWN0IF9mcmFtZSAqZl9iYWNrOwkvKiBwcmV2aW91cyBmcmFtZSwgb3IgTlVMTCAqLwotICAgIFB5Q29kZU9iamVjdCAqZl9jb2RlOwkvKiBjb2RlIHNlZ21lbnQgKi8KLSAgICBQeU9iamVjdCAqZl9idWlsdGluczsJLyogYnVpbHRpbiBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KLSAgICBQeU9iamVjdCAqZl9nbG9iYWxzOwkvKiBnbG9iYWwgc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCi0gICAgUHlPYmplY3QgKmZfbG9jYWxzOwkJLyogbG9jYWwgc3ltYm9sIHRhYmxlIChhbnkgbWFwcGluZykgKi8KLSAgICBQeU9iamVjdCAqKmZfdmFsdWVzdGFjazsJLyogcG9pbnRzIGFmdGVyIHRoZSBsYXN0IGxvY2FsICovCisgICAgc3RydWN0IF9mcmFtZSAqZl9iYWNrOyAgICAgIC8qIHByZXZpb3VzIGZyYW1lLCBvciBOVUxMICovCisgICAgUHlDb2RlT2JqZWN0ICpmX2NvZGU7ICAgICAgIC8qIGNvZGUgc2VnbWVudCAqLworICAgIFB5T2JqZWN0ICpmX2J1aWx0aW5zOyAgICAgICAvKiBidWlsdGluIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLworICAgIFB5T2JqZWN0ICpmX2dsb2JhbHM7ICAgICAgICAvKiBnbG9iYWwgc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCisgICAgUHlPYmplY3QgKmZfbG9jYWxzOyAgICAgICAgIC8qIGxvY2FsIHN5bWJvbCB0YWJsZSAoYW55IG1hcHBpbmcpICovCisgICAgUHlPYmplY3QgKipmX3ZhbHVlc3RhY2s7ICAgIC8qIHBvaW50cyBhZnRlciB0aGUgbGFzdCBsb2NhbCAqLwogICAgIC8qIE5leHQgZnJlZSBzbG90IGluIGZfdmFsdWVzdGFjay4gIEZyYW1lIGNyZWF0aW9uIHNldHMgdG8gZl92YWx1ZXN0YWNrLgogICAgICAgIEZyYW1lIGV2YWx1YXRpb24gdXN1YWxseSBOVUxMcyBpdCwgYnV0IGEgZnJhbWUgdGhhdCB5aWVsZHMgc2V0cyBpdAogICAgICAgIHRvIHRoZSBjdXJyZW50IHN0YWNrIHRvcC4gKi8KICAgICBQeU9iamVjdCAqKmZfc3RhY2t0b3A7Ci0gICAgUHlPYmplY3QgKmZfdHJhY2U7CQkvKiBUcmFjZSBmdW5jdGlvbiAqLworICAgIFB5T2JqZWN0ICpmX3RyYWNlOyAgICAgICAgICAvKiBUcmFjZSBmdW5jdGlvbiAqLwogCi0JLyogSW4gYSBnZW5lcmF0b3IsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzd2FwIGJldHdlZW4gdGhlIGV4Y2VwdGlvbgotCSAgIHN0YXRlIGluc2lkZSB0aGUgZ2VuZXJhdG9yIGFuZCB0aGUgZXhjZXB0aW9uIHN0YXRlIG9mIHRoZSBjYWxsaW5nCi0JICAgZnJhbWUgKHdoaWNoIHNob3VsZG4ndCBiZSBpbXBhY3RlZCB3aGVuIHRoZSBnZW5lcmF0b3IgInlpZWxkcyIKLQkgICBmcm9tIGFuIGV4Y2VwdCBoYW5kbGVyKS4KLQkgICBUaGVzZSB0aHJlZSBmaWVsZHMgZXhpc3QgZXhhY3RseSBmb3IgdGhhdCwgYW5kIGFyZSB1bnVzZWQgZm9yCi0JICAgbm9uLWdlbmVyYXRvciBmcmFtZXMuIFNlZSB0aGUgU0FWRV9FWENfU1RBVEUgYW5kIFNXQVBfRVhDX1NUQVRFCi0JICAgbWFjcm9zIGluIGNldmFsLmMgZm9yIGRldGFpbHMgb2YgdGhlaXIgdXNlLiAqLworICAgICAgICAvKiBJbiBhIGdlbmVyYXRvciwgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHN3YXAgYmV0d2VlbiB0aGUgZXhjZXB0aW9uCisgICAgICAgICAgIHN0YXRlIGluc2lkZSB0aGUgZ2VuZXJhdG9yIGFuZCB0aGUgZXhjZXB0aW9uIHN0YXRlIG9mIHRoZSBjYWxsaW5nCisgICAgICAgICAgIGZyYW1lICh3aGljaCBzaG91bGRuJ3QgYmUgaW1wYWN0ZWQgd2hlbiB0aGUgZ2VuZXJhdG9yICJ5aWVsZHMiCisgICAgICAgICAgIGZyb20gYW4gZXhjZXB0IGhhbmRsZXIpLgorICAgICAgICAgICBUaGVzZSB0aHJlZSBmaWVsZHMgZXhpc3QgZXhhY3RseSBmb3IgdGhhdCwgYW5kIGFyZSB1bnVzZWQgZm9yCisgICAgICAgICAgIG5vbi1nZW5lcmF0b3IgZnJhbWVzLiBTZWUgdGhlIHNhdmVfZXhjX3N0YXRlIGFuZCBzd2FwX2V4Y19zdGF0ZQorICAgICAgICAgICBmdW5jdGlvbnMgaW4gY2V2YWwuYyBmb3IgZGV0YWlscyBvZiB0aGVpciB1c2UuICovCiAgICAgUHlPYmplY3QgKmZfZXhjX3R5cGUsICpmX2V4Y192YWx1ZSwgKmZfZXhjX3RyYWNlYmFjazsKIAogICAgIFB5VGhyZWFkU3RhdGUgKmZfdHN0YXRlOwotICAgIGludCBmX2xhc3RpOwkJLyogTGFzdCBpbnN0cnVjdGlvbiBpZiBjYWxsZWQgKi8KKyAgICBpbnQgZl9sYXN0aTsgICAgICAgICAgICAgICAgLyogTGFzdCBpbnN0cnVjdGlvbiBpZiBjYWxsZWQgKi8KICAgICAvKiBDYWxsIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIGluc3RlYWQgb2YgcmVhZGluZyB0aGlzIGZpZWxkCiAgICAgICAgZGlyZWN0bHkuICBBcyBvZiAyLjMgZl9saW5lbm8gaXMgb25seSB2YWxpZCB3aGVuIHRyYWNpbmcgaXMKICAgICAgICBhY3RpdmUgKGkuZS4gd2hlbiBmX3RyYWNlIGlzIHNldCkuICBBdCBvdGhlciB0aW1lcyB3ZSB1c2UKICAgICAgICBQeUNvZGVfQWRkcjJMaW5lIHRvIGNhbGN1bGF0ZSB0aGUgbGluZSBmcm9tIHRoZSBjdXJyZW50CiAgICAgICAgYnl0ZWNvZGUgaW5kZXguICovCi0gICAgaW50IGZfbGluZW5vOwkJLyogQ3VycmVudCBsaW5lIG51bWJlciAqLwotICAgIGludCBmX2libG9jazsJCS8qIGluZGV4IGluIGZfYmxvY2tzdGFjayAqLworICAgIGludCBmX2xpbmVubzsgICAgICAgICAgICAgICAvKiBDdXJyZW50IGxpbmUgbnVtYmVyICovCisgICAgaW50IGZfaWJsb2NrOyAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGZfYmxvY2tzdGFjayAqLwogICAgIFB5VHJ5QmxvY2sgZl9ibG9ja3N0YWNrW0NPX01BWEJMT0NLU107IC8qIGZvciB0cnkgYW5kIGxvb3AgYmxvY2tzICovCi0gICAgUHlPYmplY3QgKmZfbG9jYWxzcGx1c1sxXTsJLyogbG9jYWxzK3N0YWNrLCBkeW5hbWljYWxseSBzaXplZCAqLworICAgIFB5T2JqZWN0ICpmX2xvY2Fsc3BsdXNbMV07ICAvKiBsb2NhbHMrc3RhY2ssIGR5bmFtaWNhbGx5IHNpemVkICovCiB9IFB5RnJhbWVPYmplY3Q7CiAKIApAQCAtNzksNiArNzksOCBAQAogCiBQeUFQSV9GVU5DKGludCkgUHlGcmFtZV9DbGVhckZyZWVMaXN0KHZvaWQpOwogCitQeUFQSV9GVU5DKHZvaWQpIF9QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKwogLyogUmV0dXJuIHRoZSBsaW5lIG9mIGNvZGUgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuICovCiBQeUFQSV9GVU5DKGludCkgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKFB5RnJhbWVPYmplY3QgKik7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnVuY29iamVjdC5oIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKaW5kZXggNTIxZDg3Yi4uY2MxNDI2YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mdW5jb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICAgICBQeU9iamVjdCAqZnVuY193ZWFrcmVmbGlzdDsJLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KICAgICBQeU9iamVjdCAqZnVuY19tb2R1bGU7CS8qIFRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSwgY2FuIGJlIGFueXRoaW5nICovCiAgICAgUHlPYmplY3QgKmZ1bmNfYW5ub3RhdGlvbnM7CS8qIEFubm90YXRpb25zLCBhIGRpY3Qgb3IgTlVMTCAqLworICAgIFB5T2JqZWN0ICpmdW5jX3F1YWxuYW1lOyAgICAvKiBUaGUgcXVhbGlmaWVkIG5hbWUgKi8KIAogICAgIC8qIEludmFyaWFudDoKICAgICAgKiAgICAgZnVuY19jbG9zdXJlIGNvbnRhaW5zIHRoZSBiaW5kaW5ncyBmb3IgZnVuY19jb2RlLT5jb19mcmVldmFycywgc28KQEAgLTQ0LDYgKzQ1LDcgQEAKICNkZWZpbmUgUHlGdW5jdGlvbl9DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeUZ1bmN0aW9uX1R5cGUpCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9OZXcoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldENvZGUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0R2xvYmFscyhQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRNb2R1bGUoUHlPYmplY3QgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCBkMjlmYjFlLi5lZDQ1MWJhIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTExLDIwICsxMSwyMCBAQAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewotCVB5T2JqZWN0X0hFQUQKLQkvKiBUaGUgZ2lfIHByZWZpeCBpcyBpbnRlbmRlZCB0byByZW1pbmQgb2YgZ2VuZXJhdG9yLWl0ZXJhdG9yLiAqLworICAgIFB5T2JqZWN0X0hFQUQKKyAgICAvKiBUaGUgZ2lfIHByZWZpeCBpcyBpbnRlbmRlZCB0byByZW1pbmQgb2YgZ2VuZXJhdG9yLWl0ZXJhdG9yLiAqLwogCi0JLyogTm90ZTogZ2lfZnJhbWUgY2FuIGJlIE5VTEwgaWYgdGhlIGdlbmVyYXRvciBpcyAiZmluaXNoZWQiICovCi0Jc3RydWN0IF9mcmFtZSAqZ2lfZnJhbWU7CisgICAgLyogTm90ZTogZ2lfZnJhbWUgY2FuIGJlIE5VTEwgaWYgdGhlIGdlbmVyYXRvciBpcyAiZmluaXNoZWQiICovCisgICAgc3RydWN0IF9mcmFtZSAqZ2lfZnJhbWU7CiAKLQkvKiBUcnVlIGlmIGdlbmVyYXRvciBpcyBiZWluZyBleGVjdXRlZC4gKi8KLQlpbnQgZ2lfcnVubmluZzsKLSAgICAKLQkvKiBUaGUgY29kZSBvYmplY3QgYmFja2luZyB0aGUgZ2VuZXJhdG9yICovCi0JUHlPYmplY3QgKmdpX2NvZGU7CisgICAgLyogVHJ1ZSBpZiBnZW5lcmF0b3IgaXMgYmVpbmcgZXhlY3V0ZWQuICovCisgICAgY2hhciBnaV9ydW5uaW5nOwogCi0JLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZS4gKi8KLQlQeU9iamVjdCAqZ2lfd2Vha3JlZmxpc3Q7CisgICAgLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLworICAgIFB5T2JqZWN0ICpnaV9jb2RlOworCisgICAgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZS4gKi8KKyAgICBQeU9iamVjdCAqZ2lfd2Vha3JlZmxpc3Q7CiB9IFB5R2VuT2JqZWN0OwogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlHZW5fVHlwZTsKQEAgLTM0LDYgKzM0LDggQEAKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUdlbl9OZXcoc3RydWN0IF9mcmFtZSAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKK1B5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1pbml0LmggYi9JbmNsdWRlL2dyYW1pbml0LmgKaW5kZXggZTBlMjdmOS4uM2VjOTQ5YSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtaW5pdC5oCisrKyBiL0luY2x1ZGUvZ3JhbWluaXQuaApAQCAtODEsMyArODEsNCBAQAogI2RlZmluZSBjb21wX2lmIDMzNAogI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzNQogI2RlZmluZSB5aWVsZF9leHByIDMzNgorI2RlZmluZSB5aWVsZF9hcmcgMzM3CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ltcG9ydC5oIGIvSW5jbHVkZS9pbXBvcnQuaAppbmRleCA0MDBlOTdjLi5mZGMyNzMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ltcG9ydC5oCisrKyBiL0luY2x1ZGUvaW1wb3J0LmgKQEAgLTcsNiArNyw5IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydFppcF9Jbml0KHZvaWQpOworCitQeU1PRElOSVRfRlVOQyBQeUluaXRfaW1wKHZvaWQpOwogUHlBUElfRlVOQyhsb25nKSBQeUltcG9ydF9HZXRNYWdpY051bWJlcih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeUltcG9ydF9HZXRNYWdpY1RhZyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoCkBAIC0yNCw3ICsyNywxNiBAQAogICAgIGNoYXIgKnBhdGhuYW1lLCAgICAgICAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KICAgICBjaGFyICpjcGF0aG5hbWUgICAgICAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUsCisgICAgUHlPYmplY3QgKmNvLAorICAgIFB5T2JqZWN0ICpwYXRobmFtZSwKKyAgICBQeU9iamVjdCAqY3BhdGhuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfR2V0TW9kdWxlRGljdCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfQWRkTW9kdWxlKAogICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CkBAIC0zNSw3ICs0NywxNCBAQAogICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKAotICAgIGNoYXIgKm5hbWUsICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLworICAgIGNvbnN0IGNoYXIgKm5hbWUsICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLworICAgIFB5T2JqZWN0ICpnbG9iYWxzLAorICAgIFB5T2JqZWN0ICpsb2NhbHMsCisgICAgUHlPYmplY3QgKmZyb21saXN0LAorICAgIGludCBsZXZlbAorICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lLAogICAgIFB5T2JqZWN0ICpnbG9iYWxzLAogICAgIFB5T2JqZWN0ICpsb2NhbHMsCiAgICAgUHlPYmplY3QgKmZyb21saXN0LApAQCAtNDMsMTIgKzYyLDE1IEBACiAgICAgKTsKIAogI2RlZmluZSBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeChuLCBnLCBsLCBmKSBcCi0gICAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwobiwgZywgbCwgZiwgLTEpCisgICAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwobiwgZywgbCwgZiwgMCkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9HZXRJbXBvcnRlcihQeU9iamVjdCAqcGF0aCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0ltcG9ydChQeU9iamVjdCAqbmFtZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X1JlbG9hZE1vZHVsZShQeU9iamVjdCAqbSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW1wb3J0X0NsZWFudXAodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoCiAgICAgY2hhciAqbmFtZSAgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKQEAgLTY1LDE3ICs4NywxNyBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfUmVJbml0TG9jayh2b2lkKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKV9QeUltcG9ydF9GaW5kQnVpbHRpbigKLSAgICBjaGFyICpuYW1lICAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKV9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZShjaGFyICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKV9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbigKICAgICBQeU9iamVjdCAqbW9kLAogICAgIGNoYXIgKm5hbWUgICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7Ci1QeUFQSV9GVU5DKGludClfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKFB5T2JqZWN0KiwgY2hhciAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KV9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiBzdHJ1Y3QgX2luaXR0YWIgewotICAgIGNoYXIgKm5hbWU7CisgICAgY2hhciAqbmFtZTsgICAgICAgICAgICAgICAgIC8qIEFTQ0lJIGVuY29kZWQgc3RyaW5nICovCiAgICAgUHlPYmplY3QqICgqaW5pdGZ1bmMpKHZvaWQpOwogfTsKIFB5QVBJX0RBVEEoc3RydWN0IF9pbml0dGFiICopIFB5SW1wb3J0X0luaXR0YWI7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ludHJjaGVjay5oIGIvSW5jbHVkZS9pbnRyY2hlY2suaAppbmRleCAzYjY3ZWQwLi5mNTNmZWUxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ludHJjaGVjay5oCisrKyBiL0luY2x1ZGUvaW50cmNoZWNrLmgKQEAgLTgsNiArOCwxMiBAQAogUHlBUElfRlVOQyhpbnQpIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfSW5pdEludGVycnVwdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfQWZ0ZXJGb3JrKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX0lzTWFpblRocmVhZCh2b2lkKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIHdpbmRvd3MuaCBpcyBub3QgaW5jbHVkZWQgYnkgUHl0aG9uLmggc28gdXNlIHZvaWQqIGluc3RlYWQgb2YgSEFORExFICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlPU19TaWdpbnRFdmVudCh2b2lkKTsKKyNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbGlzdG9iamVjdC5oIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKaW5kZXggOTQ5YjFhMy4uZGM2MmFlZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9saXN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKQEAgLTYyLDYgKzYyLDkgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMaXN0X0FzVHVwbGUoUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxpc3RfRXh0ZW5kKFB5TGlzdE9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworUHlBUElfRlVOQyhpbnQpIFB5TGlzdF9DbGVhckZyZWVMaXN0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlMaXN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKICNlbmRpZgogCiAvKiBNYWNybywgdHJhZGluZyBzYWZldHkgZm9yIHNwZWVkICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdpbnRyZXByLmggYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKaW5kZXggYjk0ZjdiMi4uM2E0NWJhZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25naW50cmVwci5oCisrKyBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaApAQCAtNiw3ICs2LDcgQEAKICNlbmRpZgogCiAKLS8qIFRoaXMgaXMgcHVibGlzaGVkIGZvciB0aGUgYmVuZWZpdCBvZiAiZnJpZW5kIiBtYXJzaGFsLmMgb25seS4gKi8KKy8qIFRoaXMgaXMgcHVibGlzaGVkIGZvciB0aGUgYmVuZWZpdCBvZiAiZnJpZW5kcyIgbWFyc2hhbC5jIGFuZCBfZGVjaW1hbC5jLiAqLwogCiAvKiBQYXJhbWV0ZXJzIG9mIHRoZSBsb25nIGludGVnZXIgcmVwcmVzZW50YXRpb24uICBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudAogICAgc2V0cyBvZiBwYXJhbWV0ZXJzOiBvbmUgc2V0IGZvciAzMC1iaXQgZGlnaXRzLCBzdG9yZWQgaW4gYW4gdW5zaWduZWQgMzItYml0CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IDVmOGIxNzguLmNkMGNmMzAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC0xMiw3ICsxMiw3IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlMb25nX1R5cGU7CiAKICNkZWZpbmUgUHlMb25nX0NoZWNrKG9wKSBcCi0JCVB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfTE9OR19TVUJDTEFTUykKKyAgICAgICAgUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19MT05HX1NVQkNMQVNTKQogI2RlZmluZSBQeUxvbmdfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeUxvbmdfVHlwZSkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmcobG9uZyk7CkBAIC04Myw2ICs4Myw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tU3RyaW5nKGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Vbmljb2RlKFB5X1VOSUNPREUqLCBQeV9zc2l6ZV90LCBpbnQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QoUHlPYmplY3QgKnUsIGludCBiYXNlKTsKICNlbmRpZgogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC0xMjQsOCArMTI1LDggQEAKICAgICAgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgdGhlIFB5dGhvbiBsb25nLgogKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KAotCWNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKLQlpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBuLAorICAgIGludCBsaXR0bGVfZW5kaWFuLCBpbnQgaXNfc2lnbmVkKTsKIAogLyogX1B5TG9uZ19Bc0J5dGVBcnJheTogQ29udmVydCB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgOCpuIGJpdHMgb2YgbG9uZwogICAgdiB0byBhIGJhc2UtMjU2IGludGVnZXIsIHN0b3JlZCBpbiBhcnJheSBieXRlcy4gIE5vcm1hbGx5IHJldHVybiAwLApAQCAtMTQ3LDE5ICsxNDgsMjggQEAKICAgICAgY2FzZSwgYnV0IGJ5dGVzIGhvbGRzIHRoZSBsZWFzdC1zaWduZmljYW50IG4gYnl0ZXMgb2YgdGhlIHRydWUgdmFsdWUuCiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfQXNCeXRlQXJyYXkoUHlMb25nT2JqZWN0KiB2LAotCXVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKLQlpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CisgICAgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBuLAorICAgIGludCBsaXR0bGVfZW5kaWFuLCBpbnQgaXNfc2lnbmVkKTsKIAogCiAvKiBfUHlMb25nX0Zvcm1hdDogQ29udmVydCB0aGUgbG9uZyB0byBhIHN0cmluZyBvYmplY3Qgd2l0aCBnaXZlbiBiYXNlLAogICAgYXBwZW5kaW5nIGEgYmFzZSBwcmVmaXggb2YgMFtib3hdIGlmIGJhc2UgaXMgMiwgOCBvciAxNi4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICpvYmosIGludCBiYXNlKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfRm9ybWF0V3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIGludCBiYXNlLAorICAgIGludCBhbHRlcm5hdGUpOwogCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLQkJCQkJICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0JCQkJCSAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBUaGVzZSBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGxvbmcgb2JqZWN0LCBidXQgdGhleSdyZSBoYW5keS4gVGhlCmRpZmYgLS1naXQgYS9JbmNsdWRlL21lbW9yeW9iamVjdC5oIGIvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAppbmRleCA2MmVjYmQ2Li5jMmUxMTk0IDEwMDY0NAotLS0gYS9JbmNsdWRlL21lbW9yeW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKQEAgLTYsNjkgKzYsNjUgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlNYW5hZ2VkQnVmZmVyX1R5cGU7CisjZW5kaWYKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1lbW9yeVZpZXdfVHlwZTsKIAogI2RlZmluZSBQeU1lbW9yeVZpZXdfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlNZW1vcnlWaWV3X1R5cGUpCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLS8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgUHlfYnVmZmVyIG9mIGEgbWVtb3J5dmlldyBvYmplY3QuICovCisvKiBHZXQgYSBwb2ludGVyIHRvIHRoZSBtZW1vcnl2aWV3J3MgcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIGJ1ZmZlci4gKi8KICNkZWZpbmUgUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIob3ApICgmKChQeU1lbW9yeVZpZXdPYmplY3QgKikob3ApKS0+dmlldykKLS8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIFB5T2JqZWN0IGZyb20gd2hpY2ggb3JpZ2luYXRlcyBhIG1lbW9yeXZpZXcgb2JqZWN0LiAqLworLyogR2V0IGEgcG9pbnRlciB0byB0aGUgZXhwb3J0aW5nIG9iamVjdCAodGhpcyBtYXkgYmUgTlVMTCEpLiAqLwogI2RlZmluZSBQeU1lbW9yeVZpZXdfR0VUX0JBU0Uob3ApICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKShvcCkpLT52aWV3Lm9iaikKICNlbmRpZgogCi0KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKmJhc2UsIAotCQkJCQkJICBpbnQgYnVmZmVydHlwZSwgCi0JCQkJCQkgIGNoYXIgZm9ydCk7Ci0KLSAgICAvKiBSZXR1cm4gYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSByZXByZXNlbnRpbmcgdGhlIGJ1ZmZlcgotICAgICAgIGZyb20gYW4gb2JqZWN0IGluIGEgbWVtb3J5IHZpZXcgb2JqZWN0LiAgSWYgYSBjb3B5IGlzIG1hZGUgdGhlbiB0aGUKLSAgICAgICBiYXNlIG9iamVjdCBmb3IgdGhlIG1lbW9yeSB2aWV3IHdpbGwgYmUgYSAqbmV3KiBieXRlcyBvYmplY3QuIAotICAgICAgIAotICAgICAgIE90aGVyd2lzZSwgdGhlIGJhc2Utb2JqZWN0IHdpbGwgYmUgdGhlIG9iamVjdCBpdHNlbGYgYW5kIG5vIAotICAgICAgIGRhdGEtY29weWluZyB3aWxsIGJlIGRvbmUuIAotCi0gICAgICAgVGhlIGJ1ZmZlcnR5cGUgYXJndW1lbnQgY2FuIGJlIFB5QlVGX1JFQUQsIFB5QlVGX1dSSVRFLAotICAgICAgIFB5QlVGX1NIQURPVyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcmV0dXJuZWQgYnVmZmVyCi0gICAgICAgc2hvdWxkIGJlIFJFQURPTkxZLCBXUklUQUJMRSwgb3Igc2V0IHRvIHVwZGF0ZSB0aGUKLSAgICAgICBvcmlnaW5hbCBidWZmZXIgaWYgYSBjb3B5IG11c3QgYmUgbWFkZS4gIElmIGJ1ZmZlcnR5cGUgaXMKLSAgICAgICBQeUJVRl9XUklURSBhbmQgdGhlIGJ1ZmZlciBpcyBub3QgY29udGlndW91cyBhbiBlcnJvciB3aWxsCi0gICAgICAgYmUgcmFpc2VkLiAgSW4gdGhpcyBjaXJjdW1zdGFuY2UsIHRoZSB1c2VyIGNhbiB1c2UKLSAgICAgICBQeUJVRl9TSEFET1cgdG8gZW5zdXJlIHRoYXQgYSBhIHdyaXRhYmxlIHRlbXBvcmFyeQotICAgICAgIGNvbnRpZ3VvdXMgYnVmZmVyIGlzIHJldHVybmVkLiAgVGhlIGNvbnRlbnRzIG9mIHRoaXMKLSAgICAgICBjb250aWd1b3VzIGJ1ZmZlciB3aWxsIGJlIGNvcGllZCBiYWNrIGludG8gdGhlIG9yaWdpbmFsCi0gICAgICAgb2JqZWN0IGFmdGVyIHRoZSBtZW1vcnl2aWV3IG9iamVjdCBpcyBkZWxldGVkIGFzIGxvbmcgYXMKLSAgICAgICB0aGUgb3JpZ2luYWwgb2JqZWN0IGlzIHdyaXRhYmxlIGFuZCBhbGxvd3Mgc2V0dGluZyBhbgotICAgICAgIGV4Y2x1c2l2ZSB3cml0ZSBsb2NrLiBJZiB0aGlzIGlzIG5vdCBhbGxvd2VkIGJ5IHRoZQotICAgICAgIG9yaWdpbmFsIG9iamVjdCwgdGhlbiBhIEJ1ZmZlckVycm9yIGlzIHJhaXNlZC4KLSAgICAgICAKLSAgICAgICBJZiB0aGUgb2JqZWN0IGlzIG11bHRpLWRpbWVuc2lvbmFsIGFuZCBpZiBmb3J0cmFuIGlzICdGJywKLSAgICAgICB0aGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSB1bmRlcmx5aW5nIGFycmF5IHdpbGwgdmFyeSB0aGUKLSAgICAgICBmYXN0ZXN0IGluIHRoZSBidWZmZXIuICBJZiBmb3J0cmFuIGlzICdDJywgdGhlbiB0aGUgbGFzdAotICAgICAgIGRpbWVuc2lvbiB3aWxsIHZhcnkgdGhlIGZhc3Rlc3QgKEMtc3R5bGUgY29udGlndW91cykuICBJZgotICAgICAgIGZvcnRyYW4gaXMgJ0EnLCB0aGVuIGl0IGRvZXMgbm90IG1hdHRlciBhbmQgeW91IHdpbGwgZ2V0Ci0gICAgICAgd2hhdGV2ZXIgdGhlIG9iamVjdCBkZWNpZGVzIGlzIG1vcmUgZWZmaWNpZW50LiAgCi0KLSAgICAgICBBIG5ldyByZWZlcmVuY2UgaXMgcmV0dXJuZWQgdGhhdCBtdXN0IGJlIERFQ1JFRidkIHdoZW4gZmluaXNoZWQuCi0gICAgKi8KLQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdChQeU9iamVjdCAqYmFzZSk7Ci0KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKFB5X2J1ZmZlciAqaW5mbyk7Ci0gICAgLyogY3JlYXRlIG5ldyBpZiBidWZwdHIgaXMgTlVMTCAKLSAgICAgICAgd2lsbCBiZSBhIG5ldyBieXRlc29iamVjdCBpbiBiYXNlICovCiAjZW5kaWYKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIG9yZGVyKTsKIAogCi0vKiBUaGUgc3RydWN0IGlzIGRlY2xhcmVkIGhlcmUgc28gdGhhdCBtYWNyb3MgY2FuIHdvcmssIGJ1dCBpdCBzaG91bGRuJ3QKLSAgIGJlIGNvbnNpZGVyZWQgcHVibGljLiBEb24ndCBhY2Nlc3MgdGhvc2UgZmllbGRzIGRpcmVjdGx5LCB1c2UgdGhlIG1hY3JvcworLyogVGhlIHN0cnVjdHMgYXJlIGRlY2xhcmVkIGhlcmUgc28gdGhhdCBtYWNyb3MgY2FuIHdvcmssIGJ1dCB0aGV5IHNob3VsZG4ndAorICAgYmUgY29uc2lkZXJlZCBwdWJsaWMuIERvbid0IGFjY2VzcyB0aGVpciBmaWVsZHMgZGlyZWN0bHksIHVzZSB0aGUgbWFjcm9zCiAgICBhbmQgZnVuY3Rpb25zIGluc3RlYWQhICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIF9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIGV4cG9ydGVyIGJsb2NrZWQgKi8KKyNkZWZpbmUgX1B5X01BTkFHRURfQlVGRkVSX0ZSRUVfRk9STUFUIDB4MDAyICAvKiBmcmVlIGZvcm1hdCAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9idWZmZXIgdmlldzsKKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCisgICAgUHlfc3NpemVfdCBleHBvcnRzOyAvKiBudW1iZXIgb2YgZGlyZWN0IG1lbW9yeXZpZXcgZXhwb3J0cyAqLworICAgIFB5X2J1ZmZlciBtYXN0ZXI7IC8qIHNuYXBzaG90IGJ1ZmZlciBvYnRhaW5lZCBmcm9tIHRoZSBvcmlnaW5hbCBleHBvcnRlciAqLworfSBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0OworCisKKy8qIHN0YXRpYyBzdG9yYWdlIHVzZWQgZm9yIGNhc3RpbmcgYmV0d2VlbiBmb3JtYXRzICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQgMyAvKiBtdXN0IGJlID49IDMgKi8KKworLyogbWVtb3J5dmlldyBzdGF0ZSBmbGFncyAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIG1hc3RlciBidWZmZXIgYmxvY2tlZCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19DICAgICAgICAgICAweDAwMiAgLyogQy1jb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19GT1JUUkFOICAgICAweDAwNCAgLyogRm9ydHJhbiBjb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19TQ0FMQVIgICAgICAweDAwOCAgLyogc2NhbGFyOiBuZGltID0gMCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19QSUwgICAgICAgICAweDAxMCAgLyogUElMLXN0eWxlIGxheW91dCAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfVkFSX0hFQUQKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOyAvKiBtYW5hZ2VkIGJ1ZmZlciAqLworICAgIFB5X2hhc2hfdCBoYXNoOyAgICAgICAgICAgICAgIC8qIGhhc2ggdmFsdWUgZm9yIHJlYWQtb25seSB2aWV3cyAqLworICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCisgICAgUHlfc3NpemVfdCBleHBvcnRzOyAgICAgICAgICAgLyogbnVtYmVyIG9mIGJ1ZmZlciByZS1leHBvcnRzICovCisgICAgUHlfYnVmZmVyIHZpZXc7ICAgICAgICAgICAgICAgLyogcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIHZpZXcgKi8KKyAgICBjaGFyIGZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUXTsgLyogdXNlZCBmb3IgY2FzdGluZyAqLworICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKKyAgICBQeV9zc2l6ZV90IG9iX2FycmF5WzFdOyAgICAgICAvKiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyAqLwogfSBQeU1lbW9yeVZpZXdPYmplY3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggN2U2N2MwYi4uM2NjMmVhOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC0xNyw3ICsxNyw3IEBACiAKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb24pKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbldpdGhLZXl3b3JkcykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKLQkJCQkJICAgICBQeU9iamVjdCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeU5vQXJnc0Z1bmN0aW9uKShQeU9iamVjdCAqKTsKIAogUHlBUElfRlVOQyhQeUNGdW5jdGlvbikgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24oUHlPYmplY3QgKik7CkBAIC0zMCwyNCArMzAsMjUgQEAKICNkZWZpbmUgUHlDRnVuY3Rpb25fR0VUX0ZVTkNUSU9OKGZ1bmMpIFwKICAgICAgICAgKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX21ldGgpCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpIFwKLQkoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fc2VsZikKKyAgICAgICAgKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX2ZsYWdzICYgTUVUSF9TVEFUSUMgPyBcCisgICAgICAgICBOVUxMIDogKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fc2VsZikKICNkZWZpbmUgUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpIFwKLQkoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfZmxhZ3MpCisgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9mbGFncykKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiBzdHJ1Y3QgUHlNZXRob2REZWYgewotICAgIGNvbnN0IGNoYXIJKm1sX25hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbi9tZXRob2QgKi8KLSAgICBQeUNGdW5jdGlvbiAgbWxfbWV0aDsJLyogVGhlIEMgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGl0ICovCi0gICAgaW50CQkgbWxfZmxhZ3M7CS8qIENvbWJpbmF0aW9uIG9mIE1FVEhfeHh4IGZsYWdzLCB3aGljaCBtb3N0bHkKLQkJCQkgICBkZXNjcmliZSB0aGUgYXJncyBleHBlY3RlZCBieSB0aGUgQyBmdW5jICovCi0gICAgY29uc3QgY2hhcgkqbWxfZG9jOwkvKiBUaGUgX19kb2NfXyBhdHRyaWJ1dGUsIG9yIE5VTEwgKi8KKyAgICBjb25zdCBjaGFyICAqbWxfbmFtZTsgICAvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCisgICAgUHlDRnVuY3Rpb24gbWxfbWV0aDsgICAgLyogVGhlIEMgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGl0ICovCisgICAgaW50ICAgICAgICAgbWxfZmxhZ3M7ICAgLyogQ29tYmluYXRpb24gb2YgTUVUSF94eHggZmxhZ3MsIHdoaWNoIG1vc3RseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlIHRoZSBhcmdzIGV4cGVjdGVkIGJ5IHRoZSBDIGZ1bmMgKi8KKyAgICBjb25zdCBjaGFyICAqbWxfZG9jOyAgICAvKiBUaGUgX19kb2NfXyBhdHRyaWJ1dGUsIG9yIE5VTEwgKi8KIH07CiB0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKIAogI2RlZmluZSBQeUNGdW5jdGlvbl9OZXcoTUwsIFNFTEYpIFB5Q0Z1bmN0aW9uX05ld0V4KChNTCksIChTRUxGKSwgTlVMTCkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fTmV3RXgoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKiwgCi0JCQkJCSBQeU9iamVjdCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7CiAKIC8qIEZsYWcgcGFzc2VkIHRvIG5ld21ldGhvZG9iamVjdCAqLwogLyogI2RlZmluZSBNRVRIX09MREFSR1MgIDB4MDAwMCAgIC0tIHVuc3VwcG9ydGVkIG5vdyAqLwpAQCAtODEsNiArODIsMTEgQEAKIAogUHlBUElfRlVOQyhpbnQpIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Qodm9pZCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5Q0Z1bmN0aW9uX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5TWV0aG9kX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCBiZjY0NzhmLi5lY2YxZGNjIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMjMsNiArMjMsOCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiAjZW5kaWYKIAorLyogRHVlIHRvIGEgZ2xpdGNoIGluIDMuMiwgdGhlIF9TaXplVCB2ZXJzaW9ucyB3ZXJlbid0IGV4cG9ydGVkIGZyb20gdGhlIERMTC4gKi8KKyNpZiAhZGVmaW5lZChQWV9TU0laRV9UX0NMRUFOKSB8fCAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2UoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlVHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pIFB5X0ZPUk1BVF9QQVJTRVRVUExFKFB5QXJnX1BhcnNlVHVwbGUsIDIsIDMpOwogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLApAQCAtMzEsMTMgKzMzLDE0IEBACiBQeUFQSV9GVU5DKGludCkgUHlBcmdfVW5wYWNrVHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90LCAuLi4pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9CdWlsZFZhbHVlKGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0J1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCAuLi4pOworI2VuZGlmCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5QXJnX05vS2V5d29yZHMoY29uc3QgY2hhciAqZnVuY25hbWUsIFB5T2JqZWN0ICprdyk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1ZhUGFyc2UoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QpOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5X1ZhQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIHZhX2xpc3QpOwogCiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAppbmRleCA3YjJiZjFjLi44MDEzZGQ5IDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKQEAgLTEyLDEwICsxMiwxNCBAQAogI2RlZmluZSBQeU1vZHVsZV9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlNb2R1bGVfVHlwZSkKICNkZWZpbmUgUHlNb2R1bGVfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeU1vZHVsZV9UeXBlKQogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX05ld09iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX05ldygKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXREaWN0KFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQxMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKQEAgLTAsMCArMSwxNyBAQAorCisvKiBzaW1wbGUgbmFtZXNwYWNlIG9iamVjdCBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBOQU1FU1BBQ0VPQkpFQ1RfSAorI2RlZmluZSBOQU1FU1BBQ0VPQkpFQ1RfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TmFtZXNwYWNlX1R5cGU7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TmFtZXNwYWNlX05ldyhQeU9iamVjdCAqa3dkcyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIU5BTUVTUEFDRU9CSkVDVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL25vZGUuaCBiL0luY2x1ZGUvbm9kZS5oCmluZGV4IDlmNjc2MGMuLjk5YzEzZjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbm9kZS5oCisrKyBiL0luY2x1ZGUvbm9kZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIFJDSElMRChuLCBpKQkoQ0hJTEQobiwgTkNIKG4pICsgaSkpCiAjZGVmaW5lIFRZUEUobikJCSgobiktPm5fdHlwZSkKICNkZWZpbmUgU1RSKG4pCQkoKG4pLT5uX3N0cikKKyNkZWZpbmUgTElORU5PKG4pICAgICAgICgobiktPm5fbGluZW5vKQogCiAvKiBBc3NlcnQgdGhhdCB0aGUgdHlwZSBvZiBhIG5vZGUgaXMgd2hhdCB3ZSBleHBlY3QgKi8KICNkZWZpbmUgUkVRKG4sIHR5cGUpIGFzc2VydChUWVBFKG4pID09ICh0eXBlKSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqZWN0LmggYi9JbmNsdWRlL29iamVjdC5oCmluZGV4IDYxMjBhYjguLjM4N2NhZGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9vYmplY3QuaApAQCAtMTE3LDYgKzExNywzNSBAQAogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgICAgICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZGVmaW5lIFB5X1NJWkUob2IpICAgICAgICAgICAgICgoKFB5VmFyT2JqZWN0Kikob2IpKS0+b2Jfc2l6ZSkKIAorLyoqKioqKioqKioqKioqKioqKioqKiBTdHJpbmcgTGl0ZXJhbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFRoaXMgc3RydWN0dXJlIGhlbHBzIG1hbmFnaW5nIHN0YXRpYyBzdHJpbmdzLiBUaGUgYmFzaWMgdXNhZ2UgZ29lcyBsaWtlIHRoaXM6CisgICBJbnN0ZWFkIG9mIGRvaW5nCisKKyAgICAgICByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiZm9vIiwgImFyZ3MiLCAuLi4pOworCisgICBkbworCisgICAgICAgX1B5X0lERU5USUZJRVIoZm9vKTsKKyAgICAgICAuLi4KKyAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvLCAmUHlJZF9mb28sICJhcmdzIiwgLi4uKTsKKworICAgUHlJZF9mb28gaXMgYSBzdGF0aWMgdmFyaWFibGUsIGVpdGhlciBvbiBibG9jayBsZXZlbCBvciBmaWxlIGxldmVsLiBPbiBmaXJzdAorICAgdXNhZ2UsIHRoZSBzdHJpbmcgImZvbyIgaXMgaW50ZXJuZWQsIGFuZCB0aGUgc3RydWN0dXJlcyBhcmUgbGlua2VkLiBPbiBpbnRlcnByZXRlcgorICAgc2h1dGRvd24sIGFsbCBzdHJpbmdzIGFyZSByZWxlYXNlZCAodGhyb3VnaCBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncykuCisKKyAgIEFsdGVybmF0aXZlbHksIF9QeV9zdGF0aWNfc3RyaW5nIGFsbG93cyB0byBjaG9vc2UgdGhlIHZhcmlhYmxlIG5hbWUuCisgICBfUHlVbmljb2RlX0Zyb21JZCByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5lZCBzdHJpbmcuCisgICBfUHlPYmplY3Rfe0dldCxTZXQsSGFzfUF0dHJJZCBhcmUgX19nZXRhdHRyX18gdmVyc2lvbnMgdXNpbmcgX1B5X0lkZW50aWZpZXIqLgorKi8KK3R5cGVkZWYgc3RydWN0IF9QeV9JZGVudGlmaWVyIHsKKyAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5leHQ7CisgICAgY29uc3QgY2hhciogc3RyaW5nOworICAgIFB5T2JqZWN0ICpvYmplY3Q7Cit9IF9QeV9JZGVudGlmaWVyOworCisjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nKHZhcm5hbWUsIHZhbHVlKSAgc3RhdGljIF9QeV9JZGVudGlmaWVyIHZhcm5hbWUgPSB7IDAsIHZhbHVlLCAwIH0KKyNkZWZpbmUgX1B5X0lERU5USUZJRVIodmFybmFtZSkgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF8jI3Zhcm5hbWUsICN2YXJuYW1lKQorCiAvKgogVHlwZSBvYmplY3RzIGNvbnRhaW4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBuYW1lICh0byBoZWxwIHNvbWV3aGF0CiBpbiBkZWJ1Z2dpbmcpLCB0aGUgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIChzZWUgUHlPYmplY3RfTmV3KCkgYW5kCkBAIC0xNTcsMTUgKzE4NiwxNiBAQAogICAgIFB5X3NzaXplX3QgKnNoYXBlOwogICAgIFB5X3NzaXplX3QgKnN0cmlkZXM7CiAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0czsKLSAgICBQeV9zc2l6ZV90IHNtYWxsdGFibGVbMl07ICAvKiBzdGF0aWMgc3RvcmUgZm9yIHNoYXBlIGFuZCBzdHJpZGVzIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uby1kaW1lbnNpb25hbCBidWZmZXJzLiAqLwogICAgIHZvaWQgKmludGVybmFsOwogfSBQeV9idWZmZXI7CiAKIHR5cGVkZWYgaW50ICgqZ2V0YnVmZmVycHJvYykoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGludCk7CiB0eXBlZGVmIHZvaWQgKCpyZWxlYXNlYnVmZmVycHJvYykoUHlPYmplY3QgKiwgUHlfYnVmZmVyICopOwogCi0gICAgLyogRmxhZ3MgZm9yIGdldHRpbmcgYnVmZmVycyAqLworLyogTWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyAqLworI2RlZmluZSBQeUJVRl9NQVhfTkRJTSA2NAorCisvKiBGbGFncyBmb3IgZ2V0dGluZyBidWZmZXJzICovCiAjZGVmaW5lIFB5QlVGX1NJTVBMRSAwCiAjZGVmaW5lIFB5QlVGX1dSSVRBQkxFIDB4MDAwMQogLyogIHdlIHVzZWQgdG8gaW5jbHVkZSBhbiBFLCBiYWNrd2FyZHMgY29tcGF0aWJsZSBhbGlhcyAgKi8KQEAgLTQwMyw2ICs0MzMsOSBAQAogfSBQeVR5cGVfU3BlYzsKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VHlwZV9Gcm9tU3BlYyhQeVR5cGVfU3BlYyopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMqLCBQeU9iamVjdCopOworI2VuZGlmCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoZSAqcmVhbCogbGF5b3V0IG9mIGEgdHlwZSBvYmplY3Qgd2hlbiBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgKi8KQEAgLTQxOCw3ICs0NTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGdpdmVuIG9wZXJhdG9yIChlLmcuIF9fZ2V0aXRlbV9fKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGFkZF9vcGVyYXRvcnMoKSBpbiB0eXBlb2JqZWN0LmMgLiAqLwogICAgIFB5QnVmZmVyUHJvY3MgYXNfYnVmZmVyOwotICAgIFB5T2JqZWN0ICpodF9uYW1lLCAqaHRfc2xvdHM7CisgICAgUHlPYmplY3QgKmh0X25hbWUsICpodF9zbG90cywgKmh0X3F1YWxuYW1lOworICAgIHN0cnVjdCBfZGljdGtleXNvYmplY3QgKmh0X2NhY2hlZF9rZXlzOwogICAgIC8qIGhlcmUgYXJlIG9wdGlvbmFsIHVzZXIgc2xvdHMsIGZvbGxvd2VkIGJ5IHRoZSBtZW1iZXJzLiAqLwogfSBQeUhlYXBUeXBlT2JqZWN0OwogCkBAIC00NDgsMTMgKzQ4MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VHlwZV9Mb29rdXAoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqLCBjaGFyICosIFB5T2JqZWN0ICoqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiBQeUFQSV9GVU5DKFB5VHlwZU9iamVjdCAqKSBfUHlUeXBlX0NhbGN1bGF0ZU1ldGFjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkModW5zaWduZWQgaW50KSBQeVR5cGVfQ2xlYXJDYWNoZSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUeXBlX01vZGlmaWVkKFB5VHlwZU9iamVjdCAqKTsKIAogLyogR2VuZXJpYyBvcGVyYXRpb25zIG9uIG9iamVjdHMgKi8KK3N0cnVjdCBfUHlfSWRlbnRpZmllcjsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9QcmludChQeU9iamVjdCAqLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9CcmVha1BvaW50KHZvaWQpOwpAQCAtNDcyLDYgKzUwNywxMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1NldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSGFzQXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSXNBYnN0cmFjdChQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlPYmplY3RfR2V0RGljdFB0cihQeU9iamVjdCAqKTsKICNlbmRpZgpAQCAtNDgyLDYgKzUyMSw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgdm9pZCAqKTsKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBQeU9iamVjdF9IYXNoKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9Jc1RydWUoUHlPYmplY3QgKik7CkBAIC00OTgsNiArNTM4LDExIEBACiBfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGljdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKy8qIEhlbHBlciB0byBsb29rIHVwIGEgYnVpbHRpbiBvYmplY3QgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikKK19QeU9iamVjdF9HZXRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpOworI2VuZGlmCiAKIC8qIFB5T2JqZWN0X0RpcihvYmopIGFjdHMgbGlrZSBQeXRob24gYnVpbHRpbnMuZGlyKG9iaiksIHJldHVybmluZyBhCiAgICBsaXN0IG9mIHN0cmluZ3MuICBQeU9iamVjdF9EaXIoTlVMTCkgaXMgbGlrZSBidWlsdGlucy5kaXIoKSwKQEAgLTUxNSw2ICs1NjAsNyBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9oYXNoX3QpIF9QeV9IYXNoRG91YmxlKGRvdWJsZSk7CiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgX1B5X0hhc2hQb2ludGVyKHZvaWQqKTsKK1B5QVBJX0ZVTkMoUHlfaGFzaF90KSBfUHlfSGFzaEJ5dGVzKHVuc2lnbmVkIGNoYXIqLCBQeV9zc2l6ZV90KTsKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC04MDMsNiArODQ5LDEwIEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0KSBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q7IC8qIERvbid0IHVzZSB0aGlzIGRpcmVjdGx5ICovCiAjZGVmaW5lIFB5X05vdEltcGxlbWVudGVkICgmX1B5X05vdEltcGxlbWVudGVkU3RydWN0KQogCisvKiBNYWNybyBmb3IgcmV0dXJuaW5nIFB5X05vdEltcGxlbWVudGVkIGZyb20gYSBmdW5jdGlvbiAqLworI2RlZmluZSBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQgXAorICAgIHJldHVybiBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpLCBQeV9Ob3RJbXBsZW1lbnRlZAorCiAvKiBSaWNoIGNvbXBhcmlzb24gb3Bjb2RlcyAqLwogI2RlZmluZSBQeV9MVCAwCiAjZGVmaW5lIFB5X0xFIDEKQEAgLTkxMiw3ICs5NjIsNyBAQAogKi8KIAogLyogVGhpcyBpcyB0aGUgb2xkIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVmb3JlIDMuMi40LgotICAgS2VwdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXh0ZW5zaW9ucy4gKi8KKyAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CkBAIC05MzksNiArOTg5LDE0IEBACiAgICAgICAgICAgICBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoKFB5T2JqZWN0KilvcCk7IFwKICAgICB9IHdoaWxlICgwKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKQorX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhGSUxFICpvdXQsIGNvbnN0IGNoYXIgKmJsb2NrX25hbWUsIGludCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZW9mX2Jsb2NrKTsKK1B5QVBJX0ZVTkModm9pZCkKK19QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qIGlmbmRlZiBQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmppbXBsLmggYi9JbmNsdWRlL29iamltcGwuaAppbmRleCA4ZmMzZmMxLi4zZDVmNTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamltcGwuaAorKysgYi9JbmNsdWRlL29iamltcGwuaApAQCAtMTAxLDEzICsxMDEsMTUgQEAKIAogLyogTWFjcm9zICovCiAjaWZkZWYgV0lUSF9QWU1BTExPQworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qICNpZm5kZWYgUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdNYWxsb2Moc2l6ZV90IG5ieXRlcyk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnUmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZSh2b2lkICpwKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0NoZWNrQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKGNoYXIgYXBpLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdSZWFsbG9jQXBpKGNoYXIgYXBpLCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZUFwaShjaGFyIGFwaSwgdm9pZCAqcCk7CkBAIC0xNzksMTIgKzE4MSw5IEBACiAjZW5kaWYKIAogI2RlZmluZSBfUHlPYmplY3RfVkFSX1NJWkUodHlwZW9iaiwgbml0ZW1zKSAgICAgXAotICAgIChzaXplX3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICggKCAodHlwZW9iaiktPnRwX2Jhc2ljc2l6ZSArICAgICAgICAgICAgICAgXAotICAgICAgICAobml0ZW1zKSoodHlwZW9iaiktPnRwX2l0ZW1zaXplICsgICAgICAgXAotICAgICAgICAoU0laRU9GX1ZPSURfUCAtIDEpICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKSAmIH4oU0laRU9GX1ZPSURfUCAtIDEpICAgICAgICAgICAgICAgICAgXAotICAgICkKKyAgICBfUHlfU0laRV9ST1VORF9VUCgodHlwZW9iaiktPnRwX2Jhc2ljc2l6ZSArIFwKKyAgICAgICAgKG5pdGVtcykqKHR5cGVvYmopLT50cF9pdGVtc2l6ZSwgICAgICAgIFwKKyAgICAgICAgU0laRU9GX1ZPSURfUCkKIAogI2RlZmluZSBQeU9iamVjdF9ORVcodHlwZSwgdHlwZW9iaikgXAogKCAodHlwZSAqKSBQeU9iamVjdF9Jbml0KCBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCA2YjEwOTQ0Li5hOTAxODRkIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTcsMTE3ICs3LDExNyBAQAogCiAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCiAKLSNkZWZpbmUgU1RPUF9DT0RFCTAKLSNkZWZpbmUgUE9QX1RPUAkJMQotI2RlZmluZSBST1RfVFdPCQkyCi0jZGVmaW5lIFJPVF9USFJFRQkzCi0jZGVmaW5lIERVUF9UT1AJCTQKKyNkZWZpbmUgUE9QX1RPUCAgICAgICAgIDEKKyNkZWZpbmUgUk9UX1RXTyAgICAgICAgIDIKKyNkZWZpbmUgUk9UX1RIUkVFICAgICAgIDMKKyNkZWZpbmUgRFVQX1RPUCAgICAgICAgIDQKICNkZWZpbmUgRFVQX1RPUF9UV08gICAgIDUKLSNkZWZpbmUgTk9QCQk5CisjZGVmaW5lIE5PUCAgICAgICAgICAgICA5CiAKLSNkZWZpbmUgVU5BUllfUE9TSVRJVkUJMTAKLSNkZWZpbmUgVU5BUllfTkVHQVRJVkUJMTEKLSNkZWZpbmUgVU5BUllfTk9UCTEyCisjZGVmaW5lIFVOQVJZX1BPU0lUSVZFICAxMAorI2RlZmluZSBVTkFSWV9ORUdBVElWRSAgMTEKKyNkZWZpbmUgVU5BUllfTk9UICAgICAgIDEyCiAKLSNkZWZpbmUgVU5BUllfSU5WRVJUCTE1CisjZGVmaW5lIFVOQVJZX0lOVkVSVCAgICAxNQogCi0jZGVmaW5lIEJJTkFSWV9QT1dFUgkxOQorI2RlZmluZSBCSU5BUllfUE9XRVIgICAgMTkKIAotI2RlZmluZSBCSU5BUllfTVVMVElQTFkJMjAKKyNkZWZpbmUgQklOQVJZX01VTFRJUExZIDIwCiAKLSNkZWZpbmUgQklOQVJZX01PRFVMTwkyMgotI2RlZmluZSBCSU5BUllfQURECTIzCi0jZGVmaW5lIEJJTkFSWV9TVUJUUkFDVAkyNAotI2RlZmluZSBCSU5BUllfU1VCU0NSCTI1CisjZGVmaW5lIEJJTkFSWV9NT0RVTE8gICAyMgorI2RlZmluZSBCSU5BUllfQUREICAgICAgMjMKKyNkZWZpbmUgQklOQVJZX1NVQlRSQUNUIDI0CisjZGVmaW5lIEJJTkFSWV9TVUJTQ1IgICAyNQogI2RlZmluZSBCSU5BUllfRkxPT1JfRElWSURFIDI2CiAjZGVmaW5lIEJJTkFSWV9UUlVFX0RJVklERSAyNwogI2RlZmluZSBJTlBMQUNFX0ZMT09SX0RJVklERSAyOAogI2RlZmluZSBJTlBMQUNFX1RSVUVfRElWSURFIDI5CiAKLSNkZWZpbmUgU1RPUkVfTUFQCTU0Ci0jZGVmaW5lIElOUExBQ0VfQURECTU1Ci0jZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QJNTYKLSNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWQk1NworI2RlZmluZSBTVE9SRV9NQVAgICAgICAgNTQKKyNkZWZpbmUgSU5QTEFDRV9BREQgICAgIDU1CisjZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QgICAgICAgIDU2CisjZGVmaW5lIElOUExBQ0VfTVVMVElQTFkgICAgICAgIDU3CiAKLSNkZWZpbmUgSU5QTEFDRV9NT0RVTE8JNTkKLSNkZWZpbmUgU1RPUkVfU1VCU0NSCTYwCi0jZGVmaW5lIERFTEVURV9TVUJTQ1IJNjEKKyNkZWZpbmUgSU5QTEFDRV9NT0RVTE8gIDU5CisjZGVmaW5lIFNUT1JFX1NVQlNDUiAgICA2MAorI2RlZmluZSBERUxFVEVfU1VCU0NSICAgNjEKIAotI2RlZmluZSBCSU5BUllfTFNISUZUCTYyCi0jZGVmaW5lIEJJTkFSWV9SU0hJRlQJNjMKLSNkZWZpbmUgQklOQVJZX0FORAk2NAotI2RlZmluZSBCSU5BUllfWE9SCTY1Ci0jZGVmaW5lIEJJTkFSWV9PUgk2NgotI2RlZmluZSBJTlBMQUNFX1BPV0VSCTY3Ci0jZGVmaW5lIEdFVF9JVEVSCTY4Ci0jZGVmaW5lIFNUT1JFX0xPQ0FMUwk2OQotI2RlZmluZSBQUklOVF9FWFBSCTcwCisjZGVmaW5lIEJJTkFSWV9MU0hJRlQgICA2MgorI2RlZmluZSBCSU5BUllfUlNISUZUICAgNjMKKyNkZWZpbmUgQklOQVJZX0FORCAgICAgIDY0CisjZGVmaW5lIEJJTkFSWV9YT1IgICAgICA2NQorI2RlZmluZSBCSU5BUllfT1IgICAgICAgNjYKKyNkZWZpbmUgSU5QTEFDRV9QT1dFUiAgIDY3CisjZGVmaW5lIEdFVF9JVEVSICAgICAgICA2OAorI2RlZmluZSBTVE9SRV9MT0NBTFMgICAgNjkKKyNkZWZpbmUgUFJJTlRfRVhQUiAgICAgIDcwCiAjZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgNzEKKyNkZWZpbmUgWUlFTERfRlJPTSAgICAgIDcyCiAKLSNkZWZpbmUgSU5QTEFDRV9MU0hJRlQJNzUKLSNkZWZpbmUgSU5QTEFDRV9SU0hJRlQJNzYKLSNkZWZpbmUgSU5QTEFDRV9BTkQJNzcKLSNkZWZpbmUgSU5QTEFDRV9YT1IJNzgKLSNkZWZpbmUgSU5QTEFDRV9PUgk3OQotI2RlZmluZSBCUkVBS19MT09QCTgwCisjZGVmaW5lIElOUExBQ0VfTFNISUZUICA3NQorI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgNzYKKyNkZWZpbmUgSU5QTEFDRV9BTkQgICAgIDc3CisjZGVmaW5lIElOUExBQ0VfWE9SICAgICA3OAorI2RlZmluZSBJTlBMQUNFX09SICAgICAgNzkKKyNkZWZpbmUgQlJFQUtfTE9PUCAgICAgIDgwCiAjZGVmaW5lIFdJVEhfQ0xFQU5VUCAgICA4MQogCi0jZGVmaW5lIFJFVFVSTl9WQUxVRQk4MwotI2RlZmluZSBJTVBPUlRfU1RBUgk4NAorI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgODMKKyNkZWZpbmUgSU1QT1JUX1NUQVIgICAgIDg0CiAKLSNkZWZpbmUgWUlFTERfVkFMVUUJODYKLSNkZWZpbmUgUE9QX0JMT0NLCTg3Ci0jZGVmaW5lIEVORF9GSU5BTExZCTg4Ci0jZGVmaW5lIFBPUF9FWENFUFQJODkKKyNkZWZpbmUgWUlFTERfVkFMVUUgICAgIDg2CisjZGVmaW5lIFBPUF9CTE9DSyAgICAgICA4NworI2RlZmluZSBFTkRfRklOQUxMWSAgICAgODgKKyNkZWZpbmUgUE9QX0VYQ0VQVCAgICAgIDg5CiAKLSNkZWZpbmUgSEFWRV9BUkdVTUVOVAk5MAkvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLworI2RlZmluZSBIQVZFX0FSR1VNRU5UICAgOTAgICAgICAvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLwogCi0jZGVmaW5lIFNUT1JFX05BTUUJOTAJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9OQU1FCTkxCS8qICIiICovCi0jZGVmaW5lIFVOUEFDS19TRVFVRU5DRQk5MgkvKiBOdW1iZXIgb2Ygc2VxdWVuY2UgaXRlbXMgKi8KLSNkZWZpbmUgRk9SX0lURVIJOTMKKyNkZWZpbmUgU1RPUkVfTkFNRSAgICAgIDkwICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIERFTEVURV9OQU1FICAgICA5MSAgICAgIC8qICIiICovCisjZGVmaW5lIFVOUEFDS19TRVFVRU5DRSA5MiAgICAgIC8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLworI2RlZmluZSBGT1JfSVRFUiAgICAgICAgOTMKICNkZWZpbmUgVU5QQUNLX0VYICAgICAgIDk0ICAgICAgLyogTnVtIGl0ZW1zIGJlZm9yZSB2YXJpYWJsZSBwYXJ0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE51bSBpdGVtcyBhZnRlciB2YXJpYWJsZSBwYXJ0IDw8IDgpICovCiAKLSNkZWZpbmUgU1RPUkVfQVRUUgk5NQkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX0FUVFIJOTYJLyogIiIgKi8KLSNkZWZpbmUgU1RPUkVfR0xPQkFMCTk3CS8qICIiICovCi0jZGVmaW5lIERFTEVURV9HTE9CQUwJOTgJLyogIiIgKi8KKyNkZWZpbmUgU1RPUkVfQVRUUiAgICAgIDk1ICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIERFTEVURV9BVFRSICAgICA5NiAgICAgIC8qICIiICovCisjZGVmaW5lIFNUT1JFX0dMT0JBTCAgICA5NyAgICAgIC8qICIiICovCisjZGVmaW5lIERFTEVURV9HTE9CQUwgICA5OCAgICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9DT05TVAkxMDAJLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLwotI2RlZmluZSBMT0FEX05BTUUJMTAxCS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBCVUlMRF9UVVBMRQkxMDIJLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX0xJU1QJMTAzCS8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX1NFVAkxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTUFQCTEwNQkvKiBBbHdheXMgemVybyBmb3Igbm93ICovCi0jZGVmaW5lIExPQURfQVRUUgkxMDYJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIENPTVBBUkVfT1AJMTA3CS8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KLSNkZWZpbmUgSU1QT1JUX05BTUUJMTA4CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBJTVBPUlRfRlJPTQkxMDkJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIExPQURfQ09OU1QgICAgICAxMDAgICAgIC8qIEluZGV4IGluIGNvbnN0IGxpc3QgKi8KKyNkZWZpbmUgTE9BRF9OQU1FICAgICAgIDEwMSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIEJVSUxEX1RVUExFICAgICAxMDIgICAgIC8qIE51bWJlciBvZiB0dXBsZSBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9MSVNUICAgICAgMTAzICAgICAvKiBOdW1iZXIgb2YgbGlzdCBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9TRVQgICAgICAgMTA0ICAgICAvKiBOdW1iZXIgb2Ygc2V0IGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX01BUCAgICAgICAxMDUgICAgIC8qIEFsd2F5cyB6ZXJvIGZvciBub3cgKi8KKyNkZWZpbmUgTE9BRF9BVFRSICAgICAgIDEwNiAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIENPTVBBUkVfT1AgICAgICAxMDcgICAgIC8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KKyNkZWZpbmUgSU1QT1JUX05BTUUgICAgIDEwOCAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIElNUE9SVF9GUk9NICAgICAxMDkgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwogCi0jZGVmaW5lIEpVTVBfRk9SV0FSRAkxMTAJLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgKi8KLSNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgMTExCS8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCi0jZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyCS8qICIiICovCi0jZGVmaW5lIEpVTVBfQUJTT0xVVEUJMTEzCS8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNAkvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9UUlVFIDExNQkvKiAiIiAqLworI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgMTEwICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCAqLworI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAxMTEgICAgICAgIC8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCisjZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyIC8qICIiICovCisjZGVmaW5lIEpVTVBfQUJTT0xVVEUgICAxMTMgICAgIC8qICIiICovCisjZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNCAgIC8qICIiICovCisjZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgMTE1ICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9HTE9CQUwJMTE2CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgMTE2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KIAotI2RlZmluZSBDT05USU5VRV9MT09QCTExOQkvKiBTdGFydCBvZiBsb29wIChhYnNvbHV0ZSkgKi8KLSNkZWZpbmUgU0VUVVBfTE9PUAkxMjAJLyogVGFyZ2V0IGFkZHJlc3MgKHJlbGF0aXZlKSAqLwotI2RlZmluZSBTRVRVUF9FWENFUFQJMTIxCS8qICIiICovCi0jZGVmaW5lIFNFVFVQX0ZJTkFMTFkJMTIyCS8qICIiICovCisjZGVmaW5lIENPTlRJTlVFX0xPT1AgICAxMTkgICAgIC8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLworI2RlZmluZSBTRVRVUF9MT09QICAgICAgMTIwICAgICAvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCisjZGVmaW5lIFNFVFVQX0VYQ0VQVCAgICAxMjEgICAgIC8qICIiICovCisjZGVmaW5lIFNFVFVQX0ZJTkFMTFkgICAxMjIgICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9GQVNUCTEyNAkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgU1RPUkVfRkFTVAkxMjUJLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIERFTEVURV9GQVNUCTEyNgkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KKyNkZWZpbmUgTE9BRF9GQVNUICAgICAgIDEyNCAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCisjZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAxMjUgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLworI2RlZmluZSBERUxFVEVfRkFTVCAgICAgMTI2ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KIAotI2RlZmluZSBSQUlTRV9WQVJBUkdTCTEzMAkvKiBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyIG9yIDMpICovCisjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAxMzAgICAgIC8qIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIgb3IgMykgKi8KIC8qIENBTExfRlVOQ1RJT05fWFhYIG9wY29kZXMgZGVmaW5lZCBiZWxvdyBkZXBlbmQgb24gdGhpcyBkZWZpbml0aW9uICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT04JMTMxCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIE1BS0VfRlVOQ1RJT04JMTMyCS8qICNkZWZhdWx0cyArICNrd2RlZmF1bHRzPDw4ICsgI2Fubm90YXRpb25zPDwxNiAqLwotI2RlZmluZSBCVUlMRF9TTElDRSAJMTMzCS8qIE51bWJlciBvZiBpdGVtcyAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgMTMxICAgICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgMTMyICAgICAvKiAjZGVmYXVsdHMgKyAja3dkZWZhdWx0czw8OCArICNhbm5vdGF0aW9uczw8MTYgKi8KKyNkZWZpbmUgQlVJTERfU0xJQ0UgICAgIDEzMyAgICAgLyogTnVtYmVyIG9mIGl0ZW1zICovCiAKICNkZWZpbmUgTUFLRV9DTE9TVVJFICAgIDEzNCAgICAgLyogc2FtZSBhcyBNQUtFX0ZVTkNUSU9OICovCiAjZGVmaW5lIExPQURfQ0xPU1VSRSAgICAxMzUgICAgIC8qIExvYWQgZnJlZSB2YXJpYWJsZSBmcm9tIGNsb3N1cmUgKi8KQEAgLTEyNyw5ICsxMjcsOSBAQAogCiAvKiBUaGUgbmV4dCAzIG9wY29kZXMgbXVzdCBiZSBjb250aWd1b3VzIGFuZCBzYXRpc2Z5CiAgICAoQ0FMTF9GVU5DVElPTl9WQVIgLSBDQUxMX0ZVTkNUSU9OKSAmIDMgPT0gMSAgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgICAgIDE0MQkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAgICAxNDIJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAgICAxNDEgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgICAgIDE0MiAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KIAogI2RlZmluZSBTRVRVUF9XSVRIIDE0MwogCkBAIC0xNDksNyArMTQ5LDcgQEAKIAogCiBlbnVtIGNtcF9vcCB7UHlDbXBfTFQ9UHlfTFQsIFB5Q21wX0xFPVB5X0xFLCBQeUNtcF9FUT1QeV9FUSwgUHlDbXBfTkU9UHlfTkUsIFB5Q21wX0dUPVB5X0dULCBQeUNtcF9HRT1QeV9HRSwKLQkgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKKyAgICAgICAgICAgICBQeUNtcF9JTiwgUHlDbXBfTk9UX0lOLCBQeUNtcF9JUywgUHlDbXBfSVNfTk9ULCBQeUNtcF9FWENfTUFUQ0gsIFB5Q21wX0JBRH07CiAKICNkZWZpbmUgSEFTX0FSRyhvcCkgKChvcCkgPj0gSEFWRV9BUkdVTUVOVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vc2RlZnMuaCBiL0luY2x1ZGUvb3NkZWZzLmgKaW5kZXggOTBiNDMwYS4uMDVjMGM4ZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vc2RlZnMuaAorKysgYi9JbmNsdWRlL29zZGVmcy5oCkBAIC0yOSw2ICsyOSwxNCBAQAogI2VuZGlmCiAKIC8qIE1heCBwYXRobmFtZSBsZW5ndGggKi8KKyNpZmRlZiBfX2hwdXgKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpZm5kZWYgUEFUSF9NQVgKKyNkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgorI2VuZGlmCisjZW5kaWYKKwogI2lmbmRlZiBNQVhQQVRITEVOCiAjaWYgZGVmaW5lZChQQVRIX01BWCkgJiYgUEFUSF9NQVggPiAxMDI0CiAjZGVmaW5lIE1BWFBBVEhMRU4gUEFUSF9NQVgKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGFyc2V0b2suaCBiL0luY2x1ZGUvcGFyc2V0b2suaAppbmRleCA0Yjc2OTRmLi45MTFkZmMxIDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhcnNldG9rLmgKKysrIGIvSW5jbHVkZS9wYXJzZXRvay5oCkBAIC05LDcgKzksMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGludCBlcnJvcjsKLSAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCisjaWZuZGVmIFBHRU4KKyAgICAvKiBUaGUgZmlsZW5hbWUgaXMgdXNlbGVzcyBmb3IgcGdlbiwgc2VlIGNvbW1lbnQgaW4gdG9rX3N0YXRlIHN0cnVjdHVyZSAqLworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKyNlbmRpZgogICAgIGludCBsaW5lbm87CiAgICAgaW50IG9mZnNldDsKICAgICBjaGFyICp0ZXh0OyAgICAgICAgICAgICAgICAgLyogVVRGLTgtZW5jb2RlZCBzdHJpbmcgKi8KQEAgLTY2LDggKzY5LDEwIEBACiAgICAgcGVycmRldGFpbCAqZXJyX3JldCwKICAgICBpbnQgKmZsYWdzKTsKIAotLyogTm90ZSB0aGF0IGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHB5dGhvbnJ1bi5jIG5vdCBwYXJzZXRvay5jLiAqLworLyogTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGluIHB5dGhvbnJ1bi5jLAorICAgbm90IGluIHBhcnNldG9rLmMgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlQYXJzZXJfU2V0RXJyb3IocGVycmRldGFpbCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlQYXJzZXJfQ2xlYXJFcnJvcihwZXJyZGV0YWlsICopOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggMDgzOTA3MS4uYjU5MTlhNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTE3LDE5ICsxNywxNSBAQAogLyogVmVyc2lvbiBwYXJzZWQgb3V0IGludG8gbnVtZXJpYyB2YWx1ZXMgKi8KIC8qLS1zdGFydCBjb25zdGFudHMtLSovCiAjZGVmaW5lIFBZX01BSk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTIKLSNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkzCisjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JMworI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTAKICNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCiAjZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKIAogLyogVmVyc2lvbiBhcyBhIHN0cmluZyAqLwotI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjIuMysiCisjZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuMy4wKyIKIC8qLS1lbmQgY29uc3RhbnRzLS0qLwogCi0vKiBTdWJ2ZXJzaW9uIFJldmlzaW9uIG51bWJlciBvZiB0aGlzIGZpbGUgKG5vdCBvZiB0aGUgcmVwb3NpdG9yeSkuIEVtcHR5Ci0gICBzaW5jZSBNZXJjdXJpYWwgbWlncmF0aW9uLiAqLwotI2RlZmluZSBQWV9QQVRDSExFVkVMX1JFVklTSU9OICAiIgotCiAvKiBWZXJzaW9uIGFzIGEgc2luZ2xlIDQtYnl0ZSBoZXggbnVtYmVyLCBlLmcuIDB4MDEwNTAyQjIgPT0gMS41LjJiMi4KICAgIFVzZSB0aGlzIGZvciBudW1lcmljIGNvbXBhcmlzb25zLCBlLmcuICNpZiBQWV9WRVJTSU9OX0hFWCA+PSAuLi4gKi8KICNkZWZpbmUgUFlfVkVSU0lPTl9IRVggKChQWV9NQUpPUl9WRVJTSU9OIDw8IDI0KSB8IFwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGE4OTFjNDIuLmYyYzA4ZjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtNzYsNiArNzYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogCVB5T2JqZWN0X0hFQUQKIAlXSU5ET1cgKndpbjsKKwljaGFyICplbmNvZGluZzsKIH0gUHlDdXJzZXNXaW5kb3dPYmplY3Q7CiAKICNkZWZpbmUgUHlDdXJzZXNXaW5kb3dfQ2hlY2sodikJIChQeV9UWVBFKHYpID09ICZQeUN1cnNlc1dpbmRvd19UeXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCBlMjNjYmRjLi45N2MyZjhjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtMTYsNyArMTYsNiBAQAogUHlBUElfREFUQShpbnQpIFB5X1VzZUNsYXNzRXhjZXB0aW9uc0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfRnJvemVuRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWc7Ci1QeUFQSV9EQVRBKGludCkgUHlfRGl2aXNpb25XYXJuaW5nRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeTsKIFB5QVBJX0RBVEEoaW50KSBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnOwpAQCAtMjcsOCArMjYsNiBAQAogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwogI2RlZmluZSBQeV9HRVRFTlYocykgKFB5X0lnbm9yZUVudmlyb25tZW50RmxhZyA/IE5VTEwgOiBnZXRlbnYocykpCiAKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCA0YmIzYzAxLi5hZjM3NDEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xMCw3ICsxMCw4IEBACiAvKiBQeUV4Y2VwdGlvbl9IRUFEIGRlZmluZXMgdGhlIGluaXRpYWwgc2VnbWVudCBvZiBldmVyeSBleGNlcHRpb24gY2xhc3MuICovCiAjZGVmaW5lIFB5RXhjZXB0aW9uX0hFQUQgUHlPYmplY3RfSEVBRCBQeU9iamVjdCAqZGljdDtcCiAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3M7IFB5T2JqZWN0ICp0cmFjZWJhY2s7XAotICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0OyBQeU9iamVjdCAqY2F1c2U7CisgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQ7IFB5T2JqZWN0ICpjYXVzZTtcCisgICAgICAgICAgICAgY2hhciBzdXBwcmVzc19jb250ZXh0OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlFeGNlcHRpb25fSEVBRApAQCAtMjgsNiArMjksMTMgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKKyAgICBQeU9iamVjdCAqbXNnOworICAgIFB5T2JqZWN0ICpuYW1lOworICAgIFB5T2JqZWN0ICpwYXRoOworfSBQeUltcG9ydEVycm9yT2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlFeGNlcHRpb25fSEVBRAogICAgIFB5T2JqZWN0ICplbmNvZGluZzsKICAgICBQeU9iamVjdCAqb2JqZWN0OwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CkBAIC00NSwxOCArNTMsMjMgQEAKICAgICBQeU9iamVjdCAqbXllcnJubzsKICAgICBQeU9iamVjdCAqc3RyZXJyb3I7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwotfSBQeUVudmlyb25tZW50RXJyb3JPYmplY3Q7Ci0KICNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKndpbmVycm9yOworI2VuZGlmCisgICAgUHlfc3NpemVfdCB3cml0dGVuOyAgIC8qIG9ubHkgZm9yIEJsb2NraW5nSU9FcnJvciwgLTEgb3RoZXJ3aXNlICovCit9IFB5T1NFcnJvck9iamVjdDsKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKLSAgICBQeU9iamVjdCAqbXllcnJubzsKLSAgICBQeU9iamVjdCAqc3RyZXJyb3I7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIFB5T2JqZWN0ICp3aW5lcnJvcjsKLX0gUHlXaW5kb3dzRXJyb3JPYmplY3Q7CisgICAgUHlPYmplY3QgKnZhbHVlOworfSBQeVN0b3BJdGVyYXRpb25PYmplY3Q7CisKKy8qIENvbXBhdGliaWxpdHkgdHlwZWRlZnMgKi8KK3R5cGVkZWYgUHlPU0Vycm9yT2JqZWN0IFB5RW52aXJvbm1lbnRFcnJvck9iamVjdDsKKyNpZmRlZiBNU19XSU5ET1dTCit0eXBlZGVmIFB5T1NFcnJvck9iamVjdCBQeVdpbmRvd3NFcnJvck9iamVjdDsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIEVycm9yIGhhbmRsaW5nIGRlZmluaXRpb25zICovCiAKQEAgLTcwLDcgKzgzLDE5IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0NsZWFyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9GZXRjaChQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVDX01BSk9SX18pICYmIFwKKyAgICAgKChfX0dOVUNfTUFKT1JfXyA+PSAzKSB8fCBcCisgICAgICAoX19HTlVDX01BSk9SX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fID49IDUpKSkKKyNkZWZpbmUgX1B5X05PX1JFVFVSTiBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQorI2Vsc2UKKyNkZWZpbmUgX1B5X05PX1JFVFVSTgorI2VuZGlmCisKK1B5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKSBfUHlfTk9fUkVUVVJOOwogCiAjaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKICNkZWZpbmUgX1B5RXJyX09DQ1VSUkVEKCkgUHlFcnJfT2NjdXJyZWQoKQpAQCAtMTIyLDEwICsxNDcsOSBAQAogCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Fzc2VydGlvbkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnVmZmVyRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0VPRkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I7Ci1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Vudmlyb25tZW50RXJyb3I7Ci1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lPRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX09TRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ltcG9ydEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbmRleEVycm9yOwpAQCAtMTUwLDYgKzE3NCwyNyBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1ZhbHVlRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yOworCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnJva2VuUGlwZUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvbkVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmlsZUV4aXN0c0Vycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUGVybWlzc2lvbkVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1RpbWVvdXRFcnJvcjsKKworCisvKiBDb21wYXRpYmlsaXR5IGFsaWFzZXMgKi8KK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRW52aXJvbm1lbnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSU9FcnJvcjsKICNpZmRlZiBNU19XSU5ET1dTCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1dpbmRvd3NFcnJvcjsKICNlbmRpZgpAQCAtMTU3LDggKzIwMiw2IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1ZNU0Vycm9yOwogI2VuZGlmCiAKLVB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnVmZmVyRXJyb3I7Ci0KIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0OwogCiAvKiBQcmVkZWZpbmVkIHdhcm5pbmcgY2F0ZWdvcmllcyAqLwpAQCAtMTk4LDggKzI0MSw2IEBACiAgICAgKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoCi0gICAgaW50LCBjb25zdCBjaGFyICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgKICAgICBpbnQgaWVyciwKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCkBAIC0yMjQsNiArMjY1LDExIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5T2JqZWN0ICosIGludCk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKik7CisKIC8qIEV4cG9ydCB0aGUgb2xkIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIGV4aXN0aW5nIEFQSSByZW1haW5zIGF2YWlsYWJsZTogKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKTsKQEAgLTI5Myw2ICszMzksMTIgQEAKICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgIFB5T2JqZWN0ICpvYmplY3QsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIGdldCB0aGUgZW5jb2RpbmcgYXR0cmlidXRlICovCkBAIC0zNDgsNyArNDAwLDYgQEAKICAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogCi0KIC8qIFRoZXNlIEFQSXMgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBlcnJvciBpbXBsZW1lbnRhdGlvbiwgYnV0CiAgICBvZnRlbiBuZWVkZWQgdG8gZm9ybWF0IGVycm9yIG1lc3NhZ2VzOyB0aGUgbmF0aXZlIEMgbGliIEFQSXMgYXJlCiAgICBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoaWNoIGlzIHdoeSB3ZSBwcm92aWRlIGVtdWxhdGlvbnMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlleHBhdC5oIGIvSW5jbHVkZS9weWV4cGF0LmgKaW5kZXggNTM0MGVmNS4uMTY4YjViMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWV4cGF0LmgKKysrIGIvSW5jbHVkZS9weWV4cGF0LmgKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgWE1MX1BhcnNlciBwYXJzZXIsIFhNTF9Vbmtub3duRW5jb2RpbmdIYW5kbGVyIGhhbmRsZXIsCiAgICAgICAgIHZvaWQgKmVuY29kaW5nSGFuZGxlckRhdGEpOwogICAgIHZvaWQgKCpTZXRVc2VyRGF0YSkoWE1MX1BhcnNlciBwYXJzZXIsIHZvaWQgKnVzZXJEYXRhKTsKKyAgICB2b2lkICgqU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpKFhNTF9QYXJzZXIgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyIHN0YXJ0KTsKICAgICAvKiBhbHdheXMgYWRkIG5ldyBzdHVmZiB0byB0aGUgZW5kISAqLwogfTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmI0YjNkCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weW1hY3JvLmgKQEAgLTAsMCArMSw3MiBAQAorI2lmbmRlZiBQeV9QWU1BQ1JPX0gKKyNkZWZpbmUgUHlfUFlNQUNST19ICisKKyNkZWZpbmUgUHlfTUlOKHgsIHkpICgoKHgpID4gKHkpKSA/ICh5KSA6ICh4KSkKKyNkZWZpbmUgUHlfTUFYKHgsIHkpICgoKHgpID4gKHkpKSA/ICh4KSA6ICh5KSkKKworLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLworI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQorCisKKy8qIEFzc2VydCBhIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSwgYXMgYW4gZXhwcmVzc2lvbi4KKworICAgWW91ciBjb21waWxlIHdpbGwgZmFpbCBpZiB0aGUgY29uZGl0aW9uIGlzbid0IHRydWUsIG9yIGNhbid0IGJlIGV2YWx1YXRlZAorICAgYnkgdGhlIGNvbXBpbGVyLiBUaGlzIGNhbiBiZSB1c2VkIGluIGFuIGV4cHJlc3Npb246IGl0cyB2YWx1ZSBpcyAwLgorCisgICBFeGFtcGxlOgorCisgICAjZGVmaW5lIGZvb190b19jaGFyKGZvbykgIFwKKyAgICAgICAoKGNoYXIgKikoZm9vKSAgICAgICAgXAorICAgICAgICArIFB5X0JVSUxEX0FTU0VSVF9FWFBSKG9mZnNldG9mKHN0cnVjdCBmb28sIHN0cmluZykgPT0gMCkpCisKKyAgIFdyaXR0ZW4gYnkgUnVzdHkgUnVzc2VsbCwgcHVibGljIGRvbWFpbiwgaHR0cDovL2Njb2RlYXJjaGl2ZS5uZXQvICovCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpIFwKKyAgICAoc2l6ZW9mKGNoYXIgWzEgLSAyKiEoY29uZCldKSAtIDEpCisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmlzaWJsZSBhcnJheQorCisgICBUaGlzIGRvZXMgbm90IHdvcmsgb24gcG9pbnRlcnMsIG9yIGFycmF5cyBkZWNsYXJlZCBhcyBbXSwgb3IgZnVuY3Rpb24KKyAgIHBhcmFtZXRlcnMuIFdpdGggY29ycmVjdCBjb21waWxlciBzdXBwb3J0LCBzdWNoIHVzYWdlIHdpbGwgY2F1c2UgYSBidWlsZAorICAgZXJyb3IgKHNlZSBQeV9CVUlMRF9BU1NFUlRfRVhQUikuCisKKyAgIFdyaXR0ZW4gYnkgUnVzdHkgUnVzc2VsbCwgcHVibGljIGRvbWFpbiwgaHR0cDovL2Njb2RlYXJjaGl2ZS5uZXQvCisKKyAgIFJlcXVpcmVzIGF0IEdDQyAzLjErICovCisjaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgJiYgXAorICAgICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VX01JTk9SX18gPj0gMSkpIHx8IChfX0dOVUNfXyA+PSA0KSkKKy8qIFR3byBnY2MgZXh0ZW5zaW9ucy4KKyAgICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCisjZGVmaW5lIFB5X0FSUkFZX0xFTkdUSChhcnJheSkgXAorICAgIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pIFwKKyAgICAgKyBQeV9CVUlMRF9BU1NFUlRfRVhQUighX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoYXJyYXkpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKCYoYXJyYXkpWzBdKSkpKQorI2Vsc2UKKyNkZWZpbmUgUHlfQVJSQVlfTEVOR1RIKGFycmF5KSBcCisgICAgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKGFycmF5KVswXSkpCisjZW5kaWYKKworCisvKiBEZWZpbmUgbWFjcm9zIGZvciBpbmxpbmUgZG9jdW1lbnRhdGlvbi4gKi8KKyNkZWZpbmUgUHlEb2NfVkFSKG5hbWUpIHN0YXRpYyBjaGFyIG5hbWVbXQorI2RlZmluZSBQeURvY19TVFJWQVIobmFtZSxzdHIpIFB5RG9jX1ZBUihuYW1lKSA9IFB5RG9jX1NUUihzdHIpCisjaWZkZWYgV0lUSF9ET0NfU1RSSU5HUworI2RlZmluZSBQeURvY19TVFIoc3RyKSBzdHIKKyNlbHNlCisjZGVmaW5lIFB5RG9jX1NUUihzdHIpICIiCisjZW5kaWYKKworLyogQmVsb3cgImEiIGlzIGEgcG93ZXIgb2YgMi4gKi8KKy8qIFJvdW5kIGRvd24gc2l6ZSAibiIgdG8gYmUgYSBtdWx0aXBsZSBvZiAiYSIuICovCisjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX0RPV04obiwgYSkgKChzaXplX3QpKG4pICYgfihzaXplX3QpKChhKSAtIDEpKQorLyogUm91bmQgdXAgc2l6ZSAibiIgdG8gYmUgYSBtdWx0aXBsZSBvZiAiYSIuICovCisjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCisgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKKy8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KKyNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCisgICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisvKiBDaGVjayBpZiBwb2ludGVyICJwIiBpcyBhbGlnbmVkIHRvICJhIi1ieXRlcyBib3VuZGFyeS4gKi8KKyNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKFB5X3VpbnRwdHJfdCkocCkgJiAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisKKyNlbmRpZiAvKiBQeV9QWU1BQ1JPX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYXRoLmggYi9JbmNsdWRlL3B5bWF0aC5oCmluZGV4IGI0ZWRhNjYuLjYyYTZjNDIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYXRoLmgKKysrIGIvSW5jbHVkZS9weW1hdGguaApAQCAtMzcsMTIgKzM3LDYgQEAKICNlbmRpZiAvKiBfX1NURENfXyAqLwogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoZXNlIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gaW50IGZpbml0ZShkb3VibGUpOwotZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbihkb3VibGUsIGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogSGlnaCBwcmVjaXNpb24gZGVmaW50aW9uIG9mIHBpIGFuZCBlIChFdWxlcikKICAqIFRoZSB2YWx1ZXMgYXJlIHRha2VuIGZyb20gbGliYzYncyBtYXRoLmguCiAgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IGM3NGZmOWMuLmU0ZTM2MDEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMTQ4LDcgKzE0OCw3IEBACiAjZGVmaW5lIF9QeUhBU0hfTVVMVElQTElFUiAxMDAwMDAzVUwgIC8qIDB4ZjQyNDMgKi8KIAogLyogUGFyYW1ldGVycyB1c2VkIGZvciB0aGUgbnVtZXJpYyBoYXNoIGltcGxlbWVudGF0aW9uLiAgU2VlIG5vdGVzIGZvcgotICAgX1B5SGFzaF9Eb3VibGUgaW4gT2JqZWN0cy9vYmplY3QuYy4gIE51bWVyaWMgaGFzaGVzIGFyZSBiYXNlZCBvbgorICAgX1B5X0hhc2hEb3VibGUgaW4gT2JqZWN0cy9vYmplY3QuYy4gIE51bWVyaWMgaGFzaGVzIGFyZSBiYXNlZCBvbgogICAgcmVkdWN0aW9uIG1vZHVsbyB0aGUgcHJpbWUgMioqX1B5SEFTSF9CSVRTIC0gMS4gKi8KIAogI2lmIFNJWkVPRl9WT0lEX1AgPj0gOApAQCAtNjYyLDcgKzY2Miw3IEBACiAvKiBPbiBRTlggNiwgc3RydWN0IHRlcm1pbyBtdXN0IGJlIGRlY2xhcmVkIGJ5IGluY2x1ZGluZyBzeXMvdGVybWlvLmgKICAgIGlmIFRDR0VUQSwgVENTRVRBLCBUQ1NFVEFXLCBvciBUQ1NFVEFGIGFyZSB1c2VkLiAgc3lzL3Rlcm1pby5oIG11c3QKICAgIGJlIGluY2x1ZGVkIGJlZm9yZSB0ZXJtaW9zLmggb3IgaXQgd2lsbCBnZW5lcmF0ZSBhbiBlcnJvci4gKi8KLSNpZmRlZiBIQVZFX1NZU19URVJNSU9fSAorI2lmIGRlZmluZWQoSEFWRV9TWVNfVEVSTUlPX0gpICYmICFkZWZpbmVkKF9faHB1eCkKICNpbmNsdWRlIDxzeXMvdGVybWlvLmg+CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCAwNjBlZmE3Li4yMDE3YjAyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogICAgIFB5T2JqZWN0ICptb2R1bGVzX2J5X2luZGV4OwogICAgIFB5T2JqZWN0ICpzeXNkaWN0OwogICAgIFB5T2JqZWN0ICpidWlsdGluczsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmc7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKIAogICAgIFB5T2JqZWN0ICpjb2RlY19zZWFyY2hfcGF0aDsKICAgICBQeU9iamVjdCAqY29kZWNfc2VhcmNoX2NhY2hlOwpAQCAtMzMsNiArMzMsNyBAQAogICAgIGludCBjb2RlY3NfaW5pdGlhbGl6ZWQ7CiAgICAgaW50IGZzY29kZWNfaW5pdGlhbGl6ZWQ7CiAKKwogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCkBAIC03NCw5ICs3NSw5IEBACiAgICAgc3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICBjaGFyIG92ZXJmbG93ZWQ7IC8qIFRoZSBzdGFjayBoYXMgb3ZlcmZsb3dlZC4gQWxsb3cgNTAgbW9yZSBjYWxscwotCQkgICAgICAgIHRvIGhhbmRsZSB0aGUgcnVudGltZSBlcnJvci4gKi8KLSAgICBjaGFyIHJlY3Vyc2lvbl9jcml0aWNhbDsgLyogVGhlIGN1cnJlbnQgY2FsbHMgbXVzdCBub3QgY2F1c2UgCi0JCQkJYSBzdGFjayBvdmVyZmxvdy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGhhbmRsZSB0aGUgcnVudGltZSBlcnJvci4gKi8KKyAgICBjaGFyIHJlY3Vyc2lvbl9jcml0aWNhbDsgLyogVGhlIGN1cnJlbnQgY2FsbHMgbXVzdCBub3QgY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICAvKiAndHJhY2luZycga2VlcHMgdHJhY2sgb2YgdGhlIGV4ZWN1dGlvbiBkZXB0aCB3aGVuIHRyYWNpbmcvcHJvZmlsaW5nLgogICAgICAgIFRoaXMgaXMgdG8gcHJldmVudCB0aGUgYWN0dWFsIHRyYWNlL3Byb2ZpbGUgY29kZSBmcm9tIGJlaW5nIHJlY29yZGVkIGluCiAgICAgICAgdGhlIHRyYWNlL3Byb2ZpbGUuICovCkBAIC0xMjYsNiArMTI3LDExIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyhpbnQpIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKKy8qIE5ldyBpbiAzLjMgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworUHlBUElfRlVOQyhpbnQpIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiopOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlTdGF0ZV9GaW5kTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiopOwogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9OZXcoUHlJbnRlcnByZXRlclN0YXRlICopOwpAQCAtMTYzLDYgKzE2OSw4IEBACiAgICAgZW51bSB7UHlHSUxTdGF0ZV9MT0NLRUQsIFB5R0lMU3RhdGVfVU5MT0NLRUR9CiAgICAgICAgIFB5R0lMU3RhdGVfU1RBVEU7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorCiAvKiBFbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaXMgcmVhZHkgdG8gY2FsbCB0aGUgUHl0aG9uCiAgICBDIEFQSSwgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBQeXRob24sIG9yIG9mIGl0cwogICAgdGhyZWFkIGxvY2suICBUaGlzIG1heSBiZSBjYWxsZWQgYXMgbWFueSB0aW1lcyBhcyBkZXNpcmVkCkBAIC0yMDQsNiArMjEyLDggQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKKyNlbmRpZiAgIC8qICNpZmRlZiBXSVRIX1RIUkVBRCAqLworCiAvKiBUaGUgaW1wbGVtZW50YXRpb24gb2Ygc3lzLl9jdXJyZW50X2ZyYW1lcygpICBSZXR1cm5zIGEgZGljdCBtYXBwaW5nCiAgICB0aHJlYWQgaWQgdG8gdGhhdCB0aHJlYWQncyBjdXJyZW50IGZyYW1lLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IGUyNDRjZTcuLjRkMjRiMmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtMzAsNiArMzAsOSBAQAogCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemUodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemVFeChpbnQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOworI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CkBAIC04Miw5ICs4NSwxMiBAQAogICAgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzKEZQLCBTLCBCLCAwKQogI2VuZGlmCiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CitQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzRmlsZW5hbWUoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCk7CiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncyhGSUxFICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5UnVuX1N0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgaW50LCBQeU9iamVjdCAqLApAQCAtMTc5LDkgKzE4NSw2IEBACiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9zdm52ZXJzaW9uKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X1N1YnZlcnNpb25SZXZpc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9TdWJ2ZXJzaW9uU2hvcnRCcmFuY2godm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOwogI2VuZGlmCkBAIC0xOTEsNyArMTk0LDcgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5QnVpbHRpbl9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdChQeU9iamVjdCAqIGJsdGlubW9kKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlGcmFtZV9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9Jbml0KHZvaWQpOwpAQCAtMjE1LDYgKzIxOCw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RmxvYXRfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aHJlYWQuaCBiL0luY2x1ZGUvcHl0aHJlYWQuaAppbmRleCA5ODA2YzYxLi42ZTlmMzAzIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhyZWFkLmgKKysrIGIvSW5jbHVkZS9weXRocmVhZC5oCkBAIC0zMiw3ICszMiw3IEBACiAgICBvbiBhIGxvY2sgKHNlZSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoKSBiZWxvdykuCiAgICBQWV9USU1FT1VUX01BWCBpcyB0aGUgaGlnaGVzdCB1c2FibGUgdmFsdWUgKGluIG1pY3Jvc2Vjb25kcykgb2YgdGhhdAogICAgdHlwZSwgYW5kIGRlcGVuZHMgb24gdGhlIHN5c3RlbSB0aHJlYWRpbmcgQVBJLgotICAgCisKICAgIE5PVEU6IHRoaXMgaXNuJ3QgdGhlIHNhbWUgdmFsdWUgYXMgYF90aHJlYWQuVElNRU9VVF9NQVhgLiAgVGhlIF90aHJlYWQKICAgIG1vZHVsZSBleHBvc2VzIGEgaGlnaGVyLWxldmVsIEFQSSwgd2l0aCB0aW1lb3V0cyBleHByZXNzZWQgaW4gc2Vjb25kcwogICAgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYWxsb3dlZC4KQEAgLTc0LDYgKzc0LDggQEAKIFB5QVBJX0ZVTkMoc2l6ZV90KSBQeVRocmVhZF9nZXRfc3RhY2tzaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX3NldF9zdGFja3NpemUoc2l6ZV90KTsKIAorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VGhyZWFkX0dldEluZm8odm9pZCk7CisKIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIChUTFMpIEFQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX2NyZWF0ZV9rZXkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkX2RlbGV0ZV9rZXkoaW50KTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IGQ3MDdiZGIuLjUyOTAyZjUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMyw2ICszLDcgQEAKICNkZWZpbmUgUHlfUFlUSU1FX0gKIAogI2luY2x1ZGUgInB5Y29uZmlnLmgiIC8qIGluY2x1ZGUgZm9yIGRlZmluZXMgKi8KKyNpbmNsdWRlICJvYmplY3QuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTeW1ib2xzIGFuZCBtYWNyb3MgdG8gc3VwcGx5IHBsYXRmb3JtLWluZGVwZW5kZW50IGludGVyZmFjZXMgdG8gdGltZSByZWxhdGVkCkBAIC0yMSwxMSArMjIsMjUgQEAKIH0gX1B5VGltZV90aW1ldmFsOwogI2VuZGlmCiAKKy8qIFN0cnVjdHVyZSB1c2VkIGJ5IHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uOworICAgIGludCBtb25vdG9uaWM7CisgICAgaW50IGFkanVzdGFibGU7CisgICAgZG91YmxlIHJlc29sdXRpb247Cit9IF9QeV9jbG9ja19pbmZvX3Q7CisKIC8qIFNpbWlsYXIgdG8gUE9TSVggZ2V0dGltZW9mZGF5IGJ1dCBjYW5ub3QgZmFpbC4gIElmIHN5c3RlbSBnZXR0aW1lb2ZkYXkKICAqIGZhaWxzIG9yIGlzIG5vdCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byBsb3dlciByZXNvbHV0aW9uIGNsb2Nrcy4KICAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKTsKIAorLyogU2ltaWxhciB0byBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGJ1dCByZXRyaWV2ZSBhbHNvIGluZm9ybWF0aW9uIG9uIHRoZQorICogY2xvY2sgdXNlZCB0byBnZXQgdGhlIGN1cnJlbnQgdGltZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygKKyAgICBfUHlUaW1lX3RpbWV2YWwgKnRwLAorICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOworCiAjZGVmaW5lIF9QeVRpbWVfQUREX1NFQ09ORFModHYsIGludGVydmFsKSBcCiBkbyB7IFwKICAgICB0di50dl91c2VjICs9IChsb25nKSAoKChsb25nKSBpbnRlcnZhbCAtIGludGVydmFsKSAqIDEwMDAwMDApOyBcCkBAIC0zNyw2ICs1MiwzNyBAQAogICAgICgodHZfZW5kLnR2X3NlYyAtIHR2X3N0YXJ0LnR2X3NlYykgKyBcCiAgICAgICh0dl9lbmQudHZfdXNlYyAtIHR2X3N0YXJ0LnR2X3VzZWMpICogMC4wMDAwMDEpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byB0aW1lX3QuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWVfdCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjKTsKKworLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tVGltZV90KAorICAgIHRpbWVfdCBzZWMpOworCisvKiBDb252ZXJ0IGEgUHlMb25nIHRvIGEgdGltZV90LiAqLworUHlBUElfRlVOQyh0aW1lX3QpIF9QeUxvbmdfQXNUaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaik7CisKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byBhIHRpbWV2YWwgc3RydWN0dXJlLgorICAgdXNlYyBpcyBpbiB0aGUgcmFuZ2UgWzA7IDk5OTk5OV0gYW5kIHJvdW5kZWQgdG93YXJkcyB6ZXJvLgorICAgRm9yIGV4YW1wbGUsIC0xLjIgaXMgY29udmVydGVkIHRvICgtMiwgODAwMDAwKS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZXZhbCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIGxvbmcgKnVzZWMpOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1lc3BlYyBzdHJ1Y3R1cmUuCisgICBuc2VjIGlzIGluIHRoZSByYW5nZSBbMDsgOTk5OTk5OTk5XSBhbmQgcm91bmRlZCB0b3dhcmRzIHplcm8uCisgICBGb3IgZXhhbXBsZSwgLTEuMiBpcyBjb252ZXJ0ZWQgdG8gKC0yLCA4MDAwMDAwMDApLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYygKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIGxvbmcgKm5zZWMpOworI2VuZGlmCisKIC8qIER1bW15IHRvIGZvcmNlIGxpbmtpbmcuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfSW5pdCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggNjIzNDExMS4uYTE0ODc0YiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC05OSw2ICs5OSw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X1BvcChQeU9iamVjdCAqc2V0KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfVXBkYXRlKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICppdGVyYWJsZSk7CisKK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKaW5kZXggMGI4NWIyYS4uOTQ4ZjY5MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAorKysgYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCkBAIC05LDE2ICs5LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBGb3Igb2Zmc2V0b2YgKi8KIAotLyogVGhlIG9mZnNldG9mKCkgbWFjcm8gY2FsY3VsYXRlcyB0aGUgb2Zmc2V0IG9mIGEgc3RydWN0dXJlIG1lbWJlcgotICAgaW4gaXRzIHN0cnVjdHVyZS4gIFVuZm9ydHVuYXRlbHkgdGhpcyBjYW5ub3QgYmUgd3JpdHRlbiBkb3duCi0gICBwb3J0YWJseSwgaGVuY2UgaXQgaXMgcHJvdmlkZWQgYnkgYSBTdGFuZGFyZCBDIGhlYWRlciBmaWxlLgotICAgRm9yIHByZS1TdGFuZGFyZCBDIGNvbXBpbGVycywgaGVyZSBpcyBhIHZlcnNpb24gdGhhdCB1c3VhbGx5IHdvcmtzCi0gICAoYnV0IHdhdGNoIG91dCEpOiAqLwotCi0jaWZuZGVmIG9mZnNldG9mCi0jZGVmaW5lIG9mZnNldG9mKHR5cGUsIG1lbWJlcikgKCAoaW50KSAmICgodHlwZSopMCkgLT4gbWVtYmVyICkKLSNlbmRpZgotCiAvKiBBbiBhcnJheSBvZiBQeU1lbWJlckRlZiBzdHJ1Y3R1cmVzIGRlZmluZXMgdGhlIG5hbWUsIHR5cGUgYW5kIG9mZnNldAogICAgb2Ygc2VsZWN0ZWQgbWVtYmVycyBvZiBhIEMgc3RydWN0dXJlLiAgVGhlc2UgY2FuIGJlIHJlYWQgYnkKICAgIFB5TWVtYmVyX0dldE9uZSgpIGFuZCBzZXQgYnkgUHlNZW1iZXJfU2V0T25lKCkgKGV4Y2VwdCBpZiB0aGVpciBSRUFET05MWQpAQCAtMjYsNDIgKzE2LDQxIEBACiAgICBwb2ludGVyIGlzIE5VTEwuICovCiAKIHR5cGVkZWYgc3RydWN0IFB5TWVtYmVyRGVmIHsKLQkvKiBDdXJyZW50IHZlcnNpb24sIHVzZSB0aGlzICovCi0JY2hhciAqbmFtZTsKLQlpbnQgdHlwZTsKLQlQeV9zc2l6ZV90IG9mZnNldDsKLQlpbnQgZmxhZ3M7Ci0JY2hhciAqZG9jOworICAgIGNoYXIgKm5hbWU7CisgICAgaW50IHR5cGU7CisgICAgUHlfc3NpemVfdCBvZmZzZXQ7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRvYzsKIH0gUHlNZW1iZXJEZWY7CiAKIC8qIFR5cGVzICovCi0jZGVmaW5lIFRfU0hPUlQJCTAKLSNkZWZpbmUgVF9JTlQJCTEKLSNkZWZpbmUgVF9MT05HCQkyCi0jZGVmaW5lIFRfRkxPQVQJCTMKLSNkZWZpbmUgVF9ET1VCTEUJNAotI2RlZmluZSBUX1NUUklORwk1Ci0jZGVmaW5lIFRfT0JKRUNUCTYKKyNkZWZpbmUgVF9TSE9SVCAgICAgMAorI2RlZmluZSBUX0lOVCAgICAgICAxCisjZGVmaW5lIFRfTE9ORyAgICAgIDIKKyNkZWZpbmUgVF9GTE9BVCAgICAgMworI2RlZmluZSBUX0RPVUJMRSAgICA0CisjZGVmaW5lIFRfU1RSSU5HICAgIDUKKyNkZWZpbmUgVF9PQkpFQ1QgICAgNgogLyogWFhYIHRoZSBvcmRlcmluZyBoZXJlIGlzIHdlaXJkIGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSAqLwotI2RlZmluZSBUX0NIQVIJCTcJLyogMS1jaGFyYWN0ZXIgc3RyaW5nICovCi0jZGVmaW5lIFRfQllURQkJOAkvKiA4LWJpdCBzaWduZWQgaW50ICovCisjZGVmaW5lIFRfQ0hBUiAgICAgIDcgICAvKiAxLWNoYXJhY3RlciBzdHJpbmcgKi8KKyNkZWZpbmUgVF9CWVRFICAgICAgOCAgIC8qIDgtYml0IHNpZ25lZCBpbnQgKi8KIC8qIHVuc2lnbmVkIHZhcmlhbnRzOiAqLwotI2RlZmluZSBUX1VCWVRFCQk5Ci0jZGVmaW5lIFRfVVNIT1JUCTEwCi0jZGVmaW5lIFRfVUlOVAkJMTEKLSNkZWZpbmUgVF9VTE9ORwkJMTIKKyNkZWZpbmUgVF9VQllURSAgICAgOQorI2RlZmluZSBUX1VTSE9SVCAgICAxMAorI2RlZmluZSBUX1VJTlQgICAgICAxMQorI2RlZmluZSBUX1VMT05HICAgICAxMgogCiAvKiBBZGRlZCBieSBKYWNrOiBzdHJpbmdzIGNvbnRhaW5lZCBpbiB0aGUgc3RydWN0dXJlICovCi0jZGVmaW5lIFRfU1RSSU5HX0lOUExBQ0UJMTMKKyNkZWZpbmUgVF9TVFJJTkdfSU5QTEFDRSAgICAxMwogCiAvKiBBZGRlZCBieSBMaWxsbzogYm9vbHMgY29udGFpbmVkIGluIHRoZSBzdHJ1Y3R1cmUgKGFzc3VtZWQgY2hhcikgKi8KLSNkZWZpbmUgVF9CT09MCQkxNAorI2RlZmluZSBUX0JPT0wgICAgICAxNAogCi0jZGVmaW5lIFRfT0JKRUNUX0VYCTE2CS8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKLQkJCQkgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCi0JCQkJICAgY29udmVydGluZyB0byBOb25lLiAqLworI2RlZmluZSBUX09CSkVDVF9FWCAxNiAgLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGluZyB0byBOb25lLiAqLwogI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNyAgCisjZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNwogI2RlZmluZSBUX1VMT05HTE9ORyAgICAgMTgKICNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogCkBAIC03MCwxMCArNTksMTAgQEAKIAogCiAvKiBGbGFncyAqLwotI2RlZmluZSBSRUFET05MWQkxCi0jZGVmaW5lIFJFQURfUkVTVFJJQ1RFRAkyCisjZGVmaW5lIFJFQURPTkxZICAgICAgICAgICAgMQorI2RlZmluZSBSRUFEX1JFU1RSSUNURUQgICAgIDIKICNkZWZpbmUgUFlfV1JJVEVfUkVTVFJJQ1RFRCA0Ci0jZGVmaW5lIFJFU1RSSUNURUQJKFJFQURfUkVTVFJJQ1RFRCB8IFBZX1dSSVRFX1JFU1RSSUNURUQpCisjZGVmaW5lIFJFU1RSSUNURUQgICAgICAgICAgKFJFQURfUkVTVFJJQ1RFRCB8IFBZX1dSSVRFX1JFU1RSSUNURUQpCiAKIAogLyogQ3VycmVudCBBUEksIHVzZSB0aGlzICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5bXRhYmxlLmggYi9JbmNsdWRlL3N5bXRhYmxlLmgKaW5kZXggZmQ3ZGUwNC4uNmVkM2EyYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeW10YWJsZS5oCisrKyBiL0luY2x1ZGUvc3ltdGFibGUuaApAQCAtMjMsMTAgKzIzLDE1IEBACiAgICAgUHlPYmplY3QgKnN0X2Jsb2NrczsgICAgICAgICAgICAvKiBkaWN0OiBtYXAgQVNUIG5vZGUgYWRkcmVzc2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICB0byBzeW1ib2wgdGFibGUgZW50cmllcyAqLwogICAgIFB5T2JqZWN0ICpzdF9zdGFjazsgICAgICAgICAgICAgLyogbGlzdDogc3RhY2sgb2YgbmFtZXNwYWNlIGluZm8gKi8KLSAgICBQeU9iamVjdCAqc3RfZ2xvYmFsOyAgICAgICAgICAgIC8qIGJvcnJvd2VkIHJlZiB0byBzdF90b3AtPnN0X3N5bWJvbHMgKi8KLSAgICBpbnQgc3RfbmJsb2NrczsgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgdXNlZCAqLworICAgIFB5T2JqZWN0ICpzdF9nbG9iYWw7ICAgICAgICAgICAgLyogYm9ycm93ZWQgcmVmIHRvIHN0X3RvcC0+c3RlX3N5bWJvbHMgKi8KKyAgICBpbnQgc3RfbmJsb2NrczsgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgdXNlZC4ga2VwdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNpc3RlbmN5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIHN0cnVjdHVyZSAqLwogICAgIFB5T2JqZWN0ICpzdF9wcml2YXRlOyAgICAgICAgICAgLyogbmFtZSBvZiBjdXJyZW50IGNsYXNzIG9yIE5VTEwgKi8KLSAgICBQeUZ1dHVyZUZlYXR1cmVzICpzdF9mdXR1cmU7ICAgIC8qIG1vZHVsZSdzIGZ1dHVyZSBmZWF0dXJlcyAqLworICAgIFB5RnV0dXJlRmVhdHVyZXMgKnN0X2Z1dHVyZTsgICAgLyogbW9kdWxlJ3MgZnV0dXJlIGZlYXR1cmVzIHRoYXQgYWZmZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3ltYm9sIHRhYmxlICovCisgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsgICAgICAgICAgICAvKiBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aCAqLworICAgIGludCByZWN1cnNpb25fbGltaXQ7ICAgICAgICAgICAgLyogcmVjdXJzaW9uIGxpbWl0ICovCiB9OwogCiB0eXBlZGVmIHN0cnVjdCBfc3ltdGFibGVfZW50cnkgewpAQCAtMzQsNyArMzksNyBAQAogICAgIFB5T2JqZWN0ICpzdGVfaWQ7ICAgICAgICAvKiBpbnQ6IGtleSBpbiBzdGVfdGFibGUtPnN0X2Jsb2NrcyAqLwogICAgIFB5T2JqZWN0ICpzdGVfc3ltYm9sczsgICAvKiBkaWN0OiB2YXJpYWJsZSBuYW1lcyB0byBmbGFncyAqLwogICAgIFB5T2JqZWN0ICpzdGVfbmFtZTsgICAgICAvKiBzdHJpbmc6IG5hbWUgb2YgY3VycmVudCBibG9jayAqLwotICAgIFB5T2JqZWN0ICpzdGVfdmFybmFtZXM7ICAvKiBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzICovCisgICAgUHlPYmplY3QgKnN0ZV92YXJuYW1lczsgIC8qIGxpc3Qgb2YgZnVuY3Rpb24gcGFyYW1ldGVycyAqLwogICAgIFB5T2JqZWN0ICpzdGVfY2hpbGRyZW47ICAvKiBsaXN0IG9mIGNoaWxkIGJsb2NrcyAqLwogICAgIF9QeV9ibG9ja190eSBzdGVfdHlwZTsgICAvKiBtb2R1bGUsIGNsYXNzLCBvciBmdW5jdGlvbiAqLwogICAgIGludCBzdGVfdW5vcHRpbWl6ZWQ7ICAgICAvKiBmYWxzZSBpZiBuYW1lc3BhY2UgaXMgb3B0aW1pemVkICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3RpbWVmdW5jcy5oIGIvSW5jbHVkZS90aW1lZnVuY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0MzU3NS4uMDAwMDAwMAotLS0gYS9JbmNsdWRlL3RpbWVmdW5jcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyogIHRpbWVmdW5jcy5oCi0gKi8KLQotLyogVXRpbGl0eSBmdW5jdGlvbiByZWxhdGVkIHRvIHRpbWVtb2R1bGUuYy4gKi8KLQotI2lmbmRlZiBUSU1FRlVOQ1NfSAotI2RlZmluZSBUSU1FRlVOQ1NfSAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0KLS8qIENhc3QgZG91YmxlIHggdG8gdGltZV90LCBidXQgcmFpc2UgVmFsdWVFcnJvciBpZiB4IGlzIHRvbyBsYXJnZQotICogdG8gZml0IGluIGEgdGltZV90LiAgVmFsdWVFcnJvciBpcyBzZXQgb24gcmV0dXJuIGlmZiB0aGUgcmV0dXJuCi0gKiB2YWx1ZSBpcyAodGltZV90KS0xIGFuZCBQeUVycl9PY2N1cnJlZCgpLgotICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHRpbWVfdCkgX1B5VGltZV9Eb3VibGVUb1RpbWV0KGRvdWJsZSB4KTsKLSNlbmRpZgotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYgIC8qIFRJTUVGVU5DU19IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3RyYWNlYmFjay5oIGIvSW5jbHVkZS90cmFjZWJhY2suaAppbmRleCA2OWUzZDA1Li43NzM0NzA3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3RyYWNlYmFjay5oCisrKyBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaW5jbHVkZSAicHlzdGF0ZS5oIgorCiBzdHJ1Y3QgX2ZyYW1lOwogCiAvKiBUcmFjZWJhY2sgaW50ZXJmYWNlICovCkBAIC0yOCw2ICszMCw0MiBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VHJhY2VCYWNrX1R5cGU7CiAjZGVmaW5lIFB5VHJhY2VCYWNrX0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZQeVRyYWNlQmFja19UeXBlKQogCisvKiBXcml0ZSB0aGUgUHl0aG9uIHRyYWNlYmFjayBpbnRvIHRoZSBmaWxlICdmZCcuIEZvciBleGFtcGxlOgorCisgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgICAgIEZpbGUgInh4eCIsIGxpbmUgeHh4IGluIDx4eHg+CisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorICAgICAgICAgLi4uCisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seSwgdG8gZHVtcCB0aGUgdHJhY2ViYWNrIGluCisgICB0aGUgd29yc3QgY2FzZTogYWZ0ZXIgYSBzZWdtZW50YXRpb24gZmF1bHQsIGF0IGZhdGFsIGVycm9yLCBldGMuIFRoYXQncyB3aHksCisgICBpdCBpcyB2ZXJ5IGxpbWl0ZWQuIFN0cmluZ3MgYXJlIHRydW5jYXRlZCB0byAxMDAgY2hhcmFjdGVycyBhbmQgZW5jb2RlZCB0bworICAgQVNDSUkgd2l0aCBiYWNrc2xhc2hyZXBsYWNlLiBJdCBkb2Vzbid0IHdyaXRlIHRoZSBzb3VyY2UgY29kZSwgb25seSB0aGUKKyAgIGZ1bmN0aW9uIG5hbWUsIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBlYWNoIGZyYW1lLiBXcml0ZSBvbmx5IHRoZSBmaXJzdAorICAgMTAwIGZyYW1lczogaWYgdGhlIHRyYWNlYmFjayBpcyB0cnVuY2F0ZWQsIHdyaXRlIHRoZSBsaW5lICIgLi4uIi4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworUHlBUElfREFUQSh2b2lkKSBfUHlfRHVtcFRyYWNlYmFjaygKKyAgICBpbnQgZmQsCisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKworLyogV3JpdGUgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpbnRvIHRoZSBmaWxlICdmZCcuIGN1cnJlbnRfdGhyZWFkIGNhbiBiZQorICAgTlVMTC4gUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KKworICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkuIEl0IGNhbGxzCisgICBfUHlfRHVtcFRyYWNlYmFjaygpIGZvciBlYWNoIHRocmVhZCwgYW5kIHNvIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9ucy4gSXQKKyAgIG9ubHkgd3JpdGUgdGhlIHRyYWNlYmFjayBvZiB0aGUgZmlyc3QgMTAwIHRocmVhZHM6IHdyaXRlICIuLi4iIGlmIHRoZXJlIGFyZQorICAgbW9yZSB0aHJlYWRzLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitQeUFQSV9EQVRBKGNvbnN0IGNoYXIqKSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoCisgICAgaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCk7CisKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHVwbGVvYmplY3QuaCBiL0luY2x1ZGUvdHVwbGVvYmplY3QuaAppbmRleCBmMTdiNzg4Li5jMjczY2U3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3R1cGxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS90dXBsZW9iamVjdC5oCkBAIC02Myw2ICs2Myw5IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS91Y25oYXNoLmggYi9JbmNsdWRlL3Vjbmhhc2guaAppbmRleCA3MGZkZjEzLi44ZGU5YmEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3Vjbmhhc2guaAorKysgYi9JbmNsdWRlL3Vjbmhhc2guaApAQCAtMTksMTEgKzE5LDEzIEBACiAgICAgICAgc3VjY2VzcywgemVybyBpZiBub3QuICBEb2VzIG5vdCBzZXQgUHl0aG9uIGV4Y2VwdGlvbnMuIAogICAgICAgIElmIHNlbGYgaXMgTlVMTCwgZGF0YSBjb21lIGZyb20gdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UuCiAgICAgICAgSWYgaXQgaXMgbm90IE5VTEwsIGl0IHNob3VsZCBiZSBhIHVuaWNvZGVkYXRhLnVjZF9YX1lfWiBvYmplY3QgKi8KLSAgICBpbnQgKCpnZXRuYW1lKShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4pOworICAgIGludCAoKmdldG5hbWUpKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgd2l0aF9hbGlhc19hbmRfc2VxKTsKIAogICAgIC8qIEdldCBjaGFyYWN0ZXIgY29kZSBmb3IgYSBnaXZlbiBuYW1lLiAgU2FtZSBlcnJvciBoYW5kbGluZwogICAgICAgIGFzIGZvciBnZXRuYW1lLiAqLwotICAgIGludCAoKmdldGNvZGUpKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSk7CisgICAgaW50ICgqZ2V0Y29kZSkoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIGludCBuYW1lbGVuLCBQeV9VQ1M0KiBjb2RlLAorICAgICAgICAgICAgICAgICAgIGludCB3aXRoX25hbWVkX3NlcSk7CiAKIH0gX1B5VW5pY29kZV9OYW1lX0NBUEk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggMzc5YTkwYy4uYThmNWI1ZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTY0LDE2ICs2NCwxNSBAQAogLyogUHl0aG9uIDMueCByZXF1aXJlcyB1bmljb2RlICovCiAjZGVmaW5lIFB5X1VTSU5HX1VOSUNPREUKIAotLyogRklYTUU6IE12TCdzIG5ldyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgUHlfVU5JQ09ERV9TSVpFIGlzCi0gICBwcm9wZXJseSBzZXQsIGJ1dCB0aGUgZGVmYXVsdCBydWxlcyBiZWxvdyBkb2Vzbid0IHNldCBpdC4gIEknbGwKLSAgIHNvcnQgdGhpcyBvdXQgc29tZSBvdGhlciBkYXkgLS0gZnJlZHJpa0BweXRob253YXJlLmNvbSAqLwotCi0jaWZuZGVmIFB5X1VOSUNPREVfU0laRQotI2Vycm9yIE11c3QgZGVmaW5lIFB5X1VOSUNPREVfU0laRQorI2lmbmRlZiBTSVpFT0ZfV0NIQVJfVAorI2Vycm9yIE11c3QgZGVmaW5lIFNJWkVPRl9XQ0hBUl9UCiAjZW5kaWYKIAotLyogU2V0dGluZyBQeV9VTklDT0RFX1dJREUgZW5hYmxlcyBVQ1MtNCBzdG9yYWdlLiAgT3RoZXJ3aXNlLCBVbmljb2RlCi0gICBzdHJpbmdzIGFyZSBzdG9yZWQgYXMgVUNTLTIgKHdpdGggbGltaXRlZCBzdXBwb3J0IGZvciBVVEYtMTYpICovCisjZGVmaW5lIFB5X1VOSUNPREVfU0laRSBTSVpFT0ZfV0NIQVJfVAorCisvKiBJZiB3Y2hhcl90IGNhbiBiZSB1c2VkIGZvciBVQ1MtNCBzdG9yYWdlLCBzZXQgUHlfVU5JQ09ERV9XSURFLgorICAgT3RoZXJ3aXNlLCBVbmljb2RlIHN0cmluZ3MgYXJlIHN0b3JlZCBhcyBVQ1MtMiAod2l0aCBsaW1pdGVkIHN1cHBvcnQKKyAgIGZvciBVVEYtMTYpICovCiAKICNpZiBQeV9VTklDT0RFX1NJWkUgPj0gNAogI2RlZmluZSBQeV9VTklDT0RFX1dJREUKQEAgLTg0LDE5ICs4MywxNCBAQAogLyogI2RlZmluZSBIQVZFX1dDSEFSX0ggKi8KIC8qICNkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVCAqLwogCi0vKiBEZWZhdWx0cyBmb3IgdmFyaW91cyBwbGF0Zm9ybXMgKi8KLSNpZm5kZWYgUFlfVU5JQ09ERV9UWVBFCisvKiBQeV9VTklDT0RFIHdhcyB0aGUgbmF0aXZlIFVuaWNvZGUgc3RvcmFnZSBmb3JtYXQgKGNvZGUgdW5pdCkgdXNlZCBieQorICAgUHl0aG9uIGFuZCByZXByZXNlbnRzIGEgc2luZ2xlIFVuaWNvZGUgZWxlbWVudCBpbiB0aGUgVW5pY29kZSB0eXBlLgorICAgV2l0aCBQRVAgMzkzLCBQeV9VTklDT0RFIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIHdpdGggYQorICAgdHlwZWRlZiB0byB3Y2hhcl90LiAqLwogCi0vKiBXaW5kb3dzIGhhcyBhIHVzYWJsZSB3Y2hhcl90IHR5cGUgKHVubGVzcyB3ZSdyZSB1c2luZyBVQ1MtNCkgKi8KLSMgaWYgZGVmaW5lZChNU19XSU4zMikgJiYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSMgIGRlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UCi0jICBkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHdjaGFyX3QKLSMgZW5kaWYKLQotIyBpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkKLSMgIGRlZmluZSBQWV9VTklDT0RFX1RZUEUgUHlfVUNTNAotIyBlbmRpZgotCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90Cit0eXBlZGVmIHdjaGFyX3QgUHlfVU5JQ09ERTsKICNlbmRpZgogCiAvKiBJZiB0aGUgY29tcGlsZXIgcHJvdmlkZXMgYSB3Y2hhcl90IHR5cGUgd2UgdHJ5IHRvIHN1cHBvcnQgaXQKQEAgLTEwOSw2ICsxMDMsMTAgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorIyAgZGVmaW5lIEhBVkVfTUJDUworI2VuZGlmCisKICNpZmRlZiBIQVZFX1dDSEFSX0gKIC8qIFdvcmsgYXJvdW5kIGEgY29zbWV0aWMgYnVnIGluIEJTREkgNC54IHdjaGFyLmg7IHRoYW5rcyB0byBUaG9tYXMgV291dGVycyAqLwogIyBpZmRlZiBfSEFWRV9CU0RJCkBAIC0xMTcsMjAxICsxMTUsMjQgQEAKICMgIGluY2x1ZGUgPHdjaGFyLmg+CiAjZW5kaWYKIAotLyoKLSAqIFVzZSB0aGlzIHR5cGVkZWYgd2hlbiB5b3UgbmVlZCB0byByZXByZXNlbnQgYSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKLSAqIGFzIHNpbmdsZSB1bnNpZ25lZCBpbnRlZ2VyLgotICovCi0jaWYgU0laRU9GX0lOVCA+PSA0CisvKiBQeV9VQ1M0IGFuZCBQeV9VQ1MyIGFyZSB0eXBlZGVmcyBmb3IgdGhlIHJlc3BlY3RpdmUKKyAgIHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLiAqLworI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgUHlfVUNTNDsKLSNlbGlmIFNJWkVPRl9MT05HID49IDQKKyNlbGlmIFNJWkVPRl9MT05HID09IDQKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQeV9VQ1M0OwotI2VuZGlmCi0KLS8qIFB5X1VOSUNPREUgaXMgdGhlIG5hdGl2ZSBVbmljb2RlIHN0b3JhZ2UgZm9ybWF0IChjb2RlIHVuaXQpIHVzZWQgYnkKLSAgIFB5dGhvbiBhbmQgcmVwcmVzZW50cyBhIHNpbmdsZSBVbmljb2RlIGVsZW1lbnQgaW4gdGhlIFVuaWNvZGUKLSAgIHR5cGUuICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLXR5cGVkZWYgUFlfVU5JQ09ERV9UWVBFIFB5X1VOSUNPREU7Ci0jZW5kaWYKLQotLyogLS0tIFVDUy0yL1VDUy00IE5hbWUgTWFuZ2xpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIFVuaWNvZGUgQVBJIG5hbWVzIGFyZSBtYW5nbGVkIHRvIGFzc3VyZSB0aGF0IFVDUy0yIGFuZCBVQ1MtNCBidWlsZHMKLSAgIHByb2R1Y2UgZGlmZmVyZW50IGV4dGVybmFsIG5hbWVzIGFuZCB0aHVzIGNhdXNlIGltcG9ydCBlcnJvcnMgaW4KLSAgIGNhc2UgUHl0aG9uIGludGVycHJldGVycyBhbmQgZXh0ZW5zaW9ucyB3aXRoIG1peGVkIGNvbXBpbGVkIGluCi0gICBVbmljb2RlIHdpZHRoIGFzc3VtcHRpb25zIGFyZSBjb21iaW5lZC4gKi8KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLQotIyBkZWZpbmUgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0FTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNDaGFybWFwU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNMYXRpbjFTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhciBQeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhclN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QgUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZSBQeVVuaWNvZGVVQ1MyX0NvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzJfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NvbmNhdCBQeVVuaWNvZGVVQ1MyX0NvbmNhdAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZCBQeVVuaWNvZGVVQ1MyX0FwcGVuZAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZEFuZERlbCBQeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbnRhaW5zIFB5VW5pY29kZVVDUzJfQ29udGFpbnMKLSMgZGVmaW5lIFB5VW5pY29kZV9Db3VudCBQeVVuaWNvZGVVQ1MyX0NvdW50Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlIFB5VW5pY29kZVVDUzJfRGVjb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkgUHlVbmljb2RlVUNTMl9EZWNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xIFB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0IFB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSBQeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2IFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjggUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0RlY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGUgUHlVbmljb2RlVUNTMl9FbmNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVBU0NJSSBQeVVuaWNvZGVVQ1MyX0VuY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1MyX0VuY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsIFB5VW5pY29kZVVDUzJfRW5jb2RlRGVjaW1hbAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUxhdGluMSBQeVVuaWNvZGVVQ1MyX0VuY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9FbmNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMzIgUHlVbmljb2RlVUNTMl9FbmNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjE2IFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEY4IFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9FbmNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRmluZCBQeVVuaWNvZGVVQ1MyX0ZpbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gb3JtYXQgUHlVbmljb2RlVUNTMl9Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdCBQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0ViBQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXRWCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9iamVjdCBQeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCBQeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZyBQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSBQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUgUHlVbmljb2RlVUNTMl9Gcm9tVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBQeVVuaWNvZGVVQ1MyX0Zyb21XaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTQ29udmVydGVyIFB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0RlY29kZXIgUHlVbmljb2RlVUNTMl9GU0RlY29kZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcgUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRNYXggUHlVbmljb2RlVUNTMl9HZXRNYXgKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRTaXplIFB5VW5pY29kZVVDUzJfR2V0U2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0lzSWRlbnRpZmllciBQeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgotIyBkZWZpbmUgUHlVbmljb2RlX0pvaW4gUHlVbmljb2RlVUNTMl9Kb2luCi0jIGRlZmluZSBQeVVuaWNvZGVfUGFydGl0aW9uIFB5VW5pY29kZVVDUzJfUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlBhcnRpdGlvbiBQeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SU3BsaXQgUHlVbmljb2RlVUNTMl9SU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXBsYWNlIFB5VW5pY29kZVVDUzJfUmVwbGFjZQotIyBkZWZpbmUgUHlVbmljb2RlX1Jlc2l6ZSBQeVVuaWNvZGVVQ1MyX1Jlc2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX1JpY2hDb21wYXJlIFB5VW5pY29kZVVDUzJfUmljaENvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdCBQeVVuaWNvZGVVQ1MyX1NwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXRsaW5lcyBQeVVuaWNvZGVVQ1MyX1NwbGl0bGluZXMKLSMgZGVmaW5lIFB5VW5pY29kZV9UYWlsbWF0Y2ggUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2gKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGUgUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwIFB5VW5pY29kZVVDUzJfVHJhbnNsYXRlQ2hhcm1hcAotIyBkZWZpbmUgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIF9QeVVuaWNvZGVVQ1MyX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcKLSMgZGVmaW5lIF9QeVVuaWNvZGVfRmluaSBfUHlVbmljb2RlVUNTMl9GaW5pCi0jIGRlZmluZSBfUHlVbmljb2RlX0luaXQgX1B5VW5pY29kZVVDUzJfSW5pdAotIyBkZWZpbmUgUHlVbmljb2RlX3N0cmR1cCBQeVVuaWNvZGVVQ1MyX3N0cmR1cAotCiAjZWxzZQotCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0NoYXJtYXBTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QgUHlVbmljb2RlVUNTNF9Bc0RlY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNEZWNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0xhdGluMVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjMyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzVVRGMTZTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjhTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc1VuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyIFB5VW5pY29kZVVDUzRfQXNXaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1dpZGVDaGFyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCBQeVVuaWNvZGVVQ1M0X0NsZWFyRnJlZWxpc3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlIFB5VW5pY29kZVVDUzRfQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTNF9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29uY2F0IFB5VW5pY29kZVVDUzRfQ29uY2F0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kIFB5VW5pY29kZVVDUzRfQXBwZW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsIFB5VW5pY29kZVVDUzRfQXBwZW5kQW5kRGVsCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29udGFpbnMgUHlVbmljb2RlVUNTNF9Db250YWlucwotIyBkZWZpbmUgUHlVbmljb2RlX0NvdW50IFB5VW5pY29kZVVDUzRfQ291bnQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGUgUHlVbmljb2RlVUNTNF9EZWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVBU0NJSSBQeVVuaWNvZGVVQ1M0X0RlY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1M0X0RlY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEgUHlVbmljb2RlVUNTNF9EZWNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQgUHlVbmljb2RlVUNTNF9EZWNvZGVGU0RlZmF1bHQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplIFB5VW5pY29kZVVDUzRfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzIgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYzMlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTYgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYxNlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOCBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEY4U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRGVjb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZSBQeVVuaWNvZGVVQ1M0X0VuY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUFTQ0lJIFB5VW5pY29kZVVDUzRfRW5jb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzRfRW5jb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZURlY2ltYWwgUHlVbmljb2RlVUNTNF9FbmNvZGVEZWNpbWFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xIFB5VW5pY29kZVVDUzRfRW5jb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0VuY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYzMiBQeVVuaWNvZGVVQ1M0X0VuY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMTYgUHlVbmljb2RlVUNTNF9FbmNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjggUHlVbmljb2RlVUNTNF9FbmNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0VuY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9GaW5kIFB5VW5pY29kZVVDUzRfRmluZAotIyBkZWZpbmUgUHlVbmljb2RlX0Zvcm1hdCBQeVVuaWNvZGVVQ1M0X0Zvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzRfRnJvbUVuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0IFB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXRWIFB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdFYKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT2JqZWN0IFB5VW5pY29kZVVDUzRfRnJvbU9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PcmRpbmFsIFB5VW5pY29kZVVDUzRfRnJvbU9yZGluYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nIFB5VW5pY29kZVVDUzRfRnJvbVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIFB5VW5pY29kZVVDUzRfRnJvbVN0cmluZ0FuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0Zyb21Vbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyIFB5VW5pY29kZVVDUzRfRnJvbVdpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgUHlVbmljb2RlVUNTNF9GU0NvbnZlcnRlcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTRGVjb2RlciBQeVVuaWNvZGVVQ1M0X0ZTRGVjb2RlcgotIyBkZWZpbmUgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyBQeVVuaWNvZGVVQ1M0X0dldERlZmF1bHRFbmNvZGluZwotIyBkZWZpbmUgUHlVbmljb2RlX0dldE1heCBQeVVuaWNvZGVVQ1M0X0dldE1heAotIyBkZWZpbmUgUHlVbmljb2RlX0dldFNpemUgUHlVbmljb2RlVUNTNF9HZXRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfSXNJZGVudGlmaWVyIFB5VW5pY29kZVVDUzRfSXNJZGVudGlmaWVyCi0jIGRlZmluZSBQeVVuaWNvZGVfSm9pbiBQeVVuaWNvZGVVQ1M0X0pvaW4KLSMgZGVmaW5lIFB5VW5pY29kZV9QYXJ0aXRpb24gUHlVbmljb2RlVUNTNF9QYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SUGFydGl0aW9uIFB5VW5pY29kZVVDUzRfUlBhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JTcGxpdCBQeVVuaWNvZGVVQ1M0X1JTcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1JlcGxhY2UgUHlVbmljb2RlVUNTNF9SZXBsYWNlCi0jIGRlZmluZSBQeVVuaWNvZGVfUmVzaXplIFB5VW5pY29kZVVDUzRfUmVzaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfUmljaENvbXBhcmUgUHlVbmljb2RlVUNTNF9SaWNoQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0IFB5VW5pY29kZVVDUzRfU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdGxpbmVzIFB5VW5pY29kZVVDUzRfU3BsaXRsaW5lcwotIyBkZWZpbmUgUHlVbmljb2RlX1RhaWxtYXRjaCBQeVVuaWNvZGVVQ1M0X1RhaWxtYXRjaAotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZSBQeVVuaWNvZGVVQ1M0X1RyYW5zbGF0ZQotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAgUHlVbmljb2RlVUNTNF9UcmFuc2xhdGVDaGFybWFwCi0jIGRlZmluZSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcgX1B5VW5pY29kZVVDUzRfQXNEZWZhdWx0RW5jb2RlZFN0cmluZwotIyBkZWZpbmUgX1B5VW5pY29kZV9GaW5pIF9QeVVuaWNvZGVVQ1M0X0ZpbmkKLSMgZGVmaW5lIF9QeVVuaWNvZGVfSW5pdCBfUHlVbmljb2RlVUNTNF9Jbml0Ci0jIGRlZmluZSBQeVVuaWNvZGVfc3RyZHVwIFB5VW5pY29kZVVDUzRfc3RyZHVwCi0KKyNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTNCIKICNlbmRpZgogCisjaWYgU0laRU9GX1NIT1JUID09IDIKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVUNTMjsKKyNlbHNlCisjZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzIiCisjZW5kaWYKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFB5X1VDUzE7CisKIC8qIC0tLSBJbnRlcm5hbCBVbmljb2RlIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBTaW5jZSBzcGxpdHRpbmcgb24gd2hpdGVzcGFjZSBpcyBhbiBpbXBvcnRhbnQgdXNlIGNhc2UsIGFuZApAQCAtMzUwLDcgKzE3MSw3IEBACiAgICAgUHlfVU5JQ09ERV9JU0RJR0lUKGNoKSB8fCBcCiAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoY2gpKQogCi0jZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBcCiAgICAgUHlfTUVNQ1BZKCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfRklMTCh0YXJnZXQsIHZhbHVlLCBsZW5ndGgpIFwKQEAgLTM1OCwxMyArMTc5LDI3IEBACiAgICAgZm9yIChpXyA9IDA7IGlfIDwgKGxlbmd0aCk7IGlfKyspIHRfW2lfXSA9IHZfO1wKICAgICB9IHdoaWxlICgwKQogCisvKiBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXMgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQorI2RlZmluZSBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikKKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKSAoMHhEQzAwIDw9IGNoICYmIGNoIDw9IDB4REZGRikKKy8qIEpvaW4gdHdvIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCByZXR1cm4gYSBzaW5nbGUgUHlfVUNTNCB2YWx1ZS4gKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KSAgXAorICAgICgoKCgoUHlfVUNTNCkoaGlnaCkgJiAweDAzRkYpIDw8IDEwKSB8ICAgICAgXAorICAgICAgKChQeV9VQ1M0KShsb3cpICYgMHgwM0ZGKSkgKyAweDEwMDAwKQorLyogaGlnaCBzdXJyb2dhdGUgPSB0b3AgMTAgYml0cyBhZGRlZCB0byBEODAwICovCisjZGVmaW5lIFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpICgweEQ4MDAgLSAoMHgxMDAwMCA+PiAxMCkgKyAoKGNoKSA+PiAxMCkpCisvKiBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLworI2RlZmluZSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgKyAoKGNoKSAmIDB4M0ZGKSkKKwogLyogQ2hlY2sgaWYgc3Vic3RyaW5nIG1hdGNoZXMgYXQgZ2l2ZW4gb2Zmc2V0LiAgVGhlIG9mZnNldCBtdXN0IGJlCiAgICB2YWxpZCwgYW5kIHRoZSBzdWJzdHJpbmcgbXVzdCBub3QgYmUgZW1wdHkuICovCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9NQVRDSChzdHJpbmcsIG9mZnNldCwgc3Vic3RyaW5nKSBcCi0gICAgKCgqKChzdHJpbmcpLT5zdHIgKyAob2Zmc2V0KSkgPT0gKigoc3Vic3RyaW5nKS0+c3RyKSkgJiYgXAotICAgICgoKigoc3RyaW5nKS0+c3RyICsgKG9mZnNldCkgKyAoc3Vic3RyaW5nKS0+bGVuZ3RoLTEpID09ICooKHN1YnN0cmluZyktPnN0ciArIChzdWJzdHJpbmcpLT5sZW5ndGgtMSkpKSAmJiBcCi0gICAgICFtZW1jbXAoKHN0cmluZyktPnN0ciArIChvZmZzZXQpLCAoc3Vic3RyaW5nKS0+c3RyLCAoc3Vic3RyaW5nKS0+bGVuZ3RoKnNpemVvZihQeV9VTklDT0RFKSkpCisgICAgKCgqKChzdHJpbmcpLT53c3RyICsgKG9mZnNldCkpID09ICooKHN1YnN0cmluZyktPndzdHIpKSAmJiBcCisgICAgICgoKigoc3RyaW5nKS0+d3N0ciArIChvZmZzZXQpICsgKHN1YnN0cmluZyktPndzdHJfbGVuZ3RoLTEpID09ICooKHN1YnN0cmluZyktPndzdHIgKyAoc3Vic3RyaW5nKS0+d3N0cl9sZW5ndGgtMSkpKSAmJiBcCisgICAgICFtZW1jbXAoKHN0cmluZyktPndzdHIgKyAob2Zmc2V0KSwgKHN1YnN0cmluZyktPndzdHIsIChzdWJzdHJpbmcpLT53c3RyX2xlbmd0aCpzaXplb2YoUHlfVU5JQ09ERSkpKQorCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zNzQsNDEgKzIwOSwzNzQgQEAKIC8qIC0tLSBVbmljb2RlIFR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKKy8qIEFTQ0lJLW9ubHkgc3RyaW5ncyBjcmVhdGVkIHRocm91Z2ggUHlVbmljb2RlX05ldyB1c2UgdGhlIFB5QVNDSUlPYmplY3QKKyAgIHN0cnVjdHVyZS4gc3RhdGUuYXNjaWkgYW5kIHN0YXRlLmNvbXBhY3QgYXJlIHNldCwgYW5kIHRoZSBkYXRhCisgICBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIHN0cnVjdHVyZS4gdXRmOF9sZW5ndGggYW5kIHdzdHJfbGVuZ3RoIGNhbiBiZSBmb3VuZAorICAgaW4gdGhlIGxlbmd0aCBmaWVsZDsgdGhlIHV0ZjggcG9pbnRlciBpcyBlcXVhbCB0byB0aGUgZGF0YSBwb2ludGVyLiAqLwogdHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIFRoZXJlIGFyZSA0IGZvcm1zIG9mIFVuaWNvZGUgc3RyaW5nczoKKworICAgICAgIC0gY29tcGFjdCBhc2NpaToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeUFTQ0lJT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDEKKyAgICAgICAgICogYXNjaWkgPSAxCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiAobGVuZ3RoIGlzIHRoZSBsZW5ndGggb2YgdGhlIHV0ZjggYW5kIHdzdHIgc3RyaW5ncykKKyAgICAgICAgICogKGRhdGEgc3RhcnRzIGp1c3QgYWZ0ZXIgdGhlIHN0cnVjdHVyZSkKKyAgICAgICAgICogKHNpbmNlIEFTQ0lJIGlzIGRlY29kZWQgZnJvbSBVVEYtOCwgdGhlIHV0Zjggc3RyaW5nIGFyZSB0aGUgZGF0YSkKKworICAgICAgIC0gY29tcGFjdDoKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeUNvbXBhY3RVbmljb2RlT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKG9wKQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQsIFB5VW5pY29kZV8yQllURV9LSU5EIG9yCisgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAxCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiBhc2NpaSA9IDAKKyAgICAgICAgICogdXRmOCBpcyBub3Qgc2hhcmVkIHdpdGggZGF0YQorICAgICAgICAgKiB1dGY4X2xlbmd0aCA9IDAgaWYgdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHdzdHIgaXMgc2hhcmVkIHdpdGggZGF0YSBhbmQgd3N0cl9sZW5ndGg9bGVuZ3RoCisgICAgICAgICAgIGlmIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT0yCisgICAgICAgICAgIG9yIGlmIGtpbmQ9UHlVbmljb2RlXzRCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT00CisgICAgICAgICAqIHdzdHJfbGVuZ3RoID0gMCBpZiB3c3RyIGlzIE5VTEwKKyAgICAgICAgICogKGRhdGEgc3RhcnRzIGp1c3QgYWZ0ZXIgdGhlIHN0cnVjdHVyZSkKKworICAgICAgIC0gbGVnYWN5IHN0cmluZywgbm90IHJlYWR5OgorCisgICAgICAgICAqIHN0cnVjdHVyZSA9IFB5VW5pY29kZU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAqIGxlbmd0aCA9IDAgKHVzZSB3c3RyX2xlbmd0aCkKKyAgICAgICAgICogaGFzaCA9IC0xCisgICAgICAgICAqIGtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMAorICAgICAgICAgKiBhc2NpaSA9IDAKKyAgICAgICAgICogcmVhZHkgPSAwCisgICAgICAgICAqIGludGVybmVkID0gU1NUQVRFX05PVF9JTlRFUk5FRAorICAgICAgICAgKiB3c3RyIGlzIG5vdCBOVUxMCisgICAgICAgICAqIGRhdGEuYW55IGlzIE5VTEwKKyAgICAgICAgICogdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHV0ZjhfbGVuZ3RoID0gMAorCisgICAgICAgLSBsZWdhY3kgc3RyaW5nLCByZWFkeToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeVVuaWNvZGVPYmplY3Qgc3RydWN0dXJlCisgICAgICAgICAqIHRlc3Q6ICFQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgJiYga2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQsIFB5VW5pY29kZV8yQllURV9LSU5EIG9yCisgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAwCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiBkYXRhLmFueSBpcyBub3QgTlVMTAorICAgICAgICAgKiB1dGY4IGlzIHNoYXJlZCBhbmQgdXRmOF9sZW5ndGggPSBsZW5ndGggd2l0aCBkYXRhLmFueSBpZiBhc2NpaSA9IDEKKyAgICAgICAgICogdXRmOF9sZW5ndGggPSAwIGlmIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB3c3RyIGlzIHNoYXJlZCB3aXRoIGRhdGEuYW55IGFuZCB3c3RyX2xlbmd0aCA9IGxlbmd0aAorICAgICAgICAgICBpZiBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9MgorICAgICAgICAgICBvciBpZiBraW5kPVB5VW5pY29kZV80QllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfNCk9NAorICAgICAgICAgKiB3c3RyX2xlbmd0aCA9IDAgaWYgd3N0ciBpcyBOVUxMCisKKyAgICAgICBDb21wYWN0IHN0cmluZ3MgdXNlIG9ubHkgb25lIG1lbW9yeSBibG9jayAoc3RydWN0dXJlICsgY2hhcmFjdGVycyksCisgICAgICAgd2hlcmVhcyBsZWdhY3kgc3RyaW5ncyB1c2Ugb25lIGJsb2NrIGZvciB0aGUgc3RydWN0dXJlIGFuZCBvbmUgYmxvY2sKKyAgICAgICBmb3IgY2hhcmFjdGVycy4KKworICAgICAgIExlZ2FjeSBzdHJpbmdzIGFyZSBjcmVhdGVkIGJ5IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgpIGFuZAorICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKSBmdW5jdGlvbnMuIFRoZXkgYmVjb21lIHJlYWR5CisgICAgICAgd2hlbiBQeVVuaWNvZGVfUkVBRFkoKSBpcyBjYWxsZWQuCisKKyAgICAgICBTZWUgYWxzbyBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKS4KKyAgICAqLwogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IGxlbmd0aDsgICAgICAgICAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgUHlfVU5JQ09ERSAqc3RyOyAgICAgICAgICAgIC8qIFJhdyBVbmljb2RlIGJ1ZmZlciAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgICAgICAgICAvKiBOdW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIHN0cmluZyAqLwogICAgIFB5X2hhc2hfdCBoYXNoOyAgICAgICAgICAgICAvKiBIYXNoIHZhbHVlOyAtMSBpZiBub3Qgc2V0ICovCi0gICAgaW50IHN0YXRlOyAgICAgICAgICAgICAgICAgIC8qICE9IDAgaWYgaW50ZXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgdHdvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlZmVyZW5jZXMgZnJvbSB0aGUgZGljdGlvbmFyeSB0byB0aGlzIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhcmUgKm5vdCogY291bnRlZCBpbiBvYl9yZWZjbnQuICovCi0gICAgUHlPYmplY3QgKmRlZmVuYzsgICAgICAgICAgIC8qIChEZWZhdWx0KSBFbmNvZGVkIHZlcnNpb24gYXMgUHl0aG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgb3IgTlVMTDsgdGhpcyBpcyB1c2VkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRpbmcgdGhlIGJ1ZmZlciBwcm90b2NvbCAqLworICAgIHN0cnVjdCB7CisgICAgICAgIC8qCisgICAgICAgICAgIFNTVEFURV9OT1RfSU5URVJORUQgKDApCisgICAgICAgICAgIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgKDEpCisgICAgICAgICAgIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAoMikKKworICAgICAgICAgICBJZiBpbnRlcm5lZCAhPSBTU1RBVEVfTk9UX0lOVEVSTkVELCB0aGUgdHdvIHJlZmVyZW5jZXMgZnJvbSB0aGUKKyAgICAgICAgICAgZGljdGlvbmFyeSB0byB0aGlzIG9iamVjdCBhcmUgKm5vdCogY291bnRlZCBpbiBvYl9yZWZjbnQuCisgICAgICAgICAqLworICAgICAgICB1bnNpZ25lZCBpbnQgaW50ZXJuZWQ6MjsKKyAgICAgICAgLyogQ2hhcmFjdGVyIHNpemU6CisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfV0NIQVJfS0lORCAoMCk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gd2NoYXJfdCAoMTYgb3IgMzIgYml0cywgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgICAgICAgICAgcGxhdGZvcm0pCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfMUJZVEVfS0lORCAoMSk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTMSAoOCBiaXRzLCB1bnNpZ25lZCkKKyAgICAgICAgICAgICAqIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDBGRiAobGF0aW4xKQorICAgICAgICAgICAgICogaWYgYXNjaWkgaXMgc2V0LCBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzAwN0YKKyAgICAgICAgICAgICAgIChBU0NJSSksIG90aGVyd2lzZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZQorICAgICAgICAgICAgICAgVSswMDgwLVUrMDBGRgorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzJCWVRFX0tJTkQgKDIpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzIgKDE2IGJpdHMsIHVuc2lnbmVkKQorICAgICAgICAgICAgICogYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVStGRkZGIChCTVApCisgICAgICAgICAgICAgKiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZSBVKzAxMDAtVStGRkZGCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfNEJZVEVfS0lORCAoNCk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTNCAoMzIgYml0cywgdW5zaWduZWQpCisgICAgICAgICAgICAgKiBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzEwRkZGRgorICAgICAgICAgICAgICogYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UgVSsxMDAwMC1VKzEwRkZGRgorICAgICAgICAgKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQ6MzsKKyAgICAgICAgLyogQ29tcGFjdCBpcyB3aXRoIHJlc3BlY3QgdG8gdGhlIGFsbG9jYXRpb24gc2NoZW1lLiBDb21wYWN0IHVuaWNvZGUKKyAgICAgICAgICAgb2JqZWN0cyBvbmx5IHJlcXVpcmUgb25lIG1lbW9yeSBibG9jayB3aGlsZSBub24tY29tcGFjdCBvYmplY3RzIHVzZQorICAgICAgICAgICBvbmUgYmxvY2sgZm9yIHRoZSBQeVVuaWNvZGVPYmplY3Qgc3RydWN0IGFuZCBhbm90aGVyIGZvciBpdHMgZGF0YQorICAgICAgICAgICBidWZmZXIuICovCisgICAgICAgIHVuc2lnbmVkIGludCBjb21wYWN0OjE7CisgICAgICAgIC8qIFRoZSBzdHJpbmcgb25seSBjb250YWlucyBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMDdGIChBU0NJSSkKKyAgICAgICAgICAgYW5kIHRoZSBraW5kIGlzIFB5VW5pY29kZV8xQllURV9LSU5ELiBJZiBhc2NpaSBpcyBzZXQgYW5kIGNvbXBhY3QgaXMKKyAgICAgICAgICAgc2V0LCB1c2UgdGhlIFB5QVNDSUlPYmplY3Qgc3RydWN0dXJlLiAqLworICAgICAgICB1bnNpZ25lZCBpbnQgYXNjaWk6MTsKKyAgICAgICAgLyogVGhlIHJlYWR5IGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBsYXlvdXQgaXMgaW5pdGlhbGl6ZWQKKyAgICAgICAgICAgY29tcGxldGVseS4gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgZWl0aGVyIGEgY29tcGFjdCBvYmplY3QsIG9yCisgICAgICAgICAgIHRoZSBkYXRhIHBvaW50ZXIgaXMgZmlsbGVkIG91dC4gVGhlIGJpdCBpcyByZWR1bmRhbnQsIGFuZCBoZWxwcworICAgICAgICAgICB0byBtaW5pbWl6ZSB0aGUgdGVzdCBpbiBQeVVuaWNvZGVfSVNfUkVBRFkoKS4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IHJlYWR5OjE7CisgICAgfSBzdGF0ZTsKKyAgICB3Y2hhcl90ICp3c3RyOyAgICAgICAgICAgICAgLyogd2NoYXJfdCByZXByZXNlbnRhdGlvbiAobnVsbC10ZXJtaW5hdGVkKSAqLworfSBQeUFTQ0lJT2JqZWN0OworCisvKiBOb24tQVNDSUkgc3RyaW5ncyBhbGxvY2F0ZWQgdGhyb3VnaCBQeVVuaWNvZGVfTmV3IHVzZSB0aGUKKyAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3Qgc3RydWN0dXJlLiBzdGF0ZS5jb21wYWN0IGlzIHNldCwgYW5kIHRoZSBkYXRhCisgICBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIHN0cnVjdHVyZS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeUFTQ0lJT2JqZWN0IF9iYXNlOworICAgIFB5X3NzaXplX3QgdXRmOF9sZW5ndGg7ICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgaW4gdXRmOCwgZXhjbHVkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0ZXJtaW5hdGluZyBcMC4gKi8KKyAgICBjaGFyICp1dGY4OyAgICAgICAgICAgICAgICAgLyogVVRGLTggcmVwcmVzZW50YXRpb24gKG51bGwtdGVybWluYXRlZCkgKi8KKyAgICBQeV9zc2l6ZV90IHdzdHJfbGVuZ3RoOyAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHdzdHIsIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1cnJvZ2F0ZXMgY291bnQgYXMgdHdvIGNvZGUgcG9pbnRzLiAqLworfSBQeUNvbXBhY3RVbmljb2RlT2JqZWN0OworCisvKiBTdHJpbmdzIGFsbG9jYXRlZCB0aHJvdWdoIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBsZW4pIHVzZSB0aGUKKyAgIFB5VW5pY29kZU9iamVjdCBzdHJ1Y3R1cmUuIFRoZSBhY3R1YWwgc3RyaW5nIGRhdGEgaXMgaW5pdGlhbGx5IGluIHRoZSB3c3RyCisgICBibG9jaywgYW5kIGNvcGllZCBpbnRvIHRoZSBkYXRhIGJsb2NrIHVzaW5nIF9QeVVuaWNvZGVfUmVhZHkuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCBfYmFzZTsKKyAgICB1bmlvbiB7CisgICAgICAgIHZvaWQgKmFueTsKKyAgICAgICAgUHlfVUNTMSAqbGF0aW4xOworICAgICAgICBQeV9VQ1MyICp1Y3MyOworICAgICAgICBQeV9VQ1M0ICp1Y3M0OworICAgIH0gZGF0YTsgICAgICAgICAgICAgICAgICAgICAvKiBDYW5vbmljYWwsIHNtYWxsZXN0LWZvcm0gVW5pY29kZSBidWZmZXIgKi8KIH0gUHlVbmljb2RlT2JqZWN0OwogI2VuZGlmCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVVuaWNvZGVfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVVuaWNvZGVJdGVyX1R5cGU7CiAKLSNkZWZpbmUgU1NUQVRFX05PVF9JTlRFUk5FRCAwCi0jZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgMQotI2RlZmluZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgMgotCiAjZGVmaW5lIFB5VW5pY29kZV9DaGVjayhvcCkgXAogICAgICAgICAgICAgICAgICBQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX1VOSUNPREVfU1VCQ0xBU1MpCiAjZGVmaW5lIFB5VW5pY29kZV9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5VW5pY29kZV9UeXBlKQogCiAvKiBGYXN0IGFjY2VzcyBtYWNyb3MgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlVbmljb2RlX0dFVF9TSVpFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+bGVuZ3RoKSkKKworI2RlZmluZSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApIFwKKyAgICAoUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCopb3ApLT5sZW5ndGggOiAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKW9wKS0+d3N0cl9sZW5ndGgpCisKKy8qIFJldHVybnMgdGhlIGRlcHJlY2F0ZWQgUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbidzIHNpemUgaW4gY29kZSB1bml0cworICAgKHRoaXMgaW5jbHVkZXMgc3Vycm9nYXRlIHBhaXJzIGFzIDIgdW5pdHMpLgorICAgSWYgdGhlIFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IGF2YWlsYWJsZSwgaXQgd2lsbCBiZSBjb21wdXRlZAorICAgb24gcmVxdWVzdC4gIFVzZSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgpIGZvciB0aGUgbGVuZ3RoIGluIGNvZGUgcG9pbnRzLiAqLworCisjZGVmaW5lIFB5VW5pY29kZV9HRVRfU0laRShvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpID8gICAgICAgICAgICAgICBcCisgICAgICBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApIDogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICgodm9pZClQeVVuaWNvZGVfQXNVbmljb2RlKChQeU9iamVjdCAqKShvcCkpLCAgXAorICAgICAgIGFzc2VydCgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0ciksICAgICAgICBcCisgICAgICAgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSkpCisKICNkZWZpbmUgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5sZW5ndGggKiBzaXplb2YoUHlfVU5JQ09ERSkpKQorICAgIChQeVVuaWNvZGVfR0VUX1NJWkUob3ApICogUHlfVU5JQ09ERV9TSVpFKQorCisvKiBBbGlhcyBmb3IgUHlVbmljb2RlX0FzVW5pY29kZSgpLiAgVGhpcyB3aWxsIGNyZWF0ZSBhIHdjaGFyX3QvUHlfVU5JQ09ERQorICAgcmVwcmVzZW50YXRpb24gb24gZGVtYW5kLiAgVXNpbmcgdGhpcyBtYWNybyBpcyB2ZXJ5IGluZWZmaWNpZW50IG5vdywKKyAgIHRyeSB0byBwb3J0IHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBQeVVuaWNvZGVfKkJZVEVfREFUQSgpIG1hY3JvcyBvcgorICAgdXNlIFB5VW5pY29kZV9XUklURSgpIGFuZCBQeVVuaWNvZGVfUkVBRCgpLiAqLworCiAjZGVmaW5lIFB5VW5pY29kZV9BU19VTklDT0RFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RyKSkKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0cikgPyAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpIDogXAorICAgICAgUHlVbmljb2RlX0FzVW5pY29kZSgoUHlPYmplY3QgKikob3ApKSkKKwogI2RlZmluZSBQeVVuaWNvZGVfQVNfREFUQShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKChjb25zdCBjaGFyICopKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RyKSkKKyAgICAoKGNvbnN0IGNoYXIgKikoUHlVbmljb2RlX0FTX1VOSUNPREUob3ApKSkKKworCisvKiAtLS0gRmxleGlibGUgU3RyaW5nIFJlcHJlc2VudGF0aW9uIEhlbHBlciBNYWNyb3MgKFBFUCAzOTMpIC0tLS0tLS0tLS0tLS0tICovCisKKy8qIFZhbHVlcyBmb3IgUHlBU0NJSU9iamVjdC5zdGF0ZTogKi8KKworLyogSW50ZXJuaW5nIHN0YXRlLiAqLworI2RlZmluZSBTU1RBVEVfTk9UX0lOVEVSTkVEIDAKKyNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX01PUlRBTCAxCisjZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAyCisKKy8qIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLCBvciAwIGlmIG5vdC4gVGhlCisgICBzdHJpbmcgbWF5IGJlIGNvbXBhY3QgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKSBvciBub3QsIGJ1dCBtdXN0IGJlCisgICByZWFkeS4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0KilvcCktPnN0YXRlLmFzY2lpKQorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGNvbXBhY3Qgb3IgMCBpZiBub3QuCisgICBObyB0eXBlIGNoZWNrcyBvciBSZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKShvcCkpLT5zdGF0ZS5jb21wYWN0KQorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgY29tcGFjdCBBU0NJSSBzdHJpbmcgKHVzZSBQeUFTQ0lJT2JqZWN0CisgICBzdHJ1Y3R1cmUpLCBvciAwIGlmIG5vdC4gIE5vIHR5cGUgY2hlY2tzIG9yIFJlYWR5IGNhbGxzIGFyZSBwZXJmb3JtZWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKW9wKS0+c3RhdGUuYXNjaWkgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApKQorCitlbnVtIFB5VW5pY29kZV9LaW5kIHsKKy8qIFN0cmluZyBjb250YWlucyBvbmx5IHdzdHIgYnl0ZSBjaGFyYWN0ZXJzLiAgVGhpcyBpcyBvbmx5IHBvc3NpYmxlCisgICB3aGVuIHRoZSBzdHJpbmcgd2FzIGNyZWF0ZWQgd2l0aCBhIGxlZ2FjeSBBUEkgYW5kIF9QeVVuaWNvZGVfUmVhZHkoKQorICAgaGFzIG5vdCBiZWVuIGNhbGxlZCB5ZXQuICAqLworICAgIFB5VW5pY29kZV9XQ0hBUl9LSU5EID0gMCwKKy8qIFJldHVybiB2YWx1ZXMgb2YgdGhlIFB5VW5pY29kZV9LSU5EKCkgbWFjcm86ICovCisgICAgUHlVbmljb2RlXzFCWVRFX0tJTkQgPSAxLAorICAgIFB5VW5pY29kZV8yQllURV9LSU5EID0gMiwKKyAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCA9IDQKK307CisKKy8qIFJldHVybiBwb2ludGVycyB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gdW5zaWduZWQgY2hhciwKKyAgIFB5X1VDUzIsIG9yIFB5X1VDUzQgZm9yIGRpcmVjdCBjaGFyYWN0ZXIgYWNjZXNzLgorICAgTm8gY2hlY2tzIGFyZSBwZXJmb3JtZWQsIHVzZSBQeVVuaWNvZGVfS0lORCgpIGJlZm9yZSB0byBlbnN1cmUKKyAgIHRoZXNlIHdpbGwgd29yayBjb3JyZWN0bHkuICovCisKKyNkZWZpbmUgUHlVbmljb2RlXzFCWVRFX0RBVEEob3ApICgoUHlfVUNTMSopUHlVbmljb2RlX0RBVEEob3ApKQorI2RlZmluZSBQeVVuaWNvZGVfMkJZVEVfREFUQShvcCkgKChQeV9VQ1MyKilQeVVuaWNvZGVfREFUQShvcCkpCisjZGVmaW5lIFB5VW5pY29kZV80QllURV9EQVRBKG9wKSAoKFB5X1VDUzQqKVB5VW5pY29kZV9EQVRBKG9wKSkKKworLyogUmV0dXJuIG9uZSBvZiB0aGUgUHlVbmljb2RlXypfS0lORCB2YWx1ZXMgZGVmaW5lZCBhYm92ZS4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0tJTkQob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZS5raW5kKQorCisvKiBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9DT01QQUNUX0RBVEEob3ApICAgICAgICAgICAgICAgICAgICAgXAorICAgIChQeVVuaWNvZGVfSVNfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAoKHZvaWQqKSgoUHlBU0NJSU9iamVjdCopKG9wKSArIDEpKSA6ICAgICAgICAgICAgICBcCisgICAgICgodm9pZCopKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApICsgMSkpKQorCisjZGVmaW5lIF9QeVVuaWNvZGVfTk9OQ09NUEFDVF9EQVRBKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KCgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpLCAgICAgICAgXAorICAgICAoKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPmRhdGEuYW55KSkpCisKKyNkZWZpbmUgUHlVbmljb2RlX0RBVEEob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSA/IF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKG9wKSA6ICAgXAorICAgICBfUHlVbmljb2RlX05PTkNPTVBBQ1RfREFUQShvcCkpCisKKy8qIEluIHRoZSBhY2Nlc3MgbWFjcm9zIGJlbG93LCAia2luZCIgbWF5IGJlIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KKyAgIEFsbCBvdGhlciBtYWNybyBwYXJhbWV0ZXJzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLCBzbyBpdCBpcyBzYWZlCisgICB0byBwdXQgc2lkZSBlZmZlY3RzIGludG8gdGhlbSAoc3VjaCBhcyBpbmNyZWFzaW5nIHRoZSBpbmRleCkuICovCisKKy8qIFdyaXRlIGludG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiwgdGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5CisgICBjaGVja3MgYW5kIGlzIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZQorICAga2luZCBhbmQgZGF0YSBwb2ludGVycyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLgorICAgaW5kZXggaXMgdGhlIGluZGV4IGluIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgdmFsdWUgaXMgdGhlIG5ldworICAgY29kZSBwb2ludCB2YWx1ZSB3aGljaCBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGF0IGxvY2F0aW9uLiAqLworI2RlZmluZSBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaW5kZXgsIHZhbHVlKSBcCisgICAgZG8geyBcCisgICAgICAgIHN3aXRjaCAoKGtpbmQpKSB7IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeyBcCisgICAgICAgICAgICAoKFB5X1VDUzEgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzEpKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgKChQeV9VQ1MyICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1MyKSh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiB7IFwKKyAgICAgICAgICAgIGFzc2VydCgoa2luZCkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOyBcCisgICAgICAgICAgICAoKFB5X1VDUzQgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzQpKHZhbHVlKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVhZCBhIGNvZGUgcG9pbnQgZnJvbSB0aGUgc3RyaW5nJ3MgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uLiAgTm8gY2hlY2tzCisgICBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCkgXAorICAgICgoUHlfVUNTNCkgXAorICAgICgoa2luZCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgPyBcCisgICAgICAgICgoY29uc3QgUHlfVUNTMSAqKShkYXRhKSlbKGluZGV4KV0gOiBcCisgICAgICAgICgoa2luZCkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzIgKikoZGF0YSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgKChjb25zdCBQeV9VQ1M0ICopKGRhdGEpKVsoaW5kZXgpXSBcCisgICAgICAgICkgXAorICAgICkpCisKKy8qIFB5VW5pY29kZV9SRUFEX0NIQVIoKSBpcyBsZXNzIGVmZmljaWVudCB0aGFuIFB5VW5pY29kZV9SRUFEKCkgYmVjYXVzZSBpdAorICAgY2FsbHMgUHlVbmljb2RlX0tJTkQoKSBhbmQgbWlnaHQgY2FsbCBpdCB0d2ljZS4gIEZvciBzaW5nbGUgcmVhZHMsIHVzZQorICAgUHlVbmljb2RlX1JFQURfQ0hBUiwgZm9yIG11bHRpcGxlIGNvbnNlY3V0aXZlIHJlYWRzIGNhbGxlcnMgc2hvdWxkCisgICBjYWNoZSBraW5kIGFuZCB1c2UgUHlVbmljb2RlX1JFQUQgaW5zdGVhZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbmRleCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSwgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKSwgICAgICAgXAorICAgICAoUHlfVUNTNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoUHlVbmljb2RlX0tJTkQoKHVuaWNvZGUpKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICgoY29uc3QgUHlfVUNTMSAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gOiBcCisgICAgICAgICAgICAoUHlVbmljb2RlX0tJTkQoKHVuaWNvZGUpKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzIgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgICAgICgoY29uc3QgUHlfVUNTNCAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gXAorICAgICAgICAgICAgKSBcCisgICAgICAgICkpCisKKy8qIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdW5pY29kZSBzdHJpbmcuIFRoZSBjYWxsZXIgaGFzIHRvIG1ha2Ugc3VyZSB0aGF0CisgICB0aGUgc3RyaW5nIGhhcyBpdCdzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBzZXQgYmVmb3JlIGNhbGxpbmcKKyAgIHRoaXMgbWFjcm8uICBDYWxsIFB5VW5pY29kZV8oRkFTVF8pUmVhZHkgdG8gZW5zdXJlIHRoYXQuICovCisjZGVmaW5lIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisKKworLyogRmFzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBvYmplY3QgaXMgcmVhZHkuIEVxdWl2YWxlbnQgdG8KKyAgIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSB8fCAoKFB5VW5pY29kZU9iamVjdCopKG9wKSktPmRhdGEuYW55KSAqLworCisjZGVmaW5lIFB5VW5pY29kZV9JU19SRUFEWShvcCkgKCgoUHlBU0NJSU9iamVjdCopb3ApLT5zdGF0ZS5yZWFkeSkKKworLyogUHlVbmljb2RlX1JFQURZKCkgZG9lcyBsZXNzIHdvcmsgdGhhbiBfUHlVbmljb2RlX1JlYWR5KCkgaW4gdGhlIGJlc3QKKyAgIGNhc2UuICBJZiB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGlzIG5vdCB5ZXQgc2V0LCBpdCB3aWxsIHN0aWxsIGNhbGwKKyAgIF9QeVVuaWNvZGVfUmVhZHkoKS4KKyAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCAtMSBvbiBlcnJvcnMuICovCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEWShvcCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFB5VW5pY29kZV9JU19SRUFEWShvcCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgMCA6IF9QeVVuaWNvZGVfUmVhZHkoKFB5T2JqZWN0ICopKG9wKSkpKQorCisvKiBSZXR1cm4gYSBtYXhpbXVtIGNoYXJhY3RlciB2YWx1ZSB3aGljaCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlcgorICAgc3RyaW5nIGJhc2VkIG9uIG9wLiAgVGhpcyBpcyBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQKKyAgIHRoYW4gaXRlcmF0aW5nIG92ZXIgdGhlIHN0cmluZy4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoMHg3ZikgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoUHlVbmljb2RlX0tJTkQob3ApID09IFB5VW5pY29kZV8xQllURV9LSU5EID8gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKDB4ZmZVKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKFB5VW5pY29kZV9LSU5EKG9wKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgweGZmZmZVKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgweDEwZmZmZlUpKSkpKQorCiAjZW5kaWYKIAogLyogLS0tIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC00MTgsMTIgKzU4NiwxMDcgQEAKICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrRkZGRCBpcyB0aGUgb2ZmaWNpYWwgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSIGluCiAgICBVbmljb2RlIDMuMC4gKi8KIAotI2RlZmluZSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUiAoKFB5X1VOSUNPREUpIDB4RkZGRCkKKyNkZWZpbmUgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIgKChQeV9VQ1M0KSAweEZGRkQpCiAKIC8qID09PSBQdWJsaWMgQVBJID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCiAvKiAtLS0gUGxhaW4gUHlfVU5JQ09ERSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogV2l0aCBQRVAgMzkzLCB0aGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gYWxsb2NhdGUgYSBuZXcgdW5pY29kZSBvYmplY3QuCisgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGUgdGhlIG9iamVjdCBhbmQgaXRzIGJ1ZmZlciBpbiBhIHNpbmdsZSBtZW1vcnkKKyAgIGJsb2NrLiAgT2JqZWN0cyBjcmVhdGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZXNpemFibGUuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX05ldygKKyAgICBQeV9zc2l6ZV90IHNpemUsICAgICAgICAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBuZXcgc3RyaW5nICovCisgICAgUHlfVUNTNCBtYXhjaGFyICAgICAgICAgICAgIC8qIG1heGltdW0gY29kZSBwb2ludCB2YWx1ZSBpbiB0aGUgc3RyaW5nICovCisgICAgKTsKKyNlbmRpZgorCisvKiBJbml0aWFsaXplcyB0aGUgY2Fub25pY2FsIHN0cmluZyByZXByZXNlbnRhdGlvbiBmcm9tIGEgdGhlIGRlcHJlY2F0ZWQKKyAgIHdzdHIvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZQorICAgb2JqZWN0cyB3aGljaCB3ZXJlIGNyZWF0ZWQgdXNpbmcgdGhlIG9sZCBBUEkgdG8gdGhlIG5ldyBmbGV4aWJsZSBmb3JtYXQKKyAgIGludHJvZHVjZWQgd2l0aCBQRVAgMzkzLgorCisgICBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgcHVibGljIFB5VW5pY29kZV9SRUFEWSgpIG1hY3JvCisgICBpbnN0ZWFkLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfUmVhZHkoCisgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgKTsKKyNlbmRpZgorCisvKiBHZXQgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Db3B5KAorICAgIFB5T2JqZWN0ICp1bmljb2RlCisgICAgKTsKKyNlbmRpZgorCisvKiBDb3B5IGNoYXJhY3RlciBmcm9tIG9uZSB1bmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMKKyAgIGNoYXJhY3RlciBjb252ZXJzaW9uIHdoZW4gbmVjZXNzYXJ5IGFuZCBmYWxscyBiYWNrIHRvIG1lbWNweSgpIGlmIHBvc3NpYmxlLgorCisgICBGYWlsIGlmIHRvIGlzIHRvbyBzbWFsbCAoc21hbGxlciB0aGFuICpob3dfbWFueSogb3Igc21hbGxlciB0aGFuCisgICBsZW4oZnJvbSktZnJvbV9zdGFydCksIG9yIGlmIGtpbmQoZnJvbVtmcm9tX3N0YXJ0OmZyb21fc3RhcnQraG93X21hbnldKSA+CisgICBraW5kKHRvKSwgb3IgaWYgKnRvKiBoYXMgbW9yZSB0aGFuIDEgcmVmZXJlbmNlLgorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3Rlciwgb3IgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24KKyAgIG9uIGVycm9yLgorCisgICBQc2V1ZG8tY29kZToKKworICAgICAgIGhvd19tYW55ID0gbWluKGhvd19tYW55LCBsZW4oZnJvbSkgLSBmcm9tX3N0YXJ0KQorICAgICAgIHRvW3RvX3N0YXJ0OnRvX3N0YXJ0K2hvd19tYW55XSA9IGZyb21bZnJvbV9zdGFydDpmcm9tX3N0YXJ0K2hvd19tYW55XQorICAgICAgIHJldHVybiBob3dfbWFueQorCisgICBOb3RlOiBUaGUgZnVuY3Rpb24gZG9lc24ndCB3cml0ZSBhIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLgorICAgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKAorICAgIFB5T2JqZWN0ICp0bywKKyAgICBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgIFB5T2JqZWN0ICpmcm9tLAorICAgIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICBQeV9zc2l6ZV90IGhvd19tYW55CisgICAgKTsKKworLyogVW5zYWZlIHZlcnNpb24gb2YgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCk6IGRvbid0IGNoZWNrIGFyZ3VtZW50cyBhbmQgc28KKyAgIG1heSBjcmFzaCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIChlLmcuIGlmIHRoZSBvdXRwdXQgc3RyaW5nCisgICBpcyB0b28gc2hvcnQpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sCisgICAgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICBQeU9iamVjdCAqZnJvbSwKKyAgICBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgUHlfc3NpemVfdCBob3dfbWFueQorICAgICk7CisjZW5kaWYKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogRmlsbCBhIHN0cmluZyB3aXRoIGEgY2hhcmFjdGVyOiB3cml0ZSBmaWxsX2NoYXIgaW50bworICAgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdLgorCisgICBGYWlsIGlmIGZpbGxfY2hhciBpcyBiaWdnZXIgdGhhbiB0aGUgc3RyaW5nIG1heGltdW0gY2hhcmFjdGVyLCBvciBpZiB0aGUKKyAgIHN0cmluZyBoYXMgbW9yZSB0aGFuIDEgcmVmZXJlbmNlLgorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3Rlciwgb3IgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24KKyAgIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfRmlsbCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgIFB5X1VDUzQgZmlsbF9jaGFyCisgICAgKTsKKworLyogVW5zYWZlIHZlcnNpb24gb2YgUHlVbmljb2RlX0ZpbGwoKTogZG9uJ3QgY2hlY2sgYXJndW1lbnRzIGFuZCBzbyBtYXkgY3Jhc2gKKyAgIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgKGUuZy4gaWYgbGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRoZSBzdHJpbmcpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0Zhc3RGaWxsKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgUHlfVUNTNCBmaWxsX2NoYXIKKyAgICApOworI2VuZGlmCisKIC8qIENyZWF0ZSBhIFVuaWNvZGUgT2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyIHUgb2YgdGhlIGdpdmVuCiAgICBzaXplLgogCkBAIC00NDgsMTMgKzcxMSw2MCBAQAogICAgICk7CiAKIC8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCksIGJ1dCB1IHBvaW50cyB0byBudWxsLXRlcm1pbmF0ZWQKLSAgIFVURi04IGVuY29kZWQgYnl0ZXMgKi8KKyAgIFVURi04IGVuY29kZWQgYnl0ZXMuICBUaGUgc2l6ZSBpcyBkZXRlcm1pbmVkIHdpdGggc3RybGVuKCkuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21TdHJpbmcoCiAgICAgY29uc3QgY2hhciAqdSAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDcmVhdGUgYSBuZXcgc3RyaW5nIGZyb20gYSBidWZmZXIgb2YgUHlfVUNTMSwgUHlfVUNTMiBvciBQeV9VQ1M0IGNoYXJhY3RlcnMuCisgICBTY2FuIHRoZSBzdHJpbmcgdG8gZmluZCB0aGUgbWF4aW11bSBjaGFyYWN0ZXIuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICBpbnQga2luZCwKKyAgICBjb25zdCB2b2lkICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogQ3JlYXRlIGEgbmV3IHN0cmluZyBmcm9tIGEgYnVmZmVyIG9mIEFTQ0lJIGNoYXJhY3RlcnMuCisgICBXQVJOSU5HOiBEb24ndCBjaGVjayBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGFueSBub24tQVNDSUkgY2hhcmFjdGVyLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKAorICAgIGNvbnN0IGNoYXIgKmJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfU3Vic3RyaW5nKAorICAgIFB5T2JqZWN0ICpzdHIsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyIG9mIHRoZSBzdWJzdHJpbmcgdW5pY29kZVtzdGFydDplbmRdLgorICAgUmV0dXJuIDEyNyBmb3IgYW4gZW1wdHkgc3RyaW5nLiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyICgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKKyNlbmRpZgorCisvKiBDb3B5IHRoZSBzdHJpbmcgaW50byBhIFVDUzQgYnVmZmVyIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaWYgY29weV9udWxsCisgICBpcyBzZXQuIFJldHVybiBOVUxMIGFuZCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuIFJhaXNlIGEgVmFsdWVFcnJvciBpZgorICAgdGhlIGJ1ZmZlciBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cmluZy4gUmV0dXJuIGJ1ZmZlciBvbiBzdWNjZXNzLgorCisgICBidWZsZW4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIChQeV9VQ1M0KSBjaGFyYWN0ZXJzLiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KikgUHlVbmljb2RlX0FzVUNTNCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9VQ1M0KiBidWZmZXIsCisgICAgUHlfc3NpemVfdCBidWZsZW4sCisgICAgaW50IGNvcHlfbnVsbCk7CisKKy8qIENvcHkgdGhlIHN0cmluZyBpbnRvIGEgVUNTNCBidWZmZXIuIEEgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcKKyAqIFB5TWVtX01hbGxvYzsgaWYgdGhpcyBmYWlscywgTlVMTCBpcyByZXR1cm5lZCB3aXRoIGEgbWVtb3J5IGVycm9yCisgICBleGNlcHRpb24gc2V0LiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KikgUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnVuaWNvZGUpOworCiAvKiBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAotICAgUHlfVU5JQ09ERSBidWZmZXIuICovCisgICBQeV9VTklDT0RFIGJ1ZmZlci4KKyAgIElmIHRoZSB3Y2hhcl90L1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IHlldCBhdmFpbGFibGUsIHRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgY2FsY3VsYXRlIGl0LiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5X1VOSUNPREUgKikgUHlVbmljb2RlX0FzVW5pY29kZSgKQEAgLTQ2MiwzMCArNzcyLDY5IEBACiAgICAgKTsKICNlbmRpZgogCisvKiBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAorICAgUHlfVU5JQ09ERSBidWZmZXIgYW5kIHNhdmUgdGhlIGxlbmd0aCBhdCBzaXplLgorICAgSWYgdGhlIHdjaGFyX3QvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpcyBub3QgeWV0IGF2YWlsYWJsZSwgdGhpcworICAgZnVuY3Rpb24gd2lsbCBjYWxjdWxhdGUgaXQuICovCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfVU5JQ09ERSAqKSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBQeV9zc2l6ZV90ICpzaXplICAgICAgICAgICAgLyogbG9jYXRpb24gd2hlcmUgdG8gc2F2ZSB0aGUgbGVuZ3RoICovCisgICAgKTsKKyNlbmRpZgorCiAvKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QuICovCiAKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0dldExlbmd0aCgKKyAgICBQeU9iamVjdCAqdW5pY29kZQorKTsKKworLyogR2V0IHRoZSBudW1iZXIgb2YgUHlfVU5JQ09ERSB1bml0cyBpbiB0aGUKKyAgIHN0cmluZyByZXByZXNlbnRhdGlvbi4gKi8KKwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfR2V0U2l6ZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICApOwogCisvKiBSZWFkIGEgY2hhcmFjdGVyIGZyb20gdGhlIHN0cmluZy4gKi8KKworUHlBUElfRlVOQyhQeV9VQ1M0KSBQeVVuaWNvZGVfUmVhZENoYXIoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBpbmRleAorICAgICk7CisKKy8qIFdyaXRlIGEgY2hhcmFjdGVyIHRvIHRoZSBzdHJpbmcuIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICBQeVVuaWNvZGVfTmV3LCBtdXN0IG5vdCBiZSBzaGFyZWQsIGFuZCBtdXN0IG5vdCBoYXZlIGJlZW4gaGFzaGVkIHlldC4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCisKK1B5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfV3JpdGVDaGFyKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfVUNTNCBjaGFyYWN0ZXIKKyAgICApOworCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBHZXQgdGhlIG1heGltdW0gb3JkaW5hbCBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4gKi8KIFB5QVBJX0ZVTkMoUHlfVU5JQ09ERSkgUHlVbmljb2RlX0dldE1heCh2b2lkKTsKICNlbmRpZgogCi0vKiBSZXNpemUgYW4gYWxyZWFkeSBhbGxvY2F0ZWQgVW5pY29kZSBvYmplY3QgdG8gdGhlIG5ldyBzaXplIGxlbmd0aC4KKy8qIFJlc2l6ZSBhbiBVbmljb2RlIG9iamVjdC4gVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGV4Y2VwdAorICAgaWYgdGhlIGtpbmQgb2YgdGhlIHN0cmluZyBpcyBQeVVuaWNvZGVfV0NIQVJfS0lORDogaW4gdGhpcyBjYXNlLCB0aGUgbGVuZ3RoCisgICBpcyB0aGUgbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcmFjdGVycy4KIAogICAgKnVuaWNvZGUgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyAocmVzaXplZCkgb2JqZWN0IGFuZCAwCiAgICByZXR1cm5lZCBvbiBzdWNjZXNzLgogCi0gICBUaGlzIEFQSSBtYXkgb25seSBiZSBjYWxsZWQgYnkgdGhlIGZ1bmN0aW9uIHdoaWNoIGFsc28gY2FsbGVkIHRoZQotICAgVW5pY29kZSBjb25zdHJ1Y3Rvci4gVGhlIHJlZmNvdW50IG9uIHRoZSBvYmplY3QgbXVzdCBiZSAxLiBPdGhlcndpc2UsCi0gICBhbiBlcnJvciBpcyByZXR1cm5lZC4KKyAgIFRyeSB0byByZXNpemUgdGhlIHN0cmluZyBpbiBwbGFjZSAod2hpY2ggaXMgdXN1YWxseSBmYXN0ZXIgdGhhbiBhbGxvY2F0aW5nCisgICBhIG5ldyBzdHJpbmcgYW5kIGNvcHkgY2hhcmFjdGVycyksIG9yIGNyZWF0ZSBhIG5ldyBzdHJpbmcuCiAKICAgIEVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGFzIGZvbGxvd3M6IGFuIGV4Y2VwdGlvbiBpcyBzZXQsIC0xCiAgICBpcyByZXR1cm5lZCBhbmQgKnVuaWNvZGUgbGVmdCB1bnRvdWNoZWQuCiAKLSovCisgICBXQVJOSU5HOiBUaGUgZnVuY3Rpb24gZG9lc24ndCBjaGVjayBzdHJpbmcgY29udGVudCwgdGhlIHJlc3VsdCBtYXkgbm90IGJlIGEKKyAgICAgICAgICAgIHN0cmluZyBpbiBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24uICovCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfUmVzaXplKAogICAgIFB5T2JqZWN0ICoqdW5pY29kZSwgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCAqLwpAQCAtNTQyLDExICs4OTEsNjcgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgcG9zOworICAgIC8qIG1pbmltdW0gbGVuZ3RoIG9mIHRoZSBidWZmZXIgd2hlbiBvdmVyYWxsb2NhdGlvbiBpcyBlbmFibGVkLAorICAgICAgIHNlZSBfUHlVbmljb2RlV3JpdGVyX0luaXQoKSAqLworICAgIFB5X3NzaXplX3QgbWluX2xlbmd0aDsKKyAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKKyAgICAvKiBJZiByZWFkb25seSBpcyAxLCBidWZmZXIgaXMgYSBzaGFyZWQgc3RyaW5nIChjYW5ub3QgYmUgbW9kaWZpZWQpCisgICAgICAgYW5kIHNpemUgaXMgc2V0IHRvIDAuICovCisgICAgdW5zaWduZWQgY2hhciByZWFkb25seTsKK30gX1B5VW5pY29kZVdyaXRlciA7CisKKy8qIEluaXRpYWxpemUgYSBVbmljb2RlIHdyaXRlci4KKworICAgSWYgbWluX2xlbmd0aCBpcyBncmVhdGVyIHRoYW4gemVybywgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkKKyAgIG92ZXJhbGxvY2F0ZXMgdGhlIGJ1ZmZlciBhbmQgbWluX2xlbmd0aCBpcyB0aGUgbWluaW11bSBsZW5ndGggaW4gY2hhcmFjdGVycworICAgb2YgdGhlIGJ1ZmZlci4gKi8KK1B5QVBJX0ZVTkModm9pZCkKK19QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3QgbWluX2xlbmd0aCk7CisKKy8qIFByZXBhcmUgdGhlIGJ1ZmZlciB0byB3cml0ZSAnbGVuZ3RoJyBjaGFyYWN0ZXJzCisgICB3aXRoIHRoZSBzcGVjaWZpZWQgbWF4aW11bSBjaGFyYWN0ZXIuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworI2RlZmluZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoV1JJVEVSLCBMRU5HVEgsIE1BWENIQVIpICAgICAgICAgICAgIFwKKyAgICAoKChNQVhDSEFSKSA8PSAoV1JJVEVSKS0+bWF4Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiAoTEVOR1RIKSA8PSAoV1JJVEVSKS0+c2l6ZSAtIChXUklURVIpLT5wb3MpICAgICAgICAgICAgICAgICAgXAorICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiAoKChMRU5HVEgpID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA6IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKChXUklURVIpLCAoTEVOR1RIKSwgKE1BWENIQVIpKSkpCisKKy8qIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKSBtYWNybworICAgaW5zdGVhZC4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcik7CisKK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopCitfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpOworCitQeUFQSV9GVU5DKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKKyNlbmRpZgorCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYKIAogUHlBUElfRlVOQyh2b2lkKSBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKik7CkBAIC01NTksNyArOTY0LDggQEAKICNlbmRpZgogCiAvKiBVc2Ugb25seSBpZiB5b3Uga25vdyBpdCdzIGEgc3RyaW5nICovCi0jZGVmaW5lIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChvcCkgKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0YXRlKQorI2RlZmluZSBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQob3ApIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmludGVybmVkKQogCiAvKiAtLS0gd2NoYXJfdCBzdXBwb3J0IGZvciBwbGF0Zm9ybXMgd2hpY2ggc3VwcG9ydCBpdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjA2LDE0ICsxMDEyLDE3IEBACiAgICAgUHlfc3NpemVfdCAqc2l6ZSAgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRoZSByZXN1bHQgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlVbmljb2RlX0FzS2luZChQeU9iamVjdCAqcywgdW5zaWduZWQgaW50IGtpbmQpOworI2VuZGlmCisKICNlbmRpZgogCiAvKiAtLS0gVW5pY29kZSBvcmRpbmFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogQ3JlYXRlIGEgVW5pY29kZSBPYmplY3QgZnJvbSB0aGUgZ2l2ZW4gVW5pY29kZSBjb2RlIHBvaW50IG9yZGluYWwuCiAKLSAgIFRoZSBvcmRpbmFsIG11c3QgYmUgaW4gcmFuZ2UoMHgxMDAwMCkgb24gbmFycm93IFB5dGhvbiBidWlsZHMKLSAgIChVQ1MyKSwgYW5kIHJhbmdlKDB4MTEwMDAwKSBvbiB3aWRlIGJ1aWxkcyAoVUNTNCkuIEEgVmFsdWVFcnJvciBpcworICAgVGhlIG9yZGluYWwgbXVzdCBiZSBpbiByYW5nZSgweDExMDAwMCkuIEEgVmFsdWVFcnJvciBpcwogICAgcmFpc2VkIGluIGNhc2UgaXQgaXMgbm90LgogCiAqLwpAQCAtNjUxLDUwICsxMDYwLDQyIEBACiAKIC8qIC0tLSBNYW5hZ2UgdGhlIGRlZmF1bHQgZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBSZXR1cm4gYSBQeXRob24gc3RyaW5nIGhvbGRpbmcgdGhlIGRlZmF1bHQgZW5jb2RlZCB2YWx1ZSBvZiB0aGUKLSAgIFVuaWNvZGUgb2JqZWN0LgotCi0gICBTYW1lIGFzIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBleGNlcHQKLSAgIHRoZSByZXN1bHRpbmcgc3RyaW5nIGlzIGNhY2hlZCBpbiB0aGUgVW5pY29kZSBvYmplY3QgZm9yIHN1YnNlcXVlbnQKLSAgIHVzYWdlIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZSBjYWNoZWQgdmVyc2lvbiBpcyBuZWVkZWQgdG8gaW1wbGVtZW50Ci0gICB0aGUgY2hhcmFjdGVyIGJ1ZmZlciBpbnRlcmZhY2UgYW5kIHdpbGwgbGl2ZSAoYXQgbGVhc3QpIGFzIGxvbmcgYXMKLSAgIHRoZSBVbmljb2RlIG9iamVjdCBpdHNlbGYuCi0KLSAgIFRoZSByZWZjb3VudCBvZiB0aGUgc3RyaW5nIGlzICpub3QqIGluY3JlbWVudGVkLgotCi0gICAqKiogRXhwb3J0ZWQgZm9yIGludGVybmFsIHVzZSBieSB0aGUgaW50ZXJwcmV0ZXIgb25seSAhISEgKioqCi0KLSovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKAotICAgIFB5T2JqZWN0ICp1bmljb2RlLAotICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7Ci0jZW5kaWYKLQogLyogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcgKFVURi04KSBvZiB0aGUKICAgIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUgYW5kIHRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIHJlcHJlc2VudGF0aW9uCiAgICBpbiBieXRlcyBzdG9yZWQgaW4gKnNpemUuCiAKICAgIEluIGNhc2Ugb2YgYW4gZXJyb3IsIG5vICpzaXplIGlzIHNldC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYWNoZXMgdGhlIFVURi04IGVuY29kZWQgc3RyaW5nIGluIHRoZSB1bmljb2Rlb2JqZWN0CisgICBhbmQgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiB0aGUgc2FtZSBzdHJpbmcuICBUaGUgbWVtb3J5IGlzIHJlbGVhc2VkCisgICB3aGVuIHRoZSB1bmljb2Rlb2JqZWN0IGlzIGRlYWxsb2NhdGVkLgorCisgICBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSBpcyBhICNkZWZpbmUgZm9yIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplIHRvCisgICBzdXBwb3J0IHRoZSBwcmV2aW91cyBpbnRlcm5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIGJlaGF2aW91ci4KKwogICAgKioqIFRoaXMgQVBJIGlzIGZvciBpbnRlcnByZXRlciBJTlRFUk5BTCBVU0UgT05MWSBhbmQgd2lsbCBsaWtlbHkKICAgICoqKiBiZSByZW1vdmVkIG9yIGNoYW5nZWQgaW4gdGhlIGZ1dHVyZS4KIAogICAgKioqIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgVW5pY29kZSBvYmplY3QgYXMgVVRGLTggYnl0ZXMgc3RyaW5nLAogICAgKioqIHBsZWFzZSB1c2UgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGluc3RlYWQuCi0KICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY2hhciAqKSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSgKK1B5QVBJX0ZVTkMoY2hhciAqKSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSwKICAgICBQeV9zc2l6ZV90ICpzaXplKTsKKyNkZWZpbmUgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUKICNlbmRpZgogCiAvKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBlbmNvZGluZyAoVVRGLTgpIG9mIHRoZQogICAgVW5pY29kZSBvYmplY3QgdW5pY29kZS4KIAorICAgTGlrZSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSgpLCB0aGlzIGFsc28gY2FjaGVzIHRoZSBVVEYtOCByZXByZXNlbnRhdGlvbgorICAgaW4gdGhlIHVuaWNvZGVvYmplY3QuCisKKyAgIF9QeVVuaWNvZGVfQXNTdHJpbmcgaXMgYSAjZGVmaW5lIGZvciBQeVVuaWNvZGVfQXNVVEY4IHRvCisgICBzdXBwb3J0IHRoZSBwcmV2aW91cyBpbnRlcm5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIGJlaGF2aW91ci4KKwogICAgVXNlIG9mIHRoaXMgQVBJIGlzIERFUFJFQ0FURUQgc2luY2Ugbm8gc2l6ZSBpbmZvcm1hdGlvbiBjYW4gYmUKICAgIGV4dHJhY3RlZCBmcm9tIHRoZSByZXR1cm5lZCBkYXRhLgogCkBAIC03MDcsNyArMTEwOCw4IEBACiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNoYXIgKikgX1B5VW5pY29kZV9Bc1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSk7CitQeUFQSV9GVU5DKGNoYXIgKikgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdCAqdW5pY29kZSk7CisjZGVmaW5lIF9QeVVuaWNvZGVfQXNTdHJpbmcgUHlVbmljb2RlX0FzVVRGOAogI2VuZGlmCiAKIC8qIFJldHVybnMgInV0Zi04Ii4gICovCkBAIC04MTIsNiArMTIxNCwxMiBAQAogICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLCAgICAgICAvKiBFbmNvZGUgd2hpdGVzcGFjZSAoc3AsIGh0LCBubCwgY3IpIGluIGJhc2U2NCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVVVEY3KAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGludCBiYXNlNjRTZXRPLCAgICAgICAgICAgICAvKiBFbmNvZGUgUkZDMjE1MiBTZXQgTyBjaGFyYWN0ZXJzIGluIGJhc2U2NCAqLworICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLCAgICAgICAvKiBFbmNvZGUgd2hpdGVzcGFjZSAoc3AsIGh0LCBubCwgY3IpIGluIGJhc2U2NCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogLS0tIFVURi04IENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC04MzQsNiArMTI0MiwxMCBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZVVURjgoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC05MTUsNiArMTMyNywxMSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZVVURjMyKAorICAgIFB5T2JqZWN0ICpvYmplY3QsICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCisgICAgKTsKICNlbmRpZgogCiAvKiAtLS0gVVRGLTE2IENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTk5NSw2ICsxNDEyLDExIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIC0tLSBVbmljb2RlLUVzY2FwZSBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTA2NCw2ICsxNDg2LDEwIEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsCisgICAgY29uc3QgY2hhciogZXJyb3JzKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC0xMDg4LDYgKzE1MTQsMTAgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKAorICAgIFB5T2JqZWN0KiB1bmljb2RlLAorICAgIGNvbnN0IGNoYXIqIGVycm9ycyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC0xMTM5LDYgKzE1NjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaWNvZGUgb3JkaW5hbCAtPiBjaGFyIG9yZGluYWwpICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgUHlPYmplY3QgKm1hcHBpbmcsICAgICAgICAgIC8qIGNoYXJhY3RlciBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmljb2RlIG9yZGluYWwgLT4gY2hhciBvcmRpbmFsKSAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogVHJhbnNsYXRlIGEgUHlfVU5JQ09ERSBidWZmZXIgb2YgdGhlIGdpdmVuIGxlbmd0aCBieSBhcHBseWluZyBhCkBAIC0xMTYzLDcgKzE1OTksNyBAQAogICAgICk7CiAjZW5kaWYKIAotI2lmZGVmIE1TX1dJTjMyCisjaWZkZWYgSEFWRV9NQkNTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMTgwLDYgKzE2MTYsMTQgQEAKICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KICAgICApOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoCisgICAgaW50IGNvZGVfcGFnZSwgICAgICAgICAgICAgIC8qIGNvZGUgcGFnZSBudW1iZXIgKi8KKyAgICBjb25zdCBjaGFyICpzdHJpbmcsICAgICAgICAgLyogZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogc2l6ZSBvZiBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KKyAgICApOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzTUJDU1N0cmluZygKICAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICApOwpAQCAtMTE4NywxMiArMTYzMSwxOCBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVNQkNTKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBudW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogI2VuZGlmCiAKLSNlbmRpZiAvKiBNU19XSU4zMiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZSgKKyAgICBpbnQgY29kZV9wYWdlLCAgICAgICAgICAgICAgLyogY29kZSBwYWdlIG51bWJlciAqLworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTEyNDAsNiArMTY5MCw0OSBAQAogICAgICk7CiAjZW5kaWYKIAorLyogU2ltaWxhciB0byBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoKSwgYnV0IHRha2VzIGEgUHlPYmplY3QKKyAgIGFzIGFyZ3VtZW50IGluc3RlYWQgb2YgYSByYXcgYnVmZmVyIGFuZCBsZW5ndGguICBUaGlzIGZ1bmN0aW9uIGFkZGl0aW9uYWxseQorICAgdHJhbnNmb3JtcyBzcGFjZXMgdG8gQVNDSUkgYmVjYXVzZSB0aGlzIGlzIHdoYXQgdGhlIGNhbGxlcnMgaW4gbG9uZ29iamVjdCwKKyAgIGZsb2F0b2JqZWN0LCBhbmQgY29tcGxleG9iamVjdCBkaWQgYW55d2F5cy4gKi8KKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICApOworI2VuZGlmCisKKy8qIC0tLSBMb2NhbGUgZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qIERlY29kZSBhIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gVGhlIGRlY29kZXIgaXMgc3RyaWN0IGlmCisgICAqc3Vycm9nYXRlZXNjYXBlKiBpcyBlcXVhbCB0byB6ZXJvLCBvdGhlcndpc2UgaXQgdXNlcyB0aGUgJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgIGVycm9yIGhhbmRsZXIgKFBFUCAzODMpIHRvIGVzY2FwZSB1bmRlY29kYWJsZSBieXRlcy4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbgorICAgYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYW5kICpzdXJyb2dhdGVlc2NhcGUqIGlzIG5vdCBlcXVhbCB0bworICAgemVybywgdGhlIGJ5dGUgc2VxdWVuY2UgaXMgZXNjYXBlZCB1c2luZyB0aGUgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcgorICAgaW5zdGVhZCBvZiBiZWluZyBkZWNvZGVkLiAqc3RyKiBtdXN0IGVuZCB3aXRoIGEgbnVsbCBjaGFyYWN0ZXIgYnV0IGNhbm5vdAorICAgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgKKyAgICBjb25zdCBjaGFyICpzdHIsCisgICAgUHlfc3NpemVfdCBsZW4sCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworLyogU2ltaWxhciB0byBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpLCBidXQgY29tcHV0ZSB0aGUgc3RyaW5nCisgICBsZW5ndGggdXNpbmcgc3RybGVuKCkuICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKAorICAgIGNvbnN0IGNoYXIgKnN0ciwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCisvKiBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBlbmNvZGVyIGlzCisgICBzdHJpY3QgaXMgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIHRoZQorICAgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciBpcyB1c2VkLiBSZXR1cm4gYSBieXRlcyBvYmplY3QuIFRoZSBzdHJpbmcKKyAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4uICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycworICAgICk7CisKIC8qIC0tLSBGaWxlIHN5c3RlbSBlbmNvZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgc3RyIG9iamVjdHMgdG8gYnl0ZXMgdXNpbmcKQEAgLTEyOTIsNyArMTc4NSw3IEBACiAKICAgIFRoZXNlIGFyZSBjYXBhYmxlIG9mIGhhbmRsaW5nIFVuaWNvZGUgb2JqZWN0cyBhbmQgc3RyaW5ncyBvbiBpbnB1dAogICAgKHdlIHJlZmVyIHRvIHRoZW0gYXMgc3RyaW5ncyBpbiB0aGUgZGVzY3JpcHRpb25zKSBhbmQgcmV0dXJuCi0gICBVbmljb2RlIG9iamVjdHMgb3IgaW50ZWdlcnMgYXMgYXBwb3JwcmlhdGUuICovCisgICBVbmljb2RlIG9iamVjdHMgb3IgaW50ZWdlcnMgYXMgYXBwcm9wcmlhdGUuICovCiAKIC8qIENvbmNhdCB0d28gc3RyaW5ncyBnaXZpbmcgYSBuZXcgVW5pY29kZSBzdHJpbmcuICovCiAKQEAgLTE0MjcsNiArMTkyMCwxNSBAQAogICAgIGludCBkaXJlY3Rpb24gICAgICAgICAgICAgICAvKiBGaW5kIGRpcmVjdGlvbjogKzEgZm9yd2FyZCwgLTEgYmFja3dhcmQgKi8KICAgICApOwogCisvKiBMaWtlIFB5VW5pY29kZV9GaW5kLCBidXQgc2VhcmNoIGZvciBzaW5nbGUgY2hhcmFjdGVyIG9ubHkuICovCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICBQeU9iamVjdCAqc3RyLAorICAgIFB5X1VDUzQgY2gsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICBpbnQgZGlyZWN0aW9uCisgICAgKTsKKwogLyogQ291bnQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBzdWJzdHIgaW4gc3RyW3N0YXJ0OmVuZF0uICovCiAKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0NvdW50KApAQCAtMTQ2Myw3ICsxOTY1LDcgQEAKIC8qIFJpY2ggY29tcGFyZSB0d28gc3RyaW5ncyBhbmQgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCiAgICAtIE5VTEwgaW4gY2FzZSBhbiBleGNlcHRpb24gd2FzIHJhaXNlZAotICAgLSBQeV9UcnVlIG9yIFB5X0ZhbHNlIGZvciBzdWNjZXNzZnVseSBjb21wYXJpc29ucworICAgLSBQeV9UcnVlIG9yIFB5X0ZhbHNlIGZvciBzdWNjZXNzZnVsbHkgY29tcGFyaXNvbnMKICAgIC0gUHlfTm90SW1wbGVtZW50ZWQgaW4gY2FzZSB0aGUgdHlwZSBjb21iaW5hdGlvbiBpcyB1bmtub3duCiAKICAgIE5vdGUgdGhhdCBQeV9FUSBhbmQgUHlfTkUgY29tcGFyaXNvbnMgY2FuIGNhdXNlIGEgVW5pY29kZVdhcm5pbmcgaW4KQEAgLTE1MTQsMzUgKzIwMTYsMjYgQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEV4dGVybmFsbHkgdmlzaWJsZSBmb3Igc3RyLnN0cmlwKHVuaWNvZGUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfWFN0cmlwKAotICAgIFB5VW5pY29kZU9iamVjdCAqc2VsZiwKKyAgICBQeU9iamVjdCAqc2VsZiwKICAgICBpbnQgc3RyaXB0eXBlLAogICAgIFB5T2JqZWN0ICpzZXBvYmoKICAgICApOwogI2VuZGlmCiAKLS8qIFVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZSwgaW5zZXJ0IHRoZSB0aG91c2FuZHMgZ3JvdXBpbmcKLSAgIGludG8gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IGJ1ZmZlci4gIEZvciB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb25zLAotICAgc2VlIE9iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUoUHlfVU5JQ09ERSAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCk7Ci0jZW5kaWYKLQogLyogVXNpbmcgZXhwbGljaXQgcGFzc2VkLWluIHZhbHVlcywgaW5zZXJ0IHRoZSB0aG91c2FuZHMgZ3JvdXBpbmcKICAgIGludG8gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IGJ1ZmZlci4gIEZvciB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb25zLAogICAgc2VlIE9iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKFB5X1VOSUNPREUgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRob3VzYW5kc19zZXApOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICB2b2lkICpkaWdpdHMsCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKKyAgICBjb25zdCBjaGFyICpncm91cGluZywKKyAgICBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9VQ1M0ICptYXhjaGFyKTsKICNlbmRpZgogLyogPT09IENoYXJhY3RlcnMgVHlwZSBBUElzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKQEAgLTE1OTgsNiArMjA5MSwzNCBAQAogICAgIFB5X1VDUzQgY2ggICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KICAgICApOwogCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0xvd2VyRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvVGl0bGVGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0ZvbGRlZEZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoCisgICAgUHlfVUNTNCBjaCAgICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfSXNDYXNlZCgKKyAgICBQeV9VQ1M0IGNoICAgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICApOworCiBQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0RlY2ltYWxEaWdpdCgKICAgICBQeV9VQ1M0IGNoICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCiAgICAgKTsKQEAgLTE2NzYsNiArMjE5NywxNyBAQAogICAgICk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmIGRlZmluZWQoUHlfREVCVUcpICYmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKQorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgKKyAgICBQeU9iamVjdCAqb3AsCisgICAgaW50IGNoZWNrX2NvbnRlbnQpOworI2VuZGlmCisKKy8qIFJldHVybiBhbiBpbnRlcm5lZCBVbmljb2RlIG9iamVjdCBmb3IgYW4gSWRlbnRpZmllcjsgbWF5IGZhaWwgaWYgdGhlcmUgaXMgbm8gbWVtb3J5LiovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gcm9tSWQoX1B5X0lkZW50aWZpZXIqKTsKKy8qIENsZWFyIGFsbCBzdGF0aWMgc3RyaW5ncy4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3Modm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQppbmRleCA0MzM4OGU3Li5kZDcwNDRlIDEwMDY0NAotLS0gYS9MSUNFTlNFCisrKyBiL0xJQ0VOU0UKQEAgLTc0LDYgKzc0LDcgQEAKICAgICAzLjIuMSAgICAgICAgICAgMy4yICAgICAgICAgMjAxMSAgICAgICAgUFNGICAgICAgICAgeWVzCiAgICAgMy4yLjIgICAgICAgICAgIDMuMi4xICAgICAgIDIwMTEgICAgICAgIFBTRiAgICAgICAgIHllcwogICAgIDMuMi4zICAgICAgICAgICAzLjIuMiAgICAgICAyMDEyICAgICAgICBQU0YgICAgICAgICB5ZXMKKyAgICAzLjMuMCAgICAgICAgICAgMy4yICAgICAgICAgMjAxMiAgICAgICAgUFNGICAgICAgICAgeWVzCiAKIEZvb3Rub3RlczoKIApAQCAtMTA5LDggKzExMCw4IEBACiBkaXN0cmlidXRlLCBhbmQgb3RoZXJ3aXNlIHVzZSBQeXRob24gYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbiwKIHByb3ZpZGVkLCBob3dldmVyLCB0aGF0IFBTRidzIExpY2Vuc2UgQWdyZWVtZW50IGFuZCBQU0YncyBub3RpY2Ugb2YgY29weXJpZ2h0LAogaS5lLiwgIkNvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKLTIwMTEsIDIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMgUmVzZXJ2ZWQiIGFyZSByZXRhaW5lZCBpbiBQeXRob24KLWFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24gcHJlcGFyZWQgYnkgTGljZW5zZWUuCisyMDExLCAyMDEyLCAyMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkIiBhcmUgcmV0YWluZWQKK2luIFB5dGhvbiBhbG9uZSBvciBpbiBhbnkgZGVyaXZhdGl2ZSB2ZXJzaW9uIHByZXBhcmVkIGJ5IExpY2Vuc2VlLgogCiAzLiBJbiB0aGUgZXZlbnQgTGljZW5zZWUgcHJlcGFyZXMgYSBkZXJpdmF0aXZlIHdvcmsgdGhhdCBpcyBiYXNlZCBvbgogb3IgaW5jb3Jwb3JhdGVzIFB5dGhvbiBvciBhbnkgcGFydCB0aGVyZW9mLCBhbmQgd2FudHMgdG8gbWFrZQpkaWZmIC0tZ2l0IGEvTGliL19kdW1teV90aHJlYWQucHkgYi9MaWIvX2R1bW15X3RocmVhZC5weQppbmRleCBlZDUwNTIwLi4xM2IxZjI2IDEwMDY0NAotLS0gYS9MaWIvX2R1bW15X3RocmVhZC5weQorKysgYi9MaWIvX2R1bW15X3RocmVhZC5weQpAQCAtMjQsMTEgKzI0LDcgQEAKICMgaW1wb3J0cyBhcmUgZG9uZSB3aGVuIG5lZWRlZCBvbiBhIGZ1bmN0aW9uLWJ5LWZ1bmN0aW9uIGJhc2lzLiAgU2luY2UgdGhyZWFkcwogIyBhcmUgZGlzYWJsZWQsIHRoZSBpbXBvcnQgbG9jayBzaG91bGQgbm90IGJlIGFuIGlzc3VlIGFueXdheSAoPz8pLgogCi1jbGFzcyBlcnJvcihFeGNlcHRpb24pOgotICAgICIiIkR1bW15IGltcGxlbWVudGF0aW9uIG9mIF90aHJlYWQuZXJyb3IuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCitlcnJvciA9IFJ1bnRpbWVFcnJvcgogCiBkZWYgc3RhcnRfbmV3X3RocmVhZChmdW5jdGlvbiwgYXJncywga3dhcmdzPXt9KToKICAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKS4KZGlmZiAtLWdpdCBhL0xpYi9fb3N4X3N1cHBvcnQucHkgYi9MaWIvX29zeF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYWFkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvX29zeF9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsNDg4IEBACisiIiJTaGFyZWQgT1MgWCBzdXBwb3J0IGZ1bmN0aW9ucy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworX19hbGxfXyA9IFsKKyAgICAnY29tcGlsZXJfZml4dXAnLAorICAgICdjdXN0b21pemVfY29uZmlnX3ZhcnMnLAorICAgICdjdXN0b21pemVfY29tcGlsZXInLAorICAgICdnZXRfcGxhdGZvcm1fb3N4JywKK10KKworIyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IG1heSBjb250YWluIHVuaXZlcnNhbCBidWlsZCBmbGFncywKKyMgbGlrZSAiLWFyY2giIG9yICItaXNka3Jvb3QiLCB0aGF0IG1heSBuZWVkIGN1c3RvbWl6YXRpb24gZm9yCisjIHRoZSB1c2VyIGVudmlyb25tZW50CitfVU5JVkVSU0FMX0NPTkZJR19WQVJTID0gKCdDRkxBR1MnLCAnTERGTEFHUycsICdDUFBGTEFHUycsICdCQVNFQ0ZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkxEU0hBUkVEJywgJ0xEU0hBUkVEJywgJ0NDJywgJ0NYWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BZX0NGTEFHUycsICdQWV9MREZMQUdTJywgJ1BZX0NQUEZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFlfQ09SRV9DRkxBR1MnKQorCisjIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWF5IGNvbnRhaW4gY29tcGlsZXIgY2FsbHMKK19DT01QSUxFUl9DT05GSUdfVkFSUyA9ICgnQkxEU0hBUkVEJywgJ0xEU0hBUkVEJywgJ0NDJywgJ0NYWCcpCisKKyMgcHJlZml4IGFkZGVkIHRvIG9yaWdpbmFsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgbmFtZXMKK19JTklUUFJFID0gJ19PU1hfU1VQUE9SVF9JTklUSUFMXycKKworCitkZWYgX2ZpbmRfZXhlY3V0YWJsZShleGVjdXRhYmxlLCBwYXRoPU5vbmUpOgorICAgICIiIlRyaWVzIHRvIGZpbmQgJ2V4ZWN1dGFibGUnIGluIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJ3BhdGgnLgorCisgICAgQSBzdHJpbmcgbGlzdGluZyBkaXJlY3RvcmllcyBzZXBhcmF0ZWQgYnkgJ29zLnBhdGhzZXAnOyBkZWZhdWx0cyB0bworICAgIG9zLmVudmlyb25bJ1BBVEgnXS4gIFJldHVybnMgdGhlIGNvbXBsZXRlIGZpbGVuYW1lIG9yIE5vbmUgaWYgbm90IGZvdW5kLgorICAgICIiIgorICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorCisgICAgcGF0aHMgPSBwYXRoLnNwbGl0KG9zLnBhdGhzZXApCisgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChleGVjdXRhYmxlKQorCisgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIG9zLm5hbWUgPT0gJ29zMicpIGFuZCAoZXh0ICE9ICcuZXhlJyk6CisgICAgICAgIGV4ZWN1dGFibGUgPSBleGVjdXRhYmxlICsgJy5leGUnCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZXhlY3V0YWJsZSk6CisgICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwLCBleGVjdXRhYmxlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZik6CisgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBleGlzdHMsIHdlIGhhdmUgYSBzaG90IGF0IHNwYXduIHdvcmtpbmcKKyAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBleGVjdXRhYmxlCisKKworZGVmIF9yZWFkX291dHB1dChjb21tYW5kc3RyaW5nKToKKyAgICAiIiJPdXRwdXQgZnJvbSBzdWNjZXNmdWwgY29tbWFuZCBleGVjdXRpb24gb3IgTm9uZSIiIgorICAgICMgU2ltaWxhciB0byBvcy5wb3Blbihjb21tYW5kc3RyaW5nLCAiciIpLnJlYWQoKSwKKyAgICAjIGJ1dCB3aXRob3V0IGFjdHVhbGx5IHVzaW5nIG9zLnBvcGVuIGJlY2F1c2UgdGhhdAorICAgICMgZnVuY3Rpb24gaXMgbm90IHVzYWJsZSBkdXJpbmcgcHl0aG9uIGJvb3RzdHJhcC4KKyAgICAjIHRlbXBmaWxlIGlzIGFsc28gbm90IGF2YWlsYWJsZSB0aGVuLgorICAgIGltcG9ydCBjb250ZXh0bGliCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgdGVtcGZpbGUKKyAgICAgICAgZnAgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgZnAgPSBvcGVuKCIvdG1wL19vc3hfc3VwcG9ydC4lcyIlKAorICAgICAgICAgICAgb3MuZ2V0cGlkKCksKSwgIncrYiIpCisKKyAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhmcCkgYXMgZnA6CisgICAgICAgIGNtZCA9ICIlcyAyPi9kZXYvbnVsbCA+JyVzJyIgJSAoY29tbWFuZHN0cmluZywgZnAubmFtZSkKKyAgICAgICAgcmV0dXJuIGZwLnJlYWQoKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKSBpZiBub3Qgb3Muc3lzdGVtKGNtZCkgZWxzZSBOb25lCisKKworZGVmIF9maW5kX2J1aWxkX3Rvb2wodG9vbG5hbWUpOgorICAgICIiIkZpbmQgYSBidWlsZCB0b29sIG9uIGN1cnJlbnQgcGF0aCBvciB1c2luZyB4Y3J1biIiIgorICAgIHJldHVybiAoX2ZpbmRfZXhlY3V0YWJsZSh0b29sbmFtZSkKKyAgICAgICAgICAgICAgICBvciBfcmVhZF9vdXRwdXQoIi91c3IvYmluL3hjcnVuIC1maW5kICVzIiAlICh0b29sbmFtZSwpKQorICAgICAgICAgICAgICAgIG9yICcnCisgICAgICAgICAgICApCisKK19TWVNURU1fVkVSU0lPTiA9IE5vbmUKKworZGVmIF9nZXRfc3lzdGVtX3ZlcnNpb24oKToKKyAgICAiIiJSZXR1cm4gdGhlIE9TIFggc3lzdGVtIHZlcnNpb24gYXMgYSBzdHJpbmciIiIKKyAgICAjIFJlYWRpbmcgdGhpcyBwbGlzdCBpcyBhIGRvY3VtZW50ZWQgd2F5IHRvIGdldCB0aGUgc3lzdGVtCisgICAgIyB2ZXJzaW9uIChzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBHZXN0YWx0IE1hbmFnZXIpCisgICAgIyBXZSBhdm9pZCB1c2luZyBwbGF0Zm9ybS5tYWNfdmVyIHRvIGF2b2lkIHBvc3NpYmxlIGJvb3RzdHJhcCBpc3N1ZXMgZHVyaW5nCisgICAgIyB0aGUgYnVpbGQgb2YgUHl0aG9uIGl0c2VsZiAoZGlzdHV0aWxzIGlzIHVzZWQgdG8gYnVpbGQgc3RhbmRhcmQgbGlicmFyeQorICAgICMgZXh0ZW5zaW9ucykuCisKKyAgICBnbG9iYWwgX1NZU1RFTV9WRVJTSU9OCisKKyAgICBpZiBfU1lTVEVNX1ZFUlNJT04gaXMgTm9uZToKKyAgICAgICAgX1NZU1RFTV9WRVJTSU9OID0gJycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgIyBXZSdyZSBvbiBhIHBsYWluIGRhcndpbiBib3gsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAorICAgICAgICAgICAgIyBiZWhhdmlvdXIuCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyJzxrZXk+UHJvZHVjdFVzZXJWaXNpYmxlVmVyc2lvbjwva2V5PlxzKicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPHN0cmluZz4oLio/KTwvc3RyaW5nPicsIGYucmVhZCgpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX1NZU1RFTV9WRVJTSU9OID0gJy4nLmpvaW4obS5ncm91cCgxKS5zcGxpdCgnLicpWzoyXSkKKyAgICAgICAgICAgICMgZWxzZTogZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91cgorCisgICAgcmV0dXJuIF9TWVNURU1fVkVSU0lPTgorCitkZWYgX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgb3JpZ2luYWwgdW5tb2RpZmllZCB2YWx1ZXMgZm9yIHRlc3RpbmciIiIKKyAgICAjIFRoaXMgaXMgbmVlZGVkIGZvciBoaWdoZXItbGV2ZWwgY3Jvc3MtcGxhdGZvcm0gdGVzdHMgb2YgZ2V0X3BsYXRmb3JtLgorICAgIGZvciBrIGluIGxpc3QoX2NvbmZpZ192YXJzKToKKyAgICAgICAgaWYgay5zdGFydHN3aXRoKF9JTklUUFJFKToKKyAgICAgICAgICAgIGRlbCBfY29uZmlnX3ZhcnNba10KKworZGVmIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKToKKyAgICAiIiJTYXZlIG1vZGlmaWVkIGFuZCBvcmlnaW5hbCB1bm1vZGlmaWVkIHZhbHVlIG9mIGNvbmZpZ3VyYXRpb24gdmFyIiIiCisKKyAgICBvbGR2YWx1ZSA9IF9jb25maWdfdmFycy5nZXQoY3YsICcnKQorICAgIGlmIChvbGR2YWx1ZSAhPSBuZXd2YWx1ZSkgYW5kIChfSU5JVFBSRSArIGN2IG5vdCBpbiBfY29uZmlnX3ZhcnMpOgorICAgICAgICBfY29uZmlnX3ZhcnNbX0lOSVRQUkUgKyBjdl0gPSBvbGR2YWx1ZQorICAgIF9jb25maWdfdmFyc1tjdl0gPSBuZXd2YWx1ZQorCitkZWYgX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoKToKKyAgICAiIiJSZXR1cm5zIFRydWUgaWYgdW5pdmVyc2FsIGJ1aWxkcyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtIiIiCisgICAgIyBBcyBhbiBhcHByb3hpbWF0aW9uLCB3ZSBhc3N1bWUgdGhhdCBpZiB3ZSBhcmUgcnVubmluZyBvbiAxMC40IG9yIGFib3ZlLAorICAgICMgdGhlbiB3ZSBhcmUgcnVubmluZyB3aXRoIGFuIFhjb2RlIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMgdW5pdmVyc2FsCisgICAgIyBidWlsZHMsIGluIHBhcnRpY3VsYXIgLWlzeXNyb290IGFuZCAtYXJjaCBhcmd1bWVudHMgdG8gdGhlIGNvbXBpbGVyLiBUaGlzCisgICAgIyBpcyBpbiBzdXBwb3J0IG9mIGFsbG93aW5nIDEwLjQgdW5pdmVyc2FsIGJ1aWxkcyB0byBydW4gb24gMTAuMy54IHN5c3RlbXMuCisKKyAgICBvc3hfdmVyc2lvbiA9IF9nZXRfc3lzdGVtX3ZlcnNpb24oKQorICAgIGlmIG9zeF92ZXJzaW9uOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvc3hfdmVyc2lvbiA9IHR1cGxlKGludChpKSBmb3IgaSBpbiBvc3hfdmVyc2lvbi5zcGxpdCgnLicpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gJycKKyAgICByZXR1cm4gYm9vbChvc3hfdmVyc2lvbiA+PSAoMTAsIDQpKSBpZiBvc3hfdmVyc2lvbiBlbHNlIEZhbHNlCisKKworZGVmIF9maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKF9jb25maWdfdmFycyk6CisgICAgIiIiRmluZCBhcHByb3ByaWF0ZSBDIGNvbXBpbGVyIGZvciBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyIiIgorCisgICAgIyBJc3N1ZSAjMTM1OTA6CisgICAgIyAgICBUaGUgT1NYIGxvY2F0aW9uIGZvciB0aGUgY29tcGlsZXIgdmFyaWVzIGJldHdlZW4gT1NYCisgICAgIyAgICAob3IgcmF0aGVyIFhjb2RlKSByZWxlYXNlcy4gIFdpdGggb2xkZXIgcmVsZWFzZXMgKHVwLXRvIDEwLjUpCisgICAgIyAgICB0aGUgY29tcGlsZXIgaXMgaW4gL3Vzci9iaW4sIHdpdGggbmV3ZXIgcmVsZWFzZXMgdGhlIGNvbXBpbGVyCisgICAgIyAgICBjYW4gb25seSBiZSBmb3VuZCBpbnNpZGUgWGNvZGUuYXBwIGlmIHRoZSAiQ29tbWFuZCBMaW5lIFRvb2xzIgorICAgICMgICAgYXJlIG5vdCBpbnN0YWxsZWQuCisgICAgIworICAgICMgICAgRnV0aGVybW9yZSwgdGhlIGNvbXBpbGVyIHRoYXQgY2FuIGJlIHVzZWQgdmFyaWVzIGJldHdlZW4KKyAgICAjICAgIFhjb2RlIHJlbGVhc2VzLiBVcHRvIFhjb2RlIDQgaXQgd2FzIHBvc3NpYmxlIHRvIHVzZSAnZ2NjLTQuMicKKyAgICAjICAgIGFzIHRoZSBjb21waWxlciwgYWZ0ZXIgdGhhdCAnY2xhbmcnIHNob3VsZCBiZSB1c2VkIGJlY2F1c2UKKyAgICAjICAgIGdjYy00LjIgaXMgZWl0aGVyIG5vdCBwcmVzZW50LCBvciBhIGNvcHkgb2YgJ2xsdm0tZ2NjJyB0aGF0CisgICAgIyAgICBtaXNjb21waWxlcyBQeXRob24uCisKKyAgICAjIHNraXAgY2hlY2tzIGlmIHRoZSBjb21waWxlciB3YXMgb3ZlcnJpZGVuIHdpdGggYSBDQyBlbnYgdmFyaWFibGUKKyAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworICAgICMgVGhlIENDIGNvbmZpZyB2YXIgbWlnaHQgY29udGFpbiBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAjIElnbm9yZSB0aGVtIHdoaWxlIHNlYXJjaGluZy4KKyAgICBjYyA9IG9sZGNjID0gX2NvbmZpZ192YXJzWydDQyddLnNwbGl0KClbMF0KKyAgICBpZiBub3QgX2ZpbmRfZXhlY3V0YWJsZShjYyk6CisgICAgICAgICMgQ29tcGlsZXIgaXMgbm90IGZvdW5kIG9uIHRoZSBzaGVsbCBzZWFyY2ggUEFUSC4KKyAgICAgICAgIyBOb3cgc2VhcmNoIGZvciBjbGFuZywgZmlyc3Qgb24gUEFUSCAoaWYgdGhlIENvbW1hbmQgTEluZQorICAgICAgICAjIFRvb2xzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW4gLyBvciBpZiB0aGUgdXNlciBoYXMgcHJvdmlkZWQKKyAgICAgICAgIyBhbm90aGVyIGxvY2F0aW9uIHZpYSBDQykuICBJZiBub3QgZm91bmQsIHRyeSB1c2luZyB4Y3J1bgorICAgICAgICAjIHRvIGZpbmQgYW4gdW5pbnN0YWxsZWQgY2xhbmcgKHdpdGhpbiBhIHNlbGVjdGVkIFhjb2RlKS4KKworICAgICAgICAjIE5PVEU6IENhbm5vdCB1c2Ugc3VicHJvY2VzcyBoZXJlIGJlY2F1c2Ugb2YgYm9vdHN0cmFwCisgICAgICAgICMgaXNzdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIGl0c2VsZiAoYW5kIG9zLnBvcGVuIGlzCisgICAgICAgICMgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHN1YnByb2Nlc3MgYW5kIGlzIHRoZXJlZm9yZSBub3QKKyAgICAgICAgIyB1c2FibGUgYXMgd2VsbCkKKworICAgICAgICBjYyA9IF9maW5kX2J1aWxkX3Rvb2woJ2NsYW5nJykKKworICAgIGVsaWYgb3MucGF0aC5iYXNlbmFtZShjYykuc3RhcnRzd2l0aCgnZ2NjJyk6CisgICAgICAgICMgQ29tcGlsZXIgaXMgR0NDLCBjaGVjayBpZiBpdCBpcyBMTFZNLUdDQworICAgICAgICBkYXRhID0gX3JlYWRfb3V0cHV0KCInJXMnIC0tdmVyc2lvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2MucmVwbGFjZSgiJyIsICInXCInXCInIiksKSkKKyAgICAgICAgaWYgJ2xsdm0tZ2NjJyBpbiBkYXRhOgorICAgICAgICAgICAgIyBGb3VuZCBMTFZNLUdDQywgZmFsbCBiYWNrIHRvIGNsYW5nCisgICAgICAgICAgICBjYyA9IF9maW5kX2J1aWxkX3Rvb2woJ2NsYW5nJykKKworICAgIGlmIG5vdCBjYzoKKyAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoCisgICAgICAgICAgICAgICAiQ2Fubm90IGxvY2F0ZSB3b3JraW5nIGNvbXBpbGVyIikKKworICAgIGlmIGNjICE9IG9sZGNjOgorICAgICAgICAjIEZvdW5kIGEgcmVwbGFjZW1lbnQgY29tcGlsZXIuCisgICAgICAgICMgTW9kaWZ5IGNvbmZpZyB2YXJzIHVzaW5nIG5ldyBjb21waWxlciwgaWYgbm90IGFscmVhZHkgZXhwbGljdGx5CisgICAgICAgICMgb3ZlcnJpZGVuIGJ5IGFuIGVudiB2YXJpYWJsZSwgcHJlc2VydmluZyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAgICAgZm9yIGN2IGluIF9DT01QSUxFUl9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgY3Zfc3BsaXQgPSBfY29uZmlnX3ZhcnNbY3ZdLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBjdl9zcGxpdFswXSA9IGNjIGlmIGN2ICE9ICdDWFgnIGVsc2UgY2MgKyAnKysnCisgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgJyAnLmpvaW4oY3Zfc3BsaXQpKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBfcmVtb3ZlX3VuaXZlcnNhbF9mbGFncyhfY29uZmlnX3ZhcnMpOgorICAgICIiIlJlbW92ZSBhbGwgdW5pdmVyc2FsIGJ1aWxkIGFyZ3VtZW50cyBmcm9tIGNvbmZpZyB2YXJzIiIiCisKKyAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgIyBEbyBub3QgYWx0ZXIgYSBjb25maWcgdmFyIGV4cGxpY2l0bHkgb3ZlcnJpZGVuIGJ5IGVudiB2YXIKKyAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKKyAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCisgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocyhfY29uZmlnX3ZhcnMpOgorICAgICIiIlJlbW92ZSBhbnkgdW5zdXBwb3J0ZWQgYXJjaHMgZnJvbSBjb25maWcgdmFycyIiIgorICAgICMgRGlmZmVyZW50IFhjb2RlIHJlbGVhc2VzIHN1cHBvcnQgZGlmZmVyZW50IHNldHMgZm9yICctYXJjaCcKKyAgICAjIGZsYWdzLiBJbiBwYXJ0aWN1bGFyLCBYY29kZSA0Lnggbm8gbG9uZ2VyIHN1cHBvcnRzIHRoZQorICAgICMgUFBDIGFyY2hpdGVjdHVyZXMuCisgICAgIworICAgICMgVGhpcyBjb2RlIGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyAnLWFyY2ggcHBjJyBhbmQgJy1hcmNoIHBwYzY0JworICAgICMgd2hlbiB0aGVzZSBhcmUgbm90IHN1cHBvcnRlZC4gVGhhdCBtYWtlcyBpdCBwb3NzaWJsZSB0bworICAgICMgYnVpbGQgZXh0ZW5zaW9ucyBvbiBPU1ggMTAuNyBhbmQgbGF0ZXIgd2l0aCB0aGUgcHJlYnVpbHQKKyAgICAjIDMyLWJpdCBpbnN0YWxsZXIgb24gdGhlIHB5dGhvbi5vcmcgd2Vic2l0ZS4KKworICAgICMgc2tpcCBjaGVja3MgaWYgdGhlIGNvbXBpbGVyIHdhcyBvdmVycmlkZW4gd2l0aCBhIENDIGVudiB2YXJpYWJsZQorICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIF9jb25maWdfdmFycworCisgICAgaWYgcmUuc2VhcmNoKCctYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgorICAgICAgICAjIE5PVEU6IENhbm5vdCB1c2Ugc3VicHJvY2VzcyBoZXJlIGJlY2F1c2Ugb2YgYm9vdHN0cmFwCisgICAgICAgICMgaXNzdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIGl0c2VsZgorICAgICAgICBzdGF0dXMgPSBvcy5zeXN0ZW0oIiclcycgLWFyY2ggcHBjIC14IGMgL2Rldi9udWxsIDI+L2Rldi9udWxsIiUoCisgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ0NDJ10ucmVwbGFjZSgiJyIsICInXCInXCInIiksKSkKKyAgICAgICAgIyBUaGUgQXBwbGUgY29tcGlsZXIgZHJpdmVycyByZXR1cm4gc3RhdHVzIDI1NSBpZiBubyBQUEMKKyAgICAgICAgaWYgKHN0YXR1cyA+PiA4KSA9PSAyNTU6CisgICAgICAgICAgICAjIENvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBQUEMsIHJlbW92ZSB0aGUgcmVsYXRlZAorICAgICAgICAgICAgIyAnLWFyY2gnIGZsYWdzIGlmIG5vdCBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgYW4KKyAgICAgICAgICAgICMgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytwcGNcdypccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBfb3ZlcnJpZGVfYWxsX2FyY2hzKF9jb25maWdfdmFycyk6CisgICAgIiIiQWxsb3cgb3ZlcnJpZGUgb2YgYWxsIGFyY2hzIHdpdGggQVJDSEZMQUdTIGVudiB2YXIiIiIKKyAgICAjIE5PVEU6IFRoaXMgbmFtZSB3YXMgaW50cm9kdWNlZCBieSBBcHBsZSBpbiBPU1ggMTAuNSBhbmQKKyAgICAjIGlzIHVzZWQgYnkgc2V2ZXJhbCBzY3JpcHRpbmcgbGFuZ3VhZ2VzIGRpc3RyaWJ1dGVkIHdpdGgKKyAgICAjIHRoYXQgT1MgcmVsZWFzZS4KKyAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KKyAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CisgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kICctYXJjaCcgaW4gX2NvbmZpZ192YXJzW2N2XToKKyAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyArICcgJyArIGFyY2gKKyAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgcmVmZXJlbmNlcyB0byBhbnkgU0RLcyBub3QgYXZhaWxhYmxlIiIiCisgICAgIyBJZiB3ZSdyZSBvbiBPU1ggMTAuNSBvciBsYXRlciBhbmQgdGhlIHVzZXIgdHJpZXMgdG8KKyAgICAjIGNvbXBpbGUgYW4gZXh0ZW5zaW9uIHVzaW5nIGFuIFNESyB0aGF0IGlzIG5vdCBwcmVzZW50CisgICAgIyBvbiB0aGUgY3VycmVudCBtYWNoaW5lIGl0IGlzIGJldHRlciB0byBub3QgdXNlIGFuIFNESworICAgICMgdGhhbiB0byBmYWlsLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdpdGgKKyAgICAjIHRoZSBzdGFuZGFsb25nIENvbW1hbmQgTGluZSBUb29scyBhbHRlcm5hdGl2ZSB0byBhCisgICAgIyBmdWxsLWJsb3duIFhjb2RlIGluc3RhbGwgc2luY2UgdGhlIENMVCBwYWNrYWdlcyBkbyBub3QKKyAgICAjIHByb3ZpZGUgU0RLcy4gIElmIHRoZSBTREsgaXMgbm90IHByZXNlbnQsIGl0IGlzIGFzc3VtZWQKKyAgICAjIHRoYXQgdGhlIGhlYWRlciBmaWxlcyBhbmQgZGV2IGxpYnMgaGF2ZSBiZWVuIGluc3RhbGxlZAorICAgICMgdG8gL3VzciBhbmQgL1N5c3RlbS9MaWJyYXJ5IGJ5IGVpdGhlciBhIHN0YW5kYWxvbmUgQ0xUCisgICAgIyBwYWNrYWdlIG9yIHRoZSBDTFQgY29tcG9uZW50IHdpdGhpbiBYY29kZS4KKyAgICBjZmxhZ3MgPSBfY29uZmlnX3ZhcnMuZ2V0KCdDRkxBR1MnLCAnJykKKyAgICBtID0gcmUuc2VhcmNoKHInLWlzeXNyb290XHMrKFxTKyknLCBjZmxhZ3MpCisgICAgaWYgbSBpcyBub3QgTm9uZToKKyAgICAgICAgc2RrID0gbS5ncm91cCgxKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2RrKToKKyAgICAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRlbiBieSBlbnYgdmFyCisgICAgICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWlzeXNyb290XHMrXFMrKD86XHN8JCknLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sIGNjX2FyZ3MpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzdHJpcCAnLWlzeXNyb290IFBBVEgnIGFuZCAnLWFyY2ggQVJDSCcgZnJvbSB0aGUKKyAgICBjb21waWxlIGZsYWdzIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgb25lIHRoZW0gaW4gZXh0cmFfY29tcGlsZV9mbGFncy4KKworICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgJy1hcmNoIEFSQ0gnIGFkZHMgYW5vdGhlciBhcmNoaXRlY3R1cmUgdG8gdGhlCisgICAgYnVpbGQsIHdpdGhvdXQgYSB3YXkgdG8gcmVtb3ZlIGFuIGFyY2hpdGVjdHVyZS4gRnVydGhlcm1vcmUgR0NDIHdpbGwKKyAgICBiYXJmIGlmIG11bHRpcGxlICctaXN5c3Jvb3QnIGFyZ3VtZW50cyBhcmUgcHJlc2VudC4KKyAgICAiIiIKKyAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBGYWxzZQorCisgICAgY29tcGlsZXJfc28gPSBsaXN0KGNvbXBpbGVyX3NvKQorCisgICAgaWYgbm90IF9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCk6CisgICAgICAgICMgT1NYIGJlZm9yZSAxMC40LjAsIHRoZXNlIGRvbid0IHN1cHBvcnQgLWFyY2ggYW5kIC1pc3lzcm9vdCBhdAorICAgICAgICAjIGFsbC4KKyAgICAgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHN0cmlwQXJjaCA9ICctYXJjaCcgaW4gY2NfYXJncworICAgICAgICBzdHJpcFN5c3Jvb3QgPSAnLWlzeXNyb290JyBpbiBjY19hcmdzCisKKyAgICBpZiBzdHJpcEFyY2ggb3IgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctYXJjaCcpCisgICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6CisgICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbiBhbmQgbm90IHN0cmlwQXJjaDoKKyAgICAgICAgIyBVc2VyIHNwZWNpZmllZCBkaWZmZXJlbnQgLWFyY2ggZmxhZ3MgaW4gdGhlIGVudmlyb24sCisgICAgICAgICMgc2VlIGFsc28gZGlzdHV0aWxzLnN5c2NvbmZpZworICAgICAgICBjb21waWxlcl9zbyA9IGNvbXBpbGVyX3NvICsgb3MuZW52aXJvblsnQVJDSEZMQUdTJ10uc3BsaXQoKQorCisgICAgaWYgc3RyaXBTeXNyb290OgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGluZGV4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1pc3lzcm9vdCcpCisgICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6CisgICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgIyBDaGVjayBpZiB0aGUgU0RLIHRoYXQgaXMgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gYWN0dWFsbHkgZXhpc3RzLAorICAgICMgdGhlIHVuaXZlcnNhbCBidWlsZCByZXF1aXJlcyB0aGUgdXNhZ2Ugb2YgYSB1bml2ZXJzYWwgU0RLIGFuZCBub3QgYWxsCisgICAgIyB1c2VycyBoYXZlIHRoYXQgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCisgICAgc3lzcm9vdCA9IE5vbmUKKyAgICBpZiAnLWlzeXNyb290JyBpbiBjY19hcmdzOgorICAgICAgICBpZHggPSBjY19hcmdzLmluZGV4KCctaXN5c3Jvb3QnKQorICAgICAgICBzeXNyb290ID0gY2NfYXJnc1tpZHgrMV0KKyAgICBlbGlmICctaXN5c3Jvb3QnIGluIGNvbXBpbGVyX3NvOgorICAgICAgICBpZHggPSBjb21waWxlcl9zby5pbmRleCgnLWlzeXNyb290JykKKyAgICAgICAgc3lzcm9vdCA9IGNvbXBpbGVyX3NvW2lkeCsxXQorCisgICAgaWYgc3lzcm9vdCBhbmQgbm90IG9zLnBhdGguaXNkaXIoc3lzcm9vdCk6CisgICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKKyAgICAgICAgbG9nLndhcm4oIkNvbXBpbGluZyB3aXRoIGFuIFNESyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBleGlzdDogJXMiLAorICAgICAgICAgICAgICAgIHN5c3Jvb3QpCisgICAgICAgIGxvZy53YXJuKCJQbGVhc2UgY2hlY2sgeW91ciBYY29kZSBpbnN0YWxsYXRpb24iKQorCisgICAgcmV0dXJuIGNvbXBpbGVyX3NvCisKKworZGVmIGN1c3RvbWl6ZV9jb25maWdfdmFycyhfY29uZmlnX3ZhcnMpOgorICAgICIiIkN1c3RvbWl6ZSBQeXRob24gYnVpbGQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCisKKyAgICBDYWxsZWQgaW50ZXJuYWxseSBmcm9tIHN5c2NvbmZpZyB3aXRoIGEgbXV0YWJsZSBtYXBwaW5nCisgICAgY29udGFpbmluZyBuYW1lL3ZhbHVlIHBhaXJzIHBhcnNlZCBmcm9tIHRoZSBjb25maWd1cmVkCisgICAgbWFrZWZpbGUgdXNlZCB0byBidWlsZCB0aGlzIGludGVycHJldGVyLiAgUmV0dXJucworICAgIHRoZSBtYXBwaW5nIHVwZGF0ZWQgYXMgbmVlZGVkIHRvIHJlZmxlY3QgdGhlIGVudmlyb25tZW50CisgICAgaW4gd2hpY2ggdGhlIGludGVycHJldGVyIGlzIHJ1bm5pbmc7IGluIHRoZSBjYXNlIG9mCisgICAgYSBQeXRob24gZnJvbSBhIGJpbmFyeSBpbnN0YWxsZXIsIHRoZSBpbnN0YWxsZWQKKyAgICBlbnZpcm9ubWVudCBtYXkgYmUgdmVyeSBkaWZmZXJlbnQgZnJvbSB0aGUgYnVpbGQKKyAgICBlbnZpcm9ubWVudCwgaS5lLiBkaWZmZXJlbnQgT1MgbGV2ZWxzLCBkaWZmZXJlbnQKKyAgICBidWlsdCB0b29scywgZGlmZmVyZW50IGF2YWlsYWJsZSBDUFUgYXJjaGl0ZWN0dXJlcy4KKworICAgIFRoaXMgY3VzdG9taXphdGlvbiBpcyBwZXJmb3JtZWQgd2hlbmV2ZXIKKyAgICBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9jb25maWdfdmFycygpIGlzIGZpcnN0CisgICAgY2FsbGVkLiAgSXQgbWF5IGJlIHVzZWQgaW4gZW52aXJvbm1lbnRzIHdoZXJlIG5vCisgICAgY29tcGlsZXJzIGFyZSBwcmVzZW50LCBpLmUuIHdoZW4gaW5zdGFsbGluZyBwdXJlCisgICAgUHl0aG9uIGRpc3RzLiAgQ3VzdG9taXphdGlvbiBvZiBjb21waWxlciBwYXRocworICAgIGFuZCBkZXRlY3Rpb24gb2YgdW5hdmFpbGFibGUgYXJjaHMgaXMgZGVmZXJyZWQKKyAgICB1bnRpbCB0aGUgZmlyc3QgZXh0ZW50aW9uIG1vZHVsZSBidWlsZCBpcworICAgIHJlcXVlc3RlZCAoaW4gZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIpLgorCisgICAgQ3VycmVudGx5IGNhbGxlZCBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcKKyAgICAiIiIKKworICAgIGlmIG5vdCBfc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpOgorICAgICAgICAjIE9uIE1hYyBPUyBYIGJlZm9yZSAxMC40LCBjaGVjayBpZiAtYXJjaCBhbmQgLWlzeXNyb290CisgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KKyAgICAgICAgIyBUaGlzIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbnMgb24gYSAxMC4zIHN5c3RlbQorICAgICAgICAjIHVzaW5nIGEgdW5pdmVyc2FsIGJ1aWxkIG9mIHB5dGhvbi4KKyAgICAgICAgX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3MoX2NvbmZpZ192YXJzKQorCisgICAgIyBBbGxvdyB1c2VyIHRvIG92ZXJyaWRlIGFsbCBhcmNocyB3aXRoIEFSQ0hGTEFHUyBlbnYgdmFyCisgICAgX292ZXJyaWRlX2FsbF9hcmNocyhfY29uZmlnX3ZhcnMpCisKKyAgICAjIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNka3MgdGhhdCBhcmUgbm90IGZvdW5kCisgICAgX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoX2NvbmZpZ192YXJzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBjdXN0b21pemVfY29tcGlsZXIoX2NvbmZpZ192YXJzKToKKyAgICAiIiJDdXN0b21pemUgY29tcGlsZXIgcGF0aCBhbmQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCisKKyAgICBUaGlzIGN1c3RvbWl6YXRpb24gaXMgcGVyZm9ybWVkIHdoZW4gdGhlIGZpcnN0CisgICAgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZCBpcyByZXF1ZXN0ZWQKKyAgICBpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcikuCisgICAgIiIiCisKKyAgICAjIEZpbmQgYSBjb21waWxlciB0byB1c2UgZm9yIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzCisgICAgX2ZpbmRfYXBwcm9wcmlhdGVfY29tcGlsZXIoX2NvbmZpZ192YXJzKQorCisgICAgIyBSZW1vdmUgcHBjIGFyY2ggZmxhZ3MgaWYgbm90IHN1cHBvcnRlZCBoZXJlCisgICAgX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocyhfY29uZmlnX3ZhcnMpCisKKyAgICAjIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgYWxsIGFyY2hzIHdpdGggQVJDSEZMQUdTIGVudiB2YXIKKyAgICBfb3ZlcnJpZGVfYWxsX2FyY2hzKF9jb25maWdfdmFycykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgZ2V0X3BsYXRmb3JtX29zeChfY29uZmlnX3ZhcnMsIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSk6CisgICAgIiIiRmlsdGVyIHZhbHVlcyBmb3IgZ2V0X3BsYXRmb3JtKCkiIiIKKyAgICAjIGNhbGxlZCBmcm9tIGdldF9wbGF0Zm9ybSgpIGluIHN5c2NvbmZpZyBhbmQgZGlzdHV0aWxzLnV0aWwKKyAgICAjCisgICAgIyBGb3Igb3VyIHB1cnBvc2VzLCB3ZSdsbCBhc3N1bWUgdGhhdCB0aGUgc3lzdGVtIHZlcnNpb24gZnJvbQorICAgICMgZGlzdHV0aWxzJyBwZXJzcGVjdGl2ZSBpcyB3aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQKKyAgICAjIHRvLiBUaGlzIG1ha2VzIHRoZSBjb21wYXRpYmlsaXR5IHN0b3J5IGEgYml0IG1vcmUgc2FuZSBiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBpcyBnb2luZyB0byBjb21waWxlIGFuZCBsaW5rIGFzIGlmIGl0IHdlcmUKKyAgICAjIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC4KKworICAgIG1hY3ZlciA9IF9jb25maWdfdmFycy5nZXQoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcsICcnKQorICAgIG1hY3JlbGVhc2UgPSBfZ2V0X3N5c3RlbV92ZXJzaW9uKCkgb3IgbWFjdmVyCisgICAgbWFjdmVyID0gbWFjdmVyIG9yIG1hY3JlbGVhc2UKKworICAgIGlmIG1hY3ZlcjoKKyAgICAgICAgcmVsZWFzZSA9IG1hY3ZlcgorICAgICAgICBvc25hbWUgPSAibWFjb3N4IgorCisgICAgICAgICMgVXNlIHRoZSBvcmlnaW5hbCBDRkxBR1MgdmFsdWUsIGlmIGF2YWlsYWJsZSwgc28gdGhhdCB3ZQorICAgICAgICAjIHJldHVybiB0aGUgc2FtZSBtYWNoaW5lIHR5cGUgZm9yIHRoZSBwbGF0Zm9ybSBzdHJpbmcuCisgICAgICAgICMgT3RoZXJ3aXNlLCBkaXN0dXRpbHMgbWF5IGNvbnNpZGVyIHRoaXMgYSBjcm9zcy1jb21waWxpbmcKKyAgICAgICAgIyBjYXNlIGFuZCBkaXNhbGxvdyBpbnN0YWxscy4KKyAgICAgICAgY2ZsYWdzID0gX2NvbmZpZ192YXJzLmdldChfSU5JVFBSRSsnQ0ZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb25maWdfdmFycy5nZXQoJ0NGTEFHUycsICcnKSkKKyAgICAgICAgaWYgKChtYWNyZWxlYXNlICsgJy4nKSA+PSAnMTAuNC4nIGFuZAorICAgICAgICAgICAgJy1hcmNoJyBpbiBjZmxhZ3Muc3RyaXAoKSk6CisgICAgICAgICAgICAjIFRoZSB1bml2ZXJzYWwgYnVpbGQgd2lsbCBidWlsZCBmYXQgYmluYXJpZXMsIGJ1dCBub3Qgb24KKyAgICAgICAgICAgICMgc3lzdGVtcyBiZWZvcmUgMTAuNAorCisgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKKworICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQorICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCisKKyAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gYXJjaHNbMF0KKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JworICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdpbnRlbCcKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDMnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgncHBjNjQnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICdwcGM2NCcsICd4ODZfNjQnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3VuaXZlcnNhbCcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBtYWNoaW5lIHZhbHVlIGZvciBhcmNocz0lciIgJSAoYXJjaHMsKSkKKworICAgICAgICBlbGlmIG1hY2hpbmUgPT0gJ2kzODYnOgorICAgICAgICAgICAgIyBPbiBPU1ggdGhlIG1hY2hpbmUgdHlwZSByZXR1cm5lZCBieSB1bmFtZSBpcyBhbHdheXMgdGhlCisgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcworICAgICAgICAgICAgIyB0aGUgNjQtYml0IHZhcmlhbnQKKyAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JworCisgICAgICAgIGVsaWYgbWFjaGluZSBpbiAoJ1Bvd2VyUEMnLCAnUG93ZXJfTWFjaW50b3NoJyk6CisgICAgICAgICAgICAjIFBpY2sgYSBzYW5lIG5hbWUgZm9yIHRoZSBQUEMgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgIyBTZWUgJ2kzODYnIGNhc2UKKyAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjNjQnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjJworCisgICAgcmV0dXJuIChvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggMmQzNzZkOC4uOWNiYjM2NCAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IGFiYwogaW1wb3J0IGNvZGVjcwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZXJybm8KICMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdAogdHJ5OgpAQCAtMTUsNyArMTQsMTEgQEAKIAogaW1wb3J0IGlvCiBmcm9tIGlvIGltcG9ydCAoX19hbGxfXywgU0VFS19TRVQsIFNFRUtfQ1VSLCBTRUVLX0VORCkKLWZyb20gZXJybm8gaW1wb3J0IEVJTlRSCisKK3ZhbGlkX3NlZWtfZmxhZ3MgPSB7MCwgMSwgMn0gICMgSGFyZHdpcmVkIHZhbHVlcworaWYgaGFzYXR0cihvcywgJ1NFRUtfSE9MRScpIDoKKyAgICB2YWxpZF9zZWVrX2ZsYWdzLmFkZChvcy5TRUVLX0hPTEUpCisgICAgdmFsaWRfc2Vla19mbGFncy5hZGQob3MuU0VFS19EQVRBKQogCiAjIG9wZW4oKSB1c2VzIHN0X2Jsa3NpemUgd2hlbmV2ZXIgd2UgY2FuCiBERUZBVUxUX0JVRkZFUl9TSVpFID0gOCAqIDEwMjQgICMgYnl0ZXMKQEAgLTI0LDIwICsyNywxMiBAQAogIyBkZWZpbmVkIGluIGlvLnB5LiBXZSBkb24ndCB1c2UgcmVhbCBpbmhlcml0YW5jZSB0aG91Z2gsIGJlY2F1c2Ugd2UgZG9uJ3QKICMgd2FudCB0byBpbmhlcml0IHRoZSBDIGltcGxlbWVudGF0aW9ucy4KIAotCi1jbGFzcyBCbG9ja2luZ0lPRXJyb3IoSU9FcnJvcik6Ci0KLSAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gSS9PIHdvdWxkIGJsb2NrIG9uIGEgbm9uLWJsb2NraW5nIEkvTyBzdHJlYW0uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXJybm8sIHN0cmVycm9yLCBjaGFyYWN0ZXJzX3dyaXR0ZW49MCk6Ci0gICAgICAgIHN1cGVyKCkuX19pbml0X18oZXJybm8sIHN0cmVycm9yKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjaGFyYWN0ZXJzX3dyaXR0ZW4sIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNoYXJhY3RlcnNfd3JpdHRlbiBtdXN0IGJlIGEgaW50ZWdlciIpCi0gICAgICAgIHNlbGYuY2hhcmFjdGVyc193cml0dGVuID0gY2hhcmFjdGVyc193cml0dGVuCisjIFJlYmluZCBmb3IgY29tcGF0aWJpbGl0eQorQmxvY2tpbmdJT0Vycm9yID0gQmxvY2tpbmdJT0Vycm9yCiAKIAogZGVmIG9wZW4oZmlsZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsCi0gICAgICAgICBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSk6CisgICAgICAgICBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpOgogCiAgICAgciIiIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuCiAKQEAgLTQ3LDIxICs0MiwyMiBAQAogICAgIHdyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlCiAgICAgcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pCiAKLSAgICBtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZQotICAgIGlzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gJ3InIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dAotICAgIG1vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYKLSAgICBpdCBhbHJlYWR5IGV4aXN0cyksIGFuZCAnYScgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsCi0gICAgbWVhbnMgdGhhdCBhbGwgd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlCi0gICAgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZQotICAgIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3Ci0gICAgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUKLSAgICBtb2RlcyBhcmU6CisgICAgbW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKKyAgICBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQgbW9kZS4gT3RoZXIKKyAgICBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYgaXQgYWxyZWFkeQorICAgIGV4aXN0cyksICd4JyBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uIG9mIGEgbmV3IGZpbGUsIGFuZCAnYScgZm9yIGFwcGVuZGluZworICAgICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZQorICAgIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcworICAgIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LiAoRm9yIHJlYWRpbmcgYW5kCisgICAgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZQorICAgIGF2YWlsYWJsZSBtb2RlcyBhcmU6CiAKICAgICA9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgQ2hhcmFjdGVyIE1lYW5pbmcKICAgICAtLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgJ3InICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpCiAgICAgJ3cnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3QKKyAgICAneCcgICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgYW5kIG9wZW4gaXQgZm9yIHdyaXRpbmcKICAgICAnYScgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzCiAgICAgJ2InICAgICAgIGJpbmFyeSBtb2RlCiAgICAgJ3QnICAgICAgIHRleHQgbW9kZSAoZGVmYXVsdCkKQEAgLTcyLDcgKzY4LDggQEAKIAogICAgIFRoZSBkZWZhdWx0IG1vZGUgaXMgJ3J0JyAob3BlbiBmb3IgcmVhZGluZyB0ZXh0KS4gRm9yIGJpbmFyeSByYW5kb20KICAgICBhY2Nlc3MsIHRoZSBtb2RlICd3K2InIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGUKLSAgICAncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uCisgICAgJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLiBUaGUgJ3gnIG1vZGUgaW1wbGllcyAndycgYW5kCisgICAgcmFpc2VzIGFuIGBGaWxlRXhpc3RzRXJyb3JgIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLgogCiAgICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLAogICAgIGV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpbgpAQCAtMTMyLDYgKzEyOSwxMiBAQAogICAgIGJlIGtlcHQgb3BlbiB3aGVuIHRoZSBmaWxlIGlzIGNsb3NlZC4gVGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4gYSBmaWxlIG5hbWUgaXMKICAgICBnaXZlbiBhbmQgbXVzdCBiZSBUcnVlIGluIHRoYXQgY2FzZS4KIAorICAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZQorICAgIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nCisgICAgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlCisgICAgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvCisgICAgcGFzc2luZyBOb25lKS4KKwogICAgIG9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmQKICAgICB0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nCiAgICAgYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoJ3cnLApAQCAtMTU3LDggKzE2MCw5IEBACiAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShlcnJvcnMsIHN0cik6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBlcnJvcnM6ICVyIiAlIGVycm9ycykKICAgICBtb2RlcyA9IHNldChtb2RlKQotICAgIGlmIG1vZGVzIC0gc2V0KCJhcndiK3RVIikgb3IgbGVuKG1vZGUpID4gbGVuKG1vZGVzKToKKyAgICBpZiBtb2RlcyAtIHNldCgiYXhyd2IrdFUiKSBvciBsZW4obW9kZSkgPiBsZW4obW9kZXMpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIG1vZGU6ICVyIiAlIG1vZGUpCisgICAgY3JlYXRpbmcgPSAieCIgaW4gbW9kZXMKICAgICByZWFkaW5nID0gInIiIGluIG1vZGVzCiAgICAgd3JpdGluZyA9ICJ3IiBpbiBtb2RlcwogICAgIGFwcGVuZGluZyA9ICJhIiBpbiBtb2RlcwpAQCAtMTY2LDE0ICsxNzAsMTQgQEAKICAgICB0ZXh0ID0gInQiIGluIG1vZGVzCiAgICAgYmluYXJ5ID0gImIiIGluIG1vZGVzCiAgICAgaWYgIlUiIGluIG1vZGVzOgotICAgICAgICBpZiB3cml0aW5nIG9yIGFwcGVuZGluZzoKKyAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmc6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCB1c2UgVSBhbmQgd3JpdGluZyBtb2RlIGF0IG9uY2UiKQogICAgICAgICByZWFkaW5nID0gVHJ1ZQogICAgIGlmIHRleHQgYW5kIGJpbmFyeToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSB0ZXh0IGFuZCBiaW5hcnkgbW9kZSBhdCBvbmNlIikKLSAgICBpZiByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDE6CisgICAgaWYgY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDE6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGhhdmUgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSBhdCBvbmNlIikKLSAgICBpZiBub3QgKHJlYWRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcpOgorICAgIGlmIG5vdCAoY3JlYXRpbmcgb3IgcmVhZGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkL3dyaXRlL2FwcGVuZCBtb2RlIikKICAgICBpZiBiaW5hcnkgYW5kIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZW5jb2RpbmcgYXJndW1lbnQiKQpAQCAtMTgyLDExICsxODYsMTIgQEAKICAgICBpZiBiaW5hcnkgYW5kIG5ld2xpbmUgaXMgbm90IE5vbmU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhIG5ld2xpbmUgYXJndW1lbnQiKQogICAgIHJhdyA9IEZpbGVJTyhmaWxlLAorICAgICAgICAgICAgICAgICAoY3JlYXRpbmcgYW5kICJ4IiBvciAiIikgKwogICAgICAgICAgICAgICAgICAocmVhZGluZyBhbmQgInIiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgICh3cml0aW5nIGFuZCAidyIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKGFwcGVuZGluZyBhbmQgImEiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgICh1cGRhdGluZyBhbmQgIisiIG9yICIiKSwKLSAgICAgICAgICAgICAgICAgY2xvc2VmZCkKKyAgICAgICAgICAgICAgICAgY2xvc2VmZCwgb3BlbmVyPW9wZW5lcikKICAgICBsaW5lX2J1ZmZlcmluZyA9IEZhbHNlCiAgICAgaWYgYnVmZmVyaW5nID09IDEgb3IgYnVmZmVyaW5nIDwgMCBhbmQgcmF3LmlzYXR0eSgpOgogICAgICAgICBidWZmZXJpbmcgPSAtMQpAQCAtMjA4LDcgKzIxMyw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGhhdmUgdW5idWZmZXJlZCB0ZXh0IEkvTyIpCiAgICAgaWYgdXBkYXRpbmc6CiAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyaW5nKQotICAgIGVsaWYgd3JpdGluZyBvciBhcHBlbmRpbmc6CisgICAgZWxpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRXcml0ZXIocmF3LCBidWZmZXJpbmcpCiAgICAgZWxpZiByZWFkaW5nOgogICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcmluZykKQEAgLTMwNSw2ICszMTAsNyBAQAogICAgICAgICAqIDAgLS0gc3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCk7IG9mZnNldCBzaG91bGQgYmUgemVybyBvciBwb3NpdGl2ZQogICAgICAgICAqIDEgLS0gY3VycmVudCBzdHJlYW0gcG9zaXRpb247IG9mZnNldCBtYXkgYmUgbmVnYXRpdmUKICAgICAgICAgKiAyIC0tIGVuZCBvZiBzdHJlYW07IG9mZnNldCBpcyB1c3VhbGx5IG5lZ2F0aXZlCisgICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgLyBmaWxlIHN5c3RlbXMgY291bGQgcHJvdmlkZSBhZGRpdGlvbmFsIHZhbHVlcy4KIAogICAgICAgICBSZXR1cm4gYW4gaW50IGluZGljYXRpbmcgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4KICAgICAgICAgIiIiCkBAIC0zNDAsOCArMzQ2LDEwIEBACiAgICAgICAgIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBub3Qgc2VsZi5fX2Nsb3NlZDoKLSAgICAgICAgICAgIHNlbGYuZmx1c2goKQotICAgICAgICAgICAgc2VsZi5fX2Nsb3NlZCA9IFRydWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fX2Nsb3NlZCA9IFRydWUKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAiIiJEZXN0cnVjdG9yLiAgQ2FsbHMgY2xvc2UoKS4iIiIKQEAgLTg2NSw3ICs4NzMsNyBAQAogICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgogICAgICAgICAgICAgc2VsZi5fcG9zID0gbWF4KDAsIGxlbihzZWxmLl9idWZmZXIpICsgcG9zKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgdmFsdWUiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwogCiAgICAgZGVmIHRlbGwoc2VsZik6CkBAIC05NTQsMTUgKzk2MiwxOSBAQAogICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3Igd2hlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgaXMgdW5zcGVjaWZpZWQuCiAgICAgICAgIGlmIG4gaXMgTm9uZSBvciBuID09IC0xOgogICAgICAgICAgICAgc2VsZi5fcmVzZXRfcmVhZF9idWYoKQorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnJhdywgJ3JlYWRhbGwnKToKKyAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWRhbGwoKQorICAgICAgICAgICAgICAgIGlmIGNodW5rIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZbcG9zOl0gb3IgTm9uZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZbcG9zOl0gKyBjaHVuawogICAgICAgICAgICAgY2h1bmtzID0gW2J1Zltwb3M6XV0gICMgU3RyaXAgdGhlIGNvbnN1bWVkIGJ5dGVzLgogICAgICAgICAgICAgY3VycmVudF9zaXplID0gMAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFJlYWQgdW50aWwgRU9GIG9yIHVudGlsIHJlYWQoKSB3b3VsZCBibG9jay4KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKQEAgLTk4NCw5ICs5OTYsNyBAQAogICAgICAgICB3aGlsZSBhdmFpbCA8IG46CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgbm9kYXRhX3ZhbCA9IGNodW5rCkBAIC0xMDE5LDkgKzEwMjksNyBAQAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLnJhdy5yZWFkKHRvX3JlYWQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CkBAIC0xMDQ2LDcgKzEwNTQsNyBAQAogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpIC0gbGVuKHNlbGYuX3JlYWRfYnVmKSArIHNlbGYuX3JlYWRfcG9zCiAKICAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKLSAgICAgICAgaWYgbm90ICgwIDw9IHdoZW5jZSA8PSAyKToKKyAgICAgICAgaWYgd2hlbmNlIG5vdCBpbiB2YWxpZF9zZWVrX2ZsYWdzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICB3aXRoIHNlbGYuX3JlYWRfbG9jazoKICAgICAgICAgICAgIGlmIHdoZW5jZSA9PSAxOgpAQCAtMTA2NCwxOSArMTA3MiwxMyBAQAogICAgIERFRkFVTFRfQlVGRkVSX1NJWkUuCiAgICAgIiIiCiAKLSAgICBfd2FybmluZ19zdGFja19vZmZzZXQgPSAyCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LAotICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCBtYXhfYnVmZmVyX3NpemU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSk6CiAgICAgICAgIGlmIG5vdCByYXcud3JpdGFibGUoKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJyJyYXciIGFyZ3VtZW50IG11c3QgYmUgd3JpdGFibGUuJykKIAogICAgICAgICBfQnVmZmVyZWRJT01peGluLl9faW5pdF9fKHNlbGYsIHJhdykKICAgICAgICAgaWYgYnVmZmVyX3NpemUgPD0gMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgYnVmZmVyIHNpemUiKQotICAgICAgICBpZiBtYXhfYnVmZmVyX3NpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FybmluZ19zdGFja19vZmZzZXQpCiAgICAgICAgIHNlbGYuYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZQogICAgICAgICBzZWxmLl93cml0ZV9idWYgPSBieXRlYXJyYXkoKQogICAgICAgICBzZWxmLl93cml0ZV9sb2NrID0gTG9jaygpCkBAIC0xMTI2LDEzICsxMTI4LDExIEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcud3JpdGUoc2VsZi5fd3JpdGVfYnVmKQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzZWxmLnJhdyBzaG91bGQgaW1wbGVtZW50IFJhd0lPQmFzZTogaXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCByYWlzZSBCbG9ja2luZ0lPRXJyb3IiKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBuIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgQmxvY2tpbmdJT0Vycm9yKAogICAgICAgICAgICAgICAgICAgICBlcnJuby5FQUdBSU4sCkBAIC0xMTQ1LDggKzExNDUsOCBAQAogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpICsgbGVuKHNlbGYuX3dyaXRlX2J1ZikKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UiKQorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfbG9jazoKICAgICAgICAgICAgIHNlbGYuX2ZsdXNoX3VubG9ja2VkKCkKICAgICAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnNlZWsoc2VsZiwgcG9zLCB3aGVuY2UpCkBAIC0xMTY4LDE1ICsxMTY4LDExIEBACiAgICAgIyBYWFggVGhlIHVzZWZ1bG5lc3Mgb2YgdGhpcyAoY29tcGFyZWQgdG8gaGF2aW5nIHR3byBzZXBhcmF0ZSBJTwogICAgICMgb2JqZWN0cykgaXMgcXVlc3Rpb25hYmxlLgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRlciwgd3JpdGVyLAotICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCBtYXhfYnVmZmVyX3NpemU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCiAKICAgICAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdHdvIFJhd0lPIGluc3RhbmNlcy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIG1heF9idWZmZXJfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotCiAgICAgICAgIGlmIG5vdCByZWFkZXIucmVhZGFibGUoKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJyJyZWFkZXIiIGFyZ3VtZW50IG11c3QgYmUgcmVhZGFibGUuJykKIApAQCAtMTIzMywxNyArMTIyOSwxNCBAQAogICAgIGRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuCiAgICAgIiIiCiAKLSAgICBfd2FybmluZ19zdGFja19vZmZzZXQgPSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LAotICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCBtYXhfYnVmZmVyX3NpemU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSk6CiAgICAgICAgIHJhdy5fY2hlY2tTZWVrYWJsZSgpCiAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyLl9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemUpCi0gICAgICAgIEJ1ZmZlcmVkV3JpdGVyLl9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemUsIG1heF9idWZmZXJfc2l6ZSkKKyAgICAgICAgQnVmZmVyZWRXcml0ZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSkKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UiKQorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICBpZiBzZWxmLl9yZWFkX2J1ZjoKICAgICAgICAgICAgICMgVW5kbyByZWFkIGFoZWFkLgpAQCAtMTQ1NSw3ICsxNDQ4LDcgQEAKICAgICByIiIiQ2hhcmFjdGVyIGFuZCBsaW5lIGJhc2VkIGxheWVyIG92ZXIgYSBCdWZmZXJlZElPQmFzZSBvYmplY3QsIGJ1ZmZlci4KIAogICAgIGVuY29kaW5nIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHRoZSBzdHJlYW0gd2lsbCBiZQotICAgIGRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcuCisgICAgZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuCiAKICAgICBlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZSB0aGUKICAgICBjb2RlY3MucmVnaXN0ZXIpIGFuZCBkZWZhdWx0cyB0byAic3RyaWN0Ii4KQEAgLTE0NzYsNiArMTQ2OSw5IEBACiAKICAgICBfQ0hVTktfU0laRSA9IDIwNDgKIAorICAgICMgVGhlIHdyaXRlX3Rocm91Z2ggYXJndW1lbnQgaGFzIG5vIGVmZmVjdCBoZXJlIHNpbmNlIHRoaXMKKyAgICAjIGltcGxlbWVudGF0aW9uIGFsd2F5cyB3cml0ZXMgdGhyb3VnaC4gIFRoZSBhcmd1bWVudCBpcyBwcmVzZW50IG9ubHkKKyAgICAjIHNvIHRoYXQgdGhlIHNpZ25hdHVyZSBjYW4gbWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiB0aGUgQyB2ZXJzaW9uLgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsCiAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPUZhbHNlLCB3cml0ZV90aHJvdWdoPUZhbHNlKToKICAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmV3bGluZSwgc3RyKToKQEAgLTE0OTQsNyArMTQ5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgSW1wb3J0aW5nIGxvY2FsZSBtYXkgZmFpbCBpZiBQeXRob24gaXMgYmVpbmcgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKIAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbmNvZGluZywgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZW5jb2Rpbmc6ICVyIiAlIGVuY29kaW5nKQpAQCAtMTUyMSw2ICsxNTE3LDcgQEAKICAgICAgICAgc2VsZi5fc25hcHNob3QgPSBOb25lICAjIGluZm8gZm9yIHJlY29uc3RydWN0aW5nIGRlY29kZXIgc3RhdGUKICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBzZWxmLl90ZWxsaW5nID0gc2VsZi5idWZmZXIuc2Vla2FibGUoKQogICAgICAgICBzZWxmLl9oYXNfcmVhZDEgPSBoYXNhdHRyKHNlbGYuYnVmZmVyLCAncmVhZDEnKQorICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IDAuMAogCiAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlIGFuZCBzZWxmLndyaXRhYmxlKCk6CiAgICAgICAgICAgICBwb3NpdGlvbiA9IHNlbGYuYnVmZmVyLnRlbGwoKQpAQCAtMTU4OSw4ICsxNTg2LDEwIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuYnVmZmVyIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICBzZWxmLmZsdXNoKCkKLSAgICAgICAgICAgIHNlbGYuYnVmZmVyLmNsb3NlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5idWZmZXIuY2xvc2UoKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNsb3NlZChzZWxmKToKQEAgLTE2OTMsNyArMTY5MiwxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaW5wdXRfY2h1bmsgPSBzZWxmLmJ1ZmZlci5yZWFkKHNlbGYuX0NIVU5LX1NJWkUpCiAgICAgICAgIGVvZiA9IG5vdCBpbnB1dF9jaHVuawotICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLl9kZWNvZGVyLmRlY29kZShpbnB1dF9jaHVuaywgZW9mKSkKKyAgICAgICAgZGVjb2RlZF9jaGFycyA9IHNlbGYuX2RlY29kZXIuZGVjb2RlKGlucHV0X2NodW5rLCBlb2YpCisgICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKGRlY29kZWRfY2hhcnMpCisgICAgICAgIGlmIGRlY29kZWRfY2hhcnM6CisgICAgICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IGxlbihpbnB1dF9jaHVuaykgLyBsZW4oc2VsZi5fZGVjb2RlZF9jaGFycykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gMC4wCiAKICAgICAgICAgaWYgc2VsZi5fdGVsbGluZzoKICAgICAgICAgICAgICMgQXQgdGhlIHNuYXBzaG90IHBvaW50LCBsZW4oZGVjX2J1ZmZlcikgYnl0ZXMgYmVmb3JlIHRoZSByZWFkLApAQCAtMTc0NywyMCArMTc1MSw1NiBAQAogICAgICAgICAjIGZvcndhcmQgdW50aWwgaXQgZ2l2ZXMgdXMgZW5vdWdoIGRlY29kZWQgY2hhcmFjdGVycy4KICAgICAgICAgc2F2ZWRfc3RhdGUgPSBkZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYXN0IHNlYXJjaCBmb3IgYW4gYWNjZXB0YWJsZSBzdGFydCBwb2ludCwgY2xvc2UgdG8gb3VyCisgICAgICAgICAgICAjIGN1cnJlbnQgcG9zLgorICAgICAgICAgICAgIyBSYXRpb25hbGU6IGNhbGxpbmcgZGVjb2Rlci5kZWNvZGUoKSBoYXMgYSBsYXJnZSBvdmVyaGVhZAorICAgICAgICAgICAgIyByZWdhcmRsZXNzIG9mIGNodW5rIHNpemU7IHdlIHdhbnQgdGhlIG51bWJlciBvZiBzdWNoIGNhbGxzIHRvCisgICAgICAgICAgICAjIGJlIE8oMSkgaW4gbW9zdCBzaXR1YXRpb25zIChjb21tb24gZGVjb2RlcnMsIG5vbi1jcmF6eSBpbnB1dCkuCisgICAgICAgICAgICAjIEFjdHVhbGx5LCBpdCB3aWxsIGJlIGV4YWN0bHkgMSBmb3IgZml4ZWQtc2l6ZSBjb2RlY3MgKGFsbAorICAgICAgICAgICAgIyA4LWJpdCBjb2RlY3MsIGFsc28gVVRGLTE2IGFuZCBVVEYtMzIpLgorICAgICAgICAgICAgc2tpcF9ieXRlcyA9IGludChzZWxmLl9iMmNyYXRpbyAqIGNoYXJzX3RvX3NraXApCisgICAgICAgICAgICBza2lwX2JhY2sgPSAxCisgICAgICAgICAgICBhc3NlcnQgc2tpcF9ieXRlcyA8PSBsZW4obmV4dF9pbnB1dCkKKyAgICAgICAgICAgIHdoaWxlIHNraXBfYnl0ZXMgPiAwOgorICAgICAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUoKGInJywgZGVjX2ZsYWdzKSkKKyAgICAgICAgICAgICAgICAjIERlY29kZSB1cCB0byB0ZW1wdGF0aXZlIHN0YXJ0IHBvaW50CisgICAgICAgICAgICAgICAgbiA9IGxlbihkZWNvZGVyLmRlY29kZShuZXh0X2lucHV0Wzpza2lwX2J5dGVzXSkpCisgICAgICAgICAgICAgICAgaWYgbiA8PSBjaGFyc190b19za2lwOgorICAgICAgICAgICAgICAgICAgICBiLCBkID0gZGVjb2Rlci5nZXRzdGF0ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBCZWZvcmUgcG9zIGFuZCBubyBieXRlcyBidWZmZXJlZCBpbiBkZWNvZGVyID0+IE9LCisgICAgICAgICAgICAgICAgICAgICAgICBkZWNfZmxhZ3MgPSBkCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc190b19za2lwIC09IG4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICMgU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljCisgICAgICAgICAgICAgICAgICAgIHNraXBfYnl0ZXMgLT0gbGVuKGIpCisgICAgICAgICAgICAgICAgICAgIHNraXBfYmFjayA9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFdlJ3JlIHRvbyBmYXIgYWhlYWQsIHNraXAgYmFjayBhIGJpdAorICAgICAgICAgICAgICAgICAgICBza2lwX2J5dGVzIC09IHNraXBfYmFjaworICAgICAgICAgICAgICAgICAgICBza2lwX2JhY2sgPSBza2lwX2JhY2sgKiAyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNraXBfYnl0ZXMgPSAwCisgICAgICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQorCiAgICAgICAgICAgICAjIE5vdGUgb3VyIGluaXRpYWwgc3RhcnQgcG9pbnQuCi0gICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCi0gICAgICAgICAgICBzdGFydF9wb3MgPSBwb3NpdGlvbgotICAgICAgICAgICAgc3RhcnRfZmxhZ3MsIGJ5dGVzX2ZlZCwgY2hhcnNfZGVjb2RlZCA9IGRlY19mbGFncywgMCwgMAotICAgICAgICAgICAgbmVlZF9lb2YgPSAwCisgICAgICAgICAgICBzdGFydF9wb3MgPSBwb3NpdGlvbiArIHNraXBfYnl0ZXMKKyAgICAgICAgICAgIHN0YXJ0X2ZsYWdzID0gZGVjX2ZsYWdzCisgICAgICAgICAgICBpZiBjaGFyc190b19za2lwID09IDA6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHN0YXJ0IHBvaW50LgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYWNrX2Nvb2tpZShzdGFydF9wb3MsIHN0YXJ0X2ZsYWdzKQogCiAgICAgICAgICAgICAjIEZlZWQgdGhlIGRlY29kZXIgb25lIGJ5dGUgYXQgYSB0aW1lLiAgQXMgd2UgZ28sIG5vdGUgdGhlCiAgICAgICAgICAgICAjIG5lYXJlc3QgInNhZmUgc3RhcnQgcG9pbnQiIGJlZm9yZSB0aGUgY3VycmVudCBsb2NhdGlvbgogICAgICAgICAgICAgIyAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCiAgICAgICAgICAgICAjIGNhbiBzYWZlbHkgc3RhcnQgZnJvbSB0aGVyZSBhbmQgYWR2YW5jZSB0byB0aGlzIGxvY2F0aW9uKS4KLSAgICAgICAgICAgIG5leHRfYnl0ZSA9IGJ5dGVhcnJheSgxKQotICAgICAgICAgICAgZm9yIG5leHRfYnl0ZVswXSBpbiBuZXh0X2lucHV0OgorICAgICAgICAgICAgYnl0ZXNfZmVkID0gMAorICAgICAgICAgICAgbmVlZF9lb2YgPSAwCisgICAgICAgICAgICAjIENoYXJzIGRlY29kZWQgc2luY2UgYHN0YXJ0X3Bvc2AKKyAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgPSAwCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShza2lwX2J5dGVzLCBsZW4obmV4dF9pbnB1dCkpOgogICAgICAgICAgICAgICAgIGJ5dGVzX2ZlZCArPSAxCi0gICAgICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBsZW4oZGVjb2Rlci5kZWNvZGUobmV4dF9ieXRlKSkKKyAgICAgICAgICAgICAgICBjaGFyc19kZWNvZGVkICs9IGxlbihkZWNvZGVyLmRlY29kZShuZXh0X2lucHV0W2k6aSsxXSkpCiAgICAgICAgICAgICAgICAgZGVjX2J1ZmZlciwgZGVjX2ZsYWdzID0gZGVjb2Rlci5nZXRzdGF0ZSgpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRlY19idWZmZXIgYW5kIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcDoKICAgICAgICAgICAgICAgICAgICAgIyBEZWNvZGVyIGJ1ZmZlciBpcyBlbXB0eSwgc28gdGhpcyBpcyBhIHNhZmUgc3RhcnQgcG9pbnQuCkBAIC0xODE5LDggKzE4NTksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXIucmVzZXQoKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uCiAgICAgICAgIGlmIHdoZW5jZSAhPSAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgKCVyLCBzaG91bGQgYmUgMCwgMSBvciAyKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbmNlLCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB3aGVuY2UgKCVyKSIgJSAod2hlbmNlLCkpCiAgICAgICAgIGlmIGNvb2tpZSA8IDA6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBzZWVrIHBvc2l0aW9uICVyIiAlIChjb29raWUsKSkKICAgICAgICAgc2VsZi5mbHVzaCgpCmRpZmYgLS1naXQgYS9MaWIvX3N0cnB0aW1lLnB5IGIvTGliL19zdHJwdGltZS5weQppbmRleCBmYTA2Mzc2Li5iMGNkM2Q2IDEwMDY0NAotLS0gYS9MaWIvX3N0cnB0aW1lLnB5CisrKyBiL0xpYi9fc3RycHRpbWUucHkKQEAgLTQ4NiwxOSArNDg2LDE5IEBACiAKICAgICByZXR1cm4gKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwKLSAgICAgICAgICAgIHdlZWtkYXksIGp1bGlhbiwgdHosIGdtdG9mZiwgdHpuYW1lKSwgZnJhY3Rpb24KKyAgICAgICAgICAgIHdlZWtkYXksIGp1bGlhbiwgdHosIHR6bmFtZSwgZ210b2ZmKSwgZnJhY3Rpb24KIAogZGVmIF9zdHJwdGltZV90aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgdGltZSBzdHJ1Y3QgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCiAgICAgZm9ybWF0IHN0cmluZy4iIiIKICAgICB0dCA9IF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0KVswXQotICAgIHJldHVybiB0aW1lLnN0cnVjdF90aW1lKHR0Wzo5XSkKKyAgICByZXR1cm4gdGltZS5zdHJ1Y3RfdGltZSh0dFs6dGltZS5fU1RSVUNUX1RNX0lURU1TXSkKIAogZGVmIF9zdHJwdGltZV9kYXRldGltZShjbHMsIGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgY2xhc3MgY2xzIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQogICAgIGZvcm1hdCBzdHJpbmcuIiIiCiAgICAgdHQsIGZyYWN0aW9uID0gX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQpCi0gICAgZ210b2ZmLCB0em5hbWUgPSB0dFstMjpdCisgICAgdHpuYW1lLCBnbXRvZmYgPSB0dFstMjpdCiAgICAgYXJncyA9IHR0Wzo2XSArIChmcmFjdGlvbiwpCiAgICAgaWYgZ210b2ZmIGlzIG5vdCBOb25lOgogICAgICAgICB0emRlbHRhID0gZGF0ZXRpbWVfdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKQpkaWZmIC0tZ2l0IGEvTGliL2FiYy5weSBiL0xpYi9hYmMucHkKaW5kZXggYTZjMmRjNC4uMDk3NzhlOCAxMDA2NDQKLS0tIGEvTGliL2FiYy5weQorKysgYi9MaWIvYWJjLnB5CkBAIC0yNiw3ICsyNiw4IEBACiAKIAogY2xhc3MgYWJzdHJhY3RjbGFzc21ldGhvZChjbGFzc21ldGhvZCk6Ci0gICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBjbGFzc21ldGhvZHMuCisgICAgIiIiCisgICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBjbGFzc21ldGhvZHMuCiAKICAgICBTaW1pbGFyIHRvIGFic3RyYWN0bWV0aG9kLgogCkBAIC0zNiw2ICszNyw5IEBACiAgICAgICAgICAgICBAYWJzdHJhY3RjbGFzc21ldGhvZAogICAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X2NsYXNzbWV0aG9kKGNscywgLi4uKToKICAgICAgICAgICAgICAgICAuLi4KKworICAgICdhYnN0cmFjdGNsYXNzbWV0aG9kJyBpcyBkZXByZWNhdGVkLiBVc2UgJ2NsYXNzbWV0aG9kJyB3aXRoCisgICAgJ2Fic3RyYWN0bWV0aG9kJyBpbnN0ZWFkLgogICAgICIiIgogCiAgICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCkBAIC00Niw3ICs1MCw4IEBACiAKIAogY2xhc3MgYWJzdHJhY3RzdGF0aWNtZXRob2Qoc3RhdGljbWV0aG9kKToKLSAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHN0YXRpY21ldGhvZHMuCisgICAgIiIiCisgICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBzdGF0aWNtZXRob2RzLgogCiAgICAgU2ltaWxhciB0byBhYnN0cmFjdG1ldGhvZC4KIApAQCAtNTYsNiArNjEsOSBAQAogICAgICAgICAgICAgQGFic3RyYWN0c3RhdGljbWV0aG9kCiAgICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CiAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAnYWJzdHJhY3RzdGF0aWNtZXRob2QnIGlzIGRlcHJlY2F0ZWQuIFVzZSAnc3RhdGljbWV0aG9kJyB3aXRoCisgICAgJ2Fic3RyYWN0bWV0aG9kJyBpbnN0ZWFkLgogICAgICIiIgogCiAgICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCkBAIC02Niw3ICs3NCw4IEBACiAKIAogY2xhc3MgYWJzdHJhY3Rwcm9wZXJ0eShwcm9wZXJ0eSk6Ci0gICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBwcm9wZXJ0aWVzLgorICAgICIiIgorICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgcHJvcGVydGllcy4KIAogICAgIFJlcXVpcmVzIHRoYXQgdGhlIG1ldGFjbGFzcyBpcyBBQkNNZXRhIG9yIGRlcml2ZWQgZnJvbSBpdC4gIEEKICAgICBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gQUJDTWV0YSBjYW5ub3QgYmUKQEAgLTg4LDcgKzk3LDExIEBACiAgICAgICAgICAgICBkZWYgZ2V0eChzZWxmKTogLi4uCiAgICAgICAgICAgICBkZWYgc2V0eChzZWxmLCB2YWx1ZSk6IC4uLgogICAgICAgICAgICAgeCA9IGFic3RyYWN0cHJvcGVydHkoZ2V0eCwgc2V0eCkKKworICAgICdhYnN0cmFjdHByb3BlcnR5JyBpcyBkZXByZWNhdGVkLiBVc2UgJ3Byb3BlcnR5JyB3aXRoICdhYnN0cmFjdG1ldGhvZCcKKyAgICBpbnN0ZWFkLgogICAgICIiIgorCiAgICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCiAKIApAQCAtMTMzLDExICsxNDYsMTQgQEAKICAgICAgICAgcmV0dXJuIGNscwogCiAgICAgZGVmIHJlZ2lzdGVyKGNscywgc3ViY2xhc3MpOgotICAgICAgICAiIiJSZWdpc3RlciBhIHZpcnR1YWwgc3ViY2xhc3Mgb2YgYW4gQUJDLiIiIgorICAgICAgICAiIiJSZWdpc3RlciBhIHZpcnR1YWwgc3ViY2xhc3Mgb2YgYW4gQUJDLgorCisgICAgICAgIFJldHVybnMgdGhlIHN1YmNsYXNzLCB0byBhbGxvdyB1c2FnZSBhcyBhIGNsYXNzIGRlY29yYXRvci4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1YmNsYXNzLCB0eXBlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuIG9ubHkgcmVnaXN0ZXIgY2xhc3NlcyIpCiAgICAgICAgIGlmIGlzc3ViY2xhc3Moc3ViY2xhc3MsIGNscyk6Ci0gICAgICAgICAgICByZXR1cm4gICMgQWxyZWFkeSBhIHN1YmNsYXNzCisgICAgICAgICAgICByZXR1cm4gc3ViY2xhc3MgICMgQWxyZWFkeSBhIHN1YmNsYXNzCiAgICAgICAgICMgU3VidGxlOiB0ZXN0IGZvciBjeWNsZXMgKmFmdGVyKiB0ZXN0aW5nIGZvciAiYWxyZWFkeSBhIHN1YmNsYXNzIjsKICAgICAgICAgIyB0aGlzIG1lYW5zIHdlIGFsbG93IFgucmVnaXN0ZXIoWCkgYW5kIGludGVycHJldCBpdCBhcyBhIG5vLW9wLgogICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgc3ViY2xhc3MpOgpAQCAtMTQ1LDYgKzE2MSw3IEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlJlZnVzaW5nIHRvIGNyZWF0ZSBhbiBpbmhlcml0YW5jZSBjeWNsZSIpCiAgICAgICAgIGNscy5fYWJjX3JlZ2lzdHJ5LmFkZChzdWJjbGFzcykKICAgICAgICAgQUJDTWV0YS5fYWJjX2ludmFsaWRhdGlvbl9jb3VudGVyICs9IDEgICMgSW52YWxpZGF0ZSBuZWdhdGl2ZSBjYWNoZQorICAgICAgICByZXR1cm4gc3ViY2xhc3MKIAogICAgIGRlZiBfZHVtcF9yZWdpc3RyeShjbHMsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIkRlYnVnIGhlbHBlciB0byBwcmludCB0aGUgQUJDIHJlZ2lzdHJ5LiIiIgpkaWZmIC0tZ2l0IGEvTGliL2FpZmMucHkgYi9MaWIvYWlmYy5weQppbmRleCA4NDFmNWFlLi5hMTliMzhmIDEwMDY0NAotLS0gYS9MaWIvYWlmYy5weQorKysgYi9MaWIvYWlmYy5weQpAQCAtMTM2LDYgKzEzNiw3IEBACiAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBidWlsdGlucworaW1wb3J0IHdhcm5pbmdzCiAKIF9fYWxsX18gPSBbIkVycm9yIiwgIm9wZW4iLCAib3BlbmZwIl0KIApAQCAtNDQwLDcgKzQ0MSw3IEBACiAgICAgICAgICAgICBrbHVkZ2UgPSAwCiAgICAgICAgICAgICBpZiBjaHVuay5jaHVua3NpemUgPT0gMTg6CiAgICAgICAgICAgICAgICAga2x1ZGdlID0gMQotICAgICAgICAgICAgICAgIHByaW50KCdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplJykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplJykKICAgICAgICAgICAgICAgICBjaHVuay5jaHVua3NpemUgPSAyMwogICAgICAgICAgICAgI0RFQlVHIGVuZAogICAgICAgICAgICAgc2VsZi5fY29tcHR5cGUgPSBjaHVuay5yZWFkKDQpCkBAIC00ODQsMTEgKzQ4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAjIGEgcG9zaXRpb24gMCBhbmQgbmFtZSAnJwogICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXJrZXJzLmFwcGVuZCgoaWQsIHBvcywgbmFtZSkpCiAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCdXYXJuaW5nOiBNQVJLIGNodW5rIGNvbnRhaW5zIG9ubHknLCBlbmQ9JyAnKQotICAgICAgICAgICAgcHJpbnQobGVuKHNlbGYuX21hcmtlcnMpLCBlbmQ9JyAnKQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDE6IHByaW50KCdtYXJrZXInLCBlbmQ9JyAnKQotICAgICAgICAgICAgZWxzZTogcHJpbnQoJ21hcmtlcnMnLCBlbmQ9JyAnKQotICAgICAgICAgICAgcHJpbnQoJ2luc3RlYWQgb2YnLCBubWFya2VycykKKyAgICAgICAgICAgIHcgPSAoJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seSAlcyBtYXJrZXIlcyBpbnN0ZWFkIG9mICVzJyAlCisgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fbWFya2VycyksICcnIGlmIGxlbihzZWxmLl9tYXJrZXJzKSA9PSAxIGVsc2UgJ3MnLAorICAgICAgICAgICAgICAgICAgbm1hcmtlcnMpKQorICAgICAgICAgICAgd2FybmluZ3Mud2Fybih3KQogCiBjbGFzcyBBaWZjX3dyaXRlOgogICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhpcyBjbGFzczoKZGlmZiAtLWdpdCBhL0xpYi9hcmdwYXJzZS5weSBiL0xpYi9hcmdwYXJzZS5weQppbmRleCBlYjg5NGNhLi5mMjViMWI2IDEwMDY0NAotLS0gYS9MaWIvYXJncGFyc2UucHkKKysrIGIvTGliL2FyZ3BhcnNlLnB5CkBAIC03MSw2ICs3MSw3IEBACiAgICAgJ0FyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyJywKICAgICAnUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyJywKICAgICAnUmF3VGV4dEhlbHBGb3JtYXR0ZXInLAorICAgICdNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXInLAogICAgICdOYW1lc3BhY2UnLAogICAgICdBY3Rpb24nLAogICAgICdPTkVfT1JfTU9SRScsCkBAIC00MTksNyArNDIwLDggQEAKIAogICAgICAgICAgICAgIyBwcm9kdWNlIGFsbCBhcmcgc3RyaW5ncwogICAgICAgICAgICAgZWxpZiBub3QgYWN0aW9uLm9wdGlvbl9zdHJpbmdzOgotICAgICAgICAgICAgICAgIHBhcnQgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGFjdGlvbi5kZXN0KQorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKGFjdGlvbikKKyAgICAgICAgICAgICAgICBwYXJ0ID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQogCiAgICAgICAgICAgICAgICAgIyBpZiBpdCdzIGluIGEgZ3JvdXAsIHN0cmlwIHRoZSBvdXRlciBbXQogICAgICAgICAgICAgICAgIGlmIGFjdGlvbiBpbiBncm91cF9hY3Rpb25zOgpAQCAtNDQxLDcgKzQ0Myw3IEBACiAgICAgICAgICAgICAgICAgIyBpZiB0aGUgT3B0aW9uYWwgdGFrZXMgYSB2YWx1ZSwgZm9ybWF0IGlzOgogICAgICAgICAgICAgICAgICMgICAgLXMgQVJHUyBvciAtLWxvbmcgQVJHUwogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBhY3Rpb24uZGVzdC51cHBlcigpCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChhY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3RyaW5nID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gJyVzICVzJyAlIChvcHRpb25fc3RyaW5nLCBhcmdzX3N0cmluZykKIApAQCAtNTI3LDcgKzUyOSw4IEBACiAKICAgICBkZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgICBpZiBub3QgYWN0aW9uLm9wdGlvbl9zdHJpbmdzOgotICAgICAgICAgICAgbWV0YXZhciwgPSBzZWxmLl9tZXRhdmFyX2Zvcm1hdHRlcihhY3Rpb24sIGFjdGlvbi5kZXN0KSgxKQorICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoYWN0aW9uKQorICAgICAgICAgICAgbWV0YXZhciwgPSBzZWxmLl9tZXRhdmFyX2Zvcm1hdHRlcihhY3Rpb24sIGRlZmF1bHQpKDEpCiAgICAgICAgICAgICByZXR1cm4gbWV0YXZhcgogCiAgICAgICAgIGVsc2U6CkBAIC01NDEsNyArNTQ0LDcgQEAKICAgICAgICAgICAgICMgaWYgdGhlIE9wdGlvbmFsIHRha2VzIGEgdmFsdWUsIGZvcm1hdCBpczoKICAgICAgICAgICAgICMgICAgLXMgQVJHUywgLS1sb25nIEFSR1MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdCA9IGFjdGlvbi5kZXN0LnVwcGVyKCkKKyAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoYWN0aW9uKQogICAgICAgICAgICAgICAgIGFyZ3Nfc3RyaW5nID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQogICAgICAgICAgICAgICAgIGZvciBvcHRpb25fc3RyaW5nIGluIGFjdGlvbi5vcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCclcyAlcycgJSAob3B0aW9uX3N0cmluZywgYXJnc19zdHJpbmcpKQpAQCAtNjE5LDYgKzYyMiwxMiBAQAogICAgIGRlZiBfZ2V0X2hlbHBfc3RyaW5nKHNlbGYsIGFjdGlvbik6CiAgICAgICAgIHJldHVybiBhY3Rpb24uaGVscAogCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLmRlc3QudXBwZXIoKQorCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24uZGVzdAorCiAKIGNsYXNzIFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcihIZWxwRm9ybWF0dGVyKToKICAgICAiIiJIZWxwIG1lc3NhZ2UgZm9ybWF0dGVyIHdoaWNoIHJldGFpbnMgYW55IGZvcm1hdHRpbmcgaW4gZGVzY3JpcHRpb25zLgpAQCAtNjI4LDcgKzYzNyw3IEBACiAgICAgIiIiCiAKICAgICBkZWYgX2ZpbGxfdGV4dChzZWxmLCB0ZXh0LCB3aWR0aCwgaW5kZW50KToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW2luZGVudCArIGxpbmUgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKFRydWUpXSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oaW5kZW50ICsgbGluZSBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAKIAogY2xhc3MgUmF3VGV4dEhlbHBGb3JtYXR0ZXIoUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKToKQEAgLTY1OSw2ICs2NjgsMjIgQEAKICAgICAgICAgcmV0dXJuIGhlbHAKIAogCitjbGFzcyBNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIoSGVscEZvcm1hdHRlcik6CisgICAgIiIiSGVscCBtZXNzYWdlIGZvcm1hdHRlciB3aGljaCB1c2VzIHRoZSBhcmd1bWVudCAndHlwZScgYXMgdGhlIGRlZmF1bHQKKyAgICBtZXRhdmFyIHZhbHVlIChpbnN0ZWFkIG9mIHRoZSBhcmd1bWVudCAnZGVzdCcpCisKKyAgICBPbmx5IHRoZSBuYW1lIG9mIHRoaXMgY2xhc3MgaXMgY29uc2lkZXJlZCBhIHB1YmxpYyBBUEkuIEFsbCB0aGUgbWV0aG9kcworICAgIHByb3ZpZGVkIGJ5IHRoZSBjbGFzcyBhcmUgY29uc2lkZXJlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgICAgIiIiCisKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24udHlwZS5fX25hbWVfXworCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24udHlwZS5fX25hbWVfXworCisKKwogIyA9PT09PT09PT09PT09PT09PT09PT0KICMgT3B0aW9ucyBhbmQgQXJndW1lbnRzCiAjID09PT09PT09PT09PT09PT09PT09PQpAQCAtMTU1NCw3ICsxNTc5LDYgQEAKICAgICAgICAgICAgICAgICAgdXNhZ2U9Tm9uZSwKICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgZXBpbG9nPU5vbmUsCi0gICAgICAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgcGFyZW50cz1bXSwKICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPUhlbHBGb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgIHByZWZpeF9jaGFycz0nLScsCkBAIC0xNTYzLDE0ICsxNTg3LDYgQEAKICAgICAgICAgICAgICAgICAgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLAogICAgICAgICAgICAgICAgICBhZGRfaGVscD1UcnVlKToKIAotICAgICAgICBpZiB2ZXJzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICIiIlRoZSAidmVyc2lvbiIgYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIiIiCi0gICAgICAgICAgICAgICAgIiIiUGxlYXNlIHVzZSAiIiIKLSAgICAgICAgICAgICAgICAiIiIiYWRkX2FyZ3VtZW50KC4uLiwgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0iTiIsIC4uLikiICIiIgotICAgICAgICAgICAgICAgICIiImluc3RlYWQiIiIsIERlcHJlY2F0aW9uV2FybmluZykKLQogICAgICAgICBzdXBlcmluaXQgPSBzdXBlcihBcmd1bWVudFBhcnNlciwgc2VsZikuX19pbml0X18KICAgICAgICAgc3VwZXJpbml0KGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPXByZWZpeF9jaGFycywKQEAgLTE1ODQsNyArMTYwMCw2IEBACiAgICAgICAgIHNlbGYucHJvZyA9IHByb2cKICAgICAgICAgc2VsZi51c2FnZSA9IHVzYWdlCiAgICAgICAgIHNlbGYuZXBpbG9nID0gZXBpbG9nCi0gICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KICAgICAgICAgc2VsZi5mb3JtYXR0ZXJfY2xhc3MgPSBmb3JtYXR0ZXJfY2xhc3MKICAgICAgICAgc2VsZi5mcm9tZmlsZV9wcmVmaXhfY2hhcnMgPSBmcm9tZmlsZV9wcmVmaXhfY2hhcnMKICAgICAgICAgc2VsZi5hZGRfaGVscCA9IGFkZF9oZWxwCkBAIC0xNTk5LDcgKzE2MTQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHN0cmluZwogICAgICAgICBzZWxmLnJlZ2lzdGVyKCd0eXBlJywgTm9uZSwgaWRlbnRpdHkpCiAKLSAgICAgICAgIyBhZGQgaGVscCBhbmQgdmVyc2lvbiBhcmd1bWVudHMgaWYgbmVjZXNzYXJ5CisgICAgICAgICMgYWRkIGhlbHAgYXJndW1lbnQgaWYgbmVjZXNzYXJ5CiAgICAgICAgICMgKHVzaW5nIGV4cGxpY2l0IGRlZmF1bHQgdG8gb3ZlcnJpZGUgZ2xvYmFsIGFyZ3VtZW50X2RlZmF1bHQpCiAgICAgICAgIGRlZmF1bHRfcHJlZml4ID0gJy0nIGlmICctJyBpbiBwcmVmaXhfY2hhcnMgZWxzZSBwcmVmaXhfY2hhcnNbMF0KICAgICAgICAgaWYgc2VsZi5hZGRfaGVscDoKQEAgLTE2MDcsMTIgKzE2MjIsNiBAQAogICAgICAgICAgICAgICAgIGRlZmF1bHRfcHJlZml4KydoJywgZGVmYXVsdF9wcmVmaXgqMisnaGVscCcsCiAgICAgICAgICAgICAgICAgYWN0aW9uPSdoZWxwJywgZGVmYXVsdD1TVVBQUkVTUywKICAgICAgICAgICAgICAgICBoZWxwPV8oJ3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKSkKLSAgICAgICAgaWYgc2VsZi52ZXJzaW9uOgotICAgICAgICAgICAgc2VsZi5hZGRfYXJndW1lbnQoCi0gICAgICAgICAgICAgICAgZGVmYXVsdF9wcmVmaXgrJ3YnLCBkZWZhdWx0X3ByZWZpeCoyKyd2ZXJzaW9uJywKLSAgICAgICAgICAgICAgICBhY3Rpb249J3ZlcnNpb24nLCBkZWZhdWx0PVNVUFBSRVNTLAotICAgICAgICAgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAotICAgICAgICAgICAgICAgIGhlbHA9Xygic2hvdyBwcm9ncmFtJ3MgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQiKSkKIAogICAgICAgICAjIGFkZCBwYXJlbnQgYXJndW1lbnRzIGFuZCBkZWZhdWx0cwogICAgICAgICBmb3IgcGFyZW50IGluIHBhcmVudHM6CkBAIC0xNjMyLDcgKzE2NDEsNiBAQAogICAgICAgICAgICAgJ3Byb2cnLAogICAgICAgICAgICAgJ3VzYWdlJywKICAgICAgICAgICAgICdkZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAndmVyc2lvbicsCiAgICAgICAgICAgICAnZm9ybWF0dGVyX2NsYXNzJywKICAgICAgICAgICAgICdjb25mbGljdF9oYW5kbGVyJywKICAgICAgICAgICAgICdhZGRfaGVscCcsCkBAIC0xOTQwLDI5ICsxOTQ4LDI5IEBACiAgICAgICAgICMgaWYgd2UgZGlkbid0IGNvbnN1bWUgYWxsIHRoZSBhcmd1bWVudCBzdHJpbmdzLCB0aGVyZSB3ZXJlIGV4dHJhcwogICAgICAgICBleHRyYXMuZXh0ZW5kKGFyZ19zdHJpbmdzW3N0b3BfaW5kZXg6XSkKIAotICAgICAgICAjIGlmIHdlIGRpZG4ndCB1c2UgYWxsIHRoZSBQb3NpdGlvbmFsIG9iamVjdHMsIHRoZXJlIHdlcmUgdG9vIGZldwotICAgICAgICAjIGFyZyBzdHJpbmdzIHN1cHBsaWVkLgotICAgICAgICBpZiBwb3NpdGlvbmFsczoKLSAgICAgICAgICAgIHNlbGYuZXJyb3IoXygndG9vIGZldyBhcmd1bWVudHMnKSkKLQotICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgYWN0aW9ucyB3ZXJlIHByZXNlbnQsIGFuZCBjb252ZXJ0IGRlZmF1bHRzLgorICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgYWN0aW9ucyB3ZXJlIHByZXNlbnQgYW5kIGFsc28gY29udmVydAorICAgICAgICAjIGFjdGlvbiBkZWZhdWx0cyB3aGljaCB3ZXJlIG5vdCBnaXZlbiBhcyBhcmd1bWVudHMKKyAgICAgICAgcmVxdWlyZWRfYWN0aW9ucyA9IFtdCiAgICAgICAgIGZvciBhY3Rpb24gaW4gc2VsZi5fYWN0aW9uczoKICAgICAgICAgICAgIGlmIGFjdGlvbiBub3QgaW4gc2Vlbl9hY3Rpb25zOgogICAgICAgICAgICAgICAgIGlmIGFjdGlvbi5yZXF1aXJlZDoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9nZXRfYWN0aW9uX25hbWUoYWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oJ2FyZ3VtZW50ICVzIGlzIHJlcXVpcmVkJykgJSBuYW1lKQorICAgICAgICAgICAgICAgICAgICByZXF1aXJlZF9hY3Rpb25zLmFwcGVuZChfZ2V0X2FjdGlvbl9uYW1lKGFjdGlvbikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGFjdGlvbiBkZWZhdWx0IG5vdyBpbnN0ZWFkIG9mIGRvaW5nIGl0IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAjIHBhcnNpbmcgYXJndW1lbnRzIHRvIGF2b2lkIGNhbGxpbmcgY29udmVydCBmdW5jdGlvbnMKICAgICAgICAgICAgICAgICAgICAgIyB0d2ljZSAod2hpY2ggbWF5IGZhaWwpIGlmIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4sIGJ1dAogICAgICAgICAgICAgICAgICAgICAjIG9ubHkgaWYgaXQgd2FzIGRlZmluZWQgYWxyZWFkeSBpbiB0aGUgbmFtZXNwYWNlCiAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24uZGVmYXVsdCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFjdGlvbi5kZWZhdWx0LCBzdHIpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRlZmF1bHQgaXMgZ2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFjdGlvbi5kZWZhdWx0LCBzdHIpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kZWZhdWx0IGlzIGdldGF0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkpOgogICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfdmFsdWUoYWN0aW9uLCBhY3Rpb24uZGVmYXVsdCkpCiAKKyAgICAgICAgaWYgcmVxdWlyZWRfYWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuZXJyb3IoXygndGhlIGZvbGxvd2luZyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkOiAlcycpICUKKyAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHJlcXVpcmVkX2FjdGlvbnMpKQorCiAgICAgICAgICMgbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBncm91cHMgaGFkIG9uZSBvcHRpb24gcHJlc2VudAogICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwczoKICAgICAgICAgICAgIGlmIGdyb3VwLnJlcXVpcmVkOgpAQCAtMjMxNCwxNiArMjMyMiw2IEBACiAgICAgICAgICMgZGV0ZXJtaW5lIGhlbHAgZnJvbSBmb3JtYXQgYWJvdmUKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXRfaGVscCgpCiAKLSAgICBkZWYgZm9ybWF0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgJ1RoZSBmb3JtYXRfdmVyc2lvbiBtZXRob2QgaXMgZGVwcmVjYXRlZCAtLSB0aGUgInZlcnNpb24iICcKLSAgICAgICAgICAgICdhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkLicsCi0gICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGZvcm1hdHRlciA9IHNlbGYuX2dldF9mb3JtYXR0ZXIoKQotICAgICAgICBmb3JtYXR0ZXIuYWRkX3RleHQoc2VsZi52ZXJzaW9uKQotICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdF9oZWxwKCkKLQogICAgIGRlZiBfZ2V0X2Zvcm1hdHRlcihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZm9ybWF0dGVyX2NsYXNzKHByb2c9c2VsZi5wcm9nKQogCkBAIC0yMzQwLDE0ICsyMzM4LDYgQEAKICAgICAgICAgICAgIGZpbGUgPSBfc3lzLnN0ZG91dAogICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlKHNlbGYuZm9ybWF0X2hlbHAoKSwgZmlsZSkKIAotICAgIGRlZiBwcmludF92ZXJzaW9uKHNlbGYsIGZpbGU9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgJ1RoZSBwcmludF92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkIC0tIHRoZSAidmVyc2lvbiIgJwotICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuJywKLSAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5fcHJpbnRfbWVzc2FnZShzZWxmLmZvcm1hdF92ZXJzaW9uKCksIGZpbGUpCi0KICAgICBkZWYgX3ByaW50X21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZmlsZT1Ob25lKToKICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IGZiNWFkYWMuLjEzZjU5ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMjUsNyArMjUsNiBAQAogICAgIDpsaWNlbnNlOiBQeXRob24gTGljZW5zZS4KICIiIgogZnJvbSBfYXN0IGltcG9ydCAqCi1mcm9tIF9hc3QgaW1wb3J0IF9fdmVyc2lvbl9fCiAKIAogZGVmIHBhcnNlKHNvdXJjZSwgZmlsZW5hbWU9Jzx1bmtub3duPicsIG1vZGU9J2V4ZWMnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCA2NTU4NTEyLi40ZTI2YmI1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC00OSwxOCArNDksNiBAQAogaW1wb3J0IGFzeW5jb3JlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogCi1kZWYgYnVmZmVyKG9iaiwgc3RhcnQ9Tm9uZSwgc3RvcD1Ob25lKToKLSAgICAjIGlmIG1lbW9yeXZpZXcgb2JqZWN0cyBnYWluIHNsaWNpbmcgc2VtYW50aWNzLAotICAgICMgdGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBmb3IgdGhlIGJldHRlcgotICAgICMgbWVtb3J5dmlldyB1c2VkIGZvciB0aGUgVHlwZUVycm9yCi0gICAgbWVtb3J5dmlldyhvYmopCi0gICAgaWYgc3RhcnQgPT0gTm9uZToKLSAgICAgICAgc3RhcnQgPSAwCi0gICAgaWYgc3RvcCA9PSBOb25lOgotICAgICAgICBzdG9wID0gbGVuKG9iaikKLSAgICB4ID0gb2JqW3N0YXJ0OnN0b3BdCi0gICAgIyMgcHJpbnQoImJ1ZmZlciB0eXBlIGlzOiAlcyIlKHR5cGUoeCksKSkKLSAgICByZXR1cm4geAogCiBjbGFzcyBhc3luY19jaGF0IChhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICAiIiJUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiAgWW91IG11c3QgZGVyaXZlIGZyb20gdGhpcyBjbGFzcywgYW5kIGFkZApAQCAtNzUsNyArNjMsNyBAQAogICAgICMgc2lnbiBvZiBhbiBhcHBsaWNhdGlvbiBidWcgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHBhc3Mgc2lsZW50bHkKIAogICAgIHVzZV9lbmNvZGluZyAgICAgICAgICAgID0gMAotICAgIGVuY29kaW5nICAgICAgICAgICAgICAgID0gJ2xhdGluMScKKyAgICBlbmNvZGluZyAgICAgICAgICAgICAgICA9ICdsYXRpbi0xJwogCiAgICAgZGVmIF9faW5pdF9fIChzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgIyBmb3Igc3RyaW5nIHRlcm1pbmF0b3IgbWF0Y2hpbmcKQEAgLTI0MCw3ICsyMjgsNyBAQAogICAgICAgICAgICAgIyBoYW5kbGUgY2xhc3NpYyBwcm9kdWNlciBiZWhhdmlvcgogICAgICAgICAgICAgb2JzID0gc2VsZi5hY19vdXRfYnVmZmVyX3NpemUKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnVmZmVyKGZpcnN0LCAwLCBvYnMpCisgICAgICAgICAgICAgICAgZGF0YSA9IGZpcnN0WzpvYnNdCiAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmaXJzdC5tb3JlKCkKICAgICAgICAgICAgICAgICBpZiBkYXRhOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IGQzNzliYTguLjkwOWQ5ZjYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogaW1wb3J0IG9zCiBmcm9tIGVycm5vIGltcG9ydCBFQUxSRUFEWSwgRUlOUFJPR1JFU1MsIEVXT1VMREJMT0NLLCBFQ09OTlJFU0VULCBFSU5WQUwsIFwKLSAgICAgRU5PVENPTk4sIEVTSFVURE9XTiwgRUlOVFIsIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKKyAgICAgRU5PVENPTk4sIEVTSFVURE9XTiwgRUlTQ09OTiwgRUJBREYsIEVDT05OQUJPUlRFRCwgRVBJUEUsIEVBR0FJTiwgXAogICAgICBlcnJvcmNvZGUKIAogX0RJU0NPTk5FQ1RFRCA9IGZyb3plbnNldCgoRUNPTk5SRVNFVCwgRU5PVENPTk4sIEVTSFVURE9XTiwgRUNPTk5BQk9SVEVELCBFUElQRSwKQEAgLTE0MywxMSArMTQzLDggQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChyLCB3LCBlLCB0aW1lb3V0KQotICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IEVJTlRSOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGZvciBmZCBpbiByOgogICAgICAgICAgICAgb2JqID0gbWFwLmdldChmZCkKQEAgLTE4NCwxNSArMTgxLDEwIEBACiAgICAgICAgICAgICBpZiBvYmoud3JpdGFibGUoKSBhbmQgbm90IG9iai5hY2NlcHRpbmc6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgotICAgICAgICAgICAgICAgICMgT25seSBjaGVjayBmb3IgZXhjZXB0aW9ucyBpZiBvYmplY3Qgd2FzIGVpdGhlciByZWFkYWJsZQotICAgICAgICAgICAgICAgICMgb3Igd3JpdGFibGUuCi0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExFUlIgfCBzZWxlY3QuUE9MTEhVUCB8IHNlbGVjdC5QT0xMTlZBTAogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuYXJnc1swXSAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgIHIgPSBbXQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQpAQCAtMjkyLDcgKzI4NCw3IEBACiAgICAgICAgICAgICBkZWwgbWFwW2ZkXQogICAgICAgICBzZWxmLl9maWxlbm8gPSBOb25lCiAKLSAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmLCBmYW1pbHksIHR5cGUpOgorICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYsIGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pOgogICAgICAgICBzZWxmLmZhbWlseV9hbmRfdHlwZSA9IGZhbWlseSwgdHlwZQogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUpCiAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoMCkKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IDg5NWQ4MTMuLjQwNDJmMDAgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtMjksMTQgKzI5LDE2IEBACiAKIGJ5dGVzX3R5cGVzID0gKGJ5dGVzLCBieXRlYXJyYXkpICAjIFR5cGVzIGFjY2VwdGFibGUgYXMgYmluYXJ5IGRhdGEKIAotCi1kZWYgX3RyYW5zbGF0ZShzLCBhbHRjaGFycyk6Ci0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCi0gICAgdHJhbnNsYXRpb24gPSBieXRlYXJyYXkocmFuZ2UoMjU2KSkKLSAgICBmb3IgaywgdiBpbiBhbHRjaGFycy5pdGVtcygpOgotICAgICAgICB0cmFuc2xhdGlvbltvcmQoayldID0gdlswXQotICAgIHJldHVybiBzLnRyYW5zbGF0ZSh0cmFuc2xhdGlvbikKK2RlZiBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKToKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzLmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycycpCisgICAgZWxpZiBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKKyAgICAgICAgcmV0dXJuIHMKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBieXRlcyBvciBBU0NJSSBzdHJpbmcsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKIAogCiAKQEAgLTYxLDcgKzYzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFsdGNoYXJzLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgYXNzZXJ0IGxlbihhbHRjaGFycykgPT0gMiwgcmVwcihhbHRjaGFycykKLSAgICAgICAgcmV0dXJuIF90cmFuc2xhdGUoZW5jb2RlZCwgeycrJzogYWx0Y2hhcnNbMDoxXSwgJy8nOiBhbHRjaGFyc1sxOjJdfSkKKyAgICAgICAgcmV0dXJuIGVuY29kZWQudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhiJysvJywgYWx0Y2hhcnMpKQogICAgIHJldHVybiBlbmNvZGVkCiAKIApAQCAtNzksMTQgKzgxLDExIEBACiAgICAgZGlzY2FyZGVkIHByaW9yIHRvIHRoZSBwYWRkaW5nIGNoZWNrLiAgSWYgdmFsaWRhdGUgaXMgVHJ1ZSwKICAgICBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHJlc3VsdCBpbiBhIGJpbmFzY2lpLkVycm9yLgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhbHRjaGFycywgYnl0ZXNfdHlwZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWx0Y2hhcnMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBhbHRjaGFycyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKGFsdGNoYXJzKQogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQotICAgICAgICBzID0gX3RyYW5zbGF0ZShzLCB7Y2hyKGFsdGNoYXJzWzBdKTogYicrJywgY2hyKGFsdGNoYXJzWzFdKTogYicvJ30pCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYWx0Y2hhcnMsIGInKy8nKSkKICAgICBpZiB2YWxpZGF0ZSBhbmQgbm90IHJlLm1hdGNoKGInXltBLVphLXowLTkrL10qPXswLDJ9JCcsIHMpOgogICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignTm9uLWJhc2U2NCBkaWdpdCBmb3VuZCcpCiAgICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQocykKQEAgLTEwOSw2ICsxMDgsMTAgQEAKICAgICAiIiIKICAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCiAKKworX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uID0gYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBiJy1fJykKK191cmxzYWZlX2RlY29kZV90cmFuc2xhdGlvbiA9IGJ5dGVzLm1ha2V0cmFucyhiJy1fJywgYicrLycpCisKIGRlZiB1cmxzYWZlX2I2NGVuY29kZShzKToKICAgICAiIiJFbmNvZGUgYSBieXRlIHN0cmluZyB1c2luZyBhIHVybC1zYWZlIEJhc2U2NCBhbHBoYWJldC4KIApAQCAtMTE2LDcgKzExOSw3IEBACiAgICAgcmV0dXJuZWQuICBUaGUgYWxwaGFiZXQgdXNlcyAnLScgaW5zdGVhZCBvZiAnKycgYW5kICdfJyBpbnN0ZWFkIG9mCiAgICAgJy8nLgogICAgICIiIgotICAgIHJldHVybiBiNjRlbmNvZGUocywgYictXycpCisgICAgcmV0dXJuIGI2NGVuY29kZShzKS50cmFuc2xhdGUoX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uKQogCiBkZWYgdXJsc2FmZV9iNjRkZWNvZGUocyk6CiAgICAgIiIiRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZW5jb2RlZCB3aXRoIHRoZSBzdGFuZGFyZCBCYXNlNjQgYWxwaGFiZXQuCkBAIC0xMjgsNyArMTMxLDkgQEAKIAogICAgIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLgogICAgICIiIgotICAgIHJldHVybiBiNjRkZWNvZGUocywgYictXycpCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCisgICAgcyA9IHMudHJhbnNsYXRlKF91cmxzYWZlX2RlY29kZV90cmFuc2xhdGlvbikKKyAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCiAKIAogCkBAIC0yMTEsOCArMjE2LDcgQEAKICAgICB0aGUgaW5wdXQgaXMgaW5jb3JyZWN0bHkgcGFkZGVkIG9yIGlmIHRoZXJlIGFyZSBub24tYWxwaGFiZXQKICAgICBjaGFyYWN0ZXJzIHByZXNlbnQgaW4gdGhlIGlucHV0LgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIHF1YW50YSwgbGVmdG92ZXIgPSBkaXZtb2QobGVuKHMpLCA4KQogICAgIGlmIGxlZnRvdmVyOgogICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignSW5jb3JyZWN0IHBhZGRpbmcnKQpAQCAtMjIwLDEwICsyMjQsOSBAQAogICAgICMgRmFsc2UsIG9yIHRoZSBjaGFyYWN0ZXIgdG8gbWFwIHRoZSBkaWdpdCAxIChvbmUpIHRvLiAgSXQgc2hvdWxkIGJlCiAgICAgIyBlaXRoZXIgTCAoZWwpIG9yIEkgKGV5ZSkuCiAgICAgaWYgbWFwMDEgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1hcDAxLCBieXRlc190eXBlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgbWFwMDEuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBtYXAwMSA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKG1hcDAxKQogICAgICAgICBhc3NlcnQgbGVuKG1hcDAxKSA9PSAxLCByZXByKG1hcDAxKQotICAgICAgICBzID0gX3RyYW5zbGF0ZShzLCB7YicwJzogYidPJywgYicxJzogbWFwMDF9KQorICAgICAgICBzID0gcy50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInMDEnLCBiJ08nICsgbWFwMDEpKQogICAgIGlmIGNhc2Vmb2xkOgogICAgICAgICBzID0gcy51cHBlcigpCiAgICAgIyBTdHJpcCBvZmYgcGFkIGNoYXJhY3RlcnMgZnJvbSB0aGUgcmlnaHQuICBXZSBuZWVkIHRvIGNvdW50IHRoZSBwYWQKQEAgLTI5Miw4ICsyOTUsNyBAQAogICAgIHMgd2VyZSBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzCiAgICAgcHJlc2VudCBpbiB0aGUgc3RyaW5nLgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIGlmIGNhc2Vmb2xkOgogICAgICAgICBzID0gcy51cHBlcigpCiAgICAgaWYgcmUuc2VhcmNoKGInW14wLTlBLUZdJywgcyk6CmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA5OTlhNjc1Li43YmY5Mjc4IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzLDcgKzIzLDYgQEAKICMKIGltcG9ydCBpbwogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYmluYXNjaWkKIApkaWZmIC0tZ2l0IGEvTGliL2J6Mi5weSBiL0xpYi9iejIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMwNzUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9iejIucHkKQEAgLTAsMCArMSw1MDQgQEAKKyIiIkludGVyZmFjZSB0byB0aGUgbGliYnppcDIgY29tcHJlc3Npb24gbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmaWxlIGludGVyZmFjZSwgY2xhc3NlcyBmb3IgaW5jcmVtZW50YWwKKyhkZSljb21wcmVzc2lvbiwgYW5kIGZ1bmN0aW9ucyBmb3Igb25lLXNob3QgKGRlKWNvbXByZXNzaW9uLgorIiIiCisKK19fYWxsX18gPSBbIkJaMkZpbGUiLCAiQloyQ29tcHJlc3NvciIsICJCWjJEZWNvbXByZXNzb3IiLAorICAgICAgICAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIl0KKworX19hdXRob3JfXyA9ICJOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+IgorCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBpbworaW1wb3J0IHdhcm5pbmdzCisKK3RyeToKKyAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgUkxvY2sKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGR1bW15X3RocmVhZGluZyBpbXBvcnQgUkxvY2sKKworZnJvbSBfYnoyIGltcG9ydCBCWjJDb21wcmVzc29yLCBCWjJEZWNvbXByZXNzb3IKKworCitfTU9ERV9DTE9TRUQgICA9IDAKK19NT0RFX1JFQUQgICAgID0gMQorX01PREVfUkVBRF9FT0YgPSAyCitfTU9ERV9XUklURSAgICA9IDMKKworX0JVRkZFUl9TSVpFID0gODE5MgorCisKK2NsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorCisgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgYnppcDIgKGRlKWNvbXByZXNzaW9uLgorCisgICAgQSBCWjJGaWxlIGNhbiBhY3QgYXMgYSB3cmFwcGVyIGZvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgb3IgcmVmZXIKKyAgICBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KKworICAgIE5vdGUgdGhhdCBCWjJGaWxlIHByb3ZpZGVzIGEgKmJpbmFyeSogZmlsZSBpbnRlcmZhY2UgLSBkYXRhIHJlYWQgaXMKKyAgICByZXR1cm5lZCBhcyBieXRlcywgYW5kIGRhdGEgdG8gYmUgd3JpdHRlbiBzaG91bGQgYmUgZ2l2ZW4gYXMgYnl0ZXMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KToKKyAgICAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZS4KKworICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciBvciBieXRlcyBvYmplY3QsIGlzIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvCisgICAgICAgIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvCisgICAgICAgIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKworICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsIG9yICdhJyBmb3IKKyAgICAgICAgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICdyYicsICd3YicsIGFuZCAnYWInLgorCisgICAgICAgIGJ1ZmZlcmluZyBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgICAgICAgSWYgbW9kZSBpcyAndycgb3IgJ2EnLCBjb21wcmVzc2xldmVsIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDEKKyAgICAgICAgYW5kIDkgc3BlY2lmeWluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb246IDEgcHJvZHVjZXMgdGhlIGxlYXN0CisgICAgICAgIGNvbXByZXNzaW9uLCBhbmQgOSAoZGVmYXVsdCkgcHJvZHVjZXMgdGhlIG1vc3QgY29tcHJlc3Npb24uCisKKyAgICAgICAgSWYgbW9kZSBpcyAncicsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCisgICAgICAgICIiIgorICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCisgICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgc2VsZi5fbG9jayA9IFJMb2NrKCkKKyAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCisKKyAgICAgICAgaWYgYnVmZmVyaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVXNlIG9mICdidWZmZXJpbmcnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgaWYgbm90ICgxIDw9IGNvbXByZXNzbGV2ZWwgPD0gOSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5IikKKworICAgICAgICBpZiBtb2RlIGluICgiIiwgInIiLCAicmIiKToKKyAgICAgICAgICAgIG1vZGUgPSAicmIiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECisgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBCWjJEZWNvbXByZXNzb3IoKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorICAgICAgICBlbGlmIG1vZGUgaW4gKCJ3IiwgIndiIik6CisgICAgICAgICAgICBtb2RlID0gIndiIgorICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgICAgIGVsaWYgbW9kZSBpbiAoImEiLCAiYWIiKToKKyAgICAgICAgICAgIG1vZGUgPSAiYWIiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIGZpbGUuCisKKyAgICAgICAgTWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiBPbmNlIHRoZSBmaWxlIGlzCisgICAgICAgIGNsb3NlZCwgYW55IG90aGVyIG9wZXJhdGlvbiBvbiBpdCB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5fY29tcHJlc3Nvci5mbHVzaCgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlZnA6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsb3NlZChzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGlzIGZpbGUgaXMgY2xvc2VkLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgdW5kZXJseWluZyBmaWxlLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZwLmZpbGVubygpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHN1cHBvcnRzIHNlZWtpbmcuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2ZwLnNlZWthYmxlKCkKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRikKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFCisKKyAgICAjIE1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4KKworICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1dSSVRFOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCisgICAgICAgIGlmIG5vdCBzZWxmLl9mcC5zZWVrYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQorCisgICAgIyBGaWxsIHRoZSByZWFkYWhlYWQgYnVmZmVyIGlmIGl0IGlzIGVtcHR5LiBSZXR1cm5zIEZhbHNlIG9uIEVPRi4KKyAgICBkZWYgX2ZpbGxfYnVmZmVyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KKyAgICAgICAgd2hpbGUgc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgIHJhd2Jsb2NrID0gKHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAucmVhZChfQlVGRkVSX1NJWkUpKQorCisgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKworICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKKworICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgIyBSZWFkIGRhdGEgdW50aWwgRU9GLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2FsbChzZWxmLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgorICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoc2VsZi5fYnVmZmVyKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgIyBJZiB3ZSBoYXZlIGVub3VnaCBkYXRhIGJ1ZmZlcmVkLCByZXR1cm4gaW1tZWRpYXRlbHkuCisgICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlcl9vZmZzZXQgKyBuCisgICAgICAgIGlmIGVuZCA8PSBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBkYXRhIGlmIHJldHVybl9kYXRhIGVsc2UgTm9uZQorCisgICAgICAgICMgVGhlIGxvb3AgYXNzdW1lcyB0aGF0IF9idWZmZXJfb2Zmc2V0IGlzIDAuIEVuc3VyZSB0aGF0IHRoaXMgaXMgdHJ1ZS4KKyAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIHdoaWxlIG4gPiAwIGFuZCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgbiA8IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOm5dCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IG4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgZGVmIHBlZWsoc2VsZiwgbj0wKToKKyAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgQWx3YXlzIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgb2YgZGF0YSwgdW5sZXNzIGF0IEVPRi4KKyAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIElmIHNpemUgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBiJycgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgICAgICBpZiBzaXplID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9hbGwoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9ibG9jayhzaXplKQorCisgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKKyAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorCisgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCisgICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgIGlmIChzaXplID09IDAgb3IKKyAgICAgICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgorICAgICAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgorICAgICAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgIGlmIHNpemUgPiAwOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGIuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRikuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGludG8oc2VsZiwgYikKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCBhIGxpbmUgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgVGhlIHRlcm1pbmF0aW5nIG5ld2xpbmUgKGlmIHByZXNlbnQpIGlzIHJldGFpbmVkLiBJZiBzaXplIGlzCisgICAgICAgIG5vbi1uZWdhdGl2ZSwgbm8gbW9yZSB0aGFuIHNpemUgYnl0ZXMgd2lsbCBiZSByZWFkIChpbiB3aGljaAorICAgICAgICBjYXNlIHRoZSBsaW5lIG1heSBiZSBpbmNvbXBsZXRlKS4gUmV0dXJucyBiJycgaWYgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2l6ZSwgIl9faW5kZXhfXyIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiSW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCIpCisgICAgICAgICAgICBzaXplID0gc2l6ZS5fX2luZGV4X18oKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9uIGNhc2UgLSB0aGUgd2hvbGUgbGluZSBpcyBpbiB0aGUgYnVmZmVyLgorICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyLmZpbmQoYiJcbiIsIHNlbGYuX2J1ZmZlcl9vZmZzZXQpICsgMQorICAgICAgICAgICAgICAgIGlmIGVuZCA+IDA6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgc2l6ZSkKKworICAgIGRlZiByZWFkbGluZXMoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgYSBsaXN0IG9mIGxpbmVzIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIHNpemUgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8KKyAgICAgICAgZnVydGhlciBsaW5lcyB3aWxsIGJlIHJlYWQgb25jZSB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgbGluZXMgcmVhZAorICAgICAgICBzbyBmYXIgZXF1YWxzIG9yIGV4Y2VlZHMgc2l6ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzaXplLCAiX19pbmRleF9fIik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkIikKKyAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZXMoc2VsZiwgc2l6ZSkKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4sIHdoaWNoIGlzCisgICAgICAgIGFsd2F5cyBsZW4oZGF0YSkuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCB0aGUgZmlsZSBvbiBkaXNrCisgICAgICAgIG1heSBub3QgcmVmbGVjdCB0aGUgZGF0YSB3cml0dGVuIHVudGlsIGNsb3NlKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3dyaXRlKCkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBzZWxmLl9jb21wcmVzc29yLmNvbXByZXNzKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorCisgICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgc2VxKToKKyAgICAgICAgIiIiV3JpdGUgYSBzZXF1ZW5jZSBvZiBieXRlIHN0cmluZ3MgdG8gdGhlIGZpbGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuLgorICAgICAgICBzZXEgY2FuIGJlIGFueSBpdGVyYWJsZSB5aWVsZGluZyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlLiBWYWx1ZXMgZm9yIHdoZW5jZSBhcmU6CisKKyAgICAgICAgICAgIDA6IHN0YXJ0IG9mIHN0cmVhbSAoZGVmYXVsdCk7IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorICAgICAgICAgICAgMTogY3VycmVudCBzdHJlYW0gcG9zaXRpb24KKyAgICAgICAgICAgIDI6IGVuZCBvZiBzdHJlYW07IG9mZnNldCBtdXN0IG5vdCBiZSBwb3NpdGl2ZQorCisgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzbyBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKKworICAgICAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlmIHdoZW5jZSA9PSAwOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsaWYgd2hlbmNlID09IDE6CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fcG9zICsgb2Zmc2V0CisgICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgorICAgICAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NpemUgPCAwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQorCisgICAgICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCisgICAgICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLl9wb3M6CisgICAgICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb2Zmc2V0IC09IHNlbGYuX3BvcworCisgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAgICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKKworICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworCitkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTksCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCisKKyAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKKyAgICBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJhIiBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwKKyAgICBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgbW9kZSBpcyAicmIiLCBhbmQgdGhlCisgICAgZGVmYXVsdCBjb21wcmVzc2xldmVsIGlzIDkuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgQloyRmlsZSBjb25zdHJ1Y3RvcjoKKyAgICBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycworICAgIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgQloyRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBiel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgYmluYXJ5X2ZpbGUgPSBCWjJGaWxlKGZpbGVuYW1lLCBiel9tb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCisKKworZGVmIGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSk6CisgICAgIiIiQ29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgY29tcHJlc3NsZXZlbCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LgorCisgICAgRm9yIGluY3JlbWVudGFsIGNvbXByZXNzaW9uLCB1c2UgYSBCWjJDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGNvbXAgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKKworCitkZWYgZGVjb21wcmVzcyhkYXRhKToKKyAgICAiIiJEZWNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSBCWjJEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgaWYgbGVuKGRhdGEpID09IDA6CisgICAgICAgIHJldHVybiBiIiIKKworICAgIHJlc3VsdHMgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGRlY29tcCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKGRlY29tcC5kZWNvbXByZXNzKGRhdGEpKQorICAgICAgICBpZiBub3QgZGVjb21wLmVvZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgaWYgbm90IGRlY29tcC51bnVzZWRfZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihyZXN1bHRzKQorICAgICAgICAjIFRoZXJlIGlzIHVudXNlZCBkYXRhIGxlZnQgb3Zlci4gUHJvY2VlZCB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgZGF0YSA9IGRlY29tcC51bnVzZWRfZGF0YQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggOTBhMzM0NS4uZTk2NGYwYyAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC03Niw3ICs3Niw3IEBACiAgICAgc2VuZCBhbiBlcnJvciBtZXNzYWdlKS4KIAogICAgICIiIgotICAgIGdsb2JhbCBsb2dmcCwgbG9nCisgICAgZ2xvYmFsIGxvZywgbG9nZmlsZSwgbG9nZnAKICAgICBpZiBsb2dmaWxlIGFuZCBub3QgbG9nZnA6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvZ2ZwID0gb3Blbihsb2dmaWxlLCAiYSIpCkBAIC05Niw2ICs5NiwxNSBAQAogICAgICIiIkR1bW15IGZ1bmN0aW9uLCBhc3NpZ25lZCB0byBsb2cgd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkLiIiIgogICAgIHBhc3MKIAorZGVmIGNsb3NlbG9nKCk6CisgICAgIiIiQ2xvc2UgdGhlIGxvZyBmaWxlLiIiIgorICAgIGdsb2JhbCBsb2csIGxvZ2ZpbGUsIGxvZ2ZwCisgICAgbG9nZmlsZSA9ICcnCisgICAgaWYgbG9nZnA6CisgICAgICAgIGxvZ2ZwLmNsb3NlKCkKKyAgICAgICAgbG9nZnAgPSBOb25lCisgICAgbG9nID0gaW5pdGxvZworCiBsb2cgPSBpbml0bG9nICAgICAgICAgICAjIFRoZSBjdXJyZW50IGxvZ2dpbmcgZnVuY3Rpb24KIAogCkBAIC0xMDAzLDcgKzEwMTIsNyBAQAogZGVmIGVzY2FwZShzLCBxdW90ZT1Ob25lKToKICAgICAiIiJEZXByZWNhdGVkIEFQSS4iIiIKICAgICB3YXJuKCJjZ2kuZXNjYXBlIGlzIGRlcHJlY2F0ZWQsIHVzZSBodG1sLmVzY2FwZSBpbnN0ZWFkIiwKLSAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHMgPSBzLnJlcGxhY2UoIiYiLCAiJmFtcDsiKSAjIE11c3QgYmUgZG9uZSBmaXJzdCEKICAgICBzID0gcy5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgIHMgPSBzLnJlcGxhY2UoIj4iLCAiJmd0OyIpCmRpZmYgLS1naXQgYS9MaWIvY2dpdGIucHkgYi9MaWIvY2dpdGIucHkKaW5kZXggNmRhNDBlOC4uNmViNTJlNyAxMDA2NDQKLS0tIGEvTGliL2NnaXRiLnB5CisrKyBiL0xpYi9jZ2l0Yi5weQpAQCAtMzEsNyArMzEsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHR5cGVzCiAKIGRlZiByZXNldCgpOgogICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IHJlc2V0cyB0aGUgQ0dJIGFuZCBicm93c2VyIHRvIGEga25vd24gc3RhdGUuIiIiCmRpZmYgLS1naXQgYS9MaWIvY29kZS5weSBiL0xpYi9jb2RlLnB5CmluZGV4IDYwNWFlZGUuLjkwMjBhYWIgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlLnB5CisrKyBiL0xpYi9jb2RlLnB5CkBAIC0xMDUsOSArMTA1LDEwIEBACiAgICAgICAgIFRoZSBvdXRwdXQgaXMgd3JpdHRlbiBieSBzZWxmLndyaXRlKCksIGJlbG93LgogCiAgICAgICAgICIiIgotICAgICAgICB0eXBlLCB2YWx1ZSwgc3lzLmxhc3RfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgdHlwZSwgdmFsdWUsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cGUKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSB0YgogICAgICAgICBpZiBmaWxlbmFtZSBhbmQgdHlwZSBpcyBTeW50YXhFcnJvcjoKICAgICAgICAgICAgICMgV29yayBoYXJkIHRvIHN0dWZmIHRoZSBjb3JyZWN0IGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgIHRyeToKQEAgLTExOSw4ICsxMjAsMTMgQEAKICAgICAgICAgICAgICAgICAjIFN0dWZmIGluIHRoZSByaWdodCBmaWxlbmFtZQogICAgICAgICAgICAgICAgIHZhbHVlID0gU3ludGF4RXJyb3IobXNnLCAoZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBsaW5lKSkKICAgICAgICAgICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVlCi0gICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXBlLCB2YWx1ZSkKLSAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgorICAgICAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgc29tZW9uZSBoYXMgc2V0IHN5cy5leGNlcHRob29rLCB3ZSBsZXQgdGhhdCB0YWtlIHByZWNlZGVuY2UKKyAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICBzeXMuZXhjZXB0aG9vayh0eXBlLCB2YWx1ZSwgdGIpCiAKICAgICBkZWYgc2hvd3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgIiIiRGlzcGxheSB0aGUgZXhjZXB0aW9uIHRoYXQganVzdCBvY2N1cnJlZC4KQEAgLTE0Myw3ICsxNDksMTIgQEAKICAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRibGlzdCA9IHRiID0gTm9uZQotICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgIyBvdmVyIHNlbGYud3JpdGUKKyAgICAgICAgICAgIHN5cy5leGNlcHRob29rKHR5cGUsIHZhbHVlLCB0YikKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBzdHJpbmcuCmRpZmYgLS1naXQgYS9MaWIvY29kZWNzLnB5IGIvTGliL2NvZGVjcy5weQppbmRleCBiMTUwZDY0Li40OGQ0YzljIDEwMDY0NAotLS0gYS9MaWIvY29kZWNzLnB5CisrKyBiL0xpYi9jb2RlY3MucHkKQEAgLTQ2MSw3ICs0NjEsNyBAQAogCiAgICAgICAgICMgcmVhZCB1bnRpbCB3ZSBnZXQgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIChpZiBhdmFpbGFibGUpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAjIGNhbiB0aGUgcmVxdWVzdCBjYW4gYmUgc2F0aXNmaWVkIGZyb20gdGhlIGNoYXJhY3RlciBidWZmZXI/CisgICAgICAgICAgICAjIGNhbiB0aGUgcmVxdWVzdCBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2hhcmFjdGVyIGJ1ZmZlcj8KICAgICAgICAgICAgIGlmIGNoYXJzIDwgMDoKICAgICAgICAgICAgICAgICBpZiBzaXplIDwgMDoKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jaGFyYnVmZmVyOgpAQCAtNDg0LDcgKzQ4NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZmlyc3RsaW5lOgogICAgICAgICAgICAgICAgICAgICBuZXdjaGFycywgZGVjb2RlZGJ5dGVzID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNvZGUoZGF0YVs6ZXhjLnN0YXJ0XSwgc2VsZi5lcnJvcnMpCi0gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gbmV3Y2hhcnMuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IG5ld2NoYXJzLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKTw9MToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTUyNiw3ICs1MjYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2hhcmJ1ZmZlciA9IHNlbGYubGluZWJ1ZmZlclswXQogICAgICAgICAgICAgICAgIHNlbGYubGluZWJ1ZmZlciA9IE5vbmUKICAgICAgICAgICAgIGlmIG5vdCBrZWVwZW5kczoKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICByZXR1cm4gbGluZQogCiAgICAgICAgIHJlYWRzaXplID0gc2l6ZSBvciA3MgpAQCAtNTQzLDcgKzU0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5yZWFkKHNpemU9MSwgY2hhcnM9MSkKIAogICAgICAgICAgICAgbGluZSArPSBkYXRhCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmUuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgbGluZXMgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgIGlmIGxpbmVzOgogICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lcykgPiAxOgogICAgICAgICAgICAgICAgICAgICAjIE1vcmUgdGhhbiBvbmUgbGluZSByZXN1bHQ7IHRoZSBmaXJzdCBsaW5lIGlzIGEgZnVsbCBsaW5lCkBAIC01NTksMTAgKzU1OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IG9uZSByZW1haW5pbmcgbGluZSwgcHV0IGl0IGJhY2sgaW50byBjaGFyYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBsaW5lc1swXSArIHNlbGYuY2hhcmJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSlbMF0KICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBsaW5lMHdpdGhlbmQgPSBsaW5lc1swXQotICAgICAgICAgICAgICAgIGxpbmUwd2l0aG91dGVuZCA9IGxpbmVzWzBdLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgbGluZTB3aXRob3V0ZW5kID0gbGluZXNbMF0uc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSlbMF0KICAgICAgICAgICAgICAgICBpZiBsaW5lMHdpdGhlbmQgIT0gbGluZTB3aXRob3V0ZW5kOiAjIFdlIHJlYWxseSBoYXZlIGEgbGluZSBlbmQKICAgICAgICAgICAgICAgICAgICAgIyBQdXQgdGhlIHJlc3QgYmFjayB0b2dldGhlciBhbmQga2VlcCBpdCB1bnRpbCB0aGUgbmV4dCBjYWxsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhcmJ1ZmZlciA9IHNlbGYuX2VtcHR5X2NoYXJidWZmZXIuam9pbihsaW5lc1sxOl0pICsgXApAQCAtNTc1LDcgKzU3NSw3IEBACiAgICAgICAgICAgICAjIHdlIGRpZG4ndCBnZXQgYW55dGhpbmcgb3IgdGhpcyB3YXMgb3VyIG9ubHkgdHJ5CiAgICAgICAgICAgICBpZiBub3QgZGF0YSBvciBzaXplIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGlmIGxpbmUgYW5kIG5vdCBrZWVwZW5kczoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSlbMF0KICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgcmVhZHNpemUgPCA4MDAwOgogICAgICAgICAgICAgICAgIHJlYWRzaXplICo9IDIKQEAgLTgwMyw3ICs4MDMsNyBAQAogCiAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWRlci5yZWFkKCkKICAgICAgICAgZGF0YSwgYnl0ZXNlbmNvZGVkID0gc2VsZi5lbmNvZGUoZGF0YSwgc2VsZi5lcnJvcnMpCi0gICAgICAgIHJldHVybiBkYXRhLnNwbGl0bGluZXMoMSkKKyAgICAgICAgcmV0dXJuIGRhdGEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogCiAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgogCkBAIC0xMDQyLDEwICsxMDQyLDcgQEAKICAgICAgICAgbWFwcGVkIHRvIHRoZW1zZWx2ZXMuCiAKICAgICAiIiIKLSAgICByZXMgPSB7fQotICAgIGZvciBpIGluIHJuZzoKLSAgICAgICAgcmVzW2ldPWkKLSAgICByZXR1cm4gcmVzCisgICAgcmV0dXJuIHtpOmkgZm9yIGkgaW4gcm5nfQogCiBkZWYgbWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKToKIApkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zLnB5IGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9jb2xsZWN0aW9ucy5weQpyZW5hbWUgdG8gTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CmluZGV4IGViMjAyNDMuLmU1Zjk1OTkgMTAwNjQ0Ci0tLSBhL0xpYi9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKQEAgLTEsMTMgKzEsMTQgQEAKIF9fYWxsX18gPSBbJ2RlcXVlJywgJ2RlZmF1bHRkaWN0JywgJ25hbWVkdHVwbGUnLCAnVXNlckRpY3QnLCAnVXNlckxpc3QnLAotICAgICAgICAgICAgJ1VzZXJTdHJpbmcnLCAnQ291bnRlcicsICdPcmRlcmVkRGljdCddCi0jIEZvciBib290c3RyYXBwaW5nIHJlYXNvbnMsIHRoZSBjb2xsZWN0aW9uIEFCQ3MgYXJlIGRlZmluZWQgaW4gX2FiY29sbC5weS4KLSMgVGhleSBzaG91bGQgaG93ZXZlciBiZSBjb25zaWRlcmVkIGFuIGludGVncmFsIHBhcnQgb2YgY29sbGVjdGlvbnMucHkuCi1mcm9tIF9hYmNvbGwgaW1wb3J0ICoKLWltcG9ydCBfYWJjb2xsCi1fX2FsbF9fICs9IF9hYmNvbGwuX19hbGxfXworICAgICAgICAgICAgJ1VzZXJTdHJpbmcnLCAnQ291bnRlcicsICdPcmRlcmVkRGljdCcsICdDaGFpbk1hcCddCisKKyMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBjb250aW51ZSB0byBtYWtlIHRoZSBjb2xsZWN0aW9ucyBBQkNzCisjIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUuCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgKgoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYworX19hbGxfXyArPSBjb2xsZWN0aW9ucy5hYmMuX19hbGxfXwogCiBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUsIGRlZmF1bHRkaWN0Ci1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyIGFzIF9pdGVtZ2V0dGVyCitmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyIGFzIF9pdGVtZ2V0dGVyLCBlcSBhcyBfZXEKIGZyb20ga2V5d29yZCBpbXBvcnQgaXNrZXl3b3JkIGFzIF9pc2tleXdvcmQKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IGhlYXBxIGFzIF9oZWFwcQpAQCAtMjI4LDcgKzIyOSw3IEBACiAgICAgICAgICcnJwogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBPcmRlcmVkRGljdCk6CiAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYpPT1sZW4ob3RoZXIpIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgYWxsKHA9PXEgZm9yIHAsIHEgaW4gemlwKHNlbGYuaXRlbXMoKSwgb3RoZXIuaXRlbXMoKSkpCisgICAgICAgICAgICAgICAgICAgYWxsKG1hcChfZXEsIHNlbGYuaXRlbXMoKSwgb3RoZXIuaXRlbXMoKSkpCiAgICAgICAgIHJldHVybiBkaWN0Ll9fZXFfXyhzZWxmLCBvdGhlcikKIAogCkBAIC0zMTQsMTAgKzMxNSwxMCBAQAogCiAgICAgIiIiCiAKLSAgICAjIFBhcnNlIGFuZCB2YWxpZGF0ZSB0aGUgZmllbGQgbmFtZXMuICBWYWxpZGF0aW9uIHNlcnZlcyB0d28gcHVycG9zZXMsCi0gICAgIyBnZW5lcmF0aW5nIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIGFuZCBwcmV2ZW50aW5nIHRlbXBsYXRlIGluamVjdGlvbiBhdHRhY2tzLgorICAgICMgVmFsaWRhdGUgdGhlIGZpZWxkIG5hbWVzLiAgQXQgdGhlIHVzZXIncyBvcHRpb24sIGVpdGhlciBnZW5lcmF0ZSBhbiBlcnJvcgorICAgICMgbWVzc2FnZSBvciBhdXRvbWF0aWNhbGx5IHJlcGxhY2UgdGhlIGZpZWxkIG5hbWUgd2l0aCBhIHZhbGlkIG5hbWUuCiAgICAgaWYgaXNpbnN0YW5jZShmaWVsZF9uYW1lcywgc3RyKToKLSAgICAgICAgZmllbGRfbmFtZXMgPSBmaWVsZF9uYW1lcy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpICMgbmFtZXMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgYW5kL29yIGNvbW1hcworICAgICAgICBmaWVsZF9uYW1lcyA9IGZpZWxkX25hbWVzLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICBmaWVsZF9uYW1lcyA9IGxpc3QobWFwKHN0ciwgZmllbGRfbmFtZXMpKQogICAgIGlmIHJlbmFtZToKICAgICAgICAgc2VlbiA9IHNldCgpCkBAIC0zMzIsMTUgKzMzMywxOSBAQAogICAgICAgICAgICAgc2Vlbi5hZGQobmFtZSkKICAgICBmb3IgbmFtZSBpbiBbdHlwZW5hbWVdICsgZmllbGRfbmFtZXM6CiAgICAgICAgIGlmIG5vdCBhbGwoYy5pc2FsbnVtKCkgb3IgYz09J18nIGZvciBjIGluIG5hbWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2FuIG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdW5kZXJzY29yZXM6ICVyJyAlIG5hbWUpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW4gb25seSBjb250YWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB1bmRlcnNjb3JlczogJXInICUgbmFtZSkKICAgICAgICAgaWYgX2lza2V5d29yZChuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBiZSBhIGtleXdvcmQ6ICVyJyAlIG5hbWUpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3QgYmUgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrZXl3b3JkOiAlcicgJSBuYW1lKQogICAgICAgICBpZiBuYW1lWzBdLmlzZGlnaXQoKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoIGEgbnVtYmVyOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYSBudW1iZXI6ICVyJyAlIG5hbWUpCiAgICAgc2VlbiA9IHNldCgpCiAgICAgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXM6CiAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIGFuZCBub3QgcmVuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRmllbGQgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZTogJXInICUgbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmU6ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVyJyAlIG5hbWUpCiAgICAgICAgIGlmIG5hbWUgaW4gc2VlbjoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0VuY291bnRlcmVkIGR1cGxpY2F0ZSBmaWVsZCBuYW1lOiAlcicgJSBuYW1lKQogICAgICAgICBzZWVuLmFkZChuYW1lKQpAQCAtMzUxLDIxICszNTYsMjMgQEAKICAgICAgICAgZmllbGRfbmFtZXMgPSB0dXBsZShmaWVsZF9uYW1lcyksCiAgICAgICAgIG51bV9maWVsZHMgPSBsZW4oZmllbGRfbmFtZXMpLAogICAgICAgICBhcmdfbGlzdCA9IHJlcHIodHVwbGUoZmllbGRfbmFtZXMpKS5yZXBsYWNlKCInIiwgIiIpWzE6LTFdLAotICAgICAgICByZXByX2ZtdCA9ICcsICcuam9pbihfcmVwcl90ZW1wbGF0ZS5mb3JtYXQobmFtZT1uYW1lKSBmb3IgbmFtZSBpbiBmaWVsZF9uYW1lcyksCisgICAgICAgIHJlcHJfZm10ID0gJywgJy5qb2luKF9yZXByX3RlbXBsYXRlLmZvcm1hdChuYW1lPW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpZWxkX25hbWVzKSwKICAgICAgICAgZmllbGRfZGVmcyA9ICdcbicuam9pbihfZmllbGRfdGVtcGxhdGUuZm9ybWF0KGluZGV4PWluZGV4LCBuYW1lPW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZShmaWVsZF9uYW1lcykpCiAgICAgKQogCi0gICAgIyBFeGVjdXRlIHRoZSB0ZW1wbGF0ZSBzdHJpbmcgaW4gYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGFuZAotICAgICMgc3VwcG9ydCB0cmFjaW5nIHV0aWxpdGllcyBieSBzZXR0aW5nIGEgdmFsdWUgZm9yIGZyYW1lLmZfZ2xvYmFsc1snX19uYW1lX18nXQorICAgICMgRXhlY3V0ZSB0aGUgdGVtcGxhdGUgc3RyaW5nIGluIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBhbmQgc3VwcG9ydAorICAgICMgdHJhY2luZyB1dGlsaXRpZXMgYnkgc2V0dGluZyBhIHZhbHVlIGZvciBmcmFtZS5mX2dsb2JhbHNbJ19fbmFtZV9fJ10KICAgICBuYW1lc3BhY2UgPSBkaWN0KF9fbmFtZV9fPSduYW1lZHR1cGxlXyVzJyAlIHR5cGVuYW1lKQogICAgIHRyeToKICAgICAgICAgZXhlYyhjbGFzc19kZWZpbml0aW9uLCBuYW1lc3BhY2UpCiAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGU6CiAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKGUubXNnICsgJzpcblxuJyArIGNsYXNzX2RlZmluaXRpb24pCiAgICAgcmVzdWx0ID0gbmFtZXNwYWNlW3R5cGVuYW1lXQorICAgIHJlc3VsdC5fc291cmNlID0gY2xhc3NfZGVmaW5pdGlvbgogICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHByaW50KGNsYXNzX2RlZmluaXRpb24pCisgICAgICAgIHByaW50KHJlc3VsdC5fc291cmNlKQogCiAgICAgIyBGb3IgcGlja2xpbmcgdG8gd29yaywgdGhlIF9fbW9kdWxlX18gdmFyaWFibGUgbmVlZHMgdG8gYmUgc2V0IHRvIHRoZSBmcmFtZQogICAgICMgd2hlcmUgdGhlIG5hbWVkIHR1cGxlIGlzIGNyZWF0ZWQuICBCeXBhc3MgdGhpcyBzdGVwIGluIGVudmlyb21lbnRzIHdoZXJlCkBAIC02NzQsMTIgKzY4MSw4NiBAQAogICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IG5ld2NvdW50CiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBfX3Bvc19fKHNlbGYpOgorICAgICAgICAnQWRkcyBhbiBlbXB0eSBjb3VudGVyLCBlZmZlY3RpdmVseSBzdHJpcHBpbmcgbmVnYXRpdmUgYW5kIHplcm8gY291bnRzJworICAgICAgICByZXR1cm4gc2VsZiArIENvdW50ZXIoKQorCisgICAgZGVmIF9fbmVnX18oc2VsZik6CisgICAgICAgICcnJ1N1YnRyYWN0cyBmcm9tIGFuIGVtcHR5IGNvdW50ZXIuICBTdHJpcHMgcG9zaXRpdmUgYW5kIHplcm8gY291bnRzLAorICAgICAgICBhbmQgZmxpcHMgdGhlIHNpZ24gb24gbmVnYXRpdmUgY291bnRzLgorCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gQ291bnRlcigpIC0gc2VsZgorCisgICAgZGVmIF9rZWVwX3Bvc2l0aXZlKHNlbGYpOgorICAgICAgICAnJydJbnRlcm5hbCBtZXRob2QgdG8gc3RyaXAgZWxlbWVudHMgd2l0aCBhIG5lZ2F0aXZlIG9yIHplcm8gY291bnQnJycKKyAgICAgICAgbm9ucG9zaXRpdmUgPSBbZWxlbSBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpIGlmIG5vdCBjb3VudCA+IDBdCisgICAgICAgIGZvciBlbGVtIGluIG5vbnBvc2l0aXZlOgorICAgICAgICAgICAgZGVsIHNlbGZbZWxlbV0KKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2lhZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICcnJ0lucGxhY2UgYWRkIGZyb20gYW5vdGhlciBjb3VudGVyLCBrZWVwaW5nIG9ubHkgcG9zaXRpdmUgY291bnRzLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYicpCisgICAgICAgID4+PiBjICs9IENvdW50ZXIoJ2JjYycpCisgICAgICAgID4+PiBjCisgICAgICAgIENvdW50ZXIoeydiJzogNCwgJ2MnOiAyLCAnYSc6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGZbZWxlbV0gKz0gY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCisgICAgZGVmIF9faXN1Yl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSBzdWJ0cmFjdCBjb3VudGVyLCBidXQga2VlcCBvbmx5IHJlc3VsdHMgd2l0aCBwb3NpdGl2ZSBjb3VudHMuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiYycpCisgICAgICAgID4+PiBjIC09IENvdW50ZXIoJ2JjY2QnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDIsICdhJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBvdGhlci5pdGVtcygpOgorICAgICAgICAgICAgc2VsZltlbGVtXSAtPSBjb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKKyAgICBkZWYgX19pb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICcnJ0lucGxhY2UgdW5pb24gaXMgdGhlIG1heGltdW0gb2YgdmFsdWUgZnJvbSBlaXRoZXIgY291bnRlci4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyB8PSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDMsICdjJzogMiwgJ2EnOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIG90aGVyX2NvdW50IGluIG90aGVyLml0ZW1zKCk6CisgICAgICAgICAgICBjb3VudCA9IHNlbGZbZWxlbV0KKyAgICAgICAgICAgIGlmIG90aGVyX2NvdW50ID4gY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZltlbGVtXSA9IG90aGVyX2NvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKworICAgIGRlZiBfX2lhbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICcnJ0lucGxhY2UgaW50ZXJzZWN0aW9uIGlzIHRoZSBtaW5pbXVtIG9mIGNvcnJlc3BvbmRpbmcgY291bnRzLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYicpCisgICAgICAgID4+PiBjICY9IENvdW50ZXIoJ2JjYycpCisgICAgICAgID4+PiBjCisgICAgICAgIENvdW50ZXIoeydiJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CisgICAgICAgICAgICBvdGhlcl9jb3VudCA9IG90aGVyW2VsZW1dCisgICAgICAgICAgICBpZiBvdGhlcl9jb3VudCA8IGNvdW50OgorICAgICAgICAgICAgICAgIHNlbGZbZWxlbV0gPSBvdGhlcl9jb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgIENoYWluTWFwIChoZWxwZXIgZm9yIGNvbmZpZ3BhcnNlcikKKyMjIyAgQ2hhaW5NYXAgKGhlbHBlciBmb3IgY29uZmlncGFyc2VyIGFuZCBzdHJpbmcuVGVtcGxhdGUpCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotY2xhc3MgX0NoYWluTWFwKE11dGFibGVNYXBwaW5nKToKK2NsYXNzIENoYWluTWFwKE11dGFibGVNYXBwaW5nKToKICAgICAnJycgQSBDaGFpbk1hcCBncm91cHMgbXVsdGlwbGUgZGljdHMgKG9yIG90aGVyIG1hcHBpbmdzKSB0b2dldGhlcgogICAgIHRvIGNyZWF0ZSBhIHNpbmdsZSwgdXBkYXRlYWJsZSB2aWV3LgogCkBAIC04OTAsNiArOTcxLDggQEAKICAgICBkZWYgaW5zZXJ0KHNlbGYsIGksIGl0ZW0pOiBzZWxmLmRhdGEuaW5zZXJ0KGksIGl0ZW0pCiAgICAgZGVmIHBvcChzZWxmLCBpPS0xKTogcmV0dXJuIHNlbGYuZGF0YS5wb3AoaSkKICAgICBkZWYgcmVtb3ZlKHNlbGYsIGl0ZW0pOiBzZWxmLmRhdGEucmVtb3ZlKGl0ZW0pCisgICAgZGVmIGNsZWFyKHNlbGYpOiBzZWxmLmRhdGEuY2xlYXIoKQorICAgIGRlZiBjb3B5KHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZikKICAgICBkZWYgY291bnQoc2VsZiwgaXRlbSk6IHJldHVybiBzZWxmLmRhdGEuY291bnQoaXRlbSkKICAgICBkZWYgaW5kZXgoc2VsZiwgaXRlbSwgKmFyZ3MpOiByZXR1cm4gc2VsZi5kYXRhLmluZGV4KGl0ZW0sICphcmdzKQogICAgIGRlZiByZXZlcnNlKHNlbGYpOiBzZWxmLmRhdGEucmV2ZXJzZSgpCkBAIC0xMDM0LDcgKzExMTcsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnNwbGl0KHNlcCwgbWF4c3BsaXQpCiAgICAgZGVmIHJzcGxpdChzZWxmLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnJzcGxpdChzZXAsIG1heHNwbGl0KQotICAgIGRlZiBzcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzPTApOiByZXR1cm4gc2VsZi5kYXRhLnNwbGl0bGluZXMoa2VlcGVuZHMpCisgICAgZGVmIHNwbGl0bGluZXMoc2VsZiwga2VlcGVuZHM9RmFsc2UpOiByZXR1cm4gc2VsZi5kYXRhLnNwbGl0bGluZXMoa2VlcGVuZHMpCiAgICAgZGVmIHN0YXJ0c3dpdGgoc2VsZiwgcHJlZml4LCBzdGFydD0wLCBlbmQ9X3N5cy5tYXhzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5zdGFydHN3aXRoKHByZWZpeCwgc3RhcnQsIGVuZCkKICAgICBkZWYgc3RyaXAoc2VsZiwgY2hhcnM9Tm9uZSk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuc3RyaXAoY2hhcnMpKQpAQCAtMTA0NCw0NCArMTEyNywzIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEudHJhbnNsYXRlKCphcmdzKSkKICAgICBkZWYgdXBwZXIoc2VsZik6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEudXBwZXIoKSkKICAgICBkZWYgemZpbGwoc2VsZiwgd2lkdGgpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnpmaWxsKHdpZHRoKSkKLQotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgU2ltcGxlIHRlc3RzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCi0gICAgZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcwotICAgIFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCwgeScsIFRydWUpCi0gICAgcCA9IFBvaW50KHg9MTAsIHk9MjApCi0gICAgYXNzZXJ0IHAgPT0gbG9hZHMoZHVtcHMocCkpCi0KLSAgICAjIHRlc3QgYW5kIGRlbW9uc3RyYXRlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgbWV0aG9kcwotICAgIGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgQHByb3BlcnR5Ci0gICAgICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQotCi0gICAgZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcuKToKLSAgICAgICAgcHJpbnQgKHApCi0KLSAgICBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgICAgICdQb2ludCBjbGFzcyB3aXRoIG9wdGltaXplZCBfbWFrZSgpIGFuZCBfcmVwbGFjZSgpIHdpdGhvdXQgZXJyb3ItY2hlY2tpbmcnCi0gICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICAgICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKLSAgICAgICAgZGVmIF9yZXBsYWNlKHNlbGYsIF9tYXA9bWFwLCAqKmt3ZHMpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21ha2UoX21hcChrd2RzLmdldCwgKCd4JywgJ3knKSwgc2VsZikpCi0KLSAgICBwcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKLQotICAgIFBvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKLSAgICBwcmludChQb2ludDNELl9fZG9jX18pCi0KLSAgICBpbXBvcnQgZG9jdGVzdAotICAgIFRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCi0gICAgcHJpbnQoVGVzdFJlc3VsdHMoKmRvY3Rlc3QudGVzdG1vZCgpKSkKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjNlMzhlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsMzggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgU2ltcGxlIHRlc3RzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcworUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4LCB5JywgVHJ1ZSkKK3AgPSBQb2ludCh4PTEwLCB5PTIwKQorYXNzZXJ0IHAgPT0gbG9hZHMoZHVtcHMocCkpCisKKyMgdGVzdCBhbmQgZGVtb25zdHJhdGUgYWJpbGl0eSB0byBvdmVycmlkZSBtZXRob2RzCitjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisgICAgX19zbG90c19fID0gKCkKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaHlwb3Qoc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41CisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKKworZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcuKToKKyAgICBwcmludCAocCkKKworY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgorICAgICdQb2ludCBjbGFzcyB3aXRoIG9wdGltaXplZCBfbWFrZSgpIGFuZCBfcmVwbGFjZSgpIHdpdGhvdXQgZXJyb3ItY2hlY2tpbmcnCisgICAgX19zbG90c19fID0gKCkKKyAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCisgICAgZGVmIF9yZXBsYWNlKHNlbGYsIF9tYXA9bWFwLCAqKmt3ZHMpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWFrZShfbWFwKGt3ZHMuZ2V0LCAoJ3gnLCAneScpLCBzZWxmKSkKKworcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCisKK1BvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKK3ByaW50KFBvaW50M0QuX19kb2NfXykKKworaW1wb3J0IGRvY3Rlc3QsIGNvbGxlY3Rpb25zCitUZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQorcHJpbnQoVGVzdFJlc3VsdHMoKmRvY3Rlc3QudGVzdG1vZChjb2xsZWN0aW9ucykpKQpkaWZmIC0tZ2l0IGEvTGliL19hYmNvbGwucHkgYi9MaWIvY29sbGVjdGlvbnMvYWJjLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9fYWJjb2xsLnB5CnJlbmFtZSB0byBMaWIvY29sbGVjdGlvbnMvYWJjLnB5CmluZGV4IDVkZGNlYTMuLmMyM2I3ZGQgMTAwNjQ0Ci0tLSBhL0xpYi9fYWJjb2xsLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9hYmMucHkKQEAgLTMsOSArMyw3IEBACiAKICIiIkFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgZm9yIGNvbGxlY3Rpb25zLCBhY2NvcmRpbmcgdG8gUEVQIDMxMTkuCiAKLURPTidUIFVTRSBUSElTIE1PRFVMRSBESVJFQ1RMWSEgIFRoZSBjbGFzc2VzIGhlcmUgc2hvdWxkIGJlIGltcG9ydGVkCi12aWEgY29sbGVjdGlvbnM7IHRoZXkgYXJlIGRlZmluZWQgaGVyZSBvbmx5IHRvIGFsbGV2aWF0ZSBjZXJ0YWluCi1ib290c3RyYXBwaW5nIGlzc3Vlcy4gIFVuaXQgdGVzdHMgYXJlIGluIHRlc3RfY29sbGVjdGlvbnMuCitVbml0IHRlc3RzIGFyZSBpbiB0ZXN0X2NvbGxlY3Rpb25zLgogIiIiCiAKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZApAQCAtMjAsOSArMTgsMTMgQEAKICAgICAgICAgICAgIkJ5dGVTdHJpbmciLAogICAgICAgICAgICBdCiAKLQotIyMjIGNvbGxlY3Rpb24gcmVsYXRlZCB0eXBlcyB3aGljaCBhcmUgbm90IGV4cG9zZWQgdGhyb3VnaCBidWlsdGluICMjIwotIyMgaXRlcmF0b3JzICMjCisjIFByaXZhdGUgbGlzdCBvZiB0eXBlcyB0aGF0IHdlIHdhbnQgdG8gcmVnaXN0ZXIgd2l0aCB0aGUgdmFyaW91cyBBQkNzCisjIHNvIHRoYXQgdGhleSB3aWxsIHBhc3MgdGVzdHMgbGlrZToKKyMgICAgICAgaXQgPSBpdGVyKHNvbWVieXRlYXJyYXkpCisjICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0LCBJdGVyYWJsZSkKKyMgTm90ZTogIGluIG90aGVyIGltcGxlbWVudGF0aW9ucywgdGhlc2UgdHlwZXMgbWFueSBub3QgYmUgZGlzdGluY3QKKyMgYW5kIHRoZXkgbWFrZSBoYXZlIHRoZWlyIG93biBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0eXBlcyB0aGF0CisjIGFyZSBub3QgaW5jbHVkZWQgb24gdGhpcyBsaXN0LgogYnl0ZXNfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoYicnKSkKIGJ5dGVhcnJheV9pdGVyYXRvciA9IHR5cGUoaXRlcihieXRlYXJyYXkoKSkpCiAjY2FsbGFibGVfaXRlcmF0b3IgPSA/Pz8KQEAgLTQxLDEzICs0MywxNSBAQAogZGljdF92YWx1ZXMgPSB0eXBlKHt9LnZhbHVlcygpKQogZGljdF9pdGVtcyA9IHR5cGUoe30uaXRlbXMoKSkKICMjIG1pc2MgIyMKLWRpY3RfcHJveHkgPSB0eXBlKHR5cGUuX19kaWN0X18pCittYXBwaW5ncHJveHkgPSB0eXBlKHR5cGUuX19kaWN0X18pCiAKIAogIyMjIE9ORS1UUklDSyBQT05JRVMgIyMjCiAKIGNsYXNzIEhhc2hhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiAwCkBAIC02NSw2ICs2OSw4IEBACiAKIGNsYXNzIEl0ZXJhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHdoaWxlIEZhbHNlOgpAQCAtODAsNiArODYsOCBAQAogCiBjbGFzcyBJdGVyYXRvcihJdGVyYWJsZSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgogICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCkBAIC0xMTEsNiArMTE5LDggQEAKIAogY2xhc3MgU2l6ZWQobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gMApAQCAtMTI1LDYgKzEzNSw4IEBACiAKIGNsYXNzIENvbnRhaW5lcihtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xMzksNiArMTUxLDggQEAKIAogY2xhc3MgQ2FsbGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xNjYsNiArMTgwLDggQEAKICAgICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KICAgICAiIiIKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFNldCk6CiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKQEAgLTI3Nyw2ICsyOTMsOCBAQAogCiBjbGFzcyBNdXRhYmxlU2V0KFNldCk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGFkZChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIkFkZCBhbiBlbGVtZW50LiIiIgpAQCAtMzUwLDYgKzM2OCw4IEBACiAKIGNsYXNzIE1hcHBpbmcoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICByYWlzZSBLZXlFcnJvcgpAQCAtMzg1LDYgKzQwNSw4IEBACiAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBub3QgKHNlbGYgPT0gb3RoZXIpCiAKK01hcHBpbmcucmVnaXN0ZXIobWFwcGluZ3Byb3h5KQorCiAKIGNsYXNzIE1hcHBpbmdWaWV3KFNpemVkKToKIApAQCAtNDUzLDYgKzQ3NSw4IEBACiAKIGNsYXNzIE11dGFibGVNYXBwaW5nKE1hcHBpbmcpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgcmFpc2UgS2V5RXJyb3IKQEAgLTUzMiw2ICs1NTYsOCBAQAogICAgIF9fZ2V0aXRlbV9fLCBhbmQgX19sZW5fXy4KICAgICAiIiIKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgICByYWlzZSBJbmRleEVycm9yCkBAIC01NzcsMTIgKzYwMywxNiBAQAogICAgIFhYWCBTaG91bGQgYWRkIGFsbCB0aGVpciBtZXRob2RzLgogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogQnl0ZVN0cmluZy5yZWdpc3RlcihieXRlcykKIEJ5dGVTdHJpbmcucmVnaXN0ZXIoYnl0ZWFycmF5KQogCiAKIGNsYXNzIE11dGFibGVTZXF1ZW5jZShTZXF1ZW5jZSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKQEAgLTU5OCw2ICs2MjgsMTMgQEAKICAgICBkZWYgYXBwZW5kKHNlbGYsIHZhbHVlKToKICAgICAgICAgc2VsZi5pbnNlcnQobGVuKHNlbGYpLCB2YWx1ZSkKIAorICAgIGRlZiBjbGVhcihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzZWxmLnBvcCgpCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgcGFzcworCiAgICAgZGVmIHJldmVyc2Uoc2VsZik6CiAgICAgICAgIG4gPSBsZW4oc2VsZikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobi8vMik6CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQppbmRleCA5ZjExZjY5Li5lOTk3YzAyIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKQEAgLTQsNyArNCw2IEBACiBfX2F1dGhvcl9fID0gJ0JyaWFuIFF1aW5sYW4gKGJyaWFuQHN3ZWV0YXBwLmNvbSknCiAKIGltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCkBAIC0zMzMsNyArMzMyLDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBjYW5jZWxsZWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaGFzIGNhbmNlbGxlZC4iIiIKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSB3YXMgY2FuY2VsbGVkLiIiIgogICAgICAgICB3aXRoIHNlbGYuX2NvbmRpdGlvbjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZSBpbiBbQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVEXQogCkBAIC00NzEsOCArNDcwLDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBMT0dHRVIuY3JpdGljYWwoJ0Z1dHVyZSAlcyBpbiB1bmV4cGVjdGVkIHN0YXRlOiAlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYuZnV0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mdXR1cmUuX3N0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdGUpCiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGdXR1cmUgaW4gdW5leHBlY3RlZCBzdGF0ZScpCiAKICAgICBkZWYgc2V0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgpAQCAtNTM4LDE1ICs1MzcsMTkgQEAKIAogICAgICAgICBmcyA9IFtzZWxmLnN1Ym1pdChmbiwgKmFyZ3MpIGZvciBhcmdzIGluIHppcCgqaXRlcmFibGVzKV0KIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgZnV0dXJlIGluIGZzOgotICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdCgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdChlbmRfdGltZSAtIHRpbWUudGltZSgpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKLSAgICAgICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKKyAgICAgICAgIyBZaWVsZCBtdXN0IGJlIGhpZGRlbiBpbiBjbG9zdXJlIHNvIHRoYXQgdGhlIGZ1dHVyZXMgYXJlIHN1Ym1pdHRlZAorICAgICAgICAjIGJlZm9yZSB0aGUgZmlyc3QgaXRlcmF0b3IgdmFsdWUgaXMgcmVxdWlyZWQuCisgICAgICAgIGRlZiByZXN1bHRfaXRlcmF0b3IoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgZnV0dXJlIGluIGZzOgorICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoZW5kX3RpbWUgLSB0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKKyAgICAgICAgICAgICAgICAgICAgZnV0dXJlLmNhbmNlbCgpCisgICAgICAgIHJldHVybiByZXN1bHRfaXRlcmF0b3IoKQogCiAgICAgZGVmIHNodXRkb3duKHNlbGYsIHdhaXQ9VHJ1ZSk6CiAgICAgICAgICIiIkNsZWFuLXVwIHRoZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBFeGVjdXRvci4KZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQppbmRleCBkM2JiZTJjLi4wNDIzOGE3IDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CkBAIC00Niw5ICs0NiwxMiBAQAogX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwogCiBpbXBvcnQgYXRleGl0CitpbXBvcnQgb3MKIGZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBfYmFzZQogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitmcm9tIG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMgaW1wb3J0IFNpbXBsZVF1ZXVlLCBGdWxsCitmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgd2Vha3JlZgogCkBAIC0xMjEsNyArMTI0LDcgQEAKICAgICAgICAgY2FsbF9pdGVtID0gY2FsbF9xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSkKICAgICAgICAgaWYgY2FsbF9pdGVtIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFdha2UgdXAgcXVldWUgbWFuYWdlbWVudCB0aHJlYWQKLSAgICAgICAgICAgIHJlc3VsdF9xdWV1ZS5wdXQoTm9uZSkKKyAgICAgICAgICAgIHJlc3VsdF9xdWV1ZS5wdXQob3MuZ2V0cGlkKCkpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgciA9IGNhbGxfaXRlbS5mbigqY2FsbF9pdGVtLmFyZ3MsICoqY2FsbF9pdGVtLmt3YXJncykKQEAgLTE5Myw0NiArMTk2LDkyIEBACiAgICAgICAgIHJlc3VsdF9xdWV1ZTogQSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgb2YgX1Jlc3VsdEl0ZW1zIGdlbmVyYXRlZCBieSB0aGUKICAgICAgICAgICAgIHByb2Nlc3Mgd29ya2Vycy4KICAgICAiIiIKLSAgICBuYl9zaHV0ZG93bl9wcm9jZXNzZXMgPSAwCi0gICAgZGVmIHNodXRkb3duX29uZV9wcm9jZXNzKCk6Ci0gICAgICAgICIiIlRlbGwgYSB3b3JrZXIgdG8gdGVybWluYXRlLCB3aGljaCB3aWxsIGluIHR1cm4gd2FrZSB1cyBhZ2FpbiIiIgotICAgICAgICBub25sb2NhbCBuYl9zaHV0ZG93bl9wcm9jZXNzZXMKLSAgICAgICAgY2FsbF9xdWV1ZS5wdXQoTm9uZSkKLSAgICAgICAgbmJfc2h1dGRvd25fcHJvY2Vzc2VzICs9IDEKKyAgICBleGVjdXRvciA9IE5vbmUKKworICAgIGRlZiBzaHV0dGluZ19kb3duKCk6CisgICAgICAgIHJldHVybiBfc2h1dGRvd24gb3IgZXhlY3V0b3IgaXMgTm9uZSBvciBleGVjdXRvci5fc2h1dGRvd25fdGhyZWFkCisKKyAgICBkZWYgc2h1dGRvd25fd29ya2VyKCk6CisgICAgICAgICMgVGhpcyBpcyBhbiB1cHBlciBib3VuZAorICAgICAgICBuYl9jaGlsZHJlbl9hbGl2ZSA9IHN1bShwLmlzX2FsaXZlKCkgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBuYl9jaGlsZHJlbl9hbGl2ZSk6CisgICAgICAgICAgICBjYWxsX3F1ZXVlLnB1dF9ub3dhaXQoTm9uZSkKKyAgICAgICAgIyBSZWxlYXNlIHRoZSBxdWV1ZSdzIHJlc291cmNlcyBhcyBzb29uIGFzIHBvc3NpYmxlLgorICAgICAgICBjYWxsX3F1ZXVlLmNsb3NlKCkKKyAgICAgICAgIyBJZiAuam9pbigpIGlzIG5vdCBjYWxsZWQgb24gdGhlIGNyZWF0ZWQgcHJvY2Vzc2VzIHRoZW4KKyAgICAgICAgIyBzb21lIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSBtZXRob2RzIG1heSBkZWFkbG9jayBvbiBNYWMgT1MgWC4KKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgorICAgICAgICAgICAgcC5qb2luKCkKKworICAgIHJlYWRlciA9IHJlc3VsdF9xdWV1ZS5fcmVhZGVyCisKICAgICB3aGlsZSBUcnVlOgogICAgICAgICBfYWRkX2NhbGxfaXRlbV90b19xdWV1ZShwZW5kaW5nX3dvcmtfaXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfaWRzX3F1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsX3F1ZXVlKQogCi0gICAgICAgIHJlc3VsdF9pdGVtID0gcmVzdWx0X3F1ZXVlLmdldChibG9jaz1UcnVlKQotICAgICAgICBpZiByZXN1bHRfaXRlbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdvcmtfaXRlbSA9IHBlbmRpbmdfd29ya19pdGVtc1tyZXN1bHRfaXRlbS53b3JrX2lkXQotICAgICAgICAgICAgZGVsIHBlbmRpbmdfd29ya19pdGVtc1tyZXN1bHRfaXRlbS53b3JrX2lkXQotCi0gICAgICAgICAgICBpZiByZXN1bHRfaXRlbS5leGNlcHRpb246Ci0gICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKHJlc3VsdF9pdGVtLmV4Y2VwdGlvbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfcmVzdWx0KHJlc3VsdF9pdGVtLnJlc3VsdCkKKyAgICAgICAgc2VudGluZWxzID0gW3Auc2VudGluZWwgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpXQorICAgICAgICBhc3NlcnQgc2VudGluZWxzCisgICAgICAgIHJlYWR5ID0gd2FpdChbcmVhZGVyXSArIHNlbnRpbmVscykKKyAgICAgICAgaWYgcmVhZGVyIGluIHJlYWR5OgorICAgICAgICAgICAgcmVzdWx0X2l0ZW0gPSByZWFkZXIucmVjdigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE1hcmsgdGhlIHByb2Nlc3MgcG9vbCBicm9rZW4gc28gdGhhdCBzdWJtaXRzIGZhaWwgcmlnaHQgbm93LgorICAgICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9yZWZlcmVuY2UoKQorICAgICAgICAgICAgaWYgZXhlY3V0b3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZXhlY3V0b3IuX2Jyb2tlbiA9IFRydWUKKyAgICAgICAgICAgICAgICBleGVjdXRvci5fc2h1dGRvd25fdGhyZWFkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGV4ZWN1dG9yID0gTm9uZQorICAgICAgICAgICAgIyBBbGwgZnV0dXJlcyBpbiBmbGlnaHQgbXVzdCBiZSBtYXJrZWQgZmFpbGVkCisgICAgICAgICAgICBmb3Igd29ya19pZCwgd29ya19pdGVtIGluIHBlbmRpbmdfd29ya19pdGVtcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgQnJva2VuUHJvY2Vzc1Bvb2woCisgICAgICAgICAgICAgICAgICAgICAgICAiQSBwcm9jZXNzIGluIHRoZSBwcm9jZXNzIHBvb2wgd2FzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXJtaW5hdGVkIGFicnVwdGx5IHdoaWxlIHRoZSBmdXR1cmUgd2FzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJydW5uaW5nIG9yIHBlbmRpbmcuIgorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgcGVuZGluZ193b3JrX2l0ZW1zLmNsZWFyKCkKKyAgICAgICAgICAgICMgVGVybWluYXRlIHJlbWFpbmluZyB3b3JrZXJzIGZvcmNpYmx5OiB0aGUgcXVldWVzIG9yIHRoZWlyCisgICAgICAgICAgICAjIGxvY2tzIG1heSBiZSBpbiBhIGRpcnR5IHN0YXRlIGFuZCBibG9jayBmb3JldmVyLgorICAgICAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHAudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNodXRkb3duX3dvcmtlcigpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHRfaXRlbSwgaW50KToKKyAgICAgICAgICAgICMgQ2xlYW4gc2h1dGRvd24gb2YgYSB3b3JrZXIgdXNpbmcgaXRzIFBJRAorICAgICAgICAgICAgIyAoYXZvaWRzIG1hcmtpbmcgdGhlIGV4ZWN1dG9yIGJyb2tlbikKKyAgICAgICAgICAgIGFzc2VydCBzaHV0dGluZ19kb3duKCkKKyAgICAgICAgICAgIHAgPSBwcm9jZXNzZXMucG9wKHJlc3VsdF9pdGVtKQorICAgICAgICAgICAgcC5qb2luKCkKKyAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzZXM6CisgICAgICAgICAgICAgICAgc2h1dGRvd25fd29ya2VyKCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxpZiByZXN1bHRfaXRlbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdvcmtfaXRlbSA9IHBlbmRpbmdfd29ya19pdGVtcy5wb3AocmVzdWx0X2l0ZW0ud29ya19pZCwgTm9uZSkKKyAgICAgICAgICAgICMgd29ya19pdGVtIGNhbiBiZSBOb25lIGlmIGFub3RoZXIgcHJvY2VzcyB0ZXJtaW5hdGVkIChzZWUgYWJvdmUpCisgICAgICAgICAgICBpZiB3b3JrX2l0ZW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgcmVzdWx0X2l0ZW0uZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24ocmVzdWx0X2l0ZW0uZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X3Jlc3VsdChyZXN1bHRfaXRlbS5yZXN1bHQpCiAgICAgICAgICMgQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQgc3RhcnQgc2h1dHRpbmcgZG93bi4KICAgICAgICAgZXhlY3V0b3IgPSBleGVjdXRvcl9yZWZlcmVuY2UoKQogICAgICAgICAjIE5vIG1vcmUgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQgaWY6CiAgICAgICAgICMgICAtIFRoZSBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duIE9SCiAgICAgICAgICMgICAtIFRoZSBleGVjdXRvciB0aGF0IG93bnMgdGhpcyB3b3JrZXIgaGFzIGJlZW4gY29sbGVjdGVkIE9SCiAgICAgICAgICMgICAtIFRoZSBleGVjdXRvciB0aGF0IG93bnMgdGhpcyB3b3JrZXIgaGFzIGJlZW4gc2h1dGRvd24uCi0gICAgICAgIGlmIF9zaHV0ZG93biBvciBleGVjdXRvciBpcyBOb25lIG9yIGV4ZWN1dG9yLl9zaHV0ZG93bl90aHJlYWQ6Ci0gICAgICAgICAgICAjIFNpbmNlIG5vIG5ldyB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCwgaXQgaXMgc2FmZSB0byBzaHV0ZG93bgotICAgICAgICAgICAgIyB0aGlzIHRocmVhZCBpZiB0aGVyZSBhcmUgbm8gcGVuZGluZyB3b3JrIGl0ZW1zLgotICAgICAgICAgICAgaWYgbm90IHBlbmRpbmdfd29ya19pdGVtczoKLSAgICAgICAgICAgICAgICB3aGlsZSBuYl9zaHV0ZG93bl9wcm9jZXNzZXMgPCBsZW4ocHJvY2Vzc2VzKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25fb25lX3Byb2Nlc3MoKQotICAgICAgICAgICAgICAgICMgSWYgLmpvaW4oKSBpcyBub3QgY2FsbGVkIG9uIHRoZSBjcmVhdGVkIHByb2Nlc3NlcyB0aGVuCi0gICAgICAgICAgICAgICAgIyBzb21lIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSBtZXRob2RzIG1heSBkZWFkbG9jayBvbiBNYWMgT1MKLSAgICAgICAgICAgICAgICAjIFguCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgotICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQotICAgICAgICAgICAgICAgIGNhbGxfcXVldWUuY2xvc2UoKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBkZWwgZXhlY3V0b3IKKyAgICAgICAgaWYgc2h1dHRpbmdfZG93bigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgU2luY2Ugbm8gbmV3IHdvcmsgaXRlbXMgY2FuIGJlIGFkZGVkLCBpdCBpcyBzYWZlIHRvIHNodXRkb3duCisgICAgICAgICAgICAgICAgIyB0aGlzIHRocmVhZCBpZiB0aGVyZSBhcmUgbm8gcGVuZGluZyB3b3JrIGl0ZW1zLgorICAgICAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nX3dvcmtfaXRlbXM6CisgICAgICAgICAgICAgICAgICAgIHNodXRkb3duX3dvcmtlcigpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZXhjZXB0IEZ1bGw6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIG5vdCBhIHByb2JsZW06IHdlIHdpbGwgZXZlbnR1YWxseSBiZSB3b2tlbiB1cCAoaW4KKyAgICAgICAgICAgICAgICAjIHJlc3VsdF9xdWV1ZS5nZXQoKSkgYW5kIGJlIGFibGUgdG8gc2VuZCBhIHNlbnRpbmVsIGFnYWluLgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZXhlY3V0b3IgPSBOb25lCiAKIF9zeXN0ZW1fbGltaXRzX2NoZWNrZWQgPSBGYWxzZQogX3N5c3RlbV9saW1pdGVkID0gTm9uZQpAQCAtMjQzLDcgKzI5Miw2IEBACiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKF9zeXN0ZW1fbGltaXRlZCkKICAgICBfc3lzdGVtX2xpbWl0c19jaGVja2VkID0gVHJ1ZQogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIG5zZW1zX21heCA9IG9zLnN5c2NvbmYoIlNDX1NFTV9OU0VNU19NQVgiKQogICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAjIHN5c2NvbmYgbm90IGF2YWlsYWJsZSBvciBzZXR0aW5nIG5vdCBhdmFpbGFibGUKQEAgLTI1OSw2ICszMDcsMTQgQEAKICAgICBfc3lzdGVtX2xpbWl0ZWQgPSAic3lzdGVtIHByb3ZpZGVzIHRvbyBmZXcgc2VtYXBob3JlcyAoJWQgYXZhaWxhYmxlLCAyNTYgbmVjZXNzYXJ5KSIgJSBuc2Vtc19tYXgKICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKF9zeXN0ZW1fbGltaXRlZCkKIAorCitjbGFzcyBCcm9rZW5Qcm9jZXNzUG9vbChSdW50aW1lRXJyb3IpOgorICAgICIiIgorICAgIFJhaXNlZCB3aGVuIGEgcHJvY2VzcyBpbiBhIFByb2Nlc3NQb29sRXhlY3V0b3IgdGVybWluYXRlZCBhYnJ1cHRseQorICAgIHdoaWxlIGEgZnV0dXJlIHdhcyBpbiB0aGUgcnVubmluZyBzdGF0ZS4KKyAgICAiIiIKKworCiBjbGFzcyBQcm9jZXNzUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFByb2Nlc3NQb29sRXhlY3V0b3IgaW5zdGFuY2UuCkBAIC0yODAsMTQgKzMzNiwyMCBAQAogICAgICAgICAjIGJlY2F1c2UgZnV0dXJlcyBpbiB0aGUgY2FsbCBxdWV1ZSBjYW5ub3QgYmUgY2FuY2VsbGVkLgogICAgICAgICBzZWxmLl9jYWxsX3F1ZXVlID0gbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKHNlbGYuX21heF93b3JrZXJzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFRSQV9RVUVVRURfQ0FMTFMpCi0gICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpCisgICAgICAgICMgS2lsbGVkIHdvcmtlciBwcm9jZXNzZXMgY2FuIHByb2R1Y2Ugc3B1cmlvdXMgImJyb2tlbiBwaXBlIgorICAgICAgICAjIHRyYWNlYmFja3MgaW4gdGhlIHF1ZXVlJ3Mgb3duIHdvcmtlciB0aHJlYWQuIEJ1dCB3ZSBkZXRlY3Qga2lsbGVkCisgICAgICAgICMgcHJvY2Vzc2VzIGFueXdheSwgc28gc2lsZW5jZSB0aGUgdHJhY2ViYWNrcy4KKyAgICAgICAgc2VsZi5fY2FsbF9xdWV1ZS5faWdub3JlX2VwaXBlID0gVHJ1ZQorICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBTaW1wbGVRdWV1ZSgpCiAgICAgICAgIHNlbGYuX3dvcmtfaWRzID0gcXVldWUuUXVldWUoKQogICAgICAgICBzZWxmLl9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcHJvY2Vzc2VzID0gc2V0KCkKKyAgICAgICAgIyBNYXAgb2YgcGlkcyB0byBwcm9jZXNzZXMKKyAgICAgICAgc2VsZi5fcHJvY2Vzc2VzID0ge30KIAogICAgICAgICAjIFNodXRkb3duIGlzIGEgdHdvLXN0ZXAgcHJvY2Vzcy4KICAgICAgICAgc2VsZi5fc2h1dGRvd25fdGhyZWFkID0gRmFsc2UKICAgICAgICAgc2VsZi5fc2h1dGRvd25fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fYnJva2VuID0gRmFsc2UKICAgICAgICAgc2VsZi5fcXVldWVfY291bnQgPSAwCiAgICAgICAgIHNlbGYuX3BlbmRpbmdfd29ya19pdGVtcyA9IHt9CiAKQEAgLTI5Nyw2ICszNTksOCBAQAogICAgICAgICBkZWYgd2Vha3JlZl9jYihfLCBxPXNlbGYuX3Jlc3VsdF9xdWV1ZSk6CiAgICAgICAgICAgICBxLnB1dChOb25lKQogICAgICAgICBpZiBzZWxmLl9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCBpcyBOb25lOgorICAgICAgICAgICAgIyBTdGFydCB0aGUgcHJvY2Vzc2VzIHNvIHRoYXQgdGhlaXIgc2VudGluZWxzIGFyZSBrbm93bi4KKyAgICAgICAgICAgIHNlbGYuX2FkanVzdF9wcm9jZXNzX2NvdW50KCkKICAgICAgICAgICAgIHNlbGYuX3F1ZXVlX21hbmFnZW1lbnRfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PV9xdWV1ZV9tYW5hZ2VtZW50X3dvcmtlciwKICAgICAgICAgICAgICAgICAgICAgYXJncz0od2Vha3JlZi5yZWYoc2VsZiwgd2Vha3JlZl9jYiksCkBAIC0zMTYsMTAgKzM4MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLl9jYWxsX3F1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUpKQogICAgICAgICAgICAgcC5zdGFydCgpCi0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzZXMuYWRkKHApCisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzZXNbcC5waWRdID0gcAogCiAgICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fYnJva2VuOgorICAgICAgICAgICAgICAgIHJhaXNlIEJyb2tlblByb2Nlc3NQb29sKCdBIGNoaWxkIHByb2Nlc3MgdGVybWluYXRlZCAnCisgICAgICAgICAgICAgICAgICAgICdhYnJ1cHRseSwgdGhlIHByb2Nlc3MgcG9vbCBpcyBub3QgdXNhYmxlIGFueW1vcmUnKQogICAgICAgICAgICAgaWYgc2VsZi5fc2h1dGRvd25fdGhyZWFkOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignY2Fubm90IHNjaGVkdWxlIG5ldyBmdXR1cmVzIGFmdGVyIHNodXRkb3duJykKIApAQCAtMzMzLDcgKzQwMCw2IEBACiAgICAgICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUucHV0KE5vbmUpCiAKICAgICAgICAgICAgIHNlbGYuX3N0YXJ0X3F1ZXVlX21hbmFnZW1lbnRfdGhyZWFkKCkKLSAgICAgICAgICAgIHNlbGYuX2FkanVzdF9wcm9jZXNzX2NvdW50KCkKICAgICAgICAgICAgIHJldHVybiBmCiAgICAgc3VibWl0Ll9fZG9jX18gPSBfYmFzZS5FeGVjdXRvci5zdWJtaXQuX19kb2NfXwogCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CmluZGV4IGZiYWMwODguLjk1YmI2ODIgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CkBAIC03NCw3ICs3NCw3IEBACiAgICAgICAgICAgICAgICAgd29ya19xdWV1ZS5wdXQoTm9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRlbCBleGVjdXRvcgotICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CiAgICAgICAgIF9iYXNlLkxPR0dFUi5jcml0aWNhbCgnRXhjZXB0aW9uIGluIHdvcmtlcicsIGV4Y19pbmZvPVRydWUpCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6CmRpZmYgLS1naXQgYS9MaWIvY29uZmlncGFyc2VyLnB5IGIvTGliL2NvbmZpZ3BhcnNlci5weQppbmRleCBlNTUzNmEwLi5jN2JlZTZiIDEwMDY0NAotLS0gYS9MaWIvY29uZmlncGFyc2VyLnB5CisrKyBiL0xpYi9jb25maWdwYXJzZXIucHkKQEAgLTExOCw3ICsxMTgsOCBAQAogICAgICAgICBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcyBhcmUgc3Vycm91bmRlZCBieSBzcGFjZXMuCiAiIiIKIAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcsIE9yZGVyZWREaWN0IGFzIF9kZWZhdWx0X2RpY3QsIF9DaGFpbk1hcAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCBhcyBfZGVmYXVsdF9kaWN0LCBDaGFpbk1hcCBhcyBfQ2hhaW5NYXAKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scwpAQCAtOTU5LDcgKzk2MCw5IEBACiAKICAgICAgICAgIyBYWFggdGhpcyBpcyBub3QgYXRvbWljIGlmIHJlYWRfZGljdCBmYWlscyBhdCBhbnkgcG9pbnQuIFRoZW4gYWdhaW4sCiAgICAgICAgICMgbm8gdXBkYXRlIG1ldGhvZCBpbiBjb25maWdwYXJzZXIgaXMgYXRvbWljIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCi0gICAgICAgIGlmIGtleSBpbiBzZWxmLl9zZWN0aW9uczoKKyAgICAgICAgaWYga2V5ID09IHNlbGYuZGVmYXVsdF9zZWN0aW9uOgorICAgICAgICAgICAgc2VsZi5fZGVmYXVsdHMuY2xlYXIoKQorICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9zZWN0aW9uczoKICAgICAgICAgICAgIHNlbGYuX3NlY3Rpb25zW2tleV0uY2xlYXIoKQogICAgICAgICBzZWxmLnJlYWRfZGljdCh7a2V5OiB2YWx1ZX0pCiAKQEAgLTEwMDUsMTggKzEwMDgsMjYgQEAKICAgICAgICAgaW5kZW50X2xldmVsID0gMAogICAgICAgICBlID0gTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm9uZSwgb3IgYW4gZXhjZXB0aW9uCiAgICAgICAgIGZvciBsaW5lbm8sIGxpbmUgaW4gZW51bWVyYXRlKGZwLCBzdGFydD0xKToKLSAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBOb25lCisgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gc3lzLm1heHNpemUKICAgICAgICAgICAgICMgc3RyaXAgaW5saW5lIGNvbW1lbnRzCi0gICAgICAgICAgICBmb3IgcHJlZml4IGluIHNlbGYuX2lubGluZV9jb21tZW50X3ByZWZpeGVzOgotICAgICAgICAgICAgICAgIGluZGV4ID0gbGluZS5maW5kKHByZWZpeCkKLSAgICAgICAgICAgICAgICBpZiBpbmRleCA9PSAwIG9yIChpbmRleCA+IDAgYW5kIGxpbmVbaW5kZXgtMV0uaXNzcGFjZSgpKToKLSAgICAgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IGluZGV4Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpbmxpbmVfcHJlZml4ZXMgPSB7cDogLTEgZm9yIHAgaW4gc2VsZi5faW5saW5lX2NvbW1lbnRfcHJlZml4ZXN9CisgICAgICAgICAgICB3aGlsZSBjb21tZW50X3N0YXJ0ID09IHN5cy5tYXhzaXplIGFuZCBpbmxpbmVfcHJlZml4ZXM6CisgICAgICAgICAgICAgICAgbmV4dF9wcmVmaXhlcyA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHByZWZpeCwgaW5kZXggaW4gaW5saW5lX3ByZWZpeGVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gbGluZS5maW5kKHByZWZpeCwgaW5kZXgrMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gLTE6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBuZXh0X3ByZWZpeGVzW3ByZWZpeF0gPSBpbmRleAorICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA9PSAwIG9yIChpbmRleCA+IDAgYW5kIGxpbmVbaW5kZXgtMV0uaXNzcGFjZSgpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBtaW4oY29tbWVudF9zdGFydCwgaW5kZXgpCisgICAgICAgICAgICAgICAgaW5saW5lX3ByZWZpeGVzID0gbmV4dF9wcmVmaXhlcwogICAgICAgICAgICAgIyBzdHJpcCBmdWxsIGxpbmUgY29tbWVudHMKICAgICAgICAgICAgIGZvciBwcmVmaXggaW4gc2VsZi5fY29tbWVudF9wcmVmaXhlczoKICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aChwcmVmaXgpOgogICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gMAogICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY29tbWVudF9zdGFydCA9PSBzeXMubWF4c2l6ZToKKyAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gTm9uZQogICAgICAgICAgICAgdmFsdWUgPSBsaW5lWzpjb21tZW50X3N0YXJ0XS5zdHJpcCgpCiAgICAgICAgICAgICBpZiBub3QgdmFsdWU6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZW1wdHlfbGluZXNfaW5fdmFsdWVzOgpkaWZmIC0tZ2l0IGEvTGliL2NvbnRleHRsaWIucHkgYi9MaWIvY29udGV4dGxpYi5weQppbmRleCA1ZWJiYmM2Li4wYjZiZjcxIDEwMDY0NAotLS0gYS9MaWIvY29udGV4dGxpYi5weQorKysgYi9MaWIvY29udGV4dGxpYi5weQpAQCAtMSwxMCArMSwxMCBAQAogIiIiVXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudCBjb250ZXh0cy4gIFNlZSBQRVAgMzQzLiIiIgogCiBpbXBvcnQgc3lzCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCi1mcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAKLV9fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciJdCitfX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIl0KIAogCiBjbGFzcyBDb250ZXh0RGVjb3JhdG9yKG9iamVjdCk6CkBAIC0xMywxMiArMTMsMTIgQEAKICAgICBkZWYgX3JlY3JlYXRlX2NtKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSByZWNyZWF0ZWQgaW5zdGFuY2Ugb2Ygc2VsZi4KIAotICAgICAgICBBbGxvd3Mgb3RoZXJ3aXNlIG9uZS1zaG90IGNvbnRleHQgbWFuYWdlcnMgbGlrZQorICAgICAgICBBbGxvd3MgYW4gb3RoZXJ3aXNlIG9uZS1zaG90IGNvbnRleHQgbWFuYWdlciBsaWtlCiAgICAgICAgIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlciB0byBzdXBwb3J0IHVzZSBhcwotICAgICAgICBkZWNvcmF0b3JzIHZpYSBpbXBsaWNpdCByZWNyZWF0aW9uLgorICAgICAgICBhIGRlY29yYXRvciB2aWEgaW1wbGljaXQgcmVjcmVhdGlvbi4KIAotICAgICAgICBOb3RlOiB0aGlzIGlzIGEgcHJpdmF0ZSBpbnRlcmZhY2UganVzdCBmb3IgX0dDTSBpbiAzLjIgYnV0IHdpbGwgYmUKLSAgICAgICAgcmVuYW1lZCBhbmQgZG9jdW1lbnRlZCBmb3IgdGhpcmQgcGFydHkgdXNlIGluIDMuMworICAgICAgICBUaGlzIGlzIGEgcHJpdmF0ZSBpbnRlcmZhY2UganVzdCBmb3IgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyLgorICAgICAgICBTZWUgaXNzdWUgIzExNjQ3IGZvciBkZXRhaWxzLgogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYKIApAQCAtMTM5LDMgKzEzOSwxMTcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCisKKworIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM1ODUKK2NsYXNzIEV4aXRTdGFjayhvYmplY3QpOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgZHluYW1pYyBtYW5hZ2VtZW50IG9mIGEgc3RhY2sgb2YgZXhpdCBjYWxsYmFja3MKKworICAgIEZvciBleGFtcGxlOgorCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBmaWxlcyA9IFtzdGFjay5lbnRlcl9jb250ZXh0KG9wZW4oZm5hbWUpKSBmb3IgZm5hbWUgaW4gZmlsZW5hbWVzXQorICAgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICAgIyB0aGUgd2l0aCBzdGF0ZW1lbnQsIGV2ZW4gaWYgYXR0ZW1wdHMgdG8gb3BlbiBmaWxlcyBsYXRlcgorICAgICAgICAgICAgIyBpbiB0aGUgbGlzdCByYWlzZSBhbiBleGNlcHRpb24KKworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fZXhpdF9jYWxsYmFja3MgPSBkZXF1ZSgpCisKKyAgICBkZWYgcG9wX2FsbChzZWxmKToKKyAgICAgICAgIiIiUHJlc2VydmUgdGhlIGNvbnRleHQgc3RhY2sgYnkgdHJhbnNmZXJyaW5nIGl0IHRvIGEgbmV3IGluc3RhbmNlIiIiCisgICAgICAgIG5ld19zdGFjayA9IHR5cGUoc2VsZikoKQorICAgICAgICBuZXdfc3RhY2suX2V4aXRfY2FsbGJhY2tzID0gc2VsZi5fZXhpdF9jYWxsYmFja3MKKyAgICAgICAgc2VsZi5fZXhpdF9jYWxsYmFja3MgPSBkZXF1ZSgpCisgICAgICAgIHJldHVybiBuZXdfc3RhY2sKKworICAgIGRlZiBfcHVzaF9jbV9leGl0KHNlbGYsIGNtLCBjbV9leGl0KToKKyAgICAgICAgIiIiSGVscGVyIHRvIGNvcnJlY3RseSByZWdpc3RlciBjYWxsYmFja3MgdG8gX19leGl0X18gbWV0aG9kcyIiIgorICAgICAgICBkZWYgX2V4aXRfd3JhcHBlcigqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgcmV0dXJuIGNtX2V4aXQoY20sICpleGNfZGV0YWlscykKKyAgICAgICAgX2V4aXRfd3JhcHBlci5fX3NlbGZfXyA9IGNtCisgICAgICAgIHNlbGYucHVzaChfZXhpdF93cmFwcGVyKQorCisgICAgZGVmIHB1c2goc2VsZiwgZXhpdCk6CisgICAgICAgICIiIlJlZ2lzdGVycyBhIGNhbGxiYWNrIHdpdGggdGhlIHN0YW5kYXJkIF9fZXhpdF9fIG1ldGhvZCBzaWduYXR1cmUKKworICAgICAgICBDYW4gc3VwcHJlc3MgZXhjZXB0aW9ucyB0aGUgc2FtZSB3YXkgX19leGl0X18gbWV0aG9kcyBjYW4uCisKKyAgICAgICAgQWxzbyBhY2NlcHRzIGFueSBvYmplY3Qgd2l0aCBhbiBfX2V4aXRfXyBtZXRob2QgKHJlZ2lzdGVyaW5nIGEgY2FsbAorICAgICAgICB0byB0aGUgbWV0aG9kIGluc3RlYWQgb2YgdGhlIG9iamVjdCBpdHNlbGYpCisgICAgICAgICIiIgorICAgICAgICAjIFdlIHVzZSBhbiB1bmJvdW5kIG1ldGhvZCByYXRoZXIgdGhhbiBhIGJvdW5kIG1ldGhvZCB0byBmb2xsb3cKKyAgICAgICAgIyB0aGUgc3RhbmRhcmQgbG9va3VwIGJlaGF2aW91ciBmb3Igc3BlY2lhbCBtZXRob2RzCisgICAgICAgIF9jYl90eXBlID0gdHlwZShleGl0KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBleGl0X21ldGhvZCA9IF9jYl90eXBlLl9fZXhpdF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgTm90IGEgY29udGV4dCBtYW5hZ2VyLCBzbyBhc3N1bWUgaXRzIGEgY2FsbGFibGUKKyAgICAgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzLmFwcGVuZChleGl0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHVzaF9jbV9leGl0KGV4aXQsIGV4aXRfbWV0aG9kKQorICAgICAgICByZXR1cm4gZXhpdCAjIEFsbG93IHVzZSBhcyBhIGRlY29yYXRvcgorCisgICAgZGVmIGNhbGxiYWNrKHNlbGYsIGNhbGxiYWNrLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgIiIiUmVnaXN0ZXJzIGFuIGFyYml0cmFyeSBjYWxsYmFjayBhbmQgYXJndW1lbnRzLgorCisgICAgICAgIENhbm5vdCBzdXBwcmVzcyBleGNlcHRpb25zLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9leGl0X3dyYXBwZXIoZXhjX3R5cGUsIGV4YywgdGIpOgorICAgICAgICAgICAgY2FsbGJhY2soKmFyZ3MsICoqa3dkcykKKyAgICAgICAgIyBXZSBjaGFuZ2VkIHRoZSBzaWduYXR1cmUsIHNvIHVzaW5nIEB3cmFwcyBpcyBub3QgYXBwcm9wcmlhdGUsIGJ1dAorICAgICAgICAjIHNldHRpbmcgX193cmFwcGVkX18gbWF5IHN0aWxsIGhlbHAgd2l0aCBpbnRyb3NwZWN0aW9uCisgICAgICAgIF9leGl0X3dyYXBwZXIuX193cmFwcGVkX18gPSBjYWxsYmFjaworICAgICAgICBzZWxmLnB1c2goX2V4aXRfd3JhcHBlcikKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrICMgQWxsb3cgdXNlIGFzIGEgZGVjb3JhdG9yCisKKyAgICBkZWYgZW50ZXJfY29udGV4dChzZWxmLCBjbSk6CisgICAgICAgICIiIkVudGVycyB0aGUgc3VwcGxpZWQgY29udGV4dCBtYW5hZ2VyCisKKyAgICAgICAgSWYgc3VjY2Vzc2Z1bCwgYWxzbyBwdXNoZXMgaXRzIF9fZXhpdF9fIG1ldGhvZCBhcyBhIGNhbGxiYWNrIGFuZAorICAgICAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIF9fZW50ZXJfXyBtZXRob2QuCisgICAgICAgICIiIgorICAgICAgICAjIFdlIGxvb2sgdXAgdGhlIHNwZWNpYWwgbWV0aG9kcyBvbiB0aGUgdHlwZSB0byBtYXRjaCB0aGUgd2l0aCBzdGF0ZW1lbnQKKyAgICAgICAgX2NtX3R5cGUgPSB0eXBlKGNtKQorICAgICAgICBfZXhpdCA9IF9jbV90eXBlLl9fZXhpdF9fCisgICAgICAgIHJlc3VsdCA9IF9jbV90eXBlLl9fZW50ZXJfXyhjbSkKKyAgICAgICAgc2VsZi5fcHVzaF9jbV9leGl0KGNtLCBfZXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJJbW1lZGlhdGVseSB1bndpbmQgdGhlIGNvbnRleHQgc3RhY2siIiIKKyAgICAgICAgc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAjIFdlIG1hbmlwdWxhdGUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBzbyBpdCBiZWhhdmVzIGFzIHRob3VnaAorICAgICAgICAjIHdlIHdlcmUgYWN0dWFsbHkgbmVzdGluZyBtdWx0aXBsZSB3aXRoIHN0YXRlbWVudHMKKyAgICAgICAgZnJhbWVfZXhjID0gc3lzLmV4Y19pbmZvKClbMV0KKyAgICAgICAgZGVmIF9maXhfZXhjZXB0aW9uX2NvbnRleHQobmV3X2V4Yywgb2xkX2V4Yyk6CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIGV4Y19jb250ZXh0ID0gbmV3X2V4Yy5fX2NvbnRleHRfXworICAgICAgICAgICAgICAgIGlmIGV4Y19jb250ZXh0IGluIChOb25lLCBmcmFtZV9leGMpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG5ld19leGMgPSBleGNfY29udGV4dAorICAgICAgICAgICAgbmV3X2V4Yy5fX2NvbnRleHRfXyA9IG9sZF9leGMKKworICAgICAgICAjIENhbGxiYWNrcyBhcmUgaW52b2tlZCBpbiBMSUZPIG9yZGVyIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YKKyAgICAgICAgIyBuZXN0ZWQgY29udGV4dCBtYW5hZ2VycworICAgICAgICBzdXBwcmVzc2VkX2V4YyA9IEZhbHNlCisgICAgICAgIHdoaWxlIHNlbGYuX2V4aXRfY2FsbGJhY2tzOgorICAgICAgICAgICAgY2IgPSBzZWxmLl9leGl0X2NhbGxiYWNrcy5wb3AoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGNiKCpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzZWRfZXhjID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBleGNfZGV0YWlscyA9IChOb25lLCBOb25lLCBOb25lKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIG5ld19leGNfZGV0YWlscyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICAgICAgIyBzaW11bGF0ZSB0aGUgc3RhY2sgb2YgZXhjZXB0aW9ucyBieSBzZXR0aW5nIHRoZSBjb250ZXh0CisgICAgICAgICAgICAgICAgX2ZpeF9leGNlcHRpb25fY29udGV4dChuZXdfZXhjX2RldGFpbHNbMV0sIGV4Y19kZXRhaWxzWzFdKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leGl0X2NhbGxiYWNrczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNfZGV0YWlscyA9IG5ld19leGNfZGV0YWlscworICAgICAgICByZXR1cm4gc3VwcHJlc3NlZF9leGMKZGlmZiAtLWdpdCBhL0xpYi9jb3B5LnB5IGIvTGliL2NvcHkucHkKaW5kZXggMDg5ZDEwMS4uZDk2MjAxZSAxMDA2NDQKLS0tIGEvTGliL2NvcHkucHkKKysrIGIvTGliL2NvcHkucHkKQEAgLTE3Myw4ICsxNzMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuKGRlZXApY29weWFibGUgb2JqZWN0IG9mIHR5cGUgJXMiICUgY2xzKQogICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgcnYsIDEsIG1lbW8pCiAKLSAgICBtZW1vW2RdID0geQotICAgIF9rZWVwX2FsaXZlKHgsIG1lbW8pICMgTWFrZSBzdXJlIHggbGl2ZXMgYXQgbGVhc3QgYXMgbG9uZyBhcyBkCisgICAgIyBJZiBpcyBpdHMgb3duIGNvcHksIGRvbid0IG1lbW9pemUuCisgICAgaWYgeSBpcyBub3QgeDoKKyAgICAgICAgbWVtb1tkXSA9IHkKKyAgICAgICAgX2tlZXBfYWxpdmUoeCwgbWVtbykgIyBNYWtlIHN1cmUgeCBsaXZlcyBhdCBsZWFzdCBhcyBsb25nIGFzIGQKICAgICByZXR1cm4geQogCiBfZGVlcGNvcHlfZGlzcGF0Y2ggPSBkID0ge30KQEAgLTIxNCw5ICsyMTYsMTAgQEAKICAgICB5ID0gW10KICAgICBmb3IgYSBpbiB4OgogICAgICAgICB5LmFwcGVuZChkZWVwY29weShhLCBtZW1vKSkKLSAgICBkID0gaWQoeCkKKyAgICAjIFdlJ3JlIG5vdCBnb2luZyB0byBwdXQgdGhlIHR1cGxlIGluIHRoZSBtZW1vLCBidXQgaXQncyBzdGlsbCBpbXBvcnRhbnQgd2UKKyAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBtZW1vW2RdCisgICAgICAgIHJldHVybiBtZW1vW2lkKHgpXQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGZvciBpIGluIHJhbmdlKGxlbih4KSk6CkBAIC0yMjUsNyArMjI4LDYgQEAKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKICAgICAgICAgeSA9IHgKLSAgICBtZW1vW2RdID0geQogICAgIHJldHVybiB5CiBkW3R1cGxlXSA9IF9kZWVwY29weV90dXBsZQogCkBAIC0zMjEsNjggKzMyMywzIEBACiAjIEhlbHBlciBmb3IgaW5zdGFuY2UgY3JlYXRpb24gd2l0aG91dCBjYWxsaW5nIF9faW5pdF9fCiBjbGFzcyBfRW1wdHlDbGFzczoKICAgICBwYXNzCi0KLWRlZiBfdGVzdCgpOgotICAgIGwgPSBbTm9uZSwgMSwgMiwgMy4xNCwgJ3h5enp5JywgKDEsIDIpLCBbMy4xNCwgJ2FiYyddLAotICAgICAgICAgeydhYmMnOiAnQUJDJ30sICgpLCBbXSwge31dCi0gICAgbDEgPSBjb3B5KGwpCi0gICAgcHJpbnQobDE9PWwpCi0gICAgbDEgPSBtYXAoY29weSwgbCkKLSAgICBwcmludChsMT09bCkKLSAgICBsMSA9IGRlZXBjb3B5KGwpCi0gICAgcHJpbnQobDE9PWwpCi0gICAgY2xhc3MgQzoKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZz1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuYSA9IDEKLSAgICAgICAgICAgIHNlbGYuYXJnID0gYXJnCi0gICAgICAgICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgICAgICAgICBmaWxlID0gc3lzLmFyZ3ZbMF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IF9fZmlsZV9fCi0gICAgICAgICAgICBzZWxmLmZwID0gb3BlbihmaWxlKQotICAgICAgICAgICAgc2VsZi5mcC5jbG9zZSgpCi0gICAgICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4geydhJzogc2VsZi5hLCAnYXJnJzogc2VsZi5hcmd9Ci0gICAgICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgotICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc3RhdGUuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgdmFsdWUpCi0gICAgICAgIGRlZiBfX2RlZXBjb3B5X18oc2VsZiwgbWVtbz1Ob25lKToKLSAgICAgICAgICAgIG5ldyA9IHNlbGYuX19jbGFzc19fKGRlZXBjb3B5KHNlbGYuYXJnLCBtZW1vKSkKLSAgICAgICAgICAgIG5ldy5hID0gc2VsZi5hCi0gICAgICAgICAgICByZXR1cm4gbmV3Ci0gICAgYyA9IEMoJ2FyZ3VtZW50IHNrZXRjaCcpCi0gICAgbC5hcHBlbmQoYykKLSAgICBsMiA9IGNvcHkobCkKLSAgICBwcmludChsID09IGwyKQotICAgIHByaW50KGwpCi0gICAgcHJpbnQobDIpCi0gICAgbDIgPSBkZWVwY29weShsKQotICAgIHByaW50KGwgPT0gbDIpCi0gICAgcHJpbnQobCkKLSAgICBwcmludChsMikKLSAgICBsLmFwcGVuZCh7bFsxXTogbCwgJ3h5eic6IGxbMl19KQotICAgIGwzID0gY29weShsKQotICAgIGltcG9ydCByZXBybGliCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbCkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDEpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwyKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMykpCi0gICAgbDMgPSBkZWVwY29weShsKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwxKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMikpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDMpKQotICAgIGNsYXNzIG9kaWN0KGRpY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZCA9IHt9KToKLSAgICAgICAgICAgIHNlbGYuYSA9IDk5Ci0gICAgICAgICAgICBkaWN0Ll9faW5pdF9fKHNlbGYsIGQpCi0gICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrLCBpKToKLSAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18oc2VsZiwgaywgaSkKLSAgICAgICAgICAgIHNlbGYuYQotICAgIG8gPSBvZGljdCh7IkEiIDogIkIifSkKLSAgICB4ID0gZGVlcGNvcHkobykKLSAgICBwcmludChvLCB4KQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF90ZXN0KCkKZGlmZiAtLWdpdCBhL0xpYi9jcnlwdC5weSBiL0xpYi9jcnlwdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTBjODFjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2NyeXB0LnB5CkBAIC0wLDAgKzEsNjIgQEAKKyIiIldyYXBwZXIgdG8gdGhlIFBPU0lYIGNyeXB0IGxpYnJhcnkgY2FsbCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbmFsaXR5LiIiIgorCitpbXBvcnQgX2NyeXB0CitpbXBvcnQgc3RyaW5nIGFzIF9zdHJpbmcKK2Zyb20gcmFuZG9tIGltcG9ydCBTeXN0ZW1SYW5kb20gYXMgX1N5c3RlbVJhbmRvbQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQorCisKK19zYWx0Y2hhcnMgPSBfc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBfc3RyaW5nLmRpZ2l0cyArICcuLycKK19zciA9IF9TeXN0ZW1SYW5kb20oKQorCisKK2NsYXNzIF9NZXRob2QoX25hbWVkdHVwbGUoJ19NZXRob2QnLCAnbmFtZSBpZGVudCBzYWx0X2NoYXJzIHRvdGFsX3NpemUnKSk6CisKKyAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgYSBzYWx0IG1ldGhvZCBwZXIgdGhlIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG9yIHRoZQorICAgIGxlZ2FjeSAyLWNoYXJhY3RlciBjcnlwdCBtZXRob2QuIiIiCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPGNyeXB0Lk1FVEhPRF97fT4nLmZvcm1hdChzZWxmLm5hbWUpCisKKworZGVmIG1rc2FsdChtZXRob2Q9Tm9uZSk6CisgICAgIiIiR2VuZXJhdGUgYSBzYWx0IGZvciB0aGUgc3BlY2lmaWVkIG1ldGhvZC4KKworICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBzdHJvbmdlc3QgYXZhaWxhYmxlIG1ldGhvZCB3aWxsIGJlIHVzZWQuCisKKyAgICAiIiIKKyAgICBpZiBtZXRob2QgaXMgTm9uZToKKyAgICAgICAgbWV0aG9kID0gbWV0aG9kc1swXQorICAgIHMgPSAnJHt9JCcuZm9ybWF0KG1ldGhvZC5pZGVudCkgaWYgbWV0aG9kLmlkZW50IGVsc2UgJycKKyAgICBzICs9ICcnLmpvaW4oX3NyLnNhbXBsZShfc2FsdGNoYXJzLCBtZXRob2Quc2FsdF9jaGFycykpCisgICAgcmV0dXJuIHMKKworCitkZWYgY3J5cHQod29yZCwgc2FsdD1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBvbmUtd2F5IGhhc2ggb2YgYSBwYXNzd29yZCwgd2l0aCBhIHNhbHQKKyAgICBwcmVwZW5kZWQuCisKKyAgICBJZiBgYHNhbHRgYCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCB0aGUgc3Ryb25nZXN0CisgICAgYXZhaWxhYmxlIG1ldGhvZCB3aWxsIGJlIHNlbGVjdGVkIGFuZCBhIHNhbHQgZ2VuZXJhdGVkLiAgT3RoZXJ3aXNlLAorICAgIGBgc2FsdGBgIG1heSBiZSBvbmUgb2YgdGhlIGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMsIG9yIGEgc3RyaW5nIGFzCisgICAgcmV0dXJuZWQgYnkgYGBjcnlwdC5ta3NhbHQoKWBgLgorCisgICAgIiIiCisgICAgaWYgc2FsdCBpcyBOb25lIG9yIGlzaW5zdGFuY2Uoc2FsdCwgX01ldGhvZCk6CisgICAgICAgIHNhbHQgPSBta3NhbHQoc2FsdCkKKyAgICByZXR1cm4gX2NyeXB0LmNyeXB0KHdvcmQsIHNhbHQpCisKKworIyAgYXZhaWxhYmxlIHNhbHRpbmcvY3J5cHRvIG1ldGhvZHMKK01FVEhPRF9DUllQVCA9IF9NZXRob2QoJ0NSWVBUJywgTm9uZSwgMiwgMTMpCitNRVRIT0RfTUQ1ID0gX01ldGhvZCgnTUQ1JywgJzEnLCA4LCAzNCkKK01FVEhPRF9TSEEyNTYgPSBfTWV0aG9kKCdTSEEyNTYnLCAnNScsIDE2LCA2MykKK01FVEhPRF9TSEE1MTIgPSBfTWV0aG9kKCdTSEE1MTInLCAnNicsIDE2LCAxMDYpCisKK21ldGhvZHMgPSBbXQorZm9yIF9tZXRob2QgaW4gKE1FVEhPRF9TSEE1MTIsIE1FVEhPRF9TSEEyNTYsIE1FVEhPRF9NRDUpOgorICAgIF9yZXN1bHQgPSBjcnlwdCgnJywgX21ldGhvZCkKKyAgICBpZiBfcmVzdWx0IGFuZCBsZW4oX3Jlc3VsdCkgPT0gX21ldGhvZC50b3RhbF9zaXplOgorICAgICAgICBtZXRob2RzLmFwcGVuZChfbWV0aG9kKQorbWV0aG9kcy5hcHBlbmQoTUVUSE9EX0NSWVBUKQorZGVsIF9yZXN1bHQsIF9tZXRob2QKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CmluZGV4IDExMTIwOWEuLmM5MmUxMzAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQpAQCAtMjYsNyArMjYsNyBAQAogICAgICMgbGlicmFyaWVzLiAgT1MgWCAxMC4zIGlzIERhcndpbiA3LCBzbyB3ZSBjaGVjayBmb3IKICAgICAjIHRoYXQuCiAKLSAgICBpZiBpbnQoX29zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkgPCA4OgorICAgIGlmIGludChfb3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pIDwgODoKICAgICAgICAgREVGQVVMVF9NT0RFID0gUlRMRF9HTE9CQUwKIAogZnJvbSBfY3R5cGVzIGltcG9ydCBGVU5DRkxBR19DREVDTCBhcyBfRlVOQ0ZMQUdfQ0RFQ0wsIFwKQEAgLTQ1Niw3ICs0NTYsNyBAQAogICAgICAgICAgICAgY29kZSA9IEdldExhc3RFcnJvcigpCiAgICAgICAgIGlmIGRlc2NyIGlzIE5vbmU6CiAgICAgICAgICAgICBkZXNjciA9IEZvcm1hdEVycm9yKGNvZGUpLnN0cmlwKCkKLSAgICAgICAgcmV0dXJuIFdpbmRvd3NFcnJvcihjb2RlLCBkZXNjcikKKyAgICAgICAgcmV0dXJuIFdpbmRvd3NFcnJvcihOb25lLCBkZXNjciwgTm9uZSwgY29kZSkKIAogaWYgc2l6ZW9mKGNfdWludCkgPT0gc2l6ZW9mKGNfdm9pZF9wKToKICAgICBjX3NpemVfdCA9IGNfdWludApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CmluZGV4IGM3MjA3ZWEuLjU2MDBiNDMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKQEAgLTE0MCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIENGVU5DVFlQRShOb25lKShsYW1iZGEgeD1OYXN0eSgpOiBOb25lKQotICAgICAgICAKKwogCiB0cnk6CiAgICAgV0lORlVOQ1RZUEUKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weQppbmRleCBhYTIxMTNiLi5hZWM0YWFhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKQEAgLTQ5LDYgKzUwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXN0KGEsIFBPSU5URVIoY19ieXRlKSlbOjc6N10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs5N10pCiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3Rfc3RyaW5nX2F0KHNlbGYpOgogICAgICAgICBzID0gc3RyaW5nX2F0KGIiZm9vIGJhciIpCiAgICAgICAgICMgWFhYIFRoZSBmb2xsb3dpbmcgbWF5IGJlIHdyb25nLCBkZXBlbmRpbmcgb24gaG93IFB5dGhvbgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKaW5kZXggZTgzZmQ5YS4uOTc2MmZiOSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CkBAIC03MywxMyArNzMsMTAgQEAKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogIyMgICAgICAgICAgICBwcmludCAiKE5vIGNfd2NoYXJfcCkiCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcyA9ICIxMjMiCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNfd2NoYXJfcC5mcm9tX3BhcmFtKHMpLl9vYmogaXMgcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY193Y2hhcl9wLmZyb21fcGFyYW0sIDQyKQogCi0gICAgICAgICAgICAjIG5ldyBpbiAwLjkuMTogY29udmVydCAoZGVjb2RlKSBhc2NpaSB0byB1bmljb2RlCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfd2NoYXJfcC5mcm9tX3BhcmFtKCIxMjMiKS5fb2JqLCAiMTIzIikKKyAgICAgICAgY193Y2hhcl9wLmZyb21fcGFyYW0oIjEyMyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY193Y2hhcl9wLmZyb21fcGFyYW0sIGIiMTIzXDM3NyIpCiAKICAgICAgICAgcGEgPSBjX3djaGFyX3AuZnJvbV9wYXJhbShjX3djaGFyX3AoIjEyMyIpKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKaW5kZXggZmE2NDYxZi4uYWQxM2IwMSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CkBAIC0yNSwxNCArMjUsMTcgQEAKICAgICAgICAgICAgIHYgPSBtZW1vcnl2aWV3KG9iKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplKHYuZm9ybWF0KSwgbm9ybWFsaXplKGZtdCkpCi0gICAgICAgICAgICAgICAgaWYgc2hhcGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgc2hhcGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpLCBzaGFwZVswXSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSAqIHNpemVvZihpdGVtdHApLCBzaXplb2Yob2IpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5pdGVtc2l6ZSwgc2l6ZW9mKGl0ZW10cCkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnNoYXBlLCBzaGFwZSkKLSAgICAgICAgICAgICAgICAjIGN0eXBlcyBvYmplY3QgYWx3YXlzIGhhdmUgYSBub24tc3RyaWRlZCBtZW1vcnkgYmxvY2sKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgTm9uZSkKKyAgICAgICAgICAgICAgICAjIFhYWCBJc3N1ZSAjMTI4NTE6IFB5Q0RhdGFfTmV3R2V0QnVmZmVyKCkgbXVzdCBwcm92aWRlIHN0cmlkZXMKKyAgICAgICAgICAgICAgICAjICAgICBpZiByZXF1ZXN0ZWQuIG1lbW9yeXZpZXcgY3VycmVudGx5IHJlY29uc3RydWN0cyBtaXNzaW5nCisgICAgICAgICAgICAgICAgIyAgICAgc3RyaWRlIGluZm9ybWF0aW9uLCBzbyB0aGlzIGFzc2VydCB3aWxsIGZhaWwuCisgICAgICAgICAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgKCkpCisKICAgICAgICAgICAgICAgICAjIHRoZXkgYXJlIGFsd2F5cyByZWFkL3dyaXRlCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2LnJlYWRvbmx5KQogCkBAIC01MiwxNCArNTUsMTUgQEAKICAgICAgICAgICAgIHYgPSBtZW1vcnl2aWV3KG9iKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5mb3JtYXQsIGZtdCkKLSAgICAgICAgICAgICAgICBpZiBzaGFwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIHNoYXBlWzBdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpICogc2l6ZW9mKGl0ZW10cCksIHNpemVvZihvYikpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lml0ZW1zaXplLCBzaXplb2YoaXRlbXRwKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc2hhcGUsIHNoYXBlKQotICAgICAgICAgICAgICAgICMgY3R5cGVzIG9iamVjdCBhbHdheXMgaGF2ZSBhIG5vbi1zdHJpZGVkIG1lbW9yeSBibG9jawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCBOb25lKQorICAgICAgICAgICAgICAgICMgWFhYIElzc3VlICMxMjg1MQorICAgICAgICAgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsICgpKQorCiAgICAgICAgICAgICAgICAgIyB0aGV5IGFyZSBhbHdheXMgcmVhZC93cml0ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5yZWFkb25seSkKIApAQCAtMTEwLDM0ICsxMTQsMzQgQEAKIAogICAgICMjIHNpbXBsZSB0eXBlcwogCi0gICAgKGNfY2hhciwgICAgICAgICAgICAgICAgICAgICI8YyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2NoYXIpLAotICAgIChjX2J5dGUsICAgICAgICAgICAgICAgICAgICAiPGIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19ieXRlKSwKLSAgICAoY191Ynl0ZSwgICAgICAgICAgICAgICAgICAgIjxCIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdWJ5dGUpLAotICAgIChjX3Nob3J0LCAgICAgICAgICAgICAgICAgICAiPGgiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19zaG9ydCksCi0gICAgKGNfdXNob3J0LCAgICAgICAgICAgICAgICAgICI8SCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VzaG9ydCksCisgICAgKGNfY2hhciwgICAgICAgICAgICAgICAgICAgICI8YyIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19jaGFyKSwKKyAgICAoY19ieXRlLCAgICAgICAgICAgICAgICAgICAgIjxiIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2J5dGUpLAorICAgIChjX3VieXRlLCAgICAgICAgICAgICAgICAgICAiPEIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWJ5dGUpLAorICAgIChjX3Nob3J0LCAgICAgICAgICAgICAgICAgICAiPGgiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfc2hvcnQpLAorICAgIChjX3VzaG9ydCwgICAgICAgICAgICAgICAgICAiPEgiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdXNob3J0KSwKIAogICAgICMgY19pbnQgYW5kIGNfdWludCBtYXkgYmUgYWxpYXNlcyB0byBjX2xvbmcKLSAgICAjKGNfaW50LCAgICAgICAgICAgICAgICAgICAgICI8aSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2ludCksCi0gICAgIyhjX3VpbnQsICAgICAgICAgICAgICAgICAgICAiPEkiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191aW50KSwKKyAgICAjKGNfaW50LCAgICAgICAgICAgICAgICAgICAgICI8aSIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19pbnQpLAorICAgICMoY191aW50LCAgICAgICAgICAgICAgICAgICAgIjxJIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX3VpbnQpLAogCi0gICAgKGNfbG9uZywgICAgICAgICAgICAgICAgICAgICI8bCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2xvbmcpLAotICAgIChjX3Vsb25nLCAgICAgICAgICAgICAgICAgICAiPEwiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191bG9uZyksCisgICAgKGNfbG9uZywgICAgICAgICAgICAgICAgICAgICI8bCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19sb25nKSwKKyAgICAoY191bG9uZywgICAgICAgICAgICAgICAgICAgIjxMIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX3Vsb25nKSwKIAogICAgICMgY19sb25nbG9uZyBhbmQgY191bG9uZ2xvbmcgYXJlIGFsaWFzZXMgb24gNjQtYml0IHBsYXRmb3JtcwogICAgICMoY19sb25nbG9uZywgICAgICAgICAgICAgICAgIjxxIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfbG9uZ2xvbmcpLAogICAgICMoY191bG9uZ2xvbmcsICAgICAgICAgICAgICAgIjxRIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdWxvbmdsb25nKSwKIAotICAgIChjX2Zsb2F0LCAgICAgICAgICAgICAgICAgICAiPGYiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19mbG9hdCksCi0gICAgKGNfZG91YmxlLCAgICAgICAgICAgICAgICAgICI8ZCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2RvdWJsZSksCisgICAgKGNfZmxvYXQsICAgICAgICAgICAgICAgICAgICI8ZiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19mbG9hdCksCisgICAgKGNfZG91YmxlLCAgICAgICAgICAgICAgICAgICI8ZCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19kb3VibGUpLAogICAgICMgY19sb25nZG91YmxlIG1heSBiZSBhbiBhbGlhcyB0byBjX2RvdWJsZQogCi0gICAgKGNfYm9vbCwgICAgICAgICAgICAgICAgICAgICI8PyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2Jvb2wpLAotICAgIChweV9vYmplY3QsICAgICAgICAgICAgICAgICAiPE8iLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgcHlfb2JqZWN0KSwKKyAgICAoY19ib29sLCAgICAgICAgICAgICAgICAgICAgIjw/IiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2Jvb2wpLAorICAgIChweV9vYmplY3QsICAgICAgICAgICAgICAgICAiPE8iLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIHB5X29iamVjdCksCiAKICAgICAjIyBwb2ludGVycwogCi0gICAgKFBPSU5URVIoY19ieXRlKSwgICAgICAgICAgICImPGIiLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKGNfYnl0ZSkpLAotICAgIChQT0lOVEVSKFBPSU5URVIoY19sb25nKSksICAiJiY8bCIsICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpKSwKKyAgICAoUE9JTlRFUihjX2J5dGUpLCAgICAgICAgICAgIiY8YiIsICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKGNfYnl0ZSkpLAorICAgIChQT0lOVEVSKFBPSU5URVIoY19sb25nKSksICAiJiY8bCIsICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSksCiAKICAgICAjIyBhcnJheXMgYW5kIHBvaW50ZXJzCiAKQEAgLTE0NSwzMiArMTQ5LDMyIEBACiAgICAgKGNfZmxvYXQgKiA0ICogMyAqIDIsICAgICAgICIoMiwzLDQpPGYiLCAgICAgICAgICAgICgyLDMsNCksICAgICAgICBjX2Zsb2F0KSwKICAgICAoUE9JTlRFUihjX3Nob3J0KSAqIDIsICAgICAgIigyKSY8aCIsICAgICAgICAgICAgICAgKDIsKSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAogICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiAqIDMsICAiKDMsMikmPGgiLCAgICAgICAgICAgICAoMywyLCksICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCi0gICAgKFBPSU5URVIoY19zaG9ydCAqIDIpLCAgICAgICImKDIpPGgiLCAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKKyAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8aCIsICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKIAogICAgICMjIHN0cnVjdHVyZXMgYW5kIHVuaW9ucwogCi0gICAgKFBvaW50LCAgICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBQb2ludCksCisgICAgKFBvaW50LCAgICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgICgpLCAgICAgICAgICAgUG9pbnQpLAogICAgICMgcGFja2VkIHN0cnVjdHVyZXMgZG8gbm90IGltcGxlbWVudCB0aGUgcGVwCi0gICAgKFBhY2tlZFBvaW50LCAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQYWNrZWRQb2ludCksCi0gICAgKFBvaW50MiwgICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBQb2ludDIpLAotICAgIChFbXB0eVN0cnVjdCwgICAgICAgICAgICAgICAiVHt9IiwgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgRW1wdHlTdHJ1Y3QpLAorICAgIChQYWNrZWRQb2ludCwgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBhY2tlZFBvaW50KSwKKyAgICAoUG9pbnQyLCAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBQb2ludDIpLAorICAgIChFbXB0eVN0cnVjdCwgICAgICAgICAgICAgICAiVHt9IiwgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIEVtcHR5U3RydWN0KSwKICAgICAjIHRoZSBwZXAgZG9lcyd0IHN1cHBvcnQgdW5pb25zCi0gICAgKGFVbmlvbiwgICAgICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBhVW5pb24pLAorICAgIChhVW5pb24sICAgICAgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGFVbmlvbiksCiAKICAgICAjIyBwb2ludGVyIHRvIGluY29tcGxldGUgc3RydWN0dXJlCi0gICAgKEluY29tcGxldGUsICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBJbmNvbXBsZXRlKSwKLSAgICAoUE9JTlRFUihJbmNvbXBsZXRlKSwgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoSW5jb21wbGV0ZSkpLAorICAgIChJbmNvbXBsZXRlLCAgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIEluY29tcGxldGUpLAorICAgIChQT0lOVEVSKEluY29tcGxldGUpLCAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoSW5jb21wbGV0ZSkpLAogCiAgICAgIyAnQ29tcGxldGUnIGlzIGEgc3RydWN0dXJlIHRoYXQgc3RhcnRzIGluY29tcGxldGUsIGJ1dCBpcyBjb21wbGV0ZWQgYWZ0ZXIgdGhlCiAgICAgIyBwb2ludGVyIHR5cGUgdG8gaXQgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICAoQ29tcGxldGUsICAgICAgICAgICAgICAgICAgIlR7PGw6YTp9IiwgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIENvbXBsZXRlKSwKKyAgICAoQ29tcGxldGUsICAgICAgICAgICAgICAgICAgIlR7PGw6YTp9IiwgICAgICAgICAgICAgKCksICAgICAgICAgICBDb21wbGV0ZSksCiAgICAgIyBVbmZvcnR1bmF0ZWx5IHRoZSBwb2ludGVyIGZvcm1hdCBzdHJpbmcgaXMgbm90IGZpeGVkLi4uCi0gICAgKFBPSU5URVIoQ29tcGxldGUpLCAgICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKENvbXBsZXRlKSksCisgICAgKFBPSU5URVIoQ29tcGxldGUpLCAgICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihDb21wbGV0ZSkpLAogCiAgICAgIyMgb3RoZXIKIAogICAgICMgZnVuY3Rpb24gc2lnbmF0dXJlcyBhcmUgbm90IGltcGxlbWVudGVkCi0gICAgKENGVU5DVFlQRShOb25lKSwgICAgICAgICAgICJYe30iLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBDRlVOQ1RZUEUoTm9uZSkpLAorICAgIChDRlVOQ1RZUEUoTm9uZSksICAgICAgICAgICAiWHt9IiwgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIENGVU5DVFlQRShOb25lKSksCiAKICAgICBdCiAKQEAgLTE4NiwxMCArMTkwLDEwIEBACiAjIGFuZCBsaXR0bGUgZW5kaWFuIG1hY2hpbmVzLgogIwogZW5kaWFuX3R5cGVzID0gWwotICAgIChCRVBvaW50LCAgICAgICAgICAgICAgICAgICAiVHs+bDp4Oj5sOnk6fSIsICAgICAgICBOb25lLCAgICAgICAgICAgQkVQb2ludCksCi0gICAgKExFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBMRVBvaW50KSwKLSAgICAoUE9JTlRFUihCRVBvaW50KSwgICAgICAgICAgIiZUez5sOng6Pmw6eTp9IiwgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoQkVQb2ludCkpLAotICAgIChQT0lOVEVSKExFUG9pbnQpLCAgICAgICAgICAiJlR7PGw6eDo8bDp5On0iLCAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihMRVBvaW50KSksCisgICAgKEJFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUez5sOng6Pmw6eTp9IiwgICAgICAgICgpLCAgICAgICAgICAgQkVQb2ludCksCisgICAgKExFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgICgpLCAgICAgICAgICAgTEVQb2ludCksCisgICAgKFBPSU5URVIoQkVQb2ludCksICAgICAgICAgICImVHs+bDp4Oj5sOnk6fSIsICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihCRVBvaW50KSksCisgICAgKFBPSU5URVIoTEVQb2ludCksICAgICAgICAgICImVHs8bDp4OjxsOnk6fSIsICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihMRVBvaW50KSksCiAgICAgXQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkKaW5kZXggMWY0YzYwMy4uOWRlMzk4MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIGltcG9ydCB1bml0dGVzdCwgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY3R5cGVzLnRlc3QgaW1wb3J0IGlzX3Jlc291cmNlX2VuYWJsZWQKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjUsNiArMjYsNyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShiImFiY2RlZmdoaSIsIDMpLCBiImFiYyIpCiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfUHlTdHJpbmdfRnJvbVN0cmluZyhzZWxmKToKICAgICAgICAgcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbVN0cmluZy5yZXN0eXBlID0gcHlfb2JqZWN0CiAgICAgICAgIHB5dGhvbmFwaS5QeUJ5dGVzX0Zyb21TdHJpbmcuYXJndHlwZXMgPSAoY19jaGFyX3AsKQpAQCAtNTYsNiArNTgsNyBAQAogICAgICAgICAgICAgZGVsIHJlcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncmMoNDIpLCByZWY0MikKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9QeU9ial9Gcm9tUHRyKHNlbGYpOgogICAgICAgICBzID0gImFiYyBkZWYgZ2hpIGprbCIKICAgICAgICAgcmVmID0gZ3JjKHMpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkKaW5kZXggMzVhODFhYS4uNTYxM2U3YSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgY3R5cGVzCiBpbXBvcnQgZ2MKIApAQCAtMTAsNiArMTEsNyBAQAogCiBjbGFzcyBSZWZjb3VudFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF8xKHNlbGYpOgogICAgICAgICBmcm9tIHN5cyBpbXBvcnQgZ2V0cmVmY291bnQgYXMgZ3JjCiAKQEAgLTM0LDYgKzM2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncmMoY2FsbGJhY2spLCAyKQogCiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfcmVmY291bnQoc2VsZik6CiAgICAgICAgIGZyb20gc3lzIGltcG9ydCBnZXRyZWZjb3VudCBhcyBncmMKICAgICAgICAgZGVmIGZ1bmMoKmFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5CmluZGV4IDNkMjVmYTUuLjk1Y2QxNjEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIAogaW1wb3J0IF9jdHlwZXNfdGVzdApAQCAtNyw2ICs4LDcgQEAKIAogY2xhc3MgU3RyaW5nUHRyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X19QT0lOVEVSX2NfY2hhcihzZWxmKToKICAgICAgICAgY2xhc3MgWChTdHJ1Y3R1cmUpOgogICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJzdHIiLCBQT0lOVEVSKGNfY2hhcikpXQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF93aW4zMi5weQppbmRleCAyNTM0YTc0Li4xMjg5MTRlIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF93aW4zMi5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF93aW4zMi5weQpAQCAtNjcsNiArNjcsMjggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXgudGV4dCwgInRleHQiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5kZXRhaWxzLCAoImRldGFpbHMiLCkpCiAKKyAgICBjbGFzcyBUZXN0V2luRXJyb3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBkZWYgdGVzdF93aW5lcnJvcihzZWxmKToKKyAgICAgICAgICAgICMgc2VlIElzc3VlIDE2MTY5CisgICAgICAgICAgICBpbXBvcnQgZXJybm8KKyAgICAgICAgICAgIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSID0gODcKKyAgICAgICAgICAgIG1zZyA9IEZvcm1hdEVycm9yKEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKS5zdHJpcCgpCisgICAgICAgICAgICBhcmdzID0gKGVycm5vLkVJTlZBTCwgbXNnLCBOb25lLCBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKworICAgICAgICAgICAgZSA9IFdpbkVycm9yKEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsIGFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIGVycm5vLkVJTlZBTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisKKyAgICAgICAgICAgIHdpbmRsbC5rZXJuZWwzMi5TZXRMYXN0RXJyb3IoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFpc2UgV2luRXJyb3IoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIGUgPSBleGMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCBhcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBlcnJuby5FSU5WQUwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUud2luZXJyb3IsIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKQorCiBjbGFzcyBTdHJ1Y3R1cmVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3N0cnVjdF9ieV92YWx1ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCAxYmI3ZDFkLi41NTU1YjJlIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHN5cywgb3MKIGltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgc3VicHJvY2VzcwogCiAjIGZpbmRfbGlicmFyeShuYW1lKSByZXR1cm5zIHRoZSBwYXRobmFtZSBvZiBhIGxpYnJhcnksIG9yIE5vbmUuCiBpZiBvcy5uYW1lID09ICJudCI6CkBAIC0zOSw4ICs0MCw4IEBACiAgICAgICAgICAgICBjbGlibmFtZSA9ICdtc3ZjciVkJyAlICh2ZXJzaW9uICogMTApCiAKICAgICAgICAgIyBJZiBweXRob24gd2FzIGJ1aWx0IHdpdGggaW4gZGVidWcgbW9kZQotICAgICAgICBpbXBvcnQgaW1wCi0gICAgICAgIGlmIGltcC5nZXRfc3VmZml4ZXMoKVswXVswXSA9PSAnX2QucHlkJzoKKyAgICAgICAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKKyAgICAgICAgaWYgJ19kLnB5ZCcgaW4gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVM6CiAgICAgICAgICAgICBjbGlibmFtZSArPSAnZCcKICAgICAgICAgcmV0dXJuIGNsaWJuYW1lKycuZGxsJwogCkBAIC0xMzYsMTYgKzEzNywxMiBAQAogICAgICAgICAgICAgcnYgPSBmLmNsb3NlKCkKICAgICAgICAgICAgIGlmIHJ2ID09IDEwOgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ29iamR1bXAgY29tbWFuZCBub3QgZm91bmQnKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLmNsb3Npbmcob3MucG9wZW4oY21kKSkgYXMgZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChyJ1xzU09OQU1FXHMrKFteXHNdKyknLCBkYXRhKQorICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKHInXHNTT05BTUVccysoW15cc10rKScsIGR1bXApCiAgICAgICAgICAgICBpZiBub3QgcmVzOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICByZXR1cm4gcmVzLmdyb3VwKDEpCiAKLSAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImZyZWVic2QiKQotICAgICAgICBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgib3BlbmJzZCIpCi0gICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJkcmFnb25mbHkiKSk6CisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCJmcmVlYnNkIiwgIm9wZW5ic2QiLCAiZHJhZ29uZmx5IikpOgogCiAgICAgICAgIGRlZiBfbnVtX3ZlcnNpb24obGlibmFtZSk6CiAgICAgICAgICAgICAjICJsaWJ4eXouc28uTUFKT1IuTUlOT1IiID0+IFsgTUFKT1IsIE1JTk9SIF0KQEAgLTE3NCw5ICsxNzEsOSBAQAogICAgICAgICBkZWYgX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSk6CiAgICAgICAgICAgICBpbXBvcnQgc3RydWN0CiAgICAgICAgICAgICBpZiBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSA9PSA0OgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdICsgJy0zMicKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKS5tYWNoaW5lICsgJy0zMicKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKClbNF0gKyAnLTY0JworICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUgKyAnLTY0JwogICAgICAgICAgICAgbWFjaF9tYXAgPSB7CiAgICAgICAgICAgICAgICAgJ3g4Nl82NC02NCc6ICdsaWJjNix4ODYtNjQnLAogICAgICAgICAgICAgICAgICdwcGM2NC02NCc6ICdsaWJjNiw2NGJpdCcsCkBAIC0xODcsMTMgKzE4NCwxOSBAQAogICAgICAgICAgICAgYWJpX3R5cGUgPSBtYWNoX21hcC5nZXQobWFjaGluZSwgJ2xpYmM2JykKIAogICAgICAgICAgICAgIyBYWFggYXNzdW1pbmcgR0xJQkMncyBsZGNvbmZpZyAod2l0aCBvcHRpb24gLXApCi0gICAgICAgICAgICBleHByID0gcidccysobGliJXNcLlteXHNdKylccytcKCVzJyAlIChyZS5lc2NhcGUobmFtZSksIGFiaV90eXBlKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLmNsb3Npbmcob3MucG9wZW4oJ0xDX0FMTD1DIExBTkc9QyAvc2Jpbi9sZGNvbmZpZyAtcCAyPi9kZXYvbnVsbCcpKSBhcyBmOgotICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKGV4cHIsIGRhdGEpCi0gICAgICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICByZXR1cm4gcmVzLmdyb3VwKDEpCisgICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKAorICAgICAgICAgICAgICAgICdccysobGliJXNcLlteXHNdKylccytcKCVzJyAlIChyZS5lc2NhcGUobmFtZSksIGFiaV90eXBlKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oWycvc2Jpbi9sZGNvbmZpZycsICctcCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj17J0xDX0FMTCc6ICdDJywgJ0xBTkcnOiAnQyd9KSBhcyBwOgorICAgICAgICAgICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocmVnZXgsIHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmZzZGVjb2RlKHJlcy5ncm91cCgxKSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSkKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvX19pbml0X18ucHkgYi9MaWIvY3Vyc2VzL19faW5pdF9fLnB5CmluZGV4IDhmMDliMjQuLjQ3Mzc4NzQgMTAwNjQ0Ci0tLSBhL0xpYi9jdXJzZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N1cnNlcy9fX2luaXRfXy5weQpAQCAtMTEsNyArMTEsNiBAQAogIiIiCiAKIGZyb20gX2N1cnNlcyBpbXBvcnQgKgotZnJvbSBjdXJzZXMud3JhcHBlciBpbXBvcnQgd3JhcHBlcgogaW1wb3J0IG9zIGFzIF9vcwogaW1wb3J0IHN5cyBhcyBfc3lzCiAKQEAgLTU1LDMgKzU0LDQ4IEBACiAgICAgaGFzX2tleQogZXhjZXB0IE5hbWVFcnJvcjoKICAgICBmcm9tIC5oYXNfa2V5IGltcG9ydCBoYXNfa2V5CisKKyMgV3JhcHBlciBmb3IgdGhlIGVudGlyZSBjdXJzZXMtYmFzZWQgYXBwbGljYXRpb24uICBSdW5zIGEgZnVuY3Rpb24gd2hpY2gKKyMgc2hvdWxkIGJlIHRoZSByZXN0IG9mIHlvdXIgY3Vyc2VzLWJhc2VkIGFwcGxpY2F0aW9uLiAgSWYgdGhlIGFwcGxpY2F0aW9uCisjIHJhaXNlcyBhbiBleGNlcHRpb24sIHdyYXBwZXIoKSB3aWxsIHJlc3RvcmUgdGhlIHRlcm1pbmFsIHRvIGEgc2FuZSBzdGF0ZSBzbworIyB5b3UgY2FuIHJlYWQgdGhlIHJlc3VsdGluZyB0cmFjZWJhY2suCisKK2RlZiB3cmFwcGVyKGZ1bmMsICphcmdzLCAqKmt3ZHMpOgorICAgICIiIldyYXBwZXIgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyBjdXJzZXMgYW5kIGNhbGxzIGFub3RoZXIgZnVuY3Rpb24sCisgICAgcmVzdG9yaW5nIG5vcm1hbCBrZXlib2FyZC9zY3JlZW4gYmVoYXZpb3Igb24gZXJyb3IuCisgICAgVGhlIGNhbGxhYmxlIG9iamVjdCAnZnVuYycgaXMgdGhlbiBwYXNzZWQgdGhlIG1haW4gd2luZG93ICdzdGRzY3InCisgICAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBmb2xsb3dlZCBieSBhbnkgb3RoZXIgYXJndW1lbnRzIHBhc3NlZCB0bworICAgIHdyYXBwZXIoKS4KKyAgICAiIiIKKworICAgIHRyeToKKyAgICAgICAgIyBJbml0aWFsaXplIGN1cnNlcworICAgICAgICBzdGRzY3IgPSBpbml0c2NyKCkKKworICAgICAgICAjIFR1cm4gb2ZmIGVjaG9pbmcgb2Yga2V5cywgYW5kIGVudGVyIGNicmVhayBtb2RlLAorICAgICAgICAjIHdoZXJlIG5vIGJ1ZmZlcmluZyBpcyBwZXJmb3JtZWQgb24ga2V5Ym9hcmQgaW5wdXQKKyAgICAgICAgbm9lY2hvKCkKKyAgICAgICAgY2JyZWFrKCkKKworICAgICAgICAjIEluIGtleXBhZCBtb2RlLCBlc2NhcGUgc2VxdWVuY2VzIGZvciBzcGVjaWFsIGtleXMKKyAgICAgICAgIyAobGlrZSB0aGUgY3Vyc29yIGtleXMpIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYW5kCisgICAgICAgICMgYSBzcGVjaWFsIHZhbHVlIGxpa2UgY3Vyc2VzLktFWV9MRUZUIHdpbGwgYmUgcmV0dXJuZWQKKyAgICAgICAgc3Rkc2NyLmtleXBhZCgxKQorCisgICAgICAgICMgU3RhcnQgY29sb3IsIHRvby4gIEhhcm1sZXNzIGlmIHRoZSB0ZXJtaW5hbCBkb2Vzbid0IGhhdmUKKyAgICAgICAgIyBjb2xvcjsgdXNlciBjYW4gdGVzdCB3aXRoIGhhc19jb2xvcigpIGxhdGVyIG9uLiAgVGhlIHRyeS9jYXRjaAorICAgICAgICAjIHdvcmtzIGFyb3VuZCBhIG1pbm9yIGJpdCBvZiBvdmVyLWNvbnNjaWVudGlvdXNuZXNzIGluIHRoZSBjdXJzZXMKKyAgICAgICAgIyBtb2R1bGUgLS0gdGhlIGVycm9yIHJldHVybiBmcm9tIEMgc3RhcnRfY29sb3IoKSBpcyBpZ25vcmFibGUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0YXJ0X2NvbG9yKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJldHVybiBmdW5jKHN0ZHNjciwgKmFyZ3MsICoqa3dkcykKKyAgICBmaW5hbGx5OgorICAgICAgICAjIFNldCBldmVyeXRoaW5nIGJhY2sgdG8gbm9ybWFsCisgICAgICAgIGlmICdzdGRzY3InIGluIGxvY2FscygpOgorICAgICAgICAgICAgc3Rkc2NyLmtleXBhZCgwKQorICAgICAgICAgICAgZWNobygpCisgICAgICAgICAgICBub2NicmVhaygpCisgICAgICAgICAgICBlbmR3aW4oKQpkaWZmIC0tZ2l0IGEvTGliL2N1cnNlcy93cmFwcGVyLnB5IGIvTGliL2N1cnNlcy93cmFwcGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTgzY2U3Li4wMDAwMDAwCi0tLSBhL0xpYi9jdXJzZXMvd3JhcHBlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLSIiImN1cnNlcy53cmFwcGVyCi0KLUNvbnRhaW5zIG9uZSBmdW5jdGlvbiwgd3JhcHBlcigpLCB3aGljaCBydW5zIGFub3RoZXIgZnVuY3Rpb24gd2hpY2gKLXNob3VsZCBiZSB0aGUgcmVzdCBvZiB5b3VyIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbi4gIElmIHRoZQotYXBwbGljYXRpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiwgd3JhcHBlcigpIHdpbGwgcmVzdG9yZSB0aGUgdGVybWluYWwKLXRvIGEgc2FuZSBzdGF0ZSBzbyB5b3UgY2FuIHJlYWQgdGhlIHJlc3VsdGluZyB0cmFjZWJhY2suCi0KLSIiIgotCi1pbXBvcnQgY3Vyc2VzCi0KLWRlZiB3cmFwcGVyKGZ1bmMsICphcmdzLCAqKmt3ZHMpOgotICAgICIiIldyYXBwZXIgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyBjdXJzZXMgYW5kIGNhbGxzIGFub3RoZXIgZnVuY3Rpb24sCi0gICAgcmVzdG9yaW5nIG5vcm1hbCBrZXlib2FyZC9zY3JlZW4gYmVoYXZpb3Igb24gZXJyb3IuCi0gICAgVGhlIGNhbGxhYmxlIG9iamVjdCAnZnVuYycgaXMgdGhlbiBwYXNzZWQgdGhlIG1haW4gd2luZG93ICdzdGRzY3InCi0gICAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBmb2xsb3dlZCBieSBhbnkgb3RoZXIgYXJndW1lbnRzIHBhc3NlZCB0bwotICAgIHdyYXBwZXIoKS4KLSAgICAiIiIKLQotICAgIHRyeToKLSAgICAgICAgIyBJbml0aWFsaXplIGN1cnNlcwotICAgICAgICBzdGRzY3IgPSBjdXJzZXMuaW5pdHNjcigpCi0KLSAgICAgICAgIyBUdXJuIG9mZiBlY2hvaW5nIG9mIGtleXMsIGFuZCBlbnRlciBjYnJlYWsgbW9kZSwKLSAgICAgICAgIyB3aGVyZSBubyBidWZmZXJpbmcgaXMgcGVyZm9ybWVkIG9uIGtleWJvYXJkIGlucHV0Ci0gICAgICAgIGN1cnNlcy5ub2VjaG8oKQotICAgICAgICBjdXJzZXMuY2JyZWFrKCkKLQotICAgICAgICAjIEluIGtleXBhZCBtb2RlLCBlc2NhcGUgc2VxdWVuY2VzIGZvciBzcGVjaWFsIGtleXMKLSAgICAgICAgIyAobGlrZSB0aGUgY3Vyc29yIGtleXMpIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYW5kCi0gICAgICAgICMgYSBzcGVjaWFsIHZhbHVlIGxpa2UgY3Vyc2VzLktFWV9MRUZUIHdpbGwgYmUgcmV0dXJuZWQKLSAgICAgICAgc3Rkc2NyLmtleXBhZCgxKQotCi0gICAgICAgICMgU3RhcnQgY29sb3IsIHRvby4gIEhhcm1sZXNzIGlmIHRoZSB0ZXJtaW5hbCBkb2Vzbid0IGhhdmUKLSAgICAgICAgIyBjb2xvcjsgdXNlciBjYW4gdGVzdCB3aXRoIGhhc19jb2xvcigpIGxhdGVyIG9uLiAgVGhlIHRyeS9jYXRjaAotICAgICAgICAjIHdvcmtzIGFyb3VuZCBhIG1pbm9yIGJpdCBvZiBvdmVyLWNvbnNjaWVudGlvdXNuZXNzIGluIHRoZSBjdXJzZXMKLSAgICAgICAgIyBtb2R1bGUgLS0gdGhlIGVycm9yIHJldHVybiBmcm9tIEMgc3RhcnRfY29sb3IoKSBpcyBpZ25vcmFibGUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGN1cnNlcy5zdGFydF9jb2xvcigpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByZXR1cm4gZnVuYyhzdGRzY3IsICphcmdzLCAqKmt3ZHMpCi0gICAgZmluYWxseToKLSAgICAgICAgIyBTZXQgZXZlcnl0aGluZyBiYWNrIHRvIG5vcm1hbAotICAgICAgICBpZiAnc3Rkc2NyJyBpbiBsb2NhbHMoKToKLSAgICAgICAgICAgIHN0ZHNjci5rZXlwYWQoMCkKLSAgICAgICAgICAgIGN1cnNlcy5lY2hvKCkKLSAgICAgICAgICAgIGN1cnNlcy5ub2NicmVhaygpCi0gICAgICAgICAgICBjdXJzZXMuZW5kd2luKCkKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCBiZjIzZTUwLi5mNTA2ZTlhIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xNzIsMTAgKzE3Miw2IEBACiAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6Ci0gICAgeWVhciA9IHRpbWV0dXBsZVswXQotICAgIGlmIHllYXIgPCAxMDAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ5ZWFyPSVkIGlzIGJlZm9yZSAxMDAwOyB0aGUgZGF0ZXRpbWUgc3RyZnRpbWUoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgcmVxdWlyZSB5ZWFyID49IDEwMDAiICUgeWVhcikKICAgICAjIERvbid0IGNhbGwgdXRjb2Zmc2V0KCkgb3IgdHpuYW1lKCkgdW5sZXNzIGFjdHVhbGx5IG5lZWRlZC4KICAgICBmcmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJWYKICAgICB6cmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJXoKQEAgLTEwNjksMTMgKzEwNjUsMTMgQEAKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpID09IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIApAQCAtMTEwMyw3ICsxMDk5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF9jbXBlcnJvcihzZWxmLCBvdGhlcikKIAotICAgIGRlZiBfY21wKHNlbGYsIG90aGVyKToKKyAgICBkZWYgX2NtcChzZWxmLCBvdGhlciwgYWxsb3dfbWl4ZWQ9RmFsc2UpOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgdGltZSkKICAgICAgICAgbXl0eiA9IHNlbGYuX3R6aW5mbwogICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwpAQCAtMTEyMiw3ICsxMTE4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCiAgICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIHRpbWVzIikKKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIHRpbWVzIikKICAgICAgICAgbXloaG1tID0gc2VsZi5faG91ciAqIDYwICsgc2VsZi5fbWludXRlIC0gbXlvZmYvL3RpbWVkZWx0YShtaW51dGVzPTEpCiAgICAgICAgIG90aGhtbSA9IG90aGVyLl9ob3VyICogNjAgKyBvdGhlci5fbWludXRlIC0gb3RvZmYvL3RpbWVkZWx0YShtaW51dGVzPTEpCiAgICAgICAgIHJldHVybiBfY21wKChteWhobW0sIHNlbGYuX3NlY29uZCwgc2VsZi5fbWljcm9zZWNvbmQpLApAQCAtMTM2NCw3ICsxMzYzLDcgQEAKICAgICAgICAgY29udmVydGVyID0gX3RpbWUubG9jYWx0aW1lIGlmIHR6IGlzIE5vbmUgZWxzZSBfdGltZS5nbXRpbWUKIAogICAgICAgICB0LCBmcmFjID0gZGl2bW9kKHQsIDEuMCkKLSAgICAgICAgdXMgPSByb3VuZChmcmFjICogMWU2KQorICAgICAgICB1cyA9IGludChmcmFjICogMWU2KQogCiAgICAgICAgICMgSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKICAgICAgICAgIyBmdWxsIHNlY29uZCwgdXMgY2FuIGJlIHJvdW5kZWQgdXAgdG8gMTAwMDAwMC4gIEluIHRoaXMgY2FzZSwKQEAgLTEzODQsNyArMTM4Myw3IEBACiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKICAgICAgICAgIkNvbnN0cnVjdCBhIFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wIChsaWtlIHRpbWUudGltZSgpKS4iCiAgICAgICAgIHQsIGZyYWMgPSBkaXZtb2QodCwgMS4wKQotICAgICAgICB1cyA9IHJvdW5kKGZyYWMgKiAxZTYpCisgICAgICAgIHVzID0gaW50KGZyYWMgKiAxZTYpCiAKICAgICAgICAgIyBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQogICAgICAgICAjIGZ1bGwgc2Vjb25kLCB1cyBjYW4gYmUgcm91bmRlZCB1cCB0byAxMDAwMDAwLiAgSW4gdGhpcyBjYXNlLApAQCAtMTQzOCw2ICsxNDM3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KQogCisgICAgZGVmIHRpbWVzdGFtcChzZWxmKToKKyAgICAgICAgIlJldHVybiBQT1NJWCB0aW1lc3RhbXAgYXMgZmxvYXQiCisgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF90aW1lLm1rdGltZSgoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSkpICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKKwogICAgIGRlZiB1dGN0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gVVRDIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUuZ210aW1lKCkuIgogICAgICAgICBvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpCkBAIC0xNDg1LDggKzE0OTMsMzIgQEAKICAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvKQogCi0gICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHopOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKKyAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKKyAgICAgICAgaWYgdHogaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKKyAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQorICAgICAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKKyAgICAgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZAorICAgICAgICAgICAgICAgICMgYnkgdG1faXNkc3QuICBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZQorICAgICAgICAgICAgICAgICMgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQorICAgICAgICAgICAgICAgIGRzdCA9IF90aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAorICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0oX3RpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSBfdGltZS50aW1lem9uZSkKKyAgICAgICAgICAgICAgICBpZiBkZWx0YSA9PSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgorICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCBfdGltZS50em5hbWVbZHN0XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCisKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHogYXJndW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB0emluZm8iKQogCiAgICAgICAgIG15dHogPSBzZWxmLnR6aW5mbwpAQCAtMTYxMCw3ICsxNjQyLDcgQEAKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSA9PSAwCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIGVsc2U6CkBAIC0xNjE4LDcgKzE2NTAsNyBAQAogCiAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpICE9IDAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgZWxzZToKQEAgLTE2NTYsNyArMTY4OCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCiAKLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIsIGFsbG93X21peGVkPUZhbHNlKToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKQogICAgICAgICBteXR6ID0gc2VsZi5fdHppbmZvCiAgICAgICAgIG90dHogPSBvdGhlci5fdHppbmZvCkBAIC0xNjY1LDEwICsxNjk3LDggQEAKICAgICAgICAgaWYgbXl0eiBpcyBvdHR6OgogICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gVHJ1ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbXl0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBteW9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKLSAgICAgICAgICAgIGlmIG90dHogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQorICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBteW9mZiA9PSBvdG9mZgogCiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKQEAgLTE2NzksNyArMTcwOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSBkYXRldGltZXMiKQorICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgZGF0ZXRpbWVzIikKICAgICAgICAgIyBYWFggV2hhdCBmb2xsb3dzIGNvdWxkIGJlIGRvbmUgbW9yZSBlZmZpY2llbnRseS4uLgogICAgICAgICBkaWZmID0gc2VsZiAtIG90aGVyICAgICAjIHRoaXMgd2lsbCB0YWtlIG9mZnNldHMgaW50byBhY2NvdW50CiAgICAgICAgIGlmIGRpZmYuZGF5cyA8IDA6CkBAIC0xODk1LDcgKzE5MjgsNyBAQAogdGltZXpvbmUudXRjID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lZGVsdGEoMCkpCiB0aW1lem9uZS5taW4gPSB0aW1lem9uZS5fY3JlYXRlKHRpbWV6b25lLl9taW5vZmZzZXQpCiB0aW1lem9uZS5tYXggPSB0aW1lem9uZS5fY3JlYXRlKHRpbWV6b25lLl9tYXhvZmZzZXQpCi0KK19FUE9DSCA9IGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz10aW1lem9uZS51dGMpCiAiIiIKIFNvbWUgdGltZSB6b25lIGFsZ2VicmEuICBGb3IgYSBkYXRldGltZSB4LCBsZXQKICAgICB4Lm4gPSB4IHN0cmlwcGVkIG9mIGl0cyB0aW1lem9uZSAtLSBpdHMgbmFpdmUgdGltZS4KZGlmZiAtLWdpdCBhL0xpYi9kZWNpbWFsLnB5IGIvTGliL2RlY2ltYWwucHkKaW5kZXggNDlkZTUzNS4uNzQ2YjM0YSAxMDA2NDQKLS0tIGEvTGliL2RlY2ltYWwucHkKKysrIGIvTGliL2RlY2ltYWwucHkKQEAgLTQ2LDggKzQ2LDggQEAKIERlY2ltYWwoJy0wLjAxMjMnKQogPj4+IERlY2ltYWwoMTIzNDU2KQogRGVjaW1hbCgnMTIzNDU2JykKLT4+PiBEZWNpbWFsKCcxMjMuNDVlMTIzNDU2Nzg5MDEyMzQ1Njc4OTAnKQotRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY3ODkwMTIzNDU2Nzg5MicpCis+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4JykKK0RlY2ltYWwoJzEuMjM0NUUrMTIzNDU2ODAnKQogPj4+IERlY2ltYWwoJzEuMzMnKSArIERlY2ltYWwoJzEuMjcnKQogRGVjaW1hbCgnMi42MCcpCiA+Pj4gRGVjaW1hbCgnMTIuMzQnKSArIERlY2ltYWwoJzMuODcnKSAtIERlY2ltYWwoJzE4LjQxJykKQEAgLTEyMiwxMyArMTIyLDIwIEBACiAgICAgIyBFeGNlcHRpb25zCiAgICAgJ0RlY2ltYWxFeGNlcHRpb24nLCAnQ2xhbXBlZCcsICdJbnZhbGlkT3BlcmF0aW9uJywgJ0RpdmlzaW9uQnlaZXJvJywKICAgICAnSW5leGFjdCcsICdSb3VuZGVkJywgJ1N1Ym5vcm1hbCcsICdPdmVyZmxvdycsICdVbmRlcmZsb3cnLAorICAgICdGbG9hdE9wZXJhdGlvbicsCiAKICAgICAjIENvbnN0YW50cyBmb3IgdXNlIGluIHNldHRpbmcgdXAgY29udGV4dHMKICAgICAnUk9VTkRfRE9XTicsICdST1VORF9IQUxGX1VQJywgJ1JPVU5EX0hBTEZfRVZFTicsICdST1VORF9DRUlMSU5HJywKICAgICAnUk9VTkRfRkxPT1InLCAnUk9VTkRfVVAnLCAnUk9VTkRfSEFMRl9ET1dOJywgJ1JPVU5EXzA1VVAnLAogCiAgICAgIyBGdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBjb250ZXh0cwotICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JworICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JywKKworICAgICMgTGltaXRzIGZvciB0aGUgQyB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5CisgICAgJ01BWF9QUkVDJywgICdNQVhfRU1BWCcsICdNSU5fRU1JTicsICdNSU5fRVRJTlknLAorCisgICAgIyBDIHZlcnNpb246IGNvbXBpbGUgdGltZSBjaG9pY2UgdGhhdCBlbmFibGVzIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICAgICdIQVZFX1RIUkVBRFMnCiBdCiAKIF9fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aApAQCAtMTM3LDYgKzE0NCw3IEBACiBpbXBvcnQgY29weSBhcyBfY29weQogaW1wb3J0IG1hdGggYXMgX21hdGgKIGltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCitpbXBvcnQgc3lzCiAKIHRyeToKICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCkBAIC0xNTQsNiArMTYyLDE5IEBACiBST1VORF9IQUxGX0RPV04gPSAnUk9VTkRfSEFMRl9ET1dOJwogUk9VTkRfMDVVUCA9ICdST1VORF8wNVVQJwogCisjIENvbXBhdGliaWxpdHkgd2l0aCB0aGUgQyB2ZXJzaW9uCitIQVZFX1RIUkVBRFMgPSBUcnVlCitpZiBzeXMubWF4c2l6ZSA9PSAyKio2My0xOgorICAgIE1BWF9QUkVDID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUFYX0VNQVggPSA5OTk5OTk5OTk5OTk5OTk5OTkKKyAgICBNSU5fRU1JTiA9IC05OTk5OTk5OTk5OTk5OTk5OTkKK2Vsc2U6CisgICAgTUFYX1BSRUMgPSA0MjUwMDAwMDAKKyAgICBNQVhfRU1BWCA9IDQyNTAwMDAwMAorICAgIE1JTl9FTUlOID0gLTQyNTAwMDAwMAorCitNSU5fRVRJTlkgPSBNSU5fRU1JTiAtIChNQVhfUFJFQy0xKQorCiAjIEVycm9ycwogCiBjbGFzcyBEZWNpbWFsRXhjZXB0aW9uKEFyaXRobWV0aWNFcnJvcik6CkBAIC0zNzAsOSArMzkxLDI0IEBACiAgICAgSW4gYWxsIGNhc2VzLCBJbmV4YWN0LCBSb3VuZGVkLCBhbmQgU3Vibm9ybWFsIHdpbGwgYWxzbyBiZSByYWlzZWQuCiAgICAgIiIiCiAKK2NsYXNzIEZsb2F0T3BlcmF0aW9uKERlY2ltYWxFeGNlcHRpb24sIFR5cGVFcnJvcik6CisgICAgIiIiRW5hYmxlIHN0cmljdGVyIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyAgICBJZiB0aGUgc2lnbmFsIGlzIG5vdCB0cmFwcGVkIChkZWZhdWx0KSwgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgaXMKKyAgICBwZXJtaXR0ZWQgaW4gdGhlIERlY2ltYWwoKSBjb25zdHJ1Y3RvciwgY29udGV4dC5jcmVhdGVfZGVjaW1hbCgpIGFuZAorICAgIGFsbCBjb21wYXJpc29uIG9wZXJhdG9ycy4gQm90aCBjb252ZXJzaW9uIGFuZCBjb21wYXJpc29ucyBhcmUgZXhhY3QuCisgICAgQW55IG9jY3VycmVuY2Ugb2YgYSBtaXhlZCBvcGVyYXRpb24gaXMgc2lsZW50bHkgcmVjb3JkZWQgYnkgc2V0dGluZworICAgIEZsb2F0T3BlcmF0aW9uIGluIHRoZSBjb250ZXh0IGZsYWdzLiAgRXhwbGljaXQgY29udmVyc2lvbnMgd2l0aAorICAgIERlY2ltYWwuZnJvbV9mbG9hdCgpIG9yIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgpIGRvIG5vdAorICAgIHNldCB0aGUgZmxhZy4KKworICAgIE90aGVyd2lzZSAodGhlIHNpZ25hbCBpcyB0cmFwcGVkKSwgb25seSBlcXVhbGl0eSBjb21wYXJpc29ucyBhbmQgZXhwbGljaXQKKyAgICBjb252ZXJzaW9ucyBhcmUgc2lsZW50LiBBbGwgb3RoZXIgbWl4ZWQgb3BlcmF0aW9ucyByYWlzZSBGbG9hdE9wZXJhdGlvbi4KKyAgICAiIiIKKwogIyBMaXN0IG9mIHB1YmxpYyB0cmFwcyBhbmQgZmxhZ3MKIF9zaWduYWxzID0gW0NsYW1wZWQsIERpdmlzaW9uQnlaZXJvLCBJbmV4YWN0LCBPdmVyZmxvdywgUm91bmRlZCwKLSAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWxdCisgICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbCwgRmxvYXRPcGVyYXRpb25dCiAKICMgTWFwIGNvbmRpdGlvbnMgKHBlciB0aGUgc3BlYykgdG8gc2lnbmFscwogX2NvbmRpdGlvbl9tYXAgPSB7Q29udmVyc2lvblN5bnRheDpJbnZhbGlkT3BlcmF0aW9uLApAQCAtMzgwLDYgKzQxNiwxMCBAQAogICAgICAgICAgICAgICAgICAgRGl2aXNpb25VbmRlZmluZWQ6SW52YWxpZE9wZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgIEludmFsaWRDb250ZXh0OkludmFsaWRPcGVyYXRpb259CiAKKyMgVmFsaWQgcm91bmRpbmcgbW9kZXMKK19yb3VuZGluZ19tb2RlcyA9IChST1VORF9ET1dOLCBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0VWRU4sIFJPVU5EX0NFSUxJTkcsCisgICAgICAgICAgICAgICAgICAgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EXzA1VVApCisKICMjIyMjIENvbnRleHQgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgVGhlIGdldGNvbnRleHQoKSBhbmQgc2V0Y29udGV4dCgpIGZ1bmN0aW9uIG1hbmFnZSBhY2Nlc3MgdG8gYSB0aHJlYWQtbG9jYWwKQEAgLTM5MiwxMiArNDMyLDExIEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHM7IGNyZWF0ZSBhIG1vY2sgb2JqZWN0IGluc3RlYWQKLSAgICBpbXBvcnQgc3lzCiAgICAgY2xhc3MgTW9ja1RocmVhZGluZyhvYmplY3QpOgogICAgICAgICBkZWYgbG9jYWwoc2VsZiwgc3lzPXN5cyk6CiAgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbX19uYW1lX19dCiAgICAgdGhyZWFkaW5nID0gTW9ja1RocmVhZGluZygpCi0gICAgZGVsIHN5cywgTW9ja1RocmVhZGluZworICAgIGRlbCBNb2NrVGhyZWFkaW5nCiAKIHRyeToKICAgICB0aHJlYWRpbmcubG9jYWwKQEAgLTY1MCw2ICs2ODksMTEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgIgorICAgICAgICAgICAgICAgICJlbmFibGVkIikKICAgICAgICAgICAgIHZhbHVlID0gRGVjaW1hbC5mcm9tX2Zsb2F0KHZhbHVlKQogICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgpAQCAtNjg0LDcgKzcyOCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBpc2luc3RhbmNlKGYsIGludCk6ICAgICAgICAgICAgICAgICMgaGFuZGxlIGludGVnZXIgaW5wdXRzCiAgICAgICAgICAgICByZXR1cm4gY2xzKGYpCi0gICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOiAgIyByYWlzZXMgVHlwZUVycm9yIGlmIG5vdCBhIGZsb2F0CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgbXVzdCBiZSBpbnQgb3IgZmxvYXQuIikKKyAgICAgICAgaWYgX21hdGguaXNpbmYoZikgb3IgX21hdGguaXNuYW4oZik6CiAgICAgICAgICAgICByZXR1cm4gY2xzKHJlcHIoZikpCiAgICAgICAgIGlmIF9tYXRoLmNvcHlzaWduKDEuMCwgZikgPT0gMS4wOgogICAgICAgICAgICAgc2lnbiA9IDAKQEAgLTE4NzcsNiArMTkyMyw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQogCiAgICAgICAgICMgY29tcHV0ZSBwcm9kdWN0OyByYWlzZSBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBvcGVyYW5kIGlzCiAgICAgICAgICMgYSBzaWduYWxpbmcgTmFOIG9yIGlmIHRoZSBwcm9kdWN0IGlzIHplcm8gdGltZXMgaW5maW5pdHkuCkBAIC0xOTA2LDE3ICsxOTUzLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBpbnQob3RoZXIuX2ludCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwICsgb3RoZXIuX2V4cCkKIAotICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCiAgICAgICAgIHJldHVybiBwcm9kdWN0Ll9fYWRkX18odGhpcmQsIGNvbnRleHQpCiAKICAgICBkZWYgX3Bvd2VyX21vZHVsbyhzZWxmLCBvdGhlciwgbW9kdWxvLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJUaHJlZSBhcmd1bWVudCB2ZXJzaW9uIG9mIF9fcG93X18iIiIKIAotICAgICAgICAjIGlmIGNhbid0IGNvbnZlcnQgb3RoZXIgYW5kIG1vZHVsbyB0byBEZWNpbWFsLCByYWlzZQotICAgICAgICAjIFR5cGVFcnJvcjsgdGhlcmUncyBubyBwb2ludCByZXR1cm5pbmcgTm90SW1wbGVtZW50ZWQgKG5vCi0gICAgICAgICMgZXF1aXZhbGVudCBvZiBfX3Jwb3dfXyBmb3IgdGhyZWUgYXJndW1lbnQgcG93KQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0gICAgICAgIG1vZHVsbyA9IF9jb252ZXJ0X290aGVyKG1vZHVsbywgcmFpc2VpdD1UcnVlKQorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBtb2R1bG8gPSBfY29udmVydF9vdGhlcihtb2R1bG8pCisgICAgICAgIGlmIG1vZHVsbyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBtb2R1bG8KIAogICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCkBAIC0yMDA3LDkgKzIwNTQsOSBAQAogICAgICAgICBub256ZXJvLiAgRm9yIGVmZmljaWVuY3ksIG90aGVyLl9leHAgc2hvdWxkIG5vdCBiZSB0b28gbGFyZ2UsCiAgICAgICAgIHNvIHRoYXQgMTAqKmFicyhvdGhlci5fZXhwKSBpcyBhIGZlYXNpYmxlIGNhbGN1bGF0aW9uLiIiIgogCi0gICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQKLSAgICAgICAgIyB5IGZvciB0aGUgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCB5ID0KLSAgICAgICAgIyB5YyoxMCoqeWUuCisgICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQgeSBmb3IgdGhlCisgICAgICAgICMgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCBhYnMoeSkgPSB5YyoxMCoqeWUsIHdpdGggeGMKKyAgICAgICAgIyBhbmQgeWMgcG9zaXRpdmUgaW50ZWdlcnMgbm90IGRpdmlzaWJsZSBieSAxMC4KIAogICAgICAgICAjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gaWRlbnRpZnkgdGhlICpmYWlsdXJlKgogICAgICAgICAjIG9mIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIHdpdGggYXMgbGl0dGxlIGVmZm9ydCBhcwpAQCAtMjAxNywxMyArMjA2NCwxMiBAQAogICAgICAgICAjIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgeCoqeSBiZWluZyBleGFjdC4gIE9ubHkgaWYgYWxsCiAgICAgICAgICMgdGhlc2UgdGVzdHMgYXJlIHBhc3NlZCBkbyB3ZSBnbyBvbiB0byBhY3R1YWxseSBjb21wdXRlIHgqKnkuCiAKLSAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEZpcnN0IG5vcm1hbGl6ZSBib3RoIHggYW5kIHkuICBXZQotICAgICAgICAjIGV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG0vbiwgd2l0aCBtIGFuZCBuIHJlbGF0aXZlbHkgcHJpbWUKLSAgICAgICAgIyBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgKGF0Ci0gICAgICAgICMgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEgcG9zaXRpdmUKLSAgICAgICAgIyBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgbSBpcyBuZWdhdGl2ZQotICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZQotICAgICAgICAjIGEgcG93ZXIgb2YgMioqbiBvciA1KipuLgorICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbnVtYmVyIG0vbiwgd2l0aCBtIGFuZAorICAgICAgICAjIG4gcmVsYXRpdmVseSBwcmltZSBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5CisgICAgICAgICMgcmVwcmVzZW50YWJsZSAoYXQgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEKKyAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgeSBpcyBuZWdhdGl2ZQorICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZSBhIHBvd2VyCisgICAgICAgICMgb2YgMioqbiBvciA1KipuLgogICAgICAgICAjCiAgICAgICAgICMgVGhlcmUncyBhIGxpbWl0IHRvIGhvdyBzbWFsbCB8eXwgY2FuIGJlOiBpZiB5PW0vbiBhcyBhYm92ZQogICAgICAgICAjIHRoZW46CkBAIC0yMDk1LDIxICsyMTQxLDQzIEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgIyBub3cgeGMgaXMgYSBwb3dlciBvZiAyOyBlIGlzIGl0cyBleHBvbmVudAogICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpLTEKLSAgICAgICAgICAgICAgICAjIGZpbmQgZSp5IGFuZCB4ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICBpZiB5ZSA+PSAwOgotICAgICAgICAgICAgICAgICAgICB5X2FzX2ludCA9IHljKjEwKip5ZQotICAgICAgICAgICAgICAgICAgICBlID0gZSp5X2FzX2ludAotICAgICAgICAgICAgICAgICAgICB4ZSA9IHhlKnlfYXNfaW50Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVuX3BvdyA9IDEwKioteWUKLSAgICAgICAgICAgICAgICAgICAgZSwgcmVtYWluZGVyID0gZGl2bW9kKGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgICAgIHhlLCByZW1haW5kZXIgPSBkaXZtb2QoeGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgICAgICAgICBpZiBlKjY1ID49IHAqOTM6ICMgOTMvNjUgPiBsb2coMTApL2xvZyg1KQorICAgICAgICAgICAgICAgICMgV2Ugbm93IGhhdmU6CisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB4ID0gMioqZSAqIDEwKip4ZSwgZSA+IDAsIGFuZCB5IDwgMC4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBUaGUgZXhhY3QgcmVzdWx0IGlzOgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeCoqeSA9IDUqKigtZSp5KSAqIDEwKiooZSp5ICsgeGUqeSkKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBwcm92aWRlZCB0aGF0IGJvdGggZSp5IGFuZCB4ZSp5IGFyZSBpbnRlZ2Vycy4gIE5vdGUgdGhhdCBpZgorICAgICAgICAgICAgICAgICMgNSoqKC1lKnkpID49IDEwKipwLCB0aGVuIHRoZSByZXN1bHQgY2FuJ3QgYmUgZXhwcmVzc2VkCisgICAgICAgICAgICAgICAgIyBleGFjdGx5IHdpdGggcCBkaWdpdHMgb2YgcHJlY2lzaW9uLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFVzaW5nIHRoZSBhYm92ZSwgd2UgY2FuIGd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLgorICAgICAgICAgICAgICAgICMgOTMvNjUgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZygxMCkvbG9nKDUpLCBzbyBpZgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeWUgPj0gbGVuKHN0cig5MypwLy82NSkpCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgdGhlbgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgLWUqeSA+PSAteSA+PSAxMCoqeWUgPiA5MypwLzY1ID4gcCpsb2coMTApL2xvZyg1KSwKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBzbyA1KiooLWUqeSkgPj0gMTAqKnAsIGFuZCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgICMgY2FuJ3QgYmUgZXhwcmVzc2VkIGluIHAgZGlnaXRzLgorCisgICAgICAgICAgICAgICAgIyBlbWF4ID49IGxhcmdlc3QgZSBzdWNoIHRoYXQgNSoqZSA8IDEwKipwLgorICAgICAgICAgICAgICAgIGVtYXggPSBwKjkzLy82NQorICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgIyBGaW5kIC1lKnkgYW5kIC14ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKKyAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICB4YyA9IDUqKmUKIApAQCAtMjEyMywxOSArMjE5MSwyMCBAQAogICAgICAgICAgICAgICAgIHdoaWxlIHhjICUgNSA9PSAwOgogICAgICAgICAgICAgICAgICAgICB4YyAvLz0gNQogICAgICAgICAgICAgICAgICAgICBlIC09IDEKLSAgICAgICAgICAgICAgICBpZiB5ZSA+PSAwOgotICAgICAgICAgICAgICAgICAgICB5X2FzX2ludGVnZXIgPSB5YyoxMCoqeWUKLSAgICAgICAgICAgICAgICAgICAgZSA9IGUqeV9hc19pbnRlZ2VyCi0gICAgICAgICAgICAgICAgICAgIHhlID0geGUqeV9hc19pbnRlZ2VyCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVuX3BvdyA9IDEwKioteWUKLSAgICAgICAgICAgICAgICAgICAgZSwgcmVtYWluZGVyID0gZGl2bW9kKGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgICAgIHhlLCByZW1haW5kZXIgPSBkaXZtb2QoeGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgaWYgZSozID49IHAqMTA6ICMgMTAvMyA+IGxvZygxMCkvbG9nKDIpCisKKyAgICAgICAgICAgICAgICAjIEd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBpbgorICAgICAgICAgICAgICAgICMgdGhlICd4YyBpcyBhIHBvd2VyIG9mIDInIGJyYW5jaC4gIDEwLzMgaXMgYW4gdXBwZXIgYm91bmQgZm9yCisgICAgICAgICAgICAgICAgIyBsb2coMTApL2xvZygyKS4KKyAgICAgICAgICAgICAgICBlbWF4ID0gcCoxMC8vMworICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQorICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgeGMgPSAyKiplCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjUyNyw3ICsyNTk2LDcgQEAKICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKICAgICAgICAgcmV0dXJuIGFucwogCi0gICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlcik6CisgICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGUgc2FtZSBleHBvbmVudDsgb3RoZXJ3aXNlCiAgICAgICAgIHJldHVybiBGYWxzZS4KIApAQCAtMjg0NSw3ICsyOTE0LDcgQEAKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAwCiAKLSAgICBkZWYgY2Fub25pY2FsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgZGVmIGNhbm9uaWNhbChzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KIAogICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQpAQCAtMjg2NSw3ICsyOTM0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBhbnMKICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShvdGhlciwgY29udGV4dD1jb250ZXh0KQogCi0gICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgb3RoZXIpOgorICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIHRoZSBhYnN0cmFjdCByZXByZXNlbnRhdGlvbnMuCiAKICAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbApAQCAtMjkzOCw3ICszMDA3LDcgQEAKICAgICAgICAgcmV0dXJuIF9aZXJvCiAKIAotICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBvdGhlcik6CisgICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIGFic3RyYWN0IHJlcHIuLCBpZ25vcmluZyBzaWduLgogCiAgICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgpAQCAtMjk2MCw3ICszMDI5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQogCi0gICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlcik6CisgICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJucyBzZWxmIHdpdGggdGhlIHNpZ24gb2Ygb3RoZXIuIiIiCiAgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUob3RoZXIuX3NpZ24sIHNlbGYuX2ludCwKQEAgLTM4MTYsMTEgKzM4ODUsOSBAQAogICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsCi0gICAgICAgICAgICAgICAgIEVtaW49Tm9uZSwgRW1heD1Ob25lLAotICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLAotICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CiAgICAgICAgICMgU2V0IGRlZmF1bHRzOyBmb3IgZXZlcnl0aGluZyBleGNlcHQgZmxhZ3MgYW5kIF9pZ25vcmVkX2ZsYWdzLAogICAgICAgICAjIGluaGVyaXQgZnJvbSBEZWZhdWx0Q29udGV4dC4KICAgICAgICAgdHJ5OgpAQCAtMzg0MywxNyArMzkxMCw3OCBAQAogICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzKQorICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcwogCiAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscykKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0KChzLCBpbnQocyBpbiBmbGFncykpIGZvciBzIGluIF9zaWduYWxzICsgZmxhZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKIAorICAgIGRlZiBfc2V0X2ludGVnZXJfY2hlY2soc2VsZiwgbmFtZSwgdmFsdWUsIHZtaW4sIHZtYXgpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhbiBpbnRlZ2VyIiAlIG5hbWUpCisgICAgICAgIGlmIHZtaW4gPT0gJy1pbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVzLCAlZF0uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxpZiB2bWF4ID09ICdpbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlc10uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbiBvciB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVkXS4gZ290ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKyAgICBkZWYgX3NldF9zaWduYWxfZGljdChzZWxmLCBuYW1lLCBkKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYSBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIGQ6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIGQpCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lID09ICdwcmVjJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMSwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1pbic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsICctaW5mJywgMCkKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWF4JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2FwaXRhbHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NsYW1wJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdyb3VuZGluZyc6CisgICAgICAgICAgICBpZiBub3QgdmFsdWUgaW4gX3JvdW5kaW5nX21vZGVzOgorICAgICAgICAgICAgICAgICMgcmFpc2UgVHlwZUVycm9yIGV2ZW4gZm9yIHN0cmluZ3MgdG8gaGF2ZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgICMgYW1vbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlczogaW52YWxpZCByb3VuZGluZyBtb2RlIiAlIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdmbGFncycgb3IgbmFtZSA9PSAndHJhcHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9zaWduYWxfZGljdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdfaWdub3JlZF9mbGFncyc6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIidkZWNpbWFsLkNvbnRleHQnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGNhbm5vdCBiZSBkZWxldGVkIiAlIG5hbWUpCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHRyYXBzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLAorICAgICAgICAgICAgICAgIChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBmbGFncywgdHJhcHMpKQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuIiIiCiAgICAgICAgIHMgPSBbXQpAQCAtMzg3Miw0MyArNDAwMCwyNyBAQAogICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgogICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKIAorICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKKyAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCisKICAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYudHJhcHMsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogCiAgICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLnRyYXBzLmNvcHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogICAgIF9fY29weV9fID0gY29weQogCi0gICAgIyBfY2xhbXAgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggdGhpcmQtcGFydHkKLSAgICAjIGNvZGUuICBNYXkgYmUgcmVtb3ZlZCBpbiBQeXRob24gPj0gMy4zLgotICAgIGRlZiBfZ2V0X2NsYW1wKHNlbGYpOgotICAgICAgICAiX2NsYW1wIG1pcnJvcnMgdGhlIGNsYW1wIGF0dHJpYnV0ZS4gIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdVc2Ugb2YgdGhlIF9jbGFtcCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNsYW1wIGluc3RlYWQuJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHJldHVybiBzZWxmLmNsYW1wCi0KLSAgICBkZWYgX3NldF9jbGFtcChzZWxmLCBjbGFtcCk6Ci0gICAgICAgICJfY2xhbXAgbWlycm9ycyB0aGUgY2xhbXAgYXR0cmlidXRlLiAgSXRzIHVzZSBpcyBkZXByZWNhdGVkLiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ1VzZSBvZiB0aGUgX2NsYW1wIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSB1c2UgY2xhbXAgaW5zdGVhZC4nLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wCi0KLSAgICAjIGRvbid0IGJvdGhlciB3aXRoIF9kZWxfY2xhbXA7ICBubyBzYW5lIDNyZCBwYXJ0eSBjb2RlIHNob3VsZAotICAgICMgYmUgZGVsZXRpbmcgdGhlIF9jbGFtcCBhdHRyaWJ1dGUKLSAgICBfY2xhbXAgPSBwcm9wZXJ0eShfZ2V0X2NsYW1wLCBfc2V0X2NsYW1wKQotCiAgICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgogICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCiAKQEAgLTQwNjgsNyArNDE4MCw5IEBACiAgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICAgRGVjaW1hbCgnMi41MCcpCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoY29udGV4dD1zZWxmKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQorICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoKQogCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6CiAgICAgICAgICIiIkNvbXBhcmVzIHZhbHVlcyBudW1lcmljYWxseS4KQEAgLTQzNzgsNiArNDQ5Miw4IEBACiAgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICAgVHJ1ZQogICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImlzX2Nhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKICAgICAgICAgcmV0dXJuIGEuaXNfY2Fub25pY2FsKCkKIAogICAgIGRlZiBpc19maW5pdGUoc2VsZiwgYSk6CkBAIC00OTcwLDcgKzUwODYsNyBAQAogICAgICAgICAgICtOb3JtYWwKICAgICAgICAgICArSW5maW5pdHkKIAotICAgICAgICA+Pj4gYyA9IENvbnRleHQoRXh0ZW5kZWRDb250ZXh0KQorICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKICAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKICAgICAgICAgPj4+IGMuRW1heCA9IDk5OQogICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnSW5maW5pdHknKSkKQEAgLTU1MzUsNiArNTY1MSwyNyBAQAogCiBfbmJpdHMgPSBpbnQuYml0X2xlbmd0aAogCitkZWYgX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KG4sIGUpOgorICAgICIiIiBHaXZlbiBpbnRlZ2VycyBuIGFuZCBlLCByZXR1cm4gbiAqIDEwKiplIGlmIGl0J3MgYW4gaW50ZWdlciwgZWxzZSBOb25lLgorCisgICAgVGhlIGNvbXB1dGF0aW9uIGlzIGRlc2lnbmVkIHRvIGF2b2lkIGNvbXB1dGluZyBsYXJnZSBwb3dlcnMgb2YgMTAKKyAgICB1bm5lY2Vzc2FyaWx5LgorCisgICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzLCA0KQorICAgIDMwMDAwCisgICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzMDAsIC05OTk5OTk5OTkpICAjIHJldHVybnMgTm9uZQorCisgICAgIiIiCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgZSA+PSAwOgorICAgICAgICByZXR1cm4gbiAqIDEwKiplCisgICAgZWxzZToKKyAgICAgICAgIyB2YWxfbiA9IGxhcmdlc3QgcG93ZXIgb2YgMTAgZGl2aWRpbmcgbi4KKyAgICAgICAgc3RyX24gPSBzdHIoYWJzKG4pKQorICAgICAgICB2YWxfbiA9IGxlbihzdHJfbikgLSBsZW4oc3RyX24ucnN0cmlwKCcwJykpCisgICAgICAgIHJldHVybiBOb25lIGlmIHZhbF9uIDwgLWUgZWxzZSBuIC8vIDEwKiotZQorCiBkZWYgX3NxcnRfbmVhcmVzdChuLCBhKToKICAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gdGhlIHNxdWFyZSByb290IG9mIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIG4uICBhIGlzCiAgICAgYW4gaW5pdGlhbCBhcHByb3hpbWF0aW9uIHRvIHRoZSBzcXVhcmUgcm9vdC4gIEFueSBwb3NpdGl2ZSBpbnRlZ2VyCkBAIC01OTAxLDYgKzYwMzgsMTIgQEAKICAgICBpZiBlcXVhbGl0eV9vcCBhbmQgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuQ29tcGxleCkgYW5kIG90aGVyLmltYWcgPT0gMDoKICAgICAgICAgb3RoZXIgPSBvdGhlci5yZWFsCiAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgorICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIGVxdWFsaXR5X29wOgorICAgICAgICAgICAgY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlIGVuYWJsZWQiKQogICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQogICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZCwgTm90SW1wbGVtZW50ZWQKIApAQCAtNTkxNCw4ICs2MDU3LDggQEAKICAgICAgICAgcHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAogICAgICAgICB0cmFwcz1bRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uXSwKICAgICAgICAgZmxhZ3M9W10sCi0gICAgICAgIEVtYXg9OTk5OTk5OTk5LAotICAgICAgICBFbWluPS05OTk5OTk5OTksCisgICAgICAgIEVtYXg9OTk5OTk5LAorICAgICAgICBFbWluPS05OTk5OTksCiAgICAgICAgIGNhcGl0YWxzPTEsCiAgICAgICAgIGNsYW1wPTAKICkKQEAgLTYwNjUsNyArNjIwOCw3IEBACiAgICAgIyBpZiBmb3JtYXQgdHlwZSBpcyAnZycgb3IgJ0cnIHRoZW4gYSBwcmVjaXNpb24gb2YgMCBtYWtlcyBsaXR0bGUKICAgICAjIHNlbnNlOyBjb252ZXJ0IGl0IHRvIDEuICBTYW1lIGlmIGZvcm1hdCB0eXBlIGlzIHVuc3BlY2lmaWVkLgogICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9PSAwOgotICAgICAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddIGlzIE5vbmUgb3IgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpbiAnZ0cnOgorICAgICAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddIGlzIE5vbmUgb3IgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpbiAnZ0duJzoKICAgICAgICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IDEKIAogICAgICMgZGV0ZXJtaW5lIHRob3VzYW5kcyBzZXBhcmF0b3IsIGdyb3VwaW5nLCBhbmQgZGVjaW1hbCBzZXBhcmF0b3IsIGFuZApAQCAtNjIzOSwxNiArNjM4MiwyNiBAQAogCiAjIENvbnN0YW50cyByZWxhdGVkIHRvIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uOyAgaGFzaCh4KSBpcyBiYXNlZAogIyBvbiB0aGUgcmVkdWN0aW9uIG9mIHggbW9kdWxvIF9QeUhBU0hfTU9EVUxVUwotaW1wb3J0IHN5cwogX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCiAjIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCiBfUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCiBfUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCi1kZWwgc3lzCiAKICMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUwogX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQorZGVsIHN5cwogCit0cnk6CisgICAgaW1wb3J0IF9kZWNpbWFsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICBzMSA9IHNldChkaXIoKSkKKyAgICBzMiA9IHNldChkaXIoX2RlY2ltYWwpKQorICAgIGZvciBuYW1lIGluIHMxIC0gczI6CisgICAgICAgIGRlbCBnbG9iYWxzKClbbmFtZV0KKyAgICBkZWwgczEsIHMyLCBuYW1lCisgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgKgogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBkb2N0ZXN0LCBkZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvZGlmZmxpYi5weSBiL0xpYi9kaWZmbGliLnB5CmluZGV4IGU2Y2M2ZWUuLmFlMzc3ZDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaWZmbGliLnB5CisrKyBiL0xpYi9kaWZmbGliLnB5CkBAIC0yMDQsNyArMjA0LDcgQEAKICAgICAgICAgIyAgICAgIHJldHVybmluZyB0cnVlIGlmZiB0aGUgZWxlbWVudCBpcyAianVuayIgLS0gdGhpcyBoYXMKICAgICAgICAgIyAgICAgIHN1YnRsZSBidXQgaGVscGZ1bCBlZmZlY3RzIG9uIHRoZSBhbGdvcml0aG0sIHdoaWNoIEknbGwKICAgICAgICAgIyAgICAgIGdldCBhcm91bmQgdG8gd3JpdGluZyB1cCBzb21lZGF5IDwwLjkgd2luaz4uCi0gICAgICAgICMgICAgICBET04nVCBVU0UhICBPbmx5IF9fY2hhaW5fYiB1c2VzIHRoaXMuICBVc2UgaXNianVuay4KKyAgICAgICAgIyAgICAgIERPTidUIFVTRSEgIE9ubHkgX19jaGFpbl9iIHVzZXMgdGhpcy4gIFVzZSAiaW4gc2VsZi5ianVuayIuCiAgICAgICAgICMgYmp1bmsKICAgICAgICAgIyAgICAgIHRoZSBpdGVtcyBpbiBiIGZvciB3aGljaCBpc2p1bmsgaXMgVHJ1ZS4KICAgICAgICAgIyBicG9wdWxhcgpAQCAtMjg3LDcgKzI4Nyw2IEBACiAgICAgIyB3aGVuIHNlbGYuaXNqdW5rIGlzIGRlZmluZWQsIGp1bmsgZWxlbWVudHMgZG9uJ3Qgc2hvdyB1cCBpbiB0aGlzCiAgICAgIyBtYXAgYXQgYWxsLCB3aGljaCBzdG9wcyB0aGUgY2VudHJhbCBmaW5kX2xvbmdlc3RfbWF0Y2ggbWV0aG9kCiAgICAgIyBmcm9tIHN0YXJ0aW5nIGFueSBtYXRjaGluZyBibG9jayBhdCBhIGp1bmsgZWxlbWVudCAuLi4KLSAgICAjIGFsc28gY3JlYXRlcyB0aGUgZmFzdCBpc2JqdW5rIGZ1bmN0aW9uIC4uLgogICAgICMgYjJqIGFsc28gZG9lcyBub3QgY29udGFpbiBlbnRyaWVzIGZvciAicG9wdWxhciIgZWxlbWVudHMsIG1lYW5pbmcKICAgICAjIGVsZW1lbnRzIHRoYXQgYWNjb3VudCBmb3IgbW9yZSB0aGFuIDEgKyAxJSBvZiB0aGUgdG90YWwgZWxlbWVudHMsIGFuZAogICAgICMgd2hlbiB0aGUgc2VxdWVuY2UgaXMgcmVhc29uYWJseSBsYXJnZSAoPj0gMjAwIGVsZW1lbnRzKTsgdGhpcyBjYW4KQEAgLTgwMCw3ICs3OTksNyBAQAogICAgIC4uLiAgIDIuIEV4cGxpY2l0IGlzIGJldHRlciB0aGFuIGltcGxpY2l0LgogICAgIC4uLiAgIDMuIFNpbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgIC4uLiAgIDQuIENvbXBsZXggaXMgYmV0dGVyIHRoYW4gY29tcGxpY2F0ZWQuCi0gICAgLi4uICcnJy5zcGxpdGxpbmVzKDEpCisgICAgLi4uICcnJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgPj4+IGxlbih0ZXh0MSkKICAgICA0CiAgICAgPj4+IHRleHQxWzBdWy0xXQpAQCAtODA5LDcgKzgwOCw3IEBACiAgICAgLi4uICAgMy4gICBTaW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KICAgICAuLi4gICA0LiBDb21wbGljYXRlZCBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgIC4uLiAgIDUuIEZsYXQgaXMgYmV0dGVyIHRoYW4gbmVzdGVkLgotICAgIC4uLiAnJycuc3BsaXRsaW5lcygxKQorICAgIC4uLiAnJycuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogCiAgICAgTmV4dCB3ZSBpbnN0YW50aWF0ZSBhIERpZmZlciBvYmplY3Q6CiAKQEAgLTg5Niw4ICs4OTUsOCBAQAogCiAgICAgICAgIEV4YW1wbGU6CiAKLSAgICAgICAgPj4+IHByaW50KCcnLmpvaW4oRGlmZmVyKCkuY29tcGFyZSgnb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoMSksCi0gICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoMSkpKSwKKyAgICAgICAgPj4+IHByaW50KCcnLmpvaW4oRGlmZmVyKCkuY29tcGFyZSgnb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoVHJ1ZSksCisgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoVHJ1ZSkpKSwKICAgICAgICAgLi4uICAgICAgIGVuZD0iIikKICAgICAgICAgLSBvbmUKICAgICAgICAgPyAgXgpAQCAtMTI2OSw4ICsxMjY4LDggQEAKIAogICAgIEV4YW1wbGU6CiAKLSAgICA+Pj4gcHJpbnQoJycuam9pbihjb250ZXh0X2RpZmYoJ29uZVxudHdvXG50aHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKDEpLAotICAgIC4uLiAgICAgICAnemVyb1xub25lXG50cmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoMSksICdPcmlnaW5hbCcsICdDdXJyZW50JykpLAorICAgID4+PiBwcmludCgnJy5qb2luKGNvbnRleHRfZGlmZignb25lXG50d29cbnRocmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoVHJ1ZSksCisgICAgLi4uICAgICAgICd6ZXJvXG5vbmVcbnRyZWVcbmZvdXJcbicuc3BsaXRsaW5lcyhUcnVlKSwgJ09yaWdpbmFsJywgJ0N1cnJlbnQnKSksCiAgICAgLi4uICAgICAgIGVuZD0iIikKICAgICAqKiogT3JpZ2luYWwKICAgICAtLS0gQ3VycmVudApAQCAtMTMzOSw4ICsxMzM4LDggQEAKIAogICAgIEV4YW1wbGU6CiAKLSAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcygxKSwKLSAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKDEpKQorICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpLAorICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAgICAgPj4+IHByaW50KCcnLmpvaW4oZGlmZiksIGVuZD0iIikKICAgICAtIG9uZQogICAgID8gIF4KQEAgLTIwMzQsOCArMjAzMyw4IEBACiAKICAgICBFeGFtcGxlczoKIAotICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKDEpLAotICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoMSkpCisgICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSksCisgICAgLi4uICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKICAgICA+Pj4gZGlmZiA9IGxpc3QoZGlmZikKICAgICA+Pj4gcHJpbnQoJycuam9pbihyZXN0b3JlKGRpZmYsIDEpKSwgZW5kPSIiKQogICAgIG9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpcy5weSBiL0xpYi9kaXMucHkKaW5kZXggZjY0YmFlNi4uNTQzZmRjNyAxMDA2NDQKLS0tIGEvTGliL2Rpcy5weQorKysgYi9MaWIvZGlzLnB5CkBAIC0xOTAsNiArMTkwLDkgQEAKICAgICAgICAgICAgICAgICBpZiBmcmVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGZyZWUgPSBjby5jb19jZWxsdmFycyArIGNvLmNvX2ZyZWV2YXJzCiAgICAgICAgICAgICAgICAgcHJpbnQoJygnICsgZnJlZVtvcGFyZ10gKyAnKScsIGVuZD0nICcpCisgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgorICAgICAgICAgICAgICAgIHByaW50KCcoJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyKScKKyAgICAgICAgICAgICAgICAgICAgICAlIChjb2RlW2ktMl0sIGNvZGVbaS0xXSksIGVuZD0nICcpCiAgICAgICAgIHByaW50KCkKIAogZGVmIF9kaXNhc3NlbWJsZV9ieXRlcyhjb2RlLCBsYXN0aT0tMSwgdmFybmFtZXM9Tm9uZSwgbmFtZXM9Tm9uZSwKQEAgLTIyOSw2ICsyMzIsOSBAQAogICAgICAgICAgICAgICAgICAgICBwcmludCgnKCVkKScgJSBvcGFyZywgZW5kPScgJykKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzY29tcGFyZToKICAgICAgICAgICAgICAgICBwcmludCgnKCcgKyBjbXBfb3Bbb3BhcmddICsgJyknLCBlbmQ9JyAnKQorICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKKyAgICAgICAgICAgICAgICBwcmludCgnKCVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciknCisgICAgICAgICAgICAgICAgICAgICAgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pLCBlbmQ9JyAnKQogICAgICAgICBwcmludCgpCiAKIGRlZiBfZGlzYXNzZW1ibGVfc3RyKHNvdXJjZSk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5IGIvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQppbmRleCBiNTJhOWZlLi4zNDVhYzRmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKQEAgLTEzLDUgKzEzLDUgQEAKICMgVXBkYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBQeXRob24gcmVsZWFzZSBwcm9jZXNzLgogIwogIy0tc3RhcnQgY29uc3RhbnRzLS0KLV9fdmVyc2lvbl9fID0gIjMuMi4zIgorX192ZXJzaW9uX18gPSAiMy4zLjAiCiAjLS1lbmQgY29uc3RhbnRzLS0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKaW5kZXggZTNlZDNhZC4uOTU5YThiZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKQEAgLTI2NSwxMSArMjY1LDExIEBACiAgICAgICAgIGNmZ2RhdGEgPSBjZmdkYXRhICsgYiJcMCIKICAgICAgICAgaWYgc2VsZi5wcmVfaW5zdGFsbF9zY3JpcHQ6CiAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gbm9ybWFsaXplIG5ld2xpbmVzLCBzbyB3ZSBvcGVuIGluIHRleHQgbW9kZSBhbmQKLSAgICAgICAgICAgICMgY29udmVydCBiYWNrIHRvIGJ5dGVzLiAibGF0aW4xIiBzaW1wbHkgYXZvaWRzIGFueSBwb3NzaWJsZQorICAgICAgICAgICAgIyBjb252ZXJ0IGJhY2sgdG8gYnl0ZXMuICJsYXRpbi0xIiBzaW1wbHkgYXZvaWRzIGFueSBwb3NzaWJsZQogICAgICAgICAgICAgIyBmYWlsdXJlcy4KICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLnByZV9pbnN0YWxsX3NjcmlwdCwgInIiLAotICAgICAgICAgICAgICAgIGVuY29kaW5nPSJsYXRpbjEiKSBhcyBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2RhdGEgPSBzY3JpcHQucmVhZCgpLmVuY29kZSgibGF0aW4xIikKKyAgICAgICAgICAgICAgICBlbmNvZGluZz0ibGF0aW4tMSIpIGFzIHNjcmlwdDoKKyAgICAgICAgICAgICAgICBzY3JpcHRfZGF0YSA9IHNjcmlwdC5yZWFkKCkuZW5jb2RlKCJsYXRpbi0xIikKICAgICAgICAgICAgIGNmZ2RhdGEgPSBjZmdkYXRhICsgc2NyaXB0X2RhdGEgKyBiIlxuXDAiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGVtcHR5IHByZS1pbnN0YWxsIHNjcmlwdApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKaW5kZXggMzRiNjFiZC4uYjFkOTUxZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CkBAIC04LDYgKzgsNyBAQAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCAqCiBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGN1c3RvbWl6ZV9jb21waWxlciwgZ2V0X3B5dGhvbl92ZXJzaW9uCitmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfaF9maWxlbmFtZQogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyX2dyb3VwCiBmcm9tIGRpc3R1dGlscy5leHRlbnNpb24gaW1wb3J0IEV4dGVuc2lvbgogZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCkBAIC0xNTksNiArMTYwLDExIEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5pbmNsdWRlX2RpcnMsIHN0cik6CiAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycyA9IHNlbGYuaW5jbHVkZV9kaXJzLnNwbGl0KG9zLnBhdGhzZXApCiAKKyAgICAgICAgIyBJZiBpbiBhIHZpcnR1YWxlbnYsIGFkZCBpdHMgaW5jbHVkZSBkaXJlY3RvcnkKKyAgICAgICAgIyBJc3N1ZSAxNjExNgorICAgICAgICBpZiBzeXMuZXhlY19wcmVmaXggIT0gc3lzLmJhc2VfZXhlY19wcmVmaXg6CisgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ2luY2x1ZGUnKSkKKwogICAgICAgICAjIFB1dCB0aGUgUHl0aG9uICJzeXN0ZW0iIGluY2x1ZGUgZGlyIGF0IHRoZSBlbmQsIHNvIHRoYXQKICAgICAgICAgIyBhbnkgbG9jYWwgaW5jbHVkZSBkaXJzIHRha2UgcHJlY2VkZW5jZS4KICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKHB5X2luY2x1ZGUpCkBAIC0xODksNiArMTk1LDggQEAKICAgICAgICAgICAgICMgbXVzdCBiZSB0aGUgKm5hdGl2ZSogcGxhdGZvcm0uICBCdXQgd2UgZG9uJ3QgcmVhbGx5IHN1cHBvcnQKICAgICAgICAgICAgICMgY3Jvc3MtY29tcGlsaW5nIHZpYSBhIGJpbmFyeSBpbnN0YWxsIGFueXdheSwgc28gd2UgbGV0IGl0IGdvLgogICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdsaWJzJykpCisgICAgICAgICAgICBpZiBzeXMuYmFzZV9leGVjX3ByZWZpeCAhPSBzeXMucHJlZml4OiAgIyBJc3N1ZSAxNjExNgorICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICdsaWJzJykpCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRfdGVtcCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICJEZWJ1ZyIpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTk2LDggKzIwNCwxMSBAQAogCiAgICAgICAgICAgICAjIEFwcGVuZCB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLAogICAgICAgICAgICAgIyB0aGlzIGFsbG93cyBkaXN0dXRpbHMgb24gd2luZG93cyB0byB3b3JrIGluIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdQQycpKQotICAgICAgICAgICAgaWYgTVNWQ19WRVJTSU9OID09IDk6CisgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5kaXJuYW1lKGdldF9jb25maWdfaF9maWxlbmFtZSgpKSkKKyAgICAgICAgICAgIF9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChfc3lzX2hvbWUpCisgICAgICAgICAgICBpZiBNU1ZDX1ZFUlNJT04gPj0gOToKICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgLmxpYiBmaWxlcyBmb3IgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJlCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5wbGF0X25hbWUgPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gJycKQEAgLTIzOSw4ICsyNTAsNyBAQAogICAgICAgICAjIGZvciBleHRlbnNpb25zIHVuZGVyIExpbnV4IG9yIFNvbGFyaXMgd2l0aCBhIHNoYXJlZCBQeXRob24gbGlicmFyeSwKICAgICAgICAgIyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlIGFwcGVuZGVkIHRvIGxpYnJhcnlfZGlycwogICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKQotICAgICAgICBpZiAoKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdnbnUnKQotICAgICAgICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdzdW5vcycpKQorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdnbnUnLCAnc3Vub3MnKSkKICAgICAgICAgICAgIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKSk6CiAgICAgICAgICAgICBpZiBzeXMuZXhlY3V0YWJsZS5zdGFydHN3aXRoKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJiaW4iKSk6CiAgICAgICAgICAgICAgICAgIyBidWlsZGluZyB0aGlyZCBwYXJ0eSBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CmluZGV4IGVjNDM0NzcuLjRiNWIyMmUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CkBAIC0xMjYsMTAgKzEyNiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzaGViYW5nICh7IXJ9KSBpcyBub3QgZGVjb2RhYmxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgc2NyaXB0IGVuY29kaW5nICh7fSkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzaGViYW5nLCBlbmNvZGluZykpCi0gICAgICAgICAgICAgICAgICAgIG91dGYgPSBvcGVuKG91dGZpbGUsICJ3YiIpCi0gICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKLSAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZWxpbmVzKGYucmVhZGxpbmVzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dGYuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgIndiIikgYXMgb3V0ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGVsaW5lcyhmLnJlYWRsaW5lcygpKQogICAgICAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC1hbWQ2NC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhMGRjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjM2JjNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggODE5ZTFhOS4uMGJkZDUzOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTc4LDYgKzc4LDkgQEAKICAgICAgICAgZWxpZiBtc2NfdmVyID09ICcxNTAwJzoKICAgICAgICAgICAgICMgVlMyMDA4IC8gTVNWQyA5LjAKICAgICAgICAgICAgIHJldHVybiBbJ21zdmNyOTAnXQorICAgICAgICBlbGlmIG1zY192ZXIgPT0gJzE2MDAnOgorICAgICAgICAgICAgIyBWUzIwMTAgLyBNU1ZDIDEwLjAKKyAgICAgICAgICAgIHJldHVybiBbJ21zdmNyMTAwJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gTVMgQ29tcGlsZXIgdmVyc2lvbiAlcyAiICUgbXNjX3ZlcikKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCAxNjkwMmNhLi4zMTc2NDBjIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtMTgsNiArMTgsOCBAQAogIyBUaGVzZSBhcmUgbmVlZGVkIGluIGEgY291cGxlIG9mIHNwb3RzLCBzbyBqdXN0IGNvbXB1dGUgdGhlbSBvbmNlLgogUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQogRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKK0JBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCitCQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIAogIyBQYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4gT24gV2luZG93cyB0aGUgYmluYXJ5IG1heQogIyBsaXZlIGluIHByb2plY3QvUENCdWlsZDkuICBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4geDY0IFdpbmRvd3MgYnVpbGQsCkBAIC0zOSwxMSArNDEsMjEgQEAKICMgZGlmZmVyZW50IChoYXJkLXdpcmVkKSBkaXJlY3Rvcmllcy4KICMgU2V0dXAubG9jYWwgaXMgYXZhaWxhYmxlIGZvciBNYWtlZmlsZSBidWlsZHMgaW5jbHVkaW5nIFZQQVRIIGJ1aWxkcywKICMgU2V0dXAuZGlzdCBpcyBhdmFpbGFibGUgb24gV2luZG93cwotZGVmIF9weXRob25fYnVpbGQoKToKK2RlZiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoZCk6CiAgICAgZm9yIGZuIGluICgiU2V0dXAuZGlzdCIsICJTZXR1cC5sb2NhbCIpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiTW9kdWxlcyIsIGZuKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQorX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCitpZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAorICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorZGVmIF9weXRob25fYnVpbGQoKToKKyAgICBpZiBfc3lzX2hvbWU6CisgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQorICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIocHJvamVjdF9iYXNlKQogcHl0aG9uX2J1aWxkID0gX3B5dGhvbl9idWlsZCgpCiAKICMgQ2FsY3VsYXRlIHRoZSBidWlsZCBxdWFsaWZpZXIgZmxhZ3MgaWYgdGhleSBhcmUgZGVmaW5lZC4gIEFkZGluZyB0aGUgZmxhZ3MKQEAgLTc0LDExICs4NiwxMSBAQAogICAgIG90aGVyd2lzZSwgdGhpcyBpcyB0aGUgcGF0aCB0byBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXMKICAgICAobmFtZWx5IHB5Y29uZmlnLmgpLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKICAgICAgICAgICAgICMgQXNzdW1lIHRoZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGUKQEAgLTg2LDEyICs5OCwxNCBAQAogICAgICAgICAgICAgIyB0aGUgYnVpbGQgZGlyZWN0b3J5IG1heSBub3QgYmUgdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdlCiAgICAgICAgICAgICAjIG11c3QgdXNlICJzcmNkaXIiIGZyb20gdGhlIG1ha2VmaWxlIHRvIGZpbmQgdGhlICJJbmNsdWRlIgogICAgICAgICAgICAgIyBkaXJlY3RvcnkuCi0gICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCisgICAgICAgICAgICBiYXNlID0gX3N5c19ob21lIG9yIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQogICAgICAgICAgICAgaWYgcGxhdF9zcGVjaWZpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIGluY2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUsIGdldF9jb25maWdfdmFyKCdBU1RfSF9ESVInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaW5jZGlyID0gb3MucGF0aC5qb2luKGdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ0luY2x1ZGUnKQotICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKGluY2RpcikKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKGluY2RpcikKICAgICAgICAgcHl0aG9uX2RpciA9ICdweXRob24nICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkgKyBidWlsZF9mbGFncwogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHByZWZpeCwgImluY2x1ZGUiLCBweXRob25fZGlyKQogICAgIGVsaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMTE1LDExICsxMjksMTQgQEAKICAgICBjb250YWluaW5nIHN0YW5kYXJkIFB5dGhvbiBsaWJyYXJ5IG1vZHVsZXM7IG90aGVyd2lzZSwgcmV0dXJuIHRoZQogICAgIGRpcmVjdG9yeSBmb3Igc2l0ZS1zcGVjaWZpYyBtb2R1bGVzLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKKyAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAogCiAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LApAQCAtMTQ2LDcgKzE2Myw3IEBACiAgICAgICAgICAgICAiSSBkb24ndCBrbm93IHdoZXJlIFB5dGhvbiBpbnN0YWxscyBpdHMgbGlicmFyeSAiCiAgICAgICAgICAgICAib24gcGxhdGZvcm0gJyVzJyIgJSBvcy5uYW1lKQogCi1fVVNFX0NMQU5HID0gTm9uZQorCiAKIGRlZiBjdXN0b21pemVfY29tcGlsZXIoY29tcGlsZXIpOgogICAgICIiIkRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjdXN0b21pemF0aW9uIG9mIGEgQ0NvbXBpbGVyIGluc3RhbmNlLgpAQCAtMTU1LDQyICsxNzIsMjggQEAKICAgICB2YXJpZXMgYWNyb3NzIFVuaWNlcyBhbmQgaXMgc3RvcmVkIGluIFB5dGhvbidzIE1ha2VmaWxlLgogICAgICIiIgogICAgIGlmIGNvbXBpbGVyLmNvbXBpbGVyX3R5cGUgPT0gInVuaXgiOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CisgICAgICAgICAgICAjIFBlcmZvcm0gZmlyc3QtdGltZSBjdXN0b21pemF0aW9uIG9mIGNvbXBpbGVyLXJlbGF0ZWQKKyAgICAgICAgICAgICMgY29uZmlnIHZhcnMgb24gT1MgWCBub3cgdGhhdCB3ZSBrbm93IHdlIG5lZWQgYSBjb21waWxlci4KKyAgICAgICAgICAgICMgVGhpcyBpcyBwcmltYXJpbHkgdG8gc3VwcG9ydCBQeXRob25zIGZyb20gYmluYXJ5CisgICAgICAgICAgICAjIGluc3RhbGxlcnMuICBUaGUga2luZCBhbmQgcGF0aHMgdG8gYnVpbGQgdG9vbHMgb24KKyAgICAgICAgICAgICMgdGhlIHVzZXIgc3lzdGVtIG1heSB2YXJ5IHNpZ25pZmljYW50bHkgZnJvbSB0aGUgc3lzdGVtCisgICAgICAgICAgICAjIHRoYXQgUHl0aG9uIGl0c2VsZiB3YXMgYnVpbHQgb24uICBBbHNvIHRoZSB1c2VyIE9TCisgICAgICAgICAgICAjIHZlcnNpb24gYW5kIGJ1aWxkIHRvb2xzIG1heSBub3Qgc3VwcG9ydCB0aGUgc2FtZSBzZXQKKyAgICAgICAgICAgICMgb2YgQ1BVIGFyY2hpdGVjdHVyZXMgZm9yIHVuaXZlcnNhbCBidWlsZHMuCisgICAgICAgICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCisgICAgICAgICAgICBpZiBub3QgX2NvbmZpZ192YXJzLmdldCgnQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInLCAnJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29tcGlsZXIoX2NvbmZpZ192YXJzKQorICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1snQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInXSA9ICdUcnVlJworCiAgICAgICAgIChjYywgY3h4LCBvcHQsIGNmbGFncywgY2NzaGFyZWQsIGxkc2hhcmVkLCBzb19leHQsIGFyLCBhcl9mbGFncykgPSBcCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoJ0NDJywgJ0NYWCcsICdPUFQnLCAnQ0ZMQUdTJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0NTSEFSRUQnLCAnTERTSEFSRUQnLCAnU08nLCAnQVInLCAnQVJGTEFHUycpCiAKICAgICAgICAgbmV3Y2MgPSBOb25lCiAgICAgICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIG5ld2NjID0gb3MuZW52aXJvblsnQ0MnXQotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY2MgPT0gJ2djYy00LjInOgotICAgICAgICAgICAgIyBJc3N1ZSAjMTM1OTA6Ci0gICAgICAgICAgICAjICAgICAgIFNpbmNlIEFwcGxlIHJlbW92ZWQgZ2NjLTQuMiBpbiBYY29kZSA0LjIsIHdlIGNhbiBubwotICAgICAgICAgICAgIyAgICAgICBsb25nZXIgYXNzdW1lIGl0IGlzIGF2YWlsYWJsZSBmb3IgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMuCi0gICAgICAgICAgICAjICAgICAgIElmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBnY2MtNC4yLCBjaGVjayBmaXJzdCB0byBzZWUgaWYKLSAgICAgICAgICAgICMgICAgICAgaXQgaXMgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtOyBpZiBub3QsIHRyeSB0byB1c2UgY2xhbmcKLSAgICAgICAgICAgICMgICAgICAgaW5zdGVhZCB1bmxlc3MgdGhlIGNhbGxlciBleHBsaWNpdGx5IHNldCBDQy4KLSAgICAgICAgICAgIGdsb2JhbCBfVVNFX0NMQU5HCi0gICAgICAgICAgICBpZiBfVVNFX0NMQU5HIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwotICAgICAgICAgICAgICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKLSAgICAgICAgICAgICAgICBwID0gUG9wZW4oIiEgdHlwZSBnY2MtNC4yICYmIHR5cGUgY2xhbmcgJiYgZXhpdCAyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFKQotICAgICAgICAgICAgICAgIHAud2FpdCgpCi0gICAgICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDI6Ci0gICAgICAgICAgICAgICAgICAgIF9VU0VfQ0xBTkcgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJnY2MtNC4yIG5vdCBmb3VuZCwgdXNpbmcgY2xhbmcgaW5zdGVhZCIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX1VTRV9DTEFORyA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfVVNFX0NMQU5HOgotICAgICAgICAgICAgICAgIG5ld2NjID0gJ2NsYW5nJwotICAgICAgICBpZiBuZXdjYzoKLSAgICAgICAgICAgICMgT24gT1MgWCwgaWYgQ0MgaXMgb3ZlcnJpZGRlbiwgdXNlIHRoYXQgYXMgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICMgICAgICAgY29tbWFuZCBmb3IgTERTSEFSRUQgYXMgd2VsbAotICAgICAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJwotICAgICAgICAgICAgICAgICAgICBhbmQgJ0xEU0hBUkVEJyBub3QgaW4gb3MuZW52aXJvbgotICAgICAgICAgICAgICAgICAgICBhbmQgbGRzaGFyZWQuc3RhcnRzd2l0aChjYykpOgotICAgICAgICAgICAgICAgIGxkc2hhcmVkID0gbmV3Y2MgKyBsZHNoYXJlZFtsZW4oY2MpOl0KLSAgICAgICAgICAgIGNjID0gbmV3Y2MKKyAgICAgICAgICAgIGNjID0gb3MuZW52aXJvblsnQ0MnXQogICAgICAgICBpZiAnQ1hYJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgY3h4ID0gb3MuZW52aXJvblsnQ1hYJ10KICAgICAgICAgaWYgJ0xEU0hBUkVEJyBpbiBvcy5lbnZpcm9uOgpAQCAtMjMyLDkgKzIzNSw5IEBACiAgICAgIiIiUmV0dXJuIGZ1bGwgcGF0aG5hbWUgb2YgaW5zdGFsbGVkIHB5Y29uZmlnLmggZmlsZS4iIiIKICAgICBpZiBweXRob25fYnVpbGQ6CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiUEMiKQorICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiUEMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5jX2RpciA9IHByb2plY3RfYmFzZQorICAgICAgICAgICAgaW5jX2RpciA9IF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UKICAgICBlbHNlOgogICAgICAgICBpbmNfZGlyID0gZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0xKQogICAgIGlmIGdldF9weXRob25fdmVyc2lvbigpIDwgJzIuMic6CkBAIC0yNDgsNyArMjUxLDggQEAKIGRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gZnVsbCBwYXRobmFtZSBvZiBpbnN0YWxsZWQgTWFrZWZpbGUgZnJvbSB0aGUgUHl0aG9uIGJ1aWxkLiIiIgogICAgIGlmIHB5dGhvbl9idWlsZDoKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCAiTWFrZWZpbGUiKQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ha2VmaWxlIikKICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKICAgICBjb25maWdfZmlsZSA9ICdjb25maWcte317fScuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpLCBidWlsZF9mbGFncykKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpYl9kaXIsIGNvbmZpZ19maWxlLCAnTWFrZWZpbGUnKQpAQCAtNTEwLDcgKzUxNCw3IEBACiAgICAgdmFyaWFibGVzIHJlbGV2YW50IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4gIEdlbmVyYWxseSB0aGlzIGluY2x1ZGVzCiAgICAgZXZlcnl0aGluZyBuZWVkZWQgdG8gYnVpbGQgZXh0ZW5zaW9ucyBhbmQgaW5zdGFsbCBib3RoIHB1cmUgbW9kdWxlcyBhbmQKICAgICBleHRlbnNpb25zLiAgT24gVW5peCwgdGhpcyBtZWFucyBldmVyeSB2YXJpYWJsZSBkZWZpbmVkIGluIFB5dGhvbidzCi0gICAgaW5zdGFsbGVkIE1ha2VmaWxlOyBvbiBXaW5kb3dzIGFuZCBNYWMgT1MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCisgICAgaW5zdGFsbGVkIE1ha2VmaWxlOyBvbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgogCiAgICAgV2l0aCBhcmd1bWVudHMsIHJldHVybiBhIGxpc3Qgb2YgdmFsdWVzIHRoYXQgcmVzdWx0IGZyb20gbG9va2luZyB1cAogICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KQEAgLTUyOSw2ICs1MzMsMjMgQEAKICAgICAgICAgX2NvbmZpZ192YXJzWydwcmVmaXgnXSA9IFBSRUZJWAogICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAogCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBpZiBweXRob25fYnVpbGQ6CisgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCisgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgIyBjb250YWluaW5nIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgbm90IG1lYW5pbmdmdWwgc2luY2UgdGhlIGluc3RhbGxhdGlvbiBpcworICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIE1ha2VmaWxlIHNpbmNlIHdlIGtub3cgaXQKKyAgICAgICAgICAgICAgICAjIGV4aXN0cy4KKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChzcmNkaXIpKQorCiAgICAgICAgICMgQ29udmVydCBzcmNkaXIgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlmIGl0IGFwcGVhcnMgbmVjZXNzYXJ5LgogICAgICAgICAjIE5vcm1hbGx5IGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBIb3dldmVyLCBkdXJpbmcKICAgICAgICAgIyB0ZXN0aW5nLCBmb3IgZXhhbXBsZSwgd2UgbWlnaHQgYmUgcnVubmluZyBhIG5vbi1pbnN0YWxsZWQgcHl0aG9uCkBAIC01NDMsNDMgKzU2NCwxMSBAQAogICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihiYXNlLCBfY29uZmlnX3ZhcnNbJ3NyY2RpciddKQogICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLm5vcm1wYXRoKHNyY2RpcikKIAorICAgICAgICAjIE9TIFggcGxhdGZvcm1zIHJlcXVpcmUgc3BlY2lhbCBjdXN0b21pemF0aW9uIHRvIGhhbmRsZQorICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIEtlcm5lbCB2ZXJzaW9uICg4LjQuMykKLSAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoa2VybmVsX3ZlcnNpb24uc3BsaXQoJy4nKVswXSkKLQotICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAotICAgICAgICAgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyBvbiBhIDEwLjMgc3lzdGVtCi0gICAgICAgICAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1trZXldCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1trZXldID0gZmxhZ3MKLQotICAgICAgICAgICAgZWxzZToKLQotICAgICAgICAgICAgICAgICMgQWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGFyY2hpdGVjdHVyZSBmbGFncyB1c2luZwotICAgICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIG5hbWUgd2FzIGludHJvZHVjZWQgYnkgQXBwbGUgaW4gT1NYIDEwLjUgYW5kCi0gICAgICAgICAgICAgICAgIyBpcyB1c2VkIGJ5IHNldmVyYWwgc2NyaXB0aW5nIGxhbmd1YWdlcyBkaXN0cmlidXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgIyB0aGF0IE9TIHJlbGVhc2UuCi0KLSAgICAgICAgICAgICAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAotICAgICAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzW2tleV0gPSBmbGFncworICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgX29zeF9zdXBwb3J0LmN1c3RvbWl6ZV9jb25maWdfdmFycyhfY29uZmlnX3ZhcnMpCiAKICAgICBpZiBhcmdzOgogICAgICAgICB2YWxzID0gW10KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CmluZGV4IDhlZGZhYjQuLjFhZmRkNDYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQpAQCAtMSw2ICsxLDggQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmFyY2hpdmVfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBpbXBvcnQgdGFyZmlsZQogZnJvbSBvcy5wYXRoIGltcG9ydCBzcGxpdGRyaXZlCiBpbXBvcnQgd2FybmluZ3MKQEAgLTI1LDYgKzI3LDE4IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgWkxJQl9TVVBQT1JUID0gRmFsc2UKIAorZGVmIGNhbl9mc19lbmNvZGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiBUcnVlIGlmIHRoZSBmaWxlbmFtZSBjYW4gYmUgc2F2ZWQgaW4gdGhlIGZpbGUgc3lzdGVtLgorICAgICIiIgorICAgIGlmIG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXM6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKIAogY2xhc3MgQXJjaGl2ZVV0aWxUZXN0Q2FzZShzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LkxvZ2dpbmdTaWxlbmNlciwKQEAgLTMyLDYgKzQ2LDI4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCdhcmNoaXZlJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgnw6VyY2hpdicpLAorICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfbGF0aW4xKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgbGF0aW4gY2hhcmFjdGVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnw6VyY2hpdicpICMgbm90ZSB0aGlzIGlzbid0IGEgcmVhbCB3b3JkCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9mc19lbmNvZGUoJ+OBruOCouODvOOCq+OCpOODlicpLAorICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfZXh0ZW5kZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBNaXJyb3IgdGVzdF9tYWtlX3RhcmJhbGwsIGV4Y2VwdCBmaWxlbmFtZSBjb250YWlucyBleHRlbmRlZAorICAgICAgICBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGxhdGluIGNoYXJzZXQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ+OBruOCouODvOOCq+OCpOODlicpICMgamFwYW5lc2UgZm9yIGFyY2hpdmUKKworICAgIGRlZiBfbWFrZV90YXJiYWxsKHNlbGYsIHRhcmdldF9uYW1lKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCkBAIC00Myw3ICs3OSw3IEBACiAgICAgICAgIHVuaXR0ZXN0LnNraXBVbmxlc3Moc3BsaXRkcml2ZSh0bXBkaXIpWzBdID09IHNwbGl0ZHJpdmUodG1wZGlyMilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXJjZSBhbmQgdGFyZ2V0IHNob3VsZCBiZSBvbiBzYW1lIGRyaXZlIikKIAotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCiAKICAgICAgICAgIyB3b3JraW5nIHdpdGggcmVsYXRpdmUgcGF0aHMgdG8gYXZvaWQgdGFyIHdhcm5pbmdzCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQpAQCAtNTgsNyArOTQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCiAKICAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICBvcy5jaGRpcih0bXBkaXIpCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CmluZGV4IGFiN2ExYmYuLmIwOTBiNzkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQpAQCAtMjgsNiArMjgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZS5lbmNvZGUoIlVURi04IikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuZXhlY3V0YWJsZSBpcyBub3QgZW5jb2RhYmxlIHRvIFVURi04IikKKwogICAgICAgICBzdXBlcihCdWlsZFJwbVRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIHNlbGYub2xkX2xvY2F0aW9uID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgc2VsZi5vbGRfc3lzX2FyZ3YgPSBzeXMuYXJndiwgc3lzLmFyZ3ZbOl0KQEAgLTQyLDcgKzQ3LDcgQEAKIAogICAgICAgICAjIFhYWCBJIGFtIHVuYWJsZSB5ZXQgdG8gbWFrZSB0aGlzIHRlc3Qgd29yayB3aXRob3V0CiAgICAgICAgICMgc3B1cmlvdXMgc2R0b3V0L3N0ZGVyciBvdXRwdXQgdW5kZXIgTWFjIE9TIFgKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdsaW51eDInOgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIHRoaXMgdGVzdCB3aWxsIHJ1biBvbmx5IGlmIHRoZSBycG0gY29tbWFuZHMgYXJlIGZvdW5kCkBAIC04Niw3ICs5MSw3IEBACiAKICAgICAgICAgIyBYWFggSSBhbSB1bmFibGUgeWV0IHRvIG1ha2UgdGhpcyB0ZXN0IHdvcmsgd2l0aG91dAogICAgICAgICAjIHNwdXJpb3VzIHNkdG91dC9zdGRlcnIgb3V0cHV0IHVuZGVyIE1hYyBPUyBYCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnbGludXgyJzoKKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTUzMzE2NApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKaW5kZXggZmJlMjZiZi4uODI2ZWE0MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC01Myw2ICs1MywzNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjdmFycywgZGljdCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdmFycykKIAorICAgIGRlZiB0ZXN0X3NyY2RpcihzZWxmKToKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoc3JjZGlyKSwgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzcmNkaXIpLCBzcmNkaXIpCisKKyAgICAgICAgaWYgc3lzY29uZmlnLnB5dGhvbl9idWlsZDoKKyAgICAgICAgICAgICMgVGhlIHB5dGhvbiBleGVjdXRhYmxlIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgc28gc3JjZGlyCisgICAgICAgICAgICAjIHNob3VsZCBiZSBhIGZ1bGwgc291cmNlIGNoZWNrb3V0LgorICAgICAgICAgICAgUHl0aG9uX2ggPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCAnSW5jbHVkZScsICdQeXRob24uaCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoUHl0aG9uX2gpLCBQeXRob25faCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeXNjb25maWcuX2lzX3B5dGhvbl9zb3VyY2VfZGlyKHNyY2RpcikpCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmRpcm5hbWUoc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RpcikKKworICAgIGRlZiB0ZXN0X3NyY2Rpcl9pbmRlcGVuZGVudF9vZl9jd2Qoc2VsZik6CisgICAgICAgICMgc3JjZGlyIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoJy4uJykKKyAgICAgICAgICAgIHNyY2RpcjIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZGlyLCBzcmNkaXIyKQorCiAgICAgZGVmIHRlc3RfY3VzdG9taXplX2NvbXBpbGVyKHNlbGYpOgogCiAgICAgICAgICMgbm90IHRlc3RpbmcgaWYgZGVmYXVsdCBjb21waWxlciBpcyBub3QgdW5peApAQCAtMTAyLDcgKzEzMSwyNyBAQAogICAgICAgICBpbXBvcnQgc3lzY29uZmlnIGFzIGdsb2JhbF9zeXNjb25maWcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDRkxBR1MnKSwgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDRkxBR1MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMREZMQUdTJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERGTEFHUycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJyksc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMRFNIQVJFRCcpKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NVU1RPTUlaRURfT1NYX0NPTVBJTEVSJyksJ2NvbXBpbGVyIGZsYWdzIGN1c3RvbWl6ZWQnKQorICAgIGRlZiB0ZXN0X3N5c2NvbmZpZ19jb21waWxlcl92YXJzKHNlbGYpOgorICAgICAgICAjIE9uIE9TIFgsIGJpbmFyeSBpbnN0YWxsZXJzIHN1cHBvcnQgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZGluZyBvbgorICAgICAgICAjIHZhcmlvdXMgbGV2ZWxzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpdGggZGlmZmVyaW5nIFhjb2RlCisgICAgICAgICMgY29uZmlndXJhdGlvbnMuICBUaGlzIHJlcXVpcmVzIGN1c3RvbWl6YXRpb24gb2Ygc29tZSBvZiB0aGUKKyAgICAgICAgIyBjb21waWxlciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgdG8gc3VpdCB0aGUgZW52aXJvbm1lbnQgb24KKyAgICAgICAgIyB0aGUgaW5zdGFsbGVkIG1hY2hpbmUuICBTb21lIG9mIHRoZXNlIGN1c3RvbWl6YXRpb25zIG1heSByZXF1aXJlCisgICAgICAgICMgcnVubmluZyBleHRlcm5hbCBwcm9ncmFtcyBhbmQsIHNvLCBhcmUgZGVmZXJyZWQgdW50aWwgbmVlZGVkIGJ5CisgICAgICAgICMgdGhlIGZpcnN0IGV4dGVuc2lvbiBtb2R1bGUgYnVpbGQuICBXaXRoIFB5dGhvbiAzLjMsIG9ubHkKKyAgICAgICAgIyB0aGUgRGlzdHV0aWxzIHZlcnNpb24gb2Ygc3lzY29uZmlnIGlzIHVzZWQgZm9yIGV4dGVuc2lvbiBtb2R1bGUKKyAgICAgICAgIyBidWlsZHMsIHdoaWNoIGhhcHBlbnMgZWFybGllciBpbiB0aGUgRGlzdHV0aWxzIHRlc3RzLiAgVGhpcyBtYXkKKyAgICAgICAgIyBjYXVzZSB0aGUgZm9sbG93aW5nIHRlc3RzIHRvIGZhaWwgc2luY2Ugbm8gdGVzdHMgaGF2ZSBjYXVzZWQKKyAgICAgICAgIyB0aGUgZ2xvYmFsIHZlcnNpb24gb2Ygc3lzY29uZmlnIHRvIGNhbGwgdGhlIGN1c3RvbWl6YXRpb24geWV0LgorICAgICAgICAjIFRoZSBzb2x1dGlvbiBmb3Igbm93IGlzIHRvIHNpbXBseSBza2lwIHRoaXMgdGVzdCBpbiB0aGlzIGNhc2UuCisgICAgICAgICMgVGhlIGxvbmdlci10ZXJtIHNvbHV0aW9uIGlzIHRvIG9ubHkgaGF2ZSBvbmUgdmVyc2lvbiBvZiBzeXNjb25maWcuCisKKyAgICAgICAgaW1wb3J0IHN5c2NvbmZpZyBhcyBnbG9iYWxfc3lzY29uZmlnCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERTSEFSRUQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpLCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCAxYTA2ZDRjLi5lYWM5YjUxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtMTMsNiArMTMsNyBAQAogZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcnMKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CitpbXBvcnQgX29zeF9zdXBwb3J0CiAKIGNsYXNzIFV0aWxUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC05Miw2ICs5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgKCdEYXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMS4xOiAnCiAgICAgICAgICAgICAgICAgICAgICdXZWQgT2N0IDEwIDE4OjIzOjI4IFBEVCAyMDA3OyAnCiAgICAgICAgICAgICAgICAgICAgICdyb290OnhudS03OTIuMjUuMjB+MS9SRUxFQVNFX0kzODYnKSwgJ2kzODYnKSkKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKIAogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1ETkRFQlVHIC1nICcKQEAgLTEwNSw2ICsxMDcsNyBAQAogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBjdXJzaXplCiAKICAgICAgICAgIyBtYWNib29rIHdpdGggZmF0IGJpbmFyaWVzIChmYXQsIHVuaXZlcnNhbCBvciBmYXQ2NCkKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuNCcKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKQEAgLTExMywxMCArMTE2LDEyIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0JykKIAogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0xMjQsMTggKzEyOSwyMSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1pbnRlbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdDMnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCBwcGM2NCAtYXJjaCB4ODZfNjQgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC11bml2ZXJzYWwnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggcHBjNjQgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpAQCAtMTQ0LDYgKzE1Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQ2NCcpCiAKICAgICAgICAgZm9yIGFyY2ggaW4gKCdwcGMnLCAnaTM4NicsICd4ODZfNjQnLCAncHBjNjQnKToKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggJXMgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKaW5kZXggYzcwYTNjYy4uMDk0YTJmMCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQpAQCAtMjMsNiArMjMsOSBAQAogICAgICBEaXN0dXRpbHNFeGVjRXJyb3IsIENvbXBpbGVFcnJvciwgTGliRXJyb3IsIExpbmtFcnJvcgogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwogCitpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorCiAjIFhYWCBUaGluZ3Mgbm90IGN1cnJlbnRseSBoYW5kbGVkOgogIyAgICogb3B0aW1pemF0aW9uL2RlYnVnL3dhcm5pbmcgZmxhZ3M7IHdlIGp1c3QgdXNlIHdoYXRldmVyJ3MgaW4gUHl0aG9uJ3MKICMgICAgIE1ha2VmaWxlIGFuZCBsaXZlIHdpdGggaXQuICBJcyB0aGlzIGFkZXF1YXRlPyAgSWYgbm90LCB3ZSBtaWdodApAQCAtMzgsNjggKzQxLDYgQEAKICMgICAgIHNob3VsZCBqdXN0IGhhcHBpbHkgc3R1ZmYgdGhlbSBpbnRvIHRoZSBwcmVwcm9jZXNzb3IvY29tcGlsZXIvbGlua2VyCiAjICAgICBvcHRpb25zIGFuZCBjYXJyeSBvbi4KIAotZGVmIF9kYXJ3aW5fY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sIGNjX2FyZ3MpOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzdHJpcCAnLWlzeXNyb290IFBBVEgnIGFuZCAnLWFyY2ggQVJDSCcgZnJvbSB0aGUKLSAgICBjb21waWxlIGZsYWdzIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgb25lIHRoZW0gaW4gZXh0cmFfY29tcGlsZV9mbGFncy4KLQotICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgJy1hcmNoIEFSQ0gnIGFkZHMgYW5vdGhlciBhcmNoaXRlY3R1cmUgdG8gdGhlCi0gICAgYnVpbGQsIHdpdGhvdXQgYSB3YXkgdG8gcmVtb3ZlIGFuIGFyY2hpdGVjdHVyZS4gRnVydGhlcm1vcmUgR0NDIHdpbGwKLSAgICBiYXJmIGlmIG11bHRpcGxlICctaXN5c3Jvb3QnIGFyZ3VtZW50cyBhcmUgcHJlc2VudC4KLSAgICAiIiIKLSAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBGYWxzZQotCi0gICAgY29tcGlsZXJfc28gPSBsaXN0KGNvbXBpbGVyX3NvKQotICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIDguNC4zCi0gICAgbWFqb3JfdmVyc2lvbiA9IGludChrZXJuZWxfdmVyc2lvbi5zcGxpdCgnLicpWzBdKQotCi0gICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICMgT1NYIGJlZm9yZSAxMC40LjAsIHRoZXNlIGRvbid0IHN1cHBvcnQgLWFyY2ggYW5kIC1pc3lzcm9vdCBhdAotICAgICAgICAjIGFsbC4KLSAgICAgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIHN0cmlwQXJjaCA9ICctYXJjaCcgaW4gY2NfYXJncwotICAgICAgICBzdHJpcFN5c3Jvb3QgPSAnLWlzeXNyb290JyBpbiBjY19hcmdzCi0KLSAgICBpZiBzdHJpcEFyY2ggb3IgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctYXJjaCcpCi0gICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6Ci0gICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbiBhbmQgbm90IHN0cmlwQXJjaDoKLSAgICAgICAgIyBVc2VyIHNwZWNpZmllZCBkaWZmZXJlbnQgLWFyY2ggZmxhZ3MgaW4gdGhlIGVudmlyb24sCi0gICAgICAgICMgc2VlIGFsc28gZGlzdHV0aWxzLnN5c2NvbmZpZwotICAgICAgICBjb21waWxlcl9zbyA9IGNvbXBpbGVyX3NvICsgb3MuZW52aXJvblsnQVJDSEZMQUdTJ10uc3BsaXQoKQotCi0gICAgaWYgc3RyaXBTeXNyb290OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6Ci0gICAgICAgICAgICBkZWwgY29tcGlsZXJfc29baW5kZXg6aW5kZXgrMl0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAjIENoZWNrIGlmIHRoZSBTREsgdGhhdCBpcyB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBhY3R1YWxseSBleGlzdHMsCi0gICAgIyB0aGUgdW5pdmVyc2FsIGJ1aWxkIHJlcXVpcmVzIHRoZSB1c2FnZSBvZiBhIHVuaXZlcnNhbCBTREsgYW5kIG5vdCBhbGwKLSAgICAjIHVzZXJzIGhhdmUgdGhhdCBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KLSAgICBzeXNyb290ID0gTm9uZQotICAgIGlmICctaXN5c3Jvb3QnIGluIGNjX2FyZ3M6Ci0gICAgICAgIGlkeCA9IGNjX2FyZ3MuaW5kZXgoJy1pc3lzcm9vdCcpCi0gICAgICAgIHN5c3Jvb3QgPSBjY19hcmdzW2lkeCsxXQotICAgIGVsaWYgJy1pc3lzcm9vdCcgaW4gY29tcGlsZXJfc286Ci0gICAgICAgIGlkeCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICBzeXNyb290ID0gY29tcGlsZXJfc29baWR4KzFdCi0KLSAgICBpZiBzeXNyb290IGFuZCBub3Qgb3MucGF0aC5pc2RpcihzeXNyb290KToKLSAgICAgICAgbG9nLndhcm4oIkNvbXBpbGluZyB3aXRoIGFuIFNESyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBleGlzdDogJXMiLAotICAgICAgICAgICAgICAgIHN5c3Jvb3QpCi0gICAgICAgIGxvZy53YXJuKCJQbGVhc2UgY2hlY2sgeW91ciBYY29kZSBpbnN0YWxsYXRpb24iKQotCi0gICAgcmV0dXJuIGNvbXBpbGVyX3NvCiAKIGNsYXNzIFVuaXhDQ29tcGlsZXIoQ0NvbXBpbGVyKToKIApAQCAtMTY4LDcgKzEwOSw4IEBACiAgICAgZGVmIF9jb21waWxlKHNlbGYsIG9iaiwgc3JjLCBleHQsIGNjX2FyZ3MsIGV4dHJhX3Bvc3RhcmdzLCBwcF9vcHRzKToKICAgICAgICAgY29tcGlsZXJfc28gPSBzZWxmLmNvbXBpbGVyX3NvCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGNvbXBpbGVyX3NvID0gX2Rhcndpbl9jb21waWxlcl9maXh1cChjb21waWxlcl9zbywgY2NfYXJncyArIGV4dHJhX3Bvc3RhcmdzKQorICAgICAgICAgICAgY29tcGlsZXJfc28gPSBfb3N4X3N1cHBvcnQuY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfYXJncyArIGV4dHJhX3Bvc3RhcmdzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNwYXduKGNvbXBpbGVyX3NvICsgY2NfYXJncyArIFtzcmMsICctbycsIG9ial0gKwogICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9wb3N0YXJncykKQEAgLTI0Nyw3ICsxODksNyBAQAogICAgICAgICAgICAgICAgICAgICBsaW5rZXJbaV0gPSBzZWxmLmNvbXBpbGVyX2N4eFtpXQogCiAgICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICAgICAgICBsaW5rZXIgPSBfZGFyd2luX2NvbXBpbGVyX2ZpeHVwKGxpbmtlciwgbGRfYXJncykKKyAgICAgICAgICAgICAgICAgICAgbGlua2VyID0gX29zeF9zdXBwb3J0LmNvbXBpbGVyX2ZpeHVwKGxpbmtlciwgbGRfYXJncykKIAogICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24obGlua2VyICsgbGRfYXJncykKICAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CmluZGV4IGJjZTg0MDIuLjY3ZDgxNjYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKQEAgLTUzLDYgKzUzLDEwIEBACiAgICAgICAgICAgICByZXR1cm4gJ3dpbi1pYTY0JwogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKKyAgICAjIFNldCBmb3IgY3Jvc3MgYnVpbGRzIGV4cGxpY2l0bHkKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKwogICAgIGlmIG9zLm5hbWUgIT0gInBvc2l4IiBvciBub3QgaGFzYXR0cihvcywgJ3VuYW1lJyk6CiAgICAgICAgICMgWFhYIHdoYXQgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZT8gTlQgaXMgSW50ZWwgb3IgQWxwaGEsCiAgICAgICAgICMgTWFjIE9TIGlzIE02OGsgb3IgUFBDLCBldGMuCkBAIC05NCw5NCArOTgsMTAgQEAKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIHJlbGVhc2UgPSBtLmdyb3VwKCkKICAgICBlbGlmIG9zbmFtZVs6Nl0gPT0gImRhcndpbiI6Ci0gICAgICAgICMKLSAgICAgICAgIyBGb3Igb3VyIHB1cnBvc2VzLCB3ZSdsbCBhc3N1bWUgdGhhdCB0aGUgc3lzdGVtIHZlcnNpb24gZnJvbQotICAgICAgICAjIGRpc3R1dGlscycgcGVyc3BlY3RpdmUgaXMgd2hhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0Ci0gICAgICAgICMgdG8uIFRoaXMgbWFrZXMgdGhlIGNvbXBhdGliaWxpdHkgc3RvcnkgYSBiaXQgbW9yZSBzYW5lIGJlY2F1c2UgdGhlCi0gICAgICAgICMgbWFjaGluZSBpcyBnb2luZyB0byBjb21waWxlIGFuZCBsaW5rIGFzIGlmIGl0IHdlcmUKLSAgICAgICAgIyBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQuCi0gICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCi0gICAgICAgIGNmZ3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotCi0gICAgICAgIG1hY3ZlciA9IGNmZ3ZhcnMuZ2V0KCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnKQotCi0gICAgICAgIGlmIDE6Ci0gICAgICAgICAgICAjIEFsd2F5cyBjYWxjdWxhdGUgdGhlIHJlbGVhc2Ugb2YgdGhlIHJ1bm5pbmcgbWFjaGluZSwKLSAgICAgICAgICAgICMgbmVlZGVkIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gYnVpbGQgZmF0IGJpbmFyaWVzIG9yIG5vdC4KLQotICAgICAgICAgICAgbWFjcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgIyBHZXQgdGhlIHN5c3RlbSB2ZXJzaW9uLiBSZWFkaW5nIHRoaXMgcGxpc3QgaXMgYSBkb2N1bWVudGVkCi0gICAgICAgICAgICAjIHdheSB0byBnZXQgdGhlIHN5c3RlbSB2ZXJzaW9uIChzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCi0gICAgICAgICAgICAjIHRoZSBHZXN0YWx0IE1hbmFnZXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgcGxhaW4gZGFyd2luIGJveCwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgIyBiZWhhdmlvdXIuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8a2V5PlByb2R1Y3RVc2VyVmlzaWJsZVZlcnNpb248L2tleT5ccyonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxzdHJpbmc+KC4qPyk8L3N0cmluZz4nLCBmLnJlYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JlbGVhc2UgPSAnLicuam9pbihtLmdyb3VwKDEpLnNwbGl0KCcuJylbOjJdKQotICAgICAgICAgICAgICAgICAgICAjIGVsc2U6IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICBpZiBub3QgbWFjdmVyOgotICAgICAgICAgICAgbWFjdmVyID0gbWFjcmVsZWFzZQotCi0gICAgICAgIGlmIG1hY3ZlcjoKLSAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCi0gICAgICAgICAgICByZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICBvc25hbWUgPSAibWFjb3N4IgotCi0gICAgICAgICAgICBpZiAobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAnLWFyY2gnIGluIGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJywgJycpLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCi0gICAgICAgICAgICAgICAgIyBzeXN0ZW1zIGJlZm9yZSAxMC40Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVHJ5IHRvIGRldGVjdCA0LXdheSB1bml2ZXJzYWwgYnVpbGRzLCB0aG9zZSBoYXZlIG1hY2hpbmUtdHlwZQotICAgICAgICAgICAgICAgICMgJ3VuaXZlcnNhbCcgaW5zdGVhZCBvZiAnZmF0Jy4KLQotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGNmbGFncyA9IGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJykKLQotICAgICAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKLSAgICAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKLQotICAgICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ludGVsJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAndW5pdmVyc2FsJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IG1hY2hpbmUgdmFsdWUgZm9yIGFyY2hzPSVyIiUoYXJjaHMsKSkKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKLSAgICAgICAgICAgICAgICAjIE9uIE9TWCB0aGUgbWFjaGluZSB0eXBlIHJldHVybmVkIGJ5IHVuYW1lIGlzIGFsd2F5cyB0aGUKLSAgICAgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcwotICAgICAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50Ci0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JwotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgotICAgICAgICAgICAgICAgICMgUGljayBhIHNhbmUgbmFtZSBmb3IgdGhlIFBQQyBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGMnCi0KLSAgICAgICAgICAgICAgICAjIFNlZSAnaTM4NicgY2FzZQotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYzY0JworICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0LCBkaXN0dXRpbHMuc3lzY29uZmlnCisgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCiAgICAgcmV0dXJuICIlcy0lcy0lcyIgJSAob3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IGUxODljOGYuLjNhZjA1ZmIgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC00NTgsNyArNDU4LDYgQEAKICAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYuc291cmNlLCBzZWxmLndhbnQsIHNlbGYubGluZW5vLCBzZWxmLmluZGVudCwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjX21zZykpCiAKLQogY2xhc3MgRG9jVGVzdDoKICAgICAiIiIKICAgICBBIGNvbGxlY3Rpb24gb2YgZG9jdGVzdCBleGFtcGxlcyB0aGF0IHNob3VsZCBiZSBydW4gaW4gYSBzaW5nbGUKQEAgLTEzNjcsNyArMTM2Niw3IEBACiAgICAgICAgIG0gPSBzZWxmLl9fTElORUNBQ0hFX0ZJTEVOQU1FX1JFLm1hdGNoKGZpbGVuYW1lKQogICAgICAgICBpZiBtIGFuZCBtLmdyb3VwKCduYW1lJykgPT0gc2VsZi50ZXN0Lm5hbWU6CiAgICAgICAgICAgICBleGFtcGxlID0gc2VsZi50ZXN0LmV4YW1wbGVzW2ludChtLmdyb3VwKCdleGFtcGxlbnVtJykpXQotICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBleGFtcGxlLnNvdXJjZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zYXZlX2xpbmVjYWNoZV9nZXRsaW5lcyhmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCiAKQEAgLTE0MTMsNiArMTQxMiw3IEBACiAgICAgICAgICMgTm90ZSB0aGF0IHRoZSBpbnRlcmFjdGl2ZSBvdXRwdXQgd2lsbCBnbyB0byAqb3VyKgogICAgICAgICAjIHNhdmVfc3Rkb3V0LCBldmVuIGlmIHRoYXQncyBub3QgdGhlIHJlYWwgc3lzLnN0ZG91dDsgdGhpcwogICAgICAgICAjIGFsbG93cyB1cyB0byB3cml0ZSB0ZXN0IGNhc2VzIGZvciB0aGUgc2V0X3RyYWNlIGJlaGF2aW9yLgorICAgICAgICBzYXZlX3RyYWNlID0gc3lzLmdldHRyYWNlKCkKICAgICAgICAgc2F2ZV9zZXRfdHJhY2UgPSBwZGIuc2V0X3RyYWNlCiAgICAgICAgIHNlbGYuZGVidWdnZXIgPSBfT3V0cHV0UmVkaXJlY3RpbmdQZGIoc2F2ZV9zdGRvdXQpCiAgICAgICAgIHNlbGYuZGVidWdnZXIucmVzZXQoKQpAQCAtMTQzMiw2ICsxNDMyLDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAgICAgcGRiLnNldF90cmFjZSA9IHNhdmVfc2V0X3RyYWNlCisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2F2ZV90cmFjZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IHNlbGYuc2F2ZV9saW5lY2FjaGVfZ2V0bGluZXMKICAgICAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHNhdmVfZGlzcGxheWhvb2sKICAgICAgICAgICAgIGlmIGNsZWFyX2dsb2JzOgpAQCAtMTYyOCw4ICsxNjI5LDggQEAKICAgICAgICAgIyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIGRpZmYuCiAgICAgICAgIGlmIHNlbGYuX2RvX2FfZmFuY3lfZGlmZih3YW50LCBnb3QsIG9wdGlvbmZsYWdzKToKICAgICAgICAgICAgICMgU3BsaXQgd2FudCAmIGdvdCBpbnRvIGxpbmVzLgotICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhUcnVlKSAgIyBUcnVlID09IGtlZXAgbGluZSBlbmRzCi0gICAgICAgICAgICBnb3RfbGluZXMgPSBnb3Quc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICAgICAgZ290X2xpbmVzID0gZ290LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICMgVXNlIGRpZmZsaWIgdG8gZmluZCB0aGVpciBkaWZmZXJlbmNlcy4KICAgICAgICAgICAgIGlmIG9wdGlvbmZsYWdzICYgUkVQT1JUX1VESUZGOgogICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZih3YW50X2xpbmVzLCBnb3RfbGluZXMsIG49MikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weSBiL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWY2ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5CkBAIC0wLDAgKzEsMjIxIEBACisiIiIgUm91dGluZXMgZm9yIG1hbmlwdWxhdGluZyBSRkMyMDQ3IGVuY29kZWQgd29yZHMuCisKK1RoaXMgaXMgY3VycmVudGx5IGEgcGFja2FnZS1wcml2YXRlIEFQSSwgYnV0IHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgcHJvbW90aW9uCit0byBhIHB1YmxpYyBBUEkgaWYgdGhlcmUgaXMgZGVtYW5kLgorCisiIiIKKworIyBBbiBlY29kZWQgd29yZCBsb29rcyBsaWtlIHRoaXM6CisjCisjICAgICAgICA9P2NoYXJzZXRbKmxhbmddP2N0ZT9lbmNvZGVkX3N0cmluZz89CisjCisjIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNoYXJzZXQgc2VlIHRoZSBjaGFyc2V0IG1vZHVsZS4gIEhlcmUgaXQgaXMgb25lCisjIG9mIHRoZSBwcmVmZXJyZWQgTUlNRSBjaGFyc2V0IG5hbWVzIChob3BlZnVsbHk7IHlvdSBuZXZlciBrbm93IHdoZW4gcGFyc2luZykuCisjIGN0ZSAoQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZykgaXMgZWl0aGVyICdxJyBvciAnYicgKGlnbm9yaW5nIGNhc2UpLiAgSW4KKyMgdGhlb3J5IG90aGVyIGxldHRlcnMgY291bGQgYmUgdXNlZCBmb3Igb3RoZXIgZW5jb2RpbmdzLCBidXQgaW4gcHJhY3RpY2UgdGhpcworIyAoYWxtb3N0PykgbmV2ZXIgaGFwcGVucy4gIFRoZXJlIGNvdWxkIGJlIGEgcHVibGljIEFQSSBmb3IgYWRkaW5nIGVudHJpZXMKKyMgdG8gdG8gdGhlIENURSB0YWJsZXMsIGJ1dCBZQUdOSSBmb3Igbm93LiAgJ3EnIGlzIFF1b3RlZCBQcmludGFibGUsICdiJyBpcworIyBCYXNlNjQuICBUaGUgbWVhbmluZyBvZiBlbmNvZGVkX3N0cmluZyBzaG91bGQgYmUgb2J2aW91cy4gICdsYW5nJyBpcyBvcHRpb25hbAorIyBhcyBpbmRpY2F0ZWQgYnkgdGhlIGJyYWNrZXRzICh0aGV5IGFyZSBub3QgcGFydCBvZiB0aGUgc3ludGF4KSBidXQgaXMgYWxtb3N0CisjIG5ldmVyIGVuY291bnRlcmVkIGluIHByYWN0aWNlLgorIworIyBUaGUgZ2VuZXJhbCBpbnRlcmZhY2UgZm9yIGEgQ1RFIGRlY29kZXIgaXMgdGhhdCBpdCB0YWtlcyB0aGUgZW5jb2RlZF9zdHJpbmcKKyMgYXMgaXRzIGFyZ3VtZW50LCBhbmQgcmV0dXJucyBhIHR1cGxlIChjdGVfZGVjb2RlZF9zdHJpbmcsIGRlZmVjdHMpLiAgVGhlCisjIGN0ZV9kZWNvZGVkX3N0cmluZyBpcyB0aGUgb3JpZ2luYWwgYmluYXJ5IHRoYXQgd2FzIGVuY29kZWQgdXNpbmcgdGhlCisjIHNwZWNpZmllZCBjdGUuICAnZGVmZWN0cycgaXMgYSBsaXN0IG9mIE1lc3NhZ2VEZWZlY3QgaW5zdGFuY2VzIGluZGljYXRpbmcgYW55CisjIHByb2JsZW1zIGVuY291bnRlcmVkIGR1cmluZyBjb252ZXJzaW9uLiAgJ2NoYXJzZXQnIGFuZCAnbGFuZycgYXJlIHRoZQorIyBjb3JyZXNwb25kaW5nIHN0cmluZ3MgZXh0cmFjdGVkIGZyb20gdGhlIEVXLCBjYXNlIHByZXNlcnZlZC4KKyMKKyMgVGhlIGdlbmVyYWwgaW50ZXJmYWNlIGZvciBhIENURSBlbmNvZGVyIGlzIHRoYXQgaXQgdGFrZXMgYSBiaW5hcnkgc2VxdWVuY2UKKyMgYXMgaW5wdXQgYW5kIHJldHVybnMgdGhlIGN0ZV9lbmNvZGVkX3N0cmluZywgd2hpY2ggaXMgYW4gYXNjaWktb25seSBzdHJpbmcuCisjCisjIEVhY2ggZGVjb2RlciBtdXN0IGFsc28gc3VwcGx5IGEgbGVuZ3RoIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIGJpbmFyeQorIyBzZXF1ZW5jZSBhcyBpdHMgYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIGVuY29kZWQKKyMgc3RyaW5nLgorIworIyBUaGUgbWFpbiBBUEkgZnVuY3Rpb25zIGZvciB0aGUgbW9kdWxlIGFyZSBkZWNvZGUsIHdoaWNoIGNhbGxzIHRoZSBkZWNvZGVyCisjIHJlZmVyZW5jZWQgYnkgdGhlIGN0ZSBzcGVjaWZpZXIsIGFuZCBlbmNvZGUsIHdoaWNoIGFkZHMgdGhlIGFwcHJvcHJpYXRlCisjIFJGQyAyMDQ3ICJjaHJvbWUiIHRvIHRoZSBlbmNvZGVkIHN0cmluZywgYW5kIGNhbiBvcHRpb25hbGx5IGF1dG9tYXRpY2FsbHkKKyMgc2VsZWN0IHRoZSBzaG9ydGVzdCBwb3NzaWJsZSBlbmNvZGluZy4gIFNlZSB0aGVpciBkb2NzdHJpbmdzIGJlbG93IGZvcgorIyBkZXRhaWxzLgorCitpbXBvcnQgcmUKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGZ1bmN0b29scworZnJvbSBzdHJpbmcgaW1wb3J0IGFzY2lpX2xldHRlcnMsIGRpZ2l0cworZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCisKK19fYWxsX18gPSBbJ2RlY29kZV9xJywKKyAgICAgICAgICAgJ2VuY29kZV9xJywKKyAgICAgICAgICAgJ2RlY29kZV9iJywKKyAgICAgICAgICAgJ2VuY29kZV9iJywKKyAgICAgICAgICAgJ2xlbl9xJywKKyAgICAgICAgICAgJ2xlbl9iJywKKyAgICAgICAgICAgJ2RlY29kZScsCisgICAgICAgICAgICdlbmNvZGUnLAorICAgICAgICAgICBdCisKKyMKKyMgUXVvdGVkIFByaW50YWJsZQorIworCisjIHJlZ2V4IGJhc2VkIGRlY29kZXIuCitfcV9ieXRlX3N1YmJlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHJlLmNvbXBpbGUoYnInPShbYS1mQS1GMC05XXsyfSknKS5zdWIsCisgICAgICAgIGxhbWJkYSBtOiBieXRlcyhbaW50KG0uZ3JvdXAoMSksIDE2KV0pKQorCitkZWYgZGVjb2RlX3EoZW5jb2RlZCk6CisgICAgZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZShiJ18nLCBiJyAnKQorICAgIHJldHVybiBfcV9ieXRlX3N1YmJlcihlbmNvZGVkKSwgW10KKworCisjIGRpY3QgbWFwcGluZyBieXRlcyB0byB0aGVpciBlbmNvZGVkIGZvcm0KK2NsYXNzIF9RQnl0ZU1hcChkaWN0KToKKworICAgIHNhZmUgPSBiJy0hKisvJyArIGFzY2lpX2xldHRlcnMuZW5jb2RlKCdhc2NpaScpICsgZGlnaXRzLmVuY29kZSgnYXNjaWknKQorCisgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CisgICAgICAgIGlmIGtleSBpbiBzZWxmLnNhZmU6CisgICAgICAgICAgICBzZWxmW2tleV0gPSBjaHIoa2V5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZltrZXldID0gIj17OjAyWH0iLmZvcm1hdChrZXkpCisgICAgICAgIHJldHVybiBzZWxmW2tleV0KKworX3FfYnl0ZV9tYXAgPSBfUUJ5dGVNYXAoKQorCisjIEluIGhlYWRlcnMgc3BhY2VzIGFyZSBtYXBwZWQgdG8gJ18nLgorX3FfYnl0ZV9tYXBbb3JkKCcgJyldID0gJ18nCisKK2RlZiBlbmNvZGVfcShic3RyaW5nKToKKyAgICByZXR1cm4gJycuam9pbihfcV9ieXRlX21hcFt4XSBmb3IgeCBpbiBic3RyaW5nKQorCitkZWYgbGVuX3EoYnN0cmluZyk6CisgICAgcmV0dXJuIHN1bShsZW4oX3FfYnl0ZV9tYXBbeF0pIGZvciB4IGluIGJzdHJpbmcpCisKKworIworIyBCYXNlNjQKKyMKKworZGVmIGRlY29kZV9iKGVuY29kZWQpOgorICAgIGRlZmVjdHMgPSBbXQorICAgIHBhZF9lcnIgPSBsZW4oZW5jb2RlZCkgJSA0CisgICAgaWYgcGFkX2VycjoKKyAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KCkpCisgICAgICAgIHBhZGRlZF9lbmNvZGVkID0gZW5jb2RlZCArIGInPT09J1s6NC1wYWRfZXJyXQorICAgIGVsc2U6CisgICAgICAgIHBhZGRlZF9lbmNvZGVkID0gZW5jb2RlZAorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUocGFkZGVkX2VuY29kZWQsIHZhbGlkYXRlPVRydWUpLCBkZWZlY3RzCisgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICAjIFNpbmNlIHdlIGhhZCBjb3JyZWN0IHBhZGRpbmcsIHRoaXMgbXVzdCBhbiBpbnZhbGlkIGNoYXIgZXJyb3IuCisgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KCldCisgICAgICAgICMgVGhlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkIGFzIGZhciBhcyBwYWRkaW5nCisgICAgICAgICMgZ29lcywgYnV0IHdlIGRvbid0IGtub3cgaG93IG1hbnkgdGhlcmUgYXJlLiAgU28gd2UnbGwganVzdAorICAgICAgICAjIHRyeSB2YXJpb3VzIHBhZGRpbmcgbGVuZ3RocyB1bnRpbCBzb21ldGhpbmcgd29ya3MuCisgICAgICAgIGZvciBpIGluIDAsIDEsIDIsIDM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoZW5jb2RlZCtiJz0nKmksIHZhbGlkYXRlPUZhbHNlKSwgZGVmZWN0cworICAgICAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICAgICAgICAgIGlmIGk9PTA6CisgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidW5leHBlY3RlZCBiaW5hc2NpaS5FcnJvciIpCisKK2RlZiBlbmNvZGVfYihic3RyaW5nKToKKyAgICByZXR1cm4gYmFzZTY0LmI2NGVuY29kZShic3RyaW5nKS5kZWNvZGUoJ2FzY2lpJykKKworZGVmIGxlbl9iKGJzdHJpbmcpOgorICAgIGdyb3Vwc19vZl8zLCBsZWZ0b3ZlciA9IGRpdm1vZChsZW4oYnN0cmluZyksIDMpCisgICAgIyA0IGJ5dGVzIG91dCBmb3IgZWFjaCAzIGJ5dGVzIChvciBub256ZXJvIGZyYWN0aW9uIHRoZXJlb2YpIGluLgorICAgIHJldHVybiBncm91cHNfb2ZfMyAqIDQgKyAoNCBpZiBsZWZ0b3ZlciBlbHNlIDApCisKKworX2N0ZV9kZWNvZGVycyA9IHsKKyAgICAncSc6IGRlY29kZV9xLAorICAgICdiJzogZGVjb2RlX2IsCisgICAgfQorCitkZWYgZGVjb2RlKGV3KToKKyAgICAiIiJEZWNvZGUgZW5jb2RlZCB3b3JkIGFuZCByZXR1cm4gKHN0cmluZywgY2hhcnNldCwgbGFuZywgZGVmZWN0cykgdHVwbGUuCisKKyAgICBBbiBSRkMgMjA0Ny8yMjQzIGVuY29kZWQgd29yZCBoYXMgdGhlIGZvcm06CisKKyAgICAgICAgPT9jaGFyc2V0Kmxhbmc/Y3RlP2VuY29kZWRfc3RyaW5nPz0KKworICAgIHdoZXJlICcqbGFuZycgbWF5IGJlIG9taXR0ZWQgYnV0IHRoZSBvdGhlciBwYXJ0cyBtYXkgbm90IGJlLgorCisgICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIGV4YWN0bHkgc3VjaCBhIHN0cmluZyAodGhhdCBpcywgaXQgZG9lcyBub3QgY2hlY2sgdGhlCisgICAgc3ludGF4IGFuZCBtYXkgcmFpc2UgZXJyb3JzIGlmIHRoZSBzdHJpbmcgaXMgbm90IHdlbGwgZm9ybWVkKSwgYW5kIHJldHVybnMKKyAgICB0aGUgZW5jb2RlZF9zdHJpbmcgZGVjb2RlZCBmaXJzdCBmcm9tIGl0cyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIGFuZAorICAgIHRoZW4gZnJvbSB0aGUgcmVzdWx0aW5nIGJ5dGVzIGludG8gdW5pY29kZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNoYXJzZXQuICBJZgorICAgIHRoZSBjdGUtZGVjb2RlZCBzdHJpbmcgZG9lcyBub3Qgc3VjY2Vzc2Z1bGx5IGRlY29kZSB1c2luZyB0aGUgc3BlY2lmaWVkCisgICAgY2hhcmFjdGVyIHNldCwgYSBkZWZlY3QgaXMgYWRkZWQgdG8gdGhlIGRlZmVjdHMgbGlzdCBhbmQgdGhlIHVua25vd24gb2N0ZXRzCisgICAgYXJlIHJlcGxhY2VkIGJ5IHRoZSB1bmljb2RlICd1bmtub3duJyBjaGFyYWN0ZXIgXHVGREZGLgorCisgICAgVGhlIHNwZWNpZmllZCBjaGFyc2V0IGFuZCBsYW5ndWFnZSBhcmUgcmV0dXJuZWQuICBUaGUgZGVmYXVsdCBmb3IgbGFuZ3VhZ2UsCisgICAgd2hpY2ggaXMgcmFyZWx5IGlmIGV2ZXIgZW5jb3VudGVyZWQsIGlzIHRoZSBlbXB0eSBzdHJpbmcuCisKKyAgICAiIiIKKyAgICBfLCBjaGFyc2V0LCBjdGUsIGN0ZV9zdHJpbmcsIF8gPSBldy5zcGxpdCgnPycpCisgICAgY2hhcnNldCwgXywgbGFuZyA9IGNoYXJzZXQucGFydGl0aW9uKCcqJykKKyAgICBjdGUgPSBjdGUubG93ZXIoKQorICAgICMgUmVjb3ZlciB0aGUgb3JpZ2luYWwgYnl0ZXMgYW5kIGRvIENURSBkZWNvZGluZy4KKyAgICBic3RyaW5nID0gY3RlX3N0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgYnN0cmluZywgZGVmZWN0cyA9IF9jdGVfZGVjb2RlcnNbY3RlXShic3RyaW5nKQorICAgICMgVHVybiB0aGUgQ1RFIGRlY29kZWQgYnl0ZXMgaW50byB1bmljb2RlLgorICAgIHRyeToKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoY2hhcnNldCkKKyAgICBleGNlcHQgVW5pY29kZUVycm9yOgorICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgiRW5jb2RlZCB3b3JkICIKKyAgICAgICAgICAgICJjb250YWlucyBieXRlcyBub3QgZGVjb2RhYmxlIHVzaW5nIHt9IGNoYXJzZXQiLmZvcm1hdChjaGFyc2V0KSkpCisgICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGlmIGNoYXJzZXQubG93ZXIoKSAhPSAndW5rbm93bi04Yml0JzoKKyAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5DaGFyc2V0RXJyb3IoIlVua25vd24gY2hhcnNldCB7fSAiCisgICAgICAgICAgICAgICAgImluIGVuY29kZWQgd29yZDsgZGVjb2RlZCBhcyB1bmtub3duIGJ5dGVzIi5mb3JtYXQoY2hhcnNldCkpKQorICAgIHJldHVybiBzdHJpbmcsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMKKworCitfY3RlX2VuY29kZXJzID0geworICAgICdxJzogZW5jb2RlX3EsCisgICAgJ2InOiBlbmNvZGVfYiwKKyAgICB9CisKK19jdGVfZW5jb2RlX2xlbmd0aCA9IHsKKyAgICAncSc6IGxlbl9xLAorICAgICdiJzogbGVuX2IsCisgICAgfQorCitkZWYgZW5jb2RlKHN0cmluZywgY2hhcnNldD0ndXRmLTgnLCBlbmNvZGluZz1Ob25lLCBsYW5nPScnKToKKyAgICAiIiJFbmNvZGUgc3RyaW5nIHVzaW5nIHRoZSBDVEUgZW5jb2RpbmcgdGhhdCBwcm9kdWNlcyB0aGUgc2hvcnRlciByZXN1bHQuCisKKyAgICBQcm9kdWNlcyBhbiBSRkMgMjA0Ny8yMjQzIGVuY29kZWQgd29yZCBvZiB0aGUgZm9ybToKKworICAgICAgICA9P2NoYXJzZXQqbGFuZz9jdGU/ZW5jb2RlZF9zdHJpbmc/PQorCisgICAgd2hlcmUgJypsYW5nJyBpcyBvbWl0dGVkIHVubGVzcyB0aGUgJ2xhbmcnIHBhcmFtZXRlciBpcyBnaXZlbiBhIHZhbHVlLgorICAgIE9wdGlvbmFsIGFyZ3VtZW50IGNoYXJzZXQgKGRlZmF1bHRzIHRvIHV0Zi04KSBzcGVjaWZpZXMgdGhlIGNoYXJzZXQgdG8gdXNlCisgICAgdG8gZW5jb2RlIHRoZSBzdHJpbmcgdG8gYmluYXJ5IGJlZm9yZSBDVEUgZW5jb2RpbmcgaXQuICBPcHRpb25hbCBhcmd1bWVudAorICAgICdlbmNvZGluZycgaXMgdGhlIGN0ZSBzcGVjaWZpZXIgZm9yIHRoZSBlbmNvZGluZyB0aGF0IHNob3VsZCBiZSB1c2VkICgncScKKyAgICBvciAnYicpOyBpZiBpdCBpcyBOb25lICh0aGUgZGVmYXVsdCkgdGhlIGVuY29kaW5nIHdoaWNoIHByb2R1Y2VzIHRoZQorICAgIHNob3J0ZXN0IGVuY29kZWQgc2VxdWVuY2UgaXMgdXNlZCwgZXhjZXB0IHRoYXQgJ3EnIGlzIHByZWZlcnJlZCBpZiBpdCBpcyB1cAorICAgIHRvIGZpdmUgY2hhcmFjdGVycyBsb25nZXIuICBPcHRpb25hbCBhcmd1bWVudCAnbGFuZycgKGRlZmF1bHQgJycpIGdpdmVzIHRoZQorICAgIFJGQyAyMjQzIGxhbmd1YWdlIHN0cmluZyB0byBzcGVjaWZ5IGluIHRoZSBlbmNvZGVkIHdvcmQuCisKKyAgICAiIiIKKyAgICBpZiBjaGFyc2V0ID09ICd1bmtub3duLThiaXQnOgorICAgICAgICBic3RyaW5nID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICBlbHNlOgorICAgICAgICBic3RyaW5nID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KQorICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CisgICAgICAgIHFsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ3EnXShic3RyaW5nKQorICAgICAgICBibGVuID0gX2N0ZV9lbmNvZGVfbGVuZ3RoWydiJ10oYnN0cmluZykKKyAgICAgICAgIyBCaWFzIHRvd2FyZCBxLiAgNSBpcyBhcmJpdHJhcnkuCisgICAgICAgIGVuY29kaW5nID0gJ3EnIGlmIHFsZW4gLSBibGVuIDwgNSBlbHNlICdiJworICAgIGVuY29kZWQgPSBfY3RlX2VuY29kZXJzW2VuY29kaW5nXShic3RyaW5nKQorICAgIGlmIGxhbmc6CisgICAgICAgIGxhbmcgPSAnKicgKyBsYW5nCisgICAgcmV0dXJuICI9P3t9e30/e30/e30/PSIuZm9ybWF0KGNoYXJzZXQsIGxhbmcsIGVuY29kaW5nLCBlbmNvZGVkKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MjRlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyOTUzIEBACisiIiJIZWFkZXIgdmFsdWUgcGFyc2VyIGltcGxlbWVudGluZyB2YXJpb3VzIGVtYWlsLXJlbGF0ZWQgUkZDIHBhcnNpbmcgcnVsZXMuCisKK1RoZSBwYXJzaW5nIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBpbXBsZW1lbnQgdmFyaW91cyBlbWFpbCByZWxhdGVkCitwYXJzaW5nIHJ1bGVzLiAgUHJpbmNpcGFsIGFtb25nIHRoZW0gaXMgUkZDIDUzMjIsIHdoaWNoIGlzIHRoZSBmb2xsb3dvbgordG8gUkZDIDI4MjIgYW5kIHByaW1hcmlseSBhIGNsYXJpZmljYXRpb24gb2YgdGhlIGZvcm1lci4gIEl0IGFsc28gaW1wbGVtZW50cworUkZDIDIwNDcgZW5jb2RlZCB3b3JkIGRlY29kaW5nLgorCitSRkMgNTMyMiBnb2VzIHRvIGNvbnNpZGVyYWJsZSB0cm91YmxlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAorUkZDIDgyMiBpbiB0aGUgcGFyc2UgcGhhc2UsIHdoaWxlIGNsZWFuaW5nIHVwIHRoZSBzdHJ1Y3R1cmUgb24gdGhlIGdlbmVyYXRpb24KK3BoYXNlLiAgVGhpcyBwYXJzZXIgc3VwcG9ydHMgY29ycmVjdCBSRkMgNTMyMiBnZW5lcmF0aW9uIGJ5IHRhZ2dpbmcgd2hpdGUgc3BhY2UKK2FzIGZvbGRpbmcgd2hpdGUgc3BhY2Ugb25seSB3aGVuIGZvbGRpbmcgaXMgYWxsb3dlZCBpbiB0aGUgbm9uLW9ic29sZXRlIHJ1bGUKK3NldHMuICBBY3R1YWxseSwgdGhlIHBhcnNlciBpcyBldmVuIG1vcmUgZ2VuZXJvdXMgd2hlbiBhY2NlcHRpbmcgaW5wdXQgdGhhbiBSRkMKKzUzMjIgbWFuZGF0ZXMsIGZvbGxvd2luZyB0aGUgc3Bpcml0IG9mIFBvc3RlbCdzIExhdywgd2hpY2ggUkZDIDUzMjIgZW5jb3VyYWdlcy4KK1doZXJlIHBvc3NpYmxlIGRldmlhdGlvbnMgZnJvbSB0aGUgc3RhbmRhcmQgYXJlIGFubm90YXRlZCBvbiB0aGUgJ2RlZmVjdHMnCithdHRyaWJ1dGUgb2YgdG9rZW5zIHRoYXQgZGV2aWF0ZS4KKworVGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZSBwYXJzZXIgZm9sbG93cyBSRkMgNTMyMiwgYW5kIHVzZXMgaXRzIHRlcm1pbm9sb2d5Cit3aGVyZSB0aGVyZSBpcyBhIGRpcmVjdCBjb3JyZXNwb25kZW5jZS4gIFdoZXJlIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBhCitzb21ld2hhdCBkaWZmZXJlbnQgc3RydWN0dXJlIHRoYW4gdGhhdCB1c2VkIGJ5IHRoZSBmb3JtYWwgZ3JhbW1hciwgbmV3IHRlcm1zCit0aGF0IG1pbWljIHRoZSBjbG9zZXN0IGV4aXN0aW5nIHRlcm1zIGFyZSB1c2VkLiAgVGh1cywgaXQgcmVhbGx5IGhlbHBzIHRvIGhhdmUKK2EgY29weSBvZiBSRkMgNTMyMiBoYW5keSB3aGVuIHN0dWR5aW5nIHRoaXMgY29kZS4KKworSW5wdXQgdG8gdGhlIHBhcnNlciBpcyBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5mb2xkZWQgYWNjb3JkaW5nIHRvCitSRkMgNTMyMiBydWxlcy4gIEFjY29yZGluZyB0byB0aGUgUkZDIHRoaXMgdW5mb2xkaW5nIGlzIHRoZSB2ZXJ5IGZpcnN0IHN0ZXAsIGFuZAordGhpcyBwYXJzZXIgbGVhdmVzIHRoZSB1bmZvbGRpbmcgc3RlcCB0byBhIGhpZ2hlciBsZXZlbCBtZXNzYWdlIHBhcnNlciwgd2hpY2gKK3dpbGwgaGF2ZSBhbHJlYWR5IGRldGVjdGVkIHRoZSBsaW5lIGJyZWFrcyB0aGF0IG5lZWQgdW5mb2xkaW5nIHdoaWxlCitkZXRlcm1pbmluZyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgZWFjaCBoZWFkZXIuCisKK1RoZSBvdXRwdXQgb2YgdGhlIHBhcnNlciBpcyBhIFRva2VuTGlzdCBvYmplY3QsIHdoaWNoIGlzIGEgbGlzdCBzdWJjbGFzcy4gIEEKK1Rva2VuTGlzdCBpcyBhIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZS4gIFRoZSB0ZXJtaW5hbCBub2RlcyBvZiB0aGUgc3RydWN0dXJlCithcmUgVGVybWluYWwgb2JqZWN0cywgd2hpY2ggYXJlIHN1YmNsYXNzZXMgb2Ygc3RyLiAgVGhlc2UgZG8gbm90IGNvcnJlc3BvbmQKK2RpcmVjdGx5IHRvIHRlcm1pbmFsIG9iamVjdHMgaW4gdGhlIGZvcm1hbCBncmFtbWFyLCBidXQgYXJlIGluc3RlYWQgbW9yZQorcHJhY3RpY2FsIGhpZ2hlciBsZXZlbCBjb21iaW5hdGlvbnMgb2YgdHJ1ZSB0ZXJtaW5hbHMuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICd2YWx1ZScgYXR0cmlidXRlLCB3aGljaCBwcm9kdWNlcyB0aGUKK3NlbWFudGljYWxseSBtZWFuaW5nZnVsIHZhbHVlIG9mIHRoYXQgcGFydCBvZiB0aGUgcGFyc2Ugc3VidHJlZS4gIFRoZSB2YWx1ZSBvZgorYWxsIHdoaXRlc3BhY2UgdG9rZW5zIChubyBtYXR0ZXIgaG93IG1hbnkgc3ViLXRva2VucyB0aGV5IG1heSBjb250YWluKSBpcyBhCitzaW5nbGUgc3BhY2UsIGFzIHBlciB0aGUgUkZDIHJ1bGVzLiAgVGhpcyBpbmNsdWRlcyAnQ0ZXUycsIHdoaWNoIGlzIGhlcmVpbgoraW5jbHVkZWQgaW4gdGhlIGdlbmVyYWwgY2xhc3Mgb2Ygd2hpdGVzcGFjZSB0b2tlbnMuICBUaGVyZSBpcyBvbmUgZXhjZXB0aW9uIHRvCit0aGUgcnVsZSB0aGF0IHdoaXRlc3BhY2UgdG9rZW5zIGFyZSBjb2xsYXBzZWQgaW50byBzaW5nbGUgc3BhY2VzIGluIHZhbHVlczogaW4KK3RoZSB2YWx1ZSBvZiBhICdiYXJlLXF1b3RlZC1zdHJpbmcnIChhIHF1b3RlZC1zdHJpbmcgd2l0aCBubyBsZWFkaW5nIG9yCit0cmFpbGluZyB3aGl0ZXNwYWNlKSwgYW55IHdoaXRlc3BhY2UgdGhhdCBhcHBlYXJlZCBiZXR3ZWVuIHRoZSBxdW90YXRpb24gbWFya3MKK2lzIHByZXNlcnZlZCBpbiB0aGUgcmV0dXJuZWQgdmFsdWUuICBOb3RlIHRoYXQgaW4gYWxsIFRlcm1pbmFsIHN0cmluZ3MgcXVvdGVkCitwYWlycyBhcmUgdHVybmVkIGludG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLgorCitBbGwgVG9rZW5MaXN0IGFuZCBUZXJtaW5hbCBvYmplY3RzIGFsc28gaGF2ZSBhIHN0cmluZyB2YWx1ZSwgd2hpY2ggYXR0ZW1wdHMgdG8KK2JlIGEgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gb2YgdGhlIFJGQy1jb21wbGlhbnQgZm9ybSBvZiB0aGUgc3Vic3RyaW5nIHRoYXQKK3Byb2R1Y2VkIHRoZSBwYXJzZWQgc3VidHJlZSwgaW5jbHVkaW5nIG1pbmltYWwgdXNlIG9mIHF1b3RlZCBwYWlyIHF1b3RpbmcuCitXaGl0ZXNwYWNlIHJ1bnMgYXJlIG5vdCBjb2xsYXBzZWQuCisKK0NvbW1lbnQgdG9rZW5zIGFsc28gaGF2ZSBhICdjb250ZW50JyBhdHRyaWJ1dGUgcHJvdmlkaW5nIHRoZSBzdHJpbmcgZm91bmQKK2JldHdlZW4gdGhlIHBhcmVucyAoaW5jbHVkaW5nIGFueSBuZXN0ZWQgY29tbWVudHMpIHdpdGggd2hpdGVzcGFjZSBwcmVzZXJ2ZWQuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICdkZWZlY3RzJyBhdHRyaWJ1dGUgd2hpY2ggaXMgYQorcG9zc2libHkgZW1wdHkgbGlzdCBhbGwgb2YgdGhlIGRlZmVjdHMgZm91bmQgd2hpbGUgY3JlYXRpbmcgdGhlIHRva2VuLiAgRGVmZWN0cworbWF5IGFwcGVhciBvbiBhbnkgdG9rZW4gaW4gdGhlIHRyZWUsIGFuZCBhIGNvbXBvc2l0ZSBsaXN0IG9mIGFsbCBkZWZlY3RzIGluIHRoZQorc3VidHJlZSBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgJ2FsbF9kZWZlY3RzJyBhdHRyaWJ1dGUgb2YgYW55IG5vZGUuICAoRm9yCitUZXJtaW5hbCBub3RlcyB4LmRlZmVjdHMgPT0geC5hbGxfZGVmZWN0cy4pCisKK0VhY2ggb2JqZWN0IGluIGEgcGFyc2UgdHJlZSBpcyBjYWxsZWQgYSAndG9rZW4nLCBhbmQgZWFjaCBoYXMgYSAndG9rZW5fdHlwZScKK2F0dHJpYnV0ZSB0aGF0IGdpdmVzIHRoZSBuYW1lIGZyb20gdGhlIFJGQyA1MzIyIGdyYW1tYXIgdGhhdCBpdCByZXByZXNlbnRzLgorTm90IGFsbCBSRkMgNTMyMiBub2RlcyBhcmUgcHJvZHVjZWQsIGFuZCB0aGVyZSBpcyBvbmUgbm9uLVJGQyA1MzIyIG5vZGUgdGhhdAorbWF5IGJlIHByb2R1Y2VkOiAncHRleHQnLiAgQSAncHRleHQnIGlzIGEgc3RyaW5nIG9mIHByaW50YWJsZSBhc2NpaSBjaGFyYWN0ZXJzLgorSXQgaXMgcmV0dXJuZWQgaW4gcGxhY2Ugb2YgbGlzdHMgb2YgKGN0ZXh0L3F1b3RlZC1wYWlyKSBhbmQKKyhxdGV4dC9xdW90ZWQtcGFpcikuCisKK1hYWDogcHJvdmlkZSBjb21wbGV0ZSBsaXN0IG9mIHRva2VuIHR5cGVzLgorIiIiCisKK2ltcG9ydCByZQoraW1wb3J0IHVybGxpYiAgICMgRm9yIHVybGxpYi5wYXJzZS51bnF1b3RlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLCBPcmRlcmVkRGljdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCisKKyMKKyMgVXNlZnVsIGNvbnN0YW50cyBhbmQgZnVuY3Rpb25zCisjCisKK1dTUCA9IHNldCgnIFx0JykKK0NGV1NfTEVBREVSID0gV1NQIHwgc2V0KCcoJykKK1NQRUNJQUxTID0gc2V0KHInKCk8PkAsOjsuXCJbXScpCitBVE9NX0VORFMgPSBTUEVDSUFMUyB8IFdTUAorRE9UX0FUT01fRU5EUyA9IEFUT01fRU5EUyAtIHNldCgnLicpCisjICcuJywgJyInLCBhbmQgJygnIGRvIG5vdCBlbmQgcGhyYXNlcyBpbiBvcmRlciB0byBzdXBwb3J0IG9icy1waHJhc2UKK1BIUkFTRV9FTkRTID0gU1BFQ0lBTFMgLSBzZXQoJy4iKCcpCitUU1BFQ0lBTFMgPSAoU1BFQ0lBTFMgfCBzZXQoJy8/PScpKSAtIHNldCgnLicpCitUT0tFTl9FTkRTID0gVFNQRUNJQUxTIHwgV1NQCitBU1BFQ0lBTFMgPSBUU1BFQ0lBTFMgfCBzZXQoIionJSIpCitBVFRSSUJVVEVfRU5EUyA9IEFTUEVDSUFMUyB8IFdTUAorRVhURU5ERURfQVRUUklCVVRFX0VORFMgPSBBVFRSSUJVVEVfRU5EUyAtIHNldCgnJScpCisKK2RlZiBxdW90ZV9zdHJpbmcodmFsdWUpOgorICAgIHJldHVybiAnIicrc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgnIicsIHInXCInKSsnIicKKworIworIyBBY2N1bXVsYXRvciBmb3IgaGVhZGVyIGZvbGRpbmcKKyMKKworY2xhc3MgX0ZvbGRlZDoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhsZW4sIHBvbGljeSk6CisgICAgICAgIHNlbGYubWF4bGVuID0gbWF4bGVuCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgIHNlbGYubGFzdGxlbiA9IDAKKyAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBUcnVlCisgICAgICAgIHNlbGYuZG9uZSA9IFtdCisgICAgICAgIHNlbGYuY3VycmVudCA9IFtdCisKKyAgICBkZWYgbmV3bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5kb25lLmV4dGVuZChzZWxmLmN1cnJlbnQpCisgICAgICAgIHNlbGYuZG9uZS5hcHBlbmQoc2VsZi5wb2xpY3kubGluZXNlcCkKKyAgICAgICAgc2VsZi5jdXJyZW50LmNsZWFyKCkKKyAgICAgICAgc2VsZi5sYXN0bGVuID0gMAorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmN1cnJlbnQ6CisgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHNlbGYuZG9uZSkKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgc3Rva2VuKToKKyAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisKKyAgICBkZWYgYXBwZW5kX2lmX2ZpdHMoc2VsZiwgdG9rZW4sIHN0b2tlbj1Ob25lKToKKyAgICAgICAgaWYgc3Rva2VuIGlzIE5vbmU6CisgICAgICAgICAgICBzdG9rZW4gPSBzdHIodG9rZW4pCisgICAgICAgIGwgPSBsZW4oc3Rva2VuKQorICAgICAgICBpZiBzZWxmLnN0aWNreXNwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuID0gbGVuKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICBpZiBzZWxmLmxhc3RsZW4gKyBzdGlja3lzcGFjZV9sZW4gKyBsIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gc3RpY2t5c3BhY2VfbGVuCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICAgICAgc2VsZi5sYXN0bGVuICs9IGwKKyAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgdG9rZW4uaGFzX2Z3czoKKyAgICAgICAgICAgICAgICB3cyA9IHRva2VuLnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICAgICAgaWYgd3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgKz0gc3RyKHdzKQorICAgICAgICAgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gKz0gbGVuKHdzKQorICAgICAgICAgICAgICAgIHRva2VuLl9mb2xkKHNlbGYpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHN0aWNreXNwYWNlX2xlbiBhbmQgbCArIDEgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICAgICAgbWFyZ2luID0gc2VsZi5tYXhsZW4gLSBsCisgICAgICAgICAgICAgICAgaWYgMCA8IG1hcmdpbiA8IHN0aWNreXNwYWNlX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgdHJpbSA9IHN0aWNreXNwYWNlX2xlbiAtIG1hcmdpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2VbOnRyaW1dKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gc2VsZi5zdGlja3lzcGFjZVt0cmltOl0KKyAgICAgICAgICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuID0gdHJpbQorICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgICAgIHNlbGYubGFzdGxlbiA9IGwgKyBzdGlja3lzcGFjZV9sZW4KKyAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuZmlyc3RsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICBzZWxmLmZpcnN0bGluZSA9IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLmxhc3RsZW4gKyBsIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gbAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbCA8IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgc2VsZi5sYXN0bGVuID0gbAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyMKKyMgVG9rZW5MaXN0IGFuZCBpdHMgc3ViY2xhc3NlcworIworCitjbGFzcyBUb2tlbkxpc3QobGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICd7fSh7fSknLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbih4LnZhbHVlIGZvciB4IGluIHNlbGYgaWYgeC52YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1bSgoeC5hbGxfZGVmZWN0cyBmb3IgeCBpbiBzZWxmKSwgc2VsZi5kZWZlY3RzKQorCisgICAgIworICAgICMgRm9sZGluZyBBUEkKKyAgICAjCisgICAgIyBwYXJ0cygpOgorICAgICMKKyAgICAjIHJldHVybiBhIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IGNvbnN0aXR1dGUgdGhlICJoaWdoZXIgbGV2ZWwgc3ludGFjdGljCisgICAgIyBvYmplY3RzIiBzcGVjaWZpZWQgYnkgdGhlIFJGQyBhcyB0aGUgYmVzdCBwbGFjZXMgdG8gZm9sZCBhIGhlYWRlciBsaW5lLgorICAgICMgVGhlIHJldHVybmVkIG9iamVjdHMgbXVzdCBpbmNsdWRlIGxlYWRpbmcgZm9sZGluZyB3aGl0ZSBzcGFjZSwgZXZlbiBpZgorICAgICMgdGhpcyBtZWFucyBtdXRhdGluZyB0aGUgdW5kZXJseWluZyBwYXJzZSB0cmVlIG9mIHRoZSBvYmplY3QuICBFYWNoIG9iamVjdAorICAgICMgaXMgb25seSByZXNwb25zaWJsZSBmb3IgcmV0dXJuaW5nICppdHMqIHBhcnRzLCBhbmQgc2hvdWxkIG5vdCBkcmlsbCBkb3duCisgICAgIyB0byBhbnkgbG93ZXIgbGV2ZWwgZXhjZXB0IGFzIHJlcXVpcmVkIHRvIG1lZXQgdGhlIGxlYWRpbmcgZm9sZGluZyB3aGl0ZQorICAgICMgc3BhY2UgY29uc3RyYWludC4KKyAgICAjCisgICAgIyBfZm9sZChmb2xkZWQpOgorICAgICMKKyAgICAjICAgZm9sZGVkOiB0aGUgcmVzdWx0IGFjY3VtdWxhdG9yLiAgVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiBfRm9sZGVkLgorICAgICMgICAgICAgKFhYWDogSSBoYXZlbid0IGZpbmlzaGVkIGZhY3RvcmluZyB0aGlzIG91dCB5ZXQsIHRoZSBmb2xkaW5nIGNvZGUKKyAgICAjICAgICAgIHByZXR0eSBtdWNoIHVzZXMgdGhpcyBhcyBhIHN0YXRlIG9iamVjdC4pIFdoZW4gdGhlIGZvbGRlZC5jdXJyZW50CisgICAgIyAgICAgICBjb250YWlucyBhcyBtdWNoIHRleHQgYXMgd2lsbCBmaXQsIHRoZSBfZm9sZCBtZXRob2Qgc2hvdWxkIGNhbGwKKyAgICAjICAgICAgIGZvbGRlZC5uZXdsaW5lLgorICAgICMgIGZvbGRlZC5sYXN0bGVuOiB0aGUgY3VycmVudCBsZW5ndGggb2YgdGhlIHRlc3Qgc3RvcmVkIGluIGZvbGRlZC5jdXJyZW50LgorICAgICMgIGZvbGRlZC5tYXhsZW46IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF5IGFwcGVhciBvbiBhCisgICAgIyAgICAgICBmb2xkZWQgbGluZS4gIERpZmZlcnMgZnJvbSB0aGUgcG9saWN5IHNldHRpbmcgaW4gdGhhdCAibm8gbGltaXQiIGlzCisgICAgIyAgICAgICByZXByZXNlbnRlZCBieSAraW5mLCB3aGljaCBtZWFucyBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgdHJpdmlhbGx5CisgICAgIyAgICAgICBsb2dpY2FsIGZhc2hpb24gaW4gY29tcGFyaXNvbnMuCisgICAgIworICAgICMgQ3VycmVudGx5IG5vIHN1YmNsYXNzZXMgaW1wbGVtZW50IHBhcnRzLCBhbmQgSSB0aGluayB0aGlzIHdpbGwgcmVtYWluCisgICAgIyB0cnVlLiAgQSBzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIGltcGxlbWVudCBfZm9sZCB3aGVuIHRoZSBnZW5lcmljIHZlcnNpb24KKyAgICAjIGlzbid0IHN1ZmZpY2llbnQuICBfZm9sZCB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgcHJpbWFyaWx5IHdoZW4gaXQgaXMKKyAgICAjIHBvc3NpYmxlIGZvciBlbmNvZGVkIHdvcmRzIHRvIGFwcGVhciBpbiB0aGUgc3BlY2lhbGl6ZWQgdG9rZW4tbGlzdCwgc2luY2UKKyAgICAjIHRoZXJlIGlzIG5vIGdlbmVyaWMgYWxnb3JpdGhtIHRoYXQgY2FuIGtub3cgd2hlcmUgZXhhY3RseSB0aGUgZW5jb2RlZAorICAgICMgd29yZHMgYXJlIGFsbG93ZWQuICBBIF9mb2xkIGltcGxlbWVudGF0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nCisgICAgIyBsaW5lcyBpbiB0aGUgc2FtZSBnZW5lcmFsIHdheSB0aGF0IHRoZSB0b3AgbGV2ZWwgX2ZvbGQgZG9lcy4gSXQgbWF5LCBhbmQKKyAgICAjIHNob3VsZCwgY2FsbCB0aGUgX2ZvbGQgbWV0aG9kIG9mIHN1Yi1vYmplY3RzIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIHRoYXQKKyAgICAjIG9mIHRoZSB0b3AgbGV2ZWwgX2ZvbGQuCisgICAgIworICAgICMgWFhYOiBJJ20gaG9waW5nIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gZmFjdG9yIHRoZSBleGlzdGluZyBjb2RlIGZ1cnRoZXIKKyAgICAjIHRvIHJlZHVjZSByZWR1bmRhbmN5IGFuZCBtYWtlIHRoZSBsb2dpYyBjbGVhcmVyLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRzKHNlbGYpOgorICAgICAgICBrbGFzcyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIHRoaXMgPSBbXQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnN0YXJ0c3dpdGhfZndzKCk6CisgICAgICAgICAgICAgICAgaWYgdGhpczoKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpc1swXSBpZiBsZW4odGhpcyk9PTEgZWxzZSBrbGFzcyh0aGlzKQorICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCkKKyAgICAgICAgICAgIGVuZF93cyA9IHRva2VuLnBvcF90cmFpbGluZ193cygpCisgICAgICAgICAgICB0aGlzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGlmIGVuZF93czoKKyAgICAgICAgICAgICAgICB5aWVsZCBrbGFzcyh0aGlzKQorICAgICAgICAgICAgICAgIHRoaXMgPSBbZW5kX3dzXQorICAgICAgICBpZiB0aGlzOgorICAgICAgICAgICAgeWllbGQgdGhpc1swXSBpZiBsZW4odGhpcyk9PTEgZWxzZSBrbGFzcyh0aGlzKQorCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5zdGFydHN3aXRoX2Z3cygpCisKKyAgICBkZWYgcG9wX2xlYWRpbmdfZndzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2Z3cyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wb3AoMCkKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ucG9wX2xlYWRpbmdfZndzKCkKKworICAgIGRlZiBwb3BfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIGlmIHNlbGZbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9wKC0xKQorICAgICAgICByZXR1cm4gc2VsZlstMV0ucG9wX3RyYWlsaW5nX3dzKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoYXNfZndzKHNlbGYpOgorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgcGFydC5oYXNfZndzOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmhhc19sZWFkaW5nX2NvbW1lbnQoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICBjb21tZW50cyA9IFtdCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgY29tbWVudHMuZXh0ZW5kKHRva2VuLmNvbW1lbnRzKQorICAgICAgICByZXR1cm4gY29tbWVudHMKKworICAgIGRlZiBmb2xkKHNlbGYsICosIHBvbGljeSk6CisgICAgICAgICMgbWF4X2xpbmVfbGVuZ3RoIDAvTm9uZSBtZWFucyBubyBsaW1pdCwgaWU6IGluZmluaXRlbHkgbG9uZy4KKyAgICAgICAgbWF4bGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCBvciBmbG9hdCgiK2luZiIpCisgICAgICAgIGZvbGRlZCA9IF9Gb2xkZWQobWF4bGVuLCBwb2xpY3kpCisgICAgICAgIHNlbGYuX2ZvbGQoZm9sZGVkKQorICAgICAgICBmb2xkZWQuZmluYWxpemUoKQorICAgICAgICByZXR1cm4gc3RyKGZvbGRlZCkKKworICAgIGRlZiBhc19lbmNvZGVkX3dvcmQoc2VsZiwgY2hhcnNldCk6CisgICAgICAgICMgVGhpcyB3b3JrcyBvbmx5IGZvciB0aGluZ3MgcmV0dXJuZWQgYnkgJ3BhcnRzJywgd2hpY2ggaW5jbHVkZQorICAgICAgICAjIHRoZSBsZWFkaW5nIGZ3cywgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkLgorICAgICAgICByZXMgPSBbXQorICAgICAgICB3cyA9IHNlbGYucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgaWYgd3M6CisgICAgICAgICAgICByZXMuYXBwZW5kKHdzKQorICAgICAgICB0cmFpbGVyID0gc2VsZi5wb3AoLTEpIGlmIHNlbGZbLTFdLnRva2VuX3R5cGU9PSdmd3MnIGVsc2UgJycKKyAgICAgICAgcmVzLmFwcGVuZChfZXcuZW5jb2RlKHN0cihzZWxmKSwgY2hhcnNldCkpCisgICAgICAgIHJlcy5hcHBlbmQodHJhaWxlcikKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQocGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIHBvbGljeSkpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgorICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoaXMgc2hvdWxkIGJlIGEgcG9saWN5IHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIGZvbGRlZC5wb2xpY3kpCisgICAgICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQsIHRzdHIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgaWYgYW55IGFuZCBtYWtlIGl0IHN0aWNreSwgdG8KKyAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgd3MgPSBwYXJ0LnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICBpZiB3cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cihwYXJ0LnBvcCgwKSkKKyAgICAgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcGFydC5fZm9sZChmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgVGhlcmUgYXJlIG5vIGZvbGQgcG9pbnRzIGluIHRoaXMgb25lOyBpdCBpcyB0b28gbG9uZyBmb3IgYSBzaW5nbGUKKyAgICAgICAgICAgICMgbGluZSBhbmQgY2FuJ3QgYmUgc3BsaXQuLi53ZSBqdXN0IGhhdmUgdG8gcHV0IGl0IG9uIGl0cyBvd24gbGluZS4KKyAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQodHN0cikKKyAgICAgICAgICAgIGZvbGRlZC5uZXdsaW5lKCkKKworICAgIGRlZiBwcHJpbnQoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgcHJpbnQoJ1xuJy5qb2luKHNlbGYuX3BwKGluZGVudD0nJykpKQorCisgICAgZGVmIHBwc3RyKHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5fcHAoaW5kZW50PScnKSkKKworICAgIGRlZiBfcHAoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgeWllbGQgJ3t9e30ve30oJy5mb3JtYXQoCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSkKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0b2tlbiwgJ19wcCcpOgorICAgICAgICAgICAgICAgIHlpZWxkIChpbmRlbnQgKyAnICAgICEhIGludmFsaWQgZWxlbWVudCBpbiB0b2tlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpc3Q6IHshcn0nLmZvcm1hdCh0b2tlbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHRva2VuLl9wcChpbmRlbnQrJyAgICAnKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICBpZiBzZWxmLmRlZmVjdHM6CisgICAgICAgICAgICBleHRyYSA9ICcgRGVmZWN0czoge30nLmZvcm1hdChzZWxmLmRlZmVjdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHRyYSA9ICcnCisgICAgICAgIHlpZWxkICd7fSl7fScuZm9ybWF0KGluZGVudCwgZXh0cmEpCisKKworY2xhc3MgV2hpdGVTcGFjZVRva2VuTGlzdChUb2tlbkxpc3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJyAnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbeC5jb250ZW50IGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nY29tbWVudCddCisKKworY2xhc3MgVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3Vuc3RydWN0dXJlZCcKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBpZiBhbnkoeC50b2tlbl90eXBlPT0nZW5jb2RlZC13b3JkJyBmb3IgeCBpbiBzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9mb2xkX2VuY29kZWQoZm9sZGVkKQorICAgICAgICAjIEhlcmUgd2UgY2FuIGhhdmUgZWl0aGVyIGEgcHVyZSBBU0NJSSBzdHJpbmcgdGhhdCBtYXkgb3IgbWF5IG5vdAorICAgICAgICAjIGhhdmUgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgYnl0ZXMsIG9yIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICBpc19ldyA9IEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSd2ZSBhbHJlYWR5IGRvbmUgYW4gRVcsIGNvbWJpbmUgdGhpcyBvbmUgd2l0aCBpdAorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZXJlJ3Mgcm9vbS4KKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBnZXRfdW5zdHJ1Y3R1cmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0rW3RzdHJdKSkuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgICAgIG9sZGxhc3RsZW4gPSBzdW0obGVuKHgpIGZvciB4IGluIGZvbGRlZC5jdXJyZW50WzpsYXN0X2V3XSkKKyAgICAgICAgICAgICAgICAgICAgc2NodW5rID0gc3RyKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBsY2h1bmsgPSBsZW4oc2NodW5rKQorICAgICAgICAgICAgICAgICAgICBpZiBvbGRsYXN0bGVuICsgbGNodW5rIDw9IGZvbGRlZC5tYXhsZW46CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gb2xkbGFzdGxlbiArIGxjaHVuaworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICBpc19ldyA9IFRydWUKKyAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0LCB0c3RyKToKKyAgICAgICAgICAgICAgICBpZiBpc19ldzoKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihmb2xkZWQuY3VycmVudCkgLSAxCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzX2V3IG9yIGxhc3RfZXc6CisgICAgICAgICAgICAgICAgIyBJdCdzIHRvbyBiaWcgdG8gZml0IG9uIHRoZSBsaW5lLCBidXQgc2luY2Ugd2UndmUKKyAgICAgICAgICAgICAgICAjIGdvdCBlbmNvZGVkIHdvcmRzIHdlIGNhbiB1c2UgZW5jb2RlZCB3b3JkIGZvbGRpbmcuCisgICAgICAgICAgICAgICAgcGFydC5fZm9sZF9hc19ldyhmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBhbnkgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICB3cyA9IHBhcnQucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgIGlmIHdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cih3cykKKyAgICAgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcGFydC5mb2xkKGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBJdCBjYW4ndCBiZSBzcGxpdC4uLndlIGp1c3QgaGF2ZSB0byBwdXQgaXQgb24gaXRzIG93biBsaW5lLgorICAgICAgICAgICAgZm9sZGVkLmFwcGVuZCh0c3RyKQorICAgICAgICAgICAgZm9sZGVkLm5ld2xpbmUoKQorICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBzcGFydCA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNwYXJ0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3BhcnQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihyZXMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGwgPSBnZXRfdW5zdHJ1Y3R1cmVkKCcnLmpvaW4ocmVzW2xhc3RfZXc6XSArIFtzcGFydF0pKQorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHRsLmFzX2VuY29kZWRfd29yZCgpKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKworY2xhc3MgUGhyYXNlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3BocmFzZScKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICAjIEFzIHdpdGggVW5zdHJ1Y3R1cmVkLCB3ZSBjYW4gaGF2ZSBwdXJlIEFTQ0lJIHdpdGggb3Igd2l0aG91dAorICAgICAgICAjIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGVkIGJ5dGVzLCBvciB3ZSBjb3VsZCBoYXZlIHVuaWNvZGUuICBCdXQgdGhpcworICAgICAgICAjIGNhc2UgaXMgbW9yZSBjb21wbGljYXRlZCwgc2luY2Ugd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhlIHZhcmlvdXMKKyAgICAgICAgIyBzdWItdG9rZW4gdHlwZXMgYW5kIGhvdyB0aGV5IGNhbiBiZSBjb21wb3NlZCBpbiB0aGUgZmFjZSBvZgorICAgICAgICAjIHVuaWNvZGUtdGhhdC1uZWVkcy1DVEUtZW5jb2RpbmcsIGFuZCB0aGUgZmFjdCB0aGF0IGlmIGEgdG9rZW4gYQorICAgICAgICAjIGNvbW1lbnQgdGhhdCBiZWNvbWVzIGEgYmFycmllciBhY3Jvc3Mgd2hpY2ggd2UgY2FuJ3QgY29tcG9zZSBlbmNvZGVkCisgICAgICAgICMgd29yZHMuCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICBoYXNfZXcgPSBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIG5vdCBOb25lIGFuZCBub3QgcGFydC5oYXNfbGVhZGluZ19jb21tZW50KCk6CisgICAgICAgICAgICAgICAgICAgICMgV2UndmUgYWxyZWFkeSBkb25lIGFuIEVXLCBsZXQncyBzZWUgaWYgd2UgY2FuIGNvbWJpbmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG9uZSB3aXRoIGl0LiAgVGhlIGxhc3RfZXcgbG9naWMgZW5zdXJlcyB0aGF0IGFsbCB3ZQorICAgICAgICAgICAgICAgICAgICAjIGhhdmUgYXQgdGhpcyBwb2ludCBpcyBhdG9tcywgbm8gY29tbWVudHMgb3IgcXVvdGVkCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5ncy4gIFNvIHdlIGNhbiB0cmVhdCB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgICAgICMgZW5jb2RlZCB3b3JkIGFuZCB0aGUgY29udGVudCBvZiB0aGlzIHRva2VuIGFzCisgICAgICAgICAgICAgICAgICAgICMgdW5zdHJ1Y3R1cmVkIHRleHQsIGFuZCB0aGluZ3Mgd2lsbCB3b3JrIGNvcnJlY3RseS4gIEJ1dAorICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmUgdG8gc3RyaXAgb2ZmIGFueSB0cmFpbGluZyBjb21tZW50IG9uIHRoaXMgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCwgYW5kIGlmIGl0IGlzIGEgcXVvdGVkIHN0cmluZyB3ZSBoYXZlIHRvIHB1bGwgb3V0CisgICAgICAgICAgICAgICAgICAgICMgdGhlIGNvbnRlbnQgKHdlJ3JlIGVuY29kaW5nIGl0LCBzbyBpdCBubyBsb25nZXIgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBiZSBxdW90ZWQpLgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJ0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyBhbmQgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHBhcnQucG9wKC0xKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIGksIHRva2VuIGluIGVudW1lcmF0ZShwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydFtpXSA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCh0b2tlbls6XSkKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBnZXRfdW5zdHJ1Y3R1cmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0rW3RzdHJdKSkuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgICAgIHNjaHVuayA9IHN0cihjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgbGNodW5rID0gbGVuKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyArIGxjaHVuayA8PSBmb2xkZWQubWF4bGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmFwcGVuZChzY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQubGFzdGxlbiA9IHN1bShsZW4oeCkgZm9yIHggaW4gZm9sZGVkLmN1cnJlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgICAgICBoYXNfZXcgPSBUcnVlCisgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCwgdHN0cik6CisgICAgICAgICAgICAgICAgaWYgaGFzX2V3IGFuZCBub3QgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihmb2xkZWQuY3VycmVudCkgLSAxCisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0LmNvbW1lbnRzIG9yIHBhcnQudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICMgSWYgYSBjb21tZW50IGlzIGludm9sdmVkIHdlIGNhbid0IGNvbWJpbmUgRVdzLiAgQW5kIGlmIGEKKyAgICAgICAgICAgICAgICAgICAgIyBxdW90ZWQgc3RyaW5nIGlzIGludm9sdmVkLCBpdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHRvCisgICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvIGNvbWJpbmUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydC5fZm9sZChmb2xkZWQpCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBpc19ldyA9IEZhbHNlCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBzcGFydCA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNwYXJ0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3BhcnQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlzX2V3ID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKHJlcykKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICBlbGlmIG5vdCBwYXJ0Lmhhc19sZWFkaW5nX2NvbW1lbnQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFydFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycgYW5kIHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSBwYXJ0LnBvcCgtMSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciBpLCB0b2tlbiBpbiBlbnVtZXJhdGUocGFydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRbaV0gPSBVbnN0cnVjdHVyZWRUb2tlbkxpc3QodG9rZW5bOl0pCisgICAgICAgICAgICAgICAgICAgIHRsID0gZ2V0X3Vuc3RydWN0dXJlZCgnJy5qb2luKHJlc1tsYXN0X2V3Ol0gKyBbc3BhcnRdKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzW2xhc3RfZXc6XSA9IFt0bC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCldCisgICAgICAgICAgICBpZiBwYXJ0LmNvbW1lbnRzIG9yIChub3QgaXNfZXcgYW5kIHBhcnQudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZycpOgorICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworY2xhc3MgV29yZChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd3b3JkJworCisKK2NsYXNzIENGV1NMaXN0KFdoaXRlU3BhY2VUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjZndzJworCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuY29tbWVudHMpCisKKworY2xhc3MgQXRvbShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhdG9tJworCisKK2NsYXNzIFRva2VuKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3Rva2VuJworCisKK2NsYXNzIEVuY29kZWRXb3JkKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2VuY29kZWQtd29yZCcKKyAgICBjdGUgPSBOb25lCisgICAgY2hhcnNldCA9IE5vbmUKKyAgICBsYW5nID0gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY3RlCisgICAgICAgIF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBzZWxmLmNoYXJzZXQpCisKKworCitjbGFzcyBRdW90ZWRTdHJpbmcoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAncXVvdGVkLXN0cmluZycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcXVvdGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHgudmFsdWUpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZQorCisKK2NsYXNzIEJhcmVRdW90ZWRTdHJpbmcoUXVvdGVkU3RyaW5nKToKKworICAgIHRva2VuX3R5cGUgPSAnYmFyZS1xdW90ZWQtc3RyaW5nJworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBxdW90ZV9zdHJpbmcoJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQorCisKK2NsYXNzIENvbW1lbnQoV2hpdGVTcGFjZVRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbW1lbnQnCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VtKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIigiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5xdW90ZSh4KSBmb3IgeCBpbiBzZWxmXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIikiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBbXSkpCisKKyAgICBkZWYgcXVvdGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKKyAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCisgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudChzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi5jb250ZW50XQorCitjbGFzcyBBZGRyZXNzTGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhZGRyZXNzLWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oKHgubWFpbGJveGVzCisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nYWRkcmVzcycpLCBbXSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VtKCh4LmFsbF9tYWlsYm94ZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJyksIFtdKQorCisKK2NsYXNzIEFkZHJlc3MoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYWRkcmVzcycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnZ3JvdXAnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICBlbGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnaW52YWxpZC1tYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICBlbGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnaW52YWxpZC1tYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbc2VsZlswXV0KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcworCitjbGFzcyBNYWlsYm94TGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtYWlsYm94LWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdtYWlsYm94J10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlIGluICgnbWFpbGJveCcsICdpbnZhbGlkLW1haWxib3gnKV0KKworCitjbGFzcyBHcm91cExpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZ3JvdXAtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGZbMF0udG9rZW5fdHlwZSAhPSAnbWFpbGJveC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmWzBdLnRva2VuX3R5cGUgIT0gJ21haWxib3gtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcworCisKK2NsYXNzIEdyb3VwKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gImdyb3VwIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlsyXS50b2tlbl90eXBlICE9ICdncm91cC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlsyXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzJdLnRva2VuX3R5cGUgIT0gJ2dyb3VwLWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzJdLmFsbF9tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisKK2NsYXNzIE5hbWVBZGRyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ25hbWUtYWRkcicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb3V0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLnJvdXRlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0uYWRkcl9zcGVjCisKKworY2xhc3MgQW5nbGVBZGRyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FuZ2xlLWFkZHInCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdvYnMtcm91dGUnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRvbWFpbnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguYWRkcl9zcGVjCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJzw+JworCisKK2NsYXNzIE9ic1JvdXRlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ29icy1yb3V0ZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW5zKHNlbGYpOgorICAgICAgICByZXR1cm4gW3guZG9tYWluIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlID09ICdkb21haW4nXQorCisKK2NsYXNzIE1haWxib3goVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWFpbGJveCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ25hbWUtYWRkcic6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5yb3V0ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWRkcl9zcGVjCisKKworY2xhc3MgSW52YWxpZE1haWxib3goVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGxvY2FsX3BhcnQgPSBkb21haW4gPSByb3V0ZSA9IGFkZHJfc3BlYyA9IGRpc3BsYXlfbmFtZQorCisKK2NsYXNzIERvbWFpbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb21haW4nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdXBlcigpLnZhbHVlLnNwbGl0KCkpCisKKworY2xhc3MgRG90QXRvbShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbScKKworCitjbGFzcyBEb3RBdG9tVGV4dChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbS10ZXh0JworCisKK2NsYXNzIEFkZHJTcGVjKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FkZHItc3BlYycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPCAzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPCAzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUucnN0cmlwKCkrc2VsZlsxXS52YWx1ZStzZWxmWzJdLnZhbHVlLmxzdHJpcCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBuYW1lc2V0ID0gc2V0KHNlbGYubG9jYWxfcGFydCkKKyAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtRE9UX0FUT01fRU5EUyk6CisgICAgICAgICAgICBscCA9IHF1b3RlX3N0cmluZyhzZWxmLmxvY2FsX3BhcnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBscCA9IHNlbGYubG9jYWxfcGFydAorICAgICAgICBpZiBzZWxmLmRvbWFpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBscCArICdAJyArIHNlbGYuZG9tYWluCisgICAgICAgIHJldHVybiBscAorCisKK2NsYXNzIE9ic0xvY2FsUGFydChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdvYnMtbG9jYWwtcGFydCcKKworCitjbGFzcyBEaXNwbGF5TmFtZShQaHJhc2UpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkaXNwbGF5LW5hbWUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXMgPSBUb2tlbkxpc3Qoc2VsZikKKyAgICAgICAgaWYgcmVzWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmVzLnBvcCgwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcmVzWzBdWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgICAgIHJlc1swXSA9IFRva2VuTGlzdChyZXNbMF1bMTpdKQorICAgICAgICBpZiByZXNbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmVzLnBvcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiByZXNbLTFdWy0xXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgICAgICByZXNbLTFdID0gVG9rZW5MaXN0KHJlc1stMV1bOi0xXSkKKyAgICAgICAgcmV0dXJuIHJlcy52YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBxdW90ZSA9IEZhbHNlCisgICAgICAgIGlmIHNlbGYuZGVmZWN0czoKKyAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IFRydWUKKyAgICAgICAgaWYgcXVvdGU6CisgICAgICAgICAgICBwcmUgPSBwb3N0ID0gJycKKyAgICAgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbMF1bMF0udG9rZW5fdHlwZT09J2Nmd3MnOgorICAgICAgICAgICAgICAgIHByZSA9ICcgJworICAgICAgICAgICAgaWYgc2VsZlstMV0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbLTFdWy0xXS50b2tlbl90eXBlPT0nY2Z3cyc6CisgICAgICAgICAgICAgICAgcG9zdCA9ICcgJworICAgICAgICAgICAgcmV0dXJuIHByZStxdW90ZV9zdHJpbmcoc2VsZi5kaXNwbGF5X25hbWUpK3Bvc3QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnZhbHVlCisKKworY2xhc3MgTG9jYWxQYXJ0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2xvY2FsLXBhcnQnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAicXVvdGVkLXN0cmluZyI6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5xdW90ZWRfdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgIyBTdHJpcCB3aGl0ZXNwYWNlIGZyb20gZnJvbnQsIGJhY2ssIGFuZCBhcm91bmQgZG90cy4KKyAgICAgICAgcmVzID0gW0RPVF0KKyAgICAgICAgbGFzdCA9IERPVAorICAgICAgICBsYXN0X2lzX3RsID0gRmFsc2UKKyAgICAgICAgZm9yIHRvayBpbiBzZWxmWzBdICsgW0RPVF06CisgICAgICAgICAgICBpZiB0b2sudG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIChsYXN0X2lzX3RsIGFuZCB0b2sudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKKyAgICAgICAgICAgICAgICAgICAgbGFzdFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycpOgorICAgICAgICAgICAgICAgIHJlc1stMV0gPSBUb2tlbkxpc3QobGFzdFs6LTFdKQorICAgICAgICAgICAgaXNfdGwgPSBpc2luc3RhbmNlKHRvaywgVG9rZW5MaXN0KQorICAgICAgICAgICAgaWYgKGlzX3RsIGFuZCBsYXN0LnRva2VuX3R5cGUgPT0gJ2RvdCcgYW5kCisgICAgICAgICAgICAgICAgICAgIHRva1swXS50b2tlbl90eXBlID09ICdjZndzJyk6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChUb2tlbkxpc3QodG9rWzE6XSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQodG9rKQorICAgICAgICAgICAgbGFzdCA9IHJlc1stMV0KKyAgICAgICAgICAgIGxhc3RfaXNfdGwgPSBpc190bAorICAgICAgICByZXMgPSBUb2tlbkxpc3QocmVzWzE6LTFdKQorICAgICAgICByZXR1cm4gcmVzLnZhbHVlCisKKworY2xhc3MgRG9tYWluTGl0ZXJhbChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb21haW4tbGl0ZXJhbCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN1cGVyKCkudmFsdWUuc3BsaXQoKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAncHRleHQnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlCisKKworY2xhc3MgTUlNRVZlcnNpb24oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWltZS12ZXJzaW9uJworICAgIG1ham9yID0gTm9uZQorICAgIG1pbm9yID0gTm9uZQorCisKK2NsYXNzIFBhcmFtZXRlcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdwYXJhbWV0ZXInCisgICAgc2VjdGlvbmVkID0gRmFsc2UKKyAgICBleHRlbmRlZCA9IEZhbHNlCisgICAgY2hhcnNldCA9ICd1cy1hc2NpaScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZWN0aW9uX251bWJlcihzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIHRoZSBmaXJzdCB0b2tlbiwgdGhlIGF0dHJpYnV0ZSAobmFtZSkgZWF0cyBDRldTLCB0aGUgc2Vjb25kCisgICAgICAgICMgdG9rZW4gaXMgYWx3YXlzIHRoZSBzZWN0aW9uIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgcmV0dXJuIHNlbGZbMV0ubnVtYmVyIGlmIHNlbGYuc2VjdGlvbmVkIGVsc2UgMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgcGFydCBvZiB0aGUgImhhbmRsZSBxdW90ZWQgZXh0ZW5kZWQgcGFyYW1ldGVycyIgaGFjay4KKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICd2YWx1ZSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAndmFsdWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgcmV0dXJuICcnCisKKworY2xhc3MgSW52YWxpZFBhcmFtZXRlcihQYXJhbWV0ZXIpOgorCisgICAgdG9rZW5fdHlwZSA9ICdpbnZhbGlkLXBhcmFtZXRlcicKKworCitjbGFzcyBBdHRyaWJ1dGUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYXR0cmlidXRlJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoJ2F0dHJ0ZXh0Jyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlCisKK2NsYXNzIFNlY3Rpb24oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnc2VjdGlvbicKKyAgICBudW1iZXIgPSBOb25lCisKKworY2xhc3MgVmFsdWUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndmFsdWUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHRva2VuID0gc2VsZlswXQorICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgIHRva2VuID0gc2VsZlsxXQorICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKAorICAgICAgICAgICAgICAgICgncXVvdGVkLXN0cmluZycsICdhdHRyaWJ1dGUnLCAnZXh0ZW5kZWQtYXR0cmlidXRlJykpOgorICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKworY2xhc3MgTWltZVBhcmFtZXRlcnMoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWltZS1wYXJhbWV0ZXJzJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUaGUgUkZDIHNwZWNpZmljYWxseSBzdGF0ZXMgdGhhdCB0aGUgb3JkZXJpbmcgb2YgcGFyYW1ldGVycyBpcyBub3QKKyAgICAgICAgIyBndWFyYW50ZWVkIGFuZCBtYXkgYmUgcmVvcmRlcmVkIGJ5IHRoZSB0cmFuc3BvcnQgbGF5ZXIuICBTbyB3ZSBoYXZlCisgICAgICAgICMgdG8gYXNzdW1lIHRoZSBSRkMgMjIzMSBwaWVjZXMgY2FuIGNvbWUgaW4gYW55IG9yZGVyLiAgSG93ZXZlciwgd2UKKyAgICAgICAgIyBvdXRwdXQgdGhlbSBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBmaXJzdCBzZWUgYSBnaXZlbiBuYW1lLCB3aGljaCBnaXZlcworICAgICAgICAjIHVzIGEgc3RhYmxlIF9fc3RyX18uCisgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiBub3QgdG9rZW4udG9rZW5fdHlwZS5lbmRzd2l0aCgncGFyYW1ldGVyJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHRva2VuWzBdLnRva2VuX3R5cGUgIT0gJ2F0dHJpYnV0ZSc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG5hbWUgPSB0b2tlblswXS52YWx1ZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgcGFyYW1zW25hbWVdID0gW10KKyAgICAgICAgICAgIHBhcmFtc1tuYW1lXS5hcHBlbmQoKHRva2VuLnNlY3Rpb25fbnVtYmVyLCB0b2tlbikpCisgICAgICAgIGZvciBuYW1lLCBwYXJ0cyBpbiBwYXJhbXMuaXRlbXMoKToKKyAgICAgICAgICAgIHBhcnRzID0gc29ydGVkKHBhcnRzKQorICAgICAgICAgICAgIyBYWFg6IHRoZXJlIG1pZ2h0IGJlIG1vcmUgcmVjb3Zlcnkgd2UgY291bGQgZG8gaGVyZSBpZiwgZm9yCisgICAgICAgICAgICAjIGV4YW1wbGUsIHRoaXMgaXMgcmVhbGx5IGEgY2FzZSBvZiBhIGR1cGxpY2F0ZSBhdHRyaWJ1dGUgbmFtZS4KKyAgICAgICAgICAgIHZhbHVlX3BhcnRzID0gW10KKyAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJ0c1swXVsxXS5jaGFyc2V0CisgICAgICAgICAgICBmb3IgaSwgKHNlY3Rpb25fbnVtYmVyLCBwYXJhbSkgaW4gZW51bWVyYXRlKHBhcnRzKToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uX251bWJlciAhPSBpOgorICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbnNpc3RlbnQgbXVsdGlwYXJ0IHBhcmFtZXRlciBudW1iZXJpbmciKSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtLnBhcmFtX3ZhbHVlCisgICAgICAgICAgICAgICAgaWYgcGFyYW0uZXh0ZW5kZWQ6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdXJsbGliLnBhcnNlLnVucXVvdGVfdG9fYnl0ZXModmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHNvdXJjZSBoYWQgc3Vycm9nYXRlIGVzY2FwZWQgYnl0ZXMuICBXaGF0IHdlIGRvIG5vdworICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBhIGJpdCBvZiBhbiBvcGVuIHF1ZXN0aW9uLiAgSSdtIG5vdCBzdXJlIHRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGJlc3QgY2hvaWNlLCBidXQgaXQgaXMgd2hhdCB0aGUgb2xkIGFsZ29yaXRobSBkaWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdXJsbGliLnBhcnNlLnVucXVvdGUodmFsdWUsIGVuY29kaW5nPSdsYXRpbi0xJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZShjaGFyc2V0LCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhlcmUgc2hvdWxkIHJlYWxseSBiZSBhIGN1c3RvbSBkZWZlY3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmtub3duIGNoYXJhY3RlciBzZXQgdG8gbWFrZSBpdCBlYXN5IHRvIGZpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIG90aGVyd2lzZSB1bmtub3duIGNoYXJzZXQgaXMgYSBzaWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZhaWx1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoJ3VzLWFzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KCkpCisgICAgICAgICAgICAgICAgdmFsdWVfcGFydHMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSAnJy5qb2luKHZhbHVlX3BhcnRzKQorICAgICAgICAgICAgeWllbGQgbmFtZSwgdmFsdWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBwYXJhbXMgPSBbXQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5wYXJhbXM6CisgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCd7fT17fScuZm9ybWF0KG5hbWUsIHF1b3RlX3N0cmluZyh2YWx1ZSkpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKG5hbWUpCisgICAgICAgIHBhcmFtcyA9ICc7ICcuam9pbihwYXJhbXMpCisgICAgICAgIHJldHVybiAnICcgKyBwYXJhbXMgaWYgcGFyYW1zIGVsc2UgJycKKworCitjbGFzcyBQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUoVG9rZW5MaXN0KToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJhbXMoc2VsZik6CisgICAgICAgIGZvciB0b2tlbiBpbiByZXZlcnNlZChzZWxmKToKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ21pbWUtcGFyYW1ldGVycyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnBhcmFtcworICAgICAgICByZXR1cm4ge30KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJ0cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZiBhbmQgc2VsZlstMV0udG9rZW5fdHlwZSA9PSAnbWltZS1wYXJhbWV0ZXJzJzoKKyAgICAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBhIG5ldyBsaW5lIGlmIGFsbCBvZiB0aGUgcGFyYW1zIGRvbid0IGZpdAorICAgICAgICAgICAgIyBhZnRlciB0aGUgdmFsdWUsIHNvIHVud3JhcCB0aGUgcGFyYW1ldGVyIGxpc3QuCisgICAgICAgICAgICByZXR1cm4gVG9rZW5MaXN0KHNlbGZbOi0xXSArIHNlbGZbLTFdKQorICAgICAgICByZXR1cm4gVG9rZW5MaXN0KHNlbGYpLnBhcnRzCisKKworY2xhc3MgQ29udGVudFR5cGUoUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC10eXBlJworICAgIG1haW50eXBlID0gJ3RleHQnCisgICAgc3VidHlwZSA9ICdwbGFpbicKKworCitjbGFzcyBDb250ZW50RGlzcG9zaXRpb24oUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC1kaXNwb3NpdGlvbicKKyAgICBjb250ZW50X2Rpc3Bvc2l0aW9uID0gTm9uZQorCisKK2NsYXNzIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnCisgICAgY3RlID0gJzdiaXQnCisKKworY2xhc3MgSGVhZGVyTGFiZWwoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaGVhZGVyLWxhYmVsJworCisKK2NsYXNzIEhlYWRlcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdoZWFkZXInCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgZm9sZGVkLmFwcGVuZChzdHIoc2VsZi5wb3AoMCkpKQorICAgICAgICBmb2xkZWQubGFzdGxlbiA9IGxlbihmb2xkZWQuY3VycmVudFswXSkKKyAgICAgICAgIyBUaGUgZmlyc3QgbGluZSBvZiB0aGUgaGVhZGVyIGlzIGRpZmZlcmVudCBmcm9tIGFsbCBvdGhlcnM6IHdlIGRvbid0CisgICAgICAgICMgd2FudCB0byBzdGFydCBhIG5ldyBvYmplY3Qgb24gYSBuZXcgbGluZSBpZiBpdCBoYXMgYW55IGZvbGQgcG9pbnRzIGluCisgICAgICAgICMgaXQgdGhhdCB3b3VsZCBhbGxvdyBwYXJ0IG9mIGl0IHRvIGJlIG9uIHRoZSBmaXJzdCBoZWFkZXIgbGluZS4KKyAgICAgICAgIyBGdXJ0aGVyLCBpZiB0aGUgZmlyc3QgZm9sZCBwb2ludCB3b3VsZCBmaXQgb24gdGhlIG5ldyBsaW5lLCB3ZSB3YW50CisgICAgICAgICMgdG8gZG8gdGhhdCwgYnV0IGlmIGl0IGRvZXNuJ3Qgd2Ugd2FudCB0byBwdXQgaXQgb24gdGhlIGZpcnN0IGxpbmUuCisgICAgICAgICMgRm9sZGVkIHN1cHBvcnRzIHRoaXMgdmlhIHRoZSBzdGlja3lzcGFjZSBhdHRyaWJ1dGUuICBJZiB0aGlzCisgICAgICAgICMgYXR0cmlidXRlIGlzIG5vdCBOb25lLCBpdCBkb2VzIHRoZSBzcGVjaWFsIGhhbmRsaW5nLgorICAgICAgICBmb2xkZWQuc3RpY2t5c3BhY2UgPSBzdHIoc2VsZi5wb3AoMCkpIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cycgZWxzZSAnJworICAgICAgICByZXN0ID0gc2VsZi5wb3AoMCkKKyAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1hbGZvcm1lZCBIZWFkZXIgdG9rZW4gbGlzdCIpCisgICAgICAgIHJlc3QuX2ZvbGQoZm9sZGVkKQorCisKKyMKKyMgVGVybWluYWwgY2xhc3NlcyBhbmQgaW5zdGFuY2VzCisjCisKK2NsYXNzIFRlcm1pbmFsKHN0cik6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCB0b2tlbl90eXBlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICBzZWxmLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlCisgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN1cGVyKCkuX19yZXByX18oKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5kZWZlY3RzKQorCisgICAgZGVmIF9wcChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICByZXR1cm4gWyJ7fXt9L3t9KHt9KXt9Ii5mb3JtYXQoCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSwKKyAgICAgICAgICAgIHN1cGVyKCkuX19yZXByX18oKSwKKyAgICAgICAgICAgICcnIGlmIG5vdCBzZWxmLmRlZmVjdHMgZWxzZSAnIHt9Jy5mb3JtYXQoc2VsZi5kZWZlY3RzKSwKKyAgICAgICAgICAgICldCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICB2YWx1ZSA9IHN0cihzZWxmKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB2YWx1ZS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIF9ldy5lbmNvZGUodmFsdWUsIGNoYXJzZXQpCisKKyAgICBkZWYgcG9wX3RyYWlsaW5nX3dzKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVybWluYXRlcyB0aGUgcmVjdXJzaW9uLgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHBvcF9sZWFkaW5nX2Z3cyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlcm1pbmF0ZXMgdGhlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybihzdHIoc2VsZiksIHNlbGYudG9rZW5fdHlwZSkKKworCitjbGFzcyBXaGl0ZVNwYWNlVGVybWluYWwoVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJyAnCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBoYXNfZndzID0gVHJ1ZQorCisKK2NsYXNzIFZhbHVlVGVybWluYWwoVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGhhc19md3MgPSBGYWxzZQorCisgICAgZGVmIGFzX2VuY29kZWRfd29yZChzZWxmLCBjaGFyc2V0KToKKyAgICAgICAgcmV0dXJuIF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBjaGFyc2V0KQorCisKK2NsYXNzIEVXV2hpdGVTcGFjZVRlcm1pbmFsKFdoaXRlU3BhY2VUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kZWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzpdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBoYXNfZndzID0gVHJ1ZQorCisKKyMgWFhYIHRoZXNlIG5lZWQgdG8gYmVjb21lIGNsYXNzZXMgYW5kIHVzZWQgYXMgaW5zdGFuY2VzIHNvCisjIHRoYXQgYSBwcm9ncmFtIGNhbid0IGNoYW5nZSB0aGVtIGluIGEgcGFyc2UgdHJlZSBhbmQgc2NyZXcKKyMgdXAgb3RoZXIgcGFyc2UgdHJlZXMuICBNYXliZSBzaG91bGQgaGF2ZSAgdGVzdHMgZm9yIHRoYXQsIHRvby4KK0RPVCA9IFZhbHVlVGVybWluYWwoJy4nLCAnZG90JykKK0xpc3RTZXBhcmF0b3IgPSBWYWx1ZVRlcm1pbmFsKCcsJywgJ2xpc3Qtc2VwYXJhdG9yJykKK1JvdXRlQ29tcG9uZW50TWFya2VyID0gVmFsdWVUZXJtaW5hbCgnQCcsICdyb3V0ZS1jb21wb25lbnQtbWFya2VyJykKKworIworIyBQYXJzZXIKKyMKKworIiIiUGFyc2Ugc3RyaW5ncyBhY2NvcmRpbmcgdG8gUkZDODIyLzIwNDcvMjgyMi81MzIyIHJ1bGVzLgorCitUaGlzIGlzIGEgc3RhdGVsZXNzIHBhcnNlci4gIEVhY2ggZ2V0X1hYWCBmdW5jdGlvbiBhY2NlcHRzIGEgc3RyaW5nIGFuZAorcmV0dXJucyBlaXRoZXIgYSBUZXJtaW5hbCBvciBhIFRva2VuTGlzdCByZXByZXNlbnRpbmcgdGhlIFJGQyBvYmplY3QgbmFtZWQKK2J5IHRoZSBtZXRob2QgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlbWFpbmluZyB1bnBhcnNlZCBjaGFyYWN0ZXJzCitmcm9tIHRoZSBpbnB1dC4gIFRodXMgYSBwYXJzZXIgbWV0aG9kIGNvbnN1bWVzIHRoZSBuZXh0IHN5bnRhY3RpYyBjb25zdHJ1Y3QKK29mIGEgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY29uc3RydWN0IHBsdXMgdGhlCit1bnBhcnNlZCByZW1haW5kZXIgb2YgdGhlIGlucHV0IHN0cmluZy4KKworRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlZCBoZWFkZXIgaXMgYSAncGhyYXNlJywKK3RoZW46CisKKyAgICBwaHJhc2UsIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKworcmV0dXJucyB0aGUgY29tcGxldGUgcGhyYXNlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgdmFsdWUsIHBsdXMgYW55CitjaGFyYWN0ZXJzIGxlZnQgaW4gdGhlIHN0cmluZyBhZnRlciB0aGUgcGhyYXNlIGlzIHJlbW92ZWQuCisKKyIiIgorCitfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAorX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCitfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbAorX25vbl90b2tlbl9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKKyAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oRVhURU5ERURfQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorCitkZWYgX3ZhbGlkYXRlX3h0ZXh0KHh0ZXh0KToKKyAgICAiIiJJZiBpbnB1dCB0b2tlbiBjb250YWlucyBBU0NJSSBub24tcHJpbnRhYmxlcywgcmVnaXN0ZXIgYSBkZWZlY3QuIiIiCisKKyAgICBub25fcHJpbnRhYmxlcyA9IF9ub25fcHJpbnRhYmxlX2ZpbmRlcih4dGV4dCkKKyAgICBpZiBub25fcHJpbnRhYmxlczoKKyAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vblByaW50YWJsZURlZmVjdChub25fcHJpbnRhYmxlcykpCisgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHh0ZXh0KToKKyAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoCisgICAgICAgICAgICAiTm9uLUFTQ0lJIGNoYXJhY3RlcnMgZm91bmQgaW4gaGVhZGVyIHRva2VuIikpCisKK2RlZiBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCBlbmRjaGFycyk6CisgICAgIiIiU2NhbiBwcmludGFibGVzL3F1b3RlZC1wYWlycyB1bnRpbCBlbmRjaGFycyBhbmQgcmV0dXJuIHVucXVvdGVkIHB0ZXh0LgorCisgICAgVGhpcyBmdW5jdGlvbiB0dXJucyBhIHJ1biBvZiBxY29udGVudCwgY2NvbnRlbnQtd2l0aG91dC1jb21tZW50cywgb3IKKyAgICBkdGV4dC13aXRoLXF1b3RlZC1wcmludGFibGVzIGludG8gYSBzaW5nbGUgc3RyaW5nIGJ5IHVucXVvdGluZyBhbnkKKyAgICBxdW90ZWQgcHJpbnRhYmxlcy4gIEl0IHJldHVybnMgdGhlIHN0cmluZywgdGhlIHJlbWFpbmluZyB2YWx1ZSwgYW5kCisgICAgYSBmbGFnIHRoYXQgaXMgVHJ1ZSBpZmYgdGhlcmUgd2VyZSBhbnkgcXVvdGVkIHByaW50YWJsZXMgZGVjb2RlZC4KKworICAgICIiIgorICAgIGZyYWdtZW50LCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICB2Y2hhcnMgPSBbXQorICAgIGVzY2FwZSA9IEZhbHNlCisgICAgaGFkX3FwID0gRmFsc2UKKyAgICBmb3IgcG9zIGluIHJhbmdlKGxlbihmcmFnbWVudCkpOgorICAgICAgICBpZiBmcmFnbWVudFtwb3NdID09ICdcXCc6CisgICAgICAgICAgICBpZiBlc2NhcGU6CisgICAgICAgICAgICAgICAgZXNjYXBlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBoYWRfcXAgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVzY2FwZSA9IFRydWUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBlc2NhcGU6CisgICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQorICAgICAgICBlbGlmIGZyYWdtZW50W3Bvc10gaW4gZW5kY2hhcnM6CisgICAgICAgICAgICBicmVhaworICAgICAgICB2Y2hhcnMuYXBwZW5kKGZyYWdtZW50W3Bvc10pCisgICAgZWxzZToKKyAgICAgICAgcG9zID0gcG9zICsgMQorICAgIHJldHVybiAnJy5qb2luKHZjaGFycyksICcnLmpvaW4oW2ZyYWdtZW50W3BvczpdXSArIHJlbWFpbmRlciksIGhhZF9xcAorCitkZWYgX2RlY29kZV9ld19ydW4odmFsdWUpOgorICAgICIiIiBEZWNvZGUgYSBydW4gb2YgUkZDMjA0NyBlbmNvZGVkIHdvcmRzLgorCisgICAgICAgIF9kZWNvZGVfZXdfcnVuKHZhbHVlKSAtPiAodGV4dCwgdmFsdWUsIGRlZmVjdHMpCisKKyAgICBTY2FucyB0aGUgc3VwcGxpZWQgdmFsdWUgZm9yIGEgcnVuIG9mIHRva2VucyB0aGF0IGxvb2sgbGlrZSB0aGV5IGFyZSBSRkMKKyAgICAyMDQ3IGVuY29kZWQgd29yZHMsIGRlY29kZXMgdGhvc2Ugd29yZHMgaW50byB0ZXh0IGFjY29yZGluZyB0byBSRkMgMjA0NworICAgIHJ1bGVzICh3aGl0ZXNwYWNlIGJldHdlZW4gZW5jb2RlZCB3b3JkcyBpcyBkaXNjYXJkZWQpLCBhbmQgcmV0dXJucyB0aGUgdGV4dAorICAgIGFuZCB0aGUgcmVtYWluaW5nIHZhbHVlIChpbmNsdWRpbmcgYW55IGxlYWRpbmcgd2hpdGVzcGFjZSBvbiB0aGUgcmVtYWluaW5nCisgICAgdmFsdWUpLCBhcyB3ZWxsIGFzIGEgbGlzdCBvZiBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aGlsZSBkZWNvZGluZy4gIFRoZQorICAgIGlucHV0IHZhbHVlIG1heSBub3QgaGF2ZSBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlLgorCisgICAgIiIiCisgICAgcmVzID0gW10KKyAgICBkZWZlY3RzID0gW10KKyAgICBsYXN0X3dzID0gJycKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rLCB3cywgdmFsdWUgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHRvaywgd3MsIHZhbHVlID0gdmFsdWUsICcnLCAnJworICAgICAgICBpZiBub3QgKHRvay5zdGFydHN3aXRoKCc9PycpIGFuZCB0b2suZW5kc3dpdGgoJz89JykpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKSwgbGFzdF93cyArIHRvayArIHdzICsgdmFsdWUsIGRlZmVjdHMKKyAgICAgICAgdGV4dCwgY2hhcnNldCwgbGFuZywgbmV3X2RlZmVjdHMgPSBfZXcuZGVjb2RlKHRvaykKKyAgICAgICAgcmVzLmFwcGVuZCh0ZXh0KQorICAgICAgICBkZWZlY3RzLmV4dGVuZChuZXdfZGVmZWN0cykKKyAgICAgICAgbGFzdF93cyA9IHdzCisgICAgcmV0dXJuICcnLmpvaW4ocmVzKSwgbGFzdF93cywgZGVmZWN0cworCitkZWYgZ2V0X2Z3cyh2YWx1ZSk6CisgICAgIiIiRldTID0gMSpXU1AKKworICAgIFRoaXMgaXNuJ3QgdGhlIFJGQyBkZWZpbml0aW9uLiAgV2UncmUgdXNpbmcgZndzIHRvIHJlcHJlc2VudCB0b2tlbnMgd2hlcmUKKyAgICBmb2xkaW5nIGNhbiBiZSBkb25lLCBidXQgd2hlbiB3ZSBhcmUgcGFyc2luZyB0aGUgKnVuKmZvbGRpbmcgaGFzIGFscmVhZHkKKyAgICBiZWVuIGRvbmUgc28gd2UgZG9uJ3QgbmVlZCB0byB3YXRjaCBvdXQgZm9yIENSTEYuCisKKyAgICAiIiIKKyAgICBuZXd2YWx1ZSA9IHZhbHVlLmxzdHJpcCgpCisgICAgZndzID0gV2hpdGVTcGFjZVRlcm1pbmFsKHZhbHVlWzpsZW4odmFsdWUpLWxlbihuZXd2YWx1ZSldLCAnZndzJykKKyAgICByZXR1cm4gZndzLCBuZXd2YWx1ZQorCitkZWYgZ2V0X2VuY29kZWRfd29yZCh2YWx1ZSk6CisgICAgIiIiIGVuY29kZWQtd29yZCA9ICI9PyIgY2hhcnNldCAiPyIgZW5jb2RpbmcgIj8iIGVuY29kZWQtdGV4dCAiPz0iCisKKyAgICAiIiIKKyAgICBldyA9IEVuY29kZWRXb3JkKCkKKyAgICBpZiBub3QgdmFsdWUuc3RhcnRzd2l0aCgnPT8nKToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZW5jb2RlZCB3b3JkIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2ssICpyZW1haW5kZXIgPSB2YWx1ZVsyOl0uc3BsaXQoJz89JywgMSkKKyAgICBpZiB0b2sgPT0gdmFsdWVbMjpdOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBlbmNvZGVkIHdvcmQgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIHJlbXN0ciA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIGlmIHJlbXN0cls6Ml0uaXNkaWdpdCgpOgorICAgICAgICByZXN0LCAqcmVtYWluZGVyID0gcmVtc3RyLnNwbGl0KCc/PScsIDEpCisgICAgICAgIHRvayA9IHRvayArICc/PScgKyByZXN0CisgICAgaWYgbGVuKHRvay5zcGxpdCgpKSA+IDE6CisgICAgICAgIGV3LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIndoaXRlc3BhY2UgaW5zaWRlIGVuY29kZWQgd29yZCIpKQorICAgIGV3LmN0ZSA9IHZhbHVlCisgICAgdmFsdWUgPSAnJy5qb2luKHJlbWFpbmRlcikKKyAgICB0cnk6CisgICAgICAgIHRleHQsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMgPSBfZXcuZGVjb2RlKCc9PycgKyB0b2sgKyAnPz0nKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJlbmNvZGVkIHdvcmQgZm9ybWF0IGludmFsaWQ6ICd7fSciLmZvcm1hdChldy5jdGUpKQorICAgIGV3LmNoYXJzZXQgPSBjaGFyc2V0CisgICAgZXcubGFuZyA9IGxhbmcKKyAgICBldy5kZWZlY3RzLmV4dGVuZChkZWZlY3RzKQorICAgIHdoaWxlIHRleHQ6CisgICAgICAgIGlmIHRleHRbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHRleHQgPSBnZXRfZndzKHRleHQpCisgICAgICAgICAgICBldy5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBjaGFycywgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodGV4dCwgMSkKKyAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKGNoYXJzLCAndnRleHQnKQorICAgICAgICBfdmFsaWRhdGVfeHRleHQodnRleHQpCisgICAgICAgIGV3LmFwcGVuZCh2dGV4dCkKKyAgICAgICAgdGV4dCA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHJldHVybiBldywgdmFsdWUKKworZGVmIGdldF91bnN0cnVjdHVyZWQodmFsdWUpOgorICAgICIiInVuc3RydWN0dXJlZCA9ICgqKFtGV1NdIHZjaGFyKSAqV1NQKSAvIG9icy11bnN0cnVjdAorICAgICAgIG9icy11bnN0cnVjdCA9ICooKCpMRiAqQ1IgKihvYnMtdXRleHQpICpMRiAqQ1IpKSAvIEZXUykKKyAgICAgICBvYnMtdXRleHQgPSAlZDAgLyBvYnMtTk8tV1MtQ1RMIC8gTEYgLyBDUgorCisgICAgICAgb2JzLU5PLVdTLUNUTCBpcyBjb250cm9sIGNoYXJhY3RlcnMgZXhjZXB0IFdTUC9DUi9MRi4KKworICAgIFNvLCBiYXNpY2FsbHksIHdlIGhhdmUgcHJpbnRhYmxlIHJ1bnMsIHBsdXMgY29udHJvbCBjaGFyYWN0ZXJzIG9yIG51bGxzIGluCisgICAgdGhlIG9ic29sZXRlIHN5bnRheCwgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuICBTaW5jZSBSRkMgMjA0NyB1c2VzIHRoZQorICAgIG9ic29sZXRlIHN5bnRheCBpbiBpdHMgc3BlY2lmaWNhdGlvbiwgYnV0IHJlcXVpcmVzIHdoaXRlc3BhY2Ugb24gZWl0aGVyCisgICAgc2lkZSBvZiB0aGUgZW5jb2RlZCB3b3JkcywgSSBjYW4gc2VlIG5vIHJlYXNvbiB0byBuZWVkIHRvIHNlcGFyYXRlIHRoZQorICAgIG5vbi1wcmludGFibGUtbm9uLXdoaXRlc3BhY2UgZnJvbSB0aGUgcHJpbnRhYmxlIHJ1bnMgaWYgdGhleSBvY2N1ciwgc28gd2UKKyAgICBwYXJzZSB0aGlzIGludG8geHRleHQgdG9rZW5zIHNlcGFyYXRlZCBieSBXU1AgdG9rZW5zLgorCisgICAgQmVjYXVzZSBhbiAndW5zdHJ1Y3R1cmVkJyB2YWx1ZSBtdXN0IGJ5IGRlZmluaXRpb24gY29uc3RpdHV0ZSB0aGUgZW50aXJlCisgICAgdmFsdWUsIHRoaXMgJ2dldCcgcm91dGluZSBkb2VzIG5vdCByZXR1cm4gYSByZW1haW5pbmcgdmFsdWUsIG9ubHkgdGhlCisgICAgcGFyc2VkIFRva2VuTGlzdC4KKworICAgICIiIgorICAgICMgWFhYOiBidXQgd2hhdCBhYm91dCBiYXJlIENSIGFuZCBMRj8gIFRoZXkgbWlnaHQgc2lnbmFsIHRoZSBzdGFydCBvcgorICAgICMgZW5kIG9mIGFuIGVuY29kZWQgd29yZC4gIFlBR05JIGZvciBub3csIHNpbmNlIG91dCBjdXJyZW50IHBhcnNlcnMKKyAgICAjIHdpbGwgbmV2ZXIgc2VuZCB1cyBzdHJpbmdzIHdpdGggYmFyZCBDUiBvciBMRi4KKworICAgIHVuc3RydWN0dXJlZCA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCgpCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgdmFsdWUuc3RhcnRzd2l0aCgnPT8nKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGF2ZV93cyA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBsZW4odW5zdHJ1Y3R1cmVkKSA+IDA6CisgICAgICAgICAgICAgICAgICAgIGlmIHVuc3RydWN0dXJlZFstMV0udG9rZW5fdHlwZSAhPSAnZndzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyB3aGl0ZXNwYWNlIGJlZm9yZSBlbmNvZGVkIHdvcmQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfd3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIGhhdmVfd3MgYW5kIGxlbih1bnN0cnVjdHVyZWQpID4gMToKKyAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0yXS50b2tlbl90eXBlID09ICdlbmNvZGVkLXdvcmQnOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkWy0xXSA9IEVXV2hpdGVTcGFjZVRlcm1pbmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZFstMV0sICdmd3MnKQorICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdG9rLCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKHRvaywgJ3Z0ZXh0JykKKyAgICAgICAgX3ZhbGlkYXRlX3h0ZXh0KHZ0ZXh0KQorICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHZ0ZXh0KQorICAgICAgICB2YWx1ZSA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHJldHVybiB1bnN0cnVjdHVyZWQKKworZGVmIGdldF9xcF9jdGV4dCh2YWx1ZSk6CisgICAgIiIiY3RleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcICggKT4KKworICAgIFRoaXMgaXMgbm90IHRoZSBSRkMgY3RleHQsIHNpbmNlIHdlIGFyZSBoYW5kbGluZyBuZXN0ZWQgY29tbWVudHMgaW4gY29tbWVudAorICAgIGFuZCB1bnF1b3RpbmcgcXVvdGVkLXBhaXJzIGhlcmUuICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlICcoKScKKyAgICBjaGFyYWN0ZXJzLCBidXQgaWYgd2UgZmluZCBhbnkgQVNDSUkgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlCisgICAgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIFNpbmNlCisgICAgcXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLCB3aGF0IGlzIHJldHVybmVkIGlzCisgICAgYSAncHRleHQnIHRva2VuLiAgSW4gdGhpcyBjYXNlIGl0IGlzIGEgV2hpdGVTcGFjZVRlcm1pbmFsLCBzbyBpdCdzIHZhbHVlCisgICAgaXMgJyAnLgorCisgICAgIiIiCisgICAgcHRleHQsIHZhbHVlLCBfID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJygpJykKKyAgICBwdGV4dCA9IFdoaXRlU3BhY2VUZXJtaW5hbChwdGV4dCwgJ3B0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCisgICAgcmV0dXJuIHB0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X3Fjb250ZW50KHZhbHVlKToKKyAgICAiIiJxY29udGVudCA9IHF0ZXh0IC8gcXVvdGVkLXBhaXIKKworICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgRFFVT1RFIGNoYXJhY3RlciwgYnV0IGlmIHdlIGZpbmQgYW55IEFTQ0lJCisgICAgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlIEFTQ0lJIGFuIE5vblByaW50YWJsZURlZmVjdCBpcworICAgIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIEFueSBxdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpcgorICAgIHVucXVvdGVkIHZhbHVlcywgc28gd2hhdCBpcyByZXR1cm5lZCBpcyBhICdwdGV4dCcgdG9rZW4uICBJbiB0aGlzIGNhc2UgaXQKKyAgICBpcyBhIFZhbHVlVGVybWluYWwuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIF8gPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnIicpCisgICAgcHRleHQgPSBWYWx1ZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBnZXRfYXRleHQodmFsdWUpOgorICAgICIiImF0ZXh0ID0gPG1hdGNoZXMgX2F0ZXh0X21hdGNoZXI+CisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLUFUT01fRU5EUyBpbiBhdGV4dCwgYnV0IGFkZCBhbiBJbnZhbGlkQVRleHREZWZlY3QgdG8KKyAgICB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tYXRleHQgY2hhcmFjdGVycy4KKyAgICAiIiIKKyAgICBtID0gX25vbl9hdG9tX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0ZXh0KTpdCisgICAgYXRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0ZXh0LCAnYXRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdGV4dCkKKyAgICByZXR1cm4gYXRleHQsIHZhbHVlCisKK2RlZiBnZXRfYmFyZV9xdW90ZWRfc3RyaW5nKHZhbHVlKToKKyAgICAiIiJiYXJlLXF1b3RlZC1zdHJpbmcgPSBEUVVPVEUgKihbRldTXSBxY29udGVudCkgW0ZXU10gRFFVT1RFCisKKyAgICBBIHF1b3RlZC1zdHJpbmcgd2l0aG91dCB0aGUgbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZSBzcGFjZS4gIEl0cworICAgIHZhbHVlIGlzIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHF1b3RlIG1hcmtzLCB3aXRoIHdoaXRlc3BhY2UKKyAgICBwcmVzZXJ2ZWQgYW5kIHF1b3RlZCBwYWlycyBkZWNvZGVkLgorICAgICIiIgorICAgIGlmIHZhbHVlWzBdICE9ICciJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJ1wiJyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBiYXJlX3F1b3RlZF9zdHJpbmcgPSBCYXJlUXVvdGVkU3RyaW5nKCkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnIic6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCisgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBiYXJlX3F1b3RlZF9zdHJpbmcuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbnNpZGUgcXVvdGVkIHN0cmluZyIpKQorICAgICAgICByZXR1cm4gYmFyZV9xdW90ZWRfc3RyaW5nLCB2YWx1ZQorICAgIHJldHVybiBiYXJlX3F1b3RlZF9zdHJpbmcsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2NvbW1lbnQodmFsdWUpOgorICAgICIiImNvbW1lbnQgPSAiKCIgKihbRldTXSBjY29udGVudCkgW0ZXU10gIikiCisgICAgICAgY2NvbnRlbnQgPSBjdGV4dCAvIHF1b3RlZC1wYWlyIC8gY29tbWVudAorCisgICAgV2UgaGFuZGxlIG5lc3RlZCBjb21tZW50cyBoZXJlLCBhbmQgcXVvdGVkLXBhaXIgaW4gb3VyIHFwLWN0ZXh0IHJvdXRpbmUuCisgICAgIiIiCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcoJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJygnIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGNvbW1lbnQgPSBDb21tZW50KCkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiKSI6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJygnOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2NvbW1lbnQodmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXBfY3RleHQodmFsdWUpCisgICAgICAgIGNvbW1lbnQuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY29tbWVudC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluc2lkZSBjb21tZW50IikpCisgICAgICAgIHJldHVybiBjb21tZW50LCB2YWx1ZQorICAgIHJldHVybiBjb21tZW50LCB2YWx1ZVsxOl0KKworZGVmIGdldF9jZndzKHZhbHVlKToKKyAgICAiIiJDRldTID0gKDEqKFtGV1NdIGNvbW1lbnQpIFtGV1NdKSAvIEZXUworCisgICAgIiIiCisgICAgY2Z3cyA9IENGV1NMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY29tbWVudCh2YWx1ZSkKKyAgICAgICAgY2Z3cy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGNmd3MsIHZhbHVlCisKK2RlZiBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSk6CisgICAgIiIicXVvdGVkLXN0cmluZyA9IFtDRldTXSA8YmFyZS1xdW90ZWQtc3RyaW5nPiBbQ0ZXU10KKworICAgICdiYXJlLXF1b3RlZC1zdHJpbmcnIGlzIGFuIGludGVybWVkaWF0ZSBjbGFzcyBkZWZpbmVkIGJ5IHRoaXMKKyAgICBwYXJzZXIgYW5kIG5vdCBieSB0aGUgUkZDIGdyYW1tYXIuICBJdCBpcyB0aGUgcXVvdGVkIHN0cmluZworICAgIHdpdGhvdXQgYW55IGF0dGFjaGVkIENGV1MuCisgICAgIiIiCisgICAgcXVvdGVkX3N0cmluZyA9IFF1b3RlZFN0cmluZygpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2JhcmVfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gcXVvdGVkX3N0cmluZywgdmFsdWUKKworZGVmIGdldF9hdG9tKHZhbHVlKToKKyAgICAiIiJhdG9tID0gW0NGV1NdIDEqYXRleHQgW0NGV1NdCisKKyAgICAiIiIKKyAgICBhdG9tID0gQXRvbSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEFUT01fRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYXRvbSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCisgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0b20sIHZhbHVlCisKK2RlZiBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSk6CisgICAgIiIiIGRvdC10ZXh0ID0gMSphdGV4dCAqKCIuIiAxKmF0ZXh0KQorCisgICAgIiIiCisgICAgZG90X2F0b21fdGV4dCA9IERvdEF0b21UZXh0KCkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gaW4gQVRPTV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgYXRvbSBhdCBhIHN0YXJ0IG9mICIKKyAgICAgICAgICAgICJkb3QtYXRvbS10ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQVRPTV9FTkRTOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCisgICAgICAgIGRvdF9hdG9tX3RleHQuYXBwZW5kKHRva2VuKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQoRE9UKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBkb3RfYXRvbV90ZXh0Wy0xXSBpcyBET1Q6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBhdG9tIGF0IGVuZCBvZiBkb3QtYXRvbS10ZXh0ICIKKyAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KCcuJyt2YWx1ZSkpCisgICAgcmV0dXJuIGRvdF9hdG9tX3RleHQsIHZhbHVlCisKK2RlZiBnZXRfZG90X2F0b20odmFsdWUpOgorICAgICIiIiBkb3QtYXRvbSA9IFtDRldTXSBkb3QtYXRvbS10ZXh0IFtDRldTXQorCisgICAgIiIiCisgICAgZG90X2F0b20gPSBEb3RBdG9tKCkKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSkKKyAgICBkb3RfYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb3RfYXRvbSwgdmFsdWUKKworZGVmIGdldF93b3JkKHZhbHVlKToKKyAgICAiIiJ3b3JkID0gYXRvbSAvIHF1b3RlZC1zdHJpbmcKKworICAgIEVpdGhlciBhdG9tIG9yIHF1b3RlZC1zdHJpbmcgbWF5IHN0YXJ0IHdpdGggQ0ZXUy4gIFdlIGhhdmUgdG8gcGVlbCBvZmYgdGhpcworICAgIENGV1MgZmlyc3QgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgb2Ygd29yZCB0byBwYXJzZS4gIEFmdGVyd2FyZCB3ZSBzcGxpY2UKKyAgICB0aGUgbGVhZGluZyBDRldTLCBpZiBhbnksIGludG8gdGhlIHBhcnNlZCBzdWItdG9rZW4uCisKKyAgICBJZiBuZWl0aGVyIGFuIGF0b20gb3IgYSBxdW90ZWQtc3RyaW5nIGlzIGZvdW5kIGJlZm9yZSB0aGUgbmV4dCBzcGVjaWFsLCBhCisgICAgSGVhZGVyUGFyc2VFcnJvciBpcyByYWlzZWQuCisKKyAgICBUaGUgdG9rZW4gcmV0dXJuZWQgaXMgZWl0aGVyIGFuIEF0b20gb3IgYSBRdW90ZWRTdHJpbmcsIGFzIGFwcHJvcHJpYXRlLgorICAgIFRoaXMgbWVhbnMgdGhlICd3b3JkJyBsZXZlbCBvZiB0aGUgZm9ybWFsIGdyYW1tYXIgaXMgbm90IHJlcHJlc2VudGVkIGluIHRoZQorICAgIHBhcnNlIHRyZWU7IHRoaXMgaXMgYmVjYXVzZSBoYXZpbmcgdGhhdCBleHRyYSBsYXllciB3aGVuIG1hbmlwdWxhdGluZyB0aGUKKyAgICBwYXJzZSB0cmVlIGlzIG1vcmUgY29uZnVzaW5nIHRoYW4gaXQgaXMgaGVscGZ1bC4KKworICAgICIiIgorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgZWxzZToKKyAgICAgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdPT0nIic6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIGVsaWYgdmFsdWVbMF0gaW4gU1BFQ0lBTFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCAnYXRvbScgb3IgJ3F1b3RlZC1zdHJpbmcnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICByZXR1cm4gdG9rZW4sIHZhbHVlCisKK2RlZiBnZXRfcGhyYXNlKHZhbHVlKToKKyAgICAiIiIgcGhyYXNlID0gMSp3b3JkIC8gb2JzLXBocmFzZQorICAgICAgICBvYnMtcGhyYXNlID0gd29yZCAqKHdvcmQgLyAiLiIgLyBDRldTKQorCisgICAgVGhpcyBtZWFucyBhIHBocmFzZSBjYW4gYmUgYSBzZXF1ZW5jZSBvZiB3b3JkcywgcGVyaW9kcywgYW5kIENGV1MgaW4gYW55CisgICAgb3JkZXIgYXMgbG9uZyBhcyBpdCBzdGFydHMgd2l0aCBhdCBsZWFzdCBvbmUgd29yZC4gIElmIGFueXRoaW5nIG90aGVyIHRoYW4KKyAgICB3b3JkcyBpcyBkZXRlY3RlZCwgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0CisgICAgbGlzdC4gIFdlIGFsc28gYWNjZXB0IGEgcGhyYXNlIHRoYXQgc3RhcnRzIHdpdGggQ0ZXUyBmb2xsb3dlZCBieSBhIGRvdDsKKyAgICB0aGlzIGlzIHJlZ2lzdGVyZWQgYXMgYW4gSW52YWxpZEhlYWRlckRlZmVjdCwgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCBieQorICAgIGV2ZW4gdGhlIG9ic29sZXRlIGdyYW1tYXIuCisKKyAgICAiIiIKKyAgICBwaHJhc2UgPSBQaHJhc2UoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgIHBocmFzZS5hcHBlbmQodG9rZW4pCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBwaHJhc2UuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAicGhyYXNlIGRvZXMgbm90IHN0YXJ0IHdpdGggd29yZCIpKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFM6CisgICAgICAgIGlmIHZhbHVlWzBdPT0nLic6CisgICAgICAgICAgICBwaHJhc2UuYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgInBlcmlvZCBpbiAncGhyYXNlJyIpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVudCBmb3VuZCB3aXRob3V0IGF0b20iKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcGhyYXNlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gcGhyYXNlLCB2YWx1ZQorCitkZWYgZ2V0X2xvY2FsX3BhcnQodmFsdWUpOgorICAgICIiIiBsb2NhbC1wYXJ0ID0gZG90LWF0b20gLyBxdW90ZWQtc3RyaW5nIC8gb2JzLWxvY2FsLXBhcnQKKworICAgICIiIgorICAgIGxvY2FsX3BhcnQgPSBMb2NhbFBhcnQoKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgbG9jYWwtcGFydCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSAhPSAnXFwnIGFuZCB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdG9rZW4gPSBUb2tlbkxpc3QoKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBsb2NhbF9wYXJ0LmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nXFwnIG9yIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZSA9IGdldF9vYnNfbG9jYWxfcGFydChzdHIobG9jYWxfcGFydCkgKyB2YWx1ZSkKKyAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQudG9rZW5fdHlwZSA9PSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCc6CisgICAgICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGlzIG5vdCBkb3QtYXRvbSwgcXVvdGVkLXN0cmluZywgb3Igb2JzLWxvY2FsLXBhcnQiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGlzIG5vdCBhIGRvdC1hdG9tIChjb250YWlucyBDRldTKSIpKQorICAgICAgICBsb2NhbF9wYXJ0WzBdID0gb2JzX2xvY2FsX3BhcnQKKyAgICB0cnk6CisgICAgICAgIGxvY2FsX3BhcnQudmFsdWUuZW5jb2RlKCdhc2NpaScpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9uQVNDSUlMb2NhbFBhcnREZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMpIikpCisgICAgcmV0dXJuIGxvY2FsX3BhcnQsIHZhbHVlCisKK2RlZiBnZXRfb2JzX2xvY2FsX3BhcnQodmFsdWUpOgorICAgICIiIiBvYnMtbG9jYWwtcGFydCA9IHdvcmQgKigiLiIgd29yZCkKKyAgICAiIiIKKyAgICBvYnNfbG9jYWxfcGFydCA9IE9ic0xvY2FsUGFydCgpCisgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCisgICAgd2hpbGUgdmFsdWUgYW5kICh2YWx1ZVswXT09J1xcJyBvciB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFMpOgorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBpZiBsYXN0X25vbl93c193YXNfZG90OgorICAgICAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCByZXBlYXRlZCAnLiciKSkKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZChET1QpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gVHJ1ZQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsaWYgdmFsdWVbMF09PSdcXCc6CisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICInXFwnIGNoYXJhY3RlciBvdXRzaWRlIG9mIHF1b3RlZC1zdHJpbmcvY2NvbnRlbnQiKSkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBGYWxzZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQgYW5kIG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlICE9ICdkb3QnOgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIm1pc3NpbmcgJy4nIGJldHdlZW4gd29yZHMiKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gRmFsc2UKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgaWYgdmFsdWVbMF0gbm90IGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKHRva2VuKQorICAgIGlmIChvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlID09ICdkb3QnIG9yCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlPT0nY2Z3cycgYW5kCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFsxXS50b2tlbl90eXBlPT0nZG90Jyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgbGVhZGluZyAnLicgaW4gbG9jYWwgcGFydCIpKQorICAgIGlmIChvYnNfbG9jYWxfcGFydFstMV0udG9rZW5fdHlwZSA9PSAnZG90JyBvcgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbLTFdLnRva2VuX3R5cGU9PSdjZndzJyBhbmQKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0Wy0yXS50b2tlbl90eXBlPT0nZG90Jyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgdHJhaWxpbmcgJy4nIGluIGxvY2FsIHBhcnQiKSkKKyAgICBpZiBvYnNfbG9jYWxfcGFydC5kZWZlY3RzOgorICAgICAgICBvYnNfbG9jYWxfcGFydC50b2tlbl90eXBlID0gJ2ludmFsaWQtb2JzLWxvY2FsLXBhcnQnCisgICAgcmV0dXJuIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZQorCitkZWYgZ2V0X2R0ZXh0KHZhbHVlKToKKyAgICAiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKKyAgICAgICAgb2JzLWR0ZXh0ID0gb2JzLU5PLVdTLUNUTCAvIHF1b3RlZC1wYWlyCisKKyAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIGV4Y2x1ZGVkIGNoYXJhY3RlcnMsIGJ1dCBidXQgaWYgd2UgZmluZCBhbnkKKyAgICBBU0NJSSBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgUXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIKKyAgICB1bnF1b3RlZCB2YWx1ZXMsIHNvIHdoYXQgaXMgcmV0dXJuZWQgaXMgYSBwdGV4dCB0b2tlbiwgaW4gdGhpcyBjYXNlIGEKKyAgICBWYWx1ZVRlcm1pbmFsLiAgSWYgdGhlcmUgd2VyZSBxdW90ZWQtcHJpbnRhYmxlcywgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMKKyAgICBhZGRlZCB0byB0aGUgcmV0dXJuZWQgdG9rZW4ncyBkZWZlY3QgbGlzdC4KKworICAgICIiIgorICAgIHB0ZXh0LCB2YWx1ZSwgaGFkX3FwID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJ1tdJykKKyAgICBwdGV4dCA9IFZhbHVlVGVybWluYWwocHRleHQsICdwdGV4dCcpCisgICAgaWYgaGFkX3FwOgorICAgICAgICBwdGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAicXVvdGVkIHByaW50YWJsZSBmb3VuZCBpbiBkb21haW4tbGl0ZXJhbCIpKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgIGlmIHZhbHVlOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICJlbmQgb2YgaW5wdXQgaW5zaWRlIGRvbWFpbi1saXRlcmFsIikpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnZG9tYWluLWxpdGVyYWwtZW5kJykpCisgICAgcmV0dXJuIFRydWUKKworZGVmIGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSk6CisgICAgIiIiIGRvbWFpbi1saXRlcmFsID0gW0NGV1NdICJbIiAqKFtGV1NdIGR0ZXh0KSBbRldTXSAiXSIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBkb21haW5fbGl0ZXJhbCA9IERvbWFpbkxpdGVyYWwoKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkIGRvbWFpbi1saXRlcmFsIikKKyAgICBpZiB2YWx1ZVswXSAhPSAnWyc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnWycgYXQgc3RhcnQgb2YgZG9tYWluLWxpdGVyYWwgIgorICAgICAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnWycsICdkb21haW4tbGl0ZXJhbC1zdGFydCcpKQorICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kdGV4dCh2YWx1ZSkKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICAgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSAhPSAnXSc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnXScgYXQgZW5kIG9mIGRvbWFpbi1saXRlcmFsICIKKyAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnZG9tYWluLWxpdGVyYWwtZW5kJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorCitkZWYgZ2V0X2RvbWFpbih2YWx1ZSk6CisgICAgIiIiIGRvbWFpbiA9IGRvdC1hdG9tIC8gZG9tYWluLWxpdGVyYWwgLyBvYnMtZG9tYWluCisgICAgICAgIG9icy1kb21haW4gPSBhdG9tICooIi4iIGF0b20pKQorCisgICAgIiIiCisgICAgZG9tYWluID0gRG9tYWluKCkKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGRvbWFpbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBpZiB2YWx1ZVswXSA9PSAnWyc6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSkKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKKyAgICAgICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBkb21haW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgIGRvbWFpbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZG9tYWluIGlzIG5vdCBhIGRvdC1hdG9tIChjb250YWlucyBDRldTKSIpKQorICAgICAgICBpZiBkb21haW5bMF0udG9rZW5fdHlwZSA9PSAnZG90LWF0b20nOgorICAgICAgICAgICAgZG9tYWluWzpdID0gZG9tYWluWzBdCisgICAgICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBkb21haW4uYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlWzE6XSkKKyAgICAgICAgICAgIGRvbWFpbi5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKKworZGVmIGdldF9hZGRyX3NwZWModmFsdWUpOgorICAgICIiIiBhZGRyLXNwZWMgPSBsb2NhbC1wYXJ0ICJAIiBkb21haW4KKworICAgICIiIgorICAgIGFkZHJfc3BlYyA9IEFkZHJTcGVjKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbG9jYWxfcGFydCh2YWx1ZSkKKyAgICBhZGRyX3NwZWMuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnQCc6CisgICAgICAgIGFkZHJfc3BlYy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJhZGQtc3BlYyBsb2NhbCBwYXJ0IHdpdGggbm8gZG9tYWluIikpCisgICAgICAgIHJldHVybiBhZGRyX3NwZWMsIHZhbHVlCisgICAgYWRkcl9zcGVjLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCdAJywgJ2FkZHJlc3MtYXQtc3ltYm9sJykpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgYWRkcl9zcGVjLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQorCitkZWYgZ2V0X29ic19yb3V0ZSh2YWx1ZSk6CisgICAgIiIiIG9icy1yb3V0ZSA9IG9icy1kb21haW4tbGlzdCAiOiIKKyAgICAgICAgb2JzLWRvbWFpbi1saXN0ID0gKihDRldTIC8gIiwiKSAiQCIgZG9tYWluICooIiwiIFtDRldTXSBbIkAiIGRvbWFpbl0pCisKKyAgICAgICAgUmV0dXJucyBhbiBvYnMtcm91dGUgdG9rZW4gd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3ViLXRva2VucyAodGhhdCBpcywKKyAgICAgICAgdGhlcmUgaXMgbm8gb2JzLWRvbWFpbi1saXN0IGluIHRoZSBwYXJzZSB0cmVlKS4KKyAgICAiIiIKKyAgICBvYnNfcm91dGUgPSBPYnNSb3V0ZSgpCisgICAgd2hpbGUgdmFsdWUgYW5kICh2YWx1ZVswXT09JywnIG9yIHZhbHVlWzBdIGluIENGV1NfTEVBREVSKToKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJ0AnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBvYnMtcm91dGUgZG9tYWluIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIG9ic19yb3V0ZS5hcHBlbmQoUm91dGVDb21wb25lbnRNYXJrZXIpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF09PScsJzoKKyAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBicmVhaworICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJ0AnOgorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChSb3V0ZUNvbXBvbmVudE1hcmtlcikKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJlbmQgb2YgaGVhZGVyIHdoaWxlIHBhcnNpbmcgb2JzLXJvdXRlIikKKyAgICBpZiB2YWx1ZVswXSAhPSAnOic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCAiZXhwZWN0ZWQgJzonIG1hcmtpbmcgZW5kIG9mICIKKyAgICAgICAgICAgICJvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgb2JzX3JvdXRlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc6JywgJ2VuZC1vZi1vYnMtcm91dGUtbWFya2VyJykpCisgICAgcmV0dXJuIG9ic19yb3V0ZSwgdmFsdWVbMTpdCisKK2RlZiBnZXRfYW5nbGVfYWRkcih2YWx1ZSk6CisgICAgIiIiIGFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIGFkZHItc3BlYyAiPiIgW0NGV1NdIC8gb2JzLWFuZ2xlLWFkZHIKKyAgICAgICAgb2JzLWFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIG9icy1yb3V0ZSBhZGRyLXNwZWMgIj4iIFtDRldTXQorCisgICAgIiIiCisgICAgYW5nbGVfYWRkciA9IEFuZ2xlQWRkcigpCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJzwnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhbmdsZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGFuZ2xlX2FkZHIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzwnLCAnYW5nbGUtYWRkci1zdGFydCcpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgIyBBbHRob3VnaCBpdCBpcyBub3QgbGVnYWwgcGVyIFJGQzUzMjIsIFNNVFAgdXNlcyAnPD4nIGluIGNlcnRhaW4KKyAgICAjIGNpcmN1bXN0YW5jZXMuCisgICAgaWYgdmFsdWVbMF0gPT0gJz4nOgorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCisgICAgICAgIGFuZ2xlX2FkZHIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAibnVsbCBhZGRyLXNwZWMgaW4gYW5nbGUtYWRkciIpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICByZXR1cm4gYW5nbGVfYWRkciwgdmFsdWUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfb2JzX3JvdXRlKHZhbHVlKQorICAgICAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIm9ic29sZXRlIHJvdXRlIHNwZWNpZmljYXRpb24gaW4gYW5nbGUtYWRkciIpKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWRkci1zcGVjIG9yIG9icy1yb3V0ZSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc+JzoKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBlbHNlOgorICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIm1pc3NpbmcgdHJhaWxpbmcgJz4nIG9uIGFuZ2xlLWFkZHIiKSkKKyAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGFuZ2xlX2FkZHIsIHZhbHVlCisKK2RlZiBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKToKKyAgICAiIiIgZGlzcGxheS1uYW1lID0gcGhyYXNlCisKKyAgICBCZWNhdXNlIHRoaXMgaXMgc2ltcGx5IGEgbmFtZS1ydWxlLCB3ZSBkb24ndCByZXR1cm4gYSBkaXNwbGF5LW5hbWUKKyAgICB0b2tlbiBjb250YWluaW5nIGEgcGhyYXNlLCBidXQgcmF0aGVyIGEgZGlzcGxheS1uYW1lIHRva2VuIHdpdGgKKyAgICB0aGUgY29udGVudCBvZiB0aGUgcGhyYXNlLgorCisgICAgIiIiCisgICAgZGlzcGxheV9uYW1lID0gRGlzcGxheU5hbWUoKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgZGlzcGxheV9uYW1lLmV4dGVuZCh0b2tlbls6XSkKKyAgICBkaXNwbGF5X25hbWUuZGVmZWN0cyA9IHRva2VuLmRlZmVjdHNbOl0KKyAgICByZXR1cm4gZGlzcGxheV9uYW1lLCB2YWx1ZQorCisKK2RlZiBnZXRfbmFtZV9hZGRyKHZhbHVlKToKKyAgICAiIiIgbmFtZS1hZGRyID0gW2Rpc3BsYXktbmFtZV0gYW5nbGUtYWRkcgorCisgICAgIiIiCisgICAgbmFtZV9hZGRyID0gTmFtZUFkZHIoKQorICAgICMgQm90aCB0aGUgb3B0aW9uYWwgZGlzcGxheSBuYW1lIGFuZCB0aGUgYW5nbGUtYWRkciBjYW4gc3RhcnQgd2l0aCBjZndzLgorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbmFtZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQobGVhZGVyKSkKKyAgICBpZiB2YWx1ZVswXSAhPSAnPCc6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHRva2VuKSkKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5bMF1bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgbmFtZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYW5nbGVfYWRkcih2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgbmFtZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbmFtZV9hZGRyLCB2YWx1ZQorCitkZWYgZ2V0X21haWxib3godmFsdWUpOgorICAgICIiIiBtYWlsYm94ID0gbmFtZS1hZGRyIC8gYWRkci1zcGVjCisKKyAgICAiIiIKKyAgICAjIFRoZSBvbmx5IHdheSB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBuYW1lLWFkZHIgb3IgYW4KKyAgICAjIGFkZHItc3BlYyBpcyB0byB0cnkgcGFyc2luZyBlYWNoIG9uZS4KKyAgICBtYWlsYm94ID0gTWFpbGJveCgpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbmFtZV9hZGRyKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJfc3BlYyh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1haWxib3ggYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHRva2VuLmFsbF9kZWZlY3RzKToKKyAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICBtYWlsYm94LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbWFpbGJveCwgdmFsdWUKKworZGVmIGdldF9pbnZhbGlkX21haWxib3godmFsdWUsIGVuZGNoYXJzKToKKyAgICAiIiIgUmVhZCBldmVyeXRoaW5nIHVwIHRvIG9uZSBvZiB0aGUgY2hhcnMgaW4gZW5kY2hhcnMuCisKKyAgICBUaGlzIGlzIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyLiAgVGhlIEludmFsaWRNYWlsYm94IFRva2VuTGlzdCB0aGF0IGlzCisgICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgTWFpbGJveCwgYnV0IHRoZSBkYXRhIGF0dHJpYnV0ZXMgYXJlIE5vbmUuCisKKyAgICAiIiIKKyAgICBpbnZhbGlkX21haWxib3ggPSBJbnZhbGlkTWFpbGJveCgpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBlbmRjaGFyczoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGludmFsaWRfbWFpbGJveC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGludmFsaWRfbWFpbGJveCwgdmFsdWUKKworZGVmIGdldF9tYWlsYm94X2xpc3QodmFsdWUpOgorICAgICIiIiBtYWlsYm94LWxpc3QgPSAobWFpbGJveCAqKCIsIiBtYWlsYm94KSkgLyBvYnMtbWJveC1saXN0CisgICAgICAgIG9icy1tYm94LWxpc3QgPSAqKFtDRldTXSAiLCIpIG1haWxib3ggKigiLCIgW21haWxib3ggLyBDRldTXSkKKworICAgIEZvciB0aGlzIHJvdXRpbmUgd2UgZ28gb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIgaW4gb3JkZXIgdG8gaW1wcm92ZSBlcnJvcgorICAgIGhhbmRsaW5nLiAgV2UgcmVjb2duaXplIHRoZSBlbmQgb2YgdGhlIG1haWxib3ggbGlzdCBvbmx5IGF0IHRoZSBlbmQgb2YgdGhlCisgICAgdmFsdWUgb3IgYXQgYSAnOycgKHRoZSBncm91cCB0ZXJtaW5hdG9yKS4gIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gdHVybgorICAgIGludmFsaWQgbWFpbGJveGVzIGludG8gSW52YWxpZE1haWxib3ggdG9rZW5zIGFuZCBjb250aW51ZSBwYXJzaW5nIGFueQorICAgIHJlbWFpbmluZyB2YWxpZCBtYWlsYm94ZXMuICBXZSBhbHNvIGFsbG93IGFsbCBtYWlsYm94IGVudHJpZXMgdG8gYmUgbnVsbCwKKyAgICBhbmQgdGhpcyBjb25kaXRpb24gaXMgaGFuZGxlZCBhcHByb3ByaWF0ZWx5IGF0IGEgaGlnaGVyIGxldmVsLgorCisgICAgIiIiCisgICAgbWFpbGJveF9saXN0ID0gTWFpbGJveExpc3QoKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94KHZhbHVlKQorICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSBpbiAnLDsnOgorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gJyw7JzoKKyAgICAgICAgICAgICMgQ3JhcCBhZnRlciBtYWlsYm94OyB0cmVhdCBpdCBhcyBhbiBpbnZhbGlkIG1haWxib3guCisgICAgICAgICAgICAjIFRoZSBtYWlsYm94IGluZm8gd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUuCisgICAgICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Wy0xXQorICAgICAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICBtYWlsYm94LmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gbWFpbGJveF9saXN0LCB2YWx1ZQorCisKK2RlZiBnZXRfZ3JvdXBfbGlzdCh2YWx1ZSk6CisgICAgIiIiIGdyb3VwLWxpc3QgPSBtYWlsYm94LWxpc3QgLyBDRldTIC8gb2JzLWdyb3VwLWxpc3QKKyAgICAgICAgb2JzLWdyb3VwLWxpc3QgPSAxKihbQ0ZXU10gIiwiKSBbQ0ZXU10KKworICAgICIiIgorICAgIGdyb3VwX2xpc3QgPSBHcm91cExpc3QoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGJlZm9yZSBncm91cC1saXN0IikpCisgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gZW1haWwgcGFyc2luZywgc2luY2UgQ0ZXUy1vbmx5IGlzIGEKKyAgICAgICAgICAgICMgbGVnYWwgYWx0ZXJuYXRpdmUgdG8gZ3JvdXAtbGlzdCBpbiBhIGdyb3VwLCB3aGljaCBpcyB0aGUgb25seQorICAgICAgICAgICAgIyBwbGFjZSBncm91cC1saXN0IGFwcGVhcnMuCisgICAgICAgICAgICBncm91cF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluIGdyb3VwLWxpc3QiKSkKKyAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveF9saXN0KHZhbHVlKQorICAgIGlmIGxlbih0b2tlbi5hbGxfbWFpbGJveGVzKT09MDoKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICBncm91cF9saXN0LmV4dGVuZCh0b2tlbikKKyAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZ3JvdXAtbGlzdCB3aXRoIGVtcHR5IGVudHJpZXMiKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIGdyb3VwX2xpc3QuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorCitkZWYgZ2V0X2dyb3VwKHZhbHVlKToKKyAgICAiIiIgZ3JvdXAgPSBkaXNwbGF5LW5hbWUgIjoiIFtncm91cC1saXN0XSAiOyIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBncm91cCA9IEdyb3VwKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnOic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnOicgYXQgZW5kIG9mIGdyb3VwICIKKyAgICAgICAgICAgICJkaXNwbGF5IG5hbWUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc6JywgJ2dyb3VwLWRpc3BsYXktbmFtZS10ZXJtaW5hdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICBncm91cC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdncm91cC10ZXJtaW5hdG9yJykpCisgICAgICAgIHJldHVybiBncm91cCwgdmFsdWVbMTpdCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwX2xpc3QodmFsdWUpCisgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZ3JvdXAuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbiBncm91cCIpKQorICAgIGlmIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJzsnIGF0IGVuZCBvZiBncm91cCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAnZ3JvdXAtdGVybWluYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBncm91cCwgdmFsdWUKKworZGVmIGdldF9hZGRyZXNzKHZhbHVlKToKKyAgICAiIiIgYWRkcmVzcyA9IG1haWxib3ggLyBncm91cAorCisgICAgTm90ZSB0aGF0IGNvdW50ZXItaW50dWl0aXZlbHksIGFuIGFkZHJlc3MgY2FuIGJlIGVpdGhlciBhIHNpbmdsZSBhZGRyZXNzIG9yCisgICAgYSBsaXN0IG9mIGFkZHJlc3NlcyAoYSBncm91cCkuICBUaGlzIGlzIHdoeSB0aGUgcmV0dXJuZWQgQWRkcmVzcyBvYmplY3QgaGFzCisgICAgYSAnbWFpbGJveGVzJyBhdHRyaWJ1dGUgd2hpY2ggdHJlYXRzIGEgc2luZ2xlIGFkZHJlc3MgYXMgYSBsaXN0IG9mIGxlbmd0aAorICAgIG9uZS4gIFdoZW4geW91IG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRvIHR3byBjYXNlcywgZXh0cmFjdCB0aGUgc2luZ2xlCisgICAgZWxlbWVudCwgd2hpY2ggaXMgZWl0aGVyIGEgbWFpbGJveCBvciBhIGdyb3VwIHRva2VuLgorCisgICAgIiIiCisgICAgIyBUaGUgZm9ybWFsIGdyYW1tYXIgaXNuJ3QgdmVyeSBoZWxwZnVsIHdoZW4gcGFyc2luZyBhbiBhZGRyZXNzLiAgbWFpbGJveAorICAgICMgYW5kIGdyb3VwLCBlc3BlY2lhbGx5IHdoZW4gYWxsb3dpbmcgZm9yIG9ic29sZXRlIGZvcm1zLCBzdGFydCBvZmYgdmVyeQorICAgICMgc2ltaWxhcmx5LiAgSXQgaXMgb25seSB3aGVuIHlvdSByZWFjaCBvbmUgb2YgQCwgPCwgb3IgOiB0aGF0IHlvdSBrbm93CisgICAgIyB3aGF0IHlvdSd2ZSBnb3QuICBTbywgd2UgdHJ5IGVhY2ggb25lIGluIHR1cm4sIHN0YXJ0aW5nIHdpdGggdGhlIG1vcmUKKyAgICAjIGxpa2VseSBvZiB0aGUgdHdvLiAgV2UgY291bGQgcGVyaGFwcyBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnQgYnkgbG9va2luZworICAgICMgZm9yIGEgcGhyYXNlIGFuZCB0aGVuIGJyYW5jaGluZyBiYXNlZCBvbiB0aGUgbmV4dCBjaGFyYWN0ZXIsIGJ1dCB0aGF0CisgICAgIyB3b3VsZCBiZSBhIHByZW1hdHVyZSBvcHRpbWl6YXRpb24uCisgICAgYWRkcmVzcyA9IEFkZHJlc3MoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3godmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBhZGRyZXNzIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGFkZHJlc3MuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhZGRyZXNzLCB2YWx1ZQorCitkZWYgZ2V0X2FkZHJlc3NfbGlzdCh2YWx1ZSk6CisgICAgIiIiIGFkZHJlc3NfbGlzdCA9IChhZGRyZXNzICooIiwiIGFkZHJlc3MpKSAvIG9icy1hZGRyLWxpc3QKKyAgICAgICAgb2JzLWFkZHItbGlzdCA9ICooW0NGV1NdICIsIikgYWRkcmVzcyAqKCIsIiBbYWRkcmVzcyAvIENGV1NdKQorCisgICAgV2UgZGVwYXJ0IGZyb20gdGhlIGZvcm1hbCBncmFtbWFyIGhlcmUgYnkgY29udGludWluZyB0byBwYXJzZSB1bnRpbCB0aGUgZW5kCisgICAgb2YgdGhlIGlucHV0LCBhc3N1bWluZyB0aGUgaW5wdXQgdG8gYmUgZW50aXJlbHkgY29tcG9zZWQgb2YgYW4KKyAgICBhZGRyZXNzLWxpc3QuICBUaGlzIGlzIGFsd2F5cyB0cnVlIGluIGVtYWlsIHBhcnNpbmcsIGFuZCBhbGxvd3MgdXMKKyAgICB0byBza2lwIGludmFsaWQgYWRkcmVzc2VzIHRvIHBhcnNlIGFkZGl0aW9uYWwgdmFsaWQgb25lcy4KKworICAgICIiIgorICAgIGFkZHJlc3NfbGlzdCA9IEFkZHJlc3NMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJlc3ModmFsdWUpCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImFkZHJlc3MtbGlzdCBlbnRyeSB3aXRoIG5vIGNvbnRlbnQiKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYWRkcmVzcyBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnLCc6CisgICAgICAgICAgICAjIENyYXAgYWZ0ZXIgYWRkcmVzczsgdHJlYXQgaXQgYXMgYW4gaW52YWxpZCBtYWlsYm94LgorICAgICAgICAgICAgIyBUaGUgbWFpbGJveCBpbmZvIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgbWFpbGJveCA9IGFkZHJlc3NfbGlzdFstMV1bMF0KKyAgICAgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICBtYWlsYm94LmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZTogICMgTXVzdCBiZSBhICwgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLCcsICdsaXN0LXNlcGFyYXRvcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gYWRkcmVzc19saXN0LCB2YWx1ZQorCisjCisjIFhYWDogQXMgSSBiZWdpbiB0byBhZGQgYWRkaXRpb25hbCBoZWFkZXIgcGFyc2VycywgSSdtIHJlYWxpemluZyB3ZSBwcm9iYWJseQorIyBoYXZlIHR3byBsZXZlbCBvZiBwYXJzZXIgcm91dGluZXM6IHRoZSBnZXRfWFhYIG1ldGhvZHMgdGhhdCBnZXQgYSB0b2tlbiBpbgorIyB0aGUgZ3JhbW1hciwgYW5kIHBhcnNlX1hYWCBtZXRob2RzIHRoYXQgcGFyc2UgYW4gZW50aXJlIGZpZWxkIHZhbHVlLiAgU28KKyMgZ2V0X2FkZHJlc3NfbGlzdCBhYm92ZSBzaG91bGQgcmVhbGx5IGJlIGEgcGFyc2VfIG1ldGhvZCwgYXMgcHJvYmFibHkgc2hvdWxkCisjIGJlIGdldF91bnN0cnVjdHVyZWQuCisjCisKK2RlZiBwYXJzZV9taW1lX3ZlcnNpb24odmFsdWUpOgorICAgICIiIiBtaW1lLXZlcnNpb24gPSBbQ0ZXU10gMSpkaWdpdCBbQ0ZXU10gIi4iIFtDRldTXSAxKmRpZ2l0IFtDRldTXQorCisgICAgIiIiCisgICAgIyBUaGUgW0NGV1NdIGlzIGltcGxpY2l0IGluIHRoZSBSRkMgMjA0NSBCTkYuCisgICAgIyBYWFg6IFRoaXMgcm91dGluZSBpcyBhIGJpdCB2ZXJib3NlLCBzaG91bGQgZmFjdG9yIG91dCBhIGdldF9pbnQgbWV0aG9kLgorICAgIG1pbWVfdmVyc2lvbiA9IE1JTUVWZXJzaW9uKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBNSU1FIHZlcnNpb24gbnVtYmVyIChlZzogMS4wKSIpKQorICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCBvbmx5IENGV1MiKSkKKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnLicgYW5kIHZhbHVlWzBdIG5vdCBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IGRpZ2l0cy5pc2RpZ2l0KCk6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIG1ham9yIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQoZGlnaXRzKSkpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICd4dGV4dCcpKQorICAgIGVsc2U6CisgICAgICAgIG1pbWVfdmVyc2lvbi5tYWpvciA9IGludChkaWdpdHMpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICdkaWdpdHMnKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLic6CisgICAgICAgIGlmIG1pbWVfdmVyc2lvbi5tYWpvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlLCAneHRleHQnKSkKKyAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLicsICd2ZXJzaW9uLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGlmIG1pbWVfdmVyc2lvbi5tYWpvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCisgICAgICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSBtaW5vciB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgeyFyfSIuZm9ybWF0KGRpZ2l0cykpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKKyAgICBlbHNlOgorICAgICAgICBtaW1lX3ZlcnNpb24ubWlub3IgPSBpbnQoZGlnaXRzKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4Y2VzcyBub24tQ0ZXUyB0ZXh0IGFmdGVyIE1JTUUgdmVyc2lvbiIpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWUsICd4dGV4dCcpKQorICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKworZGVmIGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSk6CisgICAgIiIiIFJlYWQgZXZlcnl0aGluZyB1cCB0byB0aGUgbmV4dCAnOycuCisKKyAgICBUaGlzIGlzIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyLiAgVGhlIEludmFsaWRQYXJhbWV0ZXIgVG9rZW5MaXN0IHRoYXQgaXMKKyAgICByZXR1cm5lZCBhY3RzIGxpa2UgYSBQYXJhbWV0ZXIsIGJ1dCB0aGUgZGF0YSBhdHRyaWJ1dGVzIGFyZSBOb25lLgorCisgICAgIiIiCisgICAgaW52YWxpZF9wYXJhbWV0ZXIgPSBJbnZhbGlkUGFyYW1ldGVyKCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIGludmFsaWRfcGFyYW1ldGVyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGludmFsaWRfcGFyYW1ldGVyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gaW52YWxpZF9wYXJhbWV0ZXIsIHZhbHVlCisKK2RlZiBnZXRfdHRleHQodmFsdWUpOgorICAgICIiInR0ZXh0ID0gPG1hdGNoZXMgX3R0ZXh0X21hdGNoZXI+CisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLVRPS0VOX0VORFMgaW4gdHRleHQsIGJ1dCBhZGQgZGVmZWN0cyB0byB0aGUgdG9rZW4ncworICAgIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi10dGV4dCBjaGFyYWN0ZXJzLiAgV2UgYWxzbyByZWdpc3RlciBkZWZlY3RzIGZvcgorICAgICphbnkqIG5vbi1wcmludGFibGVzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndCBleGNsdWRlIGFsbCBvZiB0aGVtLAorICAgIGJlY2F1c2Ugd2UgZm9sbG93IHRoZSBzcGlyaXQgb2YgUkZDIDUzMjIuCisKKyAgICAiIiIKKyAgICBtID0gX25vbl90b2tlbl9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdHRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdHRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbih0dGV4dCk6XQorICAgIHR0ZXh0ID0gVmFsdWVUZXJtaW5hbCh0dGV4dCwgJ3R0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQodHRleHQpCisgICAgcmV0dXJuIHR0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X3Rva2VuKHZhbHVlKToKKyAgICAiIiJ0b2tlbiA9IFtDRldTXSAxKnR0ZXh0IFtDRldTXQorCisgICAgVGhlIFJGQyBlcXVpdmFsZW50IG9mIHR0ZXh0IGlzIGFueSBVUy1BU0NJSSBjaGFycyBleGNlcHQgc3BhY2UsIGN0bHMsIG9yCisgICAgdHNwZWNpYWxzLiAgV2UgYWxzbyBleGNsdWRlIHRhYnMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0LgorCisgICAgVGhlIFJGQyBpbXBsaWVzIHRoZSBDRldTIGJ1dCBpcyBub3QgZXhwbGljaXQgYWJvdXQgaXQgaW4gdGhlIEJORi4KKworICAgICIiIgorICAgIG10b2tlbiA9IFRva2VuKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBUT0tFTl9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdHRleHQodmFsdWUpCisgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBtdG9rZW4sIHZhbHVlCisKK2RlZiBnZXRfYXR0cnRleHQodmFsdWUpOgorICAgICIiImF0dHJ0ZXh0ID0gMSooYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBjaGFyYWN0ZXIpCisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGluIGF0dHJ0ZXh0LCBidXQgYWRkIGRlZmVjdHMgdG8gdGhlCisgICAgdG9rZW4ncyBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tYXR0cnRleHQgY2hhcmFjdGVycy4gIFdlIGFsc28gcmVnaXN0ZXIKKyAgICBkZWZlY3RzIGZvciAqYW55KiBub24tcHJpbnRhYmxlcyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QgZXhjbHVkZSBhbGwgb2YKKyAgICB0aGVtLCBiZWNhdXNlIHdlIGZvbGxvdyB0aGUgc3Bpcml0IG9mIFJGQyA1MzIyLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdHRydGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCisgICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnYXR0cnRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdHRydGV4dCkKKyAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCisKK2RlZiBnZXRfYXR0cmlidXRlKHZhbHVlKToKKyAgICAiIiIgW0NGV1NdIDEqYXR0cnRleHQgW0NGV1NdCisKKyAgICBUaGlzIHZlcnNpb24gb2YgdGhlIEJORiBtYWtlcyB0aGUgQ0ZXUyBleHBsaWNpdCwgYW5kIGFzIHVzdWFsIHdlIHVzZSBhCisgICAgdmFsdWUgdGVybWluYWwgZm9yIHRoZSBhY3R1YWwgcnVuIG9mIGNoYXJhY3RlcnMuICBUaGUgUkZDIGVxdWl2YWxlbnQgb2YKKyAgICBhdHRydGV4dCBpcyB0aGUgdG9rZW4gY2hhcmFjdGVycywgd2l0aCB0aGUgc3VidHJhY3Rpb24gb2YgJyonLCAiJyIsIGFuZCAnJScuCisgICAgV2UgaW5jbHVkZSB0YWIgaW4gdGhlIGV4Y2x1ZGVkIHNldCBqdXN0IGFzIHdlIGRvIGZvciB0b2tlbi4KKworICAgICIiIgorICAgIGF0dHJpYnV0ZSA9IEF0dHJpYnV0ZSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQVRUUklCVVRFX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHRva2VuIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRydGV4dCh2YWx1ZSkKKyAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0dHJpYnV0ZSwgdmFsdWUKKworZGVmIGdldF9leHRlbmRlZF9hdHRydGV4dCh2YWx1ZSk6CisgICAgIiIiYXR0cnRleHQgPSAxKihhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGNoYXJhY3RlciBwbHVzICclJykKKworICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhcnNpbmcgcm91dGluZSBzbyB0aGF0IHdlIGdldCBhIHZhbHVlIHRoYXQKKyAgICBpbmNsdWRlcyAlIGVzY2FwZXMgYXMgYSBzaW5nbGUgc3RyaW5nICh3aGljaCB3ZSBkZWNvZGUgYXMgYSBzaW5nbGUKKyAgICBzdHJpbmcgbGF0ZXIpLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBleHRlbmRlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdHRydGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCisgICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnZXh0ZW5kZWQtYXR0cnRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdHRydGV4dCkKKyAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCisKK2RlZiBnZXRfZXh0ZW5kZWRfYXR0cmlidXRlKHZhbHVlKToKKyAgICAiIiIgW0NGV1NdIDEqZXh0ZW5kZWRfYXR0cnRleHQgW0NGV1NdCisKKyAgICBUaGlzIGlzIGxpa2UgdGhlIG5vbi1leHRlbmRlZCB2ZXJzaW9uIGV4Y2VwdCB3ZSBhbGxvdyAlIGNoYXJhY3RlcnMsIHNvIHRoYXQKKyAgICB3ZSBjYW4gcGljayB1cCBhbiBlbmNvZGVkIHZhbHVlIGFzIGEgc2luZ2xlIHN0cmluZy4KKworICAgICIiIgorICAgICMgWFhYOiBzaG91bGQgd2UgaGF2ZSBhbiBFeHRlbmRlZEF0dHJpYnV0ZSBUb2tlbkxpc3Q/CisgICAgYXR0cmlidXRlID0gQXR0cmlidXRlKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2V4dGVuZGVkX2F0dHJ0ZXh0KHZhbHVlKQorICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYXR0cmlidXRlLCB2YWx1ZQorCitkZWYgZ2V0X3NlY3Rpb24odmFsdWUpOgorICAgICIiIiAnKicgZGlnaXRzCisKKyAgICBUaGUgZm9ybWFsIEJORiBpcyBtb3JlIGNvbXBsaWNhdGVkIGJlY2F1c2UgbGVhZGluZyAwcyBhcmUgbm90IGFsbG93ZWQuICBXZQorICAgIGNoZWNrIGZvciB0aGF0IGFuZCBhZGQgYSBkZWZlY3QuICBXZSBhbHNvIGFzc3VtZSBubyBDRldTIGlzIGFsbG93ZWQgYmV0d2VlbgorICAgIHRoZSAnKicgYW5kIHRoZSBkaWdpdHMsIHRob3VnaCB0aGUgUkZDIGlzIG5vdCBjcnlzdGFsIGNsZWFyIG9uIHRoYXQuCisgICAgVGhlIGNhbGxlciBzaG91bGQgYWxyZWFkeSBoYXZlIGRlYWx0IHdpdGggbGVhZGluZyBDRldTLgorCisgICAgIiIiCisgICAgc2VjdGlvbiA9IFNlY3Rpb24oKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnKic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBzZWN0aW9uIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSkKKyAgICBzZWN0aW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcqJywgJ3NlY3Rpb24tbWFya2VyJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgdmFsdWUgb3Igbm90IHZhbHVlWzBdLmlzZGlnaXQoKToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHNlY3Rpb24gbnVtYmVyIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXS5pc2RpZ2l0KCk6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIGRpZ2l0c1swXSA9PSAnMCcgYW5kIGRpZ2l0cyAhPSAnMCc6CisgICAgICAgIHNlY3Rpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJFcnJvcigic2VjdGlvbiBudW1iZXIiCisgICAgICAgICAgICAiaGFzIGFuIGludmFsaWQgbGVhZGluZyAwIikpCisgICAgc2VjdGlvbi5udW1iZXIgPSBpbnQoZGlnaXRzKQorICAgIHNlY3Rpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgcmV0dXJuIHNlY3Rpb24sIHZhbHVlCisKKworZGVmIGdldF92YWx1ZSh2YWx1ZSk6CisgICAgIiIiIHF1b3RlZC1zdHJpbmcgLyBhdHRyaWJ1dGUKKworICAgICIiIgorICAgIHYgPSBWYWx1ZSgpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgdmFsdWUgYnV0IGZvdW5kIGVuZCBvZiBzdHJpbmciKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHZhbHVlIGJ1dCBmb3VuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHt9Ii5mb3JtYXQobGVhZGVyKSkKKyAgICBpZiB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9leHRlbmRlZF9hdHRyaWJ1dGUodmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIHYuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiB2LCB2YWx1ZQorCitkZWYgZ2V0X3BhcmFtZXRlcih2YWx1ZSk6CisgICAgIiIiIGF0dHJpYnV0ZSBbc2VjdGlvbl0gWyIqIl0gW0NGV1NdICI9IiB2YWx1ZQorCisgICAgVGhlIENGV1MgaXMgaW1wbGllZCBieSB0aGUgUkZDIGJ1dCBub3QgbWFkZSBleHBsaWNpdCBpbiB0aGUgQk5GLiAgVGhpcworICAgIHNpbXBsaWZpZWQgZm9ybSBvZiB0aGUgQk5GIGZyb20gdGhlIFJGQyBpcyBtYWRlIHRvIGNvbmZvcm0gd2l0aCB0aGUgUkZDIEJORgorICAgIHRocm91Z2ggc29tZSBleHRyYSBjaGVja3MuICBXZSBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIGl0IG1ha2VzIGJvdGggZXJyb3IKKyAgICByZWNvdmVyeSBhbmQgd29ya2luZyB3aXRoIHRoZSByZXN1bHRpbmcgcGFyc2UgdHJlZSBlYXNpZXIuCisgICAgIiIiCisgICAgIyBJdCBpcyBwb3NzaWJsZSBDRldTIHdvdWxkIGFsc28gYmUgaW1wbGljaXRseSBhbGxvd2VkIGJldHdlZW4gdGhlIHNlY3Rpb24KKyAgICAjIGFuZCB0aGUgJ2V4dGVuZGVkLWF0dHJpYnV0ZScgbWFya2VyICh0aGUgJyonKSAsIGJ1dCB3ZSd2ZSBuZXZlciBzZWVuIHRoYXQKKyAgICAjIGluIHRoZSB3aWxkIGFuZCB3ZSB3aWxsIHRoZXJlZm9yZSBpZ25vcmUgdGhlIHBvc3NpYmlsaXR5LgorICAgIHBhcmFtID0gUGFyYW1ldGVyKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cmlidXRlKHZhbHVlKQorICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgiUGFyYW1ldGVyIGNvbnRhaW5zICIKKyAgICAgICAgICAgICJuYW1lICh7fSkgYnV0IG5vIHZhbHVlIi5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdID09ICcqJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3NlY3Rpb24odmFsdWUpCisgICAgICAgICAgICBwYXJhbS5zZWN0aW9uZWQgPSBUcnVlCisgICAgICAgICAgICBwYXJhbS5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkluY29tcGxldGUgcGFyYW1ldGVyIikKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJyonOgorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJyonLCAnZXh0ZW5kZWQtcGFyYW1ldGVyLW1hcmtlcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIHBhcmFtLmV4dGVuZGVkID0gVHJ1ZQorICAgIGlmIHZhbHVlWzBdICE9ICc9JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIlBhcmFtZXRlciBub3QgZm9sbG93ZWQgYnkgJz0nIikKKyAgICBwYXJhbS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPScsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcGFyYW0uYXBwZW5kKHRva2VuKQorICAgIHJlbWFpbmRlciA9IE5vbmUKKyAgICBhcHBlbmR0byA9IHBhcmFtCisgICAgaWYgcGFyYW0uZXh0ZW5kZWQgYW5kIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgICMgTm93IGZvciBzb21lIHNlcmlvdXMgaGFja2VyeSB0byBoYW5kbGUgdGhlIGNvbW1vbiBpbnZhbGlkIGNhc2Ugb2YKKyAgICAgICAgIyBkb3VibGUgcXVvdGVzIGFyb3VuZCBhbiBleHRlbmRlZCB2YWx1ZS4gIFdlIGFsc28gYWNjZXB0ICh3aXRoIGRlZmVjdCkKKyAgICAgICAgIyBhIHZhbHVlIG1hcmtlZCBhcyBlbmNvZGVkIHRoYXQgaXNuJ3QgcmVhbGx5LgorICAgICAgICBxc3RyaW5nLCByZW1haW5kZXIgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICAgICAgaW5uZXJfdmFsdWUgPSBxc3RyaW5nLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHNlbWlfdmFsaWQgPSBGYWxzZQorICAgICAgICBpZiBwYXJhbS5zZWN0aW9uX251bWJlciA9PSAwOgorICAgICAgICAgICAgaWYgaW5uZXJfdmFsdWUgYW5kIGlubmVyX3ZhbHVlWzBdID09ICInIjoKKyAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9hdHRydGV4dChpbm5lcl92YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiByZXN0IGFuZCByZXN0WzBdID09ICInIjoKKyAgICAgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9leHRlbmRlZF9hdHRydGV4dChpbm5lcl92YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN0OgorICAgICAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICBpZiBzZW1pX3ZhbGlkOgorICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIlF1b3RlZCBzdHJpbmcgdmFsdWUgZm9yIGV4dGVuZGVkIHBhcmFtZXRlciBpcyBpbnZhbGlkIikpCisgICAgICAgICAgICBwYXJhbS5hcHBlbmQocXN0cmluZykKKyAgICAgICAgICAgIGZvciB0IGluIHFzdHJpbmc6CisgICAgICAgICAgICAgICAgaWYgdC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICB0WzpdID0gW10KKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kdG8gPSB0CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB2YWx1ZSA9IGlubmVyX3ZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZW1haW5kZXIgPSBOb25lCisgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiUGFyYW1ldGVyIG1hcmtlZCBhcyBleHRlbmRlZCBidXQgYXBwZWFycyB0byBoYXZlIGEgIgorICAgICAgICAgICAgICAgICJxdW90ZWQgc3RyaW5nIHZhbHVlIHRoYXQgaXMgbm9uLWVuY29kZWQiKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gIiciOgorICAgICAgICB0b2tlbiA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdmFsdWUodmFsdWUpCisgICAgaWYgbm90IHBhcmFtLmV4dGVuZGVkIG9yIHBhcmFtLnNlY3Rpb25fbnVtYmVyID4gMDoKKyAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICInIjoKKyAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVtYWluZGVyCisgICAgICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCisgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkFwcGFyZW50IGluaXRpYWwtZXh0ZW5kZWQtdmFsdWUgYnV0IGF0dHJpYnV0ZSAiCisgICAgICAgICAgICAid2FzIG5vdCBtYXJrZWQgYXMgZXh0ZW5kZWQgb3Igd2FzIG5vdCBpbml0aWFsIHNlY3Rpb24iKSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICMgQXNzdW1lIHRoZSBjaGFyc2V0L2xhbmcgaXMgbWlzc2luZyBhbmQgdGhlIHRva2VuIGlzIHRoZSB2YWx1ZS4KKyAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiTWlzc2luZyByZXF1aXJlZCBjaGFyc2V0L2xhbmcgZGVsaW1pdGVycyIpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHJlbWFpbmRlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgIGVsc2U6CisgICAgICAgIGlmIHRva2VuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIHQgaW4gdG9rZW46CisgICAgICAgICAgICAgICAgaWYgdC50b2tlbl90eXBlID09ICdleHRlbmRlZC1hdHRydGV4dCc6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0LnRva2VuX3R5cGUgPT0gJ2F0dHJ0ZXh0JworICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHQpCisgICAgICAgICAgICBwYXJhbS5jaGFyc2V0ID0gdC52YWx1ZQorICAgICAgICBpZiB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgUkZDMjIzMSBjaGFyL2xhbmcgZW5jb2RpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGltaXRlciwgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCInIiwgJ1JGQzIyMzEgZGVsaW1pdGVyJykpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cnRleHQodmFsdWUpCisgICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBwYXJhbS5sYW5nID0gdG9rZW4udmFsdWUKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIFJGQzIyMzEgY2hhci9sYW5nIGVuY29kaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsaW1pdGVyLCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCInIiwgJ1JGQzIyMzEgZGVsaW1pdGVyJykpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAjIFRyZWF0IHRoZSByZXN0IG9mIHZhbHVlIGFzIGJhcmUgcXVvdGVkIHN0cmluZyBjb250ZW50LgorICAgICAgICB2ID0gVmFsdWUoKQorICAgICAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCisgICAgICAgICAgICB2LmFwcGVuZCh0b2tlbikKKyAgICAgICAgdG9rZW4gPSB2CisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3ZhbHVlKHZhbHVlKQorICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgIGFzc2VydCBub3QgdmFsdWUsIHZhbHVlCisgICAgICAgIHZhbHVlID0gcmVtYWluZGVyCisgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorCitkZWYgcGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlKToKKyAgICAiIiIgcGFyYW1ldGVyICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgVGhhdCBCTkYgaXMgbWVhbnQgdG8gaW5kaWNhdGUgdGhpcyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlcgorICAgIGZpbmRpbmcgYW5kIGhhbmRsaW5nIHRoZSBsZWFkaW5nICc7Jy4gIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcnVsZSBpbgorICAgIHRoZSBmb3JtYWwgUkZDIGdyYW1tYXIsIGJ1dCBpdCBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIHVzIGZvciB0aGUgc2V0IG9mCisgICAgcGFyYW1ldGVycyB0byBiZSB0cmVhdGVkIGFzIGl0cyBvd24gVG9rZW5MaXN0LgorCisgICAgVGhpcyBpcyAncGFyc2UnIHJvdXRpbmUgYmVjYXVzZSBpdCBjb25zdW1lcyB0aGUgcmVtaW5haW5nIHZhbHVlLCBidXQgaXQKKyAgICB3b3VsZCBuZXZlciBiZSBjYWxsZWQgdG8gcGFyc2UgYSBmdWxsIGhlYWRlci4gIEluc3RlYWQgaXQgaXMgY2FsbGVkIHRvCisgICAgcGFyc2UgZXZlcnl0aGluZyBhZnRlciB0aGUgbm9uLXBhcmFtZXRlciB2YWx1ZSBvZiBhIHNwZWNpZmljIE1JTUUgaGVhZGVyLgorCisgICAgIiIiCisgICAgbWltZV9wYXJhbWV0ZXJzID0gTWltZVBhcmFtZXRlcnMoKQorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWltZV9wYXJhbWV0ZXJzCisgICAgICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIgZW50cnkgd2l0aCBubyBjb250ZW50IikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXI6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBhcmFtZXRlciB7IXJ9Ii5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgICAgICMgSnVuayBhZnRlciB0aGUgb3RoZXJ3aXNlIHZhbGlkIHBhcmFtZXRlci4gIE1hcmsgaXQgYXMKKyAgICAgICAgICAgICMgaW52YWxpZCwgYnV0IGl0IHdpbGwgaGF2ZSBhIHZhbHVlLgorICAgICAgICAgICAgcGFyYW0gPSBtaW1lX3BhcmFtZXRlcnNbLTFdCisgICAgICAgICAgICBwYXJhbS50b2tlbl90eXBlID0gJ2ludmFsaWQtcGFyYW1ldGVyJworICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgcGFyYW0uZXh0ZW5kKHRva2VuKQorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIgd2l0aCBpbnZhbGlkIHRyYWlsaW5nIHRleHQgeyFyfSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgIyBNdXN0IGJlIGEgJzsnIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gbWltZV9wYXJhbWV0ZXJzCisKK2RlZiBfZmluZF9taW1lX3BhcmFtZXRlcnModG9rZW5saXN0LCB2YWx1ZSk6CisgICAgIiIiRG8gb3VyIGJlc3QgdG8gZmluZCB0aGUgcGFyYW1ldGVycyBpbiBhbiBpbnZhbGlkIE1JTUUgaGVhZGVyCisKKyAgICAiIiIKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4KKyAgICB0b2tlbmxpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIHRva2VubGlzdC5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisKK2RlZiBwYXJzZV9jb250ZW50X3R5cGVfaGVhZGVyKHZhbHVlKToKKyAgICAiIiIgbWFpbnR5cGUgIi8iIHN1YnR5cGUgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICBUaGUgbWFpbnR5cGUgYW5kIHN1YnN0eXBlIGFyZSB0b2tlbnMuICBUaGVvcmV0aWNhbGx5IHRoZXkgY291bGQKKyAgICBiZSBjaGVja2VkIGFnYWluc3QgdGhlIG9mZmljaWFsIElBTkEgbGlzdCArIHgtdG9rZW4sIGJ1dCB3ZQorICAgIGRvbid0IGRvIHRoYXQuCisgICAgIiIiCisgICAgY3R5cGUgPSBDb250ZW50VHlwZSgpCisgICAgcmVjb3ZlciA9IEZhbHNlCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHR5cGUgc3BlY2lmaWNhdGlvbiIpKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgbWFpbnR5cGUgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQodG9rZW4pCisgICAgIyBYWFg6IElmIHdlIHJlYWxseSB3YW50IHRvIGZvbGxvdyB0aGUgZm9ybWFsIGdyYW1tZXIgd2Ugc2hvdWxkIG1ha2UKKyAgICAjIG1hbnR5cGUgYW5kIHN1YnR5cGUgc3BlY2lhbGl6ZWQgVG9rZW5MaXN0cyBoZXJlLiAgUHJvYmFibHkgbm90IHdvcnRoIGl0LgorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLyc6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgY29udGVudCB0eXBlIikpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUubWFpbnR5cGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBjdHlwZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLycsICdjb250ZW50LXR5cGUtc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgc3VidHlwZSBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZCh0b2tlbikKKyAgICBjdHlwZS5zdWJ0eXBlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk9ubHkgcGFyYW1ldGVycyBhcmUgdmFsaWQgYWZ0ZXIgY29udGVudCB0eXBlLCBidXQgIgorICAgICAgICAgICAgImZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICAjIFRoZSBSRkMgcmVxdWlyZXMgdGhhdCBhIHN5bnRhY3RpY2FsbHkgaW52YWxpZCBjb250ZW50LXR5cGUgYmUgdHJlYXRlZAorICAgICAgICAjIGFzIHRleHQvcGxhaW4uICBQZXJoYXBzIHdlIHNob3VsZCBwb3N0ZWwgdGhpcywgYnV0IHdlIHNob3VsZCBwcm9iYWJseQorICAgICAgICAjIG9ubHkgZG8gdGhhdCBpZiB3ZSB3ZXJlIGNoZWNraW5nIHRoZSBzdWJ0eXBlIHZhbHVlIGFnYWluc3QgSUFOQS4KKyAgICAgICAgZGVsIGN0eXBlLm1haW50eXBlLCBjdHlwZS5zdWJ0eXBlCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICBjdHlwZS5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisgICAgcmV0dXJuIGN0eXBlCisKK2RlZiBwYXJzZV9jb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIGRpc3Bvc2l0aW9uLXR5cGUgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICAiIiIKKyAgICBkaXNwX2hlYWRlciA9IENvbnRlbnREaXNwb3NpdGlvbigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBkaXNwX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IGRpc3Bvc2l0aW9uIikpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCBkaXNwb3NpdGlvbiBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhkaXNwX2hlYWRlciwgdmFsdWUpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIGRpc3BfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICBkaXNwX2hlYWRlci5jb250ZW50X2Rpc3Bvc2l0aW9uID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGRpc3BfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk9ubHkgcGFyYW1ldGVycyBhcmUgdmFsaWQgYWZ0ZXIgY29udGVudCBkaXNwb3NpdGlvbiwgYnV0ICIKKyAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGRpc3BfaGVhZGVyLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgZGlzcF9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIGRpc3BfaGVhZGVyLmFwcGVuZChwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWVbMTpdKSkKKyAgICByZXR1cm4gZGlzcF9oZWFkZXIKKworZGVmIHBhcnNlX2NvbnRlbnRfdHJhbnNmZXJfZW5jb2RpbmdfaGVhZGVyKHZhbHVlKToKKyAgICAiIiIgbWVjaGFuaXNtCisKKyAgICAiIiIKKyAgICAjIFdlIHNob3VsZCBwcm9iYWJseSB2YWxpZGF0ZSB0aGUgdmFsdWVzLCBzaW5jZSB0aGUgbGlzdCBpcyBmaXhlZC4KKyAgICBjdGVfaGVhZGVyID0gQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY3RlX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCisgICAgICAgIHJldHVybiBjdGVfaGVhZGVyCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IHRybmFzZmVyIGVuY29kaW5nIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICBlbHNlOgorICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICAgICAgY3RlX2hlYWRlci5jdGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJldHVybiBjdGVfaGVhZGVyCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIGN0ZV9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXh0cmEgdGV4dCBhZnRlciBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgY3RlX2hlYWRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBjdGVfaGVhZGVyCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BhcnNlYWRkci5weSBiL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CmluZGV4IDc5NTczYzYuLmNkZmEzNzIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CisrKyBiL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CkBAIC00Nyw2ICs0NywyNSBAQAogCiAgICAgQWNjb3VudHMgZm9yIG1pbGl0YXJ5IHRpbWV6b25lcy4KICAgICAiIiIKKyAgICByZXMgPSBfcGFyc2VkYXRlX3R6KGRhdGEpCisgICAgaWYgbm90IHJlczoKKyAgICAgICAgcmV0dXJuCisgICAgaWYgcmVzWzldIGlzIE5vbmU6CisgICAgICAgIHJlc1s5XSA9IDAKKyAgICByZXR1cm4gdHVwbGUocmVzKQorCitkZWYgX3BhcnNlZGF0ZV90eihkYXRhKToKKyAgICAiIiJDb252ZXJ0IGRhdGUgdG8gZXh0ZW5kZWQgdGltZSB0dXBsZS4KKworICAgIFRoZSBsYXN0IChhZGRpdGlvbmFsKSBlbGVtZW50IGlzIHRoZSB0aW1lIHpvbmUgb2Zmc2V0IGluIHNlY29uZHMsIGV4Y2VwdCBpZgorICAgIHRoZSB0aW1lem9uZSB3YXMgc3BlY2lmaWVkIGFzIC0wMDAwLiAgSW4gdGhhdCBjYXNlIHRoZSBsYXN0IGVsZW1lbnQgaXMKKyAgICBOb25lLiAgVGhpcyBpbmRpY2F0ZXMgYSBVVEMgdGltZXN0YW1wIHRoYXQgZXhwbGljaXRseSBkZWNsYWltcyBrbm93bGVkZ2Ugb2YKKyAgICB0aGUgc291cmNlIHRpbWV6b25lLCBhcyBvcHBvc2VkIHRvIGEgKzAwMDAgdGltZXN0YW1wIHRoYXQgaW5kaWNhdGVzIHRoZQorICAgIHNvdXJjZSB0aW1lem9uZSByZWFsbHkgd2FzIFVUQy4KKworICAgICIiIgorICAgIGlmIG5vdCBkYXRhOgorICAgICAgICByZXR1cm4KICAgICBkYXRhID0gZGF0YS5zcGxpdCgpCiAgICAgIyBUaGUgRldTIGFmdGVyIHRoZSBjb21tYSBhZnRlciB0aGUgZGF5LW9mLXdlZWsgaXMgb3B0aW9uYWwsIHNvIHNlYXJjaCBhbmQKICAgICAjIGFkanVzdCBmb3IgdGhpcy4KQEAgLTk5LDYgKzExOCwxNCBAQAogICAgICAgICB0c3MgPSAnMCcKICAgICBlbGlmIGxlbih0bSkgPT0gMzoKICAgICAgICAgW3RoaCwgdG1tLCB0c3NdID0gdG0KKyAgICBlbGlmIGxlbih0bSkgPT0gMSBhbmQgJy4nIGluIHRtWzBdOgorICAgICAgICAjIFNvbWUgbm9uLWNvbXBsaWFudCBNVUFzIHVzZSAnLicgdG8gc2VwYXJhdGUgdGltZSBlbGVtZW50cy4KKyAgICAgICAgdG0gPSB0bVswXS5zcGxpdCgnLicpCisgICAgICAgIGlmIGxlbih0bSkgPT0gMjoKKyAgICAgICAgICAgIFt0aGgsIHRtbV0gPSB0bQorICAgICAgICAgICAgdHNzID0gMAorICAgICAgICBlbGlmIGxlbih0bSkgPT0gMzoKKyAgICAgICAgICAgIFt0aGgsIHRtbSwgdHNzXSA9IHRtCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICB0cnk6CkBAIC0xMzAsNiArMTU3LDggQEAKICAgICAgICAgICAgIHR6b2Zmc2V0ID0gaW50KHR6KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgdHpvZmZzZXQ9PTAgYW5kIHR6LnN0YXJ0c3dpdGgoJy0nKToKKyAgICAgICAgICAgIHR6b2Zmc2V0ID0gTm9uZQogICAgICMgQ29udmVydCBhIHRpbWV6b25lIG9mZnNldCBpbnRvIHNlY29uZHMgOyAtMDUwMCAtPiAtMTgwMDAKICAgICBpZiB0em9mZnNldDoKICAgICAgICAgaWYgdHpvZmZzZXQgPCAwOgpAQCAtMTM5LDcgKzE2OCw3IEBACiAgICAgICAgICAgICB0enNpZ24gPSAxCiAgICAgICAgIHR6b2Zmc2V0ID0gdHpzaWduICogKCAodHpvZmZzZXQvLzEwMCkqMzYwMCArICh0em9mZnNldCAlIDEwMCkqNjApCiAgICAgIyBEYXlsaWdodCBTYXZpbmcgVGltZSBmbGFnIGlzIHNldCB0byAtMSwgc2luY2UgRFNUIGlzIHVua25vd24uCi0gICAgcmV0dXJuIHl5LCBtbSwgZGQsIHRoaCwgdG1tLCB0c3MsIDAsIDEsIC0xLCB0em9mZnNldAorICAgIHJldHVybiBbeXksIG1tLCBkZCwgdGhoLCB0bW0sIHRzcywgMCwgMSwgLTEsIHR6b2Zmc2V0XQogCiAKIGRlZiBwYXJzZWRhdGUoZGF0YSk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwNjExNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMCwwICsxLDM1OCBAQAorIiIiUG9saWN5IGZyYW1ld29yayBmb3IgdGhlIGVtYWlsIHBhY2thZ2UuCisKK0FsbG93cyBmaW5lIGdyYWluZWQgZmVhdHVyZSBjb250cm9sIG9mIGhvdyB0aGUgcGFja2FnZSBwYXJzZXMgYW5kIGVtaXRzIGRhdGEuCisiIiIKKworaW1wb3J0IGFiYworZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVyCitmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0Citmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKKworX19hbGxfXyA9IFsKKyAgICAnUG9saWN5JywKKyAgICAnQ29tcGF0MzInLAorICAgICdjb21wYXQzMicsCisgICAgXQorCisKK2NsYXNzIF9Qb2xpY3lCYXNlOgorCisgICAgIiIiUG9saWN5IE9iamVjdCBiYXNpYyBmcmFtZXdvcmsuCisKKyAgICBUaGlzIGNsYXNzIGlzIHVzZWxlc3MgdW5sZXNzIHN1YmNsYXNzZWQuICBBIHN1YmNsYXNzIHNob3VsZCBkZWZpbmUKKyAgICBjbGFzcyBhdHRyaWJ1dGVzIHdpdGggZGVmYXVsdHMgZm9yIGFueSB2YWx1ZXMgdGhhdCBhcmUgdG8gYmUKKyAgICBtYW5hZ2VkIGJ5IHRoZSBQb2xpY3kgb2JqZWN0LiAgVGhlIGNvbnN0cnVjdG9yIHdpbGwgdGhlbiBhbGxvdworICAgIG5vbi1kZWZhdWx0IHZhbHVlcyB0byBiZSBzZXQgZm9yIHRoZXNlIGF0dHJpYnV0ZXMgYXQgaW5zdGFuY2UKKyAgICBjcmVhdGlvbiB0aW1lLiAgVGhlIGluc3RhbmNlIHdpbGwgYmUgY2FsbGFibGUsIHRha2luZyB0aGVzZSBzYW1lCisgICAgYXR0cmlidXRlcyBrZXl3b3JkIGFyZ3VtZW50cywgYW5kIHJldHVybmluZyBhIG5ldyBpbnN0YW5jZQorICAgIGlkZW50aWNhbCB0byB0aGUgY2FsbGVkIGluc3RhbmNlIGV4Y2VwdCBmb3IgdGhvc2UgdmFsdWVzIGNoYW5nZWQKKyAgICBieSB0aGUga2V5d29yZCBhcmd1bWVudHMuICBJbnN0YW5jZXMgbWF5IGJlIGFkZGVkLCB5aWVsZGluZyBuZXcKKyAgICBpbnN0YW5jZXMgd2l0aCBhbnkgbm9uLWRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHJpZ2h0IGhhbmQKKyAgICBvcGVyYW5kIG92ZXJyaWRpbmcgdGhvc2UgaW4gdGhlIGxlZnQgaGFuZCBvcGVyYW5kLiAgVGhhdCBpcywKKworICAgICAgICBBICsgQiA9PSBBKDxub24tZGVmYXVsdCB2YWx1ZXMgb2YgQj4pCisKKyAgICBUaGUgcmVwciBvZiBhbiBpbnN0YW5jZSBjYW4gYmUgdXNlZCB0byByZWNvbnN0cnVjdCB0aGUgb2JqZWN0CisgICAgaWYgYW5kIG9ubHkgaWYgdGhlIHJlcHIgb2YgdGhlIHZhbHVlcyBjYW4gYmUgdXNlZCB0byByZWNvbnN0cnVjdAorICAgIHRob3NlIHZhbHVlcy4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3cpOgorICAgICAgICAiIiJDcmVhdGUgbmV3IFBvbGljeSwgcG9zc2libHkgb3ZlcnJpZGluZyBzb21lIGRlZmF1bHRzLgorCisgICAgICAgIFNlZSBjbGFzcyBkb2NzdHJpbmcgZm9yIGEgbGlzdCBvZiBvdmVycmlkYWJsZSBhdHRyaWJ1dGVzLgorCisgICAgICAgICIiIgorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4ga3cuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgc3VwZXIoX1BvbGljeUJhc2Usc2VsZikuX19zZXRhdHRyX18obmFtZSwgdmFsdWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgInshcn0gaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhcmdzID0gWyAie309eyFyfSIuZm9ybWF0KG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpIF0KKyAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKQorCisgICAgZGVmIGNsb25lKHNlbGYsICoqa3cpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugd2l0aCBzcGVjaWZpZWQgYXR0cmlidXRlcyBjaGFuZ2VkLgorCisgICAgICAgIFRoZSBuZXcgaW5zdGFuY2UgaGFzIHRoZSBzYW1lIGF0dHJpYnV0ZSB2YWx1ZXMgYXMgdGhlIGN1cnJlbnQgb2JqZWN0LAorICAgICAgICBleGNlcHQgZm9yIHRoZSBjaGFuZ2VzIHBhc3NlZCBpbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgICAgICAiIiIKKyAgICAgICAgbmV3cG9saWN5ID0gc2VsZi5fX2NsYXNzX18uX19uZXdfXyhzZWxmLl9fY2xhc3NfXykKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIHNlbGYuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhuZXdwb2xpY3ksIGF0dHIsIHZhbHVlKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4ga3cuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgInshcn0gaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciwgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pKQorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKG5ld3BvbGljeSwgYXR0ciwgdmFsdWUpCisgICAgICAgIHJldHVybiBuZXdwb2xpY3kKKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBtc2cgPSAieyFyfSBvYmplY3QgYXR0cmlidXRlIHshcn0gaXMgcmVhZC1vbmx5IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gInshcn0gb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgeyFyfSIKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobXNnLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkpCisKKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIk5vbi1kZWZhdWx0IHZhbHVlcyBmcm9tIHJpZ2h0IG9wZXJhbmQgb3ZlcnJpZGUgdGhvc2UgZnJvbSBsZWZ0LgorCisgICAgICAgIFRoZSBvYmplY3QgcmV0dXJuZWQgaXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHN1YmNsYXNzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5jbG9uZSgqKm90aGVyLl9fZGljdF9fKQorCisKK2RlZiBfYXBwZW5kX2RvYyhkb2MsIGFkZGVkX2RvYyk6CisgICAgZG9jID0gZG9jLnJzcGxpdCgnXG4nLCAxKVswXQorICAgIGFkZGVkX2RvYyA9IGFkZGVkX2RvYy5zcGxpdCgnXG4nLCAxKVsxXQorICAgIHJldHVybiBkb2MgKyAnXG4nICsgYWRkZWRfZG9jCisKK2RlZiBfZXh0ZW5kX2RvY3N0cmluZ3MoY2xzKToKKyAgICBpZiBjbHMuX19kb2NfXyBhbmQgY2xzLl9fZG9jX18uc3RhcnRzd2l0aCgnKycpOgorICAgICAgICBjbHMuX19kb2NfXyA9IF9hcHBlbmRfZG9jKGNscy5fX2Jhc2VzX19bMF0uX19kb2NfXywgY2xzLl9fZG9jX18pCisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIGF0dHIuX19kb2NfXyBhbmQgYXR0ci5fX2RvY19fLnN0YXJ0c3dpdGgoJysnKToKKyAgICAgICAgICAgIGZvciBjIGluIChjIGZvciBiYXNlIGluIGNscy5fX2Jhc2VzX18gZm9yIGMgaW4gYmFzZS5tcm8oKSk6CisgICAgICAgICAgICAgICAgZG9jID0gZ2V0YXR0cihnZXRhdHRyKGMsIG5hbWUpLCAnX19kb2NfXycpCisgICAgICAgICAgICAgICAgaWYgZG9jOgorICAgICAgICAgICAgICAgICAgICBhdHRyLl9fZG9jX18gPSBfYXBwZW5kX2RvYyhkb2MsIGF0dHIuX19kb2NfXykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gY2xzCisKKworY2xhc3MgUG9saWN5KF9Qb2xpY3lCYXNlLCBtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorCisgICAgciIiIkNvbnRyb2xzIGZvciBob3cgbWVzc2FnZXMgYXJlIGludGVycHJldGVkIGFuZCBmb3JtYXR0ZWQuCisKKyAgICBNb3N0IG9mIHRoZSBjbGFzc2VzIGFuZCBtYW55IG9mIHRoZSBtZXRob2RzIGluIHRoZSBlbWFpbCBwYWNrYWdlIGFjY2VwdAorICAgIFBvbGljeSBvYmplY3RzIGFzIHBhcmFtZXRlcnMuICBBIFBvbGljeSBvYmplY3QgY29udGFpbnMgYSBzZXQgb2YgdmFsdWVzIGFuZAorICAgIGZ1bmN0aW9ucyB0aGF0IGNvbnRyb2wgaG93IGlucHV0IGlzIGludGVycHJldGVkIGFuZCBob3cgb3V0cHV0IGlzIHJlbmRlcmVkLgorICAgIEZvciBleGFtcGxlLCB0aGUgcGFyYW1ldGVyICdyYWlzZV9vbl9kZWZlY3QnIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGFuIFJGQworICAgIHZpb2xhdGlvbiByZXN1bHRzIGluIGFuIGVycm9yIGJlaW5nIHJhaXNlZCBvciBub3QsIHdoaWxlICdtYXhfbGluZV9sZW5ndGgnCisgICAgY29udHJvbHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIG91dHB1dCBsaW5lcyB3aGVuIGEgTWVzc2FnZSBpcyBzZXJpYWxpemVkLgorCisgICAgQW55IHZhbGlkIGF0dHJpYnV0ZSBtYXkgYmUgb3ZlcnJpZGRlbiB3aGVuIGEgUG9saWN5IGlzIGNyZWF0ZWQgYnkgcGFzc2luZworICAgIGl0IGFzIGEga2V5d29yZCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IuICBQb2xpY3kgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLAorICAgIGJ1dCBhIG5ldyBQb2xpY3kgb2JqZWN0IGNhbiBiZSBjcmVhdGVkIHdpdGggb25seSBjZXJ0YWluIHZhbHVlcyBjaGFuZ2VkIGJ5CisgICAgY2FsbGluZyB0aGUgUG9saWN5IGluc3RhbmNlIHdpdGgga2V5d29yZCBhcmd1bWVudHMuICBQb2xpY3kgb2JqZWN0cyBjYW4KKyAgICBhbHNvIGJlIGFkZGVkLCBwcm9kdWNpbmcgYSBuZXcgUG9saWN5IG9iamVjdCBpbiB3aGljaCB0aGUgbm9uLWRlZmF1bHQKKyAgICBhdHRyaWJ1dGVzIHNldCBpbiB0aGUgcmlnaHQgaGFuZCBvcGVyYW5kIG92ZXJ3cml0ZSB0aG9zZSBzcGVjaWZpZWQgaW4gdGhlCisgICAgbGVmdCBvcGVyYW5kLgorCisgICAgU2V0dGFibGUgYXR0cmlidXRlczoKKworICAgIHJhaXNlX29uX2RlZmVjdCAgICAgLS0gSWYgdHJ1ZSwgdGhlbiBkZWZlY3RzIHNob3VsZCBiZSByYWlzZWQgYXMgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogRmFsc2UuCisKKyAgICBsaW5lc2VwICAgICAgICAgICAgIC0tIHN0cmluZyBjb250YWluaW5nIHRoZSB2YWx1ZSB0byB1c2UgYXMgc2VwYXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiBvdXRwdXQgbGluZXMuICBEZWZhdWx0ICdcbicuCisKKyAgICBjdGVfdHlwZSAgICAgICAgICAgIC0tIFR5cGUgb2YgYWxsb3dlZCBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5ncworCisgICAgICAgICAgICAgICAgICAgICAgICAgICA3Yml0ICAtLSBBU0NJSSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICA4Yml0ICAtLSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0IGlzIGFsbG93ZWQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogOGJpdC4gIEFsc28gY29udHJvbHMgdGhlIGRpc3Bvc2l0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGluIGhlYWRlcnM7IHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gb2YgdGhlIGJpbmFyeV9mb2xkIG1ldGhvZC4KKworICAgIG1heF9saW5lX2xlbmd0aCAgICAgLS0gbWF4aW11bSBsZW5ndGggb2YgbGluZXMsIGV4Y2x1ZGluZyAnbGluZXNlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgc2VyaWFsaXphdGlvbi4gIE5vbmUgb3IgMCBtZWFucyBubyBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGluZyBpcyBkb25lLiAgRGVmYXVsdCBpcyA3OC4KKworICAgICIiIgorCisgICAgcmFpc2Vfb25fZGVmZWN0ID0gRmFsc2UKKyAgICBsaW5lc2VwID0gJ1xuJworICAgIGN0ZV90eXBlID0gJzhiaXQnCisgICAgbWF4X2xpbmVfbGVuZ3RoID0gNzgKKworICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKKyAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgorCisgICAgICAgICAgICBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICAgIGRlZmVjdCBzaG91bGQgYmUgYSBEZWZlY3Qgc3ViY2xhc3MsIGJ1dCBpbiBhbnkgY2FzZSBtdXN0IGJlIGFuCisgICAgICAgIEV4Y2VwdGlvbiBzdWJjbGFzcy4gIG9iaiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBkZWZlY3Qgc2hvdWxkIGJlCisgICAgICAgIHJlZ2lzdGVyZWQgaWYgaXQgaXMgbm90IHJhaXNlZC4gIElmIHRoZSByYWlzZV9vbl9kZWZlY3QgaXMgVHJ1ZSwgdGhlCisgICAgICAgIGRlZmVjdCBpcyByYWlzZWQgYXMgYW4gZXJyb3IsIG90aGVyd2lzZSB0aGUgb2JqZWN0IGFuZCB0aGUgZGVmZWN0IGFyZQorICAgICAgICBwYXNzZWQgdG8gcmVnaXN0ZXJfZGVmZWN0LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBwYXJzZXJzIHRoYXQgZGlzY292ZXIgZGVmZWN0cy4KKyAgICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgcGFyc2VycyBhbHdheXMgY2FsbCBpdCB3aXRoIERlZmVjdCBpbnN0YW5jZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYucmFpc2Vfb25fZGVmZWN0OgorICAgICAgICAgICAgcmFpc2UgZGVmZWN0CisgICAgICAgIHNlbGYucmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICIiIlJlY29yZCAnZGVmZWN0JyBvbiAnb2JqJy4KKworICAgICAgICBDYWxsZWQgYnkgaGFuZGxlX2RlZmVjdCBpZiByYWlzZV9vbl9kZWZlY3QgaXMgRmFsc2UuICBUaGlzIG1ldGhvZCBpcworICAgICAgICBwYXJ0IG9mIHRoZSBQb2xpY3kgQVBJIHNvIHRoYXQgUG9saWN5IHN1YmNsYXNzZXMgY2FuIGltcGxlbWVudCBjdXN0b20KKyAgICAgICAgZGVmZWN0IGhhbmRsaW5nLiAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlIGFwcGVuZCBtZXRob2Qgb2YKKyAgICAgICAgdGhlIGRlZmVjdHMgYXR0cmlidXRlIG9mIG9iai4gIFRoZSBvYmplY3RzIHVzZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UgYnkKKyAgICAgICAgZGVmYXVsdCB0aGF0IGdldCBwYXNzZWQgdG8gdGhpcyBtZXRob2Qgd2lsbCBhbHdheXMgaGF2ZSBhIGRlZmVjdHMKKyAgICAgICAgYXR0cmlidXRlIHdpdGggYW4gYXBwZW5kIG1ldGhvZC4KKworICAgICAgICAiIiIKKyAgICAgICAgb2JqLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKworICAgIGRlZiBoZWFkZXJfbWF4X2NvdW50KHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgaGVhZGVycyBuYW1lZCAnbmFtZScuCisKKyAgICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSBNZXNzYWdlIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZAorICAgICAgICB2YWx1ZSBpcyBub3QgMCBvciBOb25lLCBhbmQgdGhlcmUgYXJlIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoCisgICAgICAgIHRoZSBuYW1lICduYW1lJyBlcXVhbCB0byB0aGUgdmFsdWUgcmV0dXJuZWQsIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuCisKKyAgICAgICAgQmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBNZXNzYWdlJ3MgX19zZXRpdGVtX18gaXMgdG8gYXBwZW5kIHRoZQorICAgICAgICB2YWx1ZSB0byB0aGUgbGlzdCBvZiBoZWFkZXJzLCBpdCBpcyBlYXN5IHRvIGNyZWF0ZSBkdXBsaWNhdGUgaGVhZGVycworICAgICAgICB3aXRob3V0IHJlYWxpemluZyBpdC4gIFRoaXMgbWV0aG9kIGFsbG93cyBjZXJ0YWluIGhlYWRlcnMgdG8gYmUgbGltaXRlZAorICAgICAgICBpbiB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB0aGF0IGhlYWRlciB0aGF0IG1heSBiZSBhZGRlZCB0byBhCisgICAgICAgIE1lc3NhZ2UgcHJvZ3JhbW1hdGljYWxseS4gIChUaGUgbGltaXQgaXMgbm90IG9ic2VydmVkIGJ5IHRoZSBwYXJzZXIsCisgICAgICAgIHdoaWNoIHdpbGwgZmFpdGhmdWxseSBwcm9kdWNlIGFzIG1hbnkgaGVhZGVycyBhcyBleGlzdCBpbiB0aGUgbWVzc2FnZQorICAgICAgICBiZWluZyBwYXJzZWQuKQorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgTm9uZSBmb3IgYWxsIGhlYWRlciBuYW1lcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiJHaXZlbiBhIGxpc3Qgb2YgbGluZXNlcCB0ZXJtaW5hdGVkIHN0cmluZ3MgY29uc3RpdHV0aW5nIHRoZSBsaW5lcyBvZgorICAgICAgICBhIHNpbmdsZSBoZWFkZXIsIHJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSB0dXBsZSB0aGF0IHNob3VsZCBiZSBzdG9yZWQKKyAgICAgICAgaW4gdGhlIG1vZGVsLiAgVGhlIGlucHV0IGxpbmVzIHNob3VsZCByZXRhaW4gdGhlaXIgdGVybWluYXRpbmcgbGluZXNlcAorICAgICAgICBjaGFyYWN0ZXJzLiAgVGhlIGxpbmVzIHBhc3NlZCBpbiBieSB0aGUgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbgorICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBoZWFkZXJfc3RvcmVfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24KKyAgICAgICAgcHJvZ3JhbSwgcmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgbW9kZWwuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gdGhlIHZhbHVlCisgICAgICAgIHRvIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIHRoYXQgaXMgcmVxdWVzdGluZyB0aGF0CisgICAgICAgIGhlYWRlci4gIFRoZSB2YWx1ZSBwYXNzZWQgaW4gYnkgdGhlIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4KKyAgICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpZiB0aGUgbGluZXMgd2VyZSBwYXJzZWQgYnkgYSBCeXRlc1BhcnNlci4KKyAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBub3QgY29udGFpbiBhbnkgc3Vycm9nYXRlZXNjYXBlZCBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIGEgc3RyaW5nCisgICAgICAgIGNvbnRhaW5pbmcgbGluZXNlcCBjaGFyYWN0ZXJzIHRoYXQgaW1wbGVtZW50IHRoZSBmb2xkaW5nIG9mIHRoZSBoZWFkZXIKKyAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3kgY29udHJvbHMuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbAorICAgICAgICBwYWNrYWdlIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaWYgdGhlIGxpbmVzIHdlcmUKKyAgICAgICAgcGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIuICBUaGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIG5vdCBjb250YWluIGFueQorICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIGJpbmFyeQorICAgICAgICBkYXRhIGNvbnRhaW5pbmcgbGluZXNlcCBjaGFyYWN0ZXJzIHRoYXQgaW1wbGVtZW50IHRoZSBmb2xkaW5nIG9mIHRoZQorICAgICAgICBoZWFkZXIgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3kgY29udHJvbHMuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZQorICAgICAgICBlbWFpbCBwYWNrYWdlIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitAX2V4dGVuZF9kb2NzdHJpbmdzCitjbGFzcyBDb21wYXQzMihQb2xpY3kpOgorCisgICAgIiIiKworICAgIFRoaXMgcGFydGljdWxhciBwb2xpY3kgaXMgdGhlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgUG9saWN5LiAgSXQKKyAgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSB2ZXJzaW9uIDUuMS4KKyAgICAiIiIKKworICAgIGRlZiBfc2FuaXRpemVfaGVhZGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIyBJZiB0aGUgaGVhZGVyIHZhbHVlIGNvbnRhaW5zIHN1cnJvZ2F0ZXMsIHJldHVybiBhIEhlYWRlciB1c2luZworICAgICAgICAjIHRoZSB1bmtub3duLThiaXQgY2hhcnNldCB0byBlbmNvZGUgdGhlIGJ5dGVzIGFzIGVuY29kZWQgd29yZHMuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgYWxyZWFkeSBhIGhlYWRlciBvYmplY3QKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgcmV0dXJuIGhlYWRlci5IZWFkZXIodmFsdWUsIGNoYXJzZXQ9X2NoYXJzZXQuVU5LTk9XTjhCSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBkZWYgaGVhZGVyX3NvdXJjZV9wYXJzZShzZWxmLCBzb3VyY2VsaW5lcyk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICc6JyBhbmQgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYgdGhlCisgICAgICAgIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwgYW5kCisgICAgICAgIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG5hbWUsIHZhbHVlID0gc291cmNlbGluZXNbMF0uc3BsaXQoJzonLCAxKQorICAgICAgICB2YWx1ZSA9IHZhbHVlLmxzdHJpcCgnIFx0JykgKyAnJy5qb2luKHNvdXJjZWxpbmVzWzE6XSkKKyAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZS5yc3RyaXAoJ1xyXG4nKSkKKworICAgIGRlZiBoZWFkZXJfc3RvcmVfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUpCisKKyAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEgSGVhZGVyIG9iamVjdAorICAgICAgICB1c2luZyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQuICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zYW5pdGl6ZV9oZWFkZXIobmFtZSwgdmFsdWUpCisKKyAgICBkZWYgZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSBIZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcworICAgICAgICBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcyBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZQorICAgICAgICBtYXhfbGluZV9sZW5ndGguICBOb24tQVNDSUkgYmluYXJ5IGRhdGEgYXJlIENURSBlbmNvZGVkIHVzaW5nIHRoZQorICAgICAgICB1bmtub3duLThiaXQgY2hhcnNldC4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHNhbml0aXplPVRydWUpCisKKyAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgSGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMKKyAgICAgICAgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUKKyAgICAgICAgbWF4X2xpbmVfbGVuZ3RoLiAgSWYgY3RlX3R5cGUgaXMgN2JpdCwgbm9uLWFzY2lpIGJpbmFyeSBkYXRhIGlzIENURQorICAgICAgICBlbmNvZGVkIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlCisgICAgICAgIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZyBsaW5lIGJyZWFrcyBhbmQvb3IgYmluYXJ5IGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZvbGRlZCA9IHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHNhbml0aXplPXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKKyAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgbmFtZSwgdmFsdWUsIHNhbml0aXplKToKKyAgICAgICAgcGFydHMgPSBbXQorICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzOiAnICUgbmFtZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICAgICAgaWYgc2FuaXRpemU6CisgICAgICAgICAgICAgICAgICAgIGggPSBoZWFkZXIuSGVhZGVyKHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSByYXcgOGJpdCBkYXRhIGluIGEgYnl0ZSBzdHJpbmcsIHdlIGhhdmUgbm8gaWRlYQorICAgICAgICAgICAgICAgICAgICAjIHdoYXQgdGhlIGVuY29kaW5nIGlzLiAgVGhlcmUgaXMgbm8gc2FmZSB3YXkgdG8gc3BsaXQgdGhpcworICAgICAgICAgICAgICAgICAgICAjIHN0cmluZy4gIElmIGl0J3MgYXNjaWktc3Vic2V0LCB0aGVuIHdlIGNvdWxkIGRvIGEgbm9ybWFsCisgICAgICAgICAgICAgICAgICAgICMgYXNjaWkgc3BsaXQsIGJ1dCBpZiBpdCdzIG11bHRpYnl0ZSB0aGVuIHdlIGNvdWxkIGJyZWFrIHRoZQorICAgICAgICAgICAgICAgICAgICAjIHN0cmluZy4gIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgc28gdGhlIGxlYXN0IGhhcm0gc2VlbXMgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBiZSB0byBub3Qgc3BsaXQgdGhlIHN0cmluZyBhbmQgcmlzayBpdCBiZWluZyB0b28gbG9uZy4KKyAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBoID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoID0gaGVhZGVyLkhlYWRlcih2YWx1ZSwgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQXNzdW1lIGl0IGlzIGEgSGVhZGVyLWxpa2Ugb2JqZWN0LgorICAgICAgICAgICAgaCA9IHZhbHVlCisgICAgICAgIGlmIGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoaC5lbmNvZGUobGluZXNlcD1zZWxmLmxpbmVzZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGluZWxlbj1zZWxmLm1heF9saW5lX2xlbmd0aCkpCisgICAgICAgIHBhcnRzLmFwcGVuZChzZWxmLmxpbmVzZXApCisgICAgICAgIHJldHVybiAnJy5qb2luKHBhcnRzKQorCisKK2NvbXBhdDMyID0gQ29tcGF0MzIoKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2FyY2hpdGVjdHVyZS5yc3QgYi9MaWIvZW1haWwvYXJjaGl0ZWN0dXJlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGQyNGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL2FyY2hpdGVjdHVyZS5yc3QKQEAgLTAsMCArMSwyMTYgQEAKKzptb2Q6YGVtYWlsYCBQYWNrYWdlIEFyY2hpdGVjdHVyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK092ZXJ2aWV3CistLS0tLS0tLQorCitUaGUgZW1haWwgcGFja2FnZSBjb25zaXN0cyBvZiB0aHJlZSBtYWpvciBjb21wb25lbnRzOgorCisgICAgTW9kZWwKKyAgICAgICAgQW4gb2JqZWN0IHN0cnVjdHVyZSB0aGF0IHJlcHJlc2VudHMgYW4gZW1haWwgbWVzc2FnZSwgYW5kIHByb3ZpZGVzIGFuCisgICAgICAgIEFQSSBmb3IgY3JlYXRpbmcsIHF1ZXJ5aW5nLCBhbmQgbW9kaWZ5aW5nIGEgbWVzc2FnZS4KKworICAgIFBhcnNlcgorICAgICAgICBUYWtlcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgb3IgYnl0ZXMgYW5kIHByb2R1Y2VzIGEgbW9kZWwgb2YgdGhlCisgICAgICAgIGVtYWlsIG1lc3NhZ2UgcmVwcmVzZW50ZWQgYnkgdGhvc2UgY2hhcmFjdGVycyBvciBieXRlcy4KKworICAgIEdlbmVyYXRvcgorICAgICAgICBUYWtlcyBhIG1vZGVsIGFuZCB0dXJucyBpdCBpbnRvIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBvciBieXRlcy4gIFRoZQorICAgICAgICBzZXF1ZW5jZSBjYW4gZWl0aGVyIGJlIGludGVuZGVkIGZvciBodW1hbiBjb25zdW1wdGlvbiAoYSBwcmludGFibGUKKyAgICAgICAgdW5pY29kZSBzdHJpbmcpIG9yIGJ5dGVzIHN1aXRhYmxlIGZvciB0cmFuc21pc3Npb24gb3ZlciB0aGUgd2lyZS4gIEluCisgICAgICAgIHRoZSBsYXR0ZXIgY2FzZSBhbGwgZGF0YSBpcyBwcm9wZXJseSBlbmNvZGVkIHVzaW5nIHRoZSBjb250ZW50IHRyYW5zZmVyCisgICAgICAgIGVuY29kaW5ncyBzcGVjaWZpZWQgYnkgdGhlIHJlbGV2YW50IFJGQ3MuCisKK0NvbmNlcHR1YWxseSB0aGUgcGFja2FnZSBpcyBvcmdhbml6ZWQgYXJvdW5kIHRoZSBtb2RlbC4gIFRoZSBtb2RlbCBwcm92aWRlcyBib3RoCisiZXh0ZXJuYWwiIEFQSXMgaW50ZW5kZWQgZm9yIHVzZSBieSBhcHBsaWNhdGlvbiBwcm9ncmFtcyB1c2luZyB0aGUgbGlicmFyeSwKK2FuZCAiaW50ZXJuYWwiIEFQSXMgaW50ZW5kZWQgZm9yIHVzZSBieSB0aGUgUGFyc2VyIGFuZCBHZW5lcmF0b3IgY29tcG9uZW50cy4KK1RoaXMgZGl2aXNpb24gaXMgaW50ZW50aW9uYWxseSBhIGJpdCBmdXp5OyB0aGUgQVBJIGRlc2NyaWJlZCBieSB0aGlzIGRvY3VtZW50YXRpb24KK2lzIGFsbCBhIHB1YmxpYywgc3RhYmxlIEFQSS4gIFRoaXMgYWxsb3dzIGZvciBhbiBhcHBsaWNhdGlvbiB3aXRoIHNwZWNpYWwgbmVlZHMKK3RvIGltcGxlbWVudCBpdHMgb3duIHBhcnNlciBhbmQvb3IgZ2VuZXJhdG9yLgorCitJbiBhZGRpdGlvbiB0byB0aGUgdGhyZWUgbWFqb3IgZnVuY3Rpb25hbCBjb21wb25lbnRzLCB0aGVyZSBpcyBhIHRoaXJkIGtleQorY29tcG9uZW50IHRvIHRoZSBhcmNoaXRlY3R1cmU6CisKKyAgICBQb2xpY3kKKyAgICAgICAgQW4gb2JqZWN0IHRoYXQgc3BlY2lmaWVzIHZhcmlvdXMgYmVoYXZpb3JhbCBzZXR0aW5ncyBhbmQgY2FycmllcworICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBiZWhhdmlvci1jb250cm9sbGluZyBtZXRob2RzLgorCitUaGUgUG9saWN5IGZyYW1ld29yayBwcm92aWRlcyBhIHNpbXBsZSBhbmQgY29udmVuaWVudCB3YXkgdG8gY29udHJvbCB0aGUKK2JlaGF2aW9yIG9mIHRoZSBsaWJyYXJ5LCBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHRoZSBsaWJyYXJ5IHRvIGJlIHVzZWQgaW4gYQordmVyeSBmbGV4aWJsZSBmYXNoaW9uIHdoaWxlIGxldmVyYWdpbmcgdGhlIGNvbW1vbiBjb2RlIHJlcXVpcmVkIHRvIHBhcnNlLAorcmVwcmVzZW50LCBhbmQgZ2VuZXJhdGUgbWVzc2FnZS1saWtlIG9iamVjdHMuICBGb3IgZXhhbXBsZSwgaW4gYWRkaXRpb24gdG8gdGhlCitkZWZhdWx0IDpyZmM6YDUzMjJgIGVtYWlsIG1lc3NhZ2UgcG9saWN5LCB3ZSBhbHNvIGhhdmUgYSBwb2xpY3kgdGhhdCBtYW5hZ2VzCitIVFRQIGhlYWRlcnMgaW4gYSBmYXNoaW9uIGNvbXBsaWFudCB3aXRoIDpyZmM6YDI2MTZgLiAgSW5kaXZpZHVhbCBwb2xpY3kKK2NvbnRyb2xzLCBzdWNoIGFzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IsIGNhbiBhbHNvCitiZSBjb250cm9sbGVkIGluZGl2aWR1YWxseSB0byBtZWV0IHNwZWNpYWxpemVkIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4KKworCitUaGUgTW9kZWwKKy0tLS0tLS0tLQorCitUaGUgbWVzc2FnZSBtb2RlbCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcy4KK1RoZSBtb2RlbCBkaXZpZGVzIGEgbWVzc2FnZSBpbnRvIHRoZSB0d28gZnVuZGFtZW50YWwgcGFydHMgZGlzY3Vzc2VkIGJ5IHRoZQorUkZDOiB0aGUgaGVhZGVyIHNlY3Rpb24gYW5kIHRoZSBib2R5LiAgVGhlIGBNZXNzYWdlYCBvYmplY3QgYWN0cyBhcyBhCitwc2V1ZG8tZGljdGlvbmFyeSBvZiBuYW1lZCBoZWFkZXJzLiAgSXRzIGRpY3Rpb25hcnkgaW50ZXJmYWNlIHByb3ZpZGVzCitjb252ZW5pZW50IGFjY2VzcyB0byBpbmRpdmlkdWFsIGhlYWRlcnMgYnkgbmFtZS4gIEhvd2V2ZXIsIGFsbCBoZWFkZXJzIGFyZSBrZXB0CitpbnRlcm5hbGx5IGluIGFuIG9yZGVyZWQgbGlzdCwgc28gdGhhdCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yZGVyIG9mIHRoZQoraGVhZGVycyBpbiB0aGUgb3JpZ2luYWwgbWVzc2FnZSBpcyBwcmVzZXJ2ZWQuCisKK1RoZSBgTWVzc2FnZWAgb2JqZWN0IGFsc28gaGFzIGEgYHBheWxvYWRgIHRoYXQgaG9sZHMgdGhlIGJvZHkuICBBIGBwYXlsb2FkYCBjYW4KK2JlIG9uZSBvZiB0d28gdGhpbmdzOiBkYXRhLCBvciBhIGxpc3Qgb2YgYE1lc3NhZ2VgIG9iamVjdHMuICBUaGUgbGF0dGVyIGlzIHVzZWQKK3RvIHJlcHJlc2VudCBhIG11bHRpcGFydCBNSU1FIG1lc3NhZ2UuICBMaXN0cyBjYW4gYmUgbmVzdGVkIGFyYml0cmFyaWx5IGRlZXBseQoraW4gb3JkZXIgdG8gcmVwcmVzZW50IHRoZSBtZXNzYWdlLCB3aXRoIGFsbCB0ZXJtaW5hbCBsZWF2ZXMgaGF2aW5nIG5vbi1saXN0CitkYXRhIHBheWxvYWRzLgorCisKK01lc3NhZ2UgTGlmZWN5Y2xlCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZ2VuZXJhbCBsaWZlY3lsZSBvZiBhIG1lc3NhZ2UgaXM6CisKKyAgICBDcmVhdGlvbgorICAgICAgICBBIGBNZXNzYWdlYCBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgYnkgYSBQYXJzZXIsIG9yIGl0IGNhbiBiZQorICAgICAgICBpbnN0YW50aWF0ZWQgYXMgYW4gZW1wdHkgbWVzc2FnZSBieSBhbiBhcHBsaWNhdGlvbi4KKworICAgIE1hbmlwdWxhdGlvbgorICAgICAgICBUaGUgYXBwbGljYXRpb24gbWF5IGV4YW1pbmUgb25lIG9yIG1vcmUgaGVhZGVycywgYW5kL29yIHRoZQorICAgICAgICBwYXlsb2FkLCBhbmQgaXQgbWF5IG1vZGlmeSBvbmUgb3IgbW9yZSBoZWFkZXJzIGFuZC9vcgorICAgICAgICB0aGUgcGF5bG9hZC4gIFRoaXMgbWF5IGJlIGRvbmUgb24gdGhlIHRvcCBsZXZlbCBgTWVzc2FnZWAKKyAgICAgICAgb2JqZWN0LCBvciBvbiBhbnkgc3ViLW9iamVjdC4KKworICAgIEZpbmFsaXphdGlvbgorICAgICAgICBUaGUgTW9kZWwgaXMgY29udmVydGVkIGludG8gYSB1bmljb2RlIG9yIGJpbmFyeSBzdHJlYW0sCisgICAgICAgIG9yIHRoZSBtb2RlbCBpcyBkaXNjYXJkZWQuCisKKworCitIZWFkZXIgUG9saWN5IENvbnRyb2wgRHVyaW5nIExpZmVjeWNsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25lIG9mIHRoZSBtYWpvciBjb250cm9scyBleGVydGVkIGJ5IHRoZSBQb2xpY3kgaXMgdGhlIG1hbmFnZW1lbnQgb2YgaGVhZGVycworZHVyaW5nIHRoZSBgTWVzc2FnZWAgbGlmZWN5Y2xlLiAgTW9zdCBhcHBsaWNhdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSBhd2FyZSBvZgordGhpcy4KKworQSBoZWFkZXIgZW50ZXJzIHRoZSBtb2RlbCBpbiBvbmUgb2YgdHdvIHdheXM6IHZpYSBhIFBhcnNlciwgb3IgYnkgYmVpbmcgc2V0IHRvCithIHNwZWNpZmljIHZhbHVlIGJ5IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gYWZ0ZXIgdGhlIE1vZGVsIGFscmVhZHkgZXhpc3RzLgorU2ltaWxhcmx5LCBhIGhlYWRlciBleGl0cyB0aGUgbW9kZWwgaW4gb25lIG9mIHR3byB3YXlzOiBieSBiZWluZyBzZXJpYWxpemVkIGJ5CithIEdlbmVyYXRvciwgb3IgYnkgYmVpbmcgcmV0cmlldmVkIGZyb20gYSBNb2RlbCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtLiAgVGhlCitQb2xpY3kgb2JqZWN0IHByb3ZpZGVzIGhvb2tzIGZvciBhbGwgZm91ciBvZiB0aGVzZSBwYXRod2F5cy4KKworVGhlIG1vZGVsIHN0b3JhZ2UgZm9yIGhlYWRlcnMgaXMgYSBsaXN0IG9mIChuYW1lLCB2YWx1ZSkgdHVwbGVzLgorCitUaGUgUGFyc2VyIGlkZW50aWZpZXMgaGVhZGVycyBkdXJpbmcgcGFyc2luZywgYW5kIHBhc3NlcyB0aGVtIHRvIHRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2VgIG1ldGhvZCBvZiB0aGUgUG9saWN5LiAgVGhlCityZXN1bHQgb2YgdGhhdCBtZXRob2QgaXMgdGhlIChuYW1lLCB2YWx1ZSkgdHVwbGUgdG8gYmUgc3RvcmVkIGluIHRoZSBtb2RlbC4KKworV2hlbiBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHN1cHBsaWVzIGEgaGVhZGVyIHZhbHVlIChmb3IgZXhhbXBsZSwgdGhyb3VnaCB0aGUKK2BNZXNzYWdlYCBvYmplY3QgYF9fc2V0aXRlbV9fYCBpbnRlcmZhY2UpLCB0aGUgbmFtZSBhbmQgdGhlIHZhbHVlIGFyZSBwYXNzZWQgdG8KK3RoZSA6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlYCBtZXRob2Qgb2YgdGhlIFBvbGljeSwgd2hpY2gKK3JldHVybnMgdGhlIChuYW1lLCB2YWx1ZSkgdHVwbGUgdG8gYmUgc3RvcmVkIGluIHRoZSBtb2RlbC4KKworV2hlbiBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHJldHJpZXZlcyBhIGhlYWRlciAodGhyb3VnaCBhbnkgb2YgdGhlIGRpY3Qgb3IgbGlzdAoraW50ZXJmYWNlcyBvZiBgTWVzc2FnZWApLCB0aGUgbmFtZSBhbmQgdmFsdWUgYXJlIHBhc3NlZCB0byB0aGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2VgIG1ldGhvZCBvZiB0aGUgUG9saWN5IHRvCitvYnRhaW4gdGhlIHZhbHVlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4KKworV2hlbiBhIEdlbmVyYXRvciByZXF1ZXN0cyBhIGhlYWRlciBkdXJpbmcgc2VyaWFsaXphdGlvbiwgdGhlIG5hbWUgYW5kIHZhbHVlIGFyZQorcGFzc2VkIHRvIHRoZSA6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuZm9sZGAgbWV0aG9kIG9mIHRoZSBQb2xpY3ksIHdoaWNoCityZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgbGluZSBicmVha3MgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4gIFRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBQb2xpY3kgY29udHJvbCBkZXRlcm1pbmVzIHdoZXRoZXIgb3IKK25vdCBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIGlzIHBlcmZvcm1lZCBvbiB0aGUgZGF0YSBpbiB0aGUgaGVhZGVyLiAgVGhlcmUgaXMKK2Fsc28gYSA6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuYmluYXJ5X2ZvbGRgIG1ldGhvZCBmb3IgdXNlIGJ5IGdlbmVyYXRvcnMKK3RoYXQgcHJvZHVjZSBiaW5hcnkgb3V0cHV0LCB3aGljaCByZXR1cm5zIHRoZSBmb2xkZWQgaGVhZGVyIGFzIGJpbmFyeSBkYXRhLAorcG9zc2libHkgZm9sZGVkIGF0IGRpZmZlcmVudCBwbGFjZXMgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcgd291bGQgYmUuCisKKworSGFuZGxpbmcgQmluYXJ5IERhdGEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGFuIGlkZWFsIHdvcmxkIGFsbCBtZXNzYWdlIGRhdGEgd291bGQgY29uZm9ybSB0byB0aGUgUkZDcywgbWVhbmluZyB0aGF0IHRoZQorcGFyc2VyIGNvdWxkIGRlY29kZSB0aGUgbWVzc2FnZSBpbnRvIHRoZSBpZGVhbGl6ZWQgdW5pY29kZSBtZXNzYWdlIHRoYXQgdGhlCitzZW5kZXIgb3JpZ2luYWxseSB3cm90ZS4gIEluIHRoZSByZWFsIHdvcmxkLCB0aGUgZW1haWwgcGFja2FnZSBtdXN0IGFsc28gYmUKK2FibGUgdG8gZGVhbCB3aXRoIGJhZGx5IGZvcm1hdHRlZCBtZXNzYWdlcywgaW5jbHVkaW5nIG1lc3NhZ2VzIGNvbnRhaW5pbmcKK25vbi1BU0NJSSBjaGFyYWN0ZXJzIHRoYXQgZWl0aGVyIGhhdmUgbm8gaW5kaWNhdGVkIGNoYXJhY3RlciBzZXQgb3IgYXJlIG5vdAordmFsaWQgY2hhcmFjdGVycyBpbiB0aGUgaW5kaWNhdGVkIGNoYXJhY3RlciBzZXQuCisKK1NpbmNlIGVtYWlsIG1lc3NhZ2VzIGFyZSAqcHJpbWFyaWx5KiB0ZXh0IGRhdGEsIGFuZCBvcGVyYXRpb25zIG9uIG1lc3NhZ2UgZGF0YQorYXJlIHByaW1hcmlseSB0ZXh0IG9wZXJhdGlvbnMgKGV4Y2VwdCBmb3IgYmluYXJ5IHBheWxvYWRzIG9mIGNvdXJzZSksIHRoZSBtb2RlbAorc3RvcmVzIGFsbCB0ZXh0IGRhdGEgYXMgdW5pY29kZSBzdHJpbmdzLiAgVW4tZGVjb2RhYmxlIGJpbmFyeSBpbnNpZGUgdGV4dAorZGF0YSBpcyBoYW5kbGVkIGJ5IHVzaW5nIHRoZSBgc3Vycm9nYXRlZXNjYXBlYCBlcnJvciBoYW5kbGVyIG9mIHRoZSBBU0NJSQorY29kZWMuICBBcyB3aXRoIHRoZSBiaW5hcnkgZmlsZW5hbWVzIHRoZSBlcnJvciBoYW5kbGVyIHdhcyBpbnRyb2R1Y2VkIHRvCitoYW5kbGUsIHRoaXMgYWxsb3dzIHRoZSBlbWFpbCBwYWNrYWdlIHRvICJjYXJyeSIgdGhlIGJpbmFyeSBkYXRhIHJlY2VpdmVkCitkdXJpbmcgcGFyc2luZyBhbG9uZyB1bnRpbCB0aGUgb3V0cHV0IHN0YWdlLCBhdCB3aGljaCB0aW1lIGl0IGlzIHJlZ2VuZXJhdGVkCitpbiBpdHMgb3JpZ2luYWwgZm9ybS4KKworVGhpcyBjYXJyaWVkIGJpbmFyeSBkYXRhIGlzIGFsbW9zdCBlbnRpcmVseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGUgb25lCitwbGFjZSB3aGVyZSBpdCBpcyB2aXNpYmxlIGluIHRoZSBBUEkgaXMgaW4gdGhlICJpbnRlcm5hbCIgQVBJLiAgQSBQYXJzZXIgbXVzdAorZG8gdGhlIGBzdXJyb2dhdGVlc2NhcGVgIGVuY29kaW5nIG9mIGJpbmFyeSBpbnB1dCBkYXRhLCBhbmQgcGFzcyB0aGF0IGRhdGEgdG8KK3RoZSBhcHByb3ByaWF0ZSBQb2xpY3kgbWV0aG9kLiAgVGhlICJpbnRlcm5hbCIgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIEdlbmVyYXRvcgordG8gYWNjZXNzIGhlYWRlciB2YWx1ZXMgcHJlc2VydmVzIHRoZSBgc3Vycm9nYXRlZXNjYXBlZGAgYnl0ZXMuICBBbGwgb3RoZXIKK2ludGVyZmFjZXMgY29udmVydCB0aGUgYmluYXJ5IGRhdGEgZWl0aGVyIGJhY2sgaW50byBieXRlcyBvciBpbnRvIGEgc2FmZSBmb3JtCisobG9zaW5nIGluZm9ybWF0aW9uIGluIHNvbWUgY2FzZXMpLgorCisKK0JhY2t3YXJkIENvbXBhdGliaWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuQ29tcGF0MzJgIFBvbGljeSBwcm92aWRlcyBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSB3aXRoIHZlcnNpb24gNS4xIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgSXQgZG9lcyB0aGlzIHZpYSB0aGUKK2ZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZm91cisxIFBvbGljeSBtZXRob2RzIGRlc2NyaWJlZCBhYm92ZToKKworaGVhZGVyX3NvdXJjZV9wYXJzZQorICAgIFNwbGl0cyB0aGUgZmlyc3QgbGluZSBvbiB0aGUgY29sb24gdG8gb2J0YWluIHRoZSBuYW1lLCBkaXNjYXJkcyBhbnkgc3BhY2VzCisgICAgYWZ0ZXIgdGhlIGNvbG9uLCBhbmQgam9pbnMgdGhlIHJlbWFpbmRlciBvZiB0aGUgbGluZSB3aXRoIGFsbCBvZiB0aGUKKyAgICByZW1haW5pbmcgbGluZXMsIHByZXNlcnZpbmcgdGhlIGxpbmVzZXAgY2hhcmFjdGVycyB0byBvYnRhaW4gdGhlIHZhbHVlLgorICAgIFRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBhbmQvb3IgbGluZWZlZWQgY2hhcmFjdGVycyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUKKyAgICByZXN1bHRpbmcgdmFsdWUgc3RyaW5nLgorCitoZWFkZXJfc3RvcmVfcGFyc2UKKyAgICBSZXR1cm5zIHRoZSBuYW1lIGFuZCB2YWx1ZSBleGFjdGx5IGFzIHJlY2VpdmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uLgorCitoZWFkZXJfZmV0Y2hfcGFyc2UKKyAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYW55IGBzdXJyb2dhdGVlc2NhcGVkYCBiaW5hcnkgZGF0YSwgcmV0dXJuIHRoZSB2YWx1ZQorICAgIGFzIGEgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0LCB1c2luZyB0aGUgY2hhcmFjdGVyIHNldAorICAgIGB1bmtub3duLThiaXRgLiAgT3RoZXJ3aXNlIGp1c3QgcmV0dXJucyB0aGUgdmFsdWUuCisKK2ZvbGQKKyAgICBVc2VzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgJ3MgZm9sZGluZyB0byBmb2xkIGhlYWRlcnMgaW4gdGhlCisgICAgc2FtZSB3YXkgdGhlIGVtYWlsNS4xIGdlbmVyYXRvciBkaWQuCisKK2JpbmFyeV9mb2xkCisgICAgU2FtZSBhcyBmb2xkLCBidXQgZW5jb2RlcyB0byAnYXNjaWknLgorCisKK05ldyBBbGdvcml0aG0KKy0tLS0tLS0tLS0tLS0KKworaGVhZGVyX3NvdXJjZV9wYXJzZQorICAgIFNhbWUgYXMgbGVnYWN5IGJlaGF2aW9yLgorCitoZWFkZXJfc3RvcmVfcGFyc2UKKyAgICBTYW1lIGFzIGxlZ2FjeSBiZWhhdmlvci4KKworaGVhZGVyX2ZldGNoX3BhcnNlCisgICAgSWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0LCByZXR1cm5zIGl0LiAgT3RoZXJ3aXNlLCBwYXJzZXMgdGhlCisgICAgdmFsdWUgdXNpbmcgdGhlIG5ldyBwYXJzZXIsIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgb2JqZWN0IGFzIHRoZSB2YWx1ZS4KKyAgICBgc3Vycm9nYXRlZXNjYXBlZGAgYnl0ZXMgZ2V0IHR1cm5lZCBpbnRvIHVuaWNvZGUgdW5rbm93biBjaGFyYWN0ZXIgY29kZQorICAgIHBvaW50cy4KKworZm9sZAorICAgIFVzZXMgdGhlIG5ldyBoZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHJlc3BlY3RpbmcgdGhlIHBvbGljeSBzZXR0aW5ncy4KKyAgICBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGFyZSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQgZm9yCisgICAgYGBjdGVfdHlwZT03Yml0YGAgb3IgYGA4Yml0YGAuICBSZXR1cm5zIGEgc3RyaW5nLgorCisgICAgQXQgc29tZSBwb2ludCB0aGVyZSB3aWxsIGFsc28gYmUgYSBgYGN0ZV90eXBlPXVuaWNvZGVgYCwgYW5kIGZvciB0aGF0CisgICAgcG9saWN5IGZvbGQgd2lsbCBzZXJpYWxpemUgdGhlIGlkZWFsaXplZCB1bmljb2RlIG1lc3NhZ2Ugd2l0aCBSRkMtbGlrZQorICAgIGZvbGRpbmcsIGNvbnZlcnRpbmcgYW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgaW50byB0aGUgdW5pY29kZQorICAgIHVua25vd24gY2hhcmFjdGVyIGdseXBoLgorCitiaW5hcnlfZm9sZAorICAgIFVzZXMgdGhlIG5ldyBoZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHJlc3BlY3RpbmcgdGhlIHBvbGljeSBzZXR0aW5ncy4KKyAgICBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGFyZSBlbmNvZGVkIHVzaW5nIHRoZSBgdW5rbm93bi04Yml0YCBjaGFyc2V0IGZvcgorICAgIGBgY3RlX3R5cGU9N2JpdGBgLCBhbmQgZ2V0IHR1cm5lZCBiYWNrIGludG8gYnl0ZXMgZm9yIGBgY3RlX3R5cGU9OGJpdGBgLgorICAgIFJldHVybnMgYnl0ZXMuCisKKyAgICBBdCBzb21lIHBvaW50IHRoZXJlIHdpbGwgYWxzbyBiZSBhIGBgY3RlX3R5cGU9dW5pY29kZWBgLCBhbmQgZm9yIHRoYXQKKyAgICBwb2xpY3kgYmluYXJ5X2ZvbGQgd2lsbCBzZXJpYWxpemUgdGhlIG1lc3NhZ2UgYWNjb3JkaW5nIHRvIDpyZmM6YGA1MzM1YGAuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZXJyb3JzLnB5IGIvTGliL2VtYWlsL2Vycm9ycy5weQppbmRleCBkNTJhNjI0Li43OTEyMzlmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZXJyb3JzLnB5CisrKyBiL0xpYi9lbWFpbC9lcnJvcnMucHkKQEAgLTUsNyArNSw2IEBACiAiIiJlbWFpbCBwYWNrYWdlIGV4Y2VwdGlvbiBjbGFzc2VzLiIiIgogCiAKLQwKIGNsYXNzIE1lc3NhZ2VFcnJvcihFeGNlcHRpb24pOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIGVycm9ycyBpbiB0aGUgZW1haWwgcGFja2FnZS4iIiIKIApAQCAtMzAsMTIgKzI5LDEzIEBACiAgICAgIiIiQW4gaWxsZWdhbCBjaGFyc2V0IHdhcyBnaXZlbi4iIiIKIAogCi0MCiAjIFRoZXNlIGFyZSBwYXJzaW5nIGRlZmVjdHMgd2hpY2ggdGhlIHBhcnNlciB3YXMgYWJsZSB0byB3b3JrIGFyb3VuZC4KLWNsYXNzIE1lc3NhZ2VEZWZlY3Q6CitjbGFzcyBNZXNzYWdlRGVmZWN0KFZhbHVlRXJyb3IpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIGEgbWVzc2FnZSBkZWZlY3QuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZT1Ob25lKToKKyAgICAgICAgaWYgbGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obGluZSkKICAgICAgICAgc2VsZi5saW5lID0gbGluZQogCiBjbGFzcyBOb0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoTWVzc2FnZURlZmVjdCk6CkBAIC00NCwxNCArNDQsNjQgQEAKIGNsYXNzIFN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJUaGUgY2xhaW1lZCBzdGFydCBib3VuZGFyeSB3YXMgbmV2ZXIgZm91bmQuIiIiCiAKK2NsYXNzIENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJBIHN0YXJ0IGJvdW5kYXJ5IHdhcyBmb3VuZCwgYnV0IG5vdCB0aGUgY29ycmVzcG9uZGluZyBjbG9zZSBib3VuZGFyeS4iIiIKKwogY2xhc3MgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiQSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbiBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4iIiIKIAogY2xhc3MgTWlzcGxhY2VkRW52ZWxvcGVIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiQSAnVW5peC1mcm9tJyBoZWFkZXIgd2FzIGZvdW5kIGluIHRoZSBtaWRkbGUgb2YgYSBoZWFkZXIgYmxvY2suIiIiCiAKLWNsYXNzIE1hbGZvcm1lZEhlYWRlckRlZmVjdChNZXNzYWdlRGVmZWN0KToKLSAgICAiIiJGb3VuZCBhIGhlYWRlciB0aGF0IHdhcyBtaXNzaW5nIGEgY29sb24sIG9yIHdhcyBvdGhlcndpc2UgbWFsZm9ybWVkLiIiIgorY2xhc3MgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiRm91bmQgbGluZSB3aXRoIG5vIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbm8gY29sb24gYmVmb3JlIGJsYW5rIGxpbmUuIiIiCisjIFhYWDogYmFja3dhcmQgY29tcGF0aWJpbGl0eSwganVzdCBpbiBjYXNlIChpdCB3YXMgbmV2ZXIgZW1pdHRlZCkuCitNYWxmb3JtZWRIZWFkZXJEZWZlY3QgPSBNaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdAogCiBjbGFzcyBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYSBtdWx0aXBhcnQgYnV0IG5vIHN1YnBhcnRzIHdlcmUgZm91bmQuIiIiCisKK2NsYXNzIEludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJBbiBpbnZhbGlkIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcgd2FzIHNldCBvbiB0aGUgbXVsdGlwYXJ0IGl0c2VsZi4iIiIKKworY2xhc3MgVW5kZWNvZGFibGVCeXRlc0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJIZWFkZXIgY29udGFpbmVkIGJ5dGVzIHRoYXQgY291bGQgbm90IGJlIGRlY29kZWQiIiIKKworY2xhc3MgSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiYmFzZTY0IGVuY29kZWQgc2VxdWVuY2UgaGFkIGFuIGluY29ycmVjdCBsZW5ndGgiIiIKKworY2xhc3MgSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiYmFzZTY0IGVuY29kZWQgc2VxdWVuY2UgaGFkIGNoYXJhY3RlcnMgbm90IGluIGJhc2U2NCBhbHBoYWJldCIiIgorCisjIFRoZXNlIGVycm9ycyBhcmUgc3BlY2lmaWMgdG8gaGVhZGVyIHBhcnNpbmcuCisKK2NsYXNzIEhlYWRlckRlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBhIGhlYWRlciBkZWZlY3QuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorCitjbGFzcyBJbnZhbGlkSGVhZGVyRGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIiSGVhZGVyIGlzIG5vdCB2YWxpZCwgbWVzc2FnZSBnaXZlcyBkZXRhaWxzLiIiIgorCitjbGFzcyBIZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZShIZWFkZXJEZWZlY3QpOgorICAgICIiIkEgaGVhZGVyIHRoYXQgbXVzdCBoYXZlIGEgdmFsdWUgaGFkIG5vbmUiIiIKKworY2xhc3MgTm9uUHJpbnRhYmxlRGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIiQVNDSUkgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBhc2NpaS1wcmludGFibGUgcmFuZ2UgZm91bmQiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub25fcHJpbnRhYmxlcyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obm9uX3ByaW50YWJsZXMpCisgICAgICAgIHNlbGYubm9uX3ByaW50YWJsZXMgPSBub25fcHJpbnRhYmxlcworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAoInRoZSBmb2xsb3dpbmcgQVNDSUkgbm9uLXByaW50YWJsZXMgZm91bmQgaW4gaGVhZGVyOiAiCisgICAgICAgICAgICAie30iLmZvcm1hdChzZWxmLm5vbl9wcmludGFibGVzKSkKKworY2xhc3MgT2Jzb2xldGVIZWFkZXJEZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJIZWFkZXIgdXNlcyBzeW50YXggZGVjbGFyZWQgb2Jzb2xldGUgYnkgUkZDIDUzMjIiIiIKKworY2xhc3MgTm9uQVNDSUlMb2NhbFBhcnREZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJsb2NhbF9wYXJ0IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIiIiCisgICAgIyBUaGlzIGRlZmVjdCBvbmx5IG9jY3VycyBkdXJpbmcgdW5pY29kZSBwYXJzaW5nLCBub3Qgd2hlbgorICAgICMgcGFyc2luZyBtZXNzYWdlcyBkZWNvZGVkIGZyb20gYmluYXJ5LgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQppbmRleCAxNmVkMjg4Li5lYTQxZTk1IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weQorKysgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQpAQCAtMjUsNiArMjUsNyBAQAogCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiAKIE5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCiBOTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQpAQCAtMTIwLDkgKzEyMSw2IEBACiAgICAgICAgICMgUmV2ZXJzZSBhbmQgaW5zZXJ0IGF0IHRoZSBmcm9udCBvZiB0aGUgbGluZXMuCiAgICAgICAgIHNlbGYuX2xpbmVzWzowXSA9IGxpbmVzWzo6LTFdCiAKLSAgICBkZWYgaXNfY2xvc2VkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2VkCi0KICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTEzNyw5ICsxMzUsMjIgQEAKIGNsYXNzIEZlZWRQYXJzZXI6CiAgICAgIiIiQSBmZWVkLXN0eWxlIHBhcnNlciBvZiBlbWFpbC4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZmFjdG9yeT1tZXNzYWdlLk1lc3NhZ2UpOgotICAgICAgICAiIiJfZmFjdG9yeSBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgdG8gY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9mYWN0b3J5PW1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PWNvbXBhdDMyKToKKyAgICAgICAgIiIiX2ZhY3RvcnkgaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIHRvIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iagorCisgICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKKyAgICAgICAgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCisgICAgICAgICIiIgogICAgICAgICBzZWxmLl9mYWN0b3J5ID0gX2ZhY3RvcnkKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX2ZhY3RvcnkocG9saWN5PXNlbGYucG9saWN5KQorICAgICAgICAgICAgc2VsZi5fZmFjdG9yeV9rd2RzID0gbGFtYmRhOiB7J3BvbGljeSc6IHNlbGYucG9saWN5fQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgIyBBc3N1bWUgdGhpcyBpcyBhbiBvbGQtc3R5bGUgZmFjdG9yeQorICAgICAgICAgICAgc2VsZi5fZmFjdG9yeV9rd2RzID0gbGFtYmRhOiB7fQogICAgICAgICBzZWxmLl9pbnB1dCA9IEJ1ZmZlcmVkU3ViRmlsZSgpCiAgICAgICAgIHNlbGYuX21zZ3N0YWNrID0gW10KICAgICAgICAgc2VsZi5fcGFyc2UgPSBzZWxmLl9wYXJzZWdlbigpLl9fbmV4dF9fCkBAIC0xNzEsMTEgKzE4MiwxMiBAQAogICAgICAgICAjIExvb2sgZm9yIGZpbmFsIHNldCBvZiBkZWZlY3RzCiAgICAgICAgIGlmIHJvb3QuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyBcCiAgICAgICAgICAgICAgICBhbmQgbm90IHJvb3QuaXNfbXVsdGlwYXJ0KCk6Ci0gICAgICAgICAgICByb290LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoKSkKKyAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoKQorICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChyb290LCBkZWZlY3QpCiAgICAgICAgIHJldHVybiByb290CiAKICAgICBkZWYgX25ld19tZXNzYWdlKHNlbGYpOgotICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCkKKyAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeSgqKnNlbGYuX2ZhY3Rvcnlfa3dkcygpKQogICAgICAgICBpZiBzZWxmLl9jdXIgYW5kIHNlbGYuX2N1ci5nZXRfY29udGVudF90eXBlKCkgPT0gJ211bHRpcGFydC9kaWdlc3QnOgogICAgICAgICAgICAgbXNnLnNldF9kZWZhdWx0X3R5cGUoJ21lc3NhZ2UvcmZjODIyJykKICAgICAgICAgaWYgc2VsZi5fbXNnc3RhY2s6CkBAIC0yMDcsNiArMjE5LDggQEAKICAgICAgICAgICAgICAgICAjIChpLmUuIG5ld2xpbmUpLCBqdXN0IHRocm93IGl0IGF3YXkuIE90aGVyd2lzZSB0aGUgbGluZSBpcwogICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgYm9keSBzbyBwdXNoIGl0IGJhY2suCiAgICAgICAgICAgICAgICAgaWYgbm90IE5MQ1JFLm1hdGNoKGxpbmUpOgorICAgICAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dC51bnJlYWRsaW5lKGxpbmUpCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGxpbmUpCkBAIC0yODQsNyArMjk4LDggQEAKICAgICAgICAgICAgICAgICAjIGRlZmluZWQgYSBib3VuZGFyeS4gIFRoYXQncyBhIHByb2JsZW0gd2hpY2ggd2UnbGwgaGFuZGxlIGJ5CiAgICAgICAgICAgICAgICAgIyByZWFkaW5nIGV2ZXJ5dGhpbmcgdW50aWwgdGhlIEVPRiBhbmQgbWFya2luZyB0aGUgbWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICMgZGVmZWN0aXZlLgotICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KCkpCisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5faW5wdXQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgpAQCAtMjkzLDYgKzMwOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3BheWxvYWQoRU1QVFlTVFJJTkcuam9pbihsaW5lcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSBhIHZhbGlkIGNvbnRlbnQgdHlwZSB3YXMgc3BlY2lmaWVkIHBlciBSRkMgMjA0NTo2LjQuCisgICAgICAgICAgICBpZiAoc2VsZi5fY3VyLmdldCgnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycsICc4Yml0JykubG93ZXIoKQorICAgICAgICAgICAgICAgICAgICBub3QgaW4gKCc3Yml0JywgJzhiaXQnLCAnYmluYXJ5JykpOgorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5JbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAjIENyZWF0ZSBhIGxpbmUgbWF0Y2ggcHJlZGljYXRlIHdoaWNoIG1hdGNoZXMgdGhlIGludGVyLXBhcnQKICAgICAgICAgICAgICMgYm91bmRhcnkgYXMgd2VsbCBhcyB0aGUgZW5kLW9mLW11bHRpcGFydCBib3VuZGFyeS4gIERvbid0IHB1c2gKICAgICAgICAgICAgICMgdGhpcyBvbnRvIHRoZSBpbnB1dCBzdHJlYW0gdW50aWwgd2UndmUgc2Nhbm5lZCBwYXN0IHRoZQpAQCAtMzA0LDYgKzMyNCw3IEBACiAgICAgICAgICAgICBjYXB0dXJpbmdfcHJlYW1ibGUgPSBUcnVlCiAgICAgICAgICAgICBwcmVhbWJsZSA9IFtdCiAgICAgICAgICAgICBsaW5lc2VwID0gRmFsc2UKKyAgICAgICAgICAgIGNsb3NlX2JvdW5kYXJ5X3NlZW4gPSBGYWxzZQogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5faW5wdXQucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgpAQCAtMzE4LDYgKzMzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNsb3NpbmcgYm91bmRhcnksIHRoZW4gd2UgbmVlZCB0byBpbml0aWFsaXplIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGVwaWxvZ3VlIHdpdGggdGhlIGVtcHR5IHN0cmluZyAoc2VlIGJlbG93KS4KICAgICAgICAgICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2VuZCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfYm91bmRhcnlfc2VlbiA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzZXAgPSBtby5ncm91cCgnbGluZXNlcCcpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAjIFdlIHNhdyBhbiBpbnRlci1wYXJ0IGJvdW5kYXJ5LiAgV2VyZSB3ZSBpbiB0aGUgcHJlYW1ibGU/CkBAIC0zODYsOSArNDA4LDkgQEAKICAgICAgICAgICAgICMgV2UndmUgc2VlbiBlaXRoZXIgdGhlIEVPRiBvciB0aGUgZW5kIGJvdW5kYXJ5LiAgSWYgd2UncmUgc3RpbGwKICAgICAgICAgICAgICMgY2FwdHVyaW5nIHRoZSBwcmVhbWJsZSwgd2UgbmV2ZXIgc2F3IHRoZSBzdGFydCBib3VuZGFyeS4gIE5vdGUKICAgICAgICAgICAgICMgdGhhdCBhcyBhIGRlZmVjdCBhbmQgc3RvcmUgdGhlIGNhcHR1cmVkIHRleHQgYXMgdGhlIHBheWxvYWQuCi0gICAgICAgICAgICAjIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHRvIHRoZSBFT0YgaXMgZXBpbG9ndWUuCiAgICAgICAgICAgICBpZiBjYXB0dXJpbmdfcHJlYW1ibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKSkKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcGF5bG9hZChFTVBUWVNUUklORy5qb2luKHByZWFtYmxlKSkKICAgICAgICAgICAgICAgICBlcGlsb2d1ZSA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5faW5wdXQ6CkBAIC0zOTcsOCArNDE5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5lcGlsb2d1ZSA9IEVNUFRZU1RSSU5HLmpvaW4oZXBpbG9ndWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAjIElmIHRoZSBlbmQgYm91bmRhcnkgZW5kZWQgaW4gYSBuZXdsaW5lLCB3ZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZQotICAgICAgICAgICAgIyB0aGUgZXBpbG9ndWUgaXNuJ3QgTm9uZQorICAgICAgICAgICAgIyBJZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUgcHJlYW1ibGUsIHRoZW4gd2UgbWlnaHQgaGF2ZSBzZWVuCisgICAgICAgICAgICAjIEVPRiB3aXRob3V0IHNlZWluZyB0aGF0IGVuZCBib3VuZGFyeS4uLnRoYXQgaXMgYWxzbyBhIGRlZmVjdC4KKyAgICAgICAgICAgIGlmIG5vdCBjbG9zZV9ib3VuZGFyeV9zZWVuOgorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAjIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHRvIHRoZSBFT0YgaXMgZXBpbG9ndWUuICBJZiB0aGUgZW5kIGJvdW5kYXJ5CisgICAgICAgICAgICAjIGVuZGVkIGluIGEgbmV3bGluZSwgd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGVwaWxvZ3VlIGlzbid0CisgICAgICAgICAgICAjIE5vbmUKICAgICAgICAgICAgIGlmIGxpbmVzZXA6CiAgICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBbJyddCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDQwLDE0ICs0NjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgIyBpcyBpbGxlZ2FsLCBzbyBsZXQncyBub3RlIHRoZSBkZWZlY3QsIHN0b3JlIHRoZSBpbGxlZ2FsCiAgICAgICAgICAgICAgICAgICAgICMgbGluZSwgYW5kIGlnbm9yZSBpdCBmb3IgcHVycG9zZXMgb2YgaGVhZGVycy4KICAgICAgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLkZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0KGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgbGFzdHZhbHVlLmFwcGVuZChsaW5lKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBsYXN0aGVhZGVyOgotICAgICAgICAgICAgICAgICMgWFhYIHJlY29uc2lkZXIgdGhlIGpvaW5pbmcgb2YgZm9sZGVkIGxpbmVzCi0gICAgICAgICAgICAgICAgbGhkciA9IEVNUFRZU1RSSU5HLmpvaW4obGFzdHZhbHVlKVs6LTFdLnJzdHJpcCgnXHJcbicpCi0gICAgICAgICAgICAgICAgc2VsZi5fY3VyW2xhc3RoZWFkZXJdID0gbGhkcgorICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcmF3KCpzZWxmLnBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlKGxhc3R2YWx1ZSkpCiAgICAgICAgICAgICAgICAgbGFzdGhlYWRlciwgbGFzdHZhbHVlID0gJycsIFtdCiAgICAgICAgICAgICAjIENoZWNrIGZvciBlbnZlbG9wZSBoZWFkZXIsIGkuZS4gdW5peC1mcm9tCiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0Zyb20gJyk6CkBAIC00NzEsMTkgKzQ5OCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgIyBTcGxpdCB0aGUgbGluZSBvbiB0aGUgY29sb24gc2VwYXJhdGluZyBmaWVsZCBuYW1lIGZyb20gdmFsdWUuCisgICAgICAgICAgICAjIFRoZXJlIHdpbGwgYWx3YXlzIGJlIGEgY29sb24sIGJlY2F1c2UgaWYgdGhlcmUgd2Fzbid0IHRoZSBwYXJ0IG9mCisgICAgICAgICAgICAjIHRoZSBwYXJzZXIgdGhhdCBjYWxscyB1cyB3b3VsZCBoYXZlIHN0YXJ0ZWQgcGFyc2luZyB0aGUgYm9keS4KICAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoJzonKQotICAgICAgICAgICAgaWYgaSA8IDA6Ci0gICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk1hbGZvcm1lZEhlYWRlckRlZmVjdChsaW5lKQotICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCi0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGFzc2VydCBpPjAsICJfcGFyc2VfaGVhZGVycyBmZWQgbGluZSB3aXRoIG5vIDogYW5kIG5vIGxlYWRpbmcgV1MiCiAgICAgICAgICAgICBsYXN0aGVhZGVyID0gbGluZVs6aV0KLSAgICAgICAgICAgIGxhc3R2YWx1ZSA9IFtsaW5lW2krMTpdLmxzdHJpcCgpXQorICAgICAgICAgICAgbGFzdHZhbHVlID0gW2xpbmVdCiAgICAgICAgICMgRG9uZSB3aXRoIGFsbCB0aGUgbGluZXMsIHNvIGhhbmRsZSB0aGUgbGFzdCBoZWFkZXIuCiAgICAgICAgIGlmIGxhc3RoZWFkZXI6Ci0gICAgICAgICAgICAjIFhYWCByZWNvbnNpZGVyIHRoZSBqb2luaW5nIG9mIGZvbGRlZCBsaW5lcwotICAgICAgICAgICAgc2VsZi5fY3VyW2xhc3RoZWFkZXJdID0gRU1QVFlTVFJJTkcuam9pbihsYXN0dmFsdWUpLnJzdHJpcCgnXHJcbicpCisgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3Jhdygqc2VsZi5wb2xpY3kuaGVhZGVyX3NvdXJjZV9wYXJzZShsYXN0dmFsdWUpKQogCi0MCisKIGNsYXNzIEJ5dGVzRmVlZFBhcnNlcihGZWVkUGFyc2VyKToKICAgICAiIiJMaWtlIEZlZWRQYXJzZXIsIGJ1dCBmZWVkIGFjY2VwdHMgYnl0ZXMuIiIiCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IGM2YmZiNzAuLjg5OWFkYmMgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtMTMsOCArMTMsMTAgQEAKIGltcG9ydCB3YXJuaW5ncwogCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTworZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIKLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKK2ltcG9ydCBlbWFpbC5jaGFyc2V0IGFzIF9jaGFyc2V0CiAKIFVOREVSU0NPUkUgPSAnXycKIE5MID0gJ1xuJyAgIyBYWFg6IG5vIGxvbmdlciB1c2VkIGJ5IHRoZSBjb2RlIGJlbG93LgpAQCAtMzMsNyArMzUsOCBAQAogICAgICMgUHVibGljIGludGVyZmFjZQogICAgICMKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPU5vbmUsICosCisgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIHRoZSBnZW5lcmF0b3IgZm9yIG1lc3NhZ2UgZmxhdHRlbmluZy4KIAogICAgICAgICBvdXRmcCBpcyB0aGUgb3V0cHV0IGZpbGUtbGlrZSBvYmplY3QgZm9yIHdyaXRpbmcgdGhlIG1lc3NhZ2UgdG8uICBJdApAQCAtNDksMTYgKzUyLDIyIEBACiAgICAgICAgIGRlZmluZWQgaW4gdGhlIEhlYWRlciBjbGFzcy4gIFNldCBtYXhoZWFkZXJsZW4gdG8gemVybyB0byBkaXNhYmxlCiAgICAgICAgIGhlYWRlciB3cmFwcGluZy4gIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkKICAgICAgICAgYnkgUkZDIDI4MjIuCisKKyAgICAgICAgVGhlIHBvbGljeSBrZXl3b3JkIHNwZWNpZmllcyBhIHBvbGljeSBvYmplY3QgdGhhdCBjb250cm9scyBhIG51bWJlciBvZgorICAgICAgICBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2ZwID0gb3V0ZnAKICAgICAgICAgc2VsZi5fbWFuZ2xlX2Zyb21fID0gbWFuZ2xlX2Zyb21fCi0gICAgICAgIHNlbGYuX21heGhlYWRlcmxlbiA9IG1heGhlYWRlcmxlbgorICAgICAgICBzZWxmLm1heGhlYWRlcmxlbiA9IG1heGhlYWRlcmxlbgorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgogICAgICAgICAjIEp1c3QgZGVsZWdhdGUgdG8gdGhlIGZpbGUgb2JqZWN0CiAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHMpCiAKLSAgICBkZWYgZmxhdHRlbihzZWxmLCBtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPSdcbicpOgorICAgIGRlZiBmbGF0dGVuKHNlbGYsIG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSk6CiAgICAgICAgIHIiIiJQcmludCB0aGUgbWVzc2FnZSBvYmplY3QgdHJlZSByb290ZWQgYXQgbXNnIHRvIHRoZSBvdXRwdXQgZmlsZQogICAgICAgICBzcGVjaWZpZWQgd2hlbiB0aGUgR2VuZXJhdG9yIGluc3RhbmNlIHdhcyBjcmVhdGVkLgogCkBAIC03MCwyOSArNzksNDcgQEAKICAgICAgICAgTm90ZSB0aGF0IGZvciBzdWJvYmplY3RzLCBubyBGcm9tXyBsaW5lIGlzIHByaW50ZWQuCiAKICAgICAgICAgbGluZXNlcCBzcGVjaWZpZXMgdGhlIGNoYXJhY3RlcnMgdXNlZCB0byBpbmRpY2F0ZSBhIG5ldyBsaW5lIGluCi0gICAgICAgIHRoZSBvdXRwdXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgbW9zdCB1c2VmdWwgZm9yIHR5cGljYWwKLSAgICAgICAgUHl0aG9uIGFwcGxpY2F0aW9ucywgYnV0IGl0IGNhbiBiZSBzZXQgdG8gXHJcbiB0byBwcm9kdWNlIFJGQy1jb21wbGlhbnQKLSAgICAgICAgbGluZSBzZXBhcmF0b3JzIHdoZW4gbmVlZGVkLgorICAgICAgICB0aGUgb3V0cHV0LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcG9saWN5LgogCiAgICAgICAgICIiIgogICAgICAgICAjIFdlIHVzZSB0aGUgX1hYWCBjb25zdGFudHMgZm9yIG9wZXJhdGluZyBvbiBkYXRhIHRoYXQgY29tZXMgZGlyZWN0bHkKICAgICAgICAgIyBmcm9tIHRoZSBtc2csIGFuZCBfZW5jb2RlZF9YWFggY29uc3RhbnRzIGZvciBvcGVyYXRpbmcgb24gZGF0YSB0aGF0CiAgICAgICAgICMgaGFzIGFscmVhZHkgYmVlbiBjb252ZXJ0ZWQgKHRvIGJ5dGVzIGluIHRoZSBCeXRlc0dlbmVyYXRvcikgYW5kCiAgICAgICAgICMgaW5zZXJ0ZWQgaW50byBhIHRlbXBvcmFyeSBidWZmZXIuCi0gICAgICAgIHNlbGYuX05MID0gbGluZXNlcAotICAgICAgICBzZWxmLl9lbmNvZGVkX05MID0gc2VsZi5fZW5jb2RlKGxpbmVzZXApCisgICAgICAgIHBvbGljeSA9IG1zZy5wb2xpY3kgaWYgc2VsZi5wb2xpY3kgaXMgTm9uZSBlbHNlIHNlbGYucG9saWN5CisgICAgICAgIGlmIGxpbmVzZXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwb2xpY3kgPSBwb2xpY3kuY2xvbmUobGluZXNlcD1saW5lc2VwKQorICAgICAgICBpZiBzZWxmLm1heGhlYWRlcmxlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9c2VsZi5tYXhoZWFkZXJsZW4pCisgICAgICAgIHNlbGYuX05MID0gcG9saWN5LmxpbmVzZXAKKyAgICAgICAgc2VsZi5fZW5jb2RlZF9OTCA9IHNlbGYuX2VuY29kZShzZWxmLl9OTCkKICAgICAgICAgc2VsZi5fRU1QVFkgPSAnJwogICAgICAgICBzZWxmLl9lbmNvZGVkX0VNVFBZID0gc2VsZi5fZW5jb2RlKCcnKQotICAgICAgICBpZiB1bml4ZnJvbToKLSAgICAgICAgICAgIHVmcm9tID0gbXNnLmdldF91bml4ZnJvbSgpCi0gICAgICAgICAgICBpZiBub3QgdWZyb206Ci0gICAgICAgICAgICAgICAgdWZyb20gPSAnRnJvbSBub2JvZHkgJyArIHRpbWUuY3RpbWUodGltZS50aW1lKCkpCi0gICAgICAgICAgICBzZWxmLndyaXRlKHVmcm9tICsgc2VsZi5fTkwpCi0gICAgICAgIHNlbGYuX3dyaXRlKG1zZykKKyAgICAgICAgIyBCZWNhdXNlIHdlIHVzZSBjbG9uZSAoYmVsb3cpIHdoZW4gd2UgcmVjdXJzaXZlbHkgcHJvY2VzcyBtZXNzYWdlCisgICAgICAgICMgc3VicGFydHMsIGFuZCBiZWNhdXNlIGNsb25lIHVzZXMgdGhlIGNvbXB1dGVkIHBvbGljeSAobm90IE5vbmUpLAorICAgICAgICAjIHN1Ym1lc3NhZ2VzIHdpbGwgYXV0b21hdGljYWxseSBnZXQgc2V0IHRvIHRoZSBjb21wdXRlZCBwb2xpY3kgd2hlbgorICAgICAgICAjIHRoZXkgYXJlIHByb2Nlc3NlZCBieSB0aGlzIGNvZGUuCisgICAgICAgIG9sZF9nZW5fcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgb2xkX21zZ19wb2xpY3kgPSBtc2cucG9saWN5CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgICAgICBtc2cucG9saWN5ID0gcG9saWN5CisgICAgICAgICAgICBpZiB1bml4ZnJvbToKKyAgICAgICAgICAgICAgICB1ZnJvbSA9IG1zZy5nZXRfdW5peGZyb20oKQorICAgICAgICAgICAgICAgIGlmIG5vdCB1ZnJvbToKKyAgICAgICAgICAgICAgICAgICAgdWZyb20gPSAnRnJvbSBub2JvZHkgJyArIHRpbWUuY3RpbWUodGltZS50aW1lKCkpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSh1ZnJvbSArIHNlbGYuX05MKQorICAgICAgICAgICAgc2VsZi5fd3JpdGUobXNnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5wb2xpY3kgPSBvbGRfZ2VuX3BvbGljeQorICAgICAgICAgICAgbXNnLnBvbGljeSA9IG9sZF9tc2dfcG9saWN5CiAKICAgICBkZWYgY2xvbmUoc2VsZiwgZnApOgogICAgICAgICAiIiJDbG9uZSB0aGlzIGdlbmVyYXRvciB3aXRoIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmcCwgc2VsZi5fbWFuZ2xlX2Zyb21fLCBzZWxmLl9tYXhoZWFkZXJsZW4pCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hbmdsZV9mcm9tXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsICMgVXNlIHBvbGljeSBzZXR0aW5nLCB3aGljaCB3ZSd2ZSBhZGp1c3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYucG9saWN5KQogCiAgICAgIwogICAgICMgUHJvdGVjdGVkIGludGVyZmFjZSAtIHVuZG9jdW1lbnRlZCA7LwpAQCAtMTY3LDE2ICsxOTQsOCBAQAogICAgICMKIAogICAgIGRlZiBfd3JpdGVfaGVhZGVycyhzZWxmLCBtc2cpOgotICAgICAgICBmb3IgaCwgdiBpbiBtc2cuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzOiAnICUgaCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgSGVhZGVyKToKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHYuZW5jb2RlKAotICAgICAgICAgICAgICAgICAgICBtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbiwgbGluZXNlcD1zZWxmLl9OTCkrc2VsZi5fTkwpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgSGVhZGVyJ3MgZ290IGxvdHMgb2Ygc21hcnRzLCBzbyB1c2UgaXQuCi0gICAgICAgICAgICAgICAgaGVhZGVyID0gSGVhZGVyKHYsIG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1oKQotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoaGVhZGVyLmVuY29kZShsaW5lc2VwPXNlbGYuX05MKStzZWxmLl9OTCkKKyAgICAgICAgZm9yIGgsIHYgaW4gbXNnLnJhd19pdGVtcygpOgorICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLnBvbGljeS5mb2xkKGgsIHYpKQogICAgICAgICAjIEEgYmxhbmsgbGluZSBhbHdheXMgc2VwYXJhdGVzIGhlYWRlcnMgZnJvbSBib2R5CiAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5fTkwpCiAKQEAgLTI2NSwxMiArMjg0LDEyIEBACiAgICAgICAgICMgVGhlIGNvbnRlbnRzIG9mIHNpZ25lZCBwYXJ0cyBoYXMgdG8gc3RheSB1bm1vZGlmaWVkIGluIG9yZGVyIHRvIGtlZXAKICAgICAgICAgIyB0aGUgc2lnbmF0dXJlIGludGFjdCBwZXIgUkZDMTg0NyAyLjEsIHNvIHdlIGRpc2FibGUgaGVhZGVyIHdyYXBwaW5nLgogICAgICAgICAjIFJETTogVGhpcyBpc24ndCBlbm91Z2ggdG8gY29tcGxldGVseSBwcmVzZXJ2ZSB0aGUgcGFydCwgYnV0IGl0IGhlbHBzLgotICAgICAgICBvbGRfbWF4aGVhZGVybGVuID0gc2VsZi5fbWF4aGVhZGVybGVuCisgICAgICAgIHAgPSBzZWxmLnBvbGljeQorICAgICAgICBzZWxmLnBvbGljeSA9IHAuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX21heGhlYWRlcmxlbiA9IDAKICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9tdWx0aXBhcnQobXNnKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbWF4aGVhZGVybGVuID0gb2xkX21heGhlYWRlcmxlbgorICAgICAgICAgICAgc2VsZi5wb2xpY3kgPSBwCiAKICAgICBkZWYgX2hhbmRsZV9tZXNzYWdlX2RlbGl2ZXJ5X3N0YXR1cyhzZWxmLCBtc2cpOgogICAgICAgICAjIFdlIGNhbid0IGp1c3Qgd3JpdGUgdGhlIGhlYWRlcnMgZGlyZWN0bHkgdG8gc2VsZidzIGZpbGUgb2JqZWN0CkBAIC0zMDUsMTAgKzMyNCwxMiBAQAogICAgICAgICAjIG1lc3NhZ2UvcmZjODIyLiAgU3VjaCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGJ5LCBmb3IgZXhhbXBsZSwKICAgICAgICAgIyBHcm91cHdpc2Ugd2hlbiBmb3J3YXJkaW5nIHVuYWRvcm5lZCBtZXNzYWdlcy4gIChJc3N1ZSA3OTcwLikgIFNvCiAgICAgICAgICMgaW4gdGhhdCBjYXNlIHdlIGp1c3QgZW1pdCB0aGUgc3RyaW5nIGJvZHkuCi0gICAgICAgIHBheWxvYWQgPSBtc2cuZ2V0X3BheWxvYWQoKQorICAgICAgICBwYXlsb2FkID0gbXNnLl9wYXlsb2FkCiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgbGlzdCk6CiAgICAgICAgICAgICBnLmZsYXR0ZW4obXNnLmdldF9wYXlsb2FkKDApLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1zZWxmLl9OTCkKICAgICAgICAgICAgIHBheWxvYWQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBheWxvYWQgPSBzZWxmLl9lbmNvZGUocGF5bG9hZCkKICAgICAgICAgc2VsZi5fZnAud3JpdGUocGF5bG9hZCkKIAogICAgICMgVGhpcyB1c2VkIHRvIGJlIGEgbW9kdWxlIGxldmVsIGZ1bmN0aW9uOyB3ZSB1c2UgYSBjbGFzc21ldGhvZCBmb3IgdGhpcwpAQCAtMzQ0LDcgKzM2NSwxMCBAQAogCiAgICAgRnVuY3Rpb25hbGx5IGlkZW50aWNhbCB0byB0aGUgYmFzZSBHZW5lcmF0b3IgZXhjZXB0IHRoYXQgdGhlIG91dHB1dCBpcwogICAgIGJ5dGVzIGFuZCBub3Qgc3RyaW5nLiAgV2hlbiBzdXJyb2dhdGVzIHdlcmUgdXNlZCBpbiB0aGUgaW5wdXQgdG8gZW5jb2RlCi0gICAgYnl0ZXMsIHRoZXNlIGFyZSBkZWNvZGVkIGJhY2sgdG8gYnl0ZXMgZm9yIG91dHB1dC4KKyAgICBieXRlcywgdGhlc2UgYXJlIGRlY29kZWQgYmFjayB0byBieXRlcyBmb3Igb3V0cHV0LiAgSWYgdGhlIHBvbGljeSBoYXMKKyAgICBjdGVfdHlwZSBzZXQgdG8gN2JpdCwgdGhlbiB0aGUgbWVzc2FnZSBpcyB0cmFuc2Zvcm1lZCBzdWNoIHRoYXQgdGhlCisgICAgbm9uLUFTQ0lJIGJ5dGVzIGFyZSBwcm9wZXJseSBjb250ZW50IHRyYW5zZmVyIGVuY29kZWQsIHVzaW5nIHRoZSBjaGFyc2V0CisgICAgdW5rbm93bi04Yml0LgogCiAgICAgVGhlIG91dGZwIG9iamVjdCBtdXN0IGFjY2VwdCBieXRlcyBpbiBpdHMgd3JpdGUgbWV0aG9kLgogICAgICIiIgpAQCAtMzY1LDIzICszODksOCBAQAogICAgIGRlZiBfd3JpdGVfaGVhZGVycyhzZWxmLCBtc2cpOgogICAgICAgICAjIFRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgdmVyc2lvbiwgZXhjZXB0IGZvciBoYW5kbGluZwogICAgICAgICAjIHN0cmluZ3Mgd2l0aCA4Yml0IGJ5dGVzLgotICAgICAgICBmb3IgaCwgdiBpbiBtc2cuX2hlYWRlcnM6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCclczogJyAlIGgpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIEhlYWRlcik6Ci0gICAgICAgICAgICAgICAgc2VsZi53cml0ZSh2LmVuY29kZShtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbikrc2VsZi5fTkwpCi0gICAgICAgICAgICBlbGlmIF9oYXNfc3Vycm9nYXRlcyh2KToKLSAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgcmF3IDhiaXQgZGF0YSBpbiBhIGJ5dGUgc3RyaW5nLCB3ZSBoYXZlIG5vIGlkZWEKLSAgICAgICAgICAgICAgICAjIHdoYXQgdGhlIGVuY29kaW5nIGlzLiAgVGhlcmUgaXMgbm8gc2FmZSB3YXkgdG8gc3BsaXQgdGhpcwotICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgSWYgaXQncyBhc2NpaS1zdWJzZXQsIHRoZW4gd2UgY291bGQgZG8gYSBub3JtYWwKLSAgICAgICAgICAgICAgICAjIGFzY2lpIHNwbGl0LCBidXQgaWYgaXQncyBtdWx0aWJ5dGUgdGhlbiB3ZSBjb3VsZCBicmVhayB0aGUKLSAgICAgICAgICAgICAgICAjIHN0cmluZy4gIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgc28gdGhlIGxlYXN0IGhhcm0gc2VlbXMgdG8KLSAgICAgICAgICAgICAgICAjIGJlIHRvIG5vdCBzcGxpdCB0aGUgc3RyaW5nIGFuZCByaXNrIGl0IGJlaW5nIHRvbyBsb25nLgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoditOTCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZWFkZXIncyBnb3QgbG90cyBvZiBzbWFydHMgYW5kIHRoaXMgc3RyaW5nIGlzIHNhZmUuLi4KLSAgICAgICAgICAgICAgICBoZWFkZXIgPSBIZWFkZXIodiwgbWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPWgpCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZShoZWFkZXIuZW5jb2RlKGxpbmVzZXA9c2VsZi5fTkwpK3NlbGYuX05MKQorICAgICAgICBmb3IgaCwgdiBpbiBtc2cucmF3X2l0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLnBvbGljeS5mb2xkX2JpbmFyeShoLCB2KSkKICAgICAgICAgIyBBIGJsYW5rIGxpbmUgYWx3YXlzIHNlcGFyYXRlcyBoZWFkZXJzIGZyb20gYm9keQogICAgICAgICBzZWxmLndyaXRlKHNlbGYuX05MKQogCkBAIC0zOTAsNyArMzk5LDcgQEAKICAgICAgICAgIyBqdXN0IHdyaXRlIGl0IGJhY2sgb3V0LgogICAgICAgICBpZiBtc2cuX3BheWxvYWQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXMobXNnLl9wYXlsb2FkKToKKyAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKG1zZy5fcGF5bG9hZCkgYW5kIG5vdCBzZWxmLnBvbGljeS5jdGVfdHlwZT09JzdiaXQnOgogICAgICAgICAgICAgaWYgc2VsZi5fbWFuZ2xlX2Zyb21fOgogICAgICAgICAgICAgICAgIG1zZy5fcGF5bG9hZCA9IGZjcmUuc3ViKCI+RnJvbSAiLCBtc2cuX3BheWxvYWQpCiAgICAgICAgICAgICBzZWxmLndyaXRlKG1zZy5fcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9oZWFkZXIucHkgYi9MaWIvZW1haWwvaGVhZGVyLnB5CmluZGV4IGUzMzMyNGEuLjViZDA2MzggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9oZWFkZXIucHkKKysrIGIvTGliL2VtYWlsL2hlYWRlci5weQpAQCAtNDAsNyArNDAsNiBAQAogICBcPyAgICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID8KICAgKD9QPGVuY29kZWQ+Lio/KSAgICAgICMgbm9uLWdyZWVkeSB1cCB0byB0aGUgbmV4dCA/PSBpcyB0aGUgZW5jb2RlZCBzdHJpbmcKICAgXD89ICAgICAgICAgICAgICAgICAgICMgbGl0ZXJhbCA/PQotICAoPz1bIFx0XXwkKSAgICAgICAgICAgIyB3aGl0ZXNwYWNlIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZwogICAnJycsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFIHwgcmUuTVVMVElMSU5FKQogCiAjIEZpZWxkIG5hbWUgcmVnZXhwLCBpbmNsdWRpbmcgdHJhaWxpbmcgY29sb24sIGJ1dCBub3Qgc2VwYXJhdGluZyB3aGl0ZXNwYWNlLApAQCAtODYsOCArODUsMTIgQEAKICAgICB3b3JkcyA9IFtdCiAgICAgZm9yIGxpbmUgaW4gaGVhZGVyLnNwbGl0bGluZXMoKToKICAgICAgICAgcGFydHMgPSBlY3JlLnNwbGl0KGxpbmUpCisgICAgICAgIGZpcnN0ID0gVHJ1ZQogICAgICAgICB3aGlsZSBwYXJ0czoKLSAgICAgICAgICAgIHVuZW5jb2RlZCA9IHBhcnRzLnBvcCgwKS5zdHJpcCgpCisgICAgICAgICAgICB1bmVuY29kZWQgPSBwYXJ0cy5wb3AoMCkKKyAgICAgICAgICAgIGlmIGZpcnN0OgorICAgICAgICAgICAgICAgIHVuZW5jb2RlZCA9IHVuZW5jb2RlZC5sc3RyaXAoKQorICAgICAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKICAgICAgICAgICAgIGlmIHVuZW5jb2RlZDoKICAgICAgICAgICAgICAgICB3b3Jkcy5hcHBlbmQoKHVuZW5jb2RlZCwgTm9uZSwgTm9uZSkpCiAgICAgICAgICAgICBpZiBwYXJ0czoKQEAgLTk1LDYgKzk4LDE2IEBACiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBwYXJ0cy5wb3AoMCkubG93ZXIoKQogICAgICAgICAgICAgICAgIGVuY29kZWQgPSBwYXJ0cy5wb3AoMCkKICAgICAgICAgICAgICAgICB3b3Jkcy5hcHBlbmQoKGVuY29kZWQsIGVuY29kaW5nLCBjaGFyc2V0KSkKKyAgICAjIE5vdyBsb29wIG92ZXIgd29yZHMgYW5kIHJlbW92ZSB3b3JkcyB0aGF0IGNvbnNpc3Qgb2Ygd2hpdGVzcGFjZQorICAgICMgYmV0d2VlbiB0d28gZW5jb2RlZCBzdHJpbmdzLgorICAgIGltcG9ydCBzeXMKKyAgICBkcm9wbGlzdCA9IFtdCisgICAgZm9yIG4sIHcgaW4gZW51bWVyYXRlKHdvcmRzKToKKyAgICAgICAgaWYgbj4xIGFuZCB3WzFdIGFuZCB3b3Jkc1tuLTJdWzFdIGFuZCB3b3Jkc1tuLTFdWzBdLmlzc3BhY2UoKToKKyAgICAgICAgICAgIGRyb3BsaXN0LmFwcGVuZChuLTEpCisgICAgZm9yIGQgaW4gcmV2ZXJzZWQoZHJvcGxpc3QpOgorICAgICAgICBkZWwgd29yZHNbZF0KKwogICAgICMgVGhlIG5leHQgc3RlcCBpcyB0byBkZWNvZGUgZWFjaCBlbmNvZGVkIHdvcmQgYnkgYXBwbHlpbmcgdGhlIHJldmVyc2UKICAgICAjIGJhc2U2NCBvciBxdW9wcmkgdHJhbnNmb3JtYXRpb24uICBkZWNvZGVkX3dvcmRzIGlzIG5vdyBhIGxpc3Qgb2YgdGhlCiAgICAgIyBmb3JtIChkZWNvZGVkX3dvcmQsIGNoYXJzZXQpLgpAQCAtMjE3LDIyICsyMzAsMjcgQEAKICAgICAgICAgc2VsZi5fbm9ybWFsaXplKCkKICAgICAgICAgdWNodW5rcyA9IFtdCiAgICAgICAgIGxhc3RjcyA9IE5vbmUKKyAgICAgICAgbGFzdHNwYWNlID0gTm9uZQogICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgICMgV2UgbXVzdCBwcmVzZXJ2ZSBzcGFjZXMgYmV0d2VlbiBlbmNvZGVkIGFuZCBub24tZW5jb2RlZCB3b3JkCiAgICAgICAgICAgICAjIGJvdW5kYXJpZXMsIHdoaWNoIG1lYW5zIGZvciB1cyB3ZSBuZWVkIHRvIGFkZCBhIHNwYWNlIHdoZW4gd2UgZ28KICAgICAgICAgICAgICMgZnJvbSBhIGNoYXJzZXQgdG8gTm9uZS91cy1hc2NpaSwgb3IgZnJvbSBOb25lL3VzLWFzY2lpIHRvIGEKICAgICAgICAgICAgICMgY2hhcnNldC4gIE9ubHkgZG8gdGhpcyBmb3IgdGhlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBjaHVua3MuCisgICAgICAgICAgICAjIERvbid0IGFkZCBhIHNwYWNlIGlmIHRoZSBOb25lL3VzLWFzY2lpIHN0cmluZyBhbHJlYWR5IGhhcworICAgICAgICAgICAgIyBhIHNwYWNlICh0cmFpbGluZyBvciBsZWFkaW5nIGRlcGVuZGluZyBvbiB0cmFuc2l0aW9uKQogICAgICAgICAgICAgbmV4dGNzID0gY2hhcnNldAogICAgICAgICAgICAgaWYgbmV4dGNzID09IF9jaGFyc2V0LlVOS05PV044QklUOgogICAgICAgICAgICAgICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgICAgICAgICBzdHJpbmcgPSBvcmlnaW5hbF9ieXRlcy5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQogICAgICAgICAgICAgaWYgdWNodW5rczoKKyAgICAgICAgICAgICAgICBoYXNzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWzBdKQogICAgICAgICAgICAgICAgIGlmIGxhc3RjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgotICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y3MgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y3MgaW4gKE5vbmUsICd1cy1hc2NpaScpIGFuZCBub3QgaGFzc3BhY2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChTUEFDRSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjcyA9IE5vbmUKLSAgICAgICAgICAgICAgICBlbGlmIG5leHRjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBsYXN0c3BhY2U6CiAgICAgICAgICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKFNQQUNFKQorICAgICAgICAgICAgbGFzdHNwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbLTFdKQogICAgICAgICAgICAgbGFzdGNzID0gbmV4dGNzCiAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChzdHJpbmcpCiAgICAgICAgIHJldHVybiBFTVBUWVNUUklORy5qb2luKHVjaHVua3MpCkBAIC0yOTEsNiArMzA5LDExIEBACiAgICAgICAgICAgICAgICAgY2hhcnNldCA9IFVURjgKICAgICAgICAgc2VsZi5fY2h1bmtzLmFwcGVuZCgocywgY2hhcnNldCkpCiAKKyAgICBkZWYgX25vbmN0ZXh0KHNlbGYsIHMpOgorICAgICAgICAiIiJUcnVlIGlmIHN0cmluZyBzIGlzIG5vdCBhIGN0ZXh0IGNoYXJhY3RlciBvZiBSRkM4MjIuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gcy5pc3NwYWNlKCkgb3IgcyBpbiAoJygnLCAnKScsICdcXCcpCisKICAgICBkZWYgZW5jb2RlKHNlbGYsIHNwbGl0Y2hhcnM9JzssIFx0JywgbWF4bGluZWxlbj1Ob25lLCBsaW5lc2VwPSdcbicpOgogICAgICAgICByIiIiRW5jb2RlIGEgbWVzc2FnZSBoZWFkZXIgaW50byBhbiBSRkMtY29tcGxpYW50IGZvcm1hdC4KIApAQCAtMzM0LDcgKzM1NywyMCBAQAogICAgICAgICAgICAgbWF4bGluZWxlbiA9IDEwMDAwMDAKICAgICAgICAgZm9ybWF0dGVyID0gX1ZhbHVlRm9ybWF0dGVyKHNlbGYuX2hlYWRlcmxlbiwgbWF4bGluZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRpbnVhdGlvbl93cywgc3BsaXRjaGFycykKKyAgICAgICAgbGFzdGNzID0gTm9uZQorICAgICAgICBoYXNzcGFjZSA9IGxhc3RzcGFjZSA9IE5vbmUKICAgICAgICAgZm9yIHN0cmluZywgY2hhcnNldCBpbiBzZWxmLl9jaHVua3M6CisgICAgICAgICAgICBpZiBoYXNzcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoYXNzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWzBdKQorICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgICAgICBpZiBsYXN0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc3NwYWNlIG9yIGNoYXJzZXQgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyc2V0IG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBsYXN0c3BhY2U6CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCisgICAgICAgICAgICBsYXN0c3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1stMV0pCisgICAgICAgICAgICBsYXN0Y3MgPSBjaGFyc2V0CisgICAgICAgICAgICBoYXNzcGFjZSA9IEZhbHNlCiAgICAgICAgICAgICBsaW5lcyA9IHN0cmluZy5zcGxpdGxpbmVzKCkKICAgICAgICAgICAgIGlmIGxpbmVzOgogICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKCcnLCBsaW5lc1swXSwgY2hhcnNldCkKQEAgLTM1MSw2ICszODcsNyBAQAogICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZmVlZChmd3MsIHNsaW5lLCBjaGFyc2V0KQogICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLm5ld2xpbmUoKQorICAgICAgICBpZiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQogICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCiAgICAgICAgIGlmIF9lbWJlZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5IGIvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYWU5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKQEAgLTAsMCArMSw1ODMgQEAKKyIiIlJlcHJlc2VudGluZyBhbmQgbWFuaXB1bGF0aW5nIGVtYWlsIGhlYWRlcnMgdmlhIGN1c3RvbSBvYmplY3RzLgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGVhZGVyUmVnaXN0cnkgQVBJLgorVGhlIGltcGxlbWVudGF0aW9uIGlzIGRlc2lnbmVkIHRvIGZsZXhpYmx5IGZvbGxvdyBSRkM1MzIyIHJ1bGVzLgorCitFdmVudHVhbGx5IEhlYWRlclJlZ2lzdHJ5IHdpbGwgYmUgYSBwdWJsaWMgQVBJLCBidXQgaXQgaXNuJ3QgeWV0LAorYW5kIHdpbGwgcHJvYmFibHkgY2hhbmdlIHNvbWUgYmVmb3JlIHRoYXQgaGFwcGVucy4KKworIiIiCisKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCitmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IF9oZWFkZXJfdmFsdWVfcGFyc2VyIGFzIHBhcnNlcgorCitjbGFzcyBBZGRyZXNzOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXlfbmFtZT0nJywgdXNlcm5hbWU9JycsIGRvbWFpbj0nJywgYWRkcl9zcGVjPU5vbmUpOgorICAgICAgICAiIiJDcmVhdGUgYW4gb2JqZWN0IHJlcHJlc2V0aW5nIGEgZnVsbCBlbWFpbCBhZGRyZXNzLgorCisgICAgICAgIEFuIGFkZHJlc3MgY2FuIGhhdmUgYSAnZGlzcGxheV9uYW1lJywgYSAndXNlcm5hbWUnLCBhbmQgYSAnZG9tYWluJy4gIEluCisgICAgICAgIGFkZGl0aW9uIHRvIHNwZWNpZnlpbmcgdGhlIHVzZXJuYW1lIGFuZCBkb21haW4gc2VwYXJhdGVseSwgdGhleSBtYXkgYmUKKyAgICAgICAgc3BlY2lmaWVkIHRvZ2V0aGVyIGJ5IHVzaW5nIHRoZSBhZGRyX3NwZWMga2V5d29yZCAqaW5zdGVhZCBvZiogdGhlCisgICAgICAgIHVzZXJuYW1lIGFuZCBkb21haW4ga2V5d29yZHMuICBJZiBhbiBhZGRyX3NwZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpdAorICAgICAgICBtdXN0IGJlIHByb3Blcmx5IHF1b3RlZCBhY2NvcmRpbmcgdG8gUkZDIDUzMjIgcnVsZXM7IGFuIGVycm9yIHdpbGwgYmUKKyAgICAgICAgcmFpc2VkIGlmIGl0IGlzIG5vdC4KKworICAgICAgICBBbiBBZGRyZXNzIG9iamVjdCBoYXMgZGlzcGxheV9uYW1lLCB1c2VybmFtZSwgZG9tYWluLCBhbmQgYWRkcl9zcGVjCisgICAgICAgIGF0dHJpYnV0ZXMsIGFsbCBvZiB3aGljaCBhcmUgcmVhZC1vbmx5LiAgVGhlIGFkZHJfc3BlYyBhbmQgdGhlIHN0cmluZworICAgICAgICB2YWx1ZSBvZiB0aGUgb2JqZWN0IGFyZSBib3RoIHF1b3RlZCBhY2NvcmRpbmcgdG8gUkZDNTMyMiBydWxlcywgYnV0CisgICAgICAgIHdpdGhvdXQgYW55IENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBjbGF1c2Ugd2l0aCBpdHMgcG90ZW50aWFsICdyYWlzZScgbWF5IG9ubHkgaGFwcGVuIHdoZW4gYW4KKyAgICAgICAgIyBhcHBsaWNhdGlvbiBwcm9ncmFtIGNyZWF0ZXMgYW4gQWRkcmVzcyBvYmplY3QgdXNpbmcgYW4gYWRkcl9zcGVjCisgICAgICAgICMga2V5d29yZC4gIFRoZSBlbWFpbCBsaWJyYXJ5IGNvZGUgaXRzZWxmIG11c3QgYWx3YXlzIHN1cHBseSB1c2VybmFtZQorICAgICAgICAjIGFuZCBkb21haW4uCisgICAgICAgIGlmIGFkZHJfc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHVzZXJuYW1lIG9yIGRvbWFpbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFkZHJzcGVjIHNwZWNpZmllZCB3aGVuIHVzZXJuYW1lIGFuZC9vciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb21haW4gYWxzbyBzcGVjaWZpZWQiKQorICAgICAgICAgICAgYV9zLCByZXN0ID0gcGFyc2VyLmdldF9hZGRyX3NwZWMoYWRkcl9zcGVjKQorICAgICAgICAgICAgaWYgcmVzdDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFkZHJfc3BlYzsgb25seSAne30nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBiZSBwYXJzZWQgZnJvbSAne30nIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX3MsIGFkZHJfc3BlYykpCisgICAgICAgICAgICBpZiBhX3MuYWxsX2RlZmVjdHM6CisgICAgICAgICAgICAgICAgcmFpc2UgYV9zLmFsbF9kZWZlY3RzWzBdCisgICAgICAgICAgICB1c2VybmFtZSA9IGFfcy5sb2NhbF9wYXJ0CisgICAgICAgICAgICBkb21haW4gPSBhX3MuZG9tYWluCisgICAgICAgIHNlbGYuX2Rpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZQorICAgICAgICBzZWxmLl91c2VybmFtZSA9IHVzZXJuYW1lCisgICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHVzZXJuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdXNlcm5hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgICIiIlRoZSBhZGRyX3NwZWMgKHVzZXJuYW1lQGRvbWFpbikgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgcXVvdGVkCisgICAgICAgIGFjY29yZGluZyB0byBSRkMgNTMyMiBydWxlcywgYnV0IHdpdGggbm8gQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZy4KKyAgICAgICAgIiIiCisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi51c2VybmFtZSkKKyAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtcGFyc2VyLkRPVF9BVE9NX0VORFMpOgorICAgICAgICAgICAgbHAgPSBwYXJzZXIucXVvdGVfc3RyaW5nKHNlbGYudXNlcm5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBscCA9IHNlbGYudXNlcm5hbWUKKyAgICAgICAgaWYgc2VsZi5kb21haW46CisgICAgICAgICAgICByZXR1cm4gbHAgKyAnQCcgKyBzZWxmLmRvbWFpbgorICAgICAgICBpZiBub3QgbHA6CisgICAgICAgICAgICByZXR1cm4gJzw+JworICAgICAgICByZXR1cm4gbHAKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJBZGRyZXNzKGRpc3BsYXlfbmFtZT17IXJ9LCB1c2VybmFtZT17IXJ9LCBkb21haW49eyFyfSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9uYW1lLCBzZWxmLnVzZXJuYW1lLCBzZWxmLmRvbWFpbikKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBuYW1lc2V0ID0gc2V0KHNlbGYuZGlzcGxheV9uYW1lKQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1wYXJzZXIuU1BFQ0lBTFMpOgorICAgICAgICAgICAgZGlzcCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoc2VsZi5kaXNwbGF5X25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaXNwID0gc2VsZi5kaXNwbGF5X25hbWUKKyAgICAgICAgaWYgZGlzcDoKKyAgICAgICAgICAgIGFkZHJfc3BlYyA9ICcnIGlmIHNlbGYuYWRkcl9zcGVjPT0nPD4nIGVsc2Ugc2VsZi5hZGRyX3NwZWMKKyAgICAgICAgICAgIHJldHVybiAie30gPHt9PiIuZm9ybWF0KGRpc3AsIGFkZHJfc3BlYykKKyAgICAgICAgcmV0dXJuIHNlbGYuYWRkcl9zcGVjCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgdHlwZShvdGhlcikgIT0gdHlwZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gKHNlbGYuZGlzcGxheV9uYW1lID09IG90aGVyLmRpc3BsYXlfbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID09IG90aGVyLnVzZXJuYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuZG9tYWluID09IG90aGVyLmRvbWFpbikKKworCitjbGFzcyBHcm91cDoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXNwbGF5X25hbWU9Tm9uZSwgYWRkcmVzc2VzPU5vbmUpOgorICAgICAgICAiIiJDcmVhdGUgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhbiBhZGRyZXNzIGdyb3VwLgorCisgICAgICAgIEFuIGFkZHJlc3MgZ3JvdXAgY29uc2lzdHMgb2YgYSBkaXNwbGF5X25hbWUgZm9sbG93ZWQgYnkgY29sb24gYW5kIGFuCisgICAgICAgIGxpc3Qgb2YgYWRkcmVzc2VzIChzZWUgQWRkcmVzcykgdGVybWluYXRlZCBieSBhIHNlbWktY29sb24uICBUaGUgR3JvdXAKKyAgICAgICAgaXMgY3JlYXRlZCBieSBzcGVjaWZ5aW5nIGEgZGlzcGxheV9uYW1lIGFuZCBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YKKyAgICAgICAgQWRkcmVzcyBvYmplY3RzLiAgQSBHcm91cCBjYW4gYWxzbyBiZSB1c2VkIHRvIHJlcHJlc2VudCBhIHNpbmdsZQorICAgICAgICBhZGRyZXNzIHRoYXQgaXMgbm90IGluIGEgZ3JvdXAsIHdoaWNoIGlzIGNvbnZlbmllbnQgd2hlbiBtYW5pcHVsYXRpbmcKKyAgICAgICAgbGlzdHMgdGhhdCBhcmUgYSBjb21iaW5hdGlvbiBvZiBHcm91cHMgYW5kIGluZGl2aWR1YWwgQWRkcmVzc2VzLiAgSW4KKyAgICAgICAgdGhpcyBjYXNlIHRoZSBkaXNwbGF5X25hbWUgc2hvdWxkIGJlIHNldCB0byBOb25lLiAgSW4gcGFydGljdWxhciwgdGhlCisgICAgICAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEdyb3VwIHdob3NlIGRpc3BsYXlfbmFtZSBpcyBOb25lIGlzIHRoZSBzYW1lCisgICAgICAgIGFzIHRoZSBBZGRyZXNzIG9iamVjdCwgaWYgdGhlcmUgaXMgb25lIGFuZCBvbmx5IG9uZSBBZGRyZXNzIG9iamVjdCBpbgorICAgICAgICB0aGUgYWRkcmVzc2VzIGxpc3QuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2Rpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZQorICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSB0dXBsZShhZGRyZXNzZXMpIGlmIGFkZHJlc3NlcyBlbHNlIHR1cGxlKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyZXNzZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzZXMKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJHcm91cChkaXNwbGF5X25hbWU9eyFyfSwgYWRkcmVzc2VzPXshcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYuYWRkcmVzc2VzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuZGlzcGxheV9uYW1lIGlzIE5vbmUgYW5kIGxlbihzZWxmLmFkZHJlc3Nlcyk9PTE6CisgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuYWRkcmVzc2VzWzBdKQorICAgICAgICBkaXNwID0gc2VsZi5kaXNwbGF5X25hbWUKKyAgICAgICAgaWYgZGlzcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG5hbWVzZXQgPSBzZXQoZGlzcCkKKyAgICAgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LXBhcnNlci5TUEVDSUFMUyk6CisgICAgICAgICAgICAgICAgZGlzcCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoZGlzcCkKKyAgICAgICAgYWRyc3RyID0gIiwgIi5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmLmFkZHJlc3NlcykKKyAgICAgICAgYWRyc3RyID0gJyAnICsgYWRyc3RyIGlmIGFkcnN0ciBlbHNlIGFkcnN0cgorICAgICAgICByZXR1cm4gInt9Ont9OyIuZm9ybWF0KGRpc3AsIGFkcnN0cikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiB0eXBlKG90aGVyKSAhPSB0eXBlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAoc2VsZi5kaXNwbGF5X25hbWUgPT0gb3RoZXIuZGlzcGxheV9uYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzc2VzID09IG90aGVyLmFkZHJlc3NlcykKKworCisjIEhlYWRlciBDbGFzc2VzICMKKworY2xhc3MgQmFzZUhlYWRlcihzdHIpOgorCisgICAgIiIiQmFzZSBjbGFzcyBmb3IgbWVzc2FnZSBoZWFkZXJzLgorCisgICAgSW1wbGVtZW50cyBnZW5lcmljIGJlaGF2aW9yIGFuZCBwcm92aWRlcyB0b29scyBmb3Igc3ViY2xhc3Nlcy4KKworICAgIEEgc3ViY2xhc3MgbXVzdCBkZWZpbmUgYSBjbGFzc21ldGhvZCBuYW1lZCAncGFyc2UnIHRoYXQgdGFrZXMgYW4gdW5mb2xkZWQKKyAgICB2YWx1ZSBzdHJpbmcgYW5kIGEgZGljdGlvbmFyeSBhcyBpdHMgYXJndW1lbnRzLiAgVGhlIGRpY3Rpb25hcnkgd2lsbAorICAgIGNvbnRhaW4gb25lIGtleSwgJ2RlZmVjdHMnLCBpbml0aWFsaXplZCB0byBhbiBlbXB0eSBsaXN0LiAgQWZ0ZXIgdGhlIGNhbGwKKyAgICB0aGUgZGljdGlvbmFyeSBtdXN0IGNvbnRhaW4gdHdvIGFkZGl0aW9uYWwga2V5czogcGFyc2VfdHJlZSwgc2V0IHRvIHRoZQorICAgIHBhcnNlIHRyZWUgb2J0YWluZWQgZnJvbSBwYXJzaW5nIHRoZSBoZWFkZXIsIGFuZCAnZGVjb2RlZCcsIHNldCB0byB0aGUKKyAgICBzdHJpbmcgdmFsdWUgb2YgdGhlIGlkZWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBmcm9tIHRoZSB2YWx1ZS4KKyAgICAoVGhhdCBpcywgZW5jb2RlZCB3b3JkcyBhcmUgZGVjb2RlZCwgYW5kIHZhbHVlcyB0aGF0IGhhdmUgY2Fub25pY2FsCisgICAgcmVwcmVzZW50YXRpb25zIGFyZSBzbyByZXByZXNlbnRlZC4pCisKKyAgICBUaGUgZGVmZWN0cyBrZXkgaXMgaW50ZW5kZWQgdG8gY29sbGVjdCBwYXJzaW5nIGRlZmVjdHMsIHdoaWNoIHRoZSBtZXNzYWdlCisgICAgcGFyc2VyIHdpbGwgc3Vic2VxdWVudGx5IGRpc3Bvc2Ugb2YgYXMgYXBwcm9wcmlhdGUuICBUaGUgcGFyc2VyIHNob3VsZCBub3QsCisgICAgaW5zb2ZhciBhcyBwcmFjdGljYWwsIHJhaXNlIGFueSBlcnJvcnMuICBEZWZlY3RzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKyAgICBsaXN0IGluc3RlYWQuICBUaGUgc3RhbmRhcmQgaGVhZGVyIHBhcnNlcnMgcmVnaXN0ZXIgZGVmZWN0cyBmb3IgUkZDCisgICAgY29tcGxpYW5jZSBpc3N1ZXMsIGZvciBvYnNvbGV0ZSBSRkMgc3ludGF4LCBhbmQgZm9yIHVucmVjb3ZlcmFibGUgcGFyc2luZworICAgIGVycm9ycy4KKworICAgIFRoZSBwYXJzZSBtZXRob2QgbWF5IGFkZCBhZGRpdGlvbmFsIGtleXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJbiB0aGlzIGNhc2UKKyAgICB0aGUgc3ViY2xhc3MgbXVzdCBkZWZpbmUgYW4gJ2luaXQnIG1ldGhvZCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlCisgICAgZGljdGlvbmFyeSBhcyBpdHMga2V5d29yZCBhcmd1bWVudHMuICBUaGUgbWV0aG9kIHNob3VsZCB1c2UgKHVzdWFsbHkgYnkKKyAgICBzZXR0aW5nIHRoZW0gYXMgdGhlIHZhbHVlIG9mIHNpbWlsYXJseSBuYW1lZCBhdHRyaWJ1dGVzKSBhbmQgcmVtb3ZlIGFsbCB0aGUKKyAgICBleHRyYSBrZXlzIGFkZGVkIGJ5IGl0cyBwYXJzZSBtZXRob2QsIGFuZCB0aGVuIHVzZSBzdXBlciB0byBjYWxsIGl0cyBwYXJlbnQKKyAgICBjbGFzcyB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFuZCBrZXl3b3Jkcy4KKworICAgIFRoZSBzdWJjbGFzcyBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdGhhdCBhICdtYXhfY291bnQnIGF0dHJpYnV0ZSBpcyBkZWZpbmVkCisgICAgdGhhdCBpcyBlaXRoZXIgTm9uZSBvciAxLiBYWFg6IG5lZWQgdG8gYmV0dGVyIGRlZmluZSB0aGlzIEFQSS4KKworICAgICIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGt3ZHMgPSB7J2RlZmVjdHMnOiBbXX0KKyAgICAgICAgY2xzLnBhcnNlKHZhbHVlLCBrd2RzKQorICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMoa3dkc1snZGVjb2RlZCddKToKKyAgICAgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHV0aWxzLl9zYW5pdGl6ZShrd2RzWydkZWNvZGVkJ10pCisgICAgICAgIHNlbGYgPSBzdHIuX19uZXdfXyhjbHMsIGt3ZHNbJ2RlY29kZWQnXSkKKyAgICAgICAgZGVsIGt3ZHNbJ2RlY29kZWQnXQorICAgICAgICBzZWxmLmluaXQobmFtZSwgKiprd2RzKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGluaXQoc2VsZiwgbmFtZSwgKiwgcGFyc2VfdHJlZSwgZGVmZWN0cyk6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhcnNlX3RyZWUgPSBwYXJzZV90cmVlCisgICAgICAgIHNlbGYuX2RlZmVjdHMgPSBkZWZlY3RzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZWZlY3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5fZGVmZWN0cykKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgX3JlY29uc3RydWN0X2hlYWRlciwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgc3RyKHNlbGYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHNlbGYuX19kaWN0X18pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlY29uc3RydWN0KGNscywgdmFsdWUpOgorICAgICAgICByZXR1cm4gc3RyLl9fbmV3X18oY2xzLCB2YWx1ZSkKKworICAgIGRlZiBmb2xkKHNlbGYsICosIHBvbGljeSk6CisgICAgICAgICIiIkZvbGQgaGVhZGVyIGFjY29yZGluZyB0byBwb2xpY3kuCisKKyAgICAgICAgVGhlIHBhcnNlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgaGVhZGVyIGlzIGZvbGRlZCBhY2NvcmRpbmcgdG8KKyAgICAgICAgUkZDNTMyMiBydWxlcywgYXMgbW9kaWZpZWQgYnkgdGhlIHBvbGljeS4gIElmIHRoZSBwYXJzZSB0cmVlCisgICAgICAgIGNvbnRhaW5zIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMsIHRoZSBieXRlcyBhcmUgQ1RFIGVuY29kZWQgdXNpbmcKKyAgICAgICAgdGhlIGNoYXJzZXQgJ3Vua25vd24tOGJpdCIuCisKKyAgICAgICAgQW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBwYXJzZSB0cmVlIGFyZSBDVEUgZW5jb2RlZCB1c2luZworICAgICAgICBjaGFyc2V0IHV0Zi04LiBYWFg6IG1ha2UgdGhpcyBhIHBvbGljeSBzZXR0aW5nLgorCisgICAgICAgIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZyBwb3NzaWJseSBjb250YWluaW5nIGxpbmVzZXAKKyAgICAgICAgY2hhcmFjdGVycywgYW5kIGVuZGluZyB3aXRoIGEgbGluZXNlcCBjaGFyYWN0ZXIuICBUaGUgc3RyaW5nIGluY2x1ZGVzCisgICAgICAgIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlICc6ICcgc2VwYXJhdG9yLgorCisgICAgICAgICIiIgorICAgICAgICAjIEF0IHNvbWUgcG9pbnQgd2UgbmVlZCB0byBvbmx5IHB1dCBmd3MgaGVyZSBpZiBpdCB3YXMgaW4gdGhlIHNvdXJjZS4KKyAgICAgICAgaGVhZGVyID0gcGFyc2VyLkhlYWRlcihbCisgICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoWworICAgICAgICAgICAgICAgIHBhcnNlci5WYWx1ZVRlcm1pbmFsKHNlbGYubmFtZSwgJ2hlYWRlci1uYW1lJyksCisgICAgICAgICAgICAgICAgcGFyc2VyLlZhbHVlVGVybWluYWwoJzonLCAnaGVhZGVyLXNlcCcpXSksCisgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfdHJlZV0pCisgICAgICAgIHJldHVybiBoZWFkZXIuZm9sZChwb2xpY3k9cG9saWN5KQorCisKK2RlZiBfcmVjb25zdHJ1Y3RfaGVhZGVyKGNsc19uYW1lLCBiYXNlcywgdmFsdWUpOgorICAgIHJldHVybiB0eXBlKGNsc19uYW1lLCBiYXNlcywge30pLl9yZWNvbnN0cnVjdCh2YWx1ZSkKKworCitjbGFzcyBVbnN0cnVjdHVyZWRIZWFkZXI6CisKKyAgICBtYXhfY291bnQgPSBOb25lCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIoa3dkc1sncGFyc2VfdHJlZSddKQorCisKK2NsYXNzIFVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcihVbnN0cnVjdHVyZWRIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIERhdGVIZWFkZXI6CisKKyAgICAiIiJIZWFkZXIgd2hvc2UgdmFsdWUgY29uc2lzdHMgb2YgYSBzaW5nbGUgdGltZXN0YW1wLgorCisgICAgUHJvdmlkZXMgYW4gYWRkaXRpb25hbCBhdHRyaWJ1dGUsIGRhdGV0aW1lLCB3aGljaCBpcyBlaXRoZXIgYW4gYXdhcmUKKyAgICBkYXRldGltZSB1c2luZyBhIHRpbWV6b25lLCBvciBhIG5haXZlIGRhdGV0aW1lIGlmIHRoZSB0aW1lem9uZQorICAgIGluIHRoZSBpbnB1dCBzdHJpbmcgaXMgLTAwMDAuICBBbHNvIGFjY2VwdHMgYSBkYXRldGltZSBhcyBpbnB1dC4KKyAgICBUaGUgJ3ZhbHVlJyBhdHRyaWJ1dGUgaXMgdGhlIG5vcm1hbGl6ZWQgZm9ybSBvZiB0aGUgdGltZXN0YW1wLAorICAgIHdoaWNoIG1lYW5zIGl0IGlzIHRoZSBvdXRwdXQgb2YgZm9ybWF0X2RhdGV0aW1lIG9uIHRoZSBkYXRldGltZS4KKyAgICAiIiIKKworICAgIG1heF9jb3VudCA9IE5vbmUKKworICAgICMgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIGZvbGRpbmcsIG5vdCBmb3IgY3JlYXRpbmcgJ2RlY29kZWQnLgorICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAga3dkc1snZGVmZWN0cyddLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoKSkKKyAgICAgICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSBOb25lCisgICAgICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSAnJworICAgICAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VyLlRva2VuTGlzdCgpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgIHZhbHVlID0gdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHZhbHVlKQorICAgICAgICBrd2RzWydkYXRldGltZSddID0gdmFsdWUKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gdXRpbHMuZm9ybWF0X2RhdGV0aW1lKGt3ZHNbJ2RhdGV0aW1lJ10pCisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIoa3dkc1snZGVjb2RlZCddKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl9kYXRldGltZSA9IGt3LnBvcCgnZGF0ZXRpbWUnKQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kYXRldGltZQorCisKK2NsYXNzIFVuaXF1ZURhdGVIZWFkZXIoRGF0ZUhlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgQWRkcmVzc0hlYWRlcjoKKworICAgIG1heF9jb3VudCA9IE5vbmUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgdmFsdWVfcGFyc2VyKHZhbHVlKToKKyAgICAgICAgYWRkcmVzc19saXN0LCB2YWx1ZSA9IHBhcnNlci5nZXRfYWRkcmVzc19saXN0KHZhbHVlKQorICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCAndGhpcyBzaG91bGQgbm90IGhhcHBlbicKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NfbGlzdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgIyBXZSBhcmUgdHJhbnNsYXRpbmcgaGVyZSBmcm9tIHRoZSBSRkMgbGFuZ3VhZ2UgKGFkZHJlc3MvbWFpbGJveCkKKyAgICAgICAgICAgICMgdG8gb3VyIEFQSSBsYW5ndWFnZSAoZ3JvdXAvYWRkcmVzcykuCisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBhZGRyZXNzX2xpc3QgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICAgICAgZ3JvdXBzID0gW10KKyAgICAgICAgICAgIGZvciBhZGRyIGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXM6CisgICAgICAgICAgICAgICAgZ3JvdXBzLmFwcGVuZChHcm91cChhZGRyLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBZGRyZXNzKG1iLmRpc3BsYXlfbmFtZSBvciAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmxvY2FsX3BhcnQgb3IgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYi5kb21haW4gb3IgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1iIGluIGFkZHIuYWxsX21haWxib3hlc10pKQorICAgICAgICAgICAgZGVmZWN0cyA9IGxpc3QoYWRkcmVzc19saXN0LmFsbF9kZWZlY3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgQWRkcmVzcy9Hcm91cCBzdHVmZgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodmFsdWUsICdfX2l0ZXJfXycpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gW3ZhbHVlXQorICAgICAgICAgICAgZ3JvdXBzID0gW0dyb3VwKE5vbmUsIFtpdGVtXSkgaWYgbm90IGhhc2F0dHIoaXRlbSwgJ2FkZHJlc3NlcycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlXQorICAgICAgICAgICAgZGVmZWN0cyA9IFtdCisgICAgICAgIGt3ZHNbJ2dyb3VwcyddID0gZ3JvdXBzCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXSA9IGRlZmVjdHMKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gJywgJy5qb2luKFtzdHIoaXRlbSkgZm9yIGl0ZW0gaW4gZ3JvdXBzXSkKKyAgICAgICAgaWYgJ3BhcnNlX3RyZWUnIG5vdCBpbiBrd2RzOgorICAgICAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gY2xzLnZhbHVlX3BhcnNlcihrd2RzWydkZWNvZGVkJ10pCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX2dyb3VwcyA9IHR1cGxlKGt3LnBvcCgnZ3JvdXBzJykpCisgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdyb3VwcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dyb3VwcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYWRkcmVzc2VzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSB0dXBsZShbYWRkcmVzcyBmb3IgZ3JvdXAgaW4gc2VsZi5fZ3JvdXBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWRkcmVzcyBpbiBncm91cC5hZGRyZXNzZXNdKQorICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc2VzCisKKworY2xhc3MgVW5pcXVlQWRkcmVzc0hlYWRlcihBZGRyZXNzSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBTaW5nbGVBZGRyZXNzSGVhZGVyKEFkZHJlc3NIZWFkZXIpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3Moc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLmFkZHJlc3NlcykhPTE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCgidmFsdWUgb2Ygc2luZ2xlIGFkZHJlc3MgaGVhZGVyIHt9IGlzIG5vdCAiCisgICAgICAgICAgICAgICAgImEgc2luZ2xlIGFkZHJlc3MiKS5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuYWRkcmVzc2VzWzBdCisKKworY2xhc3MgVW5pcXVlU2luZ2xlQWRkcmVzc0hlYWRlcihTaW5nbGVBZGRyZXNzSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBNSU1FVmVyc2lvbkhlYWRlcjoKKworICAgIG1heF9jb3VudCA9IDEKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfbWltZV92ZXJzaW9uKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKyAgICAgICAga3dkc1snbWFqb3InXSA9IE5vbmUgaWYgcGFyc2VfdHJlZS5taW5vciBpcyBOb25lIGVsc2UgcGFyc2VfdHJlZS5tYWpvcgorICAgICAgICBrd2RzWydtaW5vciddID0gcGFyc2VfdHJlZS5taW5vcgorICAgICAgICBpZiBwYXJzZV90cmVlLm1pbm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAga3dkc1sndmVyc2lvbiddID0gJ3t9Lnt9Jy5mb3JtYXQoa3dkc1snbWFqb3InXSwga3dkc1snbWlub3InXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGt3ZHNbJ3ZlcnNpb24nXSA9IE5vbmUKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IGt3LnBvcCgndmVyc2lvbicpCisgICAgICAgIHNlbGYuX21ham9yID0ga3cucG9wKCdtYWpvcicpCisgICAgICAgIHNlbGYuX21pbm9yID0ga3cucG9wKCdtaW5vcicpCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWpvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ham9yCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWlub3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9taW5vcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKworY2xhc3MgUGFyYW1ldGVyaXplZE1JTUVIZWFkZXI6CisKKyAgICAjIE1peGluIHRoYXQgaGFuZGxlcyB0aGUgcGFyYW1zIGRpY3QuICBNdXN0IGJlIHN1YmNsYXNzZWQgYW5kCisgICAgIyBhIHByb3BlcnR5IHZhbHVlX3BhcnNlciBmb3IgdGhlIHNwZWNpZmljIGhlYWRlciBwcm92aWRlZC4KKworICAgIG1heF9jb3VudCA9IDEKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VfdHJlZSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihwYXJzZV90cmVlKQorICAgICAgICBrd2RzWydkZWZlY3RzJ10uZXh0ZW5kKHBhcnNlX3RyZWUuYWxsX2RlZmVjdHMpCisgICAgICAgIGlmIHBhcnNlX3RyZWUucGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBrd2RzWydwYXJhbXMnXSA9IHt9CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoZSBNSU1FIFJGQ3Mgc3BlY2lmeSB0aGF0IHBhcmFtZXRlciBvcmRlcmluZyBpcyBhcmJpdHJhcnkuCisgICAgICAgICAgICBrd2RzWydwYXJhbXMnXSA9IHt1dGlscy5fc2FuaXRpemUobmFtZSkubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLl9zYW5pdGl6ZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcGFyc2VfdHJlZS5wYXJhbXN9CisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX3BhcmFtcyA9IGt3LnBvcCgncGFyYW1zJykKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtcy5jb3B5KCkKKworCitjbGFzcyBDb250ZW50VHlwZUhlYWRlcihQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcik6CisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfdHlwZV9oZWFkZXIpCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5fbWFpbnR5cGUgPSB1dGlscy5fc2FuaXRpemUoc2VsZi5fcGFyc2VfdHJlZS5tYWludHlwZSkKKyAgICAgICAgc2VsZi5fc3VidHlwZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLnN1YnR5cGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbnR5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYWludHlwZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN1YnR5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zdWJ0eXBlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudF90eXBlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5tYWludHlwZSArICcvJyArIHNlbGYuc3VidHlwZQorCisKK2NsYXNzIENvbnRlbnREaXNwb3NpdGlvbkhlYWRlcihQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcik6CisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisgICAgICAgIGNkID0gc2VsZi5fcGFyc2VfdHJlZS5jb250ZW50X2Rpc3Bvc2l0aW9uCisgICAgICAgIHNlbGYuX2NvbnRlbnRfZGlzcG9zaXRpb24gPSBjZCBpZiBjZCBpcyBOb25lIGVsc2UgdXRpbHMuX3Nhbml0aXplKGNkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnRfZGlzcG9zaXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jb250ZW50X2Rpc3Bvc2l0aW9uCisKKworY2xhc3MgQ29udGVudFRyYW5zZmVyRW5jb2RpbmdIZWFkZXI6CisKKyAgICBtYXhfY291bnQgPSAxCisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfdHJhbnNmZXJfZW5jb2RpbmdfaGVhZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9jdGUgPSB1dGlscy5fc2FuaXRpemUoc2VsZi5fcGFyc2VfdHJlZS5jdGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY3RlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY3RlCisKKworIyBUaGUgaGVhZGVyIGZhY3RvcnkgIworCitfZGVmYXVsdF9oZWFkZXJfbWFwID0geworICAgICdzdWJqZWN0JzogICAgICAgICAgICAgICAgICAgICAgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyLAorICAgICdkYXRlJzogICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlRGF0ZUhlYWRlciwKKyAgICAncmVzZW50LWRhdGUnOiAgICAgICAgICAgICAgICAgIERhdGVIZWFkZXIsCisgICAgJ29yaWctZGF0ZSc6ICAgICAgICAgICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyLAorICAgICdzZW5kZXInOiAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlU2luZ2xlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LXNlbmRlcic6ICAgICAgICAgICAgICAgIFNpbmdsZUFkZHJlc3NIZWFkZXIsCisgICAgJ3RvJzogICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtdG8nOiAgICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAnY2MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1jYyc6ICAgICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdiY2MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LWJjYyc6ICAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ2Zyb20nOiAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtZnJvbSc6ICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAncmVwbHktdG8nOiAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ21pbWUtdmVyc2lvbic6ICAgICAgICAgICAgICAgICBNSU1FVmVyc2lvbkhlYWRlciwKKyAgICAnY29udGVudC10eXBlJzogICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlSGVhZGVyLAorICAgICdjb250ZW50LWRpc3Bvc2l0aW9uJzogICAgICAgICAgQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyLAorICAgICdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJzogICAgQ29udGVudFRyYW5zZmVyRW5jb2RpbmdIZWFkZXIsCisgICAgfQorCitjbGFzcyBIZWFkZXJSZWdpc3RyeToKKworICAgICIiIkEgaGVhZGVyX2ZhY3RvcnkgYW5kIGhlYWRlciByZWdpc3RyeS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlX2NsYXNzPUJhc2VIZWFkZXIsIGRlZmF1bHRfY2xhc3M9VW5zdHJ1Y3R1cmVkSGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICB1c2VfZGVmYXVsdF9tYXA9VHJ1ZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIGhlYWRlcl9mYWN0b3J5IHRoYXQgd29ya3Mgd2l0aCB0aGUgUG9saWN5IEFQSS4KKworICAgICAgICBiYXNlX2NsYXNzIGlzIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUgdGhlIGxhc3QgY2xhc3MgaW4gdGhlIGNyZWF0ZWQKKyAgICAgICAgaGVhZGVyIGNsYXNzJ3MgX19iYXNlc19fIGxpc3QuICBkZWZhdWx0X2NsYXNzIGlzIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUKKyAgICAgICAgdXNlZCBpZiAibmFtZSIgKHNlZSBfX2NhbGxfXykgZG9lcyBub3QgYXBwZWFyIGluIHRoZSByZWdpc3RyeS4KKyAgICAgICAgdXNlX2RlZmF1bHRfbWFwIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBkZWZhdWx0IG1hcHBpbmcgb2YgbmFtZXMgdG8KKyAgICAgICAgc3BlY2lhbGl6ZWQgY2xhc3NlcyBpcyBjb3BpZWQgaW4gdG8gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhlIGZhY3RvcnkgaXMKKyAgICAgICAgY3JlYXRlZC4gIFRoZSBkZWZhdWx0IGlzIFRydWUuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucmVnaXN0cnkgPSB7fQorICAgICAgICBzZWxmLmJhc2VfY2xhc3MgPSBiYXNlX2NsYXNzCisgICAgICAgIHNlbGYuZGVmYXVsdF9jbGFzcyA9IGRlZmF1bHRfY2xhc3MKKyAgICAgICAgaWYgdXNlX2RlZmF1bHRfbWFwOgorICAgICAgICAgICAgc2VsZi5yZWdpc3RyeS51cGRhdGUoX2RlZmF1bHRfaGVhZGVyX21hcCkKKworICAgIGRlZiBtYXBfdG9fdHlwZShzZWxmLCBuYW1lLCBjbHMpOgorICAgICAgICAiIiJSZWdpc3RlciBjbHMgYXMgdGhlIHNwZWNpYWxpemVkIGNsYXNzIGZvciBoYW5kbGluZyAibmFtZSIgaGVhZGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZWdpc3RyeVtuYW1lLmxvd2VyKCldID0gY2xzCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGNscyA9IHNlbGYucmVnaXN0cnkuZ2V0KG5hbWUubG93ZXIoKSwgc2VsZi5kZWZhdWx0X2NsYXNzKQorICAgICAgICByZXR1cm4gdHlwZSgnXycrY2xzLl9fbmFtZV9fLCAoY2xzLCBzZWxmLmJhc2VfY2xhc3MpLCB7fSkKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIGhlYWRlciBpbnN0YW5jZSBmb3IgaGVhZGVyICduYW1lJyBmcm9tICd2YWx1ZScuCisKKyAgICAgICAgQ3JlYXRlcyBhIGhlYWRlciBpbnN0YW5jZSBieSBjcmVhdGluZyBhIHNwZWNpYWxpemVkIGNsYXNzIGZvciBwYXJzaW5nCisgICAgICAgIGFuZCByZXByZXNlbnRpbmcgdGhlIHNwZWNpZmllZCBoZWFkZXIgYnkgY29tYmluaW5nIHRoZSBmYWN0b3J5CisgICAgICAgIGJhc2VfY2xhc3Mgd2l0aCBhIHNwZWNpYWxpemVkIGNsYXNzIGZyb20gdGhlIHJlZ2lzdHJ5IG9yIHRoZQorICAgICAgICBkZWZhdWx0X2NsYXNzLCBhbmQgcGFzc2luZyB0aGUgbmFtZSBhbmQgdmFsdWUgdG8gdGhlIGNvbnN0cnVjdGVkCisgICAgICAgIGNsYXNzJ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmW25hbWVdKG5hbWUsIHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWVzc2FnZS5weQppbmRleCBmMWZmY2RiLi4zZmVhYjUyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWVzc2FnZS5weQpAQCAtMTAsMTQgKzEwLDE0IEBACiBpbXBvcnQgdXUKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBiaW5hc2NpaQotaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogCiAjIEludHJhcGFja2FnZSBpbXBvcnRzCiBmcm9tIGVtYWlsIGltcG9ydCB1dGlscwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsIGltcG9ydCBoZWFkZXIKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0Citmcm9tIGVtYWlsLl9lbmNvZGVkX3dvcmRzIGltcG9ydCBkZWNvZGVfYgogQ2hhcnNldCA9IF9jaGFyc2V0LkNoYXJzZXQKIAogU0VNSVNQQUNFID0gJzsgJwpAQCAtMjYsMjQgKzI2LDYgQEAKICMgZXhpc3RlbmNlIG9mIHdoaWNoIGZvcmNlIHF1b3Rpbmcgb2YgdGhlIHBhcmFtZXRlciB2YWx1ZS4KIHRzcGVjaWFscyA9IHJlLmNvbXBpbGUocidbIFwoXCk8PkAsOzpcXCIvXFtcXVw/PV0nKQogCi0jIEhvdyB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBwcm9jZXNzaW5nIHN0cmluZ3MgdGhhdCBjb21lIGZyb20gYSBieXRlCi0jIHNvdXJjZSB3aXRoIHVuZGVjb2RhYmxlIGNoYXJhY3RlcnMuCi1faGFzX3N1cnJvZ2F0ZXMgPSByZS5jb21waWxlKAotICAgICcoW15cdWQ4MDAtXHVkYmZmXXxcQSlbXHVkYzAwLVx1ZGZmZl0oW15cdWRjMDAtXHVkZmZmXXxcWiknKS5zZWFyY2gKLQotCi0jIEhlbHBlciBmdW5jdGlvbnMKLWRlZiBfc2FuaXRpemVfaGVhZGVyKG5hbWUsIHZhbHVlKToKLSAgICAjIElmIHRoZSBoZWFkZXIgdmFsdWUgY29udGFpbnMgc3Vycm9nYXRlcywgcmV0dXJuIGEgSGVhZGVyIHVzaW5nCi0gICAgIyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQgdG8gZW5jb2RlIHRoZSBieXRlcyBhcyBlbmNvZGVkIHdvcmRzLgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAjIEFzc3VtZSBpdCBpcyBhbHJlYWR5IGEgaGVhZGVyIG9iamVjdAotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgotICAgICAgICByZXR1cm4gaGVhZGVyLkhlYWRlcih2YWx1ZSwgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9bmFtZSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gdmFsdWUKIAogZGVmIF9zcGxpdHBhcmFtKHBhcmFtKToKICAgICAjIFNwbGl0IGhlYWRlciBwYXJhbWV0ZXJzLiAgQkFXOiB0aGlzIG1heSBiZSB0b28gc2ltcGxlLiAgSXQgaXNuJ3QKQEAgLTEzNiw3ICsxMTgsOCBAQAogICAgIHlvdSBtdXN0IHVzZSB0aGUgZXhwbGljaXQgQVBJIHRvIHNldCBvciBnZXQgYWxsIHRoZSBoZWFkZXJzLiAgTm90IGFsbCBvZgogICAgIHRoZSBtYXBwaW5nIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9saWN5PWNvbXBhdDMyKToKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKICAgICAgICAgc2VsZi5faGVhZGVycyA9IFtdCiAgICAgICAgIHNlbGYuX3VuaXhmcm9tID0gTm9uZQogICAgICAgICBzZWxmLl9wYXlsb2FkID0gTm9uZQpAQCAtMjQ2LDcgKzIyOSw3IEBACiAgICAgICAgIGN0ZSA9IHN0cihzZWxmLmdldCgnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycsICcnKSkubG93ZXIoKQogICAgICAgICAjIHBheWxvYWQgbWF5IGJlIGJ5dGVzIGhlcmUuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgc3RyKToKLSAgICAgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhwYXlsb2FkKToKKyAgICAgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyhwYXlsb2FkKToKICAgICAgICAgICAgICAgICBicGF5bG9hZCA9IHBheWxvYWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkZWNvZGU6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKQEAgLTI2NywxMSArMjUwLDEyIEBACiAgICAgICAgIGlmIGN0ZSA9PSAncXVvdGVkLXByaW50YWJsZSc6CiAgICAgICAgICAgICByZXR1cm4gdXRpbHMuX3FkZWNvZGUoYnBheWxvYWQpCiAgICAgICAgIGVsaWYgY3RlID09ICdiYXNlNjQnOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBiYXNlNjQuYjY0ZGVjb2RlKGJwYXlsb2FkKQotICAgICAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgotICAgICAgICAgICAgICAgICMgSW5jb3JyZWN0IHBhZGRpbmcKLSAgICAgICAgICAgICAgICByZXR1cm4gYnBheWxvYWQKKyAgICAgICAgICAgICMgWFhYOiB0aGlzIGlzIGEgYml0IG9mIGEgaGFjazsgZGVjb2RlX2Igc2hvdWxkIHByb2JhYmx5IGJlIGZhY3RvcmVkCisgICAgICAgICAgICAjIG91dCBzb21ld2hlcmUsIGJ1dCBJIGhhdmVuJ3QgZmlndXJlZCBvdXQgd2hlcmUgeWV0LgorICAgICAgICAgICAgdmFsdWUsIGRlZmVjdHMgPSBkZWNvZGVfYihiJycuam9pbihicGF5bG9hZC5zcGxpdGxpbmVzKCkpKQorICAgICAgICAgICAgZm9yIGRlZmVjdCBpbiBkZWZlY3RzOgorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZiwgZGVmZWN0KQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgIGVsaWYgY3RlIGluICgneC11dWVuY29kZScsICd1dWVuY29kZScsICd1dWUnLCAneC11dWUnKToKICAgICAgICAgICAgIGluX2ZpbGUgPSBCeXRlc0lPKGJwYXlsb2FkKQogICAgICAgICAgICAgb3V0X2ZpbGUgPSBCeXRlc0lPKCkKQEAgLTM2Miw3ICszNDYsMTcgQEAKICAgICAgICAgTm90ZTogdGhpcyBkb2VzIG5vdCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUgZmllbGQKICAgICAgICAgbmFtZS4gIFVzZSBfX2RlbGl0ZW1fXygpIGZpcnN0IHRvIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVycy4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKChuYW1lLCB2YWwpKQorICAgICAgICBtYXhfY291bnQgPSBzZWxmLnBvbGljeS5oZWFkZXJfbWF4X2NvdW50KG5hbWUpCisgICAgICAgIGlmIG1heF9jb3VudDoKKyAgICAgICAgICAgIGxuYW1lID0gbmFtZS5sb3dlcigpCisgICAgICAgICAgICBmb3VuZCA9IDAKKyAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgay5sb3dlcigpID09IGxuYW1lOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIGZvdW5kID49IG1heF9jb3VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZXJlIG1heSBiZSBhdCBtb3N0IHt9IHt9IGhlYWRlcnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gYSBtZXNzYWdlIi5mb3JtYXQobWF4X2NvdW50LCBuYW1lKSkKKyAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbCkpCiAKICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICIiIkRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgYSBoZWFkZXIsIGlmIHByZXNlbnQuCkBAIC00MDEsNyArMzk1LDggQEAKICAgICAgICAgQW55IGZpZWxkcyBkZWxldGVkIGFuZCByZS1pbnNlcnRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBoZWFkZXIKICAgICAgICAgbGlzdC4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbX3Nhbml0aXplX2hlYWRlcihrLCB2KSBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzXQorICAgICAgICByZXR1cm4gW3NlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCiAKICAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgICIiIkdldCBhbGwgdGhlIG1lc3NhZ2UncyBoZWFkZXIgZmllbGRzIGFuZCB2YWx1ZXMuCkBAIC00MTEsNyArNDA2LDggQEAKICAgICAgICAgQW55IGZpZWxkcyBkZWxldGVkIGFuZCByZS1pbnNlcnRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBoZWFkZXIKICAgICAgICAgbGlzdC4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbKGssIF9zYW5pdGl6ZV9oZWFkZXIoaywgdikpIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCisgICAgICAgIHJldHVybiBbKGssIHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KSkKKyAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzXQogCiAgICAgZGVmIGdldChzZWxmLCBuYW1lLCBmYWlsb2JqPU5vbmUpOgogICAgICAgICAiIiJHZXQgYSBoZWFkZXIgdmFsdWUuCkBAIC00MjIsMTAgKzQxOCwyOSBAQAogICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CiAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX3Nhbml0aXplX2hlYWRlcihrLCB2KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2UoaywgdikKICAgICAgICAgcmV0dXJuIGZhaWxvYmoKIAogICAgICMKKyAgICAjICJJbnRlcm5hbCIgbWV0aG9kcyAocHVibGljIEFQSSwgYnV0IG9ubHkgaW50ZW5kZWQgZm9yIHVzZSBieSBhIHBhcnNlcgorICAgICMgb3IgZ2VuZXJhdG9yLCBub3Qgbm9ybWFsIGFwcGxpY2F0aW9uIGNvZGUuCisgICAgIworCisgICAgZGVmIHNldF9yYXcoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJTdG9yZSBuYW1lIGFuZCB2YWx1ZSBpbiB0aGUgbW9kZWwgd2l0aG91dCBtb2RpZmljYXRpb24uCisKKyAgICAgICAgVGhpcyBpcyBhbiAiaW50ZXJuYWwiIEFQSSwgaW50ZW5kZWQgb25seSBmb3IgdXNlIGJ5IGEgcGFyc2VyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKKworICAgIGRlZiByYXdfaXRlbXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSBoZWFkZXIgcGFpcnMgd2l0aG91dCBtb2RpZmljYXRpb24uCisKKyAgICAgICAgVGhpcyBpcyBhbiAiaW50ZXJuYWwiIEFQSSwgaW50ZW5kZWQgb25seSBmb3IgdXNlIGJ5IGEgZ2VuZXJhdG9yLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5faGVhZGVycy5jb3B5KCkpCisKKyAgICAjCiAgICAgIyBBZGRpdGlvbmFsIHVzZWZ1bCBzdHVmZgogICAgICMKIApAQCAtNDQyLDcgKzQ1Nyw3IEBACiAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoX3Nhbml0aXplX2hlYWRlcihrLCB2KSkKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KSkKICAgICAgICAgaWYgbm90IHZhbHVlczoKICAgICAgICAgICAgIHJldHVybiBmYWlsb2JqCiAgICAgICAgIHJldHVybiB2YWx1ZXMKQEAgLTQ3NSw3ICs0OTAsNyBAQAogICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChfZm9ybWF0cGFyYW0oay5yZXBsYWNlKCdfJywgJy0nKSwgdikpCiAgICAgICAgIGlmIF92YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHBhcnRzLmluc2VydCgwLCBfdmFsdWUpCi0gICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKChfbmFtZSwgU0VNSVNQQUNFLmpvaW4ocGFydHMpKSkKKyAgICAgICAgc2VsZltfbmFtZV0gPSBTRU1JU1BBQ0Uuam9pbihwYXJ0cykKIAogICAgIGRlZiByZXBsYWNlX2hlYWRlcihzZWxmLCBfbmFtZSwgX3ZhbHVlKToKICAgICAgICAgIiIiUmVwbGFjZSBhIGhlYWRlci4KQEAgLTQ4Nyw3ICs1MDIsNyBAQAogICAgICAgICBfbmFtZSA9IF9uYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGksIChrLCB2KSBpbiB6aXAocmFuZ2UobGVuKHNlbGYuX2hlYWRlcnMpKSwgc2VsZi5faGVhZGVycyk6CiAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gX25hbWU6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc1tpXSA9IChrLCBfdmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc1tpXSA9IHNlbGYucG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZShrLCBfdmFsdWUpCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKF9uYW1lKQpAQCAtODAzLDcgKzgxOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoaykKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXM9JXMnICUgKGssIHYpKQotICAgICAgICAgICAgICAgIG5ld2hlYWRlcnMuYXBwZW5kKChoLCBTRU1JU1BBQ0Uuam9pbihwYXJ0cykpKQorICAgICAgICAgICAgICAgIHZhbCA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQorICAgICAgICAgICAgICAgIG5ld2hlYWRlcnMuYXBwZW5kKHNlbGYucG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZShoLCB2YWwpKQogCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2hlYWRlcnMuYXBwZW5kKChoLCB2KSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CmluZGV4IDU3NDdkYjUuLjgwZmY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQpAQCAtMTQsNyArMTQsNyBAQAogY2xhc3MgTUlNRVRleHQoTUlNRU5vbk11bHRpcGFydCk6CiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PSd1cy1hc2NpaScpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX3RleHQgaXMgdGhlIHN0cmluZyBmb3IgdGhpcyBtZXNzYWdlIG9iamVjdC4KQEAgLTI1LDYgKzI1LDE4IEBACiAgICAgICAgIGhlYWRlci4gIFRoaXMgZGVmYXVsdHMgdG8gInVzLWFzY2lpIi4gIE5vdGUgdGhhdCBhcyBhIHNpZGUtZWZmZWN0LCB0aGUKICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhbHNvIGJlIHNldC4KICAgICAgICAgIiIiCisKKyAgICAgICAgIyBJZiBubyBfY2hhcnNldCB3YXMgc3BlY2lmaWVkLCBjaGVjayB0byBzZWUgc2VlIGlmIHRoZXJlIGFyZSBub24tYXNjaWkKKyAgICAgICAgIyBjaGFyYWN0ZXJzIHByZXNlbnQuIElmIG5vdCwgdXNlICd1cy1hc2NpaScsIG90aGVyd2lzZSB1c2UgdXRmLTguCisgICAgICAgICMgWFhYOiBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgIzczMDQgaXMgZml4ZWQuCisgICAgICAgIGlmIF9jaGFyc2V0IGlzIE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgX3RleHQuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXMtYXNjaWknCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3V0Zi04JworCiAgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IF9jaGFyc2V0fSkKKwogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF90ZXh0LCBfY2hhcnNldCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wYXJzZXIucHkgYi9MaWIvZW1haWwvcGFyc2VyLnB5CmluZGV4IDFjOTMxZWEuLjFhYWIwMTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9wYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL3BhcnNlci5weQpAQCAtNCwxOCArNCwxOSBAQAogCiAiIiJBIHBhcnNlciBvZiBSRkMgMjgyMiBhbmQgTUlNRSBlbWFpbCBtZXNzYWdlcy4iIiIKIAotX19hbGxfXyA9IFsnUGFyc2VyJywgJ0hlYWRlclBhcnNlcicsICdCeXRlc1BhcnNlciddCitfX2FsbF9fID0gWydQYXJzZXInLCAnSGVhZGVyUGFyc2VyJywgJ0J5dGVzUGFyc2VyJywgJ0J5dGVzSGVhZGVyUGFyc2VyJ10KIAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgVGV4dElPV3JhcHBlcgogCiBmcm9tIGVtYWlsLmZlZWRwYXJzZXIgaW1wb3J0IEZlZWRQYXJzZXIKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIAogCiAMCiBjbGFzcyBQYXJzZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9jbGFzcz1NZXNzYWdlLCAqLCBwb2xpY3k9Y29tcGF0MzIpOgogICAgICAgICAiIiJQYXJzZXIgb2YgUkZDIDI4MjIgYW5kIE1JTUUgZW1haWwgbWVzc2FnZXMuCiAKICAgICAgICAgQ3JlYXRlcyBhbiBpbi1tZW1vcnkgb2JqZWN0IHRyZWUgcmVwcmVzZW50aW5nIHRoZSBlbWFpbCBtZXNzYWdlLCB3aGljaApAQCAtMzAsMjggKzMxLDE0IEBACiAgICAgICAgIF9jbGFzcyBpcyB0aGUgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIG5ldyBtZXNzYWdlIG9iamVjdHMgd2hlbiB0aGV5CiAgICAgICAgIG11c3QgYmUgY3JlYXRlZC4gIFRoaXMgY2xhc3MgbXVzdCBoYXZlIGEgY29uc3RydWN0b3IgdGhhdCBjYW4gdGFrZQogICAgICAgICB6ZXJvIGFyZ3VtZW50cy4gIERlZmF1bHQgaXMgTWVzc2FnZS5NZXNzYWdlLgorCisgICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKKyAgICAgICAgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCiAgICAgICAgICIiIgotICAgICAgICBpZiBsZW4oYXJncykgPj0gMToKLSAgICAgICAgICAgIGlmICdfY2xhc3MnIGluIGt3czoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmcgJ19jbGFzcyciKQotICAgICAgICAgICAga3dzWydfY2xhc3MnXSA9IGFyZ3NbMF0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICBpZiAnc3RyaWN0JyBpbiBrd3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJNdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJnICdzdHJpY3QnIikKLSAgICAgICAgICAgIGt3c1snc3RyaWN0J10gPSBhcmdzWzFdCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1RvbyBtYW55IGFyZ3VtZW50cycpCi0gICAgICAgIGlmICdfY2xhc3MnIGluIGt3czoKLSAgICAgICAgICAgIHNlbGYuX2NsYXNzID0ga3dzWydfY2xhc3MnXQotICAgICAgICAgICAgZGVsIGt3c1snX2NsYXNzJ10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2NsYXNzID0gTWVzc2FnZQotICAgICAgICBpZiAnc3RyaWN0JyBpbiBrd3M6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCInc3RyaWN0JyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIChhbmQgaWdub3JlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWwga3dzWydzdHJpY3QnXQotICAgICAgICBpZiBrd3M6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1VuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudHMnKQorICAgICAgICBzZWxmLl9jbGFzcyA9IF9jbGFzcworICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGZwLCBoZWFkZXJzb25seT1GYWxzZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIG1lc3NhZ2Ugc3RydWN0dXJlIGZyb20gdGhlIGRhdGEgaW4gYSBmaWxlLgpAQCAtNjEsNyArNDgsNyBAQAogICAgICAgICBwYXJzaW5nIGFmdGVyIHJlYWRpbmcgdGhlIGhlYWRlcnMgb3Igbm90LiAgVGhlIGRlZmF1bHQgaXMgRmFsc2UsCiAgICAgICAgIG1lYW5pbmcgaXQgcGFyc2VzIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCiAgICAgICAgICIiIgotICAgICAgICBmZWVkcGFyc2VyID0gRmVlZFBhcnNlcihzZWxmLl9jbGFzcykKKyAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoc2VsZi5fY2xhc3MsIHBvbGljeT1zZWxmLnBvbGljeSkKICAgICAgICAgaWYgaGVhZGVyc29ubHk6CiAgICAgICAgICAgICBmZWVkcGFyc2VyLl9zZXRfaGVhZGVyc29ubHkoKQogICAgICAgICB3aGlsZSBUcnVlOgpAQCAtMTM0LDMgKzEyMSwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHRleHQuZGVjb2RlKCdBU0NJSScsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VyLnBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5KQorCisKK2NsYXNzIEJ5dGVzSGVhZGVyUGFyc2VyKEJ5dGVzUGFyc2VyKToKKyAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PVRydWUpOgorICAgICAgICByZXR1cm4gQnl0ZXNQYXJzZXIucGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PVRydWUpCisKKyAgICBkZWYgcGFyc2VieXRlcyhzZWxmLCB0ZXh0LCBoZWFkZXJzb25seT1UcnVlKToKKyAgICAgICAgcmV0dXJuIEJ5dGVzUGFyc2VyLnBhcnNlYnl0ZXMoc2VsZiwgdGV4dCwgaGVhZGVyc29ubHk9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wb2xpY3kucHkgYi9MaWIvZW1haWwvcG9saWN5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2FkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC0wLDAgKzEsMTg4IEBACisiIiJUaGlzIHdpbGwgYmUgdGhlIGhvbWUgZm9yIHRoZSBwb2xpY3kgdGhhdCBob29rcyBpbiB0aGUgbmV3Citjb2RlIHRoYXQgYWRkcyBhbGwgdGhlIGVtYWlsNiBmZWF0dXJlcy4KKyIiIgorCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBQb2xpY3ksIENvbXBhdDMyLCBjb21wYXQzMiwgX2V4dGVuZF9kb2NzdHJpbmdzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CisKK19fYWxsX18gPSBbCisgICAgJ0NvbXBhdDMyJywKKyAgICAnY29tcGF0MzInLAorICAgICdQb2xpY3knLAorICAgICdFbWFpbFBvbGljeScsCisgICAgJ2RlZmF1bHQnLAorICAgICdzdHJpY3QnLAorICAgICdTTVRQJywKKyAgICAnSFRUUCcsCisgICAgXQorCitAX2V4dGVuZF9kb2NzdHJpbmdzCitjbGFzcyBFbWFpbFBvbGljeShQb2xpY3kpOgorCisgICAgIiIiKworICAgIFBST1ZJU0lPTkFMCisKKyAgICBUaGUgQVBJIGV4dGVuc2lvbnMgZW5hYmxlZCBieSB0aGlzIHRoaXMgcG9saWN5IGFyZSBjdXJyZW50bHkgcHJvdmlzaW9uYWwuCisgICAgUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisKKyAgICBUaGlzIHBvbGljeSBhZGRzIG5ldyBoZWFkZXIgcGFyc2luZyBhbmQgZm9sZGluZyBhbGdvcml0aG1zLiAgSW5zdGVhZCBvZgorICAgIHNpbXBsZSBzdHJpbmdzLCBoZWFkZXJzIGFyZSBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBhdHRyaWJ1dGVzCisgICAgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC4gIFRoZSBmb2xkaW5nIGFsZ29yaXRobSBmdWxseQorICAgIGltcGxlbWVudHMgUkZDcyAyMDQ3IGFuZCA1MzIyLgorCisgICAgSW4gYWRkaXRpb24gdG8gdGhlIHNldHRhYmxlIGF0dHJpYnV0ZXMgbGlzdGVkIGFib3ZlIHRoYXQgYXBwbHkgdG8KKyAgICBhbGwgUG9saWNpZXMsIHRoaXMgcG9saWN5IGFkZHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CisKKyAgICByZWZvbGRfc291cmNlICAgICAgIC0tIGlmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIE1lc3NhZ2Ugb2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lIGZyb20gdGhlIHBhcnNpbmcgb2Ygc29tZSBzb3VyY2UsIHRoaXMgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBnZW5lcmF0b3Igc2hvdWxkIHJlZm9sZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB2YWx1ZSB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgIC0tIGFsbCBzb3VyY2UgdmFsdWVzIHVzZSBvcmlnaW5hbCBmb2xkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICAtLSBzb3VyY2UgdmFsdWVzIHRoYXQgaGF2ZSBhbnkgbGluZSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nZXIgdGhhbiBtYXhfbGluZV9sZW5ndGggd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb2xkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCAgLS0gYWxsIHZhbHVlcyBhcmUgcmVmb2xkZWQuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzICdsb25nJy4KKworICAgIGhlYWRlcl9mYWN0b3J5ICAgICAgLS0gYSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMsICduYW1lJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZScsIHdoZXJlICduYW1lJyBpcyBhIGhlYWRlciBmaWVsZCBuYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJyBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQgdmFsdWUsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyBhIHN0cmluZy1saWtlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLiAgQSBkZWZhdWx0IGhlYWRlcl9mYWN0b3J5IGlzIHByb3ZpZGVkIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIFJGQzUzMjIgaGVhZGVyIGZpZWxkIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKEN1cnJlbnRseSBhZGRyZXNzIGZpZWxkcyBhbmQgZGF0ZSBmaWVsZHMgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbCB0cmVhdG1lbnQsIHdoaWxlIGFsbCBvdGhlciBmaWVsZHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVhdGVkIGFzIHVuc3RydWN0dXJlZC4gIFRoaXMgbGlzdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgYmVmb3JlIHRoZSBleHRlbnNpb24gaXMgbWFya2VkIHN0YWJsZS4pCisgICAgIiIiCisKKyAgICByZWZvbGRfc291cmNlID0gJ2xvbmcnCisgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CisgICAgICAgICMgRW5zdXJlIHRoYXQgZWFjaCBuZXcgaW5zdGFuY2UgZ2V0cyBhIHVuaXF1ZSBoZWFkZXIgZmFjdG9yeQorICAgICAgICAjIChhcyBvcHBvc2VkIHRvIGNsb25lcywgd2hpY2ggc2hhcmUgdGhlIGZhY3RvcnkpLgorICAgICAgICBpZiAnaGVhZGVyX2ZhY3RvcnknIG5vdCBpbiBrdzoKKyAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCAnaGVhZGVyX2ZhY3RvcnknLCBIZWFkZXJSZWdpc3RyeSgpKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3cpCisKKyAgICBkZWYgaGVhZGVyX21heF9jb3VudChzZWxmLCBuYW1lKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgY2xhc3MgcmV0dXJucyB0aGUgbWF4X2NvdW50IGF0dHJpYnV0ZSBmcm9tCisgICAgICAgIHRoZSBzcGVjaWFsaXplZCBoZWFkZXIgY2xhc3MgdGhhdCB3b3VsZCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIGhlYWRlcgorICAgICAgICBvZiB0eXBlICduYW1lJy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5W25hbWVdLm1heF9jb3VudAorCisgICAgIyBUaGUgbG9naWMgb2YgdGhlIG5leHQgdGhyZWUgbWV0aG9kcyBpcyBjaG9zZW4gc3VjaCB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvCisgICAgIyBzd2l0Y2ggYSBNZXNzYWdlIG9iamVjdCBiZXR3ZWVuIGEgQ29tcGF0MzIgcG9saWN5IGFuZCBhIHBvbGljeSBkZXJpdmVkCisgICAgIyBmcm9tIHRoaXMgY2xhc3MgYW5kIGhhdmUgdGhlIHJlc3VsdHMgc3RheSBjb25zaXN0ZW50LiAgVGhpcyBhbGxvd3MgYQorICAgICMgTWVzc2FnZSBvYmplY3QgY29uc3RydWN0ZWQgd2l0aCB0aGlzIHBvbGljeSB0byBiZSBwYXNzZWQgdG8gYSBsaWJyYXJ5CisgICAgIyB0aGF0IG9ubHkgaGFuZGxlcyBDb21wYXQzMiBvYmplY3RzLCBvciB0byByZWNlaXZlIHN1Y2ggYW4gb2JqZWN0IGFuZAorICAgICMgY29udmVydCBpdCB0byB1c2UgdGhlIG5ld2VyIHN0eWxlIGJ5IGp1c3QgY2hhbmdpbmcgaXRzIHBvbGljeS4gIEl0IGlzCisgICAgIyBhbHNvIGNob3NlbiBiZWNhdXNlIGl0IHBvc3Rwb25lcyB0aGUgcmVsYXRpdmVseSBleHBlbnNpdmUgZnVsbCByZmM1MzIyCisgICAgIyBwYXJzZSB1bnRpbCBhcyBsYXRlIGFzIHBvc3NpYmxlIHdoZW4gcGFyc2luZyBmcm9tIHNvdXJjZSwgc2luY2UgaW4gbWFueQorICAgICMgYXBwbGljYXRpb25zIG9ubHkgYSBmZXcgaGVhZGVycyB3aWxsIGFjdHVhbGx5IGJlIGluc3BlY3RlZC4KKworICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJzonIGFuZCByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZiB0aGUKKyAgICAgICAgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLCBhbmQKKyAgICAgICAgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4gIChUaGlzCisgICAgICAgIGlzIHRoZSBzYW1lIGFzIENvbXBhdDMyKS4KKworICAgICAgICAiIiIKKyAgICAgICAgbmFtZSwgdmFsdWUgPSBzb3VyY2VsaW5lc1swXS5zcGxpdCgnOicsIDEpCisgICAgICAgIHZhbHVlID0gdmFsdWUubHN0cmlwKCcgXHQnKSArICcnLmpvaW4oc291cmNlbGluZXNbMTpdKQorICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlLnJzdHJpcCgnXHJcbicpKQorCisgICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiAgSWYgdGhlIGlucHV0IHZhbHVlIGhhcyBhICduYW1lJworICAgICAgICBhdHRyaWJ1dGUgYW5kIGl0IG1hdGNoZXMgdGhlIG5hbWUgaWdub3JpbmcgY2FzZSwgdGhlIHZhbHVlIGlzIHJldHVybmVkCisgICAgICAgIHVuY2hhbmdlZC4gIE90aGVyd2lzZSB0aGUgbmFtZSBhbmQgdmFsdWUgYXJlIHBhc3NlZCB0byBoZWFkZXJfZmFjdG9yeQorICAgICAgICBtZXRob2QsIGFuZCB0aGUgcmVzdWx0aW5nIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkIGFzIHRoZQorICAgICAgICB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBpbnB1dCB2YWx1ZSBjb250YWlucworICAgICAgICBDUiBvciBMRiBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpIGFuZCB2YWx1ZS5uYW1lLmxvd2VyKCkgPT0gbmFtZS5sb3dlcigpOgorICAgICAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKSBhbmQgbGVuKHZhbHVlLnNwbGl0bGluZXMoKSk+MToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlYWRlciB2YWx1ZXMgbWF5IG5vdCBjb250YWluIGxpbmVmZWVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGNhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXJzIikKKyAgICAgICAgcmV0dXJuIChuYW1lLCBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKSkKKworICAgIGRlZiBoZWFkZXJfZmV0Y2hfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIElmIHRoZSB2YWx1ZSBoYXMgYSAnbmFtZScgYXR0cmlidXRlLCBpdCBpcyByZXR1cm5lZCB0byB1bm1vZGlmaWVkLgorICAgICAgICBPdGhlcndpc2UgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSB3aXRoIGFueSBsaW5lc2VwIGNoYXJhY3RlcnMgcmVtb3ZlZAorICAgICAgICBhcmUgcGFzc2VkIHRvIHRoZSBoZWFkZXJfZmFjdG9yeSBtZXRob2QsIGFuZCB0aGUgcmVzdWx0aW5nIGN1c3RvbQorICAgICAgICBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiAgQW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgZ2V0IHR1cm5lZAorICAgICAgICBpbnRvIHRoZSB1bmljb2RlIHVua25vd24tY2hhcmFjdGVyIGdseXBoLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsICcnLmpvaW4odmFsdWUuc3BsaXRsaW5lcygpKSkKKworICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSByZWZvbGRfc291cmNlIHBvbGljeSBzZXR0aW5nLiAgQQorICAgICAgICB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIGEgJ3NvdXJjZSB2YWx1ZScgaWYgYW5kIG9ubHkgaWYgaXQgZG9lcyBub3QKKyAgICAgICAgaGF2ZSBhICduYW1lJyBhdHRyaWJ1dGUgKGhhdmluZyBhICduYW1lJyBhdHRyaWJ1dGUgbWVhbnMgaXQgaXMgYSBoZWFkZXIKKyAgICAgICAgb2JqZWN0IG9mIHNvbWUgc29ydCkuICBJZiBhIHNvdXJjZSB2YWx1ZSBuZWVkcyB0byBiZSByZWZvbGRlZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdGhlIHBvbGljeSwgaXQgaXMgY29udmVydGVkIGludG8gYSBjdXN0b20gaGVhZGVyIG9iamVjdCBieSBwYXNzaW5nCisgICAgICAgIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgd2l0aCBhbnkgbGluZXNlcCBjaGFyYWN0ZXJzIHJlbW92ZWQgdG8gdGhlCisgICAgICAgIGhlYWRlcl9mYWN0b3J5IG1ldGhvZC4gIEZvbGRpbmcgb2YgYSBjdXN0b20gaGVhZGVyIG9iamVjdCBpcyBkb25lIGJ5CisgICAgICAgIGNhbGxpbmcgaXRzIGZvbGQgbWV0aG9kIHdpdGggdGhlIGN1cnJlbnQgcG9saWN5LgorCisgICAgICAgIFNvdXJjZSB2YWx1ZXMgYXJlIHNwbGl0IGludG8gbGluZXMgdXNpbmcgc3BsaXRsaW5lcy4gIElmIHRoZSB2YWx1ZSBpcworICAgICAgICBub3QgdG8gYmUgcmVmb2xkZWQsIHRoZSBsaW5lcyBhcmUgcmVqb2luZWQgdXNpbmcgdGhlIGxpbmVzZXAgZnJvbSB0aGUKKyAgICAgICAgcG9saWN5IGFuZCByZXR1cm5lZC4gIFRoZSBleGNlcHRpb24gaXMgbGluZXMgY29udGFpbmluZyBub24tYXNjaWkKKyAgICAgICAgYmluYXJ5IGRhdGEuICBJbiB0aGF0IGNhc2UgdGhlIHZhbHVlIGlzIHJlZm9sZGVkIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIHJlZm9sZF9zb3VyY2Ugc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YSB0byBiZSBDVEUgZW5jb2RlZAorICAgICAgICB1c2luZyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PVRydWUpCisKKyAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBzYW1lIGFzIGZvbGQgaWYgY3RlX3R5cGUgaXMgN2JpdCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIGlzCisgICAgICAgIGJ5dGVzLgorCisgICAgICAgIElmIGN0ZV90eXBlIGlzIDhiaXQsIG5vbi1BU0NJSSBiaW5hcnkgZGF0YSBpcyBjb252ZXJ0ZWQgYmFjayBpbnRvCisgICAgICAgIGJ5dGVzLiAgSGVhZGVycyB3aXRoIGJpbmFyeSBkYXRhIGFyZSBub3QgcmVmb2xkZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIHJlZm9sZF9oZWFkZXIgc2V0dGluZywgc2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgd2hldGhlciB0aGUgYmluYXJ5CisgICAgICAgIGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgZm9sZGVkID0gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1zZWxmLmN0ZV90eXBlPT0nN2JpdCcpCisgICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIF9mb2xkKHNlbGYsIG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PUZhbHNlKToKKyAgICAgICAgaWYgaGFzYXR0cih2YWx1ZSwgJ25hbWUnKToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mb2xkKHBvbGljeT1zZWxmKQorICAgICAgICBtYXhsZW4gPSBzZWxmLm1heF9saW5lX2xlbmd0aCBpZiBzZWxmLm1heF9saW5lX2xlbmd0aCBlbHNlIGZsb2F0KCdpbmYnKQorICAgICAgICBsaW5lcyA9IHZhbHVlLnNwbGl0bGluZXMoKQorICAgICAgICByZWZvbGQgPSAoc2VsZi5yZWZvbGRfc291cmNlID09ICdhbGwnIG9yCisgICAgICAgICAgICAgICAgICBzZWxmLnJlZm9sZF9zb3VyY2UgPT0gJ2xvbmcnIGFuZAorICAgICAgICAgICAgICAgICAgICAobGVuKGxpbmVzWzBdKStsZW4obmFtZSkrMiA+IG1heGxlbiBvcgorICAgICAgICAgICAgICAgICAgICAgYW55KGxlbih4KSA+IG1heGxlbiBmb3IgeCBpbiBsaW5lc1sxOl0pKSkKKyAgICAgICAgaWYgcmVmb2xkIG9yIHJlZm9sZF9iaW5hcnkgYW5kIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCAnJy5qb2luKGxpbmVzKSkuZm9sZChwb2xpY3k9c2VsZikKKyAgICAgICAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc2VsZi5saW5lc2VwLmpvaW4obGluZXMpICsgc2VsZi5saW5lc2VwCisKKworZGVmYXVsdCA9IEVtYWlsUG9saWN5KCkKKyMgTWFrZSB0aGUgZGVmYXVsdCBwb2xpY3kgdXNlIHRoZSBjbGFzcyBkZWZhdWx0IGhlYWRlcl9mYWN0b3J5CitkZWwgZGVmYXVsdC5oZWFkZXJfZmFjdG9yeQorc3RyaWN0ID0gZGVmYXVsdC5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKK1NNVFAgPSBkZWZhdWx0LmNsb25lKGxpbmVzZXA9J1xyXG4nKQorSFRUUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicsIG1heF9saW5lX2xlbmd0aD1Ob25lKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3V0aWxzLnB5IGIvTGliL2VtYWlsL3V0aWxzLnB5CmluZGV4IGFjNGRhMzcuLjkzYTYyNWMgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC91dGlscy5weQorKysgYi9MaWIvZW1haWwvdXRpbHMucHkKQEAgLTExLDEyICsxMSwxNCBAQAogICAgICdlbmNvZGVfcmZjMjIzMScsCiAgICAgJ2Zvcm1hdGFkZHInLAogICAgICdmb3JtYXRkYXRlJywKKyAgICAnZm9ybWF0X2RhdGV0aW1lJywKICAgICAnZ2V0YWRkcmVzc2VzJywKICAgICAnbWFrZV9tc2dpZCcsCiAgICAgJ21rdGltZV90eicsCiAgICAgJ3BhcnNlYWRkcicsCiAgICAgJ3BhcnNlZGF0ZScsCiAgICAgJ3BhcnNlZGF0ZV90eicsCisgICAgJ3BhcnNlZGF0ZV90b19kYXRldGltZScsCiAgICAgJ3VucXVvdGUnLAogICAgIF0KIApAQCAtMjYsNiArMjgsNyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNvY2tldAoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCkBAIC0zNCwxNCArMzcsMTMgQEAKIGZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgQWRkcmVzc0xpc3QgYXMgX0FkZHJlc3NMaXN0CiBmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IG1rdGltZV90egogCi0jIFdlIG5lZWQgd29ybWFyb3VuZHMgZm9yIGJ1Z3MgaW4gdGhlc2UgbWV0aG9kcyBpbiBvbGRlciBQeXRob25zIChzZWUgYmVsb3cpCi1mcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSBhcyBfcGFyc2VkYXRlCi1mcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZV90eiBhcyBfcGFyc2VkYXRlX3R6Citmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSwgcGFyc2VkYXRlX3R6LCBfcGFyc2VkYXRlX3R6CiAKIGZyb20gcXVvcHJpIGltcG9ydCBkZWNvZGVzdHJpbmcgYXMgX3FkZWNvZGUKIAogIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwogZnJvbSBlbWFpbC5lbmNvZGVycyBpbXBvcnQgX2JlbmNvZGUsIF9xZW5jb2RlCitmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIAogQ09NTUFTUEFDRSA9ICcsICcKIEVNUFRZU1RSSU5HID0gJycKQEAgLTUwLDI3ICs1Miw1MyBAQAogVElDSyA9ICInIgogCiBzcGVjaWFsc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCk8PkAsOjsiLl0nKQotZXNjYXBlc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCkiXScpCitlc2NhcGVzcmUgPSByZS5jb21waWxlKHInW1xcIl0nKQogCisjIEhvdyB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBwcm9jZXNzaW5nIHN0cmluZ3MgdGhhdCBjb21lIGZyb20gYSBieXRlCisjIHNvdXJjZSB3aXRoIHVuZGVjb2RhYmxlIGNoYXJhY3RlcnMuCitfaGFzX3N1cnJvZ2F0ZXMgPSByZS5jb21waWxlKAorICAgICcoW15cdWQ4MDAtXHVkYmZmXXxcQSlbXHVkYzAwLVx1ZGZmZl0oW15cdWRjMDAtXHVkZmZmXXxcWiknKS5zZWFyY2gKKworIyBIb3cgdG8gZGVhbCB3aXRoIGEgc3RyaW5nIGNvbnRhaW5pbmcgYnl0ZXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gdGhlCisjIGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlICdub3JtYWwnIGludGVyZmFjZS4KK2RlZiBfc2FuaXRpemUoc3RyaW5nKToKKyAgICAjIFR1cm4gYW55IGVzY2FwZWQgYnl0ZXMgaW50byB1bmljb2RlICd1bmtub3duJyBjaGFyLgorICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICByZXR1cm4gb3JpZ2luYWxfYnl0ZXMuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKIAogCiAjIEhlbHBlcnMKIAotZGVmIGZvcm1hdGFkZHIocGFpcik6CitkZWYgZm9ybWF0YWRkcihwYWlyLCBjaGFyc2V0PSd1dGYtOCcpOgogICAgICIiIlRoZSBpbnZlcnNlIG9mIHBhcnNlYWRkcigpLCB0aGlzIHRha2VzIGEgMi10dXBsZSBvZiB0aGUgZm9ybQogICAgIChyZWFsbmFtZSwgZW1haWxfYWRkcmVzcykgYW5kIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBzdWl0YWJsZQogICAgIGZvciBhbiBSRkMgMjgyMiBGcm9tLCBUbyBvciBDYyBoZWFkZXIuCiAKICAgICBJZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBwYWlyIGlzIGZhbHNlLCB0aGVuIHRoZSBzZWNvbmQgZWxlbWVudCBpcwogICAgIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgICBPcHRpb25hbCBjaGFyc2V0IGlmIGdpdmVuIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgaXMgdXNlZCB0byBlbmNvZGUKKyAgICByZWFsbmFtZSBpbiBjYXNlIHJlYWxuYW1lIGlzIG5vdCBBU0NJSSBzYWZlLiAgQ2FuIGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvcgorICAgIGEgQ2hhcnNldC1saWtlIG9iamVjdCB3aGljaCBoYXMgYSBoZWFkZXJfZW5jb2RlIG1ldGhvZC4gIERlZmF1bHQgaXMKKyAgICAndXRmLTgnLgogICAgICIiIgogICAgIG5hbWUsIGFkZHJlc3MgPSBwYWlyCisgICAgIyBUaGUgYWRkcmVzcyBNVVNUIChwZXIgUkZDKSBiZSBhc2NpaSwgc28gcmFpc2UgYW4gVW5pY29kZUVycm9yIGlmIGl0IGlzbid0LgorICAgIGFkZHJlc3MuZW5jb2RlKCdhc2NpaScpCiAgICAgaWYgbmFtZToKLSAgICAgICAgcXVvdGVzID0gJycKLSAgICAgICAgaWYgc3BlY2lhbHNyZS5zZWFyY2gobmFtZSk6Ci0gICAgICAgICAgICBxdW90ZXMgPSAnIicKLSAgICAgICAgbmFtZSA9IGVzY2FwZXNyZS5zdWIocidcXFxnPDA+JywgbmFtZSkKLSAgICAgICAgcmV0dXJuICclcyVzJXMgPCVzPicgJSAocXVvdGVzLCBuYW1lLCBxdW90ZXMsIGFkZHJlc3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoYXJzZXQsIHN0cik6CisgICAgICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXQoY2hhcnNldCkKKyAgICAgICAgICAgIGVuY29kZWRfbmFtZSA9IGNoYXJzZXQuaGVhZGVyX2VuY29kZShuYW1lKQorICAgICAgICAgICAgcmV0dXJuICIlcyA8JXM+IiAlIChlbmNvZGVkX25hbWUsIGFkZHJlc3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBxdW90ZXMgPSAnJworICAgICAgICAgICAgaWYgc3BlY2lhbHNyZS5zZWFyY2gobmFtZSk6CisgICAgICAgICAgICAgICAgcXVvdGVzID0gJyInCisgICAgICAgICAgICBuYW1lID0gZXNjYXBlc3JlLnN1YihyJ1xcXGc8MD4nLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICclcyVzJXMgPCVzPicgJSAocXVvdGVzLCBuYW1lLCBxdW90ZXMsIGFkZHJlc3MpCiAgICAgcmV0dXJuIGFkZHJlc3MKIAogCkBAIC05NCw2ICsxMjIsMTQgQEAKICAgJycnLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKIAogCitkZWYgX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUodGltZXR1cGxlLCB6b25lKToKKyAgICByZXR1cm4gJyVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgJXMnICUgKAorICAgICAgICBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddW3RpbWV0dXBsZVs2XV0sCisgICAgICAgIHRpbWV0dXBsZVsyXSwKKyAgICAgICAgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCisgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVt0aW1ldHVwbGVbMV0gLSAxXSwKKyAgICAgICAgdGltZXR1cGxlWzBdLCB0aW1ldHVwbGVbM10sIHRpbWV0dXBsZVs0XSwgdGltZXR1cGxlWzVdLAorICAgICAgICB6b25lKQogCiBkZWYgZm9ybWF0ZGF0ZSh0aW1ldmFsPU5vbmUsIGxvY2FsdGltZT1GYWxzZSwgdXNlZ210PUZhbHNlKToKICAgICAiIiJSZXR1cm5zIGEgZGF0ZSBzdHJpbmcgYXMgc3BlY2lmaWVkIGJ5IFJGQyAyODIyLCBlLmcuOgpAQCAtMTM4LDE0ICsxNzQsMjUgQEAKICAgICAgICAgICAgIHpvbmUgPSAnR01UJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgem9uZSA9ICctMDAwMCcKLSAgICByZXR1cm4gJyVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgJXMnICUgKAotICAgICAgICBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddW25vd1s2XV0sCi0gICAgICAgIG5vd1syXSwKLSAgICAgICAgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCi0gICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVtub3dbMV0gLSAxXSwKLSAgICAgICAgbm93WzBdLCBub3dbM10sIG5vd1s0XSwgbm93WzVdLAotICAgICAgICB6b25lKQorICAgIHJldHVybiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZShub3csIHpvbmUpCiAKK2RlZiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSk6CisgICAgIiIiVHVybiBhIGRhdGV0aW1lIGludG8gYSBkYXRlIHN0cmluZyBhcyBzcGVjaWZpZWQgaW4gUkZDIDI4MjIuCisKKyAgICBJZiB1c2VnbXQgaXMgVHJ1ZSwgZHQgbXVzdCBiZSBhbiBhd2FyZSBkYXRldGltZSB3aXRoIGFuIG9mZnNldCBvZiB6ZXJvLiAgSW4KKyAgICB0aGlzIGNhc2UgJ0dNVCcgd2lsbCBiZSByZW5kZXJlZCBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgKzAwMDAgcmVxdWlyZWQgYnkKKyAgICBSRkMyODIyLiAgVGhpcyBpcyB0byBzdXBwb3J0IEhUVFAgaGVhZGVycyBpbnZvbHZpbmcgZGF0ZSBzdGFtcHMuCisgICAgIiIiCisgICAgbm93ID0gZHQudGltZXR1cGxlKCkKKyAgICBpZiB1c2VnbXQ6CisgICAgICAgIGlmIGR0LnR6aW5mbyBpcyBOb25lIG9yIGR0LnR6aW5mbyAhPSBkYXRldGltZS50aW1lem9uZS51dGM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1c2VnbXQgb3B0aW9uIHJlcXVpcmVzIGEgVVRDIGRhdGV0aW1lIikKKyAgICAgICAgem9uZSA9ICdHTVQnCisgICAgZWxpZiBkdC50emluZm8gaXMgTm9uZToKKyAgICAgICAgem9uZSA9ICctMDAwMCcKKyAgICBlbHNlOgorICAgICAgICB6b25lID0gZHQuc3RyZnRpbWUoIiV6IikKKyAgICByZXR1cm4gX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUobm93LCB6b25lKQogCiAKIGRlZiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKToKQEAgLTE3MiwyMCArMjE5LDEyIEBACiAgICAgcmV0dXJuIG1zZ2lkCiAKIAotCi0jIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIHN0YW5kYWxvbmUgbWltZWxpYiB2ZXJzaW9uIG9ubHkgYmVjYXVzZSB0aGV5J3ZlCi0jIHN1YnNlcXVlbnRseSBiZWVuIGZpeGVkIGluIHRoZSBsYXRlc3QgUHl0aG9uIHZlcnNpb25zLiAgV2UgdXNlIHRoaXMgdG8gd29ybQotIyBhcm91bmQgYnJva2VuIG9sZGVyIFB5dGhvbnMuCi1kZWYgcGFyc2VkYXRlKGRhdGEpOgotICAgIGlmIG5vdCBkYXRhOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBfcGFyc2VkYXRlKGRhdGEpCi0KLQotZGVmIHBhcnNlZGF0ZV90eihkYXRhKToKLSAgICBpZiBub3QgZGF0YToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gX3BhcnNlZGF0ZV90eihkYXRhKQorZGVmIHBhcnNlZGF0ZV90b19kYXRldGltZShkYXRhKToKKyAgICAqZHR1cGxlLCB0eiA9IF9wYXJzZWRhdGVfdHooZGF0YSkKKyAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKmR0dXBsZVs6Nl0pCisgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCpkdHVwbGVbOjZdLAorICAgICAgICAgICAgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPXR6KSkpCiAKIAogZGVmIHBhcnNlYWRkcihhZGRyKToKQEAgLTMwNCwzICszNDMsNDkgQEAKICAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgICMgY2hhcnNldCBpcyBub3QgYSBrbm93biBjb2RlYy4KICAgICAgICAgcmV0dXJuIHVucXVvdGUodGV4dCkKKworCisjCisjIGRhdGV0aW1lIGRvZXNuJ3QgcHJvdmlkZSBhIGxvY2FsdGltZSBmdW5jdGlvbiB5ZXQsIHNvIHByb3ZpZGUgb25lLiAgQ29kZQorIyBhZGFwdGVkIGZyb20gdGhlIHBhdGNoIGluIGlzc3VlIDk1MjcuICBUaGlzIG1heSBub3QgYmUgcGVyZmVjdCwgYnV0IGl0IGlzCisjIGJldHRlciB0aGFuIG5vdCBoYXZpbmcgaXQuCisjCisKK2RlZiBsb2NhbHRpbWUoZHQ9Tm9uZSwgaXNkc3Q9LTEpOgorICAgICIiIlJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4KKworICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqCisgICAgYXJndW1lbnQgc2hvdWxkIGJlIGEgZGF0ZXRpbWUgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlCisgICAgbG9jYWwgdGltZSB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMKKyAgICBuYWl2ZSAodGhhdCBpcywgZHQudHppbmZvIGlzIE5vbmUpLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuCisgICAgSW4gdGhpcyBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGxvY2FsdGltZSB0bworICAgIHByZXN1bWUgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkKKyAgICBpcyBvciBpcyBub3QgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBCisgICAgbmVnYXRpdmUgdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIHRoZSBsb2NhbHRpbWUoKSBmdW5jdGlvbiB0byBhdHRlbXB0CisgICAgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAiIiIKKyAgICBpZiBkdCBpcyBOb25lOgorICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykuYXN0aW1lem9uZSgpCisgICAgaWYgZHQudHppbmZvIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZHQuYXN0aW1lem9uZSgpCisgICAgIyBXZSBoYXZlIGEgbmFpdmUgZGF0ZXRpbWUuICBDb252ZXJ0IHRvIGEgKGxvY2FsdGltZSkgdGltZXR1cGxlIGFuZCBwYXNzIHRvCisgICAgIyBzeXN0ZW0gbWt0aW1lIHRvZ2V0aGVyIHdpdGggdGhlIGlzZHN0IGhpbnQuICBTeXN0ZW0gbWt0aW1lIHdpbGwgcmV0dXJuCisgICAgIyBzZWNvbmRzIHNpbmNlIGVwb2NoLgorICAgIHRtID0gZHQudGltZXR1cGxlKClbOi0xXSArIChpc2RzdCwpCisgICAgc2Vjb25kcyA9IHRpbWUubWt0aW1lKHRtKQorICAgIGxvY2FsdG0gPSB0aW1lLmxvY2FsdGltZShzZWNvbmRzKQorICAgIHRyeToKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1sb2NhbHRtLnRtX2dtdG9mZikKKyAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSwgbG9jYWx0bS50bV96b25lKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgIyBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZSBpbXBsaWVkIGJ5IHRtX2lzZHN0LgorICAgICAgICBkZWx0YSA9IGR0IC0gZGF0ZXRpbWUuZGF0ZXRpbWUoKnRpbWUuZ210aW1lKHNlY29uZHMpWzo2XSkKKyAgICAgICAgZHN0ID0gdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKKyAgICAgICAgZ210b2ZmID0gLSh0aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgdGltZS50aW1lem9uZSkKKyAgICAgICAgaWYgZGVsdGEgPT0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKKyAgICAgICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEsIHRpbWUudHpuYW1lW2RzdF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhKQorICAgIHJldHVybiBkdC5yZXBsYWNlKHR6aW5mbz10eikKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkgYi9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CmluZGV4IDRlZGQ3MDguLmJmZTJjMWUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKKysrIGIvTGliL2VuY29kaW5ncy9jcDAzNy5weQpAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAorICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDUwMC5weSBiL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKaW5kZXggNWY2MTUzNS4uYTk3NWJlNyAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9jcDUwMC5weQorKysgYi9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CkBAIC0zMDEsNiArMzAxLDcgQEAKICAgICAnXHhkOScgICAgICMgIDB4RkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAgJ1x4ZGEnICAgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgICdceDlmJyAgICAgIyAgMHhGRiAtPiBDT05UUk9MCisgICAgJ1x1ZmZmZScgICAjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24KICkKIAogIyMjIEVuY29kaW5nIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3ZWI4NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQpAQCAtMCwwICsxLDQwIEBACisiIiIKK0NvZGUgcGFnZSA2NTAwMTogV2luZG93cyBVVEYtOCAoQ1BfVVRGOCkuCisiIiIKKworaW1wb3J0IGNvZGVjcworaW1wb3J0IGZ1bmN0b29scworCitpZiBub3QgaGFzYXR0cihjb2RlY3MsICdjb2RlX3BhZ2VfZW5jb2RlJyk6CisgICAgcmFpc2UgTG9va3VwRXJyb3IoImNwNjUwMDEgZW5jb2RpbmcgaXMgb25seSBhdmFpbGFibGUgb24gV2luZG93cyIpCisKKyMjIyBDb2RlYyBBUElzCisKK2VuY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA2NTAwMSkKK2RlY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA2NTAwMSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCisKK2NsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgorICAgIF9idWZmZXJfZGVjb2RlID0gZGVjb2RlCisKK2NsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBlbmNvZGUgPSBlbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IGRlY29kZQorCisjIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKKworZGVmIGdldHJlZ2VudHJ5KCk6CisgICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCisgICAgICAgIG5hbWU9J2NwNjUwMDEnLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5IGIvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKaW5kZXggZGJhYWE3Mi4uMjMzNDIwOCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKKysrIGIvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEwNyArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwYTE6IDB4MDBjMCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGEyOiAweDAwYzIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGEzOiAweDAwYzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhNDogMHgwMGNhLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhNTogMHgwMGNiLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGE2OiAweDAwY2UsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGE3OiAweDAwY2YsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwYTg6IDB4MDBiNCwgIyAgICAgICBBQ1VURSBBQ0NFTlQKLSAgICAgICAgMHgwMGE5OiAweDAyY2IsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIEdSQVZFIEFDQ0VOVCAoTWFuZGFyaW4gQ2hpbmVzZSBmb3VydGggdG9uZSkKLSAgICAgICAgMHgwMGFhOiAweDAyYzYsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCi0gICAgICAgIDB4MDBhYjogMHgwMGE4LCAjICAgICAgIERJQUVSRVNJUwotICAgICAgICAweDAwYWM6IDB4MDJkYywgIyAgICAgICBTTUFMTCBUSUxERQotICAgICAgICAweDAwYWQ6IDB4MDBkOSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGFlOiAweDAwZGIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGFmOiAweDIwYTQsICMgICAgICAgTElSQSBTSUdOCi0gICAgICAgIDB4MDBiMDogMHgwMGFmLCAjICAgICAgIE1BQ1JPTgotICAgICAgICAweDAwYjE6IDB4MDBkZCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGIyOiAweDAwZmQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwYjM6IDB4MDBiMCwgIyAgICAgICBERUdSRUUgU0lHTgotICAgICAgICAweDAwYjQ6IDB4MDBjNywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjU6IDB4MDBlNywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI2OiAweDAwZDEsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBiNzogMHgwMGYxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKLSAgICAgICAgMHgwMGI4OiAweDAwYTEsICMgICAgICAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwotICAgICAgICAweDAwYjk6IDB4MDBiZiwgIyAgICAgICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCi0gICAgICAgIDB4MDBiYTogMHgwMGE0LCAjICAgICAgIENVUlJFTkNZIFNJR04KLSAgICAgICAgMHgwMGJiOiAweDAwYTMsICMgICAgICAgUE9VTkQgU0lHTgotICAgICAgICAweDAwYmM6IDB4MDBhNSwgIyAgICAgICBZRU4gU0lHTgotICAgICAgICAweDAwYmQ6IDB4MDBhNywgIyAgICAgICBTRUNUSU9OIFNJR04KLSAgICAgICAgMHgwMGJlOiAweDAxOTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCi0gICAgICAgIDB4MDBiZjogMHgwMGEyLCAjICAgICAgIENFTlQgU0lHTgotICAgICAgICAweDAwYzA6IDB4MDBlMiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGMxOiAweDAwZWEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjMjogMHgwMGY0LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzM6IDB4MDBmYiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGM0OiAweDAwZTEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzU6IDB4MDBlOSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNjogMHgwMGYzLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM3OiAweDAwZmEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzg6IDB4MDBlMCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjOTogMHgwMGU4LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGNhOiAweDAwZjIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQotICAgICAgICAweDAwY2I6IDB4MDBmOSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjYzogMHgwMGU0LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZDogMHgwMGViLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZTogMHgwMGY2LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZjogMHgwMGZjLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkMDogMHgwMGM1LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBkMTogMHgwMGVlLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZDI6IDB4MDBkOCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBkMzogMHgwMGM2LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEFFCi0gICAgICAgIDB4MDBkNDogMHgwMGU1LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZDU6IDB4MDBlZCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkNjogMHgwMGY4LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBkNzogMHgwMGU2LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBRQotICAgICAgICAweDAwZDg6IDB4MDBjNCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkOTogMHgwMGVjLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGRhOiAweDAwZDYsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGI6IDB4MDBkYywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkYzogMHgwMGM5LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZGQ6IDB4MDBlZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGU6IDB4MDBkZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQotICAgICAgICAweDAwZGY6IDB4MDBkNCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZTA6IDB4MDBjMSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGUxOiAweDAwYzMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlMjogMHgwMGUzLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKLSAgICAgICAgMHgwMGUzOiAweDAwZDAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBlNDogMHgwMGYwLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGU1OiAweDAwY2QsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNjogMHgwMGNjLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQotICAgICAgICAweDAwZTc6IDB4MDBkMywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU4OiAweDAwZDIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBlOTogMHgwMGQ1LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwZWE6IDB4MDBmNSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlYjogMHgwMTYwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWM6IDB4MDE2MSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlZDogMHgwMGRhLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZWU6IDB4MDE3OCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBlZjogMHgwMGZmLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBmMDogMHgwMGRlLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBmMTogMHgwMGZlLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQotICAgICAgICAweDAwZjI6IDB4MDBiNywgIyAgICAgICBNSURETEUgRE9UCi0gICAgICAgIDB4MDBmMzogMHgwMGI1LCAjICAgICAgIE1JQ1JPIFNJR04KLSAgICAgICAgMHgwMGY0OiAweDAwYjYsICMgICAgICAgUElMQ1JPVyBTSUdOCi0gICAgICAgIDB4MDBmNTogMHgwMGJlLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwotICAgICAgICAweDAwZjY6IDB4MjAxNCwgIyAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDBmNzogMHgwMGJjLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgotICAgICAgICAweDAwZjg6IDB4MDBiZCwgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKLSAgICAgICAgMHgwMGY5OiAweDAwYWEsICMgICAgICAgRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKLSAgICAgICAgMHgwMGZhOiAweDAwYmEsICMgICAgICAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCi0gICAgICAgIDB4MDBmYjogMHgwMGFiLCAjICAgICAgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBmYzogMHgyNWEwLCAjICAgICAgIEJMQUNLIFNRVUFSRQotICAgICAgICAweDAwZmQ6IDB4MDBiYiwgIyAgICAgICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGZlOiAweDAwYjEsICMgICAgICAgUExVUy1NSU5VUyBTSUdOCi0gICAgICAgIDB4MDBmZjogTm9uZSwKLX0pCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyMjIEVuY29kaW5nIE1hcAorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORworICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KKyAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCisgICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECisgICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgorICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQorICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCisgICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQorICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCisgICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCisgICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCisgICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKKyAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCisgICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKKyAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCisgICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKKyAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQorICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgorICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgorICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCisgICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgorICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKKyAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCisgICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQorICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAorICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRworICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgorICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQorICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAorICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUworICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgorICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQorICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQorICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQorICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KKyAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgorICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KKyAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgorICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KKyAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgorICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KKyAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgorICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KKyAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgorICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KKyAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgorICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KKyAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgorICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KKyAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgorICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KKyAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgorICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KKyAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgorICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x4YzAnICAgICAjICAweEExIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQorICAgICdceGMyJyAgICAgIyAgMHhBMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGM4JyAgICAgIyAgMHhBMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhjYScgICAgICMgIDB4QTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjYicgICAgICMgIDB4QTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGNlJyAgICAgIyAgMHhBNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YjQnICAgICAjICAweEE4IC0+IEFDVVRFIEFDQ0VOVAorICAgICdcdTAyY2InICAgIyAgMHhBOSAtPiBNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UIChNQU5EQVJJTiBDSElORVNFIEZPVVJUSCBUT05FKQorICAgICdcdTAyYzYnICAgIyAgMHhBQSAtPiBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXHhhOCcgICAgICMgIDB4QUIgLT4gRElBRVJFU0lTCisgICAgJ1x1MDJkYycgICAjICAweEFDIC0+IFNNQUxMIFRJTERFCisgICAgJ1x4ZDknICAgICAjICAweEFEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQorICAgICdceGRiJyAgICAgIyAgMHhBRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdcdTIwYTQnICAgIyAgMHhBRiAtPiBMSVJBIFNJR04KKyAgICAnXHhhZicgICAgICMgIDB4QjAgLT4gTUFDUk9OCisgICAgJ1x4ZGQnICAgICAjICAweEIxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZkJyAgICAgIyAgMHhCMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4YjAnICAgICAjICAweEIzIC0+IERFR1JFRSBTSUdOCisgICAgJ1x4YzcnICAgICAjICAweEI0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4ZTcnICAgICAjICAweEI1IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGQxJyAgICAgIyAgMHhCNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhmMScgICAgICMgIDB4QjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGExJyAgICAgIyAgMHhCOCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCisgICAgJ1x4YmYnICAgICAjICAweEI5IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKKyAgICAnXHhhNCcgICAgICMgIDB4QkEgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdceGEzJyAgICAgIyAgMHhCQiAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTUnICAgICAjICAweEJDIC0+IFlFTiBTSUdOCisgICAgJ1x4YTcnICAgICAjICAweEJEIC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTAxOTInICAgIyAgMHhCRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICAnXHhhMicgICAgICMgIDB4QkYgLT4gQ0VOVCBTSUdOCisgICAgJ1x4ZTInICAgICAjICAweEMwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGVhJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNCcgICAgICMgIDB4QzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZmInICAgICAjICAweEMzIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGUxJyAgICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4ZTknICAgICAjICAweEM1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhmMycgICAgICMgIDB4QzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGZhJyAgICAgIyAgMHhDNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZTAnICAgICAjICAweEM4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhlOCcgICAgICMgIDB4QzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGYyJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZjknICAgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhlNCcgICAgICMgIDB4Q0MgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmNicgICAgICMgIDB4Q0UgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmYycgICAgICMgIDB4Q0YgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjNScgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlZScgICAgICMgIDB4RDEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZDgnICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhjNicgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKKyAgICAnXHhlNScgICAgICMgIDB4RDQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZWQnICAgICAjICAweEQ1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhmOCcgICAgICMgIDB4RDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhlNicgICAgICMgIDB4RDcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCisgICAgJ1x4YzQnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYycgICAgICMgIDB4RDkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGQ2JyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGMnICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjOScgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZWYnICAgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGYnICAgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHRVJNQU4pCisgICAgJ1x4ZDQnICAgICAjICAweERGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzEnICAgICAjICAweEUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGMzJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhlMycgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGQwJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEggKElDRUxBTkRJQykKKyAgICAnXHhmMCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQorICAgICdceGNkJyAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhjYycgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4ZDMnICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQyJyAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhkNScgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZjUnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHUwMTYwJyAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MDE2MScgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHhkYScgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3OCcgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZScgICAgICMgIDB4RjAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKElDRUxBTkRJQykKKyAgICAnXHhmZScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCisgICAgJ1x4YjcnICAgICAjICAweEYyIC0+IE1JRERMRSBET1QKKyAgICAnXHhiNScgICAgICMgIDB4RjMgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgIyAgMHhGNCAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiZScgICAgICMgIDB4RjUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCisgICAgJ1x1MjAxNCcgICAjICAweEY2IC0+IEVNIERBU0gKKyAgICAnXHhiYycgICAgICMgIDB4RjcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCisgICAgJ1x4YmQnICAgICAjICAweEY4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgorICAgICdceGFhJyAgICAgIyAgMHhGOSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGJhJyAgICAgIyAgMHhGQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhhYicgICAgICMgIDB4RkIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyNWEwJyAgICMgIDB4RkMgLT4gQkxBQ0sgU1FVQVJFCisgICAgJ1x4YmInICAgICAjICAweEZEIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGIxJyAgICAgIyAgMHhGRSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHVmZmZlJworKQogCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaWRuYS5weSBiL0xpYi9lbmNvZGluZ3MvaWRuYS5weQppbmRleCA1ODNiZGYxLi5lYTQwNTg1IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2lkbmEucHkKKysrIGIvTGliL2VuY29kaW5ncy9pZG5hLnB5CkBAIC0xNTMsNiArMTUzLDIwIEBACiAgICAgICAgIGlmIG5vdCBpbnB1dDoKICAgICAgICAgICAgIHJldHVybiBiJycsIDAKIAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBpbnB1dC5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQVNDSUkgbmFtZTogZmFzdCBwYXRoCisgICAgICAgICAgICBsYWJlbHMgPSByZXN1bHQuc3BsaXQoYicuJykKKyAgICAgICAgICAgIGZvciBsYWJlbCBpbiBsYWJlbHNbOi0xXToKKyAgICAgICAgICAgICAgICBpZiBub3QgKDAgPCBsZW4obGFiZWwpIDwgNjQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIGVtcHR5IG9yIHRvbyBsb25nIikKKyAgICAgICAgICAgIGlmIGxlbihsYWJlbHNbLTFdKSA+PSA2NDoKKyAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIHRvbyBsb25nIikKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQsIGxlbihpbnB1dCkKKwogICAgICAgICByZXN1bHQgPSBieXRlYXJyYXkoKQogICAgICAgICBsYWJlbHMgPSBkb3RzLnNwbGl0KGlucHV0KQogICAgICAgICBpZiBsYWJlbHMgYW5kIG5vdCBsYWJlbHNbLTFdOgpAQCAtMTc5LDYgKzE5MywxNCBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpbnB1dCwgYnl0ZXMpOgogICAgICAgICAgICAgIyBYWFggb2J2aW91c2x5IHdyb25nLCBzZWUgIzMyMzIKICAgICAgICAgICAgIGlucHV0ID0gYnl0ZXMoaW5wdXQpCisKKyAgICAgICAgaWYgYWNlX3ByZWZpeCBub3QgaW4gaW5wdXQ6CisgICAgICAgICAgICAjIEZhc3QgcGF0aAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dC5kZWNvZGUoJ2FzY2lpJyksIGxlbihpbnB1dCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGxhYmVscyA9IGlucHV0LnNwbGl0KGIiLiIpCiAKICAgICAgICAgaWYgbGFiZWxzIGFuZCBsZW4obGFiZWxzWy0xXSkgPT0gMDoKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5IGIvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKaW5kZXggOGNmYzAxZi4uZDljYzUxNiAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKKysrIGIvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKQEAgLTMwMSw2ICszMDEsNyBAQAogICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQogICAgICdceGZmJyAgICAgIyAgMHhGRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5IGIvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5CmluZGV4IGUzMjJiZTIuLmRhOWQ0YjEgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weQorKysgYi9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkKQEAgLTEsNCArMSw0IEBACi0iIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGdlbmVyYXRlZCBmcm9tICdMQVRJTjIuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgorIiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBtYWNfbGF0aW4yIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9NQUMvTEFUSU4yLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KIAogV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCiAKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEzOCArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwODA6IDB4MDBjNCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4MTogMHgwMTAwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgyOiAweDAxMDEsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgzOiAweDAwYzksICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4NDogMHgwMTA0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMDg1OiAweDAwZDYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODY6IDB4MDBkYywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4NzogMHgwMGUxLCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDg4OiAweDAxMDUsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMDg5OiAweDAxMGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA4YTogMHgwMGU0LCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4YjogMHgwMTBkLCAjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDhjOiAweDAxMDYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ZDogMHgwMTA3LCAjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDhlOiAweDAwZTksICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwOGY6IDB4MDE3OSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkwOiAweDAxN2EsICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQotICAgICAgICAweDAwOTE6IDB4MDEwZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDkyOiAweDAwZWQsICMgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwOTM6IDB4MDEwZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5NDogMHgwMTEyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDk1OiAweDAxMTMsICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDk2OiAweDAxMTYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwOTc6IDB4MDBmMywgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5ODogMHgwMTE3LCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDA5OTogMHgwMGY0LCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwOWE6IDB4MDBmNiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwOWI6IDB4MDBmNSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDA5YzogMHgwMGZhLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDlkOiAweDAxMWEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5ZTogMHgwMTFiLCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDlmOiAweDAwZmMsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGEwOiAweDIwMjAsICMgREFHR0VSCi0gICAgICAgIDB4MDBhMTogMHgwMGIwLCAjIERFR1JFRSBTSUdOCi0gICAgICAgIDB4MDBhMjogMHgwMTE4LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGE0OiAweDAwYTcsICMgU0VDVElPTiBTSUdOCi0gICAgICAgIDB4MDBhNTogMHgyMDIyLCAjIEJVTExFVAotICAgICAgICAweDAwYTY6IDB4MDBiNiwgIyBQSUxDUk9XIFNJR04KLSAgICAgICAgMHgwMGE3OiAweDAwZGYsICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKLSAgICAgICAgMHgwMGE4OiAweDAwYWUsICMgUkVHSVNURVJFRCBTSUdOCi0gICAgICAgIDB4MDBhYTogMHgyMTIyLCAjIFRSQURFIE1BUksgU0lHTgotICAgICAgICAweDAwYWI6IDB4MDExOSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYWM6IDB4MDBhOCwgIyBESUFFUkVTSVMKLSAgICAgICAgMHgwMGFkOiAweDIyNjAsICMgTk9UIEVRVUFMIFRPCi0gICAgICAgIDB4MDBhZTogMHgwMTIzLCAjIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYWY6IDB4MDEyZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBiMDogMHgwMTJmLCAjIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBiMTogMHgwMTJhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGIyOiAweDIyNjQsICMgTEVTUy1USEFOIE9SIEVRVUFMIFRPCi0gICAgICAgIDB4MDBiMzogMHgyMjY1LCAjIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwotICAgICAgICAweDAwYjQ6IDB4MDEyYiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYjU6IDB4MDEzNiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjY6IDB4MjIwMiwgIyBQQVJUSUFMIERJRkZFUkVOVElBTAotICAgICAgICAweDAwYjc6IDB4MjIxMSwgIyBOLUFSWSBTVU1NQVRJT04KLSAgICAgICAgMHgwMGI4OiAweDAxNDIsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGI5OiAweDAxM2IsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGJhOiAweDAxM2MsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiYjogMHgwMTNkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTgotICAgICAgICAweDAwYmM6IDB4MDEzZSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBiZDogMHgwMTM5LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQotICAgICAgICAweDAwYmU6IDB4MDEzYSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiZjogMHgwMTQ1LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBjMDogMHgwMTQ2LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYzE6IDB4MDE0MywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGMyOiAweDAwYWMsICMgTk9UIFNJR04KLSAgICAgICAgMHgwMGMzOiAweDIyMWEsICMgU1FVQVJFIFJPT1QKLSAgICAgICAgMHgwMGM0OiAweDAxNDQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQotICAgICAgICAweDAwYzU6IDB4MDE0NywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGM2OiAweDIyMDYsICMgSU5DUkVNRU5UCi0gICAgICAgIDB4MDBjNzogMHgwMGFiLCAjIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBjODogMHgwMGJiLCAjIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwYzk6IDB4MjAyNiwgIyBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDBjYTogMHgwMGEwLCAjIE5PLUJSRUFLIFNQQUNFCi0gICAgICAgIDB4MDBjYjogMHgwMTQ4LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGNjOiAweDAxNTAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwY2Q6IDB4MDBkNSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMGNlOiAweDAxNTEsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGNmOiAweDAxNGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZDA6IDB4MjAxMywgIyBFTiBEQVNICi0gICAgICAgIDB4MDBkMTogMHgyMDE0LCAjIEVNIERBU0gKLSAgICAgICAgMHgwMGQyOiAweDIwMWMsICMgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQzOiAweDIwMWQsICMgUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNDogMHgyMDE4LCAjIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNTogMHgyMDE5LCAjIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDY6IDB4MDBmNywgIyBESVZJU0lPTiBTSUdOCi0gICAgICAgIDB4MDBkNzogMHgyNWNhLCAjIExPWkVOR0UKLSAgICAgICAgMHgwMGQ4OiAweDAxNGQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGQ5OiAweDAxNTQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkYTogMHgwMTU1LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGRiOiAweDAxNTgsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBkYzogMHgyMDM5LCAjIFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkZDogMHgyMDNhLCAjIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZGU6IDB4MDE1OSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBkZjogMHgwMTU2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBlMDogMHgwMTU3LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZTE6IDB4MDE2MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGUyOiAweDIwMWEsICMgU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBlMzogMHgyMDFlLCAjIERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZTQ6IDB4MDE2MSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlNTogMHgwMTVhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTY6IDB4MDE1YiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNzogMHgwMGMxLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTg6IDB4MDE2NCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGU5OiAweDAxNjUsICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWE6IDB4MDBjZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGViOiAweDAxN2QsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlYzogMHgwMTdlLCAjIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVkOiAweDAxNmEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZWU6IDB4MDBkMywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGVmOiAweDAwZDQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGYwOiAweDAxNmIsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGYxOiAweDAxNmUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGYyOiAweDAwZGEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmMzogMHgwMTZmLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZjQ6IDB4MDE3MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBmNTogMHgwMTcxLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBmNjogMHgwMTcyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGY3OiAweDAxNzMsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGY4OiAweDAwZGQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmOTogMHgwMGZkLCAjIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGZhOiAweDAxMzcsICMgTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBmYjogMHgwMTdiLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMGZjOiAweDAxNDEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZmQ6IDB4MDE3YywgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwZmU6IDB4MDEyMiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZmY6IDB4MDJjNywgIyBDQVJPTgotfSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIyMgRW5jb2RpbmcgTWFwCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKKyAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKKyAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgorICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCisgICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCisgICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKKyAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCisgICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgorICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKKyAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgorICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKKyAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCisgICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAorICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgorICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCisgICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQorICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KKyAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKKyAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgorICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQorICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCisgICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKKyAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCisgICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KKyAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQorICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKKyAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKKyAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCisgICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKKyAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKKyAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKKyAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSworICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSworICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgorICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgorICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KKyAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECisgICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKKyAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUworICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUworICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSworICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KKyAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKKyAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCisgICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAorICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCisgICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KKyAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCisgICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTworICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQorICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCisgICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKKyAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCisgICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCisgICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCisgICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKKyAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KKyAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCisgICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCisgICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCisgICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCisgICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKKyAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAorICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKKyAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisgICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKKyAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisgICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKKyAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisgICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKKyAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisgICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KKyAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisgICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKKyAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisgICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKKyAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisgICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKKyAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisgICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKKyAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAorICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKKyAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKKyAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCisgICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCisgICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCisgICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCisgICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECisgICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCisgICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCisgICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCisgICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICisgICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCisgICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCisgICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCisgICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCisgICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCisgICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCisgICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCisgICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCisgICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCisgICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCisgICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCisgICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCisgICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCisgICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCisgICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCisgICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCisgICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCisgICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCisgICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAorICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCisgICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x4YzQnICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUwMTAwJyAgICMgIDB4ODEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMDEnICAgIyAgMHg4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHUwMTA0JyAgICMgIDB4ODQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSworICAgICdceGQ2JyAgICAgIyAgMHg4NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGMnICAgICAjICAweDg2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlMScgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdcdTAxMDUnICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSworICAgICdcdTAxMGMnICAgIyAgMHg4OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KKyAgICAnXHhlNCcgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUwMTBkJyAgICMgIDB4OEIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgorICAgICdcdTAxMDYnICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKKyAgICAnXHUwMTA3JyAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQorICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3OScgICAjICAweDhGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQorICAgICdcdTAxN2EnICAgIyAgMHg5MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCisgICAgJ1x1MDEwZScgICAjICAweDkxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgorICAgICdceGVkJyAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x1MDEwZicgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST04KKyAgICAnXHUwMTEyJyAgICMgIDB4OTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMTMnICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMTYnICAgIyAgMHg5NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x4ZjMnICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHUwMTE3JyAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKyAgICAnXHhmNCcgICAgICMgIDB4OTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjYnICAgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjUnICAgICAjICAweDlCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhmYScgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxMWEnICAgIyAgMHg5RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KKyAgICAnXHUwMTFiJyAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgorICAgICdceGZjJyAgICAgIyAgMHg5RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKKyAgICAnXHhiMCcgICAgICMgIDB4QTEgLT4gREVHUkVFIFNJR04KKyAgICAnXHUwMTE4JyAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSworICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTcnICAgICAjICAweEE0IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTIwMjInICAgIyAgMHhBNSAtPiBCVUxMRVQKKyAgICAnXHhiNicgICAgICMgIDB4QTYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4ZGYnICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCisgICAgJ1x4YWUnICAgICAjICAweEE4IC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgorICAgICdcdTIxMjInICAgIyAgMHhBQSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHUwMTE5JyAgICMgIDB4QUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKyAgICAnXHhhOCcgICAgICMgIDB4QUMgLT4gRElBRVJFU0lTCisgICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTworICAgICdcdTAxMjMnICAgIyAgMHhBRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKyAgICAnXHUwMTJlJyAgICMgIDB4QUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSworICAgICdcdTAxMmYnICAgIyAgMHhCMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSworICAgICdcdTAxMmEnICAgIyAgMHhCMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MjI2NCcgICAjICAweEIyIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTworICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KKyAgICAnXHUwMTJiJyAgICMgIDB4QjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHUwMTM2JyAgICMgIDB4QjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEEKKyAgICAnXHUyMjAyJyAgICMgIDB4QjYgLT4gUEFSVElBTCBESUZGRVJFTlRJQUwKKyAgICAnXHUyMjExJyAgICMgIDB4QjcgLT4gTi1BUlkgU1VNTUFUSU9OCisgICAgJ1x1MDE0MicgICAjICAweEI4IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCisgICAgJ1x1MDEzYicgICAjICAweEI5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCisgICAgJ1x1MDEzYycgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorICAgICdcdTAxM2QnICAgIyAgMHhCQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KKyAgICAnXHUwMTNlJyAgICMgIDB4QkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgorICAgICdcdTAxMzknICAgIyAgMHhCRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEUKKyAgICAnXHUwMTNhJyAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURQorICAgICdcdTAxNDUnICAgIyAgMHhCRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQorICAgICdcdTAxNDYnICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTQzJyAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCisgICAgJ1x4YWMnICAgICAjICAweEMyIC0+IE5PVCBTSUdOCisgICAgJ1x1MjIxYScgICAjICAweEMzIC0+IFNRVUFSRSBST09UCisgICAgJ1x1MDE0NCcgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKKyAgICAnXHUwMTQ3JyAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCisgICAgJ1x1MjIwNicgICAjICAweEM2IC0+IElOQ1JFTUVOVAorICAgICdceGFiJyAgICAgIyAgMHhDNyAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGJiJyAgICAgIyAgMHhDOCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdceGEwJyAgICAgIyAgMHhDQSAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTAxNDgnICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCisgICAgJ1x1MDE1MCcgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHhkNScgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x1MDE1MScgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x1MDE0YycgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KKyAgICAnXHUyMDEzJyAgICMgIDB4RDAgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHhEMSAtPiBFTSBEQVNICisgICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweEQzIC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTgnICAgIyAgMHhENCAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhmNycgICAgICMgIDB4RDYgLT4gRElWSVNJT04gU0lHTgorICAgICdcdTI1Y2EnICAgIyAgMHhENyAtPiBMT1pFTkdFCisgICAgJ1x1MDE0ZCcgICAjICAweEQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OCisgICAgJ1x1MDE1NCcgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQorICAgICdcdTAxNTUnICAgIyAgMHhEQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCisgICAgJ1x1MDE1OCcgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgorICAgICdcdTIwMzknICAgIyAgMHhEQyAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwM2EnICAgIyAgMHhERCAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTU5JyAgICMgIDB4REUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTgorICAgICdcdTAxNTYnICAgIyAgMHhERiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorICAgICdcdTAxNTcnICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTYwJyAgICMgIDB4RTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MjAxYScgICAjICAweEUyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWUnICAgIyAgMHhFMyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTYxJyAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTAxNWEnICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKKyAgICAnXHUwMTViJyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQorICAgICdceGMxJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHUwMTY0JyAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCisgICAgJ1x1MDE2NScgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KKyAgICAnXHhjZCcgICAgICMgIDB4RUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3ZCcgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgorICAgICdcdTAxN2UnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCisgICAgJ1x1MDE2YScgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHhkMycgICAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDQnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x1MDE2YicgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDE2ZScgICAjICAweEYxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZGEnICAgICAjICAweEYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxNmYnICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHUwMTcwJyAgICMgIDB4RjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNzEnICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNzInICAgIyAgMHhGNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCisgICAgJ1x1MDE3MycgICAjICAweEY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLCisgICAgJ1x4ZGQnICAgICAjICAweEY4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZkJyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x1MDEzNycgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQorICAgICdcdTAxN2InICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x1MDE0MScgICAjICAweEZDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKKyAgICAnXHUwMTdjJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKyAgICAnXHUwMTIyJyAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKyAgICAnXHUwMmM3JyAgICMgIDB4RkYgLT4gQ0FST04KKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weSBiL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CmluZGV4IDRiNzdlMmIuLmM1MDZkNjUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CkBAIC0xMCwxOCArMTAsMTggQEAKIAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00Miw0MiArNDIsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIFRoZSBQYWxtT1MgY2hhcmFjdGVyIHNldCBpcyBtb3N0bHkgaXNvLTg4NTktMSB3aXRoIHNvbWUgZGlmZmVyZW5jZXMuCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDIwYWMsICMgICAgICAgRVVSTyBTSUdOCi0gICAgICAgIDB4MDA4MjogMHgyMDFhLCAjICAgICAgIFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwODM6IDB4MDE5MiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKLSAgICAgICAgMHgwMDg0OiAweDIwMWUsICMgICAgICAgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4NTogMHgyMDI2LCAjICAgICAgIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMDg2OiAweDIwMjAsICMgICAgICAgREFHR0VSCi0gICAgICAgIDB4MDA4NzogMHgyMDIxLCAjICAgICAgIERPVUJMRSBEQUdHRVIKLSAgICAgICAgMHgwMDg4OiAweDAyYzYsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCi0gICAgICAgIDB4MDA4OTogMHgyMDMwLCAjICAgICAgIFBFUiBNSUxMRSBTSUdOCi0gICAgICAgIDB4MDA4YTogMHgwMTYwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOGI6IDB4MjAzOSwgIyAgICAgICBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOGM6IDB4MDE1MiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCi0gICAgICAgIDB4MDA4ZDogMHgyNjY2LCAjICAgICAgIEJMQUNLIERJQU1PTkQgU1VJVAotICAgICAgICAweDAwOGU6IDB4MjY2MywgIyAgICAgICBCTEFDSyBDTFVCIFNVSVQKLSAgICAgICAgMHgwMDhmOiAweDI2NjUsICMgICAgICAgQkxBQ0sgSEVBUlQgU1VJVAotICAgICAgICAweDAwOTA6IDB4MjY2MCwgIyAgICAgICBCTEFDSyBTUEFERSBTVUlUCi0gICAgICAgIDB4MDA5MTogMHgyMDE4LCAjICAgICAgIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MjogMHgyMDE5LCAjICAgICAgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTM6IDB4MjAxYywgIyAgICAgICBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTQ6IDB4MjAxZCwgIyAgICAgICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk1OiAweDIwMjIsICMgICAgICAgQlVMTEVUCi0gICAgICAgIDB4MDA5NjogMHgyMDEzLCAjICAgICAgIEVOIERBU0gKLSAgICAgICAgMHgwMDk3OiAweDIwMTQsICMgICAgICAgRU0gREFTSAotICAgICAgICAweDAwOTg6IDB4MDJkYywgIyAgICAgICBTTUFMTCBUSUxERQotICAgICAgICAweDAwOTk6IDB4MjEyMiwgIyAgICAgICBUUkFERSBNQVJLIFNJR04KLSAgICAgICAgMHgwMDlhOiAweDAxNjEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOWM6IDB4MDE1MywgIyAgICAgICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQotICAgICAgICAweDAwOWY6IDB4MDE3OCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi19KQorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORworICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KKyAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCisgICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECisgICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgorICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQorICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCisgICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQorICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCisgICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCisgICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCisgICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKKyAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCisgICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKKyAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCisgICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKKyAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQorICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgorICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgorICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCisgICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgorICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKKyAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCisgICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQorICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAorICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRworICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgorICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQorICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAorICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUworICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgorICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQorICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQorICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQorICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KKyAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CisgICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCisgICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKKyAgICAnXHUwMmM2JyAgICMgIDB4ODggLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCisgICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCisgICAgJ1x1MDE2MCcgICAjICAweDhBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxNTInICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCisgICAgJ1x1MjY2NicgICAjICAweDhEIC0+IEJMQUNLIERJQU1PTkQgU1VJVAorICAgICdcdTI2NjMnICAgIyAgMHg4RSAtPiBCTEFDSyBDTFVCIFNVSVQKKyAgICAnXHUyNjY1JyAgICMgIDB4OEYgLT4gQkxBQ0sgSEVBUlQgU1VJVAorICAgICdcdTI2NjAnICAgIyAgMHg5MCAtPiBCTEFDSyBTUEFERSBTVUlUCisgICAgJ1x1MjAxOCcgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCisgICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4OTcgLT4gRU0gREFTSAorICAgICdcdTAyZGMnICAgIyAgMHg5OCAtPiBTTUFMTCBUSUxERQorICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHUwMTYxJyAgICMgIDB4OUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KKyAgICAnXHUwMTUzJyAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKKyAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgorICAgICdcdTAxNzgnICAgIyAgMHg5RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x4YTEnICAgICAjICAweEExIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnXHhhMicgICAgICMgIDB4QTIgLT4gQ0VOVCBTSUdOCisgICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KKyAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdceGE1JyAgICAgIyAgMHhBNSAtPiBZRU4gU0lHTgorICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdceGE4JyAgICAgIyAgMHhBOCAtPiBESUFFUkVTSVMKKyAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHhhYScgICAgICMgIDB4QUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KKyAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KKyAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCisgICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCisgICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAorICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKKyAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCisgICAgJ1x4YmEnICAgICAjICAweEJBIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCisgICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgorICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKKyAgICAnXHhiZicgICAgICMgIDB4QkYgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSworICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzMnICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4YzYnICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCisgICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4YzgnICAgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjYicgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGNjJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2YnICAgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkMCcgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCisgICAgJ1x4ZDEnICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGQyJyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZDUnICAgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KKyAgICAnXHhkOCcgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZGInICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZCcgICAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4ZGUnICAgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCisgICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHZXJtYW4pCisgICAgJ1x4ZTAnICAgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhlMScgICAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlMycgICAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCisgICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhlYScgICAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhlZCcgICAgICMgIDB4RUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmMCcgICAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQorICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4ZjInICAgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhmMycgICAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNScgICAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCisgICAgJ1x4ZjgnICAgICAjICAweEY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4ZjknICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZlJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKKyAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKykKIAotIyMjIEVuY29kaW5nIE1hcAotCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weSBiL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weQppbmRleCBhZWY4OTc1Li42NTZiNzlkIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkKKysrIGIvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5CkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMzAgKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDA0OTYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODE6IDB4MDQ5MiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDA4MjogMHgwNGVlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MzogMHgwNDkzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDA4NDogMHgyMDFlLCAjICAgICAgICBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDg1OiAweDIwMjYsICMgICAgICAgIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMDg2OiAweDA0YjYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODc6IDB4MDRhZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVQotICAgICAgICAweDAwODg6IDB4MDRiMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDg5OiAweDA0YWYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCi0gICAgICAgIDB4MDA4YTogMHgwNGEwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBCi0gICAgICAgIDB4MDA4YjogMHgwNGUyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4YzogMHgwNGEyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOGQ6IDB4MDQ5YSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDhlOiAweDA0YmEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKLSAgICAgICAgMHgwMDhmOiAweDA0YjgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwOTA6IDB4MDQ5NywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOTE6IDB4MjAxOCwgIyAgICAgICAgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkyOiAweDIwMTksICMgICAgICAgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTM6IDB4MjAxYywgIyAgICAgICAgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk0OiAweDIwMWQsICMgICAgICAgIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTU6IDB4MjAyMiwgIyAgICAgICAgQlVMTEVUCi0gICAgICAgIDB4MDA5NjogMHgyMDEzLCAjICAgICAgICBFTiBEQVNICi0gICAgICAgIDB4MDA5NzogMHgyMDE0LCAjICAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDA5ODogMHgwNGIzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDk5OiAweDA0YjcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDlhOiAweDA0YTEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCi0gICAgICAgIDB4MDA5YjogMHgwNGUzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOWM6IDB4MDRhMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5ZDogMHgwNDliLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDllOiAweDA0YmIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCi0gICAgICAgIDB4MDA5ZjogMHgwNGI5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBhMTogMHgwNDBlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCi0gICAgICAgIDB4MDBhMjogMHgwNDVlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQotICAgICAgICAweDAwYTM6IDB4MDQwOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKLSAgICAgICAgMHgwMGE0OiAweDA0ZTgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCi0gICAgICAgIDB4MDBhNTogMHgwNDk4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYTY6IDB4MDRiMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwYTg6IDB4MDQwMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KLSAgICAgICAgMHgwMGFhOiAweDA0ZDgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCi0gICAgICAgIDB4MDBhZDogMHgwNGVmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYWY6IDB4MDQ5YywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMGIxOiAweDA0YjEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBiMjogMHgwNDA2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKLSAgICAgICAgMHgwMGIzOiAweDA0NTYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKLSAgICAgICAgMHgwMGI0OiAweDA0OTksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYjU6IDB4MDRlOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPCi0gICAgICAgIDB4MDBiODogMHgwNDUxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KLSAgICAgICAgMHgwMGI5OiAweDIxMTYsICMgICAgICAgIE5VTUVSTyBTSUdOCi0gICAgICAgIDB4MDBiYTogMHgwNGQ5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKLSAgICAgICAgMHgwMGJjOiAweDA0NTgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBKRQotICAgICAgICAweDAwYmQ6IDB4MDRhYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGJlOiAweDA0YWIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYmY6IDB4MDQ5ZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBjMDogMHgwNDEwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCi0gICAgICAgIDB4MDBjMTogMHgwNDExLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQotICAgICAgICAweDAwYzI6IDB4MDQxMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKLSAgICAgICAgMHgwMGMzOiAweDA0MTMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQotICAgICAgICAweDAwYzQ6IDB4MDQxNCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKLSAgICAgICAgMHgwMGM1OiAweDA0MTUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCi0gICAgICAgIDB4MDBjNjogMHgwNDE2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKLSAgICAgICAgMHgwMGM3OiAweDA0MTcsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCi0gICAgICAgIDB4MDBjODogMHgwNDE4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCi0gICAgICAgIDB4MDBjOTogMHgwNDE5LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDBjYTogMHgwNDFhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQotICAgICAgICAweDAwY2I6IDB4MDQxYiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKLSAgICAgICAgMHgwMGNjOiAweDA0MWMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDBjZDogMHgwNDFkLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgotICAgICAgICAweDAwY2U6IDB4MDQxZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwotICAgICAgICAweDAwY2Y6IDB4MDQxZiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKLSAgICAgICAgMHgwMGQwOiAweDA0MjAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDBkMTogMHgwNDIxLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwotICAgICAgICAweDAwZDI6IDB4MDQyMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKLSAgICAgICAgMHgwMGQzOiAweDA0MjMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKLSAgICAgICAgMHgwMGQ0OiAweDA0MjQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCi0gICAgICAgIDB4MDBkNTogMHgwNDI1LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQotICAgICAgICAweDAwZDY6IDB4MDQyNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCi0gICAgICAgIDB4MDBkNzogMHgwNDI3LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKLSAgICAgICAgMHgwMGQ4OiAweDA0MjgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQotICAgICAgICAweDAwZDk6IDB4MDQyOSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKLSAgICAgICAgMHgwMGRhOiAweDA0MmEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgotICAgICAgICAweDAwZGI6IDB4MDQyYiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQotICAgICAgICAweDAwZGM6IDB4MDQyYywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCi0gICAgICAgIDB4MDBkZDogMHgwNDJkLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCi0gICAgICAgIDB4MDBkZTogMHgwNDJlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQotICAgICAgICAweDAwZGY6IDB4MDQyZiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKLSAgICAgICAgMHgwMGUwOiAweDA0MzAsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDBlMTogMHgwNDMxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwMGUyOiAweDA0MzIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQotICAgICAgICAweDAwZTM6IDB4MDQzMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQotICAgICAgICAweDAwZTQ6IDB4MDQzNCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgICAgIDB4MDBlNTogMHgwNDM1LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwMGU2OiAweDA0MzYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKLSAgICAgICAgMHgwMGU3OiAweDA0MzcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQotICAgICAgICAweDAwZTg6IDB4MDQzOCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICAgICAgMHgwMGU5OiAweDA0MzksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDBlYTogMHgwNDNhLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwMGViOiAweDA0M2IsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDAwZWM6IDB4MDQzYywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDBlZDogMHgwNDNkLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICAgICAgMHgwMGVlOiAweDA0M2UsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDBlZjogMHgwNDNmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKLSAgICAgICAgMHgwMGYwOiAweDA0NDAsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDAwZjE6IDB4MDQ0MSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDBmMjogMHgwNDQyLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAgICAgICAgMHgwMGYzOiAweDA0NDMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDBmNDogMHgwNDQ0LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKLSAgICAgICAgMHgwMGY1OiAweDA0NDUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQQotICAgICAgICAweDAwZjY6IDB4MDQ0NiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQotICAgICAgICAweDAwZjc6IDB4MDQ0NywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQotICAgICAgICAweDAwZjg6IDB4MDQ0OCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQotICAgICAgICAweDAwZjk6IDB4MDQ0OSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCi0gICAgICAgIDB4MDBmYTogMHgwNDRhLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCi0gICAgICAgIDB4MDBmYjogMHgwNDRiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQotICAgICAgICAweDAwZmM6IDB4MDQ0YywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgotICAgICAgICAweDAwZmQ6IDB4MDQ0ZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKLSAgICAgICAgMHgwMGZlOiAweDA0NGUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBZVQotICAgICAgICAweDAwZmY6IDB4MDQ0ZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCi19KQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMjIyBFbmNvZGluZyBNYXAKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUgKERFTCkKKyAgICAnXHUwNDk2JyAgICMgIDB4ODAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5MicgICAjICAweDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdcdTA0ZWUnICAgIyAgMHg4MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDQ5MycgICAjICAweDgzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUwNGI2JyAgICMgIDB4ODYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhZScgICAjICAweDg3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNGIyJyAgICMgIDB4ODggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFmJyAgICMgIDB4ODkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNGEwJyAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQQorICAgICdcdTA0ZTInICAgIyAgMHg4QiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDRhMicgICAjICAweDhDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5YScgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYScgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKKyAgICAnXHUwNGI4JyAgICMgIDB4OEYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x1MDQ5NycgICAjICAweDkwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjInICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICisgICAgJ1x1MDRiMycgICAjICAweDk4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YjcnICAgIyAgMHg5OSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhMScgICAjICAweDlBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCisgICAgJ1x1MDRlMycgICAjICAweDlCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDRhMycgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OWInICAgIyAgMHg5RCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGJiJyAgICMgIDB4OUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKKyAgICAnXHUwNGI5JyAgICMgIDB4OUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTA0MGUnICAgIyAgMHhBMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCisgICAgJ1x1MDQ1ZScgICAjICAweEEyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCisgICAgJ1x1MDQwOCcgICAjICAweEEzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCisgICAgJ1x1MDRlOCcgICAjICAweEE0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCisgICAgJ1x1MDQ5OCcgICAjICAweEE1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiMCcgICAjICAweEE2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MDQwMScgICAjICAweEE4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCisgICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x1MDRkOCcgICAjICAweEFBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x1MDRlZicgICAjICAweEFEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdcdTA0OWMnICAgIyAgMHhBRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdcdTA0YjEnICAgIyAgMHhCMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorICAgICdcdTA0MDYnICAgIyAgMHhCMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDU2JyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorICAgICdcdTA0OTknICAgIyAgMHhCNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGU5JyAgICMgIDB4QjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x1MDQ1MScgICAjICAweEI4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTworICAgICdcdTIxMTYnICAgIyAgMHhCOSAtPiBOVU1FUk8gU0lHTgorICAgICdcdTA0ZDknICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKKyAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ1OCcgICAjICAweEJDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBKRQorICAgICdcdTA0YWEnICAgIyAgMHhCRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWInICAgIyAgMHhCRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDlkJyAgICMgIDB4QkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x1MDQxMCcgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICAnXHUwNDExJyAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKKyAgICAnXHUwNDEyJyAgICMgIDB4QzIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKyAgICAnXHUwNDEzJyAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgJ1x1MDQxNCcgICAjICAweEM0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCisgICAgJ1x1MDQxNScgICAjICAweEM1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCisgICAgJ1x1MDQxNicgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgICdcdTA0MTcnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQorICAgICdcdTA0MTgnICAgIyAgMHhDOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCisgICAgJ1x1MDQxOScgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDFhJyAgICMgIDB4Q0EgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKKyAgICAnXHUwNDFiJyAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKyAgICAnXHUwNDFjJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKyAgICAnXHUwNDFkJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KKyAgICAnXHUwNDFlJyAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTworICAgICdcdTA0MWYnICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorICAgICdcdTA0MjAnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgorICAgICdcdTA0MjEnICAgIyAgMHhEMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworICAgICdcdTA0MjInICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorICAgICdcdTA0MjMnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1x1MDQyNCcgICAjICAweEQ0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCisgICAgJ1x1MDQyNScgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgJ1x1MDQyNicgICAjICAweEQ2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorICAgICdcdTA0MjcnICAgIyAgMHhENyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKKyAgICAnXHUwNDI4JyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyOScgICAjICAweEQ5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQyYScgICAjICAweERBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0MmInICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQyYycgICAjICAweERDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0MmQnICAgIyAgMHhERCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgJ1x1MDQyZScgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCisgICAgJ1x1MDQyZicgICAjICAweERGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCisgICAgJ1x1MDQzMCcgICAjICAweEUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgJ1x1MDQzMScgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0MzInICAgIyAgMHhFMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKKyAgICAnXHUwNDMzJyAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQorICAgICdcdTA0MzQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAnXHUwNDM1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgJ1x1MDQzNicgICAjICAweEU2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyAgICAnXHUwNDM3JyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQzOCcgICAjICAweEU4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgJ1x1MDQzOScgICAjICAweEU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQzYScgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgIyAgMHhFQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICAnXHUwNDNjJyAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgJ1x1MDQzZCcgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICdcdTA0M2YnICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKyAgICAnXHUwNDQwJyAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgJ1x1MDQ0MScgICAjICAweEYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICdcdTA0NDInICAgIyAgMHhGMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKKyAgICAnXHUwNDQzJyAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAnXHUwNDQ0JyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCisgICAgJ1x1MDQ0NScgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQorICAgICdcdTA0NDYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQ0NycgICAjICAweEY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKKyAgICAnXHUwNDQ4JyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQorICAgICdcdTA0NDknICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDRhJyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0NGInICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQorICAgICdcdTA0NGMnICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQ0ZCcgICAjICAweEZEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCisgICAgJ1x1MDQ0ZScgICAjICAweEZFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQorICAgICdcdTA0NGYnICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZmlsZWlucHV0LnB5IGIvTGliL2ZpbGVpbnB1dC5weQppbmRleCA1NTRiZWIyLi5kYmJiYjIxIDEwMDY0NAotLS0gYS9MaWIvZmlsZWlucHV0LnB5CisrKyBiL0xpYi9maWxlaW5wdXQucHkKQEAgLTM5OCw5ICszOTgsOCBAQAogCiAKIGRlZiBob29rX2VuY29kZWQoZW5jb2RpbmcpOgotICAgIGltcG9ydCBjb2RlY3MKICAgICBkZWYgb3Blbmhvb2soZmlsZW5hbWUsIG1vZGUpOgotICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nKQorICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgcmV0dXJuIG9wZW5ob29rCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZubWF0Y2gucHkgYi9MaWIvZm5tYXRjaC5weQppbmRleCA3MjZmYmU1Li5mNDQ2NzY5IDEwMDY0NAotLS0gYS9MaWIvZm5tYXRjaC5weQorKysgYi9MaWIvZm5tYXRjaC5weQpAQCAtMzUsOSArMzUsOSBAQAogICAgIHBhdCA9IG9zLnBhdGgubm9ybWNhc2UocGF0KQogICAgIHJldHVybiBmbm1hdGNoY2FzZShuYW1lLCBwYXQpCiAKLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjUwKQotZGVmIF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc19ieXRlcz1GYWxzZSk6Ci0gICAgaWYgaXNfYnl0ZXM6CitAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTI1MCwgdHlwZWQ9VHJ1ZSkKK2RlZiBfY29tcGlsZV9wYXR0ZXJuKHBhdCk6CisgICAgaWYgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKToKICAgICAgICAgcGF0X3N0ciA9IHN0cihwYXQsICdJU08tODg1OS0xJykKICAgICAgICAgcmVzX3N0ciA9IHRyYW5zbGF0ZShwYXRfc3RyKQogICAgICAgICByZXMgPSBieXRlcyhyZXNfc3RyLCAnSVNPLTg4NTktMScpCkBAIC00OSw3ICs0OSw3IEBACiAgICAgIiIiUmV0dXJuIHRoZSBzdWJzZXQgb2YgdGhlIGxpc3QgTkFNRVMgdGhhdCBtYXRjaCBQQVQuIiIiCiAgICAgcmVzdWx0ID0gW10KICAgICBwYXQgPSBvcy5wYXRoLm5vcm1jYXNlKHBhdCkKLSAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpKQorICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgaWYgb3MucGF0aCBpcyBwb3NpeHBhdGg6CiAgICAgICAgICMgbm9ybWNhc2Ugb24gcG9zaXggaXMgTk9QLiBPcHRpbWl6ZSBpdCBhd2F5IGZyb20gdGhlIGxvb3AuCiAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpAQCAtNjcsNyArNjcsNyBAQAogICAgIFRoaXMgaXMgYSB2ZXJzaW9uIG9mIGZubWF0Y2goKSB3aGljaCBkb2Vzbid0IGNhc2Utbm9ybWFsaXplCiAgICAgaXRzIGFyZ3VtZW50cy4KICAgICAiIiIKLSAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpKQorICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgcmV0dXJuIG1hdGNoKG5hbWUpIGlzIG5vdCBOb25lCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggYTBmMGY5MC4uNWVmYWU5NSAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0xMDAsMTQgKzEwMCwxNSBAQAogICAgIGZpbGUgPSBOb25lCiAgICAgd2VsY29tZSA9IE5vbmUKICAgICBwYXNzaXZlc2VydmVyID0gMQotICAgIGVuY29kaW5nID0gImxhdGluMSIKKyAgICBlbmNvZGluZyA9ICJsYXRpbi0xIgogCiAgICAgIyBJbml0aWFsaXphdGlvbiBtZXRob2QgKGNhbGxlZCBieSBjbGFzcyBpbnN0YW50aWF0aW9uKS4KICAgICAjIEluaXRpYWxpemUgaG9zdCB0byBsb2NhbGhvc3QsIHBvcnQgdG8gc3RhbmRhcmQgZnRwIHBvcnQKICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgaG9zdCAoZm9yIGNvbm5lY3QoKSksCiAgICAgIyBhbmQgdXNlciwgcGFzc3dkLCBhY2N0IChmb3IgbG9naW4oKSkKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CisgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICBzZWxmLmNvbm5lY3QoaG9zdCkKQEAgLTEyOCwxMCArMTI5LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgdGltZW91dD0tOTk5KToKKyAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PScnLCBwb3J0PTAsIHRpbWVvdXQ9LTk5OSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICcnJ0Nvbm5lY3QgdG8gaG9zdC4gIEFyZ3VtZW50cyBhcmU6CiAgICAgICAgICAtIGhvc3Q6IGhvc3RuYW1lIHRvIGNvbm5lY3QgdG8gKHN0cmluZywgZGVmYXVsdCBwcmV2aW91cyBob3N0KQogICAgICAgICAgLSBwb3J0OiBwb3J0IHRvIGNvbm5lY3QgdG8gKGludGVnZXIsIGRlZmF1bHQgcHJldmlvdXMgcG9ydCkKKyAgICAgICAgIC0gc291cmNlX2FkZHJlc3M6IGEgMi10dXBsZSAoaG9zdCwgcG9ydCkgZm9yIHRoZSBzb2NrZXQgdG8gYmluZAorICAgICAgICAgICB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuCiAgICAgICAgICcnJwogICAgICAgICBpZiBob3N0ICE9ICcnOgogICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdApAQCAtMTM5LDcgKzE0MiwxMCBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgICBpZiB0aW1lb3V0ICE9IC05OTk6CiAgICAgICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0Ci0gICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQpCisgICAgICAgIGlmIHNvdXJjZV9hZGRyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICBzZWxmLmFmID0gc2VsZi5zb2NrLmZhbWlseQogICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogICAgICAgICBzZWxmLndlbGNvbWUgPSBzZWxmLmdldHJlc3AoKQpAQCAtMTY5LDEwICsxNzUsOCBAQAogCiAgICAgIyBJbnRlcm5hbDogInNhbml0aXplIiBhIHN0cmluZyBmb3IgcHJpbnRpbmcKICAgICBkZWYgc2FuaXRpemUoc2VsZiwgcyk6Ci0gICAgICAgIGlmIHNbOjVdID09ICdwYXNzICcgb3Igc1s6NV0gPT0gJ1BBU1MgJzoKLSAgICAgICAgICAgIGkgPSBsZW4ocykKLSAgICAgICAgICAgIHdoaWxlIGkgPiA1IGFuZCBzW2ktMV0gaW4geydccicsICdcbid9OgotICAgICAgICAgICAgICAgIGkgPSBpLTEKKyAgICAgICAgaWYgc1s6NV0gaW4geydwYXNzICcsICdQQVNTICd9OgorICAgICAgICAgICAgaSA9IGxlbihzLnJzdHJpcCgnXHJcbicpKQogICAgICAgICAgICAgcyA9IHNbOjVdICsgJyonKihpLTUpICsgc1tpOl0KICAgICAgICAgcmV0dXJuIHJlcHIocykKIApAQCAtMzQwLDcgKzM0NCw4IEBACiAgICAgICAgIHNpemUgPSBOb25lCiAgICAgICAgIGlmIHNlbGYucGFzc2l2ZXNlcnZlcjoKICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLm1ha2VwYXN2KCkKLSAgICAgICAgICAgIGNvbm4gPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCBzZWxmLnRpbWVvdXQpCisgICAgICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgc2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiUkVTVCAlcyIgJSByZXN0KQpAQCAtMzU5LDggKzM2NCw3IEBACiAgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNvY2sgPSBzZWxmLm1ha2Vwb3J0KCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5tYWtlcG9ydCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJSRVNUICVzIiAlIHJlc3QpCiAgICAgICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZChjbWQpCkBAIC0zNzIsOCArMzc2LDYgQEAKICAgICAgICAgICAgICAgICBjb25uLCBzb2NrYWRkciA9IHNvY2suYWNjZXB0KCkKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUOgogICAgICAgICAgICAgICAgICAgICBjb25uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgaWYgcmVzcFs6M10gPT0gJzE1MCc6CiAgICAgICAgICAgICAjIHRoaXMgaXMgY29uZGl0aW9uYWwgaW4gY2FzZSB3ZSByZWNlaXZlZCBhIDEyNQogICAgICAgICAgICAgc2l6ZSA9IHBhcnNlMTUwKHJlc3ApCkBAIC00MzEsNyArNDMzLDcgQEAKICAgICAgICAgIiIiUmV0cmlldmUgZGF0YSBpbiBsaW5lIG1vZGUuICBBIG5ldyBwb3J0IGlzIGNyZWF0ZWQgZm9yIHlvdS4KIAogICAgICAgICBBcmdzOgotICAgICAgICAgIGNtZDogQSBSRVRSLCBMSVNULCBOTFNULCBvciBNTFNEIGNvbW1hbmQuCisgICAgICAgICAgY21kOiBBIFJFVFIsIExJU1QsIG9yIE5MU1QgY29tbWFuZC4KICAgICAgICAgICBjYWxsYmFjazogQW4gb3B0aW9uYWwgc2luZ2xlIHBhcmFtZXRlciBjYWxsYWJsZSB0aGF0IGlzIGNhbGxlZAogICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuCiAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiBwcmludF9saW5lKCldCkBAIC01MzIsNiArNTM0LDM0IEBACiAgICAgICAgICAgICAgICAgY21kID0gY21kICsgKCcgJyArIGFyZykKICAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBmdW5jKQogCisgICAgZGVmIG1sc2Qoc2VsZiwgcGF0aD0iIiwgZmFjdHM9W10pOgorICAgICAgICAnJydMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNECisgICAgICAgIGNvbW1hbmQgKFJGQy0zNjU5KS4gSWYgcGF0aCBpcyBvbWl0dGVkIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorICAgICAgICBpcyBhc3N1bWVkLiAiZmFjdHMiIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZQorICAgICAgICBvZiBpbmZvcm1hdGlvbiBkZXNpcmVkIChlLmcuIFsidHlwZSIsICJzaXplIiwgInBlcm0iXSkuCisKKyAgICAgICAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cworICAgICAgICBmb3IgZXZlcnkgZmlsZSBmb3VuZCBpbiBwYXRoLgorICAgICAgICBGaXJzdCBlbGVtZW50IGlzIHRoZSBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeQorICAgICAgICBpbmNsdWRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgImZhY3RzIiBkZXBlbmRpbmcgb24gdGhlIHNlcnZlcgorICAgICAgICBhbmQgd2hldGhlciAiZmFjdHMiIGFyZ3VtZW50IGhhcyBiZWVuIHByb3ZpZGVkLgorICAgICAgICAnJycKKyAgICAgICAgaWYgZmFjdHM6CisgICAgICAgICAgICBzZWxmLnNlbmRjbWQoIk9QVFMgTUxTVCAiICsgIjsiLmpvaW4oZmFjdHMpICsgIjsiKQorICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgY21kID0gIk1MU0QgJXMiICUgcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kID0gIk1MU0QiCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBsaW5lcy5hcHBlbmQpCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgZmFjdHNfZm91bmQsIF8sIG5hbWUgPSBsaW5lLnJzdHJpcChDUkxGKS5wYXJ0aXRpb24oJyAnKQorICAgICAgICAgICAgZW50cnkgPSB7fQorICAgICAgICAgICAgZm9yIGZhY3QgaW4gZmFjdHNfZm91bmRbOi0xXS5zcGxpdCgiOyIpOgorICAgICAgICAgICAgICAgIGtleSwgXywgdmFsdWUgPSBmYWN0LnBhcnRpdGlvbigiPSIpCisgICAgICAgICAgICAgICAgZW50cnlba2V5Lmxvd2VyKCldID0gdmFsdWUKKyAgICAgICAgICAgIHlpZWxkIChuYW1lLCBlbnRyeSkKKwogICAgIGRlZiByZW5hbWUoc2VsZiwgZnJvbW5hbWUsIHRvbmFtZSk6CiAgICAgICAgICcnJ1JlbmFtZSBhIGZpbGUuJycnCiAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1JORlIgJyArIGZyb21uYW1lKQpAQCAtNTY2LDEwICs1OTYsNyBAQAogICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdTSVpFICcgKyBmaWxlbmFtZSkKICAgICAgICAgaWYgcmVzcFs6M10gPT0gJzIxMyc6CiAgICAgICAgICAgICBzID0gcmVzcFszOl0uc3RyaXAoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocykKLSAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludChzKQorICAgICAgICAgICAgcmV0dXJuIGludChzKQogCiAgICAgZGVmIG1rZChzZWxmLCBkaXJuYW1lKToKICAgICAgICAgJycnTWFrZSBhIGRpcmVjdG9yeSwgcmV0dXJuIGl0cyBmdWxsIHBhdGhuYW1lLicnJwpAQCAtNjAxLDExICs2MjgsMTEgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgJycnQ2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBhc3N1bWluZyBhbnl0aGluZyBhYm91dCBpdC4nJycKLSAgICAgICAgaWYgc2VsZi5maWxlOgorICAgICAgICBpZiBzZWxmLmZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBpZiBzZWxmLnNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrID0gTm9uZQotCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKIAogdHJ5OgogICAgIGltcG9ydCBzc2wKQEAgLTY0OSw3ICs2NzYsNyBAQAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIGtleWZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKQEAgLTY2MCw3ICs2ODcsNyBAQAogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgICBzZWxmLl9wcm90X3AgPSBGYWxzZQotICAgICAgICAgICAgRlRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHVzZXIsIHBhc3N3ZCwgYWNjdCwgdGltZW91dCkKKyAgICAgICAgICAgIEZUUC5fX2luaXRfXyhzZWxmLCBob3N0LCB1c2VyLCBwYXNzd2QsIGFjY3QsIHRpbWVvdXQsIHNvdXJjZV9hZGRyZXNzKQogCiAgICAgICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIHNlY3VyZT1UcnVlKToKICAgICAgICAgICAgIGlmIHNlY3VyZSBhbmQgbm90IGlzaW5zdGFuY2Uoc2VsZi5zb2NrLCBzc2wuU1NMU29ja2V0KToKQEAgLTY4NCw2ICs3MTEsMTQgQEAKICAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZShtb2RlPSdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKICAgICAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICAgICAgZGVmIGNjYyhzZWxmKToKKyAgICAgICAgICAgICcnJ1N3aXRjaCBiYWNrIHRvIGEgY2xlYXItdGV4dCBjb250cm9sIGNvbm5lY3Rpb24uJycnCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLnNvY2ssIHNzbC5TU0xTb2NrZXQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCB1c2luZyBUTFMiKQorICAgICAgICAgICAgcmVzcCA9IHNlbGYudm9pZGNtZCgnQ0NDJykKKyAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuc29jay51bndyYXAoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3AKKwogICAgICAgICBkZWYgcHJvdF9wKHNlbGYpOgogICAgICAgICAgICAgJycnU2V0IHVwIHNlY3VyZSBkYXRhIGNvbm5lY3Rpb24uJycnCiAgICAgICAgICAgICAjIFBST1QgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGF0YSBjaGFubmVsIGlzIHRvIGJlIHByb3RlY3RlZC4KQEAgLTcyMCw4ICs3NTUsNyBAQAogCiAgICAgICAgIGRlZiByZXRyYmluYXJ5KHNlbGYsIGNtZCwgY2FsbGJhY2ssIGJsb2Nrc2l6ZT04MTkyLCByZXN0PU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CkBAIC03MzAsOCArNzY0LDYgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIHJldHJsaW5lcyhzZWxmLCBjbWQsIGNhbGxiYWNrID0gTm9uZSk6CkBAIC03MzksNyArNzcxLDcgQEAKICAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1RZUEUgQScpCiAgICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCiAgICAgICAgICAgICBmcCA9IGNvbm4ubWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBmcCwgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6IHByaW50KCcqcmV0cionLCByZXByKGxpbmUpKQpAQCAtNzUzLDE1ICs3ODUsMTEgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBzdG9yYmluYXJ5KHNlbGYsIGNtZCwgZnAsIGJsb2Nrc2l6ZT04MTkyLCBjYWxsYmFjaz1Ob25lLCByZXN0PU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKQEAgLTc3MCwxNCArNzk4LDExIEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBzdG9ybGluZXMoc2VsZiwgY21kLCBmcCwgY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLnZvaWRjbWQoJ1RZUEUgQScpCi0gICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kKSBhcyBjb25uOgogICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKQEAgLTc4OSw4ICs4MTQsNiBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgYWJvcnQoc2VsZik6CkBAIC04MjMsMTEgKzg0Niw3IEBACiAgICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgICBpZiBub3QgbToKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBzID0gbS5ncm91cCgxKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGludChzKQotICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHJldHVybiBpbnQocykKKyAgICByZXR1cm4gaW50KG0uZ3JvdXAoMSkpCiAKIAogXzIyN19yZSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDg1ZWEyNTcuLjIyNmE0NmUgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMTIsMTYgKzEyLDIyIEBACiAgICAgICAgICAgICd0b3RhbF9vcmRlcmluZycsICdjbXBfdG9fa2V5JywgJ2xydV9jYWNoZScsICdyZWR1Y2UnLCAncGFydGlhbCddCiAKIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbCwgcmVkdWNlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgbmFtZWR0dXBsZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCiBleGNlcHQ6CiAgICAgZnJvbSBfZHVtbXlfdGhyZWFkIGltcG9ydCBhbGxvY2F0ZV9sb2NrIGFzIExvY2sKIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIHVwZGF0ZV93cmFwcGVyKCkgYW5kIHdyYXBzKCkgZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiAjIHVwZGF0ZV93cmFwcGVyKCkgYW5kIHdyYXBzKCkgYXJlIHRvb2xzIHRvIGhlbHAgd3JpdGUKICMgd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjYW4gaGFuZGxlIG5haXZlIGludHJvc3BlY3Rpb24KIAotV1JBUFBFUl9BU1NJR05NRU5UUyA9ICgnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX2RvY19fJywgJ19fYW5ub3RhdGlvbnNfXycpCitXUkFQUEVSX0FTU0lHTk1FTlRTID0gKCdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcXVhbG5hbWVfXycsICdfX2RvY19fJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ19fYW5ub3RhdGlvbnNfXycpCiBXUkFQUEVSX1VQREFURVMgPSAoJ19fZGljdF9fJywpCiBkZWYgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwKICAgICAgICAgICAgICAgICAgICB3cmFwcGVkLApAQCAtNjUsNiArNzEsMTEgQEAKICAgICByZXR1cm4gcGFydGlhbCh1cGRhdGVfd3JhcHBlciwgd3JhcHBlZD13cmFwcGVkLAogICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkPWFzc2lnbmVkLCB1cGRhdGVkPXVwZGF0ZWQpCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyB0b3RhbF9vcmRlcmluZyBjbGFzcyBkZWNvcmF0b3IKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKIGRlZiB0b3RhbF9vcmRlcmluZyhjbHMpOgogICAgICIiIkNsYXNzIGRlY29yYXRvciB0aGF0IGZpbGxzIGluIG1pc3Npbmcgb3JkZXJpbmcgbWV0aG9kcyIiIgogICAgIGNvbnZlcnQgPSB7CkBAIC05Myw2ICsxMDQsMTEgQEAKICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBvcG5hbWUsIG9wZnVuYykKICAgICByZXR1cm4gY2xzCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBjbXBfdG9fa2V5KCkgZnVuY3Rpb24gY29udmVydGVyCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiBkZWYgY21wX3RvX2tleShteWNtcCk6CiAgICAgIiIiQ29udmVydCBhIGNtcD0gZnVuY3Rpb24gaW50byBhIGtleT0gZnVuY3Rpb24iIiIKICAgICBjbGFzcyBLKG9iamVjdCk6CkBAIC0xMTQsOTUgKzEzMCwxNzQgQEAKICAgICAgICAgX19oYXNoX18gPSBOb25lCiAgICAgcmV0dXJuIEsKIAotX0NhY2hlSW5mbyA9IG5hbWVkdHVwbGUoIkNhY2hlSW5mbyIsICJoaXRzIG1pc3NlcyBtYXhzaXplIGN1cnJzaXplIikKK3RyeToKKyAgICBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IGNtcF90b19rZXkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCiAKLWRlZiBscnVfY2FjaGUobWF4c2l6ZT0xMDApOgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIExSVSBDYWNoZSBmdW5jdGlvbiBkZWNvcmF0b3IKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK19DYWNoZUluZm8gPSBuYW1lZHR1cGxlKCJDYWNoZUluZm8iLCBbImhpdHMiLCAibWlzc2VzIiwgIm1heHNpemUiLCAiY3VycnNpemUiXSkKKworY2xhc3MgX0hhc2hlZFNlcShsaXN0KToKKyAgICBfX3Nsb3RzX18gPSAnaGFzaHZhbHVlJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR1cCwgaGFzaD1oYXNoKToKKyAgICAgICAgc2VsZls6XSA9IHR1cAorICAgICAgICBzZWxmLmhhc2h2YWx1ZSA9IGhhc2godHVwKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5oYXNodmFsdWUKKworZGVmIF9tYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCwKKyAgICAgICAgICAgICBrd2RfbWFyayA9IChvYmplY3QoKSwpLAorICAgICAgICAgICAgIGZhc3R0eXBlcyA9IHtpbnQsIHN0ciwgZnJvemVuc2V0LCB0eXBlKE5vbmUpfSwKKyAgICAgICAgICAgICBzb3J0ZWQ9c29ydGVkLCB0dXBsZT10dXBsZSwgdHlwZT10eXBlLCBsZW49bGVuKToKKyAgICAnTWFrZSBhIGNhY2hlIGtleSBmcm9tIG9wdGlvbmFsbHkgdHlwZWQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMnCisgICAga2V5ID0gYXJncworICAgIGlmIGt3ZHM6CisgICAgICAgIHNvcnRlZF9pdGVtcyA9IHNvcnRlZChrd2RzLml0ZW1zKCkpCisgICAgICAgIGtleSArPSBrd2RfbWFyaworICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWRfaXRlbXM6CisgICAgICAgICAgICBrZXkgKz0gaXRlbQorICAgIGlmIHR5cGVkOgorICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgdiBpbiBhcmdzKQorICAgICAgICBpZiBrd2RzOgorICAgICAgICAgICAga2V5ICs9IHR1cGxlKHR5cGUodikgZm9yIGssIHYgaW4gc29ydGVkX2l0ZW1zKQorICAgIGVsaWYgbGVuKGtleSkgPT0gMSBhbmQgdHlwZShrZXlbMF0pIGluIGZhc3R0eXBlczoKKyAgICAgICAgcmV0dXJuIGtleVswXQorICAgIHJldHVybiBfSGFzaGVkU2VxKGtleSkKKworZGVmIGxydV9jYWNoZShtYXhzaXplPTEyOCwgdHlwZWQ9RmFsc2UpOgogICAgICIiIkxlYXN0LXJlY2VudGx5LXVzZWQgY2FjaGUgZGVjb3JhdG9yLgogCiAgICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmVzIGFyZSBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlCiAgICAgY2FuIGdyb3cgd2l0aG91dCBib3VuZC4KIAorICAgIElmICp0eXBlZCogaXMgVHJ1ZSwgYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcyB3aWxsIGJlIGNhY2hlZCBzZXBhcmF0ZWx5LgorICAgIEZvciBleGFtcGxlLCBmKDMuMCkgYW5kIGYoMykgd2lsbCBiZSB0cmVhdGVkIGFzIGRpc3RpbmN0IGNhbGxzIHdpdGgKKyAgICBkaXN0aW5jdCByZXN1bHRzLgorCiAgICAgQXJndW1lbnRzIHRvIHRoZSBjYWNoZWQgZnVuY3Rpb24gbXVzdCBiZSBoYXNoYWJsZS4KIAotICAgIFZpZXcgdGhlIGNhY2hlIHN0YXRpc3RpY3MgbmFtZWQgdHVwbGUgKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpIHdpdGgKLSAgICBmLmNhY2hlX2luZm8oKS4gIENsZWFyIHRoZSBjYWNoZSBhbmQgc3RhdGlzdGljcyB3aXRoIGYuY2FjaGVfY2xlYXIoKS4KKyAgICBWaWV3IHRoZSBjYWNoZSBzdGF0aXN0aWNzIG5hbWVkIHR1cGxlIChoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplKQorICAgIHdpdGggZi5jYWNoZV9pbmZvKCkuICBDbGVhciB0aGUgY2FjaGUgYW5kIHN0YXRpc3RpY3Mgd2l0aCBmLmNhY2hlX2NsZWFyKCkuCiAgICAgQWNjZXNzIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIHdpdGggZi5fX3dyYXBwZWRfXy4KIAogICAgIFNlZTogIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FjaGVfYWxnb3JpdGhtcyNMZWFzdF9SZWNlbnRseV9Vc2VkCiAKICAgICAiIiIKKwogICAgICMgVXNlcnMgc2hvdWxkIG9ubHkgYWNjZXNzIHRoZSBscnVfY2FjaGUgdGhyb3VnaCBpdHMgcHVibGljIEFQSToKICAgICAjICAgICAgIGNhY2hlX2luZm8sIGNhY2hlX2NsZWFyLCBhbmQgZi5fX3dyYXBwZWRfXwogICAgICMgVGhlIGludGVybmFscyBvZiB0aGUgbHJ1X2NhY2hlIGFyZSBlbmNhcHN1bGF0ZWQgZm9yIHRocmVhZCBzYWZldHkgYW5kCiAgICAgIyB0byBhbGxvdyB0aGUgaW1wbGVtZW50YXRpb24gdG8gY2hhbmdlIChpbmNsdWRpbmcgYSBwb3NzaWJsZSBDIHZlcnNpb24pLgogCi0gICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbiwKLSAgICAgICAgICAgICAgICB0dXBsZT10dXBsZSwgc29ydGVkPXNvcnRlZCwgbGVuPWxlbiwgS2V5RXJyb3I9S2V5RXJyb3IpOgorICAgICMgQ29uc3RhbnRzIHNoYXJlZCBieSBhbGwgbHJ1IGNhY2hlIGluc3RhbmNlczoKKyAgICBzZW50aW5lbCA9IG9iamVjdCgpICAgICAgICAgICMgdW5pcXVlIG9iamVjdCB1c2VkIHRvIHNpZ25hbCBjYWNoZSBtaXNzZXMKKyAgICBtYWtlX2tleSA9IF9tYWtlX2tleSAgICAgICAgICMgYnVpbGQgYSBrZXkgZnJvbSB0aGUgZnVuY3Rpb24gYXJndW1lbnRzCisgICAgUFJFViwgTkVYVCwgS0VZLCBSRVNVTFQgPSAwLCAxLCAyLCAzICAgIyBuYW1lcyBmb3IgdGhlIGxpbmsgZmllbGRzCiAKLSAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKLSAgICAgICAga3dkX21hcmsgPSAob2JqZWN0KCksKSAgICAgICAgICAjIHNlcGFyYXRlcyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKLSAgICAgICAgbG9jayA9IExvY2soKSAgICAgICAgICAgICAgICAgICAjIG5lZWRlZCBiZWNhdXNlIE9yZGVyZWREaWN0IGlzbid0IHRocmVhZHNhZmUKKyAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKIAotICAgICAgICBpZiBtYXhzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBjYWNoZSA9IGRpY3QoKSAgICAgICAgICAgICAgIyBzaW1wbGUgY2FjaGUgd2l0aG91dCBvcmRlcmluZyBvciBzaXplIGxpbWl0CisgICAgICAgIGNhY2hlID0ge30KKyAgICAgICAgaGl0cyA9IG1pc3NlcyA9IGN1cnJzaXplID0gMAorICAgICAgICBmdWxsID0gRmFsc2UKKyAgICAgICAgY2FjaGVfZ2V0ID0gY2FjaGUuZ2V0ICAgICMgYm91bmQgbWV0aG9kIHRvIGxvb2t1cCBhIGtleSBvciByZXR1cm4gTm9uZQorICAgICAgICBsb2NrID0gTG9jaygpICAgICAgICAgICAgIyBiZWNhdXNlIGxpbmtlZGxpc3QgdXBkYXRlcyBhcmVuJ3QgdGhyZWFkc2FmZQorICAgICAgICByb290ID0gW10gICAgICAgICAgICAgICAgIyByb290IG9mIHRoZSBjaXJjdWxhciBkb3VibHkgbGlua2VkIGxpc3QKKyAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXSAgICAgIyBpbml0aWFsaXplIGJ5IHBvaW50aW5nIHRvIHNlbGYKIAotICAgICAgICAgICAgQHdyYXBzKHVzZXJfZnVuY3Rpb24pCisgICAgICAgIGlmIG1heHNpemUgPT0gMDoKKwogICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCi0gICAgICAgICAgICAgICAga2V5ID0gYXJncwotICAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgIGtleSArPSBrd2RfbWFyayArIHR1cGxlKHNvcnRlZChrd2RzLml0ZW1zKCkpKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVba2V5XQorICAgICAgICAgICAgICAgICMgbm8gY2FjaGluZywganVzdCBhIHN0YXRpc3RpY3MgdXBkYXRlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsCisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbWlzc2VzCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgIGVsaWYgbWF4c2l6ZSBpcyBOb25lOgorCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICAjIHNpbXBsZSBjYWNoaW5nIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAorICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgY3VycnNpemUKKyAgICAgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZV9nZXQoa2V5LCBzZW50aW5lbCkKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IHNlbnRpbmVsOgogICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gcmVzdWx0CiAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgICAgICBjdXJyc2l6ZSArPSAxCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2FjaGUgPSBPcmRlcmVkRGljdCgpICAgICAgICAgICAjIG9yZGVyZWQgbGVhc3QgcmVjZW50IHRvIG1vc3QgcmVjZW50Ci0gICAgICAgICAgICBjYWNoZV9wb3BpdGVtID0gY2FjaGUucG9waXRlbQotICAgICAgICAgICAgY2FjaGVfcmVuZXcgPSBjYWNoZS5tb3ZlX3RvX2VuZAogCi0gICAgICAgICAgICBAd3JhcHModXNlcl9mdW5jdGlvbikKKyAgICAgICAgZWxzZToKKwogICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCi0gICAgICAgICAgICAgICAga2V5ID0gYXJncwotICAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgIGtleSArPSBrd2RfbWFyayArIHR1cGxlKHNvcnRlZChrd2RzLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICMgc2l6ZSBsaW1pdGVkIGNhY2hpbmcgdGhhdCB0cmFja3MgYWNjZXNzZXMgYnkgcmVjZW5jeQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJvb3QsIGhpdHMsIG1pc3NlcywgY3VycnNpemUsIGZ1bGwKKyAgICAgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKICAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3JlbmV3KGtleSkgICAgIyByZWNvcmQgcmVjZW50IHVzZSBvZiB0aGlzIGtleQorICAgICAgICAgICAgICAgICAgICBsaW5rID0gY2FjaGVfZ2V0KGtleSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbW92ZSB0aGUgbGluayB0byB0aGUgZnJvbnQgb2YgdGhlIGNpcmN1bGFyIHF1ZXVlCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXYsIGxpbmtfbmV4dCwga2V5LCByZXN1bHQgPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXZbTkVYVF0gPSBsaW5rX25leHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfbmV4dFtQUkVWXSA9IGxpbmtfcHJldgorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gbGluaworICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tQUkVWXSA9IGxhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290CiAgICAgICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQgICAgICMgcmVjb3JkIHJlY2VudCB1c2Ugb2YgdGhpcyBrZXkKKyAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgc2luY2UgdGhlIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlzIGFscmVhZHkgZG9uZSwgd2UgbmVlZCBvbmx5IHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBmdWxsOgorICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2Ugcm9vdCB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbUkVTVUxUXSA9IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCA9IHJvb3RbTkVYVF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtyb290W0tFWV1dCisgICAgICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSByb290W1JFU1VMVF0gPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQorICAgICAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJzaXplICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgPSAoY3VycnNpemUgPT0gbWF4c2l6ZSkKICAgICAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGNhY2hlKSA+IG1heHNpemU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9wb3BpdGVtKDApICAgICMgcHVyZ2UgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgICAgICBkZWYgY2FjaGVfaW5mbygpOgogICAgICAgICAgICAgIiIiUmVwb3J0IGNhY2hlIHN0YXRpc3RpY3MiIiIKICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGxlbihjYWNoZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9DYWNoZUluZm8oaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSkKIAogICAgICAgICBkZWYgY2FjaGVfY2xlYXIoKToKICAgICAgICAgICAgICIiIkNsZWFyIHRoZSBjYWNoZSBhbmQgY2FjaGUgc3RhdGlzdGljcyIiIgotICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCisgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGN1cnJzaXplLCBmdWxsCiAgICAgICAgICAgICB3aXRoIGxvY2s6CiAgICAgICAgICAgICAgICAgY2FjaGUuY2xlYXIoKQotICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCisgICAgICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQorICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSBjdXJyc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICBmdWxsID0gRmFsc2UKIAogICAgICAgICB3cmFwcGVyLmNhY2hlX2luZm8gPSBjYWNoZV9pbmZvCiAgICAgICAgIHdyYXBwZXIuY2FjaGVfY2xlYXIgPSBjYWNoZV9jbGVhcgotICAgICAgICByZXR1cm4gd3JhcHBlcgorICAgICAgICByZXR1cm4gdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgdXNlcl9mdW5jdGlvbikKIAogICAgIHJldHVybiBkZWNvcmF0aW5nX2Z1bmN0aW9uCmRpZmYgLS1naXQgYS9MaWIvZ2V0b3B0LnB5IGIvTGliL2dldG9wdC5weQppbmRleCA5ODA4NjFkLi4zZDZlY2JkIDEwMDY0NAotLS0gYS9MaWIvZ2V0b3B0LnB5CisrKyBiL0xpYi9nZXRvcHQucHkKQEAgLTE5LDcgKzE5LDcgQEAKICMgR2Vycml0IEhvbGwgPGdlcnJpdEBubC5saW51eC5vcmc+IG1vdmVkIHRoZSBzdHJpbmctYmFzZWQgZXhjZXB0aW9ucwogIyB0byBjbGFzcy1iYXNlZCBleGNlcHRpb25zLgogIwotIyBQZXRlciDDg8KFc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPiBhZGRlZCBnbnVfZ2V0b3B0KCkuCisjIFBldGVyIMOFc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPiBhZGRlZCBnbnVfZ2V0b3B0KCkuCiAjCiAjIFRPRE8gZm9yIGdudV9nZXRvcHQoKToKICMKQEAgLTM0LDYgKzM0LDExIEBACiBfX2FsbF9fID0gWyJHZXRvcHRFcnJvciIsImVycm9yIiwiZ2V0b3B0IiwiZ251X2dldG9wdCJdCiAKIGltcG9ydCBvcwordHJ5OgorICAgIGZyb20gZ2V0dGV4dCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBCb290c3RyYXBwaW5nIFB5dGhvbjogZ2V0dGV4dCdzIGRlcGVuZGVuY2llcyBub3QgYnVpbHQgeWV0CisgICAgZGVmIF8ocyk6IHJldHVybiBzCiAKIGNsYXNzIEdldG9wdEVycm9yKEV4Y2VwdGlvbik6CiAgICAgb3B0ID0gJycKQEAgLTE1MywxMCArMTU4LDEwIEBACiAgICAgaWYgaGFzX2FyZzoKICAgICAgICAgaWYgb3B0YXJnIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0tJXMgcmVxdWlyZXMgYXJndW1lbnQnICUgb3B0LCBvcHQpCisgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0tJXMgcmVxdWlyZXMgYXJndW1lbnQnKSAlIG9wdCwgb3B0KQogICAgICAgICAgICAgb3B0YXJnLCBhcmdzID0gYXJnc1swXSwgYXJnc1sxOl0KICAgICBlbGlmIG9wdGFyZyBpcyBub3QgTm9uZToKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG11c3Qgbm90IGhhdmUgYW4gYXJndW1lbnQnICUgb3B0LCBvcHQpCisgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG11c3Qgbm90IGhhdmUgYW4gYXJndW1lbnQnKSAlIG9wdCwgb3B0KQogICAgIG9wdHMuYXBwZW5kKCgnLS0nICsgb3B0LCBvcHRhcmcgb3IgJycpKQogICAgIHJldHVybiBvcHRzLCBhcmdzCiAKQEAgLTE2Niw3ICsxNzEsNyBAQAogZGVmIGxvbmdfaGFzX2FyZ3Mob3B0LCBsb25nb3B0cyk6CiAgICAgcG9zc2liaWxpdGllcyA9IFtvIGZvciBvIGluIGxvbmdvcHRzIGlmIG8uc3RhcnRzd2l0aChvcHQpXQogICAgIGlmIG5vdCBwb3NzaWJpbGl0aWVzOgotICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0tJXMgbm90IHJlY29nbml6ZWQnICUgb3B0LCBvcHQpCisgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG5vdCByZWNvZ25pemVkJykgJSBvcHQsIG9wdCkKICAgICAjIElzIHRoZXJlIGFuIGV4YWN0IG1hdGNoPwogICAgIGlmIG9wdCBpbiBwb3NzaWJpbGl0aWVzOgogICAgICAgICByZXR1cm4gRmFsc2UsIG9wdApAQCAtMTc2LDcgKzE4MSw3IEBACiAgICAgaWYgbGVuKHBvc3NpYmlsaXRpZXMpID4gMToKICAgICAgICAgIyBYWFggc2luY2UgcG9zc2liaWxpdGllcyBjb250YWlucyBhbGwgdmFsaWQgY29udGludWF0aW9ucywgbWlnaHQgYmUKICAgICAgICAgIyBuaWNlIHRvIHdvcmsgdGhlbSBpbnRvIHRoZSBlcnJvciBtc2cKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG5vdCBhIHVuaXF1ZSBwcmVmaXgnICUgb3B0LCBvcHQpCisgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIG5vdCBhIHVuaXF1ZSBwcmVmaXgnKSAlIG9wdCwgb3B0KQogICAgIGFzc2VydCBsZW4ocG9zc2liaWxpdGllcykgPT0gMQogICAgIHVuaXF1ZV9tYXRjaCA9IHBvc3NpYmlsaXRpZXNbMF0KICAgICBoYXNfYXJnID0gdW5pcXVlX21hdGNoLmVuZHN3aXRoKCc9JykKQEAgLTE5MCw3ICsxOTUsNyBAQAogICAgICAgICBpZiBzaG9ydF9oYXNfYXJnKG9wdCwgc2hvcnRvcHRzKToKICAgICAgICAgICAgIGlmIG9wdHN0cmluZyA9PSAnJzoKICAgICAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtJXMgcmVxdWlyZXMgYXJndW1lbnQnICUgb3B0LAorICAgICAgICAgICAgICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLSVzIHJlcXVpcmVzIGFyZ3VtZW50JykgJSBvcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdCkKICAgICAgICAgICAgICAgICBvcHRzdHJpbmcsIGFyZ3MgPSBhcmdzWzBdLCBhcmdzWzE6XQogICAgICAgICAgICAgb3B0YXJnLCBvcHRzdHJpbmcgPSBvcHRzdHJpbmcsICcnCkBAIC0yMDMsNyArMjA4LDcgQEAKICAgICBmb3IgaSBpbiByYW5nZShsZW4oc2hvcnRvcHRzKSk6CiAgICAgICAgIGlmIG9wdCA9PSBzaG9ydG9wdHNbaV0gIT0gJzonOgogICAgICAgICAgICAgcmV0dXJuIHNob3J0b3B0cy5zdGFydHN3aXRoKCc6JywgaSsxKQotICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLSVzIG5vdCByZWNvZ25pemVkJyAlIG9wdCwgb3B0KQorICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtJXMgbm90IHJlY29nbml6ZWQnKSAlIG9wdCwgb3B0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi9nZXRwYXNzLnB5IGIvTGliL2dldHBhc3MucHkKaW5kZXggZGMwMmJkMS4uMDA0NDc0MiAxMDA2NDQKLS0tIGEvTGliL2dldHBhc3MucHkKKysrIGIvTGliL2dldHBhc3MucHkKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRjc2V0YXR0cl9mbGFncywgb2xkKQogICAgICAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpICAjIGlzc3VlNzIwOAotICAgICAgICBleGNlcHQgdGVybWlvcy5lcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgdGVybWlvcy5lcnJvcjoKICAgICAgICAgICAgIGlmIHBhc3N3ZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAjIF9yYXdfaW5wdXQgc3VjY2VlZGVkLiAgVGhlIGZpbmFsIHRjc2V0YXR0ciBmYWlsZWQuICBSZXJhaXNlCiAgICAgICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIHRlcm1pbmFsIGluIGFuIHVua25vd24gc3RhdGUuCkBAIC0xNDUsOCArMTQ1LDYgQEAKIAogICAgICIiIgogCi0gICAgaW1wb3J0IG9zCi0KICAgICBmb3IgbmFtZSBpbiAoJ0xPR05BTUUnLCAnVVNFUicsICdMTkFNRScsICdVU0VSTkFNRScpOgogICAgICAgICB1c2VyID0gb3MuZW52aXJvbi5nZXQobmFtZSkKICAgICAgICAgaWYgdXNlcjoKZGlmZiAtLWdpdCBhL0xpYi9nZXR0ZXh0LnB5IGIvTGliL2dldHRleHQucHkKaW5kZXggMjU2ZTMzMS4uZTQzZjA0NCAxMDA2NDQKLS0tIGEvTGliL2dldHRleHQucHkKKysrIGIvTGliL2dldHRleHQucHkKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAgICAgJ2RnZXR0ZXh0JywgJ2RuZ2V0dGV4dCcsICdnZXR0ZXh0JywgJ25nZXR0ZXh0JywKICAgICAgICAgICAgXQogCi1fZGVmYXVsdF9sb2NhbGVkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ3NoYXJlJywgJ2xvY2FsZScpCitfZGVmYXVsdF9sb2NhbGVkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAnc2hhcmUnLCAnbG9jYWxlJykKIAogCiBkZWYgYzJweShwbHVyYWwpOgpkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCA0MDMwNDBiLi45OThhOGU1IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtMTYsMTcgKzE2LDQ5IEBACiAKIFJFQUQsIFdSSVRFID0gMSwgMgogCi1kZWYgVTMyKGkpOgotICAgICIiIlJldHVybiBpIGFzIGFuIHVuc2lnbmVkIGludGVnZXIsIGFzc3VtaW5nIGl0IGZpdHMgaW4gMzIgYml0cy4KLSAgICBJZiBpdCdzID49IDJHQiB3aGVuIHZpZXdlZCBhcyBhIDMyLWJpdCB1bnNpZ25lZCBpbnQsIHJldHVybiBhIGxvbmcuCi0gICAgIiIiCi0gICAgaWYgaSA8IDA6Ci0gICAgICAgIGkgKz0gMSA8PCAzMgotICAgIHJldHVybiBpCitkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTksCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGEgZ3ppcC1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KIAotZGVmIExPV1UzMihpKToKLSAgICAiIiJSZXR1cm4gdGhlIGxvdy1vcmRlciAzMiBiaXRzLCBhcyBhIG5vbi1uZWdhdGl2ZSBpbnQiIiIKLSAgICByZXR1cm4gaSAmIDB4RkZGRkZGRkYKKyAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKKyAgICBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJhIiBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwKKyAgICBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgbW9kZSBpcyAicmIiLCBhbmQgdGhlCisgICAgZGVmYXVsdCBjb21wcmVzc2xldmVsIGlzIDkuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgR3ppcEZpbGUgY29uc3RydWN0b3I6CisgICAgR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzCisgICAgYW5kIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICAgRm9yIHRleHQgbW9kZSwgYSBHemlwRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBnel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShmaWxlbmFtZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCkKKyAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CisgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoTm9uZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCwgZmlsZW5hbWUpCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKIAogZGVmIHdyaXRlMzJ1KG91dHB1dCwgdmFsdWUpOgogICAgICMgVGhlIEwgZm9ybWF0IHdyaXRlcyB0aGUgYml0IHBhdHRlcm4gY29ycmVjdGx5IHdoZXRoZXIgc2lnbmVkCkBAIC0zNiwxNSArNjgsNiBAQAogZGVmIHJlYWQzMihpbnB1dCk6CiAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soIjxJIiwgaW5wdXQucmVhZCg0KSlbMF0KIAotZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05KToKLSAgICAiIiJTaG9ydGhhbmQgZm9yIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4KLQotICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZDsgbW9kZSBkZWZhdWx0cyB0byAncmInCi0gICAgYW5kIGNvbXByZXNzbGV2ZWwgZGVmYXVsdHMgdG8gOS4KLQotICAgICIiIgotICAgIHJldHVybiBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkKLQogY2xhc3MgX1BhZGRlZEZpbGU6CiAgICAgIiIiTWluaW1hbCByZWFkLW9ubHkgZmlsZSBvYmplY3QgdGhhdCBwcmVwZW5kcyBhIHN0cmluZyB0byB0aGUgY29udGVudHMKICAgICBvZiBhbiBhY3R1YWwgZmlsZS4gU2hvdWxkbid0IGJlIHVzZWQgb3V0c2lkZSBvZiBnemlwLnB5LCBhcyBpdCBsYWNrcwpAQCAtMTA2LDcgKzEyOSw3IEBACiAgICAgdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcmVhZGludG8oKSBhbmQgdHJ1bmNhdGUoKSBtZXRob2RzLgogCiAgICAgVGhpcyBjbGFzcyBvbmx5IHN1cHBvcnRzIG9wZW5pbmcgZmlsZXMgaW4gYmluYXJ5IG1vZGUuIElmIHlvdSBuZWVkIHRvIG9wZW4gYQotICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHdyYXAgeW91ciBHemlwRmlsZSB3aXRoIGFuIGlvLlRleHRJT1dyYXBwZXIuCisgICAgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgdXNlIHRoZSBnemlwLm9wZW4oKSBmdW5jdGlvbi4KIAogICAgICIiIgogCkBAIC0xNTQsNyArMTc3LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbW9kZSBhbmQgKCd0JyBpbiBtb2RlIG9yICdVJyBpbiBtb2RlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIk1vZGUgIiArIG1vZGUgKyAiIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAgICAgICAgIGlmIG1vZGUgYW5kICdiJyBub3QgaW4gbW9kZToKICAgICAgICAgICAgIG1vZGUgKz0gJ2InCiAgICAgICAgIGlmIGZpbGVvYmogaXMgTm9uZToKQEAgLTE2NCwxMCArMTg3LDkgQEAKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gJycKICAgICAgICAgaWYgbW9kZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgaGFzYXR0cihmaWxlb2JqLCAnbW9kZScpOiBtb2RlID0gZmlsZW9iai5tb2RlCi0gICAgICAgICAgICBlbHNlOiBtb2RlID0gJ3JiJworICAgICAgICAgICAgbW9kZSA9IGdldGF0dHIoZmlsZW9iaiwgJ21vZGUnLCAncmInKQogCi0gICAgICAgIGlmIG1vZGVbMDoxXSA9PSAncic6CisgICAgICAgIGlmIG1vZGUuc3RhcnRzd2l0aCgncicpOgogICAgICAgICAgICAgc2VsZi5tb2RlID0gUkVBRAogICAgICAgICAgICAgIyBTZXQgZmxhZyBpbmRpY2F0aW5nIHN0YXJ0IG9mIGEgbmV3IG1lbWJlcgogICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKQEAgLTE4Miw3ICsyMDQsNyBAQAogICAgICAgICAgICAgc2VsZi5taW5fcmVhZHNpemUgPSAxMDAKICAgICAgICAgICAgIGZpbGVvYmogPSBfUGFkZGVkRmlsZShmaWxlb2JqKQogCi0gICAgICAgIGVsaWYgbW9kZVswOjFdID09ICd3JyBvciBtb2RlWzA6MV0gPT0gJ2EnOgorICAgICAgICBlbGlmIG1vZGUuc3RhcnRzd2l0aCgoJ3cnLCAnYScpKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFdSSVRFCiAgICAgICAgICAgICBzZWxmLl9pbml0X3dyaXRlKGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5jb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooY29tcHJlc3NsZXZlbCwKQEAgLTE5MSw3ICsyMTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZfTUVNX0xFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIk1vZGUgIiArIG1vZGUgKyAiIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKICAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagogICAgICAgICBzZWxmLm9mZnNldCA9IDAKQEAgLTM1NCw2ICszNzYsMzEgQEAKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQogICAgICAgICByZXR1cm4gY2h1bmsKIAorICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CisgICAgICAgICAgICBpbXBvcnQgZXJybm8KKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUJBREYsICJyZWFkMSgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKKworICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLmZpbGVvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZvciBjZXJ0YWluIGlucHV0IGRhdGEsIGEgc2luZ2xlIGNhbGwgdG8gX3JlYWQoKSBtYXkgbm90IHJldHVybgorICAgICAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KKyAgICAgICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZCgpCisgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgc2l6ZSA8IDAgb3Igc2l6ZSA+IHNlbGYuZXh0cmFzaXplOgorICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZXh0cmFzaXplCisKKyAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKKyAgICAgICAgY2h1bmsgPSBzZWxmLmV4dHJhYnVmW29mZnNldDogb2Zmc2V0ICsgc2l6ZV0KKyAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gc2l6ZQorICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCisgICAgICAgIHJldHVybiBjaHVuaworCiAgICAgZGVmIHBlZWsoc2VsZiwgbik6CiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCkBAIC0zNjcsOCArNDE0LDEwIEBACiAgICAgICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gYicnCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkKG1heChuLCAxMDI0KSkKKyAgICAgICAgICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGRvbid0IHJldHVybiBiIiIgaWYgd2UgaGF2ZW4ndCByZWFjaGVkIEVPRi4KKyAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLmV4dHJhc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAjIDEwMjQgaXMgdGhlIHNhbWUgYnVmZmVyaW5nIGhldXJpc3RpYyB1c2VkIGluIHJlYWQoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkKG1heChuLCAxMDI0KSkKICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0CmRpZmYgLS1naXQgYS9MaWIvaG1hYy5weSBiL0xpYi9obWFjLnB5CmluZGV4IDk1NmZjNjUuLjQyOTdhNzEgMTAwNjQ0Ci0tLSBhL0xpYi9obWFjLnB5CisrKyBiL0xpYi9obWFjLnB5CkBAIC00LDYgKzQsNyBAQAogIiIiCiAKIGltcG9ydCB3YXJuaW5ncyBhcyBfd2FybmluZ3MKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IF9jb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2RpZ2VzdAogCiB0cmFuc181QyA9IGJ5dGVzKCh4IF4gMHg1QykgZm9yIHggaW4gcmFuZ2UoMjU2KSkKIHRyYW5zXzM2ID0gYnl0ZXMoKHggXiAweDM2KSBmb3IgeCBpbiByYW5nZSgyNTYpKQpAQCAtMTMsNiArMTQsNyBAQAogZGlnZXN0X3NpemUgPSBOb25lCiAKIAorCiBjbGFzcyBITUFDOgogICAgICIiIlJGQyAyMTA0IEhNQUMgY2xhc3MuICBBbHNvIGNvbXBsaWVzIHdpdGggUkZDIDQyMzEuCiAKQEAgLTMzLDcgKzM1LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBidXQgZ290ICVyIiAlIHR5cGUoa2V5KS5fX25hbWVfXykKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5OiBleHBlY3RlZCBieXRlcywgYnV0IGdvdCAlciIgJSB0eXBlKGtleSkuX19uYW1lX18pCiAKICAgICAgICAgaWYgZGlnZXN0bW9kIGlzIE5vbmU6CiAgICAgICAgICAgICBpbXBvcnQgaGFzaGxpYgpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvZW50aXRpZXMucHkgYi9MaWIvaHRtbC9lbnRpdGllcy5weQppbmRleCBlMmI3YmYxLi5lODkxYWQ2IDEwMDY0NAotLS0gYS9MaWIvaHRtbC9lbnRpdGllcy5weQorKysgYi9MaWIvaHRtbC9lbnRpdGllcy5weQpAQCAtMjU2LDYgKzI1NiwyMjQyIEBACiAgICAgJ3p3bmonOiAgICAgMHgyMDBjLCAjIHplcm8gd2lkdGggbm9uLWpvaW5lciwgVSsyMDBDIE5FVyBSRkMgMjA3MAogfQogCisKKyMgbWFwcyB0aGUgSFRNTDUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgdG8gdGhlIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocykKK2h0bWw1ID0geworICAgICdBYWN1dGUnOiAnXHhjMScsCisgICAgJ2FhY3V0ZSc6ICdceGUxJywKKyAgICAnQWFjdXRlOyc6ICdceGMxJywKKyAgICAnYWFjdXRlOyc6ICdceGUxJywKKyAgICAnQWJyZXZlOyc6ICdcdTAxMDInLAorICAgICdhYnJldmU7JzogJ1x1MDEwMycsCisgICAgJ2FjOyc6ICdcdTIyM2UnLAorICAgICdhY2Q7JzogJ1x1MjIzZicsCisgICAgJ2FjRTsnOiAnXHUyMjNlXHUwMzMzJywKKyAgICAnQWNpcmMnOiAnXHhjMicsCisgICAgJ2FjaXJjJzogJ1x4ZTInLAorICAgICdBY2lyYzsnOiAnXHhjMicsCisgICAgJ2FjaXJjOyc6ICdceGUyJywKKyAgICAnYWN1dGUnOiAnXHhiNCcsCisgICAgJ2FjdXRlOyc6ICdceGI0JywKKyAgICAnQWN5Oyc6ICdcdTA0MTAnLAorICAgICdhY3k7JzogJ1x1MDQzMCcsCisgICAgJ0FFbGlnJzogJ1x4YzYnLAorICAgICdhZWxpZyc6ICdceGU2JywKKyAgICAnQUVsaWc7JzogJ1x4YzYnLAorICAgICdhZWxpZzsnOiAnXHhlNicsCisgICAgJ2FmOyc6ICdcdTIwNjEnLAorICAgICdBZnI7JzogJ1xVMDAwMWQ1MDQnLAorICAgICdhZnI7JzogJ1xVMDAwMWQ1MWUnLAorICAgICdBZ3JhdmUnOiAnXHhjMCcsCisgICAgJ2FncmF2ZSc6ICdceGUwJywKKyAgICAnQWdyYXZlOyc6ICdceGMwJywKKyAgICAnYWdyYXZlOyc6ICdceGUwJywKKyAgICAnYWxlZnN5bTsnOiAnXHUyMTM1JywKKyAgICAnYWxlcGg7JzogJ1x1MjEzNScsCisgICAgJ0FscGhhOyc6ICdcdTAzOTEnLAorICAgICdhbHBoYTsnOiAnXHUwM2IxJywKKyAgICAnQW1hY3I7JzogJ1x1MDEwMCcsCisgICAgJ2FtYWNyOyc6ICdcdTAxMDEnLAorICAgICdhbWFsZzsnOiAnXHUyYTNmJywKKyAgICAnQU1QJzogJyYnLAorICAgICdhbXAnOiAnJicsCisgICAgJ0FNUDsnOiAnJicsCisgICAgJ2FtcDsnOiAnJicsCisgICAgJ0FuZDsnOiAnXHUyYTUzJywKKyAgICAnYW5kOyc6ICdcdTIyMjcnLAorICAgICdhbmRhbmQ7JzogJ1x1MmE1NScsCisgICAgJ2FuZGQ7JzogJ1x1MmE1YycsCisgICAgJ2FuZHNsb3BlOyc6ICdcdTJhNTgnLAorICAgICdhbmR2Oyc6ICdcdTJhNWEnLAorICAgICdhbmc7JzogJ1x1MjIyMCcsCisgICAgJ2FuZ2U7JzogJ1x1MjlhNCcsCisgICAgJ2FuZ2xlOyc6ICdcdTIyMjAnLAorICAgICdhbmdtc2Q7JzogJ1x1MjIyMScsCisgICAgJ2FuZ21zZGFhOyc6ICdcdTI5YTgnLAorICAgICdhbmdtc2RhYjsnOiAnXHUyOWE5JywKKyAgICAnYW5nbXNkYWM7JzogJ1x1MjlhYScsCisgICAgJ2FuZ21zZGFkOyc6ICdcdTI5YWInLAorICAgICdhbmdtc2RhZTsnOiAnXHUyOWFjJywKKyAgICAnYW5nbXNkYWY7JzogJ1x1MjlhZCcsCisgICAgJ2FuZ21zZGFnOyc6ICdcdTI5YWUnLAorICAgICdhbmdtc2RhaDsnOiAnXHUyOWFmJywKKyAgICAnYW5ncnQ7JzogJ1x1MjIxZicsCisgICAgJ2FuZ3J0dmI7JzogJ1x1MjJiZScsCisgICAgJ2FuZ3J0dmJkOyc6ICdcdTI5OWQnLAorICAgICdhbmdzcGg7JzogJ1x1MjIyMicsCisgICAgJ2FuZ3N0Oyc6ICdceGM1JywKKyAgICAnYW5nemFycjsnOiAnXHUyMzdjJywKKyAgICAnQW9nb247JzogJ1x1MDEwNCcsCisgICAgJ2FvZ29uOyc6ICdcdTAxMDUnLAorICAgICdBb3BmOyc6ICdcVTAwMDFkNTM4JywKKyAgICAnYW9wZjsnOiAnXFUwMDAxZDU1MicsCisgICAgJ2FwOyc6ICdcdTIyNDgnLAorICAgICdhcGFjaXI7JzogJ1x1MmE2ZicsCisgICAgJ2FwRTsnOiAnXHUyYTcwJywKKyAgICAnYXBlOyc6ICdcdTIyNGEnLAorICAgICdhcGlkOyc6ICdcdTIyNGInLAorICAgICdhcG9zOyc6ICInIiwKKyAgICAnQXBwbHlGdW5jdGlvbjsnOiAnXHUyMDYxJywKKyAgICAnYXBwcm94Oyc6ICdcdTIyNDgnLAorICAgICdhcHByb3hlcTsnOiAnXHUyMjRhJywKKyAgICAnQXJpbmcnOiAnXHhjNScsCisgICAgJ2FyaW5nJzogJ1x4ZTUnLAorICAgICdBcmluZzsnOiAnXHhjNScsCisgICAgJ2FyaW5nOyc6ICdceGU1JywKKyAgICAnQXNjcjsnOiAnXFUwMDAxZDQ5YycsCisgICAgJ2FzY3I7JzogJ1xVMDAwMWQ0YjYnLAorICAgICdBc3NpZ247JzogJ1x1MjI1NCcsCisgICAgJ2FzdDsnOiAnKicsCisgICAgJ2FzeW1wOyc6ICdcdTIyNDgnLAorICAgICdhc3ltcGVxOyc6ICdcdTIyNGQnLAorICAgICdBdGlsZGUnOiAnXHhjMycsCisgICAgJ2F0aWxkZSc6ICdceGUzJywKKyAgICAnQXRpbGRlOyc6ICdceGMzJywKKyAgICAnYXRpbGRlOyc6ICdceGUzJywKKyAgICAnQXVtbCc6ICdceGM0JywKKyAgICAnYXVtbCc6ICdceGU0JywKKyAgICAnQXVtbDsnOiAnXHhjNCcsCisgICAgJ2F1bWw7JzogJ1x4ZTQnLAorICAgICdhd2NvbmludDsnOiAnXHUyMjMzJywKKyAgICAnYXdpbnQ7JzogJ1x1MmExMScsCisgICAgJ2JhY2tjb25nOyc6ICdcdTIyNGMnLAorICAgICdiYWNrZXBzaWxvbjsnOiAnXHUwM2Y2JywKKyAgICAnYmFja3ByaW1lOyc6ICdcdTIwMzUnLAorICAgICdiYWNrc2ltOyc6ICdcdTIyM2QnLAorICAgICdiYWNrc2ltZXE7JzogJ1x1MjJjZCcsCisgICAgJ0JhY2tzbGFzaDsnOiAnXHUyMjE2JywKKyAgICAnQmFydjsnOiAnXHUyYWU3JywKKyAgICAnYmFydmVlOyc6ICdcdTIyYmQnLAorICAgICdCYXJ3ZWQ7JzogJ1x1MjMwNicsCisgICAgJ2JhcndlZDsnOiAnXHUyMzA1JywKKyAgICAnYmFyd2VkZ2U7JzogJ1x1MjMwNScsCisgICAgJ2Jicms7JzogJ1x1MjNiNScsCisgICAgJ2Jicmt0YnJrOyc6ICdcdTIzYjYnLAorICAgICdiY29uZzsnOiAnXHUyMjRjJywKKyAgICAnQmN5Oyc6ICdcdTA0MTEnLAorICAgICdiY3k7JzogJ1x1MDQzMScsCisgICAgJ2JkcXVvOyc6ICdcdTIwMWUnLAorICAgICdiZWNhdXM7JzogJ1x1MjIzNScsCisgICAgJ0JlY2F1c2U7JzogJ1x1MjIzNScsCisgICAgJ2JlY2F1c2U7JzogJ1x1MjIzNScsCisgICAgJ2JlbXB0eXY7JzogJ1x1MjliMCcsCisgICAgJ2JlcHNpOyc6ICdcdTAzZjYnLAorICAgICdiZXJub3U7JzogJ1x1MjEyYycsCisgICAgJ0Jlcm5vdWxsaXM7JzogJ1x1MjEyYycsCisgICAgJ0JldGE7JzogJ1x1MDM5MicsCisgICAgJ2JldGE7JzogJ1x1MDNiMicsCisgICAgJ2JldGg7JzogJ1x1MjEzNicsCisgICAgJ2JldHdlZW47JzogJ1x1MjI2YycsCisgICAgJ0JmcjsnOiAnXFUwMDAxZDUwNScsCisgICAgJ2JmcjsnOiAnXFUwMDAxZDUxZicsCisgICAgJ2JpZ2NhcDsnOiAnXHUyMmMyJywKKyAgICAnYmlnY2lyYzsnOiAnXHUyNWVmJywKKyAgICAnYmlnY3VwOyc6ICdcdTIyYzMnLAorICAgICdiaWdvZG90Oyc6ICdcdTJhMDAnLAorICAgICdiaWdvcGx1czsnOiAnXHUyYTAxJywKKyAgICAnYmlnb3RpbWVzOyc6ICdcdTJhMDInLAorICAgICdiaWdzcWN1cDsnOiAnXHUyYTA2JywKKyAgICAnYmlnc3RhcjsnOiAnXHUyNjA1JywKKyAgICAnYmlndHJpYW5nbGVkb3duOyc6ICdcdTI1YmQnLAorICAgICdiaWd0cmlhbmdsZXVwOyc6ICdcdTI1YjMnLAorICAgICdiaWd1cGx1czsnOiAnXHUyYTA0JywKKyAgICAnYmlndmVlOyc6ICdcdTIyYzEnLAorICAgICdiaWd3ZWRnZTsnOiAnXHUyMmMwJywKKyAgICAnYmthcm93Oyc6ICdcdTI5MGQnLAorICAgICdibGFja2xvemVuZ2U7JzogJ1x1MjllYicsCisgICAgJ2JsYWNrc3F1YXJlOyc6ICdcdTI1YWEnLAorICAgICdibGFja3RyaWFuZ2xlOyc6ICdcdTI1YjQnLAorICAgICdibGFja3RyaWFuZ2xlZG93bjsnOiAnXHUyNWJlJywKKyAgICAnYmxhY2t0cmlhbmdsZWxlZnQ7JzogJ1x1MjVjMicsCisgICAgJ2JsYWNrdHJpYW5nbGVyaWdodDsnOiAnXHUyNWI4JywKKyAgICAnYmxhbms7JzogJ1x1MjQyMycsCisgICAgJ2JsazEyOyc6ICdcdTI1OTInLAorICAgICdibGsxNDsnOiAnXHUyNTkxJywKKyAgICAnYmxrMzQ7JzogJ1x1MjU5MycsCisgICAgJ2Jsb2NrOyc6ICdcdTI1ODgnLAorICAgICdibmU7JzogJz1cdTIwZTUnLAorICAgICdibmVxdWl2Oyc6ICdcdTIyNjFcdTIwZTUnLAorICAgICdiTm90Oyc6ICdcdTJhZWQnLAorICAgICdibm90Oyc6ICdcdTIzMTAnLAorICAgICdCb3BmOyc6ICdcVTAwMDFkNTM5JywKKyAgICAnYm9wZjsnOiAnXFUwMDAxZDU1MycsCisgICAgJ2JvdDsnOiAnXHUyMmE1JywKKyAgICAnYm90dG9tOyc6ICdcdTIyYTUnLAorICAgICdib3d0aWU7JzogJ1x1MjJjOCcsCisgICAgJ2JveGJveDsnOiAnXHUyOWM5JywKKyAgICAnYm94REw7JzogJ1x1MjU1NycsCisgICAgJ2JveERsOyc6ICdcdTI1NTYnLAorICAgICdib3hkTDsnOiAnXHUyNTU1JywKKyAgICAnYm94ZGw7JzogJ1x1MjUxMCcsCisgICAgJ2JveERSOyc6ICdcdTI1NTQnLAorICAgICdib3hEcjsnOiAnXHUyNTUzJywKKyAgICAnYm94ZFI7JzogJ1x1MjU1MicsCisgICAgJ2JveGRyOyc6ICdcdTI1MGMnLAorICAgICdib3hIOyc6ICdcdTI1NTAnLAorICAgICdib3hoOyc6ICdcdTI1MDAnLAorICAgICdib3hIRDsnOiAnXHUyNTY2JywKKyAgICAnYm94SGQ7JzogJ1x1MjU2NCcsCisgICAgJ2JveGhEOyc6ICdcdTI1NjUnLAorICAgICdib3hoZDsnOiAnXHUyNTJjJywKKyAgICAnYm94SFU7JzogJ1x1MjU2OScsCisgICAgJ2JveEh1Oyc6ICdcdTI1NjcnLAorICAgICdib3hoVTsnOiAnXHUyNTY4JywKKyAgICAnYm94aHU7JzogJ1x1MjUzNCcsCisgICAgJ2JveG1pbnVzOyc6ICdcdTIyOWYnLAorICAgICdib3hwbHVzOyc6ICdcdTIyOWUnLAorICAgICdib3h0aW1lczsnOiAnXHUyMmEwJywKKyAgICAnYm94VUw7JzogJ1x1MjU1ZCcsCisgICAgJ2JveFVsOyc6ICdcdTI1NWMnLAorICAgICdib3h1TDsnOiAnXHUyNTViJywKKyAgICAnYm94dWw7JzogJ1x1MjUxOCcsCisgICAgJ2JveFVSOyc6ICdcdTI1NWEnLAorICAgICdib3hVcjsnOiAnXHUyNTU5JywKKyAgICAnYm94dVI7JzogJ1x1MjU1OCcsCisgICAgJ2JveHVyOyc6ICdcdTI1MTQnLAorICAgICdib3hWOyc6ICdcdTI1NTEnLAorICAgICdib3h2Oyc6ICdcdTI1MDInLAorICAgICdib3hWSDsnOiAnXHUyNTZjJywKKyAgICAnYm94Vmg7JzogJ1x1MjU2YicsCisgICAgJ2JveHZIOyc6ICdcdTI1NmEnLAorICAgICdib3h2aDsnOiAnXHUyNTNjJywKKyAgICAnYm94Vkw7JzogJ1x1MjU2MycsCisgICAgJ2JveFZsOyc6ICdcdTI1NjInLAorICAgICdib3h2TDsnOiAnXHUyNTYxJywKKyAgICAnYm94dmw7JzogJ1x1MjUyNCcsCisgICAgJ2JveFZSOyc6ICdcdTI1NjAnLAorICAgICdib3hWcjsnOiAnXHUyNTVmJywKKyAgICAnYm94dlI7JzogJ1x1MjU1ZScsCisgICAgJ2JveHZyOyc6ICdcdTI1MWMnLAorICAgICdicHJpbWU7JzogJ1x1MjAzNScsCisgICAgJ0JyZXZlOyc6ICdcdTAyZDgnLAorICAgICdicmV2ZTsnOiAnXHUwMmQ4JywKKyAgICAnYnJ2YmFyJzogJ1x4YTYnLAorICAgICdicnZiYXI7JzogJ1x4YTYnLAorICAgICdCc2NyOyc6ICdcdTIxMmMnLAorICAgICdic2NyOyc6ICdcVTAwMDFkNGI3JywKKyAgICAnYnNlbWk7JzogJ1x1MjA0ZicsCisgICAgJ2JzaW07JzogJ1x1MjIzZCcsCisgICAgJ2JzaW1lOyc6ICdcdTIyY2QnLAorICAgICdic29sOyc6ICdcXCcsCisgICAgJ2Jzb2xiOyc6ICdcdTI5YzUnLAorICAgICdic29saHN1YjsnOiAnXHUyN2M4JywKKyAgICAnYnVsbDsnOiAnXHUyMDIyJywKKyAgICAnYnVsbGV0Oyc6ICdcdTIwMjInLAorICAgICdidW1wOyc6ICdcdTIyNGUnLAorICAgICdidW1wRTsnOiAnXHUyYWFlJywKKyAgICAnYnVtcGU7JzogJ1x1MjI0ZicsCisgICAgJ0J1bXBlcTsnOiAnXHUyMjRlJywKKyAgICAnYnVtcGVxOyc6ICdcdTIyNGYnLAorICAgICdDYWN1dGU7JzogJ1x1MDEwNicsCisgICAgJ2NhY3V0ZTsnOiAnXHUwMTA3JywKKyAgICAnQ2FwOyc6ICdcdTIyZDInLAorICAgICdjYXA7JzogJ1x1MjIyOScsCisgICAgJ2NhcGFuZDsnOiAnXHUyYTQ0JywKKyAgICAnY2FwYnJjdXA7JzogJ1x1MmE0OScsCisgICAgJ2NhcGNhcDsnOiAnXHUyYTRiJywKKyAgICAnY2FwY3VwOyc6ICdcdTJhNDcnLAorICAgICdjYXBkb3Q7JzogJ1x1MmE0MCcsCisgICAgJ0NhcGl0YWxEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDUnLAorICAgICdjYXBzOyc6ICdcdTIyMjlcdWZlMDAnLAorICAgICdjYXJldDsnOiAnXHUyMDQxJywKKyAgICAnY2Fyb247JzogJ1x1MDJjNycsCisgICAgJ0NheWxleXM7JzogJ1x1MjEyZCcsCisgICAgJ2NjYXBzOyc6ICdcdTJhNGQnLAorICAgICdDY2Fyb247JzogJ1x1MDEwYycsCisgICAgJ2NjYXJvbjsnOiAnXHUwMTBkJywKKyAgICAnQ2NlZGlsJzogJ1x4YzcnLAorICAgICdjY2VkaWwnOiAnXHhlNycsCisgICAgJ0NjZWRpbDsnOiAnXHhjNycsCisgICAgJ2NjZWRpbDsnOiAnXHhlNycsCisgICAgJ0NjaXJjOyc6ICdcdTAxMDgnLAorICAgICdjY2lyYzsnOiAnXHUwMTA5JywKKyAgICAnQ2NvbmludDsnOiAnXHUyMjMwJywKKyAgICAnY2N1cHM7JzogJ1x1MmE0YycsCisgICAgJ2NjdXBzc207JzogJ1x1MmE1MCcsCisgICAgJ0Nkb3Q7JzogJ1x1MDEwYScsCisgICAgJ2Nkb3Q7JzogJ1x1MDEwYicsCisgICAgJ2NlZGlsJzogJ1x4YjgnLAorICAgICdjZWRpbDsnOiAnXHhiOCcsCisgICAgJ0NlZGlsbGE7JzogJ1x4YjgnLAorICAgICdjZW1wdHl2Oyc6ICdcdTI5YjInLAorICAgICdjZW50JzogJ1x4YTInLAorICAgICdjZW50Oyc6ICdceGEyJywKKyAgICAnQ2VudGVyRG90Oyc6ICdceGI3JywKKyAgICAnY2VudGVyZG90Oyc6ICdceGI3JywKKyAgICAnQ2ZyOyc6ICdcdTIxMmQnLAorICAgICdjZnI7JzogJ1xVMDAwMWQ1MjAnLAorICAgICdDSGN5Oyc6ICdcdTA0MjcnLAorICAgICdjaGN5Oyc6ICdcdTA0NDcnLAorICAgICdjaGVjazsnOiAnXHUyNzEzJywKKyAgICAnY2hlY2ttYXJrOyc6ICdcdTI3MTMnLAorICAgICdDaGk7JzogJ1x1MDNhNycsCisgICAgJ2NoaTsnOiAnXHUwM2M3JywKKyAgICAnY2lyOyc6ICdcdTI1Y2InLAorICAgICdjaXJjOyc6ICdcdTAyYzYnLAorICAgICdjaXJjZXE7JzogJ1x1MjI1NycsCisgICAgJ2NpcmNsZWFycm93bGVmdDsnOiAnXHUyMWJhJywKKyAgICAnY2lyY2xlYXJyb3dyaWdodDsnOiAnXHUyMWJiJywKKyAgICAnY2lyY2xlZGFzdDsnOiAnXHUyMjliJywKKyAgICAnY2lyY2xlZGNpcmM7JzogJ1x1MjI5YScsCisgICAgJ2NpcmNsZWRkYXNoOyc6ICdcdTIyOWQnLAorICAgICdDaXJjbGVEb3Q7JzogJ1x1MjI5OScsCisgICAgJ2NpcmNsZWRSOyc6ICdceGFlJywKKyAgICAnY2lyY2xlZFM7JzogJ1x1MjRjOCcsCisgICAgJ0NpcmNsZU1pbnVzOyc6ICdcdTIyOTYnLAorICAgICdDaXJjbGVQbHVzOyc6ICdcdTIyOTUnLAorICAgICdDaXJjbGVUaW1lczsnOiAnXHUyMjk3JywKKyAgICAnY2lyRTsnOiAnXHUyOWMzJywKKyAgICAnY2lyZTsnOiAnXHUyMjU3JywKKyAgICAnY2lyZm5pbnQ7JzogJ1x1MmExMCcsCisgICAgJ2Npcm1pZDsnOiAnXHUyYWVmJywKKyAgICAnY2lyc2NpcjsnOiAnXHUyOWMyJywKKyAgICAnQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzInLAorICAgICdDbG9zZUN1cmx5RG91YmxlUXVvdGU7JzogJ1x1MjAxZCcsCisgICAgJ0Nsb3NlQ3VybHlRdW90ZTsnOiAnXHUyMDE5JywKKyAgICAnY2x1YnM7JzogJ1x1MjY2MycsCisgICAgJ2NsdWJzdWl0Oyc6ICdcdTI2NjMnLAorICAgICdDb2xvbjsnOiAnXHUyMjM3JywKKyAgICAnY29sb247JzogJzonLAorICAgICdDb2xvbmU7JzogJ1x1MmE3NCcsCisgICAgJ2NvbG9uZTsnOiAnXHUyMjU0JywKKyAgICAnY29sb25lcTsnOiAnXHUyMjU0JywKKyAgICAnY29tbWE7JzogJywnLAorICAgICdjb21tYXQ7JzogJ0AnLAorICAgICdjb21wOyc6ICdcdTIyMDEnLAorICAgICdjb21wZm47JzogJ1x1MjIxOCcsCisgICAgJ2NvbXBsZW1lbnQ7JzogJ1x1MjIwMScsCisgICAgJ2NvbXBsZXhlczsnOiAnXHUyMTAyJywKKyAgICAnY29uZzsnOiAnXHUyMjQ1JywKKyAgICAnY29uZ2RvdDsnOiAnXHUyYTZkJywKKyAgICAnQ29uZ3J1ZW50Oyc6ICdcdTIyNjEnLAorICAgICdDb25pbnQ7JzogJ1x1MjIyZicsCisgICAgJ2NvbmludDsnOiAnXHUyMjJlJywKKyAgICAnQ29udG91ckludGVncmFsOyc6ICdcdTIyMmUnLAorICAgICdDb3BmOyc6ICdcdTIxMDInLAorICAgICdjb3BmOyc6ICdcVTAwMDFkNTU0JywKKyAgICAnY29wcm9kOyc6ICdcdTIyMTAnLAorICAgICdDb3Byb2R1Y3Q7JzogJ1x1MjIxMCcsCisgICAgJ0NPUFknOiAnXHhhOScsCisgICAgJ2NvcHknOiAnXHhhOScsCisgICAgJ0NPUFk7JzogJ1x4YTknLAorICAgICdjb3B5Oyc6ICdceGE5JywKKyAgICAnY29weXNyOyc6ICdcdTIxMTcnLAorICAgICdDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzMnLAorICAgICdjcmFycjsnOiAnXHUyMWI1JywKKyAgICAnQ3Jvc3M7JzogJ1x1MmEyZicsCisgICAgJ2Nyb3NzOyc6ICdcdTI3MTcnLAorICAgICdDc2NyOyc6ICdcVTAwMDFkNDllJywKKyAgICAnY3NjcjsnOiAnXFUwMDAxZDRiOCcsCisgICAgJ2NzdWI7JzogJ1x1MmFjZicsCisgICAgJ2NzdWJlOyc6ICdcdTJhZDEnLAorICAgICdjc3VwOyc6ICdcdTJhZDAnLAorICAgICdjc3VwZTsnOiAnXHUyYWQyJywKKyAgICAnY3Rkb3Q7JzogJ1x1MjJlZicsCisgICAgJ2N1ZGFycmw7JzogJ1x1MjkzOCcsCisgICAgJ2N1ZGFycnI7JzogJ1x1MjkzNScsCisgICAgJ2N1ZXByOyc6ICdcdTIyZGUnLAorICAgICdjdWVzYzsnOiAnXHUyMmRmJywKKyAgICAnY3VsYXJyOyc6ICdcdTIxYjYnLAorICAgICdjdWxhcnJwOyc6ICdcdTI5M2QnLAorICAgICdDdXA7JzogJ1x1MjJkMycsCisgICAgJ2N1cDsnOiAnXHUyMjJhJywKKyAgICAnY3VwYnJjYXA7JzogJ1x1MmE0OCcsCisgICAgJ0N1cENhcDsnOiAnXHUyMjRkJywKKyAgICAnY3VwY2FwOyc6ICdcdTJhNDYnLAorICAgICdjdXBjdXA7JzogJ1x1MmE0YScsCisgICAgJ2N1cGRvdDsnOiAnXHUyMjhkJywKKyAgICAnY3Vwb3I7JzogJ1x1MmE0NScsCisgICAgJ2N1cHM7JzogJ1x1MjIyYVx1ZmUwMCcsCisgICAgJ2N1cmFycjsnOiAnXHUyMWI3JywKKyAgICAnY3VyYXJybTsnOiAnXHUyOTNjJywKKyAgICAnY3VybHllcXByZWM7JzogJ1x1MjJkZScsCisgICAgJ2N1cmx5ZXFzdWNjOyc6ICdcdTIyZGYnLAorICAgICdjdXJseXZlZTsnOiAnXHUyMmNlJywKKyAgICAnY3VybHl3ZWRnZTsnOiAnXHUyMmNmJywKKyAgICAnY3VycmVuJzogJ1x4YTQnLAorICAgICdjdXJyZW47JzogJ1x4YTQnLAorICAgICdjdXJ2ZWFycm93bGVmdDsnOiAnXHUyMWI2JywKKyAgICAnY3VydmVhcnJvd3JpZ2h0Oyc6ICdcdTIxYjcnLAorICAgICdjdXZlZTsnOiAnXHUyMmNlJywKKyAgICAnY3V3ZWQ7JzogJ1x1MjJjZicsCisgICAgJ2N3Y29uaW50Oyc6ICdcdTIyMzInLAorICAgICdjd2ludDsnOiAnXHUyMjMxJywKKyAgICAnY3lsY3R5Oyc6ICdcdTIzMmQnLAorICAgICdEYWdnZXI7JzogJ1x1MjAyMScsCisgICAgJ2RhZ2dlcjsnOiAnXHUyMDIwJywKKyAgICAnZGFsZXRoOyc6ICdcdTIxMzgnLAorICAgICdEYXJyOyc6ICdcdTIxYTEnLAorICAgICdkQXJyOyc6ICdcdTIxZDMnLAorICAgICdkYXJyOyc6ICdcdTIxOTMnLAorICAgICdkYXNoOyc6ICdcdTIwMTAnLAorICAgICdEYXNodjsnOiAnXHUyYWU0JywKKyAgICAnZGFzaHY7JzogJ1x1MjJhMycsCisgICAgJ2Ria2Fyb3c7JzogJ1x1MjkwZicsCisgICAgJ2RibGFjOyc6ICdcdTAyZGQnLAorICAgICdEY2Fyb247JzogJ1x1MDEwZScsCisgICAgJ2RjYXJvbjsnOiAnXHUwMTBmJywKKyAgICAnRGN5Oyc6ICdcdTA0MTQnLAorICAgICdkY3k7JzogJ1x1MDQzNCcsCisgICAgJ0REOyc6ICdcdTIxNDUnLAorICAgICdkZDsnOiAnXHUyMTQ2JywKKyAgICAnZGRhZ2dlcjsnOiAnXHUyMDIxJywKKyAgICAnZGRhcnI7JzogJ1x1MjFjYScsCisgICAgJ0REb3RyYWhkOyc6ICdcdTI5MTEnLAorICAgICdkZG90c2VxOyc6ICdcdTJhNzcnLAorICAgICdkZWcnOiAnXHhiMCcsCisgICAgJ2RlZzsnOiAnXHhiMCcsCisgICAgJ0RlbDsnOiAnXHUyMjA3JywKKyAgICAnRGVsdGE7JzogJ1x1MDM5NCcsCisgICAgJ2RlbHRhOyc6ICdcdTAzYjQnLAorICAgICdkZW1wdHl2Oyc6ICdcdTI5YjEnLAorICAgICdkZmlzaHQ7JzogJ1x1Mjk3ZicsCisgICAgJ0RmcjsnOiAnXFUwMDAxZDUwNycsCisgICAgJ2RmcjsnOiAnXFUwMDAxZDUyMScsCisgICAgJ2RIYXI7JzogJ1x1Mjk2NScsCisgICAgJ2RoYXJsOyc6ICdcdTIxYzMnLAorICAgICdkaGFycjsnOiAnXHUyMWMyJywKKyAgICAnRGlhY3JpdGljYWxBY3V0ZTsnOiAnXHhiNCcsCisgICAgJ0RpYWNyaXRpY2FsRG90Oyc6ICdcdTAyZDknLAorICAgICdEaWFjcml0aWNhbERvdWJsZUFjdXRlOyc6ICdcdTAyZGQnLAorICAgICdEaWFjcml0aWNhbEdyYXZlOyc6ICdgJywKKyAgICAnRGlhY3JpdGljYWxUaWxkZTsnOiAnXHUwMmRjJywKKyAgICAnZGlhbTsnOiAnXHUyMmM0JywKKyAgICAnRGlhbW9uZDsnOiAnXHUyMmM0JywKKyAgICAnZGlhbW9uZDsnOiAnXHUyMmM0JywKKyAgICAnZGlhbW9uZHN1aXQ7JzogJ1x1MjY2NicsCisgICAgJ2RpYW1zOyc6ICdcdTI2NjYnLAorICAgICdkaWU7JzogJ1x4YTgnLAorICAgICdEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDYnLAorICAgICdkaWdhbW1hOyc6ICdcdTAzZGQnLAorICAgICdkaXNpbjsnOiAnXHUyMmYyJywKKyAgICAnZGl2Oyc6ICdceGY3JywKKyAgICAnZGl2aWRlJzogJ1x4ZjcnLAorICAgICdkaXZpZGU7JzogJ1x4ZjcnLAorICAgICdkaXZpZGVvbnRpbWVzOyc6ICdcdTIyYzcnLAorICAgICdkaXZvbng7JzogJ1x1MjJjNycsCisgICAgJ0RKY3k7JzogJ1x1MDQwMicsCisgICAgJ2RqY3k7JzogJ1x1MDQ1MicsCisgICAgJ2RsY29ybjsnOiAnXHUyMzFlJywKKyAgICAnZGxjcm9wOyc6ICdcdTIzMGQnLAorICAgICdkb2xsYXI7JzogJyQnLAorICAgICdEb3BmOyc6ICdcVTAwMDFkNTNiJywKKyAgICAnZG9wZjsnOiAnXFUwMDAxZDU1NScsCisgICAgJ0RvdDsnOiAnXHhhOCcsCisgICAgJ2RvdDsnOiAnXHUwMmQ5JywKKyAgICAnRG90RG90Oyc6ICdcdTIwZGMnLAorICAgICdkb3RlcTsnOiAnXHUyMjUwJywKKyAgICAnZG90ZXFkb3Q7JzogJ1x1MjI1MScsCisgICAgJ0RvdEVxdWFsOyc6ICdcdTIyNTAnLAorICAgICdkb3RtaW51czsnOiAnXHUyMjM4JywKKyAgICAnZG90cGx1czsnOiAnXHUyMjE0JywKKyAgICAnZG90c3F1YXJlOyc6ICdcdTIyYTEnLAorICAgICdkb3VibGViYXJ3ZWRnZTsnOiAnXHUyMzA2JywKKyAgICAnRG91YmxlQ29udG91ckludGVncmFsOyc6ICdcdTIyMmYnLAorICAgICdEb3VibGVEb3Q7JzogJ1x4YTgnLAorICAgICdEb3VibGVEb3duQXJyb3c7JzogJ1x1MjFkMycsCisgICAgJ0RvdWJsZUxlZnRBcnJvdzsnOiAnXHUyMWQwJywKKyAgICAnRG91YmxlTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjFkNCcsCisgICAgJ0RvdWJsZUxlZnRUZWU7JzogJ1x1MmFlNCcsCisgICAgJ0RvdWJsZUxvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmOCcsCisgICAgJ0RvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyN2ZhJywKKyAgICAnRG91YmxlTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmOScsCisgICAgJ0RvdWJsZVJpZ2h0QXJyb3c7JzogJ1x1MjFkMicsCisgICAgJ0RvdWJsZVJpZ2h0VGVlOyc6ICdcdTIyYTgnLAorICAgICdEb3VibGVVcEFycm93Oyc6ICdcdTIxZDEnLAorICAgICdEb3VibGVVcERvd25BcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAnRG91YmxlVmVydGljYWxCYXI7JzogJ1x1MjIyNScsCisgICAgJ0Rvd25BcnJvdzsnOiAnXHUyMTkzJywKKyAgICAnRG93bmFycm93Oyc6ICdcdTIxZDMnLAorICAgICdkb3duYXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ0Rvd25BcnJvd0JhcjsnOiAnXHUyOTEzJywKKyAgICAnRG93bkFycm93VXBBcnJvdzsnOiAnXHUyMWY1JywKKyAgICAnRG93bkJyZXZlOyc6ICdcdTAzMTEnLAorICAgICdkb3duZG93bmFycm93czsnOiAnXHUyMWNhJywKKyAgICAnZG93bmhhcnBvb25sZWZ0Oyc6ICdcdTIxYzMnLAorICAgICdkb3duaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYzInLAorICAgICdEb3duTGVmdFJpZ2h0VmVjdG9yOyc6ICdcdTI5NTAnLAorICAgICdEb3duTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVlJywKKyAgICAnRG93bkxlZnRWZWN0b3I7JzogJ1x1MjFiZCcsCisgICAgJ0Rvd25MZWZ0VmVjdG9yQmFyOyc6ICdcdTI5NTYnLAorICAgICdEb3duUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1ZicsCisgICAgJ0Rvd25SaWdodFZlY3RvcjsnOiAnXHUyMWMxJywKKyAgICAnRG93blJpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTcnLAorICAgICdEb3duVGVlOyc6ICdcdTIyYTQnLAorICAgICdEb3duVGVlQXJyb3c7JzogJ1x1MjFhNycsCisgICAgJ2RyYmthcm93Oyc6ICdcdTI5MTAnLAorICAgICdkcmNvcm47JzogJ1x1MjMxZicsCisgICAgJ2RyY3JvcDsnOiAnXHUyMzBjJywKKyAgICAnRHNjcjsnOiAnXFUwMDAxZDQ5ZicsCisgICAgJ2RzY3I7JzogJ1xVMDAwMWQ0YjknLAorICAgICdEU2N5Oyc6ICdcdTA0MDUnLAorICAgICdkc2N5Oyc6ICdcdTA0NTUnLAorICAgICdkc29sOyc6ICdcdTI5ZjYnLAorICAgICdEc3Ryb2s7JzogJ1x1MDExMCcsCisgICAgJ2RzdHJvazsnOiAnXHUwMTExJywKKyAgICAnZHRkb3Q7JzogJ1x1MjJmMScsCisgICAgJ2R0cmk7JzogJ1x1MjViZicsCisgICAgJ2R0cmlmOyc6ICdcdTI1YmUnLAorICAgICdkdWFycjsnOiAnXHUyMWY1JywKKyAgICAnZHVoYXI7JzogJ1x1Mjk2ZicsCisgICAgJ2R3YW5nbGU7JzogJ1x1MjlhNicsCisgICAgJ0RaY3k7JzogJ1x1MDQwZicsCisgICAgJ2R6Y3k7JzogJ1x1MDQ1ZicsCisgICAgJ2R6aWdyYXJyOyc6ICdcdTI3ZmYnLAorICAgICdFYWN1dGUnOiAnXHhjOScsCisgICAgJ2VhY3V0ZSc6ICdceGU5JywKKyAgICAnRWFjdXRlOyc6ICdceGM5JywKKyAgICAnZWFjdXRlOyc6ICdceGU5JywKKyAgICAnZWFzdGVyOyc6ICdcdTJhNmUnLAorICAgICdFY2Fyb247JzogJ1x1MDExYScsCisgICAgJ2VjYXJvbjsnOiAnXHUwMTFiJywKKyAgICAnZWNpcjsnOiAnXHUyMjU2JywKKyAgICAnRWNpcmMnOiAnXHhjYScsCisgICAgJ2VjaXJjJzogJ1x4ZWEnLAorICAgICdFY2lyYzsnOiAnXHhjYScsCisgICAgJ2VjaXJjOyc6ICdceGVhJywKKyAgICAnZWNvbG9uOyc6ICdcdTIyNTUnLAorICAgICdFY3k7JzogJ1x1MDQyZCcsCisgICAgJ2VjeTsnOiAnXHUwNDRkJywKKyAgICAnZUREb3Q7JzogJ1x1MmE3NycsCisgICAgJ0Vkb3Q7JzogJ1x1MDExNicsCisgICAgJ2VEb3Q7JzogJ1x1MjI1MScsCisgICAgJ2Vkb3Q7JzogJ1x1MDExNycsCisgICAgJ2VlOyc6ICdcdTIxNDcnLAorICAgICdlZkRvdDsnOiAnXHUyMjUyJywKKyAgICAnRWZyOyc6ICdcVTAwMDFkNTA4JywKKyAgICAnZWZyOyc6ICdcVTAwMDFkNTIyJywKKyAgICAnZWc7JzogJ1x1MmE5YScsCisgICAgJ0VncmF2ZSc6ICdceGM4JywKKyAgICAnZWdyYXZlJzogJ1x4ZTgnLAorICAgICdFZ3JhdmU7JzogJ1x4YzgnLAorICAgICdlZ3JhdmU7JzogJ1x4ZTgnLAorICAgICdlZ3M7JzogJ1x1MmE5NicsCisgICAgJ2Vnc2RvdDsnOiAnXHUyYTk4JywKKyAgICAnZWw7JzogJ1x1MmE5OScsCisgICAgJ0VsZW1lbnQ7JzogJ1x1MjIwOCcsCisgICAgJ2VsaW50ZXJzOyc6ICdcdTIzZTcnLAorICAgICdlbGw7JzogJ1x1MjExMycsCisgICAgJ2VsczsnOiAnXHUyYTk1JywKKyAgICAnZWxzZG90Oyc6ICdcdTJhOTcnLAorICAgICdFbWFjcjsnOiAnXHUwMTEyJywKKyAgICAnZW1hY3I7JzogJ1x1MDExMycsCisgICAgJ2VtcHR5Oyc6ICdcdTIyMDUnLAorICAgICdlbXB0eXNldDsnOiAnXHUyMjA1JywKKyAgICAnRW1wdHlTbWFsbFNxdWFyZTsnOiAnXHUyNWZiJywKKyAgICAnZW1wdHl2Oyc6ICdcdTIyMDUnLAorICAgICdFbXB0eVZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFiJywKKyAgICAnZW1zcDEzOyc6ICdcdTIwMDQnLAorICAgICdlbXNwMTQ7JzogJ1x1MjAwNScsCisgICAgJ2Vtc3A7JzogJ1x1MjAwMycsCisgICAgJ0VORzsnOiAnXHUwMTRhJywKKyAgICAnZW5nOyc6ICdcdTAxNGInLAorICAgICdlbnNwOyc6ICdcdTIwMDInLAorICAgICdFb2dvbjsnOiAnXHUwMTE4JywKKyAgICAnZW9nb247JzogJ1x1MDExOScsCisgICAgJ0VvcGY7JzogJ1xVMDAwMWQ1M2MnLAorICAgICdlb3BmOyc6ICdcVTAwMDFkNTU2JywKKyAgICAnZXBhcjsnOiAnXHUyMmQ1JywKKyAgICAnZXBhcnNsOyc6ICdcdTI5ZTMnLAorICAgICdlcGx1czsnOiAnXHUyYTcxJywKKyAgICAnZXBzaTsnOiAnXHUwM2I1JywKKyAgICAnRXBzaWxvbjsnOiAnXHUwMzk1JywKKyAgICAnZXBzaWxvbjsnOiAnXHUwM2I1JywKKyAgICAnZXBzaXY7JzogJ1x1MDNmNScsCisgICAgJ2VxY2lyYzsnOiAnXHUyMjU2JywKKyAgICAnZXFjb2xvbjsnOiAnXHUyMjU1JywKKyAgICAnZXFzaW07JzogJ1x1MjI0MicsCisgICAgJ2Vxc2xhbnRndHI7JzogJ1x1MmE5NicsCisgICAgJ2Vxc2xhbnRsZXNzOyc6ICdcdTJhOTUnLAorICAgICdFcXVhbDsnOiAnXHUyYTc1JywKKyAgICAnZXF1YWxzOyc6ICc9JywKKyAgICAnRXF1YWxUaWxkZTsnOiAnXHUyMjQyJywKKyAgICAnZXF1ZXN0Oyc6ICdcdTIyNWYnLAorICAgICdFcXVpbGlicml1bTsnOiAnXHUyMWNjJywKKyAgICAnZXF1aXY7JzogJ1x1MjI2MScsCisgICAgJ2VxdWl2REQ7JzogJ1x1MmE3OCcsCisgICAgJ2VxdnBhcnNsOyc6ICdcdTI5ZTUnLAorICAgICdlcmFycjsnOiAnXHUyOTcxJywKKyAgICAnZXJEb3Q7JzogJ1x1MjI1MycsCisgICAgJ0VzY3I7JzogJ1x1MjEzMCcsCisgICAgJ2VzY3I7JzogJ1x1MjEyZicsCisgICAgJ2VzZG90Oyc6ICdcdTIyNTAnLAorICAgICdFc2ltOyc6ICdcdTJhNzMnLAorICAgICdlc2ltOyc6ICdcdTIyNDInLAorICAgICdFdGE7JzogJ1x1MDM5NycsCisgICAgJ2V0YTsnOiAnXHUwM2I3JywKKyAgICAnRVRIJzogJ1x4ZDAnLAorICAgICdldGgnOiAnXHhmMCcsCisgICAgJ0VUSDsnOiAnXHhkMCcsCisgICAgJ2V0aDsnOiAnXHhmMCcsCisgICAgJ0V1bWwnOiAnXHhjYicsCisgICAgJ2V1bWwnOiAnXHhlYicsCisgICAgJ0V1bWw7JzogJ1x4Y2InLAorICAgICdldW1sOyc6ICdceGViJywKKyAgICAnZXVybzsnOiAnXHUyMGFjJywKKyAgICAnZXhjbDsnOiAnIScsCisgICAgJ2V4aXN0Oyc6ICdcdTIyMDMnLAorICAgICdFeGlzdHM7JzogJ1x1MjIwMycsCisgICAgJ2V4cGVjdGF0aW9uOyc6ICdcdTIxMzAnLAorICAgICdFeHBvbmVudGlhbEU7JzogJ1x1MjE0NycsCisgICAgJ2V4cG9uZW50aWFsZTsnOiAnXHUyMTQ3JywKKyAgICAnZmFsbGluZ2RvdHNlcTsnOiAnXHUyMjUyJywKKyAgICAnRmN5Oyc6ICdcdTA0MjQnLAorICAgICdmY3k7JzogJ1x1MDQ0NCcsCisgICAgJ2ZlbWFsZTsnOiAnXHUyNjQwJywKKyAgICAnZmZpbGlnOyc6ICdcdWZiMDMnLAorICAgICdmZmxpZzsnOiAnXHVmYjAwJywKKyAgICAnZmZsbGlnOyc6ICdcdWZiMDQnLAorICAgICdGZnI7JzogJ1xVMDAwMWQ1MDknLAorICAgICdmZnI7JzogJ1xVMDAwMWQ1MjMnLAorICAgICdmaWxpZzsnOiAnXHVmYjAxJywKKyAgICAnRmlsbGVkU21hbGxTcXVhcmU7JzogJ1x1MjVmYycsCisgICAgJ0ZpbGxlZFZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFhJywKKyAgICAnZmpsaWc7JzogJ2ZqJywKKyAgICAnZmxhdDsnOiAnXHUyNjZkJywKKyAgICAnZmxsaWc7JzogJ1x1ZmIwMicsCisgICAgJ2ZsdG5zOyc6ICdcdTI1YjEnLAorICAgICdmbm9mOyc6ICdcdTAxOTInLAorICAgICdGb3BmOyc6ICdcVTAwMDFkNTNkJywKKyAgICAnZm9wZjsnOiAnXFUwMDAxZDU1NycsCisgICAgJ0ZvckFsbDsnOiAnXHUyMjAwJywKKyAgICAnZm9yYWxsOyc6ICdcdTIyMDAnLAorICAgICdmb3JrOyc6ICdcdTIyZDQnLAorICAgICdmb3JrdjsnOiAnXHUyYWQ5JywKKyAgICAnRm91cmllcnRyZjsnOiAnXHUyMTMxJywKKyAgICAnZnBhcnRpbnQ7JzogJ1x1MmEwZCcsCisgICAgJ2ZyYWMxMic6ICdceGJkJywKKyAgICAnZnJhYzEyOyc6ICdceGJkJywKKyAgICAnZnJhYzEzOyc6ICdcdTIxNTMnLAorICAgICdmcmFjMTQnOiAnXHhiYycsCisgICAgJ2ZyYWMxNDsnOiAnXHhiYycsCisgICAgJ2ZyYWMxNTsnOiAnXHUyMTU1JywKKyAgICAnZnJhYzE2Oyc6ICdcdTIxNTknLAorICAgICdmcmFjMTg7JzogJ1x1MjE1YicsCisgICAgJ2ZyYWMyMzsnOiAnXHUyMTU0JywKKyAgICAnZnJhYzI1Oyc6ICdcdTIxNTYnLAorICAgICdmcmFjMzQnOiAnXHhiZScsCisgICAgJ2ZyYWMzNDsnOiAnXHhiZScsCisgICAgJ2ZyYWMzNTsnOiAnXHUyMTU3JywKKyAgICAnZnJhYzM4Oyc6ICdcdTIxNWMnLAorICAgICdmcmFjNDU7JzogJ1x1MjE1OCcsCisgICAgJ2ZyYWM1NjsnOiAnXHUyMTVhJywKKyAgICAnZnJhYzU4Oyc6ICdcdTIxNWQnLAorICAgICdmcmFjNzg7JzogJ1x1MjE1ZScsCisgICAgJ2ZyYXNsOyc6ICdcdTIwNDQnLAorICAgICdmcm93bjsnOiAnXHUyMzIyJywKKyAgICAnRnNjcjsnOiAnXHUyMTMxJywKKyAgICAnZnNjcjsnOiAnXFUwMDAxZDRiYicsCisgICAgJ2dhY3V0ZTsnOiAnXHUwMWY1JywKKyAgICAnR2FtbWE7JzogJ1x1MDM5MycsCisgICAgJ2dhbW1hOyc6ICdcdTAzYjMnLAorICAgICdHYW1tYWQ7JzogJ1x1MDNkYycsCisgICAgJ2dhbW1hZDsnOiAnXHUwM2RkJywKKyAgICAnZ2FwOyc6ICdcdTJhODYnLAorICAgICdHYnJldmU7JzogJ1x1MDExZScsCisgICAgJ2dicmV2ZTsnOiAnXHUwMTFmJywKKyAgICAnR2NlZGlsOyc6ICdcdTAxMjInLAorICAgICdHY2lyYzsnOiAnXHUwMTFjJywKKyAgICAnZ2NpcmM7JzogJ1x1MDExZCcsCisgICAgJ0djeTsnOiAnXHUwNDEzJywKKyAgICAnZ2N5Oyc6ICdcdTA0MzMnLAorICAgICdHZG90Oyc6ICdcdTAxMjAnLAorICAgICdnZG90Oyc6ICdcdTAxMjEnLAorICAgICdnRTsnOiAnXHUyMjY3JywKKyAgICAnZ2U7JzogJ1x1MjI2NScsCisgICAgJ2dFbDsnOiAnXHUyYThjJywKKyAgICAnZ2VsOyc6ICdcdTIyZGInLAorICAgICdnZXE7JzogJ1x1MjI2NScsCisgICAgJ2dlcXE7JzogJ1x1MjI2NycsCisgICAgJ2dlcXNsYW50Oyc6ICdcdTJhN2UnLAorICAgICdnZXM7JzogJ1x1MmE3ZScsCisgICAgJ2dlc2NjOyc6ICdcdTJhYTknLAorICAgICdnZXNkb3Q7JzogJ1x1MmE4MCcsCisgICAgJ2dlc2RvdG87JzogJ1x1MmE4MicsCisgICAgJ2dlc2RvdG9sOyc6ICdcdTJhODQnLAorICAgICdnZXNsOyc6ICdcdTIyZGJcdWZlMDAnLAorICAgICdnZXNsZXM7JzogJ1x1MmE5NCcsCisgICAgJ0dmcjsnOiAnXFUwMDAxZDUwYScsCisgICAgJ2dmcjsnOiAnXFUwMDAxZDUyNCcsCisgICAgJ0dnOyc6ICdcdTIyZDknLAorICAgICdnZzsnOiAnXHUyMjZiJywKKyAgICAnZ2dnOyc6ICdcdTIyZDknLAorICAgICdnaW1lbDsnOiAnXHUyMTM3JywKKyAgICAnR0pjeTsnOiAnXHUwNDAzJywKKyAgICAnZ2pjeTsnOiAnXHUwNDUzJywKKyAgICAnZ2w7JzogJ1x1MjI3NycsCisgICAgJ2dsYTsnOiAnXHUyYWE1JywKKyAgICAnZ2xFOyc6ICdcdTJhOTInLAorICAgICdnbGo7JzogJ1x1MmFhNCcsCisgICAgJ2duYXA7JzogJ1x1MmE4YScsCisgICAgJ2duYXBwcm94Oyc6ICdcdTJhOGEnLAorICAgICdnbkU7JzogJ1x1MjI2OScsCisgICAgJ2duZTsnOiAnXHUyYTg4JywKKyAgICAnZ25lcTsnOiAnXHUyYTg4JywKKyAgICAnZ25lcXE7JzogJ1x1MjI2OScsCisgICAgJ2duc2ltOyc6ICdcdTIyZTcnLAorICAgICdHb3BmOyc6ICdcVTAwMDFkNTNlJywKKyAgICAnZ29wZjsnOiAnXFUwMDAxZDU1OCcsCisgICAgJ2dyYXZlOyc6ICdgJywKKyAgICAnR3JlYXRlckVxdWFsOyc6ICdcdTIyNjUnLAorICAgICdHcmVhdGVyRXF1YWxMZXNzOyc6ICdcdTIyZGInLAorICAgICdHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjcnLAorICAgICdHcmVhdGVyR3JlYXRlcjsnOiAnXHUyYWEyJywKKyAgICAnR3JlYXRlckxlc3M7JzogJ1x1MjI3NycsCisgICAgJ0dyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2UnLAorICAgICdHcmVhdGVyVGlsZGU7JzogJ1x1MjI3MycsCisgICAgJ0dzY3I7JzogJ1xVMDAwMWQ0YTInLAorICAgICdnc2NyOyc6ICdcdTIxMGEnLAorICAgICdnc2ltOyc6ICdcdTIyNzMnLAorICAgICdnc2ltZTsnOiAnXHUyYThlJywKKyAgICAnZ3NpbWw7JzogJ1x1MmE5MCcsCisgICAgJ0dUJzogJz4nLAorICAgICdndCc6ICc+JywKKyAgICAnR1Q7JzogJz4nLAorICAgICdHdDsnOiAnXHUyMjZiJywKKyAgICAnZ3Q7JzogJz4nLAorICAgICdndGNjOyc6ICdcdTJhYTcnLAorICAgICdndGNpcjsnOiAnXHUyYTdhJywKKyAgICAnZ3Rkb3Q7JzogJ1x1MjJkNycsCisgICAgJ2d0bFBhcjsnOiAnXHUyOTk1JywKKyAgICAnZ3RxdWVzdDsnOiAnXHUyYTdjJywKKyAgICAnZ3RyYXBwcm94Oyc6ICdcdTJhODYnLAorICAgICdndHJhcnI7JzogJ1x1Mjk3OCcsCisgICAgJ2d0cmRvdDsnOiAnXHUyMmQ3JywKKyAgICAnZ3RyZXFsZXNzOyc6ICdcdTIyZGInLAorICAgICdndHJlcXFsZXNzOyc6ICdcdTJhOGMnLAorICAgICdndHJsZXNzOyc6ICdcdTIyNzcnLAorICAgICdndHJzaW07JzogJ1x1MjI3MycsCisgICAgJ2d2ZXJ0bmVxcTsnOiAnXHUyMjY5XHVmZTAwJywKKyAgICAnZ3ZuRTsnOiAnXHUyMjY5XHVmZTAwJywKKyAgICAnSGFjZWs7JzogJ1x1MDJjNycsCisgICAgJ2hhaXJzcDsnOiAnXHUyMDBhJywKKyAgICAnaGFsZjsnOiAnXHhiZCcsCisgICAgJ2hhbWlsdDsnOiAnXHUyMTBiJywKKyAgICAnSEFSRGN5Oyc6ICdcdTA0MmEnLAorICAgICdoYXJkY3k7JzogJ1x1MDQ0YScsCisgICAgJ2hBcnI7JzogJ1x1MjFkNCcsCisgICAgJ2hhcnI7JzogJ1x1MjE5NCcsCisgICAgJ2hhcnJjaXI7JzogJ1x1Mjk0OCcsCisgICAgJ2hhcnJ3Oyc6ICdcdTIxYWQnLAorICAgICdIYXQ7JzogJ14nLAorICAgICdoYmFyOyc6ICdcdTIxMGYnLAorICAgICdIY2lyYzsnOiAnXHUwMTI0JywKKyAgICAnaGNpcmM7JzogJ1x1MDEyNScsCisgICAgJ2hlYXJ0czsnOiAnXHUyNjY1JywKKyAgICAnaGVhcnRzdWl0Oyc6ICdcdTI2NjUnLAorICAgICdoZWxsaXA7JzogJ1x1MjAyNicsCisgICAgJ2hlcmNvbjsnOiAnXHUyMmI5JywKKyAgICAnSGZyOyc6ICdcdTIxMGMnLAorICAgICdoZnI7JzogJ1xVMDAwMWQ1MjUnLAorICAgICdIaWxiZXJ0U3BhY2U7JzogJ1x1MjEwYicsCisgICAgJ2hrc2Vhcm93Oyc6ICdcdTI5MjUnLAorICAgICdoa3N3YXJvdzsnOiAnXHUyOTI2JywKKyAgICAnaG9hcnI7JzogJ1x1MjFmZicsCisgICAgJ2hvbXRodDsnOiAnXHUyMjNiJywKKyAgICAnaG9va2xlZnRhcnJvdzsnOiAnXHUyMWE5JywKKyAgICAnaG9va3JpZ2h0YXJyb3c7JzogJ1x1MjFhYScsCisgICAgJ0hvcGY7JzogJ1x1MjEwZCcsCisgICAgJ2hvcGY7JzogJ1xVMDAwMWQ1NTknLAorICAgICdob3JiYXI7JzogJ1x1MjAxNScsCisgICAgJ0hvcml6b250YWxMaW5lOyc6ICdcdTI1MDAnLAorICAgICdIc2NyOyc6ICdcdTIxMGInLAorICAgICdoc2NyOyc6ICdcVTAwMDFkNGJkJywKKyAgICAnaHNsYXNoOyc6ICdcdTIxMGYnLAorICAgICdIc3Ryb2s7JzogJ1x1MDEyNicsCisgICAgJ2hzdHJvazsnOiAnXHUwMTI3JywKKyAgICAnSHVtcERvd25IdW1wOyc6ICdcdTIyNGUnLAorICAgICdIdW1wRXF1YWw7JzogJ1x1MjI0ZicsCisgICAgJ2h5YnVsbDsnOiAnXHUyMDQzJywKKyAgICAnaHlwaGVuOyc6ICdcdTIwMTAnLAorICAgICdJYWN1dGUnOiAnXHhjZCcsCisgICAgJ2lhY3V0ZSc6ICdceGVkJywKKyAgICAnSWFjdXRlOyc6ICdceGNkJywKKyAgICAnaWFjdXRlOyc6ICdceGVkJywKKyAgICAnaWM7JzogJ1x1MjA2MycsCisgICAgJ0ljaXJjJzogJ1x4Y2UnLAorICAgICdpY2lyYyc6ICdceGVlJywKKyAgICAnSWNpcmM7JzogJ1x4Y2UnLAorICAgICdpY2lyYzsnOiAnXHhlZScsCisgICAgJ0ljeTsnOiAnXHUwNDE4JywKKyAgICAnaWN5Oyc6ICdcdTA0MzgnLAorICAgICdJZG90Oyc6ICdcdTAxMzAnLAorICAgICdJRWN5Oyc6ICdcdTA0MTUnLAorICAgICdpZWN5Oyc6ICdcdTA0MzUnLAorICAgICdpZXhjbCc6ICdceGExJywKKyAgICAnaWV4Y2w7JzogJ1x4YTEnLAorICAgICdpZmY7JzogJ1x1MjFkNCcsCisgICAgJ0lmcjsnOiAnXHUyMTExJywKKyAgICAnaWZyOyc6ICdcVTAwMDFkNTI2JywKKyAgICAnSWdyYXZlJzogJ1x4Y2MnLAorICAgICdpZ3JhdmUnOiAnXHhlYycsCisgICAgJ0lncmF2ZTsnOiAnXHhjYycsCisgICAgJ2lncmF2ZTsnOiAnXHhlYycsCisgICAgJ2lpOyc6ICdcdTIxNDgnLAorICAgICdpaWlpbnQ7JzogJ1x1MmEwYycsCisgICAgJ2lpaW50Oyc6ICdcdTIyMmQnLAorICAgICdpaW5maW47JzogJ1x1MjlkYycsCisgICAgJ2lpb3RhOyc6ICdcdTIxMjknLAorICAgICdJSmxpZzsnOiAnXHUwMTMyJywKKyAgICAnaWpsaWc7JzogJ1x1MDEzMycsCisgICAgJ0ltOyc6ICdcdTIxMTEnLAorICAgICdJbWFjcjsnOiAnXHUwMTJhJywKKyAgICAnaW1hY3I7JzogJ1x1MDEyYicsCisgICAgJ2ltYWdlOyc6ICdcdTIxMTEnLAorICAgICdJbWFnaW5hcnlJOyc6ICdcdTIxNDgnLAorICAgICdpbWFnbGluZTsnOiAnXHUyMTEwJywKKyAgICAnaW1hZ3BhcnQ7JzogJ1x1MjExMScsCisgICAgJ2ltYXRoOyc6ICdcdTAxMzEnLAorICAgICdpbW9mOyc6ICdcdTIyYjcnLAorICAgICdpbXBlZDsnOiAnXHUwMWI1JywKKyAgICAnSW1wbGllczsnOiAnXHUyMWQyJywKKyAgICAnaW47JzogJ1x1MjIwOCcsCisgICAgJ2luY2FyZTsnOiAnXHUyMTA1JywKKyAgICAnaW5maW47JzogJ1x1MjIxZScsCisgICAgJ2luZmludGllOyc6ICdcdTI5ZGQnLAorICAgICdpbm9kb3Q7JzogJ1x1MDEzMScsCisgICAgJ0ludDsnOiAnXHUyMjJjJywKKyAgICAnaW50Oyc6ICdcdTIyMmInLAorICAgICdpbnRjYWw7JzogJ1x1MjJiYScsCisgICAgJ2ludGVnZXJzOyc6ICdcdTIxMjQnLAorICAgICdJbnRlZ3JhbDsnOiAnXHUyMjJiJywKKyAgICAnaW50ZXJjYWw7JzogJ1x1MjJiYScsCisgICAgJ0ludGVyc2VjdGlvbjsnOiAnXHUyMmMyJywKKyAgICAnaW50bGFyaGs7JzogJ1x1MmExNycsCisgICAgJ2ludHByb2Q7JzogJ1x1MmEzYycsCisgICAgJ0ludmlzaWJsZUNvbW1hOyc6ICdcdTIwNjMnLAorICAgICdJbnZpc2libGVUaW1lczsnOiAnXHUyMDYyJywKKyAgICAnSU9jeTsnOiAnXHUwNDAxJywKKyAgICAnaW9jeTsnOiAnXHUwNDUxJywKKyAgICAnSW9nb247JzogJ1x1MDEyZScsCisgICAgJ2lvZ29uOyc6ICdcdTAxMmYnLAorICAgICdJb3BmOyc6ICdcVTAwMDFkNTQwJywKKyAgICAnaW9wZjsnOiAnXFUwMDAxZDU1YScsCisgICAgJ0lvdGE7JzogJ1x1MDM5OScsCisgICAgJ2lvdGE7JzogJ1x1MDNiOScsCisgICAgJ2lwcm9kOyc6ICdcdTJhM2MnLAorICAgICdpcXVlc3QnOiAnXHhiZicsCisgICAgJ2lxdWVzdDsnOiAnXHhiZicsCisgICAgJ0lzY3I7JzogJ1x1MjExMCcsCisgICAgJ2lzY3I7JzogJ1xVMDAwMWQ0YmUnLAorICAgICdpc2luOyc6ICdcdTIyMDgnLAorICAgICdpc2luZG90Oyc6ICdcdTIyZjUnLAorICAgICdpc2luRTsnOiAnXHUyMmY5JywKKyAgICAnaXNpbnM7JzogJ1x1MjJmNCcsCisgICAgJ2lzaW5zdjsnOiAnXHUyMmYzJywKKyAgICAnaXNpbnY7JzogJ1x1MjIwOCcsCisgICAgJ2l0Oyc6ICdcdTIwNjInLAorICAgICdJdGlsZGU7JzogJ1x1MDEyOCcsCisgICAgJ2l0aWxkZTsnOiAnXHUwMTI5JywKKyAgICAnSXVrY3k7JzogJ1x1MDQwNicsCisgICAgJ2l1a2N5Oyc6ICdcdTA0NTYnLAorICAgICdJdW1sJzogJ1x4Y2YnLAorICAgICdpdW1sJzogJ1x4ZWYnLAorICAgICdJdW1sOyc6ICdceGNmJywKKyAgICAnaXVtbDsnOiAnXHhlZicsCisgICAgJ0pjaXJjOyc6ICdcdTAxMzQnLAorICAgICdqY2lyYzsnOiAnXHUwMTM1JywKKyAgICAnSmN5Oyc6ICdcdTA0MTknLAorICAgICdqY3k7JzogJ1x1MDQzOScsCisgICAgJ0pmcjsnOiAnXFUwMDAxZDUwZCcsCisgICAgJ2pmcjsnOiAnXFUwMDAxZDUyNycsCisgICAgJ2ptYXRoOyc6ICdcdTAyMzcnLAorICAgICdKb3BmOyc6ICdcVTAwMDFkNTQxJywKKyAgICAnam9wZjsnOiAnXFUwMDAxZDU1YicsCisgICAgJ0pzY3I7JzogJ1xVMDAwMWQ0YTUnLAorICAgICdqc2NyOyc6ICdcVTAwMDFkNGJmJywKKyAgICAnSnNlcmN5Oyc6ICdcdTA0MDgnLAorICAgICdqc2VyY3k7JzogJ1x1MDQ1OCcsCisgICAgJ0p1a2N5Oyc6ICdcdTA0MDQnLAorICAgICdqdWtjeTsnOiAnXHUwNDU0JywKKyAgICAnS2FwcGE7JzogJ1x1MDM5YScsCisgICAgJ2thcHBhOyc6ICdcdTAzYmEnLAorICAgICdrYXBwYXY7JzogJ1x1MDNmMCcsCisgICAgJ0tjZWRpbDsnOiAnXHUwMTM2JywKKyAgICAna2NlZGlsOyc6ICdcdTAxMzcnLAorICAgICdLY3k7JzogJ1x1MDQxYScsCisgICAgJ2tjeTsnOiAnXHUwNDNhJywKKyAgICAnS2ZyOyc6ICdcVTAwMDFkNTBlJywKKyAgICAna2ZyOyc6ICdcVTAwMDFkNTI4JywKKyAgICAna2dyZWVuOyc6ICdcdTAxMzgnLAorICAgICdLSGN5Oyc6ICdcdTA0MjUnLAorICAgICdraGN5Oyc6ICdcdTA0NDUnLAorICAgICdLSmN5Oyc6ICdcdTA0MGMnLAorICAgICdramN5Oyc6ICdcdTA0NWMnLAorICAgICdLb3BmOyc6ICdcVTAwMDFkNTQyJywKKyAgICAna29wZjsnOiAnXFUwMDAxZDU1YycsCisgICAgJ0tzY3I7JzogJ1xVMDAwMWQ0YTYnLAorICAgICdrc2NyOyc6ICdcVTAwMDFkNGMwJywKKyAgICAnbEFhcnI7JzogJ1x1MjFkYScsCisgICAgJ0xhY3V0ZTsnOiAnXHUwMTM5JywKKyAgICAnbGFjdXRlOyc6ICdcdTAxM2EnLAorICAgICdsYWVtcHR5djsnOiAnXHUyOWI0JywKKyAgICAnbGFncmFuOyc6ICdcdTIxMTInLAorICAgICdMYW1iZGE7JzogJ1x1MDM5YicsCisgICAgJ2xhbWJkYTsnOiAnXHUwM2JiJywKKyAgICAnTGFuZzsnOiAnXHUyN2VhJywKKyAgICAnbGFuZzsnOiAnXHUyN2U4JywKKyAgICAnbGFuZ2Q7JzogJ1x1Mjk5MScsCisgICAgJ2xhbmdsZTsnOiAnXHUyN2U4JywKKyAgICAnbGFwOyc6ICdcdTJhODUnLAorICAgICdMYXBsYWNldHJmOyc6ICdcdTIxMTInLAorICAgICdsYXF1byc6ICdceGFiJywKKyAgICAnbGFxdW87JzogJ1x4YWInLAorICAgICdMYXJyOyc6ICdcdTIxOWUnLAorICAgICdsQXJyOyc6ICdcdTIxZDAnLAorICAgICdsYXJyOyc6ICdcdTIxOTAnLAorICAgICdsYXJyYjsnOiAnXHUyMWU0JywKKyAgICAnbGFycmJmczsnOiAnXHUyOTFmJywKKyAgICAnbGFycmZzOyc6ICdcdTI5MWQnLAorICAgICdsYXJyaGs7JzogJ1x1MjFhOScsCisgICAgJ2xhcnJscDsnOiAnXHUyMWFiJywKKyAgICAnbGFycnBsOyc6ICdcdTI5MzknLAorICAgICdsYXJyc2ltOyc6ICdcdTI5NzMnLAorICAgICdsYXJydGw7JzogJ1x1MjFhMicsCisgICAgJ2xhdDsnOiAnXHUyYWFiJywKKyAgICAnbEF0YWlsOyc6ICdcdTI5MWInLAorICAgICdsYXRhaWw7JzogJ1x1MjkxOScsCisgICAgJ2xhdGU7JzogJ1x1MmFhZCcsCisgICAgJ2xhdGVzOyc6ICdcdTJhYWRcdWZlMDAnLAorICAgICdsQmFycjsnOiAnXHUyOTBlJywKKyAgICAnbGJhcnI7JzogJ1x1MjkwYycsCisgICAgJ2xiYnJrOyc6ICdcdTI3NzInLAorICAgICdsYnJhY2U7JzogJ3snLAorICAgICdsYnJhY2s7JzogJ1snLAorICAgICdsYnJrZTsnOiAnXHUyOThiJywKKyAgICAnbGJya3NsZDsnOiAnXHUyOThmJywKKyAgICAnbGJya3NsdTsnOiAnXHUyOThkJywKKyAgICAnTGNhcm9uOyc6ICdcdTAxM2QnLAorICAgICdsY2Fyb247JzogJ1x1MDEzZScsCisgICAgJ0xjZWRpbDsnOiAnXHUwMTNiJywKKyAgICAnbGNlZGlsOyc6ICdcdTAxM2MnLAorICAgICdsY2VpbDsnOiAnXHUyMzA4JywKKyAgICAnbGN1YjsnOiAneycsCisgICAgJ0xjeTsnOiAnXHUwNDFiJywKKyAgICAnbGN5Oyc6ICdcdTA0M2InLAorICAgICdsZGNhOyc6ICdcdTI5MzYnLAorICAgICdsZHF1bzsnOiAnXHUyMDFjJywKKyAgICAnbGRxdW9yOyc6ICdcdTIwMWUnLAorICAgICdsZHJkaGFyOyc6ICdcdTI5NjcnLAorICAgICdsZHJ1c2hhcjsnOiAnXHUyOTRiJywKKyAgICAnbGRzaDsnOiAnXHUyMWIyJywKKyAgICAnbEU7JzogJ1x1MjI2NicsCisgICAgJ2xlOyc6ICdcdTIyNjQnLAorICAgICdMZWZ0QW5nbGVCcmFja2V0Oyc6ICdcdTI3ZTgnLAorICAgICdMZWZ0QXJyb3c7JzogJ1x1MjE5MCcsCisgICAgJ0xlZnRhcnJvdzsnOiAnXHUyMWQwJywKKyAgICAnbGVmdGFycm93Oyc6ICdcdTIxOTAnLAorICAgICdMZWZ0QXJyb3dCYXI7JzogJ1x1MjFlNCcsCisgICAgJ0xlZnRBcnJvd1JpZ2h0QXJyb3c7JzogJ1x1MjFjNicsCisgICAgJ2xlZnRhcnJvd3RhaWw7JzogJ1x1MjFhMicsCisgICAgJ0xlZnRDZWlsaW5nOyc6ICdcdTIzMDgnLAorICAgICdMZWZ0RG91YmxlQnJhY2tldDsnOiAnXHUyN2U2JywKKyAgICAnTGVmdERvd25UZWVWZWN0b3I7JzogJ1x1Mjk2MScsCisgICAgJ0xlZnREb3duVmVjdG9yOyc6ICdcdTIxYzMnLAorICAgICdMZWZ0RG93blZlY3RvckJhcjsnOiAnXHUyOTU5JywKKyAgICAnTGVmdEZsb29yOyc6ICdcdTIzMGEnLAorICAgICdsZWZ0aGFycG9vbmRvd247JzogJ1x1MjFiZCcsCisgICAgJ2xlZnRoYXJwb29udXA7JzogJ1x1MjFiYycsCisgICAgJ2xlZnRsZWZ0YXJyb3dzOyc6ICdcdTIxYzcnLAorICAgICdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyMTk0JywKKyAgICAnTGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFkNCcsCisgICAgJ2xlZnRyaWdodGFycm93Oyc6ICdcdTIxOTQnLAorICAgICdsZWZ0cmlnaHRhcnJvd3M7JzogJ1x1MjFjNicsCisgICAgJ2xlZnRyaWdodGhhcnBvb25zOyc6ICdcdTIxY2InLAorICAgICdsZWZ0cmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxYWQnLAorICAgICdMZWZ0UmlnaHRWZWN0b3I7JzogJ1x1Mjk0ZScsCisgICAgJ0xlZnRUZWU7JzogJ1x1MjJhMycsCisgICAgJ0xlZnRUZWVBcnJvdzsnOiAnXHUyMWE0JywKKyAgICAnTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVhJywKKyAgICAnbGVmdHRocmVldGltZXM7JzogJ1x1MjJjYicsCisgICAgJ0xlZnRUcmlhbmdsZTsnOiAnXHUyMmIyJywKKyAgICAnTGVmdFRyaWFuZ2xlQmFyOyc6ICdcdTI5Y2YnLAorICAgICdMZWZ0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmI0JywKKyAgICAnTGVmdFVwRG93blZlY3RvcjsnOiAnXHUyOTUxJywKKyAgICAnTGVmdFVwVGVlVmVjdG9yOyc6ICdcdTI5NjAnLAorICAgICdMZWZ0VXBWZWN0b3I7JzogJ1x1MjFiZicsCisgICAgJ0xlZnRVcFZlY3RvckJhcjsnOiAnXHUyOTU4JywKKyAgICAnTGVmdFZlY3RvcjsnOiAnXHUyMWJjJywKKyAgICAnTGVmdFZlY3RvckJhcjsnOiAnXHUyOTUyJywKKyAgICAnbEVnOyc6ICdcdTJhOGInLAorICAgICdsZWc7JzogJ1x1MjJkYScsCisgICAgJ2xlcTsnOiAnXHUyMjY0JywKKyAgICAnbGVxcTsnOiAnXHUyMjY2JywKKyAgICAnbGVxc2xhbnQ7JzogJ1x1MmE3ZCcsCisgICAgJ2xlczsnOiAnXHUyYTdkJywKKyAgICAnbGVzY2M7JzogJ1x1MmFhOCcsCisgICAgJ2xlc2RvdDsnOiAnXHUyYTdmJywKKyAgICAnbGVzZG90bzsnOiAnXHUyYTgxJywKKyAgICAnbGVzZG90b3I7JzogJ1x1MmE4MycsCisgICAgJ2xlc2c7JzogJ1x1MjJkYVx1ZmUwMCcsCisgICAgJ2xlc2dlczsnOiAnXHUyYTkzJywKKyAgICAnbGVzc2FwcHJveDsnOiAnXHUyYTg1JywKKyAgICAnbGVzc2RvdDsnOiAnXHUyMmQ2JywKKyAgICAnbGVzc2VxZ3RyOyc6ICdcdTIyZGEnLAorICAgICdsZXNzZXFxZ3RyOyc6ICdcdTJhOGInLAorICAgICdMZXNzRXF1YWxHcmVhdGVyOyc6ICdcdTIyZGEnLAorICAgICdMZXNzRnVsbEVxdWFsOyc6ICdcdTIyNjYnLAorICAgICdMZXNzR3JlYXRlcjsnOiAnXHUyMjc2JywKKyAgICAnbGVzc2d0cjsnOiAnXHUyMjc2JywKKyAgICAnTGVzc0xlc3M7JzogJ1x1MmFhMScsCisgICAgJ2xlc3NzaW07JzogJ1x1MjI3MicsCisgICAgJ0xlc3NTbGFudEVxdWFsOyc6ICdcdTJhN2QnLAorICAgICdMZXNzVGlsZGU7JzogJ1x1MjI3MicsCisgICAgJ2xmaXNodDsnOiAnXHUyOTdjJywKKyAgICAnbGZsb29yOyc6ICdcdTIzMGEnLAorICAgICdMZnI7JzogJ1xVMDAwMWQ1MGYnLAorICAgICdsZnI7JzogJ1xVMDAwMWQ1MjknLAorICAgICdsZzsnOiAnXHUyMjc2JywKKyAgICAnbGdFOyc6ICdcdTJhOTEnLAorICAgICdsSGFyOyc6ICdcdTI5NjInLAorICAgICdsaGFyZDsnOiAnXHUyMWJkJywKKyAgICAnbGhhcnU7JzogJ1x1MjFiYycsCisgICAgJ2xoYXJ1bDsnOiAnXHUyOTZhJywKKyAgICAnbGhibGs7JzogJ1x1MjU4NCcsCisgICAgJ0xKY3k7JzogJ1x1MDQwOScsCisgICAgJ2xqY3k7JzogJ1x1MDQ1OScsCisgICAgJ0xsOyc6ICdcdTIyZDgnLAorICAgICdsbDsnOiAnXHUyMjZhJywKKyAgICAnbGxhcnI7JzogJ1x1MjFjNycsCisgICAgJ2xsY29ybmVyOyc6ICdcdTIzMWUnLAorICAgICdMbGVmdGFycm93Oyc6ICdcdTIxZGEnLAorICAgICdsbGhhcmQ7JzogJ1x1Mjk2YicsCisgICAgJ2xsdHJpOyc6ICdcdTI1ZmEnLAorICAgICdMbWlkb3Q7JzogJ1x1MDEzZicsCisgICAgJ2xtaWRvdDsnOiAnXHUwMTQwJywKKyAgICAnbG1vdXN0Oyc6ICdcdTIzYjAnLAorICAgICdsbW91c3RhY2hlOyc6ICdcdTIzYjAnLAorICAgICdsbmFwOyc6ICdcdTJhODknLAorICAgICdsbmFwcHJveDsnOiAnXHUyYTg5JywKKyAgICAnbG5FOyc6ICdcdTIyNjgnLAorICAgICdsbmU7JzogJ1x1MmE4NycsCisgICAgJ2xuZXE7JzogJ1x1MmE4NycsCisgICAgJ2xuZXFxOyc6ICdcdTIyNjgnLAorICAgICdsbnNpbTsnOiAnXHUyMmU2JywKKyAgICAnbG9hbmc7JzogJ1x1MjdlYycsCisgICAgJ2xvYXJyOyc6ICdcdTIxZmQnLAorICAgICdsb2JyazsnOiAnXHUyN2U2JywKKyAgICAnTG9uZ0xlZnRBcnJvdzsnOiAnXHUyN2Y1JywKKyAgICAnTG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y4JywKKyAgICAnbG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y1JywKKyAgICAnTG9uZ0xlZnRSaWdodEFycm93Oyc6ICdcdTI3ZjcnLAorICAgICdMb25nbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjdmYScsCisgICAgJ2xvbmdsZWZ0cmlnaHRhcnJvdzsnOiAnXHUyN2Y3JywKKyAgICAnbG9uZ21hcHN0bzsnOiAnXHUyN2ZjJywKKyAgICAnTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmNicsCisgICAgJ0xvbmdyaWdodGFycm93Oyc6ICdcdTI3ZjknLAorICAgICdsb25ncmlnaHRhcnJvdzsnOiAnXHUyN2Y2JywKKyAgICAnbG9vcGFycm93bGVmdDsnOiAnXHUyMWFiJywKKyAgICAnbG9vcGFycm93cmlnaHQ7JzogJ1x1MjFhYycsCisgICAgJ2xvcGFyOyc6ICdcdTI5ODUnLAorICAgICdMb3BmOyc6ICdcVTAwMDFkNTQzJywKKyAgICAnbG9wZjsnOiAnXFUwMDAxZDU1ZCcsCisgICAgJ2xvcGx1czsnOiAnXHUyYTJkJywKKyAgICAnbG90aW1lczsnOiAnXHUyYTM0JywKKyAgICAnbG93YXN0Oyc6ICdcdTIyMTcnLAorICAgICdsb3diYXI7JzogJ18nLAorICAgICdMb3dlckxlZnRBcnJvdzsnOiAnXHUyMTk5JywKKyAgICAnTG93ZXJSaWdodEFycm93Oyc6ICdcdTIxOTgnLAorICAgICdsb3o7JzogJ1x1MjVjYScsCisgICAgJ2xvemVuZ2U7JzogJ1x1MjVjYScsCisgICAgJ2xvemY7JzogJ1x1MjllYicsCisgICAgJ2xwYXI7JzogJygnLAorICAgICdscGFybHQ7JzogJ1x1Mjk5MycsCisgICAgJ2xyYXJyOyc6ICdcdTIxYzYnLAorICAgICdscmNvcm5lcjsnOiAnXHUyMzFmJywKKyAgICAnbHJoYXI7JzogJ1x1MjFjYicsCisgICAgJ2xyaGFyZDsnOiAnXHUyOTZkJywKKyAgICAnbHJtOyc6ICdcdTIwMGUnLAorICAgICdscnRyaTsnOiAnXHUyMmJmJywKKyAgICAnbHNhcXVvOyc6ICdcdTIwMzknLAorICAgICdMc2NyOyc6ICdcdTIxMTInLAorICAgICdsc2NyOyc6ICdcVTAwMDFkNGMxJywKKyAgICAnTHNoOyc6ICdcdTIxYjAnLAorICAgICdsc2g7JzogJ1x1MjFiMCcsCisgICAgJ2xzaW07JzogJ1x1MjI3MicsCisgICAgJ2xzaW1lOyc6ICdcdTJhOGQnLAorICAgICdsc2ltZzsnOiAnXHUyYThmJywKKyAgICAnbHNxYjsnOiAnWycsCisgICAgJ2xzcXVvOyc6ICdcdTIwMTgnLAorICAgICdsc3F1b3I7JzogJ1x1MjAxYScsCisgICAgJ0xzdHJvazsnOiAnXHUwMTQxJywKKyAgICAnbHN0cm9rOyc6ICdcdTAxNDInLAorICAgICdMVCc6ICc8JywKKyAgICAnbHQnOiAnPCcsCisgICAgJ0xUOyc6ICc8JywKKyAgICAnTHQ7JzogJ1x1MjI2YScsCisgICAgJ2x0Oyc6ICc8JywKKyAgICAnbHRjYzsnOiAnXHUyYWE2JywKKyAgICAnbHRjaXI7JzogJ1x1MmE3OScsCisgICAgJ2x0ZG90Oyc6ICdcdTIyZDYnLAorICAgICdsdGhyZWU7JzogJ1x1MjJjYicsCisgICAgJ2x0aW1lczsnOiAnXHUyMmM5JywKKyAgICAnbHRsYXJyOyc6ICdcdTI5NzYnLAorICAgICdsdHF1ZXN0Oyc6ICdcdTJhN2InLAorICAgICdsdHJpOyc6ICdcdTI1YzMnLAorICAgICdsdHJpZTsnOiAnXHUyMmI0JywKKyAgICAnbHRyaWY7JzogJ1x1MjVjMicsCisgICAgJ2x0clBhcjsnOiAnXHUyOTk2JywKKyAgICAnbHVyZHNoYXI7JzogJ1x1Mjk0YScsCisgICAgJ2x1cnVoYXI7JzogJ1x1Mjk2NicsCisgICAgJ2x2ZXJ0bmVxcTsnOiAnXHUyMjY4XHVmZTAwJywKKyAgICAnbHZuRTsnOiAnXHUyMjY4XHVmZTAwJywKKyAgICAnbWFjcic6ICdceGFmJywKKyAgICAnbWFjcjsnOiAnXHhhZicsCisgICAgJ21hbGU7JzogJ1x1MjY0MicsCisgICAgJ21hbHQ7JzogJ1x1MjcyMCcsCisgICAgJ21hbHRlc2U7JzogJ1x1MjcyMCcsCisgICAgJ01hcDsnOiAnXHUyOTA1JywKKyAgICAnbWFwOyc6ICdcdTIxYTYnLAorICAgICdtYXBzdG87JzogJ1x1MjFhNicsCisgICAgJ21hcHN0b2Rvd247JzogJ1x1MjFhNycsCisgICAgJ21hcHN0b2xlZnQ7JzogJ1x1MjFhNCcsCisgICAgJ21hcHN0b3VwOyc6ICdcdTIxYTUnLAorICAgICdtYXJrZXI7JzogJ1x1MjVhZScsCisgICAgJ21jb21tYTsnOiAnXHUyYTI5JywKKyAgICAnTWN5Oyc6ICdcdTA0MWMnLAorICAgICdtY3k7JzogJ1x1MDQzYycsCisgICAgJ21kYXNoOyc6ICdcdTIwMTQnLAorICAgICdtRERvdDsnOiAnXHUyMjNhJywKKyAgICAnbWVhc3VyZWRhbmdsZTsnOiAnXHUyMjIxJywKKyAgICAnTWVkaXVtU3BhY2U7JzogJ1x1MjA1ZicsCisgICAgJ01lbGxpbnRyZjsnOiAnXHUyMTMzJywKKyAgICAnTWZyOyc6ICdcVTAwMDFkNTEwJywKKyAgICAnbWZyOyc6ICdcVTAwMDFkNTJhJywKKyAgICAnbWhvOyc6ICdcdTIxMjcnLAorICAgICdtaWNybyc6ICdceGI1JywKKyAgICAnbWljcm87JzogJ1x4YjUnLAorICAgICdtaWQ7JzogJ1x1MjIyMycsCisgICAgJ21pZGFzdDsnOiAnKicsCisgICAgJ21pZGNpcjsnOiAnXHUyYWYwJywKKyAgICAnbWlkZG90JzogJ1x4YjcnLAorICAgICdtaWRkb3Q7JzogJ1x4YjcnLAorICAgICdtaW51czsnOiAnXHUyMjEyJywKKyAgICAnbWludXNiOyc6ICdcdTIyOWYnLAorICAgICdtaW51c2Q7JzogJ1x1MjIzOCcsCisgICAgJ21pbnVzZHU7JzogJ1x1MmEyYScsCisgICAgJ01pbnVzUGx1czsnOiAnXHUyMjEzJywKKyAgICAnbWxjcDsnOiAnXHUyYWRiJywKKyAgICAnbWxkcjsnOiAnXHUyMDI2JywKKyAgICAnbW5wbHVzOyc6ICdcdTIyMTMnLAorICAgICdtb2RlbHM7JzogJ1x1MjJhNycsCisgICAgJ01vcGY7JzogJ1xVMDAwMWQ1NDQnLAorICAgICdtb3BmOyc6ICdcVTAwMDFkNTVlJywKKyAgICAnbXA7JzogJ1x1MjIxMycsCisgICAgJ01zY3I7JzogJ1x1MjEzMycsCisgICAgJ21zY3I7JzogJ1xVMDAwMWQ0YzInLAorICAgICdtc3Rwb3M7JzogJ1x1MjIzZScsCisgICAgJ011Oyc6ICdcdTAzOWMnLAorICAgICdtdTsnOiAnXHUwM2JjJywKKyAgICAnbXVsdGltYXA7JzogJ1x1MjJiOCcsCisgICAgJ211bWFwOyc6ICdcdTIyYjgnLAorICAgICduYWJsYTsnOiAnXHUyMjA3JywKKyAgICAnTmFjdXRlOyc6ICdcdTAxNDMnLAorICAgICduYWN1dGU7JzogJ1x1MDE0NCcsCisgICAgJ25hbmc7JzogJ1x1MjIyMFx1MjBkMicsCisgICAgJ25hcDsnOiAnXHUyMjQ5JywKKyAgICAnbmFwRTsnOiAnXHUyYTcwXHUwMzM4JywKKyAgICAnbmFwaWQ7JzogJ1x1MjI0Ylx1MDMzOCcsCisgICAgJ25hcG9zOyc6ICdcdTAxNDknLAorICAgICduYXBwcm94Oyc6ICdcdTIyNDknLAorICAgICduYXR1cjsnOiAnXHUyNjZlJywKKyAgICAnbmF0dXJhbDsnOiAnXHUyNjZlJywKKyAgICAnbmF0dXJhbHM7JzogJ1x1MjExNScsCisgICAgJ25ic3AnOiAnXHhhMCcsCisgICAgJ25ic3A7JzogJ1x4YTAnLAorICAgICduYnVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnbmJ1bXBlOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICduY2FwOyc6ICdcdTJhNDMnLAorICAgICdOY2Fyb247JzogJ1x1MDE0NycsCisgICAgJ25jYXJvbjsnOiAnXHUwMTQ4JywKKyAgICAnTmNlZGlsOyc6ICdcdTAxNDUnLAorICAgICduY2VkaWw7JzogJ1x1MDE0NicsCisgICAgJ25jb25nOyc6ICdcdTIyNDcnLAorICAgICduY29uZ2RvdDsnOiAnXHUyYTZkXHUwMzM4JywKKyAgICAnbmN1cDsnOiAnXHUyYTQyJywKKyAgICAnTmN5Oyc6ICdcdTA0MWQnLAorICAgICduY3k7JzogJ1x1MDQzZCcsCisgICAgJ25kYXNoOyc6ICdcdTIwMTMnLAorICAgICduZTsnOiAnXHUyMjYwJywKKyAgICAnbmVhcmhrOyc6ICdcdTI5MjQnLAorICAgICduZUFycjsnOiAnXHUyMWQ3JywKKyAgICAnbmVhcnI7JzogJ1x1MjE5NycsCisgICAgJ25lYXJyb3c7JzogJ1x1MjE5NycsCisgICAgJ25lZG90Oyc6ICdcdTIyNTBcdTAzMzgnLAorICAgICdOZWdhdGl2ZU1lZGl1bVNwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVRoaWNrU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ05lZ2F0aXZlVGhpblNwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ25lcXVpdjsnOiAnXHUyMjYyJywKKyAgICAnbmVzZWFyOyc6ICdcdTI5MjgnLAorICAgICduZXNpbTsnOiAnXHUyMjQyXHUwMzM4JywKKyAgICAnTmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MjI2YicsCisgICAgJ05lc3RlZExlc3NMZXNzOyc6ICdcdTIyNmEnLAorICAgICdOZXdMaW5lOyc6ICdcbicsCisgICAgJ25leGlzdDsnOiAnXHUyMjA0JywKKyAgICAnbmV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTmZyOyc6ICdcVTAwMDFkNTExJywKKyAgICAnbmZyOyc6ICdcVTAwMDFkNTJiJywKKyAgICAnbmdFOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2U7JzogJ1x1MjI3MScsCisgICAgJ25nZXE7JzogJ1x1MjI3MScsCisgICAgJ25nZXFxOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2Vxc2xhbnQ7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25nZXM7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25HZzsnOiAnXHUyMmQ5XHUwMzM4JywKKyAgICAnbmdzaW07JzogJ1x1MjI3NScsCisgICAgJ25HdDsnOiAnXHUyMjZiXHUyMGQyJywKKyAgICAnbmd0Oyc6ICdcdTIyNmYnLAorICAgICduZ3RyOyc6ICdcdTIyNmYnLAorICAgICduR3R2Oyc6ICdcdTIyNmJcdTAzMzgnLAorICAgICduaEFycjsnOiAnXHUyMWNlJywKKyAgICAnbmhhcnI7JzogJ1x1MjFhZScsCisgICAgJ25ocGFyOyc6ICdcdTJhZjInLAorICAgICduaTsnOiAnXHUyMjBiJywKKyAgICAnbmlzOyc6ICdcdTIyZmMnLAorICAgICduaXNkOyc6ICdcdTIyZmEnLAorICAgICduaXY7JzogJ1x1MjIwYicsCisgICAgJ05KY3k7JzogJ1x1MDQwYScsCisgICAgJ25qY3k7JzogJ1x1MDQ1YScsCisgICAgJ25sQXJyOyc6ICdcdTIxY2QnLAorICAgICdubGFycjsnOiAnXHUyMTlhJywKKyAgICAnbmxkcjsnOiAnXHUyMDI1JywKKyAgICAnbmxFOyc6ICdcdTIyNjZcdTAzMzgnLAorICAgICdubGU7JzogJ1x1MjI3MCcsCisgICAgJ25MZWZ0YXJyb3c7JzogJ1x1MjFjZCcsCisgICAgJ25sZWZ0YXJyb3c7JzogJ1x1MjE5YScsCisgICAgJ25MZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMWNlJywKKyAgICAnbmxlZnRyaWdodGFycm93Oyc6ICdcdTIxYWUnLAorICAgICdubGVxOyc6ICdcdTIyNzAnLAorICAgICdubGVxcTsnOiAnXHUyMjY2XHUwMzM4JywKKyAgICAnbmxlcXNsYW50Oyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzOyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzczsnOiAnXHUyMjZlJywKKyAgICAnbkxsOyc6ICdcdTIyZDhcdTAzMzgnLAorICAgICdubHNpbTsnOiAnXHUyMjc0JywKKyAgICAnbkx0Oyc6ICdcdTIyNmFcdTIwZDInLAorICAgICdubHQ7JzogJ1x1MjI2ZScsCisgICAgJ25sdHJpOyc6ICdcdTIyZWEnLAorICAgICdubHRyaWU7JzogJ1x1MjJlYycsCisgICAgJ25MdHY7JzogJ1x1MjI2YVx1MDMzOCcsCisgICAgJ25taWQ7JzogJ1x1MjIyNCcsCisgICAgJ05vQnJlYWs7JzogJ1x1MjA2MCcsCisgICAgJ05vbkJyZWFraW5nU3BhY2U7JzogJ1x4YTAnLAorICAgICdOb3BmOyc6ICdcdTIxMTUnLAorICAgICdub3BmOyc6ICdcVTAwMDFkNTVmJywKKyAgICAnbm90JzogJ1x4YWMnLAorICAgICdOb3Q7JzogJ1x1MmFlYycsCisgICAgJ25vdDsnOiAnXHhhYycsCisgICAgJ05vdENvbmdydWVudDsnOiAnXHUyMjYyJywKKyAgICAnTm90Q3VwQ2FwOyc6ICdcdTIyNmQnLAorICAgICdOb3REb3VibGVWZXJ0aWNhbEJhcjsnOiAnXHUyMjI2JywKKyAgICAnTm90RWxlbWVudDsnOiAnXHUyMjA5JywKKyAgICAnTm90RXF1YWw7JzogJ1x1MjI2MCcsCisgICAgJ05vdEVxdWFsVGlsZGU7JzogJ1x1MjI0Mlx1MDMzOCcsCisgICAgJ05vdEV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTm90R3JlYXRlcjsnOiAnXHUyMjZmJywKKyAgICAnTm90R3JlYXRlckVxdWFsOyc6ICdcdTIyNzEnLAorICAgICdOb3RHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyR3JlYXRlcjsnOiAnXHUyMjZiXHUwMzM4JywKKyAgICAnTm90R3JlYXRlckxlc3M7JzogJ1x1MjI3OScsCisgICAgJ05vdEdyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2VcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyVGlsZGU7JzogJ1x1MjI3NScsCisgICAgJ05vdEh1bXBEb3duSHVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnTm90SHVtcEVxdWFsOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICdub3RpbjsnOiAnXHUyMjA5JywKKyAgICAnbm90aW5kb3Q7JzogJ1x1MjJmNVx1MDMzOCcsCisgICAgJ25vdGluRTsnOiAnXHUyMmY5XHUwMzM4JywKKyAgICAnbm90aW52YTsnOiAnXHUyMjA5JywKKyAgICAnbm90aW52YjsnOiAnXHUyMmY3JywKKyAgICAnbm90aW52YzsnOiAnXHUyMmY2JywKKyAgICAnTm90TGVmdFRyaWFuZ2xlOyc6ICdcdTIyZWEnLAorICAgICdOb3RMZWZ0VHJpYW5nbGVCYXI7JzogJ1x1MjljZlx1MDMzOCcsCisgICAgJ05vdExlZnRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWMnLAorICAgICdOb3RMZXNzOyc6ICdcdTIyNmUnLAorICAgICdOb3RMZXNzRXF1YWw7JzogJ1x1MjI3MCcsCisgICAgJ05vdExlc3NHcmVhdGVyOyc6ICdcdTIyNzgnLAorICAgICdOb3RMZXNzTGVzczsnOiAnXHUyMjZhXHUwMzM4JywKKyAgICAnTm90TGVzc1NsYW50RXF1YWw7JzogJ1x1MmE3ZFx1MDMzOCcsCisgICAgJ05vdExlc3NUaWxkZTsnOiAnXHUyMjc0JywKKyAgICAnTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MmFhMlx1MDMzOCcsCisgICAgJ05vdE5lc3RlZExlc3NMZXNzOyc6ICdcdTJhYTFcdTAzMzgnLAorICAgICdub3RuaTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YjsnOiAnXHUyMmZlJywKKyAgICAnbm90bml2YzsnOiAnXHUyMmZkJywKKyAgICAnTm90UHJlY2VkZXM7JzogJ1x1MjI4MCcsCisgICAgJ05vdFByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZlx1MDMzOCcsCisgICAgJ05vdFByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMmUwJywKKyAgICAnTm90UmV2ZXJzZUVsZW1lbnQ7JzogJ1x1MjIwYycsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGU7JzogJ1x1MjJlYicsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVCYXI7JzogJ1x1MjlkMFx1MDMzOCcsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmVkJywKKyAgICAnTm90U3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGZcdTAzMzgnLAorICAgICdOb3RTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMmUyJywKKyAgICAnTm90U3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MFx1MDMzOCcsCisgICAgJ05vdFNxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjJlMycsCisgICAgJ05vdFN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnTm90U3Vic2V0RXF1YWw7JzogJ1x1MjI4OCcsCisgICAgJ05vdFN1Y2NlZWRzOyc6ICdcdTIyODEnLAorICAgICdOb3RTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjBcdTAzMzgnLAorICAgICdOb3RTdWNjZWVkc1NsYW50RXF1YWw7JzogJ1x1MjJlMScsCisgICAgJ05vdFN1Y2NlZWRzVGlsZGU7JzogJ1x1MjI3Zlx1MDMzOCcsCisgICAgJ05vdFN1cGVyc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICdOb3RTdXBlcnNldEVxdWFsOyc6ICdcdTIyODknLAorICAgICdOb3RUaWxkZTsnOiAnXHUyMjQxJywKKyAgICAnTm90VGlsZGVFcXVhbDsnOiAnXHUyMjQ0JywKKyAgICAnTm90VGlsZGVGdWxsRXF1YWw7JzogJ1x1MjI0NycsCisgICAgJ05vdFRpbGRlVGlsZGU7JzogJ1x1MjI0OScsCisgICAgJ05vdFZlcnRpY2FsQmFyOyc6ICdcdTIyMjQnLAorICAgICducGFyOyc6ICdcdTIyMjYnLAorICAgICducGFyYWxsZWw7JzogJ1x1MjIyNicsCisgICAgJ25wYXJzbDsnOiAnXHUyYWZkXHUyMGU1JywKKyAgICAnbnBhcnQ7JzogJ1x1MjIwMlx1MDMzOCcsCisgICAgJ25wb2xpbnQ7JzogJ1x1MmExNCcsCisgICAgJ25wcjsnOiAnXHUyMjgwJywKKyAgICAnbnByY3VlOyc6ICdcdTIyZTAnLAorICAgICducHJlOyc6ICdcdTJhYWZcdTAzMzgnLAorICAgICducHJlYzsnOiAnXHUyMjgwJywKKyAgICAnbnByZWNlcTsnOiAnXHUyYWFmXHUwMzM4JywKKyAgICAnbnJBcnI7JzogJ1x1MjFjZicsCisgICAgJ25yYXJyOyc6ICdcdTIxOWInLAorICAgICducmFycmM7JzogJ1x1MjkzM1x1MDMzOCcsCisgICAgJ25yYXJydzsnOiAnXHUyMTlkXHUwMzM4JywKKyAgICAnblJpZ2h0YXJyb3c7JzogJ1x1MjFjZicsCisgICAgJ25yaWdodGFycm93Oyc6ICdcdTIxOWInLAorICAgICducnRyaTsnOiAnXHUyMmViJywKKyAgICAnbnJ0cmllOyc6ICdcdTIyZWQnLAorICAgICduc2M7JzogJ1x1MjI4MScsCisgICAgJ25zY2N1ZTsnOiAnXHUyMmUxJywKKyAgICAnbnNjZTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnTnNjcjsnOiAnXFUwMDAxZDRhOScsCisgICAgJ25zY3I7JzogJ1xVMDAwMWQ0YzMnLAorICAgICduc2hvcnRtaWQ7JzogJ1x1MjIyNCcsCisgICAgJ25zaG9ydHBhcmFsbGVsOyc6ICdcdTIyMjYnLAorICAgICduc2ltOyc6ICdcdTIyNDEnLAorICAgICduc2ltZTsnOiAnXHUyMjQ0JywKKyAgICAnbnNpbWVxOyc6ICdcdTIyNDQnLAorICAgICduc21pZDsnOiAnXHUyMjI0JywKKyAgICAnbnNwYXI7JzogJ1x1MjIyNicsCisgICAgJ25zcXN1YmU7JzogJ1x1MjJlMicsCisgICAgJ25zcXN1cGU7JzogJ1x1MjJlMycsCisgICAgJ25zdWI7JzogJ1x1MjI4NCcsCisgICAgJ25zdWJFOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3ViZTsnOiAnXHUyMjg4JywKKyAgICAnbnN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnbnN1YnNldGVxOyc6ICdcdTIyODgnLAorICAgICduc3Vic2V0ZXFxOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3VjYzsnOiAnXHUyMjgxJywKKyAgICAnbnN1Y2NlcTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnbnN1cDsnOiAnXHUyMjg1JywKKyAgICAnbnN1cEU7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ25zdXBlOyc6ICdcdTIyODknLAorICAgICduc3Vwc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICduc3Vwc2V0ZXE7JzogJ1x1MjI4OScsCisgICAgJ25zdXBzZXRlcXE7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ250Z2w7JzogJ1x1MjI3OScsCisgICAgJ050aWxkZSc6ICdceGQxJywKKyAgICAnbnRpbGRlJzogJ1x4ZjEnLAorICAgICdOdGlsZGU7JzogJ1x4ZDEnLAorICAgICdudGlsZGU7JzogJ1x4ZjEnLAorICAgICdudGxnOyc6ICdcdTIyNzgnLAorICAgICdudHJpYW5nbGVsZWZ0Oyc6ICdcdTIyZWEnLAorICAgICdudHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJlYycsCisgICAgJ250cmlhbmdsZXJpZ2h0Oyc6ICdcdTIyZWInLAorICAgICdudHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyZWQnLAorICAgICdOdTsnOiAnXHUwMzlkJywKKyAgICAnbnU7JzogJ1x1MDNiZCcsCisgICAgJ251bTsnOiAnIycsCisgICAgJ251bWVybzsnOiAnXHUyMTE2JywKKyAgICAnbnVtc3A7JzogJ1x1MjAwNycsCisgICAgJ252YXA7JzogJ1x1MjI0ZFx1MjBkMicsCisgICAgJ25WRGFzaDsnOiAnXHUyMmFmJywKKyAgICAnblZkYXNoOyc6ICdcdTIyYWUnLAorICAgICdudkRhc2g7JzogJ1x1MjJhZCcsCisgICAgJ252ZGFzaDsnOiAnXHUyMmFjJywKKyAgICAnbnZnZTsnOiAnXHUyMjY1XHUyMGQyJywKKyAgICAnbnZndDsnOiAnPlx1MjBkMicsCisgICAgJ252SGFycjsnOiAnXHUyOTA0JywKKyAgICAnbnZpbmZpbjsnOiAnXHUyOWRlJywKKyAgICAnbnZsQXJyOyc6ICdcdTI5MDInLAorICAgICdudmxlOyc6ICdcdTIyNjRcdTIwZDInLAorICAgICdudmx0Oyc6ICc8XHUyMGQyJywKKyAgICAnbnZsdHJpZTsnOiAnXHUyMmI0XHUyMGQyJywKKyAgICAnbnZyQXJyOyc6ICdcdTI5MDMnLAorICAgICdudnJ0cmllOyc6ICdcdTIyYjVcdTIwZDInLAorICAgICdudnNpbTsnOiAnXHUyMjNjXHUyMGQyJywKKyAgICAnbndhcmhrOyc6ICdcdTI5MjMnLAorICAgICdud0FycjsnOiAnXHUyMWQ2JywKKyAgICAnbndhcnI7JzogJ1x1MjE5NicsCisgICAgJ253YXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ253bmVhcjsnOiAnXHUyOTI3JywKKyAgICAnT2FjdXRlJzogJ1x4ZDMnLAorICAgICdvYWN1dGUnOiAnXHhmMycsCisgICAgJ09hY3V0ZTsnOiAnXHhkMycsCisgICAgJ29hY3V0ZTsnOiAnXHhmMycsCisgICAgJ29hc3Q7JzogJ1x1MjI5YicsCisgICAgJ29jaXI7JzogJ1x1MjI5YScsCisgICAgJ09jaXJjJzogJ1x4ZDQnLAorICAgICdvY2lyYyc6ICdceGY0JywKKyAgICAnT2NpcmM7JzogJ1x4ZDQnLAorICAgICdvY2lyYzsnOiAnXHhmNCcsCisgICAgJ09jeTsnOiAnXHUwNDFlJywKKyAgICAnb2N5Oyc6ICdcdTA0M2UnLAorICAgICdvZGFzaDsnOiAnXHUyMjlkJywKKyAgICAnT2RibGFjOyc6ICdcdTAxNTAnLAorICAgICdvZGJsYWM7JzogJ1x1MDE1MScsCisgICAgJ29kaXY7JzogJ1x1MmEzOCcsCisgICAgJ29kb3Q7JzogJ1x1MjI5OScsCisgICAgJ29kc29sZDsnOiAnXHUyOWJjJywKKyAgICAnT0VsaWc7JzogJ1x1MDE1MicsCisgICAgJ29lbGlnOyc6ICdcdTAxNTMnLAorICAgICdvZmNpcjsnOiAnXHUyOWJmJywKKyAgICAnT2ZyOyc6ICdcVTAwMDFkNTEyJywKKyAgICAnb2ZyOyc6ICdcVTAwMDFkNTJjJywKKyAgICAnb2dvbjsnOiAnXHUwMmRiJywKKyAgICAnT2dyYXZlJzogJ1x4ZDInLAorICAgICdvZ3JhdmUnOiAnXHhmMicsCisgICAgJ09ncmF2ZTsnOiAnXHhkMicsCisgICAgJ29ncmF2ZTsnOiAnXHhmMicsCisgICAgJ29ndDsnOiAnXHUyOWMxJywKKyAgICAnb2hiYXI7JzogJ1x1MjliNScsCisgICAgJ29obTsnOiAnXHUwM2E5JywKKyAgICAnb2ludDsnOiAnXHUyMjJlJywKKyAgICAnb2xhcnI7JzogJ1x1MjFiYScsCisgICAgJ29sY2lyOyc6ICdcdTI5YmUnLAorICAgICdvbGNyb3NzOyc6ICdcdTI5YmInLAorICAgICdvbGluZTsnOiAnXHUyMDNlJywKKyAgICAnb2x0Oyc6ICdcdTI5YzAnLAorICAgICdPbWFjcjsnOiAnXHUwMTRjJywKKyAgICAnb21hY3I7JzogJ1x1MDE0ZCcsCisgICAgJ09tZWdhOyc6ICdcdTAzYTknLAorICAgICdvbWVnYTsnOiAnXHUwM2M5JywKKyAgICAnT21pY3JvbjsnOiAnXHUwMzlmJywKKyAgICAnb21pY3JvbjsnOiAnXHUwM2JmJywKKyAgICAnb21pZDsnOiAnXHUyOWI2JywKKyAgICAnb21pbnVzOyc6ICdcdTIyOTYnLAorICAgICdPb3BmOyc6ICdcVTAwMDFkNTQ2JywKKyAgICAnb29wZjsnOiAnXFUwMDAxZDU2MCcsCisgICAgJ29wYXI7JzogJ1x1MjliNycsCisgICAgJ09wZW5DdXJseURvdWJsZVF1b3RlOyc6ICdcdTIwMWMnLAorICAgICdPcGVuQ3VybHlRdW90ZTsnOiAnXHUyMDE4JywKKyAgICAnb3BlcnA7JzogJ1x1MjliOScsCisgICAgJ29wbHVzOyc6ICdcdTIyOTUnLAorICAgICdPcjsnOiAnXHUyYTU0JywKKyAgICAnb3I7JzogJ1x1MjIyOCcsCisgICAgJ29yYXJyOyc6ICdcdTIxYmInLAorICAgICdvcmQ7JzogJ1x1MmE1ZCcsCisgICAgJ29yZGVyOyc6ICdcdTIxMzQnLAorICAgICdvcmRlcm9mOyc6ICdcdTIxMzQnLAorICAgICdvcmRmJzogJ1x4YWEnLAorICAgICdvcmRmOyc6ICdceGFhJywKKyAgICAnb3JkbSc6ICdceGJhJywKKyAgICAnb3JkbTsnOiAnXHhiYScsCisgICAgJ29yaWdvZjsnOiAnXHUyMmI2JywKKyAgICAnb3JvcjsnOiAnXHUyYTU2JywKKyAgICAnb3JzbG9wZTsnOiAnXHUyYTU3JywKKyAgICAnb3J2Oyc6ICdcdTJhNWInLAorICAgICdvUzsnOiAnXHUyNGM4JywKKyAgICAnT3NjcjsnOiAnXFUwMDAxZDRhYScsCisgICAgJ29zY3I7JzogJ1x1MjEzNCcsCisgICAgJ09zbGFzaCc6ICdceGQ4JywKKyAgICAnb3NsYXNoJzogJ1x4ZjgnLAorICAgICdPc2xhc2g7JzogJ1x4ZDgnLAorICAgICdvc2xhc2g7JzogJ1x4ZjgnLAorICAgICdvc29sOyc6ICdcdTIyOTgnLAorICAgICdPdGlsZGUnOiAnXHhkNScsCisgICAgJ290aWxkZSc6ICdceGY1JywKKyAgICAnT3RpbGRlOyc6ICdceGQ1JywKKyAgICAnb3RpbGRlOyc6ICdceGY1JywKKyAgICAnT3RpbWVzOyc6ICdcdTJhMzcnLAorICAgICdvdGltZXM7JzogJ1x1MjI5NycsCisgICAgJ290aW1lc2FzOyc6ICdcdTJhMzYnLAorICAgICdPdW1sJzogJ1x4ZDYnLAorICAgICdvdW1sJzogJ1x4ZjYnLAorICAgICdPdW1sOyc6ICdceGQ2JywKKyAgICAnb3VtbDsnOiAnXHhmNicsCisgICAgJ292YmFyOyc6ICdcdTIzM2QnLAorICAgICdPdmVyQmFyOyc6ICdcdTIwM2UnLAorICAgICdPdmVyQnJhY2U7JzogJ1x1MjNkZScsCisgICAgJ092ZXJCcmFja2V0Oyc6ICdcdTIzYjQnLAorICAgICdPdmVyUGFyZW50aGVzaXM7JzogJ1x1MjNkYycsCisgICAgJ3BhcjsnOiAnXHUyMjI1JywKKyAgICAncGFyYSc6ICdceGI2JywKKyAgICAncGFyYTsnOiAnXHhiNicsCisgICAgJ3BhcmFsbGVsOyc6ICdcdTIyMjUnLAorICAgICdwYXJzaW07JzogJ1x1MmFmMycsCisgICAgJ3BhcnNsOyc6ICdcdTJhZmQnLAorICAgICdwYXJ0Oyc6ICdcdTIyMDInLAorICAgICdQYXJ0aWFsRDsnOiAnXHUyMjAyJywKKyAgICAnUGN5Oyc6ICdcdTA0MWYnLAorICAgICdwY3k7JzogJ1x1MDQzZicsCisgICAgJ3BlcmNudDsnOiAnJScsCisgICAgJ3BlcmlvZDsnOiAnLicsCisgICAgJ3Blcm1pbDsnOiAnXHUyMDMwJywKKyAgICAncGVycDsnOiAnXHUyMmE1JywKKyAgICAncGVydGVuazsnOiAnXHUyMDMxJywKKyAgICAnUGZyOyc6ICdcVTAwMDFkNTEzJywKKyAgICAncGZyOyc6ICdcVTAwMDFkNTJkJywKKyAgICAnUGhpOyc6ICdcdTAzYTYnLAorICAgICdwaGk7JzogJ1x1MDNjNicsCisgICAgJ3BoaXY7JzogJ1x1MDNkNScsCisgICAgJ3BobW1hdDsnOiAnXHUyMTMzJywKKyAgICAncGhvbmU7JzogJ1x1MjYwZScsCisgICAgJ1BpOyc6ICdcdTAzYTAnLAorICAgICdwaTsnOiAnXHUwM2MwJywKKyAgICAncGl0Y2hmb3JrOyc6ICdcdTIyZDQnLAorICAgICdwaXY7JzogJ1x1MDNkNicsCisgICAgJ3BsYW5jazsnOiAnXHUyMTBmJywKKyAgICAncGxhbmNraDsnOiAnXHUyMTBlJywKKyAgICAncGxhbmt2Oyc6ICdcdTIxMGYnLAorICAgICdwbHVzOyc6ICcrJywKKyAgICAncGx1c2FjaXI7JzogJ1x1MmEyMycsCisgICAgJ3BsdXNiOyc6ICdcdTIyOWUnLAorICAgICdwbHVzY2lyOyc6ICdcdTJhMjInLAorICAgICdwbHVzZG87JzogJ1x1MjIxNCcsCisgICAgJ3BsdXNkdTsnOiAnXHUyYTI1JywKKyAgICAncGx1c2U7JzogJ1x1MmE3MicsCisgICAgJ1BsdXNNaW51czsnOiAnXHhiMScsCisgICAgJ3BsdXNtbic6ICdceGIxJywKKyAgICAncGx1c21uOyc6ICdceGIxJywKKyAgICAncGx1c3NpbTsnOiAnXHUyYTI2JywKKyAgICAncGx1c3R3bzsnOiAnXHUyYTI3JywKKyAgICAncG07JzogJ1x4YjEnLAorICAgICdQb2luY2FyZXBsYW5lOyc6ICdcdTIxMGMnLAorICAgICdwb2ludGludDsnOiAnXHUyYTE1JywKKyAgICAnUG9wZjsnOiAnXHUyMTE5JywKKyAgICAncG9wZjsnOiAnXFUwMDAxZDU2MScsCisgICAgJ3BvdW5kJzogJ1x4YTMnLAorICAgICdwb3VuZDsnOiAnXHhhMycsCisgICAgJ1ByOyc6ICdcdTJhYmInLAorICAgICdwcjsnOiAnXHUyMjdhJywKKyAgICAncHJhcDsnOiAnXHUyYWI3JywKKyAgICAncHJjdWU7JzogJ1x1MjI3YycsCisgICAgJ3ByRTsnOiAnXHUyYWIzJywKKyAgICAncHJlOyc6ICdcdTJhYWYnLAorICAgICdwcmVjOyc6ICdcdTIyN2EnLAorICAgICdwcmVjYXBwcm94Oyc6ICdcdTJhYjcnLAorICAgICdwcmVjY3VybHllcTsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXM7JzogJ1x1MjI3YScsCisgICAgJ1ByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZicsCisgICAgJ1ByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXNUaWxkZTsnOiAnXHUyMjdlJywKKyAgICAncHJlY2VxOyc6ICdcdTJhYWYnLAorICAgICdwcmVjbmFwcHJveDsnOiAnXHUyYWI5JywKKyAgICAncHJlY25lcXE7JzogJ1x1MmFiNScsCisgICAgJ3ByZWNuc2ltOyc6ICdcdTIyZTgnLAorICAgICdwcmVjc2ltOyc6ICdcdTIyN2UnLAorICAgICdQcmltZTsnOiAnXHUyMDMzJywKKyAgICAncHJpbWU7JzogJ1x1MjAzMicsCisgICAgJ3ByaW1lczsnOiAnXHUyMTE5JywKKyAgICAncHJuYXA7JzogJ1x1MmFiOScsCisgICAgJ3BybkU7JzogJ1x1MmFiNScsCisgICAgJ3BybnNpbTsnOiAnXHUyMmU4JywKKyAgICAncHJvZDsnOiAnXHUyMjBmJywKKyAgICAnUHJvZHVjdDsnOiAnXHUyMjBmJywKKyAgICAncHJvZmFsYXI7JzogJ1x1MjMyZScsCisgICAgJ3Byb2ZsaW5lOyc6ICdcdTIzMTInLAorICAgICdwcm9mc3VyZjsnOiAnXHUyMzEzJywKKyAgICAncHJvcDsnOiAnXHUyMjFkJywKKyAgICAnUHJvcG9ydGlvbjsnOiAnXHUyMjM3JywKKyAgICAnUHJvcG9ydGlvbmFsOyc6ICdcdTIyMWQnLAorICAgICdwcm9wdG87JzogJ1x1MjIxZCcsCisgICAgJ3Byc2ltOyc6ICdcdTIyN2UnLAorICAgICdwcnVyZWw7JzogJ1x1MjJiMCcsCisgICAgJ1BzY3I7JzogJ1xVMDAwMWQ0YWInLAorICAgICdwc2NyOyc6ICdcVTAwMDFkNGM1JywKKyAgICAnUHNpOyc6ICdcdTAzYTgnLAorICAgICdwc2k7JzogJ1x1MDNjOCcsCisgICAgJ3B1bmNzcDsnOiAnXHUyMDA4JywKKyAgICAnUWZyOyc6ICdcVTAwMDFkNTE0JywKKyAgICAncWZyOyc6ICdcVTAwMDFkNTJlJywKKyAgICAncWludDsnOiAnXHUyYTBjJywKKyAgICAnUW9wZjsnOiAnXHUyMTFhJywKKyAgICAncW9wZjsnOiAnXFUwMDAxZDU2MicsCisgICAgJ3FwcmltZTsnOiAnXHUyMDU3JywKKyAgICAnUXNjcjsnOiAnXFUwMDAxZDRhYycsCisgICAgJ3FzY3I7JzogJ1xVMDAwMWQ0YzYnLAorICAgICdxdWF0ZXJuaW9uczsnOiAnXHUyMTBkJywKKyAgICAncXVhdGludDsnOiAnXHUyYTE2JywKKyAgICAncXVlc3Q7JzogJz8nLAorICAgICdxdWVzdGVxOyc6ICdcdTIyNWYnLAorICAgICdRVU9UJzogJyInLAorICAgICdxdW90JzogJyInLAorICAgICdRVU9UOyc6ICciJywKKyAgICAncXVvdDsnOiAnIicsCisgICAgJ3JBYXJyOyc6ICdcdTIxZGInLAorICAgICdyYWNlOyc6ICdcdTIyM2RcdTAzMzEnLAorICAgICdSYWN1dGU7JzogJ1x1MDE1NCcsCisgICAgJ3JhY3V0ZTsnOiAnXHUwMTU1JywKKyAgICAncmFkaWM7JzogJ1x1MjIxYScsCisgICAgJ3JhZW1wdHl2Oyc6ICdcdTI5YjMnLAorICAgICdSYW5nOyc6ICdcdTI3ZWInLAorICAgICdyYW5nOyc6ICdcdTI3ZTknLAorICAgICdyYW5nZDsnOiAnXHUyOTkyJywKKyAgICAncmFuZ2U7JzogJ1x1MjlhNScsCisgICAgJ3JhbmdsZTsnOiAnXHUyN2U5JywKKyAgICAncmFxdW8nOiAnXHhiYicsCisgICAgJ3JhcXVvOyc6ICdceGJiJywKKyAgICAnUmFycjsnOiAnXHUyMWEwJywKKyAgICAnckFycjsnOiAnXHUyMWQyJywKKyAgICAncmFycjsnOiAnXHUyMTkyJywKKyAgICAncmFycmFwOyc6ICdcdTI5NzUnLAorICAgICdyYXJyYjsnOiAnXHUyMWU1JywKKyAgICAncmFycmJmczsnOiAnXHUyOTIwJywKKyAgICAncmFycmM7JzogJ1x1MjkzMycsCisgICAgJ3JhcnJmczsnOiAnXHUyOTFlJywKKyAgICAncmFycmhrOyc6ICdcdTIxYWEnLAorICAgICdyYXJybHA7JzogJ1x1MjFhYycsCisgICAgJ3JhcnJwbDsnOiAnXHUyOTQ1JywKKyAgICAncmFycnNpbTsnOiAnXHUyOTc0JywKKyAgICAnUmFycnRsOyc6ICdcdTI5MTYnLAorICAgICdyYXJydGw7JzogJ1x1MjFhMycsCisgICAgJ3JhcnJ3Oyc6ICdcdTIxOWQnLAorICAgICdyQXRhaWw7JzogJ1x1MjkxYycsCisgICAgJ3JhdGFpbDsnOiAnXHUyOTFhJywKKyAgICAncmF0aW87JzogJ1x1MjIzNicsCisgICAgJ3JhdGlvbmFsczsnOiAnXHUyMTFhJywKKyAgICAnUkJhcnI7JzogJ1x1MjkxMCcsCisgICAgJ3JCYXJyOyc6ICdcdTI5MGYnLAorICAgICdyYmFycjsnOiAnXHUyOTBkJywKKyAgICAncmJicms7JzogJ1x1Mjc3MycsCisgICAgJ3JicmFjZTsnOiAnfScsCisgICAgJ3JicmFjazsnOiAnXScsCisgICAgJ3JicmtlOyc6ICdcdTI5OGMnLAorICAgICdyYnJrc2xkOyc6ICdcdTI5OGUnLAorICAgICdyYnJrc2x1Oyc6ICdcdTI5OTAnLAorICAgICdSY2Fyb247JzogJ1x1MDE1OCcsCisgICAgJ3JjYXJvbjsnOiAnXHUwMTU5JywKKyAgICAnUmNlZGlsOyc6ICdcdTAxNTYnLAorICAgICdyY2VkaWw7JzogJ1x1MDE1NycsCisgICAgJ3JjZWlsOyc6ICdcdTIzMDknLAorICAgICdyY3ViOyc6ICd9JywKKyAgICAnUmN5Oyc6ICdcdTA0MjAnLAorICAgICdyY3k7JzogJ1x1MDQ0MCcsCisgICAgJ3JkY2E7JzogJ1x1MjkzNycsCisgICAgJ3JkbGRoYXI7JzogJ1x1Mjk2OScsCisgICAgJ3JkcXVvOyc6ICdcdTIwMWQnLAorICAgICdyZHF1b3I7JzogJ1x1MjAxZCcsCisgICAgJ3Jkc2g7JzogJ1x1MjFiMycsCisgICAgJ1JlOyc6ICdcdTIxMWMnLAorICAgICdyZWFsOyc6ICdcdTIxMWMnLAorICAgICdyZWFsaW5lOyc6ICdcdTIxMWInLAorICAgICdyZWFscGFydDsnOiAnXHUyMTFjJywKKyAgICAncmVhbHM7JzogJ1x1MjExZCcsCisgICAgJ3JlY3Q7JzogJ1x1MjVhZCcsCisgICAgJ1JFRyc6ICdceGFlJywKKyAgICAncmVnJzogJ1x4YWUnLAorICAgICdSRUc7JzogJ1x4YWUnLAorICAgICdyZWc7JzogJ1x4YWUnLAorICAgICdSZXZlcnNlRWxlbWVudDsnOiAnXHUyMjBiJywKKyAgICAnUmV2ZXJzZUVxdWlsaWJyaXVtOyc6ICdcdTIxY2InLAorICAgICdSZXZlcnNlVXBFcXVpbGlicml1bTsnOiAnXHUyOTZmJywKKyAgICAncmZpc2h0Oyc6ICdcdTI5N2QnLAorICAgICdyZmxvb3I7JzogJ1x1MjMwYicsCisgICAgJ1JmcjsnOiAnXHUyMTFjJywKKyAgICAncmZyOyc6ICdcVTAwMDFkNTJmJywKKyAgICAnckhhcjsnOiAnXHUyOTY0JywKKyAgICAncmhhcmQ7JzogJ1x1MjFjMScsCisgICAgJ3JoYXJ1Oyc6ICdcdTIxYzAnLAorICAgICdyaGFydWw7JzogJ1x1Mjk2YycsCisgICAgJ1JobzsnOiAnXHUwM2ExJywKKyAgICAncmhvOyc6ICdcdTAzYzEnLAorICAgICdyaG92Oyc6ICdcdTAzZjEnLAorICAgICdSaWdodEFuZ2xlQnJhY2tldDsnOiAnXHUyN2U5JywKKyAgICAnUmlnaHRBcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRhcnJvdzsnOiAnXHUyMWQyJywKKyAgICAncmlnaHRhcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRBcnJvd0JhcjsnOiAnXHUyMWU1JywKKyAgICAnUmlnaHRBcnJvd0xlZnRBcnJvdzsnOiAnXHUyMWM0JywKKyAgICAncmlnaHRhcnJvd3RhaWw7JzogJ1x1MjFhMycsCisgICAgJ1JpZ2h0Q2VpbGluZzsnOiAnXHUyMzA5JywKKyAgICAnUmlnaHREb3VibGVCcmFja2V0Oyc6ICdcdTI3ZTcnLAorICAgICdSaWdodERvd25UZWVWZWN0b3I7JzogJ1x1Mjk1ZCcsCisgICAgJ1JpZ2h0RG93blZlY3RvcjsnOiAnXHUyMWMyJywKKyAgICAnUmlnaHREb3duVmVjdG9yQmFyOyc6ICdcdTI5NTUnLAorICAgICdSaWdodEZsb29yOyc6ICdcdTIzMGInLAorICAgICdyaWdodGhhcnBvb25kb3duOyc6ICdcdTIxYzEnLAorICAgICdyaWdodGhhcnBvb251cDsnOiAnXHUyMWMwJywKKyAgICAncmlnaHRsZWZ0YXJyb3dzOyc6ICdcdTIxYzQnLAorICAgICdyaWdodGxlZnRoYXJwb29uczsnOiAnXHUyMWNjJywKKyAgICAncmlnaHRyaWdodGFycm93czsnOiAnXHUyMWM5JywKKyAgICAncmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxOWQnLAorICAgICdSaWdodFRlZTsnOiAnXHUyMmEyJywKKyAgICAnUmlnaHRUZWVBcnJvdzsnOiAnXHUyMWE2JywKKyAgICAnUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1YicsCisgICAgJ3JpZ2h0dGhyZWV0aW1lczsnOiAnXHUyMmNjJywKKyAgICAnUmlnaHRUcmlhbmdsZTsnOiAnXHUyMmIzJywKKyAgICAnUmlnaHRUcmlhbmdsZUJhcjsnOiAnXHUyOWQwJywKKyAgICAnUmlnaHRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyYjUnLAorICAgICdSaWdodFVwRG93blZlY3RvcjsnOiAnXHUyOTRmJywKKyAgICAnUmlnaHRVcFRlZVZlY3RvcjsnOiAnXHUyOTVjJywKKyAgICAnUmlnaHRVcFZlY3RvcjsnOiAnXHUyMWJlJywKKyAgICAnUmlnaHRVcFZlY3RvckJhcjsnOiAnXHUyOTU0JywKKyAgICAnUmlnaHRWZWN0b3I7JzogJ1x1MjFjMCcsCisgICAgJ1JpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTMnLAorICAgICdyaW5nOyc6ICdcdTAyZGEnLAorICAgICdyaXNpbmdkb3RzZXE7JzogJ1x1MjI1MycsCisgICAgJ3JsYXJyOyc6ICdcdTIxYzQnLAorICAgICdybGhhcjsnOiAnXHUyMWNjJywKKyAgICAncmxtOyc6ICdcdTIwMGYnLAorICAgICdybW91c3Q7JzogJ1x1MjNiMScsCisgICAgJ3Jtb3VzdGFjaGU7JzogJ1x1MjNiMScsCisgICAgJ3JubWlkOyc6ICdcdTJhZWUnLAorICAgICdyb2FuZzsnOiAnXHUyN2VkJywKKyAgICAncm9hcnI7JzogJ1x1MjFmZScsCisgICAgJ3JvYnJrOyc6ICdcdTI3ZTcnLAorICAgICdyb3BhcjsnOiAnXHUyOTg2JywKKyAgICAnUm9wZjsnOiAnXHUyMTFkJywKKyAgICAncm9wZjsnOiAnXFUwMDAxZDU2MycsCisgICAgJ3JvcGx1czsnOiAnXHUyYTJlJywKKyAgICAncm90aW1lczsnOiAnXHUyYTM1JywKKyAgICAnUm91bmRJbXBsaWVzOyc6ICdcdTI5NzAnLAorICAgICdycGFyOyc6ICcpJywKKyAgICAncnBhcmd0Oyc6ICdcdTI5OTQnLAorICAgICdycHBvbGludDsnOiAnXHUyYTEyJywKKyAgICAncnJhcnI7JzogJ1x1MjFjOScsCisgICAgJ1JyaWdodGFycm93Oyc6ICdcdTIxZGInLAorICAgICdyc2FxdW87JzogJ1x1MjAzYScsCisgICAgJ1JzY3I7JzogJ1x1MjExYicsCisgICAgJ3JzY3I7JzogJ1xVMDAwMWQ0YzcnLAorICAgICdSc2g7JzogJ1x1MjFiMScsCisgICAgJ3JzaDsnOiAnXHUyMWIxJywKKyAgICAncnNxYjsnOiAnXScsCisgICAgJ3JzcXVvOyc6ICdcdTIwMTknLAorICAgICdyc3F1b3I7JzogJ1x1MjAxOScsCisgICAgJ3J0aHJlZTsnOiAnXHUyMmNjJywKKyAgICAncnRpbWVzOyc6ICdcdTIyY2EnLAorICAgICdydHJpOyc6ICdcdTI1YjknLAorICAgICdydHJpZTsnOiAnXHUyMmI1JywKKyAgICAncnRyaWY7JzogJ1x1MjViOCcsCisgICAgJ3J0cmlsdHJpOyc6ICdcdTI5Y2UnLAorICAgICdSdWxlRGVsYXllZDsnOiAnXHUyOWY0JywKKyAgICAncnVsdWhhcjsnOiAnXHUyOTY4JywKKyAgICAncng7JzogJ1x1MjExZScsCisgICAgJ1NhY3V0ZTsnOiAnXHUwMTVhJywKKyAgICAnc2FjdXRlOyc6ICdcdTAxNWInLAorICAgICdzYnF1bzsnOiAnXHUyMDFhJywKKyAgICAnU2M7JzogJ1x1MmFiYycsCisgICAgJ3NjOyc6ICdcdTIyN2InLAorICAgICdzY2FwOyc6ICdcdTJhYjgnLAorICAgICdTY2Fyb247JzogJ1x1MDE2MCcsCisgICAgJ3NjYXJvbjsnOiAnXHUwMTYxJywKKyAgICAnc2NjdWU7JzogJ1x1MjI3ZCcsCisgICAgJ3NjRTsnOiAnXHUyYWI0JywKKyAgICAnc2NlOyc6ICdcdTJhYjAnLAorICAgICdTY2VkaWw7JzogJ1x1MDE1ZScsCisgICAgJ3NjZWRpbDsnOiAnXHUwMTVmJywKKyAgICAnU2NpcmM7JzogJ1x1MDE1YycsCisgICAgJ3NjaXJjOyc6ICdcdTAxNWQnLAorICAgICdzY25hcDsnOiAnXHUyYWJhJywKKyAgICAnc2NuRTsnOiAnXHUyYWI2JywKKyAgICAnc2Nuc2ltOyc6ICdcdTIyZTknLAorICAgICdzY3BvbGludDsnOiAnXHUyYTEzJywKKyAgICAnc2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1NjeTsnOiAnXHUwNDIxJywKKyAgICAnc2N5Oyc6ICdcdTA0NDEnLAorICAgICdzZG90Oyc6ICdcdTIyYzUnLAorICAgICdzZG90YjsnOiAnXHUyMmExJywKKyAgICAnc2RvdGU7JzogJ1x1MmE2NicsCisgICAgJ3NlYXJoazsnOiAnXHUyOTI1JywKKyAgICAnc2VBcnI7JzogJ1x1MjFkOCcsCisgICAgJ3NlYXJyOyc6ICdcdTIxOTgnLAorICAgICdzZWFycm93Oyc6ICdcdTIxOTgnLAorICAgICdzZWN0JzogJ1x4YTcnLAorICAgICdzZWN0Oyc6ICdceGE3JywKKyAgICAnc2VtaTsnOiAnOycsCisgICAgJ3Nlc3dhcjsnOiAnXHUyOTI5JywKKyAgICAnc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NldG1uOyc6ICdcdTIyMTYnLAorICAgICdzZXh0Oyc6ICdcdTI3MzYnLAorICAgICdTZnI7JzogJ1xVMDAwMWQ1MTYnLAorICAgICdzZnI7JzogJ1xVMDAwMWQ1MzAnLAorICAgICdzZnJvd247JzogJ1x1MjMyMicsCisgICAgJ3NoYXJwOyc6ICdcdTI2NmYnLAorICAgICdTSENIY3k7JzogJ1x1MDQyOScsCisgICAgJ3NoY2hjeTsnOiAnXHUwNDQ5JywKKyAgICAnU0hjeTsnOiAnXHUwNDI4JywKKyAgICAnc2hjeTsnOiAnXHUwNDQ4JywKKyAgICAnU2hvcnREb3duQXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ1Nob3J0TGVmdEFycm93Oyc6ICdcdTIxOTAnLAorICAgICdzaG9ydG1pZDsnOiAnXHUyMjIzJywKKyAgICAnc2hvcnRwYXJhbGxlbDsnOiAnXHUyMjI1JywKKyAgICAnU2hvcnRSaWdodEFycm93Oyc6ICdcdTIxOTInLAorICAgICdTaG9ydFVwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ3NoeSc6ICdceGFkJywKKyAgICAnc2h5Oyc6ICdceGFkJywKKyAgICAnU2lnbWE7JzogJ1x1MDNhMycsCisgICAgJ3NpZ21hOyc6ICdcdTAzYzMnLAorICAgICdzaWdtYWY7JzogJ1x1MDNjMicsCisgICAgJ3NpZ21hdjsnOiAnXHUwM2MyJywKKyAgICAnc2ltOyc6ICdcdTIyM2MnLAorICAgICdzaW1kb3Q7JzogJ1x1MmE2YScsCisgICAgJ3NpbWU7JzogJ1x1MjI0MycsCisgICAgJ3NpbWVxOyc6ICdcdTIyNDMnLAorICAgICdzaW1nOyc6ICdcdTJhOWUnLAorICAgICdzaW1nRTsnOiAnXHUyYWEwJywKKyAgICAnc2ltbDsnOiAnXHUyYTlkJywKKyAgICAnc2ltbEU7JzogJ1x1MmE5ZicsCisgICAgJ3NpbW5lOyc6ICdcdTIyNDYnLAorICAgICdzaW1wbHVzOyc6ICdcdTJhMjQnLAorICAgICdzaW1yYXJyOyc6ICdcdTI5NzInLAorICAgICdzbGFycjsnOiAnXHUyMTkwJywKKyAgICAnU21hbGxDaXJjbGU7JzogJ1x1MjIxOCcsCisgICAgJ3NtYWxsc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NtYXNocDsnOiAnXHUyYTMzJywKKyAgICAnc21lcGFyc2w7JzogJ1x1MjllNCcsCisgICAgJ3NtaWQ7JzogJ1x1MjIyMycsCisgICAgJ3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzbXQ7JzogJ1x1MmFhYScsCisgICAgJ3NtdGU7JzogJ1x1MmFhYycsCisgICAgJ3NtdGVzOyc6ICdcdTJhYWNcdWZlMDAnLAorICAgICdTT0ZUY3k7JzogJ1x1MDQyYycsCisgICAgJ3NvZnRjeTsnOiAnXHUwNDRjJywKKyAgICAnc29sOyc6ICcvJywKKyAgICAnc29sYjsnOiAnXHUyOWM0JywKKyAgICAnc29sYmFyOyc6ICdcdTIzM2YnLAorICAgICdTb3BmOyc6ICdcVTAwMDFkNTRhJywKKyAgICAnc29wZjsnOiAnXFUwMDAxZDU2NCcsCisgICAgJ3NwYWRlczsnOiAnXHUyNjYwJywKKyAgICAnc3BhZGVzdWl0Oyc6ICdcdTI2NjAnLAorICAgICdzcGFyOyc6ICdcdTIyMjUnLAorICAgICdzcWNhcDsnOiAnXHUyMjkzJywKKyAgICAnc3FjYXBzOyc6ICdcdTIyOTNcdWZlMDAnLAorICAgICdzcWN1cDsnOiAnXHUyMjk0JywKKyAgICAnc3FjdXBzOyc6ICdcdTIyOTRcdWZlMDAnLAorICAgICdTcXJ0Oyc6ICdcdTIyMWEnLAorICAgICdzcXN1YjsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJlOyc6ICdcdTIyOTEnLAorICAgICdzcXN1YnNldDsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJzZXRlcTsnOiAnXHUyMjkxJywKKyAgICAnc3FzdXA7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3VwZTsnOiAnXHUyMjkyJywKKyAgICAnc3FzdXBzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3Vwc2V0ZXE7JzogJ1x1MjI5MicsCisgICAgJ3NxdTsnOiAnXHUyNWExJywKKyAgICAnU3F1YXJlOyc6ICdcdTI1YTEnLAorICAgICdzcXVhcmU7JzogJ1x1MjVhMScsCisgICAgJ1NxdWFyZUludGVyc2VjdGlvbjsnOiAnXHUyMjkzJywKKyAgICAnU3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGYnLAorICAgICdTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMjkxJywKKyAgICAnU3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ1NxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjI5MicsCisgICAgJ1NxdWFyZVVuaW9uOyc6ICdcdTIyOTQnLAorICAgICdzcXVhcmY7JzogJ1x1MjVhYScsCisgICAgJ3NxdWY7JzogJ1x1MjVhYScsCisgICAgJ3NyYXJyOyc6ICdcdTIxOTInLAorICAgICdTc2NyOyc6ICdcVTAwMDFkNGFlJywKKyAgICAnc3NjcjsnOiAnXFUwMDAxZDRjOCcsCisgICAgJ3NzZXRtbjsnOiAnXHUyMjE2JywKKyAgICAnc3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzc3RhcmY7JzogJ1x1MjJjNicsCisgICAgJ1N0YXI7JzogJ1x1MjJjNicsCisgICAgJ3N0YXI7JzogJ1x1MjYwNicsCisgICAgJ3N0YXJmOyc6ICdcdTI2MDUnLAorICAgICdzdHJhaWdodGVwc2lsb247JzogJ1x1MDNmNScsCisgICAgJ3N0cmFpZ2h0cGhpOyc6ICdcdTAzZDUnLAorICAgICdzdHJuczsnOiAnXHhhZicsCisgICAgJ1N1YjsnOiAnXHUyMmQwJywKKyAgICAnc3ViOyc6ICdcdTIyODInLAorICAgICdzdWJkb3Q7JzogJ1x1MmFiZCcsCisgICAgJ3N1YkU7JzogJ1x1MmFjNScsCisgICAgJ3N1YmU7JzogJ1x1MjI4NicsCisgICAgJ3N1YmVkb3Q7JzogJ1x1MmFjMycsCisgICAgJ3N1Ym11bHQ7JzogJ1x1MmFjMScsCisgICAgJ3N1Ym5FOyc6ICdcdTJhY2InLAorICAgICdzdWJuZTsnOiAnXHUyMjhhJywKKyAgICAnc3VicGx1czsnOiAnXHUyYWJmJywKKyAgICAnc3VicmFycjsnOiAnXHUyOTc5JywKKyAgICAnU3Vic2V0Oyc6ICdcdTIyZDAnLAorICAgICdzdWJzZXQ7JzogJ1x1MjI4MicsCisgICAgJ3N1YnNldGVxOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRlcXE7JzogJ1x1MmFjNScsCisgICAgJ1N1YnNldEVxdWFsOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRuZXE7JzogJ1x1MjI4YScsCisgICAgJ3N1YnNldG5lcXE7JzogJ1x1MmFjYicsCisgICAgJ3N1YnNpbTsnOiAnXHUyYWM3JywKKyAgICAnc3Vic3ViOyc6ICdcdTJhZDUnLAorICAgICdzdWJzdXA7JzogJ1x1MmFkMycsCisgICAgJ3N1Y2M7JzogJ1x1MjI3YicsCisgICAgJ3N1Y2NhcHByb3g7JzogJ1x1MmFiOCcsCisgICAgJ3N1Y2NjdXJseWVxOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkczsnOiAnXHUyMjdiJywKKyAgICAnU3VjY2VlZHNFcXVhbDsnOiAnXHUyYWIwJywKKyAgICAnU3VjY2VlZHNTbGFudEVxdWFsOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2YnLAorICAgICdzdWNjZXE7JzogJ1x1MmFiMCcsCisgICAgJ3N1Y2NuYXBwcm94Oyc6ICdcdTJhYmEnLAorICAgICdzdWNjbmVxcTsnOiAnXHUyYWI2JywKKyAgICAnc3VjY25zaW07JzogJ1x1MjJlOScsCisgICAgJ3N1Y2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1N1Y2hUaGF0Oyc6ICdcdTIyMGInLAorICAgICdTdW07JzogJ1x1MjIxMScsCisgICAgJ3N1bTsnOiAnXHUyMjExJywKKyAgICAnc3VuZzsnOiAnXHUyNjZhJywKKyAgICAnc3VwMSc6ICdceGI5JywKKyAgICAnc3VwMTsnOiAnXHhiOScsCisgICAgJ3N1cDInOiAnXHhiMicsCisgICAgJ3N1cDI7JzogJ1x4YjInLAorICAgICdzdXAzJzogJ1x4YjMnLAorICAgICdzdXAzOyc6ICdceGIzJywKKyAgICAnU3VwOyc6ICdcdTIyZDEnLAorICAgICdzdXA7JzogJ1x1MjI4MycsCisgICAgJ3N1cGRvdDsnOiAnXHUyYWJlJywKKyAgICAnc3VwZHN1YjsnOiAnXHUyYWQ4JywKKyAgICAnc3VwRTsnOiAnXHUyYWM2JywKKyAgICAnc3VwZTsnOiAnXHUyMjg3JywKKyAgICAnc3VwZWRvdDsnOiAnXHUyYWM0JywKKyAgICAnU3VwZXJzZXQ7JzogJ1x1MjI4MycsCisgICAgJ1N1cGVyc2V0RXF1YWw7JzogJ1x1MjI4NycsCisgICAgJ3N1cGhzb2w7JzogJ1x1MjdjOScsCisgICAgJ3N1cGhzdWI7JzogJ1x1MmFkNycsCisgICAgJ3N1cGxhcnI7JzogJ1x1Mjk3YicsCisgICAgJ3N1cG11bHQ7JzogJ1x1MmFjMicsCisgICAgJ3N1cG5FOyc6ICdcdTJhY2MnLAorICAgICdzdXBuZTsnOiAnXHUyMjhiJywKKyAgICAnc3VwcGx1czsnOiAnXHUyYWMwJywKKyAgICAnU3Vwc2V0Oyc6ICdcdTIyZDEnLAorICAgICdzdXBzZXQ7JzogJ1x1MjI4MycsCisgICAgJ3N1cHNldGVxOyc6ICdcdTIyODcnLAorICAgICdzdXBzZXRlcXE7JzogJ1x1MmFjNicsCisgICAgJ3N1cHNldG5lcTsnOiAnXHUyMjhiJywKKyAgICAnc3Vwc2V0bmVxcTsnOiAnXHUyYWNjJywKKyAgICAnc3Vwc2ltOyc6ICdcdTJhYzgnLAorICAgICdzdXBzdWI7JzogJ1x1MmFkNCcsCisgICAgJ3N1cHN1cDsnOiAnXHUyYWQ2JywKKyAgICAnc3dhcmhrOyc6ICdcdTI5MjYnLAorICAgICdzd0FycjsnOiAnXHUyMWQ5JywKKyAgICAnc3dhcnI7JzogJ1x1MjE5OScsCisgICAgJ3N3YXJyb3c7JzogJ1x1MjE5OScsCisgICAgJ3N3bndhcjsnOiAnXHUyOTJhJywKKyAgICAnc3psaWcnOiAnXHhkZicsCisgICAgJ3N6bGlnOyc6ICdceGRmJywKKyAgICAnVGFiOyc6ICdcdCcsCisgICAgJ3RhcmdldDsnOiAnXHUyMzE2JywKKyAgICAnVGF1Oyc6ICdcdTAzYTQnLAorICAgICd0YXU7JzogJ1x1MDNjNCcsCisgICAgJ3Ricms7JzogJ1x1MjNiNCcsCisgICAgJ1RjYXJvbjsnOiAnXHUwMTY0JywKKyAgICAndGNhcm9uOyc6ICdcdTAxNjUnLAorICAgICdUY2VkaWw7JzogJ1x1MDE2MicsCisgICAgJ3RjZWRpbDsnOiAnXHUwMTYzJywKKyAgICAnVGN5Oyc6ICdcdTA0MjInLAorICAgICd0Y3k7JzogJ1x1MDQ0MicsCisgICAgJ3Rkb3Q7JzogJ1x1MjBkYicsCisgICAgJ3RlbHJlYzsnOiAnXHUyMzE1JywKKyAgICAnVGZyOyc6ICdcVTAwMDFkNTE3JywKKyAgICAndGZyOyc6ICdcVTAwMDFkNTMxJywKKyAgICAndGhlcmU0Oyc6ICdcdTIyMzQnLAorICAgICdUaGVyZWZvcmU7JzogJ1x1MjIzNCcsCisgICAgJ3RoZXJlZm9yZTsnOiAnXHUyMjM0JywKKyAgICAnVGhldGE7JzogJ1x1MDM5OCcsCisgICAgJ3RoZXRhOyc6ICdcdTAzYjgnLAorICAgICd0aGV0YXN5bTsnOiAnXHUwM2QxJywKKyAgICAndGhldGF2Oyc6ICdcdTAzZDEnLAorICAgICd0aGlja2FwcHJveDsnOiAnXHUyMjQ4JywKKyAgICAndGhpY2tzaW07JzogJ1x1MjIzYycsCisgICAgJ1RoaWNrU3BhY2U7JzogJ1x1MjA1Zlx1MjAwYScsCisgICAgJ3RoaW5zcDsnOiAnXHUyMDA5JywKKyAgICAnVGhpblNwYWNlOyc6ICdcdTIwMDknLAorICAgICd0aGthcDsnOiAnXHUyMjQ4JywKKyAgICAndGhrc2ltOyc6ICdcdTIyM2MnLAorICAgICdUSE9STic6ICdceGRlJywKKyAgICAndGhvcm4nOiAnXHhmZScsCisgICAgJ1RIT1JOOyc6ICdceGRlJywKKyAgICAndGhvcm47JzogJ1x4ZmUnLAorICAgICdUaWxkZTsnOiAnXHUyMjNjJywKKyAgICAndGlsZGU7JzogJ1x1MDJkYycsCisgICAgJ1RpbGRlRXF1YWw7JzogJ1x1MjI0MycsCisgICAgJ1RpbGRlRnVsbEVxdWFsOyc6ICdcdTIyNDUnLAorICAgICdUaWxkZVRpbGRlOyc6ICdcdTIyNDgnLAorICAgICd0aW1lcyc6ICdceGQ3JywKKyAgICAndGltZXM7JzogJ1x4ZDcnLAorICAgICd0aW1lc2I7JzogJ1x1MjJhMCcsCisgICAgJ3RpbWVzYmFyOyc6ICdcdTJhMzEnLAorICAgICd0aW1lc2Q7JzogJ1x1MmEzMCcsCisgICAgJ3RpbnQ7JzogJ1x1MjIyZCcsCisgICAgJ3RvZWE7JzogJ1x1MjkyOCcsCisgICAgJ3RvcDsnOiAnXHUyMmE0JywKKyAgICAndG9wYm90Oyc6ICdcdTIzMzYnLAorICAgICd0b3BjaXI7JzogJ1x1MmFmMScsCisgICAgJ1RvcGY7JzogJ1xVMDAwMWQ1NGInLAorICAgICd0b3BmOyc6ICdcVTAwMDFkNTY1JywKKyAgICAndG9wZm9yazsnOiAnXHUyYWRhJywKKyAgICAndG9zYTsnOiAnXHUyOTI5JywKKyAgICAndHByaW1lOyc6ICdcdTIwMzQnLAorICAgICdUUkFERTsnOiAnXHUyMTIyJywKKyAgICAndHJhZGU7JzogJ1x1MjEyMicsCisgICAgJ3RyaWFuZ2xlOyc6ICdcdTI1YjUnLAorICAgICd0cmlhbmdsZWRvd247JzogJ1x1MjViZicsCisgICAgJ3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMzJywKKyAgICAndHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJiNCcsCisgICAgJ3RyaWFuZ2xlcTsnOiAnXHUyMjVjJywKKyAgICAndHJpYW5nbGVyaWdodDsnOiAnXHUyNWI5JywKKyAgICAndHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyYjUnLAorICAgICd0cmlkb3Q7JzogJ1x1MjVlYycsCisgICAgJ3RyaWU7JzogJ1x1MjI1YycsCisgICAgJ3RyaW1pbnVzOyc6ICdcdTJhM2EnLAorICAgICdUcmlwbGVEb3Q7JzogJ1x1MjBkYicsCisgICAgJ3RyaXBsdXM7JzogJ1x1MmEzOScsCisgICAgJ3RyaXNiOyc6ICdcdTI5Y2QnLAorICAgICd0cml0aW1lOyc6ICdcdTJhM2InLAorICAgICd0cnBleml1bTsnOiAnXHUyM2UyJywKKyAgICAnVHNjcjsnOiAnXFUwMDAxZDRhZicsCisgICAgJ3RzY3I7JzogJ1xVMDAwMWQ0YzknLAorICAgICdUU2N5Oyc6ICdcdTA0MjYnLAorICAgICd0c2N5Oyc6ICdcdTA0NDYnLAorICAgICdUU0hjeTsnOiAnXHUwNDBiJywKKyAgICAndHNoY3k7JzogJ1x1MDQ1YicsCisgICAgJ1RzdHJvazsnOiAnXHUwMTY2JywKKyAgICAndHN0cm9rOyc6ICdcdTAxNjcnLAorICAgICd0d2l4dDsnOiAnXHUyMjZjJywKKyAgICAndHdvaGVhZGxlZnRhcnJvdzsnOiAnXHUyMTllJywKKyAgICAndHdvaGVhZHJpZ2h0YXJyb3c7JzogJ1x1MjFhMCcsCisgICAgJ1VhY3V0ZSc6ICdceGRhJywKKyAgICAndWFjdXRlJzogJ1x4ZmEnLAorICAgICdVYWN1dGU7JzogJ1x4ZGEnLAorICAgICd1YWN1dGU7JzogJ1x4ZmEnLAorICAgICdVYXJyOyc6ICdcdTIxOWYnLAorICAgICd1QXJyOyc6ICdcdTIxZDEnLAorICAgICd1YXJyOyc6ICdcdTIxOTEnLAorICAgICdVYXJyb2NpcjsnOiAnXHUyOTQ5JywKKyAgICAnVWJyY3k7JzogJ1x1MDQwZScsCisgICAgJ3VicmN5Oyc6ICdcdTA0NWUnLAorICAgICdVYnJldmU7JzogJ1x1MDE2YycsCisgICAgJ3VicmV2ZTsnOiAnXHUwMTZkJywKKyAgICAnVWNpcmMnOiAnXHhkYicsCisgICAgJ3VjaXJjJzogJ1x4ZmInLAorICAgICdVY2lyYzsnOiAnXHhkYicsCisgICAgJ3VjaXJjOyc6ICdceGZiJywKKyAgICAnVWN5Oyc6ICdcdTA0MjMnLAorICAgICd1Y3k7JzogJ1x1MDQ0MycsCisgICAgJ3VkYXJyOyc6ICdcdTIxYzUnLAorICAgICdVZGJsYWM7JzogJ1x1MDE3MCcsCisgICAgJ3VkYmxhYzsnOiAnXHUwMTcxJywKKyAgICAndWRoYXI7JzogJ1x1Mjk2ZScsCisgICAgJ3VmaXNodDsnOiAnXHUyOTdlJywKKyAgICAnVWZyOyc6ICdcVTAwMDFkNTE4JywKKyAgICAndWZyOyc6ICdcVTAwMDFkNTMyJywKKyAgICAnVWdyYXZlJzogJ1x4ZDknLAorICAgICd1Z3JhdmUnOiAnXHhmOScsCisgICAgJ1VncmF2ZTsnOiAnXHhkOScsCisgICAgJ3VncmF2ZTsnOiAnXHhmOScsCisgICAgJ3VIYXI7JzogJ1x1Mjk2MycsCisgICAgJ3VoYXJsOyc6ICdcdTIxYmYnLAorICAgICd1aGFycjsnOiAnXHUyMWJlJywKKyAgICAndWhibGs7JzogJ1x1MjU4MCcsCisgICAgJ3VsY29ybjsnOiAnXHUyMzFjJywKKyAgICAndWxjb3JuZXI7JzogJ1x1MjMxYycsCisgICAgJ3VsY3JvcDsnOiAnXHUyMzBmJywKKyAgICAndWx0cmk7JzogJ1x1MjVmOCcsCisgICAgJ1VtYWNyOyc6ICdcdTAxNmEnLAorICAgICd1bWFjcjsnOiAnXHUwMTZiJywKKyAgICAndW1sJzogJ1x4YTgnLAorICAgICd1bWw7JzogJ1x4YTgnLAorICAgICdVbmRlckJhcjsnOiAnXycsCisgICAgJ1VuZGVyQnJhY2U7JzogJ1x1MjNkZicsCisgICAgJ1VuZGVyQnJhY2tldDsnOiAnXHUyM2I1JywKKyAgICAnVW5kZXJQYXJlbnRoZXNpczsnOiAnXHUyM2RkJywKKyAgICAnVW5pb247JzogJ1x1MjJjMycsCisgICAgJ1VuaW9uUGx1czsnOiAnXHUyMjhlJywKKyAgICAnVW9nb247JzogJ1x1MDE3MicsCisgICAgJ3VvZ29uOyc6ICdcdTAxNzMnLAorICAgICdVb3BmOyc6ICdcVTAwMDFkNTRjJywKKyAgICAndW9wZjsnOiAnXFUwMDAxZDU2NicsCisgICAgJ1VwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwYXJyb3c7JzogJ1x1MjFkMScsCisgICAgJ3VwYXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwQXJyb3dCYXI7JzogJ1x1MjkxMicsCisgICAgJ1VwQXJyb3dEb3duQXJyb3c7JzogJ1x1MjFjNScsCisgICAgJ1VwRG93bkFycm93Oyc6ICdcdTIxOTUnLAorICAgICdVcGRvd25hcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAndXBkb3duYXJyb3c7JzogJ1x1MjE5NScsCisgICAgJ1VwRXF1aWxpYnJpdW07JzogJ1x1Mjk2ZScsCisgICAgJ3VwaGFycG9vbmxlZnQ7JzogJ1x1MjFiZicsCisgICAgJ3VwaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYmUnLAorICAgICd1cGx1czsnOiAnXHUyMjhlJywKKyAgICAnVXBwZXJMZWZ0QXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ1VwcGVyUmlnaHRBcnJvdzsnOiAnXHUyMTk3JywKKyAgICAnVXBzaTsnOiAnXHUwM2QyJywKKyAgICAndXBzaTsnOiAnXHUwM2M1JywKKyAgICAndXBzaWg7JzogJ1x1MDNkMicsCisgICAgJ1Vwc2lsb247JzogJ1x1MDNhNScsCisgICAgJ3Vwc2lsb247JzogJ1x1MDNjNScsCisgICAgJ1VwVGVlOyc6ICdcdTIyYTUnLAorICAgICdVcFRlZUFycm93Oyc6ICdcdTIxYTUnLAorICAgICd1cHVwYXJyb3dzOyc6ICdcdTIxYzgnLAorICAgICd1cmNvcm47JzogJ1x1MjMxZCcsCisgICAgJ3VyY29ybmVyOyc6ICdcdTIzMWQnLAorICAgICd1cmNyb3A7JzogJ1x1MjMwZScsCisgICAgJ1VyaW5nOyc6ICdcdTAxNmUnLAorICAgICd1cmluZzsnOiAnXHUwMTZmJywKKyAgICAndXJ0cmk7JzogJ1x1MjVmOScsCisgICAgJ1VzY3I7JzogJ1xVMDAwMWQ0YjAnLAorICAgICd1c2NyOyc6ICdcVTAwMDFkNGNhJywKKyAgICAndXRkb3Q7JzogJ1x1MjJmMCcsCisgICAgJ1V0aWxkZTsnOiAnXHUwMTY4JywKKyAgICAndXRpbGRlOyc6ICdcdTAxNjknLAorICAgICd1dHJpOyc6ICdcdTI1YjUnLAorICAgICd1dHJpZjsnOiAnXHUyNWI0JywKKyAgICAndXVhcnI7JzogJ1x1MjFjOCcsCisgICAgJ1V1bWwnOiAnXHhkYycsCisgICAgJ3V1bWwnOiAnXHhmYycsCisgICAgJ1V1bWw7JzogJ1x4ZGMnLAorICAgICd1dW1sOyc6ICdceGZjJywKKyAgICAndXdhbmdsZTsnOiAnXHUyOWE3JywKKyAgICAndmFuZ3J0Oyc6ICdcdTI5OWMnLAorICAgICd2YXJlcHNpbG9uOyc6ICdcdTAzZjUnLAorICAgICd2YXJrYXBwYTsnOiAnXHUwM2YwJywKKyAgICAndmFybm90aGluZzsnOiAnXHUyMjA1JywKKyAgICAndmFycGhpOyc6ICdcdTAzZDUnLAorICAgICd2YXJwaTsnOiAnXHUwM2Q2JywKKyAgICAndmFycHJvcHRvOyc6ICdcdTIyMWQnLAorICAgICd2QXJyOyc6ICdcdTIxZDUnLAorICAgICd2YXJyOyc6ICdcdTIxOTUnLAorICAgICd2YXJyaG87JzogJ1x1MDNmMScsCisgICAgJ3ZhcnNpZ21hOyc6ICdcdTAzYzInLAorICAgICd2YXJzdWJzZXRuZXE7JzogJ1x1MjI4YVx1ZmUwMCcsCisgICAgJ3ZhcnN1YnNldG5lcXE7JzogJ1x1MmFjYlx1ZmUwMCcsCisgICAgJ3ZhcnN1cHNldG5lcTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAndmFyc3Vwc2V0bmVxcTsnOiAnXHUyYWNjXHVmZTAwJywKKyAgICAndmFydGhldGE7JzogJ1x1MDNkMScsCisgICAgJ3ZhcnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmIyJywKKyAgICAndmFydHJpYW5nbGVyaWdodDsnOiAnXHUyMmIzJywKKyAgICAnVmJhcjsnOiAnXHUyYWViJywKKyAgICAndkJhcjsnOiAnXHUyYWU4JywKKyAgICAndkJhcnY7JzogJ1x1MmFlOScsCisgICAgJ1ZjeTsnOiAnXHUwNDEyJywKKyAgICAndmN5Oyc6ICdcdTA0MzInLAorICAgICdWRGFzaDsnOiAnXHUyMmFiJywKKyAgICAnVmRhc2g7JzogJ1x1MjJhOScsCisgICAgJ3ZEYXNoOyc6ICdcdTIyYTgnLAorICAgICd2ZGFzaDsnOiAnXHUyMmEyJywKKyAgICAnVmRhc2hsOyc6ICdcdTJhZTYnLAorICAgICdWZWU7JzogJ1x1MjJjMScsCisgICAgJ3ZlZTsnOiAnXHUyMjI4JywKKyAgICAndmVlYmFyOyc6ICdcdTIyYmInLAorICAgICd2ZWVlcTsnOiAnXHUyMjVhJywKKyAgICAndmVsbGlwOyc6ICdcdTIyZWUnLAorICAgICdWZXJiYXI7JzogJ1x1MjAxNicsCisgICAgJ3ZlcmJhcjsnOiAnfCcsCisgICAgJ1ZlcnQ7JzogJ1x1MjAxNicsCisgICAgJ3ZlcnQ7JzogJ3wnLAorICAgICdWZXJ0aWNhbEJhcjsnOiAnXHUyMjIzJywKKyAgICAnVmVydGljYWxMaW5lOyc6ICd8JywKKyAgICAnVmVydGljYWxTZXBhcmF0b3I7JzogJ1x1Mjc1OCcsCisgICAgJ1ZlcnRpY2FsVGlsZGU7JzogJ1x1MjI0MCcsCisgICAgJ1ZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYScsCisgICAgJ1ZmcjsnOiAnXFUwMDAxZDUxOScsCisgICAgJ3ZmcjsnOiAnXFUwMDAxZDUzMycsCisgICAgJ3ZsdHJpOyc6ICdcdTIyYjInLAorICAgICd2bnN1YjsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAndm5zdXA7JzogJ1x1MjI4M1x1MjBkMicsCisgICAgJ1ZvcGY7JzogJ1xVMDAwMWQ1NGQnLAorICAgICd2b3BmOyc6ICdcVTAwMDFkNTY3JywKKyAgICAndnByb3A7JzogJ1x1MjIxZCcsCisgICAgJ3ZydHJpOyc6ICdcdTIyYjMnLAorICAgICdWc2NyOyc6ICdcVTAwMDFkNGIxJywKKyAgICAndnNjcjsnOiAnXFUwMDAxZDRjYicsCisgICAgJ3ZzdWJuRTsnOiAnXHUyYWNiXHVmZTAwJywKKyAgICAndnN1Ym5lOyc6ICdcdTIyOGFcdWZlMDAnLAorICAgICd2c3VwbkU7JzogJ1x1MmFjY1x1ZmUwMCcsCisgICAgJ3ZzdXBuZTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAnVnZkYXNoOyc6ICdcdTIyYWEnLAorICAgICd2emlnemFnOyc6ICdcdTI5OWEnLAorICAgICdXY2lyYzsnOiAnXHUwMTc0JywKKyAgICAnd2NpcmM7JzogJ1x1MDE3NScsCisgICAgJ3dlZGJhcjsnOiAnXHUyYTVmJywKKyAgICAnV2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ3dlZGdlOyc6ICdcdTIyMjcnLAorICAgICd3ZWRnZXE7JzogJ1x1MjI1OScsCisgICAgJ3dlaWVycDsnOiAnXHUyMTE4JywKKyAgICAnV2ZyOyc6ICdcVTAwMDFkNTFhJywKKyAgICAnd2ZyOyc6ICdcVTAwMDFkNTM0JywKKyAgICAnV29wZjsnOiAnXFUwMDAxZDU0ZScsCisgICAgJ3dvcGY7JzogJ1xVMDAwMWQ1NjgnLAorICAgICd3cDsnOiAnXHUyMTE4JywKKyAgICAnd3I7JzogJ1x1MjI0MCcsCisgICAgJ3dyZWF0aDsnOiAnXHUyMjQwJywKKyAgICAnV3NjcjsnOiAnXFUwMDAxZDRiMicsCisgICAgJ3dzY3I7JzogJ1xVMDAwMWQ0Y2MnLAorICAgICd4Y2FwOyc6ICdcdTIyYzInLAorICAgICd4Y2lyYzsnOiAnXHUyNWVmJywKKyAgICAneGN1cDsnOiAnXHUyMmMzJywKKyAgICAneGR0cmk7JzogJ1x1MjViZCcsCisgICAgJ1hmcjsnOiAnXFUwMDAxZDUxYicsCisgICAgJ3hmcjsnOiAnXFUwMDAxZDUzNScsCisgICAgJ3hoQXJyOyc6ICdcdTI3ZmEnLAorICAgICd4aGFycjsnOiAnXHUyN2Y3JywKKyAgICAnWGk7JzogJ1x1MDM5ZScsCisgICAgJ3hpOyc6ICdcdTAzYmUnLAorICAgICd4bEFycjsnOiAnXHUyN2Y4JywKKyAgICAneGxhcnI7JzogJ1x1MjdmNScsCisgICAgJ3htYXA7JzogJ1x1MjdmYycsCisgICAgJ3huaXM7JzogJ1x1MjJmYicsCisgICAgJ3hvZG90Oyc6ICdcdTJhMDAnLAorICAgICdYb3BmOyc6ICdcVTAwMDFkNTRmJywKKyAgICAneG9wZjsnOiAnXFUwMDAxZDU2OScsCisgICAgJ3hvcGx1czsnOiAnXHUyYTAxJywKKyAgICAneG90aW1lOyc6ICdcdTJhMDInLAorICAgICd4ckFycjsnOiAnXHUyN2Y5JywKKyAgICAneHJhcnI7JzogJ1x1MjdmNicsCisgICAgJ1hzY3I7JzogJ1xVMDAwMWQ0YjMnLAorICAgICd4c2NyOyc6ICdcVTAwMDFkNGNkJywKKyAgICAneHNxY3VwOyc6ICdcdTJhMDYnLAorICAgICd4dXBsdXM7JzogJ1x1MmEwNCcsCisgICAgJ3h1dHJpOyc6ICdcdTI1YjMnLAorICAgICd4dmVlOyc6ICdcdTIyYzEnLAorICAgICd4d2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ1lhY3V0ZSc6ICdceGRkJywKKyAgICAneWFjdXRlJzogJ1x4ZmQnLAorICAgICdZYWN1dGU7JzogJ1x4ZGQnLAorICAgICd5YWN1dGU7JzogJ1x4ZmQnLAorICAgICdZQWN5Oyc6ICdcdTA0MmYnLAorICAgICd5YWN5Oyc6ICdcdTA0NGYnLAorICAgICdZY2lyYzsnOiAnXHUwMTc2JywKKyAgICAneWNpcmM7JzogJ1x1MDE3NycsCisgICAgJ1ljeTsnOiAnXHUwNDJiJywKKyAgICAneWN5Oyc6ICdcdTA0NGInLAorICAgICd5ZW4nOiAnXHhhNScsCisgICAgJ3llbjsnOiAnXHhhNScsCisgICAgJ1lmcjsnOiAnXFUwMDAxZDUxYycsCisgICAgJ3lmcjsnOiAnXFUwMDAxZDUzNicsCisgICAgJ1lJY3k7JzogJ1x1MDQwNycsCisgICAgJ3lpY3k7JzogJ1x1MDQ1NycsCisgICAgJ1lvcGY7JzogJ1xVMDAwMWQ1NTAnLAorICAgICd5b3BmOyc6ICdcVTAwMDFkNTZhJywKKyAgICAnWXNjcjsnOiAnXFUwMDAxZDRiNCcsCisgICAgJ3lzY3I7JzogJ1xVMDAwMWQ0Y2UnLAorICAgICdZVWN5Oyc6ICdcdTA0MmUnLAorICAgICd5dWN5Oyc6ICdcdTA0NGUnLAorICAgICd5dW1sJzogJ1x4ZmYnLAorICAgICdZdW1sOyc6ICdcdTAxNzgnLAorICAgICd5dW1sOyc6ICdceGZmJywKKyAgICAnWmFjdXRlOyc6ICdcdTAxNzknLAorICAgICd6YWN1dGU7JzogJ1x1MDE3YScsCisgICAgJ1pjYXJvbjsnOiAnXHUwMTdkJywKKyAgICAnemNhcm9uOyc6ICdcdTAxN2UnLAorICAgICdaY3k7JzogJ1x1MDQxNycsCisgICAgJ3pjeTsnOiAnXHUwNDM3JywKKyAgICAnWmRvdDsnOiAnXHUwMTdiJywKKyAgICAnemRvdDsnOiAnXHUwMTdjJywKKyAgICAnemVldHJmOyc6ICdcdTIxMjgnLAorICAgICdaZXJvV2lkdGhTcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnWmV0YTsnOiAnXHUwMzk2JywKKyAgICAnemV0YTsnOiAnXHUwM2I2JywKKyAgICAnWmZyOyc6ICdcdTIxMjgnLAorICAgICd6ZnI7JzogJ1xVMDAwMWQ1MzcnLAorICAgICdaSGN5Oyc6ICdcdTA0MTYnLAorICAgICd6aGN5Oyc6ICdcdTA0MzYnLAorICAgICd6aWdyYXJyOyc6ICdcdTIxZGQnLAorICAgICdab3BmOyc6ICdcdTIxMjQnLAorICAgICd6b3BmOyc6ICdcVTAwMDFkNTZiJywKKyAgICAnWnNjcjsnOiAnXFUwMDAxZDRiNScsCisgICAgJ3pzY3I7JzogJ1xVMDAwMWQ0Y2YnLAorICAgICd6d2o7JzogJ1x1MjAwZCcsCisgICAgJ3p3bmo7JzogJ1x1MjAwYycsCit9CisKICMgbWFwcyB0aGUgVW5pY29kZSBjb2RlcG9pbnQgdG8gdGhlIEhUTUwgZW50aXR5IG5hbWUKIGNvZGVwb2ludDJuYW1lID0ge30KIApkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGRlNTA0YWIuLmY4YWM4MjggMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTEwLDYgKzEwLDcgQEAKIAogaW1wb3J0IF9tYXJrdXBiYXNlCiBpbXBvcnQgcmUKK2ltcG9ydCB3YXJuaW5ncwogCiAjIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCBmb3IgcGFyc2luZwogCkBAIC0xMTMsMTQgKzExNCwxNiBAQAogCiAgICAgQ0RBVEFfQ09OVEVOVF9FTEVNRU5UUyA9ICgic2NyaXB0IiwgInN0eWxlIikKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9VHJ1ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCiAKLSAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBUcnVlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgcmFpc2VkIHdoZW4gaW52YWxpZAotICAgICAgICBIVE1MIGlzIGVuY291bnRlcmVkLiAgSWYgc2V0IHRvIEZhbHNlLCBhbiBhdHRlbXB0IGlzIGluc3RlYWQgbWFkZSB0bwotICAgICAgICBjb250aW51ZSBwYXJzaW5nLCBtYWtpbmcgImJlc3QgZ3Vlc3NlcyIgYWJvdXQgdGhlIGludGVuZGVkIG1lYW5pbmcsIGluCi0gICAgICAgIGEgZmFzaGlvbiBzaW1pbGFyIHRvIHdoYXQgYnJvd3NlcnMgdHlwaWNhbGx5IGRvLgorICAgICAgICBJZiBzdHJpY3QgaXMgc2V0IHRvIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlIHBhcnNlciB3aWxsIHBhcnNlIGludmFsaWQKKyAgICAgICAgbWFya3VwLCBvdGhlcndpc2UgaXQgd2lsbCByYWlzZSBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgc3RyaWN0IG1vZGUKKyAgICAgICAgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgIiIiCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBzdHJpY3QgbW9kZSBpcyBkZXByZWNhdGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBzZWxmLnN0cmljdCA9IHN0cmljdAogICAgICAgICBzZWxmLnJlc2V0KCkKIApAQCAtMjcxLDggKzI3NCw4IEBACiAgICAgIyBTZWUgYWxzbyBwYXJzZV9kZWNsYXJhdGlvbiBpbiBfbWFya3VwYmFzZQogICAgIGRlZiBwYXJzZV9odG1sX2RlY2xhcmF0aW9uKHNlbGYsIGkpOgogICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCi0gICAgICAgIGlmIHJhd2RhdGFbaTppKzJdICE9ICc8ISc6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKCd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKKyAgICAgICAgYXNzZXJ0IHJhd2RhdGFbaTppKzJdID09ICc8IScsICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKICAgICAgICAgaWYgcmF3ZGF0YVtpOmkrNF0gPT0gJzwhLS0nOgogICAgICAgICAgICAgIyB0aGlzIGNhc2UgaXMgYWN0dWFsbHkgYWxyZWFkeSBoYW5kbGVkIGluIGdvYWhlYWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfY29tbWVudChpKQpAQCAtMjkyLDggKzI5NSw4IEBACiAgICAgIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjYm9ndXMtY29tbWVudC1zdGF0ZQogICAgIGRlZiBwYXJzZV9ib2d1c19jb21tZW50KHNlbGYsIGksIHJlcG9ydD0xKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiByYXdkYXRhW2k6aSsyXSBub3QgaW4gKCc8IScsICc8LycpOgotICAgICAgICAgICAgc2VsZi5lcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2NvbW1lbnQoKScpCisgICAgICAgIGFzc2VydCByYXdkYXRhW2k6aSsyXSBpbiAoJzwhJywgJzwvJyksICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJzZV9jb21tZW50KCknKQogICAgICAgICBwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBpKzIpCiAgICAgICAgIGlmIHBvcyA9PSAtMToKICAgICAgICAgICAgIHJldHVybiAtMQpAQCAtNDk3LDcgKzUwMCw2IEBACiAgICAgICAgICAgICBzZWxmLmVycm9yKCJ1bmtub3duIGRlY2xhcmF0aW9uOiAlciIgJSAoZGF0YSwpKQogCiAgICAgIyBJbnRlcm5hbCAtLSBoZWxwZXIgdG8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVyIHF1b3RpbmcKLSAgICBlbnRpdHlkZWZzID0gTm9uZQogICAgIGRlZiB1bmVzY2FwZShzZWxmLCBzKToKICAgICAgICAgaWYgJyYnIG5vdCBpbiBzOgogICAgICAgICAgICAgcmV0dXJuIHMKQEAgLTUwNywyNCArNTA5LDIzIEBACiAgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAiIyI6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzWzE6XQogICAgICAgICAgICAgICAgICAgICBpZiBzWzBdIGluIFsneCcsJ1gnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoc1sxOl0sIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChzWzE6XS5yc3RyaXAoJzsnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMucnN0cmlwKCc7JykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHIoYykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiAnJiMnKyBzICsnOycKKyAgICAgICAgICAgICAgICByZXR1cm4gJyYjJyArIHMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBDYW5ub3QgdXNlIG5hbWUyY29kZXBvaW50IGRpcmVjdGx5LCBiZWNhdXNlIEhUTUxQYXJzZXIKLSAgICAgICAgICAgICAgICAjIHN1cHBvcnRzIGFwb3MsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIEhUTUwgNAotICAgICAgICAgICAgICAgIGltcG9ydCBodG1sLmVudGl0aWVzCi0gICAgICAgICAgICAgICAgaWYgSFRNTFBhcnNlci5lbnRpdHlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGVudGl0eWRlZnMgPSBIVE1MUGFyc2VyLmVudGl0eWRlZnMgPSB7J2Fwb3MnOiInIn0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaHRtbC5lbnRpdGllcy5uYW1lMmNvZGVwb2ludC5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5ZGVmc1trXSA9IGNocih2KQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW50aXR5ZGVmc1tzXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJytzKyc7JworICAgICAgICAgICAgICAgIGZyb20gaHRtbC5lbnRpdGllcyBpbXBvcnQgaHRtbDUKKyAgICAgICAgICAgICAgICBpZiBzIGluIGh0bWw1OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDVbc10KKyAgICAgICAgICAgICAgICBlbGlmIHMuZW5kc3dpdGgoJzsnKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJyArIHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgyLCBsZW4ocykpOgorICAgICAgICAgICAgICAgICAgICBpZiBzWzp4XSBpbiBodG1sNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBodG1sNVtzWzp4XV0gKyBzW3g6XQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJicgKyBzCiAKLSAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdK3xcd3sxLDh9KSk7IiwKKyAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdKzt8XHd7MSwzMn07PykpIiwKICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlRW50aXRpZXMsIHMsIGZsYWdzPXJlLkFTQ0lJKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDRkOTNiOTMuLjZhNDQ5NmYgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTE0MSw2ICsxNDEsOSBAQAogTE9DS0VEID0gNDIzCiBGQUlMRURfREVQRU5ERU5DWSA9IDQyNAogVVBHUkFERV9SRVFVSVJFRCA9IDQyNgorUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gNDI4CitUT09fTUFOWV9SRVFVRVNUUyA9IDQyOQorUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9IDQzMQogCiAjIHNlcnZlciBlcnJvcgogSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gNTAwCkBAIC0xNTEsNiArMTU0LDcgQEAKIEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gNTA1CiBJTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNwogTk9UX0VYVEVOREVEID0gNTEwCitORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNTExCiAKICMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCiByZXNwb25zZXMgPSB7CkBAIC0xOTIsNiArMTk2LDkgQEAKICAgICA0MTU6ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywKICAgICA0MTY6ICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKICAgICA0MTc6ICdFeHBlY3RhdGlvbiBGYWlsZWQnLAorICAgIDQyODogJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCisgICAgNDI5OiAnVG9vIE1hbnkgUmVxdWVzdHMnLAorICAgIDQzMTogJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAogCiAgICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKICAgICA1MDE6ICdOb3QgSW1wbGVtZW50ZWQnLApAQCAtMTk5LDYgKzIwNiw3IEBACiAgICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JywKICAgICA1MDU6ICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCisgICAgNTExOiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCiB9CiAKICMgbWF4aW1hbCBhbW91bnQgb2YgZGF0YSB0byByZWFkIGF0IG9uZSB0aW1lIGluIF9zYWZlX3JlYWQKQEAgLTQ4NSwxMSArNDkzLDE3IEBACiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBiIiIKIAotICAgICAgICBpZiBzZWxmLmNodW5rZWQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9jaHVua2VkKGFtdCkKKyAgICAgICAgaWYgYW10IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBBbW91bnQgaXMgZ2l2ZW4sIHNvIGNhbGwgYmFzZSBjbGFzcyB2ZXJzaW9uCisgICAgICAgICAgICAjICh3aGljaCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBzZWxmLnJlYWRpbnRvKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKEhUVFBSZXNwb25zZSwgc2VsZikucmVhZChhbXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFtb3VudCBpcyBub3QgZ2l2ZW4gKHVuYm91bmRlZCByZWFkKSBzbyB3ZSBtdXN0IGNoZWNrIHNlbGYubGVuZ3RoCisgICAgICAgICAgICAjIGFuZCBzZWxmLmNodW5rZWQKIAotICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgICMgdW5ib3VuZGVkIHJlYWQKKyAgICAgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFsbF9jaHVua2VkKCkKKwogICAgICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgTm9uZToKICAgICAgICAgICAgICAgICBzID0gc2VsZi5mcC5yZWFkKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC00OTgsNjUgKzUxMiw1MiBAQAogICAgICAgICAgICAgc2VsZi5jbG9zZSgpICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZwogICAgICAgICAgICAgcmV0dXJuIHMKIAorICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBpZiBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50b19jaHVua2VkKGIpCisKICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBhbXQgPiBzZWxmLmxlbmd0aDoKKyAgICAgICAgICAgIGlmIGxlbihiKSA+IHNlbGYubGVuZ3RoOgogICAgICAgICAgICAgICAgICMgY2xpcCB0aGUgcmVhZCB0byB0aGUgImVuZCBvZiByZXNwb25zZSIKLSAgICAgICAgICAgICAgICBhbXQgPSBzZWxmLmxlbmd0aAorICAgICAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpWzA6c2VsZi5sZW5ndGhdCiAKICAgICAgICAgIyB3ZSBkbyBub3QgdXNlIF9zYWZlX3JlYWQoKSBoZXJlIGJlY2F1c2UgdGhpcyBtYXkgYmUgYSAud2lsbF9jbG9zZQogICAgICAgICAjIGNvbm5lY3Rpb24sIGFuZCB0aGUgdXNlciBpcyByZWFkaW5nIG1vcmUgYnl0ZXMgdGhhbiB3aWxsIGJlIHByb3ZpZGVkCiAgICAgICAgICMgKGZvciBleGFtcGxlLCByZWFkaW5nIGluIDFrIGNodW5rcykKLSAgICAgICAgcyA9IHNlbGYuZnAucmVhZChhbXQpCisgICAgICAgIG4gPSBzZWxmLmZwLnJlYWRpbnRvKGIpCiAgICAgICAgIGlmIHNlbGYubGVuZ3RoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5sZW5ndGggLT0gbGVuKHMpCisgICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBuCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5sZW5ndGg6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgIGlmIG5vdCBuOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICByZXR1cm4gbgogCi0gICAgICAgIHJldHVybiBzCisgICAgZGVmIF9yZWFkX25leHRfY2h1bmtfc2l6ZShzZWxmKToKKyAgICAgICAgIyBSZWFkIHRoZSBuZXh0IGNodW5rIHNpemUgZnJvbSB0aGUgZmlsZQorICAgICAgICBsaW5lID0gc2VsZi5mcC5yZWFkbGluZShfTUFYTElORSArIDEpCisgICAgICAgIGlmIGxlbihsaW5lKSA+IF9NQVhMSU5FOgorICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImNodW5rIHNpemUiKQorICAgICAgICBpID0gbGluZS5maW5kKGIiOyIpCisgICAgICAgIGlmIGkgPj0gMDoKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXSAjIHN0cmlwIGNodW5rLWV4dGVuc2lvbnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludChsaW5lLCAxNikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFzIHByb3RvY29sIHN5bmNocm9uaXNhdGlvbiBpcworICAgICAgICAgICAgIyBwcm9iYWJseSBsb3N0CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlCiAKLSAgICBkZWYgX3JlYWRfY2h1bmtlZChzZWxmLCBhbXQpOgotICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKLSAgICAgICAgdmFsdWUgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLmZwLnJlYWRsaW5lKF9NQVhMSU5FICsgMSkKLSAgICAgICAgICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImNodW5rIHNpemUiKQotICAgICAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoYiI7IikKLSAgICAgICAgICAgICAgICBpZiBpID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXSAjIHN0cmlwIGNodW5rLWV4dGVuc2lvbnMKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBpbnQobGluZSwgMTYpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYXMgcHJvdG9jb2wgc3luY2hyb25pc2F0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgbG9zdAotICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQotICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGFtdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0gICAgICAgICAgICBlbGlmIGFtdCA8IGNodW5rX2xlZnQ6Ci0gICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChhbXQpKQotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBhbXQKLSAgICAgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCi0gICAgICAgICAgICBlbGlmIGFtdCA9PSBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoYW10KSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0gICAgICAgICAgICAgICAgYW10IC09IGNodW5rX2xlZnQKLQotICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKLSAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKLQorICAgIGRlZiBfcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKHNlbGYpOgogICAgICAgICAjIHJlYWQgYW5kIGRpc2NhcmQgdHJhaWxlciB1cCB0byB0aGUgQ1JMRiB0ZXJtaW5hdG9yCiAgICAgICAgICMjIyBub3RlOiB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkgdHJhaWxlcnMhCiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC01NzAsMTEgKzU3MSw3MiBAQAogICAgICAgICAgICAgaWYgbGluZSBpbiAoYidcclxuJywgYidcbicsIGInJyk6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgIGRlZiBfcmVhZGFsbF9jaHVua2VkKHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCisgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKKyAgICAgICAgdmFsdWUgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQorICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChjaHVua19sZWZ0KSkKKworICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKKyAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKworICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorCiAgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKIAorICAgIGRlZiBfcmVhZGludG9fY2h1bmtlZChzZWxmLCBiKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CisKKyAgICAgICAgdG90YWxfYnl0ZXMgPSAwCisgICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGJ5dGVzKGJbMDp0b3RhbF9ieXRlc10pKQorCisgICAgICAgICAgICBpZiBsZW4obXZiKSA8IGNodW5rX2xlZnQ6CisgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQorICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgorICAgICAgICAgICAgZWxpZiBsZW4obXZiKSA9PSBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKKyAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6Y2h1bmtfbGVmdF0KKyAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byh0ZW1wX212YikKKyAgICAgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCisgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgorCisgICAgICAgICAgICAjIHdlIHJlYWQgdGhlIHdob2xlIGNodW5rLCBnZXQgYW5vdGhlcgorICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAgICAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCisgICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQorCisgICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCisKKyAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCisKICAgICBkZWYgX3NhZmVfcmVhZChzZWxmLCBhbXQpOgogICAgICAgICAiIiJSZWFkIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLCBjb21wZW5zYXRpbmcgZm9yIHBhcnRpYWwgcmVhZHMuCiAKQEAgLTU5OCw2ICs2NjAsMjIgQEAKICAgICAgICAgICAgIGFtdCAtPSBsZW4oY2h1bmspCiAgICAgICAgIHJldHVybiBiIiIuam9pbihzKQogCisgICAgZGVmIF9zYWZlX3JlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJTYW1lIGFzIF9zYWZlX3JlYWQsIGJ1dCBmb3IgcmVhZGluZyBpbnRvIGEgYnVmZmVyLiIiIgorICAgICAgICB0b3RhbF9ieXRlcyA9IDAKKyAgICAgICAgbXZiID0gbWVtb3J5dmlldyhiKQorICAgICAgICB3aGlsZSB0b3RhbF9ieXRlcyA8IGxlbihiKToKKyAgICAgICAgICAgIGlmIE1BWEFNT1VOVCA8IGxlbihtdmIpOgorICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6TUFYQU1PVU5UXQorICAgICAgICAgICAgICAgIG4gPSBzZWxmLmZwLnJlYWRpbnRvKHRlbXBfbXZiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byhtdmIpCisgICAgICAgICAgICBpZiBub3QgbjoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhtdmJbMDp0b3RhbF9ieXRlc10pLCBsZW4oYikpCisgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCisgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCisgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcworCiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZnAuZmlsZW5vKCkKIApAQCAtNzA0LDcgKzc4Miw3IEBACiAgICAgICAgIHNlbGYuc2VuZChjb25uZWN0X2J5dGVzKQogICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBzZWxmLl90dW5uZWxfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgaGVhZGVyX3N0ciA9ICIlczogJXNcclxuIiAlIChoZWFkZXIsIHZhbHVlKQotICAgICAgICAgICAgaGVhZGVyX2J5dGVzID0gaGVhZGVyX3N0ci5lbmNvZGUoImxhdGluMSIpCisgICAgICAgICAgICBoZWFkZXJfYnl0ZXMgPSBoZWFkZXJfc3RyLmVuY29kZSgibGF0aW4tMSIpCiAgICAgICAgICAgICBzZWxmLnNlbmQoaGVhZGVyX2J5dGVzKQogICAgICAgICBzZWxmLnNlbmQoYidcclxuJykKIApAQCAtOTQ3LDcgKzEwMjUsNyBAQAogICAgICAgICB2YWx1ZXMgPSBsaXN0KHZhbHVlcykKICAgICAgICAgZm9yIGksIG9uZV92YWx1ZSBpbiBlbnVtZXJhdGUodmFsdWVzKToKICAgICAgICAgICAgIGlmIGhhc2F0dHIob25lX3ZhbHVlLCAnZW5jb2RlJyk6Ci0gICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gb25lX3ZhbHVlLmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgICAgICB2YWx1ZXNbaV0gPSBvbmVfdmFsdWUuZW5jb2RlKCdsYXRpbi0xJykKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvbmVfdmFsdWUsIGludCk6CiAgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gc3RyKG9uZV92YWx1ZSkuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIHZhbHVlID0gYidcclxuXHQnLmpvaW4odmFsdWVzKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IGI2Y2ZjMzUuLjkwMWU3NjIgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTYyNSw3ICs2MjUsNyBAQAogICAgIHJldHVybiBwYXRoCiAKIGRlZiByZXF1ZXN0X3BvcnQocmVxdWVzdCk6Ci0gICAgaG9zdCA9IHJlcXVlc3QuZ2V0X2hvc3QoKQorICAgIGhvc3QgPSByZXF1ZXN0Lmhvc3QKICAgICBpID0gaG9zdC5maW5kKCc6JykKICAgICBpZiBpID49IDA6CiAgICAgICAgIHBvcnQgPSBob3N0W2krMTpdCkBAIC05NDksNyArOTQ5LDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBzZXRfb2tfdmVyaWZpYWJpbGl0eShzZWxmLCBjb29raWUsIHJlcXVlc3QpOgotICAgICAgICBpZiByZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKKyAgICAgICAgaWYgcmVxdWVzdC51bnZlcmlmaWFibGUgYW5kIGlzX3RoaXJkX3BhcnR5KHJlcXVlc3QpOgogICAgICAgICAgICAgaWYgY29va2llLnZlcnNpb24gPiAwIGFuZCBzZWxmLnN0cmljdF9yZmMyOTY1X3VudmVyaWZpYWJsZToKICAgICAgICAgICAgICAgICBfZGVidWcoIiAgIHRoaXJkLXBhcnR5IFJGQyAyOTY1IGNvb2tpZSBkdXJpbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW52ZXJpZmlhYmxlIHRyYW5zYWN0aW9uIikKQEAgLTEwODgsNyArMTA4OCw3IEBACiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgcmV0dXJuX29rX3ZlcmlmaWFiaWxpdHkoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC5pc191bnZlcmlmaWFibGUoKSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CisgICAgICAgIGlmIHJlcXVlc3QudW52ZXJpZmlhYmxlIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKICAgICAgICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgc2VsZi5zdHJpY3RfcmZjMjk2NV91bnZlcmlmaWFibGU6CiAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICB0aGlyZC1wYXJ0eSBSRkMgMjk2NSBjb29raWUgZHVyaW5nIHVudmVyaWZpYWJsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2FjdGlvbiIpCkBAIC0xMTAwLDcgKzExMDAsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJldHVybl9va19zZWN1cmUoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgY29va2llLnNlY3VyZSBhbmQgcmVxdWVzdC5nZXRfdHlwZSgpICE9ICJodHRwcyI6CisgICAgICAgIGlmIGNvb2tpZS5zZWN1cmUgYW5kIHJlcXVlc3QudHlwZSAhPSAiaHR0cHMiOgogICAgICAgICAgICAgX2RlYnVnKCIgICBzZWN1cmUgY29va2llIHdpdGggbm9uLXNlY3VyZSByZXF1ZXN0IikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggZGRiY2JmOC4uZDI5MTY3OCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC0xNTksNyArMTU5LDcgQEAKICMgICAgICAgX0xlZ2FsQ2hhcnMgICAgICAgaXMgdGhlIGxpc3Qgb2YgY2hhcnMgd2hpY2ggZG9uJ3QgcmVxdWlyZSAiJ3MKICMgICAgICAgX1RyYW5zbGF0b3IgICAgICAgaGFzaC10YWJsZSBmb3IgZmFzdCBxdW90aW5nCiAjCi1fTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH4iCitfTGVnYWxDaGFycyAgICAgICA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH46IgogX1RyYW5zbGF0b3IgICAgICAgPSB7CiAgICAgJ1wwMDAnIDogJ1xcMDAwJywgICdcMDAxJyA6ICdcXDAwMScsICAnXDAwMicgOiAnXFwwMDInLAogICAgICdcMDAzJyA6ICdcXDAwMycsICAnXDAwNCcgOiAnXFwwMDQnLCAgJ1wwMDUnIDogJ1xcMDA1JywKZGlmZiAtLWdpdCBhL0xpYi9odHRwL3NlcnZlci5weSBiL0xpYi9odHRwL3NlcnZlci5weQppbmRleCA1NTY5MDM3Li5jNGFjNzAzIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9zZXJ2ZXIucHkKKysrIGIvTGliL2h0dHAvc2VydmVyLnB5CkBAIC0xMDAsMTEgKzEwMCwxNCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxsaWIucGFyc2UKIGltcG9ydCBjb3B5CitpbXBvcnQgYXJncGFyc2UKKwogCiAjIERlZmF1bHQgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZQogREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gIiIiXAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgogICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+CiAgICAgICAgIDx0aXRsZT5FcnJvciByZXNwb25zZTwvdGl0bGU+CkBAIC0zNTIsNiArMzU1LDcgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlX29ubHkoMTAwKQorICAgICAgICBzZWxmLmZsdXNoX2hlYWRlcnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIGhhbmRsZV9vbmVfcmVxdWVzdChzZWxmKToKQEAgLTQyOSw3ICs0MzMsOCBAQAogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShjb250ZW50LmVuY29kZSgnVVRGLTgnLCAncmVwbGFjZScpKQogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Uoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKLSAgICAgICAgIiIiU2VuZCB0aGUgcmVzcG9uc2UgaGVhZGVyIGFuZCBsb2cgdGhlIHJlc3BvbnNlIGNvZGUuCisgICAgICAgICIiIkFkZCB0aGUgcmVzcG9uc2UgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlciBhbmQgbG9nIHRoZQorICAgICAgICByZXNwb25zZSBjb2RlLgogCiAgICAgICAgIEFsc28gc2VuZCB0d28gc3RhbmRhcmQgaGVhZGVycyB3aXRoIHRoZSBzZXJ2ZXIgc29mdHdhcmUKICAgICAgICAgdmVyc2lvbiBhbmQgdGhlIGN1cnJlbnQgZGF0ZS4KQEAgLTQ0OCwxNiArNDUzLDE5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgoIiVzICVkICVzXHJcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYucHJvdG9jb2xfdmVyc2lvbiwgY29kZSwgbWVzc2FnZSkpLmVuY29kZSgnbGF0aW4xJywgJ3N0cmljdCcpKQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgorICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KKyAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgoIiVzICVkICVzXHJcbiIgJQorICAgICAgICAgICAgICAgICAgICAoc2VsZi5wcm90b2NvbF92ZXJzaW9uLCBjb2RlLCBtZXNzYWdlKSkuZW5jb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGluLTEnLCAnc3RyaWN0JykpCiAKICAgICBkZWYgc2VuZF9oZWFkZXIoc2VsZiwga2V5d29yZCwgdmFsdWUpOgotICAgICAgICAiIiJTZW5kIGEgTUlNRSBoZWFkZXIuIiIiCisgICAgICAgICIiIlNlbmQgYSBNSU1FIGhlYWRlciB0byB0aGUgaGVhZGVycyBidWZmZXIuIiIiCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKAotICAgICAgICAgICAgICAgICgiJXM6ICVzXHJcbiIgJSAoa2V5d29yZCwgdmFsdWUpKS5lbmNvZGUoJ2xhdGluMScsICdzdHJpY3QnKSkKKyAgICAgICAgICAgICAgICAoIiVzOiAlc1xyXG4iICUgKGtleXdvcmQsIHZhbHVlKSkuZW5jb2RlKCdsYXRpbi0xJywgJ3N0cmljdCcpKQogCiAgICAgICAgIGlmIGtleXdvcmQubG93ZXIoKSA9PSAnY29ubmVjdGlvbic6CiAgICAgICAgICAgICBpZiB2YWx1ZS5sb3dlcigpID09ICdjbG9zZSc6CkBAIC00NjksNiArNDc3LDEwIEBACiAgICAgICAgICIiIlNlbmQgdGhlIGJsYW5rIGxpbmUgZW5kaW5nIHRoZSBNSU1FIGhlYWRlcnMuIiIiCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoYiJcclxuIikKKyAgICAgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCisKKyAgICBkZWYgZmx1c2hfaGVhZGVycyhzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGIiIi5qb2luKHNlbGYuX2hlYWRlcnNfYnVmZmVyKSkKICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KIApAQCAtNTE0LDcgKzUyNiw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzIC0gLSBbJXNdICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5jbGllbnRfYWRkcmVzc1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5hZGRyZXNzX3N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ19kYXRlX3RpbWVfc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCVhcmdzKSkKIApAQCAtNTQ4LDE1ICs1NjAsOSBAQAogICAgICAgICAgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXQogCiAgICAgZGVmIGFkZHJlc3Nfc3RyaW5nKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNsaWVudCBhZGRyZXNzIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4KKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjbGllbnQgYWRkcmVzcy4iIiIKIAotICAgICAgICBUaGlzIHZlcnNpb24gbG9va3MgdXAgdGhlIGZ1bGwgaG9zdG5hbWUgdXNpbmcgZ2V0aG9zdGJ5YWRkcigpLAotICAgICAgICBhbmQgdHJpZXMgdG8gZmluZCBhIG5hbWUgdGhhdCBjb250YWlucyBhdCBsZWFzdCBvbmUgZG90LgotCi0gICAgICAgICIiIgotCi0gICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLmNsaWVudF9hZGRyZXNzWzoyXQotICAgICAgICByZXR1cm4gc29ja2V0LmdldGZxZG4oaG9zdCkKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpZW50X2FkZHJlc3NbMF0KIAogICAgICMgRXNzZW50aWFsbHkgc3RhdGljIGNsYXNzIHZhcmlhYmxlcwogCkBAIC01NjksNyArNTc1LDcgQEAKIAogICAgICMgVGFibGUgbWFwcGluZyByZXNwb25zZSBjb2RlcyB0byBtZXNzYWdlczsgZW50cmllcyBoYXZlIHRoZQogICAgICMgZm9ybSB7Y29kZTogKHNob3J0bWVzc2FnZSwgbG9uZ21lc3NhZ2UpfS4KLSAgICAjIFNlZSBSRkMgMjYxNi4KKyAgICAjIFNlZSBSRkMgMjYxNiBhbmQgNjU4NS4KICAgICByZXNwb25zZXMgPSB7CiAgICAgICAgIDEwMDogKCdDb250aW51ZScsICdSZXF1ZXN0IHJlY2VpdmVkLCBwbGVhc2UgY29udGludWUnKSwKICAgICAgICAgMTAxOiAoJ1N3aXRjaGluZyBQcm90b2NvbHMnLApAQCAtNjI0LDYgKzYzMCwxMiBAQAogICAgICAgICAgICAgICAnQ2Fubm90IHNhdGlzZnkgcmVxdWVzdCByYW5nZS4nKSwKICAgICAgICAgNDE3OiAoJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCiAgICAgICAgICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuJyksCisgICAgICAgIDQyODogKCdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAorICAgICAgICAgICAgICAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuJyksCisgICAgICAgIDQyOTogKCdUb28gTWFueSBSZXF1ZXN0cycsICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyAnCisgICAgICAgICAgICAgICdpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpLicpLAorICAgICAgICA0MzE6ICgnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byAnCisgICAgICAgICAgICAgICdwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4nKSwKIAogICAgICAgICA1MDA6ICgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgJ1NlcnZlciBnb3QgaXRzZWxmIGluIHRyb3VibGUnKSwKICAgICAgICAgNTAxOiAoJ05vdCBJbXBsZW1lbnRlZCcsCkBAIC02MzQsNiArNjQ2LDggQEAKICAgICAgICAgNTA0OiAoJ0dhdGV3YXkgVGltZW91dCcsCiAgICAgICAgICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJyksCiAgICAgICAgIDUwNTogKCdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsICdDYW5ub3QgZnVsZmlsbCByZXF1ZXN0LicpLAorICAgICAgICA1MTE6ICgnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCisgICAgICAgICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLicpLAogICAgICAgICB9CiAKIApAQCAtNzIyLDEwICs3MzYsMTYgQEAKICAgICAgICAgbGlzdC5zb3J0KGtleT1sYW1iZGEgYTogYS5sb3dlcigpKQogICAgICAgICByID0gW10KICAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZSh1cmxsaWIucGFyc2UudW5xdW90ZShzZWxmLnBhdGgpKQotICAgICAgICByLmFwcGVuZCgnPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPicpCi0gICAgICAgIHIuYXBwZW5kKCI8aHRtbD5cbjx0aXRsZT5EaXJlY3RvcnkgbGlzdGluZyBmb3IgJXM8L3RpdGxlPlxuIiAlIGRpc3BsYXlwYXRoKQotICAgICAgICByLmFwcGVuZCgiPGJvZHk+XG48aDI+RGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzPC9oMj5cbiIgJSBkaXNwbGF5cGF0aCkKLSAgICAgICAgci5hcHBlbmQoIjxocj5cbjx1bD5cbiIpCisgICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQorICAgICAgICB0aXRsZSA9ICdEaXJlY3RvcnkgbGlzdGluZyBmb3IgJXMnICUgZGlzcGxheXBhdGgKKyAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgJworICAgICAgICAgICAgICAgICAnImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPicpCisgICAgICAgIHIuYXBwZW5kKCc8aHRtbD5cbjxoZWFkPicpCisgICAgICAgIHIuYXBwZW5kKCc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lcyI+JyAlIGVuYykKKyAgICAgICAgci5hcHBlbmQoJzx0aXRsZT4lczwvdGl0bGU+XG48L2hlYWQ+JyAlIHRpdGxlKQorICAgICAgICByLmFwcGVuZCgnPGJvZHk+XG48aDE+JXM8L2gxPicgJSB0aXRsZSkKKyAgICAgICAgci5hcHBlbmQoJzxocj5cbjx1bD4nKQogICAgICAgICBmb3IgbmFtZSBpbiBsaXN0OgogICAgICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKICAgICAgICAgICAgIGRpc3BsYXluYW1lID0gbGlua25hbWUgPSBuYW1lCkBAIC03MzYsMTEgKzc1NiwxMCBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZnVsbG5hbWUpOgogICAgICAgICAgICAgICAgIGRpc3BsYXluYW1lID0gbmFtZSArICJAIgogICAgICAgICAgICAgICAgICMgTm90ZTogYSBsaW5rIHRvIGEgZGlyZWN0b3J5IGRpc3BsYXlzIHdpdGggQCBhbmQgbGlua3Mgd2l0aCAvCi0gICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT5cbicKKyAgICAgICAgICAgIHIuYXBwZW5kKCc8bGk+PGEgaHJlZj0iJXMiPiVzPC9hPjwvbGk+JwogICAgICAgICAgICAgICAgICAgICAlICh1cmxsaWIucGFyc2UucXVvdGUobGlua25hbWUpLCBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSkpKQotICAgICAgICByLmFwcGVuZCgiPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbiIpCi0gICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQotICAgICAgICBlbmNvZGVkID0gJycuam9pbihyKS5lbmNvZGUoZW5jKQorICAgICAgICByLmFwcGVuZCgnPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbicpCisgICAgICAgIGVuY29kZWQgPSAnXG4nLmpvaW4ocikuZW5jb2RlKGVuYykKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgICBmLndyaXRlKGVuY29kZWQpCiAgICAgICAgIGYuc2VlaygwKQpAQCAtODg4LDExICs5MDcsNyBAQAogCiBkZWYgZXhlY3V0YWJsZShwYXRoKToKICAgICAiIiJUZXN0IGZvciBleGVjdXRhYmxlIGZpbGUuIiIiCi0gICAgdHJ5OgotICAgICAgICBzdCA9IG9zLnN0YXQocGF0aCkKLSAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBzdC5zdF9tb2RlICYgMG8xMTEgIT0gMAorICAgIHJldHVybiBvcy5hY2Nlc3MocGF0aCwgb3MuWF9PSykKIAogCiBjbGFzcyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIoU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTEwMDgsNyArMTAyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bmFtZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpc3B5ID0gc2VsZi5pc19weXRob24oc2NyaXB0bmFtZSkKLSAgICAgICAgaWYgbm90IGlzcHk6CisgICAgICAgIGlmIHNlbGYuaGF2ZV9mb3JrIG9yIG5vdCBpc3B5OgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0YWJsZShzY3JpcHRmaWxlKToKICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzLCAiQ0dJIHNjcmlwdCBpcyBub3QgZXhlY3V0YWJsZSAoJXIpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCkBAIC0xMDI5LDkgKzEwNDQsNiBAQAogICAgICAgICBlbnZbJ1NDUklQVF9OQU1FJ10gPSBzY3JpcHRuYW1lCiAgICAgICAgIGlmIHF1ZXJ5OgogICAgICAgICAgICAgZW52WydRVUVSWV9TVFJJTkcnXSA9IHF1ZXJ5Ci0gICAgICAgIGhvc3QgPSBzZWxmLmFkZHJlc3Nfc3RyaW5nKCkKLSAgICAgICAgaWYgaG9zdCAhPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdOgotICAgICAgICAgICAgZW52WydSRU1PVEVfSE9TVCddID0gaG9zdAogICAgICAgICBlbnZbJ1JFTU9URV9BRERSJ10gPSBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCiAgICAgICAgIGF1dGhvcml6YXRpb24gPSBzZWxmLmhlYWRlcnMuZ2V0KCJhdXRob3JpemF0aW9uIikKICAgICAgICAgaWYgYXV0aG9yaXphdGlvbjoKQEAgLTEwODMsNiArMTA5NSw3IEBACiAgICAgICAgICAgICBlbnYuc2V0ZGVmYXVsdChrLCAiIikKIAogICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiU2NyaXB0IG91dHB1dCBmb2xsb3dzIikKKyAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKIAogICAgICAgICBkZWNvZGVkX3F1ZXJ5ID0gcXVlcnkucmVwbGFjZSgnKycsICcgJykKIApAQCAtMTE2MiwxOCArMTE3NSwxMyBAQAogCiAKIGRlZiB0ZXN0KEhhbmRsZXJDbGFzcyA9IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICBTZXJ2ZXJDbGFzcyA9IEhUVFBTZXJ2ZXIsIHByb3RvY29sPSJIVFRQLzEuMCIpOgorICAgICAgICAgU2VydmVyQ2xhc3MgPSBIVFRQU2VydmVyLCBwcm90b2NvbD0iSFRUUC8xLjAiLCBwb3J0PTgwMDApOgogICAgICIiIlRlc3QgdGhlIEhUVFAgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLgogCiAgICAgVGhpcyBydW5zIGFuIEhUVFAgc2VydmVyIG9uIHBvcnQgODAwMCAob3IgdGhlIGZpcnN0IGNvbW1hbmQgbGluZQogICAgIGFyZ3VtZW50KS4KIAogICAgICIiIgotCi0gICAgaWYgc3lzLmFyZ3ZbMTpdOgotICAgICAgICBwb3J0ID0gaW50KHN5cy5hcmd2WzFdKQotICAgIGVsc2U6Ci0gICAgICAgIHBvcnQgPSA4MDAwCiAgICAgc2VydmVyX2FkZHJlc3MgPSAoJycsIHBvcnQpCiAKICAgICBIYW5kbGVyQ2xhc3MucHJvdG9jb2xfdmVyc2lvbiA9IHByb3RvY29sCkBAIC0xMTg5LDQgKzExOTcsMTUgQEAKICAgICAgICAgc3lzLmV4aXQoMCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0KEhhbmRsZXJDbGFzcz1TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2dpJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVuIGFzIENHSSBTZXJ2ZXInKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3BvcnQnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ODAwMCwgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXJncz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZ5IGFsdGVybmF0ZSBwb3J0IFtkZWZhdWx0OiA4MDAwXScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmNnaToKKyAgICAgICAgdGVzdChIYW5kbGVyQ2xhc3M9Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLCBwb3J0PWFyZ3MucG9ydCkKKyAgICBlbHNlOgorICAgICAgICB0ZXN0KEhhbmRsZXJDbGFzcz1TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIsIHBvcnQ9YXJncy5wb3J0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CmluZGV4IGU0YzFhZmYuLjkyOWQzNTggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKQEAgLTksOSArOSw2IEBACiAKIGZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgogCi0jIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhIGZpbGUgbmFtZSAod2l0aG91dCBhIHBhdGgKLSMgc2VwYXJhdG9yKQotRklMRU5BTUVfQ0hBUlMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyBvcy5jdXJkaXIgKyAiLl9+IyQ6LSIKICMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKIElEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKaW5kZXggZTE4ODE5Mi4uZTRjY2I0MiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKQEAgLTIxLDEwICsyMSwxMSBAQAogICAgICMgMXN0ICdmaWxlJyBjb2xvcml6ZWQgbm9ybWFsLCAybmQgYXMgYnVpbHRpbiwgM3JkIGFzIHN0cmluZwogICAgIGJ1aWx0aW4gPSByIihbXi4nXCJcXCNdXGJ8XikiICsgYW55KCJCVUlMVElOIiwgYnVpbHRpbmxpc3QpICsgciJcYiIKICAgICBjb21tZW50ID0gYW55KCJDT01NRU5UIiwgW3IiI1teXG5dKiJdKQotICAgIHNxc3RyaW5nID0gciIoXGJbclJiQl0pPydbXidcXFxuXSooXFwuW14nXFxcbl0qKSonPyIKLSAgICBkcXN0cmluZyA9IHInKFxiW3JSYkJdKT8iW14iXFxcbl0qKFxcLlteIlxcXG5dKikqIj8nCi0gICAgc3Ezc3RyaW5nID0gciIoXGJbclJiQl0pPycnJ1teJ1xcXSooKFxcLnwnKD8hJycpKVteJ1xcXSopKignJycpPyIKLSAgICBkcTNzdHJpbmcgPSByJyhcYltyUmJCXSk/IiIiW14iXFxdKigoXFwufCIoPyEiIikpW14iXFxdKikqKCIiIik/JworICAgIHN0cmluZ3ByZWZpeCA9IHIiKFxicnx1fHVyfFJ8VXxVUnxVcnx1UnxifEJ8YnJ8QnJ8YlJ8QlJ8cmJ8ckJ8UmJ8UkIpPyIKKyAgICBzcXN0cmluZyA9IHN0cmluZ3ByZWZpeCArIHIiJ1teJ1xcXG5dKihcXC5bXidcXFxuXSopKic/IgorICAgIGRxc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciciW14iXFxcbl0qKFxcLlteIlxcXG5dKikqIj8nCisgICAgc3Ezc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciInJydbXidcXF0qKChcXC58Jyg/IScnKSlbXidcXF0qKSooJycnKT8iCisgICAgZHEzc3RyaW5nID0gc3RyaW5ncHJlZml4ICsgciciIiJbXiJcXF0qKChcXC58Iig/ISIiKSlbXiJcXF0qKSooIiIiKT8nCiAgICAgc3RyaW5nID0gYW55KCJTVFJJTkciLCBbc3Ezc3RyaW5nLCBkcTNzdHJpbmcsIHNxc3RyaW5nLCBkcXN0cmluZ10pCiAgICAgcmV0dXJuIGt3ICsgInwiICsgYnVpbHRpbiArICJ8IiArIGNvbW1lbnQgKyAifCIgKyBzdHJpbmcgK1wKICAgICAgICAgICAgInwiICsgYW55KCJTWU5DIiwgW3IiXG4iXSkKQEAgLTE0OSw5ICsxNTAsOSBAQAogICAgICAgICAgICAgc2VsZi5zdG9wX2NvbG9yaXppbmcgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5jb2xvcml6aW5nID0gVHJ1ZQogICAgICAgICAgICAgaWYgREVCVUc6IHByaW50KCJjb2xvcml6aW5nLi4uIikKLSAgICAgICAgICAgIHQwID0gdGltZS5jbG9jaygpCisgICAgICAgICAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgIHNlbGYucmVjb2xvcml6ZV9tYWluKCkKLSAgICAgICAgICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgICAgICAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICAgICAgICAgIGlmIERFQlVHOiBwcmludCgiJS4zZiBzZWNvbmRzIiAlICh0MS10MCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLmNvbG9yaXppbmcgPSBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CmluZGV4IDE2ZjYzYzUuLjMzOTc0MTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgc3lzCitpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwotaW1wb3J0IGltcAoraW1wb3J0IHN5cwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CkBAIC0yNyw4ICsyOCw3IEBACiAgICAgIkZvcm1hdCBzeXMudmVyc2lvbl9pbmZvIHRvIHByb2R1Y2UgdGhlIFNwaGlueCB2ZXJzaW9uIHN0cmluZyB1c2VkIHRvIGluc3RhbGwgdGhlIGNobSBkb2NzIgogICAgIG1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCiAgICAgcmVsZWFzZSA9ICclcyVzJyAlIChtYWpvciwgbWlub3IpCi0gICAgaWYgbWljcm86Ci0gICAgICAgIHJlbGVhc2UgKz0gJyVzJyAlIChtaWNybywpCisgICAgcmVsZWFzZSArPSAnJXMnICUgKG1pY3JvLCkKICAgICBpZiBsZXZlbCA9PSAnY2FuZGlkYXRlJzoKICAgICAgICAgcmVsZWFzZSArPSAncmMlcycgJSAoc2VyaWFsLCkKICAgICBlbGlmIGxldmVsICE9ICdmaW5hbCc6CkBAIC0xMjAsNyArMTIwLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgaWYgRWRpdG9yV2luZG93LmhlbHBfdXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICBkb2Nob21lID0gIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnRG9jJywgJ2luZGV4Lmh0bWwnKQorICAgICAgICAgICAgZG9jaG9tZSA9ICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAnRG9jJywgJ2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLmNvdW50KCdsaW51eCcpOgogICAgICAgICAgICAgICAgICMgbG9vayBmb3IgaHRtbCBkb2NzIGluIGEgY291cGxlIG9mIHN0YW5kYXJkIHBsYWNlcwogICAgICAgICAgICAgICAgIHB5dmVyID0gJ3B5dGhvbi1kb2NzLScgKyAnJXMuJXMuJXMnICUgc3lzLnZlcnNpb25faW5mb1s6M10KQEAgLTEzMSwxMyArMTMxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsIHB5dmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEb2MnLCAnaW5kZXguaHRtbCcpCiAgICAgICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6Ci0gICAgICAgICAgICAgICAgY2htZmlsZSA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnRG9jJywKKyAgICAgICAgICAgICAgICBjaG1maWxlID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ0RvYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uJXMuY2htJyAlIF9zcGhpbnhfdmVyc2lvbigpKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNobWZpbGUpOgogICAgICAgICAgICAgICAgICAgICBkb2Nob21lID0gY2htZmlsZQogICAgICAgICAgICAgZWxpZiBtYWNvc3hTdXBwb3J0LnJ1bm5pbmdBc09TWEFwcCgpOgogICAgICAgICAgICAgICAgICMgZG9jdW1lbnRhdGlvbiBpcyBzdG9yZWQgaW5zaWRlIHRoZSBweXRob24gZnJhbWV3b3JrCi0gICAgICAgICAgICAgICAgZG9jaG9tZSA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LAorICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgJ1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL0RvY3VtZW50YXRpb24vaW5kZXguaHRtbCcpCiAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5ub3JtcGF0aChkb2Nob21lKQogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZG9jaG9tZSk6CkBAIC0xMDQxLDcgKzEwNDEsMTAgQEAKIAogICAgIGRlZiBsb2FkX2V4dGVuc2lvbihzZWxmLCBuYW1lKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbXSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHByaW50KCJcbkZhaWxlZCB0byBpbXBvcnQgZXh0ZW5zaW9uOiAiLCBuYW1lKQogICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKaW5kZXggNDQxNGRlNy4uNGFmNGIwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKQEAgLTIzNCw3ICsyMzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbid0IGNvbnRpbnVlIGFmdGVyIG90aGVyIHR5cGVzIG9mIGJyYWNrZXRzCiAgICAgICAgICAgICAgICAgICAgIGlmIHJhd3RleHRbcG9zXSBpbiAiJ1wiIjoKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2NhbiBhIHN0cmluZyBwcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHBvcyA+IDAgYW5kIHJhd3RleHRbcG9zIC0gMV0gaW4gInJSYkIiOgorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgcG9zID4gMCBhbmQgcmF3dGV4dFtwb3MgLSAxXSBpbiAiclJiQnVVIjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgLT0gMQogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9pZGVudGlmaWVyX3BvcyA9IHBvcwogICAgICAgICAgICAgICAgICAgICBicmVhawpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CmluZGV4IGM0ZjE0ZWYuLjlmZTA3MDEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCB0eXBlcwotaW1wb3J0IHBpcGVzCitpbXBvcnQgc2hsZXgKIGltcG9ydCBzeXMKIGltcG9ydCBjb2RlY3MKIGltcG9ydCB0ZW1wZmlsZQpAQCAtNDU5LDcgKzQ1OSw3IEBACiAgICAgICAgIGVsc2U6ICNubyBwcmludGluZyBmb3IgdGhpcyBwbGF0Zm9ybQogICAgICAgICAgICAgcHJpbnRQbGF0Zm9ybSA9IEZhbHNlCiAgICAgICAgIGlmIHByaW50UGxhdGZvcm06ICAjd2UgY2FuIHRyeSB0byBwcmludCBmb3IgdGhpcyBwbGF0Zm9ybQotICAgICAgICAgICAgY29tbWFuZCA9IGNvbW1hbmQgJSBwaXBlcy5xdW90ZShmaWxlbmFtZSkKKyAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kICUgc2hsZXgucXVvdGUoZmlsZW5hbWUpCiAgICAgICAgICAgICBwaXBlID0gb3MucG9wZW4oY29tbWFuZCwgInIiKQogICAgICAgICAgICAgIyB0aGluZ3MgY2FuIGdldCB1Z2x5IG9uIE5UIGlmIHRoZXJlIGlzIG5vIHByaW50ZXIgYXZhaWxhYmxlLgogICAgICAgICAgICAgb3V0cHV0ID0gcGlwZS5yZWFkKCkuc3RyaXAoKQpAQCAtNDg2LDYgKzQ4Niw4IEBACiAgICAgICAgICgiQWxsIGZpbGVzIiwgIioiKSwKICAgICAgICAgXQogCisgICAgZGVmYXVsdGV4dGVuc2lvbiA9ICcucHknIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlICcnCisKICAgICBkZWYgYXNrb3BlbmZpbGUoc2VsZik6CiAgICAgICAgIGRpciwgYmFzZSA9IHNlbGYuZGVmYXVsdGZpbGVuYW1lKCJvcGVuIikKICAgICAgICAgaWYgbm90IHNlbGYub3BlbmRpYWxvZzoKQEAgLTUwOSw4ICs1MTEsMTAgQEAKICAgICBkZWYgYXNrc2F2ZWZpbGUoc2VsZik6CiAgICAgICAgIGRpciwgYmFzZSA9IHNlbGYuZGVmYXVsdGZpbGVuYW1lKCJzYXZlIikKICAgICAgICAgaWYgbm90IHNlbGYuc2F2ZWRpYWxvZzoKLSAgICAgICAgICAgIHNlbGYuc2F2ZWRpYWxvZyA9IHRrRmlsZURpYWxvZy5TYXZlQXMobWFzdGVyPXNlbGYudGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGVzPXNlbGYuZmlsZXR5cGVzKQorICAgICAgICAgICAgc2VsZi5zYXZlZGlhbG9nID0gdGtGaWxlRGlhbG9nLlNhdmVBcygKKyAgICAgICAgICAgICAgICAgICAgbWFzdGVyPXNlbGYudGV4dCwKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGVzPXNlbGYuZmlsZXR5cGVzLAorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ZXh0ZW5zaW9uPXNlbGYuZGVmYXVsdGV4dGVuc2lvbikKICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLnNhdmVkaWFsb2cuc2hvdyhpbml0aWFsZGlyPWRpciwgaW5pdGlhbGZpbGU9YmFzZSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL05FV1MudHh0IGIvTGliL2lkbGVsaWIvTkVXUy50eHQKaW5kZXggZjIzNGI2NC4uZjZlODkxNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTkVXUy50eHQKKysrIGIvTGliL2lkbGVsaWIvTkVXUy50eHQKQEAgLTEsMTAgKzEsMjMgQEAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjIuND8KK1doYXQncyBOZXcgaW4gSURMRSAzLjMuMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworLSBJc3N1ZSAjMTYyMjY6IEZpeCBJRExFIFBhdGggQnJvd3NlciBjcmFzaC4KKyAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQorCistIElzc3VlICMxNTg1MzogUHJldmVudCBJRExFIGNyYXNoIG9uIE9TIFggd2hlbiBvcGVuaW5nIFByZWZlcmVuY2VzIG1lbnUKKyAgd2l0aCBjZXJ0YWluIHZlcnNpb25zIG9mIFRrIDguNS4gIEluaXRpYWwgcGF0Y2ggYnkgS2V2aW4gV2FsemVyLgorCisKK1doYXQncyBOZXcgaW4gSURMRSAzLjMuMD8KID09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLSBJc3N1ZSAjNzE2MzogUHJvcGFnYXRlIHJldHVybiB2YWx1ZSBvZiBzeXMuc3Rkb3V0LndyaXRlLgogCiAtIElzc3VlICMxNTMxODogUHJldmVudCB3cml0aW5nIHRvIHN5cy5zdGRpbi4KIAorLSBJc3N1ZSAjNDgzMjogTW9kaWZ5IElETEUgdG8gc2F2ZSBmaWxlcyB3aXRoIC5weSBleHRlbnNpb24gYnkKKyAgZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBPUyBYIChUayA4LjUpIGFzIGl0IGFscmVhZHkgZG9lcyB3aXRoIFgxMSBUay4KKwogLSBJc3N1ZSAjMTM1MzIsICMxNTMxOTogQ2hlY2sgdGhhdCBhcmd1bWVudHMgdG8gc3lzLnN0ZG91dC53cml0ZSBhcmUgc3RyaW5ncy4KIAogLSBJc3N1ZSAjIDEyNTEwOiBBdHRlbXB0IHRvIGdldCBjZXJ0YWluIHRvb2wgdGlwcyBubyBsb25nZXIgY3Jhc2hlcyBJRExFLgpAQCAtMTgsMTUgKzMxLDEwIEBACiAtIElzc3VlICMxNDkzNzogUGVyZm9ybSBhdXRvLWNvbXBsZXRpb24gb2YgZmlsZW5hbWVzIGluIHN0cmluZ3MgZXZlbiBmb3IKICAgbm9uLUFTQ0lJIGZpbGVuYW1lcy4gTGlrZXdpc2UgZm9yIGlkZW50aWZpZXJzLgogCi0tIElzc3VlICMxNDAxODogVXBkYXRlIGNoZWNrcyBmb3IgdW5zdGFibGUgc3lzdGVtIFRjbC9UayB2ZXJzaW9ucyBvbiBPUyBYCi0gIHRvIGluY2x1ZGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgorLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KKyAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KIAotLSBJc3N1ZSAjMTU4NTM6IFByZXZlbnQgSURMRSBjcmFzaCBvbiBPUyBYIHdoZW4gb3BlbmluZyBQcmVmZXJlbmNlcyBtZW51Ci0gIHdpdGggY2VydGFpbiB2ZXJzaW9ucyBvZiBUayA4LjUuICBJbml0aWFsIHBhdGNoIGJ5IEtldmluIFdhbHplci4KLQotCi1XaGF0J3MgTmV3IGluIElETEUgMy4yLjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09CistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIGBweXRob24gLW0gaWRsZWxpYmAKIAogLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKICAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZApAQCAtMzYsNiArNDQsOSBAQAogLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwogICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKS4KIAorLSBJc3N1ZSAjMTQwMTg6IFVwZGF0ZSBjaGVja3MgZm9yIHVuc3RhYmxlIHN5c3RlbSBUY2wvVGsgdmVyc2lvbnMgb24gT1MgWAorICB0byBpbmNsdWRlIHZlcnNpb25zIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjcgYW5kIDEwLjggaW4gYWRkaXRpb24gdG8gMTAuNi4KKwogCiBXaGF0J3MgTmV3IGluIElETEUgMy4yLjE/CiA9PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CmluZGV4IGQ4OGE0OGUuLjU1YmYxYWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogCiBmcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZUl0ZW0KIGZyb20gaWRsZWxpYi5DbGFzc0Jyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCkBAIC03MCw5ICs3MSwxMSBAQAogCiAgICAgZGVmIGxpc3Rtb2R1bGVzKHNlbGYsIGFsbG5hbWVzKToKICAgICAgICAgbW9kdWxlcyA9IHt9Ci0gICAgICAgIHN1ZmZpeGVzID0gaW1wLmdldF9zdWZmaXhlcygpCisgICAgICAgIHN1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQogICAgICAgICBzb3J0ZWQgPSBbXQotICAgICAgICBmb3Igc3VmZiwgbW9kZSwgZmxhZyBpbiBzdWZmaXhlczoKKyAgICAgICAgZm9yIHN1ZmYgaW4gc3VmZml4ZXM6CiAgICAgICAgICAgICBpID0gLWxlbihzdWZmKQogICAgICAgICAgICAgZm9yIG5hbWUgaW4gYWxsbmFtZXNbOl06CiAgICAgICAgICAgICAgICAgbm9ybWVkX25hbWUgPSBvcy5wYXRoLm5vcm1jYXNlKG5hbWUpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5IGIvTGliL2lkbGVsaWIvUHlTaGVsbC5weQppbmRleCBmYjQ3Yjk5Li4zYjc4ZjM4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKQEAgLTQ4Myw2ICs0ODMsMTAgQEAKIAogICAgIGRlZiBraWxsX3N1YnByb2Nlc3Moc2VsZik6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucnBjY2x0Lmxpc3RlbmluZ19zb2NrLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBubyBzb2NrZXQKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5ycGNjbHQuY2xvc2UoKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIG5vIHNvY2tldAogICAgICAgICAgICAgcGFzcwpAQCAtMTAxMSw2ICsxMDE1LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5vc3ViID0gIj09PT0gTm8gU3VicHJvY2VzcyA9PT09IgorICAgICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gcnBjLmRpc3BsYXlob29rCisKICAgICAgICAgc2VsZi53cml0ZSgiUHl0aG9uICVzIG9uICVzXG4lc1xuJXMiICUKICAgICAgICAgICAgICAgICAgICAoc3lzLnZlcnNpb24sIHN5cy5wbGF0Zm9ybSwgc2VsZi5DT1BZUklHSFQsIG5vc3ViKSkKICAgICAgICAgc2VsZi5zaG93cHJvbXB0KCkKQEAgLTEyMzMsNiArMTIzOSwxNiBAQAogICAgICAgICBzZWxmLnNldF9saW5lX2FuZF9jb2x1bW4oKQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMsIHRhZ3M9KCkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cikgYW5kIGxlbihzKSBhbmQgbWF4KHMpID4gJ1x1ZmZmZic6CisgICAgICAgICAgICAjIFRrIGRvZXNuJ3Qgc3VwcG9ydCBvdXRwdXR0aW5nIG5vbi1CTVAgY2hhcmFjdGVycworICAgICAgICAgICAgIyBMZXQncyBhc3N1bWUgd2hhdCBwcmludGVkIHN0cmluZyBpcyBub3QgdmVyeSBsb25nLAorICAgICAgICAgICAgIyBmaW5kIGZpcnN0IG5vbi1CTVAgY2hhcmFjdGVyIGFuZCBjb25zdHJ1Y3QgaW5mb3JtYXRpdmUKKyAgICAgICAgICAgICMgVW5pY29kZUVuY29kZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIGZvciBzdGFydCwgY2hhciBpbiBlbnVtZXJhdGUocyk6CisgICAgICAgICAgICAgICAgaWYgY2hhciA+ICdcdWZmZmYnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVuY29kZUVycm9yKCJVQ1MtMiIsIGNoYXIsIHN0YXJ0LCBzdGFydCsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb24tQk1QIGNoYXJhY3RlciBub3Qgc3VwcG9ydGVkIGluIFRrJykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi50ZXh0Lm1hcmtfZ3Jhdml0eSgiaW9tYXJrIiwgInJpZ2h0IikKICAgICAgICAgICAgIGNvdW50ID0gT3V0cHV0V2luZG93LndyaXRlKHNlbGYsIHMsIHRhZ3MsICJpb21hcmsiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weSBiL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKaW5kZXggMThjZTk2NS4uNTI4YWRmNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CkBAIC0xNTAsMTYgKzE1MCwxNiBAQAogICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBUb28gb2Z0ZW4gdGhpcyBkaXNjYXJkcyBhcmd1bWVudHMgdGhlIHVzZXIganVzdCBzZXQuLi4KICAgICAgICAgaW50ZXJwLnJ1bmNvbW1hbmQoIiIiaWYgMToKLSAgICAgICAgICAgIF9maWxlbmFtZSA9ICVyCisgICAgICAgICAgICBfX2ZpbGVfXyA9IHtmaWxlbmFtZSFyfQogICAgICAgICAgICAgaW1wb3J0IHN5cyBhcyBfc3lzCiAgICAgICAgICAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGJhc2VuYW1lIGFzIF9iYXNlbmFtZQogICAgICAgICAgICAgaWYgKG5vdCBfc3lzLmFyZ3Ygb3IKLSAgICAgICAgICAgICAgICBfYmFzZW5hbWUoX3N5cy5hcmd2WzBdKSAhPSBfYmFzZW5hbWUoX2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgX3N5cy5hcmd2ID0gW19maWxlbmFtZV0KKyAgICAgICAgICAgICAgICBfYmFzZW5hbWUoX3N5cy5hcmd2WzBdKSAhPSBfYmFzZW5hbWUoX19maWxlX18pKToKKyAgICAgICAgICAgICAgICBfc3lzLmFyZ3YgPSBbX19maWxlX19dCiAgICAgICAgICAgICBpbXBvcnQgb3MgYXMgX29zCi0gICAgICAgICAgICBfb3MuY2hkaXIoJXIpCi0gICAgICAgICAgICBkZWwgX2ZpbGVuYW1lLCBfc3lzLCBfYmFzZW5hbWUsIF9vcwotICAgICAgICAgICAgXG4iIiIgJSAoZmlsZW5hbWUsIGRpcm5hbWUpKQorICAgICAgICAgICAgX29zLmNoZGlyKHtkaXJuYW1lIXJ9KQorICAgICAgICAgICAgZGVsIF9zeXMsIF9iYXNlbmFtZSwgX29zCisgICAgICAgICAgICBcbiIiIi5mb3JtYXQoZmlsZW5hbWU9ZmlsZW5hbWUsIGRpcm5hbWU9ZGlybmFtZSkpCiAgICAgICAgIGludGVycC5wcmVwZW5kX3N5c3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICMgWFhYIEtCSyAwM0p1bDA0IFdoZW4gcnVuIHcvbyBzdWJwcm9jZXNzLCBydW50aW1lIHdhcm5pbmdzIHN0aWxsCiAgICAgICAgICMgICAgICAgICBnbyB0byBfX3N0ZGVycl9fLiAgV2l0aCBzdWJwcm9jZXNzLCB0aGV5IGdvIHRvIHRoZSBzaGVsbC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5IGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2NmYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsOSBAQAorIiIiCitJRExFIG1haW4gZW50cnkgcG9pbnQKKworUnVuIElETEUgYXMgcHl0aG9uIC1tIGlkbGVsaWIKKyIiIgorCisKK2ltcG9ydCBpZGxlbGliLlB5U2hlbGwKK2lkbGVsaWIuUHlTaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkgYi9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CmluZGV4IGUyMmNlYjAuLjQwNWM3YTEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQpAQCAtMTQ1LDcgKzE0NSw4IEBACiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCiAgICAgICAgICAgICAgICAgY2ZnRmlsZSA9IG9wZW4oZm5hbWUsICd3JykKLSAgICAgICAgICAgIHNlbGYud3JpdGUoY2ZnRmlsZSkKKyAgICAgICAgICAgIHdpdGggY2ZnRmlsZToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGNmZ0ZpbGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLlJlbW92ZUZpbGUoKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQppbmRleCAxNzQ1NWRiLi44ZDgzMTdkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKQEAgLTEgKzEgQEAKLUlETEVfVkVSU0lPTiA9ICIzLjIuMyIKK0lETEVfVkVSU0lPTiA9ICIzLjMuMCIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkgYi9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CmluZGV4IDk2OTA0NDIuLjY3MDY5ZmEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKKysrIGIvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQpAQCAtMTIsMTIgKzEyLDIyIEBACiBkZWYgcnVubmluZ0FzT1NYQXBwKCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIFB5dGhvbiBpcyBydW5uaW5nIGZyb20gd2l0aGluIGFuIGFwcCBvbiBPU1guCi0gICAgSWYgc28sIGFzc3VtZSB0aGF0IFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBBcXVhIFRjbC9UayByYXRoZXIgdGhhbgotICAgIFgxMSBUY2wvVGsuCisgICAgSWYgc28sIHRoZSB2YXJpb3VzIE9TIFggY3VzdG9taXphdGlvbnMgd2lsbCBiZSB0cmlnZ2VyZWQgbGF0ZXIgKG1lbnUKKyAgICBmaXh1cCwgZXQgYWwpLiAgKE9yaWdpbmFsbHksIHRoaXMgdGVzdCB3YXMgc3VwcG9zZWQgdG8gY29uZGl0aW9uCisgICAgYmVoYXZpb3Igb24gd2hldGhlciBJRExFIHdhcyBydW5uaW5nIHVuZGVyIEFxdWEgVGsgcmF0aGVyIHRoYW4KKyAgICB1bmRlciBYMTEgVGsgYnV0IHRoYXQgZG9lcyBub3Qgd29yayBzaW5jZSBhIGZyYW1ld29yayBidWlsZAorICAgIGNvdWxkIGJlIGxpbmtlZCB3aXRoIFgxMS4gIEZvciBzZXZlcmFsIHJlbGVhc2VzLCB0aGlzIHRlc3QgYWN0dWFsbHkKKyAgICBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHdoZXRoZXIgSURMRSBpcyBydW5uaW5nIGZyb20gYSBmcmFtZXdvcmsgb3IKKyAgICBub3QuICBBcyBhIGZ1dHVyZSBlbmhhbmNlbWVudCwgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgd2hldGhlciB0aGVyZQorICAgIHNob3VsZCBiZSBhIGRpZmZlcmVuY2UgYmFzZWQgb24gZnJhbWV3b3JrIGFuZCBhbnkgbmVlZGVkIFgxMSBhZGFwdGlvbnMKKyAgICBzaG91bGQgYmUgbWFkZSBkZXBlbmRlbnQgb24gYSBuZXcgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSB0ZXN0cyBmb3IgWDExLikKICAgICAiIiIKICAgICBnbG9iYWwgX2FwcGJ1bmRsZQogICAgIGlmIF9hcHBidW5kbGUgaXMgTm9uZToKLSAgICAgICAgX2FwcGJ1bmRsZSA9IChzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICcuYXBwJyBpbiBzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgX2FwcGJ1bmRsZSA9IHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJworICAgICAgICBpZiBfYXBwYnVuZGxlOgorICAgICAgICAgICAgaW1wb3J0IHN5c2NvbmZpZworICAgICAgICAgICAgX2FwcGJ1bmRsZSA9IGJvb2woc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKSkKICAgICByZXR1cm4gX2FwcGJ1bmRsZQogCiBfY2FyYm9uYXF1YXRrID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnBjLnB5IGIvTGliL2lkbGVsaWIvcnBjLnB5CmluZGV4IGRlZjQzOTQuLjc3Y2IzYWMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3JwYy5weQorKysgYi9MaWIvaWRsZWxpYi9ycGMucHkKQEAgLTQwLDYgKzQwLDcgQEAKIGltcG9ydCBjb3B5cmVnCiBpbXBvcnQgdHlwZXMKIGltcG9ydCBtYXJzaGFsCitpbXBvcnQgYnVpbHRpbnMKIAogCiBkZWYgdW5waWNrbGVfY29kZShtcyk6CkBAIC0xOTYsOCArMTk3LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICgiRVJST1IiLCAiVW5zdXBwb3J0ZWQgbWVzc2FnZSB0eXBlOiAlcyIgJSBob3cpCiAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICByZXR1cm4gKCJDQUxMRVhDIiwgZXgpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIG1zZyA9ICIqKiogSW50ZXJuYWwgRXJyb3I6IHJwYy5weTpTb2NrZXRJTy5sb2NhbGNhbGwoKVxuXG4iXAogICAgICAgICAgICAgICAgICAgIiBPYmplY3Q6ICVzIFxuIE1ldGhvZDogJXMgXG4gQXJnczogJXNcbiIKQEAgLTI1Nyw2ICsyNjIsOSBAQAogICAgICAgICBpZiBob3cgPT0gIkVSUk9SIjoKICAgICAgICAgICAgIHNlbGYuZGVidWcoImRlY29kZXJlc3BvbnNlOiBJbnRlcm5hbCBFUlJPUjoiLCB3aGF0KQogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKHdoYXQpCisgICAgICAgIGlmIGhvdyA9PSAiQ0FMTEVYQyI6CisgICAgICAgICAgICBzZWxmLmRlYnVnKCJkZWNvZGVyZXNwb25zZTogQ2FsbCBFeGNlcHRpb246Iiwgd2hhdCkKKyAgICAgICAgICAgIHJhaXNlIHdoYXQKICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoaG93LCB3aGF0KQogCiAgICAgZGVmIGRlY29kZV9pbnRlcnJ1cHRob29rKHNlbGYpOgpAQCAtNTk2LDMgKzYwNCwyMSBAQAogCiAjIFhYWCBLQksgMDlTZXAwMyAgV2UgbmVlZCBhIHByb3BlciB1bml0IHRlc3QgZm9yIHRoaXMgbW9kdWxlLiAgUHJldmlvdXNseQogIyAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIHRlc3QgY29kZSB3YXMgcmVtb3ZlZCBhdCBSZXYgMS4yNyAocjM0MDk4KS4KKworZGVmIGRpc3BsYXlob29rKHZhbHVlKToKKyAgICAiIiJPdmVycmlkZSBzdGFuZGFyZCBkaXNwbGF5IGhvb2sgdG8gdXNlIG5vbi1sb2NhbGUgZW5jb2RpbmciIiIKKyAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICByZXR1cm4KKyAgICAjIFNldCAnXycgdG8gTm9uZSB0byBhdm9pZCByZWN1cnNpb24KKyAgICBidWlsdGlucy5fID0gTm9uZQorICAgIHRleHQgPSByZXByKHZhbHVlKQorICAgIHRyeToKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSh0ZXh0KQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICMgbGV0J3MgdXNlIGFzY2lpIHdoaWxlIHV0ZjgtYm1wIGNvZGVjIGRvZXNuJ3QgcHJlc2VudAorICAgICAgICBlbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgYnl0ZXMgPSB0ZXh0LmVuY29kZShlbmNvZGluZywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICB0ZXh0ID0gYnl0ZXMuZGVjb2RlKGVuY29kaW5nLCAnc3RyaWN0JykKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSh0ZXh0KQorICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKKyAgICBidWlsdGlucy5fID0gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3J1bi5weSBiL0xpYi9pZGxlbGliL3J1bi5weQppbmRleCBiMGE0Nzk0Li5kYmYwNDZiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ydW4ucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuLnB5CkBAIC03LDYgKzcsNyBAQAogaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgcXVldWUKK2ltcG9ydCB0a2ludGVyCiAKIGZyb20gaWRsZWxpYiBpbXBvcnQgQ2FsbFRpcHMKIGZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlCkBAIC0zOSw2ICs0MCwxNyBAQAogICAgICAgICByZXR1cm4gcwogICAgIHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcgPSBpZGxlX2Zvcm1hdHdhcm5pbmdfc3VicHJvYwogCisKK3RjbCA9IHRraW50ZXIuVGNsKCkKKworCitkZWYgaGFuZGxlX3RrX2V2ZW50cyh0Y2w9dGNsKToKKyAgICAiIiJQcm9jZXNzIGFueSB0ayBldmVudHMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgZGlzcGF0Y2hlZCBpZiB0a2ludGVyCisgICAgaGFzIGJlZW4gaW1wb3J0ZWQsIGEgdGNsIGludGVycHJldGVyIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIHRrIGhhcyBiZWVuCisgICAgbG9hZGVkLiIiIgorICAgIHRjbC5ldmFsKCJ1cGRhdGUiKQorCisKICMgVGhyZWFkIHNoYXJlZCBnbG9iYWxzOiBFc3RhYmxpc2ggYSBxdWV1ZSBiZXR3ZWVuIGEgc3VidGhyZWFkICh3aGljaCBoYW5kbGVzCiAjIHRoZSBzb2NrZXQpIGFuZCB0aGUgbWFpbiB0aHJlYWQgKHdoaWNoIHJ1bnMgdXNlciBjb2RlKSwgcGx1cyBnbG9iYWwKICMgY29tcGxldGlvbiwgZXhpdCBhbmQgaW50ZXJydXB0YWJsZSAodGhlIG1haW4gdGhyZWFkKSBmbGFnczoKQEAgLTk0LDYgKzEwNiw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VxLCByZXF1ZXN0ID0gcnBjLnJlcXVlc3RfcXVldWUuZ2V0KGJsb2NrPVRydWUsIHRpbWVvdXQ9MC4wNSkKICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBoYW5kbGVfdGtfZXZlbnRzKCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbWV0aG9kLCBhcmdzLCBrd2FyZ3MgPSByZXF1ZXN0CiAgICAgICAgICAgICByZXQgPSBtZXRob2QoKmFyZ3MsICoqa3dhcmdzKQpAQCAtMTY4LDcgKzE4MSw5IEBACiAgICAgICAgICAgICBwcmludF9leGModHlwZShjYXVzZSksIGNhdXNlLCBjYXVzZS5fX3RyYWNlYmFja19fKQogICAgICAgICAgICAgcHJpbnQoIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCiAgICAgICAgICAgICAgICAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG4iLCBmaWxlPWVmaWxlKQotICAgICAgICBlbGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNvbnRleHQgbm90IGluIHNlZW46CisgICAgICAgIGVsaWYgKGNvbnRleHQgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICAgIG5vdCBleGMuX19zdXBwcmVzc19jb250ZXh0X18gYW5kCisgICAgICAgICAgICAgIGNvbnRleHQgbm90IGluIHNlZW4pOgogICAgICAgICAgICAgcHJpbnRfZXhjKHR5cGUoY29udGV4dCksIGNvbnRleHQsIGNvbnRleHQuX190cmFjZWJhY2tfXykKICAgICAgICAgICAgIHByaW50KCJcbkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAiCiAgICAgICAgICAgICAgICAgICAiYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4iLCBmaWxlPWVmaWxlKQpAQCAtMzEyLDYgKzMyNyw3IEBACiAgICAgICAgIHN5cy5zdGRpbiA9IF9SUENJbnB1dEZpbGUoc2VsZi5jb25zb2xlKQogICAgICAgICBzeXMuc3Rkb3V0ID0gX1JQQ091dHB1dEZpbGUoc2VsZi5nZXRfcmVtb3RlX3Byb3h5KCJzdGRvdXQiKSkKICAgICAgICAgc3lzLnN0ZGVyciA9IF9SUENPdXRwdXRGaWxlKHNlbGYuZ2V0X3JlbW90ZV9wcm94eSgic3RkZXJyIikpCisgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vawogICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCiAgICAgICAgIGltcG9ydCBweWRvYyAjIGltcG9ydCBtdXN0IGJlIGRvbmUgaGVyZSB0byBjYXB0dXJlIGkvbyBiaW5kaW5nCiAgICAgICAgIHB5ZG9jLnBhZ2VyID0gcHlkb2MucGxhaW5wYWdlcgpkaWZmIC0tZ2l0IGEvTGliL2ltYXBsaWIucHkgYi9MaWIvaW1hcGxpYi5weQppbmRleCBjMDMzNGQ4Li4zZjhjNjVhIDEwMDY0NAotLS0gYS9MaWIvaW1hcGxpYi5weQorKysgYi9MaWIvaW1hcGxpYi5weQpAQCAtMjMsNyArMjMsNyBAQAogX192ZXJzaW9uX18gPSAiMi41OCIKIAogaW1wb3J0IGJpbmFzY2lpLCBlcnJubywgcmFuZG9tLCByZSwgc29ja2V0LCBzdWJwcm9jZXNzLCBzeXMsIHRpbWUsIGNhbGVuZGFyCi0KK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCiB0cnk6CiAgICAgaW1wb3J0IHNzbAogICAgIEhBVkVfU1NMID0gVHJ1ZQpAQCAtMjQ5LDE1ICsyNDksNyBAQAogCiAgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZSk6CiAgICAgICAgICIiIlJlYWQgJ3NpemUnIGJ5dGVzIGZyb20gcmVtb3RlLiIiIgotICAgICAgICBjaHVua3MgPSBbXQotICAgICAgICByZWFkID0gMAotICAgICAgICB3aGlsZSByZWFkIDwgc2l6ZToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmZpbGUucmVhZChtaW4oc2l6ZS1yZWFkLCA0MDk2KSkKLSAgICAgICAgICAgIGlmIG5vdCBkYXRhOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICByZWFkICs9IGxlbihkYXRhKQotICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChkYXRhKQotICAgICAgICByZXR1cm4gYicnLmpvaW4oY2h1bmtzKQorICAgICAgICByZXR1cm4gc2VsZi5maWxlLnJlYWQoc2l6ZSkKIAogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgpAQCAtMTE3NywyNSArMTE2OSw0MCBAQAogCiAgICAgICAgICIiIklNQVA0IGNsaWVudCBjbGFzcyBvdmVyIFNTTCBjb25uZWN0aW9uCiAKLSAgICAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDRfU1NMKFtob3N0WywgcG9ydFssIGtleWZpbGVbLCBjZXJ0ZmlsZV1dXV0pCisgICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X1NTTChbaG9zdFssIHBvcnRbLCBrZXlmaWxlWywgY2VydGZpbGVbLCBzc2xfY29udGV4dF1dXV1dKQogCiAgICAgICAgICAgICAgICAgaG9zdCAtIGhvc3QncyBuYW1lIChkZWZhdWx0OiBsb2NhbGhvc3QpOwotICAgICAgICAgICAgICAgIHBvcnQgLSBwb3J0IG51bWJlciAoZGVmYXVsdDogc3RhbmRhcmQgSU1BUDQgU1NMIHBvcnQpLgorICAgICAgICAgICAgICAgIHBvcnQgLSBwb3J0IG51bWJlciAoZGVmYXVsdDogc3RhbmRhcmQgSU1BUDQgU1NMIHBvcnQpOwogICAgICAgICAgICAgICAgIGtleWZpbGUgLSBQRU0gZm9ybWF0dGVkIGZpbGUgdGhhdCBjb250YWlucyB5b3VyIHByaXZhdGUga2V5IChkZWZhdWx0OiBOb25lKTsKICAgICAgICAgICAgICAgICBjZXJ0ZmlsZSAtIFBFTSBmb3JtYXR0ZWQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSAoZGVmYXVsdDogTm9uZSk7CisgICAgICAgICAgICAgICAgc3NsX2NvbnRleHQgLSBhIFNTTENvbnRleHQgb2JqZWN0IHRoYXQgY29udGFpbnMgeW91ciBjZXJ0aWZpY2F0ZSBjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHByaXZhdGUga2V5IChkZWZhdWx0OiBOb25lKQorICAgICAgICAgICAgICAgIE5vdGU6IGlmIHNzbF9jb250ZXh0IGlzIHByb3ZpZGVkLCB0aGVuIHBhcmFtZXRlcnMga2V5ZmlsZSBvcgorICAgICAgICAgICAgICAgIGNlcnRmaWxlIHNob3VsZCBub3QgYmUgc2V0IG90aGVyd2lzZSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4KIAogICAgICAgICBmb3IgbW9yZSBkb2N1bWVudGF0aW9uIHNlZSB0aGUgZG9jc3RyaW5nIG9mIHRoZSBwYXJlbnQgY2xhc3MgSU1BUDQuCiAgICAgICAgICIiIgogCiAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QgPSAnJywgcG9ydCA9IElNQVA0X1NTTF9QT1JULCBrZXlmaWxlID0gTm9uZSwgY2VydGZpbGUgPSBOb25lKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKKyAgICAgICAgICAgIHNlbGYuc3NsX2NvbnRleHQgPSBzc2xfY29udGV4dAogICAgICAgICAgICAgSU1BUDQuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCkKIAogICAgICAgICBkZWYgX2NyZWF0ZV9zb2NrZXQoc2VsZik6CiAgICAgICAgICAgICBzb2NrID0gSU1BUDQuX2NyZWF0ZV9zb2NrZXQoc2VsZikKLSAgICAgICAgICAgIHJldHVybiBzc2wud3JhcF9zb2NrZXQoc29jaywgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQorICAgICAgICAgICAgaWYgc2VsZi5zc2xfY29udGV4dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zc2xfY29udGV4dC53cmFwX3NvY2tldChzb2NrKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKIAogICAgICAgICBkZWYgb3BlbihzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JUKToKICAgICAgICAgICAgICIiIlNldHVwIGNvbm5lY3Rpb24gdG8gcmVtb3RlIHNlcnZlciBvbiAiaG9zdDpwb3J0Ii4KQEAgLTEzMDYsMTAgKzEzMTMsOCBAQAogICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgIHJldHVybiBiaW5hc2NpaS5hMmJfYmFzZTY0KGlucCkKIAotCi0KLU1vbjJudW0gPSB7YidKYW4nOiAxLCBiJ0ZlYic6IDIsIGInTWFyJzogMywgYidBcHInOiA0LCBiJ01heSc6IDUsIGInSnVuJzogNiwKLSAgICAgICAgICAgYidKdWwnOiA3LCBiJ0F1Zyc6IDgsIGInU2VwJzogOSwgYidPY3QnOiAxMCwgYidOb3YnOiAxMSwgYidEZWMnOiAxMn0KK01vbnRocyA9ICcgSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMnLnNwbGl0KCcgJykKK01vbjJudW0gPSB7cy5lbmNvZGUoKTpuKzEgZm9yIG4sIHMgaW4gZW51bWVyYXRlKE1vbnRoc1sxOl0pfQogCiBkZWYgSW50ZXJuYWxkYXRlMnR1cGxlKHJlc3ApOgogICAgICIiIlBhcnNlIGFuIElNQVA0IElOVEVSTkFMREFURSBzdHJpbmcuCkBAIC0xMzc3LDI4ICsxMzgyLDM3IEBACiAgICAgUmV0dXJuIHN0cmluZyBpbiBmb3JtOiAnIkRELU1tbS1ZWVlZIEhIOk1NOlNTICtISE1NIicuICBUaGUKICAgICBkYXRlX3RpbWUgYXJndW1lbnQgY2FuIGJlIGEgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZwogICAgIHNlY29uZHMgc2luY2UgZXBvY2ggKGFzIHJldHVybmVkIGJ5IHRpbWUudGltZSgpKSwgYSA5LXR1cGxlCi0gICAgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUgKGFzIHJldHVybmVkIGJ5IHRpbWUubG9jYWx0aW1lKCkpLCBvciBhCisgICAgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUsIGFuIGluc3RhbmNlIG9mIHRpbWUuc3RydWN0X3RpbWUgKGFzCisgICAgcmV0dXJuZWQgYnkgdGltZS5sb2NhbHRpbWUoKSksIGFuIGF3YXJlIGRhdGV0aW1lIGluc3RhbmNlIG9yIGEKICAgICBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0IGNhc2UsIGl0IGlzIGFzc3VtZWQgdG8gYWxyZWFkeQogICAgIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdC4KICAgICAiIiIKLQogICAgIGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAoaW50LCBmbG9hdCkpOgotICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKGRhdGVfdGltZSkKLSAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAodHVwbGUsIHRpbWUuc3RydWN0X3RpbWUpKToKLSAgICAgICAgdHQgPSBkYXRlX3RpbWUKKyAgICAgICAgZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKGRhdGVfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lLnV0YykuYXN0aW1lem9uZSgpCisgICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgdHVwbGUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBnbXRvZmYgPSBkYXRlX3RpbWUudG1fZ210b2ZmCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGlmIHRpbWUuZGF5bGlnaHQ6CisgICAgICAgICAgICAgICAgZHN0ID0gZGF0ZV90aW1lWzhdCisgICAgICAgICAgICAgICAgaWYgZHN0ID09IC0xOgorICAgICAgICAgICAgICAgICAgICBkc3QgPSB0aW1lLmxvY2FsdGltZSh0aW1lLm1rdGltZShkYXRlX3RpbWUpKVs4XQorICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0odGltZS50aW1lem9uZSwgdGltZS5hbHR6b25lKVtkc3RdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGdtdG9mZiA9IC10aW1lLnRpbWV6b25lCisgICAgICAgIGRlbHRhID0gdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKQorICAgICAgICBkdCA9IGRhdGV0aW1lKCpkYXRlX3RpbWVbOjZdLCB0emluZm89dGltZXpvbmUoZGVsdGEpKQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIGRhdGV0aW1lKToKKyAgICAgICAgaWYgZGF0ZV90aW1lLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGF0ZV90aW1lIG11c3QgYmUgYXdhcmUiKQorICAgICAgICBkdCA9IGRhdGVfdGltZQogICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIHN0cikgYW5kIChkYXRlX3RpbWVbMF0sZGF0ZV90aW1lWy0xXSkgPT0gKCciJywnIicpOgogICAgICAgICByZXR1cm4gZGF0ZV90aW1lICAgICAgICAjIEFzc3VtZSBpbiBjb3JyZWN0IGZvcm1hdAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGVfdGltZSBub3Qgb2YgYSBrbm93biB0eXBlIikKLQotICAgIGR0ID0gdGltZS5zdHJmdGltZSgiJWQtJWItJVkgJUg6JU06JVMiLCB0dCkKLSAgICBpZiBkdFswXSA9PSAnMCc6Ci0gICAgICAgIGR0ID0gJyAnICsgZHRbMTpdCi0gICAgaWYgdGltZS5kYXlsaWdodCBhbmQgdHRbLTFdOgotICAgICAgICB6b25lID0gLXRpbWUuYWx0em9uZQotICAgIGVsc2U6Ci0gICAgICAgIHpvbmUgPSAtdGltZS50aW1lem9uZQotICAgIHJldHVybiAnIicgKyBkdCArICIgJSswM2QlMDJkIiAlIGRpdm1vZCh6b25lLy82MCwgNjApICsgJyInCisgICAgZm10ID0gJyIlZC17fS0lWSAlSDolTTolUyAleiInLmZvcm1hdChNb250aHNbZHQubW9udGhdKQorICAgIHJldHVybiBkdC5zdHJmdGltZShmbXQpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTljODRlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2ltcC5weQpAQCAtMCwwICsxLDI1NyBAQAorIiIiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHlvdXIgb3duIF9faW1wb3J0X18KK2Z1bmN0aW9uLiAgVW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBhcmUgb2Jzb2xldGUuCisKK0luIG1vc3QgY2FzZXMgaXQgaXMgcHJlZmVycmVkIHlvdSBjb25zaWRlciB1c2luZyB0aGUgaW1wb3J0bGliIG1vZHVsZSdzCitmdW5jdGlvbmFsaXR5IG92ZXIgdGhpcyBtb2R1bGUuCisKKyIiIgorIyAoUHJvYmFibHkpIG5lZWQgdG8gc3RheSBpbiBfaW1wCitmcm9tIF9pbXAgaW1wb3J0IChsb2NrX2hlbGQsIGFjcXVpcmVfbG9jaywgcmVsZWFzZV9sb2NrLAorICAgICAgICAgICAgICAgICAgbG9hZF9keW5hbWljLCBnZXRfZnJvemVuX29iamVjdCwgaXNfZnJvemVuX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICBpbml0X2J1aWx0aW4sIGluaXRfZnJvemVuLCBpc19idWlsdGluLCBpc19mcm96ZW4sCisgICAgICAgICAgICAgICAgICBfZml4X2NvX2ZpbGVuYW1lKQorCisjIERpcmVjdGx5IGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IG5ld19tb2R1bGUKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlLCBzb3VyY2VfZnJvbV9jYWNoZQorCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0b2tlbml6ZQoraW1wb3J0IHdhcm5pbmdzCisKKworIyBERVBSRUNBVEVECitTRUFSQ0hfRVJST1IgPSAwCitQWV9TT1VSQ0UgPSAxCitQWV9DT01QSUxFRCA9IDIKK0NfRVhURU5TSU9OID0gMworUFlfUkVTT1VSQ0UgPSA0CitQS0dfRElSRUNUT1JZID0gNQorQ19CVUlMVElOID0gNgorUFlfRlJPWkVOID0gNworUFlfQ09ERVJFU09VUkNFID0gOAorSU1QX0hPT0sgPSA5CisKKworZGVmIGdldF9tYWdpYygpOgorICAgICIiIlJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuIiIiCisgICAgcmV0dXJuIF9ib290c3RyYXAuX01BR0lDX0JZVEVTCisKKworZGVmIGdldF90YWcoKToKKyAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIiIgorICAgIHJldHVybiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCisKKworZGVmIGdldF9zdWZmaXhlcygpOgorICAgIHdhcm5pbmdzLndhcm4oJ2ltcC5nZXRfc3VmZml4ZXMoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIGNvbnN0YW50cyAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCBvbiBpbXBvcnRsaWIubWFjaGluZXJ5IGluc3RlYWQnLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIGV4dGVuc2lvbnMgPSBbKHMsICdyYicsIENfRVhURU5TSU9OKSBmb3IgcyBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTXQorICAgIHNvdXJjZSA9IFsocywgJ1UnLCBQWV9TT1VSQ0UpIGZvciBzIGluIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNdCisgICAgYnl0ZWNvZGUgPSBbKHMsICdyYicsIFBZX0NPTVBJTEVEKSBmb3IgcyBpbiBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNdCisKKyAgICByZXR1cm4gZXh0ZW5zaW9ucyArIHNvdXJjZSArIGJ5dGVjb2RlCisKKworY2xhc3MgTnVsbEltcG9ydGVyOgorCisgICAgIiIiTnVsbCBpbXBvcnQgb2JqZWN0LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2VtcHR5IHBhdGhuYW1lJywgcGF0aD0nJykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2V4aXN0aW5nIGRpcmVjdG9yeScsIHBhdGg9cGF0aCkKKworICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkFsd2F5cyByZXR1cm5zIE5vbmUuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgX0hhY2tlZEdldERhdGE6CisKKyAgICAiIiJDb21wYXRpYmlpbHR5IHN1cHBvcnQgZm9yICdmaWxlJyBhcmd1bWVudHMgb2YgdmFyaW91cyBsb2FkXyooKQorICAgIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCwgZmlsZT1Ob25lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5maWxlID0gZmlsZQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJHcm9zcyBoYWNrIHRvIGNvbnRvcnQgbG9hZGVyIHRvIGRlYWwgdy8gbG9hZF8qKCkncyBiYWQgQVBJLiIiIgorICAgICAgICBpZiBzZWxmLmZpbGUgYW5kIHBhdGggPT0gc2VsZi5wYXRoOgorICAgICAgICAgICAgd2l0aCBzZWxmLmZpbGU6CisgICAgICAgICAgICAgICAgIyBUZWNobmljYWxseSBzaG91bGQgYmUgcmV0dXJuaW5nIGJ5dGVzLCBidXQKKyAgICAgICAgICAgICAgICAjIFNvdXJjZUxvYWRlci5nZXRfY29kZSgpIGp1c3QgcGFzc2VkIHdoYXQgaXMgcmV0dXJuZWQgdG8KKyAgICAgICAgICAgICAgICAjIGNvbXBpbGUoKSB3aGljaCBjYW4gaGFuZGxlIHN0ci4gQW5kIGNvbnZlcnRpbmcgdG8gYnl0ZXMgd291bGQKKyAgICAgICAgICAgICAgICAjIHJlcXVpcmUgZmlndXJpbmcgb3V0IHRoZSBlbmNvZGluZyB0byBkZWNvZGUgdG8gYW5kCisgICAgICAgICAgICAgICAgIyB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBvbmx5IGFjY2VwdHMgYnl0ZXMuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9kYXRhKHBhdGgpCisKKworY2xhc3MgX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLCBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIpOgorCisgICAgIiIiQ29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgbG9hZF9zb3VyY2UoKS4iIiIKKworCitkZWYgbG9hZF9zb3VyY2UobmFtZSwgcGF0aG5hbWUsIGZpbGU9Tm9uZSk6CisgICAgbXNnID0gKCdpbXAubG9hZF9zb3VyY2UoKSBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKS5sb2FkX21vZHVsZSgpJworICAgICAgICAgICAnIGluc3RlYWQnKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgcmV0dXJuIF9Mb2FkU291cmNlQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkubG9hZF9tb2R1bGUobmFtZSkKKworCitjbGFzcyBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShfSGFja2VkR2V0RGF0YSwKKyAgICAgICAgX2Jvb3RzdHJhcC5Tb3VyY2VsZXNzRmlsZUxvYWRlcik6CisKKyAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBsb2FkX2NvbXBpbGVkKCkuIiIiCisKKworZGVmIGxvYWRfY29tcGlsZWQobmFtZSwgcGF0aG5hbWUsIGZpbGU9Tm9uZSk6CisgICAgbXNnID0gKCdpbXAubG9hZF9jb21waWxlZCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKS4nCisgICAgICAgICAgICdsb2FkX21vZHVsZSgpIGluc3RlYWQgJykKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIHJldHVybiBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkubG9hZF9tb2R1bGUobmFtZSkKKworCitkZWYgbG9hZF9wYWNrYWdlKG5hbWUsIHBhdGgpOgorICAgIG1zZyA9ICgnaW1wLmxvYWRfcGFja2FnZSgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSBlaXRoZXIgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCkgb3IgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcigpIGluc3RlYWQnKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgZXh0ZW5zaW9ucyA9IChtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzpdICsKKyAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0pCisgICAgICAgIGZvciBleHRlbnNpb24gaW4gZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ19faW5pdF9fJytleHRlbnNpb24pCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSBwYWNrYWdlJy5mb3JtYXQocGF0aCkpCisgICAgcmV0dXJuIF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKS5sb2FkX21vZHVsZShuYW1lKQorCisKK2RlZiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZGV0YWlscyk6CisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIExvYWQgYSBtb2R1bGUsIGdpdmVuIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IGZpbmRfbW9kdWxlKCkuCisKKyAgICBUaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LgorCisgICAgIiIiCisgICAgc3VmZml4LCBtb2RlLCB0eXBlXyA9IGRldGFpbHMKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgaWYgbW9kZSBhbmQgKG5vdCBtb2RlLnN0YXJ0c3dpdGgoKCdyJywgJ1UnKSkgb3IgJysnIGluIG1vZGUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBmaWxlIG9wZW4gbW9kZSB7IXJ9Jy5mb3JtYXQobW9kZSkpCisgICAgICAgIGVsaWYgZmlsZSBpcyBOb25lIGFuZCB0eXBlXyBpbiB7UFlfU09VUkNFLCBQWV9DT01QSUxFRCwgQ19FWFRFTlNJT059OgorICAgICAgICAgICAgbXNnID0gJ2ZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSB7fSknLmZvcm1hdCh0eXBlXykKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICBlbGlmIHR5cGVfID09IFBZX1NPVVJDRToKKyAgICAgICAgICAgIHJldHVybiBsb2FkX3NvdXJjZShuYW1lLCBmaWxlbmFtZSwgZmlsZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9DT01QSUxFRDoKKyAgICAgICAgICAgIHJldHVybiBsb2FkX2NvbXBpbGVkKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IENfRVhURU5TSU9OOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfZHluYW1pYyhuYW1lLCBmaWxlbmFtZSwgZmlsZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQS0dfRElSRUNUT1JZOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfcGFja2FnZShuYW1lLCBmaWxlbmFtZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBDX0JVSUxUSU46CisgICAgICAgICAgICByZXR1cm4gaW5pdF9idWlsdGluKG5hbWUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfRlJPWkVOOgorICAgICAgICAgICAgcmV0dXJuIGluaXRfZnJvemVuKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAgIkRvbid0IGtub3cgaG93IHRvIGltcG9ydCB7fSAodHlwZSBjb2RlIHt9KSIuZm9ybWF0KG5hbWUsIHR5cGVfKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpCisKKworZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIFNlYXJjaCBmb3IgYSBtb2R1bGUuCisKKyAgICBJZiBwYXRoIGlzIG9taXR0ZWQgb3IgTm9uZSwgc2VhcmNoIGZvciBhIGJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbAorICAgIG1vZHVsZSBhbmQgY29udGludWUgc2VhcmNoIGluIHN5cy5wYXRoLiBUaGUgbW9kdWxlIG5hbWUgY2Fubm90CisgICAgY29udGFpbiAnLic7IHRvIHNlYXJjaCBmb3IgYSBzdWJtb2R1bGUgb2YgYSBwYWNrYWdlLCBwYXNzIHRoZQorICAgIHN1Ym1vZHVsZSBuYW1lIGFuZCB0aGUgcGFja2FnZSdzIF9fcGF0aF9fLgorCisgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCInbmFtZScgbXVzdCBiZSBhIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShwYXRoLCAodHlwZShOb25lKSwgbGlzdCkpOgorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiJ2xpc3QnIG11c3QgYmUgTm9uZSBvciBhIGxpc3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3Qge30iLmZvcm1hdCh0eXBlKG5hbWUpKSkKKworICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgaWYgaXNfYnVpbHRpbihuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoJycsICcnLCBDX0JVSUxUSU4pCisgICAgICAgIGVsaWYgaXNfZnJvemVuKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsICgnJywgJycsIFBZX0ZST1pFTikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAorCisgICAgZm9yIGVudHJ5IGluIHBhdGg6CisgICAgICAgIHBhY2thZ2VfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKGVudHJ5LCBuYW1lKQorICAgICAgICBmb3Igc3VmZml4IGluIFsnLnB5JywgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzBdXToKKyAgICAgICAgICAgIHBhY2thZ2VfZmlsZV9uYW1lID0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKHBhY2thZ2VfZGlyZWN0b3J5LCBwYWNrYWdlX2ZpbGVfbmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHBhY2thZ2VfZGlyZWN0b3J5LCAoJycsICcnLCBQS0dfRElSRUNUT1JZKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCB0eXBlXyBpbiBnZXRfc3VmZml4ZXMoKToKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBuYW1lICsgc3VmZml4CisgICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGVudHJ5LCBmaWxlX25hbWUpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGJyZWFrICAjIEJyZWFrIG91dCBvZiBvdXRlciBsb29wIHdoZW4gYnJlYWtpbmcgb3V0IG9mIGlubmVyIGxvb3AuCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoX2Jvb3RzdHJhcC5fRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKworICAgIGVuY29kaW5nID0gTm9uZQorICAgIGlmIG1vZGUgPT0gJ1UnOgorICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoZmlsZS5yZWFkbGluZSlbMF0KKyAgICBmaWxlID0gb3BlbihmaWxlX3BhdGgsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQorICAgIHJldHVybiBmaWxlLCBmaWxlX3BhdGgsIChzdWZmaXgsIG1vZGUsIHR5cGVfKQorCisKK19SRUxPQURJTkcgPSB7fQorCitkZWYgcmVsb2FkKG1vZHVsZSk6CisgICAgIiIiUmVsb2FkIHRoZSBtb2R1bGUgYW5kIHJldHVybiBpdC4KKworICAgIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGJlZm9yZS4KKworICAgICIiIgorICAgIGlmIG5vdCBtb2R1bGUgb3IgdHlwZShtb2R1bGUpICE9IHR5cGUoc3lzKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJyZWxvYWQoKSBhcmd1bWVudCBtdXN0IGJlIG1vZHVsZSIpCisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICBtc2cgPSAibW9kdWxlIHt9IG5vdCBpbiBzeXMubW9kdWxlcyIKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorICAgIGlmIG5hbWUgaW4gX1JFTE9BRElORzoKKyAgICAgICAgcmV0dXJuIF9SRUxPQURJTkdbbmFtZV0KKyAgICBfUkVMT0FESU5HW25hbWVdID0gbW9kdWxlCisgICAgdHJ5OgorICAgICAgICBwYXJlbnRfbmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGlmIHBhcmVudF9uYW1lIGFuZCBwYXJlbnRfbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBtc2cgPSAicGFyZW50IHshcn0gbm90IGluIHN5cy5tb2R1bGVzIgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChwYXJlbnRuYW1lKSwgbmFtZT1wYXJlbnRfbmFtZSkKKyAgICAgICAgcmV0dXJuIG1vZHVsZS5fX2xvYWRlcl9fLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIF9SRUxPQURJTkdbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKaW5kZXggMmJhYWY5My4uMjJjOTBmMiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0xLDExMCArMSw3NiBAQAotIiIiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuCi0KLVJlZmVyZW5jZXMgb24gaW1wb3J0OgotCi0gICAgKiBMYW5ndWFnZSByZWZlcmVuY2UKLSAgICAgICAgICBodHRwOi8vZG9jcy5weXRob24ub3JnL3JlZi9pbXBvcnQuaHRtbAotICAgICogX19pbXBvcnRfXyBmdW5jdGlvbgotICAgICAgICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGliL2J1aWx0LWluLWZ1bmNzLmh0bWwKLSAgICAqIFBhY2thZ2VzCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy9lc3NheXMvcGFja2FnZXMuaHRtbAotICAgICogUEVQIDIzNTogSW1wb3J0IG9uIENhc2UtSW5zZW5zaXRpdmUgUGxhdGZvcm1zCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjM1Ci0gICAgKiBQRVAgMjc1OiBJbXBvcnQgTW9kdWxlcyBmcm9tIFppcCBBcmNoaXZlcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI3MwotICAgICogUEVQIDMwMjogTmV3IEltcG9ydCBIb29rcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMwMi8KLSAgICAqIFBFUCAzMjg6IEltcG9ydHM6IE11bHRpLWxpbmUgYW5kIEFic29sdXRlL1JlbGF0aXZlCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzI4Ci0KLSIiIgotX19hbGxfXyA9IFsnX19pbXBvcnRfXycsICdpbXBvcnRfbW9kdWxlJ10KLQotZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgdG9rZW5pemUKKyIiIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorX19hbGxfXyA9IFsnX19pbXBvcnRfXycsICdpbXBvcnRfbW9kdWxlJywgJ2ludmFsaWRhdGVfY2FjaGVzJ10KIAogIyBCb290c3RyYXAgaGVscCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1kZWYgX2Nhc2Vfb2soZGlyZWN0b3J5LCBjaGVjayk6Ci0gICAgIiIiQ2hlY2sgaWYgdGhlIGRpcmVjdG9yeSBjb250YWlucyBzb21ldGhpbmcgbWF0Y2hpbmcgJ2NoZWNrJy4KKyMgVW50aWwgYm9vdHN0cmFwcGluZyBpcyBjb21wbGV0ZSwgRE8gTk9UIGltcG9ydCBhbnkgbW9kdWxlcyB0aGF0IGF0dGVtcHQKKyMgdG8gaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KS4gU2luY2UgdGhpcworIyBwYXJ0aWFsbHkgaW5pdGlhbGlzZWQgcGFja2FnZSB3b3VsZCBiZSBwcmVzZW50IGluIHN5cy5tb2R1bGVzLCB0aG9zZQorIyBtb2R1bGVzIHdvdWxkIGdldCBhbiB1bmluaXRpYWxpc2VkIGNvcHkgb2YgdGhlIHNvdXJjZSB2ZXJzaW9uLCBpbnN0ZWFkCisjIG9mIGEgZnVsbHkgaW5pdGlhbGlzZWQgdmVyc2lvbiAoZWl0aGVyIHRoZSBmcm96ZW4gb25lIG9yIHRoZSBvbmUKKyMgaW5pdGlhbGlzZWQgYmVsb3cgaWYgdGhlIGZyb3plbiBvbmUgaXMgbm90IGF2YWlsYWJsZSkuCitpbXBvcnQgX2ltcCAgIyBKdXN0IHRoZSBidWlsdGluIGNvbXBvbmVudCwgTk9UIHRoZSBmdWxsIFB5dGhvbiBtb2R1bGUKK2ltcG9ydCBzeXMKIAotICAgIE5vIGNoZWNrIGlzIGRvbmUgaWYgdGhlIGZpbGUvZGlyZWN0b3J5IGV4aXN0cyBvciBub3QuCi0KLSAgICAiIiIKLSAgICBpZiAnUFlUSE9OQ0FTRU9LJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgY2hlY2sgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkgaWYgZGlyZWN0b3J5IGVsc2Ugb3MuZ2V0Y3dkKCkpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfd19sb25nKHgpOgotICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgotCi0gICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCi0KLSAgICAiIiIKLSAgICB4ID0gaW50KHgpCi0gICAgaW50X2J5dGVzID0gW10KLSAgICBpbnRfYnl0ZXMuYXBwZW5kKHggJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gOCkgJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMTYpICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDI0KSAmIDB4RkYpCi0gICAgcmV0dXJuIGJ5dGVhcnJheShpbnRfYnl0ZXMpCi0KLQotZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKLSAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLgotCi0gICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbiBhcmUgZXhwb3NlZC4KLQotICAgICIiIgotICAgIHggPSBpbnRfYnl0ZXNbMF0KLSAgICB4IHw9IGludF9ieXRlc1sxXSA8PCA4Ci0gICAgeCB8PSBpbnRfYnl0ZXNbMl0gPDwgMTYKLSAgICB4IHw9IGludF9ieXRlc1szXSA8PCAyNAotICAgIHJldHVybiB4Ci0KLQotIyBSZXF1aXJlZCBidWlsdC1pbiBtb2R1bGVzLgogdHJ5OgotICAgIGltcG9ydCBwb3NpeCBhcyBfb3MKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIgYXMgX2Jvb3RzdHJhcAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IG50IGFzIF9vcwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IG9zMiBhcyBfb3MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3Bvc2l4LCBudCwgb3Igb3MyIG1vZHVsZSByZXF1aXJlZCBmb3IgaW1wb3J0bGliJykKLV9ib290c3RyYXAuX29zID0gX29zCi1pbXBvcnQgaW1wLCBzeXMsIG1hcnNoYWwsIGVycm5vLCBfaW8KLV9ib290c3RyYXAuaW1wID0gaW1wCi1fYm9vdHN0cmFwLnN5cyA9IHN5cwotX2Jvb3RzdHJhcC5tYXJzaGFsID0gbWFyc2hhbAotX2Jvb3RzdHJhcC5lcnJubyA9IGVycm5vCi1fYm9vdHN0cmFwLl9pbyA9IF9pbwotaW1wb3J0IF93YXJuaW5ncwotX2Jvb3RzdHJhcC5fd2FybmluZ3MgPSBfd2FybmluZ3MKKyAgICBmcm9tIC4gaW1wb3J0IF9ib290c3RyYXAKKyAgICBfYm9vdHN0cmFwLl9zZXR1cChzeXMsIF9pbXApCitlbHNlOgorICAgICMgaW1wb3J0bGliLl9ib290c3RyYXAgaXMgdGhlIGJ1aWx0LWluIGltcG9ydCwgZW5zdXJlIHdlIGRvbid0IGNyZWF0ZQorICAgICMgYSBzZWNvbmQgY29weSBvZiB0aGUgbW9kdWxlLgorICAgIF9ib290c3RyYXAuX19uYW1lX18gPSAnaW1wb3J0bGliLl9ib290c3RyYXAnCisgICAgX2Jvb3RzdHJhcC5fX3BhY2thZ2VfXyA9ICdpbXBvcnRsaWInCisgICAgX2Jvb3RzdHJhcC5fX2ZpbGVfXyA9IF9fZmlsZV9fLnJlcGxhY2UoJ19faW5pdF9fLnB5JywgJ19ib290c3RyYXAucHknKQorICAgIHN5cy5tb2R1bGVzWydpbXBvcnRsaWIuX2Jvb3RzdHJhcCddID0gX2Jvb3RzdHJhcAogCisjIFRvIHNpbXBsaWZ5IGltcG9ydHMgaW4gdGVzdCBjb2RlCitfd19sb25nID0gX2Jvb3RzdHJhcC5fd19sb25nCitfcl9sb25nID0gX2Jvb3RzdHJhcC5fcl9sb25nCiAKLWZyb20gb3MgaW1wb3J0IHNlcAotIyBGb3Igb3MucGF0aC5qb2luIHJlcGxhY2VtZW50OyBwdWxsIGZyb20gSW5jbHVkZS9vc2RlZnMuaDpTRVAgLgotX2Jvb3RzdHJhcC5wYXRoX3NlcCA9IHNlcAotCi1fYm9vdHN0cmFwLl9jYXNlX29rID0gX2Nhc2Vfb2sKLW1hcnNoYWwuX3dfbG9uZyA9IF93X2xvbmcKLW1hcnNoYWwuX3JfbG9uZyA9IF9yX2xvbmcKLQorIyBGdWxseSBib290c3RyYXBwZWQgYXQgdGhpcyBwb2ludCwgaW1wb3J0IHdoYXRldmVyIHlvdSBsaWtlLCBjaXJjdWxhcgorIyBkZXBlbmRlbmNpZXMgYW5kIHN0YXJ0dXAgb3ZlcmhlYWQgbWluaW1pc2F0aW9uIHBlcm1pdHRpbmcgOikKIAogIyBQdWJsaWMgQVBJICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfX2ltcG9ydF9fCiAKIAorZGVmIGludmFsaWRhdGVfY2FjaGVzKCk6CisgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIG1ldGEgcGF0aCBmaW5kZXJzIHN0b3JlZCBpbgorICAgIHN5cy5tZXRhX3BhdGggKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKKyAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKKyAgICAgICAgICAgIGZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpCisKKworZGVmIGZpbmRfbG9hZGVyKG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgIiIiRmluZCB0aGUgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4KKworICAgIEZpcnN0LCBzeXMubW9kdWxlcyBpcyBjaGVja2VkIHRvIHNlZSBpZiB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGltcG9ydGVkLiBJZgorICAgIHNvLCB0aGVuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18gaXMgcmV0dXJuZWQuIElmIHRoYXQgaGFwcGVucyB0byBiZQorICAgIHNldCB0byBOb25lLCB0aGVuIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiBJZiB0aGUgbW9kdWxlIGlzIG5vdCBpbgorICAgIHN5cy5tb2R1bGVzLCB0aGVuIHN5cy5tZXRhX3BhdGggaXMgc2VhcmNoZWQgZm9yIGEgc3VpdGFibGUgbG9hZGVyIHdpdGggdGhlCisgICAgdmFsdWUgb2YgJ3BhdGgnIGdpdmVuIHRvIHRoZSBmaW5kZXJzLiBOb25lIGlzIHJldHVybmVkIGlmIG5vIGxvYWRlciBjb3VsZAorICAgIGJlIGZvdW5kLgorCisgICAgRG90dGVkIG5hbWVzIGRvIG5vdCBoYXZlIHRoZWlyIHBhcmVudCBwYWNrYWdlcyBpbXBsaWNpdGx5IGltcG9ydGVkLiBZb3Ugd2lsbAorICAgIG1vc3QgbGlrZWx5IG5lZWQgdG8gZXhwbGljaXRseSBpbXBvcnQgYWxsIHBhcmVudCBwYWNrYWdlcyBpbiB0aGUgcHJvcGVyCisgICAgb3JkZXIgZm9yIGEgc3VibW9kdWxlIHRvIGdldCB0aGUgY29ycmVjdCBsb2FkZXIuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGxvYWRlciA9IHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX2xvYWRlcl9fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKworCiBkZWYgaW1wb3J0X21vZHVsZShuYW1lLCBwYWNrYWdlPU5vbmUpOgogICAgICIiIkltcG9ydCBhIG1vZHVsZS4KIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CmluZGV4IGFhNDAzMmMuLmY2NDdjMmIgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKQEAgLTYsMzMgKzYsOTMgQEAKIHdvcmsuIE9uZSBzaG91bGQgdXNlIGltcG9ydGxpYiBhcyB0aGUgcHVibGljLWZhY2luZyB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLgogCiAiIiIKLQotIyBJbmplY3RlZCBtb2R1bGVzIGFyZSAnX3dhcm5pbmdzJywgJ2ltcCcsICdzeXMnLCAnbWFyc2hhbCcsICdlcnJubycsICdfaW8nLAotIyBhbmQgJ19vcycgKGEuay5hLiAncG9zaXgnLCAnbnQnIG9yICdvczInKS4KLSMgSW5qZWN0ZWQgYXR0cmlidXRlIGlzIHBhdGhfc2VwLgogIworIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1bgorIyBhIHRvcC1sZXZlbCBtYWtlIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24gb2YgdGhlIG1vZHVsZQorIyB1cGRhdGUuIE5vdCBkb2luZyBzbywgd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIGFsbCBvdGhlcnMgd2hvIGRvbid0IGhhdmUgYSAuL3B5dGhvbiBhcm91bmQgdG8gZnJlZXplIHRoZSBtb2R1bGUKKyMgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21waWxhdGlvbi4KKyMKKworIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKICMgV2hlbiBlZGl0aW5nIHRoaXMgY29kZSBiZSBhd2FyZSB0aGF0IGNvZGUgZXhlY3V0ZWQgYXQgaW1wb3J0IHRpbWUgQ0FOTk9UCiAjIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbwogIyBhbnl0aGluZyBzcGVjaWZpZWQgYXQgdGhlIGNsYXNzIGxldmVsLgogCisjIFhYWCBNYWtlIHN1cmUgYWxsIHB1YmxpYyBuYW1lcyBoYXZlIG5vIHNpbmdsZSBsZWFkaW5nIHVuZGVyc2NvcmUgYW5kIGFsbAorIyAgICAgb3RoZXJzIGRvLgorCiAKICMgQm9vdHN0cmFwLXJlbGF0ZWQgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIyBYWFggQ291bGQgYWxzbyBleHBvc2UgTW9kdWxlcy9nZXRwYXRoLmM6am9pbnBhdGgoKQotZGVmIF9wYXRoX2pvaW4oKmFyZ3MpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4uIiIiCi0gICAgcmV0dXJuIHBhdGhfc2VwLmpvaW4oeFs6LWxlbihwYXRoX3NlcCldIGlmIHguZW5kc3dpdGgocGF0aF9zZXApIGVsc2UgeAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGFyZ3MgaWYgeCkKK19DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyA9ICd3aW4nLCAnY3lnd2luJywgJ2RhcndpbicKIAogCi1kZWYgX3BhdGhfZXhpc3RzKHBhdGgpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmV4aXN0cy4iIiIKLSAgICB0cnk6Ci0gICAgICAgIF9vcy5zdGF0KHBhdGgpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQorZGVmIF9tYWtlX3JlbGF4X2Nhc2UoKToKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gYidQWVRIT05DQVNFT0snIGluIF9vcy5lbnZpcm9uCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIF9yZWxheF9jYXNlCisKKworIyBUT0RPOiBFeHBvc2UgZnJvbSBtYXJzaGFsCitkZWYgX3dfbG9uZyh4KToKKyAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4KKworICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb25zIGFyZSBleHBvc2VkLgorCisgICAgIiIiCisgICAgeCA9IGludCh4KQorICAgIGludF9ieXRlcyA9IFtdCisgICAgaW50X2J5dGVzLmFwcGVuZCh4ICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDgpICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDE2KSAmIDB4RkYpCisgICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAyNCkgJiAweEZGKQorICAgIHJldHVybiBieXRlYXJyYXkoaW50X2J5dGVzKQorCisKKyMgVE9ETzogRXhwb3NlIGZyb20gbWFyc2hhbAorZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKKyAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLgorCisgICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbiBhcmUgZXhwb3NlZC4KKworICAgICIiIgorICAgIHggPSBpbnRfYnl0ZXNbMF0KKyAgICB4IHw9IGludF9ieXRlc1sxXSA8PCA4CisgICAgeCB8PSBpbnRfYnl0ZXNbMl0gPDwgMTYKKyAgICB4IHw9IGludF9ieXRlc1szXSA8PCAyNAorICAgIHJldHVybiB4CisKKworZGVmIF9wYXRoX2pvaW4oKnBhdGhfcGFydHMpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4oKS4iIiIKKyAgICBuZXdfcGFydHMgPSBbXQorICAgIGZvciBwYXJ0IGluIHBhdGhfcGFydHM6CisgICAgICAgIGlmIG5vdCBwYXJ0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbmV3X3BhcnRzLmFwcGVuZChwYXJ0KQorICAgICAgICBpZiBwYXJ0Wy0xXSBub3QgaW4gcGF0aF9zZXBhcmF0b3JzOgorICAgICAgICAgICAgbmV3X3BhcnRzLmFwcGVuZChwYXRoX3NlcCkKKyAgICByZXR1cm4gJycuam9pbihuZXdfcGFydHNbOi0xXSkgICMgRHJvcCBzdXBlcmZsdW91cyBwYXRoIHNlcGFyYXRvci4KKworCitkZWYgX3BhdGhfc3BsaXQocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXQoKS4iIiIKKyAgICBmb3IgeCBpbiByZXZlcnNlZChwYXRoKToKKyAgICAgICAgaWYgeCBpbiBwYXRoX3NlcGFyYXRvcnM6CisgICAgICAgICAgICBzZXAgPSB4CisgICAgICAgICAgICBicmVhaworICAgIGVsc2U6CisgICAgICAgIHNlcCA9IHBhdGhfc2VwCisgICAgZnJvbnQsIF8sIHRhaWwgPSBwYXRoLnJwYXJ0aXRpb24oc2VwKQorICAgIHJldHVybiBmcm9udCwgdGFpbAogCiAKIGRlZiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgbW9kZSk6CkBAIC01OCw2MSArMTE4LDQwMSBAQAogICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8wNDAwMDApCiAKIAotZGVmIF9wYXRoX3dpdGhvdXRfZXh0KHBhdGgsIGV4dF90eXBlKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdGV4dCgpWzBdLiIiIgotICAgIGZvciBzdWZmaXggaW4gX3N1ZmZpeF9saXN0KGV4dF90eXBlKToKLSAgICAgICAgaWYgcGF0aC5lbmRzd2l0aChzdWZmaXgpOgotICAgICAgICAgICAgcmV0dXJuIHBhdGhbOi1sZW4oc3VmZml4KV0KLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwYXRoIGlzIG5vdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUiKQotCi0KLWRlZiBfcGF0aF9hYnNvbHV0ZShwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5hYnNwYXRoLiIiIgotICAgIGlmIG5vdCBwYXRoOgotICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCitkZWYgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBtb2RlPTBvNjY2KToKKyAgICAiIiJCZXN0LWVmZm9ydCBmdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRvIGEgcGF0aCBhdG9taWNhbGx5LgorICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCisgICAgdGVtcG9yYXJ5IGZpbGUgaXMgYXR0ZW1wdGVkLiIiIgorICAgICMgaWQoKSBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgcHNldWRvLXJhbmRvbSBmaWxlbmFtZS4KKyAgICBwYXRoX3RtcCA9ICd7fS57fScuZm9ybWF0KHBhdGgsIGlkKHBhdGgpKQorICAgIGZkID0gX29zLm9wZW4ocGF0aF90bXAsCisgICAgICAgICAgICAgICAgICBfb3MuT19FWENMIHwgX29zLk9fQ1JFQVQgfCBfb3MuT19XUk9OTFksIG1vZGUgJiAwbzY2NikKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfb3MuX2dldGZ1bGxwYXRobmFtZShwYXRoKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCcvJyk6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIF9wYXRoX2pvaW4oX29zLmdldGN3ZCgpLCBwYXRoKQorICAgICAgICAjIFdlIGZpcnN0IHdyaXRlIGRhdGEgdG8gYSB0ZW1wb3JhcnkgZmlsZSwgYW5kIHRoZW4gdXNlIG9zLnJlcGxhY2UoKSB0bworICAgICAgICAjIHBlcmZvcm0gYW4gYXRvbWljIHJlbmFtZS4KKyAgICAgICAgd2l0aCBfaW8uRmlsZUlPKGZkLCAnd2InKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShkYXRhKQorICAgICAgICBfb3MucmVwbGFjZShwYXRoX3RtcCwgcGF0aCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX29zLnVubGluayhwYXRoX3RtcCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHJhaXNlCiAKIAogZGVmIF93cmFwKG5ldywgb2xkKToKLSAgICAiIiJTaW1wbGUgc3Vic3RpdHV0ZSBmb3IgZnVuY3Rvb2xzLndyYXBzLiIiIgotICAgIGZvciByZXBsYWNlIGluIFsnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX2RvY19fJ106Ci0gICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCisgICAgIiIiU2ltcGxlIHN1YnN0aXR1dGUgZm9yIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlci4iIiIKKyAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nXToKKyAgICAgICAgaWYgaGFzYXR0cihvbGQsIHJlcGxhY2UpOgorICAgICAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKICAgICBuZXcuX19kaWN0X18udXBkYXRlKG9sZC5fX2RpY3RfXykKIAogCi1jb2RlX3R5cGUgPSB0eXBlKF93cmFwLl9fY29kZV9fKQorX2NvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCiAKLSMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG5ld19tb2R1bGUobmFtZSk6CisgICAgIiIiQ3JlYXRlIGEgbmV3IG1vZHVsZS4KKworICAgIFRoZSBtb2R1bGUgaXMgbm90IGVudGVyZWQgaW50byBzeXMubW9kdWxlcy4KKworICAgICIiIgorICAgIHJldHVybiB0eXBlKF9pbykobmFtZSkKKworCisjIE1vZHVsZS1sZXZlbCBsb2NraW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQSBkaWN0IG1hcHBpbmcgbW9kdWxlIG5hbWVzIHRvIHdlYWtyZWZzIG9mIF9Nb2R1bGVMb2NrIGluc3RhbmNlcworX21vZHVsZV9sb2NrcyA9IHt9CisjIEEgZGljdCBtYXBwaW5nIHRocmVhZCBpZHMgdG8gX01vZHVsZUxvY2sgaW5zdGFuY2VzCitfYmxvY2tpbmdfb24gPSB7fQorCisKK2NsYXNzIF9EZWFkbG9ja0Vycm9yKFJ1bnRpbWVFcnJvcik6CisgICAgcGFzcworCisKK2NsYXNzIF9Nb2R1bGVMb2NrOgorICAgICIiIkEgcmVjdXJzaXZlIGxvY2sgaW1wbGVtZW50YXRpb24gd2hpY2ggaXMgYWJsZSB0byBkZXRlY3QgZGVhZGxvY2tzCisgICAgKGUuZy4gdGhyZWFkIDEgdHJ5aW5nIHRvIHRha2UgbG9ja3MgQSB0aGVuIEIsIGFuZCB0aHJlYWQgMiB0cnlpbmcgdG8KKyAgICB0YWtlIGxvY2tzIEIgdGhlbiBBKS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrKCkKKyAgICAgICAgc2VsZi53YWtldXAgPSBfdGhyZWFkLmFsbG9jYXRlX2xvY2soKQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYub3duZXIgPSBOb25lCisgICAgICAgIHNlbGYuY291bnQgPSAwCisgICAgICAgIHNlbGYud2FpdGVycyA9IDAKKworICAgIGRlZiBoYXNfZGVhZGxvY2soc2VsZik6CisgICAgICAgICMgRGVhZGxvY2sgYXZvaWRhbmNlIGZvciBjb25jdXJyZW50IGNpcmN1bGFyIGltcG9ydHMuCisgICAgICAgIG1lID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB0aWQgPSBzZWxmLm93bmVyCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBsb2NrID0gX2Jsb2NraW5nX29uLmdldCh0aWQpCisgICAgICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICB0aWQgPSBsb2NrLm93bmVyCisgICAgICAgICAgICBpZiB0aWQgPT0gbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBhY3F1aXJlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQWNxdWlyZSB0aGUgbW9kdWxlIGxvY2suICBJZiBhIHBvdGVudGlhbCBkZWFkbG9jayBpcyBkZXRlY3RlZCwKKyAgICAgICAgYSBfRGVhZGxvY2tFcnJvciBpcyByYWlzZWQuCisgICAgICAgIE90aGVyd2lzZSwgdGhlIGxvY2sgaXMgYWx3YXlzIGFjcXVpcmVkIGFuZCBUcnVlIGlzIHJldHVybmVkLgorICAgICAgICAiIiIKKyAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICBfYmxvY2tpbmdfb25bdGlkXSA9IHNlbGYKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYubG9jazoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwIG9yIHNlbGYub3duZXIgPT0gdGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IHRpZAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmhhc19kZWFkbG9jaygpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgX0RlYWRsb2NrRXJyb3IoImRlYWRsb2NrIGRldGVjdGVkIGJ5ICVyIiAlIHNlbGYpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FrZXVwLmFjcXVpcmUoRmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53YWl0ZXJzICs9IDEKKyAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIGEgcmVsZWFzZSgpIGNhbGwKKyAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5yZWxlYXNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRlbCBfYmxvY2tpbmdfb25bdGlkXQorCisgICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgIHRpZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICBpZiBzZWxmLm93bmVyICE9IHRpZDoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuY291bnQgPiAwCisgICAgICAgICAgICBzZWxmLmNvdW50IC09IDEKKyAgICAgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53YWl0ZXJzIC09IDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53YWtldXAucmVsZWFzZSgpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX01vZHVsZUxvY2soJXIpIGF0ICVkIiAlIChzZWxmLm5hbWUsIGlkKHNlbGYpKQorCisKK2NsYXNzIF9EdW1teU1vZHVsZUxvY2s6CisgICAgIiIiQSBzaW1wbGUgX01vZHVsZUxvY2sgZXF1aXZhbGVudCBmb3IgUHl0aG9uIGJ1aWxkcyB3aXRob3V0CisgICAgbXVsdGktdGhyZWFkaW5nIHN1cHBvcnQuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5jb3VudCA9IDAKKworICAgIGRlZiBhY3F1aXJlKHNlbGYpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNvdW50ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQorICAgICAgICBzZWxmLmNvdW50IC09IDEKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfRHVtbXlNb2R1bGVMb2NrKCVyKSBhdCAlZCIgJSAoc2VsZi5uYW1lLCBpZChzZWxmKSkKKworCisjIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgZm9yIGNvbnN1bXB0aW9uIGJ5IFB5dGhvbi9pbXBvcnQuYy4KKworZGVmIF9nZXRfbW9kdWxlX2xvY2sobmFtZSk6CisgICAgIiIiR2V0IG9yIGNyZWF0ZSB0aGUgbW9kdWxlIGxvY2sgZm9yIGEgZ2l2ZW4gbW9kdWxlIG5hbWUuCisKKyAgICBTaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCB0aGUgaW1wb3J0IGxvY2sgdGFrZW4uIiIiCisgICAgbG9jayA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfbW9kdWxlX2xvY2tzW25hbWVdKCkKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBpZiBsb2NrIGlzIE5vbmU6CisgICAgICAgIGlmIF90aHJlYWQgaXMgTm9uZToKKyAgICAgICAgICAgIGxvY2sgPSBfRHVtbXlNb2R1bGVMb2NrKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2NrID0gX01vZHVsZUxvY2sobmFtZSkKKyAgICAgICAgZGVmIGNiKF8pOgorICAgICAgICAgICAgZGVsIF9tb2R1bGVfbG9ja3NbbmFtZV0KKyAgICAgICAgX21vZHVsZV9sb2Nrc1tuYW1lXSA9IF93ZWFrcmVmLnJlZihsb2NrLCBjYikKKyAgICByZXR1cm4gbG9jaworCitkZWYgX2xvY2tfdW5sb2NrX21vZHVsZShuYW1lKToKKyAgICAiIiJSZWxlYXNlIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGFuZCBhY3F1aXJlcyB0aGVuIHJlbGVhc2UgdGhlCisgICAgbW9kdWxlIGxvY2sgZm9yIGEgZ2l2ZW4gbW9kdWxlIG5hbWUuCisgICAgVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSBhIG1vZHVsZSBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLCBpbiB0aGUKKyAgICBldmVudCBpdCBpcyBiZWluZyBpbXBvcnRlZCBieSBhbm90aGVyIHRocmVhZC4KKworICAgIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIHRoZSBpbXBvcnQgbG9jayB0YWtlbi4iIiIKKyAgICBsb2NrID0gX2dldF9tb2R1bGVfbG9jayhuYW1lKQorICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKKyAgICB0cnk6CisgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgZXhjZXB0IF9EZWFkbG9ja0Vycm9yOgorICAgICAgICAjIENvbmN1cnJlbnQgY2lyY3VsYXIgaW1wb3J0LCB3ZSdsbCBhY2NlcHQgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKKyAgICAgICAgIyBtb2R1bGUgb2JqZWN0LgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbG9jay5yZWxlYXNlKCkKKworIyBGcmFtZSBzdHJpcHBpbmcgbWFnaWMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZiwgKmFyZ3MsICoqa3dkcyk6CisgICAgIiIicmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMgaW4gaW1wb3J0LmMgd2lsbCBhbHdheXMgcmVtb3ZlIHNlcXVlbmNlcworICAgIG9mIGltcG9ydGxpYiBmcmFtZXMgdGhhdCBlbmQgd2l0aCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgorCisgICAgVXNlIGl0IGluc3RlYWQgb2YgYSBub3JtYWwgY2FsbCBpbiBwbGFjZXMgd2hlcmUgaW5jbHVkaW5nIHRoZSBpbXBvcnRsaWIKKyAgICBmcmFtZXMgaW50cm9kdWNlcyB1bndhbnRlZCBub2lzZSBpbnRvIHRoZSB0cmFjZWJhY2sgKGUuZy4gd2hlbiBleGVjdXRpbmcKKyAgICBtb2R1bGUgY29kZSkKKyAgICAiIiIKKyAgICByZXR1cm4gZigqYXJncywgKiprd2RzKQorCisKKyMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgorSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KKworVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQorYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCitBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgorCitUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCistVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCitvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KKworVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KK1RoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKKzEwLgorCitTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCitudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCit0byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQordGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCitjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0CitpdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQordGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCit3aXRoIFB5dGhvbiAzLjJhMC4KKworS25vd24gdmFsdWVzOgorIFB5dGhvbiAxLjU6ICAgMjAxMjEKKyBQeXRob24gMS41LjE6IDIwMTIxCisgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQorICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKKyAgICBQeXRob24gMi4wOiAgIDUwODIzCisgICAgUHl0aG9uIDIuMC4xOiA1MDgyMworICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKKyAgICBQeXRob24gMi4xLjE6IDYwMjAyCisgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgorICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKKyAgICBQeXRob24gMi4zYTA6IDYyMDExCisgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQorICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCisgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQorICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKKyAgICBQeXRob24gMi40YjE6IDYyMDYxCisgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQorICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCisgICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKKyAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCisgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCisgICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCisgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKKyAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCisgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKKyAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQorICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKKyAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCisgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQorICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKKyAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKKyAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKKyAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQorICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCisgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQorICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKKyAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgorICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQorICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgorICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKKyAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgorICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQorICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCisgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKKyAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKKyAgICBQeXRob24gMy4zYTAgIDMxOTAgX19jbGFzc19fIHN1cGVyIGNsb3N1cmUgY2hhbmdlZAorICAgIFB5dGhvbiAzLjNhMCAgMzIwMCAoX19xdWFsbmFtZV9fIGFkZGVkKQorICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCisgICAgUHl0aG9uIDMuM2ExICAzMjIwIChjaGFuZ2VkIFBFUCAzODAgaW1wbGVtZW50YXRpb24pCisgICAgUHl0aG9uIDMuM2E0ICAzMjMwIChyZXZlcnQgY2hhbmdlcyB0byBpbXBsaWNpdCBfX2NsYXNzX18gY2xvc3VyZSkKKworTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubworbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKK2R1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgorCisiIiIKK19SQVdfTUFHSUNfTlVNQkVSID0gMzIzMCB8IG9yZCgnXHInKSA8PCAxNiB8IG9yZCgnXG4nKSA8PCAyNAorX01BR0lDX0JZVEVTID0gYnl0ZXMoX1JBV19NQUdJQ19OVU1CRVIgPj4gbiAmIDB4ZmYgZm9yIG4gaW4gcmFuZ2UoMCwgMjUsIDgpKQorCitfUFlDQUNIRSA9ICdfX3B5Y2FjaGVfXycKKworU09VUkNFX1NVRkZJWEVTID0gWycucHknXSAgIyBfc2V0dXAoKSBhZGRzIC5weXcgYXMgbmVlZGVkLgorCitERUJVR19CWVRFQ09ERV9TVUZGSVhFUyA9IFsnLnB5YyddCitPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMgPSBbJy5weW8nXQorCitkZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSk6CisgICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljLy5weW8gZmlsZS4KKworICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQorICAgIC5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uCisgICAgd2lsbCBiZSAucHljIHVubGVzcyBzeXMuZmxhZ3Mub3B0aW1pemUgaXMgbm9uLXplcm8sIHRoZW4gaXQgd2lsbCBiZSAucHlvLgorCisgICAgSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHVzZWQgaW4KKyAgICBwbGFjZSBvZiBzeXMuZmxhZ3Mub3B0aW1pemUuCisKKyAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGRlYnVnID0gbm90IHN5cy5mbGFncy5vcHRpbWl6ZSBpZiBkZWJ1Z19vdmVycmlkZSBpcyBOb25lIGVsc2UgZGVidWdfb3ZlcnJpZGUKKyAgICBpZiBkZWJ1ZzoKKyAgICAgICAgc3VmZml4ZXMgPSBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworICAgIGVsc2U6CisgICAgICAgIHN1ZmZpeGVzID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTCisgICAgaGVhZCwgdGFpbCA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgYmFzZV9maWxlbmFtZSwgc2VwLCBfID0gdGFpbC5wYXJ0aXRpb24oJy4nKQorICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBmaWxlbmFtZSA9ICcnLmpvaW4oW2Jhc2VfZmlsZW5hbWUsIHNlcCwgdGFnLCBzdWZmaXhlc1swXV0pCisgICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgX1BZQ0FDSEUsIGZpbGVuYW1lKQorCisKK2RlZiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weWMuLy5weW8gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KKworICAgIFRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCisgICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoIGRvZXMKKyAgICBub3QgY29uZm9ybSB0byBQRVAgMzE0NyBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCisgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCisgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQorICAgIGlmIHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKSAhPSAyOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgZG90cyBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChweWNhY2hlX2ZpbGVuYW1lKSkKKyAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCisKKworZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCisgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgorCisgICAgIiIiCisgICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFyaXRpb24oJy4nKQorICAgIGlmIG5vdCByZXN0IG9yIGV4dGVuc2lvbi5sb3dlcigpWy0zOi0xXSAhPSAnLnB5JzoKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKKworICAgIHRyeToKKyAgICAgICAgc291cmNlX3BhdGggPSBzb3VyY2VfZnJvbV9jYWNoZShieXRlY29kZV9wYXRoKQorICAgIGV4Y2VwdCAoTm90SW1wbGVtZW50ZWRFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHNvdXJjZV9wYXRoID0gYnl0Y29kZV9wYXRoWy0xOl0KKworICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3N0YXRzKSBlbHNlIGJ5dGVjb2RlX3BhdGgKKworCitkZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncyk6CisgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgorICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgorICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgorICAgICAgICAgICAgbWVzc2FnZSA9ICcjICcgKyBtZXNzYWdlCisgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQorCiAKIGRlZiBzZXRfcGFja2FnZShmeG4pOgogICAgICIiIlNldCBfX3BhY2thZ2VfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgotICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHNldF9wYWNrYWdlX3dyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgbW9kdWxlID0gZnhuKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKKyAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CiAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQogICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoc2V0X3BhY2thZ2Vfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBzZXRfcGFja2FnZV93cmFwcGVyCiAKIAogZGVmIHNldF9sb2FkZXIoZnhuKToKICAgICAiIiJTZXQgX19sb2FkZXJfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgotICAgIGRlZiB3cmFwcGVyKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHNldF9sb2FkZXJfd3JhcHBlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBmeG4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKHNldF9sb2FkZXJfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBzZXRfbG9hZGVyX3dyYXBwZXIKIAogCiBkZWYgbW9kdWxlX2Zvcl9sb2FkZXIoZnhuKToKQEAgLTEyMCwzMSArNTIwLDU0IEBACiAKICAgICBUaGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgbW9kdWxlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBtb2R1bGUKICAgICBuYW1lLiBUaGUgbW9kdWxlIHBhc3NlZCBpbiB0byB0aGUgZnVuY3Rpb24gaXMgZWl0aGVyIGZyb20gc3lzLm1vZHVsZXMgaWYKLSAgICBpdCBhbHJlYWR5IGV4aXN0cyBvciBpcyBhIG5ldyBtb2R1bGUgd2hpY2ggaGFzIF9fbmFtZV9fIHNldCBhbmQgaXMgaW5zZXJ0ZWQKLSAgICBpbnRvIHN5cy5tb2R1bGVzLiBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlCi0gICAgbW9kdWxlIGl0IGlzIHN1YnNlcXVlbnRseSByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCisgICAgaXQgYWxyZWFkeSBleGlzdHMgb3IgaXMgYSBuZXcgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGlzIG5ldywgdGhlbiBfX25hbWVfXworICAgIGlzIHNldCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1ldGhvZCwgX19sb2FkZXJfXyBpcyBzZXQgdG8gc2VsZiwgYW5kCisgICAgX19wYWNrYWdlX18gaXMgc2V0IGFjY29yZGluZ2x5IChpZiBzZWxmLmlzX3BhY2thZ2UoKSBpcyBkZWZpbmVkKSB3aWxsIGJlIHNldAorICAgIGJlZm9yZSBpdCBpcyBwYXNzZWQgdG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiAoaWYgc2VsZi5pc19wYWNrYWdlKCkgZG9lcworICAgIG5vdCB3b3JrIGZvciB0aGUgbW9kdWxlIGl0IHdpbGwgYmUgc2V0IHBvc3QtbG9hZCkuCisKKyAgICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlIG1vZHVsZSBpdCBpcworICAgIHN1YnNlcXVlbnRseSByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCiAKICAgICBUaGUgZGVjb3JhdG9yIGFzc3VtZXMgdGhhdCB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIHRha2VzIHRoZSBtb2R1bGUgbmFtZSBhcwogICAgIHRoZSBzZWNvbmQgYXJndW1lbnQuCiAKICAgICAiIiIKLSAgICBkZWYgZGVjb3JhdGVkKHNlbGYsIGZ1bGxuYW1lLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlcy5nZXQoZnVsbG5hbWUpCi0gICAgICAgIGlzX3JlbG9hZCA9IGJvb2wobW9kdWxlKQorICAgICAgICBpc19yZWxvYWQgPSBtb2R1bGUgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIG9wZW4oKSBpcyBjYWxsZWQgYXMgdGhlICdpbycgbW9kdWxlCiAgICAgICAgICAgICAjIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlIHRyaWdnZXIgYW4KICAgICAgICAgICAgICMgaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKGZ1bGxuYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gbmV3X21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHB1dHRpbmcgdGhlIG1vZHVsZSBpbiBzeXMubW9kdWxlcworICAgICAgICAgICAgIyAob3RoZXJ3aXNlIGFuIG9wdGltaXphdGlvbiBzaG9ydGN1dCBpbiBpbXBvcnQuYyBiZWNvbWVzIHdyb25nKQorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBpc19wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBmdWxsbmFtZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgSWYgX19wYWNrYWdlX18gd2FzIG5vdCBzZXQgYWJvdmUsIF9faW1wb3J0X18oKSB3aWxsIGRvIGl0IGxhdGVyLgogICAgICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBtb2R1bGUsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgICByYWlzZQotICAgIF93cmFwKGRlY29yYXRlZCwgZnhuKQotICAgIHJldHVybiBkZWNvcmF0ZWQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG1vZHVsZS5fX2luaXRpYWxpemluZ19fID0gRmFsc2UKKyAgICBfd3JhcChtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIKIAogCiBkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKQEAgLTE1NSwzOCArNTc4LDUxIEBACiAgICAgY29tcGFyZWQgYWdhaW5zdC4gSWYgdGhlIGNvbXBhcmlzb24gZmFpbHMgdGhlbiBJbXBvcnRFcnJvciBpcyByYWlzZWQuCiAKICAgICAiIiIKLSAgICBkZWYgaW5uZXIoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5fbmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImxvYWRlciBjYW5ub3QgaGFuZGxlICVzIiAlIG5hbWUpCisgICAgZGVmIF9jaGVja19uYW1lX3dyYXBwZXIoc2VsZiwgbmFtZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCisgICAgICAgIGVsaWYgc2VsZi5uYW1lICE9IG5hbWU6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMiICUgbmFtZSwgbmFtZT1uYW1lKQogICAgICAgICByZXR1cm4gbWV0aG9kKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3YXJncykKLSAgICBfd3JhcChpbm5lciwgbWV0aG9kKQotICAgIHJldHVybiBpbm5lcgorICAgIF93cmFwKF9jaGVja19uYW1lX3dyYXBwZXIsIG1ldGhvZCkKKyAgICByZXR1cm4gX2NoZWNrX25hbWVfd3JhcHBlcgogCiAKIGRlZiBfcmVxdWlyZXNfYnVpbHRpbihmeG4pOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBidWlsdC1pbi4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgZGVmIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICBpZiBmdWxsbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInswfSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIKIAogCiBkZWYgX3JlcXVpcmVzX2Zyb3plbihmeG4pOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBmcm96ZW4uIiIiCi0gICAgZGVmIHdyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBpZiBub3QgaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiezB9IGlzIG5vdCBhIGZyb3plbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSkpCisgICAgZGVmIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIG5vdCBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgZnJvemVuIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgZnVsbG5hbWUpCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcgogCiAKLWRlZiBfc3VmZml4X2xpc3Qoc3VmZml4X3R5cGUpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyBiYXNlZCBvbiB0aGUgaW1wIGZpbGUgdHlwZS4iIiIKLSAgICByZXR1cm4gW3N1ZmZpeFswXSBmb3Igc3VmZml4IGluIGltcC5nZXRfc3VmZml4ZXMoKQotICAgICAgICAgICAgaWYgc3VmZml4WzJdID09IHN1ZmZpeF90eXBlXQorZGVmIF9maW5kX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgYnkgZGVsZWdhdGluZyB0bworICAgIHNlbGYuZmluZF9sb2FkZXIoKS4iIiIKKyAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCisgICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCisgICAgIyByZXR1cm4gTm9uZS4KKyAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKKyAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgorICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKKyAgICByZXR1cm4gbG9hZGVyCisKKwogCiAKICMgTG9hZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTIwMSw2ICs2MzcsMTAgQEAKICAgICAiIiIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChidWlsdC1pbik+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIGJ1aWx0LWluIG1vZHVsZS4KIApAQCAtMjA5LDcgKzY0OSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGNscyBpZiBpbXAuaXNfYnVpbHRpbihmdWxsbmFtZSkgZWxzZSBOb25lCisgICAgICAgIHJldHVybiBjbHMgaWYgX2ltcC5pc19idWlsdGluKGZ1bGxuYW1lKSBlbHNlIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBzZXRfcGFja2FnZQpAQCAtMjE5LDcgKzY1OSw3IEBACiAgICAgICAgICIiIkxvYWQgYSBidWlsdC1pbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAuaW5pdF9idWlsdGluKGZ1bGxuYW1lKQorICAgICAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5pbml0X2J1aWx0aW4sIGZ1bGxuYW1lKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCkBAIC0yNDAsNyArNjgwLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2J1aWx0aW4KICAgICBkZWYgaXNfcGFja2FnZShjbHMsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYnVpbHQtaW4gbW9kdWxlIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKKyAgICAgICAgIiIiUmV0dXJuIEZhbHNlIGFzIGJ1aWx0LWluIG1vZHVsZXMgYXJlIG5ldmVyIHBhY2thZ2VzLiIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAogCkBAIC0yNTQsOSArNjk0LDEzIEBACiAgICAgIiIiCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKGZyb3plbik+Ii5mb3JtYXQobS5fX25hbWVfXykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIGEgZnJvemVuIG1vZHVsZS4iIiIKLSAgICAgICAgcmV0dXJuIGNscyBpZiBpbXAuaXNfZnJvemVuKGZ1bGxuYW1lKSBlbHNlIE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAc2V0X3BhY2thZ2UKQEAgLTI2Niw3ICs3MTAsMTAgQEAKICAgICAgICAgIiIiTG9hZCBhIGZyb3plbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAuaW5pdF9mcm96ZW4oZnVsbG5hbWUpCisgICAgICAgICAgICBtID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfZnJvemVuLCBmdWxsbmFtZSkKKyAgICAgICAgICAgICMgTGV0IG91ciBvd24gbW9kdWxlX3JlcHIoKSBtZXRob2QgcHJvZHVjZSBhIHN1aXRhYmxlIHJlcHIuCisgICAgICAgICAgICBkZWwgbS5fX2ZpbGVfXworICAgICAgICAgICAgcmV0dXJuIG0KICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZCBhbmQgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQpAQCAtMjc2LDcgKzcyMyw3IEBACiAgICAgQF9yZXF1aXJlc19mcm96ZW4KICAgICBkZWYgZ2V0X2NvZGUoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgZm9yIHRoZSBmcm96ZW4gbW9kdWxlLiIiIgotICAgICAgICByZXR1cm4gaW1wLmdldF9mcm96ZW5fb2JqZWN0KGZ1bGxuYW1lKQorICAgICAgICByZXR1cm4gX2ltcC5nZXRfZnJvemVuX29iamVjdChmdWxsbmFtZSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfZnJvemVuCkBAIC0yODcsNDAgKzczNCwxMTcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2Zyb3plbgogICAgIGRlZiBpc19wYWNrYWdlKGNscywgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gaWYgdGhlIGZyb3plbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgotICAgICAgICByZXR1cm4gaW1wLmlzX2Zyb3plbl9wYWNrYWdlKGZ1bGxuYW1lKQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnJvemVuIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIHJldHVybiBfaW1wLmlzX2Zyb3plbl9wYWNrYWdlKGZ1bGxuYW1lKQorCisKK2NsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuCisgICAgIiIiCisKKyAgICBSRUdJU1RSWV9LRVkgPSAoCisgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259IgorICAgICAgICAiXFxNb2R1bGVzXFx7ZnVsbG5hbWV9IikKKyAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCisgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259IgorICAgICAgICAiXFxNb2R1bGVzXFx7ZnVsbG5hbWV9XFxEZWJ1ZyIpCisgICAgREVCVUdfQlVJTEQgPSBGYWxzZSAgIyBDaGFuZ2VkIGluIF9zZXR1cCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX29wZW5fcmVnaXN0cnkoY2xzLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgorICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCisgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6CisgICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgIiIpCisgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZXBhdGgKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiJGaW5kIG1vZHVsZSBuYW1lZCBpbiB0aGUgcmVnaXN0cnkuIiIiCisgICAgICAgIGZpbGVwYXRoID0gY2xzLl9zZWFyY2hfcmVnaXN0cnkoZnVsbG5hbWUpCisgICAgICAgIGlmIGZpbGVwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3Muc3RhdChmaWxlcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcywgXyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpCiAKIAogY2xhc3MgX0xvYWRlckJhc2ljczoKIAogICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAotICAgIF9Tb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKKyAgICBTb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKIAogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdExvYWRlci5pc19wYWNrYWdlIGJ5IGNoZWNraW5nIGlmCiAgICAgICAgIHRoZSBwYXRoIHJldHVybmVkIGJ5IGdldF9maWxlbmFtZSBoYXMgYSBmaWxlbmFtZSBvZiAnX19pbml0X18ucHknLiIiIgotICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKS5ycGFydGl0aW9uKHBhdGhfc2VwKVsyXQotICAgICAgICByZXR1cm4gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0gPT0gJ19faW5pdF9fJworICAgICAgICBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKSlbMV0KKyAgICAgICAgZmlsZW5hbWVfYmFzZSA9IGZpbGVuYW1lLnJzcGxpdCgnLicsIDEpWzBdCisgICAgICAgIHRhaWxfbmFtZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQorICAgICAgICByZXR1cm4gZmlsZW5hbWVfYmFzZSA9PSAnX19pbml0X18nIGFuZCB0YWlsX25hbWUgIT0gJ19faW5pdF9fJwogCi0gICAgZGVmIF9ieXRlc19mcm9tX2J5dGVjb2RlKHNlbGYsIGZ1bGxuYW1lLCBkYXRhLCBzb3VyY2VfbXRpbWUpOgorICAgIGRlZiBfYnl0ZXNfZnJvbV9ieXRlY29kZShzZWxmLCBmdWxsbmFtZSwgZGF0YSwgYnl0ZWNvZGVfcGF0aCwgc291cmNlX3N0YXRzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBtYXJzaGFsbGVkIGJ5dGVzIGZyb20gYnl0ZWNvZGUsIHZlcmlmeWluZyB0aGUgbWFnaWMKLSAgICAgICAgbnVtYmVyIGFuZCB0aW1lc3RhbXAgYWxvbmcgdGhlIHdheS4KKyAgICAgICAgbnVtYmVyLCB0aW1lc3RhbXAgYW5kIHNvdXJjZSBzaXplIGFsb25nIHRoZSB3YXkuCiAKLSAgICAgICAgSWYgc291cmNlX210aW1lIGlzIE5vbmUgdGhlbiBza2lwIHRoZSB0aW1lc3RhbXAgY2hlY2suCisgICAgICAgIElmIHNvdXJjZV9zdGF0cyBpcyBOb25lIHRoZW4gc2tpcCB0aGUgdGltZXN0YW1wIGNoZWNrLgogCiAgICAgICAgICIiIgogICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICAgICAgaWYgbGVuKG1hZ2ljKSAhPSA0IG9yIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KKyAgICAgICAgaWYgbWFnaWMgIT0gX01BR0lDX0JZVEVTOgorICAgICAgICAgICAgbXNnID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KGZ1bGxuYW1lLCBtYWdpYykKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCB0aW1lc3RhbXAgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCi0gICAgICAgIGVsaWYgc291cmNlX210aW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgbWVzc2FnZSA9ICdiYWQgdGltZXN0YW1wIGluIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQorICAgICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIHNpemUgaW4ge30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd19zaXplKSAhPSBzb3VyY2Vfc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAjIENhbid0IHJldHVybiB0aGUgY29kZSBvYmplY3QgYXMgZXJyb3JzIGZyb20gbWFyc2hhbCBsb2FkaW5nIG5lZWQgdG8KICAgICAgICAgIyBwcm9wYWdhdGUgZXZlbiB3aGVuIHNvdXJjZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIHJldHVybiBkYXRhWzg6XQorICAgICAgICByZXR1cm4gZGF0YVsxMjpdCiAKICAgICBAbW9kdWxlX2Zvcl9sb2FkZXIKICAgICBkZWYgX2xvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSwgKiwgc291cmNlbGVzcz1GYWxzZSk6CkBAIC0zMzAsMTYgKzg1NCwxOSBAQAogICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gc2VsZi5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgaWYgbm90IHNvdXJjZWxlc3M6Ci0gICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBjYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBtb2R1bGUuX19maWxlX18KICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbmFtZQogICAgICAgICBpZiBzZWxmLmlzX3BhY2thZ2UobmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbbW9kdWxlLl9fZmlsZV9fLnJzcGxpdChwYXRoX3NlcCwgMSlbMF1dCisgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbX3BhdGhfc3BsaXQobW9kdWxlLl9fZmlsZV9fKVswXV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAgIGV4ZWMoY29kZV9vYmplY3QsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlX29iamVjdCwgbW9kdWxlLl9fZGljdF9fKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKIApAQCAtMzQ4LDEyICs4NzUsMzEgQEAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgKGFuIGludCkgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aCwgd2hlcmUgcGF0aCBpcyBhIHN0ci4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KLQogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCByZXR1cm5pbmcgYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc3BlY2lmaWVkIHBhdGgKKyAgICAgICAgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KKworICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGNhY2hlX3BhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorCisgICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCisgICAgICAgICIiIgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgZGVsZWdhdGUgdG8gc2V0X2RhdGEoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQorCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgogCkBAIC0zNjksMjggKzkxNSw0MiBAQAogICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEocGF0aCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpIikKLSAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInNvdXJjZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZ2V0X2RhdGEoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YworICAgICAgICByZWFkc291cmNlID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhyZWFkc291cmNlKQorICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZXRlY3QgZW5jb2RpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKICAgICAgICAgbmV3bGluZV9kZWNvZGVyID0gX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHNvdXJjZSBmaWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCiAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgogCi0gICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9tdGltZSB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKKyAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX3N0YXRzIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQogICAgICAgICBieXRlY29kZSwgc2V0X2RhdGEgbXVzdCBhbHNvIGJlIGltcGxlbWVudGVkLgogCiAgICAgICAgICIiIgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfbXRpbWUgPSBOb25lCi0gICAgICAgIGlmIGJ5dGVjb2RlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBjYWNoZV9mcm9tX3NvdXJjZShzb3VyY2VfcGF0aCkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gTm9uZQorICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IHNlbGYucGF0aF9tdGltZShzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKQEAgLTM5OCwyOSArOTU4LDM3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBtYXJzaGFsLmxvYWRzKGJ5dGVzX2RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmb3VuZCwgX2NvZGVfdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGZvdW5kLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gIk5vbi1jb2RlIG9iamVjdCBpbiB7fSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQotICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgY29kZV9vYmplY3QgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGNvbXBpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgsICdleGVjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgIyBJZiBlLmcuIEp5dGhvbiBldmVyIGltcGxlbWVudHMgaW1wLmNhY2hlX2Zyb21fc291cmNlIHRvIGhhdmUKLSAgICAgICAgICAgICMgdGhlaXIgb3duIGNhY2hlZCBmaWxlIGZvcm1hdCwgdGhpcyBibG9jayBvZiBjb2RlIHdpbGwgbW9zdCBsaWtlbHkKLSAgICAgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KF9NQUdJQ19CWVRFUykKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobGVuKHNvdXJjZV9ieXRlcykpKQogICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRfZGF0YShieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKQEAgLTQzNiw3ICsxMDA0LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAKLWNsYXNzIF9GaWxlTG9hZGVyOgorY2xhc3MgRmlsZUxvYWRlcjoKIAogICAgICIiIkJhc2UgZmlsZSBsb2FkZXIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyB0aGUgbG9hZGVyIHByb3RvY29sIG1ldGhvZHMgdGhhdAogICAgIHJlcXVpcmUgZmlsZSBzeXN0ZW0gdXNhZ2UuIiIiCkBAIC00NDQsMTMgKzEwMTIsMjAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICAiIiJDYWNoZSB0aGUgbW9kdWxlIG5hbWUgYW5kIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGZvdW5kIGJ5IHRoZQogICAgICAgICBmaW5kZXIuIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBmdWxsbmFtZQotICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLm5hbWUgPSBmdWxsbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBAX2NoZWNrX25hbWUKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJMb2FkIGEgbW9kdWxlIGZyb20gYSBmaWxlLiIiIgorICAgICAgICAjIElzc3VlICMxNDg1NzogQXZvaWQgdGhlIHplcm8tYXJndW1lbnQgZm9ybSBzbyB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgIyBvZiB0aGF0IGZvcm0gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBicmVha2luZyB0aGUgZnJvemVuIG1vZHVsZQorICAgICAgICByZXR1cm4gc3VwZXIoRmlsZUxvYWRlciwgc2VsZikubG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZSBhcyBmb3VuZCBieSB0aGUgZmluZGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorICAgICAgICByZXR1cm4gc2VsZi5wYXRoCiAKICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZGF0YSBmcm9tIHBhdGggYXMgcmF3IGJ5dGVzLiIiIgpAQCAtNDU4LDUyICsxMDMzLDU2IEBACiAgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKIAogCi1jbGFzcyBfU291cmNlRmlsZUxvYWRlcihfRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKK2NsYXNzIFNvdXJjZUZpbGVMb2FkZXIoRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKIAogICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIFNvdXJjZUxvYWRlciB1c2luZyB0aGUgZmlsZSBzeXN0ZW0uIiIiCiAKLSAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGguIiIiCi0gICAgICAgIHJldHVybiBpbnQoX29zLnN0YXQocGF0aCkuc3RfbXRpbWUpCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgorICAgICAgICBzdCA9IF9vcy5zdGF0KHBhdGgpCisgICAgICAgIHJldHVybiB7J210aW1lJzogc3Quc3RfbXRpbWUsICdzaXplJzogc3Quc3Rfc2l6ZX0KIAotICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKKyAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKToKKyAgICAgICAgIyBBZGFwdCBiZXR3ZWVuIHRoZSB0d28gQVBJcworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2RlID0gX29zLnN0YXQoc291cmNlX3BhdGgpLnN0X21vZGUKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBtb2RlID0gMG82NjYKKyAgICAgICAgIyBXZSBhbHdheXMgZW5zdXJlIHdyaXRlIGFjY2VzcyBzbyB3ZSBjYW4gdXBkYXRlIGNhY2hlZCBmaWxlcworICAgICAgICAjIGxhdGVyIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGVzIGFyZSByZWFkLW9ubHkgb24gV2luZG93cyAoIzYwNzQpCisgICAgICAgIG1vZGUgfD0gMG8yMDAKKyAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCwgZGF0YSwgX21vZGU9bW9kZSkKKworICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhLCAqLCBfbW9kZT0wbzY2Nik6CiAgICAgICAgICIiIldyaXRlIGJ5dGVzIGRhdGEgdG8gYSBmaWxlLiIiIgotICAgICAgICBwYXJlbnQsIF8sIGZpbGVuYW1lID0gcGF0aC5ycGFydGl0aW9uKHBhdGhfc2VwKQorICAgICAgICBwYXJlbnQsIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICAgICAgcGF0aF9wYXJ0cyA9IFtdCiAgICAgICAgICMgRmlndXJlIG91dCB3aGF0IGRpcmVjdG9yaWVzIGFyZSBtaXNzaW5nLgogICAgICAgICB3aGlsZSBwYXJlbnQgYW5kIG5vdCBfcGF0aF9pc2RpcihwYXJlbnQpOgotICAgICAgICAgICAgcGFyZW50LCBfLCBwYXJ0ID0gcGFyZW50LnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgICAgICBwYXJlbnQsIHBhcnQgPSBfcGF0aF9zcGxpdChwYXJlbnQpCiAgICAgICAgICAgICBwYXRoX3BhcnRzLmFwcGVuZChwYXJ0KQogICAgICAgICAjIENyZWF0ZSBuZWVkZWQgZGlyZWN0b3JpZXMuCiAgICAgICAgIGZvciBwYXJ0IGluIHJldmVyc2VkKHBhdGhfcGFydHMpOgogICAgICAgICAgICAgcGFyZW50ID0gX3BhdGhfam9pbihwYXJlbnQsIHBhcnQpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgX29zLm1rZGlyKHBhcmVudCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBQcm9iYWJseSBhbm90aGVyIFB5dGhvbiBwcm9jZXNzIGFscmVhZHkgY3JlYXRlZCB0aGUgZGlyLgotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIElmIGNhbid0IGdldCBwcm9wZXIgYWNjZXNzLCB0aGVuIGp1c3QgZm9yZ2V0IGFib3V0IHdyaXRpbmcKLSAgICAgICAgICAgICAgICAjIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAnd2InKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgIyBEb24ndCB3b3JyeSBpZiB5b3UgY2FuJ3Qgd3JpdGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgIyBDb3VsZCBiZSBhIHBlcm1pc3Npb24gZXJyb3IsIHJlYWQtb25seSBmaWxlc3lzdGVtOiBqdXN0IGZvcmdldAorICAgICAgICAgICAgICAgICMgYWJvdXQgd3JpdGluZyB0aGUgZGF0YS4KKyAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXJlbnQsIGV4YykKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBfbW9kZSkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICMgU2FtZSBhcyBhYm92ZToganVzdCBkb24ndCB3cml0ZSB0aGUgYnl0ZWNvZGUuCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLCBleGMpCiAKIAotY2xhc3MgX1NvdXJjZWxlc3NGaWxlTG9hZGVyKF9GaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKK2NsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgogCiAgICAgIiIiTG9hZGVyIHdoaWNoIGhhbmRsZXMgc291cmNlbGVzcyBmaWxlIGltcG9ydHMuIiIiCiAKQEAgLTUxMywxOSArMTA5MiwyNSBAQAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEocGF0aCkKLSAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsIE5vbmUpCisgICAgICAgIGJ5dGVzX2RhdGEgPSBzZWxmLl9ieXRlc19mcm9tX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhLCBwYXRoLCBOb25lKQogICAgICAgICBmb3VuZCA9IG1hcnNoYWwubG9hZHMoYnl0ZXNfZGF0YSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmb3VuZCwgY29kZV90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmb3VuZCwgX2NvZGVfdHlwZSk6CisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBwYXRoKQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiTm9uLWNvZGUgb2JqZWN0IGluIHt9Ii5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiTm9uLWNvZGUgb2JqZWN0IGluIHt9Ii5mb3JtYXQocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCiAKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgogICAgICAgICByZXR1cm4gTm9uZQogCiAKLWNsYXNzIF9FeHRlbnNpb25GaWxlTG9hZGVyOgorIyBGaWxsZWQgaW4gYnkgX3NldHVwKCkuCitFWFRFTlNJT05fU1VGRklYRVMgPSBbXQorCisKK2NsYXNzIEV4dGVuc2lvbkZpbGVMb2FkZXI6CiAKICAgICAiIiJMb2FkZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLgogCkBAIC01MzQsMTQgKzExMTksOCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgotICAgICAgICAiIiJJbml0aWFsaXplIHRoZSBsb2FkZXIuCi0KLSAgICAgICAgSWYgaXNfcGtnIGlzIFRydWUgdGhlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFzIGV4dGVuc2lvbiBtb2R1bGVzCi0gICAgICAgIGNhbm5vdCBiZSB0aGUgX19pbml0X18gbW9kdWxlIGZvciBhbiBleHRlbnNpb24gbW9kdWxlLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAogICAgIEBfY2hlY2tfbmFtZQogICAgIEBzZXRfcGFja2FnZQpAQCAtNTUwLDI5NyArMTEyOSw1MjggQEAKICAgICAgICAgIiIiTG9hZCBhbiBleHRlbnNpb24gbW9kdWxlLiIiIgogICAgICAgICBpc19yZWxvYWQgPSBmdWxsbmFtZSBpbiBzeXMubW9kdWxlcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW1wLmxvYWRfZHluYW1pYyhmdWxsbmFtZSwgc2VsZi5fcGF0aCkKKyAgICAgICAgICAgIG1vZHVsZSA9IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5sb2FkX2R5bmFtaWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBzZWxmLnBhdGgpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIGxvYWRlZCBmcm9tIHshcn0nLCBzZWxmLnBhdGgpCisgICAgICAgICAgICBpZiBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpIGFuZCBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzBdXQorICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgICByYWlzZQogCi0gICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gRmFsc2UgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW4gbmV2ZXIgYmUgYSBwYWNrYWdlLiIiIgotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgorICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCisgICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKIAotICAgIEBfY2hlY2tfbmFtZQogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgogICAgICAgICByZXR1cm4gTm9uZQogCiAKK2NsYXNzIF9OYW1lc3BhY2VQYXRoOgorICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQorICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncworICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAorICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKKyAgICBpcyBzeXMucGF0aC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKKyAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgorCisgICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgorICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICBpZiBkb3QgPT0gJyc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCisgICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJworICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCisgICAgICAgICMgIHBhcmVudCBwYXRoLgorICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCisKKyAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKKyAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKKworICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6CisgICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCisgICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKKyAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKKyAgICAgICAgICAgIGxvYWRlciwgbmV3X3BhdGggPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQorICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAorICAgICAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCA9IG5ld19wYXRoCisgICAgICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gcGFyZW50X3BhdGggICAgICMgU2F2ZSB0aGUgY29weQorICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfTmFtZXNwYWNlUGF0aCh7IXJ9KSIuZm9ybWF0KHNlbGYuX3BhdGgpCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLl9yZWNhbGN1bGF0ZSgpCisKKyAgICBkZWYgYXBwZW5kKHNlbGYsIGl0ZW0pOgorICAgICAgICBzZWxmLl9wYXRoLmFwcGVuZChpdGVtKQorCisKK2NsYXNzIE5hbWVzcGFjZUxvYWRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpOgorICAgICAgICBzZWxmLl9wYXRoID0gX05hbWVzcGFjZVBhdGgobmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAobmFtZXNwYWNlKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKyAgICBAbW9kdWxlX2Zvcl9sb2FkZXIKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiTG9hZCBhIG5hbWVzcGFjZSBtb2R1bGUuIiIiCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9Jywgc2VsZi5fcGF0aCkKKyAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gc2VsZi5fcGF0aAorICAgICAgICByZXR1cm4gbW9kdWxlCisKKwogIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBQYXRoRmluZGVyOgogCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLihwYXRofHBhdGhfaG9va3N8cGF0aF9pbXBvcnRlcl9jYWNoZSkuIiIiCisgICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgsIGhvb2tzPU5vbmUpOgorICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhjbHMpOgorICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCisgICAgICAgIHN0b3JlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZXMgKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKKyAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKKyAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6CiAgICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KIAogICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgogCiAgICAgICAgICIiIgotICAgICAgICBpZiBub3QgaG9va3M6Ci0gICAgICAgICAgICBob29rcyA9IHN5cy5wYXRoX2hvb2tzCi0gICAgICAgIGZvciBob29rIGluIGhvb2tzOgorICAgICAgICBpZiBub3Qgc3lzLnBhdGhfaG9va3M6CisgICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQorICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gaG9vayhwYXRoKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gcGF0aCBob29rIGZvdW5kIGZvciB7MH0iLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoLCBkZWZhdWx0PU5vbmUpOgotICAgICAgICAiIiJHZXQgdGhlIGZpbmRlciBmb3IgdGhlIHBhdGggZnJvbSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKyAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCiAKLSAgICAgICAgSWYgdGhlIHBhdGggaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyIGFuZCBjYWNoZQotICAgICAgICBpdC4gSWYgTm9uZSBpcyBjYWNoZWQsIGdldCB0aGUgZGVmYXVsdCBmaW5kZXIgYW5kIGNhY2hlIHRoYXQKLSAgICAgICAgKGlmIGFwcGxpY2FibGUpLgotCi0gICAgICAgIEJlY2F1c2Ugb2YgTnVsbEltcG9ydGVyLCBzb21lIGZpbmRlciBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSBvbmx5Ci0gICAgICAgIGV4cGxpY2l0IGZhaWwgY2FzZSBpcyBpZiBOb25lIGlzIGNhY2hlZCBidXQgdGhlIHBhdGggY2Fubm90IGJlIHVzZWQgZm9yCi0gICAgICAgIHRoZSBkZWZhdWx0IGhvb2ssIGZvciB3aGljaCBJbXBvcnRFcnJvciBpcyByYWlzZWQuCisgICAgICAgIElmIHRoZSBwYXRoIGVudHJ5IGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlcgorICAgICAgICBhbmQgY2FjaGUgaXQuIElmIG5vIGZpbmRlciBpcyBhdmFpbGFibGUsIHN0b3JlIE5vbmUuCiAKICAgICAgICAgIiIiCisgICAgICAgIGlmIHBhdGggPT0gJyc6CisgICAgICAgICAgICBwYXRoID0gJy4nCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9ob29rcyhwYXRoKQogICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGZpbmRlciBpcyBOb25lIGFuZCBkZWZhdWx0OgotICAgICAgICAgICAgICAgICMgUmFpc2VzIEltcG9ydEVycm9yIG9uIGZhaWx1cmUuCi0gICAgICAgICAgICAgICAgZmluZGVyID0gZGVmYXVsdChwYXRoKQotICAgICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCiAgICAgICAgIHJldHVybiBmaW5kZXIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X2xvYWRlcihjbHMsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgIiIiRmluZCB0aGUgbG9hZGVyIG9yIG5hbWVzcGFjZV9wYXRoIGZvciB0aGlzIG1vZHVsZS9wYWNrYWdlIG5hbWUuIiIiCisgICAgICAgICMgSWYgdGhpcyBlbmRzIHVwIGJlaW5nIGEgbmFtZXNwYWNlIHBhY2thZ2UsIG5hbWVzcGFjZV9wYXRoIGlzCisgICAgICAgICMgIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2lsbCBiZWNvbWUgaXRzIF9fcGF0aF9fCisgICAgICAgIG5hbWVzcGFjZV9wYXRoID0gW10KKyAgICAgICAgZm9yIGVudHJ5IGluIHBhdGg6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbnRyeSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQorICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYSBsb2FkZXI6IHJldHVybiBpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlciwgbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQorICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCisgICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgbmFtZXNwYWNlX3BhdGgKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKLSAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAotICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGZpbmRlcjoKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbG9hZGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyCisgICAgICAgIGxvYWRlciwgbmFtZXNwYWNlX3BhdGggPSBjbHMuX2dldF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBsb2FkZXIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKKyAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCisgICAgICAgICAgICAgICAgIyAgbG9hZGVyIHdoaWNoIGNhbiBjcmVhdGUgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIHJldHVybiBOYW1lc3BhY2VMb2FkZXIoZnVsbG5hbWUsIG5hbWVzcGFjZV9wYXRoLCBjbHMuX2dldF9sb2FkZXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0ZpbGVGaW5kZXI6CitjbGFzcyBGaWxlRmluZGVyOgogCiAgICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCiAKLSAgICBDb25zdHJ1Y3RvciB0YWtlcyBhIGxpc3Qgb2Ygb2JqZWN0cyBkZXRhaWxpbmcgd2hhdCBmaWxlIGV4dGVuc2lvbnMgdGhlaXIKLSAgICBsb2FkZXIgc3VwcG9ydHMgYWxvbmcgd2l0aCB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkIGZvciBhIHBhY2thZ2UuCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KIAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpkZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIGZpbmRlciBkZXRhaWxzLiIiIgotICAgICAgICBwYWNrYWdlcyA9IFtdCi0gICAgICAgIG1vZHVsZXMgPSBbXQotICAgICAgICBmb3IgZGV0YWlsIGluIGRldGFpbHM6Ci0gICAgICAgICAgICBtb2R1bGVzLmV4dGVuZCgoc3VmZml4LCBkZXRhaWwubG9hZGVyKSBmb3Igc3VmZml4IGluIGRldGFpbC5zdWZmaXhlcykKLSAgICAgICAgICAgIGlmIGRldGFpbC5zdXBwb3J0c19wYWNrYWdlczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlcy5leHRlbmQoKHN1ZmZpeCwgZGV0YWlsLmxvYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBkZXRhaWwuc3VmZml4ZXMpCi0gICAgICAgIHNlbGYucGFja2FnZXMgPSBwYWNrYWdlcwotICAgICAgICBzZWxmLm1vZHVsZXMgPSBtb2R1bGVzCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKKyAgICAgICAgMy10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyLCBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcywKKyAgICAgICAgYW5kIGEgYm9vbGVhbiBvZiB3aGV0aGVyIHRoZSBsb2FkZXIgaGFuZGxlcyBwYWNrYWdlcy4iIiIKKyAgICAgICAgbG9hZGVycyA9IFtdCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIGRldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKIAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4iIiIKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBtdGltZS4iIiIKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisKKyAgICBmaW5kX21vZHVsZSA9IF9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKKyAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKKyAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICBpZiBfcGF0aF9pc2RpcihiYXNlX3BhdGgpIGFuZCBfY2FzZV9vayhzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKToKLSAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlciBpbiBzZWxmLnBhY2thZ2VzOgotICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgaWYgKF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgX2Nhc2Vfb2soYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgotICAgICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQoYmFzZV9wYXRoKSwgSW1wb3J0V2FybmluZykKLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYubW9kdWxlczoKLSAgICAgICAgICAgIG1vZF9maWxlbmFtZSA9IHRhaWxfbW9kdWxlICsgc3VmZml4Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKQotICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCkgYW5kIF9jYXNlX29rKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpCi0gICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX29zLnN0YXQoc2VsZi5wYXRoKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGlmIF9wYXRoX2lzZGlyKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpLCBbYmFzZV9wYXRoXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2UsIHJldHVybiB0aGUgcGF0aCBpZiB3ZSBkb24ndCBhbHNvCisgICAgICAgICAgICAgICAgICAgICMgIGZpbmQgYSBtb2R1bGUgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gVHJ1ZQorICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KKyAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvYWRlcihmdWxsbmFtZSwgZnVsbF9wYXRoKSwgW10pCisgICAgICAgIGlmIGlzX25hbWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgW2Jhc2VfcGF0aF0pCisgICAgICAgIHJldHVybiAoTm9uZSwgW10pCiAKLWNsYXNzIF9Tb3VyY2VGaW5kZXJEZXRhaWxzOgorICAgIGRlZiBfZmlsbF9jYWNoZShzZWxmKToKKyAgICAgICAgIiIiRmlsbCB0aGUgY2FjaGUgb2YgcG90ZW50aWFsIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGZvciB0aGlzIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250ZW50cyA9IF9vcy5saXN0ZGlyKHBhdGgpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKKyAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KGZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZUZpbGVMb2FkZXIKLSAgICBzdXBwb3J0c19wYWNrYWdlcyA9IFRydWUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKKyAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAorICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc3VmZml4ZXMgPSBfc3VmZml4X2xpc3QoaW1wLlBZX1NPVVJDRSkKKyAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLgogCi1jbGFzcyBfU291cmNlbGVzc0ZpbmRlckRldGFpbHM6CisgICAgICAgICIiIgorICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgorICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCisgICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm9ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCIsIHBhdGg9cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZWxlc3NGaWxlTG9hZGVyCi0gICAgc3VwcG9ydHNfcGFja2FnZXMgPSBUcnVlCisgICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuUFlfQ09NUElMRUQpCi0KLQotY2xhc3MgX0V4dGVuc2lvbkZpbmRlckRldGFpbHM6Ci0KLSAgICBsb2FkZXIgPSBfRXh0ZW5zaW9uRmlsZUxvYWRlcgotICAgIHN1cHBvcnRzX3BhY2thZ2VzID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuQ19FWFRFTlNJT04pCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZpbGVGaW5kZXIoJXIpIiAlIChzZWxmLnBhdGgsKQogCiAKICMgSW1wb3J0IGl0c2VsZiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9maWxlX3BhdGhfaG9vayhwYXRoKToKLSAgICAiIiJJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSwgcmV0dXJuIGEgZmlsZS1iYXNlZCBmaW5kZXIuIiIiCi0gICAgaWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgIHJldHVybiBfRmlsZUZpbmRlcihwYXRoLCBfRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQiKQotCi0KLV9ERUZBVUxUX1BBVEhfSE9PSyA9IF9maWxlX3BhdGhfaG9vawotCi1jbGFzcyBfRGVmYXVsdFBhdGhGaW5kZXIoUGF0aEZpbmRlcik6Ci0KLSAgICAiIiJTdWJjbGFzcyBvZiBQYXRoRmluZGVyIHRoYXQgaW1wbGVtZW50cyBpbXBsaWNpdCBzZW1hbnRpY3MgZm9yCi0gICAgX19pbXBvcnRfXy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgYXMgd2VsbCBhcyBpbXBsaWNpdCBwYXRoIGhvb2tzLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBsaWNpdF9ob29rcyA9IFtfREVGQVVMVF9QQVRIX0hPT0ssIGltcC5OdWxsSW1wb3J0ZXJdCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoLCBpbXBsaWNpdF9ob29rcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgotICAgICAgICAiIiJVc2UgdGhlIGRlZmF1bHQgcGF0aCBob29rIHdoZW4gTm9uZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCi0gICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2ltcG9ydGVyX2NhY2hlKHBhdGgsIF9ERUZBVUxUX1BBVEhfSE9PSykKLQotCiBjbGFzcyBfSW1wb3J0TG9ja0NvbnRleHQ6CiAKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRoZSBpbXBvcnQgbG9jay4iIiIKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIkFjcXVpcmUgdGhlIGltcG9ydCBsb2NrLiIiIgotICAgICAgICBpbXAuYWNxdWlyZV9sb2NrKCkKKyAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2spOgogICAgICAgICAiIiJSZWxlYXNlIHRoZSBpbXBvcnQgbG9jayByZWdhcmRsZXNzIG9mIGFueSByYWlzZWQgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAgaW1wLnJlbGVhc2VfbG9jaygpCisgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKIAogCi1fSU1QTElDSVRfTUVUQV9QQVRIID0gW0J1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIF9EZWZhdWx0UGF0aEZpbmRlcl0KK2RlZiBfcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGJpdHMgPSBwYWNrYWdlLnJzcGxpdCgnLicsIGxldmVsIC0gMSkKKyAgICBpZiBsZW4oYml0cykgPCBsZXZlbDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsIHBhY2thZ2UnKQorICAgIGJhc2UgPSBiaXRzWzBdCisgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGJhc2UsIG5hbWUpIGlmIG5hbWUgZWxzZSBiYXNlCiAKLV9FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7fScKKworZGVmIF9maW5kX21vZHVsZShuYW1lLCBwYXRoKToKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgorICAgIGlmIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgorICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfc2FuaXR5X2NoZWNrKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJWZXJpZnkgYXJndW1lbnRzIGFyZSAic2FuZSIuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgaWYgbGV2ZWwgPCAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZXZlbCBtdXN0IGJlID49IDAnKQorICAgIGlmIHBhY2thZ2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmciKQorICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICJpbXBvcnQiKQorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IobXNnLmZvcm1hdChwYWNrYWdlKSkKKyAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgbW9kdWxlIG5hbWUiKQorCisKK19FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7IXJ9JworCitkZWYgX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0Xyk6CisgICAgcGF0aCA9IE5vbmUKKyAgICBwYXJlbnQgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIGlmIHBhcmVudDoKKyAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgcGFyZW50KQorICAgICAgICAjIENyYXp5IHNpZGUtZWZmZWN0cyEKKyAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KKyAgICAgICAgcGFyZW50X21vZHVsZSA9IHN5cy5tb2R1bGVzW3BhcmVudF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICBsb2FkZXIgPSBfZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgICMgVE9ETyhicmV0dCk6IHN3aXRjaCB0byBhIHByb3BlciBNb2R1bGVOb3RGb3VuZCBleGNlcHRpb24gaW4gUHl0aG9uCisgICAgICAgICMgMy40LgorICAgICAgICBleGMuX25vdF9mb3VuZCA9IFRydWUKKyAgICAgICAgcmFpc2UgZXhjCisgICAgZWxpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgorICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnaW1wb3J0IHshcn0gIyB7IXJ9JywgbmFtZSwgbG9hZGVyKQorICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHk7IGJlIG5pY2VyIHRvIHNraXAgdGhlIGRpY3QgbG9va3VwLgorICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgaWYgcGFyZW50OgorICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgorICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQorICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCisgICAgIyBTZXQgX19wYWNrYWdlX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBTZXQgbG9hZGVyIGlmIG5lZWQgYmUuCisgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQorCisKK2RlZiBfZmluZF9hbmRfbG9hZChuYW1lLCBpbXBvcnRfKToKKyAgICAiIiJGaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUsIGFuZCByZWxlYXNlIHRoZSBpbXBvcnQgbG9jay4iIiIKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIGxvY2suYWNxdWlyZSgpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0XykKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCiAKIGRlZiBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlPU5vbmUsIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICAgYmVpbmcgbWFkZSBmcm9tLCBhbmQgdGhlIGxldmVsIGFkanVzdG1lbnQuCiAKICAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5Ci0gICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHR0aW5nIF9fcGFja2FnZV9fIGlmCisgICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHRpbmcgX19wYWNrYWdlX18gaWYKICAgICB0aGUgbG9hZGVyIGRpZCBub3QuCiAKICAgICAiIiIKLSAgICBpZiBwYWNrYWdlOgotICAgICAgICBpZiBub3QgaGFzYXR0cihwYWNrYWdlLCAncmluZGV4Jyk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nIikKLSAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG1zZyA9ICgiUGFyZW50IG1vZHVsZSB7MCFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgImltcG9ydCIpCi0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihtc2cuZm9ybWF0KHBhY2thZ2UpKQotICAgIGlmIG5vdCBuYW1lIGFuZCBsZXZlbCA9PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBtb2R1bGUgbmFtZSIpCisgICAgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgICBpZiBsZXZlbCA+IDA6Ci0gICAgICAgIGRvdCA9IGxlbihwYWNrYWdlKQotICAgICAgICBmb3IgeCBpbiByYW5nZShsZXZlbCwgMSwgLTEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRvdCA9IHBhY2thZ2UucmluZGV4KCcuJywgMCwgZG90KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvcC1sZXZlbCBwYWNrYWdlIikKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2VbOmRvdF0sIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gcGFja2FnZVs6ZG90XQotICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLmZvcm1hdChuYW1lKSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlKQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHBhcmVudCA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHBhdGggPSBOb25lCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgIGlmIHBhcmVudCBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgX2djZF9pbXBvcnQocGFyZW50KQotICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQotICAgICAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoICsgX0lNUExJQ0lUX01FVEFfUEFUSAotICAgICAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKLSAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShuYW1lLCBwYXRoKQotICAgICAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSkKLSAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCi0gICAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCi0gICAgICAgICMgU2V0IF9fcGFja2FnZV9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKLSAgICAgICAgICAgICMgV2F0Y2ggb3V0IGZvciB3aGF0IGNvbWVzIG91dCBvZiBzeXMubW9kdWxlcyB0byBub3QgYmUgYSBtb2R1bGUsCi0gICAgICAgICAgICAjIGUuZy4gYW4gaW50LgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgbmFtZSA9IF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpCisgICAgX2ltcC5hY3F1aXJlX2xvY2soKQorICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWQobmFtZSwgX2djZF9pbXBvcnQpCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIi5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCisgICAgcmV0dXJuIG1vZHVsZQorCitkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKKyAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgorCisgICAgVGhlIGltcG9ydF8gcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgbW9kdWxlIHRvCisgICAgaW1wb3J0LiBJdCBpcyByZXF1aXJlZCB0byBkZWNvdXBsZSB0aGUgZnVuY3Rpb24gZnJvbSBhc3N1bWluZyBpbXBvcnRsaWIncworICAgIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkLgorCisgICAgIiIiCisgICAgIyBUaGUgaGVsbCB0aGF0IGlzIGZyb21saXN0IC4uLgorICAgICMgSWYgYSBwYWNrYWdlIHdhcyBpbXBvcnRlZCwgdHJ5IHRvIGltcG9ydCBzdHVmZiBmcm9tIGZyb21saXN0LgorICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgaWYgJyonIGluIGZyb21saXN0OgorICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQorICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19hbGxfXycpOgorICAgICAgICAgICAgICAgIGZyb21saXN0LmV4dGVuZChtb2R1bGUuX19hbGxfXykKKyAgICAgICAgZm9yIHggaW4gZnJvbWxpc3Q6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsIHgpOgorICAgICAgICAgICAgICAgIGZyb21fbmFtZSA9ICd7fS57fScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXywgeCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgZnJvbV9uYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAorICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPKGJyZXR0KTogSW4gUHl0aG9uIDMuNCwgaGF2ZSBpbXBvcnQgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIyAgIE1vZHVsZU5vdEZvdW5kIGFuZCBjYXRjaCB0aGF0LgorICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGV4YywgJ19ub3RfZm91bmQnLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICByZXR1cm4gbW9kdWxlCiAKIAotZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1bXSwgbGV2ZWw9MCk6CitkZWYgX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFscyk6CisgICAgIiIiQ2FsY3VsYXRlIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlLgorCisgICAgX19wYWNrYWdlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCBvciBjb3VsZCBiZSBzZXQgdG8gTm9uZQorICAgIHRvIHJlcHJlc2VudCB0aGF0IGl0cyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bi4KKworICAgICIiIgorICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQorICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKKyAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KKyAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKKyAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBwYWNrYWdlCisKKworZGVmIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGZpbGUtYmFzZWQgbW9kdWxlIGxvYWRlcnMuCisKKyAgICBFYWNoIGl0ZW0gaXMgYSB0dXBsZSAobG9hZGVyLCBzdWZmaXhlcywgYWxsb3dfcGFja2FnZXMpLgorICAgICIiIgorICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCisgICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCisgICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCisKKworZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhIG1vZHVsZS4KIAogICAgIFRoZSAnZ2xvYmFscycgYXJndW1lbnQgaXMgdXNlZCB0byBpbmZlciB3aGVyZSB0aGUgaW1wb3J0IGlzIG9jY3VyaW5nIGZyb20KQEAgLTg1MSw0MCArMTY2MSwxMTIgQEAKICAgICBpbXBvcnQgKGUuZy4gYGBmcm9tIC4ucGtnIGltcG9ydCBtb2RgYCB3b3VsZCBoYXZlIGEgJ2xldmVsJyBvZiAyKS4KIAogICAgICIiIgotICAgIGlmIG5vdCBoYXNhdHRyKG5hbWUsICdycGFydGl0aW9uJyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibW9kdWxlIG5hbWUgbXVzdCBiZSBzdHIsIG5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQogICAgIGlmIGxldmVsID09IDA6CiAgICAgICAgIG1vZHVsZSA9IF9nY2RfaW1wb3J0KG5hbWUpCiAgICAgZWxzZToKLSAgICAgICAgIyBfX3BhY2thZ2VfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkIG9yIGNvdWxkIGJlIHNldCB0byBOb25lCi0gICAgICAgICMgdG8gcmVwcmVzZW50IHRoYXQgaXQncyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bgotICAgICAgICBwYWNrYWdlID0gZ2xvYmFscy5nZXQoJ19fcGFja2FnZV9fJykKLSAgICAgICAgaWYgcGFja2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KLSAgICAgICAgICAgIGlmICdfX3BhdGhfXycgbm90IGluIGdsb2JhbHM6Ci0gICAgICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGdsb2JhbHNfID0gZ2xvYmFscyBpZiBnbG9iYWxzIGlzIG5vdCBOb25lIGVsc2Uge30KKyAgICAgICAgcGFja2FnZSA9IF9jYWxjX19fcGFja2FnZV9fKGdsb2JhbHNfKQogICAgICAgICBtb2R1bGUgPSBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlLCBsZXZlbCkKLSAgICAjIFRoZSBoZWxsIHRoYXQgaXMgZnJvbWxpc3QgLi4uCiAgICAgaWYgbm90IGZyb21saXN0OgogICAgICAgICAjIFJldHVybiB1cCB0byB0aGUgZmlyc3QgZG90IGluICduYW1lJy4gVGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdAogICAgICAgICAjIHRoYXQgJ25hbWUnIG1heSBiZSByZWxhdGl2ZS4KICAgICAgICAgaWYgbGV2ZWwgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lLnBhcnRpdGlvbignLicpWzBdXQorICAgICAgICAgICAgcmV0dXJuIF9nY2RfaW1wb3J0KG5hbWUucGFydGl0aW9uKCcuJylbMF0pCiAgICAgICAgIGVsaWYgbm90IG5hbWU6CiAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgdG8gc2xpY2UgdGhlIG1vZHVsZSdzIG5hbWUgdXAgdG8gdGhlIGZpcnN0IGRvdAorICAgICAgICAgICAgIyBpbiAnbmFtZScuCiAgICAgICAgICAgICBjdXRfb2ZmID0gbGVuKG5hbWUpIC0gbGVuKG5hbWUucGFydGl0aW9uKCcuJylbMF0pCi0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fWzotY3V0X29mZl1dCisgICAgICAgICAgICAjIFNsaWNlIGVuZCBuZWVkcyB0byBiZSBwb3NpdGl2ZSB0byBhbGxldmlhdGUgbmVlZCB0byBzcGVjaWFsLWNhc2UKKyAgICAgICAgICAgICMgd2hlbiBgYCcuJyBub3QgaW4gbmFtZWBgLgorICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW21vZHVsZS5fX25hbWVfX1s6bGVuKG1vZHVsZS5fX25hbWVfXyktY3V0X29mZl1dCiAgICAgZWxzZToKLSAgICAgICAgIyBJZiBhIHBhY2thZ2Ugd2FzIGltcG9ydGVkLCB0cnkgdG8gaW1wb3J0IHN0dWZmIGZyb20gZnJvbWxpc3QuCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKLSAgICAgICAgICAgIGlmICcqJyBpbiBmcm9tbGlzdCBhbmQgaGFzYXR0cihtb2R1bGUsICdfX2FsbF9fJyk6Ci0gICAgICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQotICAgICAgICAgICAgICAgIGZyb21saXN0LnJlbW92ZSgnKicpCi0gICAgICAgICAgICAgICAgZnJvbWxpc3QuZXh0ZW5kKG1vZHVsZS5fX2FsbF9fKQotICAgICAgICAgICAgZm9yIHggaW4gKHkgZm9yIHkgaW4gZnJvbWxpc3QgaWYgbm90IGhhc2F0dHIobW9kdWxlLHkpKToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIF9nY2RfaW1wb3J0KCd7MH0uezF9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICByZXR1cm4gX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBfZ2NkX2ltcG9ydCkKKworCisKK2RlZiBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpOgorICAgICIiIlNldHVwIGltcG9ydGxpYiBieSBpbXBvcnRpbmcgbmVlZGVkIGJ1aWx0LWluIG1vZHVsZXMgYW5kIGluamVjdGluZyB0aGVtCisgICAgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKworICAgIEFzIHN5cyBpcyBuZWVkZWQgZm9yIHN5cy5tb2R1bGVzIGFjY2VzcyBhbmQgX2ltcCBpcyBuZWVkZWQgdG8gbG9hZCBidWlsdC1pbgorICAgIG1vZHVsZXMsIHRob3NlIHR3byBtb2R1bGVzIG11c3QgYmUgZXhwbGljaXRseSBwYXNzZWQgaW4uCisKKyAgICAiIiIKKyAgICBnbG9iYWwgX2ltcCwgc3lzLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIF9pbXAgPSBfaW1wX21vZHVsZQorICAgIHN5cyA9IHN5c19tb2R1bGUKKworICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZToKKyAgICAgICAgQllURUNPREVfU1VGRklYRVMgPSBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKyAgICBlbHNlOgorICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTCisKKyAgICBmb3IgbW9kdWxlIGluIChfaW1wLCBzeXMpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IEJ1aWx0aW5JbXBvcnRlcgorCisgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgICAgIGlmIGJ1aWx0aW5fbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShidWlsdGluX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fbmFtZV0KKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgYnVpbHRpbl9uYW1lLCBidWlsdGluX21vZHVsZSkKKworICAgIG9zX2RldGFpbHMgPSAoJ3Bvc2l4JywgWycvJ10pLCAoJ250JywgWydcXCcsICcvJ10pLCAoJ29zMicsIFsnXFwnLCAnLyddKQorICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKKyAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCisgICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKKyAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KKyAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShidWlsdGluX29zKQorICAgICAgICAgICAgICAgICMgVE9ETzogcmlwIG91dCBvczIgY29kZSBhZnRlciAzLjMgaXMgcmVsZWFzZWQgYXMgcGVyIFBFUCAxMQorICAgICAgICAgICAgICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ29zMicgYW5kICdFTVggR0NDJyBpbiBzeXMudmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMV0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2ltcG9ydGxpYiByZXF1aXJlcyBwb3NpeCBvciBudCcpCisKKyAgICB0cnk6CisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ190aHJlYWQnKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgIyBQeXRob24gd2FzIGJ1aWx0IHdpdGhvdXQgdGhyZWFkcworICAgICAgICB0aHJlYWRfbW9kdWxlID0gTm9uZQorICAgIHdlYWtyZWZfbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfd2Vha3JlZicpCisKKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIHdpbnJlZ19tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ3dpbnJlZycpCisgICAgICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2lucmVnJywgd2lucmVnX21vZHVsZSkKKworICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfb3MnLCBvc19tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ190aHJlYWQnLCB0aHJlYWRfbW9kdWxlKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2Vha3JlZicsIHdlYWtyZWZfbW9kdWxlKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcCcsIHBhdGhfc2VwKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcGFyYXRvcnMnLCBzZXQocGF0aF9zZXBhcmF0b3JzKSkKKyAgICAjIENvbnN0YW50cworICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfcmVsYXhfY2FzZScsIF9tYWtlX3JlbGF4X2Nhc2UoKSkKKyAgICBFWFRFTlNJT05fU1VGRklYRVMuZXh0ZW5kKF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkpCisgICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgorICAgICAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKKyAgICAgICAgaWYgJ19kLnB5ZCcgaW4gRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEID0gVHJ1ZQorCisKK2RlZiBfaW5zdGFsbChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CisgICAgIiIiSW5zdGFsbCBpbXBvcnRsaWIgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKKyAgICBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpCisgICAgc3VwcG9ydGVkX2xvYWRlcnMgPSBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKQorICAgIHN5cy5wYXRoX2hvb2tzLmV4dGVuZChbRmlsZUZpbmRlci5wYXRoX2hvb2soKnN1cHBvcnRlZF9sb2FkZXJzKV0pCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoQnVpbHRpbkltcG9ydGVyKQorICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKEZyb3plbkltcG9ydGVyKQorICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvYWJjLnB5IGIvTGliL2ltcG9ydGxpYi9hYmMucHkKaW5kZXggZmEzNDNmOC4uMzg3NTY3YSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9hYmMucHkKKysrIGIvTGliL2ltcG9ydGxpYi9hYmMucHkKQEAgLTEsMTggKzEsOTQgQEAKICIiIkFic3RyYWN0IGJhc2UgY2xhc3NlcyByZWxhdGVkIHRvIGltcG9ydC4iIiIKIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAogZnJvbSAuIGltcG9ydCBtYWNoaW5lcnkKLWZyb20gLiBpbXBvcnQgdXRpbAordHJ5OgorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYgorZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICBpZiBleGMubmFtZSAhPSAnX2Zyb3plbl9pbXBvcnRsaWInOgorICAgICAgICByYWlzZQorICAgIF9mcm96ZW5faW1wb3J0bGliID0gTm9uZQogaW1wb3J0IGFiYwogaW1wb3J0IGltcAotaW1wb3J0IGlvCiBpbXBvcnQgbWFyc2hhbAotaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIGltcG9ydCB0b2tlbml6ZQotaW1wb3J0IHR5cGVzCiBpbXBvcnQgd2FybmluZ3MKIAogCitkZWYgX3JlZ2lzdGVyKGFic3RyYWN0X2NscywgKmNsYXNzZXMpOgorICAgIGZvciBjbHMgaW4gY2xhc3NlczoKKyAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGNscykKKyAgICAgICAgaWYgX2Zyb3plbl9pbXBvcnRsaWIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYiwgY2xzLl9fbmFtZV9fKQorICAgICAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGZyb3plbl9jbHMpCisKKworY2xhc3MgRmluZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisKKyAgICAiIiJMZWdhY3kgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGZpbmRlcnMuCisKKyAgICBJdCBtYXkgYmUgc3ViY2xhc3NlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSB0aGlyZCBwYXJ0eQorICAgIHJlaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbXBvcnQgc3lzdGVtLiAgT3RoZXJ3aXNlLCBmaW5kZXIKKyAgICBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGRlcml2ZSBmcm9tIHRoZSBtb3JlIHNwZWNpZmljIE1ldGFQYXRoRmluZGVyCisgICAgb3IgUGF0aEVudHJ5RmluZGVyIEFCQ3MuCisgICAgIiIiCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiJBbiBhYnN0cmFjdCBtZXRob2QgdGhhdCBzaG91bGQgZmluZCBhIG1vZHVsZS4KKyAgICAgICAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyIGFuZCB0aGUgb3B0aW9uYWwgcGF0aCBpcyBhIHN0ciBvciBOb25lLgorICAgICAgICBSZXR1cm5zIGEgTG9hZGVyIG9iamVjdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBNZXRhUGF0aEZpbmRlcihGaW5kZXIpOgorCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGZpbmRlcnMgb24gc3lzLm1ldGFfcGF0aC4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHNob3VsZCBmaW5kIGEgbW9kdWxlLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAiIiJBbiBvcHRpb25hbCBtZXRob2QgZm9yIGNsZWFyaW5nIHRoZSBmaW5kZXIncyBjYWNoZSwgaWYgYW55LgorICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKK19yZWdpc3RlcihNZXRhUGF0aEZpbmRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyLCBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyKQorCisKK2NsYXNzIFBhdGhFbnRyeUZpbmRlcihGaW5kZXIpOgorCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcGF0aCBlbnRyeSBmaW5kZXJzIHVzZWQgYnkgUGF0aEZpbmRlci4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHJldHVybnMgYSBtb2R1bGUgbG9hZGVyLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgMi10dXBsZSBvZiAoTG9hZGVyLCBwb3J0aW9uKSB3aGVyZQorICAgICAgICBwb3J0aW9uIGlzIGEgc2VxdWVuY2Ugb2YgZmlsZSBzeXN0ZW0gbG9jYXRpb25zIGNvbnRyaWJ1dGluZyB0byBwYXJ0IG9mCisgICAgICAgIGEgbmFtZXNwYWNlIHBhY2thZ2UuICBUaGUgc2VxdWVuY2UgbWF5IGJlIGVtcHR5IGFuZCB0aGUgbG9hZGVyIG1heSBiZQorICAgICAgICBOb25lLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZmluZF9tb2R1bGUgPSBfYm9vdHN0cmFwLl9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgUGF0aEZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKK19yZWdpc3RlcihQYXRoRW50cnlGaW5kZXIsIG1hY2hpbmVyeS5GaWxlRmluZGVyKQorCisKIGNsYXNzIExvYWRlcihtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGxvYWRlcnMuIiIiCkBAIC0yMywyMyArOTksMTIgQEAKICAgICAgICAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLQotY2xhc3MgRmluZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6Ci0KLSAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycy4iIiIKLQogICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCB3aGVuIGltcGxlbWVudGVkIHNob3VsZCBmaW5kIGEgbW9kdWxlLgotICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCi0gICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgotICAgICAgICAiIiIKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUKKyAgICAgICAgZ2l2ZW4gbW9kdWxlJ3MgcmVwci4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi1GaW5kZXIucmVnaXN0ZXIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIpCi1GaW5kZXIucmVnaXN0ZXIobWFjaGluZXJ5LlBhdGhGaW5kZXIpCi0KIAogY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyKToKIApAQCAtODQsOCArMTQ5LDggQEAKICAgICAgICAgbW9kdWxlLiAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIHN0ci4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi1JbnNwZWN0TG9hZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIpCi1JbnNwZWN0TG9hZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikKK19yZWdpc3RlcihJbnNwZWN0TG9hZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5zcGVjdExvYWRlcik6CkBAIC0xMDQsNiArMTY5LDE1IEBACiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogCitjbGFzcyBGaWxlTG9hZGVyKF9ib290c3RyYXAuRmlsZUxvYWRlciwgUmVzb3VyY2VMb2FkZXIsIEV4ZWN1dGlvbkxvYWRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIHBhcnRpYWxseSBpbXBsZW1lbnRpbmcgdGhlIFJlc291cmNlTG9hZGVyIGFuZAorICAgIEV4ZWN1dGlvbkxvYWRlciBBQkNzLiIiIgorCitfcmVnaXN0ZXIoRmlsZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCisKKwogY2xhc3MgU291cmNlTG9hZGVyKF9ib290c3RyYXAuU291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRpbmcgc291cmNlIGNvZGUgKGFuZCBvcHRpb25hbGx5IGFueQpAQCAtMTIzLDcgKzE5NywyMCBAQAogCiAgICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgKGludCkgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwYXRoIChzdHIpLiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIGlmIHNlbGYucGF0aF9zdGF0cy5fX2Z1bmNfXyBpcyBTb3VyY2VMb2FkZXIucGF0aF9zdGF0czoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgcmV0dXJuIGludChzZWxmLnBhdGhfc3RhdHMocGF0aClbJ210aW1lJ10pCisKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbWV0YWRhdGEgZGljdCBmb3IgdGhlIHNvdXJjZSBwb2ludGVkIHRvIGJ5IHRoZSBwYXRoIChzdHIpLgorICAgICAgICBQb3NzaWJsZSBrZXlzOgorICAgICAgICAtICdtdGltZScgKG1hbmRhdG9yeSkgaXMgdGhlIG51bWVyaWMgdGltZXN0YW1wIG9mIGxhc3Qgc291cmNlCisgICAgICAgICAgY29kZSBtb2RpZmljYXRpb247CisgICAgICAgIC0gJ3NpemUnIChvcHRpb25hbCkgaXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5wYXRoX210aW1lLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX210aW1lOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KIAogICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgdGhlIGJ5dGVzIHRvIHRoZSBwYXRoIChpZiBwb3NzaWJsZSkuCkBAIC0xMzcsNiArMjI0LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAorX3JlZ2lzdGVyKFNvdXJjZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKIGNsYXNzIFB5TG9hZGVyKFNvdXJjZUxvYWRlcik6CiAKQEAgLTE5NSwxMCArMjgzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBTb3VyY2VMb2FkZXIgaW5zdGVhZC4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWUgdGhlIGltcG9ydGxpYiBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBiZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhdGlibGUgd2l0aCBQeXRob24gMy4xIG9ud2FyZHMuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHBhdGggPSBzZWxmLnNvdXJjZV9wYXRoKGZ1bGxuYW1lKQogICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobmFtZT1mdWxsbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAKQEAgLTIyNiw3ICszMTQsNyBAQAogICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHNvdXJjZSBvciBieXRlY29kZSBwYXRoIGF2YWlsYWJsZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezAhcn0iLmZvcm1hdChmdWxsbmFtZSksIG5hbWU9ZnVsbG5hbWUpCiAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJHZXQgYSBjb2RlIG9iamVjdCBmcm9tIHNvdXJjZSBvciBieXRlY29kZS4iIiIKQEAgLTIzNCw3ICszMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZW1vdmFsIGluIFB5dGhvbiAzLjQ7IHVzZSBTb3VyY2VMb2FkZXIgaW5zdGVhZC4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBQeXRob24gMy4xIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQsIHNlZSB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRlc3QgZG9jdW1lbnRhdGlvbiBmb3IgUHlMb2FkZXIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNvdXJjZV90aW1lc3RhbXAgPSBzZWxmLnNvdXJjZV9tdGltZShmdWxsbmFtZSkKICAgICAgICAgIyBUcnkgdG8gdXNlIGJ5dGVjb2RlIGlmIGl0IGlzIGF2YWlsYWJsZS4KICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYuYnl0ZWNvZGVfcGF0aChmdWxsbmFtZSkKQEAgLTI0MywyMCArMzMxLDMwIEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWFnaWMgPSBkYXRhWzo0XQogICAgICAgICAgICAgICAgIGlmIGxlbihtYWdpYykgPCA0OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYmFkIG1hZ2ljIG51bWJlciBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1hZ2ljIG51bWJlciBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICByYXdfdGltZXN0YW1wID0gZGF0YVs0OjhdCiAgICAgICAgICAgICAgICAgaWYgbGVuKHJhd190aW1lc3RhbXApIDwgNDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCB0aW1lc3RhbXAgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCi0gICAgICAgICAgICAgICAgcHljX3RpbWVzdGFtcCA9IG1hcnNoYWwuX3JfbG9uZyhyYXdfdGltZXN0YW1wKQotICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVs4Ol0KKyAgICAgICAgICAgICAgICBweWNfdGltZXN0YW1wID0gX2Jvb3RzdHJhcC5fcl9sb25nKHJhd190aW1lc3RhbXApCisgICAgICAgICAgICAgICAgcmF3X3NvdXJjZV9zaXplID0gZGF0YVs4OjEyXQorICAgICAgICAgICAgICAgIGlmIGxlbihyYXdfc291cmNlX3NpemUpICE9IDQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJiYWQgZmlsZSBzaXplIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICMgU291cmNlIHNpemUgaXMgdW51c2VkIGFzIHRoZSBBQkMgZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0bworICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzaXplIG9mIHRoZSBzb3VyY2UgYWhlYWQgb2YgcmVhZGluZyBpdC4KKyAgICAgICAgICAgICAgICBieXRlY29kZSA9IGRhdGFbMTI6XQogICAgICAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIG1hZ2ljIG51bWJlciBpcyB2YWxpZC4KICAgICAgICAgICAgICAgICBpZiBpbXAuZ2V0X21hZ2ljKCkgIT0gbWFnaWM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGJ5dGVjb2RlIGlzIG5vdCBzdGFsZSAob25seSBtYXR0ZXJzIHdoZW4KICAgICAgICAgICAgICAgICAjIHRoZXJlIGlzIHNvdXJjZSB0byBmYWxsIGJhY2sgb24uCiAgICAgICAgICAgICAgICAgaWYgc291cmNlX3RpbWVzdGFtcDoKICAgICAgICAgICAgICAgICAgICAgaWYgcHljX3RpbWVzdGFtcCA8IHNvdXJjZV90aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUiKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJ5dGVjb2RlIGlzIHN0YWxlIiwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAjIElmIHNvdXJjZSBpcyBhdmFpbGFibGUgZ2l2ZSBpdCBhIHNob3QuCiAgICAgICAgICAgICAgICAgaWYgc291cmNlX3RpbWVzdGFtcCBpcyBub3QgTm9uZToKQEAgLTI2OCwxOCArMzY2LDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcnNoYWwubG9hZHMoYnl0ZWNvZGUpCiAgICAgICAgIGVsaWYgc291cmNlX3RpbWVzdGFtcCBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHNvdXJjZSBvciBieXRlY29kZSBhdmFpbGFibGUgdG8gY3JlYXRlIGNvZGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IGZvciB7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZm9yIHswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgIyBVc2UgdGhlIHNvdXJjZS4KICAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLnNvdXJjZV9wYXRoKGZ1bGxuYW1lKQogICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgbWVzc2FnZSA9ICJhIHNvdXJjZSBwYXRoIG11c3QgZXhpc3QgdG8gbG9hZCB7MH0iLmZvcm1hdChmdWxsbmFtZSkKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPWZ1bGxuYW1lKQogICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQogICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc291cmNlLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKICAgICAgICAgIyBHZW5lcmF0ZSBieXRlY29kZSBhbmQgd3JpdGUgaXQgb3V0LgogICAgICAgICBpZiBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6CiAgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuX3dfbG9uZyhzb3VyY2VfdGltZXN0YW1wKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF9ib290c3RyYXAuX3dfbG9uZyhzb3VyY2VfdGltZXN0YW1wKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF9ib290c3RyYXAuX3dfbG9uZyhsZW4oc291cmNlKSAmIDB4RkZGRkZGRkYpKQogICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhKQogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5IGIvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkKaW5kZXggNTE5Nzc0NC4uZmY4MjZlNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkKKysrIGIvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkKQEAgLTEsNSArMSwyMCBAQAogIiIiVGhlIG1hY2hpbmVyeSBvZiBpbXBvcnRsaWI6IGZpbmRlcnMsIGxvYWRlcnMsIGhvb2tzLCBldGMuIiIiCiAKK2ltcG9ydCBfaW1wCisKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IChTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRVhURU5TSU9OX1NVRkZJWEVTKQogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgQnVpbHRpbkltcG9ydGVyCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGcm96ZW5JbXBvcnRlcgorZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgV2luZG93c1JlZ2lzdHJ5RmluZGVyCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBQYXRoRmluZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGaWxlRmluZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VsZXNzRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRXh0ZW5zaW9uRmlsZUxvYWRlcgorCisKK2RlZiBhbGxfc3VmZml4ZXMoKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcmVjb2duaXplZCBtb2R1bGUgc3VmZml4ZXMgZm9yIHRoaXMgcHJvY2VzcyIiIgorICAgIHJldHVybiBTT1VSQ0VfU1VGRklYRVMgKyBCWVRFQ09ERV9TVUZGSVhFUyArIEVYVEVOU0lPTl9TVUZGSVhFUwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlY2M1M2QuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIiIiUnVuIGltcG9ydGxpYidzIHRlc3Qgc3VpdGUuCi0KLVNwZWNpZnlpbmcgdGhlIGBgLS1idWlsdGluYGAgZmxhZyB3aWxsIHJ1biB0ZXN0cywgd2hlcmUgYXBwbGljYWJsZSwgd2l0aAotYnVpbHRpbnMuX19pbXBvcnRfXyBpbnN0ZWFkIG9mIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdXRpbAotaW1wb3J0IG9zLnBhdGgKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBpZiAnX19weWNhY2hlX18nIGluIF9fZmlsZV9fOgotICAgICAgICBwYXJ0cyA9IF9fZmlsZV9fLnNwbGl0KG9zLnBhdGguc2VwKQotICAgICAgICBzdGFydF9kaXIgPSBzZXAuam9pbihwYXJ0c1s6LTJdKQotICAgIGVsc2U6Ci0gICAgICAgIHN0YXJ0X2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICB0b3BfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShzdGFydF9kaXIpKQotICAgIHRlc3RfbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgaWYgJy0tYnVpbHRpbicgaW4gc3lzLmFyZ3Y6Ci0gICAgICAgIHV0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKLSAgICBydW5fdW5pdHRlc3QodGVzdF9sb2FkZXIuZGlzY292ZXIoc3RhcnRfZGlyLCB0b3BfbGV2ZWxfZGlyPXRvcF9kaXIpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvYmVuY2htYXJrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRlNmM2Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotIiIiQmVuY2htYXJrIHNvbWUgYmFzaWMgaW1wb3J0IHVzZS1jYXNlcy4KLQotVGhlIGFzc3VtcHRpb24gaXMgbWFkZSB0aGF0IHRoaXMgYmVuY2htYXJrIGlzIHJ1biBpbiBhIGZyZXNoIGludGVycHJldGVyIGFuZAotdGh1cyBoYXMgbm8gZXh0ZXJuYWwgY2hhbmdlcyBtYWRlIHRvIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMgaW4gc3lzLgotCi0iIiIKLWZyb20gLiBpbXBvcnQgdXRpbAotZnJvbSAuc291cmNlIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1pbXBvcnQgZGVjaW1hbAotaW1wb3J0IGltcAotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IG9zCi1pbXBvcnQgcHlfY29tcGlsZQotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWVpdAotCi0KLWRlZiBiZW5jaChuYW1lLCBjbGVhbnVwPWxhbWJkYTogTm9uZSwgKiwgc2Vjb25kcz0xLCByZXBlYXQ9Myk6Ci0gICAgIiIiQmVuY2ggdGhlIGdpdmVuIHN0YXRlbWVudCBhcyBtYW55IHRpbWVzIGFzIG5lY2Vzc2FyeSB1bnRpbCB0b3RhbAotICAgIGV4ZWN1dGlvbnMgdGFrZSBvbmUgc2Vjb25kLiIiIgotICAgIHN0bXQgPSAiX19pbXBvcnRfXyh7IXJ9KSIuZm9ybWF0KG5hbWUpCi0gICAgdGltZXIgPSB0aW1laXQuVGltZXIoc3RtdCkKLSAgICBmb3IgeCBpbiByYW5nZShyZXBlYXQpOgotICAgICAgICB0b3RhbF90aW1lID0gMAotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgd2hpbGUgdG90YWxfdGltZSA8IHNlY29uZHM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdG90YWxfdGltZSArPSB0aW1lci50aW1laXQoMSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xlYW51cCgpCi0gICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9uZSBleGVjdXRpb24gdG9vIGZhcgotICAgICAgICAgICAgaWYgdG90YWxfdGltZSA+IHNlY29uZHM6Ci0gICAgICAgICAgICAgICAgY291bnQgLT0gMQotICAgICAgICB5aWVsZCBjb3VudCAvLyBzZWNvbmRzCi0KLWRlZiBmcm9tX2NhY2hlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIic3lzLm1vZHVsZXMiIiIKLSAgICBuYW1lID0gJzxiZW5jaG1hcmsgaW1wb3J0PicKLSAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQotICAgIG1vZHVsZS5fX2ZpbGVfXyA9ICc8dGVzdD4nCi0gICAgbW9kdWxlLl9fcGFja2FnZV9fID0gJycKLSAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIGJ1aWx0aW5fbW9kKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiQnVpbHQtaW4gbW9kdWxlIiIiCi0gICAgbmFtZSA9ICdlcnJubycKLSAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KLSAgICAjIFJlbHlpbmcgb24gYnVpbHQtaW4gaW1wb3J0ZXIgYmVpbmcgaW1wbGljaXQuCi0gICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBzb3VyY2Vfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJTb3VyY2Ugdy9vIGJ5dGVjb2RlOiBzaW1wbGUiIiIKLSAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKLSAgICAgICAgIyBDbGVhcnMgb3V0IHN5cy5tb2R1bGVzIGFuZCBwdXRzIGFuIGVudHJ5IGF0IHRoZSBmcm9udCBvZiBzeXMucGF0aC4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKLQotCi1kZWYgZGVjaW1hbF93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IGRlY2ltYWwiIiIKLSAgICBuYW1lID0gJ2RlY2ltYWwnCi0gICAgZGVjaW1hbF9ieXRlY29kZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShkZWNpbWFsLl9fZmlsZV9fKQotICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlY2ltYWxfYnl0ZWNvZGUpOgotICAgICAgICBvcy51bmxpbmsoZGVjaW1hbF9ieXRlY29kZSkKLSAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKLQotCi1kZWYgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJTb3VyY2Ugd3JpdGluZyBieXRlY29kZTogc2ltcGxlIiIiCi0gICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKLSAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKLSAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBkZWNpbWFsIiIiCi0gICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBkZWYgY2xlYW51cCgpOgotICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKLSAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShkZWNpbWFsLl9fZmlsZV9fKSkKLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGNsZWFudXAsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJCeXRlY29kZSB3LyBzb3VyY2U6IHNpbXBsZSIiIgotICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKLSAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nW25hbWVdKQotICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgZGVjaW1hbF91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIkJ5dGVjb2RlIHcvIHNvdXJjZTogZGVjaW1hbCIiIgotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBweV9jb21waWxlLmNvbXBpbGUoZGVjaW1hbC5fX2ZpbGVfXykKLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIG1haW4oaW1wb3J0Xyk6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRfCi0gICAgYmVuY2htYXJrcyA9IChmcm9tX2NhY2hlLCBidWlsdGluX21vZCwKLSAgICAgICAgICAgICAgICAgIHNvdXJjZV91c2luZ19ieXRlY29kZSwgc291cmNlX3dvX2J5dGVjb2RlLAotICAgICAgICAgICAgICAgICAgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlLCBkZWNpbWFsX3dyaXRpbmdfYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBkZWNpbWFsX3dvX2J5dGVjb2RlLCkKLSAgICBzZWNvbmRzID0gMQotICAgIHNlY29uZHNfcGx1cmFsID0gJ3MnIGlmIHNlY29uZHMgPiAxIGVsc2UgJycKLSAgICByZXBlYXQgPSAzCi0gICAgaGVhZGVyID0gIk1lYXN1cmluZyBpbXBvcnRzL3NlY29uZCBvdmVyIHt9IHNlY29uZHt9LCBiZXN0IG91dCBvZiB7fVxuIgotICAgIHByaW50KGhlYWRlci5mb3JtYXQoc2Vjb25kcywgc2Vjb25kc19wbHVyYWwsIHJlcGVhdCkpCi0gICAgZm9yIGJlbmNobWFyayBpbiBiZW5jaG1hcmtzOgotICAgICAgICBwcmludChiZW5jaG1hcmsuX19kb2NfXywgIlsiLCBlbmQ9JyAnKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2htYXJrKHNlY29uZHM9c2Vjb25kcywgcmVwZWF0PXJlcGVhdCk6Ci0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpCi0gICAgICAgICAgICBwcmludChyZXN1bHQsIGVuZD0nICcpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgICAgICBwcmludCgiXSIsICJiZXN0IGlzIiwgZm9ybWF0KG1heChyZXN1bHRzKSwgJyxkJykpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgb3B0cGFyc2UKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywgJy0tYnVpbHRpbicsIGRlc3Q9J2J1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0idXNlIHRoZSBidWlsdC1pbiBfX2ltcG9ydF9fIikKLSAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGlmIGFyZ3M6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidW5yZWNvZ25pemVkIGFyZ3M6IHt9Ii5mb3JtYXQoYXJncykpCi0gICAgaW1wb3J0XyA9IF9faW1wb3J0X18KLSAgICBpZiBub3Qgb3B0aW9ucy5idWlsdGluOgotICAgICAgICBpbXBvcnRfID0gaW1wb3J0bGliLl9faW1wb3J0X18KLQotICAgIG1haW4oaW1wb3J0XykKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWM1ODQwLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZXh0ZW5zaW9uJywgZGlyZWN0b3J5KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE3ODNkYi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAotZnJvbSAuLiBpbXBvcnQgYWJjCi1mcm9tIC4uIGltcG9ydCB1dGlsCi0KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6Ci0KLSAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgotCi0gICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCi0gICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCi0KLSAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgZXh0X3V0aWwuTkFNRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBleHRfdXRpbC5GSUxFUEFUSCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19wYWNrYWdlX18nLCAnJyldOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHRfdXRpbC5OQU1FIGluIHN5cy5tb2R1bGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9kdWxlLl9fbG9hZGVyX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaWxlTG9hZGVyKSkKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9ucyBhcmUgbm90IGZvdW5kIGluIHBhY2thZ2VzLgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb25zIGFyZSBub3QgZm91bmQgaW4gcGFja2FnZXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoZXh0X3V0aWwuTkFNRSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUxIGlzIG1vZHVsZTIpCi0KLSAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIE5vIGVhc3kgd2F5IHRvIHRyaWdnZXIgYSBmYWlsdXJlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbXBvcnQuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgotICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnYXNkZmprbDsnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KExvYWRlclRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTQ1ZWViLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZnJvemVuJywgZGlyZWN0b3J5KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGY3NjYxLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Ci1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZGVmIHRlc3Rfc3VpdGUoKToKLSAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmltcG9ydF8nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNzVkNDIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEFQSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCBBUEktc3BlY2lmaWMgZGV0YWlscyBmb3IgX19pbXBvcnRfXyAoZS5nLiByYWlzaW5nIHRoZSByaWdodAotICAgIGV4Y2VwdGlvbiB3aGVuIHBhc3NpbmcgaW4gYW4gaW50IGZvciB0aGUgbW9kdWxlIG5hbWUpLiIiIgotCi0gICAgZGVmIHRlc3RfbmFtZV9yZXF1aXJlc19ycGFyaXRpb24oc2VsZik6Ci0gICAgICAgICMgUmFpc2UgVHlwZUVycm9yIGlmIGEgbm9uLXN0cmluZyBpcyBwYXNzZWQgaW4gZm9yIHRoZSBtb2R1bGUgbmFtZS4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgdXRpbC5pbXBvcnRfKDQyKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KEFQSVRlc3QpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWRjMzIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW1wb3J0bGliCi0KLQotY2xhc3MgUGFyZW50TW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiSW1wb3J0aW5nIGEgc3VibW9kdWxlIHNob3VsZCBpbXBvcnQgdGhlIHBhcmVudCBtb2R1bGVzLiIiIgotCi0gICAgZGVmIHRlc3RfaW1wb3J0X3BhcmVudChzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3BrZycgaW4gc3lzLm1vZHVsZXMpCi0KLSAgICBkZWYgdGVzdF9iYWRfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cubW9kdWxlJykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQotCi0gICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRyeSB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG5vbi1wYWNrYWdlIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgJ19fcGF0aF9fJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMubm9fc3VibW9kdWxlc19oZXJlJykKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChQYXJlbnRNb2R1bGVUZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYWEyMzEuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Ci1mcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3RzIGZvciBQYXRoRmluZGVyLiIiIgotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IE5vbmUgcmV0dXJuZWQgdXBvbiBub3QgZmluZGluZyBhIHN1aXRhYmxlIGZpbmRlci4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9zeXNfcGF0aChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGggaXMgdXNlZCB3aGVuICdwYXRoJyBpcyBOb25lLgotICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyB1c2VkLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KLSAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgdXNlZC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2hvb2tzKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aF9ob29rcyBpcyB1c2VkLgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyBzZXQuCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaG9va3M9W2hvb2tdKToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdIGlzIGltcG9ydGVyKQotCi0gICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9oYXNfTm9uZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgaWYgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaGFzIE5vbmUgdGhhdCBOb25lIGlzIHJldHVybmVkLgotICAgICAgICBjbGVhcl9jYWNoZSA9IHtwYXRoOiBOb25lIGZvciBwYXRoIGluIHN5cy5wYXRofQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9Y2xlYXJfY2FjaGUpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhc3luY2hhdCcsICdzeXMnLCAnPHRlc3QgbW9kdWxlPicpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShuYW1lKSBpcyBOb25lKQotCi0gICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9oYXNfTm9uZV9jb250aW51ZXMoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGhhdmluZyBOb25lIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGNhdXNlcyB0aGUgc2VhcmNoIHRvCi0gICAgICAgICMgY29udGludWUuCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVsnMScsICcyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9pbXBvcnRlcl9jYWNoZT17JzEnOiBOb25lLCAnMic6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotCi0KLQotY2xhc3MgRGVmYXVsdFBhdGhGaW5kZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci4iIiIKLQotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2hvb2tzKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB0aGUgaW1wbGljaXQgcGF0aCBob29rcyBhcmUgdXNlZC4KLSAgICAgICAgYmFkX3BhdGggPSAnPHBhdGg+JwotICAgICAgICBtb2R1bGUgPSAnPG1vZHVsZT4nCi0gICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoYmFkX3BhdGgpCi0gICAgICAgIGV4aXN0aW5nX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgICAgIG5vdGhpbmcgPSBfYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W2V4aXN0aW5nX3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4aXN0aW5nX3BhdGggaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNpbnN0YW5jZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtleGlzdGluZ19wYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcC5OdWxsSW1wb3J0ZXIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHQpCi0gICAgICAgICAgICAgICAgbm90aGluZyA9IF9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W2JhZF9wYXRoXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90aGluZyBpcyBOb25lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYWRfcGF0aCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtiYWRfcGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wLk51bGxJbXBvcnRlcikpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5ybWRpcihleGlzdGluZ19wYXRoKQotCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB0aGUgZGVmYXVsdCBob29rIGlzIHVzZWQgd2hlbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgICAgICAjIGNvbnRhaW5zIE5vbmUgZm9yIGEgcGF0aC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICAjIFhYWCBOb3QgYmxhY2tib3guCi0gICAgICAgIG9yaWdpbmFsX2hvb2sgPSBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSwotICAgICAgICBtb2NrX2hvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKLSAgICAgICAgX2Jvb3RzdHJhcC5fREVGQVVMVF9QQVRIX0hPT0sgPSBtb2NrX2hvb2sKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBOb25lfSk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fRGVmYXVsdFBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgX2Jvb3RzdHJhcC5fREVGQVVMVF9QQVRIX0hPT0sgPSBvcmlnaW5hbF9ob29rCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoRmluZGVyVGVzdHMsIERlZmF1bHRQYXRoRmluZGVyVGVzdHMpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEwM2FlNy4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvcmVncnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0iIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KLQotVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKLWludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KLU90aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCi10aGlzIHNjcmlwdC4KLQotWFhYIEZBSUxJTkcKLSAgKiB0ZXN0X2ltcG9ydAotICAgIC0gdGVzdF9pbmNvcnJlY3RfY29kZV9uYW1lCi0gICAgICAgIGZpbGUgbmFtZSBkaWZmZXJpbmcgYmV0d2VlbiBfX2ZpbGVfXyBhbmQgY29fZmlsZW5hbWUgKHI2ODM2MCBvbiB0cnVuaykKLSAgICAtIHRlc3RfaW1wb3J0X2J5X2ZpbGVuYW1lCi0gICAgICAgIGV4Y2VwdGlvbiBmb3IgdHJ5aW5nIHRvIGltcG9ydCBieSBmaWxlIG5hbWUgZG9lcyBub3QgbWF0Y2gKLQotIiIiCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotCi0gICAgZXhjbHVkZSA9IFsnLS1leGNsdWRlJywKLSAgICAgICAgICAgICAgICAndGVzdF9mcm96ZW4nLCAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICd0ZXN0X3BrZycsICAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICd0ZXN0X3B5ZG9jJywgIyBEb2VzIG5vdCBleHBlY3QgX19sb2FkZXJfXyBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgXQotCi0gICAgIyBTd2l0Y2hpbmcgb24gLS1leGNsdWRlIGltcGxpZXMgcnVubmluZyBhbGwgdGVzdCBidXQgdGhlIG9uZXMgbGlzdGVkLCBzbwotICAgICMgb25seSB1c2UgaXQgd2hlbiBvbmUgaXMgbm90IHJ1bm5pbmcgYW4gZXhwbGljaXQgdGVzdAotICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKLSAgICAgICAgIyBObyBwcm9ncmFtbWF0aWMgd2F5IHRvIHNwZWNpZnkgdGVzdHMgdG8gZXhjbHVkZQotICAgICAgICBzeXMuYXJndi5leHRlbmQoZXhjbHVkZSkKLQotICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzRmN2I2Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBQYXRoSG9va1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCB0aGUgcGF0aCBob29rIGZvciBzb3VyY2UuIiIiCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihfYm9vdHN0cmFwLl9maWxlX3BhdGhfaG9vayhtYXBwaW5nWycucm9vdCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQotCi0gICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgotICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihfYm9vdHN0cmFwLl9maWxlX3BhdGhfaG9vaygnJyksICdmaW5kX21vZHVsZScpKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFBhdGhIb29rVGVzdCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNTE2MjYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYXBpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBJbXBvcnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKLSAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKLQotICAgIGRlZiB0ZXN0X2Fic29sdXRlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZS4KLSAgICAgICAgcGtnX25hbWUgPSAncGtnJwotICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQotCi0gICAgZGVmIHRlc3Rfc2hhbGxvd19yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKLSAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB0aHJvdWdoIGEgcmVsYXRpdmUgaW1wb3J0LgotICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCi0gICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIG1vZHVsZV9uYW1lID0gJ21vZCcKLSAgICAgICAgYWJzb2x1dGVfbmFtZSA9ICd7MH0uezF9Jy5mb3JtYXQocGtnX25hbWUsIG1vZHVsZV9uYW1lKQotICAgICAgICByZWxhdGl2ZV9uYW1lID0gJy57MH0nLmZvcm1hdChtb2R1bGVfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6Ci0gICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhJykKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLi5jJywgJ2EuYicpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdhLmMnKQotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUgd2l0aAotICAgICAgICAjIHRoZSAncGFja2FnZScgYXJndW1lbnQgZ2l2ZW4uCi0gICAgICAgIHBrZ19uYW1lID0gJ3BrZycKLSAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfd29fcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBSZWxhdGl2ZSBpbXBvcnRzIGNhbm5vdCBoYXBwZW4gd2l0aG91dCB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGJlaW5nCi0gICAgICAgICMgc2V0LgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLnN1cHBvcnQnKQotCi0KLSAgICBkZWYgdGVzdF9sb2FkZWRfb25jZShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTM1OTE6IE1vZHVsZXMgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIG9uY2Ugd2hlbgotICAgICAgICAjIGluaXRpYWxpemluZyB0aGUgcGFyZW50IHBhY2thZ2UgYXR0ZW1wdHMgdG8gaW1wb3J0IHRoZQotICAgICAgICAjIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQuCi0gICAgICAgIGJfbG9hZF9jb3VudCA9IDAKLSAgICAgICAgZGVmIGxvYWRfYSgpOgotICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCi0gICAgICAgIGRlZiBsb2FkX2IoKToKLSAgICAgICAgICAgIG5vbmxvY2FsIGJfbG9hZF9jb3VudAotICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKLSAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KLSAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KEltcG9ydE1vZHVsZVRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDI0NDdmLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBzeXMKLWltcG9ydCB0eXBlcwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLiIiIgotCi0gICAgZGVmIHJldHVybl9tb2R1bGUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIobGFtYmRhIHNlbGYsIG1vZHVsZTogbW9kdWxlKQotICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG5hbWUpCi0KLSAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIG5hbWUpOgotICAgICAgICBkZWYgdG9fd3JhcChzZWxmLCBtb2R1bGUpOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLSAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcih0b193cmFwKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmeG4oc2VsZiwgbmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfbmV3X21vZHVsZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcwotICAgICAgICAjIGNyZWF0ZWQuCi0gICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGVfbmFtZSBpbiBzeXMubW9kdWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG1vZHVsZV9uYW1lKQotCi0gICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZXVzZWQgaWYgYWxyZWFkeSBpbiBzeXMubW9kdWxlcy4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ2EuYi5jJykKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dXJuZWRfbW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKLQotICAgIGRlZiB0ZXN0X25ld19tb2R1bGVfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBtb2R1bGUgaXMgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzIGlmIGFkZGVkIGJ1dCBhbgotICAgICAgICAjIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0gICAgICAgIG5hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgbm90IGluIHN5cy5tb2R1bGVzKQotCi0gICAgZGVmIHRlc3RfcmVsb2FkX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCi0gICAgICAgIG5hbWUgPSAnYS5iLmMnCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKLQotCi1jbGFzcyBTZXRQYWNrYWdlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwuc2V0X3BhY2thZ2UuIiIiCi0KLSAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSwgZXhwZWN0KToKLSAgICAgICAgIiIiVmVyaWZ5IHRoZSBtb2R1bGUgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgX19wYWNrYWdlX18gYWZ0ZXIKLSAgICAgICAgcGFzc2luZyB0aHJvdWdoIHNldF9wYWNrYWdlLiIiIgotICAgICAgICBmeG4gPSBsYW1iZGE6IG1vZHVsZQotICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCi0gICAgICAgIHdyYXBwZWQoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgbW9kdWxlLl9fcGFja2FnZV9fKQotCi0gICAgZGVmIHRlc3RfdG9wX2xldmVsKHNlbGYpOgotICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBhIHRvcC1sZXZlbCBtb2R1bGUuCi0gICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgc2V0IHRvIE5vbmUuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2R1bGUnKQotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCi0gICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCi0KLSAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRlc3Qgc2V0dGluZyBfX3BhY2thZ2VfXyBmb3IgYSBwYWNrYWdlLgotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnJykKLSAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gWyc8cGF0aD4nXQotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCi0gICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCi0KLSAgICBkZWYgdGVzdF9zdWJtb2R1bGUoc2VsZik6Ci0gICAgICAgICMgVGVzdCBfX3BhY2thZ2VfXyBmb3IgYSBtb2R1bGUgaW4gYSBwYWNrYWdlLgotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnLm1vZCcpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKLQotICAgIGRlZiB0ZXN0X3NldHRpbmdfaWZfbWlzc2luZyhzZWxmKToKLSAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IGlmIGl0IGlzIG1pc3NpbmcuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQotICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJyk6Ci0gICAgICAgICAgICBkZWxhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKLQotICAgIGRlZiB0ZXN0X2xlYXZpbmdfYWxvbmUoc2VsZik6Ci0gICAgICAgICMgSWYgX19wYWNrYWdlX18gaXMgc2V0IGFuZCBub3QgTm9uZSB0aGVuIGxlYXZlIGl0IGFsb25lLgotICAgICAgICBmb3IgdmFsdWUgaW4gKFRydWUsIEZhbHNlKToKLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQotICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gdmFsdWUKLSAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgdmFsdWUpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZUZvckxvYWRlclRlc3RzLCBTZXRQYWNrYWdlVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IDdiNDRmYTEuLjEzMTY0MzcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKQEAgLTMsMyArMywxOSBAQAogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgbW9kdWxlX2Zvcl9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNldF9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNldF9wYWNrYWdlCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfcmVzb2x2ZV9uYW1lCisKKworZGVmIHJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJy4nKToKKyAgICAgICAgcmV0dXJuIG5hbWUKKyAgICBlbGlmIG5vdCBwYWNrYWdlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHJlbGF0aXZlIG5hbWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICcobm8gbGVhZGluZyBkb3QpJy5mb3JtYXQobmFtZSkpCisgICAgbGV2ZWwgPSAwCisgICAgZm9yIGNoYXJhY3RlciBpbiBuYW1lOgorICAgICAgICBpZiBjaGFyYWN0ZXIgIT0gJy4nOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbGV2ZWwgKz0gMQorICAgIHJldHVybiBfcmVzb2x2ZV9uYW1lKG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwgbGV2ZWwpCmRpZmYgLS1naXQgYS9MaWIvaW5zcGVjdC5weSBiL0xpYi9pbnNwZWN0LnB5CmluZGV4IDIwMzE3NTUuLjg4ZjBlZTIgMTAwNjQ0Ci0tLSBhL0xpYi9pbnNwZWN0LnB5CisrKyBiL0xpYi9pbnNwZWN0LnB5CkBAIC0yMiwyNCArMjIsMjkgQEAKICAgICBnZXRvdXRlcmZyYW1lcygpLCBnZXRpbm5lcmZyYW1lcygpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzCiAgICAgY3VycmVudGZyYW1lKCkgLSBnZXQgdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUKICAgICBzdGFjaygpLCB0cmFjZSgpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzIG9uIHRoZSBzdGFjayBvciBpbiBhIHRyYWNlYmFjaworCisgICAgc2lnbmF0dXJlKCkgLSBnZXQgYSBTaWduYXR1cmUgb2JqZWN0IGZvciB0aGUgY2FsbGFibGUKICIiIgogCiAjIFRoaXMgbW9kdWxlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLiAgTm8gd2FycmFudGllcy4KIAotX19hdXRob3JfXyA9ICdLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPicKLV9fZGF0ZV9fID0gJzEgSmFuIDIwMDEnCitfX2F1dGhvcl9fID0gKCdLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPicsCisgICAgICAgICAgICAgICdZdXJ5IFNlbGl2YW5vdiA8eXNlbGl2YW5vdkBzcHJ5bWl4LmNvbT4nKQogCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCB0eXBlcwotaW1wb3J0IGl0ZXJ0b29scwotaW1wb3J0IHN0cmluZwotaW1wb3J0IHJlCiBpbXBvcnQgaW1wCi1pbXBvcnQgdG9rZW5pemUKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHRva2VuaXplCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB3YXJuaW5ncworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGJ1aWx0aW5zCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBhdHRyZ2V0dGVyCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLCBPcmRlcmVkRGljdAogCiAjIENyZWF0ZSBjb25zdGFudHMgZm9yIHRoZSBjb21waWxlciBmbGFncyBpbiBJbmNsdWRlL2NvZGUuaAogIyBXZSB0cnkgdG8gZ2V0IHRoZW0gZnJvbSBkaXMgdG8gYXZvaWQgZHVwbGljYXRpb24sIGJ1dCBmYWxsCkBAIC00MzMsNiArNDM4LDggQEAKIAogZGVmIGdldG1vZHVsZWluZm8ocGF0aCk6CiAgICAgIiIiR2V0IHRoZSBtb2R1bGUgbmFtZSwgc3VmZml4LCBtb2RlLCBhbmQgbW9kdWxlIHR5cGUgZm9yIGEgZ2l2ZW4gZmlsZS4iIiIKKyAgICB3YXJuaW5ncy53YXJuKCdpbnNwZWN0LmdldG1vZHVsZWluZm8oKSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgMikKICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKICAgICBzdWZmaXhlcyA9IFsoLWxlbihzdWZmaXgpLCBzdWZmaXgsIG1vZGUsIG10eXBlKQogICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCldCkBAIC00NDMsMjAgKzQ1MCwyOSBAQAogCiBkZWYgZ2V0bW9kdWxlbmFtZShwYXRoKToKICAgICAiIiJSZXR1cm4gdGhlIG1vZHVsZSBuYW1lIGZvciBhIGdpdmVuIGZpbGUsIG9yIE5vbmUuIiIiCi0gICAgaW5mbyA9IGdldG1vZHVsZWluZm8ocGF0aCkKLSAgICBpZiBpbmZvOiByZXR1cm4gaW5mb1swXQorICAgIGZuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQorICAgICMgQ2hlY2sgZm9yIHBhdGhzIHRoYXQgbG9vayBsaWtlIGFuIGFjdHVhbCBtb2R1bGUgZmlsZQorICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpXQorICAgIHN1ZmZpeGVzLnNvcnQoKSAjIHRyeSBsb25nZXN0IHN1ZmZpeGVzIGZpcnN0LCBpbiBjYXNlIHRoZXkgb3ZlcmxhcAorICAgIGZvciBuZWdsZW4sIHN1ZmZpeCBpbiBzdWZmaXhlczoKKyAgICAgICAgaWYgZm5hbWUuZW5kc3dpdGgoc3VmZml4KToKKyAgICAgICAgICAgIHJldHVybiBmbmFtZVs6bmVnbGVuXQorICAgIHJldHVybiBOb25lCiAKIGRlZiBnZXRzb3VyY2VmaWxlKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRoZSBmaWxlbmFtZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGxvY2F0ZSBhbiBvYmplY3QncyBzb3VyY2UuCiAgICAgUmV0dXJuIE5vbmUgaWYgbm8gd2F5IGNhbiBiZSBpZGVudGlmaWVkIHRvIGdldCB0aGUgc291cmNlLgogICAgICIiIgogICAgIGZpbGVuYW1lID0gZ2V0ZmlsZShvYmplY3QpCi0gICAgaWYgZmlsZW5hbWVbLTQ6XS5sb3dlcigpIGluICgnLnB5YycsICcucHlvJyk6Ci0gICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi00XSArICcucHknCi0gICAgZm9yIHN1ZmZpeCwgbW9kZSwga2luZCBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCk6Ci0gICAgICAgIGlmICdiJyBpbiBtb2RlIGFuZCBmaWxlbmFtZVstbGVuKHN1ZmZpeCk6XS5sb3dlcigpID09IHN1ZmZpeDoKLSAgICAgICAgICAgICMgTG9va3MgbGlrZSBhIGJpbmFyeSBmaWxlLiAgV2Ugd2FudCB0byBvbmx5IHJldHVybiBhIHRleHQgZmlsZS4KLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgYWxsX2J5dGVjb2RlX3N1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5ERUJVR19CWVRFQ09ERV9TVUZGSVhFU1s6XQorICAgIGFsbF9ieXRlY29kZV9zdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5Lk9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU1s6XQorICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aChzKSBmb3IgcyBpbiBhbGxfYnl0ZWNvZGVfc3VmZml4ZXMpOgorICAgICAgICBmaWxlbmFtZSA9IChvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzBdKQorICAgIGVsaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluCisgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKToKKyAgICAgICAgcmV0dXJuIE5vbmUKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgIHJldHVybiBmaWxlbmFtZQogICAgICMgb25seSByZXR1cm4gYSBub24tZXhpc3RlbnQgZmlsZW5hbWUgaWYgdGhlIG1vZHVsZSBoYXMgYSBQRVAgMzAyIGxvYWRlcgpAQCAtOTMxLDYgKzk0Nyw0MyBAQAogICAgICAgICBzcGVjcy5hcHBlbmQoZm9ybWF0dmFya3codmFya3cpICsgZm9ybWF0dmFsdWUobG9jYWxzW3Zhcmt3XSkpCiAgICAgcmV0dXJuICcoJyArICcsICcuam9pbihzcGVjcykgKyAnKScKIAorZGVmIF9taXNzaW5nX2FyZ3VtZW50cyhmX25hbWUsIGFyZ25hbWVzLCBwb3MsIHZhbHVlcyk6CisgICAgbmFtZXMgPSBbcmVwcihuYW1lKSBmb3IgbmFtZSBpbiBhcmduYW1lcyBpZiBuYW1lIG5vdCBpbiB2YWx1ZXNdCisgICAgbWlzc2luZyA9IGxlbihuYW1lcykKKyAgICBpZiBtaXNzaW5nID09IDE6CisgICAgICAgIHMgPSBuYW1lc1swXQorICAgIGVsaWYgbWlzc2luZyA9PSAyOgorICAgICAgICBzID0gInt9IGFuZCB7fSIuZm9ybWF0KCpuYW1lcykKKyAgICBlbHNlOgorICAgICAgICB0YWlsID0gIiwge30gYW5kIHt9Ii5mb3JtYXQobmFtZXNbLTI6XSkKKyAgICAgICAgZGVsIG5hbWVzWy0yOl0KKyAgICAgICAgcyA9ICIsICIuam9pbihuYW1lcykgKyB0YWlsCisgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIG1pc3NpbmcgJWkgcmVxdWlyZWQgJXMgYXJndW1lbnQlczogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgbWlzc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCIgaWYgcG9zIGVsc2UgImtleXdvcmQtb25seSIsCisgICAgICAgICAgICAgICAgICAgICAgIiIgaWYgbWlzc2luZyA9PSAxIGVsc2UgInMiLCBzKSkKKworZGVmIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seSwgdmFyYXJncywgZGVmY291bnQsIGdpdmVuLCB2YWx1ZXMpOgorICAgIGF0bGVhc3QgPSBsZW4oYXJncykgLSBkZWZjb3VudAorICAgIGt3b25seV9naXZlbiA9IGxlbihbYXJnIGZvciBhcmcgaW4ga3dvbmx5IGlmIGFyZyBpbiB2YWx1ZXNdKQorICAgIGlmIHZhcmFyZ3M6CisgICAgICAgIHBsdXJhbCA9IGF0bGVhc3QgIT0gMQorICAgICAgICBzaWcgPSAiYXQgbGVhc3QgJWQiICUgKGF0bGVhc3QsKQorICAgIGVsaWYgZGVmY291bnQ6CisgICAgICAgIHBsdXJhbCA9IFRydWUKKyAgICAgICAgc2lnID0gImZyb20gJWQgdG8gJWQiICUgKGF0bGVhc3QsIGxlbihhcmdzKSkKKyAgICBlbHNlOgorICAgICAgICBwbHVyYWwgPSBsZW4oYXJncykgIT0gMQorICAgICAgICBzaWcgPSBzdHIobGVuKGFyZ3MpKQorICAgIGt3b25seV9zaWcgPSAiIgorICAgIGlmIGt3b25seV9naXZlbjoKKyAgICAgICAgbXNnID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiCisgICAgICAgIGt3b25seV9zaWcgPSAobXNnICUgKCJzIiBpZiBnaXZlbiAhPSAxIGVsc2UgIiIsIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIGlmIGt3b25seV9naXZlbiAhPSAxIGVsc2UgIiIpKQorICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSB0YWtlcyAlcyBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJXMgJXMgZ2l2ZW4iICUKKyAgICAgICAgICAgIChmX25hbWUsIHNpZywgInMiIGlmIHBsdXJhbCBlbHNlICIiLCBnaXZlbiwga3dvbmx5X3NpZywKKyAgICAgICAgICAgICAid2FzIiBpZiBnaXZlbiA9PSAxIGFuZCBub3Qga3dvbmx5X2dpdmVuIGVsc2UgIndlcmUiKSkKKwogZGVmIGdldGNhbGxhcmdzKGZ1bmMsICpwb3NpdGlvbmFsLCAqKm5hbWVkKToKICAgICAiIiJHZXQgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzIHRvIHZhbHVlcy4KIApAQCAtOTQyLDY2ICs5OTUsMTA4IEBACiAgICAgZl9uYW1lID0gZnVuYy5fX25hbWVfXwogICAgIGFyZzJ2YWx1ZSA9IHt9CiAKKwogICAgIGlmIGlzbWV0aG9kKGZ1bmMpIGFuZCBmdW5jLl9fc2VsZl9fIGlzIG5vdCBOb25lOgogICAgICAgICAjIGltcGxpY2l0ICdzZWxmJyAob3IgJ2NscycgZm9yIGNsYXNzbWV0aG9kcykgYXJndW1lbnQKICAgICAgICAgcG9zaXRpb25hbCA9IChmdW5jLl9fc2VsZl9fLCkgKyBwb3NpdGlvbmFsCiAgICAgbnVtX3BvcyA9IGxlbihwb3NpdGlvbmFsKQotICAgIG51bV90b3RhbCA9IG51bV9wb3MgKyBsZW4obmFtZWQpCiAgICAgbnVtX2FyZ3MgPSBsZW4oYXJncykKICAgICBudW1fZGVmYXVsdHMgPSBsZW4oZGVmYXVsdHMpIGlmIGRlZmF1bHRzIGVsc2UgMAotICAgIGZvciBhcmcsIHZhbHVlIGluIHppcChhcmdzLCBwb3NpdGlvbmFsKToKLSAgICAgICAgYXJnMnZhbHVlW2FyZ10gPSB2YWx1ZQotICAgIGlmIHZhcmFyZ3M6Ci0gICAgICAgIGlmIG51bV9wb3MgPiBudW1fYXJnczoKLSAgICAgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9IHBvc2l0aW9uYWxbLShudW1fcG9zLW51bV9hcmdzKTpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhcmcydmFsdWVbdmFyYXJnc10gPSAoKQotICAgIGVsaWYgMCA8IG51bV9hcmdzIDwgbnVtX3BvczoKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcygpIHRha2VzICVzICVkIHBvc2l0aW9uYWwgJXMgKCVkIGdpdmVuKScgJSAoCi0gICAgICAgICAgICBmX25hbWUsICdhdCBtb3N0JyBpZiBkZWZhdWx0cyBlbHNlICdleGFjdGx5JywgbnVtX2FyZ3MsCi0gICAgICAgICAgICAnYXJndW1lbnRzJyBpZiBudW1fYXJncyA+IDEgZWxzZSAnYXJndW1lbnQnLCBudW1fdG90YWwpKQotICAgIGVsaWYgbnVtX2FyZ3MgPT0gMCBhbmQgbnVtX3RvdGFsOgotICAgICAgICBpZiB2YXJrdyBvciBrd29ubHlhcmdzOgotICAgICAgICAgICAgaWYgbnVtX3BvczoKLSAgICAgICAgICAgICAgICAjIFhYWDogV2Ugc2hvdWxkIHVzZSBudW1fcG9zLCBidXQgUHl0aG9uIGFsc28gdXNlcyBudW1fdG90YWw6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcygpIHRha2VzIGV4YWN0bHkgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJWQgZ2l2ZW4pJyAlIChmX25hbWUsIG51bV90b3RhbCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbiknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBudW1fdG90YWwpKQogCi0gICAgZm9yIGFyZyBpbiBpdGVydG9vbHMuY2hhaW4oYXJncywga3dvbmx5YXJncyk6Ci0gICAgICAgIGlmIGFyZyBpbiBuYW1lZDoKLSAgICAgICAgICAgIGlmIGFyZyBpbiBhcmcydmFsdWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJyVzJyIgJSAoZl9uYW1lLCBhcmcpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhcmcydmFsdWVbYXJnXSA9IG5hbWVkLnBvcChhcmcpCi0gICAgZm9yIGt3b25seWFyZyBpbiBrd29ubHlhcmdzOgotICAgICAgICBpZiBrd29ubHlhcmcgbm90IGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBhcmcydmFsdWVba3dvbmx5YXJnXSA9IGt3b25seWRlZmF1bHRzW2t3b25seWFyZ10KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgbmVlZHMga2V5d29yZC1vbmx5IGFyZ3VtZW50ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIGt3b25seWFyZykpCi0gICAgaWYgZGVmYXVsdHM6ICAgICMgZmlsbCBpbiBhbnkgbWlzc2luZyB2YWx1ZXMgd2l0aCB0aGUgZGVmYXVsdHMKLSAgICAgICAgZm9yIGFyZywgdmFsdWUgaW4gemlwKGFyZ3NbLW51bV9kZWZhdWx0czpdLCBkZWZhdWx0cyk6Ci0gICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgICAgICBhcmcydmFsdWVbYXJnXSA9IHZhbHVlCisgICAgbiA9IG1pbihudW1fcG9zLCBudW1fYXJncykKKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgYXJnMnZhbHVlW2FyZ3NbaV1dID0gcG9zaXRpb25hbFtpXQorICAgIGlmIHZhcmFyZ3M6CisgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9IHR1cGxlKHBvc2l0aW9uYWxbbjpdKQorICAgIHBvc3NpYmxlX2t3YXJncyA9IHNldChhcmdzICsga3dvbmx5YXJncykKICAgICBpZiB2YXJrdzoKLSAgICAgICAgYXJnMnZhbHVlW3Zhcmt3XSA9IG5hbWVkCi0gICAgZWxpZiBuYW1lZDoKLSAgICAgICAgdW5leHBlY3RlZCA9IG5leHQoaXRlcihuYW1lZCkpCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICclcyciICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIHVuZXhwZWN0ZWQpKQotICAgIHVuYXNzaWduZWQgPSBudW1fYXJncyAtIGxlbihbYXJnIGZvciBhcmcgaW4gYXJncyBpZiBhcmcgaW4gYXJnMnZhbHVlXSkKLSAgICBpZiB1bmFzc2lnbmVkOgotICAgICAgICBudW1fcmVxdWlyZWQgPSBudW1fYXJncyAtIG51bV9kZWZhdWx0cwotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgJXMgJWQgJXMgKCVkIGdpdmVuKScgJSAoCi0gICAgICAgICAgICBmX25hbWUsICdhdCBsZWFzdCcgaWYgZGVmYXVsdHMgZWxzZSAnZXhhY3RseScsIG51bV9yZXF1aXJlZCwKLSAgICAgICAgICAgICdhcmd1bWVudHMnIGlmIG51bV9yZXF1aXJlZCA+IDEgZWxzZSAnYXJndW1lbnQnLCBudW1fdG90YWwpKQorICAgICAgICBhcmcydmFsdWVbdmFya3ddID0ge30KKyAgICBmb3Iga3csIHZhbHVlIGluIG5hbWVkLml0ZW1zKCk6CisgICAgICAgIGlmIGt3IG5vdCBpbiBwb3NzaWJsZV9rd2FyZ3M6CisgICAgICAgICAgICBpZiBub3QgdmFya3c6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3cpKQorICAgICAgICAgICAgYXJnMnZhbHVlW3Zhcmt3XVtrd10gPSB2YWx1ZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYga3cgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICVyIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3cpKQorICAgICAgICBhcmcydmFsdWVba3ddID0gdmFsdWUKKyAgICBpZiBudW1fcG9zID4gbnVtX2FyZ3MgYW5kIG5vdCB2YXJhcmdzOgorICAgICAgICBfdG9vX21hbnkoZl9uYW1lLCBhcmdzLCBrd29ubHlhcmdzLCB2YXJhcmdzLCBudW1fZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgbnVtX3BvcywgYXJnMnZhbHVlKQorICAgIGlmIG51bV9wb3MgPCBudW1fYXJnczoKKyAgICAgICAgcmVxID0gYXJnc1s6bnVtX2FyZ3MgLSBudW1fZGVmYXVsdHNdCisgICAgICAgIGZvciBhcmcgaW4gcmVxOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBhcmcydmFsdWU6CisgICAgICAgICAgICAgICAgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgcmVxLCBUcnVlLCBhcmcydmFsdWUpCisgICAgICAgIGZvciBpLCBhcmcgaW4gZW51bWVyYXRlKGFyZ3NbbnVtX2FyZ3MgLSBudW1fZGVmYXVsdHM6XSk6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgICAgICBhcmcydmFsdWVbYXJnXSA9IGRlZmF1bHRzW2ldCisgICAgbWlzc2luZyA9IDAKKyAgICBmb3Iga3dhcmcgaW4ga3dvbmx5YXJnczoKKyAgICAgICAgaWYga3dhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgIGlmIGt3YXJnIGluIGt3b25seWRlZmF1bHRzOgorICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVtrd2FyZ10gPSBrd29ubHlkZWZhdWx0c1trd2FyZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWlzc2luZyArPSAxCisgICAgaWYgbWlzc2luZzoKKyAgICAgICAgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwga3dvbmx5YXJncywgRmFsc2UsIGFyZzJ2YWx1ZSkKICAgICByZXR1cm4gYXJnMnZhbHVlCiAKK0Nsb3N1cmVWYXJzID0gbmFtZWR0dXBsZSgnQ2xvc3VyZVZhcnMnLCAnbm9ubG9jYWxzIGdsb2JhbHMgYnVpbHRpbnMgdW5ib3VuZCcpCisKK2RlZiBnZXRjbG9zdXJldmFycyhmdW5jKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIG1hcHBpbmcgb2YgZnJlZSB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCisKKyAgICBSZXR1cm5zIGEgbmFtZWQgdHVwbGUgb2YgZGljdHMgbWFwcGluZyB0aGUgY3VycmVudCBub25sb2NhbCwgZ2xvYmFsCisgICAgYW5kIGJ1aWx0aW4gcmVmZXJlbmNlcyBhcyBzZWVuIGJ5IHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbi4gQSBmaW5hbAorICAgIHNldCBvZiB1bmJvdW5kIG5hbWVzIHRoYXQgY291bGQgbm90IGJlIHJlc29sdmVkIGlzIGFsc28gcHJvdmlkZWQuCisgICAgIiIiCisKKyAgICBpZiBpc21ldGhvZChmdW5jKToKKyAgICAgICAgZnVuYyA9IGZ1bmMuX19mdW5jX18KKworICAgIGlmIG5vdCBpc2Z1bmN0aW9uKGZ1bmMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIid7IXJ9JyBpcyBub3QgYSBQeXRob24gZnVuY3Rpb24iLmZvcm1hdChmdW5jKSkKKworICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgIyBOb25sb2NhbCByZWZlcmVuY2VzIGFyZSBuYW1lZCBpbiBjb19mcmVldmFycyBhbmQgcmVzb2x2ZWQKKyAgICAjIGJ5IGxvb2tpbmcgdGhlbSB1cCBpbiBfX2Nsb3N1cmVfXyBieSBwb3NpdGlvbmFsIGluZGV4CisgICAgaWYgZnVuYy5fX2Nsb3N1cmVfXyBpcyBOb25lOgorICAgICAgICBub25sb2NhbF92YXJzID0ge30KKyAgICBlbHNlOgorICAgICAgICBub25sb2NhbF92YXJzID0geworICAgICAgICAgICAgdmFyIDogY2VsbC5jZWxsX2NvbnRlbnRzCisgICAgICAgICAgICBmb3IgdmFyLCBjZWxsIGluIHppcChjb2RlLmNvX2ZyZWV2YXJzLCBmdW5jLl9fY2xvc3VyZV9fKQorICAgICAgIH0KKworICAgICMgR2xvYmFsIGFuZCBidWlsdGluIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX25hbWVzIGFuZCByZXNvbHZlZAorICAgICMgYnkgbG9va2luZyB0aGVtIHVwIGluIF9fZ2xvYmFsc19fIG9yIF9fYnVpbHRpbnNfXworICAgIGdsb2JhbF9ucyA9IGZ1bmMuX19nbG9iYWxzX18KKyAgICBidWlsdGluX25zID0gZ2xvYmFsX25zLmdldCgiX19idWlsdGluc19fIiwgYnVpbHRpbnMuX19kaWN0X18pCisgICAgaWYgaXNtb2R1bGUoYnVpbHRpbl9ucyk6CisgICAgICAgIGJ1aWx0aW5fbnMgPSBidWlsdGluX25zLl9fZGljdF9fCisgICAgZ2xvYmFsX3ZhcnMgPSB7fQorICAgIGJ1aWx0aW5fdmFycyA9IHt9CisgICAgdW5ib3VuZF9uYW1lcyA9IHNldCgpCisgICAgZm9yIG5hbWUgaW4gY29kZS5jb19uYW1lczoKKyAgICAgICAgaWYgbmFtZSBpbiAoIk5vbmUiLCAiVHJ1ZSIsICJGYWxzZSIpOgorICAgICAgICAgICAgIyBCZWNhdXNlIHRoZXNlIHVzZWQgdG8gYmUgYnVpbHRpbnMgaW5zdGVhZCBvZiBrZXl3b3JkcywgdGhleQorICAgICAgICAgICAgIyBtYXkgc3RpbGwgc2hvdyB1cCBhcyBuYW1lIHJlZmVyZW5jZXMuIFdlIGlnbm9yZSB0aGVtLgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2xvYmFsX3ZhcnNbbmFtZV0gPSBnbG9iYWxfbnNbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFyc1tuYW1lXSA9IGJ1aWx0aW5fbnNbbmFtZV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICB1bmJvdW5kX25hbWVzLmFkZChuYW1lKQorCisgICAgcmV0dXJuIENsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RhY2sgZnJhbWUgZXh0cmFjdGlvbgogCiBUcmFjZWJhY2sgPSBuYW1lZHR1cGxlKCdUcmFjZWJhY2snLCAnZmlsZW5hbWUgbGluZW5vIGZ1bmN0aW9uIGNvZGVfY29udGV4dCBpbmRleCcpCkBAIC0xMTcxLDYgKzEyNjYsOCBAQAogICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCiAKIAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ2VuZXJhdG9yIGludHJvc3BlY3Rpb24KKwogR0VOX0NSRUFURUQgPSAnR0VOX0NSRUFURUQnCiBHRU5fUlVOTklORyA9ICdHRU5fUlVOTklORycKIEdFTl9TVVNQRU5ERUQgPSAnR0VOX1NVU1BFTkRFRCcKQEAgLTExOTIsMyArMTI4OSw3ODUgQEAKICAgICBpZiBnZW5lcmF0b3IuZ2lfZnJhbWUuZl9sYXN0aSA9PSAtMToKICAgICAgICAgcmV0dXJuIEdFTl9DUkVBVEVECiAgICAgcmV0dXJuIEdFTl9TVVNQRU5ERUQKKworCitkZWYgZ2V0Z2VuZXJhdG9ybG9jYWxzKGdlbmVyYXRvcik6CisgICAgIiIiCisgICAgR2V0IHRoZSBtYXBwaW5nIG9mIGdlbmVyYXRvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCisKKyAgICBBIGRpY3QgaXMgcmV0dXJuZWQsIHdpdGggdGhlIGtleXMgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFuZCB2YWx1ZXMgdGhlCisgICAgYm91bmQgdmFsdWVzLiIiIgorCisgICAgaWYgbm90IGlzZ2VuZXJhdG9yKGdlbmVyYXRvcik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3shcn0nIGlzIG5vdCBhIFB5dGhvbiBnZW5lcmF0b3IiLmZvcm1hdChnZW5lcmF0b3IpKQorCisgICAgZnJhbWUgPSBnZXRhdHRyKGdlbmVyYXRvciwgImdpX2ZyYW1lIiwgTm9uZSkKKyAgICBpZiBmcmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5naV9mcmFtZS5mX2xvY2FscworICAgIGVsc2U6CisgICAgICAgIHJldHVybiB7fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdCAoUEVQIDM2MikKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitfV3JhcHBlckRlc2NyaXB0b3IgPSB0eXBlKHR5cGUuX19jYWxsX18pCitfTWV0aG9kV3JhcHBlciA9IHR5cGUoYWxsLl9fY2FsbF9fKQorCitfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMgPSAoX1dyYXBwZXJEZXNjcmlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NZXRob2RXcmFwcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkJ1aWx0aW5GdW5jdGlvblR5cGUpCisKKworZGVmIF9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChjbHMsIG1ldGhvZF9uYW1lKToKKyAgICB0cnk6CisgICAgICAgIG1ldGggPSBnZXRhdHRyKGNscywgbWV0aG9kX25hbWUpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICByZXR1cm4KKyAgICBlbHNlOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtZXRoLCBfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMpOgorICAgICAgICAgICAgIyBPbmNlICdfX3NpZ25hdHVyZV9fJyB3aWxsIGJlIGFkZGVkIHRvICdDJy1sZXZlbAorICAgICAgICAgICAgIyBjYWxsYWJsZXMsIHRoaXMgY2hlY2sgd29uJ3QgYmUgbmVjZXNzYXJ5CisgICAgICAgICAgICByZXR1cm4gbWV0aAorCisKK2RlZiBzaWduYXR1cmUob2JqKToKKyAgICAnJydHZXQgYSBzaWduYXR1cmUgb2JqZWN0IGZvciB0aGUgcGFzc2VkIGNhbGxhYmxlLicnJworCisgICAgaWYgbm90IGNhbGxhYmxlKG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QnLmZvcm1hdChvYmopKQorCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1ldGhvZFR5cGUpOgorICAgICAgICAjIEluIHRoaXMgY2FzZSB3ZSBza2lwIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgIyBmdW5jdGlvbiAodXN1YWxseSBgc2VsZmAgb3IgYGNsc2ApLgorICAgICAgICBzaWcgPSBzaWduYXR1cmUob2JqLl9fZnVuY19fKQorICAgICAgICByZXR1cm4gc2lnLnJlcGxhY2UocGFyYW1ldGVycz10dXBsZShzaWcucGFyYW1ldGVycy52YWx1ZXMoKSlbMTpdKQorCisgICAgdHJ5OgorICAgICAgICBzaWcgPSBvYmouX19zaWduYXR1cmVfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGlmIHNpZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzaWcKKworICAgIHRyeToKKyAgICAgICAgIyBXYXMgdGhpcyBmdW5jdGlvbiB3cmFwcGVkIGJ5IGEgZGVjb3JhdG9yPworICAgICAgICB3cmFwcGVkID0gb2JqLl9fd3JhcHBlZF9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSh3cmFwcGVkKQorCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkZ1bmN0aW9uVHlwZSk6CisgICAgICAgIHJldHVybiBTaWduYXR1cmUuZnJvbV9mdW5jdGlvbihvYmopCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgICAgICBzaWcgPSBzaWduYXR1cmUob2JqLmZ1bmMpCisKKyAgICAgICAgbmV3X3BhcmFtcyA9IE9yZGVyZWREaWN0KHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCkpCisKKyAgICAgICAgcGFydGlhbF9hcmdzID0gb2JqLmFyZ3Mgb3IgKCkKKyAgICAgICAgcGFydGlhbF9rZXl3b3JkcyA9IG9iai5rZXl3b3JkcyBvciB7fQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYSA9IHNpZy5iaW5kX3BhcnRpYWwoKnBhcnRpYWxfYXJncywgKipwYXJ0aWFsX2tleXdvcmRzKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGV4OgorICAgICAgICAgICAgbXNnID0gJ3BhcnRpYWwgb2JqZWN0IHshcn0gaGFzIGluY29ycmVjdCBhcmd1bWVudHMnLmZvcm1hdChvYmopCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykgZnJvbSBleAorCisgICAgICAgIGZvciBhcmdfbmFtZSwgYXJnX3ZhbHVlIGluIGJhLmFyZ3VtZW50cy5pdGVtcygpOgorICAgICAgICAgICAgcGFyYW0gPSBuZXdfcGFyYW1zW2FyZ19uYW1lXQorICAgICAgICAgICAgaWYgYXJnX25hbWUgaW4gcGFydGlhbF9rZXl3b3JkczoKKyAgICAgICAgICAgICAgICAjIFdlIHNldCBhIG5ldyBkZWZhdWx0IHZhbHVlLCBiZWNhdXNlIHRoZSBmb2xsb3dpbmcgY29kZQorICAgICAgICAgICAgICAgICMgaXMgY29ycmVjdDoKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgID4+PiBkZWYgZm9vKGEpOiBwcmludChhKQorICAgICAgICAgICAgICAgICMgICA+Pj4gcHJpbnQocGFydGlhbChwYXJ0aWFsKGZvbywgYT0xMCksIGE9MjApKCkpCisgICAgICAgICAgICAgICAgIyAgIDIwCisgICAgICAgICAgICAgICAgIyAgID4+PiBwcmludChwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkoYT0zMCkpCisgICAgICAgICAgICAgICAgIyAgIDMwCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgU28sIHdpdGggJ3BhcnRpYWwnIG9iamVjdHMsIHBhc3NpbmcgYSBrZXl3b3JkIGFyZ3VtZW50IGlzCisgICAgICAgICAgICAgICAgIyBsaWtlIHNldHRpbmcgYSBuZXcgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFdlIGFsc28gbWFyayB0aGlzIHBhcmFtZXRlciB3aXRoICdfcGFydGlhbF9rd2FyZycKKyAgICAgICAgICAgICAgICAjIGZsYWcuICBMYXRlciwgaW4gJ19iaW5kJywgdGhlICdkZWZhdWx0JyB2YWx1ZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIgd2lsbCBiZSBhZGRlZCB0byAna3dhcmdzJywgdG8gc2ltdWxhdGUKKyAgICAgICAgICAgICAgICAjIHRoZSAnZnVuY3Rvb2xzLnBhcnRpYWwnIHJlYWwgY2FsbC4KKyAgICAgICAgICAgICAgICBuZXdfcGFyYW1zW2FyZ19uYW1lXSA9IHBhcmFtLnJlcGxhY2UoZGVmYXVsdD1hcmdfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnPVRydWUpCisKKyAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgbm90IGluIChfVkFSX0tFWVdPUkQsIF9WQVJfUE9TSVRJT05BTCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHBhcmFtLl9wYXJ0aWFsX2t3YXJnKToKKyAgICAgICAgICAgICAgICBuZXdfcGFyYW1zLnBvcChhcmdfbmFtZSkKKworICAgICAgICByZXR1cm4gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zLnZhbHVlcygpKQorCisgICAgc2lnID0gTm9uZQorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgIyBvYmogaXMgYSBjbGFzcyBvciBhIG1ldGFjbGFzcworCisgICAgICAgICMgRmlyc3QsIGxldCdzIHNlZSBpZiBpdCBoYXMgYW4gb3ZlcmxvYWRlZCBfX2NhbGxfXyBkZWZpbmVkCisgICAgICAgICMgaW4gaXRzIG1ldGFjbGFzcworICAgICAgICBjYWxsID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKHR5cGUob2JqKSwgJ19fY2FsbF9fJykKKyAgICAgICAgaWYgY2FsbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShjYWxsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBOb3cgd2UgY2hlY2sgaWYgdGhlICdvYmonIGNsYXNzIGhhcyBhICdfX25ld19fJyBtZXRob2QKKyAgICAgICAgICAgIG5ldyA9IF9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX25ld19fJykKKyAgICAgICAgICAgIGlmIG5ldyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzaWcgPSBzaWduYXR1cmUobmV3KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEZpbmFsbHksIHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IF9faW5pdF9fIGltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgaW5pdCA9IF9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX2luaXRfXycpCisgICAgICAgICAgICAgICAgaWYgaW5pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGluaXQpCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CisgICAgICAgICMgQW4gb2JqZWN0IHdpdGggX19jYWxsX18KKyAgICAgICAgIyBXZSBhbHNvIGNoZWNrIHRoYXQgdGhlICdvYmonIGlzIG5vdCBhbiBpbnN0YW5jZSBvZgorICAgICAgICAjIF9XcmFwcGVyRGVzY3JpcHRvciBvciBfTWV0aG9kV3JhcHBlciB0byBhdm9pZAorICAgICAgICAjIGluZmluaXRlIHJlY3Vyc2lvbiAoYW5kIGV2ZW4gcG90ZW50aWFsIHNlZ2ZhdWx0KQorICAgICAgICBjYWxsID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKHR5cGUob2JqKSwgJ19fY2FsbF9fJykKKyAgICAgICAgaWYgY2FsbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShjYWxsKQorCisgICAgaWYgc2lnIGlzIG5vdCBOb25lOgorICAgICAgICAjIEZvciBjbGFzc2VzIGFuZCBvYmplY3RzIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGVpcgorICAgICAgICAjIF9fY2FsbF9fLCBfX25ld19fLCBvciBfX2luaXRfXyBtZXRob2RzCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSk6CisgICAgICAgICMgUmFpc2UgYSBuaWNlciBlcnJvciBtZXNzYWdlIGZvciBidWlsdGlucworICAgICAgICBtc2cgPSAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluIGZ1bmN0aW9uIHshcn0nLmZvcm1hdChvYmopCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorCisgICAgcmFpc2UgVmFsdWVFcnJvcignY2FsbGFibGUgeyFyfSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScuZm9ybWF0KG9iaikpCisKKworY2xhc3MgX3ZvaWQ6CisgICAgJycnQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlJycnCisKKworY2xhc3MgX2VtcHR5OgorICAgIHBhc3MKKworCitjbGFzcyBfUGFyYW1ldGVyS2luZChpbnQpOgorICAgIGRlZiBfX25ld19fKHNlbGYsICphcmdzLCBuYW1lKToKKyAgICAgICAgb2JqID0gaW50Ll9fbmV3X18oc2VsZiwgKmFyZ3MpCisgICAgICAgIG9iai5fbmFtZSA9IG5hbWUKKyAgICAgICAgcmV0dXJuIG9iagorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPF9QYXJhbWV0ZXJLaW5kOiB7IXJ9PicuZm9ybWF0KHNlbGYuX25hbWUpCisKKworX1BPU0lUSU9OQUxfT05MWSAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgwLCBuYW1lPSdQT1NJVElPTkFMX09OTFknKQorX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgPSBfUGFyYW1ldGVyS2luZCgxLCBuYW1lPSdQT1NJVElPTkFMX09SX0tFWVdPUkQnKQorX1ZBUl9QT1NJVElPTkFMICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgyLCBuYW1lPSdWQVJfUE9TSVRJT05BTCcpCitfS0VZV09SRF9PTkxZICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDMsIG5hbWU9J0tFWVdPUkRfT05MWScpCitfVkFSX0tFWVdPUkQgICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDQsIG5hbWU9J1ZBUl9LRVlXT1JEJykKKworCitjbGFzcyBQYXJhbWV0ZXI6CisgICAgJycnUmVwcmVzZW50cyBhIHBhcmFtZXRlciBpbiBhIGZ1bmN0aW9uIHNpZ25hdHVyZS4KKworICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgorCisgICAgKiBuYW1lIDogc3RyCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuCisgICAgKiBkZWZhdWx0IDogb2JqZWN0CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGlmIHNwZWNpZmllZC4gIElmIHRoZQorICAgICAgICBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQuCisgICAgKiBhbm5vdGF0aW9uCisgICAgICAgIFRoZSBhbm5vdGF0aW9uIGZvciB0aGUgcGFyYW1ldGVyIGlmIHNwZWNpZmllZC4gIElmIHRoZQorICAgICAgICBwYXJhbWV0ZXIgaGFzIG5vIGFubm90YXRpb24sIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQuCisgICAgKiBraW5kIDogc3RyCisgICAgICAgIERlc2NyaWJlcyBob3cgYXJndW1lbnQgdmFsdWVzIGFyZSBib3VuZCB0byB0aGUgcGFyYW1ldGVyLgorICAgICAgICBQb3NzaWJsZSB2YWx1ZXM6IGBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZYCwKKyAgICAgICAgYFBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkRgLCBgUGFyYW1ldGVyLlZBUl9QT1NJVElPTkFMYCwKKyAgICAgICAgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlgLCBgUGFyYW1ldGVyLlZBUl9LRVlXT1JEYC4KKyAgICAnJycKKworICAgIF9fc2xvdHNfXyA9ICgnX25hbWUnLCAnX2tpbmQnLCAnX2RlZmF1bHQnLCAnX2Fubm90YXRpb24nLCAnX3BhcnRpYWxfa3dhcmcnKQorCisgICAgUE9TSVRJT05BTF9PTkxZICAgICAgICAgPSBfUE9TSVRJT05BTF9PTkxZCisgICAgUE9TSVRJT05BTF9PUl9LRVlXT1JEICAgPSBfUE9TSVRJT05BTF9PUl9LRVlXT1JECisgICAgVkFSX1BPU0lUSU9OQUwgICAgICAgICAgPSBfVkFSX1BPU0lUSU9OQUwKKyAgICBLRVlXT1JEX09OTFkgICAgICAgICAgICA9IF9LRVlXT1JEX09OTFkKKyAgICBWQVJfS0VZV09SRCAgICAgICAgICAgICA9IF9WQVJfS0VZV09SRAorCisgICAgZW1wdHkgPSBfZW1wdHkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBraW5kLCAqLCBkZWZhdWx0PV9lbXB0eSwgYW5ub3RhdGlvbj1fZW1wdHksCisgICAgICAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnPUZhbHNlKToKKworICAgICAgICBpZiBraW5kIG5vdCBpbiAoX1BPU0lUSU9OQUxfT05MWSwgX1BPU0lUSU9OQUxfT1JfS0VZV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9WQVJfUE9TSVRJT05BTCwgX0tFWVdPUkRfT05MWSwgX1ZBUl9LRVlXT1JEKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgdmFsdWUgZm9yICdQYXJhbWV0ZXIua2luZCcgYXR0cmlidXRlIikKKyAgICAgICAgc2VsZi5fa2luZCA9IGtpbmQKKworICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBpZiBraW5kIGluIChfVkFSX1BPU0lUSU9OQUwsIF9WQVJfS0VZV09SRCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ3t9IHBhcmFtZXRlcnMgY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnLmZvcm1hdChraW5kKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICBzZWxmLl9kZWZhdWx0ID0gZGVmYXVsdAorICAgICAgICBzZWxmLl9hbm5vdGF0aW9uID0gYW5ub3RhdGlvbgorCisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJOb25lIGlzIG5vdCBhIHZhbGlkIG5hbWUgZm9yIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVyIikKKyAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lID0gc3RyKG5hbWUpCisgICAgICAgICAgICBpZiBraW5kICE9IF9QT1NJVElPTkFMX09OTFkgYW5kIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICAgICAgICAgIG1zZyA9ICd7IXJ9IGlzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisKKyAgICAgICAgc2VsZi5fcGFydGlhbF9rd2FyZyA9IF9wYXJ0aWFsX2t3YXJnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZWZhdWx0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFubm90YXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hbm5vdGF0aW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga2luZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tpbmQKKworICAgIGRlZiByZXBsYWNlKHNlbGYsICosIG5hbWU9X3ZvaWQsIGtpbmQ9X3ZvaWQsIGFubm90YXRpb249X3ZvaWQsCisgICAgICAgICAgICAgICAgZGVmYXVsdD1fdm9pZCwgX3BhcnRpYWxfa3dhcmc9X3ZvaWQpOgorICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBQYXJhbWV0ZXIuJycnCisKKyAgICAgICAgaWYgbmFtZSBpcyBfdm9pZDoKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9uYW1lCisKKyAgICAgICAgaWYga2luZCBpcyBfdm9pZDoKKyAgICAgICAgICAgIGtpbmQgPSBzZWxmLl9raW5kCisKKyAgICAgICAgaWYgYW5ub3RhdGlvbiBpcyBfdm9pZDoKKyAgICAgICAgICAgIGFubm90YXRpb24gPSBzZWxmLl9hbm5vdGF0aW9uCisKKyAgICAgICAgaWYgZGVmYXVsdCBpcyBfdm9pZDoKKyAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9kZWZhdWx0CisKKyAgICAgICAgaWYgX3BhcnRpYWxfa3dhcmcgaXMgX3ZvaWQ6CisgICAgICAgICAgICBfcGFydGlhbF9rd2FyZyA9IHNlbGYuX3BhcnRpYWxfa3dhcmcKKworICAgICAgICByZXR1cm4gdHlwZShzZWxmKShuYW1lLCBraW5kLCBkZWZhdWx0PWRlZmF1bHQsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9X3BhcnRpYWxfa3dhcmcpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAga2luZCA9IHNlbGYua2luZAorCisgICAgICAgIGZvcm1hdHRlZCA9IHNlbGYuX25hbWUKKyAgICAgICAgaWYga2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgaWYgZm9ybWF0dGVkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gJycKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICc8e30+Jy5mb3JtYXQoZm9ybWF0dGVkKQorCisgICAgICAgICMgQWRkIGFubm90YXRpb24gYW5kIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgaWYgc2VsZi5fYW5ub3RhdGlvbiBpcyBub3QgX2VtcHR5OgorICAgICAgICAgICAgZm9ybWF0dGVkID0gJ3t9Ont9Jy5mb3JtYXQoZm9ybWF0dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0YW5ub3RhdGlvbihzZWxmLl9hbm5vdGF0aW9uKSkKKworICAgICAgICBpZiBzZWxmLl9kZWZhdWx0IGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAne309e30nLmZvcm1hdChmb3JtYXR0ZWQsIHJlcHIoc2VsZi5fZGVmYXVsdCkpCisKKyAgICAgICAgaWYga2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAnKicgKyBmb3JtYXR0ZWQKKyAgICAgICAgZWxpZiBraW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICcqKicgKyBmb3JtYXR0ZWQKKworICAgICAgICByZXR1cm4gZm9ybWF0dGVkCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPHt9IGF0IHs6I3h9IHshcn0+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksIHNlbGYubmFtZSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKGlzc3ViY2xhc3Mob3RoZXIuX19jbGFzc19fLCBQYXJhbWV0ZXIpIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX25hbWUgPT0gb3RoZXIuX25hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fa2luZCA9PSBvdGhlci5fa2luZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWZhdWx0ID09IG90aGVyLl9kZWZhdWx0IGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPT0gb3RoZXIuX2Fubm90YXRpb24pCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKKworCitjbGFzcyBCb3VuZEFyZ3VtZW50czoKKyAgICAnJydSZXN1bHQgb2YgYFNpZ25hdHVyZS5iaW5kYCBjYWxsLiAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzCisgICAgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KKworICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgorCisgICAgKiBhcmd1bWVudHMgOiBPcmRlcmVkRGljdAorICAgICAgICBBbiBvcmRlcmVkIG11dGFibGUgbWFwcGluZyBvZiBwYXJhbWV0ZXJzJyBuYW1lcyB0byBhcmd1bWVudHMnIHZhbHVlcy4KKyAgICAgICAgRG9lcyBub3QgY29udGFpbiBhcmd1bWVudHMnIGRlZmF1bHQgdmFsdWVzLgorICAgICogc2lnbmF0dXJlIDogU2lnbmF0dXJlCisgICAgICAgIFRoZSBTaWduYXR1cmUgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGlzIGluc3RhbmNlLgorICAgICogYXJncyA6IHR1cGxlCisgICAgICAgIFR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZhbHVlcy4KKyAgICAqIGt3YXJncyA6IGRpY3QKKyAgICAgICAgRGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMuCisgICAgJycnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2lnbmF0dXJlLCBhcmd1bWVudHMpOgorICAgICAgICBzZWxmLmFyZ3VtZW50cyA9IGFyZ3VtZW50cworICAgICAgICBzZWxmLl9zaWduYXR1cmUgPSBzaWduYXR1cmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzaWduYXR1cmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zaWduYXR1cmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gW10KKyAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYuX3NpZ25hdHVyZS5wYXJhbWV0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiAocGFyYW0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLl9wYXJ0aWFsX2t3YXJnKToKKyAgICAgICAgICAgICAgICAjIEtleXdvcmQgYXJndW1lbnRzIG1hcHBlZCBieSAnZnVuY3Rvb2xzLnBhcnRpYWwnCisgICAgICAgICAgICAgICAgIyAoUGFyYW1ldGVyLl9wYXJ0aWFsX2t3YXJnIGlzIFRydWUpIGFyZSBtYXBwZWQKKyAgICAgICAgICAgICAgICAjIGluICdCb3VuZEFyZ3VtZW50cy5rd2FyZ3MnLCBhbG9uZyB3aXRoIFZBUl9LRVlXT1JEICYKKyAgICAgICAgICAgICAgICAjIEtFWVdPUkRfT05MWQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLmFyZ3VtZW50c1twYXJhbV9uYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgV2UncmUgZG9uZSBoZXJlLiBPdGhlciBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAjIHdpbGwgYmUgbWFwcGVkIGluICdCb3VuZEFyZ3VtZW50cy5rd2FyZ3MnCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgICAgICMgKmFyZ3MKKyAgICAgICAgICAgICAgICAgICAgYXJncy5leHRlbmQoYXJnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgcGxhaW4gYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoYXJnKQorCisgICAgICAgIHJldHVybiB0dXBsZShhcmdzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGt3YXJncyhzZWxmKToKKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBGYWxzZQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG5vdCBrd2FyZ3Nfc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbV9uYW1lIG5vdCBpbiBzZWxmLmFyZ3VtZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc19zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgbm90IGt3YXJnc19zdGFydGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLmFyZ3VtZW50c1twYXJhbV9uYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX0tFWVdPUkQ6CisgICAgICAgICAgICAgICAgICAgICMgKiprd2FyZ3MKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzLnVwZGF0ZShhcmcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc1twYXJhbV9uYW1lXSA9IGFyZworCisgICAgICAgIHJldHVybiBrd2FyZ3MKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKGlzc3ViY2xhc3Mob3RoZXIuX19jbGFzc19fLCBCb3VuZEFyZ3VtZW50cykgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5zaWduYXR1cmUgPT0gb3RoZXIuc2lnbmF0dXJlIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID09IG90aGVyLmFyZ3VtZW50cykKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKK2NsYXNzIFNpZ25hdHVyZToKKyAgICAnJydBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KKyAgICBJdCBzdG9yZXMgYSBQYXJhbWV0ZXIgb2JqZWN0IGZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUKKyAgICBmdW5jdGlvbiwgYXMgd2VsbCBhcyBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLgorCisgICAgQSBTaWduYXR1cmUgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzOgorCisgICAgKiBwYXJhbWV0ZXJzIDogT3JkZXJlZERpY3QKKyAgICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIFBhcmFtZXRlciBvYmplY3RzIChrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBpbiB0aGUgc2FtZSBvcmRlcgorICAgICAgICBhcyBsaXN0ZWQgaW4gYGNvZGUuY29fdmFybmFtZXNgKS4KKyAgICAqIHJldHVybl9hbm5vdGF0aW9uIDogb2JqZWN0CisgICAgICAgIFRoZSBhbm5vdGF0aW9uIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGlmIHNwZWNpZmllZC4KKyAgICAgICAgSWYgdGhlIGZ1bmN0aW9uIGhhcyBubyBhbm5vdGF0aW9uIGZvciBpdHMgcmV0dXJuIHR5cGUsIHRoaXMKKyAgICAgICAgYXR0cmlidXRlIGlzIG5vdCBzZXQuCisgICAgKiBiaW5kKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKKyAgICAgICAgQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyB0bworICAgICAgICBwYXJhbWV0ZXJzLgorICAgICogYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKKyAgICAgICAgQ3JlYXRlcyBhIHBhcnRpYWwgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzCisgICAgICAgIHRvIHBhcmFtZXRlcnMgKHNpbXVsYXRpbmcgJ2Z1bmN0b29scy5wYXJ0aWFsJyBiZWhhdmlvci4pCisgICAgJycnCisKKyAgICBfX3Nsb3RzX18gPSAoJ19yZXR1cm5fYW5ub3RhdGlvbicsICdfcGFyYW1ldGVycycpCisKKyAgICBfcGFyYW1ldGVyX2NscyA9IFBhcmFtZXRlcgorICAgIF9ib3VuZF9hcmd1bWVudHNfY2xzID0gQm91bmRBcmd1bWVudHMKKworICAgIGVtcHR5ID0gX2VtcHR5CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyYW1ldGVycz1Ob25lLCAqLCByZXR1cm5fYW5ub3RhdGlvbj1fZW1wdHksCisgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPVRydWUpOgorICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgorICAgICAgICBvYmplY3RzIGFuZCAncmV0dXJuX2Fubm90YXRpb24nLiAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuCisgICAgICAgICcnJworCisgICAgICAgIGlmIHBhcmFtZXRlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fOgorICAgICAgICAgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgICAgICAgICB0b3Bfa2luZCA9IF9QT1NJVElPTkFMX09OTFkKKworICAgICAgICAgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzKToKKyAgICAgICAgICAgICAgICAgICAga2luZCA9IHBhcmFtLmtpbmQKKyAgICAgICAgICAgICAgICAgICAgaWYga2luZCA8IHRvcF9raW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3dyb25nIHBhcmFtZXRlciBvcmRlcjoge30gYmVmb3JlIHt9JworICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmZvcm1hdCh0b3Bfa2luZCwgcGFyYW0ua2luZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdG9wX2tpbmQgPSBraW5kCisKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBhcmFtLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHN0cihpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IHBhcmFtLnJlcGxhY2UobmFtZT1uYW1lKQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2R1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZTogeyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zW25hbWVdID0gcGFyYW0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKChwYXJhbS5uYW1lLCBwYXJhbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJhbSBpbiBwYXJhbWV0ZXJzKSkKKworICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZShwYXJhbXMpCisgICAgICAgIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uID0gcmV0dXJuX2Fubm90YXRpb24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2Z1bmN0aW9uKGNscywgZnVuYyk6CisgICAgICAgICcnJ0NvbnN0cnVjdHMgU2lnbmF0dXJlIGZvciB0aGUgZ2l2ZW4gcHl0aG9uIGZ1bmN0aW9uJycnCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZnVuYywgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nLmZvcm1hdChmdW5jKSkKKworICAgICAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKKworICAgICAgICAjIFBhcmFtZXRlciBpbmZvcm1hdGlvbi4KKyAgICAgICAgZnVuY19jb2RlID0gZnVuYy5fX2NvZGVfXworICAgICAgICBwb3NfY291bnQgPSBmdW5jX2NvZGUuY29fYXJnY291bnQKKyAgICAgICAgYXJnX25hbWVzID0gZnVuY19jb2RlLmNvX3Zhcm5hbWVzCisgICAgICAgIHBvc2l0aW9uYWwgPSB0dXBsZShhcmdfbmFtZXNbOnBvc19jb3VudF0pCisgICAgICAgIGtleXdvcmRfb25seV9jb3VudCA9IGZ1bmNfY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgICAgICBrZXl3b3JkX29ubHkgPSBhcmdfbmFtZXNbcG9zX2NvdW50Oihwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQpXQorICAgICAgICBhbm5vdGF0aW9ucyA9IGZ1bmMuX19hbm5vdGF0aW9uc19fCisgICAgICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICAgICAga3dkZWZhdWx0cyA9IGZ1bmMuX19rd2RlZmF1bHRzX18KKworICAgICAgICBpZiBkZWZhdWx0czoKKyAgICAgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSAwCisKKyAgICAgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAgICAgIyBOb24ta2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgdy9vIGRlZmF1bHRzLgorICAgICAgICBub25fZGVmYXVsdF9jb3VudCA9IHBvc19jb3VudCAtIHBvc19kZWZhdWx0X2NvdW50CisgICAgICAgIGZvciBuYW1lIGluIHBvc2l0aW9uYWxbOm5vbl9kZWZhdWx0X2NvdW50XToKKyAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQpKQorCisgICAgICAgICMgLi4uIHcvIGRlZmF1bHRzLgorICAgICAgICBmb3Igb2Zmc2V0LCBuYW1lIGluIGVudW1lcmF0ZShwb3NpdGlvbmFsW25vbl9kZWZhdWx0X2NvdW50Ol0pOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHRzW29mZnNldF0pKQorCisgICAgICAgICMgKmFyZ3MKKyAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgMHgwNDoKKyAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50XQorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9QT1NJVElPTkFMKSkKKworICAgICAgICAjIEtleXdvcmQtb25seSBwYXJhbWV0ZXJzLgorICAgICAgICBmb3IgbmFtZSBpbiBrZXl3b3JkX29ubHk6CisgICAgICAgICAgICBkZWZhdWx0ID0gX2VtcHR5CisgICAgICAgICAgICBpZiBrd2RlZmF1bHRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBrd2RlZmF1bHRzLmdldChuYW1lLCBfZW1wdHkpCisKKyAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9LRVlXT1JEX09OTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KSkKKyAgICAgICAgIyAqKmt3YXJncworICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiAweDA4OgorICAgICAgICAgICAgaW5kZXggPSBwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQKKyAgICAgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIDB4MDQ6CisgICAgICAgICAgICAgICAgaW5kZXggKz0gMQorCisgICAgICAgICAgICBuYW1lID0gYXJnX25hbWVzW2luZGV4XQorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9LRVlXT1JEKSkKKworICAgICAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249YW5ub3RhdGlvbnMuZ2V0KCdyZXR1cm4nLCBfZW1wdHkpLAorICAgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPUZhbHNlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmV0dXJuX2Fubm90YXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgcGFyYW1ldGVycz1fdm9pZCwgcmV0dXJuX2Fubm90YXRpb249X3ZvaWQpOgorICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBTaWduYXR1cmUuCisgICAgICAgIFBhc3MgJ3BhcmFtZXRlcnMnIGFuZC9vciAncmV0dXJuX2Fubm90YXRpb24nIGFyZ3VtZW50cworICAgICAgICB0byBvdmVycmlkZSB0aGVtIGluIHRoZSBuZXcgY29weS4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBfdm9pZDoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKKworICAgICAgICBpZiByZXR1cm5fYW5ub3RhdGlvbiBpcyBfdm9pZDoKKyAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uID0gc2VsZi5fcmV0dXJuX2Fubm90YXRpb24KKworICAgICAgICByZXR1cm4gdHlwZShzZWxmKShwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1yZXR1cm5fYW5ub3RhdGlvbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiAobm90IGlzc3ViY2xhc3ModHlwZShvdGhlciksIFNpZ25hdHVyZSkgb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5fYW5ub3RhdGlvbiAhPSBvdGhlci5yZXR1cm5fYW5ub3RhdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICBsZW4oc2VsZi5wYXJhbWV0ZXJzKSAhPSBsZW4ob3RoZXIucGFyYW1ldGVycykpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgb3RoZXJfcG9zaXRpb25zID0ge3BhcmFtOiBpZHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShvdGhlci5wYXJhbWV0ZXJzLmtleXMoKSl9CisKKyAgICAgICAgZm9yIGlkeCwgKHBhcmFtX25hbWUsIHBhcmFtKSBpbiBlbnVtZXJhdGUoc2VsZi5wYXJhbWV0ZXJzLml0ZW1zKCkpOgorICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfS0VZV09SRF9PTkxZOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfcGFyYW0gPSBvdGhlci5wYXJhbWV0ZXJzW3BhcmFtX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbSAhPSBvdGhlcl9wYXJhbToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG90aGVyX2lkeCA9IG90aGVyX3Bvc2l0aW9uc1twYXJhbV9uYW1lXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSBvdGhlcl9pZHggb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtICE9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisgICAgZGVmIF9iaW5kKHNlbGYsIGFyZ3MsIGt3YXJncywgKiwgcGFydGlhbD1GYWxzZSk6CisgICAgICAgICcnJ1ByaXZhdGUgbWV0aG9kLiAgRG9uJ3QgdXNlIGRpcmVjdGx5LicnJworCisgICAgICAgIGFyZ3VtZW50cyA9IE9yZGVyZWREaWN0KCkKKworICAgICAgICBwYXJhbWV0ZXJzID0gaXRlcihzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkpCisgICAgICAgIHBhcmFtZXRlcnNfZXggPSAoKQorICAgICAgICBhcmdfdmFscyA9IGl0ZXIoYXJncykKKworICAgICAgICBpZiBwYXJ0aWFsOgorICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBiaW5kaW5nIGFyZ3VtZW50cyB0byAnZnVuY3Rvb2xzLnBhcnRpYWwnIG9iamVjdHMuCisgICAgICAgICAgICAjIFNlZSAnZnVuY3Rvb2xzLnBhcnRpYWwnIGNhc2UgaW4gJ3NpZ25hdHVyZSgpJyBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgIyBmb3IgZGV0YWlscy4KKyAgICAgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0uX3BhcnRpYWxfa3dhcmcgYW5kIHBhcmFtX25hbWUgbm90IGluIGt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgICMgU2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yCisgICAgICAgICAgICAgICAgICAgIGt3YXJnc1twYXJhbV9uYW1lXSA9IHBhcmFtLmRlZmF1bHQKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBMZXQncyBpdGVyYXRlIHRocm91Z2ggdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZCBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAjIHBhcmFtZXRlcnMKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmdfdmFsID0gbmV4dChhcmdfdmFscykKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICMgTm8gbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgICMgTm8gbW9yZSBwYXJhbWV0ZXJzLiBUaGF0J3MgaXQuIEp1c3QgbmVlZCB0byBjaGVjayB0aGF0CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSBubyBga3dhcmdzYCBhZnRlciB0aGlzIHdoaWxlIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhhdCdzIE9LLCBqdXN0IGVtcHR5ICphcmdzLiAgTGV0J3Mgc3RhcnQgcGFyc2luZworICAgICAgICAgICAgICAgICAgICAgICAgIyBrd2FyZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9QT1NJVElPTkFMX09OTFk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3thcmchcn0gcGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSwgJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1dCB3YXMgcGFzc2VkIGFzIGEga2V5d29yZCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbGlmIChwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBub3QgX2VtcHR5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhhdCdzIGZpbmUgdG9vIC0gd2UgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyLiAgU28sIGxldHMgc3RhcnQgcGFyc2luZyBga3dhcmdzYCwgc3RhcnRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgY3VycmVudCBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNfZXggPSAocGFyYW0sKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRpYWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IHRvIHByb2Nlc3MKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gbmV4dChwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTG9va3MgbGlrZSB3ZSBoYXZlIG5vIHBhcmFtZXRlciBmb3IgdGhpcyBwb3NpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykKKworICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhbiAnKmFyZ3MnLWxpa2UgYXJndW1lbnQsIGxldCdzIGZpbGwgaXQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgcG9zaXRpb25hbCBhcmd1bWVudHMgd2UgaGF2ZSBsZWZ0IGFuZCBtb3ZlIG9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBuZXh0IHBoYXNlCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbYXJnX3ZhbF0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5leHRlbmQoYXJnX3ZhbHMpCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW0ubmFtZV0gPSB0dXBsZSh2YWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLm5hbWUgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2FyZyFyfScuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKSkKKworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW0ubmFtZV0gPSBhcmdfdmFsCisKKyAgICAgICAgIyBOb3csIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgdG8gcHJvY2VzcworICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzCisgICAgICAgIGt3YXJnc19wYXJhbSA9IE5vbmUKKyAgICAgICAgZm9yIHBhcmFtIGluIGl0ZXJ0b29scy5jaGFpbihwYXJhbWV0ZXJzX2V4LCBwYXJhbWV0ZXJzKToKKyAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBjYXNlIG9mIGEgcHJvcGVybHkgYnVpbHQKKyAgICAgICAgICAgICAgICAjIFNpZ25hdHVyZSBvYmplY3QgKGJ1dCBsZXQncyBoYXZlIHRoaXMgY2hlY2sgaGVyZQorICAgICAgICAgICAgICAgICMgdG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3VyIGp1c3QgaW4gY2FzZSkKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYXMgYSBrZXl3b3JkJy4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtLm5hbWUpKQorCisgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAjIE1lbW9yaXplIHRoYXQgd2UgaGF2ZSBhICcqKmt3YXJncyctbGlrZSBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICBrd2FyZ3NfcGFyYW0gPSBwYXJhbQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBhcmFtX25hbWUgPSBwYXJhbS5uYW1lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXJnX3ZhbCA9IGt3YXJncy5wb3AocGFyYW1fbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgbm8gdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyLiAgSXQncyBmaW5lIHRob3VnaCwKKyAgICAgICAgICAgICAgICAjIGlmIGl0IGhhcyBhIGRlZmF1bHQgdmFsdWUsIG9yIGl0IGlzIGFuICcqYXJncyctbGlrZQorICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyLCBsZWZ0IGFsb25lIGJ5IHRoZSBwcm9jZXNzaW5nIG9mIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cy4KKyAgICAgICAgICAgICAgICBpZiAobm90IHBhcnRpYWwgYW5kIHBhcmFtLmtpbmQgIT0gX1ZBUl9QT1NJVElPTkFMIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHQgaXMgX2VtcHR5KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7YXJnIXJ9IHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUnLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtX25hbWUpKSBmcm9tIE5vbmUKKworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW1fbmFtZV0gPSBhcmdfdmFsCisKKyAgICAgICAgaWYga3dhcmdzOgorICAgICAgICAgICAgaWYga3dhcmdzX3BhcmFtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgUHJvY2VzcyBvdXIgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGFyZ3VtZW50c1trd2FyZ3NfcGFyYW0ubmFtZV0gPSBrd2FyZ3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50c19jbHMoc2VsZiwgYXJndW1lbnRzKQorCisgICAgZGVmIGJpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgJycnR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKKyAgICAgICAgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4gIFJhaXNlcyBgVHlwZUVycm9yYAorICAgICAgICBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JpbmQoYXJncywga3dhcmdzKQorCisgICAgZGVmIGJpbmRfcGFydGlhbChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgcGFydGlhbGx5IG1hcHMgdGhlCisgICAgICAgIHBhc3NlZCBgYXJnc2AgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4KKyAgICAgICAgUmFpc2VzIGBUeXBlRXJyb3JgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MsIHBhcnRpYWw9VHJ1ZSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICByZW5kZXJfa3dfb25seV9zZXBhcmF0b3IgPSBUcnVlCisgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkpOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gc3RyKHBhcmFtKQorCisgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgaWYga2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhbiAnKmFyZ3MnLWxpa2UgcGFyYW1ldGVyLCBzbyB3ZSB3b24ndCBuZWVkCisgICAgICAgICAgICAgICAgIyBhICcqJyB0byBzZXBhcmF0ZSBrZXl3b3JkLW9ubHkgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKKyAgICAgICAgICAgIGVsaWYga2luZCA9PSBfS0VZV09SRF9PTkxZIGFuZCByZW5kZXJfa3dfb25seV9zZXBhcmF0b3I6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEga2V5d29yZC1vbmx5IHBhcmFtZXRlciB0byByZW5kZXIgYW5kIHdlIGhhdmVuJ3QKKyAgICAgICAgICAgICAgICAjIHJlbmRlcmVkIGFuICcqYXJncyctbGlrZSBwYXJhbWV0ZXIgYmVmb3JlLCBzbyBhZGQgYSAnKicKKyAgICAgICAgICAgICAgICAjIHNlcGFyYXRvciB0byB0aGUgcGFyYW1ldGVycyBsaXN0ICgiZm9vKGFyZzEsICosIGFyZzIpIiBjYXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyonKQorICAgICAgICAgICAgICAgICMgVGhpcyBjb25kaXRpb24gc2hvdWxkIGJlIG9ubHkgdHJpZ2dlcmVkIG9uY2UsIHNvCisgICAgICAgICAgICAgICAgIyByZXNldCB0aGUgZmxhZworICAgICAgICAgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IEZhbHNlCisKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZm9ybWF0dGVkKQorCisgICAgICAgIHJlbmRlcmVkID0gJyh7fSknLmZvcm1hdCgnLCAnLmpvaW4ocmVzdWx0KSkKKworICAgICAgICBpZiBzZWxmLnJldHVybl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBhbm5vID0gZm9ybWF0YW5ub3RhdGlvbihzZWxmLnJldHVybl9hbm5vdGF0aW9uKQorICAgICAgICAgICAgcmVuZGVyZWQgKz0gJyAtPiB7fScuZm9ybWF0KGFubm8pCisKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVkCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggNjNkMmIzMy4uYmRhNGRlZiAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtNTgsNiArNTgsOSBAQAogCiBPcGVuV3JhcHBlciA9IF9pby5vcGVuICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBfcHlpbwogCisjIFByZXRlbmQgdGhpcyBleGNlcHRpb24gd2FzIGNyZWF0ZWQgaGVyZS4KK1Vuc3VwcG9ydGVkT3BlcmF0aW9uLl9fbW9kdWxlX18gPSAiaW8iCisKICMgZm9yIHNlZWsoKQogU0VFS19TRVQgPSAwCiBTRUVLX0NVUiA9IDEKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMmU0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaXBhZGRyZXNzLnB5CkBAIC0wLDAgKzEsMjA5NCBAQAorIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgorIyAgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorCisiIiJBIGZhc3QsIGxpZ2h0d2VpZ2h0IElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeSBpbiBQeXRob24uCisKK1RoaXMgbGlicmFyeSBpcyB1c2VkIHRvIGNyZWF0ZS9wb2tlL21hbmlwdWxhdGUgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMKK2FuZCBuZXR3b3Jrcy4KKworIiIiCisKK19fdmVyc2lvbl9fID0gJzEuMCcKKworCitpbXBvcnQgZnVuY3Rvb2xzCisKK0lQVjRMRU5HVEggPSAzMgorSVBWNkxFTkdUSCA9IDEyOAorCitjbGFzcyBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKToKKyAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIGFkZHJlc3MuIiIiCisKKworY2xhc3MgTmV0bWFza1ZhbHVlRXJyb3IoVmFsdWVFcnJvcik6CisgICAgIiIiQSBWYWx1ZSBFcnJvciByZWxhdGVkIHRvIHRoZSBuZXRtYXNrLiIiIgorCisKK2RlZiBpcF9hZGRyZXNzKGFkZHJlc3MpOgorICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuICBFaXRoZXIgSVB2NCBvcgorICAgICAgICAgIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKKyAgICAgICAgICBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlICphZGRyZXNzKiBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MKKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiBpcF9uZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKyAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBuZXR3b3JrLiAgRWl0aGVyIElQdjQgb3IKKyAgICAgICAgICBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKKyAgICAgICAgICBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIHN0cmluZyBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MuIE9yIGlmIHRoZSBuZXR3b3JrIGhhcyBob3N0IGJpdHMgc2V0LgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBuZXR3b3JrJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiBpcF9pbnRlcmZhY2UoYWRkcmVzcyk6CisgICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yCisgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NEludGVyZmFjZSBvciBJUHY2SW50ZXJmYWNlIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIHN0cmluZyBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MuCisKKyAgICBOb3RlczoKKyAgICAgICAgVGhlIElQdj9JbnRlcmZhY2UgY2xhc3NlcyBkZXNjcmliZSBhbiBBZGRyZXNzIG9uIGEgcGFydGljdWxhcgorICAgICAgICBOZXR3b3JrLCBzbyB0aGV5J3JlIGJhc2ljYWxseSBhIGNvbWJpbmF0aW9uIG9mIGJvdGggdGhlIEFkZHJlc3MKKyAgICAgICAgYW5kIE5ldHdvcmsgY2xhc3Nlcy4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjRJbnRlcmZhY2UoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjZJbnRlcmZhY2UoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVyIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgaW50ZXJmYWNlJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiB2NF9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgorICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDQgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IElQIGFkZHJlc3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgaW50ZWdlciBhZGRyZXNzIHBhY2tlZCBhcyA0IGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBJZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgICAgICAgICBJUHY0IElQIGFkZHJlc3MuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDQsICdiaWcnKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWRkcmVzcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgZm9yIElQdjQiKQorCisKK2RlZiB2Nl9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgorICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDE2IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBJUCBhZGRyZXNzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgVGhlIGludGVnZXIgYWRkcmVzcyBwYWNrZWQgYXMgMTYgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDE2LCAnYmlnJykKKyAgICBleGNlcHQ6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY2IikKKworCitkZWYgX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcyk6CisgICAgIiIiSGVscGVyIHRvIHNwbGl0IHRoZSBuZXRtYXNrIGFuZCByYWlzZSBBZGRyZXNzVmFsdWVFcnJvciBpZiBuZWVkZWQiIiIKKyAgICBhZGRyID0gc3RyKGFkZHJlc3MpLnNwbGl0KCcvJykKKyAgICBpZiBsZW4oYWRkcikgPiAyOgorICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyZXNzKQorICAgIHJldHVybiBhZGRyCisKKworZGVmIF9maW5kX2FkZHJlc3NfcmFuZ2UoYWRkcmVzc2VzKToKKyAgICAiIiJGaW5kIGEgc2VxdWVuY2Ugb2YgSVB2I0FkZHJlc3MuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IGEgbGlzdCBvZiBJUHYjQWRkcmVzcyBvYmplY3RzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBmaXJzdCBhbmQgbGFzdCBJUCBhZGRyZXNzZXMgaW4gdGhlIHNlcXVlbmNlLgorCisgICAgIiIiCisgICAgZmlyc3QgPSBsYXN0ID0gYWRkcmVzc2VzWzBdCisgICAgZm9yIGlwIGluIGFkZHJlc3Nlc1sxOl06CisgICAgICAgIGlmIGlwLl9pcCA9PSBsYXN0Ll9pcCArIDE6CisgICAgICAgICAgICBsYXN0ID0gaXAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIChmaXJzdCwgbGFzdCkKKworCitkZWYgX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMobnVtYmVyLCBiaXRzKToKKyAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlLgorCisgICAgQXJnczoKKyAgICAgICAgbnVtYmVyOiBhbiBpbnRlZ2VyLgorICAgICAgICBiaXRzOiBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHRvIGNvdW50LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgVGhlIG51bWJlciBvZiB6ZXJvIGJpdHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgbnVtYmVyLgorCisgICAgIiIiCisgICAgaWYgbnVtYmVyID09IDA6CisgICAgICAgIHJldHVybiBiaXRzCisgICAgZm9yIGkgaW4gcmFuZ2UoYml0cyk6CisgICAgICAgIGlmIChudW1iZXIgPj4gaSkgJiAxOgorICAgICAgICAgICAgcmV0dXJuIGkKKyAgICAjIEFsbCBiaXRzIG9mIGludGVyZXN0IHdlcmUgemVybywgZXZlbiBpZiB0aGVyZSBhcmUgbW9yZSBpbiB0aGUgbnVtYmVyCisgICAgcmV0dXJuIGJpdHMKKworCitkZWYgc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpOgorICAgICIiIlN1bW1hcml6ZSBhIG5ldHdvcmsgcmFuZ2UgZ2l2ZW4gdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3Nlcy4KKworICAgIEV4YW1wbGU6CisgICAgICAgID4+PiBsaXN0KHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSwKKyAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMwJykpKQorICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzMxJyksCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMzAvMzInKV0KKworICAgIEFyZ3M6CisgICAgICAgIGZpcnN0OiB0aGUgZmlyc3QgSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3MgaW4gdGhlIHJhbmdlLgorICAgICAgICBsYXN0OiB0aGUgbGFzdCBJUHY0QWRkcmVzcyBvciBJUHY2QWRkcmVzcyBpbiB0aGUgcmFuZ2UuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgc3VtbWFyaXplZCBJUHYoNHw2KSBuZXR3b3JrIG9iamVjdHMuCisKKyAgICBSYWlzZToKKyAgICAgICAgVHlwZUVycm9yOgorICAgICAgICAgICAgSWYgdGhlIGZpcnN0IGFuZCBsYXN0IG9iamVjdHMgYXJlIG5vdCBJUCBhZGRyZXNzZXMuCisgICAgICAgICAgICBJZiB0aGUgZmlyc3QgYW5kIGxhc3Qgb2JqZWN0cyBhcmUgbm90IHRoZSBzYW1lIHZlcnNpb24uCisgICAgICAgIFZhbHVlRXJyb3I6CisgICAgICAgICAgICBJZiB0aGUgbGFzdCBvYmplY3QgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3QuCisgICAgICAgICAgICBJZiB0aGUgdmVyc2lvbiBvZiB0aGUgZmlyc3QgYWRkcmVzcyBpcyBub3QgNCBvciA2LgorCisgICAgIiIiCisgICAgaWYgKG5vdCAoaXNpbnN0YW5jZShmaXJzdCwgX0Jhc2VBZGRyZXNzKSBhbmQKKyAgICAgICAgICAgICBpc2luc3RhbmNlKGxhc3QsIF9CYXNlQWRkcmVzcykpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdmaXJzdCBhbmQgbGFzdCBtdXN0IGJlIElQIGFkZHJlc3Nlcywgbm90IG5ldHdvcmtzJykKKyAgICBpZiBmaXJzdC52ZXJzaW9uICE9IGxhc3QudmVyc2lvbjoKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCkpCisgICAgaWYgZmlyc3QgPiBsYXN0OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsYXN0IElQIGFkZHJlc3MgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmlyc3QnKQorCisgICAgaWYgZmlyc3QudmVyc2lvbiA9PSA0OgorICAgICAgICBpcCA9IElQdjROZXR3b3JrCisgICAgZWxpZiBmaXJzdC52ZXJzaW9uID09IDY6CisgICAgICAgIGlwID0gSVB2Nk5ldHdvcmsKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bmtub3duIElQIHZlcnNpb24nKQorCisgICAgaXBfYml0cyA9IGZpcnN0Ll9tYXhfcHJlZml4bGVuCisgICAgZmlyc3RfaW50ID0gZmlyc3QuX2lwCisgICAgbGFzdF9pbnQgPSBsYXN0Ll9pcAorICAgIHdoaWxlIGZpcnN0X2ludCA8PSBsYXN0X2ludDoKKyAgICAgICAgbmJpdHMgPSBtaW4oX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoZmlyc3RfaW50LCBpcF9iaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgKGxhc3RfaW50IC0gZmlyc3RfaW50ICsgMSkuYml0X2xlbmd0aCgpIC0gMSkKKyAgICAgICAgbmV0ID0gaXAoJyVzLyVkJyAlIChmaXJzdCwgaXBfYml0cyAtIG5iaXRzKSkKKyAgICAgICAgeWllbGQgbmV0CisgICAgICAgIGZpcnN0X2ludCArPSAxIDw8IG5iaXRzCisgICAgICAgIGlmIGZpcnN0X2ludCAtIDEgPT0gaXAuX0FMTF9PTkVTOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmlyc3QgPSBmaXJzdC5fX2NsYXNzX18oZmlyc3RfaW50KQorCisKK2RlZiBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShhZGRyZXNzZXMpOgorICAgICIiIkxvb3BzIHRocm91Z2ggdGhlIGFkZHJlc3NlcywgY29sbGFwc2luZyBjb25jdXJyZW50IG5ldGJsb2Nrcy4KKworICAgIEV4YW1wbGU6CisKKyAgICAgICAgaXAxID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNicpCisgICAgICAgIGlwMiA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JykKKyAgICAgICAgaXAzID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JykKKyAgICAgICAgaXA0ID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JykKKworICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KKyAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisgICAgICAgIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBkaXJlY3RseTsgaXQgaXMgY2FsbGVkIHZpYQorICAgICAgICAgIGNvbGxhcHNlX2FkZHJlc3NlcyhbXSkuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IEEgbGlzdCBvZiBJUHY0TmV0d29yaydzIG9yIElQdjZOZXR3b3JrJ3MKKworICAgIFJldHVybnM6CisgICAgICAgIEEgbGlzdCBvZiBJUHY0TmV0d29yaydzIG9yIElQdjZOZXR3b3JrJ3MgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2VyZQorICAgICAgICBwYXNzZWQuCisKKyAgICAiIiIKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsYXN0X2FkZHIgPSBOb25lCisgICAgICAgIHJldF9hcnJheSA9IFtdCisgICAgICAgIG9wdGltaXplZCA9IEZhbHNlCisKKyAgICAgICAgZm9yIGN1cl9hZGRyIGluIGFkZHJlc3NlczoKKyAgICAgICAgICAgIGlmIG5vdCByZXRfYXJyYXk6CisgICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gY3VyX2FkZHIKKyAgICAgICAgICAgICAgICByZXRfYXJyYXkuYXBwZW5kKGN1cl9hZGRyKQorICAgICAgICAgICAgZWxpZiAoY3VyX2FkZHIubmV0d29ya19hZGRyZXNzID49IGxhc3RfYWRkci5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgY3VyX2FkZHIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gbGFzdF9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGN1cl9hZGRyID09IGxpc3QobGFzdF9hZGRyLnN1cGVybmV0KCkuc3VibmV0cygpKVsxXToKKyAgICAgICAgICAgICAgICByZXRfYXJyYXlbLTFdID0gbGFzdF9hZGRyID0gbGFzdF9hZGRyLnN1cGVybmV0KCkKKyAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCisgICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKKworICAgICAgICBhZGRyZXNzZXMgPSByZXRfYXJyYXkKKyAgICAgICAgaWYgbm90IG9wdGltaXplZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzZXMKKworCitkZWYgY29sbGFwc2VfYWRkcmVzc2VzKGFkZHJlc3Nlcyk6CisgICAgIiIiQ29sbGFwc2UgYSBsaXN0IG9mIElQIG9iamVjdHMuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBjb2xsYXBzZV9hZGRyZXNzZXMoW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0pIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzc2VzOiBBbiBpdGVyYXRvciBvZiBJUHY0TmV0d29yayBvciBJUHY2TmV0d29yayBvYmplY3RzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gaXRlcmF0b3Igb2YgdGhlIGNvbGxhcHNlZCBJUHYoNHw2KU5ldHdvcmsgb2JqZWN0cy4KKworICAgIFJhaXNlczoKKyAgICAgICAgVHlwZUVycm9yOiBJZiBwYXNzZWQgYSBsaXN0IG9mIG1peGVkIHZlcnNpb24gb2JqZWN0cy4KKworICAgICIiIgorICAgIGkgPSAwCisgICAgYWRkcnMgPSBbXQorICAgIGlwcyA9IFtdCisgICAgbmV0cyA9IFtdCisKKyAgICAjIHNwbGl0IElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MKKyAgICBmb3IgaXAgaW4gYWRkcmVzc2VzOgorICAgICAgICBpZiBpc2luc3RhbmNlKGlwLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgaWYgaXBzIGFuZCBpcHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCisgICAgICAgICAgICBpcHMuYXBwZW5kKGlwKQorICAgICAgICBlbGlmIGlwLl9wcmVmaXhsZW4gPT0gaXAuX21heF9wcmVmaXhsZW46CisgICAgICAgICAgICBpZiBpcHMgYW5kIGlwc1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBpcHNbLTFdKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpcHMuYXBwZW5kKGlwLmlwKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIGlwcy5hcHBlbmQoaXAubmV0d29ya19hZGRyZXNzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbmV0cyBhbmQgbmV0c1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBuZXRzWy0xXSkpCisgICAgICAgICAgICBuZXRzLmFwcGVuZChpcCkKKworICAgICMgc29ydCBhbmQgZGVkdXAKKyAgICBpcHMgPSBzb3J0ZWQoc2V0KGlwcykpCisgICAgbmV0cyA9IHNvcnRlZChzZXQobmV0cykpCisKKyAgICB3aGlsZSBpIDwgbGVuKGlwcyk6CisgICAgICAgIChmaXJzdCwgbGFzdCkgPSBfZmluZF9hZGRyZXNzX3JhbmdlKGlwc1tpOl0pCisgICAgICAgIGkgPSBpcHMuaW5kZXgobGFzdCkgKyAxCisgICAgICAgIGFkZHJzLmV4dGVuZChzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkpCisKKyAgICByZXR1cm4gaXRlcihfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShzb3J0ZWQoCisgICAgICAgIGFkZHJzICsgbmV0cywga2V5PV9CYXNlTmV0d29yay5fZ2V0X25ldHdvcmtzX2tleSkpKQorCisKK2RlZiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKToKKyAgICAiIiJSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLgorCisgICAgQWRkcmVzcyBhbmQgTmV0d29yayBvYmplY3RzIGFyZSBub3Qgc29ydGFibGUgYnkgZGVmYXVsdDsgdGhleSdyZQorICAgIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IHNvIHRoZSBleHByZXNzaW9uCisKKyAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICAgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4gIFRoZXJlIGFyZSBzb21lIHRpbWVzIGhvd2V2ZXIsIHdoZXJlIHlvdSBtYXkgd2lzaAorICAgIHRvIGhhdmUgaXBhZGRyZXNzIHNvcnQgdGhlc2UgZm9yIHlvdSBhbnl3YXkuIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdQorICAgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiBhcyB0aGUga2V5PSBhcmd1bWVudCB0byBzb3J0ZWQoKS4KKworICAgIEFyZ3M6CisgICAgICBvYmo6IGVpdGhlciBhIE5ldHdvcmsgb3IgQWRkcmVzcyBvYmplY3QuCisgICAgUmV0dXJuczoKKyAgICAgIGFwcHJvcHJpYXRlIGtleS4KKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZU5ldHdvcmspOgorICAgICAgICByZXR1cm4gb2JqLl9nZXRfbmV0d29ya3Nfa2V5KCkKKyAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICByZXR1cm4gb2JqLl9nZXRfYWRkcmVzc19rZXkoKQorICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK2NsYXNzIF9Ub3RhbE9yZGVyaW5nTWl4aW46CisgICAgIyBIZWxwZXIgdGhhdCBkZXJpdmVzIHRoZSBvdGhlciBjb21wYXJpc29uIG9wZXJhdGlvbnMgZnJvbQorICAgICMgX19sdF9fIGFuZCBfX2VxX18KKyAgICAjIFdlIGF2b2lkIGZ1bmN0b29scy50b3RhbF9vcmRlcmluZyBiZWNhdXNlIGl0IGRvZXNuJ3QgaGFuZGxlCisgICAgIyBOb3RJbXBsZW1lbnRlZCBjb3JyZWN0bHkgeWV0IChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTAwNDIpCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgZXF1YWwgPSBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgaWYgZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG5vdCBlcXVhbAorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZCBvciBub3QgbGVzczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgcmV0dXJuIGxlc3MKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgbGVzcyA9IHNlbGYuX19sdF9fKG90aGVyKQorICAgICAgICBpZiBsZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIGVxdWFsID0gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIGlmIGVxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBub3QgKGxlc3Mgb3IgZXF1YWwpCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gbm90IGxlc3MKKworY2xhc3MgX0lQQWRkcmVzc0Jhc2UoX1RvdGFsT3JkZXJpbmdNaXhpbik6CisKKyAgICAiIiJUaGUgbW90aGVyIGNsYXNzLiIiIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4cGxvZGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGxvbmdoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbXByZXNzZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgc2hvcnRoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIHZlcnNpb24gc3BlY2lmaWVkJyAlICh0eXBlKHNlbGYpLCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisKKyAgICBkZWYgX2NoZWNrX2ludF9hZGRyZXNzKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBhZGRyZXNzIDwgMDoKKyAgICAgICAgICAgIG1zZyA9ICIlZCAoPCAwKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdiVkIGFkZHJlc3MiCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgc2VsZi5fdmVyc2lvbikpCisgICAgICAgIGlmIGFkZHJlc3MgPiBzZWxmLl9BTExfT05FUzoKKyAgICAgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqJWQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBzZWxmLl9tYXhfcHJlZml4bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24pKQorCisgICAgZGVmIF9jaGVja19wYWNrZWRfYWRkcmVzcyhzZWxmLCBhZGRyZXNzLCBleHBlY3RlZF9sZW4pOgorICAgICAgICBhZGRyZXNzX2xlbiA9IGxlbihhZGRyZXNzKQorICAgICAgICBpZiBhZGRyZXNzX2xlbiAhPSBleHBlY3RlZF9sZW46CisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAlZCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIGFkZHJlc3NfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiwgc2VsZi5fdmVyc2lvbikpCisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLCBwcmVmaXhsZW49Tm9uZSk6CisgICAgICAgICIiIlR1cm4gdGhlIHByZWZpeCBsZW5ndGggbmV0bWFzayBpbnRvIGEgaW50IGZvciBjb21wYXJpc29uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEFuIGludGVnZXIsIHRoZSBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpbnRlZ2VyLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBwcmVmaXhsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbgorICAgICAgICByZXR1cm4gc2VsZi5fQUxMX09ORVMgXiAoc2VsZi5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQorCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50LCBtYXNrPTMyKToKKyAgICAgICAgIiIiUmV0dXJuIHByZWZpeCBsZW5ndGggZnJvbSB0aGUgZGVjaW1hbCBuZXRtYXNrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorICAgICAgICAgICAgbWFzazogVGhlIG5ldG1hc2suICBEZWZhdWx0cyB0byAzMi4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50ZWdlciwgdGhlIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYXNrIC0gX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoaXBfaW50LCBtYXNrKQorCisgICAgZGVmIF9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuPU5vbmUpOgorICAgICAgICAiIiJUdXJuIGEgcHJlZml4IGxlbmd0aCBpbnRvIGEgZG90dGVkIGRlY2ltYWwgc3RyaW5nLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEFuIGludGVnZXIsIHRoZSBuZXRtYXNrIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgZG90dGVkIGRlY2ltYWwgbmV0bWFzayBzdHJpbmcuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBwcmVmaXhsZW46CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgocHJlZml4bGVuKSkKKworCitjbGFzcyBfQmFzZUFkZHJlc3MoX0lQQWRkcmVzc0Jhc2UpOgorCisgICAgIiIiQSBnZW5lcmljIElQIG9iamVjdC4KKworICAgIFRoaXMgSVAgY2xhc3MgY29udGFpbnMgdGhlIHZlcnNpb24gaW5kZXBlbmRlbnQgbWV0aG9kcyB3aGljaCBhcmUKKyAgICB1c2VkIGJ5IHNpbmdsZSBJUCBhZGRyZXNzZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKQorICAgICAgICAgICAgYW5kICcvJyBpbiBzdHIoYWRkcmVzcykpOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiAlIGFkZHJlc3MpCisKKyAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9pcCA9PSBvdGhlci5faXAKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24pCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBzZWxmLl9pcCAhPSBvdGhlci5faXA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faXAgPCBvdGhlci5faXAKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAjIFNob3J0aGFuZCBmb3IgSW50ZWdlciBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uIFRoaXMgaXMgbm90CisgICAgIyBtZWFudCB0byBldmVyIHN1cHBvcnQgYWRkaXRpb24vc3VidHJhY3Rpb24gb2YgYWRkcmVzc2VzLgorICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludChzZWxmKSArIG90aGVyKQorCisgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgaW50KToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW50KHNlbGYpIC0gb3RoZXIpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goaGV4KGludChzZWxmLl9pcCkpKQorCisgICAgZGVmIF9nZXRfYWRkcmVzc19rZXkoc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZikKKworCitjbGFzcyBfQmFzZU5ldHdvcmsoX0lQQWRkcmVzc0Jhc2UpOgorCisgICAgIiIiQSBnZW5lcmljIElQIG5ldHdvcmsgb2JqZWN0LgorCisgICAgVGhpcyBJUCBjbGFzcyBjb250YWlucyB0aGUgdmVyc2lvbiBpbmRlcGVuZGVudCBtZXRob2RzIHdoaWNoIGFyZQorICAgIHVzZWQgYnkgbmV0d29ya3MuCisKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX2NhY2hlID0ge30KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcyglciknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZikpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYucHJlZml4bGVuKQorCisgICAgZGVmIGhvc3RzKHNlbGYpOgorICAgICAgICAiIiJHZW5lcmF0ZSBJdGVyYXRvciBvdmVyIHVzYWJsZSBob3N0cyBpbiBhIG5ldHdvcmsuCisKKyAgICAgICAgVGhpcyBpcyBsaWtlIF9faXRlcl9fIGV4Y2VwdCBpdCBkb2Vzbid0IHJldHVybiB0aGUgbmV0d29yaworICAgICAgICBvciBicm9hZGNhc3QgYWRkcmVzc2VzLgorCisgICAgICAgICIiIgorICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UobmV0d29yayArIDEsIGJyb2FkY2FzdCk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9hZGRyZXNzX2NsYXNzKHgpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBmb3IgeCBpbiByYW5nZShuZXR3b3JrLCBicm9hZGNhc3QgKyAxKToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuX2FkZHJlc3NfY2xhc3MoeCkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuKToKKyAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIGlmIG4gPj0gMDoKKyAgICAgICAgICAgIGlmIG5ldHdvcmsgKyBuID4gYnJvYWRjYXN0OgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKG5ldHdvcmsgKyBuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbiArPSAxCisgICAgICAgICAgICBpZiBicm9hZGNhc3QgKyBuIDwgbmV0d29yazoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhicm9hZGNhc3QgKyBuKQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyAhPSBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgPCBvdGhlci5uZXR3b3JrX2FkZHJlc3MKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrICE9IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzaworICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24gYW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID09IG90aGVyLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykgPT0gaW50KG90aGVyLm5ldG1hc2spKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSBeIGludChzZWxmLm5ldG1hc2spKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgYWx3YXlzIGZhbHNlIGlmIG9uZSBpcyB2NCBhbmQgdGhlIG90aGVyIGlzIHY2LgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgZGVhbGluZyB3aXRoIGFub3RoZXIgbmV0d29yay4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGRlYWxpbmcgd2l0aCBhbm90aGVyIGFkZHJlc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuIChpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpIDw9IGludChvdGhlci5faXApIDw9CisgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKSkKKworICAgIGRlZiBvdmVybGFwcyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlRlbGwgaWYgc2VsZiBpcyBwYXJ0bHkgY29udGFpbmVkIGluIG90aGVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgaW4gb3RoZXIgb3IgKAorICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcyBpbiBvdGhlciBvciAoCisgICAgICAgICAgICAgICAgb3RoZXIubmV0d29ya19hZGRyZXNzIGluIHNlbGYgb3IgKAorICAgICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyBpbiBzZWxmKSkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYnJvYWRjYXN0X2FkZHJlc3Moc2VsZik6CisgICAgICAgIHggPSBzZWxmLl9jYWNoZS5nZXQoJ2Jyb2FkY2FzdF9hZGRyZXNzJykKKyAgICAgICAgaWYgeCBpcyBOb25lOgorICAgICAgICAgICAgeCA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5ob3N0bWFzaykpCisgICAgICAgICAgICBzZWxmLl9jYWNoZVsnYnJvYWRjYXN0X2FkZHJlc3MnXSA9IHgKKyAgICAgICAgcmV0dXJuIHgKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBob3N0bWFzayhzZWxmKToKKyAgICAgICAgeCA9IHNlbGYuX2NhY2hlLmdldCgnaG9zdG1hc2snKQorICAgICAgICBpZiB4IGlzIE5vbmU6CisgICAgICAgICAgICB4ID0gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoc2VsZi5uZXRtYXNrKSBeIHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgc2VsZi5fY2FjaGVbJ2hvc3RtYXNrJ10gPSB4CisgICAgICAgIHJldHVybiB4CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLmhvc3RtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bV9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgICIiIk51bWJlciBvZiBob3N0cyBpbiB0aGUgY3VycmVudCBzdWJuZXQuIiIiCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykgLSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICsgMQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9hZGRyZXNzX2NsYXNzKHNlbGYpOgorICAgICAgICAjIFJldHVybmluZyBiYXJlIGFkZHJlc3Mgb2JqZWN0cyAocmF0aGVyIHRoYW4gaW50ZXJmYWNlcykgYWxsb3dzIGZvcgorICAgICAgICAjIG1vcmUgY29uc2lzdGVudCBiZWhhdmlvdXIgYWNyb3NzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGJyb2FkY2FzdAorICAgICAgICAjIGFkZHJlc3MgYW5kIGluZGl2aWR1YWwgaG9zdCBhZGRyZXNzZXMuCisgICAgICAgIG1zZyA9ICclMjAwcyBoYXMgbm8gYXNzb2NpYXRlZCBhZGRyZXNzIGNsYXNzJyAlICh0eXBlKHNlbGYpLCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4bGVuCisKKyAgICBkZWYgYWRkcmVzc19leGNsdWRlKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiUmVtb3ZlIGFuIGFkZHJlc3MgZnJvbSBhIGxhcmdlciBibG9jay4KKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgYWRkcjEgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICAgICAgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSA9CisgICAgICAgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMi8zMScpLAorICAgICAgICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjQvMzAnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuOC8yOScpXQorCisgICAgICAgIG9yIElQdjY6CisKKyAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMzInKQorICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcyMDAxOmRiODo6MS8xMjgnKQorICAgICAgICAgICAgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSA9CisgICAgICAgICAgICAgICAgW2lwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzEyOCcpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoyLzEyNycpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo0LzEyNicpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo4LzEyNScpLAorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjgwMDA6Oi8zMycpXQorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvdGhlcjogQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSB0aGUgSVB2KDR8NilOZXR3b3JrIG9iamVjdHMgd2hpY2ggaXMgc2VsZgorICAgICAgICAgICAgbWludXMgb3RoZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVHlwZUVycm9yOiBJZiBzZWxmIGFuZCBvdGhlciBhcmUgb2YgZGlmZmZlcmluZyBhZGRyZXNzCisgICAgICAgICAgICAgIHZlcnNpb25zLCBvciBpZiBvdGhlciBpcyBub3QgYSBuZXR3b3JrIG9iamVjdC4KKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIG90aGVyIGlzIG5vdCBjb21wbGV0ZWx5IGNvbnRhaW5lZCBieSBzZWxmLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fdmVyc2lvbiA9PSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgaXMgbm90IGEgbmV0d29yayBvYmplY3QiICUgb3RoZXIpCisKKyAgICAgICAgaWYgbm90IChvdGhlci5uZXR3b3JrX2FkZHJlc3MgPj0gc2VsZi5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gc2VsZi5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBub3QgY29udGFpbmVkIGluICVzJyAlIChvdGhlciwgc2VsZikpCisgICAgICAgIGlmIG90aGVyID09IHNlbGY6CisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UncmUgY29tcGFyaW5nIHRoZSBuZXR3b3JrIG9mIG90aGVyLgorICAgICAgICBvdGhlciA9IG90aGVyLl9fY2xhc3NfXygnJXMvJXMnICUgKG90aGVyLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5wcmVmaXhsZW4pKQorCisgICAgICAgIHMxLCBzMiA9IHNlbGYuc3VibmV0cygpCisgICAgICAgIHdoaWxlIHMxICE9IG90aGVyIGFuZCBzMiAhPSBvdGhlcjoKKyAgICAgICAgICAgIGlmIChvdGhlci5uZXR3b3JrX2FkZHJlc3MgPj0gczEubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHMxLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICB5aWVsZCBzMgorICAgICAgICAgICAgICAgIHMxLCBzMiA9IHMxLnN1Ym5ldHMoKQorICAgICAgICAgICAgZWxpZiAob3RoZXIubmV0d29ya19hZGRyZXNzID49IHMyLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHMyLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICB5aWVsZCBzMQorICAgICAgICAgICAgICAgIHMxLCBzMiA9IHMyLnN1Ym5ldHMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIElmIHdlIGdvdCBoZXJlLCB0aGVyZSdzIGEgYnVnIHNvbWV3aGVyZS4KKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRXJyb3IgcGVyZm9ybWluZyBleGNsdXNpb246ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnczE6ICVzIHMyOiAlcyBvdGhlcjogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoczEsIHMyLCBvdGhlcikpCisgICAgICAgIGlmIHMxID09IG90aGVyOgorICAgICAgICAgICAgeWllbGQgczIKKyAgICAgICAgZWxpZiBzMiA9PSBvdGhlcjoKKyAgICAgICAgICAgIHlpZWxkIHMxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHdlIGdvdCBoZXJlLCB0aGVyZSdzIGEgYnVnIHNvbWV3aGVyZS4KKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFcnJvciBwZXJmb3JtaW5nIGV4Y2x1c2lvbjogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3MxOiAlcyBzMjogJXMgb3RoZXI6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoczEsIHMyLCBvdGhlcikpCisKKyAgICBkZWYgY29tcGFyZV9uZXR3b3JrcyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIkNvbXBhcmUgdHdvIElQIG9iamVjdHMuCisKKyAgICAgICAgVGhpcyBpcyBvbmx5IGNvbmNlcm5lZCBhYm91dCB0aGUgY29tcGFyaXNvbiBvZiB0aGUgaW50ZWdlcgorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yayBhZGRyZXNzZXMuICBUaGlzIG1lYW5zIHRoYXQgdGhlCisgICAgICAgIGhvc3QgYml0cyBhcmVuJ3QgY29uc2lkZXJlZCBhdCBhbGwgaW4gdGhpcyBtZXRob2QuICBJZiB5b3Ugd2FudAorICAgICAgICB0byBjb21wYXJlIGhvc3QgYml0cywgeW91IGNhbiBlYXNpbHkgZW5vdWdoIGRvIGEKKyAgICAgICAgJ0hvc3RBLl9pcCA8IEhvc3RCLl9pcCcKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgb3RoZXI6IEFuIElQIG9iamVjdC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSWYgdGhlIElQIHZlcnNpb25zIG9mIHNlbGYgYW5kIG90aGVyIGFyZSB0aGUgc2FtZSwgcmV0dXJuczoKKworICAgICAgICAgICAgLTEgaWYgc2VsZiA8IG90aGVyOgorICAgICAgICAgICAgICBlZzogSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpIDwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JykKKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpIDwKKyAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MjAwMC8xMjQnKQorICAgICAgICAgICAgMCBpZiBzZWxmID09IG90aGVyCisgICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykgPT0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKSA9PQorICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCisgICAgICAgICAgICAxIGlmIHNlbGYgPiBvdGhlcgorICAgICAgICAgICAgICBlZzogSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JykgPiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JykKKyAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MjAwMC8xMjQnKSA+CisgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCisKKyAgICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICAgIFR5cGVFcnJvciBpZiB0aGUgSVAgdmVyc2lvbnMgYXJlIGRpZmZlcmVudC4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBkb2VzIHRoaXMgbmVlZCB0byByYWlzZSBhIFZhbHVlRXJyb3I/CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHR5cGUnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgICMgc2VsZi5fdmVyc2lvbiA9PSBvdGhlci5fdmVyc2lvbiBiZWxvdyBoZXJlOgorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyA8IG90aGVyLm5ldHdvcmtfYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyA+IG90aGVyLm5ldHdvcmtfYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICMgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPT0gb3RoZXIubmV0d29ya19hZGRyZXNzIGJlbG93IGhlcmU6CisgICAgICAgIGlmIHNlbGYubmV0bWFzayA8IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrID4gb3RoZXIubmV0bWFzazoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2dldF9uZXR3b3Jrc19rZXkoc2VsZik6CisgICAgICAgICIiIk5ldHdvcmstb25seSBrZXkgZnVuY3Rpb24uCisKKyAgICAgICAgUmV0dXJucyBhbiBvYmplY3QgdGhhdCBpZGVudGlmaWVzIHRoaXMgYWRkcmVzcycgbmV0d29yayBhbmQKKyAgICAgICAgbmV0bWFzay4gVGhpcyBmdW5jdGlvbiBpcyBhIHN1aXRhYmxlICJrZXkiIGFyZ3VtZW50IGZvciBzb3J0ZWQoKQorICAgICAgICBhbmQgbGlzdC5zb3J0KCkuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYubmV0bWFzaykKKworICAgIGRlZiBzdWJuZXRzKHNlbGYsIHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSk6CisgICAgICAgICIiIlRoZSBzdWJuZXRzIHdoaWNoIGpvaW4gdG8gbWFrZSB0aGUgY3VycmVudCBzdWJuZXQuCisKKyAgICAgICAgSW4gdGhlIGNhc2UgdGhhdCBzZWxmIGNvbnRhaW5zIG9ubHkgb25lIElQCisgICAgICAgIChzZWxmLl9wcmVmaXhsZW4gPT0gMzIgZm9yIElQdjQgb3Igc2VsZi5fcHJlZml4bGVuID09IDEyOAorICAgICAgICBmb3IgSVB2NiksIHlpZWxkIGFuIGl0ZXJhdG9yIHdpdGgganVzdCBvdXJzZWxmLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZjogQW4gaW50ZWdlciwgdGhlIGFtb3VudCB0aGUgcHJlZml4IGxlbmd0aAorICAgICAgICAgICAgICBzaG91bGQgYmUgaW5jcmVhc2VkIGJ5LiBUaGlzIHNob3VsZCBub3QgYmUgc2V0IGlmCisgICAgICAgICAgICAgIG5ld19wcmVmaXggaXMgYWxzbyBzZXQuCisgICAgICAgICAgICBuZXdfcHJlZml4OiBUaGUgZGVzaXJlZCBuZXcgcHJlZml4IGxlbmd0aC4gVGhpcyBtdXN0IGJlIGEKKyAgICAgICAgICAgICAgbGFyZ2VyIG51bWJlciAoc21hbGxlciBwcmVmaXgpIHRoYW4gdGhlIGV4aXN0aW5nIHByZWZpeC4KKyAgICAgICAgICAgICAgVGhpcyBzaG91bGQgbm90IGJlIHNldCBpZiBwcmVmaXhsZW5fZGlmZiBpcyBhbHNvIHNldC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaXRlcmF0b3Igb2YgSVB2KDR8Nikgb2JqZWN0cy4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBUaGUgcHJlZml4bGVuX2RpZmYgaXMgdG9vIHNtYWxsIG9yIHRvbyBsYXJnZS4KKyAgICAgICAgICAgICAgICBPUgorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXggYXJlIGJvdGggc2V0IG9yIG5ld19wcmVmaXgKKyAgICAgICAgICAgICAgaXMgYSBzbWFsbGVyIG51bWJlciB0aGFuIHRoZSBjdXJyZW50IHByZWZpeCAoc21hbGxlcgorICAgICAgICAgICAgICBudW1iZXIgbWVhbnMgYSBsYXJnZXIgbmV0d29yaykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IHNlbGYuX21heF9wcmVmaXhsZW46CisgICAgICAgICAgICB5aWVsZCBzZWxmCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBuZXdfcHJlZml4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbmV3X3ByZWZpeCA8IHNlbGYuX3ByZWZpeGxlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZXcgcHJlZml4IG11c3QgYmUgbG9uZ2VyJykKKyAgICAgICAgICAgIGlmIHByZWZpeGxlbl9kaWZmICE9IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IG5ld19wcmVmaXggLSBzZWxmLl9wcmVmaXhsZW4KKworICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwcmVmaXggbGVuZ3RoIGRpZmYgbXVzdCBiZSA+IDAnKQorICAgICAgICBuZXdfcHJlZml4bGVuID0gc2VsZi5fcHJlZml4bGVuICsgcHJlZml4bGVuX2RpZmYKKworICAgICAgICBpZiBub3Qgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhzdHIobmV3X3ByZWZpeGxlbikpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAncHJlZml4IGxlbmd0aCBkaWZmICVkIGlzIGludmFsaWQgZm9yIG5ldGJsb2NrICVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbiwgc2VsZikpCisKKyAgICAgICAgZmlyc3QgPSBzZWxmLl9fY2xhc3NfXygnJXMvJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gKyBwcmVmaXhsZW5fZGlmZikpCisKKyAgICAgICAgeWllbGQgZmlyc3QKKyAgICAgICAgY3VycmVudCA9IGZpcnN0CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBicm9hZGNhc3QgPSBjdXJyZW50LmJyb2FkY2FzdF9hZGRyZXNzCisgICAgICAgICAgICBpZiBicm9hZGNhc3QgPT0gc2VsZi5icm9hZGNhc3RfYWRkcmVzczoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIG5ld19hZGRyID0gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoYnJvYWRjYXN0KSArIDEpCisgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVzJyAlIChuZXdfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXhsZW4pKQorCisgICAgICAgICAgICB5aWVsZCBjdXJyZW50CisKKyAgICBkZWYgc3VwZXJuZXQoc2VsZiwgcHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKToKKyAgICAgICAgIiIiVGhlIHN1cGVybmV0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgbmV0d29yay4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY6IEFuIGludGVnZXIsIHRoZSBhbW91bnQgdGhlIHByZWZpeCBsZW5ndGggb2YKKyAgICAgICAgICAgICAgdGhlIG5ldHdvcmsgc2hvdWxkIGJlIGRlY3JlYXNlZCBieS4gIEZvciBleGFtcGxlLCBnaXZlbiBhCisgICAgICAgICAgICAgIC8yNCBuZXR3b3JrIGFuZCBhIHByZWZpeGxlbl9kaWZmIG9mIDMsIGEgc3VwZXJuZXQgd2l0aCBhCisgICAgICAgICAgICAgIC8yMSBuZXRtYXNrIGlzIHJldHVybmVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBJUHY0IG5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYgPCAwLiBJLmUuLCB5b3UgaGF2ZQorICAgICAgICAgICAgICBhIG5lZ2F0aXZlIHByZWZpeCBsZW5ndGguCisgICAgICAgICAgICAgICAgT1IKKyAgICAgICAgICAgIElmIHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4IGFyZSBib3RoIHNldCBvciBuZXdfcHJlZml4IGlzIGEKKyAgICAgICAgICAgICAgbGFyZ2VyIG51bWJlciB0aGFuIHRoZSBjdXJyZW50IHByZWZpeCAobGFyZ2VyIG51bWJlciBtZWFucyBhCisgICAgICAgICAgICAgIHNtYWxsZXIgbmV0d29yaykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGlmIG5ld19wcmVmaXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuZXdfcHJlZml4ID4gc2VsZi5fcHJlZml4bGVuOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBzaG9ydGVyJykKKyAgICAgICAgICAgIGlmIHByZWZpeGxlbl9kaWZmICE9IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IHNlbGYuX3ByZWZpeGxlbiAtIG5ld19wcmVmaXgKKworICAgICAgICBpZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgJ2N1cnJlbnQgcHJlZml4bGVuIGlzICVkLCBjYW5ub3QgaGF2ZSBhIHByZWZpeGxlbl9kaWZmIG9mICVkJyAlCisgICAgICAgICAgICAgICAgKHNlbGYucHJlZml4bGVuLCBwcmVmaXhsZW5fZGlmZikpCisgICAgICAgICMgVE9ETyAocG1vb2R5KTogb3B0aW1pemUgdGhpcy4KKyAgICAgICAgdCA9IHNlbGYuX19jbGFzc19fKCclcy8lZCcgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSkKKyAgICAgICAgcmV0dXJuIHQuX19jbGFzc19fKCclcy8lZCcgJSAodC5uZXR3b3JrX2FkZHJlc3MsIHQucHJlZml4bGVuKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIG11bHRpY2FzdCBhZGRyZXNzLgorICAgICAgICAgICAgU2VlIFJGQyAyMzczIDIuNyBmb3IgZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19tdWx0aWNhc3QgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19tdWx0aWNhc3QpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB3aXRoaW4gb25lIG9mIHRoZQorICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19yZXNlcnZlZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3Jlc2VydmVkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbGlua19sb2NhbCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX2xpbmtfbG9jYWwpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MTkzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3ByaXZhdGUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19wcml2YXRlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc191bnNwZWNpZmllZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19sb29wYmFjayBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX2xvb3BiYWNrKQorCisKK2NsYXNzIF9CYXNlVjQ6CisKKyAgICAiIiJCYXNlIElQdjQgb2JqZWN0LgorCisgICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIGJ5IElQdjQgb2JqZWN0cyBpbiBib3RoIHNpbmdsZSBJUAorICAgIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MuCisKKyAgICAiIiIKKworICAgICMgRXF1aXZhbGVudCB0byAyNTUuMjU1LjI1NS4yNTUgb3IgMzIgYml0cyBvZiAxJ3MuCisgICAgX0FMTF9PTkVTID0gKDIqKklQVjRMRU5HVEgpIC0gMQorICAgIF9ERUNJTUFMX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OScpCisKKyAgICAjIHRoZSB2YWxpZCBvY3RldHMgZm9yIGhvc3QgYW5kIG5ldG1hc2tzLiBvbmx5IHVzZWZ1bCBmb3IgSVB2NC4KKyAgICBfdmFsaWRfbWFza19vY3RldHMgPSBmcm96ZW5zZXQoKDI1NSwgMjU0LCAyNTIsIDI0OCwgMjQwLCAyMjQsIDE5MiwgMTI4LCAwKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDQKKyAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjRMRU5HVEgKKworICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgICAgICAiIiJUdXJuIHRoZSBnaXZlbiBJUCBzdHJpbmcgaW50byBhbiBpbnRlZ2VyIGZvciBjb21wYXJpc29uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVAgaXBfc3RyLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgSVAgaXBfc3RyIGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IGlmIGlwX3N0ciBpc24ndCBhIHZhbGlkIElQdjQgQWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlwX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eScpCisKKyAgICAgICAgb2N0ZXRzID0gaXBfc3RyLnNwbGl0KCcuJykKKyAgICAgICAgaWYgbGVuKG9jdGV0cykgIT0gNDoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJFeHBlY3RlZCA0IG9jdGV0cyBpbiAlciIgJSBpcF9zdHIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKG1hcChzZWxmLl9wYXJzZV9vY3RldCwgb2N0ZXRzKSwgJ2JpZycpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKKworICAgIGRlZiBfcGFyc2Vfb2N0ZXQoc2VsZiwgb2N0ZXRfc3RyKToKKyAgICAgICAgIiIiQ29udmVydCBhIGRlY2ltYWwgb2N0ZXQgaW50byBhbiBpbnRlZ2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvY3RldF9zdHI6IEEgc3RyaW5nLCB0aGUgbnVtYmVyIHRvIHBhcnNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgb2N0ZXQgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgb2N0ZXQgaXNuJ3Qgc3RyaWN0bHkgYSBkZWNpbWFsIGZyb20gWzAuLjI1NV0uCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBvY3RldF9zdHI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIikKKyAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgorICAgICAgICBpZiBub3Qgc2VsZi5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChvY3RldF9zdHIpOgorICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCisgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgorICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgorICAgICAgICBpZiBsZW4ob2N0ZXRfc3RyKSA+IDM6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAzIGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCisgICAgICAgICMgQ29udmVydCB0byBpbnRlZ2VyICh3ZSBrbm93IGRpZ2l0cyBhcmUgbGVnYWwpCisgICAgICAgIG9jdGV0X2ludCA9IGludChvY3RldF9zdHIsIDEwKQorICAgICAgICAjIEFueSBvY3RldHMgdGhhdCBsb29rIGxpa2UgdGhleSAqbWlnaHQqIGJlIHdyaXR0ZW4gaW4gb2N0YWwsCisgICAgICAgICMgYW5kIHdoaWNoIGRvbid0IGxvb2sgZXhhY3RseSB0aGUgc2FtZSBpbiBib3RoIG9jdGFsIGFuZAorICAgICAgICAjIGRlY2ltYWwgYXJlIHJlamVjdGVkIGFzIGFtYmlndW91cworICAgICAgICBpZiBvY3RldF9pbnQgPiA3IGFuZCBvY3RldF9zdHJbMF0gPT0gJzAnOgorICAgICAgICAgICAgbXNnID0gIkFtYmlndW91cyAob2N0YWwvZGVjaW1hbCkgdmFsdWUgaW4gJXIgbm90IHBlcm1pdHRlZCIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgb2N0ZXRfc3RyKQorICAgICAgICBpZiBvY3RldF9pbnQgPiAyNTU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPY3RldCAlZCAoPiAyNTUpIG5vdCBwZXJtaXR0ZWQiICUgb2N0ZXRfaW50KQorICAgICAgICByZXR1cm4gb2N0ZXRfaW50CisKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLCBpcF9pbnQpOgorICAgICAgICAiIiJUdXJucyBhIDMyLWJpdCBpbnRlZ2VyIGludG8gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX2ludDogQW4gaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gJy4nLmpvaW4obWFwKHN0ciwgaXBfaW50LnRvX2J5dGVzKDQsICdiaWcnKSkpCisKKyAgICBkZWYgX2lzX3ZhbGlkX25ldG1hc2soc2VsZiwgbmV0bWFzayk6CisgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBuZXRtYXNrIGlzIHZhbGlkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBuZXRtYXNrOiBBIHN0cmluZywgZWl0aGVyIGEgcHJlZml4IG9yIGRvdHRlZCBkZWNpbWFsCisgICAgICAgICAgICAgIG5ldG1hc2suCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgcHJlZml4IHJlcHJlc2VudHMgYSB2YWxpZCBJUHY0CisgICAgICAgICAgICBuZXRtYXNrLgorCisgICAgICAgICIiIgorICAgICAgICBtYXNrID0gbmV0bWFzay5zcGxpdCgnLicpCisgICAgICAgIGlmIGxlbihtYXNrKSA9PSA0OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciB4IGluIG1hc2s6CisgICAgICAgICAgICAgICAgICAgIGlmIGludCh4KSBub3QgaW4gc2VsZi5fdmFsaWRfbWFza19vY3RldHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICMgRm91bmQgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYW4gaW50ZWdlciBvciBpc24ndCB2YWxpZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZm9yIGlkeCwgeSBpbiBlbnVtZXJhdGUobWFzayk6CisgICAgICAgICAgICAgICAgaWYgaWR4ID4gMCBhbmQgeSA+IG1hc2tbaWR4IC0gMV06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV0bWFzayA9IGludChuZXRtYXNrKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gMCA8PSBuZXRtYXNrIDw9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIGRlZiBfaXNfaG9zdG1hc2soc2VsZiwgaXBfc3RyKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgSVAgc3RyaW5nIGlzIGEgaG9zdG1hc2sgKHJhdGhlciB0aGFuIGEgbmV0bWFzaykuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBwb3RlbnRpYWwgaG9zdG1hc2suCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgSVAgc3RyaW5nIGlzIGEgaG9zdG1hc2suCisKKyAgICAgICAgIiIiCisgICAgICAgIGJpdHMgPSBpcF9zdHIuc3BsaXQoJy4nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXJ0cyA9IFt4IGZvciB4IGluIG1hcChpbnQsIGJpdHMpIGlmIHggaW4gc2VsZi5fdmFsaWRfbWFza19vY3RldHNdCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gbGVuKGJpdHMpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHBhcnRzWzBdIDwgcGFydHNbLTFdOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWF4X3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisKK2NsYXNzIElQdjRBZGRyZXNzKF9CYXNlVjQsIF9CYXNlQWRkcmVzcyk6CisKKyAgICAiIiJSZXByZXNlbnQgYW5kIG1hbmlwdWxhdGUgc2luZ2xlIElQdjQgQWRkcmVzc2VzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorCisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKSA9PSBJUHY0QWRkcmVzcygzMjIxMjI1OTg1KS4KKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjRBZGRyZXNzKGludChJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykpKSA9PQorICAgICAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBpcGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIF9CYXNlQWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZVY0Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19pbnRfYWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5faXAgPSBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19wYWNrZWRfYWRkcmVzcyhhZGRyZXNzLCA0KQorICAgICAgICAgICAgc2VsZi5faXAgPSBpbnQuZnJvbV9ieXRlcyhhZGRyZXNzLCAnYmlnJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCisgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIHNlbGYuX2lwID0gc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJfc3RyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhY2tlZChzZWxmKToKKyAgICAgICAgIiIiVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MuIiIiCisgICAgICAgIHJldHVybiB2NF9pbnRfdG9fcGFja2VkKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB3aXRoaW4gdGhlCisgICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NCBOZXR3b3JrIHJhbmdlLgorCisgICAgICAgICIiIgorICAgICAgICByZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gcmVzZXJ2ZWRfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgMTkxOC4KKworICAgICAgICAiIiIKKyAgICAgICAgcHJpdmF0ZV8xMCA9IElQdjROZXR3b3JrKCcxMC4wLjAuMC84JykKKyAgICAgICAgcHJpdmF0ZV8xNzIgPSBJUHY0TmV0d29yaygnMTcyLjE2LjAuMC8xMicpCisgICAgICAgIHByaXZhdGVfMTkyID0gSVB2NE5ldHdvcmsoJzE5Mi4xNjguMC4wLzE2JykKKyAgICAgICAgcmV0dXJuIChzZWxmIGluIHByaXZhdGVfMTAgb3IKKyAgICAgICAgICAgICAgICBzZWxmIGluIHByaXZhdGVfMTcyIG9yCisgICAgICAgICAgICAgICAgc2VsZiBpbiBwcml2YXRlXzE5MikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBtdWx0aWNhc3QuCisgICAgICAgICAgICBTZWUgUkZDIDMxNzEgZm9yIGRldGFpbHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzIyNC4wLjAuMC80JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDU3MzUgMy4KKworICAgICAgICAiIiIKKyAgICAgICAgdW5zcGVjaWZpZWRfYWRkcmVzcyA9IElQdjRBZGRyZXNzKCcwLjAuMC4wJykKKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gdW5zcGVjaWZpZWRfYWRkcmVzcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgcGVyIFJGQyAzMzMwLgorCisgICAgICAgICIiIgorICAgICAgICBsb29wYmFja19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbG9vcGJhY2tfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBsaW5rLWxvY2FsIHBlciBSRkMgMzkyNy4KKworICAgICAgICAiIiIKKyAgICAgICAgbGlua2xvY2FsX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworCisKK2NsYXNzIElQdjRJbnRlcmZhY2UoSVB2NEFkZHJlc3MpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIChieXRlcywgaW50KSk6CisgICAgICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoc2VsZi5faXApCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKyAgICAgICAgSVB2NEFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkclswXSkKKworICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYubmV0d29yay5fcHJlZml4bGVuCisKKyAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29yay5wcmVmaXhsZW4pCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19lcXVhbCA9IElQdjRBZGRyZXNzLl9fZXFfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgbm90IGFkZHJlc3NfZXF1YWwgb3IgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzX2VxdWFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPT0gb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIEFuIGludGVyZmFjZSB3aXRoIGFuIGFzc29jaWF0ZWQgbmV0d29yayBpcyBOT1QgdGhlCisgICAgICAgICAgICAjIHNhbWUgYXMgYW4gdW5hc3NvY2lhdGVkIGFkZHJlc3MuIFRoYXQncyB3aHkgdGhlIGhhc2gKKyAgICAgICAgICAgICMgdGFrZXMgdGhlIGV4dHJhIGluZm8gaW50byBhY2NvdW50LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19sZXNzID0gSVB2NEFkZHJlc3MuX19sdF9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBhZGRyZXNzX2xlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA8IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBXZSAqZG8qIGFsbG93IGFkZHJlc3NlcyBhbmQgaW50ZXJmYWNlcyB0byBiZSBzb3J0ZWQuIFRoZQorICAgICAgICAgICAgIyB1bmFzc29jaWF0ZWQgYWRkcmVzcyBpcyBjb25zaWRlcmVkIGxlc3MgdGhhbiBhbGwgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgXiBzZWxmLl9wcmVmaXhsZW4gXiBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0bWFzaykKKworCitjbGFzcyBJUHY0TmV0d29yayhfQmFzZVY0LCBfQmFzZU5ldHdvcmspOgorCisgICAgIiIiVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuZCBtYW5pcHVsYXRlcyAzMi1iaXQgSVB2NCBuZXR3b3JrICsgYWRkcmVzc2VzLi4KKworICAgIEF0dHJpYnV0ZXM6IFtleGFtcGxlcyBmb3IgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNycpXQorICAgICAgICAubmV0d29ya19hZGRyZXNzOiBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgICAgICAgLmhvc3RtYXNrOiBJUHY0QWRkcmVzcygnMC4wLjAuMzEnKQorICAgICAgICAuYnJvYWRjYXN0X2FkZHJlc3M6IElQdjRBZGRyZXNzKCcxOTIuMC4yLjMyJykKKyAgICAgICAgLm5ldG1hc2s6IElQdjRBZGRyZXNzKCcyNTUuMjU1LjI1NS4yMjQnKQorICAgICAgICAucHJlZml4bGVuOiAyNworCisgICAgIiIiCisgICAgIyBDbGFzcyB0byB1c2Ugd2hlbiBjcmVhdGluZyBhZGRyZXNzIG9iamVjdHMKKyAgICBfYWRkcmVzc19jbGFzcyA9IElQdjRBZGRyZXNzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgc3RyaWN0PVRydWUpOgorCisgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjQgbmV0d29yayBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUCBbJiBuZXR3b3JrXS4KKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMC8yNCcKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMC8yNTUuMjU1LjI1NS4wJworICAgICAgICAgICAgICAnMTkyLjAuMC4yLzAuMC4wLjI1NScKKyAgICAgICAgICAgICAgYXJlIGFsbCBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgaW4gSVB2NC4gU2ltaWxhcmx5LAorICAgICAgICAgICAgICAnMTkyLjAuMi4xJworICAgICAgICAgICAgICAnMTkyLjAuMi4xLzI1NS4yNTUuMjU1LjI1NScKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMS8zMicKKyAgICAgICAgICAgICAgYXJlIGFsc28gZnVuY3Rpb25hbHkgZXF1aXZhbGVudC4gVGhhdCBpcyB0byBzYXksIGZhaWxpbmcgdG8KKyAgICAgICAgICAgICAgcHJvdmlkZSBhIHN1Ym5ldG1hc2sgd2lsbCBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBtYXNrIG9mIC8zMi4KKworICAgICAgICAgICAgICBJZiB0aGUgbWFzayAocG9ydGlvbiBhZnRlciB0aGUgLyBpbiB0aGUgYXJndW1lbnQpIGlzIGdpdmVuIGluCisgICAgICAgICAgICAgIGRvdHRlZCBxdWFkIGZvcm0sIGl0IGlzIHRyZWF0ZWQgYXMgYSBuZXRtYXNrIGlmIGl0IHN0YXJ0cyB3aXRoIGEKKyAgICAgICAgICAgICAgbm9uLXplcm8gZmllbGQgKGUuZy4gLzI1NS4wLjAuMCA9PSAvOCkgYW5kIGFzIGEgaG9zdG1hc2sgaWYgaXQKKyAgICAgICAgICAgICAgc3RhcnRzIHdpdGggYSB6ZXJvIGZpZWxkIChlLmcuIDAuMjU1LjI1NS4yNTUgPT0gLzgpLCB3aXRoIHRoZQorICAgICAgICAgICAgICBzaW5nbGUgZXhjZXB0aW9uIG9mIGFuIGFsbC16ZXJvIG1hc2sgd2hpY2ggaXMgdHJlYXRlZCBhcyBhCisgICAgICAgICAgICAgIG5ldG1hc2sgPT0gLzAuIElmIG5vIG1hc2sgaXMgZ2l2ZW4sIGEgZGVmYXVsdCBvZiAvMzIgaXMgdXNlZC4KKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMScpID09IElQdjROZXR3b3JrKDMyMjEyMjU5ODUpCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY0SW50ZXJmYWNlKGludChJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEnKSkpID09CisgICAgICAgICAgICAgICAgSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xJykKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgorICAgICAgICAgICAgTmV0bWFza1ZhbHVlRXJyb3I6IElmIHRoZSBuZXRtYXNrIGlzbid0IHZhbGlkIGZvcgorICAgICAgICAgICAgICBhbiBJUHY0IGFkZHJlc3MuCisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzdHJpY3QgaXMgVHJ1ZSBhbmQgYSBuZXR3b3JrIGFkZHJlc3MgaXMgbm90CisgICAgICAgICAgICAgIHN1cHBsaWVkLgorCisgICAgICAgICIiIgorCisgICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VOZXR3b3JrLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICAjZml4bWU6IGFkZHJlc3MvbmV0d29yayB0ZXN0IGhlcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICAjZml4bWU6IGFkZHJlc3MvbmV0d29yayB0ZXN0IGhlcmUuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgcHJlZml4IHN0cmluZy4KKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQorCisgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgorICAgICAgICAgICAgbWFzayA9IGFkZHJbMV0uc3BsaXQoJy4nKQorCisgICAgICAgICAgICBpZiBsZW4obWFzaykgPT0gNDoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgZG90dGVkIGRlY2ltYWwgbmV0bWFzay4KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9pc192YWxpZF9uZXRtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkclsxXSkpCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9pc19ob3N0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclsxXSkgXiBzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhZGRyWzFdKQorCisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21faXBfaW50KGludChzZWxmLm5ldG1hc2spKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBuZXRtYXNrIGluIHByZWZpeCBsZW5ndGggZm9ybS4KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IoJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRkclsxXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkclsxXSkKKyAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoCisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKSkKKworICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICBpZiAoSVB2NEFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIGludChzZWxmLm5ldG1hc2spKSAhPQorICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQorCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAoc2VsZi5fbWF4X3ByZWZpeGxlbiAtIDEpOgorICAgICAgICAgICAgc2VsZi5ob3N0cyA9IHNlbGYuX19pdGVyX18KKworCitjbGFzcyBfQmFzZVY2OgorCisgICAgIiIiQmFzZSBJUHY2IG9iamVjdC4KKworICAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCBieSBJUHY2IG9iamVjdHMgaW4gYm90aCBzaW5nbGUgSVAKKyAgICBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzLgorCisgICAgIiIiCisKKyAgICBfQUxMX09ORVMgPSAoMioqSVBWNkxFTkdUSCkgLSAxCisgICAgX0hFWFRFVF9DT1VOVCA9IDgKKyAgICBfSEVYX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZicpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSA2CisgICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY2TEVOR1RICisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgICAgICAiIiJUdXJuIGFuIElQdjYgaXBfc3RyIGludG8gYW4gaW50ZWdlci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQdjYgaXBfc3RyLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpbnQsIHRoZSBJUHY2IGFkZHJlc3MKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogaWYgaXBfc3RyIGlzbid0IGEgdmFsaWQgSVB2NiBBZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXBfc3RyOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoJ0FkZHJlc3MgY2Fubm90IGJlIGVtcHR5JykKKworICAgICAgICBwYXJ0cyA9IGlwX3N0ci5zcGxpdCgnOicpCisKKyAgICAgICAgIyBBbiBJUHY2IGFkZHJlc3MgbmVlZHMgYXQgbGVhc3QgMiBjb2xvbnMgKDMgcGFydHMpLgorICAgICAgICBfbWluX3BhcnRzID0gMworICAgICAgICBpZiBsZW4ocGFydHMpIDwgX21pbl9wYXJ0czoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBsZWFzdCAlZCBwYXJ0cyBleHBlY3RlZCBpbiAlciIgJSAoX21pbl9wYXJ0cywgaXBfc3RyKQorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQorCisgICAgICAgICMgSWYgdGhlIGFkZHJlc3MgaGFzIGFuIElQdjQtc3R5bGUgc3VmZml4LCBjb252ZXJ0IGl0IHRvIGhleGFkZWNpbWFsLgorICAgICAgICBpZiAnLicgaW4gcGFydHNbLTFdOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlwdjRfaW50ID0gSVB2NEFkZHJlc3MocGFydHMucG9wKCkpLl9pcAorICAgICAgICAgICAgZXhjZXB0IEFkZHJlc3NWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyV4JyAlICgoaXB2NF9pbnQgPj4gMTYpICYgMHhGRkZGKSkKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXgnICUgKGlwdjRfaW50ICYgMHhGRkZGKSkKKworICAgICAgICAjIEFuIElQdjYgYWRkcmVzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiA4IGNvbG9ucyAoOSBwYXJ0cykuCisgICAgICAgICMgVGhlIGV4dHJhIGNvbG9uIGNvbWVzIGZyb20gdXNpbmcgdGhlICI6OiIgbm90YXRpb24gZm9yIGEgc2luZ2xlCisgICAgICAgICMgbGVhZGluZyBvciB0cmFpbGluZyB6ZXJvIHBhcnQuCisgICAgICAgIF9tYXhfcGFydHMgPSBzZWxmLl9IRVhURVRfQ09VTlQgKyAxCisgICAgICAgIGlmIGxlbihwYXJ0cykgPiBfbWF4X3BhcnRzOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgJWQgY29sb25zIHBlcm1pdHRlZCBpbiAlciIgJSAoX21heF9wYXJ0cy0xLCBpcF9zdHIpCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCisKKyAgICAgICAgIyBEaXNyZWdhcmRpbmcgdGhlIGVuZHBvaW50cywgZmluZCAnOjonIHdpdGggbm90aGluZyBpbiBiZXR3ZWVuLgorICAgICAgICAjIFRoaXMgaW5kaWNhdGVzIHRoYXQgYSBydW4gb2YgemVyb2VzIGhhcyBiZWVuIHNraXBwZWQuCisgICAgICAgIHNraXBfaW5kZXggPSBOb25lCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihwYXJ0cykgLSAxKToKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1tpXToKKyAgICAgICAgICAgICAgICBpZiBza2lwX2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIENhbid0IGhhdmUgbW9yZSB0aGFuIG9uZSAnOjonCisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IG9uZSAnOjonIHBlcm1pdHRlZCBpbiAlciIgJSBpcF9zdHIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgIHNraXBfaW5kZXggPSBpCisKKyAgICAgICAgIyBwYXJ0c19oaSBpcyB0aGUgbnVtYmVyIG9mIHBhcnRzIHRvIGNvcHkgZnJvbSBhYm92ZS9iZWZvcmUgdGhlICc6OicKKyAgICAgICAgIyBwYXJ0c19sbyBpcyB0aGUgbnVtYmVyIG9mIHBhcnRzIHRvIGNvcHkgZnJvbSBiZWxvdy9hZnRlciB0aGUgJzo6JworICAgICAgICBpZiBza2lwX2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBJZiB3ZSBmb3VuZCBhICc6OicsIHRoZW4gY2hlY2sgaWYgaXQgYWxzbyBjb3ZlcnMgdGhlIGVuZHBvaW50cy4KKyAgICAgICAgICAgIHBhcnRzX2hpID0gc2tpcF9pbmRleAorICAgICAgICAgICAgcGFydHNfbG8gPSBsZW4ocGFydHMpIC0gc2tpcF9pbmRleCAtIDEKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKKyAgICAgICAgICAgICAgICBwYXJ0c19oaSAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFydHNfaGk6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgXjogcmVxdWlyZXMgXjo6CisgICAgICAgICAgICBpZiBub3QgcGFydHNbLTFdOgorICAgICAgICAgICAgICAgIHBhcnRzX2xvIC09IDEKKyAgICAgICAgICAgICAgICBpZiBwYXJ0c19sbzoKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgOiQgcmVxdWlyZXMgOjokCisgICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gc2VsZi5fSEVYVEVUX0NPVU5UIC0gKHBhcnRzX2hpICsgcGFydHNfbG8pCisgICAgICAgICAgICBpZiBwYXJ0c19za2lwcGVkIDwgMToKKyAgICAgICAgICAgICAgICBtc2cgPSAiRXhwZWN0ZWQgYXQgbW9zdCAlZCBvdGhlciBwYXJ0cyB3aXRoICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKHNlbGYuX0hFWFRFVF9DT1VOVC0xLCBpcF9zdHIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPdGhlcndpc2UsIGFsbG9jYXRlIHRoZSBlbnRpcmUgYWRkcmVzcyB0byBwYXJ0c19oaS4gIFRoZQorICAgICAgICAgICAgIyBlbmRwb2ludHMgY291bGQgc3RpbGwgYmUgZW1wdHksIGJ1dCBfcGFyc2VfaGV4dGV0KCkgd2lsbCBjaGVjaworICAgICAgICAgICAgIyBmb3IgdGhhdC4KKyAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gc2VsZi5fSEVYVEVUX0NPVU5UOgorICAgICAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5ICVkIHBhcnRzIGV4cGVjdGVkIHdpdGhvdXQgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULCBpcF9zdHIpKQorICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgorICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyBeOiByZXF1aXJlcyBeOjoKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1stMV06CisgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKKyAgICAgICAgICAgIHBhcnRzX2hpID0gbGVuKHBhcnRzKQorICAgICAgICAgICAgcGFydHNfbG8gPSAwCisgICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gMAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTm93LCBwYXJzZSB0aGUgaGV4dGV0cyBpbnRvIGEgMTI4LWJpdCBpbnRlZ2VyLgorICAgICAgICAgICAgaXBfaW50ID0gMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFydHNfaGkpOgorICAgICAgICAgICAgICAgIGlwX2ludCA8PD0gMTYKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gc2VsZi5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQorICAgICAgICAgICAgaXBfaW50IDw8PSAxNiAqIHBhcnRzX3NraXBwZWQKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1wYXJ0c19sbywgMCk6CisgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgorICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICByZXR1cm4gaXBfaW50CisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKKworICAgIGRlZiBfcGFyc2VfaGV4dGV0KHNlbGYsIGhleHRldF9zdHIpOgorICAgICAgICAiIiJDb252ZXJ0IGFuIElQdjYgaGV4dGV0IHN0cmluZyBpbnRvIGFuIGludGVnZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGhleHRldF9zdHI6IEEgc3RyaW5nLCB0aGUgbnVtYmVyIHRvIHBhcnNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgaGV4dGV0IGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIGlucHV0IGlzbid0IHN0cmljdGx5IGEgaGV4IG51bWJlciBmcm9tCisgICAgICAgICAgICAgIFswLi5GRkZGXS4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgorICAgICAgICBpZiBub3Qgc2VsZi5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBoZXggZGlnaXRzIHBlcm1pdHRlZCBpbiAlciIgJSBoZXh0ZXRfc3RyKQorICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKKyAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKKyAgICAgICAgaWYgbGVuKGhleHRldF9zdHIpID4gNDoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDQgY2hhcmFjdGVycyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIGhleHRldF9zdHIpCisgICAgICAgICMgTGVuZ3RoIGNoZWNrIG1lYW5zIHdlIGNhbiBza2lwIGNoZWNraW5nIHRoZSBpbnRlZ2VyIHZhbHVlCisgICAgICAgIHJldHVybiBpbnQoaGV4dGV0X3N0ciwgMTYpCisKKyAgICBkZWYgX2NvbXByZXNzX2hleHRldHMoc2VsZiwgaGV4dGV0cyk6CisgICAgICAgICIiIkNvbXByZXNzZXMgYSBsaXN0IG9mIGhleHRldHMuCisKKyAgICAgICAgQ29tcHJlc3NlcyBhIGxpc3Qgb2Ygc3RyaW5ncywgcmVwbGFjaW5nIHRoZSBsb25nZXN0IGNvbnRpbnVvdXMKKyAgICAgICAgc2VxdWVuY2Ugb2YgIjAiIGluIHRoZSBsaXN0IHdpdGggIiIgYW5kIGFkZGluZyBlbXB0eSBzdHJpbmdzIGF0CisgICAgICAgIHRoZSBiZWdpbm5pbmcgb3IgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHN1Y2ggdGhhdCBzdWJzZXF1ZW50bHkKKyAgICAgICAgY2FsbGluZyAiOiIuam9pbihoZXh0ZXRzKSB3aWxsIHByb2R1Y2UgdGhlIGNvbXByZXNzZWQgdmVyc2lvbiBvZgorICAgICAgICB0aGUgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBoZXh0ZXRzOiBBIGxpc3Qgb2Ygc3RyaW5ncywgdGhlIGhleHRldHMgdG8gY29tcHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgbGlzdCBvZiBzdHJpbmdzLgorCisgICAgICAgICIiIgorICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKKyAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9sZW4gPSAwCisgICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKKyAgICAgICAgZG91YmxlY29sb25fbGVuID0gMAorICAgICAgICBmb3IgaW5kZXgsIGhleHRldCBpbiBlbnVtZXJhdGUoaGV4dGV0cyk6CisgICAgICAgICAgICBpZiBoZXh0ZXQgPT0gJzAnOgorICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX2xlbiArPSAxCisgICAgICAgICAgICAgICAgaWYgZG91YmxlY29sb25fc3RhcnQgPT0gLTE6CisgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgYSBzZXF1ZW5jZSBvZiB6ZXJvcy4KKyAgICAgICAgICAgICAgICAgICAgZG91YmxlY29sb25fc3RhcnQgPSBpbmRleAorICAgICAgICAgICAgICAgIGlmIGRvdWJsZWNvbG9uX2xlbiA+IGJlc3RfZG91YmxlY29sb25fbGVuOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgemVyb3Mgc28gZmFyLgorICAgICAgICAgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2xlbiA9IGRvdWJsZWNvbG9uX2xlbgorICAgICAgICAgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ID0gZG91YmxlY29sb25fc3RhcnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZG91YmxlY29sb25fbGVuID0gMAorICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKKworICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX2xlbiA+IDE6CisgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2VuZCA9IChiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuKQorICAgICAgICAgICAgIyBGb3IgemVyb3MgYXQgdGhlIGVuZCBvZiB0aGUgYWRkcmVzcy4KKyAgICAgICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fZW5kID09IGxlbihoZXh0ZXRzKToKKyAgICAgICAgICAgICAgICBoZXh0ZXRzICs9IFsnJ10KKyAgICAgICAgICAgIGhleHRldHNbYmVzdF9kb3VibGVjb2xvbl9zdGFydDpiZXN0X2RvdWJsZWNvbG9uX2VuZF0gPSBbJyddCisgICAgICAgICAgICAjIEZvciB6ZXJvcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhZGRyZXNzLgorICAgICAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9PSAwOgorICAgICAgICAgICAgICAgIGhleHRldHMgPSBbJyddICsgaGV4dGV0cworCisgICAgICAgIHJldHVybiBoZXh0ZXRzCisKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLCBpcF9pbnQ9Tm9uZSk6CisgICAgICAgICIiIlR1cm5zIGEgMTI4LWJpdCBpbnRlZ2VyIGludG8gaGV4YWRlY2ltYWwgbm90YXRpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX2ludDogQW4gaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3MuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogVGhlIGFkZHJlc3MgaXMgYmlnZ2VyIHRoYW4gMTI4IGJpdHMgb2YgYWxsIG9uZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlwX2ludCBpcyBOb25lOgorICAgICAgICAgICAgaXBfaW50ID0gaW50KHNlbGYuX2lwKQorCisgICAgICAgIGlmIGlwX2ludCA+IHNlbGYuX0FMTF9PTkVTOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSVB2NiBhZGRyZXNzIGlzIHRvbyBsYXJnZScpCisKKyAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKKyAgICAgICAgaGV4dGV0cyA9IFsnJXgnICUgaW50KGhleF9zdHJbeDp4KzRdLCAxNikgZm9yIHggaW4gcmFuZ2UoMCwgMzIsIDQpXQorCisgICAgICAgIGhleHRldHMgPSBzZWxmLl9jb21wcmVzc19oZXh0ZXRzKGhleHRldHMpCisgICAgICAgIHJldHVybiAnOicuam9pbihoZXh0ZXRzKQorCisgICAgZGVmIF9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoc2VsZik6CisgICAgICAgICIiIkV4cGFuZCBhIHNob3J0ZW5lZCBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgZXhwYW5kZWQgSVB2NiBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIElQdjZOZXR3b3JrKToKKyAgICAgICAgICAgIGlwX3N0ciA9IHN0cihzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYsIElQdjZJbnRlcmZhY2UpOgorICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYuaXApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpcF9zdHIgPSBzdHIoc2VsZikKKworICAgICAgICBpcF9pbnQgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoaXBfc3RyKQorICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAorICAgICAgICBwYXJ0cyA9IFtoZXhfc3RyW3g6eCs0XSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZiwgKF9CYXNlTmV0d29yaywgSVB2NkludGVyZmFjZSkpOgorICAgICAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoJzonLmpvaW4ocGFydHMpLCBzZWxmLl9wcmVmaXhsZW4pCisgICAgICAgIHJldHVybiAnOicuam9pbihwYXJ0cykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKworY2xhc3MgSVB2NkFkZHJlc3MoX0Jhc2VWNiwgX0Jhc2VBZGRyZXNzKToKKworICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NiBBZGRyZXNzZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgYWRkcmVzcyBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUAorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpID09CisgICAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjApCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY2QWRkcmVzcyhpbnQoSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKSkpID09CisgICAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX2lwID0gYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcGFja2VkX2FkZHJlc3MoYWRkcmVzcywgMTYpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGludC5mcm9tX2J5dGVzKGFkZHJlc3MsICdiaWcnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHN0cmluZy4KKyAgICAgICAgYWRkcl9zdHIgPSBzdHIoYWRkcmVzcykKKyAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFja2VkKHNlbGYpOgorICAgICAgICAiIiJUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYWRkcmVzcy4iIiIKKyAgICAgICAgcmV0dXJuIHY2X2ludF90b19wYWNrZWQoc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBtdWx0aWNhc3QgYWRkcmVzcy4KKyAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZmMDA6Oi84JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICByZXNlcnZlZCBJUHY2IE5ldHdvcmsgcmFuZ2VzLgorCisgICAgICAgICIiIgorICAgICAgICByZXNlcnZlZF9uZXR3b3JrcyA9IFtJUHY2TmV0d29yaygnOjovOCcpLCBJUHY2TmV0d29yaygnMTAwOjovOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwOjovNycpLCBJUHY2TmV0d29yaygnNDAwOjovNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzQwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCc2MDAwOjovMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0EwMDA6Oi8zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0YwMDA6Oi81JyksIElQdjZOZXR3b3JrKCdGODAwOjovNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnRkUwMDo6LzknKV0KKworICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4geCBmb3IgeCBpbiByZXNlcnZlZF9uZXR3b3JrcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MjkxLgorCisgICAgICAgICIiIgorICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3NpdGVfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIHNpdGUtbG9jYWwuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBzaXRlLWxvY2FsIGFkZHJlc3Mgc3BhY2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSBSRkMgMzg3OS4KKyAgICAgICAgVXNlIGlzX3ByaXZhdGUgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbAorICAgICAgICBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSBSRkMgNDE5My4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgMzUxMyAyLjUuNi4KKworICAgICAgICAiIiIKKyAgICAgICAgc2l0ZWxvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmVjMDo6LzEwJykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2l0ZWxvY2FsX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19wcml2YXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQxOTMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHByaXZhdGVfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmYzAwOjovNycpCisgICAgICAgIHJldHVybiBzZWxmIGluIHByaXZhdGVfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAxCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXB2NF9tYXBwZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgSVB2NCBtYXBwZWQgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSWYgdGhlIElQdjYgYWRkcmVzcyBpcyBhIHY0IG1hcHBlZCBhZGRyZXNzLCByZXR1cm4gdGhlCisgICAgICAgICAgICBJUHY0IG1hcHBlZCBhZGRyZXNzLiBSZXR1cm4gTm9uZSBvdGhlcndpc2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChzZWxmLl9pcCA+PiAzMikgIT0gMHhGRkZGOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKHNlbGYuX2lwICYgMHhGRkZGRkZGRikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0ZXJlZG8oc2VsZik6CisgICAgICAgICIiIlR1cGxlIG9mIGVtYmVkZGVkIHRlcmVkbyBJUHMuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFR1cGxlIG9mIHRoZSAoc2VydmVyLCBjbGllbnQpIElQcyBvciBOb25lIGlmIHRoZSBhZGRyZXNzCisgICAgICAgICAgICBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHRlcmVkbyBhZGRyZXNzIChkb2Vzbid0IHN0YXJ0IHdpdGgKKyAgICAgICAgICAgIDIwMDE6Oi8zMikKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgKHNlbGYuX2lwID4+IDk2KSAhPSAweDIwMDEwMDAwOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIChJUHY0QWRkcmVzcygoc2VsZi5faXAgPj4gNjQpICYgMHhGRkZGRkZGRiksCisgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MofnNlbGYuX2lwICYgMHhGRkZGRkZGRikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l4dG9mb3VyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIElQdjQgNnRvNCBlbWJlZGRlZCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgSVB2NCA2dG80LWVtYmVkZGVkIGFkZHJlc3MgaWYgcHJlc2VudCBvciBOb25lIGlmIHRoZQorICAgICAgICAgICAgYWRkcmVzcyBkb2Vzbid0IGFwcGVhciB0byBjb250YWluIGEgNnRvNCBlbWJlZGRlZCBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiAoc2VsZi5faXAgPj4gMTEyKSAhPSAweDIwMDI6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3MoKHNlbGYuX2lwID4+IDgwKSAmIDB4RkZGRkZGRkYpCisKKworY2xhc3MgSVB2NkludGVyZmFjZShJUHY2QWRkcmVzcyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGJ5dGVzLCBpbnQpKToKKyAgICAgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhzZWxmLl9pcCkKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQorICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgIHNlbGYubmV0bWFzayA9IHNlbGYubmV0d29yay5uZXRtYXNrCisgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYubmV0d29yay5fcHJlZml4bGVuCisgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmsucHJlZml4bGVuKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfZXF1YWwgPSBJUHY2QWRkcmVzcy5fX2VxX18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzX2VxdWFsIG9yIGFkZHJlc3NfZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzc19lcXVhbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrID09IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBBbiBpbnRlcmZhY2Ugd2l0aCBhbiBhc3NvY2lhdGVkIG5ldHdvcmsgaXMgTk9UIHRoZQorICAgICAgICAgICAgIyBzYW1lIGFzIGFuIHVuYXNzb2NpYXRlZCBhZGRyZXNzLiBUaGF0J3Mgd2h5IHRoZSBoYXNoCisgICAgICAgICAgICAjIHRha2VzIHRoZSBleHRyYSBpbmZvIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfbGVzcyA9IElQdjZBZGRyZXNzLl9fbHRfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgYWRkcmVzc19sZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPCBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgV2UgKmRvKiBhbGxvdyBhZGRyZXNzZXMgYW5kIGludGVyZmFjZXMgdG8gYmUgc29ydGVkLiBUaGUKKyAgICAgICAgICAgICMgdW5hc3NvY2lhdGVkIGFkZHJlc3MgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gYWxsIGludGVyZmFjZXMuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXAoc2VsZik6CisgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAwIGFuZCBzZWxmLm5ldHdvcmsuaXNfdW5zcGVjaWZpZWQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDEgYW5kIHNlbGYubmV0d29yay5pc19sb29wYmFjaworCisKK2NsYXNzIElQdjZOZXR3b3JrKF9CYXNlVjYsIF9CYXNlTmV0d29yayk6CisKKyAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW5kIG1hbmlwdWxhdGVzIDEyOC1iaXQgSVB2NiBuZXR3b3Jrcy4KKworICAgIEF0dHJpYnV0ZXM6IFtleGFtcGxlcyBmb3IgSVB2NignMjAwMTpkYjg6OjEwMDAvMTI0JyldCisgICAgICAgIC5uZXR3b3JrX2FkZHJlc3M6IElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisgICAgICAgIC5ob3N0bWFzazogSVB2NkFkZHJlc3MoJzo6ZicpCisgICAgICAgIC5icm9hZGNhc3RfYWRkcmVzczogSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDBmJykKKyAgICAgICAgLm5ldG1hc2s6IElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZjAnKQorICAgICAgICAucHJlZml4bGVuOiAxMjQKKworICAgICIiIgorCisgICAgIyBDbGFzcyB0byB1c2Ugd2hlbiBjcmVhdGluZyBhZGRyZXNzIG9iamVjdHMKKyAgICBfYWRkcmVzc19jbGFzcyA9IElQdjZBZGRyZXNzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgc3RyaWN0PVRydWUpOgorICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBJUHY2IE5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVB2NiBuZXR3b3JrIG9yIHRoZQorICAgICAgICAgICAgICBJUCBhbmQgcHJlZml4L25ldG1hc2suCisgICAgICAgICAgICAgICcyMDAxOmRiODo6LzEyOCcKKyAgICAgICAgICAgICAgJzIwMDE6ZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwLzEyOCcKKyAgICAgICAgICAgICAgJzIwMDE6ZGI4OjonCisgICAgICAgICAgICAgIGFyZSBhbGwgZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGluIElQdjYuICBUaGF0IGlzIHRvIHNheSwKKyAgICAgICAgICAgICAgZmFpbGluZyB0byBwcm92aWRlIGEgc3VibmV0bWFzayB3aWxsIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aAorICAgICAgICAgICAgICBhIG1hc2sgb2YgLzEyOC4KKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjonKSA9PQorICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwKQorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoaW50KElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykpKSA9PQorICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykKKworICAgICAgICAgICAgc3RyaWN0OiBBIGJvb2xlYW4uIElmIHRydWUsIGVuc3VyZSB0aGF0IHdlIGhhdmUgYmVlbiBwYXNzZWQKKyAgICAgICAgICAgICAgQSB0cnVlIG5ldHdvcmsgYWRkcmVzcywgZWcsIDIwMDE6ZGI4OjoxMDAwLzEyNCBhbmQgbm90IGFuCisgICAgICAgICAgICAgIElQIGFkZHJlc3Mgb24gYSBuZXR3b3JrLCBlZywgMjAwMTpkYjg6OjEvMTI0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgorICAgICAgICAgICAgTmV0bWFza1ZhbHVlRXJyb3I6IElmIHRoZSBuZXRtYXNrIGlzbid0IHZhbGlkIGZvcgorICAgICAgICAgICAgICBhbiBJUHY2IGFkZHJlc3MuCisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzdHJpY3Qgd2FzIFRydWUgYW5kIGEgbmV0d29yayBhZGRyZXNzIHdhcyBub3QKKyAgICAgICAgICAgICAgc3VwcGxpZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIF9CYXNlVjYuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VOZXR3b3JrLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHByZWZpeCBzdHJpbmcuCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQorCisgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgorICAgICAgICAgICAgaWYgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkclsxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IoJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRkclsxXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZi5fcHJlZml4bGVuKSkKKyAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgaWYgKElQdjZBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KKyAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgaGFzIGhvc3QgYml0cyBzZXQnICUgc2VsZikKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKKworICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gKHNlbGYuX21heF9wcmVmaXhsZW4gLSAxKToKKyAgICAgICAgICAgIHNlbGYuaG9zdHMgPSBzZWxmLl9faXRlcl9fCisKKyAgICBkZWYgX2lzX3ZhbGlkX25ldG1hc2soc2VsZiwgcHJlZml4bGVuKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIG5ldG1hc2svcHJlZml4bGVuIGlzIHZhbGlkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEEgc3RyaW5nLCB0aGUgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm1hdC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBwcmVmaXggcmVwcmVzZW50cyBhIHZhbGlkIElQdjYKKyAgICAgICAgICAgIG5ldG1hc2suCisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByZWZpeGxlbiA9IGludChwcmVmaXhsZW4pCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAwIDw9IHByZWZpeGxlbiA8PSBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfc2l0ZV9sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHNpdGUtbG9jYWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IFJGQyAzODc5LgorICAgICAgICBVc2UgaXNfcHJpdmF0ZSB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUgc3BhY2Ugb2YgdW5pcXVlIGxvY2FsCisgICAgICAgIGFkZHJlc3NlcyBhcyBkZWZpbmVkIGJ5IFJGQyA0MTkzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3NpdGVfbG9jYWwgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19zaXRlX2xvY2FsKQpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggZGMxMTU1Yi4uMDdmZDY5NiAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC0xMjEsOCArMTIxLDcgQEAKICAgICAgICAgICAgICAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYIGVzY2FwZSIKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIGVuZCkpCiAgICAgICAgICAgICB1bmkgPSBpbnQoZXNjLCAxNikKLSAgICAgICAgICAgICMgQ2hlY2sgZm9yIHN1cnJvZ2F0ZSBwYWlyIG9uIFVDUy00IHN5c3RlbXMKLSAgICAgICAgICAgIGlmIDB4ZDgwMCA8PSB1bmkgPD0gMHhkYmZmIGFuZCBzeXMubWF4dW5pY29kZSA+IDY1NTM1OgorICAgICAgICAgICAgaWYgMHhkODAwIDw9IHVuaSA8PSAweGRiZmY6CiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgXFx1WFhYWFxcdVhYWFggc3Vycm9nYXRlIHBhaXIiCiAgICAgICAgICAgICAgICAgaWYgbm90IHNbZW5kICsgNTplbmQgKyA3XSA9PSAnXFx1JzoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBlbmQpKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvX19tYWluX18ucHkgYi9MaWIvbGliMnRvMy9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDY4OGJhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2xpYjJ0bzMvX19tYWluX18ucHkKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgc3lzCitmcm9tIC5tYWluIGltcG9ydCBtYWluCisKK3N5cy5leGl0KG1haW4oImxpYjJ0bzMuZml4ZXMiKSkKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkgYi9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CmluZGV4IGFmYzA0NjcuLmIxNzYwNTYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQpAQCAtMjcsNyArMjcsNiBAQAogICAgIHBhdHRlcm5fdHJlZSA9IE5vbmUgIyBUcmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXR0ZXJuCiAgICAgb3B0aW9ucyA9IE5vbmUgICMgT3B0aW9ucyBvYmplY3QgcGFzc2VkIHRvIGluaXRpYWxpemVyCiAgICAgZmlsZW5hbWUgPSBOb25lICMgVGhlIGZpbGVuYW1lIChzZXQgYnkgc2V0X2ZpbGVuYW1lKQotICAgIGxvZ2dlciA9IE5vbmUgICAjIEEgbG9nZ2VyIChzZXQgYnkgc2V0X2ZpbGVuYW1lKQogICAgIG51bWJlcnMgPSBpdGVydG9vbHMuY291bnQoMSkgIyBGb3IgbmV3X25hbWUoKQogICAgIHVzZWRfbmFtZXMgPSBzZXQoKSAjIEEgc2V0IG9mIGFsbCB1c2VkIE5BTUVzCiAgICAgb3JkZXIgPSAicG9zdCIgIyBEb2VzIHRoZSBmaXhlciBwcmVmZXIgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbApAQCAtNzAsMTIgKzY5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfdHJlZT1UcnVlKQogCiAgICAgZGVmIHNldF9maWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIlNldCB0aGUgZmlsZW5hbWUsIGFuZCBhIGxvZ2dlciBkZXJpdmVkIGZyb20gaXQuCisgICAgICAgICIiIlNldCB0aGUgZmlsZW5hbWUuCiAKICAgICAgICAgVGhlIG1haW4gcmVmYWN0b3JpbmcgdG9vbCBzaG91bGQgY2FsbCB0aGlzLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoZmlsZW5hbWUpCiAKICAgICBkZWYgbWF0Y2goc2VsZiwgbm9kZSk6CiAgICAgICAgICIiIlJldHVybnMgbWF0Y2ggZm9yIGEgZ2l2ZW4gcGFyc2UgdHJlZSBub2RlLgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvcHl0cmVlLnB5CmluZGV4IGZhNDk0MmYuLjE3Y2JmMGEgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy9weXRyZWUucHkKQEAgLTEwOSwyNiArMTA5LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBzZXRfcHJlZml4KHNlbGYsIHByZWZpeCk6Ci0gICAgICAgICIiIgotICAgICAgICBTZXQgdGhlIHByZWZpeCBmb3IgdGhlIG5vZGUgKHNlZSBMZWFmIGNsYXNzKS4KLQotICAgICAgICBERVBSRUNBVEVEOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSBkaXJlY3RseS4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oInNldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4Ci0KLSAgICBkZWYgZ2V0X3ByZWZpeChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUgcHJlZml4IGZvciB0aGUgbm9kZSAoc2VlIExlYWYgY2xhc3MpLgotCi0gICAgICAgIERFUFJFQ0FURUQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IGRpcmVjdGx5LgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2FybigiZ2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmV0dXJuIHNlbGYucHJlZml4Ci0KICAgICBkZWYgcmVwbGFjZShzZWxmLCBuZXcpOgogICAgICAgICAiIiJSZXBsYWNlIHRoaXMgbm9kZSB3aXRoIGEgbmV3IG9uZSBpbiB0aGUgcGFyZW50LiIiIgogICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmUsIHN0cihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQppbmRleCAzOGZiOGVkLi4yMDFlMTkzIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQpAQCAtNTY2LDcgKzU2Niw3IEBACiAgICAgICAgIGJsb2NrX2xpbmVubyA9IE5vbmUKICAgICAgICAgaW5kZW50ID0gTm9uZQogICAgICAgICBsaW5lbm8gPSAwCi0gICAgICAgIGZvciBsaW5lIGluIGlucHV0LnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgIGZvciBsaW5lIGluIGlucHV0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSk6CiAgICAgICAgICAgICBsaW5lbm8gKz0gMQogICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKHNlbGYuUFMxKToKICAgICAgICAgICAgICAgICBpZiBibG9jayBpcyBub3QgTm9uZToKQEAgLTYxMCw3ICs2MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgZXJyLl9fY2xhc3NfXy5fX25hbWVfXywgZXJyKQogICAgICAgICAgICAgcmV0dXJuIGJsb2NrCiAgICAgICAgIGlmIHNlbGYucmVmYWN0b3JfdHJlZSh0cmVlLCBmaWxlbmFtZSk6Ci0gICAgICAgICAgICBuZXcgPSBzdHIodHJlZSkuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgbmV3ID0gc3RyKHRyZWUpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICMgVW5kbyB0aGUgYWRqdXN0bWVudCBvZiB0aGUgbGluZSBudW1iZXJzIGluIHdyYXBfdG9rcygpIGJlbG93LgogICAgICAgICAgICAgY2xpcHBlZCwgbmV3ID0gbmV3WzpsaW5lbm8tMV0sIG5ld1tsaW5lbm8tMTpdCiAgICAgICAgICAgICBhc3NlcnQgY2xpcHBlZCA9PSBbIlxuIl0gKiAobGluZW5vLTEpLCBjbGlwcGVkCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CmluZGV4IGFjN2Q5MDAuLmEyYWIxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CkBAIC0zMSwyMyArMzEsNiBAQAogCiAgICAgIiIiVW5pdCB0ZXN0cyBmb3Igbm9kZXMgKEJhc2UsIExlYWYsIE5vZGUpLiIiIgogCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMiw2KToKLSAgICAgICAgIyB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyBpcyBuZXcgaW4gMi42LgotICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX3ByZWZpeF9tZXRob2RzKHNlbGYpOgotICAgICAgICAgICAgbCA9IHB5dHJlZS5MZWFmKDEwMCwgImZvbyIpCi0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobC5nZXRfcHJlZml4KCksICIiKQotICAgICAgICAgICAgICAgIGwuc2V0X3ByZWZpeCgiaGkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLnByZWZpeCwgImhpIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAyKQotICAgICAgICAgICAgZm9yIHdhcm5pbmcgaW4gdzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FybmluZy5jYXRlZ29yeSBpcyBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3WzBdLm1lc3NhZ2UpLCAiZ2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7ICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSB0aGUgcHJlZml4IHByb3BlcnR5IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbMV0ubWVzc2FnZSksICJzZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHRoZSBwcmVmaXggcHJvcGVydHkiKQotCiAgICAgZGVmIHRlc3RfaW5zdGFudGlhdGVfYmFzZShzZWxmKToKICAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICAgIyBUZXN0IHRoYXQgaW5zdGFudGlhdGluZyBCYXNlKCkgcmFpc2VzIGFuIEFzc2VydGlvbkVycm9yCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDVjYjI4NjYuLmZhMDNmNzggMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0zNiwxNSArMzYsOSBAQAogICAgICAgICAgICAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywgJ2xhc3RSZXNvcnQnXQogCiB0cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQotdHJ5OgotICAgIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0aHJlYWQgPSBOb25lCitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBfX2F1dGhvcl9fICA9ICJWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAcmVkLWRvdmUuY29tPiIKIF9fc3RhdHVzX18gID0gInByb2R1Y3Rpb24iCkBAIC02NSwxNiArNTksMTYgQEAKICAgICBfc3JjZmlsZSA9IF9fZmlsZV9fCiBfc3JjZmlsZSA9IG9zLnBhdGgubm9ybWNhc2UoX3NyY2ZpbGUpCiAKLSMgbmV4dCBiaXQgZmlsY2hlZCBmcm9tIDEuNS4yJ3MgaW5zcGVjdC5weQotZGVmIGN1cnJlbnRmcmFtZSgpOgotICAgICIiIlJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuIiIiCi0gICAgdHJ5OgotICAgICAgICByYWlzZSBFeGNlcHRpb24KLSAgICBleGNlcHQ6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAotaWYgaGFzYXR0cihzeXMsICdfZ2V0ZnJhbWUnKTogY3VycmVudGZyYW1lID0gbGFtYmRhOiBzeXMuX2dldGZyYW1lKDMpCi0jIGRvbmUgZmlsY2hpbmcKK2lmIGhhc2F0dHIoc3lzLCAnX2dldGZyYW1lJyk6CisgICAgY3VycmVudGZyYW1lID0gbGFtYmRhOiBzeXMuX2dldGZyYW1lKDMpCitlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgorICAgIGRlZiBjdXJyZW50ZnJhbWUoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvYmplY3QgZm9yIHRoZSBjYWxsZXIncyBzdGFjayBmcmFtZS4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAogIyBfc3JjZmlsZSBpcyBvbmx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBzeXMuX2dldGZyYW1lKCkuCiAjIFRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiwgc2V0IF9zcmNmaWxlCkBAIC05MiwyMiArODYsMjIgQEAKICNyYWlzZUV4Y2VwdGlvbnMgaXMgdXNlZCB0byBzZWUgaWYgZXhjZXB0aW9ucyBkdXJpbmcgaGFuZGxpbmcgc2hvdWxkIGJlCiAjcHJvcGFnYXRlZAogIwotcmFpc2VFeGNlcHRpb25zID0gMQorcmFpc2VFeGNlcHRpb25zID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IHRocmVhZGluZyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dUaHJlYWRzID0gMQorbG9nVGhyZWFkcyA9IFRydWUKIAogIwogIyBJZiB5b3UgZG9uJ3Qgd2FudCBtdWx0aXByb2Nlc3NpbmcgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nTXVsdGlwcm9jZXNzaW5nID0gMQorbG9nTXVsdGlwcm9jZXNzaW5nID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IHByb2Nlc3MgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nUHJvY2Vzc2VzID0gMQorbG9nUHJvY2Vzc2VzID0gVHJ1ZQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjICAgTGV2ZWwgcmVsYXRlZCBzdHVmZgpAQCAtMTk3LDkgKzE5MSw5IEBACiAjdGhlIGxvY2sgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWNxdWlyZWQgLSBzbyB3ZSBuZWVkIGFuIFJMb2NrLgogI1RoZSBzYW1lIGFyZ3VtZW50IGFwcGxpZXMgdG8gTG9nZ2VycyBhbmQgTWFuYWdlci5sb2dnZXJEaWN0LgogIwotaWYgdGhyZWFkOgoraWYgdGhyZWFkaW5nOgogICAgIF9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKLWVsc2U6CitlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgIF9sb2NrID0gTm9uZQogCiAKQEAgLTI1Miw3ICsyNDYsNyBAQAogICAgICAgICAjIGR1cmluZyBmb3JtYXR0aW5nLCB3ZSB0ZXN0IHRvIHNlZSBpZiB0aGUgYXJnIGlzIHByZXNlbnQgdXNpbmcKICAgICAgICAgIyAnaWYgc2VsZi5hcmdzOicuIElmIHRoZSBldmVudCBiZWluZyBsb2dnZWQgaXMgZS5nLiAnVmFsdWUgaXMgJWQnCiAgICAgICAgICMgYW5kIGlmIHRoZSBwYXNzZWQgYXJnIGZhaWxzICdpZiBzZWxmLmFyZ3M6JyB0aGVuIG5vIGZvcm1hdHRpbmcKLSAgICAgICAgIyBpcyBkb25lLiBGb3IgZXhhbXBsZSwgbG9nZ2VyLndhcm4oJ1ZhbHVlIGlzICVkJywgMCkgd291bGQgbG9nCisgICAgICAgICMgaXMgZG9uZS4gRm9yIGV4YW1wbGUsIGxvZ2dlci53YXJuaW5nKCdWYWx1ZSBpcyAlZCcsIDApIHdvdWxkIGxvZwogICAgICAgICAjICdWYWx1ZSBpcyAlZCcgaW5zdGVhZCBvZiAnVmFsdWUgaXMgMCcuCiAgICAgICAgICMgRm9yIHRoZSB1c2UgY2FzZSBvZiBwYXNzaW5nIGEgZGljdGlvbmFyeSwgdGhpcyBzaG91bGQgbm90IGJlIGEKICAgICAgICAgIyBwcm9ibGVtLgpAQCAtMjc2LDEzICsyNzAsMTMgQEAKICAgICAgICAgc2VsZi5jcmVhdGVkID0gY3QKICAgICAgICAgc2VsZi5tc2VjcyA9IChjdCAtIGludChjdCkpICogMTAwMAogICAgICAgICBzZWxmLnJlbGF0aXZlQ3JlYXRlZCA9IChzZWxmLmNyZWF0ZWQgLSBfc3RhcnRUaW1lKSAqIDEwMDAKLSAgICAgICAgaWYgbG9nVGhyZWFkcyBhbmQgdGhyZWFkOgotICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgaWYgbG9nVGhyZWFkcyBhbmQgdGhyZWFkaW5nOgorICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgIHNlbGYudGhyZWFkTmFtZSA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgICAgIHNlbGYudGhyZWFkTmFtZSA9IE5vbmUKLSAgICAgICAgaWYgbm90IGxvZ011bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgaWYgbm90IGxvZ011bHRpcHJvY2Vzc2luZzogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzTmFtZSA9ICdNYWluUHJvY2VzcycKQEAgLTI5NCw3ICsyODgsNyBAQAogICAgICAgICAgICAgICAgICMgZm9yIGFuIGV4YW1wbGUKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSBtcC5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGlmIGxvZ1Byb2Nlc3NlcyBhbmQgaGFzYXR0cihvcywgJ2dldHBpZCcpOgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzID0gb3MuZ2V0cGlkKCkKQEAgLTQ2Niw2ICs0NjAsOSBAQAogICAgICAgICBzZWxmLl9mbXQgPSBzZWxmLl9zdHlsZS5fZm10CiAgICAgICAgIHNlbGYuZGF0ZWZtdCA9IGRhdGVmbXQKIAorICAgIGRlZmF1bHRfdGltZV9mb3JtYXQgPSAnJVktJW0tJWQgJUg6JU06JVMnCisgICAgZGVmYXVsdF9tc2VjX2Zvcm1hdCA9ICclcywlMDNkJworCiAgICAgZGVmIGZvcm1hdFRpbWUoc2VsZiwgcmVjb3JkLCBkYXRlZm10PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgTG9nUmVjb3JkIGFzIGZvcm1hdHRlZCB0ZXh0LgpAQCAtNDg4LDggKzQ4NSw4IEBACiAgICAgICAgIGlmIGRhdGVmbXQ6CiAgICAgICAgICAgICBzID0gdGltZS5zdHJmdGltZShkYXRlZm10LCBjdCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsIGN0KQotICAgICAgICAgICAgcyA9ICIlcywlMDNkIiAlICh0LCByZWNvcmQubXNlY3MpICMgdGhlIHVzZSBvZiAlIGhlcmUgaXMgaW50ZXJuYWwKKyAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKHNlbGYuZGVmYXVsdF90aW1lX2Zvcm1hdCwgY3QpCisgICAgICAgICAgICBzID0gc2VsZi5kZWZhdWx0X21zZWNfZm9ybWF0ICUgKHQsIHJlY29yZC5tc2VjcykKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBmb3JtYXRFeGNlcHRpb24oc2VsZiwgZWkpOgpAQCAtNjQyLDExICs2MzksMTEgQEAKICAgICAgICAgeWVzLiBJZiBkZWVtZWQgYXBwcm9wcmlhdGUsIHRoZSByZWNvcmQgbWF5IGJlIG1vZGlmaWVkIGluLXBsYWNlLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5ubGVuID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBzZWxmLm5hbWUgPT0gcmVjb3JkLm5hbWU6Ci0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiByZWNvcmQubmFtZS5maW5kKHNlbGYubmFtZSwgMCwgc2VsZi5ubGVuKSAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gKHJlY29yZC5uYW1lW3NlbGYubmxlbl0gPT0gIi4iKQogCiBjbGFzcyBGaWx0ZXJlcihvYmplY3QpOgpAQCAtNjg2LDE0ICs2ODMsMTQgQEAKIAogICAgICAgICAgICBBbGxvdyBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgogICAgICAgICAiIiIKLSAgICAgICAgcnYgPSAxCisgICAgICAgIHJ2ID0gVHJ1ZQogICAgICAgICBmb3IgZiBpbiBzZWxmLmZpbHRlcnM6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKGYsICdmaWx0ZXInKToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmLmZpbHRlcihyZWNvcmQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYocmVjb3JkKSAjIGFzc3VtZSBjYWxsYWJsZSAtIHdpbGwgcmFpc2UgaWYgbm90CiAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgIHJ2ID0gMAorICAgICAgICAgICAgICAgIHJ2ID0gRmFsc2UKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICByZXR1cm4gcnYKIApAQCAtNzcyLDkgKzc2OSw5IEBACiAgICAgICAgICIiIgogICAgICAgICBBY3F1aXJlIGEgdGhyZWFkIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBJL08uCiAgICAgICAgICIiIgotICAgICAgICBpZiB0aHJlYWQ6CisgICAgICAgIGlmIHRocmVhZGluZzoKICAgICAgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5STG9jaygpCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLmxvY2sgPSBOb25lCiAKICAgICBkZWYgYWNxdWlyZShzZWxmKToKQEAgLTc5Myw3ICs3OTAsNyBAQAogCiAgICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuCisgICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKIApAQCAtODg5LDcgKzg4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBzeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0xvZ2dlZCBmcm9tIGZpbGUgJXMsIGxpbmUgJXNcbicgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmlsZW5hbWUsIHJlY29yZC5saW5lbm8pKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBwYXNzICAgICMgc2VlIGlzc3VlIDU5NzEKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIGVpCkBAIC05NDIsNyArOTM5LDcgQEAKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShtc2cpCiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoc2VsZi50ZXJtaW5hdG9yKQogICAgICAgICAgICAgc2VsZi5mbHVzaCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtOTUxLDE0ICs5NDgsMTIgQEAKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gZGlzayBmaWxlcy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAgICAgICAgICIiIgogICAgICAgICAja2VlcCB0aGUgYWJzb2x1dGUgcGF0aCwgb3RoZXJ3aXNlIGRlcml2ZWQgY2xhc3NlcyB3aGljaCB1c2UgdGhpcwogICAgICAgICAjbWF5IGNvbWUgYSBjcm9wcGVyIHdoZW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNoYW5nZXMKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCkBAIC05OTAsMTEgKzk4NSw3IEBACiAgICAgICAgIE9wZW4gdGhlIGN1cnJlbnQgYmFzZSBmaWxlIHdpdGggdGhlIChvcmlnaW5hbCkgbW9kZSBhbmQgZW5jb2RpbmcuCiAgICAgICAgIFJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmVhbS4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHN0cmVhbSA9IG9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cmVhbSA9IGNvZGVjcy5vcGVuKHNlbGYuYmFzZUZpbGVuYW1lLCBzZWxmLm1vZGUsIHNlbGYuZW5jb2RpbmcpCi0gICAgICAgIHJldHVybiBzdHJlYW0KKyAgICAgICAgcmV0dXJuIG9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSwgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtMTIwNiwxMyArMTE5NywxMyBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKICAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0gICAgICAgIHNlbGYucHJvcGFnYXRlID0gMQorICAgICAgICBzZWxmLnByb3BhZ2F0ZSA9IFRydWUKICAgICAgICAgc2VsZi5oYW5kbGVycyA9IFtdCi0gICAgICAgIHNlbGYuZGlzYWJsZWQgPSAwCisgICAgICAgIHNlbGYuZGlzYWJsZWQgPSBGYWxzZQogCiAgICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGxvZ2dlci4KKyAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgbG9nZ2VyLiAgbGV2ZWwgbXVzdCBiZSBhbiBpbnQgb3IgYSBzdHIuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCiAKQEAgLTEyNTIsNyArMTI0MywxMCBAQAogICAgICAgICBpZiBzZWxmLmlzRW5hYmxlZEZvcihXQVJOSU5HKToKICAgICAgICAgICAgIHNlbGYuX2xvZyhXQVJOSU5HLCBtc2csIGFyZ3MsICoqa3dhcmdzKQogCi0gICAgd2FybiA9IHdhcm5pbmcKKyAgICBkZWYgd2FybihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgIHNlbGYud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTM2MSw5ICsxMzU1LDkgQEAKICAgICAgICAgICAgICNJcm9uUHl0aG9uIGNhbiB1c2UgbG9nZ2luZy4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jLCBzaW5mbyA9IHNlbGYuZmluZENhbGxlcihzdGFja19pbmZvKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCiAgICAgICAgIGlmIGV4Y19pbmZvOgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjX2luZm8sIHR1cGxlKToKQEAgLTE0NzUsNyArMTQ2OSw3IEBACiAgICAgICAgIElzIHRoaXMgbG9nZ2VyIGVuYWJsZWQgZm9yIGxldmVsICdsZXZlbCc/CiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLm1hbmFnZXIuZGlzYWJsZSA+PSBsZXZlbDoKLSAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIGxldmVsID49IHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKQogCiAgICAgZGVmIGdldENoaWxkKHNlbGYsIHN1ZmZpeCk6CkBAIC0xNTY1LDcgKzE1NTksMTAgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubG9nKFdBUk5JTkcsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgd2FybiA9IHdhcm5pbmcKKyAgICBkZWYgd2FybihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgIHNlbGYud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTU3Nyw3ICsxNTc0LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIERlbGVnYXRlIGFuIGV4Y2VwdGlvbiBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IDEKKyAgICAgICAga3dhcmdzWyJleGNfaW5mbyJdID0gVHJ1ZQogICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgY3JpdGljYWwoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTY2MCw2ICsxNjU3LDEwIEBACiAgICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgIHRoYXQgdGhpcyBhcmd1bWVudCBpcyBpbmNvbXBhdGlibGUgd2l0aCAnZmlsZW5hbWUnIC0gaWYgYm90aAogICAgICAgICAgICAgICBhcmUgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4KKyAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgICAgaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJvb3QgaGFuZGxlci4gQW55IGhhbmRsZXIKKyAgICAgICAgICAgICAgaW4gdGhlIGxpc3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIGZvcm1hdHRlciBhc3NpZ25lZCB3aWxsIGJlCisgICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgogCiAgICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCkBAIC0xNjY3LDMzICsxNjY4LDUwIEBACiAgICAgdXNpbmcgc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyKSwgd2hlcmVhcyBGaWxlSGFuZGxlciBjbG9zZXMgaXRzIHN0cmVhbQogICAgIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgogCi0gICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuMgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAgQWRkZWQgdGhlIGBgc3R5bGVgYCBwYXJhbWV0ZXIuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIEFkZGVkIHRoZSBgYGhhbmRsZXJzYGAgcGFyYW1ldGVyLiBBIGBgVmFsdWVFcnJvcmBgIGlzIG5vdyB0aHJvd24gZm9yCisgICAgICAgaW5jb21wYXRpYmxlIGFyZ3VtZW50cyAoZS5nLiBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKKyAgICAgICBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgLCBvciBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgIHNwZWNpZmllZAorICAgICAgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCwgb3IgYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCisgICAgICAgYGBzdHJlYW1gYC4KICAgICAiIiIKICAgICAjIEFkZCB0aHJlYWQgc2FmZXR5IGluIGNhc2Ugc29tZW9uZSBtaXN0YWtlbmx5IGNhbGxzCiAgICAgIyBiYXNpY0NvbmZpZygpIGZyb20gbXVsdGlwbGUgdGhyZWFkcwogICAgIF9hY3F1aXJlTG9jaygpCiAgICAgdHJ5OgogICAgICAgICBpZiBsZW4ocm9vdC5oYW5kbGVycykgPT0gMDoKLSAgICAgICAgICAgIGZpbGVuYW1lID0ga3dhcmdzLnBvcCgiZmlsZW5hbWUiLCBOb25lKQotICAgICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5wb3AoImZpbGVtb2RlIiwgJ2EnKQotICAgICAgICAgICAgICAgIGhkbHIgPSBGaWxlSGFuZGxlcihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIGhhbmRsZXJzID0ga3dhcmdzLmdldCgiaGFuZGxlcnMiKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3MgYW5kICJmaWxlbmFtZSIgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInc3RyZWFtJyBhbmQgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIHRvZ2V0aGVyIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLnBvcCgic3RyZWFtIiwgTm9uZSkKLSAgICAgICAgICAgICAgICBoZGxyID0gU3RyZWFtSGFuZGxlcihzdHJlYW0pCi0gICAgICAgICAgICBmcyA9IGt3YXJncy5wb3AoImZvcm1hdCIsIEJBU0lDX0ZPUk1BVCkKLSAgICAgICAgICAgIGRmcyA9IGt3YXJncy5wb3AoImRhdGVmbXQiLCBOb25lKQotICAgICAgICAgICAgc3R5bGUgPSBrd2FyZ3MucG9wKCJzdHlsZSIsICclJykKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3Mgb3IgImZpbGVuYW1lIiBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIG9yICdmaWxlbmFtZScgc2hvdWxkIG5vdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCB0b2dldGhlciB3aXRoICdoYW5kbGVycyciKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGt3YXJncy5nZXQoImZpbGVuYW1lIikKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5nZXQoImZpbGVtb2RlIiwgJ2EnKQorICAgICAgICAgICAgICAgICAgICBoID0gRmlsZUhhbmRsZXIoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLmdldCgic3RyZWFtIikKKyAgICAgICAgICAgICAgICAgICAgaCA9IFN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gW2hdCisgICAgICAgICAgICBmcyA9IGt3YXJncy5nZXQoImZvcm1hdCIsIEJBU0lDX0ZPUk1BVCkKKyAgICAgICAgICAgIGRmcyA9IGt3YXJncy5nZXQoImRhdGVmbXQiLCBOb25lKQorICAgICAgICAgICAgc3R5bGUgPSBrd2FyZ3MuZ2V0KCJzdHlsZSIsICclJykKICAgICAgICAgICAgIGZtdCA9IEZvcm1hdHRlcihmcywgZGZzLCBzdHlsZSkKLSAgICAgICAgICAgIGhkbHIuc2V0Rm9ybWF0dGVyKGZtdCkKLSAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoZGxyKQotICAgICAgICAgICAgbGV2ZWwgPSBrd2FyZ3MucG9wKCJsZXZlbCIsIE5vbmUpCisgICAgICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgICAgICBpZiBoLmZvcm1hdHRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmbXQpCisgICAgICAgICAgICAgICAgcm9vdC5hZGRIYW5kbGVyKGgpCisgICAgICAgICAgICBsZXZlbCA9IGt3YXJncy5nZXQoImxldmVsIikKICAgICAgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJvb3Quc2V0TGV2ZWwobGV2ZWwpCi0gICAgICAgICAgICBpZiBrd2FyZ3M6Ci0gICAgICAgICAgICAgICAgcyA9ICcsICcuam9pbihrd2FyZ3Mua2V5cygpKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuZXhwZWN0ZWQgaW4ga2V5d29yZCBhcmd1bWVudHM6ICVzJyAlIHMpCiAgICAgZmluYWxseToKICAgICAgICAgX3JlbGVhc2VMb2NrKCkKIApAQCAtMTc1NCw3ICsxNzcyLDEwIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290Lndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLXdhcm4gPSB3YXJuaW5nCitkZWYgd2Fybihtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogZGVmIGluZm8obXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpAQCAtMTgzOSwxMCArMTg2MCwxMCBAQAogICAgIHBhY2thZ2UuCiAgICAgIiIiCiAgICAgZGVmIGhhbmRsZShzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgY3JlYXRlTG9jayhzZWxmKToKICAgICAgICAgc2VsZi5sb2NrID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDM3M2RhMmIuLjVlZjVjOTEgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTI0LDEzICsyNCwxMyBAQAogVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nJyBhbmQgbG9nIGF3YXkhCiAiIiIKIAotaW1wb3J0IHN5cywgbG9nZ2luZywgbG9nZ2luZy5oYW5kbGVycywgc29ja2V0LCBzdHJ1Y3QsIG9zLCB0cmFjZWJhY2ssIHJlCi1pbXBvcnQgdHlwZXMsIGlvCitpbXBvcnQgc3lzLCBsb2dnaW5nLCBsb2dnaW5nLmhhbmRsZXJzLCBzb2NrZXQsIHN0cnVjdCwgdHJhY2ViYWNrLCByZQoraW1wb3J0IGlvCiAKIHRyeToKICAgICBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkID0gTm9uZQogCiBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcgpAQCAtOTgsOSArOTgsNiBAQAogZGVmIF9zdHJpcF9zcGFjZXMoYWxpc3QpOgogICAgIHJldHVybiBtYXAobGFtYmRhIHg6IHguc3RyaXAoKSwgYWxpc3QpCiAKLWRlZiBfZW5jb2RlZChzKToKLSAgICByZXR1cm4gcyBpZiBpc2luc3RhbmNlKHMsIHN0cikgZWxzZSBzLmVuY29kZSgndXRmLTgnKQotCiBkZWYgX2NyZWF0ZV9mb3JtYXR0ZXJzKGNwKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBmb3JtYXR0ZXJzIiIiCiAgICAgZmxpc3QgPSBjcFsiZm9ybWF0dGVycyJdWyJrZXlzIl0KQEAgLTIxNSw3ICsyMTIsNyBAQAogICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICBleGlzdGluZy5zb3J0KCkKICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTU4OCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgICAgICAgICAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAgICAgICAgICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KCkKICAgICAgICAgICAgICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgICAgICAgICAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICAgICAgICAgICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTc4Niw3ICs3ODMsNyBAQAogICAgIGFuZCB3aGljaCB5b3UgY2FuIGpvaW4oKSB3aGVuIGFwcHJvcHJpYXRlLiBUbyBzdG9wIHRoZSBzZXJ2ZXIsIGNhbGwKICAgICBzdG9wTGlzdGVuaW5nKCkuCiAgICAgIiIiCi0gICAgaWYgbm90IHRocmVhZDoKKyAgICBpZiBub3QgdGhyZWFkOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJsaXN0ZW4oKSBuZWVkcyB0aHJlYWRpbmcgdG8gd29yayIpCiAKICAgICBjbGFzcyBDb25maWdTdHJlYW1IYW5kbGVyKFN0cmVhbVJlcXVlc3RIYW5kbGVyKToKQEAgLTgwNCw3ICs4MDEsNiBAQAogICAgICAgICAgICAgc3RydWN0LnBhY2soIj5MIiwgbiksIGZvbGxvd2VkIGJ5IHRoZSBjb25maWcgZmlsZS4KICAgICAgICAgICAgIFVzZXMgZmlsZUNvbmZpZygpIHRvIGRvIHRoZSBncnVudCB3b3JrLgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3YoNCkKQEAgLTgyNSw3ICs4MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb25maWcoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggODM0OWQzYS4uZjI4NmNkNiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0LDE4ICsyNCwxNCBAQAogIiIiCiAKIGltcG9ydCBlcnJubywgbG9nZ2luZywgc29ja2V0LCBvcywgcGlja2xlLCBzdHJ1Y3QsIHRpbWUsIHJlCitmcm9tIGNvZGVjcyBpbXBvcnQgQk9NX1VURjgKIGZyb20gc3RhdCBpbXBvcnQgU1RfREVWLCBTVF9JTk8sIFNUX01USU1FCiBpbXBvcnQgcXVldWUKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi10cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQogIwogIyBTb21lIGNvbnN0YW50cy4uLgogIwpAQCAtNTUsMTUgKzUxLDE1IEBACiAgICAgTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gIEluc3RlYWQsIHVzZSBSb3RhdGluZ0ZpbGVIYW5kbGVyCiAgICAgb3IgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBVc2UgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBmb3Igc3RyZWFtZWQgbG9nZ2luZwogICAgICAgICAiIiIKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLm5hbWVyID0gTm9uZQorICAgICAgICBzZWxmLnJvdGF0b3IgPSBOb25lCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTc2LDE3ICs3Miw1NSBAQAogICAgICAgICAgICAgaWYgc2VsZi5zaG91bGRSb2xsb3ZlcihyZWNvcmQpOgogICAgICAgICAgICAgICAgIHNlbGYuZG9Sb2xsb3ZlcigpCiAgICAgICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKIAorICAgIGRlZiByb3RhdGlvbl9maWxlbmFtZShzZWxmLCBkZWZhdWx0X25hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgTW9kaWZ5IHRoZSBmaWxlbmFtZSBvZiBhIGxvZyBmaWxlIHdoZW4gcm90YXRpbmcuCisKKyAgICAgICAgVGhpcyBpcyBwcm92aWRlZCBzbyB0aGF0IGEgY3VzdG9tIGZpbGVuYW1lIGNhbiBiZSBwcm92aWRlZC4KKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICAgIGhhbmRsZXIsIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIGRlZmF1bHQgbmFtZSB0bworICAgICAgICBpdC4gSWYgdGhlIGF0dHJpYnV0ZSBpc24ndCBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgTm9uZSksIHRoZSBuYW1lCisgICAgICAgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgICA6cGFyYW0gZGVmYXVsdF9uYW1lOiBUaGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgbG9nIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5uYW1lcik6CisgICAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0X25hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYubmFtZXIoZGVmYXVsdF9uYW1lKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcm90YXRlKHNlbGYsIHNvdXJjZSwgZGVzdCk6CisgICAgICAgICIiIgorICAgICAgICBXaGVuIHJvdGF0aW5nLCByb3RhdGUgdGhlIGN1cnJlbnQgbG9nLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZQorICAgICAgICBoYW5kbGVyLCBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBzb3VyY2UgYW5kIGRlc3QgYXJndW1lbnRzIHRvCisgICAgICAgIGl0LiBJZiB0aGUgYXR0cmlidXRlIGlzbid0IGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBOb25lKSwgdGhlIHNvdXJjZQorICAgICAgICBpcyBzaW1wbHkgcmVuYW1lZCB0byB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIHNvdXJjZSBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseSB0aGUgYmFzZQorICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICAgIDpwYXJhbSBkZXN0OiAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseQorICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHRoZSBzb3VyY2UgaXMgcm90YXRlZCB0bywgZS5nLiAndGVzdC5sb2cuMScuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5yb3RhdG9yKToKKyAgICAgICAgICAgIG9zLnJlbmFtZShzb3VyY2UsIGRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJvdGF0b3Ioc291cmNlLCBkZXN0KQorCiBjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyKEJhc2VSb3RhdGluZ0hhbmRsZXIpOgogICAgICIiIgogICAgIEhhbmRsZXIgZm9yIGxvZ2dpbmcgdG8gYSBzZXQgb2YgZmlsZXMsIHdoaWNoIHN3aXRjaGVzIGZyb20gb25lIGZpbGUKICAgICB0byB0aGUgbmV4dCB3aGVuIHRoZSBjdXJyZW50IGZpbGUgcmVhY2hlcyBhIGNlcnRhaW4gc2l6ZS4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAKQEAgLTEyNywxNiArMTYxLDE3IEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmJhY2t1cENvdW50IC0gMSwgMCwgLTEpOgotICAgICAgICAgICAgICAgIHNmbiA9ICIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsIGkpCi0gICAgICAgICAgICAgICAgZGZuID0gIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSArIDEpCisgICAgICAgICAgICAgICAgc2ZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZSgiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLCBpKSkKKyAgICAgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKCIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZm4pOgogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKICAgICAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHNmbiwgZGZuKQotICAgICAgICAgICAgZGZuID0gc2VsZi5iYXNlRmlsZW5hbWUgKyAiLjEiCisgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4xIikKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQorICAgICAgICAgICAgc2VsZi5yb3RhdGUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKIAogICAgIGRlZiBzaG91bGRSb2xsb3ZlcihzZWxmLCByZWNvcmQpOgpAQCAtMTgzLDE5ICsyMTgsMTkgQEAKICAgICAgICAgaWYgc2VsZi53aGVuID09ICdTJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSAxICMgb25lIHNlY29uZAogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0tJVMiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnTSc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgIyBvbmUgbWludXRlCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZF8lSC0lTSIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuID09ICdIJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICMgb25lIGhvdXIKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkXyVIIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4gPT0gJ0QnIG9yIHNlbGYud2hlbiA9PSAnTUlETklHSFQnOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICogNjAgKiAyNCAjIG9uZSBkYXkKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4uc3RhcnRzd2l0aCgnVycpOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICogNjAgKiAyNCAqIDcgIyBvbmUgd2VlawogICAgICAgICAgICAgaWYgbGVuKHNlbGYud2hlbikgIT0gMjoKQEAgLTIwNCw3ICsyMzksNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF5IHNwZWNpZmllZCBmb3Igd2Vla2x5IHJvbGxvdmVyOiAlcyIgJSBzZWxmLndoZW4pCiAgICAgICAgICAgICBzZWxmLmRheU9mV2VlayA9IGludChzZWxmLndoZW5bMV0pCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHJvbGxvdmVyIGludGVydmFsIHNwZWNpZmllZDogJXMiICUgc2VsZi53aGVuKQogCkBAIC0zMzcsMTAgKzM3MiwxMSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGFkZGVuZCA9IC0zNjAwCiAgICAgICAgICAgICAgICAgdGltZVR1cGxlID0gdGltZS5sb2NhbHRpbWUodCArIGFkZGVuZCkKLSAgICAgICAgZGZuID0gc2VsZi5iYXNlRmlsZW5hbWUgKyAiLiIgKyB0aW1lLnN0cmZ0aW1lKHNlbGYuc3VmZml4LCB0aW1lVHVwbGUpCisgICAgICAgIGRmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUgKyAiLiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoc2VsZi5zdWZmaXgsIHRpbWVUdXBsZSkpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQotICAgICAgICBvcy5yZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKKyAgICAgICAgc2VsZi5yb3RhdGUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKICAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgICBmb3IgcyBpbiBzZWxmLmdldEZpbGVzVG9EZWxldGUoKToKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocykKQEAgLTM3OSw3ICs0MTUsNyBAQAogICAgIFRoaXMgaGFuZGxlciBpcyBiYXNlZCBvbiBhIHN1Z2dlc3Rpb24gYW5kIHBhdGNoIGJ5IENoYWQgSi4KICAgICBTY2hyb2VkZXIuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UpOgogICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZywgZGVsYXkpCiAgICAgICAgIHNlbGYuZGV2LCBzZWxmLmlubyA9IC0xLCAtMQogICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKQEAgLTQzOCwxNSArNDc0LDE1IEBACiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplcyB0aGUgaGFuZGxlciB3aXRoIGEgc3BlY2lmaWMgaG9zdCBhZGRyZXNzIGFuZCBwb3J0LgogCi0gICAgICAgIFRoZSBhdHRyaWJ1dGUgJ2Nsb3NlT25FcnJvcicgaXMgc2V0IHRvIDEgLSB3aGljaCBtZWFucyB0aGF0IGlmCi0gICAgICAgIGEgc29ja2V0IGVycm9yIG9jY3VycywgdGhlIHNvY2tldCBpcyBzaWxlbnRseSBjbG9zZWQgYW5kIHRoZW4KLSAgICAgICAgcmVvcGVuZWQgb24gdGhlIG5leHQgbG9nZ2luZyBjYWxsLgorICAgICAgICBXaGVuIHRoZSBhdHRyaWJ1dGUgKmNsb3NlT25FcnJvciogaXMgc2V0IHRvIFRydWUgLSBpZiBhIHNvY2tldCBlcnJvcgorICAgICAgICBvY2N1cnMsIHRoZSBzb2NrZXQgaXMgc2lsZW50bHkgY2xvc2VkIGFuZCB0aGVuIHJlb3BlbmVkIG9uIHRoZSBuZXh0CisgICAgICAgIGxvZ2dpbmcgY2FsbC4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQotICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IDAKKyAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSBGYWxzZQogICAgICAgICBzZWxmLnJldHJ5VGltZSA9IE5vbmUKICAgICAgICAgIwogICAgICAgICAjIEV4cG9uZW50aWFsIGJhY2tvZmYgcGFyYW1ldGVycy4KQEAgLTQ2Myw4ICs0OTksMTIgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgaWYgaGFzYXR0cihzLCAnc2V0dGltZW91dCcpOgogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KHRpbWVvdXQpCi0gICAgICAgIHMuY29ubmVjdCgoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQotICAgICAgICByZXR1cm4gcworICAgICAgICB0cnk6CisgICAgICAgICAgICBzLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKKyAgICAgICAgICAgIHJldHVybiBzCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgY3JlYXRlU29ja2V0KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTQ3Nyw3ICs1MTcsNyBAQAogICAgICAgICAjIGlzIHRoZSBmaXJzdCB0aW1lIGJhY2sgYWZ0ZXIgYSBkaXNjb25uZWN0LCBvcgogICAgICAgICAjIHdlJ3ZlIHdhaXRlZCBsb25nIGVub3VnaC4KICAgICAgICAgaWYgc2VsZi5yZXRyeVRpbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGF0dGVtcHQgPSAxCisgICAgICAgICAgICBhdHRlbXB0ID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXR0ZW1wdCA9IChub3cgPj0gc2VsZi5yZXRyeVRpbWUpCiAgICAgICAgIGlmIGF0dGVtcHQ6CkBAIC01MTAsMTQgKzU1MCwxNCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5zb2NrLCAic2VuZGFsbCIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChzKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZWxzZTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICAgICAgc2VudHNvZmFyID0gMAogICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbGVuKHMpCiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIGxlZnQgPiAwOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VudCA9IHNlbGYuc29jay5zZW5kKHNbc2VudHNvZmFyOl0pCiAgICAgICAgICAgICAgICAgICAgICAgICBzZW50c29mYXIgPSBzZW50c29mYXIgKyBzZW50CiAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdCAtIHNlbnQKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZSAgIyBzbyB3ZSBjYW4gY2FsbCBjcmVhdGVTb2NrZXQgbmV4dCB0aW1lCiAKQEAgLTU2Nyw3ICs2MDcsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzID0gc2VsZi5tYWtlUGlja2xlKHJlY29yZCkKICAgICAgICAgICAgIHNlbGYuc2VuZChzKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTYwMSw3ICs2NDEsNyBAQAogICAgICAgICBJbml0aWFsaXplcyB0aGUgaGFuZGxlciB3aXRoIGEgc3BlY2lmaWMgaG9zdCBhZGRyZXNzIGFuZCBwb3J0LgogICAgICAgICAiIiIKICAgICAgICAgU29ja2V0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0KQotICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IDAKKyAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSBGYWxzZQogCiAgICAgZGVmIG1ha2VTb2NrZXQoc2VsZik6CiAgICAgICAgICIiIgpAQCAtNzQyLDEwICs3ODIsMTAgQEAKICAgICAgICAgc2VsZi5zb2NrdHlwZSA9IHNvY2t0eXBlCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBzdHIpOgotICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gMQorICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fY29ubmVjdF91bml4c29ja2V0KGFkZHJlc3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSAwCisgICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrdHlwZSkKICAgICAgICAgICAgIGlmIHNvY2t0eXBlID09IHNvY2tldC5TT0NLX1NUUkVBTToKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jb25uZWN0KGFkZHJlc3MpCkBAIC03NzgsOCArODE4LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYudW5peHNvY2tldDoKLSAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICBsb2dnaW5nLkhhbmRsZXIuY2xvc2Uoc2VsZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCkBAIC03OTQsNiArODMzLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnByaW9yaXR5X21hcC5nZXQobGV2ZWxOYW1lLCAid2FybmluZyIpCiAKKyAgICBpZGVudCA9ICcnICAgICAgICAgICMgcHJlcGVuZGVkIHRvIGFsbCBtZXNzYWdlcwogICAgIGFwcGVuZF9udWwgPSBUcnVlICAgIyBzb21lIG9sZCBzeXNsb2cgZGFlbW9ucyBleHBlY3QgYSBOVUwgdGVybWluYXRvcgogCiAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKQEAgLTgwNCw2ICs4NDQsOCBAQAogICAgICAgICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgcHJlc2VudCwgaXQgaXMgTk9UIHNlbnQgdG8gdGhlIHNlcnZlci4KICAgICAgICAgIiIiCiAgICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKKyAgICAgICAgaWYgc2VsZi5pZGVudDoKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuaWRlbnQgKyBtc2cKICAgICAgICAgaWYgc2VsZi5hcHBlbmRfbnVsOgogICAgICAgICAgICAgbXNnICs9ICdcMDAwJwogICAgICAgICAiIiIKQEAgLTgyNyw3ICs4NjksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmR0byhtc2csIHNlbGYuYWRkcmVzcykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZGFsbChtc2cpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtODM3LDcgKzg3OSw3IEBACiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHNlbmRzIGFuIFNNVFAgZW1haWwgZm9yIGVhY2ggbG9nZ2luZyBldmVudC4KICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LAotICAgICAgICAgICAgICAgICBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzPU5vbmUsIHNlY3VyZT1Ob25lLCB0aW1lb3V0PTUuMCk6CiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyLgogCkBAIC04NTEsNiArODkzLDggQEAKICAgICAgICAgd2lsbCBiZSBlaXRoZXIgYW4gZW1wdHkgdHVwbGUsIG9yIGEgc2luZ2xlLXZhbHVlIHR1cGxlIHdpdGggdGhlIG5hbWUKICAgICAgICAgb2YgYSBrZXlmaWxlLCBvciBhIDItdmFsdWUgdHVwbGUgd2l0aCB0aGUgbmFtZXMgb2YgdGhlIGtleWZpbGUgYW5kCiAgICAgICAgIGNlcnRpZmljYXRlIGZpbGUuIChUaGlzIHR1cGxlIGlzIHBhc3NlZCB0byB0aGUgYHN0YXJ0dGxzYCBtZXRob2QpLgorICAgICAgICBBIHRpbWVvdXQgaW4gc2Vjb25kcyBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgU01UUCBjb25uZWN0aW9uICh0aGUKKyAgICAgICAgZGVmYXVsdCBpcyBvbmUgc2Vjb25kKS4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgICBpZiBpc2luc3RhbmNlKG1haWxob3N0LCB0dXBsZSk6CkBAIC04NjcsNyArOTExLDcgQEAKICAgICAgICAgc2VsZi50b2FkZHJzID0gdG9hZGRycwogICAgICAgICBzZWxmLnN1YmplY3QgPSBzdWJqZWN0CiAgICAgICAgIHNlbGYuc2VjdXJlID0gc2VjdXJlCi0gICAgICAgIHNlbGYuX3RpbWVvdXQgPSA1LjAKKyAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogCiAgICAgZGVmIGdldFN1YmplY3Qoc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC04OTAsNyArOTM0LDcgQEAKICAgICAgICAgICAgIHBvcnQgPSBzZWxmLm1haWxwb3J0CiAgICAgICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgICAgICBwb3J0ID0gc210cGxpYi5TTVRQX1BPUlQKLSAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoc2VsZi5tYWlsaG9zdCwgcG9ydCwgdGltZW91dD1zZWxmLl90aW1lb3V0KQorICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChzZWxmLm1haWxob3N0LCBwb3J0LCB0aW1lb3V0PXNlbGYudGltZW91dCkKICAgICAgICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAgICAgIG1zZyA9ICJGcm9tOiAlc1xyXG5UbzogJXNcclxuU3ViamVjdDogJXNcclxuRGF0ZTogJXNcclxuXHJcbiVzIiAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZyb21hZGRyLApAQCAtOTA1LDcgKzk0OSw3IEBACiAgICAgICAgICAgICAgICAgc210cC5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQogICAgICAgICAgICAgc210cC5zZW5kbWFpbChzZWxmLmZyb21hZGRyLCBzZWxmLnRvYWRkcnMsIG1zZykKICAgICAgICAgICAgIHNtdHAucXVpdCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtOTkyLDcgKzEwMzYsNyBAQAogICAgICAgICAgICAgICAgIHR5cGUgPSBzZWxmLmdldEV2ZW50VHlwZShyZWNvcmQpCiAgICAgICAgICAgICAgICAgbXNnID0gc2VsZi5mb3JtYXQocmVjb3JkKQogICAgICAgICAgICAgICAgIHNlbGYuX3dlbHUuUmVwb3J0RXZlbnQoc2VsZi5hcHBuYW1lLCBpZCwgY2F0LCB0eXBlLCBbbXNnXSkKLSAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEwNzUsOSArMTExOSwxMSBAQAogICAgICAgICAgICAgICAgIHMgPSAoJ3UlczolcycgJSBzZWxmLmNyZWRlbnRpYWxzKS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICBzID0gJ0Jhc2ljICcgKyBiYXNlNjQuYjY0ZW5jb2RlKHMpLnN0cmlwKCkKICAgICAgICAgICAgICAgICBoLnB1dGhlYWRlcignQXV0aG9yaXphdGlvbicsIHMpCi0gICAgICAgICAgICBoLmVuZGhlYWRlcnMoZGF0YSBpZiBzZWxmLm1ldGhvZCA9PSAiUE9TVCIgZWxzZSBOb25lKQorICAgICAgICAgICAgaC5lbmRoZWFkZXJzKCkKKyAgICAgICAgICAgIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIjoKKyAgICAgICAgICAgICAgICBoLnNlbmQoZGF0YS5lbmNvZGUoJ3V0Zi04JykpCiAgICAgICAgICAgICBoLmdldHJlc3BvbnNlKCkgICAgI2Nhbid0IGRvIGFueXRoaW5nIHdpdGggdGhlIHJlc3VsdAotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEyNTksNyArMTMwNSw3IEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmVucXVldWUoc2VsZi5wcmVwYXJlKHJlY29yZCkpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTM1Niw2ICsxNDAyLDE2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgogICAgICAgICAgICAgICAgICAgICBicmVhawogCisgICAgICAgIGRlZiBlbnF1ZXVlX3NlbnRpbmVsKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZW5xdWV1ZSB0aGUgc2VudGluZWwgcmVjb3JkLgorCisgICAgICAgICAgICBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHB1dF9ub3dhaXQuIFlvdSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzCisgICAgICAgICAgICBtZXRob2QgaWYgeW91IHdhbnQgdG8gdXNlIHRpbWVvdXRzIG9yIHdvcmsgd2l0aCBjdXN0b20gcXVldWUKKyAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHNlbGYuX3NlbnRpbmVsKQorCiAgICAgICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBTdG9wIHRoZSBsaXN0ZW5lci4KQEAgLTEzNjUsNiArMTQyMSw2IEBACiAgICAgICAgICAgICBtYXkgYmUgc29tZSByZWNvcmRzIHN0aWxsIGxlZnQgb24gdGhlIHF1ZXVlLCB3aGljaCB3b24ndCBiZSBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHNlbGYuX3N0b3Auc2V0KCkKLSAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdChzZWxmLl9zZW50aW5lbCkKKyAgICAgICAgICAgIHNlbGYuZW5xdWV1ZV9zZW50aW5lbCgpCiAgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbigpCiAgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvbHptYS5weSBiL0xpYi9sem1hLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMWIwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvbHptYS5weQpAQCAtMCwwICsxLDQ1NCBAQAorIiIiSW50ZXJmYWNlIHRvIHRoZSBsaWJsem1hIGNvbXByZXNzaW9uIGxpYnJhcnkuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcywKK2NsYXNzZXMgZm9yIGluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbiwgYW5kIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IKK29uZS1zaG90IChkZSljb21wcmVzc2lvbi4KKworVGhlc2UgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHN1cHBvcnQgYm90aCB0aGUgWFogYW5kIGxlZ2FjeSBMWk1BCitjb250YWluZXIgZm9ybWF0cywgYXMgd2VsbCBhcyByYXcgY29tcHJlc3NlZCBkYXRhIHN0cmVhbXMuCisiIiIKKworX19hbGxfXyA9IFsKKyAgICAiQ0hFQ0tfTk9ORSIsICJDSEVDS19DUkMzMiIsICJDSEVDS19DUkM2NCIsICJDSEVDS19TSEEyNTYiLAorICAgICJDSEVDS19JRF9NQVgiLCAiQ0hFQ0tfVU5LTk9XTiIsCisgICAgIkZJTFRFUl9MWk1BMSIsICJGSUxURVJfTFpNQTIiLCAiRklMVEVSX0RFTFRBIiwgIkZJTFRFUl9YODYiLCAiRklMVEVSX0lBNjQiLAorICAgICJGSUxURVJfQVJNIiwgIkZJTFRFUl9BUk1USFVNQiIsICJGSUxURVJfUE9XRVJQQyIsICJGSUxURVJfU1BBUkMiLAorICAgICJGT1JNQVRfQVVUTyIsICJGT1JNQVRfWFoiLCAiRk9STUFUX0FMT05FIiwgIkZPUk1BVF9SQVciLAorICAgICJNRl9IQzMiLCAiTUZfSEM0IiwgIk1GX0JUMiIsICJNRl9CVDMiLCAiTUZfQlQ0IiwKKyAgICAiTU9ERV9GQVNUIiwgIk1PREVfTk9STUFMIiwgIlBSRVNFVF9ERUZBVUxUIiwgIlBSRVNFVF9FWFRSRU1FIiwKKworICAgICJMWk1BQ29tcHJlc3NvciIsICJMWk1BRGVjb21wcmVzc29yIiwgIkxaTUFGaWxlIiwgIkxaTUFFcnJvciIsCisgICAgIm9wZW4iLCAiY29tcHJlc3MiLCAiZGVjb21wcmVzcyIsICJpc19jaGVja19zdXBwb3J0ZWQiLAorXQorCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBpbworZnJvbSBfbHptYSBpbXBvcnQgKgorZnJvbSBfbHptYSBpbXBvcnQgX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywgX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcworCisKK19NT0RFX0NMT1NFRCAgID0gMAorX01PREVfUkVBRCAgICAgPSAxCitfTU9ERV9SRUFEX0VPRiA9IDIKK19NT0RFX1dSSVRFICAgID0gMworCitfQlVGRkVSX1NJWkUgPSA4MTkyCisKKworY2xhc3MgTFpNQUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorCisgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgTFpNQSAoZGUpY29tcHJlc3Npb24uCisKKyAgICBBbiBMWk1BRmlsZSBjYW4gYWN0IGFzIGEgd3JhcHBlciBmb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIG9yCisgICAgcmVmZXIgZGlyZWN0bHkgdG8gYSBuYW1lZCBmaWxlIG9uIGRpc2suCisKKyAgICBOb3RlIHRoYXQgTFpNQUZpbGUgcHJvdmlkZXMgYSAqYmluYXJ5KiBmaWxlIGludGVyZmFjZSAtIGRhdGEgcmVhZAorICAgIGlzIHJldHVybmVkIGFzIGJ5dGVzLCBhbmQgZGF0YSB0byBiZSB3cml0dGVuIG11c3QgYmUgZ2l2ZW4gYXMgYnl0ZXMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWU9Tm9uZSwgbW9kZT0iciIsICosCisgICAgICAgICAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CisgICAgICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCisKKyAgICAgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvcgorICAgICAgICBieXRlcyBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuCisgICAgICAgIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgICAgICBtb2RlIGNhbiBiZSAiciIgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAidyIgZm9yIChvdmVyKXdyaXRpbmcsIG9yCisgICAgICAgICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICJyYiIsICJ3YiIsCisgICAgICAgIGFuZCAiYWIiIHJlc3BlY3RpdmVseS4KKworICAgICAgICBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IHRvIHVzZSBmb3IgdGhlIGZpbGUuCisgICAgICAgIElmIG1vZGUgaXMgInIiLCB0aGlzIGRlZmF1bHRzIHRvIEZPUk1BVF9BVVRPLiBPdGhlcndpc2UsIHRoZQorICAgICAgICBkZWZhdWx0IGlzIEZPUk1BVF9YWi4KKworICAgICAgICBjaGVjayBzcGVjaWZpZXMgdGhlIGludGVncml0eSBjaGVjayB0byB1c2UuIFRoaXMgYXJndW1lbnQgY2FuCisgICAgICAgIG9ubHkgYmUgdXNlZCB3aGVuIG9wZW5pbmcgYSBmaWxlIGZvciB3cml0aW5nLiBGb3IgRk9STUFUX1haLAorICAgICAgICB0aGUgZGVmYXVsdCBpcyBDSEVDS19DUkM2NC4gRk9STUFUX0FMT05FIGFuZCBGT1JNQVRfUkFXIGRvIG5vdAorICAgICAgICBzdXBwb3J0IGludGVncml0eSBjaGVja3MgLSBmb3IgdGhlc2UgZm9ybWF0cywgY2hlY2sgbXVzdCBiZQorICAgICAgICBvbWl0dGVkLCBvciBiZSBDSEVDS19OT05FLgorCisgICAgICAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqcHJlc2V0KiBhcmd1bWVudCBpcyBub3QKKyAgICAgICAgbWVhbmluZ2Z1bCwgYW5kIHNob3VsZCBiZSBvbWl0dGVkLiBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IHNob3VsZAorICAgICAgICBhbHNvIGJlIG9taXR0ZWQsIGV4Y2VwdCB3aGVuIGZvcm1hdCBpcyBGT1JNQVRfUkFXIChpbiB3aGljaCBjYXNlCisgICAgICAgIGl0IGlzIHJlcXVpcmVkKS4KKworICAgICAgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciB3cml0aW5nLCB0aGUgc2V0dGluZ3MgdXNlZCBieSB0aGUKKyAgICAgICAgY29tcHJlc3NvciBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIHByZXNldCBjb21wcmVzc2lvbgorICAgICAgICBsZXZlbCAod2l0aCB0aGUgKnByZXNldCogYXJndW1lbnQpLCBvciBpbiBkZXRhaWwgYXMgYSBjdXN0b20KKyAgICAgICAgZmlsdGVyIGNoYWluICh3aXRoIHRoZSAqZmlsdGVycyogYXJndW1lbnQpLiBGb3IgRk9STUFUX1haIGFuZAorICAgICAgICBGT1JNQVRfQUxPTkUsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgUFJFU0VUX0RFRkFVTFQgcHJlc2V0CisgICAgICAgIGxldmVsLiBGb3IgRk9STUFUX1JBVywgdGhlIGNhbGxlciBtdXN0IGFsd2F5cyBzcGVjaWZ5IGEgZmlsdGVyCisgICAgICAgIGNoYWluOyB0aGUgcmF3IGNvbXByZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBwcmVzZXQgY29tcHJlc3Npb24KKyAgICAgICAgbGV2ZWxzLgorCisgICAgICAgIHByZXNldCAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwLTksCisgICAgICAgIG9wdGlvbmFsbHkgT1ItZWQgd2l0aCB0aGUgY29uc3RhbnQgUFJFU0VUX0VYVFJFTUUuCisKKyAgICAgICAgZmlsdGVycyAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGRpY3RzLiBFYWNoIGRpY3QKKyAgICAgICAgc2hvdWxkIGhhdmUgYW4gZW50cnkgZm9yICJpZCIgaW5kaWNhdGluZyBJRCBvZiB0aGUgZmlsdGVyLCBwbHVzCisgICAgICAgIGFkZGl0aW9uYWwgZW50cmllcyBmb3Igb3B0aW9ucyB0byB0aGUgZmlsdGVyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCisKKyAgICAgICAgaWYgbW9kZSBpbiAoInIiLCAicmIiKToKKyAgICAgICAgICAgIGlmIGNoZWNrICE9IC0xOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGFuIGludGVncml0eSBjaGVjayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBpZiBwcmVzZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNwZWNpZnkgYSBwcmVzZXQgY29tcHJlc3Npb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIHdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmciKQorICAgICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRk9STUFUX0FVVE8KKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1JFQUQKKyAgICAgICAgICAgICMgU2F2ZSB0aGUgYXJncyB0byBwYXNzIHRvIHRoZSBMWk1BRGVjb21wcmVzc29yIGluaXRpYWxpemVyLgorICAgICAgICAgICAgIyBJZiB0aGUgZmlsZSBjb250YWlucyBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMsIGVhY2gKKyAgICAgICAgICAgICMgc3RyZWFtIHdpbGwgbmVlZCBhIHNlcGFyYXRlIGRlY29tcHJlc3NvciBvYmplY3QuCisgICAgICAgICAgICBzZWxmLl9pbml0X2FyZ3MgPSB7ImZvcm1hdCI6Zm9ybWF0LCAiZmlsdGVycyI6ZmlsdGVyc30KKyAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgIGVsaWYgbW9kZSBpbiAoInciLCAid2IiLCAiYSIsICJhYiIpOgorICAgICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRk9STUFUX1haCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IExaTUFDb21wcmVzc29yKGZvcm1hdD1mb3JtYXQsIGNoZWNrPWNoZWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6CisgICAgICAgICAgICAgICAgbW9kZSArPSAiYiIKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gZmlsZW5hbWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkZsdXNoIGFuZCBjbG9zZSB0aGUgZmlsZS4KKworICAgICAgICBNYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIE9uY2UgdGhlIGZpbGUgaXMKKyAgICAgICAgY2xvc2VkLCBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIGl0IHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CisgICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5fY29tcHJlc3Nvci5mbHVzaCgpKQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBOb25lCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmcDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAuY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoaXMgZmlsZSBpcyBjbG9zZWQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRAorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSB1bmRlcmx5aW5nIGZpbGUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fZnAuZmlsZW5vKCkKKworICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciB3cml0aW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEUKKworICAgICMgTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQorCisgICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi53cml0YWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZwLnNlZWthYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCisKKyAgICAjIEZpbGwgdGhlIHJlYWRhaGVhZCBidWZmZXIgaWYgaXQgaXMgZW1wdHkuIFJldHVybnMgRmFsc2Ugb24gRU9GLgorICAgIGRlZiBfZmlsbF9idWZmZXIoc2VsZik6CisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIHNlbGYuX2J1ZmZlcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGE6CisgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBzZWxmLl9mcC5yZWFkKF9CVUZGRVJfU0laRSkKKworICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisKKyAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCisKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQorCisgICAgIyBSZWFkIGRhdGEgdW50aWwgRU9GLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2FsbChzZWxmLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoc2VsZi5fYnVmZmVyKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGJsb2NrcykKKworICAgICMgUmVhZCBhIGJsb2NrIG9mIHVwIHRvIG4gYnl0ZXMuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYmxvY2soc2VsZiwgbiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIHdoaWxlIG4gPiAwIGFuZCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgbiA8IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOm5dCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW246XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgZGVmIHBlZWsoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIEFsd2F5cyByZXR1cm5zIGF0IGxlYXN0IG9uZSBieXRlIG9mIGRhdGEsIHVubGVzcyBhdCBFT0YuCisgICAgICAgIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgaXMgdW5zcGVjaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Ygb3Igbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgSWYgc2l6ZSBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgorICAgICAgICBSZXR1cm5zIGIiIiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvciBzaXplID09IDA6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGVsaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9hbGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKworICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcywgd2hpbGUgdHJ5aW5nIHRvIGF2b2lkCisgICAgICAgIG1ha2luZyBtdWx0aXBsZSByZWFkcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4KKworICAgICAgICBSZXR1cm5zIGIiIiBpZiB0aGUgZmlsZSBpcyBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICAjIFVzdWFsbHksIHJlYWQxKCkgY2FsbHMgX2ZwLnJlYWQoKSBhdCBtb3N0IG9uY2UuIEhvd2V2ZXIsIHNvbWV0aW1lcworICAgICAgICAjIHRoaXMgZG9lcyBub3QgZ2l2ZSBlbm91Z2ggZGF0YSBmb3IgdGhlIGRlY29tcHJlc3NvciB0byBtYWtlIHByb2dyZXNzLgorICAgICAgICAjIEluIHRoaXMgY2FzZSB3ZSBtYWtlIG11bHRpcGxlIHJlYWRzLCB0byBhdm9pZCByZXR1cm5pbmcgYiIiLgorICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgIGlmIChzaXplID09IDAgb3Igc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvcgorICAgICAgICAgICAgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCkpOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBpZiAwIDwgc2l6ZSA8IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6c2l6ZV0KKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzaXplOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4sIHdoaWNoIGlzCisgICAgICAgIGFsd2F5cyBsZW4oZGF0YSkuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCB0aGUgZmlsZSBvbiBkaXNrCisgICAgICAgIG1heSBub3QgcmVmbGVjdCB0aGUgZGF0YSB3cml0dGVuIHVudGlsIGNsb3NlKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3dyaXRlKCkKKyAgICAgICAgY29tcHJlc3NlZCA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgc2VsZi5fZnAud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKworICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgorICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZS4gUG9zc2libGUgdmFsdWVzIGZvciB3aGVuY2UgYXJlOgorCisgICAgICAgICAgICAwOiBzdGFydCBvZiBzdHJlYW0gKGRlZmF1bHQpOiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKKyAgICAgICAgICAgIDE6IGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uCisgICAgICAgICAgICAyOiBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgbXVzdCBub3QgYmUgcG9zaXRpdmUKKworICAgICAgICBSZXR1cm5zIHRoZSBuZXcgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc3AgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAorICAgICAgICB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCisKKyAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KKyAgICAgICAgaWYgd2hlbmNlID09IDA6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgd2hlbmNlID09IDE6CisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKKyAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgorICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKKworICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCisgICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKKyAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCisKKyAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCisgICAgICAgIGlmIHNlbGYuX21vZGUgIT0gX01PREVfUkVBRF9FT0Y6CisgICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisKK2RlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsICosCisgICAgICAgICBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUsCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCisKKyAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCksCisgICAgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdAorICAgIHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIgKGRlZmF1bHQpLCAidyIsICJ3YiIsICJhIiwgb3IgImFiIiBmb3IKKyAgICBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuCisKKyAgICBUaGUgZm9ybWF0LCBjaGVjaywgcHJlc2V0IGFuZCBmaWx0ZXJzIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBjb21wcmVzc2lvbgorICAgIHNldHRpbmdzLCBhcyBmb3IgTFpNQUNvbXByZXNzb3IsIExaTUFEZWNvbXByZXNzb3IgYW5kIExaTUFGaWxlLgorCisgICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIExaTUFGaWxlIGNvbnN0cnVjdG9yOgorICAgIExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzIGFuZAorICAgIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICAgRm9yIHRleHQgbW9kZSwgYSBMWk1BRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBsel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgYmluYXJ5X2ZpbGUgPSBMWk1BRmlsZShmaWxlbmFtZSwgbHpfbW9kZSwgZm9ybWF0PWZvcm1hdCwgY2hlY2s9Y2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQ9cHJlc2V0LCBmaWx0ZXJzPWZpbHRlcnMpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCisKKworZGVmIGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKKyAgICAiIiJDb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBSZWZlciB0byBMWk1BQ29tcHJlc3NvcidzIGRvY3N0cmluZyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICBvcHRpb25hbCBhcmd1bWVudHMgKmZvcm1hdCosICpjaGVjayosICpwcmVzZXQqIGFuZCAqZmlsdGVycyouCisKKyAgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhbiBMWk1BQ29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICAiIiIKKyAgICBjb21wID0gTFpNQUNvbXByZXNzb3IoZm9ybWF0LCBjaGVjaywgcHJlc2V0LCBmaWx0ZXJzKQorICAgIHJldHVybiBjb21wLmNvbXByZXNzKGRhdGEpICsgY29tcC5mbHVzaCgpCisKKworZGVmIGRlY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgorICAgICIiIkRlY29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgUmVmZXIgdG8gTFpNQURlY29tcHJlc3NvcidzIGRvY3N0cmluZyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICBvcHRpb25hbCBhcmd1bWVudHMgKmZvcm1hdCosICpjaGVjayogYW5kICpmaWx0ZXJzKi4KKworICAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSBMWk1BRGVjb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIHJlc3VsdHMgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGRlY29tcCA9IExaTUFEZWNvbXByZXNzb3IoZm9ybWF0LCBtZW1saW1pdCwgZmlsdGVycykKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoZGVjb21wLmRlY29tcHJlc3MoZGF0YSkpCisgICAgICAgIGlmIG5vdCBkZWNvbXAuZW9mOgorICAgICAgICAgICAgcmFpc2UgTFpNQUVycm9yKCJDb21wcmVzc2VkIGRhdGEgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgaWYgbm90IGRlY29tcC51bnVzZWRfZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihyZXN1bHRzKQorICAgICAgICAjIFRoZXJlIGlzIHVudXNlZCBkYXRhIGxlZnQgb3Zlci4gUHJvY2VlZCB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgZGF0YSA9IGRlY29tcC51bnVzZWRfZGF0YQpkaWZmIC0tZ2l0IGEvTGliL21haWxib3gucHkgYi9MaWIvbWFpbGJveC5weQppbmRleCBjNzNmYjk1Li5kM2JmM2ZkIDEwMDY0NAotLS0gYS9MaWIvbWFpbGJveC5weQorKysgYi9MaWIvbWFpbGJveC5weQpAQCAtMTE1Nyw4ICsxMTU3LDcgQEAKICAgICBkZWYgZ2V0X3NlcXVlbmNlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmFtZS10by1rZXktbGlzdCBkaWN0aW9uYXJ5IHRvIGRlZmluZSBlYWNoIHNlcXVlbmNlLiIiIgogICAgICAgICByZXN1bHRzID0ge30KLSAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyJykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyJywgZW5jb2Rpbmc9J0FTQ0lJJykgYXMgZjoKICAgICAgICAgICAgIGFsbF9rZXlzID0gc2V0KHNlbGYua2V5cygpKQogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xMTc3LDEzICsxMTc2LDExIEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZvcm1hdEVycm9yKCdJbnZhbGlkIHNlcXVlbmNlIHNwZWNpZmljYXRpb246ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUucnN0cmlwKCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAogICAgIGRlZiBzZXRfc2VxdWVuY2VzKHNlbGYsIHNlcXVlbmNlcyk6CiAgICAgICAgICIiIlNldCBzZXF1ZW5jZXMgdXNpbmcgdGhlIGdpdmVuIG5hbWUtdG8ta2V5LWxpc3QgZGljdGlvbmFyeS4iIiIKLSAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyKycpCisgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLm1oX3NlcXVlbmNlcycpLCAncisnLCBlbmNvZGluZz0nQVNDSUknKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5jbG9zZShvcy5vcGVuKGYubmFtZSwgb3MuT19XUk9OTFkgfCBvcy5PX1RSVU5DKSkKICAgICAgICAgICAgIGZvciBuYW1lLCBrZXlzIGluIHNlcXVlbmNlcy5pdGVtcygpOgpAQCAtMTUyMyw5ICsxNTIwLDEwIEBACiAKICAgICBkZWYgX2JlY29tZV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAiIiJBc3N1bWUgdGhlIG5vbi1mb3JtYXQtc3BlY2lmaWMgc3RhdGUgb2YgbWVzc2FnZS4iIiIKLSAgICAgICAgZm9yIG5hbWUgaW4gKCdfaGVhZGVycycsICdfdW5peGZyb20nLCAnX3BheWxvYWQnLCAnX2NoYXJzZXQnLAotICAgICAgICAgICAgICAgICAgICAgJ3ByZWFtYmxlJywgJ2VwaWxvZ3VlJywgJ2RlZmVjdHMnLCAnX2RlZmF1bHRfdHlwZScpOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IG1lc3NhZ2UuX19kaWN0X19bbmFtZV0KKyAgICAgICAgdHlwZV9zcGVjaWZpYyA9IGdldGF0dHIobWVzc2FnZSwgJ190eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMnLCBbXSkKKyAgICAgICAgZm9yIG5hbWUgaW4gbWVzc2FnZS5fX2RpY3RfXzoKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHR5cGVfc3BlY2lmaWM6CisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IG1lc3NhZ2UuX19kaWN0X19bbmFtZV0KIAogICAgIGRlZiBfZXhwbGFpbl90byhzZWxmLCBtZXNzYWdlKToKICAgICAgICAgIiIiQ29weSBmb3JtYXQtc3BlY2lmaWMgc3RhdGUgdG8gbWVzc2FnZSBpbnNvZmFyIGFzIHBvc3NpYmxlLiIiIgpAQCAtMTUzOCw2ICsxNTM2LDggQEAKIGNsYXNzIE1haWxkaXJNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBNYWlsZGlyLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfc3ViZGlyJywgJ19pbmZvJywgJ19kYXRlJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgTWFpbGRpck1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuX3N1YmRpciA9ICduZXcnCkBAIC0xNjQ1LDYgKzE2NDUsOCBAQAogY2xhc3MgX21ib3hNTURGTWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggbWJveC0gb3IgTU1ERi1zcGVjaWZpYyBwcm9wZXJ0aWVzLiIiIgogCisgICAgX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcyA9IFsnX2Zyb20nXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gbWJveE1NREZNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLnNldF9mcm9tKCdNQUlMRVItREFFTU9OJywgVHJ1ZSkKQEAgLTE3NjAsNiArMTc2Miw4IEBACiBjbGFzcyBNSE1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIE1ILXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfc2VxdWVuY2VzJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIE1ITWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fc2VxdWVuY2VzID0gW10KQEAgLTE4MzAsNiArMTgzNCw4IEBACiBjbGFzcyBCYWJ5bE1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIEJhYnlsLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfbGFiZWxzJywgJ192aXNpYmxlJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIEJhYnlsTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fbGFiZWxzID0gW10KZGlmZiAtLWdpdCBhL0xpYi9tYWlsY2FwLnB5IGIvTGliL21haWxjYXAucHkKaW5kZXggNGFlMTNkNy4uOTlmNDk1OCAxMDA2NDQKLS0tIGEvTGliL21haWxjYXAucHkKKysrIGIvTGliL21haWxjYXAucHkKQEAgLTMzLDEwICszMywxMCBAQAogCiBkZWYgbGlzdG1haWxjYXBmaWxlcygpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIG1haWxjYXAgZmlsZXMgZm91bmQgb24gdGhlIHN5c3RlbS4iIiIKLSAgICAjIFhYWCBBY3R1YWxseSwgdGhpcyBpcyBVbml4LXNwZWNpZmljCisgICAgIyBUaGlzIGlzIG1vc3RseSBhIFVuaXggdGhpbmcsIGJ1dCB3ZSB1c2UgdGhlIE9TIHBhdGggc2VwYXJhdG9yIGFueXdheQogICAgIGlmICdNQUlMQ0FQUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgc3RyID0gb3MuZW52aXJvblsnTUFJTENBUFMnXQotICAgICAgICBtYWlsY2FwcyA9IHN0ci5zcGxpdCgnOicpCisgICAgICAgIHBhdGhzdHIgPSBvcy5lbnZpcm9uWydNQUlMQ0FQUyddCisgICAgICAgIG1haWxjYXBzID0gcGF0aHN0ci5zcGxpdChvcy5wYXRoc2VwKQogICAgIGVsc2U6CiAgICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgaG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQpkaWZmIC0tZ2l0IGEvTGliL21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkKaW5kZXggOGNlMDJmOS4uM2YwYmQwZSAxMDA2NDQKLS0tIGEvTGliL21pbWV0eXBlcy5weQorKysgYi9MaWIvbWltZXR5cGVzLnB5CkBAIC0yNDksNyArMjQ5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgeWllbGQgY3R5cGUKICAgICAgICAgICAgICAgICBpICs9IDEKIAotICAgICAgICBkZWZhdWx0X2VuY29kaW5nID0gc3lzLmdldGRlZmF1bHRlbmNvZGluZygpCiAgICAgICAgIHdpdGggX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DTEFTU0VTX1JPT1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInTUlNRVxEYXRhYmFzZVxDb250ZW50IFR5cGUnKSBhcyBtaW1lZGI6CiAgICAgICAgICAgICBmb3IgY3R5cGUgaW4gZW51bV90eXBlcyhtaW1lZGIpOgpAQCAtNDM0LDYgKzQzMyw4IEBACiAgICAgICAgICcua3NoJyAgICA6ICd0ZXh0L3BsYWluJywKICAgICAgICAgJy5sYXRleCcgIDogJ2FwcGxpY2F0aW9uL3gtbGF0ZXgnLAogICAgICAgICAnLm0xdicgICAgOiAndmlkZW8vbXBlZycsCisgICAgICAgICcubTN1JyAgICA6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCcsCisgICAgICAgICcubTN1OCcgICA6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCcsCiAgICAgICAgICcubWFuJyAgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmLW1hbicsCiAgICAgICAgICcubWUnICAgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmLW1lJywKICAgICAgICAgJy5taHQnICAgIDogJ21lc3NhZ2UvcmZjODIyJywKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IGYwMzNiYTkuLmY5MGE0MzIgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMSwxNiArMSwxNCBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9ycwogaW1wb3J0IGRpcwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogaW1wb3J0IHN0cnVjdAogCi1SRUFEX01PREUgPSAiclUiCi0KICMgWFhYIENsZWFuIHVwIG9uY2Ugc3RyOCdzIGNzdG9yIG1hdGNoZXMgYnl0ZXMuCiBMT0FEX0NPTlNUID0gYnl0ZXMoW2Rpcy5vcG5hbWUuaW5kZXgoJ0xPQURfQ09OU1QnKV0pCiBJTVBPUlRfTkFNRSA9IGJ5dGVzKFtkaXMub3BuYW1lLmluZGV4KCdJTVBPUlRfTkFNRScpXSkKQEAgLTI5LDkgKzI3LDcgQEAKIAogIyBBIFB1YmxpYyBpbnRlcmZhY2UKIGRlZiBBZGRQYWNrYWdlUGF0aChwYWNrYWdlbmFtZSwgcGF0aCk6Ci0gICAgcGF0aHMgPSBwYWNrYWdlUGF0aE1hcC5nZXQocGFja2FnZW5hbWUsIFtdKQotICAgIHBhdGhzLmFwcGVuZChwYXRoKQotICAgIHBhY2thZ2VQYXRoTWFwW3BhY2thZ2VuYW1lXSA9IHBhdGhzCisgICAgcGFja2FnZVBhdGhNYXAuc2V0ZGVmYXVsdChwYWNrYWdlbmFtZSwgW10pLmFwcGVuZChwYXRoKQogCiByZXBsYWNlUGFja2FnZU1hcCA9IHt9CiAKQEAgLTEwNiwxNCArMTAyLDE0IEBACiAKICAgICBkZWYgcnVuX3NjcmlwdChzZWxmLCBwYXRobmFtZSk6CiAgICAgICAgIHNlbGYubXNnKDIsICJydW5fc2NyaXB0IiwgcGF0aG5hbWUpCi0gICAgICAgIHdpdGggb3BlbihwYXRobmFtZSwgUkVBRF9NT0RFKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lKSBhcyBmcDoKICAgICAgICAgICAgIHN0dWZmID0gKCIiLCAiciIsIGltcC5QWV9TT1VSQ0UpCiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdfX21haW5fXycsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAKICAgICBkZWYgbG9hZF9maWxlKHNlbGYsIHBhdGhuYW1lKToKICAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsIFJFQURfTU9ERSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBzdHVmZiA9IChleHQsICJyIiwgaW1wLlBZX1NPVVJDRSkKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSwgZnAsIHBhdGhuYW1lLCBzdHVmZikKIApAQCAtMjI3LDggKzIyMyw5IEBACiAgICAgICAgICMgQnV0IHdlIG11c3QgYWxzbyBjb2xsZWN0IFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcyAtIGFsdGhvdWdoCiAgICAgICAgICMgd2UgY2Fubm90IHNlcGFyYXRlIG5vcm1hbCBkbGxzIGZyb20gUHl0aG9uIGV4dGVuc2lvbnMuCiAgICAgICAgIHN1ZmZpeGVzID0gW10KLSAgICAgICAgZm9yIHRyaXBsZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCk6Ci0gICAgICAgICAgICBzdWZmaXhlcy5hcHBlbmQodHJpcGxlWzBdKQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCiAgICAgICAgIGZvciBkaXIgaW4gbS5fX3BhdGhfXzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQpAQCAtMjcwLDcgKzI2Nyw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG0gPSBzZWxmLmxvYWRfbW9kdWxlKGZxbmFtZSwgZnAsIHBhdGhuYW1lLCBzdHVmZikKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIGZwOiBmcC5jbG9zZSgpCisgICAgICAgICAgICBpZiBmcDoKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgIGlmIHBhcmVudDoKICAgICAgICAgICAgIHNldGF0dHIocGFyZW50LCBwYXJ0bmFtZSwgbSkKICAgICAgICAgc2VsZi5tc2dvdXQoMywgImltcG9ydF9tb2R1bGUgLT4iLCBtKQpAQCAtNjYyLDQgKzY2MCw0IEBACiAgICAgdHJ5OgogICAgICAgICBtZiA9IHRlc3QoKQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdF0iKQorICAgICAgICBwcmludCgiXG5baW50ZXJydXB0ZWRdIikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CmluZGV4IGU2ZTE2YzguLjFmM2U2N2MgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQpAQCAtMTMsMzIgKzEzLDcgQEAKICMKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX3ZlcnNpb25fXyA9ICcwLjcwYTEnCkBAIC00OCw4ICsyMyw4IEBACiAgICAgJ01hbmFnZXInLCAnUGlwZScsICdjcHVfY291bnQnLCAnbG9nX3RvX3N0ZGVycicsICdnZXRfbG9nZ2VyJywKICAgICAnYWxsb3dfY29ubmVjdGlvbl9waWNrbGluZycsICdCdWZmZXJUb29TaG9ydCcsICdUaW1lb3V0RXJyb3InLAogICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsCi0gICAgJ0V2ZW50JywgJ1F1ZXVlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcsICdWYWx1ZScsICdBcnJheScsCi0gICAgJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1NVQkRFQlVHJywgJ1NVQldBUk5JTkcnLAorICAgICdFdmVudCcsICdCYXJyaWVyJywgJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcsCisgICAgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1NVQkRFQlVHJywgJ1NVQldBUk5JTkcnLAogICAgIF0KIAogX19hdXRob3JfXyA9ICdSLiBPdWRrZXJrIChyLm0ub3Vka2Vya0BnbWFpbC5jb20pJwpAQCAtMTYxLDcgKzEzNiw5IEBACiAgICAgJycnCiAgICAgSW5zdGFsbCBzdXBwb3J0IGZvciBzZW5kaW5nIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIGJldHdlZW4gcHJvY2Vzc2VzCiAgICAgJycnCi0gICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHJlZHVjdGlvbgorICAgICMgVGhpcyBpcyB1bmRvY3VtZW50ZWQuICBJbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBtdWx0aXByb2Nlc3NpbmcKKyAgICAjIGl0cyBvbmx5IGVmZmVjdCB3YXMgdG8gbWFrZSBzb2NrZXQgb2JqZWN0cyBpbmhlcml0YWJsZSBvbiBXaW5kb3dzLgorICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbgogCiAjCiAjIERlZmluaXRpb25zIGRlcGVuZGluZyBvbiBuYXRpdmUgc2VtYXBob3JlcwpAQCAtMjA5LDYgKzE4NiwxMyBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBFdmVudAogICAgIHJldHVybiBFdmVudCgpCiAKK2RlZiBCYXJyaWVyKHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgorICAgICcnJworICAgIFJldHVybnMgYSBiYXJyaWVyIG9iamVjdAorICAgICcnJworICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBCYXJyaWVyCisgICAgcmV0dXJuIEJhcnJpZXIocGFydGllcywgYWN0aW9uLCB0aW1lb3V0KQorCiBkZWYgUXVldWUobWF4c2l6ZT0wKToKICAgICAnJycKICAgICBSZXR1cm5zIGEgcXVldWUgb2JqZWN0CkBAIC0yMjMsNiArMjA3LDEzIEBACiAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBKb2luYWJsZVF1ZXVlCiAgICAgcmV0dXJuIEpvaW5hYmxlUXVldWUobWF4c2l6ZSkKIAorZGVmIFNpbXBsZVF1ZXVlKCk6CisgICAgJycnCisgICAgUmV0dXJucyBhIHF1ZXVlIG9iamVjdAorICAgICcnJworICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgU2ltcGxlUXVldWUKKyAgICByZXR1cm4gU2ltcGxlUXVldWUoKQorCiBkZWYgUG9vbChwcm9jZXNzZXM9Tm9uZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCksIG1heHRhc2tzcGVyY2hpbGQ9Tm9uZSk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHByb2Nlc3MgcG9vbCBvYmplY3QKQEAgLTI0NCwxOSArMjM1LDE5IEBACiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBSYXdBcnJheQogICAgIHJldHVybiBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogCi1kZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsICoqa3dkcyk6CitkZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHN5bmNocm9uaXplZCBzaGFyZWQgb2JqZWN0CiAgICAgJycnCiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBWYWx1ZQotICAgIHJldHVybiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgKiprd2RzKQorICAgIHJldHVybiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1sb2NrKQogCi1kZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKToKK2RlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIGFycmF5CiAgICAgJycnCiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBBcnJheQotICAgIHJldHVybiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqKmt3ZHMpCisgICAgcmV0dXJuIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsIGxvY2s9bG9jaykKIAogIwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IGE1ZGMyYTguLjFkNjVmNDYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTQsNDkgKzQsMzQgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1fX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnIF0KK19fYWxsX18gPSBbICdDbGllbnQnLCAnTGlzdGVuZXInLCAnUGlwZScsICd3YWl0JyBdCiAKK2ltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0CitpbXBvcnQgc3RydWN0CiBpbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBpdGVydG9vbHMKIAogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIEF1dGhlbnRpY2F0aW9uRXJyb3IKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIEF1dGhlbnRpY2F0aW9uRXJyb3IsIEJ1ZmZlclRvb1Nob3J0CiBmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBnZXRfdGVtcF9kaXIsIEZpbmFsaXplLCBzdWJfZGVidWcsIGRlYnVnCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBkdXBsaWNhdGUsIGNsb3NlCi0KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IEZvcmtpbmdQaWNrbGVyCit0cnk6CisgICAgaW1wb3J0IF93aW5hcGkKKyAgICBmcm9tIF93aW5hcGkgaW1wb3J0IFdBSVRfT0JKRUNUXzAsIFdBSVRfVElNRU9VVCwgSU5GSU5JVEUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgcmFpc2UKKyAgICBfd2luYXBpID0gTm9uZQogCiAjCiAjCkBAIC0xMjIsNiArMTA3LDMwOSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdhZGRyZXNzIHR5cGUgb2YgJXIgdW5yZWNvZ25pemVkJyAlIGFkZHJlc3MpCiAKICMKKyMgQ29ubmVjdGlvbiBjbGFzc2VzCisjCisKK2NsYXNzIF9Db25uZWN0aW9uQmFzZToKKyAgICBfaGFuZGxlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZSwgcmVhZGFibGU9VHJ1ZSwgd3JpdGFibGU9VHJ1ZSk6CisgICAgICAgIGhhbmRsZSA9IGhhbmRsZS5fX2luZGV4X18oKQorICAgICAgICBpZiBoYW5kbGUgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBoYW5kbGUiKQorICAgICAgICBpZiBub3QgcmVhZGFibGUgYW5kIG5vdCB3cml0YWJsZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImF0IGxlYXN0IG9uZSBvZiBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgIG11c3QgYmUgVHJ1ZSIpCisgICAgICAgIHNlbGYuX2hhbmRsZSA9IGhhbmRsZQorICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IHJlYWRhYmxlCisgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gd3JpdGFibGUKKworICAgICMgWFhYIHNob3VsZCB3ZSB1c2UgdXRpbC5GaW5hbGl6ZSBpbnN0ZWFkIG9mIGEgX19kZWxfXz8KKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisKKyAgICBkZWYgX2NoZWNrX2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJoYW5kbGUgaXMgY2xvc2VkIikKKworICAgIGRlZiBfY2hlY2tfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImNvbm5lY3Rpb24gaXMgd3JpdGUtb25seSIpCisKKyAgICBkZWYgX2NoZWNrX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjb25uZWN0aW9uIGlzIHJlYWQtb25seSIpCisKKyAgICBkZWYgX2JhZF9tZXNzYWdlX2xlbmd0aChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgcmFpc2UgSU9FcnJvcigiYmFkIG1lc3NhZ2UgbGVuZ3RoIikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGUgaXMgTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHJlYWRhYmxlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkYWJsZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHdyaXRhYmxlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiRmlsZSBkZXNjcmlwdG9yIG9yIGhhbmRsZSBvZiB0aGUgY29ubmVjdGlvbiIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIiIiCisgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBzZW5kX2J5dGVzKHNlbGYsIGJ1Ziwgb2Zmc2V0PTAsIHNpemU9Tm9uZSk6CisgICAgICAgICIiIlNlbmQgdGhlIGJ5dGVzIGRhdGEgZnJvbSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3dyaXRhYmxlKCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAjIEhBQ0sgZm9yIGJ5dGUtaW5kZXhpbmcgb2Ygbm9uLWJ5dGV3aXNlIGJ1ZmZlcnMgKGUuZy4gYXJyYXkuYXJyYXkpCisgICAgICAgIGlmIG0uaXRlbXNpemUgPiAxOgorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZXMobSkpCisgICAgICAgIG4gPSBsZW4obSkKKyAgICAgICAgaWYgb2Zmc2V0IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBpcyBuZWdhdGl2ZSIpCisgICAgICAgIGlmIG4gPCBvZmZzZXQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJidWZmZXIgbGVuZ3RoIDwgb2Zmc2V0IikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IG4gLSBvZmZzZXQKKyAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNpemUgaXMgbmVnYXRpdmUiKQorICAgICAgICBlbGlmIG9mZnNldCArIHNpemUgPiBuOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCArIHNpemUiKQorICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKG1bb2Zmc2V0Om9mZnNldCArIHNpemVdKQorCisgICAgZGVmIHNlbmQoc2VsZiwgb2JqKToKKyAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBGb3JraW5nUGlja2xlcihidWYsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MKS5kdW1wKG9iaikKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhidWYuZ2V0YnVmZmVyKCkpCisKKyAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgYXMgYSBieXRlcyBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIGlmIG1heGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbWF4bGVuZ3RoIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIG1heGxlbmd0aCIpCisgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMobWF4bGVuZ3RoKQorICAgICAgICBpZiBidWYgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCisgICAgICAgIHJldHVybiBidWYuZ2V0dmFsdWUoKQorCisgICAgZGVmIHJlY3ZfYnl0ZXNfaW50byhzZWxmLCBidWYsIG9mZnNldD0wKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlY2VpdmUgYnl0ZXMgZGF0YSBpbnRvIGEgd3JpdGVhYmxlIGJ1ZmZlci1saWtlIG9iamVjdC4KKyAgICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGJ1ZikgYXMgbToKKyAgICAgICAgICAgICMgR2V0IGJ5dGVzaXplIG9mIGFyYml0cmFyeSBidWZmZXIKKyAgICAgICAgICAgIGl0ZW1zaXplID0gbS5pdGVtc2l6ZQorICAgICAgICAgICAgYnl0ZXNpemUgPSBpdGVtc2l6ZSAqIGxlbihtKQorICAgICAgICAgICAgaWYgb2Zmc2V0IDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBvZmZzZXQiKQorICAgICAgICAgICAgZWxpZiBvZmZzZXQgPiBieXRlc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgdG9vIGxhcmdlIikKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQorICAgICAgICAgICAgc2l6ZSA9IHJlc3VsdC50ZWxsKCkKKyAgICAgICAgICAgIGlmIGJ5dGVzaXplIDwgb2Zmc2V0ICsgc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBCdWZmZXJUb29TaG9ydChyZXN1bHQuZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgICMgTWVzc2FnZSBjYW4gZml0IGluIGRlc3QKKyAgICAgICAgICAgIHJlc3VsdC5zZWVrKDApCisgICAgICAgICAgICByZXN1bHQucmVhZGludG8obVtvZmZzZXQgLy8gaXRlbXNpemUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCArIHNpemUpIC8vIGl0ZW1zaXplXSkKKyAgICAgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgcmVjdihzZWxmKToKKyAgICAgICAgIiIiUmVjZWl2ZSBhIChwaWNrbGFibGUpIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQorICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKKworICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9MC4wKToKKyAgICAgICAgIiIiV2hldGhlciB0aGVyZSBpcyBhbnkgaW5wdXQgYXZhaWxhYmxlIHRvIGJlIHJlYWQiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9sbCh0aW1lb3V0KQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKworCitpZiBfd2luYXBpOgorCisgICAgY2xhc3MgUGlwZUNvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbm5lY3Rpb24gY2xhc3MgYmFzZWQgb24gYSBXaW5kb3dzIG5hbWVkIHBpcGUuCisgICAgICAgIE92ZXJsYXBwZWQgSS9PIGlzIHVzZWQsIHNvIHRoZSBoYW5kbGVzIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQKKyAgICAgICAgd2l0aCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRC4KKyAgICAgICAgIiIiCisgICAgICAgIF9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCisKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfQ2xvc2VIYW5kbGU9X3dpbmFwaS5DbG9zZUhhbmRsZSk6CisgICAgICAgICAgICBfQ2xvc2VIYW5kbGUoc2VsZi5faGFuZGxlKQorCisgICAgICAgIGRlZiBfc2VuZF9ieXRlcyhzZWxmLCBidWYpOgorICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuV3JpdGVGaWxlKHNlbGYuX2hhbmRsZSwgYnVmLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKKyAgICAgICAgICAgICAgICAgICAgICAgIFtvdi5ldmVudF0sIEZhbHNlLCBJTkZJTklURSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIG92LmNhbmNlbCgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgbndyaXR0ZW4sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCBlcnIgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG53cml0dGVuID09IGxlbihidWYpCisKKyAgICAgICAgZGVmIF9yZWN2X2J5dGVzKHNlbGYsIG1heHNpemU9Tm9uZSk6CisgICAgICAgICAgICBpZiBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZToKKyAgICAgICAgICAgICAgICBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBic2l6ZSA9IDEyOCBpZiBtYXhzaXplIGlzIE5vbmUgZWxzZSBtaW4obWF4c2l6ZSwgMTI4KQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoc2VsZi5faGFuZGxlLCBic2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0cmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShvdi5nZXRidWZmZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIgPT0gX3dpbmFwaS5FUlJPUl9NT1JFX0RBVEE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9tb3JlX2RhdGEob3YsIG1heHNpemUpCisgICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciA9PSBfd2luYXBpLkVSUk9SX0JST0tFTl9QSVBFOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNob3VsZG4ndCBnZXQgaGVyZTsgZXhwZWN0ZWQgS2V5Ym9hcmRJbnRlcnJ1cHQiKQorCisgICAgICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgICAgIGlmIChzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5QZWVrTmFtZWRQaXBlKHNlbGYuX2hhbmRsZSlbMF0gIT0gMCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBib29sKHdhaXQoW3NlbGZdLCB0aW1lb3V0KSkKKworICAgICAgICBkZWYgX2dldF9tb3JlX2RhdGEoc2VsZiwgb3YsIG1heHNpemUpOgorICAgICAgICAgICAgYnVmID0gb3YuZ2V0YnVmZmVyKCkKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIGYud3JpdGUoYnVmKQorICAgICAgICAgICAgbGVmdCA9IF93aW5hcGkuUGVla05hbWVkUGlwZShzZWxmLl9oYW5kbGUpWzFdCisgICAgICAgICAgICBhc3NlcnQgbGVmdCA+IDAKKyAgICAgICAgICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIGxlbihidWYpICsgbGVmdCA+IG1heHNpemU6CisgICAgICAgICAgICAgICAgc2VsZi5fYmFkX21lc3NhZ2VfbGVuZ3RoKCkKKyAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgbGVmdCwgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAgICAgcmJ5dGVzLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIGFzc2VydCByYnl0ZXMgPT0gbGVmdAorICAgICAgICAgICAgZi53cml0ZShvdi5nZXRidWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmCisKKworY2xhc3MgQ29ubmVjdGlvbihfQ29ubmVjdGlvbkJhc2UpOgorICAgICIiIgorICAgIENvbm5lY3Rpb24gY2xhc3MgYmFzZWQgb24gYW4gYXJiaXRyYXJ5IGZpbGUgZGVzY3JpcHRvciAoVW5peCBvbmx5KSwgb3IKKyAgICBhIHNvY2tldCBoYW5kbGUgKFdpbmRvd3MpLgorICAgICIiIgorCisgICAgaWYgX3dpbmFwaToKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9X211bHRpcHJvY2Vzc2luZy5jbG9zZXNvY2tldCk6CisgICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQorICAgICAgICBfd3JpdGUgPSBfbXVsdGlwcm9jZXNzaW5nLnNlbmQKKyAgICAgICAgX3JlYWQgPSBfbXVsdGlwcm9jZXNzaW5nLnJlY3YKKyAgICBlbHNlOgorICAgICAgICBkZWYgX2Nsb3NlKHNlbGYsIF9jbG9zZT1vcy5jbG9zZSk6CisgICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQorICAgICAgICBfd3JpdGUgPSBvcy53cml0ZQorICAgICAgICBfcmVhZCA9IG9zLnJlYWQKKworICAgIGRlZiBfc2VuZChzZWxmLCBidWYsIHdyaXRlPV93cml0ZSk6CisgICAgICAgIHJlbWFpbmluZyA9IGxlbihidWYpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBuID0gd3JpdGUoc2VsZi5faGFuZGxlLCBidWYpCisgICAgICAgICAgICByZW1haW5pbmcgLT0gbgorICAgICAgICAgICAgaWYgcmVtYWluaW5nID09IDA6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGJ1ZiA9IGJ1ZltuOl0KKworICAgIGRlZiBfcmVjdihzZWxmLCBzaXplLCByZWFkPV9yZWFkKToKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZSA9IHNlbGYuX2hhbmRsZQorICAgICAgICByZW1haW5pbmcgPSBzaXplCisgICAgICAgIHdoaWxlIHJlbWFpbmluZyA+IDA6CisgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCisgICAgICAgICAgICBuID0gbGVuKGNodW5rKQorICAgICAgICAgICAgaWYgbiA9PSAwOgorICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpCisgICAgICAgICAgICBidWYud3JpdGUoY2h1bmspCisgICAgICAgICAgICByZW1haW5pbmcgLT0gbgorICAgICAgICByZXR1cm4gYnVmCisKKyAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKKyAgICAgICAgIyBGb3Igd2lyZSBjb21wYXRpYmlsaXR5IHdpdGggMy4yIGFuZCBsb3dlcgorICAgICAgICBuID0gbGVuKGJ1ZikKKyAgICAgICAgc2VsZi5fc2VuZChzdHJ1Y3QucGFjaygiIWkiLCBuKSkKKyAgICAgICAgIyBUaGUgY29uZGl0aW9uIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycworICAgICAgICAjIHdoZW4gc2VuZGluZyBhIDAtbGVuZ3RoIGJ1ZmZlciBpZiB0aGUgb3RoZXIgZW5kIGNsb3NlZCB0aGUgcGlwZS4KKyAgICAgICAgaWYgbiA+IDA6CisgICAgICAgICAgICBzZWxmLl9zZW5kKGJ1ZikKKworICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICBidWYgPSBzZWxmLl9yZWN2KDQpCisgICAgICAgIHNpemUsID0gc3RydWN0LnVucGFjaygiIWkiLCBidWYuZ2V0dmFsdWUoKSkKKyAgICAgICAgaWYgbWF4c2l6ZSBpcyBub3QgTm9uZSBhbmQgc2l6ZSA+IG1heHNpemU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fcmVjdihzaXplKQorCisgICAgZGVmIF9wb2xsKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICByID0gd2FpdChbc2VsZl0sIHRpbWVvdXQpCisgICAgICAgIHJldHVybiBib29sKHIpCisKKworIwogIyBQdWJsaWMgZnVuY3Rpb25zCiAjCiAKQEAgLTE1NCw2ICs0NDIsOCBAQAogCiAgICAgICAgIFJldHVybnMgYSBgQ29ubmVjdGlvbmAgb2JqZWN0LgogICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2xpc3RlbmVyIGlzIGNsb3NlZCcpCiAgICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgICBpZiBzZWxmLl9hdXRoa2V5OgogICAgICAgICAgICAgZGVsaXZlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKQEAgLTE2NCwxMSArNDU0LDE5IEBACiAgICAgICAgICcnJwogICAgICAgICBDbG9zZSB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fbGlzdGVuZXIuX2FkZHJlc3MpCiAgICAgbGFzdF9hY2NlcHRlZCA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9saXN0ZW5lci5fbGFzdF9hY2NlcHRlZCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzLCBmYW1pbHk9Tm9uZSwgYXV0aGtleT1Ob25lKToKICAgICAnJycKQEAgLTIwMSwxOSArNDk5LDE2IEBACiAgICAgICAgICAgICBzMSwgczIgPSBzb2NrZXQuc29ja2V0cGFpcigpCiAgICAgICAgICAgICBzMS5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICAgczIuc2V0YmxvY2tpbmcoVHJ1ZSkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKG9zLmR1cChzMS5maWxlbm8oKSkpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihvcy5kdXAoczIuZmlsZW5vKCkpKQotICAgICAgICAgICAgczEuY2xvc2UoKQotICAgICAgICAgICAgczIuY2xvc2UoKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKHMxLmRldGFjaCgpKQorICAgICAgICAgICAgYzIgPSBDb25uZWN0aW9uKHMyLmRldGFjaCgpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmQxLCBmZDIgPSBvcy5waXBlKCkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihmZDIsIHJlYWRhYmxlPUZhbHNlKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCisgICAgICAgICAgICBjMiA9IENvbm5lY3Rpb24oZmQyLCByZWFkYWJsZT1GYWxzZSkKIAogICAgICAgICByZXR1cm4gYzEsIGMyCiAKIGVsc2U6Ci0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMgogCiAgICAgZGVmIFBpcGUoZHVwbGV4PVRydWUpOgogICAgICAgICAnJycKQEAgLTIyMSwzNSArNTE2LDM1IEBACiAgICAgICAgICcnJwogICAgICAgICBhZGRyZXNzID0gYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1BJUEUnKQogICAgICAgICBpZiBkdXBsZXg6Ci0gICAgICAgICAgICBvcGVubW9kZSA9IHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWAotICAgICAgICAgICAgYWNjZXNzID0gd2luMzIuR0VORVJJQ19SRUFEIHwgd2luMzIuR0VORVJJQ19XUklURQorICAgICAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1JFQUQgfCBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgIG9ic2l6ZSwgaWJzaXplID0gQlVGU0laRSwgQlVGU0laRQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Blbm1vZGUgPSB3aW4zMi5QSVBFX0FDQ0VTU19JTkJPVU5ECi0gICAgICAgICAgICBhY2Nlc3MgPSB3aW4zMi5HRU5FUklDX1dSSVRFCisgICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfSU5CT1VORAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgICAgICBvYnNpemUsIGlic2l6ZSA9IDAsIEJVRlNJWkUKIAotICAgICAgICBoMSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlLAotICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgMSwgb2JzaXplLCBpYnNpemUsIHdpbjMyLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCB3aW4zMi5OVUxMCisgICAgICAgIGgxID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICBhZGRyZXNzLCBvcGVubW9kZSB8IF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQgfAorICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSwKKyAgICAgICAgICAgIF93aW5hcGkuUElQRV9UWVBFX01FU1NBR0UgfCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8CisgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgIDEsIG9ic2l6ZSwgaWJzaXplLCBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICkKLSAgICAgICAgaDIgPSB3aW4zMi5DcmVhdGVGaWxlKAotICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCB3aW4zMi5OVUxMLCB3aW4zMi5PUEVOX0VYSVNUSU5HLCAwLCB3aW4zMi5OVUxMCisgICAgICAgIGgyID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKKyAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgKQotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgyLCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKKyAgICAgICAgX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKKyAgICAgICAgICAgIGgyLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpbjMyLkNvbm5lY3ROYW1lZFBpcGUoaDEsIHdpbjMyLk5VTEwpCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSB3aW4zMi5FUlJPUl9QSVBFX0NPTk5FQ1RFRDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBvdmVybGFwcGVkID0gX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlKGgxLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgIF8sIGVyciA9IG92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICBhc3NlcnQgZXJyID09IDAKIAotICAgICAgICBjMSA9IF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKLSAgICAgICAgYzIgPSBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKGgyLCByZWFkYWJsZT1kdXBsZXgpCisgICAgICAgIGMxID0gUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKKyAgICAgICAgYzIgPSBQaXBlQ29ubmVjdGlvbihoMiwgcmVhZGFibGU9ZHVwbGV4KQogCiAgICAgICAgIHJldHVybiBjMSwgYzIKIApAQCAtMjY0LDEyICs1NTksMTUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZmFtaWx5LCBiYWNrbG9nPTEpOgogICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KGdldGF0dHIoc29ja2V0LCBmYW1pbHkpKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKKyAgICAgICAgICAgICMgU09fUkVVU0VBRERSIGhhcyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgKGlzc3VlICMyNTUwKS4KKyAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuYmluZChhZGRyZXNzKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0Lmxpc3RlbihiYWNrbG9nKQogICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX3NvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNlbGYuX2ZhbWlseSA9IGZhbWlseQpAQCAtMjg1LDEwICs1ODMsNyBAQAogICAgIGRlZiBhY2NlcHQoc2VsZik6CiAgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkKQotICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKQEAgLTMwMywyNCArNTk4LDggQEAKICAgICBmYW1pbHkgPSBhZGRyZXNzX3R5cGUoYWRkcmVzcykKICAgICB3aXRoIHNvY2tldC5zb2NrZXQoIGdldGF0dHIoc29ja2V0LCBmYW1pbHkpICkgYXMgczoKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICB0ID0gX2luaXRfdGltZW91dCgpCi0KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUNPTk5SRUZVU0VEIG9yIF9jaGVja190aW1lb3V0KHQpOgotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnZmFpbGVkIHRvIGNvbm5lY3QgdG8gYWRkcmVzcyAlcycsIGFkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQpCi0gICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCiAKICMKICMgRGVmaW5pdGlvbnMgZm9yIGNvbm5lY3Rpb25zIGJhc2VkIG9uIG5hbWVkIHBpcGVzCkBAIC0zMzQsNDggKzYxMyw1NSBAQAogICAgICAgICAnJycKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGJhY2tsb2c9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gYWRkcmVzcwotICAgICAgICAgICAgaGFuZGxlID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKLSAgICAgICAgICAgICAgICB3aW4zMi5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgd2luMzIuTlVMTAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtoYW5kbGVdCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUgPSBbc2VsZi5fbmV3X2hhbmRsZShmaXJzdD1UcnVlKV0KKwogICAgICAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKLQogICAgICAgICAgICAgc3ViX2RlYnVnKCdsaXN0ZW5lciBjcmVhdGVkIHdpdGggYWRkcmVzcz0lcicsIHNlbGYuX2FkZHJlc3MpCi0KICAgICAgICAgICAgIHNlbGYuY2xvc2UgPSBGaW5hbGl6ZSgKICAgICAgICAgICAgICAgICBzZWxmLCBQaXBlTGlzdGVuZXIuX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5faGFuZGxlX3F1ZXVlLCBzZWxmLl9hZGRyZXNzKSwgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgZGVmIGFjY2VwdChzZWxmKToKLSAgICAgICAgICAgIG5ld2hhbmRsZSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzLCB3aW4zMi5QSVBFX0FDQ0VTU19EVVBMRVgsCi0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfV0FJVCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsIEJVRlNJWkUsIEJVRlNJWkUsCi0gICAgICAgICAgICAgICAgd2luMzIuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIHdpbjMyLk5VTEwKKyAgICAgICAgZGVmIF9uZXdfaGFuZGxlKHNlbGYsIGZpcnN0PUZhbHNlKToKKyAgICAgICAgICAgIGZsYWdzID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19EVVBMRVggfCBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECisgICAgICAgICAgICBpZiBmaXJzdDoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBfd2luYXBpLkZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFCisgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcywgZmxhZ3MsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1RZUEVfTUVTU0FHRSB8IF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKG5ld2hhbmRsZSkKKworICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3F1ZXVlLmFwcGVuZChzZWxmLl9uZXdfaGFuZGxlKCkpCiAgICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGVfcXVldWUucG9wKDApCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2luMzIuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIHdpbjMyLk5VTEwpCi0gICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgb3YgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gX3dpbmFwaS5FUlJPUl9OT19EQVRBOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICMgRVJST1JfTk9fREFUQSBjYW4gb2NjdXIgaWYgYSBjbGllbnQgaGFzIGFscmVhZHkgY29ubmVjdGVkLAogICAgICAgICAgICAgICAgICMgd3JpdHRlbiBkYXRhIGFuZCB0aGVuIGRpc2Nvbm5lY3RlZCAtLSBzZWUgSXNzdWUgMTQ3MjUuCi0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfUElQRV9DT05ORUNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfTk9fREFUQSk6CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoYW5kbGUpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUpCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIocXVldWUsIGFkZHJlc3MpOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdjbG9zaW5nIGxpc3RlbmVyIHdpdGggYWRkcmVzcz0lcicsIGFkZHJlc3MpCiAgICAgICAgICAgICBmb3IgaGFuZGxlIGluIHF1ZXVlOgotICAgICAgICAgICAgICAgIGNsb3NlKGhhbmRsZSkKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKIAogICAgIGRlZiBQaXBlQ2xpZW50KGFkZHJlc3MpOgogICAgICAgICAnJycKQEAgLTM4NCwyNCArNjcwLDI1IEBACiAgICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aW4zMi5XYWl0TmFtZWRQaXBlKGFkZHJlc3MsIDEwMDApCi0gICAgICAgICAgICAgICAgaCA9IHdpbjMyLkNyZWF0ZUZpbGUoCi0gICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLkdFTkVSSUNfUkVBRCB8IHdpbjMyLkdFTkVSSUNfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgIDAsIHdpbjMyLk5VTEwsIHdpbjMyLk9QRU5fRVhJU1RJTkcsIDAsIHdpbjMyLk5VTEwKKyAgICAgICAgICAgICAgICBfd2luYXBpLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKKyAgICAgICAgICAgICAgICBoID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLCBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgICAgICAgICAgMCwgX3dpbmFwaS5OVUxMLCBfd2luYXBpLk9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfU0VNX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfUElQRV9CVVNZKSBvciBfY2hlY2tfdGltZW91dCh0KToKKyAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yIG5vdCBpbiAoX3dpbmFwaS5FUlJPUl9TRU1fVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgsIHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQorICAgICAgICBfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAorICAgICAgICAgICAgaCwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaCkKKyAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGgpCiAKICMKICMgQXV0aGVudGljYXRpb24gc3R1ZmYKQEAgLTQ1OCwxMCArNzQ1LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkcyhzKQogCiBkZWYgX3htbF9kdW1wcyhvYmopOgotICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0ZjgnKQorICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0Zi04JykKIAogZGVmIF94bWxfbG9hZHMocyk6Ci0gICAgKG9iaiwpLCBtZXRob2QgPSB4bWxycGNsaWIubG9hZHMocy5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAob2JqLCksIG1ldGhvZCA9IHhtbHJwY2xpYi5sb2FkcyhzLmRlY29kZSgndXRmLTgnKSkKICAgICByZXR1cm4gb2JqCiAKIGNsYXNzIFhtbExpc3RlbmVyKExpc3RlbmVyKToKQEAgLTQ3NSwzICs3NjIsMTYzIEBACiAgICAgZ2xvYmFsIHhtbHJwY2xpYgogICAgIGltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogICAgIHJldHVybiBDb25uZWN0aW9uV3JhcHBlcihDbGllbnQoKmFyZ3MsICoqa3dkcyksIF94bWxfZHVtcHMsIF94bWxfbG9hZHMpCisKKyMKKyMgV2FpdAorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKworICAgIGRlZiBfZXhoYXVzdGl2ZV93YWl0KGhhbmRsZXMsIHRpbWVvdXQpOgorICAgICAgICAjIFJldHVybiBBTEwgaGFuZGxlcyB3aGljaCBhcmUgY3VycmVudGx5IHNpZ25hbGxlZC4gIChPbmx5CisgICAgICAgICMgcmV0dXJuaW5nIHRoZSBmaXJzdCBzaWduYWxsZWQgbWlnaHQgY3JlYXRlIHN0YXJ2YXRpb24gaXNzdWVzLikKKyAgICAgICAgTCA9IGxpc3QoaGFuZGxlcykKKyAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICB3aGlsZSBMOgorICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEwsIEZhbHNlLCB0aW1lb3V0KQorICAgICAgICAgICAgaWYgcmVzID09IFdBSVRfVElNRU9VVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBXQUlUX09CSkVDVF8wIDw9IHJlcyA8IFdBSVRfT0JKRUNUXzAgKyBsZW4oTCk6CisgICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGVsaWYgV0FJVF9BQkFORE9ORURfMCA8PSByZXMgPCBXQUlUX0FCQU5ET05FRF8wICsgbGVuKEwpOgorICAgICAgICAgICAgICAgIHJlcyAtPSBXQUlUX0FCQU5ET05FRF8wCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2hvdWxkIG5vdCBnZXQgaGVyZScpCisgICAgICAgICAgICByZWFkeS5hcHBlbmQoTFtyZXNdKQorICAgICAgICAgICAgTCA9IExbcmVzKzE6XQorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgcmV0dXJuIHJlYWR5CisKKyAgICBfcmVhZHlfZXJyb3JzID0ge193aW5hcGkuRVJST1JfQlJPS0VOX1BJUEUsIF93aW5hcGkuRVJST1JfTkVUTkFNRV9ERUxFVEVEfQorCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBJTkZJTklURQorICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCAqIDEwMDAgKyAwLjUpCisKKyAgICAgICAgb2JqZWN0X2xpc3QgPSBsaXN0KG9iamVjdF9saXN0KQorICAgICAgICB3YWl0aGFuZGxlX3RvX29iaiA9IHt9CisgICAgICAgIG92X2xpc3QgPSBbXQorICAgICAgICByZWFkeV9vYmplY3RzID0gc2V0KCkKKyAgICAgICAgcmVhZHlfaGFuZGxlcyA9IHNldCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIG8gaW4gb2JqZWN0X2xpc3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmaWxlbm8gPSBnZXRhdHRyKG8sICdmaWxlbm8nKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbby5fX2luZGV4X18oKV0gPSBvCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBhbiBvdmVybGFwcGVkIHJlYWQgb2YgbGVuZ3RoIHplcm8KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoZmlsZW5vKCksIDAsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgbm90IGluIF9yZWFkeV9lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG92X2xpc3QuYXBwZW5kKG92KQorICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbb3YuZXZlbnRdID0gbworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBvLmZpbGVubygpIGlzIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVyciA9PSAwIHRoZW4gdGhlcmUgaXMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBwaXBlLCBidXQgaXQgSEFTIE5PVCBiZWVuIGNvbnN1bWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisKKyAgICAgICAgICAgIHJlYWR5X2hhbmRsZXMgPSBfZXhoYXVzdGl2ZV93YWl0KHdhaXRoYW5kbGVfdG9fb2JqLmtleXMoKSwgdGltZW91dCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgcmVxdWVzdCB0aGF0IG92ZXJsYXBwZWQgcmVhZHMgc3RvcAorICAgICAgICAgICAgZm9yIG92IGluIG92X2xpc3Q6CisgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKworICAgICAgICAgICAgIyB3YWl0IGZvciBhbGwgb3ZlcmxhcHBlZCByZWFkcyB0byBzdG9wCisgICAgICAgICAgICBmb3Igb3YgaW4gb3ZfbGlzdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF8sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgaWYgZXJyICE9IF93aW5hcGkuRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIG8gPSB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0KKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIGEgemVybyBsZW5ndGggbWVzc2FnZSBIQVMgYmVlbiBjb25zdW1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobywgJ19nb3RfZW1wdHlfbWVzc2FnZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2dvdF9lbXB0eV9tZXNzYWdlID0gVHJ1ZQorCisgICAgICAgIHJlYWR5X29iamVjdHMudXBkYXRlKHdhaXRoYW5kbGVfdG9fb2JqW2hdIGZvciBoIGluIHJlYWR5X2hhbmRsZXMpCisgICAgICAgIHJldHVybiBbbyBmb3IgbyBpbiBvYmplY3RfbGlzdCBpZiBvIGluIHJlYWR5X29iamVjdHNdCisKK2Vsc2U6CisKKyAgICBpZiBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKToKKyAgICAgICAgZGVmIF9wb2xsKGZkcywgdGltZW91dCk6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCkgKiAxMDAwICAjIHRpbWVvdXQgaXMgaW4gbWlsbGlzZWNvbmRzCisgICAgICAgICAgICBmZF9tYXAgPSB7fQorICAgICAgICAgICAgcG9sbHN0ZXIgPSBzZWxlY3QucG9sbCgpCisgICAgICAgICAgICBmb3IgZmQgaW4gZmRzOgorICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmQsICdmaWxlbm8nKToKKyAgICAgICAgICAgICAgICAgICAgZmRfbWFwW2ZkLmZpbGVubygpXSA9IGZkCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmRfbWFwW2ZkXSA9IGZkCisgICAgICAgICAgICBscyA9IFtdCisgICAgICAgICAgICBmb3IgZmQsIGV2ZW50IGluIHBvbGxzdGVyLnBvbGwodGltZW91dCk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQgJiBzZWxlY3QuUE9MTE5WQUw6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgZmlsZSBkZXNjcmlwdG9yICVpJyAlIGZkKQorICAgICAgICAgICAgICAgIGxzLmFwcGVuZChmZF9tYXBbZmRdKQorICAgICAgICAgICAgcmV0dXJuIGxzCisgICAgZWxzZToKKyAgICAgICAgZGVmIF9wb2xsKGZkcywgdGltZW91dCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZWN0LnNlbGVjdChmZHMsIFtdLCBbXSwgdGltZW91dClbMF0KKworCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiB0aW1lb3V0IDw9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9wb2xsKG9iamVjdF9saXN0LCAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBfcG9sbChvYmplY3RfbGlzdCwgdGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKKworIworIyBNYWtlIGNvbm5lY3Rpb24gYW5kIHNvY2tldCBvYmplY3RzIHNoYXJhYmxlIGlmIHBvc3NpYmxlCisjCisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCisgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgcmVkdWN0aW9uLnJlZHVjZV9zb2NrZXQpCisgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9jb25uZWN0aW9uKQorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y3Rpb24ucmVkdWNlX3BpcGVfY29ubmVjdGlvbikKK2Vsc2U6CisgICAgdHJ5OgorICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjdGlvbi5yZWR1Y2Vfc29ja2V0KQorICAgICAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihDb25uZWN0aW9uLCByZWR1Y3Rpb24ucmVkdWNlX2Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQppbmRleCAxMDFjM2NiLi5lMzFmYzYxIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKQEAgLTM1LDcgKzM1LDcgQEAKIF9fYWxsX18gPSBbCiAgICAgJ1Byb2Nlc3MnLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbicsICdmcmVlemVfc3VwcG9ydCcsCiAgICAgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnQ29uZGl0aW9uJywKLSAgICAnRXZlbnQnLCAnUXVldWUnLCAnTWFuYWdlcicsICdQaXBlJywgJ1Bvb2wnLCAnSm9pbmFibGVRdWV1ZScKKyAgICAnRXZlbnQnLCAnQmFycmllcicsICdRdWV1ZScsICdNYW5hZ2VyJywgJ1BpcGUnLCAnUG9vbCcsICdKb2luYWJsZVF1ZXVlJwogICAgIF0KIAogIwpAQCAtNDYsMTIgKzQ2LDEwIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IGFycmF5Ci1pbXBvcnQgaXRlcnRvb2xzCiAKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBUaW1lb3V0RXJyb3IsIGNwdV9jb3VudAogZnJvbSBtdWx0aXByb2Nlc3NpbmcuZHVtbXkuY29ubmVjdGlvbiBpbXBvcnQgUGlwZQogZnJvbSB0aHJlYWRpbmcgaW1wb3J0IExvY2ssIFJMb2NrLCBTZW1hcGhvcmUsIEJvdW5kZWRTZW1hcGhvcmUKLWZyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudAorZnJvbSB0aHJlYWRpbmcgaW1wb3J0IEV2ZW50LCBDb25kaXRpb24sIEJhcnJpZXIKIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAKICMKQEAgLTg1LDE3ICs4Myw2IEBACiAjCiAjCiAKLWNsYXNzIENvbmRpdGlvbih0aHJlYWRpbmcuX0NvbmRpdGlvbik6Ci0gICAgIyBYWFgKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApOgotICAgICAgICBub3RpZnlfYWxsID0gdGhyZWFkaW5nLl9Db25kaXRpb24ubm90aWZ5X2FsbC5fX2Z1bmNfXwotICAgIGVsc2U6Ci0gICAgICAgIG5vdGlmeV9hbGwgPSB0aHJlYWRpbmcuX0NvbmRpdGlvbi5ub3RpZnlfYWxsCi0KLSMKLSMKLSMKLQogUHJvY2VzcyA9IER1bW15UHJvY2VzcwogY3VycmVudF9wcm9jZXNzID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkCiBjdXJyZW50X3Byb2Nlc3MoKS5fY2hpbGRyZW4gPSB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQppbmRleCBhZjEwNTc5Li44NzRlYzhlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CkBAIC01Myw2ICs1MywxMiBAQAogCiAgICAgYWRkcmVzcyA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9iYWNrbG9nX3F1ZXVlKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogCiBkZWYgQ2xpZW50KGFkZHJlc3MpOgogICAgIF9pbiwgX291dCA9IFF1ZXVlKCksIFF1ZXVlKCkKQEAgLTg1LDMgKzkxLDkgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgcGFzcworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQppbmRleCBiYzhhYzQ0Li5jNTUwMWEyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgb3MKQEAgLTM4LDcgKzEzLDcgQEAKIAogZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHV0aWwsIHByb2Nlc3MKIAotX19hbGxfXyA9IFsnUG9wZW4nLCAnYXNzZXJ0X3NwYXduaW5nJywgJ2V4aXQnLCAnZHVwbGljYXRlJywgJ2Nsb3NlJywgJ0ZvcmtpbmdQaWNrbGVyJ10KK19fYWxsX18gPSBbJ1BvcGVuJywgJ2Fzc2VydF9zcGF3bmluZycsICdkdXBsaWNhdGUnLCAnY2xvc2UnLCAnRm9ya2luZ1BpY2tsZXInXQogCiAjCiAjIENoZWNrIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHNwYXduaW5nIGEgY2hpbGQgcHJvY2VzcwpAQCAtNTUsMTggKzMwLDE4IEBACiAjIFRyeSBtYWtpbmcgc29tZSBjYWxsYWJsZSB0eXBlcyBwaWNrbGFibGUKICMKIAotZnJvbSBwaWNrbGUgaW1wb3J0IF9QaWNrbGVyIGFzIFBpY2tsZXIKK2Zyb20gcGlja2xlIGltcG9ydCBQaWNrbGVyCitmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCisKIGNsYXNzIEZvcmtpbmdQaWNrbGVyKFBpY2tsZXIpOgotICAgIGRpc3BhdGNoID0gUGlja2xlci5kaXNwYXRjaC5jb3B5KCkKKyAgICBfZXh0cmFfcmVkdWNlcnMgPSB7fQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIFBpY2tsZXIuX19pbml0X18oc2VsZiwgKmFyZ3MpCisgICAgICAgIHNlbGYuZGlzcGF0Y2hfdGFibGUgPSBkaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgICAgICAgc2VsZi5kaXNwYXRjaF90YWJsZS51cGRhdGUoc2VsZi5fZXh0cmFfcmVkdWNlcnMpCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHJlZ2lzdGVyKGNscywgdHlwZSwgcmVkdWNlKToKLSAgICAgICAgZGVmIGRpc3BhdGNoZXIoc2VsZiwgb2JqKToKLSAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6Ci0gICAgICAgICAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChvYmosIHJ2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKG9iaj1vYmosICpydikKLSAgICAgICAgY2xzLmRpc3BhdGNoW3R5cGVdID0gZGlzcGF0Y2hlcgorICAgICAgICBjbHMuX2V4dHJhX3JlZHVjZXJzW3R5cGVdID0gcmVkdWNlCiAKIGRlZiBfcmVkdWNlX21ldGhvZChtKToKICAgICBpZiBtLl9fc2VsZl9fIGlzIE5vbmU6CkBAIC0xMDAsOSArNzUsNiBAQAogIwogCiBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKLSAgICBpbXBvcnQgdGltZQotCi0gICAgZXhpdCA9IG9zLl9leGl0CiAgICAgZHVwbGljYXRlID0gb3MuZHVwCiAgICAgY2xvc2UgPSBvcy5jbG9zZQogCkBAIC0xMTgsMTQgKzkwLDIzIEBACiAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKIAorICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICAgICAgc2VsZi5zZW50aW5lbCA9IHIKKwogICAgICAgICAgICAgc2VsZi5waWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgIGlmIHNlbGYucGlkID09IDA6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UocikKICAgICAgICAgICAgICAgICBpZiAncmFuZG9tJyBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQogICAgICAgICAgICAgICAgICAgICByYW5kb20uc2VlZCgpCiAgICAgICAgICAgICAgICAgY29kZSA9IHByb2Nlc3Nfb2JqLl9ib290c3RyYXAoKQogICAgICAgICAgICAgICAgIG9zLl9leGl0KGNvZGUpCiAKKyAgICAgICAgICAgICMgYHdgIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGNoaWxkIGV4aXRzLCBhdCB3aGljaCBwb2ludCBgcmAKKyAgICAgICAgICAgICMgd2lsbCBiZWNvbWUgcmVhZHkgZm9yIHJlYWRpbmcgKHVzaW5nIGUuZy4gc2VsZWN0KCkpLgorICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChyLCkpCisKICAgICAgICAgZGVmIHBvbGwoc2VsZiwgZmxhZz1vcy5XTk9IQU5HKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTE0MywyNiArMTI0LDIwIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKICAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKLSAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wb2xsKDApCi0gICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAotICAgICAgICAgICAgZGVsYXkgPSAwLjAwMDUKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgcmVzID0gc2VsZi5wb2xsKCkKLSAgICAgICAgICAgICAgICBpZiByZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGRlbGF5ID0gbWluKGRlbGF5ICogMiwgcmVtYWluaW5nLCAwLjA1KQotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoZGVsYXkpCi0gICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB3YWl0KFtzZWxmLnNlbnRpbmVsXSwgdGltZW91dCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3QgYmxvY2sgaWYgd2FpdCgpIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wb2xsKG9zLldOT0hBTkcgaWYgdGltZW91dCA9PSAwLjAgZWxzZSAwKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAgICAgICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLmtpbGwoc2VsZi5waWQsIHNpZ25hbC5TSUdURVJNKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTE3NywxMiArMTUyLDkgQEAKIGVsc2U6CiAgICAgaW1wb3J0IF90aHJlYWQKICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgaW1wb3J0IF9zdWJwcm9jZXNzCi0gICAgaW1wb3J0IHRpbWUKKyAgICBpbXBvcnQgX3dpbmFwaQogCi0gICAgZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXAsIGxvYWQsIEhJR0hFU1RfUFJPVE9DT0wKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyLCBDb25uZWN0aW9uLCBQaXBlQ29ubmVjdGlvbgotICAgIGZyb20gLnV0aWwgaW1wb3J0IEZpbmFsaXplCisgICAgZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWQsIEhJR0hFU1RfUFJPVE9DT0wKIAogICAgIGRlZiBkdW1wKG9iaiwgZmlsZSwgcHJvdG9jb2w9Tm9uZSk6CiAgICAgICAgIEZvcmtpbmdQaWNrbGVyKGZpbGUsIHByb3RvY29sKS5kdW1wKG9iaikKQEAgLTE5NSw4ICsxNjcsNyBAQAogICAgIFdJTkVYRSA9IChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQgZ2V0YXR0cihzeXMsICdmcm96ZW4nLCBGYWxzZSkpCiAgICAgV0lOU0VSVklDRSA9IHN5cy5leGVjdXRhYmxlLmxvd2VyKCkuZW5kc3dpdGgoInB5dGhvbnNlcnZpY2UuZXhlIikKIAotICAgIGV4aXQgPSB3aW4zMi5FeGl0UHJvY2VzcwotICAgIGNsb3NlID0gd2luMzIuQ2xvc2VIYW5kbGUKKyAgICBjbG9zZSA9IF93aW5hcGkuQ2xvc2VIYW5kbGUKIAogICAgICMKICAgICAjIF9weXRob25fZXhlIGlzIHRoZSBhc3N1bWVkIHBhdGggdG8gdGhlIHB5dGhvbiBleGVjdXRhYmxlLgpAQCAtMjE4LDExICsxODksMTEgQEAKIAogICAgIGRlZiBkdXBsaWNhdGUoaGFuZGxlLCB0YXJnZXRfcHJvY2Vzcz1Ob25lLCBpbmhlcml0YWJsZT1GYWxzZSk6CiAgICAgICAgIGlmIHRhcmdldF9wcm9jZXNzIGlzIE5vbmU6Ci0gICAgICAgICAgICB0YXJnZXRfcHJvY2VzcyA9IF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCkKLSAgICAgICAgcmV0dXJuIF9zdWJwcm9jZXNzLkR1cGxpY2F0ZUhhbmRsZSgKLSAgICAgICAgICAgIF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCksIGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3MsCi0gICAgICAgICAgICAwLCBpbmhlcml0YWJsZSwgX3N1YnByb2Nlc3MuRFVQTElDQVRFX1NBTUVfQUNDRVNTCi0gICAgICAgICAgICApLkRldGFjaCgpCisgICAgICAgICAgICB0YXJnZXRfcHJvY2VzcyA9IF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKQorICAgICAgICByZXR1cm4gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksIGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3MsCisgICAgICAgICAgICAwLCBpbmhlcml0YWJsZSwgX3dpbmFwaS5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MKKyAgICAgICAgICAgICkKIAogICAgICMKICAgICAjIFdlIGRlZmluZSBhIFBvcGVuIGNsYXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmcm9tIHN1YnByb2Nlc3MsIGJ1dApAQCAtMjM2LDYgKzIwNyw5IEBACiAgICAgICAgIF90bHMgPSBfdGhyZWFkLl9sb2NhbCgpCiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2Nlc3Nfb2JqKToKKyAgICAgICAgICAgIGNtZCA9ICcgJy5qb2luKCciJXMiJyAlIHggZm9yIHggaW4gZ2V0X2NvbW1hbmRfbGluZSgpKQorICAgICAgICAgICAgcHJlcF9kYXRhID0gZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCisKICAgICAgICAgICAgICMgY3JlYXRlIHBpcGUgZm9yIGNvbW11bmljYXRpb24gd2l0aCBjaGlsZAogICAgICAgICAgICAgcmZkLCB3ZmQgPSBvcy5waXBlKCkKIApAQCAtMjQzLDMwICsyMTcsMzEgQEAKICAgICAgICAgICAgIHJoYW5kbGUgPSBkdXBsaWNhdGUobXN2Y3J0LmdldF9vc2ZoYW5kbGUocmZkKSwgaW5oZXJpdGFibGU9VHJ1ZSkKICAgICAgICAgICAgIG9zLmNsb3NlKHJmZCkKIAotICAgICAgICAgICAgIyBzdGFydCBwcm9jZXNzCi0gICAgICAgICAgICBjbWQgPSBnZXRfY29tbWFuZF9saW5lKCkgKyBbcmhhbmRsZV0KLSAgICAgICAgICAgIGNtZCA9ICcgJy5qb2luKCciJXMiJyAlIHggZm9yIHggaW4gY21kKQotICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF9zdWJwcm9jZXNzLkNyZWF0ZVByb2Nlc3MoCi0gICAgICAgICAgICAgICAgX3B5dGhvbl9leGUsIGNtZCwgTm9uZSwgTm9uZSwgMSwgMCwgTm9uZSwgTm9uZSwgTm9uZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGh0LkNsb3NlKCkKLSAgICAgICAgICAgIGNsb3NlKHJoYW5kbGUpCisgICAgICAgICAgICB3aXRoIG9wZW4od2ZkLCAnd2InLCBjbG9zZWZkPVRydWUpIGFzIHRvX2NoaWxkOgorICAgICAgICAgICAgICAgICMgc3RhcnQgcHJvY2VzcworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF93aW5hcGkuQ3JlYXRlUHJvY2VzcygKKyAgICAgICAgICAgICAgICAgICAgICAgIF9weXRob25fZXhlLCBjbWQgKyAoJyAlcycgJSByaGFuZGxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIDEsIDAsIE5vbmUsIE5vbmUsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShodCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBjbG9zZShyaGFuZGxlKQogCi0gICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIHNlbGYKLSAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCi0gICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgICAgICMgc2V0IGF0dHJpYnV0ZXMgb2Ygc2VsZgorICAgICAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCisgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IGhwCisgICAgICAgICAgICAgICAgc2VsZi5zZW50aW5lbCA9IGludChocCkKKyAgICAgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIF93aW5hcGkuQ2xvc2VIYW5kbGUsIChzZWxmLnNlbnRpbmVsLCkpCiAKLSAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAotICAgICAgICAgICAgcHJlcF9kYXRhID0gZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCi0gICAgICAgICAgICB0b19jaGlsZCA9IG9zLmZkb3Blbih3ZmQsICd3YicpCi0gICAgICAgICAgICBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlID0gaW50KGhwKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgICAgICBkdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKLSAgICAgICAgICAgICAgICB0b19jaGlsZC5jbG9zZSgpCisgICAgICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCisgICAgICAgICAgICAgICAgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZSA9IGludChocCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKKyAgICAgICAgICAgICAgICAgICAgZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiB0aHJlYWRfaXNfc3Bhd25pbmcoKToKQEAgLTI3OSwxMyArMjU0LDEzIEBACiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIG1zZWNzID0gX3N1YnByb2Nlc3MuSU5GSU5JVEUKKyAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBfd2luYXBpLklORklOSVRFCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBtYXgoMCwgaW50KHRpbWVvdXQgKiAxMDAwICsgMC41KSkKIAotICAgICAgICAgICAgICAgIHJlcyA9IF9zdWJwcm9jZXNzLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQotICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wOgotICAgICAgICAgICAgICAgICAgICBjb2RlID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgICAgICAgICByZXMgPSBfd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQorICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfd2luYXBpLldBSVRfT0JKRUNUXzA6CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gVEVSTUlOQVRFOgogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IC1zaWduYWwuU0lHVEVSTQogICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBjb2RlCkBAIC0yOTgsOSArMjczLDkgQEAKICAgICAgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhpbnQoc2VsZi5faGFuZGxlKSwgVEVSTUlOQVRFKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKGludChzZWxmLl9oYW5kbGUpLCBURVJNSU5BVEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTEuMCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAjCkBAIC0zNTAsNyArMzI1LDggQEAKICAgICAgICAgICAgIHJldHVybiBbc3lzLmV4ZWN1dGFibGUsICctLW11bHRpcHJvY2Vzc2luZy1mb3JrJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByb2cgPSAnZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgbWFpbjsgbWFpbigpJwotICAgICAgICAgICAgcmV0dXJuIFtfcHl0aG9uX2V4ZSwgJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQorICAgICAgICAgICAgb3B0cyA9IHV0aWwuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgICAgICByZXR1cm4gW19weXRob25fZXhlXSArIG9wdHMgKyBbJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQogCiAKICAgICBkZWYgbWFpbigpOgpAQCAtMzcyLDcgKzM0OCw3IEBACiAgICAgICAgIGZyb21fcGFyZW50LmNsb3NlKCkKIAogICAgICAgICBleGl0Y29kZSA9IHNlbGYuX2Jvb3RzdHJhcCgpCi0gICAgICAgIGV4aXQoZXhpdGNvZGUpCisgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQogCiAKICAgICBkZWYgZ2V0X3ByZXBhcmF0aW9uX2RhdGEobmFtZSk6CkBAIC00MDUsMjIgKzM4MSw2IEBACiAKICAgICAgICAgcmV0dXJuIGQKIAotICAgICMKLSAgICAjIE1ha2UgKFBpcGUpQ29ubmVjdGlvbiBwaWNrbGFibGUKLSAgICAjCi0KLSAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgICAgIGlmIG5vdCBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCAlcyBvYmplY3RzIGNhbiBvbmx5IGJlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3Nlc1xuJwotICAgICAgICAgICAgICAgICd1c2luZyBpbmhlcml0YW5jZScgJSB0eXBlKGNvbm4pLl9fbmFtZV9fCi0gICAgICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gdHlwZShjb25uKSwgKFBvcGVuLmR1cGxpY2F0ZV9mb3JfY2hpbGQoY29ubi5maWxlbm8oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKLQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQogIwogIyBQcmVwYXJlIGN1cnJlbnQgcHJvY2VzcwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDBhMjVlZjAuLjRlOTNjMTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTQsMzcgKzQsMTEgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgYmlzZWN0CiBpbXBvcnQgbW1hcAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKQEAgLTUyLDcgKzI2LDcgQEAKIAogaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgaW1wb3J0IF93aW5hcGkKIAogICAgIGNsYXNzIEFyZW5hKG9iamVjdCk6CiAKQEAgLTYyLDcgKzM2LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgICAgIHNlbGYubmFtZSA9ICdweW0tJWQtJWQnICUgKG9zLmdldHBpZCgpLCBuZXh0KEFyZW5hLl9jb3VudGVyKSkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IHdpbjMyLkdldExhc3RFcnJvcigpID09IDAsICd0YWduYW1lIGFscmVhZHkgaW4gdXNlJworICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gMCwgJ3RhZ25hbWUgYWxyZWFkeSBpbiB1c2UnCiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgpAQCAtNzIsNyArNDYsNyBAQAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAgICAgIHNlbGYuc2l6ZSwgc2VsZi5uYW1lID0gc2VsZi5fc3RhdGUgPSBzdGF0ZQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgd2luMzIuR2V0TGFzdEVycm9yKCkgPT0gd2luMzIuRVJST1JfQUxSRUFEWV9FWElTVFMKKyAgICAgICAgICAgIGFzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IF93aW5hcGkuRVJST1JfQUxSRUFEWV9FWElTVFMKIAogZWxzZToKIApAQCAtMjMxLDcgKzIwNSw3IEBACiAgICAgICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQogCiAjCi0jIENsYXNzIHJlcHJlc2VudGluZyBhIGNodW5rIG9mIGFuIG1tYXAgLS0gY2FuIGJlIGluaGVyaXRlZAorIyBDbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBvZiBhbiBtbWFwIC0tIGNhbiBiZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2VzcwogIwogCiBjbGFzcyBCdWZmZXJXcmFwcGVyKG9iamVjdCk6CkBAIC0yNDQsMTEgKzIxOCw2IEBACiAgICAgICAgIHNlbGYuX3N0YXRlID0gKGJsb2NrLCBzaXplKQogICAgICAgICBGaW5hbGl6ZShzZWxmLCBCdWZmZXJXcmFwcGVyLl9oZWFwLmZyZWUsIGFyZ3M9KGJsb2NrLCkpCiAKLSAgICBkZWYgZ2V0X2FkZHJlc3Moc2VsZik6CisgICAgZGVmIGNyZWF0ZV9tZW1vcnl2aWV3KHNlbGYpOgogICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSwgc2l6ZSA9IHNlbGYuX3N0YXRlCi0gICAgICAgIGFkZHJlc3MsIGxlbmd0aCA9IF9tdWx0aXByb2Nlc3NpbmcuYWRkcmVzc19vZl9idWZmZXIoYXJlbmEuYnVmZmVyKQotICAgICAgICBhc3NlcnQgc2l6ZSA8PSBsZW5ndGgKLSAgICAgICAgcmV0dXJuIGFkZHJlc3MgKyBzdGFydAotCi0gICAgZGVmIGdldF9zaXplKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGVbMV0KKyAgICAgICAgcmV0dXJuIG1lbW9yeXZpZXcoYXJlbmEuYnVmZmVyKVtzdGFydDpzdGFydCtzaXplXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggNTU4OGVhZC4uMWFiMTQ3ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC01LDMyICs1LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsgJ0Jhc2VNYW5hZ2VyJywgJ1N5bmNNYW5hZ2VyJywgJ0Jhc2VQcm94eScsICdUb2tlbicgXQpAQCAtMzksMTkgKzE0LDE2IEBACiAjIEltcG9ydHMKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgd2Vha3JlZgogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IGFycmF5CiBpbXBvcnQgcXVldWUKIAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMKLWZyb20gcGlja2xlIGltcG9ydCBQaWNrbGluZ0Vycm9yCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4sIFBvb2wsIHV0aWwsIGNvbm5lY3Rpb24KIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IEF1dGhlbnRpY2F0aW9uU3RyaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBleGl0LCBQb3BlbiwgYXNzZXJ0X3NwYXduaW5nLCBGb3JraW5nUGlja2xlcgotZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgRmluYWxpemUsIGluZm8KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IFBvcGVuLCBGb3JraW5nUGlja2xlcgorZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKICMKICMgUmVnaXN0ZXIgc29tZSB0aGluZ3MgZm9yIHBpY2tsaW5nCkBAIC0xNjgsMjggKzE0MCwzOCBAQAogICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnQgPSB7fQogICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLlJMb2NrKCkKLSAgICAgICAgc2VsZi5zdG9wID0gMAogCiAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIHNlcnZlciBmb3JldmVyCiAgICAgICAgICcnJworICAgICAgICBzZWxmLnN0b3BfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBjdXJyZW50X3Byb2Nlc3MoKS5fbWFuYWdlcl9zZXJ2ZXIgPSBzZWxmCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjY2VwdGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5hY2NlcHRlcikKKyAgICAgICAgICAgIGFjY2VwdGVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIGFjY2VwdGVyLnN0YXJ0KCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKLSAgICAgICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnN0b3BfZXZlbnQuaXNfc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC53YWl0KDEpCiAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnN0b3AgPSA5OTkKLSAgICAgICAgICAgIHNlbGYubGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKKyAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXNldHRpbmcgc3Rkb3V0LCBzdGRlcnInKQorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuX19zdGRvdXRfXworICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXworICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGRlZiBhY2NlcHRlcihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKKyAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgdC5zdGFydCgpCiAKICAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMjM2LDcgKzIxOCw3IEBACiAgICAgICAgIHNlbmQgPSBjb25uLnNlbmQKICAgICAgICAgaWRfdG9fb2JqID0gc2VsZi5pZF90b19vYmoKIAotICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wOgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wX2V2ZW50LmlzX3NldCgpOgogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKQEAgLTM0NiwzMiArMzI4LDEzIEBACiAgICAgICAgIFNodXRkb3duIHRoaXMgcHJvY2VzcwogICAgICAgICAnJycKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ21hbmFnZXIgcmVjZWl2ZWQgc2h1dGRvd24gbWVzc2FnZScpCi0gICAgICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQotCi0gICAgICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKLSAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVzZXR0aW5nIHN0ZG91dCwgc3RkZXJyJykKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotCi0gICAgICAgICAgICAgICAgdXRpbC5fcnVuX2ZpbmFsaXplcnMoMCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAudGVybWluYXRlKCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAuam9pbigpCi0KLSAgICAgICAgICAgICAgICB1dGlsLl9ydW5fZmluYWxpemVycygpCi0gICAgICAgICAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIGV4aXRpbmcgd2l0aCBleGl0Y29kZSAwJykKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICB1dGlsLmRlYnVnKCdtYW5hZ2VyIHJlY2VpdmVkIHNodXRkb3duIG1lc3NhZ2UnKQorICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGV4aXQoMCkKKyAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC5zZXQoKQogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBjLCB0eXBlaWQsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAnJycKQEAgLTQ4MywxMCArNDQ2LDYgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fTGlzdGVuZXIsIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXQogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiB0eXBlKHNlbGYpLmZyb21fYWRkcmVzcywgXAotICAgICAgICAgICAgICAgKHNlbGYuX2FkZHJlc3MsIHNlbGYuX2F1dGhrZXksIHNlbGYuX3NlcmlhbGl6ZXIpCi0KICAgICBkZWYgZ2V0X3NlcnZlcihzZWxmKToKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybiBzZXJ2ZXIgb2JqZWN0IHdpdGggc2VydmVfZm9yZXZlcigpIG1ldGhvZCBhbmQgYWRkcmVzcyBhdHRyaWJ1dGUKQEAgLTU3Niw3ICs1MzUsMTAgQEAKICAgICAgICAgJycnCiAgICAgICAgIEpvaW4gdGhlIG1hbmFnZXIgcHJvY2VzcyAoaWYgaXQgaGFzIGJlZW4gc3Bhd25lZCkKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Muam9pbih0aW1lb3V0KQorICAgICAgICBpZiBzZWxmLl9wcm9jZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2Vzcy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25lCiAKICAgICBkZWYgX2RlYnVnX2luZm8oc2VsZik6CiAgICAgICAgICcnJwpAQCAtNTk5LDYgKzU2MSw5IEBACiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLklOSVRJQUw6CisgICAgICAgICAgICBzZWxmLnN0YXJ0KCkKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNUQVJURUQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKQEAgLTYyMCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTAuMikKKyAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTEuMCkKICAgICAgICAgICAgIGlmIHByb2Nlc3MuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICB1dGlsLmluZm8oJ21hbmFnZXIgc3RpbGwgYWxpdmUnKQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIocHJvY2VzcywgJ3Rlcm1pbmF0ZScpOgpAQCAtOTgyLDggKzk0Nyw5IEBACiAKIGNsYXNzIEFjcXVpcmVyUHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2FjcXVpcmUnLCAncmVsZWFzZScpCi0gICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhY3F1aXJlJywgKGJsb2NraW5nLCkpCisgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgYXJncyA9IChibG9ja2luZywpIGlmIHRpbWVvdXQgaXMgTm9uZSBlbHNlIChibG9ja2luZywgdGltZW91dCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2FjcXVpcmUnLCBhcmdzKQogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgncmVsZWFzZScpCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTEwMDAsNiArOTY2LDI0IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdub3RpZnknKQogICAgIGRlZiBub3RpZnlfYWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnbm90aWZ5X2FsbCcpCisgICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQorICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQorICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAKIGNsYXNzIEV2ZW50UHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2lzX3NldCcsICdzZXQnLCAnY2xlYXInLCAnd2FpdCcpCkBAIC0xMDEyLDYgKzk5NiwyNiBAQAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd3YWl0JywgKHRpbWVvdXQsKSkKIAorCitjbGFzcyBCYXJyaWVyUHJveHkoQmFzZVByb3h5KToKKyAgICBfZXhwb3NlZF8gPSAoJ19fZ2V0YXR0cmlidXRlX18nLCAnd2FpdCcsICdhYm9ydCcsICdyZXNldCcpCisgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3dhaXQnLCAodGltZW91dCwpKQorICAgIGRlZiBhYm9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2Fib3J0JykKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZXNldCcpCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRpZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCdwYXJ0aWVzJywpKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuX3dhaXRpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCduX3dhaXRpbmcnLCkpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyb2tlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ2Jyb2tlbicsKSkKKworCiBjbGFzcyBOYW1lc3BhY2VQcm94eShCYXNlUHJveHkpOgogICAgIF9leHBvc2VkXyA9ICgnX19nZXRhdHRyaWJ1dGVfXycsICdfX3NldGF0dHJfXycsICdfX2RlbGF0dHJfXycpCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGtleSk6CkBAIC0xMDQxLDEyICsxMDQ1LDExIEBACiAKIAogQmFzZUxpc3RQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0Jhc2VMaXN0UHJveHknLCAoCi0gICAgJ19fYWRkX18nLCAnX19jb250YWluc19fJywgJ19fZGVsaXRlbV9fJywgJ19fZGVsc2xpY2VfXycsCi0gICAgJ19fZ2V0aXRlbV9fJywgJ19fZ2V0c2xpY2VfXycsICdfX2xlbl9fJywgJ19fbXVsX18nLAotICAgICdfX3JldmVyc2VkX18nLCAnX19ybXVsX18nLCAnX19zZXRpdGVtX18nLCAnX19zZXRzbGljZV9fJywKKyAgICAnX19hZGRfXycsICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19nZXRpdGVtX18nLCAnX19sZW5fXycsCisgICAgJ19fbXVsX18nLCAnX19yZXZlcnNlZF9fJywgJ19fcm11bF9fJywgJ19fc2V0aXRlbV9fJywKICAgICAnYXBwZW5kJywgJ2NvdW50JywgJ2V4dGVuZCcsICdpbmRleCcsICdpbnNlcnQnLCAncG9wJywgJ3JlbW92ZScsCiAgICAgJ3JldmVyc2UnLCAnc29ydCcsICdfX2ltdWxfXycKLSAgICApKSAgICAgICAgICAgICAgICAgICMgWFhYIF9fZ2V0c2xpY2VfXyBhbmQgX19zZXRzbGljZV9fIHVubmVlZGVkIGluIFB5My4wCisgICAgKSkKIGNsYXNzIExpc3RQcm94eShCYXNlTGlzdFByb3h5KToKICAgICBkZWYgX19pYWRkX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLl9jYWxsbWV0aG9kKCdleHRlbmQnLCAodmFsdWUsKSkKQEAgLTEwNjQsMTcgKzEwNjcsMTggQEAKIAogCiBBcnJheVByb3h5ID0gTWFrZVByb3h5VHlwZSgnQXJyYXlQcm94eScsICgKLSAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2dldHNsaWNlX18nLCAnX19zZXRzbGljZV9fJwotICAgICkpICAgICAgICAgICAgICAgICAgIyBYWFggX19nZXRzbGljZV9fIGFuZCBfX3NldHNsaWNlX18gdW5uZWVkZWQgaW4gUHkzLjAKKyAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycKKyAgICApKQogCiAKIFBvb2xQcm94eSA9IE1ha2VQcm94eVR5cGUoJ1Bvb2xQcm94eScsICgKICAgICAnYXBwbHknLCAnYXBwbHlfYXN5bmMnLCAnY2xvc2UnLCAnaW1hcCcsICdpbWFwX3Vub3JkZXJlZCcsICdqb2luJywKLSAgICAnbWFwJywgJ21hcF9hc3luYycsICd0ZXJtaW5hdGUnCisgICAgJ21hcCcsICdtYXBfYXN5bmMnLCAnc3Rhcm1hcCcsICdzdGFybWFwX2FzeW5jJywgJ3Rlcm1pbmF0ZScKICAgICApKQogUG9vbFByb3h5Ll9tZXRob2RfdG9fdHlwZWlkXyA9IHsKICAgICAnYXBwbHlfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAogICAgICdtYXBfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAorICAgICdzdGFybWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICAnaW1hcCc6ICdJdGVyYXRvcicsCiAgICAgJ2ltYXBfdW5vcmRlcmVkJzogJ0l0ZXJhdG9yJwogICAgIH0KQEAgLTExMDMsNiArMTEwNyw3IEBACiBTeW5jTWFuYWdlci5yZWdpc3RlcignQm91bmRlZFNlbWFwaG9yZScsIHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlLAogICAgICAgICAgICAgICAgICAgICAgQWNxdWlyZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdDb25kaXRpb24nLCB0aHJlYWRpbmcuQ29uZGl0aW9uLCBDb25kaXRpb25Qcm94eSkKK1N5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdCYXJyaWVyJywgdGhyZWFkaW5nLkJhcnJpZXIsIEJhcnJpZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdQb29sJywgUG9vbCwgUG9vbFByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ2xpc3QnLCBsaXN0LCBMaXN0UHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignZGljdCcsIGRpY3QsIERpY3RQcm94eSkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA3NTAyZmY4Li43ZjczYjQ0IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQb29sJ10KQEAgLTY0LDYgKzM5LDkgQEAKIGRlZiBtYXBzdGFyKGFyZ3MpOgogICAgIHJldHVybiBsaXN0KG1hcCgqYXJncykpCiAKK2RlZiBzdGFybWFwc3RhcihhcmdzKToKKyAgICByZXR1cm4gbGlzdChpdGVydG9vbHMuc3Rhcm1hcChhcmdzWzBdLCBhcmdzWzFdKSkKKwogIwogIyBDb2RlIHJ1biBieSB3b3JrZXIgcHJvY2Vzc2VzCiAjCkBAIC0yNDcsMTQgKzIyNSwzMCBAQAogICAgICAgICBBcHBseSBgZnVuY2AgdG8gZWFjaCBlbGVtZW50IGluIGBpdGVyYWJsZWAsIGNvbGxlY3RpbmcgdGhlIHJlc3VsdHMKICAgICAgICAgaW4gYSBsaXN0IHRoYXQgaXMgcmV0dXJuZWQuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCi0gICAgICAgIHJldHVybiBzZWxmLm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplKS5nZXQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcChzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgTGlrZSBgbWFwKClgIG1ldGhvZCBidXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBgaXRlcmFibGVgIGFyZSBleHBlY3RlZCB0bworICAgICAgICBiZSBpdGVyYWJsZXMgYXMgd2VsbCBhbmQgd2lsbCBiZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuIEhlbmNlCisgICAgICAgIGBmdW5jYCBhbmQgKGEsIGIpIGJlY29tZXMgZnVuYyhhLCBiKS4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcF9hc3luYyhzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCisgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBzdGFybWFwKClgIG1ldGhvZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssIGVycm9yX2NhbGxiYWNrKQogCiAgICAgZGVmIGltYXAoc2VsZiwgZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZT0xKToKICAgICAgICAgJycnCiAgICAgICAgIEVxdWl2YWxlbnQgb2YgYG1hcCgpYCAtLSBjYW4gYmUgTVVDSCBzbG93ZXIgdGhhbiBgUG9vbC5tYXAoKWAuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgIHJlc3VsdCA9IElNYXBJdGVyYXRvcihzZWxmLl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQpAQCAtMjcyLDcgKzI2Niw4IEBACiAgICAgICAgICcnJwogICAgICAgICBMaWtlIGBpbWFwKClgIG1ldGhvZCBidXQgb3JkZXJpbmcgb2YgcmVzdWx0cyBpcyBhcmJpdHJhcnkuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgIHJlc3VsdCA9IElNYXBVbm9yZGVyZWRJdGVyYXRvcihzZWxmLl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQpAQCAtMjkxLDcgKzI4Niw4IEBACiAgICAgICAgICcnJwogICAgICAgICBBc3luY2hyb25vdXMgdmVyc2lvbiBvZiBgYXBwbHkoKWAgbWV0aG9kLgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBSVU46CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKICAgICAgICAgcmVzdWx0ID0gQXBwbHlSZXN1bHQoc2VsZi5fY2FjaGUsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjaykKICAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoWyhyZXN1bHQuX2pvYiwgTm9uZSwgZnVuYywgYXJncywga3dkcyldLCBOb25lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMzAxLDcgKzI5NywxNiBAQAogICAgICAgICAnJycKICAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYG1hcCgpYCBtZXRob2QuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIG1hcHN0YXIsIGNodW5rc2l6ZSwgY2FsbGJhY2ssCisgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaykKKworICAgIGRlZiBfbWFwX2FzeW5jKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBtYXBwZXIsIGNodW5rc2l6ZT1Ob25lLCBjYWxsYmFjaz1Ob25lLAorICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gaW1wbGVtZW50IG1hcCwgc3Rhcm1hcCBhbmQgdGhlaXIgYXN5bmMgY291bnRlcnBhcnRzLgorICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9vbCBub3QgcnVubmluZyIpCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGl0ZXJhYmxlLCAnX19sZW5fXycpOgogICAgICAgICAgICAgaXRlcmFibGUgPSBsaXN0KGl0ZXJhYmxlKQogCkBAIC0zMTUsNyArMzIwLDcgQEAKICAgICAgICAgdGFza19iYXRjaGVzID0gUG9vbC5fZ2V0X3Rhc2tzKGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemUpCiAgICAgICAgIHJlc3VsdCA9IE1hcFJlc3VsdChzZWxmLl9jYWNoZSwgY2h1bmtzaXplLCBsZW4oaXRlcmFibGUpLCBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPWVycm9yX2NhbGxiYWNrKQotICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBtYXBzdGFyLCAoeCwpLCB7fSkKKyAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoKChyZXN1bHQuX2pvYiwgaSwgbWFwcGVyLCAoeCwpLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZSh0YXNrX2JhdGNoZXMpKSwgTm9uZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQKIApAQCAtNTE5LDYgKzUyNCwxMiBAQAogICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnY2xlYW5pbmcgdXAgd29ya2VyICVkJyAlIHAucGlkKQogICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKKyAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQorCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuYXBwbHlfYXN5bmMoKWAKICMKQEAgLTUyNiwzMiArNTM3LDI2IEBACiBjbGFzcyBBcHBseVJlc3VsdChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhY2hlLCBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spOgotICAgICAgICBzZWxmLl9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbih0aHJlYWRpbmcuTG9jaygpKQorICAgICAgICBzZWxmLl9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuX2pvYiA9IG5leHQoam9iX2NvdW50ZXIpCiAgICAgICAgIHNlbGYuX2NhY2hlID0gY2FjaGUKLSAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQogICAgICAgICBzZWxmLl9jYWxsYmFjayA9IGNhbGxiYWNrCiAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrID0gZXJyb3JfY2FsbGJhY2sKICAgICAgICAgY2FjaGVbc2VsZi5fam9iXSA9IHNlbGYKIAogICAgIGRlZiByZWFkeShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWR5CisgICAgICAgIHJldHVybiBzZWxmLl9ldmVudC5pc19zZXQoKQogCiAgICAgZGVmIHN1Y2Nlc3NmdWwoc2VsZik6Ci0gICAgICAgIGFzc2VydCBzZWxmLl9yZWFkeQorICAgICAgICBhc3NlcnQgc2VsZi5yZWFkeSgpCiAgICAgICAgIHJldHVybiBzZWxmLl9zdWNjZXNzCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC53YWl0KHRpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICBzZWxmLl9ldmVudC53YWl0KHRpbWVvdXQpCiAKICAgICBkZWYgZ2V0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYud2FpdCh0aW1lb3V0KQotICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZHk6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWR5KCk6CiAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IKICAgICAgICAgaWYgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQpAQCAtNTY0LDEyICs1NjksNyBAQAogICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrIGFuZCBub3Qgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAKICMKQEAgLTU4Niw3ICs1ODYsNyBAQAogICAgICAgICBzZWxmLl9jaHVua3NpemUgPSBjaHVua3NpemUKICAgICAgICAgaWYgY2h1bmtzaXplIDw9IDA6CiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IDAKLSAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgICAgIGRlbCBjYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IGxlbmd0aC8vY2h1bmtzaXplICsgYm9vbChsZW5ndGggJSBjaHVua3NpemUpCkBAIC02MDAsMjQgKzYwMCwxNCBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKIAogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmltYXAoKWAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQppbmRleCAzMjYyYjUwLi44OTM1MDdiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nXQpAQCAtOTIsMTIgKzY3LDE2IEBACiAgICAgJycnCiAgICAgX1BvcGVuID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwKKyAgICAgICAgICAgICAgICAgKiwgZGFlbW9uPU5vbmUpOgogICAgICAgICBhc3NlcnQgZ3JvdXAgaXMgTm9uZSwgJ2dyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93JwogICAgICAgICBjb3VudCA9IG5leHQoX2N1cnJlbnRfcHJvY2Vzcy5fY291bnRlcikKICAgICAgICAgc2VsZi5faWRlbnRpdHkgPSBfY3VycmVudF9wcm9jZXNzLl9pZGVudGl0eSArIChjb3VudCwpCiAgICAgICAgIHNlbGYuX2F1dGhrZXkgPSBfY3VycmVudF9wcm9jZXNzLl9hdXRoa2V5Ci0gICAgICAgIHNlbGYuX2RhZW1vbmljID0gX2N1cnJlbnRfcHJvY2Vzcy5fZGFlbW9uaWMKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gX2N1cnJlbnRfcHJvY2Vzcy5fZGFlbW9uaWMKICAgICAgICAgc2VsZi5fdGVtcGRpciA9IF9jdXJyZW50X3Byb2Nlc3MuX3RlbXBkaXIKICAgICAgICAgc2VsZi5fcGFyZW50X3BpZCA9IG9zLmdldHBpZCgpCiAgICAgICAgIHNlbGYuX3BvcGVuID0gTm9uZQpAQCAtMTMwLDYgKzEwOSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmcm9tIC5mb3JraW5nIGltcG9ydCBQb3BlbgogICAgICAgICBzZWxmLl9wb3BlbiA9IFBvcGVuKHNlbGYpCisgICAgICAgIHNlbGYuX3NlbnRpbmVsID0gc2VsZi5fcG9wZW4uc2VudGluZWwKICAgICAgICAgX2N1cnJlbnRfcHJvY2Vzcy5fY2hpbGRyZW4uYWRkKHNlbGYpCiAKICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgpAQCAtMjE2LDYgKzE5NiwxNyBAQAogCiAgICAgcGlkID0gaWRlbnQKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZW50aW5lbChzZWxmKToKKyAgICAgICAgJycnCisgICAgICAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciAoVW5peCkgb3IgaGFuZGxlIChXaW5kb3dzKSBzdWl0YWJsZSBmb3IKKyAgICAgICAgd2FpdGluZyBmb3IgcHJvY2VzcyB0ZXJtaW5hdGlvbi4KKyAgICAgICAgJycnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW50aW5lbAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9jZXNzIG5vdCBzdGFydGVkIikKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZiBpcyBfY3VycmVudF9wcm9jZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gJ3N0YXJ0ZWQnCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDUxZDk5MTIuLjM3MjcxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnXQpAQCAtMzksMTIgKzE0LDEyIEBACiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXRleGl0CiBpbXBvcnQgd2Vha3JlZgoraW1wb3J0IGVycm5vCiAKIGZyb20gcXVldWUgaW1wb3J0IEVtcHR5LCBGdWxsCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBpcGUKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBMb2NrLCBCb3VuZGVkU2VtYXBob3JlLCBTZW1hcGhvcmUsIENvbmRpdGlvbgogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZGVidWcsIGluZm8sIEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBhc3NlcnRfc3Bhd25pbmcKQEAgLTY3LDYgKzQyLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTG9jaygpCiAgICAgICAgIHNlbGYuX3NlbSA9IEJvdW5kZWRTZW1hcGhvcmUobWF4c2l6ZSkKKyAgICAgICAgIyBGb3IgdXNlIGJ5IGNvbmN1cnJlbnQuZnV0dXJlcworICAgICAgICBzZWxmLl9pZ25vcmVfZXBpcGUgPSBGYWxzZQogCiAgICAgICAgIHNlbGYuX2FmdGVyX2ZvcmsoKQogCkBAIC03NSwxMSArNTIsMTEgQEAKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQotICAgICAgICByZXR1cm4gKHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAorICAgICAgICByZXR1cm4gKHNlbGYuX2lnbm9yZV9lcGlwZSwgc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCiAgICAgICAgICAgICAgICAgc2VsZi5fcmxvY2ssIHNlbGYuX3dsb2NrLCBzZWxmLl9zZW0sIHNlbGYuX29waWQpCiAKICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKLSAgICAgICAgKHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAorICAgICAgICAoc2VsZi5faWdub3JlX2VwaXBlLCBzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKICAgICAgICAgIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaywgc2VsZi5fc2VtLCBzZWxmLl9vcGlkKSA9IHN0YXRlCiAgICAgICAgIHNlbGYuX2FmdGVyX2ZvcmsoKQogCkBAIC0xODIsNyArMTU5LDcgQEAKICAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgIHRhcmdldD1RdWV1ZS5fZmVlZCwKICAgICAgICAgICAgIGFyZ3M9KHNlbGYuX2J1ZmZlciwgc2VsZi5fbm90ZW1wdHksIHNlbGYuX3NlbmQsCi0gICAgICAgICAgICAgICAgICBzZWxmLl93bG9jaywgc2VsZi5fd3JpdGVyLmNsb3NlKSwKKyAgICAgICAgICAgICAgICAgIHNlbGYuX3dsb2NrLCBzZWxmLl93cml0ZXIuY2xvc2UsIHNlbGYuX2lnbm9yZV9lcGlwZSksCiAgICAgICAgICAgICBuYW1lPSdRdWV1ZUZlZWRlclRocmVhZCcKICAgICAgICAgICAgICkKICAgICAgICAgc2VsZi5fdGhyZWFkLmRhZW1vbiA9IFRydWUKQEAgLTIzMyw3ICsyMTAsNyBAQAogICAgICAgICAgICAgbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmQsIHdyaXRlbG9jaywgY2xvc2UpOgorICAgIGRlZiBfZmVlZChidWZmZXIsIG5vdGVtcHR5LCBzZW5kLCB3cml0ZWxvY2ssIGNsb3NlLCBpZ25vcmVfZXBpcGUpOgogICAgICAgICBkZWJ1Zygnc3RhcnRpbmcgdGhyZWFkIHRvIGZlZWQgZGF0YSB0byBwaXBlJykKICAgICAgICAgZnJvbSAudXRpbCBpbXBvcnQgaXNfZXhpdGluZwogCkBAIC0yNzUsNiArMjUyLDggQEAKICAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBpZ25vcmVfZXBpcGUgYW5kIGdldGF0dHIoZSwgJ2Vycm5vJywgMCkgPT0gZXJybm8uRVBJUEU6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIFNpbmNlIHRoaXMgcnVucyBpbiBhIGRhZW1vbiB0aHJlYWQgdGhlIHJlc291cmNlcyBpdCB1c2VzCiAgICAgICAgICAgICAjIG1heSBiZSBiZWNvbWUgdW51c2FibGUgd2hpbGUgdGhlIHByb2Nlc3MgaXMgY2xlYW5pbmcgdXAuCiAgICAgICAgICAgICAjIFdlIGlnbm9yZSBlcnJvcnMgd2hpY2ggaGFwcGVuIGFmdGVyIHRoZSBwcm9jZXNzIGhhcwpAQCAtMzU2LDYgKzMzNSw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciA9IFBpcGUoZHVwbGV4PUZhbHNlKQogICAgICAgICBzZWxmLl9ybG9jayA9IExvY2soKQorICAgICAgICBzZWxmLl9wb2xsID0gc2VsZi5fcmVhZGVyLnBvbGwKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICBzZWxmLl93bG9jayA9IE5vbmUKICAgICAgICAgZWxzZToKQEAgLTM2Myw3ICszNDMsNyBAQAogICAgICAgICBzZWxmLl9tYWtlX21ldGhvZHMoKQogCiAgICAgZGVmIGVtcHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX3JlYWRlci5wb2xsKCkKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9wb2xsKCkKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQppbmRleCA2ZTVlNWJjLi42NTZmYThmIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQpAQCAtNSw1MyArNSwyOSBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotX19hbGxfXyA9IFtdCitfX2FsbF9fID0gWydyZWR1Y2Vfc29ja2V0JywgJ3JlZHVjZV9jb25uZWN0aW9uJywgJ3NlbmRfaGFuZGxlJywgJ3JlY3ZfaGFuZGxlJ10KIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2lnbmFsCiAKLWltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBQb3BlbiwgZHVwbGljYXRlLCBjbG9zZSwgRm9ya2luZ1BpY2tsZXIKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGRlYnVnLCBzdWJfZGVidWcKLWZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IENsaWVudCwgTGlzdGVuZXIKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IGlzX2V4aXRpbmcsIHN1Yl93YXJuaW5nCiAKIAogIwogIwogIwogCi1pZiBub3Qoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IgaGFzYXR0cihfbXVsdGlwcm9jZXNzaW5nLCAncmVjdmZkJykpOgoraWYgbm90KHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIChoYXNhdHRyKHNvY2tldCwgJ0NNU0dfTEVOJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoc29ja2V0LCAnU0NNX1JJR0hUUycpKSk6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3BpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIG5vdCBzdXBwb3J0ZWQnKQogCiAjCkBAIC01OSwxNTcgKzM1LDI0NiBAQAogIwogCiBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBpbXBvcnQgX3N1YnByb2Nlc3MKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgIyBXaW5kb3dzCisgICAgX19hbGxfXyArPSBbJ3JlZHVjZV9waXBlX2Nvbm5lY3Rpb24nXQorICAgIGltcG9ydCBfd2luYXBpCiAKICAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgotICAgICAgICBwcm9jZXNzX2hhbmRsZSA9IHdpbjMyLk9wZW5Qcm9jZXNzKAotICAgICAgICAgICAgd2luMzIuUFJPQ0VTU19BTExfQUNDRVNTLCBGYWxzZSwgZGVzdGluYXRpb25fcGlkCi0gICAgICAgICAgICApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5ld19oYW5kbGUgPSBkdXBsaWNhdGUoaGFuZGxlLCBwcm9jZXNzX2hhbmRsZSkKLSAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfaGFuZGxlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2xvc2UocHJvY2Vzc19oYW5kbGUpCisgICAgICAgIGRoID0gRHVwSGFuZGxlKGhhbmRsZSwgX3dpbmFwaS5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MsIGRlc3RpbmF0aW9uX3BpZCkKKyAgICAgICAgY29ubi5zZW5kKGRoKQogCiAgICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgotICAgICAgICByZXR1cm4gY29ubi5yZWN2KCkKKyAgICAgICAgcmV0dXJuIGNvbm4ucmVjdigpLmRldGFjaCgpCiAKLWVsc2U6Ci0gICAgZGVmIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZSwgZGVzdGluYXRpb25fcGlkKToKLSAgICAgICAgX211bHRpcHJvY2Vzc2luZy5zZW5kZmQoY29ubi5maWxlbm8oKSwgaGFuZGxlKQorICAgIGNsYXNzIER1cEhhbmRsZShvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlLCBhY2Nlc3MsIHBpZD1Ob25lKToKKyAgICAgICAgICAgICMgZHVwbGljYXRlIGhhbmRsZSBmb3IgcHJvY2VzcyB3aXRoIGdpdmVuIHBpZAorICAgICAgICAgICAgaWYgcGlkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgICAgIHByb2MgPSBfd2luYXBpLk9wZW5Qcm9jZXNzKF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwgcGlkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgcHJvYywgYWNjZXNzLCBGYWxzZSwgMCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShwcm9jKQorICAgICAgICAgICAgc2VsZi5fYWNjZXNzID0gYWNjZXNzCisgICAgICAgICAgICBzZWxmLl9waWQgPSBwaWQKIAotICAgIGRlZiByZWN2X2hhbmRsZShjb25uKToKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKGNvbm4uZmlsZW5vKCkpCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICAjIHJldHJpZXZlIGhhbmRsZSBmcm9tIHByb2Nlc3Mgd2hpY2ggY3VycmVudGx5IG93bnMgaXQKKyAgICAgICAgICAgIGlmIHNlbGYuX3BpZCA9PSBvcy5nZXRwaWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCisgICAgICAgICAgICBwcm9jID0gX3dpbmFwaS5PcGVuUHJvY2Vzcyhfd2luYXBpLlBST0NFU1NfRFVQX0hBTkRMRSwgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9waWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBzZWxmLl9oYW5kbGUsIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWNjZXNzLCBGYWxzZSwgX3dpbmFwaS5EVVBMSUNBVEVfQ0xPU0VfU09VUkNFKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHByb2MpCiAKLSMKLSMgU3VwcG9ydCBmb3IgYSBwZXItcHJvY2VzcyBzZXJ2ZXIgdGhyZWFkIHdoaWNoIGNhY2hlcyBwaWNrbGVkIGhhbmRsZXMKLSMKKyAgICBjbGFzcyBEdXBTb2NrZXQob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2spOgorICAgICAgICAgICAgbmV3X3NvY2sgPSBzb2NrLmR1cCgpCisgICAgICAgICAgICBkZWYgc2VuZChjb25uLCBwaWQpOgorICAgICAgICAgICAgICAgIHNoYXJlID0gbmV3X3NvY2suc2hhcmUocGlkKQorICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhzaGFyZSkKKyAgICAgICAgICAgIHNlbGYuX2lkID0gcmVzb3VyY2Vfc2hhcmVyLnJlZ2lzdGVyKHNlbmQsIG5ld19zb2NrLmNsb3NlKQogCi1fY2FjaGUgPSBzZXQoKQorICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgY29ubiA9IHJlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaGFyZSA9IGNvbm4ucmVjdl9ieXRlcygpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5mcm9tc2hhcmUoc2hhcmUpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogCi1kZWYgX3Jlc2V0KG9iaik6Ci0gICAgZ2xvYmFsIF9sb2NrLCBfbGlzdGVuZXIsIF9jYWNoZQotICAgIGZvciBoIGluIF9jYWNoZToKLSAgICAgICAgY2xvc2UoaCkKLSAgICBfY2FjaGUuY2xlYXIoKQotICAgIF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgIF9saXN0ZW5lciA9IE5vbmUKKyAgICBkZWYgcmVkdWNlX3NvY2tldChzKToKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfc29ja2V0LCAoRHVwU29ja2V0KHMpLCkKIAotX3Jlc2V0KE5vbmUpCi1yZWdpc3Rlcl9hZnRlcl9mb3JrKF9yZXNldCwgX3Jlc2V0KQorICAgIGRlZiByZWJ1aWxkX3NvY2tldChkcyk6CisgICAgICAgIHJldHVybiBkcy5kZXRhY2goKQogCi1kZWYgX2dldF9saXN0ZW5lcigpOgotICAgIGdsb2JhbCBfbGlzdGVuZXIKKyAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6CisgICAgICAgIGhhbmRsZSA9IGNvbm4uZmlsZW5vKCkKKyAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGhhbmRsZSwgc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIGRzID0gRHVwU29ja2V0KHMpCisgICAgICAgICAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAoZHMsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAKLSAgICBpZiBfbGlzdGVuZXIgaXMgTm9uZToKLSAgICAgICAgX2xvY2suYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIF9saXN0ZW5lciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRlYnVnKCdzdGFydGluZyBsaXN0ZW5lciBhbmQgdGhyZWFkIGZvciBzZW5kaW5nIGhhbmRsZXMnKQotICAgICAgICAgICAgICAgIF9saXN0ZW5lciA9IExpc3RlbmVyKGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKLSAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3NlcnZlKQotICAgICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgX2xvY2sucmVsZWFzZSgpCi0KLSAgICByZXR1cm4gX2xpc3RlbmVyCi0KLWRlZiBfc2VydmUoKToKLSAgICBmcm9tIC51dGlsIGltcG9ydCBpc19leGl0aW5nLCBzdWJfd2FybmluZwotCi0gICAgd2hpbGUgMToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29ubiA9IF9saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgaGFuZGxlX3dhbnRlZCwgZGVzdGluYXRpb25fcGlkID0gY29ubi5yZWN2KCkKLSAgICAgICAgICAgIF9jYWNoZS5yZW1vdmUoaGFuZGxlX3dhbnRlZCkKLSAgICAgICAgICAgIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZV93YW50ZWQsIGRlc3RpbmF0aW9uX3BpZCkKLSAgICAgICAgICAgIGNsb3NlKGhhbmRsZV93YW50ZWQpCi0gICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgbm90IGlzX2V4aXRpbmcoKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgc3ViX3dhcm5pbmcoCi0gICAgICAgICAgICAgICAgICAgICd0aHJlYWQgZm9yIHNoYXJpbmcgaGFuZGxlcyByYWlzZWQgZXhjZXB0aW9uIDpcbicgKwotICAgICAgICAgICAgICAgICAgICAnLScqNzkgKyAnXG4nICsgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSArICctJyo3OQotICAgICAgICAgICAgICAgICAgICApCi0KLSMKLSMgRnVuY3Rpb25zIHRvIGJlIHVzZWQgZm9yIHBpY2tsaW5nL3VucGlja2xpbmcgb2JqZWN0cyB3aXRoIGhhbmRsZXMKLSMKLQotZGVmIHJlZHVjZV9oYW5kbGUoaGFuZGxlKToKLSAgICBpZiBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgcmV0dXJuIChOb25lLCBQb3Blbi5kdXBsaWNhdGVfZm9yX2NoaWxkKGhhbmRsZSksIFRydWUpCi0gICAgZHVwX2hhbmRsZSA9IGR1cGxpY2F0ZShoYW5kbGUpCi0gICAgX2NhY2hlLmFkZChkdXBfaGFuZGxlKQotICAgIHN1Yl9kZWJ1ZygncmVkdWNpbmcgaGFuZGxlICVkJywgaGFuZGxlKQotICAgIHJldHVybiAoX2dldF9saXN0ZW5lcigpLmFkZHJlc3MsIGR1cF9oYW5kbGUsIEZhbHNlKQotCi1kZWYgcmVidWlsZF9oYW5kbGUocGlja2xlZF9kYXRhKToKLSAgICBhZGRyZXNzLCBoYW5kbGUsIGluaGVyaXRlZCA9IHBpY2tsZWRfZGF0YQotICAgIGlmIGluaGVyaXRlZDoKLSAgICAgICAgcmV0dXJuIGhhbmRsZQotICAgIHN1Yl9kZWJ1ZygncmVidWlsZGluZyBoYW5kbGUgJWQnLCBoYW5kbGUpCi0gICAgY29ubiA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCi0gICAgY29ubi5zZW5kKChoYW5kbGUsIG9zLmdldHBpZCgpKSkKLSAgICBuZXdfaGFuZGxlID0gcmVjdl9oYW5kbGUoY29ubikKLSAgICBjb25uLmNsb3NlKCkKLSAgICByZXR1cm4gbmV3X2hhbmRsZQotCi0jCi0jIFJlZ2lzdGVyIGBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1kZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgcmggPSByZWR1Y2VfaGFuZGxlKGNvbm4uZmlsZW5vKCkpCi0gICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKHJoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQotCi1kZWYgcmVidWlsZF9jb25uZWN0aW9uKHJlZHVjZWRfaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpOgotICAgIGhhbmRsZSA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oCi0gICAgICAgIGhhbmRsZSwgcmVhZGFibGU9cmVhZGFibGUsIHdyaXRhYmxlPXdyaXRhYmxlCi0gICAgICAgICkKLQotRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQotIwotIyBSZWdpc3RlciBgc29ja2V0LnNvY2tldGAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWRlZiBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZV8sIHByb3RvPTApOgotICAgIHMgPSBzb2NrZXQuZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVfLCBwcm90bykKLSAgICBpZiBzLl9fY2xhc3NfXyBpcyBub3Qgc29ja2V0LnNvY2tldDoKLSAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoX3NvY2s9cykKLSAgICByZXR1cm4gcwotCi1kZWYgcmVkdWNlX3NvY2tldChzKToKLSAgICByZWR1Y2VkX2hhbmRsZSA9IHJlZHVjZV9oYW5kbGUocy5maWxlbm8oKSkKLSAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChyZWR1Y2VkX2hhbmRsZSwgcy5mYW1pbHksIHMudHlwZSwgcy5wcm90bykKLQotZGVmIHJlYnVpbGRfc29ja2V0KHJlZHVjZWRfaGFuZGxlLCBmYW1pbHksIHR5cGVfLCBwcm90byk6Ci0gICAgZmQgPSByZWJ1aWxkX2hhbmRsZShyZWR1Y2VkX2hhbmRsZSkKLSAgICBfc29jayA9IGZyb21mZChmZCwgZmFtaWx5LCB0eXBlXywgcHJvdG8pCi0gICAgY2xvc2UoZmQpCi0gICAgcmV0dXJuIF9zb2NrCi0KLUZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjZV9zb2NrZXQpCi0KLSMKLSMgUmVnaXN0ZXIgYF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb25gIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgcmVidWlsZF9jb25uZWN0aW9uKGRzLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDb25uZWN0aW9uCisgICAgICAgIHNvY2sgPSBkcy5kZXRhY2goKQorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihzb2NrLmRldGFjaCgpLCByZWFkYWJsZSwgd3JpdGFibGUpCiAKICAgICBkZWYgcmVkdWNlX3BpcGVfY29ubmVjdGlvbihjb25uKToKLSAgICAgICAgcmggPSByZWR1Y2VfaGFuZGxlKGNvbm4uZmlsZW5vKCkpCi0gICAgICAgIHJldHVybiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbiwgKHJoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQorICAgICAgICBhY2Nlc3MgPSAoKF93aW5hcGkuRklMRV9HRU5FUklDX1JFQUQgaWYgY29ubi5yZWFkYWJsZSBlbHNlIDApIHwKKyAgICAgICAgICAgICAgICAgIChfd2luYXBpLkZJTEVfR0VORVJJQ19XUklURSBpZiBjb25uLndyaXRhYmxlIGVsc2UgMCkpCisgICAgICAgIGRoID0gRHVwSGFuZGxlKGNvbm4uZmlsZW5vKCksIGFjY2VzcykKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uLCAoZGgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAKLSAgICBkZWYgcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24ocmVkdWNlZF9oYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSk6Ci0gICAgICAgIGhhbmRsZSA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbigKLSAgICAgICAgICAgIGhhbmRsZSwgcmVhZGFibGU9cmVhZGFibGUsIHdyaXRhYmxlPXdyaXRhYmxlCi0gICAgICAgICAgICApCisgICAgZGVmIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uKGRoLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBQaXBlQ29ubmVjdGlvbgorICAgICAgICBoYW5kbGUgPSBkaC5kZXRhY2goKQorICAgICAgICByZXR1cm4gUGlwZUNvbm5lY3Rpb24oaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpCiAKLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uLCByZWR1Y2VfcGlwZV9jb25uZWN0aW9uKQorZWxzZToKKyAgICAjIFVuaXgKKworICAgICMgT24gTWFjT1NYIHdlIHNob3VsZCBhY2tub3dsZWRnZSByZWNlaXB0IG9mIGZkcyAtLSBzZWUgSXNzdWUxNDY2OQorICAgIEFDS05PV0xFREdFID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCisKKyAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgorICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoY29ubi5maWxlbm8oKSwgc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIHMuc2VuZG1zZyhbYid4J10sIFsoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaygiQGkiLCBoYW5kbGUpKV0pCisgICAgICAgIGlmIEFDS05PV0xFREdFIGFuZCBjb25uLnJlY3ZfYnl0ZXMoKSAhPSBiJ0FDSyc6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RpZCBub3QgcmVjZWl2ZSBhY2tub3dsZWRnZW1lbnQgb2YgZmQnKQorCisgICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCJAaSIpCisgICAgICAgIHdpdGggc29ja2V0LmZyb21mZChjb25uLmZpbGVubygpLCBzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHMucmVjdm1zZygxLCBzb2NrZXQuQ01TR19MRU4oc2l6ZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgQUNLTk9XTEVER0U6CisgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhiJ0FDSycpCisgICAgICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kCisgICAgICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCJAaSIsIGNtc2dfZGF0YVs6c2l6ZV0pWzBdCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IsIHN0cnVjdC5lcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdJbnZhbGlkIGRhdGEgcmVjZWl2ZWQnKQorCisgICAgY2xhc3MgRHVwRmQob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkKToKKyAgICAgICAgICAgIG5ld19mZCA9IG9zLmR1cChmZCkKKyAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CisgICAgICAgICAgICAgICAgc2VuZF9oYW5kbGUoY29ubiwgbmV3X2ZkLCBwaWQpCisgICAgICAgICAgICBkZWYgY2xvc2UoKToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShuZXdfZmQpCisgICAgICAgICAgICBzZWxmLl9pZCA9IHJlc291cmNlX3NoYXJlci5yZWdpc3RlcihzZW5kLCBjbG9zZSkKKworICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgY29ubiA9IHJlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjdl9oYW5kbGUoY29ubikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgcmVkdWNlX3NvY2tldChzKToKKyAgICAgICAgZGYgPSBEdXBGZChzLmZpbGVubygpKQorICAgICAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChkZiwgcy5mYW1pbHksIHMudHlwZSwgcy5wcm90bykKKworICAgIGRlZiByZWJ1aWxkX3NvY2tldChkZiwgZmFtaWx5LCB0eXBlLCBwcm90byk6CisgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tZmQoZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pCisgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICByZXR1cm4gcworCisgICAgZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgorICAgICAgICBkZiA9IER1cEZkKGNvbm4uZmlsZW5vKCkpCisgICAgICAgIHJldHVybiByZWJ1aWxkX2Nvbm5lY3Rpb24sIChkZiwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKKworICAgIGRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24oZGYsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENvbm5lY3Rpb24KKyAgICAgICAgZmQgPSBkZi5kZXRhY2goKQorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihmZCwgcmVhZGFibGUsIHdyaXRhYmxlKQorCisjCisjIFNlcnZlciB3aGljaCBzaGFyZXMgcmVnaXN0ZXJlZCByZXNvdXJjZXMgd2l0aCBjbGllbnRzCisjCisKK2NsYXNzIFJlc291cmNlU2hhcmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9rZXkgPSAwCisgICAgICAgIHNlbGYuX2NhY2hlID0ge30KKyAgICAgICAgc2VsZi5fb2xkX2xvY2tzID0gW10KKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCisgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgcmVnaXN0ZXJfYWZ0ZXJfZm9yayhzZWxmLCBSZXNvdXJjZVNoYXJlci5fYWZ0ZXJmb3JrKQorCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIHNlbmQsIGNsb3NlKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYuX2tleSArPSAxCisgICAgICAgICAgICBzZWxmLl9jYWNoZVtzZWxmLl9rZXldID0gKHNlbmQsIGNsb3NlKQorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9hZGRyZXNzLCBzZWxmLl9rZXkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9jb25uZWN0aW9uKGlkZW50KToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50CisgICAgICAgIGFkZHJlc3MsIGtleSA9IGlkZW50CisgICAgICAgIGMgPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICBjLnNlbmQoKGtleSwgb3MuZ2V0cGlkKCkpKQorICAgICAgICByZXR1cm4gYworCisgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYyA9IENsaWVudChzZWxmLl9hZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgICAgICAgICAgYy5zZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgYy5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4odGltZW91dCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgc3ViX3dhcm4oJ1Jlc291cmNlU2hhcmVyIHRocmVhZCBkaWQgbm90IHN0b3Agd2hlbiBhc2tlZCcpCisgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQorICAgICAgICAgICAgICAgIGZvciBrZXksIChzZW5kLCBjbG9zZSkgaW4gc2VsZi5fY2FjaGUuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlLmNsZWFyKCkKKworICAgIGRlZiBfYWZ0ZXJmb3JrKHNlbGYpOgorICAgICAgICBmb3Iga2V5LCAoc2VuZCwgY2xvc2UpIGluIHNlbGYuX2NhY2hlLml0ZW1zKCk6CisgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgIHNlbGYuX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgIyBJZiBzZWxmLl9sb2NrIHdhcyBsb2NrZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGZvcmssIGl0IG1heSBiZSBicm9rZW4KKyAgICAgICAgIyAtLSBzZWUgaXNzdWUgNjcyMS4gIFJlcGxhY2UgaXQgd2l0aG91dCBsZXR0aW5nIGl0IGJlIGdjJ2VkLgorICAgICAgICBzZWxmLl9vbGRfbG9ja3MuYXBwZW5kKHNlbGYuX2xvY2spCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIGlmIHNlbGYuX2xpc3RlbmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYWRkcmVzcyA9IE5vbmUKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorCisgICAgZGVmIF9zdGFydChzZWxmKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgTGlzdGVuZXIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2xpc3RlbmVyIGlzIE5vbmUKKyAgICAgICAgZGVidWcoJ3N0YXJ0aW5nIGxpc3RlbmVyIGFuZCB0aHJlYWQgZm9yIHNlbmRpbmcgaGFuZGxlcycpCisgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTGlzdGVuZXIoYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICBzZWxmLl9hZGRyZXNzID0gc2VsZi5fbGlzdGVuZXIuYWRkcmVzcworICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fc2VydmUpCisgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gdAorCisgICAgZGVmIF9zZXJ2ZShzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKToKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgcmFuZ2UoMSwgc2lnbmFsLk5TSUcpKQorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgICAgIG1zZyA9IGNvbm4ucmVjdigpCisgICAgICAgICAgICAgICAgaWYgbXNnIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAga2V5LCBkZXN0aW5hdGlvbl9waWQgPSBtc2cKKyAgICAgICAgICAgICAgICBzZW5kLCBjbG9zZSA9IHNlbGYuX2NhY2hlLnBvcChrZXkpCisgICAgICAgICAgICAgICAgc2VuZChjb25uLCBkZXN0aW5hdGlvbl9waWQpCisgICAgICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc19leGl0aW5nKCk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKyAgICAgICAgICAgICAgICAgICAgc3ViX3dhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAndGhyZWFkIGZvciBzaGFyaW5nIGhhbmRsZXMgcmFpc2VkIGV4Y2VwdGlvbiA6XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICctJyo3OSArICdcbicgKyB0cmFjZWJhY2suZm9ybWF0X2V4YygpICsgJy0nKjc5CisgICAgICAgICAgICAgICAgICAgICAgICApCisKK3Jlc291cmNlX3NoYXJlciA9IFJlc291cmNlU2hhcmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKaW5kZXggMWU2OTRkYS4uYTM1OGVkNCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKQEAgLTQsMzUgKzQsOSBAQAogIyBtdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotaW1wb3J0IHN5cwogaW1wb3J0IGN0eXBlcwogaW1wb3J0IHdlYWtyZWYKIApAQCAtODksNyArNjMsNyBAQAogICAgICAgICByZXN1bHQuX19pbml0X18oKnNpemVfb3JfaW5pdGlhbGl6ZXIpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPU5vbmUpOgorZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybiBhIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIGZvciBhIFZhbHVlCiAgICAgJycnCkBAIC0xMDIsMTMgKzc2LDEwIEBACiAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCInJXInIGhhcyBubyBtZXRob2QgJ2FjcXVpcmUnIiAlIGxvY2spCiAgICAgcmV0dXJuIHN5bmNocm9uaXplZChvYmosIGxvY2spCiAKLWRlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqKmt3ZHMpOgorZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJuIGEgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgZm9yIGEgUmF3QXJyYXkKICAgICAnJycKLSAgICBsb2NrID0ga3dkcy5wb3AoJ2xvY2snLCBOb25lKQotICAgIGlmIGt3ZHM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXplZCBrZXl3b3JkIGFyZ3VtZW50KHMpOiAlcycgJSBsaXN0KGt3ZHMua2V5cygpKSkKICAgICBvYmogPSBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogICAgIGlmIGxvY2sgaXMgRmFsc2U6CiAgICAgICAgIHJldHVybiBvYmoKQEAgLTE1OCw3ICsxMjksOCBAQAogICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbmd0aAogICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCi0gICAgb2JqID0gdHlwZV8uZnJvbV9hZGRyZXNzKHdyYXBwZXIuZ2V0X2FkZHJlc3MoKSkKKyAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKKyAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgogICAgIHJldHVybiBvYmoKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKaW5kZXggNzBhZTgyNS4uMjJlYWJlNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsKQEAgLTM3LDE1ICsxMiwxMyBAQAogICAgIF0KIAogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZSwgc2xlZXAgYXMgX3NsZWVwCi0KIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MKLWZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBkZWJ1ZworZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgZGVidWcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGFzc2VydF9zcGF3bmluZywgUG9wZW4KK2Zyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjIFRyeSB0byBpbXBvcnQgdGhlIG1wLnN5bmNocm9uaXplIG1vZHVsZSBjbGVhbmx5LCBpZiBpdCBmYWlscwogIyByYWlzZSBJbXBvcnRFcnJvciBmb3IgcGxhdGZvcm1zIGxhY2tpbmcgYSB3b3JraW5nIHNlbV9vcGVuIGltcGxlbWVudGF0aW9uLgpAQCAtMjQzLDcgKzIxNiw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyB3YWl0IGZvciBub3RpZmljYXRpb24gb3IgdGltZW91dAotICAgICAgICAgICAgcmV0ID0gc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoVHJ1ZSwgdGltZW91dCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICMgaW5kaWNhdGUgdGhhdCB0aGlzIHRocmVhZCBoYXMgd29rZW4KICAgICAgICAgICAgIHNlbGYuX3dva2VuX2NvdW50LnJlbGVhc2UoKQpAQCAtMjUxLDcgKzIyNCw2IEBACiAgICAgICAgICAgICAjIHJlYWNxdWlyZSBsb2NrCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKLSAgICAgICAgICAgIHJldHVybiByZXQKIAogICAgIGRlZiBub3RpZnkoc2VsZik6CiAgICAgICAgIGFzc2VydCBzZWxmLl9sb2NrLl9zZW1sb2NrLl9pc19taW5lKCksICdsb2NrIGlzIG5vdCBvd25lZCcKQEAgLTI5Myw2ICsyNjUsMjQgQEAKICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB3YWl0X2ZvcihzZWxmLCBwcmVkaWNhdGUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKKyAgICAgICAgICAgIHdhaXR0aW1lID0gTm9uZQorICAgICAgICB3aGlsZSBub3QgcmVzdWx0OgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3YWl0dGltZSA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgaWYgd2FpdHRpbWUgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIHJldHVybiByZXN1bHQKKwogIwogIyBFdmVudAogIwpAQCAtMzQzLDMgKzMzMyw0MyBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorCisjCisjIEJhcnJpZXIKKyMKKworY2xhc3MgQmFycmllcih0aHJlYWRpbmcuQmFycmllcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydGllcywgYWN0aW9uPU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuaGVhcCBpbXBvcnQgQnVmZmVyV3JhcHBlcgorICAgICAgICB3cmFwcGVyID0gQnVmZmVyV3JhcHBlcihzdHJ1Y3QuY2FsY3NpemUoJ2knKSAqIDIpCisgICAgICAgIGNvbmQgPSBDb25kaXRpb24oKQorICAgICAgICBzZWxmLl9fc2V0c3RhdGVfXygocGFydGllcywgYWN0aW9uLCB0aW1lb3V0LCBjb25kLCB3cmFwcGVyKSkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAwCisgICAgICAgIHNlbGYuX2NvdW50ID0gMAorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCisgICAgICAgICBzZWxmLl9jb25kLCBzZWxmLl93cmFwcGVyKSA9IHN0YXRlCisgICAgICAgIHNlbGYuX2FycmF5ID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCisgICAgICAgICAgICAgICAgc2VsZi5fY29uZCwgc2VsZi5fd3JhcHBlcikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfc3RhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hcnJheVswXQorCisgICAgQF9zdGF0ZS5zZXR0ZXIKKyAgICBkZWYgX3N0YXRlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fYXJyYXlbMF0gPSB2YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9jb3VudChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FycmF5WzFdCisKKyAgICBAX2NvdW50LnNldHRlcgorICAgIGRlZiBfY291bnQoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9hcnJheVsxXSA9IHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKaW5kZXggNjFiMDUzMy4uNzIzODVhOCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQpAQCAtNCwzOSArNCwxOCBAQAogIyBtdWx0aXByb2Nlc3NpbmcvdXRpbC5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKK2ltcG9ydCBzeXMKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBvcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBhdGV4aXQKIGltcG9ydCB0aHJlYWRpbmcgICAgICAgICMgd2Ugd2FudCB0aHJlYWRpbmcgdG8gaW5zdGFsbCBpdCdzCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFudXAgZnVuY3Rpb24gYmVmb3JlIG11bHRpcHJvY2Vzc2luZyBkb2VzCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IF9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MKIAogZnJvbSBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4KIApAQCAtODQsNyArNjMsNyBAQAogICAgIFJldHVybnMgbG9nZ2VyIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nCiAgICAgJycnCiAgICAgZ2xvYmFsIF9sb2dnZXIKLSAgICBpbXBvcnQgbG9nZ2luZywgYXRleGl0CisgICAgaW1wb3J0IGxvZ2dpbmcKIAogICAgIGxvZ2dpbmcuX2FjcXVpcmVMb2NrKCkKICAgICB0cnk6CkBAIC0xODMsMTAgKzE2MiwxNSBAQAogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3Mgb3Ige30KICAgICAgICAgc2VsZi5fa2V5ID0gKGV4aXRwcmlvcml0eSwgbmV4dChfZmluYWxpemVyX2NvdW50ZXIpKQorICAgICAgICBzZWxmLl9waWQgPSBvcy5nZXRwaWQoKQogCiAgICAgICAgIF9maW5hbGl6ZXJfcmVnaXN0cnlbc2VsZi5fa2V5XSA9IHNlbGYKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB3cj1Ob25lKToKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgd3I9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIGJpbmQgdGhlc2UgbG9jYWxseSBiZWNhdXNlIHRoZSBnbG9iYWxzIGNhbiBoYXZlCisgICAgICAgICAgICAgICAgICMgYmVlbiBjbGVhcmVkIGF0IHNodXRkb3duCisgICAgICAgICAgICAgICAgIF9maW5hbGl6ZXJfcmVnaXN0cnk9X2ZpbmFsaXplcl9yZWdpc3RyeSwKKyAgICAgICAgICAgICAgICAgc3ViX2RlYnVnPXN1Yl9kZWJ1ZywgZ2V0cGlkPW9zLmdldHBpZCk6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIGNhbGxiYWNrIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBvciBjYW5jZWxsZWQKICAgICAgICAgJycnCkBAIC0xOTUsOSArMTc5LDEzIEBACiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIG5vIGxvbmdlciByZWdpc3RlcmVkJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGNhbGxpbmcgJXMgd2l0aCBhcmdzICVzIGFuZCBrd2FyZ3MgJXMnLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2ssIHNlbGYuX2FyZ3MsIHNlbGYuX2t3YXJncykKLSAgICAgICAgICAgIHJlcyA9IHNlbGYuX2NhbGxiYWNrKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKKyAgICAgICAgICAgIGlmIHNlbGYuX3BpZCAhPSBnZXRwaWQoKToKKyAgICAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBpZ25vcmVkIGJlY2F1c2UgZGlmZmVyZW50IHByb2Nlc3MnKQorICAgICAgICAgICAgICAgIHJlcyA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgY2FsbGluZyAlcyB3aXRoIGFyZ3MgJXMgYW5kIGt3YXJncyAlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrLCBzZWxmLl9hcmdzLCBzZWxmLl9rd2FyZ3MpCisgICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fY2FsbGJhY2soKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgc2VsZi5fd2Vha3JlZiA9IHNlbGYuX2NhbGxiYWNrID0gc2VsZi5fYXJncyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9rd2FyZ3MgPSBzZWxmLl9rZXkgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4gcmVzCkBAIC0yOTksMTYgKzI4NywyMSBAQAogICAgICAgICBpbmZvKCdwcm9jZXNzIHNodXR0aW5nIGRvd24nKQogICAgICAgICBkZWJ1ZygncnVubmluZyBhbGwgImF0ZXhpdCIgZmluYWxpemVycyB3aXRoIHByaW9yaXR5ID49IDAnKQogICAgICAgICBfcnVuX2ZpbmFsaXplcnMoMCkKKwogICAgICAgICBpZiBjdXJyZW50X3Byb2Nlc3MoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICMgV2UgY2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBOb25lIGhlcmUgYmVjYXVzZSBpZgotICAgICAgICAgICAgIyBpdCdzIE5vbmUsIGFueSBjYWxsIHRvIGBgYWN0aXZlX2NoaWxkcmVuKClgYCB3aWxsIHJhaXNlIGFuCi0gICAgICAgICAgICAjIEF0dHJpYnV0ZUVycm9yIChhY3RpdmVfY2hpbGRyZW4gd2luZHMgdXAgdHJ5aW5nIHRvIGdldAotICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIFRoaXMgaGFwcGVucyBpbiBhCi0gICAgICAgICAgICAjIHZhcmlldHkgb2Ygc2h1dGRvd24gY2lyY3Vtc3RhbmNlcyB0aGF0IGFyZSBub3Qgd2VsbC11bmRlcnN0b29kCi0gICAgICAgICAgICAjIGJlY2F1c2UgbW9kdWxlLXNjb3BlIHZhcmlhYmxlcyBhcmUgbm90IGFwcGFyZW50bHkgc3VwcG9zZWQgdG8KLSAgICAgICAgICAgICMgYmUgZGVzdHJveWVkIHVudGlsIGFmdGVyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiAgSG93ZXZlciwKLSAgICAgICAgICAgICMgdGhleSBhcmUgaW5kZWVkIGRlc3Ryb3llZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuICBTZWUKLSAgICAgICAgICAgICMgaXNzdWVzICM5Nzc1IGFuZCAjMTU4ODEuICBBbHNvIHJlbGF0ZWQ6ICM0MTA2LCAjOTIwNSwgYW5kICM5MjA3LgorICAgICAgICAgICAgIyBpdCdzIE5vbmUsIGFueSBjYWxsIHRvIGBgYWN0aXZlX2NoaWxkcmVuKClgYCB3aWxsIHJhaXNlCisgICAgICAgICAgICAjIGFuIEF0dHJpYnV0ZUVycm9yIChhY3RpdmVfY2hpbGRyZW4gd2luZHMgdXAgdHJ5aW5nIHRvCisgICAgICAgICAgICAjIGdldCBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIE9uZQorICAgICAgICAgICAgIyBzaXR1YXRpb24gd2hlcmUgdGhpcyBjYW4gaGFwcGVuIGlzIGlmIHNvbWVvbmUgaGFzCisgICAgICAgICAgICAjIG1hbmlwdWxhdGVkIHN5cy5tb2R1bGVzLCBjYXVzaW5nIHRoaXMgbW9kdWxlIHRvIGJlCisgICAgICAgICAgICAjIGdhcmJhZ2UgY29sbGVjdGVkLiAgVGhlIGRlc3RydWN0b3IgZm9yIHRoZSBtb2R1bGUgdHlwZQorICAgICAgICAgICAgIyB0aGVuIHJlcGxhY2VzIGFsbCB2YWx1ZXMgaW4gdGhlIG1vZHVsZSBkaWN0IHdpdGggTm9uZS4KKyAgICAgICAgICAgICMgRm9yIGluc3RhbmNlLCBhZnRlciBzZXR1cHRvb2xzIHJ1bnMgYSB0ZXN0IGl0IHJlcGxhY2VzCisgICAgICAgICAgICAjIHN5cy5tb2R1bGVzIHdpdGggYSBjb3B5IGNyZWF0ZWQgZWFybGllci4gIFNlZSBpc3N1ZXMKKyAgICAgICAgICAgICMgIzk3NzUgYW5kICMxNTg4MS4gIEFsc28gcmVsYXRlZDogIzQxMDYsICM5MjA1LCBhbmQKKyAgICAgICAgICAgICMgIzkyMDcuCisKICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgogICAgICAgICAgICAgICAgIGlmIHAuX2RhZW1vbmljOgogICAgICAgICAgICAgICAgICAgICBpbmZvKCdjYWxsaW5nIHRlcm1pbmF0ZSgpIGZvciBkYWVtb24gJXMnLCBwLm5hbWUpCmRpZmYgLS1naXQgYS9MaWIvbm50cGxpYi5weSBiL0xpYi9ubnRwbGliLnB5CmluZGV4IDMyYmZmZDguLjJkZTZlYmQgMTAwNjQ0Ci0tLSBhL0xpYi9ubnRwbGliLnB5CisrKyBiL0xpYi9ubnRwbGliLnB5CkBAIC0xNjYsNyArMTY2LDcgQEAKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2LmRlY29kZShlbmMgb3IgJ2FzY2lpJykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodikKLSAgICByZXR1cm4gJyAnLmpvaW4ocGFydHMpCisgICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCiAKIGRlZiBfcGFyc2Vfb3ZlcnZpZXdfZm10KGxpbmVzKToKICAgICAiIiJQYXJzZSBhIGxpc3Qgb2Ygc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgdG8gTElTVCBPVkVSVklFVy5GTVQKQEAgLTM1MSw2ICszNTEsMjAgQEAKICAgICAgICAgIyBMb2cgaW4gYW5kIGVuY3J5cHRpb24gc2V0dXAgb3JkZXIgaXMgbGVmdCB0byBzdWJjbGFzc2VzLgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIGlzX2Nvbm5lY3RlZCA9IGxhbWJkYTogaGFzYXR0cihzZWxmLCAiZmlsZSIpCisgICAgICAgIGlmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucXVpdCgpCisgICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlKCkKKwogICAgIGRlZiBnZXR3ZWxjb21lKHNlbGYpOgogICAgICAgICAiIiJHZXQgdGhlIHdlbGNvbWUgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXIKICAgICAgICAgKHRoaXMgaXMgcmVhZCBhbmQgc3F1aXJyZWxlZCBhd2F5IGJ5IF9faW5pdF9fKCkpLgpAQCAtODE5LDcgKzgzMyw3IEBACiAgICAgICAgIC0gbGlzdDogbGlzdCBvZiAobmFtZSx0aXRsZSkgc3RyaW5ncyIiIgogICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgWEdUSVRMRSBleHRlbnNpb24gaXMgbm90IGFjdGl2ZWx5IHVzZWQsICIKICAgICAgICAgICAgICAgICAgICAgICAidXNlIGRlc2NyaXB0aW9ucygpIGluc3RlYWQiLAotICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBsaW5lX3BhdCA9IHJlLmNvbXBpbGUoJ14oW14gXHRdKylbIFx0XSsoLiopJCcpCiAgICAgICAgIHJlc3AsIHJhd19saW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoJ1hHVElUTEUgJyArIGdyb3VwLCBmaWxlKQogICAgICAgICBsaW5lcyA9IFtdCkBAIC04MzcsNyArODUxLDcgQEAKICAgICAgICAgcGF0aDogZGlyZWN0b3J5IHBhdGggdG8gYXJ0aWNsZQogICAgICAgICAiIiIKICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKICAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdYUEFUSCB7MH0nLmZvcm1hdChpZCkpCiAgICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoJzIyMycpOgpkaWZmIC0tZ2l0IGEvTGliL251bWJlcnMucHkgYi9MaWIvbnVtYmVycy5weQppbmRleCBlY2ZhZDdjLi5iMjA2NDU3IDEwMDY0NAotLS0gYS9MaWIvbnVtYmVycy5weQorKysgYi9MaWIvbnVtYmVycy5weQpAQCAtNSw3ICs1LDcgQEAKIAogVE9ETzogRmlsbCBvdXQgbW9yZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIHRoZSBvcGVyYXRvcnMuIiIiCiAKLWZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZCwgYWJzdHJhY3Rwcm9wZXJ0eQorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiAKIF9fYWxsX18gPSBbIk51bWJlciIsICJDb21wbGV4IiwgIlJlYWwiLCAiUmF0aW9uYWwiLCAiSW50ZWdyYWwiXQogCkBAIC01MCw3ICs1MCw4IEBACiAgICAgICAgICIiIlRydWUgaWYgc2VsZiAhPSAwLiBDYWxsZWQgZm9yIGJvb2woc2VsZikuIiIiCiAgICAgICAgIHJldHVybiBzZWxmICE9IDAKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHJlYWwoc2VsZik6CiAgICAgICAgICIiIlJldHJpZXZlIHRoZSByZWFsIGNvbXBvbmVudCBvZiB0aGlzIG51bWJlci4KIApAQCAtNTgsNyArNTksOCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgaW1hZyhzZWxmKToKICAgICAgICAgIiIiUmV0cmlldmUgdGhlIGltYWdpbmFyeSBjb21wb25lbnQgb2YgdGhpcyBudW1iZXIuCiAKQEAgLTI3MiwxMSArMjc0LDEzIEBACiAKICAgICBfX3Nsb3RzX18gPSAoKQogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgbnVtZXJhdG9yKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBkZW5vbWluYXRvcihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCmRpZmYgLS1naXQgYS9MaWIvb3Bjb2RlLnB5IGIvTGliL29wY29kZS5weQppbmRleCA4ZTE1ZDEzLi5hNjM5ZmUzIDEwMDY0NAotLS0gYS9MaWIvb3Bjb2RlLnB5CisrKyBiL0xpYi9vcGNvZGUucHkKQEAgLTYsNyArNiw3IEBACiAKIF9fYWxsX18gPSBbImNtcF9vcCIsICJoYXNjb25zdCIsICJoYXNuYW1lIiwgImhhc2pyZWwiLCAiaGFzamFicyIsCiAgICAgICAgICAgICJoYXNsb2NhbCIsICJoYXNjb21wYXJlIiwgImhhc2ZyZWUiLCAib3BuYW1lIiwgIm9wbWFwIiwKLSAgICAgICAgICAgIkhBVkVfQVJHVU1FTlQiLCAiRVhURU5ERURfQVJHIl0KKyAgICAgICAgICAgIkhBVkVfQVJHVU1FTlQiLCAiRVhURU5ERURfQVJHIiwgImhhc25hcmdzIl0KIAogY21wX29wID0gKCc8JywgJzw9JywgJz09JywgJyE9JywgJz4nLCAnPj0nLCAnaW4nLCAnbm90IGluJywgJ2lzJywKICAgICAgICAgJ2lzIG5vdCcsICdleGNlcHRpb24gbWF0Y2gnLCAnQkFEJykKQEAgLTE4LDYgKzE4LDcgQEAKIGhhc2xvY2FsID0gW10KIGhhc2NvbXBhcmUgPSBbXQogaGFzZnJlZSA9IFtdCitoYXNuYXJncyA9IFtdCiAKIG9wbWFwID0ge30KIG9wbmFtZSA9IFsnJ10gKiAyNTYKQEAgLTQzLDcgKzQ0LDYgQEAKICMgSW5zdHJ1Y3Rpb24gb3Bjb2RlcyBmb3IgY29tcGlsZWQgY29kZQogIyBCbGFuayBsaW5lcyBjb3JyZXNwb25kIHRvIGF2YWlsYWJsZSBvcGNvZGVzCiAKLWRlZl9vcCgnU1RPUF9DT0RFJywgMCkKIGRlZl9vcCgnUE9QX1RPUCcsIDEpCiBkZWZfb3AoJ1JPVF9UV08nLCAyKQogZGVmX29wKCdST1RfVEhSRUUnLCAzKQpAQCAtODgsNiArODgsNyBAQAogCiBkZWZfb3AoJ1BSSU5UX0VYUFInLCA3MCkKIGRlZl9vcCgnTE9BRF9CVUlMRF9DTEFTUycsIDcxKQorZGVmX29wKCdZSUVMRF9GUk9NJywgNzIpCiAKIGRlZl9vcCgnSU5QTEFDRV9MU0hJRlQnLCA3NSkKIGRlZl9vcCgnSU5QTEFDRV9SU0hJRlQnLCA3NikKQEAgLTE1Miw2ICsxNTMsNyBAQAogCiBkZWZfb3AoJ1JBSVNFX1ZBUkFSR1MnLCAxMzApICAgICMgTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiwgb3IgMykKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTMxKQogZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIE51bWJlciBvZiBhcmdzIHdpdGggZGVmYXVsdCB2YWx1ZXMKIGRlZl9vcCgnQlVJTERfU0xJQ0UnLCAxMzMpICAgICAgIyBOdW1iZXIgb2YgaXRlbXMKIGRlZl9vcCgnTUFLRV9DTE9TVVJFJywgMTM0KQpAQCAtMTY1LDggKzE2NywxMSBAQAogaGFzZnJlZS5hcHBlbmQoMTM4KQogCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSJywgMTQwKSAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTQwKQogZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDE0MSkKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVJfS1cnLCAxNDIpICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxNDIpCiAKIGpyZWxfb3AoJ1NFVFVQX1dJVEgnLCAxNDMpCiAKZGlmZiAtLWdpdCBhL0xpYi9vcHRwYXJzZS5weSBiL0xpYi9vcHRwYXJzZS5weQppbmRleCBkOTdhMWY3Li4zNzc2NGQzIDEwMDY0NAotLS0gYS9MaWIvb3B0cGFyc2UucHkKKysrIGIvTGliL29wdHBhcnNlLnB5CkBAIC04NiwxMCArODYsMTYgQEAKICMgICBJZDogZXJyb3JzLnB5IDUwOSAyMDA2LTA0LTIwIDAwOjU4OjI0WiBnd2FyZAogCiB0cnk6Ci0gICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0CisgICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0LCBuZ2V0dGV4dAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGRlZiBnZXR0ZXh0KG1lc3NhZ2UpOgogICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIG5nZXR0ZXh0KHNpbmd1bGFyLCBwbHVyYWwsIG4pOgorICAgICAgICBpZiBuID09IDE6CisgICAgICAgICAgICByZXR1cm4gc2luZ3VsYXIKKyAgICAgICAgcmV0dXJuIHBsdXJhbAorCiBfID0gZ2V0dGV4dAogCiAKQEAgLTQxMSwxMSArNDE3LDggQEAKIGRlZiBfcGFyc2VfaW50KHZhbCk6CiAgICAgcmV0dXJuIF9wYXJzZV9udW0odmFsLCBpbnQpCiAKLWRlZiBfcGFyc2VfbG9uZyh2YWwpOgotICAgIHJldHVybiBfcGFyc2VfbnVtKHZhbCwgaW50KQotCiBfYnVpbHRpbl9jdnQgPSB7ICJpbnQiIDogKF9wYXJzZV9pbnQsIF8oImludGVnZXIiKSksCi0gICAgICAgICAgICAgICAgICJsb25nIiA6IChfcGFyc2VfbG9uZywgXygibG9uZyBpbnRlZ2VyIikpLAorICAgICAgICAgICAgICAgICAibG9uZyIgOiAoX3BhcnNlX2ludCwgXygiaW50ZWdlciIpKSwKICAgICAgICAgICAgICAgICAgImZsb2F0IiA6IChmbG9hdCwgXygiZmxvYXRpbmctcG9pbnQiKSksCiAgICAgICAgICAgICAgICAgICJjb21wbGV4IiA6IChjb21wbGV4LCBfKCJjb21wbGV4IikpIH0KIApAQCAtMTQ4MywxMSArMTQ4NiwxMCBAQAogICAgICAgICBpZiBvcHRpb24udGFrZXNfdmFsdWUoKToKICAgICAgICAgICAgIG5hcmdzID0gb3B0aW9uLm5hcmdzCiAgICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKSAlIG9wdCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyAlZCBhcmd1bWVudHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG9wdCwgbmFyZ3MpKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IobmdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgbmFyZ3MpICUgeyJvcHRpb24iOiBvcHQsICJudW1iZXIiOiBuYXJnc30pCiAgICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSByYXJncy5wb3AoMCkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNTIyLDExICsxNTI0LDEwIEBACiAKICAgICAgICAgICAgICAgICBuYXJncyA9IG9wdGlvbi5uYXJncwogICAgICAgICAgICAgICAgIGlmIGxlbihyYXJncykgPCBuYXJnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IikgJSBvcHQpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyAlZCBhcmd1bWVudHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcHQsIG5hcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihuZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXJncykgJSB7Im9wdGlvbiI6IG9wdCwgIm51bWJlciI6IG5hcmdzfSkKICAgICAgICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmFyZ3MucG9wKDApCiAgICAgICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9vcy5weSBiL0xpYi9vcy5weQppbmRleCA4MWUwMzdhLi5lNGVhMTQyIDEwMDY0NAotLS0gYS9MaWIvb3MucHkKKysrIGIvTGliL29zLnB5CkBAIC0yNCwxMyArMjQsMTggQEAKICMnCiAKIGltcG9ydCBzeXMsIGVycm5vCitpbXBvcnQgc3RhdCBhcyBzdAogCiBfbmFtZXMgPSBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKIAogIyBOb3RlOiAgbW9yZSBuYW1lcyBhcmUgYWRkZWQgdG8gX19hbGxfXyBsYXRlci4KIF9fYWxsX18gPSBbImFsdHNlcCIsICJjdXJkaXIiLCAicGFyZGlyIiwgInNlcCIsICJwYXRoc2VwIiwgImxpbmVzZXAiLAotICAgICAgICAgICAiZGVmcGF0aCIsICJuYW1lIiwgInBhdGgiLCAiZGV2bnVsbCIsCi0gICAgICAgICAgICJTRUVLX1NFVCIsICJTRUVLX0NVUiIsICJTRUVLX0VORCJdCisgICAgICAgICAgICJkZWZwYXRoIiwgIm5hbWUiLCAicGF0aCIsICJkZXZudWxsIiwgIlNFRUtfU0VUIiwgIlNFRUtfQ1VSIiwKKyAgICAgICAgICAgIlNFRUtfRU5EIiwgImZzZW5jb2RlIiwgImZzZGVjb2RlIiwgImdldF9leGVjX3BhdGgiLCAiZmRvcGVuIiwKKyAgICAgICAgICAgInBvcGVuIiwgImV4dHNlcCJdCisKK2RlZiBfZXhpc3RzKG5hbWUpOgorICAgIHJldHVybiBuYW1lIGluIGdsb2JhbHMoKQogCiBkZWYgX2dldF9leHBvcnRzX2xpc3QobW9kdWxlKToKICAgICB0cnk6CkBAIC0zOCwxOSArNDMsMjMgQEAKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIHJldHVybiBbbiBmb3IgbiBpbiBkaXIobW9kdWxlKSBpZiBuWzBdICE9ICdfJ10KIAorIyBBbnkgbmV3IGRlcGVuZGVuY2llcyBvZiB0aGUgb3MgbW9kdWxlIGFuZC9vciBjaGFuZ2VzIGluIHBhdGggc2VwYXJhdG9yCisjIHJlcXVpcmVzIHVwZGF0aW5nIGltcG9ydGxpYiBhcyB3ZWxsLgogaWYgJ3Bvc2l4JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdwb3NpeCcKICAgICBsaW5lc2VwID0gJ1xuJwogICAgIGZyb20gcG9zaXggaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gcG9zaXggaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaW1wb3J0IHBvc2l4cGF0aCBhcyBwYXRoCiAKLSAgICBpbXBvcnQgcG9zaXgKLSAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChwb3NpeCkpCi0gICAgZGVsIHBvc2l4CisgICAgdHJ5OgorICAgICAgICBmcm9tIHBvc2l4IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKIAogZWxpZiAnbnQnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ250JwpAQCAtNTgsNiArNjcsNyBAQAogICAgIGZyb20gbnQgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gbnQgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaW1wb3J0IG50cGF0aCBhcyBwYXRoCkBAIC02NiwxMiArNzYsMTggQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChudCkpCiAgICAgZGVsIG50CiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gbnQgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbGlmICdvczInIGluIF9uYW1lczoKICAgICBuYW1lID0gJ29zMicKICAgICBsaW5lc2VwID0gJ1xyXG4nCiAgICAgZnJvbSBvczIgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gb3MyIGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGlmIHN5cy52ZXJzaW9uLmZpbmQoJ0VNWCBHQ0MnKSA9PSAtMToKQEAgLTg0LDEyICsxMDAsMTggQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChvczIpKQogICAgIGRlbCBvczIKIAorICAgIHRyeToKKyAgICAgICAgZnJvbSBvczIgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbGlmICdjZScgaW4gX25hbWVzOgogICAgIG5hbWUgPSAnY2UnCiAgICAgbGluZXNlcCA9ICdcclxuJwogICAgIGZyb20gY2UgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gY2UgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgIyBXZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIHBhdGguCkBAIC05OSw2ICsxMjEsMTEgQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChjZSkpCiAgICAgZGVsIGNlCiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gY2UgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbHNlOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBvcyBzcGVjaWZpYyBtb2R1bGUgZm91bmQnKQogCkBAIC0xMDgsOCArMTM1LDk3IEBACiAKIGRlbCBfbmFtZXMKIAorCitpZiBfZXhpc3RzKCJfaGF2ZV9mdW5jdGlvbnMiKToKKyAgICBfZ2xvYmFscyA9IGdsb2JhbHMoKQorICAgIGRlZiBfYWRkKHN0ciwgZm4pOgorICAgICAgICBpZiAoZm4gaW4gX2dsb2JhbHMpIGFuZCAoc3RyIGluIF9oYXZlX2Z1bmN0aW9ucyk6CisgICAgICAgICAgICBfc2V0LmFkZChfZ2xvYmFsc1tmbl0pCisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICBfYWRkKCJIQVZFX0ZDSE1PREFUIiwgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FU0FUIiwgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQorICAgIF9hZGQoIkhBVkVfTUtESVJBVCIsICAgICJta2RpciIpCisgICAgX2FkZCgiSEFWRV9NS0ZJRk9BVCIsICAgIm1rZmlmbyIpCisgICAgX2FkZCgiSEFWRV9NS05PREFUIiwgICAgIm1rbm9kIikKKyAgICBfYWRkKCJIQVZFX09QRU5BVCIsICAgICAib3BlbiIpCisgICAgX2FkZCgiSEFWRV9SRUFETElOS0FUIiwgInJlYWRsaW5rIikKKyAgICBfYWRkKCJIQVZFX1JFTkFNRUFUIiwgICAicmVuYW1lIikKKyAgICBfYWRkKCJIQVZFX1NZTUxJTktBVCIsICAic3ltbGluayIpCisgICAgX2FkZCgiSEFWRV9VTkxJTktBVCIsICAgInVubGluayIpCisgICAgX2FkZCgiSEFWRV9VTkxJTktBVCIsICAgInJtZGlyIikKKyAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQorICAgIHN1cHBvcnRzX2Rpcl9mZCA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgIHN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZDSERJUiIsICAgICAiY2hkaXIiKQorICAgIF9hZGQoIkhBVkVfRkNITU9EIiwgICAgICJjaG1vZCIpCisgICAgX2FkZCgiSEFWRV9GQ0hPV04iLCAgICAgImNob3duIikKKyAgICBfYWRkKCJIQVZFX0ZET1BFTkRJUiIsICAibGlzdGRpciIpCisgICAgX2FkZCgiSEFWRV9GRVhFQ1ZFIiwgICAgImV4ZWN2ZSIpCisgICAgX3NldC5hZGQoc3RhdCkgIyBmc3RhdCBhbHdheXMgd29ya3MKKyAgICBfYWRkKCJIQVZFX0ZUUlVOQ0FURSIsICAidHJ1bmNhdGUiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FTlMiLCAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9GVVRJTUVTIiwgICAgInV0aW1lIikKKyAgICBfYWRkKCJIQVZFX0ZQQVRIQ09ORiIsICAicGF0aGNvbmYiKQorICAgIGlmIF9leGlzdHMoInN0YXR2ZnMiKSBhbmQgX2V4aXN0cygiZnN0YXR2ZnMiKTogIyBtYWMgb3MgeDEwLjMKKyAgICAgICAgX2FkZCgiSEFWRV9GU1RBVFZGUyIsICJzdGF0dmZzIikKKyAgICBzdXBwb3J0c19mZCA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgc3VwcG9ydCBsY2htb2QoKS4gIE9mdGVuIHRoZSBmdW5jdGlvbiBleGlzdHMKKyAgICAjIGFueXdheSwgYXMgYSBzdHViIHRoYXQgYWx3YXlzIHJldHVybnMgRU5PU1VQIG9yIHBlcmhhcHMgRU9QTk9UU1VQUC4KKyAgICAjIChObywgSSBkb24ndCBrbm93IHdoeSB0aGF0J3MgYSBnb29kIGRlc2lnbi4pICAuL2NvbmZpZ3VyZSB3aWxsIGRldGVjdAorICAgICMgdGhpcyBhbmQgcmVqZWN0IGl0LS1zbyBIQVZFX0xDSE1PRCBzdGlsbCB3b24ndCBiZSBkZWZpbmVkIG9uIHN1Y2gKKyAgICAjIHBsYXRmb3Jtcy4gIFRoaXMgaXMgVmVyeSBIZWxwZnVsLgorICAgICMKKyAgICAjIEhvd2V2ZXIsIHNvbWV0aW1lcyBwbGF0Zm9ybXMgd2l0aG91dCBhIHdvcmtpbmcgbGNobW9kKCkgKmRvKiBoYXZlCisgICAgIyBmY2htb2RhdCgpLiAgKEV4YW1wbGVzOiBMaW51eCBrZXJuZWwgMy4yIHdpdGggZ2xpYmMgMi4xNSwKKyAgICAjIE9wZW5JbmRpYW5hIDMueC4pICBBbmQgZmNobW9kYXQoKSBoYXMgYSBmbGFnIHRoYXQgdGhlb3JldGljYWxseSBtYWtlcworICAgICMgaXQgYmVoYXZlIGxpa2UgbGNobW9kKCkuICBTbyBpbiB0aGVvcnkgaXQgd291bGQgYmUgYSBzdWl0YWJsZQorICAgICMgcmVwbGFjZW1lbnQgZm9yIGxjaG1vZCgpLiAgQnV0IHdoZW4gbGNobW9kKCkgZG9lc24ndCB3b3JrLCBmY2htb2RhdCgpJ3MKKyAgICAjIGZsYWcgZG9lc24ndCB3b3JrICplaXRoZXIqLiAgU2FkbHkgLi9jb25maWd1cmUgaXNuJ3Qgc29waGlzdGljYXRlZAorICAgICMgZW5vdWdoIHRvIGRldGVjdCB0aGlzIGNvbmRpdGlvbi0taXQgb25seSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90CisgICAgIyBmY2htb2RhdCgpIG1pbmltYWxseSB3b3Jrcy4KKyAgICAjCisgICAgIyBUaGVyZWZvcmUgd2Ugc2ltcGx5IGlnbm9yZSBmY2htb2RhdCgpIHdoZW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QKKyAgICAjIG9zLmNobW9kIHN1cHBvcnRzIGZvbGxvd19zeW1saW5rcy4gIEp1c3QgY2hlY2tpbmcgbGNobW9kKCkgaXMKKyAgICAjIHN1ZmZpY2llbnQuICBBZnRlciBhbGwtLWlmIHlvdSBoYXZlIGEgd29ya2luZyBmY2htb2RhdCgpLCB5b3VyCisgICAgIyBsY2htb2QoKSBhbG1vc3QgY2VydGFpbmx5IHdvcmtzIHRvby4KKyAgICAjCisgICAgIyBfYWRkKCJIQVZFX0ZDSE1PREFUIiwgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfTENIRkxBR1MiLCAgICJjaGZsYWdzIikKKyAgICBfYWRkKCJIQVZFX0xDSE1PRCIsICAgICAiY2htb2QiKQorICAgIGlmIF9leGlzdHMoImxjaG93biIpOiAjIG1hYyBvcyB4MTAuMworICAgICAgICBfYWRkKCJIQVZFX0xDSE9XTiIsICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQorICAgIF9hZGQoIkhBVkVfTFVUSU1FUyIsICAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9MU1RBVCIsICAgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQorICAgIF9hZGQoIk1TX1dJTkRPV1MiLCAgICAgICJzdGF0IikKKyAgICBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MgPSBfc2V0CisKKyAgICBkZWwgX3NldAorICAgIGRlbCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBkZWwgX2dsb2JhbHMKKyAgICBkZWwgX2FkZAorCisKICMgUHl0aG9uIHVzZXMgZml4ZWQgdmFsdWVzIGZvciB0aGUgU0VFS18gY29uc3RhbnRzOyB0aGV5IGFyZSBtYXBwZWQKICMgdG8gbmF0aXZlIGNvbnN0YW50cyBpZiBuZWNlc3NhcnkgaW4gcG9zaXhtb2R1bGUuYworIyBPdGhlciBwb3NzaWJsZSBTRUVLIHZhbHVlcyBhcmUgZGlyZWN0bHkgaW1wb3J0ZWQgZnJvbSBwb3NpeG1vZHVsZS5jCiBTRUVLX1NFVCA9IDAKIFNFRUtfQ1VSID0gMQogU0VFS19FTkQgPSAyCkBAIC0xMjAsOCArMjM2LDYgQEAKICAgICB1bWFzayhtYXNrKQogICAgIHJldHVybiBtb2RlICYgfm1hc2sKIAotIycKLQogIyBTdXBlciBkaXJlY3RvcnkgdXRpbGl0aWVzLgogIyAoSW5zcGlyZWQgYnkgRXJpYyBSYXltb25kOyB0aGUgZG9jIHN0cmluZ3MgYXJlIG1vc3RseSBoaXMpCiAKQEAgLTE1NCw3ICsyNjgsNiBAQAogICAgIHRyeToKICAgICAgICAgbWtkaXIobmFtZSwgbW9kZSkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpbXBvcnQgc3RhdCBhcyBzdAogICAgICAgICBkaXJfZXhpc3RzID0gcGF0aC5pc2RpcihuYW1lKQogICAgICAgICBleHBlY3RlZF9tb2RlID0gX2dldF9tYXNrZWRfbW9kZShtb2RlKQogICAgICAgICBpZiBkaXJfZXhpc3RzOgpAQCAtMTY2LDYgKzI3OSw5IEBACiAgICAgICAgICAgICBhY3R1YWxfbW9kZSA9IC0xCiAgICAgICAgIGlmIG5vdCAoZS5lcnJubyA9PSBlcnJuby5FRVhJU1QgYW5kIGV4aXN0X29rIGFuZCBkaXJfZXhpc3RzIGFuZAogICAgICAgICAgICAgICAgIGFjdHVhbF9tb2RlID09IGV4cGVjdGVkX21vZGUpOgorICAgICAgICAgICAgaWYgZGlyX2V4aXN0cyBhbmQgYWN0dWFsX21vZGUgIT0gZXhwZWN0ZWRfbW9kZToKKyAgICAgICAgICAgICAgICBlLnN0cmVycm9yICs9ICcgKG1vZGUgJW8gIT0gZXhwZWN0ZWQgbW9kZSAlbyknICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX21vZGUsIGV4cGVjdGVkX21vZGUpCiAgICAgICAgICAgICByYWlzZQogCiBkZWYgcmVtb3ZlZGlycyhuYW1lKToKQEAgLTMwMywxMyArNDE5LDEwNyBAQAogICAgIGZvciBuYW1lIGluIGRpcnM6CiAgICAgICAgIG5ld19wYXRoID0gam9pbih0b3AsIG5hbWUpCiAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgotICAgICAgICAgICAgZm9yIHggaW4gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpOgotICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgaWYgbm90IHRvcGRvd246CiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKK2lmIHtvcGVuLCBzdGF0fSA8PSBzdXBwb3J0c19kaXJfZmQgYW5kIHtsaXN0ZGlyLCBzdGF0fSA8PSBzdXBwb3J0c19mZDoKKworICAgIGRlZiBmd2Fsayh0b3A9Ii4iLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSk6CisgICAgICAgICIiIkRpcmVjdG9yeSB0cmVlIGdlbmVyYXRvci4KKworICAgICAgICBUaGlzIGJlaGF2ZXMgZXhhY3RseSBsaWtlIHdhbGsoKSwgZXhjZXB0IHRoYXQgaXQgeWllbGRzIGEgNC10dXBsZQorCisgICAgICAgICAgICBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzLCBkaXJmZAorCisgICAgICAgIGBkaXJwYXRoYCwgYGRpcm5hbWVzYCBhbmQgYGZpbGVuYW1lc2AgYXJlIGlkZW50aWNhbCB0byB3YWxrKCkgb3V0cHV0LAorICAgICAgICBhbmQgYGRpcmZkYCBpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gdGhlIGRpcmVjdG9yeSBgZGlycGF0aGAuCisKKyAgICAgICAgVGhlIGFkdmFudGFnZSBvZiBmd2FsaygpIG92ZXIgd2FsaygpIGlzIHRoYXQgaXQncyBzYWZlIGFnYWluc3Qgc3ltbGluaworICAgICAgICByYWNlcyAod2hlbiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UpLgorCisgICAgICAgIElmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgICAgICAgICAgYW5kIHRvcCBzaG91bGQgYmUgcmVsYXRpdmU7IHRvcCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCisgICAgICAgICAgKGRpcl9mZCBpcyBhbHdheXMgc3VwcG9ydGVkIGZvciBmd2Fsay4pCisKKyAgICAgICAgQ2F1dGlvbjoKKyAgICAgICAgU2luY2UgZndhbGsoKSB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycywgdGhvc2UgYXJlIG9ubHkgdmFsaWQgdW50aWwgdGhlCisgICAgICAgIG5leHQgaXRlcmF0aW9uIHN0ZXAsIHNvIHlvdSBzaG91bGQgZHVwKCkgdGhlbSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0KKyAgICAgICAgZm9yIGEgbG9uZ2VyIHBlcmlvZC4KKworICAgICAgICBFeGFtcGxlOgorCisgICAgICAgIGltcG9ydCBvcworICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgorICAgICAgICAgICAgcHJpbnQocm9vdCwgImNvbnN1bWVzIiwgZW5kPSIiKQorICAgICAgICAgICAgcHJpbnQoc3VtKFtvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQpLnN0X3NpemUgZm9yIG5hbWUgaW4gZmlsZXNdKSwKKyAgICAgICAgICAgICAgICAgIGVuZD0iIikKKyAgICAgICAgICAgIHByaW50KCJieXRlcyBpbiIsIGxlbihmaWxlcyksICJub24tZGlyZWN0b3J5IGZpbGVzIikKKyAgICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcworICAgICAgICAiIiIKKyAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKKyAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgorICAgICAgICBvcmlnX3N0ID0gc3RhdCh0b3AsIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWRpcl9mZCkKKyAgICAgICAgdG9wZmQgPSBvcGVuKHRvcCwgT19SRE9OTFksIGRpcl9mZD1kaXJfZmQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3Mgb3IgKHN0LlNfSVNESVIob3JpZ19zdC5zdF9tb2RlKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguc2FtZXN0YXQob3JpZ19zdCwgc3RhdCh0b3BmZCkpKSk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfZndhbGsodG9wZmQsIHRvcCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY2xvc2UodG9wZmQpCisKKyAgICBkZWYgX2Z3YWxrKHRvcGZkLCB0b3BwYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAjIE5vdGU6IFRoaXMgdXNlcyBPKGRlcHRoIG9mIHRoZSBkaXJlY3RvcnkgdHJlZSkgZmlsZSBkZXNjcmlwdG9yczogaWYKKyAgICAgICAgIyBuZWNlc3NhcnksIGl0IGNhbiBiZSBhZGFwdGVkIHRvIG9ubHkgcmVxdWlyZSBPKDEpIEZEcywgc2VlIGlzc3VlCisgICAgICAgICMgIzEzNzM0LgorCisgICAgICAgIG5hbWVzID0gbGlzdGRpcih0b3BmZCkKKyAgICAgICAgZGlycywgbm9uZGlycyA9IFtdLCBbXQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIEhlcmUsIHdlIGRvbid0IHVzZSBBVF9TWU1MSU5LX05PRk9MTE9XIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAorICAgICAgICAgICAgICAgICMgd2FsaygpIHdoaWNoIHJlcG9ydHMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXMgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgIyBXZSBkbyBob3dldmVyIGNoZWNrIGZvciBzeW1saW5rcyBiZWZvcmUgcmVjdXJzaW5nIGludG8KKyAgICAgICAgICAgICAgICAjIGEgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIGlmIHN0LlNfSVNESVIoc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQpLnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIEFkZCBkYW5nbGluZyBzeW1saW5rcywgaWdub3JlIGRpc2FwcGVhcmVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGlmIHN0LlNfSVNMTksoc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgdG9wZG93bjoKKyAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCisKKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcmlnX3N0ID0gc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICAgICAgZGlyZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZLCBkaXJfZmQ9dG9wZmQpCisgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGZvbGxvd19zeW1saW5rcyBvciBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQoZGlyZmQpKToKKyAgICAgICAgICAgICAgICAgICAgZGlycGF0aCA9IHBhdGguam9pbih0b3BwYXRoLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF9md2FsayhkaXJmZCwgZGlycGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbG9zZShkaXJmZCkKKworICAgICAgICBpZiBub3QgdG9wZG93bjoKKyAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCisKKyAgICBfX2FsbF9fLmFwcGVuZCgiZndhbGsiKQorCiAjIE1ha2Ugc3VyZSBvcy5lbnZpcm9uIGV4aXN0cywgYXQgbGVhc3QKIHRyeToKICAgICBlbnZpcm9uCkBAIC00NDYsNyArNjU2LDcgQEAKIAogCiAjIENoYW5nZSBlbnZpcm9uIHRvIGF1dG9tYXRpY2FsbHkgY2FsbCBwdXRlbnYoKSwgdW5zZXRlbnYgaWYgdGhleSBleGlzdC4KLWZyb20gX2FiY29sbCBpbXBvcnQgTXV0YWJsZU1hcHBpbmcgICMgQ2FuJ3QgdXNlIGNvbGxlY3Rpb25zIChib290c3RyYXApCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKIAogY2xhc3MgX0Vudmlyb24oTXV0YWJsZU1hcHBpbmcpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhLCBlbmNvZGVrZXksIGRlY29kZWtleSwgZW5jb2RldmFsdWUsIGRlY29kZXZhbHVlLCBwdXRlbnYsIHVuc2V0ZW52KToKQEAgLTYxMCwxNSArODIwLDE0IEBACiBmc2VuY29kZSwgZnNkZWNvZGUgPSBfZnNjb2RlYygpCiBkZWwgX2ZzY29kZWMKIAotZGVmIF9leGlzdHMobmFtZSk6Ci0gICAgcmV0dXJuIG5hbWUgaW4gZ2xvYmFscygpCi0KICMgU3VwcGx5IHNwYXduKigpIChwcm9iYWJseSBvbmx5IGZvciBVbml4KQogaWYgX2V4aXN0cygiZm9yayIpIGFuZCBub3QgX2V4aXN0cygic3Bhd252IikgYW5kIF9leGlzdHMoImV4ZWN2Iik6CiAKICAgICBQX1dBSVQgPSAwCiAgICAgUF9OT1dBSVQgPSBQX05PV0FJVE8gPSAxCiAKKyAgICBfX2FsbF9fLmV4dGVuZChbIlBfV0FJVCIsICJQX05PV0FJVCIsICJQX05PV0FJVE8iXSkKKwogICAgICMgWFhYIFNob3VsZCB3ZSBzdXBwb3J0IFBfREVUQUNIPyAgSSBzdXBwb3NlIGl0IGNvdWxkIGZvcmsoKSoqMgogICAgICMgYW5kIGNsb3NlIHRoZSBzdGQgSS9PIHN0cmVhbXMuICBBbHNvLCBQX09WRVJMQVkgaXMgdGhlIHNhbWUKICAgICAjIGFzIGV4ZWN2KigpPwpAQCAtNzc5LDcgKzk4OCw3IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBjbWQgdHlwZSAoJXMsIGV4cGVjdGVkIHN0cmluZykiICUgdHlwZShjbWQpKQogICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZSAlciIgJSBtb2RlKQotICAgIGlmIGJ1ZmZlcmluZyA9PSAwIG9yIGJ1ZmZlcmluZyA9PSBOb25lOgorICAgIGlmIGJ1ZmZlcmluZyA9PSAwIG9yIGJ1ZmZlcmluZyBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwb3BlbigpIGRvZXMgbm90IHN1cHBvcnQgdW5idWZmZXJlZCBzdHJlYW1zIikKICAgICBpbXBvcnQgc3VicHJvY2VzcywgaW8KICAgICBpZiBtb2RlID09ICJyIjoKZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDhjN2MxMmIuLmU2ZDdmOGYgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNzMsNiArNzMsNyBAQAogaW1wb3J0IGJkYgogaW1wb3J0IGRpcwogaW1wb3J0IGNvZGUKK2ltcG9ydCBnbG9iCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgaW5zcGVjdApAQCAtMTU1LDYgKzE1Niw4IEBACiAgICAgICAgICMgVHJ5IHRvIGxvYWQgcmVhZGxpbmUgaWYgaXQgZXhpc3RzCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQorICAgICAgICAgICAgIyByZW1vdmUgc29tZSBjb21tb24gZmlsZSBuYW1lIGRlbGltaXRlcnMKKyAgICAgICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCcgXHRcbmBAIyQlXiYqKCk9K1t7XX1cXHw7OlwnIiw8Pj8nKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYWxsb3dfa2JkaW50ID0gRmFsc2UKQEAgLTQ0NSw2ICs0NDgsNjEgQEAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnKToKICAgICAgICAgcHJpbnQoJyoqKicsIG1zZywgZmlsZT1zZWxmLnN0ZG91dCkKIAorICAgICMgR2VuZXJpYyBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIEluZGl2aWR1YWwgY29tcGxldGVfZm9vIG1ldGhvZHMgY2FuIGJlCisgICAgIyBhc3NpZ25lZCBiZWxvdyB0byBvbmUgb2YgdGhlc2UgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jb21wbGV0ZV9sb2NhdGlvbihzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgICMgQ29tcGxldGUgYSBmaWxlL21vZHVsZS9mdW5jdGlvbiBsb2NhdGlvbiBmb3IgYnJlYWsvdGJyZWFrL2NsZWFyLgorICAgICAgICBpZiBsaW5lLnN0cmlwKCkuZW5kc3dpdGgoKCc6JywgJywnKSk6CisgICAgICAgICAgICAjIEhlcmUgY29tZXMgYSBsaW5lIG51bWJlciBvciBhIGNvbmRpdGlvbiB3aGljaCB3ZSBjYW4ndCBjb21wbGV0ZS4KKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAjIEZpcnN0LCB0cnkgdG8gZmluZCBtYXRjaGluZyBmdW5jdGlvbnMgKGkuZS4gZXhwcmVzc2lvbnMpLgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9jb21wbGV0ZV9leHByZXNzaW9uKHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcmV0ID0gW10KKyAgICAgICAgIyBUaGVuLCB0cnkgdG8gY29tcGxldGUgZmlsZSBuYW1lcyBhcyB3ZWxsLgorICAgICAgICBnbG9icyA9IGdsb2IuZ2xvYih0ZXh0ICsgJyonKQorICAgICAgICBmb3IgZm4gaW4gZ2xvYnM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZuKToKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuICsgJy8nKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShmbikgYW5kIGZuLmxvd2VyKCkuZW5kc3dpdGgoKCcucHknLCAnLnB5dycpKToKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuICsgJzonKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgX2NvbXBsZXRlX2JwbnVtYmVyKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhIGJyZWFrcG9pbnQgbnVtYmVyLiAgKFRoaXMgd291bGQgYmUgbW9yZSBoZWxwZnVsIGlmIHdlIGNvdWxkCisgICAgICAgICMgZGlzcGxheSBhZGRpdGlvbmFsIGluZm8gYWxvbmcgd2l0aCB0aGUgY29tcGxldGlvbnMsIHN1Y2ggYXMgZmlsZS9saW5lCisgICAgICAgICMgb2YgdGhlIGJyZWFrcG9pbnQuKQorICAgICAgICByZXR1cm4gW3N0cihpKSBmb3IgaSwgYnAgaW4gZW51bWVyYXRlKGJkYi5CcmVha3BvaW50LmJwYnludW1iZXIpCisgICAgICAgICAgICAgICAgaWYgYnAgaXMgbm90IE5vbmUgYW5kIHN0cihpKS5zdGFydHN3aXRoKHRleHQpXQorCisgICAgZGVmIF9jb21wbGV0ZV9leHByZXNzaW9uKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbi4KKyAgICAgICAgaWYgbm90IHNlbGYuY3VyZnJhbWU6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgIyBDb2xsZWN0IGdsb2JhbHMgYW5kIGxvY2Fscy4gIEl0IGlzIHVzdWFsbHkgbm90IHJlYWxseSBzZW5zaWJsZSB0byBhbHNvCisgICAgICAgICMgY29tcGxldGUgYnVpbHRpbnMsIGFuZCB0aGV5IGNsdXR0ZXIgdGhlIG5hbWVzcGFjZSBxdWl0ZSBoZWF2aWx5LCBzbyB3ZQorICAgICAgICAjIGxlYXZlIHRoZW0gb3V0LgorICAgICAgICBucyA9IHNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzLmNvcHkoKQorICAgICAgICBucy51cGRhdGUoc2VsZi5jdXJmcmFtZV9sb2NhbHMpCisgICAgICAgIGlmICcuJyBpbiB0ZXh0OgorICAgICAgICAgICAgIyBXYWxrIGFuIGF0dHJpYnV0ZSBjaGFpbiB1cCB0byB0aGUgbGFzdCBwYXJ0LCBzaW1pbGFyIHRvIHdoYXQKKyAgICAgICAgICAgICMgcmxjb21wbGV0ZXIgZG9lcy4gIFRoaXMgd2lsbCBiYWlsIGlmIGFueSBvZiB0aGUgcGFydHMgYXJlIG5vdAorICAgICAgICAgICAgIyBzaW1wbGUgYXR0cmlidXRlIGFjY2Vzcywgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorICAgICAgICAgICAgZG90dGVkID0gdGV4dC5zcGxpdCgnLicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb2JqID0gbnNbZG90dGVkWzBdXQorICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIGRvdHRlZFsxOi0xXToKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIHBhcnQpCisgICAgICAgICAgICBleGNlcHQgKEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICAgICBwcmVmaXggPSAnLicuam9pbihkb3R0ZWRbOi0xXSkgKyAnLicKKyAgICAgICAgICAgIHJldHVybiBbcHJlZml4ICsgbiBmb3IgbiBpbiBkaXIob2JqKSBpZiBuLnN0YXJ0c3dpdGgoZG90dGVkWy0xXSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIENvbXBsZXRlIGEgc2ltcGxlIG5hbWUuCisgICAgICAgICAgICByZXR1cm4gW24gZm9yIG4gaW4gbnMua2V5cygpIGlmIG4uc3RhcnRzd2l0aCh0ZXh0KV0KKwogICAgICMgQ29tbWFuZCBkZWZpbml0aW9ucywgY2FsbGVkIGJ5IGNtZGxvb3AoKQogICAgICMgVGhlIGFyZ3VtZW50IGlzIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUKICAgICAjIFJldHVybiB0cnVlIHRvIGV4aXQgZnJvbSB0aGUgY29tbWFuZCBsb29wCkBAIC01MjYsNiArNTg0LDggQEAKICAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfZGVmaW5pbmcgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSBwcm9tcHRfYmFjawogCisgICAgY29tcGxldGVfY29tbWFuZHMgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19icmVhayhzZWxmLCBhcmcsIHRlbXBvcmFyeSA9IDApOgogICAgICAgICAiIiJiKHJlYWspIFsgKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl0gXQogICAgICAgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MuCkBAIC02MjgsNiArNjg4LDkgQEAKIAogICAgIGRvX2IgPSBkb19icmVhawogCisgICAgY29tcGxldGVfYnJlYWsgPSBfY29tcGxldGVfbG9jYXRpb24KKyAgICBjb21wbGV0ZV9iID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgZG9fdGJyZWFrKHNlbGYsIGFyZyk6CiAgICAgICAgICIiInRicmVhayBbIChbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dIF0KICAgICAgICAgU2FtZSBhcmd1bWVudHMgYXMgYnJlYWssIGJ1dCBzZXRzIGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQ6IGl0CkBAIC02MzUsNiArNjk4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZG9fYnJlYWsoYXJnLCAxKQogCisgICAgY29tcGxldGVfdGJyZWFrID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgbGluZWluZm8oc2VsZiwgaWRlbnRpZmllcik6CiAgICAgICAgIGZhaWxlZCA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgICAjIElucHV0IGlzIGlkZW50aWZpZXIsIG1heSBiZSBpbiBzaW5nbGUgcXVvdGVzCkBAIC03MDQsNiArNzY5LDggQEAKICAgICAgICAgICAgICAgICBicC5lbmFibGUoKQogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRW5hYmxlZCAlcycgJSBicCkKIAorICAgIGNvbXBsZXRlX2VuYWJsZSA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2Rpc2FibGUoc2VsZiwgYXJnKToKICAgICAgICAgIiIiZGlzYWJsZSBicG51bWJlciBbYnBudW1iZXIgLi4uXQogICAgICAgICBEaXNhYmxlcyB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZgpAQCAtNzIyLDYgKzc4OSw4IEBACiAgICAgICAgICAgICAgICAgYnAuZGlzYWJsZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdEaXNhYmxlZCAlcycgJSBicCkKIAorICAgIGNvbXBsZXRlX2Rpc2FibGUgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19jb25kaXRpb24oc2VsZiwgYXJnKToKICAgICAgICAgIiIiY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dCiAgICAgICAgIFNldCBhIG5ldyBjb25kaXRpb24gZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoCkBAIC03NDUsNiArODE0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdOZXcgY29uZGl0aW9uIHNldCBmb3IgYnJlYWtwb2ludCAlZC4nICUgYnAubnVtYmVyKQogCisgICAgY29tcGxldGVfY29uZGl0aW9uID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9faWdub3JlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiImlnbm9yZSBicG51bWJlciBbY291bnRdCiAgICAgICAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZgpAQCAtNzc2LDYgKzg0Nyw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdXaWxsIHN0b3AgbmV4dCB0aW1lIGJyZWFrcG9pbnQgJWQgaXMgcmVhY2hlZC4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYnAubnVtYmVyKQogCisgICAgY29tcGxldGVfaWdub3JlID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fY2xlYXIoc2VsZiwgYXJnKToKICAgICAgICAgIiIiY2woZWFyKSBmaWxlbmFtZTpsaW5lbm9cbmNsKGVhcikgW2JwbnVtYmVyIFticG51bWJlci4uLl1dCiAgICAgICAgIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyCkBAIC04MjQsNiArODk3LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0RlbGV0ZWQgJXMnICUgYnApCiAgICAgZG9fY2wgPSBkb19jbGVhciAjICdjJyBpcyBhbHJlYWR5IGFuIGFiYnJldmlhdGlvbiBmb3IgJ2NvbnRpbnVlJwogCisgICAgY29tcGxldGVfY2xlYXIgPSBfY29tcGxldGVfbG9jYXRpb24KKyAgICBjb21wbGV0ZV9jbCA9IF9jb21wbGV0ZV9sb2NhdGlvbgorCiAgICAgZGVmIGRvX3doZXJlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiIncoaGVyZSkKICAgICAgICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4KQEAgLTEwMTQsNiArMTA5MCw4IEBACiAgICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLnRyYWNlX2Rpc3BhdGNoKQogICAgICAgICBzZWxmLmxhc3RjbWQgPSBwLmxhc3RjbWQKIAorICAgIGNvbXBsZXRlX2RlYnVnID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb19xdWl0KHNlbGYsIGFyZyk6CiAgICAgICAgICIiInEodWl0KVxuZXhpdAogICAgICAgICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLgpAQCAtMTEwMCw2ICsxMTc4LDEwIEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHBhc3MKIAorICAgIGNvbXBsZXRlX3ByaW50ID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKyAgICBjb21wbGV0ZV9wID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKyAgICBjb21wbGV0ZV9wcCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fbGlzdChzZWxmLCBhcmcpOgogICAgICAgICAiIiJsKGlzdCkgW2ZpcnN0IFssbGFzdF0gfCAuXQogCkBAIC0xMTgwLDYgKzEyNjIsOCBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuX3ByaW50X2xpbmVzKGxpbmVzLCBsaW5lbm8pCiAKKyAgICBjb21wbGV0ZV9zb3VyY2UgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIF9wcmludF9saW5lcyhzZWxmLCBsaW5lcywgc3RhcnQsIGJyZWFrcz0oKSwgZnJhbWU9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IGEgcmFuZ2Ugb2YgbGluZXMuIiIiCiAgICAgICAgIGlmIGZyYW1lOgpAQCAtMTIzNCw2ICsxMzE4LDggQEAKICAgICAgICAgIyBOb25lIG9mIHRoZSBhYm92ZS4uLgogICAgICAgICBzZWxmLm1lc3NhZ2UodHlwZSh2YWx1ZSkpCiAKKyAgICBjb21wbGV0ZV93aGF0aXMgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX2Rpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAgIiIiZGlzcGxheSBbZXhwcmVzc2lvbl0KIApAQCAtMTI1MSw2ICsxMzM3LDggQEAKICAgICAgICAgICAgIHNlbGYuZGlzcGxheWluZy5zZXRkZWZhdWx0KHNlbGYuY3VyZnJhbWUsIHt9KVthcmddID0gdmFsCiAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ2Rpc3BsYXkgJXM6ICVyJyAlIChhcmcsIHZhbCkpCiAKKyAgICBjb21wbGV0ZV9kaXNwbGF5ID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb191bmRpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAgIiIidW5kaXNwbGF5IFtleHByZXNzaW9uXQogCkBAIC0xMjY2LDYgKzEzNTQsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZGlzcGxheWluZy5wb3Aoc2VsZi5jdXJmcmFtZSwgTm9uZSkKIAorICAgIGRlZiBjb21wbGV0ZV91bmRpc3BsYXkoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gc2VsZi5kaXNwbGF5aW5nLmdldChzZWxmLmN1cmZyYW1lLCB7fSkKKyAgICAgICAgICAgICAgICBpZiBlLnN0YXJ0c3dpdGgodGV4dCldCisKICAgICBkZWYgZG9faW50ZXJhY3Qoc2VsZiwgYXJnKToKICAgICAgICAgIiIiaW50ZXJhY3QKIApAQCAtMTMyMCw2ICsxNDEyLDkgQEAKICAgICAgICAgaWYgYXJnc1swXSBpbiBzZWxmLmFsaWFzZXM6CiAgICAgICAgICAgICBkZWwgc2VsZi5hbGlhc2VzW2FyZ3NbMF1dCiAKKyAgICBkZWYgY29tcGxldGVfdW5hbGlhcyhzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgIHJldHVybiBbYSBmb3IgYSBpbiBzZWxmLmFsaWFzZXMgaWYgYS5zdGFydHN3aXRoKHRleHQpXQorCiAgICAgIyBMaXN0IG9mIGFsbCB0aGUgY29tbWFuZHMgbWFraW5nIHRoZSBwcm9ncmFtIHJlc3VtZSBleGVjdXRpb24uCiAgICAgY29tbWFuZHNfcmVzdW1pbmcgPSBbJ2RvX2NvbnRpbnVlJywgJ2RvX3N0ZXAnLCAnZG9fbmV4dCcsICdkb19yZXR1cm4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICdkb19xdWl0JywgJ2RvX2p1bXAnXQpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggYTY5MGNjZC4uZTgxYTM3OSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yMyw4ICsyMyw2IEBACiAKICIiIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIiAgICAgICAjIENvZGUgdmVyc2lvbgotCiBmcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUsIEJ1aWx0aW5GdW5jdGlvblR5cGUKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKIGZyb20gY29weXJlZyBpbXBvcnQgX2V4dGVuc2lvbl9yZWdpc3RyeSwgX2ludmVydGVkX3JlZ2lzdHJ5LCBfZXh0ZW5zaW9uX2NhY2hlCkBAIC0yOTksOCArMjk3LDggQEAKICAgICAgICAgICAgIGYoc2VsZiwgb2JqKSAjIENhbGwgdW5ib3VuZCBtZXRob2Qgd2l0aCBleHBsaWNpdCBzZWxmCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIENoZWNrIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKLSAgICAgICAgcmVkdWNlID0gZGlzcGF0Y2hfdGFibGUuZ2V0KHQpCisgICAgICAgICMgQ2hlY2sgcHJpdmF0ZSBkaXNwYXRjaCB0YWJsZSBpZiBhbnksIG9yIGVsc2UgY29weXJlZy5kaXNwYXRjaF90YWJsZQorICAgICAgICByZWR1Y2UgPSBnZXRhdHRyKHNlbGYsICdkaXNwYXRjaF90YWJsZScsIGRpc3BhdGNoX3RhYmxlKS5nZXQodCkKICAgICAgICAgaWYgcmVkdWNlOgogICAgICAgICAgICAgcnYgPSByZWR1Y2Uob2JqKQogICAgICAgICBlbHNlOgpAQCAtMzc3LDcgKzM3NSw3IEBACiAgICAgICAgICAgICAjIGFsbG93aW5nIHByb3RvY29sIDAgYW5kIDEgdG8gd29yayBub3JtYWxseS4gIEZvciB0aGlzIHRvCiAgICAgICAgICAgICAjIHdvcmssIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBfX3JlZHVjZV9fIHNob3VsZCBiZQogICAgICAgICAgICAgIyBjYWxsZWQgX19uZXdvYmpfXywgYW5kIGl0cyBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgICAgICAgICAgIyBuZXctc3R5bGUgY2xhc3MuICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIF9fbmV3b2JqX18KKyAgICAgICAgICAgICMgY2xhc3MuICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIF9fbmV3b2JqX18KICAgICAgICAgICAgICMgc2hvdWxkIGJlIGFzIGZvbGxvd3MsIGFsdGhvdWdoIHBpY2tsZSBoYXMgbm8gd2F5IHRvCiAgICAgICAgICAgICAjIHZlcmlmeSB0aGlzOgogICAgICAgICAgICAgIwpAQCAtNDQwLDYgKzQzOCwxNCBAQAogICAgICAgICBzZWxmLndyaXRlKE5PTkUpCiAgICAgZGlzcGF0Y2hbdHlwZShOb25lKV0gPSBzYXZlX25vbmUKIAorICAgIGRlZiBzYXZlX2VsbGlwc2lzKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwoRWxsaXBzaXMsICdFbGxpcHNpcycpCisgICAgZGlzcGF0Y2hbdHlwZShFbGxpcHNpcyldID0gc2F2ZV9lbGxpcHNpcworCisgICAgZGVmIHNhdmVfbm90aW1wbGVtZW50ZWQoc2VsZiwgb2JqKToKKyAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChOb3RJbXBsZW1lbnRlZCwgJ05vdEltcGxlbWVudGVkJykKKyAgICBkaXNwYXRjaFt0eXBlKE5vdEltcGxlbWVudGVkKV0gPSBzYXZlX25vdGltcGxlbWVudGVkCisKICAgICBkZWYgc2F2ZV9ib29sKHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gMjoKICAgICAgICAgICAgIHNlbGYud3JpdGUob2JqIGFuZCBORVdUUlVFIG9yIE5FV0ZBTFNFKQpAQCAtMTM0NSw3ICsxMzUxLDcgQEAKICAgICByZXR1cm4gZG9jdGVzdC50ZXN0bW9kKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzLCBhcmdwYXJzZQorICAgIGltcG9ydCBhcmdwYXJzZQogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAogICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBjb250ZW50cyBvZiB0aGUgcGlja2xlIGZpbGVzJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IGVjNmNjNTMuLjY2ZjRlZGQgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTUxMCwxMCArNTEwLDcgQEAKICAgICBlbGlmIHMgPT0gYiIwMSI6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBpbnQocykKLSAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgcmV0dXJuIGludChzKQorICAgIHJldHVybiBpbnQocykKIAogZGVmIHJlYWRfZGVjaW1hbG5sX2xvbmcoZik6CiAgICAgciIiIgpAQCAtMTY0Miw2ICsxNjM5LDggQEAKICAgICAgIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCiAKICAgICAgIE5PVEU6ICBjaGVja3MgZm9yIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIHdlbnQgYXdheSBpbiBQeXRob24gMi4zLgorICAgICAgTk9URTogIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNsYXNzZXMgZG9lcworICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlIGluIFB5dGhvbiAzLgogICAgICAgIiIiKSwKIAogICAgIEkobmFtZT0nT0JKJywKZGlmZiAtLWdpdCBhL0xpYi9waXBlcy5weSBiL0xpYi9waXBlcy5weQppbmRleCA0Mjk3MDUzLi5mMWExNmY2IDEwMDY0NAotLS0gYS9MaWIvcGlwZXMucHkKKysrIGIvTGliL3BpcGVzLnB5CkBAIC02MCw3ICs2MCw5IEBACiBpbXBvcnQgcmUKIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc3RyaW5nCisjIHdlIGltcG9ydCB0aGUgcXVvdGUgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIG1vZHVsZSBmb3IgYmFja3dhcmQgY29tcGF0CisjIChxdW90ZSB1c2VkIHRvIGJlIGFuIHVuZG9jdW1lbnRlZCBidXQgdXNlZCBmdW5jdGlvbiBpbiBwaXBlcykKK2Zyb20gc2hsZXggaW1wb3J0IHF1b3RlCiAKIF9fYWxsX18gPSBbIlRlbXBsYXRlIl0KIApAQCAtMjQzLDIyICsyNDUsMyBAQAogICAgICAgICBjbWRsaXN0ID0gdHJhcGNtZCArICdcbicgKyBjbWRsaXN0ICsgJ1xuJyArIHJtY21kCiAgICAgIwogICAgIHJldHVybiBjbWRsaXN0Ci0KLQotIyBSZWxpYWJseSBxdW90ZSBhIHN0cmluZyBhcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgL2Jpbi9zaAotCi0jIFNhZmUgdW5xdW90ZWQKLV9zYWZlY2hhcnMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nKQotCi1kZWYgcXVvdGUoZmlsZSk6Ci0gICAgIiIiUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHN0cmluZy4iIiIKLSAgICBmb3IgYyBpbiBmaWxlOgotICAgICAgICBpZiBjIG5vdCBpbiBfc2FmZWNoYXJzOgotICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBpZiBub3QgZmlsZToKLSAgICAgICAgICAgIHJldHVybiAiJyciCi0gICAgICAgIHJldHVybiBmaWxlCi0gICAgIyB1c2Ugc2luZ2xlIHF1b3RlcywgYW5kIHB1dCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlcwotICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCi0gICAgcmV0dXJuICInIiArIGZpbGUucmVwbGFjZSgiJyIsICInXCInXCInIikgKyAiJyIKZGlmZiAtLWdpdCBhL0xpYi9wa2d1dGlsLnB5IGIvTGliL3BrZ3V0aWwucHkKaW5kZXggNTFkYTBiMS4uYTVkZTA0ZCAxMDA2NDQKLS0tIGEvTGliL3BrZ3V0aWwucHkKKysrIGIvTGliL3BrZ3V0aWwucHkKQEAgLTIsOCArMiwxMCBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXAKIGltcG9ydCBvcy5wYXRoCitmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiBmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCiAKIF9fYWxsX18gPSBbCkBAIC0yMSw3ICsyMyw3IEBACiAgICAgaWYgbWFnaWMgIT0gaW1wLmdldF9tYWdpYygpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgc3RyZWFtLnJlYWQoNCkgIyBTa2lwIHRpbWVzdGFtcAorICAgIHN0cmVhbS5yZWFkKDgpICMgU2tpcCB0aW1lc3RhbXAgYW5kIHNpemUKICAgICByZXR1cm4gbWFyc2hhbC5sb2FkKHN0cmVhbSkKIAogCkBAIC0xNTUsNiArMTU3LDQ5IEBACiAKIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyA9IHNpbXBsZWdlbmVyaWMoaXRlcl9pbXBvcnRlcl9tb2R1bGVzKQogCisjIEltcGxlbWVudCBhIGZpbGUgd2Fsa2VyIGZvciB0aGUgbm9ybWFsIGltcG9ydGxpYiBwYXRoIGhvb2sKK2RlZiBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKGltcG9ydGVyLCBwcmVmaXg9JycpOgorICAgIGlmIGltcG9ydGVyLnBhdGggaXMgTm9uZSBvciBub3Qgb3MucGF0aC5pc2RpcihpbXBvcnRlci5wYXRoKToKKyAgICAgICAgcmV0dXJuCisKKyAgICB5aWVsZGVkID0ge30KKyAgICBpbXBvcnQgaW5zcGVjdAorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWVzID0gb3MubGlzdGRpcihpbXBvcnRlci5wYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKKyAgICAgICAgZmlsZW5hbWVzID0gW10KKyAgICBmaWxlbmFtZXMuc29ydCgpICAjIGhhbmRsZSBwYWNrYWdlcyBiZWZvcmUgc2FtZS1uYW1lZCBtb2R1bGVzCisKKyAgICBmb3IgZm4gaW4gZmlsZW5hbWVzOgorICAgICAgICBtb2RuYW1lID0gaW5zcGVjdC5nZXRtb2R1bGVuYW1lKGZuKQorICAgICAgICBpZiBtb2RuYW1lPT0nX19pbml0X18nIG9yIG1vZG5hbWUgaW4geWllbGRlZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihpbXBvcnRlci5wYXRoLCBmbikKKyAgICAgICAgaXNwa2cgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBtb2RuYW1lIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpIGFuZCAnLicgbm90IGluIGZuOgorICAgICAgICAgICAgbW9kbmFtZSA9IGZuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBvcy5saXN0ZGlyKHBhdGgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKKyAgICAgICAgICAgICAgICBkaXJjb250ZW50cyA9IFtdCisgICAgICAgICAgICBmb3IgZm4gaW4gZGlyY29udGVudHM6CisgICAgICAgICAgICAgICAgc3VibmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKKyAgICAgICAgICAgICAgICBpZiBzdWJuYW1lPT0nX19pbml0X18nOgorICAgICAgICAgICAgICAgICAgICBpc3BrZyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUgICAgIyBub3QgYSBwYWNrYWdlCisKKyAgICAgICAgaWYgbW9kbmFtZSBhbmQgJy4nIG5vdCBpbiBtb2RuYW1lOgorICAgICAgICAgICAgeWllbGRlZFttb2RuYW1lXSA9IDEKKyAgICAgICAgICAgIHlpZWxkIHByZWZpeCArIG1vZG5hbWUsIGlzcGtnCisKK2l0ZXJfaW1wb3J0ZXJfbW9kdWxlcy5yZWdpc3RlcigKKyAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIsIF9pdGVyX2ZpbGVfZmluZGVyX21vZHVsZXMpCiAKIGNsYXNzIEltcEltcG9ydGVyOgogICAgICIiIlBFUCAzMDIgSW1wb3J0ZXIgdGhhdCB3cmFwcyBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IGFsZ29yaXRobQpAQCAtMTY4LDYgKzIxMyw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD1Ob25lKToKKyAgICAgICAgd2FybigiVGhpcyBlbXVsYXRpb24gaXMgZGVwcmVjYXRlZCwgdXNlICdpbXBvcnRsaWInIGluc3RlYWQiLAorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgpAQCAtMjMyLDYgKzI3OSw4IEBACiAgICAgY29kZSA9IHNvdXJjZSA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0Yyk6CisgICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYuZnVsbG5hbWUgPSBmdWxsbmFtZQpAQCAtMjU2LDcgKzMwNSw3IEBACiAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgc2VsZi5maWxlLmNsb3NlZDoKICAgICAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KICAgICAgICAgICAgIGlmIG1vZF90eXBlPT1pbXAuUFlfU09VUkNFOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JVJykKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyJykKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGUgaW4gKGltcC5QWV9DT01QSUxFRCwgaW1wLkNfRVhURU5TSU9OKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpCiAKQEAgLTMwMSw3ICszNTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBtb2RfdHlwZT09aW1wLlBZX0NPTVBJTEVEOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZmlsZW5hbWVbOi0xXSk6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWVbOi0xXSwgJ3JVJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5maWxlbmFtZVs6LTFdLCAncicpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZi5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUEtHX0RJUkVDVE9SWToKQEAgLTMxNSw5ICszNjQsOSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWU9Tm9uZSk6CiAgICAgICAgIGZ1bGxuYW1lID0gc2VsZi5fZml4X25hbWUoZnVsbG5hbWUpCiAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KLSAgICAgICAgaWYgc2VsZi5ldGNbMl09PWltcC5QS0dfRElSRUNUT1JZOgorICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBLR19ESVJFQ1RPUlk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2RlbGVnYXRlKCkuZ2V0X2ZpbGVuYW1lKCkKLSAgICAgICAgZWxpZiBzZWxmLmV0Y1syXSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgorICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNjYsMTAgKzQxNSw2IEBACiAgICAgVGhlIHJldHVybmVkIGltcG9ydGVyIGlzIGNhY2hlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQogICAgIGlmIGl0IHdhcyBuZXdseSBjcmVhdGVkIGJ5IGEgcGF0aCBob29rLgogCi0gICAgSWYgdGhlcmUgaXMgbm8gaW1wb3J0ZXIsIGEgd3JhcHBlciBhcm91bmQgdGhlIGJhc2ljIGltcG9ydAotICAgIG1hY2hpbmVyeSBpcyByZXR1cm5lZC4gVGhpcyB3cmFwcGVyIGlzIG5ldmVyIGluc2VydGVkIGludG8KLSAgICB0aGUgaW1wb3J0ZXIgY2FjaGUgKE5vbmUgaXMgaW5zZXJ0ZWQgaW5zdGVhZCkuCi0KICAgICBUaGUgY2FjaGUgKG9yIHBhcnQgb2YgaXQpIGNhbiBiZSBjbGVhcmVkIG1hbnVhbGx5IGlmIGEKICAgICByZXNjYW4gb2Ygc3lzLnBhdGhfaG9va3MgaXMgbmVjZXNzYXJ5LgogICAgICIiIgpAQCAtMzc5LDE4ICs0MjQsMTIgQEAKICAgICAgICAgZm9yIHBhdGhfaG9vayBpbiBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpbXBvcnRlciA9IHBhdGhfaG9vayhwYXRoX2l0ZW0pCisgICAgICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuc2V0ZGVmYXVsdChwYXRoX2l0ZW0sIGltcG9ydGVyKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaW1wb3J0ZXIgPSBOb25lCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnNldGRlZmF1bHQocGF0aF9pdGVtLCBpbXBvcnRlcikKLQotICAgIGlmIGltcG9ydGVyIGlzIE5vbmU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydGVyID0gSW1wSW1wb3J0ZXIocGF0aF9pdGVtKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBvcnRlciA9IE5vbmUKICAgICByZXR1cm4gaW1wb3J0ZXIKIAogCkBAIC0zOTgsNTUgKzQzNywzNyBAQAogICAgICIiIllpZWxkIFBFUCAzMDIgaW1wb3J0ZXJzIGZvciB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUKIAogICAgIElmIGZ1bGxuYW1lIGNvbnRhaW5zIGEgJy4nLCB0aGUgaW1wb3J0ZXJzIHdpbGwgYmUgZm9yIHRoZSBwYWNrYWdlCi0gICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBpbXBvcnRlcnMgZm9yIHN5cy5tZXRhX3BhdGgsCi0gICAgc3lzLnBhdGgsIGFuZCBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IG1hY2hpbmVyeSwgaW4gdGhhdCBvcmRlci4gIElmCi0gICAgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUKKyAgICBjb250YWluaW5nIGZ1bGxuYW1lLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbCByZWdpc3RlcmVkIHRvcCBsZXZlbAorICAgIGltcG9ydGVycyAoaS5lLiB0aG9zZSBvbiBib3RoIHN5cy5tZXRhX3BhdGggYW5kIHN5cy5wYXRoX2hvb2tzKS4KKworICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCiAgICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCiAKLSAgICBOb24gUEVQIDMwMiBtZWNoYW5pc21zIChlLmcuIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5KSB1c2VkIGJ5IHRoZQotICAgIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkgdG8gZmluZCBmaWxlcyBpbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbnMKLSAgICBhcmUgcGFydGlhbGx5IHN1cHBvcnRlZCwgYnV0IGFyZSBzZWFyY2hlZCBBRlRFUiBzeXMucGF0aC4gTm9ybWFsbHksCi0gICAgdGhlc2UgbG9jYXRpb25zIGFyZSBzZWFyY2hlZCBCRUZPUkUgc3lzLnBhdGgsIHByZXZlbnRpbmcgc3lzLnBhdGgKLSAgICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCi0KLSAgICBGb3IgdGhpcyB0byBjYXVzZSBhIHZpc2libGUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvdXIsIHRoZXJlIG11c3QKLSAgICBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBib3RoIHN5cy5wYXRoCi0gICAgYW5kIG9uZSBvZiB0aGUgbm9uIFBFUCAzMDIgZmlsZSBzeXN0ZW0gbWVjaGFuaXNtcy4gSW4gdGhpcyBjYXNlLAotICAgIHRoZSBlbXVsYXRpb24gd2lsbCBmaW5kIHRoZSBmb3JtZXIgdmVyc2lvbiwgd2hpbGUgdGhlIGJ1aWx0aW4KLSAgICBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgotCi0gICAgSXRlbXMgb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBjYW4gYmUgYWZmZWN0ZWQgYnkgdGhpcyBkaXNjcmVwYW5jeToKLSAgICAgICAgaW1wLkNfRVhURU5TSU9OLCBpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5QS0dfRElSRUNUT1JZCisgICAgSWYgbm8gbW9kdWxlIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGwgdG9wIGxldmVsIGltcG9ydGVycyBhcmUgcHJvZHVjZWQuCiAgICAgIiIiCiAgICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiUmVsYXRpdmUgbW9kdWxlIG5hbWVzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICBtc2cgPSAiUmVsYXRpdmUgbW9kdWxlIG5hbWUgeyFyfSBub3Qgc3VwcG9ydGVkIi5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZykKICAgICBpZiAnLicgaW4gZnVsbG5hbWU6CiAgICAgICAgICMgR2V0IHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXwotICAgICAgICBwa2cgPSAnLicuam9pbihmdWxsbmFtZS5zcGxpdCgnLicpWzotMV0pCi0gICAgICAgIGlmIHBrZyBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICBfX2ltcG9ydF9fKHBrZykKLSAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGtnXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KKyAgICAgICAgcGtnID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnKQorICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1twa2ddLCAnX19wYXRoX18nLCBOb25lKQorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KICAgICBlbHNlOgogICAgICAgICBmb3IgaW1wb3J0ZXIgaW4gc3lzLm1ldGFfcGF0aDoKICAgICAgICAgICAgIHlpZWxkIGltcG9ydGVyCiAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgIGZvciBpdGVtIGluIHBhdGg6CiAgICAgICAgIHlpZWxkIGdldF9pbXBvcnRlcihpdGVtKQotICAgIGlmICcuJyBub3QgaW4gZnVsbG5hbWU6Ci0gICAgICAgIHlpZWxkIEltcEltcG9ydGVyKCkKIAogZGVmIGdldF9sb2FkZXIobW9kdWxlX29yX25hbWUpOgogICAgICIiIkdldCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBtb2R1bGVfb3JfbmFtZQogCi0gICAgSWYgdGhlIG1vZHVsZSBvciBwYWNrYWdlIGlzIGFjY2Vzc2libGUgdmlhIHRoZSBub3JtYWwgaW1wb3J0Ci0gICAgbWVjaGFuaXNtLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSByZWxldmFudCBwYXJ0IG9mIHRoYXQgbWFjaGluZXJ5Ci0gICAgaXMgcmV0dXJuZWQuICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCisgICAgUmV0dXJucyBOb25lIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgogICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGFscmVhZHkgaW1wb3J0ZWQsIGl0cyBjb250YWluaW5nIHBhY2thZ2UKICAgICAoaWYgYW55KSBpcyBpbXBvcnRlZCwgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIHRoZSBwYWNrYWdlIF9fcGF0aF9fLgotCi0gICAgVGhpcyBmdW5jdGlvbiB1c2VzIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUKLSAgICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2gKLSAgICBhcyB0aGUgV2luZG93cyByZWdpc3RyeS4KICAgICAiIiIKICAgICBpZiBtb2R1bGVfb3JfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgbW9kdWxlX29yX25hbWUgPSBzeXMubW9kdWxlc1ttb2R1bGVfb3JfbmFtZV0KQEAgLTQ2MCwyMCArNDgxLDMzIEBACiAgICAgICAgIGZ1bGxuYW1lID0gbW9kdWxlX29yX25hbWUKICAgICByZXR1cm4gZmluZF9sb2FkZXIoZnVsbG5hbWUpCiAKKwogZGVmIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKToKICAgICAiIiJGaW5kIGEgUEVQIDMwMiAibG9hZGVyIiBvYmplY3QgZm9yIGZ1bGxuYW1lCiAKLSAgICBJZiBmdWxsbmFtZSBjb250YWlucyBkb3RzLCBwYXRoIG11c3QgYmUgdGhlIGNvbnRhaW5pbmcgcGFja2FnZSdzIF9fcGF0aF9fLgotICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4gVGhpcyBmdW5jdGlvbiB1c2VzCi0gICAgaXRlcl9pbXBvcnRlcnMoKSwgYW5kIGlzIHRodXMgc3ViamVjdCB0byB0aGUgc2FtZSBsaW1pdGF0aW9ucyByZWdhcmRpbmcKLSAgICBwbGF0Zm9ybS1zcGVjaWZpYyBzcGVjaWFsIGltcG9ydCBsb2NhdGlvbnMgc3VjaCBhcyB0aGUgV2luZG93cyByZWdpc3RyeS4KKyAgICBUaGlzIGlzIHMgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgdGhhdAorICAgIHNldHMgdGhlICpwYXRoKiBhcmd1bWVudCBjb3JyZWN0bHkgd2hlbiBzZWFyY2hpbmcgZm9yIHN1Ym1vZHVsZXMsIGFuZAorICAgIGFsc28gZW5zdXJlcyBwYXJlbnQgcGFja2FnZXMgKGlmIGFueSkgYXJlIGltcG9ydGVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yCisgICAgc3VibW9kdWxlcy4KICAgICAiIiIKLSAgICBmb3IgaW1wb3J0ZXIgaW4gaXRlcl9pbXBvcnRlcnMoZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKLSAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgotCi0gICAgcmV0dXJuIE5vbmUKKyAgICBpZiBmdWxsbmFtZS5zdGFydHN3aXRoKCcuJyk6CisgICAgICAgIG1zZyA9ICJSZWxhdGl2ZSBtb2R1bGUgbmFtZSB7IXJ9IG5vdCBzdXBwb3J0ZWQiLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQorICAgIHBhdGggPSBOb25lCisgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KKyAgICBpZiBwa2dfbmFtZToKKyAgICAgICAgcGtnID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgIHBhdGggPSBnZXRhdHRyKHBrZywgIl9fcGF0aF9fIiwgTm9uZSkKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbXBvcnRsaWIuZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IsIFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXg6CisgICAgICAgICMgVGhpcyBoYWNrIGZpeGVzIGFuIGltcGVkYW5jZSBtaXNtYXRjaCBiZXR3ZWVuIHBrZ3V0aWwgYW5kCisgICAgICAgICMgaW1wb3J0bGliLCB3aGVyZSB0aGUgbGF0dGVyIHJhaXNlcyBvdGhlciBlcnJvcnMgZm9yIGNhc2VzIHdoZXJlCisgICAgICAgICMgcGtndXRpbCBwcmV2aW91c2x5IHJhaXNlZCBJbXBvcnRFcnJvcgorICAgICAgICBtc2cgPSAiRXJyb3Igd2hpbGUgZmluZGluZyBsb2FkZXIgZm9yIHshcn0gKHt9OiB7fSkiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoZnVsbG5hbWUsIHR5cGUoZXgpLCBleCkpIGZyb20gZXgKIAogCiBkZWYgZXh0ZW5kX3BhdGgocGF0aCwgbmFtZSk6CkBAIC01MTQsMjEgKzU0OCw0MSBAQAogICAgICAgICAjIGZyb3plbiBwYWNrYWdlLiAgUmV0dXJuIHRoZSBwYXRoIHVuY2hhbmdlZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgIHJldHVybiBwYXRoCiAKLSAgICBwbmFtZSA9IG9zLnBhdGguam9pbigqbmFtZS5zcGxpdCgnLicpKSAjIFJlY29uc3RpdHV0ZSBhcyByZWxhdGl2ZSBwYXRoCiAgICAgc25hbWVfcGtnID0gbmFtZSArICIucGtnIgotICAgIGluaXRfcHkgPSAiX19pbml0X18ucHkiCiAKICAgICBwYXRoID0gcGF0aFs6XSAjIFN0YXJ0IHdpdGggYSBjb3B5IG9mIHRoZSBleGlzdGluZyBwYXRoCiAKLSAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkaXIsIHN0cikgb3Igbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICBwYXJlbnRfcGFja2FnZSwgXywgZmluYWxfbmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpCisgICAgaWYgcGFyZW50X3BhY2thZ2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlYXJjaF9wYXRoID0gc3lzLm1vZHVsZXNbcGFyZW50X3BhY2thZ2VdLl9fcGF0aF9fCisgICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICMgV2UgY2FuJ3QgZG8gYW55dGhpbmc6IGZpbmRfbG9hZGVyKCkgcmV0dXJucyBOb25lIHdoZW4KKyAgICAgICAgICAgICMgcGFzc2VkIGEgZG90dGVkIG5hbWUuCisgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgIGVsc2U6CisgICAgICAgIHNlYXJjaF9wYXRoID0gc3lzLnBhdGgKKworICAgIGZvciBkaXIgaW4gc2VhcmNoX3BhdGg6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRpciwgc3RyKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHN1YmRpciA9IG9zLnBhdGguam9pbihkaXIsIHBuYW1lKQotICAgICAgICAjIFhYWCBUaGlzIG1heSBzdGlsbCBhZGQgZHVwbGljYXRlIGVudHJpZXMgdG8gcGF0aCBvbgotICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMKLSAgICAgICAgaW5pdGZpbGUgPSBvcy5wYXRoLmpvaW4oc3ViZGlyLCBpbml0X3B5KQotICAgICAgICBpZiBzdWJkaXIgbm90IGluIHBhdGggYW5kIG9zLnBhdGguaXNmaWxlKGluaXRmaWxlKToKLSAgICAgICAgICAgIHBhdGguYXBwZW5kKHN1YmRpcikKKworICAgICAgICBmaW5kZXIgPSBnZXRfaW1wb3J0ZXIoZGlyKQorICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElzIHRoaXMgZmluZGVyIFBFUCA0MjAgY29tcGxpYW50PworICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgICAgIGxvYWRlciwgcG9ydGlvbnMgPSBmaW5kZXIuZmluZF9sb2FkZXIoZmluYWxfbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBObywgbm8gbmVlZCB0byBjYWxsIGl0CisgICAgICAgICAgICAgICAgbG9hZGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKworICAgICAgICAgICAgZm9yIHBvcnRpb24gaW4gcG9ydGlvbnM6CisgICAgICAgICAgICAgICAgIyBYWFggVGhpcyBtYXkgc3RpbGwgYWRkIGR1cGxpY2F0ZSBlbnRyaWVzIHRvIHBhdGggb24KKyAgICAgICAgICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMKKyAgICAgICAgICAgICAgICBpZiBwb3J0aW9uIG5vdCBpbiBwYXRoOgorICAgICAgICAgICAgICAgICAgICBwYXRoLmFwcGVuZChwb3J0aW9uKQorCiAgICAgICAgICMgWFhYIElzIHRoaXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBzdWJwYWNrYWdlcyBsaWtlIHpvcGUuYXBwPwogICAgICAgICAjIEl0IGxvb2tzIGZvciBhIGZpbGUgbmFtZWQgInpvcGUuYXBwLnBrZyIKICAgICAgICAgcGtnZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIHNuYW1lX3BrZykKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9DRFJPTS5weSBiL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvQ0RST00ucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL0RMRkNOLnB5CnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9ETEZDTi5weQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL0lOLnB5IGIvTGliL3BsYXQtbGludXgvSU4ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9JTi5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvSU4ucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9UWVBFUy5weSBiL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvVFlQRVMucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL3JlZ2VuCnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9yZWdlbgpkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDY4NmEwNDUuLjJiOGEyNGEgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTExMSw2ICsxMTEsNyBAQAogCiBfX3ZlcnNpb25fXyA9ICcxLjAuNycKIAoraW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgc3lzLCBvcywgcmUsIHN1YnByb2Nlc3MKIAogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKQEAgLTEzMCwxNSArMTMxLDE1IEBACiAKICMjIyBQbGF0Zm9ybSBzcGVjaWZpYyBBUElzCiAKLV9saWJjX3NlYXJjaCA9IHJlLmNvbXBpbGUocicoX19saWJjX2luaXQpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhHTElCQ18oWzAtOS5dKykpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCitfbGliY19zZWFyY2ggPSByZS5jb21waWxlKGInKF9fbGliY19pbml0KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYid8JworICAgICAgICAgICAgICAgICAgICAgICAgICBiJyhHTElCQ18oWzAtOS5dKykpJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3wnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCiAKIGRlZiBsaWJjX3ZlcihleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLGxpYj0nJyx2ZXJzaW9uPScnLAogCi0gICAgICAgICAgICAgY2h1bmtzaXplPTIwNDgpOgorICAgICAgICAgICAgIGNodW5rc2l6ZT0xNjM4NCk6CiAKICAgICAiIiIgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBsaWJjIHZlcnNpb24gdGhhdCB0aGUgZmlsZSBleGVjdXRhYmxlCiAgICAgICAgICh3aGljaCBkZWZhdWx0cyB0byB0aGUgUHl0aG9uIGludGVycHJldGVyKSBpcyBsaW5rZWQgYWdhaW5zdC4KQEAgLTE1OSwxNyArMTYwLDIyIEBACiAgICAgICAgICMgYWJsZSB0byBvcGVuIHN5bWxpbmtzIGZvciByZWFkaW5nCiAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLnJlYWxwYXRoKGV4ZWN1dGFibGUpCiAgICAgZiA9IG9wZW4oZXhlY3V0YWJsZSwncmInKQotICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpLmRlY29kZSgnbGF0aW4tMScpCisgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKICAgICBwb3MgPSAwCiAgICAgd2hpbGUgMToKLSAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgorICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG0gPSBOb25lCiAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkuZGVjb2RlKCdsYXRpbi0xJykKKyAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBwb3MgPSAwCiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCxnbGliYyxnbGliY3ZlcnNpb24sc28sdGhyZWFkcyxzb3ZlcnNpb24gPSBtLmdyb3VwcygpCisgICAgICAgIGxpYmNpbml0LGdsaWJjLGdsaWJjdmVyc2lvbixzbyx0aHJlYWRzLHNvdmVyc2lvbiA9IFsKKyAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KICAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6CiAgICAgICAgICAgICBsaWIgPSAnbGliYycKICAgICAgICAgZWxpZiBnbGliYzoKQEAgLTI1NSw3ICsyNjEsNyBAQAogX3N1cHBvcnRlZF9kaXN0cyA9ICgKICAgICAnU3VTRScsICdkZWJpYW4nLCAnZmVkb3JhJywgJ3JlZGhhdCcsICdjZW50b3MnLAogICAgICdtYW5kcmFrZScsICdtYW5kcml2YScsICdyb2NrcycsICdzbGFja3dhcmUnLCAneWVsbG93ZG9nJywgJ2dlbnRvbycsCi0gICAgJ1VuaXRlZExpbnV4JywgJ3R1cmJvbGludXgnKQorICAgICdVbml0ZWRMaW51eCcsICd0dXJib2xpbnV4JywgJ2FyY2gnLCAnbWFnZWlhJykKIAogZGVmIF9wYXJzZV9yZWxlYXNlX2ZpbGUoZmlyc3RsaW5lKToKIApAQCAtMzU3LDkyICszNjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1zdXBwb3J0ZWRfZGlzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTApCiAKLWNsYXNzIF9wb3BlbjoKLQotICAgICIiIiBGYWlybHkgcG9ydGFibGUgKGFsdGVybmF0aXZlKSBwb3BlbiBpbXBsZW1lbnRhdGlvbi4KLQotICAgICAgICBUaGlzIGlzIG1vc3RseSBuZWVkZWQgaW4gY2FzZSBvcy5wb3BlbigpIGlzIG5vdCBhdmFpbGFibGUsIG9yCi0gICAgICAgIGRvZXNuJ3Qgd29yayBhcyBhZHZlcnRpc2VkLCBlLmcuIGluIFdpbjlYIEdVSSBwcm9ncmFtcyBsaWtlCi0gICAgICAgIFB5dGhvbldpbiBvciBJRExFLgotCi0gICAgICAgIFdyaXRpbmcgdG8gdGhlIHBpcGUgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCi0KLSAgICAiIiIKLSAgICB0bXBmaWxlID0gJycKLSAgICBwaXBlID0gTm9uZQotICAgIGJ1ZnNpemUgPSBOb25lCi0gICAgbW9kZSA9ICdyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsY21kLG1vZGU9J3InLGJ1ZnNpemU9Tm9uZSk6Ci0KLSAgICAgICAgaWYgbW9kZSAhPSAncic6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwb3BlbigpLWVtdWxhdGlvbiBvbmx5IHN1cHBvcnRzIHJlYWQgbW9kZScpCi0gICAgICAgIGltcG9ydCB0ZW1wZmlsZQotICAgICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgb3Muc3lzdGVtKGNtZCArICcgPiAlcycgJSB0bXBmaWxlKQotICAgICAgICBzZWxmLnBpcGUgPSBvcGVuKHRtcGZpbGUsJ3JiJykKLSAgICAgICAgc2VsZi5idWZzaXplID0gYnVmc2l6ZQotICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCi0KLSAgICBkZWYgcmVhZChzZWxmKToKLQotICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWQoKQotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLQotICAgICAgICBpZiBzZWxmLmJ1ZnNpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWRsaW5lcygpCi0KLSAgICBkZWYgY2xvc2Uoc2VsZiwKLQotICAgICAgICAgICAgICByZW1vdmU9b3MudW5saW5rLGVycm9yPW9zLmVycm9yKToKLQotICAgICAgICBpZiBzZWxmLnBpcGU6Ci0gICAgICAgICAgICByYyA9IHNlbGYucGlwZS5jbG9zZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYyA9IDI1NQotICAgICAgICBpZiBzZWxmLnRtcGZpbGU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVtb3ZlKHNlbGYudG1wZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiByYwotCi0gICAgIyBBbGlhcwotICAgIF9fZGVsX18gPSBjbG9zZQotCiBkZWYgcG9wZW4oY21kLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAKICAgICAiIiIgUG9ydGFibGUgcG9wZW4oKSBpbnRlcmZhY2UuCiAgICAgIiIiCi0gICAgIyBGaW5kIGEgd29ya2luZyBwb3BlbiBpbXBsZW1lbnRhdGlvbiBwcmVmZXJyaW5nIHdpbjMycGlwZS5wb3BlbgotICAgICMgb3ZlciBvcy5wb3BlbiBvdmVyIF9wb3BlbgotICAgIHBvcGVuID0gTm9uZQotICAgIGlmIG9zLmVudmlyb24uZ2V0KCdPUycsJycpID09ICdXaW5kb3dzX05UJzoKLSAgICAgICAgIyBPbiBOVCB3aW4zMnBpcGUgc2hvdWxkIHdvcms7IG9uIFdpbjl4IGl0IGhhbmdzIGR1ZSB0byBidWdzCi0gICAgICAgICMgaW4gdGhlIE1TIEMgbGliIChzZWUgTVMgS25vd2xlZGdlQmFzZSBhcnRpY2xlIFExNTA5NTYpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCB3aW4zMnBpcGUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9wZW4gPSB3aW4zMnBpcGUucG9wZW4KLSAgICBpZiBwb3BlbiBpcyBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKG9zLCdwb3BlbicpOgotICAgICAgICAgICAgcG9wZW4gPSBvcy5wb3BlbgotICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IHdvcmtzLi4uIGl0IGRvZXNuJ3QgaW4gR1VJIHByb2dyYW1zCi0gICAgICAgICAgICAjIG9uIFdpbmRvd3MgcGxhdGZvcm1zCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzogIyBYWFggT3RoZXJzIHRvbyA/Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwb3BlbignJykKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuID0gX3BvcGVuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3BlbiA9IF9wb3BlbgotICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBwb3BlbihjbWQsbW9kZSxidWZzaXplKQorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oJ3VzZSBvcy5wb3BlbiBpbnN0ZWFkJywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIG9zLnBvcGVuKGNtZCwgbW9kZSwgYnVmc2l6ZSkKIAogZGVmIF9ub3JtX3ZlcnNpb24odmVyc2lvbiwgYnVpbGQ9JycpOgogCkBAIC03NzksNyArNzA2LDcgQEAKICAgICBwbCA9IHBsaXN0bGliLnJlYWRQbGlzdChmbikKICAgICByZWxlYXNlID0gcGxbJ1Byb2R1Y3RWZXJzaW9uJ10KICAgICB2ZXJzaW9uaW5mbz0oJycsICcnLCAnJykKLSAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XQorICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUKICAgICBpZiBtYWNoaW5lIGluICgncHBjJywgJ1Bvd2VyIE1hY2ludG9zaCcpOgogICAgICAgICAjIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGdlc3RhbHQgYmFzZWQgY29kZQogICAgICAgICBtYWNoaW5lID0gJ1Bvd2VyUEMnCkBAIC0xMDA0LDkgKzkzMSwxMCBAQAogICAgIHRyeToKICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oWydmaWxlJywgdGFyZ2V0XSwKICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisKICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLG9zLmVycm9yKToKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJsYXRpbi0xIikKKyAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCdsYXRpbi0xJykKICAgICByYyA9IHByb2Mud2FpdCgpCiAgICAgaWYgbm90IG91dHB1dCBvciByYzoKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKQEAgLTExMDcsNiArMTAzNSw5IEBACiAKICMjIyBQb3J0YWJsZSB1bmFtZSgpIGludGVyZmFjZQogCit1bmFtZV9yZXN1bHQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJ1bmFtZV9yZXN1bHQiLAorICAgICAgICAgICAgICAgICAgICAic3lzdGVtIG5vZGUgcmVsZWFzZSB2ZXJzaW9uIG1hY2hpbmUgcHJvY2Vzc29yIikKKwogX3VuYW1lX2NhY2hlID0gTm9uZQogCiBkZWYgdW5hbWUoKToKQEAgLTEyNDEsNyArMTE3Miw3IEBACiAgICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgICByZWxlYXNlID0gJ1Zpc3RhJwogCi0gICAgX3VuYW1lX2NhY2hlID0gc3lzdGVtLG5vZGUscmVsZWFzZSx2ZXJzaW9uLG1hY2hpbmUscHJvY2Vzc29yCisgICAgX3VuYW1lX2NhY2hlID0gdW5hbWVfcmVzdWx0KHN5c3RlbSxub2RlLHJlbGVhc2UsdmVyc2lvbixtYWNoaW5lLHByb2Nlc3NvcikKICAgICByZXR1cm4gX3VuYW1lX2NhY2hlCiAKICMjIyBEaXJlY3QgaW50ZXJmYWNlcyB0byBzb21lIG9mIHRoZSB1bmFtZSgpIHJldHVybiB2YWx1ZXMKQEAgLTEyNTMsNyArMTE4NCw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVswXQorICAgIHJldHVybiB1bmFtZSgpLnN5c3RlbQogCiBkZWYgbm9kZSgpOgogCkBAIC0xMjYzLDcgKzExOTQsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbMV0KKyAgICByZXR1cm4gdW5hbWUoKS5ub2RlCiAKIGRlZiByZWxlYXNlKCk6CiAKQEAgLTEyNzIsNyArMTIwMyw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVsyXQorICAgIHJldHVybiB1bmFtZSgpLnJlbGVhc2UKIAogZGVmIHZlcnNpb24oKToKIApAQCAtMTI4MSw3ICsxMjEyLDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzNdCisgICAgcmV0dXJuIHVuYW1lKCkudmVyc2lvbgogCiBkZWYgbWFjaGluZSgpOgogCkBAIC0xMjkwLDcgKzEyMjEsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbNF0KKyAgICByZXR1cm4gdW5hbWUoKS5tYWNoaW5lCiAKIGRlZiBwcm9jZXNzb3IoKToKIApAQCAtMTMwMiw3ICsxMjMzLDcgQEAKICAgICAgICAgZS5nLiAgTmV0QlNEIGRvZXMgdGhpcy4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzVdCisgICAgcmV0dXJuIHVuYW1lKCkucHJvY2Vzc29yCiAKICMjIyBWYXJpb3VzIEFQSXMgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBzeXMudmVyc2lvbgogCmRpZmYgLS1naXQgYS9MaWIvcGxpc3RsaWIucHkgYi9MaWIvcGxpc3RsaWIucHkKaW5kZXggMmU3ZTUxMi4uNDFmZDhmMiAxMDA2NDQKLS0tIGEvTGliL3BsaXN0bGliLnB5CisrKyBiL0xpYi9wbGlzdGxpYi5weQpAQCAtMjM3LDIwICsyMzcsMjYgQEAKICAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJkYXRhIikKIAogICAgIGRlZiB3cml0ZURpY3Qoc2VsZiwgZCk6Ci0gICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJkaWN0IikKLSAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKLSAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgia2V5Iiwga2V5KQotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBpZiBkOgorICAgICAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImRpY3QiKQorICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbXM6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKKyAgICAgICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImtleSIsIGtleSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCisgICAgICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJkaWN0IikKIAogICAgIGRlZiB3cml0ZUFycmF5KHNlbGYsIGFycmF5KToKLSAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImFycmF5IikKLSAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImFycmF5IikKKyAgICAgICAgaWYgYXJyYXk6CisgICAgICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiYXJyYXkiKQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuZW5kRWxlbWVudCgiYXJyYXkiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJhcnJheSIpCiAKIAogY2xhc3MgX0ludGVybmFsRGljdChkaWN0KToKQEAgLTI2NiwxMyArMjcyLDEzIEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiB2YWx1ZQogCiAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIGF0dHIsIHZhbHVlKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJBdHRyaWJ1dGUgYWNjZXNzIGZyb20gcGxpc3QgZGljdHMgaXMgZGVwcmVjYXRlZCwgdXNlIGRba2V5XSAiCi0gICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmW2F0dHJdID0gdmFsdWUKIAogICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBhdHRyKToKQEAgLTI4MiwxNCArMjg4LDE0IEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKIGNsYXNzIERpY3QoX0ludGVybmFsRGljdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIlRoZSBwbGlzdGxpYi5EaWN0IGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSBidWlsdGluIGRpY3QgaW5zdGVhZCIsCi0gICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKIApAQCAtMzAyLDcgKzMwOCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJUaGUgUGxpc3QgY2xhc3MgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSByZWFkUGxpc3QoKSBhbmQgIgotICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKICAgICBkZWYgZnJvbUZpbGUoY2xzLCBwYXRoT3JGaWxlKToKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IDg0ZWE4OGQuLmQ0MmQ5ZGQgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtMjUwLDE1ICsyNTAsMTggQEAKIAogICAgIGRlZiBxdWl0KHNlbGYpOgogICAgICAgICAiIiJTaWdub2ZmOiBjb21taXQgY2hhbmdlcyBvbiBzZXJ2ZXIsIHVubG9jayBtYWlsYm94LCBjbG9zZSBjb25uZWN0aW9uLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQotICAgICAgICBleGNlcHQgZXJyb3JfcHJvdG8gYXMgdmFsOgotICAgICAgICAgICAgcmVzcCA9IHZhbAotICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQotICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICBkZWwgc2VsZi5maWxlLCBzZWxmLnNvY2sKKyAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdRVUlUJykKKyAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKKwogICAgICNfX2RlbF9fID0gcXVpdAogCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IDJlMzYyNWIuLmNiOTM3OTYgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtODgsNyArODgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiAoYSwgKSArIHApCiAgICAgICAgIGlmIHZhbGlkX3R5cGVzOgogICAgICAgICAgICAgIyBNdXN0IGhhdmUgYSBtaXh0dXJlIG9mIHRleHQgYW5kIGJpbmFyeSBkYXRhCi0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb25lbnRzLiIpIGZyb20gTm9uZQogICAgICAgICByYWlzZQogICAgIHJldHVybiBwYXRoCiAKZGlmZiAtLWdpdCBhL0xpYi9wcm9maWxlLnB5IGIvTGliL3Byb2ZpbGUucHkKaW5kZXggMjk3ZTMyZC4uNzQzZTc3ZCAxMDA3NTUKLS0tIGEvTGliL3Byb2ZpbGUucHkKKysrIGIvTGliL3Byb2ZpbGUucHkKQEAgLTgzLDI2ICs4Myw2IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHByb2YucHJpbnRfc3RhdHMoc29ydCkKIAotaWYgaGFzYXR0cihvcywgInRpbWVzIik6Ci0gICAgZGVmIF9nZXRfdGltZV90aW1lcyh0aW1lcj1vcy50aW1lcyk6Ci0gICAgICAgIHQgPSB0aW1lcigpCi0gICAgICAgIHJldHVybiB0WzBdICsgdFsxXQotCi0jIFVzaW5nIGdldHJ1c2FnZSgzKSBpcyBiZXR0ZXIgdGhhbiBjbG9jaygzKSBpZiBhdmFpbGFibGU6Ci0jIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgZ2V0cnVzYWdlIGhhcyBhIGhpZ2hlciByZXNvbHV0aW9uCi0jIEZ1cnRoZXJtb3JlLCBvbiBhIFBPU0lYIHN5c3RlbSwgcmV0dXJucyBtaWNyb3NlY29uZHMsIHdoaWNoCi0jIHdyYXAgYXJvdW5kIGFmdGVyIDM2bWluLgotX2hhc19yZXMgPSAwCi10cnk6Ci0gICAgaW1wb3J0IHJlc291cmNlCi0gICAgcmVzZ2V0cnVzYWdlID0gbGFtYmRhOiByZXNvdXJjZS5nZXRydXNhZ2UocmVzb3VyY2UuUlVTQUdFX1NFTEYpCi0gICAgZGVmIF9nZXRfdGltZV9yZXNvdXJjZSh0aW1lcj1yZXNnZXRydXNhZ2UpOgotICAgICAgICB0ID0gdGltZXIoKQotICAgICAgICByZXR1cm4gdFswXSArIHRbMV0KLSAgICBfaGFzX3JlcyA9IDEKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KIGNsYXNzIFByb2ZpbGU6CiAgICAgIiIiUHJvZmlsZXIgY2xhc3MuCiAKQEAgLTE1NSwyMCArMTM1LDggQEAKICAgICAgICAgc2VsZi5iaWFzID0gYmlhcyAgICAgIyBNYXRlcmlhbGl6ZSBpbiBsb2NhbCBkaWN0IGZvciBsb29rdXAgc3BlZWQuCiAKICAgICAgICAgaWYgbm90IHRpbWVyOgotICAgICAgICAgICAgaWYgX2hhc19yZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHJlc2dldHJ1c2FnZQotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3Jlc291cmNlCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIodGltZSwgJ2Nsb2NrJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHNlbGYuZ2V0X3RpbWUgPSB0aW1lLmNsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIob3MsICd0aW1lcycpOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBvcy50aW1lcwotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3RpbWVzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZWxmLmdldF90aW1lID0gdGltZS50aW1lCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCisgICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUucHJvY2Vzc190aW1lCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2kKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGltZXIgPSB0aW1lcgogICAgICAgICAgICAgdCA9IHNlbGYudGltZXIoKSAjIHRlc3Qgb3V0IHRpbWVyIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9MaWIvcHN0YXRzLnB5IGIvTGliL3BzdGF0cy5weQppbmRleCBiZmJhYTQxLi42YTc3NjA1IDEwMDY0NAotLS0gYS9MaWIvcHN0YXRzLnB5CisrKyBiL0xpYi9wc3RhdHMucHkKQEAgLTY3OCwxMyArNjc4LDE0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3AKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpbXBvcnQgc3lzCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6CiAgICAgICAgIGluaXRwcm9maWxlID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICBpbml0cHJvZmlsZSA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGJyb3dzZXIgPSBQcm9maWxlQnJvd3Nlcihpbml0cHJvZmlsZSkKKyAgICAgICAgZm9yIHByb2ZpbGUgaW4gc3lzLmFyZ3ZbMjpdOgorICAgICAgICAgICAgYnJvd3Nlci5kb19hZGQocHJvZmlsZSkKICAgICAgICAgcHJpbnQoIldlbGNvbWUgdG8gdGhlIHByb2ZpbGUgc3RhdGlzdGljcyBicm93c2VyLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCiAgICAgICAgIGJyb3dzZXIuY21kbG9vcCgpCiAgICAgICAgIHByaW50KCJHb29kYnllLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCmRpZmYgLS1naXQgYS9MaWIvcHlfY29tcGlsZS5weSBiL0xpYi9weV9jb21waWxlLnB5CmluZGV4IDVhZGI3MGEuLjYyZDY5YWQgMTAwNjQ0Ci0tLSBhL0xpYi9weV9jb21waWxlLnB5CisrKyBiL0xpYi9weV9jb21waWxlLnB5CkBAIC0xMTAsOSArMTEwLDExIEBACiAgICAgIiIiCiAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGUpIGFzIGY6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChvcy5mc3RhdChmLmZpbGVubygpKS5zdF9tdGltZSkKKyAgICAgICAgICAgIHN0ID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KG9zLnN0YXQoZmlsZSkuc3RfbXRpbWUpCisgICAgICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZSkKKyAgICAgICAgdGltZXN0YW1wID0gaW50KHN0LnN0X210aW1lKQorICAgICAgICBzaXplID0gc3Quc3Rfc2l6ZSAmIDB4RkZGRkZGRkYKICAgICAgICAgY29kZXN0cmluZyA9IGYucmVhZCgpCiAgICAgdHJ5OgogICAgICAgICBjb2Rlb2JqZWN0ID0gYnVpbHRpbnMuY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCAnZXhlYycsCkBAIC0xMzksNiArMTQxLDcgQEAKICAgICB3aXRoIG9wZW4oY2ZpbGUsICd3YicpIGFzIGZjOgogICAgICAgICBmYy53cml0ZShiJ1wwXDBcMFwwJykKICAgICAgICAgd3JfbG9uZyhmYywgdGltZXN0YW1wKQorICAgICAgICB3cl9sb25nKGZjLCBzaXplKQogICAgICAgICBtYXJzaGFsLmR1bXAoY29kZW9iamVjdCwgZmMpCiAgICAgICAgIGZjLmZsdXNoKCkKICAgICAgICAgZmMuc2VlaygwLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3B5Y2xici5weSBiL0xpYi9weWNsYnIucHkKaW5kZXggNjVlOWZiZS4uOWVjMDVlZSAxMDA2NDQKLS0tIGEvTGliL3B5Y2xici5weQorKysgYi9MaWIvcHljbGJyLnB5CkBAIC0zOSw4ICszOSwxMCBAQAogICAgICAgICBsaW5lbm8gLS0gdGhlIGxpbmUgaW4gdGhlIGZpbGUgb24gd2hpY2ggdGhlIGNsYXNzIHN0YXRlbWVudCBvY2N1cnJlZAogIiIiCiAKK2ltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdG9rZW5pemUKIGZyb20gdG9rZW4gaW1wb3J0IE5BTUUsIERFREVOVCwgT1AKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKQEAgLTEzNSwxOSArMTM3LDI0IEBACiAgICAgIyBTZWFyY2ggdGhlIHBhdGggZm9yIHRoZSBtb2R1bGUKICAgICBmID0gTm9uZQogICAgIGlmIGlucGFja2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgZiwgZm5hbWUsIChfcywgX20sIHR5KSA9IGltcC5maW5kX21vZHVsZShtb2R1bGUsIHBhdGgpCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aAogICAgIGVsc2U6Ci0gICAgICAgIGYsIGZuYW1lLCAoX3MsIF9tLCB0eSkgPSBpbXAuZmluZF9tb2R1bGUobW9kdWxlLCBwYXRoICsgc3lzLnBhdGgpCi0gICAgaWYgdHkgPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbZm5hbWVdCi0gICAgICAgIHBhdGggPSBbZm5hbWVdICsgcGF0aAotICAgICAgICBmLCBmbmFtZSwgKF9zLCBfbSwgdHkpID0gaW1wLmZpbmRfbW9kdWxlKCdfX2luaXRfXycsIFtmbmFtZV0pCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aCArIHN5cy5wYXRoCisgICAgbG9hZGVyID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxtb2R1bGUsIHNlYXJjaF9wYXRoKQorICAgIGZuYW1lID0gbG9hZGVyLmdldF9maWxlbmFtZShmdWxsbW9kdWxlKQogICAgIF9tb2R1bGVzW2Z1bGxtb2R1bGVdID0gZGljdAotICAgIGlmIHR5ICE9IGltcC5QWV9TT1VSQ0U6CisgICAgaWYgbG9hZGVyLmlzX3BhY2thZ2UoZnVsbG1vZHVsZSk6CisgICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbb3MucGF0aC5kaXJuYW1lKGZuYW1lKV0KKyAgICB0cnk6CisgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKGZ1bGxtb2R1bGUpCisgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CiAgICAgICAgICMgbm90IFB5dGhvbiBzb3VyY2UsIGNhbid0IGRvIGFueXRoaW5nIHdpdGggdGhpcyBtb2R1bGUKLSAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBkaWN0CiAKKyAgICBmID0gaW8uU3RyaW5nSU8oc291cmNlKQorCiAgICAgc3RhY2sgPSBbXSAjIHN0YWNrIG9mIChjbGFzcywgaW5kZW50KSBwYWlycwogCiAgICAgZyA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhmLnJlYWRsaW5lKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5CmluZGV4IDM3NjE2ZmIuLmZhNTMxZTkgMTAwNzU1Ci0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTEsNyArMSw3IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAiIiJHZW5lcmF0ZSBQeXRob24gZG9jdW1lbnRhdGlvbiBpbiBIVE1MIG9yIHRleHQgZm9yIGludGVyYWN0aXZlIHVzZS4KIAotSW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgZG8gImZyb20gcHlkb2MgaW1wb3J0IGhlbHAiIHRvIHByb3ZpZGUgb25saW5lCitJbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCBkbyAiZnJvbSBweWRvYyBpbXBvcnQgaGVscCIgdG8gcHJvdmlkZQogaGVscC4gIENhbGxpbmcgaGVscCh0aGluZykgb24gYSBQeXRob24gb2JqZWN0IGRvY3VtZW50cyB0aGUgb2JqZWN0LgogCiBPciwgYXQgdGhlIHNoZWxsIGNvbW1hbmQgbGluZSBvdXRzaWRlIG9mIFB5dGhvbjoKQEAgLTIyLDExICsyMiw2IEBACiBvcGVuIGEgV2ViIGJyb3dzZXIgdG8gaW50ZXJhY3RpdmVseSBicm93c2UgZG9jdW1lbnRhdGlvbi4gIFRoZSAtcCBvcHRpb24KIGNhbiBiZSB1c2VkIHdpdGggdGhlIC1iIG9wdGlvbiB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHNlcnZlciBwb3J0LgogCi1Gb3IgcGxhdGZvcm1zIHdpdGhvdXQgYSBjb21tYW5kIGxpbmUsICJweWRvYyAtZyIgc3RhcnRzIHRoZSBIVFRQIHNlcnZlcgotYW5kIGFsc28gcG9wcyB1cCBhIGxpdHRsZSB3aW5kb3cgZm9yIGNvbnRyb2xsaW5nIGl0LiAgVGhpcyBvcHRpb24gaXMKLWRlcHJlY2F0ZWQsIHNpbmNlIHRoZSBzZXJ2ZXIgY2FuIG5vdyBiZSBjb250cm9sbGVkIGRpcmVjdGx5IGZyb20gSFRUUAotY2xpZW50cy4KLQogUnVuICJweWRvYyAtdyA8bmFtZT4iIHRvIHdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZQogdG8gYSBmaWxlIG5hbWVkICI8bmFtZT4uaHRtbCIuCiAKQEAgLTQyLDcgKzM3LDYgQEAKIF9fYXV0aG9yX18gPSAiS2EtUGluZyBZZWUgPHBpbmdAbGZ3Lm9yZz4iCiBfX2RhdGVfXyA9ICIyNiBGZWJydWFyeSAyMDAxIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIgogX19jcmVkaXRzX18gPSAiIiJHdWlkbyB2YW4gUm9zc3VtLCBmb3IgYW4gZXhjZWxsZW50IHByb2dyYW1taW5nIGxhbmd1YWdlLgogVG9tbXkgQnVybmV0dGUsIHRoZSBvcmlnaW5hbCBjcmVhdG9yIG9mIG1hbnB5LgogUGF1bCBQcmVzY29kLCBmb3IgYWxsIGhpcyB3b3JrIG9uIG9ubGluZWhlbHAuCkBAIC01OSw2ICs1Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMTY4LDEyICsxNjMsMTIgQEAKIAogZGVmIHZpc2libGVuYW1lKG5hbWUsIGFsbD1Ob25lLCBvYmo9Tm9uZSk6CiAgICAgIiIiRGVjaWRlIHdoZXRoZXIgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIGEgdmFyaWFibGUuIiIiCi0gICAgIyBDZXJ0YWluIHNwZWNpYWwgbmFtZXMgYXJlIHJlZHVuZGFudC4KLSAgICBfaGlkZGVuX25hbWVzID0gKCdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3Nsb3RzX18nLCAnX19wYWNrYWdlX18nLAotICAgICAgICAgICAgICAgICAgICAgJ19fY2FjaGVkX18nLCAnX19hdXRob3JfXycsICdfX2NyZWRpdHNfXycsICdfX2RhdGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX192ZXJzaW9uX18nKQotICAgIGlmIG5hbWUgaW4gX2hpZGRlbl9uYW1lczogcmV0dXJuIDAKKyAgICAjIENlcnRhaW4gc3BlY2lhbCBuYW1lcyBhcmUgcmVkdW5kYW50IG9yIGludGVybmFsLgorICAgIGlmIG5hbWUgaW4geydfX2F1dGhvcl9fJywgJ19fYnVpbHRpbnNfXycsICdfX2NhY2hlZF9fJywgJ19fY3JlZGl0c19fJywKKyAgICAgICAgICAgICAgICAnX19kYXRlX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2luaXRpYWxpemluZ19fJywKKyAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAnX19wYXRoX18nLCAnX19xdWFsbmFtZV9fJywgJ19fc2xvdHNfXycsICdfX3ZlcnNpb25fXyd9OgorICAgICAgICByZXR1cm4gMAogICAgICMgUHJpdmF0ZSBuYW1lcyBhcmUgaGlkZGVuLCBidXQgc3BlY2lhbCBuYW1lcyBhcmUgZGlzcGxheWVkLgogICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbmFtZS5lbmRzd2l0aCgnX18nKTogcmV0dXJuIDEKICAgICAjIE5hbWVkdHVwbGVzIGhhdmUgcHVibGljIGZpZWxkcyBhbmQgbWV0aG9kcyB3aXRoIGEgc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZQpAQCAtMjI2LDIwICsyMjEsMzQgQEAKICAgICBtdGltZSA9IG9zLnN0YXQoZmlsZW5hbWUpLnN0X210aW1lCiAgICAgbGFzdHVwZGF0ZSwgcmVzdWx0ID0gY2FjaGUuZ2V0KGZpbGVuYW1lLCAoTm9uZSwgTm9uZSkpCiAgICAgaWYgbGFzdHVwZGF0ZSBpcyBOb25lIG9yIGxhc3R1cGRhdGUgPCBtdGltZToKLSAgICAgICAgaW5mbyA9IGluc3BlY3QuZ2V0bW9kdWxlaW5mbyhmaWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmlsZSA9IHRva2VuaXplLm9wZW4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgIyBtb2R1bGUgY2FuJ3QgYmUgb3BlbmVkLCBzbyBza2lwIGl0CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBpbmZvIGFuZCAnYicgaW4gaW5mb1syXTogIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCi0gICAgICAgICAgICB0cnk6IG1vZHVsZSA9IGltcC5sb2FkX21vZHVsZSgnX190ZW1wX18nLCBmaWxlLCBmaWxlbmFtZSwgaW5mb1sxOl0pCi0gICAgICAgICAgICBleGNlcHQ6IHJldHVybiBOb25lCisgICAgICAgIGJpbmFyeV9zdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0KKyAgICAgICAgYmluYXJ5X3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCisgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbiBiaW5hcnlfc3VmZml4ZXMpOgorICAgICAgICAgICAgIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCisgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKToKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX190ZW1wX18nKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICByZXN1bHQgPSAobW9kdWxlLl9fZG9jX18gb3IgJycpLnNwbGl0bGluZXMoKVswXQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3RlbXBfXyddCi0gICAgICAgIGVsc2U6ICMgdGV4dCBtb2R1bGVzIGNhbiBiZSBkaXJlY3RseSBleGFtaW5lZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB0ZXh0IG1vZHVsZXMgY2FuIGJlIGRpcmVjdGx5IGV4YW1pbmVkCiAgICAgICAgICAgICByZXN1bHQgPSBzb3VyY2Vfc3lub3BzaXMoZmlsZSkKICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCiAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9IChtdGltZSwgcmVzdWx0KQogICAgIHJldHVybiByZXN1bHQKIApAQCAtMzA1LDkgKzMxNCw4IEBACiAgICAgICAgIGVsaWYgZXhjIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBBIFN5bnRheEVycm9yIG9jY3VycmVkIGJlZm9yZSB3ZSBjb3VsZCBleGVjdXRlIHRoZSBtb2R1bGUuCiAgICAgICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydCh2YWx1ZS5maWxlbmFtZSwgaW5mbykKLSAgICAgICAgZWxpZiBleGMgaXMgSW1wb3J0RXJyb3IgYW5kIGV4dHJhY3RfdGIodGIpWy0xXVsyXT09J3NhZmVpbXBvcnQnOgotICAgICAgICAgICAgIyBUaGUgaW1wb3J0IGVycm9yIG9jY3VycmVkIGRpcmVjdGx5IGluIHRoaXMgZnVuY3Rpb24sCi0gICAgICAgICAgICAjIHdoaWNoIG1lYW5zIHRoZXJlIGlzIG5vIHN1Y2ggbW9kdWxlIGluIHRoZSBwYXRoLgorICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICAgICAgIyBObyBzdWNoIG1vZHVsZSBpbiB0aGUgcGF0aC4KICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBpbXBvcnRpbmcgcHJvY2Vzcy4KQEAgLTM2MSw3ICszNjksNyBAQAogCiAgICAgICAgIGRvY2xvYyA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05ET0NTIiwgc2VsZi5QWVRIT05ET0NTKQogCi0gICAgICAgIGJhc2VkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKKyAgICAgICAgYmFzZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlKG9zKSkgYW5kCiAgICAgICAgICAgICAob2JqZWN0Ll9fbmFtZV9fIGluICgnZXJybm8nLCAnZXhjZXB0aW9ucycsICdnYycsICdpbXAnLApAQCAtOTYzLDYgKzk3MSw5IEBACiAgICAgICAgIG1vZHBrZ3MgPSBbXQogICAgICAgICBpZiBzaGFkb3dlZCBpcyBOb25lOiBzaGFkb3dlZCA9IHt9CiAgICAgICAgIGZvciBpbXBvcnRlciwgbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW2Rpcl0pOgorICAgICAgICAgICAgaWYgYW55KCgweEQ4MDAgPD0gb3JkKGNoKSA8PSAweERGRkYpIGZvciBjaCBpbiBuYW1lKToKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbW9kcGtncy5hcHBlbmQoKG5hbWUsICcnLCBpc3BrZywgbmFtZSBpbiBzaGFkb3dlZCkpCiAgICAgICAgICAgICBzaGFkb3dlZFtuYW1lXSA9IDEKIApAQCAtMTgyNyw3ICsxODM4LDcgQEAKIAogICAgIGRlZiBpbnRybyhzZWxmKToKICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCi1XZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIG9ubGluZSBoZWxwIHV0aWxpdHkuCitXZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIGludGVyYWN0aXZlIGhlbHAgdXRpbGl0eS4KIAogSWYgdGhpcyBpcyB5b3VyIGZpcnN0IHRpbWUgdXNpbmcgUHl0aG9uLCB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0CiB0aGUgdHV0b3JpYWwgb24gdGhlIEludGVybmV0IGF0IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJXMvdHV0b3JpYWwvLgpAQCAtMjAxOCwxNCArMjAyOSw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLnF1aXQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgIyBYWFggU2tpcHBpbmcgdGhpcyBmaWxlIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcKLSAgICAgICAgICAgICMgdGhhdCBjYXVzZXMgcHl0aG9uIHRvIGNyYXNoIHdpdGggYSBzZWdmYXVsdC4KLSAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTkzMTkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVE9ETyBSZW1vdmUgdGhpcyBvbmNlIHRoZSBidWcgaXMgZml4ZWQuCi0gICAgICAgICAgICBpZiBtb2RuYW1lIGluIHsndGVzdC5iYWRzeW50YXhfcGVwMzEyMCcsICdiYWRzeW50YXhfcGVwMzEyMCd9OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KICAgICAgICAgICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUsIG1vZG5hbWUsICcnKQogICAgICAgICAgICAgZWxzZToKQEAgLTIwMzcsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfc291cmNlJyk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKG1vZG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMDc0LDI3MiArMjA3Nyw2IEBACiAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnKSAjIGlnbm9yZSBwcm9ibGVtcyBkdXJpbmcgaW1wb3J0CiAgICAgICAgIE1vZHVsZVNjYW5uZXIoKS5ydW4oY2FsbGJhY2ssIGtleSwgb25lcnJvcj1vbmVycm9yKQogCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXZWIgYnJvd3NlciBpbnRlcmZhY2UKLQotZGVmIHNlcnZlKHBvcnQsIGNhbGxiYWNrPU5vbmUsIGNvbXBsZXRlcj1Ob25lKToKLSAgICBpbXBvcnQgaHR0cC5zZXJ2ZXIsIGVtYWlsLm1lc3NhZ2UsIHNlbGVjdAotCi0gICAgbXNnID0gJ3RoZSBweWRvYy5zZXJ2ZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQnCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgRG9jSGFuZGxlcihodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKLSAgICAgICAgZGVmIHNlbmRfZG9jdW1lbnQoc2VsZiwgdGl0bGUsIGNvbnRlbnRzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKQotICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoaHRtbC5wYWdlKHRpdGxlLCBjb250ZW50cykuZW5jb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6IHBhc3MKLQotICAgICAgICBkZWYgZG9fR0VUKHNlbGYpOgotICAgICAgICAgICAgcGF0aCA9IHNlbGYucGF0aAotICAgICAgICAgICAgaWYgcGF0aFstNTpdID09ICcuaHRtbCc6IHBhdGggPSBwYXRoWzotNV0KLSAgICAgICAgICAgIGlmIHBhdGhbOjFdID09ICcvJzogcGF0aCA9IHBhdGhbMTpdCi0gICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoICE9ICcuJzoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9iaiA9IGxvY2F0ZShwYXRoLCBmb3JjZWxvYWQ9MSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXJyb3JEdXJpbmdJbXBvcnQgYXMgdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLCBodG1sLmVzY2FwZShzdHIodmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgb2JqOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQoZGVzY3JpYmUob2JqKSwgaHRtbC5kb2N1bWVudChvYmosIHBhdGgpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLAotJ25vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlcycgJSByZXByKHBhdGgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAotJzxiaWc+PGJpZz48c3Ryb25nPlB5dGhvbjogSW5kZXggb2YgTW9kdWxlczwvc3Ryb25nPjwvYmlnPjwvYmlnPicsCi0nI2ZmZmZmZicsICcjNzc5OWVlJykKLSAgICAgICAgICAgICAgICBkZWYgYmx0aW5saW5rKG5hbWUpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiVzLmh0bWwiPiVzPC9hPicgJSAobmFtZSwgbmFtZSkKLSAgICAgICAgICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyBpZiB4ICE9ICdfX21haW5fXyddCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBodG1sLm11bHRpY29sdW1uKG5hbWVzLCBibHRpbmxpbmspCi0gICAgICAgICAgICAgICAgaW5kaWNlcyA9IFsnPHA+JyArIGh0bWwuYmlnc2VjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0J1aWx0LWluIE1vZHVsZXMnLCAnI2ZmZmZmZicsICcjZWU3N2FhJywgY29udGVudHMpXQotCi0gICAgICAgICAgICAgICAgc2VlbiA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKLSAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaHRtbC5pbmRleChkaXIsIHNlZW4pKQotICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gaGVhZGluZyArICcgJy5qb2luKGluZGljZXMpICsgJycnPHAgYWxpZ249cmlnaHQ+Ci08Zm9udCBjb2xvcj0iIzkwOTA5MCIgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+PHN0cm9uZz4KLXB5ZG9jPC9zdHJvbmc+IGJ5IEthLVBpbmcgWWVlICZsdDtwaW5nQGxmdy5vcmcmZ3Q7PC9mb250PicnJwotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudCgnSW5kZXggb2YgTW9kdWxlcycsIGNvbnRlbnRzKQotCi0gICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCAqYXJncyk6IHBhc3MKLQotICAgIGNsYXNzIERvY1NlcnZlcihodHRwLnNlcnZlci5IVFRQU2VydmVyKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGNhbGxiYWNrKToKLSAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0JwotICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gKGhvc3QsIHBvcnQpCi0gICAgICAgICAgICBzZWxmLnVybCA9ICdodHRwOi8vJXM6JWQvJyAlIChob3N0LCBwb3J0KQotICAgICAgICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCi0gICAgICAgICAgICBzZWxmLmJhc2UuX19pbml0X18oc2VsZiwgc2VsZi5hZGRyZXNzLCBzZWxmLmhhbmRsZXIpCi0KLSAgICAgICAgZGVmIHNlcnZlX3VudGlsX3F1aXQoc2VsZik6Ci0gICAgICAgICAgICBpbXBvcnQgc2VsZWN0Ci0gICAgICAgICAgICBzZWxmLnF1aXQgPSBGYWxzZQotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgICAgICByZCwgd3IsIGV4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zb2NrZXQuZmlsZW5vKCldLCBbXSwgW10sIDEpCi0gICAgICAgICAgICAgICAgaWYgcmQ6IHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQotCi0gICAgICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmJhc2Uuc2VydmVyX2FjdGl2YXRlKHNlbGYpCi0gICAgICAgICAgICBpZiBzZWxmLmNhbGxiYWNrOiBzZWxmLmNhbGxiYWNrKHNlbGYpCi0KLSAgICBEb2NTZXJ2ZXIuYmFzZSA9IGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIKLSAgICBEb2NTZXJ2ZXIuaGFuZGxlciA9IERvY0hhbmRsZXIKLSAgICBEb2NIYW5kbGVyLk1lc3NhZ2VDbGFzcyA9IGVtYWlsLm1lc3NhZ2UuTWVzc2FnZQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgRG9jU2VydmVyKHBvcnQsIGNhbGxiYWNrKS5zZXJ2ZV91bnRpbF9xdWl0KCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgc2VsZWN0LmVycm9yKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb21wbGV0ZXI6IGNvbXBsZXRlcigpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ3JhcGhpY2FsIGludGVyZmFjZQotCi1kZWYgZ3VpKCk6Ci0gICAgIiIiR3JhcGhpY2FsIGludGVyZmFjZSAoc3RhcnRzIFdlYiBzZXJ2ZXIgYW5kIHBvcHMgdXAgYSBjb250cm9sIHdpbmRvdykuIiIiCi0KLSAgICBtc2cgPSAoJ3RoZSBweWRvYy5ndWkoKSBmdW5jdGlvbiBhbmQgInB5ZG9jIC1nIiBvcHRpb24gYXJlIGRlcHJlY2F0ZWRcbicsCi0gICAgICAgICAgICd1c2UgInB5ZG9jLmJyb3dzZSgpIGZ1bmN0aW9uIGFuZCAicHlkb2MgLWIiIG9wdGlvbiBpbnN0ZWFkLicpCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgR1VJOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93LCBwb3J0PTc0NjQpOgotICAgICAgICAgICAgc2VsZi53aW5kb3cgPSB3aW5kb3cKLSAgICAgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTm9uZQotCi0gICAgICAgICAgICBpbXBvcnQgdGtpbnRlcgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnRpdGxlX2xibCA9IHRraW50ZXIuTGFiZWwoc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J1N0YXJ0aW5nIHNlcnZlci4uLlxuICcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J29wZW4gYnJvd3NlcicsIGNvbW1hbmQ9c2VsZi5vcGVuLCBzdGF0ZT0nZGlzYWJsZWQnKQotICAgICAgICAgICAgc2VsZi5xdWl0X2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VydmVyX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdxdWl0IHNlcnZpbmcnLCBjb21tYW5kPXNlbGYucXVpdCwgc3RhdGU9J2Rpc2FibGVkJykKLQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwgPSB0a2ludGVyLkxhYmVsKHNlbGYuc2VhcmNoX2ZybSwgdGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQgPSB0a2ludGVyLkVudHJ5KHNlbGYuc2VhcmNoX2ZybSkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5iaW5kKCc8UmV0dXJuPicsIHNlbGYuc2VhcmNoKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VhcmNoX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdzdG9wJywgcGFkeT0wLCBjb21tYW5kPXNlbGYuc3RvcCwgc3RhdGU9J2Rpc2FibGVkJykKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICMgVHJ5aW5nIHRvIGhpZGUgYW5kIHNob3cgdGhpcyBidXR0b24gY3Jhc2hlcyB1bmRlciBXaW5kb3dzLgotICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9idG4ucGFjayhzaWRlPSdyaWdodCcpCi0KLSAgICAgICAgICAgIHNlbGYud2luZG93LnRpdGxlKCdweWRvYycpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5wcm90b2NvbCgnV01fREVMRVRFX1dJTkRPVycsIHNlbGYucXVpdCkKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYucXVpdF9idG4ucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYuc2VydmVyX2ZybS5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J3gnKQotCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9jdXNfc2V0KCkKLQotICAgICAgICAgICAgZm9udCA9ICgnaGVsdmV0aWNhJywgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIDggb3IgMTApCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QgPSB0a2ludGVyLkxpc3Rib3god2luZG93LCBmb250PWZvbnQsIGhlaWdodD02KQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmJpbmQoJzxCdXR0b24tMT4nLCBzZWxmLnNlbGVjdCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5iaW5kKCc8RG91YmxlLUJ1dHRvbi0xPicsIHNlbGYuZ290bykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3NjciA9IHRraW50ZXIuU2Nyb2xsYmFyKHdpbmRvdywKLSAgICAgICAgICAgICAgICBvcmllbnQ9J3ZlcnRpY2FsJywgY29tbWFuZD1zZWxmLnJlc3VsdF9sc3QueXZpZXcpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNlbGYucmVzdWx0X3Njci5zZXQpCi0KLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybSA9IHRraW50ZXIuRnJhbWUod2luZG93KQotICAgICAgICAgICAgc2VsZi5nb3RvX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdnbyB0byBzZWxlY3RlZCcsIGNvbW1hbmQ9c2VsZi5nb3RvKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdoaWRlIHJlc3VsdHMnLCBjb21tYW5kPXNlbGYuaGlkZSkKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4ucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0bi5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotCi0gICAgICAgICAgICBzZWxmLndpbmRvdy51cGRhdGUoKQotICAgICAgICAgICAgc2VsZi5taW53aWR0aCA9IHNlbGYud2luZG93LndpbmZvX3dpZHRoKCkKLSAgICAgICAgICAgIHNlbGYubWluaGVpZ2h0ID0gc2VsZi53aW5kb3cud2luZm9faGVpZ2h0KCkKLSAgICAgICAgICAgIHNlbGYuYmlnbWluaGVpZ2h0ID0gKHNlbGYuc2VydmVyX2ZybS53aW5mb19yZXFoZWlnaHQoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlYXJjaF9mcm0ud2luZm9fcmVxaGVpZ2h0KCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LndpbmZvX3JlcWhlaWdodCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybS53aW5mb19yZXFoZWlnaHQoKSkKLSAgICAgICAgICAgIHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0ID0gc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWQgPSAwCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy50ay53aWxsZGlzcGF0Y2goKQotCi0gICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCi0gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKAotICAgICAgICAgICAgICAgIHRhcmdldD1zZXJ2ZSwgYXJncz0ocG9ydCwgc2VsZi5yZWFkeSwgc2VsZi5xdWl0KSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiByZWFkeShzZWxmLCBzZXJ2ZXIpOgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLmNvbmZpZygKLSAgICAgICAgICAgICAgICB0ZXh0PSdQeXRob24gZG9jdW1lbnRhdGlvbiBzZXJ2ZXIgYXRcbicgKyBzZXJ2ZXIudXJsKQotICAgICAgICAgICAgc2VsZi5vcGVuX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnF1aXRfYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLQotICAgICAgICBkZWYgb3BlbihzZWxmLCBldmVudD1Ob25lLCB1cmw9Tm9uZSk6Ci0gICAgICAgICAgICB1cmwgPSB1cmwgb3Igc2VsZi5zZXJ2ZXIudXJsCi0gICAgICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgotICAgICAgICAgICAgd2ViYnJvd3Nlci5vcGVuKHVybCkKLQotICAgICAgICBkZWYgcXVpdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnF1aXQgPSAxCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5xdWl0KCkKLQotICAgICAgICBkZWYgc2VhcmNoKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAga2V5ID0gc2VsZi5zZWFyY2hfZW50LmdldCgpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuLnBhY2soc2lkZT0ncmlnaHQnKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwuY29uZmlnKHRleHQ9J1NlYXJjaGluZyBmb3IgIiVzIi4uLicgJSBrZXkpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5wYWNrKHNpZGU9J2xlZnQnKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZCgpCi0KLSAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICAgICAgICAgIGlmIHNlbGYuc2Nhbm5lcjoKLSAgICAgICAgICAgICAgICBzZWxmLnNjYW5uZXIucXVpdCA9IDEKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE1vZHVsZVNjYW5uZXIoKQotICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5zY2FubmVyLnJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi51cGRhdGUsIGtleSwgc2VsZi5kb25lKSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiB1cGRhdGUoc2VsZiwgcGF0aCwgbW9kbmFtZSwgZGVzYyk6Ci0gICAgICAgICAgICBpZiBtb2RuYW1lWy05Ol0gPT0gJy5fX2luaXRfXyc6Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWVbOi05XSArICcgKHBhY2thZ2UpJwotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0Lmluc2VydCgnZW5kJywKLSAgICAgICAgICAgICAgICBtb2RuYW1lICsgJyAtICcgKyAoZGVzYyBvciAnKG5vIGRlc2NyaXB0aW9uKScpKQotCi0gICAgICAgIGRlZiBzdG9wKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgaWYgc2VsZi5zY2FubmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lci5xdWl0ID0gMQotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLQotICAgICAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5jb25maWcodGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6IHNlbGYuc3RvcF9idG4uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0KLSAgICAgICAgZGVmIHNlbGVjdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotCi0gICAgICAgIGRlZiBnb3RvKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZWN0aW9uID0gc2VsZi5yZXN1bHRfbHN0LmN1cnNlbGVjdGlvbigpCi0gICAgICAgICAgICBpZiBzZWxlY3Rpb246Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IHNlbGYucmVzdWx0X2xzdC5nZXQoc2VsZWN0aW9uWzBdKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICAgICAgc2VsZi5vcGVuKHVybD1zZWxmLnNlcnZlci51cmwgKyBtb2RuYW1lICsgJy5odG1sJykKLQotICAgICAgICBkZWYgY29sbGFwc2Uoc2VsZik6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLmJpZ3dpZHRoID0gc2VsZi53aW5kb3cud2luZm9fd2lkdGgoKQotICAgICAgICAgICAgc2VsZi5iaWdoZWlnaHQgPSBzZWxmLndpbmRvdy53aW5mb19oZWlnaHQoKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fZ2VvbWV0cnkoJyVkeCVkJyAlIChzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9taW5zaXplKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KQotICAgICAgICAgICAgc2VsZi5leHBhbmRlZCA9IDAKLQotICAgICAgICBkZWYgZXhwYW5kKHNlbGYpOgotICAgICAgICAgICAgaWYgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0ucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neScpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QucGFjayhzaWRlPSd0b3AnLCBmaWxsPSdib3RoJywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkID0gMQotCi0gICAgICAgIGRlZiBoaWRlKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgIHNlbGYuY29sbGFwc2UoKQotCi0gICAgaW1wb3J0IHRraW50ZXIKLSAgICB0cnk6Ci0gICAgICAgIHJvb3QgPSB0a2ludGVyLlRrKCkKLSAgICAgICAgIyBUayB3aWxsIGNyYXNoIGlmIHB5dGhvbncuZXhlIGhhcyBhbiBYUCAubWFuaWZlc3QKLSAgICAgICAgIyBmaWxlIGFuZCB0aGUgcm9vdCBoYXMgaXMgbm90IGRlc3Ryb3llZCBleHBsaWNpdGx5LgotICAgICAgICAjIElmIHRoZSBwcm9ibGVtIGlzIGV2ZXIgZml4ZWQgaW4gVGssIHRoZSBleHBsaWNpdAotICAgICAgICAjIGRlc3Ryb3kgY2FuIGdvLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBndWkgPSBHVUkocm9vdCkKLSAgICAgICAgICAgIHJvb3QubWFpbmxvb3AoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcm9vdC5kZXN0cm95KCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHBhc3MKLQotCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlbmhhbmNlZCBXZWIgYnJvd3NlciBpbnRlcmZhY2UKIAogZGVmIF9zdGFydF9zZXJ2ZXIodXJsaGFuZGxlciwgcG9ydCk6CkBAIC0yNzk2LDE1ICsyNTMzLDEyIEBACiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCAnLicpCiAKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2JnazpwOncnKQorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdiazpwOncnKQogICAgICAgICB3cml0aW5nID0gRmFsc2UKICAgICAgICAgc3RhcnRfc2VydmVyID0gRmFsc2UKICAgICAgICAgb3Blbl9icm93c2VyID0gRmFsc2UKICAgICAgICAgcG9ydCA9IE5vbmUKICAgICAgICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgICAgICBpZiBvcHQgPT0gJy1nJzoKLSAgICAgICAgICAgICAgICBndWkoKQotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgaWYgb3B0ID09ICctYic6CiAgICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgIG9wZW5fYnJvd3NlciA9IFRydWUKQEAgLTI4MTcsOCArMjU1MSw4IEBACiAgICAgICAgICAgICBpZiBvcHQgPT0gJy13JzoKICAgICAgICAgICAgICAgICB3cml0aW5nID0gVHJ1ZQogCi0gICAgICAgIGlmIHN0YXJ0X3NlcnZlciA9PSBUcnVlOgotICAgICAgICAgICAgaWYgcG9ydCA9PSBOb25lOgorICAgICAgICBpZiBzdGFydF9zZXJ2ZXI6CisgICAgICAgICAgICBpZiBwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcG9ydCA9IDAKICAgICAgICAgICAgIGJyb3dzZShwb3J0LCBvcGVuX2Jyb3dzZXI9b3Blbl9icm93c2VyKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0yODY1LDkgKzI1OTksNiBAQAogICAgIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBUaGUgLXAgb3B0aW9uIGNhbiBiZSB1c2VkIHdpdGgKICAgICB0aGUgLWIgb3B0aW9uIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc2VydmVyIHBvcnQuCiAKLXtjbWR9IC1nCi0gICAgRGVwcmVjYXRlZC4KLQoge2NtZH0gLXcgPG5hbWU+IC4uLgogICAgIFdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZSB0byBhIGZpbGUgaW4gdGhlIGN1cnJlbnQKICAgICBkaXJlY3RvcnkuICBJZiA8bmFtZT4gY29udGFpbnMgYSAne3NlcH0nLCBpdCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWU7IGlmCmRpZmYgLS1naXQgYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKaW5kZXggMDhhOWU3Yy4uNjJhNTRhOSAxMDA2NDQKLS0tIGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CisrKyBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQpAQCAtMSwxNiArMSwxNyBAQAotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBUaHUgRmViIDIzIDE4OjM3OjU0IDIwMTIKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBBdWcgMjUgMTI6MTI6NDUgMjAxMgogdG9waWNzID0geydhc3NlcnQnOiAnXG5UaGUgYGBhc3NlcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbmBgLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yYGAsIGlzIGVxdWl2YWxlbnRcbnRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCBgYF9fZGVidWdfX2BgIGFuZCBgYEFzc2VydGlvbkVycm9yYGBcbnJlZmVyIHRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCBgYEZhbHNlYGAgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkXG4oY29tbWFuZCBsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlXG5mb3IgYW4gYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZVxudGltZS4gIE5vdGUgdGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlXG5leHByZXNzaW9uIHRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhc1xucGFydCBvZiB0aGUgc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvIGBgX19kZWJ1Z19fYGAgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAogICdhc3NpZ25tZW50JzogJ1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGUgb2JqZWN0XG4gIG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlXG4gIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhbiBhc3RlcmlzayxcbiAgICBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIGF0XG4gICAgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIG1pbnVzXG4gICAgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0b1xuICAgIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zXG4gICAgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpcyB0aGVuXG4gICAgYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgYGBnbG9iYWxgYCBvciBgYG5vbmxvY2FsYGBcbiAgICBzdGF0ZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlXG4gICAgb2JqZWN0IGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuICAgIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSBgYG5vbmxvY2FsYGAsIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW4gc3F1YXJlXG4gIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBgYFR5cGVFcnJvcmBgIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSBgYEF0dHJpYnV0ZUVycm9yYGApLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgYGBhLnhgYCBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgYGBhLnhgYCBpc1xuICBhbHdheXMgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICBUaHVzLCB0aGUgdHdvIG9jY3VycmVuY2VzIG9mIGBgYS54YGAgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZVxuICBzYW1lIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSxcbiAgdGhlIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCBgYHByb3BlcnR5KClgYC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgYGBJbmRleEVycm9yYGAgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgYGBfX3NldGl0ZW1fXygpYGAgbWV0aG9kIGlzIGNhbGxlZFxuICB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGUgcmVmZXJlbmNlXG4gIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGFcbiAgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdCBvZiB0aGUgc2FtZVxuICB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkLFxuICBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmIGVpdGhlciBib3VuZCBpc1xuICBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmdcbiAgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsXG4gIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZSB0aGVcbiAgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZiB0aGVcbiAgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIG9iamVjdFxuICBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuV0FSTklORzogQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHNcbmJldHdlZW4gdGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NhZmVcJyAoZm9yXG5leGFtcGxlIGBgYSwgYiA9IGIsIGFgYCBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgaW5zdGFuY2UsIHRoZVxuZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzIGBgWzAsIDJdYGA6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMlxuICAgcHJpbnQoeClcblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYCp0YXJnZXRgYCBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKICAnYXRvbS1pZGVudGlmaWVycyc6ICdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhIGBgTmFtZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSBpbiBmcm9udCBvZiB0aGUgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQsIGFuZFxuYSBzaW5nbGUgdW5kZXJzY29yZSBpbnNlcnRlZCBpbiBmcm9udCBvZiB0aGUgY2xhc3MgbmFtZS4gIEZvciBleGFtcGxlLFxudGhlIGlkZW50aWZpZXIgYGBfX3NwYW1gYCBvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCBgYEhhbWBgIHdpbGwgYmVcbnRyYW5zZm9ybWVkIHRvIGBgX0hhbV9fc3BhbWBgLiAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZlxudGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2ggdGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZVxudHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZyAobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLFxuaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heSBoYXBwZW4uICBJZiB0aGUgY2xhc3MgbmFtZVxuY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm8gdHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCiAgJ2F0b20tbGl0ZXJhbHMnOiAiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgYGB4Lm5hbWVgYClcbmZvciBjbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yIGBgc2VsZmBgKS4gIGBgbmFtZWBgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlXG4gICBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgYGBfX2dldGF0dHJfXygpYGAgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiBgYF9fZ2V0YXR0cl9fKClgYCBhbmQgYGBfX3NldGF0dHJfXygpYGAuKSBUaGlzIGlzIGRvbmUgYm90aFxuICAgZm9yIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgYGBfX2dldGF0dHJfXygpYGBcbiAgIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGVcbiAgIHRoYXQgYXQgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnlcbiAgIG5vdCBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lc1xuICAgYGBfX2dldGF0dHJfXygpYGAsIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzc1xuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBlaXRoZXIgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKVxuICAgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uIEluIG9yZGVyXG4gICB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvblxuICAgc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG9cbiAgIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpYGAuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzXG4gICAgIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4IG9yXG4gICAgIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmIGBgX19zZXRhdHRyX18oKWBgIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKWBgLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSBgYF9fc2V0YXR0cl9fKClgYCBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiBgYGRlbCBvYmoubmFtZWBgIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiBgYGRpcigpYGAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuICBBIGxpc3QgbXVzdCBiZVxuICAgcmV0dXJuZWQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgYGBfX2RpY3RfX2BgLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgYGBOb25lYGAgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgLCBhbmRcbmBgX19kZWxldGVfXygpYGAuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsXG5pdCBpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsIGBgYS54YGAgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoIGBgYS5fX2RpY3RfX1tcJ3hcJ11gYCwgdGhlblxuYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXWBgLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbmBgdHlwZShhKWBgIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgYGBhLnhgYC5cbkhvdyB0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiBgYGFgYDpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgYGB4Ll9fZ2V0X18oYSlgYC5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsIGBgYS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6IGBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKWBgLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsIGBgQS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgIGBgQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKWBgLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiBgYGFgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHN1cGVyYGAsIHRoZW4gdGhlIGJpbmRpbmcgYGBzdXBlcihCLFxuICAgb2JqKS5tKClgYCBzZWFyY2hlcyBgYG9iai5fX2NsYXNzX18uX19tcm9fX2BgIGZvciB0aGUgYmFzZSBjbGFzc1xuICAgYGBBYGAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGBgQmBgIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3JcbiAgIHdpdGggdGhlIGNhbGw6IGBgQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pYGAuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAgYW5kIGBgX19kZWxldGVfXygpYGAuXG5JZiBpdCBkb2VzIG5vdCBkZWZpbmUgYGBfX2dldF9fKClgYCwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsXG5yZXR1cm4gdGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGVcbm9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyBgYF9fc2V0X18oKWBgXG5hbmQvb3IgYGBfX2RlbGV0ZV9fKClgYCwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXNcbm5laXRoZXIsIGl0IGlzIGEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzXG5kZWZpbmUgYm90aCBgYF9fZ2V0X18oKWBgIGFuZCBgYF9fc2V0X18oKWBgLCB3aGlsZSBub24tZGF0YVxuZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZSBgYF9fZ2V0X18oKWBgIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aFxuYGBfX3NldF9fKClgYCBhbmQgYGBfX2dldF9fKClgYCBkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvblxuaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluIGNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmVcbm92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nIGBgc3RhdGljbWV0aG9kKClgYCBhbmQgYGBjbGFzc21ldGhvZCgpYGApXG5hcmUgaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSBgYHByb3BlcnR5KClgYCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZFxuICAgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvclxuICAgZWFjaCBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzIGBgQXR0cmlidXRlRXJyb3JgYC4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgYGBcJ19fZGljdF9fXCdgYCB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXMgZGVmaW5pbmdcbiAgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbnN0YW5jZXMuIElmIHdlYWtcbiAgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZCBgYFwnX193ZWFrcmVmX19cJ2BgIHRvIHRoZVxuICBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlIGluc3RhbmNlXG4gIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGUgKGV4Y2VwdCBieVxuICByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLiBUaGlzXG4gIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgYGBpbnRgYCwgYGBzdHJgYCBhbmRcbiAgYGB0dXBsZWBgLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3MgbWF5XG4gIGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAogICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllciAod2hpY2ggY2FuXG5iZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlIGBgX19nZXRhdHRyX18oKWBgIG1ldGhvZCkuICBJZiB0aGlzXG5hdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiBgYEF0dHJpYnV0ZUVycm9yYGAgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCiAgJ2F1Z2Fzc2lnbic6ICdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnMqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgYGBkaXZtb2QoKWBgXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSBgYGFicygpYGAgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSBgYCtgYCAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSBgYC1gYCAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHNcbmFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uXG50eXBlLlxuJywKKyAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlIGBgZGl2bW9kKClgYFxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgYGBhYnMoKWBgIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgYGArYGAgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgYGAtYGAgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vblxudHlwZS5cbicsCiAgJ2JpdHdpc2UnOiAnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlIGBgJmBgIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSBgYF5gYCBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuXG5UaGUgYGB8YGAgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKICAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gYGBjb21waWxlKClgYCBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGZ1bmN0aW9uIG9iamVjdHNcbnRocm91Z2ggdGhlaXIgYGBfX2NvZGVfX2BgIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlIGBgY29kZWBgIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYCAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbmBgRWxsaXBzaXNgYCAoYSBidWlsdC1pbiBuYW1lKS5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogIlxuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkIGBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLlxuIiwKKyAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogJ1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG5gYEVsbGlwc2lzYGAgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoRWxsaXBzaXMpKClgYCBwcm9kdWNlcyB0aGVcbmBgRWxsaXBzaXNgYCBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgYGBFbGxpcHNpc2BgIG9yIGBgLi4uYGAuXG4nLAorICdibHRpbi1udWxsLW9iamVjdCc6ICJcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCBgYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShOb25lKSgpYGAgcHJvZHVjZXNcbnRoZSBzYW1lIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYE5vbmVgYC5cbiIsCiAgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICJcblR5cGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cblR5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gb2JqZWN0J3MgdHlwZSBpc1xuYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgdHlwZSgpYGAuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgYGB0eXBlc2BgIGRlZmluZXMgbmFtZXMgZm9yXG5hbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG5cblR5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8Y2xhc3MgJ2ludCc+YGAuXG4iLAogICdib29sZWFucyc6ICdcbkJvb2xlYW4gb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqXG5cbiAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbiAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcblxuSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zIGFyZVxudXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyBmYWxzZTogYGBGYWxzZWBgLCBgYE5vbmVgYCwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG5zdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbmRpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgdHJ1ZS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBjdXN0b21pemUgdGhlaXIgdHJ1dGggdmFsdWUgYnlcbnByb3ZpZGluZyBhIGBgX19ib29sX18oKWBgIG1ldGhvZC5cblxuVGhlIG9wZXJhdG9yIGBgbm90YGAgeWllbGRzIGBgVHJ1ZWBgIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSxcbmBgRmFsc2VgYCBvdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uIGBgeCBhbmQgeWBgIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gYGB4IG9yIHlgYCBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuKE5vdGUgdGhhdCBuZWl0aGVyIGBgYW5kYGAgbm9yIGBgb3JgYCByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmIGBgc2BgIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG5gYHMgb3IgXCdmb29cJ2BgIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgYGBub3RgYCBoYXMgdG9cbmludmVudCBhIHZhbHVlIGFueXdheSwgaXQgZG9lcyBub3QgYm90aGVyIHRvIHJldHVybiBhIHZhbHVlIG9mIHRoZVxuc2FtZSB0eXBlIGFzIGl0cyBhcmd1bWVudCwgc28gZS5nLiwgYGBub3QgXCdmb29cJ2BgIHlpZWxkcyBgYEZhbHNlYGAsXG5ub3QgYGBcJ1wnYGAuKVxuJywKICAnYnJlYWsnOiAnXG5UaGUgYGBicmVha2BgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuXG5gYGJyZWFrYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBgYGZvcmBgIG9yXG5gYHdoaWxlYGAgbG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uXG53aXRoaW4gdGhhdCBsb29wLlxuXG5JdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWxcbmBgZWxzZWBgIGNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhIGBgZm9yYGAgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5IGBgYnJlYWtgYCwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbmtlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuXG5XaGVuIGBgYnJlYWtgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxubGVhdmluZyB0aGUgbG9vcC5cbicsCkBAIC0xOCwxMyArMTksMTMgQEAKICAnY2FsbHMnOiAnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhIGZ1bmN0aW9uKSB3aXRoIGEgcG9zc2libHlcbmVtcHR5IHNlcmllcyBvZiBhcmd1bWVudHM6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqKiIgZXhwcmVzc2lvblxuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQSB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZFxuYXJndW1lbnRzIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHNlbWFudGljcy5cblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG5mdW5jdGlvbnMsIGJ1aWx0LWluIGZ1bmN0aW9ucywgbWV0aG9kcyBvZiBidWlsdC1pbiBvYmplY3RzLCBjbGFzc1xub2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuYGBfX2NhbGxfXygpYGAgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdHMuXG5cbklmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbnBvc2l0aW9uYWwgYXJndW1lbnRzLCBhcyBmb2xsb3dzLiAgRmlyc3QsIGEgbGlzdCBvZiB1bmZpbGxlZCBzbG90cyBpc1xuY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuYXJndW1lbnRzLCB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIGZpcnN0IE4gc2xvdHMuICBOZXh0LCBmb3IgZWFjaFxua2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBmb3JtYWxcbnBhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgaXNcbmFscmVhZHkgZmlsbGVkLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzIGBgTm9uZWBgLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGxpc3Qgb2YgZmlsbGVkXG5zbG90cyBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgZXZlblxuaWYgdGhleSBhcmUgXCduYW1lZFwnIGZvciB0aGUgcHVycG9zZSBvZiBkb2N1bWVudGF0aW9uLCBhbmQgd2hpY2hcbnRoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlIGNhc2VcbmZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gQyB0aGF0IHVzZSBgYFB5QXJnX1BhcnNlVHVwbGUoKWBgIHRvXG5wYXJzZSB0aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4ob3IgYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgd2VyZSBubyBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHMpLlxuXG5JZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxubmFtZSwgYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggYGAqKmlkZW50aWZpZXJgYCBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXRcbmZvcm1hbCBwYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggYGAqZXhwcmVzc2lvbmBgIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG5gYGV4cHJlc3Npb25gYCBtdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzXG5pdGVyYWJsZSBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cztcbmlmIHRoZXJlIGFyZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCBgYGV4cHJlc3Npb25gYFxuZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsXG53aXRoIE0rTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosICp5MSosIC4uLiwgKnlNKi5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlIGBgKmV4cHJlc3Npb25gYCBzeW50YXggbWF5XG5hcHBlYXIgKmFmdGVyKiBzb21lIGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSogdGhlXG5rZXl3b3JkIGFyZ3VtZW50cyAoYW5kIHRoZSBgYCoqZXhwcmVzc2lvbmBgIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgYGAqZXhwcmVzc2lvbmBgXG5zeW50YXggdG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzXG5ub3QgYXJpc2UuXG5cbklmIHRoZSBzeW50YXggYGAqKmV4cHJlc3Npb25gYCBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuYGBleHByZXNzaW9uYGAgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuYXBwZWFyaW5nIGluIGJvdGggYGBleHByZXNzaW9uYGAgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsXG5hIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cblxuRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYFxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5IGBgTm9uZWBgLCB1bmxlc3MgaXQgcmFpc2VzXG5hbiBleGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZVxuY2FsbGFibGUgb2JqZWN0LlxuXG5JZiBpdCBpcy0tLVxuXG5hIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbiAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4gICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCB0aGVcbiAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb25cbiAgICpGdW5jdGlvbiBkZWZpbml0aW9ucyouICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgYGByZXR1cm5gYFxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSBgYF9fY2FsbF9fKClgYCBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlblxuICAgdGhlIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCiAgJ2NsYXNzJzogJ1xuQ2xhc3MgZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29tcGFyaXNvbnMnOiAnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgYGBhIDwgYiA8IGNgYCBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiBgYFRydWVgYCBvciBgYEZhbHNlYGAuXG5cbkNvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCBgYHggPCB5IDw9IHpgYCBpc1xuZXF1aXZhbGVudCB0byBgYHggPCB5IGFuZCB5IDw9IHpgYCwgZXhjZXB0IHRoYXQgYGB5YGAgaXMgZXZhbHVhdGVkXG5vbmx5IG9uY2UgKGJ1dCBpbiBib3RoIGNhc2VzIGBgemBgIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gYGB4IDxcbnlgYCBpcyBmb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gYGBhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4gemBgIGlzIGVxdWl2YWxlbnQgdG8gYGBhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gemBgLFxuZXhjZXB0IHRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCBgYGEgb3AxIGIgb3AyIGNgYCBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uXG5iZXR3ZWVuICphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCBgYHggPCB5ID4gemBgIGlzIHBlcmZlY3RseSBsZWdhbFxuKHRob3VnaCBwZXJoYXBzIG5vdCBwcmV0dHkpLlxuXG5UaGUgb3BlcmF0b3JzIGBgPGBgLCBgYD5gYCwgYGA9PWBgLCBgYD49YGAsIGBgPD1gYCwgYW5kIGBgIT1gYCBjb21wYXJlXG50aGUgdmFsdWVzIG9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLlxuSWYgYm90aCBhcmUgbnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsXG50aGUgYGA9PWBgIGFuZCBgYCE9YGAgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0byBiZSB1bmVxdWFsLCB3aGlsZSB0aGUgYGA8YGAsIGBgPmBgLCBgYD49YGAgYW5kIGBgPD1gYFxub3BlcmF0b3JzIHJhaXNlIGEgYGBUeXBlRXJyb3JgYCB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdGhhdCBkbyBub3QgaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2ZcbnR5cGVzLiAgWW91IGNhbiBjb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW5cbnR5cGVzIGJ5IGRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgYGBfX2d0X18oKWBgLCBkZXNjcmliZWRcbmluIHNlY3Rpb24gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgYGBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYERlY2ltYWwoXCdOYU5cJylgYCBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgYGB4IGlzIHhgYCBidXQgYXJlIG5vdCBlcXVhbCB0b1xuICB0aGVtc2VsdmVzLCBgYHggIT0geGBgLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbiAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC4gIEZvciBleGFtcGxlLCBib3RoIGBgMyA8XG4gIGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgZmxvYXQoXCdOYU5cJykgPCAzYGAgd2lsbCByZXR1cm4gYGBGYWxzZWBgLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyBlcXVpdmFsZW50c1xuICAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBvcmQoKWBgKSBvZiB0aGVpciBjaGFyYWN0ZXJzLlxuICBbM10gU3RyaW5nIGFuZCBieXRlcyBvYmplY3QgY2FuXCd0IGJlIGNvbXBhcmVkIVxuXG4qIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBlYWNoXG4gIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgYGBbMSwyLHhdIDw9IFsxLDIseV1gYCBoYXMgdGhlXG4gIHNhbWUgdmFsdWUgYXMgYGB4IDw9IHlgYC4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3RcbiAgZXhpc3QsIHRoZSBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCBgYFsxLDJdIDxcbiAgWzEsMiwzXWBgKS5cblxuKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGVcbiAgc2FtZSBgYChrZXksIHZhbHVlKWBgIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyBgYChcJzxcJywgXCc8PVwnLCBcJz49XCcsXG4gIFwnPlwnKWBgIHJhaXNlIGBgVHlwZUVycm9yYGAuXG5cbiogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kXG4gIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICh0aGVcbiAgdHdvIHNldHMgYGB7MSwyfWBgIGFuZCB7MiwzfSBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZy5cbiAgRm9yIGV4YW1wbGUsIGBgbWluKClgYCwgYGBtYXgoKWBgLCBhbmQgYGBzb3J0ZWQoKWBgIHByb2R1Y2VcbiAgdW5kZWZpbmVkIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuXG4qIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXkgYXJlXG4gIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgY29uc2lkZXJlZCBzbWFsbGVyXG4gIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0IGNvbnNpc3RlbnRseVxuICB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXJcbm9mIHRoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdFxubnVtZXJpYyB0eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlciwgYnV0IGNvbXBhcmlzb25zIG9mXG5gYGZsb2F0YGAgYW5kIGBgRGVjaW1hbGBgIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGF2b2lkIHRoZSBpbmV2aXRhYmxlXG5jb25mdXNpb24gYXJpc2luZyBmcm9tIHJlcHJlc2VudGF0aW9uIGlzc3VlcyBzdWNoIGFzIGBgZmxvYXQoXCcxLjFcJylgYFxuYmVpbmcgaW5leGFjdGx5IHJlcHJlc2VudGVkIGFuZCB0aGVyZWZvcmUgbm90IGV4YWN0bHkgZXF1YWwgdG9cbmBgRGVjaW1hbChcJzEuMVwnKWBgIHdoaWNoIGlzLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gaXMgbm90XG5zdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIFRoaXMgY2FuXG5jcmVhdGUgdGhlIGlsbHVzaW9uIG9mIG5vbi10cmFuc2l0aXZpdHkgYmV0d2VlbiBzdXBwb3J0ZWQgY3Jvc3MtdHlwZVxuY29tcGFyaXNvbnMgYW5kIHVuc3VwcG9ydGVkIGNvbXBhcmlzb25zLiAgRm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgyKSA9PVxuMmBgIGFuZCBgYDIgPT0gZmxvYXQoMilgYCBidXQgYGBEZWNpbWFsKDIpICE9IGZsb2F0KDIpYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIHRlc3QgZm9yIG1lbWJlcnNoaXAuICBgYHggaW4gc2BgXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgYGB4XG5ub3QgaW4gc2BgIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIGBgeCBpbiBzYGAuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCBgYGluYGBcbnRlc3RzIHdoZXRoZXIgYSB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXNcbnN1Y2ggYXMgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uIGBgeCBpbiB5YGAgaXMgZXF1aXZhbGVudCB0byBgYGFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KWBgLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCpcbmlzIGEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyBgYHkuZmluZCh4KSAhPSAtMWBgLlxuRW1wdHkgc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyXG5zdHJpbmcsIHNvIGBgIiIgaW4gImFiYyJgYCB3aWxsIHJldHVybiBgYFRydWVgYC5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCxcbmBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBgYHkuX19jb250YWluc19fKHgpYGAgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgIGJ1dCBkb1xuZGVmaW5lIGBgX19pdGVyX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgc29tZSB2YWx1ZSBgYHpgYCB3aXRoIGBgeFxuPT0gemBgIGlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGBgeWBgLiAgSWYgYW4gZXhjZXB0aW9uIGlzXG5yYWlzZWQgZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuYGBfX2dldGl0ZW1fXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCBgYHggPT0geVtpXWBgLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlIGBgSW5kZXhFcnJvcmBgIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgYGBub3QgaW5gYCBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuYGBpbmBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaXNgYCBhbmQgYGBpcyBub3RgYCB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6IGBgeCBpc1xueWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIGBgeCBpc1xubm90IHlgYCB5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiAnXG5Db21wb3VuZCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5IGFmZmVjdFxub3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICBJblxuZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiBzaW1wbGVcbmluY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSBsaW5lLlxuXG5UaGUgYGBpZmBgLCBgYHdoaWxlYGAgYW5kIGBgZm9yYGAgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWxcbmNvbnRyb2wgZmxvdyBjb25zdHJ1Y3RzLiAgYGB0cnlgYCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vclxuY2xlYW51cCBjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYVxuYmxvY2sgb2YgY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5XG5jb21wb3VuZCBzdGF0ZW1lbnRzLlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnNpc3Qgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCBjb21wb3VuZFxuc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG5cJ3QgYmVcbmNsZWFyIHRvIHdoaWNoIGBgaWZgYCBjbGF1c2UgYSBmb2xsb3dpbmcgYGBlbHNlYGAgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbmBgcHJpbnQoKWBgIGNhbGxzIGFyZSBleGVjdXRlZDpcblxuICAgaWYgeCA8IHkgPCB6OiBwcmludCh4KTsgcHJpbnQoeSk7IHByaW50KHopXG5cblN1bW1hcml6aW5nOlxuXG4gICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWZcbiAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbiAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgc3RhdGVtZW50KyBERURFTlRcbiAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG5cbk5vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSBgYE5FV0xJTkVgYCBwb3NzaWJseSBmb2xsb3dlZCBieVxuYSBgYERFREVOVGBgLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzXG5iZWdpbiB3aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyBgYGVsc2VgYFwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiBieVxucmVxdWlyaW5nIG5lc3RlZCBgYGlmYGAgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cblxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzXG5leGVjdXRlZCBhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuZ29lcyBiYWNrIHRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhXG5zZXF1ZW5jZSAoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbmBgZXhwcmVzc2lvbl9saXN0YGAuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIG9mIGFzY2VuZGluZyBpbmRpY2VzLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSBgYFN0b3BJdGVyYXRpb25gYFxuZXhjZXB0aW9uKSwgdGhlIHN1aXRlIGluIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlIGBgZWxzZWBgIGNsYXVzZSBpZiB0aGVyZSB3YXNcbm5vIG5leHQgaXRlbS5cblxuVGhlIHN1aXRlIG1heSBhc3NpZ24gdG8gdGhlIHZhcmlhYmxlKHMpIGluIHRoZSB0YXJnZXQgbGlzdDsgdGhpcyBkb2VzXG5ub3QgYWZmZWN0IHRoZSBuZXh0IGl0ZW0gYXNzaWduZWQgdG8gaXQuXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIGl0IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdCBhbGxcbmJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgcmFuZ2UoKWBgIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgYGBmb3JcbmkgOj0gYSB0byBiIGRvYGA7IGUuZy4sIGBgbGlzdChyYW5nZSgzKSlgYCByZXR1cm5zIHRoZSBsaXN0IGBgWzAsIDEsXG4yXWBgLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBsb29wXG4gICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcblxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kXG5vZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHJhaXNlcyBhbm90aGVyXG5leGNlcHRpb24gb3IgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gIFRoZSBleGNlcHRpb25cbmluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGVcbmBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgYGBvYmplY3RgYDsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoIGBgc2VsZi5uYW1lID0gdmFsdWVgYC4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uXG4iYGBzZWxmLm5hbWVgYCIsIGFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGVcbndpdGggdGhlIHNhbWUgbmFtZSB3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmVcbnVzZWQgYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlc1xudGhlcmUgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0b1xuY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC0gQ2xhc3NcbiAgIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzIHRoZXJlXG4gICAgaXMgYSBgYGZpbmFsbHlgYCBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyIGV4Y2VwdGlvbi5cbiAgICBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYW5cbiAgICBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGBgcmV0dXJuYGAsIGBgY29udGludWVgYCwgb3JcbiAgICBgYGJyZWFrYGAgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzIGBgX19kb2NfX2BgIGF0dHJpYnV0ZSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyBgYF9fZG9jX19gYCBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAorICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCBpdCBpc1xucmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgXG5jbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgc2V0IGFzIHRoZVxuY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbjsgaWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBleGVjdXRlcyBhXG5gYHJldHVybmBgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uXG5gYHRyeWBgLi4uYGBleGNlcHRgYC4uLmBgZmluYWxseWBgIHVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZFxuZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGBgd2l0aF9pdGVtYGApXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19lbnRlcl9fKClgYCBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gYGBfX2VudGVyX18oKWBgIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgYGB3aXRoYGAgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgYGBfX2VudGVyX18oKWBgXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gYGBfX2V4aXRfXygpYGAgd2lsbCBhbHdheXNcbiAgICAgYmUgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGBgX19leGl0X18oKWBgLiBPdGhlcndpc2UsXG4gICB0aHJlZSBgYE5vbmVgYCBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgYGBfX2V4aXRfXygpYGAgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgcmVyYWlzZWQuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICBzdXBwcmVzc2VkLCBhbmQgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nXG4gICB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSBgYF9fZXhpdF9fKClgYCBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgYGB3aXRoYGAgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSpcbiAgICAgICAgICAgICAgICAgICAgICBbLCAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgcGFyYW1ldGVycyBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCiAgJ2NvbnRleHQtbWFuYWdlcnMnOiAnXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAogICdjb250aW51ZSc6ICdcblRoZSBgYGNvbnRpbnVlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbmBgY29udGludWVgYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGBgZm9yYGAgb3JcbmBgd2hpbGVgYCBsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3JcbmBgZmluYWxseWBgIGNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGVcbm9mIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuIGBgY29udGludWVgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCiAgJ2NvbnZlcnNpb25zJzogJ1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIHRoYXQgd2F5OlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZSBvdGhlclxuICBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBsZWZ0XG5hcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAotICdjdXN0b21pemF0aW9uJzogJ1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgYGBfX25ld19fKClgYCBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiBgYF9fbmV3X18oKWBgIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseVxuICAgYW4gaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCB1c2luZ1xuICAgYGBzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKWBgIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICBgYF9faW5pdF9fKHNlbGZbLCAuLi5dKWBgLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgLlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgYGBfX25ld19fKClgYCBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZC4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICBgYF9faW5pdF9fKClgYCBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCxcbiAgIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZlxuICAgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgYGBCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKWBgLiAgQXMgYSBzcGVjaWFsIGNvbnN0cmFpbnRcbiAgIG9uIGNvbnN0cnVjdG9ycywgbm8gdmFsdWUgbWF5IGJlIHJldHVybmVkOyBkb2luZyBzbyB3aWxsIGNhdXNlIGFcbiAgIGBgVHlwZUVycm9yYGAgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgYGBfX2RlbF9fKClgYCBtZXRob2QsXG4gICB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9fZGVsX18oKWBgIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHlcbiAgIGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZVxuICAgaW5zdGFuY2UuICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3JcbiAgIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogYGBkZWwgeGBgIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgYGB4Ll9fZGVsX18oKWBgIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYGB4YGAgYnkgb25lLCBhbmQgdGhlIGxhdHRlclxuICAgICBpcyBvbmx5IGNhbGxlZCB3aGVuIGBgeGBgXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lXG4gICAgIGNvbW1vbiBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhblxuICAgICBvYmplY3QgZnJvbSBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlblxuICAgICBvYmplY3RzIChlLmcuLCBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aFxuICAgICBwYXJlbnQgYW5kIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGVcbiAgICAgc3RhY2sgZnJhbWUgb2YgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2tcbiAgICAgc3RvcmVkIGluIGBgc3lzLmV4Y19pbmZvKClbMl1gYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvclxuICAgICBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhblxuICAgICB1bmhhbmRsZWQgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nIGBgTm9uZWBgIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuIENpcmN1bGFyIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlXG4gICAgIGRldGVjdGVkIHdoZW4gdGhlIG9wdGlvbiBjeWNsZSBkZXRlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieVxuICAgICBkZWZhdWx0KSwgYnV0IGNhbiBvbmx5IGJlIGNsZWFuZWQgdXAgaWYgdGhlcmUgYXJlIG5vIFB5dGhvbi1cbiAgICAgbGV2ZWwgYGBfX2RlbF9fKClgYCBtZXRob2RzIGludm9sdmVkLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvblxuICAgICBmb3IgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgaGFuZGxlZCBieSB0aGUgY3ljbGUgZGV0ZWN0b3IsXG4gICAgIHBhcnRpY3VsYXJseSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZ2FyYmFnZWBgIHZhbHVlLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uXG4gICAgIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gYGBzeXMuc3RkZXJyYGAgaW5zdGVhZC5cbiAgICAgQWxzbywgd2hlbiBgYF9fZGVsX18oKWBgIGlzIGludm9rZWQgaW4gcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmdcbiAgICAgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0gaXMgZG9uZSksIG90aGVyXG4gICAgIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZVxuICAgICBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgdG9ybiBkb3duIChlLmcuIHRoZVxuICAgICBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXMgcmVhc29uLCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZCB0byBtYWludGFpblxuICAgICBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSwgUHl0aG9uXG4gICAgIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHJlcHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlXG4gICAib2ZmaWNpYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsXG4gICB0aGlzIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWRcbiAgIHRvIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICBgYDwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj5gYCBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgYGBfX3JlcHJfXygpYGBcbiAgIGJ1dCBub3QgYGBfX3N0cl9fKClgYCwgdGhlbiBgYF9fcmVwcl9fKClgYCBpcyBhbHNvIHVzZWQgd2hlbiBhblxuICAgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXNcbiAgIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBzdHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBieSB0aGUgYGBwcmludCgpYGBcbiAgIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuICBUaGlzIGRpZmZlcnMgZnJvbSBgYF9fcmVwcl9fKClgYCBpbiB0aGF0IGl0IGRvZXMgbm90IGhhdmVcbiAgIHRvIGJlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2VcbiAgIHJlcHJlc2VudGF0aW9uIG1heSBiZSB1c2VkIGluc3RlYWQuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhXG4gICBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgZm9ybWF0KClgYCBtZXRob2Qgb2YgY2xhc3MgYGBzdHJgYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzXG4gICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXBcbiAgIHRvIHRoZSB0eXBlIGltcGxlbWVudGluZyBgYF9fZm9ybWF0X18oKWBgLCBob3dldmVyIG1vc3QgY2xhc3Nlc1xuICAgd2lsbCBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvclxuICAgdXNlIGEgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiBgYHg8eWBgIGNhbGxzIGBgeC5fX2x0X18oeSlgYCwgYGB4PD15YGAgY2FsbHNcbiAgIGBgeC5fX2xlX18oeSlgYCwgYGB4PT15YGAgY2FsbHMgYGB4Ll9fZXFfXyh5KWBgLCBgYHghPXlgYCBjYWxsc1xuICAgYGB4Ll9fbmVfXyh5KWBgLCBgYHg+eWBgIGNhbGxzIGBgeC5fX2d0X18oeSlgYCwgYW5kIGBgeD49eWBgIGNhbGxzXG4gICBgYHguX19nZV9fKHkpYGAuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b25cbiAgIGBgTm90SW1wbGVtZW50ZWRgYCBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYVxuICAgZ2l2ZW4gcGFpciBvZiBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAgYXJlXG4gICByZXR1cm5lZCBmb3IgYSBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuXG4gICByZXR1cm4gYW55IHZhbHVlLCBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGFcbiAgIEJvb2xlYW4gY29udGV4dCAoZS5nLiwgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiBgYGlmYGAgc3RhdGVtZW50KSxcbiAgIFB5dGhvbiB3aWxsIGNhbGwgYGBib29sKClgYCBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRcbiAgIGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mIGBgeD09eWBgIGRvZXMgbm90IGltcGx5IHRoYXQgYGB4IT15YGAgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyBgYF9fZXFfXygpYGAsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgIGBgX19uZV9fKClgYCBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBTZWVcbiAgIHRoZSBwYXJhZ3JhcGggb24gYGBfX2hhc2hfXygpYGAgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsIGBgX19sdF9fKClgYCBhbmQgYGBfX2d0X18oKWBgIGFyZSBlYWNoXG4gICBvdGhlclwncyByZWZsZWN0aW9uLCBgYF9fbGVfXygpYGAgYW5kIGBgX19nZV9fKClgYCBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgYW5kIGBgX19lcV9fKClgYCBhbmQgYGBfX25lX18oKWBgIGFyZSB0aGVpciBvd25cbiAgIHJlZmxlY3Rpb24uXG5cbiAgIEFyZ3VtZW50cyB0byByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBhcmUgbmV2ZXIgY29lcmNlZC5cblxuICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdFxuICAgb3BlcmF0aW9uLCBzZWUgYGBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKWBgLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIGBgaGFzaCgpYGAgYW5kIGZvciBvcGVyYXRpb25zIG9uXG4gICBtZW1iZXJzIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgYGBzZXRgYCwgYGBmcm96ZW5zZXRgYCwgYW5kXG4gICBgYGRpY3RgYC4gIGBgX19oYXNoX18oKWBgIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5XG4gICByZXF1aXJlZCBwcm9wZXJ0eSBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lXG4gICBoYXNoIHZhbHVlOyBpdCBpcyBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nXG4gICBleGNsdXNpdmUgb3IpIHRoZSBoYXNoIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0XG4gICBhbHNvIHBsYXkgYSBwYXJ0IGluIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSBgYF9faGFzaF9fKClgYCBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzXG4gICBgYF9fZXFfXygpYGAgYnV0IG5vdCBgYF9faGFzaF9fKClgYCwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZVxuICAgdXNhYmxlIGFzIGl0ZW1zIGluIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBtdXRhYmxlIG9iamVjdHMgYW5kIGltcGxlbWVudHMgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCwgaXQgc2hvdWxkXG4gICBub3QgaW1wbGVtZW50IGBgX19oYXNoX18oKWBgLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGVcbiAgIGNvbGxlY3Rpb25zIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZVxuICAgb2JqZWN0XCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlIGBgX19lcV9fKClgYCBhbmQgYGBfX2hhc2hfXygpYGAgbWV0aG9kc1xuICAgYnkgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGBgaWQoeClgYC5cblxuICAgQ2xhc3NlcyB3aGljaCBpbmhlcml0IGEgYGBfX2hhc2hfXygpYGAgbWV0aG9kIGZyb20gYSBwYXJlbnQgY2xhc3NcbiAgIGJ1dCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgYGBfX2VxX18oKWBgIHN1Y2ggdGhhdCB0aGUgaGFzaCB2YWx1ZVxuICAgcmV0dXJuZWQgaXMgbm8gbG9uZ2VyIGFwcHJvcHJpYXRlIChlLmcuIGJ5IHN3aXRjaGluZyB0byBhIHZhbHVlLVxuICAgYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGlkZW50aXR5IGJhc2VkXG4gICBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nIHVuaGFzaGFibGUgYnlcbiAgIHNldHRpbmcgYGBfX2hhc2hfXyA9IE5vbmVgYCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4gRG9pbmcgc28gbWVhbnNcbiAgIHRoYXQgbm90IG9ubHkgd2lsbCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHJhaXNlIGFuIGFwcHJvcHJpYXRlXG4gICBgYFR5cGVFcnJvcmBgIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsXG4gICBidXQgdGhleSB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuXG4gICBjaGVja2luZyBgYGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSlgYCAodW5saWtlIGNsYXNzZXNcbiAgIHdoaWNoIGRlZmluZSB0aGVpciBvd24gYGBfX2hhc2hfXygpYGAgdG8gZXhwbGljaXRseSByYWlzZVxuICAgYGBUeXBlRXJyb3JgYCkuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIGBgX19oYXNoX18oKWBgIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZVxuICAgaW50ZXJwcmV0ZXIgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nIGBgX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfX2BgLiBPdGhlcndpc2UgdGhlIGluaGVyaXRhbmNlIG9mXG4gICBgYF9faGFzaF9fKClgYCB3aWxsIGJlIGJsb2NrZWQsIGp1c3QgYXMgaWYgYGBfX2hhc2hfX2BgIGhhZCBiZWVuXG4gICBleHBsaWNpdGx5IHNldCB0byBgYE5vbmVgYC5cblxuICAgU2VlIGFsc28gdGhlICotUiogY29tbWFuZC1saW5lIG9wdGlvbi5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCi0gJ2RlYnVnZ2VyJzogJ1xuYGBwZGJgYCAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgbW9kdWxlIGBgcGRiYGAgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuYGBQZGJgYC4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieVxucmVhZGluZyB0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyBgYGJkYmBgXG5hbmQgYGBjbWRgYC5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyBgYChQZGIpYGAuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbVxudW5kZXIgY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5gYHBkYi5weWBgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy5cbkZvciBleGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6IGBgcGRiLnB5YGAgbm93IGFjY2VwdHMgYSBgYC1jYGAgb3B0aW9uIHRoYXRcbmV4ZWN1dGVzIGNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgYGAucGRicmNgYCBmaWxlLCBzZWUgKkRlYnVnZ2VyXG5Db21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlIGBgY29udGludWVgYCBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSBgYGNvbnRpbnVlYGAsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nIGBgc3RlcGBgIG9yIGBgbmV4dGBgIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSBgYF9fbWFpbl9fYGAgaXMgdXNlZC4gIChTZWVcbiAgIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBvciBgYGV2YWwoKWBgXG4gICBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gYGBydW5ldmFsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICBgYHJ1bigpYGAuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gYGBydW5jYWxsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cblRoZSBgYHJ1bipgYCBmdW5jdGlvbnMgYW5kIGBgc2V0X3RyYWNlKClgYCBhcmUgYWxpYXNlcyBmb3Jcbmluc3RhbnRpYXRpbmcgdGhlIGBgUGRiYGAgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZVxubmFtZS4gIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzXG55b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgYGBQZGJgYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgYGBjbWQuQ21kYGAgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgIGBgY29udGludWVgYCBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG5gYGgoZWxwKWBgIG1lYW5zIHRoYXQgZWl0aGVyIGBgaGBgIG9yIGBgaGVscGBgIGNhbiBiZSB1c2VkIHRvIGVudGVyXG50aGUgaGVscCBjb21tYW5kIChidXQgbm90IGBgaGVgYCBvciBgYGhlbGBgLCBub3IgYGBIYGAgb3IgYGBIZWxwYGAgb3JcbmBgSEVMUGBgKS4gIEFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlXG4oc3BhY2VzIG9yIHRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHNcbihgYFtdYGApIGluIHRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKGBgfGBgKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSBgYGxpc3RgYCBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKGBgIWBgKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnlcbmBgOztgYC4gIChBIHNpbmdsZSBgYDtgYCBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvclxubXVsdGlwbGUgY29tbWFuZHMgaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vXG5pbnRlbGxpZ2VuY2UgaXMgYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0XG5hdCB0aGUgZmlyc3QgYGA7O2BgIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZFxuc3RyaW5nLlxuXG5JZiBhIGZpbGUgYGAucGRicmNgYCBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogYGAucGRicmNgYCBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzIGBgY29udGludWVgYCBvciBgYG5leHRgYC4gIFByZXZpb3VzbHksXG50aGVzZSBjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gIGBgaGVscCBwZGJgYFxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgYGBwZGJgYFxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLFxuICAgYGBoZWxwIGV4ZWNgYCBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlIGBgIWBgIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gYGBzeXMucGF0aGBgLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIGBgYnJlYWtgYC5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0IGBgZW5kYGAgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcHJpbnQgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggYGBlbmRgYDsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgYG5leHRgYCBhbmRcbiAgIGBgc3RlcGBgIGlzIHRoYXQgYGBzdGVwYGAgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZVxuICAgYGBuZXh0YGAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5XG4gICBzdG9wcGluZyBhdCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSBgYGZvcmBgIGxvb3Agb3Igb3V0XG4gICBvZiBhIGBgZmluYWxseWBgIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCBgYC5gYCBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS5cbiAgIFdpdGggb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgYGAtPmBgLiAgSWZcbiAgIGFuIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5IGBgPj5gYCwgaWYgaXRcbiAgIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSBgYD4+YGAgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yIGBgbGlzdGBgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucChyaW50KSBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSBgYHByaW50YGAgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgcHJldHR5LXByaW50ZWQgdXNpbmcgdGhlIGBgcHByaW50YGAgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSBgYGNvZGVgYCBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSBgYCUxYGAsIGBgJTJgYCwgYW5kIHNvIG9uLCB3aGlsZSBgYCUqYGAgaXMgcmVwbGFjZWQgYnlcbiAgIGFsbCB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSBgYC5wZGJyY2BgIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggYGBzaGxleGBgIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgYGBzeXMuYXJndmBgLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9uc1xuICAgYXJlIHByZXNlcnZlZC4gYGByZXN0YXJ0YGAgaXMgYW4gYWxpYXMgZm9yIGBgcnVuYGAuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZSBpc1xuICAgIGRldGVybWluZWQgYnkgdGhlIGBgX19uYW1lX19gYCBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6ICdcblRoZSBgYGRlbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgYGBnbG9iYWxgYFxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG5gYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMi5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG5gYHBkYmBgIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBtb2R1bGUgYGBwZGJgYCBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG5gYFBkYmBgLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5XG5yZWFkaW5nIHRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzIGBgYmRiYGBcbmFuZCBgYGNtZGBgLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzIGBgKFBkYilgYC4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtXG51bmRlciBjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgYGByZWFkbGluZWBgIG1vZHVsZSBpc1xuYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsXG5hbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC5cblxuYGBwZGIucHlgYCBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuXG5Gb3IgZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiBgYHBkYi5weWBgIG5vdyBhY2NlcHRzIGEgYGAtY2BgIG9wdGlvbiB0aGF0XG5leGVjdXRlcyBjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhIGBgLnBkYnJjYGAgZmlsZSwgc2VlICpEZWJ1Z2dlclxuQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSBgYGNvbnRpbnVlYGAgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgYGBjb250aW51ZWBgLCBvciB5b3UgY2FuXG4gICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyBgYHN0ZXBgYCBvciBgYG5leHRgYCAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgYGBfX21haW5fX2BgIGlzIHVzZWQuICAoU2VlXG4gICB0aGUgZXhwbGFuYXRpb24gb2YgdGhlIGJ1aWx0LWluIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYFxuICAgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuIGBgcnVuZXZhbCgpYGAgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgYGBydW4oKWBgLlxuXG5wZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcblxuICAgQ2FsbCB0aGUgKmZ1bmN0aW9uKiAoYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LCBub3QgYSBzdHJpbmcpXG4gICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuIGBgcnVuY2FsbCgpYGAgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG5UaGUgYGBydW4qYGAgZnVuY3Rpb25zIGFuZCBgYHNldF90cmFjZSgpYGAgYXJlIGFsaWFzZXMgZm9yXG5pbnN0YW50aWF0aW5nIHRoZSBgYFBkYmBgIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWVcbm5hbWUuICBJZiB5b3Ugd2FudCB0byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpc1xueW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgIGBgUGRiYGAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nIGBgY21kLkNtZGBgIGNsYXNzOyBzZWUgdGhlIGRlc2NyaXB0aW9uIHRoZXJlLlxuXG4gICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBnbG9iLXN0eWxlXG4gICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzIHRoYXRcbiAgIG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLiBbMV1cblxuICAgQnkgZGVmYXVsdCwgUGRiIHNldHMgYSBoYW5kbGVyIGZvciB0aGUgU0lHSU5UIHNpZ25hbCAod2hpY2ggaXMgc2VudFxuICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEN0cmwtQyBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICBgYGNvbnRpbnVlYGAgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlRcbiAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuYGBoKGVscClgYCBtZWFucyB0aGF0IGVpdGhlciBgYGhgYCBvciBgYGhlbHBgYCBjYW4gYmUgdXNlZCB0byBlbnRlclxudGhlIGhlbHAgY29tbWFuZCAoYnV0IG5vdCBgYGhlYGAgb3IgYGBoZWxgYCwgbm9yIGBgSGBgIG9yIGBgSGVscGBgIG9yXG5gYEhFTFBgYCkuICBBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZVxuKHNwYWNlcyBvciB0YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzXG4oYGBbXWBgKSBpbiB0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG5BbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCBiYXJcbihgYHxgYCkuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgYGBsaXN0YGAgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlIGxpc3RlZC5cblxuQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc25cJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvblxuc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gZXhjbGFtYXRpb25cbnBvaW50IChgYCFgYCkuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSBmdW5jdGlvbi5cbldoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgaXNcbnByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlclwncyBzdGF0ZSBpcyBub3QgY2hhbmdlZC5cblxuVGhlIGRlYnVnZ2VyIHN1cHBvcnRzICphbGlhc2VzKi4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyB3aGljaFxuYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0IHVuZGVyXG5leGFtaW5hdGlvbi5cblxuTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5XG5gYDs7YGAuICAoQSBzaW5nbGUgYGA7YGAgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3Jcbm11bHRpcGxlIGNvbW1hbmRzIGluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBOb1xuaW50ZWxsaWdlbmNlIGlzIGFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdFxuYXQgdGhlIGZpcnN0IGBgOztgYCBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWRcbnN0cmluZy5cblxuSWYgYSBmaWxlIGBgLnBkYnJjYGAgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluIHRoZVxuY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkXG5hdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWZcbmJvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kXG5hbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IGBgLnBkYnJjYGAgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzIHRoYXRcbmNvbnRpbnVlIGRlYnVnZ2luZywgc3VjaCBhcyBgYGNvbnRpbnVlYGAgb3IgYGBuZXh0YGAuICBQcmV2aW91c2x5LFxudGhlc2UgY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cblxuaChlbHApIFtjb21tYW5kXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoIGFcbiAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICBgYGhlbHAgcGRiYGBcbiAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlIGBgcGRiYGBcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllcixcbiAgIGBgaGVscCBleGVjYGAgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSBgYCFgYCBjb21tYW5kLlxuXG53KGhlcmUpXG5cbiAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSBib3R0b20uICBBblxuICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb250ZXh0IG9mXG4gICBtb3N0IGNvbW1hbmRzLlxuXG5kKG93bikgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiB0aGVcbiAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cblxudShwKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgc3RhY2tcbiAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG5cbmIocmVhaykgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50IGZpbGUuXG4gICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0IGV4ZWN1dGFibGVcbiAgIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUgcHJlZml4ZWRcbiAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gYW5vdGhlclxuICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzblwndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgaXNcbiAgIHNlYXJjaGVkIG9uIGBgc3lzLnBhdGhgYC4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBgYGJyZWFrYGAuXG5cbmNsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgYXRcbiAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXJcbiAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgZmlyc3RcbiAgIGFzayBjb25maXJtYXRpb24pLlxuXG5kaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgY2F1c2VcbiAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgYnJlYWtwb2ludCwgaXRcbiAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG5cbmVuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuXG5pZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuXG4gICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgY291bnQgaXNcbiAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyBhY3RpdmVcbiAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4gICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlxuXG5jb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cblxuICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgKmNvbmRpdGlvbipcbiAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuXG5jb21tYW5kcyBbYnBudW1iZXJdXG5cbiAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgVGhlXG4gICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhIGxpbmVcbiAgIGNvbnRhaW5pbmcganVzdCBgYGVuZGBgIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuIGV4YW1wbGU6XG5cbiAgICAgIChQZGIpIGNvbW1hbmRzIDFcbiAgICAgIChjb20pIHByaW50IHNvbWVfdmFyaWFibGVcbiAgICAgIChjb20pIGVuZFxuICAgICAgKFBkYilcblxuICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgZm9sbG93XG4gICBpdCBpbW1lZGlhdGVseSB3aXRoIGBgZW5kYGA7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuXG5cbiAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0IGJyZWFrcG9pbnRcbiAgIHNldC5cblxuICAgWW91IGNhbiB1c2UgYnJlYWtwb2ludCBjb21tYW5kcyB0byBzdGFydCB5b3VyIHByb2dyYW0gdXAgYWdhaW4uXG4gICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgY29tbWFuZCB0aGF0XG4gICByZXN1bWVzIGV4ZWN1dGlvbi5cblxuICAgU3BlY2lmeWluZyBhbnkgY29tbWFuZCByZXN1bWluZyBleGVjdXRpb24gKGN1cnJlbnRseSBjb250aW51ZSxcbiAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgdGVybWluYXRlc1xuICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieVxuICAgZW5kKS4gVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdSByZXN1bWUgZXhlY3V0aW9uIChldmVuIHdpdGggYVxuICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgYnJlYWtwb2ludC0td2hpY2hcbiAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2hcbiAgIGxpc3QgdG8gZXhlY3V0ZS5cblxuICAgSWYgeW91IHVzZSB0aGUgXCdzaWxlbnRcJyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSB1c3VhbFxuICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzIG1heSBiZVxuICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljIG1lc3NhZ2UgYW5kXG4gICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsIHlvdVxuICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cblxucyh0ZXApXG5cbiAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgb2NjYXNpb25cbiAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluIHRoZVxuICAgY3VycmVudCBmdW5jdGlvbikuXG5cbm4oZXh0KVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpc1xuICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGBuZXh0YGAgYW5kXG4gICBgYHN0ZXBgYCBpcyB0aGF0IGBgc3RlcGBgIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGVcbiAgIGBgbmV4dGBgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seVxuICAgc3RvcHBpbmcgYXQgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgYGBmb3JgYCBsb29wIG9yIG91dFxuICAgb2YgYSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbmwoaXN0KSBbZmlyc3RbLCBsYXN0XV1cblxuICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCBsaXN0IDExXG4gICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgbGlzdGluZy5cbiAgIFdpdGggYGAuYGAgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuXG4gICBXaXRoIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbiAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbGVzc1xuICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG5cbiAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5IGBgLT5gYC4gIElmXG4gICBhbiBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzXG4gICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSBgYD4+YGAsIGlmIGl0XG4gICBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgYGA+PmBgIG1hcmtlci5cblxubGwgfCBsb25nbGlzdFxuXG4gICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4gICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciBgYGxpc3RgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hKHJncylcblxuICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG5cbnAocmludCkgZXhwcmVzc2lvblxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50IGl0c1xuICAgdmFsdWUuXG5cbnBwIGV4cHJlc3Npb25cblxuICAgTGlrZSB0aGUgYGBwcmludGBgIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXNcbiAgIHByZXR0eS1wcmludGVkIHVzaW5nIHRoZSBgYHBwcmludGBgIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgYGBjb2RlYGAgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgYGAlMWBgLCBgYCUyYGAsIGFuZCBzbyBvbiwgd2hpbGUgYGAlKmBgIGlzIHJlcGxhY2VkIGJ5XG4gICBhbGwgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgYGAucGRicmNgYCBmaWxlKTpcblxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKVxuICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiBwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzIGluIHNlbGZcbiAgICAgIGFsaWFzIHBzIHBpIHNlbGZcblxudW5hbGlhcyBuYW1lXG5cbiAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuXG4hIHN0YXRlbWVudFxuXG4gICBFeGVjdXRlIHRoZSAob25lLWxpbmUpICpzdGF0ZW1lbnQqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50XG4gICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0IGFcbiAgIGdsb2JhbCB2YXJpYWJsZSwgeW91IGNhbiBwcmVmaXggdGhlIGFzc2lnbm1lbnQgY29tbWFuZCB3aXRoIGFcbiAgIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoIGBgc2hsZXhgYCBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgIGBgc3lzLmFyZ3ZgYC4gSGlzdG9yeSwgYnJlYWtwb2ludHMsIGFjdGlvbnMgYW5kIGRlYnVnZ2VyIG9wdGlvbnNcbiAgIGFyZSBwcmVzZXJ2ZWQuIGBgcmVzdGFydGBgIGlzIGFuIGFsaWFzIGZvciBgYHJ1bmBgLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGUgaXNcbiAgICBkZXRlcm1pbmVkIGJ5IHRoZSBgYF9fbmFtZV9fYGAgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG5UaGUgYGBkZWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcblxuRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50IGlzXG5kZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG5oaW50cy5cblxuRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbnRvIHJpZ2h0LlxuXG5EZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgb3Jcbmdsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhIGBgZ2xvYmFsYGBcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuYGBOYW1lRXJyb3JgYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKICAnZGljdCc6ICdcbkRpY3Rpb25hcnkgZGlzcGxheXNcbioqKioqKioqKioqKioqKioqKipcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG5lbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG5cbiAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gIn0iXG4gICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4gICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb25cbiAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG5cbklmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSBkaWN0aW9uYXJ5OlxuZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbmNvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxubXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnlcJ3MgdmFsdWVcbmZvciB0aGF0IGtleSB3aWxsIGJlIHRoZSBsYXN0IG9uZSBnaXZlbi5cblxuQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbm5lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSByZXN1bHRpbmdcbmtleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgb3JkZXJcbnRoZXkgYXJlIHByb2R1Y2VkLlxuXG5SZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Ki4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG5yaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAogICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyB1c2VkIGluIGFcbmZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYSBuZXN0ZWQgYmxvY2sgd2l0aCBmcmVlXG52YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGEgYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgYGBldmFsKClgYCBhbmQgYGBleGVjKClgYCBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSBgYGV4ZWMoKWBgIGFuZCBgYGV2YWwoKWBgIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAogICdlbHNlJzogJ1xuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCkBAIC0zMywxNCArMzQsMTQgQEAKICAnZXhwcmxpc3RzJzogJ1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuXG5BbiBleHByZXNzaW9uIGxpc3QgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGVcbmxlbmd0aCBvZiB0aGUgdHVwbGUgaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZVxuZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cblRoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAoYS5rLmEuIGFcbipzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgZXhwcmVzc2lvblxud2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuXCd0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyIHlpZWxkcyB0aGVcbnZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuIGVtcHR5IHBhaXJcbm9mIHBhcmVudGhlc2VzOiBgYCgpYGAuKVxuJywKICAnZmxvYXRpbmcnOiAnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCBgYDA3N2UwMTBgYCBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWVcbm51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGBcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGVcbmxpdGVyYWwgYGAxYGAuXG4nLAogICdmb3InOiAnXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKLSAnZm9ybWF0c3RyaW5ncyc6ICdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBzdHIuZm9ybWF0KClgYCBtZXRob2QgYW5kIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiBgYEZvcm1hdHRlcmBgLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbmBge31gYC4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuYGB7e2BgIGFuZCBgYH19YGAuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgXCchXCdgYCwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2hcbmlzIHByZWNlZGVkIGJ5IGEgY29sb24gYGBcJzpcJ2BgLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdFxuZm9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzIGBgXCcxMFwnYGAgb3JcbmBgXCc6LV1cJ2BgKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnlcbmFueSBudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZVxuZm9ybSBgYFwnLm5hbWVcJ2BgIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyBgYGdldGF0dHIoKWBgLFxud2hpbGUgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYFwnW2luZGV4XVwnYGAgZG9lcyBhbiBpbmRleCBsb29rdXBcbnVzaW5nIGBgX19nZXRpdGVtX18oKWBgLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gYGBcJ3t9IHt9XCdgYCBpcyBlcXVpdmFsZW50IHRvIGBgXCd7MH0gezF9XCdgYC5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlXG5gYF9fZm9ybWF0X18oKWBgIG1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlc1xuaXQgaXMgZGVzaXJhYmxlIHRvIGZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsXG5vdmVycmlkaW5nIGl0cyBvd24gZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWVcbnRvIGEgc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGBgX19mb3JtYXRfXygpYGAsIHRoZSBub3JtYWwgZm9ybWF0dGluZ1xubG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBgXCchc1wnYGAgd2hpY2ggY2FsbHNcbmBgc3RyKClgYCBvbiB0aGUgdmFsdWUsIGBgXCchclwnYGAgd2hpY2ggY2FsbHMgYGByZXByKClgYCBhbmQgYGBcJyFhXCdgYFxud2hpY2ggY2FsbHMgYGBhc2NpaSgpYGAuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiBgYGZvcm1hdCgpYGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nIChgYCIiYGApIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZS4gQSBub24tXG5lbXB0eSBmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ31cJz5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5UaGUgKmZpbGwqIGNoYXJhY3RlciBjYW4gYmUgYW55IGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnLiAgVGhlXG5wcmVzZW5jZSBvZiBhIGZpbGwgY2hhcmFjdGVyIGlzIHNpZ25hbGVkIGJ5IHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nXG5pdCwgd2hpY2ggbXVzdCBiZSBvbmUgb2YgdGhlIGFsaWdubWVudCBvcHRpb25zLiAgSWYgdGhlIHNlY29uZFxuY2hhcmFjdGVyIG9mICpmb3JtYXRfc3BlYyogaXMgbm90IGEgdmFsaWQgYWxpZ25tZW50IG9wdGlvbiwgdGhlbiBpdCBpc1xuYXNzdW1lZCB0aGF0IGJvdGggdGhlIGZpbGwgY2hhcmFjdGVyIGFuZCB0aGUgYWxpZ25tZW50IG9wdGlvbiBhcmVcbmFic2VudC5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnPFwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc+XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz1cJ2BgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ15cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCcrXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJy1cJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYGBcJyNcJ2BgIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlIGBgXCcwYlwnYGAsIGBgXCcwb1wnYGAsIG9yXG5gYFwnMHhcJ2BgIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciBgYFwnZ1wnYGAgYW5kIGBgXCdHXCdgYFxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSBgYFwnLFwnYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kc1xuc2VwYXJhdG9yLiBGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlIGBgXCduXCdgYCBpbnRlZ2VyXG5wcmVzZW50YXRpb24gdHlwZSBpbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgYGBcJyxcJ2BgIG9wdGlvbiAoc2VlIGFsc28gKipQRVBcbjM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cbklmIHRoZSAqd2lkdGgqIGZpZWxkIGlzIHByZWNlZGVkIGJ5IGEgemVybyAoYGBcJzBcJ2BgKSBjaGFyYWN0ZXIsIHRoaXNcbmVuYWJsZXMgemVyby1wYWRkaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGFuICphbGlnbm1lbnQqIHR5cGUgb2ZcbmBgXCc9XCdgYCBhbmQgYSAqZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYC5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoIGBgXCdmXCdgYCBhbmQgYGBcJ0ZcJ2BgLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsXG5wb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCBgYFwnZ1wnYGAgb3IgYGBcJ0dcJ2BgLlxuRm9yIG5vbi1udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW5cbm90aGVyIHdvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LlxuVGhlICpwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdzXCdgYCAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ3NcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdiXCdgYCAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnY1wnYGAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdkXCdgYCAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnb1wnYGAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ3hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnWFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdkXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdFxuYGBcJ25cJ2BgIGFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgYGBmbG9hdCgpYGAgaXMgdXNlZCB0byBjb252ZXJ0IHRoZVxuaW50ZWdlciB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cblxuVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCBkZWNpbWFsIHZhbHVlc1xuYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdlXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgXCdlXCcgdG8gaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgXCdlXCdgYCBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZlwnYGAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyBgYFwnZlwnYGAsIGJ1dCBjb252ZXJ0cyBgYG5hbmBgIHRvICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYE5BTmBgIGFuZCBgYGluZmBgIHRvIGBgSU5GYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdnXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gYGBwID49IDFgYCwgdGhpcyAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvIGBgcGBgIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgIHdvdWxkIGhhdmUgZXhwb25lbnQgYGBleHBgYC4gIFRoZW4gaWYgYGAtNCA8PSBleHAgIHxcbiAgIHwgICAgICAgICAgIHwgPCBwYGAsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgXCdmXCdgYCBhbmQgcHJlY2lzaW9uIGBgcC0xLWV4cGBgLiBPdGhlcndpc2UsIHRoZSBudW1iZXIgICB8XG4gICB8ICAgICAgICAgICB8IGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAuIEluIGJvdGggY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgICAgfFxuICAgfCAgICAgICAgICAgfCByZW1vdmVkIGZyb20gdGhlIHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYWxzbyByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAgICB8XG4gICB8ICAgICAgICAgICB8IGl0LiAgUG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgfFxuICAgfCAgICAgICAgICAgfCB6ZXJvLCBhbmQgbmFucywgYXJlIGZvcm1hdHRlZCBhcyBgYGluZmBgLCBgYC1pbmZgYCwgYGAwYGAsIHxcbiAgIHwgICAgICAgICAgIHwgYGAtMGBgIGFuZCBgYG5hbmBgIHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIGBgMGBgIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCAgfFxuICAgfCAgICAgICAgICAgfCB0byBhIHByZWNpc2lvbiBvZiBgYDFgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdHXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgYGBcJ2dcJ2BgIGV4Y2VwdCBzd2l0Y2hlcyB0byBgYFwnRVwnYGAgfFxuICAgfCAgICAgICAgICAgfCBpZiB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgaW5maW5pdHkgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZ1wnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCclXCdgYCAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkIChgYFwnZlwnYGApIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvIGBgXCdnXCdgYCwgZXhjZXB0IHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgZGVjaW1hbCBwb2ludCBhbmQgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gVGhpcyBpcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW50ZW5kZWQgdG8gbWF0Y2ggYGBzdHIoKWBgLCBleGNlcHQgeW91IGNhbiBhZGQgdGhlIG90aGVyICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdCBtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4IGFuZCBjb21wYXJpc29uXG53aXRoIHRoZSBvbGQgYGAlYGAtZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGRcbmBgJWBgLWZvcm1hdHRpbmcsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBgYHt9YGAgYW5kIHdpdGggYGA6YGAgdXNlZFxuaW5zdGVhZCBvZiBgYCVgYC4gRm9yIGV4YW1wbGUsIGBgXCclMDMuMmZcJ2BgIGNhbiBiZSB0cmFuc2xhdGVkIHRvXG5gYFwnezowMy4yZn1cJ2BgLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgYGAlc2BgIGFuZCBgYCVyYGA6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgYGAlK2ZgYCwgYGAlLWZgYCwgYW5kIGBgJSBmYGAgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgYGAleGBgIGFuZCBgYCVvYGAgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudFxuYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6XG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogJ1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIGFuZCB0aGUgYGBGb3JtYXR0ZXJgYCBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgYGBGb3JtYXR0ZXJgYCxcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG5gYHt9YGAuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbmBge3tgYCBhbmQgYGB9fWBgLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYFwnIVwnYGAsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoXG5pcyBwcmVjZWRlZCBieSBhIGNvbG9uIGBgXCc6XCdgYC4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXRcbmZvciB0aGUgcmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyBgYFwnMTBcJ2BgIG9yXG5gYFwnOi1dXCdgYCkgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5XG5hbnkgbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGVcbmZvcm0gYGBcJy5uYW1lXCdgYCBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgYGBnZXRhdHRyKClgYCxcbndoaWxlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm0gYGBcJ1tpbmRleF1cJ2BgIGRvZXMgYW4gaW5kZXggbG9va3VwXG51c2luZyBgYF9fZ2V0aXRlbV9fKClgYC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvIGBgXCd7fSB7fVwnYGAgaXMgZXF1aXZhbGVudCB0byBgYFwnezB9IHsxfVwnYGAuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZVxuYGBfX2Zvcm1hdF9fKClgYCBtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXNcbml0IGlzIGRlc2lyYWJsZSB0byBmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLFxub3ZlcnJpZGluZyBpdHMgb3duIGRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlXG50byBhIHN0cmluZyBiZWZvcmUgY2FsbGluZyBgYF9fZm9ybWF0X18oKWBgLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmdcbmxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiBgYFwnIXNcJ2BgIHdoaWNoIGNhbGxzXG5gYHN0cigpYGAgb24gdGhlIHZhbHVlLCBgYFwnIXJcJ2BgIHdoaWNoIGNhbGxzIGBgcmVwcigpYGAgYW5kIGBgXCchYVwnYGBcbndoaWNoIGNhbGxzIGBgYXNjaWkoKWBgLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIGNhbiBjb250YWluIG9ubHkgYSBmaWVsZFxubmFtZTsgY29udmVyc2lvbiBmbGFncyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4gIFRoZVxucmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlIHN1YnN0aXR1dGVkIGJlZm9yZSB0aGVcbipmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzIGFsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhXG52YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gYGBmb3JtYXQoKWBgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoYGAiImBgKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkIGBgc3RyKClgYCBvbiB0aGUgdmFsdWUuIEEgbm9uLVxuZW1wdHkgZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGEgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCc+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuVGhlICpmaWxsKiBjaGFyYWN0ZXIgY2FuIGJlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJy4gIFRoZVxucHJlc2VuY2Ugb2YgYSBmaWxsIGNoYXJhY3RlciBpcyBzaWduYWxlZCBieSB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZ1xuaXQsIHdoaWNoIG11c3QgYmUgb25lIG9mIHRoZSBhbGlnbm1lbnQgb3B0aW9ucy4gIElmIHRoZSBzZWNvbmRcbmNoYXJhY3RlciBvZiAqZm9ybWF0X3NwZWMqIGlzIG5vdCBhIHZhbGlkIGFsaWdubWVudCBvcHRpb24sIHRoZW4gaXQgaXNcbmFzc3VtZWQgdGhhdCBib3RoIHRoZSBmaWxsIGNoYXJhY3RlciBhbmQgdGhlIGFsaWdubWVudCBvcHRpb24gYXJlXG5hYnNlbnQuXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJzxcJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc9XCdgYCAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdeXCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnK1wnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCctXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGBgXCcjXCdgYCBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSBgYFwnMGJcJ2BgLCBgYFwnMG9cJ2BgLCBvclxuYGBcJzB4XCdgYCB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgYGBcJ2dcJ2BgIGFuZCBgYFwnR1wnYGBcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgYGBcJyxcJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHNcbnNlcGFyYXRvci4gRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSBgYFwnblwnYGAgaW50ZWdlclxucHJlc2VudGF0aW9uIHR5cGUgaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlIGBgXCcsXCdgYCBvcHRpb24gKHNlZSBhbHNvICoqUEVQXG4zNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5QcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciBlbmFibGVzXG5zaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhXG4qZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYCB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgYGBcJz1cJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdFXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgYGBcJ2VcJ2BgIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdmXCdgYCAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRlwnYGAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgXCdmXCdgYCwgYnV0IGNvbnZlcnRzIGBgbmFuYGAgdG8gICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgTkFOYGAgYW5kIGBgaW5mYGAgdG8gYGBJTkZgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiBgYHAgPj0gMWBgLCB0aGlzICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAgd291bGQgaGF2ZSBleHBvbmVudCBgYGV4cGBgLiAgVGhlbiBpZiBgYC00IDw9IGV4cCAgfFxuICAgfCAgICAgICAgICAgfCA8IHBgYCwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBcJ2ZcJ2BgIGFuZCBwcmVjaXNpb24gYGBwLTEtZXhwYGAuIE90aGVyd2lzZSwgdGhlIG51bWJlciAgIHxcbiAgIHwgICAgICAgICAgIHwgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYC4gSW4gYm90aCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAgICB8XG4gICB8ICAgICAgICAgICB8IHJlbW92ZWQgZnJvbSB0aGUgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyAgICAgfFxuICAgfCAgICAgICAgICAgfCBhbHNvIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICAgIHxcbiAgIHwgICAgICAgICAgIHwgaXQuICBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB8XG4gICB8ICAgICAgICAgICB8IHplcm8sIGFuZCBuYW5zLCBhcmUgZm9ybWF0dGVkIGFzIGBgaW5mYGAsIGBgLWluZmBgLCBgYDBgYCwgfFxuICAgfCAgICAgICAgICAgfCBgYC0wYGAgYW5kIGBgbmFuYGAgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgYGAwYGAgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50ICB8XG4gICB8ICAgICAgICAgICB8IHRvIGEgcHJlY2lzaW9uIG9mIGBgMWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyBgYFwnZ1wnYGAgZXhjZXB0IHN3aXRjaGVzIHRvIGBgXCdFXCdgYCB8XG4gICB8ICAgICAgICAgICB8IGlmIHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBpbmZpbml0eSBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdnXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJyVcJ2BgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKGBgXCdmXCdgYCkgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gYGBcJ2dcJ2BgLCBleGNlcHQgd2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBkZWNpbWFsIHBvaW50IGFuZCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBUaGlzIGlzICAgfFxuICAgfCAgICAgICAgICAgfCBpbnRlbmRlZCB0byBtYXRjaCBgYHN0cigpYGAsIGV4Y2VwdCB5b3UgY2FuIGFkZCB0aGUgb3RoZXIgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCBgYCVgYC1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZFxuYGAlYGAtZm9ybWF0dGluZywgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBge31gYCBhbmQgd2l0aCBgYDpgYCB1c2VkXG5pbnN0ZWFkIG9mIGBgJWBgLiBGb3IgZXhhbXBsZSwgYGBcJyUwMy4yZlwnYGAgY2FuIGJlIHRyYW5zbGF0ZWQgdG9cbmBgXCd7OjAzLjJmfVwnYGAuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+Pj4gXCd7MH0sIHsxfSwgezJ9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwne30sIHt9LCB7fVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKSAgIyAzLjErIG9ubHlcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdCgqXCdhYmNcJykgICAgICAjIHVucGFja2luZyBhcmd1bWVudCBzZXF1ZW5jZVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3swfXsxfXswfVwnLmZvcm1hdChcJ2FicmFcJywgXCdjYWRcJykgICAjIGFyZ3VtZW50c1wnIGluZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4gICBcJ2FicmFjYWRhYnJhXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuXG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQobGF0aXR1ZGU9XCczNy4yNE5cJywgbG9uZ2l0dWRlPVwnLTExNS44MVdcJylcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuICAgPj4+IGNvb3JkID0ge1wnbGF0aXR1ZGVcJzogXCczNy4yNE5cJywgXCdsb25naXR1ZGVcJzogXCctMTE1LjgxV1wnfVxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KCoqY29vcmQpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGF0dHJpYnV0ZXM6XG5cbiAgID4+PiBjID0gMy01alxuICAgPj4+IChcJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCB7MC5yZWFsfSBcJ1xuICAgLi4uICBcJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uXCcpLmZvcm1hdChjKVxuICAgXCdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC5cJ1xuICAgPj4+IGNsYXNzIFBvaW50OlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyBgYCVzYGAgYW5kIGBgJXJgYDpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyBgYCUrZmBgLCBgYCUtZmBgLCBhbmQgYGAlIGZgYCBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyBgYCV4YGAgYW5kIGBgJW9gYCBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gZGlmZmVyZW50XG5iYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOVxuICAgPj4+IHRvdGFsID0gMjJcbiAgID4+PiBcJ0NvcnJlY3QgYW5zd2VyczogezouMiV9XCcuZm9ybWF0KHBvaW50cy90b3RhbClcbiAgIFwnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiVcJ1xuXG5Vc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG5cbiAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbiAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbiAgID4+PiBcJ3s6JVktJW0tJWQgJUg6JU06JVN9XCcuZm9ybWF0KGQpXG4gICBcJzIwMTAtMDctMDQgMTI6MTU6NThcJ1xuXG5OZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuXG4gICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcChcJzxePlwnLCBbXCdsZWZ0XCcsIFwnY2VudGVyXCcsIFwncmlnaHRcJ10pOlxuICAgLi4uICAgICBcJ3swOntmaWxsfXthbGlnbn0xNn1cJy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgYWxpZ249YWxpZ24pXG4gICAuLi5cbiAgIFwnbGVmdDw8PDw8PDw8PDw8PFwnXG4gICBcJ15eXl5eY2VudGVyXl5eXl5cJ1xuICAgXCc+Pj4+Pj4+Pj4+PnJpZ2h0XCdcbiAgID4+PlxuICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbiAgID4+PiBcJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfVwnLmZvcm1hdCgqb2N0ZXRzKVxuICAgXCdDMEE4MDAwMVwnXG4gICA+Pj4gaW50KF8sIDE2KVxuICAgMzIzMjIzNTUyMVxuICAgPj4+XG4gICA+Pj4gd2lkdGggPSA1XG4gICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKKyAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbiAgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCiAgJ2dsb2JhbCc6ICdcblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgZW50aXJlXG5jdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvIGJlXG5pbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSBnbG9iYWxcbnZhcmlhYmxlIHdpdGhvdXQgYGBnbG9iYWxgYCwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG5nbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lXG5jb2RlIGJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCBgYGdsb2JhbGBgIHN0YXRlbWVudC5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWxcbnBhcmFtZXRlcnMgb3IgaW4gYSBgYGZvcmBgIGxvb3AgY29udHJvbCB0YXJnZXQsIGBgY2xhc3NgYCBkZWZpbml0aW9uLFxuZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgYGBpbXBvcnRgYCBzdGF0ZW1lbnQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RcbmVuZm9yY2UgdGhlIGxhdHRlciB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZVxudGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHlcbmNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlIGBgZ2xvYmFsYGAgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci5cbkl0IGFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgc3RyaW5nXG5vciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgYGBnbG9iYWxgYCBzdGF0ZW1lbnRzIGluXG50aGUgY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGVcbmBgZXZhbCgpYGAgYW5kIGBgY29tcGlsZSgpYGAgZnVuY3Rpb25zLlxuJywKICAnaWQtY2xhc3Nlcyc6ICdcblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuYGBfKmBgXG4gICBOb3QgaW1wb3J0ZWQgYnkgYGBmcm9tIG1vZHVsZSBpbXBvcnQgKmBgLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllclxuICAgYGBfYGAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZlxuICAgdGhlIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSBgYGJ1aWx0aW5zYGAgbW9kdWxlLiAgV2hlblxuICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsIGBgX2BgIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgYGBfYGAgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2V0dGV4dGBgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbmBgX18qX19gYFxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgYGBfXypfX2BgIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzXG4gICBub3QgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2VcbiAgIHdpdGhvdXQgd2FybmluZy5cblxuYGBfXypgYFxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCiAgJ2lkZW50aWZpZXJzJzogJ1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgYGBBYGAgdGhyb3VnaCBgYFpgYCwgdGhlIHVuZGVyc2NvcmUgYGBfYGAgYW5kLCBleGNlcHQgZm9yIHRoZVxuZmlyc3QgY2hhcmFjdGVyLCB0aGUgZGlnaXRzIGBgMGBgIHRocm91Z2ggYGA5YGAuXG5cblB5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSBBU0NJSVxucmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSBjbGFzc2lmaWNhdGlvblxudXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgaW5jbHVkZWQgaW4gdGhlXG5gYHVuaWNvZGVkYXRhYGAgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbmBgXypgYFxuICAgTm90IGltcG9ydGVkIGJ5IGBgZnJvbSBtb2R1bGUgaW1wb3J0ICpgYC4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXJcbiAgIGBgX2BgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2ZcbiAgIHRoZSBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgYGBidWlsdGluc2BgIG1vZHVsZS4gIFdoZW5cbiAgIG5vdCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCBgYF9gYCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3RcbiAgIGRlZmluZWQuIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lIGBgX2BgIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICBgYGdldHRleHRgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG5gYF9fKl9fYGBcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mIGBgX18qX19gYCBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lc1xuICAgbm90IGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlXG4gICB3aXRob3V0IHdhcm5pbmcuXG5cbmBgX18qYGBcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAogICdpZic6ICdcblRoZSBgYGlmYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAogICdpbWFnaW5hcnknOiAnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgYGAoMys0ailgYC4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiAnXG5UaGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kXG5pbml0aWFsaXplIGl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsXG5uYW1lc3BhY2UgKG9mIHRoZSBzY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzKS4gVGhlXG5zdGF0ZW1lbnQgY29tZXMgaW4gdHdvIGZvcm1zIGRpZmZlcmluZyBvbiB3aGV0aGVyIGl0IHVzZXMgdGhlIGBgZnJvbWBgXG5rZXl3b3JkLiBUaGUgZmlyc3QgZm9ybSAod2l0aG91dCBgYGZyb21gYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3JcbmVhY2ggaWRlbnRpZmllciBpbiB0aGUgbGlzdC4gVGhlIGZvcm0gd2l0aCBgYGZyb21gYCBwZXJmb3JtcyBzdGVwICgxKVxub25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcCAoMikgcmVwZWF0ZWRseS4gRm9yIGEgcmVmZXJlbmNlXG5pbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZSBgYGltcG9ydGxpYmBgIG1vZHVsZS5cblxuVG8gdW5kZXJzdGFuZCBob3cgc3RlcCAoMSkgb2NjdXJzLCBvbmUgbXVzdCBmaXJzdCB1bmRlcnN0YW5kIGhvd1xuUHl0aG9uIGhhbmRsZXMgaGllcmFyY2hpY2FsIG5hbWluZyBvZiBtb2R1bGVzLiBUbyBoZWxwIG9yZ2FuaXplXG5tb2R1bGVzIGFuZCBwcm92aWRlIGEgaGllcmFyY2h5IGluIG5hbWluZywgUHl0aG9uIGhhcyBhIGNvbmNlcHQgb2ZcbnBhY2thZ2VzLiBBIHBhY2thZ2UgY2FuIGNvbnRhaW4gb3RoZXIgcGFja2FnZXMgYW5kIG1vZHVsZXMgd2hpbGVcbm1vZHVsZXMgY2Fubm90IGNvbnRhaW4gb3RoZXIgbW9kdWxlcyBvciBwYWNrYWdlcy4gRnJvbSBhIGZpbGUgc3lzdGVtXG5wZXJzcGVjdGl2ZSwgcGFja2FnZXMgYXJlIGRpcmVjdG9yaWVzIGFuZCBtb2R1bGVzIGFyZSBmaWxlcy4gVGhlXG5vcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCxcbmFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXRcbmRvY3VtZW50LlxuXG5PbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGVcbnRlcm0gIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nIGZvclxudGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXNcbmBgc3lzLm1vZHVsZXNgYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkXG5wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKVxub2YgaW1wb3J0IHVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiBgYHN5cy5tb2R1bGVzYGAsIGluIHdoaWNoIGNhc2VcbmBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbklmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluIHRoZSBjYWNoZSwgdGhlbiBgYHN5cy5tZXRhX3BhdGhgYCBpc1xuc2VhcmNoZWQgKHRoZSBzcGVjaWZpY2F0aW9uIGZvciBgYHN5cy5tZXRhX3BhdGhgYCBjYW4gYmUgZm91bmQgaW5cbioqUEVQIDMwMioqKS4gVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgKmZpbmRlciogb2JqZWN0cyB3aGljaCBhcmVcbnF1ZXJpZWQgaW4gb3JkZXIgYXMgdG8gd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieVxuY2FsbGluZyB0aGVpciBgYGZpbmRfbW9kdWxlKClgYCBtZXRob2Qgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBJZlxudGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlIChhcyBkZW5vdGVkIGJ5IHRoZVxuZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhIHNlY29uZCBhcmd1bWVudCB0b1xuYGBmaW5kX21vZHVsZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlXG5mcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QgaW4gdGhlIG5hbWUgb2ZcbnRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIGl0IHJldHVybnNcbmEgKmxvYWRlciogKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC5cblxuSWYgbm9uZSBvZiB0aGUgZmluZGVycyBvbiBgYHN5cy5tZXRhX3BhdGhgYCBhcmUgYWJsZSB0byBmaW5kIHRoZVxubW9kdWxlIHRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC5cbkltcGxlbWVudGF0aW9ucyBvZiBQeXRob24gdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZVxuZGVmaW5lZC4gVGhlIG9uZSB0aGV5IGFsbCBkbyBkZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlc1xuYGBzeXMucGF0aF9ob29rc2BgLCBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAsIGFuZCBgYHN5cy5wYXRoYGAuXG5cblRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiXG5zcGVjaWZpZWQgaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW1cbnBhdGhzKS4gSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWRcbndpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byBgYGZpbmRfbW9kdWxlKClgYCxcbmBgX19wYXRoX19gYCBvbiB0aGUgcGFyZW50IHBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWZcbnRoZSBtb2R1bGUgaXMgbm90IGNvbnRhaW5lZCBpbiBhIHBhY2thZ2UgdGhlbiBgYHN5cy5wYXRoYGAgaXMgdXNlZCBhc1xudGhlIHNvdXJjZSBvZiBwYXRocy5cblxuT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYVxuZmluZGVyIHRoYXQgY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0XG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgY2FjaGVzIGZpbmRlcnMgZm9yIHBhdGhzIGFuZCBpcyBjaGVja2VkXG5mb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYSBmaW5kZXIgY2FjaGVkIHRoZW5cbmBgc3lzLnBhdGhfaG9va3NgYCBpcyBzZWFyY2hlZCBieSBjYWxsaW5nIGVhY2ggb2JqZWN0IGluIHRoZSBsaXN0IHdpdGhcbmEgc2luZ2xlIGFyZ3VtZW50IG9mIHRoZSBwYXRoLCByZXR1cm5pbmcgYSBmaW5kZXIgb3IgcmFpc2VzXG5gYEltcG9ydEVycm9yYGAuIElmIGEgZmluZGVyIGlzIHJldHVybmVkIHRoZW4gaXQgaXMgY2FjaGVkIGluXG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBub1xuZmluZGVyIGNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiBgYE5vbmVgYCBpc1xuc3RvcmVkIGluIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsXG5maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlc1xuc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlclxud2hpY2ggYWx3YXlzIHJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguXG5cbklmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC5cbk90aGVyd2lzZSBzb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSBgYGxvYWRfbW9kdWxlKClgYCBtZXRob2RcbmlzIGNhbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlICoqUEVQIDMwMioqIGZvciB0aGVcbm9yaWdpbmFsIGRlZmluaXRpb24gb2YgbG9hZGVycykuIEEgbG9hZGVyIGhhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXNcbnRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQgbG9hZHMuIEZpcnN0LCBpZiB0aGUgbW9kdWxlIGFscmVhZHkgZXhpc3RzXG5pbiBgYHN5cy5tb2R1bGVzYGAgKGEgcG9zc2liaWxpdHkgaWYgdGhlIGxvYWRlciBpcyBjYWxsZWQgb3V0c2lkZSBvZlxudGhlIGltcG9ydCBtYWNoaW5lcnkpIHRoZW4gaXQgaXMgdG8gdXNlIHRoYXQgbW9kdWxlIGZvciBpbml0aWFsaXphdGlvblxuYW5kIG5vdCBhIG5ldyBtb2R1bGUuIEJ1dCBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGV4aXN0IGluXG5gYHN5cy5tb2R1bGVzYGAgdGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0IGRpY3QgYmVmb3JlXG5pbml0aWFsaXphdGlvbiBiZWdpbnMuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUgbW9kdWxlXG5hbmQgaXQgd2FzIGFkZGVkIHRvIGBgc3lzLm1vZHVsZXNgYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRpY3QuXG5JZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gYGBzeXMubW9kdWxlc2BgIGl0IGlzXG5sZWZ0IGluIHRoZSBkaWN0LlxuXG5UaGUgbG9hZGVyIG11c3Qgc2V0IHNldmVyYWwgYXR0cmlidXRlcyBvbiB0aGUgbW9kdWxlLiBgYF9fbmFtZV9fYGAgaXNcbnRvIGJlIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBgYF9fZmlsZV9fYGAgaXMgdG8gYmUgdGhlICJwYXRoIlxudG8gdGhlIGZpbGUgdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpblxuYGBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgYCkgaW4gd2hpY2ggY2FzZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBzZXQuXG5JZiB3aGF0IGlzIGJlaW5nIGltcG9ydGVkIGlzIGEgcGFja2FnZSB0aGVuIGBgX19wYXRoX19gYCBpcyB0byBiZSBzZXRcbnRvIGEgbGlzdCBvZiBwYXRocyB0byBiZSBzZWFyY2hlZCB3aGVuIGxvb2tpbmcgZm9yIG1vZHVsZXMgYW5kXG5wYWNrYWdlcyBjb250YWluZWQgd2l0aGluIHRoZSBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLiBgYF9fcGFja2FnZV9fYGBcbmlzIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGVcbm1vZHVsZSBvciBwYWNrYWdlICh0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkXG5pbiBhIHBhY2thZ2UpLiBgYF9fbG9hZGVyX19gYCBpcyBhbHNvIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvXG50aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlIG1vZHVsZS5cblxuSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIHRoZW4gdGhlIGxvYWRlciByYWlzZXNcbmBgSW1wb3J0RXJyb3JgYCBpZiBzb21lIG90aGVyIGV4Y2VwdGlvbiBpcyBub3QgYWxyZWFkeSBiZWluZ1xucHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIgcmV0dXJucyB0aGUgbW9kdWxlIHRoYXQgd2FzIGxvYWRlZFxuYW5kIGluaXRpYWxpemVkLlxuXG5XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhblxuYmVnaW4uXG5cblRoZSBmaXJzdCBmb3JtIG9mIGBgaW1wb3J0YGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGVcbmxvY2FsIG5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlXG5uZXh0IGlkZW50aWZpZXIsIGlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSBgYGFzYGAsXG50aGUgbmFtZSBmb2xsb3dpbmcgYGBhc2BgIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuXG5cblRoZSBgYGZyb21gYCBmb3JtIGRvZXMgbm90IGJpbmQgdGhlIG1vZHVsZSBuYW1lOiBpdCBnb2VzIHRocm91Z2ggdGhlXG5saXN0IG9mIGlkZW50aWZpZXJzLCBsb29rcyBlYWNoIG9uZSBvZiB0aGVtIHVwIGluIHRoZSBtb2R1bGUgZm91bmQgaW5cbnN0ZXAgKDEpLCBhbmQgYmluZHMgdGhlIG5hbWUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSB0byB0aGUgb2JqZWN0IHRodXNcbmZvdW5kLiAgQXMgd2l0aCB0aGUgZmlyc3QgZm9ybSBvZiBgYGltcG9ydGBgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZVxuY2FuIGJlIHN1cHBsaWVkIGJ5IHNwZWNpZnlpbmcgImBgYXNgYCBsb2NhbG5hbWUiLiAgSWYgYSBuYW1lIGlzIG5vdFxuZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuICBJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpc1xucmVwbGFjZWQgYnkgYSBzdGFyIChgYFwnKlwnYGApLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZVxuYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2Ugb2YgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50LlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyBgYGZyb21gYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmVcbiAgIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXNcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgYGBhc2BgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgYGBmcm9tYGAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIGBgZnJvbWBgIGNsYXVzZSBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgYGBpbXBvcnRgYCBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSBgYGFzYGAgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS5cbkF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYVxuYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZVxud2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGVcbm1vZHVsZSBsZXZlbC4gQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnNcbndpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyIGBgZnJvbWBgXG55b3UgY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuYGBmcm9tIC4gaW1wb3J0IG1vZGBgIGZyb20gYSBtb2R1bGUgaW4gdGhlIGBgcGtnYGAgcGFja2FnZSB0aGVuIHlvdVxud2lsbCBlbmQgdXAgaW1wb3J0aW5nIGBgcGtnLm1vZGBgLiBJZiB5b3UgZXhlY3V0ZSBgYGZyb20gLi5zdWJwa2cyXG5pbXBvcnQgbW9kYGAgZnJvbSB3aXRoaW4gYGBwa2cuc3VicGtnMWBgIHlvdSB3aWxsIGltcG9ydFxuYGBwa2cuc3VicGtnMi5tb2RgYC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXNcbmNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbmBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSB3aGljaCBtb2R1bGVzIG5lZWQgdG8gYmUgbG9hZGVkIGR5bmFtaWNhbGx5LlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24uICBUaGUgZnV0dXJlXG5zdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvblxudGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXQgYWxsb3dzIHVzZSBvZlxudGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZSByZWxlYXNlIGluIHdoaWNoIHRoZVxuZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgYGBhYnNvbHV0ZV9pbXBvcnRgYCxcbmBgZGl2aXNpb25gYCwgYGBnZW5lcmF0b3JzYGAsIGBgdW5pY29kZV9saXRlcmFsc2BgLFxuYGBwcmludF9mdW5jdGlvbmBgLCBgYG5lc3RlZF9zY29wZXNgYCBhbmQgYGB3aXRoX3N0YXRlbWVudGBgLiAgVGhleVxuYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3JcbmJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlIGBgX19mdXR1cmVfX2BgLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdFxud2lsbCBiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGV4ZWMoKWBgIGFuZFxuYGBjb21waWxlKClgYCB0aGF0IG9jY3VyIGluIGEgbW9kdWxlIGBgTWBgIGNvbnRhaW5pbmcgYSBmdXR1cmVcbnN0YXRlbWVudCB3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWRcbndpdGggdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsXG5hcmd1bWVudHMgdG8gYGBjb21waWxlKClgYCAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb25cbmZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuICAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAogICdpbic6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLCBidXQgY29tcGFyaXNvbnMgb2ZcbmBgZmxvYXRgYCBhbmQgYGBEZWNpbWFsYGAgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYXZvaWQgdGhlIGluZXZpdGFibGVcbmNvbmZ1c2lvbiBhcmlzaW5nIGZyb20gcmVwcmVzZW50YXRpb24gaXNzdWVzIHN1Y2ggYXMgYGBmbG9hdChcJzEuMVwnKWBgXG5iZWluZyBpbmV4YWN0bHkgcmVwcmVzZW50ZWQgYW5kIHRoZXJlZm9yZSBub3QgZXhhY3RseSBlcXVhbCB0b1xuYGBEZWNpbWFsKFwnMS4xXCcpYGAgd2hpY2ggaXMuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpcyBub3RcbnN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgVGhpcyBjYW5cbmNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygbm9uLXRyYW5zaXRpdml0eSBiZXR3ZWVuIHN1cHBvcnRlZCBjcm9zcy10eXBlXG5jb21wYXJpc29ucyBhbmQgdW5zdXBwb3J0ZWQgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDIpID09XG4yYGAgYW5kIGBgMiA9PSBmbG9hdCgyKWBgIGJ1dCBgYERlY2ltYWwoMikgIT0gZmxvYXQoMilgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAogICdpbnRlZ2Vycyc6ICdcbkludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIGRpZ2l0ICAgICAgICAgIDo6PSAiMCIuLi4iOSJcbiAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuXG5UaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdFxuY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuXG5Ob3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC5cblRoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uXG51c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cblxuU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuXG4gICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbiAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweDEwMDAwMDAwMFxuICAgICAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgICAgICAgICAgIDB4ZGVhZGJlZWZcbicsCiAgJ2xhbWJkYSc6ICdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2Zvcm0gICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZm9ybV9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBmb3JtcyAobGFtYmRhIGV4cHJlc3Npb25zKSBoYXZlIHRoZSBzYW1lIHN5bnRhY3RpYyBwb3NpdGlvbiBhc1xuZXhwcmVzc2lvbnMuICBUaGV5IGFyZSBhIHNob3J0aGFuZCB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9uczsgdGhlXG5leHByZXNzaW9uIGBgbGFtYmRhIGFyZ3VtZW50czogZXhwcmVzc2lvbmBgIHlpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC5cblRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBmdW5jdGlvbiBvYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGZvcm1zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKQEAgLTQ5LDMwICs1MCwzMCBAQAogICdub25sb2NhbCc6ICdcblRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZS4gIFRoaXMgaXNcbmltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzIHRvIHNlYXJjaCB0aGVcbmxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzIGVuY2Fwc3VsYXRlZCBjb2RlIHRvXG5yZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlIGJlc2lkZXMgdGhlIGdsb2JhbFxuKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQsIHVubGlrZSB0byB0aG9zZSBsaXN0ZWQgaW4gYVxuYGBnbG9iYWxgYCBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBub25sb2NhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50LlxuJywKICAnbnVtYmVycyc6ICJcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgYGAtMWBgXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAnYGAtYGAnIGFuZFxudGhlIGxpdGVyYWwgYGAxYGAuXG4iLAogICdudW1lcmljLXR5cGVzJzogIlxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cbiIsCi0gJ29iamVjdHMnOiAnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJ2BgaXNgYFwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSBgYGlkKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBpdHMgYWRkcmVzcykuIEFuXG5vYmplY3RcJ3MgKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV0gQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lc1xudGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzIChlLmcuLCAiZG9lcyBpdCBoYXZlIGFcbmxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIG9iamVjdHMgb2YgdGhhdFxudHlwZS4gIFRoZSBgYHR5cGUoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzIHR5cGUgKHdoaWNoIGlzIGFuXG5vYmplY3QgaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0c1xud2hvc2UgdmFsdWUgY2FuIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWVcbmlzIHVuY2hhbmdlYWJsZSBvbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZVxudmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhXG5tdXRhYmxlIG9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyXG50aGUgY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBgYGdjYGAgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChleDpcbmFsd2F5cyBjbG9zZSBmaWxlcykuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnYGB0cnlgYC4uLmBgZXhjZXB0YGBcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSBgYGNsb3NlKClgYCBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnYGB0cnlgYC4uLmBgZmluYWxseWBgXCcgc3RhdGVtZW50IGFuZCB0aGUgXCdgYHdpdGhgYFwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyIGBgYSA9IDE7IGIgPVxuMWBgLCBgYGFgYCBhbmQgYGBiYGAgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlXG52YWx1ZSBvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciBgYGMgPSBbXTsgZCA9XG5bXWBgLCBgYGNgYCBhbmQgYGBkYGAgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCxcbnVuaXF1ZSwgbmV3bHkgY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCBgYGMgPSBkID0gW11gYCBhc3NpZ25zXG50aGUgc2FtZSBvYmplY3QgdG8gYm90aCBgYGNgYCBhbmQgYGBkYGAuKVxuJywKKyAnb2JqZWN0cyc6ICdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnYGBpc2BgXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlIGBgaWQoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZVxubWVtb3J5IGFkZHJlc3Mgd2hlcmUgYGB4YGAgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgYGB0eXBlKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYGBnY2BgIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoZXg6XG5hbHdheXMgY2xvc2UgZmlsZXMpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJ2BgdHJ5YGAuLi5gYGV4Y2VwdGBgXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgYGBjbG9zZSgpYGAgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJ2BgdHJ5YGAuLi5gYGZpbmFsbHlgYFwnIHN0YXRlbWVudCBhbmQgdGhlIFwnYGB3aXRoYGBcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciBgYGEgPSAxOyBiID1cbjFgYCwgYGBhYGAgYW5kIGBgYmBgIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZVxudmFsdWUgb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgYGBjID0gW107IGQgPVxuW11gYCwgYGBjYGAgYW5kIGBgZGBgIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsXG51bmlxdWUsIG5ld2x5IGNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgYGBjID0gZCA9IFtdYGAgYXNzaWduc1xudGhlIHNhbWUgb2JqZWN0IHRvIGJvdGggYGBjYGAgYW5kIGBgZGBgLilcbicsCiAgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG5TdW1tYXJ5XG4qKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZXMgaW4gUHl0aG9uLFxuZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBjb21wYXJpc29ucywgaW5jbHVkaW5nXG50ZXN0cywgd2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgY2hhaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0XG4tLS0gc2VlIHNlY3Rpb24gKkNvbXBhcmlzb25zKiAtLS0gYW5kIGV4cG9uZW50aWF0aW9uLCB3aGljaCBncm91cHNcbmZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBsYW1iZGFgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpZmBgIC0tIGBgZWxzZWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBvcmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBhbmRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBub3RgYCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpbmBgLCBgYG5vdGBgIGBgaW5gYCwgYGBpc2BgLCBgYGlzIG5vdGBgLCAgICAgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgYGA8YGAsIGBgPD1gYCwgYGA+YGAsIGBgPj1gYCwgYGAhPWBgLCBgYD09YGAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMsICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB8YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBeYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAmYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGA8PGBgLCBgYD4+YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAreGBgLCBgYC14YGAsIGBgfnhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB4W2luZGV4XWBgLCBgYHhbaW5kZXg6aW5kZXhdYGAsICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAoZXhwcmVzc2lvbnMuLi4pYGAsIGBgW2V4cHJlc3Npb25zLi4uXWBgLCAgICAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgYGB7a2V5OmRhdHVtLi4ufWBgLCBgYHtleHByZXNzaW9ucy4uLn1gYCAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSBgYGFicyh4JXkpIDwgYWJzKHkpYGAgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0cyBpdFxuICAgIG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCBgYC0xZS0xMDAgJSAxZTEwMGBgIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzIGBgMWUxMDBgYCwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyBgYC0xZS0xMDAgKyAxZTEwMGBgLFxuICAgIHdoaWNoIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gYGAxZTEwMGBgLiAgVGhlIGZ1bmN0aW9uXG4gICAgYGBtYXRoLmZtb2QoKWBgIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mXG4gICAgdGhlIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zIGBgLTFlLTEwMGBgIGluIHRoaXNcbiAgICBjYXNlLiBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlXG4gICAgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciBgYHgvL3lgYCB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gYGAoeC14JXkpLy95YGAgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0IGBgZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHlgYCBiZSB2ZXJ5XG4gICAgY2xvc2UgdG8gYGB4YGAuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZSBsZXZlbCxcbiAgICB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nc1xuICAgIGBgIlxcdTAwQzciYGAgYW5kIGBgIlxcdTAzMjdcXHUwMDQzImBgIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGUgZHluYW1pY1xuICAgIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWwgYmVoYXZpb3VyXG4gICAgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSBgYGlzYGAgb3BlcmF0b3IsIGxpa2UgdGhvc2UgaW52b2x2aW5nXG4gICAgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuICBDaGVjayB0aGVpclxuICAgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSBgYCVgYCBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciBgYCoqYGAgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpYyBvclxuICAgIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCBgYDIqKi0xYGAgaXNcbiAgICBgYDAuNWBgLlxuJywKICAncGFzcyc6ICdcblRoZSBgYHBhc3NgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuYGBwYXNzYGAgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCiAgJ3Bvd2VyJzogJ1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogYGAtMSoqMmBgIHJlc3VsdHMgaW4gYGAtMWBgLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gYGBwb3coKWBgXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG5gYDEwKioyYGAgcmV0dXJucyBgYDEwMGBgLCBidXQgYGAxMCoqLTJgYCByZXR1cm5zIGBgMC4wMWBgLlxuXG5SYWlzaW5nIGBgMC4wYGAgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGFcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYC4gUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXJcbnJlc3VsdHMgaW4gYSBgYGNvbXBsZXhgYCBudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhXG5gYFZhbHVlRXJyb3JgYC4pXG4nLAogICdyYWlzZSc6ICdcblRoZSBgYHJhaXNlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCBgYHJhaXNlYGAgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgYGBSdW50aW1lRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbnRoYXQgdGhpcyBpcyBhbiBlcnJvci5cblxuT3RoZXJ3aXNlLCBgYHJhaXNlYGAgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbmBgQmFzZUV4Y2VwdGlvbmBgLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZSwgd2hpY2hcbmlzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgaW5cbm9uZSBzdGVwIHVzaW5nIHRoZSBgYHdpdGhfdHJhY2ViYWNrKClgYCBleGNlcHRpb24gbWV0aG9kICh3aGljaFxucmV0dXJucyB0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzXG5hcmd1bWVudCksIGxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgYGBmcm9tYGAgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZVxuc2Vjb25kICpleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaFxud2lsbCB0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSBgYF9fY2F1c2VfX2BgXG5hdHRyaWJ1dGUgKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdFxuaGFuZGxlZCwgYm90aCBleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkEgc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZVxuYW4gZXhjZXB0aW9uIGhhbmRsZXI6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXMgdGhlbiBhdHRhY2hlZCBhcyB0aGVcbm5ldyBleGNlcHRpb25cJ3MgYGBfX2NvbnRleHRfX2BgIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKLSAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIHRvXG5pbmNsdWRlIGFuIGBgZXhwcmVzc2lvbl9saXN0YGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSBgYHJldHVybmBgXG5pbmRpY2F0ZXMgdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGBcbnRvIGJlIHJhaXNlZC5cbicsCisgJ3JldHVybic6ICdcblRoZSBgYHJldHVybmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG5gYHJldHVybmBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb25cbmRlZmluaXRpb24sIG5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSBgYE5vbmVgYCBpc1xuc3Vic3RpdHV0ZWQuXG5cbmBgcmV0dXJuYGAgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0XG4ob3IgYGBOb25lYGApIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiBgYHJldHVybmBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5sZWF2aW5nIHRoZSBmdW5jdGlvbi5cblxuSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSBgYHJldHVybmBgIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIGBgU3RvcEl0ZXJhdGlvbmBgIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuYGBTdG9wSXRlcmF0aW9uYGAgYW5kIGJlY29tZXMgdGhlIGBgU3RvcEl0ZXJhdGlvbi52YWx1ZWBgIGF0dHJpYnV0ZS5cbicsCiAgJ3NlcXVlbmNlLXR5cGVzJzogIlxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZydzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2Vzbid0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvbid0IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAsIHRoZSBtZW1iZXJzaGlwXG4gICB0ZXN0IGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgYGBfX2l0ZXJfXygpYGAsIHRoZW4gdGhlIG9sZFxuICAgc2VxdWVuY2UgaXRlcmF0aW9uIHByb3RvY29sIHZpYSBgYF9fZ2V0aXRlbV9fKClgYCwgc2VlICp0aGlzXG4gICBzZWN0aW9uIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UqLlxuIiwKICAnc2hpZnRpbmcnOiAnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGRpdmlzaW9uIGJ5IGBgcG93KDIsbilgYC4gIEFcbmxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoIGBgcG93KDIsbilgYC5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgcmVxdWlyZWQgdG9cbiAgYmUgYXQgbW9zdCBgYHN5cy5tYXhzaXplYGAuICBJZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzIGxhcmdlclxuICB0aGFuIGBgc3lzLm1heHNpemVgYCBhbiBgYE92ZXJmbG93RXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKICAnc2xpY2luZ3MnOiAnXG5TbGljaW5nc1xuKioqKioqKipcblxuQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgYVxuc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yIGFzXG50YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgYGBkZWxgYCBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYVxuc2xpY2luZzpcblxuICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4gICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbiAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiBbc3RyaWRlXSBdXG4gICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG5cblRoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2VcbmFuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgc3Vic2NyaXB0aW9uXG5jYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciBjb21wbGljYXRpbmcgdGhlXG5zeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG5cblRoZSBzZW1hbnRpY3MgZm9yIGEgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGVcbnRvIGEgbWFwcGluZyBvYmplY3QsIGFuZCBpdCBpcyBpbmRleGVkICh1c2luZyB0aGUgc2FtZVxuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pIHdpdGggYSBrZXkgdGhhdCBpc1xuY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGxvbmVcbnNsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzIGFuXG5leHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyIHNsaWNlIGlzIGFcbnNsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIHdob3NlXG5gYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZVxuZXhwcmVzc2lvbnMgZ2l2ZW4gYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsXG5yZXNwZWN0aXZlbHksIHN1YnN0aXR1dGluZyBgYE5vbmVgYCBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6ICdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlIGBgZGlyKClgYCBidWlsdC1pbiBmdW5jdGlvbi5cblxub2JqZWN0Ll9fZGljdF9fXG5cbiAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuIG9iamVjdFwnc1xuICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuXG5pbnN0YW5jZS5fX2NsYXNzX19cblxuICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cblxuY2xhc3MuX19iYXNlc19fXG5cbiAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG5cbmNsYXNzLl9fbmFtZV9fXG5cbiAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBTZWUgYWxzbyB0aGUgKi1SKiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlXG4gICByZXR1cm5lZC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIEEgY2xhc3NcbmRlZmluaXRpb24gaXMgcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3Ncbm5hbWUgaXMgYm91bmQgdG8gdGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmRcbmFyZ3VtZW50IGlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZVxuY2FsbGFibGUgZ2l2ZW4gd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiBgYHR5cGUoKWBgLiAgSWYgb3RoZXIga2V5d29yZFxuYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgd2lsbCBhbHNvIGJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzLiAgVGhpc1xuYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlIHdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGVcbmNsYXNzIGNyZWF0aW9uIHByb2Nlc3M6XG5cbiogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLlxuXG4qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmcgdGhlXG4gIHJvbGUgb2YgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuXG5UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYFxubWV0aG9kIC0tIGBgdHlwZS5fX25ld19fKClgYCBjYW4gdGhlbiBiZSBjYWxsZWQgZnJvbSB0aGlzIG1ldGhvZCB0b1xuY3JlYXRlIGEgY2xhc3Mgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gIFRoaXMgZXhhbXBsZSBhZGRzIGEgbmV3XG5lbGVtZW50IHRvIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGJlZm9yZSBjcmVhdGluZyB0aGUgY2xhc3M6XG5cbiAgIGNsYXNzIG1ldGFjbHModHlwZSk6XG4gICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6XG4gICAgICAgICAgIGRpY3RbXCdmb29cJ10gPSBcJ21ldGFjbHMgd2FzIGhlcmVcJ1xuICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpXG5cbllvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkIG5ld1xubWV0aG9kcyk7IGZvciBleGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tIGBgX19jYWxsX18oKWBgIG1ldGhvZCBpbiB0aGVcbm1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tIGJlaGF2aW9yIHdoZW4gdGhlIGNsYXNzIGlzIGNhbGxlZCwgZS5nLiBub3RcbmFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fKClgYCBhdHRyaWJ1dGUgKHVzdWFsbHlcbmltcGxlbWVudGVkIGFzIGEgY2xhc3Mgb3Igc3RhdGljIG1ldGhvZCksIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlXG5jbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBhbmQgYSB0dXBsZSBvZiBpdHNcbmJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZVxubWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlIG5hbWVzcGFjZSBvZiB0aGVcbmNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLCBmb3JcbmV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWRcbmluIGJ5IHJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2VcbnJ1bGVzOlxuXG4qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdFxuICBpcyB1c2VkLlxuXG4qIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGJhc2UgY2xhc3MsIGl0cyBtZXRhY2xhc3MgaXNcbiAgdXNlZC5cblxuKiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyAoYGB0eXBlYGApIGlzIHVzZWQuXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkaW5nIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOlxuICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChjbGFzc2RpY3QpKVxuICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKGNsYXNzZGljdClcbiAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuXG4gICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcblxuICAgPj4+IEEubWVtYmVyc1xuICAgKFwnX19tb2R1bGVfX1wnLCBcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCcsIFwnZm91clwnKVxuXG5XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgYmVnaW5zXG53aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyBgYF9fcHJlcGFyZV9fKClgYCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHNcbmFuZCBhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCBnZXRzXG5pbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlIG9yZGVyZWRcbmRpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkIGBgbWVtYmVyc2BgLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuYGBpc2luc3RhbmNlKClgYCBhbmQgYGBpc3N1YmNsYXNzKClgYCBidWlsdC1pbiBmdW5jdGlvbnMuXG5cbkluIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgYGBhYmMuQUJDTWV0YWBgIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kc1xuaW4gb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcylgYC5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpYGAuXG5cbk5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgKG1ldGFjbGFzcykgb2YgYVxuY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlIGFjdHVhbCBjbGFzcy5cblRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZFxub24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbiAgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyBgYGlzaW5zdGFuY2UoKWBgIGFuZFxuICAgICAgYGBpc3N1YmNsYXNzKClgYCBiZWhhdmlvciB0aHJvdWdoIGBgX19pbnN0YW5jZWNoZWNrX18oKWBgIGFuZFxuICAgICAgYGBfX3N1YmNsYXNzY2hlY2tfXygpYGAsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5XG4gICAgICBpbiB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlIGBgYWJjYGBcbiAgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsIGBgeChhcmcxLCBhcmcyLCAuLi4pYGAgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICBgYHguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKWBgLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggYGAwIDw9IGsgPCBOYGBcbndoZXJlICpOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2hcbmRlZmluZSBhIHJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGVcbnRoZSBtZXRob2RzIGBga2V5cygpYGAsIGBgdmFsdWVzKClgYCwgYGBpdGVtcygpYGAsIGBgZ2V0KClgYCxcbmBgY2xlYXIoKWBgLCBgYHNldGRlZmF1bHQoKWBgLCBgYHBvcCgpYGAsIGBgcG9waXRlbSgpYGAsIGBgY29weSgpYGAsXG5hbmQgYGB1cGRhdGUoKWBgIGJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2VzblwndCBkZWZpbmUgYSBgYF9fYm9vbF9fKClgYCBtZXRob2QgYW5kIHdob3NlIGBgX19sZW5fXygpYGBcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLiAgQVxuICBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aFxuICBgYE5vbmVgYC5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mIGBgc2VsZltrZXldYGAuIEZvciBzZXF1ZW5jZVxuICAgdHlwZXMsIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGVcbiAgIGNsYXNzIHdpc2hlcyB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlXG4gICBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuIElmICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSxcbiAgIGBgVHlwZUVycm9yYGAgbWF5IGJlIHJhaXNlZDsgaWYgb2YgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2ZcbiAgIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55IHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2ZcbiAgIG5lZ2F0aXZlIHZhbHVlcyksIGBgSW5kZXhFcnJvcmBgIHNob3VsZCBiZSByYWlzZWQuIEZvciBtYXBwaW5nXG4gICB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZSBjb250YWluZXIpLCBgYEtleUVycm9yYGBcbiAgIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6IGBgZm9yYGAgbG9vcHMgZXhwZWN0IHRoYXQgYW4gYGBJbmRleEVycm9yYGAgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSBgYF9fZ2V0aXRlbV9fKClgYFxuICAgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvIGJlIG1hZGVcbiAgIGF2YWlsYWJsZSBhcyB0aGUgbWV0aG9kIGBga2V5cygpYGAuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSBgYF9fcmV2ZXJzZWRfXygpYGAgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlXG4gICBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2VcbiAgIHByb3RvY29sIChgYF9fbGVuX18oKWBgIGFuZCBgYF9fZ2V0aXRlbV9fKClgYCkuICBPYmplY3RzIHRoYXRcbiAgIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sIHNob3VsZCBvbmx5IHByb3ZpZGVcbiAgIGBgX19yZXZlcnNlZF9fKClgYCBpZiB0aGV5IGNhbiBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgaXNcbiAgIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieSBgYHJldmVyc2VkKClgYC5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKGBgaW5gYCBhbmQgYGBub3QgaW5gYCkgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCxcbiAgIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kc1xuICAgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kXG4gICByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLFxuICAgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkXG4gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXhlY3V0ZSB0aGUgc3RhdGVtZW50IGBgeCArPSB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2lhZGRfXyh5KWBgIGlzXG4gICBjYWxsZWQuICBJZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGRvZXMgbm90IGRlZmluZSBhXG4gICBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGAtYGAsIGBgK2BgLFxuICAgYGBhYnMoKWBgIGFuZCBgYH5gYCkuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBjb21wbGV4KClgYCxcbiAgIGBgaW50KClgYCwgYGBmbG9hdCgpYGAgYW5kIGBgcm91bmQoKWBgLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mXG4gICB0aGUgYXBwcm9wcmlhdGUgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGBgb3BlcmF0b3IuaW5kZXgoKWBgLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGVcbiAgIGJ1aWx0LWluIGBgYmluKClgYCwgYGBoZXgoKWBgIGFuZCBgYG9jdCgpYGAgZnVuY3Rpb25zKS4gTXVzdCByZXR1cm5cbiAgIGFuIGludGVnZXIuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSBgYHdpdGhgYCBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0XG5tYW5hZ2VyIGhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lXG5jb250ZXh0IGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmVcbm5vcm1hbGx5IGludm9rZWQgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb25cbipUaGUgd2l0aCBzdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXJcbm1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIGBgd2l0aGBgXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlIGBgYXNgYCBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSBgYE5vbmVgYC5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgYGBfX2V4aXRfXygpYGAgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyBgYF9faGFzaF9fKClgYCBhbmQgYGBfX3JlcHJfXygpYGAgdGhhdCBhcmUgaW1wbGVtZW50ZWRcbmJ5IGFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mXG50aGVzZSBtZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsXG53aGVuIGludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uXG5wcm92aWRlcyBzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlXG5pbnRlcnByZXRlciwgYXQgdGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2ZcbnNwZWNpYWwgbWV0aG9kcyAodGhlIHNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdFxuaXRzZWxmIGluIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSwgdW5kZXJcbiAgICBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2QgaWRlYVxuICAgIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzXG4gICAgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzIGBgX19hZGRfXygpYGApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXNcbiAgICBub3Qgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogJ1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LlxuXG5JbiBhZGRpdGlvbiwgUHl0aG9uXCdzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTZXF1ZW5jZSBUeXBlcyAtLS0gc3RyLCBieXRlcywgYnl0ZWFycmF5LCBsaXN0LFxudHVwbGUsIHJhbmdlKiBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgKlN0cmluZ1xuRm9ybWF0dGluZyogc2VjdGlvbi4gQWxzbywgc2VlIHRoZSBgYHJlYGAgbW9kdWxlIGZvciBzdHJpbmcgZnVuY3Rpb25zXG5iYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGEgc3BhY2UpLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gT3RoZXJcbiAgIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGBcJ2lnbm9yZVwnYGAsIGBgXCdyZXBsYWNlXCdgYCxcbiAgIGBgXCd4bWxjaGFycmVmcmVwbGFjZVwnYGAsIGBgXCdiYWNrc2xhc2hyZXBsYWNlXCdgYCBhbmQgYW55IG90aGVyIG5hbWVcbiAgIHJlZ2lzdGVyZWQgdmlhIGBgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKClgYCwgc2VlIHNlY3Rpb24gKkNvZGVjIEJhc2VcbiAgIENsYXNzZXMqLiBGb3IgYSBsaXN0IG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkXG4gICBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mXG4gICBzdWZmaXhlcyB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXRcbiAgIHRoYXQgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnMoW3RhYnNpemVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgemVybyBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRoZSBjb2x1bW4gbnVtYmVyIGlzIHJlc2V0IHRvIHplcm8gYWZ0ZXIgZWFjaFxuICAgbmV3bGluZSBvY2N1cnJpbmcgaW4gdGhlIHN0cmluZy4gSWYgKnRhYnNpemUqIGlzIG5vdCBnaXZlbiwgYSB0YWJcbiAgIHNpemUgb2YgYGA4YGAgY2hhcmFjdGVycyBpcyBhc3N1bWVkLiAgVGhpcyBkb2VzblwndCB1bmRlcnN0YW5kIG90aGVyXG4gICBub24tcHJpbnRpbmcgY2hhcmFjdGVycyBvciBlc2NhcGUgc2VxdWVuY2VzLlxuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgYGBmaW5kKClgYCBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93IHRoZVxuICAgICBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCwgdXNlXG4gICAgIHRoZSBgYGluYGAgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyBgYHt9YGAuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLCBleGNlcHQgdGhhdCBgYG1hcHBpbmdgYCBpc1xuICAgdXNlZCBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhIGBgZGljdGBgIC4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvclxuICAgZXhhbXBsZSBgYG1hcHBpbmdgYCBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgZmluZCgpYGAsIGJ1dCByYWlzZSBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlclxuICAgYGBjYGAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgYGBUcnVlYGA6XG4gICBgYGMuaXNhbHBoYSgpYGAsIGBgYy5pc2RlY2ltYWwoKWBgLCBgYGMuaXNkaWdpdCgpYGAsIG9yXG4gICBgYGMuaXNudW1lcmljKClgYC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gYGByZXByKClgYCBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvIGBgc3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSBgYFR5cGVFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyBgYGJ5dGVzYGAgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiAgVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgc3RyLnRyYW5zbGF0ZSgpYGAuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYHJmaW5kKClgYCBidXQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKlxuICAgaXMgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgIGBgTm9uZWBgLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yXG4gICBzcGxpdHRpbmcgZnJvbSB0aGUgcmlnaHQsIGBgcnNwbGl0KClgYCBiZWhhdmVzIGxpa2UgYGBzcGxpdCgpYGBcbiAgIHdoaWNoIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgIFwnICAgc3BhY2lvdXNcJ1xuICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gbGltaXRcbiAgIG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgYGBcJzEsLDJcJy5zcGxpdChcJyxcJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJ1wnLCBcJzJcJ11gYCkuICBUaGUgKnNlcCpcbiAgIGFyZ3VtZW50IG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgYGBcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgKS4gU3BsaXR0aW5nXG4gICBhbiBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyBgYFtcJ1wnXWBgLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSBgYE5vbmVgYCBzZXBhcmF0b3IgcmV0dXJuc1xuICAgYGBbXWBgLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJyAxICAyICAgMyAgXCcuc3BsaXQoKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCxcbiAgIGFuZCBgYFwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSlgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzIgICAzICBcJ11gYC5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZVxuICAgcmV0dXJuIGBgRmFsc2VgYC4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rXG4gICBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzXG4gICB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgIFwnc3BhY2lvdXNcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgYGxlbihzKWBgLlxuJywKLSAnc3RyaW5ncyc6ICdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgIlIiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbmxldHRlciBgYFwnclwnYGAgb3IgYGBcJ1JcJ2BgOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZFxudHJlYXQgYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZ1xubGl0ZXJhbHMsIGBgXCdcXFVcJ2BgIGFuZCBgYFwnXFx1XCdgYCBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZFxuc3BlY2lhbGx5LlxuXG5JbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkXG4oYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbnRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGVcbnN0cmluZywgaS5lLiBlaXRoZXIgYGBcJ2BgIG9yIGBgImBgLilcblxuVW5sZXNzIGFuIGBgXCdyXCdgYCBvciBgYFwnUlwnYGAgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgaW5cbnN0cmluZ3MgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvIHRob3NlIHVzZWQgYnlcblN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcbmV3bGluZWBgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFxcYGAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoYGBcXGBgKSAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFwnYGAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoYGBcJ2BgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXCJgYCAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlIChgYCJgYCkgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxhYGAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcYmBgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGZgYCAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxuYGAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxccmBgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHRgYCAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx2YGAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcb29vYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAoMSwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHhoaGBgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgKDIsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbkVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcXE57bmFtZX1gYCAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx1eHh4eGBgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcVXh4eHh4eHh4YGAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlIGJ5dGVcbiAgIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzIGRlbm90ZSBhXG4gICBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cblxuNC4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG41LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIFRoZSBjbGFzcyBib2R5XG5pcyBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG9cbnRoZSByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG5gYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggYGBNeUNsYXNzYGAgYW5kIGBgTXlTdWJjbGFzc2BgIGFyZVxuaW5zdGFuY2VzIG9mIGBgTWV0YWBgOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gYGB0eXBlKClgYCBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICBgYHR5cGUoKWBgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mIGBgdHlwZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gYGB0eXBlKGNscylgYCkgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYFxuYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQgYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSxcbmJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWVcbmZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IGBgZGljdCgpYGAgaW5zdGFuY2UuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzIGBgZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gYGBleGVjKClgYCBpc1xudGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGBgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpYGAgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvIGBgX19wcmVwYXJlX19gYCkuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mIGBgc3VwZXIoKWBgLiBgYF9fY2xhc3NfX2BgIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciBgYF9fY2xhc3NfX2BgIG9yIGBgc3VwZXJgYC4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnRcbmZvcm0gb2YgYGBzdXBlcigpYGAgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkXG5iYXNlZCBvbiBsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvXG5tYWtlIHRoZSBjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkXG50byB0aGUgbWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEzNSoqIC0gTmV3IHN1cGVyXG4gICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzIGBgX19wcmVwYXJlX18oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSBgYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kc1xuYW5kIGF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgYGBtZW1iZXJzYGAuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG5gYGlzaW5zdGFuY2UoKWBgIGFuZCBgYGlzc3ViY2xhc3MoKWBgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyBgYGFiYy5BQkNNZXRhYGAgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzXG5pbiBvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKWBgLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcylgYC5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuICAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nIGBgaXNpbnN0YW5jZSgpYGAgYW5kXG4gICAgICBgYGlzc3ViY2xhc3MoKWBgIGJlaGF2aW9yIHRocm91Z2ggYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kXG4gICAgICBgYF9fc3ViY2xhc3NjaGVja19fKClgYCwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGluIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgYGBhYmNgYFxuICAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgYGB4KGFyZzEsIGFyZzIsIC4uLilgYCBpcyBhIHNob3J0aGFuZCBmb3JcbiAgIGBgeC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pYGAuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuXCd0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSBgYHN0ci5mb3JtYXQoKWBgLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyBgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXNcbmFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlXG5jYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSBgYHJlYGAgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgYGBcJ1x4YzNceDlmXCdgYCBpcyBlcXVpdmFsZW50IHRvXG4gICBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsIGBgbG93ZXIoKWBgIHdvdWxkIGRvXG4gICBub3RoaW5nIHRvIGBgXCdceGMzXHg5ZlwnYGA7IGBgY2FzZWZvbGQoKWBgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgYGAtMWBgLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuIFRoaXMgbWV0aG9kIHVzZXMgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqIGFwcHJvYWNoIHRvXG4gICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKWBgIHJldHVybnNcbiAgIGBgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11gYCwgd2hpbGUgdGhlIHNhbWUgY2FsbCB3aXRoXG4gICBgYHNwbGl0bGluZXMoVHJ1ZSlgYCByZXR1cm5zIGBgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsXG4gICBcJ2tsXFxyXFxuXCddYGAuXG5cbiAgIFVubGlrZSBgYHNwbGl0KClgYCB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgIGBgcy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gc2BgLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAorICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGFcbmBgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmVcbmRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueFwncyB0aGUgYGBcJ3VyXCdgYCBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgYGBcJ3JiXCdgYCBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhc1xuICAgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0gb2YgYGBcJ2JyXCdgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuICAgKGBgdVwndmFsdWVcJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG4gICBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKICAnc3Vic2NyaXB0aW9ucyc6ICdcblN1YnNjcmlwdGlvbnNcbioqKioqKioqKioqKipcblxuQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdClcbm9yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcblxuICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgc3Vic2NyaXB0aW9uLFxuZS5nLiBhIGxpc3Qgb3IgZGljdGlvbmFyeS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBzdXBwb3J0XG5zdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgYGBfX2dldGl0ZW1fXygpYGBcbm1ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCBgYHhbLTFdYGAgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mXG5gYHhgYCkuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhblxudGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlXG5pdGVtIHdob3NlIGluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0XG5mb3IgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdFwnc1xuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkXG50byBleHBsaWNpdGx5IGFkZCB0aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKICAndHJ1dGgnOiAiXG5UcnV0aCBWYWx1ZSBUZXN0aW5nXG4qKioqKioqKioqKioqKioqKioqXG5cbkFueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gYGBpZmBgIG9yXG5gYHdoaWxlYGAgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qIGBgTm9uZWBgXG5cbiogYGBGYWxzZWBgXG5cbiogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgYGAwYGAsIGBgMC4wYGAsIGBgMGpgYC5cblxuKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCBgYCcnYGAsIGBgKClgYCwgYGBbXWBgLlxuXG4qIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgYGB7fWBgLlxuXG4qIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuICBgYF9fYm9vbF9fKClgYCBvciBgYF9fbGVuX18oKWBgIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuICBpbnRlZ2VyIHplcm8gb3IgYGBib29sYGAgdmFsdWUgYGBGYWxzZWBgLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuIGBgMGBgIG9yIGBgRmFsc2VgYCBmb3IgZmFsc2UgYW5kIGBgMWBgIG9yIGBgVHJ1ZWBgIGZvciB0cnVlLFxudW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zXG5gYG9yYGAgYW5kIGBgYW5kYGAgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuIiwKLSAndHJ5JzogJ1xuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uLCBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZFxub2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSByYWlzZXMgYW5vdGhlclxuZXhjZXB0aW9uIG9yIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uICBUaGUgZXhjZXB0aW9uXG5pbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZyBleGVjdXRpb24gb2YgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAotICd0eXBlcyc6ICdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSBgYE5vbmVgYC5cbiAgIEl0IGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucyxcbiAgIGUuZy4sIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICBgYE5vdEltcGxlbWVudGVkYGAuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsIGBgLi4uYGAgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lIGBgRWxsaXBzaXNgYC4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5gYG51bWJlcnMuTnVtYmVyYGBcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICBgYG51bWJlcnMuSW50ZWdyYWxgYFxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoYGBpbnRgYClcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zIChgYGJvb2xgYClcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZSBhcmUgdGhlIG9ubHlcbiAgICAgICAgIEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlIGludGVnZXJcbiAgICAgICAgIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGBgIkZhbHNlImBgIG9yXG4gICAgICAgICBgYCJUcnVlImBgIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICBgYG51bWJlcnMuUmVhbGBgIChgYGZsb2F0YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGlzXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgYGBudW1iZXJzLkNvbXBsZXhgYCAoYGBjb21wbGV4YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciBgYHpgYCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyBgYHoucmVhbGBgIGFuZCBgYHouaW1hZ2BgLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZlxuICAgaXRlbXMgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGVcbiAgIGluZGV4IHNldCBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2ZcbiAgIHNlcXVlbmNlICphKiBpcyBzZWxlY3RlZCBieSBgYGFbaV1gYC5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiBgYGFbaTpqXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqIGBgPD1gYCAqayogYGA8YGAgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6IGBgYVtpOmo6a11gYCBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCpcbiAgIHdoZXJlIGBgeCA9IGkgKyBuKmtgYCwgKm4qIGBgPj1gYCBgYDBgYCBhbmQgKmkqIGBgPD1gYCAqeCogYGA8YGBcbiAgICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHN0cmluZyBvYmplY3QgYXJlIFVuaWNvZGUgY29kZSB1bml0cy4gIEFcbiAgICAgICAgIFVuaWNvZGUgY29kZSB1bml0IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIG9iamVjdCBvZiBvbmVcbiAgICAgICAgIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWVcbiAgICAgICAgIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZVxuICAgICAgICAgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uIGhvd1xuICAgICAgICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXlcbiAgICAgICAgIGJlIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d29cbiAgICAgICAgIHNlcGFyYXRlIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNocigpYGAgYW5kXG4gICAgICAgICBgYG9yZCgpYGAgY29udmVydCBiZXR3ZWVuIGNvZGUgdW5pdHMgYW5kIG5vbm5lZ2F0aXZlIGludGVnZXJzXG4gICAgICAgICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgb3JkaW5hbHMgYXMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgICAgICAgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIG90aGVyIGVuY29kaW5ncyBhcmVcbiAgICAgICAgIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgYGBlbmNvZGUoKWBgLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19tb2R1bGVfX2BgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGVmYXVsdHNfX2BgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgbm8gYXJndW1lbnRzICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhhdmUgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY29kZV9fYGAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZ2xvYmFsc19fYGAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RpY3RfX2BgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Nsb3N1cmVfX2BgICAgICAgICAgICB8IGBgTm9uZWBgIG9yIGEgdHVwbGUgb2YgY2VsbHMgICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fYW5ub3RhdGlvbnNfX2BgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBcJ3JldHVyblwnYGAgZm9yIHRoZSByZXR1cm4gIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19rd2RlZmF1bHRzX19gYCAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYF9fc2VsZl9fYGAgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsIGBgX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyBgYF9fZG9jX19gYCBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzIGBgX19mdW5jX18uX19kb2NfX2BgKTtcbiAgICAgIGBgX19uYW1lX19gYCBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX25hbWVfX2BgKTtcbiAgICAgIGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZFxuICAgICAgaW4sIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kXG4gICAgICBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyBgYF9fc2VsZl9fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKGBgX19mdW5jX19gYCkgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoYGBfX3NlbGZfX2BgKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSxcbiAgICAgIHdoZW4gYGBDYGAgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb25cbiAgICAgIGBgZigpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYENgYCwgY2FsbGluZyBgYHguZigxKWBgXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBDLmYoeCwgMSlgYC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gYGBfX3NlbGZfX2BgIHdpbGxcbiAgICAgIGFjdHVhbGx5IGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgYGB4LmYoMSlgYFxuICAgICAgb3IgYGBDLmYoMSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBmKEMsMSlgYCB3aGVyZSBgYGZgYCBpc1xuICAgICAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzIGBgX19uZXh0X18oKWBgIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuICAgICAgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50LlxuICAgICAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSBgYHJldHVybmBgIHN0YXRlbWVudCBvciBmYWxscyBvZmZcbiAgICAgIHRoZSBlbmQsIGEgYGBTdG9wSXRlcmF0aW9uYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgYGBsZW4oKWBgIGFuZCBgYG1hdGguc2luKClgYFxuICAgICAgKGBgbWF0aGBgIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiBgYF9fZG9jX19gYCBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZTsgYGBfX25hbWVfX2BgIGlzIHRoZVxuICAgICAgZnVuY3Rpb25cJ3MgbmFtZTsgYGBfX3NlbGZfX2BgIGlzIHNldCB0byBgYE5vbmVgYCAoYnV0IHNlZSB0aGVcbiAgICAgIG5leHQgaXRlbSk7IGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlXG4gICAgICBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgYGBhbGlzdC5hcHBlbmQoKWBgLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgYGBfX3NlbGZfX2BgIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlIGBgX19uZXdfXygpYGAuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgYGBfX2luaXRfXygpYGAgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSBgYF9fY2FsbF9fKClgYCBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGltcG9ydGVkIGJ5IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCAoc2VlIHNlY3Rpb24gKlRoZVxuICAgaW1wb3J0IHN0YXRlbWVudCopLiBBIG1vZHVsZSBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5XG4gICBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlXG4gICBfX2dsb2JhbHNfXyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuXG4gICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3RcbiAgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXG4gICAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiBgYF9fZGljdF9fYGAgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBtb2R1bGVcJ3NcbiAgIG5hbWU7IGBgX19kb2NfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgXG4gICBpZiB1bmF2YWlsYWJsZTsgYGBfX2ZpbGVfX2BgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoXG4gICB0aGUgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZVxuICAgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlXG4gICBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzXG4gICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlXG4gICBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBDLnhgYCBpcyB0cmFuc2xhdGVkIHRvXG4gICBgYEMuX19kaWN0X19bIngiXWBgIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2hcbiAgIGFsbG93IGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlXG4gICBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzIGBgQ2BgLCBzYXkpIHdvdWxkIHlpZWxkXG4gICBhIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZXMgaXMgYGBDYGAuICBXaGVuIGl0IHdvdWxkIHlpZWxkXG4gICBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZFxuICAgYnkgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgYGBfX2RpY3RfX2BgLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgY2xhc3MgbmFtZTsgYGBfX21vZHVsZV9fYGBcbiAgIGlzIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IGBgX19kaWN0X19gYCBpc1xuICAgdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyBgYF9fYmFzZXNfX2BgIGlzIGFcbiAgIHR1cGxlIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLFxuICAgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDtcbiAgIGBgX19kb2NfX2BgIGlzIHRoZSBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZlxuICAgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wnc1xuICAgYGBfX2RpY3RfX2BgLiAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwnc1xuICAgY2xhc3MgaGFzIGEgYGBfX2dldGF0dHJfXygpYGAgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZVxuICAgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgIGBgX19zZXRhdHRyX18oKWBgIG9yIGBgX19kZWxhdHRyX18oKWBgIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19kaWN0X19gYCBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICBgYF9fY2xhc3NfX2BgIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cblxuSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4gICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlIGBgb3BlbigpYGAgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyBgYG9zLnBvcGVuKClgYCwgYGBvcy5mZG9wZW4oKWBgLCBhbmQgdGhlIGBgbWFrZWZpbGUoKWBgXG4gICBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzIGBgc3lzLnN0ZGluYGAsIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICBgYGlvLlRleHRJT0Jhc2VgYCBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgY29fbmFtZWBgIGdpdmVzIHRoZSBmdW5jdGlvblxuICAgICAgbmFtZTsgYGBjb19hcmdjb3VudGBgIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHNcbiAgICAgIChpbmNsdWRpbmcgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyBgYGNvX25sb2NhbHNgYCBpcyB0aGVcbiAgICAgIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzKTsgYGBjb192YXJuYW1lc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2ZcbiAgICAgIHRoZSBsb2NhbCB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTtcbiAgICAgIGBgY29fY2VsbHZhcnNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsXG4gICAgICB2YXJpYWJsZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zO1xuICAgICAgYGBjb19mcmVldmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZVxuICAgICAgdmFyaWFibGVzOyBgYGNvX2NvZGVgYCBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mXG4gICAgICBieXRlY29kZSBpbnN0cnVjdGlvbnM7IGBgY29fY29uc3RzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuICAgICAgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7IGBgY29fbmFtZXNgYCBpcyBhIHR1cGxlXG4gICAgICBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19maWxlbmFtZWBgIGlzXG4gICAgICB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICBgYGNvX2ZpcnN0bGluZW5vYGAgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbiAgICAgIGBgY29fbG5vdGFiYGAgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7IGBgY29fc3RhY2tzaXplYGAgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgYGBjb19mbGFnc2BgIGlzIGFuIGludGVnZXIgZW5jb2RpbmdcbiAgICAgIGEgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciBgYGNvX2ZsYWdzYGA6IGJpdFxuICAgICAgYGAweDA0YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCphcmd1bWVudHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXRcbiAgICAgIGBgMHgwOGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYGAqKmtleXdvcmRzYGAgc3ludGF4XG4gICAgICB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzOyBiaXQgYGAweDIwYGAgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gaXMgYSBnZW5lcmF0b3IuXG5cbiAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0XG4gICAgICBkaXZpc2lvbmBgKSBhbHNvIHVzZSBiaXRzIGluIGBgY29fZmxhZ3NgYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFcbiAgICAgIGNvZGUgb2JqZWN0IHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdFxuICAgICAgYGAweDIwMDBgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZVxuICAgICAgZGl2aXNpb24gZW5hYmxlZDsgYml0cyBgYDB4MTBgYCBhbmQgYGAweDEwMDBgYCB3ZXJlIHVzZWQgaW5cbiAgICAgIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluIGBgY29fZmxhZ3NgYCBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cblxuICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4gICAgICBgYGNvX2NvbnN0c2BgIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICBgYE5vbmVgYCBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgZl9iYWNrYGAgaXMgdG8gdGhlIHByZXZpb3VzXG4gICAgICBzdGFjayBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgYGBOb25lYGAgaWYgdGhpcyBpcyB0aGVcbiAgICAgIGJvdHRvbSBzdGFjayBmcmFtZTsgYGBmX2NvZGVgYCBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWRcbiAgICAgIGluIHRoaXMgZnJhbWU7IGBgZl9sb2NhbHNgYCBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXBcbiAgICAgIGxvY2FsIHZhcmlhYmxlczsgYGBmX2dsb2JhbHNgYCBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgYGBmX2J1aWx0aW5zYGAgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7XG4gICAgICBgYGZfbGFzdGlgYCBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvXG4gICAgICB0aGUgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG5cbiAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogYGBmX3RyYWNlYGAsIGlmIG5vdCBgYE5vbmVgYCwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgYGBmX2xpbmVub2BgIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyXG4gICAgICBvZiB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uXG4gICAgICBqdW1wcyB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEFcbiAgICAgIGRlYnVnZ2VyIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpXG4gICAgICBieSB3cml0aW5nIHRvIGZfbGluZW5vLlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICAqVGhlIHRyeSBzdGF0ZW1lbnQqLikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiB0aGVcbiAgICAgIHR1cGxlIHJldHVybmVkIGJ5IGBgc3lzLmV4Y19pbmZvKClgYC4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWluc1xuICAgICAgbm8gc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseVxuICAgICAgZm9ybWF0dGVkKSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXNcbiAgICAgIGludGVyYWN0aXZlLCBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzXG4gICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHRiX25leHRgYCBpcyB0aGUgbmV4dCBsZXZlbCBpblxuICAgICAgdGhlIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZCksIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7IGBgdGJfZnJhbWVgYFxuICAgICAgcG9pbnRzIHRvIHRoZSBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7XG4gICAgICBgYHRiX2xpbmVub2BgIGdpdmVzIHRoZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZDsgYGB0Yl9sYXN0aWBgIGluZGljYXRlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZVxuICAgICAgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyXG4gICAgICBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWUgb2JqZWN0IGlmIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkIGluIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBubyBtYXRjaGluZyBleGNlcHQgY2xhdXNlXG4gICAgICBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG5cbiAgIFNsaWNlIG9iamVjdHNcbiAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgYGBfX2dldGl0ZW1fXygpYGBcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluIGBgc2xpY2UoKWBgXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBzdGFydGBgIGlzIHRoZSBsb3dlciBib3VuZDtcbiAgICAgIGBgc3RvcGBgIGlzIHRoZSB1cHBlciBib3VuZDsgYGBzdGVwYGAgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXNcbiAgICAgIGBgTm9uZWBgIGlmIG9taXR0ZWQuIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHN0YXRpY21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gYGBjbGFzc21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG4nLAorICd0cnknOiAnXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gb3IgYGBicmVha2BgIHN0YXRlbWVudCwgaXQgaXNcbnJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIElmIHRoZSBgYGZpbmFsbHlgYFxuY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIHNldCBhcyB0aGVcbmNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb247IGlmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgZXhlY3V0ZXMgYVxuYGByZXR1cm5gYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgZGlzY2FyZGVkOlxuXG4gICBkZWYgZigpOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgMS8wXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgcmV0dXJuIDQyXG5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5XaGVuIGEgYGByZXR1cm5gYCwgYGBicmVha2BgIG9yIGBgY29udGludWVgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5cbnRoZSBgYHRyeWBgIHN1aXRlIG9mIGEgYGB0cnlgYC4uLmBgZmluYWxseWBgIHN0YXRlbWVudCwgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UgaXMgYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgaXMgaWxsZWdhbCBpbiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhXG5wcm9ibGVtIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlXG5saWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKKyAndHlwZXMnOiAnXG5UaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5CZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgRXh0ZW5zaW9uXG5tb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCBudW1iZXJzLFxuZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggYWRkaXRpb25zXG53aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgYGBOb25lYGAuXG4gICBJdCBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsXG4gICBlLmcuLCBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgYGBOb3RJbXBsZW1lbnRlZGBgLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIG1heVxuICAgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIHRoZVxuICAgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlIHJlZmxlY3RlZFxuICAgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yLikgIEl0c1xuICAgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCBgYC4uLmBgIG9yIHRoZVxuICAgYnVpbHQtaW4gbmFtZSBgYEVsbGlwc2lzYGAuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuYGBudW1iZXJzLk51bWJlcmBgXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgYGBudW1iZXJzLkludGVncmFsYGBcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcblxuICAgICAgSW50ZWdlcnMgKGBgaW50YGApXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoYGBib29sYGApXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgRmFsc2UgYW5kIFRydWUgYXJlIHRoZSBvbmx5XG4gICAgICAgICBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mIHRoZSBpbnRlZ2VyXG4gICAgICAgICB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZCAxLFxuICAgICAgICAgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uIGJlaW5nXG4gICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyBgYCJGYWxzZSJgYCBvclxuICAgICAgICAgYGAiVHJ1ZSJgYCBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgYGBudW1iZXJzLlJlYWxgYCAoYGBmbG9hdGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBpc1xuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgIGBgbnVtYmVycy5Db21wbGV4YGAgKGBgY29tcGxleGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgYGB6YGAgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgYGB6LnJlYWxgYCBhbmQgYGB6LmltYWdgYC5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYCByZXR1cm5zIHRoZSBudW1iZXIgb2ZcbiAgIGl0ZW1zIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlXG4gICBpbmRleCBzZXQgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mXG4gICBzZXF1ZW5jZSAqYSogaXMgc2VsZWN0ZWQgYnkgYGBhW2ldYGAuXG5cbiAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogYGBhW2k6al1gYCBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiBgYDw9YGAgKmsqIGBgPGBgICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzIGltcGxpZXNcbiAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG5cbiAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICJzdGVwIlxuICAgcGFyYW1ldGVyOiBgYGFbaTpqOmtdYGAgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqXG4gICB3aGVyZSBgYHggPSBpICsgbiprYGAsICpuKiBgYD49YGAgYGAwYGAgYW5kICppKiBgYDw9YGAgKngqIGBgPGBgXG4gICAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlXG4gICAgICAgICBjb2RlcG9pbnRzLiBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgXG4gICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc25cJ3QgaGF2ZSBhXG4gICAgICAgICBgYGNocmBgIHR5cGUsIGFuZCBldmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpc1xuICAgICAgICAgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoIGBgMWBgLiAgVGhlIGJ1aWx0LVxuICAgICAgICAgaW4gZnVuY3Rpb24gYGBvcmQoKWBgIGNvbnZlcnRzIGEgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnRcbiAgICAgICAgIChhcyBhbiBpbnRlZ2VyKTsgYGBjaHIoKWBgIGNvbnZlcnRzIGFuIGludGVnZXIgaW4gcmFuZ2UgYGAwIC1cbiAgICAgICAgIDEwRkZGRmBgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gYGBzdHIuZW5jb2RlKClgYCBjYW5cbiAgICAgICAgIGJlIHVzZWQgdG8gY29udmVydCBhIGBgc3RyYGAgdG8gYGBieXRlc2BgIHVzaW5nIHRoZSBnaXZlblxuICAgICAgICAgZW5jb2RpbmcsIGFuZCBgYGJ5dGVzLmRlY29kZSgpYGAgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGVcbiAgICAgICAgIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19xdWFsbmFtZV9fYGAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fbW9kdWxlX19gYCAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RlZmF1bHRzX19gYCAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgIGlmIG5vIGFyZ3VtZW50cyAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2NvZGVfX2BgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2dsb2JhbHNfX2BgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19kaWN0X19gYCAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19jbG9zdXJlX19gYCAgICAgICAgICAgfCBgYE5vbmVgYCBvciBhIHR1cGxlIG9mIGNlbGxzICAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Fubm90YXRpb25zX19gYCAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgXCdyZXR1cm5cJ2BgIGZvciB0aGUgcmV0dXJuICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fa3dkZWZhdWx0c19fYGAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBfX3NlbGZfX2BgIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCBgYF9fZnVuY19fYGAgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgYGBfX2RvY19fYGAgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyBgYF9fZnVuY19fLl9fZG9jX19gYCk7XG4gICAgICBgYF9fbmFtZV9fYGAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzIGBgX19mdW5jX18uX19uYW1lX19gYCk7XG4gICAgICBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWRcbiAgICAgIGluLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItXG4gICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgaW5zdGFuY2VzLFxuICAgICAgaXRzIGBgX19zZWxmX19gYCBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZFxuICAgICAgb2JqZWN0IGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kIG9iamVjdFxuICAgICAgYnV0IGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgYGBfX3NlbGZfX2BgXG4gICAgICBhdHRyaWJ1dGUgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uIChgYF9fZnVuY19fYGApIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKGBgX19zZWxmX19gYCkgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsXG4gICAgICB3aGVuIGBgQ2BgIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uXG4gICAgICBgYGYoKWBgLCBhbmQgYGB4YGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBDYGAsIGNhbGxpbmcgYGB4LmYoMSlgYFxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgQy5mKHgsIDEpYGAuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluIGBgX19zZWxmX19gYCB3aWxsXG4gICAgICBhY3R1YWxseSBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyIGBgeC5mKDEpYGBcbiAgICAgIG9yIGBgQy5mKDEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgZihDLDEpYGAgd2hlcmUgYGBmYGAgaXNcbiAgICAgIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyBgYF9fbmV4dF9fKClgYCBtZXRob2Qgd2lsbCBjYXVzZSB0aGUgZnVuY3Rpb24gdG9cbiAgICAgIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudC5cbiAgICAgIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBzdGF0ZW1lbnQgb3IgZmFsbHMgb2ZmXG4gICAgICB0aGUgZW5kLCBhIGBgU3RvcEl0ZXJhdGlvbmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGBgbGVuKClgYCBhbmQgYGBtYXRoLnNpbigpYGBcbiAgICAgIChgYG1hdGhgYCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogYGBfX2RvY19fYGAgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGU7IGBgX19uYW1lX19gYCBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uXCdzIG5hbWU7IGBgX19zZWxmX19gYCBpcyBzZXQgdG8gYGBOb25lYGAgKGJ1dCBzZWUgdGhlXG4gICAgICBuZXh0IGl0ZW0pOyBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZVxuICAgICAgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4gb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgIGBgYWxpc3QuYXBwZW5kKClgYCwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlIGBgX19zZWxmX19gYCBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSBgYF9fbmV3X18oKWBgLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgIGBgX19pbml0X18oKWBgIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgYGBfX2NhbGxfXygpYGAgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbiAgIGNyZWF0ZWQgYnkgdGhlICppbXBvcnQgc3lzdGVtKiBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgYGBpbXBvcnRgYFxuICAgc3RhdGVtZW50IChzZWUgYGBpbXBvcnRgYCksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgIGBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGFuZCBidWlsdC1pbiBgYF9faW1wb3J0X18oKWBgLiAgQVxuICAgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdFxuICAgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgIGF0dHJpYnV0ZVxuICAgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXNcbiAgIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW5cbiAgIHRoZSBjb2RlIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0XG4gICBuZWVkZWQgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuXG5cbiAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogYGBfX2RpY3RfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgbW9kdWxlXCdzXG4gICBuYW1lOyBgYF9fZG9jX19gYCBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYFxuICAgaWYgdW5hdmFpbGFibGU7IGBgX19maWxlX19gYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaFxuICAgdGhlIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGVcbiAgIGBgX19maWxlX19gYCBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcyxcbiAgIHN1Y2ggYXMgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyO1xuICAgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0XG4gICBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYEMueGBgIGlzIHRyYW5zbGF0ZWQgdG9cbiAgIGBgQy5fX2RpY3RfX1sieCJdYGAgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaFxuICAgYWxsb3cgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGVcbiAgIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgYGBDYGAsIHNheSkgd291bGQgeWllbGRcbiAgIGEgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlcyBpcyBgYENgYC4gIFdoZW4gaXQgd291bGQgeWllbGRcbiAgIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkXG4gICBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyBgYF9fZGljdF9fYGAuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBjbGFzcyBuYW1lOyBgYF9fbW9kdWxlX19gYFxuICAgaXMgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgYGBfX2RpY3RfX2BgIGlzXG4gICB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7IGBgX19iYXNlc19fYGAgaXMgYVxuICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsXG4gICBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0O1xuICAgYGBfX2RvY19fYGAgaXMgdGhlIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmXG4gICB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzXG4gICBgYF9fZGljdF9fYGAuICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzXG4gICBjbGFzcyBoYXMgYSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlXG4gICBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgYGBfX3NldGF0dHJfXygpYGAgb3IgYGBfX2RlbGF0dHJfXygpYGAgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX2RpY3RfX2BgIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgIGBgX19jbGFzc19fYGAgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgYGBvcGVuKClgYCBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvIGBgb3MucG9wZW4oKWBgLCBgYG9zLmZkb3BlbigpYGAsIGFuZCB0aGUgYGBtYWtlZmlsZSgpYGBcbiAgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgYGBzeXMuc3RkaW5gYCwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgIGBgaW8uVGV4dElPQmFzZWBgIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBjb19uYW1lYGAgZ2l2ZXMgdGhlIGZ1bmN0aW9uXG4gICAgICBuYW1lOyBgYGNvX2FyZ2NvdW50YGAgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAgKGluY2x1ZGluZyBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7IGBgY29fbmxvY2Fsc2BgIGlzIHRoZVxuICAgICAgbnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMpOyBgYGNvX3Zhcm5hbWVzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZlxuICAgICAgdGhlIGxvY2FsIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpO1xuICAgICAgYGBjb19jZWxsdmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7XG4gICAgICBgYGNvX2ZyZWV2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlXG4gICAgICB2YXJpYWJsZXM7IGBgY29fY29kZWBgIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgYGBjb19jb25zdHNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG4gICAgICBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19uYW1lc2BgIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX2ZpbGVuYW1lYGAgaXNcbiAgICAgIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgIGBgY29fZmlyc3RsaW5lbm9gYCBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgYGBjb19sbm90YWJgYCBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgYGBjb19zdGFja3NpemVgYCBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyBgYGNvX2ZsYWdzYGAgaXMgYW4gaW50ZWdlciBlbmNvZGluZ1xuICAgICAgYSBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yIGBgY29fZmxhZ3NgYDogYml0XG4gICAgICBgYDB4MDRgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKmFyZ3VtZW50c2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdFxuICAgICAgYGAweDA4YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCoqa2V5d29yZHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHM7IGJpdCBgYDB4MjBgYCBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zIChgYGZyb20gX19mdXR1cmVfXyBpbXBvcnRcbiAgICAgIGRpdmlzaW9uYGApIGFsc28gdXNlIGJpdHMgaW4gYGBjb19mbGFnc2BgIHRvIGluZGljYXRlIHdoZXRoZXIgYVxuICAgICAgY29kZSBvYmplY3Qgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0XG4gICAgICBgYDB4MjAwMGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlXG4gICAgICBkaXZpc2lvbiBlbmFibGVkOyBiaXRzIGBgMHgxMGBgIGFuZCBgYDB4MTAwMGBgIHdlcmUgdXNlZCBpblxuICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gYGBjb19mbGFnc2BgIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgIGBgY29fY29uc3RzYGAgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBmX2JhY2tgYCBpcyB0byB0aGUgcHJldmlvdXNcbiAgICAgIHN0YWNrIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciBgYE5vbmVgYCBpZiB0aGlzIGlzIHRoZVxuICAgICAgYm90dG9tIHN0YWNrIGZyYW1lOyBgYGZfY29kZWBgIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZFxuICAgICAgaW4gdGhpcyBmcmFtZTsgYGBmX2xvY2Fsc2BgIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cFxuICAgICAgbG9jYWwgdmFyaWFibGVzOyBgYGZfZ2xvYmFsc2BgIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICBgYGZfYnVpbHRpbnNgYCBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lcztcbiAgICAgIGBgZl9sYXN0aWBgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG9cbiAgICAgIHRoZSBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiBgYGZfdHJhY2VgYCwgaWYgbm90IGBgTm9uZWBgLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyBgYGZfbGluZW5vYGAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgIG9mIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb25cbiAgICAgIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQVxuICAgICAgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudClcbiAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgYGBzeXMuZXhjX2luZm8oKWBgLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zXG4gICAgICBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5XG4gICAgICBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpc1xuICAgICAgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXNcbiAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgdGJfbmV4dGBgIGlzIHRoZSBuZXh0IGxldmVsIGluXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkKSwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgYGB0Yl9mcmFtZWBgXG4gICAgICBwb2ludHMgdG8gdGhlIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDtcbiAgICAgIGBgdGJfbGluZW5vYGAgZ2l2ZXMgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkOyBgYHRiX2xhc3RpYGAgaW5kaWNhdGVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlXG4gICAgICBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXJcbiAgICAgIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZSBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQgaW4gYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIG5vIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2VcbiAgICAgIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciBgYF9fZ2V0aXRlbV9fKClgYFxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gYGBzbGljZSgpYGBcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHN0YXJ0YGAgaXMgdGhlIGxvd2VyIGJvdW5kO1xuICAgICAgYGBzdG9wYGAgaXMgdGhlIHVwcGVyIGJvdW5kOyBgYHN0ZXBgYCBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpc1xuICAgICAgYGBOb25lYGAgaWYgb21pdHRlZC4gVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgIGBgc3RhdGljbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiBgYGNsYXNzbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cbicsCiAgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogYGBmdW5jKGFyZ3VtZW50LWxpc3QpYGAuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtYXBwaW5nJzogJ1xuTWFwcGluZyBUeXBlcyAtLS0gYGBkaWN0YGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHRcbmluIGBgbGlzdGBgLCBgYHNldGBgLCBhbmQgYGB0dXBsZWBgIGNsYXNzZXMsIGFuZCB0aGUgYGBjb2xsZWN0aW9uc2BgXG5tb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgYGAxYGAgYW5kIGBgMS4wYGApIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG9cbmluZGV4IHRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVyc1xuc3RvcmUgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0b1xudXNlIHRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZlxuYGBrZXk6IHZhbHVlYGAgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6IGBge1wnamFja1wnOiA0MDk4LFxuXCdzam9lcmRcJzogNDEyN31gYCBvciBgYHs0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ31gYCwgb3IgYnkgdGhlXG5gYGRpY3RgYCBjb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdChbYXJnXSlcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBvciBmcm9tIGEgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgbm8gYXJndW1lbnRzIGFyZVxuICAgZ2l2ZW4sIHJldHVybiBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LiAgSWYgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICphcmcqIGlzIGEgbWFwcGluZyBvYmplY3QsIHJldHVybiBhIGRpY3Rpb25hcnkgbWFwcGluZyB0aGUgc2FtZVxuICAga2V5cyB0byB0aGUgc2FtZSB2YWx1ZXMgYXMgZG9lcyB0aGUgbWFwcGluZyBvYmplY3QuICBPdGhlcndpc2UgdGhlXG4gICBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0c1xuICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBUaGUgZWxlbWVudHMgb2YgdGhlIGFyZ3VtZW50XG4gICBtdXN0IGVhY2ggYWxzbyBiZSBvZiBvbmUgb2YgdGhvc2Uga2luZHMsIGFuZCBlYWNoIG11c3QgaW4gdHVyblxuICAgY29udGFpbiBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IGlzIHVzZWQgYXMgYSBrZXkgaW4gdGhlIG5ld1xuICAgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgYXMgdGhlIGtleVwncyB2YWx1ZS4gIElmIGEgZ2l2ZW4ga2V5IGlzXG4gICBzZWVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQgaXMgcmV0YWluZWRcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZHMgdGhlbXNlbHZlcyB3aXRoIHRoZWlyXG4gICBhc3NvY2lhdGVkIHZhbHVlcyBhcmUgYWRkZWQgYXMgaXRlbXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJZiBhIGtleVxuICAgaXMgc3BlY2lmaWVkIGJvdGggaW4gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kIGFzIGEga2V5d29yZFxuICAgYXJndW1lbnQsIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXdvcmQgaXMgcmV0YWluZWQgaW4gdGhlXG4gICBkaWN0aW9uYXJ5LiAgRm9yIGV4YW1wbGUsIHRoZXNlIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsIHRvXG4gICBgYHsib25lIjogMSwgInR3byI6IDJ9YGA6XG5cbiAgICogYGBkaWN0KG9uZT0xLCB0d289MilgYFxuXG4gICAqIGBgZGljdCh7XCdvbmVcJzogMSwgXCd0d29cJzogMn0pYGBcblxuICAgKiBgYGRpY3QoemlwKChcJ29uZVwnLCBcJ3R3b1wnKSwgKDEsIDIpKSlgYFxuXG4gICAqIGBgZGljdChbW1wndHdvXCcsIDJdLCBbXCdvbmVcJywgMV1dKWBgXG5cbiAgIFRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uXG4gICBpZGVudGlmaWVyczsgdGhlIG90aGVycyB3b3JrIHdpdGggYW55IHZhbGlkIGtleXMuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCBgYF9fbWlzc2luZ19fKClgYCwgaWYgdGhlXG4gICAgICBrZXkgKmtleSogaXMgbm90IHByZXNlbnQsIHRoZSBgYGRba2V5XWBgIG9wZXJhdGlvbiBjYWxscyB0aGF0XG4gICAgICBtZXRob2Qgd2l0aCB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uXG4gICAgICB0aGVuIHJldHVybnMgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgIGBgX19taXNzaW5nX18oa2V5KWBgIGNhbGwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudC4gTm8gb3RoZXJcbiAgICAgIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2UgYGBfX21pc3NpbmdfXygpYGAuIElmXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBpcyBub3QgZGVmaW5lZCwgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cbiAgICAgIGBgX19taXNzaW5nX18oKWBgIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhbiBpbnN0YW5jZVxuICAgICAgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFNlZSBgYGNvbGxlY3Rpb25zLkNvdW50ZXJgYCBmb3IgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvblxuICAgICAgaW5jbHVkaW5nIG90aGVyIG1ldGhvZHMgaGVscGZ1bCBmb3IgYWNjdW11bGF0aW5nIGFuZCBtYW5hZ2luZ1xuICAgICAgdGFsbGllcy5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0IGBgZFtrZXldYGAgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgYGBkW2tleV1gYCBmcm9tICpkKi4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZiAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiBgYFRydWVgYCBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlIGBgRmFsc2VgYC5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gYGBub3Qga2V5IGluIGRgYC5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihkLmtleXMoKSlgYC5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgIGBgZnJvbWtleXMoKWBgIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCxcbiAgICAgIHNvIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgXG4gICAgICBwYWlycykuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgYGAoa2V5LCB2YWx1ZSlgYCBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICBgYHBvcGl0ZW0oKWBgIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nIGBgcG9waXRlbSgpYGAgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiBgYE5vbmVgYC5cblxuICAgICAgYGB1cGRhdGUoKWBgIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiBgYGQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKWBgLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgYmVsb3cgZm9yXG4gICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5TZXRgYCBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLFxuYGA8YGAsIG9yIGBgXmBgKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCisgJ3R5cGVzbWFwcGluZyc6ICdcbk1hcHBpbmcgVHlwZXMgLS0tIGBgZGljdGBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KFthcmddKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IG9yIGZyb20gYSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuICBJZiBubyBhcmd1bWVudHMgYXJlXG4gICBnaXZlbiwgcmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuICBJZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgKmFyZyogaXMgYSBtYXBwaW5nIG9iamVjdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSBzYW1lXG4gICBrZXlzIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyBkb2VzIHRoZSBtYXBwaW5nIG9iamVjdC4gIE90aGVyd2lzZSB0aGVcbiAgIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzXG4gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJndW1lbnRcbiAgIG11c3QgZWFjaCBhbHNvIGJlIG9mIG9uZSBvZiB0aG9zZSBraW5kcywgYW5kIGVhY2ggbXVzdCBpbiB0dXJuXG4gICBjb250YWluIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3QgaXMgdXNlZCBhcyBhIGtleSBpbiB0aGUgbmV3XG4gICBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBhcyB0aGUga2V5XCdzIHZhbHVlLiAgSWYgYSBnaXZlbiBrZXkgaXNcbiAgIHNlZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyByZXRhaW5lZFxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHdpdGggdGhlaXJcbiAgIGFzc29jaWF0ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBpdGVtcyB0byB0aGUgZGljdGlvbmFyeS4gIElmIGEga2V5XG4gICBpcyBzcGVjaWZpZWQgYm90aCBpbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgYXMgYSBrZXl3b3JkXG4gICBhcmd1bWVudCwgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5d29yZCBpcyByZXRhaW5lZCBpbiB0aGVcbiAgIGRpY3Rpb25hcnkuICBGb3IgZXhhbXBsZSwgdGhlc2UgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWwgdG9cbiAgIGBgeyJvbmUiOiAxLCAidHdvIjogMn1gYDpcblxuICAgKiBgYGRpY3Qob25lPTEsIHR3bz0yKWBgXG5cbiAgICogYGBkaWN0KHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlgYFxuXG4gICAqIGBgZGljdCh6aXAoKFwnb25lXCcsIFwndHdvXCcpLCAoMSwgMikpKWBgXG5cbiAgICogYGBkaWN0KFtbXCd0d29cJywgMl0sIFtcJ29uZVwnLCAxXV0pYGBcblxuICAgVGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3Iga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob25cbiAgIGlkZW50aWZpZXJzOyB0aGUgb3RoZXJzIHdvcmsgd2l0aCBhbnkgdmFsaWQga2V5cy5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kIGBgX19taXNzaW5nX18oKWBgLCBpZiB0aGVcbiAgICAgIGtleSAqa2V5KiBpcyBub3QgcHJlc2VudCwgdGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uIGNhbGxzIHRoYXRcbiAgICAgIG1ldGhvZCB3aXRoIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgYGBkW2tleV1gYCBvcGVyYXRpb25cbiAgICAgIHRoZW4gcmV0dXJucyBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgYGBfX21pc3NpbmdfXyhrZXkpYGAgY2FsbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LiBObyBvdGhlclxuICAgICAgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZSBgYF9fbWlzc2luZ19fKClgYC4gSWZcbiAgICAgIGBgX19taXNzaW5nX18oKWBgIGlzIG5vdCBkZWZpbmVkLCBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuIGluc3RhbmNlXG4gICAgICB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgU2VlIGBgY29sbGVjdGlvbnMuQ291bnRlcmBgIGZvciBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uXG4gICAgICBpbmNsdWRpbmcgb3RoZXIgbWV0aG9kcyBoZWxwZnVsIGZvciBhY2N1bXVsYXRpbmcgYW5kIG1hbmFnaW5nXG4gICAgICB0YWxsaWVzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgYGBkW2tleV1gYCB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSBgYGRba2V5XWBgIGZyb20gKmQqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgYGBGYWxzZWBgLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byBgYG5vdCBrZXkgaW4gZGBgLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKGQua2V5cygpKWBgLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgYGBmcm9ta2V5cygpYGAgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLFxuICAgICAgc28gdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGBcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSBgYChrZXksIHZhbHVlKWBgIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgIGBgcG9waXRlbSgpYGAgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgYGBwb3BpdGVtKClgYCByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuIGBgTm9uZWBgLlxuXG4gICAgICBgYHVwZGF0ZSgpYGAgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6IGBgZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpYGAuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cblNlZSBhbHNvOlxuXG4gICBgYHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlld1xuICAgb2YgYSBgYGRpY3RgYC5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5hYmMuU2V0YGAgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCxcbmBgPGBgLCBvciBgYF5gYCkuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAogICd0eXBlc21ldGhvZHMnOiAiXG5NZXRob2RzXG4qKioqKioqXG5cbk1ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBub3RhdGlvbi5cblRoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyBgYGFwcGVuZCgpYGAgb25cbmxpc3RzKSBhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZFxud2l0aCB0aGUgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGVcbmBgc2VsZmBgIGFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3b1xuc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBtLl9fc2VsZl9fYGAgaXMgdGhlIG9iamVjdCBvbiB3aGljaFxudGhlIG1ldGhvZCBvcGVyYXRlcywgYW5kIGBgbS5fX2Z1bmNfX2BgIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmdcbnRoZSBtZXRob2QuICBDYWxsaW5nIGBgbShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pYGAgaXMgY29tcGxldGVseVxuZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgbS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLixcbmFyZy1uKWBgLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKGBgbWV0aC5fX2Z1bmNfX2BgKSwgc2V0dGluZyBtZXRob2RcbmF0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byBzZXQgYSBtZXRob2RcbmF0dHJpYnV0ZSByZXN1bHRzIGluIGEgYGBUeXBlRXJyb3JgYCBiZWluZyByYWlzZWQuICBJbiBvcmRlciB0byBzZXQgYVxubWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlIHVuZGVybHlpbmdcbmZ1bmN0aW9uIG9iamVjdDpcblxuICAgY2xhc3MgQzpcbiAgICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuICAgICAgICAgICBwYXNzXG5cbiAgIGMgPSBDKClcbiAgIGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9ICdteSBuYW1lIGlzIGMnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAgJ3R5cGVzbW9kdWxlcyc6ICJcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczpcbmBgbS5uYW1lYGAsIHdoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkXG5pbiAqbSoncyBzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlXG50aGF0IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb25cbm9uIGEgbW9kdWxlIG9iamVjdDsgYGBpbXBvcnQgZm9vYGAgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3Rcbm5hbWVkICpmb28qIHRvIGV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbipcbmZvciBhIG1vZHVsZSBuYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyBgYF9fZGljdF9fYGAuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgYGBfX2RpY3RfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW5cbndyaXRlIGBgbS5fX2RpY3RfX1snYSddID0gMWBgLCB3aGljaCBkZWZpbmVzIGBgbS5hYGAgdG8gYmUgYGAxYGAsIGJ1dFxueW91IGNhbid0IHdyaXRlIGBgbS5fX2RpY3RfXyA9IHt9YGApLiAgTW9kaWZ5aW5nIGBgX19kaWN0X19gYCBkaXJlY3RseVxuaXMgbm90IHJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8bW9kdWxlXG4nc3lzJyAoYnVpbHQtaW4pPmBgLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG5gYDxtb2R1bGUgJ29zJyBmcm9tICcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljJz5gYC5cbiIsCi0gJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgc3RyYGAsIGBgYnl0ZXNgYCwgYGBieXRlYXJyYXlgYCwgYGBsaXN0YGAsIGBgdHVwbGVgYCwgYGByYW5nZWBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNpeCBzZXF1ZW5jZSB0eXBlczogc3RyaW5ncywgYnl0ZSBzZXF1ZW5jZXMgKGBgYnl0ZXNgYFxub2JqZWN0cyksIGJ5dGUgYXJyYXlzIChgYGJ5dGVhcnJheWBgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmRcbnJhbmdlIG9iamVjdHMuICBGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIGBgZGljdGBgIGFuZFxuYGBzZXRgYCBjbGFzc2VzLCBhbmQgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblN0cmluZ3MgY29udGFpbiBVbmljb2RlIGNoYXJhY3RlcnMuICBUaGVpciBsaXRlcmFscyBhcmUgd3JpdHRlbiBpblxuc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXM6IGBgXCd4eXp6eVwnYGAsIGBgImZyb2JvenoiYGAuICBTZWUgKlN0cmluZyBhbmRcbkJ5dGVzIGxpdGVyYWxzKiBmb3IgbW9yZSBhYm91dCBzdHJpbmcgbGl0ZXJhbHMuICBJbiBhZGRpdGlvbiB0byB0aGVcbmZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZSBhbHNvIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTdHJpbmcgTWV0aG9kcyogc2VjdGlvbi5cblxuQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNvbnRhaW4gc2luZ2xlIGJ5dGVzIC0tIHRoZSBmb3JtZXIgaXNcbmltbXV0YWJsZSB3aGlsZSB0aGUgbGF0dGVyIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZS4gIEJ5dGVzIG9iamVjdHMgY2FuXG5iZSBjb25zdHJ1Y3RlZCB0aGUgY29uc3RydWN0b3IsIGBgYnl0ZXMoKWBgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGFcbmBgYmBgIHByZWZpeCB3aXRoIG5vcm1hbCBzdHJpbmcgc3ludGF4OiBgYGJcJ3h5enp5XCdgYC4gIFRvIGNvbnN0cnVjdFxuYnl0ZSBhcnJheXMsIHVzZSB0aGUgYGBieXRlYXJyYXkoKWBgIGZ1bmN0aW9uLlxuXG5XaGlsZSBzdHJpbmcgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGNoYXJhY3RlcnMgKHJlcHJlc2VudGVkIGJ5XG5zdHJpbmdzIG9mIGxlbmd0aCAxKSwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2ZcbippbnRlZ2VycyogKGJldHdlZW4gMCBhbmQgMjU1KSwgcmVwcmVzZW50aW5nIHRoZSBBU0NJSSB2YWx1ZSBvZiBzaW5nbGVcbmJ5dGVzLiAgVGhhdCBtZWFucyB0aGF0IGZvciBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QgKmIqLCBgYGJbMF1gYFxud2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvciBieXRlYXJyYXlcbm9iamVjdCBvZiBsZW5ndGggMS4gIFRoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlXG5saXRlcmFsIGZvcm1hdCAoYGBiXCcuLi5cJ2BgKSBzaW5jZSBpdCBpcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhblxuZS5nLiBgYGJ5dGVzKFs1MCwgMTksIDEwMF0pYGAuICBZb3UgY2FuIGFsd2F5cyBjb252ZXJ0IGEgYnl0ZXMgb2JqZWN0XG5pbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC5cblxuQWxzbywgd2hpbGUgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zLCBieXRlIHN0cmluZ3MgYW5kIFVuaWNvZGVcbnN0cmluZ3MgY291bGQgYmUgZXhjaGFuZ2VkIGZvciBlYWNoIG90aGVyIHJhdGhlciBmcmVlbHkgKGJhcnJpbmdcbmVuY29kaW5nIGlzc3VlcyksIHN0cmluZ3MgYW5kIGJ5dGVzIGFyZSBub3cgY29tcGxldGVseSBzZXBhcmF0ZVxuY29uY2VwdHMuICBUaGVyZVwncyBubyBpbXBsaWNpdCBlbi0vZGVjb2RpbmcgaWYgeW91IHBhc3MgYW4gb2JqZWN0IG9mXG50aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cyBjb21wYXJlcyB1bmVxdWFsIHRvIGEgYnl0ZXMgb3JcbmJ5dGVhcnJheSBvYmplY3QuXG5cbkxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoXG5jb21tYXM6IGBgW2EsIGIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvclxuKG5vdCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcyxcbmJ1dCBhbiBlbXB0eSB0dXBsZSBtdXN0IGhhdmUgdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsXG5iLCBjYGAgb3IgYGAoKWBgLiAgQSBzaW5nbGUgaXRlbSB0dXBsZSBtdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSxcbnN1Y2ggYXMgYGAoZCwpYGAuXG5cbk9iamVjdHMgb2YgdHlwZSByYW5nZSBhcmUgY3JlYXRlZCB1c2luZyB0aGUgYGByYW5nZSgpYGAgZnVuY3Rpb24uXG5UaGV5IGRvblwndCBzdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbiwgYW5kIHVzaW5nIGBgbWluKClgYCBvclxuYGBtYXgoKWBgIG9uIHRoZW0gaXMgaW5lZmZpY2llbnQuXG5cbk1vc3Qgc2VxdWVuY2UgdHlwZXMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuICBUaGUgYGBpbmBgIGFuZFxuYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvblxub3BlcmF0aW9ucy4gIFRoZSBgYCtgYCBhbmQgYGAqYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzXG50aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuIFszXSBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlXG5wcm92aWRlZCBmb3IgKk11dGFibGUgU2VxdWVuY2UgVHlwZXMqLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbiwgbiAqIHNgYCAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al1gYCAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtYXgocylgYCAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KGkpYGAgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KGkpYGAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZFxubGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nXG5lbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3RcbmNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZVxudGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW4gdGhlIGxhbmd1YWdlXG5yZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnNcbiAgIGFjdCBsaWtlIGEgc3Vic3RyaW5nIHRlc3QuXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgID4+PiBsaXN0c1xuICAgW1tdLCBbXSwgW11dXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgPj4+IGxpc3RzXG4gICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc3RyaW5ncyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsXG4gICBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhXG4gICBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXNcbiAgIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQ7XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYGJ5dGVzYGAgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgIGBgYnl0ZXMuam9pbigpYGAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UgY29uY2F0ZW5hdGlvbiB3aXRoIGFcbiAgICAgYGBieXRlYXJyYXlgYCBvYmplY3QuICBgYGJ5dGVhcnJheWBgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmVcbiAgICAgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbS5cblxuXG5TdHJpbmcgTWV0aG9kc1xuPT09PT09PT09PT09PT1cblxuU3RyaW5nIG9iamVjdHMgc3VwcG9ydCB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3cuXG5cbkluIGFkZGl0aW9uLCBQeXRob25cJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGxpc3QsXG50dXBsZSwgcmFuZ2UqIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSAqU3RyaW5nXG5Gb3JtYXR0aW5nKiBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIGBgcmVgYCBtb2R1bGUgZm9yIHN0cmluZyBmdW5jdGlvbnNcbmJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBsaW1pdFxuICAgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cblxuT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbk5vdGU6IFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgYXJlIG9ic29sZXRlIGFuZCBtYXkgZ29cbiAgYXdheSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLiAgVXNlIHRoZSBuZXcgKlN0cmluZyBGb3JtYXR0aW5nKlxuICBpbiBuZXcgY29kZS5cblxuU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yXG4obW9kdWxvKS4gVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yXG4qaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzXG5hIHN0cmluZyksIGBgJWBgIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkXG53aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZVxudXNpbmcgYGBzcHJpbnRmKClgYCBpbiB0aGUgQyBsYW5ndWFnZS5cblxuSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tXG50dXBsZSBvYmplY3QuIFs1XSAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5XG50aGUgbnVtYmVyIG9mIGl0ZW1zIHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IHN0cmluZywgb3IgYSBzaW5nbGVcbm1hcHBpbmcgb2JqZWN0IChmb3IgZXhhbXBsZSwgYSBkaWN0aW9uYXJ5KS5cblxuQSBjb252ZXJzaW9uIHNwZWNpZmllciBjb250YWlucyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGFuZCBoYXMgdGhlXG5mb2xsb3dpbmcgY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOlxuXG4xLiBUaGUgYGBcJyVcJ2BgIGNoYXJhY3Rlciwgd2hpY2ggbWFya3MgdGhlIHN0YXJ0IG9mIHRoZSBzcGVjaWZpZXIuXG5cbjIuIE1hcHBpbmcga2V5IChvcHRpb25hbCksIGNvbnNpc3Rpbmcgb2YgYSBwYXJlbnRoZXNpc2VkIHNlcXVlbmNlIG9mXG4gICBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSwgYGAoc29tZW5hbWUpYGApLlxuXG4zLiBDb252ZXJzaW9uIGZsYWdzIChvcHRpb25hbCksIHdoaWNoIGFmZmVjdCB0aGUgcmVzdWx0IG9mIHNvbWVcbiAgIGNvbnZlcnNpb24gdHlwZXMuXG5cbjQuIE1pbmltdW0gZmllbGQgd2lkdGggKG9wdGlvbmFsKS4gIElmIHNwZWNpZmllZCBhcyBhbiBgYFwnKlwnYGBcbiAgIChhc3RlcmlzayksIHRoZSBhY3R1YWwgd2lkdGggaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlXG4gICB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGVcbiAgIG1pbmltdW0gZmllbGQgd2lkdGggYW5kIG9wdGlvbmFsIHByZWNpc2lvbi5cblxuNS4gUHJlY2lzaW9uIChvcHRpb25hbCksIGdpdmVuIGFzIGEgYGBcJy5cJ2BgIChkb3QpIGZvbGxvd2VkIGJ5IHRoZVxuICAgcHJlY2lzaW9uLiAgSWYgc3BlY2lmaWVkIGFzIGBgXCcqXCdgYCAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsXG4gICBwcmVjaXNpb24gaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLFxuICAgYW5kIHRoZSB2YWx1ZSB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZSBwcmVjaXNpb24uXG5cbjYuIExlbmd0aCBtb2RpZmllciAob3B0aW9uYWwpLlxuXG43LiBDb252ZXJzaW9uIHR5cGUuXG5cbldoZW4gdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIGEgZGljdGlvbmFyeSAob3Igb3RoZXIgbWFwcGluZyB0eXBlKSwgdGhlblxudGhlIGZvcm1hdHMgaW4gdGhlIHN0cmluZyAqbXVzdCogaW5jbHVkZSBhIHBhcmVudGhlc2lzZWQgbWFwcGluZyBrZXlcbmludG8gdGhhdCBkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBgYFwnJVwnYGAgY2hhcmFjdGVyLlxuVGhlIG1hcHBpbmcga2V5IHNlbGVjdHMgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZCBmcm9tIHRoZSBtYXBwaW5nLlxuRm9yIGV4YW1wbGU6XG5cbj4+PiBwcmludChcJyUobGFuZ3VhZ2UpcyBoYXMgJShudW1iZXIpMDNkIHF1b3RlIHR5cGVzLlwnICVcbi4uLiAgICAgICB7XCdsYW5ndWFnZVwnOiAiUHl0aG9uIiwgIm51bWJlciI6IDJ9KVxuUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuXG5cbkluIHRoaXMgY2FzZSBubyBgYCpgYCBzcGVjaWZpZXJzIG1heSBvY2N1ciBpbiBhIGZvcm1hdCAoc2luY2UgdGhleVxucmVxdWlyZSBhIHNlcXVlbnRpYWwgcGFyYW1ldGVyIGxpc3QpLlxuXG5UaGUgY29udmVyc2lvbiBmbGFnIGNoYXJhY3RlcnMgYXJlOlxuXG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IEZsYWcgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgXCcjXCdgYCAgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgZm9ybSIgKHdoZXJlIGRlZmluZWQgICAgIHxcbnwgICAgICAgICAgIHwgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJzBcJ2BgICAgfCBUaGUgY29udmVyc2lvbiB3aWxsIGJlIHplcm8gcGFkZGVkIGZvciBudW1lcmljIHZhbHVlcy4gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnLVwnYGAgICB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzIHRoZSBgYFwnMFwnYGAgICAgICAgICAgIHxcbnwgICAgICAgICAgIHwgY29udmVyc2lvbiBpZiBib3RoIGFyZSBnaXZlbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJyBcJ2BgICAgfCAoYSBzcGFjZSkgQSBibGFuayBzaG91bGQgYmUgbGVmdCBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5ICAgfFxufCAgICAgICAgICAgfCBzdHJpbmcpIHByb2R1Y2VkIGJ5IGEgc2lnbmVkIGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnK1wnYGAgICB8IEEgc2lnbiBjaGFyYWN0ZXIgKGBgXCcrXCdgYCBvciBgYFwnLVwnYGApIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgICAgfFxufCAgICAgICAgICAgfCAob3ZlcnJpZGVzIGEgInNwYWNlIiBmbGFnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5BIGxlbmd0aCBtb2RpZmllciAoYGBoYGAsIGBgbGBgLCBvciBgYExgYCkgbWF5IGJlIHByZXNlbnQsIGJ1dCBpc1xuaWdub3JlZCBhcyBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBQeXRob24gLS0gc28gZS5nLiBgYCVsZGBgIGlzXG5pZGVudGljYWwgdG8gYGAlZGBgLlxuXG5UaGUgY29udmVyc2lvbiB0eXBlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgQ29udmVyc2lvbiAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcJ2RcJ2BgICAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnaVwnYGAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdvXCdgYCAgICAgIHwgU2lnbmVkIG9jdGFsIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3VcJ2BgICAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byBgYFwnZFwnYGAuICAgICAgICAgIHwgKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCd4XCdgYCAgICAgIHwgU2lnbmVkIGhleGFkZWNpbWFsIChsb3dlcmNhc2UpLiAgICAgICAgICAgICAgICAgICAgICAgfCAoMikgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ1hcJ2BgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKHVwcGVyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnZVwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAobG93ZXJjYXNlKS4gICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdFXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0ICh1cHBlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ2ZcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnRlwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdnXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZm9ybWF0LiBVc2VzIGxvd2VyY2FzZSBleHBvbmVudGlhbCAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgIHwgZm9ybWF0IGlmIGV4cG9uZW50IGlzIGxlc3MgdGhhbiAtNCBvciBub3QgbGVzcyB0aGFuICAgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgcHJlY2lzaW9uLCBkZWNpbWFsIGZvcm1hdCBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ0dcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgdXBwZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnY1wnYGAgICAgICB8IFNpbmdsZSBjaGFyYWN0ZXIgKGFjY2VwdHMgaW50ZWdlciBvciBzaW5nbGUgY2hhcmFjdGVyIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHN0cmluZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdyXCdgYCAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyBgYHJlcHIoKWBgKS4gfCAoNSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3NcJ2BgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIGBgc3RyKClgYCkuICB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnYVwnYGAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgICAgICAgICAgICAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICB8IGBgYXNjaWkoKWBgKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCclXCdgYCAgICAgIHwgTm8gYXJndW1lbnQgaXMgY29udmVydGVkLCByZXN1bHRzIGluIGEgYGBcJyVcJ2BgICAgICAgICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoYGBcJzBcJ2BgKSB0byBiZSBpbnNlcnRlZFxuICAgYmV0d2VlbiBsZWZ0LWhhbmQgcGFkZGluZyBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG51bWJlciBpZiB0aGVcbiAgIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90IGFscmVhZHkgYSB6ZXJvLlxuXG4yLiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyBgYFwnMHhcJ2BgIG9yIGBgXCcwWFwnYGAgKGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGUgYGBcJ3hcJ2BgIG9yIGBgXCdYXCdgYCBmb3JtYXQgd2FzIHVzZWQpIHRvIGJlIGluc2VydGVkXG4gICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZVxuICAgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uXG5cbjMuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbFxuICAgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuXG5cbjQuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBhbmQgdHJhaWxpbmcgemVyb2VzIGFyZSBub3QgcmVtb3ZlZCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZVxuICAgYmUuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBiZWZvcmVcbiAgIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNS4gSWYgcHJlY2lzaW9uIGlzIGBgTmBgLCB0aGUgb3V0cHV0IGlzIHRydW5jYXRlZCB0byBgYE5gYCBjaGFyYWN0ZXJzLlxuXG4xLiBTZWUgKipQRVAgMjM3KiouXG5cblNpbmNlIFB5dGhvbiBzdHJpbmdzIGhhdmUgYW4gZXhwbGljaXQgbGVuZ3RoLCBgYCVzYGAgY29udmVyc2lvbnMgZG9cbm5vdCBhc3N1bWUgdGhhdCBgYFwnXFwwXCdgYCBpcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZVxudmFsdWUgaXMgb3ZlciAxZTUwIGFyZSBubyBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLlxuXG5BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXNcbmBgc3RyaW5nYGAgYW5kIGBgcmVgYC5cblxuXG5SYW5nZSBUeXBlXG49PT09PT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3Jcbmxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBpcyB0aGF0IGFuIGBgcmFuZ2VgYFxub2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplXG5vZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cy5cblxuUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsXG5jb250YWlucywgaXRlcmF0aW9uLCB0aGUgYGBsZW4oKWBgIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZ1xubWV0aG9kczpcblxucmFuZ2UuY291bnQoeClcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnJhbmdlLmluZGV4KHgpXG5cbiAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzXG4gICBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCkuXG5cbk5vdGUgdGhhdCB3aGlsZSBsaXN0cyBhbGxvdyB0aGVpciBpdGVtcyB0byBiZSBvZiBhbnkgdHlwZSwgYnl0ZWFycmF5XG5vYmplY3QgIml0ZW1zIiBhcmUgYWxsIGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSB4YGAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgamBgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5zb3J0KFtrZXlbLCByZXZlcnNlXV0pYGAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDYpLCAoNyksICg4KSAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gKngqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG4zLiBSYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlXG4gICBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGBgaW5kZXgoKWBgXG4gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXRcbiAgIGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuXG5cbjQuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgIGBgaW5zZXJ0KClgYCBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZVxuICAgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yXG4gICBzbGljZSBpbmRpY2VzLlxuXG41LiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG42LiBUaGUgYGBzb3J0KClgYCBhbmQgYGByZXZlcnNlKClgYCBtZXRob2RzIG1vZGlmeSB0aGUgc2VxdWVuY2UgaW5cbiAgIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZVxuICAgc2VxdWVuY2UuICBUbyByZW1pbmQgeW91IHRoYXQgdGhleSBvcGVyYXRlIGJ5IHNpZGUgZWZmZWN0LCB0aGV5XG4gICBkb25cJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjcuIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCB0YWtlcyBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGNvbnRyb2xsaW5nIHRoZVxuICAgY29tcGFyaXNvbnMuICBFYWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6IGBga2V5PXN0ci5sb3dlcmBgLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLiBVc2UgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdG9cbiAgIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGVcbiAgIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICAgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3Nlc1xuICAgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW4gZGV0ZWN0XG4gICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuOC4gYGBzb3J0KClgYCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGBgYnl0ZWFycmF5YGAgb2JqZWN0cy5cblxuXG5CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cywgYmVpbmcgInN0cmluZ3Mgb2YgYnl0ZXMiLCBoYXZlIGFsbFxubWV0aG9kcyBmb3VuZCBvbiBzdHJpbmdzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYGBlbmNvZGUoKWBgLFxuYGBmb3JtYXQoKWBgIGFuZCBgYGlzaWRlbnRpZmllcigpYGAsIHdoaWNoIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGhcbnRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcgdGhlIG9iamVjdHMgdG8gc3RyaW5ncywgdGhleSBoYXZlIGFcbmBgZGVjb2RlKClgYCBtZXRob2QuXG5cbldoZXJldmVyIG9uZSBvZiB0aGVzZSBtZXRob2RzIG5lZWRzIHRvIGludGVycHJldCB0aGUgYnl0ZXMgYXNcbmNoYXJhY3RlcnMgKGUuZy4gdGhlIGBgaXMuLi4oKWBgIG1ldGhvZHMpLCB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBpc1xuYXNzdW1lZC5cblxuTm90ZTogVGhlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGRvblwndCBhY2NlcHQgc3RyaW5ncyBhc1xuICB0aGVpciBhcmd1bWVudHMsIGp1c3QgYXMgdGhlIG1ldGhvZHMgb24gc3RyaW5ncyBkb25cJ3QgYWNjZXB0IGJ5dGVzXG4gIGFzIHRoZWlyIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZVxuXG4gICAgIGEgPSAiYWJjIlxuICAgICBiID0gYS5yZXBsYWNlKCJhIiwgImYiKVxuXG4gIGFuZFxuXG4gICAgIGEgPSBiImFiYyJcbiAgICAgYiA9IGEucmVwbGFjZShiImEiLCBiImYiKVxuXG5ieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhIHN0cmluZyBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIGJ5dGVzLiAgRGVmYXVsdCBlbmNvZGluZyBpc1xuICAgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuICAgaGFuZGxpbmcgc2NoZW1lLiAgVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLCBtZWFuaW5nXG4gICB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuICBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzLlxuXG5UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOlxuXG5jbGFzc21ldGhvZCBieXRlcy5mcm9taGV4KHN0cmluZylcbmNsYXNzbWV0aG9kIGJ5dGVhcnJheS5mcm9taGV4KHN0cmluZylcblxuICAgVGhpcyBgYGJ5dGVzYGAgY2xhc3MgbWV0aG9kIHJldHVybnMgYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LFxuICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d29cbiAgIGhleGFkZWNpbWFsIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLlxuXG4gICA+Pj4gYnl0ZXMuZnJvbWhleChcJ2YwIGYxZjIgIFwnKVxuICAgYlwnXFx4ZjBcXHhmMVxceGYyXCdcblxuVGhlIG1ha2V0cmFucyBhbmQgdHJhbnNsYXRlIG1ldGhvZHMgZGlmZmVyIGluIHNlbWFudGljcyBmcm9tIHRoZVxudmVyc2lvbnMgYXZhaWxhYmxlIG9uIHN0cmluZ3M6XG5cbmJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pXG5ieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCB3aGVyZSBhbGwgYnl0ZXNcbiAgIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmRlbGV0ZSogYXJlIHJlbW92ZWQsIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBieXRlcyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uXG4gICB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuXG4gICBZb3UgY2FuIHVzZSB0aGUgYGBieXRlcy5tYWtldHJhbnMoKWBgIG1ldGhvZCB0byBjcmVhdGUgYVxuICAgdHJhbnNsYXRpb24gdGFibGUuXG5cbiAgIFNldCB0aGUgKnRhYmxlKiBhcmd1bWVudCB0byBgYE5vbmVgYCBmb3IgdHJhbnNsYXRpb25zIHRoYXQgb25seVxuICAgZGVsZXRlIGNoYXJhY3RlcnM6XG5cbiAgICAgID4+PiBiXCdyZWFkIHRoaXMgc2hvcnQgdGV4dFwnLnRyYW5zbGF0ZShOb25lLCBiXCdhZWlvdVwnKVxuICAgICAgYlwncmQgdGhzIHNocnQgdHh0XCdcblxuc3RhdGljIGJ5dGVzLm1ha2V0cmFucyhmcm9tLCB0bylcbnN0YXRpYyBieXRlYXJyYXkubWFrZXRyYW5zKGZyb20sIHRvKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgYnl0ZXMudHJhbnNsYXRlKClgYCB0aGF0IHdpbGwgbWFwIGVhY2ggY2hhcmFjdGVyIGluICpmcm9tKiBpbnRvXG4gICB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluICp0byo7ICpmcm9tKiBhbmQgKnRvKiBtdXN0IGJlXG4gICBieXRlcyBvYmplY3RzIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4xLlxuJywKLSAndHlwZXNzZXEtbXV0YWJsZSc6ICdcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuTGlzdCBhbmQgYnl0ZWFycmF5IG9iamVjdHMgc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgdGhhdCBhbGxvd1xuaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIHRoZSBvYmplY3QuICBPdGhlciBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzXG4od2hlbiBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UpIHNob3VsZCBhbHNvIHN1cHBvcnQgdGhlc2Ugb3BlcmF0aW9ucy5cblN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90XG5iZSBtb2RpZmllZCBvbmNlIGNyZWF0ZWQuIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvblxubXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlcmUgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QpLlxuXG5Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheVxub2JqZWN0ICJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0gICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3hdYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0geGBgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKlwncyBmb3Igd2hpY2ggfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8IGpgYCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgICAgICAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGB4ID0gc1tpXTsgZGVsIHNbaV07ICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIHhgYCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBkZWwgc1tzLmluZGV4KHgpXWBgICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgICAgfCBzb3J0IHRoZSBpdGVtcyBvZiAqcyogaW4gcGxhY2UgICB8ICg2KSwgKDcpLCAoOCkgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC5cblxuMy4gUmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZVxuICAgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSBgYGluZGV4KClgYFxuICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0XG4gICBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLlxuXG40LiBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlXG4gICBgYGluc2VydCgpYGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2VcbiAgIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvclxuICAgc2xpY2UgaW5kaWNlcy5cblxuNS4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuNi4gVGhlIGBgc29ydCgpYGAgYW5kIGBgcmV2ZXJzZSgpYGAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluXG4gICBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2VcbiAgIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleVxuICAgZG9uXCd0IHJldHVybiB0aGUgc29ydGVkIG9yIHJldmVyc2VkIHNlcXVlbmNlLlxuXG43LiBUaGUgYGBzb3J0KClgYCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGVcbiAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuXG5cbiAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdFxuICAgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZVxuICAgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4gVXNlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHRvXG4gICBjb252ZXJ0IGFuIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBsaXN0XG4gICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlXG4gICBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXRcbiAgIGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXNcbiAgIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuIGRldGVjdFxuICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cbjguIGBgc29ydCgpYGAgaXMgbm90IHN1cHBvcnRlZCBieSBgYGJ5dGVhcnJheWBgIG9iamVjdHMuXG4nLAorICd0eXBlc3NlcSc6ICdcblNlcXVlbmNlIFR5cGVzIC0tLSBgYGxpc3RgYCwgYGB0dXBsZWBgLCBgYHJhbmdlYGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgYFxuQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Vcbm9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kIHZhbHVlXG5yZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG5cblRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgXG4ocmVwZXRpdGlvbikgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nXG5udW1lcmljIG9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcyAqIG5gYCBvciBgYG4gKiBzYGAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpXWBgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWluKHMpYGAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1heChzKWBgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mICB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGVcbiAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXNcbiAgIChzdWNoIGFzIGBgc3RyYGAsIGBgYnl0ZXNgYCBhbmQgYGBieXRlYXJyYXlgYCkgYWxzbyB1c2UgdGhlbSBmb3JcbiAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG5cbiAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuICAgICAgVHJ1ZVxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiBgYDBgYCBhcmUgdHJlYXRlZCBhcyBgYDBgYCAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzXG4gICBhcmUgc2hhbGxvdzsgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50c1xuICAgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCBgYFtbXV1gYCBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mIGBgW1tdXSAqIDNgYCBhcmUgKHBvaW50ZXJzXG4gICB0bykgdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4gICBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbjMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZVxuICAgc3RyaW5nOiBgYGxlbihzKSArIGlgYCBvciBgYGxlbihzKSArIGpgYCBpcyBzdWJzdGl0dXRlZC4gIEJ1dCBub3RlXG4gICB0aGF0IGBgLTBgYCBpcyBzdGlsbCBgYDBgYC5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCBgYGkgPD0gayA8IGpgYC4gIElmICppKiBvciAqaiogaXNcbiAgIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLCB1c2UgYGBsZW4ocylgYC4gIElmICppKiBpcyBvbWl0dGVkIG9yXG4gICBgYE5vbmVgYCwgdXNlIGBgMGBgLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIHVzZVxuICAgYGBsZW4ocylgYC4gIElmICppKiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXNcbiAgIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICBgYHggPSBpICsgbiprYGAgc3VjaCB0aGF0IGBgMCA8PSBuIDxcbiAgIChqLWkpL2tgYC4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgYGBpYGAsIGBgaStrYGAsXG4gICBgYGkrMiprYGAsIGBgaSszKmtgYCBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dFxuICAgbmV2ZXIgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLFxuICAgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGV5IGJlY29tZVxuICAgImVuZCIgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqXG4gICBjYW5ub3QgYmUgemVyby4gSWYgKmsqIGlzIGBgTm9uZWBgLCBpdCBpcyB0cmVhdGVkIGxpa2UgYGAxYGAuXG5cbjYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uXG4gICB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzZXF1ZW5jZSBsZW5ndGguXG4gICBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZVxuICAgYWx0ZXJuYXRpdmVzIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhIGBgaW8uU3RyaW5nSU9gYFxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgYnl0ZXNgYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgYGBieXRlcy5qb2luKClgYCBvciBgYGlvLkJ5dGVzSU9gYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSBgYGJ5dGVhcnJheWBgIG9iamVjdC4gIGBgYnl0ZWFycmF5YGAgb2JqZWN0c1xuICAgICBhcmUgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHR1cGxlYGAgb2JqZWN0cywgZXh0ZW5kIGEgYGBsaXN0YGAgaW5zdGVhZFxuXG4gICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb25cblxuNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyBgYHJhbmdlYGApIG9ubHkgc3VwcG9ydCBpdGVtIHNlcXVlbmNlc1xuICAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb25cJ3Qgc3VwcG9ydCBzZXF1ZW5jZVxuICAgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuXG44LiBgYGluZGV4YGAgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW5cbiAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3dcbiAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZVxuICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLFxuICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nXG4gICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGVcbiAgIHNsaWNlLlxuXG5cbkltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50XG50aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3JcbnRoZSBgYGhhc2goKWBgIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgYGB0dXBsZWBgIGluc3RhbmNlcyxcbnRvIGJlIHVzZWQgYXMgYGBkaWN0YGAga2V5cyBhbmQgc3RvcmVkIGluIGBgc2V0YGAgYW5kIGBgZnJvemVuc2V0YGBcbmluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiBgYFR5cGVFcnJvcmBgLlxuXG5cbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzIGBgZGljdGBgIGFuZCBgYHNldGBgKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IGBgY2xlYXIoKWBgIGFuZCBgYGNvcHkoKWBgIG1ldGhvZHMuXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGBcblxuICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2FdYGAsXG4gICAgIGBgW2EsIGIsIGNdYGBcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogYGBbeCBmb3IgeCBpbiBpdGVyYWJsZV1gYFxuXG4gICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYFxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLiBGb3IgZXhhbXBsZSwgYGBsaXN0KFwnYWJjXCcpYGBcbiAgIHJldHVybnMgYGBbXCdhXCcsIFwnYlwnLCBcJ2NcJ11gYCBhbmQgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSxcbiAgIDIsIDNdYGAuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ld1xuICAgZW1wdHkgbGlzdCwgYGBbXWBgLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlXG4gICBgYHNvcnRlZCgpYGAgYnVpbHQtaW4uXG5cbiAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbiAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuXG4gICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG5cbiAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5IGBgPGBgXG4gICAgICBjb21wYXJpc29ucyBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmXG4gICAgICBhbnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbFxuICAgICAgZmFpbCAoYW5kIHRoZSBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWRcbiAgICAgIHN0YXRlKS5cblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgYGBrZXk9c3RyLmxvd2VyYGApLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZVxuICAgICAgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nXG4gICAgICBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlXG4gICAgICBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cblxuICAgICAgVGhlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZVxuICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlc1xuICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2VcbiAgICAgIGBgc29ydGVkKClgYCB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgaW5zdGFuY2UpLlxuXG4gICAgICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIGlmIGl0IGNhblxuICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG5cblR1cGxlc1xuPT09PT09XG5cblR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlXG5gYGVudW1lcmF0ZSgpYGAgYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW5cbmltbXV0YWJsZSBzZXF1ZW5jZSBvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZ1xuc3RvcmFnZSBpbiBhIGBgc2V0YGAgb3IgYGBkaWN0YGAgaW5zdGFuY2UpLlxuXG5jbGFzcyBjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuXG4gICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6IGBgKClgYFxuXG4gICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiBgYGEsYGAgb3IgYGAoYSwpYGBcblxuICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgXG5cbiAgICogVXNpbmcgdGhlIGBgdHVwbGUoKWBgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvclxuICAgICBgYHR1cGxlKGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgYGB0dXBsZShcJ2FiY1wnKWBgIHJldHVybnMgYGAoXCdhXCcsIFwnYlwnLFxuICAgXCdjXCcpYGAgYW5kIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLiBJZiBub1xuICAgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLFxuICAgYGAoKWBgLlxuXG4gICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGVcbiAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5XG4gICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LlxuICAgRm9yIGV4YW1wbGUsIGBgZihhLCBiLCBjKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlXG4gICBhcmd1bWVudHMsIHdoaWxlIGBgZigoYSwgYiwgYykpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlXG4gICBhcyB0aGUgc29sZSBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsIGBgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpYGAgbWF5IGJlIGEgbW9yZVxuYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuXG5cblJhbmdlc1xuPT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCBpc1xuY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiBgYGZvcmBgIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShbc3RhcnRdLCBzdG9wWywgc3RlcF0pXG5cbiAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlclxuICAgYnVpbHQtaW4gYGBpbnRgYCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYFxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgYGAxYGAuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZFxuICAgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZFxuICAgYGByW2ldIDwgc3RvcGBgLlxuXG4gICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4gICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgIGFuZCBgYHJbaV0gPiBzdG9wYGAuXG5cbiAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlXG4gICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlXG4gICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnlcbiAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuXG4gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIGBgbGVuKClgYCkgbWF5IHJhaXNlXG4gICBgYE92ZXJmbG93RXJyb3JgYC5cblxuICAgUmFuZ2UgZXhhbXBsZXM6XG5cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbiAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuICAgICAgWzAsIDMsIDYsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbiAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4gICAgICBbXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4gICAgICBbXVxuXG4gICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyBleGNlcHRcbiAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHNcbiAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmRcbiAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS5cblxuVGhlIGFkdmFudGFnZSBvZiB0aGUgYGByYW5nZWBgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgYGBsaXN0YGAgb3JcbmBgdHVwbGVgYCBpcyB0aGF0IGEgYGByYW5nZWBgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbClcbmFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXRcbm9ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nXG5pbmRpdmlkdWFsIGl0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIGBgY29sbGVjdGlvbnMuU2VxdWVuY2VgYCBBQkMsIGFuZCBwcm92aWRlXG5mZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmRcbnN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgLS0tIGxpc3QsIHR1cGxlLFxucmFuZ2UqKTpcblxuPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbj4+PiByXG5yYW5nZSgwLCAyMCwgMilcbj4+PiAxMSBpbiByXG5GYWxzZVxuPj4+IDEwIGluIHJcblRydWVcbj4+PiByLmluZGV4KDEwKVxuNVxuPj4+IHJbNV1cbjEwXG4+Pj4gcls6NV1cbnJhbmdlKDAsIDEwLCAyKVxuPj4+IHJbLTFdXG4xOFxuXG5UZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggYGA9PWBgIGFuZCBgYCE9YGAgY29tcGFyZXNcbnRoZW0gYXMgc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWZcbnRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlXG5vYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCBgYHN0YXJ0YGAsIGBgc3RvcGBgXG5hbmQgYGBzdGVwYGAgYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgYGByYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKWBgIG9yXG5gYHJhbmdlKDAsIDMsIDIpID09IHJhbmdlKDAsIDQsIDIpYGAuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCBgYGludGBgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLlxuJywKKyAndHlwZXNzZXEtbXV0YWJsZSc6ICJcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cbiIsCiAgJ3VuYXJ5JzogJ1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSBgYC1gYCAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbmFyZ3VtZW50LlxuXG5UaGUgdW5hcnkgYGArYGAgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cblRoZSB1bmFyeSBgYH5gYCAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiBgYHhgYCBpcyBkZWZpbmVkIGFzXG5gYC0oeCsxKWBgLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG5cbkluIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCBhXG5gYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICd3aGlsZSc6ICdcblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCiAgJ3dpdGgnOiAnXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAotICd5aWVsZCc6ICdcblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yXG5mdW5jdGlvbiwgYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuVXNpbmcgYSBgYHlpZWxkYGAgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvXG5jYXVzZSB0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYVxubm9ybWFsIGZ1bmN0aW9uLiBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhblxuaXRlcmF0b3Iga25vd24gYXMgYSBnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLlxuVGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBleGVjdXRlZCBieSBjYWxsaW5nIHRoZVxuYGBuZXh0KClgYCBmdW5jdGlvbiBvbiB0aGUgZ2VuZXJhdG9yIHJlcGVhdGVkbHkgdW50aWwgaXQgcmFpc2VzIGFuXG5leGNlcHRpb24uXG5cbldoZW4gYSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkLCB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBpc1xuZnJvemVuIGFuZCB0aGUgdmFsdWUgb2YgYGBleHByZXNzaW9uX2xpc3RgYCBpcyByZXR1cm5lZCB0b1xuYGBuZXh0KClgYFwncyBjYWxsZXIuICBCeSAiZnJvemVuIiB3ZSBtZWFuIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzXG5yZXRhaW5lZCwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlXG5pbnN0cnVjdGlvbiBwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaFxuaW5mb3JtYXRpb24gaXMgc2F2ZWQgc28gdGhhdCB0aGUgbmV4dCB0aW1lIGBgbmV4dCgpYGAgaXMgaW52b2tlZCwgdGhlXG5mdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IHdlcmUganVzdFxuYW5vdGhlciBleHRlcm5hbCBjYWxsLlxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSBgYHRyeWBgIGNsYXVzZSBvZiBhIGBgdHJ5YGBcbi4uLiAgYGBmaW5hbGx5YGAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgcmVzdW1lZCBiZWZvcmUgaXRcbmlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZyBnYXJiYWdlXG5jb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yXCdzIGBgY2xvc2UoKWBgIG1ldGhvZCB3aWxsIGJlXG5jYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIGBgZmluYWxseWBgIGNsYXVzZXMgdG8gZXhlY3V0ZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWRcbiAgICAgIGFsbG93aW5nIGBgeWllbGRgYCB0byBhcHBlYXIgaW5zaWRlIGEgYGB0cnlgYCAuLi4gYGBmaW5hbGx5YGBcbiAgICAgIGJsb2NrLlxuJ30KKyAneWllbGQnOiAnXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIGdlbmVyYXRvclxuZnVuY3Rpb24sIGFuZCBpcyBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi5cblVzaW5nIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0b1xuY2F1c2UgdGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGFcbm5vcm1hbCBmdW5jdGlvbi5cblxuV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4gaXRlcmF0b3Iga25vd24gYXMgYVxuZ2VuZXJhdG9yIGl0ZXJhdG9yLCBvciBtb3JlIGNvbW1vbmx5LCBhIGdlbmVyYXRvci4gIFRoZSBib2R5IG9mIHRoZVxuZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlIGBgbmV4dCgpYGAgZnVuY3Rpb24gb25cbnRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXG5XaGVuIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCwgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgaXNcbmZyb3plbiBhbmQgdGhlIHZhbHVlIG9mIGBgZXhwcmVzc2lvbl9saXN0YGAgaXMgcmV0dXJuZWQgdG9cbmBgbmV4dCgpYGBcJ3MgY2FsbGVyLiAgQnkgImZyb3plbiIgd2UgbWVhbiB0aGF0IGFsbCBsb2NhbCBzdGF0ZSBpc1xucmV0YWluZWQsIGluY2x1ZGluZyB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiBsb2NhbCB2YXJpYWJsZXMsIHRoZVxuaW5zdHJ1Y3Rpb24gcG9pbnRlciwgYW5kIHRoZSBpbnRlcm5hbCBldmFsdWF0aW9uIHN0YWNrOiBlbm91Z2hcbmluZm9ybWF0aW9uIGlzIHNhdmVkIHNvIHRoYXQgdGhlIG5leHQgdGltZSBgYG5leHQoKWBgIGlzIGludm9rZWQsIHRoZVxuZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCB3ZXJlIGp1c3RcbmFub3RoZXIgZXh0ZXJuYWwgY2FsbC5cblxuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiB0aGUgYGB0cnlgYCBjbGF1c2Ugb2YgYSBgYHRyeWBgXG4uLi4gIGBgZmluYWxseWBgIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90IHJlc3VtZWQgYmVmb3JlIGl0XG5pcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnQgb3IgYnkgYmVpbmcgZ2FyYmFnZVxuY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvclwncyBgYGNsb3NlKClgYCBtZXRob2Qgd2lsbCBiZVxuY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyBgYGZpbmFsbHlgYCBjbGF1c2VzIHRvIGV4ZWN1dGUuXG5cbldoZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvblxuYXMgYSBzdWJpdGVyYXRvciwgcHJvZHVjaW5nIHZhbHVlcyBmcm9tIGl0IHVudGlsIHRoZSB1bmRlcmx5aW5nXG5pdGVyYXRvciBpcyBleGhhdXN0ZWQuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZVxuICAgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3JcblxuRm9yIGZ1bGwgZGV0YWlscyBvZiBgYHlpZWxkYGAgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG5leHByZXNzaW9ucyogc2VjdGlvbi5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nXG4gICAgICB0aGVtIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy5cblxuICAgKipQRVAgMDM4MCoqIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSBgYHlpZWxkX2Zyb21gYCBzeW50YXgsIG1ha2luZ1xuICAgICAgZGVsZWdhdGlvbiB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9xdWV1ZS5weSBiL0xpYi9xdWV1ZS5weQppbmRleCBiZWU3ZWQ0Li5jMzI5NmZlIDEwMDY0NAotLS0gYS9MaWIvcXVldWUucHkKKysrIGIvTGliL3F1ZXVlLnB5CkBAIC0xLDQ5ICsxLDU3IEBACi0iIiJBIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciBxdWV1ZS4iIiIKKycnJ0EgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIHF1ZXVlLicnJwogCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIHRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKKyAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyBfdGhyZWFkaW5nCisgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1pbXBvcnQgaGVhcHEKK2Zyb20gaGVhcHEgaW1wb3J0IGhlYXBwdXNoLCBoZWFwcG9wCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZQogCiBfX2FsbF9fID0gWydFbXB0eScsICdGdWxsJywgJ1F1ZXVlJywgJ1ByaW9yaXR5UXVldWUnLCAnTGlmb1F1ZXVlJ10KIAogY2xhc3MgRW1wdHkoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIEZ1bGwoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIFF1ZXVlOgotICAgICIiIkNyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgorICAgICcnJ0NyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgogCiAgICAgSWYgbWF4c2l6ZSBpcyA8PSAwLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KLSAgICAiIiIKKyAgICAnJycKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhzaXplPTApOgogICAgICAgICBzZWxmLm1heHNpemUgPSBtYXhzaXplCiAgICAgICAgIHNlbGYuX2luaXQobWF4c2l6ZSkKKwogICAgICAgICAjIG11dGV4IG11c3QgYmUgaGVsZCB3aGVuZXZlciB0aGUgcXVldWUgaXMgbXV0YXRpbmcuICBBbGwgbWV0aG9kcwogICAgICAgICAjIHRoYXQgYWNxdWlyZSBtdXRleCBtdXN0IHJlbGVhc2UgaXQgYmVmb3JlIHJldHVybmluZy4gIG11dGV4CiAgICAgICAgICMgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHRocmVlIGNvbmRpdGlvbnMsIHNvIGFjcXVpcmluZyBhbmQKICAgICAgICAgIyByZWxlYXNpbmcgdGhlIGNvbmRpdGlvbnMgYWxzbyBhY3F1aXJlcyBhbmQgcmVsZWFzZXMgbXV0ZXguCi0gICAgICAgIHNlbGYubXV0ZXggPSBfdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9lbXB0eSB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZSBxdWV1ZTsgYQogICAgICAgICAjIHRocmVhZCB3YWl0aW5nIHRvIGdldCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9lbXB0eSA9IF90aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisgICAgICAgIHNlbGYubm90X2VtcHR5ID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9mdWxsIHdoZW5ldmVyIGFuIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBxdWV1ZTsKICAgICAgICAgIyBhIHRocmVhZCB3YWl0aW5nIHRvIHB1dCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9mdWxsID0gX3RocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKyAgICAgICAgc2VsZi5ub3RfZnVsbCA9IHRocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKwogICAgICAgICAjIE5vdGlmeSBhbGxfdGFza3NfZG9uZSB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIHVuZmluaXNoZWQgdGFza3MKICAgICAgICAgIyBkcm9wcyB0byB6ZXJvOyB0aHJlYWQgd2FpdGluZyB0byBqb2luKCkgaXMgbm90aWZpZWQgdG8gcmVzdW1lCi0gICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSBfdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQogICAgICAgICBzZWxmLnVuZmluaXNoZWRfdGFza3MgPSAwCiAKICAgICBkZWYgdGFza19kb25lKHNlbGYpOgotICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4KKyAgICAgICAgJycnSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuCiAKICAgICAgICAgVXNlZCBieSBRdWV1ZSBjb25zdW1lciB0aHJlYWRzLiAgRm9yIGVhY2ggZ2V0KCkgdXNlZCB0byBmZXRjaCBhIHRhc2ssCiAgICAgICAgIGEgc3Vic2VxdWVudCBjYWxsIHRvIHRhc2tfZG9uZSgpIHRlbGxzIHRoZSBxdWV1ZSB0aGF0IHRoZSBwcm9jZXNzaW5nCkBAIC01NSw0MyArNjMsMzUgQEAKIAogICAgICAgICBSYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gdGhlcmUgd2VyZSBpdGVtcwogICAgICAgICBwbGFjZWQgaW4gdGhlIHF1ZXVlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgdW5maW5pc2hlZCA9IHNlbGYudW5maW5pc2hlZF90YXNrcyAtIDEKICAgICAgICAgICAgIGlmIHVuZmluaXNoZWQgPD0gMDoKICAgICAgICAgICAgICAgICBpZiB1bmZpbmlzaGVkIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndGFza19kb25lKCkgY2FsbGVkIHRvbyBtYW55IHRpbWVzJykKICAgICAgICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLm5vdGlmeV9hbGwoKQogICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzID0gdW5maW5pc2hlZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5yZWxlYXNlKCkKIAogICAgIGRlZiBqb2luKHNlbGYpOgotICAgICAgICAiIiJCbG9ja3MgdW50aWwgYWxsIGl0ZW1zIGluIHRoZSBRdWV1ZSBoYXZlIGJlZW4gZ290dGVuIGFuZCBwcm9jZXNzZWQuCisgICAgICAgICcnJ0Jsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KIAogICAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCiAgICAgICAgIHF1ZXVlLiBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgdGhyZWFkIGNhbGxzIHRhc2tfZG9uZSgpCiAgICAgICAgIHRvIGluZGljYXRlIHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uIGl0IGlzIGNvbXBsZXRlLgogCiAgICAgICAgIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywgam9pbigpIHVuYmxvY2tzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgd2hpbGUgc2VsZi51bmZpbmlzaGVkX3Rhc2tzOgogICAgICAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUud2FpdCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLnJlbGVhc2UoKQogCiAgICAgZGVmIHFzaXplKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHF1ZXVlIChub3QgcmVsaWFibGUhKS4iIiIKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgbiA9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnUmV0dXJuIHRoZSBhcHByb3hpbWF0ZSBzaXplIG9mIHRoZSBxdWV1ZSAobm90IHJlbGlhYmxlISkuJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9xc2l6ZSgpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KKyAgICAgICAgJycnUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA9PSAwCiAgICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKQEAgLTEwMCwyOSArMTAwLDIzIEBACiAKICAgICAgICAgVG8gY3JlYXRlIGNvZGUgdGhhdCBuZWVkcyB0byB3YWl0IGZvciBhbGwgcXVldWVkIHRhc2tzIHRvIGJlCiAgICAgICAgIGNvbXBsZXRlZCwgdGhlIHByZWZlcnJlZCB0ZWNobmlxdWUgaXMgdG8gdXNlIHRoZSBqb2luKCkgbWV0aG9kLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICBuID0gbm90IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXNpemUoKQogCiAgICAgZGVmIGZ1bGwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZnVsbCwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LiAgVXNlIHFzaXplKCkgPj0gbgogICAgICAgICBhcyBhIGRpcmVjdCBzdWJzdGl0dXRlLCBidXQgYmUgYXdhcmUgdGhhdCBlaXRoZXIgYXBwcm9hY2ggcmlza3MgYSByYWNlCiAgICAgICAgIGNvbmRpdGlvbiB3aGVyZSBhIHF1ZXVlIGNhbiBzaHJpbmsgYmVmb3JlIHRoZSByZXN1bHQgb2YgZnVsbCgpIG9yCiAgICAgICAgIHFzaXplKCkgY2FuIGJlIHVzZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIG4gPSAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKIAogICAgIGRlZiBwdXQoc2VsZiwgaXRlbSwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCisgICAgICAgICcnJ1B1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlLgogCiAgICAgICAgIElmIG9wdGlvbmFsIGFyZ3MgJ2Jsb2NrJyBpcyB0cnVlIGFuZCAndGltZW91dCcgaXMgTm9uZSAodGhlIGRlZmF1bHQpLAogICAgICAgICBibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYSBmcmVlIHNsb3QgaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKQEAgLTEzMSw5ICsxMjUsOCBAQAogICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCBwdXQgYW4gaXRlbSBvbiB0aGUgcXVldWUgaWYgYSBmcmVlIHNsb3QKICAgICAgICAgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBGdWxsIGV4Y2VwdGlvbiAoJ3RpbWVvdXQnCiAgICAgICAgIGlzIGlnbm9yZWQgaW4gdGhhdCBjYXNlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubm90X2Z1bGwuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZnVsbDoKICAgICAgICAgICAgIGlmIHNlbGYubWF4c2l6ZSA+IDA6CiAgICAgICAgICAgICAgICAgaWYgbm90IGJsb2NrOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKQEAgLTE0NCwyOCArMTM3LDE4IEBACiAgICAgICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3RpbWVvdXQnIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBlbmR0aW1lIC0gdGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2Z1bGwud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgICBzZWxmLl9wdXQoaXRlbSkKICAgICAgICAgICAgIHNlbGYudW5maW5pc2hlZF90YXNrcyArPSAxCiAgICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC5yZWxlYXNlKCkKLQotICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgotCi0gICAgICAgIE9ubHkgZW5xdWV1ZSB0aGUgaXRlbSBpZiBhIGZyZWUgc2xvdCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCi0gICAgICAgIE90aGVyd2lzZSByYWlzZSB0aGUgRnVsbCBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5wdXQoaXRlbSwgRmFsc2UpCiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCisgICAgICAgICcnJ1JlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCiAKICAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgIGJsb2NrIGlmIG5lY2Vzc2FyeSB1bnRpbCBhbiBpdGVtIGlzIGF2YWlsYWJsZS4gSWYgJ3RpbWVvdXQnIGlzCkBAIC0xNzQsOSArMTU3LDggQEAKICAgICAgICAgT3RoZXJ3aXNlICgnYmxvY2snIGlzIGZhbHNlKSwgcmV0dXJuIGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5CiAgICAgICAgIGF2YWlsYWJsZSwgZWxzZSByYWlzZSB0aGUgRW1wdHkgZXhjZXB0aW9uICgndGltZW91dCcgaXMgaWdub3JlZAogICAgICAgICBpbiB0aGF0IGNhc2UpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ub3RfZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZW1wdHk6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3FzaXplKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CkBAIC0xODYsMjUgKzE2OCwzMSBAQAogICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIndGltZW91dCcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3FzaXplKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDAuMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2VtcHR5LndhaXQocmVtYWluaW5nKQogICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2dldCgpCiAgICAgICAgICAgICBzZWxmLm5vdF9mdWxsLm5vdGlmeSgpCiAgICAgICAgICAgICByZXR1cm4gaXRlbQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkucmVsZWFzZSgpCisKKyAgICBkZWYgcHV0X25vd2FpdChzZWxmLCBpdGVtKToKKyAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKworICAgICAgICBPbmx5IGVucXVldWUgdGhlIGl0ZW0gaWYgYSBmcmVlIHNsb3QgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAgICBPdGhlcndpc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYucHV0KGl0ZW0sIGJsb2NrPUZhbHNlKQogCiAgICAgZGVmIGdldF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKyAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgogCiAgICAgICAgIE9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCiAgICAgICAgIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXQoRmFsc2UpCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5nZXQoYmxvY2s9RmFsc2UpCiAKICAgICAjIE92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgdG8gaW1wbGVtZW50IG90aGVyIHF1ZXVlIG9yZ2FuaXphdGlvbnMKICAgICAjIChlLmcuIHN0YWNrIG9yIHByaW9yaXR5IHF1ZXVlKS4KQEAgLTIxNCw3ICsyMDIsNyBAQAogICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICAgc2VsZi5xdWV1ZSA9IGRlcXVlKCkKIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCiAgICAgIyBQdXQgYSBuZXcgaXRlbSBpbiB0aGUgcXVldWUKQEAgLTIzNSwxMyArMjIzLDEzIEBACiAgICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgICBzZWxmLnF1ZXVlID0gW10KIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCi0gICAgZGVmIF9wdXQoc2VsZiwgaXRlbSwgaGVhcHB1c2g9aGVhcHEuaGVhcHB1c2gpOgorICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgogICAgICAgICBoZWFwcHVzaChzZWxmLnF1ZXVlLCBpdGVtKQogCi0gICAgZGVmIF9nZXQoc2VsZiwgaGVhcHBvcD1oZWFwcS5oZWFwcG9wKToKKyAgICBkZWYgX2dldChzZWxmKToKICAgICAgICAgcmV0dXJuIGhlYXBwb3Aoc2VsZi5xdWV1ZSkKIAogCkBAIC0yNTEsNyArMjM5LDcgQEAKICAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgIHNlbGYucXVldWUgPSBbXQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKICAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDliNjEyMDguLjYzODhmMjkgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtNDEsNyArNDEsNyBAQAogZnJvbSBtYXRoIGltcG9ydCBsb2cgYXMgX2xvZywgZXhwIGFzIF9leHAsIHBpIGFzIF9waSwgZSBhcyBfZSwgY2VpbCBhcyBfY2VpbAogZnJvbSBtYXRoIGltcG9ydCBzcXJ0IGFzIF9zcXJ0LCBhY29zIGFzIF9hY29zLCBjb3MgYXMgX2Nvcywgc2luIGFzIF9zaW4KIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQgYXMgX1NldCwgU2VxdWVuY2UgYXMgX1NlcXVlbmNlCiBmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTUxMiBhcyBfc2hhNTEyCiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggODVjNWE1Ny4uOWFlNTE3NCAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMjE1LDcgKzIxNSw3IEBACiAKIGRlZiBwdXJnZSgpOgogICAgICJDbGVhciB0aGUgcmVndWxhciBleHByZXNzaW9uIGNhY2hlcyIKLSAgICBfY29tcGlsZV90eXBlZC5jYWNoZV9jbGVhcigpCisgICAgX2NvbXBpbGUuY2FjaGVfY2xlYXIoKQogICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CkBAIC0yMjMsMTIgKzIyMywxNCBAQAogICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFnc3xUKQogCiBfYWxwaGFudW1fc3RyID0gZnJvemVuc2V0KAotICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQorICAgICJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIF9hbHBoYW51bV9ieXRlcyA9IGZyb3plbnNldCgKLSAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5MCIpCisgICAgYiJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIAogZGVmIGVzY2FwZShwYXR0ZXJuKToKLSAgICAiRXNjYXBlIGFsbCBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgaW4gcGF0dGVybi4iCisgICAgIiIiCisgICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIGV4Y2VwdCBBU0NJSSBsZXR0ZXJzLCBudW1iZXJzIGFuZCAnXycuCisgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgogICAgICAgICBhbHBoYW51bSA9IF9hbHBoYW51bV9zdHIKICAgICAgICAgcyA9IGxpc3QocGF0dGVybikKQEAgLTI1OSwxMSArMjYxLDggQEAKIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwLCB0eXBlZD1UcnVlKQogZGVmIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKToKLSAgICByZXR1cm4gX2NvbXBpbGVfdHlwZWQodHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3MpCi0KLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwKQotZGVmIF9jb21waWxlX3R5cGVkKHRleHRfYnl0ZXNfdHlwZSwgcGF0dGVybiwgZmxhZ3MpOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcGF0dGVybgogICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgX3BhdHRlcm5fdHlwZSk6CiAgICAgICAgIGlmIGZsYWdzOgpkaWZmIC0tZ2l0IGEvTGliL3J1bnB5LnB5IGIvTGliL3J1bnB5LnB5CmluZGV4IGExNGE2MmUuLjM5YzBlOWYgMTAwNjQ0Ci0tLSBhL0xpYi9ydW5weS5weQorKysgYi9MaWIvcnVucHkucHkKQEAgLTksMTMgKzksMTIgQEAKICMgV3JpdHRlbiBieSBOaWNrIENvZ2hsYW4gPG5jb2dobGFuIGF0IGdtYWlsLmNvbT4KICMgICAgdG8gaW1wbGVtZW50IFBFUCAzMzggKEV4ZWN1dGluZyBNb2R1bGVzIGFzIFNjcmlwdHMpCiAKKworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeSAjIGltcG9ydGxpYiBmaXJzdCBzbyB3ZSBjYW4gdGVzdCAjMTUzODYgdmlhIC1tCiBpbXBvcnQgaW1wCi1mcm9tIHBrZ3V0aWwgaW1wb3J0IHJlYWRfY29kZQotdHJ5OgotICAgIGZyb20gaW1wIGltcG9ydCBnZXRfbG9hZGVyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSBwa2d1dGlsIGltcG9ydCBnZXRfbG9hZGVyCitmcm9tIHBrZ3V0aWwgaW1wb3J0IHJlYWRfY29kZSwgZ2V0X2xvYWRlciwgZ2V0X2ltcG9ydGVyCiAKIF9fYWxsX18gPSBbCiAgICAgInJ1bl9tb2R1bGUiLCAicnVuX3BhdGgiLApAQCAtOTUsNyArOTQsNyBAQAogICAgIGZvciBhdHRyIGluICgiZ2V0X2ZpbGVuYW1lIiwgIl9nZXRfZmlsZW5hbWUiKToKICAgICAgICAgbWV0aCA9IGdldGF0dHIobG9hZGVyLCBhdHRyLCBOb25lKQogICAgICAgICBpZiBtZXRoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIG1ldGgobW9kX25hbWUpCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG1ldGgobW9kX25hbWUpKQogICAgIHJldHVybiBOb25lCiAKICMgSGVscGVyIHRvIGdldCB0aGUgbG9hZGVyLCBjb2RlIGFuZCBmaWxlbmFtZSBmb3IgYSBtb2R1bGUKQEAgLTE4MSw0NyArMTgwLDIzIEBACiBkZWYgX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCk6CiAgICAgIyBIZWxwZXIgdGhhdCBnaXZlcyBhIG5pY2VyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhdHRlbXB0aW5nIHRvCiAgICAgIyBleGVjdXRlIGEgemlwZmlsZSBvciBkaXJlY3RvcnkgYnkgaW52b2tpbmcgX19tYWluX18ucHkKKyAgICAjIEFsc28gbW92ZXMgdGhlIHN0YW5kYXJkIF9fbWFpbl9fIG91dCBvZiB0aGUgd2F5IHNvIHRoYXQgdGhlCisgICAgIyBwcmVleGlzdGluZyBfX2xvYWRlcl9fIGVudHJ5IGRvZXNuJ3QgY2F1c2UgaXNzdWVzCiAgICAgbWFpbl9uYW1lID0gIl9fbWFpbl9fIgorICAgIHNhdmVkX21haW4gPSBzeXMubW9kdWxlc1ttYWluX25hbWVdCisgICAgZGVsIHN5cy5tb2R1bGVzW21haW5fbmFtZV0KICAgICB0cnk6CiAgICAgICAgIHJldHVybiBfZ2V0X21vZHVsZV9kZXRhaWxzKG1haW5fbmFtZSkKICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgICBpZiBtYWluX25hbWUgaW4gc3RyKGV4Yyk6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiY2FuJ3QgZmluZCAlciBtb2R1bGUgaW4gJXIiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkgZnJvbSBleGMKICAgICAgICAgcmFpc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgogCiAKLSMgWFhYIChuY29naGxhbik6IFBlcmhhcHMgZXhwb3NlIHRoZSBDIEFQSSBmdW5jdGlvbgotIyBhcyBpbXAuZ2V0X2ltcG9ydGVyIGluc3RlYWQgb2YgcmVpbXBsZW1lbnRpbmcgaXQgaW4gUHl0aG9uPwotZGVmIF9nZXRfaW1wb3J0ZXIocGF0aF9uYW1lKToKLSAgICAiIiJQeXRob24gdmVyc2lvbiBvZiBQeUltcG9ydF9HZXRJbXBvcnRlciBDIEFQSSBmdW5jdGlvbiIiIgotICAgIGNhY2hlID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydGVyID0gY2FjaGVbcGF0aF9uYW1lXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgIyBOb3QgeWV0IGNhY2hlZC4gRmxhZyBhcyB1c2luZyB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBtYWNoaW5lcnkgdW50aWwgd2UgZmluaXNoCi0gICAgICAgICMgY2hlY2tpbmcgdGhlIGhvb2tzCi0gICAgICAgIGNhY2hlW3BhdGhfbmFtZV0gPSBOb25lCi0gICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGltcG9ydGVyID0gaG9vayhwYXRoX25hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgY2hlY2sgbG9va3MgYSBiaXQgb2RkLiBUaGUgdHJpY2sgaXMgdGhhdAotICAgICAgICAgICAgIyBOdWxsSW1wb3J0ZXIgcmFpc2VzIEltcG9ydEVycm9yIGlmIHRoZSBzdXBwbGllZCBwYXRoIGlzIGEKLSAgICAgICAgICAgICMgKnZhbGlkKiBkaXJlY3RvcnkgZW50cnkgKGFuZCBoZW5jZSBhYmxlIHRvIGJlIGhhbmRsZWQKLSAgICAgICAgICAgICMgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBpbXAuTnVsbEltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBjYWNoZVtwYXRoX25hbWVdID0gaW1wb3J0ZXIKLSAgICByZXR1cm4gaW1wb3J0ZXIKLQotZGVmIF9nZXRfY29kZV9mcm9tX2ZpbGUoZm5hbWUpOgorZGVmIF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIGZuYW1lKToKICAgICAjIENoZWNrIGZvciBhIGNvbXBpbGVkIGZpbGUgZmlyc3QKICAgICB3aXRoIG9wZW4oZm5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgIGNvZGUgPSByZWFkX2NvZGUoZikKQEAgLTIyOSw3ICsyMDQsMTAgQEAKICAgICAgICAgIyBUaGF0IGRpZG4ndCB3b3JrLCBzbyB0cnkgaXQgYXMgbm9ybWFsIHNvdXJjZSBjb2RlCiAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGYucmVhZCgpLCBmbmFtZSwgJ2V4ZWMnKQotICAgIHJldHVybiBjb2RlCisgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIocnVuX25hbWUsIGZuYW1lKQorICAgIGVsc2U6CisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIocnVuX25hbWUsIGZuYW1lKQorICAgIHJldHVybiBjb2RlLCBsb2FkZXIKIAogZGVmIHJ1bl9wYXRoKHBhdGhfbmFtZSwgaW5pdF9nbG9iYWxzPU5vbmUsIHJ1bl9uYW1lPU5vbmUpOgogICAgICIiIkV4ZWN1dGUgY29kZSBsb2NhdGVkIGF0IHRoZSBzcGVjaWZpZWQgZmlsZXN5c3RlbSBsb2NhdGlvbgpAQCAtMjQ0LDEzICsyMjIsMTMgQEAKICAgICBpZiBydW5fbmFtZSBpcyBOb25lOgogICAgICAgICBydW5fbmFtZSA9ICI8cnVuX3BhdGg+IgogICAgIHBrZ19uYW1lID0gcnVuX25hbWUucnBhcnRpdGlvbigiLiIpWzBdCi0gICAgaW1wb3J0ZXIgPSBfZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCBpbXAuTnVsbEltcG9ydGVyKToKKyAgICBpbXBvcnRlciA9IGdldF9pbXBvcnRlcihwYXRoX25hbWUpCisgICAgaWYgaXNpbnN0YW5jZShpbXBvcnRlciwgKHR5cGUoTm9uZSksIGltcC5OdWxsSW1wb3J0ZXIpKToKICAgICAgICAgIyBOb3QgYSB2YWxpZCBzeXMucGF0aCBlbnRyeSwgc28gcnVuIHRoZSBjb2RlIGRpcmVjdGx5CiAgICAgICAgICMgZXhlY2ZpbGUoKSBkb2Vzbid0IGhlbHAgYXMgd2Ugd2FudCB0byBhbGxvdyBjb21waWxlZCBmaWxlcwotICAgICAgICBjb2RlID0gX2dldF9jb2RlX2Zyb21fZmlsZShwYXRoX25hbWUpCisgICAgICAgIGNvZGUsIG1vZF9sb2FkZXIgPSBfZ2V0X2NvZGVfZnJvbV9maWxlKHJ1bl9uYW1lLCBwYXRoX25hbWUpCiAgICAgICAgIHJldHVybiBfcnVuX21vZHVsZV9jb2RlKGNvZGUsIGluaXRfZ2xvYmFscywgcnVuX25hbWUsIHBhdGhfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX25hbWU9cGtnX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9sb2FkZXIsIHBrZ19uYW1lKQogICAgIGVsc2U6CiAgICAgICAgICMgSW1wb3J0ZXIgaXMgZGVmaW5lZCBmb3IgcGF0aCwgc28gYWRkIGl0IHRvCiAgICAgICAgICMgdGhlIHN0YXJ0IG9mIHN5cy5wYXRoCkBAIC0yNjIsMTMgKzI0MCw3IEBACiAgICAgICAgICAgICAjIGhhdmUgbm8gY2hvaWNlIGFuZCB3ZSBoYXZlIHRvIHJlbW92ZSBpdCBldmVuIHdoaWxlIHdlIHJlYWQgdGhlCiAgICAgICAgICAgICAjIGNvZGUuIElmIHdlIGRvbid0IGRvIHRoaXMsIGEgX19sb2FkZXJfXyBhdHRyaWJ1dGUgaW4gdGhlCiAgICAgICAgICAgICAjIGV4aXN0aW5nIF9fbWFpbl9fIG1vZHVsZSBtYXkgcHJldmVudCBsb2NhdGlvbiBvZiB0aGUgbmV3IG1vZHVsZS4KLSAgICAgICAgICAgIG1haW5fbmFtZSA9ICJfX21haW5fXyIKLSAgICAgICAgICAgIHNhdmVkX21haW4gPSBzeXMubW9kdWxlc1ttYWluX25hbWVdCi0gICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZF9uYW1lLCBsb2FkZXIsIGNvZGUsIGZuYW1lID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXSA9IHNhdmVkX21haW4KKyAgICAgICAgICAgIG1vZF9uYW1lLCBsb2FkZXIsIGNvZGUsIGZuYW1lID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKICAgICAgICAgICAgIHdpdGggX1RlbXBNb2R1bGUocnVuX25hbWUpIGFzIHRlbXBfbW9kdWxlLCBcCiAgICAgICAgICAgICAgICAgIF9Nb2RpZmllZEFyZ3YwKHBhdGhfbmFtZSk6CiAgICAgICAgICAgICAgICAgbW9kX2dsb2JhbHMgPSB0ZW1wX21vZHVsZS5tb2R1bGUuX19kaWN0X18KZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBhMTE5ODkyLi5jY2Y4Y2U5IDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0xMywxMiArMTMsMTIgQEAKIGZ1bmN0aW9uIGlzIGFsbG93ZWQgdG8gbW9kaWZ5IHRoZSBxdWV1ZS4gIFRpbWUgY2FuIGJlIGV4cHJlc3NlZCBhcwogaW50ZWdlcnMgb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYXMgbG9uZyBhcyBpdCBpcyBjb25zaXN0ZW50LgogCi1FdmVudHMgYXJlIHNwZWNpZmllZCBieSB0dXBsZXMgKHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KS4KK0V2ZW50cyBhcmUgc3BlY2lmaWVkIGJ5IHR1cGxlcyAodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykuCiBBcyBpbiBVTklYLCBsb3dlciBwcmlvcml0eSBudW1iZXJzIG1lYW4gaGlnaGVyIHByaW9yaXR5OyBpbiB0aGlzCiB3YXkgdGhlIHF1ZXVlIGNhbiBiZSBtYWludGFpbmVkIGFzIGEgcHJpb3JpdHkgcXVldWUuICBFeGVjdXRpb24gb2YgdGhlCiBldmVudCBtZWFucyBjYWxsaW5nIHRoZSBhY3Rpb24gZnVuY3Rpb24sIHBhc3NpbmcgaXQgdGhlIGFyZ3VtZW50CiBzZXF1ZW5jZSBpbiAiYXJndW1lbnQiIChyZW1lbWJlciB0aGF0IGluIFB5dGhvbiwgbXVsdGlwbGUgZnVuY3Rpb24KLWFyZ3VtZW50cyBhcmUgYmUgcGFja2VkIGluIGEgc2VxdWVuY2UpLgorYXJndW1lbnRzIGFyZSBiZSBwYWNrZWQgaW4gYSBzZXF1ZW5jZSkgYW5kIGtleXdvcmQgcGFyYW1ldGVycyBpbiAia3dhcmdzIi4KIFRoZSBhY3Rpb24gZnVuY3Rpb24gbWF5IGJlIGFuIGluc3RhbmNlIG1ldGhvZCBzbyBpdAogaGFzIGFub3RoZXIgd2F5IHRvIHJlZmVyZW5jZSBwcml2YXRlIGRhdGEgKGJlc2lkZXMgZ2xvYmFsIHZhcmlhYmxlcykuCiAiIiIKQEAgLTI4LDEyICsyOCwyMSBAQAogIyBYWFggaW5zdGVhZCBvZiBoYXZpbmcgdG8gZGVmaW5lIGEgbW9kdWxlIG9yIGNsYXNzIGp1c3QgdG8gaG9sZAogIyBYWFggdGhlIGdsb2JhbCBzdGF0ZSBvZiB5b3VyIHBhcnRpY3VsYXIgdGltZSBhbmQgZGVsYXkgZnVuY3Rpb25zLgogCitpbXBvcnQgdGltZQogaW1wb3J0IGhlYXBxCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAotY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQnKSk6CitjbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzJykpOgogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX25lX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSAhPSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQpAQCAtNDEsMzMgKzUwLDQxIEBACiAgICAgZGVmIF9fZ3RfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID4gIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ2VfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID49IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAKK19zZW50aW5lbCA9IG9iamVjdCgpCisKIGNsYXNzIHNjaGVkdWxlcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZWZ1bmMsIGRlbGF5ZnVuYyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZWZ1bmM9X3RpbWUsIGRlbGF5ZnVuYz10aW1lLnNsZWVwKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZSwgcGFzc2luZyB0aGUgdGltZSBhbmQgZGVsYXkKICAgICAgICAgZnVuY3Rpb25zIiIiCiAgICAgICAgIHNlbGYuX3F1ZXVlID0gW10KKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgIHNlbGYudGltZWZ1bmMgPSB0aW1lZnVuYwogICAgICAgICBzZWxmLmRlbGF5ZnVuYyA9IGRlbGF5ZnVuYwogCi0gICAgZGVmIGVudGVyYWJzKHNlbGYsIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KToKKyAgICBkZWYgZW50ZXJhYnMoc2VsZiwgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9KCksIGt3YXJncz1fc2VudGluZWwpOgogICAgICAgICAiIiJFbnRlciBhIG5ldyBldmVudCBpbiB0aGUgcXVldWUgYXQgYW4gYWJzb2x1dGUgdGltZS4KIAogICAgICAgICBSZXR1cm5zIGFuIElEIGZvciB0aGUgZXZlbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIGl0LAogICAgICAgICBpZiBuZWNlc3NhcnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCi0gICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKLSAgICAgICAgcmV0dXJuIGV2ZW50ICMgVGhlIElECisgICAgICAgIGlmIGt3YXJncyBpcyBfc2VudGluZWw6CisgICAgICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBldmVudCA9IEV2ZW50KHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MpCisgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChzZWxmLl9xdWV1ZSwgZXZlbnQpCisgICAgICAgICAgICByZXR1cm4gZXZlbnQgIyBUaGUgSUQKIAotICAgIGRlZiBlbnRlcihzZWxmLCBkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpOgorICAgIGRlZiBlbnRlcihzZWxmLCBkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9KCksIGt3YXJncz1fc2VudGluZWwpOgogICAgICAgICAiIiJBIHZhcmlhbnQgdGhhdCBzcGVjaWZpZXMgdGhlIHRpbWUgYXMgYSByZWxhdGl2ZSB0aW1lLgogCiAgICAgICAgIFRoaXMgaXMgYWN0dWFsbHkgdGhlIG1vcmUgY29tbW9ubHkgdXNlZCBpbnRlcmZhY2UuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQotICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgdGltZSA9IHNlbGYudGltZWZ1bmMoKSArIGRlbGF5CisgICAgICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKQogCiAgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudCk6CiAgICAgICAgICIiIlJlbW92ZSBhbiBldmVudCBmcm9tIHRoZSBxdWV1ZS4KQEAgLTc2LDE1ICs5MywyMCBAQAogICAgICAgICBJZiB0aGUgZXZlbnQgaXMgbm90IGluIHRoZSBxdWV1ZSwgdGhpcyByYWlzZXMgVmFsdWVFcnJvci4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcXVldWUucmVtb3ZlKGV2ZW50KQotICAgICAgICBoZWFwcS5oZWFwaWZ5KHNlbGYuX3F1ZXVlKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5yZW1vdmUoZXZlbnQpCisgICAgICAgICAgICBoZWFwcS5oZWFwaWZ5KHNlbGYuX3F1ZXVlKQogCiAgICAgZGVmIGVtcHR5KHNlbGYpOgogICAgICAgICAiIiJDaGVjayB3aGV0aGVyIHRoZSBxdWV1ZSBpcyBlbXB0eS4iIiIKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xdWV1ZQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gbm90IHNlbGYuX3F1ZXVlCiAKLSAgICBkZWYgcnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6CiAgICAgICAgICIiIkV4ZWN1dGUgZXZlbnRzIHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAgICAgICAgSWYgYmxvY2tpbmcgaXMgRmFsc2UgZXhlY3V0ZXMgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvCisgICAgICAgIGV4cGlyZSBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiB0aGUgZGVhZGxpbmUgb2YgdGhlCisgICAgICAgIG5leHQgc2NoZWR1bGVkIGNhbGwgaW4gdGhlIHNjaGVkdWxlci4KIAogICAgICAgICBXaGVuIHRoZXJlIGlzIGEgcG9zaXRpdmUgZGVsYXkgdW50aWwgdGhlIGZpcnN0IGV2ZW50LCB0aGUKICAgICAgICAgZGVsYXkgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB0aGUgZXZlbnQgaXMgbGVmdCBpbiB0aGUgcXVldWU7CkBAIC0xMDYsMzUgKzEyOCw0MSBAQAogICAgICAgICAiIiIKICAgICAgICAgIyBsb2NhbGl6ZSB2YXJpYWJsZSBhY2Nlc3MgdG8gbWluaW1pemUgb3ZlcmhlYWQKICAgICAgICAgIyBhbmQgdG8gaW1wcm92ZSB0aHJlYWQgc2FmZXR5CisgICAgICAgIGxvY2sgPSBzZWxmLl9sb2NrCiAgICAgICAgIHEgPSBzZWxmLl9xdWV1ZQogICAgICAgICBkZWxheWZ1bmMgPSBzZWxmLmRlbGF5ZnVuYwogICAgICAgICB0aW1lZnVuYyA9IHNlbGYudGltZWZ1bmMKICAgICAgICAgcG9wID0gaGVhcHEuaGVhcHBvcAotICAgICAgICB3aGlsZSBxOgotICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQgPSBjaGVja2VkX2V2ZW50ID0gcVswXQotICAgICAgICAgICAgbm93ID0gdGltZWZ1bmMoKQotICAgICAgICAgICAgaWYgbm93IDwgdGltZToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgICAgICBpZiBub3QgcToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICB0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzID0gcVswXQorICAgICAgICAgICAgICAgIG5vdyA9IHRpbWVmdW5jKCkKKyAgICAgICAgICAgICAgICBpZiB0aW1lID4gbm93OgorICAgICAgICAgICAgICAgICAgICBkZWxheSA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkZWxheSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHBvcChxKQorICAgICAgICAgICAgaWYgZGVsYXk6CisgICAgICAgICAgICAgICAgaWYgbm90IGJsb2NraW5nOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGltZSAtIG5vdwogICAgICAgICAgICAgICAgIGRlbGF5ZnVuYyh0aW1lIC0gbm93KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBldmVudCA9IHBvcChxKQotICAgICAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGV2ZW50IHdhcyBub3QgcmVtb3ZlZCBvciBhbHRlcmVkCi0gICAgICAgICAgICAgICAgIyBieSBhbm90aGVyIHRocmVhZCBhZnRlciB3ZSBsYXN0IGxvb2tlZCBhdCBxWzBdLgotICAgICAgICAgICAgICAgIGlmIGV2ZW50IGlzIGNoZWNrZWRfZXZlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbigqYXJndW1lbnQpCi0gICAgICAgICAgICAgICAgICAgIGRlbGF5ZnVuYygwKSAgICMgTGV0IG90aGVyIHRocmVhZHMgcnVuCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaGVhcHEuaGVhcHB1c2gocSwgZXZlbnQpCisgICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCwgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgZGVsYXlmdW5jKDApICAgIyBMZXQgb3RoZXIgdGhyZWFkcyBydW4KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBxdWV1ZShzZWxmKToKICAgICAgICAgIiIiQW4gb3JkZXJlZCBsaXN0IG9mIHVwY29taW5nIGV2ZW50cy4KIAogICAgICAgICBFdmVudHMgYXJlIG5hbWVkIHR1cGxlcyB3aXRoIGZpZWxkcyBmb3I6Ci0gICAgICAgICAgICB0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudHMKKyAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50cywga3dhcmdzCiAKICAgICAgICAgIiIiCiAgICAgICAgICMgVXNlIGhlYXBxIHRvIHNvcnQgdGhlIHF1ZXVlIHJhdGhlciB0aGFuIHVzaW5nICdzb3J0ZWQoc2VsZi5fcXVldWUpJy4KICAgICAgICAgIyBXaXRoIGhlYXBxLCB0d28gZXZlbnRzIHNjaGVkdWxlZCBhdCB0aGUgc2FtZSB0aW1lIHdpbGwgc2hvdyBpbgogICAgICAgICAjIHRoZSBhY3R1YWwgb3JkZXIgdGhleSB3b3VsZCBiZSByZXRyaWV2ZWQuCi0gICAgICAgIGV2ZW50cyA9IHNlbGYuX3F1ZXVlWzpdCi0gICAgICAgIHJldHVybiBtYXAoaGVhcHEuaGVhcHBvcCwgW2V2ZW50c10qbGVuKGV2ZW50cykpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGV2ZW50cyA9IHNlbGYuX3F1ZXVlWzpdCisgICAgICAgICAgICByZXR1cm4gbWFwKGhlYXBxLmhlYXBwb3AsIFtldmVudHNdKmxlbihldmVudHMpKQpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IDNlZGQzZGIuLjY5ZjNiNDUgMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTYsMTMgKzYsMTQgQEAKICMgUG9zaXggY29tcGxpYW5jZSwgc3BsaXQoKSwgc3RyaW5nIGFyZ3VtZW50cywgYW5kCiAjIGl0ZXJhdG9yIGludGVyZmFjZSBieSBHdXN0YXZvIE5pZW1leWVyLCBBcHJpbCAyMDAzLgogCi1pbXBvcnQgb3MucGF0aAoraW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLV9fYWxsX18gPSBbInNobGV4IiwgInNwbGl0Il0KK19fYWxsX18gPSBbInNobGV4IiwgInNwbGl0IiwgInF1b3RlIl0KIAogY2xhc3Mgc2hsZXg6CiAgICAgIkEgbGV4aWNhbCBhbmFseXplciBjbGFzcyBmb3Igc2ltcGxlIHNoZWxsLWxpa2Ugc3ludGF4ZXMuIgpAQCAtMjc0LDYgKzI3NSwyMSBAQAogICAgICAgICBsZXguY29tbWVudGVycyA9ICcnCiAgICAgcmV0dXJuIGxpc3QobGV4KQogCisKK19maW5kX3Vuc2FmZSA9IHJlLmNvbXBpbGUocidbXlx3QCUrPTosLi8tXScsIHJlLkFTQ0lJKS5zZWFyY2gKKworZGVmIHF1b3RlKHMpOgorICAgICIiIlJldHVybiBhIHNoZWxsLWVzY2FwZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nICpzKi4iIiIKKyAgICBpZiBub3QgczoKKyAgICAgICAgcmV0dXJuICInJyIKKyAgICBpZiBfZmluZF91bnNhZmUocykgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIHMKKworICAgICMgdXNlIHNpbmdsZSBxdW90ZXMsIGFuZCBwdXQgc2luZ2xlIHF1b3RlcyBpbnRvIGRvdWJsZSBxdW90ZXMKKyAgICAjIHRoZSBzdHJpbmcgJCdiIGlzIHRoZW4gcXVvdGVkIGFzICckJyInIidiJworICAgIHJldHVybiAiJyIgKyBzLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpICsgIiciCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDE6CiAgICAgICAgIGxleGVyID0gc2hsZXgoKQpkaWZmIC0tZ2l0IGEvTGliL3NodXRpbC5weSBiL0xpYi9zaHV0aWwucHkKaW5kZXggZWYyOWFlMi4uOWM2NjAwOCAxMDA2NDQKLS0tIGEvTGliL3NodXRpbC5weQorKysgYi9MaWIvc2h1dGlsLnB5CkBAIC0xNSw2ICsxNSw3IEBACiAKIHRyeToKICAgICBpbXBvcnQgYnoyCisgICAgZGVsIGJ6MgogICAgIF9CWjJfU1VQUE9SVEVEID0gVHJ1ZQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9CWjJfU1VQUE9SVEVEID0gRmFsc2UKQEAgLTM0LDcgKzM1LDkgQEAKICAgICAgICAgICAgIkV4ZWNFcnJvciIsICJtYWtlX2FyY2hpdmUiLCAiZ2V0X2FyY2hpdmVfZm9ybWF0cyIsCiAgICAgICAgICAgICJyZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCIsICJ1bnJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0IiwKICAgICAgICAgICAgImdldF91bnBhY2tfZm9ybWF0cyIsICJyZWdpc3Rlcl91bnBhY2tfZm9ybWF0IiwKLSAgICAgICAgICAgInVucmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCIsICJ1bnBhY2tfYXJjaGl2ZSIsICJpZ25vcmVfcGF0dGVybnMiXQorICAgICAgICAgICAidW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0IiwgInVucGFja19hcmNoaXZlIiwKKyAgICAgICAgICAgImlnbm9yZV9wYXR0ZXJucyIsICJjaG93biIsICJ3aGljaCJdCisgICAgICAgICAgICMgZGlza191c2FnZSBpcyBhZGRlZCBsYXRlciwgaWYgYXZhaWxhYmxlIG9uIHRoZSBwbGF0Zm9ybQogCiBjbGFzcyBFcnJvcihFbnZpcm9ubWVudEVycm9yKToKICAgICBwYXNzCkBAIC03OSw4ICs4MiwxMyBAQAogICAgIHJldHVybiAob3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoc3JjKSkgPT0KICAgICAgICAgICAgIG9zLnBhdGgubm9ybWNhc2Uob3MucGF0aC5hYnNwYXRoKGRzdCkpKQogCi1kZWYgY29weWZpbGUoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgZGF0YSBmcm9tIHNyYyB0byBkc3QiIiIKK2RlZiBjb3B5ZmlsZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgZGF0YSBmcm9tIHNyYyB0byBkc3QuCisKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgbm90IHNldCBhbmQgc3JjIGlzIGEgc3ltYm9saWMgbGluaywgYSBuZXcKKyAgICBzeW1saW5rIHdpbGwgYmUgY3JlYXRlZCBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIGZpbGUgaXQgcG9pbnRzIHRvLgorCisgICAgIiIiCiAgICAgaWYgX3NhbWVmaWxlKHNyYywgZHN0KToKICAgICAgICAgcmFpc2UgRXJyb3IoImAlc2AgYW5kIGAlc2AgYXJlIHRoZSBzYW1lIGZpbGUiICUgKHNyYywgZHN0KSkKIApAQCAtOTUsNTYgKzEwMywxNDAgQEAKICAgICAgICAgICAgIGlmIHN0YXQuU19JU0ZJRk8oc3Quc3RfbW9kZSk6CiAgICAgICAgICAgICAgICAgcmFpc2UgU3BlY2lhbEZpbGVFcnJvcigiYCVzYCBpcyBhIG5hbWVkIHBpcGUiICUgZm4pCiAKLSAgICB3aXRoIG9wZW4oc3JjLCAncmInKSBhcyBmc3JjOgotICAgICAgICB3aXRoIG9wZW4oZHN0LCAnd2InKSBhcyBmZHN0OgotICAgICAgICAgICAgY29weWZpbGVvYmooZnNyYywgZmRzdCkKKyAgICBpZiBub3QgZm9sbG93X3N5bWxpbmtzIGFuZCBvcy5wYXRoLmlzbGluayhzcmMpOgorICAgICAgICBvcy5zeW1saW5rKG9zLnJlYWRsaW5rKHNyYyksIGRzdCkKKyAgICBlbHNlOgorICAgICAgICB3aXRoIG9wZW4oc3JjLCAncmInKSBhcyBmc3JjOgorICAgICAgICAgICAgd2l0aCBvcGVuKGRzdCwgJ3diJykgYXMgZmRzdDoKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihmc3JjLCBmZHN0KQorICAgIHJldHVybiBkc3QKIAotZGVmIGNvcHltb2RlKHNyYywgZHN0KToKLSAgICAiIiJDb3B5IG1vZGUgYml0cyBmcm9tIHNyYyB0byBkc3QiIiIKLSAgICBpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKLSAgICAgICAgc3QgPSBvcy5zdGF0KHNyYykKLSAgICAgICAgbW9kZSA9IHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKQotICAgICAgICBvcy5jaG1vZChkc3QsIG1vZGUpCitkZWYgY29weW1vZGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IG1vZGUgYml0cyBmcm9tIHNyYyB0byBkc3QuCiAKLWRlZiBjb3B5c3RhdChzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBhbGwgc3RhdCBpbmZvIChtb2RlIGJpdHMsIGF0aW1lLCBtdGltZSwgZmxhZ3MpIGZyb20gc3JjIHRvIGRzdCIiIgotICAgIHN0ID0gb3Muc3RhdChzcmMpCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIG5vdCBzZXQsIHN5bWxpbmtzIGFyZW4ndCBmb2xsb3dlZCBpZiBhbmQgb25seQorICAgIGlmIGJvdGggYHNyY2AgYW5kIGBkc3RgIGFyZSBzeW1saW5rcy4gIElmIGBsY2htb2RgIGlzbid0IGF2YWlsYWJsZQorICAgIChlLmcuIExpbnV4KSB0aGlzIG1ldGhvZCBkb2VzIG5vdGhpbmcuCisKKyAgICAiIiIKKyAgICBpZiBub3QgZm9sbG93X3N5bWxpbmtzIGFuZCBvcy5wYXRoLmlzbGluayhzcmMpIGFuZCBvcy5wYXRoLmlzbGluayhkc3QpOgorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzdGF0X2Z1bmMsIGNobW9kX2Z1bmMgPSBvcy5sc3RhdCwgb3MubGNobW9kCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4KKyAgICBlbGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgorICAgICAgICBzdGF0X2Z1bmMsIGNobW9kX2Z1bmMgPSBvcy5zdGF0LCBvcy5jaG1vZAorICAgIGVsc2U6CisgICAgICAgIHJldHVybgorCisgICAgc3QgPSBzdGF0X2Z1bmMoc3JjKQorICAgIGNobW9kX2Z1bmMoZHN0LCBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkpCisKK2lmIGhhc2F0dHIob3MsICdsaXN0eGF0dHInKToKKyAgICBkZWYgX2NvcHl4YXR0cihzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICAgICAiIiJDb3B5IGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlcyBmcm9tIGBzcmNgIHRvIGBkc3RgLgorCisgICAgICAgIE92ZXJ3cml0ZSBleGlzdGluZyBhdHRyaWJ1dGVzLgorCisgICAgICAgIElmIGBmb2xsb3dfc3ltbGlua3NgIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4KKworICAgICAgICAiIiIKKworICAgICAgICBmb3IgbmFtZSBpbiBvcy5saXN0eGF0dHIoc3JjLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG9zLmdldHhhdHRyKHNyYywgbmFtZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihkc3QsIG5hbWUsIHZhbHVlLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vIG5vdCBpbiAoZXJybm8uRVBFUk0sIGVycm5vLkVOT1RTVVAsIGVycm5vLkVOT0RBVEEpOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorZWxzZToKKyAgICBkZWYgX2NvcHl4YXR0cigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBwYXNzCisKK2RlZiBjb3B5c3RhdChzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgYWxsIHN0YXQgaW5mbyAobW9kZSBiaXRzLCBhdGltZSwgbXRpbWUsIGZsYWdzKSBmcm9tIHNyYyB0byBkc3QuCisKKyAgICBJZiB0aGUgb3B0aW9uYWwgZmxhZyBgZm9sbG93X3N5bWxpbmtzYCBpcyBub3Qgc2V0LCBzeW1saW5rcyBhcmVuJ3QgZm9sbG93ZWQgaWYgYW5kCisgICAgb25seSBpZiBib3RoIGBzcmNgIGFuZCBgZHN0YCBhcmUgc3ltbGlua3MuCisKKyAgICAiIiIKKyAgICBkZWYgX25vcCgqYXJncywgbnM9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICAjIGZvbGxvdyBzeW1saW5rcyAoYWthIGRvbid0IG5vdCBmb2xsb3cgc3ltbGlua3MpCisgICAgZm9sbG93ID0gZm9sbG93X3N5bWxpbmtzIG9yIG5vdCAob3MucGF0aC5pc2xpbmsoc3JjKSBhbmQgb3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICBpZiBmb2xsb3c6CisgICAgICAgICMgdXNlIHRoZSByZWFsIGZ1bmN0aW9uIGlmIGl0IGV4aXN0cworICAgICAgICBkZWYgbG9va3VwKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIob3MsIG5hbWUsIF9ub3ApCisgICAgZWxzZToKKyAgICAgICAgIyB1c2UgdGhlIHJlYWwgZnVuY3Rpb24gb25seSBpZiBpdCBleGlzdHMKKyAgICAgICAgIyAqYW5kKiBpdCBzdXBwb3J0cyBmb2xsb3dfc3ltbGlua3MKKyAgICAgICAgZGVmIGxvb2t1cChuYW1lKToKKyAgICAgICAgICAgIGZuID0gZ2V0YXR0cihvcywgbmFtZSwgX25vcCkKKyAgICAgICAgICAgIGlmIGZuIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgICAgICByZXR1cm4gZm4KKyAgICAgICAgICAgIHJldHVybiBfbm9wCisKKyAgICBzdCA9IGxvb2t1cCgic3RhdCIpKHNyYywgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKICAgICBtb2RlID0gc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpCi0gICAgaWYgaGFzYXR0cihvcywgJ3V0aW1lJyk6Ci0gICAgICAgIG9zLnV0aW1lKGRzdCwgKHN0LnN0X2F0aW1lLCBzdC5zdF9tdGltZSkpCi0gICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6Ci0gICAgICAgIG9zLmNobW9kKGRzdCwgbW9kZSkKLSAgICBpZiBoYXNhdHRyKG9zLCAnY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0LCAnc3RfZmxhZ3MnKToKKyAgICBsb29rdXAoInV0aW1lIikoZHN0LCBucz0oc3Quc3RfYXRpbWVfbnMsIHN0LnN0X210aW1lX25zKSwKKyAgICAgICAgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKKyAgICB0cnk6CisgICAgICAgIGxvb2t1cCgiY2htb2QiKShkc3QsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCisgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICMgaWYgd2UgZ290IGEgTm90SW1wbGVtZW50ZWRFcnJvciwgaXQncyBiZWNhdXNlCisgICAgICAgICMgICAqIGZvbGxvd19zeW1saW5rcz1GYWxzZSwKKyAgICAgICAgIyAgICogbGNob3duKCkgaXMgdW5hdmFpbGFibGUsIGFuZAorICAgICAgICAjICAgKiBlaXRoZXIKKyAgICAgICAgIyAgICAgICAqIGZjaG93bmF0KCkgaXMgdW52YWlsYWJsZSBvcgorICAgICAgICAjICAgICAgICogZmNob3duYXQoKSBkb2Vzbid0IGltcGxlbWVudCBBVF9TWU1MSU5LX05PRk9MTE9XLgorICAgICAgICAjICAgICAgICAgKGl0IHJldHVybmVkIEVOT1NVUC4pCisgICAgICAgICMgdGhlcmVmb3JlIHdlJ3JlIG91dCBvZiBvcHRpb25zLS13ZSBzaW1wbHkgY2Fubm90IGNob3duIHRoZQorICAgICAgICAjIHN5bWxpbmsuICBnaXZlIHVwLCBzdXBwcmVzcyB0aGUgZXJyb3IuCisgICAgICAgICMgKHdoaWNoIGlzIHdoYXQgc2h1dGlsIGFsd2F5cyBkaWQgaW4gdGhpcyBjaXJjdW1zdGFuY2UuKQorICAgICAgICBwYXNzCisgICAgaWYgaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJyk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MoZHN0LCBzdC5zdF9mbGFncykKKyAgICAgICAgICAgIGxvb2t1cCgiY2hmbGFncyIpKGRzdCwgc3Quc3RfZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgIGZvciBlcnIgaW4gJ0VPUE5PVFNVUFAnLCAnRU5PVFNVUCc6CiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihlcnJubywgZXJyKSBhbmQgd2h5LmVycm5vID09IGdldGF0dHIoZXJybm8sIGVycik6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgX2NvcHl4YXR0cihzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKIAotZGVmIGNvcHkoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgZGF0YSBhbmQgbW9kZSBiaXRzICgiY3Agc3JjIGRzdCIpLgorZGVmIGNvcHkoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGRhdGEgYW5kIG1vZGUgYml0cyAoImNwIHNyYyBkc3QiKS4gUmV0dXJuIHRoZSBmaWxlJ3MgZGVzdGluYXRpb24uCiAKICAgICBUaGUgZGVzdGluYXRpb24gbWF5IGJlIGEgZGlyZWN0b3J5LgogCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4gVGhpcworICAgIHJlc2VtYmxlcyBHTlUncyAiY3AgLVAgc3JjIGRzdCIuCisKICAgICAiIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKGRzdCk6CiAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihkc3QsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKLSAgICBjb3B5ZmlsZShzcmMsIGRzdCkKLSAgICBjb3B5bW9kZShzcmMsIGRzdCkKKyAgICBjb3B5ZmlsZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICBjb3B5bW9kZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICByZXR1cm4gZHN0CiAKLWRlZiBjb3B5MihzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGFuZCBhbGwgc3RhdCBpbmZvICgiY3AgLXAgc3JjIGRzdCIpLgorZGVmIGNvcHkyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGFuZCBhbGwgc3RhdCBpbmZvICgiY3AgLXAgc3JjIGRzdCIpLiBSZXR1cm4gdGhlIGZpbGUncworICAgIGRlc3RpbmF0aW9uLiIKIAogICAgIFRoZSBkZXN0aW5hdGlvbiBtYXkgYmUgYSBkaXJlY3RvcnkuCiAKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLiBUaGlzCisgICAgcmVzZW1ibGVzIEdOVSdzICJjcCAtUCBzcmMgZHN0Ii4KKwogICAgICIiIgogICAgIGlmIG9zLnBhdGguaXNkaXIoZHN0KToKICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGRzdCwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQotICAgIGNvcHlmaWxlKHNyYywgZHN0KQotICAgIGNvcHlzdGF0KHNyYywgZHN0KQorICAgIGNvcHlmaWxlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIGNvcHlzdGF0KHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIHJldHVybiBkc3QKIAogZGVmIGlnbm9yZV9wYXR0ZXJucygqcGF0dGVybnMpOgogICAgICIiIkZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgY29weXRyZWUoKSBpZ25vcmUgcGFyYW1ldGVyLgpAQCAtMjExLDcgKzMwMywxMSBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoc3JjbmFtZSk6CiAgICAgICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjbmFtZSkKICAgICAgICAgICAgICAgICBpZiBzeW1saW5rczoKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBqdXN0IGxlYXZlIGl0IHRvIGBjb3B5X2Z1bmN0aW9uYCBiZWNhdXNlIGxlZ2FjeQorICAgICAgICAgICAgICAgICAgICAjIGNvZGUgd2l0aCBhIGN1c3RvbSBgY29weV9mdW5jdGlvbmAgbWF5IHJlbHkgb24gY29weXRyZWUKKyAgICAgICAgICAgICAgICAgICAgIyBkb2luZyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsobGlua3RvLCBkc3RuYW1lKQorICAgICAgICAgICAgICAgICAgICBjb3B5c3RhdChzcmNuYW1lLCBkc3RuYW1lLCBmb2xsb3dfc3ltbGlua3M9bm90IHN5bWxpbmtzKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGRhbmdsaW5nIHN5bWxpbmsgaWYgdGhlIGZsYWcgaXMgb24KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxpbmt0bykgYW5kIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rczoKQEAgLTIzOSwyNCArMzM1LDEwIEBACiAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKChzcmMsIGRzdCwgc3RyKHdoeSkpKQogICAgIGlmIGVycm9yczoKICAgICAgICAgcmFpc2UgRXJyb3IoZXJyb3JzKQorICAgIHJldHVybiBkc3QKIAotZGVmIHJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPUZhbHNlLCBvbmVycm9yPU5vbmUpOgotICAgICIiIlJlY3Vyc2l2ZWx5IGRlbGV0ZSBhIGRpcmVjdG9yeSB0cmVlLgotCi0gICAgSWYgaWdub3JlX2Vycm9ycyBpcyBzZXQsIGVycm9ycyBhcmUgaWdub3JlZDsgb3RoZXJ3aXNlLCBpZiBvbmVycm9yCi0gICAgaXMgc2V0LCBpdCBpcyBjYWxsZWQgdG8gaGFuZGxlIHRoZSBlcnJvciB3aXRoIGFyZ3VtZW50cyAoZnVuYywKLSAgICBwYXRoLCBleGNfaW5mbykgd2hlcmUgZnVuYyBpcyBvcy5saXN0ZGlyLCBvcy5yZW1vdmUsIG9yIG9zLnJtZGlyOwotICAgIHBhdGggaXMgdGhlIGFyZ3VtZW50IHRvIHRoYXQgZnVuY3Rpb24gdGhhdCBjYXVzZWQgaXQgdG8gZmFpbDsgYW5kCi0gICAgZXhjX2luZm8gaXMgYSB0dXBsZSByZXR1cm5lZCBieSBzeXMuZXhjX2luZm8oKS4gIElmIGlnbm9yZV9lcnJvcnMKLSAgICBpcyBmYWxzZSBhbmQgb25lcnJvciBpcyBOb25lLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gICAgIiIiCi0gICAgaWYgaWdub3JlX2Vycm9yczoKLSAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgotICAgICAgICAgICAgcGFzcwotICAgIGVsaWYgb25lcnJvciBpcyBOb25lOgotICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6Ci0gICAgICAgICAgICByYWlzZQorIyB2ZXJzaW9uIHZ1bG5lcmFibGUgdG8gcmFjZSBjb25kaXRpb25zCitkZWYgX3JtdHJlZV91bnNhZmUocGF0aCwgb25lcnJvcik6CiAgICAgdHJ5OgogICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKToKICAgICAgICAgICAgICMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXJlIGZvcmJpZGRlbiwgc2VlIGJ1ZyAjMTY2OQpAQCAtMjY4LDcgKzM1MCw3IEBACiAgICAgbmFtZXMgPSBbXQogICAgIHRyeToKICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIGVycjoKKyAgICBleGNlcHQgb3MuZXJyb3I6CiAgICAgICAgIG9uZXJyb3Iob3MubGlzdGRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCkBAIC0yNzcsMTcgKzM1OSwxMjEgQEAKICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgogICAgICAgICAgICAgbW9kZSA9IDAKICAgICAgICAgaWYgc3RhdC5TX0lTRElSKG1vZGUpOgotICAgICAgICAgICAgcm10cmVlKGZ1bGxuYW1lLCBpZ25vcmVfZXJyb3JzLCBvbmVycm9yKQorICAgICAgICAgICAgX3JtdHJlZV91bnNhZmUoZnVsbG5hbWUsIG9uZXJyb3IpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZ1bGxuYW1lKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJlbW92ZSwgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgICAgIG9zLnVubGluayhmdWxsbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnVubGluaywgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQogICAgIHRyeToKICAgICAgICAgb3Mucm1kaXIocGF0aCkKICAgICBleGNlcHQgb3MuZXJyb3I6CiAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQogCisjIFZlcnNpb24gdXNpbmcgZmQtYmFzZWQgQVBJcyB0byBwcm90ZWN0IGFnYWluc3QgcmFjZXMKK2RlZiBfcm10cmVlX3NhZmVfZmQodG9wZmQsIHBhdGgsIG9uZXJyb3IpOgorICAgIG5hbWVzID0gW10KKyAgICB0cnk6CisgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcih0b3BmZCkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIGVyci5maWxlbmFtZSA9IHBhdGgKKyAgICAgICAgb25lcnJvcihvcy5saXN0ZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zdCA9IG9zLnN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICBtb2RlID0gb3JpZ19zdC5zdF9tb2RlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgbW9kZSA9IDAKKyAgICAgICAgaWYgc3RhdC5TX0lTRElSKG1vZGUpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihuYW1lLCBvcy5PX1JET05MWSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgb25lcnJvcihvcy5vcGVuLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5zYW1lc3RhdChvcmlnX3N0LCBvcy5mc3RhdChkaXJmZCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGRpcmZkLCBmdWxsbmFtZSwgb25lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9dG9wZmQpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiBzb21lb25lIHJlcGxhY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSB3aXRoIGEgc3ltbGluayBhZnRlciB0aGUgY2FsbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RhdC5TX0lTRElSIGFib3ZlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbm5vdCBjYWxsIHJtdHJlZSBvbiBhIHN5bWJvbGljICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MucGF0aC5pc2xpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgb25lcnJvcihvcy51bmxpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKworX3VzZV9mZF9mdW5jdGlvbnMgPSAoe29zLm9wZW4sIG9zLnN0YXQsIG9zLnVubGluaywgb3Mucm1kaXJ9IDw9CisgICAgICAgICAgICAgICAgICAgICBvcy5zdXBwb3J0c19kaXJfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICBvcy5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3MpCisKK2RlZiBybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1GYWxzZSwgb25lcnJvcj1Ob25lKToKKyAgICAiIiJSZWN1cnNpdmVseSBkZWxldGUgYSBkaXJlY3RvcnkgdHJlZS4KKworICAgIElmIGlnbm9yZV9lcnJvcnMgaXMgc2V0LCBlcnJvcnMgYXJlIGlnbm9yZWQ7IG90aGVyd2lzZSwgaWYgb25lcnJvcgorICAgIGlzIHNldCwgaXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGUgZXJyb3Igd2l0aCBhcmd1bWVudHMgKGZ1bmMsCisgICAgcGF0aCwgZXhjX2luZm8pIHdoZXJlIGZ1bmMgaXMgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudDsKKyAgICBwYXRoIGlzIHRoZSBhcmd1bWVudCB0byB0aGF0IGZ1bmN0aW9uIHRoYXQgY2F1c2VkIGl0IHRvIGZhaWw7IGFuZAorICAgIGV4Y19pbmZvIGlzIGEgdHVwbGUgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuICBJZiBpZ25vcmVfZXJyb3JzCisgICAgaXMgZmFsc2UgYW5kIG9uZXJyb3IgaXMgTm9uZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIGlnbm9yZV9lcnJvcnM6CisgICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBlbGlmIG9uZXJyb3IgaXMgTm9uZToKKyAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgorICAgICAgICAgICAgcmFpc2UKKyAgICBpZiBfdXNlX2ZkX2Z1bmN0aW9uczoKKyAgICAgICAgIyBXaGlsZSB0aGUgdW5zYWZlIHJtdHJlZSB3b3JrcyBmaW5lIG9uIGJ5dGVzLCB0aGUgZmQgYmFzZWQgZG9lcyBub3QuCisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgorICAgICAgICAgICAgcGF0aCA9IG9zLmZzZGVjb2RlKHBhdGgpCisgICAgICAgICMgTm90ZTogVG8gZ3VhcmQgYWdhaW5zdCBzeW1saW5rIHJhY2VzLCB3ZSB1c2UgdGhlIHN0YW5kYXJkCisgICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zdCA9IG9zLmxzdGF0KHBhdGgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBvbmVycm9yKG9zLmxzdGF0LCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocGF0aCwgb3MuT19SRE9OTFkpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBvbmVycm9yKG9zLmxzdGF0LCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGZkKSk6CisgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGZkLCBwYXRoLCBvbmVycm9yKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIocGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXJlIGZvcmJpZGRlbiwgc2VlIGJ1ZyAjMTY2OQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDYW5ub3QgY2FsbCBybXRyZWUgb24gYSBzeW1ib2xpYyBsaW5rIikKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihvcy5wYXRoLmlzbGluaywgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX3JtdHJlZV91bnNhZmUocGF0aCwgb25lcnJvcikKKworIyBBbGxvdyBpbnRyb3NwZWN0aW9uIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBoYXJkZW5pbmcgYWdhaW5zdCBzeW1saW5rCisjIGF0dGFja3MgaXMgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtCitybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcyA9IF91c2VfZmRfZnVuY3Rpb25zCiAKIGRlZiBfYmFzZW5hbWUocGF0aCk6CiAgICAgIyBBIGJhc2VuYW1lKCkgdmFyaWFudCB3aGljaCBmaXJzdCBzdHJpcHMgdGhlIHRyYWlsaW5nIHNsYXNoLCBpZiBwcmVzZW50LgpAQCAtMjk2LDcgKzQ4Miw4IEBACiAKIGRlZiBtb3ZlKHNyYywgZHN0KToKICAgICAiIiJSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBpcwotICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLgorICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLiBSZXR1cm4gdGhlIGZpbGUgb3IgZGlyZWN0b3J5J3MKKyAgICBkZXN0aW5hdGlvbi4KIAogICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZSBzb3VyY2UKICAgICBpcyBtb3ZlZCBpbnNpZGUgdGhlIGRpcmVjdG9yeS4gVGhlIGRlc3RpbmF0aW9uIHBhdGggbXVzdCBub3QgYWxyZWFkeQpAQCAtMzA2LDcgKzQ5MywxMCBAQAogICAgIG92ZXJ3cml0dGVuIGRlcGVuZGluZyBvbiBvcy5yZW5hbWUoKSBzZW1hbnRpY3MuCiAKICAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gb3VyIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiByZW5hbWUoKSBpcyB1c2VkLgotICAgIE90aGVyd2lzZSwgc3JjIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gYW5kIHRoZW4gcmVtb3ZlZC4KKyAgICBPdGhlcndpc2UsIHNyYyBpcyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGFuZCB0aGVuIHJlbW92ZWQuIFN5bWxpbmtzIGFyZQorICAgIHJlY3JlYXRlZCB1bmRlciB0aGUgbmV3IG5hbWUgaWYgb3MucmVuYW1lKCkgZmFpbHMgYmVjYXVzZSBvZiBjcm9zcworICAgIGZpbGVzeXN0ZW0gcmVuYW1lcy4KKwogICAgIEEgbG90IG1vcmUgY291bGQgYmUgZG9uZSBoZXJlLi4uICBBIGxvb2sgYXQgYSBtdi5jIHNob3dzIGEgbG90IG9mCiAgICAgdGhlIGlzc3VlcyB0aGlzIGltcGxlbWVudGF0aW9uIGdsb3NzZXMgb3Zlci4KIApAQCAtMzI0LDggKzUxNCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgRXJyb3IoIkRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyIgJSByZWFsX2RzdCkKICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZShzcmMsIHJlYWxfZHN0KQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmMpOgorICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjKQorICAgICAgICAgICAgb3Muc3ltbGluayhsaW5rdG8sIHJlYWxfZHN0KQorICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CiAgICAgICAgICAgICBpZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiAnJXMnLiIgJSAoc3JjLCBkc3QpKQogICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgc3ltbGlua3M9VHJ1ZSkKQEAgLTMzMyw2ICs1MjcsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29weTIoc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCisgICAgcmV0dXJuIHJlYWxfZHN0CiAKIGRlZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICBzcmMgPSBhYnNwYXRoKHNyYykKQEAgLTM5MSw3ICs1ODYsNyBAQAogICAgICAgICBjb21wcmVzc19leHRbJ2J6aXAyJ10gPSAnLmJ6MicKIAogICAgICMgZmxhZ3MgZm9yIGNvbXByZXNzaW9uIHByb2dyYW0sIGVhY2ggZWxlbWVudCBvZiBsaXN0IHdpbGwgYmUgYW4gYXJndW1lbnQKLSAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dC5rZXlzKCk6CisgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQ6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJywgb3IgY29tcHJlc3Npb24gZm9ybWF0IG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCA6IHswfSIuZm9ybWF0KGNvbXByZXNzKSkKIApAQCAtNDk2LDcgKzY5MSw3IEBACiBfQVJDSElWRV9GT1JNQVRTID0gewogICAgICdnenRhcic6IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdnemlwJyldLCAiZ3ppcCdlZCB0YXItZmlsZSIpLAogICAgICd0YXInOiAgIChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsIE5vbmUpXSwgInVuY29tcHJlc3NlZCB0YXIgZmlsZSIpLAotICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwiWklQIGZpbGUiKQorICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwgIlpJUCBmaWxlIikKICAgICB9CiAKIGlmIF9CWjJfU1VQUE9SVEVEOgpAQCAtNTI5LDcgKzcyNCw3IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXh0cmFfYXJncywgKHR1cGxlLCBsaXN0KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBuZWVkcyB0byBiZSBhIHNlcXVlbmNlJykKICAgICBmb3IgZWxlbWVudCBpbiBleHRyYV9hcmdzOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbGVtZW50LCAodHVwbGUsIGxpc3QpKSBvciBsZW4oZWxlbWVudCkgIT0yIDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZWxlbWVudCwgKHR1cGxlLCBsaXN0KSkgb3IgbGVuKGVsZW1lbnQpICE9MjoKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBlbGVtZW50cyBhcmUgOiAoYXJnX25hbWUsIHZhbHVlKScpCiAKICAgICBfQVJDSElWRV9GT1JNQVRTW25hbWVdID0gKGZ1bmN0aW9uLCBleHRyYV9hcmdzLCBkZXNjcmlwdGlvbikKQEAgLTY4MSw3ICs4NzYsNyBAQAogICAgICAgICAgICAgaWYgbm90IG5hbWUuZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgICAgICAjIGZpbGUKICAgICAgICAgICAgICAgICBkYXRhID0gemlwLnJlYWQoaW5mby5maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsJ3diJykKKyAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsICd3YicpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCiAgICAgICAgICAgICAgICAgZmluYWxseToKQEAgLTc1NSwzICs5NTAsMTY1IEBACiAgICAgICAgIGZ1bmMgPSBfVU5QQUNLX0ZPUk1BVFNbZm9ybWF0XVsxXQogICAgICAgICBrd2FyZ3MgPSBkaWN0KF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzJdKQogICAgICAgICBmdW5jKGZpbGVuYW1lLCBleHRyYWN0X2RpciwgKiprd2FyZ3MpCisKKworaWYgaGFzYXR0cihvcywgJ3N0YXR2ZnMnKToKKworICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCisKKyAgICBkZWYgZGlza191c2FnZShwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KKworICAgICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBhIG5hbWVkIHR1cGxlIHdpdGggYXR0cmlidXRlcyAndG90YWwnLCAndXNlZCcgYW5kCisgICAgICAgICdmcmVlJywgd2hpY2ggYXJlIHRoZSBhbW91bnQgb2YgdG90YWwsIHVzZWQgYW5kIGZyZWUgc3BhY2UsIGluIGJ5dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0dmZzKHBhdGgpCisgICAgICAgIGZyZWUgPSBzdC5mX2JhdmFpbCAqIHN0LmZfZnJzaXplCisgICAgICAgIHRvdGFsID0gc3QuZl9ibG9ja3MgKiBzdC5mX2Zyc2l6ZQorICAgICAgICB1c2VkID0gKHN0LmZfYmxvY2tzIC0gc3QuZl9iZnJlZSkgKiBzdC5mX2Zyc2l6ZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKK2VsaWYgb3MubmFtZSA9PSAnbnQnOgorCisgICAgaW1wb3J0IG50CisgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQorICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKworICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgorCisgICAgICAgIFJldHVybmVkIHZhbHVzIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKKyAgICAgICAgJ2ZyZWUnLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZiB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisgICAgICAgICIiIgorICAgICAgICB0b3RhbCwgZnJlZSA9IG50Ll9nZXRkaXNrdXNhZ2UocGF0aCkKKyAgICAgICAgdXNlZCA9IHRvdGFsIC0gZnJlZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKKworZGVmIGNob3duKHBhdGgsIHVzZXI9Tm9uZSwgZ3JvdXA9Tm9uZSk6CisgICAgIiIiQ2hhbmdlIG93bmVyIHVzZXIgYW5kIGdyb3VwIG9mIHRoZSBnaXZlbiBwYXRoLgorCisgICAgdXNlciBhbmQgZ3JvdXAgY2FuIGJlIHRoZSB1aWQvZ2lkIG9yIHRoZSB1c2VyL2dyb3VwIG5hbWVzLCBhbmQgaW4gdGhhdCBjYXNlLAorICAgIHRoZXkgYXJlIGNvbnZlcnRlZCB0byB0aGVpciByZXNwZWN0aXZlIHVpZC9naWQuCisgICAgIiIiCisKKyAgICBpZiB1c2VyIGlzIE5vbmUgYW5kIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZXIgYW5kL29yIGdyb3VwIG11c3QgYmUgc2V0IikKKworICAgIF91c2VyID0gdXNlcgorICAgIF9ncm91cCA9IGdyb3VwCisKKyAgICAjIC0xIG1lYW5zIGRvbid0IGNoYW5nZSBpdAorICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgX3VzZXIgPSAtMQorICAgICMgdXNlciBjYW4gZWl0aGVyIGJlIGFuIGludCAodGhlIHVpZCkgb3IgYSBzdHJpbmcgKHRoZSBzeXN0ZW0gdXNlcm5hbWUpCisgICAgZWxpZiBpc2luc3RhbmNlKHVzZXIsIHN0cik6CisgICAgICAgIF91c2VyID0gX2dldF91aWQodXNlcikKKyAgICAgICAgaWYgX3VzZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIExvb2t1cEVycm9yKCJubyBzdWNoIHVzZXI6IHshcn0iLmZvcm1hdCh1c2VyKSkKKworICAgIGlmIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIF9ncm91cCA9IC0xCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShncm91cCwgaW50KToKKyAgICAgICAgX2dyb3VwID0gX2dldF9naWQoZ3JvdXApCisgICAgICAgIGlmIF9ncm91cCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoIm5vIHN1Y2ggZ3JvdXA6IHshcn0iLmZvcm1hdChncm91cCkpCisKKyAgICBvcy5jaG93bihwYXRoLCBfdXNlciwgX2dyb3VwKQorCitkZWYgZ2V0X3Rlcm1pbmFsX3NpemUoZmFsbGJhY2s9KDgwLCAyNCkpOgorICAgICIiIkdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICAgRm9yIGVhY2ggb2YgdGhlIHR3byBkaW1lbnNpb25zLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIENPTFVNTlMKKyAgICBhbmQgTElORVMgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgICB0aGUgdmFsdWUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBpdCBpcyB1c2VkLgorCisgICAgV2hlbiBDT0xVTU5TIG9yIExJTkVTIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICAgdGhlIHRlcm1pbmFsIGNvbm5lY3RlZCB0byBzeXMuX19zdGRvdXRfXyBpcyBxdWVyaWVkCisgICAgYnkgaW52b2tpbmcgb3MuZ2V0X3Rlcm1pbmFsX3NpemUuCisKKyAgICBJZiB0aGUgdGVybWluYWwgc2l6ZSBjYW5ub3QgYmUgc3VjY2Vzc2Z1bGx5IHF1ZXJpZWQsIGVpdGhlciBiZWNhdXNlCisgICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCB0aGUgdmFsdWUgZ2l2ZW4gaW4gZmFsbGJhY2sgcGFyYW1ldGVyCisgICAgaXMgdXNlZC4gRmFsbGJhY2sgZGVmYXVsdHMgdG8gKDgwLCAyNCkgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKyAgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgYSBuYW1lZCB0dXBsZSBvZiB0eXBlIG9zLnRlcm1pbmFsX3NpemUuCisgICAgIiIiCisgICAgIyBjb2x1bW5zLCBsaW5lcyBhcmUgdGhlIHdvcmtpbmcgdmFsdWVzCisgICAgdHJ5OgorICAgICAgICBjb2x1bW5zID0gaW50KG9zLmVudmlyb25bJ0NPTFVNTlMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgY29sdW1ucyA9IDAKKworICAgIHRyeToKKyAgICAgICAgbGluZXMgPSBpbnQob3MuZW52aXJvblsnTElORVMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgbGluZXMgPSAwCisKKyAgICAjIG9ubHkgcXVlcnkgaWYgbmVjZXNzYXJ5CisgICAgaWYgY29sdW1ucyA8PSAwIG9yIGxpbmVzIDw9IDA6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IChOYW1lRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgc2l6ZSA9IG9zLnRlcm1pbmFsX3NpemUoZmFsbGJhY2spCisgICAgICAgIGlmIGNvbHVtbnMgPD0gMDoKKyAgICAgICAgICAgIGNvbHVtbnMgPSBzaXplLmNvbHVtbnMKKyAgICAgICAgaWYgbGluZXMgPD0gMDoKKyAgICAgICAgICAgIGxpbmVzID0gc2l6ZS5saW5lcworCisgICAgcmV0dXJuIG9zLnRlcm1pbmFsX3NpemUoKGNvbHVtbnMsIGxpbmVzKSkKKworZGVmIHdoaWNoKGNtZCwgbW9kZT1vcy5GX09LIHwgb3MuWF9PSywgcGF0aD1Ob25lKToKKyAgICAiIiJHaXZlbiBhIGNvbW1hbmQsIG1vZGUsIGFuZCBhIFBBVEggc3RyaW5nLCByZXR1cm4gdGhlIHBhdGggd2hpY2gKKyAgICBjb25mb3JtcyB0byB0aGUgZ2l2ZW4gbW9kZSBvbiB0aGUgUEFUSCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBzdWNoCisgICAgZmlsZS4KKworICAgIGBtb2RlYCBkZWZhdWx0cyB0byBvcy5GX09LIHwgb3MuWF9PSy4gYHBhdGhgIGRlZmF1bHRzIHRvIHRoZSByZXN1bHQKKyAgICBvZiBvcy5lbnZpcm9uLmdldCgiUEFUSCIpLCBvciBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgY3VzdG9tIHNlYXJjaAorICAgIHBhdGguCisKKyAgICAiIiIKKyAgICAjIENoZWNrIHRoYXQgYSBnaXZlbiBmaWxlIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBjb3JyZWN0IG1vZGUuCisgICAgIyBBZGRpdGlvbmFsbHkgY2hlY2sgdGhhdCBgZmlsZWAgaXMgbm90IGEgZGlyZWN0b3J5LCBhcyBvbiBXaW5kb3dzCisgICAgIyBkaXJlY3RvcmllcyBwYXNzIHRoZSBvcy5hY2Nlc3MgY2hlY2suCisgICAgZGVmIF9hY2Nlc3NfY2hlY2soZm4sIG1vZGUpOgorICAgICAgICByZXR1cm4gKG9zLnBhdGguZXhpc3RzKGZuKSBhbmQgb3MuYWNjZXNzKGZuLCBtb2RlKQorICAgICAgICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5pc2RpcihmbikpCisKKyAgICAjIFNob3J0IGNpcmN1aXQuIElmIHdlJ3JlIGdpdmVuIGEgZnVsbCBwYXRoIHdoaWNoIG1hdGNoZXMgdGhlIG1vZGUKKyAgICAjIGFuZCBpdCBleGlzdHMsIHdlJ3JlIGRvbmUgaGVyZS4KKyAgICBpZiBfYWNjZXNzX2NoZWNrKGNtZCwgbW9kZSk6CisgICAgICAgIHJldHVybiBjbWQKKworICAgIHBhdGggPSAocGF0aCBvciBvcy5lbnZpcm9uLmdldCgiUEFUSCIsIG9zLmRlZnBhdGgpKS5zcGxpdChvcy5wYXRoc2VwKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICMgVGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRha2VzIHByZWNlZGVuY2Ugb24gV2luZG93cy4KKyAgICAgICAgaWYgbm90IG9zLmN1cmRpciBpbiBwYXRoOgorICAgICAgICAgICAgcGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorCisgICAgICAgICMgUEFUSEVYVCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgb24gV2luZG93cy4KKyAgICAgICAgcGF0aGV4dCA9IG9zLmVudmlyb24uZ2V0KCJQQVRIRVhUIiwgIiIpLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgICMgU2VlIGlmIHRoZSBnaXZlbiBmaWxlIG1hdGNoZXMgYW55IG9mIHRoZSBleHBlY3RlZCBwYXRoIGV4dGVuc2lvbnMuCisgICAgICAgICMgVGhpcyB3aWxsIGFsbG93IHVzIHRvIHNob3J0IGNpcmN1aXQgd2hlbiBnaXZlbiAicHl0aG9uLmV4ZSIuCisgICAgICAgIG1hdGNoZXMgPSBbY21kIGZvciBleHQgaW4gcGF0aGV4dCBpZiBjbWQubG93ZXIoKS5lbmRzd2l0aChleHQubG93ZXIoKSldCisgICAgICAgICMgSWYgaXQgZG9lcyBtYXRjaCwgb25seSB0ZXN0IHRoYXQgb25lLCBvdGhlcndpc2Ugd2UgaGF2ZSB0byB0cnkKKyAgICAgICAgIyBvdGhlcnMuCisgICAgICAgIGZpbGVzID0gW2NtZF0gaWYgbWF0Y2hlcyBlbHNlIFtjbWQgKyBleHQubG93ZXIoKSBmb3IgZXh0IGluIHBhdGhleHRdCisgICAgZWxzZToKKyAgICAgICAgIyBPbiBvdGhlciBwbGF0Zm9ybXMgeW91IGRvbid0IGhhdmUgdGhpbmdzIGxpa2UgUEFUSEVYVCB0byB0ZWxsIHlvdQorICAgICAgICAjIHdoYXQgZmlsZSBzdWZmaXhlcyBhcmUgZXhlY3V0YWJsZSwgc28ganVzdCBwYXNzIG9uIGNtZCBhcy1pcy4KKyAgICAgICAgZmlsZXMgPSBbY21kXQorCisgICAgc2VlbiA9IHNldCgpCisgICAgZm9yIGRpciBpbiBwYXRoOgorICAgICAgICBkaXIgPSBvcy5wYXRoLm5vcm1jYXNlKGRpcikKKyAgICAgICAgaWYgbm90IGRpciBpbiBzZWVuOgorICAgICAgICAgICAgc2Vlbi5hZGQoZGlyKQorICAgICAgICAgICAgZm9yIHRoZWZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIHRoZWZpbGUpCisgICAgICAgICAgICAgICAgaWYgX2FjY2Vzc19jaGVjayhuYW1lLCBtb2RlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQppbmRleCBhMmMwYmVjLi5iNzUxMDA2IDEwMDY0NAotLS0gYS9MaWIvc2l0ZS5weQorKysgYi9MaWIvc2l0ZS5weQpAQCAtMTMsNiArMTMsMTkgQEAKIHJlc3VsdGluZyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlIGFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQKIGFsc28gaW5zcGVjdGVkIGZvciBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAKK0lmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCitzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK3N5cy5iYXNlX2V4ZWNfcHJlZml4IHdpbGwgYWx3YXlzIGJlIHRoZSAicmVhbCIgcHJlZml4ZXMgb2YgdGhlIFB5dGhvbgoraW5zdGFsbGF0aW9uKS4gSWYgInB5dmVudi5jZmciIChhIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZpbGUpIGNvbnRhaW5zCit0aGUga2V5ICJpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzIiBzZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiAiZmFsc2UiCisoY2FzZS1pbnNlbnNpdGl2ZSksIHRoZSBzeXN0ZW0tbGV2ZWwgcHJlZml4ZXMgd2lsbCBzdGlsbCBhbHNvIGJlCitzZWFyY2hlZCBmb3Igc2l0ZS1wYWNrYWdlczsgb3RoZXJ3aXNlIHRoZXkgd29uJ3QuCisKK0FsbCBvZiB0aGUgcmVzdWx0aW5nIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIGlmIHRoZXkgZXhpc3QsIGFyZQorYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZCBhbHNvIGluc3BlY3RlZCBmb3IgcGF0aCBjb25maWd1cmF0aW9uCitmaWxlcy4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0KIDxwYWNrYWdlPi5wdGg7IGl0cyBjb250ZW50cyBhcmUgYWRkaXRpb25hbCBkaXJlY3RvcmllcyAob25lIHBlciBsaW5lKQogdG8gYmUgYWRkZWQgdG8gc3lzLnBhdGguICBOb24tZXhpc3RpbmcgZGlyZWN0b3JpZXMgKG9yCkBAIC01NCw4ICs2Nyw4IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCB0cmFjZWJhY2sKIAogIyBQcmVmaXhlcyBmb3Igc2l0ZS1wYWNrYWdlczsgYWRkIGFkZGl0aW9uYWwgcHJlZml4ZXMgbGlrZSAvdXNyL2xvY2FsIGhlcmUKIFBSRUZJWEVTID0gW3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeF0KQEAgLTgyLDcgKzk1LDggQEAKIGRlZiBhYnNfcGF0aHMoKToKICAgICAiIiJTZXQgYWxsIG1vZHVsZSBfX2ZpbGVfXyBhbmQgX19jYWNoZWRfXyBhdHRyaWJ1dGVzIHRvIGFuIGFic29sdXRlIHBhdGgiIiIKICAgICBmb3IgbSBpbiBzZXQoc3lzLm1vZHVsZXMudmFsdWVzKCkpOgotICAgICAgICBpZiBoYXNhdHRyKG0sICdfX2xvYWRlcl9fJyk6CisgICAgICAgIGlmIChnZXRhdHRyKGdldGF0dHIobSwgJ19fbG9hZGVyX18nLCBOb25lKSwgJ19fbW9kdWxlX18nLCBOb25lKSAhPQorICAgICAgICAgICAgICAgICdfZnJvemVuX2ltcG9ydGxpYicpOgogICAgICAgICAgICAgY29udGludWUgICAjIGRvbid0IG1lc3Mgd2l0aCBhIFBFUCAzMDItc3VwcGxpZWQgX19maWxlX18KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtLl9fZmlsZV9fKQpAQCAtMTM4LDcgKzE1Miw3IEBACiAgICAgICAgIHJlc2V0ID0gMAogICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHNpdGVkaXIsIG5hbWUpCiAgICAgdHJ5OgotICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInJVIikKKyAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcmV0dXJuCiAgICAgd2l0aCBmOgpAQCAtMTU0LDkgKzE2OCwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJjYXNlIGluIGtub3duX3BhdGhzIGFuZCBvcy5wYXRoLmV4aXN0cyhkaXIpOgogICAgICAgICAgICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQoZGlyKQogICAgICAgICAgICAgICAgICAgICBrbm93bl9wYXRocy5hZGQoZGlyY2FzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwcmludCgiRXJyb3IgcHJvY2Vzc2luZyBsaW5lIHs6ZH0gb2Yge306XG4iLmZvcm1hdChuKzEsIGZ1bGxuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICAgICAgIGZvciByZWNvcmQgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKToKICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVjb3JkLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCcgICcrbGluZSwgZmlsZT1zeXMuc3RkZXJyKQpAQCAtMTc4LDYgKzE5Myw3IEBACiAgICAgc2l0ZWRpciwgc2l0ZWRpcmNhc2UgPSBtYWtlcGF0aChzaXRlZGlyKQogICAgIGlmIG5vdCBzaXRlZGlyY2FzZSBpbiBrbm93bl9wYXRoczoKICAgICAgICAgc3lzLnBhdGguYXBwZW5kKHNpdGVkaXIpICAgICAgICAjIEFkZCBwYXRoIGNvbXBvbmVudAorICAgICAgICBrbm93bl9wYXRocy5hZGQoc2l0ZWRpcmNhc2UpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc2l0ZWRpcikKICAgICBleGNlcHQgb3MuZXJyb3I6CkBAIC0yNDEsNyArMjU3LDYgQEAKICAgICAgICAgcmV0dXJuIFVTRVJfU0lURQogCiAgICAgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wYXRoCi0gICAgaW1wb3J0IG9zCiAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgpAQCAtMjY2LDE4ICsyODEsMjEgQEAKICAgICAgICAgYWRkc2l0ZWRpcih1c2VyX3NpdGUsIGtub3duX3BhdGhzKQogICAgIHJldHVybiBrbm93bl9wYXRocwogCi1kZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CitkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICIiIlJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yaWVzCiAgICAgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikuCiAKLSAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCwgdGhpcyBmdW5jdGlvbgotICAgIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbQotICAgIGVudmlyb25tZW50LCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGZ1bGwgcGF0aHMuCisgICAgRm9yIGVhY2ggZGlyZWN0b3J5IHByZXNlbnQgaW4gYGBwcmVmaXhlc2BgIChvciB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCksCisgICAgdGhpcyBmdW5jdGlvbiB3aWxsIGZpbmQgaXRzIGBzaXRlLXBhY2thZ2VzYCBzdWJkaXJlY3RvcnkgZGVwZW5kaW5nIG9uIHRoZQorICAgIHN5c3RlbSBlbnZpcm9ubWVudCwgYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBmdWxsIHBhdGhzLgogICAgICIiIgogICAgIHNpdGVwYWNrYWdlcyA9IFtdCiAgICAgc2VlbiA9IHNldCgpCiAKLSAgICBmb3IgcHJlZml4IGluIFBSRUZJWEVTOgorICAgIGlmIHByZWZpeGVzIGlzIE5vbmU6CisgICAgICAgIHByZWZpeGVzID0gUFJFRklYRVMKKworICAgIGZvciBwcmVmaXggaW4gcHJlZml4ZXM6CiAgICAgICAgIGlmIG5vdCBwcmVmaXggb3IgcHJlZml4IGluIHNlZW46CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzZWVuLmFkZChwcmVmaXgpCkBAIC0zMDMsOSArMzIxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sICJzaXRlLXBhY2thZ2VzIikpCiAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogCi1kZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKK2RlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogICAgICIiIkFkZCBzaXRlLXBhY2thZ2VzIChhbmQgcG9zc2libHkgc2l0ZS1weXRob24pIHRvIHN5cy5wYXRoIiIiCi0gICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKCk6CisgICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzKToKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzaXRlZGlyKToKICAgICAgICAgICAgIGFkZHNpdGVkaXIoc2l0ZWRpciwga25vd25fcGF0aHMpCiAKQEAgLTM4NSw3ICs0MDMsNyBAQAogICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX19maWxlczoKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAiclUiKQorICAgICAgICAgICAgICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyIikKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQogICAgICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC00NzUsNiArNDkzLDU5IEBACiAgICAgICAgICAgICAgICAgZW5jb2RpbmdzLmFsaWFzZXMuYWxpYXNlc1tlbmNdID0gJ21iY3MnCiAKIAorQ09ORklHX0xJTkUgPSByZS5jb21waWxlKHInXig/UDxrZXk+KFx3fFstX10pKylccyo9XHMqKD9QPHZhbHVlPi4qKVxzKiQnKQorCitkZWYgdmVudihrbm93bl9wYXRocyk6CisgICAgZ2xvYmFsIFBSRUZJWEVTLCBFTkFCTEVfVVNFUl9TSVRFCisKKyAgICBlbnYgPSBvcy5lbnZpcm9uCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gZW52OgorICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgZWxzZToKKyAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgZXhlX2RpciwgXyA9IG9zLnBhdGguc3BsaXQob3MucGF0aC5hYnNwYXRoKGV4ZWN1dGFibGUpKQorICAgIHNpdGVfcHJlZml4ID0gb3MucGF0aC5kaXJuYW1lKGV4ZV9kaXIpCisgICAgc3lzLl9ob21lID0gTm9uZQorICAgIGNvbmZfYmFzZW5hbWUgPSAncHl2ZW52LmNmZycKKyAgICBjYW5kaWRhdGVfY29uZnMgPSBbCisgICAgICAgIGNvbmZmaWxlIGZvciBjb25mZmlsZSBpbiAoCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZXhlX2RpciwgY29uZl9iYXNlbmFtZSksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2l0ZV9wcmVmaXgsIGNvbmZfYmFzZW5hbWUpCisgICAgICAgICAgICApCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNvbmZmaWxlKQorICAgICAgICBdCisKKyAgICBpZiBjYW5kaWRhdGVfY29uZnM6CisgICAgICAgIHZpcnR1YWxfY29uZiA9IGNhbmRpZGF0ZV9jb25mc1swXQorICAgICAgICBzeXN0ZW1fc2l0ZSA9ICJ0cnVlIgorICAgICAgICB3aXRoIG9wZW4odmlydHVhbF9jb25mKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgbSA9IENPTkZJR19MSU5FLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZCA9IG0uZ3JvdXBkaWN0KCkKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGRbJ2tleSddLmxvd2VyKCksIGRbJ3ZhbHVlJ10KKyAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQorCisgICAgICAgIHN5cy5wcmVmaXggPSBzeXMuZXhlY19wcmVmaXggPSBzaXRlX3ByZWZpeAorCisgICAgICAgICMgRG9pbmcgdGhpcyBoZXJlIGVuc3VyZXMgdmVudiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdXNlci1zaXRlCisgICAgICAgIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgW3N5cy5wcmVmaXhdKQorCisgICAgICAgICMgYWRkc2l0ZXBhY2thZ2VzIHdpbGwgcHJvY2VzcyBzaXRlX3ByZWZpeCBhZ2FpbiBpZiBpdHMgaW4gUFJFRklYRVMsCisgICAgICAgICMgYnV0IHRoYXQncyBvazsga25vd25fcGF0aHMgd2lsbCBwcmV2ZW50IGFueXRoaW5nIGJlaW5nIGFkZGVkIHR3aWNlCisgICAgICAgIGlmIHN5c3RlbV9zaXRlID09ICJ0cnVlIjoKKyAgICAgICAgICAgIFBSRUZJWEVTLmluc2VydCgwLCBzeXMucHJlZml4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgUFJFRklYRVMgPSBbc3lzLnByZWZpeF0KKyAgICAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBGYWxzZQorCisgICAgcmV0dXJuIGtub3duX3BhdGhzCisKKwogZGVmIGV4ZWNzaXRlY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6CkBAIC01MDgsMTAgKzU3OSwxNiBAQAogCiAKIGRlZiBtYWluKCk6CisgICAgIiIiQWRkIHN0YW5kYXJkIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgICB1bmxlc3MgdGhlIHB5dGhvbiBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZSAtUyBmbGFnLgorICAgICIiIgogICAgIGdsb2JhbCBFTkFCTEVfVVNFUl9TSVRFCiAKICAgICBhYnNfcGF0aHMoKQogICAgIGtub3duX3BhdGhzID0gcmVtb3ZlZHVwcGF0aHMoKQorICAgIGtub3duX3BhdGhzID0gdmVudihrbm93bl9wYXRocykKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFIGlzIE5vbmU6CiAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBjaGVja19lbmFibGV1c2Vyc2l0ZSgpCiAgICAga25vd25fcGF0aHMgPSBhZGR1c2Vyc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKQpAQCAtNTI2LDcgKzYwMywxMCBAQAogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKIAotbWFpbigpCisjIFByZXZlbnQgZWRpdGlvbiBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAorIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgoraWYgbm90IHN5cy5mbGFncy5ub19zaXRlOgorICAgIG1haW4oKQogCiBkZWYgX3NjcmlwdCgpOgogICAgIGhlbHAgPSAiIiJcCmRpZmYgLS1naXQgYS9MaWIvc210cGQucHkgYi9MaWIvc210cGQucHkKaW5kZXggOGNkNDA1Yy4uNzc4ZDZkNiAxMDA3NTUKLS0tIGEvTGliL3NtdHBkLnB5CisrKyBiL0xpYi9zbXRwZC5weQpAQCAtMSw1ICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCi0iIiJBbiBSRkMgMjgyMSBzbXRwIHByb3h5LgorIiIiQW4gUkZDIDUzMjEgc210cCBwcm94eS4KIAogVXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zXSBbbG9jYWxob3N0OmxvY2FscG9ydCBbcmVtb3RlaG9zdDpyZW1vdGVwb3J0XV0KIApAQCAtMjAsNiArMjAsMTEgQEAKICAgICAgICAgVXNlIGBjbGFzc25hbWUnIGFzIHRoZSBjb25jcmV0ZSBTTVRQIHByb3h5IGNsYXNzLiAgVXNlcyBgUHVyZVByb3h5JyBieQogICAgICAgICBkZWZhdWx0LgogCisgICAgLS1zaXplIGxpbWl0CisgICAgLXMgbGltaXQKKyAgICAgICAgUmVzdHJpY3QgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gImxpbWl0IiBudW1iZXIgb2YKKyAgICAgICAgYnl0ZXMgdmlhIHRoZSBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4gIERlZmF1bHRzIHRvIDMzNTU0NDMyIGJ5dGVzLgorCiAgICAgLS1kZWJ1ZwogICAgIC1kCiAgICAgICAgIFR1cm4gb24gZGVidWdnaW5nIHByaW50cy4KQEAgLTM1LDEwICs0MCw5IEBACiBhbmQgaWYgcmVtb3RlcG9ydCBpcyBub3QgZ2l2ZW4sIHRoZW4gMjUgaXMgdXNlZC4KICIiIgogCi0MCiAjIE92ZXJ2aWV3OgogIwotIyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBTTVRQIHByb3RvY29sIGFzIGRlZmluZWQgaW4gUkZDIDgyMS4gIEl0CisjIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBtaW5pbWFsIFNNVFAgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgNTMyMS4gIEl0CiAjIGhhcyBhIGhpZXJhcmNoeSBvZiBjbGFzc2VzIHdoaWNoIGltcGxlbWVudCB0aGUgYmFja2VuZCBmdW5jdGlvbmFsaXR5IGZvciB0aGUKICMgc210cGQuICBBIG51bWJlciBvZiBjbGFzc2VzIGFyZSBwcm92aWRlZDoKICMKQEAgLTY2LDcgKzcwLDcgQEAKICMKICMgLSBzdXBwb3J0IG1haWxib3ggZGVsaXZlcnkKICMgLSBhbGlhcyBmaWxlcwotIyAtIEVTTVRQCisjIC0gSGFuZGxlIG1vcmUgRVNNVFAgZXh0ZW5zaW9ucwogIyAtIGhhbmRsZSBlcnJvciBjb2RlcyBmcm9tIHRoZSBiYWNrZW5kIHNtdHBkCiAKIGltcG9ydCBzeXMKQEAgLTc3LDEyICs4MSwxNCBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFzeW5jb3JlCiBpbXBvcnQgYXN5bmNoYXQKK2ltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgorZnJvbSBlbWFpbC5faGVhZGVyX3ZhbHVlX3BhcnNlciBpbXBvcnQgZ2V0X2FkZHJfc3BlYywgZ2V0X2FuZ2xlX2FkZHIKIAogX19hbGxfXyA9IFsiU01UUFNlcnZlciIsIkRlYnVnZ2luZ1NlcnZlciIsIlB1cmVQcm94eSIsIk1haWxtYW5Qcm94eSJdCiAKIHByb2dyYW0gPSBzeXMuYXJndlswXQotX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjInCitfX3ZlcnNpb25fXyA9ICdQeXRob24gU01UUCBwcm94eSB2ZXJzaW9uIDAuMycKIAogCiBjbGFzcyBEZXZudWxsOgpAQCAtOTQsOSArMTAwLDkgQEAKIE5FV0xJTkUgPSAnXG4nCiBFTVBUWVNUUklORyA9ICcnCiBDT01NQVNQQUNFID0gJywgJworREFUQV9TSVpFX0RFRkFVTFQgPSAzMzU1NDQzMgogCiAKLQwKIGRlZiB1c2FnZShjb2RlLCBtc2c9JycpOgogICAgIHByaW50KF9fZG9jX18gJSBnbG9iYWxzKCksIGZpbGU9c3lzLnN0ZGVycikKICAgICBpZiBtc2c6CkBAIC0xMDQsMTkgKzExMCwyMyBAQAogICAgIHN5cy5leGl0KGNvZGUpCiAKIAotDAogY2xhc3MgU01UUENoYW5uZWwoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CiAgICAgQ09NTUFORCA9IDAKICAgICBEQVRBID0gMQogCi0gICAgZGF0YV9zaXplX2xpbWl0ID0gMzM1NTQ0MzIKICAgICBjb21tYW5kX3NpemVfbGltaXQgPSA1MTIKKyAgICBjb21tYW5kX3NpemVfbGltaXRzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhIHg9Y29tbWFuZF9zaXplX2xpbWl0OiB4KQorICAgIGNvbW1hbmRfc2l6ZV9saW1pdHMudXBkYXRlKHsKKyAgICAgICAgJ01BSUwnOiBjb21tYW5kX3NpemVfbGltaXQgKyAyNiwKKyAgICAgICAgfSkKKyAgICBtYXhfY29tbWFuZF9zaXplX2xpbWl0ID0gbWF4KGNvbW1hbmRfc2l6ZV9saW1pdHMudmFsdWVzKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCisgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQogICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gJycKQEAgLTEzNywxMjcgKzE0NywxMjggQEAKICAgICAgICAgcHJpbnQoJ1BlZXI6JywgcmVwcihzZWxmLnBlZXIpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBfX3ZlcnNpb25fXykpCiAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKIAogICAgICMgcHJvcGVydGllcyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3NlcnZlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNtdHBfc2VydmVyCiAgICAgQF9fc2VydmVyLnNldHRlcgogICAgIGRlZiBfX3NlcnZlcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19zZXJ2ZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2xpbmUoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2xpbmUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlZF9saW5lcwogICAgIEBfX2xpbmUuc2V0dGVyCiAgICAgZGVmIF9fbGluZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19saW5lIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19zdGF0ZShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fc3RhdGUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc210cF9zdGF0ZScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc210cF9zdGF0ZQogICAgIEBfX3N0YXRlLnNldHRlcgogICAgIGRlZiBfX3N0YXRlKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19ncmVldGluZyhzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZ3JlZXRpbmcgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc2Vlbl9ncmVldGluZwogICAgIEBfX2dyZWV0aW5nLnNldHRlcgogICAgIGRlZiBfX2dyZWV0aW5nKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19tYWlsZnJvbShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fbWFpbGZyb20gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5tYWlsZnJvbQogICAgIEBfX21haWxmcm9tLnNldHRlcgogICAgIGRlZiBfX21haWxmcm9tKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX21haWxmcm9tIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdtYWlsZnJvbScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdtYWlsZnJvbScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19yY3B0dG9zKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19yY3B0dG9zIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdyY3B0dG9zJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JjcHR0b3MnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnJjcHR0b3MKICAgICBAX19yY3B0dG9zLnNldHRlcgogICAgIGRlZiBfX3JjcHR0b3Moc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fcmNwdHRvcyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncmNwdHRvcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyY3B0dG9zJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnJjcHR0b3MgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fZGF0YShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZGF0YSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlZF9kYXRhCiAgICAgQF9fZGF0YS5zZXR0ZXIKICAgICBkZWYgX19kYXRhKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2RhdGEgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2ZxZG4oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2ZxZG4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2ZxZG4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnZnFkbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuZnFkbgogICAgIEBfX2ZxZG4uc2V0dGVyCiAgICAgZGVmIF9fZnFkbihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19mcWRuIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdmcWRuJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2ZxZG4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuZnFkbiA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19wZWVyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19wZWVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdwZWVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3BlZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnBlZXIKICAgICBAX19wZWVyLnNldHRlcgogICAgIGRlZiBfX3BlZXIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fcGVlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncGVlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdwZWVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnBlZXIgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fY29ubihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fY29ubiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnY29ubicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdjb25uJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5jb25uCiAgICAgQF9fY29ubi5zZXR0ZXIKICAgICBkZWYgX19jb25uKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2Nvbm4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ2Nvbm4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnY29ubicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5jb25uID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2FkZHIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2FkZHIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2FkZHInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnYWRkcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuYWRkcgogICAgIEBfX2FkZHIuc2V0dGVyCiAgICAgZGVmIF9fYWRkcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19hZGRyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuYWRkciA9IHZhbHVlCiAKICAgICAjIE92ZXJyaWRlcyBiYXNlIGNsYXNzIGZvciBjb252ZW5pZW5jZQpAQCAtMjY4LDE0ICsyNzksMTQgQEAKICAgICBkZWYgY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBsaW1pdCA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKLSAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5jb21tYW5kX3NpemVfbGltaXQKKyAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5tYXhfY29tbWFuZF9zaXplX2xpbWl0CiAgICAgICAgIGVsaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuREFUQToKICAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5kYXRhX3NpemVfbGltaXQKICAgICAgICAgaWYgbGltaXQgYW5kIHNlbGYubnVtX2J5dGVzID4gbGltaXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxpZiBsaW1pdDoKICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzICs9IGxlbihkYXRhKQotICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgInV0ZjgiKSkKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICJ1dGYtOCIpKQogCiAgICAgIyBJbXBsZW1lbnRhdGlvbiBvZiBiYXNlIGNsYXNzIGFic3RyYWN0IG1ldGhvZAogICAgIGRlZiBmb3VuZF90ZXJtaW5hdG9yKHNlbGYpOgpAQCAtMjgzLDExICsyOTQsNyBAQAogICAgICAgICBwcmludCgnRGF0YTonLCByZXByKGxpbmUpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKLSAgICAgICAgICAgIGlmIHNlbGYubnVtX2J5dGVzID4gc2VsZi5jb21tYW5kX3NpemVfbGltaXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmcnKQotICAgICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCisgICAgICAgICAgICBzeiwgc2VsZi5udW1fYnl0ZXMgPSBzZWxmLm51bV9ieXRlcywgMAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGJhZCBzeW50YXgnKQogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMjk5LDkgKzMwNiwxNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb21tYW5kID0gbGluZVs6aV0udXBwZXIoKQogICAgICAgICAgICAgICAgIGFyZyA9IGxpbmVbaSsxOl0uc3RyaXAoKQorICAgICAgICAgICAgbWF4X3N6ID0gKHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1tjb21tYW5kXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwIGVsc2Ugc2VsZi5jb21tYW5kX3NpemVfbGltaXQpCisgICAgICAgICAgICBpZiBzeiA+IG1heF9zejoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZycpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsICdzbXRwXycgKyBjb21tYW5kLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IG1ldGhvZDoKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMiBFcnJvcjogY29tbWFuZCAiJXMiIG5vdCBpbXBsZW1lbnRlZCcgJSBjb21tYW5kKQorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBjb21tYW5kICIlcyIgbm90IHJlY29nbml6ZWQnICUgY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1ldGhvZChhcmcpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMxMCwxMiArMzIyLDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc0NTEgSW50ZXJuYWwgY29uZnVzaW9uJykKICAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIHNlbGYubnVtX2J5dGVzID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdCBhbmQgc2VsZi5udW1fYnl0ZXMgPiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhJykKICAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgUmVtb3ZlIGV4dHJhbmVvdXMgY2FycmlhZ2UgcmV0dXJucyBhbmQgZGUtdHJhbnNwYXJlbmN5IGFjY29yZGluZwotICAgICAgICAgICAgIyB0byBSRkMgODIxLCBTZWN0aW9uIDQuNS4yLgorICAgICAgICAgICAgIyB0byBSRkMgNTMyMSwgU2VjdGlvbiA0LjUuMi4KICAgICAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICAgICAgZm9yIHRleHQgaW4gbGluZS5zcGxpdCgnXHJcbicpOgogICAgICAgICAgICAgICAgIGlmIHRleHQgYW5kIHRleHRbMF0gPT0gJy4nOgpAQCAtMzMzLDcgKzM0NSw3IEBACiAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN0YXR1cykKIApAQCAtMzQ2LDU4ICszNTgsMTg4IEBACiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwICVzJyAlIHNlbGYuZnFkbikKIAorICAgIGRlZiBzbXRwX0VITE8oc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZScpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKKyAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKKwogICAgIGRlZiBzbXRwX05PT1Aoc2VsZiwgYXJnKToKICAgICAgICAgaWYgYXJnOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBOT09QJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1FVSVQoc2VsZiwgYXJnKToKICAgICAgICAgIyBhcmdzIGlzIGlnbm9yZWQKICAgICAgICAgc2VsZi5wdXNoKCcyMjEgQnllJykKICAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogCi0gICAgIyBmYWN0b3JlZAotICAgIGRlZiBfX2dldGFkZHIoc2VsZiwga2V5d29yZCwgYXJnKToKLSAgICAgICAgYWRkcmVzcyA9IE5vbmUKKyAgICBkZWYgX3N0cmlwX2NvbW1hbmRfa2V5d29yZChzZWxmLCBrZXl3b3JkLCBhcmcpOgogICAgICAgICBrZXlsZW4gPSBsZW4oa2V5d29yZCkKICAgICAgICAgaWYgYXJnWzprZXlsZW5dLnVwcGVyKCkgPT0ga2V5d29yZDoKLSAgICAgICAgICAgIGFkZHJlc3MgPSBhcmdba2V5bGVuOl0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IGFkZHJlc3M6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBhZGRyZXNzWzBdID09ICc8JyBhbmQgYWRkcmVzc1stMV0gPT0gJz4nIGFuZCBhZGRyZXNzICE9ICc8Pic6Ci0gICAgICAgICAgICAgICAgIyBBZGRyZXNzZXMgY2FuIGJlIGluIHRoZSBmb3JtIDxwZXJzb25AZG9tLmNvbT4gYnV0IHdhdGNoIG91dAotICAgICAgICAgICAgICAgICMgZm9yIG51bGwgYWRkcmVzcywgZS5nLiA8PgotICAgICAgICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzWzE6LTFdCi0gICAgICAgIHJldHVybiBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4gYXJnW2tleWxlbjpdLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBkZWYgX2dldGFkZHIoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIHJldHVybiAnJywgJycKKyAgICAgICAgaWYgYXJnLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJzwnKToKKyAgICAgICAgICAgIGFkZHJlc3MsIHJlc3QgPSBnZXRfYW5nbGVfYWRkcihhcmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRyZXNzLCByZXN0ID0gZ2V0X2FkZHJfc3BlYyhhcmcpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3MsIHJlc3QKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MuYWRkcl9zcGVjLCByZXN0CisKKyAgICBkZWYgX2dldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgorICAgICAgICAjIFJldHVybiBhbnkgcGFyYW1ldGVycyB0aGF0IGFwcGVhciB0byBiZSBzeW50YWN0aWNhbGx5IHZhbGlkIGFjY29yZGluZworICAgICAgICAjIHRvIFJGQyAxODY5LCBpZ25vcmUgYWxsIG90aGVycy4gIChQb3N0ZWwgcnVsZTogYWNjZXB0IHdoYXQgd2UgY2FuLikKKyAgICAgICAgcGFyYW1zID0gW3BhcmFtLnNwbGl0KCc9JywgMSkgZm9yIHBhcmFtIGluIHBhcmFtcy5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICc9JyBpbiBwYXJhbV0KKyAgICAgICAgcmV0dXJuIHtrOiB2IGZvciBrLCB2IGluIHBhcmFtcyBpZiBrLmlzYWxudW0oKX0KKworICAgIGRlZiBzbXRwX0hFTFAoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgYXJnOgorICAgICAgICAgICAgZXh0ZW5kZWQgPSAnIFtTUCA8bWFpbCBwYXJhbWV0ZXJzXScKKyAgICAgICAgICAgIGxjX2FyZyA9IGFyZy51cHBlcigpCisgICAgICAgICAgICBpZiBsY19hcmcgPT0gJ0VITE8nOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogRUhMTyBob3N0bmFtZScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnSEVMTyc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBIRUxPIGhvc3RuYW1lJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdNQUlMJzoKKyAgICAgICAgICAgICAgICBtc2cgPSAnMjUwIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCisgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2gobXNnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1JDUFQnOgorICAgICAgICAgICAgICAgIG1zZyA9ICcyNTAgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nCisgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2gobXNnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ0RBVEEnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogREFUQScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnUlNFVCc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBSU0VUJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdOT09QJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IE5PT1AnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1FVSVQnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUVVJVCcpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnVlJGWSc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBWUkZZIDxhZGRyZXNzPicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRlknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUIERBVEEgJworICAgICAgICAgICAgICAgICAgICAgICdSU0VUIE5PT1AgUVVJVCBWUkZZJykKKworICAgIGRlZiBzbXRwX1ZSRlkoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgYXJnOgorICAgICAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCisgICAgICAgICAgICBpZiBhZGRyZXNzOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUyIENhbm5vdCBWUkZZIHVzZXIsIGJ1dCB3aWxsIGFjY2VwdCBtZXNzYWdlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDIgQ291bGQgbm90IFZSRlkgJXMnICUgYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBWUkZZIDxhZGRyZXNzPicpCiAKICAgICBkZWYgc210cF9NQUlMKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJz09PT4gTUFJTCcsIGFyZywgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgYWRkcmVzcyA9IHNlbGYuX19nZXRhZGRyKCdGUk9NOicsIGFyZykgaWYgYXJnIGVsc2UgTm9uZQorICAgICAgICBzeW50YXhlcnIgPSAnNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCisgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgIHN5bnRheGVyciArPSAnIFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl0nCisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmcgPSBzZWxmLl9zdHJpcF9jb21tYW5kX2tleXdvcmQoJ0ZST006JywgYXJnKQorICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKICAgICAgICAgaWYgbm90IGFkZHJlc3M6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IE1BSUwgRlJPTTo8YWRkcmVzcz4nKQorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5leHRlbmRlZF9zbXRwIGFuZCBwYXJhbXM6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhwYXJhbXMudXBwZXIoKSkKKyAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNpemUgPSBwYXJhbXMucG9wKCdTSVpFJywgTm9uZSkKKyAgICAgICAgaWYgc2l6ZToKKyAgICAgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdCBhbmQgaW50KHNpemUpID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IGFkZHJlc3MKICAgICAgICAgcHJpbnQoJ3NlbmRlcjonLCBzZWxmLm1haWxmcm9tLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1JDUFQoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBwcmludCgnPT09PiBSQ1BUJywgYXJnLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBpZiBub3Qgc2VsZi5tYWlsZnJvbToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZWVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgYWRkcmVzcyA9IHNlbGYuX19nZXRhZGRyKCdUTzonLCBhcmcpIGlmIGFyZyBlbHNlIE5vbmUKKyAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicKKyAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgc3ludGF4ZXJyICs9ICcgW1NQIDxtYWlsLXBhcmFtZXRlcnM+XScKKyAgICAgICAgaWYgYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGFyZyA9IHNlbGYuX3N0cmlwX2NvbW1hbmRfa2V5d29yZCgnVE86JywgYXJnKQorICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHBhcmFtczoKKyAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgcGFyYW1zIGFuZCBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGFkZHJlc3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5yY3B0dG9zLmFwcGVuZChhZGRyZXNzKQogICAgICAgICBwcmludCgncmVjaXBzOicsIHNlbGYucmNwdHRvcywgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9SU0VUKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKQEAgLTQwOCw5ICs1NTAsMTIgQEAKICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECi0gICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfREFUQShzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBzZWxmLnJjcHR0b3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVlZCBSQ1BUIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCkBAIC00MjEsMTUgKzU2NiwyMCBAQAogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbi5cclxuJykKICAgICAgICAgc2VsZi5wdXNoKCczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPicpCiAKKyAgICAjIENvbW1hbmRzIHRoYXQgaGF2ZSBub3QgYmVlbiBpbXBsZW1lbnRlZAorICAgIGRlZiBzbXRwX0VYUE4oc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCc1MDIgRVhQTiBub3QgaW1wbGVtZW50ZWQnKQogCi0MCisKIGNsYXNzIFNNVFBTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAgICAgIyBTTVRQQ2hhbm5lbCBjbGFzcyB0byB1c2UgZm9yIG1hbmFnaW5nIGNsaWVudCBjb25uZWN0aW9ucwogICAgIGNoYW5uZWxfY2xhc3MgPSBTTVRQQ2hhbm5lbAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKKyAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxUKToKICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gbG9jYWxhZGRyCiAgICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCisgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCkBAIC00NDcsNyArNTk3LDcgQEAKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CiAgICAgICAgIHByaW50KCdJbmNvbWluZyBjb25uZWN0aW9uIGZyb20gJXMnICUgcmVwcihhZGRyKSwgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0KQogCiAgICAgIyBBUEkgZm9yICJkb2luZyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIG1lc3NhZ2UiCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CkBAIC00NzUsNyArNjI1LDYgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKLQwKIGNsYXNzIERlYnVnZ2luZ1NlcnZlcihTTVRQU2VydmVyKToKICAgICAjIERvIHNvbWV0aGluZyB3aXRoIHRoZSBnYXRoZXJlZCBtZXNzYWdlCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CkBAIC00OTEsNyArNjQwLDYgQEAKICAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0nKQogCiAKLQwKIGNsYXNzIFB1cmVQcm94eShTTVRQU2VydmVyKToKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KCdcbicpCkBAIC01MzIsNyArNjgwLDYgQEAKICAgICAgICAgcmV0dXJuIHJlZnVzZWQKIAogCi0MCiBjbGFzcyBNYWlsbWFuUHJveHkoUHVyZVByb3h5KToKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KQEAgLTYxMSwxOSArNzU4LDE4IEBACiAgICAgICAgICAgICAgICAgbXNnLkVucXVldWUobWxpc3QsIHRvcmVxdWVzdD0xKQogCiAKLQwKIGNsYXNzIE9wdGlvbnM6CiAgICAgc2V0dWlkID0gMQogICAgIGNsYXNzbmFtZSA9ICdQdXJlUHJveHknCisgICAgc2l6ZV9saW1pdCA9IE5vbmUKIAogCi0MCiBkZWYgcGFyc2VhcmdzKCk6CiAgICAgZ2xvYmFsIERFQlVHU1RSRUFNCiAgICAgdHJ5OgogICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdCgKLSAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6ZCcsCi0gICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnZGVidWcnXSkKKyAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6czpkJywKKyAgICAgICAgICAgIFsnY2xhc3M9JywgJ25vc2V0dWlkJywgJ3ZlcnNpb24nLCAnaGVscCcsICdzaXplPScsICdkZWJ1ZyddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgZToKICAgICAgICAgdXNhZ2UoMSwgZSkKIApAQCAtNjQwLDYgKzc4NiwxMyBAQAogICAgICAgICAgICAgb3B0aW9ucy5jbGFzc25hbWUgPSBhcmcKICAgICAgICAgZWxpZiBvcHQgaW4gKCctZCcsICctLWRlYnVnJyk6CiAgICAgICAgICAgICBERUJVR1NUUkVBTSA9IHN5cy5zdGRlcnIKKyAgICAgICAgZWxpZiBvcHQgaW4gKCctcycsICctLXNpemUnKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbnRfc2l6ZSA9IGludChhcmcpCisgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0ID0gaW50X3NpemUKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwcmludCgnSW52YWxpZCBzaXplOiAnICsgYXJnLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgICMgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50cwogICAgIGlmIGxlbihhcmdzKSA8IDE6CkBAIC02NzQsNyArODI3LDYgQEAKICAgICByZXR1cm4gb3B0aW9ucwogCiAKLQwKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgb3B0aW9ucyA9IHBhcnNlYXJncygpCiAgICAgIyBCZWNvbWUgbm9ib2R5CkBAIC02ODcsNyArODM5LDggQEAKICAgICAgICAgaW1wb3J0IF9fbWFpbl9fIGFzIG1vZAogICAgIGNsYXNzXyA9IGdldGF0dHIobW9kLCBjbGFzc25hbWUpCiAgICAgcHJveHkgPSBjbGFzc18oKG9wdGlvbnMubG9jYWxob3N0LCBvcHRpb25zLmxvY2FscG9ydCksCi0gICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSkKKyAgICAgICAgICAgICAgICAgICAob3B0aW9ucy5yZW1vdGVob3N0LCBvcHRpb25zLnJlbW90ZXBvcnQpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCkKICAgICBpZiBvcHRpb25zLnNldHVpZDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHB3ZApkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCBlMDZhOWJlLi5jOTQ5ZDc3IDEwMDY0NAotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtMTMzLDI0ICsxMzMsMTggQEAKICAgICBjb21iaW5hdGlvbiBwcm92aWRlZC4KICAgICAiIiIKIAotZGVmIHF1b3RlYWRkcihhZGRyKToKK2RlZiBxdW90ZWFkZHIoYWRkcnN0cmluZyk6CiAgICAgIiIiUXVvdGUgYSBzdWJzZXQgb2YgdGhlIGVtYWlsIGFkZHJlc3NlcyBkZWZpbmVkIGJ5IFJGQyA4MjEuCiAKICAgICBTaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYW55dGhpbmcgZW1haWwudXRpbHMucGFyc2VhZGRyIGNhbiBoYW5kbGUuCiAgICAgIiIiCi0gICAgbSA9IChOb25lLCBOb25lKQotICAgIHRyeToKLSAgICAgICAgbSA9IGVtYWlsLnV0aWxzLnBhcnNlYWRkcihhZGRyKVsxXQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGlmIG0gPT0gKE5vbmUsIE5vbmUpOiAgIyBJbmRpY2F0ZXMgcGFyc2UgZmFpbHVyZSBvciBBdHRyaWJ1dGVFcnJvcgotICAgICAgICAjIHNvbWV0aGluZyB3ZWlyZCBoZXJlLi4gcHVudCAtZGRtCi0gICAgICAgIHJldHVybiAiPCVzPiIgJSBhZGRyCi0gICAgZWxpZiBtIGlzIE5vbmU6Ci0gICAgICAgICMgdGhlIHNlbmRlciB3YW50cyBhbiBlbXB0eSByZXR1cm4gYWRkcmVzcwotICAgICAgICByZXR1cm4gIjw+IgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiPCVzPiIgJSBtCisgICAgZGlzcGxheW5hbWUsIGFkZHIgPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcnN0cmluZykKKyAgICBpZiAoZGlzcGxheW5hbWUsIGFkZHIpID09ICgnJywgJycpOgorICAgICAgICAjIHBhcnNlYWRkciBjb3VsZG4ndCBwYXJzZSBpdCwgdXNlIGl0IGFzIGlzIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KKyAgICAgICAgaWYgYWRkcnN0cmluZy5zdHJpcCgpLnN0YXJ0c3dpdGgoJzwnKToKKyAgICAgICAgICAgIHJldHVybiBhZGRyc3RyaW5nCisgICAgICAgIHJldHVybiAiPCVzPiIgJSBhZGRyc3RyaW5nCisgICAgcmV0dXJuICI8JXM+IiAlIGFkZHIKIAogZGVmIF9hZGRyX29ubHkoYWRkcnN0cmluZyk6CiAgICAgZGlzcGxheW5hbWUsIGFkZHIgPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcnN0cmluZykKQEAgLTE4MCwyNyArMTc0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfaGF2ZV9zc2wgPSBGYWxzZQogZWxzZToKLSAgICBjbGFzcyBTU0xGYWtlRmlsZToKLSAgICAgICAgIiIiQSBmYWtlIGZpbGUgbGlrZSBvYmplY3QgdGhhdCByZWFsbHkgd3JhcHMgYSBTU0xPYmplY3QuCi0KLSAgICAgICAgSXQgb25seSBzdXBwb3J0cyB3aGF0IGlzIG5lZWRlZCBpbiBzbXRwbGliLgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNzbG9iaik6Ci0gICAgICAgICAgICBzZWxmLnNzbG9iaiA9IHNzbG9iagotCi0gICAgICAgIGRlZiByZWFkbGluZShzZWxmKToKLSAgICAgICAgICAgIHN0ciA9IGIiIgotICAgICAgICAgICAgY2hyID0gTm9uZQotICAgICAgICAgICAgd2hpbGUgY2hyICE9IGIiXG4iOgotICAgICAgICAgICAgICAgIGNociA9IHNlbGYuc3Nsb2JqLnJlYWQoMSkKLSAgICAgICAgICAgICAgICBpZiBub3QgY2hyOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHN0ciArPSBjaHIKLSAgICAgICAgICAgIHJldHVybiBzdHIKLQotICAgICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICAgICBwYXNzCi0KICAgICBfaGF2ZV9zc2wgPSBUcnVlCiAKIApAQCAtMjQyLDcgKzIxNSw4IEBACiAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9QT1JUCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAorICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4KIAogICAgICAgICBJZiBzcGVjaWZpZWQsIGBob3N0JyBpcyB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgdG8gd2hpY2ggdG8KQEAgLTI1MCwxMSArMjI0LDE2IEBACiAgICAgICAgIEJ5IGRlZmF1bHQsIHNtdHBsaWIuU01UUF9QT1JUIGlzIHVzZWQuICBBbiBTTVRQQ29ubmVjdEVycm9yIGlzIHJhaXNlZAogICAgICAgICBpZiB0aGUgc3BlY2lmaWVkIGBob3N0JyBkb2Vzbid0IHJlc3BvbmQgY29ycmVjdGx5LiAgSWYgc3BlY2lmaWVkLAogICAgICAgICBgbG9jYWxfaG9zdG5hbWVgIGlzIHVzZWQgYXMgdGhlIEZRRE4gb2YgdGhlIGxvY2FsIGhvc3QuICBCeSBkZWZhdWx0LAotICAgICAgICB0aGUgbG9jYWwgaG9zdG5hbWUgaXMgZm91bmQgdXNpbmcgc29ja2V0LmdldGZxZG4oKS4KKyAgICAgICAgdGhlIGxvY2FsIGhvc3RuYW1lIGlzIGZvdW5kIHVzaW5nIHNvY2tldC5nZXRmcWRuKCkuIFRoZQorICAgICAgICBgc291cmNlX2FkZHJlc3NgIHBhcmFtZXRlciB0YWtlcyBhIDItdHVwbGUgKGhvc3QsIHBvcnQpIGZvciB0aGUgc29ja2V0CisgICAgICAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZiB0aGUgaG9zdCBpcyAnJworICAgICAgICBhbmQgcG9ydCBpcyAwLCB0aGUgT1MgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lc210cF9mZWF0dXJlcyA9IHt9CisgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworCiAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuY29ubmVjdChob3N0LCBwb3J0KQogICAgICAgICAgICAgaWYgY29kZSAhPSAyMjA6CkBAIC0yNzcsNiArMjU2LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2hvc3RuYW1lID0gJ1slc10nICUgYWRkcgogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGUsIG1lc3NhZ2UgPSBzZWxmLmRvY21kKCJRVUlUIikKKyAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIxOgorICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBSZXNwb25zZUV4Y2VwdGlvbihjb2RlLCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgU01UUFNlcnZlckRpc2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgZGVmIHNldF9kZWJ1Z2xldmVsKHNlbGYsIGRlYnVnbGV2ZWwpOgogICAgICAgICAiIiJTZXQgdGhlIGRlYnVnIG91dHB1dCBsZXZlbC4KIApAQCAtMjkwLDEwICsyODIsMTIgQEAKICAgICAgICAgIyBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgZm9yIFNNVFBfU1NMIHRvIHVzZSB0aGUgU01UUCBjb25uZWN0IGNvZGUKICAgICAgICAgIyBhbmQganVzdCBhbHRlciB0aGUgc29ja2V0IGNvbm5lY3Rpb24gYml0LgogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKLSAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQpCisgICAgICAgICAgICBwcmludCgnY29ubmVjdDogdG8nLCAoaG9zdCwgcG9ydCksIHNlbGYuc291cmNlX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiQ29ubmVjdCB0byBhIGhvc3Qgb24gYSBnaXZlbiBwb3J0LgogCiAgICAgICAgIElmIHRoZSBob3N0bmFtZSBlbmRzIHdpdGggYSBjb2xvbiAoYDonKSBmb2xsb3dlZCBieSBhIG51bWJlciwgYW5kCkBAIC0zMDQsNiArMjk4LDEwIEBACiAgICAgICAgIHNwZWNpZmllZCBkdXJpbmcgaW5zdGFudGlhdGlvbi4KIAogICAgICAgICAiIiIKKworICAgICAgICBpZiBzb3VyY2VfYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworCiAgICAgICAgIGlmIG5vdCBwb3J0IGFuZCAoaG9zdC5maW5kKCc6JykgPT0gaG9zdC5yZmluZCgnOicpKToKICAgICAgICAgICAgIGkgPSBob3N0LnJmaW5kKCc6JykKICAgICAgICAgICAgIGlmIGkgPj0gMDoKQEAgLTMxNyw2ICszMTUsNyBAQAogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fZ2V0X3NvY2tldChob3N0LCBwb3J0LCBzZWxmLnRpbWVvdXQpCisgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgIHByaW50KCJjb25uZWN0OiIsIG1zZywgZmlsZT1zdGRlcnIpCkBAIC0zODgsNyArMzg3LDggQEAKIAogICAgICAgICBlcnJtc2cgPSBiIlxuIi5qb2luKHJlc3ApCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKICAgICAgICAgcmV0dXJuIGVycmNvZGUsIGVycm1zZwogCiAgICAgZGVmIGRvY21kKHNlbGYsIGNtZCwgYXJncz0iIik6CkBAIC02MzIsNyArNjMyLDcgQEAKICAgICAgICAgIyBXZSBjb3VsZCBub3QgbG9naW4gc3VjZXNzZnVsbHkuIFJldHVybiByZXN1bHQgb2YgbGFzdCBhdHRlbXB0LgogICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQogCi0gICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSk6CisgICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUHV0cyB0aGUgY29ubmVjdGlvbiB0byB0aGUgU01UUCBzZXJ2ZXIgaW50byBUTFMgbW9kZS4KIAogICAgICAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBFSExPIG9yIEhFTE8gY29tbWFuZCB0aGlzIHNlc3Npb24sIHRoaXMKQEAgLTY1Niw4ICs2NTYsMTcgQEAKICAgICAgICAgaWYgcmVzcCA9PSAyMjA6CiAgICAgICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTm8gU1NMIHN1cHBvcnQgaW5jbHVkZWQgaW4gdGhpcyBQeXRob24iKQotICAgICAgICAgICAgc2VsZi5zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29jaywga2V5ZmlsZSwgY2VydGZpbGUpCi0gICAgICAgICAgICBzZWxmLmZpbGUgPSBTU0xGYWtlRmlsZShzZWxmLnNvY2spCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrLCBrZXlmaWxlLCBjZXJ0ZmlsZSkKKyAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgICMgUkZDIDMyMDc6CiAgICAgICAgICAgICAjIFRoZSBjbGllbnQgTVVTVCBkaXNjYXJkIGFueSBrbm93bGVkZ2Ugb2J0YWluZWQgZnJvbQogICAgICAgICAgICAgIyB0aGUgc2VydmVyLCBzdWNoIGFzIHRoZSBsaXN0IG9mIFNNVFAgc2VydmljZSBleHRlbnNpb25zLApAQCAtNzg2LDcgKzc5NSw4IEBACiAgICAgICAgICMgVE9ETyBpbXBsZW1lbnQgaGV1cmlzdGljcyB0byBndWVzcyB0aGUgY29ycmVjdCBSZXNlbnQtKiBibG9jayB3aXRoIGFuCiAgICAgICAgICMgb3B0aW9uIGFsbG93aW5nIHRoZSB1c2VyIHRvIGVuYWJsZSB0aGUgaGV1cmlzdGljcy4gIChJdCBzaG91bGQgYmUKICAgICAgICAgIyBwb3NzaWJsZSB0byBndWVzcyBjb3JyZWN0bHkgYWxtb3N0IGFsbCBvZiB0aGUgdGltZS4pCi0gICAgICAgIHJlc2VudCA9bXNnLmdldF9hbGwoJ1Jlc2VudC1EYXRlJykKKworICAgICAgICByZXNlbnQgPSBtc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQogICAgICAgICBpZiByZXNlbnQgaXMgTm9uZToKICAgICAgICAgICAgIGhlYWRlcl9wcmVmaXggPSAnJwogICAgICAgICBlbGlmIGxlbihyZXNlbnQpID09IDE6CkBAIC03OTUsMTMgKzgwNSwxMyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWVzc2FnZSBoYXMgbW9yZSB0aGFuIG9uZSAnUmVzZW50LScgaGVhZGVyIGJsb2NrIikKICAgICAgICAgaWYgZnJvbV9hZGRyIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFByZWZlciB0aGUgc2VuZGVyIGZpZWxkIHBlciBSRkMgMjgyMjozLjYuMi4KLSAgICAgICAgICAgIGZyb21fYWRkciA9IChtc2dbaGVhZGVyX3ByZWZpeCsnU2VuZGVyJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfcHJlZml4KydTZW5kZXInKSBpbiBtc2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbXNnW2hlYWRlcl9wcmVmaXgrJ0Zyb20nXSkKKyAgICAgICAgICAgIGZyb21fYWRkciA9IChtc2dbaGVhZGVyX3ByZWZpeCArICdTZW5kZXInXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9wcmVmaXggKyAnU2VuZGVyJykgaW4gbXNnCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0Zyb20nXSkKICAgICAgICAgaWYgdG9fYWRkcnMgaXMgTm9uZToKLSAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4KydUbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXgrJ0JjYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXgrJ0NjJ10pIGlmIGYgaXMgbm90IE5vbmVdCisgICAgICAgICAgICBhZGRyX2ZpZWxkcyA9IFtmIGZvciBmIGluIChtc2dbaGVhZGVyX3ByZWZpeCArICdUbyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQmNjJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKSBpZiBmIGlzIG5vdCBOb25lXQogICAgICAgICAgICAgdG9fYWRkcnMgPSBbYVsxXSBmb3IgYSBpbiBlbWFpbC51dGlscy5nZXRhZGRyZXNzZXMoYWRkcl9maWVsZHMpXQogICAgICAgICAjIE1ha2UgYSBsb2NhbCBjb3B5IHNvIHdlIGNhbiBkZWxldGUgdGhlIGJjYyBoZWFkZXJzLgogICAgICAgICBtc2dfY29weSA9IGNvcHkuY29weShtc2cpCkBAIC04MzUsMjYgKzg0NSw0MSBAQAogICAgICAgICAiIiIgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSBTTVRQIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wgZW5jcnlwdGVkCiAgICAgICAgIHNvY2tldCAodG8gdXNlIHRoaXMgY2xhc3MgeW91IG5lZWQgYSBzb2NrZXQgbW9kdWxlIHRoYXQgd2FzIGNvbXBpbGVkIHdpdGggU1NMCiAgICAgICAgIHN1cHBvcnQpLiBJZiBob3N0IGlzIG5vdCBzcGVjaWZpZWQsICcnICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4gSWYgcG9ydCBpcwotICAgICAgICBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuIGtleWZpbGUgYW5kIGNlcnRmaWxlCisgICAgICAgIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBTTVRQLW92ZXItU1NMIHBvcnQgKDQ2NSkgaXMgdXNlZC4gVGhlIG9wdGlvbmFsCisgICAgICAgIHNvdXJjZV9hZGRyZXNzIHRha2VzIGEgdHdvLXR1cGxlIChob3N0LHBvcnQpIGZvciBzb2NrZXQgdG8gYmluZCB0by4ga2V5ZmlsZSBhbmQgY2VydGZpbGUKICAgICAgICAgYXJlIGFsc28gb3B0aW9uYWwgLSB0aGV5IGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleSBhbmQKLSAgICAgICAgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgorICAgICAgICBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uIGNvbnRleHQgYWxzbyBvcHRpb25hbCwgY2FuIGNvbnRhaW4KKyAgICAgICAgYSBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzIHNwZWNpZmllZCBib3RoCisgICAgICAgIGtleWZpbGUgYW5kIGNlcnRmaWxlIG11c3QgYmUgTm9uZS4KICAgICAgICAgIiIiCiAKICAgICAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9TU0xfUE9SVAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKLSAgICAgICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWUsIHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CisgICAgICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcykKIAogICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCi0gICAgICAgICAgICBuZXdfc29ja2V0ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCkKLSAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQobmV3X3NvY2tldCwgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQotICAgICAgICAgICAgc2VsZi5maWxlID0gU1NMRmFrZUZpbGUobmV3X3NvY2tldCkKKyAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzKQorICAgICAgICAgICAgaWYgc2VsZi5jb250ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzZWxmLmNvbnRleHQud3JhcF9zb2NrZXQobmV3X3NvY2tldCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNzbC53cmFwX3NvY2tldChuZXdfc29ja2V0LCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAgICAgICAgICAgICByZXR1cm4gbmV3X3NvY2tldAogCiAgICAgX19hbGxfXy5hcHBlbmQoIlNNVFBfU1NMIikKQEAgLTg3OSwxOCArOTA0LDIxIEBACiAKICAgICBlaGxvX21zZyA9ICJsaGxvIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCisgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4iIiIKLSAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZSkKKyAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZT1sb2NhbF9ob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zb3VyY2VfYWRkcmVzcykKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiQ29ubmVjdCB0byB0aGUgTE1UUCBkYWVtb24sIG9uIGVpdGhlciBhIFVuaXggb3IgYSBUQ1Agc29ja2V0LiIiIgogICAgICAgICBpZiBob3N0WzBdICE9ICcvJzoKLSAgICAgICAgICAgIHJldHVybiBTTVRQLmNvbm5lY3Qoc2VsZiwgaG9zdCwgcG9ydCkKKyAgICAgICAgICAgIHJldHVybiBTTVRQLmNvbm5lY3Qoc2VsZiwgaG9zdCwgcG9ydCwgc291cmNlX2FkZHJlc3M9c291cmNlX2FkZHJlc3MpCiAKICAgICAgICAgIyBIYW5kbGUgVW5peC1kb21haW4gc29ja2V0cy4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3QoaG9zdCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCBlYTU2YTY3Li5kNGYxYjY1IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTEyLDYgKzEyLDcgQEAKIHNvY2tldCgpIC0tIGNyZWF0ZSBhIG5ldyBzb2NrZXQgb2JqZWN0CiBzb2NrZXRwYWlyKCkgLS0gY3JlYXRlIGEgcGFpciBvZiBuZXcgc29ja2V0IG9iamVjdHMgWypdCiBmcm9tZmQoKSAtLSBjcmVhdGUgYSBzb2NrZXQgb2JqZWN0IGZyb20gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgWypdCitmcm9tc2hhcmUoKSAtLSBjcmVhdGUgYSBzb2NrZXQgb2JqZWN0IGZyb20gZGF0YSByZWNlaXZlZCBmcm9tIHNvY2tldC5zaGFyZSgpIFsqXQogZ2V0aG9zdG5hbWUoKSAtLSByZXR1cm4gdGhlIGN1cnJlbnQgaG9zdG5hbWUKIGdldGhvc3RieW5hbWUoKSAtLSBtYXAgYSBob3N0bmFtZSB0byBpdHMgSVAgbnVtYmVyCiBnZXRob3N0YnlhZGRyKCkgLS0gbWFwIGFuIElQIG51bWJlciBvciBob3N0bmFtZSB0byBETlMgaW5mbwpAQCAtNTMsNyArNTQsNiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGVycm5vID0gTm9uZQogRUJBREYgPSBnZXRhdHRyKGVycm5vLCAnRUJBREYnLCA5KQotRUlOVFIgPSBnZXRhdHRyKGVycm5vLCAnRUlOVFInLCA0KQogRUFHQUlOID0gZ2V0YXR0cihlcnJubywgJ0VBR0FJTicsIDExKQogRVdPVUxEQkxPQ0sgPSBnZXRhdHRyKGVycm5vLCAnRVdPVUxEQkxPQ0snLCAxMSkKIApAQCAtMTEyLDYgKzExMiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNbNzpdKQogICAgICAgICByZXR1cm4gcwogCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3Qgc2VyaWFsaXplIHNvY2tldCBvYmplY3QiKQorCiAgICAgZGVmIGR1cChzZWxmKToKICAgICAgICAgIiIiZHVwKCkgLT4gc29ja2V0IG9iamVjdAogCkBAIC0yMDcsNyArMjEwLDYgQEAKICAgICAgICAgc2VsZi5fY2xvc2VkID0gVHJ1ZQogICAgICAgICByZXR1cm4gc3VwZXIoKS5kZXRhY2goKQogCi0KIGRlZiBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZSwgcHJvdG89MCk6CiAgICAgIiIiIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlWywgcHJvdG9dKSAtPiBzb2NrZXQgb2JqZWN0CiAKQEAgLTIxNyw2ICsyMTksMTQgQEAKICAgICBuZmQgPSBkdXAoZmQpCiAgICAgcmV0dXJuIHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBuZmQpCiAKK2lmIGhhc2F0dHIoX3NvY2tldC5zb2NrZXQsICJzaGFyZSIpOgorICAgIGRlZiBmcm9tc2hhcmUoaW5mbyk6CisgICAgICAgICIiIiBmcm9tc2hhcmUoaW5mbykgLT4gc29ja2V0IG9iamVjdAorCisgICAgICAgIENyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBhIHRoZSBieXRlcyBvYmplY3QgcmV0dXJuZWQgYnkKKyAgICAgICAgc29ja2V0LnNoYXJlKHBpZCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc29ja2V0KDAsIDAsIDAsIGluZm8pCiAKIGlmIGhhc2F0dHIoX3NvY2tldCwgInNvY2tldHBhaXIiKToKIApAQCAtMjg4LDExICsyOTgsMTAgQEAKICAgICAgICAgICAgIGV4Y2VwdCB0aW1lb3V0OgogICAgICAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfb2NjdXJyZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBuID0gZS5hcmdzWzBdCi0gICAgICAgICAgICAgICAgaWYgbiA9PSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBuIGluIF9ibG9ja2luZ19lcnJub3M6CisgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIGluIF9ibG9ja2luZ19lcnJub3M6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgcmFpc2UKIApkaWZmIC0tZ2l0IGEvTGliL3NvY2tldHNlcnZlci5weSBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggOGY4MGE3ZC4uODMzMmZkZiAxMDA2NDQKLS0tIGEvTGliL3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvc29ja2V0c2VydmVyLnB5CkBAIC0xNTMsOCArMTUzLDggQEAKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLSAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBzZWxlY3QuZXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUlOVFI6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgIHJhaXNlCiAKIGNsYXNzIEJhc2VTZXJ2ZXI6CkBAIC0xODAsNiArMTgwLDcgQEAKICAgICAtIHByb2Nlc3NfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgICAtIHNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKICAgICAtIGNsb3NlX3JlcXVlc3QocmVxdWVzdCkKKyAgICAtIHNlcnZpY2VfYWN0aW9ucygpCiAgICAgLSBoYW5kbGVfZXJyb3IoKQogCiAgICAgTWV0aG9kcyBmb3IgZGVyaXZlZCBjbGFzc2VzOgpAQCAtMjM2LDYgKzIzNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsX2ludGVydmFsKQogICAgICAgICAgICAgICAgIGlmIHNlbGYgaW4gcjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZpY2VfYWN0aW9ucygpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9fc2h1dGRvd25fcmVxdWVzdCA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLl9faXNfc2h1dF9kb3duLnNldCgpCkBAIC0yNTAsNiArMjUzLDE0IEBACiAgICAgICAgIHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0ID0gVHJ1ZQogICAgICAgICBzZWxmLl9faXNfc2h1dF9kb3duLndhaXQoKQogCisgICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIGJ5IHRoZSBzZXJ2ZV9mb3JldmVyKCkgbG9vcC4KKworICAgICAgICBNYXkgYmUgb3ZlcnJpZGRlbiBieSBhIHN1YmNsYXNzIC8gTWl4aW4gdG8gaW1wbGVtZW50IGFueSBjb2RlIHRoYXQKKyAgICAgICAgbmVlZHMgdG8gYmUgcnVuIGR1cmluZyB0aGUgbG9vcC4KKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKwogICAgICMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gaGFuZGxpbmcsIGdldHRpbmcsIHByb2Nlc3NpbmcgYW5kCiAgICAgIyBmaW5pc2hpbmcgYSByZXF1ZXN0IGlzIGZhaXJseSBhcmJpdHJhcnkuICBSZW1lbWJlcjoKICAgICAjCkBAIC01NTAsOSArNTYxLDE1IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQogCisgICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KKworICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9ydmVyIGxvb3AuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQorCiAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQogICAgICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICAgICAgaWYgcGlkOgogICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcwpAQCAtNTYwLDYgKzU3Nyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBbXQogICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uYXBwZW5kKHBpZCkKICAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCiAgICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQppbmRleCAyMDJiZDM4Li5iN2VjMWFkIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9kYmFwaS5weTogdGVzdHMgZm9yIERCLUFQSSBjb21wbGlhbmNlCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNC0yMDEwIEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQppbmRleCA3ZjZmMzQ3Li45ZTgzM2FlIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvZmFjdG9yeS5weTogdGVzdHMgZm9yIHRoZSB2YXJpb3VzIGZhY3RvcmllcyBpbiBweXNxbGl0ZQogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CkBAIC0xNzgsNiArMTc4LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJvd1swXS5lbmRzd2l0aCgicmVpY2giKSwgImNvbHVtbiBtdXN0IGNvbnRhaW4gb3JpZ2luYWwgZGF0YSIpCiAKICAgICBkZWYgQ2hlY2tPcHRpbWl6ZWRVbmljb2RlKHNlbGYpOgorICAgICAgICAjIEluIHB5M2ssIHN0ciBvYmplY3RzIGFyZSBhbHdheXMgcmV0dXJuZWQgd2hlbiB0ZXh0X2ZhY3RvcnkKKyAgICAgICAgIyBpcyBPcHRpbWl6ZWRVbmljb2RlCiAgICAgICAgIHNlbGYuY29uLnRleHRfZmFjdG9yeSA9IHNxbGl0ZS5PcHRpbWl6ZWRVbmljb2RlCiAgICAgICAgIGF1c3RyaWEgPSAi1nN0ZXJyZWljaCIKICAgICAgICAgZ2VybWFueSA9ICJEZXV0Y2hsYW5kIgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKaW5kZXggMGVjM2I0My4uMGI1NTIwZCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvaG9va3MucHk6IHRlc3RzIGZvciB2YXJpb3VzIFNRTGl0ZS1zcGVjaWZpYyBob29rcwogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNyBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CkBAIC0xNzYsMTAgKzE3Niw2MCBAQAogICAgICAgICBjb24uZXhlY3V0ZSgic2VsZWN0IDEgdW5pb24gc2VsZWN0IDIgdW5pb24gc2VsZWN0IDMiKS5mZXRjaGFsbCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0aW9uLCAwLCAicHJvZ3Jlc3MgaGFuZGxlciB3YXMgbm90IGNsZWFyZWQiKQogCitjbGFzcyBUcmFjZUNhbGxiYWNrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBDaGVja1RyYWNlQ2FsbGJhY2tVc2VkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSB0cmFjZSBjYWxsYmFjayBpcyBpbnZva2VkIG9uY2UgaXQgaXMgc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKyAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMgPSBbXQorICAgICAgICBkZWYgdHJhY2Uoc3RhdGVtZW50KToKKyAgICAgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzLmFwcGVuZChzdGF0ZW1lbnQpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2sodHJhY2UpCisgICAgICAgIGNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgZm9vKGEsIGIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRyYWNlZF9zdGF0ZW1lbnRzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KCJjcmVhdGUgdGFibGUgZm9vIiBpbiBzdG10IGZvciBzdG10IGluIHRyYWNlZF9zdGF0ZW1lbnRzKSkKKworICAgIGRlZiBDaGVja0NsZWFyVHJhY2VDYWxsYmFjayhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBzZXR0aW5nIHRoZSB0cmFjZSBjYWxsYmFjayB0byBOb25lIGNsZWFycyB0aGUgcHJldmlvdXNseSBzZXQgY2FsbGJhY2suCisgICAgICAgICIiIgorICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICB0cmFjZWRfc3RhdGVtZW50cyA9IFtdCisgICAgICAgIGRlZiB0cmFjZShzdGF0ZW1lbnQpOgorICAgICAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMuYXBwZW5kKHN0YXRlbWVudCkKKyAgICAgICAgY29uLnNldF90cmFjZV9jYWxsYmFjayh0cmFjZSkKKyAgICAgICAgY29uLnNldF90cmFjZV9jYWxsYmFjayhOb25lKQorICAgICAgICBjb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIGZvbyhhLCBiKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodHJhY2VkX3N0YXRlbWVudHMsICJ0cmFjZSBjYWxsYmFjayB3YXMgbm90IGNsZWFyZWQiKQorCisgICAgZGVmIENoZWNrVW5pY29kZUNvbnRlbnQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHN0YXRlbWVudCBjYW4gY29udGFpbiB1bmljb2RlIGxpdGVyYWxzLgorICAgICAgICAiIiIKKyAgICAgICAgdW5pY29kZV92YWx1ZSA9ICdceGY2XHhlNFx4ZmNceGQ2XHhjNFx4ZGNceGRmXHUyMGFjJworICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICB0cmFjZWRfc3RhdGVtZW50cyA9IFtdCisgICAgICAgIGRlZiB0cmFjZShzdGF0ZW1lbnQpOgorICAgICAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMuYXBwZW5kKHN0YXRlbWVudCkKKyAgICAgICAgY29uLnNldF90cmFjZV9jYWxsYmFjayh0cmFjZSkKKyAgICAgICAgY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSBmb28oeCkiKQorICAgICAgICAjIENhbid0IGV4ZWN1dGUgYm91bmQgcGFyYW1ldGVycyBhcyB0aGVpciB2YWx1ZXMgZG9uJ3QgYXBwZWFyCisgICAgICAgICMgaW4gdHJhY2VkIHN0YXRlbWVudHMgYmVmb3JlIFNRTGl0ZSAzLjYuMjEKKyAgICAgICAgIyAoY2YuIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9kcmFmdC9yZWxlYXNlbG9nLzNfNl8yMS5odG1sKQorICAgICAgICBjb24uZXhlY3V0ZSgnaW5zZXJ0IGludG8gZm9vKHgpIHZhbHVlcyAoIiVzIiknICUgdW5pY29kZV92YWx1ZSkKKyAgICAgICAgY29uLmNvbW1pdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkodW5pY29kZV92YWx1ZSBpbiBzdG10IGZvciBzdG10IGluIHRyYWNlZF9zdGF0ZW1lbnRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlIGRhdGEgJXMgZ2FyYmxlZCBpbiB0cmFjZSBjYWxsYmFjazogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAlIChhc2NpaSh1bmljb2RlX3ZhbHVlKSwgJywgJy5qb2luKG1hcChhc2NpaSwgdHJhY2VkX3N0YXRlbWVudHMpKSkpCisKKworCiBkZWYgc3VpdGUoKToKICAgICBjb2xsYXRpb25fc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoQ29sbGF0aW9uVGVzdHMsICJDaGVjayIpCiAgICAgcHJvZ3Jlc3Nfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoUHJvZ3Jlc3NUZXN0cywgIkNoZWNrIikKLSAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChjb2xsYXRpb25fc3VpdGUsIHByb2dyZXNzX3N1aXRlKSkKKyAgICB0cmFjZV9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFjZUNhbGxiYWNrVGVzdHMsICJDaGVjayIpCisgICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoY29sbGF0aW9uX3N1aXRlLCBwcm9ncmVzc19zdWl0ZSwgdHJhY2Vfc3VpdGUpKQogCiBkZWYgdGVzdCgpOgogICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQppbmRleCBjNzU1MWUzLi45ZDdiMjc2IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvcmVncmVzc2lvbi5weTogcHlzcWxpdGUgcmVncmVzc2lvbiB0ZXN0cwogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMCBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CmluZGV4IDcwZTk2YTEuLmZlYjRmYTEgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvdHJhbnNhY3Rpb25zLnB5OiB0ZXN0cyB0cmFuc2FjdGlvbnMKICMKICMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKaW5kZXggMjk0MTNlMS4uM2I0Y2I2ZCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvdHlwZXMucHk6IHRlc3RzIGZvciB0eXBlIGNvbnZlcnNpb24gYW5kIGRldGVjdGlvbgogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDUgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpAQCAtODUsNyArODUsNyBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShfdmFsLCBieXRlcyk6CiAgICAgICAgICAgICAgICAgIyBzcWxpdGUzIGFsd2F5cyBjYWxscyBfX2luaXRfXyB3aXRoIGEgYnl0ZXMgY3JlYXRlZCBmcm9tIGEKICAgICAgICAgICAgICAgICAjIFVURi04IHN0cmluZyB3aGVuIF9fY29uZm9ybV9fIHdhcyB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuCi0gICAgICAgICAgICAgICAgX3ZhbCA9IF92YWwuZGVjb2RlKCd1dGY4JykKKyAgICAgICAgICAgICAgICBfdmFsID0gX3ZhbC5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgIHNlbGYudmFsID0gX3ZhbAogCiAgICAgICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQppbmRleCBlMDEzNDFlLi4xNGY2YjY1IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weTogdGVzdHMgZm9yIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZXMuCiAjCmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggZjUyZWEwMS4uNzVmM2EwOSAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtMzE4LDExICszMTgsMTMgQEAKICAgICAgICAgICAgICAgICAjIFhYWDogY291bGQgZXhwYW5kIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNoYXJzZXQgIyBjYW5ub3QgY29tcHJlc3MKICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgIyBub24tQk1QIGNoYXJhY3RlcnMKKyAgICAgICAgIyBub24tQk1QIGNoYXJhY3RlcnM7IFhYWCBub3cgdGhleSBzaG91bGQgd29yawogICAgICAgICByZXR1cm4gY2hhcnNldAogICAgIGlmIG5lZ2F0ZToKICAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgIT0gNjU1MzU6CiAgICAgICAgICAgICAjIFhYWDogbmVnYXRpb24gZG9lcyBub3Qgd29yayB3aXRoIGJpZyBjaGFyc2V0cworICAgICAgICAgICAgIyBYWFgyOiBub3cgdGhleSBzaG91bGQgd29yaywgYnV0IHJlbW92aW5nIHRoaXMgd2lsbCBtYWtlIHRoZQorICAgICAgICAgICAgIyBjaGFybWFwIDE3IHRpbWVzIGJpZ2dlcgogICAgICAgICAgICAgcmV0dXJuIGNoYXJzZXQKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNjU1MzYpOgogICAgICAgICAgICAgY2hhcm1hcFtpXSA9IG5vdCBjaGFybWFwW2ldCmRpZmYgLS1naXQgYS9MaWIvc3JlX3BhcnNlLnB5IGIvTGliL3NyZV9wYXJzZS5weQppbmRleCAxOWRkNGZjLi4xMjk4ZDQ4IDEwMDY0NAotLS0gYS9MaWIvc3JlX3BhcnNlLnB5CisrKyBiL0xpYi9zcmVfcGFyc2UucHkKQEAgLTE3Nyw2ICsxNzcsNyBAQAogCiBjbGFzcyBUb2tlbml6ZXI6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmluZyk6CisgICAgICAgIHNlbGYuaXN0ZXh0ID0gaXNpbnN0YW5jZShzdHJpbmcsIHN0cikKICAgICAgICAgc2VsZi5zdHJpbmcgPSBzdHJpbmcKICAgICAgICAgc2VsZi5pbmRleCA9IDAKICAgICAgICAgc2VsZi5fX25leHQoKQpAQCAtMTg3LDE0ICsxODgsMTQgQEAKICAgICAgICAgY2hhciA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXg6c2VsZi5pbmRleCsxXQogICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgdGhlIHN0cjgsIHNpbmNlIGluZGV4aW5nIHJldHVybnMgYSBpbnRlZ2VyCiAgICAgICAgICMgWFhYIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIHRlc3RfYnVnXzkyNjA3NSBpbiB0ZXN0X3JlLnB5Ci0gICAgICAgIGlmIGNoYXIgYW5kIGlzaW5zdGFuY2UoY2hhciwgYnl0ZXMpOgorICAgICAgICBpZiBjaGFyIGFuZCBub3Qgc2VsZi5pc3RleHQ6CiAgICAgICAgICAgICBjaGFyID0gY2hyKGNoYXJbMF0pCiAgICAgICAgIGlmIGNoYXIgPT0gIlxcIjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjID0gc2VsZi5zdHJpbmdbc2VsZi5pbmRleCArIDFdCiAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlIChlbmQgb2YgbGluZSkiKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnN0cmluZywgYnl0ZXMpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuaXN0ZXh0OgogICAgICAgICAgICAgICAgIGMgPSBjaHIoYykKICAgICAgICAgICAgIGNoYXIgPSBjaGFyICsgYwogICAgICAgICBzZWxmLmluZGV4ID0gc2VsZi5pbmRleCArIGxlbihjaGFyKQpAQCAtMjA5LDYgKzIxMCwxNSBAQAogICAgICAgICB0aGlzID0gc2VsZi5uZXh0CiAgICAgICAgIHNlbGYuX19uZXh0KCkKICAgICAgICAgcmV0dXJuIHRoaXMKKyAgICBkZWYgZ2V0d2hpbGUoc2VsZiwgbiwgY2hhcnNldCk6CisgICAgICAgIHJlc3VsdCA9ICcnCisgICAgICAgIGZvciBfIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgYyA9IHNlbGYubmV4dAorICAgICAgICAgICAgaWYgYyBub3QgaW4gY2hhcnNldDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVzdWx0ICs9IGMKKyAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmRleCwgc2VsZi5uZXh0CiAgICAgZGVmIHNlZWsoc2VsZiwgaW5kZXgpOgpAQCAtMjQxLDIwICsyNTEsMzAgQEAKICAgICAgICAgYyA9IGVzY2FwZVsxOjJdCiAgICAgICAgIGlmIGMgPT0gIngiOgogICAgICAgICAgICAgIyBoZXhhZGVjaW1hbCBlc2NhcGUgKGV4YWN0bHkgdHdvIGRpZ2l0cykKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIEhFWERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQotICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlWzI6XQotICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlOiAlcyIgJSByZXByKCJcXCIgKyBlc2NhcGUpKQotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGUsIDE2KSAmIDB4ZmYKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KSAmIDB4ZmYKKyAgICAgICAgZWxpZiBjID09ICJ1IiBhbmQgc291cmNlLmlzdGV4dDoKKyAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDQsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDY6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgZWxpZiBjID09ICJVIiBhbmQgc291cmNlLmlzdGV4dDoKKyAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg4LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAxMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgaW4gT0NURElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKHVwIHRvIHRocmVlIGRpZ2l0cykKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIE9DVERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQotICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlWzE6XQotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGUsIDgpICYgMHhmZgorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBPQ1RESUdJVFMpCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcihlc2NhcGUpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CkBAIC0yNzMsMTUgKzI5MywyNyBAQAogICAgICAgICBjID0gZXNjYXBlWzE6Ml0KICAgICAgICAgaWYgYyA9PSAieCI6CiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gSEVYRElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikgJiAweGZmCisgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGVpZ2h0IGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoOCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgZWxpZiBjID09ICIwIjoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBPQ1RESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKICAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICpvciogZGVjaW1hbCBncm91cCByZWZlcmVuY2UgKHNpZ2gpCkBAIC03OTcsNyArODI5LDcgQEAKICAgICBlbHNlOgogICAgICAgICAjIFRoZSB0b2tlbml6ZXIgaW1wbGljaXRseSBkZWNvZGVzIGJ5dGVzIG9iamVjdHMgYXMgbGF0aW4tMSwgd2UgbXVzdAogICAgICAgICAjIHRoZXJlZm9yZSByZS1lbmNvZGUgdGhlIGZpbmFsIHJlcHJlc2VudGF0aW9uLgotICAgICAgICBlbmNvZGUgPSBsYW1iZGEgeDogeC5lbmNvZGUoJ2xhdGluMScpCisgICAgICAgIGVuY29kZSA9IGxhbWJkYSB4OiB4LmVuY29kZSgnbGF0aW4tMScpCiAgICAgZm9yIGMsIHMgaW4gcDoKICAgICAgICAgaWYgYyBpcyBNQVJLOgogICAgICAgICAgICAgZ3JvdXBzYXBwZW5kKChpLCBzKSkKZGlmZiAtLWdpdCBhL0xpYi9zc2wucHkgYi9MaWIvc3NsLnB5CmluZGV4IGU5MDFiNjQuLjZmZjVjNTMgMTAwNjQ0Ci0tLSBhL0xpYi9zc2wucHkKKysrIGIvTGliL3NzbC5weQpAQCAtNjAsMTAgKzYwLDI1IEBACiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBTU0xFcnJvcgorZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dAorZnJvbSBfc3NsIGltcG9ydCAoCisgICAgU1NMRXJyb3IsIFNTTFplcm9SZXR1cm5FcnJvciwgU1NMV2FudFJlYWRFcnJvciwgU1NMV2FudFdyaXRlRXJyb3IsCisgICAgU1NMU3lzY2FsbEVycm9yLCBTU0xFT0ZFcnJvciwKKyAgICApCiBmcm9tIF9zc2wgaW1wb3J0IENFUlRfTk9ORSwgQ0VSVF9PUFRJT05BTCwgQ0VSVF9SRVFVSVJFRAotZnJvbSBfc3NsIGltcG9ydCBPUF9BTEwsIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fVExTdjEKLWZyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfZWdkLCBSQU5EX2FkZAorZnJvbSBfc3NsIGltcG9ydCAoCisgICAgT1BfQUxMLCBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX1RMU3YxLAorICAgIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRQorICAgICkKK3RyeToKKyAgICBmcm9tIF9zc2wgaW1wb3J0IE9QX05PX0NPTVBSRVNTSU9OCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwordHJ5OgorICAgIGZyb20gX3NzbCBpbXBvcnQgT1BfU0lOR0xFX0VDREhfVVNFCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZnJvbSBfc3NsIGltcG9ydCBSQU5EX3N0YXR1cywgUkFORF9lZ2QsIFJBTkRfYWRkLCBSQU5EX2J5dGVzLCBSQU5EX3BzZXVkb19ieXRlcwogZnJvbSBfc3NsIGltcG9ydCAoCiAgICAgU1NMX0VSUk9SX1pFUk9fUkVUVVJOLAogICAgIFNTTF9FUlJPUl9XQU5UX1JFQUQsCkBAIC03NSw4ICs5MCw5IEBACiAgICAgU1NMX0VSUk9SX0VPRiwKICAgICBTU0xfRVJST1JfSU5WQUxJRF9FUlJPUl9DT0RFLAogICAgICkKLWZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSQotZnJvbSBfc3NsIGltcG9ydCBQUk9UT0NPTF9TU0x2MywgUFJPVE9DT0xfU1NMdjIzLCBQUk9UT0NPTF9UTFN2MQorZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTgorZnJvbSBfc3NsIGltcG9ydCAoUFJPVE9DT0xfU1NMdjMsIFBST1RPQ09MX1NTTHYyMywKKyAgICAgICAgICAgICAgICAgIFBST1RPQ09MX1RMU3YxKQogZnJvbSBfc3NsIGltcG9ydCBfT1BFTlNTTF9BUElfVkVSU0lPTgogCiBfUFJPVE9DT0xfTkFNRVMgPSB7CkBAIC05NCwxMSArMTEwLDE2IEBACiAKIGZyb20gc29ja2V0IGltcG9ydCBnZXRuYW1laW5mbyBhcyBfZ2V0bmFtZWluZm8KIGZyb20gc29ja2V0IGltcG9ydCBlcnJvciBhcyBzb2NrZXRfZXJyb3IKLWZyb20gc29ja2V0IGltcG9ydCBzb2NrZXQsIEFGX0lORVQsIFNPQ0tfU1RSRUFNCitmcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVULCBTT0NLX1NUUkVBTSwgY3JlYXRlX2Nvbm5lY3Rpb24KIGltcG9ydCBiYXNlNjQgICAgICAgICMgZm9yIERFUi10by1QRU0gdHJhbnNsYXRpb24KIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBlcnJubwogCitpZiBfc3NsLkhBU19UTFNfVU5JUVVFOgorICAgIENIQU5ORUxfQklORElOR19UWVBFUyA9IFsndGxzLXVuaXF1ZSddCitlbHNlOgorICAgIENIQU5ORUxfQklORElOR19UWVBFUyA9IFtdCisKICMgRGlzYWJsZSB3ZWFrIG9yIGluc2VjdXJlIGNpcGhlcnMgYnkgZGVmYXVsdAogIyAoT3BlblNTTCdzIGRlZmF1bHQgc2V0dGluZyBpcyAnREVGQVVMVDohYU5VTEw6IWVOVUxMJykKIF9ERUZBVUxUX0NJUEhFUlMgPSAnREVGQVVMVDohYU5VTEw6IWVOVUxMOiFMT1c6IUVYUE9SVDohU1NMdjInCkBAIC0xODgsNiArMjA5LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQogCisgICAgZGVmIHNldF9ucG5fcHJvdG9jb2xzKHNlbGYsIG5wbl9wcm90b2NvbHMpOgorICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQorICAgICAgICBmb3IgcHJvdG9jb2wgaW4gbnBuX3Byb3RvY29sczoKKyAgICAgICAgICAgIGIgPSBieXRlcyhwcm90b2NvbCwgJ2FzY2lpJykKKyAgICAgICAgICAgIGlmIGxlbihiKSA9PSAwIG9yIGxlbihiKSA+IDI1NToKKyAgICAgICAgICAgICAgICByYWlzZSBTU0xFcnJvcignTlBOIHByb3RvY29scyBtdXN0IGJlIDEgdG8gMjU1IGluIGxlbmd0aCcpCisgICAgICAgICAgICBwcm90b3MuYXBwZW5kKGxlbihiKSkKKyAgICAgICAgICAgIHByb3Rvcy5leHRlbmQoYikKKworICAgICAgICBzZWxmLl9zZXRfbnBuX3Byb3RvY29scyhwcm90b3MpCisKIAogY2xhc3MgU1NMU29ja2V0KHNvY2tldCk6CiAgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc3VidHlwZSBvZiBzb2NrZXQuc29ja2V0IHRoYXQgd3JhcHMKQEAgLTE5OSw3ICsyMzEsNyBAQAogICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1QUk9UT0NPTF9TU0x2MjMsIGNhX2NlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsCiAgICAgICAgICAgICAgICAgIGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wLCBmaWxlbm89Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgY2lwaGVycz1Ob25lLAorICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBucG5fcHJvdG9jb2xzPU5vbmUsIGNpcGhlcnM9Tm9uZSwKICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgIF9jb250ZXh0PU5vbmUpOgogCkBAIC0yMTksNiArMjUxLDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhX2NlcnRzKQogICAgICAgICAgICAgaWYgY2VydGZpbGU6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKKyAgICAgICAgICAgIGlmIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKG5wbl9wcm90b2NvbHMpCiAgICAgICAgICAgICBpZiBjaXBoZXJzOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQpAQCAtMzE5LDYgKzM1MywxMyBAQAogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoucGVlcl9jZXJ0aWZpY2F0ZShiaW5hcnlfZm9ybSkKIAorICAgIGRlZiBzZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iaiBvciBub3QgX3NzbC5IQVNfTlBOOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKKwogICAgIGRlZiBjaXBoZXIoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKQEAgLTMyNiw2ICszNjcsMTMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouY2lwaGVyKCkKIAorICAgIGRlZiBjb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouY29tcHJlc3Npb24oKQorCiAgICAgZGVmIHNlbmQoc2VsZiwgZGF0YSwgZmxhZ3M9MCk6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtMzU4LDYgKzQwNiwxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5zZW5kdG8oc2VsZiwgZGF0YSwgZmxhZ3Nfb3JfYWRkciwgYWRkcikKIAorICAgIGRlZiBzZW5kbXNnKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgRW5zdXJlIHByb2dyYW1zIGRvbid0IHNlbmQgZGF0YSB1bmVuY3J5cHRlZCBpZiB0aGV5IHRyeSB0bworICAgICAgICAjIHVzZSB0aGlzIG1ldGhvZC4KKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic2VuZG1zZyBub3QgYWxsb3dlZCBvbiBpbnN0YW5jZXMgb2YgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKKwogICAgIGRlZiBzZW5kYWxsKHNlbGYsIGRhdGEsIGZsYWdzPTApOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKQEAgLTQxNiw2ICs0NzAsMTQgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQucmVjdmZyb21faW50byhzZWxmLCBidWZmZXIsIG5ieXRlcywgZmxhZ3MpCiAKKyAgICBkZWYgcmVjdm1zZyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJyZWN2bXNnIG5vdCBhbGxvd2VkIG9uIGluc3RhbmNlcyBvZiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fKQorCisgICAgZGVmIHJlY3Ztc2dfaW50byhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJyZWN2bXNnX2ludG8gbm90IGFsbG93ZWQgb24gaW5zdGFuY2VzIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiICUgc2VsZi5fX2NsYXNzX18pCisKICAgICBkZWYgcGVuZGluZyhzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC00OTcsMTYgKzU1OSwyOCBAQAogICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICByZXR1cm4gbmV3c29jaywgYWRkcgogCi0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgICMgc3lzLnN0ZGVyci53cml0ZSgiX19kZWxfXyBvbiAlc1xuIiAlIHJlcHIoc2VsZikpCi0gICAgICAgIHNlbGYuX3JlYWxfY2xvc2UoKQorICAgIGRlZiBnZXRfY2hhbm5lbF9iaW5kaW5nKHNlbGYsIGNiX3R5cGU9InRscy11bmlxdWUiKToKKyAgICAgICAgIiIiR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24uICBSYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIHRoZSByZXF1ZXN0ZWQgYGNiX3R5cGVgIGlzIG5vdCBzdXBwb3J0ZWQuICBSZXR1cm4gYnl0ZXMgb2YgdGhlIGRhdGEKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgZGF0YSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIGJlZm9yZSB0aGUgaGFuZHNoYWtlKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNiX3R5cGUgbm90IGluIENIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIikKKyAgICAgICAgaWYgY2JfdHlwZSAhPSAidGxzLXVuaXF1ZSI6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0gY2hhbm5lbCBiaW5kaW5nIHR5cGUgbm90IGltcGxlbWVudGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfdHlwZSkpCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai50bHNfdW5pcXVlX2NiKCkKIAogCiBkZWYgd3JhcF9zb2NrZXQoc29jaywga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLCBjZXJ0X3JlcXM9Q0VSVF9OT05FLAogICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAotICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIGNpcGhlcnM9Tm9uZSk6CisgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUpOgogCiAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIGtleWZpbGU9a2V5ZmlsZSwgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgY2VydF9yZXFzPWNlcnRfcmVxcywKQEAgLTU2MSw5ICs2MzUsOSBAQAogICAgICAgICBjZXJ0X3JlcXMgPSBDRVJUX1JFUVVJUkVECiAgICAgZWxzZToKICAgICAgICAgY2VydF9yZXFzID0gQ0VSVF9OT05FCi0gICAgcyA9IHdyYXBfc29ja2V0KHNvY2tldCgpLCBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwKKyAgICBzID0gY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikKKyAgICBzID0gd3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jZXJ0X3JlcXMsIGNhX2NlcnRzPWNhX2NlcnRzKQotICAgIHMuY29ubmVjdChhZGRyKQogICAgIGRlcmNlcnQgPSBzLmdldHBlZXJjZXJ0KFRydWUpCiAgICAgcy5jbG9zZSgpCiAgICAgcmV0dXJuIERFUl9jZXJ0X3RvX1BFTV9jZXJ0KGRlcmNlcnQpCmRpZmYgLS1naXQgYS9MaWIvc3RhdC5weSBiL0xpYi9zdGF0LnB5CmluZGV4IDc4Y2NkNWUuLjcwNGFkZmUgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0LnB5CisrKyBiL0xpYi9zdGF0LnB5CkBAIC0xOSw3OCArMTksMTMxIEBACiAjIEV4dHJhY3QgYml0cyBmcm9tIHRoZSBtb2RlCiAKIGRlZiBTX0lNT0RFKG1vZGUpOgorICAgICIiIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBjYW4gYmUgc2V0IGJ5CisgICAgb3MuY2htb2QoKS4KKyAgICAiIiIKICAgICByZXR1cm4gbW9kZSAmIDBvNzc3NwogCiBkZWYgU19JRk1UKG1vZGUpOgorICAgICIiIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBkZXNjcmliZXMgdGhlCisgICAgZmlsZSB0eXBlLgorICAgICIiIgogICAgIHJldHVybiBtb2RlICYgMG8xNzAwMDAKIAogIyBDb25zdGFudHMgdXNlZCBhcyBTX0lGTVQoKSBmb3IgdmFyaW91cyBmaWxlIHR5cGVzCiAjIChub3QgYWxsIGFyZSBpbXBsZW1lbnRlZCBvbiBhbGwgc3lzdGVtcykKIAotU19JRkRJUiAgPSAwbzA0MDAwMAotU19JRkNIUiAgPSAwbzAyMDAwMAotU19JRkJMSyAgPSAwbzA2MDAwMAotU19JRlJFRyAgPSAwbzEwMDAwMAotU19JRklGTyAgPSAwbzAxMDAwMAotU19JRkxOSyAgPSAwbzEyMDAwMAotU19JRlNPQ0sgPSAwbzE0MDAwMAorU19JRkRJUiAgPSAwbzA0MDAwMCAgIyBkaXJlY3RvcnkKK1NfSUZDSFIgID0gMG8wMjAwMDAgICMgY2hhcmFjdGVyIGRldmljZQorU19JRkJMSyAgPSAwbzA2MDAwMCAgIyBibG9jayBkZXZpY2UKK1NfSUZSRUcgID0gMG8xMDAwMDAgICMgcmVndWxhciBmaWxlCitTX0lGSUZPICA9IDBvMDEwMDAwICAjIGZpZm8gKG5hbWVkIHBpcGUpCitTX0lGTE5LICA9IDBvMTIwMDAwICAjIHN5bWJvbGljIGxpbmsKK1NfSUZTT0NLID0gMG8xNDAwMDAgICMgc29ja2V0IGZpbGUKIAogIyBGdW5jdGlvbnMgdG8gdGVzdCBmb3IgZWFjaCBmaWxlIHR5cGUKIAogZGVmIFNfSVNESVIobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZGlyZWN0b3J5LiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkRJUgogCiBkZWYgU19JU0NIUihtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZDSFIKIAogZGVmIFNfSVNCTEsobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZCTEsKIAogZGVmIFNfSVNSRUcobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgcmVndWxhciBmaWxlLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlJFRwogCiBkZWYgU19JU0ZJRk8obW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgRklGTyAobmFtZWQgcGlwZSkuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGSUZPCiAKIGRlZiBTX0lTTE5LKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHN5bWJvbGljIGxpbmsuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGTE5LCiAKIGRlZiBTX0lTU09DSyhtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzb2NrZXQuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGU09DSwogCiAjIE5hbWVzIGZvciBwZXJtaXNzaW9uIGJpdHMKIAotU19JU1VJRCA9IDBvNDAwMAotU19JU0dJRCA9IDBvMjAwMAotU19FTkZNVCA9IFNfSVNHSUQKLVNfSVNWVFggPSAwbzEwMDAKLVNfSVJFQUQgPSAwbzA0MDAKLVNfSVdSSVRFID0gMG8wMjAwCi1TX0lFWEVDID0gMG8wMTAwCi1TX0lSV1hVID0gMG8wNzAwCi1TX0lSVVNSID0gMG8wNDAwCi1TX0lXVVNSID0gMG8wMjAwCi1TX0lYVVNSID0gMG8wMTAwCi1TX0lSV1hHID0gMG8wMDcwCi1TX0lSR1JQID0gMG8wMDQwCi1TX0lXR1JQID0gMG8wMDIwCi1TX0lYR1JQID0gMG8wMDEwCi1TX0lSV1hPID0gMG8wMDA3Ci1TX0lST1RIID0gMG8wMDA0Ci1TX0lXT1RIID0gMG8wMDAyCi1TX0lYT1RIID0gMG8wMDAxCitTX0lTVUlEID0gMG80MDAwICAjIHNldCBVSUQgYml0CitTX0lTR0lEID0gMG8yMDAwICAjIHNldCBHSUQgYml0CitTX0VORk1UID0gU19JU0dJRCAjIGZpbGUgbG9ja2luZyBlbmZvcmNlbWVudAorU19JU1ZUWCA9IDBvMTAwMCAgIyBzdGlja3kgYml0CitTX0lSRUFEID0gMG8wNDAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JUlVTUgorU19JV1JJVEUgPSAwbzAyMDAgIyBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVdVU1IKK1NfSUVYRUMgPSAwbzAxMDAgICMgVW5peCBWNyBzeW5vbnltIGZvciBTX0lYVVNSCitTX0lSV1hVID0gMG8wNzAwICAjIG1hc2sgZm9yIG93bmVyIHBlcm1pc3Npb25zCitTX0lSVVNSID0gMG8wNDAwICAjIHJlYWQgYnkgb3duZXIKK1NfSVdVU1IgPSAwbzAyMDAgICMgd3JpdGUgYnkgb3duZXIKK1NfSVhVU1IgPSAwbzAxMDAgICMgZXhlY3V0ZSBieSBvd25lcgorU19JUldYRyA9IDBvMDA3MCAgIyBtYXNrIGZvciBncm91cCBwZXJtaXNzaW9ucworU19JUkdSUCA9IDBvMDA0MCAgIyByZWFkIGJ5IGdyb3VwCitTX0lXR1JQID0gMG8wMDIwICAjIHdyaXRlIGJ5IGdyb3VwCitTX0lYR1JQID0gMG8wMDEwICAjIGV4ZWN1dGUgYnkgZ3JvdXAKK1NfSVJXWE8gPSAwbzAwMDcgICMgbWFzayBmb3Igb3RoZXJzIChub3QgaW4gZ3JvdXApIHBlcm1pc3Npb25zCitTX0lST1RIID0gMG8wMDA0ICAjIHJlYWQgYnkgb3RoZXJzCitTX0lXT1RIID0gMG8wMDAyICAjIHdyaXRlIGJ5IG90aGVycworU19JWE9USCA9IDBvMDAwMSAgIyBleGVjdXRlIGJ5IG90aGVycwogCiAjIE5hbWVzIGZvciBmaWxlIGZsYWdzCiAKLVVGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEKLVVGX0lNTVVUQUJMRSA9IDB4MDAwMDAwMDIKLVVGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQKLVVGX09QQVFVRSAgICA9IDB4MDAwMDAwMDgKLVVGX05PVU5MSU5LICA9IDB4MDAwMDAwMTAKLVVGX0NPTVBSRVNTRUQgPSAweDAwMDAwMDIwICAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKLVVGX0hJRERFTiAgICA9IDB4MDAwMDgwMDAgICAjIE9TIFg6IGZpbGUgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQKLVNGX0FSQ0hJVkVEICA9IDB4MDAwMTAwMDAKLVNGX0lNTVVUQUJMRSA9IDB4MDAwMjAwMDAKLVNGX0FQUEVORCAgICA9IDB4MDAwNDAwMDAKLVNGX05PVU5MSU5LICA9IDB4MDAxMDAwMDAKLVNGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAKK1VGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEgICMgZG8gbm90IGR1bXAgZmlsZQorVUZfSU1NVVRBQkxFID0gMHgwMDAwMDAwMiAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZAorVUZfQVBQRU5EICAgID0gMHgwMDAwMDAwNCAgIyBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvCitVRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4ICAjIGRpcmVjdG9yeSBpcyBvcGFxdWUgd2hlbiB2aWV3ZWQgdGhyb3VnaCBhIHVuaW9uIHN0YWNrCitVRl9OT1VOTElOSyAgPSAweDAwMDAwMDEwICAjIGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKK1VGX0NPTVBSRVNTRUQgPSAweDAwMDAwMDIwICMgT1MgWDogZmlsZSBpcyBoZnMtY29tcHJlc3NlZAorVUZfSElEREVOICAgID0gMHgwMDAwODAwMCAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkCitTRl9BUkNISVZFRCAgPSAweDAwMDEwMDAwICAjIGZpbGUgbWF5IGJlIGFyY2hpdmVkCitTRl9JTU1VVEFCTEUgPSAweDAwMDIwMDAwICAjIGZpbGUgbWF5IG5vdCBiZSBjaGFuZ2VkCitTRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwICAjIGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG8KK1NGX05PVU5MSU5LICA9IDB4MDAxMDAwMDAgICMgZmlsZSBtYXkgbm90IGJlIHJlbmFtZWQgb3IgZGVsZXRlZAorU0ZfU05BUFNIT1QgID0gMHgwMDIwMDAwMCAgIyBmaWxlIGlzIGEgc25hcHNob3QgZmlsZQorCisKK19maWxlbW9kZV90YWJsZSA9ICgKKyAgICAoKFNfSUZMTkssICAgICAgICAgImwiKSwKKyAgICAgKFNfSUZSRUcsICAgICAgICAgIi0iKSwKKyAgICAgKFNfSUZCTEssICAgICAgICAgImIiKSwKKyAgICAgKFNfSUZESVIsICAgICAgICAgImQiKSwKKyAgICAgKFNfSUZDSFIsICAgICAgICAgImMiKSwKKyAgICAgKFNfSUZJRk8sICAgICAgICAgInAiKSksCisKKyAgICAoKFNfSVJVU1IsICAgICAgICAgInIiKSwpLAorICAgICgoU19JV1VTUiwgICAgICAgICAidyIpLCksCisgICAgKChTX0lYVVNSfFNfSVNVSUQsICJzIiksCisgICAgIChTX0lTVUlELCAgICAgICAgICJTIiksCisgICAgIChTX0lYVVNSLCAgICAgICAgICJ4IikpLAorCisgICAgKChTX0lSR1JQLCAgICAgICAgICJyIiksKSwKKyAgICAoKFNfSVdHUlAsICAgICAgICAgInciKSwpLAorICAgICgoU19JWEdSUHxTX0lTR0lELCAicyIpLAorICAgICAoU19JU0dJRCwgICAgICAgICAiUyIpLAorICAgICAoU19JWEdSUCwgICAgICAgICAieCIpKSwKKworICAgICgoU19JUk9USCwgICAgICAgICAiciIpLCksCisgICAgKChTX0lXT1RILCAgICAgICAgICJ3IiksKSwKKyAgICAoKFNfSVhPVEh8U19JU1ZUWCwgInQiKSwKKyAgICAgKFNfSVNWVFgsICAgICAgICAgIlQiKSwKKyAgICAgKFNfSVhPVEgsICAgICAgICAgIngiKSkKKykKKworZGVmIGZpbGVtb2RlKG1vZGUpOgorICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuIiIiCisgICAgcGVybSA9IFtdCisgICAgZm9yIHRhYmxlIGluIF9maWxlbW9kZV90YWJsZToKKyAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKKyAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgorICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKKyAgICByZXR1cm4gIiIuam9pbihwZXJtKQpkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggMGY0ZWRlMi4uYjU3Yzc5YiAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC00NiwyMyArNDYsNyBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaW1wb3J0IHJlIGFzIF9yZQotCi1jbGFzcyBfbXVsdGltYXA6Ci0gICAgIiIiSGVscGVyIGNsYXNzIGZvciBjb21iaW5pbmcgbXVsdGlwbGUgbWFwcGluZ3MuCi0KLSAgICBVc2VkIGJ5IC57c2FmZV8sfXN1YnN0aXR1dGUoKSB0byBjb21iaW5lIHRoZSBtYXBwaW5nIGFuZCBrZXl3b3JkCi0gICAgYXJndW1lbnRzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmltYXJ5LCBzZWNvbmRhcnkpOgotICAgICAgICBzZWxmLl9wcmltYXJ5ID0gcHJpbWFyeQotICAgICAgICBzZWxmLl9zZWNvbmRhcnkgPSBzZWNvbmRhcnkKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJpbWFyeVtrZXldCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZWNvbmRhcnlba2V5XQotCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAogCiBjbGFzcyBfVGVtcGxhdGVNZXRhY2xhc3ModHlwZSk6CiAgICAgcGF0dGVybiA9IHIiIiIKQEAgLTEwMCw3ICs4NCw3IEBACiAKICAgICBkZWYgX2ludmFsaWQoc2VsZiwgbW8pOgogICAgICAgICBpID0gbW8uc3RhcnQoJ2ludmFsaWQnKQotICAgICAgICBsaW5lcyA9IHNlbGYudGVtcGxhdGVbOmldLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgIGlmIG5vdCBsaW5lczoKICAgICAgICAgICAgIGNvbG5vID0gMQogICAgICAgICAgICAgbGluZW5vID0gMQpAQCAtMTE2LDcgKzEwMCw3IEBACiAgICAgICAgIGlmIG5vdCBhcmdzOgogICAgICAgICAgICAgbWFwcGluZyA9IGt3cwogICAgICAgICBlbGlmIGt3czoKLSAgICAgICAgICAgIG1hcHBpbmcgPSBfbXVsdGltYXAoa3dzLCBhcmdzWzBdKQorICAgICAgICAgICAgbWFwcGluZyA9IENoYWluTWFwKGt3cywgYXJnc1swXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1hcHBpbmcgPSBhcmdzWzBdCiAgICAgICAgICMgSGVscGVyIGZ1bmN0aW9uIGZvciAuc3ViKCkKQEAgLTE0Miw3ICsxMjYsNyBAQAogICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICAgZWxpZiBrd3M6Ci0gICAgICAgICAgICBtYXBwaW5nID0gX211bHRpbWFwKGt3cywgYXJnc1swXSkKKyAgICAgICAgICAgIG1hcHBpbmcgPSBDaGFpbk1hcChrd3MsIGFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gYXJnc1swXQogICAgICAgICAjIEhlbHBlciBmdW5jdGlvbiBmb3IgLnN1YigpCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IGYzMmYwODEuLmFhM2UyMTcgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xOTEsOCArMTkxLDEwIEBACiAKIEEgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZCBpZiBQb3BlbiBpcyBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cy4KIAotY2hlY2tfY2FsbCgpIGFuZCBjaGVja19vdXRwdXQoKSB3aWxsIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciwgaWYgdGhlCi1jYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuIGNvZGUuCitFeGNlcHRpb25zIGRlZmluZWQgd2l0aGluIHRoaXMgbW9kdWxlIGluaGVyaXQgZnJvbSBTdWJwcm9jZXNzRXJyb3IuCitjaGVja19jYWxsKCkgYW5kIGNoZWNrX291dHB1dCgpIHdpbGwgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yIGlmIHRoZQorY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLiAgVGltZW91dEV4cGlyZWQKK2JlIHJhaXNlZCBpZiBhIHRpbWVvdXQgd2FzIHNwZWNpZmllZCBhbmQgZXhwaXJlZC4KIAogCiBTZWN1cml0eQpAQCAtMzQwLDE1ICszNDIsMjMgQEAKIAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZ2MKIGltcG9ydCBzaWduYWwKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZXJybm8KK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCi1jbGFzcyBDYWxsZWRQcm9jZXNzRXJyb3IoRXhjZXB0aW9uKToKK2NsYXNzIFN1YnByb2Nlc3NFcnJvcihFeGNlcHRpb24pOiBwYXNzCisKKworY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKFN1YnByb2Nlc3NFcnJvcik6CiAgICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSBjaGVja19jYWxsKCkgb3IKICAgICBjaGVja19vdXRwdXQoKSByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCiAgICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKQEAgLTM2MiwxMCArMzcyLDI0IEBACiAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkIiAlIChzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCiAKK2NsYXNzIFRpbWVvdXRFeHBpcmVkKFN1YnByb2Nlc3NFcnJvcik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcyB3aGlsZSB3YWl0aW5nIGZvciBhCisgICAgY2hpbGQgcHJvY2Vzcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCB0aW1lb3V0LCBvdXRwdXQ9Tm9uZSk6CisgICAgICAgIHNlbGYuY21kID0gY21kCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCJDb21tYW5kICclcycgdGltZWQgb3V0IGFmdGVyICVzIHNlY29uZHMiICUKKyAgICAgICAgICAgICAgICAoc2VsZi5jbWQsIHNlbGYudGltZW91dCkpCisKKwogaWYgbXN3aW5kb3dzOgogICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgaW1wb3J0IF9zdWJwcm9jZXNzCisgICAgaW1wb3J0IF93aW5hcGkKICAgICBjbGFzcyBTVEFSVFVQSU5GTzoKICAgICAgICAgZHdGbGFncyA9IDAKICAgICAgICAgaFN0ZElucHV0ID0gTm9uZQpAQCAtMzc3LDUzICs0MDEsNDkgQEAKIGVsc2U6CiAgICAgaW1wb3J0IHNlbGVjdAogICAgIF9oYXNfcG9sbCA9IGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpCi0gICAgaW1wb3J0IGZjbnRsCi0gICAgaW1wb3J0IHBpY2tsZQotCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgX3Bvc2l4c3VicHJvY2VzcwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgX3Bvc2l4c3VicHJvY2VzcyA9IE5vbmUKLSAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIF9wb3NpeHN1YnByb2Nlc3MgbW9kdWxlIGlzIG5vdCBiZWluZyB1c2VkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgIkNoaWxkIHByb2Nlc3MgcmVsaWFiaWxpdHkgbWF5IHN1ZmZlciBpZiB5b3VyICIKLSAgICAgICAgICAgICAgICAgICAgICAicHJvZ3JhbSB1c2VzIHRocmVhZHMuIiwgUnVudGltZVdhcm5pbmcpCisgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKKyAgICBfY3JlYXRlX3BpcGUgPSBfcG9zaXhzdWJwcm9jZXNzLmNsb2V4ZWNfcGlwZQogCiAgICAgIyBXaGVuIHNlbGVjdCBvciBwb2xsIGhhcyBpbmRpY2F0ZWQgdGhhdCB0aGUgZmlsZSBpcyB3cml0YWJsZSwKICAgICAjIHdlIGNhbiB3cml0ZSB1cCB0byBfUElQRV9CVUYgYnl0ZXMgd2l0aG91dCByaXNrIG9mIGJsb2NraW5nLgogICAgICMgUE9TSVggZGVmaW5lcyBQSVBFX0JVRiBhcyA+PSA1MTIuCiAgICAgX1BJUEVfQlVGID0gZ2V0YXR0cihzZWxlY3QsICdQSVBFX0JVRicsIDUxMikKIAotICAgIF9GRF9DTE9FWEVDID0gZ2V0YXR0cihmY250bCwgJ0ZEX0NMT0VYRUMnLCAxKQotCi0gICAgZGVmIF9zZXRfY2xvZXhlYyhmZCwgY2xvZXhlYyk6Ci0gICAgICAgIG9sZCA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZEKQotICAgICAgICBpZiBjbG9leGVjOgotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkQsIG9sZCB8IF9GRF9DTE9FWEVDKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkQsIG9sZCAmIH5fRkRfQ0xPRVhFQykKLQotICAgIGlmIF9wb3NpeHN1YnByb2Nlc3M6Ci0gICAgICAgIF9jcmVhdGVfcGlwZSA9IF9wb3NpeHN1YnByb2Nlc3MuY2xvZXhlY19waXBlCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9jcmVhdGVfcGlwZSgpOgotICAgICAgICAgICAgZmRzID0gb3MucGlwZSgpCi0gICAgICAgICAgICBfc2V0X2Nsb2V4ZWMoZmRzWzBdLCBUcnVlKQotICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkc1sxXSwgVHJ1ZSkKLSAgICAgICAgICAgIHJldHVybiBmZHMKIAogX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCi0gICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciJdCisgICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIl0KIAogaWYgbXN3aW5kb3dzOgotICAgIGZyb20gX3N1YnByb2Nlc3MgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJURl9VU0VTVERIQU5ETEVTLCBTVEFSVEZfVVNFU0hPV1dJTkRPVykKKyAgICBmcm9tIF93aW5hcGkgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJURl9VU0VTVERIQU5ETEVTLCBTVEFSVEZfVVNFU0hPV1dJTkRPVykKIAogICAgIF9fYWxsX18uZXh0ZW5kKFsiQ1JFQVRFX05FV19DT05TT0xFIiwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfSU5QVVRfSEFORExFIiwgIlNURF9PVVRQVVRfSEFORExFIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCiAgICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyJdKQorCisgICAgY2xhc3MgSGFuZGxlKGludCk6CisgICAgICAgIGNsb3NlZCA9IEZhbHNlCisKKyAgICAgICAgZGVmIENsb3NlKHNlbGYsIENsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKHNlbGYpCisKKyAgICAgICAgZGVmIERldGFjaChzZWxmKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhbHJlYWR5IGNsb3NlZCIpCisKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuICJIYW5kbGUoJWQpIiAlIGludChzZWxmKQorCisgICAgICAgIF9fZGVsX18gPSBDbG9zZQorICAgICAgICBfX3N0cl9fID0gX19yZXByX18KKwogdHJ5OgogICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQogZXhjZXB0OgpAQCAtNDQ4LDI3ICs0NjgsNjMgQEAKIAogUElQRSA9IC0xCiBTVERPVVQgPSAtMgorREVWTlVMTCA9IC0zCiAKIAogZGVmIF9laW50cl9yZXRyeV9jYWxsKGZ1bmMsICphcmdzKToKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLSAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQogCiAKLWRlZiBjYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiJSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KLSAgICByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgorIyBYWFggVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIGFuZCB0aGUgdGVzdCBzdWl0ZSwKKyMgYnV0IGl0J3MgaGVyZSBzbyB0aGF0IGl0IGNhbiBiZSBpbXBvcnRlZCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0CisjIHRocmVhZHMuCisKK2RlZiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CisgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCisgICAgZmxhZ19vcHRfbWFwID0geworICAgICAgICAnZGVidWcnOiAnZCcsCisgICAgICAgICMgJ2luc3BlY3QnOiAnaScsCisgICAgICAgICMgJ2ludGVyYWN0aXZlJzogJ2knLAorICAgICAgICAnb3B0aW1pemUnOiAnTycsCisgICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAorICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAorICAgICAgICAnbm9fc2l0ZSc6ICdTJywKKyAgICAgICAgJ2lnbm9yZV9lbnZpcm9ubWVudCc6ICdFJywKKyAgICAgICAgJ3ZlcmJvc2UnOiAndicsCisgICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAorICAgICAgICAncXVpZXQnOiAncScsCisgICAgICAgICdoYXNoX3JhbmRvbWl6YXRpb24nOiAnUicsCisgICAgfQorICAgIGFyZ3MgPSBbXQorICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6CisgICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKKyAgICAgICAgaWYgdiA+IDA6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyBvcHQgKiB2KQorICAgIGZvciBvcHQgaW4gc3lzLndhcm5vcHRpb25zOgorICAgICAgICBhcmdzLmFwcGVuZCgnLVcnICsgb3B0KQorICAgIHJldHVybiBhcmdzCisKKworZGVmIGNhbGwoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlIG9yCisgICAgdGltZW91dCwgdGhlbiByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgogCiAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CiAKICAgICByZXRjb2RlID0gY2FsbChbImxzIiwgIi1sIl0pCiAgICAgIiIiCi0gICAgcmV0dXJuIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKS53YWl0KCkKKyAgICB3aXRoIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKSBhcyBwOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcC53YWl0KHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcC5raWxsKCkKKyAgICAgICAgICAgIHAud2FpdCgpCisgICAgICAgICAgICByYWlzZQogCiAKIGRlZiBjaGVja19jYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKQEAgLTQ3Nyw3ICs1MzMsNyBAQAogICAgIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZSBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUKICAgICByZXR1cm4gY29kZSBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCiAKLSAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKKyAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIGNhbGwgZnVuY3Rpb24uICBFeGFtcGxlOgogCiAgICAgY2hlY2tfY2FsbChbImxzIiwgIi1sIl0pCiAgICAgIiIiCkBAIC00OTAsNyArNTQ2LDcgQEAKICAgICByZXR1cm4gMAogCiAKLWRlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgKiprd2FyZ3MpOgorZGVmIGNoZWNrX291dHB1dCgqcG9wZW5hcmdzLCB0aW1lb3V0PU5vbmUsICoqa3dhcmdzKToKICAgICByIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCiAKICAgICBJZiB0aGUgZXhpdCBjb2RlIHdhcyBub24temVybyBpdCByYWlzZXMgYSBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUKQEAgLTUxMiwxNCArNTY4LDIwIEBACiAgICAgIiIiCiAgICAgaWYgJ3N0ZG91dCcgaW4ga3dhcmdzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQotICAgIHByb2Nlc3MgPSBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpCi0gICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCi0gICAgaWYgcmV0Y29kZToKLSAgICAgICAgY21kID0ga3dhcmdzLmdldCgiYXJncyIpCi0gICAgICAgIGlmIGNtZCBpcyBOb25lOgotICAgICAgICAgICAgY21kID0gcG9wZW5hcmdzWzBdCi0gICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBjbWQsIG91dHB1dD1vdXRwdXQpCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpIGFzIHByb2Nlc3M6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUodGltZW91dD10aW1lb3V0KQorICAgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChwcm9jZXNzLmFyZ3MsIHRpbWVvdXQsIG91dHB1dD1vdXRwdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCisgICAgICAgIGlmIHJldGNvZGU6CisgICAgICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcHJvY2Vzcy5hcmdzLCBvdXRwdXQ9b3V0cHV0KQogICAgIHJldHVybiBvdXRwdXQKIAogCkBAIC02MTQsMTEgKzY3NiwxOSBAQAogICAgID4+PiBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dCgnL2Jpbi9qdW5rJykKICAgICAoMjU2LCAnc2g6IC9iaW4vanVuazogbm90IGZvdW5kJykKICAgICAiIiIKLSAgICBwaXBlID0gb3MucG9wZW4oJ3sgJyArIGNtZCArICc7IH0gMj4mMScsICdyJykKLSAgICB0ZXh0ID0gcGlwZS5yZWFkKCkKLSAgICBzdHMgPSBwaXBlLmNsb3NlKCkKLSAgICBpZiBzdHMgaXMgTm9uZTogc3RzID0gMAotICAgIGlmIHRleHRbLTE6XSA9PSAnXG4nOiB0ZXh0ID0gdGV4dFs6LTFdCisgICAgd2l0aCBvcy5wb3BlbigneyAnICsgY21kICsgJzsgfSAyPiYxJywgJ3InKSBhcyBwaXBlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXh0ID0gcGlwZS5yZWFkKCkKKyAgICAgICAgICAgIHN0cyA9IHBpcGUuY2xvc2UoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jZXNzID0gcGlwZS5fcHJvYworICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKKyAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICByYWlzZQorICAgIGlmIHN0cyBpcyBOb25lOgorICAgICAgICBzdHMgPSAwCisgICAgaWYgdGV4dFstMTpdID09ICdcbic6CisgICAgICAgIHRleHQgPSB0ZXh0WzotMV0KICAgICByZXR1cm4gc3RzLCB0ZXh0CiAKIApAQCAtNjUwLDYgKzcyMCw4IEBACiAgICAgICAgIF9jbGVhbnVwKCkKIAogICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5faW5wdXQgPSBOb25lCisgICAgICAgIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKICAgICAgICAgICAgIGJ1ZnNpemUgPSAwICAjIFJlc3RvcmUgZGVmYXVsdAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWZzaXplLCBpbnQpOgpAQCAtNjg0LDYgKzc1Niw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY3JlYXRpb25mbGFncyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybXMiKQogCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKICAgICAgICAgc2VsZi5zdGRpbiA9IE5vbmUKICAgICAgICAgc2VsZi5zdGRvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuc3RkZXJyID0gTm9uZQpAQCAtNzI0LDcgKzc5Nyw3IEBACiAKICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgorICAgICAgICAgICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzOgogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkKICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8ub3BlbihjMnByZWFkLCAncmInLCBidWZzaXplKQpAQCAtNzM3LDcgKzgxMCw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9jaGlsZChhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLApAQCAtNzk4LDE5ICs4NzEsMjggQEAKICAgICAgICAgICAgICMgQ2hpbGQgaXMgc3RpbGwgcnVubmluZywga2VlcCB1cyBhbGl2ZSB1bnRpbCB3ZSBjYW4gd2FpdCBvbiBpdC4KICAgICAgICAgICAgIF9hY3RpdmUuYXBwZW5kKHNlbGYpCiAKKyAgICBkZWYgX2dldF9kZXZudWxsKHNlbGYpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgIHNlbGYuX2Rldm51bGwgPSBvcy5vcGVuKG9zLmRldm51bGwsIG9zLk9fUkRXUikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rldm51bGwKIAotICAgIGRlZiBjb21tdW5pY2F0ZShzZWxmLCBpbnB1dD1Ob25lKToKKyAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbQogICAgICAgICBzdGRvdXQgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yCi0gICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhCi0gICAgICAgIHN0cmluZyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCisgICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZQorICAgICAgICBieXRlcyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCiAgICAgICAgIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KIAogICAgICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLiIiIgogCi0gICAgICAgICMgT3B0aW1pemF0aW9uOiBJZiB3ZSBhcmUgb25seSB1c2luZyBvbmUgcGlwZSwgb3Igbm8gcGlwZSBhdAotICAgICAgICAjIGFsbCwgdXNpbmcgc2VsZWN0KCkgb3IgdGhyZWFkcyBpcyB1bm5lY2Vzc2FyeS4KLSAgICAgICAgaWYgW3NlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycl0uY291bnQoTm9uZSkgPj0gMjoKKyAgICAgICAgaWYgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZCBpbnB1dDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzZW5kIGlucHV0IGFmdGVyIHN0YXJ0aW5nIGNvbW11bmljYXRpb24iKQorCisgICAgICAgICMgT3B0aW1pemF0aW9uOiBJZiB3ZSBhcmUgbm90IHdvcnJpZWQgYWJvdXQgdGltZW91dHMsIHdlIGhhdmVuJ3QKKyAgICAgICAgIyBzdGFydGVkIGNvbW11bmljYXRpbmcsIGFuZCB3ZSBoYXZlIG9uZSBvciB6ZXJvIHBpcGVzLCB1c2luZyBzZWxlY3QoKQorICAgICAgICAjIG9yIHRocmVhZHMgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgIGlmICh0aW1lb3V0IGlzIE5vbmUgYW5kIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgYW5kCisgICAgICAgICAgICBbc2VsZi5zdGRpbiwgc2VsZi5zdGRvdXQsIHNlbGYuc3RkZXJyXS5jb3VudChOb25lKSA+PSAyKToKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUKICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CkBAIC04MjgsMTUgKzkxMCw0MiBAQAogICAgICAgICAgICAgICAgIHN0ZGVyciA9IF9laW50cl9yZXRyeV9jYWxsKHNlbGYuc3RkZXJyLnJlYWQpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi53YWl0KCkKLSAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQogCi0gICAgICAgIHJldHVybiBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlKGlucHV0LCBlbmR0aW1lLCB0aW1lb3V0KQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBUcnVlCisKKyAgICAgICAgICAgIHN0cyA9IHNlbGYud2FpdCh0aW1lb3V0PXNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpKQorCisgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKIAogICAgIGRlZiBwb2xsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcG9sbCgpCiAKIAorICAgIGRlZiBfcmVtYWluaW5nX3RpbWUoc2VsZiwgZW5kdGltZSk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBfY29tbXVuaWNhdGUgd2hlbiBjb21wdXRpbmcgdGltZW91dHMuIiIiCisgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gZW5kdGltZSAtIF90aW1lKCkKKworCisgICAgZGVmIF9jaGVja190aW1lb3V0KHNlbGYsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBjaGVja2luZyBpZiBhIHRpbWVvdXQgaGFzIGV4cGlyZWQuIiIiCisgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBfdGltZSgpID4gZW5kdGltZToKKyAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorCisKICAgICBpZiBtc3dpbmRvd3M6CiAgICAgICAgICMKICAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKQEAgLTg1MywxMSArOTYyLDE2IEBACiAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IC0xLCAtMQogCiAgICAgICAgICAgICBpZiBzdGRpbiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX0lOUFVUX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBwMmNyZWFkID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfSU5QVVRfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIHAyY3JlYWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBwMmNyZWFkID0gSGFuZGxlKHAyY3JlYWQpCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gUElQRToKLSAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gSGFuZGxlKHAyY3JlYWQpLCBIYW5kbGUocDJjd3JpdGUpCisgICAgICAgICAgICBlbGlmIHN0ZGluID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgcDJjcmVhZCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGluKQogICAgICAgICAgICAgZWxzZToKQEAgLTg2NiwxMSArOTgwLDE2IEBACiAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShwMmNyZWFkKQogCiAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IF9zdWJwcm9jZXNzLkdldFN0ZEhhbmRsZShfc3VicHJvY2Vzcy5TVERfT1VUUFVUX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX09VVFBVVF9IQU5ETEUpCiAgICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgXywgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIF8sIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlID0gSGFuZGxlKGMycHdyaXRlKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKF8pCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgotICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUgPSBIYW5kbGUoYzJwcmVhZCksIEhhbmRsZShjMnB3cml0ZSkKKyAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZG91dCkKICAgICAgICAgICAgIGVsc2U6CkBAIC04NzksMTMgKzk5OCwxOCBAQAogICAgICAgICAgICAgYzJwd3JpdGUgPSBzZWxmLl9tYWtlX2luaGVyaXRhYmxlKGMycHdyaXRlKQogCiAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkdldFN0ZEhhbmRsZShfc3VicHJvY2Vzcy5TVERfRVJST1JfSEFORExFKQorICAgICAgICAgICAgICAgIGVycndyaXRlID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfRVJST1JfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIF8sIGVycndyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IEhhbmRsZShlcnJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShfKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gUElQRToKLSAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gSGFuZGxlKGVycnJlYWQpLCBIYW5kbGUoZXJyd3JpdGUpCiAgICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBjMnB3cml0ZQorICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc3RkZXJyKQogICAgICAgICAgICAgZWxzZToKQEAgLTkwMCwyMCArMTAyNCwyMiBAQAogCiAgICAgICAgIGRlZiBfbWFrZV9pbmhlcml0YWJsZShzZWxmLCBoYW5kbGUpOgogICAgICAgICAgICAgIiIiUmV0dXJuIGEgZHVwbGljYXRlIG9mIGhhbmRsZSwgd2hpY2ggaXMgaW5oZXJpdGFibGUiIiIKLSAgICAgICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoX3N1YnByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MpCisgICAgICAgICAgICBoID0gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCAxLAorICAgICAgICAgICAgICAgIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQorICAgICAgICAgICAgcmV0dXJuIEhhbmRsZShoKQogCiAKICAgICAgICAgZGVmIF9maW5kX3c5eHBvcGVuKHNlbGYpOgogICAgICAgICAgICAgIiIiRmluZCBhbmQgcmV0dXJuIGFic29sdXQgcGF0aCB0byB3OXhwb3Blbi5leGUiIiIKICAgICAgICAgICAgIHc5eHBvcGVuID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfc3VicHJvY2Vzcy5HZXRNb2R1bGVGaWxlTmFtZSgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF93aW5hcGkuR2V0TW9kdWxlRmlsZU5hbWUoMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInc5eHBvcGVuLmV4ZSIpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgogICAgICAgICAgICAgICAgICMgRWVlayAtIGZpbGUtbm90LWZvdW5kIC0gcG9zc2libHkgYW4gZW1iZWRkaW5nCiAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gLSBzZWUgaWYgd2UgY2FuIGxvY2F0ZSBpdCBpbiBzeXMuZXhlY19wcmVmaXgKLSAgICAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWNfcHJlZml4KSwKKyAgICAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmJhc2VfZXhlY19wcmVmaXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh3OXhwb3Blbik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGxvY2F0ZSB3OXhwb3Blbi5leGUsIHdoaWNoIGlzICIKQEAgLTkyMyw3ICsxMDQ5LDcgQEAKIAogCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCkBAIC05NDAsMTcgKzEwNjYsMTcgQEAKICAgICAgICAgICAgIGlmIHN0YXJ0dXBpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8gPSBTVEFSVFVQSU5GTygpCiAgICAgICAgICAgICBpZiAtMSBub3QgaW4gKHAyY3JlYWQsIGMycHdyaXRlLCBlcnJ3cml0ZSk6Ci0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfc3VicHJvY2Vzcy5TVEFSVEZfVVNFU1RESEFORExFUworICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU1RESEFORExFUwogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmhTdGRJbnB1dCA9IHAyY3JlYWQKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkT3V0cHV0ID0gYzJwd3JpdGUKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkRXJyb3IgPSBlcnJ3cml0ZQogCiAgICAgICAgICAgICBpZiBzaGVsbDoKLSAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5kd0ZsYWdzIHw9IF9zdWJwcm9jZXNzLlNUQVJURl9VU0VTSE9XV0lORE9XCi0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8ud1Nob3dXaW5kb3cgPSBfc3VicHJvY2Vzcy5TV19ISURFCisgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfd2luYXBpLlNUQVJURl9VU0VTSE9XV0lORE9XCisgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8ud1Nob3dXaW5kb3cgPSBfd2luYXBpLlNXX0hJREUKICAgICAgICAgICAgICAgICBjb21zcGVjID0gb3MuZW52aXJvbi5nZXQoIkNPTVNQRUMiLCAiY21kLmV4ZSIpCiAgICAgICAgICAgICAgICAgYXJncyA9ICd7fSAvYyAie30iJy5mb3JtYXQgKGNvbXNwZWMsIGFyZ3MpCi0gICAgICAgICAgICAgICAgaWYgKF9zdWJwcm9jZXNzLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCisgICAgICAgICAgICAgICAgaWYgKF93aW5hcGkuR2V0VmVyc2lvbigpID49IDB4ODAwMDAwMDAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoY29tc3BlYykubG93ZXIoKSA9PSAiY29tbWFuZC5jb20iKToKICAgICAgICAgICAgICAgICAgICAgIyBXaW45eCwgb3IgdXNpbmcgY29tbWFuZC5jb20gb24gTlQuIFdlIG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAgIyB1c2UgdGhlIHc5eHBvcGVuIGludGVybWVkaWF0ZSBwcm9ncmFtLiBGb3IgbW9yZQpAQCAtOTY0LDExICsxMDkwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICMgdXNlIGF0IHh4eCIgYW5kIGEgaG9wZWZ1bCB3YXJuaW5nIGFib3V0IHRoZQogICAgICAgICAgICAgICAgICAgICAjIHN0YWJpbGl0eSBvZiB5b3VyIHN5c3RlbS4gIENvc3QgaXMgQ3RybCtDIHdvbid0CiAgICAgICAgICAgICAgICAgICAgICMga2lsbCBjaGlsZHJlbi4KLSAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25mbGFncyB8PSBfc3VicHJvY2Vzcy5DUkVBVEVfTkVXX0NPTlNPTEUKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25mbGFncyB8PSBfd2luYXBpLkNSRUFURV9ORVdfQ09OU09MRQogCiAgICAgICAgICAgICAjIFN0YXJ0IHRoZSBwcm9jZXNzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF9zdWJwcm9jZXNzLkNyZWF0ZVByb2Nlc3MoZXhlY3V0YWJsZSwgYXJncywKKyAgICAgICAgICAgICAgICBocCwgaHQsIHBpZCwgdGlkID0gX3dpbmFwaS5DcmVhdGVQcm9jZXNzKGV4ZWN1dGFibGUsIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gc3BlY2lhbCBzZWN1cml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQobm90IGNsb3NlX2ZkcyksCkBAIC05OTUsMTcgKzExMjEsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgYzJwd3JpdGUuQ2xvc2UoKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZS5DbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZGV2bnVsbCkKIAogICAgICAgICAgICAgIyBSZXRhaW4gdGhlIHByb2Nlc3MgaGFuZGxlLCBidXQgY2xvc2UgdGhlIHRocmVhZCBoYW5kbGUKICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gSGFuZGxlKGhwKQogICAgICAgICAgICAgc2VsZi5waWQgPSBwaWQKLSAgICAgICAgICAgIGh0LkNsb3NlKCkKKyAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCiAKICAgICAgICAgZGVmIF9pbnRlcm5hbF9wb2xsKHNlbGYsIF9kZWFkc3RhdGU9Tm9uZSwKLSAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0LAotICAgICAgICAgICAgICAgIF9XQUlUX09CSkVDVF8wPV9zdWJwcm9jZXNzLldBSVRfT0JKRUNUXzAsCi0gICAgICAgICAgICAgICAgX0dldEV4aXRDb2RlUHJvY2Vzcz1fc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3MpOgorICAgICAgICAgICAgICAgIF9XYWl0Rm9yU2luZ2xlT2JqZWN0PV93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdCwKKyAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fd2luYXBpLldBSVRfT0JKRUNUXzAsCisgICAgICAgICAgICAgICAgX0dldEV4aXRDb2RlUHJvY2Vzcz1fd2luYXBpLkdldEV4aXRDb2RlUHJvY2Vzcyk6CiAgICAgICAgICAgICAiIiJDaGVjayBpZiBjaGlsZCBwcm9jZXNzIGhhcyB0ZXJtaW5hdGVkLiAgUmV0dXJucyByZXR1cm5jb2RlCiAgICAgICAgICAgICBhdHRyaWJ1dGUuCiAKQEAgLTEwMTksMTMgKzExNDcsMjEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiB3YWl0KHNlbGYpOgorICAgICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUsIGVuZHRpbWU9Tm9uZSk6CiAgICAgICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLiIiIgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcyA9IF93aW5hcGkuSU5GSU5JVEUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBpbnQodGltZW91dCAqIDEwMDApCiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYuX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zdWJwcm9jZXNzLklORklOSVRFKQotICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gX3dpbmFwaS5XYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYuX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcykKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQgPT0gX3dpbmFwaS5XQUlUX1RJTUVPVVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgdGltZW91dCkKKyAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIApAQCAtMTAzNCwyMiArMTE3MCwyMyBAQAogICAgICAgICAgICAgZmguY2xvc2UoKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCi0gICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCi0KLSAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHN0ZG91dCA9IFtdCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZG91dCwgc3Rkb3V0KSkKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHN0ZGVyciA9IFtdCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZGVyciwgc3RkZXJyKSkKLSAgICAgICAgICAgICAgICBzdGRlcnJfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICBzdGRlcnJfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgICMgU3RhcnQgcmVhZGVyIHRocmVhZHMgZmVlZGluZyBpbnRvIGEgbGlzdCBoYW5naW5nIG9mZiBvZiB0aGlzCisgICAgICAgICAgICAjIG9iamVjdCwgdW5sZXNzIHRoZXkndmUgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQuCisgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBhbmQgbm90IGhhc2F0dHIoc2VsZiwgIl9zdGRvdXRfYnVmZiIpOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuc3Rkb3V0LCBzZWxmLl9zdGRvdXRfYnVmZikpCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3RkZXJyX2J1ZmYiKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZGVyciwgc2VsZi5fc3RkZXJyX2J1ZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKICAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKQEAgLTEwNjAsMTAgKzExOTcsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQogCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSByZWFkZXIgdGhyZWFkcywgb3IgdGltZSBvdXQuICBJZiB3ZSB0aW1lIG91dCwgdGhlCisgICAgICAgICAgICAjIHRocmVhZHMgcmVtYWluIHJlYWRpbmcgYW5kIHRoZSBmZHMgbGVmdCBvcGVuIGluIGNhc2UgdGhlIHVzZXIKKyAgICAgICAgICAgICMgY2FsbHMgY29tbXVuaWNhdGUgYWdhaW4uCisgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dF90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisgICAgICAgICAgICBpZiBzZWxmLnN0ZGVyciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisKKyAgICAgICAgICAgICMgQ29sbGVjdCB0aGUgb3V0cHV0IGZyb20gYW5kIGNsb3NlIGJvdGggcGlwZXMsIG5vdyB0aGF0IHdlIGtub3cKKyAgICAgICAgICAgICMgYm90aCBoYXZlIGJlZW4gcmVhZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICBzdGRvdXQgPSBOb25lCisgICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLmpvaW4oKQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3N0ZG91dF9idWZmCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9zdGRlcnJfYnVmZgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKIAogICAgICAgICAgICAgIyBBbGwgZGF0YSBleGNoYW5nZWQuICBUcmFuc2xhdGUgbGlzdHMgaW50byBzdHJpbmdzLgogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgpAQCAtMTA3MSw3ICsxMjI2LDYgQEAKICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzdGRlcnJbMF0KIAotICAgICAgICAgICAgc2VsZi53YWl0KCkKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKICAgICAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CkBAIC0xMDkwLDE0ICsxMjQ0LDEyIEBACiAgICAgICAgICAgICAiIiJUZXJtaW5hdGVzIHRoZSBwcm9jZXNzCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5UZXJtaW5hdGVQcm9jZXNzKHNlbGYuX2hhbmRsZSwgMSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKHNlbGYuX2hhbmRsZSwgMSkKKyAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBFUlJPUl9BQ0NFU1NfREVOSUVEICh3aW5lcnJvciA1KSBpcyByZWNlaXZlZCB3aGVuIHRoZQogICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbHJlYWR5IGRpZWQuCi0gICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciAhPSA1OgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIHJjID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKLSAgICAgICAgICAgICAgICBpZiByYyA9PSBfc3VicHJvY2Vzcy5TVElMTF9BQ1RJVkU6CisgICAgICAgICAgICAgICAgcmMgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgaWYgcmMgPT0gX3dpbmFwaS5TVElMTF9BQ1RJVkU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gcmMKIApAQCAtMTExOSw2ICsxMjcxLDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQorICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IHN0ZGluCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTEyOSw2ICsxMjgzLDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgogICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX2NyZWF0ZV9waXBlKCkKKyAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3Rkb3V0LCBpbnQpOgogICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc3Rkb3V0CiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE0MSw2ICsxMjk3LDggQEAKICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9jcmVhdGVfcGlwZSgpCiAgICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBjMnB3cml0ZQorICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IHNlbGYuX2dldF9kZXZudWxsKCkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRlcnIsIGludCk6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzdGRlcnIKICAgICAgICAgICAgIGVsc2U6CkBAIC0xMTYzLDcgKzEzMjEsNyBAQAogCiAKICAgICAgICAgZGVmIF9leGVjdXRlX2NoaWxkKHNlbGYsIGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8sIGNyZWF0aW9uZmxhZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKQEAgLTExNzEsNyArMTMyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uKToKICAgICAgICAgICAgICIiIkV4ZWN1dGUgcHJvZ3JhbSAoUE9TSVggdmVyc2lvbikiIiIKIAotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCBzdHIpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGFyZ3MgPSBbYXJnc10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXJncyA9IGxpc3QoYXJncykKQEAgLTExOTEsMTUzICsxMzQ5LDM0IEBACiAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKKyAgICAgICAgICAgICAgICAgICAgIyBtYWxsb2Mgb3IgZnJlZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICAjIHBvdGVudGlhbCBkZWFkbG9ja3MsIHRodXMgd2UgZG8gYWxsIHRoaXMgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQogCi0gICAgICAgICAgICAgICAgICAgIGlmIF9wb3NpeHN1YnByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdlIG11c3QgYXZvaWQgY29tcGxleCB3b3JrIHRoYXQgY291bGQgaW52b2x2ZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWxsb2Mgb3IgZnJlZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBhdm9pZAotICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBwYXNzIGl0IHRvIGZvcmtfZXhlYygpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IFtvcy5mc2VuY29kZShrKSArIGInPScgKyBvcy5mc2VuY29kZSh2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGVudi5pdGVtcygpXQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IE5vbmUgICMgVXNlIGV4ZWN2IGluc3RlYWQgb2YgZXhlY3ZlLgotICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmZzZW5jb2RlKGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gKGV4ZWN1dGFibGUsKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygb3MuX2V4ZWN2cGUoKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSB0dXBsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKGRpciksIGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gb3MuZ2V0X2V4ZWNfcGF0aChlbnYpKQotICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gX3Bvc2l4c3VicHJvY2Vzcy5mb3JrX2V4ZWMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzLCBzb3J0ZWQoZmRzX3RvX2tlZXApLCBjd2QsIGVudl9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwgYzJwcmVhZCwgYzJwd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscywgc3RhcnRfbmV3X3Nlc3Npb24sIHByZWV4ZWNfZm4pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IFtvcy5mc2VuY29kZShrKSArIGInPScgKyBvcy5mc2VuY29kZSh2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCldCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uOiBJdCBpcyBub3QgdGhyZWFkIHNhZmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaW1wbGVtZW50YXRpb24gbWF5IGRlYWRsb2NrIGluIHRoZSBjaGlsZCBpZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhcmVudCBwcm9jZXNzIGhhcyBhbnkgb3RoZXIgdGhyZWFkcyBydW5uaW5nLgotCi0gICAgICAgICAgICAgICAgICAgICAgICBnY193YXNfZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUgZ2MgdG8gYXZvaWQgYnVnIHdoZXJlIGdjIC0+IGZpbGVfZGVhbGxvYyAtPgotICAgICAgICAgICAgICAgICAgICAgICAgIyB3cml0ZSB0byBzdGRlcnIgLT4gaGFuZy4gIFNlZSBpc3N1ZTEzMzYKLSAgICAgICAgICAgICAgICAgICAgICAgIGdjLmRpc2FibGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZ2Nfd2FzX2VuYWJsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBpZCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkX3ByZWV4ZWMgPSBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnQncyBwaXBlIGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShwMmN3cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGMycHJlYWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJyZWFkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJwaXBlX3JlYWQpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXaGVuIGR1cGluZyBmZHMsIGlmIHRoZXJlIGFyaXNlcyBhIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoZXJlIG9uZSBvZiB0aGUgZmRzIGlzIGVpdGhlciAwLCAxIG9yIDIsIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgcG9zc2libGUgdGhhdCBpdCBpcyBvdmVyd3JpdHRlbiAoIzEyNjA3KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlID0gb3MuZHVwKGMycHdyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSA9PSAwIG9yIGVycndyaXRlID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG9zLmR1cChlcnJ3cml0ZSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIER1cCBmZHMgZm9yIGNoaWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBfZHVwMihhLCBiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZHVwMigpIHJlbW92ZXMgdGhlIENMT0VYRUMgZmxhZyBidXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgbXVzdCBkbyBpdCBvdXJzZWx2ZXMgaWYgZHVwMigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdvdWxkIGJlIGEgbm8tb3AgKGlzc3VlICMxMDgwNikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhID09IGI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NldF9jbG9leGVjKGEsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBhICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmR1cDIoYSwgYikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2R1cDIocDJjcmVhZCwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2R1cDIoYzJwd3JpdGUsIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKGVycndyaXRlLCAyKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2UgcGlwZSBmZHMuICBNYWtlIHN1cmUgd2UgZG9uJ3QgY2xvc2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2FtZSBmZCBtb3JlIHRoYW4gb25jZSwgb3Igc3RhbmRhcmQgZmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSBzZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmQgaW4gW3AyY3JlYWQsIGMycHdyaXRlLCBlcnJ3cml0ZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmZCA+IDIgYW5kIGZkIG5vdCBpbiBjbG9zZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkLmFkZChmZCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIGFsbCBvdGhlciBmZHMsIGlmIGFza2VkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbG9zZV9mZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcCA9IHNldChwYXNzX2ZkcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwLmFkZChlcnJwaXBlX3dyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZmRzKGZkc190b19rZWVwKQotCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3dkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2hkaXIoY3dkKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIGNvcHkgb2YgUHl0aG9uL3B5dGhvbnJ1bi5jCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgX1B5X1Jlc3RvcmVTaWduYWxzKCkuICBJZiB0aGF0IHdlcmUgZXhwb3NlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFzIGEgc3lzLl9weV9yZXN0b3Jlc2lnbmFscyBmdW5jIGl0IHdvdWxkIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmV0dGVyLi4gYnV0IHRoaXMgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpc24ndCBsaWtlbHkgdG8gYmUgdXNlZCBtdWNoIGFueW1vcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3RvcmVfc2lnbmFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbHMgPSAoJ1NJR1BJUEUnLCAnU0lHWEZaJywgJ1NJR1hGU1onKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHNpZyBpbiBzaWduYWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2lnbmFsLCBzaWcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKGdldGF0dHIoc2lnbmFsLCBzaWcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5TSUdfREZMKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXJ0X25ld19zZXNzaW9uIGFuZCBoYXNhdHRyKG9zLCAnc2V0c2lkJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXRzaWQoKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRfcHJlZXhlYyA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJlZXhlY19mbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWV4ZWNfZm4oKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudiBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZwKGV4ZWN1dGFibGUsIGFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5leGVjdnBlKGV4ZWN1dGFibGUsIGFyZ3MsIGVudikKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSA9IHN5cy5leGNfaW5mbygpWzoyXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfdmFsdWUsIE9TRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSA9IGV4Y192YWx1ZS5lcnJubwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0gPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhY2hlZF9wcmVleGVjOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y192YWx1ZSA9ICJub2V4ZWMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJyVzOiV4OiVzJyAlIChleGNfdHlwZS5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSwgZXhjX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKGVycm9ycz0ic3Vycm9nYXRlcGFzcyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZShlcnJwaXBlX3dyaXRlLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBNVVNUIG5vdCBhbGxvdyBhbnl0aGluZyBvZGQgaGFwcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFib3ZlIHRvIHByZXZlbnQgdXMgZnJvbSBleGl0aW5nIGJlbG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGV4aXRjb2RlIHdvbid0IGJlIHJlcG9ydGVkIHRvIGFwcGxpY2F0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc28gaXQgcmVhbGx5IGRvZXNuJ3QgbWF0dGVyIHdoYXQgd2UgcmV0dXJuLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDI1NSkKLQotICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdjX3dhc19lbmFibGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IE5vbmUgICMgVXNlIGV4ZWN2IGluc3RlYWQgb2YgZXhlY3ZlLgorICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZnNlbmNvZGUoZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gKGV4ZWN1dGFibGUsKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIG9zLl9leGVjdnBlKCkuCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSB0dXBsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuZnNlbmNvZGUoZGlyKSwgZXhlY3V0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIG9zLmdldF9leGVjX3BhdGgoZW52KSkKKyAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCisgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwLmFkZChlcnJwaXBlX3dyaXRlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IF9wb3NpeHN1YnByb2Nlc3MuZm9ya19leGVjKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHMsIHNvcnRlZChmZHNfdG9fa2VlcCksIGN3ZCwgZW52X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsIGMycHJlYWQsIGMycHdyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfcmVhZCwgZXJycGlwZV93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uLCBwcmVleGVjX2ZuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICMgYmUgc3VyZSB0aGUgRkQgaXMgY2xvc2VkIG5vIG1hdHRlciB3aGF0CiAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycnBpcGVfd3JpdGUpCkBAIC0xMzQ4LDYgKzEzODcsOCBAQAogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnB3cml0ZSkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSAhPSAtMSBhbmQgZXJycmVhZCAhPSAtMToKICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJyd3JpdGUpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZGV2bnVsbCkKIAogICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgZXhlYyB0byBmYWlsIG9yIHN1Y2NlZWQ7IHBvc3NpYmx5IHJhaXNpbmcgYW4KICAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbiAobGltaXRlZCBpbiBzaXplKQpAQCAtMTQzNywyOSArMTQ3OCw2MSBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKLSAgICAgICAgZGVmIHdhaXQoc2VsZik6CisgICAgICAgIGRlZiBfdHJ5X3dhaXQoc2VsZiwgd2FpdF9mbGFncyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IF9laW50cl9yZXRyeV9jYWxsKG9zLndhaXRwaWQsIHNlbGYucGlkLCB3YWl0X2ZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZworICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgorICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCisgICAgICAgICAgICAgICAgcGlkID0gc2VsZi5waWQKKyAgICAgICAgICAgICAgICBzdHMgPSAwCisgICAgICAgICAgICByZXR1cm4gKHBpZCwgc3RzKQorCisKKyAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lLCBlbmR0aW1lPU5vbmUpOgogICAgICAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4iIiIKLSAgICAgICAgICAgIHdoaWxlIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBfZWludHJfcmV0cnlfY2FsbChvcy53YWl0cGlkLCBzZWxmLnBpZCwgMCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCi0gICAgICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgotICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0aGUgc3RhdHVzLgotICAgICAgICAgICAgICAgICAgICBwaWQgPSBzZWxmLnBpZAotICAgICAgICAgICAgICAgICAgICBzdHMgPSAwCi0gICAgICAgICAgICAgICAgIyBDaGVjayB0aGUgcGlkIGFuZCBsb29wIGFzIHdhaXRwaWQgaGFzIGJlZW4ga25vd24gdG8gcmV0dXJuCi0gICAgICAgICAgICAgICAgIyAwIGV2ZW4gd2l0aG91dCBXTk9IQU5HIGluIG9kZCBzaXR1YXRpb25zLiAgaXNzdWUxNDM5Ni4KLSAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKKyAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCisKKyAgICAgICAgICAgICMgZW5kdGltZSBpcyBwcmVmZXJyZWQgdG8gdGltZW91dC4gIHRpbWVvdXQgaXMgb25seSB1c2VkIGZvcgorICAgICAgICAgICAgIyBwcmludGluZy4KKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmUgb3IgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgIGVsaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKworICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIEVudGVyIGEgYnVzeSBsb29wIGlmIHdlIGhhdmUgYSB0aW1lb3V0LiAgVGhpcyBidXN5IGxvb3Agd2FzCisgICAgICAgICAgICAgICAgIyBjcmliYmVkIGZyb20gTGliL3RocmVhZGluZy5weSBpbiBUaHJlYWQud2FpdCgpIGF0IHI3MTA2NS4KKyAgICAgICAgICAgICAgICBkZWxheSA9IDAuMDAwNSAjIDUwMCB1cyAtPiBpbml0aWFsIGRlbGF5IG9mIDEgbXMKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gc2VsZi5fdHJ5X3dhaXQob3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHBpZCA9PSBzZWxmLnBpZCBvciBwaWQgPT0gMAorICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgdGltZW91dCkKKyAgICAgICAgICAgICAgICAgICAgZGVsYXkgPSBtaW4oZGVsYXkgKiAyLCByZW1haW5pbmcsIC4wNSkKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChkZWxheSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBzZWxmLl90cnlfd2FpdCgwKQorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSBwaWQgYW5kIGxvb3AgYXMgd2FpdHBpZCBoYXMgYmVlbiBrbm93biB0byByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgIyAwIGV2ZW4gd2l0aG91dCBXTk9IQU5HIGluIG9kZCBzaXR1YXRpb25zLiAgaXNzdWUxNDM5Ni4KKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICBpZiBzZWxmLnN0ZGluOgorICAgICAgICBkZWYgX2NvbW11bmljYXRlKHNlbGYsIGlucHV0LCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKICAgICAgICAgICAgICAgICAjIEZsdXNoIHN0ZGlvIGJ1ZmZlci4gIFRoaXMgbWlnaHQgYmxvY2ssIGlmIHRoZSB1c2VyIGhhcwogICAgICAgICAgICAgICAgICMgYmVlbiB3cml0aW5nIHRvIC5zdGRpbiBpbiBhbiB1bmNvbnRyb2xsZWQgZmFzaGlvbi4KICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmZsdXNoKCkKQEAgLTE0NjcsOSArMTU0MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKIAogICAgICAgICAgICAgaWYgX2hhc19wb2xsOgotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9wb2xsKGlucHV0KQorICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9wb2xsKGlucHV0LCBlbmR0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChpbnB1dCkKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KGlucHV0LCBlbmR0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ190aW1lb3V0KQorCisgICAgICAgICAgICBzZWxmLndhaXQodGltZW91dD1zZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKIAogICAgICAgICAgICAgIyBBbGwgZGF0YSBleGNoYW5nZWQuICBUcmFuc2xhdGUgbGlzdHMgaW50byBzdHJpbmdzLgogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgpAQCAtMTQ4Nyw2NyArMTU2NCw5MiBAQAogICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZW5jb2RpbmcpCiAKLSAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3BvbGwoc2VsZiwgaW5wdXQpOgorICAgICAgICBkZWYgX3NhdmVfaW5wdXQoc2VsZiwgaW5wdXQpOgorICAgICAgICAgICAgIyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgX2NvbW11bmljYXRlX3dpdGhfKigpIG1ldGhvZHMKKyAgICAgICAgICAgICMgc28gdGhhdCBpZiB3ZSB0aW1lIG91dCB3aGlsZSBjb21tdW5pY2F0aW5nLCB3ZSBjYW4gY29udGludWUKKyAgICAgICAgICAgICMgc2VuZGluZyBpbnB1dCBpZiB3ZSByZXRyeS4KKyAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIHNlbGYuX2lucHV0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ID0gMAorICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gaW5wdXQKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaW5wdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcpCisKKworICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfcG9sbChzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUgIyBSZXR1cm4KICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUgIyBSZXR1cm4KLSAgICAgICAgICAgIGZkMmZpbGUgPSB7fQotICAgICAgICAgICAgZmQyb3V0cHV0ID0ge30KKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlID0ge30KIAogICAgICAgICAgICAgcG9sbGVyID0gc2VsZWN0LnBvbGwoKQogICAgICAgICAgICAgZGVmIHJlZ2lzdGVyX2FuZF9hcHBlbmQoZmlsZV9vYmosIGV2ZW50bWFzayk6CiAgICAgICAgICAgICAgICAgcG9sbGVyLnJlZ2lzdGVyKGZpbGVfb2JqLmZpbGVubygpLCBldmVudG1hc2spCi0gICAgICAgICAgICAgICAgZmQyZmlsZVtmaWxlX29iai5maWxlbm8oKV0gPSBmaWxlX29iagorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMmZpbGVbZmlsZV9vYmouZmlsZW5vKCldID0gZmlsZV9vYmoKIAogICAgICAgICAgICAgZGVmIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCk6CiAgICAgICAgICAgICAgICAgcG9sbGVyLnVucmVnaXN0ZXIoZmQpCi0gICAgICAgICAgICAgICAgZmQyZmlsZVtmZF0uY2xvc2UoKQotICAgICAgICAgICAgICAgIGZkMmZpbGUucG9wKGZkKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMmZpbGVbZmRdLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlLnBvcChmZCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfYW5kX2FwcGVuZChzZWxmLnN0ZGluLCBzZWxlY3QuUE9MTE9VVCkKIAorICAgICAgICAgICAgIyBPbmx5IGNyZWF0ZSB0aGlzIG1hcHBpbmcgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5LgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXQgPSB7fQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldID0gW10KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXSA9IFtdCisKICAgICAgICAgICAgIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSA9IHNlbGVjdC5QT0xMSU4gfCBzZWxlY3QuUE9MTFBSSQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfYW5kX2FwcGVuZChzZWxmLnN0ZG91dCwgc2VsZWN0X1BPTExJTl9QT0xMUFJJKQotICAgICAgICAgICAgICAgIGZkMm91dHB1dFtzZWxmLnN0ZG91dC5maWxlbm8oKV0gPSBzdGRvdXQgPSBbXQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZG91dC5maWxlbm8oKV0KICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRlcnIsIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSkKLSAgICAgICAgICAgICAgICBmZDJvdXRwdXRbc2VsZi5zdGRlcnIuZmlsZW5vKCldID0gc3RkZXJyID0gW10KKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRlcnIuZmlsZW5vKCldCiAKLSAgICAgICAgICAgIGlucHV0X29mZnNldCA9IDAKLSAgICAgICAgICAgIHdoaWxlIGZkMmZpbGU6CisgICAgICAgICAgICBzZWxmLl9zYXZlX2lucHV0KGlucHV0KQorCisgICAgICAgICAgICB3aGlsZSBzZWxmLl9mZDJmaWxlOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gcG9sbGVyLnBvbGwoKQorICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHBvbGxlci5wb2xsKHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gPT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3RpbWVvdXQoZW5kdGltZSwgb3JpZ190aW1lb3V0KQogCiAgICAgICAgICAgICAgICAgIyBYWFggUmV3cml0ZSB0aGVzZSB0byB1c2Ugbm9uLWJsb2NraW5nIEkvTyBvbiB0aGUKICAgICAgICAgICAgICAgICAjIGZpbGUgb2JqZWN0czsgdGhleSBhcmUgbm8gbG9uZ2VyIHVzaW5nIEMgc3RkaW8hCiAKICAgICAgICAgICAgICAgICBmb3IgZmQsIG1vZGUgaW4gcmVhZHk6CiAgICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgJiBzZWxlY3QuUE9MTE9VVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gaW5wdXRbaW5wdXRfb2Zmc2V0IDogaW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLl9pbnB1dFtzZWxmLl9pbnB1dF9vZmZzZXQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ICs9IG9zLndyaXRlKGZkLCBjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoZmQsIGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfb2Zmc2V0ID49IGxlbihpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wdXRfb2Zmc2V0ID49IGxlbihzZWxmLl9pbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBtb2RlICYgc2VsZWN0X1BPTExJTl9QT0xMUFJJOgogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoZmQsIDQwOTYpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCi0gICAgICAgICAgICAgICAgICAgICAgICBmZDJvdXRwdXRbZmRdLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W2ZkXS5hcHBlbmQoZGF0YSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGhhbmcgdXAgb3IgZXJyb3JzLgogICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQpAQCAtMTU1NSw2MSArMTY1Nyw4MyBAQAogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9zZWxlY3Qoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgcmVhZF9zZXQgPSBbXQotICAgICAgICAgICAgd3JpdGVfc2V0ID0gW10KKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldCA9IFtdCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldC5hcHBlbmQoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3Rkb3V0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRlcnIpCisKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfaW5wdXQoaW5wdXQpCisKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUgIyBSZXR1cm4KICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUgIyBSZXR1cm4KIAotICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6Ci0gICAgICAgICAgICAgICAgd3JpdGVfc2V0LmFwcGVuZChzZWxmLnN0ZGluKQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3Rkb3V0KQotICAgICAgICAgICAgICAgIHN0ZG91dCA9IFtdCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0X2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3N0ZG91dF9idWZmCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICByZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRlcnIpCi0gICAgICAgICAgICAgICAgc3RkZXJyID0gW10KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fc3RkZXJyX2J1ZmYKIAotICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ID0gMAotICAgICAgICAgICAgd2hpbGUgcmVhZF9zZXQgb3Igd3JpdGVfc2V0OgorICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmVhZF9zZXQgb3Igc2VsZi5fd3JpdGVfc2V0OgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJsaXN0LCB3bGlzdCwgeGxpc3QgPSBzZWxlY3Quc2VsZWN0KHJlYWRfc2V0LCB3cml0ZV9zZXQsIFtdKQorICAgICAgICAgICAgICAgICAgICAocmxpc3QsIHdsaXN0LCB4bGlzdCkgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KHNlbGYuX3JlYWRfc2V0LCBzZWxmLl93cml0ZV9zZXQsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAgICAgICMgQWNjb3JkaW5nIHRvIHRoZSBkb2NzLCByZXR1cm5pbmcgdGhyZWUgZW1wdHkgbGlzdHMgaW5kaWNhdGVzCisgICAgICAgICAgICAgICAgIyB0aGF0IHRoZSB0aW1lb3V0IGV4cGlyZWQuCisgICAgICAgICAgICAgICAgaWYgbm90IChybGlzdCBvciB3bGlzdCBvciB4bGlzdCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorICAgICAgICAgICAgICAgICMgV2UgYWxzbyBjaGVjayB3aGF0IHRpbWUgaXQgaXMgb3Vyc2VsdmVzIGZvciBnb29kIG1lYXN1cmUuCisgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQpCisKICAgICAgICAgICAgICAgICAjIFhYWCBSZXdyaXRlIHRoZXNlIHRvIHVzZSBub24tYmxvY2tpbmcgSS9PIG9uIHRoZQogICAgICAgICAgICAgICAgICMgZmlsZSBvYmplY3RzOyB0aGV5IGFyZSBubyBsb25nZXIgdXNpbmcgQyBzdGRpbyEKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gaW4gd2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rID0gaW5wdXRbaW5wdXRfb2Zmc2V0IDogaW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuX2lucHV0W3NlbGYuX2lucHV0X29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc193cml0dGVuID0gb3Mud3JpdGUoc2VsZi5zdGRpbi5maWxlbm8oKSwgY2h1bmspCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgKz0gYnl0ZXNfd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfb2Zmc2V0ID49IGxlbihpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gYnl0ZXNfd3JpdHRlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wdXRfb2Zmc2V0ID49IGxlbihzZWxmLl9pbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0IGluIHJsaXN0OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChzZWxmLnN0ZG91dC5maWxlbm8oKSwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRvdXQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRvdXQpCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5hcHBlbmQoZGF0YSkKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyIGluIHJsaXN0OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChzZWxmLnN0ZGVyci5maWxlbm8oKSwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRlcnIpCiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5hcHBlbmQoZGF0YSkKIAogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKQEAgLTE2MjksNjggKzE3NTMsMyBAQAogICAgICAgICAgICAgIiIiS2lsbCB0aGUgcHJvY2VzcyB3aXRoIFNJR0tJTEwKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5zZW5kX3NpZ25hbChzaWduYWwuU0lHS0lMTCkKLQotCi1kZWYgX2RlbW9fcG9zaXgoKToKLSAgICAjCi0gICAgIyBFeGFtcGxlIDE6IFNpbXBsZSByZWRpcmVjdGlvbjogR2V0IHByb2Nlc3MgbGlzdAotICAgICMKLSAgICBwbGlzdCA9IFBvcGVuKFsicHMiXSwgc3Rkb3V0PVBJUEUpLmNvbW11bmljYXRlKClbMF0KLSAgICBwcmludCgiUHJvY2VzcyBsaXN0OiIpCi0gICAgcHJpbnQocGxpc3QpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDI6IENoYW5nZSB1aWQgYmVmb3JlIGV4ZWN1dGluZyBjaGlsZAotICAgICMKLSAgICBpZiBvcy5nZXR1aWQoKSA9PSAwOgotICAgICAgICBwID0gUG9wZW4oWyJpZCJdLCBwcmVleGVjX2ZuPWxhbWJkYTogb3Muc2V0dWlkKDEwMCkpCi0gICAgICAgIHAud2FpdCgpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDM6IENvbm5lY3Rpbmcgc2V2ZXJhbCBzdWJwcm9jZXNzZXMKLSAgICAjCi0gICAgcHJpbnQoIkxvb2tpbmcgZm9yICdoZGEnLi4uIikKLSAgICBwMSA9IFBvcGVuKFsiZG1lc2ciXSwgc3Rkb3V0PVBJUEUpCi0gICAgcDIgPSBQb3BlbihbImdyZXAiLCAiaGRhIl0sIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PVBJUEUpCi0gICAgcHJpbnQocmVwcihwMi5jb21tdW5pY2F0ZSgpWzBdKSkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgNDogQ2F0Y2ggZXhlY3V0aW9uIGVycm9yCi0gICAgIwotICAgIHByaW50KCkKLSAgICBwcmludCgiVHJ5aW5nIGEgd2VpcmQgZmlsZS4uLiIpCi0gICAgdHJ5OgotICAgICAgICBwcmludChQb3BlbihbIi90aGlzL3BhdGgvZG9lcy9ub3QvZXhpc3QiXSkuY29tbXVuaWNhdGUoKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgIHByaW50KCJUaGUgZmlsZSBkaWRuJ3QgZXhpc3QuICBJIHRob3VnaHQgc28uLi4iKQotICAgICAgICAgICAgcHJpbnQoIkNoaWxkIHRyYWNlYmFjazoiKQotICAgICAgICAgICAgcHJpbnQoZS5jaGlsZF90cmFjZWJhY2spCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRXJyb3IiLCBlLmVycm5vKQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCJHb3NoLiAgTm8gZXJyb3IuIiwgZmlsZT1zeXMuc3RkZXJyKQotCi0KLWRlZiBfZGVtb193aW5kb3dzKCk6Ci0gICAgIwotICAgICMgRXhhbXBsZSAxOiBDb25uZWN0aW5nIHNldmVyYWwgc3VicHJvY2Vzc2VzCi0gICAgIwotICAgIHByaW50KCJMb29raW5nIGZvciAnUFJPTVBUJyBpbiBzZXQgb3V0cHV0Li4uIikKLSAgICBwMSA9IFBvcGVuKCJzZXQiLCBzdGRvdXQ9UElQRSwgc2hlbGw9VHJ1ZSkKLSAgICBwMiA9IFBvcGVuKCdmaW5kICJQUk9NUFQiJywgc3RkaW49cDEuc3Rkb3V0LCBzdGRvdXQ9UElQRSkKLSAgICBwcmludChyZXByKHAyLmNvbW11bmljYXRlKClbMF0pKQotCi0gICAgIwotICAgICMgRXhhbXBsZSAyOiBTaW1wbGUgZXhlY3V0aW9uIG9mIHByb2dyYW0KLSAgICAjCi0gICAgcHJpbnQoIkV4ZWN1dGluZyBjYWxjLi4uIikKLSAgICBwID0gUG9wZW4oImNhbGMiKQotICAgIHAud2FpdCgpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpZiBtc3dpbmRvd3M6Ci0gICAgICAgIF9kZW1vX3dpbmRvd3MoKQotICAgIGVsc2U6Ci0gICAgICAgIF9kZW1vX3Bvc2l4KCkKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IGIyMTgzZDguLjcxZGExZGIgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtMSw4ICsxLDggQEAKLSIiIlByb3ZpZGUgYWNjZXNzIHRvIFB5dGhvbidzIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisiIiJBY2Nlc3MgdG8gUHl0aG9uJ3MgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4iIiIKIAotIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cwogZnJvbSBvcy5wYXRoIGltcG9ydCBwYXJkaXIsIHJlYWxwYXRoCiAKIF9fYWxsX18gPSBbCkBAIC0xNyw1MCArMTcsNTAgQEAKICAgICAnZ2V0X3B5dGhvbl92ZXJzaW9uJywKICAgICAnZ2V0X3NjaGVtZV9uYW1lcycsCiAgICAgJ3BhcnNlX2NvbmZpZ19oJywKLSAgICBdCitdCiAKIF9JTlNUQUxMX1NDSEVNRVMgPSB7CiAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOgotICAgICAgICAgICAgJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAorICAgICAgICAgICAgJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKICAgICAgICAgJ3BsYXRpbmNsdWRlJzoKLSAgICAgICAgICAgICd7cGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCisgICAgICAgICAgICAne2luc3RhbGxlZF9wbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCiAgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ3Bvc2l4X2hvbWUnOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCi0gICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbicsCi0gICAgICAgICdwbGF0aW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob24nLAorICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKKyAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob24nLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne2Jhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAnbnQnOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L0xpYicsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9MaWInLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vTGliJywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YScgICA6ICd7YmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdvczInOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L0xpYicsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9MaWInLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vTGliJywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YScgICA6ICd7YmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdvczJfaG9tZSc6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLApAQCAtNjksNyArNjksNyBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAnbnRfdXNlcic6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fScsCkBAIC03OCw3ICs3OCw3IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9JbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgICdwb3NpeF91c2VyJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgICdvc3hfZnJhbWV3b3JrX3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uJywKQEAgLTk2LDIwICs5NiwyNiBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob24vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgIH0KIAogX1NDSEVNRV9LRVlTID0gKCdzdGRsaWInLCAncGxhdHN0ZGxpYicsICdwdXJlbGliJywgJ3BsYXRsaWInLCAnaW5jbHVkZScsCiAgICAgICAgICAgICAgICAgJ3NjcmlwdHMnLCAnZGF0YScpCisKKyAjIEZJWE1FIGRvbid0IHJlbHkgb24gc3lzLnZlcnNpb24gaGVyZSwgaXRzIGZvcm1hdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKKyAjIG9mIENQeXRob24sIHVzZSBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5oZXh2ZXJzaW9uCiBfUFlfVkVSU0lPTiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KIF9QWV9WRVJTSU9OX1NIT1JUID0gc3lzLnZlcnNpb25bOjNdCiBfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCiBfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQorX0JBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCiBfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKK19CQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIF9DT05GSUdfVkFSUyA9IE5vbmUKIF9VU0VSX0JBU0UgPSBOb25lCiAKKwogZGVmIF9zYWZlX3JlYWxwYXRoKHBhdGgpOgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgpCkBAIC0xMzIsMTkgKzEzOCwzNSBAQAogaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY2J1aWxkXFxhbWQ2NCIgaW4gX1BST0pFQ1RfQkFTRVstMTQ6XS5sb3dlcigpOgogICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyLCBwYXJkaXIpKQogCi1kZWYgaXNfcHl0aG9uX2J1aWxkKCk6CisjIHNldCBmb3IgY3Jvc3MgYnVpbGRzCitpZiAiX1BZVEhPTl9QUk9KRUNUX0JBU0UiIGluIG9zLmVudmlyb246CisgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLmVudmlyb25bIl9QWVRIT05fUFJPSkVDVF9CQVNFIl0pCisKK2RlZiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoZCk6CiAgICAgZm9yIGZuIGluICgiU2V0dXAuZGlzdCIsICJTZXR1cC5sb2NhbCIpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIk1vZHVsZXMiLCBmbikpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZCwgIk1vZHVsZXMiLCBmbikpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKIAotX1BZVEhPTl9CVUlMRCA9IGlzX3B5dGhvbl9idWlsZCgpCitfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKK2lmIF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZCBcCisgICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdwY2J1aWxkJywgJ3BjYnVpbGRcXGFtZDY0JykpOgorICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCisgICAgaWYgX3N5c19ob21lLmVuZHN3aXRoKCdwY2J1aWxkJyk6ICAgIyBtdXN0IGJlIGFtZDY0CisgICAgICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCitkZWYgaXNfcHl0aG9uX2J1aWxkKGNoZWNrX2hvbWU9RmFsc2UpOgorICAgIGlmIGNoZWNrX2hvbWUgYW5kIF9zeXNfaG9tZToKKyAgICAgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihfc3lzX2hvbWUpCisgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2RpcihfUFJPSkVDVF9CQVNFKQorCitfUFlUSE9OX0JVSUxEID0gaXNfcHl0aG9uX2J1aWxkKFRydWUpCiAKIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgZm9yIHNjaGVtZSBpbiAoJ3Bvc2l4X3ByZWZpeCcsICdwb3NpeF9ob21lJyk6CiAgICAgICAgIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXVsnaW5jbHVkZSddID0gJ3tzcmNkaXJ9L0luY2x1ZGUnCiAgICAgICAgIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXVsncGxhdGluY2x1ZGUnXSA9ICd7cHJvamVjdGJhc2V9Ly4nCiAKKwogZGVmIF9zdWJzdF92YXJzKHMsIGxvY2FsX3ZhcnMpOgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KCoqbG9jYWxfdmFycykKQEAgLTE2MSw2ICsxODMsNyBAQAogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdGFyZ2V0X2RpY3Rba2V5XSA9IHZhbHVlCiAKKwogZGVmIF9leHBhbmRfdmFycyhzY2hlbWUsIHZhcnMpOgogICAgIHJlcyA9IHt9CiAgICAgaWYgdmFycyBpcyBOb25lOgpAQCAtMTczLDI5ICsxOTYsNDEgQEAKICAgICAgICAgcmVzW2tleV0gPSBvcy5wYXRoLm5vcm1wYXRoKF9zdWJzdF92YXJzKHZhbHVlLCB2YXJzKSkKICAgICByZXR1cm4gcmVzCiAKKwogZGVmIF9nZXRfZGVmYXVsdF9zY2hlbWUoKToKICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICMgdGhlIGRlZmF1bHQgc2NoZW1lIGZvciBwb3NpeCBpcyBwb3NpeF9wcmVmaXgKICAgICAgICAgcmV0dXJuICdwb3NpeF9wcmVmaXgnCiAgICAgcmV0dXJuIG9zLm5hbWUKIAorCiBkZWYgX2dldHVzZXJiYXNlKCk6CiAgICAgZW52X2Jhc2UgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVVNFUkJBU0UiLCBOb25lKQorCiAgICAgZGVmIGpvaW51c2VyKCphcmdzKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmpvaW4oKmFyZ3MpKQogCiAgICAgIyB3aGF0IGFib3V0ICdvczJlbXgnLCAncmlzY29zJyA/CiAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICBiYXNlID0gb3MuZW52aXJvbi5nZXQoIkFQUERBVEEiKSBvciAifiIKLSAgICAgICAgcmV0dXJuIGVudl9iYXNlIGlmIGVudl9iYXNlIGVsc2Ugam9pbnVzZXIoYmFzZSwgIlB5dGhvbiIpCisgICAgICAgIGlmIGVudl9iYXNlOgorICAgICAgICAgICAgcmV0dXJuIGVudl9iYXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gam9pbnVzZXIoYmFzZSwgIlB5dGhvbiIpCiAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgIGZyYW1ld29yayA9IGdldF9jb25maWdfdmFyKCJQWVRIT05GUkFNRVdPUksiKQogICAgICAgICBpZiBmcmFtZXdvcms6Ci0gICAgICAgICAgICByZXR1cm4gZW52X2Jhc2UgaWYgZW52X2Jhc2UgZWxzZSBqb2ludXNlcigifiIsICJMaWJyYXJ5IiwgZnJhbWV3b3JrLCAiJWQuJWQiJSgKLSAgICAgICAgICAgICAgICBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCisgICAgICAgICAgICBpZiBlbnZfYmFzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW52X2Jhc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGpvaW51c2VyKCJ+IiwgIkxpYnJhcnkiLCBmcmFtZXdvcmssICIlZC4lZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKIAotICAgIHJldHVybiBlbnZfYmFzZSBpZiBlbnZfYmFzZSBlbHNlIGpvaW51c2VyKCJ+IiwgIi5sb2NhbCIpCisgICAgaWYgZW52X2Jhc2U6CisgICAgICAgIHJldHVybiBlbnZfYmFzZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBqb2ludXNlcigifiIsICIubG9jYWwiKQogCiAKIGRlZiBfcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIHZhcnM9Tm9uZSk6CkBAIC0yMDUsNyArMjQwLDYgQEAKICAgICBvcHRpb25hbCBkaWN0aW9uYXJ5IGlzIHBhc3NlZCBpbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpdCBpcwogICAgIHVzZWQgaW5zdGVhZCBvZiBhIG5ldyBkaWN0aW9uYXJ5LgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgICMgUmVnZXhlcyBuZWVkZWQgZm9yIHBhcnNpbmcgTWFrZWZpbGUgKGFuZCBzaW1pbGFyIHN5bnRheGVzLAogICAgICMgbGlrZSBvbGQtc3R5bGUgU2V0dXAgZmlsZXMpLgogICAgIF92YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUoIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQpAQCAtMjY3LDcgKzMwMSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBvcy5lbnZpcm9uW25dCiAKICAgICAgICAgICAgICAgICBlbGlmIG4gaW4gcmVuYW1lZF92YXJpYWJsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnUFlfJykgYW5kIG5hbWVbMzpdIGluIHJlbmFtZWRfdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5zdGFydHN3aXRoKCdQWV8nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVbMzpdIGluIHJlbmFtZWRfdmFyaWFibGVzKToKICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSAiIgogCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgJ1BZXycgKyBuIGluIG5vdGRvbmU6CkBAIC0zMDAsNyArMzM1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBkb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lW25hbWVdID0gdmFsdWUKIAotCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgYm9ndXMgdmFyaWFibGUgcmVmZXJlbmNlIChlLmcuICJwcmVmaXg9JC9vcHQvcHl0aG9uIik7CiAgICAgICAgICAgICAgICAgIyBqdXN0IGRyb3AgaXQgc2luY2Ugd2UgY2FuJ3QgZGVhbApAQCAtMzIwLDE0ICszNTQsMTcgQEAKIGRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gdGhlIHBhdGggb2YgdGhlIE1ha2VmaWxlLiIiIgogICAgIGlmIF9QWVRIT05fQlVJTEQ6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIk1ha2VmaWxlIikKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcte317fScuZm9ybWF0KF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ01ha2VmaWxlJykKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgX1BST0pFQ1RfQkFTRSwgIk1ha2VmaWxlIikKKyAgICBpZiBoYXNhdHRyKHN5cywgJ2FiaWZsYWdzJyk6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWctJXMlcycgJSAoX1BZX1ZFUlNJT05fU0hPUlQsIHN5cy5hYmlmbGFncykKKyAgICBlbHNlOgorICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnJworICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZ2V0X3BhdGgoJ3N0ZGxpYicpLCBjb25maWdfZGlyX25hbWUsICdNYWtlZmlsZScpCiAKLQotZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgotICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKK2RlZiBfZ2VuZXJhdGVfcG9zaXhfdmFycygpOgorICAgICIiIkdlbmVyYXRlIHRoZSBQeXRob24gbW9kdWxlIGNvbnRhaW5pbmcgYnVpbGQtdGltZSB2YXJpYWJsZXMuIiIiCisgICAgaW1wb3J0IHBwcmludAorICAgIHZhcnMgPSB7fQogICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgogICAgIG1ha2VmaWxlID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKICAgICB0cnk6CkBAIC0zNTMsNiArMzkwLDQ2IEBACiAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgdmFyc1snTERTSEFSRUQnXSA9IHZhcnNbJ0JMRFNIQVJFRCddCiAKKyAgICAjIFRoZXJlJ3MgYSBjaGlja2VuLWFuZC1lZ2cgc2l0dWF0aW9uIG9uIE9TIFggd2l0aCByZWdhcmRzIHRvIHRoZQorICAgICMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIGFmdGVyIHRoZSBjaGFuZ2VzIGludHJvZHVjZWQgYnkgIzE1Mjk4OgorICAgICMgZ2V0X2NvbmZpZ192YXJzKCkgaXMgY2FsbGVkIGJ5IGdldF9wbGF0Zm9ybSgpIGFzIHBhcnQgb2YgdGhlCisgICAgIyBgbWFrZSBweWJ1aWxkZGlyLnR4dGAgdGFyZ2V0IC0tIHdoaWNoIGlzIGEgcHJlY3Vyc29yIHRvIHRoZQorICAgICMgX3N5c2NvbmZpZ2RhdGEucHkgbW9kdWxlIGJlaW5nIGNvbnN0cnVjdGVkLiAgVW5mb3J0dW5hdGVseSwKKyAgICAjIGdldF9jb25maWdfdmFycygpIGV2ZW50dWFsbHkgY2FsbHMgX2luaXRfcG9zaXgoKSwgd2hpY2ggYXR0ZW1wdHMKKyAgICAjIHRvIGltcG9ydCBfc3lzY29uZmlnZGF0YSwgd2hpY2ggd2Ugd29uJ3QgaGF2ZSBidWlsdCB5ZXQuICBJbiBvcmRlcgorICAgICMgZm9yIF9pbml0X3Bvc2l4KCkgdG8gd29yaywgaWYgd2UncmUgb24gRGFyd2luLCBqdXN0IG1vY2sgdXAgdGhlCisgICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgbWFudWFsbHkgYW5kIHBvcHVsYXRlIGl0IHdpdGggdGhlIGJ1aWxkIHZhcnMuCisgICAgIyBUaGlzIGlzIG1vcmUgdGhhbiBzdWZmaWNpZW50IGZvciBlbnN1cmluZyB0aGUgc3Vic2VxdWVudCBjYWxsIHRvCisgICAgIyBnZXRfcGxhdGZvcm0oKSBzdWNjZWVkcy4KKyAgICBuYW1lID0gJ19zeXNjb25maWdkYXRhJworICAgIGlmICdkYXJ3aW4nIGluIHN5cy5wbGF0Zm9ybToKKyAgICAgICAgaW1wb3J0IGltcAorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICBtb2R1bGUuYnVpbGRfdGltZV92YXJzID0gdmFycworICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorCisgICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBzeXMudmVyc2lvbls6M10pCisgICAgaWYgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6CisgICAgICAgIHB5YnVpbGRkaXIgKz0gJy1weWRlYnVnJworICAgIG9zLm1ha2VkaXJzKHB5YnVpbGRkaXIsIGV4aXN0X29rPVRydWUpCisgICAgZGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4ocHlidWlsZGRpciwgbmFtZSArICcucHknKQorCisgICAgd2l0aCBvcGVuKGRlc3RmaWxlLCAndycsIGVuY29kaW5nPSd1dGY4JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCisgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKKyAgICAgICAgZi53cml0ZSgnYnVpbGRfdGltZV92YXJzID0gJykKKyAgICAgICAgcHByaW50LnBwcmludCh2YXJzLCBzdHJlYW09ZikKKworICAgICMgQ3JlYXRlIGZpbGUgdXNlZCBmb3Igc3lzLnBhdGggZml4dXAgLS0gc2VlIE1vZHVsZXMvZ2V0cGF0aC5jCisgICAgd2l0aCBvcGVuKCdweWJ1aWxkZGlyLnR4dCcsICd3JywgZW5jb2Rpbmc9J2FzY2lpJykgYXMgZjoKKyAgICAgICAgZi53cml0ZShweWJ1aWxkZGlyKQorCitkZWYgX2luaXRfcG9zaXgodmFycyk6CisgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgorICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSBfZ2VuZXJhdGVfcG9zaXhfdmFycygpCisgICAgZnJvbSBfc3lzY29uZmlnZGF0YSBpbXBvcnQgYnVpbGRfdGltZV92YXJzCisgICAgdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQorCiBkZWYgX2luaXRfbm9uX3Bvc2l4KHZhcnMpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgTlQiIiIKICAgICAjIHNldCBiYXNpYyBpbnN0YWxsIGRpcmVjdG9yaWVzCkBAIC0zNzYsNyArNDUzLDYgQEAKICAgICBvcHRpb25hbCBkaWN0aW9uYXJ5IGlzIHBhc3NlZCBpbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpdCBpcwogICAgIHVzZWQgaW5zdGVhZCBvZiBhIG5ldyBkaWN0aW9uYXJ5LgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgIGlmIHZhcnMgaXMgTm9uZToKICAgICAgICAgdmFycyA9IHt9CiAgICAgZGVmaW5lX3J4ID0gcmUuY29tcGlsZSgiI2RlZmluZSAoW0EtWl1bQS1aYS16MC05X10rKSAoLiopXG4iKQpAQCAtMzg5LDggKzQ2NSwxMCBAQAogICAgICAgICBtID0gZGVmaW5lX3J4Lm1hdGNoKGxpbmUpCiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICBuLCB2ID0gbS5ncm91cCgxLCAyKQotICAgICAgICAgICAgdHJ5OiB2ID0gaW50KHYpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogcGFzcworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSBpbnQodikKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHZhcnNbbl0gPSB2CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtID0gdW5kZWZfcngubWF0Y2gobGluZSkKQEAgLTM5OCwyNyArNDc2LDI5IEBACiAgICAgICAgICAgICAgICAgdmFyc1ttLmdyb3VwKDEpXSA9IDAKICAgICByZXR1cm4gdmFycwogCisKIGRlZiBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gdGhlIHBhdGggb2YgcHljb25maWcuaC4iIiIKICAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsICJQQyIpCisgICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFLCAiUEMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5jX2RpciA9IF9QUk9KRUNUX0JBU0UKKyAgICAgICAgICAgIGluY19kaXIgPSBfc3lzX2hvbWUgb3IgX1BST0pFQ1RfQkFTRQogICAgIGVsc2U6CiAgICAgICAgIGluY19kaXIgPSBnZXRfcGF0aCgncGxhdGluY2x1ZGUnKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oaW5jX2RpciwgJ3B5Y29uZmlnLmgnKQogCisKIGRlZiBnZXRfc2NoZW1lX25hbWVzKCk6CiAgICAgIiIiUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyB0aGUgc2NoZW1lcyBuYW1lcy4iIiIKLSAgICBzY2hlbWVzID0gbGlzdChfSU5TVEFMTF9TQ0hFTUVTLmtleXMoKSkKLSAgICBzY2hlbWVzLnNvcnQoKQotICAgIHJldHVybiB0dXBsZShzY2hlbWVzKQorICAgIHJldHVybiB0dXBsZShzb3J0ZWQoX0lOU1RBTExfU0NIRU1FUykpCisKIAogZGVmIGdldF9wYXRoX25hbWVzKCk6CiAgICAgIiIiUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcGF0aHMgbmFtZXMuIiIiCiAgICAgcmV0dXJuIF9TQ0hFTUVfS0VZUwogCisKIGRlZiBnZXRfcGF0aHMoc2NoZW1lPV9nZXRfZGVmYXVsdF9zY2hlbWUoKSwgdmFycz1Ob25lLCBleHBhbmQ9VHJ1ZSk6CiAgICAgIiIiUmV0dXJuIGEgbWFwcGluZyBjb250YWluaW5nIGFuIGluc3RhbGwgc2NoZW1lLgogCkBAIC00MzAsNiArNTEwLDcgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdCiAKKwogZGVmIGdldF9wYXRoKG5hbWUsIHNjaGVtZT1fZ2V0X2RlZmF1bHRfc2NoZW1lKCksIHZhcnM9Tm9uZSwgZXhwYW5kPVRydWUpOgogICAgICIiIlJldHVybiBhIHBhdGggY29ycmVzcG9uZGluZyB0byB0aGUgc2NoZW1lLgogCkBAIC00MzcsMTcgKzUxOCwxNyBAQAogICAgICIiIgogICAgIHJldHVybiBnZXRfcGF0aHMoc2NoZW1lLCB2YXJzLCBleHBhbmQpW25hbWVdCiAKKwogZGVmIGdldF9jb25maWdfdmFycygqYXJncyk6CiAgICAgIiIiV2l0aCBubyBhcmd1bWVudHMsIHJldHVybiBhIGRpY3Rpb25hcnkgb2YgYWxsIGNvbmZpZ3VyYXRpb24KICAgICB2YXJpYWJsZXMgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLgogCiAgICAgT24gVW5peCwgdGhpcyBtZWFucyBldmVyeSB2YXJpYWJsZSBkZWZpbmVkIGluIFB5dGhvbidzIGluc3RhbGxlZCBNYWtlZmlsZTsKLSAgICBPbiBXaW5kb3dzIGFuZCBNYWMgT1MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCisgICAgT24gV2luZG93cyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KIAogICAgIFdpdGggYXJndW1lbnRzLCByZXR1cm4gYSBsaXN0IG9mIHZhbHVlcyB0aGF0IHJlc3VsdCBmcm9tIGxvb2tpbmcgdXAKICAgICBlYWNoIGFyZ3VtZW50IGluIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgZ2xvYmFsIF9DT05GSUdfVkFSUwogICAgIGlmIF9DT05GSUdfVkFSUyBpcyBOb25lOgogICAgICAgICBfQ09ORklHX1ZBUlMgPSB7fQpAQCAtNDU5LDcgKzU0MCw5IEBACiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbiddID0gX1BZX1ZFUlNJT04KICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX3Nob3J0J10gPSBfUFlfVkVSU0lPTl9TSE9SVAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fbm9kb3QnXSA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KKyAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfYmFzZSddID0gX0JBU0VfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1snYmFzZSddID0gX1BSRUZJWAorICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9wbGF0YmFzZSddID0gX0JBU0VfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydwbGF0YmFzZSddID0gX0VYRUNfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHJvamVjdGJhc2UnXSA9IF9QUk9KRUNUX0JBU0UKICAgICAgICAgdHJ5OgpAQCAtNDc3LDg4ICs1NjAsMjggQEAKICAgICAgICAgIyB0aGUgaW5pdC1mdW5jdGlvbi4KICAgICAgICAgX0NPTkZJR19WQVJTWyd1c2VyYmFzZSddID0gX2dldHVzZXJiYXNlKCkKIAotICAgICAgICBpZiAnc3JjZGlyJyBub3QgaW4gX0NPTkZJR19WQVJTOgotICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9QUk9KRUNUX0JBU0UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9DT05GSUdfVkFSU1snc3JjZGlyJ10gPSBfc2FmZV9yZWFscGF0aChfQ09ORklHX1ZBUlNbJ3NyY2RpciddKQotCi0KLSAgICAgICAgIyBDb252ZXJ0IHNyY2RpciBpbnRvIGFuIGFic29sdXRlIHBhdGggaWYgaXQgYXBwZWFycyBuZWNlc3NhcnkuCi0gICAgICAgICMgTm9ybWFsbHkgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIEhvd2V2ZXIsIGR1cmluZwotICAgICAgICAjIHRlc3RpbmcsIGZvciBleGFtcGxlLCB3ZSBtaWdodCBiZSBydW5uaW5nIGEgbm9uLWluc3RhbGxlZCBweXRob24KLSAgICAgICAgIyBmcm9tIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgaWYgX1BZVEhPTl9CVUlMRCBhbmQgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgICAgYmFzZSA9IF9QUk9KRUNUX0JBU0UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgY3dkID0gTm9uZQotICAgICAgICAgICAgaWYgKG5vdCBvcy5wYXRoLmlzYWJzKF9DT05GSUdfVkFSU1snc3JjZGlyJ10pIGFuZAotICAgICAgICAgICAgICAgIGJhc2UgIT0gY3dkKToKLSAgICAgICAgICAgICAgICAjIHNyY2RpciBpcyByZWxhdGl2ZSBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAjIGFzIHRoZSBleGVjdXRhYmxlLiBBc3N1bWUgZXhlY3V0YWJsZSBpcyBpbiB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSBhbmQgbWFrZSBzcmNkaXIgYWJzb2x1dGUuCi0gICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIF9DT05GSUdfVkFSU1snc3JjZGlyJ10pCi0gICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IG9zLnBhdGgubm9ybXBhdGgoc3JjZGlyKQotCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIEtlcm5lbCB2ZXJzaW9uICg4LjQuMykKLSAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoa2VybmVsX3ZlcnNpb24uc3BsaXQoJy4nKVswXSkKLQotICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAotICAgICAgICAgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyBvbiBhIDEwLjMgc3lzdGVtCi0gICAgICAgICAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9DT05GSUdfVkFSU1trZXldCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdCBbXiBcdF0qJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTW2tleV0gPSBmbGFncworICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCisgICAgICAgIHNyY2RpciA9IF9DT05GSUdfVkFSUy5nZXQoJ3NyY2RpcicsIF9QUk9KRUNUX0JBU0UpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIGlmIF9QWVRIT05fQlVJTEQ6CisgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCisgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgIyBjb250YWluaW5nIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBBbGxvdyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgYXJjaGl0ZWN0dXJlIGZsYWdzIHVzaW5nCi0gICAgICAgICAgICAgICAgIyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgbmFtZSB3YXMgaW50cm9kdWNlZCBieSBBcHBsZSBpbiBPU1ggMTAuNSBhbmQKLSAgICAgICAgICAgICAgICAjIGlzIHVzZWQgYnkgc2V2ZXJhbCBzY3JpcHRpbmcgbGFuZ3VhZ2VzIGRpc3RyaWJ1dGVkIHdpdGgKLSAgICAgICAgICAgICAgICAjIHRoYXQgT1MgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgorICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIG5vdCBtZWFuaW5nZnVsIHNpbmNlIHRoZSBpbnN0YWxsYXRpb24gaXMKKyAgICAgICAgICAgICAgICAjIHNwcmVhZCBhYm91dCB0aGUgZmlsZXN5c3RlbS4gIFdlIGNob29zZSB0aGUKKyAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBNYWtlZmlsZSBzaW5jZSB3ZSBrbm93IGl0CisgICAgICAgICAgICAgICAgIyBleGlzdHMuCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5kaXJuYW1lKGdldF9tYWtlZmlsZV9maWxlbmFtZSgpKQorICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gX3NhZmVfcmVhbHBhdGgoc3JjZGlyKQogCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9DT05GSUdfVkFSU1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAotICAgICAgICAgICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTW2tleV0gPSBmbGFncwotCi0gICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBvbiBPU1ggMTAuNSBvciBsYXRlciBhbmQgdGhlIHVzZXIgdHJpZXMgdG8KLSAgICAgICAgICAgICAgICAjIGNvbXBpbGVzIGFuIGV4dGVuc2lvbiB1c2luZyBhbiBTREsgdGhhdCBpcyBub3QgcHJlc2VudAotICAgICAgICAgICAgICAgICMgb24gdGhlIGN1cnJlbnQgbWFjaGluZSBpdCBpcyBiZXR0ZXIgdG8gbm90IHVzZSBhbiBTREsKLSAgICAgICAgICAgICAgICAjIHRoYW4gdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUaGUgbWFqb3IgdXNlY2FzZSBmb3IgdGhpcyBpcyB1c2VycyB1c2luZyBhIFB5dGhvbi5vcmcKLSAgICAgICAgICAgICAgICAjIGJpbmFyeSBpbnN0YWxsZXIgIG9uIE9TWCAxMC42OiB0aGF0IGluc3RhbGxlciB1c2VzCi0gICAgICAgICAgICAgICAgIyB0aGUgMTAuNHUgU0RLLCBidXQgdGhhdCBTREsgaXMgbm90IGluc3RhbGxlZCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgIyB3aGVuIHlvdSBpbnN0YWxsIFhjb2RlLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICBDRkxBR1MgPSBfQ09ORklHX1ZBUlMuZ2V0KCdDRkxBR1MnLCAnJykKLSAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKCctaXN5c3Jvb3RccysoXFMrKScsIENGTEFHUykKLSAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZGsgPSBtLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZGspOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaGVkIHVwIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9DT05GSUdfVkFSU1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdFxzK1xTKyhcc3wkKScsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NPTkZJR19WQVJTW2tleV0gPSBmbGFncworICAgICAgICAjIE9TIFggcGxhdGZvcm1zIHJlcXVpcmUgc3BlY2lhbCBjdXN0b21pemF0aW9uIHRvIGhhbmRsZQorICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29uZmlnX3ZhcnMoX0NPTkZJR19WQVJTKQogCiAgICAgaWYgYXJnczoKICAgICAgICAgdmFscyA9IFtdCkBAIC01NjgsNiArNTkxLDcgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gX0NPTkZJR19WQVJTCiAKKwogZGVmIGdldF9jb25maWdfdmFyKG5hbWUpOgogICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgYSBzaW5nbGUgdmFyaWFibGUgdXNpbmcgdGhlIGRpY3Rpb25hcnkgcmV0dXJuZWQgYnkKICAgICAnZ2V0X2NvbmZpZ192YXJzKCknLgpAQCAtNTc2LDYgKzYwMCw3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGdldF9jb25maWdfdmFycygpLmdldChuYW1lKQogCisKIGRlZiBnZXRfcGxhdGZvcm0oKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjdXJyZW50IHBsYXRmb3JtLgogCkBAIC02MDEsNyArNjI2LDYgQEAKIAogICAgIEZvciBvdGhlciBub24tUE9TSVggcGxhdGZvcm1zLCBjdXJyZW50bHkganVzdCByZXR1cm5zICdzeXMucGxhdGZvcm0nLgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgIyBzbmlmZiBzeXMudmVyc2lvbiBmb3IgYXJjaGl0ZWN0dXJlLgogICAgICAgICBwcmVmaXggPSAiIGJpdCAoIgpAQCAtNjE3LDEwICs2NDEsMTMgQEAKICAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQogCiAgICAgaWYgb3MubmFtZSAhPSAicG9zaXgiIG9yIG5vdCBoYXNhdHRyKG9zLCAndW5hbWUnKToKLSAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYSwKLSAgICAgICAgIyBNYWMgT1MgaXMgTTY4ayBvciBQUEMsIGV0Yy4KKyAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYQogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKKyAgICAjIFNldCBmb3IgY3Jvc3MgYnVpbGRzIGV4cGxpY2l0bHkKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKwogICAgICMgVHJ5IHRvIGRpc3Rpbmd1aXNoIHZhcmlvdXMgZmxhdm91cnMgb2YgVW5peAogICAgIG9zbmFtZSwgaG9zdCwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSA9IG9zLnVuYW1lKCkKIApAQCAtNjUxLDk3ICs2NzgsMTUgQEAKICAgICAgICAgcmV0dXJuICIlcy0lcy4lcyIgJSAob3NuYW1lLCB2ZXJzaW9uLCByZWxlYXNlKQogICAgIGVsaWYgb3NuYW1lWzo2XSA9PSAiY3lnd2luIjoKICAgICAgICAgb3NuYW1lID0gImN5Z3dpbiIKLSAgICAgICAgcmVsX3JlID0gcmUuY29tcGlsZSAocidbXGQuXSsnKQorICAgICAgICByZWxfcmUgPSByZS5jb21waWxlKHInW1xkLl0rJykKICAgICAgICAgbSA9IHJlbF9yZS5tYXRjaChyZWxlYXNlKQogICAgICAgICBpZiBtOgogICAgICAgICAgICAgcmVsZWFzZSA9IG0uZ3JvdXAoKQogICAgIGVsaWYgb3NuYW1lWzo2XSA9PSAiZGFyd2luIjoKLSAgICAgICAgIwotICAgICAgICAjIEZvciBvdXIgcHVycG9zZXMsIHdlJ2xsIGFzc3VtZSB0aGF0IHRoZSBzeXN0ZW0gdmVyc2lvbiBmcm9tCi0gICAgICAgICMgZGlzdHV0aWxzJyBwZXJzcGVjdGl2ZSBpcyB3aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQKLSAgICAgICAgIyB0by4gVGhpcyBtYWtlcyB0aGUgY29tcGF0aWJpbGl0eSBzdG9yeSBhIGJpdCBtb3JlIHNhbmUgYmVjYXVzZSB0aGUKLSAgICAgICAgIyBtYWNoaW5lIGlzIGdvaW5nIHRvIGNvbXBpbGUgYW5kIGxpbmsgYXMgaWYgaXQgd2VyZQotICAgICAgICAjIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC4KLSAgICAgICAgIwotICAgICAgICBjZmd2YXJzID0gZ2V0X2NvbmZpZ192YXJzKCkKLSAgICAgICAgbWFjdmVyID0gY2ZndmFycy5nZXQoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCi0KLSAgICAgICAgaWYgMToKLSAgICAgICAgICAgICMgQWx3YXlzIGNhbGN1bGF0ZSB0aGUgcmVsZWFzZSBvZiB0aGUgcnVubmluZyBtYWNoaW5lLAotICAgICAgICAgICAgIyBuZWVkZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBidWlsZCBmYXQgYmluYXJpZXMgb3Igbm90LgotCi0gICAgICAgICAgICBtYWNyZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICAjIEdldCB0aGUgc3lzdGVtIHZlcnNpb24uIFJlYWRpbmcgdGhpcyBwbGlzdCBpcyBhIGRvY3VtZW50ZWQKLSAgICAgICAgICAgICMgd2F5IHRvIGdldCB0aGUgc3lzdGVtIHZlcnNpb24gKHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKLSAgICAgICAgICAgICMgdGhlIEdlc3RhbHQgTWFuYWdlcikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmID0gb3BlbignL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN0JykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICMgV2UncmUgb24gYSBwbGFpbiBkYXJ3aW4gYm94LCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAjIGJlaGF2aW91ci4KLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxrZXk+UHJvZHVjdFVzZXJWaXNpYmxlVmVyc2lvbjwva2V5PlxzKicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPHN0cmluZz4oLio/KTwvc3RyaW5nPicsIGYucmVhZCgpKQotICAgICAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFjcmVsZWFzZSA9ICcuJy5qb2luKG0uZ3JvdXAoMSkuc3BsaXQoJy4nKVs6Ml0pCi0gICAgICAgICAgICAgICAgICAgICMgZWxzZTogZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91cgotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotCi0gICAgICAgIGlmIG5vdCBtYWN2ZXI6Ci0gICAgICAgICAgICBtYWN2ZXIgPSBtYWNyZWxlYXNlCi0KLSAgICAgICAgaWYgbWFjdmVyOgotICAgICAgICAgICAgcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgb3NuYW1lID0gIm1hY29zeCIKLQotICAgICAgICAgICAgaWYgKG1hY3JlbGVhc2UgKyAnLicpID49ICcxMC40LicgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgJy1hcmNoJyBpbiBnZXRfY29uZmlnX3ZhcnMoKS5nZXQoJ0NGTEFHUycsICcnKS5zdHJpcCgpOgotICAgICAgICAgICAgICAgICMgVGhlIHVuaXZlcnNhbCBidWlsZCB3aWxsIGJ1aWxkIGZhdCBiaW5hcmllcywgYnV0IG5vdCBvbgotICAgICAgICAgICAgICAgICMgc3lzdGVtcyBiZWZvcmUgMTAuNAotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRyeSB0byBkZXRlY3QgNC13YXkgdW5pdmVyc2FsIGJ1aWxkcywgdGhvc2UgaGF2ZSBtYWNoaW5lLXR5cGUKLSAgICAgICAgICAgICAgICAjICd1bml2ZXJzYWwnIGluc3RlYWQgb2YgJ2ZhdCcuCi0KLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKLSAgICAgICAgICAgICAgICBjZmxhZ3MgPSBnZXRfY29uZmlnX3ZhcnMoKS5nZXQoJ0NGTEFHUycpCi0KLSAgICAgICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCi0gICAgICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCi0KLSAgICAgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBhcmNoc1swXQotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdpbnRlbCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0MycKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0NjQnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3BwYzY0JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3VuaXZlcnNhbCcKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBtYWNoaW5lIHZhbHVlIGZvciBhcmNocz0lciIlKGFyY2hzLCkpCi0KLSAgICAgICAgICAgIGVsaWYgbWFjaGluZSA9PSAnaTM4Nic6Ci0gICAgICAgICAgICAgICAgIyBPbiBPU1ggdGhlIG1hY2hpbmUgdHlwZSByZXR1cm5lZCBieSB1bmFtZSBpcyBhbHdheXMgdGhlCi0gICAgICAgICAgICAgICAgIyAzMi1iaXQgdmFyaWFudCwgZXZlbiBpZiB0aGUgZXhlY3V0YWJsZSBhcmNoaXRlY3R1cmUgaXMKLSAgICAgICAgICAgICAgICAjIHRoZSA2NC1iaXQgdmFyaWFudAotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3g4Nl82NCcKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lIGluICgnUG93ZXJQQycsICdQb3dlcl9NYWNpbnRvc2gnKToKLSAgICAgICAgICAgICAgICAjIFBpY2sgYSBzYW5lIG5hbWUgZm9yIHRoZSBQUEMgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICMgU2VlICdpMzg2JyBjYXNlCi0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjNjQnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGMnCisgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQKKyAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCiAKICAgICByZXR1cm4gIiVzLSVzLSVzIiAlIChvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCiAKQEAgLTc0OSwyMSArNjk0LDI3IEBACiBkZWYgZ2V0X3B5dGhvbl92ZXJzaW9uKCk6CiAgICAgcmV0dXJuIF9QWV9WRVJTSU9OX1NIT1JUCiAKKwogZGVmIF9wcmludF9kaWN0KHRpdGxlLCBkYXRhKToKICAgICBmb3IgaW5kZXgsIChrZXksIHZhbHVlKSBpbiBlbnVtZXJhdGUoc29ydGVkKGRhdGEuaXRlbXMoKSkpOgogICAgICAgICBpZiBpbmRleCA9PSAwOgotICAgICAgICAgICAgcHJpbnQoJ3swfTogJy5mb3JtYXQodGl0bGUpKQotICAgICAgICBwcmludCgnXHR7MH0gPSAiezF9IicuZm9ybWF0KGtleSwgdmFsdWUpKQorICAgICAgICAgICAgcHJpbnQoJyVzOiAnICUgKHRpdGxlKSkKKyAgICAgICAgcHJpbnQoJ1x0JXMgPSAiJXMiJyAlIChrZXksIHZhbHVlKSkKKwogCiBkZWYgX21haW4oKToKICAgICAiIiJEaXNwbGF5IGFsbCBpbmZvcm1hdGlvbiBzeXNjb25maWcgZGV0YWlucy4iIiIKLSAgICBwcmludCgnUGxhdGZvcm06ICJ7MH0iJy5mb3JtYXQoZ2V0X3BsYXRmb3JtKCkpKQotICAgIHByaW50KCdQeXRob24gdmVyc2lvbjogInswfSInLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSkpCi0gICAgcHJpbnQoJ0N1cnJlbnQgaW5zdGFsbGF0aW9uIHNjaGVtZTogInswfSInLmZvcm1hdChfZ2V0X2RlZmF1bHRfc2NoZW1lKCkpKQotICAgIHByaW50KCcnKQorICAgIGlmICctLWdlbmVyYXRlLXBvc2l4LXZhcnMnIGluIHN5cy5hcmd2OgorICAgICAgICBfZ2VuZXJhdGVfcG9zaXhfdmFycygpCisgICAgICAgIHJldHVybgorICAgIHByaW50KCdQbGF0Zm9ybTogIiVzIicgJSBnZXRfcGxhdGZvcm0oKSkKKyAgICBwcmludCgnUHl0aG9uIHZlcnNpb246ICIlcyInICUgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCisgICAgcHJpbnQoJ0N1cnJlbnQgaW5zdGFsbGF0aW9uIHNjaGVtZTogIiVzIicgJSBfZ2V0X2RlZmF1bHRfc2NoZW1lKCkpCisgICAgcHJpbnQoKQogICAgIF9wcmludF9kaWN0KCdQYXRocycsIGdldF9wYXRocygpKQotICAgIHByaW50KCcnKQorICAgIHByaW50KCkKICAgICBfcHJpbnRfZGljdCgnVmFyaWFibGVzJywgZ2V0X2NvbmZpZ192YXJzKCkpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDU0ZDBlMGUuLjExYjRiNjggMTAwNjQ0Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC0yOSw4ICsyOSw2IEBACiAiIiJSZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRhciBmb3JtYXQgYXJjaGl2ZXMuCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogdmVyc2lvbiAgICAgPSAiMC45LjAiCiBfX2F1dGhvcl9fICA9ICJMYXJzIEd1c3RcdTAwZTRiZWwgKGxhcnNAZ3VzdGFlYmVsLmRlKSIKIF9fZGF0ZV9fICAgID0gIiREYXRlOiAyMDExLTAyLTI1IDE3OjQyOjAxICswMjAwIChGcmksIDI1IEZlYiAyMDExKSAkIgpAQCAtNDIsOSArNDAsOSBAQAogIy0tLS0tLS0tLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgaW8KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0Ci1pbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgY29weQpAQCAtMjQ3LDggKzI0NSw4IEBACiAgICAgICAgdGhlIGhpZ2ggYml0IHNldC4gU28gd2UgY2FsY3VsYXRlIHR3byBjaGVja3N1bXMsIHVuc2lnbmVkIGFuZAogICAgICAgIHNpZ25lZC4KICAgICAiIiIKLSAgICB1bnNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFjaygiMTQ4QiIsIGJ1Zls6MTQ4XSkgKyBzdHJ1Y3QudW5wYWNrKCIzNTZCIiwgYnVmWzE1Njo1MTJdKSkKLSAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2soIjE0OGIiLCBidWZbOjE0OF0pICsgc3RydWN0LnVucGFjaygiMzU2YiIsIGJ1ZlsxNTY6NTEyXSkpCisgICAgdW5zaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Qjh4MzU2QiIsIGJ1ZikpCisgICAgc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrX2Zyb20oIjE0OGI4eDM1NmIiLCBidWYpKQogICAgIHJldHVybiB1bnNpZ25lZF9jaGtzdW0sIHNpZ25lZF9jaGtzdW0KIAogZGVmIGNvcHlmaWxlb2JqKHNyYywgZHN0LCBsZW5ndGg9Tm9uZSk6CkBAIC0yNzYsNDcgKzI3NCwxMyBAQAogICAgICAgICBkc3Qud3JpdGUoYnVmKQogICAgIHJldHVybgogCi1maWxlbW9kZV90YWJsZSA9ICgKLSAgICAoKFNfSUZMTkssICAgICAgImwiKSwKLSAgICAgKFNfSUZSRUcsICAgICAgIi0iKSwKLSAgICAgKFNfSUZCTEssICAgICAgImIiKSwKLSAgICAgKFNfSUZESVIsICAgICAgImQiKSwKLSAgICAgKFNfSUZDSFIsICAgICAgImMiKSwKLSAgICAgKFNfSUZJRk8sICAgICAgInAiKSksCi0KLSAgICAoKFRVUkVBRCwgICAgICAgInIiKSwpLAotICAgICgoVFVXUklURSwgICAgICAidyIpLCksCi0gICAgKChUVUVYRUN8VFNVSUQsICJzIiksCi0gICAgIChUU1VJRCwgICAgICAgICJTIiksCi0gICAgIChUVUVYRUMsICAgICAgICJ4IikpLAotCi0gICAgKChUR1JFQUQsICAgICAgICJyIiksKSwKLSAgICAoKFRHV1JJVEUsICAgICAgInciKSwpLAotICAgICgoVEdFWEVDfFRTR0lELCAicyIpLAotICAgICAoVFNHSUQsICAgICAgICAiUyIpLAotICAgICAoVEdFWEVDLCAgICAgICAieCIpKSwKLQotICAgICgoVE9SRUFELCAgICAgICAiciIpLCksCi0gICAgKChUT1dSSVRFLCAgICAgICJ3IiksKSwKLSAgICAoKFRPRVhFQ3xUU1ZUWCwgInQiKSwKLSAgICAgKFRTVlRYLCAgICAgICAgIlQiKSwKLSAgICAgKFRPRVhFQywgICAgICAgIngiKSkKLSkKLQogZGVmIGZpbGVtb2RlKG1vZGUpOgotICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybQotICAgICAgIC1yd3hyd3hyd3guCi0gICAgICAgVXNlZCBieSBUYXJGaWxlLmxpc3QoKQotICAgICIiIgotICAgIHBlcm0gPSBbXQotICAgIGZvciB0YWJsZSBpbiBmaWxlbW9kZV90YWJsZToKLSAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKLSAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgotICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKLSAgICByZXR1cm4gIiIuam9pbihwZXJtKQorICAgICIiIkRlcHJlY2F0ZWQgaW4gdGhpcyBsb2NhdGlvbjsgdXNlIHN0YXQuZmlsZW1vZGUuIiIiCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigiZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBzdGF0LmZpbGVtb2RlIiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShtb2RlKQorCiAKIGNsYXNzIFRhckVycm9yKEV4Y2VwdGlvbik6CiAgICAgIiIiQmFzZSBleGNlcHRpb24uIiIiCkBAIC00MjMsMTAgKzM4NywxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpCiAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZF9neigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gemxpYi5lcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfd3JpdGVfZ3ooKQogCi0gICAgICAgICAgICBpZiBjb21wdHlwZSA9PSAiYnoyIjoKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gImJ6MiI6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgYnoyCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDM0LDggKzM5OSwyNSBAQAogICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBJT0Vycm9yCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gInh6IjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBsem1hCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJsem1hIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYnVmID0gYiIiCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBsem1hLkxaTUFFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgIT0gInRhciI6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigidW5rbm93biBjb21wcmVzc2lvbiB0eXBlICVyIiAlIGNvbXB0eXBlKQorCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leHRmaWxlb2JqOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCkBAIC01ODcsNyArNTY5LDcgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuY21wLmRlY29tcHJlc3MoYnVmKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc2VsZi5leGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSIpCiAgICAgICAgICAgICBzZWxmLmRidWYgKz0gYnVmCiAgICAgICAgICAgICBjICs9IGxlbihidWYpCkBAIC02MjUsNzYgKzYwNywxOSBAQAogICAgICAgICByZXR1cm4gc2VsZi5idWYKIAogICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5idWYuc3RhcnRzd2l0aChiIlwwMzdcMjEzXDAxMCIpOgorICAgICAgICBpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKGIiXHgxZlx4OGJceDA4Iik6CiAgICAgICAgICAgICByZXR1cm4gImd6IgotICAgICAgICBpZiBzZWxmLmJ1ZlswOjNdID09IGIiQlpoIiBhbmQgc2VsZi5idWZbNDoxMF0gPT0gYiIxQVkmU1kiOgorICAgICAgICBlbGlmIHNlbGYuYnVmWzA6M10gPT0gYiJCWmgiIGFuZCBzZWxmLmJ1Zls0OjEwXSA9PSBiIjFBWSZTWSI6CiAgICAgICAgICAgICByZXR1cm4gImJ6MiIKLSAgICAgICAgcmV0dXJuICJ0YXIiCisgICAgICAgIGVsaWYgc2VsZi5idWYuc3RhcnRzd2l0aCgoYiJceDVkXHgwMFx4MDBceDgwIiwgYiJceGZkN3pYWiIpKToKKyAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gInRhciIKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICMgY2xhc3MgU3RyZWFtUHJveHkKIAotY2xhc3MgX0JaMlByb3h5KG9iamVjdCk6Ci0gICAgIiIiU21hbGwgcHJveHkgY2xhc3MgdGhhdCBlbmFibGVzIGV4dGVybmFsIGZpbGUgb2JqZWN0Ci0gICAgICAgc3VwcG9ydCBmb3IgInI6YnoyIiBhbmQgInc6YnoyIiBtb2Rlcy4gVGhpcyBpcyBhY3R1YWxseQotICAgICAgIGEgd29ya2Fyb3VuZCBmb3IgYSBsaW1pdGF0aW9uIGluIGJ6MiBtb2R1bGUncyBCWjJGaWxlCi0gICAgICAgY2xhc3Mgd2hpY2ggKHVubGlrZSBnemlwLkd6aXBGaWxlKSBoYXMgbm8gc3VwcG9ydCBmb3IKLSAgICAgICBhIGZpbGUgb2JqZWN0IGFyZ3VtZW50LgotICAgICIiIgotCi0gICAgYmxvY2tzaXplID0gMTYgKiAxMDI0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSk6Ci0gICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKLSAgICAgICAgc2VsZi5tb2RlID0gbW9kZQotICAgICAgICBzZWxmLm5hbWUgPSBnZXRhdHRyKHNlbGYuZmlsZW9iaiwgIm5hbWUiLCBOb25lKQotICAgICAgICBzZWxmLmluaXQoKQotCi0gICAgZGVmIGluaXQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBiejIKLSAgICAgICAgc2VsZi5wb3MgPSAwCi0gICAgICAgIGlmIHNlbGYubW9kZSA9PSAiciI6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgIHNlbGYuYnVmID0gYiIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB4ID0gbGVuKHNlbGYuYnVmKQotICAgICAgICB3aGlsZSB4IDwgc2l6ZToKLSAgICAgICAgICAgIHJhdyA9IHNlbGYuZmlsZW9iai5yZWFkKHNlbGYuYmxvY2tzaXplKQotICAgICAgICAgICAgaWYgbm90IHJhdzoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZGF0YSA9IHNlbGYuYnoyb2JqLmRlY29tcHJlc3MocmF3KQotICAgICAgICAgICAgc2VsZi5idWYgKz0gZGF0YQotICAgICAgICAgICAgeCArPSBsZW4oZGF0YSkKLQotICAgICAgICBidWYgPSBzZWxmLmJ1Zls6c2l6ZV0KLSAgICAgICAgc2VsZi5idWYgPSBzZWxmLmJ1ZltzaXplOl0KLSAgICAgICAgc2VsZi5wb3MgKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHNlZWsoc2VsZiwgcG9zKToKLSAgICAgICAgaWYgcG9zIDwgc2VsZi5wb3M6Ci0gICAgICAgICAgICBzZWxmLmluaXQoKQotICAgICAgICBzZWxmLnJlYWQocG9zIC0gc2VsZi5wb3MpCi0KLSAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucG9zCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYucG9zICs9IGxlbihkYXRhKQotICAgICAgICByYXcgPSBzZWxmLmJ6Mm9iai5jb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUocmF3KQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1vZGUgPT0gInciOgotICAgICAgICAgICAgcmF3ID0gc2VsZi5iejJvYmouZmx1c2goKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHJhdykKLSMgY2xhc3MgX0JaMlByb3h5Ci0KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRXh0cmFjdGlvbiBmaWxlIG9iamVjdAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzA5LDYgKzYzNCw4IEBACiAgICAgICAgIHNlbGYub2Zmc2V0ID0gb2Zmc2V0CiAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IDAKKyAgICAgICAgc2VsZi5uYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAibmFtZSIsIE5vbmUpCisgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKIAogICAgICAgICBpZiBibG9ja2luZm8gaXMgTm9uZToKICAgICAgICAgICAgIGJsb2NraW5mbyA9IFsoMCwgc2l6ZSldCkBAIC03MjcsMTAgKzY1NCwxNiBAQAogICAgICAgICBpZiBsYXN0cG9zIDwgc2VsZi5zaXplOgogICAgICAgICAgICAgc2VsZi5tYXAuYXBwZW5kKChGYWxzZSwgbGFzdHBvcywgc2VsZi5zaXplLCBOb25lKSkKIAorICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5maWxlb2JqLCAic2Vla2FibGUiKToKLSAgICAgICAgICAgICMgWFhYIGd6aXAuR3ppcEZpbGUgYW5kIGJ6Mi5CWjJGaWxlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqLnNlZWthYmxlKCkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtNzM4LDEwICs2NzEsMjEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnBvc2l0aW9uCiAKLSAgICBkZWYgc2VlayhzZWxmLCBwb3NpdGlvbik6CisgICAgZGVmIHNlZWsoc2VsZiwgcG9zaXRpb24sIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgICIiIlNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYucG9zaXRpb24gPSBwb3NpdGlvbgorICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19TRVQ6CisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3NpdGlvbiwgMCksIHNlbGYuc2l6ZSkKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICBpZiBwb3NpdGlvbiA8IDA6CisgICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChzZWxmLnBvc2l0aW9uICsgcG9zaXRpb24sIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvc2l0aW9uLCBzZWxmLnNpemUpCisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfRU5EOgorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChtaW4oc2VsZi5zaXplICsgcG9zaXRpb24sIHNlbGYuc2l6ZSksIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IikKKyAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgICIiIlJlYWQgZGF0YSBmcm9tIHRoZSBmaWxlLgpAQCAtNzcwLDE0NSArNzE0LDIyIEBACiAgICAgICAgICAgICBzaXplIC09IGxlbmd0aAogICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW5ndGgKICAgICAgICAgcmV0dXJuIGJ1ZgotI2NsYXNzIF9GaWxlSW5GaWxlCiAKLQotY2xhc3MgRXhGaWxlT2JqZWN0KG9iamVjdCk6Ci0gICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KLSAgICAgICBJcyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkuCi0gICAgIiIiCi0gICAgYmxvY2tzaXplID0gMTAyNAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmZpbGUsIHRhcmluZm8pOgotICAgICAgICBzZWxmLmZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8ub2Zmc2V0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5zcGFyc2UpCi0gICAgICAgIHNlbGYubmFtZSA9IHRhcmluZm8ubmFtZQotICAgICAgICBzZWxmLm1vZGUgPSAiciIKLSAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnNpemUgPSB0YXJpbmZvLnNpemUKLQotICAgICAgICBzZWxmLnBvc2l0aW9uID0gMAotICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotCi0gICAgZGVmIHJlYWRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHdyaXRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iai5zZWVrYWJsZSgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgotICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcyBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIG5vdAotICAgICAgICAgICBwcmVzZW50IG9yIE5vbmUsIHJlYWQgYWxsIGRhdGEgdW50aWwgRU9GIGlzIHJlYWNoZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIGJ1ZiA9IGIiIgotICAgICAgICBpZiBzZWxmLmJ1ZmZlcjoKLSAgICAgICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuYnVmZmVyWzpzaXplXQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gc2VsZi5idWZmZXJbc2l6ZTpdCi0KLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgYnVmICs9IHNlbGYuZmlsZW9iai5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1ZiArPSBzZWxmLmZpbGVvYmoucmVhZChzaXplIC0gbGVuKGJ1ZikpCi0KLSAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW4oYnVmKQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICAjIFhYWCBUZXh0SU9XcmFwcGVyIHVzZXMgdGhlIHJlYWQxKCkgbWV0aG9kLgotICAgIHJlYWQxID0gcmVhZAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICAiIiJSZWFkIG9uZSBlbnRpcmUgbGluZSBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIHByZXNlbnQKLSAgICAgICAgICAgYW5kIG5vbi1uZWdhdGl2ZSwgcmV0dXJuIGEgc3RyaW5nIHdpdGggYXQgbW9zdCB0aGF0Ci0gICAgICAgICAgIHNpemUsIHdoaWNoIG1heSBiZSBhbiBpbmNvbXBsZXRlIGxpbmUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgYnVmID0gc2VsZi5maWxlb2JqLnJlYWQoc2VsZi5ibG9ja3NpemUpCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gYnVmCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZiBvciBiIlxuIiBpbiBidWY6Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICAgICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGxlbihzZWxmLmJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBzaXplICE9IC0xOgotICAgICAgICAgICAgcG9zID0gbWluKHNpemUsIHBvcykKLQotICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcls6cG9zXQotICAgICAgICBzZWxmLmJ1ZmZlciA9IHNlbGYuYnVmZmVyW3BvczpdCi0gICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCB3aXRoIGFsbCByZW1haW5pbmcgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpbmUpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KLQotICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPW9zLlNFRUtfU0VUKToKLSAgICAgICAgIiIiU2VlayB0byBhIHBvc2l0aW9uIGluIHRoZSBmaWxlLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICBpZiB3aGVuY2UgPT0gb3MuU0VFS19TRVQ6Ci0gICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3MsIDApLCBzZWxmLnNpemUpCi0gICAgICAgIGVsaWYgd2hlbmNlID09IG9zLlNFRUtfQ1VSOgotICAgICAgICAgICAgaWYgcG9zIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KHNlbGYucG9zaXRpb24gKyBwb3MsIDApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvcywgc2VsZi5zaXplKQotICAgICAgICBlbGlmIHdoZW5jZSA9PSBvcy5TRUVLX0VORDoKLSAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgobWluKHNlbGYuc2l6ZSArIHBvcywgc2VsZi5zaXplKSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYXJndW1lbnQiKQotCi0gICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKHNlbGYucG9zaXRpb24pCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICBidWYgPSBzZWxmLnJlYWQobGVuKGIpKQorICAgICAgICBiWzpsZW4oYnVmKV0gPSBidWYKKyAgICAgICAgcmV0dXJuIGxlbihidWYpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICIiIkNsb3NlIHRoZSBmaWxlIG9iamVjdC4KLSAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorI2NsYXNzIF9GaWxlSW5GaWxlCiAKLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIkdldCBhbiBpdGVyYXRvciBvdmVyIHRoZSBmaWxlJ3MgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHlpZWxkIGxpbmUKK2NsYXNzIEV4RmlsZU9iamVjdChpby5CdWZmZXJlZFJlYWRlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSwgdGFyaW5mbyk6CisgICAgICAgIGZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosIHRhcmluZm8ub2Zmc2V0X2RhdGEsCisgICAgICAgICAgICAgICAgdGFyaW5mby5zaXplLCB0YXJpbmZvLnNwYXJzZSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmaWxlb2JqKQogI2NsYXNzIEV4RmlsZU9iamVjdAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDg3LDcgKzkwOCw3IEBACiAgICAgZGVmIGNyZWF0ZV9wYXhfZ2xvYmFsX2hlYWRlcihjbHMsIHBheF9oZWFkZXJzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBibG9jayBzZXF1ZW5jZS4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV9wYXhfZ2VuZXJpY19oZWFkZXIocGF4X2hlYWRlcnMsIFhHTFRZUEUsICJ1dGY4IikKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlX3BheF9nZW5lcmljX2hlYWRlcihwYXhfaGVhZGVycywgWEdMVFlQRSwgInV0Zi04IikKIAogICAgIGRlZiBfcG9zaXhfc3BsaXRfbmFtZShzZWxmLCBuYW1lKToKICAgICAgICAgIiIiU3BsaXQgYSBuYW1lIGxvbmdlciB0aGFuIDEwMCBjaGFycyBpbnRvIGEgcHJlZml4CkBAIC0xMTcwLDcgKzk5MSw3IEBACiAgICAgICAgIGJpbmFyeSA9IEZhbHNlCiAgICAgICAgIGZvciBrZXl3b3JkLCB2YWx1ZSBpbiBwYXhfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmOCIsICJzdHJpY3QiKQorICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmLTgiLCAic3RyaWN0IikKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgYmluYXJ5ID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMTgxLDEzICsxMDAyLDEzIEBACiAgICAgICAgICAgICByZWNvcmRzICs9IGIiMjEgaGRyY2hhcnNldD1CSU5BUllcbiIKIAogICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGtleXdvcmQgPSBrZXl3b3JkLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBrZXl3b3JkID0ga2V5d29yZC5lbmNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGlmIGJpbmFyeToKICAgICAgICAgICAgICAgICAjIFRyeSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBieXRlIHJlcHJlc2VudGF0aW9uIG9mIGB2YWx1ZScuCiAgICAgICAgICAgICAgICAgIyBOZWVkbGVzcyB0byBzYXksIHRoYXQgdGhlIGVuY29kaW5nIG11c3QgbWF0Y2ggdGhlIHN0cmluZy4KICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZShlbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgidXRmLTgiKQogCiAgICAgICAgICAgICBsID0gbGVuKGtleXdvcmQpICsgbGVuKHZhbHVlKSArIDMgICAjICcgJyArICc9JyArICdcbicKICAgICAgICAgICAgIG4gPSBwID0gMApAQCAtMTM5Niw3ICsxMjE3LDcgQEAKICAgICAgICAgIyB0aGUgdHJhbnNsYXRpb24gdG8gVVRGLTggZmFpbHMuCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGJyIlxkKyBoZHJjaGFyc2V0PShbXlxuXSspXG4iLCBidWYpCiAgICAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGF4X2hlYWRlcnNbImhkcmNoYXJzZXQiXSA9IG1hdGNoLmdyb3VwKDEpLmRlY29kZSgidXRmOCIpCisgICAgICAgICAgICBwYXhfaGVhZGVyc1siaGRyY2hhcnNldCJdID0gbWF0Y2guZ3JvdXAoMSkuZGVjb2RlKCJ1dGYtOCIpCiAKICAgICAgICAgIyBGb3IgdGhlIHRpbWUgYmVpbmcsIHdlIGRvbid0IGNhcmUgYWJvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiAiQklOQVJZIi4KICAgICAgICAgIyBUaGUgb25seSBvdGhlciB2YWx1ZSB0aGF0IGlzIGN1cnJlbnRseSBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZCBpcwpAQCAtMTQwNSw3ICsxMjI2LDcgQEAKICAgICAgICAgaWYgaGRyY2hhcnNldCA9PSAiQklOQVJZIjoKICAgICAgICAgICAgIGVuY29kaW5nID0gdGFyZmlsZS5lbmNvZGluZwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmOCIKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IgogCiAgICAgICAgICMgUGFyc2UgcGF4IGhlYWRlciBpbmZvcm1hdGlvbi4gQSByZWNvcmQgbG9va3MgbGlrZSB0aGF0OgogICAgICAgICAjICIlZCAlcz0lc1xuIiAlIChsZW5ndGgsIGtleXdvcmQsIHZhbHVlKS4gbGVuZ3RoIGlzIHRoZSBzaXplCkBAIC0xNDIyLDIwICsxMjQzLDIwIEBACiAgICAgICAgICAgICBsZW5ndGggPSBpbnQobGVuZ3RoKQogICAgICAgICAgICAgdmFsdWUgPSBidWZbbWF0Y2guZW5kKDIpICsgMTptYXRjaC5zdGFydCgxKSArIGxlbmd0aCAtIDFdCiAKLSAgICAgICAgICAgICMgTm9ybWFsbHksIHdlIGNvdWxkIGp1c3QgdXNlICJ1dGY4IiBhcyB0aGUgZW5jb2RpbmcgYW5kICJzdHJpY3QiCisgICAgICAgICAgICAjIE5vcm1hbGx5LCB3ZSBjb3VsZCBqdXN0IHVzZSAidXRmLTgiIGFzIHRoZSBlbmNvZGluZyBhbmQgInN0cmljdCIKICAgICAgICAgICAgICMgYXMgdGhlIGVycm9yIGhhbmRsZXIsIGJ1dCB3ZSBiZXR0ZXIgbm90IHRha2UgdGhlIHJpc2suIEZvcgogICAgICAgICAgICAgIyBleGFtcGxlLCBHTlUgdGFyIDw9IDEuMjMgaXMga25vd24gdG8gc3RvcmUgZmlsZW5hbWVzIGl0IGNhbm5vdAogICAgICAgICAgICAgIyB0cmFuc2xhdGUgdG8gVVRGLTggYXMgcmF3IHN0cmluZ3MgKHVuZm9ydHVuYXRlbHkgd2l0aG91dCBhCiAgICAgICAgICAgICAjIGhkcmNoYXJzZXQ9QklOQVJZIGhlYWRlcikuCiAgICAgICAgICAgICAjIFdlIGZpcnN0IHRyeSB0aGUgc3RyaWN0IHN0YW5kYXJkIGVuY29kaW5nLCBhbmQgaWYgdGhhdCBmYWlscyB3ZQogICAgICAgICAgICAgIyBmYWxsIGJhY2sgb24gdGhlIHVzZXIncyBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KLSAgICAgICAgICAgIGtleXdvcmQgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKGtleXdvcmQsICJ1dGY4IiwgInV0ZjgiLAorICAgICAgICAgICAga2V5d29yZCA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQoa2V5d29yZCwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBpZiBrZXl3b3JkIGluIFBBWF9OQU1FX0ZJRUxEUzoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsIGVuY29kaW5nLCB0YXJmaWxlLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgInV0ZjgiLCAidXRmOCIsCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKHZhbHVlLCAidXRmLTgiLCAidXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAKICAgICAgICAgICAgIHBheF9oZWFkZXJzW2tleXdvcmRdID0gdmFsdWUKQEAgLTE1OTUsNyArMTQxNiw3IEBACiAKICAgICB0YXJpbmZvID0gVGFySW5mbyAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBUYXJJbmZvIGNsYXNzIHRvIHVzZS4KIAotICAgIGZpbGVvYmplY3QgPSBFeEZpbGVPYmplY3QgICAjIFRoZSBkZWZhdWx0IEV4RmlsZU9iamVjdCBjbGFzcyB0byB1c2UuCisgICAgZmlsZW9iamVjdCA9IEV4RmlsZU9iamVjdCAgICMgVGhlIGZpbGUtb2JqZWN0IGZvciBleHRyYWN0ZmlsZSgpLgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLApAQCAtMTcxNCwxOCArMTUzNSwyMiBAQAogICAgICAgICAgICAncjonICAgICAgICAgb3BlbiBmb3IgcmVhZGluZyBleGNsdXNpdmVseSB1bmNvbXByZXNzZWQKICAgICAgICAgICAgJ3I6Z3onICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBnemlwIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyOmJ6MicgICAgICBvcGVuIGZvciByZWFkaW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KKyAgICAgICAgICAgJ3I6eHonICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdhJyBvciAnYTonICBvcGVuIGZvciBhcHBlbmRpbmcsIGNyZWF0aW5nIHRoZSBmaWxlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAndycgb3IgJ3c6JyAgb3BlbiBmb3Igd3JpdGluZyB3aXRob3V0IGNvbXByZXNzaW9uCiAgICAgICAgICAgICd3Omd6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbgogICAgICAgICAgICAndzpiejInICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICAgICAgICd3Onh6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggbHptYSBjb21wcmVzc2lvbgogCiAgICAgICAgICAgICdyfConICAgICAgICBvcGVuIGEgc3RyZWFtIG9mIHRhciBibG9ja3Mgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbgogICAgICAgICAgICAncnwnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MgZm9yIHJlYWRpbmcKICAgICAgICAgICAgJ3J8Z3onICAgICAgIG9wZW4gYSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKICAgICAgICAgICAgJ3J8YnoyJyAgICAgIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCisgICAgICAgICAgICdyfHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwogICAgICAgICAgICAnd3wnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgICAgICd3fGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICAnd3xiejInICAgICAgb3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCisgICAgICAgICAgICd3fHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IG5hbWUgYW5kIG5vdCBmaWxlb2JqOgpAQCAtMTgzMiwxMCArMTY1Nyw4IEBACiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImJ6MiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCiAKLSAgICAgICAgaWYgZmlsZW9iaiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBfQloyUHJveHkoZmlsZW9iaiwgbW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShmaWxlb2JqIG9yIG5hbWUsIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQpAQCAtMTg0NSwxMSArMTY2OCwzNSBAQAogICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICAgcmV0dXJuIHQKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB4em9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBwcmVzZXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAiIiJPcGVuIGx6bWEgY29tcHJlc3NlZCB0YXIgYXJjaGl2ZSBuYW1lIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuCisgICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InIG9yICd3JyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGx6bWEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigibHptYSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgZmlsZW9iaiA9IGx6bWEuTFpNQUZpbGUoZmlsZW9iaiBvciBuYW1lLCBtb2RlLCBwcmVzZXQ9cHJlc2V0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IChsem1hLkxaTUFFcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgZmlsZW9iai5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoIm5vdCBhbiBsem1hIGZpbGUiKQorICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHQKKwogICAgICMgQWxsICpvcGVuKCkgbWV0aG9kcyBhcmUgcmVnaXN0ZXJlZCBoZXJlLgogICAgIE9QRU5fTUVUSCA9IHsKICAgICAgICAgInRhciI6ICJ0YXJvcGVuIiwgICAjIHVuY29tcHJlc3NlZCB0YXIKICAgICAgICAgImd6IjogICJnem9wZW4iLCAgICAjIGd6aXAgY29tcHJlc3NlZCB0YXIKLSAgICAgICAgImJ6MiI6ICJiejJvcGVuIiAgICAjIGJ6aXAyIGNvbXByZXNzZWQgdGFyCisgICAgICAgICJiejIiOiAiYnoyb3BlbiIsICAgIyBiemlwMiBjb21wcmVzc2VkIHRhcgorICAgICAgICAieHoiOiAgInh6b3BlbiIgICAgICMgbHptYSBjb21wcmVzc2VkIHRhcgogICAgIH0KIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjAwOSw3ICsxODU2LDcgQEAKIAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBzZWxmOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludChmaWxlbW9kZSh0YXJpbmZvLm1vZGUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBwcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLmduYW1lIG9yIHRhcmluZm8uZ2lkKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBpZiB0YXJpbmZvLmlzY2hyKCkgb3IgdGFyaW5mby5pc2JsaygpOgpAQCAtMjE5MSwxMiArMjAzOCw5IEBACiAKICAgICBkZWYgZXh0cmFjdGZpbGUoc2VsZiwgbWVtYmVyKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuIGBtZW1iZXInIG1heSBiZQotICAgICAgICAgICBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIElmIGBtZW1iZXInIGlzIGEgcmVndWxhciBmaWxlLCBhCi0gICAgICAgICAgIGZpbGUtbGlrZSBvYmplY3QgaXMgcmV0dXJuZWQuIElmIGBtZW1iZXInIGlzIGEgbGluaywgYSBmaWxlLWxpa2UKLSAgICAgICAgICAgb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGxpbmsncyB0YXJnZXQuIElmIGBtZW1iZXInIGlzIG5vbmUgb2YKLSAgICAgICAgICAgdGhlIGFib3ZlLCBOb25lIGlzIHJldHVybmVkLgotICAgICAgICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgbWV0aG9kczogcmVhZCgpLCByZWFkbGluZSgpLCByZWFkbGluZXMoKSwgc2VlaygpIGFuZCB0ZWxsKCkKKyAgICAgICAgICAgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBJZiBgbWVtYmVyJyBpcyBhIHJlZ3VsYXIgZmlsZSBvciBhCisgICAgICAgICAgIGxpbmssIGFuIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBOb25lIGlzCisgICAgICAgICAgIHJldHVybmVkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMjA1LDEyICsyMDQ5LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhcmluZm8gPSBtZW1iZXIKIAotICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqZWN0KHNlbGYsIHRhcmluZm8pCi0KLSAgICAgICAgZWxpZiB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKLSAgICAgICAgICAgICMgSWYgYSBtZW1iZXIncyB0eXBlIGlzIHVua25vd24sIGl0IGlzIHRyZWF0ZWQgYXMgYQotICAgICAgICAgICAgIyByZWd1bGFyIGZpbGUuCisgICAgICAgIGlmIHRhcmluZm8uaXNyZWcoKSBvciB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKKyAgICAgICAgICAgICMgTWVtYmVycyB3aXRoIHVua25vd24gdHlwZXMgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBmaWxlcy4KICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmplY3Qoc2VsZiwgdGFyaW5mbykKIAogICAgICAgICBlbGlmIHRhcmluZm8uaXNsbmsoKSBvciB0YXJpbmZvLmlzc3ltKCk6CkBAIC0yMjgyLDkgKzIxMjIsOCBAQAogICAgICAgICAgICAgIyBVc2UgYSBzYWZlIG1vZGUgZm9yIHRoZSBkaXJlY3RvcnksIHRoZSByZWFsIG1vZGUgaXMgc2V0CiAgICAgICAgICAgICAjIGxhdGVyIGluIF9leHRyYWN0X21lbWJlcigpLgogICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCwgMG83MDApCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIG1ha2VmaWxlKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgogICAgICAgICAiIiJNYWtlIGEgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KZGlmZiAtLWdpdCBhL0xpYi90ZW1wZmlsZS5weSBiL0xpYi90ZW1wZmlsZS5weQppbmRleCBiOGZjMThjLi40N2M2MGY0IDEwMDY0NAotLS0gYS9MaWIvdGVtcGZpbGUucHkKKysrIGIvTGliL3RlbXBmaWxlLnB5CkBAIC0xMCw4ICsxMCw2IEBACiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCiAgICAgICAgICAgICAgZ2l2aW5nIHVwLgotICB0ZW1wbGF0ZSAtIHRoZSBkZWZhdWx0IHByZWZpeCBmb3IgYWxsIHRlbXBvcmFyeSBuYW1lcy4KLSAgICAgICAgICAgICBZb3UgbWF5IGNoYW5nZSB0aGlzIHRvIGNvbnRyb2wgdGhlIGRlZmF1bHQgcHJlZml4LgogICB0ZW1wZGlyICAtIElmIHRoaXMgaXMgc2V0IHRvIGEgc3RyaW5nIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mCiAgICAgICAgICAgICAgYW55IHJvdXRpbmUgZnJvbSB0aGlzIG1vZHVsZSwgaXQgd2lsbCBiZSBjb25zaWRlcmVkIGFzCiAgICAgICAgICAgICAgYW5vdGhlciBjYW5kaWRhdGUgbG9jYXRpb24gdG8gc3RvcmUgdGVtcG9yYXJ5IGZpbGVzLgpAQCAtMzMsNyArMzEsNiBAQAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgaW8gYXMgX2lvCiBpbXBvcnQgb3MgYXMgX29zCi1pbXBvcnQgZXJybm8gYXMgX2Vycm5vCiBmcm9tIHJhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIF9SYW5kb20KIAogdHJ5OgpAQCAtNDUsNyArNDIsNyBAQAogICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmbGFncyA9IF9mY250bC5mY250bChmZCwgX2ZjbnRsLkZfR0VURkQsIDApCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZmxhZ3MgcmVhZCBzdWNjZXNzZnVsbHksIG1vZGlmeQpAQCAtNzQsNiArNzEsOCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAorIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcworIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04NSwxOSArODQsMTYgQEAKIGVsaWYgaGFzYXR0cihfb3MsICJzdGF0Iik6CiAgICAgX3N0YXQgPSBfb3Muc3RhdAogZWxzZToKLSAgICAjIEZhbGxiYWNrLiAgQWxsIHdlIG5lZWQgaXMgc29tZXRoaW5nIHRoYXQgcmFpc2VzIG9zLmVycm9yIGlmIHRoZQorICAgICMgRmFsbGJhY2suICBBbGwgd2UgbmVlZCBpcyBzb21ldGhpbmcgdGhhdCByYWlzZXMgT1NFcnJvciBpZiB0aGUKICAgICAjIGZpbGUgZG9lc24ndCBleGlzdC4KICAgICBkZWYgX3N0YXQoZm4pOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gb3BlbihmbikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBfb3MuZXJyb3IKKyAgICAgICAgZiA9IG9wZW4oZm4pCiAgICAgICAgIGYuY2xvc2UoKQogCiBkZWYgX2V4aXN0cyhmbik6CiAgICAgdHJ5OgogICAgICAgICBfc3RhdChmbikKLSAgICBleGNlcHQgX29zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMTQ5LDcgKzE0NSw3IEBACiAgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgdHJ5OgogICAgICAgICBkaXJsaXN0LmFwcGVuZChfb3MuZ2V0Y3dkKCkpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgX29zLmVycm9yKToKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmN1cmRpcikKIAogICAgIHJldHVybiBkaXJsaXN0CkBAIC0xODEsMTIgKzE3NywxMSBAQAogICAgICAgICAgICAgICAgIF9vcy51bmxpbmsoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgZGVsIGZwLCBmZAogICAgICAgICAgICAgICAgIHJldHVybiBkaXIKLSAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gX2Vycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRU5PRU5ULAotICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvdW5kIGluICVzIiAlIGRpcmxpc3QpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhayAgICMgbm8gcG9pbnQgdHJ5aW5nIG1vcmUgbmFtZXMgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm91bmQgaW4gJXMiICUgZGlybGlzdCkKIAogX25hbWVfc2VxdWVuY2UgPSBOb25lCiAKQEAgLTIxNiwxMiArMjExLDEwIEBACiAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGZpbGUsIGZsYWdzLCAwbzYwMCkKICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZCkKICAgICAgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vID09IF9lcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgY29udGludWUgIyB0cnkgYWdhaW4KLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQogCiAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCkBAIC0zMDUsMTIgKzI5OCwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MubWtkaXIoZmlsZSwgMG83MDApCiAgICAgICAgICAgICByZXR1cm4gZmlsZQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgdHJ5IGFnYWluCi0gICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KIAotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVFWElTVCwgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCiAKIGRlZiBta3RlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKICAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiAgVGhlCkBAIC0zMzksNyArMzMwLDcgQEAKICAgICAgICAgaWYgbm90IF9leGlzdHMoZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZQogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlbmFtZSBmb3VuZCIpCisgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKCJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvdW5kIikKIAogCiBjbGFzcyBfVGVtcG9yYXJ5RmlsZVdyYXBwZXI6CkBAIC01OTIsOCArNTgzLDEzIEBACiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlLnRlbGwoKQogCi0gICAgZGVmIHRydW5jYXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKCkKKyAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZT1Ob25lKToKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzaXplID4gc2VsZi5fbWF4X3NpemU6CisgICAgICAgICAgICAgICAgc2VsZi5yb2xsb3ZlcigpCisgICAgICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKHNpemUpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgIGZpbGUgPSBzZWxmLl9maWxlCkBAIC02NjksNyArNjY1LDcgQEAKICAgICBfaXNsaW5rID0gc3RhdGljbWV0aG9kKF9vcy5wYXRoLmlzbGluaykKICAgICBfcmVtb3ZlID0gc3RhdGljbWV0aG9kKF9vcy5yZW1vdmUpCiAgICAgX3JtZGlyID0gc3RhdGljbWV0aG9kKF9vcy5ybWRpcikKLSAgICBfb3NfZXJyb3IgPSBfb3MuZXJyb3IKKyAgICBfb3NfZXJyb3IgPSBPU0Vycm9yCiAgICAgX3dhcm4gPSBfd2FybmluZ3Mud2FybgogCiAgICAgZGVmIF9ybXRyZWUoc2VsZiwgcGF0aCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkgYi9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkKaW5kZXggNmQyMGY3ZC4uY2Y1NGMyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weQpAQCAtMjAwLDcgKzIwMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ2FiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKEZhbHNlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYidcbicsIGInYWJjXG4nLCBiJ2RlZlxyXG4nLCBiJ2doaVxuJywgYidcciddLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYicnLCBiJ2FiYycsIGInZGVmJywgYidnaGknLCBiJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ1xuJywgYidhYmNcbicsIGInZGVmXHJcbicsIGInZ2hpXG4nLCBiJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFyc2hhbChiJ2FiYycpLnNwbGl0bGluZXMsIDQyLCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRSBiL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRQppbmRleCAyYTczZTFiLi4wMjU5YTA2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUKKysrIGIvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FCkBAIC0xNCwzICsxNCw3IEBACiBPbmNlIHRoZSBjcmFzaCBpcyBmaXhlZCwgdGhlIHRlc3QgY2FzZSBzaG91bGQgYmUgbW92ZWQgaW50byBhbiBhcHByb3ByaWF0ZSB0ZXN0CiAoZXZlbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBmcm9tIHRoZSB0ZXN0IHN1aXRlKS4gIFRoaXMgZW5zdXJlcyB0aGUgcmVncmVzc2lvbgogZG9lc24ndCBoYXBwZW4gYWdhaW4uICBBbmQgaWYgaXQgZG9lcywgaXQgc2hvdWxkIGJlIGVhc2llciB0byB0cmFjayBkb3duLgorCitBbHNvIHNlZSBMaWIvdGVzdF9jcmFzaGVycy5weSB3aGljaCBleGVyY2lzZXMgdGhlIGNyYXNoZXJzIGluIHRoaXMgZGlyZWN0b3J5LgorSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHRvIGFkZCBhbnkgbmV3IGluZmluaXRlIGxvb3AgY3Jhc2hlcnMgdG8gdGhlIGJsYWNrCitsaXN0IHNvIGl0IGRvZXNuJ3QgdHJ5IHRvIHJ1biB0aGVtLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzEucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyZjQ2NC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIHRoZSBjYWxsIGluIGRpY3RvYmplY3QuYy4KLSIiIgotCi1jbGFzcyBBKG9iamVjdCk6Ci0gICAgcGFzcwotCi1jbGFzcyBCKG9iamVjdCk6Ci0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHByaW50KCdoaScpCi0gICAgICAgIGRlbCBELl9fbWlzc2luZ19fCi0KLWNsYXNzIEQoZGljdCk6Ci0gICAgY2xhc3MgX19taXNzaW5nX186Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KLQotZCA9IEQoKQotYSA9IEEoKQotYS5jeWNsZSA9IGEKLWEub3RoZXIgPSBCKCkKLWRlbCBhCi0KLXByZXYgPSBOb25lCi13aGlsZSAxOgotICAgIGRbNV0KLSAgICBwcmV2ID0gKHByZXYsKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzIucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MDNlYi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKCkuCi0KLU5CLiBvbiBteSBtYWNoaW5lIHRoaXMgY3Jhc2hlcyBpbiAyLjUgZGVidWcgYnV0IG5vdCByZWxlYXNlLgotIiIiCi0KLWNsYXNzIEEob2JqZWN0KToKLSAgICBwYXNzCi0KLWNsYXNzIEIob2JqZWN0KToKLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgcHJpbnQoImhpIikKLSAgICAgICAgZGVsIEMuZAotCi1jbGFzcyBEKG9iamVjdCk6Ci0gICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuaGVsbG8gPSA0MgotCi1jbGFzcyBDKG9iamVjdCk6Ci0gICAgZCA9IEQoKQotCi0gICAgZGVmIGcoKToKLSAgICAgICAgcGFzcwotCi0KLWMgPSBDKCkKLWEgPSBBKCkKLWEuY3ljbGUgPSBhCi1hLm90aGVyID0gQigpCi0KLWxzdCA9IFtOb25lXSAqIDEwMDAwMDAKLWkgPSAwCi1kZWwgYQotd2hpbGUgMToKLSAgICBjLmQgPSA0MiAgICAgICAgICMgc2VnZmF1bHRzIGluIFB5TWV0aG9kX05ldyhfX2Z1bmNfXz1ELl9fc2V0X18sIF9fc2VsZl9fPWQpCi0gICAgbHN0W2ldID0gYy5nICAgICAjIGNvbnN1bWUgdGhlIGZyZWUgbGlzdCBvZiBpbnN0YW5jZW1ldGhvZCBvYmplY3RzCi0gICAgaSArPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTRiZGQuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0iIiIKLVRoZSBjb21waWxlciAoPj0gMi41KSByZWN1cnNlcyBoYXBwaWx5LgotIiIiCi0KLWNvbXBpbGUoJygpJyo5Kio1LCAnPycsICdleGVjJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiY2QzMi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9sb29zaW5nX21yb19yZWYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0iIiIKLVRoZXJlIGlzIGEgd2F5IHRvIHB1dCBrZXlzIG9mIGFueSB0eXBlIGluIGEgdHlwZSdzIGRpY3Rpb25hcnkuCi1JIHRoaW5rIHRoaXMgYWxsb3dzIHZhcmlvdXMga2luZHMgb2YgY3Jhc2hlcywgYnV0IHNvIGZhciBJIGhhdmUgb25seQotZm91bmQgYSBjb252b2x1dGVkIGF0dGFjayBvZiBfUHlUeXBlX0xvb2t1cCgpLCB3aGljaCB1c2VzIHRoZSBtcm8gb2YgdGhlCi10eXBlIHdpdGhvdXQgaG9sZGluZyBhIHN0cm9uZyByZWZlcmVuY2UgdG8gaXQuICBQcm9iYWJseSB3b3JrcyB3aXRoCi1zdXBlci5fX2dldGF0dHJpYnV0ZV9fKCkgdG9vLCB3aGljaCB1c2VzIHRoZSBzYW1lIGtpbmQgb2YgY29kZS4KLSIiIgotCi1jbGFzcyBNeUtleShvYmplY3QpOgotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goJ215a2V5JykKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBkZWNyZWZzIHRoZSBwcmV2aW91cyBYLl9fbXJvX18KLSAgICAgICAgWC5fX2Jhc2VzX18gPSAoQmFzZTIsKQotICAgICAgICAjIHRyYXNoIGFsbCB0dXBsZXMgb2YgbGVuZ3RoIDMsIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpdGVtcyBvZgotICAgICAgICAjIHRoZSBwcmV2aW91cyBYLl9fbXJvX18gYXJlIHJlYWxseSBnYXJiYWdlCi0gICAgICAgIHogPSBbXQotICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKLSAgICAgICAgICAgIHouYXBwZW5kKChpLCBOb25lLCBOb25lKSkKLSAgICAgICAgcmV0dXJuIDAKLQotCi1jbGFzcyBCYXNlKG9iamVjdCk6Ci0gICAgbXlrZXkgPSAnZnJvbSBCYXNlJwotCi1jbGFzcyBCYXNlMihvYmplY3QpOgotICAgIG15a2V5ID0gJ2Zyb20gQmFzZTInCi0KLSMgeW91IGNhbid0IGFkZCBhIG5vbi1zdHJpbmcga2V5IHRvIFguX19kaWN0X18sIGJ1dCBpdCBjYW4gYmUKLSMgdGhlcmUgZnJvbSB0aGUgYmVnaW5uaW5nIDotKQotWCA9IHR5cGUoJ1gnLCAoQmFzZSwpLCB7TXlLZXkoKTogNX0pCi0KLXByaW50KFgubXlrZXkpCi0jIEkgZ2V0IGEgc2VnZmF1bHQsIG9yIGEgc2xpZ2h0bHkgd3JvbmcgYXNzZXJ0aW9uIGVycm9yIGluIGEgZGVidWcgYnVpbGQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvbmFzdHlfZXFfdnNfZGljdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVmN2NhZi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyBmcm9tIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwMS1KdW5lLzAxNTIzOS5odG1sCi0KLSMgaWYgeW91IGtlZXAgY2hhbmdpbmcgYSBkaWN0aW9uYXJ5IHdoaWxlIGxvb2tpbmcgdXAgYSBrZXksIHlvdSBjYW4KLSMgcHJvdm9rZSBhbiBpbmZpbml0ZSByZWN1cnNpb24gaW4gQwotCi0jIEF0IHRoZSB0aW1lIG5laXRoZXIgVGltIG5vciBNaWNoYWVsIGNvdWxkIGJlIGJvdGhlcmVkIHRvIHRoaW5rIG9mIGEKLSMgd2F5IHRvIGZpeCBpdC4KLQotY2xhc3MgWXVjazoKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuaSA9IDAKLQotICAgIGRlZiBtYWtlX2Rhbmdlcm91cyhzZWxmKToKLSAgICAgICAgc2VsZi5pID0gMQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICAjIGRpcmVjdCB0byBzbG90IDQgaW4gdGFibGUgb2Ygc2l6ZSA4OyBzbG90IDEyIHdoZW4gc2l6ZSAxNgotICAgICAgICByZXR1cm4gNCArIDgKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxmLmkgPT0gMDoKLSAgICAgICAgICAgICMgbGVhdmUgZGljdCBhbG9uZQotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbGlmIHNlbGYuaSA9PSAxOgotICAgICAgICAgICAgIyBmaWRkbGUgdG8gMTYgc2xvdHMKLSAgICAgICAgICAgIHNlbGYuX19maWxsX2RpY3QoNikKLSAgICAgICAgICAgIHNlbGYuaSA9IDIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZmlkZGxlIHRvIDggc2xvdHMKLSAgICAgICAgICAgIHNlbGYuX19maWxsX2RpY3QoNCkKLSAgICAgICAgICAgIHNlbGYuaSA9IDEKLQotICAgICAgICByZXR1cm4gMQotCi0gICAgZGVmIF9fZmlsbF9kaWN0KHNlbGYsIG4pOgotICAgICAgICBzZWxmLmkgPSAwCi0gICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgICAgIGRpY3RbaV0gPSBpCi0gICAgICAgIGRpY3Rbc2VsZl0gPSAiT0shIgotCi15ID0gWXVjaygpCi1kaWN0ID0ge3k6ICJPSyEifQotCi16ID0gWXVjaygpCi15Lm1ha2VfZGFuZ2Vyb3VzKCkKLXByaW50KGRpY3Rbel0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9yZWN1cnNpb25fbGltaXRfdG9vX2hpZ2gucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9yZWN1cnNpb25fbGltaXRfdG9vX2hpZ2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNjQ5MzYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvcmVjdXJzaW9uX2xpbWl0X3Rvb19oaWdoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbWF5IGNyYXNoIG9yIG5vdCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgotIyBFLmcuIG9uIDMyLWJpdCBJbnRlbCBMaW51eCBpbiBhICJzdGFuZGFyZCIgY29uZmlndXJhdGlvbiBpdCBzZWVtcyB0bwotIyBjcmFzaCBvbiBQeXRob24gMi41IChidXQgbm90IDIuNCBub3IgMi4zKS4gIE9uIFdpbmRvd3MgdGhlIGltcG9ydAotIyBldmVudHVhbGx5IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSwgcG9zc2libHkgYmVjYXVzZSB3ZSBydW4gb3V0IG9mCi0jIGZpbGUgaGFuZGxlcy4KLQotIyBUaGUgcG9pbnQgb2YgdGhpcyBleGFtcGxlIGlzIHRvIHNob3cgdGhhdCBzeXMuc2V0cmVjdXJzaW9ubGltaXQoKSBpcyBhCi0jIGhhY2ssIGFuZCBub3QgYSByb2J1c3Qgc29sdXRpb24uICBUaGlzIGV4YW1wbGUgc2ltcGx5IGV4ZXJjaXNlcyBhIHBhdGgKLSMgd2hlcmUgaXQgdGFrZXMgbWFueSBDLWxldmVsIHJlY3Vyc2lvbnMsIGNvbnN1bWluZyBhIGxvdCBvZiBzdGFjawotIyBzcGFjZSwgZm9yIGVhY2ggUHl0aG9uLWxldmVsIHJlY3Vyc2lvbi4gIFNvIDEwMDAgdGltZXMgdGhpcyBhbW91bnQgb2YKLSMgc3RhY2sgc3BhY2UgbWF5IGJlIHRvbyBtdWNoIGZvciBzdGFuZGFyZCBwbGF0Zm9ybXMgYWxyZWFkeS4KLQotaW1wb3J0IHN5cwotaWYgJ3JlY3Vyc2lvbl9saW1pdF90b29faGlnaCcgaW4gc3lzLm1vZHVsZXM6Ci0gICAgZGVsIHN5cy5tb2R1bGVzWydyZWN1cnNpb25fbGltaXRfdG9vX2hpZ2gnXQotaW1wb3J0IHJlY3Vyc2lvbl9saW1pdF90b29faGlnaApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCBiYjE4NjMwLi45MzFlZjZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtOTc5LDcgKzk3OSw3IEBACiAgICAgICAgICMgZXhlbXB0IHN1Y2ggcGxhdGZvcm1zIChwcm92aWRlZCB0aGV5IHJldHVybiByZWFzb25hYmxlCiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgaW5zYW5lIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNhbmUpCiAKICAgICBkZWYgdGVzdF90b2RheShzZWxmKToKQEAgLTEyOTEsMTIgKzEyOTEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGhlY2xhc3MubWluKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50aGVjbGFzcy5tYXgpCiAKLSAgICBkZWYgdGVzdF9zdHJmdGltZV9vdXRfb2ZfcmFuZ2Uoc2VsZik6Ci0gICAgICAgICMgRm9yIG5hc3R5IHRlY2huaWNhbCByZWFzb25zLCB3ZSBjYW4ndCBoYW5kbGUgeWVhcnMgYmVmb3JlIDEwMDAuCi0gICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMoMTAwMCwgMSwgMSkuc3RyZnRpbWUoIiVZIiksICIxMDAwIikKLSAgICAgICAgZm9yIHkgaW4gMSwgNDksIDUxLCA5OSwgMTAwLCA5OTk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjbHMoeSwgMSwgMSkuc3RyZnRpbWUsICIlWSIpCisgICAgZGVmIHRlc3Rfc3RyZnRpbWVfeTJrKHNlbGYpOgorICAgICAgICBmb3IgeSBpbiAoMSwgNDksIDcwLCA5OSwgMTAwLCA5OTksIDEwMDAsIDE5NzApOgorICAgICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoeSwgMSwgMSkKKyAgICAgICAgICAgICMgSXNzdWUgMTMzMDU6ICBGb3IgeWVhcnMgPCAxMDAwLCB0aGUgdmFsdWUgaXMgbm90IGFsd2F5cworICAgICAgICAgICAgIyBwYWRkZWQgdG8gNCBkaWdpdHMgYWNyb3NzIHBsYXRmb3Jtcy4gIFRoZSBDIHN0YW5kYXJkCisgICAgICAgICAgICAjIGFzc3VtZXMgeWVhciA+PSAxOTAwLCBzbyBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBudW1iZXIKKyAgICAgICAgICAgICMgb2YgZGlnaXRzLgorICAgICAgICAgICAgaWYgZC5zdHJmdGltZSgiJVkiKSAhPSAnJTA0ZCcgJSB5OgorICAgICAgICAgICAgICAgICMgWWVhciA0MiByZXR1cm5zICc0MicsIG5vdCBwYWRkZWQKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuc3RyZnRpbWUoIiVZIiksICclZCcgJSB5KQorICAgICAgICAgICAgICAgICMgJzAwNDInIGlzIG9idGFpbmVkIGFueXdheQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5zdHJmdGltZSgiJTRZIiksICclMDRkJyAlIHkpCiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCkBAIC0xNzMxLDEzICsxNzM3LDc0IEBACiAgICAgICAgIGdvdCA9IHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCh0cykKICAgICAgICAgc2VsZi52ZXJpZnlfZmllbGRfZXF1YWxpdHkoZXhwZWN0ZWQsIGdvdCkKIAorICAgICMgUnVuIHdpdGggVVMtc3R5bGUgRFNUIHJ1bGVzOiBEU1QgYmVnaW5zIDIgYS5tLiBvbiBzZWNvbmQgU3VuZGF5IGluCisgICAgIyBNYXJjaCAoTTMuMi4wKSBhbmQgZW5kcyAyIGEubS4gb24gZmlyc3QgU3VuZGF5IGluIE5vdmVtYmVyIChNMTEuMS4wKS4KKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbmFpdmUoc2VsZik6CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwgMTgwMDAuMCkKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgMSwgMiwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwLjAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCisgICAgICAgICMgTWlzc2luZyBob3VyIG1heSBwcm9kdWNlIHBsYXRmb3JtLWRlcGVuZGVudCByZXN1bHQKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICBbdCAtIHRpbWVkZWx0YShob3Vycz0xKSwgdCArIHRpbWVkZWx0YShob3Vycz0xKV0pCisgICAgICAgICMgQW1iaWd1b3VzIGhvdXIgZGVmYXVsdHMgdG8gRFNUCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCAxLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksIHQpCisKKyAgICAgICAgIyBUaW1lc3RhbXAgbWF5IHJhaXNlIGFuIG92ZXJmbG93IGVycm9yIG9uIHNvbWUgcGxhdGZvcm1zCisgICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDEsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk5LDEyLDEyKV06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcyA9IHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAocyksIHQpCisKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfYXdhcmUoc2VsZik6CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwgMC4wKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89dGltZXpvbmUodGltZWRlbHRhKGhvdXJzPS01KSwgJ0VTVCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCiAgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRfcm91bmRpbmcoc2VsZik6Ci0gICAgICAgICMgVGVzdCB3aGV0aGVyIGZyb210aW1lc3RhbXAgInJvdW5kcyB1cCIgZmxvYXRzIHRoYXQgYXJlIGxlc3MKLSAgICAgICAgIyB0aGFuIDEvMiBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYW4gaW50ZWdlci4KICAgICAgICAgZm9yIGZ0cyBpbiBbc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXBdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHMoMC45OTk5OTk5KSwgZnRzKDEpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHMoMC45OTk5OTk0OSkubWljcm9zZWNvbmQsIDk5OTk5OSkKKyAgICAgICAgICAgIHplcm8gPSBmdHMoMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemVyby5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHplcm8ubWljcm9zZWNvbmQsIDApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbWludXNfb25lID0gZnRzKC0xZS02KQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBsb2NhbHRpbWUoLTEpIGFuZCBnbXRpbWUoLTEpIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cworICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW51c19vbmUuc2Vjb25kLCA1OSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbnVzX29uZS5taWNyb3NlY29uZCwgOTk5OTk5KQorCisgICAgICAgICAgICAgICAgdCA9IGZ0cygtMWUtOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIG1pbnVzX29uZSkKKyAgICAgICAgICAgICAgICB0ID0gZnRzKC05ZS03KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgbWludXNfb25lKQorICAgICAgICAgICAgICAgIHQgPSBmdHMoLTFlLTcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCBtaW51c19vbmUpCisKKyAgICAgICAgICAgIHQgPSBmdHMoMWUtNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgemVybykKKyAgICAgICAgICAgIHQgPSBmdHMoOWUtNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgemVybykKKyAgICAgICAgICAgIHQgPSBmdHMoMC45OTk5OTk0OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubWljcm9zZWNvbmQsIDk5OTk5OSkKKyAgICAgICAgICAgIHQgPSBmdHMoMC45OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnNlY29uZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5taWNyb3NlY29uZCwgOTk5OTk5KQogCiAgICAgZGVmIHRlc3RfaW5zYW5lX2Zyb210aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICMgSXQncyBwb3NzaWJsZSB0aGF0IHNvbWUgcGxhdGZvcm0gbWFwcyB0aW1lX3QgdG8gZG91YmxlLApAQCAtMTc0NSw3ICsxODEyLDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKIAogICAgIGRlZiB0ZXN0X2luc2FuZV91dGNmcm9tdGltZXN0YW1wKHNlbGYpOgpAQCAtMTc1NCw3ICsxODIxLDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBkb2Vzbid0IGFjY2VwdCBuZWdhdGl2ZSB0aW1lc3RhbXBzIikKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9mbG9hdF9mcm9tdGltZXN0YW1wKHNlbGYpOgpAQCAtMTkwNyw3ICsxOTc0LDcgQEAKICAgICAgICAgIyBzaW1wbHkgY2FuJ3QgYmUgYXBwbGllZCB0byBhIG5haXZlIG9iamVjdC4KICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdygpCiAgICAgICAgIGYgPSBGaXhlZE9mZnNldCg0NCwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSkgIyBub3QgZW5vdWdoIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHQuYXN0aW1lem9uZSkgIyBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGYsIGYpICMgdG9vIG1hbnkgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGR0KSAjIGFyZyB3cm9uZyB0eXBlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGYpICMgbmFpdmUKQEAgLTI0NzksNyArMjU0Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0NCA9PSB0NSkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDQsIHQ1KSAjIG1peGVkIHR6LWF3YXJlICYgbmFpdmUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQ0IDwgdDUpICMgbWl4ZWQgdHotYXdhcmUgJiBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDUgPCB0NCkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCiAKQEAgLTI2MzEsNyArMjY5OCw3IEBACiAgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm89Rml4ZWRPZmZzZXQoTm9uZSwgIiIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldCgwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAKICAgICAgICAgIyBJbiB0aW1lIHcvIGlkZW50aWNhbCB0emluZm8gb2JqZWN0cywgdXRjb2Zmc2V0IGlzIGlnbm9yZWQuCiAgICAgICAgIGNsYXNzIFZhcmllcyh0emluZm8pOgpAQCAtMjczNiwxNiArMjgwMywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQxID4gdDIpCiAKLSAgICAgICAgIyBNYWtlIHQyIG5haXZlIGFuZCBpdCBzaG91bGQgZmFpbC4KKyAgICAgICAgIyBNYWtlIHQyIG5haXZlIGFuZCBpdCBzaG91bGQgZGlmZmVyLgogICAgICAgICB0MiA9IHNlbGYudGhlY2xhc3MubWluCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDIsIHQyKQogCiAgICAgICAgICMgSXQncyBhbHNvIG5haXZlIGlmIGl0IGhhcyB0emluZm8gYnV0IHR6aW5mby51dGNvZmZzZXQoKSBpcyBOb25lLgogICAgICAgICBjbGFzcyBOYWl2ZSh0emluZm8pOgogICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiBOb25lCiAgICAgICAgIHQyID0gc2VsZi50aGVjbGFzcyg1LCA2LCA3LCB0emluZm89TmFpdmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDIpCiAKICAgICAgICAgIyBPVE9ILCBpdCdzIE9LIHRvIGNvbXBhcmUgdHdvIG9mIHRoZXNlIG1peGluZyB0aGUgdHdvIHdheXMgb2YgYmVpbmcKQEAgLTMxODgsOCArMzI1NSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkdC50emluZm8gaXMgZjQ0bSkKICAgICAgICAgIyBSZXBsYWNpbmcgd2l0aCBkZWdlbmVyYXRlIHR6aW5mbyByYWlzZXMgYW4gZXhjZXB0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkdC5hc3RpbWV6b25lLCBmbm9uZSkKLSAgICAgICAgIyBEaXR0byB3aXRoIE5vbmUgdHouCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSwgTm9uZSkKICAgICAgICAgIyBSZXBsYWNpbmcgd2l0aCBzYW1lIHR6aW5mbyBtYWtlcyBubyBjaGFuZ2UuCiAgICAgICAgIHggPSBkdC5hc3RpbWV6b25lKGR0LnR6aW5mbykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHgudHppbmZvIGlzIGY0NG0pCkBAIC0zMjA5LDYgKzMyNzQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdvdC50emluZm8gaXMgZXhwZWN0ZWQudHppbmZvKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdCwgZXhwZWN0ZWQpCiAKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignVVRDJykKKyAgICBkZWYgdGVzdF9hc3RpbWV6b25lX2RlZmF1bHRfdXRjKHNlbGYpOgorICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5hc3RpbWV6b25lKE5vbmUpLCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5hc3RpbWV6b25lKCksIGR0KQorCisgICAgIyBOb3RlIHRoYXQgb2Zmc2V0IGluIFRaIHZhcmlhYmxlIGhhcyB0aGUgb3Bwb3NpdGUgc2lnbiB0byB0aGF0CisgICAgIyBwcm9kdWNlZCBieSAleiBkaXJlY3RpdmUuCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZV9kZWZhdWx0X2Vhc3Rlcm4oc2VsZik6CisgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAxMSwgNCwgNiwgMzAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxvY2FsID0gZHQuYXN0aW1lem9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGxvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLnN0cmZ0aW1lKCIleiAlWiIpLCAiLTA1MDAgRVNUIikKKyAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCA1LCAzMCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbG9jYWwgPSBkdC5hc3RpbWV6b25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuc3RyZnRpbWUoIiV6ICVaIiksICItMDQwMCBFRFQiKQorCiAgICAgZGVmIHRlc3RfYXdhcmVfc3VidHJhY3Qoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKIApAQCAtMzI2Miw3ICszMzQ2LDcgQEAKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldChOb25lLCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvPUZpeGVkT2Zmc2V0KDAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKIAogICAgICAgICAjIEluIGRhdGV0aW1lIHcvIGlkZW50aWNhbCB0emluZm8gb2JqZWN0cywgdXRjb2Zmc2V0IGlzIGlnbm9yZWQuCiAgICAgICAgIGNsYXNzIFZhcmllcyh0emluZm8pOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhL2V4dHJhLmRlY1Rlc3QgYi9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdAppbmRleCBmZThiNzdhLi5iNjMwZDhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdAorKysgYi9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdApAQCAtMjIyLDEyICsyMjIsMjUgQEAKIGV4dHIxNzAxIHBvd2VyIDEwMC4wIC01NTcuNzFlLTc0Mjg4ODg4OCAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzAyIHBvd2VyIDEwIDFlLTEwMCAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIAorLS0gQW5vdGhlciBvbmUgKHNlZSBpc3N1ZSAjMTIwODApLiAgVGhhbmtzIGFnYWluIHRvIFN0ZWZhbiBLcmFoLgorZXh0cjE3MDMgcG93ZXIgNCAtMS4yZS05OTk5OTk5OTkgLT4gMS4wMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCisKIC0tIEEgY291cGxlIG9mIGludGVyZXN0aW5nIGV4YWN0IGNhc2VzIGZvciBwb3dlci4gIE5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbgogLS0gcmVxdWlyZXMgdGhlc2UgdG8gYmUgcmVwb3J0ZWQgYXMgSW5leGFjdC4KIGV4dHIxNzEwIHBvd2VyIDFlMzc1IDU2ZS0zIC0+IDEuMDAwMDAwMDAwMDAwMDAwRSsyMSBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzExIHBvd2VyIDEwMDAwIDAuNzUgLT4gMTAwMC4wMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCiBleHRyMTcxMiBwb3dlciAxZS0yNCAwLjg3NSAtPiAxLjAwMDAwMDAwMDAwMDAwMEUtMjEgSW5leGFjdCBSb3VuZGVkCiAKKy0tIFNvbWUgbW9yZSBleGFjdCBjYXNlcywgZXhlcmNpc2luZyBwb3dlciB3aXRoIG5lZ2F0aXZlIHNlY29uZCBhcmd1bWVudC4KK2V4dHIxNzIwIHBvd2VyIDQwMCAtMC41IC0+IDAuMDUwMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCitleHRyMTcyMSBwb3dlciA0MDk2IC0wLjc1IC0+IDAuMDAxOTUzMTI1MDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAorZXh0cjE3MjIgcG93ZXIgNjI1ZTQgLTAuMjUgLT4gMC4wMjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKKworLS0gTm9uZXhhY3QgY2FzZXMsIHRvIGV4ZXJjaXNlIHNvbWUgb2YgdGhlIGVhcmx5IGV4aXQgY29uZGl0aW9ucyBmcm9tCistLSBfcG93ZXJfZXhhY3QuCitleHRyMTczMCBwb3dlciAyMDQ4IC0wLjc1IC0+IDAuMDAzMjg0NzUxNjIyMDg0ODIyIEluZXhhY3QgUm91bmRlZAorCisKIC0tIFRlc3RzIGZvciB0aGUgaXNfKiBib29sZWFuIG9wZXJhdGlvbnMKIHByZWNpc2lvbjogOQogbWF4RXhwb25lbnQ6IDk5OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGg1MTIucGVtIGIvTGliL3Rlc3QvZGg1MTIucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMGQxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kaDUxMi5wZW0KQEAgLTAsMCArMSw5IEBACistLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0tLQorTUVZQ1FRRDFLdjg4NGJFcFFCZ1JqWHlFcHdweTFvYkVBeG5JQnlsNnlwVU0yWmFmcTlBS1VKc0NSdE1JUFdhaworWFVHZm5IeTlpVXNpR1NhNnE2SmV3MVhwS2dWZkFnRUMKKy0tLS0tRU5EIERIIFBBUkFNRVRFUlMtLS0tLQorCitUaGVzZSBhcmUgdGhlIDUxMiBiaXQgREggcGFyYW1ldGVycyBmcm9tICJBc3NpZ25lZCBOdW1iZXIgZm9yIFNLSVAgUHJvdG9jb2xzIgorKGh0dHA6Ly93d3cuc2tpcC12cG4ub3JnL3NwZWMvbnVtYmVycy5odG1sKS4KK1NlZSB0aGVyZSBmb3IgaG93IHRoZXkgd2VyZSBnZW5lcmF0ZWQuCitOb3RlIHRoYXQgZyBpcyBub3QgYSBnZW5lcmF0b3IsIGJ1dCB0aGlzIGlzIG5vdCBhIHByb2JsZW0gc2luY2UgcCBpcyBhIHNhZmUgcHJpbWUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDUwMzdiMzMuLjFjMWY2OWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xMSwxMSArMTEsNiBAQAogICAgICAgKy0tIEFzc2VydGlvbkVycm9yCiAgICAgICArLS0gQXR0cmlidXRlRXJyb3IKICAgICAgICstLSBCdWZmZXJFcnJvcgotICAgICAgKy0tIEVudmlyb25tZW50RXJyb3IKLSAgICAgIHwgICAgKy0tIElPRXJyb3IKLSAgICAgIHwgICAgKy0tIE9TRXJyb3IKLSAgICAgIHwgICAgICAgICArLS0gV2luZG93c0Vycm9yIChXaW5kb3dzKQotICAgICAgfCAgICAgICAgICstLSBWTVNFcnJvciAoVk1TKQogICAgICAgKy0tIEVPRkVycm9yCiAgICAgICArLS0gSW1wb3J0RXJyb3IKICAgICAgICstLSBMb29rdXBFcnJvcgpAQCAtMjQsNiArMTksMjIgQEAKICAgICAgICstLSBNZW1vcnlFcnJvcgogICAgICAgKy0tIE5hbWVFcnJvcgogICAgICAgfCAgICArLS0gVW5ib3VuZExvY2FsRXJyb3IKKyAgICAgICstLSBPU0Vycm9yCisgICAgICB8ICAgICstLSBCbG9ja2luZ0lPRXJyb3IKKyAgICAgIHwgICAgKy0tIENoaWxkUHJvY2Vzc0Vycm9yCisgICAgICB8ICAgICstLSBDb25uZWN0aW9uRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQnJva2VuUGlwZUVycm9yCisgICAgICB8ICAgIHwgICAgKy0tIENvbm5lY3Rpb25BYm9ydGVkRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorICAgICAgfCAgICB8ICAgICstLSBDb25uZWN0aW9uUmVzZXRFcnJvcgorICAgICAgfCAgICArLS0gRmlsZUV4aXN0c0Vycm9yCisgICAgICB8ICAgICstLSBGaWxlTm90Rm91bmRFcnJvcgorICAgICAgfCAgICArLS0gSW50ZXJydXB0ZWRFcnJvcgorICAgICAgfCAgICArLS0gSXNBRGlyZWN0b3J5RXJyb3IKKyAgICAgIHwgICAgKy0tIE5vdEFEaXJlY3RvcnlFcnJvcgorICAgICAgfCAgICArLS0gUGVybWlzc2lvbkVycm9yCisgICAgICB8ICAgICstLSBQcm9jZXNzTG9va3VwRXJyb3IKKyAgICAgIHwgICAgKy0tIFRpbWVvdXRFcnJvcgogICAgICAgKy0tIFJlZmVyZW5jZUVycm9yCiAgICAgICArLS0gUnVudGltZUVycm9yCiAgICAgICB8ICAgICstLSBOb3RJbXBsZW1lbnRlZEVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9mb3JrX3dhaXQucHkgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKaW5kZXggMWNhYWIxYy4uODg1MjdkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZm9ya193YWl0LnB5CisrKyBiL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQpAQCAtNDMsNiArNDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKIAorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKICAgICAgICAgICAgIF90aHJlYWQuc3RhcnRfbmV3KHNlbGYuZiwgKGksKSkKQEAgLTY5LDcgKzcwLDggQEAKICAgICAgICAgICAgIG9zLl9leGl0KG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFBhcmVudAotICAgICAgICAgICAgc2VsZi53YWl0X2ltcGwoY3BpZCkKLSAgICAgICAgICAgICMgVGVsbCB0aHJlYWRzIHRvIGRpZQotICAgICAgICAgICAgc2VsZi5zdG9wID0gMQotICAgICAgICAgICAgdGltZS5zbGVlcCgyKlNIT1JUU0xFRVApICMgV2FpdCBmb3IgdGhyZWFkcyB0byBkaWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLndhaXRfaW1wbChjcGlkKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAjIFRlbGwgdGhyZWFkcyB0byBkaWUKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3AgPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTEucHkgYi9MaWIvdGVzdC9mdXR1cmVfdGVzdDEucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfZnV0dXJlMS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvZnV0dXJlX3Rlc3QxLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTIucHkgYi9MaWIvdGVzdC9mdXR1cmVfdGVzdDIucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfZnV0dXJlMi5weQpyZW5hbWUgdG8gTGliL3Rlc3QvZnV0dXJlX3Rlc3QyLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3RfZHVtcC5weSBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CmluZGV4IGZlZTk3MmUuLjIzN2VlMzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CisrKyBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CkBAIC0xLDYgKzEsNyBAQAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVzdC5qc29uX3Rlc3RzIGltcG9ydCBQeVRlc3QsIENUZXN0CiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMUcKIAogY2xhc3MgVGVzdER1bXA6CiAgICAgZGVmIHRlc3RfZHVtcChzZWxmKToKQEAgLTI5LDQgKzMwLDIwIEBACiAKIAogY2xhc3MgVGVzdFB5RHVtcChUZXN0RHVtcCwgUHlUZXN0KTogcGFzcwotY2xhc3MgVGVzdENEdW1wKFRlc3REdW1wLCBDVGVzdCk6IHBhc3MKKworY2xhc3MgVGVzdENEdW1wKFRlc3REdW1wLCBDVGVzdCk6CisKKyAgICAjIFRoZSBzaXplIHJlcXVpcmVtZW50IGhlcmUgaXMgaG9wZWZ1bGx5IG92ZXItZXN0aW1hdGVkIChhY3R1YWwKKyAgICAjIG1lbW9yeSBjb25zdW1wdGlvbiBkZXBlbmRpbmcgb24gaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIGFsc28KKyAgICAjIHN5c3RlbSBtZW1vcnkgbWFuYWdlbWVudCwgc2luY2UgdGhpcyBtYXkgYWxsb2NhdGUgYSBsb3Qgb2YKKyAgICAjIHNtYWxsIG9iamVjdHMpLgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMUcsIG1lbXVzZT0xKQorICAgIGRlZiB0ZXN0X2xhcmdlX2xpc3Qoc2VsZiwgc2l6ZSk6CisgICAgICAgIE4gPSBpbnQoMzAgKiAxMDI0ICogMTAyNCAqIChzaXplIC8gXzFHKSkKKyAgICAgICAgbCA9IFsxXSAqIE4KKyAgICAgICAgZW5jb2RlZCA9IHNlbGYuZHVtcHMobCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW5jb2RlZCksIE4gKiAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbOjFdLCAiWyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFstMjpdLCAiMV0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbMTotMl0sICIxLCAiICogKE4gLSAxKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9zY2Fuc3RyaW5nLnB5IGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKaW5kZXggZjgyY2RlZS4uNDI2YzhkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKQEAgLTksMTQgKzksOSBAQAogICAgICAgICAgICAgc2NhbnN0cmluZygnInpcXHVkODM0XFx1ZGQyMHgiJywgMSwgVHJ1ZSksCiAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDE2KSkKIAotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2NhbnN0cmluZygnInpcVTAwMDFkMTIweCInLCAxLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDYpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAotICAgICAgICAgICAgICAgICgnelxVMDAwMWQxMjB4JywgNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAorICAgICAgICAgICAgKCd6XFUwMDAxZDEyMHgnLCA1KSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2NhbnN0cmluZygnIlxcdTAwN2IiJywgMSwgVHJ1ZSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwNTc0OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2tleWNlcnQucGFzc3dkLnBlbQpAQCAtMCwwICsxLDMzIEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitQcm9jLVR5cGU6IDQsRU5DUllQVEVECitERUstSW5mbzogREVTLUVERTMtQ0JDLDFBOEQ5RDJBMDJFQzY5OEEKKwora0pZYmZaOEwwc2ZlOU90eTNndzBhbG9Oblk1RThmZWdSZlFMWmxOb3hUbDZqTnQwbkl3SThrREozNkNaZ1I5YwordTNGREptL0txcmZVb3o4dlcrcUVuV2hTRzdRUFgyd1dHUEhkNEs5NFl6L0ZnclJ6WjBEb0s3WHhYcTlnT3RWQQorQVZHUWhuejMycCs2V2hmR3NDcjlBclhFd1JaclRrL0Z2ekVQYVU1Zkhjb1Nrck5WQUdYOElwU1ZrU0R3RURRcgorR3YxNytjZms5OVVWMU9DemE2eUtIb0ZrVHRyQytQWlU3MUxvbUJhYml2UzJPYzRCOWhZdVNSMmhGMDF3VEhQKworWWxXTmFnWk9PVnROejRvS0s5eDllTlFwbWZRWFF2UFBUZnVzZXhLSWJLZlpyTXZKb3hjbTFnZmNaMEgvd0s2UAorNndtWFNHMzVxTU9PenRDWk50cGVyanMxd3pFQlh6bnlLOFFtTGNBSkJqa2ZhckFCSlg5dkJFelpWME9VS2h5Kworbm9PUkZ3SFRsbHBoYm15ZExodTZlaExVWk1IUGh6QVM1VU43c3J0cFNOODFlZXJETXkwUk1VQXdBNy9Qb2ZYMQorOTRNZTg1UThqUDBQQzlFVGRzSmNQcUx6QVBFVEVZdTBFTGV3S1JjcmR5V2krdGxMRnJwRTVLVC9zNWVjYmw5bAorN0I2MVU0S2ZkMVBJWGMvc2lJTmhVM0EzYllLKzg0NVl5VUFyVU9uS2Yxa0VveDdwMVJwRDd5RnFWVDA0bFJUbworY2liTktBVEJ1c1hTdUJycDJHNkdOdWhXRU9TYWZXQ0tKUUF6Z0NZSXA2WlRWMmtoaE1VR3BwYy8ySDNDRjZjTworelgwS3RsUFZaQzdoTGtCNkhUOFN4WVV3RjF6cVdZNysvWFBQZGMzN01lRVo4N1EzVXVad3FPUkxZK1owaHBndAorTDVKWEJDb2tsWmhDQWFOMkdxd0ZMWHRHaVJTUkZHWTd4WEloYkRUbEU2NVd2MVdHR2dETE1LR0UxZ096M3lBbworMmpqRzEreUFISlVkRTY5WFRGSFNxU2t2YWxvQTFXMDNMZE1YWjlWdVFKL3lTWENpZTZBQkFRPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNWRENDQWIyZ0F3SUJBZ0lKQU5mSE9Ca1pyOEpPTUEwR0NTcUdTSWIzRFFFQkJRVUFNRjh4Q3pBSkJnTlYKK0JBWVRBbGhaTVJjd0ZRWURWUVFIRXc1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDaE1hVUhsMGFHOXUKK0lGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkREFlRncweE1ERXcKK01EZ3lNekF4TlRaYUZ3MHlNREV3TURVeU16QXhOVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUgKK0V3NURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2hNYVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWsKK1lYUnBiMjR4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXcKK2dZa0NnWUVBMjF2VDVpc3E3RjY4YW1ZdXVOcFNGbEtEUHJNVUNhNFlXWXFaUnQyT1orLzNOS2FaMnhBaVN3cjcKKzZNclFGNzB0NW5MYlNQcHFFNSs1VnJTNThTWStnL3NYTGlGZDZBcGxIMXdKWndoNzhEb2ZiRllYVWdna3RGTXQKK3BUeWlYOGp0UDY2YmtjUGtEQURBMDg5UkkxVFFSNkNhK243SEZhN2MxZmFiVlY2aTN6a0NBd0VBQWFNWU1CWXcKK0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBSFBjdFFCRVE0d2QKK0JKNitKY3BJcmFvcExuOEJHaGJqTldqNDBtbVJxV0IvTkFXRjZNNW5lN0twR0F1N3RMZUc0aGIxekxhbGRLOEcKK2x4eTJHUFNSRjZMRlM0OGRwRWoySGJNdjJudnY2eHhhbERNSjkrRGljV2dBS1RRNmJjWDJqM0dVa0NSMGcvVDEKK0NSbE5CQUFsdmhLek83Q2xwZjlsMFlLQkVmcmFKQnlYCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5IGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQppbmRleCBiZTA1NGVhLi40MmUxMThiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKQEAgLTQxOCw2ICs0MTgsNDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUucmV2ZXJzZSwgNDIpCiAKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsyLCAzLCA0XSkKKyAgICAgICAgdS5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgW10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB1LmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbXSkKKworICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoW10pCisgICAgICAgIHUuYXBwZW5kKDEpCisgICAgICAgIHUuY2xlYXIoKQorICAgICAgICB1LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFsyXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUuY2xlYXIsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzEsIDIsIDNdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBbMSwgMiwgM10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBbXSkKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGluZGVlZCBhIGNvcHkgYW5kIG5vdCBhIHJlZmVyZW5jZQorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWydhJywgJ2InXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHYuYXBwZW5kKCdpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbJ2EnLCAnYiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHUgKyBbJ2knXSkKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGEgc2hhbGxvdywgbm90IGEgZGVlcCBjb3B5CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbMSwgMiwgWzMsIDRdLCA1XSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh2WzNdLCB1WzNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdS5jb3B5LCBOb25lKQorCiAgICAgZGVmIHRlc3Rfc29ydChzZWxmKToKICAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAwXSkKICAgICAgICAgdS5zb3J0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CmluZGV4IDA5NGNjN2EuLmJmYmY0NGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQpAQCAtNCw3ICs0LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKLWZyb20gX3RocmVhZCBpbXBvcnQgc3RhcnRfbmV3X3RocmVhZCwgZ2V0X2lkZW50LCBUSU1FT1VUX01BWAorZnJvbSBfdGhyZWFkIGltcG9ydCBzdGFydF9uZXdfdGhyZWFkLCBUSU1FT1VUX01BWAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgc2VsZi5maW5pc2hlZCA9IFtdCiAgICAgICAgIHNlbGYuX2Nhbl9leGl0ID0gbm90IHdhaXRfYmVmb3JlX2V4aXQKICAgICAgICAgZGVmIHRhc2soKToKLSAgICAgICAgICAgIHRpZCA9IGdldF9pZGVudCgpCisgICAgICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgIHNlbGYuc3RhcnRlZC5hcHBlbmQodGlkKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYoKQpAQCAtMjU1LDYgKzI1NSwxOCBAQAogICAgICAgICBsb2NrLnJlbGVhc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2sucmVsZWFzZSkKIAorICAgIGRlZiB0ZXN0X3JlbGVhc2Vfc2F2ZV91bmFjcXVpcmVkKHNlbGYpOgorICAgICAgICAjIENhbm5vdCBfcmVsZWFzZV9zYXZlIGFuIHVuYWNxdWlyZWQgbG9jaworICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5fcmVsZWFzZV9zYXZlKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2suX3JlbGVhc2Vfc2F2ZSkKKwogICAgIGRlZiB0ZXN0X2RpZmZlcmVudF90aHJlYWQoc2VsZik6CiAgICAgICAgICMgQ2Fubm90IHJlbGVhc2UgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbWFpbGNhcC50eHQgYi9MaWIvdGVzdC9tYWlsY2FwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjExMzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbWFpbGNhcC50eHQKQEAgLTAsMCArMSwzOSBAQAorIyBNYWlsY2FwIGZpbGUgZm9yIHRlc3RfbWFpbGNhcDsgYmFzZWQgb24gUkZDIDE1MjQKKyMgUmVmZXJyZWQgdG8gYnkgdGVzdF9tYWlsY2FwLnB5CisKKyMKKyMgVGhpcyBpcyBhIGNvbW1lbnQuCisjCisKK2FwcGxpY2F0aW9uL2ZyYW1lOyBzaG93ZnJhbWUgJXM7IHByaW50PSJjYXQgJXMgfCBscCIKK2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQ7IHBzLXRvLXRlcm1pbmFsICVzO1wKKyAgICBuZWVkc3Rlcm1pbmFsCithcHBsaWNhdGlvbi9wb3N0c2NyaXB0OyBwcy10by10ZXJtaW5hbCAlczsgXAorICAgIGNvbXBvc2U9aWRyYXcgJXMKK2FwcGxpY2F0aW9uL3gtZHZpOyB4ZHZpICVzCithcHBsaWNhdGlvbi94LW1vdmllOyBtb3ZpZXBsYXllciAlczsgY29tcG9zZT1tb3ZpZW1ha2VyICVzOyBcCisgICAgICAgZGVzY3JpcHRpb249Ik1vdmllIjsgXAorICAgICAgIHgxMS1iaXRtYXA9Ii91c3IvbGliL1ptYWlsL2JpdG1hcHMvbW92aWUueGJtIgorYXBwbGljYXRpb24vKjsgZWNobyAiVGhpcyBpcyBcIiV0XCIgYnV0IFwKKyAgICAgICBpcyA1MCBcJSBHcmVlayB0byBtZSIgXDsgY2F0ICVzOyBjb3Bpb3Vzb3V0cHV0CisKK2F1ZGlvL2Jhc2ljOyBzaG93YXVkaW8gJXM7IGNvbXBvc2U9YXVkaW9jb21wb3NlICVzOyBlZGl0PWF1ZGlvY29tcG9zZSAlcztcCitkZXNjcmlwdGlvbj0iQW4gYXVkaW8gZnJhZ21lbnQiCithdWRpby8qIDsgL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvICV0CisKK2ltYWdlL3JnYjsgZGlzcGxheSAlcworI2ltYWdlL2dpZjsgZGlzcGxheSAlcworaW1hZ2UveC14d2luZG93ZHVtcDsgZGlzcGxheSAlcworCisjIFRoZSBjb250aW51YXRpb24gY2hhciBzaG91bGRuJ3QgXAorIyBtYWtlIGEgZGlmZmVyZW5jZSBpbiBhIGNvbW1lbnQuCisKK21lc3NhZ2UvZXh0ZXJuYWwtYm9keTsgc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSBcCisgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9OyBuZWVkc3Rlcm1pbmFsOyBjb21wb3NldHlwZWQgPSBleHRjb21wb3NlICVzOyBcCisgICAgZGVzY3JpcHRpb249IkEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIGluIGFuIGV4dGVybmFsIGxvY2F0aW9uIgorCit0ZXh0L3JpY2h0ZXh0OyBzaG93bm9uYXNjaWkgaXNvLTg4NTktOCAtZSByaWNodGV4dCAtcCAlczsgdGVzdD10ZXN0ICJgZWNobyBcCisgICAgJXtjaGFyc2V0fSB8IHRyICdbQS1aXScgJ1thLXpdJ2AiICA9IGlzby04ODU5LTg7IGNvcGlvdXNvdXRwdXQKKwordmlkZW8vbXBlZzsgbXBlZ19wbGF5ICVzCit2aWRlby8qOyBhbmltYXRlICVzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQgYi9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggNWUyNDMzNS4uOTU4NTE4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWF0aF90ZXN0Y2FzZXMudHh0CisrKyBiL0xpYi90ZXN0L21hdGhfdGVzdGNhc2VzLnR4dApAQCAtNTE3LDMgKzUxNywxMTcgQEAKIAogLS0gd2Vha2VyIHZlcnNpb24gb2YgZXhwbTEwMzAyCiBleHBtMTAzMDcgZXhwbTEgNzA5LjUgLT4gMS4zNTQ5ODYzMTkzMTQ2MzI4ZSszMDgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gbG9nMjogbG9nIHRvIGJhc2UgMiAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLSBzcGVjaWFsIHZhbHVlcworbG9nMjAwMDAgbG9nMiAwLjAgLT4gLWluZiAgICAgICAgICAgICAgIGRpdmlkZS1ieS16ZXJvCitsb2cyMDAwMSBsb2cyIC0wLjAgLT4gLWluZiAgICAgICAgICAgICAgZGl2aWRlLWJ5LXplcm8KK2xvZzIwMDAyIGxvZzIgaW5mIC0+IGluZgorbG9nMjAwMDMgbG9nMiAtaW5mIC0+IG5hbiAgICAgICAgICAgICAgIGludmFsaWQKK2xvZzIwMDA0IGxvZzIgbmFuIC0+IG5hbgorCistLSBleGFjdCB2YWx1ZSBhdCAxLjAKK2xvZzIwMDEwIGxvZzIgMS4wIC0+IDAuMAorCistLSBuZWdhdGl2ZXMKK2xvZzIwMDIwIGxvZzIgLTVlLTMyNCAtPiBuYW4gICAgICAgICAgICBpbnZhbGlkCitsb2cyMDAyMSBsb2cyIC0xLjAgLT4gbmFuICAgICAgICAgICAgICAgaW52YWxpZAorbG9nMjAwMjIgbG9nMiAtMS43ZS0zMDggLT4gbmFuICAgICAgICAgIGludmFsaWQKKworLS0gZXhhY3QgdmFsdWVzIGF0IHBvd2VycyBvZiAyCitsb2cyMDEwMCBsb2cyIDIuMCAtPiAxLjAKK2xvZzIwMTAxIGxvZzIgNC4wIC0+IDIuMAorbG9nMjAxMDIgbG9nMiA4LjAgLT4gMy4wCitsb2cyMDEwMyBsb2cyIDE2LjAgLT4gNC4wCitsb2cyMDEwNCBsb2cyIDMyLjAgLT4gNS4wCitsb2cyMDEwNSBsb2cyIDY0LjAgLT4gNi4wCitsb2cyMDEwNiBsb2cyIDEyOC4wIC0+IDcuMAorbG9nMjAxMDcgbG9nMiAyNTYuMCAtPiA4LjAKK2xvZzIwMTA4IGxvZzIgNTEyLjAgLT4gOS4wCitsb2cyMDEwOSBsb2cyIDEwMjQuMCAtPiAxMC4wCitsb2cyMDExMCBsb2cyIDIwNDguMCAtPiAxMS4wCisKK2xvZzIwMjAwIGxvZzIgMC41IC0+IC0xLjAKK2xvZzIwMjAxIGxvZzIgMC4yNSAtPiAtMi4wCitsb2cyMDIwMiBsb2cyIDAuMTI1IC0+IC0zLjAKK2xvZzIwMjAzIGxvZzIgMC4wNjI1IC0+IC00LjAKKworLS0gdmFsdWVzIGNsb3NlIHRvIDEuMAorbG9nMjAzMDAgbG9nMiAxLjAwMDAwMDAwMDAwMDAwMDIgLT4gMy4yMDM0MjY1MDM4MTQ5MTcxZS0xNgorbG9nMjAzMDEgbG9nMiAxLjAwMDAwMDAwMDEgLT4gMS40NDI2OTUxNjAxODU5NTE2ZS0xMAorbG9nMjAzMDIgbG9nMiAxLjAwMDAxIC0+IDEuNDQyNjg3ODI3NDcxMjk5N2UtNQorCitsb2cyMDMxMCBsb2cyIDAuOTk5OTk5OTk5OTk5OTk5OSAtPiAtMS42MDE3MTMyNTE5MDc0NTg4ZS0xNgorbG9nMjAzMTEgbG9nMiAwLjk5OTk5OTk5OTkgLT4gLTEuNDQyNjk1MTYwMzMwMjIxMGUtMTAKK2xvZzIwMzEyIGxvZzIgMC45OTk5OSAtPiAtMS40NDI3MDIyNTQ0MDU2OTIyZS01CisKKy0tIHRpbnkgdmFsdWVzCitsb2cyMDQwMCBsb2cyIDVlLTMyNCAtPiAtMTA3NC4wCitsb2cyMDQwMSBsb2cyIDFlLTMyMyAtPiAtMTA3My4wCitsb2cyMDQwMiBsb2cyIDEuNWUtMzIzIC0+IC0xMDcyLjQxNTAzNzQ5OTI3ODkKK2xvZzIwNDAzIGxvZzIgMmUtMzIzIC0+IC0xMDcyLjAKKworbG9nMjA0MTAgbG9nMiAxZS0zMDggLT4gLTEwMjMuMTUzODUzMjI1MzA3NgorbG9nMjA0MTEgbG9nMiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCAtPiAtMTAyMi4wCitsb2cyMDQxMiBsb2cyIDQuNDUwMTQ3NzE3MDE0NDAyOGUtMzA4IC0+IC0xMDIxLjAKK2xvZzIwNDEzIGxvZzIgMWUtMzA3IC0+IC0xMDE5LjgzMTkyNTEzMDQyMDIKKworLS0gaHVnZSB2YWx1ZXMKK2xvZzIwNTAwIGxvZzIgMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggLT4gMTAyNC4wCitsb2cyMDUwMSBsb2cyIDEuN2UrMzA4IC0+IDEwMjMuOTE5Mzg3OTcxNjcwNgorbG9nMjA1MDIgbG9nMiA4Ljk4ODQ2NTY3NDMxMTU3OTVlKzMwNyAtPiAxMDIzLjAKKworLS0gc2VsZWN0aW9uIG9mIHJhbmRvbSB2YWx1ZXMKK2xvZzIwNjAwIGxvZzIgLTcuMjE3NDMyNDg0MTAzOTgzOGUrMjg5IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjAxIGxvZzIgLTIuODYxMzE5NzM0MDg5NjE3ZSsyNjUgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjAyIGxvZzIgLTQuMzUwNzY0Njg5NDAwODk2MmUrMjU3IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjAzIGxvZzIgLTYuNjcxNzI2NTMwNzUyMDIyNGUrMjM0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA0IGxvZzIgLTMuOTExODAyMzc4NjYxOTI5NGUrMjI5IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA1IGxvZzIgLTEuNTQ3ODIyMTMwMjUwNTE2MWUrMjA2IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA2IGxvZzIgLTEuNDM4MDQ4NTEzMTM2NDYwMmUrMjAwIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA3IGxvZzIgLTMuNzIzNTE5ODczMDM4MjY0NWUrMTg1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA4IGxvZzIgLTEuMDQ3MjI0MjIzNTA5NTcyNGUrMTg0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA5IGxvZzIgLTUuMDE0MTc4MTk1NjE2Mzg4NGUrMTYwIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjEwIGxvZzIgLTIuMTE1Nzk1ODAzMTE2MDMyNGUrMTI0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjExIGxvZzIgLTcuOTY3NzU1ODYxMjU2NzcxOGUrOTAgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjEyIGxvZzIgLTUuNTU1MzkwNjE5NDA2MzczMmUrNDUgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjEzIGxvZzIgLTE2NTczOTAwOTUyNjA3Ljk1MyAtPiBuYW4gICAgICAgIGludmFsaWQKK2xvZzIwNjE0IGxvZzIgLTM3MTk4MzcxMDE5Ljg4ODYxOCAtPiBuYW4gICAgICAgIGludmFsaWQKK2xvZzIwNjE1IGxvZzIgLTYuMDcyNzExNTEyMTQyMjY3NGUtMzIgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE2IGxvZzIgLTIuNTQwNjg0MTY1NjUyNjA1N2UtMzggLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE3IGxvZzIgLTQuOTA1Njc2NjcwMzI2NzY1N2UtNDMgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE4IGxvZzIgLTIuMTY0Njc4NjA3NTIyODMwNWUtNzEgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE5IGxvZzIgLTIuNDcwODI2NzkwNDg4NTczZS03OCAtPiBuYW4gICAgIGludmFsaWQKK2xvZzIwNjIwIGxvZzIgLTMuODY2MTcwOTMwMzQ4OTA2NGUtMTY1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIxIGxvZzIgLTEuMDUxNjQ5Njk3NjY0OTk4NmUtMTgyIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIyIGxvZzIgLTEuNTkzNTQ1ODYxNDMxNzk5NmUtMjU1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIzIGxvZzIgLTIuODc1MDk3NzI2NzMzNjY1NGUtMjkzIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjI0IGxvZzIgLTcuNjA3OTQ2Njc5NDczMjU4NWUtMjk2IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjI1IGxvZzIgMy4yMDczMjUzNTM5OTg4NTQ1ZS0zMDcgLT4gLTEwMTguMTUwNTU0NDIwOTIxMworbG9nMjA2MjYgbG9nMiAxLjY3NDkzNzg4NTQ3MjI0OWUtMjQ0IC0+IC04MDkuODA2MzQ3NTU3ODMxMjYKK2xvZzIwNjI3IGxvZzIgMS4wOTExMjU5MDQ0OTMxMjgzZS0yMTQgLT4gLTcxMC43NjY3OTQ3MjI3NDIxMworbG9nMjA2MjggbG9nMiAyLjAyNzUzNzI2MjQ4MDk3MDllLTE1NCAtPiAtNTEwLjU1NzE5ODE4MzgzMjcyCitsb2cyMDYyOSBsb2cyIDcuMzkyNjA4NzM2OTYzMTg0MWUtMTE1IC0+IC0zNzkuMTM1NjQ3MzUzMTIyOTIKK2xvZzIwNjMwIGxvZzIgMS4zNDgwMTk4MjA2MzQyNDIzZS04NiAtPiAtMjg1LjI1NDk3NDQ1MDk0NDM2Citsb2cyMDYzMSBsb2cyIDguOTkyNzM4NDY1NTcxOTk0N2UtODMgLT4gLTI3Mi41NTEyNzEzNjQwMTYzNworbG9nMjA2MzIgbG9nMiAzLjE0NTIzOTg3MTM1OTc0ODdlLTYwIC0+IC0xOTcuNjYyNTE1NjQ0OTY4NzUKK2xvZzIwNjMzIGxvZzIgNy4wNzA2NTczMjE1NDU3MzUxZS01NSAtPiAtMTc5Ljg4NDIwMDg3NzgyMjE3Citsb2cyMDYzNCBsb2cyIDMuMTI1ODI4NTM5MDczMTY2OWUtNDkgLT4gLTE2MS4xMzAyMzgwMDUwNTY1MworbG9nMjA2MzUgbG9nMiA4LjIyNTMwNDY2Mjc4Mjk5NDJlLTQxIC0+IC0xMzMuMTU4OTgyNzczNTU4NzkKK2xvZzIwNjM2IGxvZzIgNy44NjkxMzY3Mzk3NTE5ODk3ZSs0OSAtPiAxNjUuNzUwNjgyMDI3MzI0MTkKK2xvZzIwNjM3IGxvZzIgMi45OTIwNTYxOTgzOTI1MDEzZSs2NCAtPiAyMTQuMTg0NTM1MzQ1NzM3NTcKK2xvZzIwNjM4IGxvZzIgNC43ODI3MjU0NTUzOTQ2ODQxZSs3NyAtPiAyNTguMDQ2Mjk2Mjg0NDU2NzMKK2xvZzIwNjM5IGxvZzIgMy4xOTAzNTY2NDk2NDgxODY4ZSsxMDUgLT4gMzUwLjQ3NjE2NzY3NDkxMTY2Citsb2cyMDY0MCBsb2cyIDUuNjE5NTA4MjQ0OTUwMjQxOWUrMTEzIC0+IDM3Ny44NjgzMTg2MTAwODI1MAorbG9nMjA2NDEgbG9nMiA5Ljk2MjU2NTgyNTA2NTEwNDdlKzEyNSAtPiA0MTguNTU3NTI5MjEyMjg3NTMKK2xvZzIwNjQyIGxvZzIgMi43MzU4OTQ1MjIwOTYxNTMyZSsxNDUgLT4gNDgzLjEzMTU4NjM2OTIzNDEzCitsb2cyMDY0MyBsb2cyIDIuNzg1ODQyMzg3OTI2OTMxZSsxNzQgLT4gNTc5LjQ5MzYwMjE0ODYwMjgwCitsb2cyMDY0NCBsb2cyIDIuNDE2OTE3MjUwNzI1Mjc1MWUrMTkzIC0+IDY0Mi40MDUyOTAzOTI4OTY1MgorbG9nMjA2NDUgbG9nMiAzLjE2ODkwOTEyMDYzOTU2MzJlKzIwNSAtPiA2ODIuNjU5MjQ1NzM3OTgzOTUKK2xvZzIwNjQ2IGxvZzIgMi41MzU5OTU1OTIzNjUzOTFlKzIwOCAtPiA2OTIuMzAzNTk1OTc0NjA0NjAKK2xvZzIwNjQ3IGxvZzIgNi4yMDExMjM2NTY2MDg5OTE2ZSsyMzMgLT4gNzc2LjY0MTc3NTc2NzMwOTEzCitsb2cyMDY0OCBsb2cyIDIuMTg0MzI3NDgyMDY3NzYzMmUrMjUzIC0+IDg0MS41NzQ5OTcxNzI4OTY0NworbG9nMjA2NDkgbG9nMiA4Ljc0OTM5MzEwNjM0NzQ3OTFlKzI5NyAtPiA5ODkuNzQxODI3MTMwNzM5ODEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weSBiL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGNjYThkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbWVtb3J5X3dhdGNoZG9nLnB5CkBAIC0wLDAgKzEsMjggQEAKKyIiIk1lbW9yeSB3YXRjaGRvZzogcGVyaW9kaWNhbGx5IHJlYWQgdGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MKK2FuZCBwcmludCBpdCBvdXQsIHVudGlsIHRlcm1pbmF0ZWQuIiIiCisjIHN0ZGluIHNob3VsZCByZWZlciB0byB0aGUgcHJvY2VzcycgL3Byb2MvPFBJRD4vc3RhdG06IHdlIGRvbid0IHBhc3MgdGhlCisjIHByb2Nlc3MnIFBJRCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIGluIGNhc2Ugb2YgLSB1bmxpa2VseSAtIFBJRCByZWN5Y2xpbmcuCisjIElmIHRoZSBwcm9jZXNzIGNyYXNoZXMsIHJlYWRpbmcgZnJvbSB0aGUgL3Byb2MgZW50cnkgd2lsbCBmYWlsIHdpdGggRVNSQ0guCisKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCisKK3RyeToKKyAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFU0laRScpCitleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICB0cnk6CisgICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VfU0laRScpCisgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIHBhZ2Vfc2l6ZSA9IDQwOTYKKword2hpbGUgVHJ1ZToKKyAgICBzeXMuc3RkaW4uc2VlaygwKQorICAgIHN0YXRtID0gc3lzLnN0ZGluLnJlYWQoKQorICAgIGRhdGEgPSBpbnQoc3RhdG0uc3BsaXQoKVs1XSkKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCIgLi4uIHByb2Nlc3MgZGF0YSBzaXplOiB7ZGF0YTouMWZ9R1xuIgorICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChkYXRhPWRhdGEgKiBwYWdlX3NpemUgLyAoMTAyNCAqKiAzKSkpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgdGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCA4MDM2OTMyLi5kMDllNzhjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMTA2LDcgKzEwNiw4IEBACiAgICAgcmV0dXJuIE1vY2tTb2NrZXQoKQogCiAKLWRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9c29ja2V0X21vZHVsZS5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICB0cnk6CiAgICAgICAgIGludF9wb3J0ID0gaW50KGFkZHJlc3NbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkgYi9MaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQppbmRleCBlZjYzYjY5Li4yNmJhYzdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKLSMgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CisjIG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKICMgICBDb21tb24gVW5pdHRlc3QgUm91dGluZXMgZm9yIENKSyBjb2RlY3MKICMKIApAQCAtMTA4LDEyICsxMDgsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVuY29kZShzaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdC54bWxjaGFybmFtZXJlcGxhY2UiKVswXSwgc291dCkKIAorICAgIGRlZiB0ZXN0X2NhbGxiYWNrX3JldHVybnNfYnl0ZXMoc2VsZik6CisgICAgICAgIGRlZiBteXJlcGxhY2UoZXhjKToKKyAgICAgICAgICAgIHJldHVybiAoYiIxMjM0IiwgZXhjLmVuZCkKKyAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0LmNqa3Rlc3QiLCBteXJlcGxhY2UpCisgICAgICAgIGVuYyA9IHNlbGYuZW5jb2RlKCJhYmMiICsgc2VsZi51bm1hcHBlZHVuaWNvZGUgKyAiZGVmIiwgInRlc3QuY2prdGVzdCIpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jLCBiImFiYzEyMzRkZWYiKQorCiAgICAgZGVmIHRlc3RfY2FsbGJhY2tfd3Jvbmdfb2JqZWN0cyhzZWxmKToKICAgICAgICAgZGVmIG15cmVwbGFjZShleGMpOgogICAgICAgICAgICAgcmV0dXJuIChyZXQsIGV4Yy5lbmQpCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5jamt0ZXN0IiwgbXlyZXBsYWNlKQogCi0gICAgICAgIGZvciByZXQgaW4gKFsxLCAyLCAzXSwgW10sIE5vbmUsIG9iamVjdCgpLCBiJ3N0cmluZycsIGInJyk6CisgICAgICAgIGZvciByZXQgaW4gKFsxLCAyLCAzXSwgW10sIE5vbmUsIG9iamVjdCgpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5lbmNvZGUsIHNlbGYudW5tYXBwZWR1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QuY2prdGVzdCcpCiAKQEAgLTI2NCwyMSArMjcxLDYgQEAKIAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3N0cmVhbS5nZXR2YWx1ZSgpLCBzZWxmLnRzdHJpbmdbMF0pCiAKLWlmIGxlbignXFUwMDAxMjM0NScpID09IDI6ICMgdWNzMiBidWlsZAotICAgIF91bmljaHIgPSBjaHIKLSAgICBkZWYgY2hyKHYpOgotICAgICAgICBpZiB2ID49IDB4MTAwMDA6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocigweGQ4MDAgKyAoKHYgLSAweDEwMDAwKSA+PiAxMCkpICsgXAotICAgICAgICAgICAgICAgICAgIF91bmljaHIoMHhkYzAwICsgKCh2IC0gMHgxMDAwMCkgJiAweDNmZikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocih2KQotICAgIF9vcmQgPSBvcmQKLSAgICBkZWYgb3JkKGMpOgotICAgICAgICBpZiBsZW4oYykgPT0gMjoKLSAgICAgICAgICAgIHJldHVybiAweDEwMDAwICsgKChfb3JkKGNbMF0pIC0gMHhkODAwKSA8PCAxMCkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvcmQoY1sxXSkgLSAweGRjMDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX29yZChjKQogCiBjbGFzcyBUZXN0QmFzZV9NYXBwaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXNzX2VuY3Rlc3QgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwODBmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdib3RoX3BvcnRpb25zIGZvbyBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzMWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL3R3by5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcCBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzZhOTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbWlzc2luZ19kaXJlY3RvcnkuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjYmVkYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAnaW4gbW9kdWxlJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC9lbXB0eQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QvZW1wdHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25lc3RlZF9wb3J0aW9uMS56aXAgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMjI0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZjVjODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmNWM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5MmUxZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMiBmb28gdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3NmZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwMzdiYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YWJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQvdGhyZWUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdGhyZWUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy90b3BfbGV2ZWxfcG9ydGlvbjEuemlwIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjg2NmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKaW5kZXggNGQ0OTFiMC4uZmIwNDgzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQpAQCAtNCwxMCArNCwxMSBAQAogaW1wb3J0IHBpY2tsZXRvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgY29weXJlZworaW1wb3J0IHdlYWtyZWYKIGZyb20gaHR0cC5jb29raWVzIGltcG9ydCBTaW1wbGVDb29raWUKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKLSAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwKKyAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwgbm9fdHJhY2luZywKICAgICBfMkcsIF80RywgYmlnbWVtdGVzdCwKICAgICApCiAKQEAgLTE4LDcgKzE5LDcgQEAKICMga2luZCBvZiBvdXRlciBsb29wLgogcHJvdG9jb2xzID0gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKQogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCiAKIAogIyBSZXR1cm4gVHJ1ZSBpZiBvcGNvZGUgY29kZSBhcHBlYXJzIGluIHRoZSBwaWNrbGUsIGVsc2UgRmFsc2UuCkBAIC03NDcsNiArNzQ4LDE4IEBACiAgICAgICAgICAgICAgICAgdSA9IHNlbGYubG9hZHMocykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHUpCiAKKyAgICBkZWYgdGVzdF9lbGxpcHNpcyhzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKC4uLiwgcHJvdG8pCisgICAgICAgICAgICB1ID0gc2VsZi5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCguLi4sIHUpCisKKyAgICBkZWYgdGVzdF9ub3RpbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKE5vdEltcGxlbWVudGVkLCBwcm90bykKKyAgICAgICAgICAgIHUgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCB1KQorCiAgICAgIyBUZXN0cyBmb3IgcHJvdG9jb2wgMgogCiAgICAgZGVmIHRlc3RfcHJvdG8oc2VsZik6CkBAIC04ODAsNiArODkzLDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCKHgpLCBCKHkpLCBkZXRhaWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fLCB5Ll9fZGljdF9fLCBkZXRhaWwpCiAKKyAgICBkZWYgdGVzdF9uZXdvYmpfcHJveGllcyhzZWxmKToKKyAgICAgICAgIyBORVdPQkogc2hvdWxkIHVzZSB0aGUgX19jbGFzc19fIHJhdGhlciB0aGFuIHRoZSByYXcgdHlwZQorICAgICAgICBjbGFzc2VzID0gbXljbGFzc2VzWzpdCisgICAgICAgICMgQ2Fubm90IGNyZWF0ZSB3ZWFrcHJveGllcyB0byB0aGVzZSBjbGFzc2VzCisgICAgICAgIGZvciBjIGluIChNeUludCwgTXlUdXBsZSk6CisgICAgICAgICAgICBjbGFzc2VzLnJlbW92ZShjKQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgZm9yIEMgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBCID0gQy5fX2Jhc2VfXworICAgICAgICAgICAgICAgIHggPSBDKEMuc2FtcGxlKQorICAgICAgICAgICAgICAgIHguZm9vID0gNDIKKyAgICAgICAgICAgICAgICBwID0gd2Vha3JlZi5wcm94eSh4KQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHAsIHByb3RvKQorICAgICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHkpLCB0eXBlKHgpKSAgIyByYXRoZXIgdGhhbiB0eXBlKHApCisgICAgICAgICAgICAgICAgZGV0YWlsID0gKHByb3RvLCBDLCBCLCB4LCB5LCB0eXBlKHkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQih4KSwgQih5KSwgZGV0YWlsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeS5fX2RpY3RfXywgZGV0YWlsKQorCiAgICAgIyBSZWdpc3RlciBhIHR5cGUgd2l0aCBjb3B5cmVnLCB3aXRoIGV4dGVuc2lvbiBjb2RlIGV4dGNvZGUuICBQaWNrbGUKICAgICAjIGFuIG9iamVjdCBvZiB0aGF0IHR5cGUuICBDaGVjayB0aGF0IHRoZSByZXN1bHRpbmcgcGlja2xlIHVzZXMgb3Bjb2RlCiAgICAgIyAoRVhUWzEyNF0pIHVuZGVyIHByb3RvIDIsIGFuZCBub3QgaW4gcHJvdG8gMS4KQEAgLTEwNDAsMTMgKzEwNzIsMTMgQEAKICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX3JlZHVjZV9jYWxsZWQsIDEpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZF9nZXRhdHRyKHNlbGYpOgogICAgICAgICB4ID0gQmFkR2V0YXR0cigpCiAgICAgICAgIGZvciBwcm90byBpbiAwLCAxOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmR1bXBzLCB4LCBwcm90bykKICAgICAgICAgIyBwcm90b2NvbCAyIGRvbid0IHJhaXNlIGEgUnVudGltZUVycm9yLgogICAgICAgICBkID0gc2VsZi5kdW1wcyh4LCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYubG9hZHMsIGQpCiAKICAgICBkZWYgdGVzdF9yZWR1Y2VfYmFkX2l0ZXJhdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlNDE3NjogY3Jhc2ggd2hlbiA0dGggYW5kIDV0aCBpdGVtcyBvZiBfX3JlZHVjZV9fKCkKQEAgLTExMzYsNiArMTE2OCwxNSBAQAogICAgICAgICBlbXB0eSA9IHNlbGYubG9hZHMoYidceDgwXHgwM1VceDAwcVx4MDAuJywgZW5jb2Rpbmc9J2tvaTgtcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksICcnKQogCisgICAgZGVmIHRlc3RfaW50X3BpY2tsaW5nX2VmZmljaWVuY3koc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYWNpdHkgb2YgaW50IHJlcHJlc2VudGF0aW9uIChzZWUgaXNzdWUgIzEyNzQ0KQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgc2l6ZXMgPSBbbGVuKHNlbGYuZHVtcHMoMioqbiwgcHJvdG8pKSBmb3IgbiBpbiByYW5nZSg3MCldCisgICAgICAgICAgICAjIHRoZSBzaXplIGZ1bmN0aW9uIGlzIG1vbm90b25pYworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2l6ZXMpLCBzaXplcykKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc2l6ZXNbLTFdLCAxNCkKKwogICAgIGRlZiBjaGVja19uZWdhdGl2ZV8zMmJfYmluWFhYKHNlbGYsIGR1bXBlZCk6CiAgICAgICAgIGlmIHN5cy5tYXhzaXplID4gMioqMzI6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IGlzIG9ubHkgbWVhbmluZ2Z1bCBvbiAzMi1iaXQgYnVpbGRzIikKQEAgLTEyMTcsNyArMTI1OCw3IEBACiAgICAgIyBBbGwgcHJvdG9jb2xzIHVzZSAxLWJ5dGUgcGVyIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXI7IHdlIGFkZCBhbm90aGVyCiAgICAgIyBieXRlIGJlY2F1c2UgdGhlIGVuY29kZWQgZm9ybSBoYXMgdG8gYmUgY29waWVkIGludG8gdGhlIGludGVybmFsIGJ1ZmZlci4KIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGNoYXJhY3Rlcl9zaXplLCBkcnlfcnVuPUZhbHNlKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGFzY2lpX2NoYXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9odWdlX3N0cl8zMmIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGRhdGEgPSAiYWJjZCIgKiAoc2l6ZSAvLyA0KQogICAgICAgICB0cnk6CkBAIC0xMjM0LDcgKzEyNzUsNyBAQAogICAgICMgQklOVU5JQ09ERSAocHJvdG9jb2xzIDEsIDIgYW5kIDMpIGNhbm5vdCBjYXJyeSBtb3JlIHRoYW4KICAgICAjIDIqKjMyIC0gMSBieXRlcyBvZiB1dGYtOCBlbmNvZGVkIHVuaWNvZGUuCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfaHVnZV9zdHJfNjRiKHNlbGYsIHNpemUpOgogICAgICAgICBkYXRhID0gImEiICogc2l6ZQogICAgICAgICB0cnk6CkBAIC0xNTc4LDYgKzE2MTksMTA1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bnBpY2tsZXIubG9hZCgpLCBkYXRhKQogCiAKKyMgVGVzdHMgZm9yIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZQorCitSRURVQ0VfQSA9ICdyZWR1Y2VfQScKKworY2xhc3MgQUFBKG9iamVjdCk6CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfQSwpCisKK2NsYXNzIEJCQihvYmplY3QpOgorICAgIHBhc3MKKworY2xhc3MgQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgIyBObyBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUgYnkgZGVmYXVsdAorICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHAgPSBzZWxmLnBpY2tsZXJfY2xhc3MoZiwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwLmRpc3BhdGNoX3RhYmxlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihwLCAnZGlzcGF0Y2hfdGFibGUnKSkKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBiZSBzcGVjaWZpZWQgY2xhc3Mtd2lkZQorICAgICAgICBkdCA9IHNlbGYuZ2V0X2Rpc3BhdGNoX3RhYmxlKCkKKworICAgICAgICBjbGFzcyBNeVBpY2tsZXIoc2VsZi5waWNrbGVyX2NsYXNzKToKKyAgICAgICAgICAgIGRpc3BhdGNoX3RhYmxlID0gZHQKKworICAgICAgICBkZWYgZHVtcHMob2JqLCBwcm90b2NvbD1Ob25lKToKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIHAgPSBNeVBpY2tsZXIoZiwgcHJvdG9jb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGlzcGF0Y2hfdGFibGUsIGR0KQorICAgICAgICAgICAgcC5kdW1wKG9iaikKKyAgICAgICAgICAgIHJldHVybiBmLmdldHZhbHVlKCkKKworICAgICAgICBzZWxmLl90ZXN0X2Rpc3BhdGNoX3RhYmxlKGR1bXBzLCBkdCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbnN0YW5jZS13aWRlCisgICAgICAgIGR0ID0gc2VsZi5nZXRfZGlzcGF0Y2hfdGFibGUoKQorCisgICAgICAgIGRlZiBkdW1wcyhvYmosIHByb3RvY29sPU5vbmUpOgorICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgcCA9IHNlbGYucGlja2xlcl9jbGFzcyhmLCBwcm90b2NvbCkKKyAgICAgICAgICAgIHAuZGlzcGF0Y2hfdGFibGUgPSBkdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRpc3BhdGNoX3RhYmxlLCBkdCkKKyAgICAgICAgICAgIHAuZHVtcChvYmopCisgICAgICAgICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCisKKyAgICAgICAgc2VsZi5fdGVzdF9kaXNwYXRjaF90YWJsZShkdW1wcywgZHQpCisKKyAgICBkZWYgX3Rlc3RfZGlzcGF0Y2hfdGFibGUoc2VsZiwgZHVtcHMsIGRpc3BhdGNoX3RhYmxlKToKKyAgICAgICAgZGVmIGN1c3RvbV9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMoZHVtcHMob2JqLCAwKSkKKworICAgICAgICBkZWYgZGVmYXVsdF9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9iaiwgMCkpCisKKyAgICAgICAgIyBwaWNrbGluZyBjb21wbGV4IG51bWJlcnMgdXNpbmcgcHJvdG9jb2wgMCByZWxpZXMgb24gY29weXJlZworICAgICAgICAjIHNvIGNoZWNrIHBpY2tsaW5nIGEgY29tcGxleCBudW1iZXIgc3RpbGwgd29ya3MKKyAgICAgICAgeiA9IDEgKyAyagorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoeiksIHopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgY29tcGxleAorICAgICAgICBSRURVQ0VfMSA9ICdyZWR1Y2VfMScKKyAgICAgICAgZGVmIHJlZHVjZV8xKG9iaik6CisgICAgICAgICAgICByZXR1cm4gc3RyLCAoUkVEVUNFXzEsKQorICAgICAgICBkaXNwYXRjaF90YWJsZVtjb21wbGV4XSA9IHJlZHVjZV8xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcCh6KSwgUkVEVUNFXzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBjaGVjayBwaWNrbGFiaWxpdHkgb2YgQUFBIGFuZCBCQkIKKyAgICAgICAgYSA9IEFBQSgpCisgICAgICAgIGIgPSBCQkIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgQkJCCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0JCQl0gPSByZWR1Y2VfMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYiksIFJFRFVDRV8xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyByZXZlcnQgcGlja2xpbmcgb2YgQkJCIGFuZCBtb2RpZnkgcGlja2xpbmcgb2YgQUFBCisgICAgICAgIFJFRFVDRV8yID0gJ3JlZHVjZV8yJworICAgICAgICBkZWYgcmVkdWNlXzIob2JqKToKKyAgICAgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfMiwpCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0FBQV0gPSByZWR1Y2VfMgorICAgICAgICBkZWwgZGlzcGF0Y2hfdGFibGVbQkJCXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV8yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAjIFByaW50IHNvbWUgc3R1ZmYgdGhhdCBjYW4gYmUgdXNlZCB0byByZXdyaXRlIERBVEF7MCwxLDJ9CiAgICAgZnJvbSBwaWNrbGV0b29scyBpbXBvcnQgZGlzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IDg0YmViOGQuLjYzNjI4MmUgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yMCw2ICsyMCwxMSBAQAogT3B0aW9uczoKIAogLWgvLS1oZWxwICAgICAgIC0tIHByaW50IHRoaXMgdGV4dCBhbmQgZXhpdAorLS10aW1lb3V0IFRJTUVPVVQKKyAgICAgICAgICAgICAgICAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUKKyAgICAgICAgICAgICAgICAgICB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgIG9yIGVxdWFscyB0byB6ZXJvCistLXdhaXQgICAgICAgICAgLS0gd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciB0byBiZSBhdHRhY2hlZAogCiBWZXJib3NpdHkKIApAQCAtNDQsNiArNDksOSBAQAogICAgICAgICAgICAgICAgIC0tIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuCiAtTS8tLW1lbWxpbWl0IExJTUlUCiAgICAgICAgICAgICAgICAgLS0gcnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cworICAgLS10ZXN0ZGlyIERJUgorICAgICAgICAgICAgICAgIC0tIGV4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAoaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpCiAKIFNwZWNpYWwgcnVucwogCkBAIC0xMjUsNiArMTMzLDggQEAKIAogICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCiAKKyAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCisKICAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgogICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgogICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCkBAIC0xNTUsOCArMTY1LDExIEBACiBvcHRpb24gJy11YWxsLC1ndWknLgogIiIiCiAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKwogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZXJybm8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBnZXRvcHQKIGltcG9ydCBpbwogaW1wb3J0IGpzb24KQEAgLTE2Niw2ICsxNzksNyBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKQEAgLTIyNSw2ICsyMzksNyBAQAogU0tJUFBFRCA9IC0yCiBSRVNPVVJDRV9ERU5JRUQgPSAtMwogSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0yNjgsNiArMjgzLDE4IEBACiAgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KICAgICAiIiIKIAorICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCisgICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQorCisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKKyAgICBzaWduYWxzID0gW10KKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQorICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKKyAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKKwogICAgIHJlcGxhY2Vfc3Rkb3V0KCkKIAogICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQpAQCAtMjc4LDcgKzMwNSw4IEBACiAgICAgICAgICAgICAgJ3VzZT0nLCAndGhyZXNob2xkPScsICdjb3ZlcmRpcj0nLCAnbm9jb3ZlcmRpcicsCiAgICAgICAgICAgICAgJ3J1bmxlYWtzJywgJ2h1bnRybGVha3M9JywgJ21lbWxpbWl0PScsICdyYW5kc2VlZD0nLAogICAgICAgICAgICAgICdtdWx0aXByb2Nlc3M9JywgJ2NvdmVyYWdlJywgJ3NsYXZlYXJncz0nLCAnZm9yZXZlcicsICdkZWJ1ZycsCi0gICAgICAgICAgICAgJ3N0YXJ0PScsICdub3dpbmRvd3MnLCAnaGVhZGVyJywgJ2ZhaWxmYXN0JywgJ21hdGNoPSddKQorICAgICAgICAgICAgICdzdGFydD0nLCAnbm93aW5kb3dzJywgJ2hlYWRlcicsICd0ZXN0ZGlyPScsICd0aW1lb3V0PScsICd3YWl0JywKKyAgICAgICAgICAgICAnZmFpbGZhc3QnLCAnbWF0Y2g9J10pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgIHVzYWdlKG1zZykKIApAQCAtMjg5LDYgKzMxNyw3IEBACiAgICAgICAgIHVzZV9yZXNvdXJjZXMgPSBbXQogICAgIGRlYnVnID0gRmFsc2UKICAgICBzdGFydCA9IE5vbmUKKyAgICB0aW1lb3V0ID0gTm9uZQogICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgIGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHByaW50KF9fZG9jX18pCkBAIC0zMzIsNyArMzYxLDkgQEAKICAgICAgICAgZWxpZiBvIGluICgnLVQnLCAnLS1jb3ZlcmFnZScpOgogICAgICAgICAgICAgdHJhY2UgPSBUcnVlCiAgICAgICAgIGVsaWYgbyBpbiAoJy1EJywgJy0tY292ZXJkaXInKToKLSAgICAgICAgICAgIGNvdmVyZGlyID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBhKQorICAgICAgICAgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICAgICAgICAgIyBuZWVkICBqb2luIGl0IHdpdGggdGhlIHNhdmVkIENXRCBzbyBpdCBnb2VzIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMuCisgICAgICAgICAgICBjb3ZlcmRpciA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQogICAgICAgICBlbGlmIG8gaW4gKCctTicsICctLW5vY292ZXJkaXInKToKICAgICAgICAgICAgIGNvdmVyZGlyID0gTm9uZQogICAgICAgICBlbGlmIG8gaW4gKCctUicsICctLWh1bnRybGVha3MnKToKQEAgLTM1MCw5ICszODEsOSBAQAogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMV0gPSBpbnQoaHVudHJsZWFrc1sxXSkKICAgICAgICAgICAgIGlmIGxlbihodW50cmxlYWtzKSA9PSAyIG9yIG5vdCBodW50cmxlYWtzWzJdOgogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMjpdID0gWyJyZWZsb2cudHh0Il0KLSAgICAgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB0aGUgY2hhcmFjdGVyIGNhY2hlIGluCi0gICAgICAgICAgICAjIHN0cmluZ29iamVjdC5jIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGEKLSAgICAgICAgICAgIHdhcm1fY2hhcl9jYWNoZSgpCisgICAgICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKKyAgICAgICAgICAgICMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YToKKyAgICAgICAgICAgIHdhcm1fY2FjaGVzKCkKICAgICAgICAgZWxpZiBvIGluICgnLU0nLCAnLS1tZW1saW1pdCcpOgogICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQoYSkKICAgICAgICAgZWxpZiBvIGluICgnLXUnLCAnLS11c2UnKToKQEAgLTM2MSw2ICszOTIsOSBAQAogICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CiAgICAgICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgdXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKQEAgLTM5MSwxOCArNDI1LDQ1IEBACiAgICAgICAgICAgICBmb3JldmVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctaicsICctLW11bHRpcHJvY2VzcycpOgogICAgICAgICAgICAgdXNlX21wID0gaW50KGEpCisgICAgICAgICAgICBpZiB1c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgYWxsIGNvcmVzICsgZXh0cmFzIGZvciB0ZXN0cyB0aGF0IGxpa2UgdG8gc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgdXNlX21wID0gMiArIG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1c2VfbXAgPSAzCisgICAgICAgICAgICBpZiB1c2VfbXAgPT0gMToKKyAgICAgICAgICAgICAgICB1c2VfbXAgPSBOb25lCiAgICAgICAgIGVsaWYgbyA9PSAnLS1oZWFkZXInOgogICAgICAgICAgICAgaGVhZGVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gPT0gJy0tc2xhdmVhcmdzJzoKICAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IGpzb24ubG9hZHMoYSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsIGUuX19jbGFzc19fLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKICAgICAgICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCisgICAgICAgIGVsaWYgbyA9PSAnLS10ZXN0ZGlyJzoKKyAgICAgICAgICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAgICAgICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgICAgICAgICAgdGVzdGRpciA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQorICAgICAgICBlbGlmIG8gPT0gJy0tdGltZW91dCc6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrc19sYXRlcicpOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBmbG9hdChhKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IFRoZSB0aW1lb3V0IG9wdGlvbiByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja3NfbGF0ZXIiKQorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgICAgIGVsaWYgbyA9PSAnLS13YWl0JzoKKyAgICAgICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByaW50KCgiTm8gaGFuZGxlciBmb3Igb3B0aW9uIHt9LiAgUGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVnICIKICAgICAgICAgICAgICAgICAgICAiYXQgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy4iKS5mb3JtYXQobyksIGZpbGU9c3lzLnN0ZGVycikKQEAgLTQ4MSw3ICs1NDIsMTMgQEAKICAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCiAKLSAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCisgICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KKyAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgIGlmIHRlc3RkaXI6CisgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgZWxzZToKKyAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHModGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQorCiAgICAgc2VsZWN0ZWQgPSB0ZXN0cyBvciBhcmdzIG9yIGFsbHRlc3RzCiAgICAgaWYgc2luZ2xlOgogICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkWzoxXQpAQCAtNTAxLDcgKzU2OCw3IEBACiAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGVjdGVkKQogICAgIGlmIHRyYWNlOgogICAgICAgICBpbXBvcnQgdHJhY2UsIHRlbXBmaWxlCi0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCwKKyAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCiAKQEAgLTU2Niw3ICs2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3QsIHZlcmJvc2UsIHF1aWV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QoaHVudHJsZWFrcz1odW50cmxlYWtzLCB1c2VfcmVzb3VyY2VzPXVzZV9yZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnPWRlYnVnLCBvdXRwdXRfb25fZmFpbHVyZT12ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGZhaWxmYXN0PWZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAjIC1FIGlzIG5lZWRlZCBieSBzb21lIHRlc3RzLCBlLmcuIHRlc3RfaW1wb3J0CiAgICAgICAgICAgICAgICAgICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBlbnN1cmVzCkBAIC01NzgsMTAgKzY0NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQogICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQogICAgICAgICAgICAgICAgICAgICAjIFN0cmlwIGxhc3QgcmVmY291bnQgb3V0cHV0IGxpbmUgaWYgaXQgZXhpc3RzLCBzaW5jZSBpdAogICAgICAgICAgICAgICAgICAgICAjIGNvbWVzIGZyb20gdGhlIHNodXRkb3duIG9mIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgc3ViY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gZGVidWdfb3V0cHV0X3BhdC5zdWIoIiIsIHN0ZGVycikKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCkBAIC02MTQsOCArNjg3LDkgQEAKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCByZXN1bHRbMV0gPT0gJ0tleWJvYXJkSW50ZXJydXB0JwotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdCAgICMgV2hhdCBlbHNlPworICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQogICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKQEAgLTYzMiwxMyArNzA2LDE0IEBACiAgICAgICAgICAgICBpZiB0cmFjZToKICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHRyYWNpbmcgY29kZSBjb3ZlcmFnZSwgdGhlbiB3ZSBkb24ndCBleGl0IHdpdGggc3RhdHVzCiAgICAgICAgICAgICAgICAgIyBpZiBvbiBhIGZhbHNlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4uCi0gICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCknLAorICAgICAgICAgICAgICAgIHRyYWNlci5ydW5jdHgoJ3J1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsIHRpbWVvdXQ9dGltZW91dCknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz12YXJzKCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9dmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwgZmFpbGZhc3Q9ZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCiAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQpAQCAtNzA5LDcgKzc4NCw3IEBACiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB2ZXJib3NlID0gVHJ1ZQotICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcpCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIHF1aWV0LCBodW50cmxlYWtzLCBkZWJ1ZywgdGltZW91dD10aW1lb3V0KQogICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIHNlcGFyYXRlIGZyb20gdGhlIF5DCiAgICAgICAgICAgICAgICAgcHJpbnQoKQpAQCAtNzM0LDYgKzgwOSw4IEBACiAgICAgc3lzLmV4aXQobGVuKGJhZCkgPiAwIG9yIGludGVycnVwdGVkKQogCiAKKyMgc21hbGwgc2V0IG9mIHRlc3RzIHRvIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgYmFzaWNhbGx5IGZ1bmN0aW9uaW5nIGludGVycHJldGVyCisjIChpLmUuIGlmIGFueSBvZiB0aGVzZSBmYWlsLCB0aGVuIGFueXRoaW5nIGVsc2UgaXMgbGlrZWx5IHRvIGZvbGxvdykKIFNURFRFU1RTID0gWwogICAgICd0ZXN0X2dyYW1tYXInLAogICAgICd0ZXN0X29wY29kZXMnLApAQCAtNzQ0LDEyICs4MjEsMTEgQEAKICAgICAndGVzdF91bml0dGVzdCcsCiAgICAgJ3Rlc3RfZG9jdGVzdCcsCiAgICAgJ3Rlc3RfZG9jdGVzdDInLAorICAgICd0ZXN0X3N1cHBvcnQnCiBdCiAKLU5PVFRFU1RTID0gewotICAgICd0ZXN0X2Z1dHVyZTEnLAotICAgICd0ZXN0X2Z1dHVyZTInLAotfQorIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKK05PVFRFU1RTID0gc2V0KCkKIAogZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCkBAIC03NTgsOSArODM0LDkgQEAKICAgICB0ZXN0cyA9IFtdCiAgICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgbW9kbmFtZVs6NV0gPT0gInRlc3RfIiBhbmQgZXh0ID09ICIucHkiIGFuZCBtb2RuYW1lIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kbmFtZSkKKyAgICAgICAgbW9kLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIG1vZFs6NV0gPT0gInRlc3RfIiBhbmQgZXh0IGluICgiLnB5IiwgIiIpIGFuZCBtb2Qgbm90IGluIG90aGVyczoKKyAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2QpCiAgICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQogCiAjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCkBAIC03ODUsMTcgKzg2MSwxNCBAQAogZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CiAgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCiAgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKLSAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICMgUmVwbGFjZSBzeXMuc3Rkb3V0IGJyZWFrcyB0aGUgc3Rkb3V0IG5ld2xpbmVzIG9uIFdpbmRvd3M6IGlzc3VlICM4NTMzCi0gICAgICAgIHJldHVybgotCiAgICAgaW1wb3J0IGF0ZXhpdAogCiAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAogICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCiAgICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UpCisgICAgICAgIGNsb3NlZmQ9RmFsc2UsCisgICAgICAgIG5ld2xpbmU9J1xuJykKIAogICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgogICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKQEAgLTgwNCw3ICs4NzcsOCBAQAogCiBkZWYgcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwKICAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIGRlYnVnPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUpOgorICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLAorICAgICAgICAgICAgdGltZW91dD1Ob25lKToKICAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdC4KIAogICAgIHRlc3QgLS0gdGhlIG5hbWUgb2YgdGhlIHRlc3QKQEAgLTgxNCw2ICs4ODgsOCBAQAogICAgIGh1bnRybGVha3MgLS0gcnVuIG11bHRpcGxlIHRpbWVzIHRvIHRlc3QgZm9yIGxlYWtzOyByZXF1aXJlcyBhIGRlYnVnCiAgICAgICAgICAgICAgICAgICBidWlsZDsgYSB0cmlwbGUgY29ycmVzcG9uZGluZyB0byAtUidzIHRocmVlIGFyZ3VtZW50cwogICAgIG91dHB1dF9vbl9mYWlsdXJlIC0tIGlmIHRydWUsIGRpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZQorICAgIHRpbWVvdXQgLS0gZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4KKyAgICAgICAgICAgICAgIHRpbWVvdXQgc2Vjb25kcwogCiAgICAgUmV0dXJucyBvbmUgb2YgdGhlIHRlc3QgcmVzdWx0IGNvbnN0YW50czoKICAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagpAQCAtODI2LDYgKzkwMiw5IEBACiAKICAgICBpZiB1c2VfcmVzb3VyY2VzIGlzIG5vdCBOb25lOgogICAgICAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCisgICAgdXNlX3RpbWVvdXQgPSAodGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrc19sYXRlcih0aW1lb3V0LCBleGl0PVRydWUpCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0Lm1hdGNoX3Rlc3RzID0gbWF0Y2hfdGVzdHMKICAgICAgICAgaWYgZmFpbGZhc3Q6CkBAIC04NjQsNiArOTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPW5vdCB2ZXJib3NlKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpCiAgICAgICAgIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdCwgdmVyYm9zZSkKIHJ1bnRlc3Quc3RyaW5naW8gPSBOb25lCiAKQEAgLTkwOSwxMCArOTkwLDEwIEBACiAgICAgcmVzb3VyY2VzID0gKCdzeXMuYXJndicsICdjd2QnLCAnc3lzLnN0ZGluJywgJ3N5cy5zdGRvdXQnLCAnc3lzLnN0ZGVycicsCiAgICAgICAgICAgICAgICAgICdvcy5lbnZpcm9uJywgJ3N5cy5wYXRoJywgJ3N5cy5wYXRoX2hvb2tzJywgJ19faW1wb3J0X18nLAogICAgICAgICAgICAgICAgICAnd2FybmluZ3MuZmlsdGVycycsICdhc3luY29yZS5zb2NrZXRfbWFwJywKLSAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywKLSAgICAgICAgICAgICAgICAgJ3NodXRpbC5hcmNoaXZlX2Zvcm1hdHMnLCAnc2h1dGlsLnVucGFja19mb3JtYXRzJywKKyAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywgJ3N5cy5nZXR0cmFjZScsCiAgICAgICAgICAgICAgICAgICdzeXMud2Fybm9wdGlvbnMnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCiAgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLAorICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCiAgICAgICAgICAgICAgICAgICdzdXBwb3J0LlRFU1RGTicsCiAgICAgICAgICAgICAgICAgKQogCkBAIC05NjEsNiArMTA0MiwxMSBAQAogICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCiAgICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KIAorICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKKyAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKKyAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKKwogICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KICAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgpAQCAtMTA0NCw2ICsxMTMwLDI0IEBACiAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCiAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCiAKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKICAgICBkZWYgZ2V0X3N1cHBvcnRfVEVTVEZOKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzdXBwb3J0LlRFU1RGTik6CiAgICAgICAgICAgICByZXN1bHQgPSAnZicKQEAgLTExMDgsMTQgKzEyMTIsMTUgQEAKICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgdGhlX3BhY2thZ2UgPSBfX2ltcG9ydF9fKGFic3Rlc3QsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFtdKQogICAgICAgICAgICAgdGhlX21vZHVsZSA9IGdldGF0dHIodGhlX3BhY2thZ2UsIHRlc3QpCi0gICAgICAgICAgICAjIE9sZCB0ZXN0cyBydW4gdG8gY29tcGxldGlvbiBzaW1wbHkgYXMgYSBzaWRlLWVmZmVjdCBvZgotICAgICAgICAgICAgIyBiZWluZyBpbXBvcnRlZC4gIEZvciB0ZXN0cyBiYXNlZCBvbiB1bml0dGVzdCBvciBkb2N0ZXN0LAotICAgICAgICAgICAgIyBleHBsaWNpdGx5IGludm9rZSB0aGVpciB0ZXN0X21haW4oKSBmdW5jdGlvbiAoaWYgaXQgZXhpc3RzKS4KLSAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQotICAgICAgICAgICAgaWYgaW5kaXJlY3RfdGVzdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpbmRpcmVjdF90ZXN0KCkKKyAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCisgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCisgICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRlc3RzID0gdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhlX21vZHVsZSkKKyAgICAgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGxhbWJkYTogc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCisgICAgICAgICAgICB0ZXN0X3J1bm5lcigpCiAgICAgICAgICAgICBpZiBodW50cmxlYWtzOgotICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwKKyAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIHRlc3RfcnVubmVyLAogICAgICAgICAgICAgICAgICAgICBodW50cmxlYWtzKQogICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCiAgICAgZXhjZXB0IHN1cHBvcnQuUmVzb3VyY2VEZW5pZWQgYXMgbXNnOgpAQCAtMTE5OCw3ICsxMzAzLDggQEAKICAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KICAgICAiIiIKICAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgotICAgIGltcG9ydCBjb3B5cmVnLCBfYWJjb2xsCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAKICAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CiAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgpAQCAtMTIxNSw3ICsxMzIxLDcgQEAKICAgICBlbHNlOgogICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCiAgICAgYWJjcyA9IHt9Ci0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihfYWJjb2xsLCBhKSBmb3IgYSBpbiBfYWJjb2xsLl9fYWxsX19dOgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CiAgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CkBAIC0xMjYxLDcgKzEzNjcsNyBAQAogICAgIGltcG9ydCBnYywgY29weXJlZwogICAgIGltcG9ydCBfc3RycHRpbWUsIGxpbmVjYWNoZQogICAgIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0LCBtaW1ldHlwZXMsIGRvY3Rlc3QKLSAgICBpbXBvcnQgc3RydWN0LCBmaWxlY21wLCBfYWJjb2xsCisgICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgY29sbGVjdGlvbnMuYWJjCiAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IF9wYXRoX2NyZWF0ZWQKICAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKIApAQCAtMTI4OCw3ICsxMzk0LDcgQEAKICAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQogCiAgICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCi0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihfYWJjb2xsLCBhKSBmb3IgYSBpbiBfYWJjb2xsLl9fYWxsX19dOgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CiAgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CkBAIC0xMzI0LDEwICsxNDMwLDE1IEBACiAgICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaC4KICAgICBnYy5jb2xsZWN0KCkKIAotZGVmIHdhcm1fY2hhcl9jYWNoZSgpOgorZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCiAgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCiAgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKICAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICB4ID0gW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQorICAgICMgaW50IGNhY2hlCisgICAgeCA9IGxpc3QocmFuZ2UoLTUsIDI1NykpCiAKIGRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgogICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCkBAIC0xMzc0LDEzICsxNDg1LDE0IEBACiAjIFRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHNraXBwZWQgZXZlcnl3aGVyZSBleGNlcHQgb24gb25lIHBsYXRmb3JtCiAjIGFyZSBhbHNvIGhhbmRsZWQgc2VwYXJhdGVseS4KIAotX2V4cGVjdGF0aW9ucyA9IHsKLSAgICAnd2luMzInOgorX2V4cGVjdGF0aW9ucyA9ICgKKyAgICAoJ3dpbjMyJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfX2xvY2FsZQogICAgICAgICB0ZXN0X2NyeXB0CiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2ZjbnRsCiAgICAgICAgIHRlc3RfZm9yazEKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTQwMywxNSArMTUxNSwxNiBAQAogICAgICAgICB0ZXN0X3RocmVhZHNpZ25hbHMKICAgICAgICAgdGVzdF93YWl0MwogICAgICAgICB0ZXN0X3dhaXQ0Ci0gICAgICAgICIiIiwKLSAgICAnbGludXgyJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2xpbnV4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2xhcmdlZmlsZQogICAgICAgICB0ZXN0X2txdWV1ZQogICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2Ci0gICAgICAgICIiIiwKLSAgICAndW5peHdhcmU3JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3VuaXh3YXJlJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9sYXJnZWZpbGUKQEAgLTE0MjEsOCArMTUzNCw4IEBACiAgICAgICAgIHRlc3RfcHlleHBhdAogICAgICAgICB0ZXN0X3NheAogICAgICAgICB0ZXN0X3N1bmRyeQotICAgICAgICAiIiIsCi0gICAgJ29wZW51bml4OCc6CisgICAgICAgICIiIiksCisgICAgKCdvcGVudW5peCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfbGFyZ2VmaWxlCkBAIC0xNDMyLDggKzE1NDUsOCBAQAogICAgICAgICB0ZXN0X3B5ZXhwYXQKICAgICAgICAgdGVzdF9zYXgKICAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiLAotICAgICdzY29fc3YzJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3Njb19zdicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2FzeW5jaGF0CiAgICAgICAgIHRlc3RfZm9yazEKQEAgLTE0NTIsMTEgKzE1NjUsMTIgQEAKICAgICAgICAgdGVzdF90aHJlYWRlZF9pbXBvcnQKICAgICAgICAgdGVzdF90aHJlYWRlZHRlbXBmaWxlCiAgICAgICAgIHRlc3RfdGhyZWFkaW5nCi0gICAgICAgICIiIiwKLSAgICAnZGFyd2luJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2RhcndpbicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X19sb2NhbGUKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfZ2RiCkBAIC0xNDY1LDggKzE1NzksOCBAQAogICAgICAgICB0ZXN0X21pbmlkb20KICAgICAgICAgdGVzdF9vc3NhdWRpb2RldgogICAgICAgICB0ZXN0X3BvbGwKLSAgICAgICAgIiIiLAotICAgICdzdW5vczUnOgorICAgICAgICAiIiIpLAorICAgICgnc3Vub3MnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9kYm0KQEAgLTE0NzcsOCArMTU5MSw4IEBACiAgICAgICAgIHRlc3Rfb3BlbnB0eQogICAgICAgICB0ZXN0X3ppcGZpbGUKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnaHAtdXgxMSc6CisgICAgICAgICIiIiksCisgICAgKCdocC11eCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2Vwb2xsCkBAIC0xNDkzLDExICsxNjA3LDEyIEBACiAgICAgICAgIHRlc3Rfc2F4CiAgICAgICAgIHRlc3RfemlwZmlsZQogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdjeWd3aW4nOgorICAgICAgICAiIiIpLAorICAgICgnY3lnd2luJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfaW9jdGwKICAgICAgICAgdGVzdF9rcXVldWUKQEAgLTE1MDUsOCArMTYyMCw4IEBACiAgICAgICAgIHRlc3RfbG9jYWxlCiAgICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKICAgICAgICAgdGVzdF9zb2NrZXRzZXJ2ZXIKLSAgICAgICAgIiIiLAotICAgICdvczJlbXgnOgorICAgICAgICAiIiIpLAorICAgICgnb3MyZW14JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfYXVkaW9vcAogICAgICAgICB0ZXN0X2N1cnNlcwpAQCAtMTUxOSw5ICsxNjM0LDEwIEBACiAgICAgICAgIHRlc3RfcHR5CiAgICAgICAgIHRlc3RfcmVzb3VyY2UKICAgICAgICAgdGVzdF9zaWduYWwKLSAgICAgICAgIiIiLAotICAgICdmcmVlYnNkNCc6CisgICAgICAgICIiIiksCisgICAgKCdmcmVlYnNkJywKICAgICAgICAgIiIiCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTUzNiw4ICsxNjUyLDggQEAKICAgICAgICAgdGVzdF90aW1lb3V0CiAgICAgICAgIHRlc3RfdXJsbGlibmV0CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLSAgICAnYWl4NSc6CisgICAgICAgICIiIiksCisgICAgKCdhaXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9iejIKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTU1MSwxMCArMTY2NywxMSBAQAogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X3ppcGltcG9ydAogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdvcGVuYnNkMyc6CisgICAgICAgICIiIiksCisgICAgKCdvcGVuYnNkJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3R5cGVzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTU2NiwxMSArMTY4MywxMiBAQAogICAgICAgICB0ZXN0X3R0a19ndWlvbmx5CiAgICAgICAgIHRlc3RfdHRrX3RleHRvbmx5CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLSAgICAnbmV0YnNkMyc6CisgICAgICAgICIiIiksCisgICAgKCduZXRic2QnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdHlwZXMKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfbG9jYWxlCkBAIC0xNTgxLDEyICsxNjk5LDggQEAKICAgICAgICAgdGVzdF90dGtfZ3Vpb25seQogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi19Ci1fZXhwZWN0YXRpb25zWydmcmVlYnNkNSddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDYnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q3J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCi1fZXhwZWN0YXRpb25zWydmcmVlYnNkOCddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQorICAgICAgICAiIiIpLAorKQogCiBjbGFzcyBfRXhwZWN0ZWRTa2lwczoKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC0xNTk0LDkgKzE3MDgsMTMgQEAKICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3RpbWVvdXQKIAogICAgICAgICBzZWxmLnZhbGlkID0gRmFsc2UKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluIF9leHBlY3RhdGlvbnM6Ci0gICAgICAgICAgICBzID0gX2V4cGVjdGF0aW9uc1tzeXMucGxhdGZvcm1dCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkID0gc2V0KHMuc3BsaXQoKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBOb25lCisgICAgICAgIGZvciBpdGVtIGluIF9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChpdGVtWzBdKToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGl0ZW1bMV0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBzZXQoZXhwZWN0ZWQuc3BsaXQoKSkKIAogICAgICAgICAgICAgIyBUaGVzZSBhcmUgYnJva2VuIHRlc3RzLCBmb3Igbm93IHNraXBwZWQgb24gZXZlcnkgcGxhdGZvcm0uCiAgICAgICAgICAgICAjIFhYWCBGaXggdGhlc2UhCkBAIC0xNjU2LDkgKzE3NzQsOCBAQAogICAgICAgICBURU1QRElSID0gb3MucGF0aC5hYnNwYXRoKFRFTVBESVIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZwogICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlcGVyZi5weSBiL0xpYi90ZXN0L3JlcGVyZi5weQppbmRleCA3YzY4MjM0Li5lOTNiYWNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9yZXBlcmYucHkKKysrIGIvTGliL3Rlc3QvcmVwZXJmLnB5CkBAIC05LDEzICs5LDEzIEBACiAgICAgdGltZWZ1bmMoMTAsIHAuZmluZGFsbCwgcykKIAogZGVmIHRpbWVmdW5jKG4sIGZ1bmMsICphcmdzLCAqKmt3KToKLSAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgIHQwID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIHRyeToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKCphcmdzLCAqKmt3KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKLSAgICAgICAgdDEgPSB0aW1lLmNsb2NrKCkKKyAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgIGlmIG4gPiAxOgogICAgICAgICAgICAgcHJpbnQobiwgInRpbWVzIiwgZW5kPScgJykKICAgICAgICAgcHJpbnQoZnVuYy5fX25hbWVfXywgIiUuM2YiICUgKHQxLXQwKSwgIkNQVSBzZWNvbmRzIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGJhNDQ2Y2QuLmIwOWY0YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpAQCAtMSw2ICsxLDcgQEAKICMgQ29tbW9uIHV0aWxpdHkgZnVuY3Rpb25zIHVzZWQgYnkgdmFyaW91cyBzY3JpcHQgZXhlY3V0aW9uIHRlc3RzCiAjICBlLmcuIHRlc3RfY21kX2xpbmUsIHRlc3RfY21kX2xpbmVfc2NyaXB0IGFuZCB0ZXN0X3J1bnB5CiAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKQEAgLTU5LDExICs2MCwxMiBAQAogICAgICIiIgogICAgIHJldHVybiBfYXNzZXJ0X3B5dGhvbihGYWxzZSwgKmFyZ3MsICoqZW52X3ZhcnMpCiAKLWRlZiBzcGF3bl9weXRob24oKmFyZ3MpOgorZGVmIHNwYXduX3B5dGhvbigqYXJncywgKiprdyk6CiAgICAgY21kX2xpbmUgPSBbc3lzLmV4ZWN1dGFibGUsICctRSddCiAgICAgY21kX2xpbmUuZXh0ZW5kKGFyZ3MpCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oY21kX2xpbmUsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3cpCiAKIGRlZiBraWxsX3B5dGhvbihwKToKICAgICBwLnN0ZGluLmNsb3NlKCkKQEAgLTkyLDYgKzk0LDcgQEAKICAgICBzY3JpcHRfZmlsZSA9IG9wZW4oc2NyaXB0X25hbWUsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykKICAgICBzY3JpcHRfZmlsZS53cml0ZShzb3VyY2UpCiAgICAgc2NyaXB0X2ZpbGUuY2xvc2UoKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgcmV0dXJuIHNjcmlwdF9uYW1lCiAKIGRlZiBtYWtlX3ppcF9zY3JpcHQoemlwX2RpciwgemlwX2Jhc2VuYW1lLCBzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXA9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKaW5kZXggZjY1NWMyOS4uZjE4NWE4MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQpAQCAtNCw2ICs0LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCiAKICMgVmFyaW91cyBpdGVyYWJsZXMKICMgVGhpcyBpcyB1c2VkIGZvciBjaGVja2luZyB0aGUgY29uc3RydWN0b3IgKGhlcmUgYW5kIGluIHRlc3RfZGVxdWUucHkpCkBAIC0zODgsMyArMzg5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmluZGV4KDAsIC00KnN5cy5tYXhzaXplLCA0KnN5cy5tYXhzaXplKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYS5pbmRleCwgMCwgNCpzeXMubWF4c2l6ZSwtNCpzeXMubWF4c2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYS5pbmRleCwgMiwgMCwgLTEwKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBsc3QgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGxzdDIgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGxzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0MiwgbHN0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGxzdDIpLCBpZChsc3QpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc29ydHBlcmYucHkgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQppbmRleCAwY2U4OGRlLi5hZjdjMGI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zb3J0cGVyZi5weQorKysgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQpAQCAtNTcsOSArNTcsOSBAQAogICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiBkZWYgZG9pdChMKToKLSAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgIHQwID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIEwuc29ydCgpCi0gICAgdDEgPSB0aW1lLmNsb2NrKCkKKyAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICBwcmludCgiJTYuMmYiICUgKHQxLXQwKSwgZW5kPScgJykKICAgICBmbHVzaCgpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbSBiL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTI0NjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtCkBAIC0wLDAgKzEsMTggQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK1Byb2MtVHlwZTogNCxFTkNSWVBURUQKK0RFSy1JbmZvOiBERVMtRURFMy1DQkMsMUE4RDlEMkEwMkVDNjk4QQorCitrSlliZlo4TDBzZmU5T3R5M2d3MGFsb05uWTVFOGZlZ1JmUUxabE5veFRsNmpOdDBuSXdJOGtESjM2Q1pnUjljCit1M0ZESm0vS3FyZlVvejh2VytxRW5XaFNHN1FQWDJ3V0dQSGQ0Szk0WXovRmdyUnpaMERvSzdYeFhxOWdPdFZBCitBVkdRaG56MzJwKzZXaGZHc0NyOUFyWEV3UlpyVGsvRnZ6RVBhVTVmSGNvU2tyTlZBR1g4SXBTVmtTRHdFRFFyCitHdjE3K2Nmazk5VVYxT0N6YTZ5S0hvRmtUdHJDK1BaVTcxTG9tQmFiaXZTMk9jNEI5aFl1U1IyaEYwMXdUSFArCitZbFdOYWdaT09WdE56NG9LSzl4OWVOUXBtZlFYUXZQUFRmdXNleEtJYktmWnJNdkpveGNtMWdmY1owSC93SzZQCis2d21YU0czNXFNT096dENaTnRwZXJqczF3ekVCWHpueUs4UW1MY0FKQmprZmFyQUJKWDl2QkV6WlYwT1VLaHkrCitub09SRndIVGxscGhibXlkTGh1NmVoTFVaTUhQaHpBUzVVTjdzcnRwU044MWVlckRNeTBSTVVBd0E3L1BvZlgxCis5NE1lODVROGpQMFBDOUVUZHNKY1BxTHpBUEVURVl1MEVMZXdLUmNyZHlXaSt0bExGcnBFNUtUL3M1ZWNibDlsCis3QjYxVTRLZmQxUElYYy9zaUlOaFUzQTNiWUsrODQ1WXlVQXJVT25LZjFrRW94N3AxUnBEN3lGcVZUMDRsUlRvCitjaWJOS0FUQnVzWFN1QnJwMkc2R051aFdFT1NhZldDS0pRQXpnQ1lJcDZaVFYya2hoTVVHcHBjLzJIM0NGNmNPCit6WDBLdGxQVlpDN2hMa0I2SFQ4U3hZVXdGMXpxV1k3Ky9YUFBkYzM3TWVFWjg3UTNVdVp3cU9STFkrWjBocGd0CitMNUpYQkNva2xaaENBYU4yR3F3RkxYdEdpUlNSRkdZN3hYSWhiRFRsRTY1V3YxV0dHZ0RMTUtHRTFnT3ozeUFvCisyampHMSt5QUhKVWRFNjlYVEZIU3FTa3ZhbG9BMVcwM0xkTVhaOVZ1UUoveVNYQ2llNkFCQVE9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5IGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKaW5kZXggNzdjMDU0Mi4uODY4NjE1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKKysrIGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKQEAgLTk0LDcgKzk0LDEyIEBACiAgICAgICAgICIiIlNlcnZlIGEgR0VUIHJlcXVlc3QuIiIiCiAgICAgICAgIHNvY2sgPSBzZWxmLnJmaWxlLnJhdy5fc29jawogICAgICAgICBjb250ZXh0ID0gc29jay5jb250ZXh0Ci0gICAgICAgIGJvZHkgPSBwcHJpbnQucGZvcm1hdChjb250ZXh0LnNlc3Npb25fc3RhdHMoKSkKKyAgICAgICAgc3RhdHMgPSB7CisgICAgICAgICAgICAnc2Vzc2lvbl9jYWNoZSc6IGNvbnRleHQuc2Vzc2lvbl9zdGF0cygpLAorICAgICAgICAgICAgJ2NpcGhlcic6IHNvY2suY2lwaGVyKCksCisgICAgICAgICAgICAnY29tcHJlc3Npb24nOiBzb2NrLmNvbXByZXNzaW9uKCksCisgICAgICAgICAgICB9CisgICAgICAgIGJvZHkgPSBwcHJpbnQucGZvcm1hdChzdGF0cykKICAgICAgICAgYm9keSA9IGJvZHkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IikKQEAgLTE3Miw2ICsxNzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBoZWxwPSdiZSBsZXNzIHZlcmJvc2UnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc3RhdHMnLCBkZXN0PSd1c2Vfc3RhdHNfaGFuZGxlcicsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdhbHdheXMgcmV0dXJuIHN0YXRzIHBhZ2UnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY3VydmUtbmFtZScsIGRlc3Q9J2N1cnZlX25hbWUnLCB0eXBlPXN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY3VydmUgbmFtZSBmb3IgRUMtYmFzZWQgRGlmZmllLUhlbGxtYW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGgnLCBkZXN0PSdkaF9maWxlJywgdHlwZT1zdHIsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUEVNIGZpbGUgY29udGFpbmluZyBESCBwYXJhbWV0ZXJzJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc3VwcG9ydC52ZXJib3NlID0gYXJncy52ZXJib3NlCkBAIC0xODIsNiArMTkyLDEwIEBACiAgICAgICAgIGhhbmRsZXJfY2xhc3Mucm9vdCA9IG9zLmdldGN3ZCgpCiAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICBpZiBhcmdzLmN1cnZlX25hbWU6CisgICAgICAgIGNvbnRleHQuc2V0X2VjZGhfY3VydmUoYXJncy5jdXJ2ZV9uYW1lKQorICAgIGlmIGFyZ3MuZGhfZmlsZToKKyAgICAgICAgY29udGV4dC5sb2FkX2RoX3BhcmFtcyhhcmdzLmRoX2ZpbGUpCiAKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlcigoIiIsIGFyZ3MucG9ydCksIGhhbmRsZXJfY2xhc3MsIGNvbnRleHQpCiAgICAgaWYgYXJncy52ZXJib3NlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CmluZGV4IDY3OTIxNzkuLjM4NWIwMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKQEAgLTIwLDcgKzIwLDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6IHNlbGYuc2VxID0gWydhJywgJ2InLCAnYyddCiAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiA4CiAKLWNsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0OgogICAgICMgVGhlc2UgdGVzdHMgYXJlIGZvciBidWZmZXJzIG9mIHZhbHVlcyAoYnl0ZXMpIGFuZCBub3QKICAgICAjIHNwZWNpZmljIHRvIGNoYXJhY3RlciBpbnRlcnByZXRhdGlvbiwgdXNlZCBmb3IgYnl0ZXMgb2JqZWN0cwogICAgICMgYW5kIHZhcmlvdXMgc3RyaW5nIGltcGxlbWVudGF0aW9ucwpAQCAtMjksNiArMjksMTEgQEAKICAgICAjIENoYW5nZSBpbiBzdWJjbGFzc2VzIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mIGZpeHRlc3R0eXBlKCkKICAgICB0eXBlMnRlc3QgPSBOb25lCiAKKyAgICAjIFdoZXRoZXIgdGhlICJjb250YWluZWQgaXRlbXMiIG9mIHRoZSBjb250YWluZXIgYXJlIGludGVnZXJzIGluCisgICAgIyByYW5nZSgwLCAyNTYpIChpLmUuIGJ5dGVzLCBieXRlYXJyYXkpIG9yIHN0cmluZ3Mgb2YgbGVuZ3RoIDEKKyAgICAjIChzdHIpCisgICAgY29udGFpbnNfYnl0ZXMgPSBGYWxzZQorCiAgICAgIyBBbGwgdGVzdHMgcGFzcyB0aGVpciBhcmd1bWVudHMgdG8gdGhlIHRlc3RpbmcgbWV0aG9kcwogICAgICMgYXMgc3RyIG9iamVjdHMuIGZpeHRlc3R0eXBlKCkgY2FuIGJlIHVzZWQgdG8gcHJvcGFnYXRlCiAgICAgIyB0aGVzZSBhcmd1bWVudHMgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUKQEAgLTQ4LDExICs1MywxMiBAQAogICAgICAgICAgICAgcmV0dXJuIG9iagogCiAgICAgIyBjaGVjayB0aGF0IG9iai5tZXRob2QoKmFyZ3MpIHJldHVybnMgcmVzdWx0Ci0gICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmosIG1ldGhvZG5hbWUsICphcmdzKToKKyAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iaiwgbWV0aG9kbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5maXh0eXBlKHJlc3VsdCkKICAgICAgICAgb2JqID0gc2VsZi5maXh0eXBlKG9iaikKICAgICAgICAgYXJncyA9IHNlbGYuZml4dHlwZShhcmdzKQotICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmosIG1ldGhvZG5hbWUpKCphcmdzKQorICAgICAgICBrd2FyZ3MgPSB7azogc2VsZi5maXh0eXBlKHYpIGZvciBrLHYgaW4ga3dhcmdzLml0ZW1zKCl9CisgICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iaiwgbWV0aG9kbmFtZSkoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgcmVzdWx0LAogICAgICAgICAgICAgcmVhbHJlc3VsdApAQCAtMTE3LDcgKzEyMywxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJycsICdjb3VudCcsICd4eCcsIHN5cy5tYXhzaXplLCAwKQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2NvdW50JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnaGVsbG8nLCAnY291bnQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnLCA0MikKIAogICAgICAgICAjIEZvciBhIHZhcmlldHkgb2YgY29tYmluYXRpb25zLAogICAgICAgICAjICAgIHZlcmlmeSB0aGF0IHN0ci5jb3VudCgpIG1hdGNoZXMgYW4gZXF1aXZhbGVudCBmdW5jdGlvbgpAQCAtMTYzLDcgKzE3MywxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ2ZpbmQnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2hlbGxvJywgJ2ZpbmQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnZmluZCcsIDQyKQogCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnJywgJ2ZpbmQnLCAnJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnJywgJ2ZpbmQnLCAnJywgMSwgMSkKQEAgLTIxNyw3ICsyMzEsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdyZmluZCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdoZWxsbycsICdyZmluZCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcsIDQyKQogCiAgICAgICAgICMgRm9yIGEgdmFyaWV0eSBvZiBjb21iaW5hdGlvbnMsCiAgICAgICAgICMgICAgdmVyaWZ5IHRoYXQgc3RyLnJmaW5kKCkgbWF0Y2hlcyBfX2NvbnRhaW5zX18KQEAgLTI0NSw2ICsyNjMsOSBAQAogICAgICAgICAjIGlzc3VlIDc0NTgKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYWInLCAncmZpbmQnLCAneHh4Jywgc3lzLm1heHNpemUgKyAxLCAwKQogCisgICAgICAgICMgaXNzdWUgIzE1NTM0CisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnPC4uLi4uLlx1MDQzYy4uLicsICJyZmluZCIsICI8IikKKwogICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ2FiY2RlZmdoaWFiYycsICdpbmRleCcsICcnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMywgJ2FiY2RlZmdoaWFiYycsICdpbmRleCcsICdkZWYnKQpAQCAtMjY0LDcgKzI4NSwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ2luZGV4JywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCiAKICAgICBkZWYgdGVzdF9yaW5kZXgoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMiwgJ2FiY2RlZmdoaWFiYycsICdyaW5kZXgnLCAnJykKQEAgLTI4Niw3ICszMTEsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdyaW5kZXgnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JywgNDIpCiAKICAgICBkZWYgdGVzdF9sb3dlcihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdoZWxsbycsICdIZUxMbycsICdsb3dlcicpCkBAIC0zNjQsNiArMzkzLDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnXSoxOCArIFsnYUJMQUhhJ10sICgnYUJMQUgnKjIwKVs6LTRdLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3NwbGl0JywgJ0JMQUgnLCAxOCkKIAorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2F8YnxjfGQnLCAnc3BsaXQnLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsICd8JywgbWF4c3BsaXQ9MSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdifGN8ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAnc3BsaXQnLCBzZXA9J3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsIG1heHNwbGl0PTEsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYiBjIGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhIGIgYyBkJywgJ3NwbGl0JywgbWF4c3BsaXQ9MSkKKwogICAgICAgICAjIGFyZ3VtZW50IHR5cGUKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdzcGxpdCcsIDQyLCA0MiwgNDIpCiAKQEAgLTQyMSw2ICs0NjEsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYUJMQUhhJ10gKyBbJ2EnXSoxOCwgKCdhQkxBSCcqMjApWzotNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAncnNwbGl0JywgJ0JMQUgnLCAxOCkKIAorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2F8YnxjfGQnLCAncnNwbGl0Jywgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYXxifGMnLCAnZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAncnNwbGl0JywgJ3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCBzZXA9J3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCBtYXhzcGxpdD0xLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhIGIgYycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYSBiIGMgZCcsICdyc3BsaXQnLCBtYXhzcGxpdD0xKQorCiAgICAgICAgICMgYXJndW1lbnQgdHlwZQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JzcGxpdCcsIDQyLCA0MiwgNDIpCiAKQEAgLTU1MCw2ICs2MDEsOCBAQAogICAgICAgICBFUSgiUmV5S0tqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJrIiwgIktLIiwgMSkKICAgICAgICAgRVEoIlJleWtqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJrIiwgIktLIiwgMCkKICAgICAgICAgRVEoIkEtLS0tQi0tLS1DLS0tLSIsICJBLkIuQy4iLCAicmVwbGFjZSIsICIuIiwgIi0tLS0iKQorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBFUSgnLi4uXHUwNDNjLi4uLi4uJmx0OycsICcuLi5cdTA0M2MuLi4uLi48JywgInJlcGxhY2UiLCAiPCIsICImbHQ7IikKIAogICAgICAgICBFUSgiUmV5a2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgInEiLCAiS0siKQogCkBAIC02NDQsNyArNjk3LDcgQEAKIAogICAgICAgICAjIGNoZWNrIHRoYXQgdGl0bGVjYXNlZCBjaGFycyBhcmUgbG93ZXJlZCBjb3JyZWN0bHkKICAgICAgICAgIyBcdTFmZmMgaXMgdGhlIHRpdGxlY2FzZWQgY2hhcgotICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ1x1MWZmY1x1MWZmM1x1MWZmM1x1MWZmMycsCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUwM2E5XHUwMzk5XHUxZmYzXHUxZmYzXHUxZmYzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdcdTFmZjNcdTFmZjNcdTFmZmNcdTFmZmMnLCAnY2FwaXRhbGl6ZScpCiAgICAgICAgICMgY2hlY2sgd2l0aCBjYXNlZCBub24tbGV0dGVyIGNoYXJzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUyNGM1XHUyNGU4XHUyNGUzXHUyNGQ3XHUyNGRlXHUyNGRkJywKQEAgLTkwOSw3ICs5NjIsMTQgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYWJjJywgJ2RlZicsICdnaGknXSwgImFiY1xuZGVmXHJcbmdoaVxuIiwgJ3NwbGl0bGluZXMnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgImFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJycsICdhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJykKLSAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCAxKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCBGYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnJywgJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzcGxpdGxpbmVzJywga2VlcGVuZHM9RmFsc2UpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ1xuJywgJ2FiY1xuJywgJ2RlZlxyXG4nLCAnZ2hpXG4nLCAnXHInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIGtlZXBlbmRzPVRydWUpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdhYmMnLCAnc3BsaXRsaW5lcycsIDQyLCA0MikKIApAQCAtMTE0Myw2ICsxMjAzLDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJTEwLipmJywgJ19fbW9kX18nLCAoJ2ZvbycsIDQyLikpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUxMCcsICdfX21vZF9fJywgKDQyLCkpCiAKKyAgICAgICAgIyBPdXRyYWdlb3VzbHkgbGFyZ2Ugd2lkdGggb3IgcHJlY2lzaW9uIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yLgorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclJSVkZicgJSAoMioqNjQpLCAnX19tb2RfXycsICgzLjIpKQorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclJS4lZGYnICUgKDIqKjY0KSwgJ19fbW9kX18nLCAoMy4yKSkKKwogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKE92ZXJmbG93RXJyb3IsICclKnMnLCAnX19tb2RfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF90ZXN0Y2FwaS5QWV9TU0laRV9UX01BWCArIDEsICcnKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhPdmVyZmxvd0Vycm9yLCAnJS4qZicsICdfX21vZF9fJywKQEAgLTEyNzEsNiArMTMzNSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCByJ15lbmRzd2l0aFwoJywgcy5lbmRzd2l0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgTm9uZSwgTm9uZSwgTm9uZSkKIAorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTAsICIuLi5cdTA0M2MuLi4uLi48IiwgImZpbmQiLCAiPCIpCisKIAogY2xhc3MgTWl4aW5TdHJVbmljb2RlVGVzdDoKICAgICAjIEFkZGl0aW9uYWwgdGVzdHMgdGhhdCBvbmx5IHdvcmsgd2l0aCBzdHIgYW5kIHVuaWNvZGUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0LnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC5weQppbmRleCAyMTMwZmQ2Li4xZTNhZWYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQucHkKQEAgLTE1LDcgKzE1LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBpbXAKQEAgLTM3LDI2ICszNyw0MSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAordHJ5OgorICAgIGltcG9ydCB6bGliCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgemxpYiA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCiAKIF9fYWxsX18gPSBbCi0gICAgIkVycm9yIiwgIlRlc3RGYWlsZWQiLCAiUmVzb3VyY2VEZW5pZWQiLCAiaW1wb3J0X21vZHVsZSIsCi0gICAgInZlcmJvc2UiLCAidXNlX3Jlc291cmNlcyIsICJtYXhfbWVtdXNlIiwgInJlY29yZF9vcmlnaW5hbF9zdGRvdXQiLAorICAgICJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLCAidmVyYm9zZSIsCisgICAgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKICAgICAiZ2V0X29yaWdpbmFsX3N0ZG91dCIsICJ1bmxvYWQiLCAidW5saW5rIiwgInJtdHJlZSIsICJmb3JnZXQiLAotICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX21hY192ZXIiLAotICAgICJmaW5kX3VudXNlZF9wb3J0IiwgImJpbmRfcG9ydCIsCi0gICAgImZjbXAiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIkZVWloiLCAiU0FWRURDV0QiLCAidGVtcF9jd2QiLAotICAgICJmaW5kZmlsZSIsICJzb3J0ZGljdCIsICJjaGVja19zeW50YXhfZXJyb3IiLCAib3Blbl91cmxyZXNvdXJjZSIsCi0gICAgImNoZWNrX3dhcm5pbmdzIiwgIkNsZWFuSW1wb3J0IiwgIkVudmlyb25tZW50VmFyR3VhcmQiLAotICAgICJUcmFuc2llbnRSZXNvdXJjZSIsICJjYXB0dXJlZF9vdXRwdXQiLCAiY2FwdHVyZWRfc3Rkb3V0IiwKLSAgICAiY2FwdHVyZWRfc3RkaW4iLCAiY2FwdHVyZWRfc3RkZXJyIiwKLSAgICAidGltZV9vdXQiLCAic29ja2V0X3BlZXJfcmVzZXQiLCAiaW9lcnJvcl9wZWVyX3Jlc2V0IiwKLSAgICAicnVuX3dpdGhfbG9jYWxlIiwgJ3RlbXBfdW1hc2snLCAidHJhbnNpZW50X2ludGVybmV0IiwKLSAgICAic2V0X21lbWxpbWl0IiwgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsICJCYXNpY1Rlc3RSdW5uZXIiLAotICAgICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwgInRocmVhZGluZ19jbGVhbnVwIiwKLSAgICAicmVhcF9jaGlsZHJlbiIsICJjcHl0aG9uX29ubHkiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLCAiZ2V0X2F0dHJpYnV0ZSIsCi0gICAgInN3YXBfaXRlbSIsICJzd2FwX2F0dHIiLCAicmVxdWlyZXNfSUVFRV83NTQiLAorICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbiIsCisgICAgInJlcXVpcmVzX2xpbnV4X3ZlcnNpb24iLCAicmVxdWlyZXNfbWFjX3ZlciIsICJmaW5kX3VudXNlZF9wb3J0IiwKKyAgICAiYmluZF9wb3J0IiwgIklQVjZfRU5BQkxFRCIsICJpc19qeXRob24iLCAiVEVTVEZOIiwgIkhPU1QiLCAiU0FWRURDV0QiLAorICAgICJ0ZW1wX2N3ZCIsICJmaW5kZmlsZSIsICJjcmVhdGVfZW1wdHlfZmlsZSIsICJzb3J0ZGljdCIsCisgICAgImNoZWNrX3N5bnRheF9lcnJvciIsICJvcGVuX3VybHJlc291cmNlIiwgImNoZWNrX3dhcm5pbmdzIiwgIkNsZWFuSW1wb3J0IiwKKyAgICAiRW52aXJvbm1lbnRWYXJHdWFyZCIsICJUcmFuc2llbnRSZXNvdXJjZSIsICJjYXB0dXJlZF9zdGRvdXQiLAorICAgICJjYXB0dXJlZF9zdGRpbiIsICJjYXB0dXJlZF9zdGRlcnIiLCAidGltZV9vdXQiLCAic29ja2V0X3BlZXJfcmVzZXQiLAorICAgICJpb2Vycm9yX3BlZXJfcmVzZXQiLCAicnVuX3dpdGhfbG9jYWxlIiwgJ3RlbXBfdW1hc2snLAorICAgICJ0cmFuc2llbnRfaW50ZXJuZXQiLCAic2V0X21lbWxpbWl0IiwgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsCisgICAgIkJhc2ljVGVzdFJ1bm5lciIsICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwKKyAgICAidGhyZWFkaW5nX2NsZWFudXAiLCAicmVhcF9jaGlsZHJlbiIsICJjcHl0aG9uX29ubHkiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLAorICAgICJnZXRfYXR0cmlidXRlIiwgInN3YXBfaXRlbSIsICJzd2FwX2F0dHIiLCAicmVxdWlyZXNfSUVFRV83NTQiLAogICAgICJUZXN0SGFuZGxlciIsICJNYXRjaGVyIiwgImNhbl9zeW1saW5rIiwgInNraXBfdW5sZXNzX3N5bWxpbmsiLAotICAgICJpbXBvcnRfZnJlc2hfbW9kdWxlIiwgImZhaWxmYXN0IiwgInJ1bl93aXRoX3R6IgorICAgICJza2lwX3VubGVzc194YXR0ciIsICJpbXBvcnRfZnJlc2hfbW9kdWxlIiwgInJlcXVpcmVzX3psaWIiLAorICAgICJQSVBFX01BWF9TSVpFIiwgImZhaWxmYXN0IiwgImFudGljaXBhdGVfZmFpbHVyZSIsICJydW5fd2l0aF90eiIsCisgICAgInJlcXVpcmVzX2J6MiIsICJyZXF1aXJlc19sem1hIgogICAgIF0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKQEAgLTEyNyw2ICsxNDIsMTcgQEAKICAgICByZXR1cm4gc2F2ZWQKIAogCitkZWYgYW50aWNpcGF0ZV9mYWlsdXJlKGNvbmRpdGlvbik6CisgICAgIiIiRGVjb3JhdG9yIHRvIG1hcmsgYSB0ZXN0IHRoYXQgaXMga25vd24gdG8gYmUgYnJva2VuIGluIHNvbWUgY2FzZXMKKworICAgICAgIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkIGhhdmUgYSBjb21tZW50IGlkZW50aWZ5aW5nIHRoZQorICAgICAgIGFzc29jaWF0ZWQgdHJhY2tlciBpc3N1ZS4KKyAgICAiIiIKKyAgICBpZiBjb25kaXRpb246CisgICAgICAgIHJldHVybiB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICByZXR1cm4gbGFtYmRhIGY6IGYKKworCiBkZWYgaW1wb3J0X2ZyZXNoX21vZHVsZShuYW1lLCBmcmVzaD0oKSwgYmxvY2tlZD0oKSwgZGVwcmVjYXRlZD1GYWxzZSk6CiAgICAgIiIiSW1wb3J0cyBhbmQgcmV0dXJucyBhIG1vZHVsZSwgZGVsaWJlcmF0ZWx5IGJ5cGFzc2luZyB0aGUgc3lzLm1vZHVsZXMgY2FjaGUKICAgICBhbmQgaW1wb3J0aW5nIGEgZnJlc2ggY29weSBvZiB0aGUgbW9kdWxlLiBPbmNlIHRoZSBpbXBvcnQgaXMgY29tcGxldGUsCkBAIC0xNzAsOCArMTk2LDcgQEAKICAgICB0cnk6CiAgICAgICAgIGF0dHJpYnV0ZSA9IGdldGF0dHIob2JqLCBuYW1lKQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm1vZHVsZSAlcyBoYXMgbm8gYXR0cmlidXRlICVzIiAlICgKLSAgICAgICAgICAgIG9iai5fX25hbWVfXywgbmFtZSkpCisgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvYmplY3QgJXIgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAob2JqLCBuYW1lKSkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gYXR0cmlidXRlCiAKQEAgLTI3Niw4ICszMDEsNyBAQAogICAgIHRyeToKICAgICAgICAgX3JtdHJlZShwYXRoKQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgotICAgICAgICAjIFVuaXggcmV0dXJucyBFTk9FTlQsIFdpbmRvd3MgcmV0dXJucyBFU1JDSC4KLSAgICAgICAgaWYgZXJyb3IuZXJybm8gbm90IGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVTUkNIKToKKyAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgcmFpc2UKIAogZGVmIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpOgpAQCAtMzYyLDkgKzM4Niw1MiBAQAogICAgICAgICByZXR1cm4KICAgICBpZiBub3QgaXNfcmVzb3VyY2VfZW5hYmxlZChyZXNvdXJjZSk6CiAgICAgICAgIGlmIG1zZyBpcyBOb25lOgotICAgICAgICAgICAgbXNnID0gIlVzZSBvZiB0aGUgYCVzJyByZXNvdXJjZSBub3QgZW5hYmxlZCIgJSByZXNvdXJjZQorICAgICAgICAgICAgbXNnID0gIlVzZSBvZiB0aGUgJXIgcmVzb3VyY2Ugbm90IGVuYWJsZWQiICUgcmVzb3VyY2UKICAgICAgICAgcmFpc2UgUmVzb3VyY2VEZW5pZWQobXNnKQogCitkZWYgX3JlcXVpcmVzX3VuaXhfdmVyc2lvbihzeXNuYW1lLCBtaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIGBzeXNuYW1lYCBhbmQgdGhlIHZlcnNpb24gaXMgbGVzcworICAgIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignRnJlZUJTRCcsICg3LCAyKSkgcmFpc2VzIFNraXBUZXN0IGlmCisgICAgdGhlIEZyZWVCU0QgdmVyc2lvbiBpcyBsZXNzIHRoYW4gNy4yLgorICAgICIiIgorICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gc3lzbmFtZToKKyAgICAgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLnJlbGVhc2UoKS5zcGxpdCgnLScsIDEpWzBdCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uIDwgbWluX3ZlcnNpb246CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbl90eHQgPSAnLicuam9pbihtYXAoc3RyLCBtaW5fdmVyc2lvbikpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgdmVyc2lvbiAlcyBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzeXNuYW1lLCBtaW5fdmVyc2lvbl90eHQsIHZlcnNpb25fdHh0KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKK2RlZiByZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oKm1pbl92ZXJzaW9uKToKKyAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgRnJlZUJTRCBhbmQgdGhlIEZyZWVCU0QgdmVyc2lvbiBpcworICAgIGxlc3MgdGhhbiBgbWluX3ZlcnNpb25gLgorCisgICAgRm9yIGV4YW1wbGUsIEByZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oNywgMikgcmFpc2VzIFNraXBUZXN0IGlmIHRoZSBGcmVlQlNECisgICAgdmVyc2lvbiBpcyBsZXNzIHRoYW4gNy4yLgorICAgICIiIgorICAgIHJldHVybiBfcmVxdWlyZXNfdW5peF92ZXJzaW9uKCdGcmVlQlNEJywgbWluX3ZlcnNpb24pCisKK2RlZiByZXF1aXJlc19saW51eF92ZXJzaW9uKCptaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIExpbnV4IGFuZCB0aGUgTGludXggdmVyc2lvbiBpcworICAgIGxlc3MgdGhhbiBgbWluX3ZlcnNpb25gLgorCisgICAgRm9yIGV4YW1wbGUsIEByZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDMyKSByYWlzZXMgU2tpcFRlc3QgaWYgdGhlIExpbnV4CisgICAgdmVyc2lvbiBpcyBsZXNzIHRoYW4gMi42LjMyLgorICAgICIiIgorICAgIHJldHVybiBfcmVxdWlyZXNfdW5peF92ZXJzaW9uKCdMaW51eCcsIG1pbl92ZXJzaW9uKQorCiBkZWYgcmVxdWlyZXNfbWFjX3ZlcigqbWluX3ZlcnNpb24pOgogICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBNYWMgT1MgWCBhbmQgdGhlIE9TIFgKICAgICB2ZXJzaW9uIGlmIGxlc3MgdGhhbiBtaW5fdmVyc2lvbi4KQEAgLTM5Miw2ICs0NTksNyBAQAogICAgICAgICByZXR1cm4gd3JhcHBlcgogICAgIHJldHVybiBkZWNvcmF0b3IKIAorCiBIT1NUID0gJ2xvY2FsaG9zdCcKIAogZGVmIGZpbmRfdW51c2VkX3BvcnQoZmFtaWx5PXNvY2tldC5BRl9JTkVULCBzb2NrdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pOgpAQCAtNDg3LDI5ICs1NTUsNDEgQEAKICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCiAgICAgcmV0dXJuIHBvcnQKIAotRlVaWiA9IDFlLTYKLQotZGVmIGZjbXAoeCwgeSk6ICMgZnV6enkgY29tcGFyaXNvbiBmdW5jdGlvbgotICAgIGlmIGlzaW5zdGFuY2UoeCwgZmxvYXQpIG9yIGlzaW5zdGFuY2UoeSwgZmxvYXQpOgorZGVmIF9pc19pcHY2X2VuYWJsZWQoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIElQdjYgaXMgZW5hYmxlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgaWYgc29ja2V0Lmhhc19pcHY2OgorICAgICAgICBzb2NrID0gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmdXp6ID0gKGFicyh4KSArIGFicyh5KSkgKiBGVVpaCi0gICAgICAgICAgICBpZiBhYnMoeC15KSA8PSBmdXp6OgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc29jay5iaW5kKCgnOjoxJywgMCkpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgc29ja2V0LmdhaWVycm9yKToKICAgICAgICAgICAgIHBhc3MKLSAgICBlbGlmIHR5cGUoeCkgPT0gdHlwZSh5KSBhbmQgaXNpbnN0YW5jZSh4LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbih4KSwgbGVuKHkpKSk6Ci0gICAgICAgICAgICBvdXRjb21lID0gZmNtcCh4W2ldLCB5W2ldKQotICAgICAgICAgICAgaWYgb3V0Y29tZSAhPSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBvdXRjb21lCi0gICAgICAgIHJldHVybiAobGVuKHgpID4gbGVuKHkpKSAtIChsZW4oeCkgPCBsZW4oeSkpCi0gICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzb2NrOgorICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgIHJldHVybiBGYWxzZQorCitJUFY2X0VOQUJMRUQgPSBfaXNfaXB2Nl9lbmFibGVkKCkKKworCisjIEEgY29uc3RhbnQgbGlrZWx5IGxhcmdlciB0aGFuIHRoZSB1bmRlcmx5aW5nIE9TIHBpcGUgYnVmZmVyIHNpemUuCisjIFdpbmRvd3MgbGltaXQgc2VlbXMgdG8gYmUgYXJvdW5kIDUxMkIsIGFuZCBtb3N0IFVuaXgga2VybmVscyBoYXZlIGEgNjRLIHBpcGUKKyMgYnVmZmVyIHNpemU6IHRha2UgMU0gdG8gYmUgc3VyZS4KK1BJUEVfTUFYX1NJWkUgPSAxMDI0ICogMTAyNAorCiAKICMgZGVjb3JhdG9yIGZvciBza2lwcGluZyB0ZXN0cyBvbiBub24tSUVFRSA3NTQgcGxhdGZvcm1zCiByZXF1aXJlc19JRUVFXzc1NCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCiAgICAgZmxvYXQuX19nZXRmb3JtYXRfXygiZG91YmxlIikuc3RhcnRzd2l0aCgiSUVFRSIpLAogICAgICJ0ZXN0IHJlcXVpcmVzIElFRUUgNzU0IGRvdWJsZXMiKQogCityZXF1aXJlc196bGliID0gdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAncmVxdWlyZXMgemxpYicpCisKK3JlcXVpcmVzX2J6MiA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAncmVxdWlyZXMgYnoyJykKKworcmVxdWlyZXNfbHptYSA9IHVuaXR0ZXN0LnNraXBVbmxlc3MobHptYSwgJ3JlcXVpcmVzIGx6bWEnKQorCiBpc19qeXRob24gPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpCiAKICMgRmlsZW5hbWUgdXNlZCBmb3IgdGVzdGluZwpAQCAtNjg4LDE0ICs3NjgsMTUgQEAKICAgICAgICAgICAgIHJtdHJlZShuYW1lKQogCiAKLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgdGVtcF91bWFzayh1bWFzayk6Ci0gICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4iIiIKLSAgICBvbGRtYXNrID0gb3MudW1hc2sodW1hc2spCi0gICAgdHJ5OgotICAgICAgICB5aWVsZAotICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLnVtYXNrKG9sZG1hc2spCitpZiBoYXNhdHRyKG9zLCAidW1hc2siKToKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiB0ZW1wX3VtYXNrKHVtYXNrKToKKyAgICAgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4iIiIKKyAgICAgICAgb2xkbWFzayA9IG9zLnVtYXNrKHVtYXNrKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW1hc2sob2xkbWFzaykKIAogCiBkZWYgZmluZGZpbGUoZmlsZSwgaGVyZT1fX2ZpbGVfXywgc3ViZGlyPU5vbmUpOgpAQCAtNzEzLDYgKzc5NCwxMSBAQAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6IHJldHVybiBmbgogICAgIHJldHVybiBmaWxlCiAKK2RlZiBjcmVhdGVfZW1wdHlfZmlsZShmaWxlbmFtZSk6CisgICAgIiIiQ3JlYXRlIGFuIGVtcHR5IGZpbGUuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLCB0cnVuY2F0ZSBpdC4iIiIKKyAgICBmZCA9IG9zLm9wZW4oZmlsZW5hbWUsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCB8IG9zLk9fVFJVTkMpCisgICAgb3MuY2xvc2UoZmQpCisKIGRlZiBzb3J0ZGljdChkaWN0KToKICAgICAiTGlrZSByZXByKGRpY3QpLCBidXQgaW4gc29ydGVkIG9yZGVyLiIKICAgICBpdGVtcyA9IHNvcnRlZChkaWN0Lml0ZW1zKCkpCkBAIC03NzcsNyArODYzLDcgQEAKICAgICBmID0gY2hlY2tfdmFsaWRfZmlsZShmbikKICAgICBpZiBmIGlzIG5vdCBOb25lOgogICAgICAgICByZXR1cm4gZgotICAgIHJhaXNlIFRlc3RGYWlsZWQoJ2ludmFsaWQgcmVzb3VyY2UgIiVzIicgJSBmbikKKyAgICByYWlzZSBUZXN0RmFpbGVkKCdpbnZhbGlkIHJlc291cmNlICVyJyAlIGZuKQogCiAKIGNsYXNzIFdhcm5pbmdzUmVjb3JkZXIob2JqZWN0KToKQEAgLTg5OCw3ICs5ODQsNyBAQAogICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoc2VsZi5vcmlnaW5hbF9tb2R1bGVzKQogCiAKLWNsYXNzIEVudmlyb25tZW50VmFyR3VhcmQoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgorY2xhc3MgRW52aXJvbm1lbnRWYXJHdWFyZChjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmcpOgogCiAgICAgIiIiQ2xhc3MgdG8gaGVscCBwcm90ZWN0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBwcm9wZXJseS4gIENhbiBiZSB1c2VkIGFzCiAgICAgYSBjb250ZXh0IG1hbmFnZXIuIiIiCkBAIC0xMDI5LDcgKzExMTUsNyBAQAogICAgICAgICAoJ1dTQU5PX0RBVEEnLCAxMTAwNCksCiAgICAgXQogCi0gICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICclcycgaXMgbm90IGF2YWlsYWJsZSIgJSByZXNvdXJjZV9uYW1lKQorICAgIGRlbmllZCA9IFJlc291cmNlRGVuaWVkKCJSZXNvdXJjZSAlciBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCiAgICAgY2FwdHVyZWRfZXJybm9zID0gZXJybm9zCiAgICAgZ2FpX2Vycm5vcyA9IFtdCiAgICAgaWYgbm90IGNhcHR1cmVkX2Vycm5vczoKQEAgLTExMTgsNiArMTIwNCwxNiBAQAogICAgIGdjLmNvbGxlY3QoKQogICAgIGdjLmNvbGxlY3QoKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGRpc2FibGVfZ2MoKToKKyAgICBoYXZlX2djID0gZ2MuaXNlbmFibGVkKCkKKyAgICBnYy5kaXNhYmxlKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgaWYgaGF2ZV9nYzoKKyAgICAgICAgICAgIGdjLmVuYWJsZSgpCisKIAogZGVmIHB5dGhvbl9pc19vcHRpbWl6ZWQoKToKICAgICAiIiJGaW5kIGlmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBvcHRpbWl6YXRpb25zLiIiIgpAQCAtMTEyNiwxOSArMTIyMiwyMSBAQAogICAgIGZvciBvcHQgaW4gY2ZsYWdzLnNwbGl0KCk6CiAgICAgICAgIGlmIG9wdC5zdGFydHN3aXRoKCctTycpOgogICAgICAgICAgICAgZmluYWxfb3B0ID0gb3B0Ci0gICAgcmV0dXJuIGZpbmFsX29wdCBhbmQgZmluYWxfb3B0ICE9ICctTzAnCisgICAgcmV0dXJuIGZpbmFsX29wdCAhPSAnJyBhbmQgZmluYWxfb3B0ICE9ICctTzAnCiAKIAotX2hlYWRlciA9ICcyUCcKK19oZWFkZXIgPSAnblAnCitfYWxpZ24gPSAnMG4nCiBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICBfaGVhZGVyID0gJzJQJyArIF9oZWFkZXIKLV92aGVhZGVyID0gX2hlYWRlciArICdQJworICAgIF9hbGlnbiA9ICcwUCcKK192aGVhZGVyID0gX2hlYWRlciArICduJwogCiBkZWYgY2FsY29ianNpemUoZm10KToKLSAgICByZXR1cm4gc3RydWN0LmNhbGNzaXplKF9oZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArIF9hbGlnbikKIAogZGVmIGNhbGN2b2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyBfYWxpZ24pCiAKIAogX1RQRkxBR1NfSEFWRV9HQyA9IDE8PDE0CkBAIC0xMjEyLDcgKzEzMTAsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9yaWdfdHogPT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiBvcmlnX3R6IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydUWiddCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IG9yaWdfdHoKQEAgLTEyNTcsNDEgKzEzNTUsMzUgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTWVtb3J5IGxpbWl0ICVyIHRvbyBsb3cgdG8gYmUgdXNlZnVsJyAlIChsaW1pdCwpKQogICAgIG1heF9tZW11c2UgPSBtZW1saW1pdAogCi1kZWYgX21lbW9yeV93YXRjaGRvZyhzdGFydF9ldnQsIGZpbmlzaF9ldnQsIHBlcmlvZD0xMC4wKToKLSAgICAiIiJBIGZ1bmN0aW9uIHdoaWNoIHBlcmlvZGljYWxseSB3YXRjaGVzIHRoZSBwcm9jZXNzJyBtZW1vcnkgY29uc3VtcHRpb24KK2NsYXNzIF9NZW1vcnlXYXRjaGRvZzoKKyAgICAiIiJBbiBvYmplY3Qgd2hpY2ggcGVyaW9kaWNhbGx5IHdhdGNoZXMgdGhlIHByb2Nlc3MnIG1lbW9yeSBjb25zdW1wdGlvbgogICAgIGFuZCBwcmludHMgaXQgb3V0LgogICAgICIiIgotICAgICMgWFhYOiBiZWNhdXNlIG9mIHRoZSBHSUwsIGFuZCBiZWNhdXNlIHRoZSB2ZXJ5IGxvbmcgb3BlcmF0aW9ucyB0ZXN0ZWQKLSAgICAjIGluIG1vc3QgYmlnbWVtIHRlc3RzIGFyZSB1bmludGVycnVwdGlibGUsIHRoZSBsb29wIGJlbG93IGdldHMgd29rZW4gdXAKLSAgICAjIG11Y2ggbGVzcyBvZnRlbiB0aGFuIGV4cGVjdGVkLgotICAgICMgVGhlIHBvbGxpbmcgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIHJhdyBDLCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCwKLSAgICAjIGFuZCBwdXNoIHJlc3VsdHMgb250byBhbiBhbm9ueW1vdXMgcGlwZS4KLSAgICB0cnk6Ci0gICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VTSVpFJykKLSAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5wcm9jZmlsZSA9ICcvcHJvYy97cGlkfS9zdGF0bScuZm9ybWF0KHBpZD1vcy5nZXRwaWQoKSkKKyAgICAgICAgc2VsZi5zdGFydGVkID0gRmFsc2UKKworICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFnZV9zaXplID0gb3Muc3lzY29uZignU0NfUEFHRV9TSVpFJykKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICBwYWdlX3NpemUgPSA0MDk2Ci0gICAgcHJvY2ZpbGUgPSAnL3Byb2Mve3BpZH0vc3RhdG0nLmZvcm1hdChwaWQ9b3MuZ2V0cGlkKCkpCi0gICAgdHJ5OgotICAgICAgICBmID0gb3Blbihwcm9jZmlsZSwgJ3JiJykKLSAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICB3YXJuaW5ncy53YXJuKCcvcHJvYyBub3QgYXZhaWxhYmxlIGZvciBzdGF0czoge30nLmZvcm1hdChlKSwKLSAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybgotICAgIHdpdGggZjoKLSAgICAgICAgc3RhcnRfZXZ0LnNldCgpCi0gICAgICAgIG9sZF9kYXRhID0gLTEKLSAgICAgICAgd2hpbGUgbm90IGZpbmlzaF9ldnQud2FpdChwZXJpb2QpOgotICAgICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgICAgICBzdGF0bSA9IGYucmVhZCgpLmRlY29kZSgnYXNjaWknKQotICAgICAgICAgICAgZGF0YSA9IGludChzdGF0bS5zcGxpdCgpWzVdKQotICAgICAgICAgICAgaWYgZGF0YSAhPSBvbGRfZGF0YToKLSAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IGRhdGEKLSAgICAgICAgICAgICAgICBwcmludCgiIC4uLiBwcm9jZXNzIGRhdGEgc2l6ZToge2RhdGE6LjFmfUciCi0gICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZGF0YT1kYXRhICogcGFnZV9zaXplIC8gKDEwMjQgKiogMykpKQorICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5wcm9jZmlsZSwgJ3InKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybignL3Byb2Mgbm90IGF2YWlsYWJsZSBmb3Igc3RhdHM6IHt9Jy5mb3JtYXQoZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB3YXRjaGRvZ19zY3JpcHQgPSBmaW5kZmlsZSgibWVtb3J5X3dhdGNoZG9nLnB5IikKKyAgICAgICAgc2VsZi5tZW1fd2F0Y2hkb2cgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgd2F0Y2hkb2dfc2NyaXB0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPWYsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBUcnVlCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zdGFydGVkOgorICAgICAgICAgICAgc2VsZi5tZW1fd2F0Y2hkb2cudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNlbGYubWVtX3dhdGNoZG9nLndhaXQoKQorCiAKIGRlZiBiaWdtZW10ZXN0KHNpemUsIG1lbXVzZSwgZHJ5X3J1bj1UcnVlKToKICAgICAiIiJEZWNvcmF0b3IgZm9yIGJpZ21lbSB0ZXN0cy4KQEAgLTEzMTgsMjcgKzE0MTAsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5OiAlLjFmRyBtaW5pbXVtIG5lZWRlZCIKICAgICAgICAgICAgICAgICAgICAgJSAoc2l6ZSAqIG1lbXVzZSAvICgxMDI0ICoqIDMpKSkKIAotICAgICAgICAgICAgaWYgcmVhbF9tYXhfbWVtdXNlIGFuZCB2ZXJib3NlIGFuZCB0aHJlYWRpbmc6CisgICAgICAgICAgICBpZiByZWFsX21heF9tZW11c2UgYW5kIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICAgICAgIHByaW50KCIgLi4uIGV4cGVjdGVkIHBlYWsgbWVtb3J5IHVzZToge3BlYWs6LjFmfUciCiAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChwZWFrPXNpemUgKiBtZW11c2UgLyAoMTAyNCAqKiAzKSkpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAgICAgc3RhcnRfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgICAgICAgICBmaW5pc2hfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X21lbW9yeV93YXRjaGRvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzdGFydF9ldnQsIGZpbmlzaF9ldnQsIDAuNSkpCi0gICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgICAgICAgICAgc3RhcnRfZXZ0LnNldCgpCisgICAgICAgICAgICAgICAgd2F0Y2hkb2cgPSBfTWVtb3J5V2F0Y2hkb2coKQorICAgICAgICAgICAgICAgIHdhdGNoZG9nLnN0YXJ0KCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdCA9IE5vbmUKKyAgICAgICAgICAgICAgICB3YXRjaGRvZyA9IE5vbmUKIAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIG1heHNpemUpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIHQ6Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9ldnQuc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgdC5qb2luKCkKKyAgICAgICAgICAgICAgICBpZiB3YXRjaGRvZzoKKyAgICAgICAgICAgICAgICAgICAgd2F0Y2hkb2cuc3RvcCgpCiAKICAgICAgICAgd3JhcHBlci5zaXplID0gc2l6ZQogICAgICAgICB3cmFwcGVyLm1lbXVzZSA9IG1lbXVzZQpAQCAtMTQyMCw2ICsxNTA1LDMzIEBACiAgICAgcmV0dXJuIGd1YXJkcy5nZXQocGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCkubG93ZXIoKSwgZGVmYXVsdCkKIAogCitkZWYgbm9fdHJhY2luZyhmdW5jKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gdGVtcG9yYXJpbHkgdHVybiBvZmYgdHJhY2luZyBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgdGVzdC4iIiIKKyAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpOgorICAgICAgICByZXR1cm4gZnVuYworICAgIGVsc2U6CisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIG9yaWdpbmFsX3RyYWNlID0gc3lzLmdldHRyYWNlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHN5cy5zZXR0cmFjZShvcmlnaW5hbF90cmFjZSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIKKworCitkZWYgcmVmY291bnRfdGVzdCh0ZXN0KToKKyAgICAiIiJEZWNvcmF0b3IgZm9yIHRlc3RzIHdoaWNoIGludm9sdmUgcmVmZXJlbmNlIGNvdW50aW5nLgorCisgICAgVG8gc3RhcnQsIHRoZSBkZWNvcmF0b3IgZG9lcyBub3QgcnVuIHRoZSB0ZXN0IGlmIGlzIG5vdCBydW4gYnkgQ1B5dGhvbi4KKyAgICBBZnRlciB0aGF0LCBhbnkgdHJhY2UgZnVuY3Rpb24gaXMgdW5zZXQgZHVyaW5nIHRoZSB0ZXN0IHRvIHByZXZlbnQKKyAgICB1bmV4cGVjdGVkIHJlZmNvdW50cyBjYXVzZWQgYnkgdGhlIHRyYWNlIGZ1bmN0aW9uLgorCisgICAgIiIiCisgICAgcmV0dXJuIG5vX3RyYWNpbmcoY3B5dGhvbl9vbmx5KHRlc3QpKQorCisKIGRlZiBfZmlsdGVyX3N1aXRlKHN1aXRlLCBwcmVkKToKICAgICAiIiJSZWN1cnNpdmVseSBmaWx0ZXIgdGVzdCBjYXNlcyBpbiBhIHN1aXRlIGJhc2VkIG9uIGEgcHJlZGljYXRlLiIiIgogICAgIG5ld3Rlc3RzID0gW10KQEAgLTE0MzIsNyArMTU0NCw2IEBACiAgICAgICAgICAgICAgICAgbmV3dGVzdHMuYXBwZW5kKHRlc3QpCiAgICAgc3VpdGUuX3Rlc3RzID0gbmV3dGVzdHMKIAotCiBkZWYgX3J1bl9zdWl0ZShzdWl0ZSk6CiAgICAgIiIiUnVuIHRlc3RzIGZyb20gYSB1bml0dGVzdC5UZXN0U3VpdGUtZGVyaXZlZCBjbGFzcy4iIiIKICAgICBpZiB2ZXJib3NlOgpAQCAtMTQ4MSw3ICsxNTkyLDcgQEAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBkb2N0ZXN0IGRyaXZlci4KIAotZGVmIHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUpOgorZGVmIHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUsIG9wdGlvbmZsYWdzPTApOgogICAgICIiIlJ1biBkb2N0ZXN0IG9uIHRoZSBnaXZlbiBtb2R1bGUuICBSZXR1cm4gKCNmYWlsdXJlcywgI3Rlc3RzKS4KIAogICAgIElmIG9wdGlvbmFsIGFyZ3VtZW50IHZlcmJvc2l0eSBpcyBub3Qgc3BlY2lmaWVkIChvciBpcyBOb25lKSwgcGFzcwpAQCAtMTQ5Niw3ICsxNjA3LDcgQEAKICAgICBlbHNlOgogICAgICAgICB2ZXJib3NpdHkgPSBOb25lCiAKLSAgICBmLCB0ID0gZG9jdGVzdC50ZXN0bW9kKG1vZHVsZSwgdmVyYm9zZT12ZXJib3NpdHkpCisgICAgZiwgdCA9IGRvY3Rlc3QudGVzdG1vZChtb2R1bGUsIHZlcmJvc2U9dmVyYm9zaXR5LCBvcHRpb25mbGFncz1vcHRpb25mbGFncykKICAgICBpZiBmOgogICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCIlZCBvZiAlZCBkb2N0ZXN0cyBmYWlsZWQiICUgKGYsIHQpKQogICAgIGlmIHZlcmJvc2U6CkBAIC0xNjU0LDI4ICsxNzY1LDEzIEBACiAgICAgVGhpcyB3aWxsIHR5cGljYWxseSBiZSBydW4gb24gdGhlIHJlc3VsdCBvZiB0aGUgY29tbXVuaWNhdGUoKSBtZXRob2QKICAgICBvZiBhIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0LgogICAgICIiIgotICAgIHN0ZGVyciA9IHJlLnN1YihiciJcW1xkKyByZWZzXF1ccj9cbj8kIiwgYiIiLCBzdGRlcnIpLnN0cmlwKCkKKyAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmc1xdXHI/XG4/IiwgYiIiLCBzdGRlcnIpLnN0cmlwKCkKICAgICByZXR1cm4gc3RkZXJyCiAKIGRlZiBhcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKLSAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCi0gICAgZmxhZ19vcHRfbWFwID0gewotICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKLSAgICAgICAgJ2RvbnRfd3JpdGVfYnl0ZWNvZGUnOiAnQicsCi0gICAgICAgICdoYXNoX3JhbmRvbWl6YXRpb24nOiAnUicsCi0gICAgICAgICdpZ25vcmVfZW52aXJvbm1lbnQnOiAnRScsCi0gICAgICAgICdub191c2VyX3NpdGUnOiAncycsCi0gICAgICAgICdub19zaXRlJzogJ1MnLAotICAgICAgICAnb3B0aW1pemUnOiAnTycsCi0gICAgICAgICd2ZXJib3NlJzogJ3YnLAotICAgIH0KLSAgICBhcmdzID0gW10KLSAgICBmb3IgZmxhZywgb3B0IGluIGZsYWdfb3B0X21hcC5pdGVtcygpOgotICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCi0gICAgICAgIGlmIHYgPiAwOgotICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0nICsgb3B0ICogdikKLSAgICByZXR1cm4gYXJncworICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgorICAgIHJldHVybiBzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFN1cHBvcnQgZm9yIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KQEAgLTE3NjUsNiArMTg2MSw0MCBAQAogICAgIG1zZyA9ICJSZXF1aXJlcyBmdW5jdGlvbmFsIHN5bWxpbmsgaW1wbGVtZW50YXRpb24iCiAgICAgcmV0dXJuIHRlc3QgaWYgb2sgZWxzZSB1bml0dGVzdC5za2lwKG1zZykodGVzdCkKIAorX2Nhbl94YXR0ciA9IE5vbmUKK2RlZiBjYW5feGF0dHIoKToKKyAgICBnbG9iYWwgX2Nhbl94YXR0cgorICAgIGlmIF9jYW5feGF0dHIgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBfY2FuX3hhdHRyCisgICAgaWYgbm90IGhhc2F0dHIob3MsICJzZXR4YXR0ciIpOgorICAgICAgICBjYW4gPSBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHRtcF9mcCwgdG1wX25hbWUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIFRFU1RGTiAmIHRlbXBmaWxlIG1heSB1c2UgZGlmZmVyZW50IGZpbGUgc3lzdGVtcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IGNhcGFiaWxpdGllcworICAgICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cih0bXBfZnAsIGIidXNlci50ZXN0IiwgYiIiKQorICAgICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgorICAgICAgICAgICAgICAgICAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQorICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY2FuID0gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjYW4gPSBGYWxzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgICAgIHVubGluayh0bXBfbmFtZSkKKyAgICBfY2FuX3hhdHRyID0gY2FuCisgICAgcmV0dXJuIGNhbgorCitkZWYgc2tpcF91bmxlc3NfeGF0dHIodGVzdCk6CisgICAgIiIiU2tpcCBkZWNvcmF0b3IgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBmdW5jdGlvbmFsIGV4dGVuZGVkIGF0dHJpYnV0ZXMiIiIKKyAgICBvayA9IGNhbl94YXR0cigpCisgICAgbXNnID0gIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiCisgICAgcmV0dXJuIHRlc3QgaWYgb2sgZWxzZSB1bml0dGVzdC5za2lwKG1zZykodGVzdCkKKwogZGVmIHBhdGNoKHRlc3RfaW5zdGFuY2UsIG9iamVjdF90b19wYXRjaCwgYXR0cl9uYW1lLCBuZXdfdmFsdWUpOgogICAgICIiIk92ZXJyaWRlICdvYmplY3RfdG9fcGF0Y2gnLidhdHRyX25hbWUnIHdpdGggJ25ld192YWx1ZScuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQppbmRleCAzZmFkYjU3Li40MjMxZjM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CkBAIC0xLDIzICsxLDI1IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBmcm9tIF9sb2NhbGUgaW1wb3J0IChzZXRsb2NhbGUsIExDX0FMTCwgTENfQ1RZUEUsIExDX05VTUVSSUMsIGxvY2FsZWNvbnYsIEVycm9yKQogdHJ5OgogICAgIGZyb20gX2xvY2FsZSBpbXBvcnQgKFJBRElYQ0hBUiwgVEhPVVNFUCwgbmxfbGFuZ2luZm8pCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbmxfbGFuZ2luZm8gPSBOb25lCiAKLWltcG9ydCB1bml0dGVzdAoraW1wb3J0IGNvZGVjcworaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHBsYXRmb3JtIGltcG9ydCB1bmFtZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCi1pZiB1bmFtZSgpWzBdID09ICJEYXJ3aW4iOgotICAgIG1haiwgbWluLCBtaWMgPSBbaW50KHBhcnQpIGZvciBwYXJ0IGluIHVuYW1lKClbMl0uc3BsaXQoIi4iKV0KK2lmIHVuYW1lKCkuc3lzdGVtID09ICJEYXJ3aW4iOgorICAgIG1haiwgbWluLCBtaWMgPSBbaW50KHBhcnQpIGZvciBwYXJ0IGluIHVuYW1lKCkucmVsZWFzZS5zcGxpdCgiLiIpXQogICAgIGlmIChtYWosIG1pbiwgbWljKSA8ICg4LCAwLCAwKToKICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImxvY2FsZSBzdXBwb3J0IGJyb2tlbiBmb3IgT1MgWCA8IDEwLjQiKQogCiBjYW5kaWRhdGVfbG9jYWxlcyA9IFsnZXNfVVknLCAnZnJfRlInLCAnZmlfRkknLCAnZXNfQ08nLCAncHRfUFQnLCAnaXRfSVQnLAogICAgICdldF9FRScsICdlc19QWScsICdub19OTycsICdubF9OTCcsICdsdl9MVicsICdlbF9HUicsICdiZV9CWScsICdmcl9CRScsCiAgICAgJ3JvX1JPJywgJ3J1X1VBJywgJ3J1X1JVJywgJ2VzX1ZFJywgJ2NhX0VTJywgJ3NlX05PJywgJ2VzX0VDJywgJ2lkX0lEJywKLSAgICAna2FfR0UnLCAnZXNfQ0wnLCAnaHVfSFUnLCAnd2FfQkUnLCAnbHRfTFQnLCAnc2xfU0knLCAnaHJfSFInLCAnZXNfQVInLAorICAgICdrYV9HRScsICdlc19DTCcsICd3YV9CRScsICdodV9IVScsICdsdF9MVCcsICdzbF9TSScsICdocl9IUicsICdlc19BUicsCiAgICAgJ2VzX0VTJywgJ29jX0ZSJywgJ2dsX0VTJywgJ2JnX0JHJywgJ2lzX0lTJywgJ21rX01LJywgJ2RlX0FUJywgJ3B0X0JSJywKICAgICAnZGFfREsnLCAnbm5fTk8nLCAnY3NfQ1onLCAnZGVfTFUnLCAnZXNfQk8nLCAnc3FfQUwnLCAnc2tfU0snLCAnZnJfQ0gnLAogICAgICdkZV9ERScsICdzcl9ZVScsICdicl9GUicsICdubF9CRScsICdzdl9GSScsICdwbF9QTCcsICdmcl9DQScsICdmb19GTycsCkBAIC0yNSw2ICsyNywzMSBAQAogICAgICdldV9FUycsICd2aV9WTicsICdhZl9aQScsICduYl9OTycsICdlbl9ESycsICd0Z19USicsICdlbl9VUycsCiAgICAgJ2VzX0VTLklTTzg4NTktMScsICdmcl9GUi5JU084ODU5LTE1JywgJ3J1X1JVLktPSTgtUicsICdrb19LUi5ldWNLUiddCiAKKyMgSXNzdWUgIzEzNDQxOiBTa2lwIHNvbWUgbG9jYWxlcyAoZS5nLiBjc19DWiBhbmQgaHVfSFUpIG9uIFNvbGFyaXMgdG8KKyMgd29ya2Fyb3VuZCBhIG1ic3Rvd2NzKCkgYnVnLiBGb3IgZXhhbXBsZSwgb24gU29sYXJpcywgdGhlIGh1X0hVIGxvY2FsZSB1c2VzCisjIHRoZSBsb2NhbGUgZW5jb2RpbmcgSVNPLTg4NTktMiwgdGhlIHRob3VzYXVkcyBzZXBhcmF0b3IgaXMgYidceEEwJyBhbmQgaXQgaXMKKyMgZGVjb2RlZCBhcyBVKzMwMDAwMDIwIChhbiBpbnZhbGlkIGNoYXJhY3RlcikgYnkgbWJzdG93Y3MoKS4KK2lmIHN5cy5wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICBvbGRfbG9jYWxlID0gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMKQorICAgIHRyeToKKyAgICAgICAgbG9jYWxlcyA9IFtdCisgICAgICAgIGZvciBsb2MgaW4gY2FuZGlkYXRlX2xvY2FsZXM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBsb2MpCisgICAgICAgICAgICBleGNlcHQgRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZWNvbnYoKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IFNraXAgbG9jYWxlICVzIChlbmNvZGluZyAlcyk6IFslc10gJXMiCisgICAgICAgICAgICAgICAgICAgICAgJSAobG9jLCBlbmNvZGluZywgdHlwZShlcnIpLCBlcnIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2NhbGVzLmFwcGVuZChsb2MpCisgICAgICAgIGNhbmRpZGF0ZV9sb2NhbGVzID0gbG9jYWxlcworICAgIGZpbmFsbHk6CisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgb2xkX2xvY2FsZSkKKwogIyBXb3JrYXJvdW5kIGZvciBNU1ZDNihkZWJ1ZykgY3Jhc2ggYnVnCiBpZiAiTVNDIHYuMTIwMCIgaW4gc3lzLnZlcnNpb246CiAgICAgZGVmIGFjY2VwdChsb2MpOgpAQCAtODYsOSArMTEzLDEwIEBACiAgICAgICAgICAgICAgICAgc2V0bG9jYWxlKExDX0NUWVBFLCBsb2MpCiAgICAgICAgICAgICBleGNlcHQgRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZvcm1hdHRpbmcgPSBsb2NhbGVjb252KCkKICAgICAgICAgICAgIGZvciBsYyBpbiAoImRlY2ltYWxfcG9pbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgInRob3VzYW5kc19zZXAiKToKLSAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNfdGVzdGVyKCdsb2NhbGVjb252JywgbG9jYWxlY29udigpW2xjXSwgbGMsIGxvYykKKyAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNfdGVzdGVyKCdsb2NhbGVjb252JywgZm9ybWF0dGluZ1tsY10sIGxjLCBsb2MpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhubF9sYW5naW5mbywgIm5sX2xhbmdpbmZvIGlzIG5vdCBhdmFpbGFibGUiKQogICAgIGRlZiB0ZXN0X2xjX251bWVyaWNfYmFzaWMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMTU5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpAQCAtMCwwICsxLDI3OSBAQAorIiIiCitUZXN0IHN1aXRlIGZvciBfb3N4X3N1cHBvcnQ6IHNoYXJlZCBPUyBYIHN1cHBvcnQgZnVuY3Rpb25zLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKKworaW1wb3J0IF9vc3hfc3VwcG9ydAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZGFyd2luIiksICJyZXF1aXJlcyBPUyBYIikKK2NsYXNzIFRlc3RfT1NYU3VwcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5wcm9nX25hbWUgPSAnYm9ndXNfcHJvZ3JhbV94eHh4JworICAgICAgICBzZWxmLnRlbXBfcGF0aF9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MuZ2V0Y3dkKCkpCisgICAgICAgIHNlbGYuZW52ID0gdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5lbnYuX19leGl0X18pCisgICAgICAgIGZvciBjdiBpbiAoJ0NGTEFHUycsICdMREZMQUdTJywgJ0NQUEZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkFTRUNGTEFHUycsICdCTERTSEFSRUQnLCAnTERTSEFSRUQnLCAnQ0MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDWFgnLCAnUFlfQ0ZMQUdTJywgJ1BZX0xERkxBR1MnLCAnUFlfQ1BQRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQWV9DT1JFX0NGTEFHUycpOgorICAgICAgICAgICAgaWYgY3YgaW4gc2VsZi5lbnY6CisgICAgICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoY3YpCisKKyAgICBkZWYgYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKHNlbGYsIGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgaW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCBtb2RpZmllZCBjb25maWcgdmFycworICAgICAgICAjIGFyZSBhbHNvIHNhdmVkIHdpdGggbW9kaWZpZWQga2V5cy4KKyAgICAgICAgZXhwZWN0ZWRfdmFycy51cGRhdGUoKCdfT1NYX1NVUFBPUlRfSU5JVElBTF8nKyBrLAorICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzW2tdKSBmb3IgayBpbiBjb25maWdfdmFycworICAgICAgICAgICAgICAgICAgICBpZiBjb25maWdfdmFyc1trXSAhPSBleHBlY3RlZF92YXJzW2tdKQorCisgICAgZGVmIHRlc3RfX2ZpbmRfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5lbnZbJ1BBVEgnXToKKyAgICAgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgJzonCisgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhzZWxmLnByb2dfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoX29zeF9zdXBwb3J0Ll9maW5kX2V4ZWN1dGFibGUoc2VsZi5wcm9nX25hbWUpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnByb2dfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG4vYmluL2VjaG8gT0tcbiIpCisgICAgICAgIG9zLmNobW9kKHNlbGYucHJvZ19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9nX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9maW5kX2V4ZWN1dGFibGUoc2VsZi5wcm9nX25hbWUpKQorCisgICAgZGVmIHRlc3RfX3JlYWRfb3V0cHV0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmVudlsnUEFUSCddOgorICAgICAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IHNlbGYuZW52WydQQVRIJ10gKyAnOicKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IHNlbGYuZW52WydQQVRIJ10gKyBvcy5wYXRoLmFic3BhdGgoc2VsZi50ZW1wX3BhdGhfZGlyKQorICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKHNlbGYucHJvZ19uYW1lKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnByb2dfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG4vYmluL2VjaG8gRXhwZWN0ZWRPdXRwdXRcbiIpCisgICAgICAgIG9zLmNobW9kKHNlbGYucHJvZ19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0V4cGVjdGVkT3V0cHV0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlYWRfb3V0cHV0KHNlbGYucHJvZ19uYW1lKSkKKworICAgIGRlZiB0ZXN0X19maW5kX2J1aWxkX3Rvb2woc2VsZik6CisgICAgICAgIG91dCA9IF9vc3hfc3VwcG9ydC5fZmluZF9idWlsZF90b29sKCdjYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvdXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYyBub3QgZm91bmQgLSBjaGVjayB4Y29kZS1zZWxlY3QnKQorCisgICAgZGVmIHRlc3RfX2dldF9zeXN0ZW1fdmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBsYXRmb3JtLm1hY192ZXIoKVswXS5zdGFydHN3aXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9nZXRfc3lzdGVtX3ZlcnNpb24oKSkpCisKKyAgICBkZWYgdGVzdF9fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZyAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGN2ID0gJ0NDJworICAgICAgICBuZXd2YWx1ZSA9ICdjbGFuZyAtcHRocmVhZHMnCisgICAgICAgIF9vc3hfc3VwcG9ydC5fc2F2ZV9tb2RpZmllZF92YWx1ZShjb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoY29uZmlnX3ZhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisKKyAgICBkZWYgdGVzdF9fc2F2ZV9tb2RpZmllZF92YWx1ZShzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZyAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorICAgICAgICBjdiA9ICdDQycKKyAgICAgICAgbmV3dmFsdWUgPSAnY2xhbmcgLXB0aHJlYWRzJworICAgICAgICBfb3N4X3N1cHBvcnQuX3NhdmVfbW9kaWZpZWRfdmFsdWUoY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLCBjb25maWdfdmFycykKKworICAgIGRlZiB0ZXN0X19zYXZlX21vZGlmaWVkX3ZhbHVlX3VuY2hhbmdlZChzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSBjb25maWdfdmFycy5jb3B5KCkKKyAgICAgICAgY3YgPSAnQ0MnCisgICAgICAgIG5ld3ZhbHVlID0gJ2djYy10ZXN0IC1wdGhyZWFkcycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9zYXZlX21vZGlmaWVkX3ZhbHVlKGNvbmZpZ192YXJzLCBjdiwgbmV3dmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisKKyAgICBkZWYgdGVzdF9fc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHBsYXRmb3JtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm0ubWFjX3ZlcigpWzBdLnNwbGl0KCcuJykgPj0gWycxMCcsICc0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCkpCisKKyAgICBkZWYgdGVzdF9fZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcihzZWxmKToKKyAgICAgICAgY29tcGlsZXJzID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgKCdnY2MtdGVzdCcsICdpNjg2LWFwcGxlLWRhcndpbjExLWxsdm0tZ2NjLTQuMicpLAorICAgICAgICAgICAgICAgICAgICAgICAgKCdjbGFuZycsICdjbGFuZyB2ZXJzaW9uIDMuMScpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgJ0NYWCc6ICdjYysrLXRlc3QnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtdGVzdCAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy10ZXN0IC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcgLXB0aHJlYWRzJywKKyAgICAgICAgJ0NYWCc6ICdjbGFuZysrJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnY2xhbmcgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdjbGFuZyAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc3VmZml4ID0gKCc6JyArIHNlbGYuZW52WydQQVRIJ10pIGlmIHNlbGYuZW52WydQQVRIJ10gZWxzZSAnJworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikgKyBzdWZmaXgKKyAgICAgICAgZm9yIGNfbmFtZSwgY19vdXRwdXQgaW4gY29tcGlsZXJzOgorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhjX25hbWUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgY19uYW1lKQorICAgICAgICAgICAgd2l0aCBvcGVuKGNfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuL2Jpbi9lY2hvICIgKyBjX291dHB1dCkKKyAgICAgICAgICAgIG9zLmNobW9kKGNfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3Moc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgICAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnICAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAgJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgICAgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9fcmVtb3ZlX3Vuc3VwcG9ydGVkX2FyY2hzKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zICAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICcgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc3VmZml4ID0gKCc6JyArIHNlbGYuZW52WydQQVRIJ10pIGlmIHNlbGYuZW52WydQQVRIJ10gZWxzZSAnJworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikgKyBzdWZmaXgKKyAgICAgICAgY19uYW1lID0gJ2NsYW5nJworICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKGNfbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIGNfbmFtZSkKKyAgICAgICAgIyBleGl0IHN0YXR1cyAyNTUgbWVhbnMgbm8gUFBDIHN1cHBvcnQgaW4gdGhpcyBjb21waWxlciBjaGFpbgorICAgICAgICB3aXRoIG9wZW4oY19uYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIjIS9iaW4vc2hcbmV4aXQgMjU1IikKKyAgICAgICAgb3MuY2htb2QoY19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19vdmVycmlkZV9hbGxfYXJjaHMoc2VsZik6CisgICAgICAgIHNlbGYuZW52WydBUkNIRkxBR1MnXSA9ICctYXJjaCB4ODZfNjQnCisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAgICAgLWFyY2ggeDg2XzY0JywKKyAgICAgICAgJ0xERkxBR1MnOiAnICAgIC1nIC1hcmNoIHg4Nl82NCcsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgICAtZyAtYXJjaCB4ODZfNjQnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgLWlzeXNyb290ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nIC1hcmNoIHg4Nl82NCcsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fb3ZlcnJpZGVfYWxsX2FyY2hzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gICcsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9nZXRfcGxhdGZvcm1fb3N4KHNlbGYpOgorICAgICAgICAjIE5vdGUsIGdldF9wbGF0Zm9ybV9vc3ggaXMgY3VycmVudGx5IHRlc3RlZCBtb3JlIGV4dGVuc2l2ZWx5CisgICAgICAgICMgaW5kaXJlY3RseSBieSB0ZXN0X3N5c2NvbmZpZyBhbmQgdGVzdF9kaXN0dXRpbHMKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMS5zZGsnLAorICAgICAgICAnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJzogJzEwLjYnLAorICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KGNvbmZpZ192YXJzLCAnICcsICcgJywgJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbWFjb3N4JywgJzEwLjYnLCAnZmF0JyksIHJlc3VsdCkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0X09TWFN1cHBvcnQpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKaW5kZXggZDg2Zjk3Yy4uNjUzYzk1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKQEAgLTEwLDE0ICsxMCw3IEBACiBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKIAogCi1jbGFzcyBUZXN0QUJDKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKLSAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCi0gICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCitjbGFzcyBUZXN0TGVnYWN5QVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Fic3RyYWN0cHJvcGVydHlfYmFzaWNzKHNlbGYpOgogICAgICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKQEAgLTI5LDEwICsyMiwxMiBAQAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKICAgICAgICAgY2xhc3MgRChDKToKICAgICAgICAgICAgIEBwcm9wZXJ0eQogICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKEQuZm9vLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICBkZWYgdGVzdF9hYnN0cmFjdGNsYXNzbWV0aG9kX2Jhc2ljcyhzZWxmKToKICAgICAgICAgQGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kCkBAIC00MCw3ICszNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgYmFyKGNscyk6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QKQEAgLTU4LDcgKzUzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgYmFyKCk6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kCkBAIC05OCw2ICs5MywxNjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRikgICMgYmVjYXVzZSBiYXIgaXMgYWJzdHJhY3Qgbm93CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChGKSkKIAorCitjbGFzcyBUZXN0QUJDKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdHByb3BlcnR5X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKKworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28sIDMpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdGNsYXNzbWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhjbHMpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgYmFyKGNscyk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQorCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gY2xzLl9fbmFtZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gc3VwZXIoKS5mb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKCksICdEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vKCksICdEJykKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0c3RhdGljbWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCisKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKCk6IHJldHVybiA0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vKCksIDQpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9pbnRlZ3JhdGlvbihzZWxmKToKKyAgICAgICAgZm9yIGFic3RyYWN0dGhpbmcgaW4gW2FiYy5hYnN0cmFjdG1ldGhvZCwgYWJjLmFic3RyYWN0cHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZF06CisgICAgICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICAgICAgQGFic3RyYWN0dGhpbmcKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzICAjIGFic3RyYWN0CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYWJzdHJhY3RtZXRob2RzX18sIHsiZm9vIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpICAjIGJlY2F1c2UgZm9vIGlzIGFic3RyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChDKSkKKyAgICAgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBjb25jcmV0ZSBvdmVycmlkZSBvZiBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELl9fYWJzdHJhY3RtZXRob2RzX18sIHsiZm9vIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpICAjIGJlY2F1c2UgZm9vIGlzIHN0aWxsIGFic3RyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChEKSkKKyAgICAgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFLl9fYWJzdHJhY3RtZXRob2RzX18sIHNldCgpKQorICAgICAgICAgICAgRSgpICAjIG5vdyBmb28gaXMgY29uY3JldGUsIHRvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2Fic3RyYWN0KEUpKQorICAgICAgICAgICAgY2xhc3MgRihFKToKKyAgICAgICAgICAgICAgICBAYWJzdHJhY3R0aGluZworICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgYWJzdHJhY3Qgb3ZlcnJpZGUgb2YgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRi5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImJhciJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGKSAgIyBiZWNhdXNlIGJhciBpcyBhYnN0cmFjdCBub3cKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2Fic3RyYWN0KEYpKQorCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcnNfd2l0aF9hYnN0cmFjdG1ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICAgICAgQGZvby5zZXR0ZXIKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKQorICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgQEQuZm9vLnNldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRSgpLmZvbywgMykKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEYoQyk6CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGJhci5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IE5vdEJvb2woKQorICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGJhcikKKworCisgICAgZGVmIHRlc3RfY3VzdG9tZGVzY3JpcHRvcnNfd2l0aF9hYnN0cmFjdG1ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZ2V0LCBmc2V0PU5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZnZXQgPSBmZ2V0CisgICAgICAgICAgICAgICAgc2VsZi5fZnNldCA9IGZzZXQKKyAgICAgICAgICAgIGRlZiBnZXR0ZXIoc2VsZiwgY2FsbGFibGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZXNjcmlwdG9yKGNhbGxhYmxlLCBzZWxmLl9mZ2V0KQorICAgICAgICAgICAgZGVmIHNldHRlcihzZWxmLCBjYWxsYWJsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlc2NyaXB0b3Ioc2VsZi5fZmdldCwgY2FsbGFibGUpCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBfX2lzYWJzdHJhY3RtZXRob2RfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKGdldGF0dHIoc2VsZi5fZmdldCwgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBvciBnZXRhdHRyKHNlbGYuX2ZzZXQsICdfX2lzYWJzdHJhY3RtZXRob2RfXycsIEZhbHNlKSkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQERlc2NyaXB0b3IKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgICAgICBAZm9vLnNldHRlcgorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpCisgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICBARC5mb28uc2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShFLmZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKwogICAgIGRlZiB0ZXN0X21ldGFjbGFzc19hYmMoc2VsZik6CiAgICAgICAgICMgTWV0YWNsYXNzZXMgY2FuIGJlIEFCQ3MsIHRvby4KICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgpAQCAtMTIxLDExICsyNzMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEIsIChBLCkpKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoYiwgQSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGIsIChBLCkpCi0gICAgICAgIEEucmVnaXN0ZXIoQikKKyAgICAgICAgQjEgPSBBLnJlZ2lzdGVyKEIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIEEpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCAoQSwpKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCAoQSwpKQorICAgICAgICBzZWxmLmFzc2VydElzKEIxLCBCKQogICAgICAgICBjbGFzcyBDKEIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBjID0gQygpCkBAIC0xMzQsNiArMjg3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBBKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgKEEsKSkKIAorICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2FzX2NsYXNzX2RlY28oc2VsZik6CisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgQEEucmVnaXN0ZXIKKyAgICAgICAgY2xhc3MgQihvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBiID0gQigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIEEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCAoQSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCAoQSwpKQorICAgICAgICBAQS5yZWdpc3RlcgorICAgICAgICBjbGFzcyBDKEIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjID0gQygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIEEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCAoQSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCAoQSwpKQorICAgICAgICBzZWxmLmFzc2VydElzKEMsIEEucmVnaXN0ZXIoQykpCisKICAgICBkZWYgdGVzdF9pc2luc3RhbmNlX2ludmFsaWRhdGlvbihzZWxmKToKICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5CmluZGV4IDJhMzk2Y2QuLjI1M2U2ZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykucmVhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBpbnQoNykuaW1hZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykuY29uanVnYXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTcsIGludCgtNykuY29uanVnYXRlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLm51bWVyYXRvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBpbnQoNykuZGVub21pbmF0b3IpCiAKQEAgLTI0LDYgKzI1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LjMsIGZsb2F0KDcuMykucmVhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBmbG9hdCg3LjMpLmltYWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNy4zLCBmbG9hdCg3LjMpLmNvbmp1Z2F0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC03LjMsIGZsb2F0KC03LjMpLmNvbmp1Z2F0ZSgpKQogCiAgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGNvbXBsZXgsIFJlYWwpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5IGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CmluZGV4IDBiMTlhZjYuLjljMGU3YjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOLCBjYXB0dXJlZF9zdGRvdXQsIHVubGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgdW5saW5rCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogaW1wb3J0IGlvCkBAIC0yMTQsMTEgKzIxNCw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4CiAgICAgICAgIGIgKz0gYidNQVJLJyArIHN0cnVjdC5wYWNrKCc+TGhCJywgMywgMSwgMSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgZiA9IGFpZmMub3Blbihpby5CeXRlc0lPKGIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcy5nZXR2YWx1ZSgpLAotICAgICAgICAgICAgJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seSAwIG1hcmtlcnMgaW5zdGVhZCBvZiAxXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0bWFya2VycygpLCBOb25lKQogCiAgICAgZGVmIHRlc3RfcmVhZF9jb21tX2tsdWRnZV9jb21wbmFtZV9ldmVuKHNlbGYpOgpAQCAtMjI2LDkgKzIyMyw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInTk9ORScgKyBzdHJ1Y3QucGFjaygnQicsIDQpICsgYidldmVuJyArIGInXHgwMCcKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CiAgICAgICAgICAgICBmID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGNvbXBuYW1lKCksIGInZXZlbicpCiAKICAgICBkZWYgdGVzdF9yZWFkX2NvbW1fa2x1ZGdlX2NvbXBuYW1lX29kZChzZWxmKToKQEAgLTIzNiw5ICsyMzIsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ05PTkUnICsgc3RydWN0LnBhY2soJ0InLCAzKSArIGInb2RkJwogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKICAgICAgICAgICAgIGYgPSBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0Y29tcG5hbWUoKSwgYidvZGQnKQogCiAgICAgZGVmIHRlc3Rfd3JpdGVfcGFyYW1zX3JhaXNlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IDIyYzI2Y2MuLmMwNmM5NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtMTMyMywyMCArMTMyMywyMSBAQAogY2xhc3MgVGVzdFBhcnNlckRlZmF1bHQ0MihQYXJzZXJUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBhY3Rpb25zIHdpdGggYSBwYXJzZXItbGV2ZWwgZGVmYXVsdCBvZiA0MiIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhhcmd1bWVudF9kZWZhdWx0PTQyLCB2ZXJzaW9uPScxLjAnKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYXJndW1lbnRfZGVmYXVsdD00MikKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpLAogICAgICAgICBTaWcoJ2ZvbycsIG5hcmdzPSc/JyksCiAgICAgICAgIFNpZygnYmFyJywgbmFyZ3M9JyonKSwKICAgICAgICAgU2lnKCctLWJheicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpLAogICAgIF0KICAgICBmYWlsdXJlcyA9IFsnLXgnXQogICAgIHN1Y2Nlc3NlcyA9IFsKLSAgICAgICAgKCcnLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PTQyKSksCi0gICAgICAgICgnYScsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PTQyKSksCi0gICAgICAgICgnYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9NDIpKSwKLSAgICAgICAgKCctLWJheicsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9VHJ1ZSkpLAotICAgICAgICAoJ2EgLS1iYXonLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej1UcnVlKSksCi0gICAgICAgICgnLS1iYXogYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9VHJ1ZSkpLAorICAgICAgICAoJycsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhJywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej00MiwgdmVyc2lvbj00MikpLAorICAgICAgICAoJy0tYmF6JywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYSAtLWJheicsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PVRydWUsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCctLWJheiBhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCiAgICAgXQogCiAKQEAgLTI5MjcsMTAgKzI5MjgsOSBAQAogICAgICAgICAgICAgICAgIHBhcnNlcl90ZXh0ID0gc2ZpbGUuZ2V0dmFsdWUoKQogICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QodGVzdGVyLCBwYXJzZXJfdGV4dCkKIAotICAgICAgICAjIGFkZCB0ZXN0cyBmb3Ige2Zvcm1hdCxwcmludH1fe3VzYWdlLGhlbHAsdmVyc2lvbn0KKyAgICAgICAgIyBhZGQgdGVzdHMgZm9yIHtmb3JtYXQscHJpbnR9X3t1c2FnZSxoZWxwfQogICAgICAgICBmb3IgZnVuY19zdWZmaXgsIHN0ZF9uYW1lIGluIFsoJ3VzYWdlJywgJ3N0ZG91dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnc3Rkb3V0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndmVyc2lvbicsICdzdGRlcnInKV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaGVscCcsICdzdGRvdXQnKV06CiAgICAgICAgICAgICBBZGRUZXN0cyhjbHMsIGZ1bmNfc3VmZml4LCBzdGRfbmFtZSkKIAogYmFzZXMgPSBUZXN0Q2FzZSwKQEAgLTI5NDEsOCArMjk0MSw5IEBACiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgYXJndW1lbnQgaGVscCBhbGlnbnMgd2hlbiBvcHRpb25zIGFyZSBsb25nZXIiIiIKIAogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIGRlc2NyaXB0aW9uPSdERVNDUklQVElPTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycsIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKSwKICAgICAgICAgU2lnKCcteCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J1ggSEVMUCcpLAogICAgICAgICBTaWcoJy0teScsIGhlbHA9J1kgSEVMUCcpLAogICAgICAgICBTaWcoJ2ZvbycsIGhlbHA9J0ZPTyBIRUxQJyksCkBAIC0yOTc3LDggKzI5NzgsOSBAQAogICAgICIiIk1ha2Ugc3VyZSB0aGF0IGFyZ3VtZW50IGhlbHAgYWxpZ25zIHdoZW4gb3B0aW9ucyBhcmUgbG9uZ2VyIiIiCiAKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nREVTQ1JJUFRJT04nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnLCB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyksCiAgICAgICAgIFNpZygnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdYIEhFTFAnKSwKICAgICAgICAgU2lnKCctLXknLCBoZWxwPSdZIEhFTFAnKSwKICAgICAgICAgU2lnKCdmb28nLCBoZWxwPSdGT08gSEVMUCcpLApAQCAtMzE0NSw5ICszMTQ3LDkgQEAKIGNsYXNzIFRlc3RIZWxwV3JhcHBpbmdMb25nTmFtZXMoSGVscFRlc3RDYXNlKToKICAgICAiIiJNYWtlIHN1cmUgdGhhdCB0ZXh0IGFmdGVyIGxvbmcgbmFtZXMgc3RhcnRzIG9uIHRoZSBuZXh0IGxpbmUiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcodXNhZ2U9J1VTQUdFJywgZGVzY3JpcHRpb249ICdEIEQnICogMzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSdWIFYnKjMwKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcodXNhZ2U9J1VTQUdFJywgZGVzY3JpcHRpb249ICdEIEQnICogMzApCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSdWIFYnICogMzApLAogICAgICAgICBTaWcoJy14JywgbWV0YXZhcj0nWCcgKiAyNSwgaGVscD0nWEggWEgnICogMjApLAogICAgICAgICBTaWcoJ3knLCBtZXRhdmFyPSd5JyAqIDI1LCBoZWxwPSdZSCBZSCcgKiAyMCksCiAgICAgXQpAQCAtMzc1MCw4ICszNzUyLDkgQEAKIGNsYXNzIFRlc3RIZWxwVmVyc2lvbk9wdGlvbmFsKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IHRoZSAtLXZlcnNpb24gYXJndW1lbnQgY2FuIGJlIHN1cHByZXNzZWQgaGVscCBtZXNzYWdlcyIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgdmVyc2lvbj0nMS4wJykKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJyksCiAgICAgICAgIFNpZygnLS1mb28nLCBoZWxwPSdmb28gaGVscCcpLAogICAgICAgICBTaWcoJ3NwYW0nLCBoZWxwPSdzcGFtIGhlbHAnKSwKICAgICBdCkBAIC0zOTg0LDggKzM5ODcsOCBAQAogY2xhc3MgVGVzdEhlbHBTdWJwYXJzZXJzT3JkZXJpbmcoSGVscFRlc3RDYXNlKToKICAgICAiIiJUZXN0IG9yZGVyaW5nIG9mIHN1YmNvbW1hbmRzIGluIGhlbHAgbWF0Y2hlcyB0aGUgY29kZSIiIgogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJykKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyldCiAKICAgICBzdWJwYXJzZXJzX3NpZ25hdHVyZXMgPSBbU2lnKG5hbWU9bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhJywgJ2InLCAnYycsICdkJywgJ2UnKV0KQEAgLTQwMTMsOCArNDAxNiw4IEBACiBjbGFzcyBUZXN0SGVscFN1YnBhcnNlcnNXaXRoSGVscE9yZGVyaW5nKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBvcmRlcmluZyBvZiBzdWJjb21tYW5kcyBpbiBoZWxwIG1hdGNoZXMgdGhlIGNvZGUiIiIKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpXQogCiAgICAgc3ViY29tbWFuZF9kYXRhID0gKCgnYScsICdhIHN1YmNvbW1hbmQgaGVscCcpLAogICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAnYiBzdWJjb21tYW5kIGhlbHAnKSwKQEAgLTQwNTIsNiArNDA1NSwzNyBAQAogICAgICAgICAnJycKIAogCisKK2NsYXNzIFRlc3RIZWxwTWV0YXZhclR5cGVGb3JtYXR0ZXIoSGVscFRlc3RDYXNlKToKKyAgICAiIiIiIiIKKworICAgIGRlZiBjdXN0b21fdHlwZShzdHJpbmcpOgorICAgICAgICByZXR1cm4gc3RyaW5nCisKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nZGVzY3JpcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnYScsIHR5cGU9aW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZygnLWInLCB0eXBlPWN1c3RvbV90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZygnLWMnLCB0eXBlPWZsb2F0LCBtZXRhdmFyPSdTT01FIEZMT0FUJyldCisgICAgYXJndW1lbnRfZ3JvdXBfc2lnbmF0dXJlcyA9IFtdCisgICAgdXNhZ2UgPSAnJydcCisgICAgICAgIHVzYWdlOiBQUk9HIFstaF0gWy1iIGN1c3RvbV90eXBlXSBbLWMgU09NRSBGTE9BVF0gaW50CisgICAgICAgICcnJworICAgIGhlbHAgPSB1c2FnZSArICcnJ1wKKworICAgICAgICBkZXNjcmlwdGlvbgorCisgICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgICAgIGludAorCisgICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICAtaCwgLS1oZWxwICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgICAgIC1iIGN1c3RvbV90eXBlCisgICAgICAgICAgLWMgU09NRSBGTE9BVAorICAgICAgICAnJycKKyAgICB2ZXJzaW9uID0gJycKKworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgT3B0aW9uYWwvUG9zaXRpb25hbCBjb25zdHJ1Y3RvciB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC00MjgwLDMyICs0MzE0LDI4IEBACiAgICAgICAgICAgICBwYXJzZXIuZm9ybWF0X2hlbHAoKSwKICAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3Rkb3V0KQogCi0gICAgZGVmIGFzc2VydFByaW50VmVyc2lvbkV4aXQoc2VsZiwgcGFyc2VyLCBhcmdzX3N0cik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBwYXJzZXIuZm9ybWF0X3ZlcnNpb24oKSwKLSAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3RkZXJyKQotCiAgICAgZGVmIGFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3Ioc2VsZiwgcGFyc2VyLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IsIHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIodmVyc2lvbj0nMS4wJykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLWgnKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLS1oZWxwJykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy12JykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy0tdmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2Zvcm1hdChzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKICAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy12J10pLnN0ZGVycgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBtc2cpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vX2hlbHAoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlLCB2ZXJzaW9uPScxLjAnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy1oJykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy0taGVscCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctdicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctLXZlcnNpb24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9hY3Rpb24oc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1hYWCcpCkBAIC00MzI1LDEyICs0MzU1LDEzIEBACiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy14JywgYWN0aW9uPSdoZWxwJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXknLCBhY3Rpb249J3ZlcnNpb24nKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLXgnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLXknKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLXYnKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLS12ZXJzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogICAgIGRlZiB0ZXN0X2hlbHBfdmVyc2lvbl9leHRyYV9hcmd1bWVudHMoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHZlcnNpb249JzEuMCcpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCd5JykKIApAQCAtNDM0Miw4ICs0MzczLDcgQEAKICAgICAgICAgICAgICAgICBmb3JtYXQgPSAnJXMgJSVzICVzJyAlIChwcmVmaXgsIHN1ZmZpeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsIGZvcm1hdCAlICctaCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLS1oZWxwJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsIGZvcm1hdCAlICctdicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLS12ZXJzaW9uJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKIAogIyA9PT09PT09PT09PT09PT09PT09PT09CkBAIC00Mzk4LDcgKzQ0MjgsNyBAQAogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgICAgICAgc3RyaW5nID0gKAogICAgICAgICAgICAgIkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lLCAiCi0gICAgICAgICAgICAidmVyc2lvbj1Ob25lLCBmb3JtYXR0ZXJfY2xhc3M9JXIsIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywgIgorICAgICAgICAgICAgImZvcm1hdHRlcl9jbGFzcz0lciwgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLCAiCiAgICAgICAgICAgICAiYWRkX2hlbHA9VHJ1ZSkiICUgYXJncGFyc2UuSGVscEZvcm1hdHRlcikKICAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChwYXJzZXIsIHN0cmluZykKIApAQCAtNDQ0Miw3ICs0NDcyLDcgQEAKICAgICBkZWYgX3Rlc3RfbW9kdWxlX2VuY29kaW5nKHNlbGYsIHBhdGgpOgogICAgICAgICBwYXRoLCBfID0gb3MucGF0aC5zcGxpdGV4dChwYXRoKQogICAgICAgICBwYXRoICs9ICIucHkiCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmOCcpIGFzIGY6CisgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmLTgnKSBhcyBmOgogICAgICAgICAgICAgZi5yZWFkKCkKIAogICAgIGRlZiB0ZXN0X2FyZ3BhcnNlX21vZHVsZV9lbmNvZGluZyhzZWxmKToKQEAgLTQ0ODQsNiArNDUxNCw2NyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCkKIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09CisjIE1lc3NhZ2VDb250ZW50RXJyb3IgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBUZXN0TWVzc2FnZUNvbnRlbnRFcnJvcihUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2FyZ3VtZW50X25hbWVfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJywgdHlwZT1zdHIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yZXFfb3B0JywgdHlwZT1pbnQsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ25lZWRfb25lJywgdHlwZT1zdHIsIG5hcmdzPScrJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoW10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAnbmVlZF9vbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydteVhhcmd1bWVudCddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnbXlYYXJndW1lbnQnLCAnLXJlcV9vcHQ9MSddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX29wdGlvbmFsX25vdF9pbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9JycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JlcV9wb3MnLCB0eXBlPXN0cikKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXFfb3B0JywgdHlwZT1pbnQsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3B0X29wdCcsIHR5cGU9Ym9vbCwgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdF9vcHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWyctLXJlcV9vcHQ9MSddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdF9vcHQnKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfcG9zaXRpb25hbF9ub3RfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnb3B0aW9uYWxfcG9zaXRpb25hbCcsIG5hcmdzPSc/JywgZGVmYXVsdD0nZWdncycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRpb25hbF9wb3NpdGlvbmFsJykKKworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBDaGVjayB0aGF0IHRoZSB0eXBlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC00NzgyLDEzICs0ODczLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXRlbXMpLCBzb3J0ZWQoYXJncGFyc2UuX19hbGxfXykpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICAjIHNpbGVuY2Ugd2FybmluZ3MgYWJvdXQgdmVyc2lvbiBhcmd1bWVudCAtIHRoZXNlIGFyZSBleHBlY3RlZAotICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygKLSAgICAgICAgICAgICgnVGhlICJ2ZXJzaW9uIiBhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBkZXByZWNhdGVkLicsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSwKLSAgICAgICAgICAgICgnVGhlIChmb3JtYXR8cHJpbnQpX3ZlcnNpb24gbWV0aG9kIGlzIGRlcHJlY2F0ZWQnLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKICAgICAjIFJlbW92ZSBnbG9iYWwgcmVmZXJlbmNlcyB0byBhdm9pZCBsb29raW5nIGxpa2Ugd2UgaGF2ZSByZWZsZWFrcy4KICAgICBSRmlsZS5zZWVuID0ge30KICAgICBXRmlsZS5zZWVuID0gc2V0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CmluZGV4IGUyNmU5YWQuLmE1MzJhOWYgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQpAQCAtMTYsNiArMTYsMTMgQEAKIGltcG9ydCBhcnJheQogZnJvbSBhcnJheSBpbXBvcnQgX2FycmF5X3JlY29uc3RydWN0b3IgYXMgYXJyYXlfcmVjb25zdHJ1Y3RvcgogCit0cnk6CisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIGF2YWlsYWJpbGl0eSBvZiBsb25nIGxvbmcgaW5kZXBlbmRlbnRseQorICAgICMgb2YgdGhlIGFycmF5IG1vZHVsZSB1bmRlciB0ZXN0CisgICAgc3RydWN0LmNhbGNzaXplKCdAcScpCisgICAgaGF2ZV9sb25nX2xvbmcgPSBUcnVlCitleGNlcHQgc3RydWN0LmVycm9yOgorICAgIGhhdmVfbG9uZ19sb25nID0gRmFsc2UKIAogY2xhc3MgQXJyYXlTdWJjbGFzcyhhcnJheS5hcnJheSk6CiAgICAgcGFzcwpAQCAtMjQsOCArMzEsOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlY29kZSwgbmV3YXJnPU5vbmUpOgogICAgICAgICBhcnJheS5hcnJheS5fX2luaXRfXyhzZWxmKQogCi10ZXN0cyA9IFtdICMgbGlzdCB0byBhY2N1bXVsYXRlIGFsbCB0ZXN0cwogdHlwZWNvZGVzID0gInViQmhIaUlsTGZkIgoraWYgaGF2ZV9sb25nX2xvbmc6CisgICAgdHlwZWNvZGVzICs9ICdxUScKIAogY2xhc3MgQmFkQ29uc3RydWN0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMzUsNyArNDMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFycmF5LmFycmF5LCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhcnJheS5hcnJheSwgJ3gnKQogCi10ZXN0cy5hcHBlbmQoQmFkQ29uc3RydWN0b3JUZXN0KQogCiAjIE1hY2hpbmUgZm9ybWF0IGNvZGVzLgogIwpAQCAtMTY1LDEwICsxNzIsNyBAQAogICAgICAgICAgICAgICAgIG1zZz0iezAhcn0gIT0gezEhcn07IHRlc3RjYXNlPXsyIXJ9Ii5mb3JtYXQoYSwgYiwgdGVzdGNhc2UpKQogCiAKLXRlc3RzLmFwcGVuZChBcnJheVJlY29uc3RydWN0b3JUZXN0KQotCi0KLWNsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0OgogICAgICMgUmVxdWlyZWQgY2xhc3MgYXR0cmlidXRlcyAocHJvdmlkZWQgYnkgc3ViY2xhc3NlcwogICAgICMgdHlwZWNvZGU6IHRoZSB0eXBlY29kZSB0byB0ZXN0CiAgICAgIyBleGFtcGxlOiBhbiBpbml0aWFsaXplciB1c2FibGUgaW4gdGhlIGNvbnN0cnVjdG9yIGZvciB0aGlzIHR5cGUKQEAgLTIwOSwxMCArMjEzLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlbMV0sIGxlbihhKSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzd2FwKHNlbGYpOgotICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBpZiBzZWxmLnR5cGVjb2RlID09ICd1JzoKKyAgICAgICAgICAgIGV4YW1wbGUgPSAnXFUwMDEwMDEwMCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4YW1wbGUgPSBzZWxmLmV4YW1wbGUKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGV4YW1wbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5ieXRlc3dhcCwgNDIpCiAgICAgICAgIGlmIGEuaXRlbXNpemUgaW4gKDEsIDIsIDQsIDgpOgotICAgICAgICAgICAgYiA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBleGFtcGxlKQogICAgICAgICAgICAgYi5ieXRlc3dhcCgpCiAgICAgICAgICAgICBpZiBhLml0ZW1zaXplPT0xOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKQEAgLTI3Miw2ICsyODAsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS54LCBiLngpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIHR5cGUoYikpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIG9yZ2l0ID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKG9yZ2l0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUob3JnaXQpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKSkKKworICAgICAgICBpZiBsZW4oZGF0YSk6CisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpWzE6XSkKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKICAgICAgICAgYS5pbnNlcnQoMCwgc2VsZi5leGFtcGxlWzBdKQpAQCAtOTkxLDE0ICsxMDEzLDE0IEBACiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mX3dpdGhfYnVmZmVyKHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCc0UGknKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCdQbjJQaScpCiAgICAgICAgIGJ1ZmZlcl9zaXplID0gYS5idWZmZXJfaW5mbygpWzFdICogYS5pdGVtc2l6ZQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBhLCBiYXNlc2l6ZSArIGJ1ZmZlcl9zaXplKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mX3dpdGhvdXRfYnVmZmVyKHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSkKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnNFBpJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnUG4yUGknKQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBhLCBiYXNlc2l6ZSkKIAogCkBAIC0xMDA5LDcgKzEwMzEsNyBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuX19zZXRpdGVtX18sIDAsIHNlbGYuZXhhbXBsZVs6Ml0pCiAKLWNsYXNzIFVuaWNvZGVUZXN0KFN0cmluZ1Rlc3QpOgorY2xhc3MgVW5pY29kZVRlc3QoU3RyaW5nVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGVjb2RlID0gJ3UnCiAgICAgZXhhbXBsZSA9ICdceDAxXHUyNjNhXHgwMFx1ZmVmZicKICAgICBzbWFsbGVyZXhhbXBsZSA9ICdceDAxXHUyNjNhXHgwMFx1ZmVmZScKQEAgLTEwMTgsNiArMTA0MCwxNiBAQAogICAgIG1pbml0ZW1zaXplID0gMgogCiAgICAgZGVmIHRlc3RfdW5pY29kZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGN0eXBlcworICAgICAgICAgICAgc2l6ZW9mX3djaGFyID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2l6ZW9mX3djaGFyID0gMgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzaXplb2Zfd2NoYXIgPSA0CisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhcnJheS5hcnJheSwgJ2InLCAnZm9vJykKIAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ3UnLCAnXHhhMFx4YzJcdTEyMzQnKQpAQCAtMTAyNyw2ICsxMDU5LDcgQEAKICAgICAgICAgYS5mcm9tdW5pY29kZSgnXHgxMWFiY1x4ZmZcdTEyMzQnKQogICAgICAgICBzID0gYS50b3VuaWNvZGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICdceGEwXHhjMlx1MTIzNCBceDExYWJjXHhmZlx1MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5pdGVtc2l6ZSwgc2l6ZW9mX3djaGFyKQogCiAgICAgICAgIHMgPSAnXHgwMD0iXCdhXFxiXHg4MFx4ZmZcdTAwMDBcdTAwMDFcdTEyMzQnCiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgndScsIHMpCkBAIC0xMDM2LDggKzEwNjksNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5mcm9tdW5pY29kZSkKIAotdGVzdHMuYXBwZW5kKFVuaWNvZGVUZXN0KQotCiBjbGFzcyBOdW1iZXJUZXN0KEJhc2VUZXN0KToKIAogICAgIGRlZiB0ZXN0X2V4dHNsaWNlKHNlbGYpOgpAQCAtMTE3OCw0NSArMTIwOSw0NyBAQAogICAgICAgICApCiAKIAotY2xhc3MgQnl0ZVRlc3QoU2lnbmVkTnVtYmVyVGVzdCk6CitjbGFzcyBCeXRlVGVzdChTaWduZWROdW1iZXJUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZWNvZGUgPSAnYicKICAgICBtaW5pdGVtc2l6ZSA9IDEKLXRlc3RzLmFwcGVuZChCeXRlVGVzdCkKIAotY2xhc3MgVW5zaWduZWRCeXRlVGVzdChVbnNpZ25lZE51bWJlclRlc3QpOgorY2xhc3MgVW5zaWduZWRCeXRlVGVzdChVbnNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdCJwogICAgIG1pbml0ZW1zaXplID0gMQotdGVzdHMuYXBwZW5kKFVuc2lnbmVkQnl0ZVRlc3QpCiAKLWNsYXNzIFNob3J0VGVzdChTaWduZWROdW1iZXJUZXN0KToKK2NsYXNzIFNob3J0VGVzdChTaWduZWROdW1iZXJUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZWNvZGUgPSAnaCcKICAgICBtaW5pdGVtc2l6ZSA9IDIKLXRlc3RzLmFwcGVuZChTaG9ydFRlc3QpCiAKLWNsYXNzIFVuc2lnbmVkU2hvcnRUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCk6CitjbGFzcyBVbnNpZ25lZFNob3J0VGVzdChVbnNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdIJwogICAgIG1pbml0ZW1zaXplID0gMgotdGVzdHMuYXBwZW5kKFVuc2lnbmVkU2hvcnRUZXN0KQogCi1jbGFzcyBJbnRUZXN0KFNpZ25lZE51bWJlclRlc3QpOgorY2xhc3MgSW50VGVzdChTaWduZWROdW1iZXJUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZWNvZGUgPSAnaScKICAgICBtaW5pdGVtc2l6ZSA9IDIKLXRlc3RzLmFwcGVuZChJbnRUZXN0KQogCi1jbGFzcyBVbnNpZ25lZEludFRlc3QoVW5zaWduZWROdW1iZXJUZXN0KToKK2NsYXNzIFVuc2lnbmVkSW50VGVzdChVbnNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdJJwogICAgIG1pbml0ZW1zaXplID0gMgotdGVzdHMuYXBwZW5kKFVuc2lnbmVkSW50VGVzdCkKIAotY2xhc3MgTG9uZ1Rlc3QoU2lnbmVkTnVtYmVyVGVzdCk6CitjbGFzcyBMb25nVGVzdChTaWduZWROdW1iZXJUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZWNvZGUgPSAnbCcKICAgICBtaW5pdGVtc2l6ZSA9IDQKLXRlc3RzLmFwcGVuZChMb25nVGVzdCkKIAotY2xhc3MgVW5zaWduZWRMb25nVGVzdChVbnNpZ25lZE51bWJlclRlc3QpOgorY2xhc3MgVW5zaWduZWRMb25nVGVzdChVbnNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdMJwogICAgIG1pbml0ZW1zaXplID0gNAotdGVzdHMuYXBwZW5kKFVuc2lnbmVkTG9uZ1Rlc3QpCisKK0B1bml0dGVzdC5za2lwSWYobm90IGhhdmVfbG9uZ19sb25nLCAnbmVlZCBsb25nIGxvbmcgc3VwcG9ydCcpCitjbGFzcyBMb25nTG9uZ1Rlc3QoU2lnbmVkTnVtYmVyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGVjb2RlID0gJ3EnCisgICAgbWluaXRlbXNpemUgPSA4CisKK0B1bml0dGVzdC5za2lwSWYobm90IGhhdmVfbG9uZ19sb25nLCAnbmVlZCBsb25nIGxvbmcgc3VwcG9ydCcpCitjbGFzcyBVbnNpZ25lZExvbmdMb25nVGVzdChVbnNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB0eXBlY29kZSA9ICdRJworICAgIG1pbml0ZW1zaXplID0gOAogCiBjbGFzcyBGUFRlc3QoTnVtYmVyVGVzdCk6CiAgICAgZXhhbXBsZSA9IFstNDIuMCwgMCwgNDIsIDFlNSwgLTFlMTBdCkBAIC0xMjQzLDEyICsxMjc2LDExIEBACiAgICAgICAgICAgICBiLmJ5dGVzd2FwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKIAotY2xhc3MgRmxvYXRUZXN0KEZQVGVzdCk6CitjbGFzcyBGbG9hdFRlc3QoRlBUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZWNvZGUgPSAnZicKICAgICBtaW5pdGVtc2l6ZSA9IDQKLXRlc3RzLmFwcGVuZChGbG9hdFRlc3QpCiAKLWNsYXNzIERvdWJsZVRlc3QoRlBUZXN0KToKK2NsYXNzIERvdWJsZVRlc3QoRlBUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZWNvZGUgPSAnZCcKICAgICBtaW5pdGVtc2l6ZSA9IDgKIApAQCAtMTI2OSwyMiArMTMwMSw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkFycmF5IG9mIHNpemUgPiBtYXhzaXplIGNyZWF0ZWQgLSBNZW1vcnlFcnJvciBleHBlY3RlZCIpCiAKLXRlc3RzLmFwcGVuZChEb3VibGVUZXN0KQotCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgaW1wb3J0IHN5cwotCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKaW5kZXggMjg4NzA5Mi4uZGMyNDEyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKQEAgLTEsNiArMSwxMCBAQAotaW1wb3J0IHN5cywgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhc3QKK2ltcG9ydCB3ZWFrcmVmCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBkZWYgdG9fdHVwbGUodCk6CiAgICAgaWYgdCBpcyBOb25lIG9yIGlzaW5zdGFuY2UodCwgKHN0ciwgaW50LCBjb21wbGV4KSk6CkBAIC01Miw2ICs1Niw5IEBACiAgICAgIndoaWxlIHY6cGFzcyIsCiAgICAgIyBJZgogICAgICJpZiB2OnBhc3MiLAorICAgICMgV2l0aAorICAgICJ3aXRoIHggYXMgeTogcGFzcyIsCisgICAgIndpdGggeCBhcyB5LCB6IGFzIHE6IHBhc3MiLAogICAgICMgUmFpc2UKICAgICAicmFpc2UgRXhjZXB0aW9uKCdzdHJpbmcnKSIsCiAgICAgIyBUcnlFeGNlcHQKQEAgLTE5MSw2ICsxOTgsOSBAQAogICAgIGRlZiB0ZXN0X0FTVF9vYmplY3RzKHNlbGYpOgogICAgICAgICB4ID0gYXN0LkFTVCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fZmllbGRzLCAoKSkKKyAgICAgICAgeC5mb29iYXIgPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vYmFyLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fWyJmb29iYXIiXSwgNDIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICB4LnZhcmFyZwpAQCAtMTk5LDYgKzIwOSwxNyBAQAogICAgICAgICAgICAgIyAiX2FzdC5BU1QgY29uc3RydWN0b3IgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKICAgICAgICAgICAgIGFzdC5BU1QoMikKIAorICAgIGRlZiB0ZXN0X0FTVF9nYXJiYWdlX2NvbGxlY3Rpb24oc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGEgPSBhc3QuQVNUKCkKKyAgICAgICAgYS54ID0gWCgpCisgICAgICAgIGEueC5hID0gYQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihhLngpCisgICAgICAgIGRlbCBhCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAgICAgZGVmIHRlc3Rfc25pcHBldHMoc2VsZik6CiAgICAgICAgIGZvciBpbnB1dCwgb3V0cHV0LCBraW5kIGluICgoZXhlY190ZXN0cywgZXhlY19yZXN1bHRzLCAiZXhlYyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpbmdsZV90ZXN0cywgc2luZ2xlX3Jlc3VsdHMsICJzaW5nbGUiKSwKQEAgLTM3OCw2ICszOTksMTQgQEAKICAgICAgICAgICAgIGNvbXBpbGUobSwgIjx0ZXN0PiIsICJleGVjIikKICAgICAgICAgc2VsZi5hc3NlcnRJbigic3RyaW5nIG11c3QgYmUgb2YgdHlwZSBzdHIiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAorICAgIGRlZiB0ZXN0X2VtcHR5X3lpZWxkX2Zyb20oc2VsZik6CisgICAgICAgICMgSXNzdWUgMTY1NDY6IHlpZWxkIGZyb20gdmFsdWUgaXMgbm90IG9wdGlvbmFsLgorICAgICAgICBlbXB0eV95aWVsZF9mcm9tID0gYXN0LnBhcnNlKCJkZWYgZigpOlxuIHlpZWxkIGZyb20gZygpIikKKyAgICAgICAgZW1wdHlfeWllbGRfZnJvbS5ib2R5WzBdLmJvZHlbMF0udmFsdWUudmFsdWUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjb21waWxlKGVtcHR5X3lpZWxkX2Zyb20sICI8dGVzdD4iLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIiwgc3RyKGNtLmV4Y2VwdGlvbikpCisKIAogY2xhc3MgQVNUSGVscGVyc19UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMzkwLDcgKzQxOSw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIDEvMAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGFzdC5wYXJzZSwgciInXFUnIikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgYXN0LmxpdGVyYWxfZXZhbChyIidcVSciKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZS5leGNlcHRpb24uX19jb250ZXh0X18pCiAKICAgICBkZWYgdGVzdF9kdW1wKHNlbGYpOgogICAgICAgICBub2RlID0gYXN0LnBhcnNlKCdzcGFtKGVnZ3MsICJhbmQgY2hlZXNlIiknKQpAQCAtNTA0LDggKzUzNSw0MTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigiaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiBOb25lIiwgc3RyKGNtLmV4Y2VwdGlvbikpCiAKIAorY2xhc3MgQVNUVmFsaWRhdG9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIG1vZChzZWxmLCBtb2QsIG1zZz1Ob25lLCBtb2RlPSJleGVjIiwgKiwgZXhjPVZhbHVlRXJyb3IpOgorICAgICAgICBtb2QubGluZW5vID0gbW9kLmNvbF9vZmZzZXQgPSAwCisgICAgICAgIGFzdC5maXhfbWlzc2luZ19sb2NhdGlvbnMobW9kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YykgYXMgY206CisgICAgICAgICAgICBjb21waWxlKG1vZCwgIjx0ZXN0PiIsIG1vZGUpCisgICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgIGRlZiBleHByKHNlbGYsIG5vZGUsIG1zZz1Ob25lLCAqLCBleGM9VmFsdWVFcnJvcik6CisgICAgICAgIG1vZCA9IGFzdC5Nb2R1bGUoW2FzdC5FeHByKG5vZGUpXSkKKyAgICAgICAgc2VsZi5tb2QobW9kLCBtc2csIGV4Yz1leGMpCisKKyAgICBkZWYgc3RtdChzZWxmLCBzdG10LCBtc2c9Tm9uZSk6CisgICAgICAgIG1vZCA9IGFzdC5Nb2R1bGUoW3N0bXRdKQorICAgICAgICBzZWxmLm1vZChtb2QsIG1zZykKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgbSA9IGFzdC5JbnRlcmFjdGl2ZShbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSkKKyAgICAgICAgc2VsZi5tb2QobSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiLCAic2luZ2xlIikKKyAgICAgICAgbSA9IGFzdC5FeHByZXNzaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLm1vZChtLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIsICJldmFsIikKKworICAgIGRlZiBfY2hlY2tfYXJndW1lbnRzKHNlbGYsIGZhYywgY2hlY2spOgorICAgICAgICBkZWYgYXJndW1lbnRzKGFyZ3M9Tm9uZSwgdmFyYXJnPU5vbmUsIHZhcmFyZ2Fubm90YXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBrd29ubHlhcmdzPU5vbmUsIGt3YXJnPU5vbmUsIGt3YXJnYW5ub3RhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzPU5vbmUsIGt3X2RlZmF1bHRzPU5vbmUpOgorICAgICAgICAgICAgaWYgYXJncyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICAgICAgaWYga3dvbmx5YXJncyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGt3b25seWFyZ3MgPSBbXQorICAgICAgICAgICAgaWYgZGVmYXVsdHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWZhdWx0cyA9IFtdCisgICAgICAgICAgICBpZiBrd19kZWZhdWx0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGt3X2RlZmF1bHRzID0gW10KKyAgICAgICAgICAgIGFyZ3MgPSBhc3QuYXJndW1lbnRzKGFyZ3MsIHZhcmFyZywgdmFyYXJnYW5ub3RhdGlvbiwga3dvbmx5YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnLCBrd2FyZ2Fubm90YXRpb24sIGRlZmF1bHRzLCBrd19kZWZhdWx0cykKKyAgICAgICAgICAgIHJldHVybiBmYWMoYXJncykKKyAgICAgICAgYXJncyA9IFthc3QuYXJnKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXQorICAgICAgICBjaGVjayhhcmd1bWVudHMoYXJncz1hcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHModmFyYXJnYW5ub3RhdGlvbj1hc3QuTnVtKDMpKSwKKyAgICAgICAgICAgICAgInZhcmFyZ2Fubm90YXRpb24gYnV0IG5vIHZhcmFyZyIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyh2YXJhcmdhbm5vdGF0aW9uPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCB2YXJhcmc9IngiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd29ubHlhcmdzPWFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd2FyZ2Fubm90YXRpb249YXN0Lk51bSg0MikpLAorICAgICAgICAgICAgICAgICAgICAgICAia3dhcmdhbm5vdGF0aW9uIGJ1dCBubyBrd2FyZyIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd2FyZ2Fubm90YXRpb249YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnPSJ4IiksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGRlZmF1bHRzPVthc3QuTnVtKDMpXSksCisgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHBvc2l0aW9uYWwgZGVmYXVsdHMgdGhhbiBhcmdzIikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3X2RlZmF1bHRzPVthc3QuTnVtKDQpXSksCisgICAgICAgICAgICAgICAgICAgICAgICJsZW5ndGggb2Yga3dvbmx5YXJncyBpcyBub3QgdGhlIHNhbWUgYXMga3dfZGVmYXVsdHMiKQorICAgICAgICBhcmdzID0gW2FzdC5hcmcoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKV0KKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGFyZ3M9YXJncywgZGVmYXVsdHM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgYXJncyA9IFthc3QuYXJnKCJhIiwgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSksCisgICAgICAgICAgICAgICAgYXN0LmFyZygiYiIsIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkpXQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dvbmx5YXJncz1hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBrd19kZWZhdWx0cz1bTm9uZSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKKyAgICAgICAgYSA9IGFzdC5hcmd1bWVudHMoW10sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbXSwgW10pCisgICAgICAgIGYgPSBhc3QuRnVuY3Rpb25EZWYoIngiLCBhLCBbXSwgW10sIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChmLCAiZW1wdHkgYm9keSBvbiBGdW5jdGlvbkRlZiIpCisgICAgICAgIGYgPSBhc3QuRnVuY3Rpb25EZWYoIngiLCBhLCBbYXN0LlBhc3MoKV0sIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGYsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZiA9IGFzdC5GdW5jdGlvbkRlZigieCIsIGEsIFthc3QuUGFzcygpXSwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChmLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiBmYWMoYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYXJncywgW2FzdC5QYXNzKCldLCBbXSwgTm9uZSkKKyAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5zdG10KQorCisgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6CisgICAgICAgIGRlZiBjbHMoYmFzZXM9Tm9uZSwga2V5d29yZHM9Tm9uZSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsCisgICAgICAgICAgICAgICAgYm9keT1Ob25lLCBkZWNvcmF0b3JfbGlzdD1Ob25lKToKKyAgICAgICAgICAgIGlmIGJhc2VzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYmFzZXMgPSBbXQorICAgICAgICAgICAgaWYga2V5d29yZHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBrZXl3b3JkcyA9IFtdCisgICAgICAgICAgICBpZiBib2R5IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYm9keSA9IFthc3QuUGFzcygpXQorICAgICAgICAgICAgaWYgZGVjb3JhdG9yX2xpc3QgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWNvcmF0b3JfbGlzdCA9IFtdCisgICAgICAgICAgICByZXR1cm4gYXN0LkNsYXNzRGVmKCJteWNsYXNzIiwgYmFzZXMsIGtleXdvcmRzLCBzdGFyYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCBib2R5LCBkZWNvcmF0b3JfbGlzdCkKKyAgICAgICAgc2VsZi5zdG10KGNscyhiYXNlcz1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhrZXl3b3Jkcz1bYXN0LmtleXdvcmQoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhzdGFyYXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoa3dhcmdzPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtdKSwgImVtcHR5IGJvZHkgb24gQ2xhc3NEZWYiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGJvZHk9W05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoZGVjb3JhdG9yX2xpc3Q9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9kZWxldGUoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuRGVsZXRlKFtdKSwgImVtcHR5IHRhcmdldHMgb24gRGVsZXRlIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5EZWxldGUoW05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRGVsZXRlKFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIERlbCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Fzc2lnbihzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW10sIGFzdC5OdW0oMykpLCAiZW1wdHkgdGFyZ2V0cyBvbiBBc3NpZ24iKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbTm9uZV0sIGFzdC5OdW0oMykpLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldLCBhc3QuTnVtKDMpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2F1Z2Fzc2lnbihzZWxmKToKKyAgICAgICAgYXVnID0gYXN0LkF1Z0Fzc2lnbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBhc3QuQWRkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSkKKyAgICAgICAgc2VsZi5zdG10KGF1ZywgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgYXVnID0gYXN0LkF1Z0Fzc2lnbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXN0LkFkZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXVnLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9mb3Ioc2VsZik6CisgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQorICAgICAgICB5ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQorICAgICAgICBwID0gYXN0LlBhc3MoKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCB5LCBbXSwgW10pLCAiZW1wdHkgYm9keSBvbiBGb3IiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCB5LCBbcF0sIFtdKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLCBbcF0sIFtdKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZSA9IGFzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCB5LCBbZV0sIFtdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCB5LCBbcF0sIFtlXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3doaWxlKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LldoaWxlKGFzdC5OdW0oMyksIFtdLCBbXSksICJlbXB0eSBib2R5IG9uIFdoaWxlIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaGlsZShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2FzdC5QYXNzKCldLCBbXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2hpbGUoYXN0Lk51bSgzKSwgW2FzdC5QYXNzKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2lmKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LklmKGFzdC5OdW0oMyksIFtdLCBbXSksICJlbXB0eSBib2R5IG9uIElmIikKKyAgICAgICAgaSA9IGFzdC5JZihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2FzdC5QYXNzKCldLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KGksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgaSA9IGFzdC5JZihhc3QuTnVtKDMpLCBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSwgW10pCisgICAgICAgIHNlbGYuc3RtdChpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGkgPSBhc3QuSWYoYXN0Lk51bSgzKSwgW2FzdC5QYXNzKCldLAorICAgICAgICAgICAgICAgICAgIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKQorICAgICAgICBzZWxmLnN0bXQoaSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfd2l0aChzZWxmKToKKyAgICAgICAgcCA9IGFzdC5QYXNzKCkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtdLCBbcF0pLCAiZW1wdHkgaXRlbXMgb24gV2l0aCIpCisgICAgICAgIGkgPSBhc3Qud2l0aGl0ZW0oYXN0Lk51bSgzKSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtpXSwgW10pLCAiZW1wdHkgYm9keSBvbiBXaXRoIikKKyAgICAgICAgaSA9IGFzdC53aXRoaXRlbShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtpXSwgW3BdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBpID0gYXN0LndpdGhpdGVtKGFzdC5OdW0oMyksIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbaV0sIFtwXSksICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKKyAgICAgICAgciA9IGFzdC5SYWlzZShOb25lLCBhc3QuTnVtKDMpKQorICAgICAgICBzZWxmLnN0bXQociwgIlJhaXNlIHdpdGggY2F1c2UgYnV0IG5vIGV4Y2VwdGlvbiIpCisgICAgICAgIHIgPSBhc3QuUmFpc2UoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChyLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHIgPSBhc3QuUmFpc2UoYXN0Lk51bSg0KSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChyLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF90cnkoc2VsZik6CisgICAgICAgIHAgPSBhc3QuUGFzcygpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtdLCBbXSwgW10sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJlbXB0eSBib2R5IG9uIFRyeSIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldLCBbXSwgW10sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBbXSwgW10sIFtdKQorICAgICAgICBzZWxmLnN0bXQodCwgIlRyeSBoYXMgbmVpdGhlciBleGNlcHQgaGFuZGxlcnMgbm9yIGZpbmFsYm9keSIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgW10sIFtwXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgIlRyeSBoYXMgb3JlbHNlIGJ1dCBubyBleGNlcHQgaGFuZGxlcnMiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIFthc3QuRXhjZXB0SGFuZGxlcihOb25lLCAieCIsIFtdKV0sIFtdLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJlbXB0eSBib2R5IG9uIEV4Y2VwdEhhbmRsZXIiKQorICAgICAgICBlID0gW2FzdC5FeGNlcHRIYW5kbGVyKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCAieSIsIFtwXSldCisgICAgICAgIHNlbGYuc3RtdChhc3QuVHJ5KFtwXSwgZSwgW10sIFtdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBlID0gW2FzdC5FeGNlcHRIYW5kbGVyKE5vbmUsICJ4IiwgW3BdKV0KKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBlLCBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIGUsIFtwXSwgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9hc3NlcnQoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzZXJ0KGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgYXNzcnQgPSBhc3QuQXNzZXJ0KGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGFzc3J0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuSW1wb3J0KFtdKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydCIpCisKKyAgICBkZWYgdGVzdF9pbXBvcnRmcm9tKHNlbGYpOgorICAgICAgICBpbXAgPSBhc3QuSW1wb3J0RnJvbShOb25lLCBbYXN0LmFsaWFzKCJ4IiwgTm9uZSldLCAtNDIpCisgICAgICAgIHNlbGYuc3RtdChpbXAsICJsZXZlbCBsZXNzIHRoYW4gLTEiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkltcG9ydEZyb20oTm9uZSwgW10sIDApLCAiZW1wdHkgbmFtZXMgb24gSW1wb3J0RnJvbSIpCisKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuR2xvYmFsKFtdKSwgImVtcHR5IG5hbWVzIG9uIEdsb2JhbCIpCisKKyAgICBkZWYgdGVzdF9ub25sb2NhbChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Ob25sb2NhbChbXSksICJlbXB0eSBuYW1lcyBvbiBOb25sb2NhbCIpCisKKyAgICBkZWYgdGVzdF9leHByKHNlbGYpOgorICAgICAgICBlID0gYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChlLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9ib29sb3Aoc2VsZik6CisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihiLCAibGVzcyB0aGFuIDIgdmFsdWVzIikKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbYXN0Lk51bSgzKV0pCisgICAgICAgIHNlbGYuZXhwcihiLCAibGVzcyB0aGFuIDIgdmFsdWVzIikKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbYXN0Lk51bSg0KSwgTm9uZV0pCisgICAgICAgIHNlbGYuZXhwcihiLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbYXN0Lk51bSg0KSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBzZWxmLmV4cHIoYiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfdW5hcnlvcChzZWxmKToKKyAgICAgICAgdSA9IGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuZXhwcih1LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6CisgICAgICAgIGEgPSBhc3QuYXJndW1lbnRzKFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKQorICAgICAgICBzZWxmLmV4cHIoYXN0LkxhbWJkYShhLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiBmYWMoYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXN0LkxhbWJkYShhcmdzLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKQorICAgICAgICBzZWxmLl9jaGVja19hcmd1bWVudHMoZmFjLCBzZWxmLmV4cHIpCisKKyAgICBkZWYgdGVzdF9pZmV4cChzZWxmKToKKyAgICAgICAgbCA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgcyA9IGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIGZvciBhcmdzIGluIChzLCBsLCBsKSwgKGwsIHMsIGwpLCAobCwgbCwgcyk6CisgICAgICAgICAgICBzZWxmLmV4cHIoYXN0LklmRXhwKCphcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICAgICAgZCA9IGFzdC5EaWN0KFtdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCisgICAgICAgIHNlbGYuZXhwcihkLCAic2FtZSBudW1iZXIgb2Yga2V5cyBhcyB2YWx1ZXMiKQorICAgICAgICBkID0gYXN0LkRpY3QoW05vbmVdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCisgICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgZCA9IGFzdC5EaWN0KFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSwgW05vbmVdKQorICAgICAgICBzZWxmLmV4cHIoZCwgIk5vbmUgZGlzYWxsb3dlZCIpCisKKyAgICBkZWYgdGVzdF9zZXQoc2VsZik6CisgICAgICAgIHNlbGYuZXhwcihhc3QuU2V0KFtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzID0gYXN0LlNldChbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBzZWxmLmV4cHIocywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIF9jaGVja19jb21wcmVoZW5zaW9uKHNlbGYsIGZhYyk6CisgICAgICAgIHNlbGYuZXhwcihmYWMoW10pLCAiY29tcHJlaGVuc2lvbiB3aXRoIG5vIGdlbmVyYXRvcnMiKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQorICAgICAgICB5ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW05vbmVdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgX3NpbXBsZV9jb21wKHNlbGYsIGZhYyk6CisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbZ10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgd3JhcChnZW5zKToKKyAgICAgICAgICAgIHJldHVybiBmYWMoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGdlbnMpCisgICAgICAgIHNlbGYuX2NoZWNrX2NvbXByZWhlbnNpb24od3JhcCkKKworICAgIGRlZiB0ZXN0X2xpc3Rjb21wKHNlbGYpOgorICAgICAgICBzZWxmLl9zaW1wbGVfY29tcChhc3QuTGlzdENvbXApCisKKyAgICBkZWYgdGVzdF9zZXRjb21wKHNlbGYpOgorICAgICAgICBzZWxmLl9zaW1wbGVfY29tcChhc3QuU2V0Q29tcCkKKworICAgIGRlZiB0ZXN0X2dlbmVyYXRvcmV4cChzZWxmKToKKyAgICAgICAgc2VsZi5fc2ltcGxlX2NvbXAoYXN0LkdlbmVyYXRvckV4cCkKKworICAgIGRlZiB0ZXN0X2RpY3Rjb21wKHNlbGYpOgorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgYyA9IGFzdC5EaWN0Q29tcChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpLCBbZ10pCisgICAgICAgIHNlbGYuZXhwcihjLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGMgPSBhc3QuRGljdENvbXAoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwgW2ddKQorICAgICAgICBzZWxmLmV4cHIoYywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgZmFjdG9yeShjb21wcyk6CisgICAgICAgICAgICBrID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICAgICAgdiA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgICAgIHJldHVybiBhc3QuRGljdENvbXAoaywgdiwgY29tcHMpCisgICAgICAgIHNlbGYuX2NoZWNrX2NvbXByZWhlbnNpb24oZmFjdG9yeSkKKworICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICBzZWxmLmV4cHIoYXN0LllpZWxkKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwgIm11c3QgaGF2ZSBMb2FkIikKKyAgICAgICAgc2VsZi5leHByKGFzdC5ZaWVsZEZyb20oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLCAibXVzdCBoYXZlIExvYWQiKQorCisgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgbGVmdCA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGxlZnQsIFthc3QuSW4oKV0sIFtdKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgIm5vIGNvbXBhcmF0b3JzIikKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGxlZnQsIFthc3QuSW4oKV0sIFthc3QuTnVtKDQpLCBhc3QuTnVtKDUpXSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJkaWZmZXJlbnQgbnVtYmVyIG9mIGNvbXBhcmF0b3JzIGFuZCBvcGVyYW5kcyIpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShhc3QuTnVtKCJibGFoIiksIFthc3QuSW4oKV0sIFtsZWZ0XSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJub24tbnVtZXJpYyIsIGV4Yz1UeXBlRXJyb3IpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShsZWZ0LCBbYXN0LkluKCldLCBbYXN0Lk51bSgiYmxhaCIpXSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJub24tbnVtZXJpYyIsIGV4Yz1UeXBlRXJyb3IpCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBmdW5jID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBhcmdzID0gW2FzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSldCisgICAgICAgIGtleXdvcmRzID0gW2FzdC5rZXl3b3JkKCJ3IiwgYXN0Lk5hbWUoInoiLCBhc3QuTG9hZCgpKSldCisgICAgICAgIHN0YXJhcmcgPSBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGt3YXJnID0gYXN0Lk5hbWUoInEiLCBhc3QuTG9hZCgpKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBbTm9uZV0sIGtleXdvcmRzLCBzdGFyYXJnLCBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBiYWRfa2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5TdG9yZSgpKSldCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBiYWRfa2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpLCBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInciLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9udW0oc2VsZik6CisgICAgICAgIGNsYXNzIHN1YmludChpbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBzdWJmbG9hdChmbG9hdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHN1YmNvbXBsZXgoY29tcGxleCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBvYmogaW4gIjAiLCAiaGVsbG8iLCBzdWJpbnQoKSwgc3ViZmxvYXQoKSwgc3ViY29tcGxleCgpOgorICAgICAgICAgICAgc2VsZi5leHByKGFzdC5OdW0ob2JqKSwgIm5vbi1udW1lcmljIiwgZXhjPVR5cGVFcnJvcikKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgYXR0ciA9IGFzdC5BdHRyaWJ1dGUoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksICJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgc2VsZi5leHByKGF0dHIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgc3ViID0gYXN0LlN1YnNjcmlwdChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXN0LkluZGV4KGFzdC5OdW0oMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5Mb2FkKCkpCisgICAgICAgIHNlbGYuZXhwcihzdWIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgc3ViID0gYXN0LlN1YnNjcmlwdCh4LCBhc3QuSW5kZXgoYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5Mb2FkKCkpCisgICAgICAgIHNlbGYuZXhwcihzdWIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgcyA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIGZvciBhcmdzIGluIChzLCBOb25lLCBOb25lKSwgKE5vbmUsIHMsIE5vbmUpLCAoTm9uZSwgTm9uZSwgcyk6CisgICAgICAgICAgICBzbCA9IGFzdC5TbGljZSgqYXJncykKKyAgICAgICAgICAgIHNlbGYuZXhwcihhc3QuU3Vic2NyaXB0KHgsIHNsLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNsID0gYXN0LkV4dFNsaWNlKFtdKQorICAgICAgICBzZWxmLmV4cHIoYXN0LlN1YnNjcmlwdCh4LCBzbCwgYXN0LkxvYWQoKSksICJlbXB0eSBkaW1zIG9uIEV4dFNsaWNlIikKKyAgICAgICAgc2wgPSBhc3QuRXh0U2xpY2UoW2FzdC5JbmRleChzKV0pCisgICAgICAgIHNlbGYuZXhwcihhc3QuU3Vic2NyaXB0KHgsIHNsLCBhc3QuTG9hZCgpKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfc3RhcnJlZChzZWxmKToKKyAgICAgICAgbGVmdCA9IGFzdC5MaXN0KFthc3QuU3RhcnJlZChhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBhc3QuU3RvcmUoKSldLAorICAgICAgICAgICAgICAgICAgICAgICAgYXN0LlN0b3JlKCkpCisgICAgICAgIGFzc2lnbiA9IGFzdC5Bc3NpZ24oW2xlZnRdLCBhc3QuTnVtKDQpKQorICAgICAgICBzZWxmLnN0bXQoYXNzaWduLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIF9zZXF1ZW5jZShzZWxmLCBmYWMpOgorICAgICAgICBzZWxmLmV4cHIoZmFjKFtOb25lXSwgYXN0LkxvYWQoKSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5fc2VxdWVuY2UoYXN0Lkxpc3QpCisKKyAgICBkZWYgdGVzdF90dXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5fc2VxdWVuY2UoYXN0LlR1cGxlKQorCisgICAgZGVmIHRlc3Rfc3RkbGliX3ZhbGlkYXRlcyhzZWxmKToKKyAgICAgICAgc3RkbGliID0gb3MucGF0aC5kaXJuYW1lKGFzdC5fX2ZpbGVfXykKKyAgICAgICAgdGVzdHMgPSBbZm4gZm9yIGZuIGluIG9zLmxpc3RkaXIoc3RkbGliKSBpZiBmbi5lbmRzd2l0aCgiLnB5IildCisgICAgICAgIHRlc3RzLmV4dGVuZChbInRlc3QvdGVzdF9ncmFtbWFyLnB5IiwgInRlc3QvdGVzdF91bnBhY2tfZXgucHkiXSkKKyAgICAgICAgZm9yIG1vZHVsZSBpbiB0ZXN0czoKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHN0ZGxpYiwgbW9kdWxlKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZuLCAiciIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgbW9kID0gYXN0LnBhcnNlKHNvdXJjZSkKKyAgICAgICAgICAgIGNvbXBpbGUobW9kLCBmbiwgImV4ZWMiKQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChBU1RfVGVzdHMsIEFTVEhlbHBlcnNfVGVzdCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChBU1RfVGVzdHMsIEFTVEhlbHBlcnNfVGVzdCwgQVNUVmFsaWRhdG9yVGVzdHMpCiAKIGRlZiBtYWluKCk6CiAgICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKQEAgLTUzOSw5ICs5NzUsMTEgQEAKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnV2hpbGUnLCAoMSwgMCksICgnTmFtZScsICgxLCA2KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDgpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdJZicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDMpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgNSkpXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpXSwgWygnUGFzcycsICgxLCAxMykpXSldKSwKKygnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSksICgnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgMTMpLCAneicsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxOCksICdxJywgKCdTdG9yZScsKSkpXSwgWygnUGFzcycsICgxLCAyMSkpXSldKSwKICgnTW9kdWxlJywgWygnUmFpc2UnLCAoMSwgMCksICgnQ2FsbCcsICgxLCA2KSwgKCdOYW1lJywgKDEsIDYpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgWygnU3RyJywgKDEsIDE2KSwgJ3N0cmluZycpXSwgW10sIE5vbmUsIE5vbmUpLCBOb25lKV0pLAotKCdNb2R1bGUnLCBbKCdUcnlFeGNlcHQnLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdKV0pLAotKCdNb2R1bGUnLCBbKCdUcnlGaW5hbGx5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ1Bhc3MnLCAoNCwgMikpXSldKSwKKygnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ0V4Y2VwdEhhbmRsZXInLCAoMywgMCksICgnTmFtZScsICgzLCA3KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIE5vbmUsIFsoJ1Bhc3MnLCAoNCwgMikpXSldLCBbXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ1RyeScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbXSwgW10sIFsoJ1Bhc3MnLCAoNCwgMikpXSldKSwKICgnTW9kdWxlJywgWygnQXNzZXJ0JywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNyksICd2JywgKCdMb2FkJywpKSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnSW1wb3J0JywgKDEsIDApLCBbKCdhbGlhcycsICdzeXMnLCBOb25lKV0pXSksCiAoJ01vZHVsZScsIFsoJ0ltcG9ydEZyb20nLCAoMSwgMCksICdzeXMnLCBbKCdhbGlhcycsICd2JywgTm9uZSldLCAwKV0pLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKaW5kZXggODk4OWE2My4uODc4YjI2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CkBAIC0yMSw2ICsyMSw4IEBACiAKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIAorSEFTX1VOSVhfU09DS0VUUyA9IGhhc2F0dHIoc29ja2V0LCAnQUZfVU5JWCcpCisKIGNsYXNzIGR1bW15c29ja2V0OgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQpAQCAtNzIsMTUgKzc0LDE2IEBACiAgICAgICAgIHBhc3MKICAgICBlbHNlOgogICAgICAgICBuID0gMjAwCi0gICAgICAgIHdoaWxlIG4gPiAwOgotICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QoW2Nvbm5dLCBbXSwgW10pCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHRpbWUudGltZSgpIC0gc3RhcnQgPCAzLjA6CisgICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChbY29ubl0sIFtdLCBbXSwgMC4xKQogICAgICAgICAgICAgaWYgcjoKKyAgICAgICAgICAgICAgICBuIC09IDEKICAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KDEwKQogICAgICAgICAgICAgICAgICMga2VlcCBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgdGhlIG5ld2xpbmUgdGVybWluYXRvcgogICAgICAgICAgICAgICAgIGJ1Zi53cml0ZShkYXRhLnJlcGxhY2UoYidcbicsIGInJykpCiAgICAgICAgICAgICAgICAgaWYgYidcbicgaW4gZGF0YToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIG4gLT0gMQogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQogCiAgICAgICAgIGNvbm4uY2xvc2UoKQpAQCAtODgsNiArOTEsMTMgQEAKICAgICAgICAgc2Vydi5jbG9zZSgpCiAgICAgICAgIGV2dC5zZXQoKQogCitkZWYgYmluZF9hZl9hd2FyZShzb2NrLCBhZGRyKToKKyAgICAiIiJIZWxwZXIgZnVuY3Rpb24gdG8gYmluZCBhIHNvY2tldCBhY2NvcmRpbmcgdG8gaXRzIGZhbWlseS4iIiIKKyAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzb2NrLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHBhdGggZG9lc24ndCBleGlzdC4KKyAgICAgICAgdW5saW5rKGFkZHIpCisgICAgc29jay5iaW5kKGFkZHIpCisKIAogY2xhc3MgSGVscGVyRnVuY3Rpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVhZHdyaXRlZXhjKHNlbGYpOgpAQCAtMzUzLDcgKzM2Myw3IEBACiAgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKICAgICAgICAgZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzb2NrLnNldHRpbWVvdXQoMykKICAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNvY2spCiAKQEAgLTM2OCw3ICszNzgsNyBAQAogCiAgICAgICAgICAgICBkYXRhID0gYiJTdXBwb3NlIHRoZXJlIGlzbid0IGEgMTYtdG9uIHdlaWdodD8iCiAgICAgICAgICAgICBkID0gZGlzcGF0Y2hlcndpdGhzZW5kX25vcmVhZCgpCi0gICAgICAgICAgICBkLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIGQuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgICBkLmNvbm5lY3QoKEhPU1QsIHBvcnQpKQogCiAgICAgICAgICAgICAjIGdpdmUgdGltZSBmb3Igc29ja2V0IHRvIGNvbm5lY3QKQEAgLTQ2OCwyMiArNDc4LDIyIEBACiAgICAgICAgIHJhaXNlCiAKIAotY2xhc3MgVENQU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgorY2xhc3MgQmFzZVNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICAiIiJBIHNlcnZlciB3aGljaCBsaXN0ZW5zIG9uIGFuIGFkZHJlc3MgYW5kIGRpc3BhdGNoZXMgdGhlCiAgICAgY29ubmVjdGlvbiB0byBhIGhhbmRsZXIuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlcj1CYXNlVGVzdEhhbmRsZXIsIGhvc3Q9SE9TVCwgcG9ydD0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyLCBoYW5kbGVyPUJhc2VUZXN0SGFuZGxlcik6CiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCiAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQotICAgICAgICBzZWxmLmJpbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICBiaW5kX2FmX2F3YXJlKHNlbGYuc29ja2V0LCBhZGRyKQogICAgICAgICBzZWxmLmxpc3Rlbig1KQogICAgICAgICBzZWxmLmhhbmRsZXIgPSBoYW5kbGVyCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYWRkcmVzcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIHNvY2ssIGFkZHIpOgogICAgICAgICBzZWxmLmhhbmRsZXIoc29jaykKQEAgLTQ5NCwxNiArNTA0LDE2IEBACiAKIGNsYXNzIEJhc2VDbGllbnQoQmFzZVRlc3RIYW5kbGVyKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyZXNzKToKICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZmFtaWx5KQogICAgICAgICBzZWxmLmNvbm5lY3QoYWRkcmVzcykKIAogICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKICAgICAgICAgcGFzcwogCiAKLWNsYXNzIEJhc2VUZXN0QVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0QVBJOgogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQpAQCAtNTI2LDggKzUzNiw4IEBACiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9hY2NlcHQoc2VsZik6CkBAIC01MzUsMTggKzU0NSwxOCBAQAogCiAgICAgICAgIGNsYXNzIFRlc3RMaXN0ZW5lcihCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyKToKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCisgICAgICAgICAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKCkKLSAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhzZXJ2ZXIpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfYWNjZXB0ZWQoc2VsZik6CkBAIC01NTQsMTIgKzU2NCwxMiBAQAogCiAgICAgICAgIGNsYXNzIFRlc3RMaXN0ZW5lcihCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyKToKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCisgICAgICAgICAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLmhhbmRsZV9hY2NlcHQoc2VsZikKQEAgLTU2OCw4ICs1NzgsOCBAQAogICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKHNlcnZlcikKIAogCkBAIC01ODUsOCArNTk1LDggQEAKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgICAgICBzZWxmLnNlbmQoYid4JyAqIDEwMjQpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX3dyaXRlKHNlbGYpOgpAQCAtNTk2LDggKzYwNiw4IEBACiAgICAgICAgICAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfY2xvc2Uoc2VsZik6CkBAIC02MjAsOCArNjMwLDQwIEBACiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2Nsb3NlX2FmdGVyX2Nvbm5fYnJva2VuKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgRUNPTk5SRVNFVC9FUElQRSBpcyBjb3JyZWN0bHkgaGFuZGxlZCAoaXNzdWVzICM1NjYxIGFuZAorICAgICAgICAjICMxMTI2NSkuCisKKyAgICAgICAgZGF0YSA9IGInXDAnICogMTI4CisKKyAgICAgICAgY2xhc3MgVGVzdENsaWVudChCYXNlQ2xpZW50KToKKworICAgICAgICAgICAgZGVmIGhhbmRsZV93cml0ZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoZGF0YSkKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVfZXhwdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgY2xhc3MgVGVzdEhhbmRsZXIoQmFzZVRlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYucmVjdihsZW4oZGF0YSkpCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKSwKQEAgLTYzMCw5ICs2NzIsMTIgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgaGFuZGxlX2V4cHQgaXMgY2FsbGVkIG9uIE9PQiBkYXRhIHJlY2VpdmVkLgogICAgICAgICAjIE5vdGU6IHRoaXMgbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3JtcyBhcyBPT0IgZGF0YSBpcwogICAgICAgICAjIHRlbnVvdXNseSBzdXBwb3J0ZWQgYW5kIHJhcmVseSB1c2VkLgorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQogCiAgICAgICAgIGNsYXNzIFRlc3RDbGllbnQoQmFzZUNsaWVudCk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2V4cHQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQucmVjdigxMDI0LCBzb2NrZXQuTVNHX09PQikKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKICAgICAgICAgY2xhc3MgVGVzdEhhbmRsZXIoQmFzZVRlc3RIYW5kbGVyKToKQEAgLTY0MCw4ICs2ODUsOCBAQAogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmQoYnl0ZXMoY2hyKDI0NCksICdsYXRpbi0xJyksIHNvY2tldC5NU0dfT09CKQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcihUZXN0SGFuZGxlcikKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyLCBUZXN0SGFuZGxlcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9lcnJvcihzZWxmKToKQEAgLTY1OCwxMyArNzAzLDEzIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJleGNlcHRpb24gbm90IHJhaXNlZCIpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfY29ubmVjdGlvbl9hdHRyaWJ1dGVzKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogCiAgICAgICAgICMgd2Ugc3RhcnQgZGlzY29ubmVjdGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLmNvbm5lY3RlZCkKQEAgLTY5NCwyNSArNzM5LDI5IEBACiAKICAgICBkZWYgdGVzdF9jcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCi0gICAgICAgIHMuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC5mYW1pbHksIHNlbGYuZmFtaWx5KQogICAgICAgICBTT0NLX05PTkJMT0NLID0gZ2V0YXR0cihzb2NrZXQsICdTT0NLX05PTkJMT0NLJywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC50eXBlLCBzb2NrZXQuU09DS19TVFJFQU0gfCBTT0NLX05PTkJMT0NLKQogCiAgICAgZGVmIHRlc3RfYmluZChzZWxmKToKKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKICAgICAgICAgczEgPSBhc3luY29yZS5kaXNwYXRjaGVyKCkKLSAgICAgICAgczEuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzMS5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgczEuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKKyAgICAgICAgczEuYmluZChzZWxmLmFkZHIpCiAgICAgICAgIHMxLmxpc3Rlbig1KQogICAgICAgICBwb3J0ID0gczEuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KIAogICAgICAgICBzMiA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoKQotICAgICAgICBzMi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHMyLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgICMgRUFERFJJTlVTRSBpbmRpY2F0ZXMgdGhlIHNvY2tldCB3YXMgY29ycmVjdGx5IGJvdW5kCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgczIuYmluZCwgKEhPU1QsIHBvcnQpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMyLmJpbmQsIChzZWxmLmFkZHJbMF0sIHBvcnQpKQogCiAgICAgZGVmIHRlc3Rfc2V0X3JldXNlX2FkZHIoc2VsZik6Ci0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKQEAgLTcyMCwxMSArNzY5LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGlmIFNPX1JFVVNFQUREUiBzdWNjZWVkZWQgZm9yIHNvY2sgd2UgZXhwZWN0IGFzeW5jb3JlCiAgICAgICAgICAgICAjIHRvIGRvIHRoZSBzYW1lCi0gICAgICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KCkpCisgICAgICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSkKICAgICAgICAgICAgIHMuc29ja2V0LmNsb3NlKCkKLSAgICAgICAgICAgIHMuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQogICAgICAgICAgICAgcy5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSkKQEAgLTczNSwxMyArNzg0LDE0IEBACiAgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfcXVpY2tfY29ubmVjdChzZWxmKToKICAgICAgICAgIyBzZWU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDM0MAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bGFtYmRhOiBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4xLCBjb3VudD01MDApKQotICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHQuam9pbikKKyAgICAgICAgaWYgc2VsZi5mYW1pbHkgaW4gKHNvY2tldC5BRl9JTkVULCBnZXRhdHRyKHNvY2tldCwgIkFGX0lORVQ2Iiwgb2JqZWN0KCkpKToKKyAgICAgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6IGFzeW5jb3JlLmxvb3AodGltZW91dD0wLjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PTUwMCkpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0LmpvaW4pCiAKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoMjApOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgICAgICBzLnNldHRpbWVvdXQoLjIpCiAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19MSU5HRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soJ2lpJywgMSwgMCkpCkBAIC03NTIsMTkgKzgwMiw0NSBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAotY2xhc3MgVGVzdEFQSV9Vc2VTZWxlY3QoQmFzZVRlc3RBUEkpOgorY2xhc3MgVGVzdEFQSV9Vc2VJUHY0U29ja2V0cyhCYXNlVGVzdEFQSSk6CisgICAgZmFtaWx5ID0gc29ja2V0LkFGX0lORVQKKyAgICBhZGRyID0gKEhPU1QsIDApCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiBzdXBwb3J0IHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlSVB2NlNvY2tldHMoQmFzZVRlc3RBUEkpOgorICAgIGZhbWlseSA9IHNvY2tldC5BRl9JTkVUNgorICAgIGFkZHIgPSAoJzo6MScsIDApCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBU19VTklYX1NPQ0tFVFMsICdVbml4IHNvY2tldHMgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0cyhCYXNlVGVzdEFQSSk6CisgICAgaWYgSEFTX1VOSVhfU09DS0VUUzoKKyAgICAgICAgZmFtaWx5ID0gc29ja2V0LkFGX1VOSVgKKyAgICBhZGRyID0gc3VwcG9ydC5URVNURk4KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdW5saW5rKHNlbGYuYWRkcikKKyAgICAgICAgQmFzZVRlc3RBUEkudGVhckRvd24oc2VsZikKKworY2xhc3MgVGVzdEFQSV9Vc2VJUHY0U2VsZWN0KFRlc3RBUElfVXNlSVB2NFNvY2tldHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB1c2VfcG9sbCA9IEZhbHNlCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQotY2xhc3MgVGVzdEFQSV9Vc2VQb2xsKEJhc2VUZXN0QVBJKToKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFBvbGwoVGVzdEFQSV9Vc2VJUHY0U29ja2V0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHVzZV9wb2xsID0gVHJ1ZQogCitjbGFzcyBUZXN0QVBJX1VzZUlQdjZTZWxlY3QoVGVzdEFQSV9Vc2VJUHY2U29ja2V0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHVzZV9wb2xsID0gRmFsc2UKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3RzID0gW0hlbHBlckZ1bmN0aW9uVGVzdHMsIERpc3BhdGNoZXJUZXN0cywgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHMsCi0gICAgICAgICAgICAgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbCwgVGVzdEFQSV9Vc2VTZWxlY3QsCi0gICAgICAgICAgICAgVGVzdEFQSV9Vc2VQb2xsLCBGaWxlV3JhcHBlclRlc3RdCi0gICAgcnVuX3VuaXR0ZXN0KCp0ZXN0cykKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VJUHY2UG9sbChUZXN0QVBJX1VzZUlQdjZTb2NrZXRzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdXNlX3BvbGwgPSBUcnVlCisKK2NsYXNzIFRlc3RBUElfVXNlVW5peFNvY2tldHNTZWxlY3QoVGVzdEFQSV9Vc2VVbml4U29ja2V0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHVzZV9wb2xsID0gRmFsc2UKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICdzZWxlY3QucG9sbCByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzUG9sbChUZXN0QVBJX1VzZVVuaXhTb2NrZXRzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdXNlX3BvbGwgPSBUcnVlCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5IGIvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKaW5kZXggY2E5NDUwNC4uMjU2OTQ3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKQEAgLTEwMyw0NCArMTAzLDUzIEBACiAKICAgICBkZWYgdGVzdF9iNjRkZWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iKSwgYiJ3d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYidBQT09JyksIGInXHgwMCcpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZUT09IiksIGIiYSIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0k9IiksIGIiYWIiKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiWVdKaiIpLCBiImFiYyIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYcEJRa05FIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldqQXhNak0wXG5OVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iKSwKLSAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKLSAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInJyksIGInJykKKworICAgICAgICB0ZXN0cyA9IHtiImQzZDNMbkI1ZEdodmJpNXZjbWM9IjogYiJ3d3cucHl0aG9uLm9yZyIsCisgICAgICAgICAgICAgICAgIGInQUE9PSc6IGInXHgwMCcsCisgICAgICAgICAgICAgICAgIGIiWVE9PSI6IGIiYSIsCisgICAgICAgICAgICAgICAgIGIiWVdJPSI6IGIiYWIiLAorICAgICAgICAgICAgICAgICBiIllXSmoiOiBiImFiYyIsCisgICAgICAgICAgICAgICAgIGIiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHBCUWtORSIKKyAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBcbk5UIgorICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iOgorCisgICAgICAgICAgICAgICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCisgICAgICAgICAgICAgICAgIGIiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCisgICAgICAgICAgICAgICAgIGIiMDEyMzQ1Njc4OSFAIzBeJiooKTs6PD4sLiBbXXt9IiwKKyAgICAgICAgICAgICAgICAgYicnOiBiJycsCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKKwogICAgICAgICAjIFRlc3Qgd2l0aCBhcmJpdHJhcnkgYWx0ZXJuYXRpdmUgY2hhcmFjdGVycwotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInMDFhKmIkY2QnLCBhbHRjaGFycz1iJyokJyksIGInXHhkM1ZceGJlb1x4ZjdceDFkJykKLSAgICAgICAgIyBDaGVjayBpZiBwYXNzaW5nIGEgc3RyIG9iamVjdCByYWlzZXMgYW4gZXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCBiIiIsIGFsdGNoYXJzPSIiKQorICAgICAgICB0ZXN0c19hbHRjaGFycyA9IHsoYicwMWEqYiRjZCcsIGInKiQnKTogYidceGQzVlx4YmVvXHhmN1x4MWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciAoZGF0YSwgYWx0Y2hhcnMpLCByZXMgaW4gdGVzdHNfYWx0Y2hhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGRhdGFfc3RyID0gZGF0YS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGFsdGNoYXJzX3N0ciA9IGFsdGNoYXJzLmRlY29kZSgnYXNjaWknKQorCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEsIGFsdGNoYXJzPWFsdGNoYXJzKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhX3N0ciwgYWx0Y2hhcnM9YWx0Y2hhcnMpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEsIGFsdGNoYXJzPWFsdGNoYXJzX3N0ciksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YV9zdHIsIGFsdGNoYXJzPWFsdGNoYXJzX3N0ciksIHJlcykKKwogICAgICAgICAjIFRlc3Qgc3RhbmRhcmQgYWxwaGFiZXQKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiImQzZDNMbkI1ZEdodmJpNXZjbWM9IiksIGIid3d3LnB5dGhvbi5vcmciKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVE9PSIpLCBiImEiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdJPSIpLCBiImFiIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXSmoiKSwgYiJhYmMiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiIiksIGIiIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwQlFrTkUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBOVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iKSwKLSAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKLSAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iKQotICAgICAgICAjIENoZWNrIGlmIHBhc3NpbmcgYSBzdHIgb2JqZWN0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsIGIiIiwgYWx0Y2hhcnM9IiIpCisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCisKICAgICAgICAgIyBUZXN0IHdpdGggJ1VSTCBzYWZlJyBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXJzCi0gICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShiJzAxYS1iX2NkJyksIGInXHhkM1ZceGJlb1x4ZjdceDFkJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUsICIiKQorICAgICAgICB0ZXN0c191cmxzYWZlID0ge2InMDFhLWJfY2QnOiBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicnOiBiJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzX3VybHNhZmUuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQogCiAgICAgZGVmIHRlc3RfYjY0ZGVjb2RlX3BhZGRpbmdfZXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCBiJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCAnYWJjJykKIAogICAgIGRlZiB0ZXN0X2I2NGRlY29kZV9pbnZhbGlkX2NoYXJzKHNlbGYpOgogICAgICAgICAjIGlzc3VlIDE0NjYwNjU6IFRlc3Qgc29tZSBpbnZhbGlkIGNoYXJhY3RlcnMuCkBAIC0xNTUsOCArMTY0LDExIEBACiAgICAgICAgICAgICAgICAgIChiJ1lXSmpcbllXST0nLCBiJ2FiY2FiJykpCiAgICAgICAgIGZvciBic3RyLCByZXMgaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2U2NC5iNjRkZWNvZGUoYnN0ciksIHJlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZTY0LmI2NGRlY29kZShic3RyLmRlY29kZSgnYXNjaWknKSksIHJlcykKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgogICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoYnN0ciwgdmFsaWRhdGU9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoYnN0ci5kZWNvZGUoJ2FzY2lpJyksIHZhbGlkYXRlPVRydWUpCiAKICAgICBkZWYgdGVzdF9iMzJlbmNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtMTcxLDQwICsxODMsNjMgQEAKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYicnKSwgYicnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInQUE9PT09PT0nKSwgYidceDAwJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01FPT09PT09JyksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJBPT09PScpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHPT09JyksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkE9JyksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pERicpLCBiJ2FiY2RlJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCAiIikKKyAgICAgICAgdGVzdHMgPSB7YicnOiBiJycsCisgICAgICAgICAgICAgICAgIGInQUE9PT09PT0nOiBiJ1x4MDAnLAorICAgICAgICAgICAgICAgICBiJ01FPT09PT09JzogYidhJywKKyAgICAgICAgICAgICAgICAgYidNRlJBPT09PSc6IGInYWInLAorICAgICAgICAgICAgICAgICBiJ01GUkdHPT09JzogYidhYmMnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkE9JzogYidhYmNkJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pERic6IGInYWJjZGUnLAorICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCiAKICAgICBkZWYgdGVzdF9iMzJkZWNvZGVfY2FzZWZvbGQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInJywgVHJ1ZSksIGInJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01FPT09PT09JywgVHJ1ZSksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJBPT09PScsIFRydWUpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHPT09JywgVHJ1ZSksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkE9JywgVHJ1ZSksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pERicsIFRydWUpLCBiJ2FiY2RlJykKLSAgICAgICAgIyBMb3dlciBjYXNlcwotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWU9PT09PT0nLCBUcnVlKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmE9PT09JywgVHJ1ZSksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2c9PT0nLCBUcnVlKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2d6YT0nLCBUcnVlKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmdnemRmJywgVHJ1ZSksIGInYWJjZGUnKQotICAgICAgICAjIEV4cGVjdGVkIGV4Y2VwdGlvbnMKKyAgICAgICAgdGVzdHMgPSB7YicnOiBiJycsCisgICAgICAgICAgICAgICAgIGInTUU9PT09PT0nOiBiJ2EnLAorICAgICAgICAgICAgICAgICBiJ01GUkE9PT09JzogYidhYicsCisgICAgICAgICAgICAgICAgIGInTUZSR0c9PT0nOiBiJ2FiYycsCisgICAgICAgICAgICAgICAgIGInTUZSR0daQT0nOiBiJ2FiY2QnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkRGJzogYidhYmNkZScsCisgICAgICAgICAgICAgICAgICMgTG93ZXIgY2FzZXMKKyAgICAgICAgICAgICAgICAgYidtZT09PT09PSc6IGInYScsCisgICAgICAgICAgICAgICAgIGInbWZyYT09PT0nOiBiJ2FiJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZz09PSc6IGInYWJjJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZ3phPSc6IGInYWJjZCcsCisgICAgICAgICAgICAgICAgIGInbWZyZ2d6ZGYnOiBiJ2FiY2RlJywKKyAgICAgICAgICAgICAgICAgfQorCisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgVHJ1ZSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJyksIFRydWUpLCByZXMpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiJ21lPT09PT09JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCAnbWU9PT09PT0nKQorCiAgICAgICAgICMgTWFwcGluZyB6ZXJvIGFuZCBvbmUKICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01MTzIzNDU2JyksIGInYlx4ZGRceGFkXHhmM1x4YmUnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTTEwMjM0NTYnLCBtYXAwMT1iJ0wnKSwgYidiXHhkZFx4YWRceGYzXHhiZScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNMTAyMzQ1NicsIG1hcDAxPWInSScpLCBiJ2JceDFkXHhhZFx4ZjNceGJlJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiIiIsIG1hcDAxPSIiKQorICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKCdNTE8yMzQ1NicpLCBiJ2JceGRkXHhhZFx4ZjNceGJlJykKKworICAgICAgICBtYXBfdGVzdHMgPSB7KGInTTEwMjM0NTYnLCBiJ0wnKTogYidiXHhkZFx4YWRceGYzXHhiZScsCisgICAgICAgICAgICAgICAgICAgICAoYidNMTAyMzQ1NicsIGInSScpOiBiJ2JceDFkXHhhZFx4ZjNceGJlJywKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChkYXRhLCBtYXAwMSksIHJlcyBpbiBtYXBfdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGRhdGFfc3RyID0gZGF0YS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIG1hcDAxX3N0ciA9IG1hcDAxLmRlY29kZSgnYXNjaWknKQorCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIG1hcDAxPW1hcDAxKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhX3N0ciwgbWFwMDE9bWFwMDEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIG1hcDAxPW1hcDAxX3N0ciksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YV9zdHIsIG1hcDAxPW1hcDAxX3N0ciksIHJlcykKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZV9lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInYWJjJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInQUJDREVGPT0nKQorICAgICAgICBmb3IgZGF0YSBpbiBbYidhYmMnLCBiJ0FCQ0RFRj09J106CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlKGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogCiAgICAgZGVmIHRlc3RfYjE2ZW5jb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKQEAgLTIxNSwxMiArMjUwLDI0IEBACiAgICAgZGVmIHRlc3RfYjE2ZGVjb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAxMDJBQkNERUYnKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAxMDJBQkNERUYnKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMCcpLCBiJ1x4MDAnKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMCcpLCBiJ1x4MDAnKQogICAgICAgICAjIExvd2VyIGNhc2UgaXMgbm90IGFsbG93ZWQgd2l0aG91dCBhIGZsYWcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsIGInMDEwMmFiY2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjE2ZGVjb2RlLCAnMDEwMmFiY2RlZicpCiAgICAgICAgICMgQ2FzZSBmb2xkCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMTAyYWJjZGVmJywgVHJ1ZSksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsICIiKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMTAyYWJjZGVmJywgVHJ1ZSksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX25vbmFzY2lpX3N0cihzZWxmKToKKyAgICAgICAgZGVjb2RlX2Z1bmNzID0gKGJhc2U2NC5iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LmIzMmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iMTZkZWNvZGUpCisgICAgICAgIGZvciBmIGluIGRlY29kZV9mdW5jczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYsICd3aXRoIG5vbi1hc2NpaSBceGNiJykKIAogICAgIGRlZiB0ZXN0X0Vycm9ySGVyaXRhZ2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGJpbmFzY2lpLkVycm9yLCBWYWx1ZUVycm9yKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5IGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKaW5kZXggZjNjNmViYi4uMGU1NDU5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKQEAgLTEsMyArMSwxMyBAQAorIiIiQmlnbWVtIHRlc3RzIC0gdGVzdHMgZm9yIHRoZSAzMi1iaXQgYm91bmRhcnkgaW4gY29udGFpbmVycy4KKworVGhlc2UgdGVzdHMgdHJ5IHRvIGV4ZXJjaXNlIHRoZSAzMi1iaXQgYm91bmRhcnkgdGhhdCBpcyBzb21ldGltZXMsIGlmCityYXJlbHksIGV4Y2VlZGVkIGluIHByYWN0aWNlLCBidXQgYWxtb3N0IG5ldmVyIHRlc3RlZC4gIFRoZXkgYXJlIHJlYWxseSBvbmx5CittZWFuaW5nZnVsIG9uIDY0LWJpdCBidWlsZHMgb24gbWFjaGluZXMgd2l0aCBhICpsb3QqIG9mIG1lbW9yeSwgYnV0IHRoZQordGVzdHMgYXJlIGFsd2F5cyBydW4sIHVzdWFsbHkgd2l0aCB2ZXJ5IGxvdyBtZW1vcnkgbGltaXRzIHRvIG1ha2Ugc3VyZSB0aGUKK3Rlc3RzIHRoZW1zZWx2ZXMgZG9uJ3Qgc3VmZmVyIGZyb20gYml0cm90LiAgVG8gcnVuIHRoZW0gZm9yIHJlYWwsIHBhc3MgYQoraGlnaCBtZW1vcnkgbGltaXQgdG8gcmVncnRlc3QsIHdpdGggdGhlIC1NIG9wdGlvbi4KKyIiIgorCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMUcsIF8yRywgXzRHCiAKQEAgLTYsMjAgKzE2LDM1IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgZnVuY3Rvb2xzCiAKKyMgVGhlc2UgdGVzdHMgYWxsIHVzZSBvbmUgb2YgdGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9ycyB0byBpbmRpY2F0ZSBob3cgbXVjaAorIyBtZW1vcnkgdGhleSB1c2UgYW5kIGhvdyBtdWNoIG1lbW9yeSB0aGV5IG5lZWQgdG8gYmUgZXZlbiBtZWFuaW5nZnVsLiAgVGhlCisjIGRlY29yYXRvcnMgdGFrZSB0d28gYXJndW1lbnRzOiBhICdtZW11c2UnIGluZGljYXRvciBkZWNsYXJpbmcKKyMgKGFwcHJveGltYXRlKSBieXRlcyBwZXIgc2l6ZS11bml0IHRoZSB0ZXN0IHdpbGwgdXNlIChhdCBwZWFrIHVzYWdlKSwgYW5kIGEKKyMgJ21pbnNpemUnIGluZGljYXRvciBkZWNsYXJpbmcgYSBtaW5pbXVtICp1c2VmdWwqIHNpemUuICBBIHRlc3QgdGhhdAorIyBhbGxvY2F0ZXMgYSBieXRlc3RyaW5nIHRvIHRlc3QgdmFyaW91cyBvcGVyYXRpb25zIG5lYXIgdGhlIGVuZCB3aWxsIGhhdmUgYQorIyBtaW5zaXplIG9mIGF0IGxlYXN0IDJHYiAob3IgaXQgd291bGRuJ3QgcmVhY2ggdGhlIDMyLWJpdCBsaW1pdCwgc28gdGhlCisjIHRlc3Qgd291bGRuJ3QgYmUgdmVyeSB1c2VmdWwpIGFuZCBhIG1lbXVzZSBvZiAxIChvbmUgYnl0ZSBwZXIgc2l6ZS11bml0LAorIyBpZiBpdCBhbGxvY2F0ZXMgb25seSBvbmUgYmlnIHN0cmluZyBhdCBhIHRpbWUuKQorIworIyBXaGVuIHJ1biB3aXRoIGEgbWVtb3J5IGxpbWl0IHNldCwgYm90aCBkZWNvcmF0b3JzIHNraXAgdGVzdHMgdGhhdCBuZWVkCisjIG1vcmUgbWVtb3J5IHRoYW4gYXZhaWxhYmxlIHRvIGJlIG1lYW5pbmdmdWwuICBUaGUgcHJlY2lzaW9uYmlnbWVtdGVzdCB3aWxsCisjIGFsd2F5cyBwYXNzIG1pbnNpemUgYXMgc2l6ZSwgZXZlbiBpZiB0aGVyZSBpcyBtdWNoIG1vcmUgbWVtb3J5IGF2YWlsYWJsZS4KKyMgVGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9yIHdpbGwgc2NhbGUgc2l6ZSB1cHdhcmQgdG8gZmlsbCBhdmFpbGFibGUgbWVtb3J5LgorIwogIyBCaWdtZW0gdGVzdGluZyBob3VzZXJ1bGVzOgogIwogIyAgLSBUcnkgbm90IHRvIGFsbG9jYXRlIHRvbyBtYW55IGxhcmdlIG9iamVjdHMuIEl0J3Mgb2theSB0byByZWx5IG9uCi0jICAgIHJlZmNvdW50aW5nIHNlbWFudGljcywgYnV0IGRvbid0IGZvcmdldCB0aGF0ICdzID0gY3JlYXRlX2xhcmdlc3RyaW5nKCknCisjICAgIHJlZmNvdW50aW5nIHNlbWFudGljcywgYW5kIGRvbid0IGZvcmdldCB0aGF0ICdzID0gY3JlYXRlX2xhcmdlc3RyaW5nKCknCiAjICAgIGRvZXNuJ3QgcmVsZWFzZSB0aGUgb2xkICdzJyAoaWYgaXQgZXhpc3RzKSB1bnRpbCB3ZWxsIGFmdGVyIGl0cyBuZXcKICMgICAgdmFsdWUgaGFzIGJlZW4gY3JlYXRlZC4gVXNlICdkZWwgcycgYmVmb3JlIHRoZSBjcmVhdGVfbGFyZ2VzdHJpbmcgY2FsbC4KICMKLSMgIC0gRG8gKm5vdCogY29tcGFyZSBsYXJnZSBvYmplY3RzIHVzaW5nIGFzc2VydEVxdWFsIG9yIHNpbWlsYXIuIEl0J3MgYQotIyAgICBsZW5ndGh5IG9wZXJhdGlvbiBhbmQgdGhlIGVycm9ybWVzc2FnZSB3aWxsIGJlIHV0dGVybHkgdXNlbGVzcyBkdWUgdG8KLSMgICAgaXRzIHNpemUuIFRvIG1ha2Ugc3VyZSB3aGV0aGVyIGEgcmVzdWx0IGhhcyB0aGUgcmlnaHQgY29udGVudHMsIGJldHRlcgotIyAgICB0byB1c2UgdGhlIHN0cmlwIG9yIGNvdW50IG1ldGhvZHMsIG9yIGNvbXBhcmUgbWVhbmluZ2Z1bCBzbGljZXMuCisjICAtIERvICpub3QqIGNvbXBhcmUgbGFyZ2Ugb2JqZWN0cyB1c2luZyBhc3NlcnRFcXVhbCwgYXNzZXJ0SW4gb3Igc2ltaWxhci4KKyMgICAgSXQncyBhIGxlbmd0aHkgb3BlcmF0aW9uIGFuZCB0aGUgZXJyb3JtZXNzYWdlIHdpbGwgYmUgdXR0ZXJseSB1c2VsZXNzCisjICAgIGR1ZSB0byBpdHMgc2l6ZS4gIFRvIG1ha2Ugc3VyZSB3aGV0aGVyIGEgcmVzdWx0IGhhcyB0aGUgcmlnaHQgY29udGVudHMsCisjICAgIGJldHRlciB0byB1c2UgdGhlIHN0cmlwIG9yIGNvdW50IG1ldGhvZHMsIG9yIGNvbXBhcmUgbWVhbmluZ2Z1bCBzbGljZXMuCiAjCiAjICAtIERvbid0IGZvcmdldCB0byB0ZXN0IGZvciBsYXJnZSBpbmRpY2VzLCBvZmZzZXRzIGFuZCByZXN1bHRzIGFuZCBzdWNoLAotIyAgICBpbiBhZGRpdGlvbiB0byBsYXJnZSBzaXplcy4KKyMgICAgaW4gYWRkaXRpb24gdG8gbGFyZ2Ugc2l6ZXMuIEFueXRoaW5nIHRoYXQgcHJvYmVzIHRoZSAzMi1iaXQgYm91bmRhcnkuCiAjCiAjICAtIFdoZW4gcmVwZWF0aW5nIGFuIG9iamVjdCAoc2F5LCBhIHN1YnN0cmluZywgb3IgYSBzbWFsbCBsaXN0KSB0byBjcmVhdGUKICMgICAgYSBsYXJnZSBvYmplY3QsIG1ha2UgdGhlIHN1Ym9iamVjdCBvZiBhIGxlbmd0aCB0aGF0IGlzIG5vdCBhIHBvd2VyIG9mCkBAIC0zNywxMyArNjIsMTQgQEAKICMgZmFpbCBhcyB3ZWxsLiBJIGRvIG5vdCBrbm93IHdoZXRoZXIgaXQgaXMgZHVlIHRvIG1lbW9yeSBmcmFnbWVudGF0aW9uCiAjIGlzc3Vlcywgb3Igb3RoZXIgc3BlY2lmaWNzIG9mIHRoZSBwbGF0Zm9ybSBtYWxsb2MoKSByb3V0aW5lLgogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCit1Y3MyX2NoYXJfc2l6ZSA9IDIKK3VjczRfY2hhcl9zaXplID0gNAogCiAKIGNsYXNzIEJhc2VTdHJUZXN0OgogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQotICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IHNlbGYuZnJvbV9sYXRpbjEoJyBhYmMgZGVmIGdoaScpCiAgICAgICAgIHMgPSBfKCctJykgKiBzaXplICsgU1VCU1RSCkBAIC05Miw3ICsxMTgsNyBAQAogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzID0gXygnLScpICogc2l6ZQogICAgICAgICB0YWJzaXplID0gOAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZXhwYW5kdGFicygpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5leHBhbmR0YWJzKCkgPT0gcykKICAgICAgICAgZGVsIHMKICAgICAgICAgc2xlbiwgcmVtYWluZGVyID0gZGl2bW9kKHNpemUsIHRhYnNpemUpCiAgICAgICAgIHMgPSBfKCcgICAgICAgXHQnKSAqIHNsZW4KQEAgLTM0Nyw3ICszNzMsNyBAQAogICAgICMgc3VmZmVyIGZvciB0aGUgbGlzdCBzaXplLiAoT3RoZXJ3aXNlLCBpdCdkIGNvc3QgYW5vdGhlciA0OCB0aW1lcwogICAgICMgc2l6ZSBpbiBieXRlcyEpIE5ldmVydGhlbGVzcywgYSBsaXN0IG9mIHNpemUgdGFrZXMKICAgICAjIDgqc2l6ZSBieXRlcy4KLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDUsIG1lbXVzZT0xMCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDUsIG1lbXVzZT0yICogYXNjaWlfY2hhcl9zaXplICsgOCkKICAgICBkZWYgdGVzdF9zcGxpdF9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgcyA9IF8oJyBhJykgKiBzaXplICsgXygnICcpCkBAIC0zNjYsOSArMzkyLDkgQEAKICAgICAgICAgIyB0YWtlIHVwIGFuIGlub3JkaW5hdGUgYW1vdW50IG9mIG1lbW9yeQogICAgICAgICBjaHVua3NpemUgPSBpbnQoc2l6ZSAqKiAwLjUgKyAyKSAvLyAyCiAgICAgICAgIFNVQlNUUiA9IF8oJyAnKSAqIGNodW5rc2l6ZSArIF8oJ1xuJykgKyBfKCcgJykgKiBjaHVua3NpemUgKyBfKCdcclxuJykKLSAgICAgICAgcyA9IFNVQlNUUiAqIGNodW5rc2l6ZQorICAgICAgICBzID0gU1VCU1RSICogKGNodW5rc2l6ZSAqIDIpCiAgICAgICAgIGwgPSBzLnNwbGl0bGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgY2h1bmtzaXplICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obCksIGNodW5rc2l6ZSAqIDQpCiAgICAgICAgIGV4cGVjdGVkID0gXygnICcpICogY2h1bmtzaXplCiAgICAgICAgIGZvciBpdGVtIGluIGw6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0sIGV4cGVjdGVkKQpAQCAtMzk0LDggKzQyMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCBzaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc3RyaXAoKSwgU1VCU1RSLnN0cmlwKCkpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCJhQmNEZUZHMTIuJ1x4YTlceDAwIikKICAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKQEAgLTQwNiw4ICs0MzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbOnN1YmxlbiAqIDNdLCBTVUJTVFIuc3dhcGNhc2UoKSAqIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stc3VibGVuICogMzpdLCBTVUJTVFIuc3dhcGNhc2UoKSAqIDMpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCdTcGFhSEFhYUFhaGFtJykKICAgICAgICAgcyA9IFNVQlNUUiAqIChzaXplIC8vIGxlbihTVUJTVFIpICsgMikKQEAgLTQxOSwxNCArNDQzLDcgQEAKICAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oJ2Faei56LkFhei4nKQotICAgICAgICBpZiBpc2luc3RhbmNlKFNVQlNUUiwgc3RyKToKLSAgICAgICAgICAgIHRyYW5zID0gewotICAgICAgICAgICAgICAgIG9yZChfKCcuJykpOiBfKCctJyksCi0gICAgICAgICAgICAgICAgb3JkKF8oJ2EnKSk6IF8oJyEnKSwKLSAgICAgICAgICAgICAgICBvcmQoXygnWicpKTogXygnJCcpLAotICAgICAgICAgICAgfQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJhbnMgPSBieXRlcy5tYWtldHJhbnMoYicuYVonLCBiJy0hJCcpCisgICAgICAgIHRyYW5zID0gYnl0ZXMubWFrZXRyYW5zKGInLmFaJywgYictISQnKQogICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQogICAgICAgICByZXBlYXRzID0gc2l6ZSAvLyBzdWJsZW4gKyAyCiAgICAgICAgIHMgPSBTVUJTVFIgKiByZXBlYXRzCkBAIC01MTksMTkgKzUzNiwxOSBAQAogICAgICAgICBlZGdlID0gXygnLScpICogKHNpemUgLy8gMikKICAgICAgICAgcyA9IF8oJycpLmpvaW4oW2VkZ2UsIFNVQlNUUiwgZWRnZV0pCiAgICAgICAgIGRlbCBlZGdlCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oU1VCU1RSLCBzKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKFNVQlNUUiAqIDIsIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oXygnLScpLCBzKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKF8oJ2EnKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFNVQlNUUiBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFNVQlNUUiAqIDIgaW4gcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF8oJy0nKSBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF8oJ2EnKSBpbiBzKQogICAgICAgICBzICs9IF8oJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEluKF8oJ2EnKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF8oJ2EnKSBpbiBzKQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPTIpCiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgczEgPSBfKCctJykgKiBzaXplCiAgICAgICAgIHMyID0gXygnLScpICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMxID09IHMyKQogICAgICAgICBkZWwgczIKICAgICAgICAgczIgPSBzMSArIF8oJ2EnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMxID09IHMyKQpAQCAtNTUyLDcgKzU2OSw3IEBACiAgICAgICAgIGgxID0gaGFzaChzKQogICAgICAgICBkZWwgcwogICAgICAgICBzID0gXygnXHgwMCcpICogKHNpemUgKyAxKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGgxID09IGhhc2gocykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaDEsIGhhc2gocykpCiAKIAogY2xhc3MgU3RyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgpAQCAtNTYzLDcgKzU4MCw2IEBACiAgICAgZGVmIGJhc2ljX2VuY29kZV90ZXN0KHNlbGYsIHNpemUsIGVuYywgYz0nLicsIGV4cGVjdGVkc2l6ZT1Ob25lKToKICAgICAgICAgaWYgZXhwZWN0ZWRzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZHNpemUgPSBzaXplCi0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IGMgKiBzaXplCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmVuY29kZShlbmMpKSwgZXhwZWN0ZWRzaXplKQpAQCAtNTgyLDQ4ICs1OTgsNjQgQEAKICAgICAgICAgICAgICAgICBtZW11c2UgPSBtZXRoLm1lbXVzZQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtZXRoLm1lbXVzZSA9IGNoYXJhY3Rlcl9zaXplICogbWVtdXNlCisgICAgICAgICAgICBtZXRoLm1lbXVzZSA9IGFzY2lpX2NoYXJfc2l6ZSAqIG1lbXVzZQogICAgICAgICAgICAgc2VsZi5fYWRqdXN0ZWRbbmFtZV0gPSBtZW11c2UKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIG5hbWUsIG1lbXVzZSBpbiBzZWxmLl9hZGp1c3RlZC5pdGVtcygpOgogICAgICAgICAgICAgZ2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lKS5tZW11c2UgPSBtZW11c2UKIAotICAgICMgdGhlIHV0ZjggZW5jb2RlciBwcmVhbGxvY2F0ZXMgYmlnIHRpbWUgKDR4IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycykKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDQpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3Rfc3dhcGNhc2Uoc2l6ZSkKKworICAgICMgTWFueSBjb2RlY3MgY29udmVydCB0byB0aGUgbGVnYWN5IHJlcHJlc2VudGF0aW9uIGZpcnN0LCBleHBsYWluaW5nCisgICAgIyB3aHkgd2UgYWRkICd1Y3M0X2NoYXJfc2l6ZScgdG8gdGhlICdtZW11c2UnIGJlbG93LgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYtOCcpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA2ICsgMiwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA2ICsgMiwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIHVjczRfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGVfcmF3X3VuaWNvZGVfZXNjYXBlKHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAncmF3X3VuaWNvZGVfZXNjYXBlJykKICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIGFjY2VwdGFibGUgb24gMzItYml0CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1ICsgNzAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSArIDcwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgdWNzNF9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV91dGY3KHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmNycpCiAgICAgICAgIGV4Y2VwdCBNZW1vcnlFcnJvcjoKICAgICAgICAgICAgIHBhc3MgIyBhY2NlcHRhYmxlIG9uIDMyLWJpdAogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNCArIDUsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDQpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNCArIDUsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyB1Y3M0X2NoYXJfc2l6ZSArIDQpCiAgICAgZGVmIHRlc3RfZW5jb2RlX3V0ZjMyKHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmMzInLCBleHBlY3RlZHNpemU9NCpzaXplKzQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmMzInLCBleHBlY3RlZHNpemU9NCAqIHNpemUgKyA0KQogICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgICAgICBwYXNzICMgYWNjZXB0YWJsZSBvbiAzMi1iaXQKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC0gMSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAtIDEsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV9hc2NpaShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ2FzY2lpJywgYz0nQScpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAyKQorICAgICMgc3RyICUgKC4uLikgdXNlcyBhIFB5X1VDUzQgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMiArIHVjczRfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmLCBzaXplKToKICAgICAgICAgcyA9ICctJyAqIHNpemUKICAgICAgICAgc2YgPSAnJXMnICUgKHMsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocyA9PSBzZikKICAgICAgICAgZGVsIHNmCiAgICAgICAgIHNmID0gJy4uJXMuLicgJSAocywpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNmKSwgbGVuKHMpICsgNCkKQEAgLTY0MCw3ICs2NzIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJy4nKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCctJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogMikKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMikKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJy0nICogc2l6ZQogICAgICAgICBzID0gcmVwcihzKQpAQCAtNjYxLDcgKzY5Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnXFwnKSwgc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogNSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogNSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJ1x4MDAnICogc2l6ZQogICAgICAgICBzID0gcmVwcihzKQpAQCAtNjcxLDcgKzcwMywxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJ1xcJyksIHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnMCcpLCBzaXplICogMikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiA3KQorICAgICMgYXNjaWkoKSBjYWxscyBlbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKSwgd2hpY2ggaXRzZWxmCisgICAgIyBjcmVhdGVzIGEgdGVtcG9yYXJ5IFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaW4gYWRkaXRpb24gdG8gdGhlCisgICAgIyBvcmlnaW5hbCAoUHlfVUNTMikgb25lCisgICAgIyBUaGVyZSdzIGFsc28gc29tZSBvdmVyYWxsb2NhdGlvbiB3aGVuIHJlc2l6aW5nIHRoZSBhc2NpaSgpIHJlc3VsdAorICAgICMgdGhhdCBpc24ndCB0YWtlbiBpbnRvIGFjY291bnQgaGVyZS4KKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPXVjczJfY2hhcl9zaXplICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjczRfY2hhcl9zaXplICsgYXNjaWlfY2hhcl9zaXplICogNikKICAgICBkZWYgdGVzdF91bmljb2RlX3JlcHIoc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgVXNlIGFuIGFzc2lnbmVkLCBidXQgbm90IHByaW50YWJsZSBjb2RlIHBvaW50LgogICAgICAgICAjIEl0IGlzIGluIHRoZSByYW5nZSBvZiB0aGUgbG93IHN1cnJvZ2F0ZXMgXHVEQzAwLVx1REZGRi4KQEAgLTY4Niw5ICs3MjQsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgciA9IHMgPSBOb25lCiAKLSAgICAjIFRoZSBjaGFyYWN0ZXIgdGFrZXMgNCBieXRlcyBldmVuIGluIFVDUy0yIGJ1aWxkcyBiZWNhdXNlIGl0IHdpbGwKLSAgICAjIGJlIGRlY29tcG9zZWQgaW50byBzdXJyb2dhdGVzLgotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9NCArIGNoYXJhY3Rlcl9zaXplICogOSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMiArIGFzY2lpX2NoYXJfc2l6ZSAqIDEwKQogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVwcl93aWRlKHNlbGYsIHNpemUpOgogICAgICAgICBjaGFyID0gIlxVMDAwMURDQkEiCiAgICAgICAgIHMgPSBjaGFyICogc2l6ZQpAQCAtNzAxLDM5ICs3MzcsNzYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHIgPSBzID0gTm9uZQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogKDYgKyAxKSkKLSAgICBkZWYgX3Rlc3RfdW5pY29kZV9yZXByX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICAjIFhYWCBub3Qgc3VyZSB3aGF0IHRoaXMgdGVzdCBpcyBhYm91dAotICAgICAgICBjaGFyID0gIlx1RENCQSIKLSAgICAgICAgcyA9IGNoYXIgKiBzaXplCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHIgPSByZXByKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocyA9PSBldmFsKHIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgciA9IHMgPSBOb25lCisgICAgIyBUaGUgb3JpZ2luYWwgdGVzdF90cmFuc2xhdGUgaXMgb3ZlcnJpZGVuIGhlcmUsIHNvIGFzIHRvIGdldCB0aGUKKyAgICAjIGNvcnJlY3Qgc2l6ZSBlc3RpbWF0ZTogc3RyLnRyYW5zbGF0ZSgpIHVzZXMgYW4gaW50ZXJtZWRpYXRlIFB5X1VDUzQKKyAgICAjIHJlcHJlc2VudGF0aW9uLgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyICsgdWNzNF9jaGFyX3NpemUpCisgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYsIHNpemUpOgorICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQorICAgICAgICBTVUJTVFIgPSBfKCdhWnouei5BYXouJykKKyAgICAgICAgdHJhbnMgPSB7CisgICAgICAgICAgICBvcmQoXygnLicpKTogXygnLScpLAorICAgICAgICAgICAgb3JkKF8oJ2EnKSk6IF8oJyEnKSwKKyAgICAgICAgICAgIG9yZChfKCdaJykpOiBfKCckJyksCisgICAgICAgIH0KKyAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKKyAgICAgICAgcmVwZWF0cyA9IHNpemUgLy8gc3VibGVuICsgMgorICAgICAgICBzID0gU1VCU1RSICogcmVwZWF0cworICAgICAgICBzID0gcy50cmFuc2xhdGUodHJhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCByZXBlYXRzICogc3VibGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbOnN1Ymxlbl0sIFNVQlNUUi50cmFuc2xhdGUodHJhbnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLXN1YmxlbjpdLCBTVUJTVFIudHJhbnNsYXRlKHRyYW5zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJy4nKSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudChfKCchJykpLCByZXBlYXRzICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJ3onKSksIHJlcGVhdHMgKiAzKQogCiAKIGNsYXNzIEJ5dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgogCiAgICAgZGVmIGZyb21fbGF0aW4xKHNlbGYsIHMpOgotICAgICAgICByZXR1cm4gcy5lbmNvZGUoImxhdGluMSIpCisgICAgICAgIHJldHVybiBzLmVuY29kZSgibGF0aW4tMSIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSBzZWxmLmZyb21fbGF0aW4xKCcuJykgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZGVjb2RlKCd1dGYtOCcpKSwgc2l6ZSkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3N3YXBjYXNlKHNpemUpCisKIAogY2xhc3MgQnl0ZWFycmF5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgogCiAgICAgZGVmIGZyb21fbGF0aW4xKHNlbGYsIHMpOgotICAgICAgICByZXR1cm4gYnl0ZWFycmF5KHMuZW5jb2RlKCJsYXRpbjEiKSkKKyAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShzLmVuY29kZSgibGF0aW4tMSIpKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gc2VsZi5mcm9tX2xhdGluMSgnLicpICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmRlY29kZSgndXRmLTgnKSksIHNpemUpCiAKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfdGl0bGUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9zd2FwY2FzZShzaXplKQorCiAgICAgdGVzdF9oYXNoID0gTm9uZQogICAgIHRlc3Rfc3BsaXRfbGFyZ2UgPSBOb25lCiAKQEAgLTc1Miw3ICs4MjUsNyBAQAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHQxID0gKCcnLCkgKiBzaXplCiAgICAgICAgIHQyID0gKCcnLCkgKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodDEgPT0gdDIpCiAgICAgICAgIGRlbCB0MgogICAgICAgICB0MiA9ICgnJywpICogKHNpemUgKyAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQxID09IHQyKQpAQCAtNzgzLDkgKzg1Niw5IEBACiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHQgPSAoMSwgMiwgMywgNCwgNSkgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCBzaXplICogNSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbig1LCB0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCgxLCAyLCAzLCA0LCA1KSwgdCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigwLCB0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoNSBpbiB0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgxLCAyLCAzLCA0LCA1KSBpbiB0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gdCkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT04KQogICAgIGRlZiB0ZXN0X2hhc2goc2VsZiwgc2l6ZSk6CkBAIC04NjksMTEgKzk0MiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLTU6XSwgJzAsIDApJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKQEAgLTg4OCw3ICs5NjEsNyBAQAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGwxID0gWycnXSAqIHNpemUKICAgICAgICAgbDIgPSBbJyddICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwxLCBsMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGwxID09IGwyKQogICAgICAgICBkZWwgbDIKICAgICAgICAgbDIgPSBbJyddICogKHNpemUgKyAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGwxID09IGwyKQpAQCAtOTM0LDkgKzEwMDcsOSBAQAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYsIHNpemUpOgogICAgICAgICBsID0gWzEsIDIsIDMsIDQsIDVdICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgc2l6ZSAqIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oNSwgbCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihbMSwgMiwgMywgNCwgNV0sIGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMCwgbCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDUgaW4gbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShbMSwgMiwgMywgNCwgNV0gaW4gbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGwpCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9OCkKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYsIHNpemUpOgpAQCAtMTA0NCwxMSArMTExNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLTU6XSwgJzAsIDBdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CmluZGV4IDFlOWU4ODguLjA0ZDhmOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQpAQCAtMjA4LDkgKzIwOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInt9KHshcn0pIHJhaXNlcyB7IXJ9Ii5mb3JtYXQoZnVuYywgZW1wdHksIGVycikpCiAKLSAgICBkZWYgdGVzdF91bmljb2RlX3N0cmluZ3Moc2VsZik6Ci0gICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBub3QgYWNjZXB0ZWQuCi0gICAgICAgIGZvciBmdW5jIGluIGFsbF9mdW5jdGlvbnM6CisgICAgZGVmIHRlc3RfdW5pY29kZV9iMmEoc2VsZik6CisgICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBub3QgYWNjZXB0ZWQgYnkgYjJhXyogZnVuY3Rpb25zLgorICAgICAgICBmb3IgZnVuYyBpbiBzZXQoYWxsX2Z1bmN0aW9ucykgLSBzZXQoYTJiX2Z1bmN0aW9ucykgfCB7J3JsZWRlY29kZV9ocXgnfToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIoYmluYXNjaWksIGZ1bmMpLCAidGVzdCIpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKQEAgLTIxOCw2ICsyMTgsMzQgQEAKICAgICAgICAgIyBjcmNfaHF4IG5lZWRzIDIgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmluYXNjaWkuY3JjX2hxeCwgInRlc3QiLCAwKQogCisgICAgZGVmIHRlc3RfdW5pY29kZV9hMmIoc2VsZik6CisgICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBhY2NlcHRlZCBieSBhMmJfKiBmdW5jdGlvbnMuCisgICAgICAgIE1BWF9BTEwgPSA0NQorICAgICAgICByYXcgPSBzZWxmLnJhd2RhdGFbOk1BWF9BTExdCisgICAgICAgIGZvciBmYSwgZmIgaW4gemlwKGEyYl9mdW5jdGlvbnMsIGIyYV9mdW5jdGlvbnMpOgorICAgICAgICAgICAgaWYgZmEgPT0gJ3JsZWRlY29kZV9ocXgnOgorICAgICAgICAgICAgICAgICMgVGFrZXMgbm9uLUFTQ0lJIGRhdGEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYTJiID0gZ2V0YXR0cihiaW5hc2NpaSwgZmEpCisgICAgICAgICAgICBiMmEgPSBnZXRhdHRyKGJpbmFzY2lpLCBmYikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhID0gYjJhKHNlbGYudHlwZTJ0ZXN0KHJhdykpCisgICAgICAgICAgICAgICAgYmluYXJ5X3JlcyA9IGEyYihhKQorICAgICAgICAgICAgICAgIGEgPSBhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcyA9IGEyYihhKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fS97fSBjb252ZXJzaW9uIHJhaXNlcyB7IXJ9Ii5mb3JtYXQoZmIsIGZhLCBlcnIpKQorICAgICAgICAgICAgaWYgZmIgPT0gJ2IyYV9ocXgnOgorICAgICAgICAgICAgICAgICMgYjJhX2hxeCByZXR1cm5zIGEgdHVwbGUKKyAgICAgICAgICAgICAgICByZXMsIF8gPSByZXMKKyAgICAgICAgICAgICAgICBiaW5hcnlfcmVzLCBfID0gYmluYXJ5X3JlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHJhdywgInt9L3t9IGNvbnZlcnNpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInshcn0gIT0geyFyfSIuZm9ybWF0KGZiLCBmYSwgcmVzLCByYXcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIGJpbmFyeV9yZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmVzLCBieXRlcykKKyAgICAgICAgICAgICMgbm9uLUFTQ0lJIHN0cmluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYTJiLCAiXHg4MCIpCisKIAogY2xhc3MgQXJyYXlCaW5BU0NJSVRlc3QoQmluQVNDSUlUZXN0KToKICAgICBkZWYgdHlwZTJ0ZXN0KHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaXNlY3QucHkgYi9MaWIvdGVzdC90ZXN0X2Jpc2VjdC5weQppbmRleCBmOTVlZDYzLi43YjliZDE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpc2VjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jpc2VjdC5weQpAQCAtMywyNSArMyw4IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CiAKLSMgV2UgZG8gYSBiaXQgb2YgdHJpY2tlcnkgaGVyZSB0byBiZSBhYmxlIHRvIHRlc3QgYm90aCB0aGUgQyBpbXBsZW1lbnRhdGlvbgotIyBhbmQgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgotCi0jIE1ha2UgaXQgaW1wb3NzaWJsZSB0byBpbXBvcnQgdGhlIEMgaW1wbGVtZW50YXRpb24gYW55bW9yZS4KLXN5cy5tb2R1bGVzWydfYmlzZWN0J10gPSAwCi0jIFdlIG11c3QgYWxzbyBoYW5kbGUgdGhlIGNhc2UgdGhhdCBiaXNlY3Qgd2FzIGltcG9ydGVkIGJlZm9yZS4KLWlmICdiaXNlY3QnIGluIHN5cy5tb2R1bGVzOgotICAgIGRlbCBzeXMubW9kdWxlc1snYmlzZWN0J10KLQotIyBOb3cgd2UgY2FuIGltcG9ydCB0aGUgbW9kdWxlIGFuZCBnZXQgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgotaW1wb3J0IGJpc2VjdCBhcyBweV9iaXNlY3QKLQotIyBSZXN0b3JlIGV2ZXJ5dGhpbmcgdG8gbm9ybWFsLgotZGVsIHN5cy5tb2R1bGVzWydfYmlzZWN0J10KLWRlbCBzeXMubW9kdWxlc1snYmlzZWN0J10KLQotIyBUaGlzIGlzIG5vdyB0aGUgbW9kdWxlIHdpdGggdGhlIEMgaW1wbGVtZW50YXRpb24uCi1pbXBvcnQgYmlzZWN0IGFzIGNfYmlzZWN0Ci0KK3B5X2Jpc2VjdCA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnYmlzZWN0JywgYmxvY2tlZD1bJ19iaXNlY3QnXSkKK2NfYmlzZWN0ID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdiaXNlY3QnLCBmcmVzaD1bJ19iaXNlY3QnXSkKIAogY2xhc3MgUmFuZ2Uob2JqZWN0KToKICAgICAiIiJBIHRyaXZpYWwgcmFuZ2UoKS1saWtlIG9iamVjdCB3aXRob3V0IGFueSBpbnRlZ2VyIHdpZHRoIGxpbWl0YXRpb25zLiIiIgpAQCAtNDUsOSArMjgsNyBAQAogICAgICAgICBzZWxmLmxhc3RfaW5zZXJ0ID0gaWR4LCBpdGVtCiAKIAotY2xhc3MgVGVzdEJpc2VjdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbW9kdWxlID0gTm9uZQotCitjbGFzcyBUZXN0QmlzZWN0OgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5wcmVjb21wdXRlZENhc2VzID0gWwogICAgICAgICAgICAgKHNlbGYubW9kdWxlLmJpc2VjdF9yaWdodCwgW10sIDEsIDApLApAQCAtMjE4LDE3ICsxOTksMTUgQEAKICAgICAgICAgc2VsZi5tb2R1bGUuaW5zb3J0KGE9ZGF0YSwgeD0yNSwgbG89MSwgaGk9MykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBbMTAsIDIwLCAyNSwgMjUsIDI1LCAzMCwgNDAsIDUwXSkKIAotY2xhc3MgVGVzdEJpc2VjdFB5dGhvbihUZXN0QmlzZWN0KToKK2NsYXNzIFRlc3RCaXNlY3RQeXRob24oVGVzdEJpc2VjdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X2Jpc2VjdAogCi1jbGFzcyBUZXN0QmlzZWN0QyhUZXN0QmlzZWN0KToKK2NsYXNzIFRlc3RCaXNlY3RDKFRlc3RCaXNlY3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX2Jpc2VjdAogCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLWNsYXNzIFRlc3RJbnNvcnQodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1vZHVsZSA9IE5vbmUKLQorY2xhc3MgVGVzdEluc29ydDoKICAgICBkZWYgdGVzdF92c0J1aWx0aW5Tb3J0KHNlbGYsIG49NTAwKToKICAgICAgICAgZnJvbSByYW5kb20gaW1wb3J0IGNob2ljZQogICAgICAgICBmb3IgaW5zb3J0ZWQgaW4gKGxpc3QoKSwgVXNlckxpc3QoKSk6CkBAIC0yNTUsMTUgKzIzNCwxNCBAQAogICAgICAgICBzZWxmLm1vZHVsZS5pbnNvcnRfcmlnaHQobHN0LCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFs1LCAxMF0sIGxzdC5kYXRhKQogCi1jbGFzcyBUZXN0SW5zb3J0UHl0aG9uKFRlc3RJbnNvcnQpOgorY2xhc3MgVGVzdEluc29ydFB5dGhvbihUZXN0SW5zb3J0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfYmlzZWN0CiAKLWNsYXNzIFRlc3RJbnNvcnRDKFRlc3RJbnNvcnQpOgorY2xhc3MgVGVzdEluc29ydEMoVGVzdEluc29ydCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfYmlzZWN0CiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotCiBjbGFzcyBMZW5Pbmx5OgogICAgICJEdW1teSBzZXF1ZW5jZSBjbGFzcyBkZWZpbmluZyBfX2xlbl9fIGJ1dCBub3QgX19nZXRpdGVtX18uIgogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgpAQCAtMjg0LDkgKzI2Miw3IEBACiAgICAgX19lcV9fID0gX19sdF9fCiAgICAgX19uZV9fID0gX19sdF9fCiAKLWNsYXNzIFRlc3RFcnJvckhhbmRsaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtb2R1bGUgPSBOb25lCi0KK2NsYXNzIFRlc3RFcnJvckhhbmRsaW5nOgogICAgIGRlZiB0ZXN0X25vbl9zZXF1ZW5jZShzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKHNlbGYubW9kdWxlLmJpc2VjdF9sZWZ0LCBzZWxmLm1vZHVsZS5iaXNlY3RfcmlnaHQsCiAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5pbnNvcnRfbGVmdCwgc2VsZi5tb2R1bGUuaW5zb3J0X3JpZ2h0KToKQEAgLTMxMyw1OCArMjg5LDQwIEBACiAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5pbnNvcnRfbGVmdCwgc2VsZi5tb2R1bGUuaW5zb3J0X3JpZ2h0KToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZiwgMTApCiAKLWNsYXNzIFRlc3RFcnJvckhhbmRsaW5nUHl0aG9uKFRlc3RFcnJvckhhbmRsaW5nKToKK2NsYXNzIFRlc3RFcnJvckhhbmRsaW5nUHl0aG9uKFRlc3RFcnJvckhhbmRsaW5nLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfYmlzZWN0CiAKLWNsYXNzIFRlc3RFcnJvckhhbmRsaW5nQyhUZXN0RXJyb3JIYW5kbGluZyk6CitjbGFzcyBUZXN0RXJyb3JIYW5kbGluZ0MoVGVzdEVycm9ySGFuZGxpbmcsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX2Jpc2VjdAogCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLWxpYnJlZnRlc3QgPSAiIiIKLUV4YW1wbGUgZnJvbSB0aGUgTGlicmFyeSBSZWZlcmVuY2U6ICBEb2MvbGlicmFyeS9iaXNlY3QucnN0CitjbGFzcyBUZXN0RG9jRXhhbXBsZToKKyAgICBkZWYgdGVzdF9ncmFkZXMoc2VsZik6CisgICAgICAgIGRlZiBncmFkZShzY29yZSwgYnJlYWtwb2ludHM9WzYwLCA3MCwgODAsIDkwXSwgZ3JhZGVzPSdGRENCQScpOgorICAgICAgICAgICAgaSA9IHNlbGYubW9kdWxlLmJpc2VjdChicmVha3BvaW50cywgc2NvcmUpCisgICAgICAgICAgICByZXR1cm4gZ3JhZGVzW2ldCiAKLVRoZSBiaXNlY3QoKSBmdW5jdGlvbiBpcyBnZW5lcmFsbHkgdXNlZnVsIGZvciBjYXRlZ29yaXppbmcgbnVtZXJpYyBkYXRhLgotVGhpcyBleGFtcGxlIHVzZXMgYmlzZWN0KCkgdG8gbG9vayB1cCBhIGxldHRlciBncmFkZSBmb3IgYW4gZXhhbSB0b3RhbAotKHNheSkgYmFzZWQgb24gYSBzZXQgb2Ygb3JkZXJlZCBudW1lcmljIGJyZWFrcG9pbnRzOiA4NSBhbmQgdXAgaXMgYW4gYEEnLAotNzUuLjg0IGlzIGEgYEInLCBldGMuCisgICAgICAgIHJlc3VsdCA9IFtncmFkZShzY29yZSkgZm9yIHNjb3JlIGluIFszMywgOTksIDc3LCA3MCwgODksIDkwLCAxMDBdXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWydGJywgJ0EnLCAnQycsICdDJywgJ0InLCAnQScsICdBJ10pCiAKLSAgICA+Pj4gZ3JhZGVzID0gIkZFRENCQSIKLSAgICA+Pj4gYnJlYWtwb2ludHMgPSBbMzAsIDQ0LCA2NiwgNzUsIDg1XQotICAgID4+PiBmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0Ci0gICAgPj4+IGRlZiBncmFkZSh0b3RhbCk6Ci0gICAgLi4uICAgICAgICAgICByZXR1cm4gZ3JhZGVzW2Jpc2VjdChicmVha3BvaW50cywgdG90YWwpXQotICAgIC4uLgotICAgID4+PiBncmFkZSg2NikKLSAgICAnQycKLSAgICA+Pj4gbGlzdChtYXAoZ3JhZGUsIFszMywgOTksIDc3LCA0NCwgMTIsIDg4XSkpCi0gICAgWydFJywgJ0EnLCAnQicsICdEJywgJ0YnLCAnQSddCisgICAgZGVmIHRlc3RfY29sb3JzKHNlbGYpOgorICAgICAgICBkYXRhID0gWygncmVkJywgNSksICgnYmx1ZScsIDEpLCAoJ3llbGxvdycsIDgpLCAoJ2JsYWNrJywgMCldCisgICAgICAgIGRhdGEuc29ydChrZXk9bGFtYmRhIHI6IHJbMV0pCisgICAgICAgIGtleXMgPSBbclsxXSBmb3IgciBpbiBkYXRhXQorICAgICAgICBiaXNlY3RfbGVmdCA9IHNlbGYubW9kdWxlLmJpc2VjdF9sZWZ0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVtiaXNlY3RfbGVmdChrZXlzLCAwKV0sICgnYmxhY2snLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhW2Jpc2VjdF9sZWZ0KGtleXMsIDEpXSwgKCdibHVlJywgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVtiaXNlY3RfbGVmdChrZXlzLCA1KV0sICgncmVkJywgNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YVtiaXNlY3RfbGVmdChrZXlzLCA4KV0sICgneWVsbG93JywgOCkpCiAKLSIiIgorY2xhc3MgVGVzdERvY0V4YW1wbGVQeXRob24oVGVzdERvY0V4YW1wbGUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBweV9iaXNlY3QKKworY2xhc3MgVGVzdERvY0V4YW1wbGVDKFRlc3REb2NFeGFtcGxlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19iaXNlY3QKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1fX3Rlc3RfXyA9IHsnbGlicmVmdGVzdCcgOiBsaWJyZWZ0ZXN0fQotCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2Jpc2VjdAotCi0gICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RCaXNlY3RQeXRob24sIFRlc3RCaXNlY3RDLAotICAgICAgICAgICAgICAgICAgICBUZXN0SW5zb3J0UHl0aG9uLCBUZXN0SW5zb3J0QywKLSAgICAgICAgICAgICAgICAgICAgVGVzdEVycm9ySGFuZGxpbmdQeXRob24sIFRlc3RFcnJvckhhbmRsaW5nQ10KLQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0gICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2Jpc2VjdCwgdmVyYm9zZSkKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5IGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CmluZGV4IGIyOTY4NzAuLjRiYWIyOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKQEAgLTMzMCw2ICszMzAsMTYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbikgYXMgZV9sZW46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVfYm9vbCksIHN0cihlX2xlbikpCiAKKyAgICBkZWYgdGVzdF9yZWFsX2FuZF9pbWFnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUucmVhbCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShUcnVlLnJlYWwpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShUcnVlLmltYWcpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UucmVhbCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS5pbWFnLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmFsc2UucmVhbCksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZhbHNlLmltYWcpLCBpbnQpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChCb29sVGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDdlMmEyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTAsMCArMSw0MjkxIEBACisjCisjIFRoZSBuZGFycmF5IG9iamVjdCBmcm9tIF90ZXN0YnVmZmVyLmMgaXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZgorIyBhIFBFUC0zMTE4IGJ1ZmZlciBwcm92aWRlci4gSXQgaXMgaW5kZXBlbmRlbnQgZnJvbSBOdW1QeSdzIG5kYXJyYXkKKyMgYW5kIHRoZSB0ZXN0cyBkb24ndCByZXF1aXJlIE51bVB5LgorIworIyBJZiBOdW1QeSBpcyBwcmVzZW50LCBzb21lIHRlc3RzIGNoZWNrIGJvdGggbmRhcnJheSBpbXBsZW1lbnRhdGlvbnMKKyMgYWdhaW5zdCBlYWNoIG90aGVyLgorIworIyBNb3N0IG5kYXJyYXkgdGVzdHMgYWxzbyBjaGVjayB0aGF0IG1lbW9yeXZpZXcobmRhcnJheSkgYmVoYXZlcyBpbgorIyB0aGUgc2FtZSB3YXkgYXMgdGhlIG9yaWdpbmFsLiBUaHVzLCBhIHN1YnN0YW50aWFsIHBhcnQgb2YgdGhlCisjIG1lbW9yeXZpZXcgdGVzdHMgaXMgbm93IGluIHRoaXMgbW9kdWxlLgorIworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucywgcHJvZHVjdAorZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlLCBjaG9pY2UKK2Zyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgoraW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgc3lzLCBhcnJheSwgaW8KK2Zyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAorZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCisKK3RyeToKKyAgICBmcm9tIF90ZXN0YnVmZmVyIGltcG9ydCAqCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbmRhcnJheSA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBzdHJ1Y3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBzdHJ1Y3QgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgY3R5cGVzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY3R5cGVzID0gTm9uZQorCit0cnk6CisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICBmcm9tIG51bXB5IGltcG9ydCBuZGFycmF5IGFzIG51bXB5X2FycmF5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbnVtcHlfYXJyYXkgPSBOb25lCisKKworU0hPUlRfVEVTVCA9IFRydWUKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgIFJhbmRvbSBsaXN0cyBieSBmb3JtYXQgc3BlY2lmaWVyCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBOYXRpdmUgZm9ybWF0IGNoYXJzIGFuZCB0aGVpciByYW5nZXMuCitOQVRJVkUgPSB7CisgICAgJz8nOjAsICdjJzowLCAnYic6MCwgJ0InOjAsCisgICAgJ2gnOjAsICdIJzowLCAnaSc6MCwgJ0knOjAsCisgICAgJ2wnOjAsICdMJzowLCAnbic6MCwgJ04nOjAsCisgICAgJ2YnOjAsICdkJzowLCAnUCc6MAorfQorCisjIE51bVB5IGRvZXMgbm90IGhhdmUgJ24nIG9yICdOJzoKK2lmIG51bXB5X2FycmF5OgorICAgIGRlbCBOQVRJVkVbJ24nXQorICAgIGRlbCBOQVRJVkVbJ04nXQorCitpZiBzdHJ1Y3Q6CisgICAgdHJ5OgorICAgICAgICAjIEFkZCAicVEiIGlmIHByZXNlbnQgaW4gbmF0aXZlIG1vZGUuCisgICAgICAgIHN0cnVjdC5wYWNrKCdRJywgMioqNjQtMSkKKyAgICAgICAgTkFUSVZFWydxJ10gPSAwCisgICAgICAgIE5BVElWRVsnUSddID0gMAorICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgICAgIHBhc3MKKworIyBTdGFuZGFyZCBmb3JtYXQgY2hhcnMgYW5kIHRoZWlyIHJhbmdlcy4KK1NUQU5EQVJEID0geworICAgICc/JzooMCwgMiksICAgICAgICAgICAgJ2MnOigwLCAxPDw4KSwKKyAgICAnYic6KC0oMTw8NyksIDE8PDcpLCAgICdCJzooMCwgMTw8OCksCisgICAgJ2gnOigtKDE8PDE1KSwgMTw8MTUpLCAnSCc6KDAsIDE8PDE2KSwKKyAgICAnaSc6KC0oMTw8MzEpLCAxPDwzMSksICdJJzooMCwgMTw8MzIpLAorICAgICdsJzooLSgxPDwzMSksIDE8PDMxKSwgJ0wnOigwLCAxPDwzMiksCisgICAgJ3EnOigtKDE8PDYzKSwgMTw8NjMpLCAnUSc6KDAsIDE8PDY0KSwKKyAgICAnZic6KC0oMTw8NjMpLCAxPDw2MyksICdkJzooLSgxPDwxMDIzKSwgMTw8MTAyMykKK30KKworZGVmIG5hdGl2ZV90eXBlX3JhbmdlKGZtdCk6CisgICAgIiIiUmV0dXJuIHJhbmdlIG9mIGEgbmF0aXZlIHR5cGUuIiIiCisgICAgaWYgZm10ID09ICdjJzoKKyAgICAgICAgbGggPSAoMCwgMjU2KQorICAgIGVsaWYgZm10ID09ICc/JzoKKyAgICAgICAgbGggPSAoMCwgMikKKyAgICBlbGlmIGZtdCA9PSAnZic6CisgICAgICAgIGxoID0gKC0oMTw8NjMpLCAxPDw2MykKKyAgICBlbGlmIGZtdCA9PSAnZCc6CisgICAgICAgIGxoID0gKC0oMTw8MTAyMyksIDE8PDEwMjMpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGV4cCBpbiAoMTI4LCAxMjcsIDY0LCA2MywgMzIsIDMxLCAxNiwgMTUsIDgsIDcpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKGZtdCwgKDE8PGV4cCktMSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGxoID0gKC0oMTw8ZXhwKSwgMTw8ZXhwKSBpZiBleHAgJiAxIGVsc2UgKDAsIDE8PGV4cCkKKyAgICByZXR1cm4gbGgKKworZm10ZGljdCA9IHsKKyAgICAnJzpOQVRJVkUsCisgICAgJ0AnOk5BVElWRSwKKyAgICAnPCc6U1RBTkRBUkQsCisgICAgJz4nOlNUQU5EQVJELAorICAgICc9JzpTVEFOREFSRCwKKyAgICAnISc6U1RBTkRBUkQKK30KKworaWYgc3RydWN0OgorICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICBmbXRkaWN0WydAJ11bZm10XSA9IG5hdGl2ZV90eXBlX3JhbmdlKGZtdCkKKworTUVNT1JZVklFVyA9IE5BVElWRS5jb3B5KCkKK0FSUkFZID0gTkFUSVZFLmNvcHkoKQorZm9yIGsgaW4gTkFUSVZFOgorICAgIGlmIG5vdCBrIGluICJiQmhIaUlsTGZkIjoKKyAgICAgICAgZGVsIEFSUkFZW2tdCisKK0JZVEVGTVQgPSBOQVRJVkUuY29weSgpCitmb3IgayBpbiBOQVRJVkU6CisgICAgaWYgbm90IGsgaW4gIkJiYyI6CisgICAgICAgIGRlbCBCWVRFRk1UW2tdCisKK2ZtdGRpY3RbJ20nXSAgPSBNRU1PUllWSUVXCitmbXRkaWN0WydAbSddID0gTUVNT1JZVklFVworZm10ZGljdFsnYSddICA9IEFSUkFZCitmbXRkaWN0WydiJ10gID0gQllURUZNVAorZm10ZGljdFsnQGInXSAgPSBCWVRFRk1UCisKKyMgQ2FwYWJpbGl0aWVzIG9mIHRoZSB0ZXN0IG9iamVjdHM6CitNT0RFID0gMAorTVVMVCA9IDEKK2NhcCA9IHsgICAgICAgICAjIGZvcm1hdCBjaGFycyAgICAgICAgICAgICAgICAgICMgbXVsdGlwbGllcgorICAnbmRhcnJheSc6ICAgIChbJycsICdAJywgJzwnLCAnPicsICc9JywgJyEnXSwgWycnLCAnMScsICcyJywgJzMnXSksCisgICdhcnJheSc6ICAgICAgKFsnYSddLCAgICAgICAgICAgICAgICAgICAgICAgICBbJyddKSwKKyAgJ251bXB5JzogICAgICAoWycnXSwgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJ10pLAorICAnbWVtb3J5dmlldyc6IChbJ0BtJywgJ20nXSwgICAgICAgICAgICAgICAgICAgWycnXSksCisgICdieXRlZm10JzogICAgKFsnQGInLCAnYiddLCAgICAgICAgICAgICAgICAgICBbJyddKSwKK30KKworZGVmIHJhbmRyYW5nZV9mbXQobW9kZSwgY2hhciwgb2JqKToKKyAgICAiIiJSZXR1cm4gcmFuZG9tIGl0ZW0gZm9yIGEgdHlwZSBzcGVjaWZpZWQgYnkgYSBtb2RlIGFuZCBhIHNpbmdsZQorICAgICAgIGZvcm1hdCBjaGFyYWN0ZXIuIiIiCisgICAgeCA9IHJhbmRyYW5nZSgqZm10ZGljdFttb2RlXVtjaGFyXSkKKyAgICBpZiBjaGFyID09ICdjJzoKKyAgICAgICAgeCA9IGJ5dGVzKGNocih4KSwgJ2xhdGluMScpCisgICAgaWYgY2hhciA9PSAnPyc6CisgICAgICAgIHggPSBib29sKHgpCisgICAgaWYgY2hhciA9PSAnZicgb3IgY2hhciA9PSAnZCc6CisgICAgICAgIHggPSBzdHJ1Y3QucGFjayhjaGFyLCB4KQorICAgICAgICB4ID0gc3RydWN0LnVucGFjayhjaGFyLCB4KVswXQorICAgIGlmIG9iaiA9PSAnbnVtcHknIGFuZCB4ID09IGInXHgwMCc6CisgICAgICAgICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkyNQorICAgICAgICB4ID0gYidceDAxJworICAgIHJldHVybiB4CisKK2RlZiBnZW5faXRlbShmbXQsIG9iaik6CisgICAgIiIiUmV0dXJuIHNpbmdsZSByYW5kb20gaXRlbS4iIiIKKyAgICBtb2RlLCBjaGFycyA9IGZtdC5zcGxpdCgnIycpCisgICAgeCA9IFtdCisgICAgZm9yIGMgaW4gY2hhcnM6CisgICAgICAgIHguYXBwZW5kKHJhbmRyYW5nZV9mbXQobW9kZSwgYywgb2JqKSkKKyAgICByZXR1cm4geFswXSBpZiBsZW4oeCkgPT0gMSBlbHNlIHR1cGxlKHgpCisKK2RlZiBnZW5faXRlbXMobiwgZm10LCBvYmopOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcmFuZG9tIGl0ZW1zIChvciBhIHNjYWxhcikuIiIiCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gZ2VuX2l0ZW0oZm10LCBvYmopCisgICAgbHN0ID0gWzBdICogbgorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBsc3RbaV0gPSBnZW5faXRlbShmbXQsIG9iaikKKyAgICByZXR1cm4gbHN0CisKK2RlZiBzdHJ1Y3RfaXRlbXMobiwgb2JqKToKKyAgICBtb2RlID0gY2hvaWNlKGNhcFtvYmpdW01PREVdKQorICAgIHhmbXQgPSBtb2RlICsgJyMnCisgICAgZm10ID0gbW9kZS5zdHJpcCgnYW1iJykKKyAgICBubWVtYiA9IHJhbmRyYW5nZSgyLCAxMCkgIyBudW1iZXIgb2Ygc3RydWN0IG1lbWJlcnMKKyAgICBmb3IgXyBpbiByYW5nZShubWVtYik6CisgICAgICAgIGNoYXIgPSBjaG9pY2UodHVwbGUoZm10ZGljdFttb2RlXSkpCisgICAgICAgIG11bHRpcGxpZXIgPSBjaG9pY2UoY2FwW29ial1bTVVMVF0pCisgICAgICAgIHhmbXQgKz0gKGNoYXIgKiBpbnQobXVsdGlwbGllciBpZiBtdWx0aXBsaWVyIGVsc2UgMSkpCisgICAgICAgIGZtdCArPSAobXVsdGlwbGllciArIGNoYXIpCisgICAgaXRlbXMgPSBnZW5faXRlbXMobiwgeGZtdCwgb2JqKQorICAgIGl0ZW0gPSBnZW5faXRlbSh4Zm10LCBvYmopCisgICAgcmV0dXJuIGZtdCwgaXRlbXMsIGl0ZW0KKworZGVmIHJhbmRpdGVtcyhuLCBvYmo9J25kYXJyYXknLCBtb2RlPU5vbmUsIGNoYXI9Tm9uZSk6CisgICAgIiIiUmV0dXJuIHJhbmRvbSBmb3JtYXQsIGl0ZW1zLCBpdGVtLiIiIgorICAgIGlmIG1vZGUgaXMgTm9uZToKKyAgICAgICAgbW9kZSA9IGNob2ljZShjYXBbb2JqXVtNT0RFXSkKKyAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgIGNoYXIgPSBjaG9pY2UodHVwbGUoZm10ZGljdFttb2RlXSkpCisgICAgbXVsdGlwbGllciA9IGNob2ljZShjYXBbb2JqXVtNVUxUXSkKKyAgICBmbXQgPSBtb2RlICsgJyMnICsgY2hhciAqIGludChtdWx0aXBsaWVyIGlmIG11bHRpcGxpZXIgZWxzZSAxKQorICAgIGl0ZW1zID0gZ2VuX2l0ZW1zKG4sIGZtdCwgb2JqKQorICAgIGl0ZW0gPSBnZW5faXRlbShmbXQsIG9iaikKKyAgICBmbXQgPSBtb2RlLnN0cmlwKCdhbWInKSArIG11bHRpcGxpZXIgKyBjaGFyCisgICAgcmV0dXJuIGZtdCwgaXRlbXMsIGl0ZW0KKworZGVmIGl0ZXJfbW9kZShuLCBvYmo9J25kYXJyYXknKToKKyAgICAiIiJJdGVyYXRlIHRocm91Z2ggc3VwcG9ydGVkIG1vZGUvY2hhciBjb21iaW5hdGlvbnMuIiIiCisgICAgZm9yIG1vZGUgaW4gY2FwW29ial1bTU9ERV06CisgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbbW9kZV06CisgICAgICAgICAgICB5aWVsZCByYW5kaXRlbXMobiwgb2JqLCBtb2RlLCBjaGFyKQorCitkZWYgaXRlcl9mb3JtYXQobml0ZW1zLCB0ZXN0b2JqPSduZGFycmF5Jyk6CisgICAgIiIiWWllbGQgKGZvcm1hdCwgaXRlbXMsIGl0ZW0pIGZvciBhbGwgcG9zc2libGUgbW9kZXMgYW5kIGZvcm1hdAorICAgICAgIGNoYXJhY3RlcnMgcGx1cyBvbmUgcmFuZG9tIGNvbXBvdW5kIGZvcm1hdCBzdHJpbmcuIiIiCisgICAgZm9yIHQgaW4gaXRlcl9tb2RlKG5pdGVtcywgdGVzdG9iaik6CisgICAgICAgIHlpZWxkIHQKKyAgICBpZiB0ZXN0b2JqICE9ICduZGFycmF5JzoKKyAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgIHlpZWxkIHN0cnVjdF9pdGVtcyhuaXRlbXMsIHRlc3RvYmopCisKKworZGVmIGlzX2J5dGVfZm9ybWF0KGZtdCk6CisgICAgcmV0dXJuICdjJyBpbiBmbXQgb3IgJ2InIGluIGZtdCBvciAnQicgaW4gZm10CisKK2RlZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICIiImZvcm1hdCBzdWl0YWJsZSBmb3IgbWVtb3J5dmlldyIiIgorICAgIHggPSBsZW4oZm10KQorICAgIHJldHVybiAoKHggPT0gMSBvciAoeCA9PSAyIGFuZCBmbXRbMF0gPT0gJ0AnKSkgYW5kCisgICAgICAgICAgICBmbXRbeC0xXSBpbiBNRU1PUllWSUVXKQorCitOT05fQllURV9GT1JNQVQgPSBbYyBmb3IgYyBpbiBmbXRkaWN0WydAJ10gaWYgbm90IGlzX2J5dGVfZm9ybWF0KGMpXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICBNdWx0aS1kaW1lbnNpb25hbCB0b2xpc3QoKSwgc2xpY2luZyBhbmQgc2xpY2UgYXNzaWdubWVudHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgYXRvbXAobHN0KToKKyAgICAiIiJUdXBsZSBpdGVtcyAocmVwcmVzZW50aW5nIHN0cnVjdHMpIGFyZSByZWdhcmRlZCBhcyBhdG9tcy4iIiIKKyAgICByZXR1cm4gbm90IGlzaW5zdGFuY2UobHN0LCBsaXN0KQorCitkZWYgbGlzdHAobHN0KToKKyAgICByZXR1cm4gaXNpbnN0YW5jZShsc3QsIGxpc3QpCisKK2RlZiBwcm9kKGxzdCk6CisgICAgIiIiUHJvZHVjdCBvZiBsaXN0IGVsZW1lbnRzLiIiIgorICAgIGlmIGxlbihsc3QpID09IDA6CisgICAgICAgIHJldHVybiAwCisgICAgeCA9IGxzdFswXQorICAgIGZvciB2IGluIGxzdFsxOl06CisgICAgICAgIHggKj0gdgorICAgIHJldHVybiB4CisKK2RlZiBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCBsYXlvdXQpOgorICAgICIiIkNhbGN1bGF0ZSBzdHJpZGVzIG9mIGEgY29udGlndW91cyBhcnJheS4gTGF5b3V0IGlzICdDJyBvcgorICAgICAgICdGJyAoRm9ydHJhbikuIiIiCisgICAgaWYgbmRpbSA9PSAwOgorICAgICAgICByZXR1cm4gKCkKKyAgICBpZiBsYXlvdXQgPT0gJ0MnOgorICAgICAgICBzdHJpZGVzID0gbGlzdChzaGFwZVsxOl0pICsgW2l0ZW1zaXplXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuZGltLTIsIC0xLCAtMSk6CisgICAgICAgICAgICBzdHJpZGVzW2ldICo9IHN0cmlkZXNbaSsxXQorICAgIGVsc2U6CisgICAgICAgIHN0cmlkZXMgPSBbaXRlbXNpemVdICsgbGlzdChzaGFwZVs6LTFdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBuZGltKToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gKj0gc3RyaWRlc1tpLTFdCisgICAgcmV0dXJuIHN0cmlkZXMKKworZGVmIF9jYShpdGVtcywgcyk6CisgICAgIiIiQ29udmVydCBmbGF0IGl0ZW0gbGlzdCB0byB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAgIG11bHRpZGltZW5zaW9uYWwgQyBhcnJheSB3aXRoIHNoYXBlICdzJy4iIiIKKyAgICBpZiBhdG9tcChpdGVtcyk6CisgICAgICAgIHJldHVybiBpdGVtcworICAgIGlmIGxlbihzKSA9PSAwOgorICAgICAgICByZXR1cm4gaXRlbXNbMF0KKyAgICBsc3QgPSBbMF0gKiBzWzBdCisgICAgc3RyaWRlID0gbGVuKGl0ZW1zKSAvLyBzWzBdIGlmIHNbMF0gZWxzZSAwCisgICAgZm9yIGkgaW4gcmFuZ2Uoc1swXSk6CisgICAgICAgIHN0YXJ0ID0gaSpzdHJpZGUKKyAgICAgICAgbHN0W2ldID0gX2NhKGl0ZW1zW3N0YXJ0OnN0YXJ0K3N0cmlkZV0sIHNbMTpdKQorICAgIHJldHVybiBsc3QKKworZGVmIF9mYShpdGVtcywgcyk6CisgICAgIiIiQ29udmVydCBmbGF0IGl0ZW0gbGlzdCB0byB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAgIG11bHRpZGltZW5zaW9uYWwgRm9ydHJhbiBhcnJheSB3aXRoIHNoYXBlICdzJy4iIiIKKyAgICBpZiBhdG9tcChpdGVtcyk6CisgICAgICAgIHJldHVybiBpdGVtcworICAgIGlmIGxlbihzKSA9PSAwOgorICAgICAgICByZXR1cm4gaXRlbXNbMF0KKyAgICBsc3QgPSBbMF0gKiBzWzBdCisgICAgc3RyaWRlID0gc1swXQorICAgIGZvciBpIGluIHJhbmdlKHNbMF0pOgorICAgICAgICBsc3RbaV0gPSBfZmEoaXRlbXNbaTo6c3RyaWRlXSwgc1sxOl0pCisgICAgcmV0dXJuIGxzdAorCitkZWYgY2FycmF5KGl0ZW1zLCBzaGFwZSk6CisgICAgaWYgbGlzdHAoaXRlbXMpIGFuZCBub3QgMCBpbiBzaGFwZSBhbmQgcHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKSIpCisgICAgcmV0dXJuIF9jYShpdGVtcywgc2hhcGUpCisKK2RlZiBmYXJyYXkoaXRlbXMsIHNoYXBlKToKKyAgICBpZiBsaXN0cChpdGVtcykgYW5kIG5vdCAwIGluIHNoYXBlIGFuZCBwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpIikKKyAgICByZXR1cm4gX2ZhKGl0ZW1zLCBzaGFwZSkKKworZGVmIGluZGljZXMoc2hhcGUpOgorICAgICIiIkdlbmVyYXRlIGFsbCBwb3NzaWJsZSB0dXBsZXMgb2YgaW5kaWNlcy4iIiIKKyAgICBpdGVyYWJsZXMgPSBbcmFuZ2UodikgZm9yIHYgaW4gc2hhcGVdCisgICAgcmV0dXJuIHByb2R1Y3QoKml0ZXJhYmxlcykKKworZGVmIGdldGluZGV4KG5kaW0sIGluZCwgc3RyaWRlcyk6CisgICAgIiIiQ29udmVydCBtdWx0aS1kaW1lbnNpb25hbCBpbmRleCB0byB0aGUgcG9zaXRpb24gaW4gdGhlIGZsYXQgbGlzdC4iIiIKKyAgICByZXQgPSAwCisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIHJldCArPSBzdHJpZGVzW2ldICogaW5kW2ldCisgICAgcmV0dXJuIHJldAorCitkZWYgdHJhbnNwb3NlKHNyYywgc2hhcGUpOgorICAgICIiIlRyYW5zcG9zZSBmbGF0IGl0ZW0gbGlzdCB0aGF0IGlzIHJlZ2FyZGVkIGFzIGEgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICBtYXRyaXggZGVmaW5lZCBieSBzaGFwZTogZGVzdC4uLltrXVtqXVtpXSA9IHNyY1tpXVtqXVtrXS4uLiAgIiIiCisgICAgaWYgbm90IHNoYXBlOgorICAgICAgICByZXR1cm4gc3JjCisgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICBzc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgMSwgJ0MnKQorICAgIGRzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlWzo6LTFdLCAxLCAnQycpCisgICAgZGVzdCA9IFswXSAqIGxlbihzcmMpCisgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgZnIgPSBnZXRpbmRleChuZGltLCBpbmQsIHNzdHJpZGVzKQorICAgICAgICB0byA9IGdldGluZGV4KG5kaW0sIGluZFs6Oi0xXSwgZHN0cmlkZXMpCisgICAgICAgIGRlc3RbdG9dID0gc3JjW2ZyXQorICAgIHJldHVybiBkZXN0CisKK2RlZiBfZmxhdHRlbihsc3QpOgorICAgICIiImZsYXR0ZW4gbGlzdCIiIgorICAgIGlmIGxzdCA9PSBbXToKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBbbHN0XQorICAgIHJldHVybiBfZmxhdHRlbihsc3RbMF0pICsgX2ZsYXR0ZW4obHN0WzE6XSkKKworZGVmIGZsYXR0ZW4obHN0KToKKyAgICAiIiJmbGF0dGVuIGxpc3Qgb3IgcmV0dXJuIHNjYWxhciIiIgorICAgIGlmIGF0b21wKGxzdCk6ICMgc2NhbGFyCisgICAgICAgIHJldHVybiBsc3QKKyAgICByZXR1cm4gX2ZsYXR0ZW4obHN0KQorCitkZWYgc2xpY2Vfc2hhcGUobHN0LCBzbGljZXMpOgorICAgICIiIkdldCB0aGUgc2hhcGUgb2YgbHN0IGFmdGVyIHNsaWNpbmc6IHNsaWNlcyBpcyBhIGxpc3Qgb2Ygc2xpY2UKKyAgICAgICBvYmplY3RzLiIiIgorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBbXQorICAgIHJldHVybiBbbGVuKGxzdFtzbGljZXNbMF1dKV0gKyBzbGljZV9zaGFwZShsc3RbMF0sIHNsaWNlc1sxOl0pCisKK2RlZiBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKToKKyAgICAiIiJNdWx0aS1kaW1lbnNpb25hbCBzbGljaW5nOiBzbGljZXMgaXMgYSBsaXN0IG9mIHNsaWNlIG9iamVjdHMuIiIiCisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIHJldHVybiBbbXVsdGlzbGljZShzdWJsc3QsIHNsaWNlc1sxOl0pIGZvciBzdWJsc3QgaW4gbHN0W3NsaWNlc1swXV1dCisKK2RlZiBtX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJNdWx0aS1kaW1lbnNpb25hbCBzbGljZSBhc3NpZ25tZW50OiBsbHN0IGFuZCBybHN0IGFyZSB0aGUgb3BlcmFuZHMsCisgICAgICAgbHNsaWNlcyBhbmQgcnNsaWNlcyBhcmUgbGlzdHMgb2Ygc2xpY2Ugb2JqZWN0cy4gbGxzdCBhbmQgcmxzdCBtdXN0CisgICAgICAgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUuCisKKyAgICAgICBGb3IgYSB0d28tZGltZW5zaW9uYWwgZXhhbXBsZSwgdGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUHl0aG9uOgorCisgICAgICAgICBsbHN0WzA6MzoyLCAwOjM6Ml0gPSBybHN0WzE6MzoxLCAxOjM6MV0KKworICAgICAgIEluc3RlYWQgd2Ugd3JpdGU6CisKKyAgICAgICAgIGxzbGljZXMgPSBbc2xpY2UoMCwzLDIpLCBzbGljZSgwLDMsMildCisgICAgICAgICByc2xpY2VzID0gW3NsaWNlKDEsMywxKSwgc2xpY2UoMSwzLDEpXQorICAgICAgICAgbXVsdGlzbGljZV9hc3NpZ24obGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcykKKyAgICAiIiIKKyAgICBpZiBhdG9tcChybHN0KToKKyAgICAgICAgcmV0dXJuIHJsc3QKKyAgICBybHN0ID0gW21fYXNzaWduKGwsIHIsIGxzbGljZXNbMTpdLCByc2xpY2VzWzE6XSkKKyAgICAgICAgICAgIGZvciBsLCByIGluIHppcChsbHN0W2xzbGljZXNbMF1dLCBybHN0W3JzbGljZXNbMF1dKV0KKyAgICBsbHN0W2xzbGljZXNbMF1dID0gcmxzdAorICAgIHJldHVybiBsbHN0CisKK2RlZiBjbXBfc3RydWN0dXJlKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIkNvbXBhcmUgdGhlIHN0cnVjdHVyZSBvZiBsbHN0W2xzbGljZXNdIGFuZCBybHN0W3JzbGljZXNdLiIiIgorICAgIGxzaGFwZSA9IHNsaWNlX3NoYXBlKGxsc3QsIGxzbGljZXMpCisgICAgcnNoYXBlID0gc2xpY2Vfc2hhcGUocmxzdCwgcnNsaWNlcykKKyAgICBpZiAobGVuKGxzaGFwZSkgIT0gbGVuKHJzaGFwZSkpOgorICAgICAgICByZXR1cm4gLTEKKyAgICBmb3IgaSBpbiByYW5nZShsZW4obHNoYXBlKSk6CisgICAgICAgIGlmIGxzaGFwZVtpXSAhPSByc2hhcGVbaV06CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgbHNoYXBlW2ldID09IDA6CisgICAgICAgICAgICByZXR1cm4gMAorICAgIHJldHVybiAwCisKK2RlZiBtdWx0aXNsaWNlX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJSZXR1cm4gbGxzdCBhZnRlciBhc3NpZ25pbmc6IGxsc3RbbHNsaWNlc10gPSBybHN0W3JzbGljZXNdIiIiCisgICAgaWYgY21wX3N0cnVjdHVyZShsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKSA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMiKQorICAgIHJldHVybiBtX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tIHN0cnVjdHVyZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjCisjIFBFUC0zMTE4IGlzIHZlcnkgcGVybWlzc2l2ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvbnRlbnRzIG9mIGEKKyMgUHlfYnVmZmVyLiBJbiBwYXJ0aWN1bGFyOgorIworIyAgIC0gc2hhcGUgY2FuIGJlIHplcm8KKyMgICAtIHN0cmlkZXMgY2FuIGJlIGFueSBpbnRlZ2VyLCBpbmNsdWRpbmcgemVybworIyAgIC0gb2Zmc2V0IGNhbiBwb2ludCB0byBhbnkgbG9jYXRpb24gaW4gdGhlIHVuZGVybHlpbmcKKyMgICAgIG1lbW9yeSBibG9jaywgcHJvdmlkZWQgdGhhdCBpdCBpcyBhIG11bHRpcGxlIG9mCisjICAgICBpdGVtc2l6ZS4KKyMKKyMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gdGVzdCBhbmQgdmVyaWZ5IHJhbmRvbSBzdHJ1Y3R1cmVzCisjIGluIGZ1bGwgZ2VuZXJhbGl0eS4gQSBzdHJ1Y3R1cmUgaXMgdmFsaWQgaWZmIGl0IGZpdHMgaW4gdGhlCisjIHVuZGVybHlpbmcgbWVtb3J5IGJsb2NrLgorIworIyBUaGUgc3RydWN0dXJlICd0JyAoc2hvcnQgZm9yICd0dXBsZScpIGlzIGZ1bGx5IGRlZmluZWQgYnk6CisjCisjICAgdCA9IChtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KQorIworCitkZWYgdmVyaWZ5X3N0cnVjdHVyZShtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KToKKyAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcGFyYW1ldGVycyByZXByZXNlbnQgYSB2YWxpZCBhcnJheSB3aXRoaW4KKyAgICAgICB0aGUgYm91bmRzIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5OgorICAgICAgICAgICBjaGFyICptZW06IHN0YXJ0IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgbWVtbGVuOiBsZW5ndGggb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICBvZmZzZXQ6IChjaGFyICopYnVmIC0gbWVtCisgICAgIiIiCisgICAgaWYgb2Zmc2V0ICUgaXRlbXNpemU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG9mZnNldCA8IDAgb3Igb2Zmc2V0K2l0ZW1zaXplID4gbWVtbGVuOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBhbnkodiAlIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXMpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIG5kaW0gPD0gMDoKKyAgICAgICAgcmV0dXJuIG5kaW0gPT0gMCBhbmQgbm90IHNoYXBlIGFuZCBub3Qgc3RyaWRlcworICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBpbWluID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdIDw9IDApCisgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA+IDApCisKKyAgICByZXR1cm4gMCA8PSBvZmZzZXQraW1pbiBhbmQgb2Zmc2V0K2ltYXgraXRlbXNpemUgPD0gbWVtbGVuCisKK2RlZiBnZXRfaXRlbShsc3QsIGluZGljZXMpOgorICAgIGZvciBpIGluIGluZGljZXM6CisgICAgICAgIGxzdCA9IGxzdFtpXQorICAgIHJldHVybiBsc3QKKworZGVmIG1lbW9yeV9pbmRleChpbmRpY2VzLCB0KToKKyAgICAiIiJMb2NhdGlvbiBvZiBhbiBpdGVtIGluIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4iIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHAgPSBvZmZzZXQKKyAgICBmb3IgaSBpbiByYW5nZShuZGltKToKKyAgICAgICAgcCArPSBzdHJpZGVzW2ldKmluZGljZXNbaV0KKyAgICByZXR1cm4gcAorCitkZWYgaXNfb3ZlcmxhcHBpbmcodCk6CisgICAgIiIiVGhlIHN0cnVjdHVyZSAndCcgaXMgb3ZlcmxhcHBpbmcgaWYgYXQgbGVhc3Qgb25lIG1lbW9yeSBsb2NhdGlvbgorICAgICAgIGlzIHZpc2l0ZWQgdHdpY2Ugd2hpbGUgaXRlcmF0aW5nIHRocm91Z2ggYWxsIHBvc3NpYmxlIHR1cGxlcyBvZgorICAgICAgIGluZGljZXMuIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICB2aXNpdGVkID0gMTw8bWVtbGVuCisgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgaSA9IG1lbW9yeV9pbmRleChpbmQsIHQpCisgICAgICAgIGJpdCA9IDE8PGkKKyAgICAgICAgaWYgdmlzaXRlZCAmIGJpdDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHZpc2l0ZWQgfD0gYml0CisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgdmFsaWQsIG1heGRpbT01LCBtYXhzaGFwZT0xNiwgc2hhcGU9KCkpOgorICAgICIiIlJldHVybiByYW5kb20gc3RydWN0dXJlOgorICAgICAgICAgICAobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCkKKyAgICAgICBJZiAndmFsaWQnIGlzIHRydWUsIHRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgaXMgdmFsaWQsIG90aGVyd2lzZSBpbnZhbGlkLgorICAgICAgIElmICdzaGFwZScgaXMgZ2l2ZW4sIHVzZSB0aGF0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSByYW5kb20gc2hhcGUuCisgICAgIiIiCisgICAgaWYgbm90IHNoYXBlOgorICAgICAgICBuZGltID0gcmFuZHJhbmdlKG1heGRpbSsxKQorICAgICAgICBpZiAobmRpbSA9PSAwKToKKyAgICAgICAgICAgIGlmIHZhbGlkOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVtc2l6ZSwgaXRlbXNpemUsIG5kaW0sICgpLCAoKSwgMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuaXRlbXMgPSByYW5kcmFuZ2UoMSwgMTYrMSkKKyAgICAgICAgICAgICAgICBtZW1sZW4gPSBuaXRlbXMgKiBpdGVtc2l6ZQorICAgICAgICAgICAgICAgIG9mZnNldCA9IC1pdGVtc2l6ZSBpZiByYW5kcmFuZ2UoMikgPT0gMCBlbHNlIG1lbWxlbgorICAgICAgICAgICAgICAgIHJldHVybiBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCAoKSwgKCksIG9mZnNldAorCisgICAgICAgIG1pbnNoYXBlID0gMgorICAgICAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICAgICAgaWYgbiA+PSA5NSBhbmQgdmFsaWQ6CisgICAgICAgICAgICBtaW5zaGFwZSA9IDAKKyAgICAgICAgZWxpZiBuID49IDkwOgorICAgICAgICAgICAgbWluc2hhcGUgPSAxCisgICAgICAgIHNoYXBlID0gWzBdICogbmRpbQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKG5kaW0pOgorICAgICAgICAgICAgc2hhcGVbaV0gPSByYW5kcmFuZ2UobWluc2hhcGUsIG1heHNoYXBlKzEpCisgICAgZWxzZToKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKworICAgIG1heHN0cmlkZSA9IDUKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICB6ZXJvX3N0cmlkZSA9IFRydWUgaWYgbiA+PSA5NSBhbmQgbiAmIDEgZWxzZSBGYWxzZQorCisgICAgc3RyaWRlcyA9IFswXSAqIG5kaW0KKyAgICBzdHJpZGVzW25kaW0tMV0gPSBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgtbWF4c3RyaWRlLCBtYXhzdHJpZGUrMSkKKyAgICBpZiBub3QgemVyb19zdHJpZGUgYW5kIHN0cmlkZXNbbmRpbS0xXSA9PSAwOgorICAgICAgICBzdHJpZGVzW25kaW0tMV0gPSBpdGVtc2l6ZQorCisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbS0yLCAtMSwgLTEpOgorICAgICAgICBtYXhzdHJpZGUgKj0gc2hhcGVbaSsxXSBpZiBzaGFwZVtpKzFdIGVsc2UgMQorICAgICAgICBpZiB6ZXJvX3N0cmlkZToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gPSBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgtbWF4c3RyaWRlLCBtYXhzdHJpZGUrMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gPSAoKDEsLTEpW3JhbmRyYW5nZSgyKV0gKgorICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgxLCBtYXhzdHJpZGUrMSkpCisKKyAgICBpbWluID0gaW1heCA9IDAKKyAgICBpZiBub3QgMCBpbiBzaGFwZToKKyAgICAgICAgaW1pbiA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICAgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPiAwKQorCisgICAgbml0ZW1zID0gaW1heCAtIGltaW4KKyAgICBpZiB2YWxpZDoKKyAgICAgICAgb2Zmc2V0ID0gLWltaW4gKiBpdGVtc2l6ZQorICAgICAgICBtZW1sZW4gPSBvZmZzZXQgKyAoaW1heCsxKSAqIGl0ZW1zaXplCisgICAgZWxzZToKKyAgICAgICAgbWVtbGVuID0gKC1pbWluICsgaW1heCkgKiBpdGVtc2l6ZQorICAgICAgICBvZmZzZXQgPSAtaW1pbi1pdGVtc2l6ZSBpZiByYW5kcmFuZ2UoMikgPT0gMCBlbHNlIG1lbWxlbgorICAgIHJldHVybiBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0CisKK2RlZiByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbGlzdGxlbik6CisgICAgIiIiQ3JlYXRlIGEgcmFuZG9tIHNsaWNlIG9mIGxlbiBzbGljZWxlbiB0aGF0IGZpdHMgaW50byBsaXN0bGVuLiIiIgorICAgIG1heHN0YXJ0ID0gbGlzdGxlbiAtIHNsaWNlbGVuCisgICAgc3RhcnQgPSByYW5kcmFuZ2UobWF4c3RhcnQrMSkKKyAgICBtYXhzdGVwID0gKGxpc3RsZW4gLSBzdGFydCkgLy8gc2xpY2VsZW4gaWYgc2xpY2VsZW4gZWxzZSAxCisgICAgc3RlcCA9IHJhbmRyYW5nZSgxLCBtYXhzdGVwKzEpCisgICAgc3RvcCA9IHN0YXJ0ICsgc2xpY2VsZW4gKiBzdGVwCisgICAgcyA9IHNsaWNlKHN0YXJ0LCBzdG9wLCBzdGVwKQorICAgIF8sIF8sIF8sIGNvbnRyb2wgPSBzbGljZV9pbmRpY2VzKHMsIGxpc3RsZW4pCisgICAgaWYgY29udHJvbCAhPSBzbGljZWxlbjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgcmV0dXJuIHMKKworZGVmIHJhbmRzbGljZV9mcm9tX3NoYXBlKG5kaW0sIHNoYXBlKToKKyAgICAiIiJDcmVhdGUgdHdvIHNldHMgb2Ygc2xpY2VzIGZvciBhbiBhcnJheSB4IHdpdGggc2hhcGUgJ3NoYXBlJworICAgICAgIHN1Y2ggdGhhdCBzaGFwZW9mKHhbbHNsaWNlc10pID09IHNoYXBlb2YoeFtyc2xpY2VzXSkuIiIiCisgICAgbHNsaWNlcyA9IFswXSAqIG5kaW0KKyAgICByc2xpY2VzID0gWzBdICogbmRpbQorICAgIGZvciBuIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBsID0gc2hhcGVbbl0KKyAgICAgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UoMSwgbCsxKSBpZiBsID4gMCBlbHNlIDAKKyAgICAgICAgbHNsaWNlc1tuXSA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBsKQorICAgICAgICByc2xpY2VzW25dID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGwpCisgICAgcmV0dXJuIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKQorCitkZWYgcmFuZF9hbGlnbmVkX3NsaWNlcyhtYXhkaW09NSwgbWF4c2hhcGU9MTYpOgorICAgICIiIkNyZWF0ZSAobHNoYXBlLCByc2hhcGUsIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKSkgc3VjaCB0aGF0CisgICAgICAgc2hhcGVvZih4W2xzbGljZXNdKSA9PSBzaGFwZW9mKHlbcnNsaWNlc10pLCB3aGVyZSB4IGlzIGFuIGFycmF5CisgICAgICAgd2l0aCBzaGFwZSAnbHNoYXBlJyBhbmQgeSBpcyBhbiBhcnJheSB3aXRoIHNoYXBlICdyc2hhcGUnLiIiIgorICAgIG5kaW0gPSByYW5kcmFuZ2UoMSwgbWF4ZGltKzEpCisgICAgbWluc2hhcGUgPSAyCisgICAgbiA9IHJhbmRyYW5nZSgxMDApCisgICAgaWYgbiA+PSA5NToKKyAgICAgICAgbWluc2hhcGUgPSAwCisgICAgZWxpZiBuID49IDkwOgorICAgICAgICBtaW5zaGFwZSA9IDEKKyAgICBhbGxfcmFuZG9tID0gVHJ1ZSBpZiByYW5kcmFuZ2UoMTAwKSA+PSA4MCBlbHNlIEZhbHNlCisgICAgbHNoYXBlID0gWzBdKm5kaW07IHJzaGFwZSA9IFswXSpuZGltCisgICAgbHNsaWNlcyA9IFswXSpuZGltOyByc2xpY2VzID0gWzBdKm5kaW0KKworICAgIGZvciBuIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBzbWFsbCA9IHJhbmRyYW5nZShtaW5zaGFwZSwgbWF4c2hhcGUrMSkKKyAgICAgICAgYmlnID0gcmFuZHJhbmdlKG1pbnNoYXBlLCBtYXhzaGFwZSsxKQorICAgICAgICBpZiBiaWcgPCBzbWFsbDoKKyAgICAgICAgICAgIGJpZywgc21hbGwgPSBzbWFsbCwgYmlnCisKKyAgICAgICAgIyBDcmVhdGUgYSBzbGljZSB0aGF0IGZpdHMgdGhlIHNtYWxsZXIgdmFsdWUuCisgICAgICAgIGlmIGFsbF9yYW5kb206CisgICAgICAgICAgICBzdGFydCA9IHJhbmRyYW5nZSgtc21hbGwsIHNtYWxsKzEpCisgICAgICAgICAgICBzdG9wID0gcmFuZHJhbmdlKC1zbWFsbCwgc21hbGwrMSkKKyAgICAgICAgICAgIHN0ZXAgPSAoMSwtMSlbcmFuZHJhbmdlKDIpXSAqIHJhbmRyYW5nZSgxLCBzbWFsbCsyKQorICAgICAgICAgICAgc19zbWFsbCA9IHNsaWNlKHN0YXJ0LCBzdG9wLCBzdGVwKQorICAgICAgICAgICAgXywgXywgXywgc2xpY2VsZW4gPSBzbGljZV9pbmRpY2VzKHNfc21hbGwsIHNtYWxsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UoMSwgc21hbGwrMSkgaWYgc21hbGwgPiAwIGVsc2UgMAorICAgICAgICAgICAgc19zbWFsbCA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBzbWFsbCkKKworICAgICAgICAjIENyZWF0ZSBhIHNsaWNlIG9mIHRoZSBzYW1lIGxlbmd0aCBmb3IgdGhlIGJpZ2dlciB2YWx1ZS4KKyAgICAgICAgc19iaWcgPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgYmlnKQorICAgICAgICBpZiByYW5kcmFuZ2UoMikgPT0gMDoKKyAgICAgICAgICAgIHJzaGFwZVtuXSwgbHNoYXBlW25dID0gYmlnLCBzbWFsbAorICAgICAgICAgICAgcnNsaWNlc1tuXSwgbHNsaWNlc1tuXSA9IHNfYmlnLCBzX3NtYWxsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByc2hhcGVbbl0sIGxzaGFwZVtuXSA9IHNtYWxsLCBiaWcKKyAgICAgICAgICAgIHJzbGljZXNbbl0sIGxzbGljZXNbbl0gPSBzX3NtYWxsLCBzX2JpZworCisgICAgcmV0dXJuIGxzaGFwZSwgcnNoYXBlLCB0dXBsZShsc2xpY2VzKSwgdHVwbGUocnNsaWNlcykKKworZGVmIHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHQpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcmFuZG9tIGl0ZW1zIGZvciBzdHJ1Y3R1cmUgJ3QnIHdpdGggZm9ybWF0CisgICAgICAgJ2ZtdGNoYXInLiIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIF8sIF8sIF8sIF8gPSB0CisgICAgcmV0dXJuIGdlbl9pdGVtcyhtZW1sZW4vL2l0ZW1zaXplLCAnIycrZm10LCAnbnVtcHknKQorCitkZWYgbmRhcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0LCBmbGFncz0wKToKKyAgICAiIiJSZXR1cm4gbmRhcnJheSBmcm9tIHRoZSB0dXBsZSByZXR1cm5lZCBieSByYW5kX3N0cnVjdHVyZSgpIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICByZXR1cm4gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICBvZmZzZXQ9b2Zmc2V0LCBmbGFncz1ORF9XUklUQUJMRXxmbGFncykKKworZGVmIG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpOgorICAgICIiIlJldHVybiBudW1weV9hcnJheSBmcm9tIHRoZSB0dXBsZSByZXR1cm5lZCBieSByYW5kX3N0cnVjdHVyZSgpIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICBidWYgPSBieXRlYXJyYXkobWVtbGVuKQorICAgIGZvciBqLCB2IGluIGVudW1lcmF0ZShpdGVtcyk6CisgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBidWYsIGoqaXRlbXNpemUsIHYpCisgICAgcmV0dXJuIG51bXB5X2FycmF5KGJ1ZmZlcj1idWYsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPWZtdCwgb2Zmc2V0PW9mZnNldCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcgY2FzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgY2FzdF9pdGVtcyhleHBvcnRlciwgZm10LCBpdGVtc2l6ZSwgc2hhcGU9Tm9uZSk6CisgICAgIiIiSW50ZXJwcmV0IHRoZSByYXcgbWVtb3J5IG9mICdleHBvcnRlcicgYXMgYSBsaXN0IG9mIGl0ZW1zIHdpdGgKKyAgICAgICBzaXplICdpdGVtc2l6ZScuIElmIHNoYXBlPU5vbmUsIHRoZSBuZXcgc3RydWN0dXJlIGlzIGFzc3VtZWQgdG8KKyAgICAgICBiZSAxLUQgd2l0aCBuICogaXRlbXNpemUgPSBieXRlbGVuLiBJZiBzaGFwZSBpcyBnaXZlbiwgdGhlIHVzdWFsCisgICAgICAgY29uc3RyYWludCBmb3IgY29udGlndW91cyBhcnJheXMgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSA9IGJ5dGVsZW4KKyAgICAgICBhcHBsaWVzLiBPbiBzdWNjZXNzLCByZXR1cm4gKGl0ZW1zLCBzaGFwZSkuIElmIHRoZSBjb25zdHJhaW50cworICAgICAgIGNhbm5vdCBiZSBtZXQsIHJldHVybiAoTm9uZSwgTm9uZSkuIElmIGEgY2h1bmsgb2YgYnl0ZXMgaXMgaW50ZXJwcmV0ZWQKKyAgICAgICBhcyBOYU4gYXMgYSByZXN1bHQgb2YgZmxvYXQgY29udmVyc2lvbiwgcmV0dXJuICgnbmFuJywgTm9uZSkuIiIiCisgICAgYnl0ZWxlbiA9IGV4cG9ydGVyLm5ieXRlcworICAgIGlmIHNoYXBlOgorICAgICAgICBpZiBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplICE9IGJ5dGVsZW46CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgc2hhcGUKKyAgICBlbGlmIHNoYXBlID09IFtdOgorICAgICAgICBpZiBleHBvcnRlci5uZGltID09IDAgb3IgaXRlbXNpemUgIT0gYnl0ZWxlbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorICAgIGVsc2U6CisgICAgICAgIG4sIHIgPSBkaXZtb2QoYnl0ZWxlbiwgaXRlbXNpemUpCisgICAgICAgIHNoYXBlID0gW25dCisgICAgICAgIGlmIHIgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorCisgICAgbWVtID0gZXhwb3J0ZXIudG9ieXRlcygpCisgICAgYnl0ZWl0ZW1zID0gW21lbVtpOmkraXRlbXNpemVdIGZvciBpIGluIHJhbmdlKDAsIGxlbihtZW0pLCBpdGVtc2l6ZSldCisKKyAgICBpdGVtcyA9IFtdCisgICAgZm9yIHYgaW4gYnl0ZWl0ZW1zOgorICAgICAgICBpdGVtID0gc3RydWN0LnVucGFjayhmbXQsIHYpWzBdCisgICAgICAgIGlmIGl0ZW0gIT0gaXRlbToKKyAgICAgICAgICAgIHJldHVybiAnbmFuJywgc2hhcGUKKyAgICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0pCisKKyAgICByZXR1cm4gKGl0ZW1zLCBzaGFwZSkgaWYgc2hhcGUgIT0gW10gZWxzZSAoaXRlbXNbMF0sIHNoYXBlKQorCitkZWYgZ2VuY2FzdHNoYXBlcygpOgorICAgICIiIkdlbmVyYXRlIHNoYXBlcyB0byB0ZXN0IGNhc3RpbmcuIiIiCisgICAgZm9yIG4gaW4gcmFuZ2UoMzIpOgorICAgICAgICB5aWVsZCBbbl0KKyAgICBuZGltID0gcmFuZHJhbmdlKDQsIDYpCisgICAgbWluc2hhcGUgPSAxIGlmIHJhbmRyYW5nZSgxMDApID4gODAgZWxzZSAyCisgICAgeWllbGQgW3JhbmRyYW5nZShtaW5zaGFwZSwgNSkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisgICAgbmRpbSA9IHJhbmRyYW5nZSgyLCA0KQorICAgIG1pbnNoYXBlID0gMSBpZiByYW5kcmFuZ2UoMTAwKSA+IDgwIGVsc2UgMgorICAgIHlpZWxkIFtyYW5kcmFuZ2UobWluc2hhcGUsIDUpIGZvciBfIGluIHJhbmdlKG5kaW0pXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdHVhbCB0ZXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBnZW5zbGljZXMobik6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHNsaWNlcyBmb3IgYSBzaW5nbGUgZGltZW5zaW9uLiIiIgorICAgIHJldHVybiBwcm9kdWN0KHJhbmdlKC1uLCBuKzEpLCByYW5nZSgtbiwgbisxKSwgcmFuZ2UoLW4sIG4rMSkpCisKK2RlZiBnZW5zbGljZXNfbmRpbShuZGltLCBzaGFwZSk6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHNsaWNlIHR1cGxlcyBmb3IgJ3NoYXBlJy4iIiIKKyAgICBpdGVyYWJsZXMgPSBbZ2Vuc2xpY2VzKHNoYXBlW25dKSBmb3IgbiBpbiByYW5nZShuZGltKV0KKyAgICByZXR1cm4gcHJvZHVjdCgqaXRlcmFibGVzKQorCitkZWYgcnNsaWNlKG4sIGFsbG93X2VtcHR5PUZhbHNlKToKKyAgICAiIiJHZW5lcmF0ZSByYW5kb20gc2xpY2UgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbiBvZiBsZW5ndGggbi4KKyAgICAgICBJZiB6ZXJvPVRydWUsIHRoZSBzbGljZXMgbWF5IGJlIGVtcHR5LCBvdGhlcndpc2UgdGhleSB3aWxsCisgICAgICAgYmUgbm9uLWVtcHR5LiIiIgorICAgIG1pbmxlbiA9IDAgaWYgYWxsb3dfZW1wdHkgb3IgbiA9PSAwIGVsc2UgMQorICAgIHNsaWNlbGVuID0gcmFuZHJhbmdlKG1pbmxlbiwgbisxKQorICAgIHJldHVybiByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbikKKworZGVmIHJzbGljZXMobiwgYWxsb3dfZW1wdHk9RmFsc2UpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZXMgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbi4iIiIKKyAgICBmb3IgXyBpbiByYW5nZSg1KToKKyAgICAgICAgeWllbGQgcnNsaWNlKG4sIGFsbG93X2VtcHR5KQorCitkZWYgcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlLCBpdGVyYXRpb25zPTUpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZSB0dXBsZXMgZm9yICdzaGFwZScuIiIiCisgICAgIyBub24tZW1wdHkgc2xpY2VzCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRlcmF0aW9ucyk6CisgICAgICAgIHlpZWxkIHR1cGxlKHJzbGljZShzaGFwZVtuXSkgZm9yIG4gaW4gcmFuZ2UobmRpbSkpCisgICAgIyBwb3NzaWJseSBlbXB0eSBzbGljZXMKKyAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKKyAgICAgICAgeWllbGQgdHVwbGUocnNsaWNlKHNoYXBlW25dLCBhbGxvd19lbXB0eT1UcnVlKSBmb3IgbiBpbiByYW5nZShuZGltKSkKKyAgICAjIGludmFsaWQgc2xpY2VzCisgICAgeWllbGQgdHVwbGUoc2xpY2UoMCwxLDApIGZvciBfIGluIHJhbmdlKG5kaW0pKQorCitkZWYgcnBlcm11dGF0aW9uKGl0ZXJhYmxlLCByPU5vbmUpOgorICAgIHBvb2wgPSB0dXBsZShpdGVyYWJsZSkKKyAgICByID0gbGVuKHBvb2wpIGlmIHIgaXMgTm9uZSBlbHNlIHIKKyAgICB5aWVsZCB0dXBsZShzYW1wbGUocG9vbCwgcikpCisKK2RlZiBuZGFycmF5X3ByaW50KG5kKToKKyAgICAiIiJQcmludCBuZGFycmF5IGZvciBkZWJ1Z2dpbmcuIiIiCisgICAgdHJ5OgorICAgICAgICB4ID0gbmQudG9saXN0KCkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgIHggPSBuZC50b2J5dGVzKCkKKyAgICBpZiBpc2luc3RhbmNlKG5kLCBuZGFycmF5KToKKyAgICAgICAgb2Zmc2V0ID0gbmQub2Zmc2V0CisgICAgICAgIGZsYWdzID0gbmQuZmxhZ3MKKyAgICBlbHNlOgorICAgICAgICBvZmZzZXQgPSAndW5rbm93bicKKyAgICAgICAgZmxhZ3MgPSAndW5rbm93bicKKyAgICBwcmludCgibmRhcnJheSglcywgc2hhcGU9JXMsIHN0cmlkZXM9JXMsIHN1Ym9mZnNldHM9JXMsIG9mZnNldD0lcywgIgorICAgICAgICAgICJmb3JtYXQ9JyVzJywgaXRlbXNpemU9JXMsIGZsYWdzPSVzKSIgJQorICAgICAgICAgICh4LCBuZC5zaGFwZSwgbmQuc3RyaWRlcywgbmQuc3Vib2Zmc2V0cywgb2Zmc2V0LAorICAgICAgICAgICBuZC5mb3JtYXQsIG5kLml0ZW1zaXplLCBmbGFncykpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKworSVRFUkFUSU9OUyA9IDEwMAorTUFYRElNID0gNQorTUFYU0hBUEUgPSAxMAorCitpZiBTSE9SVF9URVNUOgorICAgIElURVJBVElPTlMgPSAxMAorICAgIE1BWERJTSA9IDMKKyAgICBNQVhTSEFQRSA9IDQKKyAgICBnZW5zbGljZXMgPSByc2xpY2VzCisgICAgZ2Vuc2xpY2VzX25kaW0gPSByc2xpY2VzX25kaW0KKyAgICBwZXJtdXRhdGlvbnMgPSBycGVybXV0YXRpb24KKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdHJ1Y3QsICdzdHJ1Y3QgbW9kdWxlIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKG5kYXJyYXksICduZGFycmF5IG9iamVjdCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKK2NsYXNzIFRlc3RCdWZmZXJQcm90b2NvbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgVGhlIHN1Ym9mZnNldHMgdGVzdHMgbmVlZCBzaXplb2Yodm9pZCAqKS4KKyAgICAgICAgc2VsZi5zaXplb2Zfdm9pZF9wID0gZ2V0X3NpemVvZl92b2lkX3AoKQorCisgICAgZGVmIHZlcmlmeShzZWxmLCByZXN1bHQsIG9iaj0tMSwKKyAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXsxfSwgZm10PS0xLCByZWFkb25seT17MX0sCisgICAgICAgICAgICAgICAgICAgICBuZGltPXsxfSwgc2hhcGU9LTEsIHN0cmlkZXM9LTEsCisgICAgICAgICAgICAgICAgICAgICBsc3Q9LTEsIHNsaWNlZD1GYWxzZSwgY2FzdD1GYWxzZSk6CisgICAgICAgICMgVmVyaWZ5IGJ1ZmZlciBjb250ZW50cyBhZ2FpbnN0IGV4cGVjdGVkIHZhbHVlcy4gRGVmYXVsdCB2YWx1ZXMKKyAgICAgICAgIyBhcmUgZGVsaWJlcmF0ZWx5IGluaXRpYWxpemVkIHRvIGludmFsaWQgdHlwZXMuCisgICAgICAgIGlmIHNoYXBlOgorICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gcHJvZChzaGFwZSkqaXRlbXNpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBmbXQ6ICMgYXJyYXkgaGFzIGJlZW4gaW1wbGljaXRseSBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gbGVuKGxzdCkKKyAgICAgICAgICAgIGVsc2U6ICMgbmRpbSA9IDAKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBpdGVtc2l6ZQorCisgICAgICAgICMgUmVjb25zdHJ1Y3Qgc3Vib2Zmc2V0cyBmcm9tIHN0cmlkZXMuIFN1cHBvcnQgZm9yIHNsaWNpbmcKKyAgICAgICAgIyBjb3VsZCBiZSBhZGRlZCwgYnV0IGlzIGN1cnJlbnRseSBvbmx5IG5lZWRlZCBmb3IgdGVzdF9nZXRidWYoKS4KKyAgICAgICAgc3Vib2Zmc2V0cyA9ICgpCisgICAgICAgIGlmIHJlc3VsdC5zdWJvZmZzZXRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG5kaW0sIDApCisKKyAgICAgICAgICAgIHN1Ym9mZnNldDAgPSAwCisgICAgICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCBuZGltKToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZVtuXSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbbl0gPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgc3Vib2Zmc2V0MCArPSAtc3RyaWRlc1tuXSAqIChzaGFwZVtuXS0xKQorCisgICAgICAgICAgICBzdWJvZmZzZXRzID0gW3N1Ym9mZnNldDBdICsgWy0xIGZvciB2IGluIHJhbmdlKG5kaW0tMSldCisKKyAgICAgICAgICAgICMgTm90IGNvcnJlY3QgaWYgc2xpY2luZyBoYXMgb2NjdXJyZWQgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4KKyAgICAgICAgICAgIHN0cmlkZTAgPSBzZWxmLnNpemVvZl92b2lkX3AKKyAgICAgICAgICAgIGlmIHN0cmlkZXNbMF0gPCAwOgorICAgICAgICAgICAgICAgIHN0cmlkZTAgPSAtc3RyaWRlMAorICAgICAgICAgICAgc3RyaWRlcyA9IFtzdHJpZGUwXSArIGxpc3Qoc3RyaWRlc1sxOl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQub2JqLCBvYmopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5ieXRlcywgZXhwZWN0ZWRfbGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5pdGVtc2l6ZSwgaXRlbXNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmZvcm1hdCwgZm10KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5yZWFkb25seSwgcmVhZG9ubHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5kaW0sIG5kaW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCB0dXBsZShzaGFwZSkpCisgICAgICAgIGlmIG5vdCAoc2xpY2VkIGFuZCBzdWJvZmZzZXRzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0cmlkZXMsIHR1cGxlKHN0cmlkZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdWJvZmZzZXRzLCB0dXBsZShzdWJvZmZzZXRzKSkKKworICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgbmRhcnJheSkgb3IgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgIHJlcCA9IHJlc3VsdC50b2xpc3QoKSBpZiBmbXQgZWxzZSByZXN1bHQudG9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcCwgbHN0KQorCisgICAgICAgIGlmIG5vdCBmbXQ6ICMgYXJyYXkgaGFzIGJlZW4gY2FzdCB0byB1bnNpZ25lZCBieXRlcywKKyAgICAgICAgICAgIHJldHVybiAgIyB0aGUgcmVtYWluaW5nIHRlc3RzIHdvbid0IHdvcmsuCisKKyAgICAgICAgIyBQeUJ1ZmZlcl9HZXRQb2ludGVyKCkgaXMgdGhlIGRlZmluaXRpb24gaG93IHRvIGFjY2VzcyBhbiBpdGVtLgorICAgICAgICAjIElmIFB5QnVmZmVyX0dldFBvaW50ZXIoaW5kaWNlcykgaXMgY29ycmVjdCBmb3IgYWxsIHBvc3NpYmxlCisgICAgICAgICMgY29tYmluYXRpb25zIG9mIGluZGljZXMsIHRoZSBidWZmZXIgaXMgY29ycmVjdC4KKyAgICAgICAgIworICAgICAgICAjIEFsc28gdGVzdCB0b2J5dGVzKCkgYWdhaW5zdCB0aGUgZmxhdHRlbmVkICdsc3QnLCB3aXRoIGFsbCBpdGVtcworICAgICAgICAjIHBhY2tlZCB0byBieXRlcy4KKyAgICAgICAgaWYgbm90IGNhc3Q6ICMgY2FzdHMgY2hvcCB1cCAnbHN0JyBpbiBkaWZmZXJlbnQgd2F5cworICAgICAgICAgICAgYiA9IGJ5dGVhcnJheSgpCisgICAgICAgICAgICBidWZfZXJyID0gTm9uZQorICAgICAgICAgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0xID0gZ2V0X3BvaW50ZXIocmVzdWx0LCBpbmQpCisgICAgICAgICAgICAgICAgICAgIGl0ZW0yID0gZ2V0X2l0ZW0obHN0LCBpbmQpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbTIsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzdHJ1Y3QucGFjayhmbXQsICppdGVtMikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzdHJ1Y3QucGFjayhmbXQsIGl0ZW0yKQorICAgICAgICAgICAgICAgICAgICBiLmV4dGVuZCh4KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnVmX2VyciA9IFRydWUgIyByZS1leHBvcnRlciBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtMSwgaXRlbTIpCisKKyAgICAgICAgICAgIGlmIG5vdCBidWZfZXJyOgorICAgICAgICAgICAgICAgICMgdGVzdCB0b2J5dGVzKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50b2J5dGVzKCksIGIpCisKKyAgICAgICAgICAgICAgICAjIGxzdCA6PSBleHBlY3RlZCBtdWx0aS1kaW1lbnNpb25hbCBsb2dpY2FsIHJlcHJlc2VudGF0aW9uCisgICAgICAgICAgICAgICAgIyBmbGF0dGVuKGxzdCkgOj0gZWxlbWVudHMgaW4gQy1vcmRlcgorICAgICAgICAgICAgICAgIGZmID0gZm10IGlmIGZtdCBlbHNlICdCJworICAgICAgICAgICAgICAgIGZsYXR0ZW5lZCA9IGZsYXR0ZW4obHN0KQorCisgICAgICAgICAgICAgICAgIyBSdWxlcyBmb3IgJ0EnOiBpZiB0aGUgYXJyYXkgaXMgYWxyZWFkeSBjb250aWd1b3VzLCByZXR1cm4KKyAgICAgICAgICAgICAgICAjIHRoZSBhcnJheSB1bmFsdGVyZWQuIE90aGVyd2lzZSwgcmV0dXJuIGEgY29udGlndW91cyAnQycKKyAgICAgICAgICAgICAgICAjIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIGlmIG9yZGVyID09ICdGJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0EnKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0MnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciBjb25zdHJ1Y3RpbmcgdGhlIG5kYXJyYXksIGNvbnZlcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbGF0dGVuZWQgbG9naWNhbCByZXByZXNlbnRhdGlvbiB0byBGb3J0cmFuIG9yZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zID0gdHJhbnNwb3NlKGZsYXR0ZW5lZCwgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZGFycmF5KHRyYW5zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAgICAgICAgICAgICBlbHNlOiAjICdDJywgJ0EnCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29udGlndW91cyhyZXN1bHQsICdBJykgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udGlndW91cyhyZXN1bHQsICdGJykgYW5kIG9yZGVyID09ICdDJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBmbGF0dGVuZWQgbGlzdCBpcyBhbHJlYWR5IGluIEMtb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZGFycmF5KGZsYXR0ZW5lZCwgc2hhcGU9c2hhcGUsIGZvcm1hdD1mZikKKworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBnZXRfY29udGlndW91cyhyZXN1bHQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRpZy50b2J5dGVzKCksIGIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKGNvbnRpZywgZXhwZWN0ZWQpKQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5kaW0gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgbm1lbWIgPSBsZW4oZmxhdHRlbmVkKQorICAgICAgICAgICAgICAgICAgICBybyA9IDAgaWYgcmVhZG9ubHkgZWxzZSBORF9XUklUQUJMRQorCisgICAgICAgICAgICAgICAgICAgICMjIyBTZWUgY29tbWVudCBpbiB0ZXN0X3B5X2J1ZmZlcl90b19jb250aWd1b3VzIGZvciBhbgorICAgICAgICAgICAgICAgICAgICAjIyMgZXhwbGFuYXRpb24gd2h5IHRoZXNlIHRlc3RzIGFyZSB2YWxpZC4KKworICAgICAgICAgICAgICAgICAgICAjIFRvICdDJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdDJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KGluaXRsc3QsIHNoYXBlPXNoYXBlLCBmbGFncz1ybywgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnRicKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShpbml0bHN0LCBzaGFwZT1zaGFwZSwgZmxhZ3M9cm98TkRfRk9SVFJBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnQScKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnQScsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICBmID0gTkRfRk9SVFJBTiBpZiBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0YnKSBlbHNlIDAKKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoaW5pdGxzdCwgc2hhcGU9c2hhcGUsIGZsYWdzPWZ8cm8sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhyZXN1bHQpKQorCisgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcocmVzdWx0KQorICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOiAjIHJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZnVsbCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZXggPSByZXN1bHQub2JqIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBtZW1vcnl2aWV3KSBlbHNlIHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmJ5dGVzLCBleHBlY3RlZF9sZW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uaXRlbXNpemUsIGl0ZW1zaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvcm1hdCwgZm10KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWRvbmx5LCByZWFkb25seSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uZGltLCBuZGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNoYXBlLCB0dXBsZShzaGFwZSkpCisgICAgICAgICAgICBpZiBub3QgKHNsaWNlZCBhbmQgc3Vib2Zmc2V0cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN0cmlkZXMsIHR1cGxlKHN0cmlkZXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsIHR1cGxlKHN1Ym9mZnNldHMpKQorCisgICAgICAgICAgICBuID0gMSBpZiBuZGltID09IDAgZWxzZSBsZW4obHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obSksIG4pCisKKyAgICAgICAgICAgIHJlcCA9IHJlc3VsdC50b2xpc3QoKSBpZiBmbXQgZWxzZSByZXN1bHQudG9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcCwgbHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCByZXN1bHQpCisKKyAgICBkZWYgdmVyaWZ5X2dldGJ1ZihzZWxmLCBvcmlnX2V4LCBleCwgcmVxLCBzbGljZWQ9RmFsc2UpOgorICAgICAgICBkZWYgc2ltcGxlX2ZtdChleCk6CisgICAgICAgICAgICByZXR1cm4gZXguZm9ybWF0ID09ICcnIG9yIGV4LmZvcm1hdCA9PSAnQicKKyAgICAgICAgZGVmIG1hdGNoKHJlcSwgZmxhZyk6CisgICAgICAgICAgICByZXR1cm4gKChyZXEmZmxhZykgPT0gZmxhZykKKworICAgICAgICBpZiAoIyB3cml0YWJsZSByZXF1ZXN0IHRvIHJlYWQtb25seSBleHBvcnRlcgorICAgICAgICAgICAgKGV4LnJlYWRvbmx5IGFuZCBtYXRjaChyZXEsIFB5QlVGX1dSSVRBQkxFKSkgb3IKKyAgICAgICAgICAgICMgY2Fubm90IG1hdGNoIGV4cGxpY2l0IGNvbnRpZ3VpdHkgcmVxdWVzdAorICAgICAgICAgICAgKG1hdGNoKHJlcSwgUHlCVUZfQ19DT05USUdVT1VTKSBhbmQgbm90IGV4LmNfY29udGlndW91cykgb3IKKyAgICAgICAgICAgIChtYXRjaChyZXEsIFB5QlVGX0ZfQ09OVElHVU9VUykgYW5kIG5vdCBleC5mX2NvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAobWF0Y2gocmVxLCBQeUJVRl9BTllfQ09OVElHVU9VUykgYW5kIG5vdCBleC5jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgIyBidWZmZXIgbmVlZHMgc3Vib2Zmc2V0cworICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX0lORElSRUNUKSBhbmQgZXguc3Vib2Zmc2V0cykgb3IKKyAgICAgICAgICAgICMgYnVmZmVyIHdpdGhvdXQgc3RyaWRlcyBtdXN0IGJlIEMtY29udGlndW91cworICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX1NUUklERVMpIGFuZCBub3QgZXguY19jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgIyBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQKKyAgICAgICAgICAgIChub3QgbWF0Y2gocmVxLCBQeUJVRl9ORCkgYW5kIG1hdGNoKHJlcSwgUHlCVUZfRk9STUFUKSkpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1yZXEpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBpc2luc3RhbmNlKGV4LCBuZGFycmF5KSBvciBpc19tZW1vcnl2aWV3X2Zvcm1hdChleC5mb3JtYXQpOgorICAgICAgICAgICAgbHN0ID0gZXgudG9saXN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICBsc3QgPSBuZC50b2xpc3QoKQorCisgICAgICAgICMgVGhlIGNvbnN1bWVyIG1heSBoYXZlIHJlcXVlc3RlZCBkZWZhdWx0IHZhbHVlcyBvciBhIE5VTEwgZm9ybWF0LgorICAgICAgICBybyA9IDAgaWYgbWF0Y2gocmVxLCBQeUJVRl9XUklUQUJMRSkgZWxzZSBleC5yZWFkb25seQorICAgICAgICBmbXQgPSBleC5mb3JtYXQKKyAgICAgICAgaXRlbXNpemUgPSBleC5pdGVtc2l6ZQorICAgICAgICBuZGltID0gZXgubmRpbQorICAgICAgICBpZiBub3QgbWF0Y2gocmVxLCBQeUJVRl9GT1JNQVQpOgorICAgICAgICAgICAgIyBpdGVtc2l6ZSByZWZlcnMgdG8gdGhlIG9yaWdpbmFsIGl0ZW1zaXplIGJlZm9yZSB0aGUgY2FzdC4KKyAgICAgICAgICAgICMgVGhlIGVxdWFsaXR5IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gc3RpbGwgaG9sZHMuCisgICAgICAgICAgICAjIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkLgorICAgICAgICAgICAgZm10ID0gJycKKyAgICAgICAgICAgIGxzdCA9IG9yaWdfZXgudG9ieXRlcygpICMgSXNzdWUgMTI4MzQKKyAgICAgICAgaWYgbm90IG1hdGNoKHJlcSwgUHlCVUZfTkQpOgorICAgICAgICAgICAgbmRpbSA9IDEKKyAgICAgICAgc2hhcGUgPSBvcmlnX2V4LnNoYXBlIGlmIG1hdGNoKHJlcSwgUHlCVUZfTkQpIGVsc2UgKCkKKyAgICAgICAgc3RyaWRlcyA9IG9yaWdfZXguc3RyaWRlcyBpZiBtYXRjaChyZXEsIFB5QlVGX1NUUklERVMpIGVsc2UgKCkKKworICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1yZXEpCisgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT1ybywKKyAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBzbGljZWQ9c2xpY2VkKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9nZXRidWYoc2VsZik6CisgICAgICAgIHJlcXVlc3RzID0gKAorICAgICAgICAgICAgIyBkaXN0aW5jdCBmbGFncworICAgICAgICAgICAgUHlCVUZfSU5ESVJFQ1QsIFB5QlVGX1NUUklERVMsIFB5QlVGX05ELCBQeUJVRl9TSU1QTEUsCisgICAgICAgICAgICBQeUJVRl9DX0NPTlRJR1VPVVMsIFB5QlVGX0ZfQ09OVElHVU9VUywgUHlCVUZfQU5ZX0NPTlRJR1VPVVMsCisgICAgICAgICAgICAjIGNvbXBvdW5kIHJlcXVlc3RzCisgICAgICAgICAgICBQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLAorICAgICAgICAgICAgUHlCVUZfUkVDT1JEUywgUHlCVUZfUkVDT1JEU19STywKKyAgICAgICAgICAgIFB5QlVGX1NUUklERUQsIFB5QlVGX1NUUklERURfUk8sCisgICAgICAgICAgICBQeUJVRl9DT05USUcsIFB5QlVGX0NPTlRJR19STywKKyAgICAgICAgKQorICAgICAgICAjIGl0ZW1zIGFuZCBmb3JtYXQKKyAgICAgICAgaXRlbXNfZm10ID0gKAorICAgICAgICAgICAgKFtUcnVlIGlmIHggJSAyIGVsc2UgRmFsc2UgZm9yIHggaW4gcmFuZ2UoMTIpXSwgJz8nKSwKKyAgICAgICAgICAgIChbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdLCAnYicpLAorICAgICAgICAgICAgKFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0sICdCJyksCisgICAgICAgICAgICAoWygyKiozMS14KSBpZiB4ICUgMiBlbHNlICgtMioqMzEreCkgZm9yIHggaW4gcmFuZ2UoMTIpXSwgJ2wnKQorICAgICAgICApCisgICAgICAgICMgc2hhcGUsIHN0cmlkZXMsIG9mZnNldAorICAgICAgICBzdHJ1Y3R1cmUgPSAoCisgICAgICAgICAgICAoW10sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMTJdLCBbXSwgMCksCisgICAgICAgICAgICAoWzEyXSwgWy0xXSwgMTEpLAorICAgICAgICAgICAgKFs2XSwgWzJdLCAwKSwKKyAgICAgICAgICAgIChbNl0sIFstMl0sIDExKSwKKyAgICAgICAgICAgIChbMywgNF0sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMywgNF0sIFstNCwgLTFdLCAxMSksCisgICAgICAgICAgICAoWzIsIDJdLCBbNCwgMV0sIDQpLAorICAgICAgICAgICAgKFsyLCAyXSwgWy00LCAtMV0sIDgpCisgICAgICAgICkKKyAgICAgICAgIyBuZGFycmF5IGNyZWF0aW9uIGZsYWdzCisgICAgICAgIG5kZmxhZ3MgPSAoCisgICAgICAgICAgICAwLCBORF9XUklUQUJMRSwgTkRfRk9SVFJBTiwgTkRfRk9SVFJBTnxORF9XUklUQUJMRSwKKyAgICAgICAgICAgIE5EX1BJTCwgTkRfUElMfE5EX1dSSVRBQkxFCisgICAgICAgICkKKyAgICAgICAgIyBmbGFncyB0aGF0IGNhbiBhY3R1YWxseSBiZSB1c2VkIGFzIGZsYWdzCisgICAgICAgIHJlYWxfZmxhZ3MgPSAoMCwgUHlCVUZfV1JJVEFCTEUsIFB5QlVGX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQpCisKKyAgICAgICAgZm9yIGl0ZW1zLCBmbXQgaW4gaXRlbXNfZm10OgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgaW4gc3RydWN0dXJlOgorICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBbdiAqIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXNdCisgICAgICAgICAgICAgICAgb2Zmc2V0ICo9IGl0ZW1zaXplCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluIG5kZmxhZ3M6CisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlcyBhbmQgKGZsYWdzJk5EX0ZPUlRSQU4pOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNoYXBlIGFuZCAoZmxhZ3MmTkRfUElMKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgX2l0ZW1zID0gaXRlbXMgaWYgc2hhcGUgZWxzZSBpdGVtc1swXQorICAgICAgICAgICAgICAgICAgICBleDEgPSBuZGFycmF5KF9pdGVtcywgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywgb2Zmc2V0PW9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgZXgyID0gZXgxWzo6LTJdIGlmIHNoYXBlIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhleDEpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhleDIpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MS5uZGltID09IDAgb3IgKGV4MS5uZGltID09IDEgYW5kIHNoYXBlIGFuZCBzdHJpZGVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgyIGFuZCBleDIubmRpbSA9PSAxIGFuZCBzaGFwZSBhbmQgc3RyaWRlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgICAgICAgICBmb3IgcmVxIGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJpdHMgaW4gcmVhbF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgxLCBleDEsIHJlcXxiaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDEsIG0xLCByZXF8Yml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBleDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDIsIGV4MiwgcmVxfGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MiwgbTIsIHJlcXxiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VkPVRydWUpCisKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgIyBORF9HRVRCVUZfRkFJTAorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZsYWdzPU5EX0dFVEJVRl9GQUlMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgpCisKKyAgICAgICAgIyBSZXF1ZXN0IGNvbXBsZXggc3RydWN0dXJlIGZyb20gYSBzaW1wbGUgZXhwb3J0ZXIuIEluIHRoaXMKKyAgICAgICAgIyBwYXJ0aWN1bGFyIGNhc2UgdGhlIHRlc3Qgb2JqZWN0IGlzIG5vdCBQRVAtMzExOCBjb21wbGlhbnQuCisgICAgICAgIGJhc2UgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBleCA9IG5kYXJyYXkoYmFzZSwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX05EKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9TVFJJREVTKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9DX0NPTlRJR1VPVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0ZfQ09OVElHVU9VUykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfQU5ZX0NPTlRJR1VPVVMpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBuZG0gPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisKKyAgICAgICAgIyBJbml0aWFsaXphdGlvbiBvZiBhIG5ldyBuZGFycmF5IG9yIG11dGF0aW9uIG9mIGFuIGV4aXN0aW5nIGFycmF5LgorICAgICAgICBmb3IgYyBpbiAobmRhcnJheSwgbmQucHVzaCwgbmRtLnB1c2gpOgorICAgICAgICAgICAgIyBJbnZhbGlkIHR5cGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCB7MSwyLDN9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLCczJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsKDMsNCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT17M30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz17MX0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgb2Zmc2V0PVtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PXt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZmxhZ3M9e30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBnZXRidWY9e30pCisKKyAgICAgICAgICAgICMgTkRfRk9SVFJBTiBmbGFnIGlzIG9ubHkgdmFsaWQgd2l0aG91dCBzdHJpZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorCisgICAgICAgICAgICAjIE5EX1BJTCBmbGFnIGlzIG9ubHkgdmFsaWQgd2l0aCBuZGltID4gMC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bXSwgZmxhZ3M9TkRfUElMKQorCisgICAgICAgICAgICAjIEludmFsaWQgaXRlbXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbXSwgc2hhcGU9WzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWydYWFgnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkwiKQorICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGl0ZW1zIGFuZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIGMsIFsxMDAwXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsKDIsMyldLCBzaGFwZT1bMl0sIGZvcm1hdD0iQiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iUUwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgbmRpbS4KKyAgICAgICAgICAgIG4gPSBORF9NQVhfTkRJTSsxCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMV0qbiwgc2hhcGU9WzFdKm4pCisKKyAgICAgICAgICAgICMgSW52YWxpZCBzaGFwZS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxXSwgc2hhcGU9Wy0xXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVsnMyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYywgWzFdLCBzaGFwZT1bMioqMTI4XSkKKyAgICAgICAgICAgICMgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBsZW4oaXRlbXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDMsNCw1XSwgc2hhcGU9WzIsMl0sIG9mZnNldD0zKQorCisgICAgICAgICAgICAjIEludmFsaWQgc3RyaWRlcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz1bJzEnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bMioqMTI4XSkKKworICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHN0cmlkZXMgYW5kIHNoYXBlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMl0sIHNoYXBlPVsyLDFdLCBzdHJpZGVzPVsxXSkKKyAgICAgICAgICAgICMgSW52YWxpZCBjb21iaW5hdGlvbiBvZiBzdHJpZGVzIGFuZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDMsNF0sIHNoYXBlPVsyXSwgc3RyaWRlcz1bM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgb2Zmc2V0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBvZmZzZXQ9NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVsxXSwgb2Zmc2V0PTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgZm9ybWF0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIGMsIFsoMSwyLDMpXSwgc2hhcGU9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSJAIyQiKQorCisgICAgICAgICAgICAjIFN0cmlkaW5nIG91dCBvZiB0aGUgbWVtb3J5IGJvdW5kcy4KKyAgICAgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgaXRlbXMsIHNoYXBlPVsyLDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bLTMsIC0yXSwgb2Zmc2V0PTUpCisKKyAgICAgICAgICAgICMgQ29uc3RydWN0aW5nIGNvbnN1bWVyOiBmb3JtYXQgYXJndW1lbnQgaW52YWxpZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgYnl0ZWFycmF5KCksIGZvcm1hdD0iUSIpCisKKyAgICAgICAgICAgICMgQ29uc3RydWN0aW5nIG9yaWdpbmFsIGJhc2Ugb2JqZWN0OiBnZXRidWYgYXJndW1lbnQgaW52YWxpZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGdldGJ1Zj1QeUJVRl9GVUxMKQorCisgICAgICAgICAgICAjIFNoYXBlIGFyZ3VtZW50IGlzIG1hbmRhdG9yeSBmb3Igb3JpZ2luYWwgYmFzZSBvYmplY3RzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0pCisKKworICAgICAgICAjIFB5QlVGX1dSSVRBQkxFIHJlcXVlc3QgdG8gcmVhZC1vbmx5IHByb3ZpZGVyLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgYicxMjMnLCBnZXRidWY9UHlCVUZfV1JJVEFCTEUpCisKKyAgICAgICAgIyBORF9WQVJFWFBPUlQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorCisgICAgICAgICMgSW52YWxpZCBvcGVyYXRpb24gZm9yIGNvbnN1bWVyczogcHVzaC9wb3AKKyAgICAgICAgbmQgPSBuZGFycmF5KGInMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorCisgICAgICAgICMgTkRfVkFSRVhQT1JUIG5vdCBzZXQ6IHB1c2gvcG9wIGZhaWwgd2l0aCBleHBvcnRlZCBidWZmZXJzCisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSkKKyAgICAgICAgbmQucHVzaChbMV0sIFsxXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgbmQucG9wKCkKKworICAgICAgICAjIFNpbmdsZSByZW1haW5pbmcgYnVmZmVyOiBwb3AgZmFpbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgZGVsIG5kCisKKyAgICAgICAgIyBnZXRfcG9pbnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X3BvaW50ZXIsIHt9LCBbMSwyLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9wb2ludGVyLCBiJzEyMycsIHt9KQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEwMCkpLCBzaGFwZT1bMV0qMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFs1XSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMiwzLDRdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFszLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFstMywzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMTw8NjQsM10pCisKKyAgICAgICAgIyB0b2xpc3QoKSBuZWVkcyBmb3JtYXQKKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC50b2xpc3QpCisKKyAgICAgICAgIyBtZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgZXgxID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0nTCcpCisgICAgICAgIGV4MiA9IG5kYXJyYXkoZXgxKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsoMSwpKjIwMF0sIHNoYXBlPVsxXSwgZm9ybWF0PSdMJyoyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICBuID0gTkRfTUFYX05ESU0KKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UobikpLCBzaGFwZT1bMV0qbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICAjIGdldF9jb250aWd1b3VzKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgInh5eiIsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCAyKio2NCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgOTYxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1MjAwNycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgJ1onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIDI1NSwgJ0EnKQorCisgICAgICAgICMgY21wX2NvbnRpZygpCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIHt9LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCBuZCwge30pCisKKyAgICAgICAgIyBpc19jb250aWd1b3VzKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzX2NvbnRpZ3VvdXMsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNfY29udGlndW91cywge30sICdBJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc19jb250aWd1b3VzLCBuZCwgMjAxKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9saW5rZWRfbGlzdChzZWxmKToKKyAgICAgICAgZm9yIHBlcm0gaW4gcGVybXV0YXRpb25zKHJhbmdlKDUpKToKKyAgICAgICAgICAgIG0gPSBbMF0qNQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICAgICAgbVswXSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgICAgIG5kLnB1c2goWzEsMiwzXSwgc2hhcGU9WzNdKQorICAgICAgICAgICAgICAgIG1baV0gPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICBtW3Blcm1baV1dLnJlbGVhc2UoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICAgICAgZGVsIG5kCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zY2FsYXIoc2VsZik6CisgICAgICAgICMgbmRpbSA9IDA6IHNjYWxhcgorICAgICAgICBmb3IgZm10LCBzY2FsYXIsIF8gaW4gaXRlcl9mb3JtYXQoMCk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoc2NhbGFyLCBzaGFwZT0oKSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0wLCBzaGFwZT0oKSwgc3RyaWRlcz0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1zY2FsYXIpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zaGFwZShzZWxmKToKKyAgICAgICAgIyBuZGltID0gMSwgc2hhcGUgPSBbbl0KKyAgICAgICAgbml0ZW1zID0gIHJhbmRyYW5nZSgxLCAxMCkKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobml0ZW1zKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtuaXRlbXNdLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT0obml0ZW1zLCksIHN0cmlkZXM9KGl0ZW1zaXplLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWl0ZW1zKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3JtYXRfc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyBuZGltID0gMSwgc3RyaWRlcworICAgICAgICBuaXRlbXMgPSByYW5kcmFuZ2UoMSwgMzApCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KG5pdGVtcyk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3Igc3RlcCBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgaWYgc3RlcCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2hhcGUgPSBbbGVuKGl0ZW1zWzo6c3RlcF0pXQorICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBbc3RlcCppdGVtc2l6ZV0KKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVtc2l6ZSoobml0ZW1zLTEpIGlmIHN0ZXAgPCAwIGVsc2UgMAorCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Zm10LCBvZmZzZXQ9b2Zmc2V0LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9aXRlbXNbOjpzdGVwXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ydHJhbihzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9KDMsIDQpLCBzdHJpZGVzPSgxLCAzKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfRl9DT05USUdVT1VTfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgZmFycmF5KGl0ZW1zLCAoMywgNCkpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgZm9yIG5kaW0gaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBzaGFwZV90ID0gW3JhbmRyYW5nZSgyLCAxMCkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisgICAgICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICBpZiBuZGltID09IDAgYW5kIGZsYWdzID09IE5EX1BJTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBDIGFycmF5CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCAnQycpCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBtZW1vcnl2aWV3OiByZWNvbnN0cnVjdCBzdHJpZGVzCisgICAgICAgICAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZC5zdHJpZGVzID09ICgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbXYgPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG12LCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgICAgICAgICAjIEZvcnRyYW4gYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX0ZPUlRSQU4pCisKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsICdGJykKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIG5vdCB3cml0YWJsZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19zZXRpdGVtX18sIDEsIDgpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDEsIDgpCisKKyAgICAgICAgIyBjYW5ub3QgYmUgZGVsZXRlZAorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZGVsaXRlbV9fLCAxKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fZGVsaXRlbV9fLCAxKQorCisgICAgICAgICMgb3ZlcmZsb3cKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbmQuX19nZXRpdGVtX18sIDE8PDY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBuZC5fX3NldGl0ZW1fXywgMTw8NjQsIDgpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAxPDw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIDE8PDY0LCA4KQorCisgICAgICAgICMgZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOF0KKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbGVuKGl0ZW1zKV0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxLCAoMTAwLCAyMDApKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMiwgMzAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAxLCAoMTAwLCAyMDApKQorCisgICAgICAgIGl0ZW1zID0gWygxLDIpLCAoMyw0KSwgKDUsNildCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W2xlbihpdGVtcyldLCBmb3JtYXQ9IkxRIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgbmQuX19zZXRpdGVtX18sIDEsIChiJ1x4MDAxJywgMjAwKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfc2NhbGFyKHNlbGYpOgorICAgICAgICAjIHNjYWxhcgorICAgICAgICBuZCA9IG5kYXJyYXkoMSwgc2hhcGU9KCksIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorCisgICAgICAgIHggPSBuZFsoKV07ICBzZWxmLmFzc2VydEVxdWFsKHgsIDEpCisgICAgICAgIHggPSBuZFsuLi5dOyBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHggPSBtdlsoKV07ICBzZWxmLmFzc2VydEVxdWFsKHgsIDEpCisgICAgICAgIHggPSBtdlsuLi5dOyBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19zZXRpdGVtX18sIDAsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDAsIDgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgMSkKKworICAgICAgICBuZFsoKV0gPSA5OyBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCA5KQorICAgICAgICBtdlsoKV0gPSA5OyBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCA5KQorCisgICAgICAgIG5kWy4uLl0gPSA1OyBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCA1KQorICAgICAgICBtdlsuLi5dID0gNTsgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgNSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfbnVsbF9zdHJpZGVzKHNlbGYpOgorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyKjQpKSwgc2hhcGU9WzIsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHKQorCisgICAgICAgICMgU3ViLXZpZXdzIGFyZSBvbmx5IHBvc3NpYmxlIGZvciBmdWxsIGV4cG9ydGVycy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAxKQorICAgICAgICAjIFNhbWUgZm9yIHNsaWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCBzbGljZSgzLDUsMSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2dldGl0ZW1fc2luZ2xlKHNlbGYpOgorICAgICAgICAjIGdldGl0ZW0KKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19nZXRpdGVtX18sIC02KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19nZXRpdGVtX18sIDUpCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdltpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX2dldGl0ZW1fXywgLTYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19nZXRpdGVtX18sIDUpCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBzdHJpZGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZsYWdzPU5EX1dSSVRBQkxFLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHfFB5QlVGX0ZPUk1BVCkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIG12ID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdi5fX2VxX18obmQpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICMgZ2V0aXRlbSB3aXRoIG51bGwgZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNV0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19STykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBzaGFwZS9zdHJpZGVzL2Zvcm1hdAorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDVdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X3NldGl0ZW1fc2luZ2xlKHNlbGYpOgorICAgICAgICAjIGFzc2lnbiBzaW5nbGUgdmFsdWUKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZV9pdGVtIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgICAgIG5kW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX3NldGl0ZW1fXywgLTYsIHNpbmdsZV9pdGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19zZXRpdGVtX18sIDUsIHNpbmdsZV9pdGVtKQorCisgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgICAgICBtdltpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIC02LCBzaW5nbGVfaXRlbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fc2V0aXRlbV9fLCA1LCBzaW5nbGVfaXRlbSkKKworCisgICAgICAgICMgYXNzaWduIHNpbmdsZSB2YWx1ZTogbG9iamVjdCA9IHJvYmplY3QKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZV9pdGVtIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDQpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSsxXQorICAgICAgICAgICAgICAgIG5kW2ldID0gbmRbaSsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDQpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSsxXQorICAgICAgICAgICAgICAgIG12W2ldID0gbXZbaSsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgaXRlbXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2dldGl0ZW1fbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKworICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICMgQyBhcnJheQorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtc2hhcGVbMF0sIHNoYXBlWzBdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV0sIG5kW2ldLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgtc2hhcGVbMV0sIHNoYXBlWzFdKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdLCBuZFtpXVtqXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKC1zaGFwZVsyXSwgc2hhcGVbMl0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdW2tdLCBuZFtpXVtqXVtrXSkKKworICAgICAgICAgICAgICAgICMgRm9ydHJhbiBhcnJheQorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1zaGFwZVswXSwgc2hhcGVbMF0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXSwgbmRbaV0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKC1zaGFwZVsxXSwgc2hhcGVbMV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal0sIG5kW2ldW2pdLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2Uoc2hhcGVbMl0sIHNoYXBlWzJdKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXVtrXSwgbmRbaV1bal1ba10pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NlcXVlbmNlKHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkoMSwgc2hhcGU9KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjEgaW4gbmQiLCBsb2NhbHMoKSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiMSBpbiBtdiIsIGxvY2FscygpKQorCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUobmQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaXRlbXNbaV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYgaW4gbmQpCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShtdik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaXRlbXNbaV0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2IGluIG12KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDhdCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGFuIGV4cG9ydGVyCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIGl0ZW1zKQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhIGZ1bGwgZXhwb3J0ZXIKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHhyID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX05EKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgeHIpCisKKyAgICAgICAgIyB6ZXJvIHN0ZXAKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCBzbGljZSgwLDEsMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCBzbGljZSgwLDEsMCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMiw0XSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19nZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDEsMCksIHNsaWNlKDAsMSwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sICJAJSQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAoIkAlJCIsIHNsaWNlKDAsMSwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sIChzbGljZSgwLDEsMSksIHt9KSkKKworICAgICAgICAjIG1lbW9yeXZpZXc6IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtdi5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX2dldGl0ZW1fXywgIkAlJCIpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgZm9ybWF0CisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgaXRlbXNpemUKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJMIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIGRpZmZlcmluZyBuZGltCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzIsIDRdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBbWzEsMiwzLDRdLCBbNSw2LDcsOF1dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtcls3OjhdKQorCisgICAgICAgICMgZGlmZmVyaW5nIHNoYXBlCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMiwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBfdGVzdGJ1ZmZlci5jIG1vZHVsZSBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbGljZV9pbmRpY2VzLCBzbGljZSgwLDEsMiksIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlX2luZGljZXMsICIjIyMjIyMjIyMjIyIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNsaWNlX2luZGljZXMsIHNsaWNlKDAsMSwwKSwgNCkKKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5hZGRfc3Vib2Zmc2V0cykKKworICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJCIikKKyAgICAgICAgeCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5hZGRfc3Vib2Zmc2V0cykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfemVyb19zaGFwZShzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgeCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZm9ybWF0PSJMIikKKyAgICAgICAgeFs0OjRdID0geVs5OjldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLCB5KQorICAgICAgICBtbFs0OjRdID0gbXJbOTo5XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMsIDRdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeSA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs0LCAzXSwgZm9ybWF0PSJMIikKKyAgICAgICAgeFsxOjIsIDI6Ml0gPSB5WzE6MiwgMzozXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIGNhcnJheShpdGVtcywgWzMsIDRdKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBzbGljZXMgaW4gcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKworICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQgPSBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgbmRzbGljZWQgPSBuZFtzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBpZiBuZGVyciBvciBsaXN0ZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRzbGljZWQudG9saXN0KCksIHNsaWNlZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfcmVkdW5kYW50X3N1Ym9mZnNldHMoc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSwgMikKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgbmQuYWRkX3N1Ym9mZnNldHMoKQorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGV4LmFkZF9zdWJvZmZzZXRzKCkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIGZvciBzbGljZXMgaW4gcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKworICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzbGljZWQgPSBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG5kc2xpY2VkID0gbmRbc2xpY2VzXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgaWYgbmRlcnIgb3IgbGlzdGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kc2xpY2VkLnRvbGlzdCgpLCBzbGljZWQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2Fzc2lnbl9zaW5nbGUoc2VsZik6CisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgZm9yIGxzbGljZSBpbiBnZW5zbGljZXMoNSk6CisgICAgICAgICAgICAgICAgZm9yIHJzbGljZSBpbiBnZW5zbGljZXMoNSk6CisgICAgICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKworICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsYWdzfE5EX1dSSVRBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1mKQorICAgICAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICAgICAgICAgICAgICBsc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX3N0cnVjdHVyZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdCA9IGl0ZW1zWzpdCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHZhbCA9IGxzdFtsc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZhbCA9IGxzdFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0W2xzbGljZV0gPSBsc3RbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc3RydWN0dXJlID0gbGVuKGx2YWwpICE9IGxlbihydmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kW2xzbGljZV0gPSBuZFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWZmX3N0cnVjdHVyZTogIyBuZGFycmF5IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBsc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbHN0ZXJyKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBtdmVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdltsc2xpY2VdID0gbXZbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlmZl9zdHJ1Y3R1cmU6ICMgbWVtb3J5dmlldyBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdmVyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgbHN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXZlcnIsIGxzdGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtdiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9bmQuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kLm5kaW0sIHNoYXBlPW5kLnNoYXBlLCBzdHJpZGVzPW5kLnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bmQudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2Fzc2lnbl9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgICAgICAgICAgbHNsaWNlcywgcnNsaWNlcyA9IHJhbmRzbGljZV9mcm9tX3NoYXBlKG5kaW0sIHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFnc3xORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtdWx0aXNsaWNlX2Fzc2lnbihsc3QsIGxzdCwgbHNsaWNlcywgcnNsaWNlcykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kW2xzbGljZXNdID0gbmRbcnNsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIG5kZXJyIG9yIGxpc3RlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb20oc2VsZik6CisgICAgICAgICMgY29uc3RydWN0aW9uIG9mIHZhbGlkIGFycmF5cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIHQgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgVHJ1ZSwgbWF4ZGltPU1BWERJTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2hhcGU9TUFYU0hBUEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnQpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCkKKworICAgICAgICAgICAgICAgIHggPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgeGxpc3QgPSB4LnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICBtdmxpc3QgPSBtdi50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12bGlzdCwgeGxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiB0WzJdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBuZGltID4gMDogdGVzdCBhZ2FpbnN0IHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeWxpc3QgPSB5LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxpc3QsIHlsaXN0KQorCisgICAgICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG12bGlzdCA9IG12LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12bGlzdCwgeWxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSB0WzNdCisgICAgICAgICAgICAgICAgICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MTAKKyAgICAgICAgICAgICAgICAgICAgeiA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHgsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT16Lml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPXoubmRpbSwgc2hhcGU9ei5zaGFwZSwgc3RyaWRlcz16LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD16LnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb21faW52YWxpZChzZWxmKToKKyAgICAgICAgIyBleGNlcHRpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgaW52YWxpZCBhcnJheXMKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoSVRFUkFUSU9OUyk6CisgICAgICAgICAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICB0ID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIEZhbHNlLCBtYXhkaW09TUFYRElNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhzaGFwZT1NQVhTSEFQRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZlcmlmeV9zdHJ1Y3R1cmUoKnQpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCkKKworICAgICAgICAgICAgICAgIG5kZXJyID0gRmFsc2UKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHggPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5kZXJyKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIG51bXB5X2VyciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBudW1weV9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIDA6ICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkxMAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bXB5X2VycikKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfcmFuZG9tX3NsaWNlX2Fzc2lnbihzZWxmKToKKyAgICAgICAgIyB2YWxpZCBzbGljZSBhc3NpZ25tZW50cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIGxzaGFwZSwgcnNoYXBlLCBsc2xpY2VzLCByc2xpY2VzID0gXAorICAgICAgICAgICAgICAgICAgICByYW5kX2FsaWduZWRfc2xpY2VzKG1heGRpbT1NQVhESU0sIG1heHNoYXBlPU1BWFNIQVBFKQorICAgICAgICAgICAgICAgIHRsID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIFRydWUsIHNoYXBlPWxzaGFwZSkKKyAgICAgICAgICAgICAgICB0ciA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBUcnVlLCBzaGFwZT1yc2hhcGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnRsKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdHIpKQorICAgICAgICAgICAgICAgIGxpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHRsKQorICAgICAgICAgICAgICAgIHJpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHRyKQorCisgICAgICAgICAgICAgICAgeGwgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCkKKyAgICAgICAgICAgICAgICB4ciA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyKQorICAgICAgICAgICAgICAgIHhsW2xzbGljZXNdID0geHJbcnNsaWNlc10KKyAgICAgICAgICAgICAgICB4bGxpc3QgPSB4bC50b2xpc3QoKQorICAgICAgICAgICAgICAgIHhybGlzdCA9IHhyLnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgICAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIHhsbGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1yLnRvbGlzdCgpLCB4cmxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiB0bFsyXSA+IDAgYW5kIHRyWzJdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBuZGltID4gMDogdGVzdCBhZ2FpbnN0IHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIHlsID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeXIgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKHJpdGVtcywgZm10LCB0ciwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5bFtsc2xpY2VzXSA9IHlyW3JzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIHlsbGlzdCA9IHlsLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHlybGlzdCA9IHlyLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxsaXN0LCB5bGxpc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeHJsaXN0LCB5cmxpc3QpCisKKyAgICAgICAgICAgICAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHlsKQorICAgICAgICAgICAgICAgICAgICBtciA9IG1lbW9yeXZpZXcoeXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIHlsbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtci50b2xpc3QoKSwgeXJsaXN0KQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIGlmIDAgaW4gbHNoYXBlIG9yIDAgaW4gcnNoYXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTEwCisKKyAgICAgICAgICAgICAgICAgICAgemwgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwpCisgICAgICAgICAgICAgICAgICAgIHpyID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyKQorICAgICAgICAgICAgICAgICAgICB6bFtsc2xpY2VzXSA9IHpyW3JzbGljZXNdCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX292ZXJsYXBwaW5nKHRsKSBhbmQgbm90IGlzX292ZXJsYXBwaW5nKHRyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2xpY2UgYXNzaWdubWVudCBvZiBvdmVybGFwcGluZyBzdHJ1Y3R1cmVzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHVuZGVmaW5lZCBpbiBOdW1QeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHhsLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXpsLml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT16bC5uZGltLCBzaGFwZT16bC5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9emwuc3RyaWRlcywgbHN0PXpsLnRvbGlzdCgpKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHhyLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9enIuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09enIubmRpbSwgc2hhcGU9enIuc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9enIuc3RyaWRlcywgbHN0PXpyLnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yZV9leHBvcnQoc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXQorCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgZXggPSBuZGFycmF5KG5kKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleC5mbGFncyAmIE5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhleC5vYmosIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LnN1Ym9mZnNldHMsICgwLCAtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguY19jb250aWd1b3VzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmZfY29udGlndW91cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5jb250aWd1b3VzKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV96ZXJvX3NoYXBlKHNlbGYpOgorICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMF0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIFtdKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzAsMywzXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbXSkKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszLDAsM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgW1tdLCBbXSwgW11dKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzMsMywwXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1tdLCBbXSwgW11dLCBbW10sIFtdLCBbXV0sIFtbXSwgW10sIFtdXV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3plcm9fc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzVdLCBzdHJpZGVzPVswXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFsxLCAxLCAxLCAxLCAxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIFsxLCAxLCAxLCAxLCAxXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfb2Zmc2V0KHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgyMCkpLCBzaGFwZT1bM10sIG9mZnNldD03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLm9mZnNldCwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgWzcsOCw5XSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlcihzZWxmKToKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMykpLCBzaGFwZT1bM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZ2V0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMpKSwgc2hhcGU9WzNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGdldF9wb2ludGVyKG5kLCBbaV0pKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV90b2xpc3RfbnVsbF9zdHJpZGVzKHNlbGYpOgorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyMCkpLCBzaGFwZT1bMiwyLDVdKQorCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX05EfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2NtcF9jb250aWcoc2VsZik6CisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbXBfY29udGlnKGIiMTIzIiwgYiI0NTYiKSkKKworICAgICAgICB4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICB5ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVs0LDNdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNtcF9jb250aWcoeCwgeSkpCisKKyAgICAgICAgeCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iQiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKHgsIGInXHgwMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY21wX2NvbnRpZyhiJ1x4MDEnLCB4KSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaGFzaChzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwyLDNdKQorICAgICAgICBuZCA9IG5kYXJyYXkoYSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbmQpCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwKKyAgICAgICAgYiA9IGJ5dGVzKGxpc3QocmFuZ2UoMTIpKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgQy1jb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDIsMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBGb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgYiA9IGJ5dGVzKHRyYW5zcG9zZShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVs0LDNdKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgYiA9IGJ5dGVzKHRyYW5zcG9zZShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0pKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgc3Vib2Zmc2V0cworICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBub24tYnl0ZSBmb3JtYXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2gobmQudG9ieXRlcygpKSkKKworICAgIGRlZiB0ZXN0X3B5X2J1ZmZlcl90b19jb250aWd1b3VzKHNlbGYpOgorCisgICAgICAgICMgVGhlIHJlcXVlc3RzIGFyZSB1c2VkIGluIF90ZXN0YnVmZmVyLmM6cHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMKKyAgICAgICAgIyB0byBnZW5lcmF0ZSBidWZmZXJzIHdpdGhvdXQgZnVsbCBpbmZvcm1hdGlvbiBmb3IgdGVzdGluZy4KKyAgICAgICAgcmVxdWVzdHMgPSAoCisgICAgICAgICAgICAjIGRpc3RpbmN0IGZsYWdzCisgICAgICAgICAgICBQeUJVRl9JTkRJUkVDVCwgUHlCVUZfU1RSSURFUywgUHlCVUZfTkQsIFB5QlVGX1NJTVBMRSwKKyAgICAgICAgICAgICMgY29tcG91bmQgcmVxdWVzdHMKKyAgICAgICAgICAgIFB5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sCisgICAgICAgICAgICBQeUJVRl9SRUNPUkRTLCBQeUJVRl9SRUNPUkRTX1JPLAorICAgICAgICAgICAgUHlCVUZfU1RSSURFRCwgUHlCVUZfU1RSSURFRF9STywKKyAgICAgICAgICAgIFB5QlVGX0NPTlRJRywgUHlCVUZfQ09OVElHX1JPLAorICAgICAgICApCisKKyAgICAgICAgIyBubyBidWZmZXIgaW50ZXJmYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMsIHt9LCAnRicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX0ZVTExfUk8pCisKKyAgICAgICAgIyBzY2FsYXIsIHJlYWQtb25seSByZXF1ZXN0CisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoOCkpLCBzaGFwZT1bMiwgMCwgN10sIGZvcm1hdD0iTCIsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgIyMjIE9uZS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHRyaXZpYWwsIHNpbmNlIEZvcnRyYW4gYW5kIEMgb3JkZXIKKyAgICAgICAgIyMjIGFyZSB0aGUgc2FtZS4KKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbAorICAgICAgICBmb3IgZiBpbiBbMCwgTkRfRk9SVFJBTl06CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iaCIsIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBuZGJ5dGVzID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVszXSwgZm9ybWF0PSJiIiwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9TVFJJREVTLCBQeUJVRl9GVUxMXToKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICBuZCA9IG5kWzo6LTFdCisgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgICMjIworICAgICAgICAjIyMgTXVsdGktZGltZW5zaW9uYWwgYXJyYXlzOgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIFRoZSBnb2FsIGhlcmUgaXMgdG8gcHJlc2VydmUgdGhlIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgICMjIyBpbnB1dCBhcnJheSBidXQgY2hhbmdlIHRoZSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBpZiBuZWNlc3NhcnkuCisgICAgICAgICMjIworICAgICAgICAjIyMgX3Rlc3RidWZmZXIgZXhhbXBsZToKKyAgICAgICAgIyMjID09PT09PT09PT09PT09PT09PT09CisgICAgICAgICMjIworICAgICAgICAjIyMgICAgQyBpbnB1dCBhcnJheToKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kLnRvbGlzdCgpCisgICAgICAgICMjIyAgICAgICBbWzAsIDEsIDIsIDNdLAorICAgICAgICAjIyMgICAgICAgIFs0LCA1LCA2LCA3XSwKKyAgICAgICAgIyMjICAgICAgICBbOCwgOSwgMTAsIDExXV0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBGb3J0cmFuIG91dHB1dDoKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICMjIyAgICAgICA+Pj4gYidceDAwXHgwNFx4MDhceDAxXHgwNVx0XHgwMlx4MDZcblx4MDNceDA3XHgwYicKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBUaGUgcmV0dXJuIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoaXMgaW5wdXQgbGlzdCBmb3IKKyAgICAgICAgIyMjICAgIF90ZXN0YnVmZmVyJ3MgbmRhcnJheToKKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoWzAsNCw4LDEsNSw5LDIsNiwxMCwzLDcsMTFdLCBzaGFwZT1bMyw0XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgIyMjICAgICAgID4+PiBuZC50b2xpc3QoKQorICAgICAgICAjIyMgICAgICAgW1swLCAxLCAyLCAzXSwKKyAgICAgICAgIyMjICAgICAgICBbNCwgNSwgNiwgN10sCisgICAgICAgICMjIyAgICAgICAgWzgsIDksIDEwLCAxMV1dCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgVGhlIGxvZ2ljYWwgYXJyYXkgaXMgdGhlIHNhbWUsIGJ1dCB0aGUgdmFsdWVzIGluIG1lbW9yeSBhcmUgbm93CisgICAgICAgICMjIyAgICBpbiBGb3J0cmFuIG9yZGVyLgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIE51bVB5IGV4YW1wbGU6CisgICAgICAgICMjIyA9PT09PT09PT09PT09PQorICAgICAgICAjIyMgICAgX3Rlc3RidWZmZXIncyBuZGFycmF5IHRha2VzIGxpc3RzIHRvIGluaXRpYWxpemUgdGhlIG1lbW9yeS4KKyAgICAgICAgIyMjICAgIEhlcmUncyB0aGUgc2FtZSBzZXF1ZW5jZSBpbiBOdW1QeToKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBDIGlucHV0OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoYnVmZmVyPWJ5dGVhcnJheShsaXN0KHJhbmdlKDEyKSkpLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZT1bMywgNF0sIGR0eXBlPSdCJykKKyAgICAgICAgIyMjICAgICAgID4+PiBuZAorICAgICAgICAjIyMgICAgICAgYXJyYXkoW1sgMCwgIDEsICAyLCAgM10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSwgZHR5cGU9dWludDgpCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgRm9ydHJhbiBvdXRwdXQ6CisgICAgICAgICMjIyAgICAtLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBmb3J0cmFuX2J1ZiA9IG5kLnRvc3RyaW5nKG9yZGVyPSdGJykKKyAgICAgICAgIyMjICAgICAgID4+PiBmb3J0cmFuX2J1ZgorICAgICAgICAjIyMgICAgICAgYidceDAwXHgwNFx4MDhceDAxXHgwNVx0XHgwMlx4MDZcblx4MDNceDA3XHgwYicKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGJ1ZmZlcj1mb3J0cmFuX2J1Ziwgc2hhcGU9WzMsIDRdLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT0nQicsIG9yZGVyPSdGJykKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQKKyAgICAgICAgIyMjICAgICAgIGFycmF5KFtbIDAsICAxLCAgMiwgIDNdLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgNCwgIDUsICA2LCAgN10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0sIGR0eXBlPXVpbnQ4KQorICAgICAgICAjIyMKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBjb250aWd1b3VzIGlucHV0CisgICAgICAgIGxzdCA9IGxpc3QocmFuZ2UoMTIpKQorICAgICAgICBmb3IgZiBpbiBbMCwgTkRfRk9SVFJBTl06CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICBuYSA9IG51bXB5X2FycmF5KGJ1ZmZlcj1ieXRlYXJyYXkobHN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVszLCA0XSwgZHR5cGU9J0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI9J0MnIGlmIGYgPT0gMCBlbHNlICdGJykKKworICAgICAgICAgICAgIyAnQycgcmVxdWVzdAorICAgICAgICAgICAgaWYgZiA9PSBORF9GT1JUUkFOOiAjICdGJyB0byAnQycKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbNCwgM10pLCBzaGFwZT1bMywgNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSB4LnRvYnl0ZXMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdDJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYSBDIGFycmF5IHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQgYXJyYXkuCisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdDJykpCisKKyAgICAgICAgICAgICMgJ0YnIHJlcXVlc3QKKyAgICAgICAgICAgIGlmIGYgPT0gMDogIyAnQycgdG8gJ0YnCisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzMsIDRdKSwgc2hhcGU9WzQsIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBleHBlY3RlZCA9IHgudG9ieXRlcygpCisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiBbUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywgUHlCVUZfSU5ESVJFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfU1RSSURFUywgUHlCVUZfTkRdOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhIEZvcnRyYW4gYXJyYXkgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCBhcnJheS4KKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9GT1JUUkFOfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuYS50b3N0cmluZyhvcmRlcj0nRicpKQorCisgICAgICAgICAgICAjICdBJyByZXF1ZXN0CisgICAgICAgICAgICBpZiBmID09IE5EX0ZPUlRSQU46CisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0geC50b2J5dGVzKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLCBQeUJVRl9JTkRJUkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORF06CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdBJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYW4gYXJyYXkgd2l0aCBvcmRlcj1mIHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQKKyAgICAgICAgICAgICAgICAjIGFycmF5LgorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdBJykpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisKKyAgICAgICAgIyAnQycKKyAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnQycsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAjICdGJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzMsIDRdKSwgc2hhcGU9WzQsIDNdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB4LnRvYnl0ZXMoKSkKKyAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfRk9SVFJBTnxORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAjICdBJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdBJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb25zdHJ1Y3Rpb24oc2VsZik6CisKKyAgICAgICAgaXRlbXNfc2hhcGUgPSBbKDksIFtdKSwgKFsxLDIsM10sIFszXSksIChsaXN0KHJhbmdlKDIqMyo1KSksIFsyLDMsNV0pXQorCisgICAgICAgICMgTnVtUHkgc3R5bGUsIEMtY29udGlndW91czoKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNfY29udGlndW91cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNvbnRpZ3VvdXMpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnQycpCisgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiBubyBzdHJpZGVzCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zdHJpZGVzLCAoKSkKKyAgICAgICAgICAgIG0gPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogbm8gZm9ybWF0LCBzaGFwZSwgc3RyaWRlcworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5mb3JtYXQsICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zaGFwZSwgKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnN0cmlkZXMsICgpKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorCisgICAgICAgICAgICBsc3QgPSBbaXRlbXNdIGlmIG5kaW0gPT0gMCBlbHNlIGl0ZW1zCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVtleC5uYnl0ZXNdLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgTnVtUHkgc3R5bGUsIEZvcnRyYW4gY29udGlndW91czoKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmZfY29udGlndW91cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNvbnRpZ3VvdXMpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnRicpCisgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAjIFBJTCBzdHlsZToKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZVsxOl06CisKKyAgICAgICAgICAgICMgRnJvbSBQRVAtMzExOCBjb21wbGlhbnQgZXhwb3J0ZXI6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPWV4LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPWV4LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbW9yeXZpZXcsIGInOScsICd4JykKKyAgICAgICAgIyBOb3QgYSBidWZmZXIgcHJvdmlkZXI6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtb3J5dmlldywge30pCisgICAgICAgICMgTm9uLWNvbXBsaWFudCBidWZmZXIgcHJvdmlkZXI6CisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisKKyAgICAgICAgIyBuZGltID4gNjQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSoxMjgsIHNoYXBlPVsxXSoxMjgsIGZvcm1hdD0nTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCAnRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZFs6Oi0xXSwgUHlCVUZfUkVBRCwgJ0MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0X3plcm9fc2hhcGUoc2VsZik6CisgICAgICAgICMgQ2FzdHMgYXJlIHVuZGVmaW5lZCBpZiBzaGFwZSBjb250YWlucyB6ZXJvcy4gVGhlc2UgYXJyYXlzIGFyZQorICAgICAgICAjIHJlZ2FyZGVkIGFzIEMtY29udGlndW91cyBieSBOdW1weSBhbmQgUHlCdWZmZXJfR2V0Q29udGlndW91cygpLAorICAgICAgICAjIHNvIHRoZXkgYXJlIG5vdCBjYXVnaHQgYnkgdGhlIHRlc3QgZm9yIEMtY29udGlndWl0eSBpbiBtZW1vcnlfY2FzdCgpLgorICAgICAgICBpdGVtcyA9IFsxLDIsM10KKyAgICAgICAgZm9yIHNoYXBlIGluIChbMCwzLDNdLCBbMywwLDNdLCBbMCwzLDNdKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXguY19jb250aWd1b3VzKQorICAgICAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgJ2MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zdHJ1Y3RfbW9kdWxlKHNlbGYpOgorCisgICAgICAgIGNsYXNzIElOVChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKKyAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbAorCisgICAgICAgIGNsYXNzIElEWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsCisKKyAgICAgICAgZGVmIGYoKTogcmV0dXJuIDcKKworICAgICAgICB2YWx1ZXMgPSBbSU5UKDkpLCBJRFgoOSksCisgICAgICAgICAgICAgICAgICAyLjIrM2osIERlY2ltYWwoIi0yMS4xIiksIDEyLjIsIEZyYWN0aW9uKDUsIDIpLAorICAgICAgICAgICAgICAgICAgWzEsMiwzXSwgezQsNSw2fSwgezc6OH0sICgpLCAoOSwpLAorICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vdEltcGxlbWVudGVkLAorICAgICAgICAgICAgICAgICAgYidhJywgYidhYmMnLCBieXRlYXJyYXkoYidhJyksIGJ5dGVhcnJheShiJ2FiYycpLAorICAgICAgICAgICAgICAgICAgJ2EnLCAnYWJjJywgcidhJywgcidhYmMnLAorICAgICAgICAgICAgICAgICAgZiwgbGFtYmRhIHg6IHhdCisKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIGl0ZW0gaW4gaXRlcl9mb3JtYXQoMTAsICdtZW1vcnl2aWV3Jyk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMF0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTBdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICBzdHJ1Y3QucGFja19pbnRvKGZtdCwgbmQsIDAsIGl0ZW0pCisgICAgICAgICAgICBtWzBdID0gaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBuZFswXSkKKworICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgaWYgJ1AnIGluIGZtdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgdiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc3RydWN0X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBuZCwgaXRlbXNpemUsIHYpCisgICAgICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0X2VyciA9IHN0cnVjdC5lcnJvcgorCisgICAgICAgICAgICAgICAgbXZfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbVsxXSA9IHYKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbXZfZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgIGlmIHN0cnVjdF9lcnIgb3IgbXZfZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHN0cnVjdF9lcnIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobXZfZXJyLCBOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgbmRbMV0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfemVyb19zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIENhc3RzIGFyZSB1bmRlZmluZWQgaWYgc3RyaWRlcyBjb250YWlucyB6ZXJvcy4gVGhlc2UgYXJyYXlzIGFyZQorICAgICAgICAjIChzb21ldGltZXMhKSByZWdhcmRlZCBhcyBDLWNvbnRpZ3VvdXMgYnkgTnVtcHksIGJ1dCBub3QgYnkKKyAgICAgICAgIyBQeUJ1ZmZlcl9HZXRDb250aWd1b3VzKCkuCisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIHN0cmlkZXM9WzBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmNfY29udGlndW91cykKKyAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCAnYycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfaW52YWxpZChzZWxmKToKKyAgICAgICAgIyBpbnZhbGlkIGZvcm1hdAorICAgICAgICBmb3Igc2ZtdCBpbiBOT05fQllURV9GT1JNQVQ6CisgICAgICAgICAgICBzZm9ybWF0ID0gJ0AnICsgc2ZtdCBpZiByYW5kcmFuZ2UoMikgZWxzZSBzZm10CisgICAgICAgICAgICBzc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShzZm9ybWF0KQorICAgICAgICAgICAgZm9yIGRmbXQgaW4gTk9OX0JZVEVfRk9STUFUOgorICAgICAgICAgICAgICAgIGRmb3JtYXQgPSAnQCcgKyBkZm10IGlmIHJhbmRyYW5nZSgyKSBlbHNlIGRmbXQKKyAgICAgICAgICAgICAgICBkc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShkZm9ybWF0KQorICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDMyKSksIHNoYXBlPVszMi8vc3NpemVdLCBmb3JtYXQ9c2Zvcm1hdCkKKyAgICAgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwgWzMyLy9kc2l6ZV0pCisKKyAgICAgICAgZm9yIHNmbXQsIHNpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgxKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShzaXRlbXMsIHNoYXBlPVsxXSwgZm9ybWF0PXNmbXQpCisgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGZvciBkZm10LCBfLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgorICAgICAgICAgICAgICAgIGlmIChub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoc2ZtdCkgb3IKKyAgICAgICAgICAgICAgICAgICAgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGRmbXQpKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMzIvL2RzaXplXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfYnl0ZV9mb3JtYXQoc2ZtdCkgYW5kIG5vdCBpc19ieXRlX2Zvcm1hdChkZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMyLy9kc2l6ZV0pCisKKyAgICAgICAgIyBpbnZhbGlkIHNoYXBlCisgICAgICAgIHNpemVfaCA9IHN0cnVjdC5jYWxjc2l6ZSgnaCcpCisgICAgICAgIHNpemVfZCA9IHN0cnVjdC5jYWxjc2l6ZSgnZCcpCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqMipzaXplX2QpKSwgc2hhcGU9WzIsMixzaXplX2RdLCBmb3JtYXQ9J2gnKQorICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsIHNoYXBlPVsyLDIsc2l6ZV9oXSwgZm9ybWF0PSdkJykKKworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgMSwgMiwgMykKKworICAgICAgICAjIGluY29ycmVjdCBkZXN0IGZvcm1hdCB0eXBlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCB7fSkKKworICAgICAgICAjIGluY29ycmVjdCBkZXN0IGZvcm1hdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJYIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQFgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJAWFkiKQorCisgICAgICAgICMgZGVzdCBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIj1CIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiIUwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICI8UCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIj5sIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQkkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJ4QkkiKQorCisgICAgICAgICMgc3JjIGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgZXggPSBuZGFycmF5KFsoMSwyKSwgKDMsNCldLCBzaGFwZT1bMl0sIGZvcm1hdD0iSUkiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgIyBpbmNvcnJlY3Qgc2hhcGUgdHlwZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT17fSkKKworICAgICAgICAjIGluY29ycmVjdCBzaGFwZSBlbGVtZW50cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzIqMyo0KjVdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyKio2NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bLTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LC0xXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1LDYsNywwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LCd4J10pCisKKyAgICAgICAgIyBOLUQgLT4gTi1EIGNhc3QKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QoWzkgZm9yIF8gaW4gcmFuZ2UoMyo1KjcqMTEpXSksIHNoYXBlPVszLDUsNywxMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkkiLCBzaGFwZT1bMiwzLDQsNV0pCisKKyAgICAgICAgIyBjYXN0IHdpdGggbmRpbSA+IDY0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdJJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgJ0knLCBbMV0qMTI4KQorCisgICAgICAgICMgdmlldy0+bGVuIG5vdCBhIG11bHRpcGxlIG9mIGl0ZW1zaXplCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KFs5IGZvciBfIGluIHJhbmdlKDMqNSo3KjExKV0pLCBzaGFwZT1bMyo1KjcqMTFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJJIiwgc2hhcGU9WzIsMyw0LDVdKQorCisgICAgICAgICMgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBidWZmZXIgc2l6ZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChbOSBmb3IgXyBpbiByYW5nZSgzKjUqNyoxMSldKSwgc2hhcGU9WzMqNSo3KjExXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1XSkKKworICAgICAgICAjIHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgb3ZlcmZsb3cKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0knKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdCJykKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBpZiBzeXMubWF4c2l6ZSA9PSAyKio2My0xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNywgNywgNzMsIDEyNywgMzM3LCA5MjczNywgNjQ5NjU3XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioyMCwgMioqMjAsIDIqKjEwLCAyKioxMCwgMioqM10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5jYXN0LCAnSScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMjAsIDIqKjIwLCAyKioxMCwgMioqMTAsIDIqKjFdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMSwgMjE0NzQ4MzY0N10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMTAsIDIqKjEwLCAyKio1LCAyKio1LCAyKioxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLmNhc3QsICdJJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioxMCwgMioqMTAsIDIqKjUsIDIqKjMsIDIqKjFdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0KHNlbGYpOgorICAgICAgICBieXRlc3BlYyA9ICgKKyAgICAgICAgICAoJ0InLCBsYW1iZGEgZXg6IGxpc3QoZXgudG9ieXRlcygpKSksCisgICAgICAgICAgKCdiJywgbGFtYmRhIGV4OiBbeC0yNTYgaWYgeCA+IDEyNyBlbHNlIHggZm9yIHggaW4gbGlzdChleC50b2J5dGVzKCkpXSksCisgICAgICAgICAgKCdjJywgbGFtYmRhIGV4OiBbYnl0ZXMoY2hyKHgpLCAnbGF0aW4tMScpIGZvciB4IGluIGxpc3QoZXgudG9ieXRlcygpKV0pLAorICAgICAgICApCisKKyAgICAgICAgZGVmIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KToKKyAgICAgICAgICAgIHNyY3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIGJ5dGVmbXQsIHRvX2J5dGVsaXN0IGluIGJ5dGVzcGVjOgorCisgICAgICAgICAgICAgICAgbTIgPSBtLmNhc3QoYnl0ZWZtdCkKKyAgICAgICAgICAgICAgICBsc3QgPSB0b19ieXRlbGlzdChleCkKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1ieXRlZm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzMxKnNyY3NpemVdLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgbTMgPSBtMi5jYXN0KGZtdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zLCBleCkKKyAgICAgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0zLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c3Jjc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVszMV0sIHN0cmlkZXM9KHNyY3NpemUsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgIyBjYXN0IGZyb20gbmRpbSA9IDAgdG8gbmRpbSA9IDEKKyAgICAgICAgc3Jjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnSScpCisgICAgICAgIGV4ID0gbmRhcnJheSg5LCBzaGFwZT1bXSwgZm9ybWF0PSdJJykKKyAgICAgICAgZGVzdGl0ZW1zLCBkZXN0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCAnQicsIDEpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtMiA9IG0uY2FzdCgnQicpCisgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9ZGVzdHNoYXBlLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgIGxzdD1kZXN0aXRlbXMsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAjIGNhc3QgZnJvbSBuZGltID0gMSB0byBuZGltID0gMAorICAgICAgICBkZXN0c2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnSScpCisgICAgICAgIGV4ID0gbmRhcnJheShbOV0qZGVzdHNpemUsIHNoYXBlPVtkZXN0c2l6ZV0sIGZvcm1hdD0nQicpCisgICAgICAgIGRlc3RpdGVtcywgZGVzdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgJ0knLCBkZXN0c2l6ZSwgc2hhcGU9W10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtMiA9IG0uY2FzdCgnSScsIHNoYXBlPVtdKQorICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1kZXN0c2l6ZSwgZm10PSdJJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0wLCBzaGFwZT0oKSwgc3RyaWRlcz0oKSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWRlc3RpdGVtcywgY2FzdD1UcnVlKQorCisgICAgICAgICMgYXJyYXkuYXJyYXk6IHJvdW5kdHJpcCB0by9mcm9tIGJ5dGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDMxLCAnYXJyYXknKToKKyAgICAgICAgICAgIGV4ID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpCisKKyAgICAgICAgIyBuZGFycmF5OiByb3VuZHRyaXAgdG8vZnJvbSBieXRlcworICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgzMSwgJ21lbW9yeXZpZXcnKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMxXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0XzFEX05EKHNlbGYpOgorICAgICAgICAjIENhc3QgYmV0d2VlbiBDLWNvbnRpZ3VvdXMgYnVmZmVycy4gQXQgbGVhc3Qgb25lIGJ1ZmZlciBtdXN0CisgICAgICAgICMgYmUgMUQsIGF0IGxlYXN0IG9uZSBmb3JtYXQgbXVzdCBiZSAnYycsICdiJyBvciAnQicuCisgICAgICAgIGZvciBfdHNoYXBlIGluIGdlbmNhc3RzaGFwZXMoKToKKyAgICAgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICB0Zm10ID0gKCcnLCAnQCcpW3JhbmRyYW5nZSgyKV0gKyBjaGFyCisgICAgICAgICAgICAgICAgdHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUodGZtdCkKKyAgICAgICAgICAgICAgICBuID0gcHJvZChfdHNoYXBlKSAqIHRzaXplCisgICAgICAgICAgICAgICAgb2JqID0gJ21lbW9yeXZpZXcnIGlmIGlzX2J5dGVfZm9ybWF0KHRmbXQpIGVsc2UgJ2J5dGVmbXQnCisgICAgICAgICAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobiwgb2JqKToKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gW25dIGlmIG4gPiAwIGVsc2UgW10KKyAgICAgICAgICAgICAgICAgICAgdHNoYXBlID0gX3RzaGFwZSArIFtzaXplXQorCisgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICAgICAgICAgIHRpdGVtcywgdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgdGZtdCwgdHNpemUsIHNoYXBlPXRzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBpZiB0aXRlbXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCB0Zm10LCB0c2hhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiB0aXRlbXMgPT0gJ25hbic6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIE5hTnMgaW4gbGlzdHMgYXJlIGEgcmVjaXBlIGZvciB0cm91YmxlLgorCisgICAgICAgICAgICAgICAgICAgICMgMUQgLT4gTkQKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KHRpdGVtcywgc2hhcGU9dHNoYXBlLCBmb3JtYXQ9dGZtdCkKKworICAgICAgICAgICAgICAgICAgICBtMiA9IG0uY2FzdCh0Zm10LCBzaGFwZT10c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIG5kaW0gPSBsZW4odHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gbmQuc3RyaWRlcworICAgICAgICAgICAgICAgICAgICBsc3QgPSBuZC50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT10c2l6ZSwgZm10PXRmbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9dHNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAgICAgICAgICAgICAjIE5EIC0+IDFECisgICAgICAgICAgICAgICAgICAgIG0zID0gbTIuY2FzdChmbXQpCisgICAgICAgICAgICAgICAgICAgIG00ID0gbTIuY2FzdChmbXQsIHNoYXBlPXNoYXBlKQorICAgICAgICAgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gZXguc3RyaWRlcworICAgICAgICAgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0zLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG00LCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2xpc3Qoc2VsZik6CisKKyAgICAgICAgIyBNb3N0IHRvbGlzdCgpIHRlc3RzIGFyZSBpbiBzZWxmLnZlcmlmeSgpIGV0Yy4KKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2gnLCBsaXN0KHJhbmdlKC02LCA2KSkpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorCisgICAgICAgIGEgPSBhWzI6OjNdCisgICAgICAgIG0gPSBtWzI6OjNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqMyo1KjcqMTEpKSwgc2hhcGU9WzExLDIsNywzLDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgICAgICBleCA9IG5kYXJyYXkoWygyLCA1KSwgKDcsIDExKV0sIHNoYXBlPVsyXSwgZm9ybWF0PSdsaCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2InMTIzNDUnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9InMiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiImEiLGIiYiIsYiJjIixiImQiLGIiZSIsYiJmIl0sIHNoYXBlPVsyLDNdLCBmb3JtYXQ9J3MnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlcHIoc2VsZik6CisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVhcnJheSg5KSkKKyAgICAgICAgciA9IG0uX19yZXByX18oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8bWVtb3J5IikpCisKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgciA9IG0uX19yZXByX18oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8cmVsZWFzZWQiKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2VxdWVuY2Uoc2VsZik6CisKKyAgICAgICAgZm9yIGZtdCBpbiAoJ2QnLCAnZicpOgorICAgICAgICAgICAgaW5mID0gZmxvYXQoM2U0MDApCisgICAgICAgICAgICBleCA9IGFycmF5LmFycmF5KGZtdCwgWzEuMCwgaW5mLCAzLjBdKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDEuMCwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oNWU3MDAsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDMuMCwgbSkKKworICAgICAgICBleCA9IG5kYXJyYXkoOS4wLCBbXSwgZm9ybWF0PSdmJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjkuMCBpbiBtIiwgbG9jYWxzKCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2luZGV4KHNlbGYpOgorCisgICAgICAgICMgbmRpbSA9IDAKKyAgICAgICAgZXggPSBuZGFycmF5KDEyLjUsIHNoYXBlPVtdLCBmb3JtYXQ9J2QnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMTIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy4uLl0sIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsuLi5dLCBleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorCisgICAgICAgIGV4ID0gbmRhcnJheSgoMSwyLDMpLCBzaGFwZT1bXSwgZm9ybWF0PSdpaWknKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisKKyAgICAgICAgIyByYW5nZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDIqKjY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDIuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwLjApCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIC04KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCA4KQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Fzc2lnbihzZWxmKToKKworICAgICAgICAjIG5kaW0gPSAwCisgICAgICAgIGV4ID0gbmRhcnJheSgxMi41LCBzaGFwZT1bXSwgZm9ybWF0PSdmJywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWygpXSA9IDIyLjUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMjIuNSkKKyAgICAgICAgbVsuLi5dID0gMjMuNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAyMy41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDI0LjcpCisKKyAgICAgICAgIyByZWFkLW9ubHkKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDIsIDEwKQorCisgICAgICAgICMgcmFuZ2UKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCAyKio2NCwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAyLjAsIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAuMCwgMTEpCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sIC04LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgOCwgMjUpCisKKyAgICAgICAgIyBwYWNrX3NpbmdsZSgpIHN1Y2Nlc3M6CisgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgaWYgZm10ID09ICdjJyBvciBmbXQgPT0gJz8nOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaSA9IHJhbmRyYW5nZSgtMywgMykKKyAgICAgICAgICAgIG1baV0gPSA4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1baV0sIDgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1baV0sIGV4W2ldKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxJywgYicyJywgYiczJ10sIHNoYXBlPVszXSwgZm9ybWF0PSdjJywKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVsyXSA9IGInOScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBiJzknKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbVHJ1ZSwgRmFsc2UsIFRydWVdLCBzaGFwZT1bM10sIGZvcm1hdD0nPycsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bMV0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgVHJ1ZSkKKworICAgICAgICAjIHBhY2tfc2luZ2xlKCkgZXhjZXB0aW9uczoKKyAgICAgICAgbmQgPSBuZGFycmF5KFtiJ3gnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9J2MnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMTAwKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBmb3IgZm10LCBfcmFuZ2UgaW4gZm10ZGljdFsnQCddLml0ZW1zKCk6CisgICAgICAgICAgICBpZiAoZm10ID09ICc/Jyk6ICMgUHlPYmplY3RfSXNUcnVlKCkgYWNjZXB0cyBhbnl0aGluZworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBmbXQgPT0gJ2MnOiAjIHNwZWNpYWwgY2FzZSB0ZXN0ZWQgYWJvdmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbTIgPSBtMS5jYXN0KGZtdCkKKyAgICAgICAgICAgIGxvLCBoaSA9IF9yYW5nZQorICAgICAgICAgICAgaWYgZm10ID09ICdkJyBvciBmbXQgPT0gJ2YnOgorICAgICAgICAgICAgICAgIGxvLCBoaSA9IC0yKioxMDI0LCAyKioxMDI0CisgICAgICAgICAgICBpZiBmbXQgIT0gJ1AnOiAjIFB5TG9uZ19Bc1ZvaWRQdHIoKSBhY2NlcHRzIG5lZ2F0aXZlIG51bWJlcnMKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgbG8tMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCAieHl6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBoaSkKKworICAgICAgICAjIGludmFsaWQgaXRlbQorICAgICAgICBtMiA9IG0xLmNhc3QoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgYidceGZmXHhmZicpCisKKyAgICAgICAgIyBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEpKSwgc2hhcGU9WzFdLCBmb3JtYXQ9InhMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxMjM0NSddLCBzaGFwZT1bMV0sIGZvcm1hdD0icyIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMSkKKworICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCBbMiwgM10pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NsaWNlKHNlbGYpOgorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAjIHplcm8gc3RlcAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCBzbGljZSgwLDIsMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMiwwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIGludmFsaWQgc2xpY2Uga2V5CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisKKyAgICAgICAgIyBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMiwxKSwgc2xpY2UoMCwyLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMiwxKSwgc2xpY2UoMCwyLDEpKSwgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIGludmFsaWQgc2xpY2UgdHVwbGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoc2xpY2UoMCwyLDEpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgKHNsaWNlKDAsMiwxKSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhbiBleHBvcnRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgWzFdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMgc2xpY2UgYXNzaWdubWVudAorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bLTFdLCBvZmZzZXQ9MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfGZsYWdzKQorICAgICAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDI0KSksIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhleDEpCisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcoZXgyKQorCisgICAgICAgICAgICBleDFbMjo1XSA9IGV4MVsyOjVdCisgICAgICAgICAgICBtMVsyOjVdID0gbTJbMjo1XQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgIGV4MVsxOjNdWzo6LTFdID0gZXgyWzA6Ml1bOjoxXQorICAgICAgICAgICAgbTFbMTozXVs6Oi0xXSA9IG0yWzA6Ml1bOjoxXQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgIGV4MVs0OjE6LTJdWzo6LTFdID0gZXgxWzE6NDoyXVs6OjFdCisgICAgICAgICAgICBtMVs0OjE6LTJdWzo6LTFdID0gbTFbMTo0OjJdWzo6MV0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19hcnJheShzZWxmKToKKworICAgICAgICBkZWYgY21wdGVzdCh0ZXN0Y2FzZSwgYSwgYiwgbSwgc2luZ2xlaXRlbSk6CisgICAgICAgICAgICBmb3IgaSwgXyBpbiBlbnVtZXJhdGUoYSk6CisgICAgICAgICAgICAgICAgYWkgPSBhW2ldCisgICAgICAgICAgICAgICAgbWkgPSBtW2ldCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYWksIG1pKQorICAgICAgICAgICAgICAgIGFbaV0gPSBzaW5nbGVpdGVtCisgICAgICAgICAgICAgICAgaWYgc2luZ2xlaXRlbSAhPSBhaToKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0Tm90RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICAgICAgICAgIG1baV0gPSBzaW5nbGVpdGVtCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChiLCBtKQorICAgICAgICAgICAgICAgIGFbaV0gPSBhaQorICAgICAgICAgICAgICAgIG1baV0gPSBtaQorCisgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gaW4gaXRlcl9mb3JtYXQobiwgJ2FycmF5Jyk6CisgICAgICAgICAgICAgICAgZm9yIGxzbGljZSBpbiBnZW5zbGljZXMobik6CisgICAgICAgICAgICAgICAgICAgIGZvciByc2xpY2UgaW4gZ2Vuc2xpY2VzKG4pOgorCisgICAgICAgICAgICAgICAgICAgICAgICBhID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYS50b2J5dGVzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgbGVuKGEpKQorCisgICAgICAgICAgICAgICAgICAgICAgICBjbXB0ZXN0KHNlbGYsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfcmVzaXplID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsID0gYVtsc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXIgPSBhW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2xzbGljZV0gPSBhW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX3Jlc2l6ZSA9IGxlbihhbCkgIT0gbGVuKGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1bbHNsaWNlXSA9IG1bcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGF2ZV9yZXNpemU6ICMgbWVtb3J5dmlldyBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtX2VyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbV9lcnIgb3IgYXJyYXlfZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobV9lcnIsIGFycmF5X2VycikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgYS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBhLnRvYnl0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXB0ZXN0KHNlbGYsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfc3BlY2lhbF9jYXNlcyhzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwgMiwgM10pCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnTCcsIFsxLCAyLCA3XSkKKworICAgICAgICAjIE9yZGVyaW5nIGNvbXBhcmlzb25zIHJhaXNlOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhiKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ19fbHRfXycsICdfX2xlX18nLCAnX19ndF9fJywgJ19fZ2VfXycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHYsIGF0dHIpKHcpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihhLCBhdHRyKSh2KSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICAgICAgIyBSZWxlYXNlZCB2aWV3cyBjb21wYXJlIGVxdWFsIHRvIHRoZW1zZWx2ZXM6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHYucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHYpCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdy5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisKKyAgICAgICAgIyBPcGVyYW5kIGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyIHByb3RvY29sOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIFsxLCAyLCAzXSkKKworICAgICAgICAjIE5hTnMKKyAgICAgICAgbmQgPSBuZGFycmF5KFsoMCwgMCldLCBzaGFwZT1bMV0sIGZvcm1hdD0nbCB4IGQgeCcsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBuZFswXSA9ICgtMSwgZmxvYXQoJ25hbicpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG1lbW9yeXZpZXcobmQpLCBuZCkKKworICAgICAgICAjIERlcGVuZHMgb24gaXNzdWUgIzE1NjI1OiB0aGUgc3RydWN0IG1vZHVsZSBkb2VzIG5vdCB1bmRlcnN0YW5kICd1Jy4KKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgJ3h5eicpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBhKQorCisgICAgICAgICMgU29tZSBjdHlwZXMgZm9ybWF0IHN0cmluZ3MgYXJlIHVua25vd24gdG8gdGhlIHN0cnVjdCBtb2R1bGUuCisgICAgICAgIGlmIGN0eXBlczoKKyAgICAgICAgICAgICMgZm9ybWF0OiAiVHs+bDp4Oj5sOnk6fSIKKyAgICAgICAgICAgIGNsYXNzIEJFUG9pbnQoY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY3R5cGVzLmNfbG9uZyksICgieSIsIGN0eXBlcy5jX2xvbmcpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgcG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBvaW50LCBhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgYS50b2xpc3QpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbmRpbV96ZXJvKHNlbGYpOgorCisgICAgICAgIG5kMSA9IG5kYXJyYXkoMTcyOSwgc2hhcGU9W10sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KDE3MjksIHNoYXBlPVtdLCBmb3JtYXQ9J0wnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMSwgdykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuX19uZV9fKHcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHcuX19uZV9fKHYpKQorCisgICAgICAgIHdbKCldID0gMTcyOAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDEsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2Ll9fZXFfXyh3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3Ll9fZXFfXyh2KSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgbVs5XSA9IDEwMAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0sIG5kKQorCisgICAgICAgICMgc3RydWN0IG1vZHVsZTogZXF1YWwKKyAgICAgICAgbmQxID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J0xmNXMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0naGY1cycsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDEsIHcpCisKKyAgICAgICAgIyBzdHJ1Y3QgbW9kdWxlOiBub3QgZXF1YWwKKyAgICAgICAgbmQxID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J0xmNXMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KCgtMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J2hmNXMnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQxLCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbmRpbV9vbmUoc2VsZik6CisKKyAgICAgICAgIyBjb250aWd1b3VzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIDcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBjb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9JzxpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIDcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSc+aCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBub24tY29udGlndW91cworICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSchaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9JzxsJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzLCBzdWJvZmZzZXRzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSdoICAwYycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9Jz4gIGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV96ZXJvX3NoYXBlKHNlbGYpOgorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstOTAwLCAtOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9Jz0gaDBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTkwMCwgLTk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSdAICAgaScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfemVyb19zdHJpZGVzKHNlbGYpOgorCisgICAgICAgICMgemVybyBzdHJpZGVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTAwLCA5MDAsIDkwMF0sIHNoYXBlPVs0XSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWzkwMF0sIHNoYXBlPVs0XSwgc3RyaWRlcz1bMF0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDkwMCwgOTAwKV0qNCwgc2hhcGU9WzRdLCBmb3JtYXQ9J0AgTGknKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoOTAwLCA5MDApXSwgc2hhcGU9WzRdLCBzdHJpZGVzPVswXSwgZm9ybWF0PSchTCAgaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfcmFuZG9tX2Zvcm1hdHMoc2VsZik6CisKKyAgICAgICAgIyByYW5kb20gc2luZ2xlIGNoYXJhY3RlciBuYXRpdmUgZm9ybWF0cworICAgICAgICBuID0gMTAKKyAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFsnQG0nXToKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gPSByYW5kaXRlbXMobiwgJ21lbW9yeXZpZXcnLCAnQCcsIGNoYXIpCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbl0sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICAgICAgICAgICAgICBuZCA9IG5kWzo6LTNdCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgICAgICAjIHJhbmRvbSBmb3JtYXRzCisgICAgICAgIG4gPSAxMAorICAgICAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAgZm10LCBpdGVtcywgc2luZ2xlaXRlbSA9IHJhbmRpdGVtcyhuKQorICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W25dLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgICAgICAgICAgICAgbmQgPSBuZFs6Oi0zXQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1fYyhzZWxmKToKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMCwgMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMCwgMSwgMildKjMwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPWYgcSB4eEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoLTEuMiwgMSwgMildKjMwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPCBmIDJRJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMCwgMSwgMildKjIxLCBzaGFwZT1bMywgN10sIGZvcm1hdD0nISBiIEIgeEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoMCwgMSwgMildKjIxLCBzaGFwZT1bNywgM10sIGZvcm1hdD0nPSBReCBsIHh4TCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdsJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9mb3J0cmFuKHNlbGYpOgorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDAsIDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMioqNjQtMSwgLTEpXSo2LCBzaGFwZT1bMiwgM10sIGZvcm1hdD0nPVFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoLTEsIDIqKjY0LTEpXSo2LCBzaGFwZT1bMiwgM10sIGZvcm1hdD0nPXFRJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9JzBsbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAYicsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9taXhlZChzZWxmKToKKworICAgICAgICAjIG1peGVkIEMvRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIGxzdDEgPSBsaXN0KHJhbmdlKC0xNSwgMTUpKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBtaXhlZCBDL0ZvcnRyYW4gY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBsc3QxID0gWygtMy4zLCAtMjIsIGIneCcpXSozMAorICAgICAgICBsc3QxWzVdID0gKC0yLjIsIC0yMiwgYid4JykKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisgICAgICAgIG5kMSA9IG5kYXJyYXkobHN0MSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2QgYiBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nZCBoIGMnLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCB2YWx1ZXMsIG5vbi1jb250aWd1b3VzCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nQEknKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0knKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzYW1lIHZhbHVlcywgbm9uLWNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIqKjMxLTEsIC0yKiozMSldKjIyLCBzaGFwZT1bMTEsIDJdLCBmb3JtYXQ9Jz1paScpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKiozMS0xLCAtMioqMzEpXSoyMiwgc2hhcGU9WzExLCAyXSwgZm9ybWF0PSc+aWknKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nQicpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIsIGInMTIzJyldKjMwLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0nYjNzJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygyLCBiJzEyMycpXSozMCwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J2kzcycpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3plcm9fc2hhcGUoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzAsIDMsIDJdLCBmb3JtYXQ9J2knKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDAsIDJdLCBmb3JtYXQ9J0BpJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMCwgMywgMl0sIGZvcm1hdD0naScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMCwgMl0sIGZvcm1hdD0nQGknKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3plcm9fc3RyaWRlcyhzZWxmKToKKworICAgICAgICAjIHplcm8gc3RyaWRlcworICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDBdKjgwLCBzaGFwZT1bNCwgNSwgNF0sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFs5MDBdLCBzaGFwZT1bNCwgNSwgNF0sIHN0cmlkZXM9WzAsIDAsIDBdLCBmb3JtYXQ9J0wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudG9saXN0KCksIHcudG9saXN0KCkpCisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDEsIDIpXSoxMCwgc2hhcGU9WzIsIDVdLCBmb3JtYXQ9Jz1sUScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygxLCAyKV0sIHNoYXBlPVsyLCA1XSwgc3RyaWRlcz1bMCwgMF0sIGZvcm1hdD0nPGxRJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9zdWJvZmZzZXRzKHNlbGYpOgorCisgICAgICAgICMgc3Vib2Zmc2V0cworICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0BJJykKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdJJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjQwLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nPVFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZXgxWzJdWzddID0gKDEsIC0yKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjQwLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nPlFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MlsyXVs3XSA9ICgxLCAtMikKKyAgICAgICAgbmQyID0gZXgyWzE6MzoxLCA6Oi0yXQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdiJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMioqOC0xLCAtMSldKjQwLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nQmInLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgbmQxID0gZXgxWzE6MjosIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjgtMSwgLTEpXSo0MCwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0JiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MjosIDo6LTJdCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBmb3JtYXQKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdpJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdASScsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgZm9ybWF0LCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWyhiJ2hlbGxvJywgYicnLCAxKV0qMjcsIHNoYXBlPVszLCAzLCAzXSwgZm9ybWF0PSc1czBzUCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBleDFbMV1bMl1bMl0gPSAoYidzdXNoaScsIGInJywgMSkKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKGInaGVsbG8nLCBiJycsIDEpXSoyNywgc2hhcGU9WzMsIDMsIDNdLCBmb3JtYXQ9JzVzMHNQJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MVsxXVsyXVsyXSA9IChiJ3N1c2hpJywgYicnLCAxKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKworICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgaW5pdGlhbGl6ZSBtaXhlZCBDL0ZvcnRyYW4gKyBzdWJvZmZzZXRzCisgICAgICAgIGxzdDEgPSBsaXN0KHJhbmdlKC0xNSwgMTUpKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGwnLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLCBmbGFncz1ORF9GT1JUUkFOfE5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBpbml0aWFsaXplIG1peGVkIEMvRm9ydHJhbiArIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbHN0MSA9IFsoYidzYXNoaW1pJywgYidzbGljZWQnLCAyMC4wNSldKjMwCisgICAgICAgIGxzdDFbMTFdID0gKGIncmFtZW4nLCBiJ3NwaWN5JywgOS40NSkKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPCAxMHAgOXAgZCcsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPiAxMHAgOXAgZCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTnxORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX25vdF9lcXVhbChzZWxmKToKKworICAgICAgICAjIGl0ZW1zIG5vdCBlcXVhbAorICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIFsnPScsICc8JywgJz4nLCAnISddOgorICAgICAgICAgICAgeCA9IG5kYXJyYXkoWzIqKjYzXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLCBmb3JtYXQ9Ynl0ZW9yZGVyKydRJykKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KFsyKio2M10qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwgZm9ybWF0PWJ5dGVvcmRlcisnUScsCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICAgICAgeVsyXVszXVsxXVsxXVsxXSA9IDEKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiLCB4KQorCisgICAgICAgICAgICB4ID0gbmRhcnJheShbKDIqKjYzLCAyKiozMSwgMioqMTUpXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWJ5dGVvcmRlcisnUUxIJykKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KFsoMioqNjMsIDIqKjMxLCAyKioxNSldKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Ynl0ZW9yZGVyKydRTEgnLCBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICAgICAgeVsyXVszXVsxXVsxXVsxXSA9ICgxLCAxLCAxKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGIsIHgpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NoZWNrX3JlbGVhc2VkKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1vcnl2aWV3LCBtKQorICAgICAgICAjIG1lbW9yeXZpZXcuY2FzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgJ2MnKQorICAgICAgICAjIGdldGJ1ZmZlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kYXJyYXksIG0pCisgICAgICAgICMgbWVtb3J5dmlldy50b2xpc3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLnRvbGlzdCkKKyAgICAgICAgIyBtZW1vcnl2aWV3LnRvYnl0ZXMoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLnRvYnl0ZXMpCisgICAgICAgICMgc2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXZhbCwgIjEuMCBpbiBtIiwgbG9jYWxzKCkpCisgICAgICAgICMgc3Vic2NyaXB0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgICMgYXNzaWdubWVudAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgIGZvciBhdHRyIGluICgnb2JqJywgJ25ieXRlcycsICdyZWFkb25seScsICdpdGVtc2l6ZScsICdmb3JtYXQnLCAnbmRpbScsCisgICAgICAgICAgICAgICAgICAgICAnc2hhcGUnLCAnc3RyaWRlcycsICdzdWJvZmZzZXRzJywgJ2NfY29udGlndW91cycsCisgICAgICAgICAgICAgICAgICAgICAnZl9jb250aWd1b3VzJywgJ2NvbnRpZ3VvdXMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRhdHRyaWJ1dGVfXywgYXR0cikKKworICAgICAgICAjIHJpY2hjb21wYXJlCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIG0yKQorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtMSwgbTIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobTEsIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIG0xKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2J5dGVzKHNlbGYpOgorICAgICAgICAjIE1hbnkgaW1wbGljaXQgdGVzdHMgYXJlIGFscmVhZHkgaW4gc2VsZi52ZXJpZnkoKS4KKworICAgICAgICB0ID0gKC01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5KQorCisgICAgICAgIG5kID0gbmRhcnJheSh0LCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdF0sIHNoYXBlPVsxXSwgZm9ybWF0PSc+aFFpTGwnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdCBmb3IgXyBpbiByYW5nZSgxMildLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9Jz1oUWlMbCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0IGZvciBfIGluIHJhbmdlKDEyMCldLCBzaGFwZT1bNSwyLDIsMywyXSwKKyAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nPGhRaUxsJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICAjIFVua25vd24gZm9ybWF0cyBhcmUgaGFuZGxlZDogdG9ieXRlcygpIHB1cmVseSBkZXBlbmRzIG9uIGl0ZW1zaXplLgorICAgICAgICBpZiBjdHlwZXM6CisgICAgICAgICAgICAjIGZvcm1hdDogIlR7Pmw6eDo+bDp5On0iCisgICAgICAgICAgICBjbGFzcyBCRVBvaW50KGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGN0eXBlcy5jX2xvbmcpLCAoInkiLCBjdHlwZXMuY19sb25nKV0KKyAgICAgICAgICAgIHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnRvYnl0ZXMoKSwgYnl0ZXMocG9pbnQpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19nZXRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgIyBNYW55IGltcGxpY2l0IHRlc3RzIGFyZSBhbHJlYWR5IGluIHNlbGYudmVyaWZ5KCkuCisKKyAgICAgICAgIyBubyBidWZmZXIgaW50ZXJmYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIHt9LCBQeUJVRl9SRUFELCAnRicpCisKKyAgICAgICAgIyB3cml0YWJsZSByZXF1ZXN0IHRvIHJlYWQtb25seSBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBiJ3gnLCBQeUJVRl9XUklURSwgJ0MnKQorCisgICAgICAgICMgd3JpdGFibGUgcmVxdWVzdCB0byBub24tY29udGlndW91cyBvYmplY3QKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdBJykKKworICAgICAgICAjIHNjYWxhciwgcmVhZC1vbmx5IHJlcXVlc3QgZnJvbSByZWFkLW9ubHkgZXhwb3J0ZXIKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCA5KQorCisgICAgICAgICMgc2NhbGFyLCByZWFkLW9ubHkgcmVxdWVzdCBmcm9tIHdyaXRhYmxlIGV4cG9ydGVyCisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgIyBzY2FsYXIsIHdyaXRhYmxlIHJlcXVlc3QKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG5kWygpXSA9IDkKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgICAgIG1bKCldID0gMTAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFsoKV0sIDEwKQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgW10pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoOCkpLCBzaGFwZT1bMiwgMCwgN10sIGZvcm1hdD0iTCIsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIFtbXSwgW11dKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJoIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVszXSwgZm9ybWF0PSJiIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cworICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMSwgMjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWzFdLCAzKQorCisgICAgICAgIG5kID0gbmRbOjotMV0KKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMSwgMjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWzFdLCAxKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIGNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdGJykKKyAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0MnKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzIGlucHV0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcikKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgZmxhZ3MKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsMyw0LDVdLCBzaGFwZT1bM10sIHN0cmlkZXM9WzJdKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY19jb250aWd1b3VzKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zZXJpYWxpemluZyhzZWxmKToKKworICAgICAgICAjIEMtY29udGlndW91cworICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCdpJykKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdpJywgWzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KnNpemUpCisgICAgICAgIGJ1Zi5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBiKQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCdMJykKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZm9ybWF0PSJMIikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKjMqMipzaXplKQorICAgICAgICBidWYucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYikKKworICAgICAgICAjIEZvcnRyYW4gY29udGlndW91cywgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICAgI3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0wnKQorICAgICAgICAjbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZm9ybWF0PSJMIiwKKyAgICAgICAgIyAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAjbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICNidWYgPSBpby5CeXRlc0lPKG0pCisgICAgICAgICNiID0gYnl0ZWFycmF5KDIqMyoyKnNpemUpCisgICAgICAgICNidWYucmVhZGludG8oYikKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2hhc2goc2VsZik6CisKKyAgICAgICAgIyBieXRlcyBleHBvcnRlcgorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorICAgICAgICBtID0gbWVtb3J5dmlldyhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYiksIGhhc2gobSkpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMKKyAgICAgICAgbWMgPSBtLmNhc3QoJ2MnLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1jKSwgaGFzaChiKSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzCisgICAgICAgIG14ID0gbVs6Oi0yXQorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpWzo6LTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobXgpLCBoYXNoKGIpKQorCisgICAgICAgICMgRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLDIsNV0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2gobmQpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwgc2xpY2UKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsMiw1XSkKKyAgICAgICAgeCA9IG5kWzo6MiwgOjosIDo6LTFdCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaCh4KSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsIHNsaWNlIHdpdGggc3Vib2Zmc2V0cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiw1LDNdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHggPSBuZFs6OjIsIDo6LCA6Oi0xXQorICAgICAgICBtID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goeCkpCisKKyAgICAgICAgIyBlcXVhbGl0eS1oYXNoIGludmFyaWFudAorICAgICAgICB4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZvcm1hdD0nQicpCisgICAgICAgIGEgPSBtZW1vcnl2aWV3KHgpCisKKyAgICAgICAgeSA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmb3JtYXQ9J2InKQorICAgICAgICBiID0gbWVtb3J5dmlldyh5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGEpLCBoYXNoKGIpKQorCisgICAgICAgICMgbm9uLWJ5dGUgZm9ybWF0cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J0wnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2hhc2hfXykKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgtNiwgNikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J2gnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2hhc2hfXykKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9Jz0gTCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9faGFzaF9fKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKC02LCA2KSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nPCBoJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19oYXNoX18pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlbGVhc2Uoc2VsZik6CisKKyAgICAgICAgIyBDcmVhdGUgcmUtZXhwb3J0ZXIgZnJvbSBnZXRidWZmZXIobWVtb3J5dmlldyksIHRoZW4gcmVsZWFzZSB0aGUgdmlldy4KKyAgICAgICAgYSA9IGJ5dGVhcnJheShbMSwyLDNdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBuZCA9IG5kYXJyYXkobSkgIyByZS1leHBvcnRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbS5yZWxlYXNlKQorICAgICAgICBkZWwgbmQKKyAgICAgICAgbS5yZWxlYXNlKCkKKworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG5kMSA9IG5kYXJyYXkobSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBuZDIgPSBuZGFycmF5KG5kMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKG5kMi5vYmosIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZDEsIG5kMgorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgICMgY2hhaW5lZCB2aWV3cworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIG5kID0gbmRhcnJheShtMikgIyByZS1leHBvcnRlcgorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0yLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZAorICAgICAgICBtMi5yZWxlYXNlKCkKKworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIG5kMSA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbmQyID0gbmRhcnJheShuZDEsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhuZDIub2JqLCBtMikKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtMi5yZWxlYXNlKQorICAgICAgICBkZWwgbmQxLCBuZDIKKyAgICAgICAgbTIucmVsZWFzZSgpCisKKyAgICAgICAgIyBBbGxvdyBjaGFuZ2luZyBsYXlvdXQgd2hpbGUgYnVmZmVycyBhcmUgZXhwb3J0ZWQuCisgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIG5kLnB1c2goWzQsNSw2LDcsOF0sIHNoYXBlPVs1XSkgIyBtdXRhdGUgbmQKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIHggPSBtZW1vcnl2aWV3KG0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG0xLnRvbGlzdCgpKQorCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KG0yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkudG9saXN0KCksIG0yLnRvbGlzdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICBtMi5yZWxlYXNlKCkKKyAgICAgICAgeS5yZWxlYXNlKCkKKworICAgICAgICBuZC5wb3AoKSAjIHBvcCB0aGUgY3VycmVudCB2aWV3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgZGVsIG5kCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICB4LnJlbGVhc2UoKQorCisgICAgICAgICMgSWYgbXVsdGlwbGUgbWVtb3J5dmlld3Mgc2hhcmUgdGhlIHNhbWUgbWFuYWdlZCBidWZmZXIsIGltcGxpY2l0CisgICAgICAgICMgcmVsZWFzZSgpIGluIHRoZSBjb250ZXh0IG1hbmFnZXIncyBfX2V4aXRfXygpIG1ldGhvZCBzaG91bGQgc3RpbGwKKyAgICAgICAgIyB3b3JrLgorICAgICAgICBkZWYgY2F0Y2gyMihiKToKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyBtMjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xWzBdLCBvcmQoYicxJykpCisKKyAgICAgICAgeCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J2wnKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeCkKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG06CisgICAgICAgICAgICBjYXRjaDIyKG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMDoxXS50b2xpc3QoKSwgW1tbMCwgMSwgMl0sIFszLCA0LCA1XV1dKQorCisgICAgICAgICMgVGVzdCBnYXJiYWdlIGNvbGxlY3Rpb24uCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUkVESVJFQ1QpOgorICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShtMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh5KSBhcyBtMjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHkKKyAgICAgICAgICAgICAgICAgICAgeiA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG0zOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTMpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0yKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTJbMV0sIG9yZChiJzInKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTNbMl0sIG9yZChiJzMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBtMworICAgICAgICAgICAgICAgICAgICBkZWwgbTIKKyAgICAgICAgICAgICAgICBkZWwgbTEKKworICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShtMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh5KSBhcyBtMjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHkKKyAgICAgICAgICAgICAgICAgICAgeiA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG0zOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0yKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTJbMV0sIG9yZChiJzInKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTNbMl0sIG9yZChiJzMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBtMSwgbTIsIG0zCisKKyAgICAgICAgIyBtZW1vcnl2aWV3LnJlbGVhc2UoKSBmYWlscyBpZiB0aGUgdmlldyBoYXMgZXhwb3J0ZWQgYnVmZmVycy4KKyAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG06CisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KG0pCisgICAgICAgICAgICAgICAgbVswXSA9PSBvcmQoYicxJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVkaXJlY3Qoc2VsZik6CisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLjAgKiB4IGZvciB4IGluIHJhbmdlKDEyKV0sIHNoYXBlPVsxMl0sIGZvcm1hdD0nZCcpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjAgKiB4IGZvciB4IGluIHJhbmdlKDEyKV0pCisKKyAgICAgICAgZm9yIHggaW4gKG5kLCBhKToKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB6KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeFsxOjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHlbMTozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB6WzE6M10pCisgICAgICAgICAgICBkZWwgeSwgegorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHhbMTozXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZnJvbV9zdGF0aWNfZXhwb3J0ZXIoc2VsZik6CisKKyAgICAgICAgZm10ID0gJ0InCisgICAgICAgIGxzdCA9IFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExXQorCisgICAgICAgICMgZXhjZXB0aW9ucworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN0YXRpY2FycmF5LCAxLCAyLCAzKQorCisgICAgICAgICMgdmlldy5vYmo9PXgKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi52ZXJpZnkoeSwgb2JqPXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeVtpXSwgaSkKKyAgICAgICAgZGVsIHgKKyAgICAgICAgZGVsIHkKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBkZWwgeQorICAgICAgICBkZWwgeAorCisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeikKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXosCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHgpCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj14LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgICAgICMgdmlldy5vYmo9PU5VTEwKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYudmVyaWZ5KHksIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlbaV0sIGkpCisgICAgICAgIGRlbCB4CisgICAgICAgIGRlbCB5CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIGRlbCB5CisgICAgICAgIGRlbCB4CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeikKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXosCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICAjIENsZWFybHkgc2V0dGluZyB2aWV3Lm9iaj09TlVMTCBpcyBpbmZlcmlvciwgc2luY2UgaXQKKyAgICAgICAgIyBtZXNzZXMgdXAgdGhlIHJlZGlyZWN0aW9uIGNoYWluOgorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB5KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eSwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZ2V0YnVmZmVyX3VuZGVmaW5lZChzZWxmKToKKworICAgICAgICAjIGdldGJ1ZmZlcnByb2MgZG9lcyBub3QgYWRoZXJlIHRvIHRoZSBuZXcgZG9jdW1lbnRhdGlvbgorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgWzNdLCBmbGFncz1ORF9HRVRCVUZfRkFJTHxORF9HRVRCVUZfVU5ERUZJTkVEKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisKKyAgICBkZWYgdGVzdF9pc3N1ZV83Mzg1KHNlbGYpOgorICAgICAgICB4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX0dFVEJVRl9GQUlMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgeCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEJ1ZmZlclByb3RvY29sKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CmluZGV4IDVhYjZmNWEuLjYzMzhhZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQpAQCAtMTEsNyArMTEsNyBAQAogbGVuZ3RocyA9IGxpc3QocmFuZ2UoMSwgMjU3KSkgKyBbNTEyLCAxMDAwLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAxMDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Mzg0LCAzMjc2OCwgNjU1MzYsIDEwMDAwMDBdCiAKLWNsYXNzIEJ1ZmZlclNpemVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJ1ZmZlclNpemVUZXN0OgogICAgIGRlZiB0cnlfb25lKHNlbGYsIHMpOgogICAgICAgICAjIFdyaXRlIHMgKyAiXG4iICsgcyB0byBmaWxlLCB0aGVuIG9wZW4gaXQgYW5kIGVuc3VyZSB0aGF0IHN1Y2Nlc3NpdmUKICAgICAgICAgIyAucmVhZGxpbmUoKXMgZGVsaXZlciB3aGF0IHdlIHdyb3RlLgpAQCAtNjIsMTUgKzYyLDEyIEBACiAgICAgICAgIHNlbGYuZHJpdmVfb25lKGJ5dGVzKDEwMDApKQogCiAKLWNsYXNzIENCdWZmZXJTaXplVGVzdChCdWZmZXJTaXplVGVzdCk6CitjbGFzcyBDQnVmZmVyU2l6ZVRlc3QoQnVmZmVyU2l6ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBvcGVuID0gaW8ub3BlbgogCi1jbGFzcyBQeUJ1ZmZlclNpemVUZXN0KEJ1ZmZlclNpemVUZXN0KToKK2NsYXNzIFB5QnVmZmVyU2l6ZVRlc3QoQnVmZmVyU2l6ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBvcGVuID0gc3RhdGljbWV0aG9kKHB5aW8ub3BlbikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0J1ZmZlclNpemVUZXN0LCBQeUJ1ZmZlclNpemVUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKaW5kZXggZGFiNTZjZS4uYmYwMDVjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQpAQCAtMSwxOSArMSwyMSBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gYnVpbHQtaW4gZnVuY3Rpb25zCiAKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBhc3QKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgaW8KK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBvcwotaW1wb3J0IGFzdAotaW1wb3J0IHR5cGVzCi1pbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZjbXAsIFRFU1RGTiwgdW5saW5rLCAgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSBvcGVyYXRvciBpbXBvcnQgbmVnCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmssICBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCiB0cnk6CiAgICAgaW1wb3J0IHB0eSwgc2lnbmFsCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xMTAsNyArMTEyLDMwIEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKIAorZGVmIGZpbHRlcl9jaGFyKGFyZyk6CisgICAgcmV0dXJuIG9yZChhcmcpID4gb3JkKCJkIikKKworZGVmIG1hcF9jaGFyKGFyZyk6CisgICAgcmV0dXJuIGNocihvcmQoYXJnKSsxKQorCiBjbGFzcyBCdWlsdGluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBIZWxwZXIgdG8gY2hlY2sgcGlja2xhYmlsaXR5CisgICAgZGVmIGNoZWNrX2l0ZXJfcGlja2xlKHNlbGYsIGl0LCBzZXEpOgorICAgICAgICBpdG9yZyA9IGl0CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgI3Rlc3QgdGhlIGl0ZXJhdG9yIGFmdGVyIGRyb3BwaW5nIG9uZSBmcm9tIGl0CisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcVsxOl0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CiAgICAgICAgIF9faW1wb3J0X18oJ3N5cycpCkBAIC0yNTUsOCArMjgwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoMHhmZiksICdceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2hyLCAxPDwyNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoc3lzLm1heHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cigoJ1xcVSUwOHgnICUgKHN5cy5tYXh1bmljb2RlKSkuZW5jb2RlKCJhc2NpaSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pY29kZS1lc2NhcGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoJ1xcVTAwMTBmZmZmJy5lbmNvZGUoImFzY2lpIiksICd1bmljb2RlLWVzY2FwZScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNocikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoMHgwMDAwRkZGRiksICJcVTAwMDBGRkZGIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaHIoMHgwMDAxMDAwMCksICJcVTAwMDEwMDAwIikKQEAgLTM3OCw3ICs0MDIsMTUgQEAKICAgICAgICAgZiA9IEZvbygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXIoZikgPT0gWyJnYSIsICJrYW4iLCAicm9vIl0pCiAKLSAgICAgICAgIyBkaXIob2JqX19kaXJfX25vdF9saXN0KQorICAgICAgICAjIGRpcihvYmpfX2Rpcl9fdHVwbGUpCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgiYiIsICJjIiwgImEiKQorICAgICAgICByZXMgPSBkaXIoRm9vKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXMsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXMgPT0gWyJhIiwgImIiLCAiYyJdKQorCisgICAgICAgICMgZGlyKG9ial9fZGlyX19ub3Rfc2VxdWVuY2UpCiAgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fZGlyX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDcKQEAgLTM5MSw2ICs0MjMsOCBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoc3lzLmV4Y19pbmZvKClbMl0pKSwgNCkKIAorICAgICAgICAjIHRlc3QgdGhhdCBvYmplY3QgaGFzIGEgX19kaXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKFtdLl9fZGlyX18oKSksIGRpcihbXSkpCiAKICAgICBkZWYgdGVzdF9kaXZtb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGl2bW9kKDEyLCA3KSwgKDEsIDUpKQpAQCAtNDAwLDEwICs0MzQsMTMgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpdm1vZCgtc3lzLm1heHNpemUtMSwgLTEpLCAoc3lzLm1heHNpemUrMSwgMCkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgzLjI1LCAxLjApLCAoMy4wLCAwLjI1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoLTMuMjUsIDEuMCksICgtNC4wLCAwLjc1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoMy4yNSwgLTEuMCksICgtNC4wLCAtMC43NSkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKC0zLjI1LCAtMS4wKSwgKDMuMCwgLTAuMjUpKSkKKyAgICAgICAgZm9yIG51bSwgZGVub20sIGV4cF9yZXN1bHQgaW4gWyAoMy4yNSwgMS4wLCAoMy4wLCAwLjI1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0zLjI1LCAxLjAsICgtNC4wLCAwLjc1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMuMjUsIC0xLjAsICgtNC4wLCAtMC43NSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMy4yNSwgLTEuMCwgKDMuMCwgLTAuMjUpKV06CisgICAgICAgICAgICByZXN1bHQgPSBkaXZtb2QobnVtLCBkZW5vbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwocmVzdWx0WzBdLCBleHBfcmVzdWx0WzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXN1bHRbMV0sIGV4cF9yZXN1bHRbMV0pCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkaXZtb2QpCiAKQEAgLTUxOCw2ICs1NTUsMzkgQEAKICAgICAgICAgICAgIGRlbCBsWydfX2J1aWx0aW5zX18nXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChnLCBsKSwgKHsnYSc6IDF9LCB7J2InOiAyfSkpCiAKKyAgICBkZWYgdGVzdF9leGVjX2dsb2JhbHMoc2VsZik6CisgICAgICAgIGNvZGUgPSBjb21waWxlKCJwcmludCgnSGVsbG8gV29ybGQhJykiLCAiIiwgImV4ZWMiKQorICAgICAgICAjIG5vIGJ1aWx0aW4gZnVuY3Rpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOYW1lRXJyb3IsICJuYW1lICdwcmludCcgaXMgbm90IGRlZmluZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzoge319KQorICAgICAgICAjIF9fYnVpbHRpbnNfXyBtdXN0IGJlIGEgbWFwcGluZyB0eXBlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiAxMjN9KQorCisgICAgICAgICMgbm8gX19idWlsZF9jbGFzc19fIGZ1bmN0aW9uCisgICAgICAgIGNvZGUgPSBjb21waWxlKCJjbGFzcyBBOiBwYXNzIiwgIiIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOYW1lRXJyb3IsICJfX2J1aWxkX2NsYXNzX18gbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IHt9fSkKKworICAgICAgICBjbGFzcyBmcm96ZW5kaWN0X2Vycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgZnJvemVuZGljdChkaWN0KToKKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgICAgICAgICByYWlzZSBmcm96ZW5kaWN0X2Vycm9yKCJmcm96ZW5kaWN0IGlzIHJlYWRvbmx5IikKKworICAgICAgICAjIHJlYWQtb25seSBidWlsdGlucworICAgICAgICBmcm96ZW5fYnVpbHRpbnMgPSBmcm96ZW5kaWN0KF9fYnVpbHRpbnNfXykKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoIl9fYnVpbHRpbnNfX1snc3VwZXJnbG9iYWwnXT0yOyBwcmludChzdXBlcmdsb2JhbCkiLCAidGVzdCIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnJvemVuZGljdF9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiBmcm96ZW5fYnVpbHRpbnN9KQorCisgICAgICAgICMgcmVhZC1vbmx5IGdsb2JhbHMKKyAgICAgICAgbmFtZXNwYWNlID0gZnJvemVuZGljdCh7fSkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoIng9MSIsICJ0ZXN0IiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmcm96ZW5kaWN0X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCBuYW1lc3BhY2UpCisKICAgICBkZWYgdGVzdF9leGVjX3JlZGlyZWN0ZWQoc2VsZik6CiAgICAgICAgIHNhdmVzdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgIHN5cy5zdGRvdXQgPSBOb25lICMgV2hhdGV2ZXIgdGhhdCBjYW5ub3QgZmx1c2goKQpAQCAtNTU0LDYgKzYyNCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4Pj0zLCAoMSwgMiwgMywgNCkpKSwgWzMsIDRdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGZpbHRlcig0MiwgKDEsIDIpKSkKIAorICAgIGRlZiB0ZXN0X2ZpbHRlcl9waWNrbGUoc2VsZik6CisgICAgICAgIGYxID0gZmlsdGVyKGZpbHRlcl9jaGFyLCAiYWJjZGVhYmNkZSIpCisgICAgICAgIGYyID0gZmlsdGVyKGZpbHRlcl9jaGFyLCAiYWJjZGVhYmNkZSIpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcl9waWNrbGUoZjEsIGxpc3QoZjIpKQorCiAgICAgZGVmIHRlc3RfZ2V0YXR0cihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdldGF0dHIoc3lzLCAnc3Rkb3V0JykgaXMgc3lzLnN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhdHRyLCBzeXMsIDEpCkBAIC03NDcsNiArODIyLDExIEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsaXN0LCBtYXAoYmFkZnVuYywgcmFuZ2UoNSkpKQogCisgICAgZGVmIHRlc3RfbWFwX3BpY2tsZShzZWxmKToKKyAgICAgICAgbTEgPSBtYXAobWFwX2NoYXIsICJJcyB0aGlzIHRoZSByZWFsIGxpZmU/IikKKyAgICAgICAgbTIgPSBtYXAobWFwX2NoYXIsICJJcyB0aGlzIHRoZSByZWFsIGxpZmU/IikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZShtMSwgbGlzdChtMikpCisKICAgICBkZWYgdGVzdF9tYXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KCcxMjMxMjMnKSwgJzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgxLCAyLCAzKSwgMykKQEAgLTg4MCw3ICs5NjAsMjkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAucmVhZCgxMDAwKSwgJ1lZWScqMTAwKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X29wZW5fZGVmYXVsdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgb2xkX2Vudmlyb24gPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdHJ5IHRvIGdldCBhIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50CisgICAgICAgICAgICAjIGxvY2FsZSBlbmNvZGluZyB0byBjaGVjayB0aGF0IG9wZW4oKSB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZQorICAgICAgICAgICAgIyBlbmNvZGluZyBhbmQgbm90IHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZworICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xDX0FMTCcsICdMQU5HJywgJ0xDX0NUWVBFJyk6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2tleV0KKworICAgICAgICAgICAgc2VsZi53cml0ZV90ZXN0ZmlsZSgpCisgICAgICAgICAgICBjdXJyZW50X2xvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIGZwID0gb3BlbihURVNURk4sICd3JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLmVuY29kaW5nLCBjdXJyZW50X2xvY2FsZV9lbmNvZGluZykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKG9sZF9lbnZpcm9uKQogCiAgICAgZGVmIHRlc3Rfb3JkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZCgnICcpLCAzMikKQEAgLTEwNzAsNiArMTE3Miw4IEBACiAgICAgICAgICMgQ2hlY2sgc3RkaW4vc3Rkb3V0IGVycm9yIGhhbmRsZXIgaXMgdXNlZCB3aGVuIGludm9raW5nIEdOVSByZWFkbGluZQogICAgICAgICBzZWxmLmNoZWNrX2lucHV0X3R0eSgicHJvbXB0w6kiLCBiInF1dXhceGU5IiwgImFzY2lpIikKIAorICAgICMgdGVzdF9pbnQoKTogc2VlIHRlc3RfaW50LnB5IGZvciB0ZXN0cyBvZiBidWlsdC1pbiBmdW5jdGlvbiBpbnQoKS4KKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcignJyksICdcJ1wnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKDApLCAnMCcpCkBAIC0xMTk4LDYgKzEzMDIsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbJ2EnLCAnYicsICdjJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbJ2EnLCAnYicsICdjJ10sICcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW2InYScsIGInYyddLCBiJycpCisgICAgICAgIHZhbHVlcyA9IFtieXRlYXJyYXkoYidhJyksIGJ5dGVhcnJheShiJ2InKV0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIHZhbHVlcywgYnl0ZWFycmF5KGInJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbWzFdLCBbMl0sIFszXV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbezI6M31dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW3syOjN9XSoyLCB7MjozfSkKQEAgLTEyODYsNiArMTM5MywxMyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LCB6aXAoQmFkU2VxKCksIEJhZFNlcSgpKSkKIAorICAgIGRlZiB0ZXN0X3ppcF9waWNrbGUoc2VsZik6CisgICAgICAgIGEgPSAoMSwgMiwgMykKKyAgICAgICAgYiA9ICg0LCA1LCA2KQorICAgICAgICB0ID0gWygxLCA0KSwgKDIsIDUpLCAoMywgNildCisgICAgICAgIHoxID0gemlwKGEsIGIpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcl9waWNrbGUoejEsIHQpCisKICAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgYmFzaWMgbWFjaGluZXJ5IG9mIHRoZSBmb3JtYXQoKSBidWlsdGluLiAgRG9uJ3QgdGVzdAogICAgICAgICAjICB0aGUgc3BlY2lmaWNzIG9mIHRoZSB2YXJpb3VzIGZvcm1hdHRlcnMKQEAgLTEzNTksMTQgKzE0NzMsMTQgQEAKIAogICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICMgSXNzdWUgIzc5OTQ6IG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZyBpcwotICAgICAgICAjICBwZW5kaW5nIGRlcHJlY2F0ZWQKKyAgICAgICAgIyAgZGVwcmVjYXRlZAogICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Zvcm1hdF9zdHJpbmcob2JqLCBmbXRfc3RyLCBzaG91bGRfcmFpc2Vfd2FybmluZyk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBmb3JtYXQob2JqLCBmbXRfc3RyKQogICAgICAgICAgICAgaWYgc2hvdWxkX3JhaXNlX3dhcm5pbmc6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdbMF0ubWVzc2FnZSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod1swXS5tZXNzYWdlLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsIHN0cih3WzBdLm1lc3NhZ2UpKQogICAgICAgICAgICAgZWxzZToKQEAgLTE0MTAsNiArMTUyNCwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4LnRyYW5zbGF0ZSwgYiIxIiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRyYW5zbGF0ZSwgYiIxIioyNTYsIDEpCiAKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rfc2luZ2xldG9ucyhzZWxmKToKKyAgICAgICAgZm9yIGNvbnN0IGluIE5vbmUsIEVsbGlwc2lzLCBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHRwID0gdHlwZShjb25zdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHAoKSwgY29uc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRwLCAxLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0cCwgYT0xLCBiPTIpCisKIGNsYXNzIFRlc3RTb3J0ZWQodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQppbmRleCA4OWUyMjc0Li4yNmNiNDk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKIAogCi1jbGFzcyBCYXNlQnl0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VCeXRlc1Rlc3Q6CiAKICAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdCgpCkBAIC0xODgsMjQgKzE4OCwyNiBAQAogCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjIgotICAgICAgICBmb3IgZW5jIGluICgidXRmOCIsICJ1dGYxNiIpOgorICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYudHlwZTJ0ZXN0KHNhbXBsZS5lbmNvZGUoZW5jKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc2VsZi50eXBlMnRlc3QsIHNhbXBsZSwgImxhdGluMSIpCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbjEiLCAiaWdub3JlIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzZWxmLnR5cGUydGVzdCwgc2FtcGxlLCAibGF0aW4tMSIpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbi0xIiwgImlnbm9yZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlWzotM10sICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiY1xkZWYwXGRlZjAiCi0gICAgICAgIGZvciBlbmMgaW4gKCJ1dGY4IiwgInV0ZjE2Iik6CisgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZW5jKSwgc2FtcGxlKQogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx4ODBceDgxXHhmZVx4ZmYiCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbjEiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIuZGVjb2RlLCAidXRmOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoInV0ZjgiLCAiaWdub3JlIiksICJIZWxsbyB3b3JsZFxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlcnJvcnM9Imlnbm9yZSIsIGVuY29kaW5nPSJ1dGY4IiksCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbi0xIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiLmRlY29kZSwgInV0Zi04IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZSgidXRmLTgiLCAiaWdub3JlIiksICJIZWxsbyB3b3JsZFxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlcnJvcnM9Imlnbm9yZSIsIGVuY29kaW5nPSJ1dGYtOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJIZWxsbyB3b3JsZFxuIikKKyAgICAgICAgIyBEZWZhdWx0IGVuY29kaW5nIGlzIHV0Zi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYidceGUyXHg5OFx4ODMnKS5kZWNvZGUoKSwgJ1x1MjYwMycpCiAKICAgICBkZWYgdGVzdF9mcm9tX2ludChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KDApCkBAIC0yOTEsMTAgKzI5MywyNyBAQAogCiAgICAgZGVmIHRlc3RfY291bnQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICBwID0gMTEyCisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJyksIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3NzJyksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3cnKSwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoaSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudCh3KSwgMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJywgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3AnLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInaScsIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidwJywgNywgOSksIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGksIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQocCwgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KHAsIDcsIDkpLCAxKQorCiAgICAgZGVmIHRlc3Rfc3RhcnRzd2l0aChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYudHlwZTJ0ZXN0KCkuc3RhcnRzd2l0aChiImFueXRoaW5nIikpCkBAIC0zMjUsMzUgKzM0NCw4NiBAQAogCiAgICAgZGVmIHRlc3RfZmluZChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAzKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDcpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgMyksIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3cnKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInbWlzc2lzc2lwcGlhbicpLCAtMSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQodyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgMyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGksIDYpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQodywgMSwgMyksIC0xKQorCisgICAgICAgIGZvciBpbmRleCBpbiAoLTEsIDI1Niwgc3lzLm1heHNpemUgKyAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgcidieXRlIG11c3QgYmUgaW4gcmFuZ2VcKDAsIDI1NlwpJywKKyAgICAgICAgICAgICAgICBiLmZpbmQsIGluZGV4KQorCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAzKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAwLCA2KSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGIndycpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInbWlzc2lzc2lwcGlhbicpLCAtMSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQodyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMCwgNiksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSwgMywgOSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZCh3LCAxLCAzKSwgLTEpCisKICAgICBkZWYgdGVzdF9pbmRleChzZWxmKToKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYid3JyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ29ybCcpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3dvcm0nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ2xkbycpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYid3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidtaXNzaXNzaXBwaWFuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnLCAxLCA3KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidzcycsIDEsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGksIDYpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIHcsIDEsIDMpCiAKICAgICBkZWYgdGVzdF9yaW5kZXgoc2VsZik6Ci0gICAgICAgICMgWFhYIGNvdWxkIGJlIG1vcmUgcmlnb3JvdXMKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGIndycpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInb3JsJyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ3dvcm0nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYidsZG8nKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYid3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGInbWlzc2lzc2lwcGlhbicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChpKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInc3MnLCAwLCA2KSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDMsIDkpLCA3KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgdywgMSwgMykKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKQEAgLTM2NSw2ICs0MzUsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInaScpLCBbYidtJywgYidzcycsIGInc3MnLCBiJ3BwJywgYicnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInc3MnKSwgW2InbWknLCBiJ2knLCBiJ2lwcGknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGIndycpLCBbYl0pCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYXxifGN8ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChzZXA9Yid8JyksIFtiJ2EnLCBiJ2InLCBiJ2MnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInfCcsIG1heHNwbGl0PTEpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoc2VwPWInfCcsIG1heHNwbGl0PTEpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQobWF4c3BsaXQ9MSwgc2VwPWInfCcpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhIGIgYyBkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KG1heHNwbGl0PTEpLCBbYidhJywgYidiIGMgZCddKQogCiAgICAgZGVmIHRlc3Rfc3BsaXRfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKGInICBhcmYgIGJhcmYgICcsIGInYXJmXHRiYXJmJywgYidhcmZcbmJhcmYnLCBiJ2FyZlxyYmFyZicsCkBAIC0zOTMsNiArNDcxLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYidpJyksIFtiJ20nLCBiJ3NzJywgYidzcycsIGIncHAnLCBiJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInc3MnKSwgW2InbWknLCBiJ2knLCBiJ2lwcGknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ3cnKSwgW2JdKQorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2F8YnxjfGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KHNlcD1iJ3wnKSwgW2InYScsIGInYicsIGInYycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInfCcsIG1heHNwbGl0PTEpLCBbYidhfGJ8YycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KHNlcD1iJ3wnLCBtYXhzcGxpdD0xKSwgW2InYXxifGMnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChtYXhzcGxpdD0xLCBzZXA9Yid8JyksIFtiJ2F8YnxjJywgYidkJ10pCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2EgYiBjIGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KG1heHNwbGl0PTEpLCBbYidhIGIgYycsIGInZCddKQogCiAgICAgZGVmIHRlc3RfcnNwbGl0X3doaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIGZvciBiIGluIChiJyAgYXJmICBiYXJmICAnLCBiJ2FyZlx0YmFyZicsIGInYXJmXG5iYXJmJywgYidhcmZccmJhcmYnLApAQCAtNDMyLDYgKzUxOCwyNCBAQAogICAgICAgICAgICAgICAgIHEgPSBwaWNrbGUubG9hZHMocHMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBxKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGZvciBiIGluIGIiIiwgYiJhIiwgYiJhYmMiLCBiIlx4ZmZhYlx4ODAiLCBiIlwwXDBcMzc3XDBcMCI6CisgICAgICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihzZWxmLnR5cGUydGVzdChiKSkKKyAgICAgICAgICAgIGRhdGEgPSBsaXN0KHNlbGYudHlwZTJ0ZXN0KGIpKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEpCisKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGFbMTpdKQorCiAgICAgZGVmIHRlc3Rfc3RyaXAoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnN0cmlwKGInaScpLCBiJ21pc3Npc3NpcHAnKQpAQCAtNDczLDYgKzU3NywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYWJjJykubHN0cmlwLCAnYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5yc3RyaXAsICdiJykKIAorICAgIGRlZiB0ZXN0X2NlbnRlcihzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNlbnRlcig3LCBmaWxsX3R5cGUoYictJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdChiJy0tYWJjLS0nKSkKKworICAgIGRlZiB0ZXN0X2xqdXN0KHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIubGp1c3QoNywgZmlsbF90eXBlKGInLScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QoYidhYmMtLS0tJykpCisKKyAgICBkZWYgdGVzdF9yanVzdChzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJqdXN0KDcsIGZpbGxfdHlwZShiJy0nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0KGInLS0tLWFiYycpKQorCiAgICAgZGVmIHRlc3Rfb3JkKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidcMEFceDdmXHg4MFx4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtvcmQoYltpOmkrMV0pIGZvciBpIGluIHJhbmdlKGxlbihiKSldLApAQCAtNTI5LDYgKzY1NCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGIuc3RhcnRzd2l0aChoLCBOb25lLCAtMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGIuc3RhcnRzd2l0aCh4LCBOb25lLCBOb25lKSkKIAorICAgIGRlZiB0ZXN0X2ludGVnZXJfYXJndW1lbnRzX291dF9vZl9ieXRlX3JhbmdlKHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoYi5jb3VudCwgYi5maW5kLCBiLmluZGV4LCBiLnJmaW5kLCBiLnJpbmRleCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kLCAyNTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIDk5OTkpCisKICAgICBkZWYgdGVzdF9maW5kX2V0Y19yYWlzZV9jb3JyZWN0X2Vycm9yX21lc3NhZ2VzKHNlbGYpOgogICAgICAgICAjIGlzc3VlIDExODI4CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKQEAgLTU0OSw3ICs2ODIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCBOb25lLCBOb25lLCBOb25lKQogCiAKLWNsYXNzIEJ5dGVzVGVzdChCYXNlQnl0ZXNUZXN0KToKK2NsYXNzIEJ5dGVzVGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZXMKIAogICAgIGRlZiB0ZXN0X2J1ZmZlcl9pc19yZWFkb25seShzZWxmKToKQEAgLTU2OCw2ICs3MDEsMTIgQEAKICAgICAgICAgICAgIGRlZiBfX2J5dGVzX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgQSgpKQorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYidhJworICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhBKCkpLCBiJ2EnKQogCiAgICAgIyBUZXN0IFB5Qnl0ZXNfRnJvbUZvcm1hdCgpCiAgICAgZGVmIHRlc3RfZnJvbV9mb3JtYXQoc2VsZik6CkBAIC01OTEsNyArNzMwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M6Y3N0cicpCiAKIAotY2xhc3MgQnl0ZUFycmF5VGVzdChCYXNlQnl0ZXNUZXN0KToKK2NsYXNzIEJ5dGVBcnJheVRlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVhcnJheQogCiAgICAgZGVmIHRlc3Rfbm9oYXNoKHNlbGYpOgpAQCAtNjM0LDYgKzc3MywzOSBAQAogICAgICAgICBiLnJldmVyc2UoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIpCiAKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ3B5dGhvbicpCisgICAgICAgIGIuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICBiID0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgYi5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYicnKQorCisgICAgICAgIGIgPSBieXRlYXJyYXkoYicnKQorICAgICAgICBiLmFwcGVuZChvcmQoJ3InKSkKKyAgICAgICAgYi5jbGVhcigpCisgICAgICAgIGIuYXBwZW5kKG9yZCgncCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIncCcpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGInYWJjJykKKyAgICAgICAgYmIgPSBiLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLCBiJ2FiYycpCisKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJycpCisgICAgICAgIGJiID0gYi5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYiwgYicnKQorCisgICAgICAgICMgdGVzdCB0aGF0IGl0J3MgaW5kZWVkIGEgY29weSBhbmQgbm90IGEgcmVmZXJlbmNlCisgICAgICAgIGIgPSBieXRlYXJyYXkoYidhYmMnKQorICAgICAgICBiYiA9IGIuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYmIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYiwgYmIpCisgICAgICAgIGJiLmFwcGVuZChvcmQoJ2QnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYiwgYidhYmNkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2FiYycpCisKICAgICBkZWYgdGVzdF9yZWdleHBzKHNlbGYpOgogICAgICAgICBkZWYgYnkocyk6CiAgICAgICAgICAgICByZXR1cm4gYnl0ZWFycmF5KG1hcChvcmQsIHMpKQpAQCAtMTEyMSwxNCArMTI5MywxNiBAQAogICAgIGRlZiB0ZXN0X2xvd2VyKHNlbGYpOgogICAgICAgICBwYXNzCiAKLWNsYXNzIEJ5dGVBcnJheUFzU3RyaW5nVGVzdChGaXhlZFN0cmluZ1Rlc3QpOgorY2xhc3MgQnl0ZUFycmF5QXNTdHJpbmdUZXN0KEZpeGVkU3RyaW5nVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVhcnJheQorICAgIGNvbnRhaW5zX2J5dGVzID0gVHJ1ZQogCi1jbGFzcyBCeXRlc0FzU3RyaW5nVGVzdChGaXhlZFN0cmluZ1Rlc3QpOgorY2xhc3MgQnl0ZXNBc1N0cmluZ1Rlc3QoRml4ZWRTdHJpbmdUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZXMKKyAgICBjb250YWluc19ieXRlcyA9IFRydWUKIAogCi1jbGFzcyBTdWJjbGFzc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgU3ViY2xhc3NUZXN0OgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNlbGYuc3ViY2xhc3MydGVzdCwgc2VsZi50eXBlMnRlc3QpKQpAQCAtMTIwMCw3ICsxMzc0LDcgQEAKIGNsYXNzIEJ5dGVzU3ViY2xhc3MoYnl0ZXMpOgogICAgIHBhc3MKIAotY2xhc3MgQnl0ZUFycmF5U3ViY2xhc3NUZXN0KFN1YmNsYXNzVGVzdCk6CitjbGFzcyBCeXRlQXJyYXlTdWJjbGFzc1Rlc3QoU3ViY2xhc3NUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CiAgICAgc3ViY2xhc3MydGVzdCA9IEJ5dGVBcnJheVN1YmNsYXNzCiAKQEAgLTEyMTUsMTYgKzEzODksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBiImFiY2QiKQogCiAKLWNsYXNzIEJ5dGVzU3ViY2xhc3NUZXN0KFN1YmNsYXNzVGVzdCk6CitjbGFzcyBCeXRlc1N1YmNsYXNzVGVzdChTdWJjbGFzc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwogICAgIHN1YmNsYXNzMnRlc3QgPSBCeXRlc1N1YmNsYXNzCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIEJ5dGVzVGVzdCwgQXNzb3J0ZWRCeXRlc1Rlc3QsIEJ5dGVzQXNTdHJpbmdUZXN0LAotICAgICAgICBCeXRlQXJyYXlUZXN0LCBCeXRlQXJyYXlBc1N0cmluZ1Rlc3QsIEJ5dGVzU3ViY2xhc3NUZXN0LAotICAgICAgICBCeXRlQXJyYXlTdWJjbGFzc1Rlc3QsIEJ5dGVhcnJheVBFUDMxMzdUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J6Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CmluZGV4IDk3N2QxMGIuLjkxMmZhYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CkBAIC0xLDEwICsxLDExIEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIF80RywgYmlnbWVtdGVzdCwgZmluZGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGJpZ21lbXRlc3QsIF80RwogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIApAQCAtMjEsMTMgKzIyLDM5IEBACiAKIGNsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiQmFzZSBmb3Igb3RoZXIgdGVzdGNhc2VzLiIKLSAgICBURVhUID0gYidyb290Ong6MDowOnJvb3Q6L3Jvb3Q6L2Jpbi9iYXNoXG5iaW46eDoxOjE6YmluOi9iaW46XG5kYWVtb246eDoyOjI6ZGFlbW9uOi9zYmluOlxuYWRtOng6Mzo0OmFkbTovdmFyL2FkbTpcbmxwOng6NDo3OmxwOi92YXIvc3Bvb2wvbHBkOlxuc3luYzp4OjU6MDpzeW5jOi9zYmluOi9iaW4vc3luY1xuc2h1dGRvd246eDo2OjA6c2h1dGRvd246L3NiaW46L3NiaW4vc2h1dGRvd25cbmhhbHQ6eDo3OjA6aGFsdDovc2Jpbjovc2Jpbi9oYWx0XG5tYWlsOng6ODoxMjptYWlsOi92YXIvc3Bvb2wvbWFpbDpcbm5ld3M6eDo5OjEzOm5ld3M6L3Zhci9zcG9vbC9uZXdzOlxudXVjcDp4OjEwOjE0OnV1Y3A6L3Zhci9zcG9vbC91dWNwOlxub3BlcmF0b3I6eDoxMTowOm9wZXJhdG9yOi9yb290OlxuZ2FtZXM6eDoxMjoxMDA6Z2FtZXM6L3Vzci9nYW1lczpcbmdvcGhlcjp4OjEzOjMwOmdvcGhlcjovdXNyL2xpYi9nb3BoZXItZGF0YTpcbmZ0cDp4OjE0OjUwOkZUUCBVc2VyOi92YXIvZnRwOi9iaW4vYmFzaFxubm9ib2R5Ong6NjU1MzQ6NjU1MzQ6Tm9ib2R5Oi9ob21lOlxucG9zdGZpeDp4OjEwMDoxMDE6cG9zdGZpeDovdmFyL3Nwb29sL3Bvc3RmaXg6XG5uaWVtZXllcjp4OjUwMDo1MDA6Oi9ob21lL25pZW1leWVyOi9iaW4vYmFzaFxucG9zdGdyZXM6eDoxMDE6MTAyOlBvc3RncmVTUUwgU2VydmVyOi92YXIvbGliL3Bnc3FsOi9iaW4vYmFzaFxubXlzcWw6eDoxMDI6MTAzOk15U1FMIHNlcnZlcjovdmFyL2xpYi9teXNxbDovYmluL2Jhc2hcbnd3dzp4OjEwMzoxMDQ6Oi92YXIvd3d3Oi9iaW4vZmFsc2VcbicKKyAgICBURVhUX0xJTkVTID0gWworICAgICAgICBiJ3Jvb3Q6eDowOjA6cm9vdDovcm9vdDovYmluL2Jhc2hcbicsCisgICAgICAgIGInYmluOng6MToxOmJpbjovYmluOlxuJywKKyAgICAgICAgYidkYWVtb246eDoyOjI6ZGFlbW9uOi9zYmluOlxuJywKKyAgICAgICAgYidhZG06eDozOjQ6YWRtOi92YXIvYWRtOlxuJywKKyAgICAgICAgYidscDp4OjQ6NzpscDovdmFyL3Nwb29sL2xwZDpcbicsCisgICAgICAgIGInc3luYzp4OjU6MDpzeW5jOi9zYmluOi9iaW4vc3luY1xuJywKKyAgICAgICAgYidzaHV0ZG93bjp4OjY6MDpzaHV0ZG93bjovc2Jpbjovc2Jpbi9zaHV0ZG93blxuJywKKyAgICAgICAgYidoYWx0Ong6NzowOmhhbHQ6L3NiaW46L3NiaW4vaGFsdFxuJywKKyAgICAgICAgYidtYWlsOng6ODoxMjptYWlsOi92YXIvc3Bvb2wvbWFpbDpcbicsCisgICAgICAgIGInbmV3czp4Ojk6MTM6bmV3czovdmFyL3Nwb29sL25ld3M6XG4nLAorICAgICAgICBiJ3V1Y3A6eDoxMDoxNDp1dWNwOi92YXIvc3Bvb2wvdXVjcDpcbicsCisgICAgICAgIGInb3BlcmF0b3I6eDoxMTowOm9wZXJhdG9yOi9yb290OlxuJywKKyAgICAgICAgYidnYW1lczp4OjEyOjEwMDpnYW1lczovdXNyL2dhbWVzOlxuJywKKyAgICAgICAgYidnb3BoZXI6eDoxMzozMDpnb3BoZXI6L3Vzci9saWIvZ29waGVyLWRhdGE6XG4nLAorICAgICAgICBiJ2Z0cDp4OjE0OjUwOkZUUCBVc2VyOi92YXIvZnRwOi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidub2JvZHk6eDo2NTUzNDo2NTUzNDpOb2JvZHk6L2hvbWU6XG4nLAorICAgICAgICBiJ3Bvc3RmaXg6eDoxMDA6MTAxOnBvc3RmaXg6L3Zhci9zcG9vbC9wb3N0Zml4OlxuJywKKyAgICAgICAgYiduaWVtZXllcjp4OjUwMDo1MDA6Oi9ob21lL25pZW1leWVyOi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidwb3N0Z3Jlczp4OjEwMToxMDI6UG9zdGdyZVNRTCBTZXJ2ZXI6L3Zhci9saWIvcGdzcWw6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ215c3FsOng6MTAyOjEwMzpNeVNRTCBzZXJ2ZXI6L3Zhci9saWIvbXlzcWw6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ3d3dzp4OjEwMzoxMDQ6Oi92YXIvd3d3Oi9iaW4vZmFsc2VcbicsCisgICAgICAgIF0KKyAgICBURVhUID0gYicnLmpvaW4oVEVYVF9MSU5FUykKICAgICBEQVRBID0gYidCWmg5MUFZJlNZLlx4YzhOXHgxOFx4MDBceDAxPl9ceDgwXHgwMFx4MTBAXHgwMlx4ZmZceGYwXHgwMVx4MDduXHgwMD9ceGU3XHhmZlx4ZTAwXHgwMVx4OTlceGFhXHgwMFx4YzBceDAzRlx4ODZceDhjIyZceDgzRlx4OWFceDAzXHgwNlx4YTZceGQwXHhhNlx4OTNNXHgwZlFceGE3XHhhOFx4MDZceDgwNGhoXHgxMiRceDExXHhhNGk0XHhmMTRTXHhkMjxRXHhiNVx4MGZIXHhkM1x4ZDRceGRkXHhkNVx4ODdceGJiXHhmOFx4OTRcclx4OGZceGFmSVx4MTJceGUxXHhjOVx4ZjgvRVx4MDBwdVx4ODlceDEyXVx4YzlceGJiRExcblFceDBlXHQxXHgxMlx4ZGZceGEwXHhjMFx4OTdceGFjMk85XHg4OVx4MTNceDk0XHgwZVx4MWM3XHgwZWRceDk1SVx4MGNceGFhSlx4YTRceDE4TFx4MTBceDA1I1x4OWNceGFmXHhiYVx4YmMvXHg5N1x4OGEjQ1x4YzhceGUxXHg4Y1dceGY5XHhlMlx4ZDBceGQ2TVx4YTdceDhiWGE8ZVx4ODR0XHhjYkxceGIzXHhhN1x4ZDlceGNkXHhkMVx4Y2JceDg0Llx4YWZceGIzXHhhYlx4YWJceGFkYG59XHhhMGxoXHRFLFx4OGVaXHgxNVx4MTdWSD5ceDg4XHhlNVx4Y2Q5Z2Q2XHgwYlxuXHhlOVx4OWJceGQ1XHg4YVx4OTlceGY3XHgwOC5LXHg4ZXZceGZiXHhmN3h3XHhiYlx4ZGZceGExXHg5Mlx4ZjFceGRkfC8iO1x4YTJceGJhXHg5Zlx4ZDVceGIxI0FceGI2XHhmNlx4YjNvXHhjOVx4YzV5XFxceGViT1x4ZTdceDg1XHg5YVx4YmNceGI2ZjhceDk1Mlx4ZDVceGQ3IiVceDg5PlYsXHhmN1x4YTZ6XHhlMlx4OWZceGEzXHhkZlx4MTFceDExIlx4ZDZFKUlceGE5XHgxM15ceGNhXHhmM3JceGQwXHgwM1VceDkyMlx4ZjI2XHhlY1x4YjZceGVkXHg4Ylx4YzNVXHgxM1x4OWRceGM1XHgxNzBceGE0XHhmYV5ceDkyXHhhY0RGXHg4YVx4OTdceGQ2XHgxOVx4ZmVceGRkXHhiOFx4YmRceDFhXHg5YVx4MTlceGEzXHg4MGFua1JceDhiXHhlNVx4ZDgzXVx4YTlceGM2XHgwOFx4ODJmXHhmNlx4YjkiNmwkXHhiOGpAXHhjMFx4OGFceGIwbDEuLlx4YmFrXHg4M2xzXHgxNVx4YmNceGY0XHhjMVx4MTNceGJlXHhmOEVceGI4XHg5ZFxyXHhhOFx4OWRrXHg4NFx4ZDNuXHhmYVx4YWNRXHgwN1x4YjEleVx4YWF2XHhiNFx4MDhceGUwelx4MWJceDE2XHhmNVx4MDRceGU5XHhjY1x4YjlceDA4elx4MWVuNy5HXHhmY11ceGM5XHgxNFx4ZTFCQFx4YmIhOGAnCi0gICAgREFUQV9DUkxGID0gYidCWmg5MUFZJlNZXHhhZXpceGJiTlx4MDBceDAxSFx4ZGZceDgwXHgwMFx4MTJAXHgwMlx4ZmZceGYwXHgwMVx4MDduXHgwMD9ceGU3XHhmZlx4ZTBAXHgwMVx4YmNceGM2YFx4ODYqXHg4ZD1NXHhhOVx4OWFceDg2XHhkMExAXHgwZklceGE2IVx4YTFceDEzXHhjOFx4ODhqZGlceDhkQFx4MDNAXHgxYVx4MWFceDBjXHgwY1x4ODMgXHgwMFx4YzRoMlx4MTlceDAxXHg4MkRceDg0ZVx0XHhlOFx4OTlceDg5XHgxOVx4MWFoXHgwMFxyXHgxYVx4MTFceGFmXHg5Ylx4MGZHXHhmNShceDFiXHgxZj9cdFx4MTJceGNmXHhiNVx4ZmNceDk1RVx4MDBwc1x4ODlceDEyXlx4YTRceGRkXHhhMiZceDA1KFx4ODdceDA0XHg5OFx4ODl1XHhlNDAlXHhiNlx4MTlcJ1x4OGNceGM0XHg4OVx4Y2FceDA3XHgwZVx4MWIhXHg5MVVJRlUlQ1x4OTk0IURJXHhkMlx4ZmFceGYwXHhmMU44V1x4ZGVceDEzQVx4ZjVceDljciU/XHg5ZjM7STQ1QVx4ZDFceDhiVFx4YjE8bFx4YmFceGNiX1x4YzAweFlceDE3clx4MTdceDg4XHgwOFx4MDhAXHhhMFxyeUBceDEwXHgwNCQpYFx4ZjJceGNlXHg4OXpceGIwc1x4ZWNceDliLmlXXHg5ZFx4ODFceGI1LSt0XHg5Zlx4MWFcJ1x4OTdkQlx4ZjV4XHhiNVx4YmUuWy5ceGQ3XHgwZVx4ODFceGU3XHgwOFx4MWNOYFx4ODhceDEwXHhjYVx4ODdceGMzISJceDgwXHg5MlJceGExL1x4ZDFceGMwXHhlNm1mXHhhY1x4YmRceDk5XHhjY2FceGIzXHg4NzgwPlx4YTRceGM3XHg4ZFx4MWFcXCJceGFkXHhhMVx4YWJ5QmdceDE1XHhiOWxceDg4XHg4OFx4OTFrIlx4OTRceGE0XHhkNFx4ODlceGFlKlx4YTZceDBiXHgxMFx4MGNceGQ2XHhkNG1ceGU4Nlx4ZWNceGI1alx4OGFceDg2alwnO1x4Y2EuXHgwMUlceGYyXHhhYUpceGU4XHg4OFx4OGNVK3QzXHhmYlx4MGNcblx4YTMzXHgxM3IyXHJceDE2XHhlMFx4YjMoXHhiZlx4MWRceDgzclx4ZTdNXHhmMERceDEzNjVceGQ4XHg4OFx4ZDNceGE0XHg5Mlx4Y2IyXHgwNlx4MDRcXFx4YzFceGIwXHhlYS8vXHhiZWsmXHhkOFx4ZTYrdFx4ZTVceGExXHgxM1x4YWRhXHgxNlx4ZGVyNSJ3XVx4YTJpXHhiN1tceDk3UiBceGUySVRceGNkO1pceDA0ZGs0XHhhZFx4OGFcdFx4ZDNceDgxelx4MTBceGYxOl5gXHhhYlx4MWZceGM1XHhkY1x4OTFOXHgxNCQrXHg5ZVx4YWVceGQzXHg4MCcKICAgICBFTVBUWV9EQVRBID0gYidCWmg5XHgxN3JFOFBceDkwXHgwMFx4MDBceDAwXHgwMCcKIAotICAgIHdpdGggb3BlbihmaW5kZmlsZSgidGVzdGJ6Ml9iaWdtZW0uYnoyIiksICJyYiIpIGFzIGY6Ci0gICAgICAgIERBVEFfQklHTUVNID0gZi5yZWFkKCkKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBURVNURk4KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5maWxlbmFtZSk6CisgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5maWxlbmFtZSkKIAogICAgIGlmIGhhc19jbWRsaW5lX2J1bnppcDI6CiAgICAgICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIGRhdGEpOgpAQCAtNDgsOTQgKzc1LDE1MiBAQAogICAgICAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKICAgICAgICAgICAgIHJldHVybiBiejIuZGVjb21wcmVzcyhkYXRhKQogCi0KIGNsYXNzIEJaMkZpbGVUZXN0KEJhc2VUZXN0KToKICAgICAiVGVzdCBCWjJGaWxlIHR5cGUgbWlzY2VsbGFuZW91cyBtZXRob2RzLiIKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IFRFU1RGTgotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmZpbGVuYW1lKToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmZpbGVuYW1lKQotCi0gICAgZGVmIGNyZWF0ZVRlbXBGaWxlKHNlbGYsIGNybGY9MCk6CisgICAgZGVmIGNyZWF0ZVRlbXBGaWxlKHNlbGYsIHN0cmVhbXM9MSk6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgaWYgY3JsZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5EQVRBX0NSTEYKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuREFUQQotICAgICAgICAgICAgZi53cml0ZShkYXRhKQorICAgICAgICAgICAgZi53cml0ZShzZWxmLkRBVEEgKiBzdHJlYW1zKQorCisgICAgZGVmIHRlc3RCYWRBcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKDEyMy40NTYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAieiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAicngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgInJidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCBjb21wcmVzc2xldmVsPTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCBjb21wcmVzc2xldmVsPTEwKQogCiAgICAgZGVmIHRlc3RSZWFkKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0UmVhZE11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCisKKyAgICBkZWYgdGVzdFJlYWRNb25rZXlNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgIyBUZXN0IEJaMkZpbGUucmVhZCgpIG9uIGEgbXVsdGktc3RyZWFtIGFyY2hpdmUgd2hlcmUgYSBzdHJlYW0KKyAgICAgICAgIyBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kIG9mIHRoZSByYXcgcmVhZCBidWZmZXIuCisgICAgICAgIGJ1ZmZlcl9zaXplID0gYnoyLl9CVUZGRVJfU0laRQorICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGJ1ZmZlcl9zaXplCisKICAgICBkZWYgdGVzdFJlYWQwKHNlbGYpOgotICAgICAgICAjIFRlc3QgQkJaMkZpbGUucmVhZCgwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgwKSwgYiIiKQogCiAgICAgZGVmIHRlc3RSZWFkQ2h1bmsxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWQoKSBpbiBjaHVua3Mgb2YgMTAgYnl0ZXMiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHRleHQgPSBiJycKLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHN0ciA9IGJ6MmYucmVhZCgxMCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0UmVhZENodW5rMTBNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgdGV4dCA9IGInJworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzdHIgPSBiejJmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHN0cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHN0cgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQgKiA1KQorCiAgICAgZGVmIHRlc3RSZWFkMTAwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgxMDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgxMDApLCBzZWxmLlRFWFRbOjEwMF0pCiAKKyAgICBkZWYgdGVzdFBlZWsoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHBkYXRhKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLlRFWFQuc3RhcnRzd2l0aChwZGF0YSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFJlYWRJbnRvKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBuID0gMTI4CisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGludG8oYiksIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuVEVYVFs6bl0pCisgICAgICAgICAgICBuID0gbGVuKHNlbGYuVEVYVCkgLSBuCisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KGxlbihzZWxmLlRFWFQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRpbnRvKGIpLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuXSwgc2VsZi5URVhUWy1uOl0pCisKICAgICBkZWYgdGVzdFJlYWRMaW5lKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZGxpbmUoKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lLCBOb25lKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzaW8ucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLlRFWFRfTElORVM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIGxpbmUpCisKKyAgICBkZWYgdGVzdFJlYWRMaW5lTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZSwgTm9uZSkKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuVEVYVF9MSU5FUyAqIDU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIGxpbmUpCiAKICAgICBkZWYgdGVzdFJlYWRMaW5lcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWRsaW5lcygpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmVzLCBOb25lKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIHNpby5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2VsZi5URVhUX0xJTkVTKQorCisgICAgZGVmIHRlc3RSZWFkTGluZXNNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lcywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2VsZi5URVhUX0xJTkVTICogNSkKIAogICAgIGRlZiB0ZXN0SXRlcmF0b3Ioc2VsZik6Ci0gICAgICAgICMgIlRlc3QgaXRlcihCWjJGaWxlKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNpby5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2VsZi5URVhUX0xJTkVTKQorCisgICAgZGVmIHRlc3RJdGVyYXRvck11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNlbGYuVEVYVF9MSU5FUyAqIDUpCiAKICAgICBkZWYgdGVzdENsb3NlZEl0ZXJhdG9yRGVhZGxvY2soc2VsZik6Ci0gICAgICAgICMgIlRlc3QgdGhhdCBpdGVyYXRpb24gb24gYSBjbG9zZWQgYnoyZmlsZSByZWxlYXNlcyB0aGUgbG9jay4iCi0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzMDkKKyAgICAgICAgIyBJc3N1ZSAjMzMwOTogSXRlcmF0aW9uIG9uIGEgY2xvc2VkIEJaMkZpbGUgc2hvdWxkIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBiejJmID0gQloyRmlsZShzZWxmLmZpbGVuYW1lKQogICAgICAgICBiejJmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5fX25leHRfXykKLSAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBvZiB0aGUgYWJvdmUgLl9fbmV4dF9fIGNhbGwgZmFpbGVkIHRvCisgICAgICAgICMgVGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgaWYgdGhlIGFib3ZlIC5fX25leHRfXyBjYWxsIGZhaWxlZCB0bwogICAgICAgICAjIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGxpbmVzKQogCiAgICAgZGVmIHRlc3RXcml0ZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLndyaXRlKCkiCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCiAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKQEAgLTE0MywxMCArMjI4LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RXcml0ZUNodW5rczEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGUoKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKICAgICAgICAgICAgIG4gPSAwCi0gICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBzdHIgPSBzZWxmLlRFWFRbbioxMDoobisxKSoxMF0KICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTU1LDEzICsyMzksMTkgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0V3JpdGVOb25EZWZhdWx0Q29tcHJlc3NMZXZlbChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBiejIuY29tcHJlc3Moc2VsZi5URVhULCBjb21wcmVzc2xldmVsPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIsIGNvbXByZXNzbGV2ZWw9NSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RXcml0ZUxpbmVzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGVsaW5lcygpIgogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlbGluZXMpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIGJ6MmYud3JpdGVsaW5lcyhzaW8ucmVhZGxpbmVzKCkpCi0gICAgICAgICMgcGF0Y2ggIzE1MzU1MDAKKyAgICAgICAgICAgIGJ6MmYud3JpdGVsaW5lcyhzZWxmLlRFWFRfTElORVMpCisgICAgICAgICMgSXNzdWUgIzE1MzU1MDA6IENhbGxpbmcgd3JpdGVsaW5lcygpIG9uIGEgY2xvc2VkIEJaMkZpbGUKKyAgICAgICAgIyBzaG91bGQgcmFpc2UgYW4gZXhjZXB0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRlbGluZXMsIFsiYSJdKQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQpAQCAtMTc0LDM5ICsyNjQsNzMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ6MmYud3JpdGUsIGIiYSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiejJmLndyaXRlbGluZXMsIFtiImEiXSkKIAorICAgIGRlZiB0ZXN0QXBwZW5kKHNlbGYpOgorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlKQorICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCisgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCAqIDIpCisKICAgICBkZWYgdGVzdFNlZWtGb3J3YXJkKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygxNTAsIDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYuc2VlaykKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCiAKKyAgICBkZWYgdGVzdFNlZWtGb3J3YXJkQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICBiejJmLnNlZWsobGVuKHNlbGYuVEVYVCkgKyAxNTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKICAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHMoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDEpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnJlYWQoNTAwKQogICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbNTAwLTE1MDpdKQogCisgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgcmVhZHRvID0gbGVuKHNlbGYuVEVYVCkgKyAxMDAKKyAgICAgICAgICAgIHdoaWxlIHJlYWR0byA+IDA6CisgICAgICAgICAgICAgICAgcmVhZHRvIC09IGxlbihiejJmLnJlYWQocmVhZHRvKSkKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzEwMC0xNTA6XSArIHNlbGYuVEVYVCkKKwogICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Zyb21FbmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDIpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFtsZW4oc2VsZi5URVhUKS0xNTA6XSkKIAorICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Zyb21FbmRBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoLTEwMDAsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCAoc2VsZi5URVhUICogMilbLTEwMDA6XSkKKwogICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKDE1MDAwMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKIAorICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKKwogICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRUd2ljZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoMTUwMDAwKSB0d2ljZSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKQEAgLTIxNCwyNyArMzM4LDEwOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCiAKKyAgICBkZWYgdGVzdFNlZWtQb3N0RW5kVHdpY2VNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSAqIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCisKICAgICBkZWYgdGVzdFNlZWtQcmVTdGFydChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0U2Vla1ByZVN0YXJ0TXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdEZpbGVubyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyByYXdmOgorICAgICAgICAgICAgYnoyZiA9IEJaMkZpbGUocmF3ZikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYuZmlsZW5vKCksIHJhd2YuZmlsZW5vKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLmZpbGVubykKKworICAgIGRlZiB0ZXN0U2Vla2FibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGJ6MmYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgICAgICBzcmMgPSBCeXRlc0lPKHNlbGYuREFUQSkKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBiejJmID0gQloyRmlsZShzcmMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICBkZWYgdGVzdFJlYWRhYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBiejJmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYucmVhZGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnJlYWRhYmxlKQorCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgbW9kZT0idyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdFdyaXRhYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi53cml0YWJsZSgpKQorICAgICAgICAgICAgYnoyZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGFibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYud3JpdGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRhYmxlKQorCiAgICAgZGVmIHRlc3RPcGVuRGVsKHNlbGYpOgotICAgICAgICAjICJUZXN0IG9wZW5pbmcgYW5kIGRlbGV0aW5nIGEgZmlsZSBtYW55IHRpbWVzIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgogICAgICAgICAgICAgbyA9IEJaMkZpbGUoc2VsZi5maWxlbmFtZSkKICAgICAgICAgICAgIGRlbCBvCiAKICAgICBkZWYgdGVzdE9wZW5Ob25leGlzdGVudChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBvcGVuaW5nIGEgbm9uZXhpc3RlbnQgZmlsZSIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgQloyRmlsZSwgIi9ub24vZXhpc3RlbnQiKQogCi0gICAgZGVmIHRlc3RCdWcxMTkxMDQzKHNlbGYpOgotICAgICAgICAjIHJlYWRsaW5lcygpIGZvciBmaWxlcyBjb250YWluaW5nIG5vIG5ld2xpbmUKKyAgICBkZWYgdGVzdFJlYWRsaW5lc05vTmV3bGluZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTE5MTA0MzogcmVhZGxpbmVzKCkgZmFpbHMgb24gYSBmaWxlIGNvbnRhaW5pbmcgbm8gbmV3bGluZS4KICAgICAgICAgZGF0YSA9IGInQlpoOTFBWSZTWVx4ZDliXHg4OV1ceDAwXHgwMFx4MDBceDAzXHg4MFx4MDRceDAwXHgwMlx4MDBceDBjXHgwMCBceDAwIVx4OWFoM01ceDEzPF1ceGM5XHgxNFx4ZTFCQ2VceDhhJXQnCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhKQpAQCAtMjQ2LDcgKzQ1Miw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxpbmVzLCBbYidUZXN0J10pCiAKICAgICBkZWYgdGVzdENvbnRleHRQcm90b2NvbChzZWxmKToKLSAgICAgICAgIyBCWjJGaWxlIHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wKICAgICAgICAgZiA9IE5vbmUKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIieHh4IikKQEAgLTI2OSw3ICs0NzQsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdFRocmVhZGluZyhzZWxmKToKLSAgICAgICAgIyBVc2luZyBhIEJaMkZpbGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgZG9lc24ndCBkZWFkbG9jayAoaXNzdWUgIzcyMDUpLgorICAgICAgICAjIElzc3VlICM3MjA1OiBVc2luZyBhIEJaMkZpbGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgc2hvdWxkbid0IGRlYWRsb2NrLgogICAgICAgICBkYXRhID0gYiIxIiAqIDIqKjIwCiAgICAgICAgIG50aHJlYWRzID0gMTAKICAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgpAQCAtMjgyLDIyICs0ODcsOTggQEAKICAgICAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAotICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25SZWFkcyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjODM5NzogbWl4ZWQgaXRlcmF0aW9uIGFuZCByZWFkcyBzaG91bGQgYmUgZm9yYmlkZGVuLgotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICAjIFRoZSBpbnRlcm5hbCBidWZmZXIgc2l6ZSBpcyBoYXJkLXdpcmVkIHRvIDgxOTIgYnl0ZXMsIHdlIG11c3QKLSAgICAgICAgICAgICMgd3JpdGUgb3V0IG1vcmUgdGhhbiB0aGF0IGZvciB0aGUgdGVzdCB0byBzdG9wIGhhbGYgdGhyb3VnaAotICAgICAgICAgICAgIyB0aGUgYnVmZmVyLgotICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQgKiAxMDApCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgIG5leHQoZikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKKyAgICBkZWYgdGVzdFdpdGhvdXRUaHJlYWRpbmcoc2VsZik6CisgICAgICAgIGJ6MiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiYnoyIiwgYmxvY2tlZD0oInRocmVhZGluZyIsKSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiImFiYyIpCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiYWJjIikKKworICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25BbmRSZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIGxpbmVsZW4gPSBsZW4oc2VsZi5URVhUX0xJTkVTWzBdKQorICAgICAgICBoYWxmbGVuID0gbGluZWxlbiAvLyAyCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZChoYWxmbGVuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGJ6MmYpLCBzZWxmLlRFWFRfTElORVNbMF1baGFsZmxlbjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUW2xpbmVsZW46XSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5yZWFkbGluZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1sxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBzZWxmLlRFWFRfTElORVNbMl0pCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgbmV4dChiejJmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBbXSkKKworICAgIGRlZiB0ZXN0TXVsdGlTdHJlYW1PcmRlcmluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBvcmRlcmluZyBvZiBzdHJlYW1zIHdoZW4gcmVhZGluZyBhIG11bHRpLXN0cmVhbSBhcmNoaXZlLgorICAgICAgICBkYXRhMSA9IGIiZm9vIiAqIDEwMDAKKyAgICAgICAgZGF0YTIgPSBiImJhciIgKiAxMDAwCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgImEiKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShkYXRhMikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBkYXRhMSArIGRhdGEyKQorCisgICAgZGVmIHRlc3RPcGVuQnl0ZXNGaWxlbmFtZShzZWxmKToKKyAgICAgICAgc3RyX2ZpbGVuYW1lID0gc2VsZi5maWxlbmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IHN0cl9maWxlbmFtZS5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB3aXRoIEJaMkZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorICAgICAgICAjIFNhbml0eSBjaGVjayB0aGF0IHdlIGFyZSBhY3R1YWxseSBvcGVyYXRpbmcgb24gdGhlIHJpZ2h0IGZpbGUuCisgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKKworICAgICMgVGVzdHMgZm9yIGEgQloyRmlsZSB3cmFwcGluZyBhbm90aGVyIGZpbGUgb2JqZWN0OgorCisgICAgZGVmIHRlc3RSZWFkQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5jbG9zZWQpCisKKyAgICBkZWYgdGVzdFBlZWtCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihwZGF0YSksIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuVEVYVC5zdGFydHN3aXRoKHBkYXRhKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFdyaXRlQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbywgInciKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKSwgc2VsZi5URVhUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQorCisgICAgZGVmIHRlc3RTZWVrRm9yd2FyZEJ5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKDE1MCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIGJ6MmYucmVhZCg1MDApCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzUwMC0xNTA6XSkKIAogY2xhc3MgQloyQ29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkiCiAgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJjLmNvbXByZXNzKQogICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyhzZWxmLlRFWFQpCkBAIC0zMTEsMTEgKzU5MiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRU1QVFlfREFUQSkKIAogICAgIGRlZiB0ZXN0Q29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJDb21wcmVzc29yLmNvbXByZXNzKCkvZmx1c2goKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQogICAgICAgICBuID0gMAogICAgICAgICBkYXRhID0gYicnCi0gICAgICAgIHdoaWxlIDE6CisgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBzdHIgPSBzZWxmLlRFWFRbbioxMDoobisxKSoxMF0KICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTMyNCwzNCArNjA0LDM4IEBACiAgICAgICAgIGRhdGEgKz0gYnoyYy5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGRhdGEpLCBzZWxmLlRFWFQpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUpCi0gICAgZGVmIHRlc3RCaWdtZW0oc2VsZiwgc2l6ZSk6Ci0gICAgICAgIHRleHQgPSBiImEiICogc2l6ZQotICAgICAgICBiejJjID0gYnoyLkJaMkNvbXByZXNzb3IoKQotICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyh0ZXh0KSArIGJ6MmMuZmx1c2goKQotICAgICAgICBkZWwgdGV4dAotICAgICAgICB0ZXh0ID0gc2VsZi5kZWNvbXByZXNzKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBzaXplKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJhIiksIGIiIikKLQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdENvbXByZXNzNEcoc2VsZiwgc2l6ZSk6CisgICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQorICAgICAgICBkYXRhID0gYiJ4IiAqIHNpemUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6MmMuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgKz0gYnoyYy5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkYXRhID0gTm9uZSAgIyBSZWxlYXNlIG1lbW9yeQorICAgICAgICBkYXRhID0gYnoyLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCiAKIGNsYXNzIEJaMkRlY29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X0NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEJaMkRlY29tcHJlc3NvciwgNDIpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZC5kZWNvbXByZXNzKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGInJwogICAgICAgICBuID0gMAotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3RyID0gc2VsZi5EQVRBW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0zNjAsNyArNjQ0LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NVbnVzZWREYXRhKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCB1bnVzZWQgZGF0YSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHVudXNlZF9kYXRhID0gYiJ0aGlzIGlzIHVudXNlZCBkYXRhIgogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSt1bnVzZWRfZGF0YSkKQEAgLTM2OCwyNSArNjUxLDMwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZC51bnVzZWRfZGF0YSwgdW51c2VkX2RhdGEpCiAKICAgICBkZWYgdGVzdEVPRkVycm9yKHNlbGYpOgotICAgICAgICAjICJDYWxsaW5nIEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgYWZ0ZXIgRU9TIG11c3QgcmFpc2UgRU9GRXJyb3IiCiAgICAgICAgIGJ6MmQgPSBCWjJEZWNvbXByZXNzb3IoKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGJ6MmQuZGVjb21wcmVzcywgYiJhbnl0aGluZyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBiejJkLmRlY29tcHJlc3MsIGIiIikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MS4yNSwgZHJ5X3J1bj1GYWxzZSkKLSAgICBkZWYgdGVzdEJpZ21lbShzZWxmLCB1bnVzZWRfc2l6ZSk6Ci0gICAgICAgICMgSXNzdWUgIzE0Mzk4OiBkZWNvbXByZXNzaW9uIGZhaWxzIHdoZW4gb3V0cHV0IGRhdGEgaXMgPj0yR0IuCi0gICAgICAgIHRleHQgPSBiejIuQloyRGVjb21wcmVzc29yKCkuZGVjb21wcmVzcyhzZWxmLkRBVEFfQklHTUVNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgXzRHKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJcMCIpLCBiIiIpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0RGVjb21wcmVzczRHKHNlbGYsIHNpemUpOgorICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYmxvY2tzaXplID0gMTAgKiAxMDI0ICogMTAyNAorICAgICAgICBibG9jayA9IHJhbmRvbS5nZXRyYW5kYml0cyhibG9ja3NpemUgKiA4KS50b19ieXRlcyhibG9ja3NpemUsICdsaXR0bGUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6Mi5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBkZWNvbXByZXNzZWQgPSBiejJkLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZWNvbXByZXNzZWQgPT0gZGF0YSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgICAgICBjb21wcmVzc2VkID0gTm9uZQorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gTm9uZQogCiAKLWNsYXNzIEZ1bmNUZXN0KEJhc2VUZXN0KToKLSAgICAiVGVzdCBtb2R1bGUgZnVuY3Rpb25zIgotCitjbGFzcyBDb21wcmVzc0RlY29tcHJlc3NUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdENvbXByZXNzKHNlbGYpOgotICAgICAgICAjICJUZXN0IGNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIGRhdGEgPSBiejIuY29tcHJlc3Moc2VsZi5URVhUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhkYXRhKSwgc2VsZi5URVhUKQogCkBAIC0zOTUsMTIgKzY4MywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuRU1QVFlfREFUQSkKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzRW1wdHkoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIHdpdGggZW1wdHkgc3RyaW5nIgogICAgICAgICB0ZXh0ID0gYnoyLmRlY29tcHJlc3MoYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIGIiIikKIApAQCAtNDA5LDM1ICs2OTUsMTE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgYicnKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzSW5jb21wbGV0ZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24gd2l0aCBpbmNvbXBsZXRlIGRhdGEiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6Mi5kZWNvbXByZXNzLCBzZWxmLkRBVEFbOi0xMF0pCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUpCi0gICAgZGVmIHRlc3RDb21wcmVzc0JpZ21lbShzZWxmLCBzaXplKToKLSAgICAgICAgdGV4dCA9IGIiYSIgKiBzaXplCi0gICAgICAgIGRhdGEgPSBiejIuY29tcHJlc3ModGV4dCkKLSAgICAgICAgZGVsIHRleHQKLSAgICAgICAgdGV4dCA9IHNlbGYuZGVjb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgc2l6ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnN0cmlwKGIiYSIpLCBiIiIpCisgICAgZGVmIHRlc3REZWNvbXByZXNzTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEgKiA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUsIGRyeV9ydW49RmFsc2UpCi0gICAgZGVmIHRlc3REZWNvbXByZXNzQmlnbWVtKHNlbGYsIHVudXNlZF9zaXplKToKLSAgICAgICAgIyBJc3N1ZSAjMTQzOTg6IGRlY29tcHJlc3Npb24gZmFpbHMgd2hlbiBvdXRwdXQgZGF0YSBpcyA+PTJHQi4KLSAgICAgICAgdGV4dCA9IGJ6Mi5kZWNvbXByZXNzKHNlbGYuREFUQV9CSUdNRU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBfNEcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5zdHJpcChiIlwwIiksIGIiIikKKworY2xhc3MgT3BlblRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0X3RleHRfbW9kZXMoc2VsZik6CisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHRleHRfbmF0aXZlX2VvbCA9IHRleHQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB0ZXh0X25hdGl2ZV9lb2wgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB0ZXh0ID0gc2VsZi5URVhULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB0ZXh0X25hdGl2ZV9lb2wgPSB0ZXh0LnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYtbGUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHRleHQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZ19lcnJvcl9oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIG5ld2xpbmU9IlxyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgQloyRmlsZVRlc3QsCiAgICAgICAgIEJaMkNvbXByZXNzb3JUZXN0LAogICAgICAgICBCWjJEZWNvbXByZXNzb3JUZXN0LAotICAgICAgICBGdW5jVGVzdAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NUZXN0LAorICAgICAgICBPcGVuVGVzdCwKICAgICApCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQotCi0jIHZpbTp0cz00OnN3PTQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IDk0OGExMTkuLmU1OTRlMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNSw4ICs1LDE5IEBACiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogaW1wb3J0IHRpbWUKIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBzeXMKIGltcG9ydCBkYXRldGltZQogCityZXN1bHRfMjAwNF8wMV90ZXh0ID0gIiIiCisgICAgSmFudWFyeSAyMDA0CitNbyBUdSBXZSBUaCBGciBTYSBTdQorICAgICAgICAgIDEgIDIgIDMgIDQKKyA1ICA2ICA3ICA4ICA5IDEwIDExCisxMiAxMyAxNCAxNSAxNiAxNyAxOAorMTkgMjAgMjEgMjIgMjMgMjQgMjUKKzI2IDI3IDI4IDI5IDMwIDMxCisiIiIKKwogcmVzdWx0XzIwMDRfdGV4dCA9ICIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDQKIApAQCAtNDYsMTEgKzU3LDExIEBACiAiIiIKIAogcmVzdWx0XzIwMDRfaHRtbCA9ICIiIgotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iYXNjaWkiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiUoZSlzIj8+CiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbD4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9YXNjaWkiIC8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lKGUpcyIgLz4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNhbGVuZGFyLmNzcyIgLz4KIDx0aXRsZT5DYWxlbmRhciBmb3IgMjAwNDwvdGl0bGU+CiA8L2hlYWQ+CkBAIC0xNzAsNiArMTgxLDEzNSBAQAogPC9odG1sPgogIiIiCiAKK3Jlc3VsdF8yMDA0X2RheXMgPSBbCisgICAgW1tbMCwgMCwgMCwgMSwgMiwgMywgNF0sCisgICAgICBbNSwgNiwgNywgOCwgOSwgMTAsIDExXSwKKyAgICAgIFsxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOF0sCisgICAgICBbMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVdLAorICAgICAgWzI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAwLCAxXSwKKyAgICAgIFsyLCAzLCA0LCA1LCA2LCA3LCA4XSwKKyAgICAgIFs5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XSwKKyAgICAgIFsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMl0sCisgICAgICBbMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldXSwKKyAgICAgW1sxLCAyLCAzLCA0LCA1LCA2LCA3XSwKKyAgICAgIFs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdLAorICAgICAgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxXSwKKyAgICAgIFsyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOF0sCisgICAgICBbMjksIDMwLCAzMSwgMCwgMCwgMCwgMF1dXSwKKyAgICBbW1swLCAwLCAwLCAxLCAyLCAzLCA0XSwKKyAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdLAorICAgICAgWzEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XSwKKyAgICAgIFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNV0sCisgICAgICBbMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMSwgMl0sCisgICAgICBbMywgNCwgNSwgNiwgNywgOCwgOV0sCisgICAgICBbMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdLAorICAgICAgWzE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzXSwKKyAgICAgIFsyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMF0sCisgICAgICBbMzEsIDAsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAxLCAyLCAzLCA0LCA1LCA2XSwKKyAgICAgIFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10sCisgICAgICBbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdLAorICAgICAgWzIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3XSwKKyAgICAgIFsyOCwgMjksIDMwLCAwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDEsIDIsIDMsIDRdLAorICAgICAgWzUsIDYsIDcsIDgsIDksIDEwLCAxMV0sCisgICAgICBbMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLAorICAgICAgWzE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XSwKKyAgICAgIFsyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMCwgMV0sCisgICAgICBbMiwgMywgNCwgNSwgNiwgNywgOF0sCisgICAgICBbOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICBbMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjJdLAorICAgICAgWzIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSwKKyAgICAgIFszMCwgMzEsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAwLCAxLCAyLCAzLCA0LCA1XSwKKyAgICAgIFs2LCA3LCA4LCA5LCAxMCwgMTEsIDEyXSwKKyAgICAgIFsxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOV0sCisgICAgICBbMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjZdLAorICAgICAgWzI3LCAyOCwgMjksIDMwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDAsIDEsIDIsIDNdLAorICAgICAgWzQsIDUsIDYsIDcsIDgsIDksIDEwXSwKKyAgICAgIFsxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10sCisgICAgICBbMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjRdLAorICAgICAgWzI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxXV0sCisgICAgIFtbMSwgMiwgMywgNCwgNSwgNiwgN10sCisgICAgICBbOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0XSwKKyAgICAgIFsxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMV0sCisgICAgICBbMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjhdLAorICAgICAgWzI5LCAzMCwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDAsIDEsIDIsIDMsIDQsIDVdLAorICAgICAgWzYsIDcsIDgsIDksIDEwLCAxMSwgMTJdLAorICAgICAgWzEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XSwKKyAgICAgIFsyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNl0sCisgICAgICBbMjcsIDI4LCAyOSwgMzAsIDMxLCAwLCAwXV1dCitdCisKK3Jlc3VsdF8yMDA0X2RhdGVzID0gXAorICAgIFtbWycxMi8yOS8wMyAxMi8zMC8wMyAxMi8zMS8wMyAwMS8wMS8wNCAwMS8wMi8wNCAwMS8wMy8wNCAwMS8wNC8wNCcsCisgICAgICAgJzAxLzA1LzA0IDAxLzA2LzA0IDAxLzA3LzA0IDAxLzA4LzA0IDAxLzA5LzA0IDAxLzEwLzA0IDAxLzExLzA0JywKKyAgICAgICAnMDEvMTIvMDQgMDEvMTMvMDQgMDEvMTQvMDQgMDEvMTUvMDQgMDEvMTYvMDQgMDEvMTcvMDQgMDEvMTgvMDQnLAorICAgICAgICcwMS8xOS8wNCAwMS8yMC8wNCAwMS8yMS8wNCAwMS8yMi8wNCAwMS8yMy8wNCAwMS8yNC8wNCAwMS8yNS8wNCcsCisgICAgICAgJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0J10sCisgICAgICBbJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0JywKKyAgICAgICAnMDIvMDIvMDQgMDIvMDMvMDQgMDIvMDQvMDQgMDIvMDUvMDQgMDIvMDYvMDQgMDIvMDcvMDQgMDIvMDgvMDQnLAorICAgICAgICcwMi8wOS8wNCAwMi8xMC8wNCAwMi8xMS8wNCAwMi8xMi8wNCAwMi8xMy8wNCAwMi8xNC8wNCAwMi8xNS8wNCcsCisgICAgICAgJzAyLzE2LzA0IDAyLzE3LzA0IDAyLzE4LzA0IDAyLzE5LzA0IDAyLzIwLzA0IDAyLzIxLzA0IDAyLzIyLzA0JywKKyAgICAgICAnMDIvMjMvMDQgMDIvMjQvMDQgMDIvMjUvMDQgMDIvMjYvMDQgMDIvMjcvMDQgMDIvMjgvMDQgMDIvMjkvMDQnXSwKKyAgICAgIFsnMDMvMDEvMDQgMDMvMDIvMDQgMDMvMDMvMDQgMDMvMDQvMDQgMDMvMDUvMDQgMDMvMDYvMDQgMDMvMDcvMDQnLAorICAgICAgICcwMy8wOC8wNCAwMy8wOS8wNCAwMy8xMC8wNCAwMy8xMS8wNCAwMy8xMi8wNCAwMy8xMy8wNCAwMy8xNC8wNCcsCisgICAgICAgJzAzLzE1LzA0IDAzLzE2LzA0IDAzLzE3LzA0IDAzLzE4LzA0IDAzLzE5LzA0IDAzLzIwLzA0IDAzLzIxLzA0JywKKyAgICAgICAnMDMvMjIvMDQgMDMvMjMvMDQgMDMvMjQvMDQgMDMvMjUvMDQgMDMvMjYvMDQgMDMvMjcvMDQgMDMvMjgvMDQnLAorICAgICAgICcwMy8yOS8wNCAwMy8zMC8wNCAwMy8zMS8wNCAwNC8wMS8wNCAwNC8wMi8wNCAwNC8wMy8wNCAwNC8wNC8wNCddXSwKKyAgICAgW1snMDMvMjkvMDQgMDMvMzAvMDQgMDMvMzEvMDQgMDQvMDEvMDQgMDQvMDIvMDQgMDQvMDMvMDQgMDQvMDQvMDQnLAorICAgICAgICcwNC8wNS8wNCAwNC8wNi8wNCAwNC8wNy8wNCAwNC8wOC8wNCAwNC8wOS8wNCAwNC8xMC8wNCAwNC8xMS8wNCcsCisgICAgICAgJzA0LzEyLzA0IDA0LzEzLzA0IDA0LzE0LzA0IDA0LzE1LzA0IDA0LzE2LzA0IDA0LzE3LzA0IDA0LzE4LzA0JywKKyAgICAgICAnMDQvMTkvMDQgMDQvMjAvMDQgMDQvMjEvMDQgMDQvMjIvMDQgMDQvMjMvMDQgMDQvMjQvMDQgMDQvMjUvMDQnLAorICAgICAgICcwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCddLAorICAgICAgWycwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCcsCisgICAgICAgJzA1LzAzLzA0IDA1LzA0LzA0IDA1LzA1LzA0IDA1LzA2LzA0IDA1LzA3LzA0IDA1LzA4LzA0IDA1LzA5LzA0JywKKyAgICAgICAnMDUvMTAvMDQgMDUvMTEvMDQgMDUvMTIvMDQgMDUvMTMvMDQgMDUvMTQvMDQgMDUvMTUvMDQgMDUvMTYvMDQnLAorICAgICAgICcwNS8xNy8wNCAwNS8xOC8wNCAwNS8xOS8wNCAwNS8yMC8wNCAwNS8yMS8wNCAwNS8yMi8wNCAwNS8yMy8wNCcsCisgICAgICAgJzA1LzI0LzA0IDA1LzI1LzA0IDA1LzI2LzA0IDA1LzI3LzA0IDA1LzI4LzA0IDA1LzI5LzA0IDA1LzMwLzA0JywKKyAgICAgICAnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnXSwKKyAgICAgIFsnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnLAorICAgICAgICcwNi8wNy8wNCAwNi8wOC8wNCAwNi8wOS8wNCAwNi8xMC8wNCAwNi8xMS8wNCAwNi8xMi8wNCAwNi8xMy8wNCcsCisgICAgICAgJzA2LzE0LzA0IDA2LzE1LzA0IDA2LzE2LzA0IDA2LzE3LzA0IDA2LzE4LzA0IDA2LzE5LzA0IDA2LzIwLzA0JywKKyAgICAgICAnMDYvMjEvMDQgMDYvMjIvMDQgMDYvMjMvMDQgMDYvMjQvMDQgMDYvMjUvMDQgMDYvMjYvMDQgMDYvMjcvMDQnLAorICAgICAgICcwNi8yOC8wNCAwNi8yOS8wNCAwNi8zMC8wNCAwNy8wMS8wNCAwNy8wMi8wNCAwNy8wMy8wNCAwNy8wNC8wNCddXSwKKyAgICAgW1snMDYvMjgvMDQgMDYvMjkvMDQgMDYvMzAvMDQgMDcvMDEvMDQgMDcvMDIvMDQgMDcvMDMvMDQgMDcvMDQvMDQnLAorICAgICAgICcwNy8wNS8wNCAwNy8wNi8wNCAwNy8wNy8wNCAwNy8wOC8wNCAwNy8wOS8wNCAwNy8xMC8wNCAwNy8xMS8wNCcsCisgICAgICAgJzA3LzEyLzA0IDA3LzEzLzA0IDA3LzE0LzA0IDA3LzE1LzA0IDA3LzE2LzA0IDA3LzE3LzA0IDA3LzE4LzA0JywKKyAgICAgICAnMDcvMTkvMDQgMDcvMjAvMDQgMDcvMjEvMDQgMDcvMjIvMDQgMDcvMjMvMDQgMDcvMjQvMDQgMDcvMjUvMDQnLAorICAgICAgICcwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCddLAorICAgICAgWycwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCcsCisgICAgICAgJzA4LzAyLzA0IDA4LzAzLzA0IDA4LzA0LzA0IDA4LzA1LzA0IDA4LzA2LzA0IDA4LzA3LzA0IDA4LzA4LzA0JywKKyAgICAgICAnMDgvMDkvMDQgMDgvMTAvMDQgMDgvMTEvMDQgMDgvMTIvMDQgMDgvMTMvMDQgMDgvMTQvMDQgMDgvMTUvMDQnLAorICAgICAgICcwOC8xNi8wNCAwOC8xNy8wNCAwOC8xOC8wNCAwOC8xOS8wNCAwOC8yMC8wNCAwOC8yMS8wNCAwOC8yMi8wNCcsCisgICAgICAgJzA4LzIzLzA0IDA4LzI0LzA0IDA4LzI1LzA0IDA4LzI2LzA0IDA4LzI3LzA0IDA4LzI4LzA0IDA4LzI5LzA0JywKKyAgICAgICAnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnXSwKKyAgICAgIFsnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnLAorICAgICAgICcwOS8wNi8wNCAwOS8wNy8wNCAwOS8wOC8wNCAwOS8wOS8wNCAwOS8xMC8wNCAwOS8xMS8wNCAwOS8xMi8wNCcsCisgICAgICAgJzA5LzEzLzA0IDA5LzE0LzA0IDA5LzE1LzA0IDA5LzE2LzA0IDA5LzE3LzA0IDA5LzE4LzA0IDA5LzE5LzA0JywKKyAgICAgICAnMDkvMjAvMDQgMDkvMjEvMDQgMDkvMjIvMDQgMDkvMjMvMDQgMDkvMjQvMDQgMDkvMjUvMDQgMDkvMjYvMDQnLAorICAgICAgICcwOS8yNy8wNCAwOS8yOC8wNCAwOS8yOS8wNCAwOS8zMC8wNCAxMC8wMS8wNCAxMC8wMi8wNCAxMC8wMy8wNCddXSwKKyAgICAgW1snMDkvMjcvMDQgMDkvMjgvMDQgMDkvMjkvMDQgMDkvMzAvMDQgMTAvMDEvMDQgMTAvMDIvMDQgMTAvMDMvMDQnLAorICAgICAgICcxMC8wNC8wNCAxMC8wNS8wNCAxMC8wNi8wNCAxMC8wNy8wNCAxMC8wOC8wNCAxMC8wOS8wNCAxMC8xMC8wNCcsCisgICAgICAgJzEwLzExLzA0IDEwLzEyLzA0IDEwLzEzLzA0IDEwLzE0LzA0IDEwLzE1LzA0IDEwLzE2LzA0IDEwLzE3LzA0JywKKyAgICAgICAnMTAvMTgvMDQgMTAvMTkvMDQgMTAvMjAvMDQgMTAvMjEvMDQgMTAvMjIvMDQgMTAvMjMvMDQgMTAvMjQvMDQnLAorICAgICAgICcxMC8yNS8wNCAxMC8yNi8wNCAxMC8yNy8wNCAxMC8yOC8wNCAxMC8yOS8wNCAxMC8zMC8wNCAxMC8zMS8wNCddLAorICAgICAgWycxMS8wMS8wNCAxMS8wMi8wNCAxMS8wMy8wNCAxMS8wNC8wNCAxMS8wNS8wNCAxMS8wNi8wNCAxMS8wNy8wNCcsCisgICAgICAgJzExLzA4LzA0IDExLzA5LzA0IDExLzEwLzA0IDExLzExLzA0IDExLzEyLzA0IDExLzEzLzA0IDExLzE0LzA0JywKKyAgICAgICAnMTEvMTUvMDQgMTEvMTYvMDQgMTEvMTcvMDQgMTEvMTgvMDQgMTEvMTkvMDQgMTEvMjAvMDQgMTEvMjEvMDQnLAorICAgICAgICcxMS8yMi8wNCAxMS8yMy8wNCAxMS8yNC8wNCAxMS8yNS8wNCAxMS8yNi8wNCAxMS8yNy8wNCAxMS8yOC8wNCcsCisgICAgICAgJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0J10sCisgICAgICBbJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0JywKKyAgICAgICAnMTIvMDYvMDQgMTIvMDcvMDQgMTIvMDgvMDQgMTIvMDkvMDQgMTIvMTAvMDQgMTIvMTEvMDQgMTIvMTIvMDQnLAorICAgICAgICcxMi8xMy8wNCAxMi8xNC8wNCAxMi8xNS8wNCAxMi8xNi8wNCAxMi8xNy8wNCAxMi8xOC8wNCAxMi8xOS8wNCcsCisgICAgICAgJzEyLzIwLzA0IDEyLzIxLzA0IDEyLzIyLzA0IDEyLzIzLzA0IDEyLzI0LzA0IDEyLzI1LzA0IDEyLzI2LzA0JywKKyAgICAgICAnMTIvMjcvMDQgMTIvMjgvMDQgMTIvMjkvMDQgMTIvMzAvMDQgMTIvMzEvMDQgMDEvMDEvMDUgMDEvMDIvMDUnXV1dCisKIAogY2xhc3MgT3V0cHV0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBub3JtYWxpemVfY2FsZW5kYXIoc2VsZiwgcyk6CkBAIC0xNzgsMTIgKzMxOCwxOSBAQAogICAgICAgICAgICAgcmV0dXJuIG5vdCBjLmlzc3BhY2UoKSBhbmQgbm90IGMuaXNkaWdpdCgpCiAKICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoRmFsc2UpOgorICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpOgogICAgICAgICAgICAgIyBEcm9wIHRleHRzLCBhcyB0aGV5IGFyZSBsb2NhbGUgZGVwZW5kZW50CiAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgZmlsdGVyKG5laXRoZXJzcGFjZW5vcmRpZ2l0LCBsaW5lKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKKyAgICBkZWYgY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKHNlbGYsIHJlcSwgcmVzKToKKyAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1yZXEpLnN0cmlwKGInIFx0XG4nKSwKKyAgICAgICAgICAgIChyZXN1bHRfMjAwNF9odG1sICUgeydlJzogcmVzfSkuc3RyaXAoJyBcdFxuJykuZW5jb2RlKHJlcykKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2VsZi5ub3JtYWxpemVfY2FsZW5kYXIoY2FsZW5kYXIuY2FsZW5kYXIoMjAwNCkpLApAQCAtMTk2LDEyICszNDMsNjAgQEAKICAgICAgICAgICAgIHJlc3VsdF8yMDA0X3RleHQuc3RyaXAoKQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyKHNlbGYpOgotICAgICAgICBlbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX2FzY2lpKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygnYXNjaWknLCAnYXNjaWknKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ191dGY4KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygndXRmLTgnLCAndXRmLTgnKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ19kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZyhOb25lLCBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkpCisKKyAgICBkZWYgdGVzdF95ZWFyZGF0ZXNjYWxlbmRhcihzZWxmKToKKyAgICAgICAgZGVmIHNocmluayhjYWwpOgorICAgICAgICAgICAgcmV0dXJuIFtbWycgJy5qb2luKCd7OjAyZH0vezowMmR9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQubW9udGgsIGQuZGF5LCBzdHIoZC55ZWFyKVstMjpdKSBmb3IgZCBpbiB6KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB6IGluIHldIGZvciB5IGluIHhdIGZvciB4IGluIGNhbF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1lbmNvZGluZykuc3RyaXAoYicgXHRcbicpLAotICAgICAgICAgICAgcmVzdWx0XzIwMDRfaHRtbC5zdHJpcCgnIFx0XG4nKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzaHJpbmsoY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF0ZXNjYWxlbmRhcigyMDA0KSksCisgICAgICAgICAgICByZXN1bHRfMjAwNF9kYXRlcworICAgICAgICApCisKKyAgICBkZWYgdGVzdF95ZWFyZGF5c2NhbGVuZGFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF5c2NhbGVuZGFyKDIwMDQpLAorICAgICAgICAgICAgcmVzdWx0XzIwMDRfZGF5cworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXR3ZWVraGVhZGVyX3Nob3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcigyKSwKKyAgICAgICAgICAgICdNbyBUdSBXZSBUaCBGciBTYSBTdScKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0d2Vla2hlYWRlcl9sb25nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcig5KSwKKyAgICAgICAgICAgICcgIE1vbmRheSAgIFR1ZXNkYXkgIFdlZG5lc2RheSAgVGh1cnNkYXkgJworICAgICAgICAgICAgJyAgRnJpZGF5ICAgU2F0dXJkYXkgICBTdW5kYXkgJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLmZvcm1hdG1vbnRoKDIwMDQsIDEpLnN0cmlwKCksCisgICAgICAgICAgICByZXN1bHRfMjAwNF8wMV90ZXh0LnN0cmlwKCkKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1UcnVlKSwKKyAgICAgICAgICAgICc8dHI+PHRoIGNvbHNwYW49IjciIGNsYXNzPSJtb250aCI+SmFudWFyeSAyMDA0PC90aD48L3RyPicKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhvdXRfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1GYWxzZSksCisgICAgICAgICAgICAnPHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0ibW9udGgiPkphbnVhcnk8L3RoPjwvdHI+JwogICAgICAgICApCiAKIApAQCAtMjI3LDcgKzQyMiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGVuZGFyLmZpcnN0d2Vla2RheSgpLCBjYWxlbmRhci5NT05EQVkpCiAgICAgICAgIGNhbGVuZGFyLnNldGZpcnN0d2Vla2RheShvcmlnKQogCi0gICAgZGVmIHRlc3RfZW51bWVyYXRld2Vla2RheXMoc2VsZik6CisgICAgZGVmIHRlc3RfaWxsZWdhbF93ZWVrZGF5X3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbFdlZWtkYXlFcnJvciwgJzEyMycpOgorICAgICAgICAgICAgY2FsZW5kYXIuc2V0Zmlyc3R3ZWVrZGF5KDEyMykKKworICAgIGRlZiB0ZXN0X2VudW1lcmF0ZV93ZWVrZGF5cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X2FiYnIuX19nZXRpdGVtX18sIC0xMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X25hbWUuX19nZXRpdGVtX18sIDEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihbZCBmb3IgZCBpbiBjYWxlbmRhci5kYXlfYWJicl0pLCA3KQpAQCAtMjUzLDcgKzQ1Miw3IEBACiAgICAgICAgICAgICAjIHZlcmlmeSBpdCAiYWN0cyBsaWtlIGEgc2VxdWVuY2UiIGluIHR3byBmb3JtcyBvZiBpdGVyYXRpb24KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbOjotMV0sIGxpc3QocmV2ZXJzZWQodmFsdWUpKSkKIAotICAgIGRlZiB0ZXN0X2xvY2FsZWNhbGVuZGFycyhzZWxmKToKKyAgICBkZWYgdGVzdF9sb2NhbGVfY2FsZW5kYXJzKHNlbGYpOgogICAgICAgICAjIGVuc3VyZSB0aGF0IExvY2FsZXtUZXh0LEhUTUx9Q2FsZW5kYXIgcmVzZXRzIHRoZSBsb2NhbGUgcHJvcGVybHkKICAgICAgICAgIyAoaXQgaXMgc3RpbGwgbm90IHRocmVhZC1zYWZlIHRob3VnaCkKICAgICAgICAgb2xkX29jdG9iZXIgPSBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXRtb250aG5hbWUoMjAxMCwgMTAsIDEwKQpAQCAtNDM3LDYgKzYzNiwxMCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNhbGVuZGFyLklsbGVnYWxNb250aEVycm9yKToKICAgICAgICAgICAgIGNhbGVuZGFyLm1vbnRocmFuZ2UoMjAwNCwgMTMpCiAKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX21vbnRoX3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbE1vbnRoRXJyb3IsICc2NScpOgorICAgICAgICAgICAgY2FsZW5kYXIubW9udGhyYW5nZSgyMDA0LCA2NSkKKwogY2xhc3MgTGVhcGRheXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfbm9fcmFuZ2Uoc2VsZik6CiAgICAgICAgICMgdGVzdCB3aGVuIG5vIHJhbmdlIGkuZS4gdHdvIGlkZW50aWNhbCB5ZWFycyBhcyBhcmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggZTdhZmE1NS4uNTAwMmM3NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNTIsMTMgKzUyLDM2IEBACiAgICAgICAgIChvdXQsIGVycikgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgIyBUaGlzIHVzZWQgdG8gY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucnN0cmlwKCksCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIucnN0cmlwKCkuc3RhcnRzd2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZhdGFsIFB5dGhvbiBlcnJvcjonCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicgUHlUaHJlYWRTdGF0ZV9HZXQ6IG5vIGN1cnJlbnQgdGhyZWFkJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyBQeVRocmVhZFN0YXRlX0dldDogbm8gY3VycmVudCB0aHJlYWQnKSkKIAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZnJvbV9OVUxMX3BvaW50ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5tYWtlX21lbW9yeXZpZXdfZnJvbV9OVUxMX3BvaW50ZXIpCiAKKyAgICBkZWYgdGVzdF9leGNfaW5mbyhzZWxmKToKKyAgICAgICAgcmFpc2VkX2V4Y2VwdGlvbiA9IFZhbHVlRXJyb3IoIjUiKQorICAgICAgICBuZXdfZXhjID0gVHlwZUVycm9yKCJURVNUIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgcmFpc2VkX2V4Y2VwdGlvbgorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIG9yaWdfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIG9yaWdfZXhjX2luZm8gPSBfdGVzdGNhcGkuc2V0X2V4Y19pbmZvKG5ld19leGMuX19jbGFzc19fLCBuZXdfZXhjLCBOb25lKQorICAgICAgICAgICAgbmV3X3N5c19leGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBuZXdfZXhjX2luZm8gPSBfdGVzdGNhcGkuc2V0X2V4Y19pbmZvKCpvcmlnX2V4Y19pbmZvKQorICAgICAgICAgICAgcmVzZXRfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnX2V4Y19pbmZvWzFdLCBlKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwob3JpZ19leGNfaW5mbywgKHJhaXNlZF9leGNlcHRpb24uX19jbGFzc19fLCByYWlzZWRfZXhjZXB0aW9uLCB0YikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwob3JpZ19zeXNfZXhjX2luZm8sIG9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwocmVzZXRfc3lzX2V4Y19pbmZvLCBvcmlnX2V4Y19pbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKG5ld19leGNfaW5mbywgKG5ld19leGMuX19jbGFzc19fLCBuZXdfZXhjLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChuZXdfc3lzX2V4Y19pbmZvLCBuZXdfZXhjX2luZm8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfcG9zaXhzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3Rfc2VxX2J5dGVzX3RvX2NoYXJwX2FycmF5KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNTczMjogY3Jhc2ggaW4gX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoKQpAQCAtMjIxLDkgKzI0NCw5MSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MuY2hkaXIob2xkY3dkKQogCitjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJZiB0aGlzIHRlc3QgZmFpbGVkLCB5b3UgcHJvYmFibHkgYWRkZWQgYSBuZXcgImZvcm1hdCB1bml0IgorICAgICAgICBpbiBQeXRob24vZ2V0YXJncy5jLCBidXQgbmVnbGVjdGVkIHRvIHVwZGF0ZSBvdXIgcG9vciBmcmllbmQKKyAgICAgICAgc2tpcGl0ZW0oKSBpbiB0aGUgc2FtZSBmaWxlLiAgKElmIHNvLCBzaGFtZSBvbiB5b3UhKQorCisgICAgICAgIFdpdGggYSBmZXcgZXhjZXB0aW9ucyoqLCB0aGlzIGZ1bmN0aW9uIGJydXRlLWZvcmNlIHRlc3RzIGFsbAorICAgICAgICBwcmludGFibGUgQVNDSUkqKiogY2hhcmFjdGVycyAoMzIgdG8gMTI2IGluY2x1c2l2ZSkgYXMgZm9ybWF0IHVuaXRzLAorICAgICAgICBjaGVja2luZyB0byBzZWUgdGhhdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSByZXR1cm4gY29uc2lzdGVudAorICAgICAgICBlcnJvcnMgYm90aCB3aGVuIHRoZSB1bml0IGlzIGF0dGVtcHRlZCB0byBiZSB1c2VkIGFuZCB3aGVuIGl0IGlzCisgICAgICAgIHNraXBwZWQuICBJZiB0aGUgZm9ybWF0IHVuaXQgZG9lc24ndCBleGlzdCwgd2UnbGwgZ2V0IG9uZSBvZiB0d28KKyAgICAgICAgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgKG9uZSBmb3IgdXNlZCwgb25lIGZvciBza2lwcGVkKTsgaWYgaXQgZG9lcworICAgICAgICBleGlzdCB3ZSAqd29uJ3QqIGdldCB0aGF0IGVycm9yLS13ZSdsbCBnZXQgZWl0aGVyIG5vIGVycm9yIG9yIHNvbWUKKyAgICAgICAgb3RoZXIgZXJyb3IuICBJZiB3ZSBnZXQgdGhlIHNwZWNpZmljICJkb2VzIG5vdCBleGlzdCIgZXJyb3IgZm9yIG9uZQorICAgICAgICB0ZXN0IGFuZCBub3QgZm9yIHRoZSBvdGhlciwgdGhlcmUncyBhIG1pc21hdGNoLCBhbmQgdGhlIHRlc3QgZmFpbHMuCisKKyAgICAgICAgICAgKiogU29tZSBmb3JtYXQgdW5pdHMgaGF2ZSBzcGVjaWFsIGZ1bm55IHNlbWFudGljcyBhbmQgaXQgd291bGQKKyAgICAgICAgICAgICAgYmUgZGlmZmljdWx0IHRvIGFjY29tb2RhdGUgdGhlbSBoZXJlLiAgU2luY2UgdGhlc2UgYXJlIGFsbAorICAgICAgICAgICAgICB3ZWxsLWVzdGFibGlzaGVkIGFuZCBwcm9wZXJseSBza2lwcGVkIGluIHNraXBpdGVtKCkgd2UgY2FuCisgICAgICAgICAgICAgIGdldCBhd2F5IHdpdGggbm90IHRlc3RpbmcgdGhlbS0tdGhpcyB0ZXN0IGlzIHJlYWxseSBpbnRlbmRlZAorICAgICAgICAgICAgICB0byBjYXRjaCAqbmV3KiBmb3JtYXQgdW5pdHMuCisKKyAgICAgICAgICAqKiogUHl0aG9uIEMgc291cmNlIGZpbGVzIG11c3QgYmUgQVNDSUkuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlCisgICAgICAgICAgICAgIHRvIGhhdmUgbm9uLUFTQ0lJIGZvcm1hdCB1bml0cy4KKworICAgICAgICAiIiIKKyAgICAgICAgZW1wdHlfdHVwbGUgPSAoKQorICAgICAgICB0dXBsZV8xID0gKDAsKQorICAgICAgICBkaWN0X2IgPSB7J2InOjF9CisgICAgICAgIGtleXdvcmRzID0gWyJhIiwgImIiXQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMyLCAxMjcpOgorICAgICAgICAgICAgYyA9IGNocihpKQorCisgICAgICAgICAgICAjIHNraXAgcGFyZW50aGVzZXMsIHRoZSBlcnJvciByZXBvcnRpbmcgaXMgaW5jb25zaXN0ZW50IGFib3V0IHRoZW0KKyAgICAgICAgICAgICMgc2tpcCAnZScsIGl0J3MgYWx3YXlzIGEgdHdvLWNoYXJhY3RlciBjb2RlCisgICAgICAgICAgICAjIHNraXAgJ3wnIGFuZCAnJCcsIHRoZXkgZG9uJ3QgcmVwcmVzZW50IGFyZ3VtZW50cyBhbnl3YXkKKyAgICAgICAgICAgIGlmIGMgaW4gJygpZXwkJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gbm90IHNraXBwZWQKKyAgICAgICAgICAgIGZvcm1hdCA9IGMgKyAiaSIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIChub3RlOiB0aGUgZm9ybWF0IHN0cmluZyBtdXN0IGJlIGJ5dGVzISkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHR1cGxlXzEsIGRpY3RfYiwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIG11c3QgYmUgaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+LCBub3QgaW50IgorICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBza2lwcGVkCisgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQgPSAifCIgKyBmb3JtYXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKGVtcHR5X3R1cGxlLCBkaWN0X2IsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQorICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQorCisgICAgICAgICAgICBtZXNzYWdlID0gKCJ0ZXN0X3NraXBpdGVtX3Bhcml0eTogIgorICAgICAgICAgICAgICAgICJkZXRlY3RlZCBtaXNtYXRjaCBiZXR3ZWVuIGNvbnZlcnRzaW1wbGUgYW5kIHNraXBpdGVtICIKKyAgICAgICAgICAgICAgICAiZm9yIGZvcm1hdCB1bml0ICd7fScgKHt9KSwgbm90IHNraXBwZWQge30sIHNraXBwZWQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYywgaSwgd2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkLCBtZXNzYWdlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHNlbGYpOgorICAgICAgICAjIHBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyBlcnJvciBoYW5kbGluZyB0ZXN0cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgNDIsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sIGInJywgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbJyddICogNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbNDJdKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0FQSVRlc3QsIFRlc3RQZW5kaW5nQ2FsbHMsIFRlc3Q2MDEyLCBFbWJlZGRpbmdUZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENBUElUZXN0LCBUZXN0UGVuZGluZ0NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q2MDEyLCBFbWJlZGRpbmdUZXN0LCBTa2lwaXRlbVRlc3QpCiAKICAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCd0ZXN0XycpOgpAQCAtMjQwLDE4ICszNDUsMTcgQEAKICAgICAgICAgaWRlbnRzID0gW10KIAogICAgICAgICBkZWYgY2FsbGJhY2soKToKLSAgICAgICAgICAgIGlkZW50cy5hcHBlbmQoX3RocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgICAgIGlkZW50cy5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogCiAgICAgICAgIF90ZXN0Y2FwaS5fdGVzdF90aHJlYWRfc3RhdGUoY2FsbGJhY2spCiAgICAgICAgIGEgPSBiID0gY2FsbGJhY2sKICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAjIENoZWNrIG91ciBtYWluIHRocmVhZCBpcyBpbiB0aGUgbGlzdCBleGFjdGx5IDMgdGltZXMuCi0gICAgICAgIGlmIGlkZW50cy5jb3VudChfdGhyZWFkLmdldF9pZGVudCgpKSAhPSAzOgorICAgICAgICBpZiBpZGVudHMuY291bnQodGhyZWFkaW5nLmdldF9pZGVudCgpKSAhPSAzOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgbWFpbiB0aHJlYWQgY29ycmVjdGx5IGluIHRoZSBsaXN0IikKIAogICAgIGlmIHRocmVhZGluZzoKLSAgICAgICAgaW1wb3J0IF90aHJlYWQKICAgICAgICAgaW1wb3J0IHRpbWUKICAgICAgICAgVGVzdFRocmVhZFN0YXRlKCkKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PVRlc3RUaHJlYWRTdGF0ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggMzAzMWZiMy4uNTUxMGEwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTwogCiBjbGFzcyBIYWNrZWRTeXNNb2R1bGU6CkBAIC0xMTksOSArMTIwLDEzIEBACiBjbGFzcyBDZ2lUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QgJmFtcDsgc3RyaW5nIiwgY2dpLmVzY2FwZSgidGVzdCAmIHN0cmluZyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImcXVvdDt0ZXN0IHN0cmluZyZxdW90OyIsIGNnaS5lc2NhcGUoJyJ0ZXN0IHN0cmluZyInLCBUcnVlKSkKKyAgICAgICAgIyBjZ2kuZXNjYXBlKCkgaXMgZGVwcmVjYXRlZC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICdjZ2lcLmVzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJnF1b3Q7dGVzdCBzdHJpbmcmcXVvdDsiLCBjZ2kuZXNjYXBlKCcidGVzdCBzdHJpbmciJywgVHJ1ZSkpCiAKICAgICBkZWYgdGVzdF9zdHJpY3Qoc2VsZik6CiAgICAgICAgIGZvciBvcmlnLCBleHBlY3QgaW4gcGFyc2Vfc3RyaWN0X3Rlc3RfY2FzZXM6CkBAIC0xNjAsMTMgKzE2NSw3IEBACiAgICAgICAgICAgICBjZ2kubG9nZnAgPSBOb25lCiAgICAgICAgICAgICBjZ2kubG9nZmlsZSA9ICIvZGV2L251bGwiCiAgICAgICAgICAgICBjZ2kuaW5pdGxvZygiJXMiLCAiVGVzdGluZyBsb2cgMyIpCi0gICAgICAgICAgICBkZWYgbG9nX2NsZWFudXAoKToKLSAgICAgICAgICAgICAgICAiIiJSZXN0b3JlIHRoZSBnbG9iYWwgc3RhdGUgb2YgdGhlIGxvZyB2YXJzLiIiIgotICAgICAgICAgICAgICAgIGNnaS5sb2dmaWxlID0gJycKLSAgICAgICAgICAgICAgICBjZ2kubG9nZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNnaS5sb2dmcCA9IE5vbmUKLSAgICAgICAgICAgICAgICBjZ2kubG9nID0gY2dpLmluaXRsb2cKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dfY2xlYW51cCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjZ2kuY2xvc2Vsb2cpCiAgICAgICAgICAgICBjZ2kubG9nKCJUZXN0aW5nIGxvZyA0IikKIAogICAgIGRlZiB0ZXN0X2ZpZWxkc3RvcmFnZV9yZWFkbGluZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMDcyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CkBAIC0wLDAgKzEsNzAgQEAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHRlbXBfZGlyCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKK2ltcG9ydCBjZ2l0YgorCitjbGFzcyBUZXN0Q2dpdGIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZm9udHMoc2VsZik6CisgICAgICAgIHRleHQgPSAiSGVsbG8gUm9iYmllISIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCh0ZXh0KSwgIjxzbWFsbD57fTwvc21hbGw+Ii5mb3JtYXQodGV4dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuc3Ryb25nKHRleHQpLCAiPHN0cm9uZz57fTwvc3Ryb25nPiIuZm9ybWF0KHRleHQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkodGV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzxmb250IGNvbG9yPSIjOTA5MDkwIj57fTwvZm9udD4nLmZvcm1hdCh0ZXh0KSkKKworICAgIGRlZiB0ZXN0X2JsYW5rcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCgiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnN0cm9uZygiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkoIiIpLCAiIikKKworICAgIGRlZiB0ZXN0X2h0bWwoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBJZiB0aGUgaHRtbCB3YXMgdGVtcGxhdGVkIHdlIGNvdWxkIGRvIGEgYml0IG1vcmUgaGVyZS4KKyAgICAgICAgICAgICMgQXQgbGVhc3QgY2hlY2sgdGhhdCB3ZSBnZXQgZGV0YWlscyBvbiB3aGF0IHdlIGp1c3QgcmFpc2VkLgorICAgICAgICAgICAgaHRtbCA9IGNnaXRiLmh0bWwoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgaHRtbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKGVyciksIGh0bWwpCisKKyAgICBkZWYgdGVzdF90ZXh0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHRleHQgPSBjZ2l0Yi50ZXh0KHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJIZWxsbyBXb3JsZCIsIHRleHQpCisKKyAgICBkZWYgdGVzdF9zeXNob29rX25vX2xvZ2Rpcl9kZWZhdWx0X2Zvcm1hdChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHRyYWNlZGlyOgorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAorICAgICAgICAgICAgICAgICAgJy1jJywKKyAgICAgICAgICAgICAgICAgICgnaW1wb3J0IGNnaXRiOyBjZ2l0Yi5lbmFibGUobG9nZGlyPSVzKTsgJworICAgICAgICAgICAgICAgICAgICdyYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpJykgJSByZXByKHRyYWNlZGlyKSkKKyAgICAgICAgb3V0ID0gb3V0LmRlY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlZhbHVlRXJyb3IiLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkhlbGxvIFdvcmxkIiwgb3V0KQorICAgICAgICAjIEJ5IGRlZmF1bHQgd2UgZW1pdCBIVE1MIG1hcmt1cC4KKyAgICAgICAgc2VsZi5hc3NlcnRJbignPHA+Jywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKCc8L3A+Jywgb3V0KQorCisgICAgZGVmIHRlc3Rfc3lzaG9va19ub19sb2dkaXJfdGV4dF9mb3JtYXQoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTI4OTA6IHdlIHdlcmUgZW1pdHRpbmcgdGhlIDxwPiB0YWcgaW4gdGV4dCBtb2RlLgorICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgdHJhY2VkaXI6CisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCisgICAgICAgICAgICAgICAgICAnLWMnLAorICAgICAgICAgICAgICAgICAgKCdpbXBvcnQgY2dpdGI7IGNnaXRiLmVuYWJsZShmb3JtYXQ9InRleHQiLCBsb2dkaXI9JXMpOyAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIiknKSAlIHJlcHIodHJhY2VkaXIpKQorICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiSGVsbG8gV29ybGQiLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJzxwPicsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignPC9wPicsIG91dCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KFRlc3RDZ2l0YikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQppbmRleCAzYTQ2MzU1Li42NjE4NTM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQpAQCAtMjI4LDcgKzIyOCw3IEBACiAKIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQotICAgIHRyYWNlcj10cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwKKyAgICB0cmFjZXI9dHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9MCwgY291bnQ9MSkKICAgICB0cmFjZXIucnVuKCdyZWxvYWQoY21kKTt0ZXN0X21haW4oKScpCiAgICAgcj10cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCA2NzM3NWNkLi5hODlkN2U0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTMyLDEyICszMiw2IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1PJykKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLU9PJykKIAotICAgIGRlZiB0ZXN0X3Eoc2VsZik6Ci0gICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1Rb2xkJykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVFuZXcnKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm4nKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm5hbGwnKQotCiAgICAgZGVmIHRlc3Rfc2l0ZV9mbGFnKHNlbGYpOgogICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUycpCiAKQEAgLTE0OCw3ICsxNDIsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3Qgc3BlY2lmaWMgdG8gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X29zeF91dGY4KHNlbGYpOgogICAgICAgICBkZWYgY2hlY2tfb3V0cHV0KHRleHQpOgotICAgICAgICAgICAgZGVjb2RlZCA9IHRleHQuZGVjb2RlKCd1dGY4JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICBkZWNvZGVkID0gdGV4dC5kZWNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGFzY2lpKGRlY29kZWQpLmVuY29kZSgnYXNjaWknKSArIGInXG4nCiAKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0yMjAsNyArMjE0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoMi5lbmNvZGUoJ2FzY2lpJyksIG91dCkKIAogICAgIGRlZiB0ZXN0X2Rpc3BsYXlob29rX3VuZW5jb2RhYmxlKHNlbGYpOgotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbjEnLCAndXRmOCcpOgorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbi0xJywgJ3V0Zi04Jyk6CiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICAgZW52WydQWVRIT05JT0VOQ09ESU5HJ10gPSBlbmNvZGluZwogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oCkBAIC0yOTYsNyArMjkwLDcgQEAKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gSU9FcnJvcjogLiogaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBPU0Vycm9yOiAuKiBpZ25vcmVkJykKIAogICAgIGRlZiB0ZXN0X2Nsb3NlZF9zdGRvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNDQ0OiBpZiBzdGRvdXQgaGFzIGJlZW4gZXhwbGljaXRseSBjbG9zZWQsIHdlIHNob3VsZApAQCAtMzUwLDE0ICszNDQsMTQgQEAKICAgICAgICAgaGFzaGVzID0gW10KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAgICBjb2RlID0gJ3ByaW50KGhhc2goInNwYW0iKSknCi0gICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaGVzWzBdLCBoYXNoZXNbMV0pCiAKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzeXMuZmxhZ3MgY29udGFpbnMgaGFzaF9yYW5kb21pemF0aW9uCiAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgcHJpbnQoInJhbmRvbSBpcyIsIHN5cy5mbGFncy5oYXNoX3JhbmRvbWl6YXRpb24pJwotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3JhbmRvbSBpcyAxJywgb3V0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IDcwZjdkMWUuLjYwNTFlMTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xLDE1ICsxLDIwIEBACiAjIHRlc3RzIGNvbW1hbmQgbGluZSBleGVjdXRpb24gb2Ygc2NyaXB0cwogCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcHlfY29tcGlsZQogCitpbXBvcnQgdGV4dHdyYXAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIpCisgICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKKyAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQogCiB2ZXJib3NlID0gc3VwcG9ydC52ZXJib3NlCiAKQEAgLTMyLDYgKzM3LDkgQEAKIGFzc2VydEVxdWFsKHJlc3VsdCwgWydUb3AgbGV2ZWwgYXNzaWdubWVudCcsICdMb3dlciBsZXZlbCByZWZlcmVuY2UnXSkKICMgQ2hlY2sgcG9wdWxhdGlvbiBvZiBtYWdpYyB2YXJpYWJsZXMKIGFzc2VydEVxdWFsKF9fbmFtZV9fLCAnX19tYWluX18nKQorZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKK19sb2FkZXIgPSBfX2xvYWRlcl9fIGlmIF9fbG9hZGVyX18gaXMgQnVpbHRpbkltcG9ydGVyIGVsc2UgdHlwZShfX2xvYWRlcl9fKQorcHJpbnQoJ19fbG9hZGVyX189PSVhJyAlIF9sb2FkZXIpCiBwcmludCgnX19maWxlX189PSVhJyAlIF9fZmlsZV9fKQogYXNzZXJ0RXF1YWwoX19jYWNoZWRfXywgTm9uZSkKIHByaW50KCdfX3BhY2thZ2VfXz09JXInICUgX19wYWNrYWdlX18pCkBAIC00OSwxMiArNTcsMTYgQEAKICIiIgogCiBkZWYgX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2U9dGVzdF9zb3VyY2UpOgotICAgIHJldHVybiBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICB0b19yZXR1cm4gPSBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgIHJldHVybiB0b19yZXR1cm4KIAogZGVmIF9tYWtlX3Rlc3RfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT10ZXN0X3NvdXJjZSwgZGVwdGg9MSk6Ci0gICAgcmV0dXJuIG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGRlcHRoKQorICAgIHRvX3JldHVybiA9IG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgZGVwdGgpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKICMgVGhlcmUncyBubyBlYXN5IHdheSB0byBwYXNzIHRoZSBzY3JpcHQgZGlyZWN0b3J5IGluIHRvIGdldAogIyAtbSB0byB3b3JrIChhdm9pZGluZyB0aGF0IGlzIHRoZSB3aG9sZSBwb2ludCBvZiBtYWtpbmcKQEAgLTcyLDE2ICs4NCwyMCBAQAogICAgIGVsc2U6CiAgICAgICAgIHBhdGggPSByZXByKHBhdGgpCiAgICAgc291cmNlID0gbGF1bmNoX3NvdXJjZSAlIChwYXRoLCBtb2R1bGVfbmFtZSkKLSAgICByZXR1cm4gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdG9fcmV0dXJuID0gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKIGNsYXNzIENtZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX2NoZWNrX291dHB1dChzZWxmLCBzY3JpcHRfbmFtZSwgZXhpdF9jb2RlLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlLCBleHBlY3RlZF9hcmd2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aDAsIGV4cGVjdGVkX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYXRoMCwgZXhwZWN0ZWRfcGFja2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9hZGVyKToKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6CiAgICAgICAgICAgICBwcmludCgiT3V0cHV0IGZyb20gdGVzdCBzY3JpcHQgJXI6IiAlIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHJpbnQoZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0X2NvZGUsIDApCisgICAgICAgIHByaW50ZWRfbG9hZGVyID0gJ19fbG9hZGVyX189PSVhJyAlIGV4cGVjdGVkX2xvYWRlcgogICAgICAgICBwcmludGVkX2ZpbGUgPSAnX19maWxlX189PSVhJyAlIGV4cGVjdGVkX2ZpbGUKICAgICAgICAgcHJpbnRlZF9wYWNrYWdlID0gJ19fcGFja2FnZV9fPT0lcicgJSBleHBlY3RlZF9wYWNrYWdlCiAgICAgICAgIHByaW50ZWRfYXJndjAgPSAnc3lzLmFyZ3ZbMF09PSVhJyAlIGV4cGVjdGVkX2FyZ3YwCkBAIC05Myw2ICsxMDksNyBAQAogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9wYWNrYWdlKQogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9hcmd2MCkKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfY3dkKQorICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfbG9hZGVyLmVuY29kZSgndXRmLTgnKSwgZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX2ZpbGUuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfcGFja2FnZS5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHJpbnRlZF9hcmd2MC5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCkBAIC0xMDEsMTQgKzExOCwxNSBAQAogCiAgICAgZGVmIF9jaGVja19zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6CiAgICAgICAgIGlmIG5vdCBfX2RlYnVnX186CiAgICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKICAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCpydW5fYXJncykKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0ICsgZXJyLCBleHBlY3RlZF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLCBleHBlY3RlZF9wYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyKQogCiAgICAgZGVmIF9jaGVja19pbXBvcnRfZXJyb3Ioc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgpAQCAtMTIwLDExICsxMzgsMzAgQEAKICAgICAgICAgICAgIHByaW50KCdFeHBlY3RlZCBvdXRwdXQ6ICVyJyAlIGV4cGVjdGVkX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZF9tc2cuZW5jb2RlKCd1dGYtOCcpLCBlcnIpCiAKKyAgICBkZWYgdGVzdF9kYXNoX2NfbG9hZGVyKHNlbGYpOgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItYyIsICJwcmludChfX2xvYWRlcl9fKSIpCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2xvYWRlcihzZWxmKToKKyAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIHdheSB0byBhdXRvbWF0aWNhbGx5IHRlc3QgdGhlIGZ1bGx5CisgICAgICAgICMgaW50ZXJhY3RpdmUgUkVQTCwgc2luY2UgdGhhdCBjb2RlIHBhdGggb25seSBnZXRzIGV4ZWN1dGVkIHdoZW4KKyAgICAgICAgIyBzdGRpbiBpcyBhbiBpbnRlcmFjdGl2ZSB0dHkuCisgICAgICAgIHAgPSBzcGF3bl9weXRob24oKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKGIicHJpbnQoX19sb2FkZXJfXylcbiIpCisgICAgICAgICAgICBwLnN0ZGluLmZsdXNoKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dCA9IGtpbGxfcHl0aG9uKHApCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3NjcmlwdF9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xMzMsMTMgKzE3MCwxNSBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChweWNfZmlsZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE0OCw3ICsxODcsOCBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyLCBweWNfZmlsZSwgc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE1OSwxNCArMTk5LDE2IEBACiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMTgxLDE5ICsyMjMsMjQgQEAKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cuc2NyaXB0JykKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZycsIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsICd0ZXN0X3BrZy50ZXN0X3BrZycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBfbmFtZSwgJ3Rlc3RfcGtnLnRlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIwMiw3ICsyNDksOCBAQAogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIxNCw3ICsyNjIsOCBAQAogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMjUxLDcgKzMwMCw4IEBACiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiaW5pdF9hcmd2MD09JXIiICUgJy1tJwogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQuZW5jb2RlKCd1dGYtOCcpLCBvdXQpCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9jX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLWMiIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CkBAIC0yNzcsNyArMzI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCiAgICAgICAgICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ290aGVyJywgKmV4YW1wbGVfYXJncykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2Rhc2hfbV9lcnJvcl9jb2RlX2lzX29uZShzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSBpcyBpbnZva2VkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBmbGFnCkBAIC0yOTQsNiArMzQ1LDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAxKQogCisgICAgZGVmIHRlc3RfcGVwXzQwOV92ZXJiaWFnZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgUEVQIDQwOSBzeW50YXggcHJvcGVybHkgc3VwcHJlc3NlcworICAgICAgICAjIHRoZSBjb250ZXh0IG9mIGFuIGV4Y2VwdGlvbgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQorICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQorICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFsxXS5zdGFydHN3aXRoKCcgIEZpbGUgJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFszXS5zdGFydHN3aXRoKCdOYW1lRXJyb3InKSkKKwogICAgIGRlZiB0ZXN0X25vbl9hc2NpaShzZWxmKToKICAgICAgICAgIyBNYWMgT1MgWCBkZW5pZXMgdGhlIGNyZWF0aW9uIG9mIGEgZmlsZSB3aXRoIGFuIGludmFsaWQgVVRGLTggbmFtZS4KICAgICAgICAgIyBXaW5kb3dzIGFsbG93cyB0byBjcmVhdGUgYSBuYW1lIHdpdGggYW4gYXJiaXRyYXJ5IGJ5dGVzIG5hbWUsIGJ1dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlLnB5CmluZGV4IGUxYzdhNzguLjMzNzdhN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGUucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGZyZWV2YXJzOiAoKQogbmxvY2FsczogMgogZmxhZ3M6IDMKLWNvbnN0czogKCdOb25lJywgJzxjb2RlIG9iamVjdCBnPicpCitjb25zdHM6ICgnTm9uZScsICc8Y29kZSBvYmplY3QgZz4nLCAiJ2YuPGxvY2Fscz4uZyciKQogCiA+Pj4gZHVtcChmKDQpLl9fY29kZV9fKQogbmFtZTogZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRlZjE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTAsMCArMSw3MiBAQAorIlRlc3QgSW50ZXJhY3RpdmVDb25zb2xlIGFuZCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGZyb20gY29kZSBtb2R1bGUiCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworY29kZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY29kZScpCisKKworY2xhc3MgVGVzdEludGVyYWN0aXZlQ29uc29sZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uc29sZSA9IGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlKCkKKyAgICAgICAgc2VsZi5tb2NrX3N5cygpCisKKyAgICBkZWYgbW9ja19zeXMoc2VsZik6CisgICAgICAgICJNb2NrIHN5c3RlbSBlbnZpcm9ubWVudCBmb3IgSW50ZXJhY3RpdmVDb25zb2xlIgorICAgICAgICAjIHVzZSBleGl0IHN0YWNrIHRvIG1hdGNoIHBhdGNoIGNvbnRleHQgbWFuYWdlcnMgdG8gYWRkQ2xlYW51cAorICAgICAgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdGFjay5jbG9zZSkKKyAgICAgICAgc2VsZi5pbmZ1bmMgPSBzdGFjay5lbnRlcl9jb250ZXh0KG1vY2sucGF0Y2goJ2NvZGUuaW5wdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpKQorICAgICAgICBzZWxmLnN0ZG91dCA9IHN0YWNrLmVudGVyX2NvbnRleHQobW9jay5wYXRjaCgnY29kZS5zeXMuc3Rkb3V0JykpCisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RhY2suZW50ZXJfY29udGV4dChtb2NrLnBhdGNoKCdjb2RlLnN5cy5zdGRlcnInKSkKKyAgICAgICAgcHJlcGF0Y2ggPSBtb2NrLnBhdGNoKCdjb2RlLnN5cycsIHdyYXBzPWNvZGUuc3lzLCBzcGVjPWNvZGUuc3lzKQorICAgICAgICBzZWxmLnN5c21vZCA9IHN0YWNrLmVudGVyX2NvbnRleHQocHJlcGF0Y2gpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIHNlbGYuc3lzbW9kLmV4Y2VwdGhvb2sgPSBzZWxmLnN5c21vZC5fX2V4Y2VwdGhvb2tfXworCisgICAgZGVmIHRlc3RfcHMxKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zeXNtb2QucHMxLCAnPj4+ICcpCisKKyAgICBkZWYgdGVzdF9wczIoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN5c21vZC5wczIsICcuLi4gJykKKworICAgIGRlZiB0ZXN0X2NvbnNvbGVfc3RkZXJyKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsiJ2FudGlvY2gnIiwgIiIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBsaXN0KHNlbGYuc3Rkb3V0Lm1ldGhvZF9jYWxscyk6CisgICAgICAgICAgICBpZiAnYW50aW9jaCcgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIm5vIGNvbnNvbGUgc3Rkb3V0IikKKworICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInVuZGVmaW5lZCIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHM6CisgICAgICAgICAgICBpZiAnTmFtZUVycm9yOicgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIk5vIHN5bnRheCBlcnJvciBmcm9tIGNvbnNvbGUiKQorCisgICAgZGVmIHRlc3Rfc3lzZXhjZXB0aG9vayhzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBob29rID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5zeXNtb2QuZXhjZXB0aG9vayA9IGhvb2sKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvb2suY2FsbGVkKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SW50ZXJhY3RpdmVDb25zb2xlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKaW5kZXggZTY1NmQyZi4uODFiZjgwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CkBAIC0xLDUgKzEsMTggQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0Ci1pbXBvcnQgc3lzLCBjb2RlY3MsIGh0bWwuZW50aXRpZXMsIHVuaWNvZGVkYXRhCitpbXBvcnQgY29kZWNzCitpbXBvcnQgaHRtbC5lbnRpdGllcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHVuaWNvZGVkYXRhCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCit0cnk6CisgICAgaW1wb3J0IGN0eXBlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGN0eXBlcyA9IE5vbmUKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IC0xCitlbHNlOgorICAgIFNJWkVPRl9XQ0hBUl9UID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMTM1LDIyICsxNDgsMTQgQEAKICAgICBkZWYgdGVzdF9iYWNrc2xhc2hlc2NhcGUoc2VsZik6CiAgICAgICAgICMgRG9lcyB0aGUgc2FtZSBhcyB0aGUgInVuaWNvZGUtZXNjYXBlIiBlbmNvZGluZywgYnV0IHdpdGggZGlmZmVyZW50CiAgICAgICAgICMgYmFzZSBlbmNvZGluZ3MuCi0gICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzaW4gKz0gY2hyKHN5cy5tYXh1bmljb2RlKQotICAgICAgICBzb3V0ID0gYiJhXFx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwXFUwMDEwZmZmZiIKKyAgICAgICAgc291dCA9IGIiYVxceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiYXNjaWkiLCAiYmFja3NsYXNocmVwbGFjZSIpLCBzb3V0KQogCi0gICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwIgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHNvdXQgKz0gYnl0ZXMoIlxcVSUwOHgiICUgc3lzLm1heHVuaWNvZGUsICJhc2NpaSIpCisgICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKLSAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKICAgICBkZWYgdGVzdF9kZWNvZGluZ19jYWxsYmFja3Moc2VsZik6CkBAIC0yMDAsMzMgKzIwNSwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgc2luLCAicmVwbGFjZSIsIGNoYXJtYXApCiAKICAgICBkZWYgdGVzdF9kZWNvZGV1bmljb2RlaW50ZXJuYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLAotICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlLAotICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAotICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUsCisgICAgICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAorICAgICAgICAgICAgKQorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgZGVmIGhhbmRsZXJfdW5pY29kZWludGVybmFsKGV4Yyk6CiAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjLCBVbmljb2RlRGVjb2RlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGhhbmRsZSAlciIgJSBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICgiXHgwMSIsIDEpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDAiCi0gICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwIgorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKKyAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKKyAgICAgICAgICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QuaHVpIiwgaGFuZGxlcl91bmljb2RlaW50ZXJuYWwpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInRlc3QuaHVpIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAidGVzdC5odWkiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgIGRlZiBoYW5kbGVyMShleGMpOgpAQCAtMzU1LDcgKzM2NCw3IEBACiAgICAgICAgICAgICBbImFzY2lpIiwgIlx1ZmZmZngiLCAwLCAxLCAib3VjaCJdLAogICAgICAgICAgICAgIidhc2NpaScgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciAnXFx1ZmZmZicgaW4gcG9zaXRpb24gMDogb3VjaCIKICAgICAgICAgKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgaWYgU0laRU9GX1dDSEFSX1QgPT0gNDoKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhjZXB0aW9ub2JqZWN0YXJncygKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgWyJhc2NpaSIsICJcVTAwMDEwMDAweCIsIDAsIDEsICJvdWNoIl0sCkBAIC0zOTAsNyArMzk5LDcgQEAKICAgICAgICAgICAgIFsiZ1x1ZmZmZnJrIiwgMSwgMiwgIm91Y2giXSwKICAgICAgICAgICAgICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHVmZmZmJyBpbiBwb3NpdGlvbiAxOiBvdWNoIgogICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgc2VsZi5jaGVja19leGNlcHRpb25vYmplY3RhcmdzKAogICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvciwKICAgICAgICAgICAgICAgICBbImdcVTAwMDEwMDAwcmsiLCAxLCAyLCAib3VjaCJdLApAQCAtNTc3LDMxICs1ODYsMzAgQEAKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZmZmZiIsIDAsIDEsICJvdWNoIikpLAogICAgICAgICAgICAgKCJcXHVmZmZmIiwgMSkKICAgICAgICAgKQotICAgICAgICAjIDEgb24gVUNTLTQgYnVpbGRzLCAyIG9uIFVDUy0yCi0gICAgICAgIGxlbl93aWRlID0gbGVuKCJcVTAwMDEwMDAwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMDEwMDAwIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAxMGZmZmYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMTBmZmZmIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAotICAgICAgICAgICAgKCJcXHVkODAwIiwgMSkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkZmZmIiwgMCwgMSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQotICAgICAgICApCisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID4gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXFUwMDAxMDAwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcVTAwMTBmZmZmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFxVMDAxMGZmZmYiLCAxKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFx1ZDgwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcdWRmZmYiLCAwLCAxLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYmFkaGFuZGxlcnJlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3VsdHMgPSAoIDQyLCAiZm9vIiwgKDEsMiwzKSwgKCJmb28iLCAxLCAzKSwgKCJmb28iLCBOb25lKSwgKCJmb28iLCksICgiZm9vIiwgMSwgMyksICgiZm9vIiwgTm9uZSksICgiZm9vIiwpICkKQEAgLTYyMiwxMiArNjMwLDE0IEBACiAgICAgICAgICAgICAgICAgKCJ1dGYtNyIsIGIiK3gtIiksCiAgICAgICAgICAgICAgICAgKCJ1bmljb2RlLWludGVybmFsIiwgYiJceDAwIiksCiAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgZW5jLAotICAgICAgICAgICAgICAgICAgICAidGVzdC5iYWRoYW5kbGVyIgotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0LmJhZGhhbmRsZXIiCisgICAgICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xvb2t1cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3Muc3RyaWN0X2Vycm9ycywgY29kZWNzLmxvb2t1cF9lcnJvcigic3RyaWN0IikpCkBAIC02NzksNyArNjg5LDcgQEAKICAgICAgICAgIyBQeXRob24vY29kZWNzLmM6OlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMoKQogICAgICAgICAjIGFuZCBpbmxpbmUgaW1wbGVtZW50YXRpb25zCiAgICAgICAgIHYgPSAoMSwgNSwgMTAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMCwgMTAwMDAsIDUwMDAwKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZT49MTAwMDAwOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgdiArPSAoMTAwMDAwLCA1MDAwMDAsIDEwMDAwMDApCiAgICAgICAgIHMgPSAiIi5qb2luKFtjaHIoeCkgZm9yIHggaW4gdl0pCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC54bWxjaGFycmVmcmVwbGFjZSIsIGNvZGVjcy54bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMpCkBAIC03NDQsNyArNzU0LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IE5vbmV9KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCBEKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IDB4MTEwMDAwfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCiAKICAgICBkZWYgdGVzdF9lbmNvZGVoZWxwZXIoc2VsZik6CiAgICAgICAgICMgZW5oYW5jZSBjb3ZlcmFnZSBvZjoKQEAgLTg0Myw4ICs4NTMsMTIgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgJXIiICUgZXhjKQogICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QucmVwbGFjaW5nIiwgcmVwbGFjaW5nKQotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5kZWNvZGUoZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCiAKICAgICAgICAgZGVmIG11dGF0aW5nKGV4Yyk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgVW5pY29kZURlY29kZUVycm9yKToKQEAgLTg1NSw4ICs4NjksMTEgQEAKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lm11dGF0aW5nIiwgbXV0YXRpbmcpCiAgICAgICAgICMgSWYgdGhlIGRlY29kZXIgZG9lc24ndCBwaWNrIHVwIHRoZSBtb2RpZmllZCBpbnB1dCB0aGUgZm9sbG93aW5nCiAgICAgICAgICMgd2lsbCBsZWFkIHRvIGFuIGVuZGxlc3MgbG9vcAotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgZm9yIChlbmNvZGluZywgZGF0YSkgaW4gYmFkZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuZGVjb2RlKGVuY29kaW5nLCAidGVzdC5yZXBsYWNpbmciKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDb2RlY0NhbGxiYWNrVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGRjYTlmMTAuLmIwOGM1ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtNSw1NCArNSw1NyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0dCMjMxMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IyMzEyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMjMxMicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjIzMTInKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCiAgICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAogICAgICkKIAotY2xhc3MgVGVzdF9HQksodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0dCSyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYmsnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2JrJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAogICAgICAgICAoYiJceDgzXHgzNFx4ODNceDMxIiwgInN0cmljdCIsIE5vbmUpLAogICAgICAgICAoIlx1MzBmYiIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0IxODAzMCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IxODAzMChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IxODAzMCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAotICAgICAgICAoYiJhYmNceDg0XHgzOVx4ODRceDM5XHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4NFx4MzlceDg0XHgzOVx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkOVx1ZmZmZDlcdTgwNGEiKSwKICAgICAgICAgKCJcdTMwZmIiLCAic3RyaWN0IiwgYiJceDgxOVx4YTc5IiksCisgICAgICAgIChiImFiY1x4ODRceDMyXHg4MFx4ODBkZWYiLCAicmVwbGFjZSIsICdhYmNcdWZmZmQyXHVmZmZkXHVmZmZkZGVmJyksCisgICAgICAgIChiImFiY1x4ODFceDMwXHg4MVx4MzBkZWYiLCAic3RyaWN0IiwgJ2FiY1x4ODBkZWYnKSwKKyAgICAgICAgKGIiYWJjXHg4Nlx4MzBceDgxXHgzMGRlZiIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZDBcdWZmZmQwZGVmJyksCiAgICAgKQogICAgIGhhc19pc28xMDY0NiA9IFRydWUKIAotY2xhc3MgVGVzdF9IWih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSFoobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2h6JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyB0ZXN0ICd+XG4nICgzIGxpbmVzKQogICAgICAgICAoYidUaGlzIHNlbnRlbmNlIGlzIGluIEFTQ0lJLlxuJwpAQCAtNzQsOSArNzcsMTEgQEAKICAgICAgICAgICdcdTVkZjFcdTYyNDBcdTRlMGRcdTZiMzJcdWZmMGNcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDInCiAgICAgICAgICAnQnllLlxuJyksCiAgICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEZCcpLAorICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEY2QnKSwKICAgICAgICAgKGInYWJceGZmY2QnLCAncmVwbGFjZScsICdhYlx1RkZGRGNkJyksCiAgICAgICAgIChiJ2FifntceDgxXHg4MVx4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEXHVGRkZEXHU4MDRBY2QnKSwKKyAgICAgICAgKGInYWJ+e1x4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHU4MDRBY2QnKSwKKyAgICAgICAgKGIiYWJ+e1x4NzlceDc5XHg0MVx4NDR+fWNkIiwgInJlcGxhY2UiLCAiYWJcdWZmZmRcdWZmZmRcdTgwNGFjZCIpLAogICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggY2NkYzBiNC4uMzEzNjNmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC01LDE4ICs1LDE4IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNUhLU0NTKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9CaWc1SEtTQ1MobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzVoa3NjcycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YzZlOGE1Li5lNGMxODM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBDT01NT05fQ09ERUNfVEVTVFMgPSAoCkBAIC0xMywyMyArMTMsMjMgQEAKICAgICAgICAgKGInYWJceDFCJGRlZicsICdyZXBsYWNlJywgJ2FiXHVGRkZEJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfSlAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9KUDIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdpc28yMDIyX2pwXzInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiZGVmJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfa3InKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCBmNTZhMzczLi4zMGM5ZTE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTUsNjAgKzUsNjcgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDkzMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5MzIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTMyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgxXHgwMFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHgwMFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx4MDBcdWZmNDRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x4MDBcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJceEVCeHkiLCAicmVwbGFjZSIsICJhYlx1RkZGRHh5IiksCisgICAgICAgIChiImFiXHhGMFx4Mzl4eSIsICJyZXBsYWNlIiwgImFiXHVGRkZEOXh5IiksCisgICAgICAgIChiImFiXHhFQVx4RjB4eSIsICJyZXBsYWNlIiwgJ2FiXHVmZmZkXHVlMDM4eScpLAogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXFxceDdlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJyZXBsYWNlIiwgIlx1ZmYzY1x1MjIyNVx1ZmYwZCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSklTWDAyMTModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorZXVjX2NvbW1vbnRlc3RzID0gKAorICAgICMgaW52YWxpZCBieXRlcworICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTc5NTYiKSwKKyAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKKyAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKKyAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmZmQiKSwKKyAgICAoYiJceDgyXHhGQ3h5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkeHkiKSwKKyAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKKyAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCisgICAgKGIiXHhhMVx4YzBcXCIsICJzdHJpY3QiLCAiXHVmZjNjXFwiKSwKKyAgICAoYiJceDhlWFkiLCAicmVwbGFjZSIsICJcdWZmZmRYWSIpLAorKQorCitjbGFzcyBUZXN0X0VVQ19KSVNfMjAwNChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGVuY29kaW5nID0gJ2V1Y19qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAgICAgKGIiYWJjXHg4Zlx4ODNceDgzIiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkIiksCi0gICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCi0gICAgKQorICAgIGVuY29kaW5nID0gJ2V1Y19qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qaXN4MDIxMycpCisgICAgY29kZWN0ZXN0cyA9IGV1Y19jb21tb250ZXN0cwogICAgIHhtbGNoYXJuYW1ldGVzdCA9ICgKICAgICAgICAgIlx4YWJcdTIxMWNceGJiID0gXHUyMzI5XHUxMjM0XHUyMzJhIiwKICAgICAgICAgYiJceGE5XHhhOCZyZWFsO1x4YTlceGIyID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKICAgICApCiAKLWV1Y2pwX2NvbW1vbnRlc3RzID0gKAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTYiKSwKLSAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQiKSwKLSAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKLSkKK2NsYXNzIFRlc3RfRVVDX0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzCisgICAgeG1sY2hhcm5hbWV0ZXN0ID0gKAorICAgICAgICAiXHhhYlx1MjExY1x4YmIgPSBcdTIzMjlcdTEyMzRcdTIzMmEiLAorICAgICAgICBiIlx4YTlceGE4JnJlYWw7XHhhOVx4YjIgPSAmbGFuZzsmIzQ2NjA7JnJhbmc7IgorICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKK2NsYXNzIFRlc3RfRVVDX0pQX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qcCcpCi0gICAgY29kZWN0ZXN0cyA9IGV1Y2pwX2NvbW1vbnRlc3RzICsgKAotICAgICAgICAoYiJceGExXHhjMFxcIiwgInN0cmljdCIsICJcdWZmM2NcXCIpLAorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2pwJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzICsgKAogICAgICAgICAoIlx4YTUiLCAic3RyaWN0IiwgYiJceDVjIiksCiAgICAgICAgICgiXHUyMDNlIiwgInN0cmljdCIsIGIiXHg3ZSIpLAogICAgICkKQEAgLTY2LDI5ICs3Myw0OCBAQAogc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgPSAoCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NCIpLAotICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NGRlZiIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NGRlZiIpLAogKQogCi1jbGFzcyBUZXN0X1NKSVNfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlxcXHg3ZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAic3RyaWN0IiwgIlx1ZmYzY1x1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceDgxXHgzOSIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmQ5IiksCisgICAgICAgIChiImFiY1x4RUFceEZDIiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceEZGXHg1OCIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmRYIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X1NKSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfU0pJU18yMDA0KG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgY29kZWN0ZXN0cyA9IHNoaWZ0amlzX2NvbW1vbmVuY3Rlc3RzICsgKAorICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlx4YTVcdTIwM2UiKSwKKyAgICAgICAgKGIiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInN0cmljdCIsICJcXFx1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceEVBXHhGQyIsICJzdHJpY3QiLCAgImFiY1x1NjRiZiIpLAorICAgICAgICAoYiJceDgxXHgzOXh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZDl4eSIpLAorICAgICAgICAoYiJceEZGXHg1OHh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZFh4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0eHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmRcdWZmNDR4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0XHg4OHh5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkXHVmZjQ0XHU1ODY0eSIpLAorICAgICAgICAoYiJceEZDXHhGQnh5IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU5NWI0eScpLAorICAgICkKKyAgICB4bWxjaGFybmFtZXRlc3QgPSAoCisgICAgICAgICJceGFiXHUyMTFjXHhiYiA9IFx1MjMyOVx1MTIzNFx1MjMyYSIsCisgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCisgICAgKQorCitjbGFzcyBUZXN0X1NKSVNYMDIxMyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ZjgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRkZWYiLCAiaWdub3JlIiwgICJhYmNcdWZmNDRkZWYiKSwKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXHhhNVx1MjAzZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAicmVwbGFjZSIsICJceDVjXHUyMDE2XHUyMjEyIiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBkZTRkYTdmLi40ZGQ2MDQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTUsMzAgKzUsMzAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDk0OSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5NDkobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0IiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0XHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfRVVDS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0VVQ0tSKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfa3InKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZFx1ZmZmZFx1Yzg5NCcpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHVjODk0IiksCiAKICAgICAgICAgIyBjb21wb3NlZCBtYWtlLXVwIHNlcXVlbmNlIGVycm9ycwpAQCAtNDAsMjYgKzQwLDMxIEBACiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGQ0IiwgInN0cmljdCIsICJcdWM0ZDQiKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNFx4ZDR4IiwgInN0cmljdCIsICJcdWM0ZDR4IiksCi0gICAgICAgIChiImFceGE0XHhkNFx4YTRceGI2XHhhNCIsICJyZXBsYWNlIiwgImFcdWZmZmQiKSwKKyAgICAgICAgKGIiYVx4YTRceGQ0XHhhNFx4YjZceGE0IiwgInJlcGxhY2UiLCAnYVx1ZmZmZCcpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTNceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTNceGQwXHhhNFx4ZDQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTNceGQ0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1ZmZmZFx1MzE2MFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1ZmZmZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1NTcyZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4ZmZceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRkNCcpLAogICAgICAgICAoYiJceGMxXHhjNCIsICJzdHJpY3QiLCAiXHVjODk0IiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0pPSEFCKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9KT0hBQihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnam9oYWInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3XHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjciKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjdcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Y2QyNyIpLAorICAgICAgICAoYiJceEQ4YWJjIiwgInJlcGxhY2UiLCAgIlx1RkZGRGFiYyIpLAorICAgICAgICAoYiJceEQ4XHhGRmFiYyIsICJyZXBsYWNlIiwgICJcdUZGRkRcdUZGRkRhYmMiKSwKKyAgICAgICAgKGIiXHg4NGJ4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRieHkiKSwKKyAgICAgICAgKGIiXHg4Q0J4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRCeHkiKSwKICAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDEyZDNjOWYuLjk2MjQ1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtNSwxOCArNSwxOCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0JpZzUodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0JpZzUobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzUnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzUnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggMDYzOTE5ZC4uMWE3NjFjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTUsMjEgKzUsMjEgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdEdCMjMxMk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQjIzMTJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1DTi5UWFQnCiAKLWNsYXNzIFRlc3RHQktNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0JLTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy8nIFwKICAgICAgICAgICAgICAgICAgJ01JQ1NGVC9XSU5ET1dTL0NQOTM2LlRYVCcKIAotY2xhc3MgVGVzdEdCMTgwMzBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0IxODAzME1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCBiYmUxZjJmLi41ZjRlN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtNSwxMCArNSwxMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QmlnNUhLU0NTTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEJpZzVIS1NDU01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1aGtzY3MnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0JJRzVIS1NDUy0yMDA0LlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNjUyYmQ4MS4uMWZkYmY2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTUsMTAgKzUsMTAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdENQOTMyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTMyTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5MzInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTI0LDE0ICsyNCwxNCBAQAogICAgICAgICBzdXBtYXBzLmFwcGVuZCgoYnl0ZXMoW2ldKSwgY2hyKGkrMHhmZWMwKSkpCiAKIAotY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2pwJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KUC5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KUC5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNDT01QQVRNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0U0pJU0NPTVBBVE1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwogICAgIG1hcGZpbGVuYW1lID0gJ1NISUZUSklTLlRYVCcKQEAgLTQ2LDE0ICs0NiwxNCBAQAogICAgICAgICAoYidceDgxXycsICdcXCcpLAogICAgIF0KIAotY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KSVNYMDIxMy5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KSVNYMDIxMy5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNYMDIxM01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRfSklTWDAyMTMuVFhUJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCBkOTA5YzhiLi4wMzU2NDAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtNSwxNyArNSwxNyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5NDlNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NDlNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk0OScKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUJyBcCiAgICAgICAgICAgICAgICAgICcvV0lORE9XUy9DUDk0OS5UWFQnCiAKIAotY2xhc3MgVGVzdEVVQ0tSTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0tSTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2tyJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+cGVya3kvaTE4bi9FVUMtS1IuVFhUJwpAQCAtMjUsNyArMjUsNyBAQAogICAgIHBhc3NfZGVjdGVzdCA9IFsoYidceGE0XHhkNCcsICdcdTMxNjQnKV0KIAogCi1jbGFzcyBUZXN0Sk9IQUJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Sk9IQUJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdqb2hhYicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCA2ZGI1MDkxLi40NDQ2N2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtNSwxNiArNSwxNiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QklHNU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCSUc1TWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvT0JTT0xFVEUvJyBcCiAgICAgICAgICAgICAgICAgICdFQVNUQVNJQS9PVEhFUi9CSUc1LlRYVCcKIAotY2xhc3MgVGVzdENQOTUwTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTUwTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5NTAnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTIzLDYgKzIzLDkgQEAKICAgICAgICAgKGInXHhhMlx4Y2MnLCAnXHU1MzQxJyksCiAgICAgICAgIChiJ1x4YTJceGNlJywgJ1x1NTM0NScpLAogICAgIF0KKyAgICBjb2RlY3Rlc3RzID0gKAorICAgICAgICAoYiJceEZGeHkiLCAicmVwbGFjZSIsICAiXHVmZmZkeHkiKSwKKyAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggMWZhOWVlMC4uMjk3ODg2NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTEsOCArMSwyNSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBpbwogaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5cywgX3Rlc3RjYXBpLCBpbworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCitlbHNlOgorICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisgICAgU0laRU9GX1dDSEFSX1QgPSAtMQorZWxzZToKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCiAKIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgIiIiCkBAIC01Nyw3ICs3NCw3IEBACiAgICAgICAgICAgICBwYXJ0MiA9IGQuZW5jb2RlKHVbaTpdLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBwYXJ0MStwYXJ0MikKIAotY2xhc3MgUmVhZFRlc3QodW5pdHRlc3QuVGVzdENhc2UsIE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKK2NsYXNzIFJlYWRUZXN0KE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKICAgICBkZWYgY2hlY2tfcGFydGlhbChzZWxmLCBpbnB1dCwgcGFydGlhbHJlc3VsdHMpOgogICAgICAgICAjIGdldCBhIFN0cmVhbVJlYWRlciBmb3IgdGhlIGVuY29kaW5nIGFuZCBmZWVkIHRoZSBieXRlc3RyaW5nIHZlcnNpb24KICAgICAgICAgIyBvZiBpbnB1dCB0byB0aGUgcmVhZGVyIGJ5dGUgYnkgYnl0ZS4gUmVhZCBldmVyeXRoaW5nIGF2YWlsYWJsZSBmcm9tCkBAIC0yNzcsNyArMjk0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkZXIucmVhZGxpbmUoKSwgczUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGVyLnJlYWRsaW5lKCksICIiKQogCi1jbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QpOgorY2xhc3MgVVRGMzJUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyIgogCiAgICAgc3BhbWxlID0gKGInXHhmZlx4ZmVceDAwXHgwMCcKQEAgLTM2OCw3ICszODUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9kZWNvZGUoZW5jb2RlZF9iZSlbMF0pCiAKLWNsYXNzIFVURjMyTEVUZXN0KFJlYWRUZXN0KToKK2NsYXNzIFVURjMyTEVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWxlIgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTQxMiw3ICs0MjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9sZV9kZWNvZGUoZW5jb2RlZClbMF0pCiAKLWNsYXNzIFVURjMyQkVUZXN0KFJlYWRUZXN0KToKK2NsYXNzIFVURjMyQkVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWJlIgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTQ1Nyw3ICs0NzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfYmVfZGVjb2RlKGVuY29kZWQpWzBdKQogCiAKLWNsYXNzIFVURjE2VGVzdChSZWFkVGVzdCk6CitjbGFzcyBVVEYxNlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiCiAKICAgICBzcGFtbGUgPSBiJ1x4ZmZceGZlc1x4MDBwXHgwMGFceDAwbVx4MDBzXHgwMHBceDAwYVx4MDBtXHgwMCcKQEAgLTUzNyw3ICs1NTQsNyBAQAogICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCAnVScsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpIGFzIHJlYWRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGVyLnJlYWQoKSwgczEpCiAKLWNsYXNzIFVURjE2TEVUZXN0KFJlYWRUZXN0KToKK2NsYXNzIFVURjE2TEVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWxlIgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTU4MCw3ICs1OTcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHgwMFx4ZDhceDAzXHhkZScuZGVjb2RlKHNlbGYuZW5jb2RpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDEwMjAzIikKIAotY2xhc3MgVVRGMTZCRVRlc3QoUmVhZFRlc3QpOgorY2xhc3MgVVRGMTZCRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtYmUiCiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsKHNlbGYpOgpAQCAtNjIzLDcgKzY0MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceGQ4XHgwMFx4ZGVceDAzJy5kZWNvZGUoc2VsZi5lbmNvZGluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTAyMDMiKQogCi1jbGFzcyBVVEY4VGVzdChSZWFkVGVzdCk6CitjbGFzcyBVVEY4VGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi04IgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTY3MiwxMyArNjg5LDExOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTB6Ii5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQogCi1jbGFzcyBVVEY3VGVzdChSZWFkVGVzdCk6CitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICdjcDY1MDAxIGlzIGEgV2luZG93cy1vbmx5IGNvZGVjJykKK2NsYXNzIENQNjUwMDFUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZW5jb2RpbmcgPSAiY3A2NTAwMSIKKworICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJ1x4YzNceGE5XHhlMlx4ODJceGFjJyksCisgICAgICAgICAgICAoJ1xVMDAxMGZmZmYnLCAnc3RyaWN0JywgYidceGY0XHg4Zlx4YmZceGJmJyksCisgICAgICAgIF0KKyAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cy5hcHBlbmQoKCdcdWRjODAnLCAnc3RyaWN0JywgYidceGVkXHhiMlx4ODAnKSkKKyAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSB0ZXh0LmVuY29kZSgnY3A2NTAwMScsIGVycm9ycykKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZW5jb2RlICVhIHRvIGNwNjUwMDEgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAodGV4dCwgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZCwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5lbmNvZGUoImNwNjUwMDEiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHRleHQsIGVycm9ycywgZW5jb2RlZCwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIHRleHQuZW5jb2RlLCAiY3A2NTAwMSIsIGVycm9ycykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHhjM1x4YTlceGUyXHg4Mlx4YWMnLCAnc3RyaWN0JywgJ1x4ZTlcdTIwYWMnKSwKKyAgICAgICAgICAgIChiJ1x4ZjRceDhmXHhiZlx4YmYnLCAnc3RyaWN0JywgJ1xVMDAxMGZmZmYnKSwKKyAgICAgICAgICAgIChiJ1x4ZWZceGJmXHhiZCcsICdzdHJpY3QnLCAnXHVmZmZkJyksCisgICAgICAgICAgICAoYidbXHhjM1x4YTldJywgJ3N0cmljdCcsICdbXHhlOV0nKSwKKyAgICAgICAgICAgICMgaW52YWxpZCBieXRlcworICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGNmZl0nKSwKKyAgICAgICAgXQorICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKKyAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgJ1tcdWRjODBdJyksCisgICAgICAgICAgICApKQorICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gcmF3LmRlY29kZSgnY3A2NTAwMScsIGVycm9ycykKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZGVjb2RlICVhIGZyb20gY3A2NTAwMSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcnM9JXI6ICVzJyAlIChyYXcsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZGVjb2RlKCJjcDY1MDAxIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlIChyYXcsIGVycm9ycywgZGVjb2RlZCwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIHJhdy5kZWNvZGUsICdjcDY1MDAxJywgZXJyb3JzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQorICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsICJjcDY1MDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAiYmFja3NsYXNocmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInWyYjNTY0NDg7XScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlZXNjYXBlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbXHg4MF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1s/XScpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhWSVNUQV9PUl9MQVRFUiwgJ3JlcXVpcmUgV2luZG93cyBWaXN0YSBvciBsYXRlcicpCisgICAgZGVmIHRlc3Rfc3Vycm9nYXRlcGFzc19oYW5kbGVyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNcdWQ4MDBkZWYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDEwZmZmXHVEODAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvZGVjcy5sb29rdXBfZXJyb3IoInN1cnJvZ2F0ZXBhc3MiKSkKKworCisKK2NsYXNzIFVURjdUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTciCiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsKHNlbGYpOgpAQCAtNzE3LDcgKzgzOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLnJlYWRidWZmZXJfZW5jb2RlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5yZWFkYnVmZmVyX2VuY29kZSwgNDIpCiAKLWNsYXNzIFVURjhTaWdUZXN0KFJlYWRUZXN0KToKK2NsYXNzIFVURjhTaWdUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTgtc2lnIgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTk0Miw2MSArMTA2NCw4MCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCiBjbGFzcyBVbmljb2RlSW50ZXJuYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2J1ZzEyNTEzMDAoc2VsZik6CiAgICAgICAgICMgRGVjb2Rpbmcgd2l0aCB1bmljb2RlX2ludGVybmFsIHVzZWQgdG8gbm90IGNvcnJlY3RseSBoYW5kbGUgImNvZGUKICAgICAgICAgIyBwb2ludHMiIGFib3ZlIDB4MTBmZmZmIG9uIFVDUy00IGJ1aWxkcy4KLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBvayA9IFsKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgxMFx4ZmZceGZmIiwgIlxVMDAxMGZmZmYiKSwKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgwMFx4MDFceDAxIiwgIlxVMDAwMDAxMDEiKSwKLSAgICAgICAgICAgICAgICAoYiIiLCAiIiksCi0gICAgICAgICAgICBdCi0gICAgICAgICAgICBub3Rfb2sgPSBbCi0gICAgICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKLSAgICAgICAgICAgICAgICBiIlx4ODBceDAwXHgwMFx4MDAiLAotICAgICAgICAgICAgICAgIGIiXHg4MVx4MDBceDAwXHgwMCIsCi0gICAgICAgICAgICAgICAgYiJceDAwIiwKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIiwKLSAgICAgICAgICAgIF0KLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgotICAgICAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICBvayA9IFsKKyAgICAgICAgICAgIChiIlx4MDBceDEwXHhmZlx4ZmYiLCAiXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgKGIiXHgwMFx4MDBceDAxXHgwMSIsICJcVTAwMDAwMTAxIiksCisgICAgICAgICAgICAoYiIiLCAiIiksCisgICAgICAgIF0KKyAgICAgICAgbm90X29rID0gWworICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKKyAgICAgICAgICAgIGIiXHg4MFx4MDBceDAwXHgwMCIsCisgICAgICAgICAgICBiIlx4ODFceDAwXHgwMFx4MDAiLAorICAgICAgICAgICAgYiJceDAwIiwKKyAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLAorICAgICAgICBdCisgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgorICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBpbnRlcm5hbC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKSkKLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6Ci0gICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWwgPSBieXRlcyhyZXZlcnNlZChpbnRlcm5hbCkpCisgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6CisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgorICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBpbnRlcm5hbC5kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CisgICAgICAgICAgICBpbnZhbGlkID0gYiJceDAwXHgwMFx4MTFceDAwIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MTFceDAwXHgwMCIKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkLmRlY29kZSwgInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW52YWxpZC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHVmZmZkJykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgdHJ5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCd1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIi5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIiwgZXgub2JqZWN0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgZXguc3RhcnQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDExXHgxMVx4MDAiLCBleC5vYmplY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGV4LnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9kZWNvZGVfY2FsbGJhY2soc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJVbmljb2RlSW50ZXJuYWxUZXN0IiwgY29kZWNzLmlnbm9yZV9lcnJvcnMpCi0gICAgICAgICAgICBkZWNvZGVyID0gY29kZWNzLmdldGRlY29kZXIoInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoIlVuaWNvZGVJbnRlcm5hbFRlc3QiLCBjb2RlY3MuaWdub3JlX2Vycm9ycykKKyAgICAgICAgZGVjb2RlciA9IGNvZGVjcy5nZXRkZWNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIGFiID0gImFiIi5lbmNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKS5kZWNvZGUoKQogICAgICAgICAgICAgaWdub3JlZCA9IGRlY29kZXIoYnl0ZXMoIiVzXHgyMlx4MjJceDIyXHgyMiVzIiAlIChhYls6NF0sIGFiWzQ6XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNjaWkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlSW50ZXJuYWxUZXN0IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJhYiIsIDEyKSwgaWdub3JlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoImFiIiwgMTIpLCBpZ25vcmVkKQogCiAgICAgZGVmIHRlc3RfZW5jb2RlX2xlbmd0aChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAzNzM5Ci0gICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoIlx4ZTlcdTAxNDIiKVsxXSwgMikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgSXNzdWUgMzczOQorICAgICAgICAgICAgZW5jb2RlciA9IGNvZGVjcy5nZXRlbmNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyKCJceGU5XHUwMTQyIilbMV0sIDIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZXNjYXBlX2VuY29kZShicidceDAwJylbMV0sIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZW5jb2RlKGJyJ1x4MDAnKVsxXSwgNCkKIAogIyBGcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vZHJhZnQtam9zZWZzc29uLWlkbi10ZXN0LXZlY3RvcnMuaHRtbAogbmFtZXByZXBfdGVzdHMgPSBbCkBAIC0xMzIwLDcgKzE0NjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVmLnJlYWQoKSwgYidcXFx4ZDVcblx4MDBceDAwXHhhZScpCiAKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBlZiA9IGNvZGVjcy5FbmNvZGVkRmlsZShmLCAndXRmLTgnLCAnbGF0aW4xJykKKyAgICAgICAgZWYgPSBjb2RlY3MuRW5jb2RlZEZpbGUoZiwgJ3V0Zi04JywgJ2xhdGluLTEnKQogICAgICAgICBlZi53cml0ZShiJ1x4YzNceGJjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKCksIGInXHhmYycpCiAKQEAgLTE0NTIsMTAgKzE1OTMsMTMgQEAKICAgICAgICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gImxhdGluXzEiOgogICAgICAgICAgICAgICAgIG5hbWUgPSAibGF0aW5fMSIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RpbmcucmVwbGFjZSgiXyIsICItIiksIG5hbWUucmVwbGFjZSgiXyIsICItIikpCi0gICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbGVuKHMpLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoc2l6ZSwgbGVuKHMpLCBlbmNvZGluZykpCi0gICAgICAgICAgICAoY2hhcnMsIHNpemUpID0gY29kZWNzLmdldGRlY29kZXIoZW5jb2RpbmcpKGIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihzKSwgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKHNpemUsIGxlbihzKSwgZW5jb2RpbmcpKQorICAgICAgICAgICAgICAgIChjaGFycywgc2l6ZSkgPSBjb2RlY3MuZ2V0ZGVjb2RlcihlbmNvZGluZykoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKIAogICAgICAgICAgICAgaWYgZW5jb2Rpbmcgbm90IGluIGJyb2tlbl91bmljb2RlX3dpdGhfc3RyZWFtczoKICAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cmVhbSByZWFkZXIvd3JpdGVyCkBAIC0xNTU5LDcgKzE3MDMsOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9lbmNvZGVfYXJncyhzZWxmKToKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGFsbF91bmljb2RlX2VuY29kaW5nczoKICAgICAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZW5jb2RlcikKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlbmNvZGVyKQogCiAgICAgZGVmIHRlc3RfZW5jb2RpbmdfbWFwX3R5cGVfaW5pdGlhbGl6ZWQoc2VsZik6CiAgICAgICAgIGZyb20gZW5jb2RpbmdzIGltcG9ydCBjcDExNDAKQEAgLTE1ODIsNiArMTcyOCwxMSBAQAogICAgICAgICAgICAgKCJhYmMiLCAzKQogICAgICAgICApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLCAiXFUwMDEwRkZGRmJjIiksCisgICAgICAgICAgICAoIlxVMDAxMEZGRkZiYyIsIDMpCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsICJhYiIKICAgICAgICAgKQpAQCAtMTcxOSw5ICsxODcwLDE1IEBACiAgICAgICAgICAgICAoIlxVMDAxMEZGRkZiYyIsIDMpCiAgICAgICAgICkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IHN5cy5tYXh1bmljb2RlLCAxOiBiLCAyOiBjfSksCisgICAgICAgICAgICAoY2hyKHN5cy5tYXh1bmljb2RlKSArICJiYyIsIDMpCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAweDExMDAwMCwgMTogYiwgMjogY30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IHN5cy5tYXh1bmljb2RlICsgMSwgMTogYiwgMjogY30KICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKQEAgLTE4MDIsNiArMTk1OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoYnIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsIGJyIlxVMDAxMTAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCiBjbGFzcyBTdXJyb2dhdGVFc2NhcGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3V0Zjgoc2VsZik6CkBAIC0xODMyLDcgKzE5OTUsNyBAQAogCiAgICAgZGVmIHRlc3RfbGF0aW4xKHNlbGYpOgogICAgICAgICAjIElzc3VlNjM3MwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZTRceGViXHhlZlx4ZjZceGZjIikKIAogCkBAIC0xOTQxLDM3ICsyMTA0LDE1NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3V0LCBiIlx4ODAiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVVRGMzJUZXN0LAotICAgICAgICBVVEYzMkxFVGVzdCwKLSAgICAgICAgVVRGMzJCRVRlc3QsCi0gICAgICAgIFVURjE2VGVzdCwKLSAgICAgICAgVVRGMTZMRVRlc3QsCi0gICAgICAgIFVURjE2QkVUZXN0LAotICAgICAgICBVVEY4VGVzdCwKLSAgICAgICAgVVRGOFNpZ1Rlc3QsCi0gICAgICAgIEVzY2FwZURlY29kZVRlc3QsCi0gICAgICAgIFVURjdUZXN0LAotICAgICAgICBVVEYxNkV4VGVzdCwKLSAgICAgICAgUmVhZEJ1ZmZlclRlc3QsCi0gICAgICAgIFJlY29kaW5nVGVzdCwKLSAgICAgICAgUHVueWNvZGVUZXN0LAotICAgICAgICBVbmljb2RlSW50ZXJuYWxUZXN0LAotICAgICAgICBOYW1lcHJlcFRlc3QsCi0gICAgICAgIElETkFDb2RlY1Rlc3QsCi0gICAgICAgIENvZGVjc01vZHVsZVRlc3QsCi0gICAgICAgIFN0cmVhbVJlYWRlclRlc3QsCi0gICAgICAgIEVuY29kZWRGaWxlVGVzdCwKLSAgICAgICAgQmFzaWNVbmljb2RlVGVzdCwKLSAgICAgICAgQ2hhcm1hcFRlc3QsCi0gICAgICAgIFdpdGhTdG10VGVzdCwKLSAgICAgICAgVHlwZXNUZXN0LAotICAgICAgICBTdXJyb2dhdGVFc2NhcGVUZXN0LAotICAgICAgICBCb21UZXN0LAotICAgICAgICBUcmFuc2Zvcm1Db2RlY1Rlc3QsCi0gICAgKQorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnY29kZSBwYWdlcyBhcmUgc3BlY2lmaWMgdG8gV2luZG93cycpCitjbGFzcyBDb2RlUGFnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQ1BfVVRGOCBpcyBhbHJlYWR5IHRlc3RlZCBieSBDUDY1MDAxVGVzdAorICAgIENQX1VURjggPSA2NTAwMQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb2RlX3BhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAtMSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgLTEsIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDEyMywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCAxMjMsIGInYScpCisKKyAgICBkZWYgdGVzdF9jb2RlX3BhZ2VfbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRW5jb2RlRXJyb3IsICdjcDkzMicsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgOTMyLCAnXHhmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnY3A5MzInLAorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDkzMiwgYidceDgxXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnQ1BfVVRGOCcsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnKQorCisgICAgZGVmIGNoZWNrX2RlY29kZShzZWxmLCBjcCwgdGVzdHMpOgorICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoY3AsIHJhdywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBkZWNvZGUgJWEgZnJvbSAiY3AlcyIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBjcCwgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZFswXSwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5kZWNvZGUoImNwJXMiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHJhdywgY3AsIGVycm9ycywgZGVjb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgICMgYXNzZXJ0IDAgPD0gZGVjb2RlZFsxXSA8PSBsZW4ocmF3KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGRlY29kZWRbMV0sIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKworICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKKyAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2VuY29kZShjcCwgdGV4dCwgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBlbmNvZGUgJWEgdG8gImNwJXMiIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGNwLCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzBdLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmVuY29kZSgiY3AlcyIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAodGV4dCwgY3AsIGVycm9ycywgZW5jb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFsxXSwgbGVuKHRleHQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCBjcCwgdGV4dCwgZXJyb3JzKQorCisgICAgZGVmIHRlc3RfY3A5MzIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKDkzMiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHVmZjQ0XHU5YTNlJywgJ3N0cmljdCcsIGInXHg4Mlx4ODRceGU5XHg4MCcpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCisgICAgICAgICAgICAoJ1x4ZmYnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1tceGZmXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdyZXBsYWNlJywgYidbeV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY10nLCAncmVwbGFjZScsIGInWz9dJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgYidbXFx4ZmZdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMjU1O10nKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHg4Mlx4ODRceGU5XHg4MCcsICdzdHJpY3QnLCAnXHVmZjQ0XHU5YTNlJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ2lnbm9yZScsICdceDAwYWJjJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdyZXBsYWNlJywgJ1x1ZmZmZFx4MDBhYmMnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoMTI1MiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAorICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1x1MDE0MScsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAncmVwbGFjZScsIGInTCcpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSgxMjUyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHhlOVx4ODAnLCAnc3RyaWN0JywgJ1x4ZTlcdTIwYWMnKSwKKyAgICAgICAgICAgIChiJ1x4ZmYnLCAnc3RyaWN0JywgJ1x4ZmYnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwX3V0Zjcoc2VsZik6CisgICAgICAgIGNwID0gNjUwMDAKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoY3AsICgKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInK0FPa2dyQS0nKSwKKyAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCAgYicrMi8vZi93LScpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgYicrM0lBLScpLAorICAgICAgICAgICAgKCdcdWZmZmQnLCAnc3RyaWN0JywgYicrLy8wLScpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZShjcCwgKAorICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJytBT2tnckEtJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYicrMi8vZi93LScsICdzdHJpY3QnLCAnXFUwMDEwZmZmZicpLAorICAgICAgICAgICAgKGInKzNJQS0nLCAnc3RyaWN0JywgJ1x1ZGM4MCcpLAorICAgICAgICAgICAgKGInKy8vMC0nLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgICAgICAgICAoYidbKy9dJywgJ3N0cmljdCcsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N0cmljdCcsICdbXHhmZl0nKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X211bHRpYnl0ZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidceDg0XHhlOVx4ODAnLCAnaWdub3JlJywgJ1x1OWEzZScpLAorICAgICAgICAgICAgKGInXHg4NFx4ZTlceDgwJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHU5YTNlJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAnaWdub3JlJywgJ1xVMDAxMGZmZmYnKSwKKyAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ3JlcGxhY2UnLCAnXHVmZmZkXFUwMDEwZmZmZicpLAorICAgICAgICApKQorICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAorICAgICAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgorICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCcnLCAwKSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGU5XHg4MFx4ZTknLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnXHU5YTNlJywgMikpCisKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlOVx4ODBceGU5XHg4MCcsICdzdHJpY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdcdTlhM2VcdTlhM2UnLCA0KSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGluZy5weQppbmRleCBmOWRiMGI0Li5kZmQ1NDMxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGluZy5weQpAQCAtMSw3ICsxLDYgQEAKLQogaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgdW5sb2FkCi1pbXBvcnQgb3MsIHN5cworaW1wb3J0IGltcG9ydGxpYiwgb3MsIHN5cwogCiBjbGFzcyBDb2RpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9iYWRfY29kaW5nKHNlbGYpOgpAQCAtNDAsNiArMzksNyBAQAogICAgICAgICAgICAgZi53cml0ZSgiJ0EgdmVyeSBsb25nIHN0cmluZyAlcydcbiIgJSAoIlgiICogMTAwMCkpCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCBiMmE1ZjA1Li44ODUwZThiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTEsNiArMSw3IEBACiAiIiJVbml0IHRlc3RzIGZvciBjb2xsZWN0aW9ucy5weS4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0LCBkb2N0ZXN0LCBvcGVyYXRvcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgZm9yZ2V0LCB1bmxpbmsKIGltcG9ydCBpbnNwZWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIENvdW50ZXIsIE9yZGVyZWREaWN0LCBfY291bnRfZWxlbWVudHMKQEAgLTEwLDIxICsxMSwyMCBAQAogaW1wb3J0IGtleXdvcmQKIGltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgX0NoYWluTWFwCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Ci1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldywgVXNlckRpY3QKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNlcXVlbmNlLCBNdXRhYmxlU2VxdWVuY2UKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEJ5dGVTdHJpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCwgTXV0YWJsZVNldAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEJ5dGVTdHJpbmcKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIF9DaGFpbk1hcCAoaGVscGVyIGNsYXNzIGZvciBjb25maWdwYXJzZXIpCisjIyMgQ2hhaW5NYXAgKGhlbHBlciBjbGFzcyBmb3IgY29uZmlncGFyc2VyIGFuZCB0aGUgc3RyaW5nIG1vZHVsZSkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUNoYWluTWFwID0gX0NoYWluTWFwICAjIHJlbmFtZSB0byBrZWVwIHRlc3QgY29kZSBpbiBzeW5jIHdpdGggMy4zIHZlcnNpb24KLQogY2xhc3MgVGVzdENoYWluTWFwKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKQEAgLTEyOCw2ICsxMjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9fbW9kdWxlX18sIF9fbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9fZ2V0aXRlbV9fLCB0dXBsZS5fX2dldGl0ZW1fXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb2ludC5fZmllbGRzLCAoJ3gnLCAneScpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbGFzcyBQb2ludCh0dXBsZSknLCBQb2ludC5fc291cmNlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5hbWVkdHVwbGUsICdhYmMlJywgJ2VmZyBnaGknKSAgICAgICAjIHR5cGUgaGFzIG5vbi1hbHBoYSBjaGFyCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5hbWVkdHVwbGUsICdjbGFzcycsICdlZmcgZ2hpJykgICAgICAjIHR5cGUgaGFzIGtleXdvcmQKQEAgLTMyNyw2ICszMjgsMTcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEIoMSkpLCAnQih4PTEpJykKIAorICAgIGRlZiB0ZXN0X3NvdXJjZShzZWxmKToKKyAgICAgICAgIyB2ZXJpZnkgdGhhdCBfc291cmNlIGNhbiBiZSBydW4gdGhyb3VnaCBleGVjKCkKKyAgICAgICAgdG1wID0gbmFtZWR0dXBsZSgnTlRDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCisgICAgICAgIGdsb2JhbHMoKS5wb3AoJ05UQ29sb3InLCBOb25lKSAgICAgICAgICAjIHJlbW92ZSBhcnRpZmFjdHMgZnJvbSBvdGhlciB0ZXN0cworICAgICAgICBleGVjKHRtcC5fc291cmNlLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05UQ29sb3InLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSBOVENvbG9yKDEwLCAyMCwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGMucmVkLCBjLmdyZWVuLCBjLmJsdWUpLCAoMTAsIDIwLCAzMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlRDb2xvci5fZmllbGRzLCAoJ3JlZCcsICdncmVlbicsICdibHVlJykpCisgICAgICAgIGdsb2JhbHMoKS5wb3AoJ05UQ29sb3InLCBOb25lKSAgICAgICAgICAjIGNsZWFuLXVwIGFmdGVyIHRoaXMgdGVzdAorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQWJzdHJhY3QgQmFzZSBDbGFzc2VzCkBAIC03NjIsNiArNzc0LDQ0IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhNdXRhYmxlU2VxdWVuY2UsICdfX2NvbnRhaW5zX18nLCAnX19pdGVyX18nLAogICAgICAgICAgICAgJ19fbGVuX18nLCAnX19nZXRpdGVtX18nLCAnX19zZXRpdGVtX18nLCAnX19kZWxpdGVtX18nLCAnaW5zZXJ0JykKIAorICAgIGRlZiB0ZXN0X011dGFibGVTZXF1ZW5jZV9taXhpbnMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgbWl4aW5zIG9mIE11dGFibGVTZXF1ZW5jZSBieSBjcmVhdGluZyBhIG1pbWluYWwgY29uY3JldGUKKyAgICAgICAgIyBjbGFzcyBpbmhlcml0ZWQgZnJvbSBpdC4KKyAgICAgICAgY2xhc3MgTXV0YWJsZVNlcXVlbmNlU3ViY2xhc3MoTXV0YWJsZVNlcXVlbmNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmxzdCA9IFtdCisKKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0W2luZGV4XSA9IHZhbHVlCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubHN0W2luZGV4XQorCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYubHN0KQorCisgICAgICAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgaW5kZXgpOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmxzdFtpbmRleF0KKworICAgICAgICAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0Lmluc2VydChpbmRleCwgdmFsdWUpCisKKyAgICAgICAgbXNzID0gTXV0YWJsZVNlcXVlbmNlU3ViY2xhc3MoKQorICAgICAgICBtc3MuYXBwZW5kKDApCisgICAgICAgIG1zcy5leHRlbmQoKDEsIDIsIDMsIDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zc1szXSwgMykKKyAgICAgICAgbXNzLnJldmVyc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zc1szXSwgMSkKKyAgICAgICAgbXNzLnBvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDQpCisgICAgICAgIG1zcy5yZW1vdmUoMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNzKSwgMykKKyAgICAgICAgbXNzICs9ICgxMCwgMjAsIDMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zc1stMV0sIDMwKQorICAgICAgICBtc3MuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCAwKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIENvdW50ZXIKQEAgLTkxNSw2ICs5NjUsMjcgQEAKICAgICAgICAgICAgICAgICBzZXRfcmVzdWx0ID0gc2V0b3Aoc2V0KHAuZWxlbWVudHMoKSksIHNldChxLmVsZW1lbnRzKCkpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnRlcl9yZXN1bHQsIGRpY3QuZnJvbWtleXMoc2V0X3Jlc3VsdCwgMSkpCiAKKyAgICBkZWYgdGVzdF9pbnBsYWNlX29wZXJhdGlvbnMoc2VsZik6CisgICAgICAgIGVsZW1lbnRzID0gJ2FiY2QnCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgIyB0ZXN0IHJhbmRvbSBwYWlycyBvZiBtdWx0aXNldHMKKyAgICAgICAgICAgIHAgPSBDb3VudGVyKGRpY3QoKGVsZW0sIHJhbmRyYW5nZSgtMiw0KSkgZm9yIGVsZW0gaW4gZWxlbWVudHMpKQorICAgICAgICAgICAgcC51cGRhdGUoZT0xLCBmPS0xLCBnPTApCisgICAgICAgICAgICBxID0gQ291bnRlcihkaWN0KChlbGVtLCByYW5kcmFuZ2UoLTIsNCkpIGZvciBlbGVtIGluIGVsZW1lbnRzKSkKKyAgICAgICAgICAgIHEudXBkYXRlKGg9MSwgaT0tMSwgaj0wKQorICAgICAgICAgICAgZm9yIGlucGxhY2Vfb3AsIHJlZ3VsYXJfb3AgaW4gWworICAgICAgICAgICAgICAgIChDb3VudGVyLl9faWFkZF9fLCBDb3VudGVyLl9fYWRkX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faXN1Yl9fLCBDb3VudGVyLl9fc3ViX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faW9yX18sIENvdW50ZXIuX19vcl9fKSwKKyAgICAgICAgICAgICAgICAoQ291bnRlci5fX2lhbmRfXywgQ291bnRlci5fX2FuZF9fKSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgYyA9IHAuY29weSgpCisgICAgICAgICAgICAgICAgY19pZCA9IGlkKGMpCisgICAgICAgICAgICAgICAgcmVndWxhcl9yZXN1bHQgPSByZWd1bGFyX29wKGMsIHEpCisgICAgICAgICAgICAgICAgaW5wbGFjZV9yZXN1bHQgPSBpbnBsYWNlX29wKGMsIHEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnBsYWNlX3Jlc3VsdCwgcmVndWxhcl9yZXN1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChpbnBsYWNlX3Jlc3VsdCksIGNfaWQpCisKICAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKICAgICAgICAgYyA9IENvdW50ZXIoYT0tNSwgYj0wLCBjPTUsIGQ9MTAsIGU9MTUsZz00MCkKICAgICAgICAgYy5zdWJ0cmFjdChhPTEsIGI9MiwgYz0tMywgZD0xMCwgZT0yMCwgZj0zMCwgaD0tNTApCkBAIC05MjYsNiArOTk3LDExIEBACiAgICAgICAgIGMuc3VidHJhY3QoJ2FhYWFiYmNjZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgQ291bnRlcihhPS0xLCBiPTAsIGM9LTEsIGQ9MSwgZT0tMSkpCiAKKyAgICBkZWYgdGVzdF91bmFyeShzZWxmKToKKyAgICAgICAgYyA9IENvdW50ZXIoYT0tNSwgYj0wLCBjPTUsIGQ9MTAsIGU9MTUsZz00MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KCtjKSwgZGljdChjPTUsIGQ9MTAsIGU9MTUsIGc9NDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoLWMpLCBkaWN0KGE9NSkpCisKICAgICBkZWYgdGVzdF9yZXByX25vbnNvcnRhYmxlKHNlbGYpOgogICAgICAgICBjID0gQ291bnRlcihhPTIsIGI9Tm9uZSkKICAgICAgICAgciA9IHJlcHIoYykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQppbmRleCA1OGVmMjk3Li4xMDcxZjRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CkBAIC0xLDEwICsxLDE3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBfYXN0CitpbXBvcnQgdHlwZXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBUZXN0U3BlY2lmaWNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiBjb21waWxlX3NpbmdsZShzZWxmLCBzb3VyY2UpOgorICAgICAgICBjb21waWxlKHNvdXJjZSwgIjxzaW5nbGU+IiwgInNpbmdsZSIpCisKKyAgICBkZWYgYXNzZXJ0SW52YWxpZFNpbmdsZShzZWxmLCBzb3VyY2UpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgc2VsZi5jb21waWxlX3NpbmdsZSwgc291cmNlKQorCiAgICAgZGVmIHRlc3Rfbm9fZW5kaW5nX25ld2xpbmUoc2VsZik6CiAgICAgICAgIGNvbXBpbGUoImhpIiwgIjx0ZXN0PiIsICJleGVjIikKICAgICAgICAgY29tcGlsZSgiaGlcciIsICI8dGVzdD4iLCAiZXhlYyIpCkBAIC00MzMsNiArNDQwLDY2IEBACiAgICAgICAgIGFzdC5ib2R5ID0gW19hc3QuQm9vbE9wKCldCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgYXN0LCAnPGFzdD4nLCAnZXhlYycpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CisgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCisgICAgICAgIGMgPSBjb21waWxlKHMsICJteWZpbGUiLCAiZXhlYyIpCisgICAgICAgIGZvciBvYmogaW4gYy5jb19jb25zdHM6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuQ29kZVR5cGUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqLmNvX2ZpbGVuYW1lLCBjLmNvX2ZpbGVuYW1lKQorCisgICAgZGVmIHRlc3Rfc2luZ2xlX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDIiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJcbjEgKyAyIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcbiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIjEgKyAyXG5cbiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIjEgKyAyXHRcdFxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcdFx0XG4gICAgICAgICIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIjEgKyAyICMgb25lIHBsdXMgdHdvIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMTsgMiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImltcG9ydCBzeXM7IHN5cyIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImRlZiBmKCk6XG4gICBwYXNzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgid2hpbGUgRmFsc2U6XG4gICBwYXNzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiaWYgeDpcbiAgIGYoeCkiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJpZiB4OlxuICAgZih4KVxuZWxzZTpcbiAgIGcoeCkiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJjbGFzcyBUOlxuICAgcGFzcyIpCisKKyAgICBkZWYgdGVzdF9iYWRfc2luZ2xlX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCcxXG4yJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdkZWYgZigpOiBwYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdhID0gMTNcbmIgPSAxODcnKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2RlbCB4XG5kZWwgeScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG5nKCknKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2YoKVxuIyBibGFoXG5ibGFoKCknKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2YoKVxueHkgIyBibGFoXG5ibGFoKCknKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ3ggPSA1ICMgY29tbWVudFxueCA9IDZcbicpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb21waWxlcl9yZWN1cnNpb25fbGltaXQoc2VsZik6CisgICAgICAgICMgRXhwZWN0ZWQgbGltaXQgaXMgc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkgKiB0aGUgc2NhbGluZyBmYWN0b3IKKyAgICAgICAgIyBpbiBzeW10YWJsZS5jIChjdXJyZW50bHkgMykKKyAgICAgICAgIyBXZSBleHBlY3QgdG8gZmFpbCAqYXQqIHRoYXQgbGltaXQsIGJlY2F1c2Ugd2UgdXNlIHVwIHNvbWUgb2YKKyAgICAgICAgIyB0aGUgc3RhY2sgZGVwdGggbGltaXQgaW4gdGhlIHRlc3Qgc3VpdGUgY29kZQorICAgICAgICAjIFNvIHdlIGNoZWNrIHRoZSBleHBlY3RlZCBsaW1pdCBhbmQgNzUlIG9mIHRoYXQKKyAgICAgICAgIyBYWFggKG5jb2dobGFuKTogZHVwbGljYXRpbmcgdGhlIHNjYWxpbmcgZmFjdG9yIGhlcmUgaXMgYSBsaXR0bGUKKyAgICAgICAgIyB1Z2x5LiBQZXJoYXBzIGl0IHNob3VsZCBiZSBleHBvc2VkIHNvbWV3aGVyZS4uLgorICAgICAgICBmYWlsX2RlcHRoID0gc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkgKiAzCisgICAgICAgIHN1Y2Nlc3NfZGVwdGggPSBpbnQoZmFpbF9kZXB0aCAqIDAuNzUpCisKKyAgICAgICAgZGVmIGNoZWNrX2xpbWl0KHByZWZpeCwgcmVwZWF0ZWQpOgorICAgICAgICAgICAgZXhwZWN0X29rID0gcHJlZml4ICsgcmVwZWF0ZWQgKiBzdWNjZXNzX2RlcHRoCisgICAgICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKGV4cGVjdF9vaykKKyAgICAgICAgICAgIGJyb2tlbiA9IHByZWZpeCArIHJlcGVhdGVkICogZmFpbF9kZXB0aAorICAgICAgICAgICAgZGV0YWlscyA9ICJDb21waWxpbmcgKHshcn0gKyB7IXJ9ICoge30pIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCByZXBlYXRlZCwgZmFpbF9kZXB0aCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBtc2c9ZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZShicm9rZW4pCisKKyAgICAgICAgY2hlY2tfbGltaXQoImEiLCAiKCkiKQorICAgICAgICBjaGVja19saW1pdCgiYSIsICIuYiIpCisgICAgICAgIGNoZWNrX2xpbWl0KCJhIiwgIlswXSIpCisgICAgICAgIGNoZWNrX2xpbWl0KCJhIiwgIiphIikKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFNwZWNpZmljcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkKaW5kZXggMmFmYTkzOC4uNmFlNDUwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkKQEAgLTE5LDcgKzE5LDcgQEAKIGZyb20gY29uY3VycmVudCBpbXBvcnQgZnV0dXJlcwogZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMuX2Jhc2UgaW1wb3J0ICgKICAgICBQRU5ESU5HLCBSVU5OSU5HLCBDQU5DRUxMRUQsIENBTkNFTExFRF9BTkRfTk9USUZJRUQsIEZJTklTSEVELCBGdXR1cmUpCi1pbXBvcnQgY29uY3VycmVudC5mdXR1cmVzLnByb2Nlc3MKK2Zyb20gY29uY3VycmVudC5mdXR1cmVzLnByb2Nlc3MgaW1wb3J0IEJyb2tlblByb2Nlc3NQb29sCiAKIAogZGVmIGNyZWF0ZV9mdXR1cmUoc3RhdGU9UEVORElORywgZXhjZXB0aW9uPU5vbmUsIHJlc3VsdD1Ob25lKToKQEAgLTM0LDcgKzM0LDcgQEAKIFJVTk5JTkdfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1SVU5OSU5HKQogQ0FOQ0VMTEVEX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEKQogQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRF9BTkRfTk9USUZJRUQpCi1FWENFUFRJT05fRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPUlPRXJyb3IoKSkKK0VYQ0VQVElPTl9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249T1NFcnJvcigpKQogU1VDQ0VTU0ZVTF9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCByZXN1bHQ9NDIpCiAKIApAQCAtMTYwLDcgKzE2MCw3IEBACiAgICAgICAgIHByb2Nlc3NlcyA9IHNlbGYuZXhlY3V0b3IuX3Byb2Nlc3NlcwogICAgICAgICBzZWxmLmV4ZWN1dG9yLnNodXRkb3duKCkKIAotICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXM6CisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKICAgICAgICAgICAgIHAuam9pbigpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfc2h1dGRvd24oc2VsZik6CkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlLm1hcChhYnMsIHJhbmdlKC01LCA1KSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNSwgNCwgMywgMiwgMSwgMCwgMSwgMiwgMywgNF0pCiAKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfZGVsX3NodXRkb3duKHNlbGYpOgpAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgIGRlbCBleGVjdXRvcgogCiAgICAgICAgIHF1ZXVlX21hbmFnZW1lbnRfdGhyZWFkLmpvaW4oKQotICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXM6CisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKICAgICAgICAgICAgIHAuam9pbigpCiAKIApAQCAtMjY4LDE0ICsyNjgsMTQgQEAKIAogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CiAgICAgICAgIGZ1dHVyZTEgPSBzZWxmLmV4ZWN1dG9yLnN1Ym1pdChtdWwsIDYsIDcpCi0gICAgICAgIGZ1dHVyZTIgPSBzZWxmLmV4ZWN1dG9yLnN1Ym1pdCh0aW1lLnNsZWVwLCAzKQorICAgICAgICBmdXR1cmUyID0gc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgNikKIAogICAgICAgICBmaW5pc2hlZCwgcGVuZGluZyA9IGZ1dHVyZXMud2FpdCgKICAgICAgICAgICAgICAgICBbQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUsCiAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9GVVRVUkUsCiAgICAgICAgICAgICAgICAgIFNVQ0NFU1NGVUxfRlVUVVJFLAogICAgICAgICAgICAgICAgICBmdXR1cmUxLCBmdXR1cmUyXSwKLSAgICAgICAgICAgICAgICB0aW1lb3V0PTEuNSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0PTUsCiAgICAgICAgICAgICAgICAgcmV0dXJuX3doZW49ZnV0dXJlcy5BTExfQ09NUExFVEVEKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KFtDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRSwKQEAgLTM3OSw4ICszNzksOCBAQAogICAgICAgICByZXN1bHRzID0gW10KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIGkgaW4gc2VsZi5leGVjdXRvci5tYXAodGltZS5zbGVlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCAzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MS41KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAwLCA2XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NSk6CiAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoaSkKICAgICAgICAgZXhjZXB0IGZ1dHVyZXMuVGltZW91dEVycm9yOgogICAgICAgICAgICAgcGFzcwpAQCAtMzg5LDEzICszODksMzggQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtOb25lLCBOb25lXSwgcmVzdWx0cykKIAorICAgIGRlZiB0ZXN0X3NodXRkb3duX3JhY2VfaXNzdWUxMjQ1NihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTI0NTY6IHJhY2UgY29uZGl0aW9uIGF0IHNodXRkb3duIHdoZXJlIHRyeWluZyB0byBwb3N0IGEKKyAgICAgICAgIyBzZW50aW5lbCBpbiB0aGUgY2FsbCBxdWV1ZSBibG9ja3MgKHRoZSBxdWV1ZSBpcyBmdWxsIHdoaWxlIHByb2Nlc3NlcworICAgICAgICAjIGhhdmUgZXhpdGVkKS4KKyAgICAgICAgc2VsZi5leGVjdXRvci5tYXAoc3RyLCBbMl0gKiAoc2VsZi53b3JrZXJfY291bnQgKyAxKSkKKyAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bigpCisKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yVGVzdChUaHJlYWRQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCk6Ci0gICAgcGFzcworICAgIGRlZiB0ZXN0X21hcF9zdWJtaXRzX3dpdGhvdXRfaXRlcmF0aW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB2ZXJpZnlpbmcgaXNzdWUgMTE3NzcuIiIiCisgICAgICAgIGZpbmlzaGVkID0gW10KKyAgICAgICAgZGVmIHJlY29yZF9maW5pc2hlZChuKToKKyAgICAgICAgICAgIGZpbmlzaGVkLmFwcGVuZChuKQorCisgICAgICAgIHNlbGYuZXhlY3V0b3IubWFwKHJlY29yZF9maW5pc2hlZCwgcmFuZ2UoMTApKQorICAgICAgICBzZWxmLmV4ZWN1dG9yLnNodXRkb3duKHdhaXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbmlzaGVkLCByYW5nZSgxMCkpCiAKIAogY2xhc3MgUHJvY2Vzc1Bvb2xFeGVjdXRvclRlc3QoUHJvY2Vzc1Bvb2xNaXhpbiwgRXhlY3V0b3JUZXN0KToKLSAgICBwYXNzCisgICAgZGVmIHRlc3Rfa2lsbGVkX2NoaWxkKHNlbGYpOgorICAgICAgICAjIFdoZW4gYSBjaGlsZCBwcm9jZXNzIGlzIGFicnVwdGx5IHRlcm1pbmF0ZWQsIHRoZSB3aG9sZSBwb29sIGdldHMKKyAgICAgICAgIyAiYnJva2VuIi4KKyAgICAgICAgZnV0dXJlcyA9IFtzZWxmLmV4ZWN1dG9yLnN1Ym1pdCh0aW1lLnNsZWVwLCAzKV0KKyAgICAgICAgIyBHZXQgb25lIG9mIHRoZSBwcm9jZXNzZXMsIGFuZCB0ZXJtaW5hdGUgKGtpbGwpIGl0CisgICAgICAgIHAgPSBuZXh0KGl0ZXIoc2VsZi5leGVjdXRvci5fcHJvY2Vzc2VzLnZhbHVlcygpKSkKKyAgICAgICAgcC50ZXJtaW5hdGUoKQorICAgICAgICBmb3IgZnV0IGluIGZ1dHVyZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCcm9rZW5Qcm9jZXNzUG9vbCwgZnV0LnJlc3VsdCkKKyAgICAgICAgIyBTdWJtaXR0aW5nIG90aGVyIGpvYnMgZmFpbHMgYXMgd2VsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIHNlbGYuZXhlY3V0b3Iuc3VibWl0LCBwb3csIDIsIDgpCiAKIAogY2xhc3MgRnV0dXJlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDk4LDcgKzUyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9Y2FuY2VsbGVkPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCiAgICAgICAgICAgICAgICAgcmVwcihFWENFUFRJT05fRlVUVVJFKSwKLSAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1maW5pc2hlZCByYWlzZWQgSU9FcnJvcj4nKQorICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWZpbmlzaGVkIHJhaXNlZCBPU0Vycm9yPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCiAgICAgICAgICAgICAgICAgcmVwcihTVUNDRVNTRlVMX0ZVVFVSRSksCiAgICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9ZmluaXNoZWQgcmV0dXJuZWQgaW50PicpCkBAIC01MDksNyArNTM0LDcgQEAKICAgICAgICAgZjIgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPVJVTk5JTkcpCiAgICAgICAgIGYzID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRUQpCiAgICAgICAgIGY0ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRURfQU5EX05PVElGSUVEKQotICAgICAgICBmNSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1JT0Vycm9yKCkpCisgICAgICAgIGY1ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPU9TRXJyb3IoKSkKICAgICAgICAgZjYgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCByZXN1bHQ9NSkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjEuY2FuY2VsKCkpCkBAIC01NjMsNyArNTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOQ0VMTEVEX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnV0dXJlcy5DYW5jZWxsZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUucmVzdWx0LCB0aW1lb3V0PTApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIEVYQ0VQVElPTl9GVVRVUkUucmVzdWx0LCB0aW1lb3V0PTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIEVYQ0VQVElPTl9GVVRVUkUucmVzdWx0LCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU1VDQ0VTU0ZVTF9GVVRVUkUucmVzdWx0KHRpbWVvdXQ9MCksIDQyKQogCiAgICAgZGVmIHRlc3RfcmVzdWx0X3dpdGhfc3VjY2VzcyhzZWxmKToKQEAgLTYwMiw3ICs2MjcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmdXR1cmVzLkNhbmNlbGxlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRS5leGNlcHRpb24sIHRpbWVvdXQ9MCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoRVhDRVBUSU9OX0ZVVFVSRS5leGNlcHRpb24odGltZW91dD0wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9FcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3IpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNVQ0NFU1NGVUxfRlVUVVJFLmV4Y2VwdGlvbih0aW1lb3V0PTApLCBOb25lKQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9uX3dpdGhfc3VjY2VzcyhzZWxmKToKQEAgLTYxMSwxNCArNjM2LDE0IEBACiAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgICAgICB3aXRoIGYxLl9jb25kaXRpb246CiAgICAgICAgICAgICAgICAgZjEuX3N0YXRlID0gRklOSVNIRUQKLSAgICAgICAgICAgICAgICBmMS5fZXhjZXB0aW9uID0gSU9FcnJvcigpCisgICAgICAgICAgICAgICAgZjEuX2V4Y2VwdGlvbiA9IE9TRXJyb3IoKQogICAgICAgICAgICAgICAgIGYxLl9jb25kaXRpb24ubm90aWZ5X2FsbCgpCiAKICAgICAgICAgZjEgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPVBFTkRJTkcpCiAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ub3RpZmljYXRpb24pCiAgICAgICAgIHQuc3RhcnQoKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYxLmV4Y2VwdGlvbih0aW1lb3V0PTUpLCBJT0Vycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZjEuZXhjZXB0aW9uKHRpbWVvdXQ9NSksIE9TRXJyb3IpKQogCiBAdGVzdC5zdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbigpOgpAQCAtNjMxLDcgKzY1Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkUG9vbEFzQ29tcGxldGVkVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnV0dXJlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Bvb2xTaHV0ZG93blRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkUG9vbFNodXRkb3duVGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRQb29sU2h1dGRvd25UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICBmaW5hbGx5OgogICAgICAgICB0ZXN0LnN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2ZncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9jZmdwYXJzZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CmluZGV4IGNlYzliNDQuLmZjNTY1NTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2ZncGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CkBAIC0zMiw3ICszMiw3IEBACiAgICAgX19pdGVyX18gPSBpdGVya2V5cwogCiAKLWNsYXNzIENmZ1BhcnNlclRlc3RDYXNlQ2xhc3ModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQ2ZnUGFyc2VyVGVzdENhc2VDbGFzczoKICAgICBhbGxvd19ub192YWx1ZSA9IEZhbHNlCiAgICAgZGVsaW1pdGVycyA9ICgnPScsICc6JykKICAgICBjb21tZW50X3ByZWZpeGVzID0gKCc7JywgJyMnKQpAQCAtODIyLDE0ICs4MjIsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoY2ZbJ3NlY3Rpb24zJ10ua2V5cygpKSwgeyduYW1lZCd9KQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCduYW1lMycsIGNmWydzZWN0aW9uMyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmLnNlY3Rpb25zKCksIFsnc2VjdGlvbjEnLCAnc2VjdGlvbjInLCAnc2VjdGlvbjMnXSkKKyAgICAgICAgY2Zbc2VsZi5kZWZhdWx0X3NlY3Rpb25dID0ge30KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoY2Zbc2VsZi5kZWZhdWx0X3NlY3Rpb25dLmtleXMoKSksIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChjZlsnc2VjdGlvbjEnXS5rZXlzKCkpLCB7J25hbWUxJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGNmWydzZWN0aW9uMiddLmtleXMoKSksIHsnbmFtZTIyJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGNmWydzZWN0aW9uMyddLmtleXMoKSksIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmLnNlY3Rpb25zKCksIFsnc2VjdGlvbjEnLCAnc2VjdGlvbjInLCAnc2VjdGlvbjMnXSkKIAogCi1jbGFzcyBTdHJpY3RUZXN0Q2FzZShCYXNpY1Rlc3RDYXNlKToKK2NsYXNzIFN0cmljdFRlc3RDYXNlKEJhc2ljVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuUmF3Q29uZmlnUGFyc2VyCiAgICAgc3RyaWN0ID0gVHJ1ZQogCiAKLWNsYXNzIENvbmZpZ1BhcnNlclRlc3RDYXNlKEJhc2ljVGVzdENhc2UpOgorY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIKIAogICAgIGRlZiB0ZXN0X2ludGVycG9sYXRpb24oc2VsZik6CkBAIC05MTgsNyArOTI0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2YuYWRkX3NlY3Rpb24sIHNlbGYuZGVmYXVsdF9zZWN0aW9uKQogCiAKLWNsYXNzIENvbmZpZ1BhcnNlclRlc3RDYXNlTm9JbnRlcnBvbGF0aW9uKEJhc2ljVGVzdENhc2UpOgorY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VOb0ludGVycG9sYXRpb24oQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIKICAgICBpbnRlcnBvbGF0aW9uID0gTm9uZQogICAgIGluaSA9IHRleHR3cmFwLmRlZGVudCgiIiIKQEAgLTk4Myw3ICs5ODksNyBAQAogY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VOb25TdGFuZGFyZERlZmF1bHRTZWN0aW9uKENvbmZpZ1BhcnNlclRlc3RDYXNlKToKICAgICBkZWZhdWx0X3NlY3Rpb24gPSAnZ2VuZXJhbCcKIAotY2xhc3MgTXVsdGlsaW5lVmFsdWVzVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSk6CitjbGFzcyBNdWx0aWxpbmVWYWx1ZXNUZXN0Q2FzZShCYXNpY1Rlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY29uZmlnX2NsYXNzID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcgogICAgIHdvbmRlcmZ1bF9zcGFtID0gKCJJJ20gaGF2aW5nIHNwYW0gc3BhbSBzcGFtIHNwYW0gIgogICAgICAgICAgICAgICAgICAgICAgICJzcGFtIHNwYW0gc3BhbSBiZWFrZWQgYmVhbnMgc3BhbSAiCkBAIC0xMDExLDcgKzEwMTcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmX2Zyb21fZmlsZS5nZXQoJ3NlY3Rpb244JywgJ2xvdmVseV9zcGFtNCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud29uZGVyZnVsX3NwYW0ucmVwbGFjZSgnXHRcbicsICdcbicpKQogCi1jbGFzcyBSYXdDb25maWdQYXJzZXJUZXN0Q2FzZShCYXNpY1Rlc3RDYXNlKToKK2NsYXNzIFJhd0NvbmZpZ1BhcnNlclRlc3RDYXNlKEJhc2ljVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuUmF3Q29uZmlnUGFyc2VyCiAKICAgICBkZWYgdGVzdF9pbnRlcnBvbGF0aW9uKHNlbGYpOgpAQCAtMTA1OCw3ICsxMDY0LDcgQEAKICAgICBjb21tZW50X3ByZWZpeGVzID0gKCcvLycsICciJykKICAgICBpbmxpbmVfY29tbWVudF9wcmVmaXhlcyA9ICgnLy8nLCAnIicpCiAKLWNsYXNzIFJhd0NvbmZpZ1BhcnNlclRlc3RTYW1iYUNvbmYoQ2ZnUGFyc2VyVGVzdENhc2VDbGFzcyk6CitjbGFzcyBSYXdDb25maWdQYXJzZXJUZXN0U2FtYmFDb25mKENmZ1BhcnNlclRlc3RDYXNlQ2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuUmF3Q29uZmlnUGFyc2VyCiAgICAgY29tbWVudF9wcmVmaXhlcyA9ICgnIycsICc7JywgJy0tLS0nKQogICAgIGlubGluZV9jb21tZW50X3ByZWZpeGVzID0gKCcvLycsKQpAQCAtMTA3OCw3ICsxMDg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZi5nZXQoImdsb2JhbCIsICJob3N0cyBhbGxvdyIpLCAiMTI3LiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2YuZ2V0KCJ0bXAiLCAiZWNobyBjb21tYW5kIiksICJjYXQgJXM7IHJtICVzIikKIAotY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VFeHRlbmRlZEludGVycG9sYXRpb24oQmFzaWNUZXN0Q2FzZSk6CitjbGFzcyBDb25maWdQYXJzZXJUZXN0Q2FzZUV4dGVuZGVkSW50ZXJwb2xhdGlvbihCYXNpY1Rlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY29uZmlnX2NsYXNzID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcgogICAgIGludGVycG9sYXRpb24gPSBjb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkKICAgICBkZWZhdWx0X3NlY3Rpb24gPSAnY29tbW9uJwpAQCAtMTI1Miw3ICsxMjU4LDcgQEAKIGNsYXNzIENvbmZpZ1BhcnNlclRlc3RDYXNlTm9WYWx1ZShDb25maWdQYXJzZXJUZXN0Q2FzZSk6CiAgICAgYWxsb3dfbm9fdmFsdWUgPSBUcnVlCiAKLWNsYXNzIENvbmZpZ1BhcnNlclRlc3RDYXNlVHJpY2t5RmlsZShDZmdQYXJzZXJUZXN0Q2FzZUNsYXNzKToKK2NsYXNzIENvbmZpZ1BhcnNlclRlc3RDYXNlVHJpY2t5RmlsZShDZmdQYXJzZXJUZXN0Q2FzZUNsYXNzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY29uZmlnX2NsYXNzID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcgogICAgIGRlbGltaXRlcnMgPSB7Jz0nfQogICAgIGNvbW1lbnRfcHJlZml4ZXMgPSB7JyMnfQpAQCAtMTM0OSw3ICsxMzU1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibzQgPSAxXG5cbiIpCiAKIAotY2xhc3MgQ29tcGF0aWJsZVRlc3RDYXNlKENmZ1BhcnNlclRlc3RDYXNlQ2xhc3MpOgorY2xhc3MgQ29tcGF0aWJsZVRlc3RDYXNlKENmZ1BhcnNlclRlc3RDYXNlQ2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuUmF3Q29uZmlnUGFyc2VyCiAgICAgY29tbWVudF9wcmVmaXhlcyA9ICcjOycKICAgICBpbmxpbmVfY29tbWVudF9wcmVmaXhlcyA9ICc7JwpAQCAtMTM3MSw3ICsxMzc3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZi5nZXQoJ0NvbW1lbnRlZCBCYXInLCAncXVpcmsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcztpcyBub3QgYSBjb21tZW50JykKIAotY2xhc3MgQ29weVRlc3RDYXNlKEJhc2ljVGVzdENhc2UpOgorY2xhc3MgQ29weVRlc3RDYXNlKEJhc2ljVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCiAKICAgICBkZWYgZnJvbXN0cmluZyhzZWxmLCBzdHJpbmcsIGRlZmF1bHRzPU5vbmUpOgpAQCAtMTY3MSwyNiArMTY3Nyw0MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZTEpLCByZXByKGUyKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZU5vblN0YW5kYXJkRGVsaW1pdGVycywKLSAgICAgICAgQ29uZmlnUGFyc2VyVGVzdENhc2VOb1ZhbHVlLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZUV4dGVuZGVkSW50ZXJwb2xhdGlvbiwKLSAgICAgICAgQ29uZmlnUGFyc2VyVGVzdENhc2VMZWdhY3lJbnRlcnBvbGF0aW9uLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZU5vSW50ZXJwb2xhdGlvbiwKLSAgICAgICAgQ29uZmlnUGFyc2VyVGVzdENhc2VUcmlja3lGaWxlLAotICAgICAgICBNdWx0aWxpbmVWYWx1ZXNUZXN0Q2FzZSwKLSAgICAgICAgUmF3Q29uZmlnUGFyc2VyVGVzdENhc2UsCi0gICAgICAgIFJhd0NvbmZpZ1BhcnNlclRlc3RDYXNlTm9uU3RhbmRhcmREZWxpbWl0ZXJzLAotICAgICAgICBSYXdDb25maWdQYXJzZXJUZXN0U2FtYmFDb25mLAotICAgICAgICBTb3J0ZWRUZXN0Q2FzZSwKLSAgICAgICAgSXNzdWU3MDA1VGVzdENhc2UsCi0gICAgICAgIFN0cmljdFRlc3RDYXNlLAotICAgICAgICBDb21wYXRpYmxlVGVzdENhc2UsCi0gICAgICAgIENvcHlUZXN0Q2FzZSwKLSAgICAgICAgQ29uZmlnUGFyc2VyVGVzdENhc2VOb25TdGFuZGFyZERlZmF1bHRTZWN0aW9uLAotICAgICAgICBSZWFkRmlsZVRlc3RDYXNlLAotICAgICAgICBDb3ZlcmFnZU9uZUh1bmRyZWRUZXN0Q2FzZSwKLSAgICAgICAgRXhjZXB0aW9uUGlja2xpbmdUZXN0Q2FzZSwKLSAgICAgICAgKQorY2xhc3MgSW5saW5lQ29tbWVudFN0cmlwcGluZ1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3IgaXNzdWUgIzE0NTkwOiBDb25maWdQYXJzZXIgZG9lc24ndCBzdHJpcCBpbmxpbmUgY29tbWVudCB3aGVuCisgICAgZGVsaW1pdGVyIG9jY3VycyBlYXJsaWVyIHdpdGhvdXQgcHJlY2VkaW5nIHNwYWNlLi4iIiIKKworICAgIGRlZiB0ZXN0X3N0cmlwcGluZyhzZWxmKToKKyAgICAgICAgY2ZnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcihpbmxpbmVfY29tbWVudF9wcmVmaXhlcz0oJzsnLCAnIycsCisgICAgICAgICAgICAgICAgJy8vJykpCisgICAgICAgIGNmZy5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW3NlY3Rpb25dCisgICAgICAgIGsxID0gdjE7c3RpbGwgdjEKKyAgICAgICAgazIgPSB2MiA7YSBjb21tZW50CisgICAgICAgIGszID0gdjMgOyBhbHNvIGEgY29tbWVudAorICAgICAgICBrNCA9IHY0O3N0aWxsIHY0IDthIGNvbW1lbnQKKyAgICAgICAgazUgPSB2NTtzdGlsbCB2NSA7IGFsc28gYSBjb21tZW50CisgICAgICAgIGs2ID0gdjY7c3RpbGwgdjY7IGFuZCBzdGlsbCB2NiA7YSBjb21tZW50CisgICAgICAgIGs3ID0gdjc7c3RpbGwgdjc7IGFuZCBzdGlsbCB2NyA7IGFsc28gYSBjb21tZW50CisKKyAgICAgICAgW211bHRpcHJlZml4XQorICAgICAgICBrMSA9IHYxO3N0aWxsIHYxICNhIGNvbW1lbnQgOyB5ZWFoLCBwcmV0dHkgbXVjaAorICAgICAgICBrMiA9IHYyIC8vIHRoaXMgYWxyZWFkeSBpcyBhIGNvbW1lbnQgOyBjb250aW51ZWQKKyAgICAgICAgazMgPSB2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzIDsgYSBjb21tZW50CisgICAgICAgICIiIikKKyAgICAgICAgcyA9IGNmZ1snc2VjdGlvbiddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazEnXSwgJ3YxO3N0aWxsIHYxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMiddLCAndjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazQnXSwgJ3Y0O3N0aWxsIHY0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNSddLCAndjU7c3RpbGwgdjUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s2J10sICd2NjtzdGlsbCB2NjsgYW5kIHN0aWxsIHY2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNyddLCAndjc7c3RpbGwgdjc7IGFuZCBzdGlsbCB2NycpCisgICAgICAgIHMgPSBjZmdbJ211bHRpcHJlZml4J10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMSddLCAndjE7c3RpbGwgdjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2syJ10sICd2MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazMnXSwgJ3YzOyMvL3N0aWxsIHYzIyBhbmQgc3RpbGwgdjMnKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKaW5kZXggNmUzODMwNS4uZTUyZWQ5MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQpAQCAtMzcwLDYgKzM3MCwyMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0ZSwgWzEsICdzb21ldGhpbmcgZWxzZScsIDk5OV0pCiAKIAorY2xhc3MgVGVzdEV4aXRTdGFjayh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9ub19yZXNvdXJjZXMoc2VsZik6CisgICAgICAgIHdpdGggRXhpdFN0YWNrKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jYWxsYmFjayhzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoKCksIHt9KSwKKyAgICAgICAgICAgICgoMSwpLCB7fSksCisgICAgICAgICAgICAoKDEsMiksIHt9KSwKKyAgICAgICAgICAgICgoKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgICAgICgoMSwpLCBkaWN0KGV4YW1wbGU9MSkpLAorICAgICAgICAgICAgKCgxLDIpLCBkaWN0KGV4YW1wbGU9MSkpLAorICAgICAgICBdCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGRlZiBfZXhpdCgqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICIiIlRlc3QgbWV0YWRhdGEgcHJvcGFnYXRpb24iIiIKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKGFyZ3MsIGt3ZHMpKQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZm9yIGFyZ3MsIGt3ZHMgaW4gcmV2ZXJzZWQoZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIGlmIGFyZ3MgYW5kIGt3ZHM6CisgICAgICAgICAgICAgICAgICAgIGYgPSBzdGFjay5jYWxsYmFjayhfZXhpdCwgKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgICAgICBlbGlmIGFyZ3M6CisgICAgICAgICAgICAgICAgICAgIGYgPSBzdGFjay5jYWxsYmFjayhfZXhpdCwgKmFyZ3MpCisgICAgICAgICAgICAgICAgZWxpZiBrd2RzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICoqa3dkcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmLCBfZXhpdCkKKyAgICAgICAgICAgIGZvciB3cmFwcGVyIGluIHN0YWNrLl9leGl0X2NhbGxiYWNrczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX193cmFwcGVkX18sIF9leGl0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX25hbWVfXywgX2V4aXQuX19uYW1lX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3JhcHBlci5fX2RvY19fLCBfZXhpdC5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9wdXNoKHNlbGYpOgorICAgICAgICBleGNfcmFpc2VkID0gWmVyb0RpdmlzaW9uRXJyb3IKKyAgICAgICAgZGVmIF9leHBlY3RfZXhjKGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4Y190eXBlLCBleGNfcmFpc2VkKQorICAgICAgICBkZWYgX3N1cHByZXNzX2V4YygqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZGVmIF9leHBlY3Rfb2soZXhjX3R5cGUsIGV4YywgZXhjX3RiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Y190eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjX3RiKQorICAgICAgICBjbGFzcyBFeGl0Q00ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGVja19leGMpOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhjID0gY2hlY2tfZXhjCisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiU2hvdWxkIG5vdCBiZSBjYWxsZWQhIikKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhjKCpleGNfZGV0YWlscykKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIHN0YWNrLnB1c2goX2V4cGVjdF9vaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX2V4cGVjdF9vaykKKyAgICAgICAgICAgIGNtID0gRXhpdENNKF9leHBlY3Rfb2spCisgICAgICAgICAgICBzdGFjay5wdXNoKGNtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLl9fc2VsZl9fLCBjbSkKKyAgICAgICAgICAgIHN0YWNrLnB1c2goX3N1cHByZXNzX2V4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX3N1cHByZXNzX2V4YykKKyAgICAgICAgICAgIGNtID0gRXhpdENNKF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc3RhY2sucHVzaChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHN0YWNrLnB1c2goX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9leHBlY3RfZXhjKQorICAgICAgICAgICAgMS8wCisKKyAgICBkZWYgdGVzdF9lbnRlcl9jb250ZXh0KHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0Q00ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgzKQorCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGNtID0gVGVzdENNKCkKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIEBzdGFjay5jYWxsYmFjayAgIyBSZWdpc3RlcmVkIGZpcnN0ID0+IGNsZWFuZWQgdXAgbGFzdAorICAgICAgICAgICAgZGVmIF9leGl0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCg0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoX2V4aXQpCisgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KGNtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLl9fc2VsZl9fLCBjbSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFsxLCAyLCAzLCA0XSkKKworICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgQHN0YWNrLmNhbGxiYWNrCisgICAgICAgICAgICBkZWYgX2V4aXQoKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShfZXhpdCkKKyAgICAgICAgICAgIHN0YWNrLmNsb3NlKCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFsxLCAyXSkKKworICAgIGRlZiB0ZXN0X3BvcF9hbGwoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICAgICAgIGRlZiBfZXhpdCgpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKF9leGl0KQorICAgICAgICAgICAgbmV3X3N0YWNrID0gc3RhY2sucG9wX2FsbCgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoMikKKyAgICAgICAgbmV3X3N0YWNrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFsxLCAyLCAzXSkKKworICAgIGRlZiB0ZXN0X2V4aXRfcmFpc2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiBGYWxzZSkKKyAgICAgICAgICAgICAgICAxLzAKKworICAgIGRlZiB0ZXN0X2V4aXRfc3VwcHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiBUcnVlKQorICAgICAgICAgICAgMS8wCisKKyAgICBkZWYgdGVzdF9leGl0X2V4Y2VwdGlvbl9jaGFpbmluZ19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgICMgU2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IEV4aXRTdGFjayBjaGFpbmluZyBtYXRjaGVzCisgICAgICAgICMgYWN0dWFsIG5lc3RlZCB3aXRoIHN0YXRlbWVudHMKKyAgICAgICAgY2xhc3MgUmFpc2VFeGM6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjKToKKyAgICAgICAgICAgICAgICBzZWxmLmV4YyA9IGV4YworICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5leGMKKworICAgICAgICBjbGFzcyBSYWlzZUV4Y1dpdGhDb250ZXh0OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGVyLCBpbm5lcik6CisgICAgICAgICAgICAgICAgc2VsZi5vdXRlciA9IG91dGVyCisgICAgICAgICAgICAgICAgc2VsZi5pbm5lciA9IGlubmVyCisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuaW5uZXIKKyAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYub3V0ZXIKKworICAgICAgICBjbGFzcyBTdXBwcmVzc0V4YzoKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHR5cGUoc2VsZikuc2F2ZWRfZGV0YWlscyA9IGV4Y19kZXRhaWxzCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIFJhaXNlRXhjKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgICAgIHdpdGggUmFpc2VFeGNXaXRoQ29udGV4dChLZXlFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIFN1cHByZXNzRXhjKCk6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFJhaXNlRXhjKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18sIEtleUVycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXywgQXR0cmlidXRlRXJyb3IpCisgICAgICAgICAgICAjIElubmVyIGV4Y2VwdGlvbnMgd2VyZSBzdXBwcmVzc2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18uX19jb250ZXh0X18pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIEluZGV4RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHJhaXNlZCIpCisgICAgICAgICMgQ2hlY2sgdGhlIGlubmVyIGV4Y2VwdGlvbnMKKyAgICAgICAgaW5uZXJfZXhjID0gU3VwcHJlc3NFeGMuc2F2ZWRfZGV0YWlsc1sxXQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5uZXJfZXhjLCBWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5uZXJfZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikKKworICAgIGRlZiB0ZXN0X2V4aXRfZXhjZXB0aW9uX2NoYWluaW5nKHNlbGYpOgorICAgICAgICAjIEVuc3VyZSBleGNlcHRpb24gY2hhaW5pbmcgbWF0Y2hlcyB0aGUgcmVmZXJlbmNlIGJlaGF2aW91cgorICAgICAgICBkZWYgcmFpc2VfZXhjKGV4Yyk6CisgICAgICAgICAgICByYWlzZSBleGMKKworICAgICAgICBzYXZlZF9kZXRhaWxzID0gTm9uZQorICAgICAgICBkZWYgc3VwcHJlc3NfZXhjKCpleGNfZGV0YWlscyk6CisgICAgICAgICAgICBub25sb2NhbCBzYXZlZF9kZXRhaWxzCisgICAgICAgICAgICBzYXZlZF9kZXRhaWxzID0gZXhjX2RldGFpbHMKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIEluZGV4RXJyb3IpCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBLZXlFcnJvcikKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIEF0dHJpYnV0ZUVycm9yKQorICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goc3VwcHJlc3NfZXhjKQorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBLZXlFcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sIEF0dHJpYnV0ZUVycm9yKQorICAgICAgICAgICAgIyBJbm5lciBleGNlcHRpb25zIHdlcmUgc3VwcHJlc3NlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLl9fY29udGV4dF9fKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBJbmRleEVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyByYWlzZWQiKQorICAgICAgICAjIENoZWNrIHRoZSBpbm5lciBleGNlcHRpb25zCisgICAgICAgIGlubmVyX2V4YyA9IHNhdmVkX2RldGFpbHNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4YywgVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4Yy5fX2NvbnRleHRfXywgWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF9leGl0X2V4Y2VwdGlvbl9jaGFpbmluZ19zdXBwcmVzcyhzZWxmKToKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IFRydWUpCisgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiAxLzApCisgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiB7fVsxXSkKKworICAgIGRlZiB0ZXN0X2V4Y2Vzc2l2ZV9uZXN0aW5nKHNlbGYpOgorICAgICAgICAjIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBkaWUgd2l0aCBSZWN1cnNpb25FcnJvciBoZXJlCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwMCk6CisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soaW50KQorCisgICAgZGVmIHRlc3RfaW5zdGFuY2VfYnlwYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBFeGFtcGxlKG9iamVjdCk6IHBhc3MKKyAgICAgICAgY20gPSBFeGFtcGxlKCkKKyAgICAgICAgY20uX19leGl0X18gPSBvYmplY3QoKQorICAgICAgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzdGFjay5lbnRlcl9jb250ZXh0LCBjbSkKKyAgICAgICAgc3RhY2sucHVzaChjbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBjbSkKKworCiAjIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgdGhlIHRlc3QgYWN0dWFsbHkgcnVuIHVuZGVyIHJlZ3J0ZXN0LnB5IQogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CmluZGV4IGE4NGMxMDkuLmM0YmFhZTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAjIEF0dGVtcHQgZnVsbCBsaW5lIGNvdmVyYWdlIG9mIGNvcHkucHkgZnJvbSB0b3AgdG8gYm90dG9tCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb25zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weS5FcnJvciBpcyBjb3B5LmVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuRXJyb3IsIGNvcHkuZXJyb3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGNvcHkuRXJyb3IsIEV4Y2VwdGlvbikpCiAKICAgICAjIFRoZSBjb3B5KCkgbWV0aG9kCkBAIC01NCwyMCArNTQsMjYgQEAKICAgICBkZWYgdGVzdF9jb3B5X3JlZHVjZV9leChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG8pOgorICAgICAgICAgICAgICAgIGMuYXBwZW5kKDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkbid0IGNhbGwgdGhpcyIpCisgICAgICAgIGMgPSBbXQogICAgICAgICB4ID0gQygpCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfcmVkdWNlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBbMV0pCiAKICAgICBkZWYgdGVzdF9jb3B5X2NhbnQoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTkxLDcgKzk3LDcgQEAKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIHJhbmdlKDEwKSwgQ2xhc3NpYywgbWF4XQogICAgICAgICBmb3IgeCBpbiB0ZXN0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5LmNvcHkoeCkgaXMgeCwgcmVwcih4KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY29weS5jb3B5KHgpLCB4KQogCiAgICAgZGVmIHRlc3RfY29weV9saXN0KHNlbGYpOgogICAgICAgICB4ID0gWzEsIDIsIDNdCkBAIC0xODUsOSArMTkxLDkgQEAKICAgICAgICAgeCA9IFt4LCB4XQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyBub3QgeFswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgeVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXSwgeVsxXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2lzc3ViY2xhc3Moc2VsZik6CiAgICAgICAgICMgWFhYIE5vdGU6IHRoZXJlJ3Mgbm8gd2F5IHRvIHRlc3QgdGhlIFR5cGVFcnJvciBjb21pbmcgb3V0IG9mCkBAIC0yMjcsMjAgKzIzMywyNiBAQAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZHVjZV9leChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG8pOgorICAgICAgICAgICAgICAgIGMuYXBwZW5kKDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkbid0IGNhbGwgdGhpcyIpCisgICAgICAgIGMgPSBbXQogICAgICAgICB4ID0gQygpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBbMV0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWR1Y2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGMuYXBwZW5kKDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgIGMgPSBbXQogICAgICAgICB4ID0gQygpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBbMV0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9jYW50KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC0yNjQsMTQgKzI3NiwxNCBAQAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAogICAgICAgICAgICAgICAgICBOZXdTdHlsZSwgcmFuZ2UoMTApLCBDbGFzc2ljLCBtYXhdCiAgICAgICAgIGZvciB4IGluIHRlc3RzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHkuZGVlcGNvcHkoeCkgaXMgeCwgcmVwcih4KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY29weS5kZWVwY29weSh4KSwgeCkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2xpc3Qoc2VsZik6CiAgICAgICAgIHggPSBbWzEsIDJdLCAzXQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfbGlzdChzZWxmKToKICAgICAgICAgeCA9IFtdCkBAIC0yNzksMTYgKzI5MSwyNiBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBmb3Igb3AgaW4gY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHlbMF0sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQogCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfZW1wdHlfdHVwbGUoc2VsZik6CisgICAgICAgIHggPSAoKQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQorICAgICAgICBzZWxmLmFzc2VydElzKHgsIHkpCisKICAgICBkZWYgdGVzdF9kZWVwY29weV90dXBsZShzZWxmKToKICAgICAgICAgeCA9IChbMSwgMl0sIDMpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3R1cGxlX29mX2ltbXV0YWJsZXMoc2VsZik6CisgICAgICAgIHggPSAoKDEsIDIpLCAzKQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQorICAgICAgICBzZWxmLmFzc2VydElzKHgsIHkpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfdHVwbGUoc2VsZik6CiAgICAgICAgIHggPSAoW10sKQpAQCAtMjk2LDE2ICszMTgsMTYgQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIG5vdCB4WzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXVswXSBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeVswXSwgeFswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5WzBdWzBdLCB5KQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfZGljdChzZWxmKToKICAgICAgICAgeCA9IHsiZm9vIjogWzEsIDJdLCAiYmFyIjogM30KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbImZvbyJdIGlzIG5vdCB5WyJmb28iXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbImZvbyJdLCB5WyJmb28iXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV9kaWN0KHNlbGYpOgogICAgICAgICB4ID0ge30KQEAgLTMxNSwxNSArMzM3LDMwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBmb3Igb3AgaW4gZXF1YWxpdHlfY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbJ2ZvbyddIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Wydmb28nXSwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oeSksIDEpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9rZWVwYWxpdmUoc2VsZik6CiAgICAgICAgIG1lbW8gPSB7fQotICAgICAgICB4ID0gNDIKKyAgICAgICAgeCA9IFtdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgsIG1lbW8pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZW1vW2lkKHgpXSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKG1lbW9baWQobWVtbyldWzBdLCB4KQorCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfZG9udF9tZW1vX2ltbXV0YWJsZShzZWxmKToKKyAgICAgICAgbWVtbyA9IHt9CisgICAgICAgIHggPSBbMSwgMiwgMywgNF0KKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCwgbWVtbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICAjIFRoZXJlJ3MgdGhlIGVudHJ5IGZvciB0aGUgbmV3IGxpc3QsIGFuZCB0aGUga2VlcCBhbGl2ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWVtbyksIDIpCisKKyAgICAgICAgbWVtbyA9IHt9CisgICAgICAgIHggPSBbKDEsIDIpXQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4LCBtZW1vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgICMgVHVwbGVzIHdpdGggaW1tdXRhYmxlIGNvbnRlbnRzIGFyZSBpbW11dGFibGUgZm9yIGRlZXBjb3B5LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtZW1vKSwgMikKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfdmFuaWxsYShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTMzNCw3ICszNzEsNyBAQAogICAgICAgICB4ID0gQyhbNDJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9kZWVwY29weShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTM0Nyw4ICszODQsOCBAQAogICAgICAgICB4ID0gQyhbNDJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRpbml0YXJncyhzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTM2MSw4ICszOTgsOCBAQAogICAgICAgICB4ID0gQyhbNDJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTM3NSw4ICs0MTIsOCBAQAogICAgICAgICB4ID0gQyhbNDJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9zZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTM4OSw4ICs0MjYsOCBAQAogICAgICAgICB4ID0gQyhbNDJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRzdGF0ZV9zZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTQwNSw4ICs0NDIsOCBAQAogICAgICAgICB4ID0gQyhbNDJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX2luc3Qoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC00MTQsOCArNDUxLDggQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IHgKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5mb28sIHkpCiAKICAgICAjIF9yZWNvbnN0cnVjdCgpCiAKQEAgLTQyNSw5ICs0NjIsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICB4ID0gQygpCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9ub3N0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00MzYsOSArNDczLDkgQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IDQyCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuX19jbGFzc19fIGlzIHguX19jbGFzc19fKQorICAgICAgICBzZWxmLmFzc2VydElzKHkuX19jbGFzc19fLCB4Ll9fY2xhc3NfXykKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuX19jbGFzc19fIGlzIHguX19jbGFzc19fKQorICAgICAgICBzZWxmLmFzc2VydElzKHkuX19jbGFzc19fLCB4Ll9fY2xhc3NfXykKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X3N0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NTIsNyArNDg5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3Rfc3RhdGVfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQ2OCw3ICs1MDUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9yZWZsZXhpdmUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQ3Niw4ICs1MTMsOCBAQAogICAgICAgICB4ID0gQygpCiAgICAgICAgIHguZm9vID0geAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LmZvbywgeSkKIAogICAgICMgQWRkaXRpb25zIGZvciBQeXRob24gMi4zIGFuZCBwaWNrbGUgcHJvdG9jb2wgMgogCkBAIC00OTEsMTIgKzUyOCwxMiBAQAogICAgICAgICB4ID0gQyhbWzEsIDJdLCAzXSkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeFswXSwgeVswXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQogCiAgICAgZGVmIHRlc3RfcmVkdWNlXzV0dXBsZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhkaWN0KToKQEAgLTUwOCwxMiArNTQ1LDEyIEBACiAgICAgICAgIHggPSBDKFsoImZvbyIsIFsxLCAyXSksICgiYmFyIiwgMyldKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyB5WyJmb28iXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKHhbImZvbyJdLCB5WyJmb28iXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbImZvbyJdIGlzIG5vdCB5WyJmb28iXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbImZvbyJdLCB5WyJmb28iXSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfc2xvdHMoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTUyMSw3ICs1NTgsNyBAQAogICAgICAgICB4ID0gQygpCiAgICAgICAgIHguZm9vID0gWzQyXQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LmZvbywgeS5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9zbG90cyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNTMwLDcgKzU2Nyw3IEBACiAgICAgICAgIHguZm9vID0gWzQyXQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCB5LmZvbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIG5vdCB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LmZvbywgeS5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9kaWN0X3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKGRpY3QpOgpAQCAtNTQ3LDcgKzU4NCw3IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9rZXlzLCB5Ll9rZXlzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQogICAgICAgICB4WydiYXInXSA9IDEKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh4LCB5KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHguX2tleXMsIHkuX2tleXMpCkBAIC01NjAsOCArNTk3LDggQEAKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeCksIGxpc3QoeSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIHkuZm9vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyB5WzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeFswXSwgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LmZvbywgeS5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9saXN0X3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKGxpc3QpOgpAQCAtNTcxLDggKzYwOCw4IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh4KSwgbGlzdCh5KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvbywgeS5mb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgbm90IHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfY29weV90dXBsZV9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyh0dXBsZSk6CkBAIC01ODksOCArNjI2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZSh4KSwgKFsxLCAyXSwgMykpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoeSksIChbMSwgMl0sIDMpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQogCiAgICAgZGVmIHRlc3RfZ2V0c3RhdGVfZXhjKHNlbGYpOgogICAgICAgICBjbGFzcyBFdmlsU3RhdGUob2JqZWN0KToKQEAgLTYxOCwxMCArNjU1LDEwIEBACiAgICAgICAgIG9iaiA9IEMoKQogICAgICAgICB4ID0gd2Vha3JlZi5yZWYob2JqKQogICAgICAgICB5ID0gX2NvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogICAgICAgICBkZWwgb2JqCiAgICAgICAgIHkgPSBfY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCiAKICAgICBkZWYgdGVzdF9jb3B5X3dlYWtyZWYoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrX3dlYWtyZWYoY29weS5jb3B5KQpAQCAtNjM3LDcgKzY3NCw3IEBACiAgICAgICAgIHVbYV0gPSBiCiAgICAgICAgIHVbY10gPSBkCiAgICAgICAgIHYgPSBjb3B5LmNvcHkodSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2IGlzIHUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbYV0sIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodltjXSwgZCkKQEAgLTY2Nyw4ICs3MDQsOCBAQAogICAgICAgICB2ID0gY29weS5kZWVwY29weSh1KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZbYV0gaXMgYikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2W2NdIGlzIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodlthXSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh2W2NdLCBkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbYV0uaSwgYi5pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbY10uaSwgZC5pKQogICAgICAgICBkZWwgYwpAQCAtNjg3LDEyICs3MjQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMikKICAgICAgICAgKHgsIHkpLCAoeiwgdCkgPSBzb3J0ZWQodi5pdGVtcygpLCBrZXk9bGFtYmRhIHBhaXI6IHBhaXJbMF0uaSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh4IGlzIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmksIGEuaSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgYikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh6IGlzIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh6LCBjKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHouaSwgYy5pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodCBpcyBkKQorICAgICAgICBzZWxmLmFzc2VydElzKHQsIGQpCiAgICAgICAgIGRlbCB4LCB5LCB6LCB0CiAgICAgICAgIGRlbCBkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpLCAxKQpAQCAtNzA1LDcgKzc0Miw3IEBACiAgICAgICAgIGYuYiA9IGYubQogICAgICAgICBnID0gY29weS5kZWVwY29weShmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcubSwgZy5iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZy5iLl9fc2VsZl9fIGlzIGcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZy5iLl9fc2VsZl9fLCBnKQogICAgICAgICBnLmIoKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IGFlMTdjMmIuLjU2NzY2NjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtMTgsMTYgKzE4LDE5IEBACiAgICAgZGVmIHRlc3RfYmFkX2NvdW50ZXJfZHVyaW5nX2RlYWxsb2Moc2VsZik6CiAgICAgICAgIGltcG9ydCBfbHNwcm9mCiAgICAgICAgICMgTXVzdCB1c2UgYSBmaWxlIGFzIFN0cmluZ0lPIGRvZXNuJ3QgdHJpZ2dlciB0aGUgYnVnLgotICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGZpbGU6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyID0gZmlsZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIobGFtYmRhOiBpbnQpCi0gICAgICAgICAgICAgICAgb2JqLmVuYWJsZSgpCi0gICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcigxKQotICAgICAgICAgICAgICAgIG9iai5kaXNhYmxlKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCi0gICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IGZpbGUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIobGFtYmRhOiBpbnQpCisgICAgICAgICAgICAgICAgICAgIG9iai5lbmFibGUoKQorICAgICAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKDEpCisgICAgICAgICAgICAgICAgICAgIG9iai5kaXNhYmxlKCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2Y2NiZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkKQEAgLTAsMCArMSwzOCBAQAorIyBUZXN0cyB0aGF0IHRoZSBjcmFzaGVycyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMgZGlyZWN0b3J5IGFjdHVhbGx5CisjIGRvIGNyYXNoIHRoZSBpbnRlcnByZXRlciBhcyBleHBlY3RlZAorIworIyBJZiBhIGNyYXNoZXIgaXMgZml4ZWQsIGl0IHNob3VsZCBiZSBtb3ZlZCBlbHNld2hlcmUgaW4gdGhlIHRlc3Qgc3VpdGUgdG8KKyMgZW5zdXJlIGl0IGNvbnRpbnVlcyB0byB3b3JrIGNvcnJlY3RseS4KKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgZ2xvYgoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKK2Zyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKKworQ1JBU0hFUl9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImNyYXNoZXJzIikKK0NSQVNIRVJfRklMRVMgPSBvcy5wYXRoLmpvaW4oQ1JBU0hFUl9ESVIsICIqLnB5IikKKworaW5maW5pdGVfbG9vcHMgPSBbImluZmluaXRlX2xvb3BfcmUucHkiLCAibmFzdHlfZXFfdnNfZGljdC5weSJdCisKK2NsYXNzIENyYXNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEB1bml0dGVzdC5za2lwKCJ0aGVzZSB0ZXN0cyBhcmUgdG9vIGZyYWdpbGUiKQorICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY3Jhc2hlcnNfY3Jhc2goc2VsZik6CisgICAgICAgIGZvciBmbmFtZSBpbiBnbG9iLmdsb2IoQ1JBU0hFUl9GSUxFUyk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKGZuYW1lKSBpbiBpbmZpbml0ZV9sb29wczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBTb21lICJjcmFzaGVycyIgb25seSB0cmlnZ2VyIGFuIGV4Y2VwdGlvbiByYXRoZXIgdGhhbiBhCisgICAgICAgICAgICAjIHNlZ2ZhdWx0LiBDb25zaWRlciB0aGF0IGFuIGFjY2VwdGFibGUgb3V0Y29tZS4KKyAgICAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCJDaGVja2luZyBjcmFzaGVyOiIsIGZuYW1lKQorICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKGZuYW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENyYXNoZXJUZXN0KQorICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcnlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKaW5kZXggMmFkYjI4ZC4uY2ZiNzM0MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CkBAIC0xLDcgKzEsMTEgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNyeXB0ID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjcnlwdCcpCitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICAjIHRoaXMgaW1wb3J0IHdpbGwgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QgaWYgX2NyeXB0IGRvZXNuJ3QgZXhpc3QsCisgICAgIyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBpbiBzZXRVcE1vZHVsZSBmb3IgdGVzdCBkaXNjb3ZlcnkgdG8gd29yaworICAgIGdsb2JhbCBjcnlwdAorICAgIGNyeXB0ID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjcnlwdCcpCiAKIGNsYXNzIENyeXB0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMCw4ICsxNCwyNCBAQAogICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICBwcmludCgnVGVzdCBlbmNyeXB0aW9uOiAnLCBjKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ3J5cHRUZXN0Q2FzZSkKKyAgICBkZWYgdGVzdF9zYWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjcnlwdC5fc2FsdGNoYXJzKSwgNjQpCisgICAgICAgIGZvciBtZXRob2QgaW4gY3J5cHQubWV0aG9kczoKKyAgICAgICAgICAgIHNhbHQgPSBjcnlwdC5ta3NhbHQobWV0aG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2FsdCksCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZC5zYWx0X2NoYXJzICsgKDMgaWYgbWV0aG9kLmlkZW50IGVsc2UgMCkpCisKKyAgICBkZWYgdGVzdF9zYWx0ZWRjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzOgorICAgICAgICAgICAgcHcgPSBjcnlwdC5jcnlwdCgnYXNzd29yZCcsIG1ldGhvZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHB3KSwgbWV0aG9kLnRvdGFsX3NpemUpCisgICAgICAgICAgICBwdyA9IGNyeXB0LmNyeXB0KCdhc3N3b3JkJywgY3J5cHQubWtzYWx0KG1ldGhvZCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwdyksIG1ldGhvZC50b3RhbF9zaXplKQorCisgICAgZGVmIHRlc3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgIyBHdXJhbnRlZSB0aGF0IE1FVEhPRF9DUllQVCBpcyB0aGUgbGFzdCBtZXRob2QgaW4gY3J5cHQubWV0aG9kcy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjcnlwdC5tZXRob2RzKSA+PSAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyeXB0Lk1FVEhPRF9DUllQVCwgY3J5cHQubWV0aG9kc1stMV0pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5IGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKaW5kZXggNTU3OTZhMi4uOTZmOGFhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jc3YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKQEAgLTE5Nyw2ICsxOTcsMTcgQEAKICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgImEsYlxyXG5jLGRcclxuIikKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3dyaXRlcm93c19sZWdhY3lfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorCisgICAgICAgIGMgPSBfdGVzdGNhcGkudW5pY29kZV9sZWdhY3lfc3RyaW5nKCdhJykKKyAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIsIG5ld2xpbmU9JycpIGFzIGZpbGVvYmo6CisgICAgICAgICAgICB3cml0ZXIgPSBjc3Yud3JpdGVyKGZpbGVvYmopCisgICAgICAgICAgICB3cml0ZXIud3JpdGVyb3dzKFtbY11dKQorICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmoucmVhZCgpLCAiYVxyXG4iKQorCiAgICAgZGVmIF9yZWFkX3Rlc3Qoc2VsZiwgaW5wdXQsIGV4cGVjdCwgKiprd2FyZ3MpOgogICAgICAgICByZWFkZXIgPSBjc3YucmVhZGVyKGlucHV0LCAqKmt3YXJncykKICAgICAgICAgcmVzdWx0ID0gbGlzdChyZWFkZXIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CmluZGV4IDU4MTIxNDcuLmU5NTk2MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CkBAIC0yNjQsMTEgKzI2NCw1MyBAQAogICAgIGN1cnNlcy51bmdldGNoKDEwMjUpCiAgICAgc3Rkc2NyLmdldGtleSgpCiAKK2RlZiB0ZXN0X3VuZ2V0X3djaChzdGRzY3IpOgorICAgIGlmIG5vdCBoYXNhdHRyKGN1cnNlcywgJ3VuZ2V0X3djaCcpOgorICAgICAgICByZXR1cm4KKyAgICBlbmNvZGluZyA9IHN0ZHNjci5lbmNvZGluZworICAgIGZvciBjaCBpbiAoJ2EnLCAnXHhlOScsICdcdTIwYWMnLCAnXFUwMDEwRkZGRicpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaC5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjdXJzZXMudW5nZXRfd2NoKGNoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidW5nZXRfd2NoKCVhKSBmYWlsZWQgd2l0aCBlbmNvZGluZyAlczogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2gsIHN0ZHNjci5lbmNvZGluZywgZXJyKSkKKyAgICAgICAgcmVhZCA9IHN0ZHNjci5nZXRfd2NoKCkKKyAgICAgICAgaWYgcmVhZCAhPSBjaDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlciAhPSAlciIgJSAocmVhZCwgY2gpKQorCisgICAgICAgIGNvZGUgPSBvcmQoY2gpCisgICAgICAgIGN1cnNlcy51bmdldF93Y2goY29kZSkKKyAgICAgICAgcmVhZCA9IHN0ZHNjci5nZXRfd2NoKCkKKyAgICAgICAgaWYgcmVhZCAhPSBjaDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlciAhPSAlciIgJSAocmVhZCwgY2gpKQorCiBkZWYgdGVzdF9pc3N1ZTEwNTcwKCk6CiAgICAgYiA9IGN1cnNlcy50cGFybShjdXJzZXMudGlnZXRzdHIoImN1cCIpLCA1LCAzKQogICAgIGFzc2VydCB0eXBlKGIpIGlzIGJ5dGVzCiAgICAgY3Vyc2VzLnB1dHAoYikKIAorZGVmIHRlc3RfZW5jb2Rpbmcoc3Rkc2NyKToKKyAgICBpbXBvcnQgY29kZWNzCisgICAgZW5jb2RpbmcgPSBzdGRzY3IuZW5jb2RpbmcKKyAgICBjb2RlY3MubG9va3VwKGVuY29kaW5nKQorICAgIHRyeToKKyAgICAgICAgc3Rkc2NyLmVuY29kaW5nID0gMTAKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlR5cGVFcnJvciBub3QgcmFpc2VkIikKKyAgICBzdGRzY3IuZW5jb2RpbmcgPSBlbmNvZGluZworICAgIHRyeToKKyAgICAgICAgZGVsIHN0ZHNjci5lbmNvZGluZworICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVHlwZUVycm9yIG5vdCByYWlzZWQiKQorCiBkZWYgbWFpbihzdGRzY3IpOgogICAgIGN1cnNlcy5zYXZldHR5KCkKICAgICB0cnk6CkBAIC0yNzcsMTYgKzMxOSwxOCBAQAogICAgICAgICB0ZXN0X3VzZXJwdHJfd2l0aG91dF9zZXQoc3Rkc2NyKQogICAgICAgICB0ZXN0X3Jlc2l6ZV90ZXJtKHN0ZHNjcikKICAgICAgICAgdGVzdF9pc3N1ZTYyNDMoc3Rkc2NyKQorICAgICAgICB0ZXN0X3VuZ2V0X3djaChzdGRzY3IpCiAgICAgICAgIHRlc3RfaXNzdWUxMDU3MCgpCisgICAgICAgIHRlc3RfZW5jb2Rpbmcoc3Rkc2NyKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGN1cnNlcy5yZXNldHR5KCkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGlmIG5vdCBzeXMuc3Rkb3V0LmlzYXR0eSgpOgotICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic3lzLnN0ZG91dCBpcyBub3QgYSB0dHkiKQorICAgIGlmIG5vdCBzeXMuX19zdGRvdXRfXy5pc2F0dHkoKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5cy5fX3N0ZG91dF9fIGlzIG5vdCBhIHR0eSIpCiAgICAgIyB0ZXN0aW5nIHNldHVwdGVybSgpIGluc2lkZSBpbml0c2NyL2VuZHdpbgogICAgICMgY2F1c2VzIHRlcm1pbmFsIGJyZWFrYWdlCi0gICAgY3Vyc2VzLnNldHVwdGVybShmZD1zeXMuc3Rkb3V0LmZpbGVubygpKQorICAgIGN1cnNlcy5zZXR1cHRlcm0oZmQ9c3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkpCiAgICAgdHJ5OgogICAgICAgICBzdGRzY3IgPSBjdXJzZXMuaW5pdHNjcigpCiAgICAgICAgIG1haW4oc3Rkc2NyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkgYi9MaWIvdGVzdC90ZXN0X2RibS5weQppbmRleCAyNmQ0YzE0Li4wMmRmN2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibS5weQpAQCAtNzEsOCArNzEsOCBAQAogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2FueWRibV9jcmVhdGlvbl9uX2ZpbGVfZXhpc3RzX3dpdGhfaW52YWxpZF9jb250ZW50cyhzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKF9mbmFtZSwgInciKSBhcyB3OgotICAgICAgICAgICAgcGFzcyAjIGNyZWF0ZSBhbiBlbXB0eSBmaWxlCisgICAgICAgICMgY3JlYXRlIGFuIGVtcHR5IGZpbGUKKyAgICAgICAgdGVzdC5zdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKF9mbmFtZSkKIAogICAgICAgICBmID0gZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmLmNsb3NlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDMwZDM5NzEuLjM3NjM3ZDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTE2LDcgKzE2LDcgQEAKIAogQ293bGlzaGF3J3MgdGVzdHMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKIAotICAgd3d3Mi5odXJzbGV5LmlibS5jb20vZGVjaW1hbC9kZWN0ZXN0LnppcAorICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY3Rlc3QuemlwCiAKIFRoaXMgdGVzdCBtb2R1bGUgY2FuIGJlIGNhbGxlZCBmcm9tIGNvbW1hbmQgbGluZSB3aXRoIG9uZSBwYXJhbWV0ZXIgKEFyaXRobWV0aWMKIG9yIEJlaGF2aW91cikgdG8gdGVzdCBlYWNoIHBhcnQsIG9yIHdpdGhvdXQgcGFyYW1ldGVyIHRvIHRlc3QgYm90aCBwYXJ0cy4gSWYKQEAgLTMwLDM3ICszMCw4MSBAQAogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgcGlja2xlLCBjb3B5CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gZGVjaW1hbCBpbXBvcnQgKgogaW1wb3J0IG51bWJlcnMKK2ltcG9ydCBsb2NhbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBydW5fZG9jdGVzdCwgaXNfcmVzb3VyY2VfZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfSUVFRV83NTQpCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2hlY2tfd2FybmluZ3MsIGltcG9ydF9mcmVzaF9tb2R1bGUsIFRlc3RGYWlsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl93aXRoX2xvY2FsZSwgY3B5dGhvbl9vbmx5KQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHRpbWUKK2ltcG9ydCB3YXJuaW5ncwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKLSMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKLVNpZ25hbHMgPSB0dXBsZShnZXRjb250ZXh0KCkuZmxhZ3Mua2V5cygpKQogCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCitvcmlnX3N5c19kZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisjIGZyYWN0aW9ucyBtb2R1bGUgbXVzdCBpbXBvcnQgdGhlIGNvcnJlY3QgZGVjaW1hbCBtb2R1bGUuCitjZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCitwZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCitmcmFjdGlvbnMgPSB7QzpjZnJhY3Rpb25zLCBQOnBmcmFjdGlvbnN9CitzeXMubW9kdWxlc1snZGVjaW1hbCddID0gb3JpZ19zeXNfZGVjaW1hbAorCisKKyMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKK1NpZ25hbHMgPSB7CisgIEM6IHR1cGxlKEMuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IHR1cGxlKFAuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkKK30KICMgU2lnbmFscyBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBwcmVjZWRlbmNlOiB3aGVuIGFuIG9wZXJhdGlvbgogIyBwcm9kdWNlcyBtdWx0aXBsZSBzaWduYWxzLCBzaWduYWxzIG9jY3VycmluZyBsYXRlciBpbiB0aGUgbGlzdAogIyBzaG91bGQgYmUgaGFuZGxlZCBiZWZvcmUgdGhvc2Ugb2NjdXJyaW5nIGVhcmxpZXIgaW4gdGhlIGxpc3QuCi1PcmRlcmVkU2lnbmFscyA9IChDbGFtcGVkLCBSb3VuZGVkLCBJbmV4YWN0LCBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICAgICBVbmRlcmZsb3csIE92ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbikKK09yZGVyZWRTaWduYWxzID0geworICBDOiBbQy5DbGFtcGVkLCBDLlJvdW5kZWQsIEMuSW5leGFjdCwgQy5TdWJub3JtYWwsIEMuVW5kZXJmbG93LAorICAgICAgQy5PdmVyZmxvdywgQy5EaXZpc2lvbkJ5WmVybywgQy5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgQy5GbG9hdE9wZXJhdGlvbl0gaWYgQyBlbHNlIE5vbmUsCisgIFA6IFtQLkNsYW1wZWQsIFAuUm91bmRlZCwgUC5JbmV4YWN0LCBQLlN1Ym5vcm1hbCwgUC5VbmRlcmZsb3csCisgICAgICBQLk92ZXJmbG93LCBQLkRpdmlzaW9uQnlaZXJvLCBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICBQLkZsb2F0T3BlcmF0aW9uXQorfQorZGVmIGFzc2VydF9zaWduYWxzKGNscywgY29udGV4dCwgYXR0ciwgZXhwZWN0ZWQpOgorICAgIGQgPSBnZXRhdHRyKGNvbnRleHQsIGF0dHIpCisgICAgY2xzLmFzc2VydFRydWUoYWxsKGRbc10gaWYgcyBpbiBleHBlY3RlZCBlbHNlIG5vdCBkW3NdIGZvciBzIGluIGQpKQorCitST1VORF9VUCA9IFAuUk9VTkRfVVAKK1JPVU5EX0RPV04gPSBQLlJPVU5EX0RPV04KK1JPVU5EX0NFSUxJTkcgPSBQLlJPVU5EX0NFSUxJTkcKK1JPVU5EX0ZMT09SID0gUC5ST1VORF9GTE9PUgorUk9VTkRfSEFMRl9VUCA9IFAuUk9VTkRfSEFMRl9VUAorUk9VTkRfSEFMRl9ET1dOID0gUC5ST1VORF9IQUxGX0RPV04KK1JPVU5EX0hBTEZfRVZFTiA9IFAuUk9VTkRfSEFMRl9FVkVOCitST1VORF8wNVVQID0gUC5ST1VORF8wNVVQCisKK1JvdW5kaW5nTW9kZXMgPSBbCisgIFJPVU5EX1VQLCBST1VORF9ET1dOLCBST1VORF9DRUlMSU5HLCBST1VORF9GTE9PUiwKKyAgUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9ET1dOLCBST1VORF9IQUxGX0VWRU4sCisgIFJPVU5EXzA1VVAKK10KIAogIyBUZXN0cyBhcmUgYnVpbHQgYXJvdW5kIHRoZXNlIGFzc3VtZWQgY29udGV4dCBkZWZhdWx0cy4KICMgdGVzdF9tYWluKCkgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGNvbnRleHQuCi1kZWYgaW5pdCgpOgotICAgIGdsb2JhbCBPUklHSU5BTF9DT05URVhUCi0gICAgT1JJR0lOQUxfQ09OVEVYVCA9IGdldGNvbnRleHQoKS5jb3B5KCkKLSAgICBEZWZhdWx0VGVzdENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjID0gOSwKLSAgICAgICAgcm91bmRpbmcgPSBST1VORF9IQUxGX0VWRU4sCi0gICAgICAgIHRyYXBzID0gZGljdC5mcm9ta2V5cyhTaWduYWxzLCAwKQotICAgICAgICApCi0gICAgc2V0Y29udGV4dChEZWZhdWx0VGVzdENvbnRleHQpCitPUklHSU5BTF9DT05URVhUID0geworICBDOiBDLmdldGNvbnRleHQoKS5jb3B5KCkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IFAuZ2V0Y29udGV4dCgpLmNvcHkoKQorfQorZGVmIGluaXQobSk6CisgICAgaWYgbm90IG06IHJldHVybgorICAgIERlZmF1bHRUZXN0Q29udGV4dCA9IG0uQ29udGV4dCgKKyAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9ZGljdC5mcm9ta2V5cyhTaWduYWxzW21dLCAwKQorICAgICkKKyAgICBtLnNldGNvbnRleHQoRGVmYXVsdFRlc3RDb250ZXh0KQogCiBURVNUREFUQURJUiA9ICdkZWNpbWFsdGVzdGRhdGEnCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpAQCAtNzIsMTQ5ICsxMTYsMTc1IEBACiAKIHNraXBfZXhwZWN0ZWQgPSBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpCiAKLSMgbGlzdCBvZiBpbmRpdmlkdWFsIC5kZWNUZXN0IHRlc3QgaWRzIHRoYXQgY29ycmVzcG9uZCB0byB0ZXN0cyB0aGF0Ci0jIHdlJ3JlIHNraXBwaW5nIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIuCi1za2lwcGVkX3Rlc3RfaWRzID0gc2V0KFsKLSAgICAjIFNraXAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc2NhbGViIHRlc3RzLgotICAgICdzY2J4MTY0JywKLSAgICAnc2NieDE2NScsCi0KLSAgICAjIEZvciBzb21lIG9wZXJhdGlvbnMgKGN1cnJlbnRseSBleHAsIGxuLCBsb2cxMCwgcG93ZXIpLCB0aGUgZGVjTnVtYmVyCi0gICAgIyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW1wb3NlcyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBvbiB0aGUgY29udGV4dAotICAgICMgYW5kIG9wZXJhbmRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbjsKLSAgICAjIGhvd2V2ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGRvZXMgc2hvdyB1cCBpbiBzb21lIG9mIHRoZQotICAgICMgdGVzdGNhc2VzLiAgV2Ugc2tpcCB0ZXN0Y2FzZXMgdGhhdCB2aW9sYXRlIHRoZXNlIHJlc3RyaWN0aW9ucywgc2luY2UKLSAgICAjIERlY2ltYWwgYmVoYXZlcyBkaWZmZXJlbnRseSBmcm9tIGRlY051bWJlciBmb3IgdGhlc2UgdGVzdGNhc2VzIHNvIHRoZXNlCi0gICAgIyB0ZXN0Y2FzZXMgd291bGQgb3RoZXJ3aXNlIGZhaWwuCi0gICAgJ2V4cHg5MDEnLAotICAgICdleHB4OTAyJywKLSAgICAnZXhweDkwMycsCi0gICAgJ2V4cHg5MDUnLAotICAgICdsbng5MDEnLAotICAgICdsbng5MDInLAotICAgICdsbng5MDMnLAotICAgICdsbng5MDUnLAotICAgICdsb2d4OTAxJywKLSAgICAnbG9neDkwMicsCi0gICAgJ2xvZ3g5MDMnLAotICAgICdsb2d4OTA1JywKLSAgICAncG93eDExODMnLAotICAgICdwb3d4MTE4NCcsCi0gICAgJ3Bvd3g0MDAxJywKLSAgICAncG93eDQwMDInLAotICAgICdwb3d4NDAwMycsCi0gICAgJ3Bvd3g0MDA1JywKLSAgICAncG93eDQwMDgnLAotICAgICdwb3d4NDAxMCcsCi0gICAgJ3Bvd3g0MDEyJywKLSAgICAncG93eDQwMTQnLAotICAgIF0pCi0KICMgTWFrZSBzdXJlIGl0IGFjdHVhbGx5IHJhaXNlcyBlcnJvcnMgd2hlbiBub3QgZXhwZWN0ZWQgYW5kIGNhdWdodCBpbiBmbGFncwogIyBTbG93ZXIsIHNpbmNlIGl0IHJ1bnMgc29tZSB0aGluZ3Mgc2V2ZXJhbCB0aW1lcy4KIEVYVEVOREVERVJST1JURVNUID0gRmFsc2UKIAotI01hcCB0aGUgdGVzdCBjYXNlcycgZXJyb3IgbmFtZXMgdG8gdGhlIGFjdHVhbCBlcnJvcnMKLUVycm9yTmFtZXMgPSB7J2NsYW1wZWQnIDogQ2xhbXBlZCwKLSAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdkaXZpc2lvbl9ieV96ZXJvJyA6IERpdmlzaW9uQnlaZXJvLAotICAgICAgICAgICAgICAnZGl2aXNpb25faW1wb3NzaWJsZScgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdpbmV4YWN0JyA6IEluZXhhY3QsCi0gICAgICAgICAgICAgICdpbnZhbGlkX2NvbnRleHQnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdvdmVyZmxvdycgOiBPdmVyZmxvdywKLSAgICAgICAgICAgICAgJ3JvdW5kZWQnIDogUm91bmRlZCwKLSAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICd1bmRlcmZsb3cnIDogVW5kZXJmbG93fQorIyBUZXN0IGV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIEMgdmVyc2lvbiAoLURFWFRSQV9GVU5DVElPTkFMSVRZKS4KK0VYVFJBX0ZVTkNUSU9OQUxJVFkgPSBUcnVlIGlmIGhhc2F0dHIoQywgJ0RlY0NsYW1wZWQnKSBlbHNlIEZhbHNlCityZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5ID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgRVhUUkFfRlVOQ1RJT05BTElUWSwgInRlc3QgcmVxdWlyZXMgYnVpbGQgd2l0aCAtREVYVFJBX0ZVTkNUSU9OQUxJVFkiKQorc2tpcF9pZl9leHRyYV9mdW5jdGlvbmFsaXR5ID0gdW5pdHRlc3Quc2tpcElmKAorICBFWFRSQV9GVU5DVElPTkFMSVRZLCAidGVzdCByZXF1aXJlcyByZWd1bGFyIGJ1aWxkIikKIAogCi1kZWYgTm9uZnVuY3Rpb24oKmFyZ3MpOgotICAgICIiIkRvZXNuJ3QgZG8gYW55dGhpbmcuIiIiCi0gICAgcmV0dXJuIE5vbmUKK2NsYXNzIElCTVRlc3RDYXNlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQ2xhc3Mgd2hpY2ggdGVzdHMgdGhlIERlY2ltYWwgY2xhc3MgYWdhaW5zdCB0aGUgSUJNIHRlc3QgY2FzZXMuIiIiCiAKLVJvdW5kaW5nRGljdCA9IHsnY2VpbGluZycgOiBST1VORF9DRUlMSU5HLCAjTWFwcyB0ZXN0LWNhc2UgbmFtZXMgdG8gcm91bmRpbmdzLgotICAgICAgICAgICAgICAgICdkb3duJyA6IFJPVU5EX0RPV04sCi0gICAgICAgICAgICAgICAgJ2Zsb29yJyA6IFJPVU5EX0ZMT09SLAotICAgICAgICAgICAgICAgICdoYWxmX2Rvd24nIDogUk9VTkRfSEFMRl9ET1dOLAotICAgICAgICAgICAgICAgICdoYWxmX2V2ZW4nIDogUk9VTkRfSEFMRl9FVkVOLAotICAgICAgICAgICAgICAgICdoYWxmX3VwJyA6IFJPVU5EX0hBTEZfVVAsCi0gICAgICAgICAgICAgICAgJ3VwJyA6IFJPVU5EX1VQLAotICAgICAgICAgICAgICAgICcwNXVwJyA6IFJPVU5EXzA1VVB9Ci0KLSMgTmFtZSBhZGFwdGVyIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBEZWNpbWFsIGFuZCBDb250ZXh0Ci0jIGludGVyZmFjZSB3aXRob3V0IGNoYW5naW5nIHRoZSB0ZXN0IGZpbGVzIGZyb20gQ293bGlzaGF3Ci1uYW1lQWRhcHRlciA9IHsnYW5kJzonbG9naWNhbF9hbmQnLAotICAgICAgICAgICAgICAgJ2FwcGx5JzonX2FwcGx5JywKLSAgICAgICAgICAgICAgICdjbGFzcyc6J251bWJlcl9jbGFzcycsCi0gICAgICAgICAgICAgICAnY29tcGFyZXNpZyc6J2NvbXBhcmVfc2lnbmFsJywKLSAgICAgICAgICAgICAgICdjb21wYXJldG90YWwnOidjb21wYXJlX3RvdGFsJywKLSAgICAgICAgICAgICAgICdjb21wYXJldG90bWFnJzonY29tcGFyZV90b3RhbF9tYWcnLAotICAgICAgICAgICAgICAgJ2NvcHknOidjb3B5X2RlY2ltYWwnLAotICAgICAgICAgICAgICAgJ2NvcHlhYnMnOidjb3B5X2FicycsCi0gICAgICAgICAgICAgICAnY29weW5lZ2F0ZSc6J2NvcHlfbmVnYXRlJywKLSAgICAgICAgICAgICAgICdjb3B5c2lnbic6J2NvcHlfc2lnbicsCi0gICAgICAgICAgICAgICAnZGl2aWRlaW50JzonZGl2aWRlX2ludCcsCi0gICAgICAgICAgICAgICAnaW52ZXJ0JzonbG9naWNhbF9pbnZlcnQnLAotICAgICAgICAgICAgICAgJ2lzY2Fub25pY2FsJzonaXNfY2Fub25pY2FsJywKLSAgICAgICAgICAgICAgICdpc2Zpbml0ZSc6J2lzX2Zpbml0ZScsCi0gICAgICAgICAgICAgICAnaXNpbmZpbml0ZSc6J2lzX2luZmluaXRlJywKLSAgICAgICAgICAgICAgICdpc25hbic6J2lzX25hbicsCi0gICAgICAgICAgICAgICAnaXNub3JtYWwnOidpc19ub3JtYWwnLAotICAgICAgICAgICAgICAgJ2lzcW5hbic6J2lzX3FuYW4nLAotICAgICAgICAgICAgICAgJ2lzc2lnbmVkJzonaXNfc2lnbmVkJywKLSAgICAgICAgICAgICAgICdpc3NuYW4nOidpc19zbmFuJywKLSAgICAgICAgICAgICAgICdpc3N1Ym5vcm1hbCc6J2lzX3N1Ym5vcm1hbCcsCi0gICAgICAgICAgICAgICAnaXN6ZXJvJzonaXNfemVybycsCi0gICAgICAgICAgICAgICAnbWF4bWFnJzonbWF4X21hZycsCi0gICAgICAgICAgICAgICAnbWlubWFnJzonbWluX21hZycsCi0gICAgICAgICAgICAgICAnbmV4dG1pbnVzJzonbmV4dF9taW51cycsCi0gICAgICAgICAgICAgICAnbmV4dHBsdXMnOiduZXh0X3BsdXMnLAotICAgICAgICAgICAgICAgJ25leHR0b3dhcmQnOiduZXh0X3Rvd2FyZCcsCi0gICAgICAgICAgICAgICAnb3InOidsb2dpY2FsX29yJywKLSAgICAgICAgICAgICAgICdyZWR1Y2UnOidub3JtYWxpemUnLAotICAgICAgICAgICAgICAgJ3JlbWFpbmRlcm5lYXInOidyZW1haW5kZXJfbmVhcicsCi0gICAgICAgICAgICAgICAnc2FtZXF1YW50dW0nOidzYW1lX3F1YW50dW0nLAotICAgICAgICAgICAgICAgJ3NxdWFyZXJvb3QnOidzcXJ0JywKLSAgICAgICAgICAgICAgICd0b2VuZyc6J3RvX2VuZ19zdHJpbmcnLAotICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWwnOid0b19pbnRlZ3JhbF92YWx1ZScsCi0gICAgICAgICAgICAgICAndG9pbnRlZ3JhbHgnOid0b19pbnRlZ3JhbF9leGFjdCcsCi0gICAgICAgICAgICAgICAndG9zY2knOid0b19zY2lfc3RyaW5nJywKLSAgICAgICAgICAgICAgICd4b3InOidsb2dpY2FsX3hvcicsCi0gICAgICAgICAgICAgIH0KLQotIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gVHJ1ZS9GYWxzZSByYXRoZXIgdGhhbiBhIERlY2ltYWwgaW5zdGFuY2UKLQotTE9HSUNBTF9GVU5DVElPTlMgPSAoCi0gICAgJ2lzX2Nhbm9uaWNhbCcsCi0gICAgJ2lzX2Zpbml0ZScsCi0gICAgJ2lzX2luZmluaXRlJywKLSAgICAnaXNfbmFuJywKLSAgICAnaXNfbm9ybWFsJywKLSAgICAnaXNfcW5hbicsCi0gICAgJ2lzX3NpZ25lZCcsCi0gICAgJ2lzX3NuYW4nLAotICAgICdpc19zdWJub3JtYWwnLAotICAgICdpc196ZXJvJywKLSAgICAnc2FtZV9xdWFudHVtJywKLSAgICApCi0KLWNsYXNzIERlY2ltYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJDbGFzcyB3aGljaCB0ZXN0cyB0aGUgRGVjaW1hbCBjbGFzcyBhZ2FpbnN0IHRoZSB0ZXN0IGNhc2VzLgotCi0gICAgQ2hhbmdlZCBmb3IgdW5pdHRlc3QuCi0gICAgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5jb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQorICAgICAgICBzZWxmLnJlYWRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQogICAgICAgICBzZWxmLmlnbm9yZV9saXN0ID0gWycjJ10KLSAgICAgICAgIyBCYXNpY2FsbHksIGEgIyBtZWFucyByZXR1cm4gTmFOIEludmFsaWRPcGVyYXRpb24uCi0gICAgICAgICMgRGlmZmVyZW50IGZyb20gYSBzTmFOIGluIHRyaW0KIAorICAgICAgICAjIExpc3Qgb2YgaW5kaXZpZHVhbCAuZGVjVGVzdCB0ZXN0IGlkcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGVzdHMgdGhhdAorICAgICAgICAjIHdlJ3JlIHNraXBwaW5nIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIuCisgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcyA9IHNldChbCisgICAgICAgICAgICAjIFNraXAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc2NhbGViIHRlc3RzLgorICAgICAgICAgICAgJ3NjYngxNjQnLAorICAgICAgICAgICAgJ3NjYngxNjUnLAorCisgICAgICAgICAgICAjIEZvciBzb21lIG9wZXJhdGlvbnMgKGN1cnJlbnRseSBleHAsIGxuLCBsb2cxMCwgcG93ZXIpLCB0aGUgZGVjTnVtYmVyCisgICAgICAgICAgICAjIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbXBvc2VzIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRoZSBjb250ZXh0CisgICAgICAgICAgICAjIGFuZCBvcGVyYW5kcy4gIFRoZXNlIHJlc3RyaWN0aW9ucyBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb247CisgICAgICAgICAgICAjIGhvd2V2ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGRvZXMgc2hvdyB1cCBpbiBzb21lIG9mIHRoZQorICAgICAgICAgICAgIyB0ZXN0Y2FzZXMuICBXZSBza2lwIHRlc3RjYXNlcyB0aGF0IHZpb2xhdGUgdGhlc2UgcmVzdHJpY3Rpb25zLCBzaW5jZQorICAgICAgICAgICAgIyBEZWNpbWFsIGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSBkZWNOdW1iZXIgZm9yIHRoZXNlIHRlc3RjYXNlcyBzbyB0aGVzZQorICAgICAgICAgICAgIyB0ZXN0Y2FzZXMgd291bGQgb3RoZXJ3aXNlIGZhaWwuCisgICAgICAgICAgICAnZXhweDkwMScsCisgICAgICAgICAgICAnZXhweDkwMicsCisgICAgICAgICAgICAnZXhweDkwMycsCisgICAgICAgICAgICAnZXhweDkwNScsCisgICAgICAgICAgICAnbG54OTAxJywKKyAgICAgICAgICAgICdsbng5MDInLAorICAgICAgICAgICAgJ2xueDkwMycsCisgICAgICAgICAgICAnbG54OTA1JywKKyAgICAgICAgICAgICdsb2d4OTAxJywKKyAgICAgICAgICAgICdsb2d4OTAyJywKKyAgICAgICAgICAgICdsb2d4OTAzJywKKyAgICAgICAgICAgICdsb2d4OTA1JywKKyAgICAgICAgICAgICdwb3d4MTE4MycsCisgICAgICAgICAgICAncG93eDExODQnLAorICAgICAgICAgICAgJ3Bvd3g0MDAxJywKKyAgICAgICAgICAgICdwb3d4NDAwMicsCisgICAgICAgICAgICAncG93eDQwMDMnLAorICAgICAgICAgICAgJ3Bvd3g0MDA1JywKKyAgICAgICAgICAgICdwb3d4NDAwOCcsCisgICAgICAgICAgICAncG93eDQwMTAnLAorICAgICAgICAgICAgJ3Bvd3g0MDEyJywKKyAgICAgICAgICAgICdwb3d4NDAxNCcsCisgICAgICAgICAgICBdKQorCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDOgorICAgICAgICAgICAgIyBzdGF0dXMgaGFzIGFkZGl0aW9uYWwgU3Vibm9ybWFsLCBVbmRlcmZsb3cKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3c3g4MDMnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdzeDgwNScpCisgICAgICAgICAgICAjIENvcnJlY3Qgcm91bmRpbmcgKHNraXBwZWQgZm9yIGRlY051bWJlciwgdG9vKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzMDInKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzMDMnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzNDInKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzNDMnKQorICAgICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNzA0OQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdteDMyNScpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd214MzI2JykKKworICAgICAgICAjIE1hcCB0ZXN0IGRpcmVjdGl2ZXMgdG8gc2V0dGVyIGZ1bmN0aW9ucy4KICAgICAgICAgc2VsZi5DaGFuZ2VEaWN0ID0geydwcmVjaXNpb24nIDogc2VsZi5jaGFuZ2VfcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZycgOiBzZWxmLmNoYW5nZV9yb3VuZGluZ19tZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgJ21heGV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21heF9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAnbWluZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWluX2V4cG9uZW50LAotICAgICAgICAgICAgICAgICAgICAgICdjbGFtcCcgOiBzZWxmLmNoYW5nZV9jbGFtcH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZycgOiBzZWxmLmNoYW5nZV9yb3VuZGluZ19tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4ZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWF4X2V4cG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbmV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21pbl9leHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFtcCcgOiBzZWxmLmNoYW5nZV9jbGFtcH0KKworICAgICAgICAjIE5hbWUgYWRhcHRlciB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgRGVjaW1hbCBhbmQgQ29udGV4dAorICAgICAgICAjIGludGVyZmFjZSB3aXRob3V0IGNoYW5naW5nIHRoZSB0ZXN0IGZpbGVzIGZyb20gQ293bGlzaGF3LgorICAgICAgICBzZWxmLk5hbWVBZGFwdGVyID0geydhbmQnOidsb2dpY2FsX2FuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGx5JzonX2FwcGx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MnOidudW1iZXJfY2xhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJlc2lnJzonY29tcGFyZV9zaWduYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJldG90YWwnOidjb21wYXJlX3RvdGFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXRvdG1hZyc6J2NvbXBhcmVfdG90YWxfbWFnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weSc6J2NvcHlfZGVjaW1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlhYnMnOidjb3B5X2FicycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHluZWdhdGUnOidjb3B5X25lZ2F0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlzaWduJzonY29weV9zaWduJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aWRlaW50JzonZGl2aWRlX2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmVydCc6J2xvZ2ljYWxfaW52ZXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNjYW5vbmljYWwnOidpc19jYW5vbmljYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc2Zpbml0ZSc6J2lzX2Zpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzaW5maW5pdGUnOidpc19pbmZpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzbmFuJzonaXNfbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNub3JtYWwnOidpc19ub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3FuYW4nOidpc19xbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzaWduZWQnOidpc19zaWduZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3NuYW4nOidpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzdWJub3JtYWwnOidpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3plcm8nOidpc196ZXJvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4bWFnJzonbWF4X21hZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbm1hZyc6J21pbl9tYWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0bWludXMnOiduZXh0X21pbnVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dHBsdXMnOiduZXh0X3BsdXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0dG93YXJkJzonbmV4dF90b3dhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcic6J2xvZ2ljYWxfb3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWR1Y2UnOidub3JtYWxpemUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJuZWFyJzoncmVtYWluZGVyX25lYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1lcXVhbnR1bSc6J3NhbWVfcXVhbnR1bScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NxdWFyZXJvb3QnOidzcXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9lbmcnOid0b19lbmdfc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9pbnRlZ3JhbCc6J3RvX2ludGVncmFsX3ZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9pbnRlZ3JhbHgnOid0b19pbnRlZ3JhbF9leGFjdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rvc2NpJzondG9fc2NpX3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hvcic6J2xvZ2ljYWxfeG9yJ30KKworICAgICAgICAjIE1hcCB0ZXN0LWNhc2UgbmFtZXMgdG8gcm91bmRpbmdzLgorICAgICAgICBzZWxmLlJvdW5kaW5nRGljdCA9IHsnY2VpbGluZycgOiBST1VORF9DRUlMSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG93bicgOiBST1VORF9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvb3InIDogUk9VTkRfRkxPT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWxmX2Rvd24nIDogUk9VTkRfSEFMRl9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFsZl9ldmVuJyA6IFJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbGZfdXAnIDogUk9VTkRfSEFMRl9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwJyA6IFJPVU5EX1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMDV1cCcgOiBST1VORF8wNVVQfQorCisgICAgICAgICMgTWFwIHRoZSB0ZXN0IGNhc2VzJyBlcnJvciBuYW1lcyB0byB0aGUgYWN0dWFsIGVycm9ycy4KKyAgICAgICAgc2VsZi5FcnJvck5hbWVzID0geydjbGFtcGVkJyA6IHNlbGYuZGVjaW1hbC5DbGFtcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2J5X3plcm8nIDogc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2ltcG9zc2libGUnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZXhhY3QnIDogc2VsZi5kZWNpbWFsLkluZXhhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZF9jb250ZXh0JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JyA6IHNlbGYuZGVjaW1hbC5PdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGVkJyA6IHNlbGYuZGVjaW1hbC5Sb3VuZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBzZWxmLmRlY2ltYWwuU3Vibm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyZmxvdycgOiBzZWxmLmRlY2ltYWwuVW5kZXJmbG93fQorCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIFRydWUvRmFsc2UgcmF0aGVyIHRoYW4gYQorICAgICAgICAjIERlY2ltYWwgaW5zdGFuY2UuCisgICAgICAgIHNlbGYuTG9naWNhbEZ1bmN0aW9ucyA9ICgnaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2luZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19uYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX25vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfcW5hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3plcm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbWVfcXVhbnR1bScpCisKKyAgICBkZWYgcmVhZF91bmxpbWl0ZWQoc2VsZiwgdiwgY29udGV4dCk6CisgICAgICAgICIiIldvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgMzItYml0IF9kZWNpbWFsIHZlcnNpb24uIFRoZQorICAgICAgICAgICBndWFyYW50ZWVkIG1heGltdW0gdmFsdWVzIGZvciBwcmVjLCBFbWF4IGV0Yy4gYXJlIDQyNTAwMDAwMCwKKyAgICAgICAgICAgYnV0IGhpZ2hlciB2YWx1ZXMgdXN1YWxseSB3b3JrLCBleGNlcHQgZm9yIHJhcmUgY29ybmVyIGNhc2VzLgorICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBhbGwgb2YgdGhlIElCTSB0ZXN0cyBwYXNzIHdpdGggbWF4aW11bSB2YWx1ZXMKKyAgICAgICAgICAgb2YgMTA3MDAwMDAwMC4iIiIKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfRU1BWCA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLnJlYWRjb250ZXh0Ll91bnNhZmVfc2V0cHJlYygxMDcwMDAwMDAwKQorICAgICAgICAgICAgc2VsZi5yZWFkY29udGV4dC5fdW5zYWZlX3NldGVtYXgoMTA3MDAwMDAwMCkKKyAgICAgICAgICAgIHNlbGYucmVhZGNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKC0xMDcwMDAwMDAwKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY2ltYWwuRGVjaW1hbCh2LCBjb250ZXh0KQogCiAgICAgZGVmIGV2YWxfZmlsZShzZWxmLCBmaWxlKToKICAgICAgICAgZ2xvYmFsIHNraXBfZXhwZWN0ZWQKQEAgLTIyNyw3ICsyOTcsNyBAQAogICAgICAgICAgICAgICAgICNwcmludCBsaW5lCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0ID0gc2VsZi5ldmFsX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRGVjaW1hbEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgI0V4Y2VwdGlvbiByYWlzZWQgd2hlcmUgdGhlcmUgc2hvdWxkbid0IGhhdmUgYmVlbiBvbmUuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICInK2V4Y2VwdGlvbi5fX2NsYXNzX18uX19uYW1lX18gKyAnIiByYWlzZWQgb24gbGluZSAnK2xpbmUpCiAKQEAgLTI1NCwyMyArMzI0LDIzIEBACiAgICAgZGVmIGV2YWxfZGlyZWN0aXZlKHNlbGYsIHMpOgogICAgICAgICBmdW5jdCwgdmFsdWUgPSAoeC5zdHJpcCgpLmxvd2VyKCkgZm9yIHggaW4gcy5zcGxpdCgnOicpKQogICAgICAgICBpZiBmdW5jdCA9PSAncm91bmRpbmcnOgotICAgICAgICAgICAgdmFsdWUgPSBSb3VuZGluZ0RpY3RbdmFsdWVdCisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuUm91bmRpbmdEaWN0W3ZhbHVlXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgTm9uZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgKGxhbWJkYSAqYXJnczogTm9uZSkpCiAgICAgICAgIGZ1bmN0KHZhbHVlKQogCiAgICAgZGVmIGV2YWxfZXF1YXRpb24oc2VsZiwgcyk6Ci0gICAgICAgICNnbG9iYWwgREVGQVVMVF9QUkVDSVNJT04KLSAgICAgICAgI3ByaW50IERFRkFVTFRfUFJFQ0lTSU9OCiAKICAgICAgICAgaWYgbm90IFRFU1RfQUxMIGFuZCByYW5kb20ucmFuZG9tKCkgPCAwLjkwOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgc2VsZi5jb250ZXh0LmNsZWFyX2ZsYWdzKCkKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBTaWRlcyA9IHMuc3BsaXQoJy0+JykKICAgICAgICAgICAgIEwgPSBTaWRlc1swXS5zdHJpcCgpLnNwbGl0KCkKQEAgLTI4MywyNiArMzUzLDI2IEBACiAgICAgICAgICAgICBhbnMgPSBMWzBdCiAgICAgICAgICAgICBleGNlcHRpb25zID0gTFsxOl0KICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBJbmRleEVycm9yKToKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCiAgICAgICAgIGRlZiBGaXhRdW90ZXModmFsKToKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInJyIsICdTaW5nbGVRdW90ZScpLnJlcGxhY2UoJyIiJywgJ0RvdWJsZVF1b3RlJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInIiwgJycpLnJlcGxhY2UoJyInLCAnJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCdTaW5nbGVRdW90ZScsICInIikucmVwbGFjZSgnRG91YmxlUXVvdGUnLCAnIicpCiAgICAgICAgICAgICByZXR1cm4gdmFsCiAKLSAgICAgICAgaWYgaWQgaW4gc2tpcHBlZF90ZXN0X2lkczoKKyAgICAgICAgaWYgaWQgaW4gc2VsZi5za2lwcGVkX3Rlc3RfaWRzOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgZm5hbWUgPSBuYW1lQWRhcHRlci5nZXQoZnVuY3QsIGZ1bmN0KQorICAgICAgICBmbmFtZSA9IHNlbGYuTmFtZUFkYXB0ZXIuZ2V0KGZ1bmN0LCBmdW5jdCkKICAgICAgICAgaWYgZm5hbWUgPT0gJ3Jlc2NhbGUnOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGZ1bmN0ID0gZ2V0YXR0cihzZWxmLmNvbnRleHQsIGZuYW1lKQogICAgICAgICB2YWxzID0gW10KICAgICAgICAgY29uZ2xvbWVyYXRlID0gJycKICAgICAgICAgcXVvdGUgPSAwCi0gICAgICAgIHRoZWlyZXhjZXB0aW9ucyA9IFtFcnJvck5hbWVzW3gubG93ZXIoKV0gZm9yIHggaW4gZXhjZXB0aW9uc10KKyAgICAgICAgdGhlaXJleGNlcHRpb25zID0gW3NlbGYuRXJyb3JOYW1lc1t4Lmxvd2VyKCldIGZvciB4IGluIGV4Y2VwdGlvbnNdCiAKLSAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBTaWduYWxzOgorICAgICAgICBmb3IgZXhjZXB0aW9uIGluIFNpZ25hbHNbc2VsZi5kZWNpbWFsXToKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMSAjQ2F0Y2ggdGhlc2UgYnVncy4uLgogICAgICAgICBmb3IgZXhjZXB0aW9uIGluIHRoZWlyZXhjZXB0aW9uczoKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMApAQCAtMzI0LDcgKzM5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Qoc2VsZi5jb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHYpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLCBzLCBlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzMyLDcgKzQwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXJyb3JdID0gMAogICAgICAgICAgICAgICAgIHYgPSBzZWxmLmNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IERlY2ltYWwodiwgc2VsZi5jb250ZXh0KQorICAgICAgICAgICAgICAgIHYgPSBzZWxmLnJlYWRfdW5saW1pdGVkKHYsIHNlbGYuY29udGV4dCkKICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHYpCiAKICAgICAgICAgYW5zID0gRml4UXVvdGVzKGFucykKQEAgLTM0NCw3ICs0MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNTIsMTQgKzQyMiwxNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAwCiAKICAgICAgICAgICAgICMgYXMgYWJvdmUsIGJ1dCBhZGQgdHJhcHMgY3VtdWxhdGl2ZWx5LCB0byBjaGVjayBwcmVjZWRlbmNlCi0gICAgICAgICAgICBvcmRlcmVkX2Vycm9ycyA9IFtlIGZvciBlIGluIE9yZGVyZWRTaWduYWxzIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQorICAgICAgICAgICAgb3JkZXJlZF9lcnJvcnMgPSBbZSBmb3IgZSBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQogICAgICAgICAgICAgZm9yIGVycm9yIGluIG9yZGVyZWRfZXJyb3JzOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAxCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXM7IGV4cGVjdGVkICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShlKSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzMsNTQgKzQ0Myw2OSBAQAogICAgICAgICAgICAgcHJpbnQoIi0tIiwgc2VsZi5jb250ZXh0KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSBzdHIoZnVuY3QoKnZhbHMpKQotICAgICAgICAgICAgaWYgZm5hbWUgaW4gTE9HSUNBTF9GVU5DVElPTlM6CisgICAgICAgICAgICBpZiBmbmFtZSBpbiBzZWxmLkxvZ2ljYWxGdW5jdGlvbnM6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyKGludChldmFsKHJlc3VsdCkpKSAjICdUcnVlJywgJ0ZhbHNlJyAtPiAnMScsICcwJwotICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlcnJvcjoKKyAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlcnJvcjoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzIiAlIChlcnJvciwgcykpCiAgICAgICAgIGV4Y2VwdDogI0NhdGNoIGFueSBlcnJvciBsb25nIGVub3VnaCB0byBzdGF0ZSB0aGUgdGVzdCBjYXNlLgogICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiIsIHMpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIG15ZXhjZXB0aW9ucyA9IHNlbGYuZ2V0ZXhjZXB0aW9ucygpCi0gICAgICAgIHNlbGYuY29udGV4dC5jbGVhcl9mbGFncygpCiAKICAgICAgICAgbXlleGNlcHRpb25zLnNvcnQoa2V5PXJlcHIpCiAgICAgICAgIHRoZWlyZXhjZXB0aW9ucy5zb3J0KGtleT1yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBhbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBhbnN3ZXIgZm9yICcgKyBzICsgJyAtLSBnb3QgJyArIHJlc3VsdCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZXhjZXB0aW9ucywgdGhlaXJleGNlcHRpb25zLAogICAgICAgICAgICAgICAnSW5jb3JyZWN0IGZsYWdzIHNldCBpbiAnICsgcyArICcgLS0gZ290ICcgKyBzdHIobXlleGNlcHRpb25zKSkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0ZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIFNpZ25hbHMgaWYgc2VsZi5jb250ZXh0LmZsYWdzW2VdXQorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIHNlbGYuY29udGV4dC5mbGFnc1tlXV0KIAogICAgIGRlZiBjaGFuZ2VfcHJlY2lzaW9uKHNlbGYsIHByZWMpOgotICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRwcmVjKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKICAgICBkZWYgY2hhbmdlX3JvdW5kaW5nX21ldGhvZChzZWxmLCByb3VuZGluZyk6CiAgICAgICAgIHNlbGYuY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCiAgICAgZGVmIGNoYW5nZV9taW5fZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtaW4gPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWluID0gZXhwCiAgICAgZGVmIGNoYW5nZV9tYXhfZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtYXggPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWF4KGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWF4ID0gZXhwCiAgICAgZGVmIGNoYW5nZV9jbGFtcChzZWxmLCBjbGFtcCk6CiAgICAgICAgIHNlbGYuY29udGV4dC5jbGFtcCA9IGNsYW1wCiAKLQorY2xhc3MgQ0lCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUlCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBQCiAKICMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIHRlc3QgdGhlIGJlaGF2aW91ciBvZiBEZWNpbWFsIGFjY29yZGluZyB0byBQRVAgMzI3CiAKLWNsYXNzIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBFeHBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2VtcHR5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCksIERlY2ltYWwoIjAiKSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21faW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCkBAIC00MzgsNyArNTIzLDE4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCiAKKyAgICAgICAgIyBzaW5nbGUgd29yZCBsb25ncworICAgICAgICBmb3IgbiBpbiByYW5nZSgwLCAzMik6CisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoLTEsIDEpOgorICAgICAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgaSA9IHNpZ24gKiAoMioqbiArIHgpCisgICAgICAgICAgICAgICAgICAgIGQgPSBEZWNpbWFsKGkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCBzdHIoaSkpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgI2VtcHR5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJycpKSwgJ05hTicpCkBAIC00NTgsOCArNTU0LDQ0IEBACiAgICAgICAgICNsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHBlcm1pdHRlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxLjNFNCBcbicpKSwgJzEuM0UrNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJyAgLTcuODknKSksICctNy44OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIiAgMy40NTY3OSAgIikpLCAnMy40NTY3OScpCisKKyAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKKyAgICAgICAgZm9yIGxlYWQgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICBmb3IgdHJhaWwgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChsZWFkICsgJzkuMzExRSsyOCcgKyB0cmFpbCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzkuMzExRSsyOCcpCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgICMgSW52YWxpZCBzdHJpbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJ4eXoiKQorICAgICAgICAgICAgIyBUd28gYXJndW1lbnRzIG1heAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsLCAiMTIzNCIsICJ4IiwgInkiKQorCisgICAgICAgICAgICAjIHNwYWNlIHdpdGhpbiB0aGUgbnVtZXJpYyBwYXJ0CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMVx1MDBhMDJcdTAwYTAzIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTAxXHUwMGEwMlx1MDBhMCIpCisKKyAgICAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiXHUwMGEwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTBcdTAwYTAiKQorCisgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgY29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKworICAgICAgICBzID0gX3Rlc3RjYXBpLnVuaWNvZGVfbGVnYWN5X3N0cmluZygnOS45OTk5OTknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHMpKSwgJzkuOTk5OTk5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbChzKSksICc5Ljk5OTk5OScpCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3R1cGxlcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3plcm8KICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAwKSApCkBAIC00NzcsNiArNjA5LDEwIEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjUpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQogCisgICAgICAgICNpbmYKKyAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoKSwgIkYiKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnSW5maW5pdHknKQorCiAgICAgICAgICN3cm9uZyBudW1iZXIgb2YgaXRlbXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCA5LCAxKSkgKQogCkBAIC00OTEsNDUgKzYyNyw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIDksIDEpLCAnMScpICkKIAogICAgICAgICAjYmFkIGNvZWZmaWNpZW50cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgInh5eiIsIDIpICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCBOb25lLCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIC0zLCA0LCA5LCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDEwLCA0LCA5LCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsICdhJywgMSksIDIpICkKIAorICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fbGlzdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzAsIFswXSwgMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzEsIFs0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0XSwgLTI1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQorCisgICAgICAgIGQgPSBEZWNpbWFsKFsxLCAoNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNCksIC0yNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKKworICAgICAgICBkID0gRGVjaW1hbCgoMSwgWzQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDRdLCAtMjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX2Jvb2woc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYm9vbChEZWNpbWFsKDApKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYm9vbChEZWNpbWFsKDEpKSwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKEZhbHNlKSwgRGVjaW1hbCgwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKFRydWUpLCBEZWNpbWFsKDEpKQogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9EZWNpbWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNDUnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjdmVyeSBsYXJnZSBwb3NpdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCg1MDAwMDAxMjMpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNTAwMDAwMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAKICAgICAgICAgI25lZ2F0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKC00NSkKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICctNDUnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjemVybwogICAgICAgICBkID0gRGVjaW1hbCgwKQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJzAnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgciA9IERlY2ltYWwoMC4xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIERlY2ltYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHIpLApAQCAtNTUwLDggKzcwNCwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBmbG9hdChEZWNpbWFsKHgpKSkgIyByb3VuZHRyaXAKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2NvbnRleHRfY3JlYXRlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCiAKLSAgICAgICAgbmMgPSBjb3B5LmNvcHkoZ2V0Y29udGV4dCgpKQorICAgICAgICBuYyA9IGNvcHkuY29weShzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dCgpKQogICAgICAgICBuYy5wcmVjID0gMwogCiAgICAgICAgICMgZW1wdHkKQEAgLTU5Miw3ICs3NDksNzMgQEAKICAgICAgICAgZCA9IG5jLmNyZWF0ZV9kZWNpbWFsKHByZXZkZWMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnNS4wMEUrOCcpCiAKKyAgICAgICAgIyBtb3JlIGludGVnZXJzCisgICAgICAgIG5jLnByZWMgPSAyOAorICAgICAgICBuYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKworICAgICAgICBmb3IgdiBpbiBbLTIqKjYzLTEsIC0yKio2MywgLTIqKjMxLTEsIC0yKiozMSwgMCwKKyAgICAgICAgICAgICAgICAgICAyKiozMS0xLCAyKiozMSwgMioqNjMtMSwgMioqNjNdOgorICAgICAgICAgICAgZCA9IG5jLmNyZWF0ZV9kZWNpbWFsKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShkLCBEZWNpbWFsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGQpLCB2KQorCisgICAgICAgIG5jLnByZWMgPSAzCisgICAgICAgIG5jLnRyYXBzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSb3VuZGVkLCBuYy5jcmVhdGVfZGVjaW1hbCwgMTIzNCkKKworICAgICAgICAjIGZyb20gc3RyaW5nCisgICAgICAgIG5jLnByZWMgPSAyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnMEUtMDE3JykpLCAnMEUtMTcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnNDUnKSksICc0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctSW5mJykpLCAnLUluZmluaXR5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTjEyMycpKSwgJ05hTjEyMycpCisKKyAgICAgICAgIyBpbnZhbGlkIGFyZ3VtZW50cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgInh5eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAoMSwgInh5eiIsIC0yNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICIxMjM0IiwgIjU2NzgiKQorCisgICAgICAgICMgdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzCisgICAgICAgIG5jLnByZWMgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAnTmFOMTIzNDUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnTmFOMTIzNDUnKSkKKworICAgICAgICBuYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdOYU4xMjM0NScpKSwgJ05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICBuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKERlY2ltYWwoJ05hTjEyMzQ1JykpKSwgJ05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2NvbnRleHRfY3JlYXRlX2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgbmMgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCisgICAgICAgIHIgPSBuYy5jcmVhdGVfZGVjaW1hbCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgRGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksICcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ25hbicpKS5pc19xbmFuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLWluZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnbmFuJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdJbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJy1pbmYnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnLUluZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLTAuMCcpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctMCcpKSkKKyAgICAgICAgbmMucHJlYyA9IDEwMAorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KG5jLmNyZWF0ZV9kZWNpbWFsKHgpKSkgIyByb3VuZHRyaXAKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZGlnaXRzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICB0ZXN0X3ZhbHVlcyA9IHsKICAgICAgICAgICAgICdcdWZmMTEnOiAnMScsCiAgICAgICAgICAgICAnXHUwNjYwLlx1MDY2MFx1MDY2M1x1MDY2N1x1MDY2MmUtXHUwNjYzJyA6ICcwLjAwMDAzNzInLApAQCAtNjAxLDI5ICs4MjQsNDEgQEAKICAgICAgICAgZm9yIGlucHV0LCBleHBlY3RlZCBpbiB0ZXN0X3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChpbnB1dCkpLCBleHBlY3RlZCkKIAorY2xhc3MgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdChFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdChFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLWNsYXNzIERlY2ltYWxJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBJbXBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fTm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIE5vbmUnLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgTm9uZScsIGxvY2FscygpKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICNub3JtYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCg1KSArIDQ1KSwgJzUwJykKICAgICAgICAgI2V4Y2VlZGluZyBwcmVjaXNpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDUpICsgMTIzNDU2Nzg5MDAwLCBEZWNpbWFsKDEyMzQ1Njc4OTAwMCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArICIzIicsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAiMyInLCBsb2NhbHMoKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fZmxvYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAyLjInLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgMi4yJywgbG9jYWxzKCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX0RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNSkgKyBEZWNpbWFsKDQ1KSwgRGVjaW1hbCg1MCkpCiAKICAgICBkZWYgdGVzdF9yb3Aoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICMgQWxsb3cgb3RoZXIgY2xhc3NlcyB0byBiZSB0cmFpbmVkIHRvIGludGVyYWN0IHdpdGggRGVjaW1hbHMKICAgICAgICAgY2xhc3MgRToKICAgICAgICAgICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyKToKQEAgLTY3MSwxMCArOTA2LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoJ0RlY2ltYWwoMTApJyArIHN5bSArICdFKCknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwJyArIHJvcCArICdzdHInKQogCitjbGFzcyBDSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotY2xhc3MgRGVjaW1hbEZvcm1hdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgdGhlIGZvcm1hdCBmdW5jdGlvbi4nJycKICAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjIHRyaXBsZXMgZ2l2aW5nIGEgZm9ybWF0LCBhIERlY2ltYWwsIGFuZCB0aGUgZXhwZWN0ZWQgcmVzdWx0CiAgICAgICAgIHRlc3RfdmFsdWVzID0gWwogICAgICAgICAgICAgKCdlJywgJzBFLTE1JywgJzBlLTE1JyksCkBAIC03MzAsNiArOTcxLDcgQEAKICAgICAgICAgICAgICgnZycsICcwRS03JywgJzBlLTcnKSwKICAgICAgICAgICAgICgnZycsICctMEUyJywgJy0wZSsyJyksCiAgICAgICAgICAgICAoJy4wZycsICczLjE0MTU5MjY1JywgJzMnKSwgICMgMCBzaWcgZmlnIC0+IDEgc2lnIGZpZworICAgICAgICAgICAgKCcuMG4nLCAnMy4xNDE1OTI2NScsICczJyksICAjIHNhbWUgZm9yICduJwogICAgICAgICAgICAgKCcuMWcnLCAnMy4xNDE1OTI2NScsICczJyksCiAgICAgICAgICAgICAoJy4yZycsICczLjE0MTU5MjY1JywgJzMuMScpLAogICAgICAgICAgICAgKCcuNWcnLCAnMy4xNDE1OTI2NScsICczLjE0MTYnKSwKQEAgLTgxNCw1NiArMTA1Niw2MCBAQAogCiAgICAgICAgICAgICAjIGlzc3VlIDY4NTAKICAgICAgICAgICAgICgnYT0tNy4wJywgJzAuMTIzNDUnLCAnYWFhYTAuMScpLAotCi0gICAgICAgICAgICAjIElzc3VlIDcwOTQ6IEFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgIykKLSAgICAgICAgICAgICgnLjBlJywgJzEuMCcsICcxZSswJyksCi0gICAgICAgICAgICAoJyMuMGUnLCAnMS4wJywgJzEuZSswJyksCi0gICAgICAgICAgICAoJy4wZicsICcxLjAnLCAnMScpLAotICAgICAgICAgICAgKCcjLjBmJywgJzEuMCcsICcxLicpLAotICAgICAgICAgICAgKCdnJywgJzEuMScsICcxLjEnKSwKLSAgICAgICAgICAgICgnI2cnLCAnMS4xJywgJzEuMScpLAotICAgICAgICAgICAgKCcuMGcnLCAnMScsICcxJyksCi0gICAgICAgICAgICAoJyMuMGcnLCAnMScsICcxLicpLAotICAgICAgICAgICAgKCcuMCUnLCAnMS4wJywgJzEwMCUnKSwKLSAgICAgICAgICAgICgnIy4wJScsICcxLjAnLCAnMTAwLiUnKSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGZtdCwgZCwgcmVzdWx0IGluIHRlc3RfdmFsdWVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoRGVjaW1hbChkKSwgZm10KSwgcmVzdWx0KQogCisgICAgICAgICMgYnl0ZXMgZm9ybWF0IGFyZ3VtZW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBiJy0wMjAnKQorCiAgICAgZGVmIHRlc3Rfbl9mb3JtYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZyb20gbG9jYWxlIGltcG9ydCBDSEFSX01BWAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBkZWYgbWFrZV9ncm91cGluZyhsc3QpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocih4KSBmb3IgeCBpbiBsc3RdKSBpZiBzZWxmLmRlY2ltYWwgPT0gQyBlbHNlIGxzdAorCisgICAgICAgIGRlZiBnZXRfZm10KHgsIG92ZXJyaWRlPU5vbmUsIGZtdD0nbicpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoeCkuX19mb3JtYXRfXyhmbXQsIG92ZXJyaWRlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbCh4KS5fX2Zvcm1hdF9fKGZtdCwgX2xvY2FsZWNvbnY9b3ZlcnJpZGUpCisKICAgICAgICAgIyBTZXQgdXAgc29tZSBsb2NhbGVjb252LWxpa2UgZGljdGlvbmFyaWVzCiAgICAgICAgIGVuX1VTID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJy4nLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFszLCAzLCAwXSwKLSAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJzogJywnCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJywnCiAgICAgICAgICAgICB9CiAKICAgICAgICAgZnJfRlIgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogW0NIQVJfTUFYXSwKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFtDSEFSX01BWF0pLAogICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJycKICAgICAgICAgICAgIH0KIAogICAgICAgICBydV9SVSA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcsJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMywgMywgMF0sCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCiAgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnICcKICAgICAgICAgICAgIH0KIAogICAgICAgICBjcmF6eSA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcmJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMSwgNCwgMiwgQ0hBUl9NQVhdLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMSwgNCwgMiwgQ0hBUl9NQVhdKSwKICAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICctJwogICAgICAgICAgICAgfQogCi0KLSAgICAgICAgZGVmIGdldF9mbXQoeCwgbG9jYWxlLCBmbXQ9J24nKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsLl9fZm9ybWF0X18oRGVjaW1hbCh4KSwgZm10LCBfbG9jYWxlY29udj1sb2NhbGUpCisgICAgICAgIGRvdHNlcF93aWRlID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogYidceGMyXHhiZicuZGVjb2RlKCd1dGYtOCcpLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogYidceGMyXHhiNCcuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICB9CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJzEyLjcnKSwgZW5fVVMpLCAnMTIuNycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdChEZWNpbWFsKCcxMi43JyksIGZyX0ZSKSwgJzEyLDcnKQpAQCAtOTAyLDExICsxMTQ4LDM0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdCgxMjM0NTYsIGNyYXp5LCAnMDEybicpLCAnMDAtMDEtMjM0NS02JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KDEyMzQ1NiwgY3JhenksICcwMTNuJyksICcwMDAtMDEtMjM0NS02JykKIAorICAgICAgICAjIHdpZGUgY2hhciBzZXBhcmF0b3IgYW5kIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJy0xLjUnKSwgZG90c2VwX3dpZGUsICcwMjBuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJy0wXHUwMGI0MDAwXHUwMGI0MDAwXHUwMGI0MDAwXHUwMGI0MDAxXHUwMGJmNScpCiAKLWNsYXNzIERlY2ltYWxBcml0aG1ldGljT3BlcmF0b3JzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJ3BzX0FGJykKKyAgICBkZWYgdGVzdF93aWRlX2NoYXJfc2VwYXJhdG9yX2RlY2ltYWxfcG9pbnQoc2VsZik6CisgICAgICAgICMgbG9jYWxlIHdpdGggd2lkZSBjaGFyIHNlcGFyYXRvciBhbmQgZGVjaW1hbCBwb2ludAorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGRlY2ltYWxfcG9pbnQgPSBsb2NhbGUubG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KKyAgICAgICAgdGhvdXNhbmRzX3NlcCA9IGxvY2FsZS5sb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICBpZiBkZWNpbWFsX3BvaW50ICE9ICdcdTA2NmInIG9yIHRob3VzYW5kc19zZXAgIT0gJ1x1MDY2Yyc6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChEZWNpbWFsKCcxMDAwMDAwMDAuMTIzJyksICduJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMFx1MDY2YzAwMFx1MDY2YzAwMFx1MDY2YjEyMycpCisKK2NsYXNzIENGb3JtYXRUZXN0KEZvcm1hdFRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUZvcm1hdFRlc3QoRm9ybWF0VGVzdCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIGFsbCBhcml0aG1ldGljIG9wZXJhdG9ycywgYmluYXJ5IGFuZCB1bmFyeS4nJycKIAogICAgIGRlZiB0ZXN0X2FkZGl0aW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJy0xMS4xJykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyMi4yJykKQEAgLTkzNCw2ICsxMjAzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMTYuMScpKQogCiAgICAgZGVmIHRlc3Rfc3VidHJhY3Rpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTExLjEnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzIyLjInKQpAQCAtOTYxLDYgKzEyMzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCctMzguMycpKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGljYXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzMnKQpAQCAtOTg4LDYgKzEyNTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCctNzUnKSkKIAogICAgIGRlZiB0ZXN0X2RpdmlzaW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJy01JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwMTUsNiArMTI4Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy0wLjYyNScpKQogCiAgICAgZGVmIHRlc3RfZmxvb3JfZGl2aXNpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMicpCkBAIC0xMDQyLDYgKzEzMTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxJykpCiAKICAgICBkZWYgdGVzdF9wb3dlcmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwNjksNiArMTM0Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJzM5MDYyNScpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTA5Niw2ICsxMzcxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMScpKQogCiAgICAgZGVmIHRlc3RfZmxvb3JfZGl2X21vZHVsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTExMjIsNiArMTM5OCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShxKSwgdHlwZShkMSkpCiAKICAgICBkZWYgdGVzdF91bmFyeV9vcGVyYXRvcnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoK0RlY2ltYWwoNDUpLCBEZWNpbWFsKCs0NSkpICAgICAgICAgICAjICArCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLURlY2ltYWwoNDUpLCBEZWNpbWFsKC00NSkpICAgICAgICAgICAjICAtCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWJzKERlY2ltYWwoNDUpKSwgYWJzKERlY2ltYWwoLTQ1KSkpICAjIGFicwpAQCAtMTEzNCw2ICsxNDEyLDkgQEAKIAogICAgICAgICAjIGVxdWFsaXR5IGNvbXBhcmlzb25zICg9PSwgIT0pIGludm9sdmluZyBvbmx5IHF1aWV0IG5hbnMKICAgICAgICAgIyBkb24ndCBzaWduYWwsIGJ1dCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSByZXNwZWN0aXZlbHkuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAogCiAgICAgICAgIG4gPSBEZWNpbWFsKCdOYU4nKQogICAgICAgICBzID0gRGVjaW1hbCgnc05hTicpCkBAIC0xMTc5LDUzICsxNDYwLDEyNCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBvcCwgeCwgeSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfc2lnbihzZWxmKToKLSAgICAgICAgZCA9IERlY2ltYWwoMSkuY29weV9zaWduKERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAorICAgICAgICBkID0gRGVjaW1hbCgxKS5jb3B5X3NpZ24oRGVjaW1hbCgtMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxKS5jb3B5X3NpZ24oLTIpLCBkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuY29weV9zaWduLCAnLTInKQogCitjbGFzcyBDQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QoQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCiAjIFRoZSBmb2xsb3dpbmcgYXJlIHR3byBmdW5jdGlvbnMgdXNlZCB0byB0ZXN0IHRocmVhZGluZyBpbiB0aGUgbmV4dCBjbGFzcwogCiBkZWYgdGhmdW5jMShjbHMpOgorICAgIERlY2ltYWwgPSBjbHMuZGVjaW1hbC5EZWNpbWFsCisgICAgSW52YWxpZE9wZXJhdGlvbiA9IGNscy5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICBEaXZpc2lvbkJ5WmVybyA9IGNscy5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgT3ZlcmZsb3cgPSBjbHMuZGVjaW1hbC5PdmVyZmxvdworICAgIFVuZGVyZmxvdyA9IGNscy5kZWNpbWFsLlVuZGVyZmxvdworICAgIEluZXhhY3QgPSBjbHMuZGVjaW1hbC5JbmV4YWN0CisgICAgZ2V0Y29udGV4dCA9IGNscy5kZWNpbWFsLmdldGNvbnRleHQKKyAgICBsb2NhbGNvbnRleHQgPSBjbHMuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgIGQxID0gRGVjaW1hbCgxKQogICAgIGQzID0gRGVjaW1hbCgzKQogICAgIHRlc3QxID0gZDEvZDMKLSAgICBjbHMuc3luY2hyby53YWl0KCkKLSAgICB0ZXN0MiA9IGQxL2QzCi0gICAgY2xzLmZpbmlzaDEuc2V0KCkKIAotICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuZmluaXNoMS5zZXQoKQorICAgIGNscy5zeW5jaHJvLndhaXQoKQorCisgICAgdGVzdDIgPSBkMS9kMworICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0luZXhhY3RdKQorICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBjMi5kaXZpZGUsIGQxLCAwKQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzM6CisgICAgICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMy5mbGFnc1tJbmV4YWN0XSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYzMuY29tcGFyZSwgZDEsIERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgZGVsIGMzCisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMi5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgZGVsIGMyCisKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCisgICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorCisgICAgYzEgPSBnZXRjb250ZXh0KCkKKyAgICBjbHMuYXNzZXJ0VHJ1ZShjMS5mbGFnc1tJbmV4YWN0XSkKKyAgICBmb3Igc2lnIGluIE92ZXJmbG93LCBVbmRlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uOgorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzEuZmxhZ3Nbc2lnXSkKICAgICByZXR1cm4KIAogZGVmIHRoZnVuYzIoY2xzKToKKyAgICBEZWNpbWFsID0gY2xzLmRlY2ltYWwuRGVjaW1hbAorICAgIEludmFsaWRPcGVyYXRpb24gPSBjbHMuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgRGl2aXNpb25CeVplcm8gPSBjbHMuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgIE92ZXJmbG93ID0gY2xzLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICBVbmRlcmZsb3cgPSBjbHMuZGVjaW1hbC5VbmRlcmZsb3cKKyAgICBJbmV4YWN0ID0gY2xzLmRlY2ltYWwuSW5leGFjdAorICAgIGdldGNvbnRleHQgPSBjbHMuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgbG9jYWxjb250ZXh0ID0gY2xzLmRlY2ltYWwubG9jYWxjb250ZXh0CisKICAgICBkMSA9IERlY2ltYWwoMSkKICAgICBkMyA9IERlY2ltYWwoMykKICAgICB0ZXN0MSA9IGQxL2QzCisKICAgICB0aGlzY29udGV4dCA9IGdldGNvbnRleHQoKQogICAgIHRoaXNjb250ZXh0LnByZWMgPSAxOAogICAgIHRlc3QyID0gZDEvZDMKKworICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0luZXhhY3RdKQorICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCBjMi5tdWx0aXBseSwgRGVjaW1hbCgnMWU0MjUwMDAwMDAnKSwgOTk5KQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KHRoaXNjb250ZXh0KSBhcyBjMzoKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMzLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIGMzLnRyYXBzW1VuZGVyZmxvd10gPSBUcnVlCisgICAgICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKFVuZGVyZmxvdywgYzMuZGl2aWRlLCBEZWNpbWFsKCcxZS00MjUwMDAwMDAnKSwgOTk5KQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgICAgIGRlbCBjMworICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzIuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMyLnRyYXBzW1VuZGVyZmxvd10pCisgICAgICAgIGRlbCBjMgorCiAgICAgY2xzLnN5bmNocm8uc2V0KCkKICAgICBjbHMuZmluaXNoMi5zZXQoKQogCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QxLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCiAgICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMycpKQorCisgICAgY2xzLmFzc2VydEZhbHNlKHRoaXNjb250ZXh0LnRyYXBzW1VuZGVyZmxvd10pCisgICAgY2xzLmFzc2VydFRydWUodGhpc2NvbnRleHQuZmxhZ3NbSW5leGFjdF0pCisgICAgZm9yIHNpZyBpbiBPdmVyZmxvdywgVW5kZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbjoKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKHRoaXNjb250ZXh0LmZsYWdzW3NpZ10pCiAgICAgcmV0dXJuCiAKLQotY2xhc3MgRGVjaW1hbFVzZU9mQ29udGV4dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICcnJ1VuaXQgdGVzdHMgZm9yIFVzZSBvZiBDb250ZXh0IGNhc2VzIGluIERlY2ltYWwuJycnCi0KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHRocmVhZGluZyA9IE5vbmUKK2NsYXNzIFRocmVhZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICcnJ1VuaXQgdGVzdHMgZm9yIHRocmVhZCBsb2NhbCBjb250ZXh0cyBpbiBEZWNpbWFsLicnJwogCiAgICAgIyBUYWtlIGNhcmUgZXhlY3V0aW5nIHRoaXMgdGVzdCBmcm9tIElETEUsIHRoZXJlJ3MgYW4gaXNzdWUgaW4gdGhyZWFkaW5nCiAgICAgIyB0aGF0IGhhbmdzIElETEUgYW5kIEkgY291bGRuJ3QgZmluZCBpdAogCiAgICAgZGVmIHRlc3RfdGhyZWFkaW5nKHNlbGYpOgotICAgICAgICAjVGVzdCB0aGUgInRocmVhZGluZyBpc29sYXRpb24iIG9mIGEgQ29udGV4dC4KKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKworICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgbm90IHNlbGYuZGVjaW1hbC5IQVZFX1RIUkVBRFM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb21waWxlZCB3aXRob3V0IHRocmVhZGluZyIpCisgICAgICAgICMgVGVzdCB0aGUgInRocmVhZGluZyBpc29sYXRpb24iIG9mIGEgQ29udGV4dC4gQWxzbyB0ZXN0IGNoYW5naW5nCisgICAgICAgICMgdGhlIERlZmF1bHRDb250ZXh0LCB3aGljaCBhY3RzIGFzIGEgdGVtcGxhdGUgZm9yIHRoZSB0aHJlYWQtbG9jYWwKKyAgICAgICAgIyBjb250ZXh0cy4KKyAgICAgICAgc2F2ZV9wcmVjID0gRGVmYXVsdENvbnRleHQucHJlYworICAgICAgICBzYXZlX2VtYXggPSBEZWZhdWx0Q29udGV4dC5FbWF4CisgICAgICAgIHNhdmVfZW1pbiA9IERlZmF1bHRDb250ZXh0LkVtaW4KKyAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IDI0CisgICAgICAgIERlZmF1bHRDb250ZXh0LkVtYXggPSA0MjUwMDAwMDAKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1pbiA9IC00MjUwMDAwMDAKIAogICAgICAgICBzZWxmLnN5bmNocm8gPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLmZpbmlzaDEgPSB0aHJlYWRpbmcuRXZlbnQoKQpAQCAtMTIzOSwxNyArMTU5MSwyOSBAQAogCiAgICAgICAgIHNlbGYuZmluaXNoMS53YWl0KCkKICAgICAgICAgc2VsZi5maW5pc2gyLndhaXQoKQorCisgICAgICAgIGZvciBzaWcgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEZWZhdWx0Q29udGV4dC5mbGFnc1tzaWddKQorCisgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSBzYXZlX3ByZWMKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1heCA9IHNhdmVfZW1heAorICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWluID0gc2F2ZV9lbWluCiAgICAgICAgIHJldHVybgogCi0gICAgaWYgdGhyZWFkaW5nIGlzIE5vbmU6Ci0gICAgICAgIGRlbCB0ZXN0X3RocmVhZGluZworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAndGhyZWFkaW5nIHJlcXVpcmVkJykKK2NsYXNzIENUaHJlYWRpbmdUZXN0KFRocmVhZGluZ1Rlc3QpOgorICAgIGRlY2ltYWwgPSBDCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICd0aHJlYWRpbmcgcmVxdWlyZWQnKQorY2xhc3MgUHlUaHJlYWRpbmdUZXN0KFRocmVhZGluZ1Rlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLQotY2xhc3MgRGVjaW1hbFVzYWJpbGl0eVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVXNhYmlsaXR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgVXNhYmlsaXR5IGNhc2VzIG9mIERlY2ltYWwuJycnCiAKICAgICBkZWYgdGVzdF9jb21wYXJpc29uX29wZXJhdG9ycyhzZWxmKToKIAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkYSA9IERlY2ltYWwoJzIzLjQyJykKICAgICAgICAgZGIgPSBEZWNpbWFsKCcyMy40MicpCiAgICAgICAgIGRjID0gRGVjaW1hbCgnNDUnKQpAQCAtMTI4Myw2ICsxNjQ3LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbF9mbG9hdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkYSA9IERlY2ltYWwoJzAuMjUnKQogICAgICAgICBkYiA9IERlY2ltYWwoJzMuMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkYSwgMy4wKQpAQCAtMTI5OSw3ICsxNjY1LDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMy4wLCBkYikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLjEsIERlY2ltYWwoJzAuMScpKQogCisgICAgZGVmIHRlc3RfZGVjaW1hbF9jb21wbGV4X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGRhID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGRiID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYSwgKDEuNSswaikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoKDEuNSswaiksIGRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhLCAoMC4yNSswaikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAuMjUrMGopLCBkYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMy4wKzBqKSwgZGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGIsICgzLjArMGopKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGIsICgzLjArMWopKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKCgzLjArMWopLCBkYikKKworICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbHRfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkYi5fX2xlX18oMy4wKzBqKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19ndF9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbGVfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxfZnJhY3Rpb25fY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEYgPSBmcmFjdGlvbnNbc2VsZi5kZWNpbWFsXS5GcmFjdGlvbgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworCisgICAgICAgIGVtYXggPSBDLk1BWF9FTUFYIGlmIEMgZWxzZSA5OTk5OTk5OTkKKyAgICAgICAgZW1pbiA9IEMuTUlOX0VNSU4gaWYgQyBlbHNlIC05OTk5OTk5OTkKKyAgICAgICAgZXRpbnkgPSBDLk1JTl9FVElOWSBpZiBDIGVsc2UgLTE5OTk5OTk5OTcKKyAgICAgICAgYyA9IENvbnRleHQoRW1heD1lbWF4LCBFbWluPWVtaW4pCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYyk6CisgICAgICAgICAgICBjLnByZWMgPSBlbWF4CisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRCgwKSwgRigxLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEYoLTEsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSksIEQoMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRigwLDEpLCBEKCIxZSIgKyBzdHIoZXRpbnkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCItMWUiICsgc3RyKGV0aW55KSksIEYoMCwxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhGKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSksIEQoIjFlIiArIHN0cihldGlueSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoIi0xZSIgKyBzdHIoZXRpbnkpKSwgRigwLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMSIpLCBGKDEsMTApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKDEsMTApLCBEKCIwLjEiKSkKKworICAgICAgICAgICAgYy5wcmVjID0gMzAwCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEQoMSkvMywgRigxLDMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChGKDEsMyksIEQoMSkvMykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoRigxMjA5ODQyMzcsIDk5OTk5OTk5OTkpLCBEKCI5ZSIgKyBzdHIoZW1heCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoRCgiOWUiICsgc3RyKGVtYXgpKSwgRigxMjA5ODQyMzcsIDk5OTk5OTk5OTkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoRCgnaW5mJyksIEYoOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihEKCdpbmYnKSwgRigtOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCctaW5mJyksIEYoOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCctaW5mJyksIEYoLTk5OTk5OTk5OTk5LDEyMykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoJ25hbicpLl9fZ3RfXywgRigtOSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhOb3RJbXBsZW1lbnRlZCwgRigtOSwxMjMpLl9fbHRfXyhEKCduYW4nKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEQoJ25hbicpLCBGKC05LDEyMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEYoLTksMTIzKSwgRCgnbmFuJykpCisKICAgICBkZWYgdGVzdF9jb3B5X2FuZF9kZWVwY29weV9tZXRob2RzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkID0gRGVjaW1hbCgnNDMuMjQnKQogICAgICAgICBjID0gY29weS5jb3B5KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoYyksIGlkKGQpKQpAQCAtMTMwNyw2ICsxNzM3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZGMpLCBpZChkKSkKIAogICAgIGRlZiB0ZXN0X2hhc2hfbWV0aG9kKHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKICAgICAgICAgZGVmIGhhc2hpdChkKToKICAgICAgICAgICAgIGEgPSBoYXNoKGQpCiAgICAgICAgICAgICBiID0gZC5fX2hhc2hfXygpCkBAIC0xMzY3LDI0ICsxODAxLDI3IEBACiAgICAgICAgICAgICBkID0gRGVjaW1hbChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoaXQoZiksIGhhc2hpdChkKSkKIAotICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBoYXNoIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQotICAgICAgICAjIGN1cnJlbnQgY29udGV4dCAoaXNzdWUgIzE3NTcpCi0gICAgICAgIGMgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgb2xkX3ByZWNpc2lvbiA9IGMucHJlYwotICAgICAgICB4ID0gRGVjaW1hbCgiMTIzNDU2Nzg5LjEiKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBoYXNoIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgIyBjdXJyZW50IGNvbnRleHQgKGlzc3VlICMxNzU3KQorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjEyMzQ1Njc4OS4xIikKIAotICAgICAgICBjLnByZWMgPSA2Ci0gICAgICAgIGgxID0gaGFzaGl0KHgpCi0gICAgICAgIGMucHJlYyA9IDEwCi0gICAgICAgIGgyID0gaGFzaGl0KHgpCi0gICAgICAgIGMucHJlYyA9IDE2Ci0gICAgICAgIGgzID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSA2CisgICAgICAgICAgICBoMSA9IGhhc2hpdCh4KQorICAgICAgICAgICAgYy5wcmVjID0gMTAKKyAgICAgICAgICAgIGgyID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSAxNgorICAgICAgICAgICAgaDMgPSBoYXNoaXQoeCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDMpCi0gICAgICAgIGMucHJlYyA9IG9sZF9wcmVjaXNpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDMpCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgICAgICB4ID0gMTEwMCAqKiAxMjQ4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hpdChEZWNpbWFsKHgpKSwgaGFzaGl0KHgpKQogCiAgICAgZGVmIHRlc3RfbWluX2FuZF9tYXhfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCcxNS4zMicpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMjguNScpCkBAIC0xNDA0LDYgKzE4NDEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydElzKG1heChkMixsMSksIGQyKQogCiAgICAgZGVmIHRlc3RfYXNfbm9uemVybyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgI2FzIGZhbHNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRGVjaW1hbCgwKSkKICAgICAgICAgI2FzIHRydWUKQEAgLTE0MTEsNiArMTg1MCw3IEBACiAKICAgICBkZWYgdGVzdF90b3N0cmluZ19tZXRob2RzKHNlbGYpOgogICAgICAgICAjVGVzdCBzdHIgYW5kIHJlcHIgbWV0aG9kcy4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZCA9IERlY2ltYWwoJzE1LjMyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICcxNS4zMicpICAgICAgICAgICAgICAgIyBzdHIKQEAgLTE0MTgsNiArMTg1OCw3IEBACiAKICAgICBkZWYgdGVzdF90b251bV9tZXRob2RzKHNlbGYpOgogICAgICAgICAjVGVzdCBmbG9hdCBhbmQgaW50IG1ldGhvZHMuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNjYnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzE1LjMyJykKQEAgLTE0NDAsNiArMTg4MSw3IEBACiAgICAgICAgICAgICAoJy0xMS4wJywgLTExKSwKICAgICAgICAgICAgICgnMC4wJywgMCksCiAgICAgICAgICAgICAoJy0wRTMnLCAwKSwKKyAgICAgICAgICAgICgnODk4OTEyMTE3MTIzNzk4MTI3MzYuMScsIDg5ODkxMjExNzEyMzc5ODEyNzM2KSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGQsIGkgaW4gdGVzdF9wYWlyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5mbG9vcihEZWNpbWFsKGQpKSwgaSkKQEAgLTE0NTksNiArMTkwMSw3IEBACiAgICAgICAgICAgICAoJy0xMS4wJywgLTExKSwKICAgICAgICAgICAgICgnMC4wJywgMCksCiAgICAgICAgICAgICAoJy0wRTMnLCAwKSwKKyAgICAgICAgICAgICgnODk4OTEyMTE3MTIzNzk4MTI3MzYuMScsIDg5ODkxMjExNzEyMzc5ODEyNzM3KSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGQsIGkgaW4gdGVzdF9wYWlyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5jZWlsKERlY2ltYWwoZCkpLCBpKQpAQCAtMTUxOSwxNiArMTk2MiwyMSBAQAogICAgIGRlZiB0ZXN0X25hbl90b19mbG9hdChzZWxmKToKICAgICAgICAgIyBUZXN0IGNvbnZlcnNpb25zIG9mIGRlY2ltYWwgTkFOcyB0byBmbG9hdC4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1NTQ0CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBmb3IgcyBpbiAoJ25hbicsICduYW4xMjM0JywgJy1uYW4nLCAnLW5hbjI0NjgnKToKICAgICAgICAgICAgIGYgPSBmbG9hdChEZWNpbWFsKHMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZikpCisgICAgICAgICAgICBzaWduID0gbWF0aC5jb3B5c2lnbigxLjAsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24sIC0xLjAgaWYgcy5zdGFydHN3aXRoKCctJykgZWxzZSAxLjApCiAKICAgICBkZWYgdGVzdF9zbmFuX3RvX2Zsb2F0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgZm9yIHMgaW4gKCdzbmFuJywgJy1zbmFuJywgJ3NuYW4xMzU3JywgJy1zbmFuMTIzNCcpOgogICAgICAgICAgICAgZCA9IERlY2ltYWwocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBkKQogCiAgICAgZGVmIHRlc3RfZXZhbF9yb3VuZF90cmlwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjd2l0aCB6ZXJvCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgMCkgKQpAQCAtMTU0Nyw2ICsxOTk1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBldmFsKHJlcHIoZCkpKQogCiAgICAgZGVmIHRlc3RfYXNfdHVwbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN3aXRoIHplcm8KICAgICAgICAgZCA9IERlY2ltYWwoMCkKQEAgLTE1NjAsNyArMjAwOSw4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCItNC4zNDkxMzUzNEUtMTciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICg0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0KSwgLTI1KSApCiAKLSAgICAgICAgI2luZgorICAgICAgICAjIFRoZSAnMCcgY29lZmZpY2llbnQgaXMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdG8gZGVjaW1hbC5weS4KKyAgICAgICAgIyBJdCBoYXMgbm8gbWVhbmluZyBpbiB0aGUgQy12ZXJzaW9uIGFuZCBpcyBpZ25vcmVkIHRoZXJlLgogICAgICAgICBkID0gRGVjaW1hbCgiSW5maW5pdHkiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykgKQogCkBAIC0xNTgwLDE0ICsyMDMwLDI0NzYgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoKSwgJ24nKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKCksICduJykgKQogCi0gICAgICAgICNjb2VmZmljaWVudCBpbiBpbmZpbml0eSBzaG91bGQgYmUgaWdub3JlZAorICAgICAgICAjIEZvciBpbmZpbml0aWVzLCBkZWNpbWFsLnB5IGhhcyBhbHdheXMgc2lsZW50bHkgYWNjZXB0ZWQgYW55CisgICAgICAgICMgY29lZmZpY2llbnQgdHVwbGUuCisgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgJ0YnKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSkKICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoNCwgNSwgMywgNCksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykpCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCi0gICAgZGVmIHRlc3RfaW1tdXRhYmlsaXR5X29wZXJhdGlvbnMoc2VsZik6CisgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKKyAgICAgICAgICAgIHkgPSBOb25lCisKKyAgICAgICAgZDEgPSBNeURlY2ltYWwoMSkKKyAgICAgICAgZDIgPSBNeURlY2ltYWwoMikKKyAgICAgICAgZCA9IGQxICsgZDIKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorCisgICAgICAgIGQgPSBkMS5tYXgoZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKworICAgICAgICBkID0gY29weS5jb3B5KGQxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIE15RGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkMSkKKworICAgICAgICBkID0gY29weS5kZWVwY29weShkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBNeURlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZDEpCisKKyAgICAgICAgIyBEZWNpbWFsKERlY2ltYWwpCisgICAgICAgIGQgPSBEZWNpbWFsKCcxLjAnKQorICAgICAgICB4ID0gRGVjaW1hbChkKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoeCksIERlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZCkKKworICAgICAgICAjIE15RGVjaW1hbChEZWNpbWFsKQorICAgICAgICBtID0gTXlEZWNpbWFsKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShtKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS55LCBOb25lKQorCisgICAgICAgICMgRGVjaW1hbChNeURlY2ltYWwpCisgICAgICAgIHggPSBEZWNpbWFsKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh4KSwgRGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBkKQorCisgICAgICAgICMgTXlEZWNpbWFsKE15RGVjaW1hbCkKKyAgICAgICAgbS55ID0gOQorICAgICAgICB4ID0gTXlEZWNpbWFsKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh4KSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC55LCBOb25lKQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQorICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKworICAgIGRlZiB0ZXN0X25vbmVfYXJncyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IHNlbGYuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBVbmRlcmZsb3cgPSBzZWxmLmRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IHNlbGYuZGVjaW1hbC5TdWJub3JtYWwKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBzZWxmLmRlY2ltYWwuUm91bmRlZAorICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dChDb250ZXh0KCkpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSA3CisgICAgICAgICAgICBjLkVtYXggPSA5OTkKKyAgICAgICAgICAgIGMuRW1pbiA9IC05OTkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoIjExMSIpCisgICAgICAgICAgICB5ID0gRGVjaW1hbCgiMWU5OTk5IikKKyAgICAgICAgICAgIHogPSBEZWNpbWFsKCIxZS05OTk5IikKKworICAgICAgICAgICAgIyMjIyMgVW5hcnkgZnVuY3Rpb25zCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHguZXhwKGNvbnRleHQ9Tm9uZSkpLCAnMS42MDk0ODdFKzQ4JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbUm91bmRlZF0pCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCB5LmV4cCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHouaXNfbm9ybWFsKGNvbnRleHQ9Tm9uZSksIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh6LmlzX3N1Ym5vcm1hbChjb250ZXh0PU5vbmUpLCBUcnVlKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHgubG4oY29udGV4dD1Ob25lKSksICc0LjcwOTUzMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbmV4YWN0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW1JvdW5kZWRdKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKC0xKS5sbiwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeC5sb2cxMChjb250ZXh0PU5vbmUpKSwgJzIuMDQ1MzIzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbUm91bmRlZF0pCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoLTEpLmxvZzEwLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4LmxvZ2IoY29udGV4dD1Ob25lKSksICcyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsKDApLmxvZ2IsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4LmxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9Tm9uZSkpLCAnMTExMTAwMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB5LmxvZ2ljYWxfaW52ZXJ0LCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih5Lm5leHRfbWludXMoY29udGV4dD1Ob25lKSksICc5Ljk5OTk5OUUrOTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoJ3NOYU4nKS5uZXh0X21pbnVzLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih5Lm5leHRfcGx1cyhjb250ZXh0PU5vbmUpKSwgJ0luZmluaXR5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoJ3NOYU4nKS5uZXh0X3BsdXMsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHoubm9ybWFsaXplKGNvbnRleHQ9Tm9uZSkpLCAnMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgeS5ub3JtYWxpemUsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoei5udW1iZXJfY2xhc3MoY29udGV4dD1Ob25lKSksICcrU3Vibm9ybWFsJykKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih6LnNxcnQoY29udGV4dD1Ob25lKSksICcwRS0xMDA1JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0NsYW1wZWRdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tSb3VuZGVkXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW1N1Ym5vcm1hbF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgeS5zcXJ0LCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tPdmVyZmxvd10pCisKKyAgICAgICAgICAgIGMuY2FwaXRhbHMgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih6LnRvX2VuZ19zdHJpbmcoY29udGV4dD1Ob25lKSksICcxZS05OTk5JykKKyAgICAgICAgICAgIGMuY2FwaXRhbHMgPSAxCisKKworICAgICAgICAgICAgIyMjIyMgQmluYXJ5IGZ1bmN0aW9ucworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5jb21wYXJlKERlY2ltYWwoJ05hbjg5MTI4NzgyOCcpLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICdOYU4xMjg3ODI4JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHguY29tcGFyZSwgRGVjaW1hbCgnc05hTicpLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5jb21wYXJlX3NpZ25hbCg4MjI0LCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICctMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4LmNvbXBhcmVfc2lnbmFsLCBEZWNpbWFsKCdOYU4nKSwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgubG9naWNhbF9hbmQoMTAxLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxMDEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgeC5sb2dpY2FsX2FuZCwgMTIzLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5sb2dpY2FsX29yKDEwMSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMTExJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgubG9naWNhbF9vciwgMTIzLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5sb2dpY2FsX3hvcigxMDEsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzEwJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgubG9naWNhbF94b3IsIDEyMywgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgubWF4KDEwMSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMTExJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgubWF4LCBEZWNpbWFsKCdzTmFOJyksIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4Lm1heF9tYWcoMTAxLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxMTEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgeC5tYXhfbWFnLCBEZWNpbWFsKCdzTmFOJyksIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4Lm1pbigxMDEsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzEwMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4Lm1pbiwgRGVjaW1hbCgnc05hTicpLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5taW5fbWFnKDEwMSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMTAxJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgubWluX21hZywgRGVjaW1hbCgnc05hTicpLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5yZW1haW5kZXJfbmVhcigxMDEsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzEwJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHkucmVtYWluZGVyX25lYXIsIDEwMSwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgucm90YXRlKDIsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzExMTAwJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgucm90YXRlLCAxMDEsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4LnNjYWxlYig3LCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxLjExRSs5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHguc2NhbGViLCAxMDAwMCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHguc2hpZnQoMiwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMTExMDAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgeC5zaGlmdCwgMTAwMDAsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisKKyAgICAgICAgICAgICMjIyMjIFRlcm5hcnkgZnVuY3Rpb25zCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4LmZtYSgyLCAzLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcyMjUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIHguZm1hLCBEZWNpbWFsKCcxZTk5OTknKSwgMywgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbT3ZlcmZsb3ddKQorCisKKyAgICAgICAgICAgICMjIyMjIFNwZWNpYWwgY2FzZXMKKyAgICAgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0VWRU4KKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUnKS50b19pbnRlZ3JhbChyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcyJykKKyAgICAgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9ET1dOCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41JykudG9faW50ZWdyYWwocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMScpCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41JykudG9faW50ZWdyYWwocm91bmRpbmc9Uk9VTkRfVVAsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzInKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCdzTmFOJykudG9faW50ZWdyYWwsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9FVkVOCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41JykudG9faW50ZWdyYWxfdmFsdWUocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMicpCisgICAgICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfRE9XTgorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNScpLnRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzEnKQorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNScpLnRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPVJPVU5EX1VQLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcyJykKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgnc05hTicpLnRvX2ludGVncmFsX3ZhbHVlLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0hBTEZfRVZFTgorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNScpLnRvX2ludGVncmFsX2V4YWN0KHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzInKQorICAgICAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0RPV04KKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUnKS50b19pbnRlZ3JhbF9leGFjdChyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxJykKKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUnKS50b19pbnRlZ3JhbF9leGFjdChyb3VuZGluZz1ST1VORF9VUCwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMicpCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoJ3NOYU4nKS50b19pbnRlZ3JhbF9leGFjdCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9VUAorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNTAwMDEnKS5xdWFudGl6ZShleHA9RGVjaW1hbCgnMWUtMycpLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxLjUwMScpCisgICAgICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfRE9XTgorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNTAwMDEnKS5xdWFudGl6ZShleHA9RGVjaW1hbCgnMWUtMycpLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxLjUwMCcpCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41MDAwMScpLnF1YW50aXplKGV4cD1EZWNpbWFsKCcxZS0zJyksIHJvdW5kaW5nPVJPVU5EX1VQLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxLjUwMScpCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHkucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwJyksIHJvdW5kaW5nPVJPVU5EX1VQLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dChDb250ZXh0KCkpIGFzIGNvbnRleHQ6CisgICAgICAgICAgICBjb250ZXh0LnByZWMgPSA3CisgICAgICAgICAgICBjb250ZXh0LkVtYXggPSA5OTkKKyAgICAgICAgICAgIGNvbnRleHQuRW1pbiA9IC05OTkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KGN0eD1Ob25lKSBhcyBjOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA3KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA5OTkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC05OTkpCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9uc19mcm9tX2ludChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG1ldGhvZHMgdGFraW5nIGEgc2Vjb25kIERlY2ltYWwgYXJndW1lbnQgd2lsbAorICAgICAgICAjIGFsd2F5cyBhY2NlcHQgYW4gaW50ZWdlciBpbiBwbGFjZSBvZiBhIERlY2ltYWwuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZShEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfc2lnbmFsKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV90b3RhbChEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWxfbWFnKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF9hbmQoMTAwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF9hbmQoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF9vcigxMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKERlY2ltYWwoMTAwMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfeG9yKDEwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfeG9yKERlY2ltYWwoMTAwMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5tYXgoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWF4KERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heF9tYWcoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWF4X21hZyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5taW4oMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWluKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbl9tYWcoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWluX21hZyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5uZXh0X3Rvd2FyZCgxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5uZXh0X3Rvd2FyZChEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzNCkucXVhbnRpemUoMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnF1YW50aXplKERlY2ltYWwoMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKDEyMzQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNzY4KS5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEyMzQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMykucm90YXRlKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzKS5yb3RhdGUoRGVjaW1hbCgxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5zYW1lX3F1YW50dW0oMTAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjM0KS5zYW1lX3F1YW50dW0oRGVjaW1hbCgxMDAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS4xMjMnKS5zY2FsZWIoLTEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnOS4xMjMnKS5zY2FsZWIoRGVjaW1hbCgtMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0NTYpLnNoaWZ0KC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQ1Nikuc2hpZnQoRGVjaW1hbCgtMSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgNjcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKDQ1LCA2NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIERlY2ltYWwoNjcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCisKK2NsYXNzIENVc2FiaWxpdHlUZXN0KFVzYWJpbGl0eVRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVVzYWJpbGl0eVRlc3QoVXNhYmlsaXR5VGVzdCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgUHl0aG9uQVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWJjKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLk51bWJlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLlJlYWwpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5OdW1iZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLlJlYWwpCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNhdmVkZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2VsZi5kZWNpbWFsCisgICAgICAgIGQgPSBEZWNpbWFsKCctMy4xNDE1OTAwMDAnKQorICAgICAgICBwID0gcGlja2xlLmR1bXBzKGQpCisgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQorCisgICAgICAgIGlmIEM6CisgICAgICAgICAgICAjIFRlc3QgaW50ZXJjaGFuZ2VhYmlsaXR5CisgICAgICAgICAgICB4ID0gQy5EZWNpbWFsKCctMy4xMjNlODE3MjMnKQorICAgICAgICAgICAgeSA9IFAuRGVjaW1hbCgnLTMuMTIzZTgxNzIzJykKKworICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgIHN4ID0gcGlja2xlLmR1bXBzKHgpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorICAgICAgICAgICAgciA9IHBpY2tsZS5sb2FkcyhzeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBQLkRlY2ltYWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIHkpCisKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICBzeSA9IHBpY2tsZS5kdW1wcyh5KQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgIHIgPSBwaWNrbGUubG9hZHMoc3kpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UociwgQy5EZWNpbWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCB4KQorCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzYXZlZGVjaW1hbAorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoaW50KGQpKSwgcikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJy1uYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCdzbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnLWluZicpKQorCisgICAgZGVmIHRlc3RfdHJ1bmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGZvciB4IGluIHJhbmdlKC0yNTAsIDI1MCk6CisgICAgICAgICAgICBzID0gJyUwLjJmJyAlICh4IC8gMTAwLjApCisgICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIGZvciBmbG9hdHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KERlY2ltYWwocykpLCBpbnQoZmxvYXQocykpKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyB0b19pbnRlZ3JhbCBpbiB0aGUgUk9VTkRfRE9XTiBtb2RlCisgICAgICAgICAgICBkID0gRGVjaW1hbChzKQorICAgICAgICAgICAgciA9IGQudG9faW50ZWdyYWwoUk9VTkRfRE9XTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChtYXRoLnRydW5jKGQpKSwgcikKKworICAgIGRlZiB0ZXN0X2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE15RGVjaW1hbCwgRGVjaW1hbCkpCisKKyAgICAgICAgciA9IE15RGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHIpLCBNeURlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHIpLAorICAgICAgICAgICAgICAgICcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKQorICAgICAgICBiaWdpbnQgPSAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGJpZ2ludCksIE15RGVjaW1hbChiaWdpbnQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKS5pc19xbmFuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoRGVjaW1hbCgnTmFOJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoRGVjaW1hbCgnSW5maW5pdHknKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoRGVjaW1hbCgnLUluZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15RGVjaW1hbC5mcm9tX2Zsb2F0LCAnYWJjJykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKKyAgICAgICAgICAgIHggPSByYW5kb20uZXhwb3ZhcmlhdGUoMC4wMSkgKiAocmFuZG9tLnJhbmRvbSgpICogMi4wIC0gMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBmbG9hdChNeURlY2ltYWwuZnJvbV9mbG9hdCh4KSkpICMgcm91bmR0cmlwCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNScpCisgICAgICAgICkKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9VUCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNicpCisgICAgICAgICkKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgSW5leGFjdCwKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKKyAgICAgICAgICAgIG1hdGgucGkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KC0wLjApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnLTAnKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMS4wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEnKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMTAnKSIpCisKKyAgICBkZWYgdGVzdF9xdWFudGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICBjID0gQ29udGV4dChFbWF4PTk5OTk5LCBFbWluPS05OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJykpLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zNCcpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJyksIHJvdW5kaW5nPVJPVU5EX0RPV04pLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zMycpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgRGVjaW1hbCgiMTBlOTk5OTkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUxMDAwMDAnKSwgY29udGV4dD1jCisgICAgICAgICkKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBEZWNpbWFsKCIwLjg3MTgzMWU4MDAiKQorICAgICAgICB4ID0gZC5xdWFudGl6ZShjb250ZXh0PWMsIGV4cD1EZWNpbWFsKCIxZTc5NyIpLCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzguNzFFKzc5OScpKQorCisgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgeCA9IERlY2ltYWwoIjkuODE4MjczMWUxODEyNzMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgucmVhbCwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5jb25qdWdhdGUoKSwgeCkKKworICAgICAgICB4ID0gRGVjaW1hbCgiMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleCh4KSwgY29tcGxleChmbG9hdCgxKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdyZWFsJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ2ltYWcnLCAxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCB4LCAnY29uanVnYXRlJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ19fY29tcGxleF9fJywgMTAwKQorCisgICAgZGVmIHRlc3RfbmFtZWRfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworCisgICAgICAgIHhjID0gQ29udGV4dCgpCisgICAgICAgIHhjLnByZWMgPSAxCisgICAgICAgIHhjLkVtYXggPSAxCisgICAgICAgIHhjLkVtaW4gPSAtMQorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoOSwgeGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDksIGNvbnRleHQ9eGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMsIHZhbHVlPTkpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCwgInh5eiIsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgyKS5leHAoY29udGV4dD14YyksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgRCg4KS5leHAsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDIpLmxuKGNvbnRleHQ9eGMpLCBEKCcwLjcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoLTEpLmxuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9nMTAoY29udGV4dD14YyksIEQoJy1pbmYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgtMSkubmV4dF9taW51cyhjb250ZXh0PXhjKSwgLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoLTEpLm5leHRfcGx1cyhjb250ZXh0PXhjKSwgRCgnLTAuOScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5LjczIikubm9ybWFsaXplKGNvbnRleHQ9eGMpLCBEKCcxRSsxJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjk5OTkiKS50b19pbnRlZ3JhbChjb250ZXh0PXhjKSwgOTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiLTIwMDAiKS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXhjKSwgLTIwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjEyMyIpLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9eGMpLCAxMjMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLnNxcnQoY29udGV4dD14YyksIEQoJzAuMicpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLmNvbXBhcmUoY29udGV4dD14Yywgb3RoZXI9MyksIC0xKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoIjAiKS5jb21wYXJlX3NpZ25hbCwgRCgnbmFuJyksIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDEiKS5tYXgoRCgnMC4wMTAxJyksIGNvbnRleHQ9eGMpLCBEKCcwLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMSIpLm1heChEKCcwLjAxMDEnKSwgY29udGV4dD14YyksIEQoJzAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjIiKS5tYXhfbWFnKEQoJy0wLjMnKSwgY29udGV4dD14YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJy0wLjMnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMiIpLm1pbihEKCctMC4wMycpLCBjb250ZXh0PXhjKSwgRCgnLTAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjAyIikubWluX21hZyhEKCctMC4wMycpLCBjb250ZXh0PXhjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMC4wJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMiIpLm5leHRfdG93YXJkKEQoJy0xJyksIGNvbnRleHQ9eGMpLCBEKCcwLjEnKSkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCIwLjIiKS5xdWFudGl6ZSwgRCgnMWUxMCcpLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5Ljk5IikucmVtYWluZGVyX25lYXIoRCgnMS41JyksIGNvbnRleHQ9eGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCctMC41JykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS45IikuZm1hKHRoaXJkPUQoJzAuOScpLCBjb250ZXh0PXhjLCBvdGhlcj03KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnN0UrMScpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfY2Fub25pY2FsLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX2Zpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19pbmZpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19uYW4sIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfcW5hbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19zbmFuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX3NpZ25lZCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc196ZXJvLCBjb250ZXh0PXhjKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEQoIjAuMDEiKS5pc19ub3JtYWwoY29udGV4dD14YykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRCgiMC4wMSIpLmlzX3N1Ym5vcm1hbChjb250ZXh0PXhjKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmFkanVzdGVkLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNvbmp1Z2F0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5yYWRpeCwgY29udGV4dD14YykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKC0xMTEpLmxvZ2IoY29udGV4dD14YyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9naWNhbF9pbnZlcnQoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAuMDEnKS5udW1iZXJfY2xhc3MoY29udGV4dD14YyksICcrU3Vibm9ybWFsJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMC4yMScpLnRvX2VuZ19zdHJpbmcoY29udGV4dD14YyksICcwLjIxJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfYW5kKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfb3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAxJykubG9naWNhbF94b3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzIzJykucm90YXRlKDEsIGNvbnRleHQ9eGMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcyMycpLnJvdGF0ZSgxLCBjb250ZXh0PXhjKSwgMykKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMjMnKS5zY2FsZWIsIDEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMjMnKS5zaGlmdCgtMSwgY29udGV4dD14YyksIDApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRC5mcm9tX2Zsb2F0LCAxLjEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMCkuYXNfdHVwbGUsIGNvbnRleHQ9eGMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgxKS5jYW5vbmljYWwoKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgiLTEiKS5jb3B5X2FicywgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgiLTEiKS5jb3B5X25lZ2F0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5jYW5vbmljYWwsIGNvbnRleHQ9IngiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNhbm9uaWNhbCwgeHl6PSJ4IikKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkoc2VsZik6CisKKyAgICAgICAgZGVjaW1hbCA9IHNlbGYuZGVjaW1hbAorICAgICAgICBEZWNpbWFsRXhjZXB0aW9uID0gZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBkZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBPdmVyZmxvdyA9IGRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gZGVjaW1hbC5VbmRlcmZsb3cKKyAgICAgICAgU3Vibm9ybWFsID0gZGVjaW1hbC5TdWJub3JtYWwKKyAgICAgICAgSW5leGFjdCA9IGRlY2ltYWwuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIENsYW1wZWQgPSBkZWNpbWFsLkNsYW1wZWQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWNpbWFsRXhjZXB0aW9uLCBBcml0aG1ldGljRXJyb3IpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhGbG9hdE9wZXJhdGlvbiwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEZsb2F0T3BlcmF0aW9uLCBUeXBlRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEaXZpc2lvbkJ5WmVybywgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERpdmlzaW9uQnlaZXJvLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE92ZXJmbG93LCBSb3VuZGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoT3ZlcmZsb3csIEluZXhhY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPdmVyZmxvdywgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgSW5leGFjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgUm91bmRlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgU3Vibm9ybWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5kZXJmbG93LCBEZWNpbWFsRXhjZXB0aW9uKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTdWJub3JtYWwsIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJbmV4YWN0LCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUm91bmRlZCwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENsYW1wZWQsIERlY2ltYWxFeGNlcHRpb24pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuQ29udmVyc2lvblN5bnRheCwgSW52YWxpZE9wZXJhdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuRGl2aXNpb25JbXBvc3NpYmxlLCBJbnZhbGlkT3BlcmF0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZGVjaW1hbC5EaXZpc2lvblVuZGVmaW5lZCwgSW52YWxpZE9wZXJhdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQsIFplcm9EaXZpc2lvbkVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZGVjaW1hbC5JbnZhbGlkQ29udGV4dCwgSW52YWxpZE9wZXJhdGlvbikpCisKK2NsYXNzIENQeXRob25BUEl0ZXN0cyhQeXRob25BUEl0ZXN0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5UHl0aG9uQVBJdGVzdHMoUHl0aG9uQVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIENvbnRleHRBUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9ub25lX2FyZ3Moc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICBjMSA9IENvbnRleHQoKQorICAgICAgICBjMiA9IENvbnRleHQocHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWF4PU5vbmUsIEVtaW49Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpCisgICAgICAgIGZvciBjIGluIFtjMSwgYzJdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDI4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCBST1VORF9IQUxGX0VWRU4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC05OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDApCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjLCAnZmxhZ3MnLCBbXSkKKyAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGMsICd0cmFwcycsIFtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVyZmxvd10pCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICBjID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQorCisgICAgICAgIGZvciBybmQgaW4gUm91bmRpbmdNb2RlczoKKyAgICAgICAgICAgIGMucm91bmRpbmcgPSBfdGVzdGNhcGkudW5pY29kZV9sZWdhY3lfc3RyaW5nKHJuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3VuZGluZywgcm5kKQorCisgICAgICAgIHMgPSBfdGVzdGNhcGkudW5pY29kZV9sZWdhY3lfc3RyaW5nKCcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIHMpCisKKyAgICAgICAgcyA9IF90ZXN0Y2FwaS51bmljb2RlX2xlZ2FjeV9zdHJpbmcoJ1JPVU5EX1x4MDBVUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgcykKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKworICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBzYXZlZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKworICAgICAgICAjIFJvdW5kIHRyaXAKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNlbGYuZGVjaW1hbAorICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBlLnByZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCBlLkVtaW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCBlLkVtYXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3VuZGluZywgZS5yb3VuZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNhcGl0YWxzLCBlLmNhcGl0YWxzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIGUuY2xhbXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgZS5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRyYXBzLCBlLnRyYXBzKQorCisgICAgICAgICMgVGVzdCBpbnRlcmNoYW5nZWFiaWxpdHkKKyAgICAgICAgY29tYmluYXRpb25zID0gWyhDLCBQKSwgKFAsIEMpXSBpZiBDIGVsc2UgWyhQLCBQKV0KKyAgICAgICAgZm9yIGR1bXBlciwgbG9hZGVyIGluIGNvbWJpbmF0aW9uczoKKyAgICAgICAgICAgIGZvciByaSwgXyBpbiBlbnVtZXJhdGUoUm91bmRpbmdNb2Rlcyk6CisgICAgICAgICAgICAgICAgZm9yIGZpLCBfIGluIGVudW1lcmF0ZShPcmRlcmVkU2lnbmFsc1tkdW1wZXJdKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRpLCBfIGluIGVudW1lcmF0ZShPcmRlcmVkU2lnbmFsc1tkdW1wZXJdKToKKworICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZW1pbiA9IHJhbmRvbS5yYW5kcmFuZ2UoLTEwMCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtYXggPSByYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcHMgPSByYW5kb20ucmFuZHJhbmdlKDIpCisgICAgICAgICAgICAgICAgICAgICAgICBjbGFtcCA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmUgbW9kdWxlIGR1bXBzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gZHVtcGVyCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gZHVtcGVyLkNvbnRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjPXByZWMsIEVtaW49ZW1pbiwgRW1heD1lbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Um91bmRpbmdNb2Rlc1tyaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1jYXBzLCBjbGFtcD1jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOmZpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOnRpXQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhjKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBvdGhlciBtb2R1bGUgbG9hZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLCBsb2FkZXIuQ29udGV4dCkKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnByZWMsIHByZWMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJvdW5kaW5nLCBSb3VuZGluZ01vZGVzW3JpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5jYXBpdGFscywgY2FwcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5jbGFtcCwgY2xhbXApCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBkLCAnZmxhZ3MnLCBPcmRlcmVkU2lnbmFsc1tsb2FkZXJdWzpmaV0pCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBkLCAndHJhcHMnLCBPcmRlcmVkU2lnbmFsc1tsb2FkZXJdWzp0aV0pCisKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCisKKyAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICAjIEFsbCBjb3BpZXMgc2hvdWxkIGJlIGRlZXAKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYyksIGlkKGQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMuZmxhZ3MpLCBpZChkLmZsYWdzKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLnRyYXBzKSwgaWQoZC50cmFwcykpCisgICAgICAgIGsxID0gc2V0KGMuZmxhZ3Mua2V5cygpKQorICAgICAgICBrMiA9IHNldChkLmZsYWdzLmtleXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrMSwgazIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgZC5mbGFncykKKworICAgIGRlZiB0ZXN0X19jbGFtcChzZWxmKToKKyAgICAgICAgIyBJbiBQeXRob24gMy4yLCB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGUgYF9jbGFtcGAgd2FzIG1hZGUKKyAgICAgICAgIyBwdWJsaWMgKGlzc3VlIDg1NDApLCB3aXRoIHRoZSBvbGQgYF9jbGFtcGAgYmVjb21pbmcgYQorICAgICAgICAjIHByb3BlcnR5IHdyYXBwaW5nIGBjbGFtcGAuICBGb3IgdGhlIGR1cmF0aW9uIG9mIFB5dGhvbiAzLjIKKyAgICAgICAgIyBvbmx5LCB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBnZXR0YWJsZS9zZXR0YWJsZSB2aWEgYm90aAorICAgICAgICAjIGBjbGFtcGAgYW5kIGBfY2xhbXBgOyBpbiBQeXRob24gMy4zLCBgX2NsYW1wYCBzaG91bGQgYmUKKyAgICAgICAgIyByZW1vdmVkLgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgYywgJ19jbGFtcCcpCisKKyAgICBkZWYgdGVzdF9hYnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmFicyhEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFicygtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hYnMsICctMScpCisKKyAgICBkZWYgdGVzdF9hZGQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmFkZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWRkKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWRkKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWRkKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hZGQsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfc2lnbmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsX21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29weV9hYnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHlfYWJzKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9hYnMoLTEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9hYnMsICctMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X2RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHlfZGVjaW1hbChEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfZGVjaW1hbCgtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2RlY2ltYWwsICctMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X25lZ2F0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9uZWdhdGUoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X25lZ2F0ZSgtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X25lZ2F0ZSwgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfc2lnbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9zaWduKERlY2ltYWwoMSksIERlY2ltYWwoLTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIC0yKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCAtMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oMSwgRGVjaW1hbCgtMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9zaWduLCAnMScsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9zaWduLCAxLCAnLTInKQorCisgICAgZGVmIHRlc3RfZGl2aWRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5kaXZpZGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9kaXZpZGVfaW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5kaXZpZGVfaW50KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGVfaW50LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGVfaW50LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9kaXZtb2Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdm1vZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2V4cChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZXhwKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhwKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmV4cCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2ZtYShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZm1hKERlY2ltYWwoMiksIERlY2ltYWwoMyksIERlY2ltYWwoNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgMywgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoRGVjaW1hbCgyKSwgMywgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgRGVjaW1hbCgzKSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgMywgRGVjaW1hbCg0KSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsICcyJywgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgMiwgJzMnLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAzLCAnNCcpCisKKyAgICAgICAgIyBJc3N1ZSAxMjA3OSBmb3IgQ29udGV4dC5mbWEgLi4uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoMCksICJub3QgYSBkZWNpbWFsIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxKSwgRGVjaW1hbCgnc25hbicpLCAxLjIyMikKKyAgICAgICAgIyAuLi4gYW5kIGZvciBEZWNpbWFsLmZtYS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKCdJbmZpbml0eScpLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgwKSwgIm5vdCBhIGRlY2ltYWwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCdzbmFuJyksIDEuMjIyKQorCisgICAgZGVmIHRlc3RfaXNfZmluaXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19maW5pdGUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19maW5pdGUoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfZmluaXRlLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfaW5maW5pdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX2luZmluaXRlKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfaW5maW5pdGUoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfaW5maW5pdGUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19uYW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX25hbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19uYW4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19ub3JtYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX25vcm1hbChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25vcm1hbCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19ub3JtYWwsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19xbmFuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19xbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfcW5hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19xbmFuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc2lnbmVkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zaWduZWQoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zaWduZWQoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc2lnbmVkLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc25hbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfc25hbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NuYW4oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc25hbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3N1Ym5vcm1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc3Vibm9ybWFsKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3N1Ym5vcm1hbCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3plcm8oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3plcm8oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc196ZXJvKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3plcm8sICcxMCcpCisKKyAgICBkZWYgdGVzdF9sbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2cxMChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZzEwKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZzEwLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9nYihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9nYihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2IoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nYiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfYW5kKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9sb2dpY2FsX2ludmVydChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgxMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfaW52ZXJ0KDEwMDApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9pbnZlcnQsICcxMDAwJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfb3Ioc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfeG9yKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9tYXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1heChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXgsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X21heF9tYWcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X21pbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWluKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW4oMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW4oRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW4oMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW4sICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWluX21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWluX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZygxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluX21hZywgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluX21hZywgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWludXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1pbnVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWludXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWludXMsICcxMCcpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubXVsdGlwbHkoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tdWx0aXBseSwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbmV4dF9taW51cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubmV4dF9taW51cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfbWludXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9taW51cywgJzEwJykKKworICAgIGRlZiB0ZXN0X25leHRfcGx1cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubmV4dF9wbHVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9wbHVzKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfcGx1cywgJzEwJykKKworICAgIGRlZiB0ZXN0X25leHRfdG93YXJkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfdG93YXJkLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5vcm1hbGl6ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5vcm1hbGl6ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5ub3JtYWxpemUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9udW1iZXJfY2xhc3Moc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKKworICAgIGRlZiB0ZXN0X3BsdXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnBsdXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wbHVzKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBsdXMsICcxMCcpCisKKyAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCBEZWNpbWFsKDQpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsICcxJywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCAnNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihtb2R1bG89NSwgYj04LCBhPTIpLCAxKQorCisgICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnF1YW50aXplKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucXVhbnRpemUsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3JlbWFpbmRlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucmVtYWluZGVyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXIsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfcmVtYWluZGVyX25lYXIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucm90YXRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yb3RhdGUsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc3FydChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc3FydChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNxcnQoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3FydCwgJzEwJykKKworICAgIGRlZiB0ZXN0X3NhbWVfcXVhbnR1bShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc2FtZV9xdWFudHVtKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc2NhbGViKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zY2FsZWIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zaGlmdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc2hpZnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnN1YnRyYWN0KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3VidHJhY3QsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3RvX2VuZ19zdHJpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX2VuZ19zdHJpbmcoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19lbmdfc3RyaW5nKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2VuZ19zdHJpbmcsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19zY2lfc3RyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19zY2lfc3RyaW5nKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9fc2NpX3N0cmluZygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19zY2lfc3RyaW5nLCAnMTAnKQorCisgICAgZGVmIHRlc3RfdG9faW50ZWdyYWxfZXhhY3Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfZXhhY3QoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF92YWx1ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF92YWx1ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorCitjbGFzcyBDQ29udGV4dEFQSXRlc3RzKENvbnRleHRBUEl0ZXN0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dEFQSXRlc3RzKENvbnRleHRBUEl0ZXN0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dFdpdGhTdGF0ZW1lbnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQ2FuJ3QgZG8gdGhlc2UgYXMgZG9jc3RyaW5ncyB1bnRpbCBQeXRob24gMi42CisgICAgIyBhcyBkb2N0ZXN0IGNhbid0IGhhbmRsZSBfX2Z1dHVyZV9fIHN0YXRlbWVudHMKKworICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dChzZWxmKToKKyAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaW4gdGhlIGJsb2NrCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBlbnRlcl9jdHg6CisgICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisKKyAgICBkZWYgdGVzdF9sb2NhbGNvbnRleHRhcmcoc2VsZik6CisgICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChwcmVjPTQyKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBlbnRlcl9jdHg6CisgICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldF9jdHgucHJlYywgbmV3X2N0eC5wcmVjLCAnZGlkIG5vdCBzZXQgY29ycmVjdCBjb250ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuZXdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfd2l0aF9zdGF0ZW1lbnRzKHNlbGYpOgorICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gdGhlIGJsb2NrCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgQ2xhbXBlZCA9IHNlbGYuZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgb3JpZ19jdHguY2xlYXJfZmxhZ3MoKQorICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChFbWF4PTM4NCkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzEuZmxhZ3MsIG9yaWdfY3R4LmZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMS50cmFwcywgb3JpZ19jdHgudHJhcHMpCisgICAgICAgICAgICBjMS50cmFwc1tDbGFtcGVkXSA9IFRydWUKKyAgICAgICAgICAgIGMxLkVtaW4gPSAtMzgzCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdfY3R4LkVtaW4sIC0zODMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhDbGFtcGVkLCBjMS5jcmVhdGVfZGVjaW1hbCwgJzBlLTk5OScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYzEuZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBjMjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMyLmZsYWdzLCBuZXdfY3R4LmZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzIudHJhcHMsIG5ld19jdHgudHJhcHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMyLnBvd2VyLCBEZWNpbWFsKCczLjRlMjAwJyksIDIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjMi5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYzIuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgICAgIGRlbCBjMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjMS5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICBkZWwgYzEKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcmlnX2N0eC5FbWluLCAtMzgzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9yaWdfY3R4LmZsYWdzW0NsYW1wZWRdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9yaWdfY3R4LmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdfY3R4LmZsYWdzW0NsYW1wZWRdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19jdHguZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRzX2djMShzZWxmKToKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICBkZWwgYzEKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzQ6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50c19nYzIoc2VsZik6CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzEpIGFzIGMyOgorICAgICAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KGMyKSBhcyBjMzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KGMzKSBhcyBjNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjMworICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGM0CisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudHNfZ2MzKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5zZXRjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgbjEgPSBDb250ZXh0KHByZWM9MSkKKyAgICAgICAgICAgIHNldGNvbnRleHQobjEpCisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuMSkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIG4xCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMi5wcmVjLCAxKQorICAgICAgICAgICAgICAgIGRlbCBjMgorICAgICAgICAgICAgICAgIG4yID0gQ29udGV4dChwcmVjPTIpCisgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuMikKKyAgICAgICAgICAgICAgICBkZWwgbjIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGNvbnRleHQoKS5wcmVjLCAyKQorICAgICAgICAgICAgICAgIG4zID0gQ29udGV4dChwcmVjPTMpCisgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuMykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGNvbnRleHQoKS5wcmVjLCAzKQorICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG4zKSBhcyBjMzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG4zCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzMucHJlYywgMykKKyAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgIG40ID0gQ29udGV4dChwcmVjPTQpCisgICAgICAgICAgICAgICAgICAgIHNldGNvbnRleHQobjQpCisgICAgICAgICAgICAgICAgICAgIGRlbCBuNAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGNvbnRleHQoKS5wcmVjLCA0KQorICAgICAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM0OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjNC5wcmVjLCA0KQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGM0CisKK2NsYXNzIENDb250ZXh0V2l0aFN0YXRlbWVudChDb250ZXh0V2l0aFN0YXRlbWVudCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dFdpdGhTdGF0ZW1lbnQoQ29udGV4dFdpdGhTdGF0ZW1lbnQpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIENvbnRleHRGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mbGFnc19pcnJlbGV2YW50KHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHJlc3VsdCAobnVtZXJpYyByZXN1bHQgKyBmbGFncyByYWlzZWQpIG9mIGFuCisgICAgICAgICMgYXJpdGhtZXRpYyBvcGVyYXRpb24gZG9lc24ndCBkZXBlbmQgb24gdGhlIGN1cnJlbnQgZmxhZ3MKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIFVuZGVyZmxvdyA9IHNlbGYuZGVjaW1hbC5VbmRlcmZsb3cKKyAgICAgICAgQ2xhbXBlZCA9IHNlbGYuZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IHNlbGYuZGVjaW1hbC5TdWJub3JtYWwKKworICAgICAgICBkZWYgcmFpc2VfZXJyb3IoY29udGV4dCwgZmxhZyk6CisgICAgICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZsYWdzW2ZsYWddID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIGNvbnRleHQudHJhcHNbZmxhZ106CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGZsYWcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoZmxhZykKKworICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTksIEVtaW4gPSAtNDI1MDAwMDAwLCBFbWF4ID0gNDI1MDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIHRyYXBzPVtdLCBmbGFncz1bXSkKKworICAgICAgICAjIG9wZXJhdGlvbnMgdGhhdCByYWlzZSB2YXJpb3VzIGZsYWdzLCBpbiB0aGUgZm9ybSAoZnVuY3Rpb24sIGFyZ2xpc3QpCisgICAgICAgIG9wZXJhdGlvbnMgPSBbCisgICAgICAgICAgICAoY29udGV4dC5fYXBwbHksIFtEZWNpbWFsKCIxMDBFLTQyNTAwMDAxMCIpXSksCisgICAgICAgICAgICAoY29udGV4dC5zcXJ0LCBbRGVjaW1hbCgyKV0pLAorICAgICAgICAgICAgKGNvbnRleHQuYWRkLCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKKyAgICAgICAgICAgIChjb250ZXh0Lm11bHRpcGx5LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKKyAgICAgICAgICAgIChjb250ZXh0LnN1YnRyYWN0LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKKyAgICAgICAgICAgIF0KKworICAgICAgICAjIHRyeSB2YXJpb3VzIGZsYWdzIGluZGl2aWR1YWxseSwgdGhlbiBhIHdob2xlIGxvdCBhdCBvbmNlCisgICAgICAgIGZsYWdzZXRzID0gW1tJbmV4YWN0XSwgW1JvdW5kZWRdLCBbVW5kZXJmbG93XSwgW0NsYW1wZWRdLCBbU3Vibm9ybWFsXSwKKyAgICAgICAgICAgICAgICAgICAgW0luZXhhY3QsIFJvdW5kZWQsIFVuZGVyZmxvdywgQ2xhbXBlZCwgU3Vibm9ybWFsXV0KKworICAgICAgICBmb3IgZm4sIGFyZ3MgaW4gb3BlcmF0aW9uczoKKyAgICAgICAgICAgICMgZmluZCBhbnN3ZXIgYW5kIGZsYWdzIHJhaXNlZCB1c2luZyBhIGNsZWFuIGNvbnRleHQKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gZm4oKmFyZ3MpCisgICAgICAgICAgICBmbGFncyA9IFtrIGZvciBrLCB2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorCisgICAgICAgICAgICBmb3IgZXh0cmFfZmxhZ3MgaW4gZmxhZ3NldHM6CisgICAgICAgICAgICAgICAgIyBzZXQgZmxhZ3MsIGJlZm9yZSBjYWxsaW5nIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJvcihjb250ZXh0LCBmbGFnKQorICAgICAgICAgICAgICAgIG5ld19hbnMgPSBmbigqYXJncykKKworICAgICAgICAgICAgICAgICMgZmxhZ3MgdGhhdCB3ZSBleHBlY3QgdG8gYmUgc2V0IGFmdGVyIHRoZSBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncyA9IGxpc3QoZmxhZ3MpCisgICAgICAgICAgICAgICAgZm9yIGZsYWcgaW4gZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgIGlmIGZsYWcgbm90IGluIGV4cGVjdGVkX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MuYXBwZW5kKGZsYWcpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3Muc29ydChrZXk9aWQpCisKKyAgICAgICAgICAgICAgICAjIGZsYWdzIHdlIGFjdHVhbGx5IGdvdAorICAgICAgICAgICAgICAgIG5ld19mbGFncyA9IFtrIGZvciBrLHYgaW4gY29udGV4dC5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzLnNvcnQoa2V5PWlkKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIG5ld19hbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIHByb2R1Y2VzIGRpZmZlcmVudCBhbnN3ZXJzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICVzLCBnb3QgJXMuIiAlIChhbnMsIG5ld19hbnMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2ZsYWdzLCBleHBlY3RlZF9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlcmF0aW9uIHJhaXNlcyBkaWZmZXJlbnQgZmxhZ3MgZGVwZW5kaW5nIG9uIGZsYWdzIHNldDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICVzLCBnb3QgJXMiICUgKGV4cGVjdGVkX2ZsYWdzLCBuZXdfZmxhZ3MpKQorCisgICAgZGVmIHRlc3RfZmxhZ19jb21wYXJpc29ucyhzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKKworICAgICAgICBjID0gQ29udGV4dCgpCisKKyAgICAgICAgIyBWYWxpZCBTaWduYWxEaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgYy50cmFwcykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjLnRyYXBzLCBjLmZsYWdzKQorCisgICAgICAgIGMuZmxhZ3MgPSBjLnRyYXBzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgYy50cmFwcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRyYXBzLCBjLmZsYWdzKQorCisgICAgICAgIGMuZmxhZ3NbUm91bmRlZF0gPSBUcnVlCisgICAgICAgIGMudHJhcHMgPSBjLmZsYWdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgYy50cmFwcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRyYXBzLCBjLmZsYWdzKQorCisgICAgICAgIGQgPSB7fQorICAgICAgICBkLnVwZGF0ZShjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgZCkKKworICAgICAgICBkW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgICAgICAjIEludmFsaWQgU2lnbmFsRGljdAorICAgICAgICBkID0ge0luZXhhY3Q6RmFsc2V9CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZCwgYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjLmZsYWdzLCBkKQorCisgICAgICAgIGQgPSBbInh5eiJdCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZCwgYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjLmZsYWdzLCBkKQorCisgICAgQHJlcXVpcmVzX0lFRUVfNzU0CisgICAgZGVmIHRlc3RfZmxvYXRfb3BlcmF0aW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgICMjIyMjIHRyYXAgaXMgb2ZmIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMgaW1wbGljaXQgY29udmVyc2lvbiBzZXRzIHRoZSBmbGFnCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg3LjUpLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNyZWF0ZV9kZWNpbWFsKDcuNSksIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyBleHBsaWNpdCBjb252ZXJzaW9uIGRvZXMgbm90IHNldCB0aGUgZmxhZworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gRGVjaW1hbC5mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgICAgICAjIGNvbXBhcmlzb24gc2V0cyB0aGUgZmxhZworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IGMuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMjIyMjIHNldCB0aGUgdHJhcAorICAgICAgICAgICAgYy50cmFwc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisKKyAgICAgICAgICAgICMgaW1wbGljaXQgY29udmVyc2lvbiByYWlzZXMKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmxvYXRPcGVyYXRpb24sIERlY2ltYWwsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGbG9hdE9wZXJhdGlvbiwgYy5jcmVhdGVfZGVjaW1hbCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIGV4cGxpY2l0IGNvbnZlcnNpb24gaXMgc2lsZW50CisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBEZWNpbWFsLmZyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gYy5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICBkZWYgdGVzdF9mbG9hdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBkZWYgYXNzZXJ0X2F0dHIoYSwgYiwgYXR0ciwgY29udGV4dCwgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBmID0gZ2V0YXR0cihhLCBhdHRyKQorICAgICAgICAgICAgaWYgc2lnbmFsID09IEZsb2F0T3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNpZ25hbCwgZiwgYikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmKGIpLCBUcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgIHNtYWxsX2QgPSBEZWNpbWFsKCcwLjI1JykKKyAgICAgICAgYmlnX2QgPSBEZWNpbWFsKCczLjAnKQorICAgICAgICBzbWFsbF9mID0gMC4yNQorICAgICAgICBiaWdfZiA9IDMuMAorCisgICAgICAgIHplcm9fZCA9IERlY2ltYWwoJzAuMCcpCisgICAgICAgIG5lZ196ZXJvX2QgPSBEZWNpbWFsKCctMC4wJykKKyAgICAgICAgemVyb19mID0gMC4wCisgICAgICAgIG5lZ196ZXJvX2YgPSAtMC4wCisKKyAgICAgICAgaW5mX2QgPSBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgIG5lZ19pbmZfZCA9IERlY2ltYWwoJy1JbmZpbml0eScpCisgICAgICAgIGluZl9mID0gZmxvYXQoJ2luZicpCisgICAgICAgIG5lZ19pbmZfZiA9IGZsb2F0KCctaW5mJykKKworICAgICAgICBkZWYgZG9pdChjLCBzaWduYWw9Tm9uZSk6CisgICAgICAgICAgICAjIE9yZGVyCisgICAgICAgICAgICBmb3IgYXR0ciBpbiAnX19sdF9fJywgJ19fbGVfXyc6CisgICAgICAgICAgICAgICAgYXNzZXJ0X2F0dHIoc21hbGxfZCwgYmlnX2YsIGF0dHIsIGMsIHNpZ25hbCkKKworICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ19fZ3RfXycsICdfX2dlX18nOgorICAgICAgICAgICAgICAgIGFzc2VydF9hdHRyKGJpZ19kLCBzbWFsbF9mLCBhdHRyLCBjLCBzaWduYWwpCisKKyAgICAgICAgICAgICMgRXF1YWxpdHkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIHNtYWxsX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfemVyb19kLCBuZWdfemVyb19mLCAnX19lcV9fJywgYywgTm9uZSkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ196ZXJvX2QsIHplcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHplcm9fZCwgbmVnX3plcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cih6ZXJvX2QsIHplcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ19pbmZfZCwgbmVnX2luZl9mLCAnX19lcV9fJywgYywgTm9uZSkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKGluZl9kLCBpbmZfZiwgJ19fZXFfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgICMgSW5lcXVhbGl0eQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoc21hbGxfZCwgYmlnX2YsICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihEZWNpbWFsKCcwLjEnKSwgMC4xLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX2luZl9kLCBpbmZfZiwgJ19fbmVfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihpbmZfZCwgbmVnX2luZl9mLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIoRGVjaW1hbCgnTmFOJyksIGZsb2F0KCduYW4nKSwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgZGVmIHRlc3RfY29udGFpbmVycyhjLCBzaWduYWw9Tm9uZSk6CisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHMgPSBzZXQoWzEwMC4wLCBEZWNpbWFsKCcxMDAuMCcpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGlmIHNpZ25hbDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzaWduYWwsIHNvcnRlZCwgWzEuMCwgRGVjaW1hbCgnMTAuMCcpXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcyA9IHNvcnRlZChbMTAuMCwgRGVjaW1hbCgnMTAuMCcpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBiID0gMTAuMCBpbiBbRGVjaW1hbCgnMTAuMCcpLCAxLjBdCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYiA9IDEwLjAgaW4ge0RlY2ltYWwoJzEwLjAnKTonYScsIDEuMDonYid9CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgbmMgPSBDb250ZXh0KCkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobmMpIGFzIGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICAgICAgZG9pdChjLCBzaWduYWw9Tm9uZSkKKyAgICAgICAgICAgIHRlc3RfY29udGFpbmVycyhjLCBzaWduYWw9Tm9uZSkKKworICAgICAgICAgICAgYy50cmFwc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBkb2l0KGMsIHNpZ25hbD1GbG9hdE9wZXJhdGlvbikKKyAgICAgICAgICAgIHRlc3RfY29udGFpbmVycyhjLCBzaWduYWw9RmxvYXRPcGVyYXRpb24pCisKKyAgICBkZWYgdGVzdF9mbG9hdF9vcGVyYXRpb25fZGVmYXVsdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgRmxvYXRPcGVyYXRpb249IHNlbGYuZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb250ZXh0LnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICBjb250ZXh0LmNsZWFyX3RyYXBzKCkKKyAgICAgICAgY29udGV4dC50cmFwc1tJbmV4YWN0XSA9IFRydWUKKyAgICAgICAgY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRleHQudHJhcHNbSW5leGFjdF0pCisKK2NsYXNzIENDb250ZXh0RmxhZ3MoQ29udGV4dEZsYWdzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0RmxhZ3MoQ29udGV4dEZsYWdzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBTcGVjaWFsQ29udGV4dHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgdGhlIGNvbnRleHQgdGVtcGxhdGVzLiIiIgorCisgICAgZGVmIHRlc3RfY29udGV4dF90ZW1wbGF0ZXMoc2VsZik6CisgICAgICAgIEJhc2ljQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5CYXNpY0NvbnRleHQKKyAgICAgICAgRXh0ZW5kZWRDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkV4dGVuZGVkQ29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5zZXRjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IHNlbGYuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBVbmRlcmZsb3cgPSBzZWxmLmRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIENsYW1wZWQgPSBzZWxmLmRlY2ltYWwuQ2xhbXBlZAorCisgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIEJhc2ljQ29udGV4dCwgJ3RyYXBzJywKKyAgICAgICAgICAgIFtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIFVuZGVyZmxvdywgQ2xhbXBlZF0KKyAgICAgICAgKQorCisgICAgICAgIHNhdmVjb250ZXh0ID0gZ2V0Y29udGV4dCgpLmNvcHkoKQorICAgICAgICBiYXNpY19jb250ZXh0X3ByZWMgPSBCYXNpY0NvbnRleHQucHJlYworICAgICAgICBleHRlbmRlZF9jb250ZXh0X3ByZWMgPSBFeHRlbmRlZENvbnRleHQucHJlYworCisgICAgICAgIGV4ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBCYXNpY0NvbnRleHQucHJlYyA9IEV4dGVuZGVkQ29udGV4dC5wcmVjID0gNDQxCisgICAgICAgICAgICBmb3IgdGVtcGxhdGUgaW4gQmFzaWNDb250ZXh0LCBFeHRlbmRlZENvbnRleHQ6CisgICAgICAgICAgICAgICAgc2V0Y29udGV4dCh0ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjLCB0ZW1wbGF0ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgNDQxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleCA9IGUuX19jbGFzc19fCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBCYXNpY0NvbnRleHQucHJlYyA9IGJhc2ljX2NvbnRleHRfcHJlYworICAgICAgICAgICAgRXh0ZW5kZWRDb250ZXh0LnByZWMgPSBleHRlbmRlZF9jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIHNldGNvbnRleHQoc2F2ZWNvbnRleHQpCisgICAgICAgICAgICBpZiBleDoKKyAgICAgICAgICAgICAgICByYWlzZSBleAorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorICAgICAgICBCYXNpY0NvbnRleHQgPSBzZWxmLmRlY2ltYWwuQmFzaWNDb250ZXh0CisgICAgICAgIEV4dGVuZGVkQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5FeHRlbmRlZENvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuc2V0Y29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhc2ljQ29udGV4dC5wcmVjLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEV4dGVuZGVkQ29udGV4dC5wcmVjLCA5KQorCisgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIERlZmF1bHRDb250ZXh0LCAndHJhcHMnLAorICAgICAgICAgICAgW0ludmFsaWRPcGVyYXRpb24sIERpdmlzaW9uQnlaZXJvLCBPdmVyZmxvd10KKyAgICAgICAgKQorCisgICAgICAgIHNhdmVjb250ZXh0ID0gZ2V0Y29udGV4dCgpLmNvcHkoKQorICAgICAgICBkZWZhdWx0X2NvbnRleHRfcHJlYyA9IERlZmF1bHRDb250ZXh0LnByZWMKKworICAgICAgICBleCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgc2F2ZXByZWMgPSBjLnByZWMKKworICAgICAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IDk2MQorICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIHNhdmVwcmVjKQorCisgICAgICAgICAgICBzZXRjb250ZXh0KERlZmF1bHRDb250ZXh0KQorICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjLCBEZWZhdWx0Q29udGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA5NjEpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGV4ID0gZS5fX2NsYXNzX18KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSBkZWZhdWx0X2NvbnRleHRfcHJlYworICAgICAgICAgICAgc2V0Y29udGV4dChzYXZlY29udGV4dCkKKyAgICAgICAgICAgIGlmIGV4OgorICAgICAgICAgICAgICAgIHJhaXNlIGV4CisKK2NsYXNzIENTcGVjaWFsQ29udGV4dHMoU3BlY2lhbENvbnRleHRzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlTcGVjaWFsQ29udGV4dHMoU3BlY2lhbENvbnRleHRzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0SW5wdXRWYWxpZGF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY29udGV4dChzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkRlZmF1bHRDb250ZXh0CisKKyAgICAgICAgYyA9IERlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgICMgcHJlYywgRW1heAorICAgICAgICBmb3IgYXR0ciBpbiBbJ3ByZWMnLCAnRW1heCddOgorICAgICAgICAgICAgc2V0YXR0cihjLCBhdHRyLCA5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYywgYXR0ciksIDk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAneHl6JykKKworICAgICAgICAjIEVtaW4KKyAgICAgICAgc2V0YXR0cihjLCAnRW1pbicsIC05OTk5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihjLCAnRW1pbicpLCAtOTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnRW1pbicsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAoMSwyLDMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgJ3h5eicpCisKKyAgICAgICAgIyBjYXBpdGFscywgY2xhbXAKKyAgICAgICAgZm9yIGF0dHIgaW4gWydjYXBpdGFscycsICdjbGFtcCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBbMSwyLDNdKQorCisgICAgICAgICMgSW52YWxpZCBhdHRyaWJ1dGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGMsICdlbWF4JywgMTAwKQorCisgICAgICAgICMgSW52YWxpZCBzaWduYWwgZGljdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB7J0ludmFsaWRPcGVyYXRpb24nOjB9KQorCisgICAgICAgICMgQXR0cmlidXRlcyBjYW5ub3QgYmUgZGVsZXRlZAorICAgICAgICBmb3IgYXR0ciBpbiBbJ3ByZWMnLCAnRW1heCcsICdFbWluJywgJ3JvdW5kaW5nJywgJ2NhcGl0YWxzJywgJ2NsYW1wJywKKyAgICAgICAgICAgICAgICAgICAgICdmbGFncycsICd0cmFwcyddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGMuX19kZWxhdHRyX18sIGF0dHIpCisKKyAgICAgICAgIyBJbnZhbGlkIGF0dHJpYnV0ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhdHRyLCBjLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIDkpCisKKyAgICAgICAgIyBJbnZhbGlkIHZhbHVlcyBpbiBjb25zdHJ1Y3RvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIHJvdW5kaW5nPTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCByb3VuZGluZz0neHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgY2xhbXA9MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgY2FwaXRhbHM9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBDb250ZXh0LCBmbGFncz1bIlAiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIENvbnRleHQsIHRyYXBzPVsiUSJdKQorCisgICAgICAgICMgVHlwZSBlcnJvciBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgZmxhZ3M9KDAsMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgdHJhcHM9KDEsMCkpCisKK2NsYXNzIENDb250ZXh0SW5wdXRWYWxpZGF0aW9uKENvbnRleHRJbnB1dFZhbGlkYXRpb24pOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvbnRleHRJbnB1dFZhbGlkYXRpb24oQ29udGV4dElucHV0VmFsaWRhdGlvbik6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dFN1YmNsYXNzaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGRlY2ltYWwgPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IGRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gZGVjaW1hbC5Db250ZXh0CisgICAgICAgIENsYW1wZWQgPSBkZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBkZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIEluZXhhY3QgPSBkZWNpbWFsLkluZXhhY3QKKyAgICAgICAgT3ZlcmZsb3cgPSBkZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFJvdW5kZWQgPSBkZWNpbWFsLlJvdW5kZWQKKyAgICAgICAgU3Vibm9ybWFsID0gZGVjaW1hbC5TdWJub3JtYWwKKyAgICAgICAgVW5kZXJmbG93ID0gZGVjaW1hbC5VbmRlcmZsb3cKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IGRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisgICAgICAgIGNsYXNzIE15Q29udGV4dChDb250ZXh0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcHM9Tm9uZSk6CisgICAgICAgICAgICAgICAgQ29udGV4dC5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgICAgIGlmIHByZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlYyA9IHByZWMKKyAgICAgICAgICAgICAgICBpZiByb3VuZGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yb3VuZGluZyA9IHJvdW5kaW5nCisgICAgICAgICAgICAgICAgaWYgRW1pbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5FbWluID0gRW1pbgorICAgICAgICAgICAgICAgIGlmIEVtYXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuRW1heCA9IEVtYXgKKyAgICAgICAgICAgICAgICBpZiBjYXBpdGFscyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscyA9IGNhcGl0YWxzCisgICAgICAgICAgICAgICAgaWYgY2xhbXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhbXAgPSBjbGFtcAorICAgICAgICAgICAgICAgIGlmIGZsYWdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZsYWdzLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0ge3Y6KHYgaW4gZmxhZ3MpIGZvciB2IGluIE9yZGVyZWRTaWduYWxzW2RlY2ltYWxdICsgZmxhZ3N9CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBmbGFncworICAgICAgICAgICAgICAgIGlmIHRyYXBzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHRyYXBzLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzID0ge3Y6KHYgaW4gdHJhcHMpIGZvciB2IGluIE9yZGVyZWRTaWduYWxzW2RlY2ltYWxdICsgdHJhcHN9CisgICAgICAgICAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcworCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IE15Q29udGV4dCgpCisgICAgICAgIGZvciBhdHRyIGluICgncHJlYycsICdyb3VuZGluZycsICdFbWluJywgJ0VtYXgnLCAnY2FwaXRhbHMnLCAnY2xhbXAnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZsYWdzJywgJ3RyYXBzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYywgYXR0ciksIGdldGF0dHIoZCwgYXR0cikpCisKKyAgICAgICAgIyBwcmVjCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J3ByZWMnOi0xfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjLnF1YW50aXplLCBEZWNpbWFsKCc5ZTInKSwgMCkKKworICAgICAgICAjIHJvdW5kaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlDb250ZXh0LCAqKnsncm91bmRpbmcnOidYWVonfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChyb3VuZGluZz1ST1VORF9ET1dOLCBwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3VuZGluZywgUk9VTkRfRE9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBsdXMoRGVjaW1hbCgnOS45JykpLCA5KQorCisgICAgICAgICMgRW1pbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydFbWluJzo1fSkKKyAgICAgICAgYyA9IE15Q29udGV4dChFbWluPS0xLCBwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMSkKKyAgICAgICAgeCA9IGMuYWRkKERlY2ltYWwoJzFlLTk5JyksIERlY2ltYWwoJzIuMjM0ZS0yMDAwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMC4wJykpCisgICAgICAgIGZvciBzaWduYWwgaW4gKEluZXhhY3QsIFVuZGVyZmxvdywgU3Vibm9ybWFsLCBSb3VuZGVkLCBDbGFtcGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW3NpZ25hbF0pCisKKyAgICAgICAgIyBFbWF4CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J0VtYXgnOi0xfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChFbWF4PTEsIHByZWM9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCBjLmFkZCwgRGVjaW1hbCgnMWU5OScpLCBEZWNpbWFsKCcyLjIzNGUyMDAwJykpCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDOgorICAgICAgICAgICAgZm9yIHNpZ25hbCBpbiAoSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW3NpZ25hbF0pCisKKyAgICAgICAgIyBjYXBpdGFscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydjYXBpdGFscyc6LTF9KQorICAgICAgICBjID0gTXlDb250ZXh0KGNhcGl0YWxzPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgMCkKKyAgICAgICAgeCA9IGMuY3JlYXRlX2RlY2ltYWwoJzFFMjIyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX3NjaV9zdHJpbmcoeCksICcxZSsyMjInKQorCisgICAgICAgICMgY2xhbXAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnY2xhbXAnOjJ9KQorICAgICAgICBjID0gTXlDb250ZXh0KGNsYW1wPTEsIEVtYXg9OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgMSkKKyAgICAgICAgeCA9IGMucGx1cyhEZWNpbWFsKCcxZTk5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHgpLCAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFKzk5JykKKworICAgICAgICAjIGZsYWdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlDb250ZXh0LCAqKnsnZmxhZ3MnOidYWVonfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChmbGFncz1bUm91bmRlZCwgRGl2aXNpb25CeVplcm9dKQorICAgICAgICBmb3Igc2lnbmFsIGluIChSb3VuZGVkLCBEaXZpc2lvbkJ5WmVybyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgdHJhcHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeUNvbnRleHQsICoqeyd0cmFwcyc6J1hZWid9KQorICAgICAgICBjID0gTXlDb250ZXh0KHRyYXBzPVtSb3VuZGVkLCBEaXZpc2lvbkJ5WmVyb10pCisgICAgICAgIGZvciBzaWduYWwgaW4gKFJvdW5kZWQsIERpdmlzaW9uQnlaZXJvKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLnRyYXBzW3NpZ25hbF0pCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBmb3Igc2lnbmFsIGluIE9yZGVyZWRTaWduYWxzW2RlY2ltYWxdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLnRyYXBzW3NpZ25hbF0pCisKK2NsYXNzIENDb250ZXh0U3ViY2xhc3NpbmcoQ29udGV4dFN1YmNsYXNzaW5nKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0U3ViY2xhc3NpbmcoQ29udGV4dFN1YmNsYXNzaW5nKToKKyAgICBkZWNpbWFsID0gUAorCitAc2tpcF9pZl9leHRyYV9mdW5jdGlvbmFsaXR5CitjbGFzcyBDaGVja0F0dHJpYnV0ZXModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbW9kdWxlX2F0dHJpYnV0ZXMoc2VsZik6CisKKyAgICAgICAgIyBBcmNoaXRlY3R1cmUgZGVwZW5kZW50IGNvbnRleHQgbGltaXRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NQVhfUFJFQywgUC5NQVhfUFJFQykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1BWF9FTUFYLCBQLk1BWF9FTUFYKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUlOX0VNSU4sIFAuTUlOX0VNSU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NSU5fRVRJTlksIFAuTUlOX0VUSU5ZKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShDLkhBVkVfVEhSRUFEUyBpcyBUcnVlIG9yIEMuSEFWRV9USFJFQURTIGlzIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUC5IQVZFX1RIUkVBRFMgaXMgVHJ1ZSBvciBQLkhBVkVfVEhSRUFEUyBpcyBGYWxzZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX192ZXJzaW9uX18sIFAuX192ZXJzaW9uX18pCisKKyAgICAgICAgeCA9IGRpcihDKQorICAgICAgICB5ID0gW3MgZm9yIHMgaW4gZGlyKFApIGlmICdfXycgaW4gcyBvciBub3Qgcy5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHgpIC0gc2V0KHkpLCBzZXQoKSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfYXR0cmlidXRlcyhzZWxmKToKKworICAgICAgICB4ID0gW3MgZm9yIHMgaW4gZGlyKEMuQ29udGV4dCgpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICB5ID0gW3MgZm9yIHMgaW4gZGlyKFAuQ29udGV4dCgpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsX2F0dHJpYnV0ZXMoc2VsZik6CisKKyAgICAgICAgeCA9IFtzIGZvciBzIGluIGRpcihDLkRlY2ltYWwoOSkpIGlmICdfXycgaW4gcyBvciBub3Qgcy5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIHkgPSBbcyBmb3IgcyBpbiBkaXIoQy5EZWNpbWFsKDkpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisKK2NsYXNzIENvdmVyYWdlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FkanVzdGVkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJzEyMzRlOTk5OScpLmFkanVzdGVkKCksIDEwMDAyKQorICAgICAgICAjIFhYWCByYWlzZT8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCduYW4nKS5hZGp1c3RlZCgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJ2luZicpLmFkanVzdGVkKCksIDApCisKKyAgICBkZWYgdGVzdF9jYW5vbmljYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICB4ID0gRGVjaW1hbCg5KS5jYW5vbmljYWwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDkpCisKKyAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICB4ID0gYy5jYW5vbmljYWwoRGVjaW1hbCg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA5KQorCisgICAgZGVmIHRlc3RfY29udGV4dF9yZXByKHNlbGYpOgorICAgICAgICBjID0gc2VsZi5kZWNpbWFsLkRlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgIGMucHJlYyA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtYXggPSA0MjUwMDAwMDAKKyAgICAgICAgYy5FbWluID0gLTQyNTAwMDAwMAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9ET1dOCisgICAgICAgIGMuY2FwaXRhbHMgPSAwCisgICAgICAgIGMuY2xhbXAgPSAxCisgICAgICAgIGZvciBzaWcgaW4gT3JkZXJlZFNpZ25hbHNbc2VsZi5kZWNpbWFsXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IEZhbHNlCisgICAgICAgICAgICBjLnRyYXBzW3NpZ10gPSBGYWxzZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtdLCB0cmFwcz1bXSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMQorICAgICAgICAgICAgYy5FbWF4ID0gMQorICAgICAgICAgICAgYy5FbWluID0gLTEKKworICAgICAgICAgICAgIyBhYnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWJzKERlY2ltYWwoIi0xMCIpKSwgMTApCisgICAgICAgICAgICAjIGFkZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCI3IikgKyAxLCA4KQorICAgICAgICAgICAgIyBkaXZpZGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAvIDUsIDIpCisgICAgICAgICAgICAjIGRpdmlkZV9pbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAvLyA3LCAxKQorICAgICAgICAgICAgIyBmbWEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMS4yIikuZm1hKERlY2ltYWwoIjAuMDEiKSwgMSksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKERlY2ltYWwoIk5hTiIpLmZtYSg3LCAxKS5pc19uYW4oKSwgVHJ1ZSkKKyAgICAgICAgICAgICMgdGhyZWUgYXJnIHBvd2VyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvdyhEZWNpbWFsKDEwKSwgMiwgNyksIDIpCisgICAgICAgICAgICAjIGV4cAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjAxIikuZXhwKCksIDMpCisgICAgICAgICAgICAjIGlzX25vcm1hbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhEZWNpbWFsKCIwLjAxIikuaXNfbm9ybWFsKCksIEZhbHNlKQorICAgICAgICAgICAgIyBpc19zdWJub3JtYWwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRGVjaW1hbCgiMC4wMSIpLmlzX3N1Ym5vcm1hbCgpLCBUcnVlKQorICAgICAgICAgICAgIyBsbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIyMCIpLmxuKCksIDMpCisgICAgICAgICAgICAjIGxvZzEwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjIwIikubG9nMTAoKSwgMSkKKyAgICAgICAgICAgICMgbG9nYgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCI1ODAiKS5sb2diKCksIDIpCisgICAgICAgICAgICAjIGxvZ2ljYWxfaW52ZXJ0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubG9naWNhbF9pbnZlcnQoKSwgMSkKKyAgICAgICAgICAgICMgbWludXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLURlY2ltYWwoIi0xMCIpLCAxMCkKKyAgICAgICAgICAgICMgbXVsdGlwbHkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMiIpICogNCwgOCkKKyAgICAgICAgICAgICMgbmV4dF9taW51cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLm5leHRfbWludXMoKSwgOSkKKyAgICAgICAgICAgICMgbmV4dF9wbHVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubmV4dF9wbHVzKCksIERlY2ltYWwoJzJFKzEnKSkKKyAgICAgICAgICAgICMgbm9ybWFsaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIi0xMCIpLm5vcm1hbGl6ZSgpLCBEZWNpbWFsKCctMUUrMScpKQorICAgICAgICAgICAgIyBudW1iZXJfY2xhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5udW1iZXJfY2xhc3MoKSwgJytOb3JtYWwnKQorICAgICAgICAgICAgIyBwbHVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCtEZWNpbWFsKCItMSIpLCAtMSkKKyAgICAgICAgICAgICMgcmVtYWluZGVyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgJSA3LCAzKQorICAgICAgICAgICAgIyBzdWJ0cmFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC0gNywgMykKKyAgICAgICAgICAgICMgdG9faW50ZWdyYWxfZXhhY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMS4xMjM0NSIpLnRvX2ludGVncmFsX2V4YWN0KCksIDEpCisKKyAgICAgICAgICAgICMgQm9vbGVhbiBmdW5jdGlvbnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIxIikuaXNfY2Fub25pY2FsKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMSIpLmlzX2Zpbml0ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjEiKS5pc19maW5pdGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCJzbmFuIikuaXNfc25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIi0xIikuaXNfc2lnbmVkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMCIpLmlzX3plcm8oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIwIikuaXNfemVybygpKQorCisgICAgICAgICMgQ29weQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxMDAwMAorICAgICAgICAgICAgeCA9IDEyMjggKiogMTUyMworICAgICAgICAgICAgeSA9IC1EZWNpbWFsKHgpCisKKyAgICAgICAgICAgIHogPSB5LmNvcHlfYWJzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeiwgeCkKKworICAgICAgICAgICAgeiA9IHkuY29weV9uZWdhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgICAgICAgICB6ID0geS5jb3B5X3NpZ24oRGVjaW1hbCgxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeiwgeCkKKworICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCIxMDkxMjgzNzEyOSIpLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBEZWNpbWFsKCcxMDkwMTkzNScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCBEZWNpbWFsKCcxOTQnKSkKKworICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJOYU4iKSwgNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiTmFOIiksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKworICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiaW5mIiksIERlY2ltYWwoImluZiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoImluZiIpLCAxMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19pbmZpbml0ZSgpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKDApLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSBGYWxzZQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoMTEpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfaW5maW5pdGUoKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZmxhZ3NbRGl2aXNpb25CeVplcm9dKQorCisgICAgZGVmIHRlc3RfcG93ZXIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFJvdW5kZWQgPSBzZWxmLmRlY2ltYWwuUm91bmRlZAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDMKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjAiKSAqKiAxMDAsIERlY2ltYWwoJzEuMDAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW1JvdW5kZWRdKQorCisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBjLnRyYXBzW092ZXJmbG93XSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAwMDApICoqIERlY2ltYWwoIjAuNSIpLCBEZWNpbWFsKCdpbmYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgICAgICB4ID0gRGVjaW1hbCg5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUxIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKKworICAgIGRlZiB0ZXN0X3JhZGl4KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEiKS5yYWRpeCgpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJhZGl4KCksIDEwKQorCisgICAgZGVmIHRlc3Rfcm9wKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBmb3IgYXR0ciBpbiAoJ19fcmFkZF9fJywgJ19fcnN1Yl9fJywgJ19fcm11bF9fJywgJ19fcnRydWVkaXZfXycsCisgICAgICAgICAgICAgICAgICAgICAnX19yZGl2bW9kX18nLCAnX19ybW9kX18nLCAnX19yZmxvb3JkaXZfXycsICdfX3Jwb3dfXycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKERlY2ltYWwoIjEiKSwgYXR0cikoInh5eiIpLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X3JvdW5kKHNlbGYpOgorICAgICAgICAjIFB5dGhvbjMgYmVoYXZpb3I6IHJvdW5kKCkgcmV0dXJucyBEZWNpbWFsCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGMucHJlYyA9IDI4CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiOS45OSIpLl9fcm91bmRfXygpKSwgIjEwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiOS45OWUtNSIpLl9fcm91bmRfXygpKSwgIjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIxLjIzNDU2Nzg5IikuX19yb3VuZF9fKDUpKSwgIjEuMjM0NTciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIxLjIzNDUiKS5fX3JvdW5kX18oMTApKSwgIjEuMjM0NTAwMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NSIpLl9fcm91bmRfXygtMTApKSwgIjBFKzEwIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sICI1IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLCA1LCA4KQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIGMgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMuY3JlYXRlX2RlY2ltYWwsIFsiJSJdKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDk5OTkKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDEyMjEqKjEyNzEpIC8gMTAqKjM5MjMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHgpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDIpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgIHggPSAtKDExNzIgKiogMTcxMikKKworICAgICAgICB5ID0gYy5jb3B5X2Ficyh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIC14KQorCisgICAgICAgIHkgPSBjLmNvcHlfbmVnYXRlKHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKKyAgICAgICAgeSA9IGMuY29weV9zaWduKHgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKK2NsYXNzIENDb3ZlcmFnZShDb3ZlcmFnZSk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q292ZXJhZ2UoQ292ZXJhZ2UpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIFB5RnVuY3Rpb25hbGl0eSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiRXh0cmEgZnVuY3Rpb25hbGl0eSBpbiBkZWNpbWFsLnB5IiIiCisKKyAgICBkZWYgdGVzdF9weV9xdWFudGl6ZV93YXRjaGV4cChzZWxmKToKKyAgICAgICAgIyB3YXRjaGV4cCBmdW5jdGlvbmFsaXR5CisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorICAgICAgICAgICAgeCA9IERlY2ltYWwoOTk5OTkpLnF1YW50aXplKERlY2ltYWwoIjFlMyIpLCB3YXRjaGV4cD1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMS4wMEUrNScpKQorCisgICAgZGVmIHRlc3RfcHlfYWx0ZXJuYXRlX2Zvcm1hdHRpbmcoc2VsZik6CisgICAgICAgICMgdHJpcGxlcyBnaXZpbmcgYSBmb3JtYXQsIGEgRGVjaW1hbCwgYW5kIHRoZSBleHBlY3RlZCByZXN1bHQKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAorCisgICAgICAgIHRlc3RfdmFsdWVzID0gWworICAgICAgICAgICAgIyBJc3N1ZSA3MDk0OiBBbHRlcm5hdGUgZm9ybWF0dGluZyAoc3BlY2lmaWVkIGJ5ICMpCisgICAgICAgICAgICAoJy4wZScsICcxLjAnLCAnMWUrMCcpLAorICAgICAgICAgICAgKCcjLjBlJywgJzEuMCcsICcxLmUrMCcpLAorICAgICAgICAgICAgKCcuMGYnLCAnMS4wJywgJzEnKSwKKyAgICAgICAgICAgICgnIy4wZicsICcxLjAnLCAnMS4nKSwKKyAgICAgICAgICAgICgnZycsICcxLjEnLCAnMS4xJyksCisgICAgICAgICAgICAoJyNnJywgJzEuMScsICcxLjEnKSwKKyAgICAgICAgICAgICgnLjBnJywgJzEnLCAnMScpLAorICAgICAgICAgICAgKCcjLjBnJywgJzEnLCAnMS4nKSwKKyAgICAgICAgICAgICgnLjAlJywgJzEuMCcsICcxMDAlJyksCisgICAgICAgICAgICAoJyMuMCUnLCAnMS4wJywgJzEwMC4lJyksCisgICAgICAgICAgICBdCisgICAgICAgIGZvciBmbXQsIGQsIHJlc3VsdCBpbiB0ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KERlY2ltYWwoZCksIGZtdCksIHJlc3VsdCkKKworY2xhc3MgUHlXaGl0ZWJveCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiV2hpdGUgYm94IHRlc3RpbmcgZm9yIGRlY2ltYWwucHkiIiIKKworICAgIGRlZiB0ZXN0X3B5X2V4YWN0X3Bvd2VyKHNlbGYpOgorICAgICAgICAjIFJhcmVseSBleGVyY2lzZWQgbGluZXMgaW4gX3Bvd2VyX2V4YWN0LgorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gOAorICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqMTYpICoqIERlY2ltYWwoIi0wLjUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcwLjAwMzkwNjI1JykpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDIqKjE2KSAqKiBEZWNpbWFsKCItMC42IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMC4wMDEyODg1ODE5JykpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIyNTZlNyIpICoqIERlY2ltYWwoIi0wLjUiKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgxNTI1ODc4OTA2MjUpICoqIERlY2ltYWwoJy0wLjA2MjUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCIwLjIiKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoIjE1MjU4Nzg5MDYyNWU3IikgKiogRGVjaW1hbCgnLTAuMDYyNScpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDUqKjI2NTkpICoqIERlY2ltYWwoJy0wLjA2MjUnKQorCisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTUyNTg3ODkwNjI1IikgKiogRGVjaW1hbCgnLTAuNScpCisgICAgICAgICAgICBjLnByZWMgPSAyMDEKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDIqKjU3OCkgKiogRGVjaW1hbCgiLTAuNSIpCisKKyAgICBkZWYgdGVzdF9weV9pbW11dGFiaWxpdHlfb3BlcmF0aW9ucyhzZWxmKToKICAgICAgICAgIyBEbyBvcGVyYXRpb25zIGFuZCBjaGVjayB0aGF0IGl0IGRpZG4ndCBjaGFuZ2UgY2hhbmdlIGludGVybmFsIG9iamVjdHMuCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBQLkRlZmF1bHRDb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBQLnNldGNvbnRleHQKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisgICAgICAgIGMudHJhcHMgPSBkaWN0KChzLCAwKSBmb3IgcyBpbiBPcmRlcmVkU2lnbmFsc1tQXSkKKyAgICAgICAgc2V0Y29udGV4dChjKQogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTI1ZTU1JykKICAgICAgICAgYjEgPSBEZWNpbWFsKCctMjVlNTUnKQpAQCAtMTY1OSw3MTMgKzQ1NzEsODM3IEBACiAgICAgICAgIGNoZWNrU2FtZURlYygidG9fZW5nX3N0cmluZyIpCiAgICAgICAgIGNoZWNrU2FtZURlYygidG9faW50ZWdyYWwiKQogCi0gICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6Ci0gICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCisgICAgZGVmIHRlc3RfcHlfZGVjaW1hbF9pZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAogCi0gICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZCA9IERlY2ltYWwoNDUpCisgICAgICAgIGUgPSBEZWNpbWFsKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNDUnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAotICAgICAgICBkMSA9IE15RGVjaW1hbCgxKQotICAgICAgICBkMiA9IE15RGVjaW1hbCgyKQotICAgICAgICBkID0gZDEgKyBkMgotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisgICAgZGVmIHRlc3RfcHlfcmVzY2FsZShzZWxmKToKKyAgICAgICAgIyBDb3ZlcmFnZQorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CiAKLSAgICAgICAgZCA9IGQxLm1heChkMikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiTmFOIikuX3Jlc2NhbGUoMywgUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKIAotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQotICAgICAgICBjID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKyAgICBkZWYgdGVzdF9weV9fcm91bmQoc2VsZik6CisgICAgICAgICMgQ292ZXJhZ2UKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAogCi0gICAgZGVmIHRlc3RfY29udmVyc2lvbnNfZnJvbV9pbnQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgdGhhdCBtZXRob2RzIHRha2luZyBhIHNlY29uZCBEZWNpbWFsIGFyZ3VtZW50IHdpbGwKLSAgICAgICAgIyBhbHdheXMgYWNjZXB0IGFuIGludGVnZXIgaW4gcGxhY2Ugb2YgYSBEZWNpbWFsLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZSgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmUoRGVjaW1hbCgzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbCgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbCgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZygzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfYW5kKDEwMDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfYW5kKERlY2ltYWwoMTAwMSkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoMTAwMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF9vcihEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX3hvcigxMDAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX3hvcihEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4KDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1heChEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5tYXhfbWFnKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1heF9tYWcoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1pbihEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5taW5fbWFnKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1pbl9tYWcoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubmV4dF90b3dhcmQoMTIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubmV4dF90b3dhcmQoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnF1YW50aXplKDEwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjM0KS5xdWFudGl6ZShEZWNpbWFsKDEwMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNzY4KS5yZW1haW5kZXJfbmVhcigxMjM0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxMjM0KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjMpLnJvdGF0ZSgxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMykucm90YXRlKERlY2ltYWwoMSkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzNCkuc2FtZV9xdWFudHVtKDEwMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkuc2FtZV9xdWFudHVtKERlY2ltYWwoMTAwMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJzkuMTIzJykuc2NhbGViKC0xMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJzkuMTIzJykuc2NhbGViKERlY2ltYWwoLTEwMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNDU2KS5zaGlmdCgtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0NTYpLnNoaWZ0KERlY2ltYWwoLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCgiMy4xMjM0IikuX3JvdW5kLCAwLCBST1VORF9VUCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIDY3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgNjcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKDQ1LCBEZWNpbWFsKDY3KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorY2xhc3MgQ0Z1bmN0aW9uYWxpdHkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gX2RlY2ltYWwiIiIKIAorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19pZWVlX2NvbnRleHQoc2VsZik6CisgICAgICAgICMgaXNzdWUgODc4NjogQWRkIHN1cHBvcnQgZm9yIElFRUUgNzU0IGNvbnRleHRzIHRvIGRlY2ltYWwgbW9kdWxlLgorICAgICAgICBJRUVFQ29udGV4dCA9IEMuSUVFRUNvbnRleHQKKyAgICAgICAgREVDSU1BTDMyID0gQy5ERUNJTUFMMzIKKyAgICAgICAgREVDSU1BTDY0ID0gQy5ERUNJTUFMNjQKKyAgICAgICAgREVDSU1BTDEyOCA9IEMuREVDSU1BTDEyOAogCi1jbGFzcyBEZWNpbWFsUHl0aG9uQVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBkZWYgYXNzZXJ0X3Jlc3Qoc2VsZiwgY29udGV4dCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuY2xhbXAsIDEpCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjb250ZXh0LCAndHJhcHMnLCBbXSkKKyAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGNvbnRleHQsICdmbGFncycsIFtdKQogCi0gICAgZGVmIHRlc3RfYWJjKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLk51bWJlcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLlJlYWwpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5OdW1iZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLlJlYWwpCisgICAgICAgIGMgPSBJRUVFQ29udGV4dChERUNJTUFMMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtOTUpCisgICAgICAgIGFzc2VydF9yZXN0KHNlbGYsIGMpCiAKLSAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBEZWNpbWFsKCctMy4xNDE1OTAwMDAnKQotICAgICAgICBwID0gcGlja2xlLmR1bXBzKGQpCi0gICAgICAgIGUgPSBwaWNrbGUubG9hZHMocCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQorICAgICAgICBjID0gSUVFRUNvbnRleHQoREVDSU1BTDY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzgzKQorICAgICAgICBhc3NlcnRfcmVzdChzZWxmLCBjKQogCi0gICAgZGVmIHRlc3RfaW50KHNlbGYpOgotICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgotICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQotICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQotICAgICAgICAgICAgZCA9IERlY2ltYWwocykKLSAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoaW50KGQpKSwgcikKKyAgICAgICAgYyA9IElFRUVDb250ZXh0KERFQ0lNQUwxMjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCAzNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDYxNDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtNjE0MykKKyAgICAgICAgYXNzZXJ0X3Jlc3Qoc2VsZiwgYykKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJy1uYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCdzbmFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnaW5mJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnLWluZicpKQorICAgICAgICAjIEludmFsaWQgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIElFRUVDb250ZXh0LCAyKio2MykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgSUVFRUNvbnRleHQsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBJRUVFQ29udGV4dCwgMTAyNCkKIAotICAgIGRlZiB0ZXN0X3RydW5jKHNlbGYpOgotICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgotICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQotICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQotICAgICAgICAgICAgZCA9IERlY2ltYWwocykKLSAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwobWF0aC50cnVuYyhkKSksIHIpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHQoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKIAotICAgIGRlZiB0ZXN0X2Zyb21fZmxvYXQoc2VsZik6CisgICAgICAgIGMgPSBDb250ZXh0KGZsYWdzPUMuRGVjQ2xhbXBlZCwgdHJhcHM9Qy5EZWNSb3VuZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2ZsYWdzLCBDLkRlY0NsYW1wZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fdHJhcHMsIEMuRGVjUm91bmRlZCkKIAotICAgICAgICBjbGFzcyAgTXlEZWNpbWFsKERlY2ltYWwpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHIgPSBNeURlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgTXlEZWNpbWFsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKLSAgICAgICAgICAgICAgICAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKLSAgICAgICAgYmlnaW50ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeURlY2ltYWwuZnJvbV9mbG9hdChiaWdpbnQpLCBNeURlY2ltYWwoYmlnaW50KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ05hTicpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ0luZmluaXR5JykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJy1JbmZpbml0eScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeURlY2ltYWwuZnJvbV9mbG9hdCwgJ2FiYycpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6Ci0gICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoTXlEZWNpbWFsLmZyb21fZmxvYXQoeCkpKSAjIHJvdW5kdHJpcAotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmKToKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAotICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBDb25kaXRpb24gZmxhZ3MKKyAgICAgICAgY29uZCA9ICgKKyAgICAgICAgICAgIEMuRGVjQ2xhbXBlZCwgQy5EZWNDb252ZXJzaW9uU3ludGF4LCBDLkRlY0RpdmlzaW9uQnlaZXJvLAorICAgICAgICAgICAgQy5EZWNEaXZpc2lvbkltcG9zc2libGUsIEMuRGVjRGl2aXNpb25VbmRlZmluZWQsCisgICAgICAgICAgICBDLkRlY0ZwdUVycm9yLCBDLkRlY0luZXhhY3QsIEMuRGVjSW52YWxpZENvbnRleHQsCisgICAgICAgICAgICBDLkRlY0ludmFsaWRPcGVyYXRpb24sIEMuRGVjTWFsbG9jRXJyb3IsCisgICAgICAgICAgICBDLkRlY0Zsb2F0T3BlcmF0aW9uLCBDLkRlY092ZXJmbG93LCBDLkRlY1JvdW5kZWQsCisgICAgICAgICAgICBDLkRlY1N1Ym5vcm1hbCwgQy5EZWNVbmRlcmZsb3cKICAgICAgICAgKQotICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX1VQKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAotICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE2JykKLSAgICAgICAgKQotICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBJbmV4YWN0LAotICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LAotICAgICAgICAgICAgbWF0aC5waQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoLTAuMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCctMCcpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxLjApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMScpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxMCcpIikKIAotY2xhc3MgQ29udGV4dEFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIyBJRUVFQ29udGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuREVDSU1BTDMyLCAzMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRFQ0lNQUw2NCwgNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5ERUNJTUFMMTI4LCAxMjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5JRUVFX0NPTlRFWFRfTUFYX0JJVFMsIDUxMikKIAotICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgIyBDb25kaXRpb25zCisgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShjb25kKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMTw8aSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlfAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25VbmRlZmluZWR8CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNGcHVFcnJvcnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY01hbGxvY0Vycm9yKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNFcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uQnlaZXJvKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNUcmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0Vycm9yc3xDLkRlY092ZXJmbG93fEMuRGVjVW5kZXJmbG93KQorCitjbGFzcyBDV2hpdGVib3godW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoaXRlYm94IHRlc3RpbmcgZm9yIF9kZWNpbWFsIiIiCisKKyAgICBkZWYgdGVzdF9iaWdudW0oc2VsZik6CisgICAgICAgICMgTm90IGV4YWN0bHkgd2hpdGVib3gsIGJ1dCB0b28gc2xvdyB3aXRoIHB5ZGVjaW1hbC4KKworICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgYjEgPSAxMCoqMzUKKyAgICAgICAgYjIgPSAxMCoqMzYKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAwMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgYSA9IHJhbmRvbS5yYW5kcmFuZ2UoYjEsIGIyKQorICAgICAgICAgICAgICAgIGIgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAsIDEyMDApCisgICAgICAgICAgICAgICAgeCA9IGEgKiogYgorICAgICAgICAgICAgICAgIHkgPSBEZWNpbWFsKGEpICoqIERlY2ltYWwoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnN0cnVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDLkRlY2ltYWwsIDksICJ4eXoiKQorCisgICAgZGVmIHRlc3RfY19pbnB1dF9yZXN0cmljdGlvbihzZWxmKToKKyAgICAgICAgIyBUb28gbGFyZ2UgZm9yIF9kZWNpbWFsIHRvIGJlIGNvbnZlcnRlZCBleGFjdGx5CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9yZXByKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBpcyBfZGVjaW1hbC1vbmx5IGJlY2F1c2UgZmxhZ3MgYXJlIG5vdCBwcmludGVkCisgICAgICAgICMgaW4gdGhlIHNhbWUgb3JkZXIuCisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IEMuRmxvYXRPcGVyYXRpb24KKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgYy5wcmVjID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtaW4gPSAtNDI1MDAwMDAwCisgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tDXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IFRydWUKKyAgICAgICAgYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtDbGFtcGVkLCBJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgIiBcCisgICAgICAgICAgICAgICAgICAgIkZsb2F0T3BlcmF0aW9uLCBPdmVyZmxvdywgUm91bmRlZCwgU3Vibm9ybWFsLCBVbmRlcmZsb3ddLCAiIFwKKyAgICAgICAgICAgICJ0cmFwcz1bQ2xhbXBlZCwgSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsICIgXAorICAgICAgICAgICAgICAgICAgICJGbG9hdE9wZXJhdGlvbiwgT3ZlcmZsb3csIFJvdW5kZWQsIFN1Ym5vcm1hbCwgVW5kZXJmbG93XSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9lcnJvcnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBDLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCi0gICAgICAgIGZvciBrIGluIHZhcnMoYyk6Ci0gICAgICAgICAgICB2MSA9IHZhcnMoYylba10KLSAgICAgICAgICAgIHYyID0gdmFycyhlKVtrXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2MSwgdjIpCiAKLSAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisgICAgICAgICMgU2lnbmFsRGljdDogaW5wdXQgdmFsaWRhdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5mbGFncy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy50cmFwcy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLmZsYWdzLl9fZGVsaXRlbV9fLCBPdmVyZmxvdykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy50cmFwcy5fX2RlbGl0ZW1fXywgSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBbJ3gnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCd0cmFwcycsIFsneSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgezA6MX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCB7MDoxfSkKIAotICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICAjIFRlc3QgYXNzaWdubWVudCBmcm9tIGEgc2lnbmFsIGRpY3Qgd2l0aCB0aGUgY29ycmVjdCBsZW5ndGggYnV0CisgICAgICAgICMgb25lIGludmFsaWQga2V5LgorICAgICAgICBkID0gYy5mbGFncy5jb3B5KCkKKyAgICAgICAgZGVsIGRbRmxvYXRPcGVyYXRpb25dCisgICAgICAgIGRbIlhZWiJdID0gOTEyODM3MTkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCBkKQorCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICBndF9tYXhfZW1heCA9IDEwKioxOCBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDEwKio5CisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4J106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAtZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluIGluIGNvbnRleHQgY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgcHJlYz1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1heD1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1pbj0tZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBPdmVyZmxvdyBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIHByZWM9aW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBFbWF4PWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgRW1pbj0taW50X21heC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBjbGFtcD1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIGNhcGl0YWxzPWludF9tYXgrMSkKKworICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVmFsdWVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0yKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvcjogX3Vuc2FmZV9zZXRwcmVjLCBfdW5zYWZlX3NldGVtaW4sIF91bnNhZmVfc2V0ZW1heAorICAgICAgICBpZiBDLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0cHJlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRlbWF4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbnRfbWF4LTIpCisKKyAgICAgICAgIyBWYWx1ZUVycm9yOiBfdW5zYWZlX3NldHByZWMsIF91bnNhZmVfc2V0ZW1pbiwgX3Vuc2FmZV9zZXRlbWF4CisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRwcmVjJyksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldHByZWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xMDcwMDAwMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRlbWluJyksIDEpCisKKyAgICAgICAgIyBjYXBpdGFscywgY2xhbXAKKyAgICAgICAgZm9yIGF0dHIgaW4gWydjYXBpdGFscycsICdjbGFtcCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBbMSwyLDNdKQorICAgICAgICAgICAgaWYgSEFWRV9DT05GSUdfNjQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMioqMzIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMioqMzIrMSkKKworICAgICAgICAjIEludmFsaWQgbG9jYWwgY29udGV4dAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV4ZWMsICd3aXRoIGxvY2FsY29udGV4dCgieHl6Iik6IHBhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBleGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBsb2NhbGNvbnRleHQoY29udGV4dD1nZXRjb250ZXh0KCkpOiBwYXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzKCkpCisKKyAgICAgICAgIyBzZXRjb250ZXh0CisgICAgICAgIHNhdmVkX2NvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRjb250ZXh0LCAieHl6IikKKyAgICAgICAgc2V0Y29udGV4dChzYXZlZF9jb250ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmRpbmdfc3RyaW5nc19pbnRlcm5lZChzZWxmKToKKworICAgICAgICBzZWxmLmFzc2VydElzKEMuUk9VTkRfVVAsIFAuUk9VTkRfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9ET1dOLCBQLlJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9DRUlMSU5HLCBQLlJPVU5EX0NFSUxJTkcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9GTE9PUiwgUC5ST1VORF9GTE9PUikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhDLlJPVU5EX0hBTEZfVVAsIFAuUk9VTkRfSEFMRl9VUCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhDLlJPVU5EX0hBTEZfRE9XTiwgUC5ST1VORF9IQUxGX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9IQUxGX0VWRU4sIFAuUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBzZWxmLmFzc2VydElzKEMuUk9VTkRfMDVVUCwgUC5ST1VORF8wNVVQKQorCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfZXJyb3JzX2V4dHJhKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgT3ZlcmZsb3cgPSBDLk92ZXJmbG93CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29weSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYyksIGlkKGQpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMuZmxhZ3MpLCBpZChkLmZsYWdzKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLnRyYXBzKSwgaWQoZC50cmFwcykpCiAKLSAgICBkZWYgdGVzdF9fY2xhbXAoc2VsZik6Ci0gICAgICAgICMgSW4gUHl0aG9uIDMuMiwgdGhlIHByaXZhdGUgYXR0cmlidXRlIGBfY2xhbXBgIHdhcyBtYWRlCi0gICAgICAgICMgcHVibGljIChpc3N1ZSA4NTQwKSwgd2l0aCB0aGUgb2xkIGBfY2xhbXBgIGJlY29taW5nIGEKLSAgICAgICAgIyBwcm9wZXJ0eSB3cmFwcGluZyBgY2xhbXBgLiAgRm9yIHRoZSBkdXJhdGlvbiBvZiBQeXRob24gMy4yCi0gICAgICAgICMgb25seSwgdGhlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZ2V0dGFibGUvc2V0dGFibGUgdmlhIGJvdGgKLSAgICAgICAgIyBgY2xhbXBgIGFuZCBgX2NsYW1wYDsgaW4gUHl0aG9uIDMuMywgYF9jbGFtcGAgc2hvdWxkIGJlCi0gICAgICAgICMgcmVtb3ZlZC4KLSAgICAgICAgYyA9IENvbnRleHQoY2xhbXAgPSAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDApCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQogCi0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgICAgIGMuX2NsYW1wID0gMQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDEpCi0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fY2xhbXAsIDEpCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBWYWx1ZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBpbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtaW50X21heC0yKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBpbnRfbWF4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yLCBnZW5lcmFsIFR5cGVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ19mbGFncycsICdfdHJhcHMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0xKQorCisgICAgICAgICMgX2FsbGNyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIFsxLDIsM10pCisgICAgICAgIGlmIEhBVkVfQ09ORklHXzY0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIDIqKjMyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIDIqKjMyKzEpCisKKyAgICAgICAgIyBfZmxhZ3MsIF90cmFwcworICAgICAgICBmb3IgYXR0ciBpbiBbJ19mbGFncycsICdfdHJhcHMnXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAneCcpCisKKyAgICBkZWYgdGVzdF9jX3ZhbGlkX2NvbnRleHQoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdHMgYXJlIGZvciBjb2RlIGNvdmVyYWdlIGluIF9kZWNpbWFsLgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IEMuRGVmYXVsdENvbnRleHQKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBJbmV4YWN0ID0gQy5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgU3Vibm9ybWFsID0gQy5TdWJub3JtYWwKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgZ2V0dGVycyBhbmQgc2V0dGVycworICAgICAgICBjLnByZWMgPSAzNAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9VUAorICAgICAgICBjLkVtYXggPSAzMDAwCisgICAgICAgIGMuRW1pbiA9IC0zMDAwCisgICAgICAgIGMuY2FwaXRhbHMgPSAxCiAgICAgICAgIGMuY2xhbXAgPSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0hBTEZfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDMwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAwKQogCi0gICAgZGVmIHRlc3RfYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRXRpbnkoKSwgLTMwMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FdG9wKCksIDI5NjcpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgdW5zYWZlIHNldHRlcnMKKyAgICAgICAgaWYgQy5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBjLl91bnNhZmVfc2V0cHJlYyg5OTk5OTk5OTkpCisgICAgICAgICAgICBjLl91bnNhZmVfc2V0ZW1heCg5OTk5OTk5OTkpCisgICAgICAgICAgICBjLl91bnNhZmVfc2V0ZW1pbigtOTk5OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDk5OTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA5OTk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTk5OTk5OTk5OSkKKworICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY192YWxpZF9jb250ZXh0X2V4dHJhKHNlbGYpOgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IEMuRGVmYXVsdENvbnRleHQKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fYWxsY3IsIDEpCisgICAgICAgIGMuX2FsbGNyID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2FsbGNyLCAwKQorCisgICAgZGVmIHRlc3RfY19yb3VuZChzZWxmKToKKyAgICAgICAgIyBSZXN0cmljdGVkIGlucHV0LgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgTUFYX0VNQVggPSBDLk1BWF9FTUFYCisgICAgICAgIE1JTl9FVElOWSA9IEMuTUlOX0VUSU5ZCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEMuTUFYX1BSRUMgPiA0MjUwMDAwMDAgZWxzZSAyKiozMS0xCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaW50X21heC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KE1BWF9FTUFYKzEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQy5JbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludChNSU5fRVRJTlktMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisKKyAgICBkZWYgdGVzdF9jX2Zvcm1hdChzZWxmKToKKyAgICAgICAgIyBSZXN0cmljdGVkIGlucHV0CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBSb3VuZGVkID0gQy5Sb3VuZGVkCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIEhBVkVfQ09ORklHXzY0ID0gKEMuTUFYX1BSRUMgPiA0MjUwMDAwMDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sICI9MTAuMTAiLCBbXSwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sICI9MTAuMTAiLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgW10pCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbUm91bmRlZF0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sICI8Pj0xMC4xMCIpCisgICAgICAgICAgICBtYXhzaXplID0gMioqNjMtMSBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDIqKjMxLTEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5fX2Zvcm1hdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj0lZC4xIiAlIG1heHNpemUpCisKKyAgICBkZWYgdGVzdF9jX2ludGVncmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKworICAgICAgICB4ID0gRGVjaW1hbCgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCAxMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWxfdmFsdWUoKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19pbnRlZ3JhbF9leGFjdCgpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsIDEwLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgMTApCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5LjkiKS50b19pbnRlZ3JhbF92YWx1ZShST1VORF9VUCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJykpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OS45IikudG9faW50ZWdyYWxfZXhhY3QoUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpKQorCisgICAgICAgICAgICBjLnRyYXBzW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5leGFjdCwgRGVjaW1hbCgiOTk5LjkiKS50b19pbnRlZ3JhbF9leGFjdCwgUk9VTkRfVVApCisKKyAgICBkZWYgdGVzdF9jX2Z1bmNzKHNlbGYpOgorICAgICAgICAjIEludmFsaWQgYXJndW1lbnRzCisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IEMuRGl2aXNpb25CeVplcm8KKyAgICAgICAgZ2V0Y29udGV4dCA9IEMuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS45OWUxMCcpLnRvX2VuZ19zdHJpbmcoKSwgJzk5LjlFKzknKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93LCBEZWNpbWFsKDEpLCAyLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCg5KS5udW1iZXJfY2xhc3MsICJ4IiwgInkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoOSkuc2FtZV9xdWFudHVtLCAzLCAieCIsICJ5IikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUtMTAwMDAwJyksIFtdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBnZXRjb250ZXh0KCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUtMTAwMDAwJyksIDEwCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBST1VORF9VUCwgMTAwMAorICAgICAgICApCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5jbGVhcl90cmFwcygpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIERlY2ltYWwoMSksICJ4IiwgInkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNhbm9uaWNhbCwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2Nhbm9uaWNhbCwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgOSwgOCwgIngiLCAieSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCA5LCAzLCAieCIsICJ5IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jYW5vbmljYWwoRGVjaW1hbCgyMDApKSksICcyMDAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJhZGl4KCksIDEwKQorCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCg5KS5fX2Rpdm1vZF9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnByZWMgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBwb3csIERlY2ltYWwoMTAwMCksIDEsIDUwMSkKKworICAgIGRlZiB0ZXN0X3ZhX2FyZ3NfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisKKyAgICAgICAgeCA9IERlY2ltYWwoIjEwMDAxMTExMTExIikKKworICAgICAgICBmb3IgYXR0ciBpbiBbJ2V4cCcsICdpc19ub3JtYWwnLCAnaXNfc3Vibm9ybWFsJywgJ2xuJywgJ2xvZzEwJywKKyAgICAgICAgICAgICAgICAgICAgICdsb2diJywgJ2xvZ2ljYWxfaW52ZXJ0JywgJ25leHRfbWludXMnLCAnbmV4dF9wbHVzJywKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWxpemUnLCAnbnVtYmVyX2NsYXNzJywgJ3NxcnQnLCAndG9fZW5nX3N0cmluZyddOgorICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoeCwgYXR0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZnVuYywgY29udGV4dD0ieCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZ1bmMsICJ4IiwgY29udGV4dD1Ob25lKQorCisgICAgICAgIGZvciBhdHRyIGluIFsnY29tcGFyZScsICdjb21wYXJlX3NpZ25hbCcsICdsb2dpY2FsX2FuZCcsCisgICAgICAgICAgICAgICAgICAgICAnbG9naWNhbF9vcicsICdtYXgnLCAnbWF4X21hZycsICdtaW4nLCAnbWluX21hZycsCisgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXInLCAncm90YXRlJywgJ3NjYWxlYicsICdzaGlmdCddOgorICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoeCwgYXR0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZnVuYywgY29udGV4dD0ieCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZ1bmMsICJ4IiwgY29udGV4dD1Ob25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1bXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCByb3VuZGluZz17fSwgY29udGV4dD1bXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCBbXSwgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PVtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIHJvdW5kaW5nPXt9LCBjb250ZXh0PVtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIFtdLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgcm91bmRpbmc9e30sIGNvbnRleHQ9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgW10sIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5mbWEsIDEsIDIsIGNvbnRleHQ9IngiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHguZm1hLCAxLCAyLCAieCIsIGNvbnRleHQ9Tm9uZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgucXVhbnRpemUsIDEsIFtdLCBjb250ZXh0PU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5xdWFudGl6ZSwgMSwgW10sIHJvdW5kaW5nPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5xdWFudGl6ZSwgMSwgW10sIFtdKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuYWJzKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFicywgJy0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCAyLCBtb2Q9IngiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsICJ4IiwgbW9kPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgIngiLCAyLCBtb2Q9Tm9uZSkKIAotICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5hZGQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAxLCAnMScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5CYXNpY0NvbnRleHQuX3RyYXBzLAorICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnxDLkRlY0RpdmlzaW9uQnlaZXJvfEMuRGVjT3ZlcmZsb3d8CisgICAgICAgICAgICBDLkRlY1VuZGVyZmxvd3xDLkRlY0NsYW1wZWQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5EZWZhdWx0Q29udGV4dC5fdHJhcHMsCisgICAgICAgICAgICBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9ufEMuRGVjRGl2aXNpb25CeVplcm98Qy5EZWNPdmVyZmxvdworICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2Nfc2lnbmFsX2RpY3Qoc2VsZik6CiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3NpZ25hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisgICAgICAgICMgU2lnbmFsRGljdCBjb3ZlcmFnZQorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAogCi0gICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAxLCAnMScpCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBDLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBTdWJub3JtYWwgPSBDLlN1Ym5vcm1hbAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBSb3VuZGVkID0gQy5Sb3VuZGVkCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAogCi0gICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbF9tYWcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgMSwgJzEnKQorICAgICAgICBEZWNDbGFtcGVkID0gQy5EZWNDbGFtcGVkCisgICAgICAgIERlY0ludmFsaWRPcGVyYXRpb24gPSBDLkRlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGVjSUVFRUludmFsaWRPcGVyYXRpb24gPSBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uCiAKLSAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2FicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfYWJzLCAnLTEnKQorICAgICAgICBkZWYgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChzaWduYWwsIHNpZ25hbF9kaWN0KToKKyAgICAgICAgICAgIGZvciBzaWcgaW4gc2lnbmFsX2RpY3Q6CisgICAgICAgICAgICAgICAgaWYgc2lnID09IHNpZ25hbDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpZ25hbF9kaWN0W3NpZ10pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaWduYWxfZGljdFtzaWddKQogCi0gICAgZGVmIHRlc3RfY29weV9kZWNpbWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfZGVjaW1hbChEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfZGVjaW1hbCgtMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2RlY2ltYWwsICctMScpCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKIAotICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfbmVnYXRlKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9uZWdhdGUoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9uZWdhdGUsICctMScpCisgICAgICAgICMgU2lnbmFsIGRpY3QgbWV0aG9kcworICAgICAgICBzZWxmLmFzc2VydFRydWUoT3ZlcmZsb3cgaW4gYy50cmFwcykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBrIGluIGMudHJhcHMua2V5cygpOgorICAgICAgICAgICAgYy50cmFwc1trXSA9IFRydWUKKyAgICAgICAgZm9yIHYgaW4gYy50cmFwcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2KQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIGssIHYgaW4gYy50cmFwcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2KQogCi0gICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCAtMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgJzEnLCAtMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgMSwgJy0yJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzLmdldChPdmVyZmxvdykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYy5mbGFncy5nZXQoIngiKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLmdldCgieCIsICJ5IiksICJ5IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZsYWdzLmdldCwgIngiLCAieSIsICJ6IikKIAotICAgIGRlZiB0ZXN0X2RpdmlkZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5kaXZpZGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAxLCAnMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGMuZmxhZ3MpLCBsZW4oYy50cmFwcykpCisgICAgICAgIHMgPSBzeXMuZ2V0c2l6ZW9mKGMuZmxhZ3MpCisgICAgICAgIHMgPSBzeXMuZ2V0c2l6ZW9mKGMudHJhcHMpCisgICAgICAgIHMgPSBjLmZsYWdzLl9fcmVwcl9fKCkKIAotICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgMSwgJzInKQorICAgICAgICAjIFNldCBmbGFncy90cmFwcy4KKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGMuX2ZsYWdzID0gRGVjQ2xhbXBlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tDbGFtcGVkXSkKIAotICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5kaXZtb2QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAxLCAnMicpCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBjLl90cmFwcyA9IERlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0pCiAKLSAgICBkZWYgdGVzdF9leHAoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZXhwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhwKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmV4cCwgJzEwJykKKyAgICAgICAgIyBTZXQgZmxhZ3MvdHJhcHMgZnJvbSBkaWN0aW9uYXJ5LgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgZCA9IGMuZmxhZ3MuY29weSgpCisgICAgICAgIGRbRGl2aXNpb25CeVplcm9dID0gVHJ1ZQorICAgICAgICBjLmZsYWdzID0gZAorICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KERpdmlzaW9uQnlaZXJvLCBjLmZsYWdzKQogCi0gICAgZGVmIHRlc3RfZm1hKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCBEZWNpbWFsKDQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIDMsIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKERlY2ltYWwoMiksIDMsIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIERlY2ltYWwoMyksIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIDMsIERlY2ltYWwoNCkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKERlY2ltYWwoMiksIERlY2ltYWwoMyksIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAnMicsIDMsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsICczJywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgMiwgMywgJzQnKQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZCA9IGMudHJhcHMuY29weSgpCisgICAgICAgIGRbVW5kZXJmbG93XSA9IFRydWUKKyAgICAgICAgYy50cmFwcyA9IGQKKyAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChVbmRlcmZsb3csIGMudHJhcHMpCiAKLSAgICBkZWYgdGVzdF9pc19maW5pdGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfZmluaXRlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfZmluaXRlKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2Zpbml0ZSwgJzEwJykKKyAgICAgICAgIyBSYW5kb20gY29uc3RydWN0b3JzCisgICAgICAgIEludFNpZ25hbHMgPSB7CisgICAgICAgICAgQ2xhbXBlZDogQy5EZWNDbGFtcGVkLAorICAgICAgICAgIFJvdW5kZWQ6IEMuRGVjUm91bmRlZCwKKyAgICAgICAgICBJbmV4YWN0OiBDLkRlY0luZXhhY3QsCisgICAgICAgICAgU3Vibm9ybWFsOiBDLkRlY1N1Ym5vcm1hbCwKKyAgICAgICAgICBVbmRlcmZsb3c6IEMuRGVjVW5kZXJmbG93LAorICAgICAgICAgIE92ZXJmbG93OiBDLkRlY092ZXJmbG93LAorICAgICAgICAgIERpdmlzaW9uQnlaZXJvOiBDLkRlY0RpdmlzaW9uQnlaZXJvLAorICAgICAgICAgIEludmFsaWRPcGVyYXRpb246IEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24KKyAgICAgICAgfQorICAgICAgICBJbnRDb25kID0gWworICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlLCBDLkRlY0RpdmlzaW9uVW5kZWZpbmVkLCBDLkRlY0ZwdUVycm9yLAorICAgICAgICAgIEMuRGVjSW52YWxpZENvbnRleHQsIEMuRGVjSW52YWxpZE9wZXJhdGlvbiwgQy5EZWNNYWxsb2NFcnJvciwKKyAgICAgICAgICBDLkRlY0NvbnZlcnNpb25TeW50YXgsCisgICAgICAgIF0KIAotICAgIGRlZiB0ZXN0X2lzX2luZmluaXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX2luZmluaXRlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfaW5maW5pdGUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfaW5maW5pdGUsICcxMCcpCisgICAgICAgIGxpbSA9IGxlbihPcmRlcmVkU2lnbmFsc1tDXSkKKyAgICAgICAgZm9yIHIgaW4gcmFuZ2UobGltKToKKyAgICAgICAgICAgIGZvciB0IGluIHJhbmdlKGxpbSk6CisgICAgICAgICAgICAgICAgZm9yIHJvdW5kIGluIFJvdW5kaW5nTW9kZXM6CisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmFuZG9tLnNhbXBsZShPcmRlcmVkU2lnbmFsc1tDXSwgcikKKyAgICAgICAgICAgICAgICAgICAgdHJhcHMgPSByYW5kb20uc2FtcGxlKE9yZGVyZWRTaWduYWxzW0NdLCB0KQorICAgICAgICAgICAgICAgICAgICBwcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgZW1pbiA9IHJhbmRvbS5yYW5kcmFuZ2UoLTEwMDAwLCAwKQorICAgICAgICAgICAgICAgICAgICBlbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDAsIDIpCisgICAgICAgICAgICAgICAgICAgIGNhcHMgPSByYW5kb20ucmFuZHJhbmdlKDAsIDIpCisgICAgICAgICAgICAgICAgICAgIGNyID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjID0gQ29udGV4dChwcmVjPXByZWMsIHJvdW5kaW5nPXJvdW5kLCBFbWluPWVtaW4sIEVtYXg9ZW1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Y2FwcywgY2xhbXA9Y2xhbXAsIGZsYWdzPWxpc3QoZmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcz1saXN0KHRyYXBzKSkKIAotICAgIGRlZiB0ZXN0X2lzX25hbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19uYW4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19uYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfbmFuLCAnMTAnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgcHJlYykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCByb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIGVtaW4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIGNhcHMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgY2xhbXApCiAKLSAgICBkZWYgdGVzdF9pc19ub3JtYWwoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfbm9ybWFsKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbm9ybWFsKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25vcm1hbCwgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgZikKIAotICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfcW5hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3FuYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfcW5hbiwgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gdHJhcHM6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl90cmFwcywgZikKIAotICAgIGRlZiB0ZXN0X2lzX3NpZ25lZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zaWduZWQoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zaWduZWQoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc2lnbmVkLCAnMTAnKQorICAgICAgICBmb3IgY29uZCBpbiBJbnRDb25kOgorICAgICAgICAgICAgYy5fZmxhZ3MgPSBjb25kCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5fZmxhZ3MmRGVjSUVFRUludmFsaWRPcGVyYXRpb24pCisgICAgICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KEludmFsaWRPcGVyYXRpb24sIGMuZmxhZ3MpCiAKLSAgICBkZWYgdGVzdF9pc19zbmFuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3NuYW4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zbmFuKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3NuYW4sICcxMCcpCisgICAgICAgIGZvciBjb25kIGluIEludENvbmQ6CisgICAgICAgICAgICBjLl90cmFwcyA9IGNvbmQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLl90cmFwcyZEZWNJRUVFSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgICAgIGFzc2VydElzRXhjbHVzaXZlbHlTZXQoSW52YWxpZE9wZXJhdGlvbiwgYy50cmFwcykKIAotICAgIGRlZiB0ZXN0X2lzX3N1Ym5vcm1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zdWJub3JtYWwoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc3Vibm9ybWFsLCAnMTAnKQorICAgIGRlZiB0ZXN0X2ludmFsaWRfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKIAotICAgIGRlZiB0ZXN0X2lzX3plcm8oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfemVybyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3plcm8oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfemVybywgJzEwJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIHRlc3RfbG4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sbiwgJzEwJykKKyAgICAgICAgZGVmIG1ha2VfZ3JvdXBpbmcobHN0KToKKyAgICAgICAgICAgIHJldHVybiAnJy5qb2luKFtjaHIoeCkgZm9yIHggaW4gbHN0XSkKIAotICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisgICAgICAgIGRlZiBnZXRfZm10KHgsIG92ZXJyaWRlPU5vbmUsIGZtdD0nbicpOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoeCkuX19mb3JtYXRfXyhmbXQsIG92ZXJyaWRlKQogCi0gICAgZGVmIHRlc3RfbG9nYihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2diKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nYigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2diLCAnMTAnKQorICAgICAgICBpbnZhbGlkX2dyb3VwaW5nID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJywnLAorICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IG1ha2VfZ3JvdXBpbmcoWzI1NSwgMjU1LCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2RvdCA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICd4eHh4eCcsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJywnCisgICAgICAgIH0KKyAgICAgICAgaW52YWxpZF9zZXAgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLicsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJ3l5eXl5JworICAgICAgICB9CiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2FuZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisgICAgICAgIGlmIENIQVJfTUFYID09IDEyNzogIyBuZWdhdGl2ZSBncm91cGluZyBpbiBvdmVycmlkZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2ZtdCwgMTIzNDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkX2dyb3VwaW5nLCAnZycpCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2ludmVydChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2ludmVydChEZWNpbWFsKDEwMDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9pbnZlcnQoMTAwMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2ludmVydCwgJzEwMDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwgaW52YWxpZF9kb3QsICdnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2ZtdCwgMTIzNDUsIGludmFsaWRfc2VwLCAnZycpCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX29yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKLQotICAgIGRlZiB0ZXN0X2xvZ2ljYWxfeG9yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsIDEsICcxJykKLQotICAgIGRlZiB0ZXN0X21heChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tYXgoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9tYXhfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X21pbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW4oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9taW5fbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbl9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbl9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbl9tYWcsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X21pbnVzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbnVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWludXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWludXMsICcxMCcpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9uZXh0X21pbnVzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5leHRfbWludXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X21pbnVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfbWludXMsICcxMCcpCi0KLSAgICBkZWYgdGVzdF9uZXh0X3BsdXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF9wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9wbHVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfcGx1cywgJzEwJykKLQotICAgIGRlZiB0ZXN0X25leHRfdG93YXJkKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5ub3JtYWxpemUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5ub3JtYWxpemUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubm9ybWFsaXplLCAnMTAnKQotCi0gICAgZGVmIHRlc3RfbnVtYmVyX2NsYXNzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKLQotICAgIGRlZiB0ZXN0X3Bvd2VyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCA0LCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIDQsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgRGVjaW1hbCg0KSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCA0LCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsICcxJywgNCwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCAnNCcsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgMSwgNCwgJzInKQotCi0gICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wbHVzLCAnMTAnKQotCi0gICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQotCi0gICAgZGVmIHRlc3RfcmVtYWluZGVyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXIsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcl9uZWFyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9zcXJ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnNxcnQoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zcXJ0KDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNxcnQsICcxMCcpCisgICAgZGVmIHRlc3RfZXhhY3RfY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCiAKLSAgICBkZWYgdGVzdF9zYW1lX3F1YW50dW0oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2FtZV9xdWFudHVtKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgMSwgJzInKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CiAKLSAgICBkZWYgdGVzdF9zY2FsZWIoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2NhbGViKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgMSwgJzInKQorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKIAotICAgIGRlZiB0ZXN0X3NoaWZ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnNoaWZ0KERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsIDEsICcyJykKKyAgICAgICAgICAgICMgQ2xhbXBlZAorICAgICAgICAgICAgeCA9ICIwZSVkIiAlIHN5cy5tYXhzaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgZGVmIHRlc3Rfc3VidHJhY3Qoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgMSwgJzInKQorICAgICAgICAgICAgeCA9ICIwZSVkIiAlICgtc3lzLm1heHNpemUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19lbmdfc3RyaW5nKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2VuZ19zdHJpbmcoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19lbmdfc3RyaW5nKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2VuZ19zdHJpbmcsICcxMCcpCisgICAgICAgICAgICAjIE92ZXJmbG93CisgICAgICAgICAgICB4ID0gIjFlJWQiICUgc3lzLm1heHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19zY2lfc3RyaW5nKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX3NjaV9zdHJpbmcoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX3NjaV9zdHJpbmcsICcxMCcpCisgICAgICAgICAgICAjIFVuZGVyZmxvdworICAgICAgICAgICAgeCA9ICIxZSVkIiAlICgtc3lzLm1heHNpemUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF9leGFjdChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX2V4YWN0KDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorICAgIGRlZiB0ZXN0X2Zyb21fdHVwbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gQy5VbmRlcmZsb3cKIAotICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX3ZhbHVlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfdmFsdWUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsICcxMCcpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKIAotY2xhc3MgV2l0aFN0YXRlbWVudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgQ2FuJ3QgZG8gdGhlc2UgYXMgZG9jc3RyaW5ncyB1bnRpbCBQeXRob24gMi42Ci0gICAgIyBhcyBkb2N0ZXN0IGNhbid0IGhhbmRsZSBfX2Z1dHVyZV9fIHN0YXRlbWVudHMKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW092ZXJmbG93XSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbVW5kZXJmbG93XSA9IFRydWUKIAotICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dChzZWxmKToKLSAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaW4gdGhlIGJsb2NrCi0gICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgZW50ZXJfY3R4OgotICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdChvcmlnX2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorICAgICAgICAgICAgIyBTU0laRV9NQVgKKyAgICAgICAgICAgIHggPSAoMSwgKCksIHN5cy5tYXhzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jcmVhdGVfZGVjaW1hbCh4KSksICctMEUrOTk5OTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF9sb2NhbGNvbnRleHRhcmcoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKLSAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgbmV3X2N0eCA9IENvbnRleHQocHJlYz00MikKLSAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobmV3X2N0eCkgYXMgZW50ZXJfY3R4OgotICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXRfY3R4LnByZWMsIG5ld19jdHgucHJlYywgJ2RpZCBub3Qgc2V0IGNvcnJlY3QgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmV3X2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSwgMiksIHN5cy5tYXhzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi1jbGFzcyBDb250ZXh0RmxhZ3ModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ZsYWdzX2lycmVsZXZhbnQoc2VsZik6Ci0gICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IChudW1lcmljIHJlc3VsdCArIGZsYWdzIHJhaXNlZCkgb2YgYW4KLSAgICAgICAgIyBhcml0aG1ldGljIG9wZXJhdGlvbiBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgY3VycmVudCBmbGFncworICAgICAgICAgICAgIyBTU0laRV9NSU4KKyAgICAgICAgICAgIHggPSAoMSwgKCksIC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jcmVhdGVfZGVjaW1hbCh4KSksICctMEUtMTAwMDAyNicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9OSwgRW1pbiA9IC05OTk5OTk5OTksIEVtYXggPSA5OTk5OTk5OTksCi0gICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9W10sIGZsYWdzPVtdKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSwgMiksIC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5kZXJmbG93LCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgICAgICAjIG9wZXJhdGlvbnMgdGhhdCByYWlzZSB2YXJpb3VzIGZsYWdzLCBpbiB0aGUgZm9ybSAoZnVuY3Rpb24sIGFyZ2xpc3QpCi0gICAgICAgIG9wZXJhdGlvbnMgPSBbCi0gICAgICAgICAgICAoY29udGV4dC5fYXBwbHksIFtEZWNpbWFsKCIxMDBFLTEwMDAwMDAwMDkiKV0pLAotICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKLSAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICBdCisgICAgICAgICAgICAjIE92ZXJmbG93RXJyb3IKKyAgICAgICAgICAgIHggPSAoMSwgKCksIHN5cy5tYXhzaXplKzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCwgeCkKIAotICAgICAgICAjIHRyeSB2YXJpb3VzIGZsYWdzIGluZGl2aWR1YWxseSwgdGhlbiBhIHdob2xlIGxvdCBhdCBvbmNlCi0gICAgICAgIGZsYWdzZXRzID0gW1tJbmV4YWN0XSwgW1JvdW5kZWRdLCBbVW5kZXJmbG93XSwgW0NsYW1wZWRdLCBbU3Vibm9ybWFsXSwKLSAgICAgICAgICAgICAgICAgICAgW0luZXhhY3QsIFJvdW5kZWQsIFVuZGVyZmxvdywgQ2xhbXBlZCwgU3Vibm9ybWFsXV0KKyAgICAgICAgICAgIHggPSAoMSwgKCksIC1zeXMubWF4c2l6ZS0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYy5jcmVhdGVfZGVjaW1hbCwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwsIHgpCiAKLSAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6Ci0gICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0Ci0gICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQotICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgICAgICMgU3BlY2lhbHMKKyAgICAgICAgICAgIHggPSAoMSwgKCksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4nKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwpLCAiTiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHgpKSwgJy1zTmFOJykKKyAgICAgICAgICAgIHggPSAoMSwgKDAsIDEpLCAiTiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHgpKSwgJy1zTmFOMScpCiAKLSAgICAgICAgICAgIGZvciBleHRyYV9mbGFncyBpbiBmbGFnc2V0czoKLSAgICAgICAgICAgICAgICAjIHNldCBmbGFncywgYmVmb3JlIGNhbGxpbmcgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgICAgICAgICAgZm9yIGZsYWcgaW4gZXh0cmFfZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCi0gICAgICAgICAgICAgICAgbmV3X2FucyA9IGZuKCphcmdzKQogCi0gICAgICAgICAgICAgICAgIyBmbGFncyB0aGF0IHdlIGV4cGVjdCB0byBiZSBzZXQgYWZ0ZXIgdGhlIG9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzID0gbGlzdChmbGFncykKLSAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gZXhwZWN0ZWRfZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5hcHBlbmQoZmxhZykKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5zb3J0KGtleT1pZCkKK2FsbF90ZXN0cyA9IFsKKyAgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCisgIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LAorICBDRm9ybWF0VGVzdCwgICAgICAgICAgICAgICBQeUZvcm1hdFRlc3QsCisgIENBcml0aG1ldGljT3BlcmF0b3JzVGVzdCwgIFB5QXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QsCisgIENUaHJlYWRpbmdUZXN0LCAgICAgICAgICAgIFB5VGhyZWFkaW5nVGVzdCwKKyAgQ1VzYWJpbGl0eVRlc3QsICAgICAgICAgICAgUHlVc2FiaWxpdHlUZXN0LAorICBDUHl0aG9uQVBJdGVzdHMsICAgICAgICAgICBQeVB5dGhvbkFQSXRlc3RzLAorICBDQ29udGV4dEFQSXRlc3RzLCAgICAgICAgICBQeUNvbnRleHRBUEl0ZXN0cywKKyAgQ0NvbnRleHRXaXRoU3RhdGVtZW50LCAgICAgUHlDb250ZXh0V2l0aFN0YXRlbWVudCwKKyAgQ0NvbnRleHRGbGFncywgICAgICAgICAgICAgUHlDb250ZXh0RmxhZ3MsCisgIENTcGVjaWFsQ29udGV4dHMsICAgICAgICAgIFB5U3BlY2lhbENvbnRleHRzLAorICBDQ29udGV4dElucHV0VmFsaWRhdGlvbiwgICBQeUNvbnRleHRJbnB1dFZhbGlkYXRpb24sCisgIENDb250ZXh0U3ViY2xhc3NpbmcsICAgICAgIFB5Q29udGV4dFN1YmNsYXNzaW5nLAorICBDQ292ZXJhZ2UsICAgICAgICAgICAgICAgICBQeUNvdmVyYWdlLAorICBDRnVuY3Rpb25hbGl0eSwgICAgICAgICAgICBQeUZ1bmN0aW9uYWxpdHksCisgIENXaGl0ZWJveCwgICAgICAgICAgICAgICAgIFB5V2hpdGVib3gsCisgIENJQk1UZXN0Q2FzZXMsICAgICAgICAgICAgIFB5SUJNVGVzdENhc2VzLAorXQogCi0gICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKLSAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKyMgRGVsZXRlIEMgdGVzdHMgaWYgX2RlY2ltYWwuc28gaXMgbm90IHByZXNlbnQuCitpZiBub3QgQzoKKyAgICBhbGxfdGVzdHMgPSBhbGxfdGVzdHNbMTo6Ml0KK2Vsc2U6CisgICAgYWxsX3Rlc3RzLmluc2VydCgwLCBDaGVja0F0dHJpYnV0ZXMpCiAKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgbmV3X2FucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcHJvZHVjZXMgZGlmZmVyZW50IGFuc3dlcnMgZGVwZW5kaW5nIG9uIGZsYWdzIHNldDogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcy4iICUgKGFucywgbmV3X2FucykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZmxhZ3MsIGV4cGVjdGVkX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcmFpc2VzIGRpZmZlcmVudCBmbGFncyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcyIgJSAoZXhwZWN0ZWRfZmxhZ3MsIG5ld19mbGFncykpCiAKIGRlZiB0ZXN0X21haW4oYXJpdGg9RmFsc2UsIHZlcmJvc2U9Tm9uZSwgdG9kb190ZXN0cz1Ob25lLCBkZWJ1Zz1Ob25lKToKICAgICAiIiIgRXhlY3V0ZSB0aGUgdGVzdHMuCkBAIC0yMzc0LDI3ICs1NDEwLDE2IEBACiAgICAgaXMgZW5hYmxlZCBpbiByZWdydGVzdC5weQogICAgICIiIgogCi0gICAgaW5pdCgpCisgICAgaW5pdChDKQorICAgIGluaXQoUCkKICAgICBnbG9iYWwgVEVTVF9BTEwsIERFQlVHCiAgICAgVEVTVF9BTEwgPSBhcml0aCBvciBpc19yZXNvdXJjZV9lbmFibGVkKCdkZWNpbWFsJykKICAgICBERUJVRyA9IGRlYnVnCiAKICAgICBpZiB0b2RvX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgIHRlc3RfY2xhc3NlcyA9IFsKLSAgICAgICAgICAgIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LAotICAgICAgICAgICAgRGVjaW1hbEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0LAotICAgICAgICAgICAgRGVjaW1hbEZvcm1hdFRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsVXNlT2ZDb250ZXh0VGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxVc2FiaWxpdHlUZXN0LAotICAgICAgICAgICAgRGVjaW1hbFB5dGhvbkFQSXRlc3RzLAotICAgICAgICAgICAgQ29udGV4dEFQSXRlc3RzLAotICAgICAgICAgICAgRGVjaW1hbFRlc3QsCi0gICAgICAgICAgICBXaXRoU3RhdGVtZW50VGVzdCwKLSAgICAgICAgICAgIENvbnRleHRGbGFncwotICAgICAgICBdCisgICAgICAgIHRlc3RfY2xhc3NlcyA9IGFsbF90ZXN0cwogICAgIGVsc2U6Ci0gICAgICAgIHRlc3RfY2xhc3NlcyA9IFtEZWNpbWFsVGVzdF0KKyAgICAgICAgdGVzdF9jbGFzc2VzID0gW0NJQk1UZXN0Q2FzZXMsIFB5SUJNVGVzdENhc2VzXQogCiAgICAgIyBEeW5hbWljYWxseSBidWlsZCBjdXN0b20gdGVzdCBkZWZpbml0aW9uIGZvciBlYWNoIGZpbGUgaW4gdGhlIHRlc3QKICAgICAjIGRpcmVjdG9yeSBhbmQgYWRkIHRoZSBkZWZpbml0aW9ucyB0byB0aGUgRGVjaW1hbFRlc3QgY2xhc3MuICBUaGlzCkBAIC0yNDA2LDE3ICs1NDMxLDMyIEBACiAgICAgICAgIGlmIHRvZG9fdGVzdHMgaXMgbm90IE5vbmUgYW5kIGhlYWQgbm90IGluIHRvZG9fdGVzdHM6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0ZXN0ZXIgPSBsYW1iZGEgc2VsZiwgZj1maWxlbmFtZTogc2VsZi5ldmFsX2ZpbGUoZGlyZWN0b3J5ICsgZikKLSAgICAgICAgc2V0YXR0cihEZWNpbWFsVGVzdCwgJ3Rlc3RfJyArIGhlYWQsIHRlc3RlcikKKyAgICAgICAgc2V0YXR0cihDSUJNVGVzdENhc2VzLCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQorICAgICAgICBzZXRhdHRyKFB5SUJNVGVzdENhc2VzLCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQogICAgICAgICBkZWwgZmlsZW5hbWUsIGhlYWQsIHRhaWwsIHRlc3RlcgogCiAKICAgICB0cnk6CiAgICAgICAgIHJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQogICAgICAgICBpZiB0b2RvX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgZGVjaW1hbCBhcyBEZWNpbWFsTW9kdWxlCi0gICAgICAgICAgICBydW5fZG9jdGVzdChEZWNpbWFsTW9kdWxlLCB2ZXJib3NlKQorICAgICAgICAgICAgZnJvbSBkb2N0ZXN0IGltcG9ydCBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTAorICAgICAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisgICAgICAgICAgICBpZiBDOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCisgICAgICAgICAgICAgICAgcnVuX2RvY3Rlc3QoQywgdmVyYm9zZSwgb3B0aW9uZmxhZ3M9SUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorICAgICAgICAgICAgcnVuX2RvY3Rlc3QoUCwgdmVyYm9zZSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzYXZlZGVjaW1hbAogICAgIGZpbmFsbHk6Ci0gICAgICAgIHNldGNvbnRleHQoT1JJR0lOQUxfQ09OVEVYVCkKKyAgICAgICAgaWYgQzogQy5zZXRjb250ZXh0KE9SSUdJTkFMX0NPTlRFWFRbQ10pCisgICAgICAgIFAuc2V0Y29udGV4dChPUklHSU5BTF9DT05URVhUW1BdKQorICAgICAgICBpZiBub3QgQzoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ0MgdGVzdHMgc2tpcHBlZDogbm8gbW9kdWxlIG5hbWVkIF9kZWNpbWFsLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nKQorICAgICAgICBpZiBub3Qgb3JpZ19zeXNfZGVjaW1hbCBpcyBzeXMubW9kdWxlc1snZGVjaW1hbCddOgorICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYmFsYW5jZWQgbnVtYmVyIG9mIGNoYW5nZXMgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXNbJ2RlY2ltYWwnXS4iKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IG9wdHBhcnNlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQppbmRleCBmMGFmZTFkLi5hODQ4N2QyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKQEAgLTQ3Miw2ICs0NzIsMTkgQEAKICMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAjIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IGRlcXVlKHJhbmdlKDIwMCkpCisgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSlbMTpdKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtNTI0LDcgKzUzNyw3IEBACiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgogICAgICAgICBCTE9DS0xFTiA9IDYyCi0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnMlA0UGxQJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRubFAnKQogICAgICAgICBibG9ja3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJzJQJWRQJyAlIEJMT0NLTEVOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGRlcXVlKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggY2RhZjdkMi4uYjVhMTBlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC02NTQsMTkgKzY1NCwxOSBAQAogICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1BTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQihtZXRhY2xhc3M9Qk1ldGEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEJNZXRhLl9fbmV3X18gY2FsbHMgQU1ldGEuX19uZXdfXyB3aXRoIHN1cGVyOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk1ldGEnLCAnQU1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEMoQSwgQik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgQk1ldGE6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgICMgQk1ldGEuX19wcmVwYXJlX18gc2hvdWxkJ3ZlIGJlZW4gY2FsbGVkOgogICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMuX19kaWN0X18pCiAKQEAgLTY3NCwyMCArNjc0LDIwIEBACiAgICAgICAgIGNsYXNzIEMyKEIsIEEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk1ldGEnLCAnQU1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMyLl9fZGljdF9fKQogCiAgICAgICAgICMgQ2hlY2sgY29ycmVjdCBtZXRhY2xhc3MgY2FsY3VsYXRpb24gd2hlbiBhIG1ldGFjbGFzcyBpcyBkZWNsYXJlZDoKICAgICAgICAgY2xhc3MgRChDLCBtZXRhY2xhc3M9dHlwZSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRC5fX2RpY3RfXykKIAogICAgICAgICBjbGFzcyBFKEMsIG1ldGFjbGFzcz1BTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRS5fX2RpY3RfXykKIAogICAgICAgICAjIFNwZWNpYWwgY2FzZTogdGhlIGdpdmVuIG1ldGFjbGFzcyBpc24ndCBhIGNsYXNzLApAQCAtNzI5LDMzICs3MjksMzMgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhBTm90TWV0YSwgdHlwZShBKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBCKG1ldGFjbGFzcz1CTm90TWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQyhBLCBCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBDMihCLCBBKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgIyBUaGlzIGlzIGEgVHlwZUVycm9yLCBiZWNhdXNlIG9mIGEgbWV0YWNsYXNzIGNvbmZsaWN0OgogICAgICAgICAjIEJOb3RNZXRhIGlzIG5laXRoZXIgYSBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiB0eXBlCkBAIC03NjcsMjUgKzc2NywyNSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEYob2JqZWN0KCksIEMpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEYyKEMsIG9iamVjdCgpKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShGMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgIyBUeXBlRXJyb3I6IEJOb3RNZXRhIGlzIG5laXRoZXIgYQogICAgICAgICAjIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIGludApAQCAtMTQ0NCw2ICsxNDQ0LDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImNsYXNzbWV0aG9kIHNob3VsZG4ndCBhY2NlcHQga2V5d29yZCBhcmdzIikKIAorICAgICAgICBjbSA9IGNsYXNzbWV0aG9kKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uX19kaWN0X18sIHt9KQorICAgICAgICBjbS54ID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS54LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5fX2RpY3RfXywgeyJ4IiA6IDQyfSkKKyAgICAgICAgZGVsIGNtLngKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNtLCAieCIpKQorCiAgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInRoZSBtb2R1bGUgJ3h4c3VidHlwZScgaXMgaW50ZXJuYWwiKQogICAgIGRlZiB0ZXN0X2NsYXNzbWV0aG9kc19pbl9jKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgQy1iYXNlZCBjbGFzcyBtZXRob2RzLi4uCkBAIC0xNDkxLDYgKzE0OTksMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdvbygxKSwgKDEsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmZvbygxKSwgKGQsIDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKGQsIDEpLCAoZCwgMSkpCisgICAgICAgIHNtID0gc3RhdGljbWV0aG9kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc20uX19kaWN0X18sIHt9KQorICAgICAgICBzbS54ID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS54LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS5fX2RpY3RfXywgeyJ4IiA6IDQyfSkKKyAgICAgICAgZGVsIHNtLngKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHNtLCAieCIpKQogCiAgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInRoZSBtb2R1bGUgJ3h4c3VidHlwZScgaXMgaW50ZXJuYWwiKQogICAgIGRlZiB0ZXN0X3N0YXRpY21ldGhvZHNfaW5fYyhzZWxmKToKQEAgLTE3NzEsNiArMTc4Niw3IEBACiAgICAgICAgICAgICAoIl9fZm9ybWF0X18iLCBmb3JtYXQsIGZvcm1hdF9pbXBsLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2Zsb29yX18iLCBtYXRoLmZsb29yLCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX3RydW5jX18iLCBtYXRoLnRydW5jLCB6ZXJvLCBzZXQoKSwge30pLAorICAgICAgICAgICAgKCJfX3RydW5jX18iLCBpbnQsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fY2VpbF9fIiwgbWF0aC5jZWlsLCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2Rpcl9fIiwgZGlyLCBlbXB0eV9zZXEsIHNldCgpLCB7fSksCiAgICAgICAgICAgICBdCkBAIC0xODE2LDEyICsxODMyLDcgQEAKICAgICAgICAgICAgIGZvciBhdHRyLCBvYmogaW4gZW52Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgc2V0YXR0cihYLCBhdHRyLCBvYmopCiAgICAgICAgICAgICBzZXRhdHRyKFgsIG5hbWUsIEVyckRlc2NyKCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcnVubmVyKFgoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBNeUV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiezAhcn0gZGlkbid0IHJhaXNlIi5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNeUV4Y2VwdGlvbiwgcnVubmVyLCBYKCkpCiAKICAgICBkZWYgdGVzdF9zcGVjaWFscyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHNwZWNpYWwgb3BlcmF0b3JzLi4uCkBAIC0yMjU4LDkgKzIyNjksNiBAQAogICAgICAgICAjIFR3byBlc3NlbnRpYWxseSBmZWF0dXJlbGVzcyBvYmplY3RzLCBqdXN0IGluaGVyaXRpbmcgc3R1ZmYgZnJvbQogICAgICAgICAjIG9iamVjdC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIoTm90SW1wbGVtZW50ZWQpLCBkaXIoRWxsaXBzaXMpKQotICAgICAgICBpZiBzdXBwb3J0LmNoZWNrX2ltcGxfZGV0YWlsKCk6Ci0gICAgICAgICAgICAjIE5vbmUgZGlmZmVycyBpbiBQeVB5OiBpdCBoYXMgYSBfX25vbnplcm9fXwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIoTm9uZSksIGRpcihFbGxpcHNpcykpCiAKICAgICAgICAgIyBOYXN0eSB0ZXN0IGNhc2UgZm9yIHByb3hpZWQgb2JqZWN0cwogICAgICAgICBjbGFzcyBXcmFwcGVyKG9iamVjdCk6CkBAIC00NDU2LDYgKzQ0NjQsNjIgQEAKICAgICAgICAgeC55ID0gNDIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4WyJ5Il0sIDQyKQogCisgICAgZGVmIHRlc3Rfc2xvdF9zaGFkb3dzX2NsYXNzX3ZhcmlhYmxlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgICAgICBfX3Nsb3RzX18gPSBbImZvbyJdCisgICAgICAgICAgICAgICAgZm9vID0gTm9uZQorICAgICAgICBtID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJ2ZvbycgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwgbSkKKworICAgIGRlZiB0ZXN0X3NldF9kb2Moc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICAiZWxlcGhhbnQiCisgICAgICAgIFguX19kb2NfXyA9ICJiYW5hbmEiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5fX2RvY19fLCAiYmFuYW5hIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHlwZShsaXN0KS5fX2RpY3RfX1siX19kb2NfXyJdLl9fc2V0X18obGlzdCwgImJsYWgiKQorICAgICAgICBzZWxmLmFzc2VydEluKCJjYW4ndCBzZXQgbGlzdC5fX2RvY19fIiwgc3RyKGNtLmV4Y2VwdGlvbikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHR5cGUoWCkuX19kaWN0X19bIl9fZG9jX18iXS5fX2RlbGV0ZV9fKFgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbid0IGRlbGV0ZSBYLl9fZG9jX18iLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLl9fZG9jX18sICJiYW5hbmEiKQorCisgICAgZGVmIHRlc3RfcXVhbG5hbWUoc2VsZik6CisgICAgICAgIGRlc2NyaXB0b3JzID0gW3N0ci5sb3dlciwgY29tcGxleC5yZWFsLCBmbG9hdC5yZWFsLCBpbnQuX19hZGRfX10KKyAgICAgICAgdHlwZXMgPSBbJ21ldGhvZCcsICdtZW1iZXInLCAnZ2V0c2V0JywgJ3dyYXBwZXInXQorCisgICAgICAgICMgbWFrZSBzdXJlIHdlIGhhdmUgYW4gZXhhbXBsZSBvZiBlYWNoIHR5cGUgb2YgZGVzY3JpcHRvcgorICAgICAgICBmb3IgZCwgbiBpbiB6aXAoZGVzY3JpcHRvcnMsIHR5cGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKS5fX25hbWVfXywgbiArICdfZGVzY3JpcHRvcicpCisKKyAgICAgICAgZm9yIGQgaW4gZGVzY3JpcHRvcnM6CisgICAgICAgICAgICBxdWFsbmFtZSA9IGQuX19vYmpjbGFzc19fLl9fcXVhbG5hbWVfXyArICcuJyArIGQuX19uYW1lX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5fX3F1YWxuYW1lX18sIHF1YWxuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyLmxvd2VyLl9fcXVhbG5hbWVfXywgJ3N0ci5sb3dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleC5yZWFsLl9fcXVhbG5hbWVfXywgJ2NvbXBsZXgucmVhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQucmVhbC5fX3F1YWxuYW1lX18sICdmbG9hdC5yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQuX19hZGRfXy5fX3F1YWxuYW1lX18sICdpbnQuX19hZGRfXycpCisKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGVsIFguX19xdWFsbmFtZV9fCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0eXBlLl9fZGljdF9fWydfX3F1YWxuYW1lX18nXS5fX3NldF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsICdPaW5rJykKKworICAgIGRlZiB0ZXN0X3F1YWxuYW1lX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAnc29tZS5uYW1lJ30KKyAgICAgICAgdHAgPSB0eXBlKCdGb28nLCAoKSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuX19xdWFsbmFtZV9fLCAnc29tZS5uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignX19xdWFsbmFtZV9fJywgdHAuX19kaWN0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMsIHsnX19xdWFsbmFtZV9fJzogJ3NvbWUubmFtZSd9KQorCisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAxfQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHR5cGUsICdGb28nLCAoKSwgbnMpCisKICAgICBkZWYgdGVzdF9jeWNsZV90aHJvdWdoX2RpY3Qoc2VsZik6CiAgICAgICAgICMgU2VlIGJ1ZyAjMTQ2OTYyOQogICAgICAgICBjbGFzcyBYKGRpY3QpOgpAQCAtNDQ3MSw2ICs0NTM1LDI3IEBACiAgICAgICAgIGZvciBvIGluIGdjLmdldF9vYmplY3RzKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHR5cGUobyksIFgpCiAKKyAgICBkZWYgdGVzdF9vYmplY3RfbmV3X2FuZF9pbml0X3dpdGhfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE2ODMzNjgKKyAgICAgICAgY2xhc3MgT3ZlcnJpZGVOZWl0aGVyOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE92ZXJyaWRlTmVpdGhlciwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPdmVycmlkZU5laXRoZXIsIGt3PTEpCisgICAgICAgIGNsYXNzIE92ZXJyaWRlTmV3OgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBmb28sIGt3PTAsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisgICAgICAgIGNsYXNzIE92ZXJyaWRlSW5pdDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28sIGt3PTAsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGNsYXNzIE92ZXJyaWRlQm90aChPdmVycmlkZU5ldywgT3ZlcnJpZGVJbml0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGNhc2UgaW4gT3ZlcnJpZGVOZXcsIE92ZXJyaWRlSW5pdCwgT3ZlcnJpZGVCb3RoOgorICAgICAgICAgICAgY2FzZSgxKQorICAgICAgICAgICAgY2FzZSgxLCBrdz0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjYXNlLCAxLCAyLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjYXNlLCAxLCAyLCBmb289MykKKworCiBjbGFzcyBEaWN0UHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NDc4LDYgKzQ1NjMsOCBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5DID0gQwogCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbF9fJykKICAgICBkZWYgdGVzdF9pdGVyX2tleXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IGtleXMuLi4KICAgICAgICAgaXQgPSBzZWxmLkMuX19kaWN0X18ua2V5cygpCkBAIC00NDg1LDggKzQ1NzIsMTAgQEAKICAgICAgICAga2V5cyA9IGxpc3QoaXQpCiAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgWydfX2RpY3RfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLAotICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl92YWx1ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IHZhbHVlcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy52YWx1ZXMoKQpAQCAtNDQ5NCw2ICs0NTgzLDggQEAKICAgICAgICAgdmFsdWVzID0gbGlzdChpdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmFsdWVzKSwgNSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl9pdGVtcyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIGRpY3QtcHJveHkgaXRlcml0ZW1zLi4uCiAgICAgICAgIGl0ID0gc2VsZi5DLl9fZGljdF9fLml0ZW1zKCkKQEAgLTQ1MDEsNyArNDU5Miw3IEBACiAgICAgICAgIGtleXMgPSBbaXRlbVswXSBmb3IgaXRlbSBpbiBpdF0KICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBbJ19fZGljdF9fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsCi0gICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQogCiAgICAgZGVmIHRlc3RfZGljdF90eXBlX3dpdGhfbWV0YWNsYXNzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgdHlwZSBvZiBfX2RpY3RfXyB3aGVuIG1ldGFjbGFzcyBzZXQuLi4KQEAgLTQ1MTUsMTkgKzQ2MDYsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKEMuX19kaWN0X18pLCB0eXBlKEIuX19kaWN0X18pKQogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKLSAgICAgICAgIyBUZXN0aW5nIGRpY3RfcHJveHkuX19yZXByX18KLSAgICAgICAgZGVmIHNvcnRlZF9kaWN0X3JlcHIocmVwcl8pOgotICAgICAgICAgICAgIyBHaXZlbiB0aGUgcmVwciBvZiBhIGRpY3QsIHNvcnQgdGhlIGtleXMKLSAgICAgICAgICAgIGFzc2VydCByZXByXy5zdGFydHN3aXRoKCd7JykKLSAgICAgICAgICAgIGFzc2VydCByZXByXy5lbmRzd2l0aCgnfScpCi0gICAgICAgICAgICBrdnMgPSByZXByX1sxOi0xXS5zcGxpdCgnLCAnKQotICAgICAgICAgICAgcmV0dXJuICd7JyArICcsICcuam9pbihzb3J0ZWQoa3ZzKSkgKyAnfScKLSAgICAgICAgZGljdF8gPSB7azogdiBmb3IgaywgdiBpbiBzZWxmLkMuX19kaWN0X18uaXRlbXMoKX0KLSAgICAgICAgcmVwcl8gPSByZXByKHNlbGYuQy5fX2RpY3RfXykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHJfLnN0YXJ0c3dpdGgoJ2RpY3RfcHJveHkoJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByXy5lbmRzd2l0aCgnKScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9kaWN0X3JlcHIocmVwcl9bbGVuKCdkaWN0X3Byb3h5KCcpOi1sZW4oJyknKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZF9kaWN0X3JlcHIoJ3shcn0nLmZvcm1hdChkaWN0XykpKQorICAgICAgICAjIFRlc3RpbmcgbWFwcGluZ3Byb3h5Ll9fcmVwcl9fLgorICAgICAgICAjIFdlIGNhbid0IGJsaW5kbHkgY29tcGFyZSB3aXRoIHRoZSByZXByIG9mIGFub3RoZXIgZGljdCBhcyBvcmRlcmluZworICAgICAgICAjIG9mIGtleXMgYW5kIHZhbHVlcyBpcyBhcmJpdHJhcnkgYW5kIG1heSBkaWZmZXIuCisgICAgICAgIHIgPSByZXByKHNlbGYuQy5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnbWFwcGluZ3Byb3h5KCcpLCByKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5lbmRzd2l0aCgnKScpLCByKQorICAgICAgICBmb3IgaywgdiBpbiBzZWxmLkMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3shcn06IHshcn0nLmZvcm1hdChrLCB2KSwgcikKIAogCiBjbGFzcyBQVHlwZXNMb25nSW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDU1MiwxMCArNDYzOCwzOCBAQAogICAgICAgICB0eXBlLm1ybyh0dXBsZSkKIAogCitjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3R5cGVfbG9va3VwX21yb19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE0MTk5OiBfUHlUeXBlX0xvb2t1cCgpIGhhcyB0byBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0bworICAgICAgICAjIHRoZSB0eXBlIE1STyBiZWNhdXNlIGl0IG1heSBiZSBtb2RpZmllZCBkdXJpbmcgdGhlIGxvb2t1cCwgaWYKKyAgICAgICAgIyBfX2Jhc2VzX18gaXMgc2V0IGR1cmluZyB0aGUgbG9va3VwIGZvciBleGFtcGxlLgorICAgICAgICBjbGFzcyBNeUtleShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBoYXNoKCdteWtleScpCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIFguX19iYXNlc19fID0gKEJhc2UyLCkKKworICAgICAgICBjbGFzcyBCYXNlKG9iamVjdCk6CisgICAgICAgICAgICBteWtleSA9ICdmcm9tIEJhc2UnCisgICAgICAgICAgICBteWtleTIgPSAnZnJvbSBCYXNlJworCisgICAgICAgIGNsYXNzIEJhc2UyKG9iamVjdCk6CisgICAgICAgICAgICBteWtleSA9ICdmcm9tIEJhc2UyJworICAgICAgICAgICAgbXlrZXkyID0gJ2Zyb20gQmFzZTInCisKKyAgICAgICAgWCA9IHR5cGUoJ1gnLCAoQmFzZSwpLCB7TXlLZXkoKTogNX0pCisgICAgICAgICMgbXlrZXkgaXMgcmVhZCBmcm9tIEJhc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLm15a2V5LCAnZnJvbSBCYXNlJykKKyAgICAgICAgIyBteWtleTIgaXMgcmVhZCBmcm9tIEJhc2UyIGJlY2F1c2UgTXlLZXkuX19lcV9fIGhhcyBzZXQgX19iYXNlc19fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5teWtleTIsICdmcm9tIEJhc2UyJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBSdW4gYWxsIGxvY2FsIHRlc3QgY2FzZXMsIHdpdGggUFR5cGVzTG9uZ0luaXRUZXN0IGZpcnN0LgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBUeXBlc0xvbmdJbml0VGVzdCwgT3BlcmF0b3JzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzUHJvcGVydGllc0FuZE1ldGhvZHMsIERpY3RQcm94eVRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzUHJvcGVydGllc0FuZE1ldGhvZHMsIERpY3RQcm94eVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NUZXN0cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggMmRiM2QzMy4uZjQ5NWUxOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xNzAsNiArMTcwLDcgQEAKICAgICAgJ19fY29udGFpbnNfXycsCiAgICAgICdfX2RlbGF0dHJfXycsCiAgICAgICdfX2RlbGl0ZW1fXycsCisgICAgICdfX2Rpcl9fJywKICAgICAgJ19fZG9jX18nLAogICAgICAnX19lcV9fJywKICAgICAgJ19fZm9ybWF0X18nLApAQCAtMTk5LDYgKzIwMCw4IEBACiAgICAgICdfX3N0cl9fJywKICAgICAgJ19fc3ViY2xhc3Nob29rX18nLAogICAgICAnYXBwZW5kJywKKyAgICAgJ2NsZWFyJywKKyAgICAgJ2NvcHknLAogICAgICAnY291bnQnLAogICAgICAnZXh0ZW5kJywKICAgICAgJ2luZGV4JywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWY0ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMgVGVzdCBjYXNlIGZvciB0aGUgc2VsZWN0LmRldnBvbGwoKSBmdW5jdGlvbgorCisjIEluaXRpYWwgdGVzdHMgYXJlIGNvcGllZCBhcyBpcyBmcm9tICJ0ZXN0X3BvbGwucHkiCisKK2ltcG9ydCBvcywgc2VsZWN0LCByYW5kb20sIHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorCit0cnk6CisgICAgc2VsZWN0LmRldnBvbGwKK2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic2VsZWN0LmRldnBvbGwgbm90IGRlZmluZWQgLS0gc2tpcHBpbmcgdGVzdF9kZXZwb2xsIikKKworCitkZWYgZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgZmxhZyk6CisgICAgbWF0Y2ggPSBbXQorICAgIGZvciBmZCwgbW9kZSBpbiByZWFkeToKKyAgICAgICAgaWYgbW9kZSAmIGZsYWc6CisgICAgICAgICAgICBtYXRjaC5hcHBlbmQoZmQpCisgICAgcmV0dXJuIG1hdGNoCisKK2NsYXNzIERldlBvbGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZXZwb2xsMShzZWxmKToKKyAgICAgICAgIyBCYXNpYyBmdW5jdGlvbmFsIHRlc3Qgb2YgcG9sbCBvYmplY3QKKyAgICAgICAgIyBDcmVhdGUgYSBidW5jaCBvZiBwaXBlIGFuZCB0ZXN0IHRoYXQgcG9sbCB3b3JrcyB3aXRoIHRoZW0uCisKKyAgICAgICAgcCA9IHNlbGVjdC5kZXZwb2xsKCkKKworICAgICAgICBOVU1fUElQRVMgPSAxMgorICAgICAgICBNU0cgPSBiIiBUaGlzIGlzIGEgdGVzdC4iCisgICAgICAgIE1TR19MRU4gPSBsZW4oTVNHKQorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgd3JpdGVycyA9IFtdCisgICAgICAgIHIydyA9IHt9CisgICAgICAgIHcyciA9IHt9CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNX1BJUEVTKToKKyAgICAgICAgICAgIHJkLCB3ciA9IG9zLnBpcGUoKQorICAgICAgICAgICAgcC5yZWdpc3RlcihyZCkKKyAgICAgICAgICAgIHAubW9kaWZ5KHJkLCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgcC5yZWdpc3Rlcih3ciwgc2VsZWN0LlBPTExPVVQpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyZCkKKyAgICAgICAgICAgIHdyaXRlcnMuYXBwZW5kKHdyKQorICAgICAgICAgICAgcjJ3W3JkXSA9IHdyCisgICAgICAgICAgICB3MnJbd3JdID0gcmQKKworICAgICAgICBidWZzID0gW10KKworICAgICAgICB3aGlsZSB3cml0ZXJzOgorICAgICAgICAgICAgcmVhZHkgPSBwLnBvbGwoKQorICAgICAgICAgICAgcmVhZHlfd3JpdGVycyA9IGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIHNlbGVjdC5QT0xMT1VUKQorICAgICAgICAgICAgaWYgbm90IHJlYWR5X3dyaXRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBwaXBlcyByZWFkeSBmb3Igd3JpdGluZyIpCisgICAgICAgICAgICB3ciA9IHJhbmRvbS5jaG9pY2UocmVhZHlfd3JpdGVycykKKyAgICAgICAgICAgIG9zLndyaXRlKHdyLCBNU0cpCisKKyAgICAgICAgICAgIHJlYWR5ID0gcC5wb2xsKCkKKyAgICAgICAgICAgIHJlYWR5X3JlYWRlcnMgPSBmaW5kX3JlYWR5X21hdGNoaW5nKHJlYWR5LCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgaWYgbm90IHJlYWR5X3JlYWRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBwaXBlcyByZWFkeSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt3MnJbd3JdXSwgcmVhZHlfcmVhZGVycykKKyAgICAgICAgICAgIHJkID0gcmVhZHlfcmVhZGVyc1swXQorICAgICAgICAgICAgYnVmID0gb3MucmVhZChyZCwgTVNHX0xFTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1ZiksIE1TR19MRU4pCisgICAgICAgICAgICBidWZzLmFwcGVuZChidWYpCisgICAgICAgICAgICBvcy5jbG9zZShyMndbcmRdKSA7IG9zLmNsb3NlKHJkKQorICAgICAgICAgICAgcC51bnJlZ2lzdGVyKHIyd1tyZF0pCisgICAgICAgICAgICBwLnVucmVnaXN0ZXIocmQpCisgICAgICAgICAgICB3cml0ZXJzLnJlbW92ZShyMndbcmRdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmcywgW01TR10gKiBOVU1fUElQRVMpCisKKyAgICBkZWYgdGVzdF90aW1lb3V0X292ZXJmbG93KHNlbGYpOgorICAgICAgICBwb2xsc3RlciA9IHNlbGVjdC5kZXZwb2xsKCkKKyAgICAgICAgdywgciA9IG9zLnBpcGUoKQorICAgICAgICBwb2xsc3Rlci5yZWdpc3Rlcih3KQorCisgICAgICAgIHBvbGxzdGVyLnBvbGwoLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvbGxzdGVyLnBvbGwsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAtMSA8PCAzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgLTEgPDwgNjQpCisKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgwKQorICAgICAgICBwb2xsc3Rlci5wb2xsKDEpCisgICAgICAgIHBvbGxzdGVyLnBvbGwoMSA8PCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCAzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCA2MykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCA2NCkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEZXZQb2xsVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA5NjY2ZjlhLi5kMWYzMTkyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0yLDcgKzIsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGltcG9ydCBjb2xsZWN0aW9ucywgcmFuZG9tLCBzdHJpbmcKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IHBpY2tsZQogCiAKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMyNyw2ICszMjksMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQyLmhhc2hfY291bnQsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMS5lcV9jb3VudCArIGhhc2hlZDIuZXFfY291bnQsIDEpCiAKKyAgICBkZWYgdGVzdF9zZXRpdGVtX2F0b21pY19hdF9yZXNpemUoc2VsZik6CisgICAgICAgIGNsYXNzIEhhc2hlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaGFzaF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLmVxX2NvdW50ID0gMAorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaGFzaF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBzZWxmLmVxX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gaWQoc2VsZikgPT0gaWQob3RoZXIpCisgICAgICAgIGhhc2hlZDEgPSBIYXNoZWQoKQorICAgICAgICAjIDUgaXRlbXMKKyAgICAgICAgeSA9IHtoYXNoZWQxOiA1LCAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzfQorICAgICAgICBoYXNoZWQyID0gSGFzaGVkKCkKKyAgICAgICAgIyA2dGggaXRlbSBmb3JjZXMgYSByZXNpemUKKyAgICAgICAgeVtoYXNoZWQyXSA9IFtdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMS5oYXNoX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDIuaGFzaF9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmVxX2NvdW50ICsgaGFzaGVkMi5lcV9jb3VudCwgMSkKKwogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgICMgZGljdC5wb3BpdGVtKCkKICAgICAgICAgZm9yIGNvcHltb2RlIGluIC0xLCArMToKQEAgLTM4Nyw3ICs0MTAsNyBAQAogICAgICAgICB4LmZhaWwgPSBUcnVlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4YywgZC5wb3AsIHgpCiAKLSAgICBkZWYgdGVzdF9tdXRhdGluZ2l0ZXJhdGlvbihzZWxmKToKKyAgICBkZWYgdGVzdF9tdXRhdGluZ19pdGVyYXRpb24oc2VsZik6CiAgICAgICAgICMgY2hhbmdpbmcgZGljdCBzaXplIGR1cmluZyBpdGVyYXRpb24KICAgICAgICAgZCA9IHt9CiAgICAgICAgIGRbMV0gPSAxCkBAIC0zOTUsNiArNDE4LDMyIEBACiAgICAgICAgICAgICBmb3IgaSBpbiBkOgogICAgICAgICAgICAgICAgIGRbaSsxXSA9IDEKIAorICAgIGRlZiB0ZXN0X211dGF0aW5nX2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBjaGFuZ2luZyBkaWN0IGR1cmluZyBhIGxvb2t1cCAoaXNzdWUgIzE0NDE3KQorICAgICAgICBjbGFzcyBOYXN0eUtleToKKyAgICAgICAgICAgIG11dGF0ZV9kaWN0ID0gTm9uZQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgIyBoYXNoIGNvbGxpc2lvbiEKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBpZiBOYXN0eUtleS5tdXRhdGVfZGljdDoKKyAgICAgICAgICAgICAgICAgICAgbXlkaWN0LCBrZXkgPSBOYXN0eUtleS5tdXRhdGVfZGljdAorICAgICAgICAgICAgICAgICAgICBOYXN0eUtleS5tdXRhdGVfZGljdCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZGVsIG15ZGljdFtrZXldCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPT0gb3RoZXIudmFsdWUKKworICAgICAgICBrZXkxID0gTmFzdHlLZXkoMSkKKyAgICAgICAga2V5MiA9IE5hc3R5S2V5KDIpCisgICAgICAgIGQgPSB7a2V5MTogMX0KKyAgICAgICAgTmFzdHlLZXkubXV0YXRlX2RpY3QgPSAoZCwga2V5MSkKKyAgICAgICAgZFtrZXkyXSA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7a2V5MjogMn0pCisKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBkID0ge30KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGQpLCAne30nKQpAQCAtNzg0LDYgKzgzMyw3NSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl90cmFja2VkKE15RGljdCgpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGRhdGEgPSB7MToiYSIsIDI6ImIiLCAzOiJjIn0KKyAgICAgICAgaXQgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgc29ydGVkKGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyb3AgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkZWwgZGF0YVtkcm9wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChpdCksIHNvcnRlZChkYXRhKSkKKworICAgIGRlZiB0ZXN0X2l0ZW1pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICAjIGRpY3R2aWV3cyBhcmVuJ3QgcGlja2xhYmxlLCBvbmx5IHRoZWlyIGl0ZXJhdG9ycworICAgICAgICBpdG9yZyA9IGl0ZXIoZGF0YS5pdGVtcygpKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAjIG5vdGUgdGhhdCB0aGUgdHlwZSBvZiB0eXBlIG9mIHRoZSB1bnBpY2tsZWQgaXRlcmF0b3IKKyAgICAgICAgIyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsLiAgSXQgaXMKKyAgICAgICAgIyBtZXJlbHkgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCB5aWVsZGluZworICAgICAgICAjIHRoZSBzYW1lIG9iamVjdHMgYXMgdGhlIG9yaWdpbmFsIG9uZS4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChpdCksIGRhdGEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIGRlbCBkYXRhW2Ryb3BbMF1dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChpdCksIGRhdGEpCisKKyAgICBkZWYgdGVzdF92YWx1ZXNpdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICAjIGRhdGEudmFsdWVzKCkgaXNuJ3QgcGlja2xhYmxlLCBvbmx5IGl0cyBpdGVyYXRvcgorICAgICAgICBpdCA9IGl0ZXIoZGF0YS52YWx1ZXMoKSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChpdCkpLCBzb3J0ZWQobGlzdChkYXRhLnZhbHVlcygpKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHZhbHVlcyA9IGxpc3QoaXQpICsgW2Ryb3BdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHZhbHVlcyksIHNvcnRlZChsaXN0KGRhdGEudmFsdWVzKCkpKSkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2RpY3RfZ2V0YXR0cl9zdHJfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIGYgPSBGb28oJzEyMycpCisgICAgICAgIGNsYXNzIF9zdHIoc3RyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1zZywgZ2V0YXR0cihmLCBfc3RyKCdtc2cnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5tc2csIGYuX19kaWN0X19bX3N0cignbXNnJyldKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3NldF9pdGVtX3NpbmdsZV9pbnN0YW5jZV9ub25fc3RyX2tleShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOiBwYXNzCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLl9fZGljdF9fWzFdID0gMQorICAgICAgICBmLmEgPSAnYScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9fZGljdF9fLCB7MToxLCAnYSc6J2EnfSkKIAogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggNWExOTMxOS4uM2M4Yjk1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTg0LDggKzg0LDUgQEAKICAgICAgICAgICAgICAgICAgICAgImV4ZWMiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCA1YzU5ZWFhLi4xYmNkNjkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSwxMSArMSwzNSBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAoraW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGRpcwogaW1wb3J0IGlvCiAKK2NsYXNzIF9DOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geCA9PSAxCisKK2Rpc19jX2luc3RhbmNlX21ldGhvZCA9ICIiIlwKKyAlLTRkICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKKyAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKworZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAxICgxKQorICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorIiIiCiAKIGRlZiBfZihhKToKICAgICBwcmludChhKQpAQCAtMTQsNyArMzgsNyBAQAogZGlzX2YgPSAiIiJcCiAgJS00ZCAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHByaW50KQogICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQotICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgIDkgUE9QX1RPUAogCiAgJS00ZCAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCkBAIC0yMyw2ICs0NywxNiBAQAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCitkaXNfZl9jb19jb2RlID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAwICgwKQorICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAwICgwKQorICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisiIiIKKworCiBkZWYgYnVnNzA4OTAxKCk6CiAgICAgZm9yIHJlcyBpbiByYW5nZSgxLAogICAgICAgICAgICAgICAgICAgICAgMTApOgpAQCAtMzQsNyArNjgsNyBAQAogICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCiAgJS00ZCAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgMTUgR0VUX0lURVIKICAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCiAgICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKQEAgLTEzOCwxOCArMTcyLDI3IEBACiAiIiIKIAogY2xhc3MgRGlzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBkb19kaXNhc3NlbWJseV90ZXN0KHNlbGYsIGZ1bmMsIGV4cGVjdGVkKToKKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CiAgICAgICAgIHMgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzeXMuc3Rkb3V0ID0gcwotICAgICAgICBkaXMuZGlzKGZ1bmMpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAotICAgICAgICBnb3QgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgd3JhcHBlcjoKKyAgICAgICAgICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpcy5kaXNhc3NlbWJsZShmdW5jLCBsYXN0aSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAjIFRyaW0gdHJhaWxpbmcgYmxhbmtzIChpZiBhbnkpLgotICAgICAgICBsaW5lcyA9IGdvdC5zcGxpdCgnXG4nKQotICAgICAgICBsaW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGxpbmVzXQotICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnNwbGl0KCJcbiIpCi0gICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgIHJldHVybiBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBzLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXQorCisgICAgZGVmIGdldF9kaXNhc3NlbWJsZV9hc19zdHJpbmcoc2VsZiwgZnVuYywgbGFzdGk9LTEpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KGZ1bmMsIGxhc3RpLCBGYWxzZSkpCisKKyAgICBkZWYgZG9fZGlzYXNzZW1ibHlfdGVzdChzZWxmLCBmdW5jLCBleHBlY3RlZCk6CisgICAgICAgIGxpbmVzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoZnVuYykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5zcGxpdGxpbmVzKCkKICAgICAgICAgaWYgZXhwZWN0ZWQgIT0gbGluZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoCiAgICAgICAgICAgICAgICAgImV2ZW50cyBkaWQgbm90IG1hdGNoIGV4cGVjdGF0aW9uOlxuIiArCkBAIC0xNTcsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcykpKQogCiAgICAgZGVmIHRlc3Rfb3BtYXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzLm9wbWFwWyJTVE9QX0NPREUiXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMub3BtYXBbIk5PUCJdLCA5KQogICAgICAgICBzZWxmLmFzc2VydEluKGRpcy5vcG1hcFsiTE9BRF9DT05TVCJdLCBkaXMuaGFzY29uc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGlzLm9wbWFwWyJTVE9SRV9OQU1FIl0sIGRpcy5oYXNuYW1lKQogCkBAIC0yMTEsNiArMjU0LDQ0IEBACiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZi5fX2NvZGVfXy5jb19jb2RlLCBkaXNfZl9jb19jb2RlKQorCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfbWV0aG9kKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX0MoMSkuX19pbml0X18sIGRpc19jX2luc3RhbmNlX21ldGhvZCkKKworICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX21ldGhvZF9ieXRlcyhzZWxmKToKKyAgICAgICAgbWV0aG9kX2J5dGVjb2RlID0gX0MoMSkuX19pbml0X18uX19jb2RlX18uY29fY29kZQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QobWV0aG9kX2J5dGVjb2RlLCBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMpCisKKyAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZGlzLmRpcywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2Rpc19vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGlzLmRpcywgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9kaXNfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCisKKyAgICAgICAgdGJfZGlzID0gc2VsZi5nZXRfZGlzYXNzZW1ibGVfYXNfc3RyaW5nKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChOb25lLCB0Yl9kaXMpCisKKyAgICBkZWYgdGVzdF9kaXNfb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5kaXMsIG9iamVjdCgpKQorCiBjb2RlX2luZm9fY29kZV9pbmZvID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIGNvZGVfaW5mbwogRmlsZW5hbWU6ICAgICAgICAgICguKikKQEAgLTI1OCw2ICszMzksNyBAQAogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogPGNvZGUgb2JqZWN0IGYgYXQgKC4qKSwgZmlsZSAiKC4qKSIsIGxpbmUgKC4qKT4KKyAgIDI6ICd0cmlja3kuPGxvY2Fscz4uZicKIFZhcmlhYmxlIG5hbWVzOgogICAgMDogeAogICAgMTogeQpAQCAtMzY0LDYgKzQ0NiwxMyBAQAogICAgICAgICAgICAgICAgIGRpcy5zaG93X2NvZGUoeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LmdldHZhbHVlKCksIGV4cGVjdGVkKyJcbiIpCiAKKyAgICBkZWYgdGVzdF9jb2RlX2luZm9fb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5jb2RlX2luZm8sIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfcHJldHR5X2ZsYWdzX25vX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcy5wcmV0dHlfZmxhZ3MoMCksICcweDAnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoRGlzVGVzdHMsIENvZGVJbmZvVGVzdHMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCBhNmMxN2NjLi44ZjhjN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTQzMiw3ICs0MzMsNyBAQAogICAgID4+PiB0ZXN0cyA9IGZpbmRlci5maW5kKHNhbXBsZV9mdW5jKQogCiAgICAgPj4+IHByaW50KHRlc3RzKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTcgKDEgZXhhbXBsZSk+XQorICAgIFs8RG9jVGVzdCBzYW1wbGVfZnVuYyBmcm9tIC4uLjoxOCAoMSBleGFtcGxlKT5dCiAKIFRoZSBleGFjdCBuYW1lIGRlcGVuZHMgb24gaG93IHRlc3RfZG9jdGVzdCB3YXMgaW52b2tlZCwgc28gYWxsb3cgZm9yCiBsZWFkaW5nIHBhdGggY29tcG9uZW50cy4KQEAgLTE3NDUsMjI2ICsxNzQ2LDIyNyBAQAogCiAiIiIKIAotZGVmIHRlc3RfcGRiX3NldF90cmFjZSgpOgotICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCitpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIG9yIG5vdCBzeXMuZ2V0dHJhY2UoKToKKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlKCk6CisgICAgICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCiAKLSAgICBZb3UgY2FuIHVzZSBwZGIuc2V0X3RyYWNlIGZyb20gYSBkb2N0ZXN0LiAgVG8gZG8gc28sIHlvdSBtdXN0Ci0gICAgcmV0cmlldmUgdGhlIHNldF90cmFjZSBmdW5jdGlvbiBmcm9tIHRoZSBwZGIgbW9kdWxlIGF0IHRoZSB0aW1lCi0gICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KLSAgICBjYXB0dXJlIHByb2dyYW0gb3V0cHV0LiAgSXQgYWxzbyB0ZW1wb3JhcmlseSByZXBsYWNlcyBwZGIuc2V0X3RyYWNlCi0gICAgd2l0aCBhIHZlcnNpb24gdGhhdCByZXN0b3JlcyBzdGRvdXQuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgeW91IHRvCi0gICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KKyAgICAgICAgWW91IGNhbiB1c2UgcGRiLnNldF90cmFjZSBmcm9tIGEgZG9jdGVzdC4gIFRvIGRvIHNvLCB5b3UgbXVzdAorICAgICAgICByZXRyaWV2ZSB0aGUgc2V0X3RyYWNlIGZ1bmN0aW9uIGZyb20gdGhlIHBkYiBtb2R1bGUgYXQgdGhlIHRpbWUKKyAgICAgICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgY2FwdHVyZSBwcm9ncmFtIG91dHB1dC4gIEl0IGFsc28gdGVtcG9yYXJpbHkgcmVwbGFjZXMgcGRiLnNldF90cmFjZQorICAgICAgICB3aXRoIGEgdmVyc2lvbiB0aGF0IHJlc3RvcmVzIHN0ZG91dC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciB5b3UgdG8KKyAgICAgICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4ID0gNDIKLSAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKLSAgICAgIC4uLiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4gRXhjZXB0aW9uOiBjbMOpCi0gICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgLi4uICcnJwotICAgICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHggPSA0MgorICAgICAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKKyAgICAgICAgICAuLi4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLiBFeGNlcHRpb246IGNsw6kKKyAgICAgICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIC4uLiAnJycKKyAgICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiBydW5uZXIgPSBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSkKIAotICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAotICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKKyAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CisgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgPj4+IGltcG9ydCB0ZW1wZmlsZQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKKyAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseTogc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIHByaW50KHgpCi0gICAgICA0MgotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MykKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCisgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgKFBkYikgcHJpbnQoeCkKKyAgICAgICAgICA0MgorICAgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0zKQogCi0gICAgICBZb3UgY2FuIGFsc28gcHV0IHBkYi5zZXRfdHJhY2UgaW4gYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhIHRlc3Q6CisgICAgICAgICAgWW91IGNhbiBhbHNvIHB1dCBwZGIuc2V0X3RyYWNlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSB0ZXN0OgogCi0gICAgICA+Pj4gZGVmIGNhbGxzX3NldF90cmFjZSgpOgotICAgICAgLi4uICAgIHk9MgotICAgICAgLi4uICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgID4+PiBkZWYgY2FsbHNfc2V0X3RyYWNlKCk6CisgICAgICAgICAgLi4uICAgIHk9MgorICAgICAgICAgIC4uLiAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4PTEKLSAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeSknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uCi0gICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHg9MQorICAgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAuLi4gJycnCisgICAgICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCisgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCisgICAgICAgICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OgotICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseToKLSAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKLSAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgKFBkYikgcHJpbnQoeSkKLSAgICAgIDIKLSAgICAgIChQZGIpIHVwCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAgIC0+IGNhbGxzX3NldF90cmFjZSgpCi0gICAgICAoUGRiKSBwcmludCh4KQotICAgICAgMQotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAgICAgICA+Pj4gdHJ5OgorICAgICAgICAgIC4uLiAgICAgcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgorICAgICAgICAgIC0tUmV0dXJuLS0KKyAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgICAgMgorICAgICAgICAgIChQZGIpIHVwCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCisgICAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAgIDEKKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKIAotICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgotICAgIGRvY3Rlc3QgZXhhbXBsZXM6CisgICAgICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgorICAgICAgICBkb2N0ZXN0IGV4YW1wbGVzOgogCi0gICAgICA+Pj4gZG9jID0gJycnCi0gICAgICAuLi4gPj4+IGRlZiBmKHgpOgotICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCi0gICAgICAuLi4gPj4+IGRlZiBnKHgpOgotICAgICAgLi4uIC4uLiAgICAgcHJpbnQoeCszKQotICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICAuLi4gPj4+IGYoMykKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBnKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAxCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAzCi0gICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgICAgLi4uICAgICcnXSkKLSAgICAgID4+PiB0cnk6IHJ1bm5lci5ydW4odGVzdCkKLSAgICAgIC4uLiBmaW5hbGx5OiBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCi0gICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMV0+KDMpZygpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIGxpc3QKLSAgICAgICAgMSAgICAgZGVmIGcoeCk6Ci0gICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCi0gICAgICAgIDMgIC0+ICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBuZXh0Ci0gICAgICAtLVJldHVybi0tCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzBdPigyKWYoKS0+Tm9uZQotICAgICAgLT4gZyh4KjIpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgICAgIGRlZiBmKHgpOgotICAgICAgICAyICAtPiAgICAgZyh4KjIpCi0gICAgICBbRU9GXQotICAgICAgKFBkYikgbmV4dAotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBmKDMpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgIC0+IGYoMykKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBjb250aW51ZQotICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgICAgRmlsZSAiZm9vLWJhckBiYXoucHkiLCBsaW5lIDcsIGluIGZvby1iYXJAYmF6Ci0gICAgICBGYWlsZWQgZXhhbXBsZToKLSAgICAgICAgICBmKDMpCi0gICAgICBFeHBlY3RlZCBub3RoaW5nCi0gICAgICBHb3Q6Ci0gICAgICAgICAgOQotICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0zKQotICAgICAgIiIiCisgICAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAgIC4uLiA+Pj4gZGVmIGYoeCk6CisgICAgICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCisgICAgICAgICAgLi4uID4+PiBkZWYgZyh4KToKKyAgICAgICAgICAuLi4gLi4uICAgICBwcmludCh4KzMpCisgICAgICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgLi4uID4+PiBmKDMpCisgICAgICAgICAgLi4uICcnJworICAgICAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCisgICAgICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZygpCisgICAgICAgICAgLi4uICAgICdsaXN0JywgICAgICMgbGlzdCBzb3VyY2UgZnJvbSBleGFtcGxlIDEKKyAgICAgICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKKyAgICAgICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMworICAgICAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCisgICAgICAgICAgLi4uICAgICcnXSkKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMylnKCktPk5vbmUKKyAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAgICBkZWYgZyh4KToKKyAgICAgICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCisgICAgICAgICAgICAzICAtPiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMF0+KDIpZigpLT5Ob25lCisgICAgICAgICAgLT4gZyh4KjIpCisgICAgICAgICAgKFBkYikgbGlzdAorICAgICAgICAgICAgMSAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAyICAtPiAgICAgZyh4KjIpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQorICAgICAgICAgIC0+IGYoMykKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAtPiBmKDMpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICBGaWxlICJmb28tYmFyQGJhei5weSIsIGxpbmUgNywgaW4gZm9vLWJhckBiYXoKKyAgICAgICAgICBGYWlsZWQgZXhhbXBsZToKKyAgICAgICAgICAgICAgZigzKQorICAgICAgICAgIEV4cGVjdGVkIG5vdGhpbmcKKyAgICAgICAgICBHb3Q6CisgICAgICAgICAgICAgIDkKKyAgICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MSwgYXR0ZW1wdGVkPTMpCisgICAgICAgICAgIiIiCiAKLWRlZiB0ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkKCk6Ci0gICAgIiIiVGhpcyBpbGx1c3RyYXRlcyBtb3JlLWRlbWFuZGluZyB1c2Ugb2Ygc2V0X3RyYWNlIHdpdGggbmVzdGVkIGZ1bmN0aW9ucy4KKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCgpOgorICAgICAgICAiIiJUaGlzIGlsbHVzdHJhdGVzIG1vcmUtZGVtYW5kaW5nIHVzZSBvZiBzZXRfdHJhY2Ugd2l0aCBuZXN0ZWQgZnVuY3Rpb25zLgogCi0gICAgPj4+IGNsYXNzIEMob2JqZWN0KToKLSAgICAuLi4gICAgIGRlZiBjYWxsc19zZXRfdHJhY2Uoc2VsZik6Ci0gICAgLi4uICAgICAgICAgeSA9IDEKLSAgICAuLi4gICAgICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAuLi4gICAgICAgICBzZWxmLmYxKCkKLSAgICAuLi4gICAgICAgICB5ID0gMgotICAgIC4uLiAgICAgZGVmIGYxKHNlbGYpOgotICAgIC4uLiAgICAgICAgIHggPSAxCi0gICAgLi4uICAgICAgICAgc2VsZi5mMigpCi0gICAgLi4uICAgICAgICAgeCA9IDIKLSAgICAuLi4gICAgIGRlZiBmMihzZWxmKToKLSAgICAuLi4gICAgICAgICB6ID0gMQotICAgIC4uLiAgICAgICAgIHogPSAyCisgICAgICAgID4+PiBjbGFzcyBDKG9iamVjdCk6CisgICAgICAgIC4uLiAgICAgZGVmIGNhbGxzX3NldF90cmFjZShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeSA9IDEKKyAgICAgICAgLi4uICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuZjEoKQorICAgICAgICAuLi4gICAgICAgICB5ID0gMgorICAgICAgICAuLi4gICAgIGRlZiBmMShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeCA9IDEKKyAgICAgICAgLi4uICAgICAgICAgc2VsZi5mMigpCisgICAgICAgIC4uLiAgICAgICAgIHggPSAyCisgICAgICAgIC4uLiAgICAgZGVmIGYyKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICB6ID0gMQorICAgICAgICAuLi4gICAgICAgICB6ID0gMgogCi0gICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKKyAgICAgICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKIAotICAgID4+PiBkb2MgPSAnJycKLSAgICAuLi4gPj4+IGEgPSAxCi0gICAgLi4uID4+PiBjYWxsc19zZXRfdHJhY2UoKQotICAgIC4uLiAnJycKLSAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKLSAgICA+Pj4gcnVubmVyID0gZG9jdGVzdC5Eb2NUZXN0UnVubmVyKHZlcmJvc2U9RmFsc2UpCi0gICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCi0gICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KLSAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHgpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHkpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAotICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgLi4uICAgICcnXSkKKyAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAuLi4gPj4+IGEgPSAxCisgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLi4uICcnJworICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKKyAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAuLi4gICAgJ3ByaW50KHkpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGluIHRoZSBmdW5jdGlvbgorICAgICAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKKyAgICAgICAgLi4uICAgICd1cCcsICdwcmludCh4KScsCisgICAgICAgIC4uLiAgICAndXAnLCAncHJpbnQoeSknLAorICAgICAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAorICAgICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZworICAgICAgICAuLi4gICAgJyddKQogCi0gICAgPj4+IHRyeToKLSAgICAuLi4gICAgIHJ1bm5lci5ydW4odGVzdCkKLSAgICAuLi4gZmluYWxseToKLSAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KLSAgICAuLi4gIyBkb2N0ZXN0OiArUkVQT1JUX05ESUZGCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgc3RlcAotICAgIC0tQ2FsbC0tCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig3KWYxKCkKLSAgICAtPiBkZWYgZjEoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOClmMSgpCi0gICAgLT4geCA9IDEKLSAgICAoUGRiKSBzdGVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig5KWYxKCkKLSAgICAtPiBzZWxmLmYyKCkKLSAgICAoUGRiKSBzdGVwCi0gICAgLS1DYWxsLS0KLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKLSAgICAtPiBkZWYgZjIoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQotICAgIC0+IHogPSAxCi0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQotICAgIC0+IHogPSAyCi0gICAgKFBkYikgcHJpbnQoeikKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQotICAgIC0+IHNlbGYuZjIoKQotICAgIChQZGIpIHByaW50KHgpCi0gICAgMQotICAgIChQZGIpIHVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAtPiBjYWxsc19zZXRfdHJhY2UoKQotICAgIChQZGIpIHByaW50KGZvbykKLSAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCi0gICAgKFBkYikgY29udGludWUKLSAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCi0iIiIKKyAgICAgICAgPj4+IHRyeToKKyAgICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCisgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgLi4uICMgZG9jdGVzdDogK1JFUE9SVF9ORElGRgorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDUpY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLT4gc2VsZi5mMSgpCisgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgIDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDcpZjEoKQorICAgICAgICAtPiBkZWYgZjEoc2VsZik6CisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig4KWYxKCkKKyAgICAgICAgLT4geCA9IDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQorICAgICAgICAtPiBzZWxmLmYyKCkKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKKyAgICAgICAgLT4gZGVmIGYyKHNlbGYpOgorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQorICAgICAgICAtPiB6ID0gMQorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQorICAgICAgICAtPiB6ID0gMgorICAgICAgICAoUGRiKSBwcmludCh6KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOSlmMSgpCisgICAgICAgIC0+IHNlbGYuZjIoKQorICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNSljYWxsc19zZXRfdHJhY2UoKQorICAgICAgICAtPiBzZWxmLmYxKCkKKyAgICAgICAgKFBkYikgcHJpbnQoeSkKKyAgICAgICAgMQorICAgICAgICAoUGRiKSB1cAorICAgICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKKyAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgKFBkYikgcHJpbnQoZm9vKQorICAgICAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAiIiIKIAogZGVmIHRlc3RfRG9jVGVzdFN1aXRlKCk6CiAgICAgIiIiRG9jVGVzdFN1aXRlIGNyZWF0ZXMgYSB1bml0dGVzdCB0ZXN0IHN1aXRlIGZyb20gYSBkb2N0ZXN0LgpAQCAtMjU2Niw3ICsyNTY4LDcgQEAKIAogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCi0gICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigndGVzdF9tYWluKCknKQogICAgIHIgPSB0cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weSBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CmluZGV4IGM2MTA3OGQuLjJmYWZlMWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jayBvYmplY3QgZGlkIG5vdCByZWxlYXNlIHByb3Blcmx5LiIpCiAKICAgICBkZWYgdGVzdF9pbXByb3Blcl9yZWxlYXNlKHNlbGYpOgotICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBfdGhyZWFkLmVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKF90aHJlYWQuZXJyb3IsIHNlbGYubG9jay5yZWxlYXNlKQorICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBSdW50aW1lRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmxvY2sucmVsZWFzZSkKIAogICAgIGRlZiB0ZXN0X2NvbmRfYWNxdWlyZV9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjTWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBhY3F1aXJpbmcgb2YgdGhlIGxvY2sgd29ya3MuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlYmJhNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgotIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMKLQotIyBUaGUgc3BlY2lmaWMgdGVzdHMgbm93IGxpdmUgaW4gTGliL2VtYWlsL3Rlc3QKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBzdWl0ZQotZnJvbSBlbWFpbC50ZXN0LnRlc3RfZW1haWxfY29kZWNzIGltcG9ydCBzdWl0ZSBhcyBjb2RlY3Nfc3VpdGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3Qoc3VpdGUoKSkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChjb2RlY3Nfc3VpdGUoKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwNmFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNTAgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgZW1haWwKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyaworCisjIFJ1biBhbGwgdGVzdHMgaW4gcGFja2FnZSBmb3IgJy1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCcKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIGlmIHBhdHRlcm4gaXMgTm9uZToKKyAgICAgICAgcGF0dGVybiA9ICJ0ZXN0KiIKKyAgICBwYWNrYWdlX3Rlc3RzID0gbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2Rpcj10aGlzX2RpciwgcGF0dGVybj1wYXR0ZXJuKQorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCisgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCisKKworIyB1c2VkIGJ5IHJlZ3J0ZXN0IGFuZCBfX21haW5fXy4KK2RlZiB0ZXN0X21haW4oKToKKyAgICBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICMgVW5pdHRlc3QgbXVja3Mgd2l0aCB0aGUgcGF0aCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlCisgICAgIyBpdCB0byBrZWVwIHJlZ3J0ZXN0IGhhcHB5LgorICAgIHNhdmVwYXRoID0gc3lzLnBhdGhbOl0KKyAgICB0ZXN0LnN1cHBvcnQuX3J1bl9zdWl0ZSh1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3ZlcihoZXJlKSkKKyAgICBzeXMucGF0aFs6XSA9IHNhdmVwYXRoCisKKworIyBoZWxwZXIgY29kZSB1c2VkIGJ5IGEgbnVtYmVyIG9mIHRlc3QgbW9kdWxlcy4KKworZGVmIG9wZW5maWxlKGZpbGVuYW1lLCAqYXJncywgKiprd3MpOgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCBmaWxlbmFtZSkKKyAgICByZXR1cm4gb3BlbihwYXRoLCAqYXJncywgKiprd3MpCisKKworIyBCYXNlIHRlc3QgY2xhc3MKK2NsYXNzIFRlc3RFbWFpbEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbWF4RGlmZiA9IE5vbmUKKyAgICAjIEN1cnJlbnRseSB0aGUgZGVmYXVsdCBwb2xpY3kgaXMgY29tcGF0MzIuICBCeSBzZXR0aW5nIHRoYXQgYXMgdGhlIGRlZmF1bHQKKyAgICAjIGhlcmUgd2UgbWFrZSBtaW5pbWFsIGNoYW5nZXMgaW4gdGhlIHRlc3RfZW1haWwgdGVzdHMgY29tcGFyZWQgdG8gdGhlaXIKKyAgICAjIHByZS0zLjMgc3RhdGUuCisgICAgcG9saWN5ID0gY29tcGF0MzIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhieXRlcywgc2VsZi5hc3NlcnRCeXRlc0VxdWFsKQorCisgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG1pbmltaXplIHRlc3RfZW1haWwgdGVzdCBjaGFuZ2VzLgorICAgIG5kaWZmQXNzZXJ0RXF1YWwgPSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAorCisgICAgZGVmIF9tc2dvYmooc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICB3aXRoIG9wZW5maWxlKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIF9zdHJfbXNnKHNlbGYsIHN0cmluZywgbWVzc2FnZT1NZXNzYWdlLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyaW5nLCBtZXNzYWdlLCBwb2xpY3k9cG9saWN5KQorCisgICAgZGVmIF9ieXRlc19yZXByKHNlbGYsIGIpOgorICAgICAgICByZXR1cm4gW3JlcHIoeCkgZm9yIHggaW4gYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXQorCisgICAgZGVmIGFzc2VydEJ5dGVzRXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnKToKKyAgICAgICAgIiIiT3VyIGJ5dGUgc3RyaW5ncyBhcmUgcmVhbGx5IGVuY29kZWQgc3RyaW5nczsgaW1wcm92ZSBkaWZmIG91dHB1dCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2J5dGVzX3JlcHIoZmlyc3QpLCBzZWxmLl9ieXRlc19yZXByKHNlY29uZCkpCisKKyAgICBkZWYgYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWwpLCBsZW4oZXhwZWN0ZWQpLCBhY3R1YWwpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3R1YWwpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0ge30nLmZvcm1hdChpKSkKKworCitkZWYgcGFyYW1ldGVyaXplKGNscyk6CisgICAgIiIiQSB0ZXN0IG1ldGhvZCBwYXJhbWV0ZXJpemF0aW9uIGNsYXNzIGRlY29yYXRvci4KKworICAgIFBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyB0aGUgdmFsdWUgb2YgYSBjbGFzcyBhdHRyaWJ1dGUgdGhhdCBlbmRzIHdpdGgKKyAgICB0aGUgc3RyaW5nICdfcGFyYW1zJy4gIENhbGwgdGhlIHBvcnRpb24gYmVmb3JlICdfcGFyYW1zJyB0aGUgcHJlZml4LiAgVGhlbgorICAgIGEgbWV0aG9kIHRvIGJlIHBhcmFtZXRlcml6ZWQgbXVzdCBoYXZlIHRoZSBzYW1lIHByZWZpeCwgdGhlIHN0cmluZworICAgICdfYXNfJywgYW5kIGFuIGFyYml0cmFyeSBzdWZmaXguCisKKyAgICBUaGUgdmFsdWUgb2YgdGhlIF9wYXJhbXMgYXR0cmlidXRlIG1heSBiZSBlaXRoZXIgYSBkaWN0aW9uYXJ5IG9yIGEgbGlzdC4KKyAgICBUaGUgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFuZCB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgbWF5IGVpdGhlciBiZQorICAgIHNpbmdsZSB2YWx1ZXMsIG9yIGEgbGlzdC4gIElmIHNpbmdsZSB2YWx1ZXMsIHRoZXkgYXJlIHR1cm5lZCBpbnRvIHNpbmdsZQorICAgIGVsZW1lbnQgdHVwbGVzLiAgSG93ZXZlciBkZXJpdmVkLCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIHBhc3NlZCB2aWEKKyAgICAqYXJncyB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZ1bmN0aW9uLgorCisgICAgSW4gYSBfcGFyYW1zIGRpY3Rpb2FucnksIHRoZSBrZXlzIGJlY29tZSBwYXJ0IG9mIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQKKyAgICB0ZXN0cy4gIEluIGEgX3BhcmFtcyBsaXN0LCB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBjb252ZXJ0ZWQgaW50byBhCisgICAgc3RyaW5nIGJ5IGpvaW5pbmcgdGhlIHN0cmluZyB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0dXBsZSBieSAnXycgYW5kCisgICAgY29udmVydGluZyBhbnkgYmxhbmtzIGludG8gJ18ncywgYW5kIHRoaXMgYmVjb21lIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgVGhlICBmdWxsIG5hbWUgb2YgYSBnZW5lcmF0ZWQgdGVzdCBpcyBhICd0ZXN0XycgcHJlZml4LCB0aGUgcG9ydGlvbiBvZiB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIG5hbWUgYWZ0ZXIgdGhlICAnX2FzXycgc2VwYXJhdG9yLCBwbHVzIGFuICdfJywgcGx1cyB0aGUgbmFtZQorICAgIGRlcml2ZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmU6CisKKyAgICAgICAgY291bnRfcGFyYW1zID0gcmFuZ2UoMikKKworICAgICAgICBkZWYgY291bnRfYXNfZm9vX2FyZyhzZWxmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28rMSwgbXlmdW5jKGZvbykpCisKKyAgICB3ZSB3aWxsIGdldCBwYXJhbWV0ZXJpemVkIHRlc3QgbWV0aG9kcyBuYW1lZDoKKyAgICAgICAgdGVzdF9mb29fYXJnXzAKKyAgICAgICAgdGVzdF9mb29fYXJnXzEKKyAgICAgICAgdGVzdF9mb29fYXJnXzIKKworICAgIE9yIHdlIGNvdWxkIGhhdmU6CisKKyAgICAgICAgZXhhbXBsZV9wYXJhbXMgPSB7J2Zvbyc6ICgnYmFyJywgMSksICdiaW5nJzogKCdiYW5nJywgMil9CisKKyAgICAgICAgZGVmIGV4YW1wbGVfYXNfbXlmdW5jX2lucHV0KHNlbGYsIG5hbWUsIGNvdW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZStzdHIoY291bnQpLCBteWZ1bmMobmFtZSwgY291bnQpKQorCisgICAgYW5kIGdldDoKKyAgICAgICAgdGVzdF9teWZ1bmNfaW5wdXRfZm9vCisgICAgICAgIHRlc3RfbXlmdW5jX2lucHV0X2JpbmcKKworICAgIE5vdGU6IGlmIGFuZCBvbmx5IGlmIHRoZSBnZW5lcmF0ZWQgdGVzdCBuYW1lIGlzIGEgdmFsaWQgaWRlbnRpZmllciBjYW4gaXQKKyAgICBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgdGVzdCBpbmRpdmlkdWFsbHkgZnJvbSB0aGUgdW5pdHRlc3QgY29tbWFuZCBsaW5lLgorCisgICAgIiIiCisgICAgcGFyYW1kaWN0cyA9IHt9CisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoJ19wYXJhbXMnKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGF0dHIsICdrZXlzJyk6CisgICAgICAgICAgICAgICAgZCA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gYXR0cjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoeCwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gKHgsKQorICAgICAgICAgICAgICAgICAgICBuID0gJ18nLmpvaW4oc3RyKHYpIGZvciB2IGluIHgpLnJlcGxhY2UoJyAnLCAnXycpCisgICAgICAgICAgICAgICAgICAgIGRbbl0gPSB4CisgICAgICAgICAgICAgICAgYXR0ciA9IGQKKyAgICAgICAgICAgIHBhcmFtZGljdHNbbmFtZVs6LTddICsgJ19hc18nXSA9IGF0dHIKKyAgICB0ZXN0ZnVuY3MgPSB7fQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBmb3IgcGFyYW1zbmFtZSwgcGFyYW1zZGljdCBpbiBwYXJhbWRpY3RzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocGFyYW1zbmFtZSk6CisgICAgICAgICAgICAgICAgdGVzdG5hbWVyb290ID0gJ3Rlc3RfJyArIG5hbWVbbGVuKHBhcmFtc25hbWUpOl0KKyAgICAgICAgICAgICAgICBmb3IgcGFyYW1uYW1lLCBwYXJhbXMgaW4gcGFyYW1zZGljdC5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gKGxhbWJkYSBzZWxmLCBuYW1lPW5hbWUsIHBhcmFtcz1wYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIG5hbWUpKCpwYXJhbXMpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0bmFtZSA9IHRlc3RuYW1lcm9vdCArICdfJyArIHBhcmFtbmFtZQorICAgICAgICAgICAgICAgICAgICB0ZXN0Ll9fbmFtZV9fID0gdGVzdG5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGVzdGZ1bmNzW3Rlc3RuYW1lXSA9IHRlc3QKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0ZXN0ZnVuY3MuaXRlbXMoKToKKyAgICAgICAgc2V0YXR0cihjbHMsIGtleSwgdmFsdWUpCisgICAgcmV0dXJuIGNscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhZjllYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgdGVzdF9tYWluCisKK3Rlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL1B5QmFubmVyMDQ4LmdpZiBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9QeUJhbm5lcjA0OC5naWYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvUHlCYW5uZXIwNDguZ2lmCnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvUHlCYW5uZXIwNDguZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvYXVkaW90ZXN0LmF1IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL2F1ZGlvdGVzdC5hdQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9hdWRpb3Rlc3QuYXUKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9hdWRpb3Rlc3QuYXUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzExLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTJhLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMmEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMzLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzQudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzUudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM1LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM2LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzcudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzgudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM4LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM5LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180MC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDAudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Mi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180My50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Ni50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzk1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwxODcgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdERlY29kZVEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCBleF9yZXN1bHQsIGV4X2RlZmVjdHM9W10pOgorICAgICAgICByZXN1bHQsIGRlZmVjdHMgPSBfZXcuZGVjb2RlX3Eoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkZWZlY3RzLCBleF9kZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfbm9fZW5jb2RlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsIGInZm9vYmFyJykKKworICAgIGRlZiB0ZXN0X3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvbz0yMGJhcj0yMCcsIGInZm9vIGJhciAnKQorICAgICAgICBzZWxmLl90ZXN0KGInZm9vX2Jhcl8nLCBiJ2ZvbyBiYXIgJykKKworICAgIGRlZiB0ZXN0X3J1bl9vZl9lbmNvZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vPTIwPTIwPTIxPTJDYmFyJywgYidmb28gICEsYmFyJykKKworCitjbGFzcyBUZXN0RGVjb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIGV4X3Jlc3VsdCwgZXhfZGVmZWN0cz1bXSk6CisgICAgICAgIHJlc3VsdCwgZGVmZWN0cyA9IF9ldy5kZWNvZGVfYihzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleF9yZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGRlZmVjdHMsIGV4X2RlZmVjdHMpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidabTl2JywgYidmb28nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1rJywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidkbVx4MDFrPT09JywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJfYW5kX2JhZF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1ceDAxaycsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworCitjbGFzcyBUZXN0RGVjb2RlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3Rfd3JvbmdfZm9ybWF0X2lucHV0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJz0/YmFkb25lPz0nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnPT8nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnJykKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgY2hhcnNldD0ndXMtYXNjaWknLCBsYW5nPScnLCBkZWZlY3RzPVtdKToKKyAgICAgICAgcmVzLCBjaGFyLCBsLCBkID0gX2V3LmRlY29kZShzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhciwgY2hhcnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBsYW5nKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkLCBkZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Eoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/cT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2Ioc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3RfcV9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/UT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3RfYl9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Qj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3Rfbm9uX3RyaXZpYWxfcShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT9sYXRpbi0xP3E/PTIwRj1mY3I9MjBFbGlzZT0yMD89JywgJyBGw7xyIEVsaXNlICcsICdsYXRpbi0xJykKKworICAgIGRlZiB0ZXN0X3FfZXNjcGFlZF9ieXRlc19wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYic9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89Jy5kZWNvZGUoJ3VzLWFzY2lpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJyBcdURDQUNmb28nLAorICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl91bmRlY29kYWJsZV9ieXRlc19pZ25vcmVkX3dpdGhfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInPT91cy1hc2NpaT9iP2RtXHhBQ2s/PScuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gWworICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QsCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaWdub3JlZF93aXRoX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2RtXHgwMWs9PT0/PScsCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaW5jb3JyZWN0X3BhZGRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbVx4MDFrPz0nLAorICAgICAgICAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl9wYWRkaW5nX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2Rtaz89JywKKyAgICAgICAgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9ub25udWxsX2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWkqaml2ZT9xP3Rlc3Q/PScsICd0ZXN0JywgbGFuZz0naml2ZScpCisKKyAgICBkZWYgdGVzdF91bmtub3duXzhiaXRfY2hhcnNldChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91bmtub3duLThiaXQ/cT9mb289QUNiYXI/PScsCisgICAgICAgICAgICAgICAgICAgYidmb29ceGFjYmFyJy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW10pCisKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYXJzZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/Zm9vYmFyP3E/Zm9vPUFDYmFyPz0nLAorICAgICAgICAgICAgICAgICAgIGInZm9vXHhhY2JhcicuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ2Zvb2JhcicsCisgICAgICAgICAgICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgYmUgYSBuZXcgRGVmZWN0IGluc3RlYWQ/CisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuQ2hhcnNldEVycm9yXSkKKworCitjbGFzcyBUZXN0RW5jb2RlUShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzcmMsIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX3Eoc3JjKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9hbGxfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsICdmb29iYXInKQorCisgICAgZGVmIHRlc3Rfc3BhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vIGJhciAnLCAnZm9vX2Jhcl8nKQorCisgICAgZGVmIHRlc3RfcnVuX29mX2VuY29kYWJsZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb28gICwsYmFyJywgJ2Zvb19fPTJDPTJDYmFyJykKKworCitjbGFzcyBUZXN0RW5jb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYidmb28nKSwgJ1ptOXYnKQorCisgICAgZGVmIHRlc3RfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYid2aScpLCAnZG1rPScpCisKKworY2xhc3MgVGVzdEVuY29kZShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3Eoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgJ3V0Zi04JywgJ3EnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9iKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycsICd1dGYtOCcsICdiJyksICc9P3V0Zi04P2I/Wm05dj89JykKKworICAgIGRlZiB0ZXN0X2F1dG9fcShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb28nLCAndXRmLTgnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfc2hvcnRfbW9zdGx5X3NhZmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgndmkuJywgJ3V0Zi04JyksICc9P3V0Zi04P3E/dmk9MkU/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX2JfaWZfZW5vdWdoX3Vuc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCcuLi4uLicsICd1dGYtOCcpLCAnPT91dGYtOD9iP0xpNHVMaTQ9Pz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19iX2lmX2xvbmdfdW5zYWZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ3ZpLnZpLnZpLnZpLnZpLicsICd1dGYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1rdWRta3VkbWt1ZG1rdWRta3U/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfbG9uZ19tb3N0bHlfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCd2aSB2aSB2aS52aSAnLCAndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91dGYtOD9xP3ZpX3ZpX3ZpPTJFdmlfPz0nKQorCisgICAgZGVmIHRlc3RfdXRmOF9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycpLCAnPT91dGYtOD9xP2Zvbz89JykKKworICAgIGRlZiB0ZXN0X2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgbGFuZz0naml2ZScpLCAnPT91dGYtOCpqaXZlP3E/Zm9vPz0nKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2Zvb1x1RENBQ2JhcicsIGNoYXJzZXQ9J3Vua25vd24tOGJpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3Vua25vd24tOGJpdD9xP2Zvbz1BQ2Jhcj89JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDFlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyNTUyIEBACitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IF9oZWFkZXJfdmFsdWVfcGFyc2VyIGFzIHBhcnNlcgorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKKworY2xhc3MgVGVzdFRva2VucyhUZXN0RW1haWxCYXNlKToKKworICAgICMgRVdXaGl0ZVNwYWNlVGVybWluYWwKKworICAgIGRlZiB0ZXN0X0VXV2hpdGVTcGFjZVRlcm1pbmFsKHNlbGYpOgorICAgICAgICB4ID0gcGFyc2VyLkVXV2hpdGVTcGFjZVRlcm1pbmFsKCcgXHQnLCAnZndzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAnIFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsdWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZW5jb2RlZCwgJyBcdCcpCisKKyAgICAjIFVuc3RydWN0dXJlZFRva2VuTGlzdAorCisgICAgZGVmIHRlc3RfdW5kZWNvZGFibGVfYnl0ZXNfZXJyb3JfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBiYWRzdHIgPSBiImxlIHBvdWYgY1x4YWZsZWJyZSIuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICB1bnN0ID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQoYmFkc3RyKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbCh1bnN0LmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorICAgICAgICBwYXJ0cyA9IGxpc3QodW5zdC5wYXJ0cykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwocGFydHNbMF0uYWxsX2RlZmVjdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChwYXJ0c1sxXS5hbGxfZGVmZWN0cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHBhcnRzWzJdLmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisKK2NsYXNzIFRlc3RQYXJzZXJNaXhpbjoKKworICAgIGRlZiBfYXNzZXJ0X3Jlc3VsdHMoc2VsZiwgdGwsIHJlc3QsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsIHJlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0bCksIHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bC52YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHRsLmFsbF9kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3QsIHJlbWFpbmRlcikKKyAgICAgICAgaWYgY29tbWVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmNvbW1lbnRzLCBjb21tZW50cykKKworICAgIGRlZiBfdGVzdF9nZXRfeChzZWxmLCBtZXRob2QsIHNvdXJjZSwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyLCBjb21tZW50cz1Ob25lKToKKyAgICAgICAgdGwsIHJlc3QgPSBtZXRob2Qoc291cmNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVzdWx0cyh0bCwgcmVzdCwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywgcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cz1Ob25lKQorICAgICAgICByZXR1cm4gdGwKKworICAgIGRlZiBfdGVzdF9wYXJzZV94KHNlbGYsIG1ldGhvZCwgaW5wdXQsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICB0bCA9IG1ldGhvZChpbnB1dCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlc3VsdHModGwsICcnLCBzdHJpbmcsIHZhbHVlLCBkZWZlY3RzLCAnJywgY29tbWVudHMpCisgICAgICAgIHJldHVybiB0bAorCisKK2NsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlck1peGluLCBUZXN0RW1haWxCYXNlKToKKworICAgICMgX3dzcF9zcGxpdHRlcgorCisgICAgcmZjX3ByaW50YWJsZV9hc2NpaSA9IGJ5dGVzKHJhbmdlKDMzLCAxMjcpKS5kZWNvZGUoJ2FzY2lpJykKKyAgICByZmNfYXRleHRfY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIhIyQlJlwnKistLz0/Xl9ge318fiIpCisgICAgcmZjX2R0ZXh0X2NoYXJzID0gcmZjX3ByaW50YWJsZV9hc2NpaS50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnJywnJyxyJ1xbXScpKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vJywgMSksIFsnZm9vJ10pCisKKyAgICBkZWYgdGVzdF9fd3NwX3NwbGl0dGVyX3R3b193b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vIGRlZicsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZvbycsICcgJywgJ2RlZiddKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl93c19ydW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5fd3NwX3NwbGl0dGVyKCdmb28gXHQgZGVmIGppaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZm9vJywgJyBcdCAnLCAnZGVmIGppayddKQorCisKKyAgICAjIGdldF9md3MKKworICAgIGRlZiB0ZXN0X2dldF9md3Nfb25seShzZWxmKToKKyAgICAgICAgZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBcdCAgJywgJyBcdCAgJywgJyAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZndzLnRva2VuX3R5cGUsICdmd3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c19zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBmb28nLCAnICcsICcgJywgW10sICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c193c19ydW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9md3MsICcgXHQgZm9vICcsICcgXHQgJywgJyAnLCBbXSwgJ2ZvbyAnKQorCisgICAgIyBnZXRfZW5jb2RlZF93b3JkCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX21pc3Npbmdfc3RhcnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCdhYmMnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9taXNzaW5nX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9lbmNvZGVkX3dvcmQoJz0/YWJjJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbWlzc2luZ19taWRkbGVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCc9P2FiYz89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfdmFsaWRfZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXMtYXNjaWk/cT90aGlzX2lzX2FfdGVzdD89ICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBhIHRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgYmlyZCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2ludGVybmFsX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP3RoaXMgaXMgYSB0ZXN0Pz0gIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgYSB0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJpcmQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9nZXRzX2ZpcnN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PSAgPT91dGYtOD9xP3NlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgPT91dGYtOD9xP3NlY29uZD89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfZ2V0c19maXJzdF9ldmVuX2lmX25vX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PT0/dXRmLTg/cT9zZWNvbmQ/PScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P3E/c2Vjb25kPz0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9zZXRzX2V4dHJhX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGV3ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaSpqaXZlP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpKmppdmU/cT9maXJzdF9zZWNvbmQ/PScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcuY2hhcnNldCwgJ3VzLWFzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5sYW5nLCAnaml2ZScpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2xhbmdfZGVmYXVsdF9pc19ibGFuayhzZWxmKToKKyAgICAgICAgZXcgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmNoYXJzZXQsICd1cy1hc2NpaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcubGFuZywgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX25vbl9wcmludGFibGVfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3RceDAyc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbGVhZGluZ19pbnRlcm5hbF9zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/PTIwZm9vPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgICMgZ2V0X3Vuc3RydWN0dXJlZAorCisgICAgZGVmIF9nZXRfdW5zdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHRva2VuID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQodmFsdWUpCisgICAgICAgIHJldHVybiB0b2tlbiwgJycKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbnVsbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJycsICcnLCAnJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbycsICdmb28nLCAnZm9vJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ub3JtYWxfcGhyYXNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vcm1hbF9waHJhc2Vfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9sZWFkaW5nX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICcgIGZvbyBiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90cmFpbGluZ193aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbGVhZGluZ19hbmRfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfb25lX3ZhbGlkX2V3X25vX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV9ld190cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJz0/dXMtYXNjaWk/cT9iYXI/PSAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV92YWxpZF9ld190cmFpbGluZ190ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89IGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X2luX21pZGRsZV9vZl90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX3R3b19ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICdmb28gPT91cy1hc2NpaT9xP2Jhcj89ID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF90d29fZXdfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSA9P3VzLWFzY2lpP3E/YmlyZD89ICAgJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCAgICcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X3dpdGhfbGVhZGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICcgID0/dXMtYXNjaWk/cT9iYXI/PScsCisgICAgICAgICAgICAnICBiYXInLAorICAgICAgICAgICAgJyBiYXInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfcGhyYXNlX3dpdGhfdHdvX2V3X2V4dHJhX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJ2ZvbyA9P3VzLWFzY2lpP3E/YmFyPz0gXHQgID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90d29fZXdfZXh0cmFfd3NfdHJhaWxpbmdfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/dGVzdD89ICAgPT91cy1hc2NpaT9xP2Zvbz89ICB2YWwnLAorICAgICAgICAgICAgJ3Rlc3Rmb28gIHZhbCcsCisgICAgICAgICAgICAndGVzdGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfZXdfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P2lzby04ODU5LTE/cT9oZWxsbz0yMHdvcmxkPz0nLAorICAgICAgICAgICAgJ2hlbGxvIHdvcmxkJywKKyAgICAgICAgICAgICdoZWxsbyB3b3JsZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ld193aXRoX2ludGVybmFsX2xlYWRpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnICAgPT91cy1hc2NpaT9xPz0yMHRlc3Q/PSAgID0/dXMtYXNjaWk/cT89MjBmb28/PSAgdmFsJywKKyAgICAgICAgICAgICcgICAgdGVzdCBmb28gIHZhbCcsCisgICAgICAgICAgICAnICB0ZXN0IGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWlsZF9ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3VuZGVjb2RhYmxlX2J5dGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgYid0ZXN0IFx4QUNmb28gIHZhbCcuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyB2YWwnLAorICAgICAgICAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF91bmRlY29kYWJsZV9ieXRlc19pbl9FVyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgIChiJz0/dXMtYXNjaWk/cT89MjB0ZXN0Pz0gICA9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89JworICAgICAgICAgICAgICAgIGInICB2YWwnKS5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgJyB0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICcgdGVzdCBcdURDQUNmb28gdmFsJywKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9taXNzaW5nX2Jhc2U2NF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJz0/dXRmLTg/Yj9kbWs/PScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2ludmFsaWRfYmFzZTY0X2NoYXJhY3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz09PT89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWxpZF9iYXNlNjRfY2hhcmFjdGVyX2FuZF9iYWRfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCwKKyAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vX3doaXRlc3BhY2VfYmV0d2Vlbl9ld3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91dGYtOD9xP2Zvbz89PT91dGYtOD9xP2Jhcj89JywKKyAgICAgICAgICAgICdmb29iYXInLAorICAgICAgICAgICAgJ2Zvb2JhcicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICAjIGdldF9xcF9jdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICcgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LnRva2VuX3R5cGUsICdwdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfYWxsX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHdpdGhfcXAgPSBzZWxmLnJmY19wcmludGFibGVfYXNjaWkucmVwbGFjZSgnXFwnLCAnXFxcXCcpCisgICAgICAgIHdpdGhfcXAgPSB3aXRoX3FwLiAgcmVwbGFjZSgnKCcsIHInXCgnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC5yZXBsYWNlKCcpJywgcidcKScpCisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9xcCwgc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLCAnICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnICcsIFtdLCAnIGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdFx0ZGUnLCAnZm9vJywgJyAnLCBbXSwgJyBcdFx0ZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX2Nsb3NlX3BhcmVuX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28pJywgJ2ZvbycsICcgJywgW10sICcpJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF93c3BfYmVmb3JlX2Nsb3NlX3BhcmVuX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgKScsICdmb28nLCAnICcsIFtdLCAnICApJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyliYXInLCAnZm9vJywgJyAnLCBbXSwgJyliYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX29wZW5fcGFyZW5fb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbygnLCAnZm9vJywgJyAnLCBbXSwgJygnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3dzcF9iZWZvcmVfb3Blbl9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICgnLCAnZm9vJywgJyAnLCBbXSwgJyAgKCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfb3Blbl9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyhiYXInLCAnZm9vJywgJyAnLCBbXSwgJyhiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIpJywgJ2Zvb1x4MDBiYXInLCAnICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X3Fjb250ZW50CisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfb25seShzZWxmKToKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29iYXInLCAnZm9vYmFyJywgJ2Zvb2JhcicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdGV4dC50b2tlbl90eXBlLCAncHRleHQnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2FsbF9wcmludGFibGVzKHNlbGYpOgorICAgICAgICB3aXRoX3FwID0gc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC4gIHJlcGxhY2UoJyInLCByJ1wiJykKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsIHdpdGhfcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnZm9vJywgW10sICcgZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRkZScsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF91cF90b19kcXVvdGVfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfd3NwX2JlZm9yZV9jbG9zZV9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICInLCAnZm9vJywgJ2ZvbycsIFtdLCAnICAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyJiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnImJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGZnIicsICdmb29ceDAwZmcnLCAnZm9vXHgwMGZnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnIicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgIyBnZXRfYXRleHQKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF9vbmx5KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcicsICdmb29iYXInLCAnZm9vYmFyJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LnRva2VuX3R5cGUsICdhdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfYWxsX2F0ZXh0KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwgc2VsZi5yZmNfYXRleHRfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19hdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2F0ZXh0X2NoYXJzLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyBiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIFx0XHRiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X3VwX3RvX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIoJywgJ2Zvb1x4MDBiYXInLCAnZm9vXHgwMGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJygnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X2JhcmVfcXVvdGVkX3N0cmluZworCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBicXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vIicsICciZm9vIicsICdmb28nLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnFzLnRva2VuX3R5cGUsICdiYXJlLXF1b3RlZC1zdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19tdXN0X3N0YXJ0X3dpdGhfZHF1b3RlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nKCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZygnICAiZm9vIicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIlx0IGJhcicsICciZm9vIicsICdmb28nLCBbXSwgJ1x0IGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIGJhciBtb28iJywgJyJmb28gYmFyIG1vbyInLCAnZm9vIGJhciBtb28nLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyIgZm9vICBtb29cdCInLCAnIiBmb28gIG1vb1x0IicsICcgZm9vICBtb29cdCcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfZW5kX2RxdW90ZV9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyJiYXInLCAnImZvbyInLCAnZm9vJywgW10sICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19xdW90ZWRfZHF1b3RlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgIHInImZvb1wiaW4iYScsIHInImZvb1wiaW4iJywgJ2ZvbyJpbicsIFtdLCAnYScpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciYVx4MDFhIicsICciYVx4MDFhIicsICdhXHgwMWEnLAorICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vX2VuZF9kcXVvdGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyJmb28nLCAnImZvbyInLCAnZm9vJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyAnLCAnImZvbyAiJywgJ2ZvbyAnLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19lbXB0eV9xdW90ZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIiInLCAnIiInLCAnJywgW10sICcnKQorCisgICAgIyBnZXRfY29tbWVudAorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfb25seShzZWxmKToKKyAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KScsICcoY29tbWVudCknLCAnICcsIFtdLCAnJywgWydjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudC50b2tlbl90eXBlLCAnY29tbWVudCcpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdXN0X3N0YXJ0X3dpdGhfcGFyZW4oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9jb21tZW50KCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2NvbW1lbnQoJyAgKGZvbyInKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KSAgXHQnLCAnKGNvbW1lbnQpJywgJyAnLCBbXSwgJyAgXHQnLCBbJ2NvbW1lbnQnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIGJhcikgIFx0JywgJyhmb28gYmFyKScsICcgJywgW10sICcgIFx0JywgWydmb28gYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV93b3Jkc193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoIGZvbyAgYmFyXHQgKSAgXHQnLCAnKCBmb28gIGJhclx0ICknLCAnICcsIFtdLCAnICBcdCcsCisgICAgICAgICAgICAgICAgWycgZm9vICBiYXJcdCAnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VuZF9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyliYXInLCAnKGZvbyknLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3F1b3RlZF9wYXJlbnMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb29cKSBcKFwpYmFyKScsICcoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vXHg3RmJhciknLCAnKGZvb1x4N0ZiYXIpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJywgWydmb29ceDdGYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub19lbmRfcGFyZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb28gYmFyJywgJyhmb28gYmFyKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXInXSkKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyBiYXIgICcsICcoZm9vIGJhciAgKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXIgICddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vKGJhcikpJywgJyhmb28oYmFyKSknLCAnICcsIFtdLCAnJywgWydmb28oYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMV0uY29udGVudCwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9uZXN0ZWRfY29tbWVudF93c3Aoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vICggYmFyICkgKScsICcoZm9vICggYmFyICkgKScsICcgJywgW10sICcnLCBbJ2ZvbyAoIGJhciApICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJyBiYXIgJykKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VtcHR5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJygpJywgJygpJywgJyAnLCBbXSwgJycsIFsnJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV9uZXN0aW5nKHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKCgoKChmb28pKSkpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLCBbXSwgJycsIFsnKCgoKGZvbykpKSknXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCwgMCwgLTEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzBdLmNvbnRlbnQsICcoJyooaS0xKSsnZm9vJysnKScqKGktMSkpCisgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnQuY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9taXNzaW5nX2VuZF9vZl9uZXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoKCgoKGZvbykpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLCAnJywgWycoKCgoZm9vKSkpKSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJ2IpJykKKworICAgICMgZ2V0X2Nmd3MKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX29ubHlfd3Moc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIFx0IFx0JywgJyAgXHQgXHQnLCAnICcsIFtdLCAnJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3cy50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcoZm9vKScsICcoZm9vKScsICcgJywgW10sICcnLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X21peGVkKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnIChmb28gKSAgKCBiYXIpICcsICcgKGZvbyApICAoIGJhcikgJywgJyAnLCBbXSwgJycsCisgICAgICAgICAgICAgICAgWydmb28gJywgJyBiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzFdLmNvbnRlbnQsICdmb28gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzNdLmNvbnRlbnQsICcgYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2VuZHNfYXRfbm9uX2xlYWRlcihzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28pIGJhcicsICcoZm9vKSAnLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbnRlbnQsICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfZW5kc19hdF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbykgXHgwNycsICcoZm9vKSAnLCAnICcsIFtdLCAnXHgwNycsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1swXS5jb250ZW50LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28gXHgwNykgInRlc3QiJywgJyhmb28gXHgwNykgJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnInRlc3QiJywgWydmb28gXHgwNyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbyBceDA3JykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIChmb28gJywgJyAgKGZvbyApJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycsIFsnZm9vICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMV0uY29udGVudCwgJ2ZvbyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfbXVsdGlwbGVfbmVzdGVkX2NvbW1lbnRzKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnICcsIFtdLAorICAgICAgICAgICAgICAgICcnLCBbJ2ZvbyAoYmFyKScsICcoYSkoYSknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbW1lbnRzLCBbJ2ZvbyAoYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMl0uY29tbWVudHMsIFsnKGEpKGEpJ10pCisKKyAgICAjIGdldF9xdW90ZWRfc3RyaW5nCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyJib2IiJywgJyJib2IiJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnImJvYiInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgICcsICdcdCAiYm9iIiAgJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9jb21tZW50c19hbmRfd3NwKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoZm9vKSAiYm9iIihiYXIpJywgJyAoZm9vKSAiYm9iIihiYXIpJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdWzFdLmNvbnRlbnQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdWzBdLmNvbnRlbnQsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKGZvbykgKGJhcikgImJvYiIoYmlyZCknLCAnIChmb28pIChiYXIpICJib2IiKGJpcmQpJywgJyBib2IgJywKKyAgICAgICAgICAgICAgICBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2JpcmQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKFx4MEEpICJib2IiJywgJyAoXHgwQSkgImJvYiInLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydceDBBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fcWNvbnRlbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYVx4MEIiJywgJyAoYSkgImFceDBCIicsICcgYVx4MEInLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdhXHgwQicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJhXHgwQiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfaW50ZXJuYWxfd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiZm9vICBiYXIgIicsICcgKGEpICJmb28gIGJhciAiJywgJyBmb28gIGJhciAnLAorICAgICAgICAgICAgICAgIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2ZvbyAgYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJmb28gIGJhciAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYm9iIiAoYScsICcgKGEpICJib2IiIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX3Fjb250ZW50KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImJvYicsICcgKGEpICJib2IiJywgJyBib2InLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfbm9fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcoJyAoYWIpIHh5eicpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19xc19lbmRzX2F0X25vbmNmd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgZmVlJywgJ1x0ICJib2IiICcsICcgYm9iICcsIFtdLCAnZmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgICMgZ2V0X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX29ubHkoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdib2InLCAnYm9iJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tLnRva2VuX3R5cGUsICdhdG9tJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfd3NwKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdcdCBib2IgICcsICdcdCBib2IgICcsICcgYm9iICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSBib2IoYmFyKScsICcgKGZvbykgYm9iKGJhciknLCAnIGJvYiAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXVsxXS5jb250ZW50LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzJdWzBdLmNvbnRlbnQsICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSAoYmFyKSBib2IoYmlyZCknLCAnIChmb28pIChiYXIpIGJvYihiaXJkKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMl0uY29tbWVudHMsIFsnYmlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fbm9uX3ByaW50YWJsZV9pbl9jb21tZW50KHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChceDBBKSBib2InLCAnIChceDBBKSBib2InLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ1x4MEEnXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vbl9wcmludGFibGVfaW5fYXRleHQoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGEpIGFceDBCJywgJyAoYSkgYVx4MEInLCAnIGFceDBCJywKKyAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnYSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21faGVhZGVyX2VuZHNfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoYSkgYm9iIChhJywgJyAoYSkgYm9iIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydhJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9ub19hdG9tKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYXRvbSgnIChhYikgJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vX2F0b21fYmVmb3JlX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hdG9tKCcgKGFiKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChmb28pIGJvYihiYXIpICBAYmFuZycsICcgKGZvbykgYm9iKGJhcikgICcsICcgYm9iICcsIFtdLCAnQGJhbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydiYXInXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9ub25jZndzKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnYm9iICBmcmVkJywgJ2JvYiAgJywgJ2JvYiAnLCBbXSwgJ2ZyZWQnKQorCisgICAgIyBnZXRfZG90X2F0b21fdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28uYmFyLmJhbmcnLCAnZm9vLmJhci5iYW5nJywgJ2Zvby5iYXIuYmFuZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbV90ZXh0LnRva2VuX3R5cGUsICdkb3QtYXRvbS10ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG90X2F0b21fdGV4dCksIDUpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9sb25lX2F0b21faXNfdmFsaWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28nLCAnZm9vJywgJ2ZvbycsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl9sZWFkaW5nX2RvdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQoJy5mb28uYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl90cmFpbGluZ19kb3Qoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdmb28uYmFyLicpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9yYWlzZXNfb25fbGVhZGluZ19ub25fYXRleHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCcgZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdAZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCciZm9vLmJhciInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfdGV4dF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfd3NfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vIC5iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIC5iYXInKQorCisgICAgIyBnZXRfZG90X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV9vbmx5KHNlbGYpOgorICAgICAgICBkb3RfYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdmb28uYmFyLmJpbmcnLCAnZm9vLmJhci5iaW5nJywgJ2Zvby5iYXIuYmluZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbS50b2tlbl90eXBlLCAnZG90LWF0b20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb3RfYXRvbSksIDEpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdcdCAgZm9vLmJhci5iaW5nICAnLCAnXHQgIGZvby5iYXIuYmluZyAgJywgJyBmb28uYmFyLmJpbmcgJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywKKyAgICAgICAgICAgICAgICAnIGZvby5iYXIuYmluZyAnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fc3BhY2VfZW5kc19kb3RfYXRvbShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIgLmJpbmcgKGhlcmUpICcsICcgKHNpbmcpICBmb28uYmFyICcsCisgICAgICAgICAgICAgICAgJyBmb28uYmFyICcsIFtdLCAnLmJpbmcgKGhlcmUpICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbm9fYXRvbV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnIChmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbGVhZGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSAuYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90d29fZG90c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnYmFyLi5iYW5nJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90cmFpbGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSBiYXIuYmFuZy4gZm9vJykKKworICAgICMgZ2V0X3dvcmQgKGlmIHRoaXMgd2VyZSBibGFjayBib3ggd2UnZCByZXBlYXQgYWxsIHRoZSBxcy9hdG9tIHRlc3RzKQorCisgICAgZGVmIHRlc3RfZ2V0X3dvcmRfYXRvbV95aWVsZHNfYXRvbShzZWxmKToKKyAgICAgICAgd29yZCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF93b3JkLAorICAgICAgICAgICAgJyAoZm9vKSBiYXIgKGJhbmcpIDphaCcsICcgKGZvbykgYmFyIChiYW5nKSAnLCAnIGJhciAnLCBbXSwgJzphaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAnYXRvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9xc195aWVsZHNfcXMoc2VsZik6CisgICAgICAgIHdvcmQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfd29yZCwKKyAgICAgICAgICAgICciYmFyICIgKGJhbmcpIGFoJywgJyJiYXIgIiAoYmFuZykgJywgJ2JhciAgJywgW10sICdhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnYmFyZS1xdW90ZWQtc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3b3JkWzBdLnZhbHVlLCAnYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC5jb250ZW50LCAnYmFyICcpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9lbmRzX2F0X2RvdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3dvcmQsCisgICAgICAgICAgICAnZm9vLicsICdmb28nLCAnZm9vJywgW10sICcuJykKKworICAgICMgZ2V0X3BocmFzZQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9zaW1wbGUoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUsIG9oLicsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUnLAorICAgICAgICAgICAgJ0ZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIG9oLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlLnRva2VuX3R5cGUsICdwaHJhc2UnKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9jb21wbGV4KHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJyAoQSkgYmlyZCAoaW4gKG15fHlvdXIpKSAiaGFuZCAgIiBpcyBtZXNzeVx0PD5cdCcsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQnLAorICAgICAgICAgICAgJyBiaXJkIGhhbmQgICBpcyBtZXNzeSAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnPD5cdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdWzBdLmNvbW1lbnRzLCBbJ0EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaHJhc2VbMF1bMl0uY29tbWVudHMsIFsnaW4gKG15fHlvdXIpJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfcGhyYXNlX29ic29sZXRlKHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEuIC5PIEpvaG5zb24nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaHJhc2UpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVszXS5jb21tZW50cywgWyd3ZWlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9waGFyc2VfbXVzdF9zdGFydF93aXRoX3dvcmQoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnIC5uYW1lJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0gKyBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdLmNvbW1lbnRzLCBbJ2V2ZW4gd2VpcmRlciddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgcGhyYXNlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3BocmFzZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4gJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnOmJvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzNdLmNvbW1lbnRzLCBbJ3dpdGggdHJhaWxpbmcgY29tbWVudCddKQorCisgICAgZGVmIGdldF9waHJhc2VfY2Z3c19vbmx5X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3BocmFzZSgnIChmb28pICcpCisKKyAgICAjIGdldF9sb2NhbF9wYXJ0CisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zaW1wbGUoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBweXRob24ub3JnJywgJ2RpbnNkYWxlJywgJ2RpbnNkYWxlJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZC5BLkpvaG5zb24nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3dpdGhfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgKGZvbykgRnJlZC5BLkpvaG5zb24gKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pIEZyZWQuQS5Kb2huc29uIChiYXIgKGJpcmQpKSAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVswXS5jb21tZW50cywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0WzBdWzJdLmNvbW1lbnRzLCBbJ2JhciAoYmlyZCknXSkKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9xdW90ZWQoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICciZGluc2RhbGUiQHB5dGhvbi5vcmcnLCAnImRpbnNkYWxlIicsICciZGluc2RhbGUiJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9xdW90ZWRfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIkZyZWQuQS5Kb2huc29uIkBweXRob24ub3JnJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICAnLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBKb2huc29uIiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQgQS4gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICAnLAorICAgICAgICAgICAgJyAiIEZyZWQgQS4gSm9obnNvbiAiICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnIEZyZWQgQS4gSm9obnNvbiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnRbMF1bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVsyXS5jb21tZW50cywgWydiYXIgKGJpcmQpJ10pCisKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLiBBLkpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV8xKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24uImFuZCAgZG9ncyAiQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uLiJhbmQgIGRvZ3MgIicsCisgICAgICAgICAgICAnIEZyZWQgLiBBLiBKb2huc29uLmFuZCAgZG9ncyAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uLmFuZCAgZG9ncyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyJAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyInLAorICAgICAgICAgICAgJyBGcmVkIC4gQS4gSm9obnNvbiBhbmQgIGRvZ3MnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbiBhbmQgIGRvZ3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbm9fcGFydF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NwZWNpYWxfaW5zdGVhZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgQHB5dGhvbi5vcmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdHJhaWxpbmdfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIGJvcnJpcy5AcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIGJvcnJpcy4nLAorICAgICAgICAgICAgJyBib3JyaXMuJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF90cmFpbGluZ19kb3Rfd2l0aF93cyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuIEBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLiAnLAorICAgICAgICAgICAgJyBib3JyaXMuICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2JvcnJpcy4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbGVhZGluZ19kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcuYm9ycmlzQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICcuYm9ycmlzJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2xlYWRpbmdfZG90X2FmdGVyX3dzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIC5ib3JyaXNAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIC5ib3JyaXMnLAorICAgICAgICAgICAgJyAuYm9ycmlzJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnLmJvcnJpcycpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9kb3VibGVfZG90X3JhaXNlcyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuKGZvbykubmF0YXNoYUBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLihmb28pLm5hdGFzaGEnLAorICAgICAgICAgICAgJyBib3JyaXMuIC5uYXRhc2hhJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLi5uYXRhc2hhJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSInLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdmFsaWRfYW5kX2ludmFsaWRfcXBfaW5fYXRvbV9saXN0KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICByJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIHInIlxcImV4YW1wbGVcXCIgZXhhbXBsZSInLAorICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSo1LAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCByJ1xleGFtcGxlXFwgZXhhbXBsZScpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF91bmljb2RlX2RlZmVjdChzZWxmKToKKyAgICAgICAgIyBDdXJyZW50bHkgdGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBwYXJzaW5nIHVuaWNvZGUsIG5vdCB3aGVuIHBhcnNpbmcKKyAgICAgICAgIyBzdHVmZiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJpbmFyeS4KKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ2V4w6FtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleMOhbXBsZScsCisgICAgICAgICAgICAnZXjDoW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdF0sCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleMOhbXBsZScpCisKKyAgICAjIGdldF9kdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICdmb29iYXInLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQudG9rZW5fdHlwZSwgJ3B0ZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF9hbGxfZHRleHQoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LCBzZWxmLnJmY19kdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2R0ZXh0X2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfZHRleHRfY2hhcnMsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gXHRcdGJhcicsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGJhcl0nLCAnZm9vXHgwMGJhcicsICdmb29ceDAwYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dpdGhfcXAoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29cXVxbXFxiYXJcYlxlXGxcbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2Zvb11bXGJhcmJlbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29dW1xiYXJiZWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fY2xvc2VfYnJhY2tldF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXScsICdmb28nLCAnZm9vJywgW10sICddJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF93c3BfYmVmb3JlX2Nsb3NlX2JyYWNrZXRfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vICBdJywgJ2ZvbycsICdmb28nLCBbXSwgJyAgXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfY2xvc2VfYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb11iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnXWJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fb3Blbl9icmFja2V0X29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29bJywgJ2ZvbycsICdmb28nLCBbXSwgJ1snKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dzcF9iZWZvcmVfb3Blbl9icmFja2V0X3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgWycsICdmb28nLCAnZm9vJywgW10sICcgIFsnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29wZW5fYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1tiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnW2JhcicpCisKKyAgICAjIGdldF9kb21haW5fbGl0ZXJhbAorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX29ubHkoc2VsZik6CisgICAgICAgIGRvbWFpbl9saXRlcmFsID0gZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC50b2tlbl90eXBlLCAnZG9tYWluLWxpdGVyYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbICAxMjcuMC4wLjFcdCBdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sgIDEyNy4wLjAuMVx0IF0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyAxMjcuMC4wLjEgXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuaXAsICcxMjcuMC4wLjEnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX3dpdGhfc3Vycm91bmRpbmdfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsgIDEyNy4wLjAuMV0gKGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbICAxMjcuMC4wLjFdIChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbIDEyNy4wLjAuMV0gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfbm9fc3RhcnRfY2hhcl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9ub19zdGFydF9jaGFyX2JlZm9yZV9zcGVjaWFsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsKCcoZm9vKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9iYWRfZHRleHRfY2hhcl9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgW2FiY1tAJykKKworICAgICMgZ2V0X2RvbWFpbgorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9yZWd1bGFyX2RvbWFpbl9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9kb21haW5fbGl0ZXJhbF9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGRvbWFpbiA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl9saXRlcmFsX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl93aXRoX2Nmd3NfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKWV4YW1wbGUuY29tXHQoYmFyKSwgbmV4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pZXhhbXBsZS5jb21cdChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUuY29tICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fZG9tYWluX2xpdGVyYWxfd2l0aF9jZndzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciksIG5leHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlIC4gKGJpcmQpY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUgLiAoYmlyZCljb20oYmFyKVx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUgLiBjb20gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9ub19ub25fY2Z3c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW4oIiAgKGZvbylcdCIpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX25vX2F0b21fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluKCIgIChmb28pXHQsIGJyb2tlbiIpCisKKworICAgICMgZ2V0X2FkZHJfc3BlYworCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19ub3JtYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy50b2tlbl90eXBlLCAnYWRkci1zcGVjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfZG9hbWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmFkZHJfc3BlYywgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyX3NwZWNfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcgZGluc2RhbGVAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfcW91b3RlZF9zdHJpbmdfYW5kX2Nmd3Moc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyAicm95IGEgYnVnIkBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAncm95IGEgYnVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICcicm95IGEgYnVnIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcl9zcGVjID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAnKGZvbykgInJveSBhIGJ1ZyIoYmFyKUAgKGJpcmQpIGV4YW1wbGUuY29tIChib2cpICwgbmV4dCcsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKSAnLAorICAgICAgICAgICAgICAgICcgInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3JveSBhIGJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZXhhbXBsZSBleGFtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2RvdF9hdG9tKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgJ3N0YXIuYS5zdGFyQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnc3Rhci5hLnN0YXJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3N0YXIuYS5zdGFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScpCisKKyAgICAjIGdldF9vYnNfcm91dGUKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfc2ltcGxlKHNlbGYpOgorICAgICAgICBvYnNfcm91dGUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfb2JzX3JvdXRlLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUudG9rZW5fdHlwZSwgJ29icy1yb3V0ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzX3JvdXRlLmRvbWFpbnMsIFsnZXhhbXBsZS5jb20nLCAndHdvLmV4YW1wbGUuY29tJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX2NvbXBsZXgoc2VsZik6CisgICAgICAgIG9ic19yb3V0ZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9vYnNfcm91dGUsCisgICAgICAgICAgICAnKGZvbyksLCAoYmx1ZSlAZXhhbXBsZS5jb20gKGJhciksQHR3by4oZm9vKSBleGFtcGxlLmNvbSAoYmlyZCk6JywKKyAgICAgICAgICAgICcoZm9vKSwsIChibHVlKUBleGFtcGxlLmNvbSAoYmFyKSxAdHdvLihmb28pIGV4YW1wbGUuY29tIChiaXJkKTonLAorICAgICAgICAgICAgJyAsLCBAZXhhbXBsZS5jb20gLEB0d28uIGV4YW1wbGUuY29tIDonLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICAjIFRoaXMgaXMgdGhlIG9icy1kb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic19yb3V0ZS50b2tlbl90eXBlLCAnb2JzLXJvdXRlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUuZG9tYWlucywgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfbm9fcm91dGVfYmVmb3JlX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSwnKQorCisgICAgZGVmIHRlc3RfZ2V0X29ic19yb3V0ZV9ub19yb3V0ZV9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIFthYmNdLCcpCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX25vX3JvdXRlX2JlZm9yZV9zcGVjaWFsX3JhaXNlczIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSBbYWJjXSwnKQorCisgICAgIyBnZXRfYW5nbGVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfc2ltcGxlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIudG9rZW5fdHlwZSwgJ2FuZ2xlLWFkZHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VtcHR5KHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci50b2tlbl90eXBlLCAnYW5nbGUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIubG9jYWxfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLnRva2VuX3R5cGUsICdhbmdsZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9xc19hbmRfZG9tYWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnRnJlZCBQZXJmZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJyJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2ludGVybmFsX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8KGZvbykgZGluc2RhbGVAZXhhbXBsZS5jb20oYmFyKT4nLAorICAgICAgICAgICAgJzwoZm9vKSBkaW5zZGFsZUBleGFtcGxlLmNvbShiYXIpPicsCisgICAgICAgICAgICAnPCBkaW5zZGFsZUBleGFtcGxlLmNvbSA+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfb2JzX3JvdXRlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnIDxAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5yb3V0ZSwgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX21pc3NpbmdfY2xvc2luZ19hbmdsZShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbWlzc2luZ19jbG9zaW5nX2FuZ2xlX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbSAoZm9vKScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tIChmb28pPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tID4nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyksIG5leHQnLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyknLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfcmFpc2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hbmdsZV9hZGRyKCcoZm9vKSAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYW5nbGVfYWRkcignKGZvbykgLCBuZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX25vX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9zcGVjaWFsX2FmdGVyX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJyhmb28pIDwsIGJhcicpCisKKyAgICAjIGdldF9kaXNwbGF5X25hbWUgIFRoaXMgaXMgcGhyYXNlIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHZhbHVlLgorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9zaW1wbGUoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnRnJlZCBBIEpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQgQSBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEgSm9obnNvbicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBIEpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9jb21wbGV4MShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZSwgb2guJywKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZSInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBvaC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBLiBKb2huc29uIGlzIGhpcyBuYW1lJykKKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfY29tcGxleDIoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQ8Plx0JywKKyAgICAgICAgICAgICcgKEEpIGJpcmQgKGluIChteXx5b3VyKSkgImhhbmQgICIgaXMgbWVzc3lcdCcsCisgICAgICAgICAgICAnICJiaXJkIGhhbmQgICBpcyBtZXNzeSIgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJzw+XHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXVswXS5jb21tZW50cywgWydBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzBdWzJdLmNvbW1lbnRzLCBbJ2luIChteXx5b3VyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS5kaXNwbGF5X25hbWUsICdiaXJkIGhhbmQgICBpcyBtZXNzeScpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkaXNwbGF5X25hbWUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICciRnJlZCBBLiAuTyBKb2huc29uIicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpc3BsYXlfbmFtZSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzNdLmNvbW1lbnRzLCBbJ3dlaXJkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ0ZyZWQgQS4gLk8gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX3BoYXJzZV9tdXN0X3N0YXJ0X3dpdGhfd29yZChzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcgIi5uYW1lIicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdICsgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXNwbGF5X25hbWUpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXS5jb21tZW50cywgWydldmVuIHdlaXJkZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnLm5hbWUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnInNpbXBsZSBwaHJhc2UuIiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICc6Ym9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlzcGxheV9uYW1lKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWVbM10uY29tbWVudHMsIFsnd2l0aCB0cmFpbGluZyBjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ3NpbXBsZSBwaHJhc2UuJykKKworICAgICMgZ2V0X25hbWVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl9hbmdsZV9hZGRyX29ubHkoc2VsZik6CisgICAgICAgIG5hbWVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9uYW1lX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci50b2tlbl90eXBlLCAnbmFtZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIudG9rZW5fdHlwZSwgJ25hbWUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ0RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICcoZm9vKSBEaW5zZGFsZSAoYmFyKSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+IChiaXJkKScsCisgICAgICAgICAgICAnKGZvbykgRGluc2RhbGUgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyBEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+ICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdEaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25hbWVfd2l0aF9jZndzX2FuZF9kb3RzKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyAiUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdSb3kuQS5CZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfcXNfbmFtZShzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ1JveS5BLkJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl93aXRoX3JvdXRlKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8QHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxAdHdvLmV4YW1wbGUuY29tOiBkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIucm91dGUsIFsndHdvLmV4YW1wbGUuY29tJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCBuZXh0JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25vX2NvbnRlbnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbmFtZV9hZGRyKCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fY29udGVudF9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9uYW1lX2FkZHIoJyAoZm9vKSAsJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fYW5nbGVfYWZ0ZXJfZGlzcGxheV9uYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X25hbWVfYWRkcignZm9vIGJhcicpCisKKyAgICAjIGdldF9tYWlsYm94CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9hZGRyX3NwZWNfb25seShzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfYW5nbGVfYWRkcl9vbmx5KHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9uYW1lX2FkZHIoc2VsZik6CisgICAgICAgIG1haWxib3ggPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveCwKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kaXNwbGF5X25hbWUsICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCByZXN0JywKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIHJlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZGlzcGxheV9uYW1lLCAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nKQorCisgICAgIyBnZXRfbWFpbGJveF9saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3NpbmdsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Lm1haWxib3hlc1swXQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfdHdvX3NpbXBsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbSwgZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20sIGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF90d29fbmFtZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3R3b19jb21wbGV4KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCcoZm9vKSAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4oYmFyKSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnKGZvbykgIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+KGJhciksJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuKGJpcmQpZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LiBleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF91bnBhcnNlYWJsZV9tYWlsYm94X251bGwoc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciJbXSBkaW5zZGFsZUBleGFtcGxlLmNvbSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIltdIGRpbnNkYWxlQGV4YW1wbGUuY29tLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LihiaXJkKWV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiW10gZGluc2RhbGVAZXhhbXBsZS5jb20sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuIGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlICdleHRyYScgdGV4dCBhZnRlciB0aGUgbG9jYWwgcGFydAorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlIGxvY2FsIHBhcnQgd2l0aCBubyBhbmdsZS1hZGRyCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAgIyBwZXJpb2QgaW4gZXh0cmEgdGV4dCAoZXhhbXBsZS5jb20pCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyAoYmlyZCkgaW4gdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJyJSb3kgQS4gQmVhciInKQorICAgICAgICBzZWxmLmFzc2VydElzKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0Lm1haWxib3hlc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9qdW5rX2FmdGVyX3ZhbGlkX2FkZHJlc3Moc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPkBALCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT5AQCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+QEAsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfZW1wdHlfbGlzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sIChiaXJkKSwsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgKGJpcmQpLCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAsLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9vbmx5X2VtcHR5X2VsZW1lbnRzKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorCisgICAgIyBnZXRfZ3JvdXBfbGlzdAorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2xpc3RfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGhpZGRlbik7JywKKyAgICAgICAgICAgICcoaGlkZGVuKScsCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICc7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X21haWxib3hfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUub3JnLCAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5vcmc+JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLm9yZywgIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUub3JnPicsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5vcmcsICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLm9yZz4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbGlzdF9vYnNfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJywgKGZvbyksLChiYXIpJywKKyAgICAgICAgICAgICcsIChmb28pLCwoYmFyKScsCisgICAgICAgICAgICAnLCAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X2NvbW1lbnRfb25seV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGJhciknLAorICAgICAgICAgICAgJyhiYXIpJywKKyAgICAgICAgICAgICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgICMgZ2V0X2dyb3VwCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfZW1wdHkoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbnVsbF9hZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ2ZvbzogPD47JywKKyAgICAgICAgICAgICdmb286IDw+OycsCisgICAgICAgICAgICAnZm9vOiA8PjsnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLmFsbF9tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmFsbF9tYWlsYm94ZXNbMF0udmFsdWUsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IChoaWRkZW4pOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAoaGlkZGVuKTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9zaW5nbGVfbWFpbGJveChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbWl4ZWRfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIDxwaW5nQGV4YW1wZWxlLmNvbT4sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgICgnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnKGZvbykgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdSb2dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzJdLmxvY2FsX3BhcnQsICd4JykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9vbmVfaW52YWxpZChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyBSb2dlciBwaW5nQGV4YW1wZWxlLmNvbSwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgbm9uLWFuZ2xlIGFkZHIgbWFrZXMgbG9jYWwgcGFydCBpbnZhbGlkCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAgICMgYW5kIGl0cyBub3Qgb2JzLWxvY2FsIGVpdGhlcjogbm8gZG90cy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAuYWxsX21haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0ubG9jYWxfcGFydCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShncm91cC5hbGxfbWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSkKKworICAgICMgZ2V0X2FkZHJlc3MKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX3NpbXBsZShzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfY29tcGxleChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBCZWFyIiA8IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MudG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19ncm91cChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAneCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyJmb28gYmFyIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnImZvbyBiYXIiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciZm9vIGJhciJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBuZXh0JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2ludmFsaWRfbWFpbGJveF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbSwgbmV4dCcsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgYWRkci1zcGVjIHdpdGggbm8gZG9tYWluCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgaW52YWxpZCBsb2NhbC1wYXJ0CisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgbWlzc2luZyAucyBpbiBsb2NhbC1wYXJ0CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5hbGxfbWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmRvbWFpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLmFsbF9tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ3BpbmcgZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NbMF0udG9rZW5fdHlwZSwgJ2ludmFsaWQtbWFpbGJveCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJykKKworCisgICAgIyBnZXRfYWRkcmVzc19saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0WzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzc19saXN0WzBdLmRpc3BsYXlfbmFtZSkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX3R3b19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZm9vQGV4YW1wbGUuY29tLCAiRnJlZCBBLiBCYXIiIDxiYXJAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20sICJGcmVkIEEuIEJhciIgPGJhckBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbSwgIkZyZWQgQS4gQmFyIiA8YmFyQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwgIkZyZWQgQS4gQmFyIikKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX2NvbXBsZXgoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICcocGluZykgRm9vIDx4QGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCA8eUAoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPHlAKGJpcmQpZXhhbXBsZS4oYmFkKWNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJ0ZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICciTm9ib2R5IElzLiBTcGVjaWFsIiA8eUBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAjIHBlcmlvZCBpbiBJcy4KKyAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICMgY2Z3cyBpbiBkb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1sxXS5sb2NhbF9wYXJ0LCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1syXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19pbnZhbGlkX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyhwaW5nKSBGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnTm9ib2R5IElzLiBTcGVjaWFsIDwoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyB4QGV4YW1wbGUuY29tW10sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPChiaXJkKWV4YW1wbGUuKGJhZCljb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnIk5vYm9keSBJcy4gU3BlY2lhbCIgPCBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgaW52YWxpZCBhZGRyZXNzIGluIGxpc3QKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyAnRm9vIHgnIGxvY2FsIHBhcnQgaW52YWxpZC4KKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBNaXNzaW5nIC4gaW4gJ0ZvbyB4JyBsb2NhbCBwYXJ0CisgICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCwgICMgcGVyaW9kIGluICdJcy4nIGRpc3AtbmFtZSBwaHJhc2UKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBubyBkb21haW4gcGFydCBpbiBhZGRyLXNwZWMKKyAgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyBhZGRyLXNwZWMgaGFzIGNvbW1lbnQgaW4gaXQKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0udG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0ubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdGb28geCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICJOb2JvZHkgSXMuIFNwZWNpYWwiKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9ncm91cF9lbXB0eShzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IDsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiA7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LnRva2VuX3R5cGUsICdhZGRyZXNzLWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfZ3JvdXBfc2ltcGxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiBkaW5zZGFsZUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X2dyb3VwX2FuZF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3NlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzBdLmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzFdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsaW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzFdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMl0pKQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RfcGFyc2VfbWltZV92ZXJzaW9uKFRlc3RQYXJzZXJNaXhpbiwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgbWltZV92ZXJzaW9uX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMpOgorICAgICAgICBtaW1lX3ZlcnNpb24gPSBzZWxmLl90ZXN0X3BhcnNlX3gocGFyc2VyLnBhcnNlX21pbWVfdmVyc2lvbiwKKyAgICAgICAgICAgIHZhbHVlLCB0bF9zdHIsIHRsX3ZhbHVlLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbWVfdmVyc2lvbi5tYWpvciwgbWFqb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWltZV92ZXJzaW9uLm1pbm9yLCBtaW5vcikKKworICAgIG1pbWVfdmVyc2lvbl9wYXJhbXMgPSB7CisKKyAgICAgICAgJ3JmY18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyAxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzQnOiAoCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuIDAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2VtcHR5JzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSksCisKKyAgICAgICAgfQorCisKKworY2xhc3MgVGVzdEZvbGRpbmcoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIF90ZXN0KHNlbGYsIHRsLCBmb2xkZWQsIHBvbGljeT1wb2xpY3kpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmZvbGQocG9saWN5PXBvbGljeSksIGZvbGRlZCwgdGwucHBzdHIoKSkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV91bnN0cnVjdHVyZWRfbm9fZm9sZHMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYSB0ZXN0IiksCisgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSB0ZXN0XG4iKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Vuc3RydWN0dXJlZF9mb2xkZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYWxzbyBhIHRlc3QsIGJ1dCB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIHRoZXJlIGFyZSBlbm91Z2ggd29yZHMgKGFuZCBldmVuIHNvbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgInN5bWJvbHMpIHRvIG1ha2UgaXQgd3JhcDsgYXQgbGVhc3QgaW4gdGhlb3J5LiIpLAorICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGFsc28gYSB0ZXN0LCBidXQgdGhpcyB0aW1lIHRoZXJlIGFyZSBlbm91Z2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgIndvcmRzIChhbmQgZXZlbiBzb21lXG4iCisgICAgICAgICAgICAgICAgICAgIiBzeW1ib2xzKSB0byBtYWtlIGl0IHdyYXA7IGF0IGxlYXN0IGluIHRoZW9yeS5cbiIpCisKKyAgICBkZWYgdGVzdF91bnN0cnVjdHVyZWRfd2l0aF91bmljb2RlX25vX2ZvbGRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJow7xic2NoIGtsZWluZXIgYmVpw590IiksCisgICAgICAgICAgICAgICAgICAgIj0/dXRmLTg/cT9oPUMzPUJDYnNjaF9rbGVpbmVyX2JlaT1DMz05RnQ/PVxuIikKKworICAgIGRlZiB0ZXN0X29uZV9ld19vbl9lYWNoX29mX3R3b193cmFwcGVkX2xpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJNZWluIGtsZWluZXIgS2FrdHVzIGlzdCBzZWhyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaMO8YnNjaC4gIEVzIGhhdCB2aWVsZSBTdGFjaGVsbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZCBvZnQgYmVpw590IG1pY2guIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4ga2xlaW5lciBLYWt0dXMgaXN0IHNlaHIgPT91dGYtOD9xP2g9QzM9QkNic2NoPTJFPz0gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJFcyBoYXQgdmllbGUgU3RhY2hlbG5cbiIKKyAgICAgICAgICAgICAgICAgICAiIHVuZCBvZnQgPT91dGYtOD9xP2JlaT1DMz05RnQ/PSBtaWNoLlxuIikKKworICAgIGRlZiB0ZXN0X2V3c19jb21iaW5lZF9iZWZvcmVfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgiTWVpbiBLYWt0dXMgaXN0IGjDvGJzY2guICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzIGJlacOfdCBtaWNoLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbmQgdGhhdCdzIGFsbCBJJ20gc2F5aW4uIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4gS2FrdHVzIGlzdCA9P3V0Zi04P3E/aD1DMz1CQ2JzY2g9MkVfX0VzX2JlaT1DMz05RnQ/PSAiCisgICAgICAgICAgICAgICAgICAgICAgICAibWljaC4gIEFuZCB0aGF0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAiIGFsbCBJJ20gc2F5aW4uXG4iKQorCisgICAgIyBYWFggTmVlZCB0ZXN0IG9mIGFuIGVuY29kZWQgd29yZCBzbyBsb25nIHRoYXQgaXQgbmVlZHMgdG8gYmUgd3JhcHBlZAorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoImFiYyA8eHl6QGV4YW1wbGUuY29tPiIpWzBdLAorICAgICAgICAgICAgICAgICAgICJhYmMgPHh5ekBleGFtcGxlLmNvbT5cbiIpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2xpc3RfZm9sZGluZ19hdF9jb21tYXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJKLlAuQ29vbCIgPGhvdEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJLPD55IiA8a2V5QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlyZXNhbGUgPGNoZWFwQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGVuZEBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICAgICAgICAgJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgICAgICcgIkouUC5Db29sIiA8aG90QGV4YW1wbGUuY29tPiwgIks8PnkiIDxrZXlAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAnIEZpcmVzYWxlIDxjaGVhcEBleGFtcGxlLmNvbT4sIDxlbmRAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19saXN0X3dpdGhfdW5pY29kZV9uYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCgKKyAgICAgICAgICAgICdIw7xic2NoIEtha3R1cyA8YmVhdXRpZnVsQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdiZWnDn3QgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfbGlzdF93aXRoX3VuaWNvZGVfbmFtZXNfaW5fcXVvdGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfYWRkcmVzc19saXN0KAorICAgICAgICAgICAgJyJIw7xic2NoIEtha3R1cyIgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnImJlacOfdCIgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgICMgWFhYIE5lZWQgdGVzdHMgd2l0aCBjb21tZW50cyBvbiB2YXJpb3VzIHNpZGVzIG9mIGEgdW5pY29kZSB0b2tlbiwKKyAgICAjIGFuZCB3aXRoIHVuaWNvZGUgdG9rZW5zIGluIHRoZSBjb21tZW50cy4gIFNwYWNlcyBpbnNpZGUgdGhlIHF1b3RlcworICAgICMgY3VycmVudGx5IGRvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKworICAgIGRlZiB0ZXN0X2luaXRpYWxfd2hpdGVzcGFjZV9zcGxpdHRpbmcoc2VsZik6CisgICAgICAgIGJvZHkgPSBwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgnICAgJyArICd4Jyo3NykKKyAgICAgICAgaGVhZGVyID0gcGFyc2VyLkhlYWRlcihbCisgICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoW3BhcnNlci5WYWx1ZVRlcm1pbmFsKCd0ZXN0OicsICdhdGV4dCcpXSksCisgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSwgYm9keV0pCisgICAgICAgIHNlbGYuX3Rlc3QoaGVhZGVyLCAndGVzdDogICBcbiAnICsgJ3gnKjc3ICsgJ1xuJykKKworICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfc3BsaXR0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCd4eHggICAnICsgJ3knKjc3KSwKKyAgICAgICAgICAgICAgICAgICAneHh4ICBcbiAnICsgJ3knKjc3ICsgJ1xuJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBjYTg1ZjU3Li4wODkyNjlmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCitmcm9tIHRlc3QudGVzdF9lbWFpbC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpAQCAtNDEsNyArNDEsNyBAQAogSGVsbG8gV29ybGQhID0/aXNvLTIwMjItanA/Yj9HeVJDSlU4bGJTRThKVzhoUENWckpVa2hLaHNvUWc9PT89CiAgPT9pc28tODg1OS0xP3E/R3I9RkM9REZfR290dCE/PSIiIikKICAgICAgICAgZXEoZGVjb2RlX2hlYWRlcihoLmVuY29kZSgpKSwKLSAgICAgICAgICAgWyhiJ0hlbGxvIFdvcmxkIScsIE5vbmUpLAorICAgICAgICAgICBbKGInSGVsbG8gV29ybGQhICcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHgxYiRCJU8lbSE8JW8hPCVrJUkhKlx4MWIoQicsICdpc28tMjAyMi1qcCcpLAogICAgICAgICAgICAgKGInR3JceGZjXHhkZiBHb3R0IScsIGdjb2RlKV0pCiAgICAgICAgIHN1YmplY3RfYnl0ZXMgPSAoYid0ZXN0LWphIFx4YTRceGQ4XHhjNVx4ZWFceGI5XHhjNlx4YTRceGI1JwpAQCAtNzgsMTYgKzc4LDUgQEAKIAogCiAMCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoVGVzdEVtYWlsQXNpYW5Db2RlY3MpKQotICAgIHJldHVybiBzdWl0ZQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEVtYWlsQXNpYW5Db2RlY3MpCi0KLQotDAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdzdWl0ZScpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZGVmZWN0X2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDU0MzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpAQCAtMCwwICsxLDMyMCBAQAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjb250ZXh0bGliCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0RGVmZWN0c0Jhc2U6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorICAgIHJhaXNlX2V4cGVjdGVkID0gRmFsc2UKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB5aWVsZAorCisgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IFhYCisgICAgICAgICAgICBGcm9tOiB4eEB4eC5kaworICAgICAgICAgICAgVG86IFhYCisgICAgICAgICAgICBNaW1lLXZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICAgICBib3VuZGFyeT0iTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydCIKKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0CisgICAgICAgICAgICBDb250ZW50LXR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKyAgICAgICAgICAgICAgIGJvdW5kYXJ5PSJNU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0IgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iSVNPLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgdGV4dAorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJJU08tODg1OS0xIgorICAgICAgICAgICAgQ29udGVudC10cmFuc2Zlci1lbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQorCisgICAgICAgICAgICA8SFRNTD48L0hUTUw+CisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydC0tCisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBpbWFnZS9naWY7IG5hbWU9Inh4LmdpZiI7CisgICAgICAgICAgICBDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50CisgICAgICAgICAgICBDb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgU29tZSByZW1vdmVkIGJhc2U2NCBlbmNvZGVkIGNoYXJzLgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQtLQorCisgICAgICAgICAgICAiIiIpCisgICAgICAgICMgWFhYIGJldHRlciB3b3VsZCBiZSB0byBhY3R1YWxseSBkZXRlY3QgdGhlIGR1cGxpY2F0ZS4KKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgaW5uZXIgPSBtc2cuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoaW5uZXIsICdkZWZlY3RzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMoaW5uZXIpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhpbm5lcilbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRGF0ZTogRnJpLCA2IEFwciAyMDAxIDA5OjIzOjA2IC0wODAwIChHTVQtMDgwMCkKKyAgICAgICAgICAgIEZyb206IGZvb2JhcgorICAgICAgICAgICAgU3ViamVjdDogYnJva2VuIG1haWwKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZXBvcnQ7IHJlcG9ydC10eXBlPWRlbGl2ZXJ5LXN0YXR1czsKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKworICAgICAgICAgICAgT25lIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKworICAgICAgICAgICAgSGVhZGVyOiBBbm90aGVyIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20tLQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzb3VyY2UpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKKworICAgIG11bHRpcGFydF9tc2cgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBXZWQsIDE0IE5vdiAyMDA3IDEyOjU2OjIzIEdNVAorICAgICAgICBGcm9tOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgVG86IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBTdWJqZWN0OiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQgYW5kIG11bHRpcGFydAorICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsKKyAgICAgICAgICAgIGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0ie30KKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICBUZXN0IG1lc3NhZ2UKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICBZV0pqCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0tLQorICAgICAgICAiIiIpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfaW52YWxpZF9jdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoCisgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgZm9yIGN0ZSBpbiAoJzdiaXQnLCAnOGJpdCcsICdCSU5hcnknKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiK2N0ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAwLCAiY3RlPSIrY3RlKQorCisgICAgZGVmIHRlc3RfbHlpbmdfbXVsdGlwYXJ0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogIkFsbGlzb24gRHVubGFwIiA8eHh4QGV4YW1wbGUuY29tPgorICAgICAgICAgICAgVG86IHl5eUBleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogNjQ0MjMKKyAgICAgICAgICAgIERhdGU6IFN1biwgMTEgSnVsIDIwMDQgMTY6MDk6MjcgLTAzMDAKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKworICAgICAgICAgICAgQmxhaCBibGFoIGJsYWgKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobXNnLCAnZGVmZWN0cycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19zdGFydF9ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQUFBIgorICAgICAgICAgICAgRnJvbTogTWFpbCBEZWxpdmVyeSBTdWJzeXN0ZW0gPHh4eEBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgIFRvOiB5eXlAZXhhbXBsZS5jb20KKworICAgICAgICAgICAgLS1BQUEKKworICAgICAgICAgICAgU3R1ZmYKKworICAgICAgICAgICAgLS1BQUEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9yZmM4MjIKKworICAgICAgICAgICAgRnJvbTogd2VibWFzdGVyQHB5dGhvbi5vcmcKKyAgICAgICAgICAgIFRvOiB6enpAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQkJCIgorCisgICAgICAgICAgICAtLUJCQi0tCisKKyAgICAgICAgICAgIC0tQUFBLS0KKworICAgICAgICAgICAgIiIiKQorICAgICAgICAjIFRoZSBtZXNzYWdlIHN0cnVjdHVyZSBpczoKKyAgICAgICAgIworICAgICAgICAjIG11bHRpcGFydC9taXhlZAorICAgICAgICAjICAgIHRleHQvcGxhaW4KKyAgICAgICAgIyAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAjICAgICAgICBtdWx0aXBhcnQvbWl4ZWQgWypdCisgICAgICAgICMKKyAgICAgICAgIyBbKl0gVGhpcyBtZXNzYWdlIGlzIG1pc3NpbmcgaXRzIHN0YXJ0IGJvdW5kYXJ5CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBvdXRlciA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgYmFkID0gb3V0ZXIuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhiYWQpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhiYWQpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X2ZpcnN0X2xpbmVfaXNfY29udGludWF0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnIExpbmUgMVxuU3ViamVjdDogdGVzdFxuXG5ib2R5JykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLmxpbmUsICcgTGluZSAxXG4nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19oZWFkZXJfYm9keV9zZXBhcmF0b3Ioc2VsZik6CisgICAgICAgICMgT3VyIGhldXJpc3RpYyBpZiB3ZSBzZWUgYSBsaW5lIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBoZWFkZXIgKG5vCisgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGJ1dCBubyAnOicpIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBibGFuayBsaW5lIHRoYXQKKyAgICAgICAgIyBzZXBhcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGlzIG1pc3NpbmcsIGFuZCB0byBzdG9wIHBhcnNpbmcKKyAgICAgICAgIyBoZWFkZXJzIGFuZCBzdGFydCBwYXJzaW5nIHRoZSBib2R5LgorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiB0ZXN0XG5ub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JhZF9wYWRkaW5nX2luX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgZG1rCisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgICAgICBkbVx4MDFrPT09CisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZW5kaW5nX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IDFAaGFycnlkb21haW40LmNvbQorICAgICAgICAgICAgU3ViamVjdDogRndkOiAxCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisgICAgICAgICAgICAgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLTAwMDEwMTAyMDIwMTA4MDkwMDA0MDMwMSIKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKyAgICAgICAgICAgIEFsdGVybmF0aXZlIDEKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKKworICAgICAgICAgICAgQWx0ZXJuYXRpdmUgMgorCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5nZXRfcGF5bG9hZCgpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoKSwgJ0FsdGVybmF0aXZlIDJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3RdKQorCisKK2NsYXNzIFRlc3REZWZlY3REZXRlY3Rpb24oVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gb2JqLmRlZmVjdHMKKworCitjbGFzcyBUZXN0RGVmZWN0Q2FwdHVyZShUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgY2xhc3MgQ2FwdHVyZVBvbGljeShwb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBjYXB0dXJlZCA9IE5vbmUKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmNhcHR1cmVkLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucG9saWN5ID0gc2VsZi5DYXB0dXJlUG9saWN5KGNhcHR1cmVkPWxpc3QoKSkKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuY2FwdHVyZWQKKworCitjbGFzcyBUZXN0RGVmZWN0UmFpc2luZyhUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gVGVzdERlZmVjdHNCYXNlLnBvbGljeQorICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgICByYWlzZV9leHBlY3RlZCA9IFRydWUKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGRlZmVjdCk6CisgICAgICAgICAgICB5aWVsZAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCAzNTJiOWIxLi4zNmMzNDRmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiAKIGltcG9ydCBlbWFpbAoraW1wb3J0IGVtYWlsLnBvbGljeQogCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIsIG1ha2VfaGVhZGVyCkBAIC0zNiw0MCArMzcsMTQgQEAKIGZyb20gZW1haWwgaW1wb3J0IGJhc2U2NG1pbWUKIGZyb20gZW1haWwgaW1wb3J0IHF1b3ByaW1pbWUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIHVubGluawotZnJvbSBlbWFpbC50ZXN0IGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyawotCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxpbmsKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBvcGVuZmlsZSwgVGVzdEVtYWlsQmFzZQogCiBOTCA9ICdcbicKIEVNUFRZU1RSSU5HID0gJycKIFNQQUNFID0gJyAnCiAKIAotCi1kZWYgb3BlbmZpbGUoZmlsZW5hbWUsICphcmdzLCAqKmt3cyk6Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsIGZpbGVuYW1lKQotICAgIHJldHVybiBvcGVuKHBhdGgsICphcmdzLCAqKmt3cykKLQotCi0KLSMgQmFzZSB0ZXN0IGNsYXNzCi1jbGFzcyBUZXN0RW1haWxCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbmRpZmZBc3NlcnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kKToKLSAgICAgICAgIiIiTGlrZSBhc3NlcnRFcXVhbCBleGNlcHQgdXNlIG5kaWZmIGZvciByZWFkYWJsZSBvdXRwdXQuIiIiCi0gICAgICAgIGlmIGZpcnN0ICE9IHNlY29uZDoKLSAgICAgICAgICAgIHNmaXJzdCA9IHN0cihmaXJzdCkKLSAgICAgICAgICAgIHNzZWNvbmQgPSBzdHIoc2Vjb25kKQotICAgICAgICAgICAgcmZpcnN0ID0gW3JlcHIobGluZSkgZm9yIGxpbmUgaW4gc2ZpcnN0LnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIHJzZWNvbmQgPSBbcmVwcihsaW5lKSBmb3IgbGluZSBpbiBzc2Vjb25kLnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLm5kaWZmKHJmaXJzdCwgcnNlY29uZCkKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihOTCArIE5MLmpvaW4oZGlmZikpCi0KLSAgICBkZWYgX21zZ29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKLSAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKLQotCi0KICMgVGVzdCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIE1lc3NhZ2UgY2xhc3MncyBBUEkKIGNsYXNzIFRlc3RNZXNzYWdlQVBJKFRlc3RFbWFpbEJhc2UpOgogICAgIGRlZiB0ZXN0X2dldF9hbGwoc2VsZik6CkBAIC0xOTQsNyArMTY5LDcgQEAKICAgICBkZWYgdGVzdF9tZXNzYWdlX3JmYzgyMl9vbmx5KHNlbGYpOgogICAgICAgICAjIElzc3VlIDc5NzA6IG1lc3NhZ2UvcmZjODIyIG5vdCBpbiBtdWx0aXBhcnQgcGFyc2VkIGJ5CiAgICAgICAgICMgSGVhZGVyUGFyc2VyIGNhdXNlZCBhbiBleGNlcHRpb24gd2hlbiBmbGF0dGVuZWQuCi0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoJ21zZ180Ni50eHQnKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnKSBhcyBmcDoKICAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgcGFyc2VyID0gSGVhZGVyUGFyc2VyKCkKICAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlc3RyKG1zZ2RhdGEpCkBAIC0yMDMsNiArMTc4LDE3IEBACiAgICAgICAgIGdlbi5mbGF0dGVuKG1zZywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCksIG1zZ2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ieXRlX21lc3NhZ2VfcmZjODIyX29ubHkoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIG5ldyBieXRlcyBoZWFkZXIgcGFyc2VyIGFsc28gcGFzc2VzIHRoaXMuCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgcGFyc2VyID0gZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyKCkKKyAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlYnl0ZXMobXNnZGF0YSkKKyAgICAgICAgb3V0ID0gQnl0ZXNJTygpCisgICAgICAgIGdlbiA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihvdXQpCisgICAgICAgIGdlbi5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuZ2V0dmFsdWUoKSwgbXNnZGF0YSkKKwogICAgIGRlZiB0ZXN0X2dldF9kZWNvZGVkX3BheWxvYWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18xMC50eHQnKQpAQCAtMjczLDYgKzI1OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1swXS5zdGFydHN3aXRoKCdGcm9tICcpKQogICAgICAgICBlcSh0ZXh0LCBOTC5qb2luKGxpbmVzWzE6XSkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLmJhZF9wYXJhbXMKICAgICBkZWYgdGVzdF9iYWRfcGFyYW0oc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIkNvbnRlbnQtVHlwZTogYmxhcmc7IGJhejsgYm9vXG4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JheicpLCAnJykKQEAgLTMwNiw2ICsyOTMsNyBAQAogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtcyhoZWFkZXI9J3gtaGVhZGVyJyksCiAgICAgICAgICAgIFsoJ2ZvbycsICcnKSwgKCdiYXInLCAnb25lJyksICgnYmF6JywgJ3R3bycpXSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuc3BhY2VzX2Fyb3VuZF9wYXJhbV9lcXVhbHMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fbGliZXJhbChzZWxmKToKICAgICAgICAgbXNnID0gTWVzc2FnZSgpCiAgICAgICAgIG1zZ1snQ29udGVudC1UeXBlJ10gPSAnQ29udGVudC1UeXBlOiBNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5ID0gIkNQSU1TU01UUEMwNnA1ZjN0RyInCkBAIC0zMjgsMTAgKzMxNiwxMiBAQAogICAgICAgICAjIG1zZy5nZXRfcGFyYW0oIndlaXJkIikKICAgICAgICAgIyB5ZXQuCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnNwYWNlc19hcm91bmRfc2VtaXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fZnVua3lfY29udGludWF0aW9uX2xpbmVzKHNlbGYpOgogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18yMi50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgxKS5nZXRfcGFyYW0oJ25hbWUnKSwgJ3dpYmJsZS5KUEcnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5zZW1pc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX3dpdGhfc2VtaXNfaW5fcXVvdGVzKHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKAogICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcGpwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIlxuJykKQEAgLTMzOSw2ICszMjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ25hbWUnLCB1bnF1b3RlPUZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnIkppbSZhbXA7JmFtcDtKaWxsIicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnF1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZQogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV93aXRoX3F1b3RlcyhzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygKICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGZvbzsgYmFyKjA9ImJhelxcImZvb2JhciI7IGJhcioxPSJcXCJiYXoiJykKQEAgLTUyNyw2ICs1MTgsNyBAQAogICAgICAgICBlcShtc2cudmFsdWVzKCksIFsnT25lIEh1bmRyZWQnLCAnVHdlbnR5JywgJ1RocmVlJywgJ0VsZXZlbiddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbXNnLnJlcGxhY2VfaGVhZGVyLCAnRm91cnRoJywgJ01pc3NpbmcnKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwogICAgICAgICBtc2cgPSBNZXNzYWdlKCkKQEAgLTUzNCw3ICs1MjYsMTAgQEAKICAgICAgICAgbXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10gPSAnYmFzZTY0JwogICAgICAgICBtc2cuc2V0X3BheWxvYWQoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzKHgsICdyYXctdW5pY29kZS1lc2NhcGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDAzXHgwMFx4ZTlceGQwXHhmZVx4ZmZceGZmLlx4OGJceGMwJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4YTFceDAwcFx4ZjZceGJmXHhlOVx4MGYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KQogCiAgICAgZGVmIHRlc3RfYnJva2VuX3VuaWNvZGVfcGF5bG9hZChzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3QgaW1wcm92ZXMgY292ZXJhZ2UgYnV0IGlzIG5vdCBhIGNvbXBsaWFuY2UgdGVzdC4KQEAgLTYzMiw2ICs2MjcsMTggQEAKICAgICAgICAgICAgIGFiYwogICAgICAgICAgICAgIiIiKSkKIAorICAgIGRlZiB0ZXN0X3VuaWNvZGVfYm9keV9kZWZhdWx0c190b191dGY4X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlIDE0MjkxCisgICAgICAgIG0gPSBNSU1FVGV4dCgnw4kgdGVzdGFiY1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgICAgIHc0a2dkR1Z6ZEdGaVl3bz0KKyAgICAgICAgICAgICIiIikpCisKKwogIyBUZXN0IHRoZSBlbWFpbC5lbmNvZGVycyBtb2R1bGUKIGNsYXNzIFRlc3RFbmNvZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY1Nyw3ICs2NjQsNyBAQAogICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJzdiaXQnKQogICAgICAgICAjIFNpbWlsYXIsIGJ1dCB3aXRoIDhiaXQgZGF0YQogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcpCi0gICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnOGJpdCcpCisgICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnYmFzZTY0JykKICAgICAgICAgIyBBbmQgbm93IHdpdGggYSBkaWZmZXJlbnQgY2hhcnNldAogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcsIF9jaGFyc2V0PSdpc28tODg1OS0xJykKICAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICdxdW90ZWQtcHJpbnRhYmxlJykKQEAgLTEyNDMsNiArMTI1MCw3IEBACiAgICAgICAgICAgICAgPT91dGYtOD9xP19mb2xkaW5nX3doaXRlX3NwYWNlX3dvcmtzPz0iIiIpKydcbicpCiAKIAorCiAjIFRlc3QgbWFuZ2xpbmcgb2YgIkZyb20gIiBsaW5lcyBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UKIGNsYXNzIFRlc3RGcm9tTWFuZ2xpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTEzMTYsMTMgKzEzMjQsNyBAQAogIyBUZXN0IHRoZSBiYXNpYyBNSU1FQXVkaW8gY2xhc3MKIGNsYXNzIFRlc3RNSU1FQXVkaW8odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgcGljayB1cCB0aGUgYXVkaW90ZXN0LmF1IHRoYXQgbGl2ZXMgaW4gZW1haWwvdGVzdC9kYXRhLgotICAgICAgICAjIEluIFB5dGhvbiwgdGhlcmUncyBhbiBhdWRpb3Rlc3QuYXUgbGl2aW5nIGluIExpYi90ZXN0IGJ1dCB0aGF0IGlzbid0Ci0gICAgICAgICMgaW5jbHVkZWQgaW4gc29tZSBiaW5hcnkgZGlzdHJvcyB0aGF0IGRvbid0IGluY2x1ZGUgdGhlIHRlc3QKLSAgICAgICAgIyBwYWNrYWdlLiAgVGhlIHRyYWlsaW5nIGVtcHR5IHN0cmluZyBvbiB0aGUgLmpvaW4oKSBpcyBzaWduaWZpY2FudAotICAgICAgICAjIHNpbmNlIGZpbmRmaWxlKCkgd2lsbCBkbyBhIGRpcm5hbWUoKS4KLSAgICAgICAgZGF0YWRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsICcnKQotICAgICAgICB3aXRoIG9wZW4oZmluZGZpbGUoJ2F1ZGlvdGVzdC5hdScsIGRhdGFkaXIpLCAncmInKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgICBzZWxmLl9hdWRpb2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgc2VsZi5fYXUgPSBNSU1FQXVkaW8oc2VsZi5fYXVkaW9kYXRhKQogCkBAIC0xODUwLDYgKzE4NTIsNyBAQAogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgorCiAgICAgZGVmIHRlc3RfcGFyc2VfbWlzc2luZ19taW5vcl90eXBlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMTQudHh0JykKQEAgLTE4NTcsNiArMTg2MCw3IEBACiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpLCAndGV4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9zdWJ0eXBlKCksICdwbGFpbicpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzE1LnR4dCcpCkBAIC0xODY3LDE1ICsxODcxLDYyIEBACiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKGlubmVyLmRlZmVjdHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19ib3VuZGFyeShzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI1LnR4dCcpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDIpCi0gICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLCBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCkpCiAKKyAgICBtdWx0aXBhcnRfbXNnID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogV2VkLCAxNCBOb3YgMjAwNyAxMjo1NjoyMyBHTVQKKyAgICAgICAgRnJvbTogZm9vQGJhci5pbnZhbGlkCisgICAgICAgIFRvOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgU3ViamVjdDogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IGFuZCBtdWx0aXBhcnQKKyAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICBib3VuZGFyeT0iPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09Int9CisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgVGVzdCBtZXNzYWdlCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgWVdKagorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09LS0KKyAgICAgICAgIiIiKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF9pbnZhbGlkX2N0ZShzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgIHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfbm9fY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBmb3IgY3RlIGluICgnN2JpdCcsICc4Yml0JywgJ0JJTmFyeScpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiB7fSIuZm9ybWF0KGN0ZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlvcGVIZWFkZXIgaW52YWxpZF8xIGFuZCBpbnZhbGlkXzIuCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb250ZW50X3R5cGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBuZXEgPSBzZWxmLm5kaWZmQXNzZXJ0RXF1YWwKQEAgLTE5MjUsMTUgKzE5NzYsMTggQEAKIGNvdW50ZXIgdG8gUkZDIDI4MjIsIHRoZXJlJ3Mgbm8gc2VwYXJhdGluZyBuZXdsaW5lIGhlcmUKICIiIikKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9seWluZ19tdWx0aXBhcnQoc2VsZik6CiAgICAgICAgIHVubGVzcyA9IHNlbGYuYXNzZXJ0VHJ1ZQogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ180MS50eHQnKQogICAgICAgICB1bmxlc3MoaGFzYXR0cihtc2csICdkZWZlY3RzJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMikKLSAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9taXNzaW5nX3N0YXJ0X2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICBvdXRlciA9IHNlbGYuX21zZ29iaignbXNnXzQyLnR4dCcpCiAgICAgICAgICMgVGhlIG1lc3NhZ2Ugc3RydWN0dXJlIGlzOgpAQCAtMTk0OSwxNyArMjAwMywyOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShiYWQuZGVmZWN0c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCkpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfZmlyc3RfbGluZV9pc19jb250aW51YXRpb25faGVhZGVyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgbSA9ICcgTGluZSAxXG5MaW5lIDJcbkxpbmUgMycKKyAgICAgICAgbSA9ICcgTGluZSAxXG5TdWJqZWN0OiB0ZXN0XG5cbmJvZHknCiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobSkKLSAgICAgICAgZXEobXNnLmtleXMoKSwgW10pCi0gICAgICAgIGVxKG1zZy5nZXRfcGF5bG9hZCgpLCAnTGluZSAyXG5MaW5lIDMnKQorICAgICAgICBlcShtc2cua2V5cygpLCBbJ1N1YmplY3QnXSkKKyAgICAgICAgZXEobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKICAgICAgICAgZXEobGVuKG1zZy5kZWZlY3RzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKG1zZy5kZWZlY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCiAgICAgICAgIGVxKG1zZy5kZWZlY3RzWzBdLmxpbmUsICcgTGluZSAxXG4nKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X21pc3NpbmdfaGVhZGVyX2JvZHlfc2VwYXJhdG9yKHNlbGYpOgorICAgICAgICAjIE91ciBoZXVyaXN0aWMgaWYgd2Ugc2VlIGEgbGluZSB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgaGVhZGVyIChubworICAgICAgICAjIGxlYWRpbmcgd2hpdGVzcGFjZSBidXQgbm8gJzonKSBpcyB0byBhc3N1bWUgdGhhdCB0aGUgYmxhbmsgbGluZSB0aGF0CisgICAgICAgICMgc2VwYXJhdGVzIHRoZSBoZWFkZXIgZnJvbSB0aGUgYm9keSBpcyBtaXNzaW5nLCBhbmQgdG8gc3RvcCBwYXJzaW5nCisgICAgICAgICMgaGVhZGVycyBhbmQgc3RhcnQgcGFyc2luZyB0aGUgYm9keS4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogdGVzdFxubm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwobXNnLmRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RdKQogCiAKICMgVGVzdCBSRkMgMjA0NyBoZWFkZXIgZW5jb2RpbmcgYW5kIGRlY29kaW5nCkBAIC0xOTcwLDkgKzIwMzYsOSBAQAogIGZvbyBiYXIgPT9tYWMtaWNlbGFuZD9xP3I9OEFrc209OUFyZz04Q3M/PSIiIgogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKICAgICAgICAgZXEoZGgsIFsKLSAgICAgICAgICAgIChiJ1JlOicsIE5vbmUpLAorICAgICAgICAgICAgKGInUmU6ICcsIE5vbmUpLAogICAgICAgICAgICAgKGInclx4OGFrc21ceDlhcmdceDhjcycsICdtYWMtaWNlbGFuZCcpLAotICAgICAgICAgICAgKGInYmF6IGZvbyBiYXInLCBOb25lKSwKKyAgICAgICAgICAgIChiJyBiYXogZm9vIGJhciAnLCBOb25lKSwKICAgICAgICAgICAgIChiJ3JceDhha3NtXHg5YXJnXHg4Y3MnLCAnbWFjLWljZWxhbmQnKV0pCiAgICAgICAgIGhlYWRlciA9IG1ha2VfaGVhZGVyKGRoKQogICAgICAgICBlcShzdHIoaGVhZGVyKSwKQEAgLTE5ODEsMzUgKzIwNDcsMzcgQEAKIFJlOiA9P21hYy1pY2VsYW5kP3E/cj04QWtzbT05QXJnPThDcz89IGJheiBmb28gYmFyID0/bWFjLWljZWxhbmQ/cT9yPThBa3NtPz0KICA9P21hYy1pY2VsYW5kP3E/PTlBcmc9OENzPz0iIiIpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyX3VuaWNvZGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9rZWVwZXJfdW5pY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnPT9JU08tODg1OS0xP1E/QW5kcj1FOT89IFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JwogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKICAgICAgICAgZXEoZGgsIFsoYidBbmRyXHhlOScsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgKGInUGlyYXJkIDxwaXJhcmRAZG9tLmFpbj4nLCBOb25lKV0pCisgICAgICAgICAgICAgICAgKGInIFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JywgTm9uZSldKQogICAgICAgICBoZWFkZXIgPSBzdHIobWFrZV9oZWFkZXIoZGgpKQogICAgICAgICBlcShoZWFkZXIsICdBbmRyXHhlOSBQaXJhcmQgPHBpcmFyZEBkb20uYWluPicpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyX3VuaWNvZGVfMihzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcl91bmljb2RlXzIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gJ1RoZSA9P2lzby04ODU5LTE/Yj9jWFZwWTJzZ1luSnZkMjRnWm05ND89IGp1bXBlZCBvdmVyIHRoZSA9P2lzby04ODU5LTE/Yj9iR0Y2ZVNCa2IyYz0/PScKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIGVxKGRoLCBbKGInVGhlJywgTm9uZSksIChiJ3F1aWNrIGJyb3duIGZveCcsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgKGInanVtcGVkIG92ZXIgdGhlJywgTm9uZSksIChiJ2xhenkgZG9nJywgJ2lzby04ODU5LTEnKV0pCisgICAgICAgIGVxKGRoLCBbKGInVGhlICcsIE5vbmUpLCAoYidxdWljayBicm93biBmb3gnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgIChiJyBqdW1wZWQgb3ZlciB0aGUgJywgTm9uZSksIChiJ2xhenkgZG9nJywgJ2lzby04ODU5LTEnKV0pCiAgICAgICAgIGh1ID0gc3RyKG1ha2VfaGVhZGVyKGRoKSkKICAgICAgICAgZXEoaHUsICdUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIHRoZSBsYXp5IGRvZycpCiAKICAgICBkZWYgdGVzdF9yZmMyMDQ3X21pc3Npbmdfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgcyA9ICdTbT0/SVNPLTg4NTktMT9CPzlnPT0/PXJnPT9JU08tODg1OS0xP0I/NVE9PT89c2JvcmQnCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKHMsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaCwgWyhiJ1NtJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIncmcnLCBOb25lKSwgKGInXHhlNScsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidzYm9yZCcsIE5vbmUpXSkKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBzID0gJ1NtID0/SVNPLTg4NTktMT9CPzlnPT0/PSByZyA9P0lTTy04ODU5LTE/Qj81UT09Pz0gc2JvcmQnCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20nLCBOb25lKSwgKGInXHhmNicsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidyZycsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ3Nib3JkJywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20gJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInIHJnICcsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJyBzYm9yZCcsIE5vbmUpXSkKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfQl9iYWRfcGFkZGluZyhzZWxmKToKICAgICAgICAgcyA9ICc9P2lzby04ODU5LTE/Qj8lcz89JwpAQCAtMjAyNyw2ICsyMDk1LDY3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsoYidhbmRyXHhlOT16eicsICdpc28tODY1OS0xJyldKQogCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzEoc2VsZik6CisgICAgICAgICMgMXN0IHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzIoc2VsZik6CisgICAgICAgICMgMm5kIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSBiKScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYScsICdpc28tODg1OS0xJyksIChiJyBiKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N18zKHNlbGYpOgorICAgICAgICAjIDNyZCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzQoc2VsZik6CisgICAgICAgICMgNHRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzVhKHNlbGYpOgorICAgICAgICAjIDV0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NyBuZXdsaW5lIGlzIFxyXG4KKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89XHJcbiAgICA9P0lTTy04ODU5LTE/UT9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNWIoc2VsZik6CisgICAgICAgICMgNXRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3IG5ld2xpbmUgaXMgXG4KKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89XG4gICAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzYoc2VsZik6CisgICAgICAgICMgNnRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2FfYj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYSBiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N183KHNlbGYpOgorICAgICAgICAjIDd0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gPT9JU08tODg1OS0yP1E/X2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicgYicsICdpc28tODg1OS0yJyksCisgICAgICAgICAgICAgKGInKScsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKS5lbmNvZGUoKSwgcy5sb3dlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksICcoYSBiKScpCisKKyAgICBkZWYgdGVzdF9tdWx0aWxpbmVfaGVhZGVyKHNlbGYpOgorICAgICAgICBzID0gJz0/d2luZG93cy0xMjUyP3E/PTIyTT1GQ2xsZXJfVD0yMj89XHJcbiA8VC5NdWVsbGVyQHh4eC5jb20+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInIk1ceGZjbGxlciBUIicsICd3aW5kb3dzLTEyNTInKSwKKyAgICAgICAgICAgICAoYic8VC5NdWVsbGVyQHh4eC5jb20+JywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpLmVuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnLmpvaW4ocy5zcGxpdGxpbmVzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJNw7xsbGVyIFQiIDxULk11ZWxsZXJAeHh4LmNvbT4nKQorCiAKICMgVGVzdCB0aGUgTUlNRU1lc3NhZ2UgY2xhc3MKIGNsYXNzIFRlc3RNSU1FTWVzc2FnZShUZXN0RW1haWxCYXNlKToKQEAgLTI1NTIsNiArMjY4MSwxMyBAQAogICAgICAgICBmb3Igc3VicGFydCBpbiBtc2cud2FsaygpOgogICAgICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2Uoc3VicGFydCwgTXlNZXNzYWdlKSkKIAorICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2RvZXNfbm90X3JlcXVpcmVfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1lc3NhZ2UoTWVzc2FnZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coIlN1YmplY3Q6IHRlc3RcblxudGVzdCIsIE15TWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLCBNeU1lc3NhZ2UpKQorCiAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgogICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKCdlbWFpbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG1vZHVsZS5fX2FsbF9fKSwgWwpAQCAtMjU4Miw4ICsyNzE4LDE3IEBACiAgICAgICAgICAgICB1dGlscy5mb3JtYXRkYXRlKG5vdywgbG9jYWx0aW1lPUZhbHNlLCB1c2VnbXQ9VHJ1ZSksCiAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclYSwgJWQgJWIgJVkgJUg6JU06JVMgR01UJywgdGltZS5nbXRpbWUobm93KSkpCiAKLSAgICBkZWYgdGVzdF9wYXJzZWRhdGVfbm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWRhdGUoJycpLCBOb25lKQorICAgICMgcGFyc2VkYXRlIGFuZCBwYXJzZWRhdGVfdHogd2lsbCBiZWNvbWUgZGVwcmVjYXRlZCBpbnRlcmZhY2VzIHNvbWVkYXkKKyAgICBkZWYgdGVzdF9wYXJzZWRhdGVfcmV0dXJuc19Ob25lX2Zvcl9pbnZhbGlkX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZV90eignJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnMCcpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGVfdHooJzAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlKCdBIENvbXBsZXRlIFdhc3RlIG9mIFRpbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KCdBIENvbXBsZXRlIFdhc3RlIG9mIFRpbWUnKSkKKyAgICAgICAgIyBOb3QgYSBwYXJ0IG9mIHRoZSBzcGVjIGJ1dCwgYnV0IHRoaXMgaGFzIGhpc3RvcmljYWxseSB3b3JrZWQ6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZShOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KE5vbmUpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2NvbXBhY3Qoc2VsZik6CiAgICAgICAgICMgVGhlIEZXUyBhZnRlciB0aGUgY29tbWEgaXMgb3B0aW9uYWwKQEAgLTI2MTAsNiArMjc1NSwxMyBAQAogICAgICAgICAgICAoMjAwMiwgNCwgMywgMTQsIDU4LCAyNiwgMCwgMSwgLTEsIC0yODgwMCkpCiAKIAorICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9hY2NlcHRzX3RpbWVfd2l0aF9kb3RzKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEodXRpbHMucGFyc2VkYXRlX3R6KCc1IEZlYiAyMDAzIDEzLjQ3LjI2IC0wODAwJyksCisgICAgICAgICAgICgyMDAzLCAyLCA1LCAxMywgNDcsIDI2LCAwLCAxLCAtMSwgLTI4ODAwKSkKKyAgICAgICAgZXEodXRpbHMucGFyc2VkYXRlX3R6KCc1IEZlYiAyMDAzIDEzLjQ3IC0wODAwJyksCisgICAgICAgICAgICgyMDAzLCAyLCA1LCAxMywgNDcsIDAsIDAsIDEsIC0xLCAtMjg4MDApKQorCiAgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2FjY2VwdGFibGVfdG9fdGltZV9mdW5jdGlvbnMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICB0aW1ldHVwID0gdXRpbHMucGFyc2VkYXRlKCc1IEZlYiAyMDAzIDEzOjQ3OjI2IC0wODAwJykKQEAgLTI2NTIsNyArMjgwNCwxMCBAQAogICAgIGRlZiB0ZXN0X2VzY2FwZV9kdW1wKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigoJ0EgKFZlcnkpIFNpbGx5IFBlcnNvbicsICdwZXJzb25AZG9tLmFpbicpKSwKLSAgICAgICAgICAgIHInIkEgXChWZXJ5XCkgU2lsbHkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JykKKyAgICAgICAgICAgIHInIkEgKFZlcnkpIFNpbGx5IFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB1dGlscy5wYXJzZWFkZHIociciQSBcKFZlcnlcKSBTaWxseSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nKSwKKyAgICAgICAgICAgICgnQSAoVmVyeSkgU2lsbHkgUGVyc29uJywgJ3BlcnNvbkBkb20uYWluJykpCiAgICAgICAgIGEgPSByJ0EgXChTcGVjaWFsXCkgUGVyc29uJwogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlYWRkcih1dGlscy5mb3JtYXRhZGRyKChhLCBiKSkpLCAoYSwgYikpCkBAIC0yNjY1LDYgKzI4MjAsNDYgQEAKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWFkZHIodXRpbHMuZm9ybWF0YWRkcigoYSwgYikpKSwgKGEsIGIpKQogCisgICAgZGVmIHRlc3RfcXVvdGVzX3VuaWNvZGVfbmFtZXMoc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgdXRmOF9iYXNlNjQgPSAiPT91dGYtOD9iP1NNT2tibk1nVjhPOGNuTjA/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBsYXRpbjFfcXVvcHJpID0gIj0/aXNvLTg4NTktMT9xP0g9RTRuc19XPUZDcnN0Pz0gPHBlcnNvbkBkb20uYWluPiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSksIHV0ZjhfYmFzZTY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgbGF0aW4xX3F1b3ByaSkKKworICAgIGRlZiB0ZXN0X2FjY2VwdHNfYW55X2NoYXJzZXRfbGlrZV9vYmplY3Qoc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgdXRmOF9iYXNlNjQgPSAiPT91dGYtOD9iP1NNT2tibk1nVjhPOGNuTjA/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBmb29iYXIgPSAiRk9PQkFSIgorICAgICAgICBjbGFzcyBDaGFyc2V0TW9jazoKKyAgICAgICAgICAgIGRlZiBoZWFkZXJfZW5jb2RlKHNlbGYsIHN0cmluZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvb2JhcgorICAgICAgICBtb2NrID0gQ2hhcnNldE1vY2soKQorICAgICAgICBtb2NrX2V4cGVjdGVkID0gIiVzIDwlcz4iICUgKGZvb2JhciwgYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSwgbW9jayksIG1vY2tfZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkciksIENoYXJzZXQoJ3V0Zi04JykpLAorICAgICAgICAgICAgdXRmOF9iYXNlNjQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJzZXRfbGlrZV9vYmplY3RfcmFpc2VzX2Vycm9yKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE2OTA2MDguICBlbWFpbC51dGlscy5mb3JtYXRhZGRyKCkgc2hvdWxkIGJlIHJmYzIwNDcgYXdhcmUuCisgICAgICAgIG5hbWUgPSAiSFx1MDBlNG5zIFdcdTAwZmNyc3QiCisgICAgICAgIGFkZHIgPSAncGVyc29uQGRvbS5haW4nCisgICAgICAgICMgQSBvYmplY3Qgd2l0aG91dCBhIGhlYWRlcl9lbmNvZGUgbWV0aG9kOgorICAgICAgICBiYWRfY2hhcnNldCA9IG9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB1dGlscy5mb3JtYXRhZGRyLCAobmFtZSwgYWRkciksCisgICAgICAgICAgICBiYWRfY2hhcnNldCkKKworICAgIGRlZiB0ZXN0X3VuaWNvZGVfYWRkcmVzc19yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgYWRkciA9ICdwZXJzXHUwMGY2bkBkb20uaW4nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgdXRpbHMuZm9ybWF0YWRkciwgKE5vbmUsIGFkZHIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIHV0aWxzLmZvcm1hdGFkZHIsICgiTmFtZSIsIGFkZHIpKQorCiAgICAgZGVmIHRlc3RfbmFtZV93aXRoX2RvdChzZWxmKToKICAgICAgICAgeCA9ICdKb2huIFguIERvZSA8anhkQGV4YW1wbGUuY29tPicKICAgICAgICAgeSA9ICciSm9obiBYLiBEb2UiIDxqeGRAZXhhbXBsZS5jb20+JwpAQCAtMjcxMCw2ICsyOTA1LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCcnLCAnbWVyd29rLndvay53b2tAeGFtcGxlLmNvbScpLAogICAgICAgICAgICAgdXRpbHMucGFyc2VhZGRyKCdtZXJ3b2suIHdvayAuICB3b2tAeGFtcGxlLmNvbScpKQogCisgICAgZGVmIHRlc3RfZm9ybWF0YWRkcl9kb2VzX25vdF9xdW90ZV9wYXJlbnNfaW5fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgYWRkciA9ICgiJ2Zvb0BleGFtcGxlLmNvbScgKGZvb0BleGFtcGxlLmNvbSkiLAorICAgICAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20nKQorICAgICAgICBhZGRyc3RyID0gKCciXCdmb29AZXhhbXBsZS5jb21cJyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb29AZXhhbXBsZS5jb20pIiA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VhZGRyKGFkZHJzdHIpLCBhZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoYWRkciksIGFkZHJzdHIpCisKKwogICAgIGRlZiB0ZXN0X211bHRpbGluZV9mcm9tX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIHggPSAiIiJcCiBGb28KQEAgLTI5NDUsNiArMzE0OSw3IEBACiAKIAogY2xhc3MgVGVzdFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CisKICAgICBkZWYgdGVzdF9oZWFkZXJfcGFyc2VyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyBQYXJzZSBvbmx5IHRoZSBoZWFkZXJzIG9mIGEgY29tcGxleCBtdWx0aXBhcnQgTUlNRSBkb2N1bWVudApAQCAtMjk1Niw2ICszMTYxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXNnLmlzX211bHRpcGFydCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKIAorICAgIGRlZiB0ZXN0X2J5dGVzX2hlYWRlcl9wYXJzZXIoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICAjIFBhcnNlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYSBjb21wbGV4IG11bHRpcGFydCBNSU1FIGRvY3VtZW50CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ18wMi50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZyA9IGVtYWlsLnBhcnNlci5CeXRlc0hlYWRlclBhcnNlcigpLnBhcnNlKGZwKQorICAgICAgICBlcShtc2dbJ2Zyb20nXSwgJ3BwcC1yZXF1ZXN0QHp6ei5vcmcnKQorICAgICAgICBlcShtc2dbJ3RvJ10sICdwcHBAenp6Lm9yZycpCisgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF90eXBlKCksICdtdWx0aXBhcnQvbWl4ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1zZy5pc19tdWx0aXBhcnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKCksIHN0cikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksIGJ5dGVzKSkKKwogICAgIGRlZiB0ZXN0X3doaXRlc3BhY2VfY29udGludWF0aW9uKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyBUaGlzIG1lc3NhZ2UgY29udGFpbnMgYSBsaW5lIGFmdGVyIHRoZSBTdWJqZWN0OiBoZWFkZXIgdGhhdCBoYXMgb25seQpAQCAtMzE3OCwxNSArMzM5NSwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAncMO2c3TDoWxcbicuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF84Yml0X2luX2Jhc2U2NF9ib2R5KHNlbGYpOgotICAgICAgICAjIFN0aWNraW5nIGFuIDhiaXQgYnl0ZSBpbiBhIGJhc2U2NCBibG9jayBtYWtlcyBpdCB1bmRlY29kYWJsZSBieQotICAgICAgICAjIG5vcm1hbCBtZWFucywgc28gdGhlIGJsb2NrIGlzIHJldHVybmVkIHVuZGVjb2RlZCwgYnV0IGFzIGJ5dGVzLgorICAgICAgICAjIElmIHdlIGdldCA4Yml0IGJ5dGVzIGluIGEgYmFzZTY0IGJvZHksIHdlIGNhbiBqdXN0IGlnbm9yZSB0aGVtCisgICAgICAgICMgYXMgYmVpbmcgb3V0c2lkZSB0aGUgYmFzZTY0IGFscGhhYmV0IGFuZCBkZWNvZGUgYW55d2F5LiAgQnV0CisgICAgICAgICMgd2UgcmVnaXN0ZXIgYSBkZWZlY3QuCiAgICAgICAgIG0gPSBzZWxmLmJvZHl0ZXN0X21zZy5mb3JtYXQoY2hhcnNldD0ndXRmLTgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ZT0nYmFzZTY0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5bGluZT0nY01PMmMzUmhiQcOhPScpLmVuY29kZSgndXRmLTgnKQogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMobSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdjTU8yYzNSaGJBw6E9XG4nLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAncMO2c3RhbCcuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QpCiAKICAgICBkZWYgdGVzdF84Yml0X2luX3V1ZW5jb2RlX2JvZHkoc2VsZik6CiAgICAgICAgICMgU3RpY2tpbmcgYW4gOGJpdCBieXRlIGluIGEgdXVlbmNvZGUgYmxvY2sgbWFrZXMgaXQgdW5kZWNvZGFibGUgYnkKQEAgLTMyNjcsNiArMzQ4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X21haW50eXBlKCksICJ0ZXh0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfc3VidHlwZSgpLCAicGxcdUZGRkRpbiIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLm5vbl9hc2NpaV9pbl9wYXJhbXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1zX3dpdGhfOGJpdChzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKAogICAgICAgICAgICAgJ1gtSGVhZGVyOiBmb289XHhhN25lOyBiXHhhN3I9dHdvOyBiYXo9dGhyZWVcbicuZW5jb2RlKCdsYXRpbi0xJykpCkBAIC0zMjc2LDYgKzM0OTgsNyBAQAogICAgICAgICAjIFhYWDogc29tZWRheSB5b3UgbWlnaHQgYmUgYWJsZSB0byBnZXQgJ2JceGE3cicsIGZvciBub3cgeW91IGNhbid0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JceGE3cicsIGhlYWRlcj0neC1oZWFkZXInKSwgTm9uZSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIubm9uX2FzY2lpX2luX3JmYzIyMzFfdmFsdWUKICAgICBkZWYgdGVzdF9nZXRfcmZjMjIzMV9wYXJhbXNfd2l0aF84Yml0KHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXModGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsKQEAgLTM1MjEsMTIgKzM3NDQsNyBAQAogICAgICAgICBiID0gQnl0ZXNJTygpCiAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYiwgbWF4aGVhZGVybGVuPTApCiAgICAgICAgIGcuZmxhdHRlbihtc2csIHVuaXhmcm9tPXVuaXhmcm9tLCBsaW5lc2VwPXNlbGYubGluZXNlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRCeXRlU3RyaW5nc0VxdWFsKGRhdGEsIGIuZ2V0dmFsdWUoKSkKLQotICAgIGRlZiBhc3NlcnRCeXRlU3RyaW5nc0VxdWFsKHNlbGYsIHN0cjEsIHN0cjIpOgotICAgICAgICAjIE5vdCB1c2luZyBzZWxmLmJsaW5lc2VwIGhlcmUgaXMgaW50ZW50aW9uYWwuICBUaGlzIHdheSB0aGUgb3V0cHV0Ci0gICAgICAgICMgaXMgbW9yZSB1c2VmdWwgd2hlbiB0aGUgZmFpbHVyZSByZXN1bHRzIGluIG1peGVkIGxpbmUgZW5kaW5ncy4KLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoc3RyMS5zcGxpdChiJ1xuJyksIHN0cjIuc3BsaXQoYidcbicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIuZ2V0dmFsdWUoKSkKIAogCiBjbGFzcyBUZXN0Qnl0ZXNHZW5lcmF0b3JJZGVtcG90ZW50TkwoQmFzZVRlc3RCeXRlc0dlbmVyYXRvcklkZW1wb3RlbnQsCkBAIC00MjkyLDExICs0NTEwLDExIEBACiAgICAgICAgIGggPSBtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKQogICAgICAgICBlcShoLmVuY29kZSgpLCBzKQogCi0gICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9lYXRlcihzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnU3ViamVjdDogPT9rb2k4LXI/Yj84TkxQMThYU3k4RWd6c0VneHNuT3djell6dGs9Pz0gPT9rb2k4LXI/cT89Q0E/PSB6ei4nCiAgICAgICAgIHBhcnRzID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBlcShwYXJ0cywgWyhiJ1N1YmplY3Q6JywgTm9uZSksIChiJ1x4ZjBceGQyXHhjZlx4ZDdceGM1XHhkMlx4Y2JceGMxIFx4Y2VceGMxIFx4YzZceGM5XHhjZVx4YzFceGNjXHhkOFx4Y2VceGQ5XHhjYScsICdrb2k4LXInKSwgKGInenouJywgTm9uZSldKQorICAgICAgICBlcShwYXJ0cywgWyhiJ1N1YmplY3Q6ICcsIE5vbmUpLCAoYidceGYwXHhkMlx4Y2ZceGQ3XHhjNVx4ZDJceGNiXHhjMSBceGNlXHhjMSBceGM2XHhjOVx4Y2VceGMxXHhjY1x4ZDhceGNlXHhkOVx4Y2EnLCAna29pOC1yJyksIChiJyB6ei4nLCBOb25lKV0pCiAgICAgICAgIGhkciA9IG1ha2VfaGVhZGVyKHBhcnRzKQogICAgICAgICBlcShoZHIuZW5jb2RlKCksCiAgICAgICAgICAgICdTdWJqZWN0OiA9P2tvaTgtcj9iPzhOTFAxOFhTeThFZ3pzRWd4c25Pd2N6WXp0bks/PSB6ei4nKQpAQCAtNDMyNiw2ICs0NTQ0LDkgQEAKIAogIyBUZXN0IFJGQyAyMjMxIGhlYWRlciBwYXJhbWV0ZXJzIChlbi9kZSljb2RpbmcKIGNsYXNzIFRlc3RSRkMyMjMxKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3RlcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI5LnR4dCcpCkBAIC00NDExLDExICs0NjMyLDE1IEBACiAtTWUKICIiIikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX2NoYXJzZXQKKyAgICAjIEkgY2hhbmdlZCB0aGUgY2hhcnNldCBuYW1lLCB0aG91Z2gsIGJlY2F1c2UgdGhlIG9uZSBpbiB0aGUgZmlsZSBpc24ndAorICAgICMgYSBsZWdhbCBjaGFyc2V0IG5hbWUuICBTaG91bGQgYWRkIGEgdGVzdCBmb3IgYW4gaWxsZWdhbCBjaGFyc2V0LgogICAgIGRlZiB0ZXN0X3JmYzIyMzFfZ2V0X2NvbnRlbnRfY2hhcnNldChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzMyLnR4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9jaGFyc2V0KCksICd1cy1hc2NpaScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF9ub19kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJzZV9yZmNfcXVvdGluZyhzZWxmKToKICAgICAgICAgbSA9IHRleHR3cmFwLmRlZGVudCgnJydcCiAgICAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDI5LDYgKzQ2NTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbXNnLmFzX3N0cmluZygpKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJzZV9leHRyYV9xdW90aW5nKHNlbGYpOgogICAgICAgICBtID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKICAgICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0NDIsNiArNDY2OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBtc2cuYXNfc3RyaW5nKCkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldAorICAgICMgYnV0IG5ldyB0ZXN0IHVzZXMgKjAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGxhbmcvY2hhcnNldCBpcyBub3QgdmFsaWQuCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NlZ21lbnRlZF9ub3JtYWxfdmFsdWVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0KHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtNDQ1Niw2ICs0Njg1LDcgQEAKICAgICAgICAgICAgIHBhcmFtLAogICAgICAgICAgICAgJ2ZpbGVfX19fQ19fRE9DVU1FTlRTXzIwQU5EXzIwU0VUVElOR1NfRkFCSUVOX0xPQ0FMXzIwU0VUVElOR1NfVEVNUF9uc21haWwuaHRtJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX25vX2NoYXJzZXQKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXRfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDY4LDYgKzQ2OTgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfZmlsZW5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogCisgICAgIyBEdXBsaWNhdGUgb2YgcHJldmlvdXMgdGVzdD8KICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXRfaW5fZmlsZW5hbWVfZW5jb2RlZChzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0ODAsNiArNDcxMSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9maWxlbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfcGFydGx5X2VuY29kZWQsCisgICAgIyBidXQgdGhlIHRlc3QgYmVsb3cgaXMgd3JvbmcgKHRoZSBmaXJzdCBwYXJ0IHNob3VsZCBiZSBkZWNvZGVkKS4KICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnRseV9lbmNvZGVkKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDUzMSw2ICs0NzY0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfY2hhcnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfdW5rbm93bl9jaGFyc2V0X3RyZWF0ZWRfYXNfYXNjaWkKICAgICBkZWYgdGVzdF9yZmMyMjMxX2JhZF9lbmNvZGluZ19pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ1OTcsNiArNDgzMSw3IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCBOb25lKQogICAgICAgICBlcShzLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9zaW5nbGVfdGlja19pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICIiIlwKIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287IG5hbWUqMD1cIkZyYW5rJ3NcIjsgbmFtZSoxPVwiIERvY3VtZW50XCIKQEAgLTQ2MDcsNiArNDg0Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShwYXJhbSwgdHVwbGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luX3ZhbHVlX3dpdGhfY2hhcnNldF9hbmRfbGFuZwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdGlja19hdHRhY2tfZXh0ZW5kZWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDYyMCw2ICs0ODU2LDcgQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsICdlbi11cycpCiAgICAgICAgIGVxKHMsICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fbm9uX2VuY29kZWRfdmFsdWUKICAgICBkZWYgdGVzdF9yZmMyMjMxX3RpY2tfYXR0YWNrKHNlbGYpOgogICAgICAgICBtID0gIiIiXAogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbzsKQEAgLTQ2MzEsNiArNDg2OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShwYXJhbSwgdHVwbGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLCAidXMtYXNjaWknZW4tdXMnRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3Rlc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19leHRlbmRlZF92YWx1ZXMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDY0MCw2ICs0ODc4LDcgQEAKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhtKQogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtKCduYW1lJyksICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ2NTUsNiArNDg5NCw4IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCAnZW4tdXMnKQogICAgICAgICBlcShzLCAnTXkgRG9jdW1lbnQgRm9yIFlvdScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cworICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9xdW90ZWRfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00Njc4LDcgKzQ5MTksNyBAQAogY2xhc3MgVGVzdFNpZ25lZChUZXN0RW1haWxCYXNlKToKIAogICAgIGRlZiBfbXNnX2FuZF9vYmooc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICB3aXRoIG9wZW5maWxlKGZpbmRmaWxlKGZpbGVuYW1lKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoZmlsZW5hbWUpIGFzIGZwOgogICAgICAgICAgICAgb3JpZ2luYWwgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcob3JpZ2luYWwpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbCwgbXNnCkBAIC00NzEwLDIzICs0OTUxLDUgQEAKIAogCiAKLWRlZiBfdGVzdGNsYXNzZXMoKToKLSAgICBtb2QgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICByZXR1cm4gW2dldGF0dHIobW9kLCBuYW1lKSBmb3IgbmFtZSBpbiBkaXIobW9kKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1Rlc3QnKV0KLQotCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgZm9yIHRlc3RjbGFzcyBpbiBfdGVzdGNsYXNzZXMoKToKLSAgICAgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUodGVzdGNsYXNzKSkKLSAgICByZXR1cm4gc3VpdGUKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZm9yIHRlc3RjbGFzcyBpbiBfdGVzdGNsYXNzZXMoKToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KHRlc3RjbGFzcykKLQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nc3VpdGUnKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxNzQwOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKQEAgLTAsMCArMSwxOTkgQEAKK2ltcG9ydCBpbworaW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvciwgQnl0ZXNHZW5lcmF0b3IKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RHZW5lcmF0b3JCYXNlOgorCisgICAgcG9saWN5ID0gcG9saWN5LmRlZmF1bHQKKworICAgIGRlZiBtc2dtYWtlcihzZWxmLCBtc2csIHBvbGljeT1Ob25lKToKKyAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kKKyAgICAgICAgcmV0dXJuIHNlbGYubXNnZnVuYyhtc2csIHBvbGljeT1wb2xpY3kpCisKKyAgICByZWZvbGRfbG9uZ19leHBlY3RlZCA9IHsKKyAgICAgICAgMDogdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tCisgICAgICAgICAgICBGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZQorICAgICAgICAgICAgIGltcG9zc2libGUgZm9yIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaCBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZQorICAgICAgICAgICAgIHdlIGFyZSBub3cgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgIyBGcm9tIGlzIHdyYXBwZWQgYmVjYXVzZSB3cmFwcGVkIGl0IGZpdHMgaW4gNDAuCisgICAgICAgIDQwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206CisgICAgICAgICAgICAgbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUKKyAgICAgICAgICAgICB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSBpbXBvc3NpYmxlIGZvcgorICAgICAgICAgICAgIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaAorICAgICAgICAgICAgIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cKKyAgICAgICAgICAgICBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICAjIE5laXRoZXIgdG8gbm9yIGZyb20gZml0IGV2ZW4gaWYgcHV0IG9uIGEgbmV3IGxpbmUsCisgICAgICAgICMgc28gd2UgbGVhdmUgdGhlbSBzdGlja2luZyBvdXQgb24gdGhlIGZpcnN0IGxpbmUuCisgICAgICAgIDIwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tCisgICAgICAgICAgICBTdWJqZWN0OiBXZSB0aGUKKyAgICAgICAgICAgICB3aWxsaW5nIGxlZCBieSB0aGUKKyAgICAgICAgICAgICB1bmtub3dpbmcgYXJlIGRvaW5nCisgICAgICAgICAgICAgdGhlIGltcG9zc2libGUgZm9yCisgICAgICAgICAgICAgdGhlIHVuZ3JhdGVmdWwuIFdlCisgICAgICAgICAgICAgaGF2ZSBkb25lIHNvIG11Y2gKKyAgICAgICAgICAgICBmb3Igc28gbG9uZyB3aXRoIHNvCisgICAgICAgICAgICAgbGl0dGxlIHdlIGFyZSBub3cKKyAgICAgICAgICAgICBxdWFsaWZpZWQgdG8gZG8KKyAgICAgICAgICAgICBhbnl0aGluZyB3aXRoCisgICAgICAgICAgICAgbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgfQorICAgIHJlZm9sZF9sb25nX2V4cGVjdGVkWzEwMF0gPSByZWZvbGRfbG9uZ19leHBlY3RlZFswXQorCisgICAgcmVmb2xkX2FsbF9leHBlY3RlZCA9IHJlZm9sZF9sb25nX2V4cGVjdGVkLmNvcHkoKQorICAgIHJlZm9sZF9hbGxfZXhwZWN0ZWRbMF0gPSAoCisgICAgICAgICAgICAiVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIlN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgIgorICAgICAgICAgICAgICAiaW1wb3NzaWJsZSBmb3IgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoIGZvciAiCisgICAgICAgICAgICAgICJzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nICIKKyAgICAgICAgICAgICAgIndpdGggbm90aGluZy5cbiIKKyAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAiTm9uZVxuIikKKyAgICByZWZvbGRfYWxsX2V4cGVjdGVkWzEwMF0gPSAoCisgICAgICAgICAgICAiVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIlN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgIgorICAgICAgICAgICAgICAgICJpbXBvc3NpYmxlIGZvciB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZVxuIgorICAgICAgICAgICAgICAiIGRvbmUgc28gbXVjaCBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZSB3ZSBhcmUgbm93IHF1YWxpZmllZCAiCisgICAgICAgICAgICAgICAgInRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy5cbiIKKyAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAiTm9uZVxuIikKKworICAgIGxlbmd0aF9wYXJhbXMgPSBbbiBmb3IgbiBpbiByZWZvbGRfbG9uZ19leHBlY3RlZF0KKworICAgIGRlZiBsZW5ndGhfYXNfbWF4aGVhZGVybGVuX3BhcmFtZXRlcihzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIG1heGhlYWRlcmxlbj1uLCBwb2xpY3k9c2VsZi5wb2xpY3kpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4X2xpbmVfbGVuZ3RoX3BvbGljeShzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9bikpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4aGVhZGVybGVuX3Bhcm1fb3ZlcnJpZGVzX3BvbGljeShzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIG1heGhlYWRlcmxlbj1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhfbGluZV9sZW5ndGhfd2l0aF9yZWZvbGRfbm9uZV9kb2VzX25vdF9mb2xkKHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKHJlZm9sZF9zb3VyY2U9J25vbmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xpbmVfbGVuZ3RoPW4pKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heF9saW5lX2xlbmd0aF93aXRoX3JlZm9sZF9hbGxfZm9sZHMoc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUocmVmb2xkX3NvdXJjZT0nYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9saW5lX2xlbmd0aD1uKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2FsbF9leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgdGVzdF9jcmxmX2NvbnRyb2xfdmlhX3BvbGljeShzZWxmKToKKyAgICAgICAgc291cmNlID0gIlN1YmplY3Q6IHRlc3RcclxuXHJcbnRlc3QgYm9keVxyXG4iCisgICAgICAgIGV4cGVjdGVkID0gc291cmNlCisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc291cmNlKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1wb2xpY3kuU01UUCkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X2ZsYXR0ZW5fbGluZXNlcF9vdmVycmlkZXNfcG9saWN5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAiU3ViamVjdDogdGVzdFxuXG50ZXN0IGJvZHlcbiIKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3VyY2UKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzb3VyY2UpKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXBvbGljeS5TTVRQKQorICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChleHBlY3RlZCkpCisKKworY2xhc3MgVGVzdEdlbmVyYXRvcihUZXN0R2VuZXJhdG9yQmFzZSwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBtc2dmdW5jID0gc3RhdGljbWV0aG9kKG1lc3NhZ2VfZnJvbV9zdHJpbmcpCisgICAgZ2VuY2xhc3MgPSBHZW5lcmF0b3IKKyAgICBpb2NsYXNzID0gaW8uU3RyaW5nSU8KKyAgICB0eXAgPSBzdHIKKworCitjbGFzcyBUZXN0Qnl0ZXNHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgbXNnZnVuYyA9IHN0YXRpY21ldGhvZChtZXNzYWdlX2Zyb21fYnl0ZXMpCisgICAgZ2VuY2xhc3MgPSBCeXRlc0dlbmVyYXRvcgorICAgIGlvY2xhc3MgPSBpby5CeXRlc0lPCisgICAgdHlwID0gbGFtYmRhIHNlbGYsIHg6IHguZW5jb2RlKCdhc2NpaScpCisKKyAgICBkZWYgdGVzdF9jdGVfdHlwZV83Yml0X2hhbmRsZXNfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAoIlN1YmplY3Q6IE1haW50ZW5hbnQgamUgdm91cyBwcsOpc2VudGUgbW9uICIKKyAgICAgICAgICAgICAgICAgImNvbGzDqGd1ZVxuXG4iKS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZXhwZWN0ZWQgPSAoJ1N1YmplY3Q6IE1haW50ZW5hbnQgamUgdm91cyA9P3Vua25vd24tOGJpdD9xPycKKyAgICAgICAgICAgICAgICAgICAgJ3ByPUMzPUE5c2VudGVfbW9uX2NvbGw9QzM9QThndWU/PVxuXG4nKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2J5dGVzKHNvdXJjZSkKKyAgICAgICAgcyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKGN0ZV90eXBlPSc3Yml0JykpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2N0ZV90eXBlXzdiaXRfdHJhbnNmb3Jtc184Yml0X2N0ZShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IGZvb0BiYXIuY29tCisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rCisgICAgICAgICAgICBNaW1lLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJsYXRpbi0xIgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCisgICAgICAgICAgICBvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKS5lbmNvZGUoJ2xhdGluMScpCisgICAgICAgIG1zZyA9IG1lc3NhZ2VfZnJvbV9ieXRlcyhzb3VyY2UpCisgICAgICAgIGV4cGVjdGVkID0gIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBmb29AYmFyLmNvbQorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luaworICAgICAgICAgICAgTWltZS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iaXNvLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgb2ggbD1FMCBsPUUwLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKGN0ZV90eXBlPSc3Yml0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2VwPSdcbicpKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmE4MWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0wLDAgKzEsMTUxNSBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MsIEdyb3VwCisKKworRElUVE8gPSBvYmplY3QoKQorCisKK2NsYXNzIFRlc3RIZWFkZXJSZWdpc3RyeShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X2FyYml0cmFyeV9uYW1lX3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9uYW1lX2Nhc2VfaWdub3JlZChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgIyBXaGl0ZWJveCBjaGVjayB0aGF0IHRlc3QgaXMgdmFsaWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignU3ViamVjdCcsIGZhY3RvcnkucmVnaXN0cnkpCisgICAgICAgIGggPSBmYWN0b3J5KCdTdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGNsYXNzIEZvb0Jhc2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2Jhc2VfY2xhc3Moc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShiYXNlX2NsYXNzPXNlbGYuRm9vQmFzZSkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vQmFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGNsYXNzIEZvb0RlZmF1bHQ6CisgICAgICAgIHBhcnNlID0gaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyLnBhcnNlCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2NsYXNzKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoZGVmYXVsdF9jbGFzcz1zZWxmLkZvb0RlZmF1bHQpCisgICAgICAgIGggPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb29EZWZhdWx0KQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVmYXVsdF9jbGFzc19vbmx5X292ZXJyaWRlc19kZWZhdWx0KHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoZGVmYXVsdF9jbGFzcz1zZWxmLkZvb0RlZmF1bHQpCisgICAgICAgIGggPSBmYWN0b3J5KCdzdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X2RvbnRfdXNlX2RlZmF1bHRfbWFwKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkodXNlX2RlZmF1bHRfbWFwPUZhbHNlKQorICAgICAgICBoID0gZmFjdG9yeSgnc3ViamVjdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9tYXBfdG9fdHlwZShzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgaDEgPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIGZhY3RvcnkubWFwX3RvX3R5cGUoJ2Zvb2JhcicsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgaDIgPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMSwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgxLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMiwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgyLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIpCisKKworY2xhc3MgVGVzdEhlYWRlckJhc2UoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorCisgICAgZGVmIG1ha2VfaGVhZGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZmFjdG9yeShuYW1lLCB2YWx1ZSkKKworCitjbGFzcyBUZXN0QmFzZUhlYWRlckZlYXR1cmVzKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGgpLCAndGhpcyBpcyBhIHRlc3QnKQorCisgICAgZGVmIHRlc3Rfc3Vic3RyKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaFs1OjddLCAnaXMnKQorCisgICAgZGVmIHRlc3RfaGFzX25hbWUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsICdzdWJqZWN0JykKKworICAgIGRlZiBfdGVzdF9hdHRyX3JvKHNlbGYsIGF0dHIpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2V0YXR0cihoLCBhdHRyLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X25hbWVfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oJ25hbWUnKQorCisgICAgZGVmIHRlc3RfZGVmZWN0c19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybygnZGVmZWN0cycpCisKKyAgICBkZWYgdGVzdF9kZWZlY3RzX2lzX3R1cGxlKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHMsIHR1cGxlKQorICAgICAgICAjIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCB0cnVlIHdoZW4gdGhlcmUgYXJlIGRlZmVjdHMuCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHMsIHR1cGxlKQorCisgICAgIyBYWFg6IEZJWE1FCisgICAgI2RlZiB0ZXN0X0NSX2luX3ZhbHVlKHNlbGYpOgorICAgICMgICAgIyBYWFg6IHRoaXMgYWxzbyByZS1yYWlzZXMgdGhlIGlzc3VlIG9mIGVtYmVkZGVkIGhlYWRlcnMsCisgICAgIyAgICAjIG5lZWQgdGVzdCBhbmQgc29sdXRpb24gZm9yIHRoYXQuCisgICAgIyAgICB2YWx1ZSA9ICdccicuam9pbihbJ3RoaXMgaXMnLCAnIGEgdGVzdCddKQorICAgICMgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCB2YWx1ZSkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgdmFsdWUpCisgICAgIyAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfUkZDMjA0N192YWx1ZV9kZWNvZGVkKHNlbGYpOgorICAgICAgICB2YWx1ZSA9ICc9P3V0Zi04P3E/dGhpc19pc19hX3Rlc3Q/PScKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAndGhpcyBpcyBhIHRlc3QnKQorCisKK2NsYXNzIFRlc3REYXRlSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRhdGVzdHJpbmcgPSAnU3VuLCAyMyBTZXAgMjAwMSAyMDoxMDo1NSAtMDcwMCcKKyAgICB1dGNvZmZzZXQgPSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9LTcpCisgICAgdHogPSBkYXRldGltZS50aW1lem9uZSh1dGNvZmZzZXQpCisgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgyMDAxLCA5LCAyMywgMjAsIDEwLCA1NSwgdHppbmZvPXR6KQorCisgICAgZGVmIHRlc3RfcGFyc2VfZGF0ZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZS51dGNvZmZzZXQoKSwgc2VsZi51dGNvZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X2RhdGVfaGVhZGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlRGF0ZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1heF9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3RfcmVzZW50X2RhdGVfaGVhZGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdyZXNlbnQtZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkRhdGVIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYXhfY291bnQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X25vX3ZhbHVlX2lzX2RlZmVjdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0c1swXSwgZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKQorCisgICAgZGVmIHRlc3RfZGF0ZXRpbWVfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmRhdGV0aW1lID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X3NldF9kYXRlX2hlYWRlcl9mcm9tX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ0RhdGUnXSA9IHNlbGYuZHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydEYXRlJ10sIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydEYXRlJ10uZGF0ZXRpbWUsIHNlbGYuZHQpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdENvbnRlbnRUeXBlSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjb250ZW50X3R5cGVfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzKToKKyAgICAgICAgbCA9IGxlbihhcmdzKQorICAgICAgICBwYXJtZGljdCA9IGFyZ3NbMF0gaWYgbD4wIGVsc2Uge30KKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzFdIGlmIGw+MSBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1syXSBpZiBsPjIgYW5kIGFyZ3NbMl0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LVR5cGU6JyArICcgJyBpZiBzb3VyY2UgZWxzZSAnJworICAgICAgICBmb2xkZWQgPSBhcmdzWzNdIGlmIGw+MyBlbHNlIGhlYWRlciArIHNvdXJjZSArICdcbicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmNvbnRlbnRfdHlwZSwgY29udGVudF90eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWFpbnR5cGUsIG1haW50eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguc3VidHlwZSwgc3VidHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnBhcmFtcywgcGFybWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjb250ZW50X3R5cGVfcGFyYW1zID0geworCisgICAgICAgICMgRXhhbXBsZXMgZnJvbSBSRkMgMjA0NS4KKworICAgICAgICAnUkZDXzIwNDVfMSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpIChQbGFpbiB0ZXh0KScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30pLAorCisgICAgICAgICMgUkZDIDIwNDUgNS4yIHNheXMgc3ludGFjdGljYWxseSBpbnZhbGlkIHZhbHVlcyBhcmUgdG8gYmUgdHJlYXRlZCBhcworICAgICAgICAjIHRleHQvcGxhaW4uCisKKyAgICAgICAgJ25vX3N1YnR5cGVfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ3RleHQvJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdub19zbGFzaF9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdqdW5rX3RleHRfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJzxjcmF6eSAic3R1ZmYiPicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAndG9vX21hbnlfc2xhc2hlc19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZy9mb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgIyBCdXQgdW5rbm93biBuYW1lcyBhcmUgT0suICBXZSBjb3VsZCBtYWtlIG5vbi1JQU5BIG5hbWVzIGEgZGVmZWN0LCBidXQKKyAgICAgICAgIyBieSBub3QgZG9pbmcgc28gd2UgbWFrZSBvdXJzZWx2ZXMgZnV0dXJlIHByb29mLiAgVGhlIGZhY3QgdGhhdCB0aGV5CisgICAgICAgICMgYXJlIHVua25vd24gd2lsbCBiZSBkZXRlY3RhYmxlIGJ5IHRoZSBmYWN0IHRoYXQgdGhleSBkb24ndCBhcHBlYXIgaW4KKyAgICAgICAgIyB0aGUgbWltZV9yZWdpc3RyeS4uLmFuZCB0aGUgYXBwbGljYXRpb24gaXMgZnJlZSB0byBleHRlbmQgdGhhdCBsaXN0CisgICAgICAgICMgdG8gaGFuZGxlIHRoZW0gZXZlbiBpZiB0aGUgY29yZSBsaWJyYXJ5IGRvZXNuJ3QuCisKKyAgICAgICAgJ3Vua25vd25fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ2JhZC9uYW1lcycsCisgICAgICAgICAgICAnYmFkL25hbWVzJywKKyAgICAgICAgICAgICdiYWQnLAorICAgICAgICAgICAgJ25hbWVzJyksCisKKyAgICAgICAgIyBUaGUgY29udGVudCB0eXBlIGlzIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBDRldTIGlzIGlnbm9yZWQuCisKKyAgICAgICAgJ21peGVkX2Nhc2VfY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ0ltQWdlL0pQZWcnLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJyksCisKKyAgICAgICAgJ3NwYWNlc19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnICB0ZXh0ICAvICBwbGFpbiAgJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicpLAorCisgICAgICAgICdjZndzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICcoZm9vKSB0ZXh0IChiYXIpLyhiYXopcGxhaW4oc3R1ZmYpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicpLAorCisgICAgICAgICMgdGVzdCBzb21lIHBhcmFtZXRlcnMgKG1vcmUgdGVzdHMgY291bGQgYmUgYWRkZWQgZm9yIHBhcmFtZXRlcnMKKyAgICAgICAgIyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgY29udGVudCB0eXBlcywgYnV0IHNpbmNlIHBhcmFtZXRlciBwYXJzaW5nIGlzCisgICAgICAgICMgZ2VuZXJpYyB0aGV5IHdvdWxkIGJlIHJlZHVuZGFudCBmb3IgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24pLgorCisgICAgICAgICdjaGFyc2V0X3BhcmFtJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04J30pLAorCisgICAgICAgICdjYXBpdGFsaXplZF9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9IlVTLUFTQ0lJIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ1VTLUFTQ0lJJ30pLAorCisgICAgICAgICd1bmtub3duX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0iZk9vIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ2ZPbyd9KSwKKworICAgICAgICAnY2FwaXRhbGl6ZWRfY2hhcnNldF9wYXJhbV9uYW1lX2FuZF9jb21tZW50JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IChpbnRlcmplY3Rpb24pIENoYXJzZXQ9InV0Zi04IicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICMgU2hvdWxkIHRoZSBwYXJhbWV0ZXIgbmFtZSBiZSBsb3dlcmNhc2VkIGhlcmU/CisgICAgICAgICAgICAndGV4dC9wbGFpbjsgQ2hhcnNldD0idXRmLTgiJyksCisKKyAgICAgICAgIyBTaW5jZSB0aGlzIGlzIHByZXR0eSBtdWNoIHRoZSB1ci1taW1laGVhZGVyLCB3ZSdsbCBwdXQgYWxsIHRoZSB0ZXN0cworICAgICAgICAjIHRoYXQgZXhlcmNpc2UgdGhlIHBhcmFtZXRlciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGhlcmUuCisgICAgICAgICMKKyAgICAgICAgIyBYWFg6IHF1ZXN0aW9uOiBpcyBtaW5pbWFsIHF1b3RpbmcgcHJlZmVycmVkPworCisgICAgICAgICd1bnF1b3RlZF9wYXJhbV92YWx1ZSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT1mb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnZm9vJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iZm9vIicpLAorCisgICAgICAgICdwYXJhbV92YWx1ZV93aXRoX3RzcGVjaWFscyc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iKGJhcilmb28gYmx1ZSInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnKGJhcilmb28gYmx1ZSd9KSwKKworICAgICAgICAncGFyYW1fd2l0aF9leHRyYV9xdW90ZWRfd2hpdGVzcGFjZSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iICBhICAgICBsb29uZyAgd2F5IFx0IGhvbWUgICAiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J3RpdGxlJzogJyAgYSAgICAgbG9vbmcgIHdheSBcdCBob21lICAgJ30pLAorCisgICAgICAgICdiYWRfcGFyYW1zJzogKAorICAgICAgICAgICAgJ2JsYXJnOyBiYXo7IGJvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydiYXonOiAnJywgJ2Jvbyc6ICcnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMyksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfcGFyYW1fZXF1YWxzJzogKAorICAgICAgICAgICAgJ011bHRpcGFydC9taXhlZDsgYm91bmRhcnkgPSAiQ1BJTVNTTVRQQzA2cDVmM3RHIicsCisgICAgICAgICAgICAnbXVsdGlwYXJ0L21peGVkJywKKyAgICAgICAgICAgICdtdWx0aXBhcnQnLAorICAgICAgICAgICAgJ21peGVkJywKKyAgICAgICAgICAgIHsnYm91bmRhcnknOiAnQ1BJTVNTTVRQQzA2cDVmM3RHJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSJDUElNU1NNVFBDMDZwNWYzdEciJyksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfc2VtaXMnOiAoCisgICAgICAgICAgICAoJ2ltYWdlL2pwZWc7IG5hbWU9IndpYmJsZS5KUEciIDsgeC1tYWMtdHlwZT0iNEE1MDQ1NDciIDsgJworICAgICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSInKSwKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnd2liYmxlLkpQRycsCisgICAgICAgICAgICAgJ3gtbWFjLXR5cGUnOiAnNEE1MDQ1NDcnLAorICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yJzogJzQ3NEI0RjRFJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICgnaW1hZ2UvanBlZzsgbmFtZT0id2liYmxlLkpQRyI7IHgtbWFjLXR5cGU9IjRBNTA0NTQ3IjsgJworICAgICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSInKSwKKyAgICAgICAgICAgICMgWFhYOiBpdCBjb3VsZCBiZSB0aGF0IHdlIHdpbGwgZXZlbnR1YWxseSBwcmVmZXIgdG8gZm9sZCBzdGFydGluZworICAgICAgICAgICAgIyBmcm9tIHRoZSBkZWNvZGVkIHZhbHVlLCBpbiB3aGljaCBjYXNlIHRoZXNlIHNwYWNlcyBhbmQgc2ltaWxhcgorICAgICAgICAgICAgIyBzcGFjZXMgaW4gb3RoZXIgdGVzdHMgd2lsbCBiZSB3cm9uZy4KKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBpbWFnZS9qcGVnOyBuYW1lPSJ3aWJibGUuSlBHIiA7ICcKKyAgICAgICAgICAgICAgICAneC1tYWMtdHlwZT0iNEE1MDQ1NDciIDtcbicKKyAgICAgICAgICAgICAnIHgtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdzZW1pc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ0ppbSZhbXA7JmFtcDtKaWxsJ30pLAorCisgICAgICAgICdzaW5nbGVfcXVvdGVzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwnQm9iXCcgSmlsbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJKaW0gJ0JvYicgSmlsbCJ9KSwKKworICAgICAgICAnZG91YmxlX3F1b3Rlc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCJCb2JcIiBKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ0ppbSAiQm9iIiBKaWxsJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwiQm9iXCIgSmlsbCInKSwKKworICAgICAgICAjIFhYWDogVGhpcyB0ZXN0IHdvcmtzIGV4Y2VwdCBmb3IgdGhlIHJlZm9sZGluZyBvZiB0aGUgaGVhZGVyLiAgSSdsbAorICAgICAgICAjIGRlYWwgd2l0aCB0aGF0IGJ1ZyB3aGVuIEkgZGVhbCB3aXRoIHRoZSBvdGhlciBmb2xkaW5nIGJ1Z3MuCisgICAgICAgICMnbm9uX2FzY2lpX2luX3BhcmFtcyc6ICgKKyAgICAgICAgIyAgICAoJ2Zvb1x4YTcvYmFyOyBiXHhhN3I9dHdvOyAnCisgICAgICAgICMgICAgICAgICdiYXo9dGhyXHhhN2UnLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpKSwKKyAgICAgICAgIyAgICAnZm9vXHVGRkZEL2JhcicsCisgICAgICAgICMgICAgJ2Zvb1x1RkZGRCcsCisgICAgICAgICMgICAgJ2JhcicsCisgICAgICAgICMgICAgeydiXHVGRkZEcic6ICd0d28nLCAnYmF6JzogJ3Roclx1RkZGRGUnfSwKKyAgICAgICAgIyAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKjMsCisgICAgICAgICMgICAgJ2Zvb++/vS9iYXI7IGLvv71yPSJ0d28iOyBiYXo9InRocu+/vWUiJywKKyAgICAgICAgIyAgICApLAorCisgICAgICAgICMgUkZDIDIyMzEgcGFyYW1ldGVyIHRlc3RzLgorCisgICAgICAgICdyZmMyMjMxX3NlZ21lbnRlZF9ub3JtYWxfdmFsdWVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWUqMD0iYWJjIjsgbmFtZSoxPSIuaHRtbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJhYmMuaHRtbCJ9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iYWJjLmh0bWwiJyksCisKKyAgICAgICAgJ3F1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZSc6ICgKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgYmFyKjA9ImJhelwiZm9vYmFyIjsgYmFyKjE9IlwiYmF6IicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeydiYXInOiAnYmF6ImZvb2JhciJiYXonfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBiYXI9ImJhelwiZm9vYmFyXCJiYXoiJyksCisKKyAgICAgICAgIyBYWFg6IFRoaXMgdGVzdCB3b3JrcyBleGNlcHQgZm9yIHRoZSByZWZvbGRpbmcgb2YgdGhlIGhlYWRlci4gIEknbGwKKyAgICAgICAgIyBkZWFsIHdpdGggdGhhdCBidWcgd2hlbiBJIGRlYWwgd2l0aCB0aGUgb3RoZXIgZm9sZGluZyBidWdzLgorICAgICAgICAjJ25vbl9hc2NpaV9yZmMyMjMxX3ZhbHVlJzogKAorICAgICAgICAjICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsgJworICAgICAgICAjICAgICAidGl0bGUqPXVzLWFzY2lpJ2VuJ1RoaXMlMjBpcyUyMCIKKyAgICAgICAgIyAgICAgJ25vdCUyMGZceGE3bicpLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAjICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgIyAgICAndGV4dCcsCisgICAgICAgICMgICAgJ3BsYWluJywKKyAgICAgICAgIyAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknLCAndGl0bGUnOiAnVGhpcyBpcyBub3QgZlx1RkZGRG4nfSwKKyAgICAgICAgIyAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgIyAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIjsgdGl0bGU9IlRoaXMgaXMgbm90IGbvv71uIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0Kj1hbnNpLXgzLjQtMTk2OFwnXCd1cy1hc2NpaScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAjIFRoaXMgZm9sbG93cyB0aGUgUkZDOiBubyBkb3VibGUgcXVvdGVzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcy4KKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9ub19kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjAqPScnVGhpcyUyMGlzJTIwOyIKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjEqPSUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMDsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzICoqKmZ1bioqKiBpcyBpdCBub3QucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdG5hbWUqMCo9XCdcJ1RoaXMlMjBpcyUyMDtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMDtcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhbHNvIGhhbmRsZSBpdCBpZiB0aGVyZSBhcmUgc3B1cnJpb3VzIGRvdWJsZSBxb3V0ZXMuCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJ1cy1hc2NpaVwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9InVzLWFzY2lpXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsnCisgICAgICAgICAgICAgICAnXHR0aXRsZSowKj0idXMtYXNjaWlcJ2VuXCdUaGlzJTIwaXMlMjByZWFsbHklMjAiOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjI9ImlzblwndCBpdCEiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJywgJ3RpdGxlJzogIlRoaXMgaXMgcmVhbGx5ICoqKmZ1bioqKiBpc24ndCBpdCEifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiOyAnCisgICAgICAgICAgICAgICAndGl0bGU9IlRoaXMgaXMgcmVhbGx5ICoqKmZ1bioqKiBpc25cJ3QgaXQhIicpLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7XG4nCisgICAgICAgICAgICAgJ1x0dGl0bGUqMCo9InVzLWFzY2lpXCdlblwnVGhpcyUyMGlzJTIwcmVhbGx5JTIwIjtcbicKKyAgICAgICAgICAgICAnXHR0aXRsZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdHRpdGxlKjI9ImlzblwndCBpdCEiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luX3ZhbHVlX3dpdGhfY2hhcnNldF9hbmRfbGFuZyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICJcdG5hbWUqMCo9XCJ1cy1hc2NpaSdlbi11cydGcmFuaydzXCI7IG5hbWUqMSo9XCIgRG9jdW1lbnRcIiIpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogIkZyYW5rJ3MgRG9jdW1lbnQifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iRnJhbmtcJ3MgRG9jdW1lbnQiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyI7XG4nCisgICAgICAgICAgICAgJyBuYW1lKjEqPSIgRG9jdW1lbnQiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luX25vbl9lbmNvZGVkX3ZhbHVlJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgIlx0bmFtZSowPVwidXMtYXNjaWknZW4tdXMnRnJhbmsnc1wiOyBuYW1lKjE9XCIgRG9jdW1lbnRcIiIpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3MgRG9jdW1lbnQifSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIERvY3VtZW50IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyI7XG4nCisgICAgICAgICAgICAgJyBuYW1lKjE9IiBEb2N1bWVudCJcbicpLAorICAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBOQU1FKjAqPWVuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCcsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ2VuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBOQU1FPSJlbmdsaXNoX2lzX3RoZV9kZWZhdWx0Lmh0bWwiJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9ub19jaGFyc2V0JzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIFhYWDogc2VlIGJlbG93Li4udGhlIGZpcnN0IG5hbWUgbGluZSBoZXJlIHNob3VsZCBiZSAqMCBub3QgKjAqLgorICAgICAgICAncmZjMjIzMV9wYXJ0bHlfZW5jb2RlZCc6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfcGFydGx5X2VuY29kZWRfMic6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwaXMgaXQucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMGlzIGl0LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfdW5rbm93bl9jaGFyc2V0X3RyZWF0ZWRfYXNfYXNjaWknOiAoCisgICAgICAgICAgICAidGV4dC9wbGFpbjsgbmFtZSowKj1ib2d1cyd4eCdhc2NpaV9pc190aGVfZGVmYXVsdCIsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ2FzY2lpX2lzX3RoZV9kZWZhdWx0J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJhc2NpaV9pc190aGVfZGVmYXVsdCInKSwKKworICAgICAgICAncmZjMjIzMV9iYWRfY2hhcmFjdGVyX2luX2NoYXJzZXRfcGFyYW1ldGVyX3ZhbHVlJzogKAorICAgICAgICAgICAgInRleHQvcGxhaW47IGNoYXJzZXQqPWFzY2lpJyd1dGYtOCVFMiU4MCU5RCIsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04XHVGRkZEXHVGRkZEXHVGRkZEJ30sCisgICAgICAgICAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04XHVGRkZEXHVGRkZEXHVGRkZEIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxPSIgRG9jdW1lbnQiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogJ015IERvY3VtZW50IEZvciBZb3UnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9Ik15IERvY3VtZW50IEZvciBZb3UiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxPSIgRG9jdW1lbnQiO1x0bmFtZSoyPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIE15IHJlYWRpbmcgb2YgdGhlIFJGQyBpcyB0aGF0IHRoaXMgaXMgYW4gaW52YWxpZCBoZWFkZXIuICBUaGUgUkZDCisgICAgICAgICMgc2F5cyB0aGF0IGlmIGNoYXJzZXQgYW5kIGxhbmd1YWdlIGluZm9ybWF0aW9uIGlzIGdpdmVuLCB0aGUgZmlyc3QKKyAgICAgICAgIyBzZWdtZW50ICptdXN0KiBiZSBlbmNvZGVkLgorICAgICAgICAncmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowPXVzLWFzY2lpXCdlbi11c1wnTXk7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogJ015IERvY3VtZW50IEZvciBZb3UnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0bmFtZSowPXVzLWFzY2lpJ2VuLXVzJ015O1x0IgorICAgICAgICAgICAgICAgICMgWFhYOiB0aGUgbmV3bGluZSBpcyBpbiB0aGUgd3JvbmcgcGxhY2UsIGNvbWUgYmFjayBhbmQgZml4CisgICAgICAgICAgICAgICAgIyB0aGlzIHdoZW4gdGhlIHJlc3Qgb2YgdGVzdHMgcGFzcy4KKyAgICAgICAgICAgICAgICAnbmFtZSoxKj0iIERvY3VtZW50IlxuOycKKyAgICAgICAgICAgICAnXHRuYW1lKjIqPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIFhYWDogSSB3b3VsZCBzYXkgdGhpcyBvbmUgc2hvdWxkIGRlZmF1bHQgdG8gYXNjaWkvZW4gZm9yIHRoZQorICAgICAgICAjICJlbmNvZGVkIiBzZWdtZW50LCBzaW5jZSB0aGUgdGhlIGZpcnN0IHNlZ21lbnQgaXMgbm90IGVuY29kZWQgYW5kIGlzCisgICAgICAgICMgaW4gZG91YmxlIHF1b3RlcywgbWFraW5nIHRoZSB2YWx1ZSBhIHZhbGlkIG5vbi1lbmNvZGVkIHN0cmluZy4gIFRoZQorICAgICAgICAjIG9sZCBwYXJzZXIgZGVjb2RlcyB0aGlzIGp1c3QgbGlrZSB0aGUgcHJldmlvdXMgY2FzZSwgd2hpY2ggbWF5IGJlIHRoZQorICAgICAgICAjIGJldHRlciBQb3N0ZWwgcnVsZSwgYnV0IGNvdWxkIGVxdWFsbHkgcmVzdWx0IGluIGJvcmtpbmcgaGVhZGVycyB0aGF0CisgICAgICAgICMgaW50ZW50aWFsbHkgaGF2ZSBxdW90ZWQgcXVvdGVzIGluIHRoZW0uICBXZSBjb3VsZCBnZXQgdGhpcyA5OCUgcmlnaHQKKyAgICAgICAgIyBpZiB3ZSB0cmVhdCBpdCBhcyBhIHF1b3RlZCBzdHJpbmcgKnVubGVzcyogaXQgbWF0Y2hlcyB0aGUKKyAgICAgICAgIyBjaGFyc2V0J2xhbmcndmFsdWUgcGF0dGVybiBleGFjdGx5ICphbmQqIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQorICAgICAgICAjIGVuY29kZWQgc2VnbWVudC4gIEltcGxlbWVudGluZyB0aGF0IGFsZ29yaXRobSB3aWxsIHJlcXVpcmUgc29tZQorICAgICAgICAjIHJlZmFjdG9yaW5nLCBzbyBJIGhhdmVuJ3QgZG9uZSBpdCAoeWV0KS4KKworICAgICAgICAncmZjMjIzMV9xb3V0ZWRfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICdcdG5hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogInVzLWFzY2lpJ2VuLXVzJ015IERvY3VtZW50IEZvciBZb3UifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0idXMtYXNjaWlcJ2VuLXVzXCdNeSBEb2N1bWVudCBGb3IgWW91IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iIERvY3VtZW50IjtcdG5hbWUqMio9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RDb250ZW50VHJhbnNmZXJFbmNvZGluZyhUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgY3RlX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBjdGUsCisgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzBdIGlmIGw+MCBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1sxXSBpZiBsPjEgYW5kIGFyZ3NbMV0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOicgKyAnICcgaWYgc291cmNlIGVsc2UgJycKKyAgICAgICAgZm9sZGVkID0gYXJnc1syXSBpZiBsPjIgZWxzZSBoZWFkZXIgKyBzb3VyY2UgKyAnXG4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguY3RlLCBjdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjdGVfcGFyYW1zID0geworCisgICAgICAgICdSRkNfMjE4M18xJzogKAorICAgICAgICAgICAgJ2Jhc2U2NCcsCisgICAgICAgICAgICAnYmFzZTY0JywpLAorCisgICAgICAgICdub192YWx1ZSc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJzdiaXQnLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0sCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOlxuJywKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ2p1bmtfYWZ0ZXJfY3RlJzogKAorICAgICAgICAgICAgJzdiaXQgYW5kIGEgYnVuY2ggbW9yZScsCisgICAgICAgICAgICAnN2JpdCcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudERpc3Bvc2l0aW9uKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjb250ZW50X2Rpc3BfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgcGFybWRpY3QgPSBhcmdzWzBdIGlmIGw+MCBlbHNlIHt9CisgICAgICAgIGRlZmVjdHMgPSAgYXJnc1sxXSBpZiBsPjEgZWxzZSBbXQorICAgICAgICBkZWNvZGVkID0gIGFyZ3NbMl0gaWYgbD4yIGFuZCBhcmdzWzJdIGlzIG5vdCBESVRUTyBlbHNlIHNvdXJjZQorICAgICAgICBoZWFkZXIgPSAnQ29udGVudC1EaXNwb3NpdGlvbjonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbM10gaWYgbD4zIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmNvbnRlbnRfZGlzcG9zaXRpb24sIGNvbnRlbnRfZGlzcG9zaXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5wYXJhbXMsIHBhcm1kaWN0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgZm9sZGVkKQorCisgICAgY29udGVudF9kaXNwX3BhcmFtcyA9IHsKKworICAgICAgICAjIEV4YW1wbGVzIGZyb20gUkZDIDIxODMuCisKKyAgICAgICAgJ1JGQ18yMTgzXzEnOiAoCisgICAgICAgICAgICAnaW5saW5lJywKKyAgICAgICAgICAgICdpbmxpbmUnLCksCisKKyAgICAgICAgJ1JGQ18yMTgzXzInOiAoCisgICAgICAgICAgICAoJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPWdlbm9tZS5qcGVnOycKKyAgICAgICAgICAgICAnICBtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCI7JyksCisgICAgICAgICAgICAnYXR0YWNobWVudCcsCisgICAgICAgICAgICB7J2ZpbGVuYW1lJzogJ2dlbm9tZS5qcGVnJywKKyAgICAgICAgICAgICAnbW9kaWZpY2F0aW9uLWRhdGUnOiAnV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAoJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPSJnZW5vbWUuanBlZyI7ICcKKyAgICAgICAgICAgICAgICAgJ21vZGlmaWNhdGlvbi1kYXRlPSJXZWQsIDEyIEZlYiAxOTk3IDE2OjI5OjUxIC0wNTAwIicpLAorICAgICAgICAgICAgKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1nZW5vbWUuanBlZztcbicKKyAgICAgICAgICAgICAnICBtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCI7XG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ25vX3ZhbHVlJzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb246XG4nKSwKKworICAgICAgICAnaW52YWxpZF92YWx1ZSc6ICgKKyAgICAgICAgICAgICdhYi4vaycsCisgICAgICAgICAgICAnYWIuJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ2ludmFsaWRfdmFsdWVfd2l0aF9wYXJhbXMnOiAoCisgICAgICAgICAgICAnYWIuL2s7IGZpbGVuYW1lPSJmb28iJywKKyAgICAgICAgICAgICdhYi4nLAorICAgICAgICAgICAgeydmaWxlbmFtZSc6ICdmb28nfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RNSU1FVmVyc2lvbkhlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgdmVyc2lvbl9zdHJpbmdfYXNfTUlNRV9WZXJzaW9uKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlY3RzKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ01JTUUtVmVyc2lvbicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudmVyc2lvbiwgdmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1ham9yLCBtYWpvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1pbm9yLCBtaW5vcikKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBpZiBzb3VyY2U6CisgICAgICAgICAgICBzb3VyY2UgPSAnICcgKyBzb3VyY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdNSU1FLVZlcnNpb246JyArIHNvdXJjZSArICdcbicpCisKKyAgICB2ZXJzaW9uX3N0cmluZ19wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIHRoZSBSRkMuCisKKyAgICAgICAgJ1JGQ18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzMnOiAoCisgICAgICAgICAgICAnKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpIDEuMCcsCisgICAgICAgICAgICAnKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpIDEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV80JzogKAorICAgICAgICAgICAgJzEuKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpMCcsCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgIyBPdGhlciB2YWxpZCB2YWx1ZXMuCisKKyAgICAgICAgJzFfMSc6ICgKKyAgICAgICAgICAgICcxLjEnLAorICAgICAgICAgICAgJzEuMScsCisgICAgICAgICAgICAnMS4xJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICcyXzEnOiAoCisgICAgICAgICAgICAnMi4xJywKKyAgICAgICAgICAgICcyLjEnLAorICAgICAgICAgICAgJzIuMScsCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnd2hpdGVzcGFjZSc6ICgKKyAgICAgICAgICAgICcxIC4wJywKKyAgICAgICAgICAgICcxIC4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2xlYWRpbmdfdHJhaWxpbmdfd2hpdGVzcGFjZV9pZ25vcmVkJzogKAorICAgICAgICAgICAgJyAgMS4wICAnLAorICAgICAgICAgICAgJyAgMS4wICAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAjIFJlY292ZXJhYmxlIGludmFsaWQgdmFsdWVzLiAgV2UgY2FuIHJlY292ZXIgaGVyZSBvbmx5IGJlY2F1c2Ugd2UKKyAgICAgICAgIyBhbHJlYWR5IGhhdmUgYSB2YWxpZCB2YWx1ZSBieSB0aGUgdGltZSB3ZSBlbmNvdW50ZXIgdGhlIGdhcmJhZ2UuCisgICAgICAgICMgQW55d2hlcmUgZWxzZSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGdhcmJhZ2UgZW5kcy4KKworICAgICAgICAnbm9uX2NvbW1lbnRfZ2FyYmFnZV9hZnRlcic6ICgKKyAgICAgICAgICAgICcxLjAgPGFiYz4nLAorICAgICAgICAgICAgJzEuMCA8YWJjPicsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgIyBVbnJlY292ZXJhYmxlIGludmFsaWQgdmFsdWVzLiAgV2UgKmNvdWxkKiBhcHBseSBtb3JlIGhldXJpc3RpY3MgdG8KKyAgICAgICAgIyBnZXQgc29tZWluZyBvdXQgb2YgdGhlIGZpcnN0IHR3bywgYnV0IGRvaW5nIHNvIGlzIG5vdCB3b3J0aCB0aGUKKyAgICAgICAgIyBlZmZvcnQuCisKKyAgICAgICAgJ25vbl9jb21tZW50X2dhcmJhZ2VfYmVmb3JlJzogKAorICAgICAgICAgICAgJzxhYmM+IDEuMCcsCisgICAgICAgICAgICAnPGFiYz4gMS4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdub25fY29tbWVudF9nYXJiYWdlX2luc2lkZSc6ICgKKyAgICAgICAgICAgICcxLjxhYmM+MCcsCisgICAgICAgICAgICAnMS48YWJjPjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ3R3b19wZXJpb2RzJzogKAorICAgICAgICAgICAgJzEuLjAnLAorICAgICAgICAgICAgJzEuLjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJzJfeCc6ICgKKyAgICAgICAgICAgICcyLngnLAorICAgICAgICAgICAgJzIueCcsCisgICAgICAgICAgICBOb25lLCAgIyBUaGlzIGNvdWxkIGJlIDIsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBtYWtlIGl0IE5vbmUuCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdmb28nOiAoCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgICdmb28nLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ21pc3NpbmcnOiAoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0pLAorCisgICAgICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0QWRkcmVzc0hlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBleGFtcGxlX3BhcmFtcyA9IHsKKworICAgICAgICAnZW1wdHknOgorICAgICAgICAgICAgKCc8PicsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2FkZHJlc3Nfb25seSc6CisgICAgICAgICAgICAoJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ3ppcHB5JywKKyAgICAgICAgICAgICAncGluaGVhZC5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICduYW1lX2FuZF9hZGRyZXNzJzoKKyAgICAgICAgICAgICgnWmFwaHJvZCBCZWJsZWJydXggPHppcHB5QHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4IDx6aXBweUBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCcsCisgICAgICAgICAgICAgJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnemlwcHknLAorICAgICAgICAgICAgICdwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgICgnWmFwaHJvZCBCZWJsZWJydXggPCJmb28gYmFyIkBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCA8ImZvbyBiYXIiQHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4JywKKyAgICAgICAgICAgICAnImZvbyBiYXIiQHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnZm9vIGJhcicsCisgICAgICAgICAgICAgJ3BpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX3BhcmVuc19pbl9uYW1lJzoKKyAgICAgICAgICAgIChyJyJBIFwoU3BlY2lhbFwpIFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJyJBIChTcGVjaWFsKSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgICdBIChTcGVjaWFsKSBQZXJzb24nLAorICAgICAgICAgICAgICdwZXJzb25AZG9tLmFpbicsCisgICAgICAgICAgICAgJ3BlcnNvbicsCisgICAgICAgICAgICAgJ2RvbS5haW4nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfYmFja3NsYXNoZXNfaW5fbmFtZSc6CisgICAgICAgICAgICAociciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICByJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgIHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicsCisgICAgICAgICAgICAgJ3BlcnNvbkBkb20uYWluJywKKyAgICAgICAgICAgICAncGVyc29uJywKKyAgICAgICAgICAgICAnZG9tLmFpbicsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ25hbWVfd2l0aF9kb3QnOgorICAgICAgICAgICAgKCdKb2huIFguIERvZSA8anhkQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJyJKb2huIFguIERvZSIgPGp4ZEBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgICdKb2huIFguIERvZScsCisgICAgICAgICAgICAgJ2p4ZEBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ2p4ZCcsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX3N0cmluZ3NfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAoJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnZXNjYXBlZF9xdW90ZWRfc3RyaW5nc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgIChyJyJcImV4YW1wbGVcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgciciXCJleGFtcGxlXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIHInIlwiZXhhbXBsZVwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICByJyJleGFtcGxlIiBleGFtcGxlJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2VzY2FwZWRfZXNjYXBlc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgIChyJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjUsCisgICAgICAgICAgICAgciciXFxleGFtcGxlXFxcXCBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgciciXFxleGFtcGxlXFxcXCBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnc3BhY2VzX2luX3VucXVvdGVkX2xvY2FsX3BhcnRfY29sbGFwc2VkJzoKKyAgICAgICAgICAgICgnbWVyd29rICB3b2sgIEBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgICcibWVyd29rIHdvayJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICcibWVyd29rIHdvayJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdtZXJ3b2sgd29rJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdzcGFjZXNfYXJvdW5kX2RvdHNfaW5fbG9jYWxfcGFydF9yZW1vdmVkJzoKKyAgICAgICAgICAgICgnbWVyd29rLiB3b2sgLiAgd29rQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnbWVyd29rLndvay53b2tAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICdtZXJ3b2sud29rLndva0BleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ21lcndvay53b2sud29rJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgIH0KKworICAgICAgICAjIFhYWDogTmVlZCBtYW55IG1vcmUgZXhhbXBsZXMsIGFuZCBpbiBwYXJ0aWN1bGFyIHNvbWUgd2l0aCBuYW1lcyBpbgorICAgICAgICAjIHRyYWlsaW5nIGNvbW1lbnRzLCB3aGljaCBhcmVuJ3QgY3VycmVudGx5IGhhbmRsZWQuICBjb21tZW50cyBpbgorICAgICAgICAjIGdlbmVyYWwgYXJlIG5vdCBoYW5kbGVkIHlldC4KKworICAgIGRlZiBleGFtcGxlX2FzX2FkZHJlc3Moc2VsZiwgc291cmNlLCBkZWZlY3RzLCBkZWNvZGVkLCBkaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3NwZWMsIHVzZXJuYW1lLCBkb21haW4sIGNvbW1lbnQpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgYSA9IGguYWRkcmVzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFthXSwgbGlzdChoLmdyb3Vwc1swXS5hZGRyZXNzZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFthXSwgbGlzdChoLmFkZHJlc3NlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsIGRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgYWRkcl9zcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsIHVzZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCBkb21haW4pCisgICAgICAgICMgWFhYOiB3ZSBoYXZlIG5vIGNvbW1lbnQgc3VwcG9ydCB5ZXQuCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKGEuY29tbWVudCwgY29tbWVudCkKKworICAgIGRlZiBleGFtcGxlX2FzX2dyb3VwKHNlbGYsIHNvdXJjZSwgZGVmZWN0cywgZGVjb2RlZCwgZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfc3BlYywgdXNlcm5hbWUsIGRvbWFpbiwgY29tbWVudCk6CisgICAgICAgIHNvdXJjZSA9ICdmb286IHt9OycuZm9ybWF0KHNvdXJjZSkKKyAgICAgICAgZ2RlY29kZWQgPSAnZm9vOiB7fTsnLmZvcm1hdChkZWNvZGVkKSBpZiBkZWNvZGVkIGVsc2UgJ2Zvbzo7JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZ2RlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1swXS5hZGRyZXNzZXMsIGguYWRkcmVzc2VzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgYSA9IGguYWRkcmVzc2VzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCBkaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsIGFkZHJfc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgZG9tYWluKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgdmFsdWUgPSAoJ0ZyZWQgPGRpbnNkYWxlQHB5dGhvbi5vcmc+LCBmb29AZXhhbXBsZS5jb20sICcKKyAgICAgICAgICAgICAgICAgICAgJyJIYXJyeSBXLiBIYXN0aW5ncyIgPGhhc3R5QGV4YW1wbGUuY29tPicpCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgMykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzW2ldLmFkZHJlc3Nlc1swXSwgaC5hZGRyZXNzZXNbaV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzBdKSwgJ0ZyZWQgPGRpbnNkYWxlQHB5dGhvbi5vcmc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMV0pLCAnZm9vQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMl0pLAorICAgICAgICAgICAgJyJIYXJyeSBXLiBIYXN0aW5ncyIgPGhhc3R5QGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5hZGRyZXNzZXNbMl0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0hhcnJ5IFcuIEhhc3RpbmdzJykKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfYWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBleGFtcGxlcyA9IGxpc3Qoc2VsZi5leGFtcGxlX3BhcmFtcy52YWx1ZXMoKSkKKyAgICAgICAgc291cmNlID0gKCdkdW1teSBsaXN0OjssIGFub3RoZXI6IChlbXB0eSk7LCcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbOjRdXSkgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAgciciQSBcImxpc3RcIiI6ICcgKworICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbNDo2XV0pICsgJzssJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFswXSBmb3IgeCBpbiBleGFtcGxlc1s2Ol1dKQorICAgICAgICAgICAgKQorICAgICAgICAjIFhYWDogdGhlIGZhY3QgdGhhdCAoZW1wdHkpIGRpc2FwcGVhcnMgaGVyZSBpcyBhIHBvdGVudGlhbCBBUEkgZGVzaWduCisgICAgICAgICMgYnVnLiAgV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSB3YXkgdG8gcHJlc2VydmUgY29tbWVudHMuCisgICAgICAgIGV4cGVjdGVkID0gKCdkdW1teSBsaXN0OjssIGFub3RoZXI6OywgJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s6NF1dKSArICcsICcgKworICAgICAgICAgICAgICAgICByJyJBIFwibGlzdFwiIjogJyArCisgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s0OjZdXSkgKyAnOywgJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s2Ol1dKQorICAgICAgICAgICAgKQorCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnNwbGl0KCcsJyksIGV4cGVjdGVkLnNwbGl0KCcsJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgNyArIGxlbihleGFtcGxlcykgLSA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzBdLmRpc3BsYXlfbmFtZSwgJ2R1bW15IGxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzFdLmRpc3BsYXlfbmFtZSwgJ2Fub3RoZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzZdLmRpc3BsYXlfbmFtZSwgJ0EgImxpc3QiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5hZGRyZXNzZXMpLCBsZW4oZXhhbXBsZXMpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGguZ3JvdXBzW2krMl0uZGlzcGxheV9uYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5ncm91cHNbaSsyXS5hZGRyZXNzZXNbMF0pLCBleGFtcGxlc1tpXVsyXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNywgNyArIGxlbihleGFtcGxlcykgLSA2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGguZ3JvdXBzW2ldLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguZ3JvdXBzW2ldLmFkZHJlc3Nlc1swXSksIGV4YW1wbGVzW2ktMV1bMl0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihleGFtcGxlcykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbaV0pLCBleGFtcGxlc1tpXVsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5hZGRyZXNzZXNbaV0uYWRkcl9zcGVjLCBleGFtcGxlc1tpXVs0XSkKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgJ2FiY0B4eXouY29tJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmFkZHJlc3MgPSAnZm9vJworCisgICAgZGVmIHRlc3RfYWRkcmVzc2VzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5hZGRyZXNzZXMgPSAnZm9vJworCisgICAgZGVmIHRlc3RfZ3JvdXBzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5ncm91cHMgPSAnZm9vJworCisgICAgZGVmIHRlc3RfYWRkcmVzc2VzX3R5cGVzKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAnbWUgPHdob0BleGFtcGxlLmNvbT4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguYWRkcmVzc2VzLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguYWRkcmVzc2VzWzBdLCBBZGRyZXNzKQorCisgICAgZGVmIHRlc3RfZ3JvdXBzX3R5cGVzKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAnbWUgPHdob0BleGFtcGxlLmNvbT4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZ3JvdXBzLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZ3JvdXBzWzBdLCBHcm91cCkKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0FkZHJlc3Moc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIEFkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPicpCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9BZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3lvdScsICdiYXInLCAnZXhhbXBsZS5jb20nKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+LCB5b3UgPGJhckBleGFtcGxlLmNvbT4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fQWRkcmVzc19hbmRfR3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0FkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAoJ2JpbmcnLCBbQWRkcmVzcygnZml6JywgJ3onLCAnYi5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3ppZicsICdmJywgJ2MuY29tJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3lvdScsICdiYXInLCAnZXhhbXBsZS5jb20nKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+LCBiaW5nOiBmaXogPHpAYi5jb20+LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ppZiA8ZkBjLmNvbT47LCB5b3UgPGJhckBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTQwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAndG86IG1lIDxmb29AZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAgICAgJyBiaW5nOiBmaXogPHpAYi5jb20+LCB6aWYgPGZAYy5jb20+OyxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgeW91IDxiYXJAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fR3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0dyb3VwKCdiaW5nJywgW0FkZHJlc3MoJ2ZpeicsICd6JywgJ2IuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd6aWYnLCAnZicsICdjLmNvbScpXSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdiaW5nOiBmaXogPHpAYi5jb20+LCB6aWYgPGZAYy5jb20+OycpCisKKworY2xhc3MgVGVzdEFkZHJlc3NBbmRHcm91cChUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdF9hdHRyX3JvKHNlbGYsIG9iaiwgYXR0cik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2V0YXR0cihvYmosIGF0dHIsICdmb28nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19kaXNwbGF5X25hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAnZGlzcGxheV9uYW1lJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfdXNlcm5hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAndXNlcm5hbWUnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19kb21haW5fcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAnZG9tYWluJykKKworICAgIGRlZiB0ZXN0X2dyb3VwX2Rpc3BsYXlfbmFtZV9ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEdyb3VwKCdmb28nKSwgJ2Rpc3BsYXlfbmFtZScpCisKKyAgICBkZWYgdGVzdF9ncm91cF9hZGRyZXNzZXNfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhHcm91cCgnZm9vJyksICdhZGRyZXNzZXMnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19mcm9tX3VzZXJuYW1lX2RvbWFpbihzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnZm9vIDxiYXJAYmF6PicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Zyb21fYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnZm9vIDxiYXJAYmF6PicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3dpdGhfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcyhhZGRyX3NwZWM9J2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X251bGxfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICc8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnPD4nKQorCisgICAgZGVmIHRlc3RfZG9tYWluX29ubHkoc2VsZik6CisgICAgICAgICMgVGhpcyBpc24ndCByZWFsbHkgYSB2YWxpZCBhZGRyZXNzLgorICAgICAgICBhID0gQWRkcmVzcyhkb21haW49J2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnQGJ1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ0BidXp6JykKKworICAgIGRlZiB0ZXN0X3VzZXJuYW1lX29ubHkoc2VsZik6CisgICAgICAgICMgVGhpcyBpc24ndCByZWFsbHkgYSB2YWxpZCBhZGRyZXNzLgorICAgICAgICBhID0gQWRkcmVzcyh1c2VybmFtZT0nYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdidXp6JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9vbmx5KHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICc8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYnV6eiA8PicpCisKKyAgICBkZWYgdGVzdF9xdW90aW5nKHNlbGYpOgorICAgICAgICAjIElkZWFsbHkgd2UnZCBjaGVjayBldmVyeSBzcGVjaWFsIGluZGl2aWR1YWxseSwgYnV0IEknbSBub3QgdXAgZm9yCisgICAgICAgICMgd3JpdGluZyB0aGF0IG1hbnkgdGVzdHMuCisgICAgICAgIGEgPSBBZGRyZXNzKCdTYXJhIEouJywgJ2JhZCBuYW1lJywgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ1NhcmEgSi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYWQgbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICciYmFkIG5hbWUiQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICciU2FyYSBKLiIgPCJiYWQgbmFtZSJAZXhhbXBsZS5jb20+JykKKworICAgIGRlZiB0ZXN0X2lsOG4oc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCfDiXJpYycsICd3b2snLCAnZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ8OJcmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnd29rJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2V4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICd3b2tAZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICfDiXJpYyA8d29rQGV4w6BtcGxlLmNvbT4nKQorCisgICAgIyBYWFg6IHRoZXJlIGlzIGFuIEFQSSBkZXNpZ24gaXNzdWUgdGhhdCBuZWVkcyB0byBiZSBzb2x2ZWQgaGVyZS4KKyAgICAjZGVmIHRlc3Rfbm9uX2FzY2lpX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAjICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgIyAgICAgICAgQWRkcmVzcygnZm9vJywgJ3fFkWsnLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpX3VzZXJuYW1lX2luX2FkZHJfc3BlY19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9J3fFkWtAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgdXNlcm5hbWU9J2JpbmcnLCBhZGRyX3NwZWM9J2JhckBiYXonKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX2RvbWFpbl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGRvbWFpbj0nYmluZycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2FkZHJfc3BlY19hbmRfdXNlcm5hbWVfYW5kX2RvbWFpbl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIHVzZXJuYW1lPSdib25nJywgZG9tYWluPSdiaW5nJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X3NwYWNlX2luX2FkZHJfc3BlY191c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9ImJhZCBuYW1lQGV4YW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyX3NlcGNfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSJuYW1lQGV4W11hbXBsZS5jb20iKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnZm9vOjsnKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28nLCBhZGRyZXNzZXM9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2Zvbzo7JykKKworICAgIGRlZiB0ZXN0X251bGxfZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ05vbmU6OycpCisKKyAgICBkZWYgdGVzdF9ncm91cF93aXRoX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcnMgPSBbQWRkcmVzcygnYicsICdiJywgJ2MnKSwgQWRkcmVzcygnYScsICdiJywnYycpXQorICAgICAgICBnID0gR3JvdXAoJ2ZvbycsIGFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2ZvbzogYiA8YkBjPiwgYSA8YkBjPjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9hZGRyZXNzZXNfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhZGRycyA9IFtBZGRyZXNzKCdiJywgJ2InLCAnYycpLCBBZGRyZXNzKCdhJywgJ2InLCdjJyldCisgICAgICAgIGcgPSBHcm91cChhZGRyZXNzZXM9YWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnTm9uZTogYiA8YkBjPiwgYSA8YkBjPjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9vbmVfYWRkcmVzc19ub19kaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGFkZHJzID0gW0FkZHJlc3MoJ2InLCAnYicsICdjJyldCisgICAgICAgIGcgPSBHcm91cChhZGRyZXNzZXM9YWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnYiA8YkBjPicpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfcXVvdGluZyhzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28uYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2Zvby5iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJyJmb28uYmFyIjo7JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9ibGFua3Nfbm90X3F1b3RlZChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbyBiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2ZvbyBiYXI6OycpCisKKyAgICBkZWYgdGVzdF9zZXRfbWVzc2FnZV9oZWFkZXJfZnJvbV9hZGRyZXNzKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgJ2JhcicsICdleGFtcGxlLmNvbScpCisgICAgICAgIG0gPSBNZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbVsnVG8nXSA9IGEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLCAnZm9vIDxiYXJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLmFkZHJlc3NlcywgKGEsKSkKKworICAgIGRlZiB0ZXN0X3NldF9tZXNzYWdlX2hlYWRlcl9mcm9tX2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbyBiYXInKQorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ1RvJ10gPSBnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXSwgJ2ZvbyBiYXI6OycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXS5hZGRyZXNzZXMsIGcuYWRkcmVzc2VzKQorCisKK2NsYXNzIFRlc3RGb2xkaW5nKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB0ZXN0X3Nob3J0X3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJqZWN0OiB0aGlzIGlzIGEgdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2xvbmdfdW5zdHJ1Y3R1cmVkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICdUaGlzIGlzIGEgbG9uZyBoZWFkZXIgJworICAgICAgICAgICAgJ2xpbmUgdGhhdCB3aWxsIG5lZWQgdG8gYmUgZm9sZGVkIGludG8gdHdvIGxpbmVzICcKKyAgICAgICAgICAgICdhbmQgd2lsbCBkZW1vbnN0cmF0ZSBiYXNpYyBmb2xkaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTdWJqZWN0OiBUaGlzIGlzIGEgbG9uZyBoZWFkZXIgbGluZSB0aGF0IHdpbGwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGJlIGZvbGRlZCBpbnRvIHR3byBsaW5lc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgJyBhbmQgd2lsbCBkZW1vbnN0cmF0ZSBiYXNpYyBmb2xkaW5nXG4nKQorCisgICAgZGVmIHRlc3RfdW5zdHJ1Y3R1cmVkX3Nob3J0X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpcyBpcyBhIHNob3J0IGhlYWRlciAnCisgICAgICAgICAgICAndGhhdCB3aWxsIGJlIGZvbGRlZCBhbnl3YXknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgICAgU3ViamVjdDogdGhpcyBpcyBhCisgICAgICAgICAgICAgICAgIHNob3J0IGhlYWRlciB0aGF0CisgICAgICAgICAgICAgICAgIHdpbGwgYmUgZm9sZGVkCisgICAgICAgICAgICAgICAgIGFueXdheQorICAgICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF9zaW5nbGVfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksICdTdWJqZWN0OiB0ZXN0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfc2hvcnQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3Rlc3QgdGVzdCB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTdWJqZWN0OiB0ZXN0IHRlc3QgdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfb3Zlcmxvbmdfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmEnCisgICAgICAgICAgICAnc2luZ2xld29yZHRoYXR3b250Zml0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICAnU3ViamVjdDogdGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmFzaW5nbGV3b3JkdGhhdHdvbnRmaXRcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX3R3b19vdmVybG9uZ193b3JkcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmEnCisgICAgICAgICAgICAnc2luZ2xld29yZHRoYXR3b250Zml0IHBsdXNhbm90aGVydmVyeWxvbmd3b3JkdGhhdHdvbnRmaXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgICdTdWJqZWN0OiB0aGlzaXNhdmVyeWxvbmdsaW5lY29uc2lzdGluZ29mYXNpbmdsZXdvcmR0aGF0d29udGZpdFxuJworICAgICAgICAgICAgICAgICcgcGx1c2Fub3RoZXJ2ZXJ5bG9uZ3dvcmR0aGF0d29udGZpdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfc2xpZ2h0bHlfbG9uZ193b3JkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0aGlzbG9uZ3dvcmRpc2xlc3N0aGFubWF4bGluZWxlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0zNSkpLAorICAgICAgICAgICAgJ1N1YmplY3Q6XG4gdGhpc2xvbmd3b3JkaXNsZXNzdGhhbm1heGxpbmVsZW5cbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX2NvbW1hcyhzZWxmKToKKyAgICAgICAgIyBUaGUgb2xkIHdyYXBwZXIgd291bGQgZm9sZCB0aGlzIGF0IHRoZSBjb21tYXMuCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgIlRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvICIKKyAgICAgICAgICAgICJkZW1vbnN0cmF0ZSwgaW4gYSBmYWlybHkgc3VzaW5jdCB3YXksIHRoYXQgd2Ugbm93IGRvICIKKyAgICAgICAgICAgICJub3QgZ2l2ZSBhICwgc3BlY2lhbCB0cmVhdG1lbnQgaW4gdW5zdHJ1Y3R1cmVkIGhlYWRlcnMuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTYwKSksCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgICAgIFN1YmplY3Q6IFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGRlbW9uc3RyYXRlLCBpbiBhIGZhaXJseQorICAgICAgICAgICAgICAgICBzdXNpbmN0IHdheSwgdGhhdCB3ZSBub3cgZG8gbm90IGdpdmUgYSAsIHNwZWNpYWwgdHJlYXRtZW50CisgICAgICAgICAgICAgICAgIGluIHVuc3RydWN0dXJlZCBoZWFkZXJzLgorICAgICAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF9hZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdUbycsICciVGhlb2RvcmUgSC4gUGVyZmVjdCIgPHllc0BtYW4uY29tPiwgJworICAgICAgICAgICAgJyJNeSBhZGRyZXNzIGlzIHZlcnkgbG9uZyBiZWNhdXNlIG15IG5hbWUgaXMgbG9uZyIgPGZvb0BiYXIuY29tPiwgJworICAgICAgICAgICAgJyJPbmx5IEEuIEZyaWVuZCIgPG5vQHllcy5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiAiVGhlb2RvcmUgSC4gUGVyZmVjdCIgPHllc0BtYW4uY29tPiwKKyAgICAgICAgICAgICAiTXkgYWRkcmVzcyBpcyB2ZXJ5IGxvbmcgYmVjYXVzZSBteSBuYW1lIGlzIGxvbmciIDxmb29AYmFyLmNvbT4sCisgICAgICAgICAgICAgIk9ubHkgQS4gRnJpZW5kIiA8bm9AeWVzLmNvbT4KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF9kYXRlX2hlYWRlcihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0RhdGUnLCAnU2F0LCAyIEZlYiAyMDAyIDE3OjAwOjA2IC0wODAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiBTYXQsIDAyIEZlYiAyMDAyIDE3OjAwOjA2IC0wODAwXG4nKQorCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjM2Y4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorCisKK2NsYXNzIFRlc3QoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIHRlc3RfZXJyb3Jfb25fc2V0aXRlbV9pZl9tYXhfY291bnRfZXhjZWVkZWQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCIiKQorICAgICAgICBtWydUbyddID0gJ2FiY0B4eXonCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBtWydUbyddID0gJ3h5ekBhYmMnCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmQxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0wLDAgKzEsMzYgQEAKK2ltcG9ydCBpbworaW1wb3J0IGVtYWlsCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0Q3VzdG9tTWVzc2FnZShUZXN0RW1haWxCYXNlKToKKworICAgIGNsYXNzIE15TWVzc2FnZShNZXNzYWdlKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICBNeVBvbGljeSA9IFRlc3RFbWFpbEJhc2UucG9saWN5LmNsb25lKGxpbmVzZXA9J2JvbycpCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9nZXRzX3BvbGljeV9pZl9wb3NzaWJsZV9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiU3ViamVjdDogYm9ndXNcblxubXNnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTXlNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cuY2hlY2tfcG9saWN5LCBzZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZ2V0c19wb2xpY3lfaWZfcG9zc2libGVfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBzb3VyY2VfZmlsZSA9IGlvLlN0cmluZ0lPKCJTdWJqZWN0OiBib2d1c1xuXG5tc2dcbiIpCisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKHNvdXJjZV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk15TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1zZy5jaGVja19wb2xpY3ksIHNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFhYWCBhZGQgdGVzdHMgZm9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgTWVzc2FnZSBhcmcuCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BpY2tsZWFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhOGQyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5CkBAIC0wLDAgKzEsNzQgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgY29weQoraW1wb3J0IHBpY2tsZQoraW1wb3J0IGVtYWlsCitpbXBvcnQgZW1haWwubWVzc2FnZQorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RQaWNrbGVDb3B5SGVhZGVyKFRlc3RFbWFpbEJhc2UpOgorCisgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCisKKyAgICB1bnN0cnVjdHVyZWQgPSBoZWFkZXJfZmFjdG9yeSgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisKKyAgICBoZWFkZXJfcGFyYW1zID0geworICAgICAgICAnc3ViamVjdCc6ICgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpLAorICAgICAgICAnZnJvbSc6ICAgICgnZnJvbScsICAgICdmcm9kb0Btb3Jkb3IubmV0JyksCisgICAgICAgICd0byc6ICAgICAgKCd0bycsICAgICAgJ2E6IGtAYi5jb20sIHlAei5jb207LCBqQGYuY29tJyksCisgICAgICAgICdkYXRlJzogICAgKCdkYXRlJywgICAgJ1R1ZSwgMjkgTWF5IDIwMTIgMDk6MjQ6MjYgKzEwMDAnKSwKKyAgICAgICAgfQorCisgICAgZGVmIGhlYWRlcl9hc19kZWVwY29weShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGhlYWRlciA9IHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpCisgICAgICAgIGggPSBjb3B5LmRlZXBjb3B5KGhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksIHN0cihoZWFkZXIpKQorCisgICAgZGVmIGhlYWRlcl9hc19waWNrbGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBoZWFkZXIgPSBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKQorICAgICAgICBwID0gcGlja2xlLmR1bXBzKGhlYWRlcikKKyAgICAgICAgaCA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwgc3RyKGhlYWRlcikpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdFBpY2tsZUNvcHlNZXNzYWdlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyBNZXNzYWdlIG9iamVjdHMgYXJlIGEgc2VxdWVuY2UsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGVtIGEgb25lLXR1cGxlIGluCisgICAgIyBtc2dfcGFyYW1zIHNvIHRoZXkgZ2V0IHBhc3NlZCB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IG1ldGhvZCBhcyBhCisgICAgIyBzaW5nbGUgYXJndW1lbnQgaW5zdGVhZCBvZiBhcyBhIGxpc3Qgb2YgaGVhZGVycy4KKyAgICBtc2dfcGFyYW1zID0ge30KKworICAgICMgTm90ZTogdGhlcmUgd2lsbCBiZSBubyBjdXN0b20gaGVhZGVyIG9iamVjdHMgaW4gdGhlIHBhcnNlZCBtZXNzYWdlLgorICAgIG1zZ19wYXJhbXNbJ3BhcnNlZCddID0gKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcodGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMAorICAgICAgICBGcm9tOiBmcm9kb0Btb3Jkb3IubmV0CisgICAgICAgIFRvOiBiaWxib0B1bmRlcmhpbGwub3JnCisgICAgICAgIFN1YmplY3Q6IGhlbHAKKworICAgICAgICBJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLgorICAgICAgICAiIiIpLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCkKKworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXSA9IChlbWFpbC5tZXNzYWdlLk1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KSwpCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydEYXRlJ10gPSAnVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMCcKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ0Zyb20nXSA9ICdmcm9kb0Btb3Jkb3IubmV0JworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnVG8nXSA9ICdiaWxib0B1bmRlcmhpbGwub3JnJworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnU3ViamVjdCddID0gJ2hlbHAnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdLnNldF9wYXlsb2FkKCdJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLicpCisKKyAgICBkZWYgbXNnX2FzX2RlZXBjb3B5KHNlbGYsIG1zZyk6CisgICAgICAgIG1zZzIgPSBjb3B5LmRlZXBjb3B5KG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cyLmFzX3N0cmluZygpLCBtc2cuYXNfc3RyaW5nKCkpCisKKyAgICBkZWYgbXNnX2FzX3BpY2tsZShzZWxmLCBtc2cpOgorICAgICAgICBwID0gcGlja2xlLmR1bXBzKG1zZykKKyAgICAgICAgbXNnMiA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZzIuYXNfc3RyaW5nKCksIG1zZy5hc19zdHJpbmcoKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzYmQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTAsMCArMSwzMjIgQEAKK2ltcG9ydCBpbworaW1wb3J0IHR5cGVzCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVtYWlsLnBvbGljeQoraW1wb3J0IGVtYWlsLnBhcnNlcgoraW1wb3J0IGVtYWlsLmdlbmVyYXRvcgorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKKworZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgorICAgIGRlZmF1bHRzID0gYmFzZV9kZWZhdWx0cy5jb3B5KCkKKyAgICBkZWZhdWx0cy51cGRhdGUoZGlmZmVyZW5jZXMpCisgICAgcmV0dXJuIGRlZmF1bHRzCisKK2NsYXNzIFBvbGljeUFQSVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGxvbmdNZXNzYWdlID0gVHJ1ZQorCisgICAgIyBCYXNlIGRlZmF1bHQgdmFsdWVzLgorICAgIGNvbXBhdDMyX2RlZmF1bHRzID0geworICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogICAgICAgICAgNzgsCisgICAgICAgICdsaW5lc2VwJzogICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAorICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCisgICAgICAgIH0KKyAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCisgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCisgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ2hlYWRlcl9mYWN0b3J5JzogICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSwKKyAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKKyAgICAgICAgfSkKKworICAgICMgRm9yIGVhY2ggcG9saWN5IHVuZGVyIHRlc3QsIHdlIGdpdmUgaGVyZSB3aGF0IHdlIGV4cGVjdCB0aGUgZGVmYXVsdHMgdG8KKyAgICAjIGJlIGZvciB0aGF0IHBvbGljeS4gIFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gbWFrZSBkZWZhdWx0cyBpcyB0aGUKKyAgICAjIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYmFzZSBkZWZhdWx0cyBhbmQgdGhhdCBmb3IgdGhlIHBhcnRpY3VsYXIgcG9saWN5LgorICAgIG5ld19wb2xpY3kgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgIHBvbGljaWVzID0geworICAgICAgICBlbWFpbC5wb2xpY3kuY29tcGF0MzI6IG1ha2VfZGVmYXVsdHMoY29tcGF0MzJfZGVmYXVsdHMsIHt9KSwKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQ6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIGVtYWlsLnBvbGljeS5TTVRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nfSksCisgICAgICAgIGVtYWlsLnBvbGljeS5IVFRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9saW5lX2xlbmd0aCc6IE5vbmV9KSwKKyAgICAgICAgZW1haWwucG9saWN5LnN0cmljdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydyYWlzZV9vbl9kZWZlY3QnOiBUcnVlfSksCisgICAgICAgIG5ld19wb2xpY3k6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIH0KKyAgICAjIENyZWF0aW5nIGEgbmV3IHBvbGljeSBjcmVhdGVzIGEgbmV3IGhlYWRlciBmYWN0b3J5LiAgVGhlcmUgaXMgYSB0ZXN0CisgICAgIyBsYXRlciB0aGF0IHByb3ZlcyB0aGlzLgorICAgIHBvbGljaWVzW25ld19wb2xpY3ldWydoZWFkZXJfZmFjdG9yeSddID0gbmV3X3BvbGljeS5oZWFkZXJfZmFjdG9yeQorCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorCisgICAgZGVmIHRlc3RfYWxsX2F0dHJpYnV0ZXNfY292ZXJlZChzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHBvbGljeSk6CisgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGdldGF0dHIoZW1haWwucG9saWN5LkVtYWlsUG9saWN5LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKKworICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZW1haWwucG9saWN5LlBvbGljeSgpCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIGFic3RyYWN0X21ldGhvZHMgPSAoJ2ZvbGQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2xkX2JpbmFyeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9mZXRjaF9wYXJzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9zb3VyY2VfcGFyc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJfc3RvcmVfcGFyc2UnKQorICAgICAgICBmb3IgbWV0aG9kIGluIGFic3RyYWN0X21ldGhvZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1ldGhvZCwgbXNnKQorCisgICAgZGVmIHRlc3RfcG9saWN5X2lzX2ltbXV0YWJsZShzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZGVmYXVsdHMgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBhdHRyKyIuKnJlYWQtb25seSIpOgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBvbGljeSwgYXR0ciwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ25vIGF0dHJpYnV0ZS4qZm9vJyk6CisgICAgICAgICAgICAgICAgcG9saWN5LmZvbyA9IE5vbmUKKworICAgIGRlZiB0ZXN0X3NldF9wb2xpY3lfYXR0cnNfd2hlbl9jbG9uZWQoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYSBkZWZhdWx0IHZhbHVlIG9mIE5vbmUsIHNvIHdlIHNldCB0aGVtCisgICAgICAgICMgYWxsIHRvIE5vbmUgaW4gdGhlIGNsb25lIGNhbGwgYW5kIGNoZWNrIHRoYXQgaXQgd29ya2VkLgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MsIGRlZmF1bHRzIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIHRlc3RhdHRyZGljdCA9IHthdHRyOiBOb25lIGZvciBhdHRyIGluIGRlZmF1bHRzfQorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5Y2xhc3MuY2xvbmUoKip0ZXN0YXR0cmRpY3QpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkZWZhdWx0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZXRhdHRyKHBvbGljeSwgYXR0cikpCisKKyAgICBkZWYgdGVzdF9yZWplY3Rfbm9uX3BvbGljeV9rZXl3b3JkX3doZW5fY2FsbGVkKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MgaW4gc2VsZi5wb2xpY2llczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBwb2xpY3ljbGFzcyh0aGlzX2tleXdvcmRfc2hvdWxkX25vdF9iZV92YWxpZD1Ob25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBvbGljeWNsYXNzKG5ld3RsaW5lPU5vbmUpCisKKyAgICBkZWYgdGVzdF9wb2xpY3lfYWRkaXRpb24oc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5wb2xpY3lfZGVmYXVsdHMuY29weSgpCisgICAgICAgIHAxID0gZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwMCkKKyAgICAgICAgcDIgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9NTApCisgICAgICAgIGFkZGVkID0gcDEgKyBwMgorICAgICAgICBleHBlY3RlZC51cGRhdGUobWF4X2xpbmVfbGVuZ3RoPTUwKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorICAgICAgICBhZGRlZCA9IHAyICsgcDEKKyAgICAgICAgZXhwZWN0ZWQudXBkYXRlKG1heF9saW5lX2xlbmd0aD0xMDApCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGFkZGVkLCBhdHRyKSwgdmFsdWUpCisgICAgICAgIGFkZGVkID0gYWRkZWQgKyBlbWFpbC5wb2xpY3kuZGVmYXVsdAorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZGVmZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorICAgICAgICBvYmogPSBEdW1teSgpCisgICAgICAgIGRlZmVjdCA9IG9iamVjdCgpCisgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeS5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3RdKQorICAgICAgICBkZWZlY3QyID0gb2JqZWN0KCkKKyAgICAgICAgcG9saWN5LnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3QsIGRlZmVjdDJdKQorCisgICAgY2xhc3MgTXlPYmo6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisKKyAgICBjbGFzcyBNeURlZmVjdChFeGNlcHRpb24pOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JhaXNlc19vbl9zdHJpY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QgPSBzZWxmLk15RGVmZWN0KCJ0aGUgdGVsbHkgaXMgYnJva2VuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuTXlEZWZlY3QsICJ0aGUgdGVsbHkgaXMgYnJva2VuIik6CisgICAgICAgICAgICBlbWFpbC5wb2xpY3kuc3RyaWN0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JlZ2lzdGVyc19kZWZlY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QxID0gc2VsZi5NeURlZmVjdCgib25lIikKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgZGVmZWN0MiA9IHNlbGYuTXlEZWZlY3QoInR3byIpCisgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbZGVmZWN0MSwgZGVmZWN0Ml0pCisKKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBkZWZlY3RzID0gTm9uZQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgZGVmZWN0cz1bXSwgKiprdykKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRkZW5fcmVnaXN0ZXJfZGVmZWN0X3N0aWxsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdCA9IHNlbGYuTXlEZWZlY3QoInRoZSB0ZWxseSBpcyBicm9rZW4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5NeURlZmVjdCwgInRoZSB0ZWxseSBpcyBicm9rZW4iKToKKyAgICAgICAgICAgIHNlbGYuTXlQb2xpY3kocmFpc2Vfb25fZGVmZWN0PVRydWUpLmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZW5fcmVnaXN0ZXJfZGVmZWN0X3dvcmtzKHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0MSA9IHNlbGYuTXlEZWZlY3QoIm9uZSIpCisgICAgICAgIG15X3BvbGljeSA9IHNlbGYuTXlQb2xpY3koKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisgICAgICAgIGRlZmVjdDIgPSBzZWxmLk15RGVmZWN0KCJ0d28iKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxLCBkZWZlY3QyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2hlYWRlcl9mYWN0b3J5KHNlbGYpOgorICAgICAgICBoID0gZW1haWwucG9saWN5LmRlZmF1bHQuaGVhZGVyX2ZhY3RvcnkoJ1Rlc3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnVGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorCisgICAgY2xhc3MgRm9vOgorICAgICAgICBwYXJzZSA9IGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlci5wYXJzZQorCisgICAgZGVmIHRlc3RfZWFjaF9Qb2xpY3lfZ2V0c191bmlxdWVfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5Lm1hcF90b190eXBlKCdmb28nLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBoID0gcG9saWN5Mi5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9jbG9uZV9jb3BpZXNfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBwb2xpY3kxLmNsb25lKCkKKyAgICAgICAgcG9saWN5MS5oZWFkZXJfZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vJywgc2VsZi5Gb28pCisgICAgICAgIGggPSBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTIuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorCisgICAgZGVmIHRlc3RfbmV3X2ZhY3Rvcnlfb3ZlcnJpZGVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIG15cG9saWN5ID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgbXlmYWN0b3J5ID0gbXlwb2xpY3kuaGVhZGVyX2ZhY3RvcnkKKyAgICAgICAgbmV3cG9saWN5ID0gbXlwb2xpY3kgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LCBteWZhY3RvcnkpCisgICAgICAgIG5ld3BvbGljeSA9IGVtYWlsLnBvbGljeS5zdHJpY3QgKyBteXBvbGljeQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5oZWFkZXJfZmFjdG9yeSwgbXlmYWN0b3J5KQorCisgICAgZGVmIHRlc3RfYWRkaW5nX2RlZmF1bHRfcG9saWNpZXNfcHJlc2VydmVzX2RlZmF1bHRfZmFjdG9yeShzZWxmKToKKyAgICAgICAgbmV3cG9saWN5ID0gZW1haWwucG9saWN5LmRlZmF1bHQgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuX19kaWN0X18sIHsncmFpc2Vfb25fZGVmZWN0JzogVHJ1ZX0pCisKKyAgICAjIFhYWDogTmVlZCBzdWJjbGFzc2luZyB0ZXN0cy4KKyAgICAjIEZvciBhZGRpbmcgc3ViY2xhc3NlZCBvYmplY3RzLCBtYWtlIHN1cmUgdGhlIHVzdWFsIHJ1bGVzIGFwcGx5IChzdWJjbGFzcworICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgorCisKK2NsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgorICAgICMgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCwgc28gaWYgdGhlIGV4Y2VwdGlvbiBnZXRzIHJhaXNlZCB3ZSBrbm93IHRoYXQgdGhlCisgICAgIyBwb2xpY3kgd2FzIGFjdHVhbGx5IHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgdG8gZmVlZHBhcnNlci4KKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuUG9saWN5KToKKyAgICAgICAgZGVmIGJhZG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInRlc3QiKQorICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCisgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CisgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCisKKyAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCisKKyAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKKworICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQorICAgICMgcG9saWN5IGluIHRvIGZlZWRwYXJzZXIsIHdlIGNhbiB1c2UgbWVzc2FnZV9mcm9tX3N0cmluZyBmb3IKKyAgICAjIHRoZSByZXN0IG9mIHRoZSBwcm9wYWdhdGlvbiB0ZXN0cy4KKworICAgIGRlZiBfbWFrZV9tc2coc2VsZiwgc291cmNlPSdTdWJqZWN0OiB0ZXN0XG5cbicsIHBvbGljeT1Ob25lKToKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZSgpIGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKHNvdXJjZSwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIHRlc3RfcGFyc2VyX3Byb3BhZ2F0ZXNfcG9saWN5X3RvX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cucG9saWN5LCBzZWxmLnBvbGljeSkKKworICAgIGRlZiB0ZXN0X3BhcnNlcl9wcm9wYWdhdGVzX3BvbGljeV90b19zdWJfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiBtaW1lIHRlc3QKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZCwgYm91bmRhcnk9IlhYWCIKKworICAgICAgICAgICAgLS1YWFgKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCisgICAgICAgICAgICB0ZXN0CisgICAgICAgICAgICAtLVhYWAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgICAgIHRlc3QyCisgICAgICAgICAgICAtLVhYWC0tCisgICAgICAgICAgICAiIiIpKQorICAgICAgICBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXJ0LnBvbGljeSwgc2VsZi5wb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV9wcm9wYWdhdGVzX3RvX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgcyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IocykKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV91c2VkX2J5X2FzX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuYXNfc3RyaW5nKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJlZjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsMTM2IEBACitpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2NsYXNzIERhdGVUaW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGF0ZXN0cmluZyA9ICdTdW4sIDIzIFNlcCAyMDAxIDIwOjEwOjU1JworICAgIGRhdGVhcmdzID0gKDIwMDEsIDksIDIzLCAyMCwgMTAsIDU1KQorICAgIG9mZnNldHN0cmluZyA9ICcgLTA3MDAnCisgICAgdXRjb2Zmc2V0ID0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS03KQorICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUodXRjb2Zmc2V0KQorICAgIG5haXZlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzKQorICAgIGF3YXJlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzLCB0emluZm89dHopCisKKyAgICBkZWYgdGVzdF9uYWl2ZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgJyAtMDAwMCcpCisKKyAgICBkZWYgdGVzdF9hd2FyZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5hd2FyZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgc2VsZi5vZmZzZXRzdHJpbmcpCisKKyAgICBkZWYgdGVzdF91c2VnbXQoc2VsZik6CisgICAgICAgIHV0Y19kdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCpzZWxmLmRhdGVhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kYXRldGltZSh1dGNfZHQsIHVzZWdtdD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGVzdHJpbmcgKyAnIEdNVCcpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9uYWl2ZV9kYXRldGltZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCwgdXNlZ210PVRydWUpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9ub25fdXRjX2RhdGV0aW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLmF3YXJlX2R0LCB1c2VnbXQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV90b19kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZShzZWxmLmRhdGVzdHJpbmcgKyBzZWxmLm9mZnNldHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmF3YXJlX2R0KQorCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX3RvX2RhdGV0aW1lX25haXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHNlbGYuZGF0ZXN0cmluZyArICcgLTAwMDAnKSwKKyAgICAgICAgICAgIHNlbGYubmFpdmVfZHQpCisKKworY2xhc3MgTG9jYWx0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2lzX3R6X2F3YXJlX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9pc190el9hd2FyZV9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0tMSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X2ZhbHNlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9LTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF9mYWxzZV9kc3RfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9MSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfdXRjX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIEB0ZXN0LnN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX3V0Y19kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF9ub3R6X2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfbm90el9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICAjIFhYWDogTmVlZCBhIG1vcmUgcm9idXN0IHRlc3QgZm9yIE9sc29uJ3MgdHpkYXRhCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCisgICAgICAgICAgICAgICAgICAgICAiV2luZG93cyBkb2VzIG5vdCB1c2UgT2xzb24ncyBUWiBkYXRhYmFzZSIpCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRXVyb3BlL0tpZXYnKQorICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX3R6bmFtZShzZWxmKToKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTg0LCAxLCAxLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS50em5hbWUoKSwgJ01TSycpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5NCwgMSwgMSwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEudHpuYW1lKCksICdFRVQnKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF90b3J0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfdG9ydHVyZS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMDk1ODIwYi4uMmU5MDRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCBwaWNrbGUKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTYxLDcgKzYyLDI1IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCi1jbGFzcyBFbnVtZXJhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBQaWNrbGVUZXN0OgorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19waWNrbGUoc2VsZiwgaXRvcmcsIHNlcSk6CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcVsxOl0pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKKworY2xhc3MgRW51bWVyYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZW51bSA9IGVudW1lcmF0ZQogICAgIHNlcSwgcmVzID0gJ2FiYycsIFsoMCwnYScpLCAoMSwnYicpLCAoMiwnYycpXQpAQCAtNzMsNiArOTIsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKHNlbGYuc2VxKSksIHNlbGYucmVzKQogICAgICAgICBzZWxmLmVudW0uX19kb2NfXwogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShzZWxmLmVudW0oc2VsZi5zZXEpLCBzZWxmLnJlcykKKwogICAgIGRlZiB0ZXN0X2dldGl0ZW1zZXFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKEcoc2VsZi5zZXEpKSksIHNlbGYucmVzKQogICAgICAgICBlID0gc2VsZi5lbnVtKEcoJycpKQpAQCAtMTI2LDcgKzE0OCw3IEBACiAgICAgc2VxID0gcmFuZ2UoMTAsMjAwMDAsMikKICAgICByZXMgPSBsaXN0KHppcChyYW5nZSgyMDAwMCksIHNlcSkpCiAKLWNsYXNzIFRlc3RSZXZlcnNlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0UmV2ZXJzZWQodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgogICAgICAgICBjbGFzcyBBOgpAQCAtMjEyLDYgKzIzNCwxMCBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKKwogCiBjbGFzcyBFbnVtZXJhdGVTdGFydFRlc3RDYXNlKEVudW1lcmF0ZVRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggMDgzZmQ3Zi4uN2Y5NTQ3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC03NSw2ICs3NSw5IEBACiAgICAgICAgIGVwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVwLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXAuZmlsZW5vKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGVjdCwgIkVQT0xMX0NMT0VYRUMiKToKKyAgICAgICAgICAgIHNlbGVjdC5lcG9sbChzZWxlY3QuRVBPTExfQ0xPRVhFQykuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZWN0LmVwb2xsLCBmbGFncz0xMjM1NikKIAogICAgIGRlZiB0ZXN0X2JhZGNyZWF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3QuZXBvbGwsIDEsIDIsIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKaW5kZXggNzliZDdmZi4uMWFkN2Y5NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQpAQCAtOCw3ICs4LDE3IEBACiBpbXBvcnQgZXJybm8KIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChURVNURk4sIGNhcHR1cmVkX291dHB1dCwgY2hlY2tfaW1wbF9kZXRhaWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNweXRob25fb25seSwgZ2NfY29sbGVjdCwgcnVuX3VuaXR0ZXN0LCB1bmxpbmspCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNweXRob25fb25seSwgZ2NfY29sbGVjdCwgcnVuX3VuaXR0ZXN0LCBub190cmFjaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmspCisKK2NsYXNzIE5haXZlRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICBzZWxmLnggPSB4CisKK2NsYXNzIFNsb3R0ZWROYWl2ZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIF9fc2xvdHNfXyA9ICgneCcsKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geAogCiAjIFhYWCBUaGlzIGlzIG5vdCByZWFsbHkgZW5vdWdoLCBlYWNoICpvcGVyYXRpb24qIHNob3VsZCBiZSB0ZXN0ZWQhCiAKQEAgLTQ2LDggKzU2LDggQEAKICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgIHVubGluayhURVNURk4pCiAKLSAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChJT0Vycm9yLCAiSU9FcnJvciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIG9wZW4sICd0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3QnLCAncicpCisgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goT1NFcnJvciwgIk9TRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcGVuLCAndGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0JywgJ3InKQogCiAgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goSW1wb3J0RXJyb3IsICJJbXBvcnRFcnJvciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBfX2ltcG9ydF9fLCAidW5kZWZpbmVkX21vZHVsZSIpCkBAIC0xOTIsMTEgKzIwMiwzNSBAQAogICAgICAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoV2luZG93c0Vycm9yKDEwMDEpKSwgIjEwMDEiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoV2luZG93c0Vycm9yKDEwMDEsICJtZXNzYWdlIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiW0Vycm9yIDEwMDFdIG1lc3NhZ2UiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChXaW5kb3dzRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKS5lcnJubywgMjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFdpbmRvd3NFcnJvcigxMDAxLCAibWVzc2FnZSIpLndpbmVycm9yLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhXaW5kb3dzRXJyb3IsIE9TRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPU0Vycm9yKDEwMDEpKSwgIjEwMDEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT1NFcnJvcigxMDAxLCAibWVzc2FnZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltFcnJubyAxMDAxXSBtZXNzYWdlIikKKyAgICAgICAgICAgICMgUE9TSVggZXJybm8gKDkgYWthIEVCQURGKSBpcyB1bnRyYW5zbGF0ZWQKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDksICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHcpLCAiW0Vycm5vIDldIGZvbzogJ2JhciciKQorICAgICAgICAgICAgIyBFUlJPUl9QQVRIX05PVF9GT1VORCAod2luIGVycm9yIDMpIGJlY29tZXMgRU5PRU5UICgyKQorICAgICAgICAgICAgdyA9IE9TRXJyb3IoMCwgJ2ZvbycsICdiYXInLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltXaW5FcnJvciAzXSBmb286ICdiYXInIikKKyAgICAgICAgICAgICMgVW5rbm93biB3aW4gZXJyb3IgYmVjb21lcyBFSU5WQUwgKDIyKQorICAgICAgICAgICAgdyA9IE9TRXJyb3IoMCwgJ2ZvbycsIE5vbmUsIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sIDIyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHcpLCAiW1dpbkVycm9yIDEwMDFdIGZvbyIpCisgICAgICAgICAgICAjIE5vbi1udW1lcmljICJlcnJubyIKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKCdiYXInLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuc3RyZXJyb3IsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmZpbGVuYW1lLCBOb25lKQogCiAgICAgZGVmIHRlc3RBdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICAjIHRlc3QgdGhhdCBleGNlcHRpb24gYXR0cmlidXRlcyBhcmUgaGFwcHkKQEAgLTI3MiwxMyArMzA2LDE4IEBACiAgICAgICAgICAgICAgICAgeydhcmdzJyA6ICgnXHUzMDQyJywgMCwgMSwgJ291Y2gnKSwKICAgICAgICAgICAgICAgICAgJ29iamVjdCcgOiAnXHUzMDQyJywgJ3JlYXNvbicgOiAnb3VjaCcsCiAgICAgICAgICAgICAgICAgICdzdGFydCcgOiAwLCAnZW5kJyA6IDF9KSwKKyAgICAgICAgICAgIChOYWl2ZUV4Y2VwdGlvbiwgKCdmb28nLCksCisgICAgICAgICAgICAgICAgeydhcmdzJzogKCdmb28nLCksICd4JzogJ2Zvbyd9KSwKKyAgICAgICAgICAgIChTbG90dGVkTmFpdmVFeGNlcHRpb24sICgnZm9vJywpLAorICAgICAgICAgICAgICAgIHsnYXJncyc6ICgnZm9vJywpLCAneCc6ICdmb28nfSksCiAgICAgICAgIF0KICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBNb3JlIHRlc3RzIGFyZSBpbiB0ZXN0X1dpbmRvd3NFcnJvcgogICAgICAgICAgICAgZXhjZXB0aW9uTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgKFdpbmRvd3NFcnJvciwgKDEsICdzdHJFcnJvclN0cicsICdmaWxlbmFtZVN0cicpLAogICAgICAgICAgICAgICAgICAgICB7J2FyZ3MnIDogKDEsICdzdHJFcnJvclN0cicpLAotICAgICAgICAgICAgICAgICAgICAgJ3N0cmVycm9yJyA6ICdzdHJFcnJvclN0cicsICd3aW5lcnJvcicgOiAxLAotICAgICAgICAgICAgICAgICAgICAgJ2Vycm5vJyA6IDIyLCAnZmlsZW5hbWUnIDogJ2ZpbGVuYW1lU3RyJ30pCisgICAgICAgICAgICAgICAgICAgICAnc3RyZXJyb3InIDogJ3N0ckVycm9yU3RyJywgJ3dpbmVycm9yJyA6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAnZXJybm8nIDogMSwgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KQogICAgICAgICAgICAgKQogICAgICAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICAgICAgcGFzcwpAQCAtMjkxLDcgKzMzMCw4IEBACiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgbW9kdWxlIG5hbWUKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSkuX19tb2R1bGVfXywgJ2J1aWx0aW5zJykKKyAgICAgICAgICAgICAgICBpZiBub3QgdHlwZShlKS5fX25hbWVfXy5lbmRzd2l0aCgnTmFpdmVFeGNlcHRpb24nKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUpLl9fbW9kdWxlX18sICdidWlsdGlucycpCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgbm8gcmVmIGxlYWtzIGluIEV4Y19zdHIoKQogICAgICAgICAgICAgICAgIHMgPSBzdHIoZSkKICAgICAgICAgICAgICAgICBmb3IgY2hlY2tBcmdOYW1lIGluIGV4cGVjdGVkOgpAQCAtMzYyLDE5ICs0MDIsMzcgQEAKIAogICAgIGRlZiB0ZXN0Q2hhaW5pbmdBdHRycyhzZWxmKToKICAgICAgICAgZSA9IEV4Y2VwdGlvbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKICAgICAgICAgZSA9IFR5cGVFcnJvcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKICAgICAgICAgY2xhc3MgTXlFeGNlcHRpb24oRW52aXJvbm1lbnRFcnJvcik6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZSA9IE15RXhjZXB0aW9uKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY29udGV4dF9fLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jYXVzZV9fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKworICAgIGRlZiB0ZXN0Q2hhaW5pbmdEZXNjcmlwdG9ycyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBlID0gZXhjCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKworICAgICAgICBlLl9fY29udGV4dF9fID0gTmFtZUVycm9yKCkKKyAgICAgICAgZS5fX2NhdXNlX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBOYW1lRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgZS5fX3N1cHByZXNzX2NvbnRleHRfXyA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKIAogICAgIGRlZiB0ZXN0S2V5d29yZEFyZ3Moc2VsZik6CiAgICAgICAgICMgdGVzdCB0aGF0IGJ1aWx0aW4gZXhjZXB0aW9uIGRvbid0IHRha2Uga2V5d29yZCBhcmdzLApAQCAtMzg5LDYgKzQ0Nyw3IEBACiAgICAgICAgIHggPSBEZXJpdmVkRXhjZXB0aW9uKGZhbmN5X2FyZz00MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZhbmN5X2FyZywgNDIpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0SW5maW5pdGVSZWN1cnNpb24oc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gZigpCkBAIC03MjgsNiArNzg3LDcgQEAKICAgICAgICAgdS5zdGFydCA9IDEwMDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodSksICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVycyBpbiBwb3NpdGlvbiAxMDAwLTQ6IDk2NTIzMDk1MTQ0MzY4NTcyNDk5NyIpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZGlzaW5zdGFuY2Uoc2VsZik6CiAgICAgICAgICMgQnVnICMyNTQyOiBpZiBpc3N1YmNsYXNzKGUsIE15RXhjZXB0aW9uKSByYWlzZXMgYW4gZXhjZXB0aW9uLAogICAgICAgICAjIGl0IHNob3VsZCBiZSBpZ25vcmVkCkBAIC04MzgsNiArODk4LDcgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiTWVtb3J5RXJyb3Igbm90IHJhaXNlZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2Vycm9yX2NsZWFudXAoc2VsZik6CiAgICAgICAgICMgU2FtZSB0ZXN0IGFzIGFib3ZlLCBidXQgd2l0aCAicmVjdXJzaW9uIGV4Y2VlZGVkIiBlcnJvcnMKICAgICAgICAgY2xhc3MgQzoKQEAgLTg2NCw4ICs5MjUsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RESVIsIGNtLmV4Y2VwdGlvbikKIAogCitjbGFzcyBJbXBvcnRFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgU2V0dGluZyAnbmFtZScgYW5kICdwYXRoJyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbS4KKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLnBhdGgpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBuYW1lPSdzb21lbW9kdWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubmFtZSwgJ3NvbWVtb2R1bGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMucGF0aCkKKworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcigndGVzdCcsIHBhdGg9J3NvbWVwYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMucGF0aCwgJ3NvbWVwYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLm5hbWUpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBwYXRoPSdzb21lcGF0aCcsIG5hbWU9J3NvbWVuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubmFtZSwgJ3NvbWVuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMucGF0aCwgJ3NvbWVwYXRoJykKKworICAgIGRlZiB0ZXN0X25vbl9zdHJfYXJndW1lbnQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Nzc4CisgICAgICAgIGFyZyA9IGInYWJjJworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcihhcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGFyZyksIHN0cihleGMpKQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdHMpCisgICAgcnVuX3VuaXR0ZXN0KEV4Y2VwdGlvblRlc3RzLCBJbXBvcnRFcnJvclRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CmluZGV4IDFmN2Y2MzAuLjZiNmMxMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKQEAgLTY2LDE3ICs2NiwxNyBAQAogICAgID4+PiBnKCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKCooKSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKCooKSwgKip7fSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKDEpCiAgICAgMSAoKSB7fQpAQCAtMTUxLDcgKzE1MSw3IEBACiAgICAgPj4+IGcoMSwgMiwgMywgKip7J3gnOiA0LCAneSc6IDV9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisgICAgVHlwZUVycm9yOiBnKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJ3gnCiAKICAgICA+Pj4gZigqKnsxOjJ9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKQEAgLTI2MywyOSArMjYzLDgwIEBACiAgICAgPj4+IGYoKip4KQogICAgIDEgMgogCi1BIG9ic2N1cmUgbWVzc2FnZToKK1RvbyBtYW55IGFyZ3VtZW50czoKIAotICAgID4+PiBkZWYgZihhLCBiKToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKGI9MSkKKyAgICA+Pj4gZGVmIGYoKTogcGFzcworICAgID4+PiBmKDEpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAyIGFyZ3VtZW50cyAoMSBnaXZlbikKLQotVGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGluIGluY2x1ZGVzIGtleXdvcmRzOgotCi0gICAgPj4+IGRlZiBmKGEpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoNiwgYT00LCAqKDEsIDIsIDMpKQorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDEgd2FzIGdpdmVuCisgICAgPj4+IGRlZiBmKGEpOiBwYXNzCisgICAgPj4+IGYoMSwgMikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoNSBnaXZlbikKLSAgICA+Pj4gZGVmIGYoYSwgKiwga3cpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoNiwgNCwga3c9NCkKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAxIHBvc2l0aW9uYWwgYXJndW1lbnQgYnV0IDIgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZihhLCBiPTEpOiBwYXNzCisgICAgPj4+IGYoMSwgMiwgMykKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoMyBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKCosIGt3KTogcGFzcworICAgID4+PiBmKDEsIGt3PTMpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IChhbmQgMSBrZXl3b3JkLW9ubHkgYXJndW1lbnQpIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoKiwga3csIGIpOiBwYXNzCisgICAgPj4+IGYoMSwgMiwgMywgYj0zLCBrdz0zKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgcG9zaXRpb25hbCBhcmd1bWVudHMgKGFuZCAyIGtleXdvcmQtb25seSBhcmd1bWVudHMpIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoYSwgYj0yLCAqLCBrdyk6IHBhc3MKKyAgICA+Pj4gZigyLCAzLCA0LCBrdz00KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGZyb20gMSB0byAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHBvc2l0aW9uYWwgYXJndW1lbnRzIChhbmQgMSBrZXl3b3JkLW9ubHkgYXJndW1lbnQpIHdlcmUgZ2l2ZW4KKworVG9vIGZldyBhbmQgbWlzc2luZyBhcmd1bWVudHM6CisKKyAgICA+Pj4gZGVmIGYoYSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJworICAgID4+PiBkZWYgZihhLCBiKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDIgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICdhJyBhbmQgJ2InCisgICAgPj4+IGRlZiBmKGEsIGIsIGMpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJ2EnLCAnYicsIGFuZCAnYycKKyAgICA+Pj4gZGVmIGYoYSwgYiwgYywgZCwgZSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyA1IHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnRzOiAnYScsICdiJywgJ2MnLCAnZCcsIGFuZCAnZScKKyAgICA+Pj4gZGVmIGYoYSwgYj00LCBjPTUsIGQ9NSk6IHBhc3MKKyAgICA+Pj4gZihjPTEyLCBiPTkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJworCitTYW1lIHdpdGgga2V5d29yZCBvbmx5IGFyZ3M6CisKKyAgICA+Pj4gZGVmIGYoKiwgdyk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIGtleXdvcmQtb25seSBhcmd1bWVudDogJ3cnCisgICAgPj4+IGRlZiBmKCosIGEsIGIsIGMsIGQsIGUpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgNSByZXF1aXJlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzOiAnYScsICdiJywgJ2MnLCAnZCcsIGFuZCAnZScKKwogIiIiCiAKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgxYjM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC0wLDAgKzEsNTkzIEBACitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdW5pdHRlc3QKKwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICBIQVZFX1RIUkVBRFMgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgSEFWRV9USFJFQURTID0gRmFsc2UKKworVElNRU9VVCA9IDAuNQorCit0cnk6CisgICAgZnJvbSByZXNvdXJjZSBpbXBvcnQgc2V0cmxpbWl0LCBSTElNSVRfQ09SRSwgZXJyb3IgYXMgcmVzb3VyY2VfZXJyb3IKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwcmVwYXJlX3N1YnByb2Nlc3MgPSBOb25lCitlbHNlOgorICAgIGRlZiBwcmVwYXJlX3N1YnByb2Nlc3MoKToKKyAgICAgICAgIyBkb24ndCBjcmVhdGUgY29yZSBmaWxlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNldHJsaW1pdChSTElNSVRfQ09SRSwgKDAsIDApKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIHJlc291cmNlX2Vycm9yKToKKyAgICAgICAgICAgIHBhc3MKKworZGVmIGV4cGVjdGVkX3RyYWNlYmFjayhsaW5lbm8xLCBsaW5lbm8yLCBoZWFkZXIsIG1pbl9jb3VudD0xKToKKyAgICByZWdleCA9IGhlYWRlcgorICAgIHJlZ2V4ICs9ICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiBmdW5jXG4nICUgbGluZW5vMQorICAgIHJlZ2V4ICs9ICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiA8bW9kdWxlPicgJSBsaW5lbm8yCisgICAgaWYgMSA8IG1pbl9jb3VudDoKKyAgICAgICAgcmV0dXJuICdeJyArIChyZWdleCArICdcbicpICogKG1pbl9jb3VudCAtIDEpICsgcmVnZXgKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJ14nICsgcmVnZXggKyAnJCcKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcG9yYXJ5X2ZpbGVuYW1lKCk6CisgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQgZmlsZW5hbWUKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnVubGluayhmaWxlbmFtZSkKKworY2xhc3MgRmF1bHRIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgY29kZSBpbiBQeXRob24gKGluIGEgbmV3IGNoaWxkIHByb2Nlc3MpIGFuZCByZWFkIHRoZQorICAgICAgICBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQgZXJyb3Igb3IgZnJvbSBhIGZpbGUgKGlmIGZpbGVuYW1lIGlzIHNldCkuCisgICAgICAgIFJldHVybiB0aGUgb3V0cHV0IGxpbmVzIGFzIGEgbGlzdC4KKworICAgICAgICBTdHJpcCB0aGUgcmVmZXJlbmNlIGNvdW50IGZyb20gdGhlIHN0YW5kYXJkIGVycm9yIGZvciBQeXRob24gZGVidWcKKyAgICAgICAgYnVpbGQsIGFuZCByZXBsYWNlICJDdXJyZW50IHRocmVhZCAweDAwMDA3ZjhkOGZiZDk3MDAiIGJ5ICJDdXJyZW50CisgICAgICAgIHRocmVhZCBYWFgiLgorICAgICAgICAiIiIKKyAgICAgICAgb3B0aW9ucyA9IHt9CisgICAgICAgIGlmIHByZXBhcmVfc3VicHJvY2VzczoKKyAgICAgICAgICAgIG9wdGlvbnNbJ3ByZWV4ZWNfZm4nXSA9IHByZXBhcmVfc3VicHJvY2VzcworICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgKipvcHRpb25zKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCisgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnJykKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZnAucmVhZCgpCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgb3V0cHV0ID0gcmUuc3ViKCdDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKycsCisgICAgICAgICAgICAgICAgICAgICAgICAnQ3VycmVudCB0aHJlYWQgWFhYJywKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCkKKyAgICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdGxpbmVzKCksIGV4aXRjb2RlCisKKyAgICBkZWYgY2hlY2tfZmF0YWxfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIG5hbWVfcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQorICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCisKKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBhbGxfdGhyZWFkczoKKyAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCBYWFgnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXIgPSAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgcmVnZXggPSAiIiIKK15GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorCit7aGVhZGVyfToKKyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIDxtb2R1bGU+CisiIiIuc3RyaXAoKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdCgKKyAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKKyAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKKyAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkKKyAgICAgICAgaWYgb3RoZXJfcmVnZXg6CisgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAorICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9yZWFkX251bGwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisKKyAgICBkZWYgdGVzdF9zaWdzZWd2KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ3NlZ3YoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCisKKyAgICBkZWYgdGVzdF9zaWdhYnJ0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2FicnQoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0Fib3J0ZWQnKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICJTSUdGUEUgY2Fubm90IGJlIGNhdWdodCBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9zaWdmcGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnZnBlKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBleGNlcHRpb24nKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnYnVzJyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2J1cygpIikKKyAgICBkZWYgdGVzdF9zaWdidXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnYnVzKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdCdXMgZXJyb3InKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnaWxsJyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpIikKKyAgICBkZWYgdGVzdF9zaWdpbGwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnaWxsKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdJbGxlZ2FsIGluc3RydWN0aW9uJykKKworICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLl9mYXRhbF9lcnJvcihiJ3h5eicpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDIsCisgICAgICAgICAgICAneHl6JykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKSBhbmQgSEFWRV9USFJFQURTLAorICAgICAgICAgICAgICAgICAgICAgIklzc3VlICMxMjg2ODogc2lnYWx0c3RhY2soKSBkb2Vzbid0IHdvcmsgb24gIgorICAgICAgICAgICAgICAgICAgICAgIk9wZW5CU0QgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggcHRocmVhZCIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc3RhY2tfb3ZlcmZsb3cnKSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5fc3RhY2tfb3ZlcmZsb3coKScpCisgICAgZGVmIHRlc3Rfc3RhY2tfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc3RhY2tfb3ZlcmZsb3coKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3IpJywKKyAgICAgICAgICAgIG90aGVyX3JlZ2V4PSd1bmFibGUgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdycpCisKKyAgICBkZWYgdGVzdF9naWxfcmVsZWFzZWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKFRydWUpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisKKyAgICBkZWYgdGVzdF9lbmFibGVfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitvdXRwdXQgPSBvcGVuKHtmaWxlbmFtZX0sICd3YicpCitmYXVsdGhhbmRsZXIuZW5hYmxlKG91dHB1dCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpLmZvcm1hdChmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSksCisgICAgICAgICAgICAgICAgNCwKKyAgICAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScsCisgICAgICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9lbmFibGVfc2luZ2xlX3RocmVhZChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9RmFsc2UpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScsCisgICAgICAgICAgICBhbGxfdGhyZWFkcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLmRpc2FibGUoKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCkKKyAgICAgICAgbm90X2V4cGVjdGVkID0gJ0ZhdGFsIFB5dGhvbiBlcnJvcicKKyAgICAgICAgc3RkZXJyLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlKQorICAgICAgICBzdGRlciA9ICdcbicuam9pbihzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RfZXhwZWN0ZWQgbm90IGluIHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICIlciBpcyBwcmVzZW50IGluICVyIiAlIChub3RfZXhwZWN0ZWQsIHN0ZGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9pc19lbmFibGVkKHNlbGYpOgorICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyByZWdydGVzdCBtYXkgcmVwbGFjZSBzeXMuc3RkZXJyIGJ5IGlvLlN0cmluZ0lPIG9iamVjdCwgYnV0CisgICAgICAgICAgICAjIGZhdWx0aGFuZGxlci5lbmFibGUoKSByZXF1aXJlcyB0aGF0IHN5cy5zdGRlcnIgaGFzIGEgZmlsZW5vKCkKKyAgICAgICAgICAgICMgbWV0aG9kCisgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KKworICAgICAgICAgICAgd2FzX2VuYWJsZWQgPSBmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmRpc2FibGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgd2FzX2VuYWJsZWQ6CisgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kaXNhYmxlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvcmlnX3N0ZGVycgorCisgICAgZGVmIHRlc3RfZGlzYWJsZWRfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB0aGUgbW9kdWxlIHNob3VsZCBiZSBkaXNhYmxlZAorICAgICAgICBjb2RlID0gImltcG9ydCBmYXVsdGhhbmRsZXI7IHByaW50KGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpIgorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItYyIsIGNvZGUpCisgICAgICAgIHN0ZG91dCA9IChzdGRvdXQgKyBzdGRlcnIpLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGIiRmFsc2UiKQorCisgICAgZGVmIHRlc3Rfc3lzX3hvcHRpb25zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcHl0aG9uIC1YIGZhdWx0aGFuZGxlcgorICAgICAgICBjb2RlID0gImltcG9ydCBmYXVsdGhhbmRsZXI7IHByaW50KGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpIgorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItWCIsICJmYXVsdGhhbmRsZXIiLCAiLWMiLCBjb2RlKQorICAgICAgICBzdGRvdXQgPSAoc3Rkb3V0ICsgc3RkZXJyKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiIlRydWUiKQorCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIEV4cGxpY2l0bHkgY2FsbCBkdW1wX3RyYWNlYmFjaygpIGZ1bmN0aW9uIGFuZCBjaGVjayBpdHMgb3V0cHV0LgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKKworZGVmIGZ1bmNCKCk6CisgICAgaWYge2hhc19maWxlbmFtZX06CisgICAgICAgIHdpdGggb3Blbih7ZmlsZW5hbWV9LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmcCwgYWxsX3RocmVhZHM9RmFsc2UpCisgICAgZWxzZToKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPUZhbHNlKQorCitkZWYgZnVuY0EoKToKKyAgICBmdW5jQigpCisKK2Z1bmNBKCkKKyIiIi5zdHJpcCgpCisgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKKyAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICApCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgbGluZW5vID0gNgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZW5vID0gOAorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gZnVuY0InICUgbGluZW5vLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDExIGluIGZ1bmNBJywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMyBpbiA8bW9kdWxlPicKKyAgICAgICAgXQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2soc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soTm9uZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKGZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfdHJ1bmNhdGUoc2VsZik6CisgICAgICAgIG1heGxlbiA9IDUwMAorICAgICAgICBmdW5jX25hbWUgPSAneCcgKiAobWF4bGVuICsgNTApCisgICAgICAgIHRydW5jYXRlZCA9ICd4JyAqIG1heGxlbiArICcuLi4nCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKKworZGVmIHtmdW5jX25hbWV9KCk6CisgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPUZhbHNlKQorCit7ZnVuY19uYW1lfSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICBmdW5jX25hbWU9ZnVuY19uYW1lLAorICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6JywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSA0IGluICVzJyAlIHRydW5jYXRlZCwKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSA2IGluIDxtb2R1bGU+JworICAgICAgICBdCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IEhBVkVfVEhSRUFEUywgJ25lZWQgdGhyZWFkcycpCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbCBleHBsaWNpdGx5IGR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPVRydWUpIGFuZCBjaGVjayB0aGUgb3V0cHV0LgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQsIEV2ZW50CitpbXBvcnQgdGltZQorCitkZWYgZHVtcCgpOgorICAgIGlmIHtmaWxlbmFtZX06CisgICAgICAgIHdpdGggb3Blbih7ZmlsZW5hbWV9LCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmcCwgYWxsX3RocmVhZHM9VHJ1ZSkKKyAgICBlbHNlOgorICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soYWxsX3RocmVhZHM9VHJ1ZSkKKworY2xhc3MgV2FpdGVyKFRocmVhZCk6CisgICAgIyBhdm9pZCBibG9ja2luZyBpZiB0aGUgbWFpbiB0aHJlYWQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKyAgICBkYWVtb24gPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLnJ1bm5pbmcgPSBFdmVudCgpCisgICAgICAgIHNlbGYuc3RvcCA9IEV2ZW50KCkKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHNlbGYucnVubmluZy5zZXQoKQorICAgICAgICBzZWxmLnN0b3Aud2FpdCgpCisKK3dhaXRlciA9IFdhaXRlcigpCit3YWl0ZXIuc3RhcnQoKQord2FpdGVyLnJ1bm5pbmcud2FpdCgpCitkdW1wKCkKK3dhaXRlci5zdG9wLnNldCgpCit3YWl0ZXIuam9pbigpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoZmlsZW5hbWU9cmVwcihmaWxlbmFtZSkpCisgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCA9ICdcbicuam9pbihvdXRwdXQpCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgbGluZW5vID0gOAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGluZW5vID0gMTAKKyAgICAgICAgcmVnZXggPSAiIiIKK15UaHJlYWQgMHhbMC05YS1mXSs6CisoPzogIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gW19hLXpdKworKXt7MSwzfX0gIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyMyBpbiBydW4KKyAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwX2lubmVyCisgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcAorCitDdXJyZW50IHRocmVhZCBYWFg6CisgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiBkdW1wCisgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyOCBpbiA8bW9kdWxlPiQKKyIiIi5zdHJpcCgpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KGxpbmVubz1saW5lbm8pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhOb25lKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfdGhyZWFkc19maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja190aHJlYWRzKGZpbGVuYW1lKQorCisgICAgZGVmIF9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmLCByZXBlYXQsIGNhbmNlbCwgZmlsZW5hbWUsIGxvb3BzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIGhvdyBtYW55IHRpbWVzIHRoZSB0cmFjZWJhY2sgaXMgd3JpdHRlbiBpbiB0aW1lb3V0IHggMi41IHNlY29uZHMsCisgICAgICAgIG9yIHRpbWVvdXQgeCAzLjUgc2Vjb25kcyBpZiBjYW5jZWwgaXMgVHJ1ZTogMSwgMiBvciAzIHRpbWVzIGRlcGVuZGluZworICAgICAgICBvbiByZXBlYXQgYW5kIGNhbmNlbCBvcHRpb25zLgorCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0IGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHRpbWVvdXRfc3RyID0gc3RyKGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPVRJTUVPVVQpKQorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgdGltZQorCitkZWYgZnVuYyh0aW1lb3V0LCByZXBlYXQsIGNhbmNlbCwgZmlsZSwgbG9vcHMpOgorICAgIGZvciBsb29wIGluIHJhbmdlKGxvb3BzKToKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRpbWVvdXQsIHJlcGVhdD1yZXBlYXQsIGZpbGU9ZmlsZSkKKyAgICAgICAgaWYgY2FuY2VsOgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisgICAgICAgIHRpbWUuc2xlZXAodGltZW91dCAqIDUpCisgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCit0aW1lb3V0ID0ge3RpbWVvdXR9CityZXBlYXQgPSB7cmVwZWF0fQorY2FuY2VsID0ge2NhbmNlbH0KK2xvb3BzID0ge2xvb3BzfQoraWYge2hhc19maWxlbmFtZX06CisgICAgZmlsZSA9IG9wZW4oe2ZpbGVuYW1lfSwgIndiIikKK2Vsc2U6CisgICAgZmlsZSA9IE5vbmUKK2Z1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKQoraWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICBmaWxlLmNsb3NlKCkKKyIiIi5zdHJpcCgpCisgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKKyAgICAgICAgICAgIHRpbWVvdXQ9VElNRU9VVCwKKyAgICAgICAgICAgIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICBjYW5jZWw9Y2FuY2VsLAorICAgICAgICAgICAgbG9vcHM9bG9vcHMsCisgICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCisgICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQorCisgICAgICAgIGlmIG5vdCBjYW5jZWw6CisgICAgICAgICAgICBjb3VudCA9IGxvb3BzCisgICAgICAgICAgICBpZiByZXBlYXQ6CisgICAgICAgICAgICAgICAgY291bnQgKj0gMgorICAgICAgICAgICAgaGVhZGVyID0gcidUaW1lb3V0IFwoJXNcKSFcblRocmVhZCAweFswLTlhLWZdKzpcbicgJSB0aW1lb3V0X3N0cgorICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soOSwgMjAsIGhlYWRlciwgbWluX2NvdW50PWNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpJykKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0PUZhbHNlLCBjYW5jZWw9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPUZhbHNlLCB0d2ljZT1GYWxzZSk6CisgICAgICAgIGlmIHR3aWNlOgorICAgICAgICAgICAgbG9vcHMgPSAyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb29wcyA9IDEKKyAgICAgICAgaWYgZmlsZToKKyAgICAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0LCBjYW5jZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsb29wcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLCBOb25lLCBsb29wcykKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX3JlcGVhdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX2NhbmNlbChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihjYW5jZWw9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoZmlsZT1UcnVlKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfdHdpY2Uoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIodHdpY2U9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAicmVnaXN0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5yZWdpc3RlciIpCisgICAgZGVmIGNoZWNrX3JlZ2lzdGVyKHNlbGYsIGZpbGVuYW1lPUZhbHNlLCBhbGxfdGhyZWFkcz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcj1GYWxzZSwgY2hhaW49RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVnaXN0ZXIgYSBoYW5kbGVyIGRpc3BsYXlpbmcgdGhlIHRyYWNlYmFjayBvbiBhIHVzZXIgc2lnbmFsLiBSYWlzZSB0aGUKKyAgICAgICAgc2lnbmFsIGFuZCBjaGVjayB0aGUgd3JpdHRlbiB0cmFjZWJhY2suCisKKyAgICAgICAgSWYgY2hhaW4gaXMgVHJ1ZSwgY2hlY2sgdGhhdCB0aGUgcHJldmlvdXMgc2lnbmFsIGhhbmRsZXIgaXMgY2FsbGVkLgorCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3lzCisKK2RlZiBmdW5jKHNpZ251bSk6CisgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorCitkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICBoYW5kbGVyLmNhbGxlZCA9IFRydWUKK2hhbmRsZXIuY2FsbGVkID0gRmFsc2UKKworZXhpdGNvZGUgPSAwCitzaWdudW0gPSB7c2lnbnVtfQordW5yZWdpc3RlciA9IHt1bnJlZ2lzdGVyfQorY2hhaW4gPSB7Y2hhaW59CisKK2lmIHtoYXNfZmlsZW5hbWV9OgorICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCitlbHNlOgorICAgIGZpbGUgPSBOb25lCitpZiBjaGFpbjoKKyAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKK2ZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGZpbGU9ZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICBhbGxfdGhyZWFkcz17YWxsX3RocmVhZHN9LCBjaGFpbj17Y2hhaW59KQoraWYgdW5yZWdpc3RlcjoKKyAgICBmYXVsdGhhbmRsZXIudW5yZWdpc3RlcihzaWdudW0pCitmdW5jKHNpZ251bSkKK2lmIGNoYWluIGFuZCBub3QgaGFuZGxlci5jYWxsZWQ6CisgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgb3V0cHV0ID0gZmlsZQorICAgIGVsc2U6CisgICAgICAgIG91dHB1dCA9IHN5cy5zdGRlcnIKKyAgICBwcmludCgiRXJyb3I6IHNpZ25hbCBoYW5kbGVyIG5vdCBjYWxsZWQhIiwgZmlsZT1vdXRwdXQpCisgICAgZXhpdGNvZGUgPSAxCitpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgIGZpbGUuY2xvc2UoKQorc3lzLmV4aXQoZXhpdGNvZGUpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGFsbF90aHJlYWRzPWFsbF90aHJlYWRzLAorICAgICAgICAgICAgc2lnbnVtPXNpZ251bSwKKyAgICAgICAgICAgIHVucmVnaXN0ZXI9dW5yZWdpc3RlciwKKyAgICAgICAgICAgIGNoYWluPWNoYWluLAorICAgICAgICApCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCisgICAgICAgIGlmIG5vdCB1bnJlZ2lzdGVyOgorICAgICAgICAgICAgaWYgYWxsX3RocmVhZHM6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnQ3VycmVudCB0aHJlYWQgWFhYOlxuJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZWdleCA9ICdUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCisgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjayg3LCAyOCwgcmVnZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHRyYWNlLCByZWdleCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsICcnKQorICAgICAgICBpZiB1bnJlZ2lzdGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9yZWdpc3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcigpCisKKyAgICBkZWYgdGVzdF91bnJlZ2lzdGVyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKHVucmVnaXN0ZXI9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGZpbGVuYW1lPWZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfdGhyZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihhbGxfdGhyZWFkcz1UcnVlKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfY2hhaW4oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoY2hhaW49VHJ1ZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRmF1bHRIYW5kbGVyVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKaW5kZXggZjMxMjg4Mi4uMWU3MDY0MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKQEAgLTIsMTggKzIsMzMgQEAKIFRlc3RzIGZvciBmaWxlaW5wdXQgbW9kdWxlLgogTmljayBNYXRoZXdzb24KICcnJwotCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCByZQoraW1wb3J0IGZpbGVpbnB1dAoraW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgcnVuX3VuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5saW5rIGFzIHNhZmVfdW5saW5rCi1pbXBvcnQgc3lzLCByZQorCit0cnk6CisgICAgaW1wb3J0IGJ6MgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGJ6MiA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgZ3ppcAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGd6aXAgPSBOb25lCisKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIGZpbGVpbnB1dCBpbXBvcnQgRmlsZUlucHV0LCBob29rX2VuY29kZWQKIAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5saW5rIGFzIHNhZmVfdW5saW5rCisKKwogIyBUaGUgZmlsZWlucHV0IG1vZHVsZSBoYXMgMiBpbnRlcmZhY2VzOiB0aGUgRmlsZUlucHV0IGNsYXNzIHdoaWNoIGRvZXMKICMgYWxsIHRoZSB3b3JrLCBhbmQgYSBmZXcgZnVuY3Rpb25zIChpbnB1dCwgZXRjLikgdGhhdCB1c2UgYSBnbG9iYWwgX3N0YXRlCi0jIHZhcmlhYmxlLiAgV2Ugb25seSB0ZXN0IHRoZSBGaWxlSW5wdXQgY2xhc3MsIHNpbmNlIHRoZSBvdGhlciBmdW5jdGlvbnMKLSMgb25seSBwcm92aWRlIGEgdGhpbiBmYWNhZGUgb3ZlciBGaWxlSW5wdXQuCisjIHZhcmlhYmxlLgogCiAjIFdyaXRlIGxpbmVzIChhIGxpc3Qgb2YgbGluZXMpIHRvIHRlbXAgZmlsZSBudW1iZXIgaSwgYW5kIHJldHVybiB0aGUKICMgdGVtcCBmaWxlJ3MgbmFtZS4KQEAgLTEyMSw3ICsxMzYsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG0uZ3JvdXAoMSkpLCBmaS5maWxlbGluZW5vKCkpCiAgICAgICAgIGZpLmNsb3NlKCkKIAorY2xhc3MgVW5jb25kaXRpb25hbGx5UmFpc2U6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y2VwdGlvbl90eXBlKToKKyAgICAgICAgc2VsZi5leGNlcHRpb25fdHlwZSA9IGV4Y2VwdGlvbl90eXBlCisgICAgICAgIHNlbGYuaW52b2tlZCA9IEZhbHNlCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuaW52b2tlZCA9IFRydWUKKyAgICAgICAgcmFpc2Ugc2VsZi5leGNlcHRpb25fdHlwZSgpCisKIGNsYXNzIEZpbGVJbnB1dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X3plcm9fYnl0ZV9maWxlcyhzZWxmKToKICAgICAgICAgdDEgPSB0MiA9IHQzID0gdDQgPSBOb25lCiAgICAgICAgIHRyeToKQEAgLTIxOSwxNyArMjQzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIkZpbGVJbnB1dCBzaG91bGQgY2hlY2sgb3Blbmhvb2sgZm9yIGJlaW5nIGNhbGxhYmxlIikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgICMgWFhYIFRoZSByb3QxMyBjb2RlYyB3YXMgcmVtb3ZlZC4KLSAgICAgICAgIyAgICAgU28gdGhpcyB0ZXN0IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gdXNlIHNvbWV0aGluZyBlbHNlLgotICAgICAgICAjICAgICAoT3IgcGVyaGFwcyB0aGUgQVBJIG5lZWRzIHRvIGNoYW5nZSBzbyB3ZSBjYW4ganVzdCBwYXNzCi0gICAgICAgICMgICAgIGFuIGVuY29kaW5nIHJhdGhlciB0aGFuIHVzaW5nIGEgaG9vaz8pCi0jIyAgICAgICAgIHRyeToKLSMjICAgICAgICAgICAgIHQxID0gd3JpdGVUbXAoMSwgWyJBXG5CIl0sIG1vZGU9IndiIikKLSMjICAgICAgICAgICAgIGZpID0gRmlsZUlucHV0KGZpbGVzPXQxLCBvcGVuaG9vaz1ob29rX2VuY29kZWQoInJvdDEzIikpCi0jIyAgICAgICAgICAgICBsaW5lcyA9IGxpc3QoZmkpCi0jIyAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBbIk5cbiIsICJPIl0pCi0jIyAgICAgICAgIGZpbmFsbHk6Ci0jIyAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxKQorCisgICAgICAgIGNsYXNzIEN1c3RvbU9wZW5Ib29rOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaW52b2tlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHNlbGYuaW52b2tlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gb3BlbigqYXJncykKKworICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgY3VzdG9tX29wZW5faG9vayA9IEN1c3RvbU9wZW5Ib29rKCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoW3RdLCBvcGVuaG9vaz1jdXN0b21fb3Blbl9ob29rKSBhcyBmaToKKyAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN1c3RvbV9vcGVuX2hvb2suaW52b2tlZCwgIm9wZW5ob29rIG5vdCBpbnZva2VkIikKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKICAgICAgICAgdHJ5OgpAQCAtMjU0LDkgKzI4MSw1NzYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJlbW92ZV90ZW1wZmlsZXModDEpCiAKKyAgICBkZWYgdGVzdF9lbXB0eV9maWxlc19saXN0X3NwZWNpZmllZF90b19jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W10pIGFzIGZpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaS5fZmlsZXMsICgnLScsKSkKKworICAgIGRlZiB0ZXN0X19nZXRpdGVtX18oc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5fX2dldGl0ZW1fXygpIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgICAgbGluZSBudW1iZXIiIiIKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsibGluZTFcbiIsICJsaW5lMlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgcmV0dmFsMSA9IGZpWzBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHZhbDEsICJsaW5lMVxuIikKKyAgICAgICAgICAgIHJldHZhbDIgPSBmaVsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR2YWwyLCAibGluZTJcbiIpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9faW52YWxpZF9rZXkoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5fX2dldGl0ZW1fXygpIHdpdGggYW4gaW5kZXggdW5lcXVhbCB0bworICAgICAgICAgICB0aGUgbGluZSBudW1iZXIiIiIKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsibGluZTFcbiIsICJsaW5lMlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZpWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3MsICgiYWNjZXNzaW5nIGxpbmVzIG91dCBvZiBvcmRlciIsKSkKKworICAgIGRlZiB0ZXN0X19nZXRpdGVtX19lb2Yoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5fX2dldGl0ZW1fXygpIHdpdGggdGhlIGxpbmUgbnVtYmVyIGJ1dCBhdAorICAgICAgICAgICBlbmQtb2YtaW5wdXQiIiIKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFtdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgZmlbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uYXJncywgKCJlbmQgb2YgaW5wdXQgcmVhY2hlZCIsKSkKKworICAgIGRlZiB0ZXN0X25leHRmaWxlX29zZXJyb3JfZGVsZXRpbmdfYmFja3VwKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQubmV4dGZpbGUoKSB3aGVuIHRoZSBhdHRlbXB0IHRvIGRlbGV0ZQorICAgICAgICAgICB0aGUgYmFja3VwIGZpbGUgd291bGQgcmFpc2UgT1NFcnJvci4gIFRoaXMgZXJyb3IgaXMgZXhwZWN0ZWQgdG8gYmUKKyAgICAgICAgICAgc2lsZW50bHkgaWdub3JlZCIiIgorCisgICAgICAgIG9zX3VubGlua19vcmlnID0gb3MudW5saW5rCisgICAgICAgIG9zX3VubGlua19yZXBsYWNlbWVudCA9IFVuY29uZGl0aW9uYWxseVJhaXNlKE9TRXJyb3IpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSwgaW5wbGFjZT1UcnVlKSBhcyBmaToKKyAgICAgICAgICAgICAgICBuZXh0KGZpKSAjIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyBvcGVuZWQKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsgPSBvc191bmxpbmtfcmVwbGFjZW1lbnQKKyAgICAgICAgICAgICAgICBmaS5uZXh0ZmlsZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy51bmxpbmsgPSBvc191bmxpbmtfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX3VubGlua19yZXBsYWNlbWVudC5pbnZva2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnVubGluaygpIHdhcyBub3QgaW52b2tlZCIpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9vc19mc3RhdF9yYWlzZXNfT1NFcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0LnJlYWRsaW5lKCkgd2hlbiBvcy5mc3RhdCgpIHJhaXNlcyBPU0Vycm9yLgorICAgICAgICAgICBUaGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgc2lsZW50bHkgZGlzY2FyZGVkLiIiIgorCisgICAgICAgIG9zX2ZzdGF0X29yaWcgPSBvcy5mc3RhdAorICAgICAgICBvc19mc3RhdF9yZXBsYWNlbWVudCA9IFVuY29uZGl0aW9uYWxseVJhaXNlKE9TRXJyb3IpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSwgaW5wbGFjZT1UcnVlKSBhcyBmaToKKyAgICAgICAgICAgICAgICBvcy5mc3RhdCA9IG9zX2ZzdGF0X3JlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgZmkucmVhZGxpbmUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZnN0YXQgPSBvc19mc3RhdF9vcmlnCisKKyAgICAgICAgIyBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIHRlc3Qgc2NlbmFyaW8gd2FzIGFjdHVhbGx5IGhpdAorICAgICAgICBzZWxmLmFzc2VydFRydWUob3NfZnN0YXRfcmVwbGFjZW1lbnQuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcy5mc3RhdCgpIHdhcyBub3QgaW52b2tlZCIpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKG9zLCAiY2htb2QiKSwgIm9zLmNobW9kIGRvZXMgbm90IGV4aXN0IikKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9vc19jaG1vZF9yYWlzZXNfT1NFcnJvcihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0LnJlYWRsaW5lKCkgd2hlbiBvcy5jaG1vZCgpIHJhaXNlcyBPU0Vycm9yLgorICAgICAgICAgICBUaGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgc2lsZW50bHkgZGlzY2FyZGVkLiIiIgorCisgICAgICAgIG9zX2NobW9kX29yaWcgPSBvcy5jaG1vZAorICAgICAgICBvc19jaG1vZF9yZXBsYWNlbWVudCA9IFVuY29uZGl0aW9uYWxseVJhaXNlKE9TRXJyb3IpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSwgaW5wbGFjZT1UcnVlKSBhcyBmaToKKyAgICAgICAgICAgICAgICBvcy5jaG1vZCA9IG9zX2NobW9kX3JlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgZmkucmVhZGxpbmUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2htb2QgPSBvc19jaG1vZF9vcmlnCisKKyAgICAgICAgIyBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIHRlc3Qgc2NlbmFyaW8gd2FzIGFjdHVhbGx5IGhpdAorICAgICAgICBzZWxmLmFzc2VydFRydWUob3NfY2htb2RfcmVwbGFjZW1lbnQuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcy5mc3RhdCgpIHdhcyBub3QgaW52b2tlZCIpCisKKyAgICBkZWYgdGVzdF9maWxlbm9fd2hlbl9WYWx1ZUVycm9yX3JhaXNlZChzZWxmKToKKyAgICAgICAgY2xhc3MgRmlsZW5vUmFpc2VzVmFsdWVFcnJvcihVbmNvbmRpdGlvbmFsbHlSYWlzZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgVW5jb25kaXRpb25hbGx5UmFpc2UuX19pbml0X18oc2VsZiwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fX2NhbGxfXygpCisKKyAgICAgICAgdW5jb25kaXRpb25hbGx5X3JhaXNlX1ZhbHVlRXJyb3IgPSBGaWxlbm9SYWlzZXNWYWx1ZUVycm9yKCkKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICBmaWxlX2JhY2t1cCA9IGZpLl9maWxlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmkuX2ZpbGUgPSB1bmNvbmRpdGlvbmFsbHlfcmFpc2VfVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZpLmZpbGVubygpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZpLl9maWxlID0gZmlsZV9iYWNrdXAgIyBtYWtlIHN1cmUgdGhlIGZpbGUgZ2V0cyBjbGVhbmVkIHVwCisKKyAgICAgICAgIyBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIHRlc3Qgc2NlbmFyaW8gd2FzIGFjdHVhbGx5IGhpdAorICAgICAgICBzZWxmLmFzc2VydFRydWUodW5jb25kaXRpb25hbGx5X3JhaXNlX1ZhbHVlRXJyb3IuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfZmlsZS5maWxlbm8oKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAtMSwgImZpbGVubygpIHNob3VsZCByZXR1cm4gLTEiKQorCitjbGFzcyBNb2NrRmlsZUlucHV0OgorICAgICIiIkEgY2xhc3MgdGhhdCBtb2NrcyBvdXQgZmlsZWlucHV0LkZpbGVJbnB1dCBmb3IgdXNlIGR1cmluZyB1bml0IHRlc3RzIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXM9Tm9uZSwgaW5wbGFjZT1GYWxzZSwgYmFja3VwPSIiLCBidWZzaXplPTAsCisgICAgICAgICAgICAgICAgIG1vZGU9InIiLCBvcGVuaG9vaz1Ob25lKToKKyAgICAgICAgc2VsZi5maWxlcyA9IGZpbGVzCisgICAgICAgIHNlbGYuaW5wbGFjZSA9IGlucGxhY2UKKyAgICAgICAgc2VsZi5iYWNrdXAgPSBiYWNrdXAKKyAgICAgICAgc2VsZi5idWZzaXplID0gYnVmc2l6ZQorICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCisgICAgICAgIHNlbGYub3Blbmhvb2sgPSBvcGVuaG9vaworICAgICAgICBzZWxmLl9maWxlID0gTm9uZQorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhOiAwKQorICAgICAgICBzZWxmLnJldHVybl92YWx1ZXMgPSB7fQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJjbG9zZSJdICs9IDEKKworICAgIGRlZiBuZXh0ZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1sibmV4dGZpbGUiXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbIm5leHRmaWxlIl0KKworICAgIGRlZiBmaWxlbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siZmlsZW5hbWUiXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImZpbGVuYW1lIl0KKworICAgIGRlZiBsaW5lbm8oc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImxpbmVubyJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1sibGluZW5vIl0KKworICAgIGRlZiBmaWxlbGluZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJmaWxlbGluZW5vIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJmaWxlbGluZW5vIl0KKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImZpbGVubyJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siZmlsZW5vIl0KKworICAgIGRlZiBpc2ZpcnN0bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siaXNmaXJzdGxpbmUiXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImlzZmlyc3RsaW5lIl0KKworICAgIGRlZiBpc3N0ZGluKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJpc3N0ZGluIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJpc3N0ZGluIl0KKworY2xhc3MgQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciB1bml0IHRlc3RzIGZvciB0aGUgZ2xvYmFsIGZ1bmN0aW9uIG9mCisgICAgICAgdGhlIGZpbGVpbnB1dCBtb2R1bGUuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuX29yaWdfc3RhdGUgPSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgIHNlbGYuX29yaWdfRmlsZUlucHV0ID0gZmlsZWlucHV0LkZpbGVJbnB1dAorICAgICAgICBmaWxlaW5wdXQuRmlsZUlucHV0ID0gTW9ja0ZpbGVJbnB1dAorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBmaWxlaW5wdXQuRmlsZUlucHV0ID0gc2VsZi5fb3JpZ19GaWxlSW5wdXQKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IHNlbGYuX29yaWdfc3RhdGUKKworICAgIGRlZiBhc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihzZWxmLCBtb2NrX2ZpbGVfaW5wdXQsIG1ldGhvZF9uYW1lKToKKyAgICAgICAgIyBhc3NlcnQgdGhhdCB0aGUgbWV0aG9kIHdpdGggdGhlIGdpdmVuIG5hbWUgd2FzIGludm9rZWQgb25jZQorICAgICAgICBhY3R1YWxfY291bnQgPSBtb2NrX2ZpbGVfaW5wdXQuaW52b2NhdGlvbl9jb3VudHNbbWV0aG9kX25hbWVdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2NvdW50LCAxLCBtZXRob2RfbmFtZSkKKyAgICAgICAgIyBhc3NlcnQgdGhhdCBubyBvdGhlciB1bmV4cGVjdGVkIG1ldGhvZHMgd2VyZSBpbnZva2VkCisgICAgICAgIGFjdHVhbF90b3RhbF9jb3VudCA9IGxlbihtb2NrX2ZpbGVfaW5wdXQuaW52b2NhdGlvbl9jb3VudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3RvdGFsX2NvdW50LCAxKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9pbnB1dChCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5pbnB1dCgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZV9hbmRfc3RhdGVfZmlsZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgZmlsZWlucHV0LmlucHV0KCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lCisgICAgICAgICAgIGFuZCBpdHMgX2ZpbGUgYXR0cmlidXRlIGlzIGFsc28gbm90IE5vbmUuICBFeHBlY3QgUnVudGltZUVycm9yIHRvCisgICAgICAgICAgIGJlIHJhaXNlZCB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlIGFuZCBmb3IgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byAqbm90KiBiZSBtb2RpZmllZC4iIiIKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UuX2ZpbGUgPSBvYmplY3QoKQorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmlucHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoImlucHV0KCkgYWxyZWFkeSBhY3RpdmUiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzKGluc3RhbmNlLCBmaWxlaW5wdXQuX3N0YXRlLCAiZmlsZWlucHV0Ll9zdGF0ZSIpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZV9hbmRfc3RhdGVfZmlsZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBmaWxlaW5wdXQuaW5wdXQoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgYnV0IGl0cyBfZmlsZSBhdHRyaWJ1dGUgKmlzKiBOb25lLiAgRXhwZWN0IGl0IHRvIGNyZWF0ZSBhbmQgcmV0dXJuCisgICAgICAgICAgIGEgbmV3IGZpbGVpbnB1dC5GaWxlSW5wdXQgb2JqZWN0IHdpdGggYWxsIG1ldGhvZCBwYXJhbWV0ZXJzIHBhc3NlZAorICAgICAgICAgICBleHBsaWNpdGx5IHRvIHRoZSBfX2luaXRfXygpIG1ldGhvZDsgYWxzbyBlbnN1cmUgdGhhdAorICAgICAgICAgICBmaWxlaW5wdXQuX3N0YXRlIGlzIHNldCB0byB0aGUgcmV0dXJuZWQgaW5zdGFuY2UuIiIiCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLl9maWxlID0gTm9uZQorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgc2VsZi5kb190ZXN0X2NhbGxfaW5wdXQoKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgZmlsZWlucHV0LmlucHV0KCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUKKyAgICAgICAgICAgRXhwZWN0IGl0IHRvIGNyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGZpbGVpbnB1dC5GaWxlSW5wdXQgb2JqZWN0CisgICAgICAgICAgIHdpdGggYWxsIG1ldGhvZCBwYXJhbWV0ZXJzIHBhc3NlZCBleHBsaWNpdGx5IHRvIHRoZSBfX2luaXRfXygpCisgICAgICAgICAgIG1ldGhvZDsgYWxzbyBlbnN1cmUgdGhhdCBmaWxlaW5wdXQuX3N0YXRlIGlzIHNldCB0byB0aGUgcmV0dXJuZWQKKyAgICAgICAgICAgaW5zdGFuY2UuIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHNlbGYuZG9fdGVzdF9jYWxsX2lucHV0KCkKKworICAgIGRlZiBkb190ZXN0X2NhbGxfaW5wdXQoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmlucHV0KCkgY3JlYXRlcyBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0CisgICAgICAgICAgIG9iamVjdCwgcGFzc2luZyB0aGUgZ2l2ZW4gcGFyYW1ldGVycyB1bm1vZGlmaWVkIHRvCisgICAgICAgICAgIGZpbGVpbnB1dC5GaWxlSW5wdXQuX19pbml0X18oKS4gIE5vdGUgdGhhdCB0aGlzIHRlc3QgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgbW9ua2V5IHBhdGNoaW5nIG9mIGZpbGVpbnB1dC5GaWxlSW5wdXQgZG9uZSBieSBzZXRVcCgpLiIiIgorICAgICAgICBmaWxlcyA9IG9iamVjdCgpCisgICAgICAgIGlucGxhY2UgPSBvYmplY3QoKQorICAgICAgICBiYWNrdXAgPSBvYmplY3QoKQorICAgICAgICBidWZzaXplID0gb2JqZWN0KCkKKyAgICAgICAgbW9kZSA9IG9iamVjdCgpCisgICAgICAgIG9wZW5ob29rID0gb2JqZWN0KCkKKworICAgICAgICAjIGNhbGwgZmlsZWlucHV0LmlucHV0KCkgd2l0aCBkaWZmZXJlbnQgdmFsdWVzIGZvciBlYWNoIGFyZ3VtZW50CisgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5pbnB1dChmaWxlcz1maWxlcywgaW5wbGFjZT1pbnBsYWNlLCBiYWNrdXA9YmFja3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT1idWZzaXplLAorICAgICAgICAgICAgbW9kZT1tb2RlLCBvcGVuaG9vaz1vcGVuaG9vaykKKworICAgICAgICAjIGVuc3VyZSBmaWxlaW5wdXQuX3N0YXRlIHdhcyBzZXQgdG8gdGhlIHJldHVybmVkIG9iamVjdAorICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgZmlsZWlucHV0Ll9zdGF0ZSwgImZpbGVpbnB1dC5fc3RhdGUiKQorCisgICAgICAgICMgZW5zdXJlIHRoZSBwYXJhbWV0ZXJzIHRvIGZpbGVpbnB1dC5pbnB1dCgpIHdlcmUgcGFzc2VkIGRpcmVjdGx5CisgICAgICAgICMgdG8gRmlsZUlucHV0Ll9faW5pdF9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlcywgcmVzdWx0LmZpbGVzLCAiZmlsZXMiKQorICAgICAgICBzZWxmLmFzc2VydElzKGlucGxhY2UsIHJlc3VsdC5pbnBsYWNlLCAiaW5wbGFjZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYmFja3VwLCByZXN1bHQuYmFja3VwLCAiYmFja3VwIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhidWZzaXplLCByZXN1bHQuYnVmc2l6ZSwgImJ1ZnNpemUiKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZGUsIHJlc3VsdC5tb2RlLCAibW9kZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3Blbmhvb2ssIHJlc3VsdC5vcGVuaG9vaywgIm9wZW5ob29rIikKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfY2xvc2UoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuY2xvc2UoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCBmaWxlaW5wdXQuY2xvc2UoKSBkb2VzIG5vdGhpbmcgaWYgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICBpcyBOb25lIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIGZpbGVpbnB1dC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCBmaWxlaW5wdXQuY2xvc2UoKSBpbnZva2VzIGNsb3NlKCkgb24gZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICBhbmQgc2V0cyBfc3RhdGU9Tm9uZSIiIgorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgZmlsZWlucHV0LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImNsb3NlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfbmV4dGZpbGUoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQubmV4dGZpbGUoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lm5leHRmaWxlKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0Lm5leHRmaWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubmV4dGZpbGUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5uZXh0ZmlsZSgpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBuZXh0ZmlsZV9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJuZXh0ZmlsZSJdID0gbmV4dGZpbGVfcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQubmV4dGZpbGUoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAibmV4dGZpbGUiKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgbmV4dGZpbGVfcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9maWxlbmFtZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5maWxlbmFtZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5hbWUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuZmlsZW5hbWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5maWxlbmFtZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVuYW1lKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGZpbGVuYW1lX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImZpbGVuYW1lIl0gPSBmaWxlbmFtZV9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5maWxlbmFtZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJmaWxlbmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbmFtZV9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2xpbmVubyhCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5saW5lbm8oKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5saW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5saW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5saW5lbm8oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgbGluZW5vX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImxpbmVubyJdID0gbGluZW5vX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmxpbmVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJsaW5lbm8iKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgbGluZW5vX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZWxpbmVubyhCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5maWxlbGluZW5vKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5maWxlbGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVsaW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5maWxlbGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUuZmlsZWxpbmVubygpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbGluZW5vX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImZpbGVsaW5lbm8iXSA9IGZpbGVsaW5lbm9fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZWxpbmVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJmaWxlbGluZW5vIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGZpbGVsaW5lbm9fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9maWxlbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZW5vKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5maWxlbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuZmlsZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUuZmlsZW5vKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGZpbGVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbm8iXSA9IGZpbGVub19yZXR2YWwKKyAgICAgICAgaW5zdGFuY2UuZmlsZW5vX3JldHZhbCA9IGZpbGVub19yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5maWxlbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZW5vIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGZpbGVub19yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2lzZmlyc3RsaW5lKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmlzZmlyc3RsaW5lKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmlzZmlyc3RsaW5lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUuaXNmaXJzdGxpbmUoKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgaXNmaXJzdGxpbmVfcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siaXNmaXJzdGxpbmUiXSA9IGlzZmlyc3RsaW5lX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmlzZmlyc3RsaW5lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImlzZmlyc3RsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGlzZmlyc3RsaW5lX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfaXNzdGRpbihCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5pc3N0ZGluKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc3N0ZGluKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0Lmlzc3RkaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc3N0ZGluKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUuaXNzdGRpbigpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBpc3N0ZGluX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImlzc3RkaW4iXSA9IGlzc3RkaW5fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuaXNzdGRpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJpc3N0ZGluIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGlzc3RkaW5fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBJbnZvY2F0aW9uUmVjb3JkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnQgPSAwCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudCArPSAxCisgICAgICAgIHNlbGYubGFzdF9pbnZvY2F0aW9uID0gKGFyZ3MsIGt3YXJncykKKworY2xhc3MgVGVzdF9ob29rX2NvbXByZXNzZWQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoKSIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZha2Vfb3BlbiA9IEludm9jYXRpb25SZWNvcmRlcigpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCIiLCAxKQorCisgICAgZGVmIHRlc3Rfbm9fZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZCIsIDIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhnemlwLCAiUmVxdWlyZXMgZ3ppcCBhbmQgemxpYiIpCisgICAgZGVmIHRlc3RfZ3pfZXh0X2Zha2Uoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBnemlwLm9wZW4KKyAgICAgICAgZ3ppcC5vcGVuID0gc2VsZi5mYWtlX29wZW4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZCgidGVzdC5neiIsIDMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBnemlwLm9wZW4gPSBvcmlnaW5hbF9vcGVuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbiwgKCgidGVzdC5neiIsIDMpLCB7fSkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhiejIsICJSZXF1aXJlcyBiejIiKQorICAgIGRlZiB0ZXN0X2J6Ml9leHRfZmFrZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGJ6Mi5CWjJGaWxlID0gc2VsZi5mYWtlX29wZW4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZCgidGVzdC5iejIiLCA0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyLkJaMkZpbGUgPSBvcmlnaW5hbF9vcGVuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbiwgKCgidGVzdC5iejIiLCA0KSwge30pKQorCisgICAgZGVmIHRlc3RfYmxhaF9leHQoc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkLmJsYWgiLCA1KQorCisgICAgZGVmIHRlc3RfZ3pfZXh0X2J1aWx0aW4oc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkLkd6IiwgNikKKworICAgIGRlZiB0ZXN0X2J6Ml9leHRfYnVpbHRpbihzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QuQnoyIiwgNykKKworICAgIGRlZiBkb190ZXN0X3VzZV9idWlsdGluX29wZW4oc2VsZiwgZmlsZW5hbWUsIG1vZGUpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gc2VsZi5yZXBsYWNlX2J1aWx0aW5fb3BlbihzZWxmLmZha2Vfb3BlbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZChmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYucmVwbGFjZV9idWlsdGluX29wZW4ob3JpZ2luYWxfb3BlbikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4ubGFzdF9pbnZvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoZmlsZW5hbWUsIG1vZGUpLCB7fSkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHJlcGxhY2VfYnVpbHRpbl9vcGVuKG5ld19vcGVuX2Z1bmMpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgorICAgICAgICBidWlsdGlucy5vcGVuID0gbmV3X29wZW5fZnVuYworICAgICAgICByZXR1cm4gb3JpZ2luYWxfb3BlbgorCitjbGFzcyBUZXN0X2hvb2tfZW5jb2RlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgpIiIiCisKKyAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgZW5jb2RpbmcgPSBvYmplY3QoKQorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19lbmNvZGVkKGVuY29kaW5nKQorCisgICAgICAgIGZha2Vfb3BlbiA9IEludm9jYXRpb25SZWNvcmRlcigpCisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBidWlsdGlucy5vcGVuCisgICAgICAgIGJ1aWx0aW5zLm9wZW4gPSBmYWtlX29wZW4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvYmplY3QoKQorICAgICAgICAgICAgbW9kZSA9IG9iamVjdCgpCisgICAgICAgICAgICBvcGVuX3Jlc3VsdCA9IHJlc3VsdChmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ1aWx0aW5zLm9wZW4gPSBvcmlnaW5hbF9vcGVuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKworICAgICAgICBhcmdzLCBrd2FyZ3MgPSBmYWtlX29wZW4ubGFzdF9pbnZvY2F0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1swXSwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1sxXSwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhrd2FyZ3MucG9wKCdlbmNvZGluZycpLCBlbmNvZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrd2FyZ3MpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQnVmZmVyU2l6ZXNUZXN0cywgRmlsZUlucHV0VGVzdHMpCisgICAgcnVuX3VuaXR0ZXN0KAorICAgICAgICBCdWZmZXJTaXplc1Rlc3RzLAorICAgICAgICBGaWxlSW5wdXRUZXN0cywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfaW5wdXQsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2Nsb3NlLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9uZXh0ZmlsZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfZmlsZW5hbWUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2xpbmVubywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfZmlsZWxpbmVubywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfZmlsZW5vLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9pc2ZpcnN0bGluZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfaXNzdGRpbiwKKyAgICAgICAgVGVzdF9ob29rX2NvbXByZXNzZWQsCisgICAgICAgIFRlc3RfaG9va19lbmNvZGVkLAorICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQppbmRleCA4MjY3ZDllLi4xOTczN2Q5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQpAQCAtMiw2ICsyLDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgaW8KIGltcG9ydCBlcnJubwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGFycmF5IGltcG9ydCBhcnJheQpAQCAtMzczLDEwICszNzQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgMTApCiAgICAgICAgIGYudHJ1bmNhdGUoNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIG9zLlNFRUtfRU5EKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgaW8uU0VFS19FTkQpLCA1KQogICAgICAgICBmLnRydW5jYXRlKDE1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBvcy5TRUVLX0VORCksIDE1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBpby5TRUVLX0VORCksIDE1KQogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0VHJ1bmNhdGVPbldpbmRvd3Moc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5IGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQppbmRleCA0ZDdiYmJhLi41MDIyOTJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKQEAgLTg4LDcgKzg4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICIgIC0weDMucC0xICAiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgIiAgKzB4My5wLTEgICIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoIiAgMjUuZS0xICAiKSwgMi41KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuZmNtcChmbG9hdCgiICAuMjVlLTEgICIpLCAuMDI1KSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdCgiICAuMjVlLTEgICIpLCAuMDI1KQogCiAgICAgZGVmIHRlc3RfZmxvYXRjb252ZXJzaW9uKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IGNhbGxzIHRvIF9fZmxvYXRfXygpIHdvcmsgcHJvcGVybHkKQEAgLTg2MCwxNSArODYwLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKDFlMzAwICogMWUzMDAgKiAwKSwgIm5hbiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKC0xZTMwMCAqIDFlMzAwICogMCksICJuYW4iKQogCi0gICAgZGVmIG5vdGVzdF9mbG9hdF9uYW4oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShOQU4uaXNfbmFuKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoSU5GLmlzX25hbigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgwLikuaXNfbmFuKCkpCisgICAgZGVmIHRlc3RfaW5mX3NpZ25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJ2luZicpKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJy1pbmYnKSksIC0xLjApCiAKLSAgICBkZWYgbm90ZXN0X2Zsb2F0X2luZihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElORi5pc19pbmYoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShOQU4uaXNfaW5mKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDAuKS5pc19pbmYoKSkKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhnZXRhdHRyKHN5cywgJ2Zsb2F0X3JlcHJfc3R5bGUnLCAnJykgPT0gJ3Nob3J0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGllcyBvbmx5IHdoZW4gdXNpbmcgc2hvcnQgZmxvYXQgcmVwciBzdHlsZSIpCisgICAgZGVmIHRlc3RfbmFuX3NpZ25zKHNlbGYpOgorICAgICAgICAjIFdoZW4gdXNpbmcgdGhlIGR0b2EuYyBjb2RlLCB0aGUgc2lnbiBvZiBmbG9hdCgnbmFuJykgc2hvdWxkCisgICAgICAgICMgYmUgcHJlZGljdGFibGUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weXNpZ24oMS4wLCBmbG9hdCgnbmFuJykpLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weXNpZ24oMS4wLCBmbG9hdCgnLW5hbicpKSwgLTEuMCkKKwogCiBmcm9tSGV4ID0gZmxvYXQuZnJvbWhleAogdG9IZXggPSBmbG9hdC5oZXgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5IGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKaW5kZXggN2ZhOTUwZC4uYjZlMjU0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKQEAgLTEsNCArMSw1IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVGVzdEZhaWxlZAoraW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwogaW1wb3J0IHRlc3Quc3VwcG9ydCBhcyBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI2Myw2ICsyNjQsNTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgnIiUqZCIlKG1heHNpemUsIC0xMjcpIHNob3VsZCBmYWlsJykKIAorICAgIGRlZiB0ZXN0X25vbl9hc2NpaShzZWxmKToKKyAgICAgICAgdGVzdGZvcm1hdCgiXHUyMGFjPSVmIiwgKDEuMCwpLCAiXHUyMGFjPTEuMDAwMDAwIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgiYWJjIiwgIlx1MjAwNzw1IiksICJhYmNcdTIwMDdcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjMsICJcdTIwMDc8NSIpLCAiMTIzXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIuMywgIlx1MjAwNzw2IiksICIxMi4zXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMGosICJcdTIwMDc8NCIpLCAiMGpcdTIwMDdcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxKzJqLCAiXHUyMDA3PDgiKSwgIigxKzJqKVx1MjAwN1x1MjAwNyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoImFiYyIsICJcdTIwMDc+NSIpLCAiXHUyMDA3XHUyMDA3YWJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzLCAiXHUyMDA3PjUiKSwgIlx1MjAwN1x1MjAwNzEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyLjMsICJcdTIwMDc+NiIpLCAiXHUyMDA3XHUyMDA3MTIuMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDErMmosICJcdTIwMDc+OCIpLCAiXHUyMDA3XHUyMDA3KDErMmopIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMGosICJcdTIwMDc+NCIpLCAiXHUyMDA3XHUyMDA3MGoiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KCJhYmMiLCAiXHUyMDA3XjUiKSwgIlx1MjAwN2FiY1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMywgIlx1MjAwN141IiksICJcdTIwMDcxMjNcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMi4zLCAiXHUyMDA3XjYiKSwgIlx1MjAwNzEyLjNcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxKzJqLCAiXHUyMDA3XjgiKSwgIlx1MjAwNygxKzJqKVx1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3XjQiKSwgIlx1MjAwNzBqXHUyMDA3IikKKworICAgIGRlZiB0ZXN0X2xvY2FsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb2xkbG9jID0gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMKQorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCAnJykKKyAgICAgICAgZXhjZXB0IGxvY2FsZS5FcnJvciBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDYW5ub3Qgc2V0IGxvY2FsZToge30iLmZvcm1hdChlcnIpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2NhbGVjb252ID0gbG9jYWxlLmxvY2FsZWNvbnYoKQorICAgICAgICAgICAgc2VwID0gbG9jYWxlY29udlsndGhvdXNhbmRzX3NlcCddCisgICAgICAgICAgICBwb2ludCA9IGxvY2FsZWNvbnZbJ2RlY2ltYWxfcG9pbnQnXQorCisgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0KDEyMzQ1Njc4OSwgIm4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZXAsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQucmVwbGFjZShzZXAsICcnKSwgJzEyMzQ1Njc4OScpCisKKyAgICAgICAgICAgIHRleHQgPSBmb3JtYXQoMTIzNC41LCAibiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlcCwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocG9pbnQsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQucmVwbGFjZShzZXAsICcnKSwgJzEyMzQnICsgcG9pbnQgKyAnNScpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIG9sZGxvYykKKworCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGb3JtYXRUZXN0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDA4NGFlMGMuLjFmYWQ5MjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC00MDEsMTQgKzQwMSwxMCBAQAogCiAgICAgZGVmIHRlc3RNaXhpbmdXaXRoRGVjaW1hbChzZWxmKToKICAgICAgICAgIyBEZWNpbWFsIHJlZnVzZXMgbWl4ZWQgYXJpdGhtZXRpYyAoYnV0IG5vdCBtaXhlZCBjb21wYXJpc29ucykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgInVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZShzKSBmb3IgKzogJ0ZyYWN0aW9uJyBhbmQgJ0RlY2ltYWwnIiwKLSAgICAgICAgICAgIG9wZXJhdG9yLmFkZCwgRigzLDExKSwgRGVjaW1hbCgnMy4xNDE1OTI2JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICs6ICdEZWNpbWFsJyBhbmQgJ0ZyYWN0aW9uJyIsCi0gICAgICAgICAgICBvcGVyYXRvci5hZGQsIERlY2ltYWwoJzMuMTQxNTkyNicpLCBGKDMsMTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRigzLDExKSwgRGVjaW1hbCgnMy4xNDE1OTI2JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCczLjE0MTU5MjYnKSwgRigzLDExKSkKIAogICAgIGRlZiB0ZXN0Q29tcGFyaXNvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShGKDEsIDIpIDwgRigyLCAzKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5IGIvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkKaW5kZXggNTI0M2ViYi4uZmQ2NzYxYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkKQEAgLTUsNiArNSwxMiBAQAogaW1wb3J0IHN5cwogCiBjbGFzcyBGcm96ZW5UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBtb2R1bGVfYXR0cnMgPSBmcm96ZW5zZXQoWydfX2J1aWx0aW5zX18nLCAnX19jYWNoZWRfXycsICdfX2RvY19fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyddKQorICAgIHBhY2thZ2VfYXR0cnMgPSBmcm96ZW5zZXQobGlzdChtb2R1bGVfYXR0cnMpICsgWydfX3BhdGhfXyddKQorCiAgICAgZGVmIHRlc3RfZnJvemVuKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIHRyeToKQEAgLTEyLDcgKzE4LDkgQEAKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaW1wb3J0IF9faGVsbG9fXyBmYWlsZWQ6IiArIHN0cih4KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX19oZWxsb19fLmluaXRpYWxpemVkLCBUcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlyKF9faGVsbG9fXykpLCA3LCBkaXIoX19oZWxsb19fKSkKKyAgICAgICAgICAgIGV4cGVjdCA9IHNldChzZWxmLm1vZHVsZV9hdHRycykKKyAgICAgICAgICAgIGV4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX2hlbGxvX18pKSwgZXhwZWN0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKIAogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKQEAgLTIxLDEwICsyOSwxMyBAQAogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIHg6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJpbXBvcnQgX19waGVsbG9fXyBmYWlsZWQ6IiArIHN0cih4KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX19waGVsbG9fXy5pbml0aWFsaXplZCwgVHJ1ZSkKKyAgICAgICAgICAgIGV4cGVjdCA9IHNldChzZWxmLnBhY2thZ2VfYXR0cnMpCisgICAgICAgICAgICBleHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCiAgICAgICAgICAgICBpZiBub3QgIl9fcGhlbGxvX18uc3BhbSIgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlyKF9fcGhlbGxvX18pKSwgOCwgZGlyKF9fcGhlbGxvX18pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fKSksIGV4cGVjdCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlyKF9fcGhlbGxvX18pKSwgOSwgZGlyKF9fcGhlbGxvX18pKQorICAgICAgICAgICAgICAgIGV4cGVjdC5hZGQoJ3NwYW0nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fKSksIGV4cGVjdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX19waGVsbG9fXy5fX3BhdGhfXywgW19fcGhlbGxvX18uX19uYW1lX19dKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKIApAQCAtMzQsOCArNDUsMTMgQEAKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaW1wb3J0IF9fcGhlbGxvX18uc3BhbSBmYWlsZWQ6IiArIHN0cih4KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX19waGVsbG9fXy5zcGFtLmluaXRpYWxpemVkLCBUcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlyKF9fcGhlbGxvX18uc3BhbSkpLCA3KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlyKF9fcGhlbGxvX18pKSwgOSkKKyAgICAgICAgICAgIHNwYW1fZXhwZWN0ID0gc2V0KHNlbGYubW9kdWxlX2F0dHJzKQorICAgICAgICAgICAgc3BhbV9leHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXy5zcGFtKSksIHNwYW1fZXhwZWN0KQorICAgICAgICAgICAgcGhlbGxvX2V4cGVjdCA9IHNldChzZWxmLnBhY2thZ2VfYXR0cnMpCisgICAgICAgICAgICBwaGVsbG9fZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQorICAgICAgICAgICAgcGhlbGxvX2V4cGVjdC5hZGQoJ3NwYW0nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18pKSwgcGhlbGxvX2V4cGVjdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQppbmRleCA3MWJjMjNlLi44MjRiN2MxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQpAQCAtMjIsMTAgKzIyLDI1IEBACiB0aHJlYWRpbmcgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCiAKICMgdGhlIGR1bW15IGRhdGEgcmV0dXJuZWQgYnkgc2VydmVyIG92ZXIgdGhlIGRhdGEgY2hhbm5lbCB3aGVuCi0jIFJFVFIsIExJU1QgYW5kIE5MU1QgY29tbWFuZHMgYXJlIGlzc3VlZAorIyBSRVRSLCBMSVNULCBOTFNULCBNTFNEIGNvbW1hbmRzIGFyZSBpc3N1ZWQKIFJFVFJfREFUQSA9ICdhYmNkZTEyMzQ1XHJcbicgKiAxMDAwCiBMSVNUX0RBVEEgPSAnZm9vXHJcbmJhclxyXG4nCiBOTFNUX0RBVEEgPSAnZm9vXHJcbmJhclxyXG4nCitNTFNEX0RBVEEgPSAoInR5cGU9Y2RpcjtwZXJtPWVsO3VuaXF1ZT09a2VWTzErWkY0OyB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAidHlwZT1wZGlyO3Blcm09ZTt1bmlxdWU9PWtlVk8xK2Q/MzsgLi5cclxuIgorICAgICAgICAgICAgICJ0eXBlPU9TLnVuaXg9c2xpbms6L2Zvb2JhcjtwZXJtPTt1bmlxdWU9PWtlVk8xKzRHNDsgZm9vYmFyXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1PUy51bml4PWNoci0xMy8yOTtwZXJtPTt1bmlxdWU9PWtlVk8xKzVHNDsgZGV2aWNlXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1PUy51bml4PWJsay0xMS8xMDg7cGVybT07dW5pcXVlPT1rZVZPMSs2RzQ7IGJsb2NrXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09YXdyO3VuaXF1ZT09a2VWTzErOEc0OyB3cml0YWJsZVxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09Y3BtZWw7dW5pcXVlPT1rZVZPMSs3RzQ7IHByb21pc2N1b3VzXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1kaXI7cGVybT07dW5pcXVlPT1rZVZPMSsxdDI7IG5vLWV4ZWNcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErRUc0OyB0d28gd29yZHNcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErSUg0OyAgbGVhZGluZyBzcGFjZVxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGUxXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1kaXI7cGVybT1jcG1lbDt1bmlxdWU9PWtlVk8xKzdHNDsgaW5jb21pbmdcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlMlxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGUzXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTRcclxuIikKIAogCiBjbGFzcyBEdW1teURUUEhhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CkBAIC00OSw2ICs2NCwxMSBAQAogICAgICAgICAgICAgc2VsZi5kdHBfY29ubl9jbG9zZWQgPSBUcnVlCiAKICAgICBkZWYgcHVzaChzZWxmLCB3aGF0KToKKyAgICAgICAgaWYgc2VsZi5iYXNlY2xhc3MubmV4dF9kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2hhdCA9IHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YQorICAgICAgICAgICAgc2VsZi5iYXNlY2xhc3MubmV4dF9kYXRhID0gTm9uZQorICAgICAgICBpZiBub3Qgd2hhdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNsb3NlX3doZW5fZG9uZSgpCiAgICAgICAgIHN1cGVyKER1bW15RFRQSGFuZGxlciwgc2VsZikucHVzaCh3aGF0LmVuY29kZSgnYXNjaWknKSkKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6CkBAIC02OSw2ICs4OSw3IEBACiAgICAgICAgIHNlbGYubGFzdF9yZWNlaXZlZF9jbWQgPSBOb25lCiAgICAgICAgIHNlbGYubGFzdF9yZWNlaXZlZF9kYXRhID0gJycKICAgICAgICAgc2VsZi5uZXh0X3Jlc3BvbnNlID0gJycKKyAgICAgICAgc2VsZi5uZXh0X2RhdGEgPSBOb25lCiAgICAgICAgIHNlbGYucmVzdCA9IE5vbmUKICAgICAgICAgc2VsZi5wdXNoKCcyMjAgd2VsY29tZScpCiAKQEAgLTEwNCw3ICsxMjUsNyBAQAogICAgICAgICBhZGRyID0gbGlzdChtYXAoaW50LCBhcmcuc3BsaXQoJywnKSkpCiAgICAgICAgIGlwID0gJyVkLiVkLiVkLiVkJyAldHVwbGUoYWRkcls6NF0pCiAgICAgICAgIHBvcnQgPSAoYWRkcls0XSAqIDI1NikgKyBhZGRyWzVdCi0gICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0xMCkKKyAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaXAsIHBvcnQpLCB0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuZHRwID0gc2VsZi5kdHBfaGFuZGxlcihzLCBiYXNlY2xhc3M9c2VsZikKICAgICAgICAgc2VsZi5wdXNoKCcyMDAgYWN0aXZlIGRhdGEgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpCiAKQEAgLTEyMiw3ICsxNDMsNyBAQAogICAgIGRlZiBjbWRfZXBydChzZWxmLCBhcmcpOgogICAgICAgICBhZiwgaXAsIHBvcnQgPSBhcmcuc3BsaXQoYXJnWzBdKVsxOi0xXQogICAgICAgICBwb3J0ID0gaW50KHBvcnQpCi0gICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0xMCkKKyAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaXAsIHBvcnQpLCB0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuZHRwID0gc2VsZi5kdHBfaGFuZGxlcihzLCBiYXNlY2xhc3M9c2VsZikKICAgICAgICAgc2VsZi5wdXNoKCcyMDAgYWN0aXZlIGRhdGEgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpCiAKQEAgLTIxMyw2ICsyMzQsMTQgQEAKICAgICAgICAgc2VsZi5kdHAucHVzaChOTFNUX0RBVEEpCiAgICAgICAgIHNlbGYuZHRwLmNsb3NlX3doZW5fZG9uZSgpCiAKKyAgICBkZWYgY21kX29wdHMoc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCcyMDAgb3B0cyBvaycpCisKKyAgICBkZWYgY21kX21sc2Qoc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCcxMjUgbWxzZCBvaycpCisgICAgICAgIHNlbGYuZHRwLnB1c2goTUxTRF9EQVRBKQorICAgICAgICBzZWxmLmR0cC5jbG9zZV93aGVuX2RvbmUoKQorCiAKIGNsYXNzIER1bW15RlRQU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIsIHRocmVhZGluZy5UaHJlYWQpOgogCkBAIC0yNzQsMTEgKzMwMywxMSBAQAogICAgICAgICBfc3NsX2Nsb3NpbmcgPSBGYWxzZQogCiAgICAgICAgIGRlZiBzZWN1cmVfY29ubmVjdGlvbihzZWxmKToKLSAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc2VydmVyX3NpZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29ja2V0KQogICAgICAgICAgICAgc2VsZi5fc3NsX2FjY2VwdGluZyA9IFRydWUKIApAQCAtMzEzLDcgKzM0MiwxMCBAQAogICAgICAgICAgICAgICAgICMgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL29wZW5zc2wtdXNlcnNAb3BlbnNzbC5vcmcvbXNnNjA3MTAuaHRtbAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHNlbGYuX3NzbF9jbG9zaW5nID0gRmFsc2UKLSAgICAgICAgICAgIHN1cGVyKFNTTENvbm5lY3Rpb24sIHNlbGYpLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwgJ19jY2MnLCBGYWxzZSkgaXMgRmFsc2U6CisgICAgICAgICAgICAgICAgc3VwZXIoU1NMQ29ubmVjdGlvbiwgc2VsZikuY2xvc2UoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZGVmIGhhbmRsZV9yZWFkX2V2ZW50KHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fc3NsX2FjY2VwdGluZzoKQEAgLTM4MSwxMiArNDEzLDE4IEBACiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKICAgICAgICAgICAgIER1bW15RlRQSGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgc2VsZi5zZWN1cmVfZGF0YV9jaGFubmVsID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX2NjYyA9IEZhbHNlCiAKICAgICAgICAgZGVmIGNtZF9hdXRoKHNlbGYsIGxpbmUpOgogICAgICAgICAgICAgIiIiU2V0IHVwIHNlY3VyZSBjb250cm9sIGNoYW5uZWwuIiIiCiAgICAgICAgICAgICBzZWxmLnB1c2goJzIzNCBBVVRIIFRMUyBzdWNjZXNzZnVsJykKICAgICAgICAgICAgIHNlbGYuc2VjdXJlX2Nvbm5lY3Rpb24oKQogCisgICAgICAgIGRlZiBjbWRfY2NjKHNlbGYsIGxpbmUpOgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyMjAgUmV2ZXJ0aW5nIGJhY2sgdG8gY2xlYXItdGV4dCcpCisgICAgICAgICAgICBzZWxmLl9jY2MgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9kb19zc2xfc2h1dGRvd24oKQorCiAgICAgICAgIGRlZiBjbWRfcGJzeihzZWxmLCBsaW5lKToKICAgICAgICAgICAgICIiIk5lZ290aWF0ZSBzaXplIG9mIGJ1ZmZlciBmb3Igc2VjdXJlIGRhdGEgdHJhbnNmZXIuCiAgICAgICAgICAgICBGb3IgVExTL1NTTCB0aGUgb25seSB2YWxpZCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlciBpcyAnMCcuCkBAIC00MTYsMTMgKzQ1NCwxNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQogICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKIAorICAgIGRlZiBjaGVja19kYXRhKHNlbGYsIHJlY2VpdmVkLCBleHBlY3RlZCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2VpdmVkKSwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNlaXZlZCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9nZXR3ZWxjb21lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LmdldHdlbGNvbWUoKSwgJzIyMCB3ZWxjb21lJykKIApAQCAtNTA0LDcgKzU0Niw3IEBACiAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQoZGF0YS5kZWNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgc2VsZi5jbGllbnQucmV0cmJpbmFyeSgncmV0cicsIGNhbGxiYWNrKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YSgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBKQogCiAgICAgZGVmIHRlc3RfcmV0cmJpbmFyeV9yZXN0KHNlbGYpOgogICAgICAgICBkZWYgY2FsbGJhY2soZGF0YSk6CkBAIC01MTIsMjAgKzU1NCwxNyBAQAogICAgICAgICBmb3IgcmVzdCBpbiAoMCwgMTAsIDIwKToKICAgICAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgICAgIHNlbGYuY2xpZW50LnJldHJiaW5hcnkoJ3JldHInLCBjYWxsYmFjaywgcmVzdD1yZXN0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBW3Jlc3Q6XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdyZXN0IHRlc3QgY2FzZSAlZCAlZCAlZCcgJSAocmVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKCcnLmpvaW4ocmVjZWl2ZWQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKFJFVFJfREFUQVtyZXN0Ol0pKSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZGF0YSgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBW3Jlc3Q6XSkKIAogICAgIGRlZiB0ZXN0X3JldHJsaW5lcyhzZWxmKToKICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICBzZWxmLmNsaWVudC5yZXRybGluZXMoJ3JldHInLCByZWNlaXZlZC5hcHBlbmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQS5yZXBsYWNlKCdcclxuJywgJycpKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQS5yZXBsYWNlKCdcclxuJywgJycpKQogCiAgICAgZGVmIHRlc3Rfc3RvcmJpbmFyeShzZWxmKToKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oUkVUUl9EQVRBLmVuY29kZSgnYXNjaWknKSkKICAgICAgICAgc2VsZi5jbGllbnQuc3RvcmJpbmFyeSgnc3RvcicsIGYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5sYXN0X3JlY2VpdmVkX2RhdGEsIFJFVFJfREFUQSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCiAgICAgICAgICMgdGVzdCBuZXcgY2FsbGJhY2sgYXJnCiAgICAgICAgIGZsYWcgPSBbXQogICAgICAgICBmLnNlZWsoMCkKQEAgLTU0Miw3ICs1ODEsNyBAQAogICAgIGRlZiB0ZXN0X3N0b3JsaW5lcyhzZWxmKToKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oUkVUUl9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKS5lbmNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHNlbGYuY2xpZW50LnN0b3JsaW5lcygnc3RvcicsIGYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5sYXN0X3JlY2VpdmVkX2RhdGEsIFJFVFJfREFUQSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCiAgICAgICAgICMgdGVzdCBuZXcgY2FsbGJhY2sgYXJnCiAgICAgICAgIGZsYWcgPSBbXQogICAgICAgICBmLnNlZWsoMCkKQEAgLTU1OCw2ICs1OTcsNjQgQEAKICAgICAgICAgc2VsZi5jbGllbnQuZGlyKGxhbWJkYSB4OiBsLmFwcGVuZCh4KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGwpLCBMSVNUX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKIAorICAgIGRlZiB0ZXN0X21sc2Qoc2VsZik6CisgICAgICAgIGxpc3Qoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBsaXN0KHNlbGYuY2xpZW50Lm1sc2QocGF0aD0nLycpKQorICAgICAgICBsaXN0KHNlbGYuY2xpZW50Lm1sc2QocGF0aD0nLycsIGZhY3RzPVsnc2l6ZScsICd0eXBlJ10pKQorCisgICAgICAgIGxzID0gbGlzdChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIGZvciBuYW1lLCBmYWN0cyBpbiBsczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShuYW1lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmFjdHMsIGRpY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3R5cGUnLCBmYWN0cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Blcm0nLCBmYWN0cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3VuaXF1ZScsIGZhY3RzKQorCisgICAgICAgIGRlZiBzZXRfZGF0YShkYXRhKToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubmV4dF9kYXRhID0gZGF0YQorCisgICAgICAgIGRlZiB0ZXN0X2VudHJ5KGxpbmUsIHR5cGU9Tm9uZSwgcGVybT1Ob25lLCB1bmlxdWU9Tm9uZSwgbmFtZT1Ob25lKToKKyAgICAgICAgICAgIHR5cGUgPSAndHlwZScgaWYgdHlwZSBpcyBOb25lIGVsc2UgdHlwZQorICAgICAgICAgICAgcGVybSA9ICdwZXJtJyBpZiBwZXJtIGlzIE5vbmUgZWxzZSBwZXJtCisgICAgICAgICAgICB1bmlxdWUgPSAndW5pcXVlJyBpZiB1bmlxdWUgaXMgTm9uZSBlbHNlIHVuaXF1ZQorICAgICAgICAgICAgbmFtZSA9ICduYW1lJyBpZiBuYW1lIGlzIE5vbmUgZWxzZSBuYW1lCisgICAgICAgICAgICBzZXRfZGF0YShsaW5lKQorICAgICAgICAgICAgX25hbWUsIGZhY3RzID0gbmV4dChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9uYW1lLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWN0c1sndHlwZSddLCB0eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWN0c1sncGVybSddLCBwZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWN0c1sndW5pcXVlJ10sIHVuaXF1ZSkKKworICAgICAgICAjIHBsYWluCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nKQorICAgICAgICAjICI9IiBpbiBmYWN0IHZhbHVlCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHk9cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJywgdHlwZT0idHk9cGUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9Ij10eXBlIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10PXk9cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJywgdHlwZT0idD15PXBlIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT09PT09O3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9Ij09PT0iKQorICAgICAgICAjIHNwYWNlcyBpbiBuYW1lCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmEgbWVcclxuJywgbmFtZT0ibmEgbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWUgXHJcbicsIG5hbWU9Im5hbWUgIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyAgbmFtZVxyXG4nLCBuYW1lPSIgbmFtZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbiBhbSAgZVxyXG4nLCBuYW1lPSJuIGFtICBlIikKKyAgICAgICAgIyAiOyIgaW4gbmFtZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hO21lXHJcbicsIG5hbWU9Im5hO21lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyA7bmFtZVxyXG4nLCBuYW1lPSI7bmFtZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgO25hbWU7XHJcbicsIG5hbWU9IjtuYW1lOyIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgOzs7O1xyXG4nLCBuYW1lPSI7Ozs7IikKKyAgICAgICAgIyBjYXNlIHNlbnNpdGl2ZW5lc3MKKyAgICAgICAgc2V0X2RhdGEoJ1R5cGU9dHlwZTtUeVBlPXBlcm07VU5JUVVFPXVuaXF1ZTsgbmFtZVxyXG4nKQorICAgICAgICBfbmFtZSwgZmFjdHMgPSBuZXh0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgZm9yIHggaW4gZmFjdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc2xvd2VyKCkpCisgICAgICAgICMgbm8gZGF0YSAoZGlyZWN0b3J5IGVtcHR5KQorICAgICAgICBzZXRfZGF0YSgnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBzZXRfZGF0YSgnJykKKyAgICAgICAgZm9yIHggaW4gc2VsZi5jbGllbnQubWxzZCgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJ1bmV4cGVjdGVkIGRhdGEgJXMiICUgZGF0YSkKKwogICAgIGRlZiB0ZXN0X21ha2Vwb3J0KHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuY2xpZW50Lm1ha2Vwb3J0KCk6CiAgICAgICAgICAgICAjIElQdjQgaXMgaW4gdXNlLCBqdXN0IG1ha2Ugc3VyZSBzZW5kX2VwcnQgaGFzIG5vdCBiZWVuIHVzZWQKQEAgLTU4NCw3ICs2ODEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIGJhc2UgdGVzdAotICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0xMCkgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PTIpIGFzIHNlbGYuY2xpZW50OgogICAgICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY2xpZW50X2Nvbm5lY3RlZCgpKQpAQCAtNTkyLDcgKzY4OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY2xpZW50X2Nvbm5lY3RlZCgpKQogCiAgICAgICAgICMgUVVJVCBzZW50IGluc2lkZSB0aGUgd2l0aCBibG9jawotICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0xMCkgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PTIpIGFzIHNlbGYuY2xpZW50OgogICAgICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKQEAgLTYwMiw3ICs2OTksNyBAQAogICAgICAgICAjIGZvcmNlIGEgd3JvbmcgcmVzcG9uc2UgY29kZSB0byBiZSBzZW50IG9uIFFVSVQ6IGVycm9yX3Blcm0KICAgICAgICAgIyBpcyBleHBlY3RlZCBhbmQgdGhlIGNvbm5lY3Rpb24gaXMgc3VwcG9zZWQgdG8gYmUgY2xvc2VkCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PTEwKSBhcyBzZWxmLmNsaWVudDoKKyAgICAgICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PTIpIGFzIHNlbGYuY2xpZW50OgogICAgICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5zZW5kY21kKCdub29wJykKICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLm5leHRfcmVzcG9uc2UgPSAnNTUwIGVycm9yIG9uIHF1aXQnCkBAIC02MTYsNiArNzEzLDMwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5sYXN0X3JlY2VpdmVkX2NtZCwgJ3F1aXQnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKIAorICAgIGRlZiB0ZXN0X3NvdXJjZV9hZGRyZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9KEhPU1QsIHBvcnQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5zb2NrLmdldHNvY2tuYW1lKClbMV0sIHBvcnQpCisgICAgICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFERFJJTlVTRToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb3VsZG4ndCBiaW5kIHRvIHBvcnQgJWQiICUgcG9ydCkKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfYWRkcmVzc19wYXNzaXZlX2Nvbm5lY3Rpb24oc2VsZik6CisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICBzZWxmLmNsaWVudC5zb3VyY2VfYWRkcmVzcyA9IChIT1NULCBwb3J0KQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuY2xpZW50LnRyYW5zZmVyY21kKCdsaXN0JykgYXMgc29jazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2suZ2V0c29ja25hbWUoKVsxXSwgcG9ydCkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFERFJJTlVTRToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb3VsZG4ndCBiaW5kIHRvIHBvcnQgJWQiICUgcG9ydCkKKyAgICAgICAgICAgIHJhaXNlCisKICAgICBkZWYgdGVzdF9wYXJzZTI1NyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHBsaWIucGFyc2UyNTcoJzI1NyAiL2Zvby9iYXIiJyksICcvZm9vL2JhcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwbGliLnBhcnNlMjU3KCcyNTcgIi9mb28vYmFyIiBjcmVhdGVkJyksICcvZm9vL2JhcicpCkBAIC02MzIsNyArNzUzLDcgQEAKIGNsYXNzIFRlc3RJUHY2RW52aXJvbm1lbnQoVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15RlRQU2VydmVyKChIT1NULCAwKSwgYWY9c29ja2V0LkFGX0lORVQ2KQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15RlRQU2VydmVyKCgnOjoxJywgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQogICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFAoKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCkBAIC02NjEsNiArNzgyLDcgQEAKICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQoZGF0YS5kZWNvZGUoJ2FzY2lpJykpCiAgICAgICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5yZXRyYmluYXJ5KCdyZXRyJywgY2FsbGJhY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbignJy5qb2luKHJlY2VpdmVkKSksIGxlbihSRVRSX0RBVEEpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBKQogICAgICAgICBzZWxmLmNsaWVudC5zZXRfcGFzdihUcnVlKQogICAgICAgICByZXRyKCkKQEAgLTY3Niw3ICs3OTgsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVRMU19GVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgIyBlbmFibGUgVExTCiAgICAgICAgIHNlbGYuY2xpZW50LmF1dGgoKQpAQCAtNjg5LDcgKzgxMSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15VExTX0ZUUFNlcnZlcigoSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNzQ5LDcgKzg3MSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ0cGxpYi5GVFBfVExTLCBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1DRVJURklMRSwgY29udGV4dD1jdHgpCiAKLSAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyhjb250ZXh0PWN0eCwgdGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyhjb250ZXh0PWN0eCwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShzZWxmLmNsaWVudC5zb2NrLCBzc2wuU1NMU29ja2V0KQogICAgICAgICBzZWxmLmNsaWVudC5hdXRoKCkKQEAgLTc2MSw0NSArODgzLDUzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNvY2suY29udGV4dCwgY3R4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCiAKKyAgICBkZWYgdGVzdF9jY2Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuY2xpZW50LmNjYykKKyAgICAgICAgc2VsZi5jbGllbnQubG9naW4oc2VjdXJlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmNsaWVudC5zb2NrLCBzc2wuU1NMU29ja2V0KQorICAgICAgICBzZWxmLmNsaWVudC5jY2MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5zb2NrLnVud3JhcCkKKwogCiBjbGFzcyBUZXN0VGltZW91dHMoVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmV2dCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgc2VsZi5zb2NrLnNldHRpbWVvdXQoMTApCisgICAgICAgIHNlbGYuc29jay5zZXR0aW1lb3V0KDIwKQogICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNvY2spCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2VydmVyLCBhcmdzPShzZWxmLmV2dCxzZWxmLnNvY2spKS5zdGFydCgpCisgICAgICAgIHNlbGYuc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2VydmVyKQorICAgICAgICBzZWxmLnNlcnZlcl90aHJlYWQuc3RhcnQoKQogICAgICAgICAjIFdhaXQgZm9yIHRoZSBzZXJ2ZXIgdG8gYmUgcmVhZHkuCiAgICAgICAgIHNlbGYuZXZ0LndhaXQoKQogICAgICAgICBzZWxmLmV2dC5jbGVhcigpCisgICAgICAgIHNlbGYub2xkX3BvcnQgPSBmdHBsaWIuRlRQLnBvcnQKICAgICAgICAgZnRwbGliLkZUUC5wb3J0ID0gc2VsZi5wb3J0CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHNlbGYuZXZ0LndhaXQoKQotICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorICAgICAgICBmdHBsaWIuRlRQLnBvcnQgPSBzZWxmLm9sZF9wb3J0CisgICAgICAgIHNlbGYuc2VydmVyX3RocmVhZC5qb2luKCkKIAotICAgIGRlZiBzZXJ2ZXIoc2VsZiwgZXZ0LCBzZXJ2KToKKyAgICBkZWYgc2VydmVyKHNlbGYpOgogICAgICAgICAjIFRoaXMgbWV0aG9kIHNldHMgdGhlIGV2dCAzIHRpbWVzOgogICAgICAgICAjICAxKSB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIGJlIGFjY2VwdGVkLgogICAgICAgICAjICAyKSB3aGVuIGl0IGlzIHNhZmUgZm9yIHRoZSBjYWxsZXIgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24KICAgICAgICAgIyAgMykgd2hlbiB3ZSBoYXZlIGNsb3NlZCB0aGUgc29ja2V0Ci0gICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKICAgICAgICAgIyAoMSkgU2lnbmFsIHRoZSBjYWxsZXIgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gYWNjZXB0IHRoZSBjb25uZWN0aW9uLgotICAgICAgICBldnQuc2V0KCkKKyAgICAgICAgc2VsZi5ldnQuc2V0KCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKKyAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNvY2suYWNjZXB0KCkKICAgICAgICAgZXhjZXB0IHNvY2tldC50aW1lb3V0OgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29ubi5zZW5kKGIiMSBIb2xhIG11bmRvXG4iKQorICAgICAgICAgICAgY29ubi5zZW5kYWxsKGIiMSBIb2xhIG11bmRvXG4iKQorICAgICAgICAgICAgY29ubi5zaHV0ZG93bihzb2NrZXQuU0hVVF9XUikKICAgICAgICAgICAgICMgKDIpIFNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgaXQgaXMgc2FmZSB0byBjbG9zZSB0aGUgc29ja2V0LgotICAgICAgICAgICAgZXZ0LnNldCgpCisgICAgICAgICAgICBzZWxmLmV2dC5zZXQoKQogICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZXJ2LmNsb3NlKCkKLSAgICAgICAgICAgICMgKDMpIFNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgd2UgYXJlIGRvbmUuCi0gICAgICAgICAgICBldnQuc2V0KCkKKyAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCiAKICAgICBkZWYgdGVzdFRpbWVvdXREZWZhdWx0KHNlbGYpOgogICAgICAgICAjIGRlZmF1bHQgLS0gdXNlIGdsb2JhbCBzb2NrZXQgdGltZW91dApAQCAtODU3LDEzICs5ODcsOCBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHNdCi0gICAgaWYgc29ja2V0Lmhhc19pcHY2OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0SVB2NkVudmlyb25tZW50KQorICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgorICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdElQdjZFbnZpcm9ubWVudCkKIAogICAgIGlmIHNzbCBpcyBub3QgTm9uZToKICAgICAgICAgdGVzdHMuZXh0ZW5kKFtUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weQppbmRleCA0ZDE5MzY4Li5jOGVkODMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weQpAQCAtMiw2ICsyLDE1IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCisKK2RlZiBnbG9iYWxfZnVuY3Rpb24oKToKKyAgICBkZWYgaW5uZXJfZnVuY3Rpb24oKToKKyAgICAgICAgY2xhc3MgTG9jYWxDbGFzczoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIExvY2FsQ2xhc3MKKyAgICByZXR1cm4gbGFtYmRhOiBpbm5lcl9mdW5jdGlvbgorCisKIGNsYXNzIEZ1bmNBdHRyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgY2xhc3MgRjoKQEAgLTk2LDYgKzEwNSwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmkuYS5fX25hbWVfXywgJ2EnKQogICAgICAgICBzZWxmLmNhbm5vdF9zZXRfYXR0cihzZWxmLmZpLmEsICJfX25hbWVfXyIsICdhJywgQXR0cmlidXRlRXJyb3IpCiAKKyAgICBkZWYgdGVzdF9fX3F1YWxuYW1lX18oc2VsZik6CisgICAgICAgICMgUEVQIDMxNTUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmIuX19xdWFsbmFtZV9fLCAnRnVuY0F0dHJzVGVzdC5zZXRVcC48bG9jYWxzPi5iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGdW5jQXR0cnNUZXN0LnNldFVwLl9fcXVhbG5hbWVfXywgJ0Z1bmNBdHRyc1Rlc3Quc2V0VXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbi5fX3F1YWxuYW1lX18sICdnbG9iYWxfZnVuY3Rpb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsX2Z1bmN0aW9uLjxsb2NhbHM+LjxsYW1iZGE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfZnVuY3Rpb24oKSgpLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsX2Z1bmN0aW9uLjxsb2NhbHM+LmlubmVyX2Z1bmN0aW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfZnVuY3Rpb24oKSgpKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uaW5uZXJfZnVuY3Rpb24uPGxvY2Fscz4uTG9jYWxDbGFzcycpCisgICAgICAgIHNlbGYuYi5fX3F1YWxuYW1lX18gPSAnYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmIuX19xdWFsbmFtZV9fLCAnYycpCisgICAgICAgIHNlbGYuYi5fX3F1YWxuYW1lX18gPSAnZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmIuX19xdWFsbmFtZV9fLCAnZCcpCisgICAgICAgICMgX19xdWFsbmFtZV9fIG11c3QgYmUgYSBzdHJpbmcKKyAgICAgICAgc2VsZi5jYW5ub3Rfc2V0X2F0dHIoc2VsZi5iLCAnX19xdWFsbmFtZV9fJywgNywgVHlwZUVycm9yKQorCiAgICAgZGVmIHRlc3RfX19jb2RlX18oc2VsZik6CiAgICAgICAgIG51bV9vbmUsIG51bV90d28gPSA3LCA4CiAgICAgICAgIGRlZiBhKCk6IHBhc3MKQEAgLTMxNSwxMSArMzQyLDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLl9fZnVuY19fIGlzIGYpCiAKIAorY2xhc3MgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgWFhYIE5vdCBzdXJlIHdoZXJlIHRoaXMgc2hvdWxkIHJlYWxseSBnbyBzaW5jZSBJIGNhbid0IGZpbmQgYQorICAgICMgdGVzdCBtb2R1bGUgc3BlY2lmaWNhbGx5IGZvciBidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZC4KKworICAgIGRlZiB0ZXN0X2J1aWx0aW5fX3F1YWxuYW1lX18oc2VsZik6CisgICAgICAgIGltcG9ydCB0aW1lCisKKyAgICAgICAgIyBidWlsdGluIGZ1bmN0aW9uOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbi5fX3F1YWxuYW1lX18sICdsZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUudGltZS5fX3F1YWxuYW1lX18sICd0aW1lJykKKworICAgICAgICAjIGJ1aWx0aW4gY2xhc3NtZXRob2Q6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdC5mcm9ta2V5cy5fX3F1YWxuYW1lX18sICdkaWN0LmZyb21rZXlzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdC5fX2dldGZvcm1hdF9fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvYXQuX19nZXRmb3JtYXRfXycpCisKKyAgICAgICAgIyBidWlsdGluIHN0YXRpY21ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIubWFrZXRyYW5zLl9fcXVhbG5hbWVfXywgJ3N0ci5tYWtldHJhbnMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzLm1ha2V0cmFucy5fX3F1YWxuYW1lX18sICdieXRlcy5tYWtldHJhbnMnKQorCisgICAgICAgICMgYnVpbHRpbiBib3VuZCBpbnN0YW5jZSBtZXRob2Q6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzEsIDIsIDNdLmFwcGVuZC5fX3F1YWxuYW1lX18sICdsaXN0LmFwcGVuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydmb28nOiAnYmFyJ30ucG9wLl9fcXVhbG5hbWVfXywgJ2RpY3QucG9wJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCwgSW5zdGFuY2VtZXRob2RBdHRyVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyYml0cmFyeUZ1bmN0aW9uQXR0clRlc3QsIEZ1bmN0aW9uRGljdHNUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Eb2NzdHJpbmdUZXN0LCBDZWxsVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01ldGhvZEF0dHJzVGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01ldGhvZEF0dHJzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0aW5GdW5jdGlvblByb3BlcnRpZXNUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IDI3MGNhYjAuLmM0OTEwYTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CkBAIC0yMjYsNiArMjI2LDcgQEAKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX3dyYXBwZWRfXywgZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYWxzbyBhIHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19hbm5vdGF0aW9uc19fWydhJ10sICdUaGlzIGlzIGEgbmV3IGFubm90YXRpb24nKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdiJywgd3JhcHBlci5fX2Fubm90YXRpb25zX18pCkBAIC0yNDYsNiArMjQ3LDcgQEAKICAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fYW5ub3RhdGlvbnNfXywge30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cih3cmFwcGVyLCAnYXR0cicpKQpAQCAtMjYzLDYgKzI2NSw3IEBACiAgICAgICAgIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlcih3cmFwcGVyLCBmLCBhc3NpZ24sIHVwZGF0ZSkKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsIGFzc2lnbiwgdXBkYXRlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYSBkaWZmZXJlbnQgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5kaWN0X2F0dHIsIGYuZGljdF9hdHRyKQpAQCAtMzA5LDE3ICszMTIsMTggQEAKICAgICAgICAgZGVmIHdyYXBwZXIoKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYpCi0gICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgICAgIHJldHVybiB3cmFwcGVyLCBmCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3VwZGF0ZShzZWxmKToKLSAgICAgICAgd3JhcHBlciA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKKyAgICAgICAgd3JhcHBlciwgZiA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYWxzbyBhIHRlc3QnKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihub3Qgc3lzLmZsYWdzLm9wdGltaXplIDw9IDEsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdXBkYXRlX2RvYyhzZWxmKToKLSAgICAgICAgd3JhcHBlciA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKKyAgICAgICAgd3JhcHBlciwgXyA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sICdUaGlzIGlzIGEgdGVzdCcpCiAKICAgICBkZWYgdGVzdF9ub191cGRhdGUoc2VsZik6CkBAIC0zMzIsNiArMzM2LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHdyYXBwZXIsICdhdHRyJykpCiAKQEAgLTM1MSw2ICszNTYsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCkBAIC00MzYsMTkgKzQ0Miw4MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhhZGQsIGQpLCAiIi5qb2luKGQua2V5cygpKSkKIAogY2xhc3MgVGVzdENtcFRvS2V5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X2NtcF90b19rZXkoc2VsZik6CisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDMpLCBrZXkoMykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkoMyksIGtleSgxKSkKKyAgICAgICAgZGVmIGNtcDIoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gaW50KHgpIC0gaW50KHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDQuMCksIGtleSgnNCcpKQorICAgICAgICBzZWxmLmFzc2VydExlc3Moa2V5KDIpLCBrZXkoJzM1JykpCisKKyAgICBkZWYgdGVzdF9jbXBfdG9fa2V5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXA9Y21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkob2JqPTMpLCBrZXkob2JqPTMpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoa2V5KG9iaj0zKSwga2V5KG9iaj0xKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcikpOgorICAgICAgICAgICAga2V5KDMpID4gMSAgICAjIHJocyBpcyBub3QgYSBLIG9iamVjdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSk6CisgICAgICAgICAgICAxIDwga2V5KDMpICAgICMgbGhzIGlzIG5vdCBhIEsgb2JqZWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KCkgICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSwgTm9uZSkgICAjIHRvbyBtYW55IGFyZ3MKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkoTm9uZSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIG1hbnkgYXJncworCisgICAgZGVmIHRlc3RfYmFkX2NtcChzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcgorICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGtleSgzKSA+IGtleSgxKQorCisgICAgICAgIGNsYXNzIEJhZENtcDoKKyAgICAgICAgICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIEJhZENtcCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCisKKyAgICBkZWYgdGVzdF9vYmpfZmllbGQoc2VsZik6CisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wPWNtcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDUwKS5vYmosIDUwKQorCisgICAgZGVmIHRlc3Rfc29ydF9pbnQoc2VsZik6CiAgICAgICAgIGRlZiBteWNtcCh4LCB5KToKICAgICAgICAgICAgIHJldHVybiB5IC0geAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyYW5nZSg1KSwga2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzQsIDMsIDIsIDEsIDBdKQogCisgICAgZGVmIHRlc3Rfc29ydF9pbnRfc3RyKHNlbGYpOgorICAgICAgICBkZWYgbXljbXAoeCwgeSk6CisgICAgICAgICAgICB4LCB5ID0gaW50KHgpLCBpbnQoeSkKKyAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICB2YWx1ZXMgPSBbNSwgJzMnLCA3LCAyLCAnMCcsICcxJywgNCwgJzEwJywgMV0KKyAgICAgICAgdmFsdWVzID0gc29ydGVkKHZhbHVlcywga2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaW50KHZhbHVlKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNCwgNSwgNywgMTBdKQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4CiAgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKQogICAgICAgICBrID0ga2V5KDEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhhc2gsIGspCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShrLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShrLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkKIAogY2xhc3MgVGVzdFRvdGFsT3JkZXJpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02NzEsNiArNzQwLDIyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgogICAgICAgICAgICAgICAgIGZ1bmMoMTUpCiAKKyAgICBkZWYgdGVzdF9scnVfd2l0aF90eXBlcyhzZWxmKToKKyAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEwMCk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCisgICAgICAgICAgICBkZWYgc3F1YXJlKHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICogeAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMyksIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKDMpKSwgdHlwZSg5KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKDMuMCksIDkuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoMy4wKSksIHR5cGUoOS4wKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKHg9MyksIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKHg9MykpLCB0eXBlKDkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoeD0zLjApLCA5LjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKHg9My4wKSksIHR5cGUoOS4wKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlLmNhY2hlX2luZm8oKS5oaXRzLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLm1pc3NlcywgNCkKKwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIHRlc3RfY2xhc3NlcyA9ICgKICAgICAgICAgVGVzdFBhcnRpYWwsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CmluZGV4IGM2Njg5YTEuLjNhMjVlYjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CkBAIC0xMywxNCArMTMsMTQgQEAKIGNsYXNzIEZ1dHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZnV0dXJlMShzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3RfZnV0dXJlMScpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmUxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9mdXR1cmUxLnJlc3VsdCwgNikKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ2Z1dHVyZV90ZXN0MScpCisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgZnV0dXJlX3Rlc3QxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlX3Rlc3QxLnJlc3VsdCwgNikKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZTIoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0X2Z1dHVyZTInKQotICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZnV0dXJlMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfZnV0dXJlMi5yZXN1bHQsIDYpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCdmdXR1cmVfdGVzdDInKQorICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IGZ1dHVyZV90ZXN0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1dHVyZV90ZXN0Mi5yZXN1bHQsIDYpCiAKICAgICBkZWYgdGVzdF9mdXR1cmUzKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdF9mdXR1cmUzJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGUxYzEyNGQuLmM1OWI3MmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgc3RyaXBfcHl0aG9uX3N0ZGVycgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICh2ZXJib3NlLCByZWZjb3VudF90ZXN0LCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBfcHl0aG9uX3N0ZGVycikKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgZ2MKQEAgLTM3LDYgKzM4LDIwIEBACiAgICAgICAgICMgZ2MgY29sbGVjdHMgaXQuCiAgICAgICAgIHNlbGYud3IgPSB3ZWFrcmVmLnJlZihDMTA1NTgyMCg2NjYpLCBpdF9oYXBwZW5lZCkKIAorY2xhc3MgVW5jb2xsZWN0YWJsZShvYmplY3QpOgorICAgICIiIkNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB3aXRoIG11bHRpcGxlIF9fZGVsX18gbWV0aG9kcy4KKworICAgIEFuIG9iamVjdCBpbiBhIHJlZmVyZW5jZSBjeWNsZSB3aWxsIG5ldmVyIGhhdmUgemVybyByZWZlcmVuY2VzLAorICAgIGFuZCBzbyBtdXN0IGJlIGdhcmJhZ2UgY29sbGVjdGVkLiAgSWYgb25lIG9yIG1vcmUgb2JqZWN0cyBpbiB0aGUKKyAgICBjeWNsZSBoYXZlIF9fZGVsX18gbWV0aG9kcywgdGhlIGdjIHJlZnVzZXMgdG8gZ3Vlc3MgYW4gb3JkZXIsCisgICAgYW5kIGxlYXZlcyB0aGUgY3ljbGUgdW5jb2xsZWN0ZWQuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRuZXI9Tm9uZSk6CisgICAgICAgIGlmIHBhcnRuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucGFydG5lciA9IFVuY29sbGVjdGFibGUocGFydG5lcj1zZWxmKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wYXJ0bmVyID0gcGFydG5lcgorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBwYXNzCiAKICMjIyBUZXN0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTgxLDYgKzE5Niw3IEBACiAgICAgICAgIGRlbCBkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2MuY29sbGVjdCgpLCAyKQogCisgICAgQHJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9mcmFtZShzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpCkBAIC0yNDgsNiArMjY0LDcgQEAKICAgICAjIEZvciBleGFtcGxlLCBkaXNwb3NlZCB0dXBsZXMgYXJlIG5vdCBmcmVlZCwgYnV0IHJldXNlZC4KICAgICAjIFRvIG1pbmltaXplIHZhcmlhdGlvbnMsIHRob3VnaCwgd2UgZmlyc3Qgc3RvcmUgdGhlIGdldF9jb3VudCgpIHJlc3VsdHMKICAgICAjIGFuZCBjaGVjayB0aGVtIGF0IHRoZSBlbmQuCisgICAgQHJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9nZXRfY291bnQoc2VsZik6CiAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICBhLCBiLCBjID0gZ2MuZ2V0X2NvdW50KCkKQEAgLTI2MSw2ICsyNzgsNyBAQAogICAgICAgICAjIGNyZWF0ZWQgKHRoZSBsaXN0KS4KICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGQsIGEpCiAKKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2VuZXJhdGlvbnMoc2VsZik6CiAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICAjIFRoaXMgb2JqZWN0IHdpbGwgInRyaWNrbGUiIGludG8gZ2VuZXJhdGlvbiBOICsgMSBhZnRlcgpAQCAtNTkzLDYgKzYxMSwxMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiInVuY29sbGVjdGFibGUgb2JqZWN0cyBhdCBzaHV0ZG93biIsIHN0ZGVycikKIAogCitjbGFzcyBHQ0NhbGxiYWNrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBTYXZlIGdjIHN0YXRlIGFuZCBkaXNhYmxlIGl0LgorICAgICAgICBzZWxmLmVuYWJsZWQgPSBnYy5pc2VuYWJsZWQoKQorICAgICAgICBnYy5kaXNhYmxlKCkKKyAgICAgICAgc2VsZi5kZWJ1ZyA9IGdjLmdldF9kZWJ1ZygpCisgICAgICAgIGdjLnNldF9kZWJ1ZygwKQorICAgICAgICBnYy5jYWxsYmFja3MuYXBwZW5kKHNlbGYuY2IxKQorICAgICAgICBnYy5jYWxsYmFja3MuYXBwZW5kKHNlbGYuY2IyKQorICAgICAgICBzZWxmLm90aGVyZ2FyYmFnZSA9IFtdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgUmVzdG9yZSBnYyBzdGF0ZQorICAgICAgICBkZWwgc2VsZi52aXNpdAorICAgICAgICBnYy5jYWxsYmFja3MucmVtb3ZlKHNlbGYuY2IxKQorICAgICAgICBnYy5jYWxsYmFja3MucmVtb3ZlKHNlbGYuY2IyKQorICAgICAgICBnYy5zZXRfZGVidWcoc2VsZi5kZWJ1ZykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVkOgorICAgICAgICAgICAgZ2MuZW5hYmxlKCkKKyAgICAgICAgIyBkZXN0cm95IGFueSB1bmNvbGxlY3RhYmxlcworICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIG9iaiBpbiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIFVuY29sbGVjdGFibGUpOgorICAgICAgICAgICAgICAgIG9iai5wYXJ0bmVyID0gTm9uZQorICAgICAgICBkZWwgZ2MuZ2FyYmFnZVs6XQorICAgICAgICBkZWwgc2VsZi5vdGhlcmdhcmJhZ2UKKyAgICAgICAgZ2MuY29sbGVjdCgpCisKKyAgICBkZWYgcHJlY2xlYW4oc2VsZik6CisgICAgICAgICMgUmVtb3ZlIGFsbCBmbHVmZiBmcm9tIHRoZSBzeXN0ZW0uICBJbnZva2UgdGhpcyBmdW5jdGlvbgorICAgICAgICAjIG1hbnVhbGx5IHJhdGhlciB0aGFuIHRocm91Z2ggc2VsZi5zZXRVcCgpIGZvciBtYXhpbXVtCisgICAgICAgICMgc2FmZXR5LgorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIGdhcmJhZ2UsIGdjLmdhcmJhZ2VbOl0gPSBnYy5nYXJiYWdlWzpdLCBbXQorICAgICAgICBzZWxmLm90aGVyZ2FyYmFnZS5hcHBlbmQoZ2FyYmFnZSkKKyAgICAgICAgc2VsZi52aXNpdCA9IFtdCisKKyAgICBkZWYgY2IxKHNlbGYsIHBoYXNlLCBpbmZvKToKKyAgICAgICAgc2VsZi52aXNpdC5hcHBlbmQoKDEsIHBoYXNlLCBkaWN0KGluZm8pKSkKKworICAgIGRlZiBjYjIoc2VsZiwgcGhhc2UsIGluZm8pOgorICAgICAgICBzZWxmLnZpc2l0LmFwcGVuZCgoMiwgcGhhc2UsIGRpY3QoaW5mbykpKQorICAgICAgICBpZiBwaGFzZSA9PSAic3RvcCIgYW5kIGhhc2F0dHIoc2VsZiwgImNsZWFudXAiKToKKyAgICAgICAgICAgICMgQ2xlYW4gVW5jb2xsZWN0YWJsZSBmcm9tIGdhcmJhZ2UKKyAgICAgICAgICAgIHVjID0gW2UgZm9yIGUgaW4gZ2MuZ2FyYmFnZSBpZiBpc2luc3RhbmNlKGUsIFVuY29sbGVjdGFibGUpXQorICAgICAgICAgICAgZ2MuZ2FyYmFnZVs6XSA9IFtlIGZvciBlIGluIGdjLmdhcmJhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgVW5jb2xsZWN0YWJsZSldCisgICAgICAgICAgICBmb3IgZSBpbiB1YzoKKyAgICAgICAgICAgICAgICBlLnBhcnRuZXIgPSBOb25lCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0KHNlbGYpOgorICAgICAgICBzZWxmLnByZWNsZWFuKCkKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICMgQWxnb3JpdGhtaWNhbGx5IHZlcmlmeSB0aGUgY29udGVudHMgb2Ygc2VsZi52aXNpdAorICAgICAgICAjIGJlY2F1c2UgaXQgaXMgbG9uZyBhbmQgdG9ydHVvdXMuCisKKyAgICAgICAgIyBDb3VudCB0aGUgbnVtYmVyIG9mIHZpc2l0cyB0byBlYWNoIGNhbGxiYWNrCisgICAgICAgIG4gPSBbdlswXSBmb3IgdiBpbiBzZWxmLnZpc2l0XQorICAgICAgICBuMSA9IFtpIGZvciBpIGluIG4gaWYgaSA9PSAxXQorICAgICAgICBuMiA9IFtpIGZvciBpIGluIG4gaWYgaSA9PSAyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4xLCBbMV0qMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMiwgWzJdKjIpCisKKyAgICAgICAgIyBDb3VudCB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgbnVtYmVyIG9mIHN0YXJ0IGFuZCBzdG9wIGNhbGxiYWNrcy4KKyAgICAgICAgbiA9IFt2WzFdIGZvciB2IGluIHNlbGYudmlzaXRdCisgICAgICAgIG4xID0gW2kgZm9yIGkgaW4gbiBpZiBpID09ICJzdGFydCJdCisgICAgICAgIG4yID0gW2kgZm9yIGkgaW4gbiBpZiBpID09ICJzdG9wIl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMSwgWyJzdGFydCJdKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjIsIFsic3RvcCJdKjIpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgaW5mbyBkaWN0IGZvciBhbGwgY2FsbGJhY2tzCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJnZW5lcmF0aW9uIiBpbiBpbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJjb2xsZWN0ZWQiIGluIGluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoInVuY29sbGVjdGFibGUiIGluIGluZm8pCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X2dlbmVyYXRpb24oc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICBnYy5jb2xsZWN0KDIpCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJnZW5lcmF0aW9uIl0sIDIpCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICAjIEVhY2ggb2YgdGhlc2UgY2F1c2UgZm91ciBvYmplY3RzIHRvIGJlIGdhcmJhZ2U6IFR3bworICAgICAgICAjIFVuY29sZWN0YWJsZXMgYW5kIHRoZWlyIGluc3RhbmNlIGRpY3RzLgorICAgICAgICBVbmNvbGxlY3RhYmxlKCkKKyAgICAgICAgVW5jb2xsZWN0YWJsZSgpCisgICAgICAgIEMxMDU1ODIwKDY2NikKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpZiB2WzFdICE9ICJzdG9wIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaW5mbyA9IHZbMl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1siY29sbGVjdGVkIl0sIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bInVuY29sbGVjdGFibGUiXSwgOCkKKworICAgICAgICAjIFdlIHNob3VsZCBub3cgaGF2ZSB0aGUgVW5jb2xsZWN0YWJsZXMgaW4gZ2MuZ2FyYmFnZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnYy5nYXJiYWdlKSwgNCkKKyAgICAgICAgZm9yIGUgaW4gZ2MuZ2FyYmFnZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLCBVbmNvbGxlY3RhYmxlKQorCisgICAgICAgICMgTm93LCBsZXQgb3VyIGNhbGxiYWNrIGhhbmRsZSB0aGUgVW5jb2xsZWN0YWJsZSBpbnN0YW5jZXMKKyAgICAgICAgc2VsZi5jbGVhbnVwPVRydWUKKyAgICAgICAgc2VsZi52aXNpdCA9IFtdCisgICAgICAgIGdjLmdhcmJhZ2VbOl0gPSBbXQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGlmIHZbMV0gIT0gInN0b3AiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJjb2xsZWN0ZWQiXSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1sidW5jb2xsZWN0YWJsZSJdLCA0KQorCisgICAgICAgICMgVW5jb2xsZWN0YWJsZXMgc2hvdWxkIGJlIGdvbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ2MuZ2FyYmFnZSksIDApCisKKwogY2xhc3MgR0NUb2dnbGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGdjLmVuYWJsZSgpCkBAIC03NDYsNyArODg1LDcgQEAKIAogICAgIHRyeToKICAgICAgICAgZ2MuY29sbGVjdCgpICMgRGVsZXRlIDJuZCBnZW5lcmF0aW9uIGdhcmJhZ2UKLSAgICAgICAgcnVuX3VuaXR0ZXN0KEdDVGVzdHMsIEdDVG9nZ2xpbmdUZXN0cykKKyAgICAgICAgcnVuX3VuaXR0ZXN0KEdDVGVzdHMsIEdDVG9nZ2xpbmdUZXN0cywgR0NDYWxsYmFja1Rlc3RzKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGdjLnNldF9kZWJ1ZyhkZWJ1ZykKICAgICAgICAgIyB0ZXN0IGdjLmVuYWJsZSgpIGV2ZW4gaWYgR0MgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCA2ZDk2NTUwLi45NzEzZGM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtNyw5ICs3LDE2IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBsb2NhbGUKIAorIyBJcyB0aGlzIFB5dGhvbiBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhyZWFkcz8KK3RyeToKKyAgICBpbXBvcnQgX3RocmVhZAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90aHJlYWQgPSBOb25lCisKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCBweXRob25faXNfb3B0aW1pemVkCiAKIHRyeToKQEAgLTI2LDYgKzMzLDkgQEAKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2RiIHZlcnNpb25zIGJlZm9yZSA3LjAgZGlkbid0IHN1cHBvcnQgcHl0aG9uIGVtYmVkZGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFNhdzpcbiIgKyBnZGJfdmVyc2lvbi5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKSkKIAoraWYgbm90IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdF9nZGIgb25seSB3b3JrcyBvbiBzb3VyY2UgYnVpbGRzIGF0IHRoZSBtb21lbnQuIikKKwogIyBMb2NhdGlvbiBvZiBjdXN0b20gaG9va3MgZmlsZSBpbiBhIHJlcG9zaXRvcnkgY2hlY2tvdXQuCiBjaGVja291dF9ob29rX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHl0aG9uLWdkYi5weScpCkBAIC01Myw5ICs2Myw3IEBACiBpZiBub3QgZ2RicHlfdmVyc2lvbjoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2RiIG5vdCBidWlsdCB3aXRoIGVtYmVkZGVkIHB5dGhvbiBzdXBwb3J0IikKIAotIyBWZXJpZnkgdGhhdCAiZ2RiIiBjYW4gbG9hZCBvdXIgY3VzdG9tIGhvb2tzLiAgSW4gdGhlb3J5IHRoaXMgc2hvdWxkIG5ldmVyCi0jIGZhaWwsIGJ1dCB3ZSBkb24ndCBoYW5kbGUgdGhlIGNhc2Ugb2YgdGhlIGhvb2tzIGZpbGUgbm90IGV4aXN0aW5nIGlmIHRoZQotIyB0ZXN0cyBhcmUgcnVuIGZyb20gYW4gaW5zdGFsbGVkIFB5dGhvbiAod2UnbGwgcHJvZHVjZSBmYWlsdXJlcyBpbiB0aGF0IGNhc2UpLgorIyBWZXJpZnkgdGhhdCAiZ2RiIiBjYW4gbG9hZCBvdXIgY3VzdG9tIGhvb2tzLiBJbiB0aGVvcnkgdGhpcyBzaG91bGQgbmV2ZXIgZmFpbC4KIGNtZCA9IFsnLS1hcmdzJywgc3lzLmV4ZWN1dGFibGVdCiBfLCBnZGJweV9lcnJvcnMgPSBydW5fZ2RiKCctLWFyZ3MnLCBzeXMuZXhlY3V0YWJsZSkKIGlmICJhdXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQiIGluIGdkYnB5X2Vycm9yczoKQEAgLTE2MCw3ICsxNjgsNiBAQAogCiAgICAgICAgICMgRW5zdXJlIG5vIHVuZXhwZWN0ZWQgZXJyb3IgbWVzc2FnZXM6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCAnJykKLQogICAgICAgICByZXR1cm4gb3V0CiAKICAgICBkZWYgZ2V0X2dkYl9yZXByKHNlbGYsIHNvdXJjZSwKQEAgLTE4MSw3ICsxODgsNyBAQAogICAgICAgICAjIGdkYiBjYW4gaW5zZXJ0IGFkZGl0aW9uYWwgJ1xuJyBhbmQgc3BhY2UgY2hhcmFjdGVycyBpbiB2YXJpb3VzIHBsYWNlcwogICAgICAgICAjIGluIGl0cyBvdXRwdXQsIGRlcGVuZGluZyBvbiB0aGUgd2lkdGggb2YgdGhlIHRlcm1pbmFsIGl0J3MgY29ubmVjdGVkCiAgICAgICAgICMgdG8gKHVzaW5nIGl0cyAid3JhcF9oZXJlIiBmdW5jdGlvbikKLSAgICAgICAgbSA9IHJlLm1hdGNoKCcuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKKyAgICAgICAgbSA9IHJlLm1hdGNoKCcuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsIHJlLkRPVEFMTCkKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZ2RiIG91dHB1dDogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTM0Myw3ICszNTAsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9pbnQgPSA0MgogaWQoZm9vKScnJykKLSAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsIGdkYl9yZXByKQorICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLCBnZGJfcmVwcikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0sCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J1VuZXhwZWN0ZWQgbmV3LXN0eWxlIGNsYXNzIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKIApAQCAtMzU2LDcgKzM2Myw3IEBACiBmb28gKz0gWzEsIDIsIDNdCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0sCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J1VuZXhwZWN0ZWQgbmV3LXN0eWxlIGNsYXNzIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKQEAgLTM3MSw3ICszNzgsNyBAQAogZm9vID0gRm9vKCgxLCAyLCAzKSkKIGZvby5hbl9pbnQgPSA0MgogaWQoZm9vKScnJykKLSAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsIGdkYl9yZXByKQorICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLCBnZGJfcmVwcikKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCBuZXctc3R5bGUgY2xhc3MgcmVuZGVyaW5nICVyJyAlIGdkYl9yZXByKQpAQCAtMzk4LDcgKzQwNSw3IEBACiAKICAgICAgICAgIyBNYXRjaCBhbnl0aGluZyBmb3IgdGhlIHR5cGUgbmFtZTsgMHhERUFEQkVFRiBjb3VsZCBwb2ludCB0bwogICAgICAgICAjIHNvbWV0aGluZyBhcmJpdHJhcnkgKHNlZSAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTgzMzApCi0gICAgICAgIHBhdHRlcm4gPSAnPC4qIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nCisgICAgICAgIHBhdHRlcm4gPSAnPC4qIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicKIAogICAgICAgICBtID0gcmUubWF0Y2gocGF0dGVybiwgZ2RiX3JlcHIpCiAgICAgICAgIGlmIG5vdCBtOgpAQCAtNDQ0LDcgKzQ1MSw3IEBACiAgICAgICAgICMgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4MDMyI21zZzEwMDUzNyApCiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2lkKF9fYnVpbHRpbnNfXy5oZWxwKScsIGltcG9ydF9zaXRlPVRydWUpCiAKLSAgICAgICAgbSA9IHJlLm1hdGNoKHInPF9IZWxwZXIgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsIGdkYl9yZXByKQorICAgICAgICBtID0gcmUubWF0Y2gocic8X0hlbHBlciBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLCBnZGJfcmVwcikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0sCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J1VuZXhwZWN0ZWQgcmVuZGVyaW5nICVyJyAlIGdkYl9yZXByKQogCkBAIC00NzUsNyArNDgyLDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTQ4OCw3ICs0OTUsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTAyLDcgKzUwOSw3IEBACiBhLmFuX2F0dHIgPSBiCiBiLmFuX2F0dHIgPSBhCiBpZChhKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTM3LDcgKzU0NCw3IEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaW1wb3J0IHN5czsgaWQoc3lzLnN0ZG91dC5yZWFkbGluZXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU1Miw3ICs1NTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0nYnVpbHRpbl9pZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydwcmludCAoUHlGcmFtZU9iamVjdCopKCgoUHlDb2RlT2JqZWN0Kil2KS0+Y29fem9tYmllZnJhbWUpJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5ET1RBTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtNjA5LDcgKzYxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicnJ14uKgotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCiAgICAgYmF6XChhLCBiLCBjXCkKICQnJycpCiAKQEAgLTYzOCw5ICs2NDUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LWRvd24nXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicnJ14uKgotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCiAgICAgYmF6XChhLCBiLCBjXCkKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMCwgaW4gYmF6IFwoYXJncz1cKDEsIDIsIDNcKVwpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMCwgaW4gYmF6IFwoYXJncz1cKDEsIDIsIDNcKVwpCiAgICAgaWRcKDQyXCkKICQnJycpCiAKQEAgLTY3MiwxNCArNjc5LDEwNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LWJ0LWZ1bGwnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicnJ14uKgotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCiAgICAgYmF6XChhLCBiLCBjXCkKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA0LCBpbiBmb28gXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDQsIGluIGZvbyBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhclwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTIsIGluIDxtb2R1bGU+IFwoXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEyLCBpbiA8bW9kdWxlPiBcKFwpCiAgICAgZm9vXCgxLCAyLCAzXCkKICcnJykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfdGhyZWFkcyhzZWxmKToKKyAgICAgICAgJ1ZlcmlmeSB0aGF0ICJweS1idCIgaW5kaWNhdGVzIHRocmVhZHMgdGhhdCBhcmUgd2FpdGluZyBmb3IgdGhlIEdJTCcKKyAgICAgICAgY21kID0gJycnCitmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCisKK2NsYXNzIFRlc3RUaHJlYWQoVGhyZWFkKToKKyAgICAjIFRoZXNlIHRocmVhZHMgd291bGQgcnVuIGZvcmV2ZXIsIGJ1dCB3ZSdsbCBpbnRlcnJ1cHQgdGhpbmdzIHdpdGggdGhlCisgICAgIyBkZWJ1Z2dlcgorICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIGkgPSAwCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgaSArPSAxCisKK3QgPSB7fQorZm9yIGkgaW4gcmFuZ2UoNCk6CisgICB0W2ldID0gVGVzdFRocmVhZCgpCisgICB0W2ldLnN0YXJ0KCkKKworIyBUcmlnZ2VyIGEgYnJlYWtwb2ludCBvbiB0aGUgbWFpbiB0aHJlYWQKK2lkKDQyKQorCisnJycKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsndGhyZWFkIGFwcGx5IGFsbCBweS1idCddKQorICAgICAgICBzZWxmLmFzc2VydEluKCdXYWl0aW5nIGZvciB0aGUgR0lMJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3RocmVhZCBhcHBseSBhbGwgcHktYnQtZnVsbCddKQorICAgICAgICBzZWxmLmFzc2VydEluKCdXYWl0aW5nIGZvciB0aGUgR0lMJywgZ2RiX291dHB1dCkKKworICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLAorICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKKyAgICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgZ2RiIHdpbGwgZmFpbCB3aXRoCisgICAgIyAgIkNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBnZW5lcmljIGVycm9yIgorICAgICMgdW5sZXNzIHdlIGFkZCBMRF9QUkVMT0FEPVBBVEgtVE8tbGlicHRocmVhZC5zby4xIGFzIGEgd29ya2Fyb3VuZAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfZ2Moc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGluZGljYXRlcyBpZiBhIHRocmVhZCBpcyBnYXJiYWdlLWNvbGxlY3RpbmcnCisgICAgICAgIGNtZCA9ICgnZnJvbSBnYyBpbXBvcnQgY29sbGVjdFxuJworICAgICAgICAgICAgICAgJ2lkKDQyKVxuJworICAgICAgICAgICAgICAgJ2RlZiBmb28oKTpcbicKKyAgICAgICAgICAgICAgICcgICAgY29sbGVjdCgpXG4nCisgICAgICAgICAgICAgICAnZGVmIGJhcigpOlxuJworICAgICAgICAgICAgICAgJyAgICBmb28oKVxuJworICAgICAgICAgICAgICAgJ2JhcigpXG4nKQorICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydicmVhayB1cGRhdGVfcmVmcycsICdjb250aW51ZScsICdweS1idCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCdHYXJiYWdlLWNvbGxlY3RpbmcnLCBnZGJfb3V0cHV0KQorCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0LWZ1bGwiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnJlYWsgdXBkYXRlX3JlZnMnLCAnY29udGludWUnLCAncHktYnQtZnVsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCdHYXJiYWdlLWNvbGxlY3RpbmcnLCBnZGJfb3V0cHV0KQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCisgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQorICAgICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBnZGIgd2lsbCBmYWlsIHdpdGgKKyAgICAjICAiQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGdlbmVyaWMgZXJyb3IiCisgICAgIyB1bmxlc3Mgd2UgYWRkIExEX1BSRUxPQUQ9UEFUSC1UTy1saWJwdGhyZWFkLnNvLjEgYXMgYSB3b3JrYXJvdW5kCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZCBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9weWNmdW5jdGlvbihzZWxmKToKKyAgICAgICAgJ1ZlcmlmeSB0aGF0ICJweS1idCIgZGlzcGxheXMgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzJworICAgICAgICBjbWQgPSAoJ2Zyb20gdGltZSBpbXBvcnQgc2xlZXBcbicKKyAgICAgICAgICAgICAgICdkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIHNsZWVwKDEpXG4nCisgICAgICAgICAgICAgICAnZGVmIGJhcigpOlxuJworICAgICAgICAgICAgICAgJyAgICBmb28oKVxuJworICAgICAgICAgICAgICAgJ2JhcigpXG4nKQorICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX3NsZWVwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2J0JywgJ3B5LWJ0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJzxidWlsdC1pbiBtZXRob2Qgc2xlZXAnLCBnZGJfb3V0cHV0KQorCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0LWZ1bGwiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1idC1mdWxsJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyMwIDxidWlsdC1pbiBtZXRob2Qgc2xlZXAnLCBnZGJfb3V0cHV0KQorCisKIGNsYXNzIFB5UHJpbnRUZXN0cyhEZWJ1Z2dlclRlc3RzKToKICAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCkBAIC03MTMsNyArODEyLDcgQEAKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXByaW50IGxlbiddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5idWlsdGluICdsZW4nID0gPGJ1aWx0LWluIG1ldGhvZCBsZW4gb2YgbW9kdWxlIG9iamVjdCBhdCByZW1vdGUgMHhbMC05YS1mXSs+XG4uKiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5idWlsdGluICdsZW4nID0gPGJ1aWx0LWluIG1ldGhvZCBsZW4gb2YgbW9kdWxlIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cbi4qIikKIAogY2xhc3MgUHlMb2NhbHNUZXN0cyhEZWJ1Z2dlclRlc3RzKToKICAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQppbmRleCA1ZjQ3YjNlLi4wNmY2N2MyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CkBAIC03MjgsMjkgKzcyOCw2IEBACiAKIHN5bnRheF90ZXN0cyA9ICIiIgogCi0+Pj4gZGVmIGYoKToKLS4uLiAgICAgcmV0dXJuIDIyCi0uLi4gICAgIHlpZWxkIDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHlpZWxkIDEKLS4uLiAgICAgcmV0dXJuIDIyCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KLSJyZXR1cm4gTm9uZSIgaXMgbm90IHRoZSBzYW1lIGFzICJyZXR1cm4iIGluIGEgZ2VuZXJhdG9yOgotCi0+Pj4gZGVmIGYoKToKLS4uLiAgICAgeWllbGQgMQotLi4uICAgICByZXR1cm4gTm9uZQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCiBUaGVzZSBhcmUgZmluZToKIAogPj4+IGRlZiBmKCk6CkBAIC04NjYsMjAgKzg0Myw2IEBACiA+Pj4gdHlwZShmKCkpCiA8Y2xhc3MgJ2dlbmVyYXRvcic+CiAKLQotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIGlmIDA6Ci0uLi4gICAgICAgICBsYW1iZGEgeDogIHggICAgICAgICMgc2hvdWxkbid0IHRyaWdnZXIgaGVyZQotLi4uICAgICAgICAgcmV0dXJuICAgICAgICAgICAgICAjIG9yIGhlcmUKLS4uLiAgICAgICAgIGRlZiBmKGkpOgotLi4uICAgICAgICAgICAgIHJldHVybiAyKmkgICAgICAjIG9yIGhlcmUKLS4uLiAgICAgICAgIGlmIDA6Ci0uLi4gICAgICAgICAgICAgcmV0dXJuIDMgICAgICAgICMgYnV0ICp0aGlzKiBzdWNrcyAobGluZSA4KQotLi4uICAgICBpZiAwOgotLi4uICAgICAgICAgeWllbGQgMiAgICAgICAgICAgICAjIGJlY2F1c2UgaXQncyBhIGdlbmVyYXRvciAobGluZSAxMCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQogVGhpcyBvbmUgY2F1c2VkIGEgY3Jhc2ggKHNlZSBTRiBidWcgNTY3NTM4KToKIAogPj4+IGRlZiBmKCk6CkBAIC0xNTY2LDExICsxNTI5LDYgQEAKICAgLi4uCiBTeW50YXhFcnJvcjogJ3lpZWxkJyBvdXRzaWRlIGZ1bmN0aW9uCiAKLT4+PiBkZWYgZigpOiByZXR1cm4gbGFtYmRhIHg9KHlpZWxkKTogMQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQogPj4+IGRlZiBmKCk6IHggPSB5aWVsZCA9IHkKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgLi4uCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQppbmRleCA2MDIwOTIzLi5mZDhiYzU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKQEAgLTIsMTEgKzIsMTIgQEAKIFRlc3RzIGNvbW1vbiB0byBnZW5lcmljcGF0aCwgbWFjcGF0aCwgbnRwYXRoIGFuZCBwb3NpeHBhdGgKICIiIgogCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotaW1wb3J0IG9zCiBpbXBvcnQgZ2VuZXJpY3BhdGgKK2ltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGRlZiBzYWZlX3JtZGlyKGRpcm5hbWUpOgpAQCAtMTYsOSArMTcsNyBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgR2VuZXJpY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVGhlIHBhdGggbW9kdWxlIHRvIGJlIHRlc3RlZAotICAgIHBhdGhtb2R1bGUgPSBnZW5lcmljcGF0aAorY2xhc3MgR2VuZXJpY1Rlc3Q6CiAgICAgY29tbW9uX2F0dHJpYnV0ZXMgPSBbJ2NvbW1vbnByZWZpeCcsICdnZXRzaXplJywgJ2dldGF0aW1lJywgJ2dldGN0aW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0bXRpbWUnLCAnZXhpc3RzJywgJ2lzZGlyJywgJ2lzZmlsZSddCiAgICAgYXR0cmlidXRlcyA9IFtdCkBAIC0xNDUsNiArMTQ0LDE2IEBACiAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQorICAgIGRlZiB0ZXN0X2V4aXN0c19mZChzZWxmKToKKyAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICBvcy5jbG9zZSh3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCisKICAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCkBAIC0xNzksMTMgKzE4OCwxNiBAQAogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAgICAgICAgICAgICBzYWZlX3JtZGlyKHN1cHBvcnQuVEVTVEZOKQogCitjbGFzcyBUZXN0R2VuZXJpY1Rlc3QoR2VuZXJpY1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIElzc3VlIDE2ODUyOiBHZW5lcmljVGVzdCBjYW4ndCBpbmhlcml0IGZyb20gdW5pdHRlc3QuVGVzdENhc2UKKyAgICAjIGZvciB0ZXN0IGRpc2NvdmVyeSBwdXJwb3NlczsgQ29tbW9uVGVzdCBpbmhlcml0cyBmcm9tIEdlbmVyaWNUZXN0CisgICAgIyBhbmQgaXMgb25seSBtZWFudCB0byBiZSBpbmhlcml0ZWQgYnkgb3RoZXJzLgorICAgIHBhdGhtb2R1bGUgPSBnZW5lcmljcGF0aAogCiAjIEZvbGxvd2luZyBUZXN0Q2FzZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGZyb20gdGVzdF9nZW5lcmljcGF0aC4KICMgSXQgaXMgaW5oZXJpdGVkIGJ5IG90aGVyIHRlc3QgbW9kdWxlcyAobWFjcGF0aCwgbnRwYXRoLCBwb3NpeHBhdGgpLgogCiBjbGFzcyBDb21tb25UZXN0KEdlbmVyaWNUZXN0KToKLSAgICAjIFRoZSBwYXRoIG1vZHVsZSB0byBiZSB0ZXN0ZWQKLSAgICBwYXRobW9kdWxlID0gTm9uZQogICAgIGNvbW1vbl9hdHRyaWJ1dGVzID0gR2VuZXJpY1Rlc3QuY29tbW9uX2F0dHJpYnV0ZXMgKyBbCiAgICAgICAgICMgUHJvcGVydGllcwogICAgICAgICAnY3VyZGlyJywgJ3BhcmRpcicsICdleHRzZXAnLCAnc2VwJywKQEAgLTI1OCwxNSArMjcwLDIxIEBACiAKICAgICBkZWYgdGVzdF9hYnNwYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQogCiAgICAgICAgICMgQWJzcGF0aCByZXR1cm5zIGJ5dGVzIHdoZW4gdGhlIGFyZyBpcyBieXRlcwotICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgYidmXHhmMlx4ZjInLCBiJy9mb28nLCBiJ0M6XFwnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQogCiAgICAgZGVmIHRlc3RfcmVhbHBhdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImZvbyIsIHNlbGYucGF0aG1vZHVsZS5yZWFscGF0aCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUucmVhbHBhdGgoYiJmb28iKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLnJlYWxwYXRoKGIiZm9vIikpCiAKICAgICBkZWYgdGVzdF9ub3JtcGF0aF9pc3N1ZTU4Mjcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIG5vcm1wYXRoIHByZXNlcnZlcyB1bmljb2RlCkBAIC0yODIsOCArMzAwLDcgQEAKIAogICAgICAgICB1bmljd2QgPSAnXHhlN3dceGYwJwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmc2VuY29kaW5nID0gc3VwcG9ydC5URVNURk5fRU5DT0RJTkcgb3IgImFzY2lpIgotICAgICAgICAgICAgdW5pY3dkLmVuY29kZShmc2VuY29kaW5nKQorICAgICAgICAgICAgb3MuZnNlbmNvZGUodW5pY3dkKQogICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBVbmljb2RlRW5jb2RlRXJyb3IpOgogICAgICAgICAgICAgIyBGUyBlbmNvZGluZyBpcyBwcm9iYWJseSBBU0NJSQogICAgICAgICAgICAgcGFzcwpAQCAtMzA1LDEzICszMjIsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5lZWQgc3VwcG9ydC5URVNURk5fTk9OQVNDSUkiKQogCi0gICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChuYW1lKToKLSAgICAgICAgICAgIHNlbGYudGVzdF9hYnNwYXRoKCkKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoR2VuZXJpY1Rlc3QpCisgICAgICAgICMgVGVzdCBub24tQVNDSUksIG5vbi1VVEY4IGJ5dGVzIGluIHRoZSBwYXRoLgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLnRlc3RfYWJzcGF0aCgpCiAKIAogaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weQppbmRleCAxZjQ2YWYxLi40MTMwNDNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5CkBAIC0yNTcsMTEgKzI1NywxNSBAQAogCiAiIiIKIAoraW1wb3J0IHN5cwogCi1fX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CisjIFRyYWNlIGZ1bmN0aW9uIGNhbiB0aHJvdyBvZmYgdGhlIHR1cGxlIHJldXNlIHRlc3QuCitpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpOgorICAgIF9fdGVzdF9fID0ge30KK2Vsc2U6CisgICAgX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgaW1wb3J0IHN5cwogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9nZW5leHBzCiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2dlbmV4cHMsIHZlcmJvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCAzZDljMDZhLi40OGNhOTRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMKK2Zyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzLCBnZXRhcmdzX2tleXdvcmRfb25seQogCiAiIiIKID4gSG93IGFib3V0IHRoZSBmb2xsb3dpbmcgY291bnRlcnByb3Bvc2FsLiBUaGlzIGFsc28gY2hhbmdlcyBzb21lIG9mCkBAIC0yMTQsNiArMjE0LDM2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChWRVJZX0xBUkdFICYgVUxMT05HX01BWCwgZ2V0YXJnc19LKFZFUllfTEFSR0UpKQogCitjbGFzcyBQYXJhZG94OgorICAgICJUaGlzIHN0YXRlbWVudCBpcyBmYWxzZS4iCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKK2NsYXNzIEJvb2xlYW5fVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3Aoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3AKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcChOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDAuMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3Aoe30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMS4wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMWopKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgneCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgoMSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoezE6Mn0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCh1bml0dGVzdC5UZXN0Q2FzZSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgZ2V0YXJnc19wLCBQYXJhZG94KCkpCisKIAogY2xhc3MgVHVwbGVfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3R1cGxlKHNlbGYpOgpAQCAtMjkzLDcgKzMyMyw4NyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdUeXBlRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQnKQogCitjbGFzcyBLZXl3b3JkT25seV9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIpLAorICAgICAgICAgICAgKDEsIDIsIC0xKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfYXJncyhzZWxmKToKKyAgICAgICAgIyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIGtleXdvcmRfb25seT0zKSwKKyAgICAgICAgICAgICgxLCAyLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICAjIGFsbCBrZXl3b3JkcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwgb3B0aW9uYWw9Miwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIDIsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIG1pc3Npbmcgb3B0aW9uYWwga2V5d29yZCBhcmdzLCBza2lwcGluZyB0dXBsZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEsIG9wdGlvbmFsPTIpLAorICAgICAgICAgICAgKDEsIDIsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIC0xLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEpLAorICAgICAgICAgICAgKDEsIC0xLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEpLAorICAgICAgICAgICAgKDEsIC0xLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkob3B0aW9uYWw9MikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoa2V5d29yZF9vbmx5PTMpCisKKyAgICBkZWYgdGVzdF90b29fbWFueV9hcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMsIGtleXdvcmRfb25seT01KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9rZXl3b3JkKHNlbGYpOgorICAgICAgICAjIGV4dHJhbmVvdXMga2V5d29yZCBhcmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInbW9uc3RlcicgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCBtb25zdGVyPTY2NikKKworICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZV9rZXl3b3JkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIidcdWRjODAnIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgKip7J1x1REM4MCc6IDEwfSkKKwogY2xhc3MgQnl0ZXNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Moc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIGInYWJjJykgICMgbGVuID4gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfYyhiJ2EnKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2MoYnl0ZWFycmF5KGInYScpKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIG1lbW9yeXZpZXcoYidhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCAncycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCBOb25lKQorCiAgICAgZGVmIHRlc3RfcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfcygnYWJjXHhlOScpLCBiJ2FiY1x4YzNceGE5JykKQEAgLTQzMCw4ICs1NDAsMTAgQEAKICAgICB0ZXN0cyA9IFsKICAgICAgICAgU2lnbmVkX1Rlc3RDYXNlLAogICAgICAgICBVbnNpZ25lZF9UZXN0Q2FzZSwKKyAgICAgICAgQm9vbGVhbl9UZXN0Q2FzZSwKICAgICAgICAgVHVwbGVfVGVzdENhc2UsCiAgICAgICAgIEtleXdvcmRzX1Rlc3RDYXNlLAorICAgICAgICBLZXl3b3JkT25seV9UZXN0Q2FzZSwKICAgICAgICAgQnl0ZXNfVGVzdENhc2UsCiAgICAgICAgIFVuaWNvZGVfVGVzdENhc2UsCiAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5IGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CmluZGV4IDFjZGMyNGEuLmViOWFlYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKQEAgLTQsNyArNCw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCBza2lwX3VubGVzc19zeW1saW5rLCBjYW5fc3ltbGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmssIGNyZWF0ZV9lbXB0eV9maWxlKQogCiAKIGNsYXNzIEdsb2JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNyw4ICsxOCw3IEBACiAgICAgICAgIGJhc2UsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmFzZSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhiYXNlKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudGVtcGRpciA9IFRFU1RGTiArICJfZGlyIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5IGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CmluZGV4IDI2OGE2MzMuLjZiMzI2YmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKQEAgLTEwLDcgKzEwLDcgQEAKIAogY2xhc3MgVG9rZW5UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVzdEJhY2tzbGFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9iYWNrc2xhc2goc2VsZik6CiAgICAgICAgICMgQmFja3NsYXNoIG1lYW5zIGxpbmUgY29udGludWF0aW9uOgogICAgICAgICB4ID0gMSBcCiAgICAgICAgICsgMQpAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICB4ID0gMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDAsICdiYWNrc2xhc2ggZW5kaW5nIGNvbW1lbnQnKQogCi0gICAgZGVmIHRlc3RQbGFpbkludGVnZXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3BsYWluX2ludGVnZXJzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoMDAwKSwgdHlwZSgwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgweGZmLCAyNTUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMG8zNzcsIDI1NSkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnV2VpcmQgbWF4c2l6ZSB2YWx1ZSAlcicgJSBtYXhzaXplKQogCi0gICAgZGVmIHRlc3RMb25nSW50ZWdlcnMoc2VsZik6CisgICAgZGVmIHRlc3RfbG9uZ19pbnRlZ2VycyhzZWxmKToKICAgICAgICAgeCA9IDAKICAgICAgICAgeCA9IDB4ZmZmZmZmZmZmZmZmZmZmZgogICAgICAgICB4ID0gMFhmZmZmZmZmZmZmZmZmZmZmCkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgIHggPSAwYjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgICAgICB4ID0gMEIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEKIAotICAgIGRlZiB0ZXN0RmxvYXRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Zsb2F0cyhzZWxmKToKICAgICAgICAgeCA9IDMuMTQKICAgICAgICAgeCA9IDMxNC4KICAgICAgICAgeCA9IDAuMzE0CkBAIC04MCw3ICs4MCw3IEBACiAgICAgICAgIHggPSAuM2UxNAogICAgICAgICB4ID0gMy4xZTQKIAotICAgIGRlZiB0ZXN0U3RyaW5nTGl0ZXJhbHMoc2VsZik6CisgICAgZGVmIHRlc3Rfc3RyaW5nX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICB4ID0gJyc7IHkgPSAiIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAwIGFuZCB4ID09IHkpCiAgICAgICAgIHggPSAnXCcnOyB5ID0gIiciOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDEgYW5kIHggPT0geSBhbmQgb3JkKHgpID09IDM5KQogICAgICAgICB4ID0gJyInOyB5ID0gIlwiIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzNCkKQEAgLTEyMCwxMSArMTIwLDE4IEBACiAnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKIAotICAgIGRlZiB0ZXN0RWxsaXBzaXMoc2VsZik6CisgICAgZGVmIHRlc3RfZWxsaXBzaXMoc2VsZik6CiAgICAgICAgIHggPSAuLi4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgRWxsaXBzaXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiLi4gLiIpCiAKKyAgICBkZWYgdGVzdF9lb2ZfZXJyb3Ioc2VsZik6CisgICAgICAgIHNhbXBsZXMgPSAoImRlZiBmb28oIiwgIlxuZGVmIGZvbygiLCAiZGVmIGZvbyhcbiIpCisgICAgICAgIGZvciBzIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjb21waWxlKHMsICI8dGVzdD4iLCAiZXhlYyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmV4cGVjdGVkIEVPRiIsIHN0cihjbS5leGNlcHRpb24pKQorCiBjbGFzcyBHcmFtbWFyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQpAQCAtMTM2LDExICsxNDMsMTEgQEAKICAgICAjIGV4cHJfaW5wdXQ6IHRlc3RsaXN0IE5FV0xJTkUKICAgICAjIFhYWCBIYXJkIHRvIHRlc3QgLS0gdXNlZCBvbmx5IGluIGNhbGxzIHRvIGlucHV0KCkKIAotICAgIGRlZiB0ZXN0RXZhbElucHV0KHNlbGYpOgorICAgIGRlZiB0ZXN0X2V2YWxfaW5wdXQoc2VsZik6CiAgICAgICAgICMgdGVzdGxpc3QgRU5ETUFSS0VSCiAgICAgICAgIHggPSBldmFsKCcxLCAwIG9yIDEnKQogCi0gICAgZGVmIHRlc3RGdW5jZGVmKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CiAgICAgICAgICMjIyBbZGVjb3JhdG9yc10gJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogICAgICAgICAjIyMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKICAgICAgICAgIyMjIGRlY29yYXRvcnM6IGRlY29yYXRvcisKQEAgLTMyNCw3ICszMzEsNyBAQAogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImYoKmcoMT0yKSkiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImYoKipnKDE9MikpIikKIAotICAgIGRlZiB0ZXN0TGFtYmRlZihzZWxmKToKKyAgICBkZWYgdGVzdF9sYW1iZGVmKHNlbGYpOgogICAgICAgICAjIyMgbGFtYmRlZjogJ2xhbWJkYScgW3ZhcmFyZ3NsaXN0XSAnOicgdGVzdAogICAgICAgICBsMSA9IGxhbWJkYSA6IDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsMSgpLCAwKQpAQCAtMzQ2LDcgKzM1Myw3IEBACiAgICAgIyMjIHN0bXQ6IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdFNpbXBsZVN0bXQoc2VsZik6CisgICAgZGVmIHRlc3Rfc2ltcGxlX3N0bXQoc2VsZik6CiAgICAgICAgICMjIyBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXQogICAgICAgICB4ID0gMTsgcGFzczsgZGVsIHgKICAgICAgICAgZGVmIGZvbygpOgpAQCAtMzU3LDcgKzM2NCw3IEBACiAgICAgIyMjIHNtYWxsX3N0bXQ6IGV4cHJfc3RtdCB8IHBhc3Nfc3RtdCB8IGRlbF9zdG10IHwgZmxvd19zdG10IHwgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IGFjY2Vzc19zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0RXhwclN0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfZXhwcl9zdG10KHNlbGYpOgogICAgICAgICAjIChleHBybGlzdCAnPScpKiBleHBybGlzdAogICAgICAgICAxCiAgICAgICAgIDEsIDIsIDMKQEAgLTM3MCw3ICszNzcsNyBAQAogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgInggKyAxID0gMSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiYSArIDEgPSBiICsgMiIpCiAKLSAgICBkZWYgdGVzdERlbFN0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfZGVsX3N0bXQoc2VsZik6CiAgICAgICAgICMgJ2RlbCcgZXhwcmxpc3QKICAgICAgICAgYWJjID0gWzEsMiwzXQogICAgICAgICB4LCB5LCB6ID0gYWJjCkBAIC0zNzksMTggKzM4NiwxOCBAQAogICAgICAgICBkZWwgYWJjCiAgICAgICAgIGRlbCB4LCB5LCAoeiwgeHl6KQogCi0gICAgZGVmIHRlc3RQYXNzU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9wYXNzX3N0bXQoc2VsZik6CiAgICAgICAgICMgJ3Bhc3MnCiAgICAgICAgIHBhc3MKIAogICAgICMgZmxvd19zdG10OiBicmVha19zdG10IHwgY29udGludWVfc3RtdCB8IHJldHVybl9zdG10IHwgcmFpc2Vfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdEJyZWFrU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9icmVha19zdG10KHNlbGYpOgogICAgICAgICAjICdicmVhaycKICAgICAgICAgd2hpbGUgMTogYnJlYWsKIAotICAgIGRlZiB0ZXN0Q29udGludWVTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbnRpbnVlX3N0bXQoc2VsZik6CiAgICAgICAgICMgJ2NvbnRpbnVlJwogICAgICAgICBpID0gMQogICAgICAgICB3aGlsZSBpOiBpID0gMDsgY29udGludWUKQEAgLTQ0Miw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiY29udGludWUgdGhlbiBicmVhayBpbiB0cnkvZXhjZXB0IGluIGxvb3AgYnJva2VuISIpCiAgICAgICAgIHRlc3RfaW5uZXIoKQogCi0gICAgZGVmIHRlc3RSZXR1cm4oc2VsZik6CisgICAgZGVmIHRlc3RfcmV0dXJuKHNlbGYpOgogICAgICAgICAjICdyZXR1cm4nIFt0ZXN0bGlzdF0KICAgICAgICAgZGVmIGcxKCk6IHJldHVybgogICAgICAgICBkZWYgZzIoKTogcmV0dXJuIDEKQEAgLTQ1MCwxNyArNDU3LDQ5IEBACiAgICAgICAgIHggPSBnMigpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnJldHVybiAxIikKIAotICAgIGRlZiB0ZXN0WWllbGQoc2VsZik6CisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgICMgQWxsb3dlZCBhcyBzdGFuZGFsb25lIHN0YXRlbWVudAorICAgICAgICBkZWYgZygpOiB5aWVsZCAxCisgICAgICAgIGRlZiBnKCk6IHlpZWxkIGZyb20gKCkKKyAgICAgICAgIyBBbGxvd2VkIGFzIFJIUyBvZiBhc3NpZ25tZW50CisgICAgICAgIGRlZiBnKCk6IHggPSB5aWVsZCAxCisgICAgICAgIGRlZiBnKCk6IHggPSB5aWVsZCBmcm9tICgpCisgICAgICAgICMgT3JkaW5hcnkgeWllbGQgYWNjZXB0cyBpbXBsaWNpdCB0dXBsZXMKKyAgICAgICAgZGVmIGcoKTogeWllbGQgMSwgMQorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgMSwgMQorICAgICAgICAjICd5aWVsZCBmcm9tJyBkb2VzIG5vdAorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IHlpZWxkIGZyb20gKCksIDEiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IHggPSB5aWVsZCBmcm9tICgpLCAxIikKKyAgICAgICAgIyBSZXF1aXJlcyBwYXJlbnRoZXNlcyBhcyBzdWJleHByZXNzaW9uCisgICAgICAgIGRlZiBnKCk6IDEsICh5aWVsZCAxKQorICAgICAgICBkZWYgZygpOiAxLCAoeWllbGQgZnJvbSAoKSkKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiAxLCB5aWVsZCAxIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiAxLCB5aWVsZCBmcm9tICgpIikKKyAgICAgICAgIyBSZXF1aXJlcyBwYXJlbnRoZXNlcyBhcyBjYWxsIGFyZ3VtZW50CisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIDEpKQorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCAxKSwgMSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgZnJvbSAoKSkpCisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIGZyb20gKCkpLCAxKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IGYoeWllbGQgMSkiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IGYoeWllbGQgMSwgMSkiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IGYoeWllbGQgZnJvbSAoKSkiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IGYoeWllbGQgZnJvbSAoKSwgMSkiKQorICAgICAgICAjIE5vdCBhbGxvd2VkIGF0IHRvcCBsZXZlbAorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgInlpZWxkIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ5aWVsZCBmcm9tIikKKyAgICAgICAgIyBOb3QgYWxsb3dlZCBhdCBjbGFzcyBzY29wZQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzp5aWVsZCAxIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286eWllbGQgZnJvbSAoKSIpCiAKLSAgICBkZWYgdGVzdFJhaXNlKHNlbGYpOgorCisgICAgZGVmIHRlc3RfcmFpc2Uoc2VsZik6CiAgICAgICAgICMgJ3JhaXNlJyB0ZXN0IFsnLCcgdGVzdF0KICAgICAgICAgdHJ5OiByYWlzZSBSdW50aW1lRXJyb3IoJ2p1c3QgdGVzdGluZycpCiAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6IHBhc3MKICAgICAgICAgdHJ5OiByYWlzZSBLZXlib2FyZEludGVycnVwdAogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6IHBhc3MKIAotICAgIGRlZiB0ZXN0SW1wb3J0KHNlbGYpOgorICAgIGRlZiB0ZXN0X2ltcG9ydChzZWxmKToKICAgICAgICAgIyAnaW1wb3J0JyBkb3R0ZWRfYXNfbmFtZXMKICAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICBpbXBvcnQgdGltZSwgc3lzCkBAIC00NzMsMTMgKzUxMiwxMyBAQAogICAgICAgICBmcm9tIHN5cyBpbXBvcnQgKHBhdGgsIGFyZ3YpCiAgICAgICAgIGZyb20gc3lzIGltcG9ydCAocGF0aCwgYXJndiwpCiAKLSAgICBkZWYgdGVzdEdsb2JhbChzZWxmKToKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CiAgICAgICAgICMgJ2dsb2JhbCcgTkFNRSAoJywnIE5BTUUpKgogICAgICAgICBnbG9iYWwgYQogICAgICAgICBnbG9iYWwgYSwgYgogICAgICAgICBnbG9iYWwgb25lLCB0d28sIHRocmVlLCBmb3VyLCBmaXZlLCBzaXgsIHNldmVuLCBlaWdodCwgbmluZSwgdGVuCiAKLSAgICBkZWYgdGVzdE5vbmxvY2FsKHNlbGYpOgorICAgIGRlZiB0ZXN0X25vbmxvY2FsKHNlbGYpOgogICAgICAgICAjICdub25sb2NhbCcgTkFNRSAoJywnIE5BTUUpKgogICAgICAgICB4ID0gMAogICAgICAgICB5ID0gMApAQCAtNDg3LDcgKzUyNiw3IEBACiAgICAgICAgICAgICBub25sb2NhbCB4CiAgICAgICAgICAgICBub25sb2NhbCB4LCB5CiAKLSAgICBkZWYgdGVzdEFzc2VydChzZWxmKToKKyAgICBkZWYgdGVzdF9hc3NlcnQoc2VsZik6CiAgICAgICAgICMgYXNzZXJ0VHJ1ZXN0bXQ6ICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQogICAgICAgICBhc3NlcnQgMQogICAgICAgICBhc3NlcnQgMSwgMQpAQCAtNTI2LDcgKzU2NSw3IEBACiAgICAgIyMjIGNvbXBvdW5kX3N0bXQ6IGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZgogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdElmKHNlbGYpOgorICAgIGRlZiB0ZXN0X2lmKHNlbGYpOgogICAgICAgICAjICdpZicgdGVzdCAnOicgc3VpdGUgKCdlbGlmJyB0ZXN0ICc6JyBzdWl0ZSkqIFsnZWxzZScgJzonIHN1aXRlXQogICAgICAgICBpZiAxOiBwYXNzCiAgICAgICAgIGlmIDE6IHBhc3MKQEAgLTUzOSw3ICs1NzgsNyBAQAogICAgICAgICBlbGlmIDA6IHBhc3MKICAgICAgICAgZWxzZTogcGFzcwogCi0gICAgZGVmIHRlc3RXaGlsZShzZWxmKToKKyAgICBkZWYgdGVzdF93aGlsZShzZWxmKToKICAgICAgICAgIyAnd2hpbGUnIHRlc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQogICAgICAgICB3aGlsZSAwOiBwYXNzCiAgICAgICAgIHdoaWxlIDA6IHBhc3MKQEAgLTU1NCw3ICs1OTMsNyBAQAogICAgICAgICAgICAgeCA9IDIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAyKQogCi0gICAgZGVmIHRlc3RGb3Ioc2VsZik6CisgICAgZGVmIHRlc3RfZm9yKHNlbGYpOgogICAgICAgICAjICdmb3InIGV4cHJsaXN0ICdpbicgZXhwcmxpc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQogICAgICAgICBmb3IgaSBpbiAxLCAyLCAzOiBwYXNzCiAgICAgICAgIGZvciBpLCBqLCBrIGluICgpOiBwYXNzCkBAIC01ODEsNyArNjIwLDcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFsxLCAyLCAzXSkKIAotICAgIGRlZiB0ZXN0VHJ5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyeShzZWxmKToKICAgICAgICAgIyMjIHRyeV9zdG10OiAndHJ5JyAnOicgc3VpdGUgKGV4Y2VwdF9jbGF1c2UgJzonIHN1aXRlKSsgWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgICMjIyAgICAgICAgIHwgJ3RyeScgJzonIHN1aXRlICdmaW5hbGx5JyAnOicgc3VpdGUKICAgICAgICAgIyMjIGV4Y2VwdF9jbGF1c2U6ICdleGNlcHQnIFtleHByIFsnYXMnIGV4cHJdXQpAQCAtNjA0LDcgKzY0Myw3IEBACiAgICAgICAgIHRyeTogcGFzcwogICAgICAgICBmaW5hbGx5OiBwYXNzCiAKLSAgICBkZWYgdGVzdFN1aXRlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3N1aXRlKHNlbGYpOgogICAgICAgICAjIHNpbXBsZV9zdG10IHwgTkVXTElORSBJTkRFTlQgTkVXTElORSogKHN0bXQgTkVXTElORSopKyBERURFTlQKICAgICAgICAgaWYgMTogcGFzcwogICAgICAgICBpZiAxOgpAQCAtNjE5LDcgKzY1OCw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAjCiAKLSAgICBkZWYgdGVzdFRlc3Qoc2VsZik6CisgICAgZGVmIHRlc3RfdGVzdChzZWxmKToKICAgICAgICAgIyMjIGFuZF90ZXN0ICgnb3InIGFuZF90ZXN0KSoKICAgICAgICAgIyMjIGFuZF90ZXN0OiBub3RfdGVzdCAoJ2FuZCcgbm90X3Rlc3QpKgogICAgICAgICAjIyMgbm90X3Rlc3Q6ICdub3QnIG5vdF90ZXN0IHwgY29tcGFyaXNvbgpAQCAtNjMwLDcgKzY2OSw3IEBACiAgICAgICAgIGlmIG5vdCAxIGFuZCAxIGFuZCAxOiBwYXNzCiAgICAgICAgIGlmIDEgYW5kIDEgb3IgMSBhbmQgMSBhbmQgMSBvciBub3QgMSBhbmQgMTogcGFzcwogCi0gICAgZGVmIHRlc3RDb21wYXJpc29uKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CiAgICAgICAgICMjIyBjb21wYXJpc29uOiBleHByIChjb21wX29wIGV4cHIpKgogICAgICAgICAjIyMgY29tcF9vcDogJzwnfCc+J3wnPT0nfCc+PSd8Jzw9J3wnIT0nfCdpbid8J25vdCcgJ2luJ3wnaXMnfCdpcycgJ25vdCcKICAgICAgICAgaWYgMTogcGFzcwpAQCAtNjQ3LDM2ICs2ODYsMzYgQEAKICAgICAgICAgaWYgMSBub3QgaW4gKCk6IHBhc3MKICAgICAgICAgaWYgMSA8IDEgPiAxID09IDEgPj0gMSA8PSAxICE9IDEgaW4gMSBub3QgaW4gMSBpcyAxIGlzIG5vdCAxOiBwYXNzCiAKLSAgICBkZWYgdGVzdEJpbmFyeU1hc2tPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfYmluYXJ5X21hc2tfb3BzKHNlbGYpOgogICAgICAgICB4ID0gMSAmIDEKICAgICAgICAgeCA9IDEgXiAxCiAgICAgICAgIHggPSAxIHwgMQogCi0gICAgZGVmIHRlc3RTaGlmdE9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9zaGlmdF9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxIDw8IDEKICAgICAgICAgeCA9IDEgPj4gMQogICAgICAgICB4ID0gMSA8PCAxID4+IDEKIAotICAgIGRlZiB0ZXN0QWRkaXRpdmVPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfYWRkaXRpdmVfb3BzKHNlbGYpOgogICAgICAgICB4ID0gMQogICAgICAgICB4ID0gMSArIDEKICAgICAgICAgeCA9IDEgLSAxIC0gMQogICAgICAgICB4ID0gMSAtIDEgKyAxIC0gMSArIDEKIAotICAgIGRlZiB0ZXN0TXVsdGlwbGljYXRpdmVPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfbXVsdGlwbGljYXRpdmVfb3BzKHNlbGYpOgogICAgICAgICB4ID0gMSAqIDEKICAgICAgICAgeCA9IDEgLyAxCiAgICAgICAgIHggPSAxICUgMQogICAgICAgICB4ID0gMSAvIDEgKiAxICUgMQogCi0gICAgZGVmIHRlc3RVbmFyeU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF91bmFyeV9vcHMoc2VsZik6CiAgICAgICAgIHggPSArMQogICAgICAgICB4ID0gLTEKICAgICAgICAgeCA9IH4xCiAgICAgICAgIHggPSB+MSBeIDEgJiAxIHwgMSAmIDEgXiAtMQogICAgICAgICB4ID0gLTEqMS8xICsgMSoxIC0gLS0tMSoxCiAKLSAgICBkZWYgdGVzdFNlbGVjdG9ycyhzZWxmKToKKyAgICBkZWYgdGVzdF9zZWxlY3RvcnMoc2VsZik6CiAgICAgICAgICMjIyB0cmFpbGVyOiAnKCcgW3Rlc3RsaXN0XSAnKScgfCAnWycgc3Vic2NyaXB0ICddJyB8ICcuJyBOQU1FCiAgICAgICAgICMjIyBzdWJzY3JpcHQ6IGV4cHIgfCBbZXhwcl0gJzonIFtleHByXQogCkBAIC03MDYsNyArNzQ1LDcgQEAKICAgICAgICAgTC5zb3J0KGtleT1sYW1iZGEgeDogeCBpZiBpc2luc3RhbmNlKHgsIHR1cGxlKSBlbHNlICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihMKSwgJ1sxLCAoMSwpLCAoMSwgMiksICgxLCAyLCAzKV0nKQogCi0gICAgZGVmIHRlc3RBdG9tcyhzZWxmKToKKyAgICBkZWYgdGVzdF9hdG9tcyhzZWxmKToKICAgICAgICAgIyMjIGF0b206ICcoJyBbdGVzdGxpc3RdICcpJyB8ICdbJyBbdGVzdGxpc3RdICddJyB8ICd7JyBbZGljdHNldG1ha2VyXSAnfScgfCBOQU1FIHwgTlVNQkVSIHwgU1RSSU5HCiAgICAgICAgICMjIyBkaWN0c2V0bWFrZXI6ICh0ZXN0ICc6JyB0ZXN0ICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddKSB8ICh0ZXN0ICgnLCcgdGVzdCkqIFsnLCddKQogCkBAIC03NDEsNyArNzgwLDcgQEAKICAgICAjIyMgdGVzdGxpc3Q6IHRlc3QgKCcsJyB0ZXN0KSogWycsJ10KICAgICAjIFRoZXNlIGhhdmUgYmVlbiBleGVyY2lzZWQgZW5vdWdoIGFib3ZlCiAKLSAgICBkZWYgdGVzdENsYXNzZGVmKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NsYXNzZGVmKHNlbGYpOgogICAgICAgICAjICdjbGFzcycgTkFNRSBbJygnIFt0ZXN0bGlzdF0gJyknXSAnOicgc3VpdGUKICAgICAgICAgY2xhc3MgQjogcGFzcwogICAgICAgICBjbGFzcyBCMigpOiBwYXNzCkBAIC03NjAsMTQgKzc5OSwxNCBAQAogICAgICAgICBAY2xhc3NfZGVjb3JhdG9yCiAgICAgICAgIGNsYXNzIEc6IHBhc3MKIAotICAgIGRlZiB0ZXN0RGljdGNvbXBzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2RpY3Rjb21wcyhzZWxmKToKICAgICAgICAgIyBkaWN0b3JzZXRtYWtlcjogKCAodGVzdCAnOicgdGVzdCAoY29tcF9mb3IgfAogICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkpIHwKICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAodGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSkpICkKICAgICAgICAgbnVtcyA9IFsxLCAyLCAzXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHtpOmkrMSBmb3IgaSBpbiBudW1zfSwgezE6IDIsIDI6IDMsIDM6IDR9KQogCi0gICAgZGVmIHRlc3RMaXN0Y29tcHMoc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGNvbXBzKHNlbGYpOgogICAgICAgICAjIGxpc3QgY29tcHJlaGVuc2lvbiB0ZXN0cwogICAgICAgICBudW1zID0gWzEsIDIsIDMsIDQsIDVdCiAgICAgICAgIHN0cnMgPSBbIkFwcGxlIiwgIkJhbmFuYSIsICJDb2NvbnV0Il0KQEAgLTgzMCw3ICs4NjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIFsoJ0JvZWluZycsICdBaXJsaW5lcicpLCAoJ0JvZWluZycsICdFbmdpbmUnKSwgKCdGb3JkJywgJ0VuZ2luZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ01hY2RvbmFsZHMnLCAnQ2hlZXNlYnVyZ2VyJyldKQogCi0gICAgZGVmIHRlc3RHZW5leHBzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dlbmV4cHMoc2VsZik6CiAgICAgICAgICMgZ2VuZXJhdG9yIGV4cHJlc3Npb24gdGVzdHMKICAgICAgICAgZyA9IChbeCBmb3IgeCBpbiByYW5nZSgxMCldIGZvciB4IGluIHJhbmdlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIFt4IGZvciB4IGluIHJhbmdlKDEwKV0pCkBAIC04NjUsNyArOTA0LDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmb28oeCBmb3IgeCBpbiByYW5nZSgxMCksIDEwMCkiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImZvbygxMDAsIHggZm9yIHggaW4gcmFuZ2UoMTApKSIpCiAKLSAgICBkZWYgdGVzdENvbXByZWhlbnNpb25TcGVjaWFscyhzZWxmKToKKyAgICBkZWYgdGVzdF9jb21wcmVoZW5zaW9uX3NwZWNpYWxzKHNlbGYpOgogICAgICAgICAjIHRlc3QgZm9yIG91dG1vc3QgaXRlcmFibGUgcHJlY29tcHV0YXRpb24KICAgICAgICAgeCA9IDEwOyBnID0gKGkgZm9yIGkgaW4gcmFuZ2UoeCkpOyB4ID0gNQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KGcpKSwgMTApCkBAIC05MDQsNyArOTQzLDcgQEAKICAgICAgICAgd2l0aCBtYW5hZ2VyKCkgYXMgeCwgbWFuYWdlcigpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIHRlc3RJZkVsc2VFeHByKHNlbGYpOgorICAgIGRlZiB0ZXN0X2lmX2Vsc2VfZXhwcihzZWxmKToKICAgICAgICAgIyBUZXN0IGlmZWxzZSBleHByZXNzaW9ucyBpbiB2YXJpb3VzIGNhc2VzCiAgICAgICAgIGRlZiBfY2hlY2tldmFsKG1zZywgcmV0KToKICAgICAgICAgICAgICJoZWxwZXIgdG8gY2hlY2sgdGhhdCBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25zIGlzIGRvbmUgY29ycmVjdGx5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5IGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CmluZGV4IGNlZDIyNmYuLmFmNzM5NTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKQEAgLTMzLDcgKzMzLDcgQEAKICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24KIAogCi1jbGFzcyBUZXN0R3ppcCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNDMsNiArNDMsNyBAQAogICAgICAgICBzdXBwb3J0LnVubGluayhzZWxmLmZpbGVuYW1lKQogCiAKK2NsYXNzIFRlc3RHemlwKEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGRhdGExICogNTApCkBAIC02NCw2ICs2NSwyMSBAQAogICAgICAgICAgICAgZCA9IGYucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGF0YTEqNTApCiAKKyAgICBkZWYgdGVzdF9yZWFkMShzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dyaXRlKCkKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgbnJlYWQgPSAwCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncicpIGFzIGY6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGQgPSBmLnJlYWQxKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGQpCisgICAgICAgICAgICAgICAgbnJlYWQgKz0gbGVuKGQpCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IHBvc2l0aW9uIHdhcyB1cGRhdGVkIGNvcnJlY3RseSAoc2VlIGlzc3VlMTA3OTEpLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIG5yZWFkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKGJsb2NrcyksIGRhdGExICogNTApCisKICAgICBkZWYgdGVzdF9pb19vbl9jbG9zZWRfb2JqZWN0KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBJL08gb3BlcmF0aW9ucyBvbiBjbG9zZWQgR3ppcEZpbGUgb2JqZWN0cyByYWlzZSBhCiAgICAgICAgICMgVmFsdWVFcnJvciwganVzdCBsaWtlIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBvbiBmaWxlIG9iamVjdHMuCkBAIC0xMDAsMTQgKzExNiwxNCBAQAogICAgICAgICAjIEJ1ZyAjMTA3NDI2MSB3YXMgdHJpZ2dlcmVkIHdoZW4gcmVhZGluZyBhIGZpbGUgdGhhdCBjb250YWluZWQKICAgICAgICAgIyBtYW55LCBtYW55IG1lbWJlcnMuICBDcmVhdGUgc3VjaCBhIGZpbGUgYW5kIHZlcmlmeSB0aGF0IHJlYWRpbmcgaXQKICAgICAgICAgIyB3b3Jrcy4KLSAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgJ3diJywgOSkgYXMgZjoKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicsIDkpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGInYScpCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDIwMCk6Ci0gICAgICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiLCA5KSBhcyBmOiAjIGFwcGVuZAorICAgICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICJhYiIsIDkpIGFzIGY6ICMgYXBwZW5kCiAgICAgICAgICAgICAgICAgZi53cml0ZShiJ2EnKQogCiAgICAgICAgICMgVHJ5IHJlYWRpbmcgdGhlIGZpbGUKLSAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgemdmaWxlOgorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgInJiIikgYXMgemdmaWxlOgogICAgICAgICAgICAgY29udGVudHMgPSBiIiIKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgenR4dCA9IHpnZmlsZS5yZWFkKDgxOTIpCkBAIC0xMjQsNyArMTQwLDcgQEAKICAgICAgICAgICAgIHdpdGggaW8uQnVmZmVyZWRSZWFkZXIoZikgYXMgcjoKICAgICAgICAgICAgICAgICBsaW5lcyA9IFtsaW5lIGZvciBsaW5lIGluIHJdCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgNTAgKiBkYXRhMS5zcGxpdGxpbmVzKFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCA1MCAqIGRhdGExLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAKICAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKICAgICAgICAgc2VsZi50ZXN0X3dyaXRlKCkKQEAgLTMyMyw2ICszMzksMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDEwMCksIGInJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnJlYWQsIGxlbih1bmNvbXByZXNzZWQpKQogCisgICAgZGVmIHRlc3RfdGV4dGlvX3JlYWRsaW5lcyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTA3OTE6IFRleHRJT1dyYXBwZXIucmVhZGxpbmVzKCkgZmFpbHMgd2hlbiB3cmFwcGluZyBHemlwRmlsZS4KKyAgICAgICAgbGluZXMgPSAoZGF0YTEgKiA1MCkuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKKyAgICAgICAgc2VsZi50ZXN0X3dyaXRlKCkKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHdpdGggaW8uVGV4dElPV3JhcHBlcihmLCBlbmNvZGluZz0iYXNjaWkiKSBhcyB0OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZWFkbGluZXMoKSwgbGluZXMpCisKICAgICBkZWYgdGVzdF9maWxlb2JqX2Zyb21fZmRvcGVuKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMzc4MTogT3BlbmluZyBhIEd6aXBGaWxlIGZvciB3cml0aW5nIGZhaWxzIHdoZW4gdXNpbmcgYQogICAgICAgICAjIGZpbGVvYmogY3JlYXRlZCB3aXRoIG9zLmZkb3BlbigpLgpAQCAtMzY1LDggKzM4OSwxMDkgQEAKICAgICAgICAgICAgIGRhdGFjID0gZ3ppcC5jb21wcmVzcyhkYXRhKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnemlwLmRlY29tcHJlc3MoZGF0YWMpLCBkYXRhKQogCisKK2NsYXNzIFRlc3RPcGVuKEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExICogNTAKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhYiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkICogMikKKworICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcGxpY2l0IGJpbmFyeSBtb2RlcyAobm8gImIiIG9yICJ0IiBpbiBtb2RlIHN0cmluZykuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExICogNTAKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkICogMikKKworICAgIGRlZiB0ZXN0X3RleHRfbW9kZXMoc2VsZik6CisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3KQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3ICogMikKKworICAgIGRlZiB0ZXN0X2ZpbGVvYmooc2VsZik6CisgICAgICAgIHVuY29tcHJlc3NlZF9ieXRlcyA9IGRhdGExICogNTAKKyAgICAgICAgdW5jb21wcmVzc2VkX3N0ciA9IHVuY29tcHJlc3NlZF9ieXRlcy5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgY29tcHJlc3NlZCA9IGd6aXAuY29tcHJlc3ModW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGlvLkJ5dGVzSU8oY29tcHJlc3NlZCksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGlvLkJ5dGVzSU8oY29tcHJlc3NlZCksICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWRfc3RyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKDEyMy40NTYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIiwgbmV3bGluZT0iXG4iKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBlbmNvZGluZy4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEuZGVjb2RlKCJhc2NpaSIpICogNTAKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIsIGVuY29kaW5nPSJ1dGYtMTYiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoInV0Zi0xNiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9InV0Zi0xNiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZ19lcnJvcl9oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiImZvb1x4ZmZiYXIiKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0iYXNjaWkiLCBlcnJvcnM9Imlnbm9yZSIpIFwKKyAgICAgICAgICAgICAgICBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImZvb2JhciIpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBleHBsaWNpdCBuZXdsaW5lICh1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGRpc2FibGVkKS4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEuZGVjb2RlKCJhc2NpaSIpICogNTAKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIG5ld2xpbmU9IlxyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3VuY29tcHJlc3NlZF0pCisKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0R3ppcCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0R3ppcCwgVGVzdE9wZW4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGFzaC5weSBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQppbmRleCBjMGRkMzRkLi5kMWRkYzc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CkBAIC00NSw2ICs0NSwxNiBAQAogICAgICAgICBzZWxmLnNhbWVfaGFzaChpbnQoMS4yM2UzMDApLCBmbG9hdCgxLjIzZTMwMCkpCiAgICAgICAgIHNlbGYuc2FtZV9oYXNoKGZsb2F0KDAuNSksIGNvbXBsZXgoMC41LCAwLjApKQogCisgICAgZGVmIHRlc3RfdW5hbGlnbmVkX2J1ZmZlcnMoc2VsZik6CisgICAgICAgICMgVGhlIGhhc2ggZnVuY3Rpb24gZm9yIGJ5dGVzLWxpa2Ugb2JqZWN0cyBzaG91bGRuJ3QgaGF2ZQorICAgICAgICAjIGFsaWdubWVudC1kZXBlbmRlbnQgcmVzdWx0cyAoZXhhbXBsZSBpbiBpc3N1ZSAjMTY0MjcpLgorICAgICAgICBiID0gYiIxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIgKiAxMjgKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTYpOgorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoMTYpOgorICAgICAgICAgICAgICAgIGFsaWduZWQgPSBiW2k6MTI4K2pdCisgICAgICAgICAgICAgICAgdW5hbGlnbmVkID0gbWVtb3J5dmlldyhiKVtpOjEyOCtqXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChhbGlnbmVkKSwgaGFzaCh1bmFsaWduZWQpKQorCiAKIF9kZWZhdWx0X2hhc2ggPSBvYmplY3QuX19oYXNoX18KIGNsYXNzIERlZmF1bHRIYXNoKG9iamVjdCk6IHBhc3MKQEAgLTExMyw4ICsxMjMsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5zZXFbaW5kZXhdCiAKIGNsYXNzIEhhc2hCdWlsdGluc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBoYXNoZXNfdG9fY2hlY2sgPSBbcmFuZ2UoMTApLAotICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUocmFuZ2UoMTApKSwKKyAgICBoYXNoZXNfdG9fY2hlY2sgPSBbZW51bWVyYXRlKHJhbmdlKDEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIoRGVmYXVsdEl0ZXJTZXEoKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIobGFtYmRhOiAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICBdCkBAIC0xNjAsOCArMTY5LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGtub3duX2hhc2hfb2Zfb2JqID0gLTE2MDA5MjU1MzMKIAotICAgICAgICAjIFJhbmRvbWl6YXRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdDoKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKKyAgICAgICAgIyBSYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdDoKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKIAogICAgICAgICAjIEl0IGNhbiBhbHNvIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIHNlZWQgdG8gMDoKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8sIHNlZWQ9MCksIGtub3duX2hhc2hfb2Zfb2JqKQpAQCAtMTkzLDYgKzIwMiwxMiBAQAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGIiIiksIDApCiAKK2NsYXNzIE1lbW9yeXZpZXdIYXNoUmFuZG9taXphdGlvblRlc3RzKFN0cmluZ2xpa2VIYXNoUmFuZG9taXphdGlvblRlc3RzKToKKyAgICByZXByXyA9ICJtZW1vcnl2aWV3KGInYWJjJykiCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtZW1vcnl2aWV3KGIiIikpLCAwKQorCiBjbGFzcyBEYXRldGltZVRlc3RzKEhhc2hSYW5kb21pemF0aW9uVGVzdHMpOgogICAgIGRlZiBnZXRfaGFzaF9jb21tYW5kKHNlbGYsIHJlcHJfKToKICAgICAgICAgcmV0dXJuICdpbXBvcnQgZGF0ZXRpbWU7IHByaW50KGhhc2goJXMpKScgJSByZXByXwpAQCAtMjEzLDYgKzIyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaEJ1aWx0aW5zVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RySGFzaFJhbmRvbWl6YXRpb25UZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlc0hhc2hSYW5kb21pemF0aW9uVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5dmlld0hhc2hSYW5kb21pemF0aW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVEYXRlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVEYXRldGltZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgIERhdGV0aW1lVGltZVRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IDI5ZDNhMWMuLjMyZjg1ZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgYXJyYXkKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0zNyw3ICszOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEyMjQnLCAnU0hBMjI0JywgJ3NoYTI1NicsICdTSEEyNTYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJyApCiAKLSAgICBfd2Fybl9vbl9leHRlbnNpb25faW1wb3J0ID0gQ09NUElMRURfV0lUSF9QWURFQlVHCisgICAgIyBJc3N1ZSAjMTQ2OTM6IGZhbGxiYWNrIG1vZHVsZXMgYXJlIGFsd2F5cyBjb21waWxlZCB1bmRlciBQT1NJWAorICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBvcy5uYW1lID09ICdwb3NpeCcgb3IgQ09NUElMRURfV0lUSF9QWURFQlVHCiAKICAgICBkZWYgX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoc2VsZiwgbW9kdWxlX25hbWUpOgogICAgICAgICAiIiJJbXBvcnQgYSBtb2R1bGUgYW5kIHJldHVybiBhIHJlZmVyZW5jZSB0byBpdCBvciBOb25lIG9uIGZhaWx1cmUuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5IGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQppbmRleCBlMGM0OWMxLi41NDM5NWMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCByYW5kb20KK2ltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwVW5sZXNzCkBAIC0yNSw4ICsyNiw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoY19oZWFwcSwgZm5hbWUpLl9fbW9kdWxlX18sICdfaGVhcHEnKQogCiAKLWNsYXNzIFRlc3RIZWFwKFRlc3RDYXNlKToKLSAgICBtb2R1bGUgPSBOb25lCitjbGFzcyBUZXN0SGVhcDoKIAogICAgIGRlZiB0ZXN0X3B1c2hfcG9wKHNlbGYpOgogICAgICAgICAjIDEpIFB1c2ggMjU2IHJhbmRvbSBudW1iZXJzIGFuZCBwb3AgdGhlbSBvZmYsIHZlcmlmeWluZyBhbGwncyBPSy4KQEAgLTIxNCwxMiArMjE0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGF0YSwgTEUpCiAKIAotY2xhc3MgVGVzdEhlYXBQeXRob24oVGVzdEhlYXApOgorY2xhc3MgVGVzdEhlYXBQeXRob24oVGVzdEhlYXAsIFRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV9oZWFwcQogCiAKIEBza2lwVW5sZXNzKGNfaGVhcHEsICdyZXF1aXJlcyBfaGVhcHEnKQotY2xhc3MgVGVzdEhlYXBDKFRlc3RIZWFwKToKK2NsYXNzIFRlc3RIZWFwQyhUZXN0SGVhcCwgVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfaGVhcHEKIAogCkBAIC0zMTksOCArMzE5LDcgQEAKICAgICByZXR1cm4gY2hhaW4obWFwKGxhbWJkYSB4OngsIFIoSWcoRyhzZXFuKSkpKSkKIAogCi1jbGFzcyBUZXN0RXJyb3JIYW5kbGluZyhUZXN0Q2FzZSk6Ci0gICAgbW9kdWxlID0gTm9uZQorY2xhc3MgVGVzdEVycm9ySGFuZGxpbmc6CiAKICAgICBkZWYgdGVzdF9ub25fc2VxdWVuY2Uoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChzZWxmLm1vZHVsZS5oZWFwaWZ5LCBzZWxmLm1vZHVsZS5oZWFwcG9wKToKQEAgLTM3MSwzMSArMzcwLDEzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIGYsIDIsIEUocykpCiAKIAotY2xhc3MgVGVzdEVycm9ySGFuZGxpbmdQeXRob24oVGVzdEVycm9ySGFuZGxpbmcpOgorY2xhc3MgVGVzdEVycm9ySGFuZGxpbmdQeXRob24oVGVzdEVycm9ySGFuZGxpbmcsIFRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV9oZWFwcQogCiBAc2tpcFVubGVzcyhjX2hlYXBxLCAncmVxdWlyZXMgX2hlYXBxJykKLWNsYXNzIFRlc3RFcnJvckhhbmRsaW5nQyhUZXN0RXJyb3JIYW5kbGluZyk6CitjbGFzcyBUZXN0RXJyb3JIYW5kbGluZ0MoVGVzdEVycm9ySGFuZGxpbmcsIFRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX2hlYXBxCiAKIAotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdE1vZHVsZXMsIFRlc3RIZWFwUHl0aG9uLCBUZXN0SGVhcEMsCi0gICAgICAgICAgICAgICAgICAgIFRlc3RFcnJvckhhbmRsaW5nUHl0aG9uLCBUZXN0RXJyb3JIYW5kbGluZ0NdCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5IGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CmluZGV4IDRkZTA2MjAuLjRjYTdjZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKQEAgLTIzNCw2ICsyMzQsMTggQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5mYWlsKCJTdGFuZGFyZCBjb25zdHJ1Y3RvciBjYWxsIHJhaXNlZCBleGNlcHRpb24uIikKIAorICAgIGRlZiB0ZXN0X3dpdGhfc3RyX2tleShzZWxmKToKKyAgICAgICAgIyBQYXNzIGEga2V5IG9mIHR5cGUgc3RyLCB3aGljaCBpcyBhbiBlcnJvciwgYmVjYXVzZSBpdCBleHBlY3RzIGEga2V5CisgICAgICAgICMgb2YgdHlwZSBieXRlcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoID0gaG1hYy5ITUFDKCJrZXkiKQorCisgICAgZGVmIHRlc3RfZG90X25ld193aXRoX3N0cl9rZXkoc2VsZik6CisgICAgICAgICMgUGFzcyBhIGtleSBvZiB0eXBlIHN0ciwgd2hpY2ggaXMgYW4gZXJyb3IsIGJlY2F1c2UgaXQgZXhwZWN0cyBhIGtleQorICAgICAgICAjIG9mIHR5cGUgYnl0ZXMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaCA9IGhtYWMubmV3KCJrZXkiKQorCiAgICAgZGVmIHRlc3Rfd2l0aHRleHQoc2VsZik6CiAgICAgICAgICMgQ29uc3RydWN0b3IgY2FsbCB3aXRoIHRleHQuCiAgICAgICAgIHRyeToKQEAgLTMwMiwxMiArMzE0LDEyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLmhleGRpZ2VzdCgpLCBoMi5oZXhkaWdlc3QoKSwKICAgICAgICAgICAgICJIZXhkaWdlc3Qgb2YgY29weSBkb2Vzbid0IG1hdGNoIG9yaWdpbmFsIGhleGRpZ2VzdC4iKQogCitjbGFzcyBDb21wYXJlRGlnZXN0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY29tcGFyZV9kaWdlc3Qoc2VsZik6CisgICAgICAgICMgVGVzdGluZyBpbnB1dCB0eXBlIGV4Y2VwdGlvbiBoYW5kbGluZworICAgICAgICBhLCBiID0gMTAwLCAyMDAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gMTAwLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAyMDAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gImZvb2JhciIsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZXMgb2YgZGlmZmVyZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgYiJmb28iCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IGIiXHhkZVx4YWRceGJlXHhlZiIsIGIiXHhkZVx4YWQiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZXMgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIGIiZm9vYmF6IgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBiIlx4ZGVceGFkXHhiZVx4ZWYiLCBiIlx4YWJceGFkXHgxZFx4ZWEiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZXMgb2Ygc2FtZSBsZW5ndGhzLCBzYW1lIHZhbHVlcworICAgICAgICBhLCBiID0gYiJmb29iYXIiLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBiIlx4ZGVceGFkXHhiZVx4ZWYiLCBiIlx4ZGVceGFkXHhiZVx4ZWYiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlYXJyYXlzIG9mIHNhbWUgbGVuZ3Rocywgc2FtZSB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBieXRlYXJyYXkoYiJmb29iYXIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBkaWZmZWVudCBsZW5ndGhzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYnl0ZWFycmF5KGIiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlYXJyYXlzIG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGJ5dGVhcnJheShiImZvb2JheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBhbmQgYnl0ZWFycmF5IG9mIHNhbWUgbGVuZ3Rocywgc2FtZSB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGIsIGEpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlIGJ5dGVhcnJheSBvZiBkaWZmZWVudCBsZW5ndGhzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYiJmb28iCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGIsIGEpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlIGFuZCBieXRlYXJyYXkgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYiJmb29iYXoiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGIsIGEpKQorCisgICAgICAgICMgVGVzdGluZyBzdHIgb2Ygc2FtZSBsZW5ndGhzCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIHN0ciBvZiBkaWZmZWVudCBsZW5ndGhzCisgICAgICAgIGEsIGIgPSAiZm9vIiwgImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCAiZm9vYmF6IgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGVycm9yIGNhc2VzCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAxCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IDEwMCwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9ICJmb2/DpCIsICJmb2/DpCIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorCisgICAgICAgICMgc3ViY2xhc3NlcyBhcmUgc3VwcG9ydGVkIGJ5IGlnbm9yZSBfX2VxX18KKyAgICAgICAgY2xhc3MgbXlzdHIoc3RyKToKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGEsIGIgPSBteXN0cigiZm9vYmFyIiksIG15c3RyKCJmb29iYXIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IG15c3RyKCJmb29iYXIiKSwgImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteXN0cigiZm9vYmFyIiksIG15c3RyKCJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgY2xhc3MgbXlieXRlcyhieXRlcyk6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBhLCBiID0gbXlieXRlcyhiImZvb2JhciIpLCBteWJ5dGVzKGIiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteWJ5dGVzKGIiZm9vYmFyIiksIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IG15Ynl0ZXMoYiJmb29iYXIiKSwgbXlieXRlcyhiImZvb2JheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIFRlc3RWZWN0b3JzVGVzdENhc2UsCiAgICAgICAgIENvbnN0cnVjdG9yVGVzdENhc2UsCiAgICAgICAgIFNhbml0eVRlc3RDYXNlLAotICAgICAgICBDb3B5VGVzdENhc2UKKyAgICAgICAgQ29weVRlc3RDYXNlLAorICAgICAgICBDb21wYXJlRGlnZXN0VGVzdENhc2UKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggYzRmODBjYy4uYzVkODc4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMTAyLDcgKzEwMiw4IEBACiBjbGFzcyBIVE1MUGFyc2VyU3RyaWN0VGVzdENhc2UoVGVzdENhc2VCYXNlKToKIAogICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aXRlPUZhbHNlKToKKyAgICAgICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fb25seShzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCI8P3Byb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24+IiwgWwpAQCAtNDU1LDcgKzQ1Niw3IEBACiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygnPGZvcm0gYWN0aW9uPSIveHh4LnBocD9hPTEmYW1wO2I9MiZhbXAiLCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kPSJwb3N0Ij4nLCBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdzdGFydHRhZycsICdmb3JtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYWN0aW9uJywgJy94eHgucGhwP2E9MSZiPTImYW1wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2FjdGlvbicsICcveHh4LnBocD9hPTEmYj0yJicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcsJywgTm9uZSksICgnbWV0aG9kJywgJ3Bvc3QnKV0pXSkKIAogICAgIGRlZiB0ZXN0X3dlaXJkX2NoYXJzX2luX3VucXVvdGVkX2F0dHJpYnV0ZV92YWx1ZXMoc2VsZik6CkBAIC01NDAsNiArNTQxLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC51bmVzY2FwZSgnJiMwMDM4OycpLCcmJykKICAgICAgICAgIyBzZWUgIzEyODg4CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC51bmVzY2FwZSgnJiMxMjM7ICcgKiAxMDUwKSwgJ3sgJyAqIDEwNTApCisgICAgICAgICMgc2VlICMxNTE1NgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyZFYWN1dGVyaWMmRWFjdXRlO3JpYycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcmYWxwaGFjZW50YXVyaSZhbHBoYTtjZW50YXVyaScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ8OJcmljw4lyaWMmYWxwaGFjZW50YXVyac6xY2VudGF1cmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyZjbzsnKSwgJyZjbzsnKQogCiAgICAgZGVmIHRlc3RfYnJva2VuX2NvbW1lbnRzKHNlbGYpOgogICAgICAgICBodG1sID0gKCc8ISBub3QgcmVhbGx5IGEgY29tbWVudCA+JwpAQCAtNTk0LDcgKzYwMCw4IEBACiBjbGFzcyBBdHRyaWJ1dGVzU3RyaWN0VGVzdENhc2UoVGVzdENhc2VCYXNlKToKIAogICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aXRlPUZhbHNlKToKKyAgICAgICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2F0dHJfc3ludGF4KHNlbGYpOgogICAgICAgICBvdXRwdXQgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQppbmRleCA0MWUwZGZkLi5hMzVlYzk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKQEAgLTI0OCwxOCArMjQ4LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fY29va2llc1sid3d3LmFjbWUuY29tIl1bIi8iXVsiYm9vIl0udmFsdWUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9iYWRfbWFnaWMoc2VsZik6Ci0gICAgICAgICMgSU9FcnJvcnMgKGVnLiBmaWxlIGRvZXNuJ3QgZXhpc3QpIGFyZSBhbGxvd2VkIHRvIHByb3BhZ2F0ZQorICAgICAgICAjIE9TRXJyb3JzIChlZy4gZmlsZSBkb2Vzbid0IGV4aXN0KSBhcmUgYWxsb3dlZCB0byBwcm9wYWdhdGUKICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0LnN1cHBvcnQuVEVTVEZOCiAgICAgICAgIGZvciBjb29raWVqYXJfY2xhc3MgaW4gTFdQQ29va2llSmFyLCBNb3ppbGxhQ29va2llSmFyOgogICAgICAgICAgICAgYyA9IGNvb2tpZWphcl9jbGFzcygpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYy5sb2FkKGZpbGVuYW1lPSJmb3IgdGhpcyB0ZXN0IHRvIHdvcmssIGEgZmlsZSB3aXRoIHRoaXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW5hbWUgc2hvdWxkIG5vdCBleGlzdCIpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAgICAgIyBleGFjdGx5IElPRXJyb3IsIG5vdCBMb2FkRXJyb3IKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4Yy5fX2NsYXNzX18sIElPRXJyb3IpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgIyBhbiBPU0Vycm9yIHN1YmNsYXNzIChsaWtlbHkgRmlsZU5vdEZvdW5kRXJyb3IpLCBidXQgbm90CisgICAgICAgICAgICAgICAgIyBMb2FkRXJyb3IKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGV4Yy5fX2NsYXNzX18sIExvYWRFcnJvcikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBJT0Vycm9yIGZvciBpbnZhbGlkIGZpbGVuYW1lIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIE9TRXJyb3IgZm9yIGludmFsaWQgZmlsZW5hbWUiKQogICAgICAgICAjIEludmFsaWQgY29udGVudHMgb2YgY29va2llcyBmaWxlIChlZy4gYmFkIG1hZ2ljIHN0cmluZykKICAgICAgICAgIyBjYXVzZXMgYSBMb2FkRXJyb3IuCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkKaW5kZXggMWYxY2E1OC4uZTgzMjdlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkKQEAgLTM0LDYgKzM0LDE1IEBACiAgICAgICAgICAgICAgJ2RpY3QnOiB7J2tlZWJsZXInIDogJ0U9bWMyJ30sCiAgICAgICAgICAgICAgJ3JlcHInOiAiPFNpbXBsZUNvb2tpZToga2VlYmxlcj0nRT1tYzInPiIsCiAgICAgICAgICAgICAgJ291dHB1dCc6ICdTZXQtQ29va2llOiBrZWVibGVyPUU9bWMyJ30sCisKKyAgICAgICAgICAgICMgQ29va2llcyB3aXRoICc6JyBjaGFyYWN0ZXIgaW4gdGhlaXIgbmFtZS4gVGhvdWdoIG5vdCBtZW50aW9uZWQgaW4KKyAgICAgICAgICAgICMgUkZDLCBzZXJ2ZXJzIC8gYnJvd3NlcnMgYWxsb3cgaXQuCisKKyAgICAgICAgICAgICB7J2RhdGEnOiAna2V5OnRlcm09dmFsdWU6dGVybScsCisgICAgICAgICAgICAgJ2RpY3QnOiB7J2tleTp0ZXJtJyA6ICd2YWx1ZTp0ZXJtJ30sCisgICAgICAgICAgICAgJ3JlcHInOiAiPFNpbXBsZUNvb2tpZToga2V5OnRlcm09J3ZhbHVlOnRlcm0nPiIsCisgICAgICAgICAgICAgJ291dHB1dCc6ICdTZXQtQ29va2llOiBrZXk6dGVybT12YWx1ZTp0ZXJtJ30sCisKICAgICAgICAgXQogCiAgICAgICAgIGZvciBjYXNlIGluIGNhc2VzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IGIwNzc3ZDQuLjVlYmNmY2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTE4Niw2ICsxODYsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoMiksIGIneHQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQogCisgICAgZGVmIHRlc3RfcGFydGlhbF9yZWFkaW50b3Moc2VsZik6CisgICAgICAgICMgaWYgd2UgaGF2ZSBhIGxlbmd0aCwgdGhlIHN5c3RlbSBrbm93cyB3aGVuIHRvIGNsb3NlIGl0c2VsZgorICAgICAgICAjIHNhbWUgYmVoYXZpb3VyIHRoYW4gd2hlbiB3ZSByZWFkIHRoZSB3aG9sZSB0aGluZyB3aXRoIHJlYWQoKQorICAgICAgICBib2R5ID0gIkhUVFAvMS4xIDIwMCBPa1xyXG5Db250ZW50LUxlbmd0aDogNFxyXG5cclxuVGV4dCIKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoYm9keSkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaykKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIGIgPSBieXRlYXJyYXkoMikKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ1RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXNwLmlzY2xvc2VkKCkpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiKSwgYid4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCisKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRzX25vX2NvbnRlbnRfbGVuZ3RoKHNlbGYpOgogICAgICAgICAjIHdoZW4gbm8gbGVuZ3RoIGlzIHByZXNlbnQsIHRoZSBzb2NrZXQgc2hvdWxkIGJlIGdyYWNlZnVsbHkgY2xvc2VkIHdoZW4KICAgICAgICAgIyBhbGwgZGF0YSB3YXMgcmVhZApAQCAtMTk5LDYgKzIxNiwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgxKSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQogCisgICAgZGVmIHRlc3RfcGFydGlhbF9yZWFkaW50b3Nfbm9fY29udGVudF9sZW5ndGgoc2VsZik6CisgICAgICAgICMgd2hlbiBubyBsZW5ndGggaXMgcHJlc2VudCwgdGhlIHNvY2tldCBzaG91bGQgYmUgZ3JhY2VmdWxseSBjbG9zZWQgd2hlbgorICAgICAgICAjIGFsbCBkYXRhIHdhcyByZWFkCisgICAgICAgIGJvZHkgPSAiSFRUUC8xLjEgMjAwIE9rXHJcblxyXG5UZXh0IgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChib2R5KQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInVGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3AuaXNjbG9zZWQoKSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ3h0JykKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQorCiAgICAgZGVmIHRlc3RfaG9zdF9wb3J0KHNlbGYpOgogICAgICAgICAjIENoZWNrIGludmFsaWQgaG9zdF9wb3J0CiAKQEAgLTI0Nyw2ICsyODMsMjEgQEAKICAgICAgICAgaWYgcmVzcC5yZWFkKCk6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3QgZXhwZWN0IHJlc3BvbnNlIGZyb20gSEVBRCByZXF1ZXN0IikKIAorICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2hlYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBsaWJyYXJ5IGRvZXNuJ3QgYXR0ZW1wdCB0byByZWFkIGFueSBkYXRhCisgICAgICAgICMgZnJvbSBhIEhFQUQgcmVxdWVzdC4gIChUaWNrbGVzIFNGIGJ1ZyAjNjIyMDQyLikKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoCisgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTQ0MzJcclxuJworICAgICAgICAgICAgJ1xyXG4nLAorICAgICAgICAgICAgTm9FT0ZTdHJpbmdJTykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIGIgPSBieXRlYXJyYXkoNSkKKyAgICAgICAgaWYgcmVzcC5yZWFkaW50byhiKSAhPSAwOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWQgbm90IGV4cGVjdCByZXNwb25zZSBmcm9tIEhFQUQgcmVxdWVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInXHgwMCcqNSkKKwogICAgIGRlZiB0ZXN0X3NlbmRfZmlsZShzZWxmKToKICAgICAgICAgZXhwZWN0ZWQgPSAoYidHRVQgL2ZvbyBIVFRQLzEuMVxyXG5Ib3N0OiBleGFtcGxlLmNvbVxyXG4nCiAgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG5Db250ZW50LUxlbmd0aDonKQpAQCAtMzAyLDE1ICszNTMsMjggQEAKICAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJwogICAgICAgICAgICAgJ2FcclxuJwogICAgICAgICAgICAgJ2hlbGxvIHdvcmxcclxuJwotICAgICAgICAgICAgJzFcclxuJwotICAgICAgICAgICAgJ2RcclxuJworICAgICAgICAgICAgJzNcclxuJworICAgICAgICAgICAgJ2QhIFxyXG4nCisgICAgICAgICAgICAnOFxyXG4nCisgICAgICAgICAgICAnYW5kIG5vdyBcclxuJworICAgICAgICAgICAgJzIyXHJcbicKKyAgICAgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKICAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGInaGVsbG8gd29ybGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKICAgICAgICAgcmVzcC5jbG9zZSgpCiAKKyAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKICAgICAgICAgZm9yIHggaW4gKCcnLCAnZm9vXHJcbicpOgogICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIHgpCiAgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCkBAIC0zMTgsOSArMzgyLDY0IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzcC5yZWFkKCkKICAgICAgICAgICAgIGV4Y2VwdCBjbGllbnQuSW5jb21wbGV0ZVJlYWQgYXMgaToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgYidoZWxsbyB3b3JsZCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCdJbmNvbXBsZXRlUmVhZCgxMSBieXRlcyByZWFkKScpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksJ0luY29tcGxldGVSZWFkKDExIGJ5dGVzIHJlYWQpJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICdJbmNvbXBsZXRlUmVhZCglZCBieXRlcyByZWFkKScgJSBsZW4oZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0luY29tcGxldGVSZWFkIGV4cGVjdGVkJykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkKHNlbGYpOgorICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAorICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgICAgICdhXHJcbicKKyAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAgICAgICAgICczXHJcbicKKyAgICAgICAgICAgICdkISBcclxuJworICAgICAgICAgICAgJzhcclxuJworICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKKyAgICAgICAgICAgICcyMlxyXG4nCisgICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCisgICAgICAgIG5leHBlY3RlZCA9IGxlbihleHBlY3RlZCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgxMjgpCisKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6bmV4cGVjdGVkXSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgbmV4cGVjdGVkKQorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcworICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6CisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgICAgIGkgPSByZXNwLnJlYWRpbnRvKG1bMDpuXSkKKyAgICAgICAgICAgIGkgKz0gcmVzcC5yZWFkaW50byhtW2k6biArIGldKQorICAgICAgICAgICAgaSArPSByZXNwLnJlYWRpbnRvKG1baTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuZXhwZWN0ZWRdLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgbmV4cGVjdGVkKQorICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICAgICAgZm9yIHggaW4gKCcnLCAnZm9vXHJcbicpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIHgpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICAgICAgZXhjZXB0IGNsaWVudC5JbmNvbXBsZXRlUmVhZCBhcyBpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaS5wYXJ0aWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tZXNzYWdlID0gJ0luY29tcGxldGVSZWFkKCVkIGJ5dGVzIHJlYWQpJyAlIGxlbihleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnSW5jb21wbGV0ZVJlYWQgZXhwZWN0ZWQnKQogICAgICAgICAgICAgZmluYWxseToKQEAgLTM0Myw2ICs0NjIsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYXNvbiwgJ09LJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKIAorICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2NodW5rZWRfaGVhZChzZWxmKToKKyAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKKyAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICAgICAnYVxyXG4nCisgICAgICAgICAgICAnaGVsbG8gd29ybGRcclxuJworICAgICAgICAgICAgJzFcclxuJworICAgICAgICAgICAgJ2RcclxuJworICAgICAgICApCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInXHgwMCcqNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhc29uLCAnT0snKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQorCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfY29udGVudF9sZW5ndGgoc2VsZik6CiAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KAogICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogLTFcclxuXHJcbkhlbGxvXHJcbicpCkBAIC01NTgsOCArNjk3LDcgQEAKICAgICBkZWYgdGVzdF9sb2NhbF9nb29kX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICAjIFRoZSAodmFsaWQpIGNlcnQgdmFsaWRhdGVzIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgotICAgICAgICBzZXJ2ZXIgPSBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBDRVJUX2xvY2FsaG9zdCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2xvY2FsaG9zdCkKICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRfbG9jYWxob3N0KQpAQCAtNTY3LDEyICs3MDUsMTIgQEAKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCA0MDQpCisgICAgICAgIGRlbCBzZXJ2ZXIKIAogICAgIGRlZiB0ZXN0X2xvY2FsX2JhZF9ob3N0bmFtZShzZWxmKToKICAgICAgICAgIyBUaGUgKHZhbGlkKSBjZXJ0IGRvZXNuJ3QgdmFsaWRhdGUgdGhlIEhUVFAgaG9zdG5hbWUKICAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCi0gICAgICAgIHNlcnZlciA9IG1ha2VfaHR0cHNfc2VydmVyKHNlbGYsIENFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLm1ha2Vfc2VydmVyKENFUlRfZmFrZWhvc3RuYW1lKQogICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVF9mYWtlaG9zdG5hbWUpCkBAIC01OTAsNiArNzI4LDcgQEAKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCA0MDQpCisgICAgICAgIGRlbCBzZXJ2ZXIKIAogICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyksCiAgICAgICAgICAgICAgICAgICAgICAnaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uIG5vdCBhdmFpbGFibGUnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKaW5kZXggZDllNDA2My4uNzUxMzNjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CkBAIC00NzEsNiArNDcxLDIzIEBACiAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MTcpCiAgICAgICAgIHJldHVybiBGYWxzZQogCisKK2NsYXNzIEF1ZGl0YWJsZUJ5dGVzSU86CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZGF0YXMgPSBbXQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGFzLmFwcGVuZChkYXRhKQorCisgICAgZGVmIGdldERhdGEoc2VsZik6CisgICAgICAgIHJldHVybiBiJycuam9pbihzZWxmLmRhdGFzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bVdyaXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGFzKQorCisKIGNsYXNzIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgQmFzZUhUVFBTZXJ2ZXIuCiAKQEAgLTUzNywyNyArNTU0LDQ5IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X2dldF9jYWxsZWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFstMV0sIGInPGh0bWw+PGJvZHk+RGF0YTwvYm9keT48L2h0bWw+XHJcbicpCiAKLSAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nKHNlbGYpOgotCi0gICAgICAgIGRlZiBfcmVhZEFuZFJlc2VlayhmKToKLSAgICAgICAgICAgIHBvcyA9IGYudGVsbCgpCi0gICAgICAgICAgICBmLnNlZWsoMCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5zZWVrKHBvcykKLSAgICAgICAgICAgIHJldHVybiBkYXRhCisgICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZ19vZl9zZW5kX2Vycm9yKHNlbGYpOgogCiAgICAgICAgIGlucHV0ID0gQnl0ZXNJTyhiJ0dFVCAvIEhUVFAvMS4xXHJcblxyXG4nKQotICAgICAgICBvdXRwdXQgPSBCeXRlc0lPKCkKLSAgICAgICAgc2VsZi5oYW5kbGVyLnJmaWxlID0gaW5wdXQKLSAgICAgICAgc2VsZi5oYW5kbGVyLndmaWxlID0gb3V0cHV0Ci0gICAgICAgIHNlbGYuaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIGhhbmRsZXIucmVxdWVzdGxpbmUgPSAnJworICAgICAgICBoYW5kbGVyLmNvbW1hbmQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmRfaGVhZGVyKCdGb28nLCAnZm9vJykKLSAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmRfaGVhZGVyKCdiYXInLCAnYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfcmVhZEFuZFJlc2VlayhvdXRwdXQpLCBiJycpCi0gICAgICAgIHNlbGYuaGFuZGxlci5lbmRfaGVhZGVycygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3JlYWRBbmRSZXNlZWsob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZvbzogZm9vXHJcbmJhcjogYmFyXHJcblxyXG4nKQorICAgICAgICBoYW5kbGVyLnNlbmRfZXJyb3IoNDE4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDIpCisKKyAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nX29mX3NlbmRfcmVzcG9uc2Vfb25seShzZWxmKToKKworICAgICAgICBpbnB1dCA9IEJ5dGVzSU8oYidHRVQgLyBIVFRQLzEuMVxyXG5cclxuJykKKyAgICAgICAgb3V0cHV0ID0gQXVkaXRhYmxlQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZXIgPSBTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoKQorICAgICAgICBoYW5kbGVyLnJmaWxlID0gaW5wdXQKKyAgICAgICAgaGFuZGxlci53ZmlsZSA9IG91dHB1dAorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKworICAgICAgICBoYW5kbGVyLnNlbmRfcmVzcG9uc2Vfb25seSg0MTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMCkKKyAgICAgICAgaGFuZGxlci5lbmRfaGVhZGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmdfb2Zfc2VuZF9oZWFkZXIoc2VsZik6CisKKyAgICAgICAgaW5wdXQgPSBCeXRlc0lPKGInR0VUIC8gSFRUUC8xLjFcclxuXHJcbicpCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisKKyAgICAgICAgaGFuZGxlci5zZW5kX2hlYWRlcignRm9vJywgJ2ZvbycpCisgICAgICAgIGhhbmRsZXIuc2VuZF9oZWFkZXIoJ2JhcicsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDApCisgICAgICAgIGhhbmRsZXIuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXREYXRhKCksIGInRm9vOiBmb29cclxuYmFyOiBiYXJcclxuXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMSkKIAogICAgIGRlZiB0ZXN0X2hlYWRlcl91bmJ1ZmZlcmVkX3doZW5fY29udGludWUoc2VsZik6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCA0M2VlN2RmLi4wNjc3NmRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC0xMSw5ICsxMSw5IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IGNhbGVuZGFyCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHoKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHosIHJ1bl93aXRoX2xvY2FsZQogaW1wb3J0IHVuaXR0ZXN0Ci0KK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCiB0cnk6CiAgICAgaW1wb3J0IHNzbAogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDMsMTQgKzQzLDMwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCiAgICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKIAotICAgIGRlZiB0ZXN0X3RoYXRfVGltZTJJbnRlcm5hbGRhdGVfcmV0dXJuc19hX3Jlc3VsdChzZWxmKToKLSAgICAgICAgIyBXZSBjYW4gY2hlY2sgb25seSB0aGF0IGl0IHN1Y2Nlc3NmdWxseSBwcm9kdWNlcyBhIHJlc3VsdCwKLSAgICAgICAgIyBub3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSByZXN1bHQgaXRzZWxmLCBzaW5jZSB0aGUgcmVzdWx0Ci0gICAgICAgICMgZGVwZW5kcyBvbiB0aGUgdGltZXpvbmUgdGhlIG1hY2hpbmUgaXMgaW4uCi0gICAgICAgIHRpbWV2YWx1ZXMgPSBbMjAwMDAwMDAwMCwgMjAwMDAwMDAwMC4wLCB0aW1lLmxvY2FsdGltZSgyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIiddCiAKLSAgICAgICAgZm9yIHQgaW4gdGltZXZhbHVlczoKKworICAgIGRlZiB0aW1ldmFsdWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgLTEpLAorICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIDEpLAorICAgICAgICAgICAgICAgIGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMjAwMDAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgwLCAyKjYwKjYwKSkpLAorICAgICAgICAgICAgICAgICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJ10KKworICAgIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICdkZV9ERScsICdmcl9GUicpCisgICAgQHJ1bl93aXRoX3R6KCdTVEQtMURTVCcpCisgICAgZGVmIHRlc3RfVGltZTJJbnRlcm5hbGRhdGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInCisKKyAgICAgICAgZm9yIHQgaW4gc2VsZi50aW1ldmFsdWVzKCk6CisgICAgICAgICAgICBpbnRlcm5hbCA9IGltYXBsaWIuVGltZTJJbnRlcm5hbGRhdGUodCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50ZXJuYWwsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfdGhhdF9UaW1lMkludGVybmFsZGF0ZV9yZXR1cm5zX2FfcmVzdWx0KHNlbGYpOgorICAgICAgICAjIFdpdGhvdXQgdHpzZXQsIHdlIGNhbiBjaGVjayBvbmx5IHRoYXQgaXQgc3VjY2Vzc2Z1bGx5CisgICAgICAgICMgcHJvZHVjZXMgYSByZXN1bHQsIG5vdCB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCBpdHNlbGYsCisgICAgICAgICMgc2luY2UgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSB0aW1lem9uZSB0aGUgbWFjaGluZSBpcyBpbi4KKyAgICAgICAgZm9yIHQgaW4gc2VsZi50aW1ldmFsdWVzKCk6CiAgICAgICAgICAgICBpbWFwbGliLlRpbWUySW50ZXJuYWxkYXRlKHQpCiAKIApAQCAtMjY1LDExICsyODEsNTggQEAKICAgICBwb3J0ID0gOTkzCiAgICAgaW1hcF9jbGFzcyA9IElNQVA0X1NTTAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjcmVhdGVfc3NsX2NvbnRleHQoc2VsZik6CisgICAgICAgIHNzbF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgc3NsX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICByZXR1cm4gc3NsX2NvbnRleHQKKworICAgIGRlZiBjaGVja19sb2dpbmNhcGEoc2VsZiwgc2VydmVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGNhcCBpbiBzZXJ2ZXIuY2FwYWJpbGl0aWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXAsIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPR0lORElTQUJMRUQnLCBzZXJ2ZXIuY2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignQVVUSD1QTEFJTicsIHNlcnZlci5jYXBhYmlsaXRpZXMpCisgICAgICAgICAgICBycyA9IHNlcnZlci5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyc1swXSwgJ09LJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlcnZlci5sb2dvdXQoKQorCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhKHNlbGYpOgotICAgICAgICBmb3IgY2FwIGluIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXAsIHN0cikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignTE9HSU5ESVNBQkxFRCcsIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllcykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQVVUSD1QTEFJTicsIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllcykKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X2NlcnRmaWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X3NzbF9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9sb2dvdXQoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQorICAgICAgICAgICAgcnMgPSBfc2VydmVyLmxvZ291dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJzWzBdLCAnQllFJykKKworICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2NlcnRmaWxlX2V4Y2x1c2l2ZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKworICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2tleWZpbGVfZXhjbHVzaXZlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCA1NTFhZDFiLi42NWM5ZjI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiAKIGNsYXNzIExvY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU4LDYgKzU5LDEwIEBACiAgICAgICAgICAgICB3aXRoIGltcC5maW5kX21vZHVsZSgnbW9kdWxlXycgKyBtb2QsIHNlbGYudGVzdF9wYXRoKVswXSBhcyBmZDoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZkLmVuY29kaW5nLCBlbmNvZGluZykKIAorICAgICAgICBwYXRoID0gW29zLnBhdGguZGlybmFtZShfX2ZpbGVfXyldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgaW1wLmZpbmRfbW9kdWxlKCdiYWRzeW50YXhfcGVwMzEyMCcsIHBhdGgpCisKICAgICBkZWYgdGVzdF9pc3N1ZTEyNjcoc2VsZik6CiAgICAgICAgIGZvciBtb2QsIGVuY29kaW5nLCBfIGluIHNlbGYudGVzdF9zdHJpbmdzOgogICAgICAgICAgICAgZnAsIGZpbGVuYW1lLCBpbmZvICA9IGltcC5maW5kX21vZHVsZSgnbW9kdWxlXycgKyBtb2QsCkBAIC0xNTAsMTggKzE1NSwyNCBAQAogICAgICAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZSh0ZW1wX21vZF9uYW1lLCBmaWxlLCBmaWxlbmFtZSwgaW5mbykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5hLCAxKQogCi0gICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9zb3VyY2UodGVtcF9tb2RfbmFtZSwgdGVtcF9tb2RfbmFtZSArICcucHknKQorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9zb3VyY2UodGVtcF9tb2RfbmFtZSwgdGVtcF9tb2RfbmFtZSArICcucHknKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuYSwgMSkKIAotICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfY29tcGlsZWQoCi0gICAgICAgICAgICAgICAgdGVtcF9tb2RfbmFtZSwgaW1wLmNhY2hlX2Zyb21fc291cmNlKHRlbXBfbW9kX25hbWUgKyAnLnB5JykpCisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX2NvbXBpbGVkKAorICAgICAgICAgICAgICAgICAgICB0ZW1wX21vZF9uYW1lLCBpbXAuY2FjaGVfZnJvbV9zb3VyY2UodGVtcF9tb2RfbmFtZSArICcucHknKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmEsIDEpCiAKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0ZXN0X3BhY2thZ2VfbmFtZSk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIodGVzdF9wYWNrYWdlX25hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oaW5pdF9maWxlX25hbWUsICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCdiID0gMlxuJykKLSAgICAgICAgICAgIHBhY2thZ2UgPSBpbXAubG9hZF9wYWNrYWdlKHRlc3RfcGFja2FnZV9uYW1lLCB0ZXN0X3BhY2thZ2VfbmFtZSkKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgcGFja2FnZSA9IGltcC5sb2FkX3BhY2thZ2UodGVzdF9wYWNrYWdlX25hbWUsIHRlc3RfcGFja2FnZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrYWdlLmIsIDIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KQEAgLTE3NSw2ICsxODYsNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSwgImJhZHN5bnRheF9wZXAzMTIwIiwgW3BhdGhdKQogCisgICAgZGVmIHRlc3RfbG9hZF9mcm9tX3NvdXJjZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgaW1wIG1vZHVsZSBjYW4gY29ycmVjdGx5IGxvYWQgYW5kIGZpbmQgLnB5IGZpbGVzCisgICAgICAgICMgWFhYIChuY29naGxhbik6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHN1cHBvcnQuQ2xlYW5JbXBvcnQKKyAgICAgICAgIyBoZXJlLCBidXQgdGhhdCBicmVha3MgYmVjYXVzZSB0aGUgb3MgbW9kdWxlIHJlZ2lzdGVycyBzb21lCisgICAgICAgICMgaGFuZGxlcnMgaW4gY29weV9yZWcgb24gaW1wb3J0LiBTaW5jZSBDbGVhbkltcG9ydCBkb2Vzbid0CisgICAgICAgICMgcmV2ZXJ0IHRoYXQgcmVnaXN0cmF0aW9uLCB0aGUgbW9kdWxlIGlzIGxlZnQgaW4gYSBicm9rZW4KKyAgICAgICAgIyBzdGF0ZSBhZnRlciByZXZlcnNpb24uIFJlaW5pdGlhbGlzaW5nIHRoZSBtb2R1bGUgY29udGVudHMKKyAgICAgICAgIyBhbmQganVzdCByZXZlcnRpbmcgb3MuZW52aXJvbiB0byBpdHMgcHJldmlvdXMgc3RhdGUgaXMgYW4gT0sKKyAgICAgICAgIyB3b3JrYXJvdW5kCisgICAgICAgIG9yaWdfcGF0aCA9IG9zLnBhdGgKKyAgICAgICAgb3JpZ19nZXRlbnYgPSBvcy5nZXRlbnYKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKToKKyAgICAgICAgICAgIHggPSBpbXAuZmluZF9tb2R1bGUoIm9zIikKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh4WzBdLmNsb3NlKQorICAgICAgICAgICAgbmV3X29zID0gaW1wLmxvYWRfbW9kdWxlKCJvcyIsICp4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcywgbmV3X29zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX3BhdGgsIG5ld19vcy5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChvcmlnX2dldGVudiwgbmV3X29zLmdldGVudikKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2lzc3VlMTU4MjhfbG9hZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICAjIElzc3VlIDE1ODI4IHBpY2tlZCB1cCB0aGF0IHRoZSBhZGFwdGVyIGJldHdlZW4gdGhlIG9sZCBpbXAgQVBJCisgICAgICAgICMgYW5kIGltcG9ydGxpYiBjb3VsZG4ndCBoYW5kbGUgQyBleHRlbnNpb25zCisgICAgICAgIGV4YW1wbGUgPSAiX2hlYXBxIgorICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKGV4YW1wbGUpCisgICAgICAgIGZpbGVfID0geFswXQorICAgICAgICBpZiBmaWxlXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmaWxlXy5jbG9zZSkKKyAgICAgICAgbW9kID0gaW1wLmxvYWRfbW9kdWxlKGV4YW1wbGUsICp4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgZXhhbXBsZSkKKworICAgIGRlZiB0ZXN0X2xvYWRfZHluYW1pY19JbXBvcnRFcnJvcl9wYXRoKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNTU5NTQ5IGFkZGVkIGBuYW1lYCBhbmQgYHBhdGhgIGF0dHJpYnV0ZXMgdG8gSW1wb3J0RXJyb3IKKyAgICAgICAgIyBpbiBvcmRlciB0byBwcm92aWRlIGJldHRlciBkZXRhaWwuIElzc3VlICMxMDg1NCBpbXBsZW1lbnRlZCB0aG9zZQorICAgICAgICAjIGF0dHJpYnV0ZXMgb24gaW1wb3J0IGZhaWx1cmVzIG9mIGV4dGVuc2lvbnMgb24gV2luZG93cy4KKyAgICAgICAgcGF0aCA9ICdib2d1cyBmaWxlIHBhdGgnCisgICAgICAgIG5hbWUgPSAnZXh0ZW5zaW9uJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBlcnI6CisgICAgICAgICAgICBpbXAubG9hZF9keW5hbWljKG5hbWUsIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgZXJyLmV4Y2VwdGlvbi5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGVyci5leGNlcHRpb24ubmFtZSkKKwogCiBjbGFzcyBSZWxvYWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwOSw3MiArMjYyLDgzIEBACiAKICAgICB0YWcgPSBpbXAuZ2V0X3RhZygpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIG5vdCBiZSBOb25lJykKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3CiAgICAgICAgICMgZGVmaW5lZCAucHljIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXovcXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L19fcHljYWNoZV9fL3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9ub19jYWNoZV90YWcoc2VsZik6CisgICAgICAgICMgTm9uIGNhY2hlIHRhZyBtZWFucyBOb3RJbXBsZW1lbnRlZEVycm9yLgorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ3doYXRldmVyLnB5JykKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2RvdChzZWxmKToKKyAgICAgICAgIyBEaXJlY3Rvcnkgd2l0aCBhIGRvdCwgZmlsZW5hbWUgd2l0aG91dCBkb3QuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnZmlsZScpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXplZChzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3CiAgICAgICAgICMgZGVmaW5lZCAucHlvIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXovcXV4LnB5JywgRmFsc2UpLAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX2N3ZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIFRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcC5qb2luKCgnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkpKQorICAgICAgICBwYXRoID0gJ2Zvby5weScKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKICAgICAgICAgIyB2YWx1ZS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgW10pLAotICAgICAgICAgICAgJy9mb28vYmFyL19fcHljYWNoZV9fL2Jhei57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIFsxN10pLAotICAgICAgICAgICAgJy9mb28vYmFyL19fcHljYWNoZV9fL2Jhei57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6LnB5JykKKyAgICAgICAgcGFydGlhbF9leHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmF6Lnt9LnB5Jy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbXSksIHBhcnRpYWxfZXhwZWN0ICsgJ28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbMTddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX2V4cGVjdCArICdjJykKICAgICAgICAgIyBIb3dldmVyIGlmIHRoZSBib29sLWlzaG5lc3MgY2FuJ3QgYmUgZGV0ZXJtaW5lZCwgdGhlIGV4Y2VwdGlvbgogICAgICAgICAjIHByb3BhZ2F0ZXMuCiAgICAgICAgIGNsYXNzIEJlYXJpc2g6CiAgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6IHJhaXNlIFJ1bnRpbWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSwgJy9mb28vYmFyL2Jhei5weScsIEJlYXJpc2goKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG9zLmFsdHNlcCBpcyBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZXJlIG9zLmFsdHNlcCBpcyBkZWZpbmVkJykKLSAgICBkZWYgdGVzdF9hbHRzZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0Ny4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6XFxxdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCi0gICAgZGVmIHRlc3RfYWx0c2VwX2FuZF9zZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0NyB3aGVyZSBhbHRzZXAgaXMgcmlnaHQgb2Ygc2VwLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyL2JhelxccXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnXFxmb29cXGJhci9iYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zZXAgPT0gJ1xcJyBhbmQgb3MuYWx0c2VwID09ICcvJywKICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCiAgICAgZGVmIHRlc3Rfc2VwX2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgogICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgc2VwIGlzIHJpZ2h0IG9mIGFsdHNlcC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6L3F1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlKHNlbGYpOgogICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgUEVQIDMxNDcgZGVmaW5lZCAucHljIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0bwogICAgICAgICAjIGl0cyBzb3VyY2UuICBUaGlzIHRlc3RzIHRoZSBnb29kIHBhdGguCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLnNvdXJjZV9mcm9tX2NhY2hlKAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovcXV4LnB5JykKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub19jYWNoZV90YWcoc2VsZik6CisgICAgICAgICMgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lLCByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdibGFoJywgJ19fcHljYWNoZV9fJywgJ3doYXRldmVyLnB5YycpCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgICAgIGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfYmFkX3BhdGgoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgcGF0aCB0byBhIHB5YyBmaWxlIGlzIG5vdCBpbiBQRVAgMzE0NyBmb3JtYXQsIGEgVmFsdWVFcnJvcgpAQCAtMzA1LDYgKzM2OSwxMiBAQAogICAgICAgICAgICAgJy9mb28vYmFyL2Zvby5jcHl0aG9uLTMyLmZvby5weWMnKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9fX2ZpbGVfXyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInBlcDMxNDcgbW9kdWxlIGFscmVhZHkgZXhpc3RzOiAlciIgJSAobSwpKQogICAgICAgICAjIFRlc3QgdGhhdCBhIHBhY2thZ2UncyBfX2ZpbGVfXyBwb2ludHMgdG8gdGhlIHJpZ2h0IHNvdXJjZSBkaXJlY3RvcnkuCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKQEAgLTMxNCwxNCArMzg0LDE2IEBACiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCiAgICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5IGZpbGUuCi0gICAgICAgIHdpdGggb3BlbigncGVwMzE0Ny9fX2luaXRfXy5weScsICd3Jyk6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoJ3BlcDMxNDcvX19pbml0X18ucHknKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBleHBlY3RlZF9fX2ZpbGVfXyA9IG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCiAgICAgICAgICMgRW5zdXJlIHdlIGxvYWQgdGhlIHB5YyBmaWxlLgotICAgICAgICBzdXBwb3J0LmZvcmdldCgncGVwMzE0NycpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCdwZXAzMTQ3JykKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2VwLmpvaW4oKCcuJywgJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCdwZXAzMTQ3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCiAKIAogY2xhc3MgTnVsbEltcG9ydGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQppbmRleCBiMTBmMzUwLi5iMGU1YTk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQpAQCAtMSw3ICsxLDggQEAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcAotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdXRpbCBhcyBpbXBvcnRsaWJfdXRpbAorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliLmltcG9ydF8gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3V0aWwKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQpAQCAtMTIsMzkgKzEzLDUwIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IGVycm5vCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgY29udGV4dGxpYgogCitpbXBvcnQgdGVzdC5zdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAogICAgIEVudmlyb25tZW50VmFyR3VhcmQsIFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGZvcmdldCwgaXNfanl0aG9uLAogICAgIG1ha2VfbGVnYWN5X3B5Yywgcm10cmVlLCBydW5fdW5pdHRlc3QsIHN3YXBfYXR0ciwgc3dhcF9pdGVtLCB0ZW1wX3VtYXNrLAotICAgIHVubGluaywgdW5sb2FkKQorICAgIHVubGluaywgdW5sb2FkLCBjcmVhdGVfZW1wdHlfZmlsZSwgY3B5dGhvbl9vbmx5KQogZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIAotZGVmIF9maWxlcyhuYW1lKToKLSAgICByZXR1cm4gKG5hbWUgKyBvcy5leHRzZXAgKyAicHkiLAotICAgICAgICAgICAgbmFtZSArIG9zLmV4dHNlcCArICJweWMiLAotICAgICAgICAgICAgbmFtZSArIG9zLmV4dHNlcCArICJweW8iLAotICAgICAgICAgICAgbmFtZSArIG9zLmV4dHNlcCArICJweXciLAotICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKQotCi1kZWYgY2htb2RfZmlsZXMobmFtZSk6Ci0gICAgZm9yIGYgaW4gX2ZpbGVzKG5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5jaG1vZChmLCAwbzYwMCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgaWYgZXhjLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICByYWlzZQotCiBkZWYgcmVtb3ZlX2ZpbGVzKG5hbWUpOgotICAgIGZvciBmIGluIF9maWxlcyhuYW1lKToKKyAgICBmb3IgZiBpbiAobmFtZSArICIucHkiLAorICAgICAgICAgICAgICBuYW1lICsgIi5weWMiLAorICAgICAgICAgICAgICBuYW1lICsgIi5weW8iLAorICAgICAgICAgICAgICBuYW1lICsgIi5weXciLAorICAgICAgICAgICAgICBuYW1lICsgIiRweS5jbGFzcyIpOgogICAgICAgICB1bmxpbmsoZikKICAgICBybXRyZWUoJ19fcHljYWNoZV9fJykKIAogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9yZWFkeV90b19pbXBvcnQobmFtZT1Ob25lLCBzb3VyY2U9IiIpOgorICAgICMgc2V0cyB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIHJlbW92ZXMgaXQKKyAgICAjIGNyZWF0ZXMgdGhlIG1vZHVsZSBmaWxlCisgICAgIyB0ZW1wb3JhcmlseSBjbGVhcnMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIChpZiBhbnkpCisgICAgbmFtZSA9IG5hbWUgb3IgInNwYW0iCisgICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKKyAgICAgICAgcGF0aCA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQodGVtcGRpciwgbmFtZSwgc291cmNlKQorICAgICAgICBvbGRfbW9kdWxlID0gc3lzLm1vZHVsZXMucG9wKG5hbWUsIE5vbmUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCB0ZW1wZGlyKQorICAgICAgICAgICAgeWllbGQgbmFtZSwgcGF0aAorICAgICAgICAgICAgc3lzLnBhdGgucmVtb3ZlKHRlbXBkaXIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBvbGRfbW9kdWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gb2xkX21vZHVsZQorCisKIGNsYXNzIEltcG9ydFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5sb2FkKFRFU1RGTikKQEAgLTgyLDYgKzk0LDcgQEAKIAogICAgICAgICAgICAgaWYgVEVTVEZOIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tURVNURk5dCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCkBAIC0xMDcsOTAgKzEyMCw2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCi0gICAgZGVmIHRlc3RfZXhlY3V0ZV9iaXRfbm90X2NvcGllZChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSA2MDcwOiB1bmRlciBwb3NpeCAucHljIGZpbGVzIGdvdCB0aGVpciBleGVjdXRlIGJpdCBzZXQgaWYKLSAgICAgICAgIyB0aGUgLnB5IGZpbGUgaGFkIHRoZSBleGVjdXRlIGJpdCBzZXQsIGJ1dCB0aGV5IGFyZW4ndCBleGVjdXRhYmxlLgotICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8wMjIpOgotICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmbmFtZSA9IFRFU1RGTiArIG9zLmV4dHNlcCArICJweSIKLSAgICAgICAgICAgICAgICBvcGVuKGZuYW1lLCAndycpLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBvcy5jaG1vZChmbmFtZSwgKHN0YXQuU19JUlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVhVU1IgfCBzdGF0LlNfSVhHUlAgfCBzdGF0LlNfSVhPVEgpKQotICAgICAgICAgICAgICAgIGZuID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGZuYW1lKQotICAgICAgICAgICAgICAgIHVubGluayhmbikKLSAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9faW1wb3J0X18gZGlkIG5vdCByZXN1bHQgaW4gY3JlYXRpb24gb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKLSAgICAgICAgICAgICAgICBzID0gb3Muc3RhdChmbikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JTU9ERShzLnN0X21vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lSR1JQIHwgc3RhdC5TX0lST1RIKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgICAgICAgICByZW1vdmVfZmlsZXMoVEVTVEZOKQotICAgICAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0KLSAgICBkZWYgdGVzdF9yZXdyaXRlX3B5Y193aXRoX3JlYWRfb25seV9zb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgNjA3NDogYSBsb25nIHRpbWUgYWdvIG9uIHBvc2l4LCBhbmQgbW9yZSByZWNlbnRseSBvbiBXaW5kb3dzLAotICAgICAgICAjIGEgcmVhZCBvbmx5IHNvdXJjZSBmaWxlIHJlc3VsdGVkIGluIGEgcmVhZCBvbmx5IHB5YyBmaWxlLCB3aGljaAotICAgICAgICAjIGxlZCB0byBwcm9ibGVtcyB3aXRoIHVwZGF0aW5nIGl0IGxhdGVyCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgIGZuYW1lID0gVEVTVEZOICsgb3MuZXh0c2VwICsgInB5IgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFdyaXRlIGEgUHl0aG9uIGZpbGUsIG1ha2UgaXQgcmVhZC1vbmx5IGFuZCBpbXBvcnQgaXQKLSAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAnb3JpZ2luYWwnXG4iKQotICAgICAgICAgICAgIyBUd2VhayB0aGUgbXRpbWUgb2YgdGhlIHNvdXJjZSB0byBlbnN1cmUgcHljIGdldHMgdXBkYXRlZCBsYXRlcgotICAgICAgICAgICAgcyA9IG9zLnN0YXQoZm5hbWUpCi0gICAgICAgICAgICBvcy51dGltZShmbmFtZSwgKHMuc3RfYXRpbWUsIHMuc3RfbXRpbWUtMTAwMDAwMDAwKSkKLSAgICAgICAgICAgIG9zLmNobW9kKGZuYW1lLCAwbzQwMCkKLSAgICAgICAgICAgIG0xID0gX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLngsICdvcmlnaW5hbCcpCi0gICAgICAgICAgICAjIENoYW5nZSB0aGUgZmlsZSBhbmQgdGhlbiByZWltcG9ydCBpdAotICAgICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNjAwKQotICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgieCA9ICdyZXdyaXR0ZW4nXG4iKQotICAgICAgICAgICAgdW5sb2FkKFRFU1RGTikKLSAgICAgICAgICAgIG0yID0gX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLngsICdyZXdyaXR0ZW4nKQotICAgICAgICAgICAgIyBOb3cgZGVsZXRlIHRoZSBzb3VyY2UgZmlsZSBhbmQgY2hlY2sgdGhlIHB5YyB3YXMgcmV3cml0dGVuCi0gICAgICAgICAgICB1bmxpbmsoZm5hbWUpCi0gICAgICAgICAgICB1bmxvYWQoVEVTVEZOKQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIGJ5dGVjb2RlX25hbWUgPSBmbmFtZSArICJjIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBieXRlY29kZV9uYW1lID0gZm5hbWUgKyAibyIKLSAgICAgICAgICAgIG9zLnJlbmFtZShpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZm5hbWUpLCBieXRlY29kZV9uYW1lKQotICAgICAgICAgICAgbTMgPSBfX2ltcG9ydF9fKFRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTMueCwgJ3Jld3JpdHRlbicpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjaG1vZF9maWxlcyhURVNURk4pCi0gICAgICAgICAgICByZW1vdmVfZmlsZXMoVEVTVEZOKQotICAgICAgICAgICAgdW5sb2FkKFRFU1RGTikKLSAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQotCi0gICAgZGVmIHRlc3RfaW1wX21vZHVsZShzZWxmKToKLSAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgaW1wIG1vZHVsZSBjYW4gY29ycmVjdGx5IGxvYWQgYW5kIGZpbmQgLnB5IGZpbGVzCi0gICAgICAgICMgWFhYIChuY29naGxhbik6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHN1cHBvcnQuQ2xlYW5JbXBvcnQKLSAgICAgICAgIyBoZXJlLCBidXQgdGhhdCBicmVha3MgYmVjYXVzZSB0aGUgb3MgbW9kdWxlIHJlZ2lzdGVycyBzb21lCi0gICAgICAgICMgaGFuZGxlcnMgaW4gY29weV9yZWcgb24gaW1wb3J0LiBTaW5jZSBDbGVhbkltcG9ydCBkb2Vzbid0Ci0gICAgICAgICMgcmV2ZXJ0IHRoYXQgcmVnaXN0cmF0aW9uLCB0aGUgbW9kdWxlIGlzIGxlZnQgaW4gYSBicm9rZW4KLSAgICAgICAgIyBzdGF0ZSBhZnRlciByZXZlcnNpb24uIFJlaW5pdGlhbGlzaW5nIHRoZSBtb2R1bGUgY29udGVudHMKLSAgICAgICAgIyBhbmQganVzdCByZXZlcnRpbmcgb3MuZW52aXJvbiB0byBpdHMgcHJldmlvdXMgc3RhdGUgaXMgYW4gT0sKLSAgICAgICAgIyB3b3JrYXJvdW5kCi0gICAgICAgIG9yaWdfcGF0aCA9IG9zLnBhdGgKLSAgICAgICAgb3JpZ19nZXRlbnYgPSBvcy5nZXRlbnYKLSAgICAgICAgd2l0aCBFbnZpcm9ubWVudFZhckd1YXJkKCk6Ci0gICAgICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKCJvcyIpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoeFswXS5jbG9zZSkKLSAgICAgICAgICAgIG5ld19vcyA9IGltcC5sb2FkX21vZHVsZSgib3MiLCAqeCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MsIG5ld19vcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19wYXRoLCBuZXdfb3MucGF0aCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19nZXRlbnYsIG5ld19vcy5nZXRlbnYpCi0KICAgICBkZWYgdGVzdF9idWc3NzMyKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBURVNURk4gKyAnLnB5JwogICAgICAgICBvcy5ta2Rpcihzb3VyY2UpCkBAIC0yMjAsNiArMTQ5LDcgQEAKIAogICAgICAgICAjIE5lZWQgdG8gYmUgYWJsZSB0byBsb2FkIGZyb20gY3VycmVudCBkaXIuCiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCgnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMoZmlsZW5hbWUpCkBAIC0yMzksNiArMTY5LDcgQEAKICAgICAgICAgIyBOZXcgaW4gMi40LCB3ZSBzaG91bGRuJ3QgYmUgYWJsZSB0byBpbXBvcnQgdGhhdCBubyBtYXR0ZXIgaG93IG9mdGVuCiAgICAgICAgICMgd2UgdHJ5LgogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBpZiBURVNURk4gaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQogICAgICAgICB0cnk6CkBAIC0zMTIsNiArMjQzLDcgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShzb3VyY2UpCiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKHNvdXJjZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobW9kLl9fZmlsZV9fKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHQsICgnLnB5YycsICcucHlvJykpCkBAIC0zMzIsMTIgKzI2NCw2IEBACiAgICAgICAgIGltcG9ydCB0ZXN0LnN1cHBvcnQgYXMgeQogICAgICAgICBzZWxmLmFzc2VydElzKHksIHRlc3Quc3VwcG9ydCwgeS5fX25hbWVfXykKIAotICAgIGRlZiB0ZXN0X2ltcG9ydF9pbml0bGVzc19kaXJlY3Rvcnlfd2FybmluZyhzZWxmKToKLSAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIEltcG9ydFdhcm5pbmcpKToKLSAgICAgICAgICAgICMgSnVzdCBhIHJhbmRvbSBub24tcGFja2FnZSBkaXJlY3Rvcnkgd2UgYWx3YXlzIGV4cGVjdCB0byBiZQotICAgICAgICAgICAgIyBzb21ld2hlcmUgaW4gc3lzLnBhdGguLi4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBfX2ltcG9ydF9fLCAic2l0ZS1wYWNrYWdlcyIpCi0KICAgICBkZWYgdGVzdF9pbXBvcnRfYnlfZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoVEVTVEZOKQogICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtMzQ3LDggKzI3Myw2IEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdwYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8ge30nLmZvcm1hdChlbmNvZGluZykpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGM6CiAgICAgICAgICAgICBfX2ltcG9ydF9fKHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkltcG9ydCBieSBmaWxlbmFtZSBpcyBub3Qgc3VwcG9ydGVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYy5leGNlcHRpb24uYXJnc1swXSkKIAogICAgIGRlZiB0ZXN0X2ltcG9ydF9pbl9kZWxfZG9lc19ub3RfY3Jhc2goc2VsZik6CiAgICAgICAgICMgSXNzdWUgNDIzNgpAQCAtMzg1LDYgKzMwOSw5OCBAQAogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAgICAgICAgICAgICByZW1vdmVfZmlsZXMoVEVTVEZOKQogCisgICAgZGVmIHRlc3RfYm9ndXNfZnJvbWxpc3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9faW1wb3J0X18oJ2h0dHAnLCBmcm9tbGlzdD1bJ2JsYWgnXSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJmcm9tbGlzdCBtdXN0IGFsbG93IGJvZ3VzIG5hbWVzIikKKworCitjbGFzcyBGaWxlUGVybWlzc2lvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRlc3RzIGZvciBmaWxlIG1vZGUgb24gY2FjaGVkIC5weWMvLnB5byBmaWxlcworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKKyAgICBkZWYgdGVzdF9jcmVhdGlvbl9tb2RlKHNlbGYpOgorICAgICAgICBtYXNrID0gMG8wMjIKKyAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKG1hc2spLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSB1bWFzayBpcyByZXNwZWN0ZWQsIGFuZCB0aGUgZXhlY3V0YWJsZSBiaXRzCisgICAgICAgICMgYXJlbid0IHNldC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvY3Qoc3RhdC5TX0lNT0RFKHN0YXRfaW5mby5zdF9tb2RlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb2N0KDBvNjY2ICYgfm1hc2spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKKyAgICBkZWYgdGVzdF9jYWNoZWRfbW9kZV9pc3N1ZV8yMDUxKHNlbGYpOgorICAgICAgICAjIHBlcm1pc3Npb25zIG9mIC5weWMgc2hvdWxkIG1hdGNoIHRob3NlIG9mIC5weSwgcmVnYXJkbGVzcyBvZiBtYXNrCisgICAgICAgIG1vZGUgPSAwbzYwMAorICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8wMjIpLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLCBvY3QobW9kZSkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQorICAgIGRlZiB0ZXN0X2NhY2hlZF9yZWFkb25seShzZWxmKToKKyAgICAgICAgbW9kZSA9IDBvNDAwCisgICAgICAgIHdpdGggdGVtcF91bWFzaygwbzAyMiksIF9yZWFkeV90b19pbXBvcnQoKSBhcyAobmFtZSwgcGF0aCk6CisgICAgICAgICAgICBjYWNoZWRfcGF0aCA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoKQorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgbW9kZSkKKyAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBtb2RlIHwgMG8yMDAgIyBBY2NvdW50IGZvciBmaXggZm9yIGlzc3VlICM2MDc0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLCBvY3QoZXhwZWN0ZWQpKQorCisgICAgZGVmIHRlc3RfcHljX2Fsd2F5c193cml0YWJsZShzZWxmKToKKyAgICAgICAgIyBJbml0aWFsbHkgcmVhZC1vbmx5IC5weWMgZmlsZXMgb24gV2luZG93cyB1c2VkIHRvIGNhdXNlIHByb2JsZW1zCisgICAgICAgICMgd2l0aCBsYXRlciB1cGRhdGVzLCBzZWUgaXNzdWUgIzYwNzQgZm9yIGRldGFpbHMKKyAgICAgICAgd2l0aCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgIyBXcml0ZSBhIFB5dGhvbiBmaWxlLCBtYWtlIGl0IHJlYWQtb25seSBhbmQgaW1wb3J0IGl0CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAnb3JpZ2luYWwnXG4iKQorICAgICAgICAgICAgIyBUd2VhayB0aGUgbXRpbWUgb2YgdGhlIHNvdXJjZSB0byBlbnN1cmUgcHljIGdldHMgdXBkYXRlZCBsYXRlcgorICAgICAgICAgICAgcyA9IG9zLnN0YXQocGF0aCkKKyAgICAgICAgICAgIG9zLnV0aW1lKHBhdGgsIChzLnN0X2F0aW1lLCBzLnN0X210aW1lLTEwMDAwMDAwMCkpCisgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCAwbzQwMCkKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ29yaWdpbmFsJykKKyAgICAgICAgICAgICMgQ2hhbmdlIHRoZSBmaWxlIGFuZCB0aGVuIHJlaW1wb3J0IGl0CisgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCAwbzYwMCkKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSgieCA9ICdyZXdyaXR0ZW4nXG4iKQorICAgICAgICAgICAgdW5sb2FkKG5hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCAncmV3cml0dGVuJykKKyAgICAgICAgICAgICMgTm93IGRlbGV0ZSB0aGUgc291cmNlIGZpbGUgYW5kIGNoZWNrIHRoZSBweWMgd2FzIHJld3JpdHRlbgorICAgICAgICAgICAgdW5saW5rKHBhdGgpCisgICAgICAgICAgICB1bmxvYWQobmFtZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgICAgICBpZiBfX2RlYnVnX186CisgICAgICAgICAgICAgICAgYnl0ZWNvZGVfb25seSA9IHBhdGggKyAiYyIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnl0ZWNvZGVfb25seSA9IHBhdGggKyAibyIKKyAgICAgICAgICAgIG9zLnJlbmFtZShpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCksIGJ5dGVjb2RlX29ubHkpCisgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLngsICdyZXdyaXR0ZW4nKQorCiAKIGNsYXNzIFB5Y1Jld3JpdGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRlc3QgdGhhdCB0aGUgYGNvX2ZpbGVuYW1lYCBhdHRyaWJ1dGUgb24gY29kZSBvYmplY3RzIGFsd2F5cyBwb2ludHMKQEAgLTQxMiw2ICs0MjgsNyBAQAogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5tb2R1bGVfc291cmNlKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2VsZi5kaXJfbmFtZSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLnN5c19wYXRoCkBAIC00NTEsNiArNDY4LDcgQEAKICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuZmlsZV9uYW1lLCBkZmlsZT10YXJnZXQpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLmZpbGVfbmFtZSkKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5maWxlX25hbWUpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG1vZCA9IHNlbGYuaW1wb3J0X21vZHVsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLm1vZHVsZV9maWxlbmFtZSwgcHljX2ZpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmNvZGVfZmlsZW5hbWUsIHRhcmdldCkKQEAgLTQ1OSw3ICs0NzcsNyBAQAogICAgIGRlZiB0ZXN0X2ZvcmVpZ25fY29kZShzZWxmKToKICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuZmlsZV9uYW1lKQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5jb21waWxlZF9uYW1lLCAicmIiKSBhcyBmOgotICAgICAgICAgICAgaGVhZGVyID0gZi5yZWFkKDgpCisgICAgICAgICAgICBoZWFkZXIgPSBmLnJlYWQoMTIpCiAgICAgICAgICAgICBjb2RlID0gbWFyc2hhbC5sb2FkKGYpCiAgICAgICAgIGNvbnN0YW50cyA9IGxpc3QoY29kZS5jb19jb25zdHMpCiAgICAgICAgIGZvcmVpZ25fY29kZSA9IHRlc3RfbWFpbi5fX2NvZGVfXwpAQCAtNTAxLDkgKzUxOSwxMSBAQAogICAgICAgICB1bmxvYWQoInRlc3RfdHJhaWxpbmdfc2xhc2giKQogCiAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNjc3LgotICAgIGRlZiBfdGVzdF9VTkNfcGF0aChzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICd0ZXN0X3RyYWlsaW5nX3NsYXNoLnB5JyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoInRlc3RkYXRhID0gJ3Rlc3RfdHJhaWxpbmdfc2xhc2gnIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mtc3BlY2lmaWMnKQorICAgIGRlZiB0ZXN0X1VOQ19wYXRoKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ3Rlc3RfdW5jX3BhdGgucHknKSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgidGVzdGRhdGEgPSAndGVzdF91bmNfcGF0aCciKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAjIENyZWF0ZSB0aGUgVU5DIHBhdGgsIGxpa2UgXFxteWhvc3RcYyRcZm9vXGJhci4KICAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzZWxmLnBhdGgpCiAgICAgICAgIGltcG9ydCBzb2NrZXQKQEAgLTUxOCwxMyArNTM4LDE1IEBACiAgICAgICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE1MzM4CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGFjY2VzcyBhZG1pbmlzdHJhdGl2ZSBzaGFyZSAlciIgJSAodW5jLCkpCiAgICAgICAgICAgICByYWlzZQotICAgICAgICBzeXMucGF0aC5hcHBlbmQocGF0aCkKLSAgICAgICAgbW9kID0gX19pbXBvcnRfXygidGVzdF90cmFpbGluZ19zbGFzaCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRlc3RkYXRhLCAndGVzdF90cmFpbGluZ19zbGFzaCcpCi0gICAgICAgIHVubG9hZCgidGVzdF90cmFpbGluZ19zbGFzaCIpCi0KLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAgICAgdGVzdF9VTkNfcGF0aCA9IF90ZXN0X1VOQ19wYXRoCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCB1bmMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oInRlc3RfdW5jX3BhdGgiKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiY291bGQgbm90IGltcG9ydCAndGVzdF91bmNfcGF0aCcgZnJvbSAlcjogJXIiCisgICAgICAgICAgICAgICAgICAgICAgJSAodW5jLCBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QudGVzdGRhdGEsICd0ZXN0X3VuY19wYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZC5fX2ZpbGVfXy5zdGFydHN3aXRoKHVuYyksIG1vZC5fX2ZpbGVfXykKKyAgICAgICAgdW5sb2FkKCJ0ZXN0X3VuY19wYXRoIikKIAogCiBjbGFzcyBSZWxhdGl2ZUltcG9ydFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTU2NSw3ICs1ODcsNyBAQAogCiAgICAgICAgICMgQ2hlY2sgcmVsYXRpdmUgaW1wb3J0IGZhaWxzIHdpdGggcGFja2FnZSBzZXQgdG8gYSBub24tc3RyaW5nCiAgICAgICAgIG5zID0gZGljdChfX3BhY2thZ2VfXz1vYmplY3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2hlY2tfcmVsYXRpdmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2hlY2tfcmVsYXRpdmUpCiAKICAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRfd2l0aG91dF9mdXR1cmUoc2VsZik6CiAgICAgICAgICMgSWYgZXhwbGljaXQgcmVsYXRpdmUgaW1wb3J0IHN5bnRheCBpcyB1c2VkLCB0aGVuIGRvIG5vdCB0cnkKQEAgLTYxMyw2ICs2MzUsNyBAQAogICAgICAgICB3aXRoIG9wZW4oc2VsZi5zb3VyY2UsICd3JykgYXMgZnA6CiAgICAgICAgICAgICBwcmludCgnIyBUaGlzIGlzIGEgdGVzdCBmaWxlIHdyaXR0ZW4gYnkgdGVzdF9pbXBvcnQucHknLCBmaWxlPWZwKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3NlcnQgc3lzLnBhdGhbMF0gPT0gb3MuY3VyZGlyLCAnVW5leHBlY3RlZCBzeXMucGF0aFswXScKQEAgLTY2MCw2ICs2ODMsNyBAQAogICAgICAgICBweWNfZmlsZSA9IG1ha2VfbGVnYWN5X3B5YyhzZWxmLnNvdXJjZSkKICAgICAgICAgb3MucmVtb3ZlKHNlbGYuc291cmNlKQogICAgICAgICB1bmxvYWQoVEVTVEZOKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBvcy5wYXRoLnJlbHBhdGgocHljX2ZpbGUpKSkKQEAgLTY4MCw2ICs3MDQsNyBAQAogICAgICAgICBweWNfZmlsZSA9IG1ha2VfbGVnYWN5X3B5YyhzZWxmLnNvdXJjZSkKICAgICAgICAgb3MucmVtb3ZlKHNlbGYuc291cmNlKQogICAgICAgICB1bmxvYWQoVEVTVEZOKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2NhY2hlZF9fLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5jdXJkaXIsIG9zLnBhdGgucmVscGF0aChweWNfZmlsZSkpKQpAQCAtNjg4LDYgKzcxMyw4IEBACiAgICAgICAgICMgTGlrZSB0ZXN0X19fY2FjaGVkX18gYnV0IGZvciBwYWNrYWdlcy4KICAgICAgICAgZGVmIGNsZWFudXAoKToKICAgICAgICAgICAgIHJtdHJlZSgncGVwMzE0NycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCiAgICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5CkBAIC02OTUsOCArNzIyLDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbigncGVwMzE0NycsICdmb28ucHknKSwgJ3cnKToKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCi0gICAgICAgIHVubG9hZCgncGVwMzE0NycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIGluaXRfcHljID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKAogICAgICAgICAgICAgb3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCkBAIC03MTAsMTggKzczNiwyMCBAQAogICAgICAgICAjIFBFUCAzMTQ3IHB5YyBmaWxlLgogICAgICAgICBkZWYgY2xlYW51cCgpOgogICAgICAgICAgICAgcm10cmVlKCdwZXAzMTQ3JykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3JykKICAgICAgICAgb3MubWtkaXIoJ3BlcDMxNDcnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cCkKLSAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCi0gICAgICAgIHVubG9hZCgncGVwMzE0NycpCiAgICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5CiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSwgJ3cnKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbigncGVwMzE0NycsICdmb28ucHknKSwgJ3cnKToKICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcuZm9vJykKICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIHVubG9hZCgncGVwMzE0NycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIGluaXRfcHljID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKAogICAgICAgICAgICAgb3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCkBAIC03MzAsMjIgKzc1OCwyNTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMubW9kdWxlc1sncGVwMzE0Ny5mb28nXS5fX2NhY2hlZF9fLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5jdXJkaXIsIGZvb19weWMpKQogCisgICAgZGVmIHRlc3RfcmVjb21wdXRlX3B5Y19zYW1lX3NlY29uZChzZWxmKToKKyAgICAgICAgIyBFdmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlIGRvZXNuJ3QgY2hhbmdlIHRpbWVzdGFtcCwgYSBjaGFuZ2UgaW4KKyAgICAgICAgIyBzb3VyY2Ugc2l6ZSBpcyBlbm91Z2ggdG8gdHJpZ2dlciByZWNvbXB1dGF0aW9uIG9mIHRoZSBweWMgZmlsZS4KKyAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgIHVubG9hZChURVNURk4pCisgICAgICAgIHdpdGggb3BlbihzZWxmLnNvdXJjZSwgJ2EnKSBhcyBmcDoKKyAgICAgICAgICAgIHByaW50KCJ4ID0gNSIsIGZpbGU9ZnApCisgICAgICAgIG0gPSBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLngsIDUpCiAKLWNsYXNzIFJlbGF0aXZlSW1wb3J0RnJvbUltcG9ydGxpYlRlc3RzKHRlc3RfcmVsYXRpdmVfaW1wb3J0cy5SZWxhdGl2ZUltcG9ydHMpOgorCitjbGFzcyBUZXN0U3ltYm9saWNhbGx5TGlua2VkUGFja2FnZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcGFja2FnZV9uYW1lID0gJ3NhbXBsZScKKyAgICB0YWdnZWQgPSBwYWNrYWdlX25hbWUgKyAnLXRhZ2dlZCcKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5faW1wb3J0bGliX3V0aWxfZmxhZyA9IGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18KLSAgICAgICAgaW1wb3J0bGliX3V0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKKyAgICAgICAgdGVzdC5zdXBwb3J0LnJtdHJlZShzZWxmLnRhZ2dlZCkKKyAgICAgICAgdGVzdC5zdXBwb3J0LnJtdHJlZShzZWxmLnBhY2thZ2VfbmFtZSkKKyAgICAgICAgc2VsZi5vcmlnX3N5c19wYXRoID0gc3lzLnBhdGhbOl0KKworICAgICAgICAjIGNyZWF0ZSBhIHNhbXBsZSBwYWNrYWdlOyBpbWFnaW5lIHlvdSBoYXZlIGEgcGFja2FnZSB3aXRoIGEgdGFnIGFuZAorICAgICAgICAjICB5b3Ugd2FudCB0byBzeW1ib2xpY2FsbHkgbGluayBpdCBmcm9tIGl0cyB1bnRhZ2dlZCBuYW1lLgorICAgICAgICBvcy5ta2RpcihzZWxmLnRhZ2dlZCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC5ybXRyZWUsIHNlbGYudGFnZ2VkKQorICAgICAgICBpbml0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50YWdnZWQsICdfX2luaXRfXy5weScpCisgICAgICAgIHRlc3Quc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShpbml0X2ZpbGUpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbml0X2ZpbGUpCisKKyAgICAgICAgIyBub3cgY3JlYXRlIGEgc3ltbGluayB0byB0aGUgdGFnZ2VkIHBhY2thZ2UKKyAgICAgICAgIyBzYW1wbGUgLT4gc2FtcGxlLXRhZ2dlZAorICAgICAgICBvcy5zeW1saW5rKHNlbGYudGFnZ2VkLCBzZWxmLnBhY2thZ2VfbmFtZSwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1UcnVlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgc2VsZi5wYWNrYWdlX25hbWUpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmlzZGlyKHNlbGYucGFja2FnZV9uYW1lKSwgVHJ1ZSkKKworICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9uYW1lLCAnX19pbml0X18ucHknKSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaW1wb3J0bGliX3V0aWwudXNpbmdfX19pbXBvcnRfXyA9IHNlbGYuX2ltcG9ydGxpYl91dGlsX2ZsYWcKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLm9yaWdfc3lzX3BhdGgKKworICAgICMgcmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZTY3MjcKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgbm90IGhhc2F0dHIoc3lzLCAnZ2V0d2luZG93c3ZlcnNpb24nKQorICAgICAgICBvciBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKSA+PSAoNiwgMCksCisgICAgICAgICJXaW5kb3dzIFZpc3RhIG9yIGxhdGVyIHJlcXVpcmVkIikKKyAgICBAdGVzdC5zdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9zeW1saW5rZWRfZGlyX2ltcG9ydGFibGUoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHNhbXBsZSBjYW4gb25seSBiZSBpbXBvcnRlZCBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgc3lzLnBhdGhbOl0gPSBbJy4nXQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2VsZi5wYWNrYWdlX25hbWUpCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5wYWNrYWdlX25hbWUsICdfX2luaXRfXy5weScpKQorCisgICAgICAgICMgVHJ5IHRvIGltcG9ydCB0aGUgcGFja2FnZQorICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShzZWxmLnBhY2thZ2VfbmFtZSkKKworCitAY3B5dGhvbl9vbmx5CitjbGFzcyBJbXBvcnRsaWJCb290c3RyYXBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUaGVzZSB0ZXN0cyBjaGVjayB0aGF0IGltcG9ydGxpYiBpcyBib290c3RyYXBwZWQuCisKKyAgICBkZWYgdGVzdF9mcm96ZW5faW1wb3J0bGliKHNlbGYpOgorICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kKQorCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYl9pc19ib290c3RyYXAoc2VsZik6CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCisgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kLCBfYm9vdHN0cmFwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19wYWNrYWdlX18sICdpbXBvcnRsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kLl9fZmlsZV9fLmVuZHN3aXRoKCdfYm9vdHN0cmFwLnB5JyksIG1vZC5fX2ZpbGVfXykKKworICAgIGRlZiB0ZXN0X3RoZXJlX2Nhbl9iZV9vbmx5X29uZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTUzODYgcmV2ZWFsZWQgYSB0cmlja3kgbG9vcGhvbGUgaW4gdGhlIGJvb3RzdHJhcHBpbmcKKyAgICAgICAgIyBUaGlzIHRlc3QgaXMgdGVjaG5pY2FsbHkgcmVkdW5kYW50LCBzaW5jZSB0aGUgYnVnIGNhdXNlZCBpbXBvcnRpbmcKKyAgICAgICAgIyB0aGlzIHRlc3QgbW9kdWxlIHRvIGNyYXNoIGNvbXBsZXRlbHksIGJ1dCBpdCBoZWxwcyBwcm92ZSB0aGUgcG9pbnQKKyAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQorICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBzZWxmLmFzc2VydElzKG1hY2hpbmVyeS5GaWxlRmluZGVyLCBtb2QuRmlsZUZpbmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbXAubmV3X21vZHVsZSwgbW9kLm5ld19tb2R1bGUpCisKKworY2xhc3MgSW1wb3J0VHJhY2ViYWNrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgIHNlbGYub2xkX3BhdGggPSBzeXMucGF0aFs6XQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgVEVTVEZOKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzeXMucGF0aFs6XSA9IHNlbGYub2xkX3BhdGgKKyAgICAgICAgcm10cmVlKFRFU1RGTikKKworICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIG1vZCwgY29udGVudHMsIGV4dD0iLnB5Iik6CisgICAgICAgIGZuYW1lID0gb3MucGF0aC5qb2luKFRFU1RGTiwgbW9kICsgZXh0KQorICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIG1vZCkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgcmV0dXJuIGZuYW1lCisKKyAgICBkZWYgYXNzZXJ0X3RyYWNlYmFjayhzZWxmLCB0YiwgZmlsZXMpOgorICAgICAgICBkZWR1cGVkX2ZpbGVzID0gW10KKyAgICAgICAgd2hpbGUgdGI6CisgICAgICAgICAgICBjb2RlID0gdGIudGJfZnJhbWUuZl9jb2RlCisgICAgICAgICAgICBmbiA9IGNvZGUuY29fZmlsZW5hbWUKKyAgICAgICAgICAgIGlmIG5vdCBkZWR1cGVkX2ZpbGVzIG9yIGZuICE9IGRlZHVwZWRfZmlsZXNbLTFdOgorICAgICAgICAgICAgICAgIGRlZHVwZWRfZmlsZXMuYXBwZW5kKGZuKQorICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRlZHVwZWRfZmlsZXMpLCBsZW4oZmlsZXMpLCBkZWR1cGVkX2ZpbGVzKQorICAgICAgICBmb3IgZm4sIHBhdCBpbiB6aXAoZGVkdXBlZF9maWxlcywgZmlsZXMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXQsIGZuKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfbW9kdWxlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGFzc2VydFJhaXNlcygpIGNsZWFycyBfX3RyYWNlYmFja19fCisgICAgICAgICAgICBpbXBvcnQgbm9uZXhpc3RlbnRfeHl6enkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJJbXBvcnRFcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fXSkKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X21vZHVsZV9uZXN0ZWQoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgImltcG9ydCBub25leGlzdGVudF94eXp6eSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJJbXBvcnRFcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnZm9vLnB5J10pCisKKyAgICBkZWYgdGVzdF9leGVjX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnZm9vLnB5J10pCisKKyAgICBkZWYgdGVzdF9leGVjX2ZhaWx1cmVfbmVzdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbXBvcnQgYmFyIikKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJiYXIiLCAiMS8wIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlplcm9EaXZpc2lvbkVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICdmb28ucHknLCAnYmFyLnB5J10pCisKKyAgICAjIEEgZmV3IG1vcmUgZXhhbXBsZXMgZnJvbSBpc3N1ZSAjMTU0MjUKKyAgICBkZWYgdGVzdF9zeW50YXhfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgImludmFsaWQgc3ludGF4IGlzIGludmFsaWQiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiU3ludGF4RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfX10pCisKKyAgICBkZWYgX3NldHVwX2Jyb2tlbl9wYWNrYWdlKHNlbGYsIHBhcmVudCwgY2hpbGQpOgorICAgICAgICBwa2dfbmFtZSA9ICJfcGFyZW50X2ZvbyIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubG9hZCwgcGtnX25hbWUpCisgICAgICAgIHBrZ19wYXRoID0gb3MucGF0aC5qb2luKFRFU1RGTiwgcGtnX25hbWUpCisgICAgICAgIG9zLm1rZGlyKHBrZ19wYXRoKQorICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQorICAgICAgICBpbml0X3BhdGggPSBvcy5wYXRoLmpvaW4ocGtnX3BhdGgsICdfX2luaXRfXy5weScpCisgICAgICAgIHdpdGggb3Blbihpbml0X3BhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUocGFyZW50KQorICAgICAgICBiYXJfcGF0aCA9IG9zLnBhdGguam9pbihwa2dfcGF0aCwgJ2Jhci5weScpCisgICAgICAgIHdpdGggb3BlbihiYXJfcGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjaGlsZCkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgcmV0dXJuIGluaXRfcGF0aCwgYmFyX3BhdGgKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfcGFyZW50X2Zvby5iYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBiYXJfcGF0aF0pCisKKyAgICBkZWYgdGVzdF9icm9rZW5fZnJvbShzZWxmKToKKyAgICAgICAgaW5pdF9wYXRoLCBiYXJfcGF0aCA9IHNlbGYuX3NldHVwX2Jyb2tlbl9wYWNrYWdlKCIiLCAiMS8wIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBfcGFyZW50X2ZvbyBpbXBvcnQgYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgYmFyX3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX3BhcmVudChzZWxmKToKKyAgICAgICAgaW5pdF9wYXRoLCBiYXJfcGF0aCA9IHNlbGYuX3NldHVwX2Jyb2tlbl9wYWNrYWdlKCIxLzAiLCAiIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9wYXJlbnRfZm9vLmJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlplcm9EaXZpc2lvbkVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGluaXRfcGF0aF0pCisKKyAgICBkZWYgdGVzdF9icm9rZW5fcGFyZW50X2Zyb20oc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiMS8wIiwgIiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gX3BhcmVudF9mb28gaW1wb3J0IGJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlplcm9EaXZpc2lvbkVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGluaXRfcGF0aF0pCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfaW1wb3J0X2J1ZyhzZWxmKToKKyAgICAgICAgIyBXZSBzaW11bGF0ZSBhIGJ1ZyBpbiBpbXBvcnRsaWIgYW5kIGNoZWNrIHRoYXQgaXQncyBub3Qgc3RyaXBwZWQKKyAgICAgICAgIyBhd2F5IGZyb20gdGhlIHRyYWNlYmFjay4KKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiIikKKyAgICAgICAgaW1wb3J0bGliID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgb2xkX2xvYWRfbW9kdWxlID0gaW1wb3J0bGliLlNvdXJjZUxvYWRlci5sb2FkX21vZHVsZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWYgbG9hZF9tb2R1bGUoKmFyZ3MpOgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgaW1wb3J0bGliLlNvdXJjZUxvYWRlci5sb2FkX21vZHVsZSA9IGxvYWRfbW9kdWxlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJzxmcm96ZW4gaW1wb3J0bGliJywgX19maWxlX19dKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaW1wb3J0bGliLlNvdXJjZUxvYWRlci5sb2FkX21vZHVsZSA9IG9sZF9sb2FkX21vZHVsZQogCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBydW5fdW5pdHRlc3QoSW1wb3J0VGVzdHMsIFB5Y2FjaGVUZXN0cywKKyAgICBydW5fdW5pdHRlc3QoSW1wb3J0VGVzdHMsIFB5Y2FjaGVUZXN0cywgRmlsZVBlcm1pc3Npb25UZXN0cywKICAgICAgICAgICAgICAgICAgUHljUmV3cml0aW5nVGVzdHMsIFBhdGhzVGVzdHMsIFJlbGF0aXZlSW1wb3J0VGVzdHMsCiAgICAgICAgICAgICAgICAgIE92ZXJyaWRpbmdJbXBvcnRCdWlsdGluVGVzdHMsCi0gICAgICAgICAgICAgICAgIFJlbGF0aXZlSW1wb3J0RnJvbUltcG9ydGxpYlRlc3RzKQorICAgICAgICAgICAgICAgICBJbXBvcnRsaWJCb290c3RyYXBUZXN0cywKKyAgICAgICAgICAgICAgICAgVGVzdFN5bWJvbGljYWxseUxpbmtlZFBhY2thZ2UsCisgICAgICAgICAgICAgICAgIEltcG9ydFRyYWNlYmFja1Rlc3RzKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weQppbmRleCBlYzY3MzBlLi4yYTIyZDFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKQEAgLTUxLDcgKzUxLDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPXRlc3RfcGF0aCk6CiAgICAgICAgIGlmIHBhdGggIT0gdGVzdF9wYXRoOgotICAgICAgICAgICAgIyBpZiBvdXQgY2xhc3MgaXMgb24gc3lzLnBhdGhfaG9va3MsIHdlIG11c3QgcmFpc2UKKyAgICAgICAgICAgICMgaWYgb3VyIGNsYXNzIGlzIG9uIHN5cy5wYXRoX2hvb2tzLCB3ZSBtdXN0IHJhaXNlCiAgICAgICAgICAgICAjIEltcG9ydEVycm9yIGZvciBhbnkgcGF0aCBpdGVtIHRoYXQgd2UgY2FuJ3QgaGFuZGxlLgogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aApAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgICAgIHNlbGYuZG9UZXN0SW1wb3J0cyhpKQogCiAgICAgZGVmIHRlc3RQYXRoSG9vayhzZWxmKToKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKFBhdGhJbXBvcnRlcikKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIFBhdGhJbXBvcnRlcikKICAgICAgICAgc3lzLnBhdGguYXBwZW5kKHRlc3RfcGF0aCkKICAgICAgICAgc2VsZi5kb1Rlc3RJbXBvcnRzKCkKIApAQCAtMjI4LDggKzIyOCwxMCBAQAogICAgIGRlZiB0ZXN0SW1wV3JhcHBlcihzZWxmKToKICAgICAgICAgaSA9IEltcFdyYXBwZXIoKQogICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpKQotICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoSW1wV3JhcHBlcikKLSAgICAgICAgbW5hbWVzID0gKCJjb2xvcnN5cyIsICJ1cmxsaWIucGFyc2UiLCAiZGlzdHV0aWxzLmNvcmUiKQorICAgICAgICBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgSW1wV3JhcHBlcikKKyAgICAgICAgbW5hbWVzID0gKAorICAgICAgICAgICAgImNvbG9yc3lzIiwgInVybGxpYi5wYXJzZSIsICJkaXN0dXRpbHMuY29yZSIsICJzeXMiLAorICAgICAgICApCiAgICAgICAgIGZvciBtbmFtZSBpbiBtbmFtZXM6CiAgICAgICAgICAgICBwYXJlbnQgPSBtbmFtZS5zcGxpdCgiLiIpWzBdCiAgICAgICAgICAgICBmb3IgbiBpbiBsaXN0KHN5cy5tb2R1bGVzKToKQEAgLTIzNyw3ICsyMzksOCBAQAogICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbl0KICAgICAgICAgZm9yIG1uYW1lIGluIG1uYW1lczoKICAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG1uYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbIl9fZHVtbXlfXyJdKQotICAgICAgICAgICAgbS5fX2xvYWRlcl9fICAjIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYW5kbGVkIHRoZSBpbXBvcnQKKyAgICAgICAgICAgICMgdG8gbWFrZSBzdXJlIHdlIGFjdHVhbGx5IGhhbmRsZWQgdGhlIGltcG9ydAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobSwgIl9fbG9hZGVyX18iKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWQwNTg1Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1mcm9tIGltcG9ydGxpYi50ZXN0Ll9fbWFpbl9fIGltcG9ydCB0ZXN0X21haW4KLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMzQ1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX2luaXRfXy5weQpAQCAtMCwwICsxLDMzIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHVuaXR0ZXN0CisKK2RlZiB0ZXN0X3N1aXRlKHBhY2thZ2U9X19wYWNrYWdlX18sIGRpcmVjdG9yeT1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKToKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgorICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoKCcuJywgJ19fJykpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIG5hbWUpCisgICAgICAgIGlmIChvcy5wYXRoLmlzZmlsZShwYXRoKSBhbmQgbmFtZS5zdGFydHN3aXRoKCd0ZXN0XycpIGFuZAorICAgICAgICAgICAgICAgIG5hbWUuZW5kc3dpdGgoJy5weScpKToKKyAgICAgICAgICAgIHN1Ym1vZHVsZV9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKVswXQorICAgICAgICAgICAgbW9kdWxlX25hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2UsIHN1Ym1vZHVsZV9uYW1lKQorICAgICAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSwgbGV2ZWw9MCkKKyAgICAgICAgICAgIG1vZHVsZV90ZXN0cyA9IHVuaXR0ZXN0LmZpbmRUZXN0Q2FzZXMoc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdKQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChtb2R1bGVfdGVzdHMpCisgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgIHBhY2thZ2VfbmFtZSA9ICJ7MH0uezF9Ii5mb3JtYXQocGFja2FnZSwgbmFtZSkKKyAgICAgICAgICAgIF9faW1wb3J0X18ocGFja2FnZV9uYW1lLCBsZXZlbD0wKQorICAgICAgICAgICAgcGFja2FnZV90ZXN0cyA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGFja2FnZV9uYW1lXSwgJ3Rlc3Rfc3VpdGUnKSgpCisgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KHBhY2thZ2VfdGVzdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250aW51ZQorICAgIHJldHVybiBzdWl0ZQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdGFydF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAgdG9wX2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoc3RhcnRfZGlyKSkKKyAgICB0ZXN0X2xvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3RfbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2RpciwgdG9wX2xldmVsX2Rpcj10b3BfZGlyKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19fbWFpbl9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5NzEyOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsMjAgQEAKKyIiIlJ1biBpbXBvcnRsaWIncyB0ZXN0IHN1aXRlLgorCitTcGVjaWZ5aW5nIHRoZSBgYC0tYnVpbHRpbmBgIGZsYWcgd2lsbCBydW4gdGVzdHMsIHdoZXJlIGFwcGxpY2FibGUsIHdpdGgKK2J1aWx0aW5zLl9faW1wb3J0X18gaW5zdGVhZCBvZiBpbXBvcnRsaWIuX19pbXBvcnRfXy4KKworIiIiCitmcm9tIC4gaW1wb3J0IHRlc3RfbWFpbgorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nRXhlY3V0ZSB0aGUgaW1wb3J0bGliIHRlc3QgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VpdGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd1c2UgYnVpbHRpbnMuX19pbXBvcnRfXygpIGluc3RlYWQgb2YgaW1wb3J0bGliJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGlmIGFyZ3MuYnVpbHRpbjoKKyAgICAgICAgdXRpbC51c2luZ19fX2ltcG9ydF9fID0gVHJ1ZQorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYWJjLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvYWJjLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9hYmMucHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi9fX2luaXRfXy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi9fX2luaXRfXy5weQppbmRleCAzMWEzYjVmLi4xNWMwYWRlIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL19faW5pdF9fLnB5CkBAIC0xLDEwICsxLDEwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcwogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5idWlsdGluJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5idWlsdGluJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKaW5kZXggNDBmNjkwZS4uMTQ2NTM4ZCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQpAQCAtMzUsMTQgKzM1LDE0IEBACiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgYXNzZXJ0ICdpbXBvcnRsaWInIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZSgnaW1wb3J0bGliJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9pZ25vcmVfcGF0aChzZWxmKToKICAgICAgICAgIyBUaGUgdmFsdWUgZm9yICdwYXRoJyBzaG91bGQgYWx3YXlzIHRyaWdnZXIgYSBmYWlsZWQgaW1wb3J0LgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6CiAgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQppbmRleCAxYTg1MzliLi44ZTE4NmU3IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CkBAIC0xOCwxMCArMTgsMTAgQEAKIAogICAgIGRlZiB2ZXJpZnkoc2VsZiwgbW9kdWxlKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBtYXRjaGVzIGFnYWluc3Qgd2hhdCBpdCBzaG91bGQgaGF2ZS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIHNlbGYudmVyaWZpY2F0aW9uLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUuX19uYW1lX18gaW4gc3lzLm1vZHVsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fbmFtZV9fLCBzeXMubW9kdWxlcykKIAogICAgIGxvYWRfbW9kdWxlID0gc3RhdGljbWV0aG9kKGxhbWJkYSBuYW1lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKG5hbWUpKQpAQCAtNDksMjAgKzQ5LDIyIEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKICAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQogICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlMSBpcyBtb2R1bGUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogCiAgICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdkc3Nkc2RmZmYnCiAgICAgICAgIGFzc2VydCBuYW1lIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3RfYWxyZWFkeV9pbXBvcnRlZChzZWxmKToKICAgICAgICAgIyBVc2luZyB0aGUgbmFtZSBvZiBhIG1vZHVsZSBhbHJlYWR5IGltcG9ydGVkIGJ1dCBub3QgYSBidWlsdC1pbiBzaG91bGQKICAgICAgICAgIyBzdGlsbCBmYWlsLgogICAgICAgICBhc3NlcnQgaGFzYXR0cihpbXBvcnRsaWIsICdfX2ZpbGVfXycpICAjIE5vdCBhIGJ1aWx0LWluLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdpbXBvcnRsaWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzIsMTIgKzc0LDEyIEBACiAgICAgZGVmIHRlc3RfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgICMgVGhlcmUgaXMgbm8gY29kZSBvYmplY3QuCiAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X2NvZGUoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKICAgICAgICAgIyBUaGVyZSBpcyBubyBzb3VyY2UuCiAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X3NvdXJjZShidWlsdGluX3V0aWwuTkFNRSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdCBpcyBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKICAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgogICAgICAgICAjIENhbm5vdCBiZSBhIHBhY2thZ2UuCkBAIC04OCw4ICs5MCw5IEBACiAgICAgICAgICMgTW9kdWxlcyBub3QgYnVpbHQtaW4gc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgogICAgICAgICBmb3IgbWV0aF9uYW1lIGluICgnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsICdpc19wYWNrYWdlJyk6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1ldGhfbmFtZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbWV0aG9kKGJ1aWx0aW5fdXRpbC5CQURfTkFNRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYnVpbHRpbl91dGlsLkJBRF9OQU1FKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi91dGlsLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLmMwMzM5MjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5leHRlbnNpb24nLCBkaXJlY3RvcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCBlMDYyZmI2Li43NmM1M2U0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGltcAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKQEAgLTEzLDE5ICsxNCwyNiBAQAogICAgICAgICBnb29kX25hbWUgPSBleHRfdXRpbC5OQU1FCiAgICAgICAgIGJhZF9uYW1lID0gZ29vZF9uYW1lLnVwcGVyKCkKICAgICAgICAgYXNzZXJ0IGdvb2RfbmFtZSAhPSBiYWRfbmFtZQotICAgICAgICBmaW5kZXIgPSBfYm9vdHN0cmFwLl9GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBfYm9vdHN0cmFwLkZpbGVGaW5kZXIoZXh0X3V0aWwuUEFUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2Jvb3RzdHJhcC5FeHRlbnNpb25GaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUoYmFkX25hbWUpCiAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYudW5zZXQoJ1BZVEhPTkNBU0VPSycpCisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kX21vZHVsZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9jYXNlX2luc2Vuc2l0aXZpdHkoc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnNldCgnUFlUSE9OQ0FTRU9LJywgJzEnKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIG5vdCBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmRfbW9kdWxlKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGxvYWRlciwgJ2xvYWRfbW9kdWxlJykpCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CmluZGV4IGVhOTc0ODMuLmE2M2NmZGIgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTksMTUgKzksMTYgQEAKICAgICAiIiJUZXN0IHRoZSBmaW5kZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgaW1wb3J0ZXIgPSBfYm9vdHN0cmFwLl9GaWxlRmluZGVyKHV0aWwuUEFUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgaW1wb3J0ZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLlBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKSkKICAgICAgICAgcmV0dXJuIGltcG9ydGVyLmZpbmRfbW9kdWxlKGZ1bGxuYW1lKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5maW5kX21vZHVsZSh1dGlsLk5BTUUpKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb24gbW9kdWxlcyBjYW5ub3QgYmUgYW4gX19pbml0X18gZm9yIGEgcGFja2FnZS4KKyAgICAgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIGFuIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2Uoc2VsZik6CkBAIC0yNSw3ICsyNiw3IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb24gbW9kdWxlcyBjYW5ub3QgYmUgYW4gX19pbml0X18gZm9yIGEgcGFja2FnZS4KKyAgICAgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIGFuIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9vdmVyX21vZHVsZShzZWxmKToKQEAgLTMzLDkgKzM0LDcgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUoJ2FzZGZqa2w7JykgaXMgTm9uZSkKLQotICAgICMgWFhYIFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBzb21lb25lIHRyaWVzIHRvIHVzZSB0aGUgJ3BhdGgnIGFyZ3VtZW50PworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmRfbW9kdWxlKCdhc2RmamtsOycpKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTVhZjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CkBAIC0wLDAgKzEsNzkgQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAorZnJvbSAuLiBpbXBvcnQgYWJjCitmcm9tIC4uIGltcG9ydCB1dGlsCisKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBMb2FkZXJUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgorCisgICAgIiIiVGVzdCBsb2FkX21vZHVsZSgpIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKKworICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlX0FQSShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBkZWZhdWx0IGFyZ3VtZW50IGZvciBsb2FkX21vZHVsZSgpLgorICAgICAgICBzZWxmLmxvYWRlci5sb2FkX21vZHVsZSgpCisgICAgICAgIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnWFhYJykKKworCisgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUoZXh0X3V0aWwuTkFNRSkKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBbKCdfX25hbWVfXycsIGV4dF91dGlsLk5BTUUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fZmlsZV9fJywgZXh0X3V0aWwuRklMRVBBVEgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fcGFja2FnZV9fJywgJycpXToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4dF91dGlsLk5BTUUsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZS5fX2xvYWRlcl9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQorCisgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6CisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBpbiBhIHBhY2thZ2UgYXZhaWxhYmxlIGZvciB0ZXN0aW5nLgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgorICAgICAgICAgICAgbW9kdWxlMSA9IHNlbGYubG9hZF9tb2R1bGUoZXh0X3V0aWwuTkFNRSkKKyAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIE5vIGVhc3kgd2F5IHRvIHRyaWdnZXIgYSBmYWlsdXJlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbXBvcnQuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnYXNkZmprbDsnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorCisgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKGV4dF91dGlsLk5BTUUpKQorICAgICAgICBmb3Igc3VmZml4IGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdzb21lJywgJ3BhdGgnLCAncGtnJywgJ19faW5pdF9fJyArIHN1ZmZpeCkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdwa2cnLCBwYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlci5pc19wYWNrYWdlKCdwa2cnKSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChMb2FkZXJUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQppbmRleCA0NjEwNDIwLi4xZDk2OWExIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogaW1wb3J0IGNvbGxlY3Rpb25zCkBAIC0xNCw3ICsxNCw4IEBACiAgICAgIyBYWFggU2hvdWxkIGl0IG9ubHkgd29yayBmb3IgZGlyZWN0b3JpZXMgY29udGFpbmluZyBhbiBleHRlbnNpb24gbW9kdWxlPwogCiAgICAgZGVmIGhvb2soc2VsZiwgZW50cnkpOgotICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZmlsZV9wYXRoX2hvb2soZW50cnkpCisgICAgICAgIHJldHVybiBtYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2soKG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpKGVudHJ5KQogCiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBQYXRoIGhvb2sgc2hvdWxkIGhhbmRsZSBhIGRpcmVjdG9yeSB3aGVyZSBhIGtub3duIGV4dGVuc2lvbiBtb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkKaW5kZXggZDE0OTE2OS4uYTI2NmRkOSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IGltcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKQEAgLTYsMTAgKzcsOSBAQAogRVhUID0gTm9uZQogRklMRU5BTUUgPSBOb25lCiBOQU1FID0gJ190ZXN0Y2FwaScKLV9maWxlX2V4dHMgPSBbeFswXSBmb3IgeCBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCkgaWYgeFsyXSA9PSBpbXAuQ19FWFRFTlNJT05dCiB0cnk6CiAgICAgZm9yIFBBVEggaW4gc3lzLnBhdGg6Ci0gICAgICAgIGZvciBFWFQgaW4gX2ZpbGVfZXh0czoKKyAgICAgICAgZm9yIEVYVCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgogICAgICAgICAgICAgRklMRU5BTUUgPSBOQU1FICsgRVhUCiAgICAgICAgICAgICBGSUxFUEFUSCA9IG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkpOgpAQCAtMTgsNCArMTgsMyBAQAogICAgICAgICBQQVRIID0gRVhUID0gRklMRU5BTUUgPSBGSUxFUEFUSCA9IE5vbmUKIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgIHBhc3MKLWRlbCBfZmlsZV9leHRzCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi9fX2luaXRfXy5weQppbmRleCA4ZDdjNDlkLi45ZWYxMDNiIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi9fX2luaXRfXy5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZnJvemVuJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQppbmRleCBkYjg4Mzc5Li5mYTBjMmEwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gLi4uIGltcG9ydCBtYWNoaW5lcnkKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLi4gaW1wb3J0IGFiYwogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM1LDcgKzM1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZCgnPG5vdCByZWFsPicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA3MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2xvYWRlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CmluZGV4IGI2ODVlZjUuLjRiOGVjMTUgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC0xMCw1NSArMTAsNzAgQEAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX2hlbGxvX18nKQotICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19faGVsbG9fXycsICdfX2ZpbGVfXyc6ICc8ZnJvemVuPicsCi0gICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICcnLCAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcn0KKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX2hlbGxvX18nLAorICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJywKKyAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX3BoZWxsb19fJyksICBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19fcGhlbGxvX18nKQotICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19fcGhlbGxvX18nLCAnX19maWxlX18nOiAnPGZyb3plbj4nLAotICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJ19fcGhlbGxvX18nLCAnX19wYXRoX18nOiBbJ19fcGhlbGxvX18nXSwKLSAgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyfQorICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19fcGhlbGxvX18nLAorICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJ19fcGhlbGxvX18nLAorICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogWydfX3BoZWxsb19fJ10sCisgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgogICAgICAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKG1vZHVsZSwgYXR0cikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHJfdmFsdWUsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBfX3BoZWxsb19fLiVzLCAlciAhPSAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF0dHIsIGF0dHJfdmFsdWUsIHZhbHVlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKIAogICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19waGVsbG9fXycsICdfX3BoZWxsb19fLnNwYW0nKSwgXAogICAgICAgICAgICAgIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19waGVsbG9fXy5zcGFtJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fLnNwYW0nLCAnX19maWxlX18nOiAnPGZyb3plbj4nLAorICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19fcGhlbGxvX18uc3BhbScsCiAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywKLSAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJ9CisgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihtb2R1bGUsIGF0dHIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyX3ZhbHVlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgX19waGVsbG9fXy5zcGFtLiVzLCAlciAhPSAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF0dHIsIGF0dHJfdmFsdWUsIHZhbHVlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19faGVsbG9fXycpLCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUxID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX2hlbGxvX18nKQogICAgICAgICAgICAgbW9kdWxlMiA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUxIGlzIG1vZHVsZTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSGVsbG8gd29ybGQhXG5IZWxsbyB3b3JsZCFcbicpCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcihzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19faGVsbG9fXycpLCBjYXB0dXJlZF9zdGRvdXQoKToKKyAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2R1bGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPG1vZHVsZSAnX19oZWxsb19fJyAoZnJvemVuKT4iKQorCiAgICAgZGVmIHRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBObyB3YXkgdG8gdHJpZ2dlciBhbiBlcnJvciBpbiBhIGZyb3plbiBtb2R1bGUuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CiAgICAgICAgIGFzc2VydCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIuZmluZF9tb2R1bGUoJ19ub3RfcmVhbCcpIGlzIE5vbmUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfbm90X3JlYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnX25vdF9yZWFsJykKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzgsNyArOTMsNyBAQAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgU2hvdWxkIGFsd2F5cyByZXR1cm4gTm9uZS4KICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmdldF9zb3VyY2UoJ19faGVsbG9fXycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byB0ZWxsIHdoYXQgaXMgYSBwYWNrYWdlLgpAQCAtODYsMTQgKzEwMSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAoJ19fcGhlbGxvX18uc3BhbScsIEZhbHNlKSkKICAgICAgICAgZm9yIG5hbWUsIGlzX3BhY2thZ2UgaW4gdGVzdF9mb3I6CiAgICAgICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIuaXNfcGFja2FnZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wocmVzdWx0KSA9PSBpc19wYWNrYWdlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKHJlc3VsdCksIGlzX3BhY2thZ2UpCiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICAjIFJhaXNlIEltcG9ydEVycm9yIGZvciBtb2R1bGVzIHRoYXQgYXJlIG5vdCBmcm96ZW4uCiAgICAgICAgIGZvciBtZXRoX25hbWUgaW4gKCdnZXRfY29kZScsICdnZXRfc291cmNlJywgJ2lzX3BhY2thZ2UnKToKICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIobWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLCBtZXRoX25hbWUpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIG1ldGhvZCgnaW1wb3J0bGliJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdpbXBvcnRsaWInKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy9fX2luaXRfXy5weQppbmRleCA4ZDdjNDlkLi4zNjZlNTMxIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmltcG9ydF8nLCBkaXJlY3RvcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CmluZGV4IDUwNTZhZTUuLjc4M2NkZTEgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC02Nyw3ICs2Nyw3IEBACiAKICAgICBkZWYgdGVzdF9idW5rX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgIGdsb2JhbHMgPSB7J19fcGFja2FnZV9fJzogNDJ9Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJycsIGdsb2JhbHMsIHt9LCBbJ3JlbGltcG9ydCddLCAxKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNGNkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CkBAIC0wLDAgKzEsNjcgQEAKK2Zyb20gLi4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3Rlc3RfdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsCitpbXBvcnQgaW1wCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBCYWRMb2FkZXJGaW5kZXI6CisgICAgYmFkID0gJ2ZpbmUuYm9ndXMnCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGgpOgorICAgICAgICBpZiBmdWxsbmFtZSA9PSBjbHMuYmFkOgorICAgICAgICAgICAgcmV0dXJuIGNscworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBsb2FkX21vZHVsZShjbHMsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgZnVsbG5hbWUgPT0gY2xzLmJhZDoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdJIGNhbm5vdCBiZSBsb2FkZWQhJykKKworCitjbGFzcyBBUElUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgQVBJLXNwZWNpZmljIGRldGFpbHMgZm9yIF9faW1wb3J0X18gKGUuZy4gcmFpc2luZyB0aGUgcmlnaHQKKyAgICBleGNlcHRpb24gd2hlbiBwYXNzaW5nIGluIGFuIGludCBmb3IgdGhlIG1vZHVsZSBuYW1lKS4iIiIKKworICAgIGRlZiB0ZXN0X25hbWVfcmVxdWlyZXNfcnBhcml0aW9uKHNlbGYpOgorICAgICAgICAjIFJhaXNlIFR5cGVFcnJvciBpZiBhIG5vbi1zdHJpbmcgaXMgcGFzc2VkIGluIGZvciB0aGUgbW9kdWxlIG5hbWUuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuaW1wb3J0Xyg0MikKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2xldmVsKHNlbGYpOgorICAgICAgICAjIFJhaXNlIFZhbHVlRXJyb3Igd2hlbiBhIG5lZ2F0aXZlIGxldmVsIGlzIHNwZWNpZmllZC4KKyAgICAgICAgIyBQRVAgMzI4IGRpZCBhd2F5IHdpdGggc3lzLm1vZHVsZSBOb25lIGVudHJpZXMgYW5kIHRoZSBhbWJpZ3VpdHkgb2YKKyAgICAgICAgIyBhYnNvbHV0ZS9yZWxhdGl2ZSBpbXBvcnRzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5pbXBvcnRfKCdvcycsIGdsb2JhbHMoKSwgbGV2ZWw9LTEpCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9mcm9tbGlzdF9lbnRyeShzZWxmKToKKyAgICAgICAgIyBJZiBzb21ldGhpbmcgaW4gZnJvbWxpc3QgZG9lc24ndCBleGlzdCwgdGhhdCdzIG9rYXkuCisgICAgICAgICMgaXNzdWUxNTcxNQorICAgICAgICBtb2QgPSBpbXAubmV3X21vZHVsZSgnZmluZScpCisgICAgICAgIG1vZC5fX3BhdGhfXyA9IFsnWFhYJ10KKyAgICAgICAgd2l0aCBpbXBvcnRsaWJfdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W0JhZExvYWRlckZpbmRlcl0pOgorICAgICAgICAgICAgd2l0aCBpbXBvcnRsaWJfdGVzdF91dGlsLnVuY2FjaGUoJ2ZpbmUnKToKKyAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZmluZSddID0gbW9kCisgICAgICAgICAgICAgICAgdXRpbC5pbXBvcnRfKCdmaW5lJywgZnJvbWxpc3Q9Wydub3QgaGVyZSddKQorCisgICAgZGVmIHRlc3RfZnJvbWxpc3RfbG9hZF9lcnJvcl9wcm9wYWdhdGVzKHNlbGYpOgorICAgICAgICAjIElmIHNvbWV0aGluZyBpbiBmcm9tbGlzdCB0cmlnZ2VycyBhbiBleGNlcHRpb24gbm90IHJlbGF0ZWQgdG8gbm90CisgICAgICAgICMgZXhpc3RpbmcsIGxldCB0aGF0IGV4Y2VwdGlvbiBwcm9wYWdhdGUuCisgICAgICAgICMgaXNzdWUxNTMxNgorICAgICAgICBtb2QgPSBpbXAubmV3X21vZHVsZSgnZmluZScpCisgICAgICAgIG1vZC5fX3BhdGhfXyA9IFsnWFhYJ10KKyAgICAgICAgd2l0aCBpbXBvcnRsaWJfdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W0JhZExvYWRlckZpbmRlcl0pOgorICAgICAgICAgICAgd2l0aCBpbXBvcnRsaWJfdGVzdF91dGlsLnVuY2FjaGUoJ2ZpbmUnKToKKyAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZmluZSddID0gbW9kCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHV0aWwuaW1wb3J0XygnZmluZScsIGZyb21saXN0PVsnYm9ndXMnXSkKKworCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KEFQSVRlc3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQppbmRleCA0OGRjNjQzLi5iZjY4MDI3IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKQEAgLTM0LDggKzM0LDkgQEAKICAgICAgICAgbmFtZSA9ICd1c2luZ19Ob25lJwogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gTm9uZQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIGNyZWF0ZV9tb2NrKHNlbGYsICpuYW1lcywgcmV0dXJuXz1Ob25lKToKICAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCpuYW1lcykKQEAgLTY0LDcgKzY1LDggQEAKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgogICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpZChtb2R1bGUubW9kdWxlKSwgaWQoc3lzLm1vZHVsZXNbJ3BrZy5tb2R1bGUnXSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChtb2R1bGUubW9kdWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHN5cy5tb2R1bGVzWydwa2cubW9kdWxlJ10pKQogCiAgICAgIyBTZWUgdGVzdF91c2luZ19jYWNoZV9hZnRlcl9sb2FkZXIoKSBmb3IgcmVhc29uaW5nLgogICAgIEBpbXBvcnRfdXRpbC5pbXBvcnRsaWJfb25seQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKaW5kZXggN2VjZGUwMy4uYzE2YzMzNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTEsNiArMSw3IEBACiAiIiJUZXN0IHRoYXQgdGhlIHNlbWFudGljcyByZWxhdGluZyB0byB0aGUgJ2Zyb21saXN0JyBhcmd1bWVudCBhcmUgY29ycmVjdC4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAoraW1wb3J0IGltcAogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFJldHVyblZhbHVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTM4LDExICszOSw5IEBACiAgICAgW29iamVjdCBjYXNlXS4gVGhpcyBpcyBldmVuIHRydWUgaWYgdGhlIG9iamVjdCBkb2VzIG5vdCBleGlzdCBbYmFkIG9iamVjdF0uCiAKICAgICBJZiBhIHBhY2thZ2UgaXMgYmVpbmcgaW1wb3J0ZWQsIHRoZW4gd2hhdCBpcyBsaXN0ZWQgaW4gZnJvbWxpc3QgbWF5IGJlCi0gICAgdHJlYXRlZCBhcyBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBbbW9kdWxlXS4gQnV0IG9uY2UgYWdhaW4sIGV2ZW4gaWYKLSAgICBzb21ldGhpbmcgaW4gZnJvbWxpc3QgZG9lcyBub3QgZXhpc3QgYXMgYSBtb2R1bGUsIG5vIGVycm9yIGlzIHJhaXNlZAotICAgIFtubyBtb2R1bGVdLiBBbmQgdGhpcyBleHRlbmRzIHRvIHdoYXQgaXMgY29udGFpbmVkIGluIF9fYWxsX18gd2hlbiAnKicgaXMKLSAgICBpbXBvcnRlZCBbdXNpbmcgKl0uIEFuZCAnKicgZG9lcyBub3QgbmVlZCB0byBiZSB0aGUgb25seSBuYW1lIGluIHRoZQotICAgIGZyb21saXN0IFt1c2luZyAqIHdpdGggb3RoZXJzXS4KKyAgICB0cmVhdGVkIGFzIGEgbW9kdWxlIHRvIGJlIGltcG9ydGVkIFttb2R1bGVdLiBBbmQgdGhpcyBleHRlbmRzIHRvIHdoYXQgaXMKKyAgICBjb250YWluZWQgaW4gX19hbGxfXyB3aGVuICcqJyBpcyBpbXBvcnRlZCBbdXNpbmcgKl0uIEFuZCAnKicgZG9lcyBub3QgbmVlZAorICAgIHRvIGJlIHRoZSBvbmx5IG5hbWUgaW4gdGhlIGZyb21saXN0IFt1c2luZyAqIHdpdGggb3RoZXJzXS4KIAogICAgICIiIgogCkBAIC01Myw3ICs1Miw3IEBACiAgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnbW9kdWxlJywgZnJvbWxpc3Q9WydhdHRyJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdtb2R1bGUnKQogCi0gICAgZGVmIHRlc3RfdW5leGlzdGVudF9vYmplY3Qoc2VsZik6CisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfb2JqZWN0KHNlbGYpOgogICAgICAgICAjIFtiYWQgb2JqZWN0XQogICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdtb2R1bGUnKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgpAQCAtNzAsMTMgKzY5LDE4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnbW9kdWxlJykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUubW9kdWxlLl9fbmFtZV9fLCAncGtnLm1vZHVsZScpCiAKLSAgICBkZWYgdGVzdF9ub19tb2R1bGVfZnJvbV9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFtubyBtb2R1bGVdCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycpIGFzIGltcG9ydGVyOgorICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIEltcG9ydEVycm9yIGJlY2F1c2UgaXQgdHJpZXMgdG8gaW1wb3J0CisgICAgICAgICMgYSBtb2R1bGUgd2hpY2ggZG9lc24ndCBleGlzdCwgdGhhdCBzaG91bGQgbGV0IHRoZSBJbXBvcnRFcnJvcgorICAgICAgICAjIHByb3BhZ2F0ZS4KKyAgICAgICAgZGVmIG1vZHVsZV9jb2RlKCk6CisgICAgICAgICAgICBpbXBvcnQgaV9kb19ub3RfZXhpc3QKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLm1vZCc6IG1vZHVsZV9jb2RlfSkgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cnLCBmcm9tbGlzdD0nbm9uX2V4aXN0ZW50JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKG1vZHVsZSwgJ25vbl9leGlzdGVudCcpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJywgZnJvbWxpc3Q9Wydtb2QnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpX2RvX25vdF9leGlzdCcsIGV4Yy5leGNlcHRpb24ubmFtZSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2QnKSBhcyBpbXBvcnRlcjoKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQppbmRleCAzYjEzMGM5Li40ZDg1ZjgwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CkBAIC0xLDcgKzEsMTAgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAoraW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCitpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiAKIGNsYXNzIENhbGxpbmdPcmRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zMyw2ICszNiwyMSBAQAogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ZpcnN0LCBzZWNvbmRdKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcG9ydF91dGlsLmltcG9ydF8obW9kX25hbWUpLCA0MikKIAorICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgorICAgICAgICAjIFJhaXNlIGFuIEltcG9ydFdhcm5pbmcgaWYgc3lzLm1ldGFfcGF0aCBpcyBlbXB0eS4KKyAgICAgICAgbW9kdWxlX25hbWUgPSAnbm90aGluZycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtdKToKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGltcG9ydGxpYi5fYm9vdHN0cmFwLl9maW5kX21vZHVsZSgnbm90aGluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKKwogCiBjbGFzcyBDYWxsU2lnbmF0dXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjQsNyArODIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGt3YXJncyksIDApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCBtb2RfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXJnc1sxXSBpcyBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFyZ3NbMV0pCiAKICAgICBkZWYgdGVzdF93aXRoX3BhdGgoc2VsZik6CiAgICAgICAgICMgW3BhdGggc2V0XQpAQCAtODQsNyArMTAyLDcgQEAKICAgICAgICAgICAgICAgICAjIEFzc3VtaW5nIGFsbCBhcmd1bWVudHMgYXJlIHBvc2l0aW9uYWwuCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBrd2FyZ3MpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCBtb2RfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXJnc1sxXSBpcyBwYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1sxXSwgcGF0aCkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmExOGRjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CkBAIC0wLDAgKzEsMTEyIEBACitmcm9tIC4uIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworY2xhc3MgUGFyZW50TW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiSW1wb3J0aW5nIGEgc3VibW9kdWxlIHNob3VsZCBpbXBvcnQgdGhlIHBhcmVudCBtb2R1bGVzLiIiIgorCisgICAgZGVmIHRlc3RfaW1wb3J0X3BhcmVudChzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwa2cnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJlbnQoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9pbXBvcnRpbmdfY2hpbGQoc2VsZik6CisgICAgICAgIGRlZiBfX2luaXRfXygpOgorICAgICAgICAgICAgaW1wb3J0IHBrZy5tb2R1bGUKKyAgICAgICAgICAgIDEvMAorICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnJzogX19pbml0X199KQorICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BrZy5tb2R1bGUnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19wYXJlbnRfYWZ0ZXJfcmVsYXRpdmVfaW1wb3J0aW5nX2NoaWxkKHNlbGYpOgorICAgICAgICBkZWYgX19pbml0X18oKToKKyAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgbW9kdWxlCisgICAgICAgICAgICAxLzAKKyAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZyc6IF9faW5pdF9ffSkKKyAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHJhaXNlcyBJbXBvcnRFcnJvciBvbiB0aGUgImZyb20gLiBpbXBvcnQgbW9kdWxlIgorICAgICAgICAgICAgICAgICAgICAjIGxpbmUsIG5vdCBzdXJlIHdoeS4KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgIyBYWFggRmFsc2UKKyAgICAgICAgICAgICAgICAjc2VsZi5hc3NlcnRJbigncGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19wYXJlbnRfYWZ0ZXJfZG91YmxlX3JlbGF0aXZlX2ltcG9ydGluZ19jaGlsZChzZWxmKToKKyAgICAgICAgZGVmIF9faW5pdF9fKCk6CisgICAgICAgICAgICBmcm9tIC4uc3VicGtnIGltcG9ydCBtb2R1bGUKKyAgICAgICAgICAgIDEvMAorICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3VicGtnLl9faW5pdF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwa2cuc3VicGtnLm1vZHVsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5zdWJwa2cnOiBfX2luaXRfX30pCisgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoWmVyb0RpdmlzaW9uRXJyb3IsIEltcG9ydEVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyByYWlzZXMgSW1wb3J0RXJyb3Igb24gdGhlICJmcm9tIC4uc3VicGtnIGltcG9ydCBtb2R1bGUiCisgICAgICAgICAgICAgICAgICAgICMgbGluZSwgbm90IHN1cmUgd2h5LgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cuc3VicGtnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cuc3VicGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoWmVyb0RpdmlzaW9uRXJyb3IsIEltcG9ydEVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5zdWJwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cuc3VicGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgIyBYWFggRmFsc2UKKyAgICAgICAgICAgICAgICAjc2VsZi5hc3NlcnRJbigncGtnLnN1YnBrZy5tb2R1bGUnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9ub3RfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gaW1wb3J0IGEgc3VibW9kdWxlIGZyb20gYSBub24tcGFja2FnZSBzaG91bGQgcmFpc2UgSW1wb3J0RXJyb3IuCisgICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihzeXMsICdfX3BhdGhfXycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0Xygnc3lzLm5vX3N1Ym1vZHVsZXNfaGVyZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdzeXMubm9fc3VibW9kdWxlc19oZXJlJykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9ub3RfcGFja2FnZV9idXRfc2lkZV9lZmZlY3RzKHNlbGYpOgorICAgICAgICAjIElmIGEgbW9kdWxlIGluamVjdHMgc29tZXRoaW5nIGludG8gc3lzLm1vZHVsZXMgYXMgYSBzaWRlLWVmZmVjdCwgdGhlbgorICAgICAgICAjIHBpY2sgdXAgb24gdGhhdCBmYWN0LgorICAgICAgICBuYW1lID0gJ21vZCcKKyAgICAgICAgc3VibmFtZSA9IG5hbWUgKyAnLmInCisgICAgICAgIGRlZiBtb2R1bGVfaW5qZWN0aW9uKCk6CisgICAgICAgICAgICBzeXMubW9kdWxlc1tzdWJuYW1lXSA9ICd0b3RhbCBidW5rJworICAgICAgICBtb2NrX21vZHVsZXMgPSB1dGlsLm1vY2tfbW9kdWxlcygnbW9kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydtb2QnOiBtb2R1bGVfaW5qZWN0aW9ufSkKKyAgICAgICAgd2l0aCBtb2NrX21vZHVsZXMgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKHN1Ym5hbWUpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxvYWQoc3VibmFtZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChQYXJlbnRNb2R1bGVUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MmI3ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpAQCAtMCwwICsxLDEyMCBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBpbXBvcnRfbW9kdWxlCitmcm9tIC4uIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCB6aXBpbXBvcnQKKworCitjbGFzcyBGaW5kZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgUGF0aEZpbmRlci4iIiIKKworICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgVGVzdCBOb25lIHJldHVybmVkIHVwb24gbm90IGZpbmRpbmcgYSBzdWl0YWJsZSBmaW5kZXIuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpKQorCisgICAgZGVmIHRlc3Rfc3lzX3BhdGgoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoIGlzIHVzZWQgd2hlbiAncGF0aCcgaXMgTm9uZS4KKyAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgdXNlZC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KKyAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgdXNlZC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKworICAgIGRlZiB0ZXN0X2VtcHR5X2xpc3Qoc2VsZik6CisgICAgICAgICMgQW4gZW1wdHkgbGlzdCBzaG91bGQgbm90IGNvdW50IGFzIGFza2luZyBmb3Igc3lzLnBhdGguCisgICAgICAgIG1vZHVsZSA9ICdtb2R1bGUnCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnbW9kdWxlJywgW10pKQorCisgICAgZGVmIHRlc3RfcGF0aF9ob29rcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaG9va3MgaXMgdXNlZC4KKyAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgc2V0LgorICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKKyAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCisgICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdLCBpbXBvcnRlcikKKworICAgIGRlZiB0ZXN0X2VtcHR5X3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGlmIHN5cy5wYXRoX2hvb2tzIGlzIGVtcHR5IGEgd2FybmluZyBpcyByYWlzZWQsCisgICAgICAgICMgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgZ2V0cyBOb25lIHNldCwgYW5kIFBhdGhGaW5kZXIgcmV0dXJucyBOb25lLgorICAgICAgICBwYXRoX2VudHJ5ID0gJ2JvZ3VzX3BhdGgnCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17fSwgcGF0aF9ob29rcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoX2VudHJ5XSk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnb3MnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoX2VudHJ5XSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3Wy0xXS5jYXRlZ29yeSwgSW1wb3J0V2FybmluZykpCisKKyAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHNob3VsZCBjcmVhdGUgYSBmaW5kZXIgdXNpbmcgdGhlIGN3ZC4KKyAgICAgICAgcGF0aCA9ICcnCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKG9zLmN1cmRpciwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bcGF0aF0sIHBhdGhfaG9va3M9W2hvb2tdKToKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MuY3VyZGlyLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKKworICAgIGRlZiB0ZXN0X05vbmVfb25fc3lzX3BhdGgoc2VsZik6CisgICAgICAgICMgUHV0dGluZyBOb25lIGluIHN5cy5wYXRoWzBdIGNhdXNlZCBhbiBpbXBvcnQgcmVncmVzc2lvbiBmcm9tIFB5dGhvbgorICAgICAgICAjIDMuMjogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE2NTE0CisgICAgICAgIG5ld19wYXRoID0gc3lzLnBhdGhbOl0KKyAgICAgICAgbmV3X3BhdGguaW5zZXJ0KDAsIE5vbmUpCisgICAgICAgIG5ld19wYXRoX2ltcG9ydGVyX2NhY2hlID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCisgICAgICAgIG5ld19wYXRoX2ltcG9ydGVyX2NhY2hlLnBvcChOb25lLCBOb25lKQorICAgICAgICBuZXdfcGF0aF9ob29rcyA9IFt6aXBpbXBvcnQuemlwaW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuRmlsZUZpbmRlci5wYXRoX2hvb2soCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqX2Jvb3RzdHJhcC5fZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKSldCisgICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQorICAgICAgICBlbWFpbCA9IHN5cy5tb2R1bGVzLnBvcCgnZW1haWwnLCBtaXNzaW5nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1zeXMubWV0YV9wYXRoWzpdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPW5ld19wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2ltcG9ydGVyX2NhY2hlPW5ld19wYXRoX2ltcG9ydGVyX2NhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPW5ld19wYXRoX2hvb2tzKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfbW9kdWxlKCdlbWFpbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgTW9kdWxlVHlwZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGVtYWlsIGlzIG5vdCBtaXNzaW5nOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydlbWFpbCddID0gZW1haWwKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChGaW5kZXJUZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQppbmRleCBhMGY2YjJkLi40NTY5YzI2IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTE5Myw2ICsxOTMsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnX19ydW5weV9wa2dfXy51bmNsZS5jb3VzaW4nKQogICAgICAgICBzZWxmLnJlbGF0aXZlX2ltcG9ydF90ZXN0KGNyZWF0ZSwgZ2xvYmFsc18sIGNhbGxiYWNrKQogCisgICAgZGVmIHRlc3RfaW1wb3J0X3JlbGF0aXZlX2ltcG9ydF9ub19mcm9tbGlzdChzZWxmKToKKyAgICAgICAgIyBJbXBvcnQgYSByZWxhdGl2ZSBtb2R1bGUgdy8gbm8gZnJvbWxpc3QuCisgICAgICAgIGNyZWF0ZSA9IFsnY3Jhc2guX19pbml0X18nLCAnY3Jhc2gubW9kJ10KKyAgICAgICAgZ2xvYmFsc18gPSBbeydfX3BhY2thZ2VfXyc6ICdjcmFzaCcsICdfX25hbWVfXyc6ICdjcmFzaCd9XQorICAgICAgICBkZWYgY2FsbGJhY2soZ2xvYmFsXyk6CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdjcmFzaCcpCisgICAgICAgICAgICBtb2QgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdtb2QnLCBnbG9iYWxfLCB7fSwgW10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgJ2NyYXNoLm1vZCcpCisgICAgICAgIHNlbGYucmVsYXRpdmVfaW1wb3J0X3Rlc3QoY3JlYXRlLCBnbG9iYWxzXywgY2FsbGJhY2spCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fZ2xvYmFscyhzZWxmKToKKyAgICAgICAgIyBObyBnbG9iYWxzIGZvciBhIHJlbGF0aXZlIGltcG9ydCBpcyBhbiBlcnJvci4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMnLCBsZXZlbD0xKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CmluZGV4IDY0OWM1ZWQuLjg2YWMwNjUgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YmUxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpAQCAtMCwwICsxLDE3IEBACisiIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KKworVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKK2ludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KK090aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCit0aGlzIHNjcmlwdC4KKworIiIiCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXworICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKKworICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NyUKY29weSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKY29weSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uM2VmOTdmMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfYWJjX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKaW5kZXggMzI0NTkwNy4uMGQ5MTJiNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfYWJjX2xvYWRlci5weQpAQCAtMzIsNiArMzIsOSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoCiAKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICc8bW9kdWxlPicKKwogCiBjbGFzcyBTb3VyY2VMb2FkZXJNb2NrKFNvdXJjZU9ubHlMb2FkZXJNb2NrKToKIApAQCAtNDAsOCArNDMsMTAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgbWFnaWM9aW1wLmdldF9tYWdpYygpKToKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXRoKQogICAgICAgICBzZWxmLmJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5wYXRoKQorICAgICAgICBzZWxmLnNvdXJjZV9zaXplID0gbGVuKHNlbGYuc291cmNlKQogICAgICAgICBkYXRhID0gYnl0ZWFycmF5KG1hZ2ljKQotICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9tdGltZSkpCisgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYuc291cmNlX3NpemUpKQogICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc2VsZi5zb3VyY2UsIHNlbGYucGF0aCwgJ2V4ZWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCkBAIC01Niw5ICs2MSw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAKLSAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKICAgICAgICAgYXNzZXJ0IHBhdGggPT0gc2VsZi5wYXRoCi0gICAgICAgIHJldHVybiBzZWxmLnNvdXJjZV9tdGltZQorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYuc291cmNlX210aW1lLCAnc2l6ZSc6IHNlbGYuc291cmNlX3NpemV9CiAKICAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CiAgICAgICAgIHNlbGYud3JpdHRlbltwYXRoXSA9IGJ5dGVzKGRhdGEpCkBAIC0xMDIsOSArMTA3LDEyIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAgICAgICAgICAgICBwYXRoID0gc3VwZXIoKS5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCisKIAogY2xhc3MgUHlMb2FkZXJDb21wYXRNb2NrKFB5TG9hZGVyTW9jayk6CiAKQEAgLTE0NiwxMSArMTU0LDEyIEBACiAgICAgICAgICAgICBzZWxmLmJ5dGVjb2RlX3RvX3BhdGhbbmFtZV0gPSBkYXRhWydwYXRoJ10KICAgICAgICAgICAgIG1hZ2ljID0gZGF0YS5nZXQoJ21hZ2ljJywgaW1wLmdldF9tYWdpYygpKQogICAgICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3dfbG9uZyhkYXRhLmdldCgnbXRpbWUnLCBzZWxmLmRlZmF1bHRfbXRpbWUpKQorICAgICAgICAgICAgc291cmNlX3NpemUgPSBpbXBvcnRsaWIuX3dfbG9uZyhsZW4oc2VsZi5zb3VyY2UpICYgMHhGRkZGRkZGRikKICAgICAgICAgICAgIGlmICdiYycgaW4gZGF0YToKICAgICAgICAgICAgICAgICBiYyA9IGRhdGFbJ2JjJ10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYmMgPSBzZWxmLmNvbXBpbGVfYmMobmFtZSkKLSAgICAgICAgICAgIHNlbGYubW9kdWxlX2J5dGVjb2RlW25hbWVdID0gbWFnaWMgKyBtdGltZSArIGJjCisgICAgICAgICAgICBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXSA9IG1hZ2ljICsgbXRpbWUgKyBzb3VyY2Vfc2l6ZSArIGJjCiAKICAgICBkZWYgY29tcGlsZV9iYyhzZWxmLCBuYW1lKToKICAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLm1vZHVsZV9wYXRocy5nZXQobmFtZSwgJzx0ZXN0PicpIG9yICc8dGVzdD4nCkBAIC0xOTgsNyArMjA3LDcgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIikKICAgICAgICAgICAgIGNvZGVfb2JqZWN0ID0gc3VwZXIoKS5nZXRfY29kZShuYW1lKQogICAgICAgICAgICAgYXNzZXJ0IGxlbih3KSA9PSAxCi0gICAgICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVfb2JqZWN0CiAKIGNsYXNzIFB5TG9hZGVyVGVzdHModGVzdGluZ19hYmMuTG9hZGVyVGVzdHMpOgpAQCAtMjE5LDcgKzIyOCw3IEBACiAgICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogcGF0aH0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICBzZWxmLmVxX2F0dHJzKG1vZHVsZSwgX19uYW1lX189bmFtZSwgX19maWxlX189cGF0aCwgX19wYWNrYWdlX189JycsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvYWRlcl9fPW1vY2spCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQpAQCAtMjMxLDcgKzI0MCw3IEBACiAgICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogcGF0aH0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICBzZWxmLmVxX2F0dHJzKG1vZHVsZSwgX19uYW1lX189bmFtZSwgX19maWxlX189cGF0aCwKICAgICAgICAgICAgICAgICBfX3BhdGhfXz1bb3MucGF0aC5kaXJuYW1lKHBhdGgpXSwgX19wYWNrYWdlX189bmFtZSwKICAgICAgICAgICAgICAgICBfX2xvYWRlcl9fPW1vY2spCkBAIC0yNTcsOCArMjY2LDggQEAKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgbG9hZGVkX21vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZWRfbW9kdWxlIGlzIG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeXMubW9kdWxlc1tuYW1lXSBpcyBtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlZF9tb2R1bGUsIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKICAgICAgICAgcmV0dXJuIG1vY2ssIG5hbWUKIAogICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CkBAIC0yNzEsNyArMjgwLDcgQEAKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLm1vZHVsZXNbbmFtZV0gaXMgbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tuYW1lXSwgbW9kdWxlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnYmxhaCcpKQogICAgICAgICByZXR1cm4gbW9jawogCkBAIC0yODIsNyArMjkxLDcgQEAKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBub3QgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICByZXR1cm4gbW9jawogCiAKQEAgLTM0Miw3ICszNTEsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWdpYywgaW1wLmdldF9tYWdpYygpKQogICAgICAgICBtdGltZSA9IGltcG9ydGxpYi5fcl9sb25nKG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzQ6OF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXRpbWUsIDEpCi0gICAgICAgIGJjID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bODpdCisgICAgICAgIHNvdXJjZV9zaXplID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bODoxMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9jay5zb3VyY2UpICYgMHhGRkZGRkZGRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIuX3JfbG9uZyhzb3VyY2Vfc2l6ZSkpCisgICAgICAgIGJjID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bMTI6XQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLCBtb2NrLmNvbXBpbGVfYmMobmFtZSkpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CkBAIC00MTIsOCArNDI0LDcgQEAKICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBkb250X3dyaXRlX2J5dGVjb2RlCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpIGlzIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgZG9udF93cml0ZV9ieXRlY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuYW1lIGluIG1vY2subW9kdWxlX2J5dGVjb2RlLCBkb250X3dyaXRlX2J5dGVjb2RlKQogCiAgICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGVfd3JpdHRlbihzZWxmKToKICAgICAgICAgc2VsZi5ydW5fdGVzdChUcnVlKQpAQCAtNDM4LDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBtb2NrLm1vZHVsZV9ieXRlY29kZSkKICAgICAgICAgbWFnaWMgPSBtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs6NF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWdpYywgaW1wLmdldF9tYWdpYygpKQogCkBAIC00NTEsNyArNDYyLDcgQEAKICAgICAgICAgICAgICAgICB7bmFtZTogeydwYXRoJzogJ3BhdGgvdG8vbW9kLmJ5dGVjb2RlJywgJ210aW1lJzogb2xkX210aW1lfX0pCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBtb2NrLm1vZHVsZV9ieXRlY29kZSkKICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCBQeVB5Y0xvYWRlck1vY2suZGVmYXVsdF9tdGltZSkKIApAQCAtNDY5LDggKzQ4MCw5IEBACiAgICAgICAgICAgICAgICAgeydwYXRoJzogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpLAogICAgICAgICAgICAgICAgICAnbWFnaWMnOiBiYWRfbWFnaWN9fQogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSwgYmMpCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCiAKICAgICBkZWYgdGVzdF9ub19ieXRlY29kZShzZWxmKToKICAgICAgICAgIyBNaXNzaW5nIGNvZGUgb2JqZWN0IGJ5dGVjb2RlIHNob3VsZCBsZWFkIHRvIGFuIEVPRkVycm9yLgpAQCAtNTE0LDggKzUyNiw5IEBACiAgICAgICAgICMgSWYgYWxsICpfcGF0aCBtZXRob2RzIHJldHVybiBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgbmFtZSA9ICdtb2QnCiAgICAgICAgIG1vY2sgPSBQeVB5Y0xvYWRlck1vY2soe25hbWU6IE5vbmV9KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3Rfc291cmNlX3BhdGhfSW1wb3J0RXJyb3Ioc2VsZik6CiAgICAgICAgICMgQW4gSW1wb3J0RXJyb3IgZnJvbSBzb3VyY2VfcGF0aCBzaG91bGQgdHJpZ2dlciBhbiBJbXBvcnRFcnJvci4KQEAgLTUzMSw3ICs1NDQsNyBAQAogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBvcy5wYXRoLmpvaW4oJ3BhdGgnLCAndG8nLCAnbW9kJyl9KQogICAgICAgICBiYWRfbWV0aCA9IHR5cGVzLk1ldGhvZFR5cGUocmFpc2VfSW1wb3J0RXJyb3IsIG1vY2spCiAgICAgICAgIG1vY2suYnl0ZWNvZGVfcGF0aCA9IGJhZF9tZXRoCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCiAKIApAQCAtNTkyLDE1ICs2MDUsMTcgQEAKICAgICAgICAgZGVmIHJhaXNlX0lPRXJyb3IocGF0aCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAgICAgICAgIHNlbGYubG9hZGVyLmdldF9kYXRhID0gcmFpc2VfSU9FcnJvcgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZWxmLmxvYWRlci5nZXRfc291cmNlKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgc2VsZi5uYW1lKQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBQcm9wZXJseSBkZXRlY3Qgd2hlbiBsb2FkaW5nIGEgcGFja2FnZS4KLSAgICAgICAgc2VsZi5zZXRVcChpc19wYWNrYWdlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSkpCiAgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSkpCisgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lICsgJy5fX2luaXRfXycpKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoZSBjb2RlIG9iamVjdCBpcyBjcmVhdGVkLgpAQCAtNjE1LDcgKzYzMCw3IEBACiAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShzZWxmLm5hbWUpCiAgICAgICAgICAgICBzZWxmLnZlcmlmeV9tb2R1bGUobW9kdWxlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYXRoX18sIFtvcy5wYXRoLmRpcm5hbWUoc2VsZi5wYXRoKV0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5uYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm5hbWUsIHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9zZXR0aW5ncyhzZWxmKToKICAgICAgICAgIyBfX3BhY2thZ2VfXyBuZWVkcyB0byBiZSBzZXQsIHdoaWxlIF9fcGF0aF9fIGlzIHNldCBvbiBpZiB0aGUgbW9kdWxlCkBAIC02NTYsNyArNjcxLDggQEAKICAgICAgICAgaWYgYnl0ZWNvZGVfd3JpdHRlbjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5jYWNoZWQsIHNlbGYubG9hZGVyLndyaXR0ZW4pCiAgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2VfbXRpbWUpKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9zaXplKSkKICAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRlci53cml0dGVuW3NlbGYuY2FjaGVkXSwgYnl0ZXMoZGF0YSkpCiAKQEAgLTc2MiwxNyArNzc4LDMxIEBACiAgICAgICAgIGV4cGVjdCA9IGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkuZGVjb2RlKHNvdXJjZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmdldF9zb3VyY2UobmFtZSksIGV4cGVjdCkKIAorCiBjbGFzcyBBYnN0cmFjdE1ldGhvZEltcGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0IHRoZSBjb25jcmV0ZSBhYnN0cmFjdG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuIiIiCiAKKyAgICBjbGFzcyBNZXRhUGF0aEZpbmRlcihhYmMuTWV0YVBhdGhGaW5kZXIpOgorICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aCkKKworICAgIGNsYXNzIFBhdGhFbnRyeUZpbmRlcihhYmMuUGF0aEVudHJ5RmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgorICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQorCisgICAgICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBfKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9sb2FkZXIoXykKKworICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKICAgICBjbGFzcyBMb2FkZXIoYWJjLkxvYWRlcik6CiAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICAgICBzdXBlcigpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQotCi0gICAgY2xhc3MgRmluZGVyKGFiYy5GaW5kZXIpOgotICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgXyk6Ci0gICAgICAgICAgICBzdXBlcigpLmZpbmRfbW9kdWxlKF8pCisgICAgICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgc3VwZXIoKS5tb2R1bGVfcmVwcihtb2R1bGUpCiAKICAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIsIGFiYy5SZXNvdXJjZUxvYWRlcik6CiAgICAgICAgIGRlZiBnZXRfZGF0YShzZWxmLCBfKToKQEAgLTg0Nyw3ICs4NzcsNyBAQAogICAgICAgICAjIFJlcXVpcmVkIGFic3RyYWN0bWV0aG9kcy4KICAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsICdnZXRfZmlsZW5hbWUnLCAnZ2V0X2RhdGEnKQogICAgICAgICAjIE9wdGlvbmFsIGFic3RyYWN0bWV0aG9kcy4KLSAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsJ3BhdGhfbXRpbWUnLCAnc2V0X2RhdGEnKQorICAgICAgICBzZWxmLnJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKGlucywncGF0aF9zdGF0cycsICdzZXRfZGF0YScpCiAKICAgICBkZWYgdGVzdF9QeUxvYWRlcihzZWxmKToKICAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLlB5TG9hZGVyKCksICdzb3VyY2VfcGF0aCcsCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKc2ltaWxhcml0eSBpbmRleCA3NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggNzM3NzdkZS4uMjQxMTczZiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSw3ICsxLDkgQEAKICIiIlRlc3QgY2FzZS1zZW5zaXRpdml0eSAoUEVQIDIzNSkuIiIiCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCitpbXBvcnQgaW1wCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKQEAgLTE5LDkgKzIxLDExIEBACiAgICAgYXNzZXJ0IG5hbWUgIT0gbmFtZS5sb3dlcigpCiAKICAgICBkZWYgZmluZChzZWxmLCBwYXRoKToKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcihwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUoc2VsZi5uYW1lKQogCiAgICAgZGVmIHNlbnNpdGl2aXR5X3Rlc3Qoc2VsZik6CkBAIC0zNyw2ICs0MSw5IEBACiAgICAgZGVmIHRlc3Rfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIHNlbnNpdGl2ZSwgaW5zZW5zaXRpdmUgPSBzZWxmLnNlbnNpdGl2aXR5X3Rlc3QoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2Vuc2l0aXZlLCAnbG9hZF9tb2R1bGUnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzZW5zaXRpdmUuZ2V0X2ZpbGVuYW1lKHNlbGYubmFtZSkpCkBAIC00NSw2ICs1Miw5IEBACiAgICAgZGVmIHRlc3RfaW5zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIHNlbnNpdGl2ZSwgaW5zZW5zaXRpdmUgPSBzZWxmLnNlbnNpdGl2aXR5X3Rlc3QoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2Vuc2l0aXZlLCAnbG9hZF9tb2R1bGUnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzZW5zaXRpdmUuZ2V0X2ZpbGVuYW1lKHNlbGYubmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IGM3YTdkOGYuLjkwZjlkMzAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpAQCAtMSw1ICsxLDYgQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBpbXBvcnRsaWIKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitpbXBvcnQgaW1wb3J0bGliLmFiYwogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKQEAgLTI0LDEyICsyNSw0OCBAQAogCiAgICAgIiIiCiAKKyAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9BUEkoc2VsZik6CisgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNwZWNpZmllZCB0aGF0IGFzc3VtZSBzZWxmLm5hbWUgaXMgZGVzaXJlZC4KKyAgICAgICAgY2xhc3MgVGVzdGVyTWl4aW4oaW1wb3J0bGliLmFiYy5Mb2FkZXIpOgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKTogcmV0dXJuIGZ1bGxuYW1lCisgICAgICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKTogcmV0dXJuICc8bW9kdWxlPicKKworICAgICAgICBjbGFzcyBUZXN0ZXIoaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLCBUZXN0ZXJNaXhpbik6CisgICAgICAgICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKTogcGFzcworCisgICAgICAgIG5hbWUgPSAnbW9kX25hbWUnCisgICAgICAgIGxvYWRlciA9IFRlc3RlcihuYW1lLCAnc29tZV9wYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBsb2FkZXIubG9hZF9tb2R1bGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBsb2FkZXIubG9hZF9tb2R1bGUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShsb2FkZXIubmFtZSArICdYWFgnKQorCisgICAgZGVmIHRlc3RfZ2V0X2ZpbGVuYW1lX0FQSShzZWxmKToKKyAgICAgICAgIyBJZiBmdWxsbmFtZSBpcyBub3Qgc2V0IHRoZW4gYXNzdW1lIHNlbGYucGF0aCBpcyBkZXNpcmVkLgorICAgICAgICBjbGFzcyBUZXN0ZXIoaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBnZXRfY29kZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgXyk6IHBhc3MKKworICAgICAgICBwYXRoID0gJ3NvbWVfcGF0aCcKKyAgICAgICAgbmFtZSA9ICdzb21lX25hbWUnCisgICAgICAgIGxvYWRlciA9IFRlc3RlcihuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aCwgbG9hZGVyLmdldF9maWxlbmFtZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUoTm9uZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgbG9hZGVyLmdldF9maWxlbmFtZShuYW1lICsgJ1hYWCcpCisKICAgICAjIFtiYXNpY10KICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3RlbXAnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3RlbXAnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfdGVtcCcsICdfX2ZpbGVfXyc6IG1hcHBpbmdbJ190ZW1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJ30KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgpAQCAtMzcsMTAgKzc0LDEwIEBACiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfcGtnLl9faW5pdF9fJykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ19wa2cnLAorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ19wa2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cuX19pbml0X18nXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3BrZycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ19wa2cnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3BrZycsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19wa2cnLCAnX19maWxlX18nOiBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ19wa2cuX19pbml0X18nXSldLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJ19wa2cnfQpAQCAtNTAsMTAgKzg3LDEwIEBACiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycsICdfcGtnLm1vZCcpYXMgbWFwcGluZzoKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ19wa2cubW9kJywKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1snX3BrZy5tb2QnXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3BrZy5tb2QnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfcGtnLm1vZCcgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdfcGtnLm1vZCcsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19wa2cubW9kJywgJ19fZmlsZV9fJzogbWFwcGluZ1snX3BrZy5tb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfcGtnJ30KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgpAQCAtNjUsMTkgKzEwMiwxNCBAQAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICBtb2R1bGVfaWQgPSBpZChtb2R1bGUpCiAgICAgICAgICAgICBtb2R1bGVfZGljdF9pZCA9IGlkKG1vZHVsZS5fX2RpY3RfXykKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nWydfdGVtcCddLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgidGVzdGluZ192YXIgPSA0MlxuIikKLSAgICAgICAgICAgICMgRm9yIGZpbGVzeXN0ZW1zIHdoZXJlIHRoZSBtdGltZSBpcyBvbmx5IHRvIGEgc2Vjb25kIGdyYW51bGFyaXR5LAotICAgICAgICAgICAgIyBldmVyeXRoaW5nIHRoYXQgaGFzIGhhcHBlbmVkIGFib3ZlIGNhbiBiZSB0b28gZmFzdDsKLSAgICAgICAgICAgICMgZm9yY2UgYW4gbXRpbWUgb24gdGhlIHNvdXJjZSB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgZGlmZmVyZW50Ci0gICAgICAgICAgICAjIHRoYW4gdGhlIG9yaWdpbmFsIG10aW1lLgotICAgICAgICAgICAgbG9hZGVyLnBhdGhfbXRpbWUgPSBzZWxmLmZha2VfbXRpbWUobG9hZGVyLnBhdGhfbXRpbWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdGluZ192YXInIGluIG1vZHVsZS5fX2RpY3RfXywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3RpbmdfdmFyJywgbW9kdWxlLl9fZGljdF9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdGluZ192YXInIG5vdCBpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfSIuZm9ybWF0KGxpc3QobW9kdWxlLl9fZGljdF9fLmtleXMoKSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzWydfdGVtcCddKQpAQCAtOTUsNyArMTI3LDcgQEAKICAgICAgICAgICAgICAgICBzZXRhdHRyKG9yaWdfbW9kdWxlLCBhdHRyLCB2YWx1ZSkKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW25hbWVdLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgnKysrIGJhZCBzeW50YXggKysrJykKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKICAgICAgICAgICAgIGZvciBhdHRyIGluIGF0dHJpYnV0ZXM6CkBAIC0xMDYsMTAgKzEzOCwxMCBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJz0nKQotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfdGVtcCcgbm90IGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignX3RlbXAnLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X2ZpbGVfZnJvbV9lbXB0eV9zdHJpbmdfZGlyKHNlbGYpOgogICAgICAgICAjIExvYWRpbmcgYSBtb2R1bGUgZm91bmQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgZW50cnkgb24gc3lzLnBhdGggc2hvdWxkCkBAIC0xMTksNyArMTUxLDcgQEAKICAgICAgICAgICAgIGZpbGUud3JpdGUoIiMgdGVzdCBmaWxlIGZvciBpbXBvcnRsaWIiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX3RlbXAnKToKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIGZpbGVfcGF0aCkKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBmaWxlX3BhdGgpCiAgICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX3BhdGgsIG1vZC5fX2ZpbGVfXykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3BhdGgpLApAQCAtMTQ1LDcgKzE3Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBnZXRhdHRyKGVycm5vLCAnRU9WRVJGTE9XJywgTm9uZSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHNldCBtb2RpZmljYXRpb24gdGltZSB0byBsYXJnZSBpbnRlZ2VyICh7fSkiLmZvcm1hdChlKSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICBtb2QgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrcy4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fY2FjaGVkX18sIGNvbXBpbGVkKQpAQCAtMTU5LDcgKzE5MSw3IEBACiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLmxvYWRlcihtb2R1bGVfbmFtZSwgZmlsZSkKICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlX25hbWUgaW4gc3lzLm1vZHVsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIG1hbmlwdWxhdGVfYnl0ZWNvZGUoc2VsZiwgbmFtZSwgbWFwcGluZywgbWFuaXB1bGF0b3IsICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1GYWxzZSk6CkBAIC0yMTUsMTAgKzI0NywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCisgICAgZGVmIF90ZXN0X3BhcnRpYWxfc2l6ZShzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQorICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQorCiAgICAgZGVmIF90ZXN0X25vX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgZmlsZV9wYXRoID0gbWFwcGluZ1snX3RlbXAnXSBpZiBub3QgZGVsX3NvdXJjZSBlbHNlIGJjX3BhdGgKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgpAQCAtMjI3LDE2ICsyNjYsMTggQEAKICAgICBkZWYgX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6OF0gKyBtYXJzaGFsLmR1bXBzKGInYWJjZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG1hcHBpbmdbJ190ZW1wJ10gaWYgbm90IGRlbF9zb3VyY2UgZWxzZSBieXRlY29kZV9wYXRoCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhmaWxlX3BhdGgsICdfdGVtcCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnX3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9iYWRfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6OF0gKyBiJzx0ZXN0PicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzoxMl0gKyBiJzx0ZXN0PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICBmaWxlX3BhdGggPSBtYXBwaW5nWydfdGVtcCddIGlmIG5vdCBkZWxfc291cmNlIGVsc2UgYnl0ZWNvZGVfcGF0aAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvcik6CkBAIC0yNTEsNyArMjkyLDcgQEAKIAogY2xhc3MgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0KEJhZEJ5dGVjb2RlVGVzdCk6CiAKLSAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyCisgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKIAogICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgpAQCAtMjYwLDcgKzMwMSw3IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9lbXB0eV9maWxlKHRlc3QpCiAKQEAgLTI2OCw3ICszMDksNyBAQAogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9tYWdpYyh0ZXN0KQogCkBAIC0yNzksNyArMzIwLDcgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X21hZ2ljX29ubHkodGVzdCkKIApAQCAtMzAxLDExICszNDIsMjIgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYmNfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihiY19wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfdGltZXN0YW1wKHRlc3QpCiAKICAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgZGVmIHRlc3RfcGFydGlhbF9zaXplKHNlbGYpOgorICAgICAgICAjIFdoZW4gdGhlIHNpemUgaXMgcGFydGlhbCwgcmVnZW5lcmF0ZSB0aGUgLnB5YywgZWxzZQorICAgICAgICAjIHJhaXNlIEVPRkVycm9yLgorICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBiY19wYXRoKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQorICAgICAgICAgICAgd2l0aCBvcGVuKGJjX3BhdGgsICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQorCisgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9zaXplKHRlc3QpCisKKyAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIG9ubHkgdGhlIG1hZ2ljIG51bWJlciBhbmQgdGltZXN0YW1wLCByYWlzZSBFT0ZFcnJvci4KICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKCkKQEAgLTM2NCwxOSArNDE2LDIzIEBACiAKIGNsYXNzIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3QoQmFkQnl0ZWNvZGVUZXN0KToKIAotICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZWxlc3NGaWxlTG9hZGVyCisgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyCiAKICAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgICAgICBzZWxmLl90ZXN0X2VtcHR5X2ZpbGUodGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfcGFydGlhbF9tYWdpYyhzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9tYWdpYyh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKICAgICBkZWYgdGVzdF9tYWdpY19vbmx5KHNlbGYpOgpAQCAtMzg4LDggKzQ0NCwxMCBAQAogCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgICAgICBzZWxmLl90ZXN0X2JhZF9tYWdpYyh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKQEAgLTQwMCw2ICs0NTgsMTMgQEAKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfdGltZXN0YW1wKHRlc3QsIGRlbF9zb3VyY2U9VHJ1ZSkKIAorICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oYnl0ZWNvZGVfcGF0aCwgbmFtZSkKKworICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfc2l6ZSh0ZXN0LCBkZWxfc291cmNlPVRydWUpCisKICAgICBkZWYgdGVzdF9ub19tYXJzaGFsKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vX21hcnNoYWwoZGVsX3NvdXJjZT1UcnVlKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNjMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQppbmRleCA3YjkwODhkLi44ZTQ5ODY4IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpAQCAtMSwxMCArMSwxNSBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljCi1pbXBvcnQgb3MKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogaW1wb3J0IGVycm5vCitpbXBvcnQgaW1wCitpbXBvcnQgb3MKIGltcG9ydCBweV9jb21waWxlCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogCkBAIC0zMywxMSArMzgsMTUgQEAKIAogICAgICIiIgogCisgICAgZGVmIGdldF9maW5kZXIoc2VsZiwgcm9vdCk6CisgICAgICAgIGxvYWRlcl9kZXRhaWxzID0gWyhtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpXQorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIocm9vdCwgKmxvYWRlcl9kZXRhaWxzKQorCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgcm9vdCwgbW9kdWxlKToKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihyb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbmRlcihyb290KS5maW5kX21vZHVsZShtb2R1bGUpCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgdGVzdCwgY3JlYXRlPU5vbmUsICosIGNvbXBpbGVfPU5vbmUsIHVubGluaz1Ob25lKToKICAgICAgICAgIiIiVGVzdCB0aGUgZmluZGluZyBvZiAndGVzdCcgd2l0aCB0aGUgY3JlYXRpb24gb2YgbW9kdWxlcyBsaXN0ZWQgaW4KQEAgLTEwMiwzOSArMTExLDIxIEBACiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmltcG9ydF8ocGtnX2RpciwgJ3BrZy5zdWInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAotICAgICMgW3N1YiBlbXB0eV0KLSAgICBkZWYgdGVzdF9lbXB0eV9zdWJfZGlyZWN0b3J5KHNlbGYpOgotICAgICAgICBjb250ZXh0ID0gc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViLl9faW5pdF9fJykKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgICAgICB3aXRoIGNvbnRleHQgYXMgbWFwcGluZzoKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsobWFwcGluZ1sncGtnLnN1Yi5fX2luaXRfXyddKQotICAgICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmRpcm5hbWUobWFwcGluZ1sncGtnLl9faW5pdF9fJ10pCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRXYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKLQogICAgICMgW3BhY2thZ2Ugb3ZlciBtb2R1bGVzXQogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfb3Zlcl9tb2R1bGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnX3RlbXAnCiAgICAgICAgIGxvYWRlciA9IHNlbGYucnVuX3Rlc3QobmFtZSwgeyd7MH0uX19pbml0X18nLmZvcm1hdChuYW1lKSwgbmFtZX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX19pbml0X18nIGluIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pbml0X18nLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnYmxhaCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBub3RoaW5nID0gc2VsZi5pbXBvcnRfKG1hcHBpbmdbJy5yb290J10sICdzZGZzYWRzYWRmJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0KLSAgICAjIFtlbXB0eSBkaXJdCi0gICAgZGVmIHRlc3RfZW1wdHlfZGlyKHNlbGYpOgotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgSW1wb3J0V2FybmluZykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0V2FybmluZyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW5fdGVzdCgncGtnJywgeydwa2cuX19pbml0X18nfSwgdW5saW5rPXsncGtnLl9faW5pdF9fJ30pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShub3RoaW5nKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nX2Zvcl9kaXIoc2VsZik6CiAgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyBmcm9tIHN5cy5wYXRoIG1lYW5zIHRvIHNlYXJjaCBpbiB0aGUgY3dkLgotICAgICAgICBmaW5kZXIgPSBfYm9vdHN0cmFwLl9GaWxlRmluZGVyKCcnLCBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGZpbmRlciA9IG1hY2hpbmVyeS5GaWxlRmluZGVyKCcnLCAobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSkKICAgICAgICAgd2l0aCBvcGVuKCdtb2QucHknLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICBmaWxlLndyaXRlKCIjIHRlc3QgZmlsZSBmb3IgaW1wb3J0bGliIikKICAgICAgICAgdHJ5OgpAQCAtMTQzLDYgKzEzNCw1MyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKCdtb2QucHknKQogCisgICAgZGVmIHRlc3RfaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICMgaW52YWxpZGF0ZV9jYWNoZXMoKSBzaG91bGQgcmVzZXQgdGhlIG10aW1lLgorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcignJywgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCisgICAgICAgIGZpbmRlci5fcGF0aF9tdGltZSA9IDQyCisgICAgICAgIGZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGVyLl9wYXRoX210aW1lLCAtMSkKKworICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTQ4NDYKKyAgICBkZWYgdGVzdF9kaXJfcmVtb3ZhbF9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgbW9kID0gJ21vZCcKKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2QpIGFzIG1hcHBpbmc6CisgICAgICAgICAgICBmaW5kZXIgPSBzZWxmLmdldF9maW5kZXIobWFwcGluZ1snLnJvb3QnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpbmRlci5maW5kX21vZHVsZShtb2QpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaW5kZXIuZmluZF9tb2R1bGUobW9kKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInLAorICAgICAgICAgICAgJ29zLmNobW9kKCkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbmVlZGVkIGFyZ3VtZW50cyB1bmRlciBXaW5kb3dzJykKKyAgICBkZWYgdGVzdF9ub19yZWFkX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTY3MzAKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCisgICAgICAgIG9yaWdpbmFsX21vZGUgPSBvcy5zdGF0KHRlbXBkaXIubmFtZSkuc3RfbW9kZQorICAgICAgICBkZWYgY2xlYW51cCh0ZW1wZGlyKToKKyAgICAgICAgICAgICIiIkNsZWFudXAgZnVuY3Rpb24gZm9yIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorCisgICAgICAgICAgICBTaW5jZSB3ZSBtdWNrIHdpdGggdGhlIHBlcm1pc3Npb25zLCB3ZSB3YW50IHRvIHNldCB0aGVtIGJhY2sgdG8KKyAgICAgICAgICAgIHRoZWlyIG9yaWdpbmFsIHZhbHVlcyB0byBtYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSBjYW4gYmUgcHJvcGVybHkKKyAgICAgICAgICAgIGNsZWFuZWQgdXAuCisKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgb3MuY2htb2QodGVtcGRpci5uYW1lLCBvcmlnaW5hbF9tb2RlKQorICAgICAgICAgICAgIyBJZiB0aGlzIGlzIG5vdCBleHBsaWNpdGx5IGNhbGxlZCB0aGVuIHRoZSBfX2RlbF9fIG1ldGhvZCBpcyB1c2VkLAorICAgICAgICAgICAgIyBidXQgc2luY2UgYWxyZWFkeSBtdWNraW5nIGFyb3VuZCBtaWdodCBhcyB3ZWxsIGV4cGxpY2l0bHkgY2xlYW4KKyAgICAgICAgICAgICMgdXAuCisgICAgICAgICAgICB0ZW1wZGlyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwLCB0ZW1wZGlyKQorICAgICAgICBvcy5jaG1vZCh0ZW1wZGlyLm5hbWUsIHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUikKKyAgICAgICAgZmluZGVyID0gc2VsZi5nZXRfZmluZGVyKHRlbXBkaXIubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoTm9uZSwgW10pLCBmaW5kZXIuZmluZF9sb2FkZXIoJ2RvZXNub3RleGlzdCcpKQorCisgICAgZGVmIHRlc3RfaWdub3JlX2ZpbGUoc2VsZik6CisgICAgICAgICMgSWYgYSBkaXJlY3RvcnkgZ290IGNoYW5nZWQgdG8gYSBmaWxlIGZyb20gdW5kZXJuZWF0aCB1cywgdGhlbiBkb24ndAorICAgICAgICAjIHdvcnJ5IGFib3V0IGxvb2tpbmcgZm9yIHN1Ym1vZHVsZXMuCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkgYXMgZmlsZV9vYmo6CisgICAgICAgICAgICBmaW5kZXIgPSBzZWxmLmdldF9maW5kZXIoZmlsZV9vYmoubmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIFtdKSwgZmluZGVyLmZpbmRfbG9hZGVyKCdkb2Vzbm90ZXhpc3QnKSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNzg3OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKQEAgLTAsMCArMSwzMiBAQAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCBpbXAKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFBhdGhIb29rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHRoZSBwYXRoIGhvb2sgZm9yIHNvdXJjZS4iIiIKKworICAgIGRlZiBwYXRoX2hvb2soc2VsZik6CisgICAgICAgIHJldHVybiBtYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2soKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKG1hcHBpbmdbJy5yb290J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkoJycpLCAnZmluZF9tb2R1bGUnKSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChQYXRoSG9va1Rlc3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggNzk0YTNkZi4uMGNhNTE5NSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKQEAgLTEsNiArMSw2IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKQEAgLTM1LDggKzM1LDggQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhzZWxmLm1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbc2VsZi5tb2R1bGVfbmFtZV0sICd3YicpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKHNlbGYubW9kdWxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdKQorICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKHNlbGYubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbc2VsZi5tb2R1bGVfbmFtZV0pCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCiAKICAgICBkZWYgY3JlYXRlX3NvdXJjZShzZWxmLCBlbmNvZGluZyk6CkBAIC05Nyw3ICs5Nyw3IEBACiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1ttb2R1bGVfbmFtZV0sICd3YicpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKG1vZHVsZV9uYW1lLAorICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKG1vZHVsZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbbW9kdWxlX25hbWVdKQogICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FiYy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggMGVjYmUzOS4uYzYyMGMzNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CkBAIC0zMCwxMCArMzAsMTcgQEAKICAgICAgICAgICAgICAgICJ7MH0gaXMgbm90IGEgc3VwZXJjbGFzcyBvZiB7MX0iLmZvcm1hdChzdXBlcmNsYXNzLCBzZWxmLl9fdGVzdCkpCiAKIAotY2xhc3MgRmluZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIE1ldGFQYXRoRmluZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuRmluZGVyXQogICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuUGF0aEZpbmRlcl0KKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXJdCisKKworY2xhc3MgUGF0aEVudHJ5RmluZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuRmluZGVyXQorICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LkZpbGVGaW5kZXJdCiAKIAogY2xhc3MgTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTUwLDcgKzU3LDcgQEAKIAogICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuTG9hZGVyXQogICAgIHN1YmNsYXNzZXMgPSBbYWJjLlB5TG9hZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLAotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJdCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwgbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJdCiAKIAogY2xhc3MgRXhlY3V0aW9uTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTU5LDkgKzY2LDE2IEBACiAgICAgc3ViY2xhc3NlcyA9IFthYmMuUHlMb2FkZXJdCiAKIAorY2xhc3MgRmlsZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLlJlc291cmNlTG9hZGVyLCBhYmMuRXhlY3V0aW9uTG9hZGVyXQorICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcl0KKworCiBjbGFzcyBTb3VyY2VMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5SZXNvdXJjZUxvYWRlciwgYWJjLkV4ZWN1dGlvbkxvYWRlcl0KKyAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyXQogCiAKIGNsYXNzIFB5TG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY2NjI5YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC0wLDAgKzEsMTg3IEBACitmcm9tIC4gaW1wb3J0IHV0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgSW1wb3J0TW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZS4iIiIKKworICAgIGRlZiB0ZXN0X21vZHVsZV9pbXBvcnQoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSB0b3AtbGV2ZWwgbW9kdWxlLgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgndG9wX2xldmVsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3RvcF9sZXZlbCcpCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUuCisgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKKyAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2UgdGhyb3VnaCBhIHJlbGF0aXZlIGltcG9ydC4KKyAgICAgICAgcGtnX25hbWUgPSAncGtnJworICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICBtb2R1bGVfbmFtZSA9ICdtb2QnCisgICAgICAgIGFic29sdXRlX25hbWUgPSAnezB9LnsxfScuZm9ybWF0KHBrZ19uYW1lLCBtb2R1bGVfbmFtZSkKKyAgICAgICAgcmVsYXRpdmVfbmFtZSA9ICcuezB9Jy5mb3JtYXQobW9kdWxlX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgYWJzb2x1dGVfbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocmVsYXRpdmVfbmFtZSwgcGtnX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIGFic29sdXRlX25hbWUpCisKKyAgICBkZWYgdGVzdF9kZWVwX3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgorICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYi5fX2luaXRfXycsICdhLmMnXQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYScpCisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4uYycsICdhLmInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnYS5jJykKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydF93aXRoX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lIHdpdGgKKyAgICAgICAgIyB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGdpdmVuLgorICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCisgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUsIHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X3dvX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgUmVsYXRpdmUgaW1wb3J0cyBjYW5ub3QgaGFwcGVuIHdpdGhvdXQgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBiZWluZworICAgICAgICAjIHNldC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy5zdXBwb3J0JykKKworCisgICAgZGVmIHRlc3RfbG9hZGVkX29uY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEzNTkxOiBNb2R1bGVzIHNob3VsZCBvbmx5IGJlIGxvYWRlZCBvbmNlIHdoZW4KKyAgICAgICAgIyBpbml0aWFsaXppbmcgdGhlIHBhcmVudCBwYWNrYWdlIGF0dGVtcHRzIHRvIGltcG9ydCB0aGUKKyAgICAgICAgIyBtb2R1bGUgY3VycmVudGx5IGJlaW5nIGltcG9ydGVkLgorICAgICAgICBiX2xvYWRfY291bnQgPSAwCisgICAgICAgIGRlZiBsb2FkX2EoKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQorICAgICAgICBkZWYgbG9hZF9iKCk6CisgICAgICAgICAgICBub25sb2NhbCBiX2xvYWRfY291bnQKKyAgICAgICAgICAgIGJfbG9hZF9jb3VudCArPSAxCisgICAgICAgIGNvZGUgPSB7J2EnOiBsb2FkX2EsICdhLmInOiBsb2FkX2J9CisgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iJ10KKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcywgbW9kdWxlX2NvZGU9Y29kZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYl9sb2FkX2NvdW50LCAxKQorCisKK2NsYXNzIEZpbmRMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKTogcmV0dXJuIG5hbWUsIHBhdGgKKworICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgorICAgICAgICAjIElmIGEgbW9kdWxlIHdpdGggX19sb2FkZXJfXyBpcyBpbiBzeXMubW9kdWxlcywgdGhlbiByZXR1cm4gaXQuCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIGZvdW5kID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlciwgZm91bmQpCisKKyAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19sb2FkZXJfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIyBJZiBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fIGlzIE5vbmUsIHJhaXNlIFZhbHVlRXJyb3IuCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gTm9uZQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICAjIFJldHVybiB0aGUgbG9hZGVyIGZvdW5kIG9uIHN5cy5tZXRhX3BhdGguCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBOb25lKSwgaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUpKQorCisgICAgZGVmIHRlc3Rfc3VjY2Vzc19wYXRoKHNlbGYpOgorICAgICAgICAjIFNlYXJjaGluZyBvbiBhIHBhdGggc2hvdWxkIHdvcmsuCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHBhdGggPSAncGF0aCB0byBzb21lIHBsYWNlJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSwgcGF0aCkpCisKKyAgICBkZWYgdGVzdF9ub3RoaW5nKHNlbGYpOgorICAgICAgICAjIE5vbmUgaXMgcmV0dXJuZWQgdXBvbiBmYWlsdXJlIHRvIGZpbmQgYSBsb2FkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGltcG9ydGxpYi5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKKworCitjbGFzcyBJbnZhbGlkYXRlQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2FsbGVkKHNlbGYpOgorICAgICAgICAjIElmIGRlZmluZWQgdGhlIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBjbGFzcyBJbnZhbGlkYXRpbmdOdWxsRmluZGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICppZ25vcmVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCisKKyAgICAgICAga2V5ID0gJ2dvYmxlZGVlZ29vaycKKyAgICAgICAgbWV0YV9pbnMgPSBJbnZhbGlkYXRpbmdOdWxsRmluZGVyKCkKKyAgICAgICAgcGF0aF9pbnMgPSBJbnZhbGlkYXRpbmdOdWxsRmluZGVyKCkKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5pbnNlcnQoMCwgbWV0YV9pbnMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLl9fZGVsaXRlbV9fKGtleSkpCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2tleV0gPSBwYXRoX2lucworICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMubWV0YV9wYXRoLnJlbW92ZShtZXRhX2lucykpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZXRhX2lucy5jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoX2lucy5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9tZXRob2RfbGFja2luZyhzZWxmKToKKyAgICAgICAgIyBUaGVyZSBzaG91bGQgYmUgbm8gaXNzdWVzIGlmIHRoZSBtZXRob2QgaXMgbm90IGRlZmluZWQuCisgICAgICAgIGtleSA9ICdnb2JibGVkZWVnb29rJworICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtrZXldID0gaW1wLk51bGxJbXBvcnRlcignYWJjJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuX19kZWxpdGVtX18oa2V5KSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgICMgU2hvdWxkbid0IHRyaWdnZXIgYW4gZXhjZXB0aW9uLgorCisKK2NsYXNzIEZyb3plbkltcG9ydGxpYlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25vX2Zyb3plbl9pbXBvcnRsaWIoc2VsZik6CisgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gaW1wb3J0IHcvbyBfZnJvemVuX2ltcG9ydGxpYiBiZWluZyBkZWZpbmVkLgorICAgICAgICBtb2R1bGUgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2ltcG9ydGxpYicsIGJsb2NrZWQ9WydfZnJvemVuX2ltcG9ydGxpYiddKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UobW9kdWxlLl9fbG9hZGVyX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIpKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KEltcG9ydE1vZHVsZVRlc3RzLAorICAgICAgICAgICAgICAgICBGaW5kTG9hZGVyVGVzdHMsCisgICAgICAgICAgICAgICAgIEludmFsaWRhdGVDYWNoZVRlc3RzLAorICAgICAgICAgICAgICAgICBGcm96ZW5JbXBvcnRsaWJUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzczYjExCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMCwwICsxLDEyOSBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKK2Vsc2U6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBsb2NrX3Rlc3RzCisKKworTG9ja1R5cGUgPSBfYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCitEZWFkbG9ja0Vycm9yID0gX2Jvb3RzdHJhcC5fRGVhZGxvY2tFcnJvcgorCisKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKGxvY2tfdGVzdHMuUkxvY2tUZXN0cyk6CisgICAgICAgIGxvY2t0eXBlID0gc3RhdGljbWV0aG9kKGxhbWJkYTogTG9ja1R5cGUoInNvbWVfbG9jayIpKQorCisgICAgICAgICMgX2lzX293bmVkKCkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9faXNfb3duZWQgPSBOb25lCisgICAgICAgICMgYWNxdWlyZShibG9ja2luZz1GYWxzZSkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF90cnlfYWNxdWlyZSA9IE5vbmUKKyAgICAgICAgdGVzdF90cnlfYWNxdWlyZV9jb250ZW5kZWQgPSBOb25lCisgICAgICAgICMgYHdpdGhgIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3Rfd2l0aCA9IE5vbmUKKyAgICAgICAgIyBhY3F1aXJlKHRpbWVvdXQ9Li4uKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3RpbWVvdXQgPSBOb25lCisgICAgICAgICMgX3JlbGVhc2Vfc2F2ZSgpIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfcmVsZWFzZV9zYXZlX3VuYWNxdWlyZWQgPSBOb25lCisKK2Vsc2U6CisgICAgY2xhc3MgTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIHBhc3MKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICJ0aHJlYWRzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKK2NsYXNzIERlYWRsb2NrQXZvaWRhbmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMC4wMDAwMDEpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCkKKworICAgIGRlZiBydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3Qoc2VsZiwgY3JlYXRlX2RlYWRsb2NrKToKKyAgICAgICAgTkxPQ0tTID0gMTAKKyAgICAgICAgbG9ja3MgPSBbTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgIGlmIGNyZWF0ZV9kZWFkbG9jazoKKyAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKKyAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgorICAgICAgICAgICAgIiIiVHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2suIFJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgICAgICBleGNlcHQgRGVhZGxvY2tFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIGEsIGIgPSBwYWlycy5wb3AoKQorICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJiID0gX2FjcXVpcmUoYikKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQorICAgICAgICAgICAgaWYgcmI6CisgICAgICAgICAgICAgICAgYi5yZWxlYXNlKCkKKyAgICAgICAgICAgIGlmIHJhOgorICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCisgICAgICAgIGxvY2tfdGVzdHMuQnVuY2goZiwgTlRIUkVBRFMpLndhaXRfZm9yX2ZpbmlzaGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQorICAgICAgICByZXR1cm4gcmVzdWx0cworCisgICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQorICAgICAgICAjIEF0IGxlYXN0IG9uZSBvZiB0aGUgdGhyZWFkcyBkZXRlY3RlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBvbiBpdHMKKyAgICAgICAgIyBzZWNvbmQgYWNxdWlyZSgpIGNhbGwuICBJdCBtYXkgYmUgc2V2ZXJhbCBvZiB0aGVtLCBiZWNhdXNlIHRoZQorICAgICAgICAjIGRlYWRsb2NrIGF2b2lkYW5jZSBtZWNoYW5pc20gaXMgY29uc2VydmF0aXZlLgorICAgICAgICBuYl9kZWFkbG9ja3MgPSByZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG5iX2RlYWRsb2NrcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIG5iX2RlYWRsb2NrcykKKworICAgIGRlZiB0ZXN0X25vX2RlYWRsb2NrKHNlbGYpOgorICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSkKKworCitjbGFzcyBMaWZldGltZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xvY2tfbGlmZXRpbWUoc2VsZik6CisgICAgICAgIG5hbWUgPSAieHl6enkiCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obmFtZSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorICAgICAgICBsb2NrID0gX2Jvb3RzdHJhcC5fZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obmFtZSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cigpKQorCisgICAgZGVmIHRlc3RfYWxsX2xvY2tzKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisKKworQHN1cHBvcnQucmVhcF90aHJlYWRzCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIExpZmV0aW1lVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYzg5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKQEAgLTAsMCArMSwyMDggQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCitpbXBvcnQgaW1wCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIE1vZHVsZUZvckxvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlci4iIiIKKworICAgIGRlZiByZXR1cm5fbW9kdWxlKHNlbGYsIG5hbWUpOgorICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKGxhbWJkYSBzZWxmLCBtb2R1bGU6IG1vZHVsZSkKKyAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBuYW1lKQorCisgICAgZGVmIHJhaXNlX2V4Y2VwdGlvbihzZWxmLCBuYW1lKToKKyAgICAgICAgZGVmIHRvX3dyYXAoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisgICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIodG9fd3JhcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnhuKHNlbGYsIG5hbWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X25ld19tb2R1bGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdoZW4gbm8gbW9kdWxlIGV4aXN0cyBpbiBzeXMubW9kdWxlcyBhIG5ldyBtb2R1bGUgaXMKKyAgICAgICAgIyBjcmVhdGVkLgorICAgICAgICBtb2R1bGVfbmFtZSA9ICdhLmIuYycKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShtb2R1bGVfbmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobW9kdWxlX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG1vZHVsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZXVzZWQgaWYgYWxyZWFkeSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgbmFtZSA9ICdhLmIuYycKKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ2EuYi5jJykKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dXJuZWRfbW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKKworICAgIGRlZiB0ZXN0X25ld19tb2R1bGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBtb2R1bGUgaXMgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzIGlmIGFkZGVkIGJ1dCBhbgorICAgICAgICAjIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICAgICAgIG5hbWUgPSAnYS5iLmMnCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3JlbG9hZF9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIGZhaWx1cmUgb24gcmVsb2FkIGxlYXZlcyB0aGUgbW9kdWxlIGluLXBsYWNlLgorICAgICAgICBuYW1lID0gJ2EuYi5jJworICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZSwgc3lzLm1vZHVsZXNbbmFtZV0pCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3JfYXR0cnMoc2VsZik6CisgICAgICAgIGRlZiBmeG4oc2VsZiwgbW9kdWxlKTogcGFzcworICAgICAgICB3cmFwcGVkID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihmeG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQorCisgICAgZGVmIHRlc3RfZmFsc2VfbW9kdWxlKHNlbGYpOgorICAgICAgICAjIElmIGZvciBzb21lIG9kZCByZWFzb24gYSBtb2R1bGUgaXMgY29uc2lkZXJlZCBmYWxzZSwgc3RpbGwgcmV0dXJuIGl0CisgICAgICAgICMgZnJvbSBzeXMubW9kdWxlcy4KKyAgICAgICAgY2xhc3MgRmFsc2VNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6IHJldHVybiBGYWxzZQorCisgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICBtb2R1bGUgPSBGYWxzZU1vZHVsZShuYW1lKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGUpCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgZ2l2ZW4gPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2l2ZW4sIG1vZHVsZSkKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfc2V0KHNlbGYpOgorICAgICAgICAjIF9fbmFtZV9fLCBfX2xvYWRlcl9fLCBhbmQgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCAod2hlbgorICAgICAgICAjIGlzX3BhY2thZ2UoKSBpcyBkZWZpbmVkOyB1bmRlZmluZWQgaW1wbGljaXRseSB0ZXN0ZWQgZWxzZXdoZXJlKS4KKyAgICAgICAgY2xhc3MgRmFrZUxvYWRlcjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpc19wYWNrYWdlKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wa2cgPSBpc19wYWNrYWdlCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGtnCisgICAgICAgICAgICBAdXRpbC5tb2R1bGVfZm9yX2xvYWRlcgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgICAgIG5hbWUgPSAncGtnLm1vZCcKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoRmFsc2UpCisgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sICdwa2cnKQorCisgICAgICAgIG5hbWUgPSAncGtnLnN1YicKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoVHJ1ZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgbmFtZSkKKworCitjbGFzcyBTZXRQYWNrYWdlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLnNldF9wYWNrYWdlLiIiIgorCisgICAgZGVmIHZlcmlmeShzZWxmLCBtb2R1bGUsIGV4cGVjdCk6CisgICAgICAgICIiIlZlcmlmeSB0aGUgbW9kdWxlIGhhcyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIF9fcGFja2FnZV9fIGFmdGVyCisgICAgICAgIHBhc3NpbmcgdGhyb3VnaCBzZXRfcGFja2FnZS4iIiIKKyAgICAgICAgZnhuID0gbGFtYmRhOiBtb2R1bGUKKyAgICAgICAgd3JhcHBlZCA9IHV0aWwuc2V0X3BhY2thZ2UoZnhuKQorICAgICAgICB3cmFwcGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIG1vZHVsZS5fX3BhY2thZ2VfXykKKworICAgIGRlZiB0ZXN0X3RvcF9sZXZlbChzZWxmKToKKyAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgYSB0b3AtbGV2ZWwgbW9kdWxlLgorICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgd2hlbiBwYWNrYWdlIGlzIHNldCB0byBOb25lLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kdWxlJykKKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQorICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQorCisgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgX19wYWNrYWdlX18gZm9yIGEgcGFja2FnZS4KKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ3BrZycpCisgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFsnPHBhdGg+J10KKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQorICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgX19wYWNrYWdlX18gZm9yIGEgbW9kdWxlIGluIGEgcGFja2FnZS4KKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ3BrZy5tb2QnKQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zZXR0aW5nX2lmX21pc3Npbmcoc2VsZik6CisgICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCBpZiBpdCBpcyBtaXNzaW5nLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kJykKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpOgorICAgICAgICAgICAgZGVsYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCisKKyAgICBkZWYgdGVzdF9sZWF2aW5nX2Fsb25lKHNlbGYpOgorICAgICAgICAjIElmIF9fcGFja2FnZV9fIGlzIHNldCBhbmQgbm90IE5vbmUgdGhlbiBsZWF2ZSBpdCBhbG9uZS4KKyAgICAgICAgZm9yIHZhbHVlIGluIChUcnVlLCBGYWxzZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kJykKKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHZhbHVlCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsIHZhbHVlKQorCisgICAgZGVmIHRlc3RfZGVjb3JhdG9yX2F0dHJzKHNlbGYpOgorICAgICAgICBkZWYgZnhuKG1vZHVsZSk6IHBhc3MKKyAgICAgICAgd3JhcHBlZCA9IHV0aWwuc2V0X3BhY2thZ2UoZnhuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19uYW1lX18sIGZ4bi5fX25hbWVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fcXVhbG5hbWVfXywgZnhuLl9fcXVhbG5hbWVfXykKKworCitjbGFzcyBSZXNvbHZlTmFtZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLiIiIgorCisgICAgZGVmIHRlc3RfYWJzb2x1dGUoc2VsZik6CisgICAgICAgICMgYmFjb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYmFjb24nLCB1dGlsLnJlc29sdmVfbmFtZSgnYmFjb24nLCBOb25lKSkKKworICAgIGRlZiB0ZXN0X2Fib3NsdXRlX3dpdGhpbl9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIGJhY29uIGluIHNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYmFjb24nLCB1dGlsLnJlc29sdmVfbmFtZSgnYmFjb24nLCAnc3BhbScpKQorCisgICAgZGVmIHRlc3Rfbm9fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuYmFjb24gaW4gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuYmFjb24nLCAnJykKKworICAgIGRlZiB0ZXN0X2luX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgLmJhY29uIGluIHNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3BhbS5lZ2dzLmJhY29uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLmJhY29uJywgJ3NwYW0uZWdncycpKQorCisgICAgZGVmIHRlc3Rfb3RoZXJfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuLmJhY29uIGluIHNwYW0uYmFjb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3BhbS5iYWNvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy4uYmFjb24nLCAnc3BhbS5lZ2dzJykpCisKKyAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6CisgICAgICAgICMgLi5iYWNvbiBpbiBzcGFtCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLi5iYWNvbicsICdzcGFtJykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgICAgICBNb2R1bGVGb3JMb2FkZXJUZXN0cywKKyAgICAgICAgICAgIFNldFBhY2thZ2VUZXN0cywKKyAgICAgICAgICAgIFJlc29sdmVOYW1lVGVzdHMKKyAgICAgICAgKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQppbmRleCA5M2I3Y2QyLi5lZjMyZjdkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CkBAIC0zNSw3ICszNSw3IEBACiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgIGlmIG5hbWUgaW4gKCdzeXMnLCAnbWFyc2hhbCcsICdpbXAnKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgImNhbm5vdCB1bmNhY2hlIHswfSBhcyBpdCB3aWxsIGJyZWFrIF9pbXBvcnRsaWIiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgICAgICAiY2Fubm90IHVuY2FjaGUgezB9Ii5mb3JtYXQobmFtZSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC0xMjQsNyArMTI0LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgICBpZiBmdWxsbmFtZSBpbiBzZWxmLm1vZHVsZV9jb2RlOgotICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlX2NvZGVbZnVsbG5hbWVdKCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlX2NvZGVbZnVsbG5hbWVdKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5tb2R1bGVzW2Z1bGxuYW1lXQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA0YjdlZTRlLi44MGRiMDNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC00MSwxMSArNDEsNiBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIAotdHJ5OgotICAgIDEvMAotZXhjZXB0OgotICAgIHRiID0gc3lzLmV4Y19pbmZvKClbMl0KLQogZ2l0ID0gbW9kLlN0dXBpZEdpdCgpCiAKIGNsYXNzIElzVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzksMjMgKzc0LDMxIEBACiAKIAogICAgIGRlZiB0ZXN0X2V4Y2x1ZGluZ19wcmVkaWNhdGVzKHNlbGYpOgorICAgICAgICBnbG9iYWwgdGIKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2J1aWx0aW4sICdzeXMuZXhpdCcpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNidWlsdGluLCAnW10uYXBwZW5kJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2NvZGUsICdtb2Quc3BhbS5fX2NvZGVfXycpCi0gICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmcmFtZSwgJ3RiLnRiX2ZyYW1lJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHRiID0gc3lzLmV4Y19pbmZvKClbMl0KKyAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmcmFtZSwgJ3RiLnRiX2ZyYW1lJykKKyAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXN0cmFjZWJhY2ssICd0YicpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnR2V0U2V0RGVzY3JpcHRvclR5cGUnKToKKyAgICAgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yKHR5cGUodGIudGJfZnJhbWUpLmZfbG9jYWxzKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgQ2xlYXIgdHJhY2ViYWNrIGFuZCBhbGwgdGhlIGZyYW1lcyBhbmQgbG9jYWwgdmFyaWFibGVzIGhhbmdpbmcgdG8gaXQuCisgICAgICAgICAgICB0YiA9IE5vbmUKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2Z1bmN0aW9uLCAnbW9kLnNwYW0nKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnVuY3Rpb24sICdtb2QuU3R1cGlkR2l0LmFidXNlJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21ldGhvZCwgJ2dpdC5hcmd1ZScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNtb2R1bGUsICdtb2QnKQotICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzdHJhY2ViYWNrLCAndGInKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZGF0YWRlc2NyaXB0b3IsICdjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdC5kZWZhdWx0X2ZhY3RvcnknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yLCAnKHggZm9yIHggaW4gcmFuZ2UoMikpJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLCAnZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUnKQotICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnR2V0U2V0RGVzY3JpcHRvclR5cGUnKToKLSAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUodGIudGJfZnJhbWUpLmZfbG9jYWxzJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IodHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMpKQogICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnTWVtYmVyRGVzY3JpcHRvclR5cGUnKToKICAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNtZW1iZXJkZXNjcmlwdG9yLCAnZGF0ZXRpbWUudGltZWRlbHRhLmRheXMnKQogICAgICAgICBlbHNlOgpAQCAtMjgyLDcgKzI4NSwxMCBAQAogICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbyksIE5vbmUpCiAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0gPSAoMSwgTm9uZSwgIk5vbmUiLCBjby5jb19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pKSwgZm4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSksIGZuKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0KIAogICAgIGRlZiB0ZXN0X2dldGZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRmaWxlKG1vZC5TdHVwaWRHaXQpLCBtb2QuX19maWxlX18pCkBAIC0zMDQsNyArMzEwLDcgQEAKICAgICAgICAgZ2V0bGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMKICAgICAgICAgZGVmIG1vbmtleShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSk6CiAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9PSBmbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGxpbmVzKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gbW9ua2V5CkBAIC00MDQsOCArNDEwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGluc3BlY3QuZmluZHNvdXJjZSwgY28pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGluc3BlY3QuZ2V0c291cmNlLCBjbykKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCBsaW5lcywgY28uY29fZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5maW5kc291cmNlKGNvKSwgKGxpbmVzLDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlKGNvKSwgbGluZXNbMF0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5maW5kc291cmNlKGNvKSwgKGxpbmVzLDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldHNvdXJjZShjbyksIGxpbmVzWzBdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0KIAogY2xhc3MgVGVzdE5vRU9MKEdldFNvdXJjZUJhc2UpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtNjYyLDYgKzY3MSwxMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2YnLCBiLmYpLCBpbnNwZWN0LmdldG1lbWJlcnMoYiwgaW5zcGVjdC5pc21ldGhvZCkpCiAKIAorX2dsb2JhbF9yZWYgPSBvYmplY3QoKQorY2xhc3MgVGVzdEdldENsb3N1cmVWYXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25hbWVfcmVzb2x1dGlvbihzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IG9mIHRoZSA0IGRpZmZlcmVudCByZXNvbHV0aW9uIG1lY2hhbmlzbXMKKyAgICAgICAgZGVmIGYobm9ubG9jYWxfcmVmKToKKyAgICAgICAgICAgIGRlZiBnKGxvY2FsX3JlZik6CisgICAgICAgICAgICAgICAgcHJpbnQobG9jYWxfcmVmLCBub25sb2NhbF9yZWYsIF9nbG9iYWxfcmVmLCB1bmJvdW5kX3JlZikKKyAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYoX2FyZykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2dlbmVyYXRvcl9jbG9zdXJlKHNlbGYpOgorICAgICAgICBkZWYgZihub25sb2NhbF9yZWYpOgorICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gZworICAgICAgICBfYXJnID0gb2JqZWN0KCkKKyAgICAgICAgbm9ubG9jYWxfdmFycyA9IHsibm9ubG9jYWxfcmVmIjogX2FyZ30KKyAgICAgICAgZ2xvYmFsX3ZhcnMgPSB7Il9nbG9iYWxfcmVmIjogX2dsb2JhbF9yZWZ9CisgICAgICAgIGJ1aWx0aW5fdmFycyA9IHsicHJpbnQiOiBwcmludH0KKyAgICAgICAgdW5ib3VuZF9uYW1lcyA9IHsidW5ib3VuZF9yZWYifQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKF9hcmcpKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2xvc3VyZShzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmKHNlbGYsIG5vbmxvY2FsX3JlZik6CisgICAgICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQobG9jYWxfcmVmLCBub25sb2NhbF9yZWYsIF9nbG9iYWxfcmVmLCB1bmJvdW5kX3JlZikKKyAgICAgICAgICAgICAgICByZXR1cm4gZworICAgICAgICBfYXJnID0gb2JqZWN0KCkKKyAgICAgICAgbm9ubG9jYWxfdmFycyA9IHsibm9ubG9jYWxfcmVmIjogX2FyZ30KKyAgICAgICAgZ2xvYmFsX3ZhcnMgPSB7Il9nbG9iYWxfcmVmIjogX2dsb2JhbF9yZWZ9CisgICAgICAgIGJ1aWx0aW5fdmFycyA9IHsicHJpbnQiOiBwcmludH0KKyAgICAgICAgdW5ib3VuZF9uYW1lcyA9IHsidW5ib3VuZF9yZWYifQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhDKCkuZihfYXJnKSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfbm9ubG9jYWxfdmFycyhzZWxmKToKKyAgICAgICAgIyBNb3JlIGNvbXBsZXggdGVzdHMgb2Ygbm9ubG9jYWwgcmVzb2x1dGlvbgorICAgICAgICBkZWYgX25vbmxvY2FsX3ZhcnMoZik6CisgICAgICAgICAgICByZXR1cm4gaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKS5ub25sb2NhbHMKKworICAgICAgICBkZWYgbWFrZV9hZGRlcih4KToKKyAgICAgICAgICAgIGRlZiBhZGQoeSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKyB5CisgICAgICAgICAgICByZXR1cm4gYWRkCisKKyAgICAgICAgZGVmIGN1cnJ5KGZ1bmMsIGFyZzEpOgorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSBhcmcyOiBmdW5jKGFyZzEsIGFyZzIpCisKKyAgICAgICAgZGVmIGxlc3NfdGhhbihhLCBiKToKKyAgICAgICAgICAgIHJldHVybiBhIDwgYgorCisgICAgICAgICMgVGhlIGluZmFtb3VzIFkgY29tYmluYXRvci4KKyAgICAgICAgZGVmIFkobGUpOgorICAgICAgICAgICAgZGVmIGcoZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlKGxhbWJkYSB4OiBmKGYpKHgpKQorICAgICAgICAgICAgWS5nX3JlZiA9IGcKKyAgICAgICAgICAgIHJldHVybiBnKGcpCisKKyAgICAgICAgZGVmIGNoZWNrX3lfY29tYmluYXRvcihmdW5jKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoZnVuYyksIHsnZic6IFkuZ19yZWZ9KQorCisgICAgICAgIGluYyA9IG1ha2VfYWRkZXIoMSkKKyAgICAgICAgYWRkX3R3byA9IG1ha2VfYWRkZXIoMikKKyAgICAgICAgZ3JlYXRlcl90aGFuX2ZpdmUgPSBjdXJyeShsZXNzX3RoYW4sIDUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhpbmMpLCB7J3gnOiAxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhhZGRfdHdvKSwgeyd4JzogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoZ3JlYXRlcl90aGFuX2ZpdmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYXJnMSc6IDUsICdmdW5jJzogbGVzc190aGFufSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycygobGFtYmRhIHg6IGxhbWJkYSB5OiB4ICsgeSkoMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsneCc6IDN9KQorICAgICAgICBZKGNoZWNrX3lfY29tYmluYXRvcikKKworICAgIGRlZiB0ZXN0X2dldGNsb3N1cmV2YXJzX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgX2VtcHR5ID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHt9LCBzZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGxhbWJkYTogVHJ1ZSksIF9lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGZvbyksIF9lbXB0eSkKKworICAgIGRlZiB0ZXN0X2dldGNsb3N1cmV2YXJzX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBUOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRjbG9zdXJldmFycywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzLCBsaXN0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMsIHt9KQorCisgICAgZGVmIF9wcml2YXRlX2dsb2JhbHMoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJkZWYgZigpOiBwcmludChwYXRoKSIiIgorICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHJldHVybiBuc1siZiJdLCBucworCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfZmFsbGJhY2soc2VsZik6CisgICAgICAgIGYsIG5zID0gc2VsZi5fcHJpdmF0ZV9nbG9iYWxzKCkKKyAgICAgICAgbnMucG9wKCJfX2J1aWx0aW5zX18iLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMoe30sIHt9LCB7InByaW50IjpwcmludH0sIHsicGF0aCJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfYXNfZGljdChzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBuc1siX19idWlsdGluc19fIl0gPSB7InBhdGgiOjF9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicGF0aCI6MX0sIHsicHJpbnQifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2FzX21vZHVsZShzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBuc1siX19idWlsdGluc19fIl0gPSBvcworICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMoe30sIHt9LCB7InBhdGgiOm9zLnBhdGh9LCB7InByaW50In0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKSwgZXhwZWN0ZWQpCisKKwogY2xhc3MgVGVzdEdldGNhbGxhcmdzRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBhc3NlcnRFcXVhbENhbGxBcmdzKHNlbGYsIGZ1bmMsIGNhbGxfcGFyYW1zX3N0cmluZywgbG9jcz1Ob25lKToKQEAgLTExNjksNiArMTMwMSw5NzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgcmVwcihzdGF0ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN0cihzdGF0ZSkpCiAKKyAgICBkZWYgdGVzdF9nZXRnZW5lcmF0b3Jsb2NhbHMoc2VsZik6CisgICAgICAgIGRlZiBlYWNoKGxzdCwgYT1Ob25lKToKKyAgICAgICAgICAgIGI9KDEsIDIsIDMpCisgICAgICAgICAgICBmb3IgdiBpbiBsc3Q6CisgICAgICAgICAgICAgICAgaWYgdiA9PSAzOgorICAgICAgICAgICAgICAgICAgICBjID0gMTIKKyAgICAgICAgICAgICAgICB5aWVsZCB2CisKKyAgICAgICAgbnVtYmVycyA9IGVhY2goWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM119KQorICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXSwgJ3YnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYic6ICgxLCAyLCAzKX0pCisgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdLCAndic6IDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdiJzogKDEsIDIsIDMpfSkKKyAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM10sICd2JzogMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2InOiAoMSwgMiwgMyksICdjJzogMTJ9KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLCB7fSkKKworICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2Fsc19lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIHlpZWxkX29uZSgpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICBvbmUgPSB5aWVsZF9vbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG9uZSksIHt9KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KG9uZSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMob25lKSwge30pCisKKyAgICBkZWYgdGVzdF9nZXRnZW5lcmF0b3Jsb2NhbHNfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIGxhbWJkYSB4OiBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzLCBzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsICgyLDMpKQorCisKK2NsYXNzIFRlc3RTaWduYXR1cmVPYmplY3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc2lnbmF0dXJlKGZ1bmMpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jKQorICAgICAgICByZXR1cm4gKHR1cGxlKChwYXJhbS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmRlZmF1bHQgaXMgcGFyYW0uZW1wdHkgZWxzZSBwYXJhbS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5hbm5vdGF0aW9uIGlzIHBhcmFtLmVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcGFyYW0uYW5ub3RhdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgIHN0cihwYXJhbS5raW5kKS5sb3dlcigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKSwKKyAgICAgICAgICAgICAgICAoLi4uIGlmIHNpZy5yZXR1cm5fYW5ub3RhdGlvbiBpcyBzaWcuZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzaWcucmV0dXJuX2Fubm90YXRpb24pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29iamVjdChzZWxmKToKKyAgICAgICAgUyA9IGluc3BlY3QuU2lnbmF0dXJlCisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFMoKSksICcoKScpCisKKyAgICAgICAgZGVmIHRlc3QocG8sIHBrLCAqYXJncywga28sICoqa3dhcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgcG8gPSBzaWcucGFyYW1ldGVyc1sncG8nXS5yZXBsYWNlKGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBrID0gc2lnLnBhcmFtZXRlcnNbJ3BrJ10KKyAgICAgICAgYXJncyA9IHNpZy5wYXJhbWV0ZXJzWydhcmdzJ10KKyAgICAgICAga28gPSBzaWcucGFyYW1ldGVyc1sna28nXQorICAgICAgICBrd2FyZ3MgPSBzaWcucGFyYW1ldGVyc1sna3dhcmdzJ10KKworICAgICAgICBTKChwbywgcGssIGFyZ3MsIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChwaywgcG8sIGFyZ3MsIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChwbywgYXJncywgcGssIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChhcmdzLCBwbywgcGssIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChwbywgcGssIGFyZ3MsIGt3YXJncywga28pKQorCisgICAgICAgIGt3YXJnczIgPSBrd2FyZ3MucmVwbGFjZShuYW1lPSdhcmdzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIFMoKHBvLCBwaywgYXJncywga3dhcmdzMiwga28pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2ltbXV0YWJpbGl0eShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzaWcuZm9vID0gJ2JhcicKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzaWcucGFyYW1ldGVyc1snYSddID0gTm9uZQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX25vYXJnKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLCAoKCksIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fd2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGI6J2ZvbycpIC0+IDEyMzoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sICdmb28nLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAxMjMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3drd29ubHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCosIGE6ZmxvYXQsIGI6c3RyKSAtPiBpbnQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIGZsb2F0LCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIHN0ciwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fY29tcGxleF9hcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiOidmb28nPTEwLCAqYXJnczonYmFyJywgc3BhbTonYmF6JywgaGFtPTEyMywgKiprd2FyZ3M6aW50KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAxMCwgJ2ZvbycsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJncycsIC4uLiwgJ2JhcicsICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdzcGFtJywgLi4uLCAnYmF6JywgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoYW0nLCAxMjMsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIGludCwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2J1aWx0aW5fZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHR5cGUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ3dyYXBwZXJfZGVzY3JpcHRvcicKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHR5cGUuX19jYWxsX18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ21ldGhvZC13cmFwcGVyJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUobWluLl9fY2FsbF9fKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluIGZ1bmN0aW9uJyk6CisgICAgICAgICAgICAjIHN1cHBvcnQgZm9yICdtZXRob2Qtd3JhcHBlcicKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKG1pbikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9ub25fZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QnKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKDQyKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nKToKKyAgICAgICAgICAgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oNDIpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCBhcmcxLCBhcmcyPTEpIC0+IGludDoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmcxJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnMicsIDEsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jbGFzc21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMsIGFyZzEsICosIGFyZzI9MSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1ldGggPSBUZXN0KCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIG1ldGggPSBUZXN0LmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmcxJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnMicsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9zdGF0aWNtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscywgKiwgYXJnKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnY2xzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgbWV0aCA9IFRlc3QuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2NscycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZycsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3BhcnRpYWwoc2VsZik6CisgICAgICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCkpLCAoKCksIC4uLikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cyIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGE9MSkpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgKiwgYywgZCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCBjPTIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBiPTEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMCwgYj0xLCBjPTIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIDEsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgKmFyZ3MsIGIsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgMiwgMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCAyLCAzLCB0ZXN0PVRydWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIDIsIDMsIHRlc3Q9MSwgYj0wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYj0wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMCwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGI9MCwgdGVzdD0xKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMCwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYzppbnQpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZyA9IHRlc3QuX19zaWduYXR1cmVfXyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIGludCwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbChwYXJ0aWFsKHRlc3QsIDEpLCAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2MnLCAuLi4sIGludCwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQyKSkKKworICAgICAgICBwc2lnID0gaW5zcGVjdC5zaWduYXR1cmUocGFydGlhbChwYXJ0aWFsKHRlc3QsIDEpLCAyKSkKKworICAgICAgICBkZWYgZm9vKGEpOgorICAgICAgICAgICAgcmV0dXJuIGEKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIGE9MTApLCBhPTIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgMjAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgICMgY2hlY2sgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBzaWRlLWVmZmVjdHMgaW4gc2lnbmF0dXJlKCksCisgICAgICAgICMgYW5kIHRoZSBwYXJ0aWFsIG9iamVjdCBpcyBzdGlsbCBmdW5jdGlvbmluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKSwgMjApCisKKyAgICAgICAgZGVmIGZvbyhhLCBiLCBjKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKHBhcnRpYWwoZm9vLCAxLCBiPTIwKSwgYj0zMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShfZm9vKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIDMwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oYz0xMCksICgxLCAzMCwgMTApKQorICAgICAgICBfZm9vID0gcGFydGlhbChfZm9vLCAyKSAjIG5vdyAnYicgaGFzIHR3byB2YWx1ZXMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cyIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykKKworICAgICAgICBkZWYgZm9vKGEsIGIsIGMsICosIGQpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMsIGQKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIGQ9MjAsIGM9MjApLCBiPTEwLCBkPTMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIDMwLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZChhPTIwMCwgYj0xMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgyMDAsIDExLCAyMCwgMzApKQorCisgICAgICAgIGRlZiBmb28oYT0xLCBiPTIsIGM9Myk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBfZm9vID0gcGFydGlhbChmb28sIGE9MTAsIGM9MTMpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMSwgMiwgMTMpKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTEsIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDExLCAxMiwgMTMpKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTEsIGI9MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTEsIDEyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZChiPTEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDEwLCAxMiwgMTMpKQorICAgICAgICBfZm9vID0gcGFydGlhbChfZm9vLCBiPTEwKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTIsIDE0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDEyLCAxNCwgMTMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2RlY29yYXRlZChzZWxmKToKKyAgICAgICAgaW1wb3J0IGZ1bmN0b29scworCisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpIC0+IGludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcgorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBkZWNvcmF0b3IKKyAgICAgICAgICAgIGRlZiBiYXIoc2VsZiwgYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLmJhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ3NlbGYnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkuYmFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICAjIFRlc3QgdGhhdCB3ZSBoYW5kbGUgbWV0aG9kIHdyYXBwZXJzIGNvcnJlY3RseQorICAgICAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKSAtPiBpbnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoNDIsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgICAgICAgICBuZXdfcGFyYW1zID0gdHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzE6XQorICAgICAgICAgICAgd3JhcHBlci5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIKKworICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBAZGVjb3JhdG9yCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLl9fY2FsbF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvbygpLl9fY2FsbF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhjbHMsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgZm9vPTEpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCduYW1lJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFzZXMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkY3QnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdmb28nLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ01NKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgZm9vPTEpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhjbHMsIG5tLCBicywgZHQpOgorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKG5tLCBicywgZHQpCisgICAgICAgIGNsYXNzIENNKHR5cGUsIG1ldGFjbGFzcz1DTU0pOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgYmFyPTIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKENNTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKENNKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbm0nLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdicycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2R0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBkY3QsICosIGJhcj0yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCduYW1lJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFzZXMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkY3QnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXInLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fY2FsbGFibGVfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvbygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Iik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShTcGFtKCkpCisKKyAgICAgICAgY2xhc3MgQmFyKFNwYW0sIEZvbyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShCYXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgVG9GYWlsOgorICAgICAgICAgICAgX19jYWxsX18gPSB0eXBlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAibm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKFRvRmFpbCgpKQorCisKKyAgICAgICAgY2xhc3MgV3JhcHBlZDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgV3JhcHBlZC5fX3dyYXBwZWRfXyA9IGxhbWJkYSBhOiBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoV3JhcHBlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbGFtYmRhcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSgobGFtYmRhIGE9MTA6IGEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIDEwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsICosIGI6aW50KSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIDQyKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBpbnQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50PTQyKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBjKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBkZWYgc3BhbShiOmludCwgYSkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShzcGFtKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKCosIGEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28oKiwgYT0xLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKCosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhPTEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIocG9zLCAqLCBjLCBiLCBhPTEpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKHBvcywgKiwgYSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqYXJncywgYT00MiwgYiwgYywgKiprd2FyZ3M6aW50KTogcGFzcworICAgICAgICBkZWYgYmFyKHBvcywgKmFyZ3MsIGMsIGIsIGE9NDIsICoqa3dhcmdzOmludCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3VuaGFzaGFibGUoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKHNpZykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9zdHIoc2VsZik6CisgICAgICAgIGRlZiBmb28oYTppbnQ9MSwgKiwgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoYTppbnQ9MSwgKiwgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDInKQorCisgICAgICAgIGRlZiBmb28oYTppbnQ9MSwgKmFyZ3MsIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKGE6aW50PTEsICphcmdzLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MicpCisKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgJygpJykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9zdHJfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKworICAgICAgICBkZWYgdGVzdChhX3BvLCAqLCBiLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYV9wbywga3dhcmdzCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgbmV3X3BhcmFtcyA9IGxpc3Qoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpCisgICAgICAgIG5ld19wYXJhbXNbMF0gPSBuZXdfcGFyYW1zWzBdLnJlcGxhY2Uoa2luZD1QLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgdGVzdC5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKDxhX3BvPiwgKiwgYiwgKiprd2FyZ3MpJykKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBuZXdfcGFyYW1zID0gbGlzdChzaWcucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgbmV3X3BhcmFtc1swXSA9IG5ld19wYXJhbXNbMF0ucmVwbGFjZShuYW1lPU5vbmUpCisgICAgICAgIHRlc3QuX19zaWduYXR1cmVfXyA9IHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9bmV3X3BhcmFtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoPDA+LCAqLCBiLCAqKmt3YXJncyknKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3JlcGxhY2VfYW5ubyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgTm9uZSkKKyAgICAgICAgc2lnID0gc2lnLnJlcGxhY2UocmV0dXJuX2Fubm90YXRpb249c2lnLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydElzKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgc2lnLmVtcHR5KQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj00MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWcucmV0dXJuX2Fubm90YXRpb24sIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZywgaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpCisKKworY2xhc3MgVGVzdFBhcmFtZXRlck9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9raW5kcyhzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQLlBPU0lUSU9OQUxfT05MWSA8IFAuUE9TSVRJT05BTF9PUl9LRVlXT1JEIDwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUC5WQVJfUE9TSVRJT05BTCA8IFAuS0VZV09SRF9PTkxZIDwgUC5WQVJfS0VZV09SRCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQLlBPU0lUSU9OQUxfT05MWSksICdQT1NJVElPTkFMX09OTFknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1BPU0lUSU9OQUxfT05MWScgaW4gcmVwcihQLlBPU0lUSU9OQUxfT05MWSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX29iamVjdChzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRlZmF1bHQsIDEwKQorICAgICAgICBzZWxmLmFzc2VydElzKHAuYW5ub3RhdGlvbiwgcC5lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmtpbmQsIGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2ludmFsaWQgdmFsdWUnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTEwLCBraW5kPScxMjMnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCcxJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXInKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2EnLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9QT1NJVElPTkFMKQorCisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycpOgorICAgICAgICAgICAgcC5yZXBsYWNlKGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocCkuc3RhcnRzd2l0aCgnPFBhcmFtZXRlcicpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIHAgPSBQKCdmb28nLCBkZWZhdWx0PTQyLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHApCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocCwgNDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKCdmb28nLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl91bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKHApCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3JlcGxhY2Uoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QocCwgcC5yZXBsYWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcC5yZXBsYWNlKCkpCisKKyAgICAgICAgcDIgPSBwLnJlcGxhY2UoYW5ub3RhdGlvbj0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmFubm90YXRpb24sIDEpCisgICAgICAgIHAyID0gcDIucmVwbGFjZShhbm5vdGF0aW9uPXAyLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHAyKQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAyLCBwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPXAyLmVtcHR5KQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdmb28nLCBkZWZhdWx0PU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocDIuZGVmYXVsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwMiwgcCkKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2UobmFtZT0nZm9vJywgZGVmYXVsdD1wMi5lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwMi5kZWZhdWx0LCBwMi5lbXB0eSkKKworCisgICAgICAgIHAyID0gcDIucmVwbGFjZShkZWZhdWx0PTQyLCBraW5kPXAyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5raW5kLCBwMi5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocDIsIHApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdpbnZhbGlkIHZhbHVlIGZvcicpOgorICAgICAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGtpbmQ9cDIuZW1wdHkpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGtpbmQ9cDIuS0VZV09SRF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLCBwKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcihOb25lLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICc8PicpCisKKyAgICAgICAgcCA9IHAucmVwbGFjZShuYW1lPScxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICc8MT4nKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcihOb25lLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHAuZm9vID0gJ2JhcicKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHAua2luZCA9IDEyMworCisKK2NsYXNzIFRlc3RTaWduYXR1cmVCaW5kKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNhbGwoZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICAgICAgYmEgPSBzaWcuYmluZCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBmdW5jKCpiYS5hcmdzLCAqKmJhLmt3YXJncykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksIDQyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBzcGFtPTEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPTEpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF92YXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksICgoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxKSwgKCgxLCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgoMSwgMiksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPSdiYXInKSwgKCgpLCB7J2Zvbyc6ICdiYXInfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGZvbz0nYmFyJyksICgoMSwpLCB7J2Zvbyc6ICdiYXInfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGFyZ3M9MTApLCAoKCksIHsnYXJncyc6IDEwfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGZvbz0nYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgxLCAyKSwgeydmb28nOiAnYmFyJ30pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfanVzdF9hcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiLCBjKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCA0KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICInYicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidhJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTEwKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMpLCAoMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIpLCAoMSwgMiwgMTApKQorCisgICAgICAgIGRlZiB0ZXN0KGE9MSwgYj0yLCBjPTMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYT0xMCwgYz0xMyksICgxMCwgMiwgMTMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEwKSwgKDEwLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYj0xMCksICgxLCAxMCwgMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF92YXJhcmdzX29yZGVyKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QpLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2FyZ3NfYW5kX3ZhcmFyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MywgKmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMsIGFyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCA0LCA1KSwgKDEsIDIsIDMsICg0LCA1KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIpLCAoMSwgMiwgMywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTEsIGE9MiksICgyLCAxLCAzLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGI9MiksICgxLCAyLCAzLCAoKSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAnYyciKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCBjPTQpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9qdXN0X2t3YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGt3YXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2FyZ3NfYW5kX2t3YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0zLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAzLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYj0yLCBhPTEsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYT0xLCBiPTIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yLCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCAzLCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGI9MiwgYz00LCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCA0LCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDQsIGZvbz0nYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYz01LCBhPTQsIGI9MyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDQsIDMsIDUsIHt9KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2t3b25seShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiwgZm9vKToKKyAgICAgICAgICAgIHJldHVybiBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289MSksIDEpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgKiwgZm9vPTEsIGJhcik6CisgICAgICAgICAgICByZXR1cm4gZm9vCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorCisgICAgICAgIGRlZiB0ZXN0KGZvbywgKiwgYmFyKToKKyAgICAgICAgICAgIHJldHVybiBmb28sIGJhcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9MiksICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xKSwgKDEsIDIpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xLCBzcGFtPTEwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGJhcj0yKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIHNwYW09J2hhbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIsICoqYmluKToKKyAgICAgICAgICAgIHJldHVybiBmb28sIGJhciwgYmluCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yKSwgKDEsIDIsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPTEsIGJhcj0yKSwgKDEsIDIsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBmb289MSwgYmFyPTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J3NwYW0nOiAnaGFtJ30pKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInZm9vJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgc3BhbT0naGFtJywgYmFyPTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBiaW49MSwgc3BhbT0xMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnYmluJzogMSwgJ3NwYW0nOiAxMH0pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCAqYXJncywgYiwgej0xMDAsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgYmEgPSBzaWcuYmluZCgxMCwgMjAsIGI9MzAsIGM9NDAsIGFyZ3M9NTAsIGt3YXJncz02MCkKKyAgICAgICAgIyB3ZSB3b24ndCBoYXZlICd6JyBhcmd1bWVudCBpbiB0aGUgYm91bmQgYXJndW1lbnRzIG9iamVjdCwgYXMgd2UgZGlkbid0CisgICAgICAgICMgcGFzcyBpdCB0byB0aGUgJ2JpbmQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoYmEuYXJndW1lbnRzLml0ZW1zKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ2EnLCAxMCksICgnYXJncycsICgyMCwpKSwgKCdiJywgMzApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIHsnYyc6IDQwLCAnYXJncyc6IDUwLCAna3dhcmdzJzogNjB9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEua3dhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYic6IDMwLCAnYyc6IDQwLCAnYXJncyc6IDUwLCAna3dhcmdzJzogNjB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLmFyZ3MsICgxMCwgMjApKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKworICAgICAgICBkZWYgdGVzdChhX3BvLCBiX3BvLCBjX3BvPTMsIGZvbz00MiwgKiwgYmFyPTUwLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYV9wbywgYl9wbywgY19wbywgZm9vLCBiYXIsIGt3YXJncworCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIG5ld19wYXJhbXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCh0dXBsZShzaWcucGFyYW1ldGVycy5pdGVtcygpKSkKKyAgICAgICAgZm9yIG5hbWUgaW4gKCdhX3BvJywgJ2JfcG8nLCAnY19wbycpOgorICAgICAgICAgICAgbmV3X3BhcmFtc1tuYW1lXSA9IG5ld19wYXJhbXNbbmFtZV0ucmVwbGFjZShraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBuZXdfc2lnID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zLnZhbHVlcygpKQorICAgICAgICB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBuZXdfc2lnCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgNCwgNSwgYmFyPTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCA0LCA1LCA2LCB7fSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBhcmFtZXRlciBpcyBwb3NpdGlvbmFsIG9ubHkiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCBjX3BvPTQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBhcmFtZXRlciBpcyBwb3NpdGlvbmFsIG9ubHkiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBhX3BvPTEsIGJfcG89MikKKworCitjbGFzcyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfdW5oYXNoYWJsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhKTogcGFzcworICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgxKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2goYmEpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhKQorCisgICAgICAgIGJhMiA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiYTIpCisKKyAgICAgICAgYmEzID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYmEsIGJhMykKKyAgICAgICAgYmEzLmFyZ3VtZW50c1snYSddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiYTMpCisKKyAgICAgICAgZGVmIGJhcihiKTogcGFzcworICAgICAgICBiYTQgPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpLmJpbmQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYSwgYmE0KQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoCkBAIC0xMTc2LDcgKzIyNzQsOCBAQAogICAgICAgICBUZXN0SW50ZXJwcmV0ZXJTdGFjaywgVGVzdENsYXNzZXNBbmRGdW5jdGlvbnMsIFRlc3RQcmVkaWNhdGVzLAogICAgICAgICBUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnMsIFRlc3RHZXRjYWxsYXJnc01ldGhvZHMsCiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc1VuYm91bmRNZXRob2RzLCBUZXN0R2V0YXR0clN0YXRpYywgVGVzdEdldEdlbmVyYXRvclN0YXRlLAotICAgICAgICBUZXN0Tm9FT0wKKyAgICAgICAgVGVzdE5vRU9MLCBUZXN0U2lnbmF0dXJlT2JqZWN0LCBUZXN0U2lnbmF0dXJlQmluZCwgVGVzdFBhcmFtZXRlck9iamVjdCwKKyAgICAgICAgVGVzdEJvdW5kQXJndW1lbnRzLCBUZXN0R2V0Q2xvc3VyZVZhcnMKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IDY3MWIyMGEuLmMzNWE0MmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yLDcgKzIsNiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBMID0gWwogICAgICAgICAoJzAnLCAwKSwKQEAgLTIyNiw2ICsyMjUsOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGludChiJzEwJyksIDEwKQogICAgICAgICBzZWxmLmFzc2VydElzKGludChiJy0xJyksIC0xKQogCisgICAgZGVmIHRlc3Rfbm9fYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoKSwgMCkKKwogICAgIGRlZiB0ZXN0X2tleXdvcmRfYXJncyhzZWxmKToKICAgICAgICAgIyBUZXN0IGludm9raW5nIGludCgpIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh4PTEuMiksIDEpCkBAIC0yMzQsNiArMjM2LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBiYXNlPTEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgYmFzZT0wKQogCisgICAgZGVmIHRlc3Rfbm9uX251bWVyaWNfaW5wdXRfdHlwZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBwb3NzaWJsZSBub24tbnVtZXJpYyB0eXBlcyBmb3IgdGhlIGFyZ3VtZW50IHgsIGluY2x1ZGluZworICAgICAgICAjIHN1YmNsYXNzZXMgb2YgdGhlIGV4cGxpY2l0bHkgZG9jdW1lbnRlZCBhY2NlcHRlZCB0eXBlcy4KKyAgICAgICAgY2xhc3MgQ3VzdG9tU3RyKHN0cik6IHBhc3MKKyAgICAgICAgY2xhc3MgQ3VzdG9tQnl0ZXMoYnl0ZXMpOiBwYXNzCisgICAgICAgIGNsYXNzIEN1c3RvbUJ5dGVBcnJheShieXRlYXJyYXkpOiBwYXNzCisKKyAgICAgICAgdmFsdWVzID0gW2InMTAwJywKKyAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJzEwMCcpLAorICAgICAgICAgICAgICAgICAgQ3VzdG9tU3RyKCcxMDAnKSwKKyAgICAgICAgICAgICAgICAgIEN1c3RvbUJ5dGVzKGInMTAwJyksCisgICAgICAgICAgICAgICAgICBDdXN0b21CeXRlQXJyYXkoYicxMDAnKV0KKworICAgICAgICBmb3IgeCBpbiB2YWx1ZXM6CisgICAgICAgICAgICBtc2cgPSAneCBoYXMgdHlwZSAlcycgJSB0eXBlKHgpLl9fbmFtZV9fCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh4KSwgMTAwLCBtc2c9bXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoeCwgMiksIDQsIG1zZz1tc2cpCisKKyAgICBkZWYgdGVzdF9zdHJpbmdfZmxvYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgJzEuMicpCisKICAgICBkZWYgdGVzdF9pbnRjb252ZXJzaW9uKHNlbGYpOgogICAgICAgICAjIFRlc3QgX19pbnRfXygpCiAgICAgICAgIGNsYXNzIENsYXNzaWNNaXNzaW5nTWV0aG9kczoKQEAgLTMxOCw2ICszNDEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgVHlwZUVycm9yIHdpdGggJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYmFzZSwgdHJ1bmNfcmVzdWx0X2Jhc2UpLCkpCiAKKyAgICAgICAgICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVncy5weXRob24ub3JnL2lzc3VlMTYwNjAuCisgICAgICAgICAgICAgICAgY2xhc3MgQmFkSW50KHRydW5jX3Jlc3VsdF9iYXNlKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDIuMAorCisgICAgICAgICAgICAgICAgY2xhc3MgVHJ1bmNSZXR1cm5zQmFkSW50KGJhc2UpOgorICAgICAgICAgICAgICAgICAgICBkZWYgX190cnVuY19fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJhZEludCgpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGludChUcnVuY1JldHVybnNCYWRJbnQoKSkKKwogICAgIGRlZiB0ZXN0X2Vycm9yX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgIHRlc3RsaXN0ID0gKCdceGJkJywgJzEyM1x4YmQnLCAnICAxMjMgNDU2ICAnKQogICAgICAgICBmb3IgcyBpbiB0ZXN0bGlzdDoKQEAgLTMyOSw3ICszNjQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgaW50KCVyKSB0byByYWlzZSBhIFZhbHVlRXJyb3IiLCBzKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEludFRlc3RDYXNlcykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChJbnRUZXN0Q2FzZXMpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDI0OWRjMzAuLjFjZjA1MjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMTksMjEgKzE5LDIyIEBACiAjIHRlc3QgYm90aCBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgZmlsZSBoYXMgbG90cyBvZiBleGFtcGxlcy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBhYmMKK2ltcG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXJyYXkKLWltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdlYWtyZWYKLWltcG9ydCBhYmMKLWltcG9ydCBzaWduYWwKLWltcG9ydCBlcnJubwogaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgcGlja2xlCitpbXBvcnQgd2Vha3JlZgogaW1wb3J0IF90ZXN0Y2FwaQotZnJvbSBpdGVydG9vbHMgaW1wb3J0IGN5Y2xlLCBjb3VudAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUsIFVzZXJMaXN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogaW1wb3J0IGNvZGVjcwpAQCAtNTAsNyArNTEsNyBAQAogCiBkZWYgX2RlZmF1bHRfY2h1bmtfc2l6ZSgpOgogICAgICIiIkdldCB0aGUgZGVmYXVsdCBUZXh0SU9XcmFwcGVyIGNodW5rIHNpemUiIiIKLSAgICB3aXRoIG9wZW4oX19maWxlX18sICJyIiwgZW5jb2Rpbmc9ImxhdGluMSIpIGFzIGY6CisgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAiciIsIGVuY29kaW5nPSJsYXRpbi0xIikgYXMgZjoKICAgICAgICAgcmV0dXJuIGYuX0NIVU5LX1NJWkUKIAogCkBAIC02MDMsNiArNjA0LDcgQEAKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoKQogICAgICAgICBmLmZsdXNoID0gYmFkX2ZsdXNoCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGYuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2xvc2VkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlfY2xvc2Uoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKQpAQCAtNjM1LDYgKzYzNywxNSBAQAogICAgICAgICBmb3Igb2JqIGluIHRlc3Q6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvYmosICJfX2RpY3RfXyIpKQogCisgICAgZGVmIHRlc3Rfb3BlbmVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiZWdnXG4iKQorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICBkZWYgb3BlbmVyKHBhdGgsIGZsYWdzKToKKyAgICAgICAgICAgIHJldHVybiBmZAorICAgICAgICB3aXRoIHNlbGYub3Blbigibm9uLWV4aXN0ZW50IiwgInIiLCBvcGVuZXI9b3BlbmVyKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImVnZ1xuIikKKwogICAgIGRlZiB0ZXN0X2ZpbGVpb19jbG9zZWZkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM0ODQxCiAgICAgICAgIHdpdGggc2VsZi5vcGVuKF9fZmlsZV9fLCAncmInKSBhcyBmMSwgXApAQCAtNjk3LDcgKzcwOCw3IEBACiAgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbykKICAgICAgICAgIyBJbnZhbGlkIHdoZW5jZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnVmaW8uc2VlaywgMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnVmaW8uc2VlaywgMCwgOSkKIAogICAgIGRlZiB0ZXN0X292ZXJyaWRlX2Rlc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHRwID0gc2VsZi50cApAQCAtNzcxLDYgKzc4MiwyMiBAQAogICAgICAgICByYXcuZmx1c2ggPSBiYWRfZmx1c2gKICAgICAgICAgYiA9IHNlbGYudHAocmF3KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiLmNsb3NlKSAjIGV4Y2VwdGlvbiBub3Qgc3dhbGxvd2VkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlX2Vycm9yX29uX2Nsb3NlKHNlbGYpOgorICAgICAgICByYXcgPSBzZWxmLk1vY2tSYXdJTygpCisgICAgICAgIGRlZiBiYWRfZmx1c2goKToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2ZsdXNoJykKKyAgICAgICAgZGVmIGJhZF9jbG9zZSgpOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignY2xvc2UnKQorICAgICAgICByYXcuY2xvc2UgPSBiYWRfY2xvc2UKKyAgICAgICAgYiA9IHNlbGYudHAocmF3KQorICAgICAgICBiLmZsdXNoID0gYmFkX2ZsdXNoCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcikgYXMgZXJyOiAjIGV4Y2VwdGlvbiBub3Qgc3dhbGxvd2VkCisgICAgICAgICAgICBiLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZXhjZXB0aW9uLmFyZ3MsICgnY2xvc2UnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmV4Y2VwdGlvbi5fX2NvbnRleHRfXy5hcmdzLCAoJ2ZsdXNoJywpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIuY2xvc2VkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlfY2xvc2Uoc2VsZik6CiAgICAgICAgIHJhdyA9IHNlbGYuTW9ja1Jhd0lPKCkKQEAgLTg2Myw2ICs4OTAsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImdmIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50byhiKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImdmIikKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoYiJhYmMiLCBOb25lKSkKKyAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiYWIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiY2IiKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgogICAgICAgICBkZWYgYnVmaW8oKToKQEAgLTEyNzcsMTEgKzEzMTAsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnVmaW8udGVsbCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnVmaW8ud3JpdGUsIGIiYWJjZGVmIikKIAotICAgIGRlZiB0ZXN0X21heF9idWZmZXJfc2l6ZV9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgIGRlZiB0ZXN0X21heF9idWZmZXJfc2l6ZV9yZW1vdmFsKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnRwKHNlbGYuTW9ja1Jhd0lPKCksIDgsIDEyKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfZXJyb3Jfb25fY2xvc2Uoc2VsZik6CisgICAgICAgIHJhdyA9IHNlbGYuTW9ja1Jhd0lPKCkKKyAgICAgICAgZGVmIGJhZF93cml0ZShiKToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoKQorICAgICAgICByYXcud3JpdGUgPSBiYWRfd3JpdGUKKyAgICAgICAgYiA9IHNlbGYudHAocmF3KQorICAgICAgICBiLndyaXRlKGInc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGIuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGIuY2xvc2VkKQorCiAKIGNsYXNzIENCdWZmZXJlZFdyaXRlclRlc3QoQnVmZmVyZWRXcml0ZXJUZXN0LCBTaXplb2ZUZXN0KToKICAgICB0cCA9IGlvLkJ1ZmZlcmVkV3JpdGVyCkBAIC0xMzM1LDkgKzEzNzcsOCBAQAogICAgICAgICBwYWlyID0gc2VsZi50cChzZWxmLk1vY2tSYXdJTygpLCBzZWxmLk1vY2tSYXdJTygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLlVuc3VwcG9ydGVkT3BlcmF0aW9uLCBwYWlyLmRldGFjaCkKIAotICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX21heF9idWZmZXJfc2l6ZV9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX21heF9idWZmZXJfc2l6ZV9yZW1vdmFsKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnRwKHNlbGYuTW9ja1Jhd0lPKCksIHNlbGYuTW9ja1Jhd0lPKCksIDgsIDEyKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3Jfd2l0aF9ub3RfcmVhZGFibGUoc2VsZik6CkBAIC0xODUzLDExICsxODk0LDExIEBACiAgICAgICAgIHIgPSBzZWxmLkJ5dGVzSU8oYiJceGMzXHhhOVxuXG4iKQogICAgICAgICBiID0gc2VsZi5CdWZmZXJlZFJlYWRlcihyLCAxMDAwKQogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCi0gICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9ImxhdGluMSIsIG5ld2xpbmU9IlxyXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJsYXRpbjEiKQorICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJsYXRpbi0xIiwgbmV3bGluZT0iXHJcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgImxhdGluLTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubGluZV9idWZmZXJpbmcsIEZhbHNlKQotICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJ1dGY4IiwgbGluZV9idWZmZXJpbmc9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmOCIpCisgICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9InV0Zi04IiwgbGluZV9idWZmZXJpbmc9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmLTgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubGluZV9idWZmZXJpbmcsIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlx4ZTlcbiIsIHQucmVhZGxpbmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Ll9faW5pdF9fLCBiLCBuZXdsaW5lPTQyKQpAQCAtMTkwNCw2ICsxOTQ1LDI0IEBACiAgICAgICAgIHQud3JpdGUoIkFcckIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuZ2V0dmFsdWUoKSwgYiJYWVxuWkFcckIiKQogCisgICAgZGVmIHRlc3RfZGVmYXVsdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgb2xkX2Vudmlyb24gPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdHJ5IHRvIGdldCBhIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50CisgICAgICAgICAgICAjIGxvY2FsZSBlbmNvZGluZyB0byBjaGVjayB0aGF0IFRleHRJT1dyYXBwZXIoKSB1c2VzIHRoZSBjdXJyZW50CisgICAgICAgICAgICAjIGxvY2FsZSBlbmNvZGluZyBhbmQgbm90IHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZworICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xDX0FMTCcsICdMQU5HJywgJ0xDX0NUWVBFJyk6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2tleV0KKworICAgICAgICAgICAgY3VycmVudF9sb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICAgICAgICAgICBiID0gc2VsZi5CeXRlc0lPKCkKKyAgICAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgY3VycmVudF9sb2NhbGVfZW5jb2RpbmcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKG9sZF9lbnZpcm9uKQorCiAgICAgIyBJc3N1ZSAxNTk4OQogICAgIGRlZiB0ZXN0X2RldmljZV9lbmNvZGluZyhzZWxmKToKICAgICAgICAgYiA9IHNlbGYuQnl0ZXNJTygpCkBAIC0xOTE1LDggKzE5NzQsOCBAQAogICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgaXMgYWx3YXlzIHNldCwgYW5kIHZhbGlkCiAgICAgICAgIGIgPSBzZWxmLkJ5dGVzSU8oKQotICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmOCIpCisgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmLTgiKQogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmVuY29kaW5nIGlzIG5vdCBOb25lKQogICAgICAgICBjb2RlY3MubG9va3VwKHQuZW5jb2RpbmcpCkBAIC0yMDA5LDggKzIwNjgsOCBAQAogICAgICAgICB0ZXN0ZGF0YSA9IGIiQUFBXG5CQlx4MDBCXG5DQ0NcckRERFxyRUVFXHJcbkZGRlxyXG5HR0ciCiAgICAgICAgIG5vcm1hbGl6ZWQgPSB0ZXN0ZGF0YS5yZXBsYWNlKGIiXHJcbiIsIGIiXG4iKS5yZXBsYWNlKGIiXHIiLCBiIlxuIikKICAgICAgICAgZm9yIG5ld2xpbmUsIGV4cGVjdGVkIGluIFsKLSAgICAgICAgICAgIChOb25lLCBub3JtYWxpemVkLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKFRydWUpKSwKLSAgICAgICAgICAgICgiIiwgdGVzdGRhdGEuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoVHJ1ZSkpLAorICAgICAgICAgICAgKE5vbmUsIG5vcm1hbGl6ZWQuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpLAorICAgICAgICAgICAgKCIiLCB0ZXN0ZGF0YS5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSksCiAgICAgICAgICAgICAoIlxuIiwgWyJBQUFcbiIsICJCQlx4MDBCXG4iLCAiQ0NDXHJERERcckVFRVxyXG4iLCAiRkZGXHJcbiIsICJHR0ciXSksCiAgICAgICAgICAgICAoIlxyXG4iLCBbIkFBQVxuQkJceDAwQlxuQ0NDXHJERERcckVFRVxyXG4iLCAiRkZGXHJcbiIsICJHR0ciXSksCiAgICAgICAgICAgICAoIlxyIiwgIFsiQUFBXG5CQlx4MDBCXG5DQ0NcciIsICJERERcciIsICJFRUVcciIsICJcbkZGRlxyIiwgIlxuR0dHIl0pLApAQCAtMjA5NSw3ICsyMTU0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX2lvKHNlbGYpOgogICAgICAgICBmb3IgY2h1bmtzaXplIGluICgxLCAyLCAzLCA0LCA1LCAxNSwgMTYsIDE3LCAzMSwgMzIsIDMzLCA2MywgNjQsIDY1KToKLSAgICAgICAgICAgIGZvciBlbmMgaW4gImFzY2lpIiwgImxhdGluMSIsICJ1dGY4IiA6IyAsICJ1dGYtMTYtYmUiLCAidXRmLTE2LWxlIjoKKyAgICAgICAgICAgIGZvciBlbmMgaW4gImFzY2lpIiwgImxhdGluLTEiLCAidXRmLTgiIDojICwgInV0Zi0xNi1iZSIsICJ1dGYtMTYtbGUiOgogICAgICAgICAgICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3KyIsIGVuY29kaW5nPWVuYykKICAgICAgICAgICAgICAgICBmLl9DSFVOS19TSVpFID0gY2h1bmtzaXplCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRlKCJhYmMiKSwgMykKQEAgLTIxNDUsNyArMjIwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmxpbmVzLCB3bGluZXMpCiAKICAgICBkZWYgdGVzdF90ZWxsaW5nKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidysiLCBlbmNvZGluZz0idXRmOCIpCisgICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3KyIsIGVuY29kaW5nPSJ1dGYtOCIpCiAgICAgICAgIHAwID0gZi50ZWxsKCkKICAgICAgICAgZi53cml0ZSgiXHhmZlxuIikKICAgICAgICAgcDEgPSBmLnRlbGwoKQpAQCAtMjQxMyw2ICsyNDcyLDcgQEAKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3IiwgZXJyb3JzPSJyZXBsYWNlIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5lcnJvcnMsICJyZXBsYWNlIikKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X3RocmVhZHNfd3JpdGUoc2VsZik6CiAgICAgICAgICMgSXNzdWU2NzUwOiBjb25jdXJyZW50IHdyaXRlcyBjb3VsZCBkdXBsaWNhdGUgZGF0YQpAQCAtMjQ0MSw2ICsyNTAxLDcgQEAKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoKQogICAgICAgICB0eHQuZmx1c2ggPSBiYWRfZmx1c2gKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgdHh0LmNsb3NlKSAjIGV4Y2VwdGlvbiBub3Qgc3dhbGxvd2VkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0eHQuY2xvc2VkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlfY2xvc2Uoc2VsZik6CiAgICAgICAgIHR4dCA9IHNlbGYuVGV4dElPV3JhcHBlcihzZWxmLkJ5dGVzSU8oc2VsZi50ZXN0ZGF0YSksIGVuY29kaW5nPSJhc2NpaSIpCkBAIC0yNzMwLDEyICsyNzkxLDYgQEAKIAogICAgIGRlZiB0ZXN0X2Jsb2NraW5naW9lcnJvcihzZWxmKToKICAgICAgICAgIyBWYXJpb3VzIEJsb2NraW5nSU9FcnJvciBpc3N1ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvcikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvciwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvciwgMSwgMiwgMywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkJsb2NraW5nSU9FcnJvciwgMSwgIiIsIE5vbmUpCi0gICAgICAgIGIgPSBzZWxmLkJsb2NraW5nSU9FcnJvcigxLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNoYXJhY3RlcnNfd3JpdHRlbiwgMCkKICAgICAgICAgY2xhc3MgQyhzdHIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBjID0gQygiIikKQEAgLTI4NzcsNiArMjkzMiw3IEBACiAKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5CbG9ja2luZ0lPRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIGVycm5vLkVBR0FJTikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMl0sIGUuY2hhcmFjdGVyc193cml0dGVuKQogICAgICAgICAgICAgICAgICAgICBzZW50Wy0xXSA9IHNlbnRbLTFdWzplLmNoYXJhY3RlcnNfd3JpdHRlbl0KICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJmLnJlYWQoKSkKICAgICAgICAgICAgICAgICAgICAgbXNnID0gYidCTE9DS0VEJwpAQCAtMjg4OSw2ICsyOTQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5CbG9ja2luZ0lPRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIGVycm5vLkVBR0FJTikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMl0sIGUuY2hhcmFjdGVyc193cml0dGVuKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuY2hhcmFjdGVyc193cml0dGVuLCAwKQogICAgICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQocmYucmVhZCgpKQogCkBAIC0yODk5LDYgKzI5NTYsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdmLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJmLmNsb3NlZCkKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9mYWlsKHNlbGYpOgorICAgICAgICAjICd4JyBtb2RlIGZhaWxzIGlmIGZpbGUgaXMgZXhpc3RpbmcKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICd3Jyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvciwgc2VsZi5vcGVuLCBzdXBwb3J0LlRFU1RGTiwgJ3gnKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX3dyaXRlcyhzZWxmKToKKyAgICAgICAgIyAneCcgbW9kZSBvcGVucyBmb3Igd3JpdGluZworICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3hiJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJzcGFtIikKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIic3BhbSIsIGYucmVhZCgpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9hbGxhcmdzKHNlbGYpOgorICAgICAgICAjIHRoZXJlIHVzZWQgdG8gYmUgYSBidWZmZXIgb3ZlcmZsb3cgaW4gdGhlIHBhcnNlciBmb3IgcmF3bW9kZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIHN1cHBvcnQuVEVTVEZOLCAncndheCsnKQorCisKIGNsYXNzIENNaXNjSU9UZXN0KE1pc2NJT1Rlc3QpOgogICAgIGlvID0gaW8KIApAQCAtMjkxOSwxNCArMjk5NCwxNCBAQAogICAgICAgICAxLzAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gaW4gKCdmcmVlYnNkNScsICdmcmVlYnNkNicsICdmcmVlYnNkNycpLAotICAgICAgICAgICAgICAgICAgICAgJ2lzc3VlICMxMjQyOTogc2tpcCB0ZXN0IG9uIEZyZWVCU0QgPD0gNycpCiAgICAgZGVmIGNoZWNrX2ludGVycnVwdGVkX3dyaXRlKHNlbGYsIGl0ZW0sIGJ5dGVzLCAqKmZkb3Blbl9rd2FyZ3MpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGEgcGFydGlhbCB3cml0ZSwgd2hlbiBpdCBnZXRzIGludGVycnVwdGVkLCBwcm9wZXJseQogICAgICAgICBpbnZva2VzIHRoZSBzaWduYWwgaGFuZGxlciwgYW5kIGJ1YmJsZXMgdXAgdGhlIGV4Y2VwdGlvbiByYWlzZWQKICAgICAgICAgaW4gdGhlIGxhdHRlci4iIiIKICAgICAgICAgcmVhZF9yZXN1bHRzID0gW10KICAgICAgICAgZGVmIF9yZWFkKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpOgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ25hbC5TSUdBTFJNXSkKICAgICAgICAgICAgIHMgPSBvcy5yZWFkKHIsIDEpCiAgICAgICAgICAgICByZWFkX3Jlc3VsdHMuYXBwZW5kKHMpCiAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fcmVhZCkKQEAgLTI5NDQsNyArMzAxOSw3IEBACiAgICAgICAgICAgICAjIFRoZSBidWZmZXJlZCBJTyBsYXllciBtdXN0IGNoZWNrIGZvciBwZW5kaW5nIHNpZ25hbAogICAgICAgICAgICAgIyBoYW5kbGVycywgd2hpY2ggaW4gdGhpcyBjYXNlIHdpbGwgaW52b2tlIGFsYXJtX2ludGVycnVwdCgpLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUsIGl0ZW0gKiAoMTAyNCAqIDEwMjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgd2lvLndyaXRlLCBpdGVtICogKHN1cHBvcnQuUElQRV9NQVhfU0laRSAvLyBsZW4oaXRlbSkpKQogICAgICAgICAgICAgdC5qb2luKCkKICAgICAgICAgICAgICMgV2UgZ290IG9uZSBieXRlLCBnZXQgYW5vdGhlciBvbmUgYW5kIGNoZWNrIHRoYXQgaXQgaXNuJ3QgYQogICAgICAgICAgICAgIyByZXBlYXQgb2YgdGhlIGZpcnN0IG9uZS4KQEAgLTI5NzEsNiArMzA0Niw3IEBACiAgICAgZGVmIHRlc3RfaW50ZXJydXB0ZWRfd3JpdGVfdGV4dChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19pbnRlcnJ1cHRlZF93cml0ZSgieHkiLCBiInh5IiwgbW9kZT0idyIsIGVuY29kaW5nPSJhc2NpaSIpCiAKKyAgICBAc3VwcG9ydC5ub190cmFjaW5nCiAgICAgZGVmIGNoZWNrX3JlZW50cmFudF93cml0ZShzZWxmLCBkYXRhLCAqKmZkb3Blbl9rd2FyZ3MpOgogICAgICAgICBkZWYgb25fYWxhcm0oKmFyZ3MpOgogICAgICAgICAgICAgIyBXaWxsIGJlIGNhbGxlZCByZWVudHJhbnRseSBmcm9tIHRoZSBzYW1lIHRocmVhZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWM1NGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKQEAgLTAsMCArMSwxNjQ5IEBACisjIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuCisjICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisKKyIiIlVuaXR0ZXN0IGZvciBpcGFkZHJlc3MgbW9kdWxlLiIiIgorCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHJlCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IG9wZXJhdG9yCitpbXBvcnQgaXBhZGRyZXNzCisKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBPbmUgYmlnIGNoYW5nZSBpbiBpcGFkZHJlc3Mgb3ZlciB0aGUgb3JpZ2luYWwgaXBhZGRyIG1vZHVsZSBpcworICAgICMgZXJyb3IgcmVwb3J0aW5nIHRoYXQgdHJpZXMgdG8gYXNzdW1lIHVzZXJzICpkb24ndCBrbm93IHRoZSBydWxlcyoKKyAgICAjIGZvciB3aGF0IGNvbnN0aXR1dGVzIGFuIFJGQyBjb21wbGlhbnQgSVAgYWRkcmVzcworCisgICAgIyBFbnN1cmluZyB0aGVzZSBlcnJvcnMgYXJlIGVtaXR0ZWQgY29ycmVjdGx5IGluIGFsbCByZWxldmFudCBjYXNlcworICAgICMgbWVhbnQgbW92aW5nIHRvIGEgbW9yZSBzeXN0ZW1hdGljIHRlc3Qgc3RydWN0dXJlIHRoYXQgYWxsb3dzIHRoZQorICAgICMgdGVzdCBzdHJ1Y3R1cmUgdG8gbWFwIG1vcmUgZGlyZWN0bHkgdG8gdGhlIG1vZHVsZSBzdHJ1Y3R1cmUKKworICAgICMgTm90ZSB0aGF0IGlmIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIHJlZmFjdG9yZWQgc28gdGhhdCBhZGRyZXNzZXMgd2l0aAorICAgICMgbXVsdGlwbGUgcHJvYmxlbXMgZ2V0IGNsYXNzaWZpZWQgZGlmZmVyZW50bHksIHRoYXQncyBPSyAtIGp1c3QKKyAgICAjIG1vdmUgdGhlIGFmZmVjdGVkIGV4YW1wbGVzIHRvIHRoZSBuZXdseSBhcHByb3ByaWF0ZSB0ZXN0IGNhc2UuCisKKyAgICAjIFRoZXJlIGlzIHNvbWUgZHVwbGljYXRpb24gYmV0d2VlbiB0aGUgb3JpZ2luYWwgcmVsYXRpdmVseSBhZCBob2MKKyAgICAjIHRlc3Qgc3VpdGUgYW5kIHRoZSBuZXcgc3lzdGVtYXRpYyB0ZXN0cy4gV2hpbGUgc29tZSByZWR1bmRhbmN5IGluCisgICAgIyB0ZXN0aW5nIGlzIGNvbnNpZGVyZWQgcHJlZmVyYWJsZSB0byBhY2NpZGVudGFsbHkgZGVsZXRpbmcgYSB2YWxpZAorICAgICMgdGVzdCwgdGhlIG9yaWdpbmFsIHRlc3Qgc3VpdGUgd2lsbCBsaWtlbHkgYmUgcmVkdWNlZCBvdmVyIHRpbWUgYXMKKyAgICAjIHJlZHVuZGFudCB0ZXN0cyBhcmUgaWRlbnRpZmllZC4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmYWN0b3J5KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBhc3NlcnRDbGVhbkVycm9yKHNlbGYsIGV4Y190eXBlLCBkZXRhaWxzLCAqYXJncyk6CisgICAgICAgICIiIgorICAgICAgICBFbnN1cmUgZXhjZXB0aW9uIGRvZXMgbm90IGRpc3BsYXkgYSBjb250ZXh0IGJ5IGRlZmF1bHQKKworICAgICAgICBXcmFwcyB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRSYWlzZXNSZWdleAorICAgICAgICAiIiIKKyAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAgIGRldGFpbHMgPSBkZXRhaWxzICUgYXJncworICAgICAgICBjbSA9IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoZXhjX3R5cGUsIGRldGFpbHMpCisgICAgICAgIHdpdGggY20gYXMgZXhjOgorICAgICAgICAgICAgeWllbGQgZXhjCisgICAgICAgICMgRW5zdXJlIHdlIHByb2R1Y2UgY2xlYW4gdHJhY2ViYWNrcyBvbiBmYWlsdXJlCisgICAgICAgIGlmIGV4Yy5leGNlcHRpb24uX19jb250ZXh0X18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXykKKworICAgIGRlZiBhc3NlcnRBZGRyZXNzRXJyb3Ioc2VsZiwgZGV0YWlscywgKmFyZ3MpOgorICAgICAgICAiIiJFbnN1cmUgYSBjbGVhbiBBZGRyZXNzVmFsdWVFcnJvciIiIgorICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRDbGVhbkVycm9yKGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMsICphcmdzKQorCisgICAgZGVmIGFzc2VydE5ldG1hc2tFcnJvcihzZWxmLCBkZXRhaWxzLCAqYXJncyk6CisgICAgICAgICIiIkVuc3VyZSBhIGNsZWFuIE5ldG1hc2tWYWx1ZUVycm9yIiIiCisgICAgICAgIHJldHVybiBzZWxmLmFzc2VydENsZWFuRXJyb3IoaXBhZGRyZXNzLk5ldG1hc2tWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLCAqYXJncykKKworICAgIGRlZiBhc3NlcnRJbnN0YW5jZXNFcXVhbChzZWxmLCBsaHMsIHJocyk6CisgICAgICAgICIiIkNoZWNrIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBwcm9kdWNlIGVxdWl2YWxlbnQgaW5zdGFuY2VzIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWN0b3J5KGxocyksIHNlbGYuZmFjdG9yeShyaHMpKQorCitjbGFzcyBDb21tb25UZXN0TWl4aW46CisKKyAgICBkZWYgdGVzdF9lbXB0eV9hZGRyZXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KCIiKQorCisgICAgZGVmIHRlc3RfZmxvYXRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShyZXByKCIxLjAiKSkpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KDEuMCkKKworICAgIGRlZiB0ZXN0X25vdF9hbl9pbmRleF9pc3N1ZTE1NTU5KHNlbGYpOgorICAgICAgICAjIEltcGxlbWVudGluZyBfX2luZGV4X18gbWFrZXMgZm9yIGEgdmVyeSBuYXN0eSBpbnRlcmFjdGlvbiB3aXRoIHRoZQorICAgICAgICAjIGJ5dGVzIGNvbnN0cnVjdG9yLiBUaHVzLCB3ZSBkaXNhbGxvdyBpbXBsaWNpdCB1c2UgYXMgYW4gaW50ZWdlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmluZGV4LCBzZWxmLmZhY3RvcnkoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGV4LCBzZWxmLmZhY3RvcnkoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIHNlbGYuZmFjdG9yeSgxKSkKKworCitjbGFzcyBDb21tb25UZXN0TWl4aW5fdjQoQ29tbW9uVGVzdE1peGluKToKKworICAgIGRlZiB0ZXN0X2xlYWRpbmdfemVyb3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjAwMC4wMDAuMDAwLjAwMCIsICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMTkyLjE2OC4wMDAuMDAxIiwgIjE5Mi4xNjguMC4xIikKKworICAgIGRlZiB0ZXN0X2ludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgwLCAiMC4wLjAuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjE5Mi4xNjguMC4xIikKKworICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChieXRlcy5mcm9taGV4KCIwMDAwMDAwMCIpLCAiMC4wLjAuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSwgIjE5Mi4xNjguMC4xIikKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICItMSAoPCAwKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoLTEpCisKKyAgICBkZWYgdGVzdF9sYXJnZV9pbnRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBtc2cgPSAiJWQgKD49IDIqKjMyKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgMioqMzIpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgyKiozMikKKworICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6CisgICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gNCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgICAgIGFzc2VydEJhZExlbmd0aCgzKQorICAgICAgICBhc3NlcnRCYWRMZW5ndGgoNSkKKworY2xhc3MgQ29tbW9uVGVzdE1peGluX3Y2KENvbW1vblRlc3RNaXhpbik6CisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3plcm9zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIwMDAwOjowMDAwIiwgIjo6IikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMDAwOjpjMGE4OjAwMDEiLCAiOjpjMGE4OjEiKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDAsICI6OiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjo6YzBhODoxIikKKworICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKKyAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjoiKQorICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OmMwYTg6MSIpCisgICAgICAgIGFkZHIgPSBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpICsgYnl0ZXMoMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgImMwYTg6MTo6IikKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICItMSAoPCAwKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoLTEpCisKKyAgICBkZWYgdGVzdF9sYXJnZV9pbnRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBtc2cgPSAiJWQgKD49IDIqKjEyOCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIDIqKjEyOCkpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KDIqKjEyOCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6CisgICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gMTYpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRMZW5ndGgoMTUpCisgICAgICAgIGFzc2VydEJhZExlbmd0aCgxNykKKworCitjbGFzcyBBZGRyZXNzVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBDb21tb25UZXN0TWl4aW5fdjQpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MKKworICAgIGRlZiB0ZXN0X25ldHdvcmtfcGFzc2VkX2FzX2FkZHJlc3Moc2VsZik6CisgICAgICAgIGFkZHIgPSAiMTI3LjAuMC4xLzI0IgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIsIGFkZHIpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJXIiLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTI3LjAuMSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi4uNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIuNDIuIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyLjQyLi4uIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIi40Mi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIuLi40Mi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIwMTYuMDE2LjAxNiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIwMTYuMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIwMDAiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMHgwYS4weDBhLjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMHgwYS4weDBhIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiLiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCJib2d1cyIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCJib2d1cy5jb20iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTAwMCIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMDAwMDAwMDAwMDAwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjE5Mi4xNjguMC4xLmNvbSIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9vY3RldChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiRW1wdHkgb2N0ZXQgbm90IHBlcm1pdHRlZCBpbiAlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIi4uLiIpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJhY3RlcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIgaW4gJXIiICUgKG9jdGV0LCBhZGRyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjB4MGEuMHgwYS4weDBhLjB4MGEiLCAiMHgwYSIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIweGEuMHgwYS4weDBhLjB4MGEiLCAiMHhhIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjQyLjQyLjQyLi0wIiwgIi0wIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjQyLjQyLjQyLiswIiwgIiswIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjQyLjQyLjQyLi00MiIsICItNDIiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiKzEuKzIuKzMuNCIsICIrMSIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxLjIuMy40ZTAiLCAiNGUwIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEuMi4zLjQ6OiIsICI0OjoiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMS5hLjIuMyIsICJhIikKKworICAgIGRlZiB0ZXN0X29jdGFsX2RlY2ltYWxfYW1iaWd1aXR5KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIkFtYmlndW91cyAob2N0YWwvZGVjaW1hbCkgdmFsdWUgaW4gJXIgbm90IHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChvY3RldCwgYWRkcikpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMDE2LjAxNi4wMTYuMDE2IiwgIjAxNiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIwMDEuMDAwLjAwOC4wMTYiLCAiMDA4IikKKworICAgIGRlZiB0ZXN0X29jdGV0X2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDMgY2hhcmFjdGVycyBwZXJtaXR0ZWQgaW4gJXIgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAob2N0ZXQsIGFkZHIpKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjAwMDAuMDAwLjAwMC4wMDAiLCAiMDAwMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxMjM0NS42Nzg5OS4tNTQzMjEuLTk4NzY1IiwgIjEyMzQ1IikKKworICAgIGRlZiB0ZXN0X29jdGV0X2xpbWl0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIk9jdGV0ICVkICg+IDI1NSkgbm90IHBlcm1pdHRlZCBpbiAlciIgJSAob2N0ZXQsIGFkZHIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMjU3LjAuMC4wIiwgMjU3KQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMTkyLjE2OC4wLjk5OSIsIDk5OSkKKworCitjbGFzcyBBZGRyZXNzVGVzdENhc2VfdjYoQmFzZVRlc3RDYXNlLCBDb21tb25UZXN0TWl4aW5fdjYpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MKKworICAgIGRlZiB0ZXN0X25ldHdvcmtfcGFzc2VkX2FzX2FkZHJlc3Moc2VsZik6CisgICAgICAgIGFkZHIgPSAiOjoxLzI0IgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIsIGFkZHIpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl9ub3RfZW5vdWdoX3BhcnRzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiQXQgbGVhc3QgMyBwYXJ0cyBleHBlY3RlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCJGRURDOjk4NzgiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdG9vX21hbnlfY29sb25zKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCA4IGNvbG9ucyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjk6ODo3OjY6NTo0OjM6OjI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMDo5Ojg6Nzo2OjU6NDozOjI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6Ojg6Nzo2OjU6NDozOjI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI4Ojc6Njo1OjQ6MzoyOjE6OiIpCisgICAgICAgICMgQSB0cmFpbGluZyBJUHY0IGFkZHJlc3MgaXMgdHdvIHBhcnRzCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMDo5Ojg6Nzo2OjU6NDozOjQyLjQyLjQyLjQyIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3Rvb19tYW55X3BhcnRzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiRXhhY3RseSA4IHBhcnRzIGV4cGVjdGVkIHdpdGhvdXQgJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTowOjA6MDowOjA6MDowOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOTo4Ojc6Njo1OjQ6MzoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNzo2OjU6NDozOjI6MSIpCisgICAgICAgICMgQSB0cmFpbGluZyBJUHY0IGFkZHJlc3MgaXMgdHdvIHBhcnRzCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI5Ojg6Nzo2OjU6NDozOjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjc6Njo1OjQ6Mzo0Mi40Mi40Mi40MiIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90b29fbWFueV9wYXJ0c193aXRoX2RvdWJsZV9jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkV4cGVjdGVkIGF0IG1vc3QgNyBvdGhlciBwYXJ0cyB3aXRoICc6OicgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjE6MjozOjQ6OjU6Njo3OjgiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfcmVwZWF0ZWRfZG91YmxlX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCBvbmUgJzo6JyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6OjE6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTo6Mjo6Mzo6NDo1IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjIwMDE6OmRiOjo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjoxOjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjozZmZlOjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjozZmZlOjoxOjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6OjE6OjE6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjozZmZlOjoxOjoxOiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6OjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgnMjAwMTpkYjg6OjoxJykKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X2xlYWRpbmdfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoyMDAxOmRiODo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6MToyOjM6NDo1OjY6NyIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6MToyOjM6NDo1OjY6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo2OjU6NDozOjI6MTo6IikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3RyYWlsaW5nX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMjAwMTpkYjg6OjE6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjE6MjozOjQ6NTo2Ojc6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6MS4yLjMuNDoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjo3OjY6NTo0OjM6MjoiKQorCisgICAgZGVmIHRlc3RfYmFkX3Y0X3BhcnRfaW4oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRBZGRyZXNzUGFydChhZGRyLCB2NF9lcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCIlcyBpbiAlciIsIHY0X2Vycm9yLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiM2ZmZTo6MS5uZXQiLCAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEubmV0JyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxMjcuMC4xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIDQgb2N0ZXRzIGluICcxMjcuMC4xJyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCI6OjEuMi4zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIDQgb2N0ZXRzIGluICcxLjIuMyciKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiOjoxLjIuMy40LjUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEuMi4zLjQuNSciKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiM2ZmZTo6MS4xLjEubmV0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICduZXQnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluICcxLjEuMS5uZXQnIikKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcmFjdGVycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFBhcnQoYWRkciwgcGFydCk6CisgICAgICAgICAgICBtc2cgPSAiT25seSBoZXggZGlnaXRzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIgJSAocGFydCwgYWRkcikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6Omdvb2ciLCAiZ29vZyIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6Oi0wIiwgIi0wIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6KzAiLCAiKzAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjotMSIsICItMSIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjEuMi4zLjQ6OiIsICIxLjIuMy40IikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgnMTIzNDpheHk6OmInLCAiYXh5IikKKworICAgIGRlZiB0ZXN0X3BhcnRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkUGFydChhZGRyLCBwYXJ0KToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDQgY2hhcmFjdGVycyBwZXJtaXR0ZWQgaW4gJXIgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgcGFydCwgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiOjowMDAwMCIsICIwMDAwMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6OjEwMDAwIiwgIjEwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiMDIwMDE6ZGI4OjoiLCAiMDIwMDEiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCcyMDAxOjg4ODg4ODo6MScsICI4ODg4ODgiKQorCisKK2NsYXNzIE5ldG1hc2tUZXN0TWl4aW5fdjQoQ29tbW9uVGVzdE1peGluX3Y0KToKKyAgICAiIiJJbnB1dCB2YWxpZGF0aW9uIG9uIGludGVyZmFjZXMgYW5kIG5ldHdvcmtzIGlzIHZlcnkgc2ltaWxhciIiIgorCisgICAgZGVmIHRlc3Rfc3BsaXRfbmV0bWFzayhzZWxmKToKKyAgICAgICAgYWRkciA9ICIxLjIuMy40LzMyLzI0IgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJPbmx5IG9uZSAnLycgcGVybWl0dGVkIGluICVyIiAlIGFkZHIpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZEFkZHJlc3MoYWRkciwgZGV0YWlscyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKGRldGFpbHMpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi8iLCAiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIvOCIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoImJvZ3VzIiwgIkV4cGVjdGVkIDQgb2N0ZXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiZ29vZ2xlLmNvbSIsICJFeHBlY3RlZCA0IG9jdGV0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjEwLzgiLCAiRXhwZWN0ZWQgNCBvY3RldHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCI6OjEuMi4zLjQiLCAiT25seSBkZWNpbWFsIGRpZ2l0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjEuMi4zLjI1NiIsIHJlLmVzY2FwZSgiMjU2ICg+IDI1NSkiKSkKKworICAgIGRlZiB0ZXN0X25ldG1hc2tfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkTmV0bWFzayhhZGRyLCBuZXRtYXNrKToKKyAgICAgICAgICAgIG1zZyA9ICIlciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydE5ldG1hc2tFcnJvcihtc2cgJSBuZXRtYXNrKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiVzLyVzIiAlIChhZGRyLCBuZXRtYXNrKSkKKworICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjIuMy40IiwgIiIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiMzMiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjIuMy40IiwgIjI1NC4yNTQuMjU1LjI1NiIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAiMjU0Lnh5ei4yLjMiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjEuMS4xIiwgIjI0MC4yNTUuMC4wIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICJwdWRkaW5nIikKKworY2xhc3MgSW50ZXJmYWNlVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y0KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UKKworY2xhc3MgTmV0d29ya1Rlc3RDYXNlX3Y0KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92NCk6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaworCisKK2NsYXNzIE5ldG1hc2tUZXN0TWl4aW5fdjYoQ29tbW9uVGVzdE1peGluX3Y2KToKKyAgICAiIiJJbnB1dCB2YWxpZGF0aW9uIG9uIGludGVyZmFjZXMgYW5kIG5ldHdvcmtzIGlzIHZlcnkgc2ltaWxhciIiIgorCisgICAgZGVmIHRlc3Rfc3BsaXRfbmV0bWFzayhzZWxmKToKKyAgICAgICAgYWRkciA9ICJjYWZlOmNhZmU6Oi8xMjgvMTkwIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJPbmx5IG9uZSAnLycgcGVybWl0dGVkIGluICVyIiAlIGFkZHIpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZEFkZHJlc3MoYWRkciwgZGV0YWlscyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKGRldGFpbHMpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi8iLCAiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIvOCIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoImdvb2dsZS5jb20iLCAiQXQgbGVhc3QgMyBwYXJ0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjEuMi4zLjQiLCAiQXQgbGVhc3QgMyBwYXJ0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjEwLzgiLCAiQXQgbGVhc3QgMyBwYXJ0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjEyMzQ6YXh5OjpiIiwgIk9ubHkgaGV4IGRpZ2l0cyIpCisKKyAgICBkZWYgdGVzdF9uZXRtYXNrX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE5ldG1hc2soYWRkciwgbmV0bWFzayk6CisgICAgICAgICAgICBtc2cgPSAiJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzayIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnROZXRtYXNrRXJyb3IobXNnICUgbmV0bWFzayk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KCIlcy8lcyIgJSAoYWRkciwgbmV0bWFzaykpCisKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIiIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICI6OjEiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiMTo6IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIjEyOSIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICJwdWRkaW5nIikKKworY2xhc3MgSW50ZXJmYWNlVGVzdENhc2VfdjYoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y2KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UKKworY2xhc3MgTmV0d29ya1Rlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92Nik6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaworCisKK2NsYXNzIEZhY3RvcnlGdW5jdGlvbkVycm9ycyhCYXNlVGVzdENhc2UpOgorCisgICAgZGVmIGFzc2VydEZhY3RvcnlFcnJvcihzZWxmLCBmYWN0b3J5LCBraW5kKToKKyAgICAgICAgIiIiRW5zdXJlIGEgY2xlYW4gVmFsdWVFcnJvciB3aXRoIHRoZSBleHBlY3RlZCBtZXNzYWdlIiIiCisgICAgICAgIGFkZHIgPSAiY2FtZWxvdCIKKyAgICAgICAgbXNnID0gJyVyIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgJXMnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRDbGVhbkVycm9yKFZhbHVlRXJyb3IsIG1zZywgYWRkciwga2luZCk6CisgICAgICAgICAgICBmYWN0b3J5KGFkZHIpCisKKyAgICBkZWYgdGVzdF9pcF9hZGRyZXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhY3RvcnlFcnJvcihpcGFkZHJlc3MuaXBfYWRkcmVzcywgImFkZHJlc3MiKQorCisgICAgZGVmIHRlc3RfaXBfaW50ZXJmYWNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhY3RvcnlFcnJvcihpcGFkZHJlc3MuaXBfaW50ZXJmYWNlLCAiaW50ZXJmYWNlIikKKworICAgIGRlZiB0ZXN0X2lwX25ldHdvcmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9uZXR3b3JrLCAibmV0d29yayIpCisKKworY2xhc3MgQ29tcGFyaXNvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHY0YWRkciA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygxKQorICAgIHY0bmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKDEpCisgICAgdjRpbnRmID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoMSkKKyAgICB2NmFkZHIgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoMSkKKyAgICB2Nm5ldCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygxKQorICAgIHY2aW50ZiA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKDEpCisKKyAgICB2NF9hZGRyZXNzZXMgPSBbdjRhZGRyLCB2NGludGZdCisgICAgdjRfb2JqZWN0cyA9IHY0X2FkZHJlc3NlcyArIFt2NG5ldF0KKyAgICB2Nl9hZGRyZXNzZXMgPSBbdjZhZGRyLCB2NmludGZdCisgICAgdjZfb2JqZWN0cyA9IHY2X2FkZHJlc3NlcyArIFt2Nm5ldF0KKyAgICBvYmplY3RzID0gdjRfb2JqZWN0cyArIHY2X29iamVjdHMKKworICAgIGRlZiB0ZXN0X2ZvcmVpZ25fdHlwZV9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgIyBfX2VxX18gc2hvdWxkIG5ldmVyIHJhaXNlIFR5cGVFcnJvciBkaXJlY3RseQorICAgICAgICBvdGhlciA9IG9iamVjdCgpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvYmosIG90aGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvYmogPT0gb3RoZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5fX2VxX18ob3RoZXIpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLl9fbmVfXyhvdGhlciksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZV9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgbm9uZSBvZiB0aGUgaW50ZXJuYWwgb2JqZWN0cyBhY2NpZGVudGFsbHkKKyAgICAgICAgIyBleHBvc2UgdGhlIHJpZ2h0IHNldCBvZiBhdHRyaWJ1dGVzIHRvIGJlY29tZSAiZXF1YWwiCisgICAgICAgIGZvciBsaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgZm9yIHJocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICAgICAgaWYgbGhzIGlzIHJoczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxocywgcmhzKQorCisgICAgZGVmIHRlc3RfY29udGFpbm1lbnQoc2VsZik6CisgICAgICAgIGZvciBvYmogaW4gc2VsZi52NF9hZGRyZXNzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9iaiwgc2VsZi52NG5ldCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY2X2FkZHJlc3NlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob2JqLCBzZWxmLnY2bmV0KQorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjRfb2JqZWN0cyArIFtzZWxmLnY2bmV0XToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ob2JqLCBzZWxmLnY2bmV0KQorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjZfb2JqZWN0cyArIFtzZWxmLnY0bmV0XToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ob2JqLCBzZWxmLnY0bmV0KQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZV9vcmRlcmluZyhzZWxmKToKKyAgICAgICAgZm9yIGxocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBmb3IgcmhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxocywgdHlwZShyaHMpKSBvciBpc2luc3RhbmNlKHJocywgdHlwZShsaHMpKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzIDwgcmhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPiByaHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA8PSByaHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA+PSByaHMpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX2tleShzZWxmKToKKyAgICAgICAgIyB3aXRoIGdldF9taXhlZF90eXBlX2tleSwgeW91IGNhbiBzb3J0IGFkZHJlc3NlcyBhbmQgbmV0d29yay4KKyAgICAgICAgdjRfb3JkZXJlZCA9IFtzZWxmLnY0YWRkciwgc2VsZi52NG5ldCwgc2VsZi52NGludGZdCisgICAgICAgIHY2X29yZGVyZWQgPSBbc2VsZi52NmFkZHIsIHNlbGYudjZuZXQsIHNlbGYudjZpbnRmXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHY0X29yZGVyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYudjRfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHY2X29yZGVyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYudjZfb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHY0X29yZGVyZWQgKyB2Nl9vcmRlcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLm9iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1pcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb3RJbXBsZW1lbnRlZCwgaXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleShvYmplY3QpKQorCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3ZlcnNpb25zKHNlbGYpOgorICAgICAgICAjIFRoZXNlIHNob3VsZCBhbHdheXMgcmFpc2UgVHlwZUVycm9yCisgICAgICAgIHY0YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgdjRuZXQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpCisgICAgICAgIHY2YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKQorICAgICAgICB2Nm5ldCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRhZGRyLl9fbHRfXywgdjZhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0YWRkci5fX2d0X18sIHY2YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NG5ldC5fX2x0X18sIHY2bmV0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0bmV0Ll9fZ3RfXywgdjZuZXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NmFkZHIuX19sdF9fLCB2NGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZhZGRyLl9fZ3RfXywgdjRhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2bmV0Ll9fbHRfXywgdjRuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZuZXQuX19ndF9fLCB2NG5ldCkKKworCisKK2NsYXNzIElwYWRkclVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5pcHY0X2FkZHJlc3MgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjQnKQorICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjQnKQorICAgICAgICBzZWxmLmlwdjRfbmV0d29yayA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuMC8yNCcpCisgICAgICAgICNzZWxmLmlwdjRfaG9zdG1hc2sgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMTAuMC4wLjEvMC4yNTUuMjU1LjI1NScpCisgICAgICAgIHNlbGYuaXB2Nl9hZGRyZXNzID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxJykKKyAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKAorICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDowOjA6MS82NCcpCisgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY0JykKKworICAgIGRlZiB0ZXN0UmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NEludGVyZmFjZSgnMS4yLjMuNC8zMicpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY2SW50ZXJmYWNlKCc6OjEvMTI4JykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MScpKSkKKworICAgICMgaXNzdWU1NworICAgIGRlZiB0ZXN0QWRkcmVzc0ludE1hdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykgKyAyNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMi4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykgLSAyNTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMC4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSArICgyKioxNiAtIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmYnKSAtICgyKioxNiAtIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpCisKKyAgICBkZWYgdGVzdEludmFsaWRJbnRUb0J5dGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MudjRfaW50X3RvX3BhY2tlZCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52NF9pbnRfdG9fcGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAyICoqIGlwYWRkcmVzcy5JUFY0TEVOR1RIKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MudjZfaW50X3RvX3BhY2tlZCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52Nl9pbnRfdG9fcGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAyICoqIGlwYWRkcmVzcy5JUFY2TEVOR1RIKQorCisgICAgZGVmIHRlc3RJbnRlcm5hbHMoc2VsZik6CisgICAgICAgIGZpcnN0LCBsYXN0ID0gaXBhZGRyZXNzLl9maW5kX2FkZHJlc3NfcmFuZ2UoWworICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMCcpLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMicpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXJzdCwgbGFzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMjgsIGlwYWRkcmVzcy5fY291bnRfcmlnaHRoYW5kX3plcm9fYml0cygwLCAxMjgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY0TmV0d29yaygnMS4yLjMuMC8yNCcpIiwgcmVwcihzZWxmLmlwdjRfbmV0d29yaykpCisKKyAgICBkZWYgdGVzdE1pc3NpbmdBZGRyZXNzVmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLip2ZXJzaW9uIik6CisgICAgICAgICAgICBicm9rZW4udmVyc2lvbgorCisgICAgZGVmIHRlc3RNaXNzaW5nTmV0d29ya1ZlcnNpb24oc2VsZik6CisgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qdmVyc2lvbiIpOgorICAgICAgICAgICAgYnJva2VuLnZlcnNpb24KKworICAgIGRlZiB0ZXN0TWlzc2luZ0FkZHJlc3NDbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcGFzcworICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLiphZGRyZXNzIik6CisgICAgICAgICAgICBicm9rZW4uX2FkZHJlc3NfY2xhc3MKKworICAgIGRlZiB0ZXN0R2V0TmV0d29yayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwgMTY5MDkwNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksICcxLjIuMy4wJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjZfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQyNTQwNjE2ODI5MTgyNDY5NDMzNDAzNjQ3Mjk0MDIyMDkwNzUyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuaG9zdG1hc2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICc6OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorCisgICAgZGVmIHRlc3RJcEZyb21JbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS5faXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoMTY5MDkwNjApLl9pcCkKKworICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMi4zLjQnKQorICAgICAgICBpcHY2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDowOjA6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXB2NCwgaXBhZGRyZXNzLmlwX25ldHdvcmsoaW50KGlwdjQubmV0d29ya19hZGRyZXNzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXB2NiwgaXBhZGRyZXNzLmlwX25ldHdvcmsoaW50KGlwdjYubmV0d29ya19hZGRyZXNzKSkpCisKKyAgICAgICAgdjZfaW50ID0gNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLl9pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSh2Nl9pbnQpLl9pcCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9uZXR3b3JrKHNlbGYuaXB2NF9hZGRyZXNzLl9pcCkudmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9uZXR3b3JrKHNlbGYuaXB2Nl9hZGRyZXNzLl9pcCkudmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA2KQorCisgICAgZGVmIHRlc3RJcEZyb21QYWNrZWQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UuX2lwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoYidceDAxXHgwMlx4MDNceDA0JykuX2lwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MoJzI1NS4yNTQuMjUzLjI1MicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MoYidceGZmXHhmZVx4ZmRceGZjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICBiJ1x4MjBceDAxXHgwNlx4NThceDAyXHgyYVx4Y2FceGZlJworICAgICAgICAgICAgICAgICAgICBiJ1x4MDJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJykuaXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcygnZmZmZjoyOjM6NDpmZmZmOjonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKGInXHhmZlx4ZmZceDAwXHgwMlx4MDBceDAzXHgwMFx4MDQnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZmJyArIGInXHgwMCcgKiA2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzKCc6OicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MoYidceDAwJyAqIDE2KSkKKworICAgIGRlZiB0ZXN0R2V0SXAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2NF9pbnRlcmZhY2UuaXApLCAxNjkwOTA2MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X2ludGVyZmFjZS5pcCksICcxLjIuMy40JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjZfaW50ZXJmYWNlLmlwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0MjU0MDYxNjgyOTE4MjQ2OTQzMzU0Nzc2MjQ4MjA5Nzk0NjYyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X2ludGVyZmFjZS5pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MScpCisKKyAgICBkZWYgdGVzdEdldE5ldG1hc2soc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2NF9uZXR3b3JrLm5ldG1hc2spLCA0Mjk0OTY3MDQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5uZXRtYXNrKSwgJzI1NS4yNTUuMjU1LjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjZfbmV0d29yay5uZXRtYXNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAzNDAyODIzNjY5MjA5Mzg0NjM0NDQ5Mjc4NjMzNTgwNTg2NTk4NDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsucHJlZml4bGVuLCA2NCkKKworICAgIGRlZiB0ZXN0WmVyb05ldG1hc2soc2VsZik6CisgICAgICAgIGlwdjRfemVyb19uZXRtYXNrID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGlwdjRfemVyb19uZXRtYXNrLm5ldHdvcmsubmV0bWFzayksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY0X3plcm9fbmV0bWFzay5uZXR3b3JrLl9pc192YWxpZF9uZXRtYXNrKAorICAgICAgICAgICAgICAgIHN0cigwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY0X3plcm9fbmV0bWFzay5faXNfdmFsaWRfbmV0bWFzaygnMCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2NF96ZXJvX25ldG1hc2suX2lzX3ZhbGlkX25ldG1hc2soJzAuMC4wLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcHY0X3plcm9fbmV0bWFzay5faXNfdmFsaWRfbmV0bWFzaygnaW52YWxpZCcpKQorCisgICAgICAgIGlwdjZfemVyb19uZXRtYXNrID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoaXB2Nl96ZXJvX25ldG1hc2submV0d29yay5uZXRtYXNrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjZfemVyb19uZXRtYXNrLm5ldHdvcmsuX2lzX3ZhbGlkX25ldG1hc2soCisgICAgICAgICAgICAgICAgc3RyKDApKSkKKworICAgIGRlZiB0ZXN0SVB2NE5ldEFuZEhvc3RtYXNrcyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY0X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJ2ludmFsaWQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMTI4LjEyOC4xMjguMTI4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcxMjguMTI4LjEyOC4xMjcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzEyOC4xMjguMTI4LjI1NScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcyNTUuMTI4LjEyOC4xMjgnKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfaG9zdG1hc2soJ2ludmFsaWQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ldC5faXNfaG9zdG1hc2soJzEyOC4yNTUuMjU1LjI1NScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfaG9zdG1hc2soJzI1NS4yNTUuMjU1LjI1NScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfaG9zdG1hc2soJzEuMi4zLjQnKSkKKworICAgICAgICBuZXQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC8wLjAuMC4yNTUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDI0LCBuZXQucHJlZml4bGVuKQorCisgICAgZGVmIHRlc3RHZXRCcm9hZGNhc3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2NF9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwgMTY5MDkzMTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwgJzEuMi4zLjI1NScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQyNTQwNjE2ODI5MTgyNDY5NDUxODUwMzkxMzY3NzMxNjQyMzY3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorCisgICAgZGVmIHRlc3RHZXRQcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnByZWZpeGxlbiwgMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnByZWZpeGxlbiwgNjQpCisKKyAgICBkZWYgdGVzdEdldFN1cGVybmV0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KCkucHJlZml4bGVuLCAyMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoKS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMi4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcwLjAuMC4wLzAnKS5uZXR3b3JrLnN1cGVybmV0KCksCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzAuMC4wLjAvMCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoKS5wcmVmaXhsZW4sIDYzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjAvMCcpLm5ldHdvcmsuc3VwZXJuZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzo6MC8wJykpCisKKyAgICBkZWYgdGVzdEdldFN1cGVybmV0MyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgzKS5wcmVmaXhsZW4sIDIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgzKS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMC4wJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KDMpLnByZWZpeGxlbiwgNjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KDMpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWY4OjonKQorCisgICAgZGVmIHRlc3RHZXRTdXBlcm5ldDQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZj0yLCBuZXdfcHJlZml4PTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KHByZWZpeGxlbl9kaWZmPTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KG5ld19wcmVmaXg9MjIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZj0yLCBuZXdfcHJlZml4PTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTY1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KHByZWZpeGxlbl9kaWZmPTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KG5ld19wcmVmaXg9NjIpKQorCisgICAgZGVmIHRlc3RIb3N0cyhzZWxmKToKKyAgICAgICAgaG9zdHMgPSBsaXN0KHNlbGYuaXB2NF9uZXR3b3JrLmhvc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjU0LCBsZW4oaG9zdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMScpLCBob3N0c1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjI1NCcpLCBob3N0c1stMV0pCisKKyAgICAgICAgIyBzcGVjaWFsIGNhc2Ugd2hlcmUgb25seSAxIGJpdCBpcyBsZWZ0IGZvciBhZGRyZXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lwYWRkcmVzcy5JUHY0QWRkcmVzcygnMi4wLjAuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzIuMC4wLjEnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpcGFkZHJlc3MuaXBfbmV0d29yaygnMi4wLjAuMC8zMScpLmhvc3RzKCkpKQorCisgICAgZGVmIHRlc3RGYW5jeVN1Ym5ldHRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9MykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9MjcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhuZXdfcHJlZml4PTIzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeD0yNykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9NCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9NjgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhuZXdfcHJlZml4PTYzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj00LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeD02OCkpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzBdLnByZWZpeGxlbiwgMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGxpc3QoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjMuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGxpc3QoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMV0ubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjMuMTI4JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cygpKVswXS5wcmVmaXhsZW4sIDY1KQorCisgICAgZGVmIHRlc3RHZXRTdWJuZXRGb3JTaW5nbGUzMihzZWxmKToKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMi4zLjQvMzInKQorICAgICAgICBzdWJuZXRzMSA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygpXQorICAgICAgICBzdWJuZXRzMiA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgWycxLjIuMy40LzMyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIHN1Ym5ldHMyKQorCisgICAgZGVmIHRlc3RHZXRTdWJuZXRGb3JTaW5nbGUxMjgoc2VsZik6CisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCc6OjEvMTI4JykKKyAgICAgICAgc3VibmV0czEgPSBbc3RyKHgpIGZvciB4IGluIGlwLnN1Ym5ldHMoKV0KKyAgICAgICAgc3VibmV0czIgPSBbc3RyKHgpIGZvciB4IGluIGlwLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIFsnOjoxLzEyOCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBzdWJuZXRzMikKKworICAgIGRlZiB0ZXN0U3VibmV0MihzZWxmKToKKyAgICAgICAgaXBzID0gW3N0cih4KSBmb3IgeCBpbiBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBzLAorICAgICAgICAgICAgWycxLjIuMy4wLzI2JywgJzEuMi4zLjY0LzI2JywgJzEuMi4zLjEyOC8yNicsICcxLjIuMy4xOTIvMjYnXSkKKworICAgICAgICBpcHN2NiA9IFtzdHIoeCkgZm9yIHggaW4gc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGlwc3Y2LAorICAgICAgICAgICAgWycyMDAxOjY1ODoyMmE6Y2FmZTo6LzY2JywKKyAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6NDAwMDo6LzY2JywKKyAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6ODAwMDo6LzY2JywKKyAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6YzAwMDo6LzY2J10pCisKKyAgICBkZWYgdGVzdFN1Ym5ldEZhaWxzRm9yTGFyZ2VDaWRyRGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5zdWJuZXRzKDY1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyg2NSkpCisKKyAgICBkZWYgdGVzdFN1cGVybmV0RmFpbHNGb3JMYXJnZUNpZHJEaWZmKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsuc3VwZXJuZXQsIDI1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuc3VwZXJuZXQsIDY1KQorCisgICAgZGVmIHRlc3RTdWJuZXRGYWlsc0Zvck5lZ2F0aXZlQ2lkckRpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5zdWJuZXRzKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5zdWJuZXRzKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cygtMSkpCisKKyAgICBkZWYgdGVzdEdldE51bV9BZGRyZXNzZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsubnVtX2FkZHJlc3NlcywgMjU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVswXS5udW1fYWRkcmVzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEyOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgpLm51bV9hZGRyZXNzZXMsIDUxMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLm51bV9hZGRyZXNzZXMsIDE4NDQ2NzQ0MDczNzA5NTUxNjE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cygpKVswXS5udW1fYWRkcmVzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgIDkyMjMzNzIwMzY4NTQ3NzU4MDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoKS5udW1fYWRkcmVzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgIDM2ODkzNDg4MTQ3NDE5MTAzMjMyKQorCisgICAgZGVmIHRlc3RDb250YWlucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy4xMjgvMjUnKSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmspCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi40LjEvMjQnKSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrKQorICAgICAgICAjIFdlIGNhbiB0ZXN0IGFkZHJlc3NlcyBhbmQgc3RyaW5nIGFzIHdlbGwuCisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4zNycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhZGRyMSBpbiBzZWxmLmlwdjRfbmV0d29yaykKKyAgICAgICAgIyBpc3N1ZSA2MSwgYmFkIG5ldHdvcmsgY29tcGFyaXNvbiBvbiBsaWtlLWlwJ2QgbmV0d29yayBvYmplY3RzCisgICAgICAgICMgd2l0aCBpZGVudGljYWwgYnJvYWRjYXN0IGFkZHJlc3Nlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMTYnKS5fX2NvbnRhaW5zX18oCisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjAuMC4wLzE1JykpKQorCisgICAgZGVmIHRlc3ROdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrWzVdKSwgJzEuMi4zLjUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBzZWxmLmlwdjRfbmV0d29yay5fX2dldGl0ZW1fXywgMjU2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrWzVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OjUnKQorCisgICAgZGVmIHRlc3RHZXRpdGVtKHNlbGYpOgorICAgICAgICAjIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9pcGFkZHItcHkvaXNzdWVzL2RldGFpbD9pZD0xNQorICAgICAgICBhZGRyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxNzIuMzEuMjU1LjEyOC8yNTUuMjU1LjI1NS4yNDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDI4LCBhZGRyLnByZWZpeGxlbikKKyAgICAgICAgYWRkcl9saXN0ID0gbGlzdChhZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjEyOCcsIHN0cihhZGRyX2xpc3RbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjEyOCcsIHN0cihhZGRyWzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xNDMnLCBzdHIoYWRkcl9saXN0Wy0xXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTQzJywgc3RyKGFkZHJbLTFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX2xpc3RbLTFdLCBhZGRyWy0xXSkKKworICAgIGRlZiB0ZXN0RXF1YWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlID09CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09IFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0gMikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82NCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09ICcnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PSAyKQorCisgICAgZGVmIHRlc3ROb3RFcXVhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0gMikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82NCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82MycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy40JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0gMikKKworICAgIGRlZiB0ZXN0U2xhc2gzMkNvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjQvMjU1LjI1NS4yNTUuMjU1JykpLCAnMS4yLjMuNC8zMicpCisKKyAgICBkZWYgdGVzdFNsYXNoMTI4Q29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEvMTI4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6OjEvMTI4JykKKworICAgIGRlZiB0ZXN0U2xhc2gwQ29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzAuMC4wLjAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy40LzAnKQorCisgICAgZGVmIHRlc3RDb2xsYXBzaW5nKHNlbGYpOgorICAgICAgICAjIHRlc3Qgb25seSBJUCBhZGRyZXNzZXMgaW5jbHVkaW5nIHNvbWUgZHVwbGljYXRlcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjInKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjMnKQorICAgICAgICBpcDUgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjQnKQorICAgICAgICBpcDYgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjAnKQorICAgICAgICAjIGNoZWNrIHRoYXQgYWRkcmVzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKAorICAgICAgICAgICAgW2lwMSwgaXAyLCBpcDMsIGlwNCwgaXA1LCBpcDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzMwJyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuNC8zMicpXSkKKworICAgICAgICAjIHRlc3QgYSBtaXggb2YgSVAgYWRkcmVzc2VzIGFuZCBuZXR3b3JrcyBpbmNsdWRpbmcgc29tZSBkdXBsaWNhdGVzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMicpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMycpCisgICAgICAgICNpcDUgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4xLjEuNC8zMCcpCisgICAgICAgICNpcDYgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4xLjEuNC8zMCcpCisgICAgICAgICMgY2hlY2sgdGhhdCBhZGRyZXNlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoW2lwMSwgaXAyLCBpcDMsIGlwNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMzAnKV0pCisKKyAgICAgICAgIyB0ZXN0IG9ubHkgSVAgbmV0d29ya3MKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzI0JykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzI0JykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMi4wLzI0JykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMy4wLzI0JykKKyAgICAgICAgaXA1ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuNC4wLzI0JykKKyAgICAgICAgIyBzdG9yZWQgaW4gbm8gcGFydGljdWxhciBvcmRlciBiL2Mgd2Ugd2FudCBDb2xsYXBzZUFkZHIgdG8gY2FsbAorICAgICAgICAjIFtdLnNvcnQKKyAgICAgICAgaXA2ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzIyJykKKyAgICAgICAgIyBjaGVjayB0aGF0IGFkZHJlc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwMywgaXA0LCBpcDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuNC4wLzI0JyldKQorCisgICAgICAgICMgdGVzdCB0aGF0IHR3byBhZGRyZXNzZXMgYXJlIHN1cGVybmV0J2VkIHByb3Blcmx5CisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoW2lwMSwgaXAyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yMycpXSkKKworICAgICAgICAjIHRlc3Qgc2FtZSBJUCBuZXR3b3JrcworICAgICAgICBpcF9zYW1lMSA9IGlwX3NhbWUyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4xLzMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICAgICAgICAgIFtpcF9zYW1lMSwgaXBfc2FtZTJdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwX3NhbWUxXSkKKworICAgICAgICAjIHRlc3Qgc2FtZSBJUCBhZGRyZXNzZXMKKyAgICAgICAgaXBfc2FtZTEgPSBpcF9zYW1lMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKAorICAgICAgICAgICAgICAgICAgICBbaXBfc2FtZTEsIGlwX3NhbWUyXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMS8zMicpXSkKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovMTAwJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovMTIwJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovOTYnKQorICAgICAgICAjIHRlc3QgdGhhdCBpcHY2IGFkZHJlc3NlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoW2lwMSwgaXAyLCBpcDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwgW2lwM10pCisKKyAgICAgICAgIyB0aGUgdG9lamFtIHRlc3QKKyAgICAgICAgYWRkcl90dXBsZXMgPSBbCisgICAgICAgICAgICAgICAgKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKSksCisgICAgICAgICAgICAgICAgKGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yNCcpLAorICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMjAnKSksCisgICAgICAgICAgICAgICAgKGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8zMicpLAorICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMjgnKSksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGlwMSwgaXAyIGluIGFkZHJfdHVwbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lwMSwgaXAyXSkKKworICAgIGRlZiB0ZXN0U3VtbWFyaXppbmcoc2VsZik6CisgICAgICAgICNpcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzCisgICAgICAgICNpcG5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrCisgICAgICAgIHN1bW1hcml6ZSA9IGlwYWRkcmVzcy5zdW1tYXJpemVfYWRkcmVzc19yYW5nZQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4yNTUnKQorCisgICAgICAgICMgc3VtbWFyaXplIHdvcmtzIG9ubHkgZm9yIElQdjQgJiBJUHY2CisgICAgICAgIGNsYXNzIElQdjdBZGRyZXNzKGlwYWRkcmVzcy5JUHY2QWRkcmVzcyk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA3CisgICAgICAgIGlwX2ludmFsaWQxID0gSVB2N0FkZHJlc3MoJzo6MScpCisgICAgICAgIGlwX2ludmFsaWQyID0gSVB2N0FkZHJlc3MoJzo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcF9pbnZhbGlkMSwgaXBfaW52YWxpZDIpKQorICAgICAgICAjIHRlc3QgdGhhdCBhIHN1bW1hcnkgb3ZlciBpcDQgJiBpcDYgZmFpbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXAxLCBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKSkKKyAgICAgICAgIyB0ZXN0IGEgLzI0IGlzIHN1bW1hcml6ZWQgcHJvcGVybHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wLzI0JykpCisgICAgICAgICMgdGVzdCBhbiAgSVB2NCByYW5nZSB0aGF0IGlzbid0IG9uIGEgbmV0d29yayBieXRlIGJvdW5kYXJ5CisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS44JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMC8yOScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuOCcpXSkKKyAgICAgICAgIyBhbGwhCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygwKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoaXBhZGRyZXNzLklQdjRBZGRyZXNzLl9BTExfT05FUykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcwLjAuMC4wLzAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKSkKKworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTo6JykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisgICAgICAgICMgdGVzdCBhIElQdjYgaXMgc3VtYW1yaXplZCBwcm9wZXJseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE6Oi8xNicpKQorICAgICAgICAjIHRlc3QgYW4gSVB2NiByYW5nZSB0aGF0IGlzbid0IG9uIGEgbmV0d29yayBieXRlIGJvdW5kYXJ5CisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyOjonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOjovMTYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzI6Oi8xMjgnKV0pCisKKyAgICAgICAgIyB0ZXN0IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaXJzdCBpcyBncmVhdGVyIHRoYW4gbGFzdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMC4wJykpKQorICAgICAgICAjIHRlc3QgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpcnN0IGFuZCBsYXN0IGFyZW4ndCBJUCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMC4wJykpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4wLjAnKSkpCisgICAgICAgICMgdGVzdCBleGNlcHRpb24gcmFpc2VkIHdoZW4gZmlyc3QgYW5kIGxhc3QgYXJlIG5vdCBzYW1lIHZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjAuMCcpKSkKKworICAgIGRlZiB0ZXN0QWRkcmVzc0NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoyJykpCisKKyAgICBkZWYgdGVzdEludGVyZmFjZUNvbXBhcmlzb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MicpKQorCisgICAgZGVmIHRlc3ROZXR3b3JrQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgIyBpcDEgYW5kIGlwMiBoYXZlIHRoZSBzYW1lIG5ldHdvcmsgYWRkcmVzcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMjQnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMzInKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4yLjAvMjQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEgPCBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDEpLCAwKQorCisgICAgICAgICMgaWYgYWRkcmVzc2VzIGFyZSB0aGUgc2FtZSwgc29ydCBieSBuZXRtYXNrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAyKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAyLmNvbXBhcmVfbmV0d29ya3MoaXAxKSwgMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMyksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMy5jb21wYXJlX25ldHdvcmtzKGlwMSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEuX2dldF9uZXR3b3Jrc19rZXkoKSA8IGlwMy5fZ2V0X25ldHdvcmtzX2tleSgpKQorCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMToyMDAwOjovOTYnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6MjAwMTo6Lzk2JykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmZmZmY6MjAwMDo6Lzk2JykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxIDwgaXAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAzID4gaXAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMyksIC0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxLl9nZXRfbmV0d29ya3Nfa2V5KCkgPCBpcDMuX2dldF9uZXR3b3Jrc19rZXkoKSkKKworICAgICAgICAjIFRlc3QgY29tcGFyaW5nIGRpZmZlcmVudCBwcm90b2NvbHMuCisgICAgICAgICMgU2hvdWxkIGFsd2F5cyByYWlzZSBhIFR5cGVFcnJvci4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5jb21wYXJlX25ldHdvcmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yaykKKyAgICAgICAgaXB2NiA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6Oi8wJykKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcwLjAuMC4wLzAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwdjQuX19sdF9fLCBpcHY2KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwdjQuX19ndF9fLCBpcHY2KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwdjYuX19sdF9fLCBpcHY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwdjYuX19ndF9fLCBpcHY0KQorCisgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAxOS4KKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMi4xMjgvMjUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMSA8IGlwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDEgPiBpcDEpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjMuMC8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEgPCBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAyIDwgaXAxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMSA+IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMiA+IGlwMSkKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMy4wLzI1JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMiA8IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDMgPCBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAyID4gaXAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAzID4gaXAyKQorCisgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAyOC4KKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjAvMzEnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMCcpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4yLzMxJykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjInKQorICAgICAgICBzb3J0ZWQgPSBbaXAxLCBpcDIsIGlwMywgaXA0XQorICAgICAgICB1bnNvcnRlZCA9IFtpcDIsIGlwNCwgaXAxLCBpcDNdCisgICAgICAgIHVuc29ydGVkLnNvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCwgdW5zb3J0ZWQpCisgICAgICAgIHVuc29ydGVkID0gW2lwNCwgaXAxLCBpcDMsIGlwMl0KKyAgICAgICAgdW5zb3J0ZWQuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkLCB1bnNvcnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcDEuX19sdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMTAuMTAuMCcpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwMi5fX2x0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xMC4xMC4wJykpCisKKyAgICAgICAgIyA8PSwgPj0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4yJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjInKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKSkKKworICAgIGRlZiB0ZXN0U3RyaWN0TmV0d29ya3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy5pcF9uZXR3b3JrLCAnMTkyLjE2OC4xLjEvMjQnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MuaXBfbmV0d29yaywgJzo6MS8xMjAnKQorCisgICAgZGVmIHRlc3RPdmVybGFwcyhzZWxmKToKKyAgICAgICAgb3RoZXIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMi4zLjAvMzAnKQorICAgICAgICBvdGhlcjIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMi4yLjAvMjQnKQorICAgICAgICBvdGhlcjMgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMi4yLjY0LzI2JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9uZXR3b3JrLm92ZXJsYXBzKG90aGVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfbmV0d29yay5vdmVybGFwcyhvdGhlcjIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3RoZXIyLm92ZXJsYXBzKG90aGVyMykpCisKKyAgICBkZWYgdGVzdEVtYmVkZGVkSXB2NChzZWxmKToKKyAgICAgICAgaXB2NF9zdHJpbmcgPSAnMTkyLjE2OC4wLjEnCisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZShpcHY0X3N0cmluZykKKyAgICAgICAgdjRjb21wYXRfaXB2NiA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OiVzJyAlIGlwdjRfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh2NGNvbXBhdF9pcHY2LmlwKSwgaW50KGlwdjQuaXApKQorICAgICAgICB2NG1hcHBlZF9pcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6ZmZmZjolcycgJSBpcHY0X3N0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2NG1hcHBlZF9pcHY2LmlwLCBpcHY0LmlwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3IsIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMToxLjEuMS4xOjEuMS4xLjEnKQorCisgICAgIyBJc3N1ZSA2NzogSVB2NiB3aXRoIGVtYmVkZGVkIElQdjQgYWRkcmVzcyBub3QgcmVjb2duaXplZC4KKyAgICBkZWYgdGVzdElQdjZBZGRyZXNzVG9vTGFyZ2Uoc2VsZik6CisgICAgICAgICMgUkZDNDI5MSAyLjUuNS4yCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6RkZGRjoxOTIuMC4yLjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6RkZGRjpjMDAwOjIwMScpKQorICAgICAgICAjIFJGQzQyOTEgMi4yIChwYXJ0IDMpIHg6OmQuZC5kLmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnRkZGRjo6MTkyLjAuMi4xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdGRkZGOjpjMDAwOjIwMScpKQorCisgICAgZGVmIHRlc3RJUFZlcnNpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2FkZHJlc3MudmVyc2lvbiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfYWRkcmVzcy52ZXJzaW9uLCA2KQorCisgICAgZGVmIHRlc3RNYXhQcmVmaXhMZW5ndGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS5tYXhfcHJlZml4bGVuLCAzMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm1heF9wcmVmaXhsZW4sIDEyOCkKKworICAgIGRlZiB0ZXN0UGFja2VkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9hZGRyZXNzLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MDFceDAyXHgwM1x4MDQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcyNTUuMjU0LjI1My4yNTInKS5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceGZmXHhmZVx4ZmRceGZjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfYWRkcmVzcy5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDIwXHgwMVx4MDZceDU4XHgwMlx4MmFceGNhXHhmZScKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MDJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnZmZmZjoyOjM6NDpmZmZmOjonKS5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceGZmXHhmZlx4MDBceDAyXHgwMFx4MDNceDAwXHgwNFx4ZmZceGZmJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYidceDAwJyAqIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MTowOjA6MDowJykucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMCcgKiA2ICsgYidceDAwXHgwMScgKyBiJ1x4MDAnICogOCkKKworICAgIGRlZiB0ZXN0SXBTdHJGcm9tUHJlZml4bGVuKHNlbGYpOgorICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjQuX2lwX3N0cmluZ19mcm9tX3ByZWZpeCgpLCAnMjU1LjI1NS4yNTUuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXB2NC5faXBfc3RyaW5nX2Zyb21fcHJlZml4KDI4KSwgJzI1NS4yNTUuMjU1LjI0MCcpCisKKyAgICBkZWYgdGVzdElwVHlwZShzZWxmKToKKyAgICAgICAgaXB2NG5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjIuMy40JykKKyAgICAgICAgaXB2NGFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4yLjMuNCcpCisgICAgICAgIGlwdjZuZXQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxLjIuMy40JykKKyAgICAgICAgaXB2NmFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxLjIuMy40JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmssIHR5cGUoaXB2NG5ldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzLCB0eXBlKGlwdjRhZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmssIHR5cGUoaXB2Nm5ldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZBZGRyZXNzLCB0eXBlKGlwdjZhZGRyKSkKKworICAgIGRlZiB0ZXN0UmVzZXJ2ZWRJcHY0KHNlbGYpOgorICAgICAgICAjIHRlc3QgbmV0d29ya3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICcyMjQuMS4xLjEvMzEnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyNDAuMC4wLjAnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzI0MC4wLjAuMCcpLmlzX3Jlc2VydmVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAnMTkyLjE2OC4xLjEvMTcnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjE2OS4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICcxMC4yNTUuMjU1LjI1NScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMS4wLjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMS4wLjAuMCcpLmlzX3Jlc2VydmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICcxNzIuMzEuMjU1LjI1NScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxNzIuMzIuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxNjkuMjU0LjEuMC8yNCcpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE2OS4yNTQuMTAwLjIwMC8yNCcpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTY5LjI1NS4xMDAuMjAwLzI0JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzEyNy4xMDAuMjAwLjI1NC8zMicpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICcxMjcuNDIuMC4wLzE2JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMjguMC4wLjAnKS5pc19sb29wYmFjaykKKworICAgICAgICAjIHRlc3QgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzAuMC4wLjAnKS5pc191bnNwZWNpZmllZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjI0LjEuMS4xJykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjQwLjAuMC4wJykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyNDAuMC4wLjEnKS5pc19yZXNlcnZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjM5LjI1NS4yNTUuMjU1JykuaXNfcmVzZXJ2ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OC4xLjEnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OS4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICcxMC4yNTUuMjU1LjI1NScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMS4wLjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJzE3Mi4zMS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE3Mi4zMi4wLjAnKS5pc19wcml2YXRlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTY5LjI1NC4xMDAuMjAwJykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTY5LjI1NS4xMDAuMjAwJykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjcuMTAwLjIwMC4yNTQnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTI3LjQyLjAuMCcpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTI4LjAuMC4wJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzAuMC4wLjAnKS5pc191bnNwZWNpZmllZCkKKworICAgIGRlZiB0ZXN0UmVzZXJ2ZWRJcHY2KHNlbGYpOgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZmZmY6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygyKioxMjggLSAxKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZmMDA6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZkZmY6OicpLmlzX211bHRpY2FzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZWNmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmZWZmOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmJmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZjAwOjonKS5pc19zaXRlX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZjMDA6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZjMDA6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmYmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZTAwOjonKS5pc19wcml2YXRlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlYTA6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZlYmY6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZlN2Y6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlYzA6OicpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcwOjA6OjA6MDEnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoxLzEyNycpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjonKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MicpLmlzX2xvb3BiYWNrKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzA6OjAnKS5pc191bnNwZWNpZmllZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjovMTI3JykuaXNfdW5zcGVjaWZpZWQpCisKKyAgICAgICAgIyB0ZXN0IGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZmZmOjonKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoMioqMTI4IC0gMSkuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZjAwOjonKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZGZmOjonKS5pc19tdWx0aWNhc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmVjZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmVmZjpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZiZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmYwMDo6JykuaXNfc2l0ZV9sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmYzAwOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmYzAwOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmJmZjpmZmZmOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmUwMDo6JykuaXNfcHJpdmF0ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZWEwOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmZWJmOmZmZmY6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmZTdmOmZmZmY6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZWMwOjonKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzA6MDo6MDowMScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MicpLmlzX2xvb3BiYWNrKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzA6OjAnKS5pc191bnNwZWNpZmllZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgICAgICMgc29tZSBnZW5lcmljIElFVEYgcmVzZXJ2ZWQgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwMDo6JykuaXNfcmVzZXJ2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzQwMDA6OjEvMTI4JykuaXNfcmVzZXJ2ZWQpCisKKyAgICBkZWYgdGVzdElwdjRNYXBwZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6ZmZmZjoxOTIuMTY4LjEuMScpLmlwdjRfbWFwcGVkLAorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OmMwYTg6MTAxJykuaXB2NF9tYXBwZWQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6ZmZmZjpjMGE4OjEwMScpLmlwdjRfbWFwcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjEuMScpKQorCisgICAgZGVmIHRlc3RBZGRyRXhjbHVkZShzZWxmKToKKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjAvMjQnKQorICAgICAgICBhZGRyMiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNicpCisgICAgICAgIGFkZHIzID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjIuMS4wLzI0JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMS4xLjAnKQorICAgICAgICBhZGRyNSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC8zMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGxpc3QoYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjY0LzI2JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMTI4LzI1JyldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LCBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMSkpLCBbXSkKKworICAgIGRlZiB0ZXN0SGFzaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEwLjEuMS4wLzI0JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTAuMS4xLjAvMjQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjAvMjQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjAvMjQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMS4xLjAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMS4xLjAnKSkpCisgICAgICAgICMgaTcwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4yLjMuNCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICBpbnQoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMi4zLjQnKS5faXApKSkpCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOjonKQorICAgICAgICBkdW1teSA9IHt9CisgICAgICAgIGR1bW15W3NlbGYuaXB2NF9hZGRyZXNzXSA9IE5vbmUKKyAgICAgICAgZHVtbXlbc2VsZi5pcHY2X2FkZHJlc3NdID0gTm9uZQorICAgICAgICBkdW1teVtpcDFdID0gTm9uZQorICAgICAgICBkdW1teVtpcDJdID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgaW4gZHVtbXkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDIgaW4gZHVtbXkpCisKKyAgICBkZWYgdGVzdElQQmFzZXMoc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2NF9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBuZXQuY29tcHJlc3NlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBuZXQuX2lwX2ludF9mcm9tX3ByZWZpeCgyNCksCisgICAgICAgICAgICAgICAgbmV0Ll9pcF9pbnRfZnJvbV9wcmVmaXgoTm9uZSkpCisgICAgICAgIG5ldCA9IHNlbGYuaXB2Nl9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5ldC5fc3RyaW5nX2Zyb21faXBfaW50LCAyKioxMjggKyAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9hZGRyZXNzLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5pcHY2X2FkZHJlc3MuX2lwKSwKKyAgICAgICAgICAgICAgICBzZWxmLmlwdjZfYWRkcmVzcy5fc3RyaW5nX2Zyb21faXBfaW50KE5vbmUpKQorCisgICAgZGVmIHRlc3RJUHY2TmV0d29ya0hlbHBlcnMoc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2Nl9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6NjU4OjIyYTpjYWZlOjovNjQnLCBuZXQud2l0aF9wcmVmaXhsZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6NjU4OjIyYTpjYWZlOjovZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQud2l0aF9uZXRtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6Lzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0LndpdGhfaG9zdG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6NjU4OjIyYTpjYWZlOjovNjQnLCBzdHIobmV0KSkKKworICAgIGRlZiB0ZXN0SVB2NE5ldHdvcmtIZWxwZXJzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjRfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjIuMy4wLzI0JywgbmV0LndpdGhfcHJlZml4bGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjIuMy4wLzI1NS4yNTUuMjU1LjAnLCBuZXQud2l0aF9uZXRtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjIuMy4wLzAuMC4wLjI1NScsIG5ldC53aXRoX2hvc3RtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjIuMy4wLzI0Jywgc3RyKG5ldCkpCisKKyAgICBkZWYgdGVzdENvcHlDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjAvMjQnKQorICAgICAgICBhZGRyMiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKGFkZHIxKQorICAgICAgICBhZGRyMyA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82NCcpCisgICAgICAgIGFkZHI0ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZShhZGRyMykKKyAgICAgICAgYWRkcjUgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICBhZGRyNiA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIxLCBhZGRyMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyMywgYWRkcjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjUsIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjYsIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyNikpCisKKyAgICBkZWYgdGVzdENvbXByZXNzSVB2NkFkZHJlc3Moc2VsZik6CisgICAgICAgIHRlc3RfYWRkcmVzc2VzID0geworICAgICAgICAgICAgJzE6MjozOjQ6NTo2Ojc6OCc6ICcxOjI6Mzo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6MDo0OjA6MDowOjgnOiAnMjAwMTowOjA6NDo6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDowOjQ6NTo2Ojc6OCc6ICcyMDAxOjo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6Mzo0OjU6Njo3OjgnOiAnMjAwMTowOjM6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjM6NDo1OjY6Nzo4JzogJzIwMDE6MDozOjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzA6MDozOjA6MDowOjA6ZmZmZic6ICcwOjA6Mzo6ZmZmZi8xMjgnLAorICAgICAgICAgICAgJzA6MDowOjQ6MDowOjA6ZmZmZic6ICc6OjQ6MDowOjA6ZmZmZi8xMjgnLAorICAgICAgICAgICAgJzA6MDowOjA6NTowOjA6ZmZmZic6ICc6OjU6MDowOmZmZmYvMTI4JywKKyAgICAgICAgICAgICcxOjA6MDo0OjA6MDo3OjgnOiAnMTo6NDowOjA6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMDowOjA6MDowOjA6MDowJzogJzo6LzEyOCcsCisgICAgICAgICAgICAnMDowOjA6MDowOjA6MDowLzAnOiAnOjovMCcsCisgICAgICAgICAgICAnMDowOjA6MDowOjA6MDoxJzogJzo6MS8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDY1ODowMjJhOmNhZmU6MDAwMDowMDAwOjAwMDA6MDAwMC82Nic6CisgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NicsCisgICAgICAgICAgICAnOjoxLjIuMy40JzogJzo6MTAyOjMwNC8xMjgnLAorICAgICAgICAgICAgJzE6MjozOjQ6NTpmZmZmOjEuMi4zLjQnOiAnMToyOjM6NDo1OmZmZmY6MTAyOjMwNC8xMjgnLAorICAgICAgICAgICAgJzo6Nzo2OjU6NDozOjI6MSc6ICcwOjc6Njo1OjQ6MzoyOjEvMTI4JywKKyAgICAgICAgICAgICc6Ojc6Njo1OjQ6MzoyOjAnOiAnMDo3OjY6NTo0OjM6MjowLzEyOCcsCisgICAgICAgICAgICAnNzo2OjU6NDozOjI6MTo6JzogJzc6Njo1OjQ6MzoyOjE6MC8xMjgnLAorICAgICAgICAgICAgJzA6Njo1OjQ6MzoyOjE6Oic6ICcwOjY6NTo0OjM6MjoxOjAvMTI4JywKKyAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIHVuY29tcHJlc3NlZCwgY29tcHJlc3NlZCBpbiBsaXN0KHRlc3RfYWRkcmVzc2VzLml0ZW1zKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2VkLCBzdHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgdW5jb21wcmVzc2VkKSkpCisKKyAgICBkZWYgdGVzdEV4cGxvZGVTaG9ydEhhbmRJcFN0cihzZWxmKToKKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo6MScpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjA6NWVmNTo3OWZkOjA6NTlkOmEwZTU6YmExJykKKyAgICAgICAgYWRkcjMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi85NicpCisgICAgICAgIGFkZHI0ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjE3OC4xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxLzEyOCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjEuZXhwbG9kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMS8xMjgnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEvMTI4JykuZXhwbG9kZWQpCisgICAgICAgICMgaXNzdWUgNzcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTowMDAwOjVlZjU6NzlmZDowMDAwOjA1OWQ6YTBlNTowYmExJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMi5leHBsb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwLzk2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMy5leHBsb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTkyLjE2OC4xNzguMScsIGFkZHI0LmV4cGxvZGVkKQorCisgICAgZGVmIHRlc3RJbnRSZXByZXNlbnRhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxNjkwOTA2MCwgaW50KHNlbGYuaXB2NF9hZGRyZXNzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MjU0MDYxNjgyOTE4MjQ2OTQzMzU0Nzc2MjQ4MjA5Nzk0NjYyNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5pcHY2X2FkZHJlc3MpKQorCisgICAgZGVmIHRlc3RGb3JjZVZlcnNpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoMSkudmVyc2lvbiwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoMSkudmVyc2lvbiwgNikKKworICAgIGRlZiB0ZXN0V2l0aFN0YXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX3ByZWZpeGxlbiwgIjEuMi4zLjQvMjQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2Uud2l0aF9uZXRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICIxLjIuMy40LzI1NS4yNTUuMjU1LjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2Uud2l0aF9ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiMS4yLjMuNC8wLjAuMC4yNTUiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS53aXRoX3ByZWZpeGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfbmV0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxL2ZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCisgICAgICAgICMgdGhpcyBwcm9iYWJseSBkb24ndCBtYWtlIG11Y2ggc2Vuc2UsIGJ1dCBpdCdzIGluY2x1ZGVkIGZvcgorICAgICAgICAjIGNvbXBhdGliaWxpdHkgd2l0aCBpcHY0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS53aXRoX2hvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKworICAgIGRlZiB0ZXN0TmV0d29ya0VsZW1lbnRDYWNoaW5nKHNlbGYpOgorICAgICAgICAjIFY0IC0gbWFrZSBzdXJlIHdlJ3JlIGVtcHR5CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ25ldHdvcmtfYWRkcmVzcycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorCisgICAgICAgICMgVjQgLSBwb3B1bGF0ZSBhbmQgdGVzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjI1NScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLmhvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMC4wLjAuMjU1JykpCisKKyAgICAgICAgIyBWNCAtIGNoZWNrIHdlJ3JlIGNhY2hlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKworICAgICAgICAjIFY2IC0gbWFrZSBzdXJlIHdlJ3JlIGVtcHR5CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjZfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjZfbmV0d29yay5fY2FjaGUpCisKKyAgICAgICAgIyBWNiAtIHBvcHVsYXRlIGFuZCB0ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6OicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTo6JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5icm9hZGNhc3RfYWRkcmVzcywKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorCisgICAgICAgICMgVjYgLSBjaGVjayB3ZSdyZSBjYWNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjZfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgICAgICAnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5fY2FjaGUpCisKKyAgICBkZWYgdGVzdFRlcmVkbyhzZWxmKToKKyAgICAgICAgIyBzdG9sZW4gZnJvbSB3aWtpcGVkaWEKKyAgICAgICAgc2VydmVyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCc2NS41NC4yMjcuMTIwJykKKyAgICAgICAgY2xpZW50ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMC4yLjQ1JykKKyAgICAgICAgdGVyZWRvX2FkZHIgPSAnMjAwMTowMDAwOjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChzZXJ2ZXIsIGNsaWVudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3ModGVyZWRvX2FkZHIpLnRlcmVkbykKKyAgICAgICAgYmFkX2FkZHIgPSAnMjAwMDo6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX2FkZHJlc3MoYmFkX2FkZHIpLnRlcmVkbykKKyAgICAgICAgYmFkX2FkZHIgPSAnMjAwMTowMDAxOjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQyJworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKGJhZF9hZGRyKS50ZXJlZG8pCisKKyAgICAgICAgIyBpNzcKKyAgICAgICAgdGVyZWRvX2FkZHIgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6MDo1ZWY1Ojc5ZmQ6MDo1OWQ6YTBlNTpiYTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzk0LjI0NS4xMjEuMjUzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnOTUuMjYuMjQ0Ljk0JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlcmVkb19hZGRyLnRlcmVkbykKKworICAgIGRlZiB0ZXN0c2l4dG9mb3VyKHNlbGYpOgorICAgICAgICBzaXh0b2ZvdXJhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDI6YWMxZDoyZDY0OjoxJykKKyAgICAgICAgYmFkX2FkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMDphYzFkOjJkNjQ6OjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTcyLjI5LjQ1LjEwMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpeHRvZm91cmFkZHIuc2l4dG9mb3VyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJhZF9hZGRyLnNpeHRvZm91cikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CmluZGV4IDRkOTcxODMuLjQzZjhlMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKQEAgLTIsNiArMiw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCB1bmxpbmssIGNweXRob25fb25seQoraW1wb3J0IHBpY2tsZQoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiAjIFRlc3QgcmVzdWx0IG9mIHRyaXBsZSBsb29wICh0b28gYmlnIHRvIGlubGluZSkKIFRSSVBMRVRTID0gWygwLCAwLCAwKSwgKDAsIDAsIDEpLCAoMCwgMCwgMiksCkBAIC0yOCw2ICszMCw4IEBACiAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgIHNlbGYuaSA9IHJlcyArIDEKICAgICAgICAgcmV0dXJuIHJlcworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKIAogY2xhc3MgSXRlcmF0aW5nU2VxdWVuY2VDbGFzczoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbik6CkBAIC00OSw3ICs1Myw5IEBACiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIEhlbHBlciB0byBjaGVjayB0aGF0IGFuIGl0ZXJhdG9yIHJldHVybnMgYSBnaXZlbiBzZXF1ZW5jZQotICAgIGRlZiBjaGVja19pdGVyYXRvcihzZWxmLCBpdCwgc2VxKToKKyAgICBkZWYgY2hlY2tfaXRlcmF0b3Ioc2VsZiwgaXQsIHNlcSwgcGlja2xlPVRydWUpOgorICAgICAgICBpZiBwaWNrbGU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShpdCwgc2VxKQogICAgICAgICByZXMgPSBbXQogICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgdHJ5OgpAQCAtNjAsMTIgKzY2LDMzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZXEpCiAKICAgICAjIEhlbHBlciB0byBjaGVjayB0aGF0IGEgZm9yIGxvb3AgZ2VuZXJhdGVzIGEgZ2l2ZW4gc2VxdWVuY2UKLSAgICBkZWYgY2hlY2tfZm9yX2xvb3Aoc2VsZiwgZXhwciwgc2VxKToKKyAgICBkZWYgY2hlY2tfZm9yX2xvb3Aoc2VsZiwgZXhwciwgc2VxLCBwaWNrbGU9VHJ1ZSk6CisgICAgICAgIGlmIHBpY2tsZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKGl0ZXIoZXhwciksIHNlcSkKICAgICAgICAgcmVzID0gW10KICAgICAgICAgZm9yIHZhbCBpbiBleHByOgogICAgICAgICAgICAgcmVzLmFwcGVuZCh2YWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZXEpCiAKKyAgICAjIEhlbHBlciB0byBjaGVjayBwaWNrbGFiaWxpdHkKKyAgICBkZWYgY2hlY2tfcGlja2xlKHNlbGYsIGl0b3JnLCBzZXEpOgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAjIENhbm5vdCBhc3NlcnQgdHlwZSBlcXVhbGl0eSBiZWNhdXNlIGRpY3QgaXRlcmF0b3JzIHVucGlja2xlIGFzIGxpc3QKKyAgICAgICAgIyBpdGVyYXRvcnMuCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGl0LCBjb2xsZWN0aW9ucy5hYmMuSXRlcmF0b3IpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKKwogICAgICMgVGVzdCBiYXNpYyB1c2Ugb2YgaXRlcigpIGZ1bmN0aW9uCiAgICAgZGVmIHRlc3RfaXRlcl9iYXNpYyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHJhbmdlKDEwKSksIGxpc3QocmFuZ2UoMTApKSkKQEAgLTEzOCw3ICsxNjUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGkgPiAxMDA6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IgIyBFbWVyZ2VuY3kgc3RvcAogICAgICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihDKCksIDEwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoQygpLCAxMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IHR3by1hcmd1bWVudCBpdGVyKCkgd2l0aCBmdW5jdGlvbgogICAgIGRlZiB0ZXN0X2l0ZXJfZnVuY3Rpb24oc2VsZik6CkBAIC0xNDYsNyArMTczLDcgQEAKICAgICAgICAgICAgIGkgPSBzdGF0ZVswXQogICAgICAgICAgICAgc3RhdGVbMF0gPSBpKzEKICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAxMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDEwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgdHdvLWFyZ3VtZW50IGl0ZXIoKSB3aXRoIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIFN0b3BJdGVyYXRpb24KICAgICBkZWYgdGVzdF9pdGVyX2Z1bmN0aW9uX3N0b3Aoc2VsZik6CkBAIC0xNTYsNyArMTgzLDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgICAgICBzdGF0ZVswXSA9IGkrMQogICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDIwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMjApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCBleGNlcHRpb24gcHJvcGFnYXRpb24gdGhyb3VnaCBmdW5jdGlvbiBpdGVyYXRvcgogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9mdW5jdGlvbihzZWxmKToKQEAgLTE5OCw3ICsyMjUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGkgPT0gMTA6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2VDbGFzcy5fX2dldGl0ZW1fXyhzZWxmLCBpKQotICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKE15U2VxdWVuY2VDbGFzcygyMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChNeVNlcXVlbmNlQ2xhc3MoMjApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCBhIGJpZyByYW5nZQogICAgIGRlZiB0ZXN0X2l0ZXJfYmlnX3JhbmdlKHNlbGYpOgpAQCAtMjM3LDggKzI2NCw4IEBACiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgZiA9IG9wZW4oVEVTVEZOLCAiciIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgWyIwXG4iLCAiMVxuIiwgIjJcbiIsICIzXG4iLCAiNFxuIl0pCi0gICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFtdKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbIjBcbiIsICIxXG4iLCAiMlxuIiwgIjNcbiIsICI0XG4iXSwgcGlja2xlPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbXSwgcGlja2xlPUZhbHNlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CmluZGV4IDhjZGM1OTcuLjkwZTg1YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CkBAIC0zNyw2ICszNywxMyBAQAogICAgICdUZXN0IHByZWRpY2F0ZScKICAgICByZXR1cm4geCUyPT0xCiAKK2RlZiB0dXBsZWl6ZSgqYXJncyk6CisgICAgcmV0dXJuIGFyZ3MKKworZGVmIGlyYW5nZShuKToKKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgeWllbGQgaQorCiBjbGFzcyBTdG9wTm93OgogICAgICdDbGFzcyBlbXVsYXRpbmcgYW4gZW1wdHkgaXRlcmFibGUuJwogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKQEAgLTU1LDggKzYyLDU5IEBACiAgICAgJ0ZhY3RvcmlhbCcKICAgICByZXR1cm4gcHJvZChyYW5nZSgxLCBuKzEpKQogCisjIHJvb3QgbGV2ZWwgbWV0aG9kcyBmb3IgcGlja2xpbmcgYWJpbGl0eQorZGVmIHRlc3RSKHIpOgorICAgIHJldHVybiByWzBdCisKK2RlZiB0ZXN0UjIocik6CisgICAgcmV0dXJuIHJbMl0KKworZGVmIHVuZGVydGVuKHgpOgorICAgIHJldHVybiB4PDEwCisKIGNsYXNzIFRlc3RCYXNpY09wcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgcGlja2xldGVzdChzZWxmLCBpdCwgc3RvcD00LCB0YWtlPTEsIGNvbXBhcmU9Tm9uZSk6CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBpdGVyYXRvciBpcyB0aGUgc2FtZSBhZnRlciBwaWNrbGluZywgYWxzbyB3aGVuIHBhcnQtY29uc3VtZWQiIiIKKyAgICAgICAgZGVmIGV4cGFuZChpdCwgaT0wKToKKyAgICAgICAgICAgICMgUmVjdXJzaXZlbHkgZXhwYW5kIGl0ZXJhYmxlcywgd2l0aGluIHNlbnNpYmxlIGJvdW5kcworICAgICAgICAgICAgaWYgaSA+IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiaW5maW5pdGUgcmVjdXJzaW9uIGVuY291bnRlcmVkIikKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXQsIHN0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbCA9IGxpc3QoaXNsaWNlKGl0LCBzdG9wKSkKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ICMgY2FuJ3QgZXhwYW5kIGl0CisgICAgICAgICAgICByZXR1cm4gW2V4cGFuZChlLCBpKzEpIGZvciBlIGluIGxdCisKKyAgICAgICAgIyBUZXN0IHRoZSBpbml0aWFsIGNvcHkgYWdhaW5zdCB0aGUgb3JpZ2luYWwKKyAgICAgICAgZHVtcCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaTIgPSBwaWNrbGUubG9hZHMoZHVtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0KSwgdHlwZShpMikpCisgICAgICAgIGEsIGIgPSBleHBhbmQoaXQpLCBleHBhbmQoaTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKyAgICAgICAgaWYgY29tcGFyZToKKyAgICAgICAgICAgIGMgPSBleHBhbmQoY29tcGFyZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYykKKworICAgICAgICAjIFRha2UgZnJvbSB0aGUgY29weSwgYW5kIGNyZWF0ZSBhbm90aGVyIGNvcHkgYW5kIGNvbXBhcmUgdGhlbS4KKyAgICAgICAgaTMgPSBwaWNrbGUubG9hZHMoZHVtcCkKKyAgICAgICAgdG9vayA9IDAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UodGFrZSk6CisgICAgICAgICAgICAgICAgbmV4dChpMykKKyAgICAgICAgICAgICAgICB0b29rICs9IDEKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzICNpbiBjYXNlIHRoZXJlIGlzIGxlc3MgZGF0YSB0aGFuICd0YWtlJworICAgICAgICBkdW1wID0gcGlja2xlLmR1bXBzKGkzKQorICAgICAgICBpNCA9IHBpY2tsZS5sb2FkcyhkdW1wKQorICAgICAgICBhLCBiID0gZXhwYW5kKGkzKSwgZXhwYW5kKGk0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisgICAgICAgIGlmIGNvbXBhcmU6CisgICAgICAgICAgICBjID0gZXhwYW5kKGNvbXBhcmVbdG9vazpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKTsKKwogICAgIGRlZiB0ZXN0X2FjY3VtdWxhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHJhbmdlKDEwKSkpLCAgICAgICAgICAgICAgICMgb25lIHBvc2l0aW9uYWwgYXJnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAzLCA2LCAxMCwgMTUsIDIxLCAyOCwgMzYsIDQ1XSkKQEAgLTY5LDExICsxMjcsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoJ2FiYycpKSwgWydhJywgJ2FiJywgJ2FiYyddKSAgICMgd29ya3Mgd2l0aCBub24tbnVtZXJpYwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShbXSkpLCBbXSkgICAgICAgICAgICAgICAgICAjIGVtcHR5IGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKFs3XSkpLCBbN10pICAgICAgICAgICAgICAgICMgaXRlcmFibGUgb2YgbGVuZ3RoIG9uZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUsIHJhbmdlKDEwKSwgNSkgICAgICAjIHRvbyBtYW55IGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlLCByYW5nZSgxMCksIDUsIDYpICAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSkgICAgICAgICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSwgeD1yYW5nZSgxMCkpICAgICAgICMgdW5leHBlY3RlZCBrd2QgYXJnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgYWNjdW11bGF0ZShbMSwgW11dKSkgICAgICMgYXJncyB0aGF0IGRvbid0IGFkZAogCisgICAgICAgIHMgPSBbMiwgOCwgOSwgNSwgNywgMCwgMywgNCwgMSwgNl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocywgbWluKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDIsIDIsIDIsIDIsIDAsIDAsIDAsIDAsIDBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShzLCBtYXgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMiwgOCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHMsIG9wZXJhdG9yLm11bCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsyLCAxNiwgMTQ0LCA3MjAsIDUwNDAsIDAsIDAsIDAsIDAsIDBdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsaXN0KGFjY3VtdWxhdGUocywgY2hyKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnktb3BlcmF0aW9uCisgICAgICAgIHNlbGYucGlja2xldGVzdChhY2N1bXVsYXRlKHJhbmdlKDEwKSkpICAgICAgICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCiAgICAgZGVmIHRlc3RfY2hhaW4oc2VsZik6CiAKICAgICAgICAgZGVmIGNoYWluMigqaXRlcmFibGVzKToKQEAgLTk2LDE0ICsxNjUsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDQsIGNoYWluLmZyb21faXRlcmFibGUoWydhYmMnLCAnZGVmJ10pKSwgbGlzdCgnYWJjZCcpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGNoYWluLmZyb21faXRlcmFibGUoWzIsIDNdKSkKIAorICAgIGRlZiB0ZXN0X2NoYWluX3JlZHVjaWJsZShzZWxmKToKKyAgICAgICAgb3BlcmF0b3JzID0gW2NvcHkuZGVlcGNvcHksCisgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgczogcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzKSldCisgICAgICAgIGZvciBvcGVyIGluIG9wZXJhdG9yczoKKyAgICAgICAgICAgIGl0ID0gY2hhaW4oJ2FiYycsICdkZWYnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wZXIoaXQpKSwgbGlzdCgnYWJjZGVmJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAnYScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3BlcihpdCkpLCBsaXN0KCdiY2RlZicpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3BlcihjaGFpbignJykpKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoNCwgb3BlcihjaGFpbignYWJjJywgJ2RlZicpKSksIGxpc3QoJ2FiY2QnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgb3BlcihjaGFpbigyLCAzKSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjaGFpbignYWJjJywgJ2RlZicpLCBjb21wYXJlPWxpc3QoJ2FiY2RlZicpKQorCiAgICAgZGVmIHRlc3RfY29tYmluYXRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmF0aW9ucywgJ2FiYycpICAgICAgICMgbWlzc2luZyByIGFyZ3VtZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluYXRpb25zLCAnYWJjJywgMiwgMSkgIyB0b28gbWFueSBhcmd1bWVudHMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5hdGlvbnMsIE5vbmUpICAgICAgICAjIHBvb2wgaXMgbm90IGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbWJpbmF0aW9ucywgJ2FiYycsIC0yKSAgIyByIGlzIG5lZ2F0aXZlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb21iaW5hdGlvbnMoJ2FiYycsIDMyKSksIFtdKSAgICAgIyByID4gbgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29tYmluYXRpb25zKHJhbmdlKDQpLCAzKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygwLDEsMiksICgwLDEsMyksICgwLDIsMyksICgxLDIsMyldKQorCisgICAgICAgIGZvciBvcCBpbiAobGFtYmRhIGE6YSwgbGFtYmRhIGE6cGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhhKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbWJpbmF0aW9ucygnYWJjJywgMzIpKSksIFtdKSAgICAgIyByID4gbgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tYmluYXRpb25zKCdBQkNEJywgMikpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0InKSwgKCdBJywnQycpLCAoJ0EnLCdEJyksICgnQicsJ0MnKSwgKCdCJywnRCcpLCAoJ0MnLCdEJyldKQorICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGNvbWJpbmF0aW9ucygnQUJDRCcsIDIpCisgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQycpLCAoJ0EnLCdEJyksICgnQicsJ0MnKSwgKCdCJywnRCcpLCAoJ0MnLCdEJyldKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tYmluYXRpb25zKHJhbmdlKDQpLCAzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKDAsMSwyKSwgKDAsMSwzKSwgKDAsMiwzKSwgKDEsMiwzKV0pCisgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY29tYmluYXRpb25zKHJhbmdlKDQpLCAzKQorICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygwLDEsMyksICgwLDIsMyksICgxLDIsMyldKQorCiAKICAgICAgICAgZGVmIGNvbWJpbmF0aW9uczEoaXRlcmFibGUsIHIpOgogICAgICAgICAgICAgJ1B1cmUgcHl0aG9uIHZlcnNpb24gc2hvd24gaW4gdGhlIGRvY3MnCkBAIC0xNTgsNyArMjU2LDExIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY29tYmluYXRpb25zMih2YWx1ZXMsIHIpKSkgIyBtYXRjaGVzIHNlY29uZCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY29tYmluYXRpb25zMyh2YWx1ZXMsIHIpKSkgIyBtYXRjaGVzIHNlY29uZCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY29tYmluYXRpb25zKHZhbHVlcywgcikpICAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKwogICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X2NvbWJpbmF0aW9uc190dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgY29tYmluYXRpb25zKCdhYmNkZScsIDMpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KGNvbWJpbmF0aW9ucygnYWJjZGUnLCAzKSkpKSksIDEpCiAKQEAgLTE2OCw4ICsyNzAsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjd3IsICdhYmMnLCAyLCAxKSAjIHRvbyBtYW55IGFyZ3VtZW50cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN3ciwgTm9uZSkgICAgICAgICMgcG9vbCBpcyBub3QgaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3dyLCAnYWJjJywgLTIpICAjIHIgaXMgbmVnYXRpdmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGN3cignQUJDJywgMikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdBJyksICgnQScsJ0InKSwgKCdBJywnQycpLCAoJ0InLCdCJyksICgnQicsJ0MnKSwgKCdDJywnQycpXSkKKworICAgICAgICBmb3Igb3AgaW4gKGxhbWJkYSBhOmEsIGxhbWJkYSBhOnBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYSkpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjd3IoJ0FCQycsIDIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdBJyksICgnQScsJ0InKSwgKCdBJywnQycpLCAoJ0InLCdCJyksICgnQicsJ0MnKSwgKCdDJywnQycpXSkKKyAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjd3IoJ0FCQycsIDIpCisgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJyldKQorCiAKICAgICAgICAgZGVmIGN3cjEoaXRlcmFibGUsIHIpOgogICAgICAgICAgICAgJ1B1cmUgcHl0aG9uIHZlcnNpb24gc2hvd24gaW4gdGhlIGRvY3MnCkBAIC0yMjgsNyArMzM3LDEzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY3dyMSh2YWx1ZXMsIHIpKSkgICAgICAgICAjIG1hdGNoZXMgZmlyc3QgcHVyZSBweXRob24gdmVyc2lvbgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGN3cjIodmFsdWVzLCByKSkpICAgICAgICAgIyBtYXRjaGVzIHNlY29uZCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY3dyKHZhbHVlcyxyKSkgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCiAgICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF9jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudF90dXBsZV9yZXVzZShzZWxmKToKKyAgICAgICAgY3dyID0gY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgY3dyKCdhYmNkZScsIDMpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KGN3cignYWJjZGUnLCAzKSkpKSksIDEpCiAKQEAgLTI5Miw3ICs0MDcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QocGVybXV0YXRpb25zKHZhbHVlcywgTm9uZSkpKSAjIHRlc3QgciBhcyBOb25lCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KHBlcm11dGF0aW9ucyh2YWx1ZXMpKSkgICAgICAgIyB0ZXN0IGRlZmF1bHQgcgogCi0gICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QocGVybXV0YXRpb25zKHZhbHVlcywgcikpICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJlc3VzZSBpcyBDUHl0aG9uIHNwZWNpZmljIikKKyAgICBkZWYgdGVzdF9wZXJtdXRhdGlvbnNfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIHBlcm11dGF0aW9ucygnYWJjZGUnLCAzKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChwZXJtdXRhdGlvbnMoJ2FiY2RlJywgMykpKSkpLCAxKQogCkBAIC0zNDUsNiArNDYzLDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcHJlc3MsIHJhbmdlKDYpKSAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcHJlc3MsIHJhbmdlKDYpLCBOb25lKSAgICAgICMgdG9vIG1hbnkgYXJncwogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBmb3Igb3AgaW4gKGxhbWJkYSBhOmNvcHkuY29weShhKSwgbGFtYmRhIGE6Y29weS5kZWVwY29weShhKSwgbGFtYmRhIGE6cGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhhKSkpOgorICAgICAgICAgICAgZm9yIGRhdGEsIHNlbGVjdG9ycywgcmVzdWx0MSwgcmVzdWx0MiBpbiBbCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMSwwLDEsMCwxLDFdLCAnQUNFRicsICdDRUYnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFswLDAsMCwwLDAsMF0sICcnLCAnJyksCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMSwxLDEsMSwxLDFdLCAnQUJDREVGJywgJ0JDREVGJyksCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMSwwLDFdLCAnQUMnLCAnQycpLAorICAgICAgICAgICAgICAgICgnQUJDJywgWzAsMSwxLDEsMSwxXSwgJ0JDJywgJ0MnKSwKKyAgICAgICAgICAgICAgICBdOgorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbXByZXNzKGRhdGE9ZGF0YSwgc2VsZWN0b3JzPXNlbGVjdG9ycykpKSwgbGlzdChyZXN1bHQxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKSkpLCBsaXN0KHJlc3VsdDEpKQorICAgICAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0MToKKyAgICAgICAgICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLCBsaXN0KHJlc3VsdDIpKQorCisKICAgICBkZWYgdGVzdF9jb3VudChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemlwKCdhYmMnLGNvdW50KCkpLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHppcCgnYWJjJyxjb3VudCgzKSksIFsoJ2EnLCAzKSwgKCdiJywgNCksICgnYycsIDUpXSkKQEAgLTM3OSw3ICs1MTUsNyBAQAogICAgICAgICAgICAgYyA9IGNvdW50KHZhbHVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGNvcHkuY29weShjKSksIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGNvcHkuZGVlcGNvcHkoYykpLCB2YWx1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNvdW50KHZhbHVlKSkKIAogICAgICAgICAjY2hlY2sgcHJvcGVyIGludGVybmFsIGVycm9yIGhhbmRsaW5nIGZvciBsYXJnZSAic3RlcCcgc2l6ZXMKICAgICAgICAgY291bnQoMSwgbWF4c2l6ZSs1KTsgc3lzLmV4Y19pbmZvKCkKQEAgLTQyNiw2ICs1NjIsNyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHIyID0gKCdjb3VudCglciwgJXIpJyAlIChpLCBqKSkucmVwbGFjZSgnTCcsICcnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocjEsIHIyKQorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjb3VudChpLCBqKSkKIAogICAgIGRlZiB0ZXN0X2N5Y2xlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIGN5Y2xlKCdhYmMnKSksIGxpc3QoJ2FiY2FiY2FiY2EnKSkKQEAgLTQzNCw2ICs1NzEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShjeWNsZShnZW4zKCkpLDEwKSksIFswLDEsMiwwLDEsMiwwLDEsMiwwXSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYyA9IGN5Y2xlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksICdhJykKKyAgICAgICAgI3NpbXBsZSBjb3B5IGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLCBiZWNhdXNlIF9fcmVkdWNlX18gcmV0dXJucworICAgICAgICAjYW4gaW50ZXJuYWwgaXRlcmF0b3IKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgY29weS5jb3B5KGMpKSwgbGlzdCgnYmNhYmNhYmNhYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIGNvcHkuZGVlcGNvcHkoYykpLCBsaXN0KCdiY2FiY2FiY2FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBsaXN0KCdiY2FiY2FiY2FiJykpCisgICAgICAgIG5leHQoYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGxpc3QoJ2NhYmNhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGN5Y2xlKCdhYmMnKSkKKwogICAgIGRlZiB0ZXN0X2dyb3VwYnkoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgd2hldGhlciBpdCBhY2NlcHRzIGFyZ3VtZW50cyBjb3JyZWN0bHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgbGlzdChncm91cGJ5KFtdKSkpCkBAIC00NTIsMTggKzYwMSwzNyBAQAogICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCiAKKyAgICAgICAgIyBDaGVjayBub3JtYWwgcGlja2xlZAorICAgICAgICBkdXAgPSBbXQorICAgICAgICBmb3IgaywgZyBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGdyb3VwYnkocywgdGVzdFIpKSk6CisgICAgICAgICAgICBmb3IgZWxlbSBpbiBnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaywgZWxlbVswXSkKKyAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQorCiAgICAgICAgICMgQ2hlY2sgbmVzdGVkIGNhc2UKICAgICAgICAgZHVwID0gW10KLSAgICAgICAgZm9yIGssIGcgaW4gZ3JvdXBieShzLCBsYW1iZGEgcjpyWzBdKToKLSAgICAgICAgICAgIGZvciBpaywgaWcgaW4gZ3JvdXBieShnLCBsYW1iZGEgcjpyWzJdKToKKyAgICAgICAgZm9yIGssIGcgaW4gZ3JvdXBieShzLCB0ZXN0Uik6CisgICAgICAgICAgICBmb3IgaWssIGlnIGluIGdyb3VwYnkoZywgdGVzdFIyKToKICAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiBpZzoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrLCBlbGVtWzBdKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlrLCBlbGVtWzJdKQogICAgICAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQogCisgICAgICAgICMgQ2hlY2sgbmVzdGVkIGFuZCBwaWNrbGVkCisgICAgICAgIGR1cCA9IFtdCisgICAgICAgIGZvciBrLCBnIGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZ3JvdXBieShzLCB0ZXN0UikpKToKKyAgICAgICAgICAgIGZvciBpaywgaWcgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhncm91cGJ5KGcsIHRlc3RSMikpKToKKyAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiBpZzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrLCBlbGVtWzBdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlrLCBlbGVtWzJdKQorICAgICAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQorCisKICAgICAgICAgIyBDaGVjayBjYXNlIHdoZXJlIGlubmVyIGl0ZXJhdG9yIGlzIG5vdCB1c2VkCi0gICAgICAgIGtleXMgPSBbayBmb3IgaywgZyBpbiBncm91cGJ5KHMsIGxhbWJkYSByOnJbMF0pXQorICAgICAgICBrZXlzID0gW2sgZm9yIGssIGcgaW4gZ3JvdXBieShzLCB0ZXN0UildCiAgICAgICAgIGV4cGVjdGVka2V5cyA9IHNldChbclswXSBmb3IgciBpbiBzXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoa2V5cyksIGV4cGVjdGVka2V5cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa2V5cyksIGxlbihleHBlY3RlZGtleXMpKQpAQCAtNTM0LDYgKzcwMiwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpbHRlciwgaXNFdmVuLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIGZpbHRlcihyYW5nZSg2KSwgcmFuZ2UoNikpKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbMCwyLDRdCisKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGMpKSwgYW5zKQorICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGMpKSwgYW5zKQorICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGFucykKKyAgICAgICAgbmV4dChjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBhbnNbMTpdKQorICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjKQorCiAgICAgZGVmIHRlc3RfZmlsdGVyZmFsc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXJmYWxzZShpc0V2ZW4sIHJhbmdlKDYpKSksIFsxLDMsNV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXJmYWxzZShOb25lLCBbMCwxLDAsMiwwXSkpLCBbMCwwLDBdKQpAQCAtNTQ0LDYgKzcyNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmlsdGVyZmFsc2UsIGxhbWJkYSB4OngsIHJhbmdlKDYpLCA3KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpbHRlcmZhbHNlLCBpc0V2ZW4sIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgZmlsdGVyZmFsc2UocmFuZ2UoNiksIHJhbmdlKDYpKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGZpbHRlcmZhbHNlKGlzRXZlbiwgcmFuZ2UoNikpKQogCiAgICAgZGVmIHRlc3RfemlwKHNlbGYpOgogICAgICAgICAjIFhYWCBUaGlzIGlzIHJhdGhlciBzaWxseSBub3cgdGhhdCBidWlsdGluIHppcCgpIGNhbGxzIHppcCgpLi4uCkBAIC01NTYsMTYgKzczOSwzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoemlwKCkpLCBsemlwKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgemlwLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHppcCwgcmFuZ2UoMyksIDMpCi0gICAgICAgICMgQ2hlY2sgdHVwbGUgcmUtdXNlIChpbXBsZW1lbnRhdGlvbiBkZXRhaWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3R1cGxlKGxpc3QocGFpcikpIGZvciBwYWlyIGluIHppcCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsemlwKCdhYmMnLCAnZGVmJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3BhaXIgZm9yIHBhaXIgaW4gemlwKCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGx6aXAoJ2FiYycsICdkZWYnKSkKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF96aXBfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCB6aXAoJ2FiYycsICdkZWYnKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWluKGlkcyksIG1heChpZHMpKQogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgbGlzdCh6aXAoJ2FiYycsICdkZWYnKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0LmZyb21rZXlzKGlkcykpLCBsZW4oaWRzKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIGNvcHkuY29weSh6aXAoJ2FiYycsY291bnQoKSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBjb3B5LmRlZXBjb3B5KHppcCgnYWJjJyxjb3VudCgpKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoemlwKCdhYmMnLGNvdW50KCkpKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IHppcCgnYWJjJyxjb3VudCgpKQorICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHRlc3RJbnRlcm1lZGlhdGUpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXAoJ2FiYycsIGNvdW50KCkpKQorCiAgICAgZGVmIHRlc3RfemlwbG9uZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGFyZ3MgaW4gWwogICAgICAgICAgICAgICAgIFsnYWJjJywgcmFuZ2UoNildLApAQCAtNjAzLDE2ICs4MDUsMjQgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdEaWQgbm90IHJhaXNlIFR5cGUgaW46ICAnICsgc3RtdCkKIAotICAgICAgICAjIENoZWNrIHR1cGxlIHJlLXVzZSAoaW1wbGVtZW50YXRpb24gZGV0YWlsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt0dXBsZShsaXN0KHBhaXIpKSBmb3IgcGFpciBpbiB6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHppcCgnYWJjJywgJ2RlZicpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbcGFpciBmb3IgcGFpciBpbiB6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHppcCgnYWJjJywgJ2RlZicpKSkKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF96aXBfbG9uZ2VzdF90dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJykpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbihpZHMpLCBtYXgoaWRzKSkKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIGxpc3QoemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0LmZyb21rZXlzKGlkcykpLCBsZW4oaWRzKSkKIAorICAgIGRlZiB0ZXN0X3ppcF9sb25nZXN0X3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoImFiYyIsICJkZWYiKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCJhYmMiLCAiZGVmZ2giKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCJhYmMiLCAiZGVmZ2giLCBmaWxsdmFsdWU9MSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiIiwgImRlZmdoIikpCisKICAgICBkZWYgdGVzdF9idWdfNzI0NChzZWxmKToKIAogICAgICAgICBjbGFzcyBSZXBlYXRlcjoKQEAgLTcxMSwxMCArOTIxLDI1IEBACiAgICAgICAgICAgICBhcmdzID0gbWFwKGl0ZXIsIGFyZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KHByb2R1Y3QoKmFyZ3MpKSksIGV4cGVjdGVkX2xlbikKIAotICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X3Byb2R1Y3RfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIHByb2R1Y3QoJ2FiYycsICdkZWYnKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChwcm9kdWN0KCdhYmMnLCAnZGVmJykpKSkpLCAxKQogCisgICAgZGVmIHRlc3RfcHJvZHVjdF9waWNrbGluZyhzZWxmKToKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGZvciBhcmdzLCByZXN1bHQgaW4gWworICAgICAgICAgICAgKFtdLCBbKCldKSwgICAgICAgICAgICAgICAgICAgICAjIHplcm8gaXRlcmFibGVzCisgICAgICAgICAgICAoWydhYiddLCBbKCdhJywpLCAoJ2InLCldKSwgICAgICMgb25lIGl0ZXJhYmxlCisgICAgICAgICAgICAoW3JhbmdlKDIpLCByYW5nZSgzKV0sIFsoMCwwKSwgKDAsMSksICgwLDIpLCAoMSwwKSwgKDEsMSksICgxLDIpXSksICAgICAjIHR3byBpdGVyYWJsZXMKKyAgICAgICAgICAgIChbcmFuZ2UoMCksIHJhbmdlKDIpLCByYW5nZSgzKV0sIFtdKSwgICAgICAgICAgICMgZmlyc3QgaXRlcmFibGUgd2l0aCB6ZXJvIGxlbmd0aAorICAgICAgICAgICAgKFtyYW5nZSgyKSwgcmFuZ2UoMCksIHJhbmdlKDMpXSwgW10pLCAgICAgICAgICAgIyBtaWRkbGUgaXRlcmFibGUgd2l0aCB6ZXJvIGxlbmd0aAorICAgICAgICAgICAgKFtyYW5nZSgyKSwgcmFuZ2UoMyksIHJhbmdlKDApXSwgW10pLCAgICAgICAgICAgIyBsYXN0IGl0ZXJhYmxlIHdpdGggemVybyBsZW5ndGgKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KHByb2R1Y3QoKmFyZ3MpKSksIHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KHByb2R1Y3QoKmFyZ3MpKSksIHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChwcm9kdWN0KCphcmdzKSkKKwogICAgIGRlZiB0ZXN0X3JlcGVhdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJlcGVhdChvYmplY3Q9J2EnLCB0aW1lcz0zKSksIFsnYScsICdhJywgJ2EnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemlwKHJhbmdlKDMpLHJlcGVhdCgnYScpKSwKQEAgLTczMywxMSArOTU4LDE2IEBACiAgICAgICAgIGxpc3QocikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHIpLCAncmVwZWF0KCgxKzBqKSwgMCknKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBjID0gcmVwZWF0KG9iamVjdD0nYScsIHRpbWVzPTEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIsIGNvcHkuY29weShjKSksIGxpc3QoJ2EnICogMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyLCBjb3B5LmRlZXBjb3B5KGMpKSwgbGlzdCgnYScgKiAyKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHJlcGVhdChvYmplY3Q9J2EnLCB0aW1lcz0xMCkpCisKICAgICBkZWYgdGVzdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtYXAob3BlcmF0b3IucG93LCByYW5nZSgzKSwgcmFuZ2UoMSw3KSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFswKioxLCAxKioyLCAyKiozXSkKLSAgICAgICAgZGVmIHR1cGxlaXplKCphcmdzKToKLSAgICAgICAgICAgIHJldHVybiBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtYXAodHVwbGVpemUsICdhYmMnLCByYW5nZSg1KSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLDApLCgnYicsMSksKCdjJywyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKSksCkBAIC03NTIsNiArOTgyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIG1hcChlcnJmdW5jLCBbNF0sIFs1XSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgbWFwKG9uZWFyZywgWzRdLCBbNV0pKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbKCdhJywwKSwoJ2InLDEpLCgnYycsMildCisKKyAgICAgICAgYyA9IG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYykKKwogICAgIGRlZiB0ZXN0X3N0YXJtYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFswKioxLCAxKioyLCAyKiozXSkKQEAgLTc2Niw2ICsxMDA4LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIHN0YXJtYXAoZXJyZnVuYywgWyg0LDUpXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgc3Rhcm1hcChvbmVhcmcsIFsoNCw1KV0pKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbMCoqMSwgMSoqMiwgMioqM10KKworICAgICAgICBjID0gc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShjKSksIGFucykKKworICAgICAgICBjID0gc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjKQorCiAgICAgZGVmIHRlc3RfaXNsaWNlKHNlbGYpOgogICAgICAgICBmb3IgYXJncyBpbiBbICAgICAgICAgICMgaXNsaWNlKGFyZ3MpIHNob3VsZCBhZ3JlZSB3aXRoIHJhbmdlKGFyZ3MpCiAgICAgICAgICAgICAgICAgKDEwLCAyMCwgMyksCkBAIC03OTgsMTcgKzEwNTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChyYW5nZSgzLCAxMCkpKQogCiAgICAgICAgICMgVGVzdCBpbnZhbGlkIGFyZ3VtZW50cwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAyLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgLTUsIDEwLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgLTUsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgMTAsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgMTAsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAnYScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAnYScsIDEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAnYScsIDEpCisgICAgICAgIHJhID0gcmFuZ2UoMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAyLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAtNSwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsIC01LCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgMTAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAxMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAnYScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgJ2EnLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAnYScsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QoaXNsaWNlKGNvdW50KCksIDEsIDEwLCBtYXhzaXplKSkpLCAxKQogCiAgICAgICAgICMgSXNzdWUgIzEwMzIzOiAgTGVzcyBpc2xpY2UgaW4gYSBwcmVkaWN0YWJsZSBzdGF0ZQpAQCAtODE2LDkgKzEwNzEsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShjLCAxLCAzLCA1MCkpLCBbMV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjKSwgMykKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZm9yIGFyZ3MgaW4gWyAgICAgICAgICAjIGlzbGljZShhcmdzKSBzaG91bGQgYWdyZWUgd2l0aCByYW5nZShhcmdzKQorICAgICAgICAgICAgICAgICgxMCwgMjAsIDMpLAorICAgICAgICAgICAgICAgICgxMCwgMywgMjApLAorICAgICAgICAgICAgICAgICgxMCwgMjApLAorICAgICAgICAgICAgICAgICgxMCwgMyksCisgICAgICAgICAgICAgICAgKDIwLCkKKyAgICAgICAgICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShpc2xpY2UocmFuZ2UoMTAwKSwgKmFyZ3MpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoKmFyZ3MpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGlzbGljZShyYW5nZSgxMDApLCAqYXJncykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyYW5nZSgqYXJncykpKQorICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGlzbGljZShyYW5nZSgxMDApLCAqYXJncykpCisKICAgICBkZWYgdGVzdF90YWtld2hpbGUoc2VsZik6CiAgICAgICAgIGRhdGEgPSBbMSwgMywgNSwgMjAsIDIsIDQsIDYsIDhdCi0gICAgICAgIHVuZGVydGVuID0gbGFtYmRhIHg6IHg8MTAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpLCBbMSwgMywgNV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0YWtld2hpbGUodW5kZXJ0ZW4sIFtdKSksIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRha2V3aGlsZSkKQEAgLTgzMCw5ICsxMDk4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0KSwgWzEsIDEsIDFdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCB0KQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwgWzEsIDMsIDVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weSh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBbMSwgMywgNV0pCisgICAgICAgIHNlbGYucGlja2xldGVzdCh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKQorCiAgICAgZGVmIHRlc3RfZHJvcHdoaWxlKHNlbGYpOgogICAgICAgICBkYXRhID0gWzEsIDMsIDUsIDIwLCAyLCA0LCA2LCA4XQotICAgICAgICB1bmRlcnRlbiA9IGxhbWJkYSB4OiB4PDEwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSwgWzIwLCAyLCA0LCA2LCA4XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGRyb3B3aGlsZSh1bmRlcnRlbiwgW10pKSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHJvcHdoaWxlKQpAQCAtODQxLDExICsxMTE0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgZHJvcHdoaWxlKDEwLCBbKDQsNSldKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgZHJvcHdoaWxlKGVycmZ1bmMsIFsoNCw1KV0pKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwgWzIwLCAyLCA0LCA2LCA4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgWzIwLCAyLCA0LCA2LCA4XSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpCisKICAgICBkZWYgdGVzdF90ZWUoc2VsZik6CiAgICAgICAgIG4gPSAyMDAKLSAgICAgICAgZGVmIGlyYW5nZShuKToKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgotICAgICAgICAgICAgICAgIHlpZWxkIGkKIAogICAgICAgICBhLCBiID0gdGVlKFtdKSAgICAgICAgIyB0ZXN0IGVtcHR5IGl0ZXJhdG9yCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgW10pCkBAIC05MzAsNiArMTIwNiw2NyBAQAogICAgICAgICBkZWwgYQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWZlcmVuY2VFcnJvciwgZ2V0YXR0ciwgcCwgJ19fY2xhc3NfXycpCiAKKyAgICAgICAgYW5zID0gbGlzdCgnYWJjJykKKyAgICAgICAgbG9uZ19hbnMgPSBsaXN0KHJhbmdlKDEwMDAwKSkKKworICAgICAgICAjIGNoZWNrIGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGFucykKKyAgICAgICAgYSwgYiA9IHRlZShsaXN0KHJhbmdlKDEwMDAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGxvbmdfYW5zKQorCisgICAgICAgICMgY2hlY2sgcGFydGlhbGx5IGNvbnN1bWVkIGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgdGFrZSgyLCBhKQorICAgICAgICB0YWtlKDEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgYW5zWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGFuc1sxOl0pCisgICAgICAgIGEsIGIgPSB0ZWUocmFuZ2UoMTAwMDApKQorICAgICAgICB0YWtlKDEwMCwgYSkKKyAgICAgICAgdGFrZSg2MCwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgbG9uZ19hbnNbNjA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBsb25nX2Fuc1s2MDpdKQorCisgICAgICAgICMgY2hlY2sgZGVlcGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBhbnMpCisgICAgICAgIGEsIGIgPSB0ZWUocmFuZ2UoMTAwMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGxvbmdfYW5zKQorCisgICAgICAgICMgY2hlY2sgcGFydGlhbGx5IGNvbnN1bWVkIGRlZXBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHRha2UoMiwgYSkKKyAgICAgICAgdGFrZSgxLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgYW5zWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGFuc1sxOl0pCisgICAgICAgIGEsIGIgPSB0ZWUocmFuZ2UoMTAwMDApKQorICAgICAgICB0YWtlKDEwMCwgYSkKKyAgICAgICAgdGFrZSg2MCwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBsb25nX2Fuc1s2MDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGxvbmdfYW5zWzYwOl0pCisKKyAgICAgICAgIyBjaGVjayBwaWNrbGUKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGl0ZXIodGVlKCdhYmMnKSkpCisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHNlbGYucGlja2xldGVzdChhLCBjb21wYXJlPWFucykKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGIsIGNvbXBhcmU9YW5zKQorCiAgICAgZGVmIHRlc3RfU3RvcEl0ZXJhdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgemlwKCkpCiAKQEAgLTk1NSw5ICsxMjkyLDIxIEBACiAKIGNsYXNzIFRlc3RFeGFtcGxlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVzdF9hY2N1bWxhdGUoc2VsZik6CisgICAgZGVmIHRlc3RfYWNjdW11bGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0pKSwgWzEsIDMsIDYsIDEwLCAxNV0pCiAKKyAgICBkZWYgdGVzdF9hY2N1bXVsYXRlX3JlZHVjaWJsZShzZWxmKToKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGRhdGEgPSBbMSwgMiwgMywgNCwgNV0KKyAgICAgICAgYWNjdW11bGF0ZWQgPSBbMSwgMywgNiwgMTAsIDE1XQorICAgICAgICBpdCA9IGFjY3VtdWxhdGUoZGF0YSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhpdCkpKSwgYWNjdW11bGF0ZWRbOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGl0KSkpLCBhY2N1bXVsYXRlZFsxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGl0KSksIGFjY3VtdWxhdGVkWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShpdCkpLCBhY2N1bXVsYXRlZFsxOl0pCisKICAgICBkZWYgdGVzdF9jaGFpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGNoYWluKCdBQkMnLCAnREVGJykpLCAnQUJDREVGJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weSBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKaW5kZXggMTA4ZWQxOC4uMDUwM2E3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CkBAIC03OCw3ICs3OCw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBleGM6CiAgICAgICAgICAgICBmKDEsIDIsIDMpCi0gICAgICAgIGV4cGVjdGVkID0gImYoKSB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgKDMgZ2l2ZW4pIgorICAgICAgICBleHBlY3RlZCA9ICJmKCkgdGFrZXMgZnJvbSAxIHRvIDIgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgd2VyZSBnaXZlbiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjLmV4Y2VwdGlvbiksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RTeW50YXhFcnJvckZvckZ1bmN0aW9uQ2FsbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weSBiL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weQppbmRleCAxYWZhZjcwLi5kZjRjMzdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5CkBAIC05LDggKzksOCBAQAogZGVmIHN1aXRlKCk6CiAgICAgdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgIGZvciBtIGluICh0ZXN0X2ZpeGVycywgdGVzdF9weXRyZWUsdGVzdF91dGlsLCB0ZXN0X3JlZmFjdG9yLAotICAgICAgICAgICAgICB0ZXN0X3BhcnNlciwgdGVzdF9tYWluXyk6CisgICAgZm9yIG0gaW4gKHRlc3RfZml4ZXJzLCB0ZXN0X3B5dHJlZSwgdGVzdF91dGlsLCB0ZXN0X3JlZmFjdG9yLCB0ZXN0X3BhcnNlciwKKyAgICAgICAgICAgICAgdGVzdF9tYWluXyk6CiAgICAgICAgIHRlc3RzLmFkZFRlc3RzKGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0pKQogICAgIHJldHVybiB0ZXN0cwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggODRiOGFmZS4uNWRmMjdkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworaW1wb3J0IHBpY2tsZQogCiBjbGFzcyBMaXN0VGVzdChsaXN0X3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IGxpc3QKQEAgLTY5LDYgKzcwLDMzIEBACiAgICAgICAgIGNoZWNrKDEwKSAgICAgICAjIGNoZWNrIG91ciBjaGVja2luZyBjb2RlCiAgICAgICAgIGNoZWNrKDEwMDAwMDApCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgICMgVXNlcmxpc3QgaXRlcmF0b3JzIGRvbid0IHN1cHBvcnQgcGlja2xpbmcgeWV0IHNpbmNlCisgICAgICAgICMgdGhleSBhcmUgYmFzZWQgb24gZ2VuZXJhdG9ycy4KKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSlbMTpdKQorCisgICAgZGVmIHRlc3RfcmV2ZXJzZWRfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gc2VsZi50eXBlMnRlc3QoWzQsIDUsIDYsIDddKQorICAgICAgICBpdCA9IGl0b3JnID0gcmV2ZXJzZWQoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKVsxOl0pCiAKICAgICBkZWYgdGVzdF9ub19jb21kYXRfZm9sZGluZyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSA4ODQ3OiBJbiB0aGUgUEdPIGJ1aWxkLCB0aGUgTVNWQyBsaW5rZXIncyBDT01EQVQgZm9sZGluZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQppbmRleCA4Zjc1NzRiLi41MWE3YmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQpAQCAtMTEsNyArMTEsNyBAQAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIHRsb2NzID0gKCJlbl9VUy5VVEYtOCIsICJlbl9VUy5JU084ODU5LTEiLCAiZW5fVVMiKQotICAgICAgICBpZiBpbnQob3MudW5hbWUoKVsyXS5zcGxpdCgnLicpWzBdKSA8IDEwOgorICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pIDwgMTA6CiAgICAgICAgICAgICAjIFRoZSBsb2NhbGUgdGVzdCB3b3JrIGZpbmUgb24gT1NYIDEwLjYsIEkgKHJvbmFsZG91c3NvcmVuKQogICAgICAgICAgICAgIyBoYXZlbid0IGhhZCB0aW1lIHlldCB0byB2ZXJpZnkgaWYgdGVzdHMgd29yayBvbiBPU1ggMTAuNQogICAgICAgICAgICAgIyAoMTAuNCBpcyBrbm93biB0byBiZSBiYWQpCkBAIC00MDEsNiArNDAxLDggQEAKICAgICAgICAgICAgICMgVW5zdXBwb3J0ZWQgbG9jYWxlIG9uIHRoaXMgc3lzdGVtCiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ZXN0IG5lZWRzIFR1cmtpc2ggbG9jYWxlJykKICAgICAgICAgbG9jID0gbG9jYWxlLmdldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgnZ290IGxvY2FsZSAlYScgJSAobG9jLCkpCiAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCBsb2MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jLCBsb2NhbGUuZ2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQppbmRleCAyYTNjNzgwLi5jYjkwOGZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CkBAIC0zNywxMiArMzcsMTEgQEAKIGltcG9ydCByZQogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dCwgcnVuX3dpdGhfbG9jYWxlLCBydW5fdW5pdHRlc3QsIHBhdGNoCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVGVzdEhhbmRsZXIsIE1hdGNoZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gsIHJlcXVpcmVzX3psaWIsIFRlc3RIYW5kbGVyLCBNYXRjaGVyKQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC01MCw4ICs0OSwzMSBAQAogaW1wb3J0IHdlYWtyZWYKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgIyBUaGUgZm9sbG93aW5nIGltcG9ydHMgYXJlIG5lZWRlZCBvbmx5IGZvciB0ZXN0cyB3aGljaAorICAgICMgcmVxdWlyZSB0aHJlYWRpbmcKKyAgICBpbXBvcnQgYXN5bmNoYXQKKyAgICBpbXBvcnQgYXN5bmNvcmUKKyAgICBpbXBvcnQgZXJybm8KKyAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBIVFRQU2VydmVyLCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyCisgICAgaW1wb3J0IHNtdHBkCisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlLCBwYXJzZV9xcworICAgIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCAoVGhyZWFkaW5nVURQU2VydmVyLCBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcikKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgd2luMzJldnRsb2cgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9ndXRpbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHdpbjMyZXZ0bG9ndXRpbCA9IE5vbmUKKyAgICB3aW4zMmV2dGxvZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKIAogCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSw5ICsxMDEsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogCi0gICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2Vyczogb25lIG5vbi1BU0NJSSBhbmQgb25lIFVuaWNvZGUuCi0gICAgICAgICMgVGhpcyBpcyB0byB0ZXN0IGNvcnJlY3Qgb3BlcmF0aW9uIHdoZW4gc29ydGluZyBleGlzdGluZwotICAgICAgICAjIGxvZ2dlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gY29kZS4gU2VlIGlzc3VlIDgyMDEuCisgICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2VycwogICAgICAgICBzZWxmLmxvZ2dlcjEgPSBsb2dnaW5nLmdldExvZ2dlcigiXHhhYlx4ZDdceGJiIikKICAgICAgICAgc2VsZi5sb2dnZXIyID0gbG9nZ2luZy5nZXRMb2dnZXIoIlx1MDEzZlx1MDBkNlx1MDA0NyIpCiAKQEAgLTE0Miw4ICsxNjIsNyBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAjIFN0cmluZ0lPLlN0cmluZ0lPIGxhY2tzIGEgcmVzZXQoKSBtZXRob2QuCiAgICAgICAgICAgICBhY3R1YWxfbGluZXMgPSBzdHJlYW0uZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICclcyB2cy4gJXMnICUgKGFjdHVhbF9saW5lcywgZXhwZWN0ZWRfdmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcykpCiAgICAgICAgIGZvciBhY3R1YWwsIGV4cGVjdGVkIGluIHppcChhY3R1YWxfbGluZXMsIGV4cGVjdGVkX3ZhbHVlcyk6CiAgICAgICAgICAgICBtYXRjaCA9IHBhdC5zZWFyY2goYWN0dWFsKQogICAgICAgICAgICAgaWYgbm90IG1hdGNoOgpAQCAtMTgxLDE3ICsyMDAsMTcgQEAKIAogICAgICAgICBJTkYubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgSU5GLmVycm9yKG0oKSkKLSAgICAgICAgSU5GLndhcm4obSgpKQorICAgICAgICBJTkYud2FybmluZyhtKCkpCiAgICAgICAgIElORi5pbmZvKG0oKSkKIAogICAgICAgICBERUIubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgREVCLmVycm9yKG0oKSkKLSAgICAgICAgREVCLndhcm4gKG0oKSkKLSAgICAgICAgREVCLmluZm8gKG0oKSkKKyAgICAgICAgREVCLndhcm5pbmcobSgpKQorICAgICAgICBERUIuaW5mbyhtKCkpCiAgICAgICAgIERFQi5kZWJ1ZyhtKCkpCiAKICAgICAgICAgIyBUaGVzZSBzaG91bGQgbm90IGxvZy4KLSAgICAgICAgRVJSLndhcm4obSgpKQorICAgICAgICBFUlIud2FybmluZyhtKCkpCiAgICAgICAgIEVSUi5pbmZvKG0oKSkKICAgICAgICAgRVJSLmRlYnVnKG0oKSkKIApAQCAtMjI1LDcgKzI0NCw3IEBACiAgICAgICAgIElORl9FUlIuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCi0gICAgICAgIElORl9FUlIud2FybihtKCkpCisgICAgICAgIElORl9FUlIud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlIuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlIuZGVidWcobSgpKQogCkBAIC0yNDksMTQgKzI2OCwxNCBAQAogICAgICAgICAjIFRoZXNlIHNob3VsZCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5sb2cobG9nZ2luZy5DUklUSUNBTCwgbSgpKQogICAgICAgICBJTkZfVU5ERUYuZXJyb3IobSgpKQotICAgICAgICBJTkZfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9VTkRFRi53YXJuaW5nKG0oKSkKICAgICAgICAgSU5GX1VOREVGLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5kZWJ1ZyhtKCkpCi0gICAgICAgIElORl9FUlJfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9FUlJfVU5ERUYud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZGVidWcobSgpKQogCkBAIC0yOTUsOCArMzE0LDYgQEAKICAgICAgICAgICAgICgnSU5GLkJBRFBBUkVOVCcsICdJTkZPJywgJzQnKSwKICAgICAgICAgXSkKIAotICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLmdldExvZ2dlciwgYW55KQogCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCkBAIC0zNTUsNiArMzcyLDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBoYW5kbGVyLnJlbW92ZUZpbHRlcihmaWx0ZXJmdW5jKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsdGVyKHNlbGYpOgorICAgICAgICBmID0gbG9nZ2luZy5GaWx0ZXIoKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbmFtZSc6ICdzcGFtLmVnZ3MnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZmlsdGVyKHIpKQogCiAjCiAjICAgRmlyc3QsIHdlIGRlZmluZSBvdXIgbGV2ZWxzLiBUaGVyZSBjYW4gYmUgYXMgbWFueSBhcyB5b3Ugd2FudCAtIHRoZSBvbmx5CkBAIC00OTgsNiArNTE5LDQ3OCBAQAogICAgICAgICAgICAgaGFuZGxlci5yZW1vdmVGaWx0ZXIoZ2FycikKIAogCitjbGFzcyBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgaCA9IGxvZ2dpbmcuSGFuZGxlcigpCisgICAgICAgIGgubmFtZSA9ICdnZW5lcmljJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ2dlbmVyaWMnKQorICAgICAgICBoLm5hbWUgPSAnYW5vdGhlcmdlbmVyaWMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnYW5vdGhlcmdlbmVyaWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBoLmVtaXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAjIFdlIGNhbid0IGFjdHVhbGx5ICp1c2UqIHRvbyBtYW55IGhhbmRsZXJzIGluIHRoZSB0ZXN0cywKKyAgICAgICAgIyBidXQgd2UgY2FuIHRyeSBpbnN0YW50aWF0aW5nIHRoZW0gd2l0aCB2YXJpb3VzIG9wdGlvbnMKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBmb3IgZXhpc3RpbmcgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIoZm4sIGRlbGF5PVRydWUpCisgICAgICAgICAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIGRldiwgaW5vID0gaC5kZXYsIGguaW5vCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV2LCAtMSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbm8sIC0xKQorICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ1Rlc3QnfSkKKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICAgICAgIyBOb3cgcmVtb3ZlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGNhbGwgc2hvdWxkIHJlY3JlYXRlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZXYsIC0xKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguaW5vLCAtMSkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBpZiBleGlzdGluZzoKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgIHNvY2tuYW1lID0gJy92YXIvcnVuL3N5c2xvZycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc29ja25hbWUgPSAnL2Rldi9sb2cnCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlcihzb2NrbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZmFjaWxpdHksIGguTE9HX1VTRVIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGgudW5peHNvY2tldCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6ICMgc3lzbG9nZCBtaWdodCBub3QgYmUgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnLCAnUFVUJyk6CisgICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywgJy9sb2cnLCBtZXRob2QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyKCdsb2NhbGhvc3QnLCAnL2xvZycsIG1ldGhvZCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuQnVmZmVyaW5nSGFuZGxlcigwKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaC5zaG91bGRGbHVzaChyKSkKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkJ1ZmZlcmluZ0hhbmRsZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnV2F0Y2hlZEZpbGVIYW5kbGVyIG5vdCBhcHByb3ByaWF0ZSBmb3IgV2luZG93cy4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfcmFjZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ2MzIgcmVmZXJzLgorICAgICAgICBkZWYgcmVtb3ZlX2xvb3AoZm5hbWUsIHRyaWVzKToKKyAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHRyaWVzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDQgKiByYW5kb20ucmFuZGludCgwLCA0KSkKKworICAgICAgICBkZWxfY291bnQgPSA1MDAKKyAgICAgICAgbG9nX2NvdW50ID0gNTAwCisKKyAgICAgICAgZm9yIGRlbGF5IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCcubG9nJywgJ3Rlc3RfbG9nZ2luZy0zLScpCisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgIHJlbW92ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZW1vdmVfbG9vcCwgYXJncz0oZm4sIGRlbF9jb3VudCkpCisgICAgICAgICAgICByZW1vdmVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHJlbW92ZXIuc3RhcnQoKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1kZWxheSkKKyAgICAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJykKKyAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGYpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobG9nX2NvdW50KToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKKyAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nJyB9KQorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZW1vdmVyLmpvaW4oKQorICAgICAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCisKK2NsYXNzIEJhZFN0cmVhbShvYmplY3QpOgorICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkZWxpYmVyYXRlIG1pc3Rha2UnKQorCitjbGFzcyBUZXN0U3RyZWFtSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgIGRlZiBoYW5kbGVFcnJvcihzZWxmLCByZWNvcmQpOgorICAgICAgICBzZWxmLmVycm9yX3JlY29yZCA9IHJlY29yZAorCitjbGFzcyBTdHJlYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfZXJyb3JfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIGggPSBUZXN0U3RyZWFtSGFuZGxlcihCYWRTdHJlYW0oKSkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgb2xkX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5lcnJvcl9yZWNvcmQsIHIpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2lvLmdldHZhbHVlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9sZF9zdGRlcnIKKworIyAtLSBUaGUgZm9sbG93aW5nIHNlY3Rpb24gY291bGQgYmUgbW92ZWQgaW50byBhIHNlcnZlcl9oZWxwZXIucHkgbW9kdWxlCisjIC0tIGlmIGl0IHByb3ZlcyB0byBiZSBvZiB3aWRlciB1dGlsaXR5IHRoYW4ganVzdCB0ZXN0X2xvZ2dpbmcKKworaWYgdGhyZWFkaW5nOgorICAgIGNsYXNzIFRlc3RTTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGRlcml2ZWQgY2xhc3MgaGFzIGhhZCB0byBiZSBjcmVhdGVkIGJlY2F1c2Ugc210cGQgZG9lcyBub3QKKyAgICAgICAgc3VwcG9ydCB1c2Ugb2YgY3VzdG9tIGNoYW5uZWwgbWFwcywgYWx0aG91Z2ggdGhleSBhcmUgYWxsb3dlZCBieQorICAgICAgICBhc3luY29yZSdzIGRlc2lnbi4gSXNzdWUgIzExOTU5IGhhcyBiZWVuIHJhaXNlZCB0byBhZGRyZXNzIHRoaXMsCisgICAgICAgIGFuZCBpZiByZXNvbHZlZCBzYXRpc2ZhY3RvcmlseSwgc29tZSBvZiB0aGlzIGNvZGUgY2FuIGJlIHJlbW92ZWQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBzb2NrbWFwKToKKyAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgc29ja21hcCkKKyAgICAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KKyAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKKyAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCisgICAgICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCisgICAgICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCisgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZworICAgICAgICAgICAgICAgICMgYmVmb3JlIHdlIGNhbiBnZXQgdGhlIHBlZXJuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBzbXRwZC5fX3ZlcnNpb25fXykpCisgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorCisKKyAgICBjbGFzcyBUZXN0U01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHRlc3QgU01UUCBzZXJ2ZXIuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgKGhvc3QsIHBvcnQpIHR1cGxlIHdoaWNoIHRoZSBzZXJ2ZXIgbGlzdGVucyBvbi4KKyAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBhIHBvcnQgdmFsdWUgb2YgemVybzogdGhlIHNlcnZlcidzCisgICAgICAgICAgICAgICAgICAgICAqcG9ydCogYXR0cmlidXRlIHdpbGwgaG9sZCB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICB1c2VkLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBjbGllbnQgY29ubmVjdGlvbnMuCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nIG1lc3NhZ2VzLiBUaGUgaGFuZGxlciB3aWxsIGJlIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsaWVudCBhZGRyZXNzIHR1cGxlLCB3aG8gdGhlIG1lc3NhZ2UgaXMgZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgbGlzdCBvZiByZWNpcGllbnRzIGFuZCB0aGUgbWVzc2FnZSBkYXRhLgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCB1c2VkIGluIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLgorICAgICAgICA6cGFyYW0gc29ja21hcDogQSBkaWN0aW9uYXJ5IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBob2xkCisgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YGFzeW5jb3JlLmRpc3BhdGNoZXJgIGluc3RhbmNlcyB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgYXN5bmNvcmUubG9vcGAuIFRoaXMgYXZvaWRzIGNoYW5naW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZDpgYXN5bmNvcmVgIG1vZHVsZSdzIGdsb2JhbCBzdGF0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGNoYW5uZWxfY2xhc3MgPSBUZXN0U01UUENoYW5uZWwKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCwgc29ja21hcCk6CisgICAgICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBhZGRyCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gTm9uZQorICAgICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnNvY2ttYXAgPSBzb2NrbWFwCisgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1zb2NrbWFwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICAgICAgc29jay5zZXRibG9ja2luZygwKQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQorICAgICAgICAgICAgICAgIHNlbGYuYmluZChhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQorICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisKKyAgICAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUmVkZWZpbmVkIG9ubHkgYmVjYXVzZSB0aGUgYmFzZSBjbGFzcyBkb2VzIG5vdCBwYXNzIGluIGEKKyAgICAgICAgICAgIG1hcCwgZm9yY2luZyB1c2Ugb2YgYSBnbG9iYWwgaW4gOm1vZDpgYXN5bmNvcmVgLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuc29ja21hcCkKKworICAgICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRGVsZWdhdGVzIHRvIHRoZSBoYW5kbGVyIHBhc3NlZCBpbiB0byB0aGUgc2VydmVyJ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIGEgdGVzdCBjYXNlIG1ldGhvZC4KKyAgICAgICAgICAgIDpwYXJhbSBwZWVyOiBUaGUgY2xpZW50IChob3N0LCBwb3J0KSB0dXBsZS4KKyAgICAgICAgICAgIDpwYXJhbSBtYWlsZnJvbTogVGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRlci4KKyAgICAgICAgICAgIDpwYXJhbSByY3B0dG9zOiBUaGUgYWRkcmVzc2VzIG9mIHRoZSByZWNpcGllbnRzLgorICAgICAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBtZXNzYWdlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKQorCisgICAgICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RhcnQgdGhlIHNlcnZlciBydW5uaW5nIG9uIGEgc2VwYXJhdGUgZGFlbW9uIHRocmVhZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2VydmVfZm9yZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYucG9sbF9pbnRlcnZhbCwpKQorICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorCisgICAgICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWwpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBSdW4gdGhlIDptb2Q6YGFzeW5jb3JlYCBsb29wIHVudGlsIG5vcm1hbCB0ZXJtaW5hdGlvbgorICAgICAgICAgICAgY29uZGl0aW9ucyBhcmlzZS4KKyAgICAgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgaW50ZXJ2YWwsIGluIHNlY29uZHMsIHVzZWQgaW4gdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFzeW5jb3JlLmxvb3AocG9sbF9pbnRlcnZhbCwgbWFwPXNlbGYuc29ja21hcCkKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3I6CisgICAgICAgICAgICAgICAgIyBPbiBGcmVlQlNEIDgsIGNsb3NpbmcgdGhlIHNlcnZlciByZXBlYXRhYmx5CisgICAgICAgICAgICAgICAgIyByYWlzZXMgdGhpcyBlcnJvci4gV2Ugc3dhbGxvdyBpdCBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0ZWQgb3Igc2VsZi5hY2NlcHRpbmc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RvcCB0aGUgdGhyZWFkIGJ5IGNsb3NpbmcgdGhlIHNlcnZlciBpbnN0YW5jZS4KKyAgICAgICAgICAgIFdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KKworICAgICAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IEhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGVybWluYXRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisKKyAgICBjbGFzcyBDb250cm9sTWl4aW4ob2JqZWN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgbWl4aW4gaXMgdXNlZCB0byBzdGFydCBhIHNlcnZlciBvbiBhIHNlcGFyYXRlIHRocmVhZCwgYW5kCisgICAgICAgIHNodXQgaXQgZG93biBwcm9ncmFtbWF0aWNhbGx5LiBSZXF1ZXN0IGhhbmRsaW5nIGlzIHNpbXBsaWZpZWQgLSBpbnN0ZWFkCisgICAgICAgIG9mIG5lZWRpbmcgdG8gZGVyaXZlIGEgc3VpdGFibGUgUmVxdWVzdEhhbmRsZXIgc3ViY2xhc3MsIHlvdSBqdXN0CisgICAgICAgIHByb3ZpZGUgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIHBhc3NlZCBlYWNoIHJlY2VpdmVkIHJlcXVlc3QgdG8gYmUKKyAgICAgICAgcHJvY2Vzc2VkLgorCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4gVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB0aHJlYWQsIGVmZmVjdGl2ZWx5IG1lYW5pbmcgdGhhdCByZXF1ZXN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZCBzZXJpYWxseS4gV2hpbGUgbm90IHF1aXRlIFdlYiBzY2FsZSA7LSksCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHNob3VsZCBiZSBmaW5lIGZvciB0ZXN0aW5nIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGluIHNlY29uZHMuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi5yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDcmVhdGUgYSBkYWVtb24gdGhyZWFkIHRvIHJ1biB0aGUgc2VydmVyLCBhbmQgc3RhcnQgaXQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlX2ZvcmV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnBvbGxfaW50ZXJ2YWwsKSkKKyAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUnVuIHRoZSBzZXJ2ZXIuIFNldCB0aGUgcmVhZHkgZmxhZyBiZWZvcmUgZW50ZXJpbmcgdGhlCisgICAgICAgICAgICBzZXJ2aWNlIGxvb3AuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYucmVhZHkuc2V0KCkKKyAgICAgICAgICAgIHN1cGVyKENvbnRyb2xNaXhpbiwgc2VsZikuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRlbGwgdGhlIHNlcnZlciB0aHJlYWQgdG8gc3RvcCwgYW5kIHdhaXQgZm9yIGl0IHRvIGRvIHNvLgorCisgICAgICAgICAgICA6cGFyYW0gdGltZW91dDogSG93IGxvbmcgdG8gd2FpdCBmb3IgdGhlIHNlcnZlciB0aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0ZXJtaW5hdGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oKQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5yZWFkeS5jbGVhcigpCisKKyAgICBjbGFzcyBUZXN0SFRUUFNlcnZlcihDb250cm9sTWl4aW4sIEhUVFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQW4gSFRUUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoZSByZXF1ZXN0LgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcy4KKyAgICAgICAgOnBhcmFtIGxvZzogUGFzcyBgYFRydWVgYCB0byBlbmFibGUgbG9nIG1lc3NhZ2VzLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgbG9nPUZhbHNlLCBzc2xjdHg9Tm9uZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ2RvXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucHJvY2Vzc19yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorCisgICAgICAgICAgICAgICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgorICAgICAgICAgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcihEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikubG9nX21lc3NhZ2UoZm9ybWF0LCAqYXJncykKKyAgICAgICAgICAgIEhUVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcikKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgc2VsZi5zc2xjdHggPSBzc2xjdHgKKworICAgICAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29jaywgYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zc2xjdHg6CisgICAgICAgICAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNzbGN0eC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgc29ja2V0IGVycm9ycyBhcmUgc2lsZW5jZWQgYnkgdGhlIGNhbGxlciwgcHJpbnQgdGhlbSBoZXJlCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiR290IGFuIGVycm9yOlxuJXNcbiIgJSBlKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByZXR1cm4gc29jaywgYWRkcgorCisgICAgY2xhc3MgVGVzdFRDUFNlcnZlcihDb250cm9sTWl4aW4sIFRocmVhZGluZ1RDUFNlcnZlcik6CisgICAgICAgICIiIgorICAgICAgICBBIFRDUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLgorICAgICAgICA6YmluZF9hbmRfYWN0aXZhdGU6IElmIFRydWUgKHRoZSBkZWZhdWx0KSwgYmluZHMgdGhlIHNlcnZlciBhbmQgc3RhcnRzIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nLiBJZiBGYWxzZSwgeW91IG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kIDptZXRoOmBzZXJ2ZXJfYWN0aXZhdGVgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBsYXRlciB0aW1lIGJlZm9yZSBjYWxsaW5nIDptZXRoOmBzdGFydGAsIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyIHdpbGwgc2V0IHVwIHRoZSBzb2NrZXQgYW5kIGxpc3RlbiBvbiBpdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RUQ1BTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgIGNsYXNzIFRlc3RVRFBTZXJ2ZXIoQ29udHJvbE1peGluLCBUaHJlYWRpbmdVRFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBVRFAgc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGZvciBzaHV0ZG93biByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlY29uZHMuCisgICAgICAgIDpiaW5kX2FuZF9hY3RpdmF0ZTogSWYgVHJ1ZSAodGhlIGRlZmF1bHQpLCBiaW5kcyB0aGUgc2VydmVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0cyBpdCBsaXN0ZW5pbmcuIElmIEZhbHNlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBhdCBzb21lIGxhdGVyIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgY2FsbGluZyA6bWV0aDpgc3RhcnRgLCBzbyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGUgc29ja2V0IGFuZCBsaXN0ZW4gb24gaXQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlcihEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLl9oYW5kbGVyKHNlbGYpCisKKyAgICAgICAgICAgICAgICBkZWYgZmluaXNoKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi53ZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLCBzZWxmKS5maW5pc2goKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIuX2Nsb3NlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgVGhyZWFkaW5nVURQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgQ29udHJvbE1peGluLl9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RVRFBTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgICAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoVGVzdFVEUFNlcnZlciwgc2VsZikuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKKworIyAtIGVuZCBvZiBzZXJ2ZXJfaGVscGVyIHNlY3Rpb24KKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNNVFBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNvY2ttYXAgPSB7fQorICAgICAgICBzZXJ2ZXIgPSBUZXN0U01UUFNlcnZlcigoJ2xvY2FsaG9zdCcsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ttYXApCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0KQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcihhZGRyLCAnbWUnLCAneW91JywgJ0xvZycsIHRpbWVvdXQ9NS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudG9hZGRycywgWyd5b3UnXSkKKyAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnSGVsbG8nfSkKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoNS4wKSAgIyAxNDMxNDogZG9uJ3Qgd2FpdCBmb3JldmVyCisgICAgICAgIHNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaGFuZGxlZC5pc19zZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tZXNzYWdlcyksIDEpCisgICAgICAgIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhID0gc2VsZi5tZXNzYWdlc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxmcm9tLCAnbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjcHR0b3MsIFsneW91J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuU3ViamVjdDogTG9nXG4nLCBkYXRhKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YS5lbmRzd2l0aCgnXG5cbkhlbGxvJykpCisgICAgICAgIGguY2xvc2UoKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGFyZ3MpCisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCiBjbGFzcyBNZW1vcnlIYW5kbGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0cyBmb3IgdGhlIE1lbW9yeUhhbmRsZXIuIiIiCkBAIC01MjUsNyArMTAxOCw3IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKICAgICAgICAgIyBUaGlzIHdpbGwgZmx1c2ggYmVjYXVzZSB0aGUgbGV2ZWwgaXMgPj0gbG9nZ2luZy5XQVJOSU5HCi0gICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuaW5nKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIGxpbmVzID0gWwogICAgICAgICAgICAgKCdERUJVRycsICcxJyksCiAgICAgICAgICAgICAoJ0lORk8nLCAnMicpLApAQCAtODcwLDY4ICsxMzYzLDYgQEAKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAotY2xhc3MgTG9nUmVjb3JkU3RyZWFtSGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6Ci0KLSAgICAiIiJIYW5kbGVyIGZvciBhIHN0cmVhbWluZyBsb2dnaW5nIHJlcXVlc3QuIEl0IHNhdmVzIHRoZSBsb2cgbWVzc2FnZSBpbiB0aGUKLSAgICBUQ1Agc2VydmVyJ3MgJ2xvZ19vdXRwdXQnIGF0dHJpYnV0ZS4iIiIKLQotICAgIFRDUF9MT0dfRU5EID0gIiEhIUVORCEhISIKLQotICAgIGRlZiBoYW5kbGUoc2VsZik6Ci0gICAgICAgICIiIkhhbmRsZSBtdWx0aXBsZSByZXF1ZXN0cyAtIGVhY2ggZXhwZWN0ZWQgdG8gYmUgb2YgNC1ieXRlIGxlbmd0aCwKLSAgICAgICAgZm9sbG93ZWQgYnkgdGhlIExvZ1JlY29yZCBpbiBwaWNrbGUgZm9ybWF0LiBMb2dzIHRoZSByZWNvcmQKLSAgICAgICAgYWNjb3JkaW5nIHRvIHdoYXRldmVyIHBvbGljeSBpcyBjb25maWd1cmVkIGxvY2FsbHkuIiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KDQpCi0gICAgICAgICAgICBpZiBsZW4oY2h1bmspIDwgNDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2xlbiA9IHN0cnVjdC51bnBhY2soIj5MIiwgY2h1bmspWzBdCi0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KHNsZW4pCi0gICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgc2VsZi5jb25uZWN0aW9uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCi0gICAgICAgICAgICBvYmogPSBzZWxmLnVucGlja2xlKGNodW5rKQotICAgICAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX2xvZ19yZWNvcmQocmVjb3JkKQotCi0gICAgZGVmIHVucGlja2xlKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGRhdGEpCi0KLSAgICBkZWYgaGFuZGxlX2xvZ19yZWNvcmQoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgIyBJZiB0aGUgZW5kLW9mLW1lc3NhZ2VzIHNlbnRpbmVsIGlzIHNlZW4sIHRlbGwgdGhlIHNlcnZlciB0bwotICAgICAgICAjICB0ZXJtaW5hdGUuCi0gICAgICAgIGlmIHNlbGYuVENQX0xPR19FTkQgaW4gcmVjb3JkLm1zZzoKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLmFib3J0ID0gMQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuc2VydmVyLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICJcbiIKLQotCi1jbGFzcyBMb2dSZWNvcmRTb2NrZXRSZWNlaXZlcihUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgotCi0gICAgIiIiQSBzaW1wbGUtbWluZGVkIFRDUCBzb2NrZXQtYmFzZWQgbG9nZ2luZyByZWNlaXZlciBzdWl0YWJsZSBmb3IgdGVzdAotICAgIHB1cnBvc2VzLiIiIgotCi0gICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEKLSAgICBsb2dfb3V0cHV0ID0gIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSdsb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PWxvZ2dpbmcuaGFuZGxlcnMuREVGQVVMVF9UQ1BfTE9HR0lOR19QT1JULAotICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcj1Mb2dSZWNvcmRTdHJlYW1IYW5kbGVyKToKLSAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIChob3N0LCBwb3J0KSwgaGFuZGxlcikKLSAgICAgICAgc2VsZi5hYm9ydCA9IEZhbHNlCi0gICAgICAgIHNlbGYudGltZW91dCA9IDAuMQotICAgICAgICBzZWxmLmZpbmlzaGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKLQotICAgIGRlZiBzZXJ2ZV91bnRpbF9zdG9wcGVkKHNlbGYpOgotICAgICAgICB3aGlsZSBub3Qgc2VsZi5hYm9ydDoKLSAgICAgICAgICAgIHJkLCB3ciwgZXggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNvY2tldC5maWxlbm8oKV0sIFtdLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCkKLSAgICAgICAgICAgIGlmIHJkOgotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAjIE5vdGlmeSB0aGUgbWFpbiB0aHJlYWQgdGhhdCB3ZSdyZSBhYm91dCB0byBleGl0Ci0gICAgICAgIHNlbGYuZmluaXNoZWQuc2V0KCkKLSAgICAgICAgIyBjbG9zZSB0aGUgbGlzdGVuIHNvY2tldAotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCi0KIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFNvY2tldEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKQEAgLTk0Miw0NCArMTM3MywyNzAgQEAKICAgICAgICAgIiIiU2V0IHVwIGEgVENQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgU29ja2V0SGFuZGxlcgogICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCi0gICAgICAgIHNlbGYudGNwc2VydmVyID0gTG9nUmVjb3JkU29ja2V0UmVjZWl2ZXIocG9ydD0wKQotICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnRjcHNlcnZlci5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQotICAgICAgICBzZWxmLnRocmVhZHMgPSBbCi0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi50Y3BzZXJ2ZXIuc2VydmVfdW50aWxfc3RvcHBlZCldCi0gICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgotICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKLQotICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuU29ja2V0SGFuZGxlcignbG9jYWxob3N0Jywgc2VsZi5wb3J0KQotICAgICAgICBzZWxmLnNvY2tfaGRsci5zZXRGb3JtYXR0ZXIoc2VsZi5yb290X2Zvcm1hdHRlcikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VENQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlNvY2tldEhhbmRsZXIoJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJwogICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuU2VtYXBob3JlKDApCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICIiIlNodXRkb3duIHRoZSBUQ1Agc2VydmVyLiIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRjcHNlcnZlci5hYm9ydCA9IFRydWUKLSAgICAgICAgICAgIGRlbCBzZWxmLnRjcHNlcnZlcgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCiAgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCiAgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigyLjApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZik6Ci0gICAgICAgICIiIkdldCB0aGUgbG9nIG91dHB1dCBhcyByZWNlaXZlZCBieSB0aGUgVENQIHNlcnZlci4iIiIKLSAgICAgICAgIyBTaWduYWwgdGhlIFRDUCByZWNlaXZlciBhbmQgd2FpdCBmb3IgaXQgdG8gdGVybWluYXRlLgotICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmNyaXRpY2FsKExvZ1JlY29yZFN0cmVhbUhhbmRsZXIuVENQX0xPR19FTkQpCi0gICAgICAgIHNlbGYudGNwc2VydmVyLmZpbmlzaGVkLndhaXQoMi4wKQotICAgICAgICByZXR1cm4gc2VsZi50Y3BzZXJ2ZXIubG9nX291dHB1dAorICAgIGRlZiBoYW5kbGVfc29ja2V0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBjb25uID0gcmVxdWVzdC5jb25uZWN0aW9uCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdig0KQorICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA8IDQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3Yoc2xlbikKKyAgICAgICAgICAgIHdoaWxlIGxlbihjaHVuaykgPCBzbGVuOgorICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmsgKyBjb25uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCisgICAgICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMoY2h1bmspCisgICAgICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICAgICAgc2VsZi5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAnXG4nCisgICAgICAgICAgICBzZWxmLmhhbmRsZWQucmVsZWFzZSgpCiAKICAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIFNvY2tldEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCiAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0Y3AiKQogICAgICAgICBsb2dnZXIuZXJyb3IoInNwYW0iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZWdncyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfb3V0cHV0KCksICJzcGFtXG5lZ2dzXG4iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCAic3BhbVxuZWdnc1xuIikKIAorICAgIGRlZiB0ZXN0X25vc2VydmVyKHNlbGYpOgorICAgICAgICAjIEtpbGwgdGhlIHNlcnZlcgorICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgI1RoZSBsb2dnaW5nIGNhbGwgc2hvdWxkIHRyeSB0byBjb25uZWN0LCB3aGljaCBzaG91bGQgZmFpbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmV4Y2VwdGlvbignTmV2ZXIgc2VudCcpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05ldmVyIHNlbnQsIGVpdGhlcicpCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNvY2tfaGRsci5yZXRyeVRpbWUgPiBub3cpCisgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5zb2NrX2hkbHIucmV0cnlUaW1lIC0gbm93ICsgMC4wMDEpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05vciB0aGlzJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgRGF0YWdyYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IGZvciBEYXRhZ3JhbUhhbmRsZXIuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlNldCB1cCBhIFVEUCBzZXJ2ZXIgdG8gcmVjZWl2ZSBsb2cgbWVzc2FnZXMsIGFuZCBhIERhdGFncmFtSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFVEUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9kYXRhZ3JhbSwgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuRGF0YWdyYW1IYW5kbGVyKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJworICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgVURQIHNlcnZlci4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQorCisgICAgZGVmIGhhbmRsZV9kYXRhZ3JhbShzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2xlbiA9IHN0cnVjdC5wYWNrKCc+TCcsIDApICMgbGVuZ3RoIG9mIHByZWZpeAorICAgICAgICBwYWNrZXQgPSByZXF1ZXN0LnBhY2tldFtsZW4oc2xlbik6XQorICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMocGFja2V0KQorICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICdcbicKKyAgICAgICAgc2VsZi5oYW5kbGVkLnNldCgpCisKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIERhdGFncmFtSGFuZGxlciBpcyBwcm9wZXJseSByZWNlaXZlZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInVkcCIpCisgICAgICAgIGxvZ2dlci5lcnJvcigic3BhbSIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJlZ2dzIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFN5c0xvZ0hhbmRsZXJUZXN0KEJhc2VUZXN0KToKKworICAgICIiIlRlc3QgZm9yIFN5c0xvZ0hhbmRsZXIgdXNpbmcgVURQLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQgdXAgYSBVRFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBTeXNMb2dIYW5kbGVyCisgICAgICAgIHBvaW50aW5nIHRvIHRoYXQgc2VydmVyJ3MgYWRkcmVzcyBhbmQgcG9ydC4iIiIKKyAgICAgICAgQmFzZVRlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VURQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX2RhdGFncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNsX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIoKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlNodXRkb3duIHRoZSBVRFAgc2VydmVyLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNsX2hkbHIuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKKworICAgIGRlZiBoYW5kbGVfZGF0YWdyYW0oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYubG9nX291dHB1dCA9IHJlcXVlc3QucGFja2V0CisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBTeXNMb2dIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigic2xoIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+c3BceGMzXHhhNG1ceDAwJykKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgc2VsZi5zbF9oZGxyLmFwcGVuZF9udWwgPSBGYWxzZQorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5zcFx4YzNceGE0bScpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIHNlbGYuc2xfaGRsci5pZGVudCA9ICJoXHhlNG0tIgorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5oXHhjM1x4YTRtLXNwXHhjM1x4YTRtJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSFRUUEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICAiIiJUZXN0IGZvciBIVFRQSGFuZGxlci4iIiIKKworICAgIFBFTUZJTEUgPSAiIiItLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitNSUlDWFFJQkFBS0JnUURHVDR4UzVyOTFyYkxKUUsyblVEZW5CaEJHNnFGaytiVk9qdUFHQy9MU0hsQW9CbnZHCit6UUczYWdPRytlN2M1ejJYVDhtMmt0T1JMcUczRTRtWW1ieGd5aERyelA2ZWkyQW5jK3Bzem1ueFBvSzNQdWg1CithWFYrWEt0MGJVMEMxbTIrQUNtR0dKMHQzUDQwOGFydDgybk94Qnc4WkhnSWc5RHRwNnhJVUN5T3F3SURBUUFCCitBb0dCQUpGVG5GYm9hS2g1ZVVySXpqbU5yS3NHNDRqRXl5K3ZXdkhOL0ZnU0M0bDEwM0h4aG1XaXVMNUx2M2Y3CiswdE1wMXRYN0Q2eHZId0lHOVZXdnlLYi9DcTlySnNEaWJtRFZJT3Nsbk9XZVFoRytYd0p5aXRSMHBxL0tsSklCCis1TGpPUmNCdzc5NW9LV09BaTZSY09iMU9ONTl0eXNFRlloQUdRTzlrNlZMNjIxZ1JBa0VBL0diK1lYVUxMcGJzCitwaVhOM3E0emNIemVhVkFObzY5dFVaNlRqYVFxTWVUeEU0dE9ZTTBHMFpvU2VIRWRhUDU5QU9aR0tYWE5HU1F5Cisyei9NZGRjWUdRSkJBTWtqTFNZSXBPTEpZMTFqYThPd3dzd0ZHMmhFekhlMGNTOWJ6bysrUi9qYzFiSEE1UjBZCitpNnZBNWlQaSt3b3BQRnZweXRkQm9sN1V1RUJlNXhacnhXTUNRUUNXeEVMUkhpUDJ5V3BFZUxKM2dHRHpvWE1OCitQeWRXamhSanU3QngzQXprVHRmK0Q2bGF3ejErZUdUdUVzczVpMEpLQmtNRXd2d25OMnMxY2UrRXVGNEpBa0JiCitFOTZoMWxBemtWVzVPQWZZT1BZOFJDUEE5MFpPL2hveWc3UHBTeFIwRUN1RHJnRVJSOGdYSWVZVVlmZWpCa0VhCityYWI0Q2ZSb1ZKS0tNMjhZcS94WkFrQnZ1cTY3MEpSQ3dPZ2ZVVGR3dzdXcGRPUUJZUGt6UWNjc0tOQ3NsUVc4CisvRHlXNnkwNm9RdXNTRU5VdnluVDZkcjNMSnh0L05nWlBoWlgyK2sxZVlEVgorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ0d6Q0NBWVNnQXdJQkFnSUpBSXE4NGEyUS9PdmxNQTBHQ1NxR1NJYjNEUUVCQlFVQU1CUXhFakFRQmdOVgorQkFNVENXeHZZMkZzYUc5emREQWVGdzB4TVRBMU1qRXhNREl6TXpOYUZ3MDNOVEF6TWpFd016VTFNVGRhTUJReAorRWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQQoreGsrTVV1YS9kYTJ5eVVDdHAxQTNwd1lRUnVxaFpQbTFUbzdnQmd2eTBoNVFLQVo3eHMwQnQyb0Rodm51M09jOQorbDAvSnRwTFRrUzZodHhPSm1KbThZTW9RNjh6K25vdGdKM1BxYk01cDhUNkN0ejdvZVdsMWZseXJkRzFOQXRadAordmdBcGhoaWRMZHorTlBHcTdmTnB6c1FjUEdSNENJUFE3YWVzU0ZBc2pxc0NBd0VBQWFOMU1ITXdIUVlEVlIwTworQkJZRUZMV2FVUE82TjdlZkdpdW9TOWkzRFZZY1V3bjBNRVFHQTFVZEl3UTlNRHVBRkxXYVVQTzZON2VmR2l1bworUzlpM0RWWWNVd24wb1Jpa0ZqQVVNUkl3RUFZRFZRUURFd2xzYjJOaGJHaHZjM1NDQ1FDS3ZPR3RrUHpyNVRBTQorQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFNSzV3aFBqTE5RSzFJdnZrODhvcUpxcQorNGY4ODlPd2lrR1AwZVVoT0JoYkZsc1pzK2pxNVlaQzJVekh6K2V2ektCbGdBUDF1NGxQL2NCODVDbmp2V3FNKworMWMvbHl3RkhRNkhPZERlUTFMNzJ0U1lNck5PRzRYTm1MbjBoN3J4NkdvVFU3ZGNGUmZzZWFoQkNxOG12MElEdAorSVJiVHB2bEhXUGpzU3ZIejBaT0gKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiU2V0IHVwIGFuIEhUVFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBIVFRQSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuY29tbWFuZCA9IHJlcXVlc3QuY29tbWFuZAorICAgICAgICBzZWxmLmxvZ19kYXRhID0gdXJscGFyc2UocmVxdWVzdC5wYXRoKQorICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gJ1BPU1QnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJsZW4gPSBpbnQocmVxdWVzdC5oZWFkZXJzWydDb250ZW50LUxlbmd0aCddKQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9kYXRhID0gcmVxdWVzdC5yZmlsZS5yZWFkKHJsZW4pCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2RhdGEgPSBOb25lCisgICAgICAgIHJlcXVlc3Quc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgIHJlcXVlc3QuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKworICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9nIG1lc3NhZ2Ugc2VudCB0byB0aGUgSFRUUEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJodHRwIikKKyAgICAgICAgcm9vdF9sb2dnZXIgPSBzZWxmLnJvb3RfbG9nZ2VyCisgICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgZm9yIHNlY3VyZSBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgICAgIGlmIHNlY3VyZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzc2wKKyAgICAgICAgICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5QRU1GSUxFKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHgubG9hZF9jZXJ0X2NoYWluKGZuKQorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNzbGN0eCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdEhUVFBTZXJ2ZXIoYWRkciwgc2VsZi5oYW5kbGVfcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAxLCBzc2xjdHg9c3NsY3R4KQorICAgICAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0OiVkJyAlIHNlcnZlci5zZXJ2ZXJfcG9ydAorICAgICAgICAgICAgc2VjdXJlX2NsaWVudCA9IHNlY3VyZSBhbmQgc3NsY3R4CisgICAgICAgICAgICBzZWxmLmhfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuSFRUUEhhbmRsZXIoaG9zdCwgJy9mcm9iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cmU9c2VjdXJlX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYubG9nX2RhdGEgPSBOb25lCisgICAgICAgICAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuaF9oZGxyKQorCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnKToKKyAgICAgICAgICAgICAgICBzZWxmLmhfaGRsci5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZWQuY2xlYXIoKQorICAgICAgICAgICAgICAgIG1zZyA9ICJzcFx4ZTRtIgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfZGF0YS5wYXRoLCAnL2Zyb2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21tYW5kLCBtZXRob2QpCisgICAgICAgICAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5sb2dfZGF0YS5xdWVyeSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5wb3N0X2RhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnbmFtZSddLCBbJ2h0dHAnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ2Z1bmNOYW1lJ10sIFsndGVzdF9vdXRwdXQnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ21zZyddLCBbbXNnXSkKKworICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5oX2hkbHIpCisgICAgICAgICAgICBzZWxmLmhfaGRsci5jbG9zZSgpCiAKIGNsYXNzIE1lbW9yeVRlc3QoQmFzZVRlc3QpOgogCkBAIC0xMDg3LDI4ICsxNzQ0LDM5IEBACiAgICAgZGVmIHRlc3Rfd2FybmluZ3Moc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzKFRydWUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQotICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihmaWxlKQotICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJJJ20gd2FybmluZyB5b3UuLi4iKQotICAgICAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCi0gICAgICAgICAgICAgICAgcyA9IGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncywgRmFsc2UpCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoKQorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiSSdtIHdhcm5pbmcgeW91Li4uIikKKyAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgICAgICBzID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZmluZCgiVXNlcldhcm5pbmc6IEknbSB3YXJuaW5nIHlvdS4uLlxuIikgPiAwKQogCi0gICAgICAgICAgICAgICAgI1NlZSBpZiBhbiBleHBsaWNpdCBmaWxlIHVzZXMgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZygiRXhwbGljaXQiLCBVc2VyV2FybmluZywgImR1bW15LnB5IiwgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgIkR1bW15IGxpbmUiKQotICAgICAgICAgICAgICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZHVtbXkucHk6NDI6IFVzZXJXYXJuaW5nOiBFeHBsaWNpdFxuICBEdW1teSBsaW5lXG4iKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhGYWxzZSkKKyAgICAgICAgICAgICNTZWUgaWYgYW4gZXhwbGljaXQgZmlsZSB1c2VzIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgYV9maWxlID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcoIkV4cGxpY2l0IiwgVXNlcldhcm5pbmcsICJkdW1teS5weSIsIDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9maWxlLCAiRHVtbXkgbGluZSIpCisgICAgICAgICAgICBzID0gYV9maWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGFfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICAgICAgImR1bW15LnB5OjQyOiBVc2VyV2FybmluZzogRXhwbGljaXRcbiAgRHVtbXkgbGluZVxuIikKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdzX25vX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhUcnVlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzLCBGYWxzZSkKKworICAgICAgICAgICAgIyBjb25maXJtIG91ciBhc3N1bXB0aW9uOiBubyBsb2dnZXJzIGFyZSBzZXQKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci5oYW5kbGVycywgW10pCisKKyAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nKCJFeHBsaWNpdCIsIFVzZXJXYXJuaW5nLCAiZHVtbXkucHkiLCA0MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dlci5oYW5kbGVycyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobG9nZ2VyLmhhbmRsZXJzWzBdLCBsb2dnaW5nLk51bGxIYW5kbGVyKQogCiAKIGRlZiBmb3JtYXRGdW5jKGZvcm1hdCwgZGF0ZWZtdD1Ob25lKToKQEAgLTE5NjEsNiArMjYyOSw3IEBACiAgICAgICAgICAgICBsb2dnaW5nLmNvbmZpZy5zdG9wTGlzdGVuaW5nKCkKICAgICAgICAgICAgIHQuam9pbigyLjApCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMTBfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIoanNvbi5kdW1wcyhzZWxmLmNvbmZpZzEwKSkKQEAgLTE5ODAsNiArMjY0OSw3IEBACiAgICAgICAgICAgICAgICAgKCdFUlJPUicsICc0JyksCiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9saXN0ZW5fY29uZmlnXzFfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodGV4dHdyYXAuZGVkZW50KENvbmZpZ0ZpbGVUZXN0LmNvbmZpZzEpKQpAQCAtMTk5NCw2ICsyNjY0LDI3IEBACiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKKyAgICBkZWYgdGVzdF9iYXNlY29uZmlnKHNlbGYpOgorICAgICAgICBkID0geworICAgICAgICAgICAgJ2F0dXBsZSc6ICgxLCAyLCAzKSwKKyAgICAgICAgICAgICdhbGlzdCc6IFsnYScsICdiJywgJ2MnXSwKKyAgICAgICAgICAgICdhZGljdCc6IHsnZCc6ICdlJywgJ2YnOiAzIH0sCisgICAgICAgICAgICAnbmVzdDEnOiAoJ2cnLCAoJ2gnLCAnaScpLCAnaicpLAorICAgICAgICAgICAgJ25lc3QyJzogWydrJywgWydsJywgJ20nXSwgJ24nXSwKKyAgICAgICAgICAgICduZXN0Myc6IFsnbycsICdjZmc6Ly9hbGlzdCcsICdwJ10sCisgICAgICAgIH0KKyAgICAgICAgYmMgPSBsb2dnaW5nLmNvbmZpZy5CYXNlQ29uZmlndXJhdG9yKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYXR1cGxlWzFdJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWxpc3RbMV0nKSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL25lc3QxWzFdWzBdJyksICdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MlsxXVsxXScpLCAnbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3QuZCcpLCAnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3RbZl0nKSwgMykKKyAgICAgICAgdiA9IGJjLmNvbnZlcnQoJ2NmZzovL25lc3QzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnBvcCgxKSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYmMuY29udmVydCwgJ2NmZzovL25vc3VjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly8hJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly9hZGljdFsyXScpCiAKIGNsYXNzIE1hbmFnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9tYW5hZ2VyX2xvZ2dlcmNsYXNzKHNlbGYpOgpAQCAtMjAxMiw2ICsyNzAzLDExIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZWQsIFsnc2hvdWxkIGFwcGVhciBpbiBsb2dnZWQnXSkKIAorICAgIGRlZiB0ZXN0X3NldF9sb2dfcmVjb3JkX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIG1hbiA9IGxvZ2dpbmcuTWFuYWdlcihOb25lKQorICAgICAgICBleHBlY3RlZCA9IG9iamVjdCgpCisgICAgICAgIG1hbi5zZXRMb2dSZWNvcmRGYWN0b3J5KGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbi5sb2dSZWNvcmRGYWN0b3J5LCBleHBlY3RlZCkKIAogY2xhc3MgQ2hpbGRMb2dnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9jaGlsZF9sb2dnZXJzKHNlbGYpOgpAQCAtMjExMyw2ICsyODA5LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPScyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSczJykpCiAKK1pFUk8gPSBkYXRldGltZS50aW1lZGVsdGEoMCkKKworY2xhc3MgVVRDKGRhdGV0aW1lLnR6aW5mbyk6CisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBaRVJPCisKKyAgICBkc3QgPSB1dGNvZmZzZXQKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gJ1VUQycKKwordXRjID0gVVRDKCkKIAogY2xhc3MgRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMjE4Niw2ICsyODk0LDcxIEBACiAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignYXNjdGltZScsIHN0eWxlPSckJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnVzZXNUaW1lKCkpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0eWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLkZvcm1hdHRlciwgTm9uZSwgTm9uZSwgJ3gnKQorCisgICAgZGVmIHRlc3RfdGltZShzZWxmKToKKyAgICAgICAgciA9IHNlbGYuZ2V0X3JlY29yZCgpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5MywgNCwgMjEsIDgsIDMsIDAsIDAsIHV0YykKKyAgICAgICAgIyBXZSB1c2UgTm9uZSB0byBpbmRpY2F0ZSB3ZSB3YW50IHRoZSBsb2NhbCB0aW1lem9uZQorICAgICAgICAjIFdlJ3JlIGVzc2VudGlhbGx5IGNvbnZlcnRpbmcgYSBVVEMgdGltZSB0byBsb2NhbCB0aW1lCisgICAgICAgIHIuY3JlYXRlZCA9IHRpbWUubWt0aW1lKGR0LmFzdGltZXpvbmUoTm9uZSkudGltZXR1cGxlKCkpCisgICAgICAgIHIubXNlY3MgPSAxMjMKKyAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAlKG1lc3NhZ2UpcycpCisgICAgICAgIGYuY29udmVydGVyID0gdGltZS5nbXRpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZvcm1hdFRpbWUociksICcxOTkzLTA0LTIxIDA4OjAzOjAwLDEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mb3JtYXRUaW1lKHIsICclWTolZCcpLCAnMTk5MzoyMScpCisgICAgICAgIGYuZm9ybWF0KHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5hc2N0aW1lLCAnMTk5My0wNC0yMSAwODowMzowMCwxMjMnKQorCitjbGFzcyBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0SGVhZGVyKHNlbGYsIHJlY29yZHMpOgorICAgICAgICByZXR1cm4gJ1soJWQpJyAlIGxlbihyZWNvcmRzKQorCisgICAgZGVmIGZvcm1hdEZvb3RlcihzZWxmLCByZWNvcmRzKToKKyAgICAgICAgcmV0dXJuICcoJWQpXScgJSBsZW4ocmVjb3JkcykKKworY2xhc3MgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlY29yZHMgPSBbCisgICAgICAgICAgICBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnb25lJ30pLAorICAgICAgICAgICAgbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3R3byd9KSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZiA9IGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZi5mb3JtYXQoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvbmV0d28nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCisgICAgZGVmIHRlc3RfY3VzdG9tKHNlbGYpOgorICAgICAgICBmID0gVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1soMilvbmV0d28oMildJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKyAgICAgICAgbGYgPSBsb2dnaW5nLkZvcm1hdHRlcignPCUobWVzc2FnZSlzPicpCisgICAgICAgIGYgPSBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdbKDIpPG9uZT48dHdvPigyKV0nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCitjbGFzcyBFeGNlcHRpb25UZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICByID0gc2VsZi5yb290X2xvZ2dlcgorICAgICAgICBoID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIHIuYWRkSGFuZGxlcihoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdmYWlsZWQnLCBzdGFja19pbmZvPVRydWUpCisgICAgICAgIHIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgciA9IGgucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5zdGFydHN3aXRoKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCBsYXN0KTpcbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5lbmRzd2l0aCgnXG5SdW50aW1lRXJyb3I6ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGliZXJhdGUgbWlzdGFrZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFja19pbmZvLnN0YXJ0c3dpdGgoJ1N0YWNrIChtb3N0IHJlY2VudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgbGFzdCk6XG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhY2tfaW5mby5lbmRzd2l0aCgnbG9nZ2luZy5leGNlcHRpb24oXCdmYWlsZWRcJywgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhY2tfaW5mbz1UcnVlKScpKQorCisKIGNsYXNzIExhc3RSZXNvcnRUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9sYXN0X3Jlc29ydChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBsYXN0IHJlc29ydCBoYW5kbGVyCkBAIC0yMTk2LDYgKzI5NjksOCBAQAogICAgICAgICBvbGRfcmFpc2VfZXhjZXB0aW9ucyA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICByb290LmRlYnVnKCdUaGlzIHNob3VsZCBub3QgYXBwZWFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICcnKQogICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSFcbicpCiAgICAgICAgICAgICAjTm8gaGFuZGxlcnMgYW5kIG5vIGxhc3QgcmVzb3J0LCBzbyAnTm8gaGFuZGxlcnMnIG1lc3NhZ2UKQEAgLTIyMjAsMTUyICsyOTk1LDIzNiBAQAogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBvbGRfcmFpc2VfZXhjZXB0aW9ucwogCiAKLWNsYXNzIEJhc2VGaWxlVGVzdChCYXNlVGVzdCk6Ci0gICAgIkJhc2UgY2xhc3MgZm9yIGhhbmRsZXIgdGVzdHMgdGhhdCB3cml0ZSBsb2cgZmlsZXMiCitjbGFzcyBGYWtlSGFuZGxlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyLCBjYWxsZWQpOgorICAgICAgICBmb3IgbWV0aG9kIGluICgnYWNxdWlyZScsICdmbHVzaCcsICdjbG9zZScsICdyZWxlYXNlJyk6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIG1ldGhvZCwgc2VsZi5yZWNvcmRfY2FsbChpZGVudGlmaWVyLCBtZXRob2QsIGNhbGxlZCkpCisKKyAgICBkZWYgcmVjb3JkX2NhbGwoc2VsZiwgaWRlbnRpZmllciwgbWV0aG9kX25hbWUsIGNhbGxlZCk6CisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgne30gLSB7fScuZm9ybWF0KGlkZW50aWZpZXIsIG1ldGhvZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGlubmVyCisKKworY2xhc3MgUmVjb3JkaW5nSGFuZGxlcihsb2dnaW5nLk51bGxIYW5kbGVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihSZWNvcmRpbmdIYW5kbGVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYucmVjb3JkcyA9IFtdCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIktlZXAgdHJhY2sgb2YgYWxsIHRoZSBlbWl0dGVkIHJlY29yZHMuIiIiCisgICAgICAgIHNlbGYucmVjb3Jkcy5hcHBlbmQocmVjb3JkKQorCisKK2NsYXNzIFNodXRkb3duVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciB0aGUgc2h1dGRvd24gbWV0aG9kLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQotICAgICAgICBmZCwgc2VsZi5mbiA9IHRlbXBmaWxlLm1rc3RlbXAoIi5sb2ciLCAidGVzdF9sb2dnaW5nLTItIikKLSAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgIHNlbGYucm1maWxlcyA9IFtdCisgICAgICAgIHN1cGVyKFNodXRkb3duVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLmNhbGxlZCA9IFtdCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGZvciBmbiBpbiBzZWxmLnJtZmlsZXM6Ci0gICAgICAgICAgICBvcy51bmxpbmsoZm4pCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZm4pOgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCi0gICAgICAgIEJhc2VUZXN0LnRlYXJEb3duKHNlbGYpCisgICAgICAgIHJhaXNlX2V4Y2VwdGlvbnMgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgbG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIHJhaXNlX2V4Y2VwdGlvbnMpCiAKLSAgICBkZWYgYXNzZXJ0TG9nRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICJBc3NlcnQgYSBsb2cgZmlsZSBpcyB0aGVyZSBhbmQgcmVnaXN0ZXIgaXQgZm9yIGRlbGV0aW9uIgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMb2cgZmlsZSAlciBkb2VzIG5vdCBleGlzdCIpCi0gICAgICAgIHNlbGYucm1maWxlcy5hcHBlbmQoZmlsZW5hbWUpCisgICAgZGVmIHJhaXNlX2Vycm9yKHNlbGYsIGVycm9yKToKKyAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICByYWlzZSBlcnJvcigpCisgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgc29tZSBmYWtlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXIwID0gRmFrZUhhbmRsZXIoMCwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIxID0gRmFrZUhhbmRsZXIoMSwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIyID0gRmFrZUhhbmRsZXIoMiwgc2VsZi5jYWxsZWQpCisKKyAgICAgICAgIyBjcmVhdGUgbGl2ZSB3ZWFrcmVmIHRvIHRob3NlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJzID0gbWFwKGxvZ2dpbmcud2Vha3JlZi5yZWYsIFtoYW5kbGVyMCwgaGFuZGxlcjEsIGhhbmRsZXIyXSkKKworICAgICAgICBsb2dnaW5nLnNodXRkb3duKGhhbmRsZXJMaXN0PWxpc3QoaGFuZGxlcnMpKQorCisgICAgICAgIGV4cGVjdGVkID0gWycyIC0gYWNxdWlyZScsICcyIC0gZmx1c2gnLCAnMiAtIGNsb3NlJywgJzIgLSByZWxlYXNlJywKKyAgICAgICAgICAgICAgICAgICAgJzEgLSBhY3F1aXJlJywgJzEgLSBmbHVzaCcsICcxIC0gY2xvc2UnLCAnMSAtIHJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAnMCAtIGFjcXVpcmUnLCAnMCAtIGZsdXNoJywgJzAgLSBjbG9zZScsICcwIC0gcmVsZWFzZSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHNlbGYuY2FsbGVkKQorCisgICAgZGVmIF90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2Qoc2VsZiwgbWV0aG9kLCBlcnJvcik6CisgICAgICAgIGhhbmRsZXIgPSBGYWtlSGFuZGxlcigwLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgc2V0YXR0cihoYW5kbGVyLCBtZXRob2QsIHNlbGYucmFpc2VfZXJyb3IoZXJyb3IpKQorICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLndlYWtyZWYucmVmKGhhbmRsZXIpXQorCisgICAgICAgIGxvZ2dpbmcuc2h1dGRvd24oaGFuZGxlckxpc3Q9bGlzdChoYW5kbGVycykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMCAtIHJlbGVhc2UnLCBzZWxmLmNhbGxlZFstMV0pCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgSU9FcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9mbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIElPRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBJT0Vycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2FjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIFZhbHVlRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnZmx1c2gnLCBWYWx1ZUVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2Nsb3NlJywgVmFsdWVFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fYWNxdWlyZV93aXRob3V0X3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2ZsdXNoX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2Nsb3NlX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2FjcXVpcmVfd2l0aF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjcXVpcmUnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9mbHVzaF93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmx1c2gnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9jbG9zZV93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2UnLCBJbmRleEVycm9yKQogCiAKLWNsYXNzIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0KEJhc2VGaWxlVGVzdCk6Ci0gICAgZGVmIG5leHRfcmVjKHNlbGYpOgotICAgICAgICByZXR1cm4gbG9nZ2luZy5Mb2dSZWNvcmQoJ24nLCBsb2dnaW5nLkRFQlVHLCAncCcsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5leHRfbWVzc2FnZSgpLCBOb25lLCBOb25lLCBOb25lKQorY2xhc3MgTW9kdWxlTGV2ZWxNaXNjVGVzdChCYXNlVGVzdCk6CiAKLSAgICBkZWYgdGVzdF9zaG91bGRfbm90X3JvbGxvdmVyKHNlbGYpOgotICAgICAgICAjIElmIG1heGJ5dGVzIGlzIHplcm8gcm9sbG92ZXIgbmV2ZXIgb2NjdXJzCi0gICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKHNlbGYuZm4sIG1heEJ5dGVzPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocmguc2hvdWxkUm9sbG92ZXIoTm9uZSkpCi0gICAgICAgIHJoLmNsb3NlKCkKKyAgICAiIiJUZXN0IHN1aXRlIGZvciBzb21lIG1vZHVsZSBsZXZlbCBtZXRob2RzLiIiIgogCi0gICAgZGVmIHRlc3Rfc2hvdWxkX3JvbGxvdmVyKHNlbGYpOgotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuLCBtYXhCeXRlcz0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmguc2hvdWxkUm9sbG92ZXIoc2VsZi5uZXh0X3JlYygpKSkKLSAgICAgICAgcmguY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gbG9nZ2luZy5yb290Lm1hbmFnZXIuZGlzYWJsZQorICAgICAgICAjIGNvbmZpcm0gb3VyIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2xkX2Rpc2FibGUsIDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmRpc2FibGUsIG9sZF9kaXNhYmxlKQogCi0gICAgZGVmIHRlc3RfZmlsZV9jcmVhdGVkKHNlbGYpOgotICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQgYW5kIGFzc3VtZXMgaXQgd2FzIGNyZWF0ZWQKLSAgICAgICAgIyBieSB1cwotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuKQotICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCi0gICAgICAgIHJoLmNsb3NlKCkKKyAgICAgICAgbG9nZ2luZy5kaXNhYmxlKDgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5tYW5hZ2VyLmRpc2FibGUsIDgzKQogCi0gICAgZGVmIHRlc3Rfcm9sbG92ZXJfZmlsZW5hbWVzKHNlbGYpOgotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcigKLSAgICAgICAgICAgIHNlbGYuZm4sIGJhY2t1cENvdW50PTIsIG1heEJ5dGVzPTEpCi0gICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQotICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKLSAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4xIikKLSAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4yIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuICsgIi4zIikpCi0gICAgICAgIHJoLmNsb3NlKCkKKyAgICBkZWYgX3Rlc3RfbG9nKHNlbGYsIG1ldGhvZCwgbGV2ZWw9Tm9uZSk6CisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsCisgICAgICAgICAgICAgIGxhbWJkYSAqYSwgKiprdzogY2FsbGVkLmFwcGVuZCgoYSwga3cpKSkKIAotY2xhc3MgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgotICAgICMgdGVzdCBtZXRob2RzIGFkZGVkIGJlbG93Ci0gICAgcGFzcworICAgICAgICByZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgbG9nZ2luZy5yb290LmFkZEhhbmRsZXIocmVjb3JkaW5nKQogCi1kZWYgc2VjcygqKmt3KToKLSAgICByZXR1cm4gZGF0ZXRpbWUudGltZWRlbHRhKCoqa3cpIC8vIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgIGxvZ19tZXRob2QgPSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZCkKKyAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2dfbWV0aG9kKGxldmVsLCAidGVzdCBtZTogJXIiLCByZWNvcmRpbmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfbWV0aG9kKCJ0ZXN0IG1lOiAlciIsIHJlY29yZGluZykKIAotZm9yIHdoZW4sIGV4cCBpbiAoKCdTJywgMSksCi0gICAgICAgICAgICAgICAgICAoJ00nLCA2MCksCi0gICAgICAgICAgICAgICAgICAoJ0gnLCA2MCAqIDYwKSwKLSAgICAgICAgICAgICAgICAgICgnRCcsIDYwICogNjAgKiAyNCksCi0gICAgICAgICAgICAgICAgICAoJ01JRE5JR0hUJywgNjAgKiA2MCAqIDI0KSwKLSAgICAgICAgICAgICAgICAgICMgY3VycmVudCB0aW1lIChlcG9jaCBzdGFydCkgaXMgYSBUaHVyc2RheSwgVzAgbWVhbnMgTW9uZGF5Ci0gICAgICAgICAgICAgICAgICAoJ1cwJywgc2VjcyhkYXlzPTQsIGhvdXJzPTI0KSksCi0gICAgICAgICAgICAgICAgICk6Ci0gICAgZGVmIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcihzZWxmLCB3aGVuPXdoZW4sIGV4cD1leHApOgotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKAotICAgICAgICAgICAgc2VsZi5mbiwgd2hlbj13aGVuLCBpbnRlcnZhbD0xLCBiYWNrdXBDb3VudD0wLCB1dGM9VHJ1ZSkKLSAgICAgICAgY3VycmVudFRpbWUgPSAwLjAKLSAgICAgICAgYWN0dWFsID0gcmguY29tcHV0ZVJvbGxvdmVyKGN1cnJlbnRUaW1lKQotICAgICAgICBpZiBleHAgIT0gYWN0dWFsOgotICAgICAgICAgICAgIyBGYWlsdXJlcyBvY2N1ciBvbiBzb21lIHN5c3RlbXMgZm9yIE1JRE5JR0hUIGFuZCBXMC4KLSAgICAgICAgICAgICMgUHJpbnQgZGV0YWlsZWQgY2FsY3VsYXRpb24gZm9yIE1JRE5JR0hUIHNvIHdlIGNhbiB0cnkgdG8gc2VlCi0gICAgICAgICAgICAjIHdoYXQncyBnb2luZyBvbgotICAgICAgICAgICAgaWYgd2hlbiA9PSAnTUlETklHSFQnOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaWYgcmgudXRjOgotICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUuZ210aW1lKGN1cnJlbnRUaW1lKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUubG9jYWx0aW1lKGN1cnJlbnRUaW1lKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50SG91ciA9IHRbM10KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pbnV0ZSA9IHRbNF0KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY29uZCA9IHRbNV0KLSAgICAgICAgICAgICAgICAgICAgIyByIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBsZWZ0IGJldHdlZW4gbm93IGFuZCBtaWRuaWdodAotICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5oYW5kbGVycy5fTUlETklHSFQgLSAoKGN1cnJlbnRIb3VyICogNjAgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUpICogNjAgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRUaW1lICsgcgotICAgICAgICAgICAgICAgICAgICBwcmludCgndDogJXMgKCVzKScgJSAodCwgcmgudXRjKSwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBwcmludCgnY3VycmVudEhvdXI6ICVzJyAlIGN1cnJlbnRIb3VyLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50TWludXRlOiAlcycgJSBjdXJyZW50TWludXRlLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50U2Vjb25kOiAlcycgJSBjdXJyZW50U2Vjb25kLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdyOiAlcycgJSByLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdyZXN1bHQ6ICVzJyAlIHJlc3VsdCwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCdleGNlcHRpb24gaW4gZGlhZ25vc3RpYyBjb2RlOiAlcycgJSBzeXMuZXhjX2luZm8oKVsxXSwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cCwgYWN0dWFsKQotICAgICAgICByaC5jbG9zZSgpCi0gICAgc2V0YXR0cihUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAidGVzdF9jb21wdXRlX3JvbGxvdmVyXyVzIiAlIHdoZW4sIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSByZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5nZXRNZXNzYWdlKCksICJ0ZXN0IG1lOiAlciIgJSByZWNvcmRpbmcpCiAKLWNsYXNzIEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICAgICAgZXhwZWN0ZWRfbGV2ZWwgPSBsZXZlbCBpZiBsZXZlbCBpcyBub3QgTm9uZSBlbHNlIGdldGF0dHIobG9nZ2luZywgbWV0aG9kLnVwcGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGV4cGVjdGVkX2xldmVsKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxNDYzMiByZWZlcnMuCi0gICAgICAgIGRlZiByZW1vdmVfbG9vcChmbmFtZSwgdHJpZXMpOgotICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UodHJpZXMpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNCAqIHJhbmRvbS5yYW5kaW50KDAsIDQpKQorICAgICAgICAjIGJhc2ljQ29uZmlnIHdhcyBub3QgY2FsbGVkIQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxlZCwgW10pCiAKLSAgICAgICAgZGVsX2NvdW50ID0gNTAwCi0gICAgICAgIGxvZ19jb3VudCA9IDUwMAorICAgIGRlZiB0ZXN0X2xvZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2xvZycsIGxvZ2dpbmcuRVJST1IpCiAKLSAgICAgICAgZm9yIGRlbGF5IGluIChGYWxzZSwgVHJ1ZSk6Ci0gICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCcubG9nJywgJ3Rlc3RfbG9nZ2luZy0zLScpCi0gICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgIHJlbW92ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZW1vdmVfbG9vcCwgYXJncz0oZm4sIGRlbF9jb3VudCkpCi0gICAgICAgICAgICByZW1vdmVyLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgIHJlbW92ZXIuc3RhcnQoKQotICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1kZWxheSkKLSAgICAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJykKLSAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGYpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobG9nX2NvdW50KToKLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKLSAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nJyB9KQotICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICByZW1vdmVyLmpvaW4oKQotICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgIGRlZiB0ZXN0X2RlYnVnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnZGVidWcnKQogCisgICAgZGVmIHRlc3RfaW5mbyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2luZm8nKQorCisgICAgZGVmIHRlc3Rfd2FybmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ3dhcm5pbmcnKQorCisgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdlcnJvcicpCisKKyAgICBkZWYgdGVzdF9jcml0aWNhbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2NyaXRpY2FsJykKKworICAgIGRlZiB0ZXN0X3NldF9sb2dnZXJfY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5zZXRMb2dnZXJDbGFzcywgb2JqZWN0KQorCisgICAgICAgIGNsYXNzIE15TG9nZ2VyKGxvZ2dpbmcuTG9nZ2VyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBsb2dnaW5nLnNldExvZ2dlckNsYXNzKE15TG9nZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TG9nZ2VyQ2xhc3MoKSwgTXlMb2dnZXIpCisKKyAgICAgICAgbG9nZ2luZy5zZXRMb2dnZXJDbGFzcyhsb2dnaW5nLkxvZ2dlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExvZ2dlckNsYXNzKCksIGxvZ2dpbmcuTG9nZ2VyKQorCitjbGFzcyBMb2dSZWNvcmRUZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9zdHJfcmVwKHNlbGYpOgorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzID0gc3RyKHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoJzxMb2dSZWNvcmQ6ICcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5lbmRzd2l0aCgnPicpKQorCisgICAgZGVmIHRlc3RfZGljdF9hcmcoc2VsZik6CisgICAgICAgIGggPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgci5hZGRIYW5kbGVyKGgpCisgICAgICAgIGQgPSB7J2xlc3MnIDogJ21vcmUnIH0KKyAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdsZXNzIGlzICUobGVzcylzJywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoLnJlY29yZHNbMF0uYXJncywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnJlY29yZHNbMF0ubWVzc2FnZSwgJ2xlc3MgaXMgbW9yZScpCisgICAgICAgIHIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X211bHRpcHJvY2Vzc2luZyhzZWxmKToKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnByb2Nlc3NOYW1lLCAnTWFpblByb2Nlc3MnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nIGFzIG1wCisgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnByb2Nlc3NOYW1lLCBtcC5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbChzZWxmKToKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgTk9UX05PTkUgPSBzZWxmLmFzc2VydElzTm90Tm9uZQorICAgICAgICBpZiB0aHJlYWRpbmc6CisgICAgICAgICAgICBOT1RfTk9ORShyLnRocmVhZCkKKyAgICAgICAgICAgIE5PVF9OT05FKHIudGhyZWFkTmFtZSkKKyAgICAgICAgTk9UX05PTkUoci5wcm9jZXNzKQorICAgICAgICBOT1RfTk9ORShyLnByb2Nlc3NOYW1lKQorICAgICAgICBsb2dfdGhyZWFkcyA9IGxvZ2dpbmcubG9nVGhyZWFkcworICAgICAgICBsb2dfcHJvY2Vzc2VzID0gbG9nZ2luZy5sb2dQcm9jZXNzZXMKKyAgICAgICAgbG9nX211bHRpcHJvY2Vzc2luZyA9IGxvZ2dpbmcubG9nTXVsdGlwcm9jZXNzaW5nCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nVGhyZWFkcyA9IEZhbHNlCisgICAgICAgICAgICBsb2dnaW5nLmxvZ1Byb2Nlc3NlcyA9IEZhbHNlCisgICAgICAgICAgICBsb2dnaW5nLmxvZ011bHRpcHJvY2Vzc2luZyA9IEZhbHNlCisgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICAgICAgTk9ORSA9IHNlbGYuYXNzZXJ0SXNOb25lCisgICAgICAgICAgICBOT05FKHIudGhyZWFkKQorICAgICAgICAgICAgTk9ORShyLnRocmVhZE5hbWUpCisgICAgICAgICAgICBOT05FKHIucHJvY2VzcykKKyAgICAgICAgICAgIE5PTkUoci5wcm9jZXNzTmFtZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nVGhyZWFkcyA9IGxvZ190aHJlYWRzCisgICAgICAgICAgICBsb2dnaW5nLmxvZ1Byb2Nlc3NlcyA9IGxvZ19wcm9jZXNzZXMKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nTXVsdGlwcm9jZXNzaW5nID0gbG9nX211bHRpcHJvY2Vzc2luZwogCiBjbGFzcyBCYXNpY0NvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yNDcxLDYgKzMzMzAsMTcgQEAKICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD01OCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIDU3KQogCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnRSYWlzZXMgPSBzZWxmLmFzc2VydFJhaXNlcworICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKV0KKyAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgZmlsZW5hbWU9J3Rlc3QubG9nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuYmFzaWNDb25maWcsIGZpbGVuYW1lPSd0ZXN0LmxvZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPWhhbmRsZXJzKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgc3RyZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9aGFuZGxlcnMpCisKICAgICBkZWYgdGVzdF9oYW5kbGVycyhzZWxmKToKICAgICAgICAgaGFuZGxlcnMgPSBbCiAgICAgICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKSwKQEAgLTI0NzksOCArMzM0OSwxNCBAQAogICAgICAgICBdCiAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcigpCiAgICAgICAgIGhhbmRsZXJzWzJdLnNldEZvcm1hdHRlcihmKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmJhc2ljQ29uZmlnLCBsZXZlbD1sb2dnaW5nLkRFQlVHLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobWVzc2FnZSlzJywgaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMF0sIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1sxXSwgbG9nZ2luZy5yb290LmhhbmRsZXJzWzFdKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLCBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhhbmRsZXJzWzBdLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaGFuZGxlcnNbMV0uZm9ybWF0dGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLmZvcm1hdHRlciwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1swXS5mb3JtYXR0ZXIsIGhhbmRsZXJzWzFdLmZvcm1hdHRlcikKIAogICAgIGRlZiBfdGVzdF9sb2coc2VsZiwgbWV0aG9kLCBsZXZlbD1Ob25lKToKICAgICAgICAgIyBsb2dnaW5nLnJvb3QgaGFzIG5vIGhhbmRsZXJzIHNvIGJhc2ljQ29uZmlnIHNob3VsZCBiZSBjYWxsZWQKQEAgLTI1MjMsMjAgKzMzOTksNDQ1IEBACiAgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdjcml0aWNhbCcpCiAKKworY2xhc3MgTG9nZ2VyQWRhcHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihMb2dnZXJBZGFwdGVyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvbGRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKworICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcucm9vdAorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKworICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBvbGRfaGFuZGxlcl9saXN0CisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnNodXRkb3duKQorICAgICAgICBzZWxmLmFkYXB0ZXIgPSBsb2dnaW5nLkxvZ2dlckFkYXB0ZXIobG9nZ2VyPXNlbGYubG9nZ2VyLCBleHRyYT1Ob25lKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAndGVzdGluZyBleGNlcHRpb246ICVyJworICAgICAgICBleGMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorICAgICAgICAgICAgc2VsZi5hZGFwdGVyLmV4Y2VwdGlvbihtc2csIHNlbGYucmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGxvZ2dpbmcuRVJST1IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5hcmdzLCAoc2VsZi5yZWNvcmRpbmcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIG1zZyA9ICdjcml0aWNhbCB0ZXN0ISAlcicKKyAgICAgICAgc2VsZi5hZGFwdGVyLmNyaXRpY2FsKG1zZywgc2VsZi5yZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGV2ZWxubywgbG9nZ2luZy5DUklUSUNBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubXNnLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmFyZ3MsIChzZWxmLnJlY29yZGluZywpKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZF9mb3Ioc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUKKyAgICAgICAgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAzMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLCAnZGlzYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaXNFbmFibGVkRm9yKDMyKSkKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYWRhcHRlci5oYXNIYW5kbGVycygpKQorCisgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYubG9nZ2VyLmhhbmRsZXJzOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaGFzSGFuZGxlcnMoKSkKKworCitjbGFzcyBMb2dnZXJUZXN0KEJhc2VUZXN0KToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoTG9nZ2VyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuTG9nZ2VyKG5hbWU9J2JsYWgnKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuc2h1dGRvd24pCisKKyAgICBkZWYgdGVzdF9zZXRfaW52YWxpZF9sZXZlbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvZ2dlci5zZXRMZXZlbCwgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG1zZyA9ICd0ZXN0aW5nIGV4Y2VwdGlvbjogJXInCisgICAgICAgIGV4YyA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBleGMgPSBlCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5leGNlcHRpb24obXNnLCBzZWxmLnJlY29yZGluZykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gc2VsZi5yZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBsb2dnaW5nLkVSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuYXJncywgKHNlbGYucmVjb3JkaW5nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKworICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBsb2dnaW5nLCAncmFpc2VFeGVjcHRpb25zJywgb2xkX3JhaXNlKQorCisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9nZ2VyLmxvZywgJzEwJywgJ3Rlc3QgbWVzc2FnZScpCisKKyAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF9ub19yYWlzZShzZWxmKToKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGxvZ2dpbmcsICdyYWlzZUV4ZWNwdGlvbnMnLCBvbGRfcmFpc2UpCisKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLmxvZ2dlci5sb2coJzEwJywgJ3Rlc3QgbWVzc2FnZScpICAjIG5vIGV4Y2VwdGlvbiBoYXBwZW5zCisKKyAgICBkZWYgdGVzdF9maW5kX2NhbGxlcl93aXRoX3N0YWNrX2luZm8oc2VsZik6CisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcudHJhY2ViYWNrLCAncHJpbnRfc3RhY2snLAorICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQorCisgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxlZCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJywgY2FsbGVkWzBdKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBydiA9IGxvZ2dpbmcuX2xvZ1JlY29yZEZhY3RvcnkobmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBzaW5mbykKKworICAgICAgICBmb3Iga2V5IGluICgnbWVzc2FnZScsICdhc2N0aW1lJykgKyB0dXBsZShydi5fX2RpY3RfXy5rZXlzKCkpOgorICAgICAgICAgICAgZXh0cmEgPSB7a2V5OiAnc29tZSB2YWx1ZSd9CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2VsZi5sb2dnZXIubWFrZVJlY29yZCwgbmFtZSwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiwgbG5vLCBtc2csIGFyZ3MsIGV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIHNpbmZvPXNpbmZvKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9ub19vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBleHRyYSA9IHsndmFsaWRfa2V5JzogJ3NvbWUgdmFsdWUnfQorICAgICAgICByZXN1bHQgPSBzZWxmLmxvZ2dlci5tYWtlUmVjb3JkKG5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX2luZm8sIGV4dHJhPWV4dHJhLCBzaW5mbz1zaW5mbykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndmFsaWRfa2V5JywgcmVzdWx0Ll9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzX25vX3Byb3BhZ2F0ZShzZWxmKToKKyAgICAgICAgY2hpbGRfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2JsYWguY2hpbGQnKQorICAgICAgICBjaGlsZF9sb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF9sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWRfZm9yKHNlbGYpOgorICAgICAgICBvbGRfZGlzYWJsZSA9IHNlbGYubG9nZ2VyLm1hbmFnZXIuZGlzYWJsZQorICAgICAgICBzZWxmLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAyMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5sb2dnZXIubWFuYWdlciwgJ2Rpc2FibGUnLCBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5pc0VuYWJsZWRGb3IoMjIpKQorCisgICAgZGVmIHRlc3Rfcm9vdF9sb2dnZXJfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgcm9vdCA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28nKS5yb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vJykucGFyZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ1wwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ2Zvby5iYXInKS5wYXJlbnQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuZ2V0TG9nZ2VyLCBhbnkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5nZXRMb2dnZXIsIGInZm9vJykKKworCitjbGFzcyBCYXNlRmlsZVRlc3QoQmFzZVRlc3QpOgorICAgICJCYXNlIGNsYXNzIGZvciBoYW5kbGVyIHRlc3RzIHRoYXQgd3JpdGUgbG9nIGZpbGVzIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBmZCwgc2VsZi5mbiA9IHRlbXBmaWxlLm1rc3RlbXAoIi5sb2ciLCAidGVzdF9sb2dnaW5nLTItIikKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIHNlbGYucm1maWxlcyA9IFtdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGZvciBmbiBpbiBzZWxmLnJtZmlsZXM6CisgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZm4pOgorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCisgICAgICAgIEJhc2VUZXN0LnRlYXJEb3duKHNlbGYpCisKKyAgICBkZWYgYXNzZXJ0TG9nRmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICJBc3NlcnQgYSBsb2cgZmlsZSBpcyB0aGVyZSBhbmQgcmVnaXN0ZXIgaXQgZm9yIGRlbGV0aW9uIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMb2cgZmlsZSAlciBkb2VzIG5vdCBleGlzdCIgJSBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5ybWZpbGVzLmFwcGVuZChmaWxlbmFtZSkKKworCitjbGFzcyBGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKKyAgICBkZWYgdGVzdF9kZWxheShzZWxmKToKKyAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCisgICAgICAgIGZoID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLmZuLCBkZWxheT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5mbikpCisgICAgICAgIGZoLmhhbmRsZShsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuKSkKKyAgICAgICAgZmguY2xvc2UoKQorCitjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgorICAgIGRlZiBuZXh0X3JlYyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxvZ2dpbmcuTG9nUmVjb3JkKCduJywgbG9nZ2luZy5ERUJVRywgJ3AnLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXh0X21lc3NhZ2UoKSwgTm9uZSwgTm9uZSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Nob3VsZF9ub3Rfcm9sbG92ZXIoc2VsZik6CisgICAgICAgICMgSWYgbWF4Ynl0ZXMgaXMgemVybyByb2xsb3ZlciBuZXZlciBvY2N1cnMKKyAgICAgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoc2VsZi5mbiwgbWF4Qnl0ZXM9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyaC5zaG91bGRSb2xsb3ZlcihOb25lKSkKKyAgICAgICAgcmguY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfc2hvdWxkX3JvbGxvdmVyKHNlbGYpOgorICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuLCBtYXhCeXRlcz0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmguc2hvdWxkUm9sbG92ZXIoc2VsZi5uZXh0X3JlYygpKSkKKyAgICAgICAgcmguY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZmlsZV9jcmVhdGVkKHNlbGYpOgorICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQgYW5kIGFzc3VtZXMgaXQgd2FzIGNyZWF0ZWQKKyAgICAgICAgIyBieSB1cworICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIHJoLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3JvbGxvdmVyX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLnRlc3QiCisgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5mbiwgYmFja3VwQ291bnQ9MiwgbWF4Qnl0ZXM9MSkKKyAgICAgICAgcmgubmFtZXIgPSBuYW1lcgorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUobmFtZXIoc2VsZi5mbiArICIuMSIpKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKG5hbWVyKHNlbGYuZm4gKyAiLjIiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhuYW1lcihzZWxmLmZuICsgIi4zIikpKQorICAgICAgICByaC5jbG9zZSgpCisKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0X3JvdGF0b3Ioc2VsZik6CisgICAgICAgIGRlZiBuYW1lcihuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKKworICAgICAgICBkZWYgcm90YXRvcihzb3VyY2UsIGRlc3QpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgInJiIikgYXMgc2Y6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNmLnJlYWQoKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWQgPSB6bGliLmNvbXByZXNzKGRhdGEsIDkpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRlc3QsICJ3YiIpIGFzIGRmOgorICAgICAgICAgICAgICAgICAgICBkZi53cml0ZShjb21wcmVzc2VkKQorICAgICAgICAgICAgb3MucmVtb3ZlKHNvdXJjZSkKKworICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcigKKyAgICAgICAgICAgIHNlbGYuZm4sIGJhY2t1cENvdW50PTIsIG1heEJ5dGVzPTEpCisgICAgICAgIHJoLnJvdGF0b3IgPSByb3RhdG9yCisgICAgICAgIHJoLm5hbWVyID0gbmFtZXIKKyAgICAgICAgbTEgPSBzZWxmLm5leHRfcmVjKCkKKyAgICAgICAgcmguZW1pdChtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIG0yID0gc2VsZi5uZXh0X3JlYygpCisgICAgICAgIHJoLmVtaXQobTIpCisgICAgICAgIGZuID0gbmFtZXIoc2VsZi5mbiArICIuMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShmbikKKyAgICAgICAgbmV3bGluZSA9IG9zLmxpbmVzZXAKKyAgICAgICAgd2l0aCBvcGVuKGZuLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGYucmVhZCgpCisgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCJhc2NpaSIpLCBtMS5tc2cgKyBuZXdsaW5lKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgZm4gPSBuYW1lcihzZWxmLmZuICsgIi4yIikKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKGZuKQorICAgICAgICB3aXRoIG9wZW4oZm4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb21wcmVzc2VkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoImFzY2lpIiksIG0xLm1zZyArIG5ld2xpbmUpCisgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQorICAgICAgICBmbiA9IG5hbWVyKHNlbGYuZm4gKyAiLjIiKQorICAgICAgICB3aXRoIG9wZW4oZm4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb21wcmVzc2VkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoImFzY2lpIiksIG0yLm1zZyArIG5ld2xpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZXIoc2VsZi5mbiArICIuMyIpKSkKKyAgICAgICAgcmguY2xvc2UoKQorCitjbGFzcyBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0KEJhc2VGaWxlVGVzdCk6CisgICAgIyBvdGhlciB0ZXN0IG1ldGhvZHMgYWRkZWQgYmVsb3cKKyAgICBkZWYgdGVzdF9yb2xsb3ZlcihzZWxmKToKKyAgICAgICAgZmggPSBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuLCAnUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3VwQ291bnQ9MSkKKyAgICAgICAgZm10ID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzICUobWVzc2FnZSlzJykKKyAgICAgICAgZmguc2V0Rm9ybWF0dGVyKGZtdCkKKyAgICAgICAgcjEgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZyAtIGluaXRpYWwnfSkKKyAgICAgICAgZmguZW1pdChyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIHRpbWUuc2xlZXAoMS4xKSAgICAjIGEgbGl0dGxlIG92ZXIgYSBzZWNvbmQgLi4uCisgICAgICAgIHIyID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3Rlc3RpbmcgLSBhZnRlciBkZWxheSd9KQorICAgICAgICBmaC5lbWl0KHIyKQorICAgICAgICBmaC5jbG9zZSgpCisgICAgICAgICMgQXQgdGhpcyBwb2ludCwgd2Ugc2hvdWxkIGhhdmUgYSByZWNlbnQgcm90YXRlZCBmaWxlIHdoaWNoIHdlCisgICAgICAgICMgY2FuIHRlc3QgZm9yIHRoZSBleGlzdGVuY2Ugb2YuIEhvd2V2ZXIsIGluIHByYWN0aWNlLCBvbiBzb21lCisgICAgICAgICMgbWFjaGluZXMgd2hpY2ggcnVuIHJlYWxseSBzbG93bHksIHdlIGRvbid0IGtub3cgaG93IGZhciBiYWNrCisgICAgICAgICMgaW4gdGltZSB0byBnbyB0byBsb29rIGZvciB0aGUgbG9nIGZpbGUuIFNvLCB3ZSBnbyBiYWNrIGEgZmFpcgorICAgICAgICAjIGJpdCwgYW5kIHN0b3AgYXMgc29vbiBhcyB3ZSBzZWUgYSByb3RhdGVkIGZpbGUuIEluIHRoZW9yeSB0aGlzCisgICAgICAgICMgY291bGQgb2YgY291cnNlIHN0aWxsIGZhaWwsIGJ1dCB0aGUgY2hhbmNlcyBhcmUgbG93ZXIuCisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgR09fQkFDSyA9IDUgKiA2MCAjIHNlY29uZHMKKyAgICAgICAgZm9yIHNlY3MgaW4gcmFuZ2UoR09fQkFDSyk6CisgICAgICAgICAgICBwcmV2ID0gbm93IC0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9c2VjcykKKyAgICAgICAgICAgIGZuID0gc2VsZi5mbiArIHByZXYuc3RyZnRpbWUoIi4lWS0lbS0lZF8lSC0lTS0lUyIpCisgICAgICAgICAgICBmb3VuZCA9IG9zLnBhdGguZXhpc3RzKGZuKQorICAgICAgICAgICAgaWYgZm91bmQ6CisgICAgICAgICAgICAgICAgc2VsZi5ybWZpbGVzLmFwcGVuZChmbikKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBtc2cgPSAnTm8gcm90YXRlZCBmaWxlcyBmb3VuZCwgd2VudCBiYWNrICVkIHNlY29uZHMnICUgR09fQkFDSworICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICAjcHJpbnQgYWRkaXRpb25hbCBkaWFnbm9zdGljcworICAgICAgICAgICAgZG4sIGZuID0gb3MucGF0aC5zcGxpdChzZWxmLmZuKQorICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKGRuKSBpZiBmLnN0YXJ0c3dpdGgoZm4pXQorICAgICAgICAgICAgcHJpbnQoJ1Rlc3QgdGltZTogJXMnICUgbm93LnN0cmZ0aW1lKCIlWS0lbS0lZCAlSC0lTS0lUyIpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBwcmludCgnVGhlIG9ubHkgbWF0Y2hpbmcgZmlsZXMgYXJlOiAlcycgJSBmaWxlcywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0NvbnRlbnRzIG9mICVzOicgJSBmKQorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZG4sIGYpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyJykgYXMgdGY6CisgICAgICAgICAgICAgICAgICAgIHByaW50KHRmLnJlYWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKKyAgICAgICAgYXNzZXJ0UmFpc2VzID0gc2VsZi5hc3NlcnRSYWlzZXMKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbiwgJ1gnLCBkZWxheT1UcnVlKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZuLCAnVycsIGRlbGF5PVRydWUpCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdXNycsIGRlbGF5PVRydWUpCisKK2RlZiBzZWNzKCoqa3cpOgorICAgIHJldHVybiBkYXRldGltZS50aW1lZGVsdGEoKiprdykgLy8gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9MSkKKworZm9yIHdoZW4sIGV4cCBpbiAoKCdTJywgMSksCisgICAgICAgICAgICAgICAgICAoJ00nLCA2MCksCisgICAgICAgICAgICAgICAgICAoJ0gnLCA2MCAqIDYwKSwKKyAgICAgICAgICAgICAgICAgICgnRCcsIDYwICogNjAgKiAyNCksCisgICAgICAgICAgICAgICAgICAoJ01JRE5JR0hUJywgNjAgKiA2MCAqIDI0KSwKKyAgICAgICAgICAgICAgICAgICMgY3VycmVudCB0aW1lIChlcG9jaCBzdGFydCkgaXMgYSBUaHVyc2RheSwgVzAgbWVhbnMgTW9uZGF5CisgICAgICAgICAgICAgICAgICAoJ1cwJywgc2VjcyhkYXlzPTQsIGhvdXJzPTI0KSksCisgICAgICAgICAgICAgICAgICk6CisgICAgZGVmIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcihzZWxmLCB3aGVuPXdoZW4sIGV4cD1leHApOgorICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5mbiwgd2hlbj13aGVuLCBpbnRlcnZhbD0xLCBiYWNrdXBDb3VudD0wLCB1dGM9VHJ1ZSkKKyAgICAgICAgY3VycmVudFRpbWUgPSAwLjAKKyAgICAgICAgYWN0dWFsID0gcmguY29tcHV0ZVJvbGxvdmVyKGN1cnJlbnRUaW1lKQorICAgICAgICBpZiBleHAgIT0gYWN0dWFsOgorICAgICAgICAgICAgIyBGYWlsdXJlcyBvY2N1ciBvbiBzb21lIHN5c3RlbXMgZm9yIE1JRE5JR0hUIGFuZCBXMC4KKyAgICAgICAgICAgICMgUHJpbnQgZGV0YWlsZWQgY2FsY3VsYXRpb24gZm9yIE1JRE5JR0hUIHNvIHdlIGNhbiB0cnkgdG8gc2VlCisgICAgICAgICAgICAjIHdoYXQncyBnb2luZyBvbgorICAgICAgICAgICAgaWYgd2hlbiA9PSAnTUlETklHSFQnOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmgudXRjOgorICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUuZ210aW1lKGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUubG9jYWx0aW1lKGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50SG91ciA9IHRbM10KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pbnV0ZSA9IHRbNF0KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY29uZCA9IHRbNV0KKyAgICAgICAgICAgICAgICAgICAgIyByIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBsZWZ0IGJldHdlZW4gbm93IGFuZCBtaWRuaWdodAorICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5oYW5kbGVycy5fTUlETklHSFQgLSAoKGN1cnJlbnRIb3VyICogNjAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUpICogNjAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRUaW1lICsgcgorICAgICAgICAgICAgICAgICAgICBwcmludCgndDogJXMgKCVzKScgJSAodCwgcmgudXRjKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICBwcmludCgnY3VycmVudEhvdXI6ICVzJyAlIGN1cnJlbnRIb3VyLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50TWludXRlOiAlcycgJSBjdXJyZW50TWludXRlLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50U2Vjb25kOiAlcycgJSBjdXJyZW50U2Vjb25kLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdyOiAlcycgJSByLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdyZXN1bHQ6ICVzJyAlIHJlc3VsdCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHByaW50KCdleGNlcHRpb24gaW4gZGlhZ25vc3RpYyBjb2RlOiAlcycgJSBzeXMuZXhjX2luZm8oKVsxXSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cCwgYWN0dWFsKQorICAgICAgICByaC5jbG9zZSgpCisgICAgc2V0YXR0cihUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAidGVzdF9jb21wdXRlX3JvbGxvdmVyXyVzIiAlIHdoZW4sIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh3aW4zMmV2dGxvZywgJ3dpbjMyZXZ0bG9nL3dpbjMyZXZ0bG9ndXRpbCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBOVEV2ZW50TG9nSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBsb2d0eXBlID0gJ0FwcGxpY2F0aW9uJworICAgICAgICBlbGggPSB3aW4zMmV2dGxvZy5PcGVuRXZlbnRMb2coTm9uZSwgbG9ndHlwZSkKKyAgICAgICAgbnVtX3JlY3MgPSB3aW4zMmV2dGxvZy5HZXROdW1iZXJPZkV2ZW50TG9nUmVjb3JkcyhlbGgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLk5URXZlbnRMb2dIYW5kbGVyKCd0ZXN0X2xvZ2dpbmcnKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ1Rlc3QgTG9nIE1lc3NhZ2UnfSkKKyAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICMgTm93IHNlZSBpZiB0aGUgZXZlbnQgaXMgcmVjb3JkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bV9yZWNzIDwgd2luMzJldnRsb2cuR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMoZWxoKSkKKyAgICAgICAgZmxhZ3MgPSB3aW4zMmV2dGxvZy5FVkVOVExPR19CQUNLV0FSRFNfUkVBRCB8IFwKKyAgICAgICAgICAgICAgICB3aW4zMmV2dGxvZy5FVkVOVExPR19TRVFVRU5USUFMX1JFQUQKKyAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICBHT19CQUNLID0gMTAwCisgICAgICAgIGV2ZW50cyA9IHdpbjMyZXZ0bG9nLlJlYWRFdmVudExvZyhlbGgsIGZsYWdzLCBHT19CQUNLKQorICAgICAgICBmb3IgZSBpbiBldmVudHM6CisgICAgICAgICAgICBpZiBlLlNvdXJjZU5hbWUgIT0gJ3Rlc3RfbG9nZ2luZyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG1zZyA9IHdpbjMyZXZ0bG9ndXRpbC5TYWZlRm9ybWF0TWVzc2FnZShlLCBsb2d0eXBlKQorICAgICAgICAgICAgaWYgbXNnICE9ICdUZXN0IExvZyBNZXNzYWdlXHJcbic6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbXNnID0gJ1JlY29yZCBub3QgZm91bmQgaW4gZXZlbnQgbG9nLCB3ZW50IGJhY2sgJWQgcmVjb3JkcycgJSBHT19CQUNLCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgbXNnPW1zZykKKwogIyBTZXQgdGhlIGxvY2FsZSB0byB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGRlZmF1bHQuICBJIGhhdmUgbm8gaWRlYQogIyB3aHkgdGhlIHRlc3QgZG9lcyB0aGlzLCBidXQgaW4gYW55IGNhc2Ugd2Ugc2F2ZSB0aGUgY3VycmVudCBsb2NhbGUKICMgZmlyc3QgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZC4KIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICcnKQogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChCdWlsdGluTGV2ZWxzVGVzdCwgQmFzaWNGaWx0ZXJUZXN0LAotICAgICAgICAgICAgICAgICBDdXN0b21MZXZlbHNBbmRGaWx0ZXJzVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgTWVtb3J5VGVzdCwKLSAgICAgICAgICAgICAgICAgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LCBNYW5hZ2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTG9nUmVjb3JkRmFjdG9yeVRlc3QsIENoaWxkTG9nZ2VyVGVzdCwgUXVldWVIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIExhc3RSZXNvcnRUZXN0LAotICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCBIYW5kbGVyVGVzdCwgQmFzaWNDb25maWdUZXN0LAorICAgICAgICAgICAgICAgICBDdXN0b21MZXZlbHNBbmRGaWx0ZXJzVGVzdCwgSGFuZGxlclRlc3QsIE1lbW9yeUhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBDb25maWdGaWxlVGVzdCwgU29ja2V0SGFuZGxlclRlc3QsIERhdGFncmFtSGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIE1lbW9yeVRlc3QsIEVuY29kaW5nVGVzdCwgV2FybmluZ3NUZXN0LCBDb25maWdEaWN0VGVzdCwKKyAgICAgICAgICAgICAgICAgTWFuYWdlclRlc3QsIEZvcm1hdHRlclRlc3QsIEJ1ZmZlcmluZ0Zvcm1hdHRlclRlc3QsCisgICAgICAgICAgICAgICAgIFN0cmVhbUhhbmRsZXJUZXN0LCBMb2dSZWNvcmRGYWN0b3J5VGVzdCwgQ2hpbGRMb2dnZXJUZXN0LAorICAgICAgICAgICAgICAgICBRdWV1ZUhhbmRsZXJUZXN0LCBTaHV0ZG93blRlc3QsIE1vZHVsZUxldmVsTWlzY1Rlc3QsCisgICAgICAgICAgICAgICAgIEJhc2ljQ29uZmlnVGVzdCwgTG9nZ2VyQWRhcHRlclRlc3QsIExvZ2dlclRlc3QsCisgICAgICAgICAgICAgICAgIFNNVFBIYW5kbGVyVGVzdCwgRmlsZUhhbmRsZXJUZXN0LCBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsIEV4Y2VwdGlvblRlc3QsCisgICAgICAgICAgICAgICAgIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdAogICAgICAgICAgICAgICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCAzZWJjMWY3Li5iNDE3YmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC00Myw2ICs0Myw1MyBAQAogREJMX01BTlRfRElHID0gc3lzLmZsb2F0X2luZm8ubWFudF9kaWcKIERCTF9NSU5fT1ZFUkZMT1cgPSAyKipEQkxfTUFYX0VYUCAtIDIqKihEQkxfTUFYX0VYUCAtIERCTF9NQU5UX0RJRyAtIDEpCiAKKworIyBQdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIGNvcnJlY3RseS1yb3VuZGVkIGludGVnZXItdG8tZmxvYXQgY29udmVyc2lvbi4KK2RlZiBpbnRfdG9fZmxvYXQobik6CisgICAgIiIiCisgICAgQ29ycmVjdGx5LXJvdW5kZWQgaW50ZWdlci10by1mbG9hdCBjb252ZXJzaW9uLgorCisgICAgIiIiCisgICAgIyBDb25zdGFudHMsIGRlcGVuZGluZyBvbmx5IG9uIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgaW4gdXNlLgorICAgICMgV2UgdXNlIGFuIGV4dHJhIDIgYml0cyBvZiBwcmVjaXNpb24gZm9yIHJvdW5kaW5nIHB1cnBvc2VzLgorICAgIFBSRUNJU0lPTiA9IHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnICsgMgorICAgIFNISUZUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heF9leHAgLSBQUkVDSVNJT04KKyAgICBRX01BWCA9IDEgPDwgUFJFQ0lTSU9OCisgICAgUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT04gPSBbMCwgLTEsIC0yLCAxLCAwLCAtMSwgMiwgMV0KKworICAgICMgUmVkdWNlIHRvIHRoZSBjYXNlIHdoZXJlIG4gaXMgcG9zaXRpdmUuCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMC4wCisgICAgZWxpZiBuIDwgMDoKKyAgICAgICAgcmV0dXJuIC1pbnRfdG9fZmxvYXQoLW4pCisKKyAgICAjIENvbnZlcnQgbiB0byBhICdmbG9hdGluZy1wb2ludCcgbnVtYmVyIHEgKiAyKipzaGlmdCwgd2hlcmUgcSBpcyBhbgorICAgICMgaW50ZWdlciB3aXRoICdQUkVDSVNJT04nIHNpZ25pZmljYW50IGJpdHMuICBXaGVuIHNoaWZ0aW5nIG4gdG8gY3JlYXRlIHEsCisgICAgIyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgdHJlYXRlZCBhcyAnc3RpY2t5Jy4gIFRoYXQgaXMsIHRoZQorICAgICMgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgc2V0IGlmIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBiaXQgb2YgbgorICAgICMgd2FzIGFscmVhZHkgc2V0LCBvciBhbnkgb25lIG9mIHRoZSBiaXRzIG9mIG4gbG9zdCBpbiB0aGUgc2hpZnQgd2FzIHNldC4KKyAgICBzaGlmdCA9IG4uYml0X2xlbmd0aCgpIC0gUFJFQ0lTSU9OCisgICAgcSA9IG4gPDwgLXNoaWZ0IGlmIHNoaWZ0IDwgMCBlbHNlIChuID4+IHNoaWZ0KSB8IGJvb2wobiAmIH4oLTEgPDwgc2hpZnQpKQorCisgICAgIyBSb3VuZCBoYWxmIHRvIGV2ZW4gKGFjdHVhbGx5IHJvdW5kcyB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA0LAorICAgICMgcm91bmRpbmcgdGllcyB0byBhIG11bHRpcGxlIG9mIDgpLgorICAgIHEgKz0gUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT05bcSAmIDddCisKKyAgICAjIERldGVjdCBvdmVyZmxvdy4KKyAgICBpZiBzaGlmdCArIChxID09IFFfTUFYKSA+IFNISUZUX01BWDoKKyAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiaW50ZWdlciB0b28gbGFyZ2UgdG8gY29udmVydCB0byBmbG9hdCIpCisKKyAgICAjIENoZWNrczogcSBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUsIGFuZCBxKioyKipzaGlmdCBkb2Vzbid0IG92ZXJmbG93LgorICAgIGFzc2VydCBxICUgNCA9PSAwIGFuZCBxIC8vIDQgPD0gMioqKHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnKQorICAgIGFzc2VydCBxICogMioqc2hpZnQgPD0gc3lzLmZsb2F0X2luZm8ubWF4CisKKyAgICAjIFNvbWUgY2lyY3VsYXJpdHkgaGVyZSwgc2luY2UgZmxvYXQocSkgaXMgZG9pbmcgYW4gaW50LXRvLWZsb2F0CisgICAgIyBjb252ZXJzaW9uLiAgQnV0IGhlcmUgcSBpcyBvZiBib3VuZGVkIHNpemUsIGFuZCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUKKyAgICAjIGFzIGEgZmxvYXQuICBJbiBhIGxvdy1sZXZlbCBDLWxpa2UgbGFuZ3VhZ2UsIHRoaXMgb3BlcmF0aW9uIHdvdWxkIGJlIGEKKyAgICAjIHNpbXBsZSBjYXN0IChlLmcuLCBmcm9tIHVuc2lnbmVkIGxvbmcgbG9uZyB0byBkb3VibGUpLgorICAgIHJldHVybiBtYXRoLmxkZXhwKGZsb2F0KHEpLCBzaGlmdCkKKworCiAjIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgY29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbgogZGVmIHRydWVkaXYoYSwgYik6CiAgICAgIiIiQ29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbiBmb3IgaW50ZWdlcnMuIiIiCkBAIC0zNjcsNiArNDE0LDIzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE3MjkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoTG9uZ1RydW5jKCkpLCAxNzI5KQogCisgICAgZGVmIGNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oc2VsZiwgbik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnQgLT4gZmxvYXQgY29udmVyc2lvbiBiZWhhdmlvdXIgbWF0Y2hlcworICAgICAgICAjIHRoYXQgb2YgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gYWJvdmUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjdHVhbCA9IGZsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgYWN0dWFsID0gJ292ZXJmbG93JworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gaW50X3RvX2Zsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnb3ZlcmZsb3cnCisKKyAgICAgICAgbXNnID0gKCJFcnJvciBpbiBjb252ZXJzaW9uIG9mIGludGVnZXIge30gdG8gZmxvYXQuICAiCisgICAgICAgICAgICAgICAiR290IHt9LCBleHBlY3RlZCB7fS4iLmZvcm1hdChuLCBhY3R1YWwsIGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCisKICAgICBAc3VwcG9ydC5yZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnZlcnNpb24oc2VsZik6CiAKQEAgLTQyMSw2ICs0ODUsMjIgQEAKICAgICAgICAgICAgIHkgPSAyKipwICogMioqNTMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGZsb2F0KHgpKSwgeSkKIAorICAgICAgICAjIENvbXBhcmUgYnVpbHRpbiBmbG9hdCBjb252ZXJzaW9uIHdpdGggcHVyZSBQeXRob24gaW50X3RvX2Zsb2F0CisgICAgICAgICMgZnVuY3Rpb24gYWJvdmUuCisgICAgICAgIHRlc3RfdmFsdWVzID0gWworICAgICAgICAgICAgaW50X2RibF9tYXgtMSwgaW50X2RibF9tYXgsIGludF9kYmxfbWF4KzEsCisgICAgICAgICAgICBoYWxmd2F5LTEsIGhhbGZ3YXksIGhhbGZ3YXkgKyAxLAorICAgICAgICAgICAgdG9wX3Bvd2VyLTEsIHRvcF9wb3dlciwgdG9wX3Bvd2VyKzEsCisgICAgICAgICAgICAyKnRvcF9wb3dlci0xLCAyKnRvcF9wb3dlciwgdG9wX3Bvd2VyKnRvcF9wb3dlciwKKyAgICAgICAgXQorICAgICAgICB0ZXN0X3ZhbHVlcy5leHRlbmQoZXhhY3RfdmFsdWVzKQorICAgICAgICBmb3IgcCBpbiByYW5nZSgtNCwgOCk6CisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgtMTI4LCAxMjgpOgorICAgICAgICAgICAgICAgIHRlc3RfdmFsdWVzLmFwcGVuZCgyKioocCs1MykgKyB4KQorICAgICAgICBmb3IgdmFsdWUgaW4gdGVzdF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24odmFsdWUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oLXZhbHVlKQorCiAgICAgZGVmIHRlc3RfZmxvYXRfb3ZlcmZsb3coc2VsZik6CiAgICAgICAgIGZvciB4IGluIC0yLjAsIC0xLjAsIDAuMCwgMS4wLCAyLjA6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGludCh4KSksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzY2YzYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMCwwICsxLDE1MTcgQEAKK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIF80RywgVEVTVEZOLCBpbXBvcnRfbW9kdWxlLCBiaWdtZW10ZXN0LCBydW5fdW5pdHRlc3QsIHVubGluaworKQorCitsem1hID0gaW1wb3J0X21vZHVsZSgibHptYSIpCitmcm9tIGx6bWEgaW1wb3J0IExaTUFDb21wcmVzc29yLCBMWk1BRGVjb21wcmVzc29yLCBMWk1BRXJyb3IsIExaTUFGaWxlCisKKworY2xhc3MgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGVzdCBlcnJvciBjYXNlcy4KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD0zLjQ1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBjaGVjaz0iIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgcHJlc2V0PSJhc2RmIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz0zKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgRk9STUFUX0FVVE8gd2hlbiBjb21wcmVzc2luZy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD1sem1hLkZPUk1BVF9BVVRPKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgYSBwcmVzZXQgYW5kIGEgY3VzdG9tIGZpbHRlciBjaGFpbiBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUNvbXByZXNzb3IocHJlc2V0PTcsIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMn1dKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgbWVtbGltaXQ9YiJxdyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPSJ6enoiKQorICAgICAgICAjIENhbm5vdCBzcGVjaWZ5IGEgbWVtb3J5IGxpbWl0IHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBtZW1saW1pdD0weDEwMDAwMDApCisgICAgICAgICMgQ2FuIG9ubHkgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gd2l0aCBGSUxURVJfUkFXLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKworICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJmb28iLCBiImJhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmZsdXNoLCBiImJsYWgiKQorICAgICAgICBlbXB0eSA9IGx6Yy5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJxdXV4IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbHpjLmZsdXNoKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiImZvbyIsIGIiYmFyIikKKyAgICAgICAgbHpkLmRlY29tcHJlc3MoZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJxdXV4IikKKworICAgIGRlZiB0ZXN0X2JhZF9maWx0ZXJfc3BlYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1bYiJ3b2JzaXRlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1beyJpZCI6IDk4NzY1fV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfWDg2LCAiZm9vIjogMH1dKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2FmdGVyX2VvZihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJueWFuIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9tZW1saW1pdChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcihtZW1saW1pdD0xMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORSkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiBfdGVzdF9kZWNvbXByZXNzb3Ioc2VsZiwgbHpkLCBkYXRhLCBjaGVjaywgdW51c2VkX2RhdGE9YiIiKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsemQuZW9mKQorICAgICAgICBvdXQgPSBsemQuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgSU5QVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmNoZWNrLCBjaGVjaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCB1bnVzZWRfZGF0YSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9hdXRvKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl94eihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9YWikKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2Fsb25lKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfMShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV18xLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfcmF3XzIoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd18zKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfNChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV180LCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKENPTVBSRVNTRURfWFopLCAxMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5lb2YpCisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbaTppKzEwXSkpCisgICAgICAgIG91dCA9IGIiIi5qb2luKG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIElOUFVUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6ZC5jaGVjaywgbHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBleHRyYSwgbHptYS5DSEVDS19DUkM2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX2RhdGE9ZXh0cmEpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMSkKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1haKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICMgVGVzdCB0aGF0IExaTUFDb21wcmVzc29yLT5MWk1BRGVjb21wcmVzc29yIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF94eihzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhJTlBVVCkgKyBsemMuZmx1c2goKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19DUkM2NCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9hbG9uZShzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGNkYXRhID0gbHpjLmNvbXByZXNzKElOUFVUKSArIGx6Yy5mbHVzaCgpCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfcmF3KHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoSU5QVVQpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX2NodW5rcyhzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgIGNkYXRhLmFwcGVuZChsemMuY29tcHJlc3MoSU5QVVRbaTppKzEwXSkpCisgICAgICAgIGNkYXRhLmFwcGVuZChsemMuZmx1c2goKSkKKyAgICAgICAgY2RhdGEgPSBiIiIuam9pbihjZGF0YSkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgY2RhdGEsIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICAjIExaTUFEZWNvbXByZXNzb3IgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfbXVsdGlzdHJlYW0oc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hLkNIRUNLX0NSQzY0LCB1bnVzZWRfZGF0YT1DT01QUkVTU0VEX0FMT05FKQorCisgICAgIyBUZXN0IHdpdGggaW5wdXRzIGxhcmdlciB0aGFuIDRHaUIuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoYiJ4IiAqIHNpemUpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhKSwgc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRkYXRhID0gTm9uZQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBibG9ja3NpemUgPSAxMCAqIDEwMjQgKiAxMDI0CisgICAgICAgIGJsb2NrID0gcmFuZG9tLmdldHJhbmRiaXRzKGJsb2Nrc2l6ZSAqIDgpLnRvX2J5dGVzKGJsb2Nrc2l6ZSwgImxpdHRsZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlucHV0ID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKGlucHV0KQorICAgICAgICAgICAgZGRhdGEgPSBsemQuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIGlucHV0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaW5wdXQgPSBjZGF0YSA9IGRkYXRhID0gTm9uZQorCisKK2NsYXNzIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUZXN0IGVycm9yIGNhc2VzOgorCisgICAgZGVmIHRlc3RfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZvcm1hdD0ieHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgY2hlY2s9Im5vbmUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgcHJlc2V0PSJibGFoIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZpbHRlcnM9MTAyNCkKKyAgICAgICAgIyBDYW4ndCBzcGVjaWZ5IGEgcHJlc2V0IGFuZCBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuY29tcHJlc3MoYiIiLCBwcmVzZXQ9MywgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5kZWNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgZm9ybWF0PSJsem1hIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgbWVtbGltaXQ9Ny4zZTkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9e30pCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBtZW1vcnkgbGltaXQgd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgbWVtbGltaXQ9MHgxMDAwMDAwKQorICAgICAgICAjIENhbiBvbmx5IHNwZWNpZnkgYSBjdXN0b20gZmlsdGVyIGNoYWluIHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgICAgICBiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19tZW1saW1pdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX1haLCBtZW1saW1pdD0xMDI0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgICAgIENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZ29vZF9pbnB1dChzZWxmKToKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgbHptYS5GT1JNQVRfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV18xLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV180LCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfaW5wdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHptYS5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haWzoxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORVs6MTI4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzFbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzJbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzNbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzRbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgIyBUZXN0IHRoYXQgY29tcHJlc3MoKS0+ZGVjb21wcmVzcygpIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVULCBsem1hLkZPUk1BVF9YWikKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGNkYXRhID0gbHptYS5jb21wcmVzcyhJTlBVVCwgbHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgIyBVbmxpa2UgTFpNQURlY29tcHJlc3NvciwgZGVjb21wcmVzcygpICpkb2VzKiBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haICsgQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQgKiAyKQorCisKK2NsYXNzIFRlbXBGaWxlOgorICAgICIiIkNvbnRleHQgbWFuYWdlciAtIGNyZWF0ZXMgYSBmaWxlLCBhbmQgZGVsZXRlcyBpdCBvbiBfX2V4aXRfXy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZGF0YT1iIiIpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuZGF0YSkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHVubGluayhzZWxmLmZpbGVuYW1lKQorCisKK2NsYXNzIEZpbGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiciIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAicmIiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgIndiIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhYiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX21vZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAoMywgIngiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyKyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAid3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIncrIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydyIpCisKKyAgICBkZWYgdGVzdF9pbml0X2JhZF9jaGVjayhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWIiYXNkIikKKyAgICAgICAgIyBDSEVDS19VTktOT1dOIGFuZCBhbnl0aGluZyBhYm92ZSBDSEVDS19JRF9NQVggc2hvdWxkIGJlIGludmFsaWQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX1VOS05PV04pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX0lEX01BWCArIDMpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBjaGVjayB3aXRoIG1vZGU9InIiLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19OT05FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19DUkMzMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX1NIQTI1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfVU5LTk9XTikKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX3ByZXNldChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD00LjM5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTIzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0tMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9LTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9ImZvbyIpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBwcmVzZXQgd2l0aCBtb2RlPSJyIi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIHByZXNldD0zKQorCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfZmlsdGVyX3NwZWMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVtiIndvYnNpdGUiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W3siaWQiOiA5ODc2NX1dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgImZvbyI6IDB9XSkKKworICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9wcmVzZXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgIHByZXNldD02LCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKENPTVBSRVNTRURfWFopIGFzIHNyYzoKKyAgICAgICAgICAgIGYgPSBMWk1BRmlsZShzcmMpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICMgTFpNQUZpbGUuY2xvc2UoKSBzaG91bGQgbm90IGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorICAgICAgICAgICAgIyBUcnkgY2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBMWk1BRmlsZS4KKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgcmVhbCBmaWxlIG9uIGRpc2ssIG9wZW5lZCBkaXJlY3RseSBieSBMWk1BRmlsZS4KKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIGZwID0gZi5fZnAKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgIyBIZXJlLCBMWk1BRmlsZS5jbG9zZSgpICpzaG91bGQqIGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZwLmNsb3NlZCkKKyAgICAgICAgICAgICMgVHJ5IGNsb3NpbmcgYW4gYWxyZWFkeS1jbG9zZWQgTFpNQUZpbGUuCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZChzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0X2ZpbGVubyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBmLmZpbGVubykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmlsZW5vKCksIGYuX2ZwLmZpbGVubygpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLmZpbGVubygpLCBpbnQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKworICAgIGRlZiB0ZXN0X3NlZWthYmxlKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgICAgIHNyYyA9IEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBmID0gTFpNQUZpbGUoc3JjKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgZGVmIHRlc3RfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkYWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdF93cml0YWJsZShzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18xKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzIpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMyksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV180KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBjaHVua3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ocmVzdWx0KSwgMTApCisgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGNodW5rcyksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcmVhZF9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogMikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzMgKiA0KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDQpCisKKyAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCisgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KKyAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQorICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqICA1KSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IHNhdmVkX2J1ZmZlcl9zaXplCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2ZpbGVfd2l0aF9ieXRlc19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBURVNURk4uZW5jb2RlKCJhc2NpaSIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUZW1wb3JhcnkgZmlsZSBuYW1lIG5lZWRzIHRvIGJlIEFTQ0lJIikKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShieXRlc19maWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2luY29tcGxldGUoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haWzoxMjhdKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisKKyAgICBkZWYgdGVzdF9yZWFkX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZWFkMShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYmxvY2tzKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZDEoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZDFfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8xMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihibG9ja3MpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZDEoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGJsb2NrcyksIElOUFVUICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQxKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkMSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQxLCBOb25lKQorCisgICAgZGVmIHRlc3RfcGVlayhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5wZWVrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocmVzdWx0KSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTlBVVC5zdGFydHN3aXRoKHJlc3VsdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5wZWVrKDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZXN1bHQpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElOUFVULnN0YXJ0c3dpdGgocmVzdWx0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcGVla19iYWRfYXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucGVlaykKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMiksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKElOUFVUKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZSgpLCBsaW5lKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZi5yZWFkbGluZXMoKSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVULCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlXzEwKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgwLCBsZW4oSU5QVVQpLCAxMCk6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVRbc3RhcnQ6c3RhcnQrMTBdKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF93cml0ZV9hcHBlbmQoc2VsZik6CisgICAgICAgIHBhcnQxID0gSU5QVVRbOjEwMjRdCisgICAgICAgIHBhcnQyID0gSU5QVVRbMTAyNDoxNTM2XQorICAgICAgICBwYXJ0MyA9IElOUFVUWzE1MzY6XQorICAgICAgICBleHBlY3RlZCA9IGIiIi5qb2luKGx6bWEuY29tcHJlc3MoeCkgZm9yIHggaW4gKHBhcnQxLCBwYXJ0MiwgcGFydDMpKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDEpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDIpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2ZpbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZV93aXRoX2J5dGVzX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfYXBwZW5kX3RvX2ZpbGUoc2VsZik6CisgICAgICAgIHBhcnQxID0gSU5QVVRbOjEwMjRdCisgICAgICAgIHBhcnQyID0gSU5QVVRbMTAyNDoxNTM2XQorICAgICAgICBwYXJ0MyA9IElOUFVUWzE1MzY6XQorICAgICAgICBleHBlY3RlZCA9IGIiIi5qb2luKGx6bWEuY29tcHJlc3MoeCkgZm9yIHggaW4gKHBhcnQxLCBwYXJ0MiwgcGFydDMpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDEpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDIpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDMpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X3dyaXRlX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLndyaXRlLCBiImZvbyIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0ZSwgYiJiYXIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLndyaXRlLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLndyaXRlLCAidGV4dCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsIDc4OSkKKworICAgIGRlZiB0ZXN0X3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhsaW5lcykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsoNTU1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbNTU1Ol0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmRfYWNyb3NzX3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogMikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsobGVuKElOUFVUKSArIDEyMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWzEyMzpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkX3JlbGF0aXZlX3RvX2N1cnJlbnQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYucmVhZCgxMDApCisgICAgICAgICAgICBmLnNlZWsoMTIzNiwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWzEzMzY6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfZm9yd2FyZF9yZWxhdGl2ZV90b19lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtNTU1LCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbLTU1NTpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19iYWNrd2FyZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKDEwMDEpCisgICAgICAgICAgICBmLnNlZWsoMjExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMjExOl0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhY2t3YXJkX2Fjcm9zc19zdHJlYW1zKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDIpKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKGxlbihJTlBVVCkgKyAzMzMpCisgICAgICAgICAgICBmLnNlZWsoNzM3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbNzM3Ol0gKyBJTlBVVCkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFja3dhcmRfcmVsYXRpdmVfdG9fZW5kKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsoLTE1MCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWy0xNTA6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfcGFzdF9lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhsZW4oSU5QVVQpICsgOTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9zZWVrX3Bhc3Rfc3RhcnQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtODgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCA5LCAoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5zZWVrLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIGIiZGVycCIpCisKKyAgICBkZWYgdGVzdF90ZWxsKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwb3MgPSAwCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHBvcykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTgzKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcG9zICs9IGxlbihyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCBsZW4oSU5QVVQpKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgZm9yIHBvcyBpbiByYW5nZSgwLCBsZW4oSU5QVVQpLCAxNDQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHBvcykKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUW3Bvczpwb3MrMTQ0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisKKyAgICBkZWYgdGVzdF90ZWxsX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYudGVsbCkKKworCitjbGFzcyBPcGVuVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQgKiAyKQorCisgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gSU5QVVQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJhdCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEub3BlbihURVNURk4sICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJiIiwgZXJyb3JzPSJpZ25vcmUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJiIiwgbmV3bGluZT0iXG4iKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2FuZF9maWx0ZXJzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZm9ybWF0IGFuZCBmaWx0ZXIgY2hhaW4uCisgICAgICAgIG9wdGlvbnMgPSB7ImZvcm1hdCI6IGx6bWEuRk9STUFUX1JBVywgImZpbHRlcnMiOiBGSUxURVJTX1JBV18xfQorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfUkFXXzEpLCAicmIiLCAqKm9wdGlvbnMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid2IiLCAqKm9wdGlvbnMpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSwgKipvcHRpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBlbmNvZGluZy4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gSU5QVVQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKS5kZWNvZGUoInV0Zi0xNi1sZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgICAgIGJpby5zZWVrKDApCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJydCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB3aWggbm9uLWRlZmF1bHQgZW5jb2RpbmcgZXJyb3IgaGFuZGxlci4KKyAgICAgICAgd2l0aCBCeXRlc0lPKGx6bWEuY29tcHJlc3MoYiJmb29ceGZmYmFyIikpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICAgICAgYmlvLnNlZWsoMCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCisKK2NsYXNzIE1pc2NlbGxhbmVvdXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pc19jaGVja19zdXBwb3J0ZWQoc2VsZik6CisgICAgICAgICMgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIgc2hvdWxkIGFsd2F5cyBiZSBzdXBwb3J0ZWQsCisgICAgICAgICMgcmVnYXJkbGVzcyBvZiB0aGUgb3B0aW9ucyBsaWJsem1hIHdhcyBjb21waWxlZCB3aXRoLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19OT05FKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6bWEuaXNfY2hlY2tfc3VwcG9ydGVkKGx6bWEuQ0hFQ0tfQ1JDMzIpKQorCisgICAgICAgICMgVGhlIC54eiBmb3JtYXQgc3BlYyBjYW5ub3Qgc3RvcmUgY2hlY2sgSURzIGFib3ZlIHRoaXMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19JRF9NQVggKyAxKSkKKworICAgICAgICAjIFRoaXMgdmFsdWUgc2hvdWxkIG5vdCBiZSBhIHZhbGlkIGNoZWNrIElELgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6bWEuaXNfY2hlY2tfc3VwcG9ydGVkKGx6bWEuQ0hFQ0tfVU5LTk9XTikpCisKKyAgICBkZWYgdGVzdF9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoYiJub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7ImlkIjogMHgxMDB9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImp1bmsiOiAxMn0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobHptYS5MWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IDkwMDF9KQorCisgICAgICAgICMgVGVzdCB3aXRoIHBhcmFtZXRlcnMgdXNlZCBieSB6aXBmaWxlIG1vZHVsZS4KKyAgICAgICAgcHJvcHMgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeworICAgICAgICAgICAgICAgICJpZCI6IGx6bWEuRklMVEVSX0xaTUExLAorICAgICAgICAgICAgICAgICJwYiI6IDIsCisgICAgICAgICAgICAgICAgImxwIjogMCwKKyAgICAgICAgICAgICAgICAibGMiOiAzLAorICAgICAgICAgICAgICAgICJkaWN0X3NpemUiOiA4IDw8IDIwLAorICAgICAgICAgICAgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9wcywgYiJdXHgwMFx4MDBceDgwXHgwMCIpCisKKyAgICBkZWYgdGVzdF9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfWDg2LCB7InNob3VsZCBiZSI6IGJ5dGVzfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsem1hLkxaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfREVMVEEsIGIidG9vIGxvbmciKQorCisgICAgICAgICMgVGVzdCB3aXRoIHBhcmFtZXRlcnMgdXNlZCBieSB6aXBmaWxlIG1vZHVsZS4KKyAgICAgICAgZmlsdGVyc3BlYyA9IGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcygKKyAgICAgICAgICAgICAgICBsem1hLkZJTFRFUl9MWk1BMSwgYiJdXHgwMFx4MDBceDgwXHgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1siaWQiXSwgbHptYS5GSUxURVJfTFpNQTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1sicGIiXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJscCJdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcnNwZWNbImxjIl0sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1siZGljdF9zaXplIl0sIDggPDwgMjApCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfcHJvcGVydGllc19yb3VuZHRyaXAoc2VsZik6CisgICAgICAgIHNwZWMxID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgIGx6bWEuRklMVEVSX0xaTUExLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKyAgICAgICAgcmVlbmNvZGVkID0gbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNwZWMxKQorICAgICAgICBzcGVjMiA9IGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9MWk1BMSwgcmVlbmNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMxLCBzcGVjMikKKworCisjIFRlc3QgZGF0YToKKworSU5QVVQgPSBiIiIiCitMQUVSVEVTCisKKyAgICAgICBPLCBmZWFyIG1lIG5vdC4KKyAgICAgICBJIHN0YXkgdG9vIGxvbmc6IGJ1dCBoZXJlIG15IGZhdGhlciBjb21lcy4KKworICAgICAgIEVudGVyIFBPTE9OSVVTCisKKyAgICAgICBBIGRvdWJsZSBibGVzc2luZyBpcyBhIGRvdWJsZSBncmFjZSwKKyAgICAgICBPY2Nhc2lvbiBzbWlsZXMgdXBvbiBhIHNlY29uZCBsZWF2ZS4KKworTE9SRCBQT0xPTklVUworCisgICAgICAgWWV0IGhlcmUsIExhZXJ0ZXMhIGFib2FyZCwgYWJvYXJkLCBmb3Igc2hhbWUhCisgICAgICAgVGhlIHdpbmQgc2l0cyBpbiB0aGUgc2hvdWxkZXIgb2YgeW91ciBzYWlsLAorICAgICAgIEFuZCB5b3UgYXJlIHN0YXknZCBmb3IuIFRoZXJlOyBteSBibGVzc2luZyB3aXRoIHRoZWUhCisgICAgICAgQW5kIHRoZXNlIGZldyBwcmVjZXB0cyBpbiB0aHkgbWVtb3J5CisgICAgICAgU2VlIHRob3UgY2hhcmFjdGVyLiBHaXZlIHRoeSB0aG91Z2h0cyBubyB0b25ndWUsCisgICAgICAgTm9yIGFueSB1bnByb3BvcnRpb25lZCB0aG91Z2h0IGhpcyBhY3QuCisgICAgICAgQmUgdGhvdSBmYW1pbGlhciwgYnV0IGJ5IG5vIG1lYW5zIHZ1bGdhci4KKyAgICAgICBUaG9zZSBmcmllbmRzIHRob3UgaGFzdCwgYW5kIHRoZWlyIGFkb3B0aW9uIHRyaWVkLAorICAgICAgIEdyYXBwbGUgdGhlbSB0byB0aHkgc291bCB3aXRoIGhvb3BzIG9mIHN0ZWVsOworICAgICAgIEJ1dCBkbyBub3QgZHVsbCB0aHkgcGFsbSB3aXRoIGVudGVydGFpbm1lbnQKKyAgICAgICBPZiBlYWNoIG5ldy1oYXRjaCdkLCB1bmZsZWRnZWQgY29tcmFkZS4gQmV3YXJlCisgICAgICAgT2YgZW50cmFuY2UgdG8gYSBxdWFycmVsLCBidXQgYmVpbmcgaW4sCisgICAgICAgQmVhcid0IHRoYXQgdGhlIG9wcG9zZWQgbWF5IGJld2FyZSBvZiB0aGVlLgorICAgICAgIEdpdmUgZXZlcnkgbWFuIHRoeSBlYXIsIGJ1dCBmZXcgdGh5IHZvaWNlOworICAgICAgIFRha2UgZWFjaCBtYW4ncyBjZW5zdXJlLCBidXQgcmVzZXJ2ZSB0aHkganVkZ21lbnQuCisgICAgICAgQ29zdGx5IHRoeSBoYWJpdCBhcyB0aHkgcHVyc2UgY2FuIGJ1eSwKKyAgICAgICBCdXQgbm90IGV4cHJlc3MnZCBpbiBmYW5jeTsgcmljaCwgbm90IGdhdWR5OworICAgICAgIEZvciB0aGUgYXBwYXJlbCBvZnQgcHJvY2xhaW1zIHRoZSBtYW4sCisgICAgICAgQW5kIHRoZXkgaW4gRnJhbmNlIG9mIHRoZSBiZXN0IHJhbmsgYW5kIHN0YXRpb24KKyAgICAgICBBcmUgb2YgYSBtb3N0IHNlbGVjdCBhbmQgZ2VuZXJvdXMgY2hpZWYgaW4gdGhhdC4KKyAgICAgICBOZWl0aGVyIGEgYm9ycm93ZXIgbm9yIGEgbGVuZGVyIGJlOworICAgICAgIEZvciBsb2FuIG9mdCBsb3NlcyBib3RoIGl0c2VsZiBhbmQgZnJpZW5kLAorICAgICAgIEFuZCBib3Jyb3dpbmcgZHVsbHMgdGhlIGVkZ2Ugb2YgaHVzYmFuZHJ5LgorICAgICAgIFRoaXMgYWJvdmUgYWxsOiB0byB0aGluZSBvd25zZWxmIGJlIHRydWUsCisgICAgICAgQW5kIGl0IG11c3QgZm9sbG93LCBhcyB0aGUgbmlnaHQgdGhlIGRheSwKKyAgICAgICBUaG91IGNhbnN0IG5vdCB0aGVuIGJlIGZhbHNlIHRvIGFueSBtYW4uCisgICAgICAgRmFyZXdlbGw6IG15IGJsZXNzaW5nIHNlYXNvbiB0aGlzIGluIHRoZWUhCisKK0xBRVJURVMKKworICAgICAgIE1vc3QgaHVtYmx5IGRvIEkgdGFrZSBteSBsZWF2ZSwgbXkgbG9yZC4KKworTE9SRCBQT0xPTklVUworCisgICAgICAgVGhlIHRpbWUgaW52aXRlcyB5b3U7IGdvOyB5b3VyIHNlcnZhbnRzIHRlbmQuCisKK0xBRVJURVMKKworICAgICAgIEZhcmV3ZWxsLCBPcGhlbGlhOyBhbmQgcmVtZW1iZXIgd2VsbAorICAgICAgIFdoYXQgSSBoYXZlIHNhaWQgdG8geW91LgorCitPUEhFTElBCisKKyAgICAgICAnVGlzIGluIG15IG1lbW9yeSBsb2NrJ2QsCisgICAgICAgQW5kIHlvdSB5b3Vyc2VsZiBzaGFsbCBrZWVwIHRoZSBrZXkgb2YgaXQuCisKK0xBRVJURVMKKworICAgICAgIEZhcmV3ZWxsLgorIiIiCisKK0NPTVBSRVNTRURfWFogPSAoCisgICAgYiJceGZkN3pYWlx4MDBceDAwXHgwNFx4ZTZceGQ2XHhiNEZceDAyXHgwMCFceDAxXHgxNlx4MDBceDAwXHgwMHQvXHhlNVx4YTMiCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhkZl1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5OFx4MTVceGU0XHhiNFx4OWQiCisgICAgYiJvXHgxZFx4YzRceGU1XG5ceDAzXHhjYzJoXHhjN1xcXHg4Nlx4ZmZceGY4XHhlMlx4ZmNceGU3XHhkOVx4ZmU2XHhiOCgiCisgICAgYiJceGE4d2RceGMyXCJ1Lm5ceDFlXHhjM1x4ZjJceDhlXHg4ZFx4OGZceDAyXHgxNy9ceGE2PVx4ZjBceGEyXHhkZi9NXHg4OSIKKyAgICBiIlx4YmVceGRlXHhhN1x4MWN6XHgxOC1dXHhkNVx4ZWZceDEzXHg4ZnJaXHgxNVx4ODBceDhjXHhmOFx4OGRvXHhmYVx4MTIiCisgICAgYiJceDliI3ovXHhlZlx4ZjBceGZhRlx4MDFceDgyXHhhM01ceDhlXHhhMXRceGNhNiBCRiRceGU1UVx4YTRceDk4XHhlZVx4ZGUiCisgICAgYiJsXHhlOFx4N2ZceGYwXHg5ZCxiblx4MGJceDEzXHhkNFx4YThceDgxXHhlNE5ceGM4XHg4Nlx4MTUzXHhmNXgyXHhhMk8iCisgICAgYiJceDEzQFFceGExXHgwMC9ceGE1XHhkME9ceDk3XHhkY29ceGFlXHhmN3pceGM0XHhjZFNceGI2dDxceDE2XHhmMlx4OWNJIyIKKyAgICBiIlx4ODl1ZFx4YzY2WVx4ZDlceGVlXHhlNlx4Y2VceDEyXVx4ZTVceGYwXHhhYVx4OTYtUGVceGFkZTpceDA0XHRceDFiXHhmNyIKKyAgICBiIlx4ZGI3XG5ceDg2XHgxZnBceGM4Slx4YmFceGY0XHhmMFZceGE5XHhkY1x4ZjBceDAyJUdceGY5XHhkZj0/XHgxNVx4MWIiCisgICAgYiJceGUxKFx4Y2VceDgyPVx4ZDZJXHhhYzNceDEyXHgwY1JceGI3XHhhZVxyXHhiMWlceDAzXHg5NVx4MDFceGJkXHhiZVx4ZmEiCisgICAgYiJceDAyc1x4MDFQXHg5ZFx4OTZYXHhiMTJqXHhjOExceGE4XHg4NGJceGY2XHhjM1x4ZDRjLUhceDkzb0psXHhkMGlRXHhlNGsiCisgICAgYiJceDg0XHgwYlx4YzFceGI3XHhiY1x4YjFceDE3XHg4OFx4YjFceGNhP0BceGY2XHgwN1x4ZWFceGU2eFx4ZjFIMTJQXHgwZiIKKyAgICBiIlx4OGFceGM5XHhlYXV3XHhlM1x4YmVceGFhaVx4YTlXXHhkMFx4ODBceGNkI2NiNVx4OTlceGQ4XVx4YTlkXHgwY1x4YmQiCisgICAgYiJceGEyXHhkY1dsXHhlZFVHXHhiZlx4ODl5Rlx4Zjc3XHg4MXZceGJkNVx4OThceGJlaDhceDE4V1x4MDhceGYwXHgxYlx4OTkiCisgICAgYiI1Olx4MWE/ckRceDk2XHhhMVx4MDRceDBmXHhhZVx4YmFceDg1XHhlYlx4OWQ1QFx4ZjVceDgzXHhkMzdceDgzXHg4YWMiCisgICAgYiJceDA2XHhkNFx4OTdpXHhjZHRceDE2U1x4ODJrXHhmNktceDAxdnlceDg4XHg5MVx4OWI2VFx4ZGFlXHJceGZkXTprXHhiYWwiCisgICAgYiJceGE5XHhiYmFceGMzNFx4ZjlyXHhlYn1yXHhkYlx4YzdceGRiKlx4OGZceDAzelx4ZGM4aFx4Y2NceGM5XHhkM1x4YmNsIgorICAgIGIiXHhhNS1ceGNiXHhlYUtceGEyXHhjNVx4MTVceGMwXHhlM1x4YzFceDg2Wlx4ZmJceGViTFx4ZTEzXHhjZlx4OWNceGUzIgorICAgIGIiXHgxZFx4YzlceGVkXHhjMlx4MDZceGNjXHhjZSFceDkyXHhlNVx4ZmVceDljXlx4YTU5dyBceDliUFx4YTNQS1x4MDhkIgorICAgIGIiXHhmOVx4ZTJafVx4YTdceGJmXHhlZFx4ZWIlJFx4MGNceDgyXHhiOC9ceGIwXHgwMVx4YTkmLFx4ZjdxaHtRXHg5NilceGYyIgorICAgIGIicVx4OTZceGMzXHg4MFx4YjRceDEyXHhiMFx4YmFceGU2b1x4ZjQhXHhiNFtceGQ0XHg4YXdceDEwXHhmN3RceDBjXHhiMyIKKyAgICBiIlx4ZDlceGQ1XHhjM2BeXHg4MVx4MTE/P1xcXHhhNFx4OTlceDg1Ulx4ZDRceDhlXHg4M1x4YzlceDFlWFx4YmZhXHhmMSIKKyAgICBiIlx4YWNceGIwXHhlYVx4ZWFceGQ3XHhkMFx4YWJceDE4XHhlMlx4ZjJceGVkXHhlMVx4YjdceGM5XHgxOFx4Y2JTXHhlND4iCisgICAgYiJceGM5XHg5NUhceGU4XHhjYlx0XHIlXHhlYlx4YzckLm9ceGYxXHhmM1JceDE3XHgxZGJceGJiXHhkOFVceGE1Xlx4Y2NTIgorICAgIGIiXHgxNlx4MDFceDg3XHhmMy9ceDkzXHhkMVx4ZjB2XHhjMHJceGQ3XHhjY1x4YTJHa3pceGNhXHg4MFx4MGVceGZkXHhkMCIKKyAgICBiIlx4OGJceGJiXHhkMkl4XHhiM1x4MWV5XHhjYS0wXHhlM3peXHhkNlx4ZDZceDhmX1x4ZjFceDlkUFx4OWZpXHhhN1x4ZDEiCisgICAgYiJceGU4XHg5MFx4ODRceGRjXHhiZlx4Y2RreVx4OGVceGRjXHg4MVx4N2ZceGEzXHhiMitceGJmXHgwNFx4ZWZceGQ4XFwiCisgICAgYiJceGM0XHhkZlx4ZTFceGIwXHgwMVx4ZTlceDkzXHhlM1lceGYxXHgxZFlceGU4aFx4ODFceGNmXHhmMXdceGNjXHhiNFx4ZWYiCisgICAgYiIgXHg4YnxceDA0XHhlYVx4ODNlalx4YmVceDFmXHhkNHpceDljYFx4ZDNceDFhXHg5MkFceDA2XHhlNVx4OGZceGE5XHgxMyIKKyAgICBiIlx0XHg5ZT1ceGZhXHgxY1x4ZTVfXHg5ZiV2XHgxYm9ceDExWk9ceGQ4XHhmNFx0XHhkZE1ceDE2LVx4MDRceGZjXHgxODxcIiIKKyAgICBiIkNNXHhkZGd+Ylx4ZjZceGVmXHg4ZVx4MGNceGQwXHhkZXxceGEwJ1x4OGFceDBjXHhkNnhceGFlIUpceGE2Rlx4ODhceDE1dSIKKyAgICBiIlx4MDA4XHgxN1x4YmM3eVx4YjNceGQ4dVx4YWNfXHg4NVx4OGRceGU3XHhjMUBceDljXHhlY3FjXHhhMyNceGFkXHhmMSIKKyAgICBiIlx4OTM1XHhiNSlfXHJceGVjM11ceDBmb101XHhkMG15XHgwN1x4OWJceGVlXHg4MVx4YjVceDBmXHhjZksrXHgwMFx4YzAiCisgICAgYiJceGU0Ylx4MTBceGU0XHgwY1x4MWEgXHg5Ylx4ZTBceDk3dFx4ZjZceGExXHg5ZVx4ODUwXHhiYVx4MGNceDlhXHg4ZFx4YzgiCisgICAgYiJceDhmXHgwN1x4ZDdceGFlXHhjOFx4ZjkraVx4ZGNceGI5a1x4YjA+Zlx4MTlceGI4XHJceGE4XHhmOFx4MWYkXHhhNXtwIgorICAgIGIiXHhjNlx4ODgwXHhjZVx4ZGJceGNmXHhjYV9ceDg2XHhhY1x4ODhoNlx4OGJaJSdceGQwXG5ceGJmXHgwZlx4OWNcIlx4YmEiCisgICAgYiJceGU1XHg4Nlx4OWZceDBmN1g9bU5YW1x4Y2NceDE5RlVceGM5XHg4NjBceGJjXHg5MGErKiBceGFlXyRceDAzXHgxZVx4ZDMiCisgICAgYiJceGNkX1x4YTBceDljXHhkZVx4YWY0NnFceGE1XHhjOVx4OTJceGQ3XHhjYVx4ZTNgXHg5ZFx4ODV9XHhiNFx4ZmZceGIzIgorICAgIGIiXHg4M1x4ZmJceGI2XHhjYVx4YWVgXHgwYndceDdmXHhmY1x4ZDhceGFjVmVceDE5XHhjOFx4MTdceDBiWlx4YWRceDg4IgorICAgIGIiXHhlYiNceDk3XHgwM1x4MTNceGIxZFx4MGZ7XHgwY1x4MDR3XHgwN1xyXHg5N1x4YmRceGQ2XHhjMVx4YzNCOlx4OTVceDA4IgorICAgIGIiXlx4MTBWXHhhZWFIXHgwMlx4ZDlceGUzXG5cXFx4MDFYXHhmNlx4OWNceDhhXHgwNnUjJVx4YmUqXHhhMVx4MTh2XHg4NSIKKyAgICBiIlx4ZWMhXHQ0XHgwMFx4MDBceDAwXHgwMFZqP3VMVVx4ZjNceGE2XHgwMFx4MDFceGZiXHgwN1x4ODFceDBmXHgwMFx4MDB0dyIKKyAgICBiIlx4OTlQXHhiMVx4YzRnXHhmYlx4MDJceDAwXHgwMFx4MDBceDAwXHgwNFlaIgorKQorCitDT01QUkVTU0VEX0FMT05FID0gKAorICAgIGIiXVx4MDBceDAwXHg4MFx4MDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDBceDA1XHgxNFx4MDdiWFx4MTkiCisgICAgYiJceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZG9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjgiCisgICAgYiJceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KFx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDIiCisgICAgYiJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5XHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmcloiCisgICAgYiJceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdCIKKyAgICBiIlx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZWxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODEiCisgICAgYiJceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyT1x4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3eiIKKyAgICBiIlx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjAiCisgICAgYiJceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3XHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTkiCisgICAgYiJceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjciCisgICAgYiJceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYVx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YTgiCisgICAgYiJceDg0Ylx4ZjhceDFlcGxceGVhanJceGQxPVx0XHgwM1x4ZGRceDEzXHgxYjMhRVx4Zjl2Vlx4ZGFGXHhmM1x4ZDdceGI0IgorICAgIGIiXHgwY1x4YTlQflx4ZWNceGRlRVx4ZTM3XHhmNlx4MWRceGM2XHhiYlx4ZGRjJVx4YjZceDBmSVx4MDdceGYwO1x4YWZceGU3IgorICAgIGIiXHhhMFx4OGJceGE3Wlx4OTkoXHhlOVx4ZTJceGYwb1x4MTg+YFx4ZTFceGFhXHhhOFx4ZDlceGExXHhiMn1ceGU3XHg4ZCIKKyAgICBiIlx4ODM0VFx4YjZceGVmXHhjMVx4ZGVceGUzXHg5OFx4YmNEXHgwM01BQFx4ZDhceGVkXHhkY1x4YzhceDkzXHgwM1x4MWEiCisgICAgYiJceDkzXHgwYlx4N2ZceDk0XHgxMlx4MGJceDAyU2FceDE4XHhjOVx4YzVceDliVEpFfVx4ZjZceGM4Z1x4MTcjWlZceDAxIgorICAgIGIiXHhjOVx4OWRjXHg4M1x4MGU+MFx4MTZceDkwU1x4YjgvXHgwM3lfXHgxOFx4ZmEoXHhkN1x4MGJyXHhhMlx4YjBceGJhPyIKKyAgICBiIlx4OGNceGU2XHg4M0BceDg0XHhkZlx4MDI6XHhjNXpceDllXHhhNlx4ODRceGM5XHhmNUJleVhceDgzXHgxYVx4ZjEgOlx0IgorICAgIGIiXHhmN1x4MTlceGZleERcXCZHXHhmM1x4ODVZXHhhMkpceGY5XHgwYnZ7XHg4OVx4ZjZceGU3KUFceGFmXHgwNG9ceDAwIgorICAgIGIiXHgwNzVceGQzXHhlMFx4N2ZceDk3XHg5OEZceDBmP3ZceDkzXHhlZFZ0VGZceGI1XHg5N1x4ODNceGVkXHgxOVx4ZDdceDFhIgorICAgIGIiJ2tceGQ3XHhkOVx4YzVcXFlceGQxXHhkY1x4MDdceDE1fHdceGJjXHhhY2RceDg3XHgwOGRceGVjXHhhN1x4ZjZceDgyIgorICAgIGIiXHhmY1x4YjNceDkzXHhlYlx4YjkgXHg4ZFx4YmMgLFx4YjNYXHhiMFx4ZDJzXHhkN1x4ZDFceGZmdlx4MDVceGRmfVx4YTIiCisgICAgYiJceDk2XHhmYiVcblx4ZGZceGEyXHg3Zlx4MDguXHhhMTZcblx4ZTBceDE5XHg5M1x4N2ZoXG5ceDFjXHg4Y1x4MGYgXHgxMSIKKyAgICBiIlx4YzZCbFx4OTVceDE5VX1ceGU0c1x4YjVceDEwSFx4ZWFceDg2cEJceGU4OFx4OTVceGJlXHg4Y1pceGRiXHhlNFx4OTRBIgorICAgIGIiXHg5Mlx4Yjk7elx4YWFceGE3e1x4MWM1IVx4YzBceGFmXHhjMUFceGY5XHhkYVx4ZjAkXHhiMFx4MDJxZ1x4YzhceGM3L3wiCisgICAgYiJceGFmclx4OTleXHg5MVx4ODhceGJmXHgwM1x4ZDk9XHhkN25ceGRhNns+OFxuXHhjNzpceGE5J1x4YmEuXHgwYlx4ZTIiCisgICAgYiJceGI1XHgxZFx4MGVcblx4OWFceDhlXHgwNlx4OGY6XHhkZFx4ODInW1x4YzNcIndEJFx4YTd3XHhlY3FceDhjLDFceDkzIgorICAgIGIiXHhkMCxceGFlMndceDkzXHgxMiRKZFx4MTltZ1x4MDJceDkzXHg5Y0FceDk1XHg5ZCZceGNhOGlceDljXHhiMDtceGU3TlEiCisgICAgYiJceDFmcmhceDhiZUw7XHhiMG1ceGVlXHgwN1FceDliXHhjNlx4ZDhceDAzXHhiNVx4ZGVOXHhkNFx4ZmVceDk4XHhkMFx4ZGMiCisgICAgYiJceDFhW1x4MDRceGRlXHgxYVx4ZjZceDkxalx4ZjhFT2xpXHg4ZUJeXHgxZFx4ODJceDA3XHhiMlx4YjVSXVx4YjdceGQ3IgorICAgIGIiXHhlOVx4YTZceGMzLlx4ZmJceGYwLVx4YjRlXHg5Ylx4ZGVceDAzXHg4OFx4YzZceGMxaU5ceDBlXHg4NHdiUVx4ZGZ+IgorICAgIGIiXHhlOVx4YTRceDg4NFx4OTZrTVx4YmMpVFx4ZjNceDg5XHg5N1x4MGZceDE0M1x4ZTcpXHhhMFx4YjNCXHgwMFx4YThceGFmIgorICAgIGIiXHg4Ml5ceGNiXHhjNy4uXHhkYlx4YzdcdFx4OWRIXHhlZTVceGU5I1x4ZTZOVlx4OTRceGNiJEtrXHhlM1x4N2Zcclx4ZTN0IgorICAgIGIiXHgxMlx4Y2YnXHhlZlJceDhiXHhmNDJceGNmLUxIXHhhY1x4ZTVceDFmMH4/U09ceGViXHhjMUVceDFhXHgxY11ceGYyIgorICAgIGIiXHhjNDxceDExXHgwMlx4MTBaMGEqP1x4ZTRyXHhmZlx4ZmJceGZmXHhmNlx4MTRuR1x4ZWFkXlx4ZDZceGVmOFx4YjZ1RUkiCisgICAgYiJceDk5XG5WXHhlMlx4YjNceDk1XHg4ZVx4ODNceGY2aSFceGI1JjFGXHhiMURQXHhmNCBTTzNEIXdceDk5X0dceDdmK1x4OTAiCisgICAgYiIuXHhhYlx4YmJdXHg5MT5ceGM5I2g7XHgwZjVKXHg5MUtceGY0Xi1bXHg5ZVx4OGFcXFx4OTRceGNhXHhhZlx4ZjZceDE5IgorICAgIGIiXHhkNFx4YTFceDliXHhjNFx4YjhwXHhhMVx4YWVceDE1XHhlOXJceDg0XHhlMFx4Y2FyLmwgW11ceDhiXHhhZiswXHhmMmciCisgICAgYiJceDAxYUtZXHhkZklceGNmLFxuXHhlOFx4ZjBceGU3Vlx4ODBfI1x4YjJceGYyXHhhOVx4MDZceDhjPndceGUyVyxceGY0IgorICAgIGIiXHg4Y1xyXHhmOTYzXHhmNUpceGNjMlx4MDU9a1RceGVhVXRpXHhlNV9ceGNlXHgxYlx4ZmFceDhkbFx4MDJoXHhlZlx4YTgiCisgICAgYiJceGZiZlx4N2ZceGZmXHhmMFx4MTlceGVheCIKKykKKworRklMVEVSU19SQVdfMSA9IFt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiAzfV0KK0NPTVBSRVNTRURfUkFXXzEgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhmZF1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5NmN5cVx4YTFceGRkXHhlZSIKKyAgICBiIlx4ZjhceGZhbVx4ZTMnXHg4OFx4ZDNceGZmXHhlNFx4OWUgXHhjZVFceDkxXHhhNFx4MTRJXHhmNlx4YjlceDlkVkw4XHgxNSIKKyAgICBiIl9ceDBlXHgxMlx4YzNceGViXHhiY1x4YTVceGNkXG5XXHgxZCQ9UjtceDFkXHhmOGs4XHRceGIxe1x4ZDRceGM1K1x4OWQiCisgICAgYiJceDg3Y1x4ZTVceGVmXHg5OFx4YjRceGQ3UzNceGNkXHhjY1x4ZDJceGVkXHhhNFx4MGVtXHhlNVx4ZjRceGRkXHhkMGIiCisgICAgYiJceGJlNCpceGFhXHgwYlx4YzVceDA4XHgxMFx4ODUrXHg4MS5ceDE3XHhhZjlceGM5Ylx4ZWFackFceGUyMFx4N2ZzXCJyIgorICAgIGIiXHhkYUdceDgxXHhkZVx4OTBjdVx4YTVceGRiXHhhOS5BXHgwOGxceGIwPFx4ZjZceDAzXHhkZE9pXHhkMFx4YzVceGI0IgorICAgIGIiXHhlY1x4ZWNnNHQ2XCJceGE2XHhiOG9ceGI1P1x4MThefVx4YjZ9XHgwM1s6XHhlYlx4MDNceGE5XG5bXHg4OWxceDE5ZyIKKyAgICBiIlx4MTZceGM4Mlx4ZWRceDBiXHhmYlx4ODZuXHhhMlx4ODU3QFx4OTNceGNkNlRceGMzdVx4YjBcdFx4ZjlceDFiXHg5MTgiCisgICAgYiJceGZjW1x4MWJceDFlNFx4YjNceDE0XHgwNlBDVlx4YThcIlx4ZjVceDgxeH5ceGU5XHhiNU5ceDljS1x4OWZceGM2XHhjMyUiCisgICAgYiJceGM4azp7Nlx4ZTdceGY3XHhiZFx4MDVceDAyXHhiNFx4YzRceGMzXHhkM1x4ZmRceGMzXHhhOFxcXHhmY0BceGIxRl8iCisgICAgYiJceGM4XHg5MFx4ZDlzVVx4OThceGFkOFx4MDVceDA3XHhkZTdKXHg4Yk1ceGQwXHhiMztYXHhlY1x4ODdceGVmXHhhZVx4YjMiCisgICAgYiJlTyxceGIxeixkXHgxMXlceGVlamxCXHgwMlx4MWRceGYyOFx4MWYjXHg4OTZceGNlXHgwYlx4ZjBceGY1XHhhOVBLXHgwZiIKKyAgICBiIlx4YjNceDEzUFx4ZDhceDg4XHhkMlx4YTFceDA4XHgwNEM/XHhkYlx4OTRfXHg5YVwiXHhlOVx4ZTNlXHgxZFx4ZGVceDliIgorICAgIGIiXHhhMVx4ZTg+SFx4OThceDEwO1x4YzVceDAzI1x4YjVceDlkNFx4MDFceGU3XHhjNVx4YmEldlx4YTQ5XHg5N0FceGUwXCIiCisgICAgYiJceDhjXHhjMjJceGUzaVx4YzFceDlkXHhhYjNceGRmXHhiZVx4ZmREbTdceDFiXHg5ZFx4YWJceGI1XHgxNW86Slx4OTIiCisgICAgYiJceGRiXHg4MTZceDE3XHhjMk9ceDk5XHgxYlx4MGVceDhkXHhmM1x0UVx4ZWRceDhlXHg5NVMvXHgxNk1ceGIyU1x4MDQiCisgICAgYiJceDBmXHhjM0pceGM2XHhjN1x4ZTRceGNiXHhjNVx4ZjRceGU3ZFx4MTRceGU0PV5CXHhmYlx4ZDNFXHhkM1x4MWVceGNkIgorICAgIGIiXHg5MVx4YTVceGQwR1x4OGYuXHhmNlx4ZjlceDBiYiZceGQ5XHg5Zlx4YzJceGZkalx4YTJceDllXHhjNFxcXHgwZVx4MWRDIgorICAgIGIidlx4ZThceGQyXHg4YT9eSFx4ZWNceGFlXHhlYj5ceGZlXHhiOFx4YWJceGQ0SXFZXHg4Y1x4ZDRLN1x4MTFceGY0RFx4ZDBXIgorICAgIGIiXHhhNVx4YmVceGVhT1x4YmZceGQwXHgwNFx4ZmRsXHgxMFx4YWU1XHhkNFVceDE5XHgwNlx4Zjl7XHhhYVx4ZTBceDgxIgorICAgIGIiXHgwZlx4Y2ZceGEza3tceDk1XHhiZFx4MTlceGEyXHhmOFx4ZTRceGEzXHgwOE8qXHhmMVx4ZjFCLVx4YzcoXHgwZVJceGZkIgorICAgIGIiQEVceDlmXHhkM1x4MWU6XHhmZFZceGI3XHgwNFlceDk0XHhlYl1ceDgzXHhjNFx4YTVceGQ3XHhjMGdYXHg5OFx4Y2ZceDBmIgorICAgIGIiXHhjZDNceDAwXW5ceDE3XHhlY1x4YmRceGEzWVx4ODZceGM1XHhmM3VceGY2Klx4YmRUXHhlZEEkQVx4ZDlBXHhlN1x4OTgiCisgICAgYiJceGVmXHgxNFx4MDJceDlhXHhmZGl3XHhlY1x4YTBceDg3XHgxMVx4ZDklXHhjNVx4ZWJceDhhPVx4YWVceGMwXHhjNFx4YzYiCisgICAgYiJEXHg4MFx4OGZceGE4XHhkMVx4YmJxXHhiMlx4YzBceGEwXHhmNUNxcFx4ZWVMXHhlM1x4ZTVceGRjIFx4ODRcIlx4ZTkiCisgICAgYiJceDgwdFx4ODNceDA1XHhiYVx4ZjFceGM1flx4OTNceGM5XHhmMFx4MDFjXHhjZWl4XHg5ZFx4ZWRceGM1KWxceDE2KVx4ZDEiCisgICAgYiJceDAzQGxceDA0XHg3Zlx4ODdceGE1eW5ceDFiXHgwMURceGFhOlx4ZDJceDk2XHhiNFx4YjM/XHhiMFx4ZjlceGNlXHgwNyIKKyAgICBiIlx4ZWJceDgxXHgwMFx4ZTRceGMzXHhmNSVfXHhhZVx4ZDRceGY5XHhlYlx4ZTJccmhceGIyI1x4ZDY3UVx4MTZEXHg4MmhuIgorICAgIGIiXHhkMVx4YTNfP3FceGYwXHhlMlx4YWNceGYzMTdceDllXHhkMF9ceDgzfFx4ZjFceGNhXHhiN1x4OTVTXHhhYldceDEyIgorICAgIGIiXHhmZlx4ZGR0XHhmNjlMXHgwMVx4ZjJ8XHhkYVdceGRhXHhlZXNceDk4TFx4MThceGI4X1x4ZTgkXHg4Mlx4ZWFceGQ2IgorICAgIGIiXHhkMUZceGQ0XHgwYlx4Y2RrXHgwMXZmXHg4OGhceGMzXHhhZVx4YjkxXHhjN1FceDlmXHhhNUdceGQ5XHhjY1x4MWZceGUzIgorICAgIGIiNVx4YjFceGRjeVx4N2ZJXHg4YmN3XHg4ZVx4MTBySXBceDAyOlx4MTlwX1x4Yzh2XHhjZWFcIlx4YzFceGQ5XHg5MVx4MDMiCisgICAgYiJceGJmZVx4YmVceGE2XHhiM1x4YThceDE0XHgxOFx4YzNceGFiSCptfVx4YzJceGMxXHg5YX0+bCVceGNlXHg4NFx4OTkiCisgICAgYiJceGIzZFx4YWZceGQzXHg4Mlx4MTVceGRmXHhjMVx4ZmM1Zk9nXHg5Ylx4ZmNceDhlXiZcdEBceGNlXHg5Zlx4MDZKXHhiOCIKKyAgICBiIlx4YjVceDg2XHgxZFx4ZGF7XHg5Zlx4YWVceGIwXHhmZlx4MDJceDgxclx4OTJ6XHg4Y01ceGI3aG9ceGM5Xlx4OWNceGI2IgorICAgIGIiXHg5Y1x4YWVceGQxXHhjOVx4ZjRceGRmVTdceGQ2XFwhXHhlYVx4MGJceDk0a1x4YjlVZH5ceDk4XHhlN1x4ODZceDhheiIKKyAgICBiIlx4MTA7XHhlM1x4MWRceGU1UEdceGY4XHhhNFx4MTJceDA1d1x4OTheXHhjNFx4YjFceGJiXHhmYlx4Y2ZceGUwXHg3ZiIKKyAgICBiIlx4MDMzU2ZceDBjIFx4YjFceGY2QFx4OTRceGU1XHhhM1x4YjJceGE3XHgxMFx4OWFceGMwXHgxNFx4YzNzXHhiNXhSRCIKKyAgICBiIlx4ZjRgV1x4ZDlceGU1XHhkM1x4Y2ZceDkxXHJUWi1YXHhiZVx4YmZceGI1XHhlMlx4ZWV8XHgxYVx4YmZceGZiXHgwOCIKKyAgICBiIlx4OTFceGUxXHhmY1x4OWFceDE4XHhhM1x4OGJceGQ2Xlx4ODlceGY1W1x4ZWZceDg3XHhkMVx4MDZceDFjN1x4ZDZceGEyIgorICAgIGIiXHRcdFE1L0BTXHhjMDVceGQyVmhBS1x4MDNWQ1xyXHg5Ylx4OTNceGQ2TVx4ZjF4T1x4YWFPXHhlZFx4Yjk8XHgwY1x4ZGFlIgorICAgIGIiKlx4ZDBceDA3SGs2XHg5ZkcrXHhhMSlceGNkXHg5Y2xceDg3XHhkYlx4ZTFceGU3XHhlZkt9XHg4NzVceGFiXHhhMFx4MTl1IgorICAgIGIiXHhmNipGXHhiMzJceDAwXHgwMFx4MDAiCispCisKK0ZJTFRFUlNfUkFXXzIgPSBbeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDJ9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsCisgICAgICAgICAgICAgICAgICAicHJlc2V0IjogbHptYS5QUkVTRVRfREVGQVVMVCB8IGx6bWEuUFJFU0VUX0VYVFJFTUV9XQorQ09NUFJFU1NFRF9SQVdfMiA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDVceDkxXVx4MDBceDA1XHgxNFx4MDYtXHhkNFx4YThkP1x4ZWZceGJlXHhhZkhceGVlXHgwNDIiCisgICAgYiJceGNiLlx4YjVnXHg4Zlx4ZmJceDE0XHhhYlx4YTVceDlmXHgwMjV6XHhhNFx4ZGRceGQ4XHRbfVdceGY4XHgwY1x4MWRtSCIKKyAgICBiIlx4ZmFceDA1XHhmY2dceGJhXHhlNVx4MDFRXHgwYlx4ODNSXHhiNkFceDg4NVx4YzBceGJhXHhlZVxuXHgxY3Z+XHhkZTpvIgorICAgIGIiXHgwNjpKXHhhN1x4MTFDY1x4ZWFceGY3XHhlNSpvXHhmN1x4ODNcXGxceGJkRVx4MTlceDFmXHJceGE4XHgxMFx4YjQyIgorICAgIGIiXHgwY2FVe1x4ZDdceGI4d1x4ZGNceGJlXHgxYlx4ZmM4XHhiNFx4Y2NceGQzOFxcXHhmNlx4MTNceGY2XHhlN1x4OThceGZhIgorICAgIGIiXHhjN1tceDE3XzlceDg2JVx4YThceGY4XHhhYVx4YjhceDhkZnMjXHgxZT1ceGVkPFx4OTJceDEwXFx0XHhmZlx4ODZceGZiIgorICAgIGIiPVx4OWU3XHgxOFx4MWRmdFxcXHhiNVx4MDFceDk1UVx4YzVceDE5XHhiMzhceGUwXHhkNFx4YWFceDA3XHhjM1x4N2ZceGQ4IgorICAgIGIiXHhhMlx4MDA+LVx4ZDNceDhlXHhhMSNceGZhXHg4M0FyQW1ceGRiSn5ceDkzXHhhM0JceDgyXHhlMFx4YzdceGNjKFx4MDhgIgorICAgIGIiV0tceGFkXHgxYlx4OTRrYWpceDA0IFx4ZGVceGZjXHhlMVx4ZWRceGIwXHg4Mlx4OTFceGVmU1x4ODQlXHg4Nlx4ZmJpIgorICAgIGIiXHg5OVhceGYxQlx4ZTdceDkwO0VceGZkZVx4OThceGRhXHhjYVx4ZDZUXHhiNGJnXHhhNFxuXHg5YWpceGQxXHg4M1x4OWVdIgorICAgIGIiXCJceDdmTVx4YjVceDBmclx4ZDJcXFx4YTVqflBceDEwR0hceGJmTipaXHgxMC5ceDgxXHRwRVx4OGFceDA4XHhiZTFceGJkIgorICAgIGIiXHhjZFx4YTlceGUxXHg4ZFx4MWZceDA0XHhmOVx4MGVIXHhiOVx4YWVceGQ2XHhjM1x4YzFceGE1XHhhOVx4OTVQXHhkY34iCisgICAgYiJceGZmXHgwMVx4OTMwXHhhOVx4MDRceGY2XHgwM1x4ZmVceGI1SktceGMzXVx4ZGQ5XHhiMVx4ZDNceGQ3Rlx4ZjVceGQxIgorICAgIGIiXHgxZVx4YTBceDFjX1x4ZWRbXHgwY1x4YWVceGQ0XHg4Ylx4OTQ2XHhlYlx4YmZceGJiXHhlMyRrU3tceGI1XHg4MCxmOlNqIgorICAgIGIiXHgwZlx4MDh6XHgxY1x4ZjVceGU4XHhlNlx4YWVceDk4XHhiMFF+clx4MGZceGIwXHgwNT9ceGI2XHg5MFx4MTlceDAyJiIKKyAgICBiIlx4Y2JceDgwXHRceGM0XHhlYVx4OWN8eFx4Y2VceDEwXHg5Y1x4YzV8XHhjYmRoaCtceDBjJ1x4YzVceDgxXHhjMzNceGI1IgorICAgIGIiXHgxNHFceGQ2XHhjNVx4ZTNgWiNceGRjXHg4YVx4YWJceGRkXHhlYVx4MDhceGMySVx4ZTdceDAybHtceGVjXHgxOTZceDA2IgorICAgIGIiXHg5MVx4OGRceGRjXHhkNVx4YjN4XHhlMWh6JVx4ZDFceGY4XHhhNVx4ZGRceDk4IVx4OGNceDFjXHhjMVx4MTdSVWFceGJiIgorICAgIGIiXHg5NVx4MGZceGU0WFx4ZWExXHgwY1x4ZjE9Ulx4YmVceGM2MFx4ZTNceGE0XHg5YVx4OTBiZFx4OTckXUJceDAxXHhkZCIKKyAgICBiIlx4MWZceGUzaDJjXHgxZVx4YTBMYDRceGM2eFx4YTNaXHg4YVxyXHgxNF1UXlx4ZDhceDg5XHgxYlx4OTJccjtceGVkWSIKKyAgICBiIlx4MGNceGVmXHg4ZDl6XHhmM29ceGI2KWZceGE5XSRuXHJwXHg5M1x4ZDBceDEwXHhhNFx4MDhceGI4XHhiMlx4OGJceGI2IgorICAgIGIiXHg4Zlx4ODBceGFlO1x4ZGNRXHhmMVx4ZmFceDlhXHgwNlx4OGVceGE1XHgwZVx4OGNLXHg5YyBAXHhhYTpVY1hcbiFceGM2IgorICAgIGIiXHgwMlx4MTJceGNiXHgxYlwiPVx4MTYuXHgxZlx4MTc2XHhmMmc9XHhlMVduXHhlOVx4ZTFceGQ0XHhmMU9ceGFkXHgxNSIKKyAgICBiIlx4ODZceGU5XHhhM1RceGFmXHhhOVx4ZDdEXHhiNVx4ZDFXM3BudFx4MTFceGM3Vk9qXHhiN01ceGM0aVx4YTFceGYxJDMiCisgICAgYiJceGJiXHhkY1x4OGFmXHhiMFx4YzVZXHJceGQxXHhmYlx4ZjJceGU3S1x4ZTZceGM1aHdPXHhmZVx4OGMyXiZceDA3XHhkNSIKKyAgICBiIlx4MWZWXHgxOVx4ZmRcclx4MTRceGQyaT15Wlx4ZTZvXHhhZlx4YzZceGI2XHg5Mlx4OWRceGM0XHJceGIzXHhhZndceGFjJSIKKyAgICBiIlx4Y2ZjXHgxYVx4ZjFgXVx4ZjJceDFhXHg5ZVx4ODA4XHhlZG1ceGVkUVx4YjJceGZlXHhlNGhgW3FceGFlXHhlMFx4MGYiCisgICAgYiJceGJhMGdceGI2XCJOXHhjM1x4ZmJceGNmUlx4MTFceGM1XHgxOCkoXHhjNDBcXFx4YTNceDAyXHhkOUchXHhjZVx4MWIiCisgICAgYiJceGMxXHg5NnhceGI1XHhjOHpceDFmXHgwMVx4YjRceGFmXHhkZVx4YzJceGNkXHgwN1x4ZTdIXHhiM3lceGE4TVxuXFxBXHQiCisgICAgYiJhclx4ZGRNXHg4Ylx4OWFceGVhXHg4NFx4OWIhXHhmMVx4OGRceGIxXHhmMX5ceDFlXHJceGE1SFx4YmFceGYxXHg4NG8iCisgICAgYiJceGRhXHg4N1x4MDFoXHhlOVx4YTJceGJlXHhiZXFOXHg5ZFx4ODRceDBiIVdHXHhkYVx4YTFceGE1QVx4YjdceGM3YGoiCisgICAgYiJceDE1XHhmMlx4ZTlceGRkP1x4MDE1Qlx4ZDJ+RVx4MDZceDExXHhlMFx4OTEhXHgwNV5ceDgwXHhkZFx4YTh5XHgxNX0iCisgICAgYiJceGExKVx4YjEpXHg4MVx4MThceGY0XHhmNFx4ZjhceGMwXHhlZkRceGUzXHhkYjJmXHgxZVx4MTJceGFidVx4YzlceDk3IgorICAgIGIiXHhjZFx4MWVceGE3XHgwY1x4MDJ4NF82XHgwM1x4YzQkdFx4ZjM5XHg5NFx4MWQ9XHhjYlx4YmZ2XFxceGY1XHhhM1x4MWQiCisgICAgYiJceDlkOGprXHg5NVx4MTMpZmZceGY5blx4YzRceGE5XHhlM1x4MDFceGI4XHhkYVx4ZmJceGFiXHhkZk1ceDk5XHhmYlx4MDUiCisgICAgYiJceGUwXHhlOVx4YjBJXHhmNEVceGFiXHhlMlx4MTVceGEzXHgwMzVceGU3XHhkZVRceGVlXHg4MnBceGI0XHg4OFx4ZDMiCisgICAgYiJceDg5M1x4OWMvXHhjMFx4ZDZceDhmb3U7XHhmNlx4OTVQUlx4YTlceGIyXHhjMVx4ZWZGalx4ZTJceGE3JFx4ZjdoXHhmMSIKKyAgICBiIlx4ZGZLKFx4YzljXHhiYTdceGU4XHhlMylceGRkXHhiMixceDgzXHhmYlx4ODRceDE4LnlceDE4UWlceDg4XHhmOGBoLSIKKyAgICBiIlx4ZWZceGQ1XHhlZFx4OGNcdFx4ZDhceGMzXlx4MGZceDAwXHhiN1x4ZDBbIVx4YWZNXHg5Ylx4ZDcuXHgwN1x4ZDhceGZiIgorICAgIGIiXHhkOVx4ZTItUytceGFhOCxceGEwXHgwM1x4MWIgXHhlYVx4YThceDAwXHhjM1x4YWJ+XHhkMCRlXHhhNVx4N2ZceGY3IgorICAgIGIiXHg5NVBdXHgxMlx4MTlpXHhkOVx4N2ZvXHgwY1x4ZDhnXlxyRVx4YTVceDgwXHgxOFx4YzVceDAxXHg4MFx4YWVrYFx4ZmZ+IgorICAgIGIiXHhiNnlceGU3K1x4ZTVceDExXkRceGE3XHg4NVx4MThcIiFceGQ2XHhkMlx4YTdceGY0XHgxZVRceGRiXHgwMlx4ZTE1IgorICAgIGIiXHgwMllceGJjXHgxNzRaXHhlN1x4OWNIXHgxY1x4YmZceDBmXHhjNlx4ZTlmXVx4Y2ZceDhjeFx4YmNceGU1XHgxNVx4OTQiCisgICAgYiJceGZjM1x4YmNceGE3VFVIXHhmMVx4ODRceDFiXHhmN1x4YTl5XHhjMDdceDg0XHhmOFhceGQ4XHhlZlx4ZmMgXHgxY1x4ZDgiCisgICAgYiIoIC9ceGYyXHhiN1x4ZWNceGMxXFxceDhjXHhmNlx4OTVceGExXHgwM0pceDgzdlA4XHhlMVx4ZTNceGJiflx4YzI0a0EiCisgICAgYiJceDk4eVx4YTFceGYyUFx4ZTlceDlkXHhjOUpceGY4Tlx4OTlceGI0XHhjZWFPXHhkZVx4MTZceDFlXHhjMlx4MTlceGE3IgorICAgIGIiXHgwM1x4ZDJceGUwXHg4ZjpceDE1XHhmM1x4ODRceDllXHhlZVx4ZTZlXHhiOFx4MDJxXHhjN0FDXHgxZW13XHhmZFx0IgorICAgIGIiXHg5YVx4MWV1XHhjMVx4YTlceGNhQ3dVUFx4MDBceGE1XHhmNzhMNHchXHg5MUwyIFx4ODdceGQwXHhmMlx4MDZceDgxaiIKKyAgICBiIlx4ODA7XHgwM1ZceDA2XHg4N1x4OTJceGNiXHg5MGx2QEVceDhkXHg4ZFx4YTVceGE2XHhlN1pbXHhkZlx4ZDZFXHgwM2A+IgorICAgIGIiXHg4Zlx4ZGVceGExYlpceDg0XHhkMFx4YTlgXHgwNVx4MGV7XHg4MDtceGUzXHhiZWZceDhkXHgxZFx4ZWJrMS5ceGUzIgorICAgIGIiXHhlOU5ceDE1XHhmN1x4ZDQoXHhmYVx4YmJceDE1XHhiZHVceGY3XHg3Zlx4ODZceGFlIVx4MDNMXHgxZFx4YjVceGMxIgorICAgIGIiXHhiOVx4MTFceGRiXHhkMFx4OTNceGU0XHgwMlx4ZTFceGQyXHhjYkJqY19ceGU4fWRceGRiXHhjM1x4YTBZXHhiZVx4YzkvIgorICAgIGIiXHg5NVx4MDFceGEzLFx4ZTZibEBceDAxXHhkYnBceGMyXHhjZVx4MTRceDE2OFx4YzJxXHhlM3VIXHg4OVhceGE0XHhhOSIKKyAgICBiIlx4MTlceDFkXHhjMX1ceDdmT1hceDE5XHg5Zlx4ZGRceGJlXHg4NVx4ODNceGZmXHg5Nlx4MWVlXHg4Mk9gQ0Y9S1x4ZWIkSSIKKyAgICBiIlx4MTdfXHhlZlhceDhiSid2XHhkZVx4MWYrXHhkOS52XHhmOFR2XHgxN1x4ZjJceDlmNVx4MTlceGUxXHhiOVx4OTFceGE4UyIKKyAgICBiIlx4ODZceGJkXHgxYVwiKFx4YTV4XHg4ZENceDAzWFx4ODFceDkxXHhhOFx4MTFceGM0cFNceDEzXHhiY1x4ZjInSlx4YWUhIgorICAgIGIiXHhlZlx4ZWZceDg0R1x0XHg4ZFx4YzRceDEwXHgxMzJceDAwb1NceDllXHhlMFx4ZTRkXHg4Zlx4Yjh5XHhhY1x4YTZceDlmIgorICAgIGIiLFx4YjhmXHg4N1xyXHhkZlx4OWVFXHgwZlx4ZTFceGQwXFxMXHgwMFx4YjJceGUxaFx4ODRceGVmfVx4OThceGE4XHgxMSIKKyAgICBiIlx4Y2NXI1xcXHg4M1x4N2ZvXHhiYnpceDhmXHgwMCIKKykKKworRklMVEVSU19SQVdfMyA9IFt7ImlkIjogbHptYS5GSUxURVJfSUE2NCwgInN0YXJ0X29mZnNldCI6IDB4MTAwfSwKKyAgICAgICAgICAgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0KK0NPTVBSRVNTRURfUkFXXzMgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhkZl1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5OFx4MTVceGU0XHhiNFx4OWQiCisgICAgYiJvXHgxZFx4YzRceGU1XG5ceDAzXHhjYzJoXHhjN1xcXHg4Nlx4ZmZceGY4XHhlMlx4ZmNceGU3XHhkOVx4ZmU2XHhiOCgiCisgICAgYiJceGE4d2RceGMyXCJ1Lm5ceDFlXHhjM1x4ZjJceDhlXHg4ZFx4OGZceDAyXHgxNy9ceGE2PVx4ZjBceGEyXHhkZi9NXHg4OSIKKyAgICBiIlx4YmVceGRlXHhhN1x4MWN6XHgxOC1dXHhkNVx4ZWZceDEzXHg4ZnJaXHgxNVx4ODBceDhjXHhmOFx4OGRvXHhmYVx4MTIiCisgICAgYiJceDliI3ovXHhlZlx4ZjBceGZhRlx4MDFceDgyXHhhM01ceDhlXHhhMXRceGNhNiBCRiRceGU1UVx4YTRceDk4XHhlZVx4ZGUiCisgICAgYiJsXHhlOFx4N2ZceGYwXHg5ZCxiblx4MGJceDEzXHhkNFx4YThceDgxXHhlNE5ceGM4XHg4Nlx4MTUzXHhmNXgyXHhhMk8iCisgICAgYiJceDEzQFFceGExXHgwMC9ceGE1XHhkME9ceDk3XHhkY29ceGFlXHhmN3pceGM0XHhjZFNceGI2dDxceDE2XHhmMlx4OWNJIyIKKyAgICBiIlx4ODl1ZFx4YzY2WVx4ZDlceGVlXHhlNlx4Y2VceDEyXVx4ZTVceGYwXHhhYVx4OTYtUGVceGFkZTpceDA0XHRceDFiXHhmNyIKKyAgICBiIlx4ZGI3XG5ceDg2XHgxZnBceGM4Slx4YmFceGY0XHhmMFZceGE5XHhkY1x4ZjBceDAyJUdceGY5XHhkZj0/XHgxNVx4MWIiCisgICAgYiJceGUxKFx4Y2VceDgyPVx4ZDZJXHhhYzNceDEyXHgwY1JceGI3XHhhZVxyXHhiMWlceDAzXHg5NVx4MDFceGJkXHhiZVx4ZmEiCisgICAgYiJceDAyc1x4MDFQXHg5ZFx4OTZYXHhiMTJqXHhjOExceGE4XHg4NGJceGY2XHhjM1x4ZDRjLUhceDkzb0psXHhkMGlRXHhlNGsiCisgICAgYiJceDg0XHgwYlx4YzFceGI3XHhiY1x4YjFceDE3XHg4OFx4YjFceGNhP0BceGY2XHgwN1x4ZWFceGU2eFx4ZjFIMTJQXHgwZiIKKyAgICBiIlx4OGFceGM5XHhlYXV3XHhlM1x4YmVceGFhaVx4YTlXXHhkMFx4ODBceGNkI2NiNVx4OTlceGQ4XVx4YTlkXHgwY1x4YmQiCisgICAgYiJceGEyXHhkY1dsXHhlZFVHXHhiZlx4ODl5Rlx4Zjc3XHg4MXZceGJkNVx4OThceGJlaDhceDE4V1x4MDhceGYwXHgxYlx4OTkiCisgICAgYiI1Olx4MWE/ckRceDk2XHhhMVx4MDRceDBmXHhhZVx4YmFceDg1XHhlYlx4OWQ1QFx4ZjVceDgzXHhkMzdceDgzXHg4YWMiCisgICAgYiJceDA2XHhkNFx4OTdpXHhjZHRceDE2U1x4ODJrXHhmNktceDAxdnlceDg4XHg5MVx4OWI2VFx4ZGFlXHJceGZkXTprXHhiYWwiCisgICAgYiJceGE5XHhiYmFceGMzNFx4ZjlyXHhlYn1yXHhkYlx4YzdceGRiKlx4OGZceDAzelx4ZGM4aFx4Y2NceGM5XHhkM1x4YmNsIgorICAgIGIiXHhhNS1ceGNiXHhlYUtceGEyXHhjNVx4MTVceGMwXHhlM1x4YzFceDg2Wlx4ZmJceGViTFx4ZTEzXHhjZlx4OWNceGUzIgorICAgIGIiXHgxZFx4YzlceGVkXHhjMlx4MDZceGNjXHhjZSFceDkyXHhlNVx4ZmVceDljXlx4YTU5dyBceDliUFx4YTNQS1x4MDhkIgorICAgIGIiXHhmOVx4ZTJafVx4YTdceGJmXHhlZFx4ZWIlJFx4MGNceDgyXHhiOC9ceGIwXHgwMVx4YTkmLFx4ZjdxaHtRXHg5NilceGYyIgorICAgIGIicVx4OTZceGMzXHg4MFx4YjRceDEyXHhiMFx4YmFceGU2b1x4ZjQhXHhiNFtceGQ0XHg4YXdceDEwXHhmN3RceDBjXHhiMyIKKyAgICBiIlx4ZDlceGQ1XHhjM2BeXHg4MVx4MTE/P1xcXHhhNFx4OTlceDg1Ulx4ZDRceDhlXHg4M1x4YzlceDFlWFx4YmZhXHhmMSIKKyAgICBiIlx4YWNceGIwXHhlYVx4ZWFceGQ3XHhkMFx4YWJceDE4XHhlMlx4ZjJceGVkXHhlMVx4YjdceGM5XHgxOFx4Y2JTXHhlND4iCisgICAgYiJceGM5XHg5NUhceGU4XHhjYlx0XHIlXHhlYlx4YzckLm9ceGYxXHhmM1JceDE3XHgxZGJceGJiXHhkOFVceGE1Xlx4Y2NTIgorICAgIGIiXHgxNlx4MDFceDg3XHhmMy9ceDkzXHhkMVx4ZjB2XHhjMHJceGQ3XHhjY1x4YTJHa3pceGNhXHg4MFx4MGVceGZkXHhkMCIKKyAgICBiIlx4OGJceGJiXHhkMkl4XHhiM1x4MWV5XHhjYS0wXHhlM3peXHhkNlx4ZDZceDhmX1x4ZjFceDlkUFx4OWZpXHhhN1x4ZDEiCisgICAgYiJceGU4XHg5MFx4ODRceGRjXHhiZlx4Y2RreVx4OGVceGRjXHg4MVx4N2ZceGEzXHhiMitceGJmXHgwNFx4ZWZceGQ4XFwiCisgICAgYiJceGM0XHhkZlx4ZTFceGIwXHgwMVx4ZTlceDkzXHhlM1lceGYxXHgxZFlceGU4aFx4ODFceGNmXHhmMXdceGNjXHhiNFx4ZWYiCisgICAgYiIgXHg4YnxceDA0XHhlYVx4ODNlalx4YmVceDFmXHhkNHpceDljYFx4ZDNceDFhXHg5MkFceDA2XHhlNVx4OGZceGE5XHgxMyIKKyAgICBiIlx0XHg5ZT1ceGZhXHgxY1x4ZTVfXHg5ZiV2XHgxYm9ceDExWk9ceGQ4XHhmNFx0XHhkZE1ceDE2LVx4MDRceGZjXHgxODxcIiIKKyAgICBiIkNNXHhkZGd+Ylx4ZjZceGVmXHg4ZVx4MGNceGQwXHhkZXxceGEwJ1x4OGFceDBjXHhkNnhceGFlIUpceGE2Rlx4ODhceDE1dSIKKyAgICBiIlx4MDA4XHgxN1x4YmM3eVx4YjNceGQ4dVx4YWNfXHg4NVx4OGRceGU3XHhjMUBceDljXHhlY3FjXHhhMyNceGFkXHhmMSIKKyAgICBiIlx4OTM1XHhiNSlfXHJceGVjM11ceDBmb101XHhkMG15XHgwN1x4OWJceGVlXHg4MVx4YjVceDBmXHhjZksrXHgwMFx4YzAiCisgICAgYiJceGU0Ylx4MTBceGU0XHgwY1x4MWEgXHg5Ylx4ZTBceDk3dFx4ZjZceGExXHg5ZVx4ODUwXHhiYVx4MGNceDlhXHg4ZFx4YzgiCisgICAgYiJceDhmXHgwN1x4ZDdceGFlXHhjOFx4ZjkraVx4ZGNceGI5a1x4YjA+Zlx4MTlceGI4XHJceGE4XHhmOFx4MWYkXHhhNXtwIgorICAgIGIiXHhjNlx4ODgwXHhjZVx4ZGJceGNmXHhjYV9ceDg2XHhhY1x4ODhoNlx4OGJaJSdceGQwXG5ceGJmXHgwZlx4OWNcIlx4YmEiCisgICAgYiJceGU1XHg4Nlx4OWZceDBmN1g9bU5YW1x4Y2NceDE5RlVceGM5XHg4NjBceGJjXHg5MGErKiBceGFlXyRceDAzXHgxZVx4ZDMiCisgICAgYiJceGNkX1x4YTBceDljXHhkZVx4YWY0NnFceGE1XHhjOVx4OTJceGQ3XHhjYVx4ZTNgXHg5ZFx4ODV9XHhiNFx4ZmZceGIzIgorICAgIGIiXHg4M1x4ZmJceGI2XHhjYVx4YWVgXHgwYndceDdmXHhmY1x4ZDhceGFjVmVceDE5XHhjOFx4MTdceDBiWlx4YWRceDg4IgorICAgIGIiXHhlYiNceDk3XHgwM1x4MTNceGIxZFx4MGZ7XHgwY1x4MDR3XHgwN1xyXHg5N1x4YmRceGQ2XHhjMVx4YzNCOlx4OTVceDA4IgorICAgIGIiXlx4MTBWXHhhZWFIXHgwMlx4ZDlceGUzXG5cXFx4MDFYXHhmNlx4OWNceDhhXHgwNnUjJVx4YmUqXHhhMVx4MTh2XHg4NSIKKyAgICBiIlx4ZWMhXHQ0XHgwMFx4MDBceDAwIgorKQorCitGSUxURVJTX1JBV180ID0gW3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImRpc3QiOiA0fSwKKyAgICAgICAgICAgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgInN0YXJ0X29mZnNldCI6IDB4NDB9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiA0LCAibGMiOiAyfV0KK0NPTVBSRVNTRURfUkFXXzQgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDA2XHgwZVxcXHgwMFx4MDVceDE0XHgwN2JXXHhhYWhceGRkXHgxMFx4ZGMnXHhkNlx4OTAsXHhjNnYiCisgICAgYiJKcSBceDE0bFx4YjdceDgzeEJceDBiXHg5N2Y9JmZ4XHhiYVxuPlRuXHhiZlx4OGZceGZiXHgxZEZceGNhXHhjM3ZfXHhjYT8iCisgICAgYiJceGZiVjxceDkyI1x4ZDR3XHhhNlx4OGFceGViXHhmNlx4MDNceGMwXHgwMVx4OTRceGQ4XHg5ZVx4MTNceDEyXHg5OFx4ZDEiCisgICAgYiIqXHhmYV1jXHhlOFx4MWV+XHhhZlx4YjVdRWdceGZiXHg5ZVx4MDFcIjhceGIyXHg5MFx4MDY9flx4ZTlceDkxV1x4Y2QiCisgICAgYiJceGVjRFx4MTJceGM3XHhmYVx4ZTFceDkxXHgwNlx4YzdceDk5XHhiOVx4ZTNceDkwMVx4ODdceDE5dVx4MGZceDg2OVx4ZmYiCisgICAgYiJceGMxXHhiMGh3fFx4YjBceGRjbFx4Y2NrXHhiMTZvN1x4ODVceGVle1lfYlx4YmZceGJjJFx4ZjM9XHg4ZFx4OGJ3XHhlNVoiCisgICAgYiJceDA4QFx4YzRrbUVceGFkXHhmYlx4ZjYqXHhkOFx4YWRceGExXHhmYlx4YzV7XHhkZWosKVx4MWVtQlx4MWY8XHhhZWNhIgorICAgIGIiXHg4MChceGVlXHgwNyBceGRmXHhlOVx4ZjhceGViXHgwZS1ceDk3XHg4Nlx4OTBjXHhmOVx4ZWEnQlx4ZjdgXHhkN1x4YjAiCisgICAgYiJceDkyXHhiZFx4YTBceDgyXVx4YmRceDBlXHgwZUJceDE5XHhkY1x4OTZceGM2XHgxOVx4ZDg2RFx4ZjBceGQ1XHg4MzEiCisgICAgYiJceDAzXHhiN1x4MWNceGY3JjVceDFhXHg4ZiBQWiZqXHhmOFx4OThceDFib1x4Y2NceDg2XHg5YlNceGQzXHhhNVx4Y2R1IgorICAgIGIiXHhmOSRceGNjXHg5N29ceGU1Vn5ceGZiXHg5N1x4YjVceDBiXHgxN1x4OWNceGZkeFdceDEwXHhmZXA0XHg4MFx4ZGFIRFkiCisgICAgYiJceGZhKVx4ZmV0XHhiNVwiXHhkNFx4ZDNGXHg4MVx4ZjRceDEzXHgxZlx4ZWNceGRmXHhhNVx4MTNceGZjXCJceDkxeFx4YjciCisgICAgYiJceDk5XHhjZVx4YzhceDkyXG5ceGViW1x4MTBsKllceGQ4XHhiMUBceDA2XHhjOG9ceDhkN3JceGVidVx4ZmQ1XHgwZVx4N2YiCisgICAgYiJceGYxJFV7XHR9XHgxZlFceGNmeE5ceDlkXHg5ZlhYXHhlOWBceDgzXHhjMVx4MDZceGY0XHg4N3YtZlx4MTFceGRiL1xcIgorICAgIGIiXHgwNlx4ZmZceGQ3KUJceGYzZ1x4MDZceDg4IzJceDFlQjI0NFx4N2Y0cVx0XHhjODkzP21QWFx4OTVceGE2YVx4ZmIpZCIKKyAgICBiIlx4OWJceGZjXHg5OFx4OWFqXHgwNFx4YWVceDliXHg5ZFx4MTl3XHhiYVx4ZjkyXHhmYUFceDExXFxceDE3XHg5N0MzXHhhNCIKKyAgICBiIlx4YmMhXHg4OFx4Y2RvW1x4ZWM6XHgwMzBceDkxLlx4ODVceGUwQFxcNFx4MTZceDEyXHg5ZFx4Y2FKdlx4OTdceGIwNCIKKyAgICBiIlx4YWNrXHhjYmtmXHhhM3NzXHhmY1x4MTZeXHg4Y2VceDg1YVx4YTU9Jlx4ZWNyXHhiM3BceGQxRVx4ZDVceDgweVx4YzciCisgICAgYiJceGRhXHhmNlx4ZmVrXHhiY1RceGJmSFx4ZWVceDE1b1x4YzVceDhjXHg4MzBceGVjXHgxZFx4MDFceGFlXHgwYy1lXFwiCisgICAgYiJceDkxXHg5MFx4OTRceGIyXHhmOFx4ODhceDkxXHhlOFx4MGJceGFlXHhhNz5ceDk4XHhmNlx4OWNrXHhkMlx4YzZceDA4IgorICAgIGIiXHhlNlx4YWJcdFx4OThceGYyIVx4YTBceDhjXlx4YWNxQVx4OTk8XHgxY0VHXHg5N1x4YzhceGYxXHhiNlx4YjlceDgyIgorICAgIGIiXHg4ZFx4ZjdceDA4c1x4OThhXHhmZlx4ZTNceGNjXHg5Mlx4MGVceGQyXHhiNlVceGQ3XHhkOVx4ODZceDdmYVx4ZTVceDFjIgorICAgIGIiXHg4ZFRHQFx0XHgxZVx4MGU3Klx4ZmNceGRlXHhiY102Tlx4ZjdceGYxXHg4NFx4OWVceDlmXHhjZlx4ZTlceDFlXHhiNSciCisgICAgYiJceGY0PFx4ZGZceDk5c3FceGQwXHg5ZFx4YmRceDk5XHgwYlx4YjQlcDRceGJme1x4YmJceDhhXHhkMlx4MGJceGJjPU0iCisgICAgYiJceDk0SDpceGY1XHhhOFx4ZDZceGE0XHhjOTBceGMyRFx4YjlceGQzXHhhOFx4YjBTXHg4NyBgXHhhMlx4ZWJceGYzV1x4Y2UiCisgICAgYiIgN1x4ZjlOI1xyXHhlNlx4YmVcdFx4OWRceGU3XHg4MTFceGY5XHgxMFx4YzFceGMyXHgxNFx4ZjZceGZjXHhjYmFceGI3IgorICAgIGIiXHhiMVx4N2ZceDk1bFx4ZTRcdGpBXHhlYzpceDEwXHhlNVx4ZmVceGMyXFw9RFx4ZTJceDBjXHgwYjNdXHhmN1x4YzFceGY3IgorICAgIGIiXHhiY2VaXHhiMUFceGVhXHgxNlx4ZTVceGZkZGdGUVx4ZWRceGFmXHgwNFx4YTNceGQzXHhmOFx4YTJxXHgxOUJceGQ0ciIKKyAgICBiIlx4YzVceDBjXHg5YVx4MTRceDk0XHhlYVx4OTFceGM0b1x4ZTRceGJiXHhiNFx4OTlceGY0QFx4ZDFceGU2XHgwY1x4ZTMiCisgICAgYiJceGM2ZFx4YTBRXG5ceGYyL1x4ZDhceGI4UzVceDhhXHgxODpceGI1Z1x4YWNceDk1RFx4Y2VceDE3XHgwN1x4ZDR6XHhkYSIKKyAgICBiIlx4OTBceGU2NVx4MDdceDE5SCFcdFx4ZmR1XHgxNlx4OGVceDBlUlx4MTlceGY0XHg4Y2xceDBjXHhmOVFceGYxXHg4MCIKKyAgICBiIlx4ZTNceGJmXHhkN09ceGY4XHg4Y1x4MThceDBiXHg5Y1x4ZjFceDFmYlx4ZTFcdFJceGIyXHhmMVx4ZTFBXHhlYSBceGNmLSIKKyAgICBiIklHRVx4ZjFceDE0XHg5OCRceDgzXHgxNVx4YzlceGQ4alx4YmZceDE5XHgwZlx4ZDVceGQxXHhhYVx4YjNceGYzXHhhNUkycyIKKyAgICBiIlx4OGRceDE0NVx4Y2FceGQ1XHhkOTNceDljXHhiOEQwXHhlNlx4YWElXHhkMFx4YzBQfUpPXmhceDhlXHgwOFx4YWRsVi4iCisgICAgYiJceDE4XHg4OFx4MTNceDA1b1x4YjBceDA3XHhlYXdceGUwXHhiNlx4YTRceGQ1Klx4ZTRyXHhlZlx4MDdHK1x4YzFceGJlaVsiCisgICAgYiJ3XHhlOFx4YWJAX1x4ZWZceDE1eVx4ZTVceDEyXHhjOVdceDFiLlx4YWRceDg1LVx4YzJceGY3XHhlM21VNmdceDhlU0EiCisgICAgYiJceDAxKFx4ZDNceGRiXHgxNlx4MTM9XHhkZVx4OTJceGY5LERceGI4XHg4YVx4YjJceGI0XHhjOVx4YzNceGVmbkVceGU4XFwiCisgICAgYiJceGE2XHhlMllceGQyXHhjZlx4Y2JceDhjXHhiNlx4ZDVceGU5XHgxZFx4MWVceDlhXHg4Yn5ceGUyXHhhNlxyRVx4ODR1ViIKKyAgICBiIlx4ZWRceGM2XHg5OVx4ZGRtPFx4MTBbXHgwZnVceDFmXHhjMVx4MWQxXG5ceGNmd1x4YjIlIVx4ZjBbXHhjZVx4ODdceDgzQiIKKyAgICBiIlx4MDhceGFhLFx4MDglZFx4Y2VmXHg5NFwiXHhkOWcuXHhjODNceGNiWFkrNFx4ZWNceDg1cUFcblx4MWQ9OVx4ZjAqXHhiMSIKKyAgICBiIlx4MWYvXHhmM3NceGQ2MWJceDdmQFx4ZmJceDlkXHhlM0ZRXFxceGJkXHg4Mlx4MWVceDAwXHhmM1x4Y2VceGQzXHhlMSIKKyAgICBiIlx4Y2EsRVx4ZmQ3W1x4YWJceGI2XHhiN1x4YWMhbUF9XHhiZFx4OWQzUjVceDljRlx4YWJIXHhlYlx4OTIpY2NceDEzXHhkMCIKKyAgICBiIlx4YmRceGVlXHhlOW57XHgxZElKQlx4YTVceGViXHgxMVx4ZThgdyZgXHg4Yn1AT3hlXHRceDhhXHgwN1x4MDJceDk1XHhmMiIKKyAgICBiIlx4ZWRceGRhfFx4YjFlXHhiZVx4YWFceGJiZ1x4MTlAXHhlMVlceDg3OFx4ODRceDBmXHg4Y1x4ZTNceGM5OFx4ZjJceDllIgorICAgIGIiXHhkNU5ceGI1Slx4ZWZceGFiIVx4ZTJceDhkcVx4ZTFceGU1cVx4YzVceGVlXHgxMVdceGI3XHhlNGsqXHgwMjdceGEwIgorICAgIGIiXHhhM0pceGY0XHhkOG1ceGQwcVx4OTRceGNiXHgwN1xuOlx4YjZgLlx4ZTRceDljXHgxNStceGMwKVx4ZGVceDgwWFx4ZDQiCisgICAgYiJceGNmUW1ceDAxXHhjMmNQXHgxY0FceDg1J1x4YzlceGFjXHg4Ylx4ZTZceGIyKVx4ZTZceDg0dFx4MWNceDkyXHhlNFoiCisgICAgYiJceDFjUlx4YjBceDllXHg5Nlx4ZDFceGZiXHgxY1x4YTZceDhiXHhjYmBceDEwXHgxMl1ceGYyZ1JceDliRlRceGUwXHhjOEgiCisgICAgYiJTXHhmYlx4YWM8XHgwNFx4YzdceGMxXHhlOFx4ZWRQXHhmNFx4MTZceGRiXHhjMFx4ZDdlXHhjMlx4MTdKXlx4MWZceGFiIgorICAgIGIiXHhmZltceDA4XHgxOVx4YjRceGY1XHhmYlx4MTlceGI0XHgwNFx4ZTVjfiddXHhjYlx4YzJBXHhlY1x4OTBceGQwXHhlZCIKKyAgICBiIlx4MDYsXHhjNUt7XHg4Nlx4MDNceGIxXHhjZE14XHhkZVFceDhjM1x4ZjlceDhhXHhlYT1ceDg5XHhhYmFceGQyXHhjODlhIgorICAgIGIiXHhkNzJceGYwXHhjM1x4MTlceDhhXHhkZnNceGQ0XHhmZFx4YmJceDgxYlx4ZWFFXCJceGQ4XHhmNGRceDBjRFx4ZjdJSiEiCisgICAgYiJceGU1ZFx4YmJHXHhlOVx4Y2FtXHhhYVx4MGZfclx4OTVceDkxTkJxXHhjYVBceGNlXHhhN1x4YTlceGI1XHgxMFx4OTRlUCEiCisgICAgYiJ8XHg4NTZceGNkXHhiZklpclx4YjhlXHg5YmpQXHg5N3FceGFid1M3XHgxYVx4MGVoTVx4ZTdceGNhXHg4Nj9ceGRlUH15fiIKKyAgICBiIlx4MGZceDk1SVx4ZmNceDEzXHhlMTxRXHgxYlx4ODY4XHgxZFx4MTFceGRmXHg5NFx4ZjRceDgyPnJceGE5a1x4ODhceGNiIgorICAgIGIiXHhmZFx4YzN2XHhlMlx4YjlceDhhXHgwMlx4OGVxXHg5MklceGY4XHhmNlx4ZjFceDAzc1x4OWJceGI4XHhlM1wiXHhlMyIKKyAgICBiIlx4YTlceGE1PkRceGI4XHg5NjtceGU3XHg5Mlx4ZDEzM1x4ZThceGRkJ2VceGM5Llx4ZGM7XHgxN1x4MWZceGY1SFx4MTNxIgorICAgIGIiXHhhNFdceDBjXHhkYn5ceDk4XHgwMVx4ZWJceGRmXHhlMzJceDEzXHgwZlx4ZGR4XG42XHhhMFx0XHgxMFx4YjZceGJiIgorICAgIGIiXHhiMFx4YzNceDE4XHhiNjtceDlmaltceGQ5XHhkNVx4YzlceDA2XHg4YVx4ODdceGNkXHhlNVx4ZWVceGZjXHg5Yy0lQCIKKyAgICBiIlx4ZWVceGUwXHhlYlx4ZDJceGUzXHhlOFx4ZmJceGMwXHgxMjJcXFx4YzdceGFmXHhjMlx4YTFPdGhceGIzXHg4Zlx4ODIiCisgICAgYiJceGIzXHgxOFx4YThceDA3XHhkNVx4ZWVfXHhiZVx4ZTBceDFjQVx4MWVfXHJceDlhXHhiMFx4MTdXJlx4YTJEXHg5MVx4OTQiCisgICAgYiJceDFhXHhiMlx4ZWZceGYyXHhkY1x4ODU7WFx4YjAsXHhlYj4tN1NceGU1XHhjYVx4MDcpXHgxZnBceDdmXHhjYVFCTFx4Y2EiCisgICAgYiJceGYzXHhiOWRceGZjXHhiNXN1XHhiMFx4YzhceDk1XHg5MFx4ZWIqKVx4YTB2XHhlNFx4OWF7RldceGY0bFx4ZGVceGNkaiIKKyAgICBiIlx4MDAiCispCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlLAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NGdW5jdGlvblRlc3RDYXNlLAorICAgICAgICBGaWxlVGVzdENhc2UsCisgICAgICAgIE9wZW5UZXN0Q2FzZSwKKyAgICAgICAgTWlzY2VsbGFuZW91c1Rlc3RDYXNlLAorICAgICkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CmluZGV4IGQ3MzJlMTQuLmFlNGU1NjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKQEAgLTExNSwxMyArMTE1LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtcGF0aChiImE6YjoiKSwgYiJhOmIiKQogCiAKLWNsYXNzIE1hY0NvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0KToKK2NsYXNzIE1hY0NvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcGF0aG1vZHVsZSA9IG1hY3BhdGgKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWFjUGF0aFRlc3RDYXNlLCBNYWNDb21tb25UZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCBjNzJlYjFjLi42YjFlOTMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC0yMiw2ICsyMiwxMCBAQAogCiBjbGFzcyBUZXN0QmFzZToKIAorICAgIGFsbF9tYWlsYm94X3R5cGVzID0gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSkKKwogICAgIGRlZiBfY2hlY2tfc2FtcGxlKHNlbGYsIG1zZyk6CiAgICAgICAgICMgSW5zcGVjdCBhIG1haWxib3guTWVzc2FnZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2FtcGxlIG1lc3NhZ2UKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgZW1haWwubWVzc2FnZS5NZXNzYWdlKQpAQCAtOTEsMTQgKzk1LDE0IEBACiAgICAgICAgICAgICAiIiIpCiAKICAgICBkZWYgdGVzdF9hZGRfaW52YWxpZF84Yml0X2J5dGVzX2hlYWRlcihzZWxmKToKLSAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzZWxmLl9ub25hc2NpaV9tc2cuZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzZWxmLl9ub25hc2NpaV9tc2cuZW5jb2RlKCdsYXRpbi0xJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuX2JveCksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fYm94LmdldF9ieXRlcyhrZXkpLAotICAgICAgICAgICAgc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgICAgICBzZWxmLl9ub25hc2NpaV9tc2cuZW5jb2RlKCdsYXRpbi0xJykpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX25vbmFzY2lpX2hlYWRlcl9hc19zdHJpbmcoc2VsZik6CiAgICAgICAgIHN1YmogPSBzZWxmLl9ub25hc2NpaV9tc2cuc3BsaXRsaW5lcygpWzFdCi0gICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc3Viai5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHN1YmouZW5jb2RlKCdsYXRpbi0xJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fYm94LmdldF9zdHJpbmcoa2V5KSwKICAgICAgICAgICAgICdTdWJqZWN0OiA9P3Vua25vd24tOGJpdD9iP1JtRnNhVzVoY0hUaGNpQm80WHBvYjNwemV1RnNiTzEwNFhOeicKICAgICAgICAgICAgICdZV3d1SUUzaGNpQnlaVzVrWld4MDZXdy8/PVxuXG4nKQpAQCAtOTMwLDggKzkzNCw3IEBACiAgICAgICAgICMgdGhlIG10aW1lIGFuZCBzaG91bGQgY2F1c2UgYSByZS1yZWFkLiBOb3RlIHRoYXQgInNsZWVwCiAgICAgICAgICMgZW11bGF0aW9uIiBpcyBzdGlsbCBpbiBlZmZlY3QsIGFzIHNrZXdmYWN0b3IgaXMgLTMuCiAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICdjdXInLCAnc3RyYXktZmlsZScpCi0gICAgICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKQogICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYuX2JveC5fcmVmcmVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZWZyZXNoZWQoKSkKQEAgLTEzOTcsNiArMTQwMCwxNCBAQAogICAgICAgICAjIEluaXRpYWxpemUgd2l0aCBpbnZhbGlkIGFyZ3VtZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBzZWxmLl9mYWN0b3J5KG9iamVjdCgpKSkKIAorICAgIGRlZiB0ZXN0X2FsbF9lTU1fYXR0cmlidWVzX2V4aXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlIDEyNTM3CisgICAgICAgIGVNTSA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoX3NhbXBsZV9tZXNzYWdlKQorICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KF9zYW1wbGVfbWVzc2FnZSkKKyAgICAgICAgZm9yIGF0dHIgaW4gZU1NLl9fZGljdF9fOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGF0dHIgaW4gbXNnLl9fZGljdF9fLAorICAgICAgICAgICAgICAgICd7fSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QnLmZvcm1hdChhdHRyKSkKKwogICAgIGRlZiB0ZXN0X2JlY29tZV9tZXNzYWdlKHNlbGYpOgogICAgICAgICAjIFRha2Ugb24gdGhlIHN0YXRlIG9mIGFub3RoZXIgbWVzc2FnZQogICAgICAgICBlTU0gPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKF9zYW1wbGVfbWVzc2FnZSkKQEAgLTE0MDgsOSArMTQxOSw3IEBACiAgICAgICAgICMgQ29weSBzZWxmJ3MgZm9ybWF0LXNwZWNpZmljIGRhdGEgdG8gb3RoZXIgbWVzc2FnZSBmb3JtYXRzLgogICAgICAgICAjIFRoaXMgdGVzdCBpcyBzdXBlcmZpY2lhbDsgYmV0dGVyIG9uZXMgYXJlIGluIFRlc3RNZXNzYWdlQ29udmVyc2lvbi4KICAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeSgpCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgb3RoZXJfbXNnID0gY2xhc3NfKCkKICAgICAgICAgICAgIG1zZy5fZXhwbGFpbl90byhvdGhlcl9tc2cpCiAgICAgICAgIG90aGVyX21zZyA9IGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSgpCkBAIC0xNjQyLDM3ICsxNjUxLDQ0IEBACiAKICAgICBkZWYgdGVzdF9wbGFpbl90b194KHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgTWVzc2FnZSB0byBhbGwgZm9ybWF0cwotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIG1zZ19wbGFpbiA9IG1haWxib3guTWVzc2FnZShfc2FtcGxlX21lc3NhZ2UpCiAgICAgICAgICAgICBtc2cgPSBjbGFzc18obXNnX3BsYWluKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlKG1zZykKIAogICAgIGRlZiB0ZXN0X3hfdG9fcGxhaW4oc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBNZXNzYWdlCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnID0gY2xhc3NfKF9zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIG1zZ19wbGFpbiA9IG1haWxib3guTWVzc2FnZShtc2cpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUobXNnX3BsYWluKQogCiAgICAgZGVmIHRlc3RfeF9mcm9tX2J5dGVzKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgYWxsIGZvcm1hdHMgdG8gTWVzc2FnZQotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIG1zZyA9IGNsYXNzXyhfYnl0ZXNfc2FtcGxlX21lc3NhZ2UpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUobXNnKQogCiAgICAgZGVmIHRlc3RfeF90b19pbnZhbGlkKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgYWxsIGZvcm1hdHMgdG8gYW4gaW52YWxpZCBmb3JtYXQKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogY2xhc3NfKEZhbHNlKSkKIAorICAgIGRlZiB0ZXN0X3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlc19yZW1vdmVkX29uX2NvbnZlcnNpb24oc2VsZik6CisgICAgICAgIHJlZmVyZW5jZSA9IHtjbGFzc186IGNsYXNzXyhfc2FtcGxlX21lc3NhZ2UpLl9fZGljdF9fCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXN9CisgICAgICAgIGZvciBjbGFzczEgaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKKyAgICAgICAgICAgIGZvciBjbGFzczIgaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKKyAgICAgICAgICAgICAgICBpZiBjbGFzczEgaXMgY2xhc3MyOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNvdXJjZSA9IGNsYXNzMShfc2FtcGxlX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gY2xhc3MyKHNvdXJjZSkKKyAgICAgICAgICAgICAgICB0eXBlX3NwZWNpZmljID0gW2EgZm9yIGEgaW4gcmVmZXJlbmNlW2NsYXNzMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYSBub3QgaW4gcmVmZXJlbmNlW2NsYXNzMl1dCisgICAgICAgICAgICAgICAgZm9yIGF0dHIgaW4gdHlwZV9zcGVjaWZpYzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihhdHRyLCB0YXJnZXQuX19kaWN0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAid2hpbGUgY29udmVydGluZyB7fSB0byB7fSIuZm9ybWF0KGNsYXNzMSwgY2xhc3MyKSkKKwogICAgIGRlZiB0ZXN0X21haWxkaXJfdG9fbWFpbGRpcihzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IE1haWxkaXJNZXNzYWdlIHRvIE1haWxkaXJNZXNzYWdlCiAgICAgICAgIG1zZ19tYWlsZGlyID0gbWFpbGJveC5NYWlsZGlyTWVzc2FnZShfc2FtcGxlX21lc3NhZ2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjZDA5YwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpAQCAtMCwwICsxLDIyMSBAQAoraW1wb3J0IG1haWxjYXAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHVuaXR0ZXN0CisKKyMgTG9jYXRpb24gb2YgbWFpbGNhcCBmaWxlCitNQUlMQ0FQRklMRSA9IHRlc3Quc3VwcG9ydC5maW5kZmlsZSgibWFpbGNhcC50eHQiKQorCisjIERpY3QgdG8gYWN0IGFzIG1vY2sgbWFpbGNhcCBlbnRyeSBmb3IgdGhpcyB0ZXN0CisjIFRoZSBrZXlzIGFuZCB2YWx1ZXMgc2hvdWxkIG1hdGNoIHRoZSBjb250ZW50cyBvZiBNQUlMQ0FQRklMRQorTUFJTENBUERJQ1QgPSB7CisgICAgJ2FwcGxpY2F0aW9uL3gtbW92aWUnOgorICAgICAgICBbeydjb21wb3NlJzogJ21vdmllbWFrZXIgJXMnLAorICAgICAgICAgICd4MTEtYml0bWFwJzogJyIvdXNyL2xpYi9abWFpbC9iaXRtYXBzL21vdmllLnhibSInLAorICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciTW92aWUiJywKKyAgICAgICAgICAndmlldyc6ICdtb3ZpZXBsYXllciAlcyd9XSwKKyAgICAnYXBwbGljYXRpb24vKic6CisgICAgICAgIFt7J2NvcGlvdXNvdXRwdXQnOiAnJywKKyAgICAgICAgICAndmlldyc6ICdlY2hvICJUaGlzIGlzIFxcIiV0XFwiIGJ1dCAgICAgICAgaXMgNTAgXFwlIEdyZWVrIHRvIG1lIiBcXDsgY2F0ICVzJ31dLAorICAgICdhdWRpby9iYXNpYyc6CisgICAgICAgIFt7J2VkaXQnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAnY29tcG9zZSc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQW4gYXVkaW8gZnJhZ21lbnQiJywKKyAgICAgICAgICAndmlldyc6ICdzaG93YXVkaW8gJXMnfV0sCisgICAgJ3ZpZGVvL21wZWcnOgorICAgICAgICBbeyd2aWV3JzogJ21wZWdfcGxheSAlcyd9XSwKKyAgICAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCc6CisgICAgICAgIFt7J25lZWRzdGVybWluYWwnOiAnJywgJ3ZpZXcnOiAncHMtdG8tdGVybWluYWwgJXMnfSwKKyAgICAgICAgIHsnY29tcG9zZSc6ICdpZHJhdyAlcycsICd2aWV3JzogJ3BzLXRvLXRlcm1pbmFsICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi94LWR2aSc6CisgICAgICAgIFt7J3ZpZXcnOiAneGR2aSAlcyd9XSwKKyAgICAnbWVzc2FnZS9leHRlcm5hbC1ib2R5JzoKKyAgICAgICAgW3snY29tcG9zZXR5cGVkJzogJ2V4dGNvbXBvc2UgJXMnLAorICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgaW4gYW4gZXh0ZXJuYWwgbG9jYXRpb24iJywKKyAgICAgICAgICAnbmVlZHN0ZXJtaW5hbCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dleHRlcm5hbCAlcyAle2FjY2Vzcy10eXBlfSAle25hbWV9ICV7c2l0ZX0gICAgICV7ZGlyZWN0b3J5fSAle21vZGV9ICV7c2VydmVyfSd9XSwKKyAgICAndGV4dC9yaWNodGV4dCc6CisgICAgICAgIFt7J3Rlc3QnOiAndGVzdCAiYGVjaG8gICAgICV7Y2hhcnNldH0gfCB0ciBcJ1tBLVpdXCcgXCdbYS16XVwnYCIgID0gaXNvLTg4NTktOCcsCisgICAgICAgICAgJ2NvcGlvdXNvdXRwdXQnOiAnJywKKyAgICAgICAgICAndmlldyc6ICdzaG93bm9uYXNjaWkgaXNvLTg4NTktOCAtZSByaWNodGV4dCAtcCAlcyd9XSwKKyAgICAnaW1hZ2UveC14d2luZG93ZHVtcCc6CisgICAgICAgIFt7J3ZpZXcnOiAnZGlzcGxheSAlcyd9XSwKKyAgICAnYXVkaW8vKic6CisgICAgICAgIFt7J3ZpZXcnOiAnL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvICV0J31dLAorICAgICd2aWRlby8qJzoKKyAgICAgICAgW3sndmlldyc6ICdhbmltYXRlICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi9mcmFtZSc6CisgICAgICAgIFt7J3ByaW50JzogJyJjYXQgJXMgfCBscCInLCAndmlldyc6ICdzaG93ZnJhbWUgJXMnfV0sCisgICAgJ2ltYWdlL3JnYic6CisgICAgICAgIFt7J3ZpZXcnOiAnZGlzcGxheSAlcyd9XQorfQorCisKK2NsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9saXN0bWFpbGNhcGZpbGVzKHNlbGYpOgorICAgICAgICAjIFRoZSByZXR1cm4gdmFsdWUgZm9yIGxpc3RtYWlsY2FwZmlsZXMoKSB3aWxsIHZhcnkgYnkgc3lzdGVtLgorICAgICAgICAjIFNvIHZlcmlmeSB0aGF0IGxpc3RtYWlsY2FwZmlsZXMoKSByZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgaXMgb2YKKyAgICAgICAgIyBub24temVybyBsZW5ndGguCisgICAgICAgIG1jZmlsZXMgPSBtYWlsY2FwLmxpc3RtYWlsY2FwZmlsZXMoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobWNmaWxlcywgbGlzdCkKKyAgICAgICAgZm9yIG0gaW4gbWNmaWxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLCBzdHIpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICAjIEFjY29yZGluZyB0byBSRkMgMTUyNCwgaWYgTUFJTENBUFMgZW52IHZhcmlhYmxlIGV4aXN0cywgdXNlIHRoYXQKKyAgICAgICAgICAgICMgYW5kIG9ubHkgdGhhdC4KKyAgICAgICAgICAgIGlmICJNQUlMQ0FQUyIgaW4gZW52OgorICAgICAgICAgICAgICAgIGVudl9tYWlsY2FwcyA9IGVudlsiTUFJTENBUFMiXS5zcGxpdChvcy5wYXRoc2VwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbnZfbWFpbGNhcHMgPSBbIi90ZXN0ZGlyMS8ubWFpbGNhcCIsICIvdGVzdGRpcjIvbWFpbGNhcCJdCisgICAgICAgICAgICAgICAgZW52WyJNQUlMQ0FQUyJdID0gb3MucGF0aHNlcC5qb2luKGVudl9tYWlsY2FwcykKKyAgICAgICAgICAgICAgICBtY2ZpbGVzID0gbWFpbGNhcC5saXN0bWFpbGNhcGZpbGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnZfbWFpbGNhcHMsIG1jZmlsZXMpCisKKyAgICBkZWYgdGVzdF9yZWFkbWFpbGNhcGZpbGUoc2VsZik6CisgICAgICAgICMgVGVzdCByZWFkbWFpbGNhcGZpbGUoKSB1c2luZyB0ZXN0IGZpbGUuIEl0IHNob3VsZCBtYXRjaCBNQUlMQ0FQRElDVC4KKyAgICAgICAgd2l0aCBvcGVuKE1BSUxDQVBGSUxFLCAncicpIGFzIG1jZjoKKyAgICAgICAgICAgIGQgPSBtYWlsY2FwLnJlYWRtYWlsY2FwZmlsZShtY2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKGQsIE1BSUxDQVBESUNUKQorCisgICAgZGVmIHRlc3RfbG9va3VwKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aG91dCBrZXkKKyAgICAgICAgZXhwZWN0ZWQgPSBbeyd2aWV3JzogJ21wZWdfcGxheSAlcyd9LCB7J3ZpZXcnOiAnYW5pbWF0ZSAlcyd9XQorICAgICAgICBhY3R1YWwgPSBtYWlsY2FwLmxvb2t1cChNQUlMQ0FQRElDVCwgJ3ZpZGVvL21wZWcnKQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgICAgICMgVGVzdCB3aXRoIGtleQorICAgICAgICBrZXkgPSAnY29tcG9zZScKKyAgICAgICAgZXhwZWN0ZWQgPSBbeydlZGl0JzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAgICAgICAgICAnY29tcG9zZSc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICAgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2F1ZGlvICVzJ31dCisgICAgICAgIGFjdHVhbCA9IG1haWxjYXAubG9va3VwKE1BSUxDQVBESUNULCAnYXVkaW8vYmFzaWMnLCBrZXkpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYgdGVzdF9zdWJzdChzZWxmKToKKyAgICAgICAgcGxpc3QgPSBbJ2lkPTEnLCAnbnVtYmVyPTInLCAndG90YWw9MyddCisgICAgICAgICMgdGVzdCBjYXNlOiAoW2ZpZWxkLCBNSU1FdHlwZSwgZmlsZW5hbWUsIHBsaXN0PVtdXSwgPGV4cGVjdGVkIHN0cmluZz4pCisgICAgICAgIHRlc3RfY2FzZXMgPSBbCisgICAgICAgICAgICAoWyIiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICIiKSwKKyAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28iKSwKKyAgICAgICAgICAgIChbImVjaG8gJXMiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvby50eHQiKSwKKyAgICAgICAgICAgIChbImVjaG8gJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGF1ZGlvLyoiKSwKKyAgICAgICAgICAgIChbImVjaG8gXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAorICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyBmb28iKSwKKyAgICAgICAgICAgIChbImVjaG8gJXt0b3RhbH0iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyAzIikKKyAgICAgICAgXQorICAgICAgICBmb3IgdGMgaW4gdGVzdF9jYXNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGNhcC5zdWJzdCgqdGNbMF0pLCB0Y1sxXSkKKworCitjbGFzcyBHZXRjYXBzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9tb2NrX2dldGNhcHMoc2VsZik6CisgICAgICAgICMgVGVzdCBtYWlsY2FwLmdldGNhcHMoKSB1c2luZyBtb2NrIG1haWxjYXAgZmlsZSBpbiB0aGlzIGRpci4KKyAgICAgICAgIyBUZW1wb3JhcmlseSBvdmVycmlkZSBhbnkgZXhpc3Rpbmcgc3lzdGVtIG1haWxjYXAgZmlsZSBieSBwb2ludGluZyB0aGUKKyAgICAgICAgIyBNQUlMQ0FQUyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdXIgbW9jayBmaWxlLgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52WyJNQUlMQ0FQUyJdID0gTUFJTENBUEZJTEUKKyAgICAgICAgICAgIGNhcHMgPSBtYWlsY2FwLmdldGNhcHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoY2FwcywgTUFJTENBUERJQ1QpCisKKyAgICBkZWYgdGVzdF9zeXN0ZW1fbWFpbGNhcChzZWxmKToKKyAgICAgICAgIyBUZXN0IG1haWxjYXAuZ2V0Y2FwcygpIHdpdGggbWFpbGNhcCBmaWxlKHMpIG9uIHN5c3RlbSwgaWYgYW55LgorICAgICAgICBjYXBzID0gbWFpbGNhcC5nZXRjYXBzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNhcHMsIGRpY3QpCisgICAgICAgIG1haWxjYXBmaWxlcyA9IG1haWxjYXAubGlzdG1haWxjYXBmaWxlcygpCisgICAgICAgIGV4aXN0aW5nbWNmaWxlcyA9IFttY2YgZm9yIG1jZiBpbiBtYWlsY2FwZmlsZXMgaWYgb3MucGF0aC5leGlzdHMobWNmKV0KKyAgICAgICAgaWYgZXhpc3RpbmdtY2ZpbGVzOgorICAgICAgICAgICAgIyBBdCBsZWFzdCAxIG1haWxjYXAgZmlsZSBleGlzdHMsIHNvIHRlc3QgdGhhdC4KKyAgICAgICAgICAgIGZvciAoaywgdikgaW4gY2Fwcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShrLCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHYsIGxpc3QpCisgICAgICAgICAgICAgICAgZm9yIGUgaW4gdjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIGRpY3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vIG1haWxjYXAgZmlsZXMgb24gc3lzdGVtLiBnZXRjYXBzKCkgc2hvdWxkIHJldHVybiBlbXB0eSBkaWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgY2FwcykKKworCitjbGFzcyBGaW5kbWF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ZpbmRtYXRjaChzZWxmKToKKworICAgICAgICAjIGRlZmF1bHQgZmluZG1hdGNoIGFyZ3VtZW50cworICAgICAgICBjID0gTUFJTENBUERJQ1QKKyAgICAgICAgZm5hbWUgPSAiZm9vLnR4dCIKKyAgICAgICAgcGxpc3QgPSBbImFjY2Vzcy10eXBlPWRlZmF1bHQiLCAibmFtZT1qb2huIiwgInNpdGU9cHl0aG9uLm9yZyIsCisgICAgICAgICAgICAgICAgICJkaXJlY3Rvcnk9L3RtcCIsICJtb2RlPWZvbyIsICJzZXJ2ZXI9YmFyIl0KKyAgICAgICAgYXVkaW9fYmFzaWNfZW50cnkgPSB7CisgICAgICAgICAgICAnZWRpdCc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgJ2NvbXBvc2UnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQW4gYXVkaW8gZnJhZ21lbnQiJywKKyAgICAgICAgICAgICd2aWV3JzogJ3Nob3dhdWRpbyAlcycKKyAgICAgICAgfQorICAgICAgICBhdWRpb19lbnRyeSA9IHsidmlldyI6ICIvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gJXQifQorICAgICAgICB2aWRlb19lbnRyeSA9IHsndmlldyc6ICdhbmltYXRlICVzJ30KKyAgICAgICAgbWVzc2FnZV9lbnRyeSA9IHsKKyAgICAgICAgICAgICdjb21wb3NldHlwZWQnOiAnZXh0Y29tcG9zZSAlcycsCisgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIGluIGFuIGV4dGVybmFsIGxvY2F0aW9uIicsICduZWVkc3Rlcm1pbmFsJzogJycsCisgICAgICAgICAgICAndmlldyc6ICdzaG93ZXh0ZXJuYWwgJXMgJXthY2Nlc3MtdHlwZX0gJXtuYW1lfSAle3NpdGV9ICAgICAle2RpcmVjdG9yeX0gJXttb2RlfSAle3NlcnZlcn0nCisgICAgICAgIH0KKworICAgICAgICAjIHRlc3QgY2FzZTogKGZpbmRtYXRjaCBhcmdzLCBmaW5kbWF0Y2gga2V5d29yZCBhcmdzLCBleHBlY3RlZCBvdXRwdXQpCisgICAgICAgICMgICBwb3NpdGlvbmFsIGFyZ3M6IGNhcHMsIE1JTUV0eXBlCisgICAgICAgICMgICBrZXl3b3JkIGFyZ3M6IGtleT0idmlldyIsIGZpbGVuYW1lPSIvZGV2L251bGwiLCBwbGlzdD1bXQorICAgICAgICAjICAgb3V0cHV0OiAoY29tbWFuZCBsaW5lLCBtYWlsY2FwIGVudHJ5KQorICAgICAgICBjYXNlcyA9IFsKKyAgICAgICAgICAgIChbe30sICJ2aWRlby9tcGVnIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAiZm9vL2JhciJdLCB7fSwgKE5vbmUsIE5vbmUpKSwKKyAgICAgICAgICAgIChbYywgInZpZGVvL21wZWciXSwge30sICgnbXBlZ19wbGF5IC9kZXYvbnVsbCcsIHsndmlldyc6ICdtcGVnX3BsYXkgJXMnfSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiZWRpdCJdLCB7fSwgKCJhdWRpb2NvbXBvc2UgL2Rldi9udWxsIiwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImNvbXBvc2UiXSwge30sICgiYXVkaW9jb21wb3NlIC9kZXYvbnVsbCIsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJkZXNjcmlwdGlvbiJdLCB7fSwgKCciQW4gYXVkaW8gZnJhZ21lbnQiJywgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImZvb2JhciJdLCB7fSwgKE5vbmUsIE5vbmUpKSwKKyAgICAgICAgICAgIChbYywgInZpZGVvLyoiXSwgeyJmaWxlbmFtZSI6IGZuYW1lfSwgKCJhbmltYXRlICVzIiAlIGZuYW1lLCB2aWRlb19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiY29tcG9zZSJdLAorICAgICAgICAgICAgIHsiZmlsZW5hbWUiOiBmbmFtZX0sCisgICAgICAgICAgICAgKCJhdWRpb2NvbXBvc2UgJXMiICUgZm5hbWUsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyJdLAorICAgICAgICAgICAgIHsia2V5IjogImRlc2NyaXB0aW9uIiwgImZpbGVuYW1lIjogZm5hbWV9LAorICAgICAgICAgICAgICgnIkFuIGF1ZGlvIGZyYWdtZW50IicsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby8qIl0sCisgICAgICAgICAgICAgeyJmaWxlbmFtZSI6IGZuYW1lfSwKKyAgICAgICAgICAgICAoIi91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyBhdWRpby8qIiwgYXVkaW9fZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgIm1lc3NhZ2UvZXh0ZXJuYWwtYm9keSJdLAorICAgICAgICAgICAgIHsicGxpc3QiOiBwbGlzdH0sCisgICAgICAgICAgICAgKCJzaG93ZXh0ZXJuYWwgL2Rldi9udWxsIGRlZmF1bHQgam9obiBweXRob24ub3JnICAgICAvdG1wIGZvbyBiYXIiLCBtZXNzYWdlX2VudHJ5KSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLl9ydW5fY2FzZXMoY2FzZXMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJwb3NpeCIsICJSZXF1aXJlcyAndGVzdCcgY29tbWFuZCBvbiBzeXN0ZW0iKQorICAgIGRlZiB0ZXN0X3Rlc3Qoc2VsZik6CisgICAgICAgICMgZmluZG1hdGNoKCkgd2lsbCBhdXRvbWF0aWNhbGx5IGNoZWNrIGFueSAidGVzdCIgY29uZGl0aW9ucyBhbmQgc2tpcAorICAgICAgICAjIHRoZSBlbnRyeSBpZiB0aGUgY2hlY2sgZmFpbHMuCisgICAgICAgIGNhcHMgPSB7InRlc3QvcGFzcyI6IFt7InRlc3QiOiAidGVzdCAxIC1lcSAxIn1dLAorICAgICAgICAgICAgICAgICJ0ZXN0L2ZhaWwiOiBbeyJ0ZXN0IjogInRlc3QgMSAtZXEgMCJ9XX0KKyAgICAgICAgIyB0ZXN0IGNhc2U6IChmaW5kbWF0Y2ggYXJncywgZmluZG1hdGNoIGtleXdvcmQgYXJncywgZXhwZWN0ZWQgb3V0cHV0KQorICAgICAgICAjICAgcG9zaXRpb25hbCBhcmdzOiBjYXBzLCBNSU1FdHlwZSwga2V5ICgidGVzdCIpCisgICAgICAgICMgICBrZXl3b3JkIGFyZ3M6IE4vQQorICAgICAgICAjICAgb3V0cHV0OiAoY29tbWFuZCBsaW5lLCBtYWlsY2FwIGVudHJ5KQorICAgICAgICBjYXNlcyA9IFsKKyAgICAgICAgICAgICMgZmluZG1hdGNoIHdpbGwgcmV0dXJuIHRoZSBtYWlsY2FwIGVudHJ5IGZvciB0ZXN0L3Bhc3MgYmVjYXVzZSBpdCBldmFsdWF0ZXMgdG8gdHJ1ZQorICAgICAgICAgICAgKFtjYXBzLCAidGVzdC9wYXNzIiwgInRlc3QiXSwge30sICgidGVzdCAxIC1lcSAxIiwgeyJ0ZXN0IjogInRlc3QgMSAtZXEgMSJ9KSksCisgICAgICAgICAgICAjIGZpbmRtYXRjaCB3aWxsIHJldHVybiBOb25lIGJlY2F1c2UgdGVzdC9mYWlsIGV2YWx1YXRlcyB0byBmYWxzZQorICAgICAgICAgICAgKFtjYXBzLCAidGVzdC9mYWlsIiwgInRlc3QiXSwge30sIChOb25lLCBOb25lKSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLl9ydW5fY2FzZXMoY2FzZXMpCisKKyAgICBkZWYgX3J1bl9jYXNlcyhzZWxmLCBjYXNlcyk6CisgICAgICAgIGZvciBjIGluIGNhc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsY2FwLmZpbmRtYXRjaCgqY1swXSwgKipjWzFdKSwgY1syXSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChIZWxwZXJGdW5jdGlvblRlc3QsIEdldGNhcHNUZXN0LCBGaW5kbWF0Y2hUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQppbmRleCA5NmE3MGVjLi44M2MzNDhjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKK2ltcG9ydCB0eXBlcwogCiBjbGFzcyBIZWxwZXJNaXhpbjoKICAgICBkZWYgaGVscGVyKHNlbGYsIHNhbXBsZSwgKmV4dHJhKToKQEAgLTExNCw2ICsxMTUsMjIgQEAKICAgICAgICAgY29kZXMgPSAoRXhjZXB0aW9uVGVzdENhc2UudGVzdF9leGNlcHRpb25zLl9fY29kZV9fLCkgKiBjb3VudAogICAgICAgICBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMoY29kZXMpKQogCisgICAgZGVmIHRlc3RfZGlmZmVyZW50X2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgY28xID0gY29tcGlsZSgieCIsICJmMSIsICJleGVjIikKKyAgICAgICAgY28yID0gY29tcGlsZSgieSIsICJmMiIsICJleGVjIikKKyAgICAgICAgY28xLCBjbzIgPSBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMoKGNvMSwgY28yKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28xLmNvX2ZpbGVuYW1lLCAiZjEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvMi5jb19maWxlbmFtZSwgImYyIikKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NhbWVfZmlsZW5hbWVfdXNlZChzZWxmKToKKyAgICAgICAgcyA9ICIiImRlZiBmKCk6IHBhc3NcbmRlZiBnKCk6IHBhc3MiIiIKKyAgICAgICAgY28gPSBjb21waWxlKHMsICJteWZpbGUiLCAiZXhlYyIpCisgICAgICAgIGNvID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKGNvKSkKKyAgICAgICAgZm9yIG9iaiBpbiBjby5jb19jb25zdHM6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuQ29kZVR5cGUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY28uY29fZmlsZW5hbWUsIG9iai5jb19maWxlbmFtZSkKKwogY2xhc3MgQ29udGFpbmVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIEhlbHBlck1peGluKToKICAgICBkID0geydhc3RyaW5nJzogJ2Zvb0BiYXIuYmF6LnNwYW0nLAogICAgICAgICAgJ2FmbG9hdCc6IDcyODMuNDMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKaW5kZXggZGRkYzg4OS4uNzE1MDAzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQpAQCAtMiwxMSArMiwxMiBAQAogIyBYWFhYIFNob3VsZCBub3QgZG8gdGVzdHMgYXJvdW5kIHplcm8gb25seQogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB2ZXJib3NlLCByZXF1aXJlc19JRUVFXzc1NAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBtYXRoCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHN5cwotaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5c2NvbmZpZwogCkBAIC00NTcsMTIgKzQ1OCwxMiBAQAogCiAgICAgZGVmIHRlc3RGbW9kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguZm1vZCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwxKScsIG1hdGguZm1vZCgxMCwxKSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwwLjUpJywgbWF0aC5mbW9kKDEwLDAuNSksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMS41KScsIG1hdGguZm1vZCgxMCwxLjUpLCAxKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwxKScsIG1hdGguZm1vZCgtMTAsMSksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLDAuNSknLCBtYXRoLmZtb2QoLTEwLDAuNSksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLDEuNSknLCBtYXRoLmZtb2QoLTEwLDEuNSksIC0xKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLCAxKScsIG1hdGguZm1vZCgxMCwgMSksIDAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMC41KScsIG1hdGguZm1vZCgxMCwgMC41KSwgMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLCAxLjUpJywgbWF0aC5mbW9kKDEwLCAxLjUpLCAxLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLCAxKScsIG1hdGguZm1vZCgtMTAsIDEpLCAtMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMC41KScsIG1hdGguZm1vZCgtMTAsIDAuNSksIC0wLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLCAxLjUpJywgbWF0aC5mbW9kKC0xMCwgMS41KSwgLTEuMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5mbW9kKE5BTiwgMS4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5mbW9kKDEuLCBOQU4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5mbW9kKE5BTiwgTkFOKSkpCkBAIC02NTAsNiArNjUxLDMzIEBACiAgICAgICAgIG49IDIqKjkwCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCiAKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICBkZWYgdGVzdExvZzIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5sb2cyKQorCisgICAgICAgICMgQ2hlY2sgc29tZSBpbnRlZ2VyIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigxKSwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMig0KSwgMi4wKQorCisgICAgICAgICMgTGFyZ2UgaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMioqMTAyMyksIDEwMjMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMioqMTAyNCksIDEwMjQuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMioqMjAwMCksIDIwMDAuMCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzIsIC0xLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGgubG9nMiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5sb2cyKE5BTikpKQorCisgICAgQHJlcXVpcmVzX0lFRUVfNzU0CisgICAgIyBsb2cyKCkgaXMgbm90IGFjY3VyYXRlIGVub3VnaCBvbiBNYWMgT1MgWCBUaWdlciAoMTAuNCkKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQorICAgIGRlZiB0ZXN0TG9nMkV4YWN0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgd2UgZ2V0IGV4YWN0IGVxdWFsaXR5IGZvciBsb2cyIG9mIHBvd2VycyBvZiAyLgorICAgICAgICBhY3R1YWwgPSBbbWF0aC5sb2cyKG1hdGgubGRleHAoMS4wLCBuKSkgZm9yIG4gaW4gcmFuZ2UoLTEwNzQsIDEwMjQpXQorICAgICAgICBleHBlY3RlZCA9IFtmbG9hdChuKSBmb3IgbiBpbiByYW5nZSgtMTA3NCwgMTAyNCldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0TG9nMTAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5sb2cxMCkKICAgICAgICAgc2VsZi5mdGVzdCgnbG9nMTAoMC4xKScsIG1hdGgubG9nMTAoMC4xKSwgLTEpCkBAIC0xMDEwLDcgKzEwMzgsNiBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfbXRlc3RmaWxlKHNlbGYpOgotICAgICAgICBBTExPV0VEX0VSUk9SID0gMjAgICMgcGVybWl0dGVkIGVycm9yLCBpbiB1bHBzCiAgICAgICAgIGZhaWxfZm10ID0gInt9Ont9KHshcn0pOiBleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKIAogICAgICAgICBmYWlsdXJlcyA9IFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQppbmRleCA3YzBjODRmLi5lNWRiOTQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKQEAgLTY1OCw3ICs2NTgsNyBAQAogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJ1AyUFAyUFAnKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJ1Aybk4yUG4nKQogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oaW8uQnl0ZXNJTygpKSwgYmFzZXNpemUpCiAgICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oKSwgYmFzZXNpemUgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5IGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CmluZGV4IDBiZmRkZDkuLmVlNmIxNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKQEAgLTEsNiArMSw3IEBACiAiIiJVbml0IHRlc3RzIGZvciB0aGUgbWVtb3J5dmlldwogCi1YWFggV2UgbmVlZCBtb3JlIHRlc3RzISBTb21lIHRlc3RzIGFyZSBpbiB0ZXN0X2J5dGVzCisgICBTb21lIHRlc3RzIGFyZSBpbiB0ZXN0X2J5dGVzLiBNYW55IHRlc3RzIHRoYXQgcmVxdWlyZSBfdGVzdGJ1ZmZlci5uZGFycmF5CisgICBhcmUgaW4gdGVzdF9idWZmZXIuCiAiIiIKIAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNCwxNSArMjUsMTQgQEAKICAgICAgICAgcmV0dXJuIGZpbHRlcihOb25lLCBbc2VsZi5yb190eXBlLCBzZWxmLnJ3X3R5cGVdKQogCiAgICAgZGVmIGNoZWNrX2dldGl0ZW1fd2l0aF90eXBlKHNlbGYsIHRwKToKLSAgICAgICAgaXRlbSA9IHNlbGYuZ2V0aXRlbV90eXBlCiAgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCiAgICAgICAgIG9sZHJlZmNvdW50ID0gc3lzLmdldHJlZmNvdW50KGIpCiAgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswXSwgaXRlbShiImEiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1bMF0sIGJ5dGVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bNV0sIGl0ZW0oYiJmIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstMV0sIGl0ZW0oYiJmIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstNl0sIGl0ZW0oYiJhIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswXSwgb3JkKGIiYSIpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobVswXSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bNV0sIG9yZChiImYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy0xXSwgb3JkKGIiZiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTZdLCBvcmQoYiJhIikpCiAgICAgICAgICMgQm91bmRzIGNoZWNraW5nCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGxhbWJkYTogbVs2XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbGFtYmRhOiBtWy03XSkKQEAgLTc2LDcgKzc2LDkgQEAKICAgICAgICAgYiA9IHNlbGYucndfdHlwZShzZWxmLl9zb3VyY2UpCiAgICAgICAgIG9sZHJlZmNvdW50ID0gc3lzLmdldHJlZmNvdW50KGIpCiAgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCi0gICAgICAgIG1bMF0gPSB0cChiIjAiKQorICAgICAgICBtWzBdID0gb3JkKGInMScpCisgICAgICAgIHNlbGYuX2NoZWNrX2NvbnRlbnRzKHRwLCBiLCBiIjFiY2RlZiIpCisgICAgICAgIG1bMDoxXSA9IHRwKGIiMCIpCiAgICAgICAgIHNlbGYuX2NoZWNrX2NvbnRlbnRzKHRwLCBiLCBiIjBiY2RlZiIpCiAgICAgICAgIG1bMTozXSA9IHRwKGIiMTIiKQogICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIwMTJkZWYiKQpAQCAtMTAyLDEwICsxMDQsMTcgQEAKICAgICAgICAgIyBXcm9uZyBpbmRleC9zbGljZSB0eXBlcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sIDAuMCwgYiJhIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwpLCBiImEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sIChzbGljZSgwLDEsMSksIDApLCBiImEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICgwLCBzbGljZSgwLDEsMSkpLCBiImEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICgwLCksIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgImEiLCBiImEiKQorICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzbGljZXMKKyAgICAgICAgc2xpY2VzID0gKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzZXRpdGVtLCBzbGljZXMsIGIiYSIpCiAgICAgICAgICMgVHJ5aW5nIHRvIHJlc2l6ZSB0aGUgbWVtb3J5IG9iamVjdAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCAwLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIDAsIGIiYWIiKQorICAgICAgICBleGMgPSBWYWx1ZUVycm9yIGlmIG0uZm9ybWF0ID09ICdjJyBlbHNlIFR5cGVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIHNldGl0ZW0sIDAsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZXRpdGVtLCAwLCBiImFiIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgc2xpY2UoMSwxKSwgYiJhIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgc2xpY2UoMCwyKSwgYiJhIikKIApAQCAtMTc1LDcgKzE4NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zaGFwZSwgKDYsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obSksIDYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdHJpZGVzLCAoc2VsZi5pdGVtc2l6ZSwpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3Vib2Zmc2V0cywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsICgpKQogICAgICAgICByZXR1cm4gbQogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlc19yZWFkb25seShzZWxmKToKQEAgLTIwOSwxMiArMjE4LDE2IEBACiAgICAgICAgICAgICAgICAgIyBJZiB0cCBpcyBhIGZhY3RvcnkgcmF0aGVyIHRoYW4gYSBwbGFpbiB0eXBlLCBza2lwCiAgICAgICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICAgICAgY2xhc3MgTXlWaWV3KCk6CisgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2UpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm0gPSBtZW1vcnl2aWV3KGJhc2UpCiAgICAgICAgICAgICBjbGFzcyBNeVNvdXJjZSh0cCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgY2xhc3MgTXlPYmplY3Q6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB0aHJvdWdoIGEgbWVtb3J5dmlldyBvYmplY3QKKyAgICAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggYSBtZW1vcnl2aWV3IG9iamVjdC4KKyAgICAgICAgICAgICMgVGhpcyBleGVyY2lzZXMgbWJ1Zl9jbGVhcigpLgogICAgICAgICAgICAgYiA9IE15U291cmNlKHRwKGInYWJjJykpCiAgICAgICAgICAgICBtID0gc2VsZi5fdmlldyhiKQogICAgICAgICAgICAgbyA9IE15T2JqZWN0KCkKQEAgLTIyNiw2ICsyMzksMTcgQEAKICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdyKCkgaXMgTm9uZSwgd3IoKSkKIAorICAgICAgICAgICAgIyBUaGlzIGV4ZXJjaXNlcyBtZW1vcnlfY2xlYXIoKS4KKyAgICAgICAgICAgIG0gPSBNeVZpZXcodHAoYidhYmMnKSkKKyAgICAgICAgICAgIG8gPSBNeU9iamVjdCgpCisgICAgICAgICAgICBtLnggPSBtCisgICAgICAgICAgICBtLm8gPSBvCisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKG8pCisgICAgICAgICAgICBtID0gbyA9IE5vbmUKKyAgICAgICAgICAgICMgVGhlIGN5Y2xlIG11c3QgYmUgYnJva2VuCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cigpIGlzIE5vbmUsIHdyKCkpCisKICAgICBkZWYgX2NoZWNrX3JlbGVhc2VkKHNlbGYsIG0sIHRwKToKICAgICAgICAgY2hlY2sgPSBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJyZWxlYXNlZCIpCiAgICAgICAgIHdpdGggY2hlY2s6IGJ5dGVzKG0pCkBAIC0yODMsNiArMzA3LDUxIEBACiAgICAgICAgIGkgPSBpby5CeXRlc0lPKGInWlpaWicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaS5yZWFkaW50bywgbSkKIAorICAgIGRlZiB0ZXN0X2dldGJ1Zl9mYWlsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuX3ZpZXcsIHt9KQorCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgIyBNZW1vcnl2aWV3cyBvZiByZWFkb25seSAoaGFzaGFibGUpIHR5cGVzIGFyZSBoYXNoYWJsZSwgYW5kIHRoZXkKKyAgICAgICAgIyBoYXNoIGFzIGhhc2gob2JqLnRvYnl0ZXMoKSkuCisgICAgICAgIHRwID0gc2VsZi5yb190eXBlCisgICAgICAgIGlmIHRwIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyByZWFkLW9ubHkgdHlwZSB0byB0ZXN0IikKKyAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKKyAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKGIiYWJjZGVmIikpCisgICAgICAgICMgUmVsZWFzaW5nIHRoZSBtZW1vcnl2aWV3IGtlZXBzIHRoZSBzdG9yZWQgaGFzaCB2YWx1ZSAoYXMgd2l0aCB3ZWFrcmVmcykKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKGIiYWJjZGVmIikpCisgICAgICAgICMgSGFzaGluZyBhIG1lbW9yeXZpZXcgZm9yIHRoZSBmaXJzdCB0aW1lIGFmdGVyIGl0IGlzIHJlbGVhc2VkCisgICAgICAgICMgcmVzdWx0cyBpbiBhbiBlcnJvciAoYXMgd2l0aCB3ZWFrcmVmcykuCisgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgIG0ucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGhhc2gsIG0pCisKKyAgICBkZWYgdGVzdF9oYXNoX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICAjIE1lbW9yeXZpZXdzIG9mIHdyaXRhYmxlIHR5cGVzIGFyZSB1bmhhc2hhYmxlCisgICAgICAgIHRwID0gc2VsZi5yd190eXBlCisgICAgICAgIGlmIHRwIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyB3cml0YWJsZSB0eXBlIHRvIHRlc3QiKQorICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQorICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoYXNoLCBtKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgIyBDaGVjayBtZW1vcnl2aWV3cyBhcmUgd2Vha3JlZmFibGUKKyAgICAgICAgZm9yIHRwIGluIHNlbGYuX3R5cGVzOgorICAgICAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKKyAgICAgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgICAgICBMID0gW10KKyAgICAgICAgICAgIGRlZiBjYWxsYmFjayh3ciwgYj1iKToKKyAgICAgICAgICAgICAgICBMLmFwcGVuZChiKQorICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihtLCBjYWxsYmFjaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgbSkKKyAgICAgICAgICAgIGRlbCBtCisgICAgICAgICAgICB0ZXN0LnN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKExbMF0sIGIpCisKICMgVmFyaWF0aW9ucyBvbiBzb3VyY2Ugb2JqZWN0cyBmb3IgdGhlIGJ1ZmZlcjogYnl0ZXMtbGlrZSBvYmplY3RzLCB0aGVuIGFycmF5cwogIyB3aXRoIGl0ZW1zaXplID4gMS4KICMgTk9URTogc3VwcG9ydCBmb3IgbXVsdGktZGltZW5zaW9uYWwgb2JqZWN0cyBpcyB1bmltcGxlbWVudGVkLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkgYi9MaWIvdGVzdC90ZXN0X21ldGFjbGFzcy5weQppbmRleCAyMTlhYjk5Li5lNmZlMjBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21ldGFjbGFzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X21ldGFjbGFzcy5weQpAQCAtMTU5LDYgKzE1OSw3IEBACiAgICAgLi4uICAgICBiYXIgPSAxMjMKICAgICAuLi4KICAgICBkWydfX21vZHVsZV9fJ10gPSAndGVzdC50ZXN0X21ldGFjbGFzcycKKyAgICBkWydfX3F1YWxuYW1lX18nXSA9ICdDJwogICAgIGRbJ2ZvbyddID0gNAogICAgIGRbJ2ZvbyddID0gNDIKICAgICBkWydiYXInXSA9IDEyMwpAQCAtMTc3LDEyICsxNzgsMTIgQEAKICAgICAuLi4gICAgIGIgPSAyNAogICAgIC4uLgogICAgIG1ldGE6IEMgKCkKLSAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQorICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdfX3F1YWxuYW1lX18nLCAnQycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KICAgICBrdzogW10KICAgICA+Pj4gdHlwZShDKSBpcyBkaWN0CiAgICAgVHJ1ZQogICAgID4+PiBwcmludChzb3J0ZWQoQy5pdGVtcygpKSkKLSAgICBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCisgICAgWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnX19xdWFsbmFtZV9fJywgJ0MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCiAgICAgPj4+CiAKIEFuZCBhZ2Fpbiwgd2l0aCBhIF9fcHJlcGFyZV9fIGF0dHJpYnV0ZS4KQEAgLTE5OSwxMSArMjAwLDEyIEBACiAgICAgLi4uCiAgICAgcHJlcGFyZTogQyAoKSBbKCdvdGhlcicsICdib29oJyldCiAgICAgZFsnX19tb2R1bGVfXyddID0gJ3Rlc3QudGVzdF9tZXRhY2xhc3MnCisgICAgZFsnX19xdWFsbmFtZV9fJ10gPSAnQycKICAgICBkWydhJ10gPSAxCiAgICAgZFsnYSddID0gMgogICAgIGRbJ2InXSA9IDMKICAgICBtZXRhOiBDICgpCi0gICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ2EnLCAyKSwgKCdiJywgMyldCisgICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ19fcXVhbG5hbWVfXycsICdDJyksICgnYScsIDIpLCAoJ2InLCAzKV0KICAgICBrdzogWygnb3RoZXInLCAnYm9vaCcpXQogICAgID4+PgogCkBAIC0yNDYsNyArMjQ4LDEzIEBACiAKICIiIgogCi1fX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CitpbXBvcnQgc3lzCisKKyMgVHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHdoaWNoIGNhdXNlcyB2YXJpb3VzIHRlc3RzIHRvIGZhaWwuCitpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpOgorICAgIF9fdGVzdF9fID0ge30KK2Vsc2U6CisgICAgX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CmluZGV4IDgwODEyYzguLjU4NjdiMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKQEAgLTQsOSArNCw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCB4bWwuZG9tCiBpbXBvcnQgeG1sLmRvbS5taW5pZG9tCi1pbXBvcnQgeG1sLnBhcnNlcnMuZXhwYXQKIAogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IHBhcnNlLCBOb2RlLCBEb2N1bWVudCwgcGFyc2VTdHJpbmcKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBnZXRET01JbXBsZW1lbnRhdGlvbgpAQCAtMTQsNyArMTIsNiBAQAogCiB0c3RmaWxlID0gZmluZGZpbGUoInRlc3QueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiAKLQogIyBUaGUgdGVzdHMgb2YgRG9jdW1lbnRUeXBlIGltcG9ydGluZyB1c2UgdGhlc2UgaGVscGVycyB0byBjb25zdHJ1Y3QKICMgdGhlIGRvY3VtZW50cyB0byB3b3JrIHdpdGgsIHNpbmNlIG5vdCBhbGwgRE9NIGJ1aWxkZXJzIGFjdHVhbGx5CiAjIGNyZWF0ZSB0aGUgRG9jdW1lbnRUeXBlIG5vZGVzLgpAQCAtNTAsNyArNDcsNyBAQAogCiAgICAgZGVmIGNoZWNrV2hvbGVUZXh0KHNlbGYsIG5vZGUsIHMpOgogICAgICAgICB0ID0gbm9kZS53aG9sZVRleHQKLSAgICAgICAgc2VsZi5jb25maXJtKHQgPT0gcywgImxvb2tpbmcgZm9yICVzLCBmb3VuZCAlcyIgJSAocmVwcihzKSwgcmVwcih0KSkpCisgICAgICAgIHNlbGYuY29uZmlybSh0ID09IHMsICJsb29raW5nIGZvciAlciwgZm91bmQgJXIiICUgKHMsIHQpKQogCiAgICAgZGVmIHRlc3RQYXJzZUZyb21GaWxlKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4odHN0ZmlsZSkgYXMgZmlsZToKQEAgLTI4Miw2ICsyNzksNyBAQAogCiAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgiZGVmIiwgImdoaSIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlLCAiZm9vIikKICAgICAgICAgY2hpbGQucmVtb3ZlQXR0cmlidXRlKCJkZWYiKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDApCiAgICAgICAgIGRvbS51bmxpbmsoKQpAQCAtMjkzLDYgKzI5MSw4IEBACiAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZyIsICJ4bWxuczpweXRob24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCAicHl0aG9uOmFiY2F0dHIiLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTlMsCisgICAgICAgICAgICAiZm9vIiwgImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMikKICAgICAgICAgY2hpbGQucmVtb3ZlQXR0cmlidXRlTlMoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsICJhYmNhdHRyIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAxKQpAQCAtMzA0LDExICszMDQsMjMgQEAKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCJzcGFtIiwgImphbSIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMSkKICAgICAgICAgbm9kZSA9IGNoaWxkLmdldEF0dHJpYnV0ZU5vZGUoInNwYW0iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh4bWwuZG9tLk5vdEZvdW5kRXJyLCBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOb2RlLAorICAgICAgICAgICAgTm9uZSkKICAgICAgICAgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZShub2RlKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDAKICAgICAgICAgICAgICAgICBhbmQgY2hpbGQuZ2V0QXR0cmlidXRlTm9kZSgic3BhbSIpIGlzIE5vbmUpCisgICAgICAgIGRvbTIgPSBEb2N1bWVudCgpCisgICAgICAgIGNoaWxkMiA9IGRvbTIuYXBwZW5kQ2hpbGQoZG9tLmNyZWF0ZUVsZW1lbnQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh4bWwuZG9tLk5vdEZvdW5kRXJyLCBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOb2RlLAorICAgICAgICAgICAgbm9kZSkKICAgICAgICAgZG9tLnVubGluaygpCiAKKyAgICBkZWYgdGVzdEhhc0F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgZG9tID0gRG9jdW1lbnQoKQorICAgICAgICBjaGlsZCA9IGRvbS5hcHBlbmRDaGlsZChkb20uY3JlYXRlRWxlbWVudCgiZm9vIikpCisgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgic3BhbSIsICJqYW0iKQorICAgICAgICBzZWxmLmNvbmZpcm0oY2hpbGQuaGFzQXR0cmlidXRlKCJzcGFtIikpCisKICAgICBkZWYgdGVzdENoYW5nZUF0dHIoc2VsZik6CiAgICAgICAgIGRvbSA9IHBhcnNlU3RyaW5nKCI8YWJjLz4iKQogICAgICAgICBlbCA9IGRvbS5kb2N1bWVudEVsZW1lbnQKQEAgLTU5Miw3ICs2MDQsMTMgQEAKIAogICAgIGRlZiB0ZXN0Rmlyc3RDaGlsZChzZWxmKTogcGFzcwogCi0gICAgZGVmIHRlc3RIYXNDaGlsZE5vZGVzKHNlbGYpOiBwYXNzCisgICAgZGVmIHRlc3RIYXNDaGlsZE5vZGVzKHNlbGYpOgorICAgICAgICBkb20gPSBwYXJzZVN0cmluZygiPGRvYz48Zm9vLz48L2RvYz4iKQorICAgICAgICBkb2MgPSBkb20uZG9jdW1lbnRFbGVtZW50CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkb20uaGFzQ2hpbGROb2RlcygpKQorICAgICAgICBkb20yID0gcGFyc2VTdHJpbmcoIjxkb2MvPiIpCisgICAgICAgIGRvYzIgPSBkb20yLmRvY3VtZW50RWxlbWVudAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRvYzIuaGFzQ2hpbGROb2RlcygpKQogCiAgICAgZGVmIF90ZXN0Q2xvbmVFbGVtZW50Q29waWVzQXR0cmlidXRlcyhzZWxmLCBlMSwgZTIsIHRlc3QpOgogICAgICAgICBhdHRyczEgPSBlMS5hdHRyaWJ1dGVzCkBAIC0xMDQxLDQxICsxMDU5LDYgQEAKICAgICAgICAgICAgICAgICAidGVzdCBOb2RlTGlzdC5pdGVtKCkiKQogICAgICAgICBkb2MudW5saW5rKCkKIAotICAgIGRlZiB0ZXN0U0FYMkRPTShzZWxmKToKLSAgICAgICAgZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCi0KLSAgICAgICAgc2F4MmRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCi0gICAgICAgIHNheDJkb20uc3RhcnREb2N1bWVudCgpCi0gICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJkb2MiLCB7fSkKLSAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKLSAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoInN1YmVsbSIsIHt9KQotICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQotICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoInN1YmVsbSIpCi0gICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCi0gICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgiZG9jIikKLSAgICAgICAgc2F4MmRvbS5lbmREb2N1bWVudCgpCi0KLSAgICAgICAgZG9jID0gc2F4MmRvbS5kb2N1bWVudAotICAgICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudAotICAgICAgICAodGV4dDEsIGVsbTEsIHRleHQyKSA9IHJvb3QuY2hpbGROb2RlcwotICAgICAgICB0ZXh0MyA9IGVsbTEuY2hpbGROb2Rlc1swXQotCi0gICAgICAgIHNlbGYuY29uZmlybSh0ZXh0MS5wcmV2aW91c1NpYmxpbmcgaXMgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0MS5uZXh0U2libGluZyBpcyBlbG0xIGFuZAotICAgICAgICAgICAgICAgIGVsbTEucHJldmlvdXNTaWJsaW5nIGlzIHRleHQxIGFuZAotICAgICAgICAgICAgICAgIGVsbTEubmV4dFNpYmxpbmcgaXMgdGV4dDIgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDIucHJldmlvdXNTaWJsaW5nIGlzIGVsbTEgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDIubmV4dFNpYmxpbmcgaXMgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0My5wcmV2aW91c1NpYmxpbmcgaXMgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0My5uZXh0U2libGluZyBpcyBOb25lLCAidGVzdFNBWDJET00gLSBzaWJsaW5ncyIpCi0KLSAgICAgICAgc2VsZi5jb25maXJtKHJvb3QucGFyZW50Tm9kZSBpcyBkb2MgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDEucGFyZW50Tm9kZSBpcyByb290IGFuZAotICAgICAgICAgICAgICAgIGVsbTEucGFyZW50Tm9kZSBpcyByb290IGFuZAotICAgICAgICAgICAgICAgIHRleHQyLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0My5wYXJlbnROb2RlIGlzIGVsbTEsICJ0ZXN0U0FYMkRPTSAtIHBhcmVudHMiKQotICAgICAgICBkb2MudW5saW5rKCkKLQogICAgIGRlZiB0ZXN0RW5jb2RpbmdzKHNlbGYpOgogICAgICAgICBkb2MgPSBwYXJzZVN0cmluZygnPGZvbz4mI3gyMGFjOzwvZm9vPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9jLnRveG1sKCksCkBAIC0xMDg0LDYgKzEwNjcsMTEgQEAKICAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48Zm9vPlx4ZTJceDgyXHhhYzwvZm9vPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9jLnRveG1sKCdpc28tODg1OS0xNScpLAogICAgICAgICAgICAgYic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xNSI/Pjxmb28+XHhhNDwvZm9vPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9jLnRveG1sKCd1cy1hc2NpaScpLAorICAgICAgICAgICAgYic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1cy1hc2NpaSI/Pjxmb28+JiM4MzY0OzwvZm9vPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9jLnRveG1sKCd1dGYtMTYnKSwKKyAgICAgICAgICAgICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtMTYiPz4nCisgICAgICAgICAgICAnPGZvbz5cdTIwYWM8L2Zvbz4nLmVuY29kZSgndXRmLTE2JykpCiAKICAgICAgICAgIyBWZXJpZnkgdGhhdCBjaGFyYWN0ZXIgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGV4Y2VwdGlvbnMgaW5zdGVhZAogICAgICAgICAjIG9mIGNyYXNoaW5nCkBAIC0xNTIyLDEyICsxNTEwLDIxIEBACiAgICAgICAgIGRvYy5hcHBlbmRDaGlsZChkb2MuY3JlYXRlQ29tbWVudCgiZm9vLS1iYXIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZG9jLnRveG1sKQogCisKICAgICBkZWYgdGVzdEVtcHR5WE1MTlNWYWx1ZShzZWxmKToKICAgICAgICAgZG9jID0gcGFyc2VTdHJpbmcoIjxlbGVtZW50IHhtbG5zPScnPlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiPGZvby8+XG48L2VsZW1lbnQ+IikKICAgICAgICAgZG9jMiA9IHBhcnNlU3RyaW5nKGRvYy50b3htbCgpKQogICAgICAgICBzZWxmLmNvbmZpcm0oZG9jMi5uYW1lc3BhY2VVUkkgPT0geG1sLmRvbS5FTVBUWV9OQU1FU1BBQ0UpCiAKKyAgICBkZWYgdGVzdERvY1JlbW92ZUNoaWxkKHNlbGYpOgorICAgICAgICBkb2MgPSBwYXJzZSh0c3RmaWxlKQorICAgICAgICB0aXRsZV90YWcgPSBkb2MuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJUSVRMRSIpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKCB4bWwuZG9tLk5vdEZvdW5kRXJyLCBkb2MucmVtb3ZlQ2hpbGQsIHRpdGxlX3RhZykKKyAgICAgICAgbnVtX2NoaWxkcmVuX2JlZm9yZSA9IGxlbihkb2MuY2hpbGROb2RlcykKKyAgICAgICAgZG9jLnJlbW92ZUNoaWxkKGRvYy5jaGlsZE5vZGVzWzBdKQorICAgICAgICBudW1fY2hpbGRyZW5fYWZ0ZXIgPSBsZW4oZG9jLmNoaWxkTm9kZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudW1fY2hpbGRyZW5fYWZ0ZXIgPT0gbnVtX2NoaWxkcmVuX2JlZm9yZSAtIDEpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoTWluaWRvbVRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21tYXAucHkgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKaW5kZXggMjhiNTJhOS4uYTNkZTM5OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQpAQCAtNDE3LDYgKzQxNywzNSBAQAogICAgICAgICAgICAgbVt4XSA9IGIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVt4XSwgYikKIAorICAgIGRlZiB0ZXN0X3JlYWRfYWxsKHNlbGYpOgorICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG0uY2xvc2UpCisKKyAgICAgICAgIyBXaXRoIG5vIHBhcmFtZXRlcnMsIG9yIE5vbmUgb3IgYSBuZWdhdGl2ZSBhcmd1bWVudCwgcmVhZHMgYWxsCisgICAgICAgIG0ud3JpdGUoYnl0ZXMocmFuZ2UoMTYpKSkKKyAgICAgICAgbS5zZWVrKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKCksIGJ5dGVzKHJhbmdlKDE2KSkpCisgICAgICAgIG0uc2Vlayg4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBieXRlcyhyYW5nZSg4LCAxNikpKQorICAgICAgICBtLnNlZWsoMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKCksIGInJykKKyAgICAgICAgbS5zZWVrKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKE5vbmUpLCBieXRlcyhyYW5nZSgzLCAxNikpKQorICAgICAgICBtLnNlZWsoNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoLTEpLCBieXRlcyhyYW5nZSg0LCAxNikpKQorICAgICAgICBtLnNlZWsoNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoLTIpLCBieXRlcyhyYW5nZSg1LCAxNikpKQorICAgICAgICBtLnNlZWsoOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoLTQyKSwgYnl0ZXMocmFuZ2UoOSwgMTYpKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfaW52YWxpZF9hcmcoc2VsZik6CisgICAgICAgIG0gPSBtbWFwLm1tYXAoLTEsIDE2KQorICAgICAgICBzZWxmLmFkZENsZWFudXAobS5jbG9zZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5yZWFkLCA1LjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5yZWFkLCBbMSwgMiwgM10pCisKICAgICBkZWYgdGVzdF9leHRlbmRlZF9nZXRzbGljZShzZWxmKToKICAgICAgICAgIyBUZXN0IGV4dGVuZGVkIHNsaWNpbmcgYnkgY29tcGFyaW5nIHdpdGggbGlzdCBzbGljaW5nLgogICAgICAgICBzID0gYnl0ZXMocmV2ZXJzZWQocmFuZ2UoMjU2KSkpCkBAIC01NDMsOCArNTcyLDcgQEAKICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MobW1hcC5lcnJvciwgRW52aXJvbm1lbnRFcnJvcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1tYXAuZXJyb3IiLCBzdHIobW1hcC5lcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW1hcC5lcnJvciwgT1NFcnJvcikKIAogICAgIGRlZiB0ZXN0X2lvX21ldGhvZHMoc2VsZik6CiAgICAgICAgIGRhdGEgPSBiIjAxMjM0NTY3ODkiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CmluZGV4IDE1ODM2Y2EuLmU1YTI1MjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CkBAIC01LDYgKzUsMTUgQEAKIGltcG9ydCBzeXMKIE1vZHVsZVR5cGUgPSB0eXBlKHN5cykKIAorY2xhc3MgRnVsbExvYWRlcjoKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKGNyYWZ0ZWQpPiIuZm9ybWF0KG0uX19uYW1lX18pCisKK2NsYXNzIEJhcmVMb2FkZXI6CisgICAgcGFzcworCisKIGNsYXNzIE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF91bmluaXRpYWxpemVkKHNlbGYpOgogICAgICAgICAjIEFuIHVuaW5pdGlhbGl6ZWQgbW9kdWxlIGhhcyBubyBfX2RpY3RfXyBvciBfX25hbWVfXywKQEAgLTcwLDE2ICs3OSwxMDAgQEAKICAgICAgICAgbSA9IE1vZHVsZVR5cGUoImZvbyIpCiAgICAgICAgIG0uZGVzdHJveWVkID0gZGVzdHJveWVkCiAgICAgICAgIHMgPSAiIiJjbGFzcyBBOgotICAgIGRlZiBfX2RlbF9fKHNlbGYsIGRlc3Ryb3llZD1kZXN0cm95ZWQpOgotICAgICAgICBkZXN0cm95ZWQuYXBwZW5kKDEpCi1hID0gQSgpIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGwpOgorICAgICAgICBzZWxmLmwgPSBsCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIHNlbGYubC5hcHBlbmQoMSkKK2EgPSBBKGRlc3Ryb3llZCkiIiIKICAgICAgICAgZXhlYyhzLCBtLl9fZGljdF9fKQogICAgICAgICBkZWwgbQogICAgICAgICBnY19jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXN0cm95ZWQsIFsxXSkKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX21pbmltYWwoc2VsZik6CisgICAgICAgICMgcmVwcnMgd2hlbiBtb2R1bGVzIGhhdmUgbm8gX19maWxlX18sIF9fbmFtZV9fLCBvciBfX2xvYWRlcl9fCisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBkZWwgbS5fX25hbWVfXworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICc/Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9uYW1lKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnZm9vJz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9uYW1lX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2ZpbGVuYW1lX29ubHkoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBkZWwgbS5fX25hbWVfXworICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICc/JyBmcm9tICcvdG1wL2Zvby5weSc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfYmFyZV9sb2FkZXJfYnV0X25vX25hbWUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBkZWwgbS5fX25hbWVfXworICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEJhcmVMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkJhcmVMb2FkZXInPik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZnVsbF9sb2FkZXJfYnV0X25vX25hbWUoc2VsZik6CisgICAgICAgICMgbS5fX2xvYWRlcl9fLm1vZHVsZV9yZXByKCkgd2lsbCBmYWlsIGJlY2F1c2UgdGhlIG1vZHVsZSBoYXMgbm8KKyAgICAgICAgIyBtLl9fbmFtZV9fLiAgVGhpcyBleGNlcHRpb24gd2lsbCBnZXQgc3VwcHJlc3NlZCBhbmQgaW5zdGVhZCB0aGUKKyAgICAgICAgIyBsb2FkZXIncyByZXByIHdpbGwgYmUgdXNlZC4KKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJz8nICg8Y2xhc3MgJ3Rlc3QudGVzdF9tb2R1bGUuRnVsbExvYWRlcic+KT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9iYXJlX2xvYWRlcihzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gQmFyZUxvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKDxjbGFzcyAndGVzdC50ZXN0X21vZHVsZS5CYXJlTG9hZGVyJz4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBGdWxsTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnZm9vJyAoY3JhZnRlZCk+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfYmFyZV9sb2FkZXJfYW5kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICAjIEJlY2F1c2UgdGhlIGxvYWRlciBoYXMgbm8gbW9kdWxlX3JlcHIoKSwgdXNlIHRoZSBmaWxlIG5hbWUuCisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEJhcmVMb2FkZXIKKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnZm9vJyBmcm9tICcvdG1wL2Zvby5weSc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZnVsbF9sb2FkZXJfYW5kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICAjIEV2ZW4gdGhvdWdoIHRoZSBtb2R1bGUgaGFzIGFuIF9fZmlsZV9fLCB1c2UgX19sb2FkZXJfXy5tb2R1bGVfcmVwcigpCisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEZ1bGxMb2FkZXIKKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnZm9vJyAoY3JhZnRlZCk+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX2J1aWx0aW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzeXMpLCAiPG1vZHVsZSAnc3lzJyAoYnVpbHQtaW4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9zb3VyY2Uoc2VsZik6CisgICAgICAgIHIgPSByZXByKHVuaXR0ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJbOjI1XSwgIjxtb2R1bGUgJ3VuaXR0ZXN0JyBmcm9tICciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJbLTEzOl0sICJfX2luaXRfXy5weSc+IikKKworICAgICMgZnJvemVuIGFuZCBuYW1lc3BhY2UgbW9kdWxlIHJlcHJzIGFyZSB0ZXN0ZWQgaW4gaW1wb3J0bGliLgorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoTW9kdWxlVGVzdHMpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X21vZHVsZWZpbmRlci5weQppbmRleCBhMTg0MjE3Li41M2VhMjMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X21vZHVsZWZpbmRlci5weQpAQCAtMSw3ICsxLDcgQEAKLWltcG9ydCBfX2Z1dHVyZV9fCiBpbXBvcnQgb3MKK2ltcG9ydCBlcnJubworaW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZGlzdHV0aWxzLmRpcl91dGlsCiBpbXBvcnQgdGVtcGZpbGUKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC05LDcgKzksNyBAQAogaW1wb3J0IG1vZHVsZWZpbmRlcgogCiBURVNUX0RJUiA9IHRlbXBmaWxlLm1rZHRlbXAoKQotVEVTVF9QQVRIID0gW1RFU1RfRElSLCBvcy5wYXRoLmRpcm5hbWUoX19mdXR1cmVfXy5fX2ZpbGVfXyldCitURVNUX1BBVEggPSBbVEVTVF9ESVIsIG9zLnBhdGguZGlybmFtZSh0ZW1wZmlsZS5fX2ZpbGVfXyldCiAKICMgRWFjaCB0ZXN0IGRlc2NyaXB0aW9uIGlzIGEgbGlzdCBvZiA1IGl0ZW1zOgogIwpAQCAtMTk2LDEyICsxOTYsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAuIGltcG9ydCBiYXIKICIiIl0KIAorcmVsYXRpdmVfaW1wb3J0X3Rlc3RfNCA9IFsKKyAgICAiYS5tb2R1bGUiLAorICAgIFsiYSIsICJhLm1vZHVsZSJdLAorICAgIFtdLAorICAgIFtdLAorICAgICIiIlwKK2EvX19pbml0X18ucHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCithL21vZHVsZS5weQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIC4gaW1wb3J0ICoKKyIiIl0KKworCiBkZWYgb3Blbl9maWxlKHBhdGgpOgotICAgICMjcHJpbnQgIiMiLCBvcy5wYXRoLmFic3BhdGgocGF0aCkKICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCi0gICAgZGlzdHV0aWxzLmRpcl91dGlsLm1rcGF0aChkaXJuYW1lKQorICAgIHRyeToKKyAgICAgICAgb3MubWFrZWRpcnMoZGlybmFtZSkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKKyAgICAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIG9wZW4ocGF0aCwgInciKQogCisKIGRlZiBjcmVhdGVfcGFja2FnZShzb3VyY2UpOgogICAgIG9maSA9IE5vbmUKICAgICB0cnk6CkBAIC0yMTYsNiArMjMzLDcgQEAKICAgICAgICAgaWYgb2ZpOgogICAgICAgICAgICAgb2ZpLmNsb3NlKCkKIAorCiBjbGFzcyBNb2R1bGVGaW5kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX2RvX3Rlc3Qoc2VsZiwgaW5mbywgcmVwb3J0PUZhbHNlKToKICAgICAgICAgaW1wb3J0X3RoaXMsIG1vZHVsZXMsIG1pc3NpbmcsIG1heWJlX21pc3NpbmcsIHNvdXJjZSA9IGluZm8KQEAgLTIzNCwxOSArMjUyLDE3IEBACiAjIyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjazsgdHJhY2ViYWNrLnByaW50X2V4YygpCiAjIyAgICAgICAgICAgICAgICBzeXMucGF0aCA9IG9wYXRoCiAjIyAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIG1vZHVsZXMgPSBzZXQobW9kdWxlcykKLSAgICAgICAgICAgIGZvdW5kID0gc2V0KG1mLm1vZHVsZXMua2V5cygpKQotICAgICAgICAgICAgbW9yZSA9IGxpc3QoZm91bmQgLSBtb2R1bGVzKQotICAgICAgICAgICAgbGVzcyA9IGxpc3QobW9kdWxlcyAtIGZvdW5kKQorICAgICAgICAgICAgbW9kdWxlcyA9IHNvcnRlZChzZXQobW9kdWxlcykpCisgICAgICAgICAgICBmb3VuZCA9IHNvcnRlZChtZi5tb2R1bGVzKQogICAgICAgICAgICAgIyBjaGVjayBpZiB3ZSBmb3VuZCB3aGF0IHdlIGV4cGVjdGVkLCBub3QgbW9yZSwgbm90IGxlc3MKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG1vcmUsIGxlc3MpLCAoW10sIFtdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsIG1vZHVsZXMpCiAKICAgICAgICAgICAgICMgY2hlY2sgZm9yIG1pc3NpbmcgYW5kIG1heWJlIG1pc3NpbmcgbW9kdWxlcwogICAgICAgICAgICAgYmFkLCBtYXliZSA9IG1mLmFueV9taXNzaW5nX21heWJlKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFkLCBtaXNzaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXliZSwgbWF5YmVfbWlzc2luZykKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGRpc3R1dGlscy5kaXJfdXRpbC5yZW1vdmVfdHJlZShURVNUX0RJUikKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVF9ESVIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICBzZWxmLl9kb190ZXN0KHBhY2thZ2VfdGVzdCkKQEAgLTI1NCwyNSArMjcwLDI2IEBACiAgICAgZGVmIHRlc3RfbWF5YmUoc2VsZik6CiAgICAgICAgIHNlbGYuX2RvX3Rlc3QobWF5YmVfdGVzdCkKIAotICAgIGlmIGdldGF0dHIoX19mdXR1cmVfXywgImFic29sdXRlX2ltcG9ydCIsIE5vbmUpOgorICAgIGRlZiB0ZXN0X21heWJlX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChtYXliZV90ZXN0X25ldykKIAotICAgICAgICBkZWYgdGVzdF9tYXliZV9uZXcoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KG1heWJlX3Rlc3RfbmV3KQorICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydHMoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QoYWJzb2x1dGVfaW1wb3J0X3Rlc3QpCiAKLSAgICAgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0cyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QoYWJzb2x1dGVfaW1wb3J0X3Rlc3QpCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdCkKIAotICAgICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdCkKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzIoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMikKIAotICAgICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzIoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzIpCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18zKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzMpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18zKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8zKQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfNChzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF80KQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBkaXN0dXRpbHMubG9nLnNldF90aHJlc2hvbGQoZGlzdHV0aWxzLmxvZy5XQVJOKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZUZpbmRlclRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQppbmRleCA4NmM2OGRjLi5mZWI3YmQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKQEAgLTI0NywyMCArMjQ3LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFueSh4ID4gMHg4MCBmb3IgeCBpbiBlKSkKIAogICAgIGRlZiB0ZXN0X2J1ZzE1NzI4MzIoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID49IDB4MTAwMDA6Ci0gICAgICAgICAgICBteXVuaWNociA9IGNocgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXl1bmljaHIgPSBsYW1iZGEgeDogY2hyKDB4RDdDMCsoeD4+MTApKSArIGNocigweERDMDArKHgmMHgzRkYpKQotCiAgICAgICAgIGZvciB4IGluIHJhbmdlKDB4MTAwMDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgICMgQW55IElTTyAyMDIyIGNvZGVjIHdpbGwgY2F1c2UgdGhlIHNlZ2ZhdWx0Ci0gICAgICAgICAgICBteXVuaWNocih4KS5lbmNvZGUoJ2lzb18yMDIyX2pwJywgJ2lnbm9yZScpCisgICAgICAgICAgICBjaHIoeCkuZW5jb2RlKCdpc29fMjAyMl9qcCcsICdpZ25vcmUnKQogCiBjbGFzcyBUZXN0U3RhdGVmdWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHRleHQgPSAnXHU0RTE2XHU0RTE2JwogICAgIGVuY29kaW5nID0gJ2lzby0yMDIyLWpwJwogICAgIGV4cGVjdGVkID0gYidceDFiJEJAJEAkJwotICAgIGV4cGVjdGVkX3Jlc2V0ID0gYidceDFiJEJAJEAkXHgxYihCJworICAgIHJlc2V0ID0gYidceDFiKEInCisgICAgZXhwZWN0ZWRfcmVzZXQgPSBleHBlY3RlZCArIHJlc2V0CiAKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmVuY29kZShzZWxmLmVuY29kaW5nKSwgc2VsZi5leHBlY3RlZF9yZXNldCkKQEAgLTI3MSw2ICsyNjcsOCBAQAogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2hhcikKICAgICAgICAgICAgIGZvciBjaGFyIGluIHNlbGYudGV4dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHNlbGYuZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBzZWxmLnJlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKSwgYicnKQogCiAgICAgZGVmIHRlc3RfaW5jcmVtZW50YWxlbmNvZGVyX2ZpbmFsKHNlbGYpOgogICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGluY3JlbWVudGFsZW5jb2RlcihzZWxmLmVuY29kaW5nKSgpCkBAIC0yNzksMTIgKzI3NywxNCBAQAogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2hhciwgaW5kZXggPT0gbGFzdF9pbmRleCkKICAgICAgICAgICAgIGZvciBpbmRleCwgY2hhciBpbiBlbnVtZXJhdGUoc2VsZi50ZXh0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHNlbGYuZXhwZWN0ZWRfcmVzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBiJycpCiAKIGNsYXNzIFRlc3RIWlN0YXRlZnVsKFRlc3RTdGF0ZWZ1bCk6CiAgICAgdGV4dCA9ICdcdTgwNGFcdTgwNGEnCiAgICAgZW5jb2RpbmcgPSAnaHonCiAgICAgZXhwZWN0ZWQgPSBiJ357QURBRCcKLSAgICBleHBlY3RlZF9yZXNldCA9IGInfntBREFEfn0nCisgICAgcmVzZXQgPSBiJ359JworICAgIGV4cGVjdGVkX3Jlc2V0ID0gZXhwZWN0ZWQgKyByZXNldAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IGZhNDg2NWIuLmMzOGIzMTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IHF1ZXVlIGFzIHB5cXVldWUKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW8KK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGdjCkBAIC0xNyw2ICsxOCw3IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHN0cnVjdAogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHRlc3Quc2NyaXB0X2hlbHBlcgogCkBAIC04NCw2ICs4NiwxMyBAQAogCiBXSU4zMiA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCitkZWYgd2FpdF9mb3JfaGFuZGxlKGhhbmRsZSwgdGltZW91dCk6CisgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgdGltZW91dCA8IDAuMDoKKyAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICByZXR1cm4gd2FpdChbaGFuZGxlXSwgdGltZW91dCkKKwogdHJ5OgogICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQogZXhjZXB0OgpAQCAtMTk3LDYgKzIwNiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJlbnQuaWRlbnQsIG9zLmdldHBpZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJlbnQuZXhpdGNvZGUsIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9kYWVtb25fYXJndW1lbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAidGhyZWFkcyI6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEJ5IGRlZmF1bHQgdXNlcyB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZGFlbW9uIGZsYWcuCisgICAgICAgIHByb2MwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2MwLmRhZW1vbiwgc2VsZi5jdXJyZW50X3Byb2Nlc3MoKS5kYWVtb24pCisgICAgICAgIHByb2MxID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0LCBkYWVtb249VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2MxLmRhZW1vbikKKyAgICAgICAgcHJvYzIgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QsIGRhZW1vbj1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jMi5kYWVtb24pCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3Rlc3QoY2xzLCBxLCAqYXJncywgKiprd2RzKToKICAgICAgICAgY3VycmVudCA9IGNscy5jdXJyZW50X3Byb2Nlc3MoKQpAQCAtMjYyLDkgKzI4MywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHAsIHNlbGYuYWN0aXZlX2NoaWxkcmVuKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leGl0Y29kZSwgTm9uZSkKIAorICAgICAgICBqb2luID0gVGltaW5nV3JhcHBlcihwLmpvaW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqb2luKDApLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuaXNfYWxpdmUoKSwgVHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oLTEpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuaXNfYWxpdmUoKSwgVHJ1ZSkKKwogICAgICAgICBwLnRlcm1pbmF0ZSgpCiAKLSAgICAgICAgam9pbiA9IFRpbWluZ1dyYXBwZXIocC5qb2luKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChqb2luLmVsYXBzZWQsIDAuMCkKIApAQCAtMzI5LDYgKzM1OSwyNiBAQAogICAgICAgICAgICAgXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfc2VudGluZWwoY2xzLCBldmVudCk6CisgICAgICAgIGV2ZW50LndhaXQoMTAuMCkKKworICAgIGRlZiB0ZXN0X3NlbnRpbmVsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gInRocmVhZHMiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV2ZW50ID0gc2VsZi5FdmVudCgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfc2VudGluZWwsIGFyZ3M9KGV2ZW50LCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwLnNlbnRpbmVsCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorICAgICAgICBzZW50aW5lbCA9IHAuc2VudGluZWwKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbnRpbmVsLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod2FpdF9mb3JfaGFuZGxlKHNlbnRpbmVsLCB0aW1lb3V0PTAuMCkpCisgICAgICAgIGV2ZW50LnNldCgpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YWl0X2Zvcl9oYW5kbGUoc2VudGluZWwsIHRpbWVvdXQ9REVMVEEpKQorCiAjCiAjCiAjCkBAIC04NjgsNiArOTE4LDEwNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwod2FpdC5lbGFwc2VkLCBUSU1FT1VUMSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0Zm9yX2YoY2xzLCBjb25kLCBzdGF0ZSk6CisgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgIHN0YXRlLnZhbHVlID0gMAorICAgICAgICAgICAgY29uZC5ub3RpZnkoKQorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09NCkKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHQgb3Igc3RhdGUudmFsdWUgIT0gNDoKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1NIQVJFRENUWVBFUywgJ25lZWRzIHNoYXJlZGN0eXBlcycpCisgICAgZGVmIHRlc3Rfd2FpdGZvcihzZWxmKToKKyAgICAgICAgIyBiYXNlZCBvbiB0ZXN0IGluIHRlc3QvbG9ja190ZXN0cy5weQorICAgICAgICBjb25kID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICBzdGF0ZSA9IHNlbGYuVmFsdWUoJ2knLCAtMSkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRmb3JfZiwgYXJncz0oY29uZCwgc3RhdGUpKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlLnZhbHVlLCAwKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgICAgIHN0YXRlLnZhbHVlICs9IDEKKyAgICAgICAgICAgICAgICBjb25kLm5vdGlmeSgpCisKKyAgICAgICAgcC5qb2luKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5pc19hbGl2ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhpdGNvZGUsIDApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdGZvcl90aW1lb3V0X2YoY2xzLCBjb25kLCBzdGF0ZSwgc3VjY2Vzcywgc2VtKToKKyAgICAgICAgc2VtLnJlbGVhc2UoKQorICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICBleHBlY3RlZCA9IDAuMQorICAgICAgICAgICAgZHQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09NCwgdGltZW91dD1leHBlY3RlZCkKKyAgICAgICAgICAgIGR0ID0gdGltZS50aW1lKCkgLSBkdAorICAgICAgICAgICAgIyBib3Jyb3cgbG9naWMgaW4gYXNzZXJ0VGltZW91dCgpIGZyb20gdGVzdC9sb2NrX3Rlc3RzLnB5CisgICAgICAgICAgICBpZiBub3QgcmVzdWx0IGFuZCBleHBlY3RlZCAqIDAuNiA8IGR0IDwgZXhwZWN0ZWQgKiAxMC4wOgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MudmFsdWUgPSBUcnVlCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfU0hBUkVEQ1RZUEVTLCAnbmVlZHMgc2hhcmVkY3R5cGVzJykKKyAgICBkZWYgdGVzdF93YWl0Zm9yX3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgYmFzZWQgb24gdGVzdCBpbiB0ZXN0L2xvY2tfdGVzdHMucHkKKyAgICAgICAgY29uZCA9IHNlbGYuQ29uZGl0aW9uKCkKKyAgICAgICAgc3RhdGUgPSBzZWxmLlZhbHVlKCdpJywgMCkKKyAgICAgICAgc3VjY2VzcyA9IHNlbGYuVmFsdWUoJ2knLCBGYWxzZSkKKyAgICAgICAgc2VtID0gc2VsZi5TZW1hcGhvcmUoMCkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRmb3JfdGltZW91dF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KGNvbmQsIHN0YXRlLCBzdWNjZXNzLCBzZW0pKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW0uYWNxdWlyZSh0aW1lb3V0PTEwKSkKKworICAgICAgICAjIE9ubHkgaW5jcmVtZW50IDMgdGltZXMsIHNvIHN0YXRlID09IDQgaXMgbmV2ZXIgcmVhY2hlZC4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICAgICAgc3RhdGUudmFsdWUgKz0gMQorICAgICAgICAgICAgICAgIGNvbmQubm90aWZ5KCkKKworICAgICAgICBwLmpvaW4oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1Y2Nlc3MudmFsdWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdF9yZXN1bHQoY2xzLCBjLCBwaWQpOgorICAgICAgICB3aXRoIGM6CisgICAgICAgICAgICBjLm5vdGlmeSgpCisgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgaWYgcGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdJTlQpCisKKyAgICBkZWYgdGVzdF93YWl0X3Jlc3VsdChzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCBQcm9jZXNzZXNNaXhpbikgYW5kIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBpZCA9IE5vbmUKKworICAgICAgICBjID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICB3aXRoIGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMud2FpdCgwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy53YWl0KDAuMSkpCisKKyAgICAgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdF9yZXN1bHQsIGFyZ3M9KGMsIHBpZCkpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMud2FpdCgxMCkpCisgICAgICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIGMud2FpdCwgMTApCisKKyAgICAgICAgICAgIHAuam9pbigpCisKIAogY2xhc3MgX1Rlc3RFdmVudChCYXNlVGVzdENhc2UpOgogCkBAIC05MTEsNiArMTA1OSwzNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3YWl0KCksIFRydWUpCiAKICMKKyMgVGVzdHMgZm9yIEJhcnJpZXIgLSBhZGFwdGVkIGZyb20gdGVzdHMgaW4gdGVzdC9sb2NrX3Rlc3RzLnB5CisjCisKKyMgTWFueSBvZiB0aGUgdGVzdHMgZm9yIHRocmVhZGluZy5CYXJyaWVyIHVzZSBhIGxpc3QgYXMgYW4gYXRvbWljCisjIGNvdW50ZXI6IGEgdmFsdWUgaXMgYXBwZW5kZWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLCBhbmQgdGhlCisjIGxlbmd0aCBvZiB0aGUgbGlzdCBnaXZlcyB0aGUgdmFsdWUuICBXZSB1c2UgdGhlIGNsYXNzIER1bW15TGlzdAorIyBmb3IgdGhlIHNhbWUgcHVycG9zZS4KKworY2xhc3MgX0R1bW15TGlzdChvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICB3cmFwcGVyID0gbXVsdGlwcm9jZXNzaW5nLmhlYXAuQnVmZmVyV3JhcHBlcihzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKKyAgICAgICAgbG9jayA9IG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fX3NldHN0YXRlX18oKHdyYXBwZXIsIGxvY2spKQorICAgICAgICBzZWxmLl9sZW5ndGhidWZbMF0gPSAwCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgKHNlbGYuX3dyYXBwZXIsIHNlbGYuX2xvY2spID0gc3RhdGUKKyAgICAgICAgc2VsZi5fbGVuZ3RoYnVmID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl93cmFwcGVyLCBzZWxmLl9sb2NrKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBfKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fbGVuZ3RoYnVmWzBdICs9IDEKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbGVuZ3RoYnVmWzBdCisKK2RlZiBfd2FpdCgpOgorICAgICMgQSBjcnVkZSB3YWl0L3lpZWxkIGZ1bmN0aW9uIG5vdCByZWx5aW5nIG9uIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgorICAgIHRpbWUuc2xlZXAoMC4wMSkKKworCitjbGFzcyBCdW5jaChvYmplY3QpOgorICAgICIiIgorICAgIEEgYnVuY2ggb2YgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlLCBmLCBhcmdzLCBuLCB3YWl0X2JlZm9yZV9leGl0PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnN0cnVjdCBhIGJ1bmNoIG9mIGBuYCB0aHJlYWRzIHJ1bm5pbmcgdGhlIHNhbWUgZnVuY3Rpb24gYGZgLgorICAgICAgICBJZiBgd2FpdF9iZWZvcmVfZXhpdGAgaXMgVHJ1ZSwgdGhlIHRocmVhZHMgd29uJ3QgdGVybWluYXRlIHVudGlsCisgICAgICAgIGRvX2ZpbmlzaCgpIGlzIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZiA9IGYKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLm4gPSBuCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IG5hbWVzcGFjZS5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLmZpbmlzaGVkID0gbmFtZXNwYWNlLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYuX2Nhbl9leGl0ID0gbmFtZXNwYWNlLkV2ZW50KCkKKyAgICAgICAgaWYgbm90IHdhaXRfYmVmb3JlX2V4aXQ6CisgICAgICAgICAgICBzZWxmLl9jYW5fZXhpdC5zZXQoKQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIHAgPSBuYW1lc3BhY2UuUHJvY2Vzcyh0YXJnZXQ9c2VsZi50YXNrKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgIGRlZiB0YXNrKHNlbGYpOgorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICBzZWxmLnN0YXJ0ZWQuYXBwZW5kKHBpZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5mKCpzZWxmLmFyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmZpbmlzaGVkLmFwcGVuZChwaWQpCisgICAgICAgICAgICBzZWxmLl9jYW5fZXhpdC53YWl0KDMwKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2Nhbl9leGl0LmlzX3NldCgpCisKKyAgICBkZWYgd2FpdF9mb3Jfc3RhcnRlZChzZWxmKToKKyAgICAgICAgd2hpbGUgbGVuKHNlbGYuc3RhcnRlZCkgPCBzZWxmLm46CisgICAgICAgICAgICBfd2FpdCgpCisKKyAgICBkZWYgd2FpdF9mb3JfZmluaXNoZWQoc2VsZik6CisgICAgICAgIHdoaWxlIGxlbihzZWxmLmZpbmlzaGVkKSA8IHNlbGYubjoKKyAgICAgICAgICAgIF93YWl0KCkKKworICAgIGRlZiBkb19maW5pc2goc2VsZik6CisgICAgICAgIHNlbGYuX2Nhbl9leGl0LnNldCgpCisKKworY2xhc3MgQXBwZW5kVHJ1ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLm9iaiA9IG9iagorICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5vYmouYXBwZW5kKFRydWUpCisKKworY2xhc3MgX1Rlc3RCYXJyaWVyKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdHMgZm9yIEJhcnJpZXIgb2JqZWN0cy4KKyAgICAiIiIKKyAgICBOID0gNQorICAgIGRlZmF1bHRUaW1lb3V0ID0gMzAuMCAgIyBYWFggU2xvdyBXaW5kb3dzIGJ1aWxkYm90cyBuZWVkIGdlbmVyb3VzIHRpbWVvdXQKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5iYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgdGltZW91dD1zZWxmLmRlZmF1bHRUaW1lb3V0KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmJhcnJpZXIuYWJvcnQoKQorICAgICAgICBzZWxmLmJhcnJpZXIgPSBOb25lCisKKyAgICBkZWYgRHVtbXlMaXN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3RocmVhZHMnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGVsaWYgc2VsZi5UWVBFID09ICdtYW5hZ2VyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIubGlzdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gX0R1bW15TGlzdCgpCisKKyAgICBkZWYgcnVuX3RocmVhZHMoc2VsZiwgZiwgYXJncyk6CisgICAgICAgIGIgPSBCdW5jaChzZWxmLCBmLCBhcmdzLCBzZWxmLk4tMSkKKyAgICAgICAgZigqYXJncykKKyAgICAgICAgYi53YWl0X2Zvcl9maW5pc2hlZCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbXVsdGlwYXNzKGNscywgYmFycmllciwgcmVzdWx0cywgbik6CisgICAgICAgIG0gPSBiYXJyaWVyLnBhcnRpZXMKKyAgICAgICAgYXNzZXJ0IG0gPT0gY2xzLk4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICByZXN1bHRzWzBdLmFwcGVuZChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGxlbihyZXN1bHRzWzFdKSA9PSBpICogbQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJlc3VsdHNbMV0uYXBwZW5kKFRydWUpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlc3VsdHNbMF0pID09IChpICsgMSkgKiBtCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnQgYmFycmllci5uX3dhaXRpbmcgPT0gMAorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXNzZXJ0IG5vdCBiYXJyaWVyLmJyb2tlbgorCisgICAgZGVmIHRlc3RfYmFycmllcihzZWxmLCBwYXNzZXM9MSk6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYSBiYXJyaWVyIGlzIHBhc3NlZCBpbiBsb2Nrc3RlcAorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IFtzZWxmLkR1bW15TGlzdCgpLCBzZWxmLkR1bW15TGlzdCgpXQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYubXVsdGlwYXNzLCAoc2VsZi5iYXJyaWVyLCByZXN1bHRzLCBwYXNzZXMpKQorCisgICAgZGVmIHRlc3RfYmFycmllcl8xMChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgd29ya3MgZm9yIDEwIGNvbnNlY3V0aXZlIHJ1bnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFycmllcigxMCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0X3JldHVybl9mKGNscywgYmFycmllciwgcXVldWUpOgorICAgICAgICByZXMgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBxdWV1ZS5wdXQocmVzKQorCisgICAgZGVmIHRlc3Rfd2FpdF9yZXR1cm4oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICB0ZXN0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiYXJyaWVyLndhaXQKKyAgICAgICAgIiIiCisgICAgICAgIHF1ZXVlID0gc2VsZi5RdWV1ZSgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF93YWl0X3JldHVybl9mLCAoc2VsZi5iYXJyaWVyLCBxdWV1ZSkpCisgICAgICAgIHJlc3VsdHMgPSBbcXVldWUuZ2V0KCkgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5OKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KDApLCAxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2FjdGlvbl9mKGNscywgYmFycmllciwgcmVzdWx0cyk6CisgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIGlmIGxlbihyZXN1bHRzKSAhPSAxOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICBkZWYgdGVzdF9hY3Rpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSAnYWN0aW9uJyBjYWxsYmFjaworICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIGFjdGlvbj1BcHBlbmRUcnVlKHJlc3VsdHMpKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWN0aW9uX2YsIChiYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWJvcnRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGJhcnJpZXIuYWJvcnQoKQorCisgICAgZGVmIHRlc3RfYWJvcnQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYW4gYWJvcnQgd2lsbCBwdXQgdGhlIGJhcnJpZXIgaW4gYSBicm9rZW4gc3RhdGUKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X2Fib3J0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czEpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMiksIHNlbGYuTi0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iYXJyaWVyLmJyb2tlbikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9yZXNldF9mKGNscywgYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMyk6CisgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBvdGhlciB0aHJlYWRzIGFyZSBhbGwgaW4gdGhlIGJhcnJpZXIuCisgICAgICAgICAgICB3aGlsZSBiYXJyaWVyLm5fd2FpdGluZyA8IGNscy5OLTE6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKKyAgICAgICAgICAgIGJhcnJpZXIucmVzZXQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgIyBOb3csIHBhc3MgdGhlIGJhcnJpZXIgYWdhaW4KKyAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgcmVzdWx0czMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF9yZXNldChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhICdyZXNldCcgb24gYSBiYXJyaWVyIGZyZWVzIHRoZSB3YWl0aW5nIHRocmVhZHMKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9yZXNldF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMzKSwgc2VsZi5OKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2Fib3J0X2FuZF9yZXNldF9mKGNscywgYmFycmllciwgYmFycmllcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0czIuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBiYXJyaWVyLmFib3J0KCkKKyAgICAgICAgIyBTeW5jaHJvbml6ZSBhbmQgcmVzZXQgdGhlIGJhcnJpZXIuICBNdXN0IHN5bmNocm9uaXplIGZpcnN0IHNvCisgICAgICAgICMgdGhhdCBldmVyeW9uZSBoYXMgbGVmdCBpdCB3aGVuIHdlIHJlc2V0LCBhbmQgYWZ0ZXIgc28gdGhhdCBubworICAgICAgICAjIG9uZSBlbnRlcnMgaXQgYmVmb3JlIHRoZSByZXNldC4KKyAgICAgICAgaWYgYmFycmllcjIud2FpdCgpID09IGNscy5OLy8yOgorICAgICAgICAgICAgYmFycmllci5yZXNldCgpCisgICAgICAgIGJhcnJpZXIyLndhaXQoKQorICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICByZXN1bHRzMy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0X2FuZF9yZXNldChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgY2FuIGJlIHJlc2V0IGFmdGVyIGJlaW5nIGJyb2tlbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIGJhcnJpZXIyID0gc2VsZi5CYXJyaWVyKHNlbGYuTikKKworICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWJvcnRfYW5kX3Jlc2V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgYmFycmllcjIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMzKSwgc2VsZi5OKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3RpbWVvdXRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMpOgorICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICMgT25lIHRocmVhZCBpcyBsYXRlIQorICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgwLjUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHdhaXQodGltZW91dCkKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF90aW1lb3V0X2YsIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgc2VsZi5iYXJyaWVyLnBhcnRpZXMpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfZGVmYXVsdF90aW1lb3V0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzKToKKyAgICAgICAgaSA9IGJhcnJpZXIud2FpdChjbHMuZGVmYXVsdFRpbWVvdXQpCisgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAjIE9uZSB0aHJlYWQgaXMgbGF0ZXIgdGhhbiB0aGUgZGVmYXVsdCB0aW1lb3V0CisgICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGUgYmFycmllcidzIGRlZmF1bHQgdGltZW91dAorICAgICAgICAiIiIKKyAgICAgICAgYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIHRpbWVvdXQ9MC41KQorICAgICAgICByZXN1bHRzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfZGVmYXVsdF90aW1lb3V0X2YsIChiYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIGJhcnJpZXIucGFydGllcykKKworICAgIGRlZiB0ZXN0X3NpbmdsZV90aHJlYWQoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLkJhcnJpZXIoMSkKKyAgICAgICAgYi53YWl0KCkKKyAgICAgICAgYi53YWl0KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF90aG91c2FuZF9mKGNscywgYmFycmllciwgcGFzc2VzLCBjb25uLCBsb2NrKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFzc2VzKToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICAgICAgY29ubi5zZW5kKGkpCisKKyAgICBkZWYgdGVzdF90aG91c2FuZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICdtYW5hZ2VyJzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXNzZXMgPSAxMDAwCisgICAgICAgIGxvY2sgPSBzZWxmLkxvY2soKQorICAgICAgICBjb25uLCBjaGlsZF9jb25uID0gc2VsZi5QaXBlKEZhbHNlKQorICAgICAgICBmb3IgaiBpbiByYW5nZShzZWxmLk4pOgorICAgICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF90aG91c2FuZF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5iYXJyaWVyLCBwYXNzZXMsIGNoaWxkX2Nvbm4sIGxvY2spKQorICAgICAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFzc2VzKToKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKHNlbGYuTik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3YoKSwgaSkKKworIwogIwogIwogCkBAIC0xMTMwLDYgKzE2MTIsOSBAQAogICAgIHRpbWUuc2xlZXAod2FpdCkKICAgICByZXR1cm4geCp4CiAKK2RlZiBtdWwoeCwgeSk6CisgICAgcmV0dXJuIHgqeQorCiBjbGFzcyBfVGVzdFBvb2woQmFzZVRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2FwcGx5KHNlbGYpOgpAQCAtMTE0Myw2ICsxNjI4LDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG1hcChzcXIsIGxpc3QocmFuZ2UoMTAwKSksIGNodW5rc2l6ZT0yMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChtYXAoc3FyLCBsaXN0KHJhbmdlKDEwMCkpKSkpCiAKKyAgICBkZWYgdGVzdF9zdGFybWFwKHNlbGYpOgorICAgICAgICBwc21hcCA9IHNlbGYucG9vbC5zdGFybWFwCisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwKSwgcmFuZ2UoOSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwc21hcChtdWwsIHR1cGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMDApLCByYW5nZSg5OSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwc21hcChtdWwsIHR1cGxlcywgY2h1bmtzaXplPTIwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisKKyAgICBkZWYgdGVzdF9zdGFybWFwX2FzeW5jKHNlbGYpOgorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMDApLCByYW5nZSg5OSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBvb2wuc3Rhcm1hcF9hc3luYyhtdWwsIHR1cGxlcykuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorCisgICAgZGVmIHRlc3RfbWFwX2FzeW5jKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucG9vbC5tYXBfYXN5bmMoc3FyLCBsaXN0KHJhbmdlKDEwKSkpLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QobWFwKHNxciwgbGlzdChyYW5nZSgxMCkpKSkpCisKKyAgICBkZWYgdGVzdF9tYXBfYXN5bmNfY2FsbGJhY2tzKHNlbGYpOgorICAgICAgICBjYWxsX2FyZ3MgPSBzZWxmLm1hbmFnZXIubGlzdCgpIGlmIHNlbGYuVFlQRSA9PSAnbWFuYWdlcicgZWxzZSBbXQorICAgICAgICBzZWxmLnBvb2wubWFwX2FzeW5jKGludCwgWycxJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9Y2FsbF9hcmdzLmFwcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1jYWxsX2FyZ3MuYXBwZW5kKS53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oY2FsbF9hcmdzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMV0sIGNhbGxfYXJnc1swXSkKKyAgICAgICAgc2VsZi5wb29sLm1hcF9hc3luYyhpbnQsIFsnYSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPWNhbGxfYXJncy5hcHBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Y2FsbF9hcmdzLmFwcGVuZCkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGNhbGxfYXJncykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYWxsX2FyZ3NbMV0sIFZhbHVlRXJyb3IpCisKICAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnBvb2wubWFwX2FzeW5jKHNxciwgW10sIGNodW5rc2l6ZT0xKS5nZXQodGltZW91dD1USU1FT1VUMSkKQEAgLTEyMjEsNiArMTczNywxNiBAQAogICAgICAgICBwLmNsb3NlKCkKICAgICAgICAgcC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIEwgPSBsaXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gW3NxcihpKSBmb3IgaSBpbiBMXQorICAgICAgICAgICAgd2l0aCBtdWx0aXByb2Nlc3NpbmcuUG9vbCgyKSBhcyBwOgorICAgICAgICAgICAgICAgIHIgPSBwLm1hcF9hc3luYyhzcXIsIEwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLmdldCgpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHByaW50KHAuX3N0YXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5tYXBfYXN5bmMsIHNxciwgTCkKKwogZGVmIHJhaXNpbmcoKToKICAgICByYWlzZSBLZXlFcnJvcigia2V5IikKIApAQCAtMTMyMiw2ICsxODQ4LDExIEBACiAgICAgIyBydW4gYWZ0ZXIgYWxsIHRoZSBvdGhlciB0ZXN0cyBmb3IgdGhlIG1hbmFnZXIuICBJdCB0ZXN0cyB0aGF0CiAgICAgIyB0aGVyZSBoYXZlIGJlZW4gbm8gInJlZmVyZW5jZSBsZWFrcyIgZm9yIHRoZSBtYW5hZ2VyJ3Mgc2hhcmVkCiAgICAgIyBvYmplY3RzLiAgTm90ZSB0aGUgY29tbWVudCBpbiBfVGVzdFBvb2wudGVzdF90ZXJtaW5hdGUoKS4KKworICAgICMgSWYgc29tZSBvdGhlciB0ZXN0IHVzaW5nIE1hbmFnZXJNaXhpbi5tYW5hZ2VyIGZhaWxzLCB0aGVuIHRoZQorICAgICMgcmFpc2VkIGV4Y2VwdGlvbiBtYXkga2VlcCBhbGl2ZSBhIGZyYW1lIHdoaWNoIGhvbGRzIGEgcmVmZXJlbmNlCisgICAgIyB0byBhIG1hbmFnZWQgb2JqZWN0LiAgVGhpcyB3aWxsIGNhdXNlIHRlc3RfbnVtYmVyX29mX29iamVjdHMgdG8KKyAgICAjIGFsc28gZmFpbC4KICAgICBBTExPV0VEX1RZUEVTID0gKCdtYW5hZ2VyJywpCiAKICAgICBkZWYgdGVzdF9udW1iZXJfb2Zfb2JqZWN0cyhzZWxmKToKQEAgLTEzNzYsNyArMTkwNywyNyBAQAogICAgIGRlZiB0ZXN0X215bWFuYWdlcihzZWxmKToKICAgICAgICAgbWFuYWdlciA9IE15TWFuYWdlcigpCiAgICAgICAgIG1hbmFnZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBtYW5hZ2VyLnNodXRkb3duKCkKIAorICAgICAgICAjIElmIHRoZSBtYW5hZ2VyIHByb2Nlc3MgZXhpdGVkIGNsZWFubHkgdGhlbiB0aGUgZXhpdGNvZGUKKyAgICAgICAgIyB3aWxsIGJlIHplcm8uICBPdGhlcndpc2UgKGFmdGVyIGEgc2hvcnQgdGltZW91dCkKKyAgICAgICAgIyB0ZXJtaW5hdGUoKSBpcyB1c2VkLCByZXN1bHRpbmcgaW4gYW4gZXhpdGNvZGUgb2YgLVNJR1RFUk0uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X215bWFuYWdlcl9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIE15TWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9teW1hbmFnZXJfY29udGV4dF9wcmVzdGFydGVkKHNlbGYpOgorICAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKKyAgICAgICAgbWFuYWdlci5zdGFydCgpCisgICAgICAgIHdpdGggbWFuYWdlcjoKKyAgICAgICAgICAgIHNlbGYuY29tbW9uKG1hbmFnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiBjb21tb24oc2VsZiwgbWFuYWdlcik6CiAgICAgICAgIGZvbyA9IG1hbmFnZXIuRm9vKCkKICAgICAgICAgYmFyID0gbWFuYWdlci5CYXIoKQogICAgICAgICBiYXogPSBtYW5hZ2VyLmJheigpCkBAIC0xMzk5LDcgKzE5NTAsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiYXopLCBbaSppIGZvciBpIGluIHJhbmdlKDEwKV0pCiAKLSAgICAgICAgbWFuYWdlci5zaHV0ZG93bigpCiAKICMKICMgVGVzdCBvZiBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHNlcnZlciBhbmQgdXNpbmcgeG1scnBjbGliIGZvciBzZXJpYWxpemF0aW9uCkBAIC0xNTcwLDYgKzIxMjAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwocG9sbC5lbGFwc2VkLCAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9sbCgtMSksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHBvbGwuZWxhcHNlZCwgMCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoVElNRU9VVDEpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChwb2xsLmVsYXBzZWQsIFRJTUVPVVQxKQogCkBAIC0xNzU2LDYgKzIzMDksNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZWR1Y3Rpb24ucmVjdl9oYW5kbGUsIGNvbm4pCiAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKworICAgICAgICB3aXRoIGEsIGI6CisgICAgICAgICAgICBhLnNlbmQoMTcyOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZWN2KCksIDE3MjkpCisgICAgICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhLmNsb3NlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIuY2xvc2VkKQorCisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhLmNsb3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiLmNsb3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGEucmVjdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGIucmVjdikKKworY2xhc3MgX1Rlc3RMaXN0ZW5lcihCYXNlVGVzdENhc2UpOgorCisgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9iaW5kKHNlbGYpOgorICAgICAgICBmb3IgZmFtaWx5IGluIHNlbGYuY29ubmVjdGlvbi5mYW1pbGllczoKKyAgICAgICAgICAgIGwgPSBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbWlseSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsLmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5hZGRyZXNzLCBmYW1pbHkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lcigpIGFzIGw6CisgICAgICAgICAgICB3aXRoIHNlbGYuY29ubmVjdGlvbi5DbGllbnQobC5hZGRyZXNzKSBhcyBjOgorICAgICAgICAgICAgICAgIHdpdGggbC5hY2NlcHQoKSBhcyBkOgorICAgICAgICAgICAgICAgICAgICBjLnNlbmQoMTcyOSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJlY3YoKSwgMTcyOSkKKworICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBsLmFjY2VwdCkKKwogY2xhc3MgX1Rlc3RMaXN0ZW5lckNsaWVudChCYXNlVGVzdENhc2UpOgogCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywgJ3RocmVhZHMnKQpAQCAtMTc5Myw1MiArMjM4MywxNDYgQEAKICAgICAgICAgcC5qb2luKCkKICAgICAgICAgbC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTE2OTU1KHNlbGYpOgorICAgICAgICBmb3IgZmFtIGluIHNlbGYuY29ubmVjdGlvbi5mYW1pbGllczoKKyAgICAgICAgICAgIGwgPSBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbSkKKyAgICAgICAgICAgIGMgPSBzZWxmLmNvbm5lY3Rpb24uQ2xpZW50KGwuYWRkcmVzcykKKyAgICAgICAgICAgIGEgPSBsLmFjY2VwdCgpCisgICAgICAgICAgICBhLnNlbmRfYnl0ZXMoYiJoZWxsbyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5wb2xsKDEpKQorICAgICAgICAgICAgYS5jbG9zZSgpCisgICAgICAgICAgICBjLmNsb3NlKCkKKyAgICAgICAgICAgIGwuY2xvc2UoKQorCitjbGFzcyBfVGVzdFBvbGwodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywgJ3RocmVhZHMnKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoKSwgRmFsc2UpCisgICAgICAgIGIuc2VuZF9ieXRlcyhiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKCksIFRydWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX3N0cmluZ3MoY2xzLCBjb25uLCBzdHJpbmdzKToKKyAgICAgICAgZm9yIHMgaW4gc3RyaW5nczoKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKHMpCisgICAgICAgIGNvbm4uY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc3RyaW5ncyA9IChiJ2hlbGxvJywgYicnLCBiJ2EnLCBiJ2InLCBiJycsIGInYnllJywgYicnLCBiJ2xvcCcpCisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF9zdHJpbmdzLCBhcmdzPShiLCBzdHJpbmdzKSkKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgZm9yIHMgaW4gc3RyaW5nczoKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICAgICAgaWYgYS5wb2xsKDAuMDEpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgeCA9IGEucmVjdl9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHgpCisKKyAgICAgICAgcC5qb2luKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfYm91bmRhcmllcyhjbHMsIHIpOgorICAgICAgICAjIFBvbGxpbmcgbWF5ICJwdWxsIiBhIG1lc3NhZ2UgaW4gdG8gdGhlIGNoaWxkIHByb2Nlc3MsIGJ1dCB3ZQorICAgICAgICAjIGRvbid0IHdhbnQgaXQgdG8gcHVsbCBvbmx5IHBhcnQgb2YgYSBtZXNzYWdlLCBhcyB0aGF0IHdvdWxkCisgICAgICAgICMgY29ycnVwdCB0aGUgcGlwZSBmb3IgYW55IG90aGVyIHByb2Nlc3NlcyB3aGljaCBtaWdodCBsYXRlcgorICAgICAgICAjIHJlYWQgZnJvbSBpdC4KKyAgICAgICAgci5wb2xsKDUpCisKKyAgICBkZWYgdGVzdF9ib3VuZGFyaWVzKHNlbGYpOgorICAgICAgICByLCB3ID0gc2VsZi5QaXBlKEZhbHNlKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF9ib3VuZGFyaWVzLCBhcmdzPShyLCkpCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIEwgPSBbYiJmaXJzdCIsIGIic2Vjb25kIl0KKyAgICAgICAgZm9yIG9iaiBpbiBMOgorICAgICAgICAgICAgdy5zZW5kX2J5dGVzKG9iaikKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oci5yZWN2X2J5dGVzKCksIEwpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX2RvbnRfbWVyZ2UoY2xzLCBiKToKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInYScpCisgICAgICAgIGIuc2VuZF9ieXRlcyhiJ2InKQorICAgICAgICBiLnNlbmRfYnl0ZXMoYidjZCcpCisKKyAgICBkZWYgdGVzdF9kb250X21lcmdlKHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMC4wKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDAuMSksIEZhbHNlKQorCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX2RvbnRfbWVyZ2UsIGFyZ3M9KGIsKSkKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnJlY3ZfYnl0ZXMoKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnJlY3ZfYnl0ZXMoKSwgYidiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMC4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnJlY3ZfYnl0ZXMoKSwgYidjZCcpCisKKyAgICAgICAgcC5qb2luKCkKKwogIwogIyBUZXN0IG9mIHNlbmRpbmcgY29ubmVjdGlvbiBhbmQgc29ja2V0IG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMKICMKLSIiIgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfUkVEVUNUSU9OLCAidGVzdCBuZWVkcyBtdWx0aXByb2Nlc3NpbmcucmVkdWN0aW9uIikKIGNsYXNzIF9UZXN0UGlja2xpbmdDb25uZWN0aW9ucyhCYXNlVGVzdENhc2UpOgogCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywpCiAKLSAgICBkZWYgX2xpc3RlbmVyKHNlbGYsIGNvbm4sIGZhbWlsaWVzKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb24gaW1wb3J0IHJlc291cmNlX3NoYXJlcgorICAgICAgICByZXNvdXJjZV9zaGFyZXIuc3RvcCh0aW1lb3V0PTUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2xpc3RlbmVyKGNscywgY29ubiwgZmFtaWxpZXMpOgogICAgICAgICBmb3IgZmFtIGluIGZhbWlsaWVzOgotICAgICAgICAgICAgbCA9IHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lcihmYW1pbHk9ZmFtKQorICAgICAgICAgICAgbCA9IGNscy5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW0pCiAgICAgICAgICAgICBjb25uLnNlbmQobC5hZGRyZXNzKQogICAgICAgICAgICAgbmV3X2Nvbm4gPSBsLmFjY2VwdCgpCiAgICAgICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCisgICAgICAgICAgICBuZXdfY29ubi5jbG9zZSgpCisgICAgICAgICAgICBsLmNsb3NlKCkKIAotICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6Ci0gICAgICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgICAgICBsLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKLSAgICAgICAgICAgIGNvbm4uc2VuZChsLmdldHNvY2tuYW1lKCkpCi0gICAgICAgICAgICBsLmxpc3RlbigxKQotICAgICAgICAgICAgbmV3X2Nvbm4sIGFkZHIgPSBsLmFjY2VwdCgpCi0gICAgICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCisgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgbC5iaW5kKCgnbG9jYWxob3N0JywgMCkpCisgICAgICAgIGwubGlzdGVuKDEpCisgICAgICAgIGNvbm4uc2VuZChsLmdldHNvY2tuYW1lKCkpCisgICAgICAgIG5ld19jb25uLCBhZGRyID0gbC5hY2NlcHQoKQorICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCisgICAgICAgIG5ld19jb25uLmNsb3NlKCkKKyAgICAgICAgbC5jbG9zZSgpCiAKICAgICAgICAgY29ubi5yZWN2KCkKIAotICAgIGRlZiBfcmVtb3RlKHNlbGYsIGNvbm4pOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVtb3RlKGNscywgY29ubik6CiAgICAgICAgIGZvciAoYWRkcmVzcywgbXNnKSBpbiBpdGVyKGNvbm4ucmVjdiwgTm9uZSk6Ci0gICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNvbm5lY3Rpb24uQ2xpZW50KGFkZHJlc3MpCisgICAgICAgICAgICBjbGllbnQgPSBjbHMuY29ubmVjdGlvbi5DbGllbnQoYWRkcmVzcykKICAgICAgICAgICAgIGNsaWVudC5zZW5kKG1zZy51cHBlcigpKQogICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKIAotICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6Ci0gICAgICAgICAgICBhZGRyZXNzLCBtc2cgPSBjb25uLnJlY3YoKQotICAgICAgICAgICAgY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgICAgICBjbGllbnQuY29ubmVjdChhZGRyZXNzKQotICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwobXNnLnVwcGVyKCkpCi0gICAgICAgICAgICBjbGllbnQuY2xvc2UoKQorICAgICAgICBhZGRyZXNzLCBtc2cgPSBjb25uLnJlY3YoKQorICAgICAgICBjbGllbnQgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoYWRkcmVzcykKKyAgICAgICAgY2xpZW50LnNlbmRhbGwobXNnLnVwcGVyKCkpCisgICAgICAgIGNsaWVudC5jbG9zZSgpCiAKICAgICAgICAgY29ubi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9waWNrbGluZyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLmFsbG93X2Nvbm5lY3Rpb25fcGlja2xpbmcoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBmYW1pbGllcyA9IHNlbGYuY29ubmVjdGlvbi5mYW1pbGllcwogCiAgICAgICAgIGxjb25uLCBsY29ubjAgPSBzZWxmLlBpcGUoKQpAQCAtMTg2MiwxNiArMjU0NiwxOSBAQAogCiAgICAgICAgIHJjb25uLnNlbmQoTm9uZSkKIAotICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6Ci0gICAgICAgICAgICBtc2cgPSBsYXRpbignVGhpcyBjb25uZWN0aW9uIHVzZXMgYSBub3JtYWwgc29ja2V0JykKLSAgICAgICAgICAgIGFkZHJlc3MgPSBsY29ubi5yZWN2KCkKLSAgICAgICAgICAgIHJjb25uLnNlbmQoKGFkZHJlc3MsIG1zZykpCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNvY2tldCwgJ2Zyb21mZCcpOgotICAgICAgICAgICAgICAgIG5ld19jb25uID0gbGNvbm4ucmVjdigpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY29ubi5yZWN2KDEwMCksIG1zZy51cHBlcigpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFhYWCBPbiBXaW5kb3dzIHdpdGggUHkyLjYgbmVlZCB0byBiYWNrcG9ydCBmcm9tZmQoKQotICAgICAgICAgICAgICAgIGRpc2NhcmQgPSBsY29ubi5yZWN2X2J5dGVzKCkKKyAgICAgICAgbXNnID0gbGF0aW4oJ1RoaXMgY29ubmVjdGlvbiB1c2VzIGEgbm9ybWFsIHNvY2tldCcpCisgICAgICAgIGFkZHJlc3MgPSBsY29ubi5yZWN2KCkKKyAgICAgICAgcmNvbm4uc2VuZCgoYWRkcmVzcywgbXNnKSkKKyAgICAgICAgbmV3X2Nvbm4gPSBsY29ubi5yZWN2KCkKKyAgICAgICAgYnVmID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHMgPSBuZXdfY29ubi5yZWN2KDEwMCkKKyAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBidWYuYXBwZW5kKHMpCisgICAgICAgIGJ1ZiA9IGInJy5qb2luKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIG1zZy51cHBlcigpKQorICAgICAgICBuZXdfY29ubi5jbG9zZSgpCiAKICAgICAgICAgbGNvbm4uc2VuZChOb25lKQogCkBAIC0xODgwLDcgKzI1NjcsNDYgQEAKIAogICAgICAgICBscC5qb2luKCkKICAgICAgICAgcnAuam9pbigpCi0iIiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaGlsZF9hY2Nlc3MoY2xzLCBjb25uKToKKyAgICAgICAgdyA9IGNvbm4ucmVjdigpCisgICAgICAgIHcuc2VuZCgnYWxsIGlzIHdlbGwnKQorICAgICAgICB3LmNsb3NlKCkKKworICAgICAgICByID0gY29ubi5yZWN2KCkKKyAgICAgICAgbXNnID0gci5yZWN2KCkKKyAgICAgICAgY29ubi5zZW5kKG1zZyoyKQorCisgICAgICAgIGNvbm4uY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYWNjZXNzKHNlbGYpOgorICAgICAgICAjIE9uIFdpbmRvd3MsIGlmIHdlIGRvIG5vdCBzcGVjaWZ5IGEgZGVzdGluYXRpb24gcGlkIHdoZW4KKyAgICAgICAgIyB1c2luZyBEdXBIYW5kbGUgdGhlbiB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgdG8gdXNlIHRoZQorICAgICAgICAjIGNvcnJlY3QgYWNjZXNzIGZsYWdzIGZvciBEdXBsaWNhdGVIYW5kbGUoKSwgb3IgZWxzZQorICAgICAgICAjIER1cEhhbmRsZS5kZXRhY2goKSB3aWxsIHJhaXNlIFBlcm1pc3Npb25FcnJvci4gIEZvciBleGFtcGxlLAorICAgICAgICAjIGZvciBhIHJlYWQgb25seSBwaXBlIGhhbmRsZSB3ZSBzaG91bGQgdXNlCisgICAgICAgICMgYWNjZXNzPUZJTEVfR0VORVJJQ19SRUFELiAgKFVuZm9ydHVuYXRlbHkKKyAgICAgICAgIyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MgZG9lcyBub3Qgd29yay4pCisgICAgICAgIGNvbm4sIGNoaWxkX2Nvbm4gPSBzZWxmLlBpcGUoKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLmNoaWxkX2FjY2VzcywgYXJncz0oY2hpbGRfY29ubiwpKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIGNoaWxkX2Nvbm4uY2xvc2UoKQorCisgICAgICAgIHIsIHcgPSBzZWxmLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICBjb25uLnNlbmQodykKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5yZWN2KCksICdhbGwgaXMgd2VsbCcpCisgICAgICAgIHIuY2xvc2UoKQorCisgICAgICAgIHIsIHcgPSBzZWxmLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICBjb25uLnNlbmQocikKKyAgICAgICAgci5jbG9zZSgpCisgICAgICAgIHcuc2VuZCgnZm9vYmFyJykKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5yZWN2KCksICdmb29iYXInKjIpCisKICMKICMKICMKQEAgLTIxNzUsOSArMjkwMSwxNSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihXSU4zMiwgInNraXBwZWQgb24gV2luZG93cyIpCiAgICAgZGVmIHRlc3RfaW52YWxpZF9oYW5kbGVzKHNlbGYpOgotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKDQ0OTc3NjA4KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBjb25uLnBvbGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbiwgLTEpCisgICAgICAgIGNvbm4gPSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5Db25uZWN0aW9uKDQ0OTc3NjA4KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgSU9FcnJvciksIGNvbm4ucG9sbCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgSGFjayBwcml2YXRlIGF0dHJpYnV0ZSBfaGFuZGxlIHRvIGF2b2lkIHByaW50aW5nIGFuIGVycm9yCisgICAgICAgICAgICAjIGluIGNvbm4uX19kZWxfXworICAgICAgICAgICAgY29ubi5faGFuZGxlID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgSU9FcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkNvbm5lY3Rpb24sIC0xKQogCiAjCiAjIEZ1bmN0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0ZXN0IGNhc2VzIGZyb20gdGhlIGJhc2Ugb25lcyBpbiB0aGlzIG1vZHVsZQpAQCAtMjE5NiwxMCArMjkyOCwxMiBAQAogICAgIHJlc3VsdCA9IHt9CiAgICAgZ2xvYiA9IGdsb2JhbHMoKQogICAgIFR5cGUgPSB0eXBlLmNhcGl0YWxpemUoKQorICAgIEFMTF9UWVBFUyA9IHsncHJvY2Vzc2VzJywgJ3RocmVhZHMnLCAnbWFuYWdlcid9CiAKICAgICBmb3IgbmFtZSBpbiBsaXN0KGdsb2Iua2V5cygpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfVGVzdCcpOgogICAgICAgICAgICAgYmFzZSA9IGdsb2JbbmFtZV0KKyAgICAgICAgICAgIGFzc2VydCBzZXQoYmFzZS5BTExPV0VEX1RZUEVTKSA8PSBBTExfVFlQRVMsIHNldChiYXNlLkFMTE9XRURfVFlQRVMpCiAgICAgICAgICAgICBpZiB0eXBlIGluIGJhc2UuQUxMT1dFRF9UWVBFUzoKICAgICAgICAgICAgICAgICBuZXduYW1lID0gJ1dpdGgnICsgVHlwZSArIG5hbWVbMTpdCiAgICAgICAgICAgICAgICAgY2xhc3MgVGVtcChiYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSwgTWl4aW4pOgpAQCAtMjIxOCw3ICsyOTUyLDcgQEAKICAgICBQcm9jZXNzID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MKICAgICBsb2NhbHMoKS51cGRhdGUoZ2V0X2F0dHJpYnV0ZXMobXVsdGlwcm9jZXNzaW5nLCAoCiAgICAgICAgICdRdWV1ZScsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywKLSAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsCisgICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnQmFycmllcicsICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsCiAgICAgICAgICdSYXdBcnJheScsICdjdXJyZW50X3Byb2Nlc3MnLCAnYWN0aXZlX2NoaWxkcmVuJywgJ1BpcGUnLAogICAgICAgICAnY29ubmVjdGlvbicsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnCiAgICAgICAgICkpKQpAQCAtMjIzMyw3ICsyOTY3LDcgQEAKICAgICBtYW5hZ2VyID0gb2JqZWN0Ll9fbmV3X18obXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzLlN5bmNNYW5hZ2VyKQogICAgIGxvY2FscygpLnVwZGF0ZShnZXRfYXR0cmlidXRlcyhtYW5hZ2VyLCAoCiAgICAgICAgICdRdWV1ZScsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywKLSAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ1ZhbHVlJywgJ0FycmF5JywgJ2xpc3QnLCAnZGljdCcsCisgICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnQmFycmllcicsICdWYWx1ZScsICdBcnJheScsICdsaXN0JywgJ2RpY3QnLAogICAgICAgICAnTmFtZXNwYWNlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcKICAgICAgICAgKSkpCiAKQEAgLTIyNDYsNyArMjk4MCw3IEBACiAgICAgUHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5kdW1teS5Qcm9jZXNzCiAgICAgbG9jYWxzKCkudXBkYXRlKGdldF9hdHRyaWJ1dGVzKG11bHRpcHJvY2Vzc2luZy5kdW1teSwgKAogICAgICAgICAnUXVldWUnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsCi0gICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnVmFsdWUnLCAnQXJyYXknLCAnY3VycmVudF9wcm9jZXNzJywKKyAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdCYXJyaWVyJywgJ1ZhbHVlJywgJ0FycmF5JywgJ2N1cnJlbnRfcHJvY2VzcycsCiAgICAgICAgICdhY3RpdmVfY2hpbGRyZW4nLCAnUGlwZScsICdjb25uZWN0aW9uJywgJ2RpY3QnLCAnbGlzdCcsCiAgICAgICAgICdOYW1lc3BhY2UnLCAnSm9pbmFibGVRdWV1ZScsICdQb29sJwogICAgICAgICApKSkKQEAgLTIyOTgsNiArMzAzMiw3IEBACiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYubWdyLnNodXRkb3duKCkKKyAgICAgICAgc2VsZi5tZ3Iuam9pbigpCiAKICAgICBkZWYgdGVzdF9tYW5hZ2VyX2luaXRpYWxpemVyKHNlbGYpOgogICAgICAgICBtID0gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzLlN5bmNNYW5hZ2VyKCkKQEAgLTIzMDUsNiArMzA0MCw3IEBACiAgICAgICAgIG0uc3RhcnQoaW5pdGlhbGl6ZXIsIChzZWxmLm5zLCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ucy50ZXN0LCAxKQogICAgICAgICBtLnNodXRkb3duKCkKKyAgICAgICAgbS5qb2luKCkKIAogICAgIGRlZiB0ZXN0X3Bvb2xfaW5pdGlhbGl6ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXVsdGlwcm9jZXNzaW5nLlBvb2wsIGluaXRpYWxpemVyPTEpCkBAIC0yMzM3LDYgKzMwNzMsOCBAQAogZGVmIHBvb2xfaW5fcHJvY2VzcygpOgogICAgIHBvb2wgPSBtdWx0aXByb2Nlc3NpbmcuUG9vbChwcm9jZXNzZXM9NCkKICAgICB4ID0gcG9vbC5tYXAoX2FmdW5jLCBbMSwgMiwgMywgNCwgNSwgNiwgN10pCisgICAgcG9vbC5jbG9zZSgpCisgICAgcG9vbC5qb2luKCkKIAogY2xhc3MgX2ZpbGVfbGlrZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWxlZ2F0ZSk6CkBAIC0yMzgxLDYgKzMxMTksMTgxIEBACiAgICAgICAgIGFzc2VydCBzaW8uZ2V0dmFsdWUoKSA9PSAnZm9vJwogCiAKK2NsYXNzIFRlc3RXYWl0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfdGVzdF93YWl0KGNscywgdywgc2xvdyk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIGlmIHNsb3c6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcChyYW5kb20ucmFuZG9tKCkqMC4xKQorICAgICAgICAgICAgdy5zZW5kKChpLCBvcy5nZXRwaWQoKSkpCisgICAgICAgIHcuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfd2FpdChzZWxmLCBzbG93PUZhbHNlKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgcHJvY3MgPSBbXQorICAgICAgICBtZXNzYWdlcyA9IFtdCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICByLCB3ID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF90ZXN0X3dhaXQsIGFyZ3M9KHcsIHNsb3cpKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHcuY2xvc2UoKQorICAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgIHByb2NzLmFwcGVuZChwKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuam9pbikKKworICAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICAgZm9yIHIgaW4gd2FpdChyZWFkZXJzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgorICAgICAgICAgICAgICAgICAgICByZWFkZXJzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQobXNnKQorCisgICAgICAgIG1lc3NhZ2VzLnNvcnQoKQorICAgICAgICBleHBlY3RlZCA9IHNvcnRlZCgoaSwgcC5waWQpIGZvciBpIGluIHJhbmdlKDEwKSBmb3IgcCBpbiBwcm9jcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXNzYWdlcywgZXhwZWN0ZWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX3Rlc3Rfd2FpdF9zb2NrZXQoY2xzLCBhZGRyZXNzLCBzbG93KToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgaWYgc2xvdzoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHJhbmRvbS5yYW5kb20oKSowLjEpCisgICAgICAgICAgICBzLnNlbmRhbGwoKCclc1xuJyAlIGkpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF93YWl0X3NvY2tldChzZWxmLCBzbG93PUZhbHNlKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGwuYmluZCgoJycsIDApKQorICAgICAgICBsLmxpc3Rlbig0KQorICAgICAgICBhZGRyID0gKCdsb2NhbGhvc3QnLCBsLmdldHNvY2tuYW1lKClbMV0pCisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICBwcm9jcyA9IFtdCisgICAgICAgIGRpYyA9IHt9CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX3Rlc3Rfd2FpdF9zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oYWRkciwgc2xvdykpCisgICAgICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgcHJvY3MuYXBwZW5kKHApCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgciwgXyA9IGwuYWNjZXB0KCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHIpCisgICAgICAgICAgICBkaWNbcl0gPSBbXQorICAgICAgICBsLmNsb3NlKCkKKworICAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICAgZm9yIHIgaW4gd2FpdChyZWFkZXJzKToKKyAgICAgICAgICAgICAgICBtc2cgPSByLnJlY3YoMzIpCisgICAgICAgICAgICAgICAgaWYgbm90IG1zZzoKKyAgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgICAgICAgci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGljW3JdLmFwcGVuZChtc2cpCisKKyAgICAgICAgZXhwZWN0ZWQgPSAnJy5qb2luKCclc1xuJyAlIGkgZm9yIGkgaW4gcmFuZ2UoMTApKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZm9yIHYgaW4gZGljLnZhbHVlcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbih2KSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF93YWl0X3Nsb3coc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWl0KFRydWUpCisKKyAgICBkZWYgdGVzdF93YWl0X3NvY2tldF9zbG93KHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd2FpdF9zb2NrZXQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3dhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCisgICAgICAgIGV4cGVjdGVkID0gNQorICAgICAgICBhLCBiID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgYl0sIGV4cGVjdGVkKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgZXhwZWN0ZWQgKiAyKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVsdGEsIGV4cGVjdGVkICogMC41KQorCisgICAgICAgIGIuc2VuZChOb25lKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgYl0sIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW2FdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIDAuNCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzaWduYWxfYW5kX3NsZWVwKGNscywgc2VtLCBwZXJpb2QpOgorICAgICAgICBzZW0ucmVsZWFzZSgpCisgICAgICAgIHRpbWUuc2xlZXAocGVyaW9kKQorCisgICAgZGVmIHRlc3Rfd2FpdF9pbnRlZ2VyKHNlbGYpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgICAgICAgZXhwZWN0ZWQgPSAzCisgICAgICAgIHNvcnRlZF8gPSBsYW1iZGEgbDogc29ydGVkKGwsIGtleT1sYW1iZGEgeDogaWQoeCkpCisgICAgICAgIHNlbSA9IG11bHRpcHJvY2Vzc2luZy5TZW1hcGhvcmUoMCkKKyAgICAgICAgYSwgYiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNpZ25hbF9hbmRfc2xlZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZW0sIGV4cGVjdGVkKSkKKworICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAuc2VudGluZWwsIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbS5hY3F1aXJlKHRpbWVvdXQ9MjApKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgcC5zZW50aW5lbCwgYl0sIGV4cGVjdGVkICsgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbcC5zZW50aW5lbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgZXhwZWN0ZWQgKyAyKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVsdGEsIGV4cGVjdGVkIC0gMikKKworICAgICAgICBhLnNlbmQoTm9uZSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIHAuc2VudGluZWwsIGJdLCAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfKHJlcyksIHNvcnRlZF8oW3Auc2VudGluZWwsIGJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCAwLjQpCisKKyAgICAgICAgYi5zZW5kKE5vbmUpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBwLnNlbnRpbmVsLCBiXSwgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkXyhyZXMpLCBzb3J0ZWRfKFthLCBwLnNlbnRpbmVsLCBiXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgMC40KQorCisgICAgICAgIHAudGVybWluYXRlKCkKKyAgICAgICAgcC5qb2luKCkKKworICAgIGRlZiB0ZXN0X25lZ190aW1lb3V0KHNlbGYpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgIGEsIGIgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisgICAgICAgIHQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthXSwgdGltZW91dD0tMSkKKyAgICAgICAgdCA9IHRpbWUudGltZSgpIC0gdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh0LCAxKQorICAgICAgICBhLmNsb3NlKCkKKyAgICAgICAgYi5jbG9zZSgpCisKICMKICMgSXNzdWUgMTQxNTE6IFRlc3QgaW52YWxpZCBmYW1pbHkgb24gaW52YWxpZCBlbnZpcm9ubWVudAogIwpAQCAtMjM5OCw2ICszMzExLDM4IEBACiAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5MaXN0ZW5lcignL3Zhci90ZXN0LnBpcGUnKQogCiAjCisjIElzc3VlIDEyMDk4OiBjaGVjayBzeXMuZmxhZ3Mgb2YgY2hpbGQgbWF0Y2hlcyB0aGF0IGZvciBwYXJlbnQKKyMKKworY2xhc3MgVGVzdEZsYWdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX2luX2dyYW5kY2hpbGQoY2xzLCBjb25uKToKKyAgICAgICAgY29ubi5zZW5kKHR1cGxlKHN5cy5mbGFncykpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX2luX2NoaWxkKGNscyk6CisgICAgICAgIGltcG9ydCBqc29uCisgICAgICAgIHIsIHcgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9Y2xzLnJ1bl9pbl9ncmFuZGNoaWxkLCBhcmdzPSh3LCkpCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBncmFuZGNoaWxkX2ZsYWdzID0gci5yZWN2KCkKKyAgICAgICAgcC5qb2luKCkKKyAgICAgICAgci5jbG9zZSgpCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBmbGFncyA9ICh0dXBsZShzeXMuZmxhZ3MpLCBncmFuZGNoaWxkX2ZsYWdzKQorICAgICAgICBwcmludChqc29uLmR1bXBzKGZsYWdzKSkKKworICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOgorICAgICAgICBpbXBvcnQganNvbiwgc3VicHJvY2VzcworICAgICAgICAjIHN0YXJ0IGNoaWxkIHByb2Nlc3MgdXNpbmcgdW51c3VhbCBmbGFncworICAgICAgICBwcm9nID0gKCdmcm9tIHRlc3QudGVzdF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFRlc3RGbGFnczsgJyArCisgICAgICAgICAgICAgICAgJ1Rlc3RGbGFncy5ydW5faW5fY2hpbGQoKScpCisgICAgICAgIGRhdGEgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1FJywgJy1TJywgJy1PJywgJy1jJywgcHJvZ10pCisgICAgICAgIGNoaWxkX2ZsYWdzLCBncmFuZGNoaWxkX2ZsYWdzID0ganNvbi5sb2FkcyhkYXRhLmRlY29kZSgnYXNjaWknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZF9mbGFncywgZ3JhbmRjaGlsZF9mbGFncykKKworIwogIyBUZXN0IGludGVyYWN0aW9uIHdpdGggc29ja2V0IHRpbWVvdXRzIC0gc2VlIElzc3VlICM2MDU2CiAjCiAKQEAgLTI0NTIsOCArMzM5Nyw4IEBACiAjCiAKIHRlc3RjYXNlc19vdGhlciA9IFtPdGhlclRlc3QsIFRlc3RJbnZhbGlkSGFuZGxlLCBUZXN0SW5pdGlhbGl6ZXJzLAotICAgICAgICAgICAgICAgICAgIFRlc3RTdGRpbkJhZGZpbGVkZXNjcmlwdG9yLCBUZXN0SW52YWxpZEZhbWlseSwKLSAgICAgICAgICAgICAgICAgICBUZXN0VGltZW91dHMsIFRlc3ROb0ZvcmtCb21iXQorICAgICAgICAgICAgICAgICAgIFRlc3RTdGRpbkJhZGZpbGVkZXNjcmlwdG9yLCBUZXN0V2FpdCwgVGVzdEludmFsaWRGYW1pbHksCisgICAgICAgICAgICAgICAgICAgVGVzdEZsYWdzLCBUZXN0VGltZW91dHMsIFRlc3ROb0ZvcmtCb21iXQogCiAjCiAjCkBAIC0yNDkwLDE0ICszNDM1LDE4IEBACiAKICAgICBsb2FkVGVzdHNGcm9tVGVzdENhc2UgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5sb2FkVGVzdHNGcm9tVGVzdENhc2UKICAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZShsb2FkVGVzdHNGcm9tVGVzdENhc2UodGMpIGZvciB0YyBpbiB0ZXN0Y2FzZXMpCi0gICAgcnVuKHN1aXRlKQotCi0gICAgVGhyZWFkc01peGluLnBvb2wudGVybWluYXRlKCkKLSAgICBQcm9jZXNzZXNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCi0gICAgTWFuYWdlck1peGluLnBvb2wudGVybWluYXRlKCkKLSAgICBNYW5hZ2VyTWl4aW4ubWFuYWdlci5zaHV0ZG93bigpCi0KLSAgICBkZWwgUHJvY2Vzc2VzTWl4aW4ucG9vbCwgVGhyZWFkc01peGluLnBvb2wsIE1hbmFnZXJNaXhpbi5wb29sCisgICAgdHJ5OgorICAgICAgICBydW4oc3VpdGUpCisgICAgZmluYWxseToKKyAgICAgICAgVGhyZWFkc01peGluLnBvb2wudGVybWluYXRlKCkKKyAgICAgICAgUHJvY2Vzc2VzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQorICAgICAgICBNYW5hZ2VyTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQorICAgICAgICBNYW5hZ2VyTWl4aW4ucG9vbC5qb2luKCkKKyAgICAgICAgTWFuYWdlck1peGluLm1hbmFnZXIuc2h1dGRvd24oKQorICAgICAgICBNYW5hZ2VyTWl4aW4ubWFuYWdlci5qb2luKCkKKyAgICAgICAgVGhyZWFkc01peGluLnBvb2wuam9pbigpCisgICAgICAgIFByb2Nlc3Nlc01peGluLnBvb2wuam9pbigpCisgICAgICAgIGRlbCBQcm9jZXNzZXNNaXhpbi5wb29sLCBUaHJlYWRzTWl4aW4ucG9vbCwgTWFuYWdlck1peGluLnBvb2wKIAogZGVmIG1haW4oKToKICAgICB0ZXN0X21haW4odW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIodmVyYm9zaXR5PTIpLnJ1bikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXV0YW50cy5weSBiL0xpYi90ZXN0L3Rlc3RfbXV0YW50cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQzZmE0Ny4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X211dGFudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTEgKzAsMCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTgotaW1wb3J0IHJhbmRvbQotaW1wb3J0IG9zCi0KLSMgRnJvbSBTRiBidWcgIzQyMjEyMTogIEluc2VjdXJpdGllcyBpbiBkaWN0IGNvbXBhcmlzb24uCi0KLSMgU2FmZXR5IG9mIGNvZGUgZG9pbmcgY29tcGFyaXNvbnMgaGFzIGJlZW4gYW4gaGlzdG9yaWNhbCBQeXRob24gd2VhayBzcG90LgotIyBUaGUgcHJvYmxlbSBpcyB0aGF0IGNvbXBhcmlzb24gb2Ygc3RydWN0dXJlcyB3cml0dGVuIGluIEMgKm5hdHVyYWxseSoKLSMgd2FudHMgdG8gaG9sZCBvbiB0byB0aGluZ3MgbGlrZSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyLCBvciAidGhlCi0jIGJpZ2dlc3QiIGNvbnRhaW5lZSBzbyBmYXIsIGFjcm9zcyBhIHRyYXZlcnNhbCBvZiB0aGUgY29udGFpbmVyOyBidXQKLSMgY29kZSB0byBkbyBjb250YWluZWUgY29tcGFyaXNvbnMgY2FuIGNhbGwgYmFjayBpbnRvIFB5dGhvbiBhbmQgbXV0YXRlCi0jIHRoZSBjb250YWluZXIgaW4gYXJiaXRyYXJ5IHdheXMgd2hpbGUgdGhlIEMgbG9vcCBpcyBpbiBtaWRzdHJlYW0uICBJZiB0aGUKLSMgQyBjb2RlIGlzbid0IGV4dHJlbWVseSBwYXJhbm9pZCBhYm91dCBkaWdnaW5nIHRoaW5ncyBvdXQgb2YgbWVtb3J5IG9uCi0jIGVhY2ggdHJpcCwgYW5kIGFydGlmaWNpYWxseSBib29zdGluZyByZWZjb3VudHMgZm9yIHRoZSBkdXJhdGlvbiwgYW55dGhpbmcKLSMgZnJvbSBpbmZpbml0ZSBsb29wcyB0byBPUyBjcmFzaGVzIGNhbiByZXN1bHQgKHllcywgSSB1c2UgV2luZG93cyA8d2luaz4pLgotIwotIyBUaGUgb3RoZXIgcHJvYmxlbSBpcyB0aGF0IGNvZGUgZGVzaWduZWQgdG8gcHJvdm9rZSBhIHdlYWtuZXNzIGlzIHVzdWFsbHkKLSMgd2hpdGUtYm94IGNvZGUsIGFuZCBzbyBjYXRjaGVzIG9ubHkgdGhlIHBhcnRpY3VsYXIgdnVsbmVyYWJpbGl0aWVzIHRoZQotIyBhdXRob3Iga25ldyB0byBwcm90ZWN0IGFnYWluc3QuICBGb3IgZXhhbXBsZSwgUHl0aG9uJ3MgbGlzdC5zb3J0KCkgY29kZQotIyB3ZW50IHRocnUgbWFueSBpdGVyYXRpb25zIGFzIG9uZSAibmV3IiB2dWxuZXJhYmlsaXR5IGFmdGVyIGFub3RoZXIgd2FzCi0jIGRpc2NvdmVyZWQuCi0jCi0jIFNvIHRoZSBkaWN0IGNvbXBhcmlzb24gdGVzdCBoZXJlIHVzZXMgYSBibGFjay1ib3ggYXBwcm9hY2ggaW5zdGVhZCwKLSMgZ2VuZXJhdGluZyBkaWN0cyBvZiB2YXJpb3VzIHNpemVzIGF0IHJhbmRvbSwgYW5kIHBlcmZvcm1pbmcgcmFuZG9tCi0jIG11dGF0aW9ucyBvbiB0aGVtIGF0IHJhbmRvbSB0aW1lcy4gIFRoaXMgcHJvdmVkIHZlcnkgZWZmZWN0aXZlLAotIyB0cmlnZ2VyaW5nIGF0IGxlYXN0IHNpeCBkaXN0aW5jdCBmYWlsdXJlIG1vZGVzIHRoZSBmaXJzdCAyMCB0aW1lcyBJCi0jIHJhbiBpdC4gIEluZGVlZCwgYXQgdGhlIHN0YXJ0LCB0aGUgZHJpdmVyIG5ldmVyIGdvdCBiZXlvbmQgNiBpdGVyYXRpb25zCi0jIGJlZm9yZSB0aGUgdGVzdCBkaWVkLgotCi0jIFRoZSBkaWN0cyBhcmUgZ2xvYmFsIHRvIG1ha2UgaXQgZWFzeSB0byBtdXRhdGUgdGhhbSBmcm9tIHdpdGhpbiBmdW5jdGlvbnMuCi1kaWN0MSA9IHt9Ci1kaWN0MiA9IHt9Ci0KLSMgVGhlIGN1cnJlbnQgc2V0IG9mIGtleXMgaW4gZGljdDEgYW5kIGRpY3QyLiAgVGhlc2UgYXJlIG1hdGVyaWFsaXplZCBhcwotIyBsaXN0cyB0byBtYWtlIGl0IGVhc3kgdG8gcGljayBhIGRpY3Qga2V5IGF0IHJhbmRvbS4KLWRpY3Qxa2V5cyA9IFtdCi1kaWN0MmtleXMgPSBbXQotCi0jIEdsb2JhbCBmbGFnIHRlbGxpbmcgbWF5YmVfbXV0YXRlKCkgd2hldGhlciB0byAqY29uc2lkZXIqIG11dGF0aW5nLgotbXV0YXRlID0gMAotCi0jIElmIGdsb2JhbCBtdXRhdGUgaXMgdHJ1ZSwgY29uc2lkZXIgbXV0YXRpbmcgYSBkaWN0LiAgTWF5IG9yIG1heSBub3QKLSMgbXV0YXRlIGEgZGljdCBldmVuIGlmIG11dGF0ZSBpcyB0cnVlLiAgSWYgaXQgZG9lcyBkZWNpZGUgdG8gbXV0YXRlIGEKLSMgZGljdCwgaXQgcGlja3Mgb25lIG9mIHtkaWN0MSwgZGljdDJ9IGF0IHJhbmRvbSwgYW5kIGRlbGV0ZXMgYSByYW5kb20KLSMgZW50cnkgZnJvbSBpdDsgb3IsIG1vcmUgcmFyZWx5LCBhZGRzIGEgcmFuZG9tIGVsZW1lbnQuCi0KLWRlZiBtYXliZV9tdXRhdGUoKToKLSAgICBnbG9iYWwgbXV0YXRlCi0gICAgaWYgbm90IG11dGF0ZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgMC41OgotICAgICAgICByZXR1cm4KLQotICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IDAuNToKLSAgICAgICAgdGFyZ2V0LCBrZXlzID0gZGljdDEsIGRpY3Qxa2V5cwotICAgIGVsc2U6Ci0gICAgICAgIHRhcmdldCwga2V5cyA9IGRpY3QyLCBkaWN0MmtleXMKLQotICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IDAuMjoKLSAgICAgICAgIyBJbnNlcnQgYSBuZXcga2V5LgotICAgICAgICBtdXRhdGUgPSAwICAgIyBkaXNhYmxlIG11dGF0aW9uIHVudGlsIGtleSBpbnNlcnRlZAotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgbmV3a2V5ID0gSG9ycmlkKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKLSAgICAgICAgICAgIGlmIG5ld2tleSBub3QgaW4gdGFyZ2V0OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHRhcmdldFtuZXdrZXldID0gSG9ycmlkKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKLSAgICAgICAga2V5cy5hcHBlbmQobmV3a2V5KQotICAgICAgICBtdXRhdGUgPSAxCi0KLSAgICBlbGlmIGtleXM6Ci0gICAgICAgICMgRGVsZXRlIGEga2V5IGF0IHJhbmRvbS4KLSAgICAgICAgbXV0YXRlID0gMCAgICMgZGlzYWJsZSBtdXRhdGlvbiB1bnRpbCBrZXkgZGVsZXRlZAotICAgICAgICBpID0gcmFuZG9tLnJhbmRyYW5nZShsZW4oa2V5cykpCi0gICAgICAgIGtleSA9IGtleXNbaV0KLSAgICAgICAgZGVsIHRhcmdldFtrZXldCi0gICAgICAgIGRlbCBrZXlzW2ldCi0gICAgICAgIG11dGF0ZSA9IDEKLQotIyBBIGhvcnJpZCBjbGFzcyB0aGF0IHRyaWdnZXJzIHJhbmRvbSBtdXRhdGlvbnMgb2YgZGljdDEgYW5kIGRpY3QyIHdoZW4KLSMgaW5zdGFuY2VzIGFyZSBjb21wYXJlZC4KLQotY2xhc3MgSG9ycmlkOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpKToKLSAgICAgICAgIyBDb21wYXJpc29uIG91dGNvbWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBpLgotICAgICAgICBzZWxmLmkgPSBpCi0KLSAgICAgICAgIyBBbiBhcnRpZmljaWFsIGhhc2hjb2RlIGlzIHNlbGVjdGVkIGF0IHJhbmRvbSBzbyB0aGF0IHdlIGRvbid0Ci0gICAgICAgICMgaGF2ZSBhbnkgc3lzdGVtYXRpYyByZWxhdGlvbnNoaXAgYmV0d2VlbiBjb21wYXJpc29uIG91dGNvbWVzCi0gICAgICAgICMgKGJhc2VkIG9uIHNlbGYuaSBhbmQgb3RoZXIuaSkgYW5kIHJlbGF0aXZlIHBvc2l0aW9uIHdpdGhpbiB0aGUKLSAgICAgICAgIyBoYXNoIHZlY3RvciAoYmFzZWQgb24gaGFzaGNvZGUpLgotICAgICAgICAjIFhYWCBUaGlzIGlzIG5vIGxvbmdlciBlZmZlY3RpdmUuCi0gICAgICAgICMjc2VsZi5oYXNoY29kZSA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDAwMCkKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDQyCi0gICAgICAgIHJldHVybiBzZWxmLmhhc2hjb2RlCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgbWF5YmVfbXV0YXRlKCkgICAjIFRoZSBwb2ludCBvZiB0aGUgdGVzdC4KLSAgICAgICAgcmV0dXJuIHNlbGYuaSA9PSBvdGhlci5pCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJJIGRpZG4ndCBleHBlY3Qgc29tZSBraW5kIG9mIFNwYW5pc2ggaW5xdWlzaXRpb24hIikKLQotICAgIF9fbHRfXyA9IF9fbGVfXyA9IF9fZ3RfXyA9IF9fZ2VfXyA9IF9fbmVfXwotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkhvcnJpZCglZCkiICUgc2VsZi5pCi0KLSMgRmlsbCBkaWN0IGQgd2l0aCBudW1lbnRyaWVzIChIb3JyaWQoaSksIEhvcnJpZChqKSkga2V5LXZhbHVlIHBhaXJzLAotIyB3aGVyZSBpIGFuZCBqIGFyZSBzZWxlY3RlZCBhdCByYW5kb20gZnJvbSB0aGUgY2FuZGlkYXRlcyBsaXN0LgotIyBSZXR1cm4gZC5rZXlzKCkgYWZ0ZXIgZmlsbGluZy4KLQotZGVmIGZpbGxfZGljdChkLCBjYW5kaWRhdGVzLCBudW1lbnRyaWVzKToKLSAgICBkLmNsZWFyKCkKLSAgICBmb3IgaSBpbiByYW5nZShudW1lbnRyaWVzKToKLSAgICAgICAgZFtIb3JyaWQocmFuZG9tLmNob2ljZShjYW5kaWRhdGVzKSldID0gXAotICAgICAgICAgICAgSG9ycmlkKHJhbmRvbS5jaG9pY2UoY2FuZGlkYXRlcykpCi0gICAgcmV0dXJuIGxpc3QoZC5rZXlzKCkpCi0KLSMgVGVzdCBvbmUgcGFpciBvZiByYW5kb21seSBnZW5lcmF0ZWQgZGljdHMsIGVhY2ggd2l0aCBuIGVudHJpZXMuCi0jIE5vdGUgdGhhdCBkaWN0IGNvbXBhcmlzb24gaXMgdHJpdmlhbCBpZiB0aGV5IGRvbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyCi0jIG9mIGVudGlyZXMgKHRoZW4gdGhlICJzaG9ydGVyIiBkaWN0IGlzIGluc3RhbnRseSBjb25zaWRlcmVkIHRvIGJlIHRoZQotIyBzbWFsbGVyIG9uZSwgd2l0aG91dCBldmVuIGxvb2tpbmcgYXQgdGhlIGVudHJpZXMpLgotCi1kZWYgdGVzdF9vbmUobik6Ci0gICAgZ2xvYmFsIG11dGF0ZSwgZGljdDEsIGRpY3QyLCBkaWN0MWtleXMsIGRpY3Qya2V5cwotCi0gICAgIyBGaWxsIHRoZSBkaWN0cyB3aXRob3V0IG11dGF0aW5nIHRoZW0uCi0gICAgbXV0YXRlID0gMAotICAgIGRpY3Qxa2V5cyA9IGZpbGxfZGljdChkaWN0MSwgcmFuZ2UobiksIG4pCi0gICAgZGljdDJrZXlzID0gZmlsbF9kaWN0KGRpY3QyLCByYW5nZShuKSwgbikKLQotICAgICMgRW5hYmxlIG11dGF0aW9uLCB0aGVuIGNvbXBhcmUgdGhlIGRpY3RzIHNvIGxvbmcgYXMgdGhleSBoYXZlIHRoZQotICAgICMgc2FtZSBzaXplLgotICAgIG11dGF0ZSA9IDEKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludCgidHJ5aW5nIHcvIGxlbmd0aHMiLCBsZW4oZGljdDEpLCBsZW4oZGljdDIpLCBlbmQ9JyAnKQotICAgIHdoaWxlIGRpY3QxIGFuZCBsZW4oZGljdDEpID09IGxlbihkaWN0Mik6Ci0gICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiLiIsIGVuZD0nICcpCi0gICAgICAgIGMgPSBkaWN0MSA9PSBkaWN0MgotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHByaW50KCkKLQotIyBSdW4gdGVzdF9vbmUgbiB0aW1lcy4gIEF0IHRoZSBzdGFydCAoYmVmb3JlIHRoZSBidWdzIHdlcmUgZml4ZWQpLCAyMAotIyBjb25zZWN1dGl2ZSBydW5zIG9mIHRoaXMgdGVzdCBlYWNoIGJsZXcgdXAgb24gb3IgYmVmb3JlIHRoZSBzaXh0aCB0aW1lCi0jIHRlc3Rfb25lIHdhcyBydW4uICBTbyBuIGRvZXNuJ3QgaGF2ZSB0byBiZSBsYXJnZSB0byBnZXQgYW4gaW50ZXJlc3RpbmcKLSMgdGVzdC4KLSMgT1RPSCwgY2FsbGluZyB3aXRoIGxhcmdlIG4gaXMgYWxzbyBpbnRlcmVzdGluZywgdG8gZW5zdXJlIHRoYXQgdGhlIGZpeGVkCi0jIGNvZGUgZG9lc24ndCBob2xkIG9uIHRvIHJlZmNvdW50cyAqdG9vKiBsb25nIChpbiB3aGljaCBjYXNlIG1lbW9yeSB3b3VsZAotIyBsZWFrKS4KLQotZGVmIHRlc3Qobik6Ci0gICAgZm9yIGkgaW4gcmFuZ2Uobik6Ci0gICAgICAgIHRlc3Rfb25lKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKLQotIyBTZWUgbGFzdCBjb21tZW50IGJsb2NrIGZvciBjbHVlcyBhYm91dCBnb29kIHZhbHVlcyBmb3Igbi4KLXRlc3QoMTAwKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbm90aGVyIHNlZ2ZhdWx0IGJ1ZywgZGlzdGlsbGVkIGJ5IE1pY2hhZWwgSHVkc29uIGZyb20gYSBjLmwucHkgcG9zdC4KLQotY2xhc3MgQ2hpbGQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYuX19kaWN0X19bJ3BhcmVudCddID0gcGFyZW50Ci0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICBzZWxmLnBhcmVudC5hID0gMQotICAgICAgICBzZWxmLnBhcmVudC5iID0gMQotICAgICAgICBzZWxmLnBhcmVudC5jID0gMQotICAgICAgICBzZWxmLnBhcmVudC5kID0gMQotICAgICAgICBzZWxmLnBhcmVudC5lID0gMQotICAgICAgICBzZWxmLnBhcmVudC5mID0gMQotICAgICAgICBzZWxmLnBhcmVudC5nID0gMQotICAgICAgICBzZWxmLnBhcmVudC5oID0gMQotICAgICAgICBzZWxmLnBhcmVudC5pID0gMQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnBhcmVudCwgYXR0cikKLQotY2xhc3MgUGFyZW50OgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5hID0gQ2hpbGQoc2VsZikKLQotIyBIYXJkIHRvIHNheSB3aGF0IHRoaXMgd2lsbCBwcmludCEgIE1heSB2YXJ5IGZyb20gdGltZSB0byB0aW1lLiAgQnV0Ci0jIHdlJ3JlIHNwZWNpZmljYWxseSB0cnlpbmcgdG8gdGVzdCB0aGUgdHBfcHJpbnQgc2xvdCBoZXJlLCBhbmQgdGhpcyBpcwotIyB0aGUgY2xlYXJlc3Qgd2F5IHRvIGRvIGl0LiAgV2UgcHJpbnQgdGhlIHJlc3VsdCB0byBhIHRlbXAgZmlsZSBzbyB0aGF0Ci0jIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBkb2Vzbid0IG5lZWQgdG8gY2hhbmdlLgotCi1mID0gb3BlbihURVNURk4sICJ3IikKLXByaW50KFBhcmVudCgpLl9fZGljdF9fLCBmaWxlPWYpCi1mLmNsb3NlKCkKLW9zLnVubGluayhURVNURk4pCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFuZCBhbm90aGVyIGNvcmUtZHVtcGVyIGZyb20gTWljaGFlbCBIdWRzb24uCi0KLWRpY3QgPSB7fQotCi0jIEZvcmNlIGRpY3QgdG8gbWFsbG9jIGl0cyB0YWJsZS4KLWZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICBkaWN0W2ldID0gaQotCi1mID0gb3BlbihURVNURk4sICJ3IikKLQotY2xhc3MgTWFjaGlhdmVsbGk6Ci0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBkaWN0LmNsZWFyKCkKLQotICAgICAgICAjIE1pY2hhZWwgc2V6OiAgImRvZXNuJ3QgY3Jhc2ggd2l0aG91dCB0aGlzLiAgZG9uJ3Qga25vdyB3aHkuIgotICAgICAgICAjIFRpbSBzZXo6ICAibHVjayBvZiB0aGUgZHJhdzsgY3Jhc2hlcyB3aXRoIG9yIHdpdGhvdXQgZm9yIG1lLiIKLSAgICAgICAgcHJpbnQoZmlsZT1mKQotCi0gICAgICAgIHJldHVybiByZXByKCJtYWNoaWF2ZWxsaSIpCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAwCi0KLWRpY3RbTWFjaGlhdmVsbGkoKV0gPSBNYWNoaWF2ZWxsaSgpCi0KLXByaW50KHN0cihkaWN0KSwgZmlsZT1mKQotZi5jbG9zZSgpCi1vcy51bmxpbmsoVEVTVEZOKQotZGVsIGYsIGRpY3QKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbmQgYW5vdGhlciBjb3JlLWR1bXBlciBmcm9tIE1pY2hhZWwgSHVkc29uLgotCi1kaWN0ID0ge30KLQotIyBsZXQncyBmb3JjZSBkaWN0IHRvIG1hbGxvYyBpdHMgdGFibGUKLWZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICBkaWN0W2ldID0gaQotCi1jbGFzcyBNYWNoaWF2ZWxsaTI6Ci0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICByZXR1cm4gMQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gMAotCi1kaWN0W01hY2hpYXZlbGxpMigpXSA9IE1hY2hpYXZlbGxpMigpCi0KLXRyeToKLSAgICBkaWN0W01hY2hpYXZlbGxpMigpXQotZXhjZXB0IEtleUVycm9yOgotICAgIHBhc3MKLQotZGVsIGRpY3QKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5kIGFub3RoZXIgY29yZS1kdW1wZXIgZnJvbSBNaWNoYWVsIEh1ZHNvbi4KLQotZGljdCA9IHt9Ci0KLSMgbGV0J3MgZm9yY2UgZGljdCB0byBtYWxsb2MgaXRzIHRhYmxlCi1mb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgZGljdFtpXSA9IGkKLQotY2xhc3MgTWFjaGlhdmVsbGkzOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZCk6Ci0gICAgICAgIHNlbGYuaWQgPSBpZAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIHNlbGYuaWQgPT0gb3RoZXIuaWQ6Ci0gICAgICAgICAgICBkaWN0LmNsZWFyKCkKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzKCVzKSIlKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmlkKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gMAotCi1kaWN0W01hY2hpYXZlbGxpMygxKV0gPSBNYWNoaWF2ZWxsaTMoMCkKLWRpY3RbTWFjaGlhdmVsbGkzKDIpXSA9IE1hY2hpYXZlbGxpMygwKQotCi1mID0gb3BlbihURVNURk4sICJ3IikKLXRyeToKLSAgICB0cnk6Ci0gICAgICAgIHByaW50KGRpY3RbTWFjaGlhdmVsbGkzKDIpXSwgZmlsZT1mKQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotZmluYWxseToKLSAgICBmLmNsb3NlKCkKLSAgICBvcy51bmxpbmsoVEVTVEZOKQotCi1kZWwgZGljdAotZGVsIGRpY3QxLCBkaWN0MiwgZGljdDFrZXlzLCBkaWN0MmtleXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkgYi9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNjdiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CkBAIC0wLDAgKzEsMjk0IEBACitpbXBvcnQgc3lzCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKKworZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisKKyMgbmVlZGVkIHRlc3RzOgorIworIyBuZWVkIHRvIHRlc3Qgd2hlbiBuZXN0ZWQsIHNvIHRoYXQgdGhlIHRvcC1sZXZlbCBwYXRoIGlzbid0IHN5cy5wYXRoCisjIG5lZWQgdG8gdGVzdCBkeW5hbWljIHBhdGggZGV0ZWN0aW9uLCBib3RoIGF0IHRvcC1sZXZlbCBhbmQgbmVzdGVkCisjIHdpdGggZHluYW1pYyBwYXRoLCBjaGVjayB3aGVuIGEgbG9hZGVyIGlzIHJldHVybmVkIG9uIHBhdGggcmVsb2FkICh0aGF0IGlzLAorIyAgdHJ5aW5nIHRvIHN3aXRjaCBmcm9tIGEgbmFtZXNwYWNlIHBhY2thZ2UgdG8gYSByZWd1bGFyIHBhY2thZ2UpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBzeXNfbW9kdWxlc19jb250ZXh0KCk6CisgICAgIiIiCisgICAgTWFrZSBzdXJlIHN5cy5tb2R1bGVzIGlzIHRoZSBzYW1lIG9iamVjdCBhbmQgaGFzIHRoZSBzYW1lIGNvbnRlbnQKKyAgICB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgYXMgd2hlbiBlbnRlcmluZy4KKworICAgIFNpbWlsYXIgdG8gaW1wb3J0bGliLnRlc3QudXRpbC51bmNhY2hlLCBidXQgZG9lc24ndCByZXF1aXJlIGV4cGxpY2l0CisgICAgbmFtZXMuCisgICAgIiIiCisgICAgc3lzX21vZHVsZXNfc2F2ZWQgPSBzeXMubW9kdWxlcworICAgIHN5c19tb2R1bGVzX2NvcHkgPSBzeXMubW9kdWxlcy5jb3B5KCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1vZHVsZXMgPSBzeXNfbW9kdWxlc19zYXZlZAorICAgICAgICBzeXMubW9kdWxlcy5jbGVhcigpCisgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShzeXNfbW9kdWxlc19jb3B5KQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgbmFtZXNwYWNlX3RyZWVfY29udGV4dCgqKmt3YXJncyk6CisgICAgIiIiCisgICAgU2F2ZSBpbXBvcnQgc3RhdGUgYW5kIHN5cy5tb2R1bGVzIGNhY2hlIGFuZCByZXN0b3JlIGl0IG9uIGV4aXQuCisgICAgVHlwaWNhbCB1c2FnZToKKworICAgID4+PiB3aXRoIG5hbWVzcGFjZV90cmVlX2NvbnRleHQocGF0aD1bJy90bXAveHh5eS9wb3J0aW9uMScsCisgICAgLi4uICAgICAgICAgJy90bXAveHh5eS9wb3J0aW9uMiddKToKKyAgICAuLi4gICAgIHBhc3MKKyAgICAiIiIKKyAgICAjIHVzZSBkZWZhdWx0IG1ldGFfcGF0aCBhbmQgcGF0aF9ob29rcyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZQorICAgIGt3YXJncy5zZXRkZWZhdWx0KCdtZXRhX3BhdGgnLCBzeXMubWV0YV9wYXRoKQorICAgIGt3YXJncy5zZXRkZWZhdWx0KCdwYXRoX2hvb2tzJywgc3lzLnBhdGhfaG9va3MpCisgICAgaW1wb3J0X2NvbnRleHQgPSB1dGlsLmltcG9ydF9zdGF0ZSgqKmt3YXJncykKKyAgICB3aXRoIGltcG9ydF9jb250ZXh0LCBzeXNfbW9kdWxlc19jb250ZXh0KCk6CisgICAgICAgIHlpZWxkCisKK2NsYXNzIE5hbWVzcGFjZVBhY2thZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBTdWJjbGFzc2VzIHNob3VsZCBkZWZpbmUgc2VsZi5yb290IGFuZCBzZWxmLnBhdGhzICh1bmRlciB0aGF0IHJvb3QpCisgICAgdG8gYmUgYWRkZWQgdG8gc3lzLnBhdGguCisgICAgIiIiCisgICAgcm9vdCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnbmFtZXNwYWNlX3BrZ3MnKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlc29sdmVkX3BhdGhzID0gWworICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucm9vdCwgcGF0aCkgZm9yIHBhdGggaW4gc2VsZi5wYXRocworICAgICAgICBdCisgICAgICAgIHNlbGYuY3R4ID0gbmFtZXNwYWNlX3RyZWVfY29udGV4dChwYXRoPXNlbGYucmVzb2x2ZWRfcGF0aHMpCisgICAgICAgIHNlbGYuY3R4Ll9fZW50ZXJfXygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgVE9ETzogd2lsbCB3ZSBldmVyIHdhbnQgdG8gcGFzcyBleGNfaW5mbyB0byBfX2V4aXRfXz8KKyAgICAgICAgc2VsZi5jdHguX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKworY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKKworCitjbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3RfZHluYW1pY19wYXRoKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBvbmx5ICdmb28ub25lJyBjYW4gYmUgaW1wb3J0ZWQKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICAgICAgIyBOb3cgbW9kaWZ5IHN5cy5wYXRoCisgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCAncG9ydGlvbjInKSkKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKK2NsYXNzIENvbWJpbmVkTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydib3RoX3BvcnRpb25zJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisKK2NsYXNzIFNlcGFyYXRlZE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnLCAncG9ydGlvbjInXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKworCitjbGFzcyBTZXBhcmF0ZWRPdmVybGFwcGluZ05hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnLCAnYm90aF9wb3J0aW9ucyddCisKKyAgICBkZWYgdGVzdF9maXJzdF9wYXRoX3dpbnMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworICAgIGRlZiB0ZXN0X2ZpcnN0X3BhdGhfd2luc19hZ2FpbihzZWxmKToKKyAgICAgICAgc3lzLnBhdGgucmV2ZXJzZSgpCisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisgICAgZGVmIHRlc3RfZmlyc3RfcGF0aF93aW5zX2ltcG9ydGluZ19zZWNvbmRfZmlyc3Qoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworCitjbGFzcyBTaW5nbGVaaXBOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsndG9wX2xldmVsX3BvcnRpb24xLnppcCddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKworY2xhc3MgU2VwYXJhdGVkWmlwTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyd0b3BfbGV2ZWxfcG9ydGlvbjEuemlwJywgJ3BvcnRpb24yJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvcF9sZXZlbF9wb3J0aW9uMS56aXAnLCBmb28ub25lLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcuemlwJywgZm9vLnR3by5fX2ZpbGVfXykKKworCitjbGFzcyBTaW5nbGVOZXN0ZWRaaXBOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbmVzdGVkX3BvcnRpb24xLnppcC9uZXN0ZWRfcG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisKK2NsYXNzIFNlcGFyYXRlZE5lc3RlZFppcE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbmVzdGVkX3BvcnRpb24xLnppcC9uZXN0ZWRfcG9ydGlvbjEnLCAncG9ydGlvbjInXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKyAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oJ25lc3RlZF9wb3J0aW9uMS56aXAnLCAnbmVzdGVkX3BvcnRpb24xJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihmbiwgZm9vLm9uZS5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignLnppcCcsIGZvby50d28uX19maWxlX18pCisKKworY2xhc3MgTGVnYWN5U3VwcG9ydChOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ25vdF9hX25hbWVzcGFjZV9wa2cnLCAncG9ydGlvbjEnLCAncG9ydGlvbjInLCAnYm90aF9wb3J0aW9ucyddCisKKyAgICBkZWYgdGVzdF9ub25fbmFtZXNwYWNlX3BhY2thZ2VfdGFrZXNfcHJlY2VkZW5jZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEluKCdfX2luaXRfXycsIGZvby5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbmFtZXNwYWNlJywgc3RyKGZvby5fX2xvYWRlcl9fKS5sb3dlcigpKQorCisKK2NsYXNzIER5bmFtaWNQYXRoQ2FsY3VsYXRpb24oTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwcm9qZWN0MScsICdwcm9qZWN0MiddCisKKyAgICBkZWYgdGVzdF9wcm9qZWN0M19mYWlscyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC5vbmUuYXR0ciwgJ3BhcmVudCBjaGlsZCBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC50d28uYXR0ciwgJ3BhcmVudCBjaGlsZCB0d28nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50aHJlZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisKKyAgICBkZWYgdGVzdF9wcm9qZWN0M19zdWNjZWVkcyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC5vbmUuYXR0ciwgJ3BhcmVudCBjaGlsZCBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC50d28uYXR0ciwgJ3BhcmVudCBjaGlsZCB0d28nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50aHJlZQorCisgICAgICAgICMgbm93IGFkZCBwcm9qZWN0MworICAgICAgICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucm9vdCwgJ3Byb2plY3QzJykpCisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudGhyZWUKKworICAgICAgICAjIHRoZSBwYXRocyBkeW5hbWljYWxseSBnZXQgbG9uZ2VyLCB0byBpbmNsdWRlIHRoZSBuZXcgZGlyZWN0b3JpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC50aHJlZS5hdHRyLCAncGFyZW50IGNoaWxkIHRocmVlJykKKworCitjbGFzcyBaaXBXaXRoTWlzc2luZ0RpcmVjdG9yeShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ21pc3NpbmdfZGlyZWN0b3J5LnppcCddCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfbWlzc2luZ19kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICMgVGhpcyB3aWxsIGZhaWwgYmVjYXVzZSBtaXNzaW5nX2RpcmVjdG9yeS56aXAgY29udGFpbnM6CisgICAgICAgICMgICBMZW5ndGggICAgICBEYXRlICAgIFRpbWUgICAgTmFtZQorICAgICAgICAjIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAtLS0tLSAgIC0tLS0KKyAgICAgICAgIyAgICAgICAgMjkgIDIwMTItMDUtMDMgMTg6MTMgICBmb28vb25lLnB5CisgICAgICAgICMgICAgICAgICAwICAyMDEyLTA1LTAzIDIwOjU3ICAgYmFyLworICAgICAgICAjICAgICAgICAzOCAgMjAxMi0wNS0wMyAyMDo1NyAgIGJhci90d28ucHkKKyAgICAgICAgIyAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAtLS0tLS0tCisgICAgICAgICMgICAgICAgIDY3ICAgICAgICAgICAgICAgICAgICAgMyBmaWxlcworCisgICAgICAgICMgQmVjYXVzZSB0aGVyZSBpcyBubyAnZm9vLycsIHRoZSB6aXBpbXBvcnRlciBjdXJyZW50bHkgZG9lc24ndAorICAgICAgICAjICBrbm93IHRoYXQgZm9vIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UKKworICAgICAgICBpbXBvcnQgZm9vLm9uZQorCisgICAgZGVmIHRlc3RfcHJlc2VudF9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICMgVGhpcyBzdWNjZWVkcyBiZWNhdXNlIHRoZXJlIGlzIGEgImJhci8iIGluIHRoZSB6aXAgZmlsZQorICAgICAgICBpbXBvcnQgYmFyLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhci50d28uYXR0ciwgJ21pc3NpbmdfZGlyZWN0b3J5IGZvbyB0d28nKQorCisKK2NsYXNzIE1vZHVsZUFuZE5hbWVzcGFjZVBhY2thZ2VJblNhbWVEaXIoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydtb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlJ10KKworICAgIGRlZiB0ZXN0X21vZHVsZV9iZWZvcmVfbmFtZXNwYWNlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGZpbmQgdGhlIG1vZHVsZSBpbiBwcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICAjICBuYW1lc3BhY2UgcGFja2FnZS4KKyAgICAgICAgaW1wb3J0IGFfdGVzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFfdGVzdC5hdHRyLCAnaW4gbW9kdWxlJykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KCpOYW1lc3BhY2VQYWNrYWdlVGVzdC5fX3N1YmNsYXNzZXNfXygpKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQppbmRleCA3MzM1YjIzLi4xOWZiMTBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IGlvCitpbXBvcnQgc29ja2V0CiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNTcsNiArMjU4LDI2IEBACiAgICAgICAgICAgICAjIHZhbHVlCiAgICAgICAgICAgICBzZXRhdHRyKGNscywgbmFtZSwgd3JhcF9tZXRoKG1ldGgpKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIGRlZiBpc19jb25uZWN0ZWQoKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlcnZlciwgJ2ZpbGUnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuaGVscCgpCisgICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB3aXRoIHNlbGYuTk5UUF9DTEFTUyhzZWxmLk5OVFBfSE9TVCwgdGltZW91dD1USU1FT1VULCB1c2VuZXRyYz1GYWxzZSkgYXMgc2VydmVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5oZWxwKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY29ubmVjdGVkKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLk5OVFBfQ0xBU1Moc2VsZi5OTlRQX0hPU1QsIHRpbWVvdXQ9VElNRU9VVCwgdXNlbmV0cmM9RmFsc2UpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jb25uZWN0ZWQoKSkKKworCiBOZXR3b3JrZWROTlRQVGVzdHNNaXhpbi53cmFwX21ldGhvZHMoKQogCiAKQEAgLTg5NCw3ICs5MTUsNyBAQAogCiAgICAgZGVmIF9jaGVja19hcnRpY2xlX2JvZHkoc2VsZiwgbGluZXMpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTFdLmRlY29kZSgndXRmOCcpLCAiLS0gU2lnbmVkIGJ5IEFuZHLDqS4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0xXS5kZWNvZGUoJ3V0Zi04JyksICItLSBTaWduZWQgYnkgQW5kcsOpLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTJdLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTNdLCBiIi5IZXJlIGlzIGEgZG90LXN0YXJ0aW5nIGxpbmUuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stNF0sIGIiVGhpcyBpcyBqdXN0IGEgdGVzdCBhcnRpY2xlLiIpCkBAIC0xMTMzLDEyICsxMTU0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgc3VjY2Vzc19yZXNwKQogICAgICAgICAjIFdpdGggYW4gaXRlcmFibGUgb2YgdGVybWluYXRlZCBsaW5lcwogICAgICAgICBkZWYgaXRlcmxpbmVzKGIpOgotICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKFRydWUpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgICAgICByZXNwID0gc2VsZi5fY2hlY2tfcG9zdF9paGF2ZV9zdWIoZnVuYywgKmFyZ3MsIGZpbGVfZmFjdG9yeT1pdGVybGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgc3VjY2Vzc19yZXNwKQogICAgICAgICAjIFdpdGggYW4gaXRlcmFibGUgb2Ygbm9uLXRlcm1pbmF0ZWQgbGluZXMKICAgICAgICAgZGVmIGl0ZXJsaW5lcyhiKToKLSAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhGYWxzZSkpCisgICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpKQogICAgICAgICByZXNwID0gc2VsZi5fY2hlY2tfcG9zdF9paGF2ZV9zdWIoZnVuYywgKmFyZ3MsIGZpbGVfZmFjdG9yeT1pdGVybGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgc3VjY2Vzc19yZXNwKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IDY0NjQ5NTAuLmY4MDk4NzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC0xLDEwICsxLDExIEBACiBpbXBvcnQgbnRwYXRoCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVGVzdEZhaWxlZAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCi1pbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdGVyKGZuLCB3YW50UmVzdWx0KToKQEAgLTIxLDcgKzIyLDkgQEAKICAgICBmbiA9IGZuLnJlcGxhY2UoJ1siJywgJ1tiIicpCiAgICAgZm4gPSBmbi5yZXBsYWNlKCIsICciLCAiLCBiJyIpCiAgICAgZm4gPSBmbi5yZXBsYWNlKCcsICInLCAnLCBiIicpCi0gICAgZ290UmVzdWx0ID0gZXZhbChmbikKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBnb3RSZXN1bHQgPSBldmFsKGZuKQogICAgIGlmIGlzaW5zdGFuY2Uod2FudFJlc3VsdCwgc3RyKToKICAgICAgICAgd2FudFJlc3VsdCA9IHdhbnRSZXN1bHQuZW5jb2RlKCdhc2NpaScpCiAgICAgZWxpZiBpc2luc3RhbmNlKHdhbnRSZXN1bHQsIHR1cGxlKToKQEAgLTI1NCwxNCArMjU3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIG50cGF0aC5zYW1lb3BlbmZpbGUoLTEsIC0xKQogCiAKLWNsYXNzIE50Q29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QpOgorY2xhc3MgTnRDb21tb25UZXN0KHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhdGhtb2R1bGUgPSBudHBhdGgKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NwbGl0dW5jJ10KIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdE50cGF0aCwgTnRDb21tb25UZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKaW5kZXggYmVmM2Q0Yy4uMzQyM2Q0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQpAQCAtMTUwLDcgKzE1MCw3IEBACiAgICAgICAgICMgaW50LCBmbG9hdCwgRnJhY3Rpb24sIERlY2ltYWwKICAgICAgICAgdGVzdF92YWx1ZXMgPSBbCiAgICAgICAgICAgICBmbG9hdCgnLWluZicpLAotICAgICAgICAgICAgRCgnLTFlOTk5OTk5OTk5JyksCisgICAgICAgICAgICBEKCctMWU0MjUwMDAwMDAnKSwKICAgICAgICAgICAgIC0xZTMwOCwKICAgICAgICAgICAgIEYoLTIyLCA3KSwKICAgICAgICAgICAgIC0zLjE0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggN2I5NTYxMi4uNzhkZTI3OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC0zMTgsNiArMzE4LDIyIEBACiAgICAgICAgICAgICBbIi1iIl0sIHsnYWN0aW9uJzogJ3N0b3JlJywKICAgICAgICAgICAgICAgICAgICAgICdjYWxsYmFja19rd2FyZ3MnOiAnZm9vJ30pCiAKKyAgICBkZWYgdGVzdF9ub19zaW5nbGVfZGFzaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJpbnZhbGlkIGxvbmcgb3B0aW9uIHN0cmluZyAnLWRlYnVnJzogIgorICAgICAgICAgICAgIm11c3Qgc3RhcnQgd2l0aCAtLSwgZm9sbG93ZWQgYnkgbm9uLWRhc2giLAorICAgICAgICAgICAgWyItZGVidWciXSkKKworICAgICAgICBzZWxmLmFzc2VydE9wdGlvbkVycm9yKAorICAgICAgICAgICAgIm9wdGlvbiAtZDogaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6IG11c3Qgc3RhcnQgd2l0aCIKKyAgICAgICAgICAgICIgLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWQiLCAiLWRlYnVnIl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJpbnZhbGlkIGxvbmcgb3B0aW9uIHN0cmluZyAnLWRlYnVnJzogIgorICAgICAgICAgICAgIm11c3Qgc3RhcnQgd2l0aCAtLSwgZm9sbG93ZWQgYnkgbm9uLWRhc2giLAorICAgICAgICAgICAgWyItZGVidWciLCAiLS1kZWJ1ZyJdKQorCiBjbGFzcyBUZXN0T3B0aW9uUGFyc2VyKEJhc2VUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKQEAgLTYzMSw3ICs2NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25fbGlzdD1vcHRpb25zKQogCiAgICAgZGVmIHRlc3RfcmVxdWlyZWRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWEiXSwgIi1hIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWEiXSwgIi1hIG9wdGlvbiByZXF1aXJlcyAxIGFyZ3VtZW50IikKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfaW50ZWdlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRQYXJzZUZhaWwoWyItYiIsICI1eCJdLApAQCAtMTAyMyw3ICsxMDM5LDcgQEAKICAgICAgICAgVFlQRV9DSEVDS0VSWyJmaWxlIl0gPSBjaGVja19maWxlCiAKICAgICBkZWYgdGVzdF9maWxldHlwZV9vayhzZWxmKToKLSAgICAgICAgb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VPSyhbIi0tZmlsZSIsIHN1cHBvcnQuVEVTVEZOLCAiLWFmb28iXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZmlsZSc6IHN1cHBvcnQuVEVTVEZOLCAnYSc6ICdmb28nfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKaW5kZXggNzIwZTc4Yi4uMTg0YzlhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC0xNCwyMCArMTQsNDMgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBtbWFwCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQogaW1wb3J0IHV1aWQKK2ltcG9ydCBhc3luY29yZQoraW1wb3J0IGFzeW5jaGF0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgc3RhdAoraW1wb3J0IGxvY2FsZQoraW1wb3J0IGNvZGVjcwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCit3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhUcnVlKQorc3QgPSBvcy5zdGF0KF9fZmlsZV9fKQorc3RhdF9zdXBwb3J0c19zdWJzZWNvbmQgPSAoCisgICAgIyBjaGVjayBpZiBmbG9hdCBhbmQgaW50IHRpbWVzdGFtcHMgYXJlIGRpZmZlcmVudAorICAgIChzdC5zdF9hdGltZSAhPSBzdFs3XSkKKyAgICBvciAoc3Quc3RfbXRpbWUgIT0gc3RbOF0pCisgICAgb3IgKHN0LnN0X2N0aW1lICE9IHN0WzldKSkKKwogIyBEZXRlY3Qgd2hldGhlciB3ZSdyZSBvbiBhIExpbnV4IHN5c3RlbSB0aGF0IHVzZXMgdGhlIChub3cgb3V0ZGF0ZWQKICMgYW5kIHVubWFpbnRhaW5lZCkgbGludXh0aHJlYWRzIHRocmVhZGluZyBsaWJyYXJ5LiAgVGhlcmUncyBhbiBpc3N1ZQogIyB3aGVuIGNvbWJpbmluZyBsaW51eHRocmVhZHMgd2l0aCBhIGZhaWxlZCBleGVjdiBjYWxsOiBzZWUKICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTQ5NzAuCi1pZiAoaGFzYXR0cihvcywgImNvbmZzdHJfbmFtZXMiKSBhbmQKLSAgICAiQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiIgaW4gb3MuY29uZnN0cl9uYW1lcyk6Ci0gICAgbGlicHRocmVhZCA9IG9zLmNvbmZzdHIoIkNTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04iKQotICAgIFVTSU5HX0xJTlVYVEhSRUFEUz0gbGlicHRocmVhZC5zdGFydHN3aXRoKCJsaW51eHRocmVhZHMiKQoraWYgaGFzYXR0cihzeXMsICd0aHJlYWRfaW5mbycpIGFuZCBzeXMudGhyZWFkX2luZm8udmVyc2lvbjoKKyAgICBVU0lOR19MSU5VWFRIUkVBRFMgPSBzeXMudGhyZWFkX2luZm8udmVyc2lvbi5zdGFydHN3aXRoKCJsaW51eHRocmVhZHMiKQogZWxzZToKLSAgICBVU0lOR19MSU5VWFRIUkVBRFM9IEZhbHNlCisgICAgVVNJTkdfTElOVVhUSFJFQURTID0gRmFsc2UKKworIyBJc3N1ZSAjMTQxMTA6IFNvbWUgdGVzdHMgZmFpbCBvbiBGcmVlQlNEIGlmIHRoZSB1c2VyIGlzIGluIHRoZSB3aGVlbCBncm91cC4KK0hBVkVfV0hFRUxfR1JPVVAgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpIGFuZCBvcy5nZXRnaWQoKSA9PSAwCiAKICMgVGVzdHMgY3JlYXRpbmcgVEVTVEZOCiBjbGFzcyBGaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTI0LDYgKzE0NywxOCBAQAogICAgICAgICBzZWxmLmZkb3Blbl9oZWxwZXIoJ3InKQogICAgICAgICBzZWxmLmZkb3Blbl9oZWxwZXIoJ3InLCAxMDApCiAKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiLjIiCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiMSIpCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIyIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgVEVTVEZOMikKKyAgICAgICAgb3MucmVwbGFjZShzdXBwb3J0LlRFU1RGTiwgVEVTVEZOMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnN0YXQsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgIjEiKQorCiAKICMgVGVzdCBhdHRyaWJ1dGVzIG9uIHJldHVybiB2YWx1ZXMgZnJvbSBvcy4qc3RhdCogZmFtaWx5LgogY2xhc3MgU3RhdEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE0Miw3ICsxNzcsNiBAQAogICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgInN0YXQiKToKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGltcG9ydCBzdGF0CiAgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoZm5hbWUpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgZGlyZWN0IGFjY2VzcyB3b3JrcwpAQCAtMTYyLDYgKzE5NiwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtnZXRhdHRyKHN0YXQsIG5hbWUpXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIG1lbWJlcnMpCiAKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgc3RfP3RpbWUgYW5kIHN0Xz90aW1lX25zIGZpZWxkcyByb3VnaGx5IGFncmVlCisgICAgICAgICMgKHRoZXkgc2hvdWxkIGFsd2F5cyBhZ3JlZSB1cCB0byBhcm91bmQgdGVucy1vZi1taWNyb3NlY29uZHMpCisgICAgICAgIGZvciBuYW1lIGluICdzdF9hdGltZSBzdF9tdGltZSBzdF9jdGltZScuc3BsaXQoKToKKyAgICAgICAgICAgIGZsb2F0eSA9IGludChnZXRhdHRyKHJlc3VsdCwgbmFtZSkgKiAxMDAwMDApCisgICAgICAgICAgICBuYW5vc2Vjb25keSA9IGdldGF0dHIocmVzdWx0LCBuYW1lICsgIl9ucyIpIC8vIDEwMDAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0eSwgbmFub3NlY29uZHksIGRlbHRhPTIpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0WzIwMF0KICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHJhaXNlZCIpCkBAIC0yMDgsNyArMjQ5LDkgQEAKICAgICAgICAgICAgIGZuYW1lID0gc2VsZi5mbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGVuY29kZSAlYSBmb3IgdGhlIGZpbGVzeXN0ZW0iICUgc2VsZi5mbmFtZSkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCiAKICAgICBkZWYgdGVzdF9zdGF0dmZzX2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic3RhdHZmcyIpOgpAQCAtMjY1LDYgKzMwOCwxNDMgQEAKICAgICAgICAgc3QyID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdDIuc3RfbXRpbWUsIGludChzdC5zdF9tdGltZS1kZWx0YSkpCiAKKyAgICBkZWYgX3Rlc3RfdXRpbWUoc2VsZiwgZmlsZW5hbWUsIGF0dHIsIHV0aW1lLCBkZWx0YSk6CisgICAgICAgICMgSXNzdWUgIzEzMzI3IHJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IHRvIHBhc3MgTm9uZSBhcyB0aGUKKyAgICAgICAgIyBzZWNvbmQgYXJndW1lbnQuIENoZWNrIHRoYXQgdGhlIHByZXZpb3VzIG1ldGhvZHMgb2YgcGFzc2luZworICAgICAgICAjIGEgdGltZSB0dXBsZSBvciBOb25lIHdvcmsgaW4gYWRkaXRpb24gdG8gbm8gYXJndW1lbnQuCisgICAgICAgIHN0MCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgICMgRG9lc24ndCBzZXQgYW55dGhpbmcgbmV3LCBidXQgc2V0cyB0aGUgdGltZSB0dXBsZSB3YXkKKyAgICAgICAgdXRpbWUoZmlsZW5hbWUsIChhdHRyKHN0MCwgInN0X2F0aW1lIiksIGF0dHIoc3QwLCAic3RfbXRpbWUiKSkpCisgICAgICAgICMgU2V0dGluZyB0aGUgdGltZSB0byB0aGUgdGltZSB5b3UganVzdCByZWFkLCB0aGVuIHJlYWRpbmcgYWdhaW4sCisgICAgICAgICMgc2hvdWxkIGFsd2F5cyByZXR1cm4gZXhhY3RseSB0aGUgc2FtZSB0aW1lcy4KKyAgICAgICAgc3QxID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyKHN0MCwgInN0X210aW1lIiksIGF0dHIoc3QxLCAic3RfbXRpbWUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyKHN0MCwgInN0X2F0aW1lIiksIGF0dHIoc3QxLCAic3RfYXRpbWUiKSkKKyAgICAgICAgIyBTZXQgdG8gdGhlIGN1cnJlbnQgdGltZSBpbiB0aGUgb2xkIGV4cGxpY2l0IHdheS4KKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIE5vbmUpCisgICAgICAgIHN0MiA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgICMgU2V0IHRvIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIG5ldyB3YXkKKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUpCisgICAgICAgIHN0MyA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoYXR0cihzdDIsICJzdF9tdGltZSIpLCBhdHRyKHN0MywgInN0X210aW1lIiksIGRlbHRhPWRlbHRhKQorCisgICAgZGVmIHRlc3RfdXRpbWUoc2VsZik6CisgICAgICAgIGRlZiB1dGltZShmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICByZXR1cm4gb3MudXRpbWUoZmlsZSwgdGltZXMpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc2VsZi5mbmFtZSwgZ2V0YXR0ciwgdXRpbWUsIDEwKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHN1cHBvcnQuVEVTVEZOLCBnZXRhdHRyLCB1dGltZSwgMTApCisKKworICAgIGRlZiBfdGVzdF91dGltZV9ucyhzZWxmLCBzZXRfdGltZXNfbnMsIHRlc3RfZGlyPVRydWUpOgorICAgICAgICBkZWYgZ2V0YXR0cl9ucyhvLCBhdHRyKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG8sIGF0dHIgKyAiX25zIikKKyAgICAgICAgdGVuX3MgPSAxMCAqIDEwMDAgKiAxMDAwICogMTAwMAorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHNlbGYuZm5hbWUsIGdldGF0dHJfbnMsIHNldF90aW1lc19ucywgdGVuX3MpCisgICAgICAgIGlmIHRlc3RfZGlyOgorICAgICAgICAgICAgc2VsZi5fdGVzdF91dGltZShzdXBwb3J0LlRFU1RGTiwgZ2V0YXR0cl9ucywgc2V0X3RpbWVzX25zLCB0ZW5fcykKKworICAgIGRlZiB0ZXN0X3V0aW1lX25zKHNlbGYpOgorICAgICAgICBkZWYgdXRpbWVfbnMoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnV0aW1lKGZpbGUsIG5zPXRpbWVzKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKHV0aW1lX25zKQorCisgICAgcmVxdWlyZXNfdXRpbWVfZGlyX2ZkID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICByZXF1aXJlc191dGltZV9mZCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgIHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKworICAgIEByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcworICAgIGRlZiB0ZXN0X2x1dGltZXNfbnMoc2VsZik6CisgICAgICAgIGRlZiBsdXRpbWVzX25zKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHJldHVybiBvcy51dGltZShmaWxlLCBucz10aW1lcywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKGx1dGltZXNfbnMpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVzX25zKHNlbGYpOgorICAgICAgICBkZWYgZnV0aW1lc19ucyhmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCBucz10aW1lcykKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyhmdXRpbWVzX25zLCB0ZXN0X2Rpcj1GYWxzZSkKKworICAgIGRlZiBfdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoc2VsZiwgbmFtZSwgYXJnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGdldGF0dHIob3MsIG5hbWUpKGFyZywgKDUsIDUpLCBucz0oNSwgNSkpCisKKyAgICBkZWYgdGVzdF91dGltZV9pbnZhbGlkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoJ3V0aW1lJywgc2VsZi5mbmFtZSkKKworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3RhdF9zdXBwb3J0c19zdWJzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnN0YXQoKSBkb2Vzbid0IGhhcyBhIHN1YnNlY29uZCByZXNvbHV0aW9uIikKKyAgICBkZWYgX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNlbGYsIHNldF90aW1lX2Z1bmMpOgorICAgICAgICBhc2VjLCBhbXNlYyA9IDEsIDkwMQorICAgICAgICBhdGltZSA9IGFzZWMgKyBhbXNlYyAqIDFlLTMKKyAgICAgICAgbXNlYywgbW1zZWMgPSAyLCA5MDEKKyAgICAgICAgbXRpbWUgPSBtc2VjICsgbW1zZWMgKiAxZS0zCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5mbmFtZQorICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKDAsIDApKQorICAgICAgICBzZXRfdGltZV9mdW5jKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhUcnVlKQorICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc3Quc3RfYXRpbWUsIGF0aW1lLCBwbGFjZXM9MykKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9tdGltZSwgbXRpbWUsIHBsYWNlcz0zKQorCisgICAgZGVmIHRlc3RfdXRpbWVfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVuc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZGlyX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc2F0X3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKKyAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihkaXJuYW1lLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51dGltZShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSwgZGlyX2ZkPWRpcmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzCisgICAgZGVmIHRlc3RfbHV0aW1lc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCAoYXRpbWUsIG10aW1lKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9kaXJfZmQKKyAgICBkZWYgdGVzdF91dGltZW5zYXRfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgZGlyZmQgPSBvcy5vcGVuKGRpcm5hbWUsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpLCBkaXJfZmQ9ZGlyZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzPShhdGltZSwgbXRpbWUpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKICAgICAjIFJlc3RyaWN0IHRlc3QgdG8gV2luMzIsIHNpbmNlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvdGhlcgogICAgICMgc3lzdGVtcyBzdXBwb3J0IGNlbnRpc2Vjb25kcwogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgpAQCAtMjk2LDYgKzQ3NiwxOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkNvdWxkIG5vdCBzdGF0IHBhZ2VmaWxlLnN5cyIpCiAKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCisgICAgICAgIGRlZiB0ZXN0XzE1MjYxKHNlbGYpOgorICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCBzdGF0J2luZyBhIGNsb3NlZCBmZCBkb2VzIG5vdCBjYXVzZSBjcmFzaAorICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnN0YXQocikgICAgICAgICAgIyBzaG91bGQgbm90IHJhaXNlIGVycm9yCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY3R4OgorICAgICAgICAgICAgICAgIG9zLnN0YXQocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisKIGZyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogCiBjbGFzcyBFbnZpcm9uVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpAQCAtMzI0LDIzICs1MTcsMjMgQEAKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24KIAogICAgICMgQnVnIDExMTA0NzgKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCiAgICAgZGVmIHRlc3RfdXBkYXRlMihzZWxmKToKICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIvYmluL3NoIik6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQotICAgICAgICAgICAgd2l0aCBvcy5wb3BlbigiL2Jpbi9zaCAtYyAnZWNobyAkSEVMTE8nIikgYXMgcG9wZW46Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCisgICAgICAgIG9zLmVudmlyb24udXBkYXRlKEhFTExPPSJXb3JsZCIpCisgICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgorICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgIldvcmxkIikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKICAgICBkZWYgdGVzdF9vc19wb3Blbl9pdGVyKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL2Jpbi9zaCIpOgotICAgICAgICAgICAgd2l0aCBvcy5wb3BlbigKLSAgICAgICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKLSAgICAgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUxXG4iKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTNcbiIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCisgICAgICAgIHdpdGggb3MucG9wZW4oCisgICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKKyAgICAgICAgICAgIGl0ID0gaXRlcihwb3BlbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCiAgICAgIyBWZXJpZnkgZW52aXJvbiBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgT1MgYXJlIG9mIHRoZQogICAgICMgY29ycmVjdCBzdHIgdHlwZS4KQEAgLTQyNyw4ICs2MjAsOCBAQAogCiAgICAgIyBPbiBGcmVlQlNEIDwgNyBhbmQgT1MgWCA8IDEwLjYsIHVuc2V0ZW52KCkgZG9lc24ndCByZXR1cm4gYSB2YWx1ZSAoaXNzdWUKICAgICAjICMxMzQxNSkuCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2ZyZWVic2QnLCAnZGFyd2luJykpLAotICAgICAgICAgICAgICAgICAgICAgImR1ZSB0byBrbm93biBPUyBidWc6IHNlZSBpc3N1ZSAjMTM0MTUiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig3KQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDYpCiAgICAgZGVmIHRlc3RfdW5zZXRfZXJyb3Ioc2VsZik6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgICAgICAgICAgIyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsaW1pdGVkIHRvIDMyLDc2NyBjaGFyYWN0ZXJzCkBAIC00NDIsNyArNjM1LDcgQEAKIGNsYXNzIFdhbGtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgZm9yIG9zLndhbGsoKS4iIiIKIAotICAgIGRlZiB0ZXN0X3RyYXZlcnNhbChzZWxmKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGpvaW4KIApAQCAtNDU2LDYgKzY0OSw3IEBACiAgICAgICAgICMgICAgICAgICBTVUIyLyAgICAgICAgICAgICBhIGZpbGUga2lkIGFuZCBhIGRpcnN5bWxpbmsga2lkCiAgICAgICAgICMgICAgICAgICAgIHRtcDMKICAgICAgICAgIyAgICAgICAgICAgbGluay8gICAgICAgICAgIGEgc3ltbGluayB0byBURVNURk4uMgorICAgICAgICAjICAgICAgICAgICBicm9rZW5fbGluawogICAgICAgICAjICAgICAgIFRFU1QyLwogICAgICAgICAjICAgICAgICAgdG1wNCAgICAgICAgICAgICAgYSBsb25lIGZpbGUKICAgICAgICAgd2Fsa19wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QxIikKQEAgLTQ2OCw2ICs2NjIsOCBAQAogICAgICAgICBsaW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQogICAgICAgICB0Ml9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIikKICAgICAgICAgdG1wNF9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIiwgInRtcDQiKQorICAgICAgICBsaW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQorICAgICAgICBicm9rZW5fbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJicm9rZW5fbGluayIpCiAKICAgICAgICAgIyBDcmVhdGUgc3R1ZmYuCiAgICAgICAgIG9zLm1ha2VkaXJzKHN1YjExX3BhdGgpCkBAIC00ODQsNyArNjgwLDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3ltbGlua190b19kaXIgPSBvcy5zeW1saW5rCiAgICAgICAgICAgICBzeW1saW5rX3RvX2Rpcihvcy5wYXRoLmFic3BhdGgodDJfcGF0aCksIGxpbmtfcGF0aCkKLSAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFsibGluayJdLCBbInRtcDMiXSkKKyAgICAgICAgICAgIHN5bWxpbmtfdG9fZGlyKCdicm9rZW4nLCBicm9rZW5fbGlua19wYXRoKQorICAgICAgICAgICAgc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgWyJsaW5rIl0sIFsiYnJva2VuX2xpbmsiLCAidG1wMyJdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgW10sIFsidG1wMyJdKQogCkBAIC00OTYsNiArNjkzLDcgQEAKICAgICAgICAgIyAgICAgZmxpcHBlZDogIFRFU1RGTiwgU1VCMiwgU1VCMSwgU1VCMTEKICAgICAgICAgZmxpcHBlZCA9IGFsbFswXVsxXVswXSAhPSAiU1VCMSIKICAgICAgICAgYWxsWzBdWzFdLnNvcnQoKQorICAgICAgICBhbGxbMyAtIDIgKiBmbGlwcGVkXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLCAod2Fsa19wYXRoLCBbIlNVQjEiLCAiU1VCMiJdLCBbInRtcDEiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzEgKyBmbGlwcGVkXSwgKHN1YjFfcGF0aCwgWyJTVUIxMSJdLCBbInRtcDIiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzIgKyBmbGlwcGVkXSwgKHN1YjExX3BhdGgsIFtdLCBbXSkpCkBAIC01MTEsNiArNzA5LDcgQEAKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnU1VCMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLCAod2Fsa19wYXRoLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQorICAgICAgICBhbGxbMV1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc3ViMl90cmVlKQogCiAgICAgICAgICMgV2FsayBib3R0b20tdXAuCkBAIC01MjEsNiArNzIwLDcgQEAKICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KICAgICAgICAgZmxpcHBlZCA9IGFsbFszXVsxXVswXSAhPSAiU1VCMSIKICAgICAgICAgYWxsWzNdWzFdLnNvcnQoKQorICAgICAgICBhbGxbMiAtIDIgKiBmbGlwcGVkXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzNdLCAod2Fsa19wYXRoLCBbIlNVQjEiLCAiU1VCMiJdLCBbInRtcDEiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsW2ZsaXBwZWRdLCAoc3ViMTFfcGF0aCwgW10sIFtdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbZmxpcHBlZCArIDFdLCAoc3ViMV9wYXRoLCBbIlNVQjExIl0sIFsidG1wMiJdKSkKQEAgLTU1Miw2ICs3NTIsODIgQEAKICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRpcm5hbWUpCiAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQogCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmd2FsaycpLCAiVGVzdCBuZWVkcyBvcy5md2FsaygpIikKK2NsYXNzIEZ3YWxrVGVzdHMoV2Fsa1Rlc3RzKToKKyAgICAiIiJUZXN0cyBmb3Igb3MuZndhbGsoKS4iIiIKKworICAgIGRlZiBfY29tcGFyZV90b193YWxrKHNlbGYsIHdhbGtfa3dhcmdzLCBmd2Fsa19rd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgY29tcGFyZSB3aXRoIHdhbGsoKSByZXN1bHRzLgorICAgICAgICAiIiIKKyAgICAgICAgd2Fsa19rd2FyZ3MgPSB3YWxrX2t3YXJncy5jb3B5KCkKKyAgICAgICAgZndhbGtfa3dhcmdzID0gZndhbGtfa3dhcmdzLmNvcHkoKQorICAgICAgICBmb3IgdG9wZG93biwgZm9sbG93X3N5bWxpbmtzIGluIGl0ZXJ0b29scy5wcm9kdWN0KChUcnVlLCBGYWxzZSksIHJlcGVhdD0yKToKKyAgICAgICAgICAgIHdhbGtfa3dhcmdzLnVwZGF0ZSh0b3Bkb3duPXRvcGRvd24sIGZvbGxvd2xpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZ3YWxrX2t3YXJncy51cGRhdGUodG9wZG93bj10b3Bkb3duLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorCisgICAgICAgICAgICBleHBlY3RlZCA9IHt9CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsaygqKndhbGtfa3dhcmdzKToKKyAgICAgICAgICAgICAgICBleHBlY3RlZFtyb290XSA9IChzZXQoZGlycyksIHNldChmaWxlcykpCisKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCoqZndhbGtfa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJvb3QsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbcm9vdF0sIChzZXQoZGlycyksIHNldChmaWxlcykpKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV90b193YWxrKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3RvcCc6IHN1cHBvcnQuVEVTVEZOfQorICAgICAgICBzZWxmLl9jb21wYXJlX3RvX3dhbGsoa3dhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9kaXJfZmQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZkID0gb3Mub3BlbigiLiIsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgd2Fsa19rd2FyZ3MgPSB7J3RvcCc6IHN1cHBvcnQuVEVTVEZOfQorICAgICAgICAgICAgZndhbGtfa3dhcmdzID0gd2Fsa19rd2FyZ3MuY29weSgpCisgICAgICAgICAgICBmd2Fsa19rd2FyZ3NbJ2Rpcl9mZCddID0gZmQKKyAgICAgICAgICAgIHNlbGYuX2NvbXBhcmVfdG9fd2Fsayh3YWxrX2t3YXJncywgZndhbGtfa3dhcmdzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBkZWYgdGVzdF95aWVsZHNfY29ycmVjdF9kaXJfZmQoc2VsZik6CisgICAgICAgICMgY2hlY2sgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9ycworICAgICAgICBmb3IgdG9wZG93biwgZm9sbG93X3N5bWxpbmtzIGluIGl0ZXJ0b29scy5wcm9kdWN0KChUcnVlLCBGYWxzZSksIHJlcGVhdD0yKToKKyAgICAgICAgICAgIGFyZ3MgPSBzdXBwb3J0LlRFU1RGTiwgdG9wZG93biwgTm9uZQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoKmFyZ3MsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgRkQgaXMgdmFsaWQKKyAgICAgICAgICAgICAgICBvcy5mc3RhdChyb290ZmQpCisgICAgICAgICAgICAgICAgIyByZWR1bmRhbnQgY2hlY2sKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHJvb3RmZCkKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgbGlzdGRpcigpIHJldHVybnMgY29uc2lzdGVudCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG9zLmxpc3RkaXIocm9vdGZkKSksIHNldChkaXJzKSB8IHNldChmaWxlcykpCisKKyAgICBkZWYgdGVzdF9mZF9sZWFrKHNlbGYpOgorICAgICAgICAjIFNpbmNlIHdlJ3JlIG9wZW5pbmcgYSBsb3Qgb2YgRkRzLCB3ZSBtdXN0IGJlIGNhcmVmdWwgdG8gYXZvaWQgbGVha3M6CisgICAgICAgICMgd2UgYm90aCBjaGVjayB0aGF0IGNhbGxpbmcgZndhbGsoKSBhIGxhcmdlIG51bWJlciBvZiB0aW1lcyBkb2Vzbid0CisgICAgICAgICMgeWllbGQgRU1GSUxFLCBhbmQgdGhhdCB0aGUgbWluaW11bSBhbGxvY2F0ZWQgRkQgaGFzbid0IGNoYW5nZWQuCisgICAgICAgIG1pbmZkID0gb3MuZHVwKDEpCisgICAgICAgIG9zLmNsb3NlKG1pbmZkKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgorICAgICAgICAgICAgZm9yIHggaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4pOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbmV3ZmQgPSBvcy5kdXAoMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBuZXdmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdmZCwgbWluZmQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgY2xlYW51cAorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKyAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQorCisKIGNsYXNzIE1ha2VkaXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKQEAgLTU3NSwxNCArODUxLDEyIEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKICAgICAgICAgbW9kZSA9IDBvNzc3CiAgICAgICAgIG9sZF9tYXNrID0gb3MudW1hc2soMG8wMjIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCBtb2RlLCBleGlzdF9vaz1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCAwbzc3NiwgZXhpc3Rfb2s9VHJ1ZSkKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnVtYXNrKG9sZF9tYXNrKQorICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUsIGV4aXN0X29rPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgMG83NzYsIGV4aXN0X29rPVRydWUpCisgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgb3MudW1hc2sob2xkX21hc2spCiAKICAgICBkZWYgdGVzdF9leGlzdF9va19zX2lzZ2lkX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzdXBwb3J0LlRFU1RGTiwgJ2RpcjEnKQpAQCAtNTk0LDcgKzg2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLmxzdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmNobW9kKHN1cHBvcnQuVEVTVEZOLCBleGlzdGluZ190ZXN0Zm5fbW9kZSB8IFNfSVNHSUQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0Nhbm5vdCBzZXQgU19JU0dJRCBmb3IgZGlyLicpCiAgICAgICAgICAgICBpZiAob3MubHN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUgJiBTX0lTR0lEICE9IFNfSVNHSUQpOgogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdObyBzdXBwb3J0IGZvciBTX0lTR0lEIGRpciBtb2RlLicpCkBAIC04OTQsMTAgKzExNjgsMTIgQEAKIAogICAgIGRlZiB0ZXN0X2ZwYXRoY29uZihzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihvcywgImZwYXRoY29uZiIpOgorICAgICAgICAgICAgc2VsZi5jaGVjayhvcy5wYXRoY29uZiwgIlBDX05BTUVfTUFYIikKICAgICAgICAgICAgIHNlbGYuY2hlY2sob3MuZnBhdGhjb25mLCAiUENfTkFNRV9NQVgiKQogCiAgICAgZGVmIHRlc3RfZnRydW5jYXRlKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKG9zLCAiZnRydW5jYXRlIik6CisgICAgICAgICAgICBzZWxmLmNoZWNrKG9zLnRydW5jYXRlLCAwKQogICAgICAgICAgICAgc2VsZi5jaGVjayhvcy5mdHJ1bmNhdGUsIDApCiAKICAgICBkZWYgdGVzdF9sc2VlayhzZWxmKToKQEAgLTkzMSw3ICsxMjA3LDkgQEAKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGYxOgogICAgICAgICAgICAgZjEud3JpdGUoInRlc3QiKQogCi0gICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQogICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJyIikgYXMgZjEsIG9wZW4oZmlsZTIsICJyIikgYXMgZjI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lb3BlbmZpbGUoZjEuZmlsZW5vKCksIGYyLmZpbGVubygpKSkKIApAQCAtOTY1LDcgKzEyNDMsNyBAQAogCiAgICAgICAgIGlmIGhhc2F0dHIob3MsICdzZXRnaWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldGdpZChzZWxmKToKLSAgICAgICAgICAgICAgICBpZiBvcy5nZXR1aWQoKSAhPSAwOgorICAgICAgICAgICAgICAgIGlmIG9zLmdldHVpZCgpICE9IDAgYW5kIG5vdCBIQVZFX1dIRUVMX0dST1VQOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvcy5lcnJvciwgb3Muc2V0Z2lkLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG9zLnNldGdpZCwgMTw8MzIpCiAKQEAgLTk3Nyw3ICsxMjU1LDcgQEAKIAogICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2V0ZWdpZCcpOgogICAgICAgICAgICAgZGVmIHRlc3Rfc2V0ZWdpZChzZWxmKToKLSAgICAgICAgICAgICAgICBpZiBvcy5nZXR1aWQoKSAhPSAwOgorICAgICAgICAgICAgICAgIGlmIG9zLmdldHVpZCgpICE9IDAgYW5kIG5vdCBIQVZFX1dIRUVMX0dST1VQOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvcy5lcnJvciwgb3Muc2V0ZWdpZCwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXRlZ2lkLCAxPDwzMikKIApAQCAtOTk3LDcgKzEyNzUsNyBAQAogCiAgICAgICAgIGlmIGhhc2F0dHIob3MsICdzZXRyZWdpZCcpOgogICAgICAgICAgICAgZGVmIHRlc3Rfc2V0cmVnaWQoc2VsZik6Ci0gICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMDoKKyAgICAgICAgICAgICAgICBpZiBvcy5nZXR1aWQoKSAhPSAwIGFuZCBub3QgSEFWRV9XSEVFTF9HUk9VUDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob3MuZXJyb3IsIG9zLnNldHJlZ2lkLCAwLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG9zLnNldHJlZ2lkLCAxPDwzMiwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXRyZWdpZCwgMCwgMTw8MzIpCkBAIC0xMDM4LDggKzEzMTYsNyBAQAogICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5kaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZm9yIGZuIGluIGJ5dGVzZm46Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLmJkaXIsIGZuKSwgInciKQotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5iZGlyLCBmbikpCiAgICAgICAgICAgICAgICAgICAgIGZuID0gb3MuZnNkZWNvZGUoZm4pCiAgICAgICAgICAgICAgICAgICAgIGlmIGZuIGluIHNlbGYudW5pY29kZWZuOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRlIGZpbGVuYW1lIikKQEAgLTEwNTUsNiArMTMzMiwxMyBAQAogICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLnVuaWNvZGVmbgogICAgICAgICAgICAgZm91bmQgPSBzZXQob3MubGlzdGRpcihzZWxmLmRpcikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBleHBlY3RlZCkKKyAgICAgICAgICAgICMgdGVzdCBsaXN0ZGlyIHdpdGhvdXQgYXJndW1lbnRzCisgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSA9IG9zLmdldGN3ZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIob3Muc2VwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG9zLmxpc3RkaXIoKSksIHNldChvcy5saXN0ZGlyKG9zLnNlcCkpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jaGRpcihjdXJyZW50X2RpcmVjdG9yeSkKIAogICAgICAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgogICAgICAgICAgICAgZm9yIGZuIGluIHNlbGYudW5pY29kZWZuOgpAQCAtMTI2Nyw4ICsxNTUxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQobGluayksIG9zLnN0YXQobGluaykpCiAKICAgICAgICAgYnl0ZXNfbGluayA9IG9zLmZzZW5jb2RlKGxpbmspCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKIAogICAgIGRlZiB0ZXN0XzEyMDg0KHNlbGYpOgogICAgICAgICBsZXZlbDEgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCkBAIC0xMzI3LDYgKzE2MTMsMjIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNkZWNvZGUoYnl0ZXNmbiksIGZuKQogCiAKKworY2xhc3MgRGV2aWNlRW5jb2RpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYWRfZmQoc2VsZik6CisgICAgICAgICMgUmV0dXJuIE5vbmUgd2hlbiBhbiBmZCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5kZXZpY2VfZW5jb2RpbmcoMTIzNDU2KSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmlzYXR0eSgwKSBhbmQgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvcgorICAgICAgICAgICAgKGhhc2F0dHIobG9jYWxlLCAnbmxfbGFuZ2luZm8nKSBhbmQgaGFzYXR0cihsb2NhbGUsICdDT0RFU0VUJykpKSwKKyAgICAgICAgICAgICd0ZXN0IHJlcXVpcmVzIGEgdHR5IGFuZCBlaXRoZXIgV2luZG93cyBvciBubF9sYW5naW5mbyhDT0RFU0VUKScpCisgICAgZGVmIHRlc3RfZGV2aWNlX2VuY29kaW5nKHNlbGYpOgorICAgICAgICBlbmNvZGluZyA9IG9zLmRldmljZV9lbmNvZGluZygwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmNvZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpKQorCisKIGNsYXNzIFBpZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHBpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXRwcGlkIikKICAgICBkZWYgdGVzdF9nZXRwcGlkKHNlbGYpOgpAQCAtMTM0OCwxMiArMTY1MCw0NzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4odXNlcl9uYW1lKSwgMCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHJpb3JpdHknKSBhbmQgaGFzYXR0cihvcywgJ3NldHByaW9yaXR5JyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZHMgb3MuZ2V0cHJpb3JpdHkgYW5kIG9zLnNldHByaW9yaXR5IikKK2NsYXNzIFByb2dyYW1Qcmlvcml0eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3Igb3MuZ2V0cHJpb3JpdHkoKSBhbmQgb3Muc2V0cHJpb3JpdHkoKS4iIiIKKworICAgIGRlZiB0ZXN0X3NldF9nZXRfcHJpb3JpdHkoc2VsZik6CisKKyAgICAgICAgYmFzZSA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCisgICAgICAgIG9zLnNldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCksIGJhc2UgKyAxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCisgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Muc2V0cHJpb3JpdHkob3MuUFJJT19QUk9DRVNTLCBvcy5nZXRwaWQoKSwgYmFzZSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBTZW5kZmlsZVRlc3RTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CisKKyAgICAgICAgY2xhc3MgSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgorICAgICAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKKyAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlciA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYucHVzaChiIjIyMCByZWFkeVxyXG4iKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3JlYWQoc2VsZik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVjdig0MDk2KQorICAgICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyLmFwcGVuZChkYXRhKQorCisgICAgICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHNlbGYuaW5fYnVmZmVyKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmJpbmQoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisKKyAgICAgICAgIyAtLS0gcHVibGljIEFQSQorCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgcnVubmluZyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgICAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgbm90IHNlbGYucnVubmluZworICAgICAgICAgICAgc2VsZi5fX2ZsYWcgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5zdGFydChzZWxmKQorICAgICAgICAgICAgc2VsZi5fX2ZsYWcud2FpdCgpCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgc2VsZi5ydW5uaW5nCisgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5qb2luKCkKKworICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgICAgICMgd2FpdCBmb3IgaGFuZGxlciBjb25uZWN0aW9uIHRvIGJlIGNsb3NlZCwgdGhlbiBzdG9wIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIHdoaWxlIG5vdCBnZXRhdHRyKHNlbGYuaGFuZGxlcl9pbnN0YW5jZSwgImNsb3NlZCIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDAxKQorICAgICAgICAgICAgc2VsZi5zdG9wKCkKKworICAgICAgICAjIC0tLSBpbnRlcm5hbHMKKworICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fX2ZsYWcuc2V0KCkKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX2FjdGl2ZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcDoKKyAgICAgICAgICAgICAgICBzZWxmLl9hY3RpdmVfbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4wMDEsIGNvdW50PTEpCisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2sucmVsZWFzZSgpCisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorCisgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuYWNjZXB0KCkKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlcl9pbnN0YW5jZSA9IHNlbGYuSGFuZGxlcihjb25uKQorCisgICAgICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICBoYW5kbGVfcmVhZCA9IGhhbmRsZV9jb25uZWN0CisKKyAgICAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcgaXMgbm90IE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3NlbmRmaWxlJyksICJ0ZXN0IG5lZWRzIG9zLnNlbmRmaWxlKCkiKQorY2xhc3MgVGVzdFNlbmRmaWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIERBVEEgPSBiIjEyMzQ1YWJjZGUiICogMTYgKiAxMDI0ICAjIDE2MCBLQgorICAgIFNVUFBPUlRfSEVBREVSU19UUkFJTEVSUyA9IG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgibGludXgiKSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic29sYXJpcyIpIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJzdW5vcyIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyID0gU2VuZGZpbGVUZXN0U2VydmVyKChzdXBwb3J0LkhPU1QsIDApKQorICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCisgICAgICAgIHNlbGYuY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3QoKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpKQorICAgICAgICBzZWxmLmNsaWVudC5zZXR0aW1lb3V0KDEpCisgICAgICAgICMgc3luY2hyb25pemUgYnkgd2FpdGluZyBmb3IgIjIyMCByZWFkeSIgcmVzcG9uc2UKKyAgICAgICAgc2VsZi5jbGllbnQucmVjdigxMDI0KQorICAgICAgICBzZWxmLnNvY2tubyA9IHNlbGYuY2xpZW50LmZpbGVubygpCisgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZmlsZW5vID0gc2VsZi5maWxlLmZpbGVubygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIucnVubmluZzoKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNlbmRmaWxlX3dyYXBwZXIoc2VsZiwgc29jaywgZmlsZSwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9W10sIHRyYWlsZXJzPVtdKToKKyAgICAgICAgIiIiQSBoaWdoZXIgbGV2ZWwgd3JhcHBlciByZXByZXNlbnRpbmcgaG93IGFuIGFwcGxpY2F0aW9uIGlzCisgICAgICAgIHN1cHBvc2VkIHRvIHVzZSBzZW5kZmlsZSgpLgorICAgICAgICAiIiIKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLlNVUFBPUlRfSEVBREVSU19UUkFJTEVSUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnNlbmRmaWxlKHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnNlbmRmaWxlKHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FQ09OTlJFU0VUOgorICAgICAgICAgICAgICAgICAgICAjIGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGVsaWYgZXJyLmVycm5vIGluIChlcnJuby5FQUdBSU4sIGVycm5vLkVCVVNZKToKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIHJldHJ5IHNlbmQgZGF0YQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9zZW5kX3dob2xlX2ZpbGUoc2VsZik6CisgICAgICAgICMgbm9ybWFsIHNlbmQKKyAgICAgICAgdG90YWxfc2VudCA9IDAKKyAgICAgICAgb2Zmc2V0ID0gMAorICAgICAgICBuYnl0ZXMgPSA0MDk2CisgICAgICAgIHdoaWxlIHRvdGFsX3NlbnQgPCBsZW4oc2VsZi5EQVRBKToKKyAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbnQgPD0gbmJ5dGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZmZzZXQsIHRvdGFsX3NlbnQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b3RhbF9zZW50LCBsZW4oc2VsZi5EQVRBKSkKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgbGVuKHNlbGYuREFUQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5EQVRBKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hdF9jZXJ0YWluX29mZnNldChzZWxmKToKKyAgICAgICAgIyBzdGFydCBzZW5kaW5nIGEgZmlsZSBhdCBhIGNlcnRhaW4gb2Zmc2V0CisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgIG9mZnNldCA9IGxlbihzZWxmLkRBVEEpIC8vIDIKKyAgICAgICAgbXVzdF9zZW5kID0gbGVuKHNlbGYuREFUQSkgLSBvZmZzZXQKKyAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICB3aGlsZSB0b3RhbF9zZW50IDwgbXVzdF9zZW5kOgorICAgICAgICAgICAgc2VudCA9IHNlbGYuc2VuZGZpbGVfd3JhcHBlcihzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgaWYgc2VudCA9PSAwOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBvZmZzZXQgKz0gc2VudAorICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VudCA8PSBuYnl0ZXMpCisKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBleHBlY3RlZCA9IHNlbGYuREFUQVtsZW4oc2VsZi5EQVRBKSAvLyAyOl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b3RhbF9zZW50LCBsZW4oZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X29mZnNldF9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBzcGVjaWZ5IGFuIG9mZnNldCA+IGZpbGUgc2l6ZQorICAgICAgICBvZmZzZXQgPSBsZW4oc2VsZi5EQVRBKSArIDQwOTYKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgb2Zmc2V0LCA0MDk2KQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBTb2xhcmlzIGNhbiByYWlzZSBFSU5WQUwgaWYgb2Zmc2V0ID49IGZpbGUgbGVuZ3RoLCBpZ25vcmUuCisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlZBTDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCAwKQorICAgICAgICBzZWxmLmNsaWVudC5zaHV0ZG93bihzb2NrZXQuU0hVVF9SRFdSKQorICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICBkYXRhID0gc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5nZXRfZGF0YSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYicnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIC0xLCA0MDk2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVkFMKQorCisgICAgIyAtLS0gaGVhZGVycyAvIHRyYWlsZXJzIHRlc3RzCisKKyAgICBpZiBTVVBQT1JUX0hFQURFUlNfVFJBSUxFUlM6CisKKyAgICAgICAgZGVmIHRlc3RfaGVhZGVycyhzZWxmKToKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICAgICBzZW50ID0gb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W2IieCIgKiA1MTJdKQorICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICBvZmZzZXQgPSA0MDk2CisgICAgICAgICAgICBuYnl0ZXMgPSA0MDk2CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKworICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YSA9IGIieCIgKiA1MTIgKyBzZWxmLkRBVEEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKGV4cGVjdGVkX2RhdGEpKQorICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgICAgICBkYXRhID0gc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5nZXRfZGF0YSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZGF0YSksIGhhc2goZXhwZWN0ZWRfZGF0YSkpCisKKyAgICAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoYiJhYmNkZSIpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3JiJylhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisgICAgICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIGYuZmlsZW5vKCksIDAsIDQwOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnM9W2IiMTIzNDUiXSkKKyAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJhYmNkZTEyMzQ1IikKKworICAgICAgICBpZiBoYXNhdHRyKG9zLCAiU0ZfTk9ESVNLSU8iKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1vcy5TRl9OT0RJU0tJTykKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyBub3QgaW4gKGVycm5vLkVCVVNZLCBlcnJuby5FQUdBSU4pOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworCitkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgorICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgorICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCisgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgcmV0dXJuIG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCisgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCitjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CisgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIGluaXRfeGF0dHIgPSBsaXN0eGF0dHIoZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbml0X3hhdHRyLCBsaXN0KQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiIiwgKiprd2FyZ3MpCisgICAgICAgIHhhdHRyID0gc2V0KGluaXRfeGF0dHIpCisgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiIiKQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiaGVsbG8iLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiaGVsbG8iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImJ5ZSIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJmb28iLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQorICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdDIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCisgICAgICAgIHJlbW92ZXhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKyAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCisgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJhIioxMDI0LCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKSwgYiJhIioxMDI0KQorICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICBtYW55ID0gc29ydGVkKCJ1c2VyLnRlc3R7fSIuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDEwMCkpCisgICAgICAgIGZvciB0aGluZyBpbiBtYW55OgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHRoaW5nLCBiIngiLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHNldChpbml0X3hhdHRyKSB8IHNldChtYW55KSkKKworICAgIGRlZiBfY2hlY2tfeGF0dHJzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGRlZiBtYWtlX2J5dGVzKHMpOgorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKHMsICJhc2NpaSIpCisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIoc3RyLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKG1ha2VfYnl0ZXMsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0eGF0dHIpCisKKyAgICBkZWYgdGVzdF9scGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0eGF0dHIsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2ZkcyhzZWxmKToKKyAgICAgICAgZGVmIGdldHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuZ2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBkZWYgc2V0eGF0dHIocGF0aCwgKmFyZ3MpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgZGVmIHJlbW92ZXhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmV4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCisgICAgICAgIGRlZiBsaXN0eGF0dHIocGF0aCwgKmFyZ3MpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5saXN0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQorY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIGltcG9ydCBudAorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKKyAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCisgICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAorICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCisgICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKKyAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQorY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIGdldF90ZXJtaW5hbF9zaXplKCkgcmV0dXJucyBhIG1lYW5pbmdmdWwgdmFsdWUuCisKKyAgICAgICAgVGhlcmUncyBubyBlYXN5IHBvcnRhYmxlIHdheSB0byBhY3R1YWxseSBjaGVjayB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdGVybWluYWwsIHNvIGxldCdzIGNoZWNrIGlmIGl0IHJldHVybnMgc29tZXRoaW5nIHNlbnNpYmxlIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IgZS5lcnJubyBpbiAoZXJybm8uRUlOVkFMLCBlcnJuby5FTk9UVFkpOgorICAgICAgICAgICAgICAgICMgVW5kZXIgd2luMzIgYSBnZW5lcmljIE9TRXJyb3IgY2FuIGJlIHRocm93biBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZmFpbGVkIHRvIHF1ZXJ5IHRlcm1pbmFsIHNpemUiKQorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmNvbHVtbnMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUubGluZXMsIDApCisKKyAgICBkZWYgdGVzdF9zdHR5X21hdGNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBzdHR5IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0cworCisgICAgICAgIHN0dHkgYWN0dWFsbHkgdGVzdHMgc3RkaW4sIHNvIGdldF90ZXJtaW5hbF9zaXplIGlzIGludm9rZWQgb24KKyAgICAgICAgc3RkaW4gZXhwbGljaXRseS4gSWYgc3R0eSBzdWNjZWVkZWQsIHRoZW4gZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBzaG91bGQgd29yayB0b28uCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzdHR5JywgJ3NpemUnXSkuZGVjb2RlKCkuc3BsaXQoKQorICAgICAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzdHR5IGludm9jYXRpb24gZmFpbGVkIikKKyAgICAgICAgZXhwZWN0ZWQgPSAoaW50KHNpemVbMV0pLCBpbnQoc2l6ZVswXSkpICMgcmV2ZXJzZWQgb3JkZXIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhY3R1YWwgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRpbl9fLmZpbGVubygpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IgZS5lcnJubyBpbiAoZXJybm8uRUlOVkFMLCBlcnJuby5FTk9UVFkpOgorICAgICAgICAgICAgICAgICMgVW5kZXIgd2luMzIgYSBnZW5lcmljIE9TRXJyb3IgY2FuIGJlIHRocm93biBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZmFpbGVkIHRvIHF1ZXJ5IHRlcm1pbmFsIHNpemUiKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisKK0BzdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBGaWxlVGVzdHMsCiAgICAgICAgIFN0YXRBdHRyaWJ1dGVUZXN0cywKICAgICAgICAgRW52aXJvblRlc3RzLAogICAgICAgICBXYWxrVGVzdHMsCisgICAgICAgIEZ3YWxrVGVzdHMsCiAgICAgICAgIE1ha2VkaXJUZXN0cywKICAgICAgICAgRGV2TnVsbFRlc3RzLAogICAgICAgICBVUmFuZG9tVGVzdHMsCkBAIC0xMzY1LDkgKzIxMjYsMTUgQEAKICAgICAgICAgV2luMzJLaWxsVGVzdHMsCiAgICAgICAgIFdpbjMyU3ltbGlua1Rlc3RzLAogICAgICAgICBGU0VuY29kaW5nVGVzdHMsCisgICAgICAgIERldmljZUVuY29kaW5nVGVzdHMsCiAgICAgICAgIFBpZFRlc3RzLAogICAgICAgICBMb2dpblRlc3RzLAogICAgICAgICBMaW5rVGVzdHMsCisgICAgICAgIFRlc3RTZW5kZmlsZSwKKyAgICAgICAgUHJvZ3JhbVByaW9yaXR5VGVzdHMsCisgICAgICAgIEV4dGVuZGVkQXR0cmlidXRlVGVzdHMsCisgICAgICAgIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJLAorICAgICAgICBUZXJtc2l6ZVRlc3RzLAogICAgICAgICBSZW1vdmVEaXJzVGVzdHMsCiAgICAgKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQppbmRleCA5Y2I4OWQ2Li4zOTA4YTA1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKQEAgLTE3MCw2ICsxNzAsMjIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRzcC5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9vbl9jbG9zZWQoc2VsZik6CisgICAgICAgIGRzcCA9IG9zc2F1ZGlvZGV2Lm9wZW4oJ3cnKQorICAgICAgICBkc3AuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AuZmlsZW5vKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AucmVhZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLndyaXRlLCBiJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aud3JpdGVhbGwsIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmNvdW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmNvdW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmZyZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5nZXRwdHIpCisKKyAgICAgICAgbWl4ZXIgPSBvc3NhdWRpb2Rldi5vcGVubWl4ZXIoKQorICAgICAgICBtaXhlci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1peGVyLmZpbGVubykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weSBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQppbmRleCA4YjNkZjM3Li4yNGVjMmI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBPU1hFbnZpcm9ubWVudFZhcmlhYmxlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjcsOCArMjgsNiBAQAogICAgICAgICBzZWxmLl9jaGVja19zeXMoJ1BZVEhPTkVYRUNVVEFCTEUnLCAnPT0nLCAnc3lzLmV4ZWN1dGFibGUnKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwotCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfTkVYVF9GUkFNRVdPUksnKToKICAgICAgICAgcnVuX3VuaXR0ZXN0KE9TWEVudmlyb25tZW50VmFyaWFibGVUZXN0Q2FzZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQppbmRleCA3MGViOWMwLi5jOTNhMmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogKHlpZWxkIDEpKjIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiByZXR1cm47IHlpZWxkIDEiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCAxOyByZXR1cm4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCBmcm9tIDEiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB4ID0geWllbGQgZnJvbSAxIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogZigoeWllbGQgZnJvbSAxKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCAxOyByZXR1cm4gMSIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmb3IgeCBpbiByYW5nZSgzMCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgeWllbGQgeFxuIikKQEAgLTcxNyw2ICs3MjEsMTIgQEAKIAogICAgICMgWFhYIHRlc3RzIGZvciBwaWNrbGluZyBhbmQgdW5waWNrbGluZyBvZiBTVCBvYmplY3RzIHNob3VsZCBnbyBoZXJlCiAKK2NsYXNzIE90aGVyUGFyc2VyQ2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF90d29fYXJnc190b19leHByKHNlbGYpOgorICAgICAgICAjIFNlZSBidWcgIzEyMjY0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5leHByKCJhIiwgImIiKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCkBAIC03MjUsNiArNzM1LDcgQEAKICAgICAgICAgQ29tcGlsZVRlc3RDYXNlLAogICAgICAgICBQYXJzZXJTdGFja0xpbWl0VGVzdENhc2UsCiAgICAgICAgIFNUT2JqZWN0VGVzdENhc2UsCisgICAgICAgIE90aGVyUGFyc2VyQ2FzZSwKICAgICApCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZGIucHkgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQppbmRleCA4MzU1ZTdkLi40ZmIwN2EzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQpAQCAtMjEsOSArMjEsMTIgQEAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLnJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KICAgICAgICAgc3lzLnN0ZGluID0gX0Zha2VJbnB1dChzZWxmLmlucHV0KQorICAgICAgICBzZWxmLm9yaWdfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKSBpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgZWxzZSBOb25lCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Yyk6CiAgICAgICAgIHN5cy5zdGRpbiA9IHNlbGYucmVhbF9zdGRpbgorICAgICAgICBpZiBzZWxmLm9yaWdfdHJhY2U6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5vcmlnX3RyYWNlKQogCiAKIGRlZiB0ZXN0X3BkYl9kaXNwbGF5aG9vaygpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCBlMjY4YWUyLi4xY2FjZGVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMywxMyArMywxNiBAQAogaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCB1bml0dGVzdAorZnJvbSBtYXRoIGltcG9ydCBjb3B5c2lnbgogCiBkZWYgZGlzYXNzZW1ibGUoZnVuYyk6CiAgICAgZiA9IFN0cmluZ0lPKCkKICAgICB0bXAgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGYKLSAgICBkaXMuZGlzKGZ1bmMpCi0gICAgc3lzLnN0ZG91dCA9IHRtcAorICAgIHRyeToKKyAgICAgICAgZGlzLmRpcyhmdW5jKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5zdGRvdXQgPSB0bXAKICAgICByZXN1bHQgPSBmLmdldHZhbHVlKCkKICAgICBmLmNsb3NlKCkKICAgICByZXR1cm4gcmVzdWx0CkBAIC0xNyw2ICsyMCw3IEBACiBkZWYgZGlzX3NpbmdsZShsaW5lKToKICAgICByZXR1cm4gZGlzYXNzZW1ibGUoY29tcGlsZShsaW5lLCAnJywgJ3NpbmdsZScpKQogCisKIGNsYXNzIFRlc3RUcmFuZm9ybXModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdW5vdChzZWxmKToKQEAgLTk5LDYgKzEwMywxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKIAorICAgICAgICAjIExvbmcgdHVwbGVzIHNob3VsZCBiZSBmb2xkZWQgdG9vLgorICAgICAgICBhc20gPSBkaXNfc2luZ2xlKHJlcHIodHVwbGUocmFuZ2UoMTAwMDApKSkpCisgICAgICAgICMgT25lIExPQURfQ09OU1QgZm9yIHRoZSB0dXBsZSwgb25lIGZvciB0aGUgTm9uZSByZXR1cm4gdmFsdWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc20uY291bnQoJ0xPQURfQ09OU1QnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfVFVQTEUnLCBhc20pCisKICAgICAgICAgIyBCdWcgMTA1MzgxOTogIFR1cGxlIG9mIGNvbnN0YW50cyBtaXNpZGVudGlmaWVkIHdoZW4gcHJlc2VudGVkIHdpdGg6CiAgICAgICAgICMgLiAuIC4gb3Bjb2RlX3dpdGhfYXJnIDEwMCAgIHVuYXJ5X29wY29kZSAgIEJVSUxEX1RVUExFIDEgIC4gLiAuCiAgICAgICAgICMgVGhlIGZvbGxvd2luZyB3b3VsZCBzZWdmYXVsdCB1cG9uIGNvbXBpbGF0aW9uCkBAIC0xOTYsMjcgKzIwNiwyOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCcoMTAwMCknLCBhc20pCiAKICAgICBkZWYgdGVzdF9iaW5hcnlfc3Vic2NyX29uX3VuaWNvZGUoc2VsZik6Ci0gICAgICAgICMgdW5pY29kZSBzdHJpbmdzIGRvbid0IGdldCBvcHRpbWl6ZWQKKyAgICAgICAgIyB2YWxpZCBjb2RlIGdldCBvcHRpbWl6ZWQKICAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnImZvbyJbMF0nKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCIoJ2YnKSIsIGFzbSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQklOQVJZX1NVQlNDUicsIGFzbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdmJykiLCBhc20pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCiAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJcdTAwNjFcdWZmZmYiWzFdJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiKCdcXHVmZmZmJykiLCBhc20pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIignXFx1ZmZmZicpIiwgYXNtKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQorICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCciXFUwMDAxMjM0NWFiY2RlZiJbM10nKQorICAgICAgICBzZWxmLmFzc2VydEluKCIoJ2MnKSIsIGFzbSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZX1NVQlNDUicsIGFzbSkKIAorICAgICAgICAjIGludmFsaWQgY29kZSBkb2Vzbid0IGdldCBvcHRpbWl6ZWQKICAgICAgICAgIyBvdXQgb2YgcmFuZ2UKICAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnImZ1dSJbMTBdJykKICAgICAgICAgc2VsZi5hc3NlcnRJbignQklOQVJZX1NVQlNDUicsIGFzbSkKLSAgICAgICAgIyBub24tQk1QIGNoYXIgKHNlZSAjNTA1NykKLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnIlxVMDAwMTIzNDUiWzBdJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQklOQVJZX1NVQlNDUicsIGFzbSkKLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnIlxVMDAwMTIzNDVhYmNkZWYiWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQklOQVJZX1NVQlNDUicsIGFzbSkKLQogCiAgICAgZGVmIHRlc3RfZm9sZGluZ19vZl91bmFyeW9wc19vbl9jb25zdGFudHMoc2VsZik6CiAgICAgICAgIGZvciBsaW5lLCBlbGVtIGluICgKICAgICAgICAgICAgICgnLTAuNScsICcoLTAuNSknKSwgICAgICAgICAgICAgICAgICAgICAjIHVuYXJ5IG5lZ2F0aXZlCisgICAgICAgICAgICAoJy0wLjAnLCAnKC0wLjApJyksICAgICAgICAgICAgICAgICAgICAgIyAtMC4wCisgICAgICAgICAgICAoJy0oMS4wLTEuMCknLCcoLTAuMCknKSwgICAgICAgICAgICAgICAgIyAtMC4wIGFmdGVyIGZvbGRpbmcKKyAgICAgICAgICAgICgnLTAnLCAnKDApJyksICAgICAgICAgICAgICAgICAgICAgICAgICAjIC0wCiAgICAgICAgICAgICAoJ34tMicsICcoMSknKSwgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBpbnZlcnQKICAgICAgICAgICAgICgnKzEnLCAnKDEpJyksICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuYXJ5IHBvc2l0aXZlCiAgICAgICAgICk6CkBAIC0yMjQsNiArMjM1LDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGFzbSwgYXNtKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVU5BUllfJywgYXNtKQogCisgICAgICAgICMgQ2hlY2sgdGhhdCAtMC4wIHdvcmtzIGFmdGVyIG1hcnNoYWxpbmcKKyAgICAgICAgZGVmIG5lZ3plcm8oKToKKyAgICAgICAgICAgIHJldHVybiAtKDEuMC0xLjApCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVU5BUllfJywgZGlzYXNzZW1ibGUobmVnemVybykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5c2lnbigxLjAsIG5lZ3plcm8oKSkgPCAwKQorCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgdW5mb2xkYWJsZXMgYXJlIHNraXBwZWQKICAgICAgICAgZm9yIGxpbmUsIGVsZW0gaW4gKAogICAgICAgICAgICAgKCctImFiYyInLCAiKCdhYmMnKSIpLCAgICAgICAgICAgICAgICAgICMgdW5hcnkgbmVnYXRpdmUKQEAgLTI4Niw2ICszMDQsMjUgQEAKICAgICAgICAgYXNtID0gZGlzYXNzZW1ibGUoZikKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZX0FERCcsIGFzbSkKIAorICAgIGRlZiB0ZXN0X2NvbnN0YW50X2ZvbGRpbmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzExMjQ0OiBhZ2dyZXNzaXZlIGNvbnN0YW50IGZvbGRpbmcuCisgICAgICAgIGV4cHJzID0gWworICAgICAgICAgICAgIjMgKiAtNSIsCisgICAgICAgICAgICAiLTMgKiA1IiwKKyAgICAgICAgICAgICIyICogKDMgKiA0KSIsCisgICAgICAgICAgICAiKDIgKiAzKSAqIDQiLAorICAgICAgICAgICAgIigtMSwgMiwgMykiLAorICAgICAgICAgICAgIigxLCAtMiwgMykiLAorICAgICAgICAgICAgIigxLCAyLCAtMykiLAorICAgICAgICAgICAgIigxLCAyLCAtMykgKiA2IiwKKyAgICAgICAgICAgICJsYW1iZGEgeDogeCBpbiB7KDMgKiAtNSkgKyAoLTEgLSA2KSwgKDEsIC0yLCAzKSAqIDIsIE5vbmV9IiwKKyAgICAgICAgXQorICAgICAgICBmb3IgZSBpbiBleHByczoKKyAgICAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUoZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGFzbSwgZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV8nLCBhc20sIGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF8nLCBhc20sIGUpCisKIGNsYXNzIFRlc3RCdWdsZXRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2J1Z18xMTUxMChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKaW5kZXggNmQ4OTFlNS4uNGIxNmNiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKQEAgLTEsNiArMSw5IEBACiAjIFRlc3QgdGhlIFVuaWNvZGUgdmVyc2lvbnMgb2Ygbm9ybWFsIGZpbGUgZnVuY3Rpb25zCiAjIG9wZW4sIG9zLm9wZW4sIG9zLnN0YXQuIG9zLmxpc3RkaXIsIG9zLnJlbmFtZSwgb3MucmVtb3ZlLCBvcy5ta2Rpciwgb3MuY2hkaXIsIG9zLnJtZGlyCi1pbXBvcnQgc3lzLCBvcywgdW5pdHRlc3QKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gdW5pY29kZWRhdGEgaW1wb3J0IG5vcm1hbGl6ZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTM4LDggKzQxLDggQEAKICAgICAgICAgJzE3X1x1MjAwMVx1MjAwMVx1MjAwMUEnLAogICAgICAgICAnMThfXHUyMDAzXHUyMDAzXHUyMDAzQScsICAjID09IE5GQygnXHUyMDAxXHUyMDAxXHUyMDAxQScpCiAgICAgICAgICcxOV9cdTAwMjBcdTAwMjBcdTAwMjBBJywgICMgJ1x1MDAyMCcgPT0gJyAnID09IE5GS0MoJ1x1MjAwMCcpID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIE5GS0MoJ1x1MjAwMScpID09IE5GS0MoJ1x1MjAwMycpCi1dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBORktDKCdcdTIwMDEnKSA9PSBORktDKCdcdTIwMDMnKQorICAgIF0pCiAKIAogIyBJcyBpdCBVbmljb2RlLWZyaWVuZGx5PwpAQCAtNzEsNyArNzQsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBmaWxlcyA9IHNldCgpCiAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZmlsZXM6CkBAIC05MCwxNSArOTMsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemUoc2VsZi5ub3JtYWxfZm9ybSwgcykKICAgICAgICAgcmV0dXJuIHMKIAotICAgIGRlZiBfYXBwbHlfZmFpbHVyZShzZWxmLCBmbiwgZmlsZW5hbWUsIGV4cGVjdGVkX2V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZm5faW5fZXhjZXB0aW9uID0gVHJ1ZSk6CisgICAgZGVmIF9hcHBseV9mYWlsdXJlKHNlbGYsIGZuLCBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhjZXB0aW9uPUZpbGVOb3RGb3VuZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICBjaGVja19maWxlbmFtZT1UcnVlKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhleHBlY3RlZF9leGNlcHRpb24pIGFzIGM6CiAgICAgICAgICAgICBmbihmaWxlbmFtZSkKICAgICAgICAgZXhjX2ZpbGVuYW1lID0gYy5leGNlcHRpb24uZmlsZW5hbWUKLSAgICAgICAgIyB0aGUgImZpbGVuYW1lIiBleGNlcHRpb24gYXR0cmlidXRlIG1heSBiZSBlbmNvZGVkCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjX2ZpbGVuYW1lLCBieXRlcyk6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCi0gICAgICAgIGlmIGNoZWNrX2ZuX2luX2V4Y2VwdGlvbjoKKyAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUKKyAgICAgICAgaWYgZm4gaXMgb3MubGlzdGRpciBhbmQgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBleGNfZmlsZW5hbWUsIF8sIHdpbGRjYXJkID0gZXhjX2ZpbGVuYW1lLnJwYXJ0aXRpb24ob3Muc2VwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWxkY2FyZCwgJyouKicpCisgICAgICAgIGlmIGNoZWNrX2ZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfZmlsZW5hbWUsIGZpbGVuYW1lLCAiRnVuY3Rpb24gJyVzKCVhKSBmYWlsZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCBiYWQgZmlsZW5hbWUgaW4gdGhlIGV4Y2VwdGlvbjogJWEiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZuLl9fbmFtZV9fLCBmaWxlbmFtZSwgZXhjX2ZpbGVuYW1lKSkKQEAgLTEwNywxMyArMTEyLDE4IEBACiAgICAgICAgICMgUGFzcyBub24tZXhpc3RpbmcgVW5pY29kZSBmaWxlbmFtZXMgYWxsIG92ZXIgdGhlIHBsYWNlLgogICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmZpbGVzOgogICAgICAgICAgICAgbmFtZSA9ICJub3RfIiArIG5hbWUKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3BlbiwgbmFtZSwgSU9FcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Muc3RhdCwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MuY2hkaXIsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJtZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5yZW1vdmUsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICAjIGxpc3RkaXIgbWF5IGFwcGVuZCBhIHdpbGRjYXJkIHRvIHRoZSBmaWxlbmFtZSwgc28gZG9udCBjaGVjawotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lLCBPU0Vycm9yLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3BlbiwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Muc3RhdCwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MuY2hkaXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJtZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5yZW1vdmUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUpCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgIyBXaW5kb3dzIGlzIGx1bmF0aWMuIElzc3VlICMxMzM2Ni4KKyAgICAgICAgX2xpc3RkaXJfZmFpbHVyZSA9IE5vdEFEaXJlY3RvcnlFcnJvciwgRmlsZU5vdEZvdW5kRXJyb3IKKyAgICBlbHNlOgorICAgICAgICBfbGlzdGRpcl9mYWlsdXJlID0gTm90QURpcmVjdG9yeUVycm9yCiAKICAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmZpbGVzOgpAQCAtMTIxLDEyICsxMzEsMTMgQEAKICAgICAgICAgICAgIGYud3JpdGUoKG5hbWUrJ1xuJykuZW5jb2RlKCJ1dGYtOCIpKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBvcy5zdGF0KG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUsIHNlbGYuX2xpc3RkaXJfZmFpbHVyZSkKIAogICAgICMgU2tpcCB0aGUgdGVzdCBvbiBkYXJ3aW4sIGJlY2F1c2UgZGFyd2luIGRvZXMgbm9ybWFsaXplIHRoZSBmaWxlbmFtZSB0bwogICAgICMgTkZEIChhIHZhcmlhbnQgb2YgVW5pY29kZSBORkQgZm9ybSkuIE5vcm1hbGl6ZSB0aGUgZmlsZW5hbWUgdG8gTkZDLCBORktDLAogICAgICMgTkZLRCBpbiBQeXRob24gaXMgdXNlbGVzcywgYmVjYXVzZSBkYXJ3aW4gd2lsbCBub3JtYWxpemUgaXQgbGF0ZXIgYW5kIHNvCiAgICAgIyBvcGVuKCksIG9zLnN0YXQoKSwgZXRjLiBkb24ndCByYWlzZSBhbnkgZXhjZXB0aW9uLgotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnaXJyZXZlbGFudCB0ZXN0IG9uIE1hYyBPUyBYJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmVsZXZhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCiAgICAgZGVmIHRlc3Rfbm9ybWFsaXplKHNlbGYpOgogICAgICAgICBmaWxlcyA9IHNldChzZWxmLmZpbGVzKQogICAgICAgICBvdGhlcnMgPSBzZXQoKQpAQCAtMTM0LDIxICsxNDUsMjIgQEAKICAgICAgICAgICAgIG90aGVycyB8PSBzZXQobm9ybWFsaXplKG5mLCBmaWxlKSBmb3IgZmlsZSBpbiBmaWxlcykKICAgICAgICAgb3RoZXJzIC09IGZpbGVzCiAgICAgICAgIGZvciBuYW1lIGluIG90aGVyczoKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3BlbiwgbmFtZSwgSU9FcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Muc3RhdCwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MuY2hkaXIsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJtZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5yZW1vdmUsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICAjIGxpc3RkaXIgbWF5IGFwcGVuZCBhIHdpbGRjYXJkIHRvIHRoZSBmaWxlbmFtZSwgc28gZG9udCBjaGVjawotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lLCBPU0Vycm9yLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3BlbiwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Muc3RhdCwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MuY2hkaXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJtZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5yZW1vdmUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUpCiAKICAgICAjIFNraXAgdGhlIHRlc3Qgb24gZGFyd2luLCBiZWNhdXNlIGRhcndpbiB1c2VzIGEgbm9ybWFsaXphdGlvbiBkaWZmZXJlbnQKICAgICAjIHRoYW4gUHl0aG9uIE5GRCBub3JtYWxpemF0aW9uOiBmaWxlbmFtZXMgYXJlIGRpZmZlcmVudCBldmVuIGlmIHdlIHVzZQogICAgICMgUHl0aG9uIE5GRCBub3JtYWxpemF0aW9uLgotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnaXJyZXZlbGFudCB0ZXN0IG9uIE1hYyBPUyBYJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmVsZXZhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCiAgICAgZGVmIHRlc3RfbGlzdGRpcihzZWxmKToKICAgICAgICAgc2YwID0gc2V0KHNlbGYuZmlsZXMpCi0gICAgICAgIGYxID0gb3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTi5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBmMSA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4uZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCiAgICAgICAgIGYyID0gb3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2YyID0gc2V0KG9zLnBhdGguam9pbihzdXBwb3J0LlRFU1RGTiwgZikgZm9yIGYgaW4gZjIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2YwLCBzZjIsICIlYSAhPSAlYSIgJSAoc2YwLCBzZjIpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weQppbmRleCAxMTljN2VhLi42ZGE4ZDJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weQpAQCAtNDIsMTkgKzQyLDYgQEAKICAgICAgICAgcyA9IFRlbXBsYXRlKCckd2hvIGxpa2VzICQkJykKICAgICAgICAgZXEocy5zdWJzdGl0dXRlKGRpY3Qod2hvPSd0aW0nLCB3aGF0PSdoYW0nKSksICd0aW0gbGlrZXMgJCcpCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICBjbGFzcyBNeVBhdHRlcm4oVGVtcGxhdGUpOgotICAgICAgICAgICAgcGF0dGVybiA9IHIiIiIKLSAgICAgICAgICAgICg/OgotICAgICAgICAgICAgKD9QPGludmFsaWQ+KSAgICAgICAgICAgIHwKLSAgICAgICAgICAgICg/UDxlc2NhcGVkPiUoZGVsaW0pcykgICB8Ci0gICAgICAgICAgICBAKD9QPG5hbWVkPiUoaWQpcykgICAgICAgfAotICAgICAgICAgICAgQHsoP1A8YnJhY2VkPiUoaWQpcyl9ICAgIAotICAgICAgICAgICAgKQotICAgICAgICAgICAgIiIiCi0gICAgICAgIHMgPSBNeVBhdHRlcm4oJyQnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLnN1YnN0aXR1dGUsIGRpY3QoKSkgCi0KICAgICBkZWYgdGVzdF9wZXJjZW50cyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSBUZW1wbGF0ZSgnJShmb28pcyAkZm9vICR7Zm9vfScpCkBAIC0xNzIsNiArMTU5LDI2IEBACiAgICAgICAgIHZhbCA9IHQuc2FmZV9zdWJzdGl0dXRlKHsnbG9jYXRpb24nOiAnQ2xldmVsYW5kJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsLCAnUHlDb24gaW4gQ2xldmVsYW5kJykKIAorICAgIGRlZiB0ZXN0X2ludmFsaWRfd2l0aF9ub19saW5lcyhzZWxmKToKKyAgICAgICAgIyBUaGUgZXJyb3IgZm9ybWF0dGluZyBmb3IgaW52YWxpZCB0ZW1wbGF0ZXMKKyAgICAgICAgIyBoYXMgYSBzcGVjaWFsIGNhc2UgZm9yIG5vIGRhdGEgdGhhdCB0aGUgZGVmYXVsdAorICAgICAgICAjIHBhdHRlcm4gY2FuJ3QgdHJpZ2dlciAoYWx3YXlzIGhhcyBhdCBsZWFzdCAnJCcpCisgICAgICAgICMgU28gd2UgY3JhZnQgYSBwYXR0ZXJuIHRoYXQgaXMgYWx3YXlzIGludmFsaWQKKyAgICAgICAgIyB3aXRoIG5vIGxlYWRpbmcgZGF0YS4KKyAgICAgICAgY2xhc3MgTXlUZW1wbGF0ZShUZW1wbGF0ZSk6CisgICAgICAgICAgICBwYXR0ZXJuID0gciIiIgorICAgICAgICAgICAgICAoP1A8aW52YWxpZD4pIHwKKyAgICAgICAgICAgICAgdW5yZWFjaGFibGUoCisgICAgICAgICAgICAgICAgKD9QPG5hbWVkPikgICB8CisgICAgICAgICAgICAgICAgKD9QPGJyYWNlZD4pICB8CisgICAgICAgICAgICAgICAgKD9QPGVzY2FwZWQ+KQorICAgICAgICAgICAgICApCisgICAgICAgICAgICAiIiIKKyAgICAgICAgcyA9IE15VGVtcGxhdGUoJycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgcy5zdWJzdGl0dXRlKHt9KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaW5lIDEsIGNvbCAxJywgc3RyKGVyci5leGNlcHRpb24pKQorCiAgICAgZGVmIHRlc3RfdW5pY29kZV92YWx1ZXMoc2VsZik6CiAgICAgICAgIHMgPSBUZW1wbGF0ZSgnJHdobyBsaWtlcyAkd2hhdCcpCiAgICAgICAgIGQgPSBkaWN0KHdobz0ndFx4ZmZtJywgd2hhdD0nZlx4ZmVcZmVkJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQppbmRleCBkZjBmNjRkLi4yZTZiOTBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CkBAIC0xNywxMiArMTcsNyBAQAogCiAgICAgZGVmIHRlc3Rfbm9uX2JtcF9ub3JtYWxpemVkKHNlbGYpOgogICAgICAgICDwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiID0gMQotICAgICAgICAjIE9uIHdpZGUgYnVpbGRzLCB0aGlzIGlzIG5vcm1hbGl6ZWQsIGJ1dCBvbiBuYXJyb3cgb25lcyBpdCBpcyBub3QuIFNlZQotICAgICAgICAjICMxMjc0Ni4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigi8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoiIsIGRpcigpKQotICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5jYXNlLl9FeHBlY3RlZEZhaWx1cmUoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlVuaWNvZGUiLCBkaXIoKSkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6CiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzkyYzEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CkBAIC0wLDAgKzEsMjExIEBACitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBvcworaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgZXJybm8KK2Zyb20gZXJybm8gaW1wb3J0IEVFWElTVAorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworY2xhc3MgU3ViT1NFcnJvcihPU0Vycm9yKToKKyAgICBwYXNzCisKK2NsYXNzIFN1Yk9TRXJyb3JXaXRoSW5pdChPU0Vycm9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgYmFyKToKKyAgICAgICAgc2VsZi5iYXIgPSBiYXIKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlKQorCitjbGFzcyBTdWJPU0Vycm9yV2l0aE5ldyhPU0Vycm9yKToKKyAgICBkZWYgX19uZXdfXyhjbHMsIG1lc3NhZ2UsIGJheik6CisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBtZXNzYWdlKQorICAgICAgICBzZWxmLmJheiA9IGJhegorICAgICAgICByZXR1cm4gc2VsZgorCitjbGFzcyBTdWJPU0Vycm9yQ29tYmluZWRJbml0Rmlyc3QoU3ViT1NFcnJvcldpdGhJbml0LCBTdWJPU0Vycm9yV2l0aE5ldyk6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yQ29tYmluZWROZXdGaXJzdChTdWJPU0Vycm9yV2l0aE5ldywgU3ViT1NFcnJvcldpdGhJbml0KToKKyAgICBwYXNzCisKK2NsYXNzIFN1Yk9TRXJyb3JXaXRoU3RhbmRhbG9uZUluaXQoT1NFcnJvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgSGllcmFyY2h5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9idWlsdGluX2Vycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPU0Vycm9yLl9fbmFtZV9fLCAnT1NFcnJvcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoSU9FcnJvciwgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhFbnZpcm9ubWVudEVycm9yLCBPU0Vycm9yKQorCisgICAgZGVmIHRlc3Rfc29ja2V0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQuZXJyb3IsIElPRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LmdhaWVycm9yLl9fYmFzZV9fLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC5oZXJyb3IuX19iYXNlX18sIE9TRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LnRpbWVvdXQuX19iYXNlX18sIE9TRXJyb3IpCisKKyAgICBkZWYgdGVzdF9zZWxlY3RfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZWN0LmVycm9yLCBPU0Vycm9yKQorCisgICAgIyBtbWFwLmVycm9yIGlzIHRlc3RlZCBpbiB0ZXN0X21tYXAKKworICAgIF9wZXBfbWFwID0gIiIiCisgICAgICAgICstLSBCbG9ja2luZ0lPRXJyb3IgICAgICAgIEVBR0FJTiwgRUFMUkVBRFksIEVXT1VMREJMT0NLLCBFSU5QUk9HUkVTUworICAgICAgICArLS0gQ2hpbGRQcm9jZXNzRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ0hJTEQKKyAgICAgICAgKy0tIENvbm5lY3Rpb25FcnJvcgorICAgICAgICAgICAgKy0tIEJyb2tlblBpcGVFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVQSVBFLCBFU0hVVERPV04KKyAgICAgICAgICAgICstLSBDb25uZWN0aW9uQWJvcnRlZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNPTk5BQk9SVEVECisgICAgICAgICAgICArLS0gQ29ubmVjdGlvblJlZnVzZWRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDT05OUkVGVVNFRAorICAgICAgICAgICAgKy0tIENvbm5lY3Rpb25SZXNldEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDT05OUkVTRVQKKyAgICAgICAgKy0tIEZpbGVFeGlzdHNFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUVYSVNUCisgICAgICAgICstLSBGaWxlTm90Rm91bmRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOT0VOVAorICAgICAgICArLS0gSW50ZXJydXB0ZWRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUlOVFIKKyAgICAgICAgKy0tIElzQURpcmVjdG9yeUVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUlTRElSCisgICAgICAgICstLSBOb3RBRGlyZWN0b3J5RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5PVERJUgorICAgICAgICArLS0gUGVybWlzc2lvbkVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVBQ0NFUywgRVBFUk0KKyAgICAgICAgKy0tIFByb2Nlc3NMb29rdXBFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTUkNICisgICAgICAgICstLSBUaW1lb3V0RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVUSU1FRE9VVAorICAgICIiIgorICAgIGRlZiBfbWFrZV9tYXAocyk6CisgICAgICAgIF9tYXAgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCcrLSAnKQorICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y25hbWUsIF8sIGVycm5hbWVzID0gbGluZS5wYXJ0aXRpb24oJyAnKQorICAgICAgICAgICAgZm9yIGVycm5hbWUgaW4gZmlsdGVyKE5vbmUsIGVycm5hbWVzLnN0cmlwKCkuc3BsaXQoJywgJykpOgorICAgICAgICAgICAgICAgIF9tYXBbZ2V0YXR0cihlcnJubywgZXJybmFtZSldID0gZ2V0YXR0cihidWlsdGlucywgZXhjbmFtZSkKKyAgICAgICAgcmV0dXJuIF9tYXAKKyAgICBfbWFwID0gX21ha2VfbWFwKF9wZXBfbWFwKQorCisgICAgZGVmIHRlc3RfZXJybm9fbWFwcGluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgT1NFcnJvciBjb25zdHJ1Y3RvciBtYXBzIGVycm5vcyB0byBzdWJjbGFzc2VzCisgICAgICAgICMgQSBzYW1wbGUgdGVzdCBmb3IgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgZSA9IE9TRXJyb3IoRUVYSVNULCAiQmFkIGZpbGUgZGVzY3JpcHRvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgRmlsZUV4aXN0c0Vycm9yKQorICAgICAgICAjIEV4aGF1c3RpdmUgdGVzdGluZworICAgICAgICBmb3IgZXJyY29kZSwgZXhjIGluIHNlbGYuX21hcC5pdGVtcygpOgorICAgICAgICAgICAgZSA9IE9TRXJyb3IoZXJyY29kZSwgIlNvbWUgbWVzc2FnZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIGV4YykKKyAgICAgICAgb3RoZXJjb2RlcyA9IHNldChlcnJuby5lcnJvcmNvZGUpIC0gc2V0KHNlbGYuX21hcCkKKyAgICAgICAgZm9yIGVycmNvZGUgaW4gb3RoZXJjb2RlczoKKyAgICAgICAgICAgIGUgPSBPU0Vycm9yKGVycmNvZGUsICJTb21lIG1lc3NhZ2UiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBPU0Vycm9yKQorCisgICAgZGVmIHRlc3RfdHJ5X2V4Y2VwdChzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAic29tZV9ob3BlZnVsbHlfbm9uX2V4aXN0aW5nX2ZpbGUiCisKKyAgICAgICAgIyBUaGlzIGNoZWNrcyB0aGF0IHRyeSAuLiBleGNlcHQgY2hlY2tzIHRoZSBjb25jcmV0ZSBleGNlcHRpb24KKyAgICAgICAgIyAoRmlsZU5vdEZvdW5kRXJyb3IpIGFuZCBub3QgdGhlIGJhc2UgdHlwZSBzcGVjaWZpZWQgd2hlbgorICAgICAgICAjIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdCB3YXMgY2FsbGVkLgorICAgICAgICAjIChpdCBpcyB0aGVyZWZvcmUgZGVsaWJlcmF0ZSB0aGF0IGl0IGRvZXNuJ3QgdXNlIGFzc2VydFJhaXNlcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3BlbihmaWxlbmFtZSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGQgaGF2ZSByYWlzZWQgYSBGaWxlTm90Rm91bmRFcnJvciIpCisKKyAgICAgICAgIyBBbm90aGVyIHRlc3QgZm9yIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGQgaGF2ZSByYWlzZWQgYSBGaWxlTm90Rm91bmRFcnJvciIpCisKKworY2xhc3MgQXR0cmlidXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2luZG93c19lcnJvcihzZWxmKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignd2luZXJyb3InLCBkaXIoT1NFcnJvcikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd3aW5lcnJvcicsIGRpcihPU0Vycm9yKSkKKworICAgIGRlZiB0ZXN0X3Bvc2l4X2Vycm9yKHNlbGYpOgorICAgICAgICBlID0gT1NFcnJvcihFRVhJU1QsICJGaWxlIGFscmVhZHkgZXhpc3RzIiwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIEVFWElTVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIEVFWElTVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnN0cmVycm9yLCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maWxlbmFtZSwgImZvby50eHQiKQorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUud2luZXJyb3IsIE5vbmUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzLXNwZWNpZmljIHRlc3QiKQorICAgIGRlZiB0ZXN0X2Vycm5vX3RyYW5zbGF0aW9uKHNlbGYpOgorICAgICAgICAjIEVSUk9SX0FMUkVBRFlfRVhJU1RTICgxODMpIC0+IEVFWElTVAorICAgICAgICBlID0gT1NFcnJvcigwLCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIsICJmb28udHh0IiwgMTgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUud2luZXJyb3IsIDE4MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5zdHJlcnJvciwgIkZpbGUgYWxyZWFkeSBleGlzdHMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmlsZW5hbWUsICJmb28udHh0IikKKworICAgIGRlZiB0ZXN0X2Jsb2NraW5naW9lcnJvcihzZWxmKToKKyAgICAgICAgYXJncyA9ICgiYSIsICJiIiwgImMiLCAiZCIsICJlIikKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoNik6CisgICAgICAgICAgICBlID0gQmxvY2tpbmdJT0Vycm9yKCphcmdzWzpuXSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIGUuY2hhcmFjdGVyc193cml0dGVuCisgICAgICAgIGUgPSBCbG9ja2luZ0lPRXJyb3IoImEiLCAiYiIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDMpCisgICAgICAgIGUuY2hhcmFjdGVyc193cml0dGVuID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuY2hhcmFjdGVyc193cml0dGVuLCA1KQorCisgICAgIyBYWFggVk1TRXJyb3Igbm90IHRlc3RlZAorCisKK2NsYXNzIEV4cGxpY2l0U3ViY2xhc3NpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Vycm5vX21hcHBpbmcoc2VsZik6CisgICAgICAgICMgV2hlbiBjb25zdHJ1Y3RpbmcgYW4gT1NFcnJvciBzdWJjbGFzcywgZXJybm8gbWFwcGluZyBpc24ndCBkb25lCisgICAgICAgIGUgPSBTdWJPU0Vycm9yKEVFWElTVCwgIkJhZCBmaWxlIGRlc2NyaXB0b3IiKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1Yk9TRXJyb3IpCisKKyAgICBkZWYgdGVzdF9pbml0X292ZXJyaWRlbihzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoSW5pdCgic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9pbml0X2t3ZGFyZ3Moc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aEluaXQoInNvbWUgbWVzc2FnZSIsIGJhcj0iYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X25ld19vdmVycmlkZW4oc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aE5ldygic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXosICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9uZXdfa3dkYXJncyhzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoTmV3KCJzb21lIG1lc3NhZ2UiLCBiYXo9ImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXosICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9pbml0X25ld19vdmVycmlkZW4oc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yQ29tYmluZWRJbml0Rmlyc3QoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JDb21iaW5lZE5ld0ZpcnN0KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXosICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9pbml0X3N0YW5kYWxvbmUoc2VsZik6CisgICAgICAgICMgX19pbml0X18gZG9lc24ndCBwcm9wYWdhdGUgdG8gT1NFcnJvci5fX2luaXRfXyAoc2VlIGlzc3VlICMxNTIyOSkKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoU3RhbmRhbG9uZUluaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnJykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisKK2lmIF9fbmFtZV9fPT0iX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZWVkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpAQCAtMCwwICsxLDk2NSBAQAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKworIiIiCitUZXN0IHN1aXRlIGZvciBQRVAgMzgwIGltcGxlbWVudGF0aW9uCisKK2FkYXB0ZWQgZnJvbSBvcmlnaW5hbCB0ZXN0cyB3cml0dGVuIGJ5IEdyZWcgRXdpbmcKK3NlZSA8aHR0cDovL3d3dy5jb3NjLmNhbnRlcmJ1cnkuYWMubnovZ3JlZy5ld2luZy9weXRob24veWllbGQtZnJvbS9ZaWVsZEZyb20tUHl0aG9uMy4xLjItcmV2NS56aXA+CisiIiIKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW8KK2ltcG9ydCBzeXMKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgcGFyc2VyCisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKKworY2xhc3MgVGVzdFBFUDM4ME9wZXJhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBzZW1hbnRpY3MuCisgICAgIiIiCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX2luaXRpYWxfbmV4dF90b19zdWJnZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgaW5pdGlhbCBuZXh0KCkgY2FsbCB0byBzdWJnZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeWllbGQgNDIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgNDIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfZXhjZXB0aW9uX2luX2luaXRpYWxfbmV4dF9jYWxsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCByYWlzaW5nIGV4Y2VwdGlvbiBpbiBpbml0aWFsIG5leHQoKSBjYWxsCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNwYW5pc2ggaW5xdWlzaXRpb24gb2NjdXJyZWQiKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgInNwYW5pc2ggaW5xdWlzaXRpb24gb2NjdXJyZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfbmV4dF9jYWxsX3RvX3N1YmdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBuZXh0KCkgY2FsbCB0byBzdWJnZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19leGNlcHRpb25faW5fZGVsZWdhdGVkX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmFpc2luZyBleGNlcHRpb24gaW4gZGVsZWdhdGVkIG5leHQoKSBjYWxsCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaG92ZXJjcmFmdCBpcyBmdWxsIG9mIGVlbHMiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAiaG92ZXJjcmFmdCBpcyBmdWxsIG9mIGVlbHMiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2Zfc2VuZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBzZW5kKCkKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB4ID0geWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB4ID0geWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgeSA9IG5leHQoZykKKyAgICAgICAgeCA9IDEKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICB5ID0gZy5zZW5kKHgpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh5LCkpCisgICAgICAgICAgICAgICAgeCArPSAxCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiZzEgcmVjZWl2ZWQgMSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiZzIgcmVjZWl2ZWQgMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDMiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJnMSByZWNlaXZlZCA0IiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfaGFuZGxpbmdfZXhjZXB0aW9uX3doaWxlX2RlbGVnYXRpbmdfc2VuZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgaGFuZGxpbmcgZXhjZXB0aW9uIHdoaWxlIGRlbGVnYXRpbmcgJ3NlbmQnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaG92ZXJjcmFmdCBpcyBmdWxsIG9mIGVlbHMiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnMSgpCisgICAgICAgICAgICB5ID0gbmV4dChnKQorICAgICAgICAgICAgeCA9IDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgICAgICB5ID0gZy5zZW5kKHgpCisgICAgICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeSwpKQorICAgICAgICAgICAgICAgICAgICB4ICs9IDEKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RvcEl0ZXJhdGlvbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IscnVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiZzEgcmVjZWl2ZWQgMSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiZzIgcmVjZWl2ZWQgMiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW5nICdjbG9zZScKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBnLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2hhbmRpbmdfZXhjZXB0aW9uX3doaWxlX2RlbGVnYXRpbmdfY2xvc2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGhhbmRsaW5nIGV4Y2VwdGlvbiB3aGlsZSBkZWxlZ2F0aW5nICdjbG9zZScKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibnliYmxlcyBoYXZlIGV4cGxvZGVkIHdpdGggZGVsaWdodCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGcgPSBnMSgpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgICAgICB4ID0gbmV4dChnKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgZy5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgIm55YmJsZXMgaGF2ZSBleHBsb2RlZCB3aXRoIGRlbGlnaHQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIEdlbmVyYXRvckV4aXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ190aHJvdyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGluZyAndGhyb3cnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGUgPSBWYWx1ZUVycm9yKCJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgICAgICBnLnRocm93KGUpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF92YWx1ZV9hdHRyaWJ1dGVfb2ZfU3RvcEl0ZXJhdGlvbl9leGNlcHRpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0ICd2YWx1ZScgYXR0cmlidXRlIG9mIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBwZXgoZSk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIiVzOiAlcyIgJSAoZS5fX2NsYXNzX18uX19uYW1lX18sIGUpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJ2YWx1ZSA9ICVzIiAlIChlLnZhbHVlLCkpCisgICAgICAgIGUgPSBTdG9wSXRlcmF0aW9uKCkKKyAgICAgICAgcGV4KGUpCisgICAgICAgIGUgPSBTdG9wSXRlcmF0aW9uKCJzcGFtIikKKyAgICAgICAgcGV4KGUpCisgICAgICAgIGUudmFsdWUgPSAiZWdncyIKKyAgICAgICAgcGV4KGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0b3BJdGVyYXRpb246ICIsCisgICAgICAgICAgICAidmFsdWUgPSBOb25lIiwKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiBzcGFtIiwKKyAgICAgICAgICAgICJ2YWx1ZSA9IHNwYW0iLAorICAgICAgICAgICAgIlN0b3BJdGVyYXRpb246IHNwYW0iLAorICAgICAgICAgICAgInZhbHVlID0gZWdncyIsCisgICAgICAgIF0pCisKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl92YWx1ZV9jcmFzaChzZWxmKToKKyAgICAgICAgIyBUaGVyZSB1c2VkIHRvIGJlIGEgcmVmY291bnQgZXJyb3Igd2hlbiB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAgICMgc3RvcmVkIGluIHRoZSBTdG9wSXRlcmF0aW9uIGhhcyBhIHJlZmNvdW50IG9mIDEuCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgeWllbGQgImcyIgorICAgICAgICAgICAgcmV0dXJuIFs0Ml0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGcxKCkpLCBbImcyIl0pCisKKworICAgIGRlZiB0ZXN0X2dlbmVyYXRvcl9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGdlbmVyYXRvciByZXR1cm4gdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXMiICUgKHJldCwpKQorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMig0MikKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXMiICUgKHJldCwpKQorICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMih2ID0gTm9uZSk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgICAgIGlmIHY6CisgICAgICAgICAgICAgICAgcmV0dXJuIHYKKyAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkIE5vbmUiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkIDQyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX25leHRfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBuZXh0KCkgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgzKQorICAgICAgICBmb3IgeCBpbiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiWWllbGRlZCAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDEiLAorICAgICAgICAgICAgIllpZWxkZWQgMiIsCisgICAgICAgIF0pCisKKworICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fb2Zfc2VuZE5vbmVfdG9fbmV4dChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY29udmVyc2lvbiBvZiBzZW5kKE5vbmUpIHRvIG5leHQoKQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgzKQorICAgICAgICBnaSA9IGcoKQorICAgICAgICBmb3IgeCBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHkgPSBnaS5zZW5kKE5vbmUpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQ6ICVzIiAlICh5LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIllpZWxkZWQ6IDAiLAorICAgICAgICAgICAgIllpZWxkZWQ6IDEiLAorICAgICAgICAgICAgIllpZWxkZWQ6IDIiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9jbG9zZV90b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIGNsb3NlKCkgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgic3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgzKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImZpbmlzaGluZyBnIikKKyAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgbmV4dChnaSkKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBnaS5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LmdldHZhbHVlKCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJzdGFydGluZyBnIiwKKyAgICAgICAgICAgICJmaW5pc2hpbmcgZyIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX3Rocm93X3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpbmcgJ3Rocm93JyB0byBub24tZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDEwKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIHggPSBuZXh0KGdpKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgZSA9IFZhbHVlRXJyb3IoInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgICAgIGdpLnRocm93KGUpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDAiLAorICAgICAgICAgICAgIllpZWxkZWQgMSIsCisgICAgICAgICAgICAiWWllbGRlZCAyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDMiLAorICAgICAgICAgICAgIllpZWxkZWQgNCIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYXR0ZW1wdGluZ190b19zZW5kX3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGF0dGVtcHRpbmcgdG8gc2VuZCB0byBub24tZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJzdGFydGluZyBnIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZmluaXNoaW5nIGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKDMpOgorICAgICAgICAgICAgICAgIHkgPSBnaS5zZW5kKDQyKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU2hvdWxkIG5vdCBoYXZlIHlpZWxkZWQ6ICVzIiAlICh5LCkpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2VuZCIsIGUuYXJnc1swXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgid2FzIGFibGUgdG8gc2VuZCBpbnRvIG5vbi1nZW5lcmF0b3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJzdGFydGluZyBnIiwKKyAgICAgICAgICAgICJmaW5pc2hpbmcgZyIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9icm9rZW5fZ2V0YXR0cl9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc3ViaXRlcmF0b3Igd2l0aCBhIGJyb2tlbiBnZXRhdHRyIGltcGxlbWVudGF0aW9uCisgICAgICAgICIiIgorICAgICAgICBjbGFzcyBCcm9rZW46CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIEJyb2tlbigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLnNlbmQoMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZ2kpLCAxKQorICAgICAgICAgICAgZ2kudGhyb3coQXR0cmlidXRlRXJyb3IpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignWmVyb0RpdmlzaW9uRXJyb3InLCBvdXRwdXQuZ2V0dmFsdWUoKSkKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9pbl9pbml0aWFsX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZXhjZXB0aW9uIGluIGluaXRpYWwgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIGFib3V0IHRvIHlpZWxkIGZyb20gZzIiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgeWllbGQgMS8wCisgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdpID0gZzEoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IscnVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJnMSBhYm91dCB0byB5aWVsZCBmcm9tIGcyIgorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYXR0ZW1wdGVkX3lpZWxkX2Zyb21fbG9vcChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgYXR0ZW1wdGVkIHlpZWxkLWZyb20gbG9vcAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzE6IHN0YXJ0aW5nIikKKyAgICAgICAgICAgIHlpZWxkICJ5MSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzE6IGFib3V0IHRvIHlpZWxkIGZyb20gZzIiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHNob3VsZCBub3QgYmUgaGVyZSIpCisKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyOiBzdGFydGluZyIpCisgICAgICAgICAgICB5aWVsZCAieTIiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyOiBhYm91dCB0byB5aWVsZCBmcm9tIGcxIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZ2kKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnMSgpCisgICAgICAgICAgICBmb3IgeSBpbiBnaToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQ6ICVzIiAlICh5LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGRpZG4ndCByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZzE6IHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiB5MSIsCisgICAgICAgICAgICAiZzE6IGFib3V0IHRvIHlpZWxkIGZyb20gZzIiLAorICAgICAgICAgICAgImcyOiBzdGFydGluZyIsCisgICAgICAgICAgICAiWWllbGRlZDogeTIiLAorICAgICAgICAgICAgImcyOiBhYm91dCB0byB5aWVsZCBmcm9tIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JldHVybmluZ192YWx1ZV9mcm9tX2RlbGVnYXRlZF90aHJvdyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmV0dXJuaW5nIHZhbHVlIGZyb20gZGVsZWdhdGVkICd0aHJvdycKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZXhjZXB0IEx1bmNoRXJyb3I6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJDYXVnaHQgTHVuY2hFcnJvciBpbiBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIGx1bmNoIHNhdmVkIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiB5ZXQgbW9yZSBzcGFtIgorICAgICAgICBjbGFzcyBMdW5jaEVycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBlID0gTHVuY2hFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICBnLnRocm93KGUpCisgICAgICAgIGZvciB4IGluIGc6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJDYXVnaHQgTHVuY2hFcnJvciBpbiBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiB5ZXQgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9uZXh0X2FuZF9yZXR1cm5fd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgbmV4dCBhbmQgcmV0dXJuIHdpdGggdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYocik6CisgICAgICAgICAgICBnaSA9IGcocikKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIHJlc3VtaW5nIGciKQorICAgICAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXMiICUgKHJlcHIoZSksKSkKKyAgICAgICAgZGVmIGcocik6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHJldHVybiByCisgICAgICAgIGYoTm9uZSkKKyAgICAgICAgZig0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiByZXN1bWluZyBnIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBOb25lIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCkiLAorICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgNDIiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oNDIsKSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9zZW5kX2FuZF9yZXR1cm5fd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc2VuZCBhbmQgcmV0dXJuIHdpdGggdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYocik6CisgICAgICAgICAgICBnaSA9IGcocikKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIHNlbmRpbmcgc3BhbSB0byBnIikKKyAgICAgICAgICAgICAgICBnaS5zZW5kKCJzcGFtIikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgU0hPVUxEIE5PVCBCRSBIRVJFIikKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIGNhdWdodCAlciIgJSAoZSwpKQorICAgICAgICBkZWYgZyhyKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzdGFydGluZyIpCisgICAgICAgICAgICB4ID0geWllbGQKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlcyIgJSAociwpKQorICAgICAgICAgICAgcmV0dXJuIHIKKyAgICAgICAgZihOb25lKQorICAgICAgICBmKDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHNlbmRpbmcgc3BhbSB0byBnIiwKKyAgICAgICAgICAgICJnIHJlY2VpdmVkIHNwYW0iLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIE5vbmUiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKSIsCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyA0MiIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbig0MiwpIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NhdGNoaW5nX2V4Y2VwdGlvbl9mcm9tX3N1Ymdlbl9hbmRfcmV0dXJuaW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjYXRjaGluZyBhbiBleGNlcHRpb24gdGhyb3duIGludG8gYQorICAgICAgICBzdWJnZW5lcmF0b3IgYW5kIHJldHVybmluZyBhIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiKQorICAgICAgICAgICAgcmV0dXJuIDIKKworICAgICAgICBkZWYgb3V0ZXIoKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCBmcm9tIGlubmVyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgcmV0dXJuZWQgJXIgdG8gb3V0ZXIiICUgdikKKyAgICAgICAgICAgIHlpZWxkIHYKKyAgICAgICAgZyA9IG91dGVyKCkKKyAgICAgICAgdHJhY2UuYXBwZW5kKG5leHQoZykpCisgICAgICAgIHRyYWNlLmFwcGVuZChnLnRocm93KFZhbHVlRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiLAorICAgICAgICAgICAgImlubmVyIHJldHVybmVkIDIgdG8gb3V0ZXIiLAorICAgICAgICAgICAgMiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5fdGhhdF9yZXR1cm5zKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aHJvd2luZyBHZW5lcmF0b3JFeGl0IGludG8gYSBzdWJnZW5lcmF0b3IgdGhhdAorICAgICAgICBjYXRjaGVzIGl0IGFuZCByZXR1cm5zIG5vcm1hbGx5LgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZiIpCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkV4aXQgZiIpCisgICAgICAgICAgICBleGNlcHQgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJFbnRlciBnIiwKKyAgICAgICAgICAgICJFbnRlciBmIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5lcmF0b3JfdGhhdF95aWVsZHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRocm93aW5nIEdlbmVyYXRvckV4aXQgaW50byBhIHN1YmdlbmVyYXRvciB0aGF0CisgICAgICAgIGNhdGNoZXMgaXQgYW5kIHlpZWxkcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgR2VuZXJhdG9yRXhpdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIkVudGVyIGciLAorICAgICAgICAgICAgIkVudGVyIGYiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfdGhyb3dpbmdfR2VuZXJhdG9yRXhpdF9pbnRvX3N1Ymdlbl90aGF0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhyb3dpbmcgR2VuZXJhdG9yRXhpdCBpbnRvIGEgc3ViZ2VuZXJhdG9yIHRoYXQKKyAgICAgICAgY2F0Y2hlcyBpdCBhbmQgcmFpc2VzIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVm9ycGFsIGJ1bm55IGVuY291bnRlcmVkIikKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgIlZvcnBhbCBidW5ueSBlbmNvdW50ZXJlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiRW50ZXIgZyIsCisgICAgICAgICAgICAiRW50ZXIgZiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF95aWVsZF9mcm9tX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBnKCkpCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX2dlbmVyYXRvcnNfY2xhaW1fdG9fYmVfcnVubmluZyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB3aXRoIGJhc2ljIGl0ZXJhdGlvbgorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICB5aWVsZCBmcm9tIHR3bygpCisgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgIGRlZiB0d28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgIGcxID0gb25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGcxKSwgWzAsIDEsIDIsIDNdKQorICAgICAgICAjIENoZWNrIHdpdGggc2VuZAorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHJlcyA9IFtuZXh0KGcxKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcxLnNlbmQoNDIpKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFswLCAxLCAyLCAzXSkKKyAgICAgICAgIyBDaGVjayB3aXRoIHRocm93CisgICAgICAgIGNsYXNzIE15RXJyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgeWllbGQgZnJvbSB0d28oKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBNeUVycjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiB0d28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzEKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHJlcyA9IFtuZXh0KGcxKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcxLnRocm93KE15RXJyKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQ2hlY2sgd2l0aCBjbG9zZQorICAgICAgICBjbGFzcyBNeUl0KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmXyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcxLmdpX3J1bm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgZzEpCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gTXlJdCgpCisgICAgICAgIGcxID0gb25lKCkKKyAgICAgICAgbmV4dChnMSkKKyAgICAgICAgZzEuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdG9yX2lzX3Zpc2libGVfdG9fZGVidWdnZXIoc2VsZik6CisgICAgICAgIGRlZiBjYWxsX3N0YWNrKCk6CisgICAgICAgICAgICByZXR1cm4gW2ZbM10gZm9yIGYgaW4gaW5zcGVjdC5zdGFjaygpXQorCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIGNhbGxfc3RhY2soKQorICAgICAgICAgICAgeWllbGQgY2FsbF9zdGFjaygpCisgICAgICAgICAgICB5aWVsZCBjYWxsX3N0YWNrKCkKKworICAgICAgICBkZWYgc3BhbShnKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZworCisgICAgICAgIGRlZiBlZ2dzKGcpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBnCisKKyAgICAgICAgZm9yIHN0YWNrIGluIHNwYW0oZ2VuKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzcGFtJyBpbiBzdGFjaykKKworICAgICAgICBmb3Igc3RhY2sgaW4gc3BhbShlZ2dzKGdlbigpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3NwYW0nIGluIHN0YWNrIGFuZCAnZWdncycgaW4gc3RhY2spCisKKyAgICBkZWYgdGVzdF9jdXN0b21faXRlcmF0b3JfcmV0dXJuKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMTU1NjgKKyAgICAgICAgY2xhc3MgTXlJdGVyOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbig0MikKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgcmV0CisgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIE15SXRlcigpCisgICAgICAgIHJldCA9IE5vbmUKKyAgICAgICAgbGlzdChnZW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIDQyKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdFBFUDM4ME9wZXJhdGlvbl0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKaW5kZXggOWRhMmNhZS4uZjUyZDRiZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaW8KK2ltcG9ydCBjb2xsZWN0aW9ucwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNyw2ICs4LDcgQEAKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMKK2Zyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBCaWdtZW1QaWNrbGVUZXN0cwogCiB0cnk6CkBAIC04MCw2ICs4MiwxOCBAQAogICAgIHVucGlja2xlcl9jbGFzcyA9IHBpY2tsZS5fVW5waWNrbGVyCiAKIAorY2xhc3MgUHlEaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1BpY2tsZXIKKyAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gcGlja2xlLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorCisKK2NsYXNzIFB5Q2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1BpY2tsZXIKKyAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuQ2hhaW5NYXAoe30sIHBpY2tsZS5kaXNwYXRjaF90YWJsZSkKKworCiBpZiBoYXNfY19pbXBsZW1lbnRhdGlvbjoKICAgICBjbGFzcyBDUGlja2xlclRlc3RzKFB5UGlja2xlclRlc3RzKToKICAgICAgICAgcGlja2xlciA9IF9waWNrbGUuUGlja2xlcgpAQCAtMTAxLDE0ICsxMTUsMjYgQEAKICAgICAgICAgcGlja2xlcl9jbGFzcyA9IF9waWNrbGUuUGlja2xlcgogICAgICAgICB1bnBpY2tsZXJfY2xhc3MgPSBfcGlja2xlLlVucGlja2xlcgogCisgICAgY2xhc3MgQ0Rpc3BhdGNoVGFibGVUZXN0cyhBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyk6CisgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuUGlja2xlcgorICAgICAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKworICAgIGNsYXNzIENDaGFpbkRpc3BhdGNoVGFibGVUZXN0cyhBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyk6CisgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuUGlja2xlcgorICAgICAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLkNoYWluTWFwKHt9LCBwaWNrbGUuZGlzcGF0Y2hfdGFibGUpCisKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3RzID0gW1BpY2tsZVRlc3RzLCBQeVBpY2tsZXJUZXN0cywgUHlQZXJzUGlja2xlclRlc3RzXQorICAgIHRlc3RzID0gW1BpY2tsZVRlc3RzLCBQeVBpY2tsZXJUZXN0cywgUHlQZXJzUGlja2xlclRlc3RzLAorICAgICAgICAgICAgIFB5RGlzcGF0Y2hUYWJsZVRlc3RzLCBQeUNoYWluRGlzcGF0Y2hUYWJsZVRlc3RzXQogICAgIGlmIGhhc19jX2ltcGxlbWVudGF0aW9uOgogICAgICAgICB0ZXN0cy5leHRlbmQoW0NQaWNrbGVyVGVzdHMsIENQZXJzUGlja2xlclRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIENEdW1wUGlja2xlX0xvYWRQaWNrbGUsIER1bXBQaWNrbGVfQ0xvYWRQaWNrbGUsCiAgICAgICAgICAgICAgICAgICAgICAgUHlQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgQ1BpY2tsZXJVbnBpY2tsZXJPYmplY3RUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICBDRGlzcGF0Y2hUYWJsZVRlc3RzLCBDQ2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgSW5NZW1vcnlQaWNrbGVUZXN0c10pCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QocGlja2xlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKaW5kZXggZDViODg2Zi4uNmE3YjQ1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CkBAIC03OSwyMSArNzksNiBAQAogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZCkKIAotICAgIGRlZiB0ZXN0UXVvdGluZyhzZWxmKToKLSAgICAgICAgc2FmZXVucXVvdGVkID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nCi0gICAgICAgIHVuaWNvZGVfc2FtcGxlID0gJ1x4ZTlceGUwXHhkZicgICMgZSArIGFjdXRlIGFjY2VudCwgYSArIGdyYXZlLCBzaGFycCBzCi0gICAgICAgIHVuc2FmZSA9ICciYCRcXCEnICsgdW5pY29kZV9zYW1wbGUKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpcGVzLnF1b3RlKCcnKSwgIicnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZShzYWZldW5xdW90ZWQpLCBzYWZldW5xdW90ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoJ3Rlc3QgZmlsZSBuYW1lJyksICIndGVzdCBmaWxlIG5hbWUnIikKLSAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgndGVzdCVzbmFtZScgJSB1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzbmFtZSciICUgdSkKLSAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgidGVzdCVzJ25hbWUnIiAlIHUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3QlcydcIidcIiduYW1lJ1wiJ1wiJyciICUgdSkKLQogICAgIGRlZiB0ZXN0UmVwcihzZWxmKToKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAiPFRlbXBsYXRlIGluc3RhbmNlLCBzdGVwcz1bXT4iKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2cucHkgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQppbmRleCBhNGRkYjE1Li4zNTVlZmU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQpAQCAtMjMsNiArMjMsOCBAQAogZGVmIGZpeGRpcihsc3QpOgogICAgIGlmICJfX2J1aWx0aW5zX18iIGluIGxzdDoKICAgICAgICAgbHN0LnJlbW92ZSgiX19idWlsdGluc19fIikKKyAgICBpZiAiX19pbml0aWFsaXppbmdfXyIgaW4gbHN0OgorICAgICAgICBsc3QucmVtb3ZlKCJfX2luaXRpYWxpemluZ19fIikKICAgICByZXR1cm4gbHN0CiAKIApAQCAtMTk2LDE0ICsxOTgsMTUgQEAKIAogICAgICAgICBpbXBvcnQgdDUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnZm9vJywgJ3N0cmluZycsICd0NSddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsICd0NSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodDUuZm9vKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnc3RyaW5nJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdzdHJpbmcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1LnN0cmluZykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ3NwYW0nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ3NwYW0nXSkKIAogICAgIGRlZiB0ZXN0XzYoc2VsZik6CiAgICAgICAgIGhpZXIgPSBbCkBAIC0yMTksMTQgKzIyMiwxNCBAQAogICAgICAgICBpbXBvcnQgdDYKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2FsbF9fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgdDYKICAgICAgICAgICAgIGZyb20gdDYgaW1wb3J0ICoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fYWxsX18nLCAnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWdncycsICdoYW0nLCAnc3BhbSddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJywgJ2VnZ3MnLCAnaGFtJywgJ3NwYW0nXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKCksIFsnZWdncycsICdoYW0nLCAnc2VsZicsICdzcGFtJywgJ3Q2J10pCiAgICAgICAgICAgICAiIiIKICAgICAgICAgc2VsZi5ydW5fY29kZShzKQpAQCAtMjUyLDE5ICsyNTUsMTkgQEAKICAgICAgICAgdDcsIHN1Yiwgc3Vic3ViID0gTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICBpbXBvcnQgdDcgYXMgdGFzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0YXMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0NykKICAgICAgICAgZnJvbSB0NyBpbXBvcnQgc3ViIGFzIHN1YnBhcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIoc3VicGFyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3ViKQogICAgICAgICBmcm9tIHQ3LnN1YiBpbXBvcnQgc3Vic3ViIGFzIHN1YnN1YnN1YgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIoc3Vic3Vic3ViKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsICdzcGFtJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsICdzcGFtJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3ViKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YnN1YikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKaW5kZXggYzM3ZTkzNi4uYTg0MjZiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBpbXAgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZQogCiBjbGFzcyBUZXN0SW1wb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjksNyArMjksNyBAQAogICAgICAgICBzZWxmLnBhY2thZ2VfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVzdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWNrYWdlX25hbWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGFja2FnZV9kaXIpCi0gICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdfX2luaXRfXy5weScpLCAndycpLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdfX2luaXRfXy5weScpKQogICAgICAgICBzZWxmLm1vZHVsZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdmb28ucHknKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IDNiNzJmMDYuLjg4ZTJkMzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxvYWQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVubG9hZCwgY2hlY2tfd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGltcApAQCAtOSw3ICs5LDExIEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgemlwZmlsZQogCi0KKyMgTm90ZTogcGtndXRpbC53YWxrX3BhY2thZ2VzIGlzIGN1cnJlbnRseSB0ZXN0ZWQgaW4gdGVzdF9ydW5weS4gVGhpcyBpcworIyBhIGhhY2sgdG8gZ2V0IGEgbWFqb3IgaXNzdWUgcmVzb2x2ZWQgZm9yIDMuM2IyLiBMb25nZXIgdGVybSwgaXQgc2hvdWxkCisjIGJlIG1vdmVkIGJhY2sgaGVyZSwgcGVyaGFwcyBieSBmYWN0b3Jpbmcgb3V0IHRoZSBoZWxwZXIgY29kZSBmb3IKKyMgY3JlYXRpbmcgaW50ZXJlc3RpbmcgcGFja2FnZSBsYXlvdXRzIHRvIGEgc2VwYXJhdGUgbW9kdWxlLgorIyBJc3N1ZSAjMTUzNDggZGVjbGFyZXMgdGhpcyBpcyBpbmRlZWQgYSBkb2RneSBoYWNrIDspCiAKIGNsYXNzIFBrZ3V0aWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTEzOCwxMCArMTQyLDExIEBACiAgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KIAogCisjIFRoZXNlIHRlc3RzLCBlc3BlY2lhbGx5IHRoZSBzZXR1cCBhbmQgY2xlYW51cCwgYXJlIGhpZGVvdXMuIFRoZXkKKyMgbmVlZCB0byBiZSBjbGVhbmVkIHVwIG9uY2UgaXNzdWUgMTQ3MTUgaXMgYWRkcmVzc2VkLgogY2xhc3MgRXh0ZW5kUGF0aFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY3JlYXRlX2luaXQoc2VsZiwgcGtnbmFtZSk6CiAgICAgICAgIGRpcm5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIGRpcm5hbWUpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBkaXJuYW1lKQogCiAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBwa2duYW1lKQpAQCAtMTU2LDIyICsxNjEsMTIgQEAKICAgICAgICAgd2l0aCBvcGVuKG1vZHVsZV9uYW1lLCAndycpIGFzIGZsOgogICAgICAgICAgICAgcHJpbnQoJ3ZhbHVlPXt9Jy5mb3JtYXQodmFsdWUpLCBmaWxlPWZsKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAjIENyZWF0ZSAyIGRpcmVjdG9yaWVzIG9uIHN5cy5wYXRoCi0gICAgICAgIHNlbGYucGtnbmFtZSA9ICdmb28nCi0gICAgICAgIHNlbGYuZGlybmFtZV8wID0gc2VsZi5jcmVhdGVfaW5pdChzZWxmLnBrZ25hbWUpCi0gICAgICAgIHNlbGYuZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChzZWxmLnBrZ25hbWUpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGRlbCBzeXMucGF0aFswXQotICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQotCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgotICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoc2VsZi5kaXJuYW1lXzAsIHNlbGYucGtnbmFtZSwgJ2JhcicsIDApCi0gICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShzZWxmLmRpcm5hbWVfMSwgc2VsZi5wa2duYW1lLCAnYmF6JywgMSkKKyAgICAgICAgcGtnbmFtZSA9ICdmb28nCisgICAgICAgIGRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8wLCBwa2duYW1lLCAnYmFyJywgMCkKKyAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKGRpcm5hbWVfMSwgcGtnbmFtZSwgJ2JheicsIDEpCiAgICAgICAgIGltcG9ydCBmb28uYmFyCiAgICAgICAgIGltcG9ydCBmb28uYmF6CiAgICAgICAgICMgRW5zdXJlIHdlIHJlYWQgdGhlIGV4cGVjdGVkIHZhbHVlcwpAQCAtMTgwLDggKzE3NSw0NSBAQAogCiAgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGlzIHNldCB1cCBjb3JyZWN0bHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm9vLl9fcGF0aF9fKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihzZWxmLmRpcm5hbWVfMCwgc2VsZi5wa2duYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLmRpcm5hbWVfMSwgc2VsZi5wa2duYW1lKV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbb3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGlybmFtZV8xLCBwa2duYW1lKV0pKQorCisgICAgICAgICMgQ2xlYW51cAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWVfMCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzEpCisgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQorCisgICAgZGVmIHRlc3RfbWl4ZWRfbmFtZXNwYWNlKHNlbGYpOgorICAgICAgICBwa2duYW1lID0gJ2ZvbycKKyAgICAgICAgZGlybmFtZV8wID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBkaXJuYW1lXzEgPSBzZWxmLmNyZWF0ZV9pbml0KHBrZ25hbWUpCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzAsIHBrZ25hbWUsICdiYXInLCAwKQorICAgICAgICAjIFR1cm4gdGhpcyBpbnRvIGEgUEVQIDQyMCBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzEsIHBrZ25hbWUsICdiYXonLCAxKQorICAgICAgICBpbXBvcnQgZm9vLmJhcgorICAgICAgICBpbXBvcnQgZm9vLmJhegorICAgICAgICAjIEVuc3VyZSB3ZSByZWFkIHRoZSBleHBlY3RlZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyLnZhbHVlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXoudmFsdWUsIDEpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIHBhdGggaXMgc2V0IHVwIGNvcnJlY3RseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb28uX19wYXRoX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbb3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGlybmFtZV8xLCBwa2duYW1lKV0pKQorCisgICAgICAgICMgQ2xlYW51cAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWVfMCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzEpCisgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQogCiAgICAgIyBYWFg6IHRlc3QgLnBrZyBmaWxlcwogCkBAIC0yMjcsMTIgKzI1OSw1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIDIpCiAKIAorY2xhc3MgSW1wb3J0bGliTWlncmF0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgV2l0aCBmdWxsIFBFUCAzMDIgc3VwcG9ydCBpbiB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeSwgdGhlCisgICAgIyBQRVAgMzAyIGVtdWxhdGlvbiBpbiB0aGlzIG1vZHVsZSBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZworICAgICMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliIHByb3BlcgorCisgICAgZGVmIGNoZWNrX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHJldHVybiBjaGVja193YXJuaW5ncygKKyAgICAgICAgICAgICgiVGhpcyBlbXVsYXRpb24gaXMgZGVwcmVjYXRlZCwgdXNlICdpbXBvcnRsaWInIGluc3RlYWQiLAorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpCisKKyAgICBkZWYgdGVzdF9pbXBvcnRlcl9kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfZGVwcmVjYXRlZCgpOgorICAgICAgICAgICAgeCA9IHBrZ3V0aWwuSW1wSW1wb3J0ZXIoIiIpCisKKyAgICBkZWYgdGVzdF9sb2FkZXJfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgICAgIHggPSBwa2d1dGlsLkltcExvYWRlcigiIiwgIiIsICIiLCAiIikKKworICAgIGRlZiB0ZXN0X2dldF9sb2FkZXJfYXZvaWRzX2VtdWxhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygpIGFzIHc6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwa2d1dGlsLmdldF9sb2FkZXIoInN5cyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJvcyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJ0ZXN0LnN1cHBvcnQiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQorCisgICAgZGVmIHRlc3RfZ2V0X2ltcG9ydGVyX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgICMgV2UgdXNlIGFuIGlsbGVnYWwgcGF0aCBzbyAqbm9uZSogb2YgdGhlIHBhdGggaG9va3Mgc2hvdWxkIGZpcmUKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygpIGFzIHc6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwa2d1dGlsLmdldF9pbXBvcnRlcigiKj8/IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKKworICAgIGRlZiB0ZXN0X2l0ZXJfaW1wb3J0ZXJzX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgZm9yIGltcG9ydGVyIGluIHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnMoKTogcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChQa2d1dGlsVGVzdHMsIFBrZ3V0aWxQRVAzMDJUZXN0cywgRXh0ZW5kUGF0aFRlc3RzLAotICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lc3BhY2VQYWNrYWdlVGVzdCkKKyAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZXNwYWNlUGFja2FnZVRlc3QsIEltcG9ydGxpYk1pZ3JhdGlvblRlc3RzKQogICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgaWYgdGVzdCBpcyBydW4gcmVwZWF0ZWQgKGxpa2Ugd2hlbiBmaW5kaW5nIGxlYWtzKQogICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBpbXBvcnQgaW1wb3J0bGliCiAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CmluZGV4IDg3NTFhYTguLjZhYmY0NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQpAQCAtMSw4ICsxLDkgQEAKLWltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNTYsMTMgKzU3LDExIEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2F2ZV92ZXJzaW9uID0gc3lzLnZlcnNpb24KLSAgICAgICAgc2VsZi5zYXZlX3N1YnZlcnNpb24gPSBzeXMuc3VidmVyc2lvbgogICAgICAgICBzZWxmLnNhdmVfbWVyY3VyaWFsID0gc3lzLl9tZXJjdXJpYWwKICAgICAgICAgc2VsZi5zYXZlX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy52ZXJzaW9uID0gc2VsZi5zYXZlX3ZlcnNpb24KLSAgICAgICAgc3lzLnN1YnZlcnNpb24gPSBzZWxmLnNhdmVfc3VidmVyc2lvbgogICAgICAgICBzeXMuX21lcmN1cmlhbCA9IHNlbGYuc2F2ZV9tZXJjdXJpYWwKICAgICAgICAgc3lzLnBsYXRmb3JtID0gc2VsZi5zYXZlX3BsYXRmb3JtCiAKQEAgLTc3LDcgKzc2LDcgQEAKICAgICAgICAgICAgICAoJ0lyb25QeXRob24nLCAnMS4wLjAnLCAnJywgJycsICcnLCAnJywgJy5ORVQgMi4wLjUwNzI3LjQyJykpLAogICAgICAgICAgICAgKToKICAgICAgICAgICAgICMgYnJhbmNoIGFuZCByZXZpc2lvbiBhcmUgbm90ICJwYXJzZWQiLCBidXQgZmV0Y2hlZAotICAgICAgICAgICAgIyBmcm9tIHN5cy5zdWJ2ZXJzaW9uLiAgSWdub3JlIHRoZW0KKyAgICAgICAgICAgICMgZnJvbSBzeXMuX21lcmN1cmlhbC4gIElnbm9yZSB0aGVtCiAgICAgICAgICAgICAobmFtZSwgdmVyc2lvbiwgYnJhbmNoLCByZXZpc2lvbiwgYnVpbGRubywgYnVpbGRkYXRlLCBjb21waWxlcikgXAogICAgICAgICAgICAgICAgICAgID0gcGxhdGZvcm0uX3N5c192ZXJzaW9uKGlucHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTExMyw4ICsxMTIsNiBAQAogICAgICAgICAgICAgaWYgc3VidmVyc2lvbiBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAiX21lcmN1cmlhbCIpOgogICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLl9tZXJjdXJpYWwKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgInN1YnZlcnNpb24iKToKLSAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5zdWJ2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5fbWVyY3VyaWFsID0gc3VidmVyc2lvbgogICAgICAgICAgICAgaWYgc3lzX3BsYXRmb3JtIGlzIG5vdCBOb25lOgpAQCAtMTM2LDYgKzEzMywxMiBAQAogICAgIGRlZiB0ZXN0X3VuYW1lKHNlbGYpOgogICAgICAgICByZXMgPSBwbGF0Zm9ybS51bmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMF0sIHJlcy5zeXN0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzFdLCByZXMubm9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMl0sIHJlcy5yZWxlYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1szXSwgcmVzLnZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzRdLCByZXMubWFjaGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbNV0sIHJlcy5wcm9jZXNzb3IpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICJ3aW5kb3dzIG9ubHkgdGVzdCIpCiAgICAgZGVmIHRlc3RfdW5hbWVfd2luMzJfQVJDSElURVc2NDMyKHNlbGYpOgpAQCAtMTY5LDcgKzE3Miw3IEBACiAgICAgZGVmIHRlc3RfbWFjX3ZlcihzZWxmKToKICAgICAgICAgcmVzID0gcGxhdGZvcm0ubWFjX3ZlcigpCiAKLSAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKVswXSA9PSAnRGFyd2luJzoKKyAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKS5zeXN0ZW0gPT0gJ0Rhcndpbic6CiAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgTWFjT1NYIHN5c3RlbSwgY2hlY2sgdGhhdAogICAgICAgICAgICAgIyB0aGUgcmlnaHQgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZAogICAgICAgICAgICAgZmQgPSBvcy5wb3Blbignc3dfdmVycycsICdyJykKQEAgLTI0Nyw2ICsyNTAsMzggQEAKICAgICAgICAgICAgICk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtLl9wYXJzZV9yZWxlYXNlX2ZpbGUoaW5wdXQpLCBvdXRwdXQpCiAKKyAgICBkZWYgdGVzdF9wb3BlbihzZWxmKToKKyAgICAgICAgbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQorCisgICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgICAgIGNvbW1hbmQgPSAnInt9IiAtYyAicHJpbnQoXCdIZWxsb1wnKSInLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiJ3t9JyAtYyAncHJpbnQoXCJIZWxsb1wiKSciLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHBsYXRmb3JtLnBvcGVuKGNvbW1hbmQpIGFzIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBoZWxsbyA9IHN0ZG91dC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHN0ZG91dC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsbywgIkhlbGxvIikKKworICAgICAgICBkYXRhID0gJ3Bsb3AnCisgICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgICAgIGNvbW1hbmQgPSAnInt9IiAtYyAiaW1wb3J0IHN5czsgZGF0YT1zeXMuc3RkaW4ucmVhZCgpOyBleGl0KGxlbihkYXRhKSkiJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tbWFuZCA9ICIne30nIC1jICdpbXBvcnQgc3lzOyBkYXRhPXN5cy5zdGRpbi5yZWFkKCk7IGV4aXQobGVuKGRhdGEpKSciCisgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHBsYXRmb3JtLnBvcGVuKGNvbW1hbmQsICd3JykgYXMgc3RkaW46CisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc3RkaW4ud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICByZXQgPSBzdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmV0KQorICAgICAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZSA9IHJldAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSByZXQgPj4gOAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dXJuY29kZSwgbGVuKGRhdGEpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CmluZGV4IDVmOTgwZDAuLmE5ZTM0M2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQpAQCAtNTUsNiArNTUsMTAgQEAKICAgICAgICAgPC9hcnJheT4KICAgICAgICAgPGtleT5hU3RyaW5nPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+RG9vZGFoPC9zdHJpbmc+CisgICAgICAgIDxrZXk+YW5FbXB0eURpY3Q8L2tleT4KKyAgICAgICAgPGRpY3QvPgorICAgICAgICA8a2V5PmFuRW1wdHlMaXN0PC9rZXk+CisgICAgICAgIDxhcnJheS8+CiAgICAgICAgIDxrZXk+YW5JbnQ8L2tleT4KICAgICAgICAgPGludGVnZXI+NzI4PC9pbnRlZ2VyPgogICAgICAgICA8a2V5Pm5lc3RlZERhdGE8L2tleT4KQEAgLTExMiw2ICsxMTYsOCBAQAogICAgICAgICAgICAgc29tZU1vcmVEYXRhID0gcGxpc3RsaWIuRGF0YShiIjxsb3RzIG9mIGJpbmFyeSBndW5rPlwwXDFcMlwzIiAqIDEwKSwKICAgICAgICAgICAgIG5lc3RlZERhdGEgPSBbcGxpc3RsaWIuRGF0YShiIjxsb3RzIG9mIGJpbmFyeSBndW5rPlwwXDFcMlwzIiAqIDEwKV0sCiAgICAgICAgICAgICBhRGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDQsIDEwLCAyNiwgMTAsIDMzLCAzMyksCisgICAgICAgICAgICBhbkVtcHR5RGljdCA9IGRpY3QoKSwKKyAgICAgICAgICAgIGFuRW1wdHlMaXN0ID0gbGlzdCgpCiAgICAgICAgICkKICAgICAgICAgcGxbJ1x4YzViZW5yYWEnXSA9ICJUaGF0IHdhcyBhIHVuaWNvZGUga2V5LiIKICAgICAgICAgcmV0dXJuIHBsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IGUzOTAxYjguLmMwOTI5YTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC0xMDgsNiArMTA4LDEwIEBACiAgICAgZGVmIGNtZF9hcG9wKHNlbGYsIGFyZyk6CiAgICAgICAgIHNlbGYucHVzaCgnK09LIGRvbmUgbm90aGluZy4nKQogCisgICAgZGVmIGNtZF9xdWl0KHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnK09LIGNsb3NpbmcuJykKKyAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQorCiAKIGNsYXNzIER1bW15UE9QM1NlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMTY1LDEwICsxNjksMTAgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlQT1AzU2VydmVyKChIT1NULCBQT1JUKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IHBvcGxpYi5QT1AzKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCisgICAgICAgIHNlbGYuY2xpZW50ID0gcG9wbGliLlBPUDMoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCwgdGltZW91dD0zKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQogICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKIAogICAgIGRlZiB0ZXN0X2dldHdlbGNvbWUoc2VsZik6CkBAIC0yMjgsNiArMjMyLDEyIEBACiAgICAgICAgIHNlbGYuY2xpZW50LnVpZGwoKQogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCdmb28nKQogCisgICAgZGVmIHRlc3RfcXVpdChzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYuY2xpZW50LnF1aXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5jbGllbnQuc29jaykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5jbGllbnQuZmlsZSkKKwogCiBTVVBQT1JUU19TU0wgPSBGYWxzZQogaWYgaGFzYXR0cihwb3BsaWIsICdQT1AzX1NTTCcpOgpAQCAtMjc0LDYgKzI4NCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIER1bW15UE9QM0hhbmRsZXIuaGFuZGxlX3JlYWQoc2VsZikKIAorCiAgICAgY2xhc3MgVGVzdFBPUDNfU1NMQ2xhc3MoVGVzdFBPUDNDbGFzcyk6CiAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIHRlc3RzIGJ5IHVzaW5nIHBvcGxpYi5QT1AzX1NTTAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQppbmRleCBiOTM2ZGRhLi43ZjY5MWQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IG9zCitpbXBvcnQgZmNudGwKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAogaW1wb3J0IHNodXRpbApAQCAtMTYsNiArMTcsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IF90ZXN0Y2FwaQogCiBfRFVNTVlfU1lNTElOSyA9IG9zLnBhdGguam9pbih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiArICctZHVtbXktc3ltbGluaycpCkBAIC00Myw3ICs0NSw3IEBACiAgICAgICAgIE5PX0FSR19GVU5DVElPTlMgPSBbICJjdGVybWlkIiwgImdldGN3ZCIsICJnZXRjd2RiIiwgInVuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzIiwgImdldGxvYWRhdmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0ZWdpZCIsICJnZXRldWlkIiwgImdldGdpZCIsICJnZXRncm91cHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0cGlkIiwgImdldHBncnAiLCAiZ2V0cHBpZCIsICJnZXR1aWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0cGlkIiwgImdldHBncnAiLCAiZ2V0cHBpZCIsICJnZXR1aWQiLCAic3luYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgZm9yIG5hbWUgaW4gTk9fQVJHX0ZVTkNUSU9OUzoKQEAgLTEyOCw2ICsxMzAsNyBAQAogICAgICAgICAgICAgZnAgPSBvcGVuKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5mc3RhdHZmcyhmcC5maWxlbm8oKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXR2ZnMoZnAuZmlsZW5vKCkpKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKQEAgLTE0Miw2ICsxNDUsMTUxIEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICd0cnVuY2F0ZScpLCAidGVzdCBuZWVkcyBwb3NpeC50cnVuY2F0ZSgpIikKKyAgICBkZWYgdGVzdF90cnVuY2F0ZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoJ3Rlc3QnKQorICAgICAgICAgICAgZnAuZmx1c2goKQorICAgICAgICBwb3NpeC50cnVuY2F0ZShzdXBwb3J0LlRFU1RGTiwgMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGdldGF0dHIob3MsICdleGVjdmUnLCBOb25lKSBpbiBvcy5zdXBwb3J0c19mZCwgInRlc3QgbmVlZHMgZXhlY3ZlKCkgdG8gc3VwcG9ydCB0aGUgZmQgcGFyYW1ldGVyIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZm9yaycpLCAidGVzdCBuZWVkcyBvcy5mb3JrKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICd3YWl0cGlkJyksICJ0ZXN0IG5lZWRzIG9zLndhaXRwaWQoKSIpCisgICAgZGVmIHRlc3RfZmV4ZWN2ZShzZWxmKToKKyAgICAgICAgZnAgPSBvcy5vcGVuKHN5cy5leGVjdXRhYmxlLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgICAgICBvcy5jaGRpcihvcy5wYXRoLnNwbGl0KHN5cy5leGVjdXRhYmxlKVswXSkKKyAgICAgICAgICAgICAgICBwb3NpeC5leGVjdmUoZnAsIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ3Bhc3MnXSwgb3MuZW52aXJvbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy53YWl0cGlkKHBpZCwgMCksIChwaWQsIDApKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZnApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnd2FpdGlkJyksICJ0ZXN0IG5lZWRzIHBvc2l4LndhaXRpZCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZm9yaycpLCAidGVzdCBuZWVkcyBvcy5mb3JrKCkiKQorICAgIGRlZiB0ZXN0X3dhaXRpZChzZWxmKToKKyAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5zcGxpdChzeXMuZXhlY3V0YWJsZSlbMF0pCisgICAgICAgICAgICBwb3NpeC5leGVjdmUoc3lzLmV4ZWN1dGFibGUsIFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ3Bhc3MnXSwgb3MuZW52aXJvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcyA9IHBvc2l4LndhaXRpZChwb3NpeC5QX1BJRCwgcGlkLCBwb3NpeC5XRVhJVEVEKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaWQsIHJlcy5zaV9waWQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbG9ja2YnKSwgInRlc3QgbmVlZHMgcG9zaXgubG9ja2YoKSIpCisgICAgZGVmIHRlc3RfbG9ja2Yoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0JykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHBvc2l4LmxvY2tmKGZkLCBwb3NpeC5GX0xPQ0ssIDQpCisgICAgICAgICAgICAjIHNlY3Rpb24gaXMgbG9ja2VkCisgICAgICAgICAgICBwb3NpeC5sb2NrZihmZCwgcG9zaXguRl9VTE9DSywgNCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3ByZWFkJyksICJ0ZXN0IG5lZWRzIHBvc2l4LnByZWFkKCkiKQorICAgIGRlZiB0ZXN0X3ByZWFkKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2VzJywgcG9zaXgucHJlYWQoZmQsIDIsIDEpKQorICAgICAgICAgICAgIyB0aGUgZmlyc3QgcHJlYWQoKSBzaG91bGRuJ3QgZGlzdHVyYiB0aGUgZmlsZSBvZmZzZXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYid0ZScsIHBvc2l4LnJlYWQoZmQsIDIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncHdyaXRlJyksICJ0ZXN0IG5lZWRzIHBvc2l4LnB3cml0ZSgpIikKKyAgICBkZWYgdGVzdF9wd3JpdGUoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdCcpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBwb3NpeC5wd3JpdGUoZmQsIGIneHgnLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ3R4eHQnLCBwb3NpeC5yZWFkKGZkLCA0KSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3Bvc2l4X2ZhbGxvY2F0ZScpLAorICAgICAgICAidGVzdCBuZWVkcyBwb3NpeC5wb3NpeF9mYWxsb2NhdGUoKSIpCisgICAgZGVmIHRlc3RfcG9zaXhfZmFsbG9jYXRlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgucG9zaXhfZmFsbG9jYXRlKGZkLCAwLCAxMCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgaW5zdDoKKyAgICAgICAgICAgICMgaXNzdWUxMDgxMiwgWkZTIGRvZXNuJ3QgYXBwZWFyIHRvIHN1cHBvcnQgcG9zaXhfZmFsbG9jYXRlLAorICAgICAgICAgICAgIyBzbyBza2lwIFNvbGFyaXMtYmFzZWQgc2luY2UgdGhleSBhcmUgbGlrZWx5IHRvIGhhdmUgWkZTLgorICAgICAgICAgICAgaWYgaW5zdC5lcnJubyAhPSBlcnJuby5FSU5WQUwgb3Igbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJzdW5vcyIpOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwb3NpeF9mYWR2aXNlJyksCisgICAgICAgICJ0ZXN0IG5lZWRzIHBvc2l4LnBvc2l4X2ZhZHZpc2UoKSIpCisgICAgZGVmIHRlc3RfcG9zaXhfZmFkdmlzZShzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgucG9zaXhfZmFkdmlzZShmZCwgMCwgMCwgcG9zaXguUE9TSVhfRkFEVl9XSUxMTkVFRCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZmQsICJ0ZXN0IG5lZWRzIGZkIHN1cHBvcnQgaW4gb3MudXRpbWUiKQorICAgIGRlZiB0ZXN0X3V0aW1lX3dpdGhfZmQoc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChub3csIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChOb25lLCBub3cpKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIChpbnQobm93KSwgaW50KG5vdykpKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIChub3csIG5vdykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChub3csIG5vdyksIG5zPShub3csIG5vdykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChub3csIDApLCBucz0oTm9uZSwgTm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChOb25lLCBOb25lKSwgbnM9KG5vdywgMCkpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgKGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIG5zPShpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3MsICJ0ZXN0IG5lZWRzIGZvbGxvd19zeW1saW5rcyBzdXBwb3J0IGluIG9zLnV0aW1lIikKKyAgICBkZWYgdGVzdF91dGltZV9ub2ZvbGxvd19zeW1saW5rcyhzZWxmKToKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIE5vbmUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBOb25lKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKG5vdywgTm9uZSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBub3cpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKG5vdywgbm93KSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3dyaXRldicpLCAidGVzdCBuZWVkcyBwb3NpeC53cml0ZXYoKSIpCisgICAgZGVmIHRlc3Rfd3JpdGV2KHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRldihmZCwgKGIndGVzdDEnLCBiJ3R0MicsIGIndDMnKSkKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYid0ZXN0MXR0MnQzJywgcG9zaXgucmVhZChmZCwgMTApKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncmVhZHYnKSwgInRlc3QgbmVlZHMgcG9zaXgucmVhZHYoKSIpCisgICAgZGVmIHRlc3RfcmVhZHYoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdDF0dDJ0MycpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBidWYgPSBbYnl0ZWFycmF5KGkpIGZvciBpIGluIFs1LCAzLCAyXV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXgucmVhZHYoZmQsIGJ1ZiksIDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYid0ZXN0MScsIGIndHQyJywgYid0MyddLCBbYnl0ZXMoaSkgZm9yIGkgaW4gYnVmXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCiAgICAgZGVmIHRlc3RfZHVwKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnZHVwJyk6CiAgICAgICAgICAgICBmcCA9IG9wZW4oc3VwcG9ydC5URVNURk4pCkBAIC0xNjcsNiArMzE1LDEzIEBACiAgICAgICAgICAgICAgICAgZnAxLmNsb3NlKCkKICAgICAgICAgICAgICAgICBmcDIuY2xvc2UoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ09fQ0xPRVhFQycpLCAibmVlZHMgb3MuT19DTE9FWEVDIikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDIzKQorICAgIGRlZiB0ZXN0X29zY2xvZXhlYyhzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWXxvcy5PX0NMT0VYRUMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorCiAgICAgZGVmIHRlc3Rfb3NleGxvY2soc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICJPX0VYTE9DSyIpOgogICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLApAQCAtMjAzLDEyICszNTgsMjkgQEAKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguZnN0YXQoZnAuZmlsZW5vKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGZwLmZpbGVubygpKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBmbG9hdChmcC5maWxlbm8oKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3N0YXQoc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdzdGF0Jyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgJ2NhblwndCBzcGVjaWZ5IE5vbmUgZm9yIHBhdGggYXJndW1lbnQnLAorICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBsaXN0KHN1cHBvcnQuVEVTVEZOKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ21rZmlmbycpLCAiZG9uJ3QgaGF2ZSBta2ZpZm8oKSIpCiAgICAgZGVmIHRlc3RfbWtmaWZvKHNlbGYpOgpAQCAtMjY1LDcgKzQzNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LmNob3duLCBzdXBwb3J0LlRFU1RGTiwgLTEsIC0xKQogCiAgICAgICAgICMgcmUtY3JlYXRlIHRoZSBmaWxlCi0gICAgICAgIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykuY2xvc2UoKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLl90ZXN0X2FsbF9jaG93bl9jb21tb24ocG9zaXguY2hvd24sIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2ZjaG93bicpLCAidGVzdCBuZWVkcyBvcy5mY2hvd24oKSIpCkBAIC0yOTMsMTMgKzQ2NSwzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguY2hkaXIsIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfbGlzdGRpcihzZWxmKToKLSAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2xpc3RkaXInKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0LlRFU1RGTiBpbiBwb3NpeC5saXN0ZGlyKG9zLmN1cmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0LlRFU1RGTiBpbiBwb3NpeC5saXN0ZGlyKG9zLmN1cmRpcikpCiAKICAgICBkZWYgdGVzdF9saXN0ZGlyX2RlZmF1bHQoc2VsZik6Ci0gICAgICAgICMgV2hlbiBsaXN0ZGlyIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50LCBpdCdzIHRoZSBzYW1lIGFzIGxpc3RkaXIob3MuY3VyZGlyKQotICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnbGlzdGRpcicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIoKSkKKyAgICAgICAgIyBXaGVuIGxpc3RkaXIgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnQsCisgICAgICAgICMgaXQncyB0aGUgc2FtZSBhcyBsaXN0ZGlyKG9zLmN1cmRpcikuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0LlRFU1RGTiBpbiBwb3NpeC5saXN0ZGlyKCkpCisKKyAgICBkZWYgdGVzdF9saXN0ZGlyX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFdoZW4gbGlzdGRpciBpcyBjYWxsZWQgd2l0aCBhIGJ5dGVzIG9iamVjdCwKKyAgICAgICAgIyB0aGUgcmV0dXJuZWQgc3RyaW5ncyBhcmUgb2YgdHlwZSBieXRlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSBpbiBwb3NpeC5saXN0ZGlyKGInLicpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MocG9zaXgubGlzdGRpciBpbiBvcy5zdXBwb3J0c19mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBuZWVkcyBmZCBzdXBwb3J0IGZvciBwb3NpeC5saXN0ZGlyKCkiKQorICAgIGRlZiB0ZXN0X2xpc3RkaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBvc2l4LmNsb3NlLCBmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoJy4nKSksCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcihmKSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmZCBvZmZzZXQgd2FzIHJlc2V0IChpc3N1ZSAjMTM3MzkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcignLicpKSwKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKGYpKQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYWNjZXNzKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnYWNjZXNzJyk6CkBAIC0zMjEsNiArNTEyLDM2IEBACiAgICAgICAgICAgICBvcy5jbG9zZShyZWFkZXIpCiAgICAgICAgICAgICBvcy5jbG9zZSh3cml0ZXIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAncGlwZTInKSwgInRlc3QgbmVlZHMgb3MucGlwZTIoKSIpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyNykKKyAgICBkZWYgdGVzdF9waXBlMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5waXBlMiwgJ0RFQURCRUVGJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5waXBlMiwgMCwgMCkKKworICAgICAgICAjIHRyeSBjYWxsaW5nIHdpdGggZmxhZ3MgPSAwLCBsaWtlIG9zLnBpcGUoKQorICAgICAgICByLCB3ID0gb3MucGlwZTIoMCkKKyAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgb3MuY2xvc2UodykKKworICAgICAgICAjIHRlc3QgZmxhZ3MKKyAgICAgICAgciwgdyA9IG9zLnBpcGUyKG9zLk9fQ0xPRVhFQ3xvcy5PX05PTkJMT0NLKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKHIsIGZjbnRsLkZfR0VURkQpICYgZmNudGwuRkRfQ0xPRVhFQykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKHcsIGZjbnRsLkZfR0VURkQpICYgZmNudGwuRkRfQ0xPRVhFQykKKyAgICAgICAgIyB0cnkgcmVhZGluZyBmcm9tIGFuIGVtcHR5IHBpcGU6IHRoaXMgc2hvdWxkIGZhaWwsIG5vdCBibG9jaworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5yZWFkLCByLCAxKQorICAgICAgICAjIHRyeSBhIHdyaXRlIGJpZyBlbm91Z2ggdG8gZmlsbC11cCB0aGUgcGlwZTogdGhpcyBzaG91bGQgZWl0aGVyCisgICAgICAgICMgZmFpbCBvciBwZXJmb3JtIGEgcGFydGlhbCB3cml0ZSwgbm90IGJsb2NrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKHcsIGIneCcgKiBzdXBwb3J0LlBJUEVfTUFYX1NJWkUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgSXNzdWUgMTU5ODkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgb3MucGlwZTIsIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgb3MucGlwZTIsIF90ZXN0Y2FwaS5VSU5UX01BWCArIDEpCisKICAgICBkZWYgdGVzdF91dGltZShzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ3V0aW1lJyk6CiAgICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQpAQCAtMzMxLDEzICs1NTIsMTQgQEAKICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSkKICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpKQogCi0gICAgZGVmIF90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYsIGNoZmxhZ3NfZnVuYywgdGFyZ2V0X2ZpbGUpOgorICAgIGRlZiBfdGVzdF9jaGZsYWdzX3JlZ3VsYXJfZmlsZShzZWxmLCBjaGZsYWdzX2Z1bmMsIHRhcmdldF9maWxlLCAqKmt3YXJncyk6CiAgICAgICAgIHN0ID0gb3Muc3RhdCh0YXJnZXRfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3QsICdzdF9mbGFncycpKQogCiAgICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgorICAgICAgICBmbGFncyA9IHN0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hmbGFnc19mdW5jKHRhcmdldF9maWxlLCBzdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFKQorICAgICAgICAgICAgY2hmbGFnc19mdW5jKHRhcmdldF9maWxlLCBmbGFncywgKiprd2FyZ3MpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FT1BOT1RTVVBQOgogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0zNjEsNiArNTgzLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbGNoZmxhZ3MnKSwgJ3Rlc3QgbmVlZHMgb3MubGNoZmxhZ3MoKScpCiAgICAgZGVmIHRlc3RfbGNoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHBvc2l4LmxjaGZsYWdzLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5fdGVzdF9jaGZsYWdzX3JlZ3VsYXJfZmlsZShwb3NpeC5jaGZsYWdzLCBzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2xjaGZsYWdzJyksICd0ZXN0IG5lZWRzIG9zLmxjaGZsYWdzKCknKQogICAgIGRlZiB0ZXN0X2xjaGZsYWdzX3N5bWxpbmsoc2VsZik6CkBAIC0zNzIsMjUgKzU5NSwyOCBAQAogICAgICAgICBzZWxmLnRlYXJkb3duX2ZpbGVzLmFwcGVuZChfRFVNTVlfU1lNTElOSykKICAgICAgICAgZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQogCi0gICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwb3NpeC5sY2hmbGFncyhfRFVNTVlfU1lNTElOSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIG1zZyA9ICdjaGZsYWcgVUZfSU1NVVRBQkxFIG5vdCBzdXBwb3J0ZWQgYnkgdW5kZXJseWluZyBmcycKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICBkZWYgY2hmbGFnc19ub2ZvbGxvdyhwYXRoLCBmbGFncyk6CisgICAgICAgICAgICByZXR1cm4gcG9zaXguY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5ld190ZXN0Zm5fc3QgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgbmV3X2R1bW15X3N5bWxpbmtfc3QgPSBvcy5sc3RhdChfRFVNTVlfU1lNTElOSykKKyAgICAgICAgZm9yIGZuIGluIChwb3NpeC5sY2hmbGFncywgY2hmbGFnc19ub2ZvbGxvdyk6CisgICAgICAgICAgICAjIFpGUyByZXR1cm5zIEVPUE5PVFNVUFAgd2hlbiBhdHRlbXB0aW5nIHRvIHNldCBmbGFnIFVGX0lNTVVUQUJMRS4KKyAgICAgICAgICAgIGZsYWdzID0gZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm4oX0RVTU1ZX1NZTUxJTkssIGZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FT1BOT1RTVVBQOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIG1zZyA9ICdjaGZsYWcgVUZfSU1NVVRBQkxFIG5vdCBzdXBwb3J0ZWQgYnkgdW5kZXJseWluZyBmcycKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1zZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXdfdGVzdGZuX3N0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rmbl9zdC5zdF9mbGFncywgbmV3X3Rlc3Rmbl9zdC5zdF9mbGFncykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHBvc2l4LmxjaGZsYWdzKF9EVU1NWV9TWU1MSU5LLCBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdGZuX3N0LnN0X2ZsYWdzLCBuZXdfdGVzdGZuX3N0LnN0X2ZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2R1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZuKF9EVU1NWV9TWU1MSU5LLCBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQogCiAgICAgZGVmIHRlc3RfZW52aXJvbihzZWxmKToKICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtNDM4LDEzICs2NjQsMjIgQEAKICAgICAgICAgICAgICAgICBvcy5jaGRpcihjdXJkaXIpCiAgICAgICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoYmFzZV9wYXRoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2dldGdyb3VwbGlzdCcpLCAidGVzdCBuZWVkcyBwb3NpeC5nZXRncm91cGxpc3QoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwd2QsICdnZXRwd3VpZCcpLCAidGVzdCBuZWVkcyBwd2QuZ2V0cHd1aWQoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHVpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXR1aWQoKSIpCisgICAgZGVmIHRlc3RfZ2V0Z3JvdXBsaXN0KHNlbGYpOgorICAgICAgICB1c2VyID0gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKVswXQorICAgICAgICBncm91cCA9IHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSlbM10KKyAgICAgICAgc2VsZi5hc3NlcnRJbihncm91cCwgcG9zaXguZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKSkKKworCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGVnaWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0ZWdpZCgpIikKICAgICBkZWYgdGVzdF9nZXRncm91cHMoc2VsZik6CiAgICAgICAgIHdpdGggb3MucG9wZW4oJ2lkIC1HJykgYXMgaWRnOgogICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQogCi0gICAgICAgIGlmIHJldCAhPSBOb25lIG9yIG5vdCBncm91cHM6CisgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgZ3JvdXBzOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm5lZWQgd29ya2luZyAnaWQgLUcnIikKIAogICAgICAgICAjICdpZCAtRycgYW5kICdvcy5nZXRncm91cHMoKScgc2hvdWxkIHJldHVybiB0aGUgc2FtZQpAQCAtNDU1LDYgKzY5MCwzNDggQEAKICAgICAgICAgICAgICAgICBzZXQoW2ludCh4KSBmb3IgeCBpbiBncm91cHMuc3BsaXQoKV0pLAogICAgICAgICAgICAgICAgIHNldChwb3NpeC5nZXRncm91cHMoKSArIFtwb3NpeC5nZXRlZ2lkKCldKSkKIAorICAgICMgdGVzdHMgZm9yIHRoZSBwb3NpeCAqYXQgZnVuY3Rpb25zIGZvbGxvdworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgZm9yIG9zLmFjY2VzcygpIikKKyAgICBkZWYgdGVzdF9hY2Nlc3NfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5hY2Nlc3Moc3VwcG9ydC5URVNURk4sIG9zLlJfT0ssIGRpcl9mZD1mKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5jaG1vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmNobW9kKCkiKQorICAgIGRlZiB0ZXN0X2NobW9kX2Rpcl9mZChzZWxmKToKKyAgICAgICAgb3MuY2htb2Qoc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNobW9kKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IsIGRpcl9mZD1mKQorCisgICAgICAgICAgICBzID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXSAmIHN0YXQuU19JUldYVSwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmNob3duIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MuY2hvd24oKSIpCisgICAgZGVmIHRlc3RfY2hvd25fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNob3duKHN1cHBvcnQuVEVTVEZOLCBvcy5nZXR1aWQoKSwgb3MuZ2V0Z2lkKCksIGRpcl9mZD1mKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5zdGF0KCkiKQorICAgIGRlZiB0ZXN0X3N0YXRfZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIG91dGZpbGU6CisgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCJ0ZXN0bGluZVxuIikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMxID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9cG9zaXguZ2V0Y3dkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWZsb2F0KGYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD0xMCoqMjApCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy51dGltZSgpIikKKyAgICBkZWYgdGVzdF91dGltZV9kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBOb25lLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCBub3csIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBOb25lKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKG5vdywgTm9uZSksIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBub3cpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCAieCIpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKG5vdywgbm93KSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwKKyAgICAgICAgICAgICAgICAgICAgKGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisKKyAgICAgICAgICAgICMgdHJ5IGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyCisgICAgICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyB3aG9vcHMhICB1c2luZyBib3RoIHRvZ2V0aGVyIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4KKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmxpbmsoKSIpCisgICAgZGVmIHRlc3RfbGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubGluayhzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4gKyAnbGluaycsIHNyY19kaXJfZmQ9ZiwgZHN0X2Rpcl9mZD1mKQorICAgICAgICAgICAgIyBzaG91bGQgaGF2ZSBzYW1lIGlub2RlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKVsxXSwKKyAgICAgICAgICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKVsxXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm1rZGlyIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubWtkaXIoKSIpCisgICAgZGVmIHRlc3RfbWtkaXJfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rZGlyKHN1cHBvcnQuVEVTVEZOICsgJ2RpcicsIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiArICdkaXInKSAjIHNob3VsZCBub3QgcmFpc2UgZXhjZXB0aW9uCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoc3VwcG9ydC5URVNURk4gKyAnZGlyJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKChvcy5ta25vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQpIGFuZCBoYXNhdHRyKHN0YXQsICdTX0lGSUZPJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgYm90aCBzdGF0LlNfSUZJRk8gYW5kIGRpcl9mZCBzdXBwb3J0IGZvciBvcy5ta25vZCgpIikKKyAgICBkZWYgdGVzdF9ta25vZF9kaXJfZmQoc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBta25vZGF0KCkgdG8gY3JlYXRlIGEgRklGTyAodGhlIG9ubHkgdXNlIHNwZWNpZmllZAorICAgICAgICAjIGJ5IFBPU0lYKS4KKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIG1vZGUgPSBzdGF0LlNfSUZJRk8gfCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5ta25vZChzdXBwb3J0LlRFU1RGTiwgbW9kZSwgMCwgZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAjIFNvbWUgb2xkIHN5c3RlbXMgZG9uJ3QgYWxsb3cgdW5wcml2aWxlZ2VkIHVzZXJzIHRvIHVzZQorICAgICAgICAgICAgIyBta25vZCgpLCBvciBvbmx5IHN1cHBvcnQgY3JlYXRpbmcgZGV2aWNlIG5vZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLmVycm5vLCAoZXJybm8uRVBFUk0sIGVycm5vLkVJTlZBTCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdC5TX0lTRklGTyhwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5vcGVuIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Mub3BlbigpIikKKyAgICBkZWYgdGVzdF9vcGVuX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBvdXRmaWxlOgorICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgidGVzdGxpbmVcbiIpCisgICAgICAgIGEgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgYiA9IHBvc2l4Lm9wZW4oc3VwcG9ydC5URVNURk4sIHBvc2l4Lk9fUkRPTkxZLCBkaXJfZmQ9YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gcG9zaXgucmVhZChiLCA5KS5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RsaW5lXG4iLCByZXMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShhKQorICAgICAgICAgICAgcG9zaXguY2xvc2UoYikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnJlYWRsaW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MucmVhZGxpbmsoKSIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBvcy5zeW1saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKSwKKyAgICAgICAgICAgICAgICBwb3NpeC5yZWFkbGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgZGlyX2ZkPWYpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucmVuYW1lIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MucmVuYW1lKCkiKQorICAgIGRlZiB0ZXN0X3JlbmFtZV9kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicpCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgucmVuYW1lKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicsIHN1cHBvcnQuVEVTVEZOLCBzcmNfZGlyX2ZkPWYsIGRzdF9kaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcG9zaXgucmVuYW1lKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pICMgc2hvdWxkIG5vdCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zeW1saW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Muc3ltbGluaygpIikKKyAgICBkZWYgdGVzdF9zeW1saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5zeW1saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKSwgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51bmxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy51bmxpbmsoKSIpCisgICAgZGVmIHRlc3RfdW5saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpCisgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4gKyAnZGVsJykgIyBzaG91bGQgbm90IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnZGVsJywgZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubWtmaWZvIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubWtmaWZvKCkiKQorICAgIGRlZiB0ZXN0X21rZmlmb19kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rZmlmbyhzdXBwb3J0LlRFU1RGTiwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0LlNfSVNGSUZPKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIHJlcXVpcmVzX3NjaGVkX2ggPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF95aWVsZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBoYXZlIHNjaGVkdWxpbmcgc3VwcG9ydCIpCisgICAgcmVxdWlyZXNfc2NoZWRfYWZmaW5pdHkgPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9zZXRhZmZpbml0eScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgaGF2ZSBzY2hlZCBhZmZpbml0eSBzdXBwb3J0IikKKworICAgIEByZXF1aXJlc19zY2hlZF9oCisgICAgZGVmIHRlc3Rfc2NoZWRfeWllbGQoc2VsZik6CisgICAgICAgICMgVGhpcyBoYXMgbm8gZXJyb3IgY29uZGl0aW9ucyAoYXQgbGVhc3Qgb24gTGludXgpLgorICAgICAgICBwb3NpeC5zY2hlZF95aWVsZCgpCisKKyAgICBAcmVxdWlyZXNfc2NoZWRfaAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9nZXRfcHJpb3JpdHlfbWF4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIHNjaGVkX2dldF9wcmlvcml0eV9tYXgoKSIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcHJpb3JpdHkoc2VsZik6CisgICAgICAgICMgUm91bmQtcm9iaW4gdXN1YWxseSBoYXMgaW50ZXJlc3RpbmcgcHJpb3JpdGllcy4KKyAgICAgICAgcG9sID0gcG9zaXguU0NIRURfUlIKKyAgICAgICAgbG8gPSBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbCkKKyAgICAgICAgaGkgPSBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGxvLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoaSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChoaSwgbG8pCisgICAgICAgICMgT1NYIGV2aWRlbnRseSBqdXN0IHJldHVybnMgMTUgd2l0aG91dCBjaGVja2luZyB0aGUgYXJndW1lbnQuCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9taW4sIC0yMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9tYXgsIC0yMykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9zZXRzY2hlZHVsZXInKSwgImNhbid0IGNoYW5nZSBzY2hlZHVsZXIiKQorICAgIGRlZiB0ZXN0X2dldF9hbmRfc2V0X3NjaGVkdWxlcl9hbmRfcGFyYW0oc2VsZik6CisgICAgICAgIHBvc3NpYmxlX3NjaGVkdWxlcnMgPSBbc2NoZWQgZm9yIG5hbWUsIHNjaGVkIGluIHBvc2l4Ll9fZGljdF9fLml0ZW1zKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIlNDSEVEXyIpXQorICAgICAgICBtaW5lID0gcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyKDApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obWluZSwgcG9zc2libGVfc2NoZWR1bGVycykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFyZW50ID0gcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyKG9zLmdldHBwaWQoKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBFUk06CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGFyZW50LCBwb3NzaWJsZV9zY2hlZHVsZXJzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRwYXJhbSwgLTEpCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfZ2V0cGFyYW0oMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHBhcmFtLnNjaGVkX3ByaW9yaXR5LCBpbnQpCisKKyAgICAgICAgIyBQT1NJWCBzdGF0ZXMgdGhhdCBjYWxsaW5nIHNjaGVkX3NldHBhcmFtKCkgb3Igc2NoZWRfc2V0c2NoZWR1bGVyKCkgb24KKyAgICAgICAgIyBhIHByb2Nlc3Mgd2l0aCBhIHNjaGVkdWxpbmcgcG9saWN5IG90aGVyIHRoYW4gU0NIRURfRklGTyBvciBTQ0hFRF9SUgorICAgICAgICAjIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQ6IE5ldEJTRCBhbmQgRnJlZUJTRCBjYW4gcmV0dXJuIEVJTlZBTC4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnZnJlZWJzZCcsICduZXRic2QnKSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcG9zaXguc2NoZWRfc2V0c2NoZWR1bGVyKDAsIG1pbmUsIHBhcmFtKQorICAgICAgICAgICAgICAgIHBvc2l4LnNjaGVkX3NldHBhcmFtKDAsIHBhcmFtKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQRVJNOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIC0xLCBwYXJhbSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIC0xLCBtaW5lLCBwYXJhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIDAsIG1pbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIDQzKQorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIHBhcmFtKQorICAgICAgICBsYXJnZSA9IDIxNDc0ODM2NDcwMAorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKGxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHk9LWxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAic2NoZWRfcnJfZ2V0X2ludGVydmFsIiksICJubyBmdW5jdGlvbiIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcnJfZ2V0X2ludGVydmFsKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbnRlcnZhbCA9IHBvc2l4LnNjaGVkX3JyX2dldF9pbnRlcnZhbCgwKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBUaGlzIGxpa2VseSBtZWFucyB0aGF0IHNjaGVkX3JyX2dldF9pbnRlcnZhbCBpcyBvbmx5IHZhbGlkIGZvcgorICAgICAgICAgICAgIyBwcm9jZXNzZXMgd2l0aCB0aGUgU0NIRURfUlIgc2NoZWR1bGVyIGluIGVmZmVjdC4KKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJvbmx5IHdvcmtzIG9uIFNDSEVEX1JSIHByb2Nlc3NlcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbnRlcnZhbCwgZmxvYXQpCisgICAgICAgICMgUmVhc29uYWJsZSBjb25zdHJhaW50cywgSSB0aGluay4KKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoaW50ZXJ2YWwsIDAuKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoaW50ZXJ2YWwsIDEuKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2FmZmluaXR5CisgICAgZGVmIHRlc3Rfc2NoZWRfZ2V0YWZmaW5pdHkoc2VsZik6CisgICAgICAgIG1hc2sgPSBwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSgwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobWFzaywgc2V0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4obWFzayksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldGFmZmluaXR5LCAtMSkKKyAgICAgICAgZm9yIGNwdSBpbiBtYXNrOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNwdSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoY3B1LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGNwdSwgMSA8PCAzMikKKworICAgIEByZXF1aXJlc19zY2hlZF9hZmZpbml0eQorICAgIGRlZiB0ZXN0X3NjaGVkX3NldGFmZmluaXR5KHNlbGYpOgorICAgICAgICBtYXNrID0gcG9zaXguc2NoZWRfZ2V0YWZmaW5pdHkoMCkKKyAgICAgICAgaWYgbGVuKG1hc2spID4gMToKKyAgICAgICAgICAgICMgRW1wdHkgbWFza3MgYXJlIGZvcmJpZGRlbgorICAgICAgICAgICAgbWFzay5wb3AoKQorICAgICAgICBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSgwLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnNjaGVkX2dldGFmZmluaXR5KDApLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgMCwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAwLCBbLTEwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIDAsIFsxPDwxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgLTEsIG1hc2spCisKKyAgICBkZWYgdGVzdF9ydGxkX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBjaGVjayBwcmVzZW5jZSBvZiBtYWpvciBSVExEXyogY29uc3RhbnRzCisgICAgICAgIHBvc2l4LlJUTERfTEFaWQorICAgICAgICBwb3NpeC5SVExEX05PVworICAgICAgICBwb3NpeC5SVExEX0dMT0JBTAorICAgICAgICBwb3NpeC5SVExEX0xPQ0FMCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnU0VFS19IT0xFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgYW4gT1MgdGhhdCByZXBvcnRzIGZpbGUgaG9sZXMiKQorICAgIGRlZiB0ZXN0X2ZzX2hvbGVzKHNlbGYpOgorICAgICAgICAjIEV2ZW4gaWYgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCByZXBvcnQgaG9sZXMsCisgICAgICAgICMgaWYgdGhlIE9TIHN1cHBvcnRzIGl0IHRoZSBTRUVLXyogY29uc3RhbnRzCisgICAgICAgICMgd2lsbCBiZSBkZWZpbmVkIGFuZCB3aWxsIGhhdmUgYSBjb25zaXN0ZW50CisgICAgICAgICMgYmVoYXZpb3VyOgorICAgICAgICAjIG9zLlNFRUtfREFUQSA9IGN1cnJlbnQgcG9zaXRpb24KKyAgICAgICAgIyBvcy5TRUVLX0hPTEUgPSBlbmQgb2YgZmlsZSBwb3NpdGlvbgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyK2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGIiaGVsbG8iKQorICAgICAgICAgICAgZnAuZmx1c2goKQorICAgICAgICAgICAgc2l6ZSA9IGZwLnRlbGwoKQorICAgICAgICAgICAgZm5vID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIHRyeSA6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2l6ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgb3MubHNlZWsoZm5vLCBpLCBvcy5TRUVLX0RBVEEpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzaXplLCBvcy5sc2Vlayhmbm8sIGksIG9zLlNFRUtfSE9MRSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubHNlZWssIGZubywgc2l6ZSwgb3MuU0VFS19EQVRBKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmxzZWVrLCBmbm8sIHNpemUsIG9zLlNFRUtfSE9MRSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIDoKKyAgICAgICAgICAgICAgICAjIFNvbWUgT1NzIGNsYWltIHRvIHN1cHBvcnQgU0VFS19IT0xFL1NFRUtfREFUQQorICAgICAgICAgICAgICAgICMgYnV0IGl0IGlzIG5vdCB0cnVlLgorICAgICAgICAgICAgICAgICMgRm9yIGluc3RhbmNlOgorICAgICAgICAgICAgICAgICMgaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL3BpcGVybWFpbC9mcmVlYnNkLWFtZDY0LzIwMTItSmFudWFyeS8wMTQzMzIuaHRtbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJPU0Vycm9yIHJhaXNlZCEiKQorCiBjbGFzcyBQb3NpeEdyb3Vwc1Rlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00OTAsOSArMTA2NywxMSBAQAogICAgICAgICAgICAgcG9zaXguc2V0Z3JvdXBzKGdyb3VwcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGdyb3VwcywgcG9zaXguZ2V0Z3JvdXBzKCkpCiAKLQogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDU5OWM4NWEuLmExNmE5NTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAotCiBpbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgb3MKK2ltcG9ydCBwb3NpeHBhdGgKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgcmVhbHBhdGgsIGFic3BhdGgsIGRpcm5hbWUsIGJhc2VuYW1lCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKIAogdHJ5OgogICAgIGltcG9ydCBwb3NpeApAQCAtMjQ1LDcgKzI0NSw5IEBACiAKICAgICBkZWYgdGVzdF9pc21vdW50KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzKHBvc2l4cGF0aC5pc21vdW50KCIvIiksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMocG9zaXhwYXRoLmlzbW91bnQoYiIvIiksIFRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudChiIi8iKSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2lzbW91bnRfbm9uX2V4aXN0ZW50KHNlbGYpOgogICAgICAgICAjIE5vbi1leGlzdGVudCBtb3VudHBvaW50LgpAQCAtNTIyLDE0ICs1MjQsMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeHBhdGguc2FtZW9wZW5maWxlKGEuZmlsZW5vKCksIGIuZmlsZW5vKCkpKQogCiAKLWNsYXNzIFBvc2l4Q29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QpOgorY2xhc3MgUG9zaXhDb21tb25UZXN0KHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhdGhtb2R1bGUgPSBwb3NpeHBhdGgKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NhbWVmaWxlJywgJ3NhbWVvcGVuZmlsZScsICdzYW1lc3RhdCddCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4UGF0aFRlc3QsIFBvc2l4Q29tbW9uVGVzdCkKLQotCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQppbmRleCAwYzkzZDBlLi5kNDkyZDc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQpAQCAtMjE5LDYgKzIxOSw4IEBACiAgb3RoZXJzLnNob3VsZC5ub3QuYmU6IGxpa2UudGhpc30iIiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEb3R0ZWRQcmV0dHlQcmludGVyKCkucGZvcm1hdChvKSwgZXhwKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgICNTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzOTA3CiAgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zZXRfcmVwcnMoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGNyZWF0ZXMgYSBjb21wbGV4IGFycmFuZ2VtZW50IG9mIGZyb3plbnNldHMgYW5kCkBAIC0yNDEsMTAgKzI0MywxMiBAQAogICAgICAgICAjIENvbnNlcXVlbnRseSwgdGhpcyB0ZXN0IGlzIGZyYWdpbGUgYW5kCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgU21hbGwgY2hhbmdlcyB0byBQeXRob24ncyBzb3J0CiAgICAgICAgICMgYWxnb3JpdGhtIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwgd2hlbiBpdCBzaG91bGQgcGFzcy4KKyAgICAgICAgIyBYWFggT3IgY2hhbmdlcyB0byB0aGUgZGljdGlvbmFyeSBpbXBsbWVudGF0aW9uLi4uCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQoKSksICdzZXQoKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KHJhbmdlKDMpKSksICd7MCwgMSwgMn0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldCgpKSwgJ2Zyb3plbnNldCgpJykKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldChyYW5nZSgzKSkpLCAnZnJvemVuc2V0KHswLCAxLCAyfSknKQogICAgICAgICBjdWJlX3JlcHJfdGd0ID0gIiIiXAoge2Zyb3plbnNldCgpOiBmcm96ZW5zZXQoe2Zyb3plbnNldCh7Mn0pLCBmcm96ZW5zZXQoezB9KSwgZnJvemVuc2V0KHsxfSl9KSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CmluZGV4IDhkMzdiYmMuLjlkNmRiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcmludC5weQpAQCAtMTExLDYgKzExMSwzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHByaW50LCAnJywgZW5kPTMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwcmludCwgJycsIGZpbGU9JycpCiAKKyAgICBkZWYgdGVzdF9wcmludF9mbHVzaChzZWxmKToKKyAgICAgICAgIyBvcGVyYXRpb24gb2YgdGhlIGZsdXNoIGZsYWcKKyAgICAgICAgY2xhc3MgZmlsZWxpa2UoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXR0ZW4gPSAnJworICAgICAgICAgICAgICAgIHNlbGYuZmx1c2hlZCA9IDAKKyAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdHRlbiArPSBzdHIKKyAgICAgICAgICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoZWQgKz0gMQorCisgICAgICAgIGYgPSBmaWxlbGlrZSgpCisgICAgICAgIHByaW50KDEsIGZpbGU9ZiwgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBwcmludCgyLCBmaWxlPWYsIGVuZD0nJywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcHJpbnQoMywgZmlsZT1mLCBmbHVzaD1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXR0ZW4sICcxMjNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mbHVzaGVkLCAyKQorCisgICAgICAgICMgZW5zdXJlIGV4Y2VwdGlvbnMgZnJvbSBmbHVzaCBhcmUgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgY2xhc3Mgbm9mbHVzaCgpOgorICAgICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHByaW50LCAxLCBmaWxlPW5vZmx1c2goKSwgZmx1c2g9VHJ1ZSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQcmludCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKaW5kZXggY2M2YTg3Mi4uNzI2ZDZmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CkBAIC0xMjgsNiArMTI4LDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLnNwYW0sIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICJuZXcgZG9jc3RyaW5nIikKIAorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X19faXNhYnN0cmFjdG1ldGhvZF9fZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgZm9yIHZhbCBpbiAoVHJ1ZSwgRmFsc2UsIFtdLCBbMV0sICcnLCAnMScpOgorICAgICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb28uX19pc2Fic3RyYWN0bWV0aG9kX18gPSB2YWwKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fLCBib29sKHZhbCkpCisKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fID0gTm90Qm9vbCgpCisgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQorICAgICAgICAgICAgQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18KKwogCiAjIElzc3VlIDU4OTA6IHN1YmNsYXNzZXMgb2YgcHJvcGVydHkgZG8gbm90IHByZXNlcnZlIG1ldGhvZCBfX2RvY19fIHN0cmluZ3MKIGNsYXNzIFByb3BlcnR5U3ViKHByb3BlcnR5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggNGQ0NzFkNS4uMjkyOTdmOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTIwNSw2ICsyMDUsNyBAQAogICAgICAgICBzZWxmLm9yaWdfc3Rkb3V0X2ZpbGVubyA9IHB0eS5TVERPVVRfRklMRU5PCiAgICAgICAgIHNlbGYub3JpZ19wdHlfc2VsZWN0ID0gcHR5LnNlbGVjdAogICAgICAgICBzZWxmLmZkcyA9IFtdICAjIEEgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzIHRvIGNsb3NlLgorICAgICAgICBzZWxmLmZpbGVzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19sZW5ndGhzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19yZXN1bHRzID0gW10KIApAQCAtMjEyLDYgKzIxMywxMSBAQAogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gc2VsZi5vcmlnX3N0ZGluX2ZpbGVubwogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IHNlbGYub3JpZ19zdGRvdXRfZmlsZW5vCiAgICAgICAgIHB0eS5zZWxlY3QgPSBzZWxmLm9yaWdfcHR5X3NlbGVjdAorICAgICAgICBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBmb3IgZmQgaW4gc2VsZi5mZHM6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCkBAIC0yMjMsNiArMjI5LDExIEBACiAgICAgICAgIHNlbGYuZmRzLmV4dGVuZChwaXBlX2ZkcykKICAgICAgICAgcmV0dXJuIHBpcGVfZmRzCiAKKyAgICBkZWYgX3NvY2tldHBhaXIoc2VsZik6CisgICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNlbGYuZmlsZXMuZXh0ZW5kKHNvY2tldHBhaXIpCisgICAgICAgIHJldHVybiBzb2NrZXRwYWlyCisKICAgICBkZWYgX21vY2tfc2VsZWN0KHNlbGYsIHJmZHMsIHdmZHMsIHhmZHMpOgogICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBJbmRleEVycm9yIHdoZW4gbm8gbW9yZSBleHBlY3RlZCBjYWxscyBleGlzdC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbGVjdF9yZmRzX2xlbmd0aHMucG9wKDApLCBsZW4ocmZkcykpCkBAIC0yMzQsOSArMjQ1LDcgQEAKICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBtb2NrX3N0ZG91dF9mZAogICAgICAgICBtb2NrX3N0ZGluX2ZkLCB3cml0ZV90b19zdGRpbl9mZCA9IHNlbGYuX3BpcGUoKQogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gbW9ja19zdGRpbl9mZAotICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQotICAgICAgICBmb3IgcyBpbiBzb2NrZXRwYWlyOgotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCiAKICAgICAgICAgIyBGZWVkIGRhdGEuICBTbWFsbGVyIHRoYW4gUElQRUJVRi4gIFRoZXNlIHdyaXRlcyB3aWxsIG5vdCBibG9jay4KQEAgLTI2NCw5ICsyNzMsNyBAQAogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IG1vY2tfc3Rkb3V0X2ZkCiAgICAgICAgIG1vY2tfc3RkaW5fZmQsIHdyaXRlX3RvX3N0ZGluX2ZkID0gc2VsZi5fcGlwZSgpCiAgICAgICAgIHB0eS5TVERJTl9GSUxFTk8gPSBtb2NrX3N0ZGluX2ZkCi0gICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCi0gICAgICAgIGZvciBzIGluIHNvY2tldHBhaXI6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KIAogICAgICAgICBvcy5jbG9zZShtYXN0ZXJzWzFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MWE1OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTAsMCArMSwzNDcgQEAKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCitpbXBvcnQgeG1sLnNheAorCitmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbAorZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCisKKwordHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQorCisjIEEgaGFuZHkgWE1MIHNuaXBwZXQsIGNvbnRhaW5pbmcgYXR0cmlidXRlcywgYSBuYW1lc3BhY2UgcHJlZml4LCBhbmQgYQorIyBzZWxmLWNsb3NpbmcgdGFnOgorU01BTExfU0FNUExFID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGRjPSJodHRwOi8vd3d3LnhtbC5jb20vYm9va3MiPgorPCEtLSBBIGNvbW1lbnQgLS0+Cis8dGl0bGU+SW50cm9kdWN0aW9uIHRvIFhTTDwvdGl0bGU+Cis8aHIvPgorPHA+PHhkYzphdXRob3IgeGRjOmF0dHJpYj0icHJlZml4ZWQgYXR0cmlidXRlIiBhdHRyaWI9Im90aGVyIGF0dHJpYiI+QS4gTmFtZXNwYWNlPC94ZGM6YXV0aG9yPjwvcD4KKzwvaHRtbD4iIiIKKworCitjbGFzcyBQdWxsRE9NVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGFyc2Uoc2VsZik6CisgICAgICAgICIiIk1pbmltYWwgdGVzdCBvZiBET01FdmVudFN0cmVhbS5wYXJzZSgpIiIiCisKKyAgICAgICAgIyBUaGlzIGp1c3QgdGVzdHMgdGhhdCBwYXJzaW5nIGZyb20gYSBzdHJlYW0gd29ya3MuIEFjdHVhbCBwYXJzZXIKKyAgICAgICAgIyBzZW1hbnRpY3MgYXJlIHRlc3RlZCB1c2luZyBwYXJzZVN0cmluZyB3aXRoIGEgbW9yZSBmb2N1c2VkIFhNTAorICAgICAgICAjIGZyYWdtZW50LgorCisgICAgICAgICMgVGVzdCB3aXRoIGEgZmlsZW5hbWU6CisgICAgICAgIGhhbmRsZXIgPSBwdWxsZG9tLnBhcnNlKHRzdGZpbGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChoYW5kbGVyLnN0cmVhbS5jbG9zZSkKKyAgICAgICAgbGlzdChoYW5kbGVyKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgZmlsZSBvYmplY3Q6CisgICAgICAgIHdpdGggb3Blbih0c3RmaWxlLCAicmIiKSBhcyBmaW46CisgICAgICAgICAgICBsaXN0KHB1bGxkb20ucGFyc2UoZmluKSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBET01FdmVudFN0cmVhbSBwYXJzaW5nIHNlbWFudGljcy4iIiIKKworICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIG5vZGUgaXMgYSBEb2N1bWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobm9kZSwgImNyZWF0ZUVsZW1lbnQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0RPQ1VNRU5ULCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0bWwiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG5vZGUuYXR0cmlidXRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgieG1sbnM6eGRjIikudmFsdWUsCisgICAgICAgICAgICAgICJodHRwOi8vd3d3LnhtbC5jb20vYm9va3MiKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KSAjIExpbmUgYnJlYWsKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgIyBYWFggLSBBIGNvbW1lbnQgc2hvdWxkIGJlIHJlcG9ydGVkIGhlcmUhCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgIyBMaW5lIGJyZWFrIGFmdGVyIHN3YWxsb3dlZCBjb21tZW50OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0aXRsZSIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgdGl0bGVfbm9kZSA9IG5vZGUKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSW50cm9kdWN0aW9uIHRvIFhTTCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRpdGxlIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGl0bGVfbm9kZSBpcyBub2RlKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImhyIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ4ZGM6YXV0aG9yIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieGRjOmF1dGhvciIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICAjIFhYWCBObyBFTkRfRE9DVU1FTlQgaXRlbSBpcyBldmVyIG9idGFpbmVkOgorICAgICAgICAjZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKworICAgIGRlZiB0ZXN0X2V4cGFuZEl0ZW0oc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBleHBhbmRJdGVtIHdvcmtzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICAjIExvb3AgdGhyb3VnaCB0aGUgbm9kZXMgdW50aWwgd2UgZ2V0IHRvIGEgInRpdGxlIiBzdGFydCB0YWc6CisgICAgICAgIGZvciBldnQsIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5TVEFSVF9FTEVNRU5UIGFuZCBpdGVtLnRhZ05hbWUgPT0gInRpdGxlIjoKKyAgICAgICAgICAgICAgICBpdGVtcy5leHBhbmROb2RlKGl0ZW0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaXRlbS5jaGlsZE5vZGVzKSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBcInRpdGxlXCIgZWxlbWVudCBkZXRlY3RlZCBpbiBTTUFMTF9TQU1QTEUhIikKKyAgICAgICAgIyBMb29wIHVudGlsIHdlIGdldCB0byB0aGUgbmV4dCBzdGFydC1lbGVtZW50OgorICAgICAgICBmb3IgZXZ0LCBub2RlIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSwKKyAgICAgICAgICAgICJleHBhbmROb2RlIGRpZCBub3QgbGVhdmUgRE9NRXZlbnRTdHJlYW0gaW4gdGhlIGNvcnJlY3Qgc3RhdGUuIikKKyAgICAgICAgIyBBdHRlbXB0IHRvIGV4cGFuZCBhIHN0YW5kYWxvbmUgZWxlbWVudDoKKyAgICAgICAgaXRlbXMuZXhwYW5kTm9kZShub2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlbXMpWzBdLCBwdWxsZG9tLkNIQVJBQ1RFUlMpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS50YWdOYW1lLCAicCIpCisgICAgICAgIGl0ZW1zLmV4cGFuZE5vZGUobm9kZSkKKyAgICAgICAgbmV4dChpdGVtcykgIyBTa2lwIGNoYXJhY3RlciBkYXRhCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS50YWdOYW1lLCAiaHRtbCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBuZXh0KGl0ZW1zKQorICAgICAgICBpdGVtcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGl0ZW1zLnBhcnNlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaXRlbXMuc3RyZWFtKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X2NvbW1lbnQoc2VsZik6CisgICAgICAgICIiIlB1bGxET00gZG9lcyBub3QgcmVjZWl2ZSAiY29tbWVudCIgZXZlbnRzLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICBmb3IgZXZ0LCBfIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uQ09NTUVOVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBjb21tZW50IHdhcyBlbmNvdW50ZXJlZCIpCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfZW5kX2RvY3VtZW50KHNlbGYpOgorICAgICAgICAiIiJQdWxsRE9NIGRvZXMgbm90IHJlY2VpdmUgImVuZC1kb2N1bWVudCIgZXZlbnRzLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICAjIFJlYWQgYWxsIG9mIHRoZSBub2RlcyB1cCB0byBhbmQgaW5jbHVkaW5nIDwvaHRtbD46CisgICAgICAgIGZvciBldnQsIG5vZGUgaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5FTkRfRUxFTUVOVCBhbmQgbm9kZS50YWdOYW1lID09ICJodG1sIjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFzc2VydCB0aGF0IHRoZSBuZXh0IG5vZGUgaXMgRU5EX0RPQ1VNRU5UOgorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmZhaWwoCisgICAgICAgICAgICAgICAgIlJhbiBvdXQgb2YgZXZlbnRzLCBidXQgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgRU5EX0RPQ1VNRU5UIikKKworCitjbGFzcyBUaG9yb3VnaFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIHB1bGxkb20uIiIiCisKKyAgICBkZWYgdGVzdF90aG9yb3VnaF9wYXJzZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzb21lIG9mIHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIFB1bGxET00uIiIiCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocHVsbGRvbS5wYXJzZShOb25lLCBwYXJzZXI9U0FYRXhlcmNpc2VyKCkpKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X3NheDJkb21fZmFpbChzZWxmKToKKyAgICAgICAgIiIiU0FYMkRPTSBjYW4idCBoYW5kbGUgYSBQSSBiZWZvcmUgdGhlIHJvb3QgZWxlbWVudC4iIiIKKyAgICAgICAgcGQgPSBTQVgyRE9NVGVzdEhlbHBlcihOb25lLCBTQVhFeGVyY2lzZXIoKSwgMTIpCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocGQpCisKKyAgICBkZWYgdGVzdF90aG9yb3VnaF9zYXgyZG9tKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNvbWUgb2YgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgU0FYMkRPTS4iIiIKKyAgICAgICAgcGQgPSBTQVgyRE9NVGVzdEhlbHBlcihOb25lLCBTQVgyRE9NRXhlcmNpc2VyKCksIDEyKQorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHBkLCBGYWxzZSkKKworICAgIGRlZiBfdGVzdF90aG9yb3VnaChzZWxmLCBwZCwgYmVmb3JlX3Jvb3Q9VHJ1ZSk6CisgICAgICAgICIiIlRlc3Qgc29tZSBvZiB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiB0aGUgcGFyc2VyLCB1c2luZyBhIG1vY2sKKyAgICAgICAgcGFyc2VyLiIiIgorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9ET0NVTUVOVCwgZXZ0KQorICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIG5vZGUgaXMgYSBEb2N1bWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobm9kZSwgImNyZWF0ZUVsZW1lbnQiKSkKKworICAgICAgICBpZiBiZWZvcmVfcm9vdDoKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYSBjb21tZW50Iiwgbm9kZS5kYXRhKQorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBldnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0YXJnZXQiLCBub2RlLnRhcmdldCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImRhdGEiLCBub2RlLmRhdGEpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHRtbCIsIG5vZGUudGFnTmFtZSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhIGNvbW1lbnQiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRhcmdldCIsIG5vZGUudGFyZ2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJkYXRhIiwgbm9kZS5kYXRhKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodG1sIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisKKworY2xhc3MgU0FYRXhlcmNpc2VyKG9iamVjdCk6CisgICAgIiIiQSBmYWtlIHNheCBwYXJzZXIgdGhhdCBjYWxscyBzb21lIG9mIHRoZSBoYXJkZXItdG8tcmVhY2ggc2F4IG1ldGhvZHMgdG8KKyAgICBlbnN1cmUgaXQgZW1pdHMgdGhlIGNvcnJlY3QgZXZlbnRzIiIiCisKKyAgICBkZWYgc2V0Q29udGVudEhhbmRsZXIoc2VsZiwgaGFuZGxlcik6CisgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisKKyAgICBkZWYgcGFyc2Uoc2VsZiwgXyk6CisgICAgICAgIGggPSBzZWxmLl9oYW5kbGVyCisgICAgICAgIGguc3RhcnREb2N1bWVudCgpCisKKyAgICAgICAgIyBUaGUgbmV4dCB0d28gaXRlbXMgZW5zdXJlIHRoYXQgaXRlbXMgcHJlY2VkaW5nIHRoZSBmaXJzdAorICAgICAgICAjIHN0YXJ0X2VsZW1lbnQgYXJlIHByb3Blcmx5IHN0b3JlZCBhbmQgZW1pdHRlZDoKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorCisgICAgICAgIGguc3RhcnRFbGVtZW50KCJodG1sIiwgQXR0cmlidXRlc0ltcGwoe30pKQorCisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKworICAgICAgICBoLnN0YXJ0RWxlbWVudCgicCIsIEF0dHJpYnV0ZXNJbXBsKHsiY2xhc3MiOiAicGFyYWNsYXNzIn0pKQorICAgICAgICBoLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBoLmVuZEVsZW1lbnQoInAiKQorICAgICAgICBoLmVuZEVsZW1lbnQoImh0bWwiKQorICAgICAgICBoLmVuZERvY3VtZW50KCkKKworICAgIGRlZiBzdHViKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIlN0dWIgbWV0aG9kLiBEb2VzIG5vdGhpbmcuIiIiCisgICAgICAgIHBhc3MKKyAgICBzZXRQcm9wZXJ0eSA9IHN0dWIKKyAgICBzZXRGZWF0dXJlID0gc3R1YgorCisKK2NsYXNzIFNBWDJET01FeGVyY2lzZXIoU0FYRXhlcmNpc2VyKToKKyAgICAiIiJUaGUgc2FtZSBhcyBTQVhFeGVyY2lzZXIsIGJ1dCB3aXRob3V0IHRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGFuZAorICAgIGNvbW1lbnQgYmVmb3JlIHRoZSByb290IGVsZW1lbnQsIGJlY2F1c2UgUzJEIGNhbiJ0IGhhbmRsZSBpdCIiIgorCisgICAgZGVmIHBhcnNlKHNlbGYsIF8pOgorICAgICAgICBoID0gc2VsZi5faGFuZGxlcgorICAgICAgICBoLnN0YXJ0RG9jdW1lbnQoKQorICAgICAgICBoLnN0YXJ0RWxlbWVudCgiaHRtbCIsIEF0dHJpYnV0ZXNJbXBsKHt9KSkKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorICAgICAgICBoLnN0YXJ0RWxlbWVudCgicCIsIEF0dHJpYnV0ZXNJbXBsKHsiY2xhc3MiOiAicGFyYWNsYXNzIn0pKQorICAgICAgICBoLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBoLmVuZEVsZW1lbnQoInAiKQorICAgICAgICBoLmVuZEVsZW1lbnQoImh0bWwiKQorICAgICAgICBoLmVuZERvY3VtZW50KCkKKworCitjbGFzcyBTQVgyRE9NVGVzdEhlbHBlcihwdWxsZG9tLkRPTUV2ZW50U3RyZWFtKToKKyAgICAiIiJBbGxvd3MgdXMgdG8gZHJpdmUgU0FYMkRPTSBmcm9tIGEgRE9NRXZlbnRTdHJlYW0uIiIiCisKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHNlbGYucHVsbGRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCisgICAgICAgICMgVGhpcyBjb250ZW50IGhhbmRsZXIgcmVsaWVzIG9uIG5hbWVzcGFjZSBzdXBwb3J0CisgICAgICAgIHNlbGYucGFyc2VyLnNldEZlYXR1cmUoeG1sLnNheC5oYW5kbGVyLmZlYXR1cmVfbmFtZXNwYWNlcywgMSkKKyAgICAgICAgc2VsZi5wYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoc2VsZi5wdWxsZG9tKQorCisKK2NsYXNzIFNBWDJET01UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgY29uZmlybShzZWxmLCB0ZXN0LCB0ZXN0bmFtZT0iVGVzdCIpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdCwgdGVzdG5hbWUpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIFNBWDJET00gY2FuIHBhcnNlIGZyb20gYSBzdHJlYW0uIiIiCisgICAgICAgIHdpdGggaW8uU3RyaW5nSU8oU01BTExfU0FNUExFKSBhcyBmaW46CisgICAgICAgICAgICBzZCA9IFNBWDJET01UZXN0SGVscGVyKGZpbiwgeG1sLnNheC5tYWtlX3BhcnNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oU01BTExfU0FNUExFKSkKKyAgICAgICAgICAgIGZvciBldnQsIG5vZGUgaW4gc2Q6CisgICAgICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVCBhbmQgbm9kZS50YWdOYW1lID09ICJodG1sIjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgQmVjYXVzZSB0aGUgYnVmZmVyIGlzIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgWE1MLCBhbGwgdGhlCisgICAgICAgICAgICAjIG5vZGVzIHNob3VsZCBoYXZlIGJlZW4gcGFyc2VkIGFuZCBhZGRlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4obm9kZS5jaGlsZE5vZGVzKSwgMCkKKworICAgIGRlZiB0ZXN0U0FYMkRPTShzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIFNBWDJET00gZXhwYW5kcyBub2RlcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgc2F4MmRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCisgICAgICAgIHNheDJkb20uc3RhcnREb2N1bWVudCgpCisgICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJkb2MiLCB7fSkKKyAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoInN1YmVsbSIsIHt9KQorICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoInN1YmVsbSIpCisgICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgiZG9jIikKKyAgICAgICAgc2F4MmRvbS5lbmREb2N1bWVudCgpCisKKyAgICAgICAgZG9jID0gc2F4MmRvbS5kb2N1bWVudAorICAgICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudAorICAgICAgICAodGV4dDEsIGVsbTEsIHRleHQyKSA9IHJvb3QuY2hpbGROb2RlcworICAgICAgICB0ZXh0MyA9IGVsbTEuY2hpbGROb2Rlc1swXQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQxLnByZXZpb3VzU2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0MS5uZXh0U2libGluZywgZWxtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhlbG0xLnByZXZpb3VzU2libGluZywgdGV4dDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5uZXh0U2libGluZywgdGV4dDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDIucHJldmlvdXNTaWJsaW5nLCBlbG0xKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0Mi5uZXh0U2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDMucHJldmlvdXNTaWJsaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0My5uZXh0U2libGluZykKKworICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QucGFyZW50Tm9kZSwgZG9jKQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQxLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQyLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDMucGFyZW50Tm9kZSwgZWxtMSkKKyAgICAgICAgZG9jLnVubGluaygpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChQdWxsRE9NVGVzdENhc2UsIFRob3JvdWdoVGVzdENhc2UsIFNBWDJET01UZXN0Q2FzZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCBjNWE4ZTk4Li44ZTIwMDFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTE5OCw3ICsxOTgsNyBAQAogbWlzc2luZ19wYXR0ZXJuID0gIm5vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAnJXMnIgogCiAjIG91dHB1dCBwYXR0ZXJuIGZvciBtb2R1bGUgd2l0aCBiYWQgaW1wb3J0cwotYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXMiCitiYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKIAogZGVmIHJ1bl9weWRvYyhtb2R1bGVfbmFtZSwgKmFyZ3MsICoqZW52KToKICAgICAiIiIKQEAgLTIzNiw4ICsyMzYsOCBAQAogZGVmIHByaW50X2RpZmZzKHRleHQxLCB0ZXh0Mik6CiAgICAgIlByaW50cyB1bmlmaWVkIGRpZmZzIGZvciB0d28gdGV4dHMiCiAgICAgIyBYWFggbm93IG9ic29sZXRlLCB1c2UgdW5pdHRlc3QgYnVpbHQtaW4gc3VwcG9ydAotICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoVHJ1ZSkKLSAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKFRydWUpCisgICAgbGluZXMxID0gdGV4dDEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgIGxpbmVzMiA9IHRleHQyLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICBkaWZmcyA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGxpbmVzMSwgbGluZXMyLCBuPTAsIGZyb21maWxlPSdleHBlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2ZpbGU9J2dvdCcpCiAgICAgcHJpbnQoJ1xuJyArICcnLmpvaW4oZGlmZnMpKQpAQCAtMjU0LDYgKzI1NCw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfaHRtbF9kb2Moc2VsZik6CiAgICAgICAgIHJlc3VsdCwgZG9jX2xvYyA9IGdldF9weWRvY19odG1sKHB5ZG9jX21vZCkKICAgICAgICAgbW9kX2ZpbGUgPSBpbnNwZWN0LmdldGFic2ZpbGUocHlkb2NfbW9kKQpAQCAtMjY5LDYgKzI3MSw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfdGV4dF9kb2Moc2VsZik6CiAgICAgICAgIHJlc3VsdCwgZG9jX2xvYyA9IGdldF9weWRvY190ZXh0KHB5ZG9jX21vZCkKICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX3RleHRfcGF0dGVybiAlIFwKQEAgLTMyMSw2ICszMjUsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICdEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZScpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X2hlbHBfb3V0cHV0X3JlZGlyZWN0KHNlbGYpOgogICAgICAgICAjIGlzc3VlIDk0MDI4NiwgaWYgb3V0cHV0IGlzIHNldCBpbiBIZWxwZXIsIHRoZW4gYWxsIG91dHB1dCBmcm9tCiAgICAgICAgICMgSGVscGVyLmhlbHAgc2hvdWxkIGJlIHJlZGlyZWN0ZWQKQEAgLTM4OCwxMSArMzk0LDEwIEBACiAgICAgICAgIG1vZG5hbWUgPSAndGVzdG1vZF94eXp6eScKICAgICAgICAgdGVzdHBhaXJzID0gKAogICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlJywgJ2lfYW1fbm90X2hlcmUnKSwKLSAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicsICdpX2FtX25vdF9oZXJlX2VpdGhlcicpLAotICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJywgJ2lfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJyksCi0gICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSwKLSAgICAgICAgICAgICAnaV9hbV9ub3RfaGVyZS57fScuZm9ybWF0KG1vZG5hbWUpKSwKLSAgICAgICAgICAgICgndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpLCBtb2RuYW1lKSwKKyAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicsICd0ZXN0LmlfYW1fbm90X2hlcmVfZWl0aGVyJyksCisgICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZS5uZWl0aGVyX2FtX2knLCAndGVzdC5pX2FtX25vdF9oZXJlJyksCisgICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSwgJ2lfYW1fbm90X2hlcmUnKSwKKyAgICAgICAgICAgICgndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpLCAndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpKSwKICAgICAgICAgICAgICkKIAogICAgICAgICBzb3VyY2VmbiA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZG5hbWUpICsgb3MuZXh0c2VwICsgInB5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKaW5kZXggZTAyYzFhZi4uYmU1YzFjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CkBAIC00LDYgKzQsNyBAQAogIiIiVGVzdHMgZm9yIHRoZSByYWlzZSBzdGF0ZW1lbnQuIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdApAQCAtNzcsNiArNzgsMTYgQEAKICAgICAgICAgICAgICAgICBuZXN0ZWRfcmVyYWlzZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmVyYWlzZSkKIAorICAgIGRlZiB0ZXN0X3JhaXNlX2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZm9vIikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkgZnJvbSBOb25lCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShlLl9fY29udGV4dF9fLCBUeXBlRXJyb3IpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisKICAgICBkZWYgdGVzdF93aXRoX3JlcmFpc2UxKHNlbGYpOgogICAgICAgICBkZWYgcmVyYWlzZSgpOgogICAgICAgICAgICAgdHJ5OgpAQCAtMTMwLDggKzE0MSwzNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbgogCisgICAgZGVmIHRlc3RfYXNzZXJ0X3dpdGhfdHVwbGVfYXJnKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICgzLCkKKyAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIigzLCkiKQorCisKIAogY2xhc3MgVGVzdENhdXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q2F1c2VTeW50YXgoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY2F1c2VfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICAgICAgICAgIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmFpc2UgZXhjCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGUgPSBleGMKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgVHlwZUVycm9yKQorCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jYXVzZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvciBmcm9tIDUKQEAgLTE3MSw2ICsyMDksNyBAQAogCiAKIGNsYXNzIFRlc3RUcmFjZWJhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3Rfc2V0c190cmFjZWJhY2soc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCA3NzZkMGM0Li5iNTkzMWJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtMzQsOCArMzQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5kc2VxLCBzZWxmLnJhbmRvbWxpc3QoTikpCiAKICAgICBkZWYgdGVzdF9zZWVkYXJncyhzZWxmKToKKyAgICAgICAgIyBTZWVkIHZhbHVlIHdpdGggYSBuZWdhdGl2ZSBoYXNoLgorICAgICAgICBjbGFzcyBNeVNlZWQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE3MjkKICAgICAgICAgZm9yIGFyZyBpbiBbTm9uZSwgMCwgMCwgMSwgMSwgLTEsIC0xLCAxMCoqMjAsIC0oMTAqKjIwKSwKLSAgICAgICAgICAgICAgICAgICAgMy4xNCwgMSsyaiwgJ2EnLCB0dXBsZSgnYWJjJyldOgorICAgICAgICAgICAgICAgICAgICAzLjE0LCAxKzJqLCAnYScsIHR1cGxlKCdhYmMnKSwgTXlTZWVkKCldOgogICAgICAgICAgICAgc2VsZi5nZW4uc2VlZChhcmcpCiAgICAgICAgIGZvciBhcmcgaW4gW2xpc3QocmFuZ2UoMykpLCBkaWN0KG9uZT0xKV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZ2VuLnNlZWQsIGFyZykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CmluZGV4IDRkYWI0NDguLjJhMTNiZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQpAQCAtMzUwLDEzICszNTAsMzUgQEAKIAogICAgIGRlZiB0ZXN0X3BpY2tsaW5nKHNlbGYpOgogICAgICAgICB0ZXN0Y2FzZXMgPSBbKDEzLCksICgwLCAxMSksICgtMjIsIDEwKSwgKDIwLCAzLCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKV0KKyAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpLCAoMioqNjUsIDIqKjY1KzIpXQogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciB0IGluIHRlc3RjYXNlczoKICAgICAgICAgICAgICAgICByID0gcmFuZ2UoKnQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMociwgcHJvdG8pKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHIpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIHRlc3RjYXNlcyA9IFsoMTMsKSwgKDAsIDExKSwgKC0yMiwgMTApLCAoMjAsIDMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpLCAoMioqNjUsIDIqKjY1KzIpXQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciB0IGluIHRlc3RjYXNlczoKKyAgICAgICAgICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihyYW5nZSgqdCkpCisgICAgICAgICAgICAgICAgZGF0YSA9IGxpc3QocmFuZ2UoKnQpKQorCisgICAgICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEpCisKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YVsxOl0pCisKICAgICBkZWYgdGVzdF9vZGRfYnVnKHNlbGYpOgogICAgICAgICAjIFRoaXMgdXNlZCB0byByYWlzZSBhICJTeXN0ZW1FcnJvcjogTlVMTCByZXN1bHQgd2l0aG91dCBlcnJvciIKICAgICAgICAgIyBiZWNhdXNlIHRoZSByYW5nZSB2YWxpZGF0aW9uIHN0ZXAgd2FzIGVhdGluZyB0aGUgZXhjZXB0aW9uCkBAIC01MTYsNiArNTM4LDg3IEBACiAgICAgICAgICAgICAgICAgZm9yIGsgaW4gdmFsdWVzIC0gezB9OgogICAgICAgICAgICAgICAgICAgICByW2k6ajprXQogCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgdGVzdF9yYW5nZXMgPSBbcmFuZ2UoMCksIHJhbmdlKDAsIC0xKSwgcmFuZ2UoMSwgMSwgMyksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDEpLCByYW5nZSg1LCA2KSwgcmFuZ2UoNSwgNiwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDUsIDcsIDIpLCByYW5nZSgyKSwgcmFuZ2UoMCwgNCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDAsIDUsIDIpLCByYW5nZSgwLCA2LCAyKV0KKyAgICAgICAgdGVzdF90dXBsZXMgPSBsaXN0KG1hcCh0dXBsZSwgdGVzdF9yYW5nZXMpKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBlcXVhbGl0eSBvZiByYW5nZXMgbWF0Y2hlcyBlcXVhbGl0eSBvZiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAjIHR1cGxlcyBmb3IgZWFjaCBwYWlyIGZyb20gdGhlIHRlc3QgbGlzdHMgYWJvdmUuCisgICAgICAgIHJhbmdlc19lcSA9IFthID09IGIgZm9yIGEgaW4gdGVzdF9yYW5nZXMgZm9yIGIgaW4gdGVzdF9yYW5nZXNdCisgICAgICAgIHR1cGxlc19lcSA9IFthID09IGIgZm9yIGEgaW4gdGVzdF90dXBsZXMgZm9yIGIgaW4gdGVzdF90dXBsZXNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VzX2VxLCB0dXBsZXNfZXEpCisKKyAgICAgICAgIyBDaGVjayB0aGF0ICE9IGNvcnJlY3RseSBnaXZlcyB0aGUgbG9naWNhbCBuZWdhdGlvbiBvZiA9PQorICAgICAgICByYW5nZXNfbmUgPSBbYSAhPSBiIGZvciBhIGluIHRlc3RfcmFuZ2VzIGZvciBiIGluIHRlc3RfcmFuZ2VzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlc19uZSwgW25vdCB4IGZvciB4IGluIHJhbmdlc19lcV0pCisKKyAgICAgICAgIyBFcXVhbCByYW5nZXMgc2hvdWxkIGhhdmUgZXF1YWwgaGFzaGVzLgorICAgICAgICBmb3IgYSBpbiB0ZXN0X3JhbmdlczoKKyAgICAgICAgICAgIGZvciBiIGluIHRlc3RfcmFuZ2VzOgorICAgICAgICAgICAgICAgIGlmIGEgPT0gYjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGEpLCBoYXNoKGIpKQorCisgICAgICAgICMgUmFuZ2VzIGFyZSB1bmVxdWFsIHRvIG90aGVyIHR5cGVzIChldmVuIHNlcXVlbmNlIHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydElzKHJhbmdlKDApID09ICgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoKSA9PSByYW5nZSgwKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmFuZ2UoMikgPT0gWzAsIDFdLCBGYWxzZSkKKworICAgICAgICAjIEh1Z2UgaW50ZWdlcnMgYXJlbid0IGEgcHJvYmxlbS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZSgwLCAyKioxMDAgLSAxLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCAyKioxMDAsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocmFuZ2UoMCwgMioqMTAwIC0gMSwgMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gocmFuZ2UoMCwgMioqMTAwLCAyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmFuZ2UoMCwgMioqMTAwLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCAyKioxMDAgKyAxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZSgyKioyMDAsIDIqKjIwMSAtIDIqKjk5LCAyKioxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDIqKjIwMCwgMioqMjAxLCAyKioxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocmFuZ2UoMioqMjAwLCAyKioyMDEgLSAyKio5OSwgMioqMTAwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChyYW5nZSgyKioyMDAsIDIqKjIwMSwgMioqMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmFuZ2UoMioqMjAwLCAyKioyMDEsIDIqKjEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMioqMjAwLCAyKioyMDEgKyAxLCAyKioxMDApKQorCisgICAgICAgICMgT3JkZXIgY29tcGFyaXNvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmFuZ2VzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA8IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApID4gcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPD0gcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPj0gcmFuZ2UoMCkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBzdGFydCwgc3RvcCBhbmQgc3RlcCBhdHRyaWJ1dGVzIG9mIHJhbmdlIG9iamVjdHMKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCksIDAsIDAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDEwKSwgMCwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKC0xMCksIDAsIC0xMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCwgMTAsIDEpLCAwLCAxMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCwgMTAsIDMpLCAwLCAxMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMTAsIDAsIC0xKSwgMTAsIDAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgxMCwgMCwgLTMpLCAxMCwgMCwgLTMpCisKKyAgICBkZWYgYXNzZXJ0X2F0dHJzKHNlbGYsIHJhbmdlb2JqLCBzdGFydCwgc3RvcCwgc3RlcCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RhcnQsIHN0YXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0b3AsIHN0b3ApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RlcCwgc3RlcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0YXJ0ID0gMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0b3AgPSAxMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0ZXAgPSAxCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RhcnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RvcAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCByYW5nZW9iai5zdGVwCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFJhbmdlVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDZiMDQ3ZTQuLmZlYWU3YzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtNyw5ICs3LDYgQEAKIGltcG9ydCB0cmFjZWJhY2sKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIAotZnJvbSB0ZXN0LnRlc3RfYmlnbWVtIGltcG9ydCBjaGFyYWN0ZXJfc2l6ZQotCi0KICMgTWlzYyB0ZXN0cyBmcm9tIFRpbSBQZXRlcnMnIHJlLmRvYwogCiAjIFdBUk5JTkc6IERvbid0IGNoYW5nZSBkZXRhaWxzIGluIHRoZXNlIHRlc3RzIGlmIHlvdSBkb24ndCBrbm93CkBAIC00OTUsNyArNDkyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNwYW4oKSwgc3BhbikKIAogICAgIGRlZiB0ZXN0X3JlX2VzY2FwZShzZWxmKToKLSAgICAgICAgYWxudW1fY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgICAgICAgYWxudW1fY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnXycKICAgICAgICAgcCA9ICcnLmpvaW4oY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NikpCiAgICAgICAgIGZvciBjIGluIHA6CiAgICAgICAgICAgICBpZiBjIGluIGFsbnVtX2NoYXJzOgpAQCAtNTA4LDcgKzUwNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2gocmUuZXNjYXBlKHApLCBwKQogCiAgICAgZGVmIHRlc3RfcmVfZXNjYXBlX2J5dGUoc2VsZik6Ci0gICAgICAgIGFsbnVtX2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cykuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGFsbnVtX2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfJykuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIHAgPSBieXRlcyhyYW5nZSgyNTYpKQogICAgICAgICBmb3IgaSBpbiBwOgogICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKQEAgLTU1NSwyNCArNTUyLDkyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLmNvbXBpbGUoJ15wYXR0ZXJuJCcsIGZsYWcpLCBOb25lKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9saXRlcmFscyhzZWxmKToKLSAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM28wIiAlIGksIGNocihpKSsiMCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvOCIgJSBpLCBjaHIoaSkrIjgiKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMngiICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMngwIiAlIGksIGNocihpKSsiMCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeHoiICUgaSwgY2hyKGkpKyJ6IiksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgIlw5MTEiLCAiIikKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CisgICAgICAgICAgICBpZiBpIDwgMjU2OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM28iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvMCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvOCIgJSBpLCBjaHIoaSkrIjgiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgICAgICBpZiBpIDwgMHgxMDAwMDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHgwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHh6IiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwIiwgIlwwMDAiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDgiLCAiXDAwMDgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDEiLCAiXDAwMSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwMTgiLCAiXDAwMTgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcNTY3IiwgY2hyKDBvMTY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcOTExIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJceDEiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MXoiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcdTEyM3oiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAwMTIzNCIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0eiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDExMDAwMCIsICIiKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9jbGFzc19saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CisgICAgICAgICAgICBpZiBpIDwgMjU2OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlb10iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJW84XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvMF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJTAzbzhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x4JTAyeDBdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4el0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIGlmIGkgPCAweDEwMDAwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcdSUwNHgwXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eHpdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHgwXSIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eHpdIiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1w5MTFdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXHgxel0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcdTEyM3pdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXFUwMDAxMjM0el0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMTEwMDAwXSIsICIiKQorCisgICAgZGVmIHRlc3Rfc3JlX2J5dGVfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXCUwM29dIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1wlMDNvMF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXCUwM284XSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltceCUwMnhdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1x4JTAyeDBdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1x4JTAyeHpdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgIltcOTExXSIsICIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXCUwM28iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXCUwM28wIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXCUwM284IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiOCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXHglMDJ4IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJceCUwMnh6IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IieiIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcdSIsIGIndScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcVSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMCIsIGIiXDAwMCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwMSIsIGIiXDAwMSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMDE4IiwgYiJcMDAxOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcNTY3IiwgYnl0ZXMoWzBvMTY3XSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlw5MTEiLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxIiwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlx4MXoiLCBiIiIpCisKKyAgICBkZWYgdGVzdF9zcmVfYnl0ZV9jbGFzc19saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlb10iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlbzhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJTAzb10iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlMDNvMF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlMDNvOF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1x4JTAyeDBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltceCUwMnh6XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIltcdV0iLCBiJ3UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiW1xVXSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIltcOTExXSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIltceDF6XSIsICIiKQogCiAgICAgZGVmIHRlc3RfYnVnXzExMzI1NChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyhhKXwoYiknLCAnYicpLnN0YXJ0KDEpLCAtMSkKQEAgLTY4MSw2ICs3NDYsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCiAKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIDEsIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKKworICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgcG9zPTEsIGVuZHBvcz0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCisKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIGVuZHBvcz0xMCwgcG9zPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQorCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCBwb3M9MywgZW5kcG9zPTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6OiIsICI6OiJdKQorCiAgICAgZGVmIHRlc3RfYnVnXzkyNjA3NShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLmNvbXBpbGUoJ2J1Z185MjYwNzUnKSBpcyBub3QKICAgICAgICAgICAgICAgICAgICAgIHJlLmNvbXBpbGUoYididWdfOTI2MDc1JykpCkBAIC04NDcsNiArOTMyLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIF9zcmUuY29tcGlsZSwgImFiYyIsIDAsIFtsb25nX292ZXJmbG93XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc3JlLmNvbXBpbGUsIHt9LCAwLCBbXSkKIAorICAgIGRlZiB0ZXN0X3NlYXJjaF9kb3RfdW5pY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzYWJjLScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNceGU5LScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNcdTIwYWMtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1xVMDAxMGZmZmYtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1x4ZTlcdTIwYWNcVTAwMTBmZmZmLScpKQorCiAgICAgZGVmIHRlc3RfY29tcGlsZShzZWxmKToKICAgICAgICAgIyBUZXN0IHJldHVybiB2YWx1ZSB3aGVuIGdpdmVuIHN0cmluZyBhbmQgcGF0dGVybiBhcyBwYXJhbWV0ZXIKICAgICAgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoJ3JhbmRvbSBwYXR0ZXJuJykKQEAgLTg2Myw3ICs5NTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwocidbXEFcQlxiXENcWl0nLCAnQUJcYkNaJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPWNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MSkKICAgICBkZWYgdGVzdF9sYXJnZV9zZWFyY2goc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgSXNzdWUgIzEwMTgyOiBpbmRpY2VzIHdlcmUgMzItYml0LXRydW5jYXRlZC4KICAgICAgICAgcyA9ICdhJyAqIHNpemUKQEAgLTg3NCw3ICs5NjYsNyBAQAogCiAgICAgIyBUaGUgaHVnZSBtZW11c2UgaXMgYmVjYXVzZSBvZiByZS5zdWIoKSB1c2luZyBhIGxpc3QgYW5kIGEgam9pbigpCiAgICAgIyB0byBjcmVhdGUgdGhlIHJlcGxhY2VtZW50IHJlc3VsdC4KLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTE2ICsgMiAqIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MTYgKyAyKQogICAgIGRlZiB0ZXN0X2xhcmdlX3N1Ym4oc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgSXNzdWUgIzEwMTgyOiBpbmRpY2VzIHdlcmUgMzItYml0LXRydW5jYXRlZC4KICAgICAgICAgcyA9ICdhJyAqIHNpemUKQEAgLTg4Miw2ICs5NzQsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCBzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIHNpemUgKyAxKQogCisgICAgZGVmIHRlc3RfYnVnXzE2Njg4KHNlbGYpOgorICAgICAgICAjIElzc3VlIDE2Njg4OiBCYWNrcmVmZXJlbmNlcyBtYWtlIGNhc2UtaW5zZW5zaXRpdmUgcmVnZXggZmFpbCBvbgorICAgICAgICAjIG5vbi1BU0NJSSBzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwociIoP2kpKGEpXDEiLCAiYWEgXHUwMTAwIiksIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKD9zKS57MSwzfSIsICJcdTAxMDBcdTAxMDAiKS5zcGFuKCksICgwLCAyKSkKIAogZGVmIHJ1bl9yZV90ZXN0cygpOgogICAgIGZyb20gdGVzdC5yZV90ZXN0cyBpbXBvcnQgdGVzdHMsIFNVQ0NFRUQsIEZBSUwsIFNZTlRBWF9FUlJPUgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5IGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CmluZGV4IGIwZGM0ZDcuLjU4OWVjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKQEAgLTMsMTIgKzMsMTQgQEAKICAgTmljayBNYXRoZXdzb24KICIiIgogCitpbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQogZnJvbSByZXBybGliIGltcG9ydCByZXByIGFzIHIgIyBEb24ndCBzaGFkb3cgYnVpbHRpbiByZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKQEAgLTEyOSw4ICsxMzEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHMuZmluZCgiLi4uIiksIFsxMiwgMTNdKQogCiAgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihsYW1iZGEgeDogeCkuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICI8ZnVuY3Rpb24gPGxhbWJkYSIpKQorICAgICAgICByID0gcmVwcihsYW1iZGEgeDogeCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgiPGZ1bmN0aW9uIFJlcHJUZXN0cy50ZXN0X2xhbWJkYS48bG9jYWxzPi48bGFtYmRhIiksIHIpCiAgICAgICAgICMgWFhYIGFub255bW91cyBmdW5jdGlvbnM/ICBzZWUgZnVuY19yZXByCiAKICAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTkzLDI2ICsxOTUsMjkgQEAKICAgICAgICAgcih5KQogICAgICAgICByKHopCiAKLWRlZiB0b3VjaChwYXRoLCB0ZXh0PScnKToKLSAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgIGZwLndyaXRlKHRleHQpCi0gICAgZnAuY2xvc2UoKQorZGVmIHdyaXRlX2ZpbGUocGF0aCwgdGV4dCk6CisgICAgd2l0aCBvcGVuKHBhdGgsICd3JywgZW5jb2Rpbmc9J0FTQ0lJJykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKHRleHQpCiAKIGNsYXNzIExvbmdSZXByVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbG9uZ25hbWUgPSAnYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uJworCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBsb25nbmFtZSA9ICdhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24nCi0gICAgICAgIHNlbGYucGtnbmFtZSA9IG9zLnBhdGguam9pbihsb25nbmFtZSkKLSAgICAgICAgc2VsZi5zdWJwa2duYW1lID0gb3MucGF0aC5qb2luKGxvbmduYW1lLCBsb25nbmFtZSkKKyAgICAgICAgc2VsZi5wa2duYW1lID0gb3MucGF0aC5qb2luKHNlbGYubG9uZ25hbWUpCisgICAgICAgIHNlbGYuc3VicGtnbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLmxvbmduYW1lLCBzZWxmLmxvbmduYW1lKQogICAgICAgICAjIE1ha2UgdGhlIHBhY2thZ2UgYW5kIHN1YnBhY2thZ2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnBrZ25hbWUsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wa2duYW1lKQotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5wa2duYW1lLCAnX19pbml0X18ucHknKSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5zdWJwa2duYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuc3VicGtnbmFtZSkKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdfX2luaXRfXy5weScpKQogICAgICAgICAjIFJlbWVtYmVyIHdoZXJlIHdlIGFyZQogICAgICAgICBzZWxmLmhlcmUgPSBvcy5nZXRjd2QoKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2VsZi5oZXJlKQorICAgICAgICAjIFdoZW4gcmVncnRlc3QgaXMgcnVuIHdpdGggaXRzIC1qIG9wdGlvbiwgdGhpcyBjb21tYW5kIGFsb25lIGlzIG5vdAorICAgICAgICAjIGVub3VnaC4KKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYWN0aW9ucyA9IFtdCkBAIC0yMjksMjAgKzIzNCw0MCBAQAogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwKQogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KIAorICAgIGRlZiBfY2hlY2tfcGF0aF9saW1pdGF0aW9ucyhzZWxmLCBtb2R1bGVfbmFtZSk6CisgICAgICAgICMgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgc291cmNlX3BhdGhfbGVuID0gbGVuKHNlbGYuaGVyZSkKKyAgICAgICAgIyBhIHBhdGggc2VwYXJhdG9yICsgYGxvbmduYW1lYCAodHdpY2UpCisgICAgICAgIHNvdXJjZV9wYXRoX2xlbiArPSAyICogKGxlbihzZWxmLmxvbmduYW1lKSArIDEpCisgICAgICAgICMgYSBwYXRoIHNlcGFyYXRvciArIGBtb2R1bGVfbmFtZWAgKyAiLnB5IgorICAgICAgICBzb3VyY2VfcGF0aF9sZW4gKz0gbGVuKG1vZHVsZV9uYW1lKSArIDEgKyBsZW4oIi5weSIpCisgICAgICAgIGNhY2hlZF9wYXRoX2xlbiA9IHNvdXJjZV9wYXRoX2xlbiArIGxlbihpbXAuY2FjaGVfZnJvbV9zb3VyY2UoIngucHkiKSkgLSBsZW4oIngucHkiKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIGNhY2hlZF9wYXRoX2xlbiA+PSAyNTg6CisgICAgICAgICAgICAjIFVuZGVyIFdpbmRvd3MsIHRoZSBtYXggcGF0aCBsZW4gaXMgMjYwIGluY2x1ZGluZyBDJ3MgdGVybWluYXRpbmcKKyAgICAgICAgICAgICMgTlVMIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3JTI4dj12cy44NSUyOS5hc3B4I21heHBhdGgpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHBhdGhzIHRvbyBsb25nICglZCBjaGFyYWN0ZXJzKSBmb3IgV2luZG93cycgMjYwIGNoYXJhY3RlciBsaW1pdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjYWNoZWRfcGF0aF9sZW4pCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAnbnQnIGFuZCB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoImNhY2hlZF9wYXRoX2xlbiA9IiwgY2FjaGVkX3BhdGhfbGVuKQorCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKHNlbGYucGtnbmFtZSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbgotICAgICAgICBlcShyZXByKGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiksCi0gICAgICAgICAgICI8bW9kdWxlICclcycgZnJvbSAnJXMnPiIgJSAoYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLl9fbmFtZV9fLCBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uX19maWxlX18pKQotICAgICAgICBlcShyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKKyAgICAgICAgbW9kdWxlID0gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2R1bGUpLCAiPG1vZHVsZSAlciBmcm9tICVyPiIgJSAobW9kdWxlLl9fbmFtZV9fLCBtb2R1bGUuX19maWxlX18pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygnZm9vJykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAogY2xhc3MgZm9vKG9iamVjdCk6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGZvbwogICAgICAgICBlcShyZXByKGZvby5mb28pLAogICAgICAgICAgICAgICAgIjxjbGFzcyAnJXMuZm9vJz4iICUgZm9vLl9fbmFtZV9fKQpAQCAtMjUzLDM5ICsyNzgsNDYgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfY2xhc3Moc2VsZik6Ci0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdiYXInKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAogY2xhc3MgYmFyOgogICAgIHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBiYXIKICAgICAgICAgIyBNb2R1bGUgbmFtZSBtYXkgYmUgcHJlZml4ZWQgd2l0aCAidGVzdC4iLCBkZXBlbmRpbmcgb24gaG93IHJ1bi4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGJhci5iYXIpLCAiPGNsYXNzICclcy5iYXInPiIgJSBiYXIuX19uYW1lX18pCiAKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCiBjbGFzcyBiYXo6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGJhegogICAgICAgICBpYmF6ID0gYmF6LmJheigpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKGliYXopLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAiPCVzLmJheiBvYmplY3QgYXQgMHgiICUgYmF6Ll9fbmFtZV9fKSkKIAogICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygncXV4JykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAogY2xhc3MgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE6CiAgICAgZGVmIGFtZXRob2Qoc2VsZik6IHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBxdXgKICAgICAgICAgIyBVbmJvdW5kIG1ldGhvZHMgZmlyc3QKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QpLnN0YXJ0c3dpdGgoCi0gICAgICAgICc8ZnVuY3Rpb24gYW1ldGhvZCcpKQorICAgICAgICByID0gcmVwcihxdXguYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnPGZ1bmN0aW9uIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QnKSwgcikKICAgICAgICAgIyBCb3VuZCBtZXRob2QgbmV4dAogICAgICAgICBpcXV4ID0gcXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoaXF1eC5hbWV0aG9kKS5zdGFydHN3aXRoKAorICAgICAgICByID0gcmVwcihpcXV4LmFtZXRob2QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAnPGJvdW5kIG1ldGhvZCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kIG9mIDwlcy5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSBvYmplY3QgYXQgMHgnIFwKLSAgICAgICAgICAgICUgKHF1eC5fX25hbWVfXywpICkpCisgICAgICAgICAgICAlIChxdXguX19uYW1lX18sKSApLCByKQogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKICAgICAgICAgIyBYWFggdGVzdCBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2l0aCByZWFsbHkgbG9uZyBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IGY4ZjM3MTcuLjBiNjI5ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTIyMCw2ICsyMjAsNyBAQAogICAgICAgICBmb3IgZnVuYyBpbiAoZG8sIG9wZXJhdG9yLm5vdF8pOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBmdW5jLCBCYWQoKSkKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9yZWN1cnNpb24oc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBjb21wYXJpc29uIGZvciByZWN1cnNpdmUgb2JqZWN0cyBmYWlscyBncmFjZWZ1bGx5CiAgICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCA5NmQyYmViLi5mZWZlZmM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTUsMTEgKzUsMTUgQEAKIGltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgcHlfY29tcGlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCBydW5fdW5pdHRlc3QsIHVubG9hZCwgdmVyYm9zZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKKyAgICBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCisgICAgY3JlYXRlX2VtcHR5X2ZpbGUpCiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsIHRlbXBfZGlyKQogCisKIGltcG9ydCBydW5weQogZnJvbSBydW5weSBpbXBvcnQgX3J1bl9jb2RlLCBfcnVuX21vZHVsZV9jb2RlLCBydW5fbW9kdWxlLCBydW5fcGF0aAogIyBOb3RlOiBUaGlzIG1vZHVsZSBjYW4ndCBzYWZlbHkgdGVzdCBfcnVuX21vZHVsZV9hc19tYWluIGFzIGl0CkBAIC0xNDUsNyArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9wYWNrYWdlKQogICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCiAKLQorIyBUT0RPOiBVc2Ugc2VsZi5hZGRDbGVhbnVwIHRvIGdldCByaWQgb2YgYSBsb3Qgb2YgdHJ5LWZpbmFsbHkgYmxvY2tzCiBjbGFzcyBSdW5Nb2R1bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgQ29kZUV4ZWN1dGlvbk1peGluKToKICAgICAiIiJVbml0IHRlc3RzIGZvciBydW5weS5ydW5fbW9kdWxlIiIiCiAKQEAgLTE3NSw4ICsxNzksNyBAQAogICAgIGRlZiBfYWRkX3BrZ19kaXIoc2VsZiwgcGtnX2Rpcik6CiAgICAgICAgIG9zLm1rZGlyKHBrZ19kaXIpCiAgICAgICAgIHBrZ19mbmFtZSA9IG9zLnBhdGguam9pbihwa2dfZGlyLCAiX19pbml0X18ucHkiKQotICAgICAgICBwa2dfZmlsZSA9IG9wZW4ocGtnX2ZuYW1lLCAidyIpCi0gICAgICAgIHBrZ19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUocGtnX2ZuYW1lKQogICAgICAgICByZXR1cm4gcGtnX2ZuYW1lCiAKICAgICBkZWYgX21ha2VfcGtnKHNlbGYsIHNvdXJjZSwgZGVwdGgsIG1vZF9iYXNlPSJydW5weV90ZXN0Iik6CkBAIC0yNTIsMTAgKzI1NSwxMiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBzb3VyY2U6IiwgbW9kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIGxvYWRlciBjYWNoZXMgcGF0aHMKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBtb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2ZpeF9uc19mb3JfbGVnYWN5X3B5YyhleHBlY3RlZF9ucywgYWx0ZXJfc3lzKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQpAQCAtMjg1LDExICsyOTAsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gc291cmNlOiIsIHBrZ19uYW1lKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSBsb2FkZXIgY2FjaGVzIHBhdGhzCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBwa2dfbmFtZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBzZWxmLl9maXhfbnNfZm9yX2xlZ2FjeV9weWMoZXhwZWN0ZWRfbnMsIGFsdGVyX3N5cykKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKICAgICAgICAgZmluYWxseToKQEAgLTMwNiw4ICszMTMsNyBAQAogICAgICAgICAgICAgbW9kdWxlX2RpciA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyLCBwa2dfbmFtZSkKICAgICAgICAgIyBBZGQgc2libGluZyBtb2R1bGUKICAgICAgICAgc2libGluZ19mbmFtZSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyLCAic2libGluZy5weSIpCi0gICAgICAgIHNpYmxpbmdfZmlsZSA9IG9wZW4oc2libGluZ19mbmFtZSwgInciKQotICAgICAgICBzaWJsaW5nX2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShzaWJsaW5nX2ZuYW1lKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgc2libGluZyBtb2R1bGU6Iiwgc2libGluZ19mbmFtZSkKICAgICAgICAgIyBBZGQgbmVwaGV3IG1vZHVsZQogICAgICAgICB1bmNsZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGFyZW50X2RpciwgInVuY2xlIikKQEAgLTMxNyw4ICszMjMsNyBAQAogICAgICAgICBzZWxmLl9hZGRfcGtnX2Rpcihjb3VzaW5fZGlyKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgY291c2luIHBhY2thZ2U6IiwgY291c2luX2RpcikKICAgICAgICAgbmVwaGV3X2ZuYW1lID0gb3MucGF0aC5qb2luKGNvdXNpbl9kaXIsICJuZXBoZXcucHkiKQotICAgICAgICBuZXBoZXdfZmlsZSA9IG9wZW4obmVwaGV3X2ZuYW1lLCAidyIpCi0gICAgICAgIG5lcGhld19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUobmVwaGV3X2ZuYW1lKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgbmVwaGV3IG1vZHVsZToiLCBuZXBoZXdfZm5hbWUpCiAKICAgICBkZWYgX2NoZWNrX3JlbGF0aXZlX2ltcG9ydHMoc2VsZiwgZGVwdGgsIHJ1bl9uYW1lPU5vbmUpOgpAQCAtMzQzLDExICszNDgsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpYmxpbmciLCBkMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5lcGhldyIsIGQxKQogICAgICAgICAgICAgZGVsIGQxICMgRW5zdXJlIF9fbG9hZGVyX18gZW50cnkgZG9lc24ndCBrZWVwIGZpbGUgb3BlbgorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSB0aGUgbG9hZGVyIGNhY2hlcyBwYXRocwogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gY29tcGlsZWQ6IiwgbW9kX25hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgZDIgPSBydW5fbW9kdWxlKG1vZF9uYW1lLCBydW5fbmFtZT1ydW5fbmFtZSkgIyBSZWFkIGZyb20gYnl0ZWNvZGUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDJbIl9fbmFtZV9fIl0sIGV4cGVjdGVkX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyWyJfX3BhY2thZ2VfXyJdLCBwa2dfbmFtZSkKQEAgLTQwNyw2ICs0MTQsNDAgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2RlbF9wa2cocGtnX2RpciwgZGVwdGgsIG1vZF9uYW1lKQogCisgICAgZGVmIHRlc3RfcGtndXRpbF93YWxrX3BhY2thZ2VzKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgYSBkb2RneSBoYWNrIHRvIHVzZSB0aGUgdGVzdF9ydW5weSBpbmZyYXN0cnVjdHVyZSB0byB0ZXN0CisgICAgICAgICMgaXNzdWUgIzE1MzQzLiBJc3N1ZSAjMTUzNDggZGVjbGFyZXMgdGhpcyBpcyBpbmRlZWQgYSBkb2RneSBoYWNrIDspCisgICAgICAgIGltcG9ydCBwa2d1dGlsCisgICAgICAgIG1heF9kZXB0aCA9IDQKKyAgICAgICAgYmFzZV9uYW1lID0gIl9fcnVucHlfcGtnX18iCisgICAgICAgIHBhY2thZ2Vfc3VmZml4ZXMgPSBbInVuY2xlIiwgInVuY2xlLmNvdXNpbiJdCisgICAgICAgIG1vZHVsZV9zdWZmaXhlcyA9IFsidW5jbGUuY291c2luLm5lcGhldyIsIGJhc2VfbmFtZSArICIuc2libGluZyJdCisgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzID0gc2V0KCkKKyAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcyA9IHNldCgpCisgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgxLCBtYXhfZGVwdGgpOgorICAgICAgICAgICAgcGtnX25hbWUgPSAiLiIuam9pbihbYmFzZV9uYW1lXSAqIGRlcHRoKQorICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lKQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gcGFja2FnZV9zdWZmaXhlczoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUgKyAiLiIgKyBuYW1lKQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gbW9kdWxlX3N1ZmZpeGVzOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMuYWRkKHBrZ19uYW1lICsgIi4iICsgbmFtZSkKKyAgICAgICAgcGtnX25hbWUgPSAiLiIuam9pbihbYmFzZV9uYW1lXSAqIG1heF9kZXB0aCkKKyAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lKQorICAgICAgICBleHBlY3RlZF9tb2R1bGVzLmFkZChwa2dfbmFtZSArICIucnVucHlfdGVzdCIpCisgICAgICAgIHBrZ19kaXIsIG1vZF9mbmFtZSwgbW9kX25hbWUgPSAoCisgICAgICAgICAgICAgICBzZWxmLl9tYWtlX3BrZygiIiwgbWF4X2RlcHRoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuX2RlbF9wa2csIHBrZ19kaXIsIG1heF9kZXB0aCwgbW9kX25hbWUpCisgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgyLCBtYXhfZGVwdGgrMSk6CisgICAgICAgICAgICBzZWxmLl9hZGRfcmVsYXRpdmVfbW9kdWxlcyhwa2dfZGlyLCAiIiwgZGVwdGgpCisgICAgICAgIGZvciBmaW5kZXIsIG1vZF9uYW1lLCBpc3BrZyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKQorICAgICAgICAgICAgaWYgaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tb2R1bGVzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfcGFja2FnZXMpLCAwLCBleHBlY3RlZF9wYWNrYWdlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbW9kdWxlcyksIDAsIGV4cGVjdGVkX21vZHVsZXMpCiAKIGNsYXNzIFJ1blBhdGhUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgQ29kZUV4ZWN1dGlvbk1peGluKToKICAgICAiIiJVbml0IHRlc3RzIGZvciBydW5weS5ydW5fcGF0aCIiIgpAQCAtNTA3LDYgKzU0OCw3IEBACiAgICAgICAgICAgICBtc2cgPSAiY2FuJ3QgZmluZCAnX19tYWluX18nIG1vZHVsZSBpbiAlciIgJSB6aXBfbmFtZQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHppcF9uYW1lLCBtc2cpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X21haW5fcmVjdXJzaW9uX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpciwgdGVtcF9kaXIoKSBhcyBkdW1teV9kaXI6CiAgICAgICAgICAgICBtb2RfbmFtZSA9ICdfX21haW5fXycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5IGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKaW5kZXggZDZlZDZkYi4uN2JiMzBjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zYXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKQEAgLTIwLDggKzIwLDggQEAKIFRFU1RfWE1MRklMRSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogVEVTVF9YTUxGSUxFX09VVCA9IGZpbmRmaWxlKCJ0ZXN0LnhtbC5vdXQiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIHRyeToKLSAgICBURVNUX1hNTEZJTEUuZW5jb2RlKCJ1dGY4IikKLSAgICBURVNUX1hNTEZJTEVfT1VULmVuY29kZSgidXRmOCIpCisgICAgVEVTVF9YTUxGSUxFLmVuY29kZSgidXRmLTgiKQorICAgIFRFU1RfWE1MRklMRV9PVVQuZW5jb2RlKCJ1dGYtOCIpCiBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlbmFtZSBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5IGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQppbmRleCA5MWI4ZjBjLi4xZmU2YWQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKQEAgLTEsOSArMSw0NCBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAKK2ltcG9ydCBxdWV1ZQogaW1wb3J0IHNjaGVkCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorCitUSU1FT1VUID0gMTAKKworCitjbGFzcyBUaW1lcjoKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgc2VsZi5fdGltZSA9IDAKKyAgICAgICAgc2VsZi5fc3RvcCA9IDAKKworICAgIGRlZiB0aW1lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdGltZQorCisgICAgIyBpbmNyZWFzZSB0aGUgdGltZSBidXQgbm90IGJleW9uZCB0aGUgZXN0YWJsaXNoZWQgbGltaXQKKyAgICBkZWYgc2xlZXAoc2VsZiwgdCk6CisgICAgICAgIGFzc2VydCB0ID49IDAKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgorICAgICAgICAgICAgdCArPSBzZWxmLl90aW1lCisgICAgICAgICAgICB3aGlsZSBzZWxmLl9zdG9wIDwgdDoKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lID0gc2VsZi5fc3RvcAorICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCgpCisgICAgICAgICAgICBzZWxmLl90aW1lID0gdAorCisgICAgIyBhZHZhbmNlIHRpbWUgbGltaXQgZm9yIHVzZXIgY29kZQorICAgIGRlZiBhZHZhbmNlKHNlbGYsIHQpOgorICAgICAgICBhc3NlcnQgdCA+PSAwCisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKKyAgICAgICAgICAgIHNlbGYuX3N0b3AgKz0gdAorICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKIAogCiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yNiw2ICs2MSwzNyBAQAogICAgICAgICBzY2hlZHVsZXIucnVuKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBbMC4wMSwgMC4wMiwgMC4wMywgMC4wNCwgMC4wNV0pCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X2VudGVyX2NvbmN1cnJlbnQoc2VsZik6CisgICAgICAgIHEgPSBxdWV1ZS5RdWV1ZSgpCisgICAgICAgIGZ1biA9IHEucHV0CisgICAgICAgIHRpbWVyID0gVGltZXIoKQorICAgICAgICBzY2hlZHVsZXIgPSBzY2hlZC5zY2hlZHVsZXIodGltZXIudGltZSwgdGltZXIuc2xlZXApCisgICAgICAgIHNjaGVkdWxlci5lbnRlcigxLCAxLCBmdW4sICgxLCkpCisgICAgICAgIHNjaGVkdWxlci5lbnRlcigzLCAxLCBmdW4sICgzLCkpCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zY2hlZHVsZXIucnVuKQorICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEuZ2V0KHRpbWVvdXQ9VElNRU9VVCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIGZvciB4IGluIFs0LCA1LCAyXToKKyAgICAgICAgICAgIHogPSBzY2hlZHVsZXIuZW50ZXIoeCAtIDEsIDEsIGZ1biwgKHgsKSkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEuZ2V0KHRpbWVvdXQ9VElNRU9VVCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEuZ2V0KHRpbWVvdXQ9VElNRU9VVCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHRpbWVyLmFkdmFuY2UoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLmdldCh0aW1lb3V0PVRJTUVPVVQpLCA1KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocS5lbXB0eSgpKQorICAgICAgICB0aW1lci5hZHZhbmNlKDEwMDApCisgICAgICAgIHQuam9pbih0aW1lb3V0PVRJTUVPVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5pc19hbGl2ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocS5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVyLnRpbWUoKSwgNSkKKwogICAgIGRlZiB0ZXN0X3ByaW9yaXR5KHNlbGYpOgogICAgICAgICBsID0gW10KICAgICAgICAgZnVuID0gbGFtYmRhIHg6IGwuYXBwZW5kKHgpCkBAIC01MCw2ICsxMTYsMzkgQEAKICAgICAgICAgc2NoZWR1bGVyLnJ1bigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobCwgWzAuMDIsIDAuMDMsIDAuMDRdKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF9jYW5jZWxfY29uY3VycmVudChzZWxmKToKKyAgICAgICAgcSA9IHF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgZnVuID0gcS5wdXQKKyAgICAgICAgdGltZXIgPSBUaW1lcigpCisgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lci50aW1lLCB0aW1lci5zbGVlcCkKKyAgICAgICAgbm93ID0gdGltZXIudGltZSgpCisgICAgICAgIGV2ZW50MSA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAxLCAxLCBmdW4sICgxLCkpCisgICAgICAgIGV2ZW50MiA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAyLCAxLCBmdW4sICgyLCkpCisgICAgICAgIGV2ZW50NCA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyA0LCAxLCBmdW4sICg0LCkpCisgICAgICAgIGV2ZW50NSA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyA1LCAxLCBmdW4sICg1LCkpCisgICAgICAgIGV2ZW50MyA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAzLCAxLCBmdW4sICgzLCkpCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zY2hlZHVsZXIucnVuKQorICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEuZ2V0KHRpbWVvdXQ9VElNRU9VVCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHNjaGVkdWxlci5jYW5jZWwoZXZlbnQyKQorICAgICAgICBzY2hlZHVsZXIuY2FuY2VsKGV2ZW50NSkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocS5lbXB0eSgpKQorICAgICAgICB0aW1lci5hZHZhbmNlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEuZ2V0KHRpbWVvdXQ9VElNRU9VVCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHRpbWVyLmFkdmFuY2UoMTAwMCkKKyAgICAgICAgdC5qb2luKHRpbWVvdXQ9VElNRU9VVCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmlzX2FsaXZlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZXIudGltZSgpLCA0KQorCiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CiAgICAgICAgIGwgPSBbXQogICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKQEAgLTYzLDE1ICsxNjIsMzkgQEAKIAogICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgogICAgICAgICBsID0gW10KLSAgICAgICAgZXZlbnRzID0gW10KICAgICAgICAgZnVuID0gbGFtYmRhIHg6IGwuYXBwZW5kKHgpCiAgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZWR1bGVyLl9xdWV1ZSwgW10pCi0gICAgICAgIGZvciB4IGluIFswLjA1LCAwLjA0LCAwLjAzLCAwLjAyLCAwLjAxXToKLSAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoc2NoZWR1bGVyLmVudGVyYWJzKHgsIDEsIGZ1biwgKHgsKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZWR1bGVyLl9xdWV1ZS5zb3J0KCksIGV2ZW50cy5zb3J0KCkpCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIGU1ID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDUsIDEsIGZ1bikKKyAgICAgICAgZTEgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wMSwgMSwgZnVuKQorICAgICAgICBlMiA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAyLCAxLCBmdW4pCisgICAgICAgIGU0ID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDQsIDEsIGZ1bikKKyAgICAgICAgZTMgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wMywgMSwgZnVuKQorICAgICAgICAjIHF1ZXVlIHByb3BlcnR5IGlzIHN1cHBvc2VkIHRvIHJldHVybiBhbiBvcmRlciBsaXN0IG9mCisgICAgICAgICMgdXBjb21pbmcgZXZlbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzY2hlZHVsZXIucXVldWUpLCBbZTEsIGUyLCBlMywgZTQsIGU1XSkKKworICAgIGRlZiB0ZXN0X2FyZ3Nfa3dhcmdzKHNlbGYpOgorICAgICAgICBmbGFnID0gW10KKworICAgICAgICBkZWYgZnVuKCphLCAqKmIpOgorICAgICAgICAgICAgZmxhZy5hcHBlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgKDEsMiwzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgeyJmb28iOjF9KQorCisgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCisgICAgICAgIHogPSBzY2hlZHVsZXIuZW50ZXJhYnMoMC4wMSwgMSwgZnVuLCBhcmd1bWVudD0oMSwyLDMpLCBrd2FyZ3M9eyJmb28iOjF9KQogICAgICAgICBzY2hlZHVsZXIucnVuKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBbTm9uZV0pCisKKyAgICBkZWYgdGVzdF9ydW5fbm9uX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBsID0gW10KKyAgICAgICAgZnVuID0gbGFtYmRhIHg6IGwuYXBwZW5kKHgpCisgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCisgICAgICAgIGZvciB4IGluIFsxMCwgOSwgOCwgNywgNl06CisgICAgICAgICAgICBzY2hlZHVsZXIuZW50ZXIoeCwgMSwgZnVuLCAoeCwpKQorICAgICAgICBzY2hlZHVsZXIucnVuKGJsb2NraW5nPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwsIFtdKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CmluZGV4IGZiYzg3YWEuLjEyOWExOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY29wZS5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBjcHl0aG9uX29ubHksIHJ1bl91bml0dGVzdAogCiAKIGNsYXNzIFNjb3BlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDk2LDIzICs0OTYsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigieCIsIHZhcm5hbWVzKQogICAgICAgICBzZWxmLmFzc2VydEluKCJ5IiwgdmFybmFtZXMpCiAKKyAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RMb2NhbHNDbGFzc19XaXRoVHJhY2Uoc2VsZik6CiAgICAgICAgICMgSXNzdWUyMzcyODogYWZ0ZXIgdGhlIHRyYWNlIGZ1bmN0aW9uIHJldHVybnMsIHRoZSBsb2NhbHMoKQogICAgICAgICAjIGRpY3Rpb25hcnkgaXMgdXNlZCB0byB1cGRhdGUgYWxsIHZhcmlhYmxlcywgdGhpcyB1c2VkIHRvCiAgICAgICAgICMgaW5jbHVkZSBmcmVlIHZhcmlhYmxlcy4gQnV0IGluIGNsYXNzIHN0YXRlbWVudHMsIGZyZWUKICAgICAgICAgIyB2YXJpYWJsZXMgYXJlIG5vdCBpbnNlcnRlZC4uLgogICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzeXMuc2V0dHJhY2UobGFtYmRhIGEsYixjOk5vbmUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHggPSAxMgorICAgICAgICB4ID0gMTIKIAotICAgICAgICAgICAgY2xhc3MgQzoKLSAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiB4CiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMTIpICMgVXNlZCB0byByYWlzZSBVbmJvdW5kTG9jYWxFcnJvcgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMTIpICMgVXNlZCB0byByYWlzZSBVbmJvdW5kTG9jYWxFcnJvcgogCiAgICAgZGVmIHRlc3RCb3VuZEFuZEZyZWUoc2VsZik6CiAgICAgICAgICMgdmFyIGlzIGJvdW5kIGFuZCBmcmVlIGluIGNsYXNzCkBAIC01MjcsNiArNTI2LDcgQEAKICAgICAgICAgaW5zdCA9IGYoMykoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3QuYSwgaW5zdC5tKCkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RJbnRlcmFjdGlvbldpdGhUcmFjZUZ1bmMoc2VsZik6CiAKICAgICAgICAgaW1wb3J0IHN5cwpAQCAtNTQzLDYgKzU0Myw3IEBACiAgICAgICAgIGNsYXNzIFRlc3RDbGFzczoKICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlcikKICAgICAgICAgYWRhcHRnZXR0ZXIoImZvbyIsIFRlc3RDbGFzcywgKDEsICIiKSkKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CmluZGV4IDRkZGMyMTcuLmRkYjlhMGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CkBAIC0xLDggKzEsOSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzZWxlY3QKK2ltcG9ydCBlcnJubwogaW1wb3J0IG9zCitpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybVs6M10gaW4gKCd3aW4nLCAnb3MyJywgJ3Jpc2NvcycpLAogICAgICAgICAgICAgICAgICAiY2FuJ3QgZWFzaWx5IHRlc3Qgb24gdGhpcyBzeXN0ZW0iKQpAQCAtMjAsNiArMjEsMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbc2VsZi5Ob3BlKCldLCBbXSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW3NlbGYuQWxtb3N0KCldLCBbXSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW10sIFtdLCBbXSwgIm5vdCBhIG51bWJlciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtdLCBbXSwgW10sIC0xKQorCisgICAgIyBJc3N1ZSAjMTIzNjc6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3F1ZXJ5LXByLmNnaT9wcj1rZXJuLzE1NTYwNgorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSwKKyAgICAgICAgICAgICAgICAgICAgICdza2lwIGJlY2F1c2Ugb2YgYSBGcmVlQlNEIGJ1Zzoga2Vybi8xNTU2MDYnKQorICAgIGRlZiB0ZXN0X2Vycm5vKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oX19maWxlX18sICdyYicpIGFzIGZwOgorICAgICAgICAgICAgZmQgPSBmcC5maWxlbm8oKQorICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW2ZkXSwgW10sIFtdLCAwKQorICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4Y2VwdGlvbiBub3QgcmFpc2VkIikKIAogICAgIGRlZiB0ZXN0X3JldHVybmVkX2xpc3RfaWRlbnRpdHkoc2VsZik6CiAgICAgICAgICMgU2VlIGlzc3VlICM4MzI5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CmluZGV4IDY2NDI0NDAuLjhlOWU1ODcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIAogY2xhc3MgUGFzc1RocnUoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0yMzQsNiArMjM1LDI2IEBACiAgICAgICAgICAgICAgICAgZHVwID0gcGlja2xlLmxvYWRzKHApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnMueCwgZHVwLngpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgaXRvcmcgPSBpdGVyKHNlbGYucykKKyAgICAgICAgZGF0YSA9IHNlbGYudGhldHlwZShzZWxmLnMpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgU2V0IGl0ZXJhdG9ycyB1bnBpY2tsZSBhcyBsaXN0IGl0ZXJhdG9ycyBkdWUgdG8gdGhlCisgICAgICAgICMgdW5kZWZpbmVkIG9yZGVyIG9mIHNldCBpdGVtcy4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGV0eXBlKGl0KSwgZGF0YSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZXR5cGUoaXQpLCBkYXRhIC0gc2VsZi50aGV0eXBlKChkcm9wLCkpKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIGNsYXNzIFRyYWNlcjoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NoZWx2ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CmluZGV4IDNlNzNmNTIuLjEzYzEyNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CkBAIC0yLDcgKzIsNyBAQAogaW1wb3J0IHNoZWx2ZQogaW1wb3J0IGdsb2IKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZwogZnJvbSB0ZXN0LnRlc3RfZGJtIGltcG9ydCBkYm1faXRlcmF0b3IKIAogZGVmIEwxKHMpOgpAQCAtMTI5LDggKzEyOSw4IEBACiAgICAgICAgIHNoZWx2ZS5TaGVsZihkKVtrZXldID0gWzFdCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmVuY29kZSgndXRmLTgnKSwgZCkKICAgICAgICAgIyBidXQgYSBkaWZmZXJlbnQgb25lIGNhbiBiZSBnaXZlbgotICAgICAgICBzaGVsdmUuU2hlbGYoZCwga2V5ZW5jb2Rpbmc9J2xhdGluMScpW2tleV0gPSBbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZW5jb2RlKCdsYXRpbjEnKSwgZCkKKyAgICAgICAgc2hlbHZlLlNoZWxmKGQsIGtleWVuY29kaW5nPSdsYXRpbi0xJylba2V5XSA9IFsxXQorICAgICAgICBzZWxmLmFzc2VydEluKGtleS5lbmNvZGUoJ2xhdGluLTEnKSwgZCkKICAgICAgICAgIyB3aXRoIGFsbCBjb25zZXF1ZW5jZXMKICAgICAgICAgcyA9IHNoZWx2ZS5TaGVsZihkLCBrZXllbmNvZGluZz0nYXNjaWknKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHMuX19zZXRpdGVtX18sIGtleSwgWzFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggMjVlNGI2ZC4uZDQ0NjNmMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0xLDYgKzEsNyBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MsIHN5cywgaW8KK2ltcG9ydCBpbwogaW1wb3J0IHNobGV4CitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTE3Myw2ICsxNzQsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAlcyAhPSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYXRhW2ldWzBdLCBsLCBzZWxmLmRhdGFbaV1bMTpdKSkKIAorICAgIGRlZiB0ZXN0UXVvdGUoc2VsZik6CisgICAgICAgIHNhZmV1bnF1b3RlZCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJworICAgICAgICB1bmljb2RlX3NhbXBsZSA9ICdceGU5XHhlMFx4ZGYnICAjIGUgKyBhY3V0ZSBhY2NlbnQsIGEgKyBncmF2ZSwgc2hhcnAgcworICAgICAgICB1bnNhZmUgPSAnImAkXFwhJyArIHVuaWNvZGVfc2FtcGxlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgnJyksICInJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoc2FmZXVucXVvdGVkKSwgc2FmZXVucXVvdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCd0ZXN0IGZpbGUgbmFtZScpLCAiJ3Rlc3QgZmlsZSBuYW1lJyIpCisgICAgICAgIGZvciB1IGluIHVuc2FmZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoJ3Rlc3Qlc25hbWUnICUgdSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzbmFtZSciICUgdSkKKyAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgidGVzdCVzJ25hbWUnIiAlIHUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3QlcydcIidcIiduYW1lJ1wiJ1wiJyciICUgdSkKKworCiAjIEFsbG93IHRoaXMgdGVzdCB0byBiZSB1c2VkIHdpdGggb2xkIHNobGV4LnB5CiBpZiBub3QgZ2V0YXR0cihzaGxleCwgInNwbGl0IiwgTm9uZSk6CiAgICAgZm9yIG1ldGhuYW1lIGluIGRpcihTaGxleFRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCBhOWI0Njc2Li4wMWI5M2ZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtNyw4ICs3LDkgQEAKIGltcG9ydCBzdGF0CiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gb3MucGF0aCBpbXBvcnQgc3BsaXRkcml2ZQpAQCAtMjIsNyArMjMsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dCwgcmVxdWlyZXNfemxpYgogCiB0cnk6CiAgICAgaW1wb3J0IGJ6MgpAQCAtNDAsMTEgKzQxLDYgQEAKICAgICBVSURfR0lEX1NVUFBPUlQgPSBGYWxzZQogCiB0cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCi10cnk6CiAgICAgaW1wb3J0IHppcGZpbGUKICAgICBaSVBfU1VQUE9SVCA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTUyLDcgKzQ4LDcgQEAKIAogZGVmIF9mYWtlX3JlbmFtZSgqYXJncywgKiprd2FyZ3MpOgogICAgICMgUHJldGVuZCB0aGUgZGVzdGluYXRpb24gcGF0aCBpcyBvbiBhIGRpZmZlcmVudCBmaWxlc3lzdGVtLgotICAgIHJhaXNlIE9TRXJyb3IoKQorICAgIHJhaXNlIE9TRXJyb3IoZ2V0YXR0cihlcnJubywgJ0VYREVWJywgMTgpLCAiSW52YWxpZCBjcm9zcy1kZXZpY2UgbGluayIpCiAKIGRlZiBtb2NrX3JlbmFtZShmdW5jKToKICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCkBAIC02NSw2ICs2MSwzMSBAQAogICAgICAgICAgICAgb3MucmVuYW1lID0gYnVpbHRpbl9yZW5hbWUKICAgICByZXR1cm4gd3JhcAogCitkZWYgd3JpdGVfZmlsZShwYXRoLCBjb250ZW50LCBiaW5hcnk9RmFsc2UpOgorICAgICIiIldyaXRlICpjb250ZW50KiB0byBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAnd2InIGlmIGJpbmFyeSBlbHNlICd3JykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCisKK2RlZiByZWFkX2ZpbGUocGF0aCwgYmluYXJ5PUZhbHNlKToKKyAgICAiIiJSZXR1cm4gY29udGVudHMgZnJvbSBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAncmInIGlmIGJpbmFyeSBlbHNlICdyJykgYXMgZnA6CisgICAgICAgIHJldHVybiBmcC5yZWFkKCkKKworCiBjbGFzcyBUZXN0U2h1dGlsKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTc3LDE5ICs5OCw2IEBACiAgICAgICAgICAgICBkID0gc2VsZi50ZW1wZGlycy5wb3AoKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkLCBvcy5uYW1lIGluICgnbnQnLCAnY3lnd2luJykpCiAKLSAgICBkZWYgd3JpdGVfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50PSd4eHgnKToKLSAgICAgICAgIiIiV3JpdGVzIGEgZmlsZSBpbiB0aGUgZ2l2ZW4gcGF0aC4KLQotCi0gICAgICAgIHBhdGggY2FuIGJlIGEgc3RyaW5nIG9yIGEgc2VxdWVuY2UuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aCkKLSAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBta2R0ZW1wKHNlbGYpOgogICAgICAgICAiIiJDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBjbGVhbmVkIHVwLgpAQCAtMTAwLDYgKzEwOCwxNSBAQAogICAgICAgICBzZWxmLnRlbXBkaXJzLmFwcGVuZChkKQogICAgICAgICByZXR1cm4gZAogCisgICAgZGVmIHRlc3Rfcm10cmVlX3dvcmtzX29uX2J5dGVzKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICB2aWN0aW0gPSBvcy5wYXRoLmpvaW4odG1wLCAna2lsbG1lJykKKyAgICAgICAgb3MubWtkaXIodmljdGltKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbih2aWN0aW0sICdzb21lZmlsZScpLCAnZm9vJykKKyAgICAgICAgdmljdGltID0gb3MuZnNlbmNvZGUodmljdGltKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmljdGltLCBieXRlcykKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfcm10cmVlX2ZhaWxzX29uX3N5bWxpbmsoc2VsZik6CiAgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCkBAIC0xMTksMTggKzEzNiw0MCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yc1swXVsxXSwgbGluaykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVycm9yc1swXVsyXVsxXSwgT1NFcnJvcikKIAorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9ybXRyZWVfd29ya3Nfb25fc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRpcjEgPSBvcy5wYXRoLmpvaW4odG1wLCAnZGlyMScpCisgICAgICAgIGRpcjIgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2RpcjInKQorICAgICAgICBkaXIzID0gb3MucGF0aC5qb2luKHRtcCwgJ2RpcjMnKQorICAgICAgICBmb3IgZCBpbiBkaXIxLCBkaXIyLCBkaXIzOgorICAgICAgICAgICAgb3MubWtkaXIoZCkKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wLCAnZmlsZTEnKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUxLCAnZm9vJykKKyAgICAgICAgbGluazEgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmsxJykKKyAgICAgICAgb3Muc3ltbGluayhkaXIyLCBsaW5rMSkKKyAgICAgICAgbGluazIgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmsyJykKKyAgICAgICAgb3Muc3ltbGluayhkaXIzLCBsaW5rMikKKyAgICAgICAgbGluazMgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmszJykKKyAgICAgICAgb3Muc3ltbGluayhmaWxlMSwgbGluazMpCisgICAgICAgICMgbWFrZSBzdXJlIHN5bWxpbmtzIGFyZSByZW1vdmVkIGJ1dCBub3QgZm9sbG93ZWQKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXIxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcjEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyMykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlMSkpCisKICAgICBkZWYgdGVzdF9ybXRyZWVfZXJyb3JzKHNlbGYpOgogICAgICAgICAjIGZpbGVuYW1lIGlzIGd1YXJhbnRlZWQgbm90IHRvIGV4aXN0CiAgICAgICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgZmlsZW5hbWUpCi0gICAgICAgICMgdGVzdCB0aGF0IGlnbm9yZV9lcnJvcnMgb3B0aW9uIGlzIGhvbm91cmVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzaHV0aWwucm10cmVlLCBmaWxlbmFtZSkKKyAgICAgICAgIyB0ZXN0IHRoYXQgaWdub3JlX2Vycm9ycyBvcHRpb24gaXMgaG9ub3JlZAogICAgICAgICBzaHV0aWwucm10cmVlKGZpbGVuYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKICAgICAgICAgIyBleGlzdGluZyBmaWxlCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZSgodG1wZGlyLCAidHN0ZmlsZSIpLCAiIikKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAidHN0ZmlsZSIpLCAiIikKICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAidHN0ZmlsZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90QURpcmVjdG9yeUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZmlsZW5hbWUpCiAgICAgICAgICMgVGhlIHJlYXNvbiBmb3IgdGhpcyByYXRoZXIgb2RkIGNvbnN0cnVjdCBpcyB0aGF0IFdpbmRvd3Mgc3ByaW5rbGVzCiAgICAgICAgICMgYSBcKi4qIGF0IHRoZSBlbmQgb2YgZmlsZSBuYW1lcy4gQnV0IG9ubHkgc29tZXRpbWVzIG9uIHNvbWUgYnVpbGRib3RzCkBAIC0xNDcsMTMgKzE4NiwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlcnJvcnMpLCAyKQogICAgICAgICBzZWxmLmFzc2VydElzKGVycm9yc1swXVswXSwgb3MubGlzdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcnNbMF1bMV0sIGZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyb3JzWzBdWzJdWzFdLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyb3JzWzBdWzJdWzFdLCBOb3RBRGlyZWN0b3J5RXJyb3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3JzWzBdWzJdWzFdLmZpbGVuYW1lLCBwb3NzaWJsZV9hcmdzKQogICAgICAgICBzZWxmLmFzc2VydElzKGVycm9yc1sxXVswXSwgb3Mucm1kaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3JzWzFdWzFdLCBmaWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVycm9yc1sxXVsyXVsxXSwgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVycm9yc1sxXVsyXVsxXSwgTm90QURpcmVjdG9yeUVycm9yKQogICAgICAgICBzZWxmLmFzc2VydEluKGVycm9yc1sxXVsyXVsxXS5maWxlbmFtZSwgcG9zc2libGVfYXJncykKIAorCiAgICAgIyBTZWUgYnVnICMxMDcxNTEzIGZvciB3aHkgd2UgZG9uJ3QgcnVuIHRoaXMgb24gY3lnd2luCiAgICAgIyBhbmQgYnVnICMxMDc2NDY3IGZvciB3aHkgd2UgZG9uJ3QgcnVuIHRoaXMgYXMgcm9vdC4KICAgICBpZiAoaGFzYXR0cihvcywgJ2NobW9kJykgYW5kIHN5cy5wbGF0Zm9ybVs6Nl0gIT0gJ2N5Z3dpbicKQEAgLTE2MSwzMCArMjAxLDM0IEBACiAgICAgICAgIGRlZiB0ZXN0X29uX2Vycm9yKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMAogICAgICAgICAgICAgb3MubWtkaXIoVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5jaGlsZHBhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYScpCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLmNoaWxkcGF0aCwgJ3cnKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgVEVTVEZOKQorCisgICAgICAgICAgICBzZWxmLmNoaWxkX2ZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sICdhJykKKyAgICAgICAgICAgIHNlbGYuY2hpbGRfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYicpCisgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHNlbGYuY2hpbGRfZmlsZV9wYXRoKQorICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5jaGlsZF9kaXJfcGF0aCkKICAgICAgICAgICAgIG9sZF9kaXJfbW9kZSA9IG9zLnN0YXQoVEVTVEZOKS5zdF9tb2RlCi0gICAgICAgICAgICBvbGRfY2hpbGRfbW9kZSA9IG9zLnN0YXQoc2VsZi5jaGlsZHBhdGgpLnN0X21vZGUKKyAgICAgICAgICAgIG9sZF9jaGlsZF9maWxlX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRfZmlsZV9wYXRoKS5zdF9tb2RlCisgICAgICAgICAgICBvbGRfY2hpbGRfZGlyX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRfZGlyX3BhdGgpLnN0X21vZGUKICAgICAgICAgICAgICMgTWFrZSB1bndyaXRhYmxlLgotICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZHBhdGgsIHN0YXQuU19JUkVBRCkKLSAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgc3RhdC5TX0lSRUFEKQorICAgICAgICAgICAgbmV3X21vZGUgPSBzdGF0LlNfSVJFQUR8c3RhdC5TX0lFWEVDCisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkX2ZpbGVfcGF0aCwgbmV3X21vZGUpCisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkX2Rpcl9wYXRoLCBuZXdfbW9kZSkKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgbmV3X21vZGUpCisKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaG1vZCwgVEVTVEZOLCBvbGRfZGlyX21vZGUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIHNlbGYuY2hpbGRfZmlsZV9wYXRoLCBvbGRfY2hpbGRfZmlsZV9tb2RlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzZWxmLmNoaWxkX2Rpcl9wYXRoLCBvbGRfY2hpbGRfZGlyX21vZGUpCiAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBvbmVycm9yPXNlbGYuY2hlY2tfYXJnc190b19vbmVycm9yKQogICAgICAgICAgICAgIyBUZXN0IHdoZXRoZXIgb25lcnJvciBoYXMgYWN0dWFsbHkgYmVlbiBjYWxsZWQuCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3JTdGF0ZSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGNhbGwgdG8gb25lcnJvciBmdW5jdGlvbiBkaWQgbm90IGhhcHBlbi4iKQotCi0gICAgICAgICAgICAjIE1ha2Ugd3JpdGFibGUgYWdhaW4uCi0gICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIG9sZF9kaXJfbW9kZSkKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRwYXRoLCBvbGRfY2hpbGRfbW9kZSkKLQotICAgICAgICAgICAgIyBDbGVhbiB1cC4KLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVycm9yU3RhdGUsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBjYWxsIHRvIG9uZXJyb3IgZnVuY3Rpb24gZGlkIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXBwZW4uIikKIAogICAgIGRlZiBjaGVja19hcmdzX3RvX29uZXJyb3Ioc2VsZiwgZnVuYywgYXJnLCBleGMpOgogICAgICAgICAjIHRlc3Rfcm10cmVlX2Vycm9ycyBkZWxpYmVyYXRlbHkgcnVucyBybXRyZWUKLSAgICAgICAgIyBvbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNobW9kIDQwMCwgd2hpY2ggd2lsbCBmYWlsLgorICAgICAgICAjIG9uIGEgZGlyZWN0b3J5IHRoYXQgaXMgY2htb2QgNTAwLCB3aGljaCB3aWxsIGZhaWwuCiAgICAgICAgICMgVGhpcyBmdW5jdGlvbiBpcyBydW4gd2hlbiBzaHV0aWwucm10cmVlIGZhaWxzLgogICAgICAgICAjIDk5LjklIG9mIHRoZSB0aW1lIGl0IGluaXRpYWxseSBmYWlscyB0byByZW1vdmUKICAgICAgICAgIyBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSwgc28gdGhlIGZpcnN0IHRpbWUgdGhyb3VnaApAQCAtMTkzLDk5ICsyMzcsNDM2IEBACiAgICAgICAgICMgRlVTRSBleHBlcmllbmNlZCBhIGZhaWx1cmUgZWFybGllciBpbiB0aGUgcHJvY2VzcwogICAgICAgICAjIGF0IG9zLmxpc3RkaXIuICBUaGUgZmlyc3QgZmFpbHVyZSBtYXkgbGVnYWxseQogICAgICAgICAjIGJlIGVpdGhlci4KLSAgICAgICAgaWYgc2VsZi5lcnJvclN0YXRlID09IDA6Ci0gICAgICAgICAgICBpZiBmdW5jIGlzIG9zLnJlbW92ZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZHBhdGgpCisgICAgICAgIGlmIHNlbGYuZXJyb3JTdGF0ZSA8IDI6CisgICAgICAgICAgICBpZiBmdW5jIGlzIG9zLnVubGluazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZF9maWxlX3BhdGgpCisgICAgICAgICAgICBlbGlmIGZ1bmMgaXMgb3Mucm1kaXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRfZGlyX3BhdGgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZnVuYywgb3MubGlzdGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jIG11c3QgYmUgZWl0aGVyIG9zLnJlbW92ZSBvciBvcy5saXN0ZGlyIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgVEVTVEZOKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZnVuYywgb3MubGlzdGRpcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGFyZywgW1RFU1RGTiwgc2VsZi5jaGlsZF9kaXJfcGF0aF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhleGNbMF0sIE9TRXJyb3IpKQotICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMQorICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlICs9IDEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYywgb3Mucm1kaXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgVEVTVEZOKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZXhjWzBdLCBPU0Vycm9yKSkKLSAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDIKKyAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDMKKworICAgIGRlZiB0ZXN0X3JtdHJlZV9kb2VzX25vdF9jaG9rZV9vbl9mYWlsaW5nX2xzdGF0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX2xzdGF0ID0gb3MubHN0YXQKKyAgICAgICAgICAgIGRlZiByYWlzZXIoZm4sICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgaWYgZm4gIT0gVEVTVEZOOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ19sc3RhdChmbikKKyAgICAgICAgICAgIG9zLmxzdGF0ID0gcmFpc2VyCisKKyAgICAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKFRFU1RGTiwgJ2ZvbycpLCAnZm9vJykKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MubHN0YXQgPSBvcmlnX2xzdGF0CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmNobW9kJykKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weW1vZGVfZm9sbG93X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgb3MuY2htb2Qoc3JjLCBzdGF0LlNfSVJXWFV8c3RhdC5TX0lSV1hHKQorICAgICAgICAjIGZpbGUgdG8gZmlsZQorICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IHNyYyBsaW5rCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IGRzdCBsaW5rCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IGJvdGggbGlua3MKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdsY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmxjaG1vZCcpCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHltb2RlX3N5bWxpbmtfdG9fc3ltbGluayhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIG9zLmNobW9kKHNyYywgc3RhdC5TX0lSV1hVfHN0YXQuU19JUldYRykKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWFUpCisgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hPfHN0YXQuU19JUldYRykKKyAgICAgICAgIyBsaW5rIHRvIGxpbmsKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5sc3RhdChzcmNfbGluaykuc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChkc3RfbGluaykuc3RfbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgc3JjIGxpbmsgLSB1c2UgY2htb2QKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGRzdCBsaW5rIC0gdXNlIGNobW9kCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihvcywgJ2xjaG1vZCcpLCAncmVxdWlyZXMgb3MubGNobW9kIHRvIGJlIG1pc3NpbmcnKQorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5bW9kZV9zeW1saW5rX3RvX3N5bWxpbmtfd29fbGNobW9kKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKSAgIyBzaWxlbnQgZmFpbAorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHlzdGF0X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBzcmNfc3RhdCA9IG9zLnN0YXQoc3JjKQorICAgICAgICBvcy51dGltZShzcmMsIChzcmNfc3RhdC5zdF9hdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3JjX3N0YXQuc3RfbXRpbWUgLSA0Mi4wKSkgICMgZW5zdXJlIGRpZmZlcmVudCBtdGltZXMKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tdGltZSwgb3Muc3RhdChkc3QpLnN0X210aW1lKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX2xpbmtfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBkb24ndCBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBkc3RfbGlua19zdGF0ID0gb3MubHN0YXQoZHN0X2xpbmspCisgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdzdF9hdGltZScsICdzdF9tdGltZSc6CisgICAgICAgICAgICAgICAgIyBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIG1heSBiZSB0cnVuY2F0ZWQgaW4gdGhlIG5ldyBmaWxlLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGdldGF0dHIoc3JjX2xpbmtfc3RhdCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihkc3RfbGlua19zdGF0LCBhdHRyKSArIDEpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBkc3RfbGlua19zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHNyY19saW5rX3N0YXQsICdzdF9mbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X2ZsYWdzLCBkc3RfbGlua19zdGF0LnN0X2ZsYWdzKQorICAgICAgICAjIHRlbGwgdG8gZm9sbG93IGJ1dCBkc3QgaXMgbm90IGEgbGluaworICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYWJzKG9zLnN0YXQoc3JjKS5zdF9tdGltZSAtIG9zLnN0YXQoZHN0KS5zdF9tdGltZSkgPAorICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAuMSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VPUE5PVFNVUFAnKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU5PVFNVUCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBvcy5jaGZsYWdzLCBFT1BOT1RTVVBQICYgRU5PVFNVUCIpCisgICAgZGVmIHRlc3RfY29weXN0YXRfaGFuZGxlc19oYXJtbGVzc19jaGZsYWdzX2Vycm9ycyhzZWxmKToKKyAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTEnKQorICAgICAgICBmaWxlMiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMicpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZTEsICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUyLCAneHh4JykKKworICAgICAgICBkZWYgbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpOgorICAgICAgICAgICAgZXggPSBPU0Vycm9yKCkKKworICAgICAgICAgICAgZGVmIF9jaGZsYWdzX3JhaXNlcihwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICAgICAgICAgICAgIGV4LmVycm5vID0gZXJyCisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKyAgICAgICAgICAgIHJldHVybiBfY2hmbGFnc19yYWlzZXIKKyAgICAgICAgb2xkX2NoZmxhZ3MgPSBvcy5jaGZsYWdzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBlcnIgaW4gZXJybm8uRU9QTk9UU1VQUCwgZXJybm8uRU5PVFNVUDoKKyAgICAgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpCisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KGZpbGUxLCBmaWxlMikKKyAgICAgICAgICAgICMgYXNzZXJ0IG90aGVycyBlcnJvcnMgYnJlYWsgaXQKKyAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycm5vLkVPUE5PVFNVUFAgKyBlcnJuby5FTk9UU1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLmNvcHlzdGF0LCBmaWxlMSwgZmlsZTIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGZsYWdzID0gb2xkX2NoZmxhZ3MKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgZGVmIHRlc3RfY29weXhhdHRyKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorCisgICAgICAgICMgbm8geGF0dHIgPT0gbm8gcHJvYmxlbQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgIyBjb21tb24gY2FzZQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmZvbycsIGInNDInKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmJhcicsIGInNDMnKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5saXN0eGF0dHIoc3JjKSwgb3MubGlzdHhhdHRyKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoc3JjLCAndXNlci5mb28nKSwKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihkc3QsICd1c2VyLmZvbycpKQorICAgICAgICAjIGNoZWNrIGVycm9ycyBkb24ndCBhZmZlY3Qgb3RoZXIgYXR0cnMKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBvc19lcnJvciA9IE9TRXJyb3IoZXJybm8uRVBFUk0sICdFUEVSTScpCisKKyAgICAgICAgZGVmIF9yYWlzZV9vbl91c2VyX2ZvbyhmbmFtZSwgYXR0ciwgdmFsLCAqKmt3YXJncyk6CisgICAgICAgICAgICBpZiBhdHRyID09ICd1c2VyLmZvbyc6CisgICAgICAgICAgICAgICAgcmFpc2Ugb3NfZXJyb3IKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3JpZ19zZXR4YXR0cihmbmFtZSwgYXR0ciwgdmFsLCAqKmt3YXJncykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zZXR4YXR0ciA9IG9zLnNldHhhdHRyCisgICAgICAgICAgICBvcy5zZXR4YXR0ciA9IF9yYWlzZV9vbl91c2VyX2ZvbworICAgICAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1c2VyLmJhcicsIG9zLmxpc3R4YXR0cihkc3QpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3Muc2V0eGF0dHIgPSBvcmlnX3NldHhhdHRyCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgc2h1dGlsLmNvcHlzdGF0IGNvcGllcyB4YXR0cnMKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICd0aGVfb3JpZ2luYWwnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgc3JjKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLnRoZV92YWx1ZScsIGInZmlkZGx5JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICd0aGVfY29weScpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCBkc3QpCisgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3QsICd1c2VyLnRoZV92YWx1ZScpLCBiJ2ZpZGRseScpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgPT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdCBwcml2aWxlZ2VzIHJlcXVpcmVkJykKKyAgICBkZWYgdGVzdF9jb3B5eGF0dHJfc3ltbGlua3Moc2VsZik6CisgICAgICAgICMgT24gTGludXgsIGl0J3Mgb25seSBwb3NzaWJsZSB0byBhY2Nlc3Mgbm9uLXVzZXIgeGF0dHIgZm9yIHN5bWxpbmtzOworICAgICAgICAjIHdoaWNoIGluIHR1cm4gcmVxdWlyZSByb290IHByaXZpbGVnZXMuIFRoaXMgdGVzdCBzaG91bGQgYmUgZXhwYW5kZWQKKyAgICAgICAgIyBhcyBzb29uIGFzIG90aGVyIHBsYXRmb3JtcyBnYWluIHN1cHBvcnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndHJ1c3RlZC5mb28nLCBiJzQyJykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjX2xpbmssICd0cnVzdGVkLmZvbycsIGInNDMnLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3RfbGluaywgJ3RydXN0ZWQuZm9vJywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwgYic0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmdldHhhdHRyLCBkc3QsICd0cnVzdGVkLmZvbycpCisgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3QsICd0cnVzdGVkLmZvbycpLCBiJzQzJykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5KHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyYyksIHJlYWRfZmlsZShkc3QpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIG9zLnJlYWRsaW5rKHNyY19saW5rKSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5sc3RhdChzcmNfbGluaykuc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubHN0YXQoZHN0KS5zdF9tb2RlKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHkyX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5zdGF0KHNyYykKKyAgICAgICAgc3JjX2xpbmtfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weTIoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjKSwgcmVhZF9maWxlKGRzdCkpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5MihzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIG9zLnJlYWRsaW5rKHNyY19saW5rKSkKKyAgICAgICAgZHN0X3N0YXQgPSBvcy5sc3RhdChkc3QpCisgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdzdF9hdGltZScsICdzdF9tdGltZSc6CisgICAgICAgICAgICAgICAgIyBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIG1heSBiZSB0cnVuY2F0ZWQgaW4gdGhlIG5ldyBmaWxlLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGdldGF0dHIoc3JjX2xpbmtfc3RhdCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihkc3Rfc3RhdCwgYXR0cikgKyAxKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgZHN0X3N0YXQuc3RfbW9kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3JjX3N0YXQuc3RfbW9kZSwgZHN0X3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3JjX2xpbmtfc3RhdCwgJ3N0X2ZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfZmxhZ3MsIGRzdF9zdGF0LnN0X2ZsYWdzKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBkZWYgdGVzdF9jb3B5Ml94YXR0cihzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3VzZXIuZm9vJywgYic0MicpCisgICAgICAgIHNodXRpbC5jb3B5MihzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihzcmMsICd1c2VyLmZvbycpLAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKGRzdCwgJ3VzZXIuZm9vJykpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weWZpbGVfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3NyYycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdF9saW5rJykKKyAgICAgICAgbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnbGluaycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIGxpbmspCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShsaW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGxpbmspLCBvcy5yZWFkbGluayhkc3RfbGluaykpCisgICAgICAgICMgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShsaW5rLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKworICAgIGRlZiB0ZXN0X3JtdHJlZV91c2VzX3NhZmVfZmRfdmVyc2lvbl9pZl9hdmFpbGFibGUoc2VsZik6CisgICAgICAgIF91c2VfZmRfZnVuY3Rpb25zID0gKHtvcy5vcGVuLCBvcy5zdGF0LCBvcy51bmxpbmssIG9zLnJtZGlyfSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdXBwb3J0c19kaXJfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzKQorICAgICAgICBpZiBfdXNlX2ZkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaHV0aWwuX3VzZV9mZF9mdW5jdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2h1dGlsLnJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzKQorICAgICAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBkID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdhJykKKyAgICAgICAgICAgIG9zLm1rZGlyKGQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVhbF9ybXRyZWUgPSBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkCisgICAgICAgICAgICAgICAgY2xhc3MgQ2FsbGVkKEV4Y2VwdGlvbik6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgX3JhaXNlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDYWxsZWQKKyAgICAgICAgICAgICAgICBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkID0gX3JhaXNlcgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKENhbGxlZCwgc2h1dGlsLnJtdHJlZSwgZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2h1dGlsLl9ybXRyZWVfc2FmZV9mZCA9IHJlYWxfcm10cmVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNodXRpbC5fdXNlX2ZkX2Z1bmN0aW9ucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2h1dGlsLnJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzKQogCiAgICAgZGVmIHRlc3Rfcm10cmVlX2RvbnRfZGVsZXRlX2ZpbGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBjYWxsZWQgb24gYSBmaWxlIGluc3RlYWQgb2YgYSBkaXJlY3RvcnksIGRvbid0IGRlbGV0ZSBpdC4KICAgICAgICAgaGFuZGxlLCBwYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgIG9zLmZkb3BlbihoYW5kbGUpLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgcGF0aCkKKyAgICAgICAgb3MuY2xvc2UoaGFuZGxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RBRGlyZWN0b3J5RXJyb3IsIHNodXRpbC5ybXRyZWUsIHBhdGgpCiAgICAgICAgIG9zLnJlbW92ZShwYXRoKQogCi0gICAgZGVmIF93cml0ZV9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgotICAgICAgICBmID0gb3BlbihwYXRoLCAidyIpCi0gICAgICAgIGYud3JpdGUoZGF0YSkKLSAgICAgICAgZi5jbG9zZSgpCi0KICAgICBkZWYgdGVzdF9jb3B5dHJlZV9zaW1wbGUoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJlYWRfZGF0YShwYXRoKToKLSAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQogICAgICAgICBzcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4odGVtcGZpbGUubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBzcmNfZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgb3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgIGFjdHVhbCA9IHJlYWRfZGF0YShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzEyMycpCi0gICAgICAgICAgICBhY3R1YWwgPSByZWFkX2RhdGEob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICc0NTYnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9yIHBhdGggaW4gKAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoc3JjX2RpciwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC50eHQnKSkpCisgICAgICAgIGFjdHVhbCA9IHJlYWRfZmlsZSgoZHN0X2RpciwgJ3Rlc3QudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnMTIzJykKKyAgICAgICAgYWN0dWFsID0gcmVhZF9maWxlKChkc3RfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICc0NTYnKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnc3JjJykKKyAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0JykKKyAgICAgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnc3ViJykKKyAgICAgICAgb3MubWtkaXIoc3JjX2RpcikKKyAgICAgICAgb3MubWtkaXIoc3ViX2RpcikKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ2ZpbGUudHh0JyksICdmb28nKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbihzdWJfZGlyLCAnbGluaycpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWIvbGluaycpCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5qb2luKHNyY19kaXIsICdmaWxlLnR4dCcpLAorICAgICAgICAgICAgICAgICAgIHNyY19saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYTykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3RhdCwgJ1VGX05PRFVNUCcpOgorICAgICAgICAgICAgb3MubGNoZmxhZ3Moc3JjX2xpbmssIHN0YXQuVUZfTk9EVU1QKQorICAgICAgICBzcmNfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2Rpciwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViJywgJ2xpbmsnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZGxpbmsob3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWInLCAnbGluaycpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZpbGUudHh0JykpCisgICAgICAgIGRzdF9zdGF0ID0gb3MubHN0YXQoZHN0X2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0X3N0YXQuc3RfbW9kZSwgc3JjX3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdF9zdGF0LnN0X2ZsYWdzLCBzcmNfc3RhdC5zdF9mbGFncykKIAogICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3dpdGhfZXhjbHVkZShzZWxmKToKLQotICAgICAgICBkZWYgcmVhZF9kYXRhKHBhdGgpOgotICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQotCiAgICAgICAgICMgY3JlYXRpbmcgZGF0YQogICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCiAgICAgICAgIGV4aXN0cyA9IG9zLnBhdGguZXhpc3RzCiAgICAgICAgIHNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZHN0X2RpciA9IGpvaW4odGVtcGZpbGUubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdC50bXAnKSwgJzEyMycpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50bXAnKSwgJzEyMycpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNDU2JykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLCAndGVzdC5weScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNDU2JykKLQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLCAndGVzdC5weScpLCAnNDU2JykKIAogICAgICAgICAgICAgIyB0ZXN0aW5nIGdsb2ItbGlrZSBwYXR0ZXJucwogICAgICAgICAgICAgdHJ5OgpAQCAtMjkzLDIxICs2NzQsMTkgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPXBhdHRlcm5zKQogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicpKSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGF0dGVybnMgPSBzaHV0aWwuaWdub3JlX3BhdHRlcm5zKCcqLnRtcCcsICdzdWJkaXIqJykKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPXBhdHRlcm5zKQogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAKICAgICAgICAgICAgICMgdGVzdGluZyBjYWxsYWJsZS1zdHlsZQogICAgICAgICAgICAgdHJ5OgpAQCAtMzI2LDEzICs3MDUsMTIgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPV9maWx0ZXIpCiAKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QucHknKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5weScpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQogCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNfZGlyKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShvcy5wYXRoLmRpcm5hbWUoZHN0X2RpcikpCkBAIC0zNTcsMzUgKzczNSw2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NoZmxhZ3MnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU9QTk9UU1VQUCcpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFTk9UU1VQJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIG9zLmNoZmxhZ3MsIEVPUE5PVFNVUFAgJiBFTk9UU1VQIikKLSAgICBkZWYgdGVzdF9jb3B5c3RhdF9oYW5kbGVzX2hhcm1sZXNzX2NoZmxhZ3NfZXJyb3JzKHNlbGYpOgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMScpCi0gICAgICAgIGZpbGUyID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUyJykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKGZpbGUxLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKGZpbGUyLCAneHh4JykKLQotICAgICAgICBkZWYgbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpOgotICAgICAgICAgICAgZXggPSBPU0Vycm9yKCkKLQotICAgICAgICAgICAgZGVmIF9jaGZsYWdzX3JhaXNlcihwYXRoLCBmbGFncyk6Ci0gICAgICAgICAgICAgICAgZXguZXJybm8gPSBlcnIKLSAgICAgICAgICAgICAgICByYWlzZSBleAotICAgICAgICAgICAgcmV0dXJuIF9jaGZsYWdzX3JhaXNlcgotICAgICAgICBvbGRfY2hmbGFncyA9IG9zLmNoZmxhZ3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGVyciBpbiBlcnJuby5FT1BOT1RTVVBQLCBlcnJuby5FTk9UU1VQOgotICAgICAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycikKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoZmlsZTEsIGZpbGUyKQotICAgICAgICAgICAgIyBhc3NlcnQgb3RoZXJzIGVycm9ycyBicmVhayBpdAotICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJybm8uRU9QTk9UU1VQUCArIGVycm5vLkVOT1RTVVApCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwuY29weXN0YXQsIGZpbGUxLCBmaWxlMikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBvbGRfY2hmbGFncwotCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X2RvbnRfY29weV9maWxlX29udG9fc3ltbGlua190b19pdHNlbGYoc2VsZik6CiAgICAgICAgICMgYnVnIDg1MTEyMy4KQEAgLTQxNiw2ICs3NjUsNyBAQAogICAgICAgICAgICAgb3MubWtkaXIoc3JjKQogICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5ybXRyZWUsIGRzdCkKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0LCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCkBAIC00NTYsOSArODA2LDkgQEAKIAogICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAKICAgICAgICAgY29waWVkID0gW10KICAgICAgICAgZGVmIF9jb3B5KHNyYywgZHN0KToKQEAgLTQ3NSw3ICs4MjUsNyBAQAogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQogICAgICAgICBvcy5zeW1saW5rKCdJRE9OVEVYSVNUJywgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFcnJvciwgc2h1dGlsLmNvcHl0cmVlLCBzcmNfZGlyLCBkc3RfZGlyKQogCiAgICAgICAgICMgYSBkYW5nbGluZyBzeW1saW5rIGlzIGlnbm9yZWQgd2l0aCB0aGUgcHJvcGVyIGZsYWcKQEAgLTQ5MSw3ICs4NDEsNyBAQAogICAgIGRlZiBfY29weV9maWxlKHNlbGYsIG1ldGhvZCk6CiAgICAgICAgIGZuYW1lID0gJ3Rlc3QudHh0JwogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgZm5hbWVdKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsIGZuYW1lKSwgJ3h4eCcpCiAgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcGRpciwgZm5hbWUpCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBtZXRob2QoZmlsZTEsIHRtcGRpcjIpCkBAIC01MjMsMTQgKzg3MywxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGZpbGUxX3N0YXQsICdzdF9mbGFncycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGZpbGUyX3N0YXQsICdzdF9mbGFncycpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUyJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4odG1wZGlyLCAnc3ViJykpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdzdWInLCAnZmlsZTMnKSwgJ3h4eCcpCiAKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgICMgZm9yY2Ugc2h1dGlsIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5CkBAIC01NzcsMTYgKzkyNywxNiBAQAogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBkaXN0ID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Rpc3QnKQogICAgICAgICBvcy5ta2RpcihkaXN0KQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdmaWxlMScpLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgoZGlzdCwgJ2ZpbGUyJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YicpKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdzdWInLCAnZmlsZTMnKSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViMicpKQogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKICAgICAgICAgcmV0dXJuIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmaW5kX2V4ZWN1dGFibGUoJ3RhcicpIGFuZCBmaW5kX2V4ZWN1dGFibGUoJ2d6aXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnTmVlZCB0aGUgdGFyIGNvbW1hbmQgdG8gcnVuJykKICAgICBkZWYgdGVzdF90YXJmaWxlX3ZzX3RhcihzZWxmKToKQEAgLTY0MSwxMyArOTkxLDEzIEBACiAgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnRhcicKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWklQX1NVUFBPUlQsICdOZWVkIHppcCBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUyJyksICd4eHgnKQogCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICAjIGZvcmNlIHNodXRpbCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeQpAQCAtNjY1LDcgKzEwMTUsNyBAQAogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnYXJjaGl2ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ha2VfYXJjaGl2ZSwgYmFzZV9uYW1lLCAneHh4JykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZV9vd25lcl9ncm91cChzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIG1ha2VfYXJjaGl2ZSB3aXRoIG93bmVyIGFuZCBncm91cCwgd2l0aCB2YXJpb3VzIGNvbWJpbmF0aW9ucwogICAgICAgICAjIHRoaXMgd29ya3MgZXZlbiBpZiB0aGVyZSdzIG5vdCBnaWQvdWlkIHN1cHBvcnQKQEAgLTY5Myw3ICsxMDQzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCiAKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfcm9vdF9vd25lcihzZWxmKToKICAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKQEAgLTc2Miw3ICsxMTEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGlmZi5hcHBlbmQoZmlsZV8pCiAgICAgICAgIHJldHVybiBkaWZmCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF91bnBhY2tfYXJjaGl2ZShzZWxmKToKICAgICAgICAgZm9ybWF0cyA9IFsndGFyJywgJ2d6dGFyJywgJ3ppcCddCiAgICAgICAgIGlmIEJaMl9TVVBQT1JURUQ6CkBAIC04MTMsNiArMTE2MywxNjIgQEAKICAgICAgICAgdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KCdCb28yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdW5wYWNrX2Zvcm1hdHMoKSwgZm9ybWF0cykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2h1dGlsLCAnZGlza191c2FnZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNrX3VzYWdlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpCisgICAgZGVmIHRlc3RfZGlza191c2FnZShzZWxmKToKKyAgICAgICAgdXNhZ2UgPSBzaHV0aWwuZGlza191c2FnZShvcy5nZXRjd2QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHVzYWdlLnRvdGFsLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodXNhZ2UudXNlZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodXNhZ2UuZnJlZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodXNhZ2UudG90YWwsIHVzYWdlLnVzZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih1c2FnZS50b3RhbCwgdXNhZ2UuZnJlZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAncmVxdWlyZXMgb3MuY2hvd24nKQorICAgIGRlZiB0ZXN0X2Nob3duKHNlbGYpOgorCisgICAgICAgICMgY2xlYW5lZC11cCBhdXRvbWF0aWNhbGx5IGJ5IFRlc3RTaHV0aWwudGVhckRvd24gbWV0aG9kCisgICAgICAgIGRpcm5hbWUgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1rdGVtcChkaXI9ZGlybmFtZSkKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlbmFtZSwgJ3Rlc3RpbmcgY2hvd24gZnVuY3Rpb24nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzaW5nIHVzZXJuYW1lJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzaW5nIGdyb3VwbmFtZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBiJ3NwYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgMy4xNCkKKworICAgICAgICB1aWQgPSBvcy5nZXR1aWQoKQorICAgICAgICBnaWQgPSBvcy5nZXRnaWQoKQorCisgICAgICAgIGRlZiBjaGVja19jaG93bihwYXRoLCB1aWQ9Tm9uZSwgZ2lkPU5vbmUpOgorICAgICAgICAgICAgcyA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgICAgICBpZiB1aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1aWQsIHMuc3RfdWlkKQorICAgICAgICAgICAgaWYgZ2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2lkLCBzLnN0X2dpZCkKKworICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9dWlkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPWdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIGdpZD1naWQpCisKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdXNlcj11aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIGdyb3VwPWdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgZ2lkPWdpZCkKKworICAgICAgICB1c2VyID0gcHdkLmdldHB3dWlkKHVpZClbMF0KKyAgICAgICAgZ3JvdXAgPSBncnAuZ2V0Z3JnaWQoZ2lkKVswXQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXIsIGdyb3VwKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1c2VyLCBncm91cCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkLCBnaWQpCisKKyAgICBkZWYgdGVzdF9jb3B5X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5IGFuZCBjb3B5MiBib3RoIHJldHVybiB0aGVpciBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBmb3IgZm4gaW4gKHNodXRpbC5jb3B5LCBzaHV0aWwuY29weTIpOgorICAgICAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBkc3RfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgICAgIHJ2ID0gZm4oc3JjLCBkc3RfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKGRzdF9kaXIsICdmb28nKSkKKyAgICAgICAgICAgIHJ2ID0gZm4oc3JjLCBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ2JhcicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKSkKKworICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5dHJlZSByZXR1cm5zIGl0cyBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZHN0X2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRzdF9maWxlID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKQorICAgICAgICBzcmNfZmlsZSA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmNfZmlsZSwgJ2ZvbycpCisgICAgICAgIHJ2ID0gc2h1dGlsLmNvcHlmaWxlKHNyY19maWxlLCBkc3RfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJ2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjX2ZpbGUpLCByZWFkX2ZpbGUoZHN0X2ZpbGUpKQorCisgICAgZGVmIHRlc3RfY29weXRyZWVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIGNvcHl0cmVlIHJldHVybnMgaXRzIGRlc3RpbmF0aW9uIHBhdGguCisgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkc3RfZGlyID0gc3JjX2RpciArICJkZXN0IgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgZHN0X2RpciwgVHJ1ZSkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHJ2ID0gc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydmb28nXSwgb3MubGlzdGRpcihydikpCisKKworY2xhc3MgVGVzdFdoaWNoKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc2VsZi50ZW1wX2RpciwgVHJ1ZSkKKyAgICAgICAgIyBHaXZlIHRoZSB0ZW1wX2ZpbGUgYW4gIi5leGUiIHN1ZmZpeCBmb3IgYWxsLgorICAgICAgICAjIEl0J3MgbmVlZGVkIG9uIFdpbmRvd3MgYW5kIG5vdCBoYXJtZnVsIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgc2VsZi50ZW1wX2ZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPXNlbGYudGVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iLmV4ZSIpCisgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcF9maWxlLm5hbWUsIHN0YXQuU19JWFVTUikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYudGVtcF9maWxlLmNsb3NlKQorICAgICAgICBzZWxmLmRpciwgc2VsZi5maWxlID0gb3MucGF0aC5zcGxpdChzZWxmLnRlbXBfZmlsZS5uYW1lKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICMgR2l2ZW4gYW4gRVhFIGluIGEgZGlyZWN0b3J5LCBpdCBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYuZmlsZSwgcGF0aD1zZWxmLmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgc2VsZi50ZW1wX2ZpbGUubmFtZSkKKworICAgIGRlZiB0ZXN0X2Z1bGxfcGF0aF9zaG9ydF9jaXJjdWl0KHNlbGYpOgorICAgICAgICAjIFdoZW4gZ2l2ZW4gdGhlIGZ1bGx5IHF1YWxpZmllZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgdGhhdCBleGlzdHMsCisgICAgICAgICMgaXQgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLnRlbXBfZmlsZS5uYW1lLCBwYXRoPXNlbGYudGVtcF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZW1wX2ZpbGUubmFtZSwgcnYpCisKKyAgICBkZWYgdGVzdF9ub25fbWF0Y2hpbmdfbW9kZShzZWxmKToKKyAgICAgICAgIyBTZXQgdGhlIGZpbGUgcmVhZC1vbmx5IGFuZCBhc2sgZm9yIHdyaXRlYWJsZSBmaWxlcy4KKyAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wX2ZpbGUubmFtZSwgc3RhdC5TX0lSRUFEKQorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9c2VsZi5kaXIsIG1vZGU9b3MuV19PSykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocnYpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZShzZWxmKToKKyAgICAgICAgb2xkX2N3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIGJhc2VfZGlyLCB0YWlsX2RpciA9IG9zLnBhdGguc3BsaXQoc2VsZi5kaXIpCisgICAgICAgIG9zLmNoZGlyKGJhc2VfZGlyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9dGFpbF9kaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4odGFpbF9kaXIsIHNlbGYuZmlsZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihvbGRfY3dkKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZmlsZShzZWxmKToKKyAgICAgICAgIyBSZXR1cm4gTm9uZSB3aGVuIG5vIG1hdGNoaW5nIGV4ZWN1dGFibGUgZmlsZSBpcyBmb3VuZCBvbiB0aGUgcGF0aC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goImZvby5leGUiLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShydikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoZXh0IGNoZWNrIGlzIFdpbmRvd3Mtb25seSIpCisgICAgZGVmIHRlc3RfcGF0aGV4dF9jaGVja2luZyhzZWxmKToKKyAgICAgICAgIyBBc2sgZm9yIHRoZSBmaWxlIHdpdGhvdXQgdGhlICIuZXhlIiBleHRlbnNpb24sIHRoZW4gZW5zdXJlIHRoYXQKKyAgICAgICAgIyBpdCBnZXRzIGZvdW5kIHByb3Blcmx5IHdpdGggdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi50ZW1wX2ZpbGUubmFtZVs6LTRdLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGVtcF9maWxlLm5hbWUsIHJ2KQorCiAKIGNsYXNzIFRlc3RNb3ZlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtOTI2LDYgKzE0MzIsNTggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9maWxlX3N5bWxpbmsoc2VsZik6CisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5zeW1saW5rKHNlbGYuc3JjX2ZpbGUsIGRzdCkKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBzZWxmLmRzdF9maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoc2VsZi5kc3RfZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2ZpbGUpKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZmlsZV9zeW1saW5rX3RvX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAiYmFyIgorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnNyY19maWxlLCBkc3QpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgc2VsZi5kc3RfZGlyKQorICAgICAgICBmaW5hbF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhmaW5hbF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc2VsZi5zcmNfZmlsZSwgZmluYWxfbGluaykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kYW5nbGluZ19zeW1saW5rKHNlbGYpOgorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JhcicpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ3F1dXgnKQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGgucmVhbHBhdGgoc3JjKSwgb3MucGF0aC5yZWFscGF0aChkc3RfbGluaykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kaXJfc3ltbGluayhzZWxmKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JheicpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5ta2RpcihzcmMpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ3F1dXgnKQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzcmMsIGRzdF9saW5rKSkKKworICAgIGRlZiB0ZXN0X21vdmVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBydiA9IHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuc3JjX2ZpbGUpKSkKKworICAgIGRlZiB0ZXN0X21vdmVfYXNfcmVuYW1lX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcnYgPSBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdiYXInKSkKKwogCiBjbGFzcyBUZXN0Q29weUZpbGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMDM1LDYgKzE1OTMsNyBAQAogICAgICAgICAjIGJ1dCBhIGRpZmZlcmVudCBjYXNlLgogCiAgICAgICAgIHNlbGYuc3JjX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc2VsZi5zcmNfZGlyLCBUcnVlKQogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKAogICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShzZWxmLnNyY19kaXIpLAogICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoc2VsZi5zcmNfZGlyKS51cHBlcigpKQpAQCAtMTA0NCwxMyArMTYwMyw1NyBAQAogICAgICAgICAgICAgc2h1dGlsLm1vdmUoc2VsZi5zcmNfZGlyLCBkc3RfZGlyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZHN0X2RpcikpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICBvcy5ybWRpcihkc3RfZGlyKQorICAgICAgICAgICAgb3Mucm1kaXIoZHN0X2RpcikKIAorY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIGdldF90ZXJtaW5hbF9zaXplKCkgcmV0dXJucyBhIG1lYW5pbmdmdWwgdmFsdWUuCisKKyAgICAgICAgVGhlcmUncyBubyBlYXN5IHBvcnRhYmxlIHdheSB0byBhY3R1YWxseSBjaGVjayB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdGVybWluYWwsIHNvIGxldCdzIGNoZWNrIGlmIGl0IHJldHVybnMgc29tZXRoaW5nIHNlbnNpYmxlIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICBzaXplID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5jb2x1bW5zLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmxpbmVzLCAwKQorCisgICAgZGVmIHRlc3Rfb3NfZW52aXJvbl9maXJzdChzZWxmKToKKyAgICAgICAgIkNoZWNrIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBoYXZlIHByZWNlZGVuY2UiCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbJ0NPTFVNTlMnXSA9ICc3NzcnCisgICAgICAgICAgICBzaXplID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLmNvbHVtbnMsIDc3NykKKworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudlsnTElORVMnXSA9ICc4ODgnCisgICAgICAgICAgICBzaXplID0gc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLmxpbmVzLCA4ODgpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5pc2F0dHkoc3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkpLCAibm90IG9uIHR0eSIpCisgICAgZGVmIHRlc3Rfc3R0eV9tYXRjaChzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgc3R0eSByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdHMgaWdub3JpbmcgZW52CisKKyAgICAgICAgVGhpcyB0ZXN0IHdpbGwgZmFpbCBpZiBzdGRpbiBhbmQgc3Rkb3V0IGFyZSBjb25uZWN0ZWQgdG8KKyAgICAgICAgZGlmZmVyZW50IHRlcm1pbmFscyB3aXRoIGRpZmZlcmVudCBzaXplcy4gTmV2ZXJ0aGVsZXNzLCBzdWNoCisgICAgICAgIHNpdHVhdGlvbnMgc2hvdWxkIGJlIHByZXR0eSByYXJlLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3R0eScsICdzaXplJ10pLmRlY29kZSgpLnNwbGl0KCkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3R0eSBpbnZvY2F0aW9uIGZhaWxlZCIpCisgICAgICAgIGV4cGVjdGVkID0gKGludChzaXplWzFdKSwgaW50KHNpemVbMF0pKSAjIHJldmVyc2VkIG9yZGVyCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBkZWwgZW52WydMSU5FUyddCisgICAgICAgICAgICBkZWwgZW52WydDT0xVTU5TJ10KKyAgICAgICAgICAgIGFjdHVhbCA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQogCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U2h1dGlsLCBUZXN0TW92ZSwgVGVzdENvcHlGaWxlKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTaHV0aWwsIFRlc3RNb3ZlLCBUZXN0Q29weUZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgVGVybXNpemVUZXN0cywgVGVzdFdoaWNoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDRhMWI0YTYuLjk5MjQzZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0xLDE3ICsxLDE5IEBACi1pbXBvcnQgZXJybm8KLWltcG9ydCBnYwotaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKK2ltcG9ydCBnYworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHNlbGVjdAoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCBzeXMsIG9zLCB0aW1lLCBlcnJubwogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHNwYXduX3B5dGhvbgordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMicsICdyaXNjb3MnKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiQ2FuJ3QgdGVzdCBzaWduYWwgb24gJXMiICUgc3lzLnBsYXRmb3JtKQpAQCAtNTcsMTUgKzU5LDkgQEAKIAogICAgIGRlZiBoYW5kbGVyQShzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgc2VsZi5hX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoImhhbmRsZXJBIGludm9rZWQgZnJvbSBzaWduYWwgJXMgYXQ6XG4lcyIgJSAoCi0gICAgICAgICAgICAgICAgc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSwgbGltaXQ9MSkpKQogCiAgICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCAoImhhbmRsZXJCIGludm9rZWQgZnJvbSBzaWduYWwgJXMgYXQ6XG4lcyIgJSAoCi0gICAgICAgICAgICAgICAgc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSwgbGltaXQ9MSkpKQogICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKIAogICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKQEAgLTkyLDggKzg4LDYgQEAKIAogICAgICAgICAjIExldCB0aGUgc3ViLXByb2Nlc3NlcyBrbm93IHdobyB0byBzZW5kIHNpZ25hbHMgdG8uCiAgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJ0ZXN0IHJ1bm5lcidzIHBpZCBpcyIsIHBpZCkKIAogICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQogICAgICAgICBpZiBjaGlsZDoKQEAgLTExNyw4ICsxMTEsNiBAQAogICAgICAgICBleGNlcHQgSGFuZGxlckJDYWxsZWQ6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iX2NhbGxlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiSGFuZGxlckJDYWxsZWQgZXhjZXB0aW9uIGNhdWdodCIpCiAKICAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCiAgICAgICAgIGlmIGNoaWxkOgpAQCAtMTM0LDggKzEyNiw3IEBACiAgICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCiAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiS2V5Ym9hcmRJbnRlcnJ1cHQgKHRoZSBhbGFybSgpIHdlbnQgb2ZmKSIpCisgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiU29tZSBvdGhlciBleGNlcHRpb24gd29rZSB1cyBmcm9tIHBhdXNlOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCkBAIC0xOTEsNyArMTgyLDcgQEAKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQotY2xhc3MgQmFzaWNTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKIApAQCAtMjMxLDMzICsyMjIsNTMgQEAKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoNywgaGFuZGxlcikKIAogCitjbGFzcyBXYWtldXBGRFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfZmQoc2VsZik6CisgICAgICAgIGZkID0gc3VwcG9ydC5tYWtlX2JhZF9mZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNpZ25hbC5zZXRfd2FrZXVwX2ZkLCBmZCkKKworCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgV2FrZXVwU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBjaGVja193YWtldXAoc2VsZiwgdGVzdF9ib2R5KToKLSAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAotICAgICAgICAjIGhhbmRsaW5nIG9mIHRoZSBwYXJlbnQgcHJvY2VzcworICAgIGRlZiBjaGVja193YWtldXAoc2VsZiwgdGVzdF9ib2R5LCAqc2lnbmFscywgb3JkZXJlZD1UcnVlKToKKyAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICBpbXBvcnQgZmNudGwKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHN0cnVjdAorCisgICAgICAgIHNpZ25hbHMgPSB7IXJ9CiAKICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgICAgICBwYXNzCiAKKyAgICAgICAgZGVmIGNoZWNrX3NpZ251bShzaWduYWxzKToKKyAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHJlYWQsIGxlbihzaWduYWxzKSsxKQorICAgICAgICAgICAgcmFpc2VkID0gc3RydWN0LnVucGFjaygnJXVCJyAlIGxlbihkYXRhKSwgZGF0YSkKKyAgICAgICAgICAgIGlmIG5vdCB7IXJ9OgorICAgICAgICAgICAgICAgIHJhaXNlZCA9IHNldChyYWlzZWQpCisgICAgICAgICAgICAgICAgc2lnbmFscyA9IHNldChzaWduYWxzKQorICAgICAgICAgICAgaWYgcmFpc2VkICE9IHNpZ25hbHM6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlciAhPSAlciIgJSAocmFpc2VkLCBzaWduYWxzKSkKKwogICAgICAgICB7fQogCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCiAgICAgICAgIHJlYWQsIHdyaXRlID0gb3MucGlwZSgpCi0gICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwod3JpdGUsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgIGZsYWdzID0gZmxhZ3MgfCBvcy5PX05PTkJMT0NLCi0gICAgICAgIGZjbnRsLmZjbnRsKHdyaXRlLCBmY250bC5GX1NFVEZMLCBmbGFncykKKyAgICAgICAgZm9yIGZkIGluIChyZWFkLCB3cml0ZSk6CisgICAgICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZMLCAwKQorICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyB8IG9zLk9fTk9OQkxPQ0sKKyAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZMLCBmbGFncykKICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod3JpdGUpCiAKICAgICAgICAgdGVzdCgpCisgICAgICAgIGNoZWNrX3NpZ251bShzaWduYWxzKQogCiAgICAgICAgIG9zLmNsb3NlKHJlYWQpCiAgICAgICAgIG9zLmNsb3NlKHdyaXRlKQotICAgICAgICAiIiIuZm9ybWF0KHRlc3RfYm9keSkKKyAgICAgICAgIiIiLmZvcm1hdChzaWduYWxzLCBvcmRlcmVkLCB0ZXN0X2JvZHkpCiAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogCkBAIC0yODMsNyArMjk0LDcgQEAKICAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIG1pZF90aW1lCiAgICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCi0gICAgICAgICIiIikKKyAgICAgICAgIiIiLCBzaWduYWwuU0lHQUxSTSkKIAogICAgIGRlZiB0ZXN0X3dha2V1cF9mZF9kdXJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CkBAIC0zMDYsNyArMzE3LDMyIEBACiAgICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBiZWZvcmVfdGltZQogICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQotICAgICAgICAiIiIpCisgICAgICAgICIiIiwgc2lnbmFsLlNJR0FMUk0pCisKKyAgICBkZWYgdGVzdF9zaWdudW0oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBoYW5kbGVyKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR1VTUjEpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHQUxSTSkKKyAgICAgICAgIiIiLCBzaWduYWwuU0lHVVNSMSwgc2lnbmFsLlNJR0FMUk0pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHRlc3RfcGVuZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNpZ251bTEgPSBzaWduYWwuU0lHVVNSMQorICAgICAgICAgICAgc2lnbnVtMiA9IHNpZ25hbC5TSUdVU1IyCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtMSwgaGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtMiwgaGFuZGxlcikKKworICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCAoc2lnbnVtMSwgc2lnbnVtMikpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0xKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMikKKyAgICAgICAgICAgICMgVW5ibG9ja2luZyB0aGUgMiBzaWduYWxzIGNhbGxzIHRoZSBDIHNpZ25hbCBoYW5kbGVyIHR3aWNlCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQorICAgICAgICAiIiIsICBzaWduYWwuU0lHVVNSMSwgc2lnbmFsLlNJR1VTUjIsIG9yZGVyZWQ9RmFsc2UpCisKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFNpZ2ludGVycnVwdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzE2LDkgKzM1Miw2IEBACiAgICAgICAgIHJlYWQgaXMgaW50ZXJydXB0ZWQgYnkgdGhlIHNpZ25hbCBhbmQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gIFJldHVybiBGYWxzZQogICAgICAgICBpZiBpdCByZXR1cm5zIG5vcm1hbGx5LgogICAgICAgICAiIiIKLSAgICAgICAgY2xhc3MgVGltZW91dChFeGNlcHRpb24pOgotICAgICAgICAgICAgcGFzcwotCiAgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZCwgdG8gaGF2ZSBhIHRpbWVvdXQgb24gdGhlCiAgICAgICAgICMgYmxvY2tpbmcgcmVhZCBhbmQgdG8gbm90IHRvdWNoIHNpZ25hbCBoYW5kbGluZyBpbiB0aGlzIHByb2Nlc3MKICAgICAgICAgY29kZSA9ICIiImlmIDE6CkBAIC0zNTksMTggKzM5Miw4IEBACiAgICAgICAgICAgICAgICAgIyB3YWl0IHVudGlsIHRoZSBjaGlsZCBwcm9jZXNzIGlzIGxvYWRlZCBhbmQgaGFzIHN0YXJ0ZWQKICAgICAgICAgICAgICAgICBmaXJzdF9saW5lID0gcHJvY2Vzcy5zdGRvdXQucmVhZGxpbmUoKQogCi0gICAgICAgICAgICAgICAgIyBXYWl0IHRoZSBwcm9jZXNzIHdpdGggYSB0aW1lb3V0IG9mIDUgc2Vjb25kcwotICAgICAgICAgICAgICAgIHRpbWVvdXQgPSB0aW1lLnRpbWUoKSArIDUuMAotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPCB0aW1lLnRpbWUoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXQoKQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBwcm9jZXNzLnBvbGwoKQotICAgICAgICAgICAgICAgICAgICBpZiBzdGF0dXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKLQotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBleGNlcHQgVGltZW91dDoKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUodGltZW91dD01LjApCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKICAgICAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgZWxzZToKQEAgLTQxOSw4ICs0NDIsNiBAQAogCiAgICAgZGVmIHNpZ19hbHJtKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5obmRsX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlNJR0FMUk0gaGFuZGxlciBpbnZva2VkIiwgYXJncykKIAogICAgIGRlZiBzaWdfdnRhbHJtKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5obmRsX2NhbGxlZCA9IFRydWUKQEAgLTQzMiwyMSArNDUzLDEzIEBACiAgICAgICAgIGVsaWYgc2VsZi5obmRsX2NvdW50ID09IDM6CiAgICAgICAgICAgICAjIGRpc2FibGUgSVRJTUVSX1ZJUlRVQUwsIHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCBhbnltb3JlCiAgICAgICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfVklSVFVBTCwgMCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgibGFzdCBTSUdWVEFMUk0gaGFuZGxlciBjYWxsIikKIAogICAgICAgICBzZWxmLmhuZGxfY291bnQgKz0gMQogCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJTSUdWVEFMUk0gaGFuZGxlciBpbnZva2VkIiwgYXJncykKLQogICAgIGRlZiBzaWdfcHJvZihzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuaG5kbF9jYWxsZWQgPSBUcnVlCiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9QUk9GLCAwKQogCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJTSUdQUk9GIGhhbmRsZXIgaW52b2tlZCIsIGFyZ3MpCi0KICAgICBkZWYgdGVzdF9pdGltZXJfZXhjKHNlbGYpOgogICAgICAgICAjIFhYWCBJJ20gYXNzdW1pbmcgLTEgaXMgYW4gaW52YWxpZCBpdGltZXIsIGJ1dCBtYXliZSBzb21lIHBsYXRmb3JtCiAgICAgICAgICMgZGVmaW5lcyBpdCA/CkBAIC00NTksMTAgKzQ3Miw3IEBACiAgICAgZGVmIHRlc3RfaXRpbWVyX3JlYWwoc2VsZik6CiAgICAgICAgIHNlbGYuaXRpbWVyID0gc2lnbmFsLklUSU1FUl9SRUFMCiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2VsZi5pdGltZXIsIDEuMCkKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlxuY2FsbCBwYXVzZSgpLi4uIikKICAgICAgICAgc2lnbmFsLnBhdXNlKCkKLQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaG5kbF9jYWxsZWQsIFRydWUpCiAKICAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCkBAIC01MTEsMTEgKzUyMSwzNTkgQEAKICAgICAgICAgIyBhbmQgdGhlIGhhbmRsZXIgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhuZGxfY2FsbGVkLCBUcnVlKQogCisKK2NsYXNzIFBlbmRpbmdTaWduYWxzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgcHRocmVhZF9zaWdtYXNrKCksIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKQorICAgIGZ1bmN0aW9ucy4KKyAgICAiIiIKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3BlbmRpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lncGVuZGluZygpJykKKyAgICBkZWYgdGVzdF9zaWdwZW5kaW5nX2VtcHR5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zaWdwZW5kaW5nKCksIHNldCgpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lncGVuZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWdwZW5kaW5nKCknKQorICAgIGRlZiB0ZXN0X3NpZ3BlbmRpbmcoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBpbXBvcnQgc2lnbmFsCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisgICAgICAgICAgICBwZW5kaW5nID0gc2lnbmFsLnNpZ3BlbmRpbmcoKQorICAgICAgICAgICAgaWYgcGVuZGluZyAhPSB7c2lnbnVtfToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJyVzICE9IHslc30nICUgKHBlbmRpbmcsIHNpZ251bSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9raWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfa2lsbCgpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX2tpbGwoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZnJlZWJzZDYnOgorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEyMzkyIGFuZCAjMTI0Njk6IHNlbmQgYSBzaWduYWwgdG8gdGhlIG1haW4gdGhyZWFkCisgICAgICAgICAgICAgICAgIyBkb2Vzbid0IHdvcmsgYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmlyc3QgdGhyZWFkIG9uCisgICAgICAgICAgICAgICAgIyBGcmVlQlNEIDYKKyAgICAgICAgICAgICAgICBkZWYgbm9vcCgpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bm9vcCkKKyAgICAgICAgICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKworICAgICAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfa2lsbCh0aWQsIHNpZ251bSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHdhaXRfaGVscGVyKHNlbGYsIGJsb2NrZWQsIHRlc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdDogYm9keSBvZiB0aGUgImRlZiB0ZXN0KHNpZ251bSk6IiBmdW5jdGlvbi4KKyAgICAgICAgYmxvY2tlZDogbnVtYmVyIG9mIHRoZSBibG9ja2VkIHNpZ25hbAorICAgICAgICAiIiIKKyAgICAgICAgY29kZSA9ICcnJ2lmIDE6CisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgMS8wCisKKyAgICAgICAgJXMKKworICAgICAgICBibG9ja2VkID0gJXMKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0FMUk0KKworICAgICAgICAjIGNoaWxkOiBibG9jayBhbmQgd2FpdCB0aGUgc2lnbmFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbYmxvY2tlZF0pCisKKyAgICAgICAgICAgICMgRG8gdGhlIHRlc3RzCisgICAgICAgICAgICB0ZXN0KHNpZ251bSkKKworICAgICAgICAgICAgIyBUaGUgaGFuZGxlciBtdXN0IG5vdCBiZSBjYWxsZWQgb24gdW5ibG9jaworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbYmxvY2tlZF0pCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcHJpbnQoInRoZSBzaWduYWwgaGFuZGxlciBoYXMgYmVlbiBjYWxsZWQiLAorICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICBwcmludCgiZXJyb3I6IHt9Ii5mb3JtYXQoZXJyKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAnJycgJSAodGVzdC5zdHJpcCgpLCBibG9ja2VkKQorCisgICAgICAgICMgc2lnKndhaXQqIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHNpZ25hbCBibG9ja2VkOiBzaW5jZSB0aGUgY3VycmVudAorICAgICAgICAjIHByb2Nlc3MgbWlnaHQgaGF2ZSBzZXZlcmFsIHRocmVhZHMgcnVubmluZywgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlCisgICAgICAgICMgYSBzaW5nbGUgdGhyZWFkLgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0KHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lnd2FpdChbc2lnbnVtXSkKKyAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3JlY2VpdmVkICVzLCBub3QgJXMnICUgKHJlY2VpdmVkLCBzaWdudW0pKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvKHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgaW5mbyA9IHNpZ25hbC5zaWd3YWl0aW5mbyhbc2lnbnVtXSkKKyAgICAgICAgICAgIGlmIGluZm8uc2lfc2lnbm8gIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiaW5mby5zaV9zaWdubyAhPSAlcyIgJSBzaWdudW0pCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICBpbmZvID0gc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbnVtXSwgMTAuMTAwMCkKKyAgICAgICAgICAgIGlmIGluZm8uc2lfc2lnbm8gIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignaW5mby5zaV9zaWdubyAhPSAlcycgJSBzaWdudW0pCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXRfcG9sbChzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IHBvbGxpbmcgd2l0aCBzaWd0aW1lZHdhaXQgd29ya3MKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKyAgICAgICAgICAgIGluZm8gPSBzaWduYWwuc2lndGltZWR3YWl0KFtzaWdudW1dLCAwKQorICAgICAgICAgICAgaWYgaW5mby5zaV9zaWdubyAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdpbmZvLnNpX3NpZ25vICE9ICVzJyAlIHNpZ251bSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbnVtXSwgMS4wKQorICAgICAgICAgICAgaWYgcmVjZWl2ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJyZWNlaXZlZD0lciIgJSAocmVjZWl2ZWQsKSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdF9uZWdhdGl2ZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHQUxSTQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzaWduYWwuc2lndGltZWR3YWl0LCBbc2lnbnVtXSwgLTEuMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdGluZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdGluZm8oKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdGluZm9faW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR1VTUjEsICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgaW1wb3J0IGVycm5vCisKKyAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gVHJ1ZQorICAgICAgICAgICAgZGVmIGFsYXJtX2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBGYWxzZQorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBhbGFybV9oYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWduYWwuU0lHVVNSMV0pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBobmRsX2NhbGxlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiU0lHQUxSTSBoYW5kbGVyIG5vdCBjYWxsZWQiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdCgpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCisgICAgZGVmIHRlc3Rfc2lnd2FpdF90aHJlYWQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBjYWxsaW5nIHNpZ3dhaXQoKSBmcm9tIGEgdGhyZWFkIGRvZXNuJ3Qgc3VzcGVuZCB0aGUgd2hvbGUKKyAgICAgICAgIyBwcm9jZXNzLiBBIG5ldyBpbnRlcnByZXRlciBpcyBzcGF3bmVkIHRvIGF2b2lkIHByb2JsZW1zIHdoZW4gbWl4aW5nCisgICAgICAgICMgdGhyZWFkcyBhbmQgZm9yaygpOiBvbmx5IGFzeW5jLXNhZmUgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIGJldHdlZW4KKyAgICAgICAgIyBmb3JrKCkgYW5kIGV4ZWMoKS4KKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCAiIiJpZiBUcnVlOgorICAgICAgICAgICAgaW1wb3J0IG9zLCB0aHJlYWRpbmcsIHN5cywgdGltZSwgc2lnbmFsCisKKyAgICAgICAgICAgICMgdGhlIGRlZmF1bHQgaGFuZGxlciB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzCisgICAgICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorCisgICAgICAgICAgICBkZWYga2lsbF9sYXRlcigpOgorICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBpbiBzaWd3YWl0KCkKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorCisgICAgICAgICAgICAjIHRoZSBzaWduYWwgbXVzdCBiZSBibG9ja2VkIGJ5IGFsbCB0aGUgdGhyZWFkcworICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgICAgIGtpbGxlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWtpbGxfbGF0ZXIpCisgICAgICAgICAgICBraWxsZXIuc3RhcnQoKQorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lnd2FpdChbc2lnbnVtXSkKKyAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICBwcmludCgic2lnd2FpdCgpIHJlY2VpdmVkICVzLCBub3QgJXMiICUgKHJlY2VpdmVkLCBzaWdudW0pLAorICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAga2lsbGVyLmpvaW4oKQorICAgICAgICAgICAgIyB1bmJsb2NrIHRoZSBzaWduYWwsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gY2xlYXJlZCBieSBzaWd3YWl0KCkKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgIiIiKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfc2lnbWFza19hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2ssIDEsIDIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2ssIDE3MDAsIFtdKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfc2lnbWFzayhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IG9zOyBpbXBvcnQgdGhyZWFkaW5nCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAxLzAKKworICAgICAgICBkZWYga2lsbChzaWdudW0pOgorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorCisgICAgICAgIGRlZiByZWFkX3NpZ21hc2soKToKKyAgICAgICAgICAgIHJldHVybiBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtdKQorCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisKKyAgICAgICAgIyBJbnN0YWxsIG91ciBzaWduYWwgaGFuZGxlcgorICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgICMgVW5ibG9jayBTSUdVU1IxIChhbmQgY29weSB0aGUgb2xkIG1hc2spIHRvIHRlc3Qgb3VyIHNpZ25hbCBoYW5kbGVyCisgICAgICAgIG9sZF9tYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBraWxsKHNpZ251bSkKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKworICAgICAgICAjIEJsb2NrIGFuZCB0aGVuIHJhaXNlIFNJR1VTUjEuIFRoZSBzaWduYWwgaXMgYmxvY2tlZDogdGhlIHNpZ25hbAorICAgICAgICAjIGhhbmRsZXIgaXMgbm90IGNhbGxlZCwgYW5kIHRoZSBzaWduYWwgaXMgbm93IHBlbmRpbmcKKyAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAga2lsbChzaWdudW0pCisKKyAgICAgICAgIyBDaGVjayB0aGUgbmV3IG1hc2sKKyAgICAgICAgYmxvY2tlZCA9IHJlYWRfc2lnbWFzaygpCisgICAgICAgIGlmIHNpZ251bSBub3QgaW4gYmxvY2tlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgbm90IGluICVzIiAlIChzaWdudW0sIGJsb2NrZWQpKQorICAgICAgICBpZiBvbGRfbWFzayBeIGJsb2NrZWQgIT0ge3NpZ251bX06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIF4gJXMgIT0geyVzfSIgJSAob2xkX21hc2ssIGJsb2NrZWQsIHNpZ251bSkpCisKKyAgICAgICAgIyBVbmJsb2NrIFNJR1VTUjEKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB1bmJsb2NrIHRoZSBwZW5kaW5nIHNpZ25hbCBjYWxscyBpbW1lZGlhdGx5IHRoZSBzaWduYWwgaGFuZGxlcgorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBraWxsKHNpZ251bSkKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKworICAgICAgICAjIENoZWNrIHRoZSBuZXcgbWFzaworICAgICAgICB1bmJsb2NrZWQgPSByZWFkX3NpZ21hc2soKQorICAgICAgICBpZiBzaWdudW0gaW4gdW5ibG9ja2VkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBpbiAlcyIgJSAoc2lnbnVtLCB1bmJsb2NrZWQpKQorICAgICAgICBpZiBibG9ja2VkIF4gdW5ibG9ja2VkICE9IHtzaWdudW19OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBeICVzICE9IHslc30iICUgKGJsb2NrZWQsIHVuYmxvY2tlZCwgc2lnbnVtKSkKKyAgICAgICAgaWYgb2xkX21hc2sgIT0gdW5ibG9ja2VkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyAhPSAlcyIgJSAob2xkX21hc2ssIHVuYmxvY2tlZCkpCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZnJlZWJzZDYnLAorICAgICAgICAiaXNzdWUgIzEyMzkyOiBzZW5kIGEgc2lnbmFsIHRvIHRoZSBtYWluIHRocmVhZCBkb2Vzbid0IHdvcmsgIgorICAgICAgICAiYmVmb3JlIHRoZSBjcmVhdGlvbiBvZiB0aGUgZmlyc3QgdGhyZWFkIG9uIEZyZWVCU0QgNiIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX2tpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9raWxsKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfa2lsbF9tYWluX3RocmVhZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBzaWduYWwgY2FuIGJlIHNlbnQgdG8gdGhlIG1haW4gdGhyZWFkIHdpdGggcHRocmVhZF9raWxsKCkKKyAgICAgICAgIyBiZWZvcmUgYW55IG90aGVyIHRocmVhZCBoYXMgYmVlbiBjcmVhdGVkIChzZWUgaXNzdWUgIzEyMzkyKS4KKyAgICAgICAgY29kZSA9ICIiImlmIFRydWU6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHN5cy5leGl0KDMpCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9raWxsKHRocmVhZGluZy5nZXRfaWRlbnQoKSwgc2lnbmFsLlNJR1VTUjEpCisgICAgICAgICAgICBzeXMuZXhpdCgyKQorICAgICAgICAiIiIKKworICAgICAgICB3aXRoIHNwYXduX3B5dGhvbignLWMnLCBjb2RlKSBhcyBwcm9jZXNzOgorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIGlmIGV4aXRjb2RlICE9IDM6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciAoZXhpdCBjb2RlICVzKTogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4aXRjb2RlLCBzdGRvdXQpKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0cnk6Ci0gICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEJhc2ljU2lnbmFsVGVzdHMsIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWtldXBTaWduYWxUZXN0cywgU2lnaW50ZXJydXB0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRpbWVyVGVzdCwgV2luZG93c1NpZ25hbFRlc3RzKQorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQb3NpeFRlc3RzLCBJbnRlclByb2Nlc3NTaWduYWxUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZXVwRkRUZXN0cywgV2FrZXVwU2lnbmFsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ2ludGVycnVwdFRlc3QsIEl0aW1lclRlc3QsIFdpbmRvd3NTaWduYWxUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ1NpZ25hbHNUZXN0cykKICAgICBmaW5hbGx5OgogICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKaW5kZXggYmE0MjY0OS4uMjkyODZjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQpAQCAtMzksNiArMzksNyBAQAogICAgICAgICBzZWxmLm9sZF9iYXNlID0gc2l0ZS5VU0VSX0JBU0UKICAgICAgICAgc2VsZi5vbGRfc2l0ZSA9IHNpdGUuVVNFUl9TSVRFCiAgICAgICAgIHNlbGYub2xkX3ByZWZpeGVzID0gc2l0ZS5QUkVGSVhFUworICAgICAgICBzZWxmLm9yaWdpbmFsX3ZhcnMgPSBzeXNjb25maWcuX0NPTkZJR19WQVJTCiAgICAgICAgIHNlbGYub2xkX3ZhcnMgPSBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC00Nyw3ICs0OCw5IEBACiAgICAgICAgIHNpdGUuVVNFUl9CQVNFID0gc2VsZi5vbGRfYmFzZQogICAgICAgICBzaXRlLlVTRVJfU0lURSA9IHNlbGYub2xkX3NpdGUKICAgICAgICAgc2l0ZS5QUkVGSVhFUyA9IHNlbGYub2xkX3ByZWZpeGVzCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzZWxmLm9sZF92YXJzCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzZWxmLm9yaWdpbmFsX3ZhcnMKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNlbGYub2xkX3ZhcnMpCiAKICAgICBkZWYgdGVzdF9tYWtlcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IG1ha2VwYXRoKCkgaGF2ZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciBpdHMgZmlyc3QgcmV0dXJuIHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA2OGNjYzI5Li45M2YxNGM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQoraW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1vY2tfc29ja2V0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgaW8KQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgcmFpc2UgRHVtbXlEaXNwYXRjaGVyQnJva2VuKCkKIAogCi1jbGFzcyBTTVRQRFNlcnZlclRlc3QoVGVzdENhc2UpOgorY2xhc3MgU01UUERTZXJ2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAKQEAgLTM5LDYgKzM5LDcgQEAKICAgICAgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKICAgICAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCisgICAgICAgIHdyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHdyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKQEAgLTQ5LDcgKzUwLDcgQEAKICAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CiAKIAotY2xhc3MgU01UUERDaGFubmVsVGVzdChUZXN0Q2FzZSk6CitjbGFzcyBTTVRQRENoYW5uZWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KQEAgLTc4LDMxICs3OSw5NCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogYmFkIHN5bnRheFxyXG4nKQogCi0gICAgZGVmIHRlc3RfRUhMT19ub3RfaW1wbGVtZW50ZWQoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gdGVzdC5leGFtcGxlJykKKyAgICBkZWYgdGVzdF9FSExPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgSEVMUFxyXG4nKQorCisgICAgZGVmIHRlc3RfRUhMT19iYWRfc3ludGF4KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYic1MDIgRXJyb3I6IGNvbW1hbmQgIkVITE8iIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZVxyXG4nKQorCisgICAgZGVmIHRlc3RfRUhMT19kdXBsaWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fSEVMT19kdXBsaWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKIAogICAgIGRlZiB0ZXN0X0hFTE8oc2VsZik6CiAgICAgICAgIG5hbWUgPSBzbXRwZC5zb2NrZXQuZ2V0ZnFkbigpCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gdGVzdC5leGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1MCB7fVxyXG4nLmZvcm1hdChuYW1lKS5lbmNvZGUoJ2FzY2lpJykpCiAKKyAgICBkZWYgdGVzdF9IRUxPX0VITE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxQKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxQJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYidEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRllcclxuJykKKworICAgIGRlZiB0ZXN0X0hFTFBfY29tbWFuZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMUCBNQUlMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMUF9jb21tYW5kX3Vua25vd24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTFAgU1BBTScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZXHJcbicpCisKICAgICBkZWYgdGVzdF9IRUxPX2JhZF9zeW50YXgoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IEhFTE8gaG9zdG5hbWVcclxuJykKIAogICAgIGRlZiB0ZXN0X0hFTE9fZHVwbGljYXRlKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gdGVzdC5leGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQogCisgICAgZGVmIHRlc3RfSEVMT19wYXJhbWV0ZXJfcmVqZWN0ZWRfd2hlbl9leHRlbnNpb25zX25vdF9lbmFibGVkKHNlbGYpOgorICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGZvb0BleGFtcGxlLmNvbT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9hbGxvd3Nfc3BhY2VfYWZ0ZXJfY29sb24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogICA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9leHRlbmRlZF9NQUlMX2FsbG93c19zcGFjZV9hZnRlcl9jb2xvbihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAgIDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCiAgICAgZGVmIHRlc3RfTk9PUChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X0hFTE9fTk9PUChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogCiAgICAgZGVmIHRlc3RfTk9PUF9iYWRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidOT09QIGhpJykKQEAgLTExMywyNiArMTc3LDQ3IEBACiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1FVSVQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyMjEgQnllXHJcbicpCiAKKyAgICBkZWYgdGVzdF9IRUxPX1FVSVQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1FVSVQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyMjEgQnllXHJcbicpCisKICAgICBkZWYgdGVzdF9RVUlUX2FyZ19pZ25vcmVkKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUIGJ5ZSBieWUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyMjEgQnllXHJcbicpCiAKICAgICBkZWYgdGVzdF9iYWRfc3RhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuY2hhbm5lbC5zbXRwX3N0YXRlID0gJ0JBRCBTVEFURScKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTycpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNDUxIEludGVybmFsIGNvbmZ1c2lvblxyXG4nKQogCiAgICAgZGVmIHRlc3RfY29tbWFuZF90b29fbG9uZyhzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tICcgKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIHNlbGYuY2hhbm5lbC5jb21tYW5kX3NpemVfbGltaXQgKwogICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nXHJcbicpCiAKLSAgICBkZWYgdGVzdF9kYXRhX3Rvb19sb25nKHNlbGYpOgotICAgICAgICAjIFNtYWxsIGhhY2suIFNldHRpbmcgbGltaXQgdG8gMksgb2N0ZXRzIGhlcmUgd2lsbCBzYXZlIHVzIHNvbWUgdGltZS4KLSAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDIwNDgKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfbGltaXRfZXh0ZW5kZWRfd2l0aF9TSVpFKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBmaWxsX2xlbiA9IHNlbGYuY2hhbm5lbC5jb21tYW5kX3NpemVfbGltaXQgLSBsZW4oJ01BSUwgZnJvbTo8QGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiBmaWxsX2xlbiArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlPiBTSVpFPTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKworICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIChmaWxsX2xlbiArIDI2KSArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlPiBTSVpFPTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQorCisgICAgZGVmIHRlc3RfZGF0YV9sb25nZXJfdGhhbl9kZWZhdWx0X2RhdGFfc2l6ZV9saW1pdChzZWxmKToKKyAgICAgICAgIyBIYWNrIHRoZSBkZWZhdWx0IHNvIHdlIGRvbid0IGhhdmUgdG8gZ2VuZXJhdGUgc28gbXVjaCBkYXRhLgorICAgICAgICBzZWxmLmNoYW5uZWwuZGF0YV9zaXplX2xpbWl0ID0gMTA0OAorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTE0MSw2NCArMjI2LDE4MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhXHJcbicpCiAKKyAgICBkZWYgdGVzdF9NQUlMX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gU0laRT01MTInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9pbnZhbGlkX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gU0laRT1pbnZhbGlkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+IFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl1cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfUkNQVF91bmtub3duX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPiBoYW09Z3JlZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRlJPTTo8ZWdnc0BleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVE86PGVnZ3NAZXhhbXBsZT4gaGFtPWdyZWVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1NSBSQ1BUIFRPIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90IGltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX3NpemVfcGFyYW1ldGVyX2xhcmdlcl90aGFuX2RlZmF1bHRfZGF0YV9zaXplX2xpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmNoYW5uZWwuZGF0YV9zaXplX2xpbWl0ID0gMTA0OAorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gU0laRT0yMDk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1MiBFcnJvcjogbWVzc2FnZSBzaXplIGV4Y2VlZHMgZml4ZWQgbWF4aW11bSBtZXNzYWdlIHNpemVcclxuJykKKwogICAgIGRlZiB0ZXN0X25lZWRfTUFJTChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0bzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAzIEVycm9yOiBuZWVkIE1BSUwgY29tbWFuZFxyXG4nKQogCi0gICAgZGVmIHRlc3RfTUFJTF9zeW50YXgoc2VsZik6CisgICAgZGVmIHRlc3RfTUFJTF9zeW50YXhfSEVMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tIGVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+XHJcbicpCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCiAKLSAgICBkZWYgdGVzdF9NQUlMX21pc3NpbmdfZnJvbShzZWxmKToKKyAgICBkZWYgdGVzdF9NQUlMX3N5bnRheF9FSExPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb20gZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+IFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl1cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfbWlzc2luZ19hZGRyZXNzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCi0gICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTo8YWRkcmVzcz5cclxuJykKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKIAogICAgIGRlZiB0ZXN0X01BSUxfY2hldnJvbnMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8ZWdnc0BleGFtcGxlPicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfZW1wdHlfY2hldnJvbnMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9xdW90ZWRfbG9jYWxwYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206IDwiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydF9ub19hbmdsZXMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydF93aXRoX3NpemUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogPCJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbT4gU0laRT0xMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydF93aXRoX3NpemVfbm9fYW5nbGVzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbSBTSVpFPTEwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwubWFpbGZyb20sICciRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20nKQogCiAgICAgZGVmIHRlc3RfbmVzdGVkX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVzdGVkIE1BSUwgY29tbWFuZFxyXG4nKQogCisgICAgZGVmIHRlc3RfVlJGWShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVlJGWSBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInMjUyIENhbm5vdCBWUkZZIHVzZXIsIGJ1dCB3aWxsIGFjY2VwdCBtZXNzYWdlIGFuZCBhdHRlbXB0ICcgKyBcCisgICAgICAgICAgICBiJ2RlbGl2ZXJ5XHJcbicpCisKKyAgICBkZWYgdGVzdF9WUkZZX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVlJGWScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBWUkZZIDxhZGRyZXNzPlxyXG4nKQorCisgICAgZGVmIHRlc3RfRVhQTl9ub3RfaW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VYUE4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAyIEVYUE4gbm90IGltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgdGVzdF9ub19IRUxPX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3RcclxuJykKKwogICAgIGRlZiB0ZXN0X25lZWRfUkNQVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAzIEVycm9yOiBuZWVkIFJDUFQgY29tbWFuZFxyXG4nKQogCi0gICAgZGVmIHRlc3RfUkNQVF9zeW50YXgoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgIGRlZiB0ZXN0X1JDUFRfc3ludGF4X0hFTE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTogZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0byBlZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgIGInNTAxIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+XHJcbicpCiAKKyAgICBkZWYgdGVzdF9SQ1BUX3N5bnRheF9FSExPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206IGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG8gZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9SQ1BUX2xvd2VyY2FzZV90b19PSyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOiBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvOiA8ZWdnc0BleGFtcGxlPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3Rfbm9fSEVMT19SQ1BUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3RcclxuJykKKwogICAgIGRlZiB0ZXN0X2RhdGFfZGlhbG9nKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKIAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+XHJcbicpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxubW9yZVxyXG4uJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAogICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZSddLCAnZGF0YVxubW9yZScpXSkKIAogICAgIGRlZiB0ZXN0X0RBVEFfc3ludGF4KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBIHNwYW0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYic1MDEgU3ludGF4OiBEQVRBXHJcbicpCiAKKyAgICBkZWYgdGVzdF9ub19IRUxPX0RBVEEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEgc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3RcclxuJykKKwogICAgIGRlZiB0ZXN0X2RhdGFfdHJhbnNwYXJlbmN5X3NlY3Rpb25fNF81XzIoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMjA2LDYgKzQxMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsICcuJykKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX1JDUFQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86aGFtQGV4YW1wbGUnKQpAQCAtMjE2LDYgKzQyMSw3IEBACiAKICAgICBkZWYgdGVzdF9tYW51YWxfc3RhdHVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBDaGFubmVsIGlzIGFibGUgdG8gcmV0dXJuIGEgY3VzdG9tIHN0YXR1cyBtZXNzYWdlCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMjIzLDEwICs0MjksMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9raXNoXHJcbicpCiAKICAgICBkZWYgdGVzdF9SU0VUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9rXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206Zm9vQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQpAQCAtMjM0LDU4ICs0NDEsMTE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCiAgICAgICAgICAgICBbKCdwZWVyJywgJ2Zvb0BleGFtcGxlJywgWydlZ2dzQGV4YW1wbGUnXSwgJ2RhdGEnKV0pCiAKKyAgICBkZWYgdGVzdF9IRUxPX1JTRVQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JTRVQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKwogICAgIGRlZiB0ZXN0X1JTRVRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUIGhpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInNTAxIFN5bnRheDogUlNFVFxyXG4nKQogCisgICAgZGVmIHRlc3RfdW5rbm93bl9jb21tYW5kKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidVTktOT1dOX0NNRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBjb21tYW5kICJVTktOT1dOX0NNRCIgbm90ICcgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgYidyZWNvZ25pemVkXHJcbicpCisKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfZGVwcmVjYXRpb25zKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3NlcnZlcgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc2VydmVyID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbGluZQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbGluZSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3N0YXRlCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zdGF0ZSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2dyZWV0aW5nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19ncmVldGluZyA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX21haWxmcm9tCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19tYWlsZnJvbSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3JjcHR0b3MKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3JjcHR0b3MgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19kYXRhCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19kYXRhID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZnFkbgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZnFkbiA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3BlZXIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3BlZXIgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19jb25uCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19jb25uID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkcgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkciA9ICdzcGFtJwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU01UUERTZXJ2ZXJUZXN0LCBTTVRQRENoYW5uZWxUZXN0KQorCitjbGFzcyBTTVRQRENoYW5uZWxXaXRoRGF0YVNpemVMaW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcignYScsICdiJykKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgICMgU2V0IERBVEEgc2l6ZSBsaW1pdCB0byAzMiBieXRlcyBmb3IgZWFzeSB0ZXN0aW5nCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLCAzMikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGxpbmUpOgorICAgICAgICBzZWxmLmNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X2RhdGFfbGltaXRfZGlhbG9nKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAorICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZSddLCAnZGF0YVxubW9yZScpXSkKKworICAgIGRlZiB0ZXN0X2RhdGFfbGltaXRfZGlhbG9nX3Rvb19tdWNoX2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+XHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1RoaXMgbWVzc2FnZSBpcyBsb25nZXIgdGhhbiAzMiBieXRlc1xyXG4uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YVxyXG4nKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQppbmRleCAyY2IwZDFhLi5iZWZjNDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBzZWxlY3QKK2ltcG9ydCBlcnJubwogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKQEAgLTcyLDYgKzczLDE0IEBACiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0KQogICAgICAgICBzbXRwLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0U291cmNlQWRkcmVzcyhzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIb2xhIG11bmRvIikKKyAgICAgICAgIyBjb25uZWN0cworICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz0oJzEyNy4wLjAuMScsMTk4NzYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuc291cmNlX2FkZHJlc3MsICgnMTI3LjAuMC4xJywgMTk4NzYpKQorICAgICAgICBzbXRwLmNsb3NlKCkKKwogICAgIGRlZiB0ZXN0QmFzaWMyKHNlbGYpOgogICAgICAgICBtb2NrX3NvY2tldC5yZXBseV93aXRoKGIiMjIwIEhvbGEgbXVuZG8iKQogICAgICAgICAjIGNvbm5lY3RzLCBpbmNsdWRlIHBvcnQgaW4gaG9zdCBuYW1lCkBAIC0yMDQsMTUgKzIxMywyOSBAQAogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKICAgICAgICAgc210cC5xdWl0KCkKIAorICAgIGRlZiB0ZXN0U291cmNlQWRkcmVzcyhzZWxmKToKKyAgICAgICAgIyBjb25uZWN0CisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9Mywgc291cmNlX2FkZHJlc3M9KCcxMjcuMC4wLjEnLCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zb3VyY2VfYWRkcmVzcywgKCcxMjcuMC4wLjEnLCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5sb2NhbF9ob3N0bmFtZSwgJ2xvY2FsaG9zdCcpCisgICAgICAgICAgICBzbXRwLnF1aXQoKQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUREUklOVVNFOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvdWxkbid0IGJpbmQgdG8gcG9ydCAlZCIgJSBwb3J0KQorICAgICAgICAgICAgcmFpc2UKKwogICAgIGRlZiB0ZXN0Tk9PUChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPaycpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5ub29wKCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCiAgICAgZGVmIHRlc3RSU0VUKHNlbGYpOgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKLSAgICAgICAgZXhwZWN0ZWQgPSAoMjUwLCBiJ09rJykKKyAgICAgICAgZXhwZWN0ZWQgPSAoMjUwLCBiJ09LJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnJzZXQoKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKQEAgLTIyMywxMCArMjQ2LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5laGxvKCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCi0gICAgZGVmIHRlc3RWUkZZKHNlbGYpOgotICAgICAgICAjIFZSRlkgaXNuJ3QgaW1wbGVtZW50ZWQgaW4gRGVidWdnaW5nU2VydmVyCisgICAgZGVmIHRlc3ROb3RJbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgIyBFWFBOIGlzbid0IGltcGxlbWVudGVkIGluIERlYnVnZ2luZ1NlcnZlcgogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKLSAgICAgICAgZXhwZWN0ZWQgPSAoNTAyLCBiJ0Vycm9yOiBjb21tYW5kICJWUkZZIiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBleHBlY3RlZCA9ICg1MDIsIGInRVhQTiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBzbXRwLnB1dGNtZCgnRVhQTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5nZXRyZXBseSgpLCBleHBlY3RlZCkKKyAgICAgICAgc210cC5xdWl0KCkKKworICAgIGRlZiB0ZXN0VlJGWShzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MiwgYidDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYW5kIGF0dGVtcHQgZGVsaXZlcnknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAudnJmeSgnbm9ib2R5QG5vd2hlcmUuY29tJyksIGV4cGVjdGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAudmVyaWZ5KCdub2JvZHlAbm93aGVyZS5jb20nKSwgZXhwZWN0ZWQpCiAgICAgICAgIHNtdHAucXVpdCgpCkBAIC0yNDIsNyArMjczLDggQEAKIAogICAgIGRlZiB0ZXN0SEVMUChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5oZWxwKCksIGInRXJyb3I6IGNvbW1hbmQgIkhFTFAiIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5oZWxwKCksIGInU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1JDUFQgREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZJykKICAgICAgICAgc210cC5xdWl0KCkKIAogICAgIGRlZiB0ZXN0U2VuZChzZWxmKToKQEAgLTU2MCw2ICs1OTIsOSBAQAogIyBTaW11bGF0ZWQgU01UUCBjaGFubmVsICYgc2VydmVyCiBjbGFzcyBTaW1TTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6CiAKKyAgICAjIEZvciB0ZXN0aW5nIGZhaWx1cmVzIGluIFFVSVQgd2hlbiB1c2luZyB0aGUgY29udGV4dCBtYW5hZ2VyIEFQSS4KKyAgICBxdWl0X3Jlc3BvbnNlID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhX2ZlYXR1cmVzLCAqYXJncywgKiprdyk6CiAgICAgICAgIHNlbGYuX2V4dHJhZmVhdHVyZXMgPSAnJy5qb2luKAogICAgICAgICAgICAgWyAiMjUwLXswfVxyXG4iLmZvcm1hdCh4KSBmb3IgeCBpbiBleHRyYV9mZWF0dXJlcyBdKQpAQCAtNjEwLDE5ICs2NDUsMzEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUwIE5vIGFjY2VzcyBmb3IgeW91IScpCiAKKyAgICBkZWYgc210cF9RVUlUKHNlbGYsIGFyZyk6CisgICAgICAgICMgYXJncyBpcyBpZ25vcmVkCisgICAgICAgIGlmIHNlbGYucXVpdF9yZXNwb25zZSBpcyBOb25lOgorICAgICAgICAgICAgc3VwZXIoU2ltU01UUENoYW5uZWwsIHNlbGYpLnNtdHBfUVVJVChhcmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnB1c2goc2VsZi5xdWl0X3Jlc3BvbnNlKQorICAgICAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQorCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKICAgICAgICAgcmFpc2UKIAogCiBjbGFzcyBTaW1TTVRQU2VydmVyKHNtdHBkLlNNVFBTZXJ2ZXIpOgogCisgICAgIyBGb3IgdGVzdGluZyBmYWlsdXJlcyBpbiBRVUlUIHdoZW4gdXNpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBBUEkuCisgICAgcXVpdF9yZXNwb25zZSA9IE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CiAgICAgICAgIHNlbGYuX2V4dHJhX2ZlYXR1cmVzID0gW10KICAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6Ci0gICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gU2ltU01UUENoYW5uZWwoc2VsZi5fZXh0cmFfZmVhdHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwgPSBTaW1TTVRQQ2hhbm5lbCgKKyAgICAgICAgICAgIHNlbGYuX2V4dHJhX2ZlYXR1cmVzLCBzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbC5xdWl0X3Jlc3BvbnNlID0gc2VsZi5xdWl0X3Jlc3BvbnNlCiAKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgcGFzcwpAQCAtNzUyLDYgKzc5OSwyNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9jcmVkZW50aWFsc1snY3JhbS1tZDUnXSwgc3RyKGVycikpCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgIGNvZGUsIG1lc3NhZ2UgPSBzbXRwLm5vb3AoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAyNTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNtdHBsaWIuU01UUFNlcnZlckRpc2Nvbm5lY3RlZCwgc210cC5zZW5kLCBiJ2ZvbycpCisgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgIHNtdHAuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQsIHNtdHAuc2VuZCwgYidmb28nKQorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfUVVJVF9mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYucXVpdF9yZXNwb25zZSA9ICc0MjEgUVVJVCBGQUlMRUQnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQUmVzcG9uc2VFeGNlcHRpb24pIGFzIGVycm9yOgorICAgICAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0KSBhcyBzbXRwOgorICAgICAgICAgICAgICAgIHNtdHAubm9vcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3IuZXhjZXB0aW9uLnNtdHBfY29kZSwgNDIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yLmV4Y2VwdGlvbi5zbXRwX2Vycm9yLCBiJ1FVSVQgRkFJTEVEJykKKyAgICAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGNsZWFuIHVwIHNlbGYuc2Vydi5xdWl0X3Jlc3BvbnNlIGJlY2F1c2UgYSBuZXcKKyAgICAgICAgIyBzZXJ2ZXIgaXMgYWx3YXlzIGluc3RhbnRpYXRlZCBpbiB0aGUgc2V0VXAoKS4KKwogICAgICNUT0RPOiBhZGQgdGVzdHMgZm9yIGNvcnJlY3QgQVVUSCBtZXRob2QgZmFsbGJhY2sgbm93IHRoYXQgdGhlCiAgICAgI3Rlc3QgaW5mcmFzdHJ1Y3R1cmUgY2FuIHN1cHBvcnQgaXQuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQppbmRleCAwMTk4YWI2Li44NjIyNGVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CkBAIC00LDI4ICs0LDYwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBzbXRwbGliCiAKK3NzbCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgic3NsIikKKwogc3VwcG9ydC5yZXF1aXJlcygibmV0d29yayIpCiAKKworY2xhc3MgU210cFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHRlc3RTZXJ2ZXIgPSAnc210cC5nbWFpbC5jb20nCisgICAgcmVtb3RlUG9ydCA9IDI1CisgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3N0YXJ0dGxzKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgorICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQKHNlbGYudGVzdFNlcnZlciwgc2VsZi5yZW1vdGVQb3J0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlcnZlci5zdGFydHRscyhjb250ZXh0PXNlbGYuY29udGV4dCkKKyAgICAgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gPT0gJ1NUQVJUVExTIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4nOgorICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5za2lwKGUuYXJnc1swXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCisKIGNsYXNzIFNtdHBTU0xUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXN0U2VydmVyID0gJ3NtdHAuZ21haWwuY29tJwogICAgIHJlbW90ZVBvcnQgPSA0NjUKKyAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShzbXRwbGliLCAnU01UUF9TU0wnKQogICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHNlbGYudGVzdFNlcnZlcik6CiAgICAgICAgICAgICBzZXJ2ZXIgPSBzbXRwbGliLlNNVFBfU1NMKHNlbGYudGVzdFNlcnZlciwgc2VsZi5yZW1vdGVQb3J0KQotICAgICAgICBzZXJ2ZXIuZWhsbygpCi0gICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZGVmYXVsdF9wb3J0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgogICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIpCi0gICAgICAgIHNlcnZlci5laGxvKCkKLSAgICAgICAgc2VydmVyLnF1aXQoKQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF91c2luZ19zc2xjb250ZXh0KHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgorICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCwgY29udGV4dD1zZWxmLmNvbnRleHQpCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCisKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNtdHBTU0xUZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNtdHBUZXN0LCBTbXRwU1NMVGVzdCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQppbmRleCA1NTczNDIxLi5kYTZlZjA1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQpAQCAtMiwxMSArMiwxMyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBfRXhwZWN0ZWRGYWlsdXJlCiAKIGltcG9ydCBlcnJubwogaW1wb3J0IGlvCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCkBAIC0xOSwzNCArMjEsMTkgQEAKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIGltcG9ydCBzaWduYWwKIGltcG9ydCBtYXRoCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc3RydWN0CiB0cnk6CiAgICAgaW1wb3J0IGZjbnRsCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBGYWxzZQotCi1kZWYgdHJ5X2FkZHJlc3MoaG9zdCwgcG9ydD0wLCBmYW1pbHk9c29ja2V0LkFGX0lORVQpOgotICAgICIiIlRyeSB0byBiaW5kIGEgc29ja2V0IG9uIHRoZSBnaXZlbiBob3N0OnBvcnQgYW5kIHJldHVybiBUcnVlCi0gICAgaWYgdGhhdCBoYXMgYmVlbiBwb3NzaWJsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzb2NrLmJpbmQoKGhvc3QsIHBvcnQpKQotICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBzb2NrZXQuZ2FpZXJyb3IpOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBzb2NrLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIFRydWUKLQotZGVmIGxpbnV4X3ZlcnNpb24oKToKLSAgICB0cnk6Ci0gICAgICAgICMgcGxhdGZvcm0ucmVsZWFzZSgpIGlzIHNvbWV0aGluZyBsaWtlICcyLjYuMzMuNy1kZXNrdG9wLTJtbmInCi0gICAgICAgIHZlcnNpb25fc3RyaW5nID0gcGxhdGZvcm0ucmVsZWFzZSgpLnNwbGl0KCctJylbMF0KLSAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChpbnQsIHZlcnNpb25fc3RyaW5nLnNwbGl0KCcuJykpKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICByZXR1cm4gMCwgMCwgMAordHJ5OgorICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBtdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQogCiBIT1NUID0gc3VwcG9ydC5IT1NUCi1NU0cgPSAnTWljaGFlbCBHaWxmaXggd2FzIGhlcmVcdTEyMzRcclxuJy5lbmNvZGUoJ3V0ZjgnKSAjIyB0ZXN0IHVuaWNvZGUgc3RyaW5nIGFuZCBjYXJyaWFnZSByZXR1cm4KLVNVUFBPUlRTX0lQVjYgPSBzb2NrZXQuaGFzX2lwdjYgYW5kIHRyeV9hZGRyZXNzKCc6OjEnLCBmYW1pbHk9c29ja2V0LkFGX0lORVQ2KQorTVNHID0gJ01pY2hhZWwgR2lsZml4IHdhcyBoZXJlXHUxMjM0XHJcbicuZW5jb2RlKCd1dGYtOCcpICMjIHRlc3QgdW5pY29kZSBzdHJpbmcgYW5kIGNhcnJpYWdlIHJldHVybgogCiB0cnk6CiAgICAgaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCkBAIC01NSw2ICs0MiwzMyBAQAogICAgIHRocmVhZCA9IE5vbmUKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2RlZiBfaGF2ZV9zb2NrZXRfY2FuKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBDQU4gc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgc29ja2V0LmVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKworZGVmIF9oYXZlX3NvY2tldF9yZHMoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIFJEUyBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBob3N0LiIiIgorICAgIHRyeToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBzLmNsb3NlKCkKKyAgICByZXR1cm4gVHJ1ZQorCitIQVZFX1NPQ0tFVF9DQU4gPSBfaGF2ZV9zb2NrZXRfY2FuKCkKKworSEFWRV9TT0NLRVRfUkRTID0gX2hhdmVfc29ja2V0X3JkcygpCisKKyMgU2l6ZSBpbiBieXRlcyBvZiB0aGUgaW50IHR5cGUKK1NJWkVPRl9JTlQgPSBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplCisKIGNsYXNzIFNvY2tldFRDUFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNzYsNiArOTAsNjMgQEAKICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ID0gTm9uZQogCitjbGFzcyBUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJTdWJjbGFzcyBvZiB1bml0dGVzdC5UZXN0Q2FzZSB3aXRoIHRocmVhZC1zYWZlIGNsZWFudXAgbWV0aG9kcy4KKworICAgIFRoaXMgc3ViY2xhc3MgcHJvdGVjdHMgdGhlIGFkZENsZWFudXAoKSBhbmQgZG9DbGVhbnVwcygpIG1ldGhvZHMKKyAgICB3aXRoIGEgcmVjdXJzaXZlIGxvY2suCisgICAgIiIiCisKKyAgICBpZiB0aHJlYWRpbmc6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQorCisgICAgICAgIGRlZiBhZGRDbGVhbnVwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfbG9jazoKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5hZGRDbGVhbnVwKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBkZWYgZG9DbGVhbnVwcyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9jbGVhbnVwX2xvY2s6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZG9DbGVhbnVwcygqYXJncywgKiprd2FyZ3MpCisKK2NsYXNzIFNvY2tldENBTlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVG8gYmUgYWJsZSB0byBydW4gdGhpcyB0ZXN0LCBhIGB2Y2FuMGAgQ0FOIGludGVyZmFjZSBjYW4gYmUgY3JlYXRlZCB3aXRoCisgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKyAgICAjIG1vZHByb2JlIHZjYW4KKyAgICAjIGlwIGxpbmsgYWRkIGRldiB2Y2FuMCB0eXBlIHZjYW4KKyAgICAjIGlmY29uZmlnIHZjYW4wIHVwCisgICAgIiIiCisgICAgaW50ZXJmYWNlID0gJ3ZjYW4wJworICAgIGJ1ZnNpemUgPSAxMjgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zLmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnMuYmluZCgoc2VsZi5pbnRlcmZhY2UsKSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ25ldHdvcmsgaW50ZXJmYWNlIGAlc2AgZG9lcyBub3QgZXhpc3QnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJmYWNlKQorCisKK2NsYXNzIFNvY2tldFJEU1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVG8gYmUgYWJsZSB0byBydW4gdGhpcyB0ZXN0LCB0aGUgYHJkc2Aga2VybmVsIG1vZHVsZSBtdXN0IGJlIGxvYWRlZDoKKyAgICAjIG1vZHByb2JlIHJkcworICAgICIiIgorICAgIGJ1ZnNpemUgPSA4MTkyCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2LmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndW5hYmxlIHRvIGJpbmQgUkRTIHNvY2tldCcpCisKKwogY2xhc3MgVGhyZWFkYWJsZVRlc3Q6CiAgICAgIiIiVGhyZWFkYWJsZSBUZXN0IGNsYXNzCiAKQEAgLTEzMyw2ICsyMDQsNyBAQAogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuZG9uZSA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZS5RdWV1ZSgxKQorICAgICAgICBzZWxmLnNlcnZlcl9jcmFzaGVkID0gRmFsc2UKIAogICAgICAgICAjIERvIHNvbWUgbXVuZ2luZyB0byBzdGFydCB0aGUgY2xpZW50IHRlc3QuCiAgICAgICAgIG1ldGhvZG5hbWUgPSBzZWxmLmlkKCkKQEAgLTE0Miw4ICsyMTQsMTIgQEAKICAgICAgICAgc2VsZi5jbGllbnRfdGhyZWFkID0gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoCiAgICAgICAgICAgICBzZWxmLmNsaWVudFJ1biwgKHRlc3RfbWV0aG9kLCkpCiAKLSAgICAgICAgc2VsZi5fX3NldFVwKCkKLSAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX3JlYWR5LmlzX3NldCgpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9fc2V0VXAoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jcmFzaGVkID0gVHJ1ZQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3JlYWR5LnNldCgpCiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LndhaXQoKQogCkBAIC0xNTksMTAgKzIzNSwxNiBAQAogICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS53YWl0KCkKICAgICAgICAgc2VsZi5jbGllbnRTZXRVcCgpCiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LnNldCgpCisgICAgICAgIGlmIHNlbGYuc2VydmVyX2NyYXNoZWQ6CisgICAgICAgICAgICBzZWxmLmNsaWVudFRlYXJEb3duKCkKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3QgaGFzYXR0cih0ZXN0X2Z1bmMsICdfX2NhbGxfXycpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0ZXN0X2Z1bmMgbXVzdCBiZSBhIGNhbGxhYmxlIGZ1bmN0aW9uIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdF9mdW5jKCkKKyAgICAgICAgZXhjZXB0IF9FeHBlY3RlZEZhaWx1cmU6CisgICAgICAgICAgICAjIFdlIGRlbGliZXJhdGVseSBpZ25vcmUgZXhwZWN0ZWQgZmFpbHVyZXMKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYucXVldWUucHV0KGUpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMDMsNiArMjg1LDQ4IEBACiAgICAgICAgIHNlbGYuY2xpID0gTm9uZQogICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQogCitjbGFzcyBUaHJlYWRlZENBTlNvY2tldFRlc3QoU29ja2V0Q0FOVGVzdCwgVGhyZWFkYWJsZVRlc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgU29ja2V0Q0FOVGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaS5iaW5kKChzZWxmLmludGVyZmFjZSwpKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgIyBza2lwVGVzdCBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlLCBhbmQgd2lsbCBiZSBjYWxsZWQgaW4gdGhlCisgICAgICAgICAgICAjIHNlcnZlciBpbnN0ZWFkCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGkgPSBOb25lCisgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCisKK2NsYXNzIFRocmVhZGVkUkRTU29ja2V0VGVzdChTb2NrZXRSRFNUZXN0LCBUaHJlYWRhYmxlVGVzdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgorICAgICAgICBTb2NrZXRSRFNUZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuX19pbml0X18oc2VsZikKKworICAgIGRlZiBjbGllbnRTZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jbGkgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBSRFMgc29ja2V0cyBtdXN0IGJlIGJvdW5kIGV4cGxpY2l0bHkgdG8gc2VuZCBvciByZWNlaXZlIGRhdGEKKyAgICAgICAgICAgIHNlbGYuY2xpLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgc2VsZi5jbGlfYWRkciA9IHNlbGYuY2xpLmdldHNvY2tuYW1lKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIHNraXBUZXN0IHNob3VsZCBub3QgYmUgY2FsbGVkIGhlcmUsIGFuZCB3aWxsIGJlIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgICAgICMgc2VydmVyIGluc3RlYWQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGkuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaSA9IE5vbmUKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKKwogY2xhc3MgU29ja2V0Q29ubmVjdGVkVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgogICAgICIiIlNvY2tldCB0ZXN0cyBmb3IgY2xpZW50LXNlcnZlciBjb25uZWN0aW9uLgogCkBAIC0yNTgsNiArMzgyLDI0MyBAQAogICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQogCiAKKyMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIGJ5IHRoZSBzZW5kbXNnKCkvcmVjdm1zZygpIHRlc3RzLgorIyBDb21iaW5pbmcsIGZvciBpbnN0YW5jZSwgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluIGFuZCBUQ1BUZXN0QmFzZQorIyBnaXZlcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIFNvY2tldENvbm5lY3RlZFRlc3QsIGJ1dCBkaWZmZXJlbnQKKyMgYWRkcmVzcyBmYW1pbGllcyBjYW4gYmUgdXNlZCwgYW5kIHRoZSBhdHRyaWJ1dGVzIHNlcnZfYWRkciBhbmQKKyMgY2xpX2FkZHIgd2lsbCBiZSBzZXQgdG8gdGhlIGFkZHJlc3NlcyBvZiB0aGUgZW5kcG9pbnRzLgorCitjbGFzcyBTb2NrZXRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSBiYXNlIGNsYXNzIGZvciBzb2NrZXQgdGVzdHMuCisKKyAgICBTdWJjbGFzc2VzIG11c3QgcHJvdmlkZSBtZXRob2RzIG5ld1NvY2tldCgpIHRvIHJldHVybiBhIG5ldyBzb2NrZXQKKyAgICBhbmQgYmluZFNvY2soc29jaykgdG8gYmluZCBpdCB0byBhbiB1bnVzZWQgYWRkcmVzcy4KKworICAgIENyZWF0ZXMgYSBzb2NrZXQgc2VsZi5zZXJ2IGFuZCBzZXRzIHNlbGYuc2Vydl9hZGRyIHRvIGl0cyBhZGRyZXNzLgorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYgPSBzZWxmLm5ld1NvY2tldCgpCisgICAgICAgIHNlbGYuYmluZFNlcnZlcigpCisKKyAgICBkZWYgYmluZFNlcnZlcihzZWxmKToKKyAgICAgICAgIiIiQmluZCBzZXJ2ZXIgc29ja2V0IGFuZCBzZXQgc2VsZi5zZXJ2X2FkZHIgdG8gaXRzIGFkZHJlc3MuIiIiCisgICAgICAgIHNlbGYuYmluZFNvY2soc2VsZi5zZXJ2KQorICAgICAgICBzZWxmLnNlcnZfYWRkciA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCisgICAgICAgIHNlbGYuc2VydiA9IE5vbmUKKworCitjbGFzcyBTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4oU29ja2V0VGVzdEJhc2UpOgorICAgICIiIk1peGluIHRvIGxpc3RlbiBvbiB0aGUgc2VydmVyIHNvY2tldC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oMSkKKworCitjbGFzcyBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbihUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlLCBTb2NrZXRUZXN0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGFibGVUZXN0KToKKyAgICAiIiJNaXhpbiB0byBhZGQgY2xpZW50IHNvY2tldCBhbmQgYWxsb3cgY2xpZW50L3NlcnZlciB0ZXN0cy4KKworICAgIENsaWVudCBzb2NrZXQgaXMgc2VsZi5jbGkgYW5kIGl0cyBhZGRyZXNzIGlzIHNlbGYuY2xpX2FkZHIuICBTZWUKKyAgICBUaHJlYWRhYmxlVGVzdCBmb3IgdXNhZ2UgaW5mb3JtYXRpb24uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc2VsZi5uZXdDbGllbnRTb2NrZXQoKQorICAgICAgICBzZWxmLmJpbmRDbGllbnQoKQorCisgICAgZGVmIG5ld0NsaWVudFNvY2tldChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHNvY2tldCBmb3IgdXNlIGFzIGNsaWVudC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYubmV3U29ja2V0KCkKKworICAgIGRlZiBiaW5kQ2xpZW50KHNlbGYpOgorICAgICAgICAiIiJCaW5kIGNsaWVudCBzb2NrZXQgYW5kIHNldCBzZWxmLmNsaV9hZGRyIHRvIGl0cyBhZGRyZXNzLiIiIgorICAgICAgICBzZWxmLmJpbmRTb2NrKHNlbGYuY2xpKQorICAgICAgICBzZWxmLmNsaV9hZGRyID0gc2VsZi5jbGkuZ2V0c29ja25hbWUoKQorCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpID0gTm9uZQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQorCisKK2NsYXNzIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbihTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4pOgorICAgICIiIk1peGluIHRvIGFsbG93IGNsaWVudC9zZXJ2ZXIgc3RyZWFtIHRlc3RzIHdpdGggY29ubmVjdGVkIGNsaWVudC4KKworICAgIFNlcnZlcidzIHNvY2tldCByZXByZXNlbnRpbmcgY29ubmVjdGlvbiB0byBjbGllbnQgaXMgc2VsZi5jbGlfY29ubgorICAgIGFuZCBjbGllbnQncyBjb25uZWN0aW9uIHRvIHNlcnZlciBpcyBzZWxmLnNlcnZfY29ubi4gIChCYXNlZCBvbgorICAgIFNvY2tldENvbm5lY3RlZFRlc3QuKQorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgIyBJbmRpY2F0ZSBleHBsaWNpdGx5IHdlJ3JlIHJlYWR5IGZvciB0aGUgY2xpZW50IHRocmVhZCB0bworICAgICAgICAjIHByb2NlZWQgYW5kIHRoZW4gcGVyZm9ybSB0aGUgYmxvY2tpbmcgY2FsbCB0byBhY2NlcHQKKyAgICAgICAgc2VsZi5zZXJ2ZXJFeHBsaWNpdFJlYWR5KCkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBzZWxmLmNsaV9jb25uID0gY29ubgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaV9jb25uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS50ZWFyRG93bigpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY2xpZW50U2V0VXAoKQorICAgICAgICBzZWxmLmNsaS5jb25uZWN0KHNlbGYuc2Vydl9hZGRyKQorICAgICAgICBzZWxmLnNlcnZfY29ubiA9IHNlbGYuY2xpCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydl9jb25uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBOb25lCisgICAgICAgIHN1cGVyKCkuY2xpZW50VGVhckRvd24oKQorCisKK2NsYXNzIFVuaXhTb2NrZXRUZXN0QmFzZShTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVW5peC1kb21haW4gc29ja2V0IHRlc3RzLiIiIgorCisgICAgIyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nIHRlc3RzLCBzbyB3ZQorICAgICMgY3JlYXRlIHRoZSBzb2NrZXRzIGluIGEgcHJpdmF0ZSBkaXJlY3Rvcnkgc28gdGhhdCBvdGhlciB1c2VycworICAgICMgY2FuJ3Qgc2VuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHByb2JsZW1hdGljIGZvciBhIHByaXZpbGVnZWQKKyAgICAjIHVzZXIgcnVubmluZyB0aGUgdGVzdHMuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlyX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJtZGlyLCBzZWxmLmRpcl9wYXRoKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgcGF0aCA9IHRlbXBmaWxlLm1rdGVtcChkaXI9c2VsZi5kaXJfcGF0aCkKKyAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKworY2xhc3MgVW5peFN0cmVhbUJhc2UoVW5peFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVbml4LWRvbWFpbiBTT0NLX1NUUkVBTSB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisKKworY2xhc3MgSW5ldFRlc3RCYXNlKFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUHY0IHNvY2tldCB0ZXN0cy4iIiIKKworICAgIGhvc3QgPSBIT1NUCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnZfYWRkclsxXQorCisgICAgZGVmIGJpbmRTb2NrKHNlbGYsIHNvY2spOgorICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzb2NrLCBob3N0PXNlbGYuaG9zdCkKKworY2xhc3MgVENQVGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBUQ1Atb3Zlci1JUHY0IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworY2xhc3MgVURQVGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVRFAtb3Zlci1JUHY0IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQorCitjbGFzcyBTQ1RQU3RyZWFtQmFzZShJbmV0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFNDVFAgdGVzdHMgaW4gb25lLXRvLW9uZSAoU09DS19TVFJFQU0pIG1vZGUuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBQUk9UT19TQ1RQKQorCisKK2NsYXNzIEluZXQ2VGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUHY2IHNvY2tldCB0ZXN0cy4iIiIKKworICAgICMgRG9uJ3QgdXNlICJsb2NhbGhvc3QiIGhlcmUgLSBpdCBtYXkgbm90IGhhdmUgYW4gSVB2NiBhZGRyZXNzCisgICAgIyBhc3NpZ25lZCB0byBpdCBieSBkZWZhdWx0IChlLmcuIGluIC9ldGMvaG9zdHMpLCBhbmQgaWYgc29tZW9uZQorICAgICMgaGFzIGFzc2lnbmVkIGl0IGFuIElQdjQtbWFwcGVkIGFkZHJlc3MsIHRoZW4gaXQncyB1bmxpa2VseSB0bworICAgICMgd29yayB3aXRoIHRoZSBmdWxsIElQdjYgQVBJLgorICAgIGhvc3QgPSAiOjoxIgorCitjbGFzcyBVRFA2VGVzdEJhc2UoSW5ldDZUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVURQLW92ZXItSVB2NiB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfREdSQU0pCisKKworIyBUZXN0LXNraXBwaW5nIGRlY29yYXRvcnMgZm9yIHVzZSB3aXRoIFRocmVhZGFibGVUZXN0LgorCitkZWYgc2tpcFdpdGhDbGllbnRJZihjb25kaXRpb24sIHJlYXNvbik6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYWRkIGNsaWVudF9za2lwIGRlY29yYXRvci4KKworICAgIElmIHRoZSBkZWNvcmF0ZWQgb2JqZWN0IGlzIG5vdCBhIGNsYXNzLCBzZXRzIGl0cyBhdHRyaWJ1dGUKKyAgICAiY2xpZW50X3NraXAiIHRvIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGZ1bmN0aW9uCisgICAgaWYgdGhlIHRlc3QgaXMgdG8gYmUgc2tpcHBlZCwgb3IgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGlmIGl0IGlzCisgICAgbm90LiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBydW5uaW5nIHRoZSBjbGllbnQgcGFydCBvZiBhCisgICAgc2tpcHBlZCB0ZXN0IHdoZW4gdXNpbmcgVGhyZWFkYWJsZVRlc3QuCisgICAgIiIiCisgICAgZGVmIGNsaWVudF9wYXNzKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgc2tpcGRlYyhvYmopOgorICAgICAgICByZXR2YWwgPSB1bml0dGVzdC5za2lwKHJlYXNvbikob2JqKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAgICAgcmV0dmFsLmNsaWVudF9za2lwID0gbGFtYmRhIGY6IGNsaWVudF9wYXNzCisgICAgICAgIHJldHVybiByZXR2YWwKKyAgICBkZWYgbm9za2lwZGVjKG9iaik6CisgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShvYmosIHR5cGUpIG9yIGhhc2F0dHIob2JqLCAiY2xpZW50X3NraXAiKSk6CisgICAgICAgICAgICBvYmouY2xpZW50X3NraXAgPSBsYW1iZGEgZjogZgorICAgICAgICByZXR1cm4gb2JqCisgICAgcmV0dXJuIHNraXBkZWMgaWYgY29uZGl0aW9uIGVsc2Ugbm9za2lwZGVjCisKKworZGVmIHJlcXVpcmVBdHRycyhvYmosICphdHRyaWJ1dGVzKToKKyAgICAiIiJTa2lwIGRlY29yYXRlZCB0ZXN0IGlmIG9iaiBpcyBtaXNzaW5nIGFueSBvZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcy4KKworICAgIFNldHMgY2xpZW50X3NraXAgYXR0cmlidXRlIGFzIHNraXBXaXRoQ2xpZW50SWYoKSBkb2VzLgorICAgICIiIgorICAgIG1pc3NpbmcgPSBbbmFtZSBmb3IgbmFtZSBpbiBhdHRyaWJ1dGVzIGlmIG5vdCBoYXNhdHRyKG9iaiwgbmFtZSldCisgICAgcmV0dXJuIHNraXBXaXRoQ2xpZW50SWYoCisgICAgICAgIG1pc3NpbmcsICJkb24ndCBoYXZlICIgKyAiLCAiLmpvaW4obmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nKSkKKworCitkZWYgcmVxdWlyZVNvY2tldCgqYXJncyk6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBhIHNvY2tldCBjYW5ub3QgYmUgY3JlYXRlZCB3aXRoIGdpdmVuIGFyZ3VtZW50cy4KKworICAgIFdoZW4gYW4gYXJndW1lbnQgaXMgZ2l2ZW4gYXMgYSBzdHJpbmcsIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZiB0aGF0CisgICAgYXR0cmlidXRlIG9mIHRoZSBzb2NrZXQgbW9kdWxlLCBvciBza2lwIHRoZSB0ZXN0IGlmIGl0IGRvZXNuJ3QKKyAgICBleGlzdC4gIFNldHMgY2xpZW50X3NraXAgYXR0cmlidXRlIGFzIHNraXBXaXRoQ2xpZW50SWYoKSBkb2VzLgorICAgICIiIgorICAgIGVyciA9IE5vbmUKKyAgICBtaXNzaW5nID0gW29iaiBmb3Igb2JqIGluIGFyZ3MgaWYKKyAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBzdHIpIGFuZCBub3QgaGFzYXR0cihzb2NrZXQsIG9iaildCisgICAgaWYgbWlzc2luZzoKKyAgICAgICAgZXJyID0gImRvbid0IGhhdmUgIiArICIsICIuam9pbihuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcpCisgICAgZWxzZToKKyAgICAgICAgY2FsbGFyZ3MgPSBbZ2V0YXR0cihzb2NrZXQsIG9iaikgaWYgaXNpbnN0YW5jZShvYmosIHN0cikgZWxzZSBvYmoKKyAgICAgICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBhcmdzXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgqY2FsbGFyZ3MpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgWFhYOiBjaGVjayBlcnJubz8KKyAgICAgICAgICAgIGVyciA9IHN0cihlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIHNraXBXaXRoQ2xpZW50SWYoCisgICAgICAgIGVyciBpcyBub3QgTm9uZSwKKyAgICAgICAgImNhbid0IGNyZWF0ZSBzb2NrZXQoezB9KTogezF9Ii5mb3JtYXQoCisgICAgICAgICAgICAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIGFyZ3MpLCBlcnIpKQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBCZWdpbiBUZXN0cwogCkBAIC0yODMsMTggKzY0NCwxMyBAQAogCiAgICAgZGVmIHRlc3RTb2NrZXRFcnJvcihzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHNvY2tldCBtb2R1bGUgZXhjZXB0aW9ucwotICAgICAgICBkZWYgcmFpc2VfZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgbXNnID0gIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbiAoJXMpLiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IKLSAgICAgICAgZGVmIHJhaXNlX2hlcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuaGVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuaGVycm9yCi0gICAgICAgIGRlZiByYWlzZV9nYWllcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuZ2FpZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5nYWllcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbi4iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2hlcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9nYWllcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKIAogICAgIGRlZiB0ZXN0U2VuZHRvRXJyb3JzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgdGhhdCBzZW5kdG8gZG9lbnMndCBtYXNrcyBmYWlsdXJlcy4gU2VlICMxMDE2OS4KQEAgLTM3MCw2ICs3MjYsNTIgQEAKICAgICAgICAgaWYgbm90IGZxaG4gaW4gYWxsX2hvc3RfbmFtZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkVycm9yIHRlc3RpbmcgaG9zdCByZXNvbHV0aW9uIG1lY2hhbmlzbXMuIChmcWRuOiAlcywgYWxsOiAlcykiICUgKGZxaG4sIHJlcHIoYWxsX2hvc3RfbmFtZXMpKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc2V0aG9zdG5hbWUnKSwgInRlc3QgbmVlZHMgc29ja2V0LnNldGhvc3RuYW1lKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnZ2V0aG9zdG5hbWUnKSwgInRlc3QgbmVlZHMgc29ja2V0LmdldGhvc3RuYW1lKCkiKQorICAgIGRlZiB0ZXN0X3NldGhvc3RuYW1lKHNlbGYpOgorICAgICAgICBvbGRobiA9IHNvY2tldC5nZXRob3N0bmFtZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZSgnbmV3JykKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHNob3VsZCBiZSBydW4gYXMgcm9vdCIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcnVubmluZyB0ZXN0IGFzIHJvb3QhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2tldC5nZXRob3N0bmFtZSgpLCAnbmV3JykKKyAgICAgICAgICAgICMgU2hvdWxkIHdvcmsgd2l0aCBieXRlcyBvYmplY3RzIHRvbworICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKGInYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ja2V0LmdldGhvc3RuYW1lKCksICdiYXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKG9sZGhuKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpZl9uYW1laW5kZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKKyAgICBkZWYgdGVzdEludGVyZmFjZU5hbWVJbmRleChzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlcyA9IHNvY2tldC5pZl9uYW1laW5kZXgoKQorICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gaW50ZXJmYWNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmRleCwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG5hbWUsIHN0cikKKyAgICAgICAgICAgICMgaW50ZXJmYWNlIGluZGljZXMgYXJlIG5vbi16ZXJvIGludGVnZXJzCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoaW5kZXgsIDApCisgICAgICAgICAgICBfaW5kZXggPSBzb2NrZXQuaWZfbmFtZXRvaW5kZXgobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShfaW5kZXgsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZXgsIF9pbmRleCkKKyAgICAgICAgICAgIF9uYW1lID0gc29ja2V0LmlmX2luZGV4dG9uYW1lKGluZGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKF9uYW1lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIF9uYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpZl9uYW1laW5kZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKKyAgICBkZWYgdGVzdEludmFsaWRJbnRlcmZhY2VOYW1lSW5kZXgoc2VsZik6CisgICAgICAgICMgdGVzdCBub25leGlzdGVudCBpbnRlcmZhY2UgaW5kZXgvbmFtZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNvY2tldC5pZl9pbmRleHRvbmFtZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrZXQuaWZfbmFtZXRvaW5kZXgsICdfREVBREJFRUYnKQorICAgICAgICAjIHRlc3Qgd2l0aCBpbnZhbGlkIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNvY2tldC5pZl9uYW1ldG9pbmRleCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzb2NrZXQuaWZfaW5kZXh0b25hbWUsICdfREVBREJFRUYnKQorCiAgICAgZGVmIHRlc3RSZWZDb3VudEdldE5hbWVJbmZvKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgcmVmZXJlbmNlIGNvdW50IGZvciBnZXRuYW1laW5mbwogICAgICAgICBpZiBoYXNhdHRyKHN5cywgImdldHJlZmNvdW50Iik6CkBAIC00MjIsMTAgKzgyNCw4IEBACiAgICAgICAgICMgRmluZCBvbmUgc2VydmljZSB0aGF0IGV4aXN0cywgdGhlbiBjaGVjayBhbGwgdGhlIHJlbGF0ZWQgaW50ZXJmYWNlcy4KICAgICAgICAgIyBJJ3ZlIG9yZGVyZWQgdGhpcyBieSBwcm90b2NvbHMgdGhhdCBoYXZlIGJvdGggYSB0Y3AgYW5kIHVkcAogICAgICAgICAjIHByb3RvY29sLCBhdCBsZWFzdCBmb3IgbW9kZXJuIExpbnV4ZXMuCi0gICAgICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpIG9yCi0gICAgICAgICAgICBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicpOgorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdmcmVlYnNkJywgJ25ldGJzZCcpKQorICAgICAgICAgICAgb3Igc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJykpOgogICAgICAgICAgICAgIyBhdm9pZCB0aGUgJ2VjaG8nIHNlcnZpY2Ugb24gdGhpcyBwbGF0Zm9ybSwgYXMgdGhlcmUgaXMgYW4KICAgICAgICAgICAgICMgYXNzdW1wdGlvbiBicmVha2luZyBub24tc3RhbmRhcmQgcG9ydC9wcm90b2NvbCBlbnRyeQogICAgICAgICAgICAgc2VydmljZXMgPSAoJ2RheXRpbWUnLCAncW90ZCcsICdkb21haW4nKQpAQCAtNzIwLDcgKzExMjAsNyBAQAogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJ2xvY2FsaG9zdCcsIDgwKQogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJzEyNy4wLjAuMScsIDgwKQogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oTm9uZSwgODApCi0gICAgICAgIGlmIFNVUFBPUlRTX0lQVjY6CisgICAgICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgogICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCc6OjEnLCA4MCkKICAgICAgICAgIyBwb3J0IGNhbiBiZSBhIHN0cmluZyBzZXJ2aWNlIG5hbWUgc3VjaCBhcyAiaHR0cCIsIGEgbnVtZXJpYwogICAgICAgICAjIHBvcnQgbnVtYmVyIG9yIE5vbmUKQEAgLTc3Myw3ICsxMTczLDEyIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmsgaXMgbm90IGVuYWJsZWQnKQogICAgIGRlZiB0ZXN0X2lkbmEoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICAjIENoZWNrIGZvciBpbnRlcm5ldCBhY2Nlc3MgYmVmb3JlIHJ1bm5pbmcgdGVzdCAoaXNzdWUgIzEyODA0KS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWUoJ3B5dGhvbi5vcmcnKQorICAgICAgICBleGNlcHQgc29ja2V0LmdhaWVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IHNvY2tldC5FQUlfTk9EQVRBOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2ludGVybmV0IGFjY2VzcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKICAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIGJlIHN1Y2Nlc3NmdWwKICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWUoJ9C40YHQv9GL0YLQsNC90LjQtS5weXRob24ub3JnJykKICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWVfZXgoJ9C40YHQv9GL0YLQsNC90LjQtS5weXRob24ub3JnJykKQEAgLTg1MSw2ICsxMjU2LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmcC53cml0YWJsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZwLnNlZWthYmxlKQogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBzb2NrLCBwcm90b2NvbCkKKwogICAgIGRlZiB0ZXN0X2xpc3Rlbl9iYWNrbG9nKHNlbGYpOgogICAgICAgICBmb3IgYmFja2xvZyBpbiAwLCAtMToKICAgICAgICAgICAgIHNydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKQEAgLTg2NCw3ICsxMjc1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc3J2Lmxpc3RlbiwgX3Rlc3RjYXBpLklOVF9NQVggKyAxKQogICAgICAgICBzcnYuY2xvc2UoKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU1VQUE9SVFNfSVBWNiwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfZmxvd2luZm8oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5nZXRuYW1laW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc6OjEnLDAsIDB4ZmZmZmZmZmYpLCAwKQpAQCAtODcyLDYgKzEyODMsMjIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzLmJpbmQsICgnOjoxJywgMCwgLTEwKSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNDQU5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX0NBTgorICAgICAgICBzb2NrZXQuUEZfQ0FOCisgICAgICAgIHNvY2tldC5DQU5fUkFXCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdEJpbmRBbnkoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgcy5iaW5kKCgnJywgKSkKKworICAgIGRlZiB0ZXN0VG9vTG9uZ0ludGVyZmFjZU5hbWUoc2VsZik6CisgICAgICAgICMgbW9zdCBzeXN0ZW1zIGxpbWl0IElGTkFNU0laIHRvIDE2LCB0YWtlIDEwMjQgdG8gYmUgc3VyZQorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LmVycm9yLCAnaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmJpbmQsICgneCcgKiAxMDI0LCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgIkNBTl9SQVdfTE9PUEJBQ0siKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0sgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0TG9vcGJhY2soc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgZm9yIGxvb3BiYWNrIGluICgwLCAxKToKKyAgICAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19MT09QQkFDSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcGJhY2spCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb29wYmFjaywKKyAgICAgICAgICAgICAgICAgICAgcy5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fUkFXX0ZJTFRFUiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuQ0FOX1JBV19GSUxURVIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0RmlsdGVyKHNlbGYpOgorICAgICAgICBjYW5faWQsIGNhbl9tYXNrID0gMHgyMDAsIDB4NzAwCisgICAgICAgIGNhbl9maWx0ZXIgPSBzdHJ1Y3QucGFjaygiPUlJIiwgY2FuX2lkLCBjYW5fbWFzaykKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGNhbl9maWx0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgOCkpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQ0FOLCAnU29ja2V0Q2FuIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBDQU5UZXN0KFRocmVhZGVkQ0FOU29ja2V0VGVzdCk6CisKKyAgICAiIiJUaGUgQ0FOIGZyYW1lIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDxsaW51eC9jYW4uaD46CisKKyAgICBzdHJ1Y3QgY2FuX2ZyYW1lIHsKKyAgICAgICAgY2FuaWRfdCBjYW5faWQ7ICAvKiAzMiBiaXQgQ0FOX0lEICsgRUZGL1JUUi9FUlIgZmxhZ3MgKi8KKyAgICAgICAgX191OCAgICBjYW5fZGxjOyAvKiBkYXRhIGxlbmd0aCBjb2RlOiAwIC4uIDggKi8KKyAgICAgICAgX191OCAgICBkYXRhWzhdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyAgICB9OworICAgICIiIgorICAgIGNhbl9mcmFtZV9mbXQgPSAiPUlCM3g4cyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkQ0FOU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNscywgY2FuX2lkLCBkYXRhKToKKyAgICAgICAgIiIiQnVpbGQgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9kbGMgPSBsZW4oZGF0YSkKKyAgICAgICAgZGF0YSA9IGRhdGEubGp1c3QoOCwgYidceDAwJykKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNscy5jYW5fZnJhbWVfZm10LCBjYW5faWQsIGNhbl9kbGMsIGRhdGEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGlzc2VjdF9jYW5fZnJhbWUoY2xzLCBmcmFtZSk6CisgICAgICAgICIiIkRpc3NlY3QgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9pZCwgY2FuX2RsYywgZGF0YSA9IHN0cnVjdC51bnBhY2soY2xzLmNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgICByZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pCisKKyAgICBkZWYgdGVzdFNlbmRGcmFtZShzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YsIGNmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMF0sIHNlbGYuaW50ZXJmYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMV0sIHNvY2tldC5BRl9DQU4pCisKKyAgICBkZWYgX3Rlc3RTZW5kRnJhbWUoc2VsZik6CisgICAgICAgIHNlbGYuY2YgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDAwLCBiJ1x4MDFceDAyXHgwM1x4MDRceDA1JykKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmKQorCisgICAgZGVmIHRlc3RTZW5kTWF4RnJhbWUoc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmLCBjZikKKworICAgIGRlZiBfdGVzdFNlbmRNYXhGcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5jZiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDAsIGInXHgwNycgKiA4KQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YpCisKKyAgICBkZWYgdGVzdFNlbmRNdWx0aUZyYW1lcyhzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YxLCBjZikKKworICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZjIsIGNmKQorCisgICAgZGVmIF90ZXN0U2VuZE11bHRpRnJhbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNmMSA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDcsIGInXHg0NFx4MzNceDIyXHgxMScpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjEpCisKKyAgICAgICAgc2VsZi5jZjIgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDEyLCBiJ1x4OTlceDIyXHgzMycpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNSRFNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX1JEUworICAgICAgICBzb2NrZXQuUEZfUkRTCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkgYXMgczoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0U29ja2V0QnVmZmVyU2l6ZShzZWxmKToKKyAgICAgICAgYnVmc2l6ZSA9IDE2Mzg0CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SQ1ZCVUYsIGJ1ZnNpemUpCisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19TTkRCVUYsIGJ1ZnNpemUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJEU1Rlc3QoVGhyZWFkZWRSRFNTb2NrZXRUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkUkRTU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLmV2dCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGlfYWRkciwgYWRkcikKKworICAgIGRlZiBfdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ3NwYW0nCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RQZWVrKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSwgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgZGVmIF90ZXN0UGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzcGFtJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgJ3JlY3Ztc2cnKQorICAgIGRlZiB0ZXN0U2VuZEFuZFJlY3ZNc2coc2VsZik6CisgICAgICAgIGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkciA9IHNlbGYuc2Vydi5yZWN2bXNnKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICdzZW5kbXNnJykKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidoZWxsbyAnICogMTAKKyAgICAgICAgc2VsZi5jbGkuc2VuZG1zZyhbc2VsZi5kYXRhXSwgKCksIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGExLCBkYXRhKQorCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YTIsIGRhdGEpCisKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGExID0gYidiYWNvbicKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgICAgIHNlbGYuZGF0YTIgPSBiJ2VnZycKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTIsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZWxlY3Qoc2VsZik6CisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKworICAgIGRlZiBfdGVzdFNlbGVjdChzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzZWxlY3QnCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RDb25nZXN0aW9uKHNlbGYpOgorICAgICAgICAjIHdhaXQgdW50aWwgdGhlIHNlbmRlciBpcyBkb25lCisgICAgICAgIHNlbGYuZXZ0LndhaXQoKQorCisgICAgZGVmIF90ZXN0Q29uZ2VzdGlvbihzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBiZWhhdmlvciBpbiBjYXNlIG9mIGNvbmdlc3Rpb24KKyAgICAgICAgc2VsZi5kYXRhID0gYidmaWxsJworICAgICAgICBzZWxmLmNsaS5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gbG93ZXIgdGhlIHJlY2VpdmVyJ3Mgc29ja2V0IGJ1ZmZlciBzaXplCisgICAgICAgICAgICBzZWxmLmNsaS5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkNWQlVGLCAxNjM4NCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBmaWxsIHRoZSByZWNlaXZlcidzIHNvY2tldCBidWZmZXIKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgIyBzaWduYWwgdGhlIHJlY2VpdmVyIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgICAgICBzZWxmLmV2dC5zZXQoKQorICAgICAgICAjIHNlbmR0bygpIHNob3VsZCBoYXZlIGZhaWxlZCB3aXRoIEVOT0JVRlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0JVRlMpCisgICAgICAgICMgYW5kIHdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29uZ2VzdGlvbiBub3RpZmljYXRpb24gdGhyb3VnaCBwb2xsCisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJhc2ljVENQVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKIApAQCAtMTAxNiw2ICsxNjQzLDE4NjYgQEAKICAgICBkZWYgX3Rlc3RSZWN2RnJvbU5lZ2F0aXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNsaS5zZW5kdG8oTVNHLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKIAorIyBUZXN0cyBmb3IgdGhlIHNlbmRtc2coKS9yZWN2bXNnKCkgaW50ZXJmYWNlLiAgV2hlcmUgcG9zc2libGUsIHRoZQorIyBzYW1lIHRlc3QgY29kZSBpcyB1c2VkIHdpdGggZGlmZmVyZW50IGZhbWlsaWVzIGFuZCB0eXBlcyBvZiBzb2NrZXQKKyMgKGUuZy4gc3RyZWFtLCBkYXRhZ3JhbSksIGFuZCB0ZXN0cyB1c2luZyByZWN2bXNnKCkgYXJlIHJlcGVhdGVkCisjIHVzaW5nIHJlY3Ztc2dfaW50bygpLgorIworIyBUaGUgZ2VuZXJpYyB0ZXN0IGNsYXNzZXMgc3VjaCBhcyBTZW5kbXNnVGVzdHMgYW5kCisjIFJlY3Ztc2dHZW5lcmljVGVzdHMgaW5oZXJpdCBmcm9tIFNlbmRyZWN2bXNnQmFzZSBhbmQgZXhwZWN0IHRvIGJlCisjIHN1cHBsaWVkIHdpdGggc29ja2V0cyBjbGlfc29jayBhbmQgc2Vydl9zb2NrIHJlcHJlc2VudGluZyB0aGUKKyMgY2xpZW50J3MgYW5kIHRoZSBzZXJ2ZXIncyBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gcmVzcGVjdGl2ZWx5LCBhbmQKKyMgYXR0cmlidXRlcyBjbGlfYWRkciBhbmQgc2Vydl9hZGRyIGhvbGRpbmcgdGhlaXIgKG51bWVyaWMgd2hlcmUKKyMgYXBwcm9wcmlhdGUpIGFkZHJlc3Nlcy4KKyMKKyMgVGhlIGZpbmFsIGNvbmNyZXRlIHRlc3QgY2xhc3NlcyBjb21iaW5lIHRoZXNlIHdpdGggc3ViY2xhc3NlcyBvZgorIyBTb2NrZXRUZXN0QmFzZSB3aGljaCBzZXQgdXAgY2xpZW50IGFuZCBzZXJ2ZXIgc29ja2V0cyBvZiBhIHNwZWNpZmljCisjIHR5cGUsIGFuZCB3aXRoIHN1YmNsYXNzZXMgb2YgU2VuZHJlY3Ztc2dCYXNlIHN1Y2ggYXMKKyMgU2VuZHJlY3Ztc2dEZ3JhbUJhc2UgYW5kIFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSB3aGljaCBtYXAgdGhlc2UKKyMgc29ja2V0cyB0byBjbGlfc29jayBhbmQgc2Vydl9zb2NrIGFuZCBvdmVycmlkZSB0aGUgbWV0aG9kcyBhbmQKKyMgYXR0cmlidXRlcyBvZiBTZW5kcmVjdm1zZ0Jhc2UgdG8gZmlsbCBpbiBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgaWYKKyMgbmVlZGVkIHdoZW4gc2VuZGluZywgY2hlY2sgZm9yIHNwZWNpZmljIGZsYWdzIGluIG1zZ19mbGFncywgZXRjLgorIworIyBSZWN2bXNnSW50b01peGluIHByb3ZpZGVzIGEgdmVyc2lvbiBvZiBkb1JlY3Ztc2coKSBpbXBsZW1lbnRlZCB1c2luZworIyByZWN2bXNnX2ludG8oKS4KKworIyBYWFg6IGxpa2UgdGhlIG90aGVyIGRhdGFncmFtIChVRFApIHRlc3RzIGluIHRoaXMgbW9kdWxlLCB0aGUgY29kZQorIyBoZXJlIGFzc3VtZXMgdGhhdCBkYXRhZ3JhbSBkZWxpdmVyeSBvbiB0aGUgbG9jYWwgbWFjaGluZSB3aWxsIGJlCisjIHJlbGlhYmxlLgorCitjbGFzcyBTZW5kcmVjdm1zZ0Jhc2UoVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciBzZW5kbXNnKCkvcmVjdm1zZygpIHRlc3RzLgorCisgICAgIyBUaW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgY29uc2lkZXJpbmcgYSB0ZXN0IGZhaWxlZCwgb3IKKyAgICAjIE5vbmUgZm9yIG5vIHRpbWVvdXQuICBOb3QgYWxsIHRlc3RzIGFjdHVhbGx5IHNldCBhIHRpbWVvdXQuCisgICAgZmFpbF90aW1lb3V0ID0gMy4wCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubWlzY19ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgZGVmIHNlbmRUb1NlcnZlcihzZWxmLCBtc2cpOgorICAgICAgICAjIFNlbmQgbXNnIHRvIHRoZSBzZXJ2ZXIuCisgICAgICAgIHJldHVybiBzZWxmLmNsaV9zb2NrLnNlbmQobXNnKQorCisgICAgIyBUdXBsZSBvZiBhbHRlcm5hdGl2ZSBkZWZhdWx0IGFyZ3VtZW50cyBmb3Igc2VuZG1zZygpIHdoZW4gY2FsbGVkCisgICAgIyB2aWEgc2VuZG1zZ1RvU2VydmVyKCkgKGUuZy4gdG8gaW5jbHVkZSBhIGRlc3RpbmF0aW9uIGFkZHJlc3MpLgorICAgIHNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzID0gKCkKKworICAgIGRlZiBzZW5kbXNnVG9TZXJ2ZXIoc2VsZiwgKmFyZ3MpOgorICAgICAgICAjIENhbGwgc2VuZG1zZygpIG9uIHNlbGYuY2xpX3NvY2sgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLAorICAgICAgICAjIGZpbGxpbmcgaW4gYW55IGFyZ3VtZW50cyB3aGljaCBhcmUgbm90IHN1cHBsaWVkIHdpdGggdGhlCisgICAgICAgICMgY29ycmVzcG9uZGluZyBpdGVtcyBvZiBzZWxmLnNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzLCBpZgorICAgICAgICAjIGFueS4KKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX3NvY2suc2VuZG1zZygKKyAgICAgICAgICAgICooYXJncyArIHNlbGYuc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHNbbGVuKGFyZ3MpOl0pKQorCisgICAgZGVmIGRvUmVjdm1zZyhzZWxmLCBzb2NrLCBidWZzaXplLCAqYXJncyk6CisgICAgICAgICMgQ2FsbCByZWN2bXNnKCkgb24gc29jayB3aXRoIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cworICAgICAgICAjIHJlc3VsdC4gIFNob3VsZCBiZSB1c2VkIGZvciB0ZXN0cyB3aGljaCBjYW4gdXNlIGVpdGhlcgorICAgICAgICAjIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKSAtIFJlY3Ztc2dJbnRvTWl4aW4gb3ZlcnJpZGVzCisgICAgICAgICMgdGhpcyBtZXRob2Qgd2l0aCBvbmUgd2hpY2ggZW11bGF0ZXMgaXQgdXNpbmcgcmVjdm1zZ19pbnRvKCksCisgICAgICAgICMgdGh1cyBhbGxvd2luZyB0aGUgc2FtZSB0ZXN0IHRvIGJlIHVzZWQgZm9yIGJvdGggbWV0aG9kcy4KKyAgICAgICAgcmVzdWx0ID0gc29jay5yZWN2bXNnKGJ1ZnNpemUsICphcmdzKQorICAgICAgICBzZWxmLnJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWdpc3RlclJlY3Ztc2dSZXN1bHQoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgIyBDYWxsZWQgYnkgZG9SZWN2bXNnKCkgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlY3Ztc2coKSBvcgorICAgICAgICAjIHJlY3Ztc2dfaW50bygpLiAgQ2FuIGJlIG92ZXJyaWRkZW4gdG8gYXJyYW5nZSBjbGVhbnVwIGJhc2VkCisgICAgICAgICMgb24gdGhlIHJldHVybmVkIGFuY2lsbGFyeSBkYXRhLCBmb3IgaW5zdGFuY2UuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBjaGVja1JlY3Ztc2dBZGRyZXNzKHNlbGYsIGFkZHIxLCBhZGRyMik6CisgICAgICAgICMgQ2FsbGVkIHRvIGNvbXBhcmUgdGhlIHJlY2VpdmVkIGFkZHJlc3Mgd2l0aCB0aGUgYWRkcmVzcyBvZgorICAgICAgICAjIHRoZSBwZWVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIxLCBhZGRyMikKKworICAgICMgRmxhZ3MgdGhhdCBhcmUgbm9ybWFsbHkgdW5zZXQgaW4gbXNnX2ZsYWdzCisgICAgbXNnX2ZsYWdzX2NvbW1vbl91bnNldCA9IDAKKyAgICBmb3IgbmFtZSBpbiAoIk1TR19DVFJVTkMiLCAiTVNHX09PQiIpOgorICAgICAgICBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0IHw9IGdldGF0dHIoc29ja2V0LCBuYW1lLCAwKQorCisgICAgIyBGbGFncyB0aGF0IGFyZSBub3JtYWxseSBzZXQKKyAgICBtc2dfZmxhZ3NfY29tbW9uX3NldCA9IDAKKworICAgICMgRmxhZ3Mgc2V0IHdoZW4gYSBjb21wbGV0ZSByZWNvcmQgaGFzIGJlZW4gcmVjZWl2ZWQgKGUuZy4gTVNHX0VPUgorICAgICMgZm9yIFNDVFApCisgICAgbXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgPSAwCisKKyAgICAjIEZsYWdzIHNldCB3aGVuIGEgY29tcGxldGUgcmVjb3JkIGhhcyBub3QgYmVlbiByZWNlaXZlZAorICAgICMgKGUuZy4gTVNHX1RSVU5DIGZvciBkYXRhZ3JhbSBzb2NrZXRzKQorICAgIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciA9IDAKKworICAgIGRlZiBjaGVja0ZsYWdzKHNlbGYsIGZsYWdzLCBlb3I9Tm9uZSwgY2hlY2tzZXQ9MCwgY2hlY2t1bnNldD0wLCBpZ25vcmU9MCk6CisgICAgICAgICMgTWV0aG9kIHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiBtc2dfZmxhZ3MgcmV0dXJuZWQgYnkgcmVjdm1zZ1tfaW50b10oKS4KKyAgICAgICAgIworICAgICAgICAjIENoZWNrcyB0aGF0IGFsbCBiaXRzIGluIG1zZ19mbGFnc19jb21tb25fc2V0IGF0dHJpYnV0ZSBhcmUKKyAgICAgICAgIyBzZXQgaW4gImZsYWdzIiBhbmQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2NvbW1vbl91bnNldCBhcmUKKyAgICAgICAgIyB1bnNldC4KKyAgICAgICAgIworICAgICAgICAjIFRoZSAiZW9yIiBhcmd1bWVudCBzcGVjaWZpZXMgd2hldGhlciB0aGUgZmxhZ3Mgc2hvdWxkCisgICAgICAgICMgaW5kaWNhdGUgdGhhdCBhIGZ1bGwgcmVjb3JkIChvciBkYXRhZ3JhbSkgaGFzIGJlZW4gcmVjZWl2ZWQuCisgICAgICAgICMgSWYgImVvciIgaXMgTm9uZSwgbm8gY2hlY2tzIGFyZSBkb25lOyBvdGhlcndpc2UsIGNoZWNrcworICAgICAgICAjIHRoYXQ6CisgICAgICAgICMKKyAgICAgICAgIyAgKiBpZiAiZW9yIiBpcyB0cnVlLCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciBhcmUKKyAgICAgICAgIyAgICBzZXQgYW5kIGFsbCBiaXRzIGluIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciBhcmUgdW5zZXQKKyAgICAgICAgIworICAgICAgICAjICAqIGlmICJlb3IiIGlzIGZhbHNlLCBhbGwgYml0cyBpbiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgIyAgICBhcmUgc2V0IGFuZCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciBhcmUgdW5zZXQKKyAgICAgICAgIworICAgICAgICAjIElmICJjaGVja3NldCIgYW5kL29yICJjaGVja3Vuc2V0IiBhcmUgc3VwcGxpZWQsIHRoZXkgcmVxdWlyZQorICAgICAgICAjIHRoZSBnaXZlbiBiaXRzIHRvIGJlIHNldCBvciB1bnNldCByZXNwZWN0aXZlbHksIG92ZXJyaWRpbmcKKyAgICAgICAgIyB3aGF0IHRoZSBhdHRyaWJ1dGVzIHJlcXVpcmUgZm9yIHRob3NlIGJpdHMuCisgICAgICAgICMKKyAgICAgICAgIyBJZiBhbnkgYml0cyBhcmUgc2V0IGluICJpZ25vcmUiLCB0aGV5IHdpbGwgbm90IGJlIGNoZWNrZWQsCisgICAgICAgICMgcmVnYXJkbGVzcyBvZiB0aGUgb3RoZXIgaW5wdXRzLgorICAgICAgICAjCisgICAgICAgICMgV2lsbCByYWlzZSBFeGNlcHRpb24gaWYgdGhlIGlucHV0cyByZXF1aXJlIGEgYml0IHRvIGJlIGJvdGgKKyAgICAgICAgIyBzZXQgYW5kIHVuc2V0LCBhbmQgaXQgaXMgbm90IGlnbm9yZWQuCisKKyAgICAgICAgZGVmYXVsdHNldCA9IHNlbGYubXNnX2ZsYWdzX2NvbW1vbl9zZXQKKyAgICAgICAgZGVmYXVsdHVuc2V0ID0gc2VsZi5tc2dfZmxhZ3NfY29tbW9uX3Vuc2V0CisKKyAgICAgICAgaWYgZW9yOgorICAgICAgICAgICAgZGVmYXVsdHNldCB8PSBzZWxmLm1zZ19mbGFnc19lb3JfaW5kaWNhdG9yCisgICAgICAgICAgICBkZWZhdWx0dW5zZXQgfD0gc2VsZi5tc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgZWxpZiBlb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0c2V0IHw9IHNlbGYubXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yCisgICAgICAgICAgICBkZWZhdWx0dW5zZXQgfD0gc2VsZi5tc2dfZmxhZ3NfZW9yX2luZGljYXRvcgorCisgICAgICAgICMgRnVuY3Rpb24gYXJndW1lbnRzIG92ZXJyaWRlIGRlZmF1bHRzCisgICAgICAgIGRlZmF1bHRzZXQgJj0gfmNoZWNrdW5zZXQKKyAgICAgICAgZGVmYXVsdHVuc2V0ICY9IH5jaGVja3NldAorCisgICAgICAgICMgTWVyZ2UgYXJndW1lbnRzIHdpdGggcmVtYWluaW5nIGRlZmF1bHRzLCBhbmQgY2hlY2sgZm9yIGNvbmZsaWN0cworICAgICAgICBjaGVja3NldCB8PSBkZWZhdWx0c2V0CisgICAgICAgIGNoZWNrdW5zZXQgfD0gZGVmYXVsdHVuc2V0CisgICAgICAgIGluYm90aCA9IGNoZWNrc2V0ICYgY2hlY2t1bnNldCAmIH5pZ25vcmUKKyAgICAgICAgaWYgaW5ib3RoOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJjb250cmFkaWN0b3J5IHNldCwgdW5zZXQgcmVxdWlyZW1lbnRzIGZvciBmbGFncyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswOiN4fSIuZm9ybWF0KGluYm90aCkpCisKKyAgICAgICAgIyBDb21wYXJlIHdpdGggZ2l2ZW4gbXNnX2ZsYWdzIHZhbHVlCisgICAgICAgIG1hc2sgPSAoY2hlY2tzZXQgfCBjaGVja3Vuc2V0KSAmIH5pZ25vcmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFncyAmIG1hc2ssIGNoZWNrc2V0ICYgbWFzaykKKworCitjbGFzcyBSZWN2bXNnSW50b01peGluKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBNaXhpbiB0byBpbXBsZW1lbnQgZG9SZWN2bXNnKCkgdXNpbmcgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgZG9SZWN2bXNnKHNlbGYsIHNvY2ssIGJ1ZnNpemUsICphcmdzKToKKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGJ1ZnNpemUpCisgICAgICAgIHJlc3VsdCA9IHNvY2sucmVjdm1zZ19pbnRvKFtidWZdLCAqYXJncykKKyAgICAgICAgc2VsZi5yZWdpc3RlclJlY3Ztc2dSZXN1bHQocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJlc3VsdFswXSwgYnVmc2l6ZSkKKyAgICAgICAgcmV0dXJuIChieXRlcyhidWZbOnJlc3VsdFswXV0pLCkgKyByZXN1bHRbMTpdCisKKworY2xhc3MgU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgRGVmaW5lcyBmbGFncyB0byBiZSBjaGVja2VkIGluIG1zZ19mbGFncyBmb3IgZGF0YWdyYW0gc29ja2V0cy4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLm1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciB8IHNvY2tldC5NU0dfVFJVTkMKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NDVFBGbGFnc0Jhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIERlZmluZXMgZmxhZ3MgdG8gYmUgY2hlY2tlZCBpbiBtc2dfZmxhZ3MgZm9yIFNDVFAgc29ja2V0cy4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgfCBzb2NrZXQuTVNHX0VPUgorCisKK2NsYXNzIFNlbmRyZWN2bXNnQ29ubmVjdGlvbmxlc3NCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciB0ZXN0cyBvbiBjb25uZWN0aW9ubGVzcy1tb2RlIHNvY2tldHMuICBVc2VycyBtdXN0CisgICAgIyBzdXBwbHkgc29ja2V0cyBvbiBhdHRyaWJ1dGVzIGNsaSBhbmQgc2VydiB0byBiZSBtYXBwZWQgdG8KKyAgICAjIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsaV9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChbXSwgW10sIDAsIHNlbGYuc2Vydl9hZGRyKQorCisgICAgZGVmIHNlbmRUb1NlcnZlcihzZWxmLCBtc2cpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfc29jay5zZW5kdG8obXNnLCBzZWxmLnNlcnZfYWRkcikKKworCitjbGFzcyBTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHRlc3RzIG9uIGNvbm5lY3RlZCBzb2NrZXRzLiAgVXNlcnMgbXVzdCBzdXBwbHkKKyAgICAjIHNvY2tldHMgb24gYXR0cmlidXRlcyBzZXJ2X2Nvbm4gYW5kIGNsaV9jb25uIChyZXByZXNlbnRpbmcgdGhlCisgICAgIyBjb25uZWN0aW9ucyAqdG8qIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGllbnQpLCB0byBiZSBtYXBwZWQgdG8KKyAgICAjIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX2Nvbm4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbGlfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vydl9jb25uCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnQWRkcmVzcyhzZWxmLCBhZGRyMSwgYWRkcjIpOgorICAgICAgICAjIEFkZHJlc3MgaXMgY3VycmVudGx5ICJ1bnNwZWNpZmllZCIgZm9yIGEgY29ubmVjdGVkIHNvY2tldCwKKyAgICAgICAgIyBzbyB3ZSBkb24ndCBleGFtaW5lIGl0CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIHRvIHNldCBhIHRpbWVvdXQgb24gc2VydmVyJ3Mgc29ja2V0LgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0dGltZW91dChzZWxmLmZhaWxfdGltZW91dCkKKworCitjbGFzcyBTZW5kbXNnVGVzdHMoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0cyBmb3Igc2VuZG1zZygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlIGFuZCBkbyBub3QKKyAgICAjIGludm9sdmUgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RTZW5kbXNnKHNlbGYpOgorICAgICAgICAjIFNlbmQgYSBzaW1wbGUgbWVzc2FnZSB3aXRoIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSksIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnRGF0YUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBTZW5kIGZyb20gYnVmZmVyIG9idGFpbmVkIGZyb20gYSBnZW5lcmF0b3IgKG5vdCBhIHNlcXVlbmNlKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0RhdGFHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoKG8gZm9yIG8gaW4gW01TR10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0FuY2lsbGFyeUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBHYXRoZXIgKGVtcHR5KSBhbmNpbGxhcnkgZGF0YSBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQW5jaWxsYXJ5R2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCAobyBmb3IgbyBpbiBbXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQXJyYXkoc2VsZik6CisgICAgICAgICMgU2VuZCBkYXRhIGZyb20gYW4gYXJyYXkgaW5zdGVhZCBvZiB0aGUgdXN1YWwgYnl0ZXMgb2JqZWN0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW2FycmF5LmFycmF5KCJCIiwgTVNHKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnR2F0aGVyKHNlbGYpOgorICAgICAgICAjIFNlbmQgbWVzc2FnZSBkYXRhIGZyb20gbW9yZSB0aGFuIG9uZSBidWZmZXIgKGdhdGhlciB3cml0ZSkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dHYXRoZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR1s6M10sIE1TR1szOl1dKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIHJlamVjdHMgaW52YWxpZCBhcmd1bWVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYiJub3QgaW4gYW4gaXRlcmFibGUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TRywgb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgMCwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRDbXNnKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBpdGVtcyBhcmUgcmVqZWN0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRDbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW29iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsob2JqZWN0KCksIDAsIGIiZGF0YSIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgb2JqZWN0KCksIGIiZGF0YSIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgb2JqZWN0KCkpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBiImRhdGEiLCA0MildKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2coc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnZhbGlkIGFuY2lsbGFyeSBkYXRhIGl0ZW1zIGFyZSByZWplY3RlZCB3aGVuCisgICAgICAgICMgbW9yZSB0aGFuIG9uZSBpdGVtIGlzIHByZXNlbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIEB0ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZy5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbMCwgMCwgYiIiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgYiIiKSwgb2JqZWN0KCldKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgZGVmIHRlc3RTZW5kbXNnRXhjZXNzQ21zZ1JlamVjdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHNlbmRtc2coKSByZWplY3RzIGV4Y2VzcyBhbmNpbGxhcnkgZGF0YSBpdGVtcworICAgICAgICAjIHdoZW4gdGhlIG51bWJlciB0aGF0IGNhbiBiZSBzZW50IGlzIGxpbWl0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dFeGNlc3NDbXNnUmVqZWN0KHNlbGYpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihzb2NrZXQsICJDTVNHX1NQQUNFIik6CisgICAgICAgICAgICAjIENhbiBvbmx5IHNlbmQgb25lIGl0ZW0KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgWygwLCAwLCBiIiIpLCAoMCwgMCwgYiIiKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbS5leGNlcHRpb24uZXJybm8pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIGZhaWxzIG9uIGEgY2xvc2VkIHNvY2tldC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIF90ZXN0U2VuZG1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY2xpX3NvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLCBbTVNHXSkKKworCitjbGFzcyBTZW5kbXNnU3RyZWFtVGVzdHMoU2VuZG1zZ1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciBzZW5kbXNnKCkgd2hpY2ggcmVxdWlyZSBhIHN0cmVhbSBzb2NrZXQgYW5kIGRvIG5vdAorICAgICMgaW52b2x2ZSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2dFeHBsaWNpdE5vbmVBZGRyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcGVlciBhZGRyZXNzIGNhbiBiZSBzcGVjaWZpZWQgYXMgTm9uZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0V4cGxpY2l0Tm9uZUFkZHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFtdLCAwLCBOb25lKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGltZW91dCB3b3JrcyB3aXRoIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDUxMiksIGIiYSIqNTEyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jbGlfc29jay5zZXR0aW1lb3V0KDAuMDMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0KToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbYiJhIio1MTJdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisKKyAgICAjIFhYWDogd291bGQgYmUgbmljZSB0byBoYXZlIG1vcmUgdGVzdHMgZm9yIHNlbmRtc2cgZmxhZ3MgYXJndW1lbnQuCisKKyAgICAjIExpbnV4IHN1cHBvcnRzIE1TR19ET05UV0FJVCB3aGVuIHNlbmRpbmcsIGJ1dCBpbiBnZW5lcmFsLCBpdAorICAgICMgb25seSB3b3JrcyB3aGVuIHJlY2VpdmluZy4gIENvdWxkIGFkZCBvdGhlciBwbGF0Zm9ybXMgaWYgdGhleQorICAgICMgc3VwcG9ydCBpdCB0b28uCisgICAgQHNraXBXaXRoQ2xpZW50SWYoc3lzLnBsYXRmb3JtIG5vdCBpbiB7ImxpbnV4MiJ9LAorICAgICAgICAgICAgICAgICAgICAgICJNU0dfRE9OVFdBSVQgbm90IGtub3duIHRvIHdvcmsgb24gdGhpcyBwbGF0Zm9ybSB3aGVuICIKKyAgICAgICAgICAgICAgICAgICAgICAic2VuZGluZyIpCisgICAgZGVmIHRlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBNU0dfRE9OVFdBSVQgaW4gZmxhZ3MgY2F1c2VzIG5vbi1ibG9ja2luZyBiZWhhdmlvdXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdig1MTIpLCBiImEiKjUxMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorCisgICAgQHRlc3RTZW5kbXNnRG9udFdhaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbYiJhIio1MTJdLCBbXSwgc29ja2V0Lk1TR19ET05UV0FJVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oY20uZXhjZXB0aW9uLmVycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKworCitjbGFzcyBTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cyhTZW5kbXNnVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHNlbmRtc2coKSB3aGljaCByZXF1aXJlIGEgY29ubmVjdGlvbmxlc3MtbW9kZQorICAgICMgKGUuZy4gZGF0YWdyYW0pIHNvY2tldCwgYW5kIGRvIG5vdCBpbnZvbHZlIHJlY3Ztc2coKSBvcgorICAgICMgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIGZhaWxzIHdoZW4gbm8gZGVzdGluYXRpb24gYWRkcmVzcyBpcworICAgICAgICAjIGdpdmVuIGZvciB1bmNvbm5lY3RlZCBzb2NrZXQuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW10sIDAsIE5vbmUpCisKKworY2xhc3MgUmVjdm1zZ0dlbmVyaWNUZXN0cyhTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2coKSB3aGljaCBjYW4gYWxzbyBiZSBlbXVsYXRlZCB1c2luZworICAgICMgcmVjdm1zZ19pbnRvKCksIGFuZCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZyhzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgc2ltcGxlIG1lc3NhZ2Ugd2l0aCByZWN2bXNnW19pbnRvXSgpLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2coc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0V4cGxpY2l0RGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCByZWN2bXNnW19pbnRvXSgpIHdpdGggZGVmYXVsdCBhcmd1bWVudHMgcHJvdmlkZWQgZXhwbGljaXRseS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0V4cGxpY2l0RGVmYXVsdHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ1Nob3J0ZXIoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIG1lc3NhZ2Ugc21hbGxlciB0aGFuIGJ1ZmZlci4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgKyA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnU2hvcnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBGcmVlQlNEIDwgOCBkb2Vzbid0IGFsd2F5cyBzZXQgdGhlIE1TR19UUlVOQyBmbGFnIHdoZW4gYSB0cnVuY2F0ZWQKKyAgICAjIGRhdGFncmFtIGlzIHJlY2VpdmVkIChpc3N1ZSAjMTMwMDEpLgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig4KQorICAgIGRlZiB0ZXN0UmVjdm1zZ1RydW5jKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgcGFydCBvZiBtZXNzYWdlLCBjaGVjayBmb3IgdHJ1bmNhdGlvbiBpbmRpY2F0b3JzLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0dbOi0zXSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDgpCisgICAgZGVmIF90ZXN0UmVjdm1zZ1RydW5jKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dTaG9ydEFuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciB0b28gc21hbGwgdG8gaG9sZCBhbnkgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dTaG9ydEFuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnTG9uZ0FuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGxhcmdlIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlci4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dMb25nQW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZ1tfaW50b10oKSBmYWlscyBvbiBhIGNsb3NlZCBzb2NrZXQuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmRvUmVjdm1zZywgc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRpbWVvdXQgd29ya3MuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHRpbWVvdXQoMC4wMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2csIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiTVNHX1BFRUsiKQorICAgIGRlZiB0ZXN0UmVjdm1zZ1BlZWsoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBNU0dfUEVFSyBpbiBmbGFncyBlbmFibGVzIGV4YW1pbmF0aW9uIG9mIHBlbmRpbmcKKyAgICAgICAgIyBkYXRhIHdpdGhvdXQgY29uc3VtaW5nIGl0LgorCisgICAgICAgICMgUmVjZWl2ZSBwYXJ0IG9mIGRhdGEgd2l0aCBNU0dfUEVFSy4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgLSAzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHWzotM10pCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICAjIElnbm9yaW5nIE1TR19UUlVOQyBoZXJlIChzbyB0aGlzIHRlc3QgaXMgdGhlIHNhbWUgZm9yIHN0cmVhbQorICAgICAgICAjIGFuZCBkYXRhZ3JhbSBzb2NrZXRzKS4gIFNvbWUgd29yZGluZyBpbiBQT1NJWCBzZWVtcyB0bworICAgICAgICAjIHN1Z2dlc3QgdGhhdCBpdCBuZWVkbid0IGJlIHNldCB3aGVuIHBlZWtpbmcsIGJ1dCB0aGF0IG1heQorICAgICAgICAjIGp1c3QgYmUgYSBzbGlwLgorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1nZXRhdHRyKHNvY2tldCwgIk1TR19UUlVOQyIsIDApKQorCisgICAgICAgICMgUmVjZWl2ZSBhbGwgZGF0YSB3aXRoIE1TR19QRUVLLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5NU0dfUEVFSykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzYW1lIGRhdGEgY2FuIHN0aWxsIGJlIHJlY2VpdmVkIG5vcm1hbGx5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIEB0ZXN0UmVjdm1zZ1BlZWsuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2bXNnUGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgZGVmIHRlc3RSZWN2bXNnRnJvbVNlbmRtc2coc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgd2l0aCByZWN2bXNnW19pbnRvXSgpIHdoZW4gbWVzc2FnZSBpcyBzZW50CisgICAgICAgICMgdXNpbmcgc2VuZG1zZygpLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXR0aW1lb3V0KHNlbGYuZmFpbF90aW1lb3V0KQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIEB0ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0dbOjNdLCBNU0dbMzpdXSksIGxlbihNU0cpKQorCisKK2NsYXNzIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMoUmVjdm1zZ0dlbmVyaWNUZXN0cyk6CisgICAgIyBUZXN0cyB3aGljaCByZXF1aXJlIGEgc3RyZWFtIHNvY2tldCBhbmQgY2FuIHVzZSBlaXRoZXIgcmVjdm1zZygpCisgICAgIyBvciByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGVuZC1vZi1zdHJlYW0gaW5kaWNhdG9yIChiIiIsIHBlZXIgc29ja2V0IGNsb3NlZCkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgMTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIGIiIikKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPU5vbmUpICMgTWlnaHQgbm90IGhhdmUgZW5kLW9mLXJlY29yZCBtYXJrZXIKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dFT0Yoc2VsZik6CisgICAgICAgIHNlbGYuY2xpX3NvY2suY2xvc2UoKQorCisgICAgZGVmIHRlc3RSZWN2bXNnT3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIG1lc3NhZ2UgaW4gbW9yZSB0aGFuIG9uZSBjaHVuay4KKyAgICAgICAgc2VnMSwgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSkKKworICAgICAgICBzZWcyLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgICAgICBtc2cgPSBzZWcxICsgc2VnMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ092ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworY2xhc3MgUmVjdm1zZ1Rlc3RzKFJlY3Ztc2dHZW5lcmljVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2coKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIC0xLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtieXRlYXJyYXkoMTApXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgb2JqZWN0KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIG9iamVjdCgpKQorCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnKGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworY2xhc3MgUmVjdm1zZ0ludG9UZXN0cyhSZWN2bXNnSW50b01peGluLCBSZWN2bXNnR2VuZXJpY1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciByZWN2bXNnX2ludG8oKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9CYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZ19pbnRvKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdCgpXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiIkknbSBub3Qgd3JpdGFibGUiXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWYsIG9iamVjdCgpXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgLTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgb2JqZWN0KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgMCwgb2JqZWN0KCkpCisKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50byhbYnVmXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KE1TRykpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9CYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgaW50byBidWZmZXIgb2J0YWluZWQgZnJvbSBhIGdlbmVyYXRvciAobm90IGEgc2VxdWVuY2UpLgorICAgICAgICBidWYgPSBieXRlYXJyYXkobGVuKE1TRykpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oCisgICAgICAgICAgICAobyBmb3IgbyBpbiBbYnVmXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShNU0cpKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvQXJyYXkoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIGFuIGFycmF5IHJhdGhlciB0aGFuIHRoZSB1c3VhbCBieXRlYXJyYXkuCisgICAgICAgIGJ1ZiA9IGFycmF5LmFycmF5KCJCIiwgWzBdICogbGVuKE1TRykpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oW2J1Zl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudG9ieXRlcygpLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9BcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b1NjYXR0ZXIoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIG11bHRpcGxlIGJ1ZmZlcnMgKHNjYXR0ZXIgd3JpdGUpLgorICAgICAgICBiMSA9IGJ5dGVhcnJheShiIi0tLS0iKQorICAgICAgICBiMiA9IGJ5dGVhcnJheShiIjAxMjM0NTY3ODkiKQorICAgICAgICBiMyA9IGJ5dGVhcnJheShiIi0tLS0tLS0tLS0tLS0tIikKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bygKKyAgICAgICAgICAgIFtiMSwgbWVtb3J5dmlldyhiMilbMjo5XSwgYjNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKGIiTWFyeSBoYWQgYSBsaXR0bGUgbGFtYiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIxLCBieXRlYXJyYXkoYiJNYXJ5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYjIsIGJ5dGVhcnJheShiIjAxIGhhZCBhIDkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiMywgYnl0ZWFycmF5KGIibGl0dGxlIGxhbWItLS0iKSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b1NjYXR0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiTWFyeSBoYWQgYSBsaXR0bGUgbGFtYiIpCisKKworY2xhc3MgQ21zZ01hY3JvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGUgZnVuY3Rpb25zIENNU0dfTEVOKCkgYW5kIENNU0dfU1BBQ0UoKS4gIFRlc3RzCisgICAgIyBhc3N1bXB0aW9ucyB1c2VkIGJ5IHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSwgd2hpY2ggc2hhcmUKKyAgICAjIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMuCisKKyAgICAjIE1hdGNoIHRoZSBkZWZpbml0aW9uIGluIHNvY2tldG1vZHVsZS5jCisgICAgc29ja2xlbl90X2xpbWl0ID0gbWluKDB4N2ZmZmZmZmYsIF90ZXN0Y2FwaS5JTlRfTUFYKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX0xFTiIpCisgICAgZGVmIHRlc3RDTVNHX0xFTihzZWxmKToKKyAgICAgICAgIyBUZXN0IENNU0dfTEVOKCkgd2l0aCB2YXJpb3VzIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcywKKyAgICAgICAgIyBjaGVja2luZyB0aGUgYXNzdW1wdGlvbnMgdXNlZCBieSByZWN2bXNnKCkgYW5kIHNlbmRtc2coKS4KKyAgICAgICAgdG9vYmlnID0gc2VsZi5zb2NrbGVuX3RfbGltaXQgLSBzb2NrZXQuQ01TR19MRU4oMCkgKyAxCisgICAgICAgIHZhbHVlcyA9IGxpc3QocmFuZ2UoMjU3KSkgKyBsaXN0KHJhbmdlKHRvb2JpZyAtIDI1NywgdG9vYmlnKSkKKworICAgICAgICAjIHN0cnVjdCBjbXNnaGRyIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2Ygd2hpY2ggYXJlIGludHMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNvY2tldC5DTVNHX0xFTigwKSwgYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZSAqIDIpCisgICAgICAgIGZvciBuIGluIHZhbHVlczoKKyAgICAgICAgICAgIHJldCA9IHNvY2tldC5DTVNHX0xFTihuKQorICAgICAgICAgICAgIyBUaGlzIGlzIGhvdyByZWN2bXNnKCkgY2FsY3VsYXRlcyB0aGUgZGF0YSBzaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCAtIHNvY2tldC5DTVNHX0xFTigwKSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJldCwgc2VsZi5zb2NrbGVuX3RfbGltaXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCAtMSkKKyAgICAgICAgIyBzZW5kbXNnKCkgc2hhcmVzIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGFuZCByZXF1aXJlcworICAgICAgICAjIHRoYXQgaXQgcmVqZWN0IHZhbHVlcyBvdmVyIHRoZSBsaW1pdC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCB0b29iaWcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX0xFTiwgc3lzLm1heHNpemUpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IENNU0dfU1BBQ0UoKSB3aXRoIHZhcmlvdXMgdmFsaWQgYW5kIGludmFsaWQgdmFsdWVzLAorICAgICAgICAjIGNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGJ5IHNlbmRtc2coKS4KKyAgICAgICAgdG9vYmlnID0gc2VsZi5zb2NrbGVuX3RfbGltaXQgLSBzb2NrZXQuQ01TR19TUEFDRSgxKSArIDEKKyAgICAgICAgdmFsdWVzID0gbGlzdChyYW5nZSgyNTcpKSArIGxpc3QocmFuZ2UodG9vYmlnIC0gMjU3LCB0b29iaWcpKQorCisgICAgICAgIGxhc3QgPSBzb2NrZXQuQ01TR19TUEFDRSgwKQorICAgICAgICAjIHN0cnVjdCBjbXNnaGRyIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2Ygd2hpY2ggYXJlIGludHMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxhc3QsIGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUgKiAyKQorICAgICAgICBmb3IgbiBpbiB2YWx1ZXM6CisgICAgICAgICAgICByZXQgPSBzb2NrZXQuQ01TR19TUEFDRShuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBsYXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBzb2NrZXQuQ01TR19MRU4obikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIG4gKyBzb2NrZXQuQ01TR19MRU4oMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXQsIHNlbGYuc29ja2xlbl90X2xpbWl0KQorICAgICAgICAgICAgbGFzdCA9IHJldAorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX1NQQUNFLCAtMSkKKyAgICAgICAgIyBzZW5kbXNnKCkgc2hhcmVzIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGFuZCByZXF1aXJlcworICAgICAgICAjIHRoYXQgaXQgcmVqZWN0IHZhbHVlcyBvdmVyIHRoZSBsaW1pdC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIHRvb2JpZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIHN5cy5tYXhzaXplKQorCisKK2NsYXNzIFNDTVJpZ2h0c1Rlc3QoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0cyBmb3IgZmlsZSBkZXNjcmlwdG9yIHBhc3Npbmcgb24gVW5peC1kb21haW4gc29ja2V0cy4KKworICAgICMgSW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgdmFsdWUgdGhhdCdzIHVubGlrZWx5IHRvIGV2YWx1YXRlIHRvIGEKKyAgICAjIHJlYWwgRkQgZXZlbiBpZiBvbmUgb2YgaXRzIGJ5dGVzIGlzIHJlcGxhY2VkIHdpdGggYSBkaWZmZXJlbnQKKyAgICAjIHZhbHVlICh3aGljaCBzaG91bGRuJ3QgYWN0dWFsbHkgaGFwcGVuKS4KKyAgICBiYWRmZCA9IC0weDU1NTUKKworICAgIGRlZiBuZXdGRHMoc2VsZiwgbik6CisgICAgICAgICMgUmV0dXJuIGEgbGlzdCBvZiBuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIG5ld2x5LWNyZWF0ZWQgZmlsZXMKKyAgICAgICAgIyBjb250YWluaW5nIHRoZWlyIGxpc3QgaW5kaWNlcyBhcyBBU0NJSSBudW1iZXJzLgorICAgICAgICBmZHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGZkLCBwYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBwYXRoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBzdHIoaSkuZW5jb2RlKCkpCisgICAgICAgICAgICBmZHMuYXBwZW5kKGZkKQorICAgICAgICByZXR1cm4gZmRzCisKKyAgICBkZWYgY2hlY2tGRHMoc2VsZiwgZmRzKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3JzIGluIHRoZSBnaXZlbiBsaXN0IGNvbnRhaW4KKyAgICAgICAgIyB0aGVpciBjb3JyZWN0IGxpc3QgaW5kaWNlcyBhcyBBU0NJSSBudW1iZXJzLgorICAgICAgICBmb3IgbiwgZmQgaW4gZW51bWVyYXRlKGZkcyk6CisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZmQsIDEwMjQpLCBzdHIobikuZW5jb2RlKCkpCisKKyAgICBkZWYgcmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmNsb3NlUmVjdm1zZ0ZEcywgcmVzdWx0KQorCisgICAgZGVmIGNsb3NlUmVjdm1zZ0ZEcyhzZWxmLCByZWN2bXNnX3Jlc3VsdCk6CisgICAgICAgICMgQ2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMgc3BlY2lmaWVkIGluIHRoZSBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIG9mIHRoZSBnaXZlbiByZXR1cm4gdmFsdWUgZnJvbSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiByZWN2bXNnX3Jlc3VsdFsxXToKKyAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZAorICAgICAgICAgICAgICAgICAgICBjbXNnX3R5cGUgPT0gc29ja2V0LlNDTV9SSUdIVFMpOgorICAgICAgICAgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICAgICAgICAgIGZvciBmZCBpbiBmZHM6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIGNyZWF0ZUFuZFNlbmRGRHMoc2VsZiwgbik6CisgICAgICAgICMgU2VuZCBuIG5ldyBmaWxlIGRlc2NyaXB0b3JzIGNyZWF0ZWQgYnkgbmV3RkRzKCkgdG8gdGhlCisgICAgICAgICMgc2VydmVyLCB3aXRoIHRoZSBjb25zdGFudCBNU0cgYXMgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgc2VsZi5uZXdGRHMobikpKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnRkRzKHNlbGYsIG51bWZkcywgcmVzdWx0LCBtYXhjbXNncz0xLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGNvbnN0YW50IE1TRyB3YXMgcmVjZWl2ZWQgd2l0aCBudW1mZHMgZmlsZQorICAgICAgICAjIGRlc2NyaXB0b3JzIGluIGEgbWF4aW11bSBvZiBtYXhjbXNncyBjb250cm9sIG1lc3NhZ2VzICh3aGljaAorICAgICAgICAjIG11c3QgY29udGFpbiBvbmx5IGNvbXBsZXRlIGludGVnZXJzKS4gIEJ5IGRlZmF1bHQsIGNoZWNrCisgICAgICAgICMgdGhhdCBNU0dfQ1RSVU5DIGlzIHVuc2V0LCBidXQgaWdub3JlIGFueSBmbGFncyBpbgorICAgICAgICAjIGlnbm9yZWZsYWdzLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhbmNkYXRhLCBsaXN0KQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIG1heGNtc2dzKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGZvciBpdGVtIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaXRlbSwgdHVwbGUpCisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGl0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY21zZ19kYXRhLCBieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSkgJSBTSVpFT0ZfSU5ULCAwKQorICAgICAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmRzKSwgbnVtZmRzKQorICAgICAgICBzZWxmLmNoZWNrRkRzKGZkcykKKworICAgIGRlZiB0ZXN0RkRQYXNzU2ltcGxlKHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBzaW5nbGUgRkQgKGFycmF5IHJlYWQgZnJvbSBieXRlcyBvYmplY3QpLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygxLCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSkKKworICAgIGRlZiBfdGVzdEZEUGFzc1NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgc2VsZi5uZXdGRHMoMSkpLnRvYnl0ZXMoKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RNdWx0aXBsZUZEUGFzcyhzZWxmKToKKyAgICAgICAgIyBQYXNzIG11bHRpcGxlIEZEcyBpbiBhIHNpbmdsZSBhcnJheS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoNCwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkpCisKKyAgICBkZWYgX3Rlc3RNdWx0aXBsZUZEUGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDQpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzQ01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIENNU0dfU1BBQ0UoKSB0byBjYWxjdWxhdGUgYW5jaWxsYXJ5IGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygKKyAgICAgICAgICAgIDQsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKDQgKiBTSVpFT0ZfSU5UKSkpCisKKyAgICBAdGVzdEZEUGFzc0NNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RGRFBhc3NDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoNCkKKworICAgIGRlZiB0ZXN0RkRQYXNzQ01TR19MRU4oc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBDTVNHX0xFTigpIHRvIGNhbGN1bGF0ZSBhbmNpbGxhcnkgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDQgKiBTSVpFT0ZfSU5UKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUkZDIDM1NDIgc2F5cyBpbXBsZW1lbnRhdGlvbnMgbWF5IHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TR19DVFJVTkMgaWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRyYWlsaW5nIHBhZGRpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0RkRQYXNzQ01TR19MRU4oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBJc3N1ZSAjMTI5NTg6IFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NTZXBhcmF0ZShzZWxmKToKKyAgICAgICAgIyBQYXNzIHR3byBGRHMgaW4gdHdvIHNlcGFyYXRlIGFycmF5cy4gIEFycmF5cyBtYXkgYmUgY29tYmluZWQKKyAgICAgICAgIyBpbnRvIGEgc2luZ2xlIGNvbnRyb2wgbWVzc2FnZSBieSB0aGUgT1MuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMTAyNDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjbXNncz0yKQorCisgICAgQHRlc3RGRFBhc3NTZXBhcmF0ZS5jbGllbnRfc2tpcAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIF90ZXN0RkRQYXNzU2VwYXJhdGUoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDBdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3QgaGFzIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZShzZWxmKToKKyAgICAgICAgIyBQYXNzIHR3byBGRHMgaW4gdHdvIHNlcGFyYXRlIGFycmF5cywgcmVjZWl2aW5nIHRoZW0gaW50byB0aGUKKyAgICAgICAgIyBtaW5pbXVtIHNwYWNlIGZvciB0d28gYXJyYXlzLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y21zZ3M9MiwgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2UuY2xpZW50X3NraXAKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiBfdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2Uoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDBdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBzZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZShzZWxmLCBtc2csIGFuY2RhdGEpOgorICAgICAgICAjIFRyeSB0byBzZW5kIG1zZyBhbmQgYW5jZGF0YSB0byBzZXJ2ZXIsIGJ1dCBpZiB0aGUgc3lzdGVtCisgICAgICAgICMgY2FsbCBmYWlscywganVzdCBzZW5kIG1zZyB3aXRoIG5vIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSwgYW5jZGF0YSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGl0IHdhcyB0aGUgc3lzdGVtIGNhbGwgdGhhdCBmYWlsZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLmVycm5vLCBpbnQpCisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihtc2cpKQorCisgICAgZGVmIHRlc3RGRFBhc3NFbXB0eShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyBhbiBlbXB0eSBGRCBhcnJheS4gIENhbiByZWNlaXZlIGVpdGhlciBubyBhcnJheQorICAgICAgICAjIG9yIGFuIGVtcHR5IGFycmF5LgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygwLCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NFbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZShNU0csIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIiIpXSkKKworICAgIGRlZiB0ZXN0RkRQYXNzUGFydGlhbEludChzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyBhIHRydW5jYXRlZCBGRCBhcnJheS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgaWdub3JlPXNvY2tldC5NU0dfQ1RSVU5DKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKworICAgIGRlZiBfdGVzdEZEUGFzc1BhcnRpYWxJbnQoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZEFuY2lsbGFyeUlmUG9zc2libGUoCisgICAgICAgICAgICBNU0csCisgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5iYWRmZF0pLnRvYnl0ZXMoKVs6LTFdKV0pCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzUGFydGlhbEludEluTWlkZGxlKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIHR3byBGRCBhcnJheXMsIHRoZSBmaXJzdCBvZiB3aGljaCBpcyB0cnVuY2F0ZWQuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGlnbm9yZT1zb2NrZXQuTVNHX0NUUlVOQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCAyKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgICMgQXJyYXlzIG1heSBoYXZlIGJlZW4gY29tYmluZWQgaW4gYSBzaW5nbGUgY29udHJvbCBtZXNzYWdlCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGZkcyksIDIpCisgICAgICAgIHNlbGYuY2hlY2tGRHMoZmRzKQorCisgICAgQHRlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZSgKKyAgICAgICAgICAgIE1TRywKKyAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDAsIHNlbGYuYmFkZmRdKS50b2J5dGVzKClbOi0xXSksCisgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSkKKworICAgIGRlZiBjaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLCByZXN1bHQsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXRlbXMgYXJlIHJldHVybmVkIHdoZW4gZGF0YSBpcworICAgICAgICAjIHRydW5jYXRlZCBpbnNpZGUgdGhlIGNtc2doZHIgc3RydWN0dXJlLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBubyBidWZmZXIgc2l6ZQorICAgICAgICAjIGlzIHNwZWNpZmllZC4KKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQlNEIHNlZW1zIHRvIHNldCBNU0dfQ1RSVU5DIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGFuIGl0ZW0gaGFzIGJlZW4gcGFydGlhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNlaXZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY05vQnVmU2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIGJ1ZmZlciBzaXplIGlzIDAuCisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJldHVybmVkIGZvciB2YXJpb3VzIG5vbi16ZXJvCisgICAgIyAoYnV0IHN0aWxsIHRvbyBzbWFsbCkgYnVmZmVyIHNpemVzLgorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMSkpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgIyBUaGUgY21zZ2hkciBzdHJ1Y3R1cmUgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZgorICAgICAgICAjIHdoaWNoIGFyZSBpbnRzLCBzbyB3ZSBzdGlsbCBzaG91bGRuJ3Qgc2VlIGFueSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfSU5UICogMikpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDApIC0gMSkpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0cyB0cnkgdG8gdHJ1bmNhdGUgdGhlIGNvbnRyb2wgbWVzc2FnZSBpbiB0aGUKKyAgICAjIG1pZGRsZSBvZiB0aGUgRkQgYXJyYXkuCisKKyAgICBkZWYgY2hlY2tUcnVuY2F0ZWRBcnJheShzZWxmLCBhbmNidWYsIG1heGRhdGEsIG1pbmRhdGE9MCk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBmaWxlIGRlc2NyaXB0b3IgZGF0YSBpcyB0cnVuY2F0ZWQgdG8gYmV0d2VlbgorICAgICAgICAjIG1pbmRhdGEgYW5kIG1heGRhdGEgYnl0ZXMgd2hlbiByZWNlaXZlZCB3aXRoIGJ1ZmZlciBzaXplCisgICAgICAgICMgYW5jYnVmLCBhbmQgdGhhdCBhbnkgY29tcGxldGUgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgYXJlCisgICAgICAgICMgdmFsaWQuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgICAgICBpZiBtaW5kYXRhID09IDAgYW5kIGFuY2RhdGEgPT0gW106CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbXNnX2RhdGEpLCBtaW5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oY21zZ19kYXRhKSwgbWF4ZGF0YSkKKyAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgc2VsZi5jaGVja0ZEcyhmZHMpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDApLCBtYXhkYXRhPTApCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMFBsdXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkQXJyYXkoYW5jYnVmPXNvY2tldC5DTVNHX0xFTigwKSArIDEsIG1heGRhdGE9MSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjBQbHVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGF0YT1TSVpFT0ZfSU5UKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjJNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDIgKiBTSVpFT0ZfSU5UKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkYXRhPSgyICogU0laRU9GX0lOVCkgLSAxKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMk1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKworY2xhc3MgUkZDMzU0MkFuY2lsbGFyeVRlc3QoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0IHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSB1c2luZyB0aGUgYW5jaWxsYXJ5IGRhdGEKKyAgICAjIGZlYXR1cmVzIG9mIHRoZSBSRkMgMzU0MiBBZHZhbmNlZCBTb2NrZXRzIEFQSSBmb3IgSVB2Ni4KKyAgICAjIEN1cnJlbnRseSB3ZSBjYW4gb25seSBoYW5kbGUgY2VydGFpbiBkYXRhIGl0ZW1zIChlLmcuIHRyYWZmaWMKKyAgICAjIGNsYXNzLCBob3AgbGltaXQsIE1UVSBkaXNjb3ZlcnkgYW5kIGZyYWdtZW50YXRpb24gc2V0dGluZ3MpCisgICAgIyB3aXRob3V0IHJlc29ydGluZyB0byB1bnBvcnRhYmxlIG1lYW5zIHN1Y2ggYXMgdGhlIHN0cnVjdCBtb2R1bGUsCisgICAgIyBidXQgdGhlIHRlc3RzIGhlcmUgYXJlIGFpbWVkIGF0IHRlc3RpbmcgdGhlIGFuY2lsbGFyeSBkYXRhCisgICAgIyBoYW5kbGluZyBpbiBzZW5kbXNnKCkgYW5kIHJlY3Ztc2coKSByYXRoZXIgdGhhbiB0aGUgSVB2NiBBUEkKKyAgICAjIGl0c2VsZi4KKworICAgICMgVGVzdCB2YWx1ZSB0byB1c2Ugd2hlbiBzZXR0aW5nIGhvcCBsaW1pdCBvZiBwYWNrZXQKKyAgICBob3BfbGltaXQgPSAyCisKKyAgICAjIFRlc3QgdmFsdWUgdG8gdXNlIHdoZW4gc2V0dGluZyB0cmFmZmljIGNsYXNzIG9mIHBhY2tldC4KKyAgICAjIC0xIG1lYW5zICJ1c2Uga2VybmVsIGRlZmF1bHQiLgorICAgIHRyYWZmaWNfY2xhc3MgPSAtMQorCisgICAgZGVmIGFuY2lsbGFyeU1hcHBpbmcoc2VsZiwgYW5jZGF0YSk6CisgICAgICAgICMgR2l2ZW4gYW5jaWxsYXJ5IGRhdGEgbGlzdCBhbmNkYXRhLCByZXR1cm4gYSBtYXBwaW5nIGZyb20KKyAgICAgICAgIyBwYWlycyAoY21zZ19sZXZlbCwgY21zZ190eXBlKSB0byBjb3JyZXNwb25kaW5nIGNtc2dfZGF0YS4KKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIChsZXZlbCwgdHlwZSkgcGFpciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBkID0ge30KKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKChjbXNnX2xldmVsLCBjbXNnX3R5cGUpLCBkKQorICAgICAgICAgICAgZFsoY21zZ19sZXZlbCwgY21zZ190eXBlKV0gPSBjbXNnX2RhdGEKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBjaGVja0hvcExpbWl0KHNlbGYsIGFuY2J1ZnNpemUsIG1heGhvcD0yNTUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZiBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIHNwYWNlLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgYW5jaWxsYXJ5IGRhdGEgaXMgbm90CisgICAgICAgICMgdHJ1bmNhdGVkIChidXQgaWdub3JlIGFueSBmbGFncyBpbiBpZ25vcmVmbGFncyksIGFuZCBob3AKKyAgICAgICAgIyBsaW1pdCBpcyBiZXR3ZWVuIDAgYW5kIG1heGhvcCBpbmNsdXNpdmUuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2t1bnNldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFuY2RhdGFbMF0sIHR1cGxlKQorICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LklQVjZfSE9QTElNSVQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbXNnX2RhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIG1heGhvcCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RSZWN2SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdGhlIHBhY2tldCBob3AgbGltaXQgYXMgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwKQorCisgICAgQHRlc3RSZWN2SG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgTmVlZCB0byB3YWl0IHVudGlsIHNlcnZlciBoYXMgYXNrZWQgdG8gcmVjZWl2ZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhLCBhcyBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBidWZmZXIgaXQKKyAgICAgICAgIyBvdGhlcndpc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyBob3AgbGltaXQsIHVzaW5nIENNU0dfU1BBQ0UgdG8gY2FsY3VsYXRlIGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXQoYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSkKKworICAgIEB0ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBDb3VsZCB0ZXN0IHJlY2VpdmluZyBpbnRvIGJ1ZmZlciBzaXplZCB1c2luZyBDTVNHX0xFTiwgYnV0IFJGQworICAgICMgMzU0MiBzYXlzIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyBtdXN0IHByb3ZpZGUgc3BhY2UgZm9yIHRyYWlsaW5nCisgICAgIyBwYWRkaW5nLiAgSW1wbGVtZW50YXRpb25zIG1heSBzZXQgTVNHX0NUUlVOQyBpZiB0aGVyZSBpc24ndAorICAgICMgZW5vdWdoIHNwYWNlIGZvciB0aGUgcGFkZGluZy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTZXRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgaG9wIGxpbWl0IG9uIG91dGdvaW5nIHBhY2tldCBhbmQgcmVjZWl2aW5nIGl0CisgICAgICAgICMgYXQgdGhlIG90aGVyIGVuZC4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsIG1heGhvcD1zZWxmLmhvcF9saW1pdCkKKworICAgIEB0ZXN0U2V0SG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZXRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmLCBhbmNidWZzaXplLCBtYXhob3A9MjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZgorICAgICAgICAjIGFuY2lsbGFyeSBkYXRhIHNwYWNlLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSBpcyBub3QgdHJ1bmNhdGVkIChidXQgaWdub3JlIGFueSBmbGFncyBpbiBpZ25vcmVmbGFncyksCisgICAgICAgICMgYW5kIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBhcmUgaW4gcmFuZ2UgKGhvcCBsaW1pdCBubworICAgICAgICAjIG1vcmUgdGhhbiBtYXhob3ApLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMikKKyAgICAgICAgYW5jbWFwID0gc2VsZi5hbmNpbGxhcnlNYXBwaW5nKGFuY2RhdGEpCisKKyAgICAgICAgdGNkYXRhID0gYW5jbWFwWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0Y2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyh0Y2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIDI1NSkKKworICAgICAgICBobGRhdGEgPSBhbmNtYXBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlUKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaGxkYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoaGxkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCBtYXhob3ApCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGFzIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCkKKworICAgIEB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQsIHVzaW5nCisgICAgICAgICMgQ01TR19TUEFDRSgpIHRvIGNhbGN1bGF0ZSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KAorICAgICAgICAgICAgYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSAqIDIpCisKKyAgICBAdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdENNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2V0VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCBzZXR0aW5nIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBvbiBvdXRnb2luZyBwYWNrZXQsCisgICAgICAgICMgYW5kIHJlY2VpdmluZyB0aGVtIGF0IHRoZSBvdGhlciBlbmQuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RTZXRUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNldFRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdE9kZENtc2dTaXplKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBzZW5kIGFuY2lsbGFyeSBkYXRhIHdpdGggZmlyc3QgaXRlbSBvbmUgYnl0ZSB0b28KKyAgICAgICAgIyBsb25nLiAgRmFsbCBiYWNrIHRvIHNlbmRpbmcgd2l0aCBjb3JyZWN0IHNpemUgaWYgdGhpcyBmYWlscywKKyAgICAgICAgIyBhbmQgY2hlY2sgdGhhdCBzZWNvbmQgaXRlbSB3YXMgaGFuZGxlZCBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RPZGRDbXNnU2l6ZS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdE9kZENtc2dTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkudG9ieXRlcygpICsgYiJceDAwIiksCisgICAgICAgICAgICAgICAgIChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuZXJybm8sIGludCkKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkpLAorICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisKKyAgICAjIFRlc3RzIGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgdHJ1bmNhdGVkIGFuY2lsbGFyeSBkYXRhCisKKyAgICBkZWYgY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihzZWxmLCBhbmNidWZzaXplLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBSZWNlaXZlIGhvcCBsaW1pdCBpbnRvIGFuY2J1ZnNpemUgYnl0ZXMgb2YgYW5jaWxsYXJ5IGRhdGEKKyAgICAgICAgIyBzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIHRvbyBzbWFsbCB0byBjb250YWluIHRoZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhIGhlYWRlciAoaWYgYW5jYnVmc2l6ZSBpcyBOb25lLCBwYXNzIG5vIHNlY29uZCBhcmd1bWVudAorICAgICAgICAjIHRvIHJlY3Ztc2coKSkuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBNU0dfQ1RSVU5DIGlzIHNldAorICAgICAgICAjICh1bmxlc3MgaW5jbHVkZWQgaW4gaWdub3JlZmxhZ3MpLCBhbmQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMKKyAgICAgICAgIyByZXR1cm5lZC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIGFyZ3MgPSAoKSBpZiBhbmNidWZzaXplIGlzIE5vbmUgZWxzZSAoYW5jYnVmc2l6ZSwpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBubyBhbmNpbGxhcnkKKyAgICAgICAgIyBidWZmZXIgc2l6ZSBpcyBwcm92aWRlZC4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQlNEIHNlZW1zIHRvIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNU0dfQ1RSVU5DIG9ubHkgaWYgYW4gaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoYXMgYmVlbiBwYXJ0aWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVjZWl2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBhbmNpbGxhcnkKKyAgICAgICAgIyBidWZmZXIgc2l6ZSBpcyB6ZXJvLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzAuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZXR1cm5lZCBmb3IgdmFyaW91cyBub24temVybworICAgICMgKGJ1dCBzdGlsbCB0b28gc21hbGwpIGJ1ZmZlciBzaXplcy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0xKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9MiAqIFNJWkVPRl9JTlQpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzJJbnQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19MRU4oMCkgLSAxKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHJ1bmNhdGlvbiBvZiBhIGNvbnRyb2wgbWVzc2FnZSBpbnNpZGUgaXRzIGFzc29jaWF0ZWQKKyAgICAgICAgIyBkYXRhLiAgVGhlIG1lc3NhZ2UgbWF5IGJlIHJldHVybmVkIHdpdGggaXRzIGRhdGEgdHJ1bmNhdGVkLAorICAgICAgICAjIG9yIG5vdCByZXR1cm5lZCBhdCBhbGwuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coCisgICAgICAgICAgICBzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIHNvY2tldC5DTVNHX0xFTihTSVpFT0ZfSU5UKSAtIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgaWYgYW5jZGF0YToKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5JUFY2X0hPUExJTUlUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIGNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNlbGYsIGFuY2J1ZnNpemUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZgorICAgICAgICAjIGFuY2lsbGFyeSBkYXRhIHNwYWNlLCB3aGljaCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCisgICAgICAgICMgY29udGFpbiB0aGUgZmlyc3QgaXRlbSwgYnV0IHRvbyBzbWFsbCB0byBjb250YWluIHRoZSBoZWFkZXIKKyAgICAgICAgIyBvZiB0aGUgc2Vjb25kLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgTVNHX0NUUlVOQyBpcyBzZXQKKyAgICAgICAgIyAodW5sZXNzIGluY2x1ZGVkIGluIGlnbm9yZWZsYWdzKSwgYW5kIG9ubHkgb25lIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEgaXRlbSBpcyByZXR1cm5lZC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZUQ0xBU1MsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oY21zZ190eXBlLCB7c29ja2V0LklQVjZfVENMQVNTLCBzb2NrZXQuSVBWNl9IT1BMSU1JVH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgIyBUcnkgdGhlIGFib3ZlIHRlc3Qgd2l0aCB2YXJpb3VzIGJ1ZmZlciBzaXplcy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb25kQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsgMSkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICogU0laRU9GX0lOVCkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMkludC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oMCkgLSAxKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29tZENtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRydW5jYXRpb24gb2YgdGhlIHNlY29uZCBvZiB0d28gY29udHJvbCBtZXNzYWdlcyBpbnNpZGUKKyAgICAgICAgIyBpdHMgYXNzb2NpYXRlZCBkYXRhLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZygKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpIC0gMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICAgICAgY21zZ190eXBlcyA9IHtzb2NrZXQuSVBWNl9UQ0xBU1MsIHNvY2tldC5JUFY2X0hPUExJTUlUfQorCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YS5wb3AoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBjbXNnX3R5cGVzLnJlbW92ZShjbXNnX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgICAgIGlmIGFuY2RhdGE6CisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGEucG9wKDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgICAgICBjbXNnX3R5cGVzLnJlbW92ZShjbXNnX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKworICAgIEB0ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCisjIERlcml2ZSBjb25jcmV0ZSB0ZXN0IGNsYXNzZXMgZm9yIGRpZmZlcmVudCBzb2NrZXQgdHlwZXMuCisKK2NsYXNzIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UoU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0aW9ubGVzc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluLCBVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnVURQVGVzdChTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVURQVGVzdChSZWN2bXNnVGVzdHMsIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1VEUFRlc3QoUmVjdm1zZ0ludG9UZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKFNlbmRyZWN2bXNnRGdyYW1GbGFnc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3Rpb25sZXNzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluLCBVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVRFA2VGVzdChTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVRFA2VGVzdChSZWN2bXNnVGVzdHMsIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVURQNlRlc3QoUmVjdm1zZ0ludG9UZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFBST1RPX0lQVjYiKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dSRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QoUkZDMzU0MkFuY2lsbGFyeVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFBST1RPX0lQVjYiKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0KFJlY3Ztc2dJbnRvTWl4aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRkMzNTQyQW5jaWxsYXJ5VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZShTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1RDUFRlc3QoU2VuZG1zZ1N0cmVhbVRlc3RzLCBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dUQ1BUZXN0KFJlY3Ztc2dUZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1RDUFRlc3QoUmVjdm1zZ0ludG9UZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UoU2VuZHJlY3Ztc2dTQ1RQRmxhZ3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBTQ1RQU3RyZWFtQmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1NDVFBTdHJlYW1UZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVCIsICJTT0NLX1NUUkVBTSIsICJJUFBST1RPX1NDVFAiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dTQ1RQU3RyZWFtVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RSZWN2bXNnRU9GKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdXBlcihSZWN2bXNnU0NUUFN0cmVhbVRlc3QsIHNlbGYpLnRlc3RSZWN2bXNnRU9GKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInNwb3JhZGljIEVOT1RDT05OIChrZXJuZWwgaXNzdWU/KSAtIHNlZSBpc3N1ZSAjMTM4NzYiKQorCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQiLCAiU09DS19TVFJFQU0iLCAiSVBQUk9UT19TQ1RQIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1NDVFBTdHJlYW1UZXN0KFJlY3Ztc2dJbnRvVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnU0NUUFN0cmVhbVRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VwZXIoUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdCwgc2VsZikudGVzdFJlY3Ztc2dFT0YoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9UQ09OTjoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3BvcmFkaWMgRU5PVENPTk4gKGtlcm5lbCBpc3N1ZT8pIC0gc2VlIGlzc3VlICMxMzg3NiIpCisKKworY2xhc3MgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UoU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBVbml4U3RyZWFtQmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1VuaXhTdHJlYW1UZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVbml4U3RyZWFtVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9Vbml4U3RyZWFtVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1VuaXhTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIiwgInJlY3Ztc2ciKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIiwgIlNPTF9TT0NLRVQiLCAiU0NNX1JJR0hUUyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1NDTVJpZ2h0c1N0cmVhbVRlc3QoU0NNUmlnaHRzVGVzdCwgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIsICJyZWN2bXNnX2ludG8iKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIiwgIlNPTF9TT0NLRVQiLCAiU0NNX1JJR0hUUyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9TQ01SaWdodHNTdHJlYW1UZXN0KFJlY3Ztc2dJbnRvTWl4aW4sIFNDTVJpZ2h0c1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworCisjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSBpbnRlcnJ1cHRpYmxlIHNlbmQvcmVjZWl2ZSBtZXRob2RzIHdpdGggYQorIyBzaWduYWwgd2hlbiBhIHRpbWVvdXQgaXMgc2V0LiAgVGhlc2UgdGVzdHMgYXZvaWQgaGF2aW5nIG11bHRpcGxlCisjIHRocmVhZHMgYWxpdmUgZHVyaW5nIHRoZSB0ZXN0IHNvIHRoYXQgdGhlIE9TIGNhbm5vdCBkZWxpdmVyIHRoZQorIyBzaWduYWwgdG8gdGhlIHdyb25nIG9uZS4KKworY2xhc3MgSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciBpbnRlcnJ1cHRlZCBzZW5kL3JlY2VpdmUgdGVzdHMuICBJbnN0YWxscyBhbgorICAgICMgZW1wdHkgaGFuZGxlciBmb3IgU0lHQUxSTSBhbmQgcmVtb3ZlcyBpdCBvbiB0ZWFyZG93biwgYWxvbmcgd2l0aAorICAgICMgYW55IHNjaGVkdWxlZCBhbGFybXMuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2lnbnVtLCBmcmFtZTogTm9uZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdBTFJNLCBvcmlnX2Fscm1faGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2V0QWxhcm0sIDApCisKKyAgICAjIFRpbWVvdXQgZm9yIHNvY2tldCBvcGVyYXRpb25zCisgICAgdGltZW91dCA9IDQuMAorCisgICAgIyBQcm92aWRlIHNldEFsYXJtKCkgbWV0aG9kIHRvIHNjaGVkdWxlIGRlbGl2ZXJ5IG9mIFNJR0FMUk0gYWZ0ZXIKKyAgICAjIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLCBvciBjYW5jZWwgaXQgaWYgemVybywgYW5kIGFuCisgICAgIyBhcHByb3ByaWF0ZSB0aW1lIHZhbHVlIHRvIHVzZS4gIFVzZSBzZXRpdGltZXIoKSBpZiBhdmFpbGFibGUuCisgICAgaWYgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKToKKyAgICAgICAgYWxhcm1fdGltZSA9IDAuMDUKKworICAgICAgICBkZWYgc2V0QWxhcm0oc2VsZiwgc2Vjb25kcyk6CisgICAgICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgc2Vjb25kcykKKyAgICBlbHNlOgorICAgICAgICAjIE9sZCBzeXN0ZW1zIG1heSBkZWxpdmVyIHRoZSBhbGFybSB1cCB0byBvbmUgc2Vjb25kIGVhcmx5CisgICAgICAgIGFsYXJtX3RpbWUgPSAyCisKKyAgICAgICAgZGVmIHNldEFsYXJtKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKHNlY29uZHMpCisKKworIyBSZXF1aXJlIHNpZ2ludGVycnVwdCgpIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHN5c3RlbSBjYWxscyBhcmUKKyMgaW50ZXJydXB0ZWQgYnkgZGVmYXVsdC4KK0ByZXF1aXJlQXR0cnMoc2lnbmFsLCAic2lnaW50ZXJydXB0IikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAiYWxhcm0iKSBvciBoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLAorICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGhhdmUgc2lnbmFsLmFsYXJtIG9yIHNpZ25hbC5zZXRpdGltZXIiKQorY2xhc3MgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QoSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSwgVURQVGVzdEJhc2UpOgorICAgICMgVGVzdCBpbnRlcnJ1cHRpbmcgdGhlIHJlY3YqKCkgbWV0aG9kcyB3aXRoIHNpZ25hbHMgd2hlbiBhCisgICAgIyB0aW1lb3V0IGlzIHNldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydi5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKKworICAgIGRlZiBjaGVja0ludGVycnVwdGVkUmVjdihzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpIHJhaXNlcyBzb2NrZXQuZXJyb3Igd2l0aCBhbgorICAgICAgICAjIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCisgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2VGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdiwgMTAyNCkKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2SW50b1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3ZfaW50bywgYnl0ZWFycmF5KDEwMjQpKQorCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Zmcm9tVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdmZyb20sIDEwMjQpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdmZyb21JbnRvVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdmZyb21faW50bywgYnl0ZWFycmF5KDEwMjQpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Ztc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2bXNnLCAxMDI0KQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdm1zZ0ludG9UaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2bXNnX2ludG8sIFtieXRlYXJyYXkoMTAyNCldKQorCisKKyMgUmVxdWlyZSBzaWdpbnRlcnJ1cHQoKSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBzeXN0ZW0gY2FsbHMgYXJlCisjIGludGVycnVwdGVkIGJ5IGRlZmF1bHQuCitAcmVxdWlyZUF0dHJzKHNpZ25hbCwgInNpZ2ludGVycnVwdCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIikgb3IgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBoYXZlIHNpZ25hbC5hbGFybSBvciBzaWduYWwuc2V0aXRpbWVyIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdChJbnRlcnJ1cHRlZFRpbWVvdXRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvY2tldExpc3RlbmluZ1Rlc3RNaXhpbiwgVENQVGVzdEJhc2UpOgorICAgICMgVGVzdCBpbnRlcnJ1cHRpbmcgdGhlIGludGVycnVwdGlibGUgc2VuZCooKSBtZXRob2RzIHdpdGggc2lnbmFscworICAgICMgd2hlbiBhIHRpbWVvdXQgaXMgc2V0LgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLm5ld1NvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNlcnZfY29ubi5jbG9zZSkKKyAgICAgICAgIyBVc2UgYSB0aHJlYWQgdG8gY29tcGxldGUgdGhlIGNvbm5lY3Rpb24sIGJ1dCB3YWl0IGZvciBpdCB0bworICAgICAgICAjIHRlcm1pbmF0ZSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCwgc28gdGhhdCB0aGVyZSBpcyBvbmx5IG9uZQorICAgICAgICAjIHRocmVhZCB0byBhY2NlcHQgdGhlIHNpZ25hbC4KKyAgICAgICAgY2xpX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuZG9Db25uZWN0KQorICAgICAgICBjbGlfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5jbGlfY29ubi5jbG9zZSkKKyAgICAgICAgY2xpX3RocmVhZC5qb2luKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCisKKyAgICBkZWYgZG9Db25uZWN0KHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZfY29ubi5jb25uZWN0KHNlbGYuc2Vydl9hZGRyKQorCisgICAgZGVmIGNoZWNrSW50ZXJydXB0ZWRTZW5kKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncyksIHJ1biBpbiBhIGxvb3AsIHJhaXNlcworICAgICAgICAjIHNvY2tldC5lcnJvciB3aXRoIGFuIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYQorICAgICAgICAjIHNpZ25hbC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3RzIGhhdmUgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kLCBiImEiKjUxMikKKworICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFNlbmR0b1RpbWVvdXQoc2VsZik6CisgICAgICAgICMgUGFzc2luZyBhbiBhY3R1YWwgYWRkcmVzcyBoZXJlIGFzIFB5dGhvbidzIHdyYXBwZXIgZm9yCisgICAgICAgICMgc2VuZHRvKCkgZG9lc24ndCBhbGxvdyBwYXNzaW5nIGEgemVyby1sZW5ndGggb25lOyBQT1NJWAorICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIGFkZHJlc3MgaXMgaWdub3JlZCBzaW5jZSB0aGUgc29ja2V0IGlzCisgICAgICAgICMgY29ubmVjdGlvbi1tb2RlLCBob3dldmVyLgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRTZW5kKHNlbGYuc2Vydl9jb25uLnNlbmR0bywgYiJhIio1MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2X2FkZHIpCisKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kbXNnLCBbYiJhIio1MTJdKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUQ1BDbG9zZXJUZXN0KFRocmVhZGVkVENQU29ja2V0VGVzdCk6CiAKQEAgLTEwOTksMTEgKzM1ODYsOCBAQAogICAgICAgICBwYXNzCiAKICAgICBpZiBoYXNhdHRyKHNvY2tldCwgIlNPQ0tfTk9OQkxPQ0siKToKKyAgICAgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyOCkKICAgICAgICAgZGVmIHRlc3RJbml0Tm9uQmxvY2tpbmcoc2VsZik6Ci0gICAgICAgICAgICB2ID0gbGludXhfdmVyc2lvbigpCi0gICAgICAgICAgICBpZiB2IDwgKDIsIDYsIDI4KToKLSAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAiLiIuam9pbihtYXAoc3RyLCB2KSkpCiAgICAgICAgICAgICAjIHJlaW5pdCBzZXJ2ZXIgc29ja2V0CiAgICAgICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNIHwKQEAgLTEyMDUsNyArMzY4OSw3IEBACiAgICAgIiIiCiAKICAgICBidWZzaXplID0gLTEgIyBVc2UgZGVmYXVsdCBidWZmZXIgc2l6ZQotICAgIGVuY29kaW5nID0gJ3V0ZjgnCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiAgICAgZXJyb3JzID0gJ3N0cmljdCcKICAgICBuZXdsaW5lID0gTm9uZQogCkBAIC0xMzg2LDcgKzM4NzAsNyBAQAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfcmFpc2VfZWludHIoKToKLSAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVJTlRSKQorICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoZXJybm8uRUlOVFIsICJpbnRlcnJ1cHRlZCIpCiAKICAgICBkZWYgX3RleHRpb3dyYXBfbW9ja19zb2NrZXQoc2VsZiwgbW9jaywgYnVmZmVyaW5nPS0xKToKICAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKG1vY2ssICJyIikKQEAgLTE0MjYsNyArMzkxMCw3IEBACiAgICAgICAgICAgICBkYXRhID0gYicnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gJycKLSAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAgICAgZXhwZWN0aW5nID0gZXhwZWN0aW5nLmRlY29kZSgndXRmLTgnKQogICAgICAgICB3aGlsZSBsZW4oZGF0YSkgIT0gbGVuKGV4cGVjdGluZyk6CiAgICAgICAgICAgICBwYXJ0ID0gZm8ucmVhZChzaXplKQogICAgICAgICAgICAgaWYgbm90IHBhcnQ6CkBAIC0xNTg4LDcgKzQwNzIsNyBAQAogICAgICIiIlRlc3RzIGZvciBzb2NrZXQubWFrZWZpbGUoKSBpbiB0ZXh0IG1vZGUgKHJhdGhlciB0aGFuIGJpbmFyeSkiIiIKIAogICAgIHJlYWRfbW9kZSA9ICdyJwotICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmOCcpCisgICAgcmVhZF9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgd3JpdGVfbW9kZSA9ICd3YicKICAgICB3cml0ZV9tc2cgPSBNU0cKICAgICBuZXdsaW5lID0gJycKQEAgLTE2MDAsNyArNDA4NCw3IEBACiAgICAgcmVhZF9tb2RlID0gJ3JiJwogICAgIHJlYWRfbXNnID0gTVNHCiAgICAgd3JpdGVfbW9kZSA9ICd3JwotICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0Zi04JykKICAgICBuZXdsaW5lID0gJycKIAogCkBAIC0xNjA4LDkgKzQwOTIsOSBAQAogICAgICIiIlRlc3RzIGZvciBzb2NrZXQubWFrZWZpbGUoKSBpbiB0ZXh0IG1vZGUgKHJhdGhlciB0aGFuIGJpbmFyeSkiIiIKIAogICAgIHJlYWRfbW9kZSA9ICdyJwotICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmOCcpCisgICAgcmVhZF9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgd3JpdGVfbW9kZSA9ICd3JwotICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHdyaXRlX21zZyA9IE1TRy5kZWNvZGUoJ3V0Zi04JykKICAgICBuZXdsaW5lID0gJycKIAogCkBAIC0xOTAxLDYgKzQzODUsNzggQEAKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMuYmluZCwgYWRkcmVzcykKIAorICAgIGRlZiB0ZXN0U3RyTmFtZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGFuIGFic3RyYWN0IG5hbWUgY2FuIGJlIHBhc3NlZCBhcyBhIHN0cmluZy4KKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5iaW5kKCJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRzb2NrbmFtZSgpLCBiIlx4MDBweXRob25ceDAwdGVzdFx4MDAiKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcy5jbG9zZSgpCisKK2NsYXNzIFRlc3RVbml4RG9tYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorCisgICAgZGVmIGVuY29kZWQoc2VsZiwgcGF0aCk6CisgICAgICAgICMgUmV0dXJuIHRoZSBnaXZlbiBwYXRoIGVuY29kZWQgaW4gdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nLAorICAgICAgICAjIG9yIHNraXAgdGhlIHRlc3QgaWYgdGhpcyBpcyBub3QgcG9zc2libGUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBvcy5mc2VuY29kZShwYXRoKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiUGF0aG5hbWUgezAhYX0gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIGZpbGUgIgorICAgICAgICAgICAgICAgICJzeXN0ZW0gZW5jb2RpbmcgezEhcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgcGF0aCwgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKKworICAgIGRlZiBiaW5kKHNlbGYsIHNvY2ssIHBhdGgpOgorICAgICAgICAjIEJpbmQgdGhlIHNvY2tldAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmJpbmQocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN0cihlKSA9PSAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAgICAgICAgICAgICAgICAiUGF0aG5hbWUgezAhYX0gaXMgdG9vIGxvbmcgdG8gc2VydmUgYXMgYSBBRl9VTklYIHBhdGgiCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdFN0ckFkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGFuZCByZXRyaWV2aW5nIGEgbm9ybWFsIHN0cmluZyBwYXRobmFtZS4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgcGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RCeXRlc0FkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGEgYnl0ZXMgcGF0aG5hbWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHNlbGYuZW5jb2RlZChwYXRoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RTdXJyb2dhdGVlc2NhcGVCaW5kKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhIHZhbGlkIG5vbi1BU0NJSSBwYXRobmFtZSwgd2l0aCB0aGUKKyAgICAgICAgIyBub24tQVNDSUkgYnl0ZXMgc3VwcGxpZWQgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVuY29kaW5nLgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOX1VOSUNPREUpCisgICAgICAgIGIgPSBzZWxmLmVuY29kZWQocGF0aCkKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgYi5kZWNvZGUoImFzY2lpIiwgInN1cnJvZ2F0ZWVzY2FwZSIpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zb2NrLmdldHNvY2tuYW1lKCksIHBhdGgpCisKKyAgICBkZWYgdGVzdFVuZW5jb2RhYmxlQWRkcihzZWxmKToKKyAgICAgICAgIyBUZXN0IGJpbmRpbmcgdG8gYSBwYXRobmFtZSB0aGF0IGNhbm5vdCBiZSBlbmNvZGVkIGluIHRoZQorICAgICAgICAjIGZpbGUgc3lzdGVtIGVuY29kaW5nLgorICAgICAgICBpZiBzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm8gdW5lbmNvZGFibGUgZmlsZW5hbWUgYXZhaWxhYmxlIikKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSkKKyAgICAgICAgc2VsZi5iaW5kKHNlbGYuc29jaywgcGF0aCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgQnVmZmVySU9UZXN0KFNvY2tldENvbm5lY3RlZFRlc3QpOgpAQCAtMjEwMSwxMSArNDY1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAiU09DS19DTE9FWEVDIG5vdCBkZWZpbmVkIikKIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAibW9kdWxlIGZjbnRsIG5vdCBhdmFpbGFibGUiKQogY2xhc3MgQ2xvZXhlY0NvbnN0YW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyOCkKICAgICBkZWYgdGVzdF9TT0NLX0NMT0VYRUMoc2VsZik6Ci0gICAgICAgIHYgPSBsaW51eF92ZXJzaW9uKCkKLSAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlICIuIi5qb2luKG1hcChzdHIsIHYpKSkKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfU1RSRUFNIHwgc29ja2V0LlNPQ0tfQ0xPRVhFQykgYXMgczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnR5cGUgJiBzb2NrZXQuU09DS19DTE9FWEVDKQpAQCAtMjEyMywxMSArNDY3Niw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMudHlwZSAmIHNvY2tldC5TT0NLX05PTkJMT0NLKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHRpbWVvdXQoKSwgTm9uZSkKIAorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgZGVmIHRlc3RfU09DS19OT05CTE9DSyhzZWxmKToKLSAgICAgICAgdiA9IGxpbnV4X3ZlcnNpb24oKQotICAgICAgICBpZiB2IDwgKDIsIDYsIDI4KToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkxpbnV4IGtlcm5lbCAyLjYuMjggb3IgaGlnaGVyIHJlcXVpcmVkLCBub3QgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICUgIi4iLmpvaW4obWFwKHN0ciwgdikpKQogICAgICAgICAjIGEgbG90IG9mIGl0IHNlZW1zIHNpbGx5IGFuZCByZWR1bmRhbnQsIGJ1dCBJIHdhbnRlZCB0byB0ZXN0IHRoYXQKICAgICAgICAgIyBjaGFuZ2luZyBiYWNrIGFuZCBmb3J0aCB3b3JrZWQgb2sKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULApAQCAtMjE2MCw2ICs0NzEwLDEwOSBAQAogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzIHNwZWNpZmljIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKG11bHRpcHJvY2Vzc2luZywgIm5lZWQgbXVsdGlwcm9jZXNzaW5nIikKK2NsYXNzIFRlc3RTb2NrZXRTaGFyaW5nKFNvY2tldFRDUFRlc3QpOgorICAgICMgVGhpcyBtdXN0IGJlIGNsYXNzbWV0aG9kIGFuZCBub3Qgc3RhdGljbWV0aG9kIG9yIG11bHRpcHJvY2Vzc2luZworICAgICMgd29uJ3QgYmUgYWJsZSB0byBib290c3RyYXAgaXQuCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlbW90ZVByb2Nlc3NTZXJ2ZXIoY2xzLCBxKToKKyAgICAgICAgIyBSZWNyZWF0ZSBzb2NrZXQgZnJvbSBzaGFyZWQgZGF0YQorICAgICAgICBzZGF0YSA9IHEuZ2V0KCkKKyAgICAgICAgbWVzc2FnZSA9IHEuZ2V0KCkKKworICAgICAgICBzID0gc29ja2V0LmZyb21zaGFyZShzZGF0YSkKKyAgICAgICAgczIsIGMgPSBzLmFjY2VwdCgpCisKKyAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlCisgICAgICAgIHMyLnNlbmRhbGwobWVzc2FnZSkKKyAgICAgICAgczIuY2xvc2UoKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0U2hhcmUoc2VsZik6CisgICAgICAgICMgVHJhbnNmZXIgdGhlIGxpc3RlbmluZyBzZXJ2ZXIgc29ja2V0IHRvIGFub3RoZXIgcHJvY2VzcworICAgICAgICAjIGFuZCBzZXJ2aWNlIGl0IGZyb20gdGhlcmUuCisKKyAgICAgICAgIyBDcmVhdGUgcHJvY2VzczoKKyAgICAgICAgcSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5yZW1vdGVQcm9jZXNzU2VydmVyLCBhcmdzPShxLCkpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgICMgR2V0IHRoZSBzaGFyZWQgc29ja2V0IGRhdGEKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShwLnBpZCkKKworICAgICAgICAjIFBhc3MgdGhlIHNoYXJlZCBzb2NrZXQgdG8gdGhlIG90aGVyIHByb2Nlc3MKKyAgICAgICAgYWRkciA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCisgICAgICAgIHEucHV0KGRhdGEpCisKKyAgICAgICAgIyBUaGUgZGF0YSB0aGF0IHRoZSBzZXJ2ZXIgd2lsbCBzZW5kIHVzCisgICAgICAgIG1lc3NhZ2UgPSBiInNsYXBtYWhmcm8iCisgICAgICAgIHEucHV0KG1lc3NhZ2UpCisKKyAgICAgICAgIyBDb25uZWN0CisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikKKyAgICAgICAgIyAgbGlzdGVuIGZvciB0aGUgZGF0YQorICAgICAgICBtID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgPSBzLnJlY3YoMTAwKQorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG0uYXBwZW5kKGRhdGEpCisgICAgICAgIHMuY2xvc2UoKQorICAgICAgICByZWNlaXZlZCA9IGIiIi5qb2luKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIG1lc3NhZ2UpCisgICAgICAgIHAuam9pbigpCisKKyAgICBkZWYgdGVzdFNoYXJlTGVuZ3RoKHNlbGYpOgorICAgICAgICBkYXRhID0gc2VsZi5zZXJ2LnNoYXJlKG9zLmdldHBpZCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrZXQuZnJvbXNoYXJlLCBkYXRhWzotMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNvY2tldC5mcm9tc2hhcmUsIGRhdGErYiJmb28iKQorCisgICAgZGVmIGNvbXBhcmVTb2NrZXRzKHNlbGYsIG9yZywgb3RoZXIpOgorICAgICAgICAjIHNvY2tldCBzaGFyaW5nIGlzIGV4cGVjdGVkIHRvIHdvcmsgb25seSBmb3IgYmxvY2tpbmcgc29ja2V0CisgICAgICAgICMgc2luY2UgdGhlIGludGVybmFsIHB5dGhvbiB0aW1vdXQgdmFsdWUgaXNuJ3QgdHJhbnNmZXJlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZ2V0dGltZW91dCgpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5nZXR0aW1lb3V0KCksIG90aGVyLmdldHRpbWVvdXQoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5mYW1pbHksIG90aGVyLmZhbWlseSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcudHlwZSwgb3RoZXIudHlwZSkKKyAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgIjAiIGZvciBwcm90bywgdGhlbgorICAgICAgICAjIGludGVybmFsbHkgd2luZG93cyB3aWxsIGhhdmUgcGlja2VkIHRoZSBjb3JyZWN0IHZhbHVlLgorICAgICAgICAjIFB5dGhvbiBpbnRyb3NwZWN0aW9uIG9uIHRoZSBzb2NrZXQgaG93ZXZlciB3aWxsIHN0aWxsIHJldHVybgorICAgICAgICAjIDAuICBGb3IgdGhlIHNoYXJlZCBzb2NrZXQsIHRoZSBweXRob24gdmFsdWUgaXMgcmVjcmVhdGVkCisgICAgICAgICMgZnJvbSB0aGUgYWN0dWFsIHZhbHVlLCBzbyBpdCBtYXkgbm90IGNvbXBhcmUgY29ycmVjdGx5LgorICAgICAgICBpZiBvcmcucHJvdG8gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLnByb3RvLCBvdGhlci5wcm90bykKKworICAgIGRlZiB0ZXN0U2hhcmVMb2NhbChzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tc2hhcmUoZGF0YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jb21wYXJlU29ja2V0cyhzZWxmLnNlcnYsIHMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0VHlwZXMoc2VsZik6CisgICAgICAgIGZhbWlsaWVzID0gW3NvY2tldC5BRl9JTkVULCBzb2NrZXQuQUZfSU5FVDZdCisgICAgICAgIHR5cGVzID0gW3NvY2tldC5TT0NLX1NUUkVBTSwgc29ja2V0LlNPQ0tfREdSQU1dCisgICAgICAgIGZvciBmIGluIGZhbWlsaWVzOgorICAgICAgICAgICAgZm9yIHQgaW4gdHlwZXM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzb2NrZXQuc29ja2V0KGYsIHQpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgVGhpcyBjb21iaW5hdGlvbiBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnNoYXJlKG9zLmdldHBpZCgpKQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgPSBzb2NrZXQuZnJvbXNoYXJlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVNvY2tldHMoc291cmNlLCBzaGFyZWQpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQuY2xvc2UoKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0dlbmVyYWxNb2R1bGVUZXN0cywgQmFzaWNUQ1BUZXN0LCBUQ1BDbG9zZXJUZXN0LCBUQ1BUaW1lb3V0VGVzdCwKICAgICAgICAgICAgICBUZXN0RXhjZXB0aW9ucywgQnVmZmVySU9UZXN0LCBCYXNpY1RDUFRlc3QyLCBCYXNpY1VEUFRlc3QsIFVEUFRpbWVvdXRUZXN0IF0KQEAgLTIxODMsMTEgKzQ4MzYsNDEgQEAKICAgICBdKQogICAgIGlmIGhhc2F0dHIoc29ja2V0LCAic29ja2V0cGFpciIpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoQmFzaWNTb2NrZXRQYWlyVGVzdCkKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4Mic6CisgICAgaWYgaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIik6CisgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0VW5peERvbWFpbikKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JzoKICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKQogICAgIGlmIGlzVGlwY0F2YWlsYWJsZSgpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoVElQQ1Rlc3QpCiAgICAgICAgIHRlc3RzLmFwcGVuZChUSVBDVGhyZWFkYWJsZVRlc3QpCisgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQorICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5leHRlbmQoWworICAgICAgICBDbXNnTWFjcm9UZXN0cywKKyAgICAgICAgU2VuZG1zZ1VEUFRlc3QsCisgICAgICAgIFJlY3Ztc2dVRFBUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1VEUFRlc3QsCisgICAgICAgIFNlbmRtc2dVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ1VEUDZUZXN0LAorICAgICAgICBSZWN2bXNnUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9VRFA2VGVzdCwKKyAgICAgICAgU2VuZG1zZ1RDUFRlc3QsCisgICAgICAgIFJlY3Ztc2dUQ1BUZXN0LAorICAgICAgICBSZWN2bXNnSW50b1RDUFRlc3QsCisgICAgICAgIFNlbmRtc2dTQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ1NDVFBTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnSW50b1NDVFBTdHJlYW1UZXN0LAorICAgICAgICBTZW5kbXNnVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dVbml4U3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9Vbml4U3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ1NDTVJpZ2h0c1N0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvU0NNUmlnaHRzU3RyZWFtVGVzdCwKKyAgICAgICAgIyBUaGVzZSBhcmUgc2xvdyB3aGVuIHNldGl0aW1lcigpIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QsCisgICAgICAgIEludGVycnVwdGVkU2VuZFRpbWVvdXRUZXN0LAorICAgICAgICBUZXN0U29ja2V0U2hhcmluZywKKyAgICBdKQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAxNjBmNWI4Li40NjQwNTdlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgKz0gMQogICAgICAgICAgICAgICAgIGlmIHNlbGYuY2FsbGVkID09IDE6CiAgICAgICAgICAgICAgICAgICAgICMgcmFpc2UgdGhlIGV4Y2VwdGlvbiBvbiBmaXJzdCBjYWxsCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGVjdC5lcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCBvcy5zdHJlcnJvcihlcnJuby5FSU5UUikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gcmVhbCBzZWxlY3QgdmFsdWUgZm9yIGNvbnNlY3V0aXZlIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGRfc2VsZWN0KCphcmdzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA0ZjI1NGE5Li40YmY3YWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtNDIsNiArNDIsOSBAQAogT05MWUtFWSA9IGRhdGFfZmlsZSgic3NsX2tleS5wZW0iKQogQllURVNfT05MWUNFUlQgPSBvcy5mc2VuY29kZShPTkxZQ0VSVCkKIEJZVEVTX09OTFlLRVkgPSBvcy5mc2VuY29kZShPTkxZS0VZKQorQ0VSVEZJTEVfUFJPVEVDVEVEID0gZGF0YV9maWxlKCJrZXljZXJ0LnBhc3N3ZC5wZW0iKQorT05MWUtFWV9QUk9URUNURUQgPSBkYXRhX2ZpbGUoInNzbF9rZXkucGFzc3dkLnBlbSIpCitLRVlfUEFTU1dPUkQgPSAic29tZXBhc3MiCiBDQVBBVEggPSBkYXRhX2ZpbGUoImNhcGF0aCIpCiBCWVRFU19DQVBBVEggPSBvcy5mc2VuY29kZShDQVBBVEgpCiAKQEAgLTUzLDYgKzU2LDggQEAKIEJBREtFWSA9IGRhdGFfZmlsZSgiYmFka2V5LnBlbSIpCiBOT0tJQUNFUlQgPSBkYXRhX2ZpbGUoIm5va2lhLnBlbSIpCiAKK0RIRklMRSA9IGRhdGFfZmlsZSgiZGg1MTIucGVtIikKK0JZVEVTX0RIRklMRSA9IG9zLmZzZW5jb2RlKERIRklMRSkKIAogZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgogICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQpAQCAtOTUsNyArMTAwLDE0IEBACiAgICAgICAgIHNzbC5DRVJUX05PTkUKICAgICAgICAgc3NsLkNFUlRfT1BUSU9OQUwKICAgICAgICAgc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgc3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorICAgICAgICBzc2wuT1BfU0lOR0xFX0RIX1VTRQorICAgICAgICBpZiBzc2wuSEFTX0VDREg6CisgICAgICAgICAgICBzc2wuT1BfU0lOR0xFX0VDREhfVVNFCisgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMCk6CisgICAgICAgICAgICBzc2wuT1BfTk9fQ09NUFJFU1NJT04KICAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX1NOSSwge1RydWUsIEZhbHNlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX0VDREgsIHtUcnVlLCBGYWxzZX0pCiAKICAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CiAgICAgICAgIHYgPSBzc2wuUkFORF9zdGF0dXMoKQpAQCAtMTAzLDYgKzExNSwxNiBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4gUkFORF9zdGF0dXMgaXMgJWQgKCVzKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh2LCAodiBhbmQgInN1ZmZpY2llbnQgcmFuZG9tbmVzcyIpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN1ZmZpY2llbnQgcmFuZG9tbmVzcyIpKQorCisgICAgICAgIGRhdGEsIGlzX2NyeXB0b2dyYXBoaWMgPSBzc2wuUkFORF9wc2V1ZG9fYnl0ZXMoMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpc19jcnlwdG9ncmFwaGljLCB2ID09IDEpCisgICAgICAgIGlmIHY6CisgICAgICAgICAgICBkYXRhID0gc3NsLlJBTkRfYnl0ZXMoMTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbC5SQU5EX2J5dGVzLCAxNikKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNzbC5SQU5EX2VnZCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsICdmb28nLCAxKQogICAgICAgICBzc2wuUkFORF9hZGQoInRoaXMgaXMgYSByYW5kb20gc3RyaW5nIiwgNzUuMCkKQEAgLTE4NiwyMCArMjA4LDIxIEBACiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQogICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzKQogICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHNzKQotICAgICAgICBkZWwgc3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBSZXNvdXJjZVdhcm5pbmcpKToKKyAgICAgICAgICAgIGRlbCBzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQogCiAgICAgZGVmIHRlc3Rfd3JhcHBlZF91bmNvbm5lY3RlZChzZWxmKToKICAgICAgICAgIyBNZXRob2RzIG9uIGFuIHVuY29ubmVjdGVkIFNTTFNvY2tldCBwcm9wYWdhdGUgdGhlIG9yaWdpbmFsCiAgICAgICAgICMgc29ja2V0LmVycm9yIHJhaXNlIGJ5IHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3YsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3MucmVjdl9pbnRvLCBieXRlYXJyYXkoYid4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3MucmVjdmZyb20sIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3MucmVjdmZyb21faW50bywgYnl0ZWFycmF5KGIneCcpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnNlbmQsIGIneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3Muc2VuZHRvLCBiJ3gnLCAoJzAuMC4wLjAnLCAwKSkKKyAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3YsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3ZfaW50bywgYnl0ZWFycmF5KGIneCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5yZWN2ZnJvbSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3MucmVjdmZyb21faW50bywgYnl0ZWFycmF5KGIneCcpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5zZW5kLCBiJ3gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5zZW5kdG8sIGIneCcsICgnMC4wLjAuMCcsIDApKQogCiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjODUyNDogd2hlbiBjcmVhdGluZyBhbiBTU0wgc29ja2V0LCB0aGUgdGltZW91dCBvZiB0aGUKQEAgLTIwNyw4ICsyMzAsOCBAQAogICAgICAgICBmb3IgdGltZW91dCBpbiAoTm9uZSwgMC4wLCA1LjApOgogICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgICAgICBzLnNldHRpbWVvdXQodGltZW91dCkKLSAgICAgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVvdXQsIHNzLmdldHRpbWVvdXQoKSkKKyAgICAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZW91dCwgc3MuZ2V0dGltZW91dCgpKQogCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCkBAIC0yMjEsOSArMjQ0LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIGZvciBzZXJ2ZXItc2lkZSBvcGVyYXRpb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCi0gICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQorICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssIGNlcnRmaWxlPVdST05HQ0VSVCkKQEAgLTMzMyw2ICszNTYsMzMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC53cmFwX3NvY2tldCwgc29jaywgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ic29tZS5ob3N0bmFtZSIpCiAKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgIyBzaG91bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgdW5rbm93biB0eXBlCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCJ0bHMtdW5pcXVlIiBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICIndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIG5vdCBhdmFpbGFibGUiKQorICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgorICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCisgICAgICAgICMgdGhlIHNhbWUgZm9yIHNlcnZlci1zaWRlCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgc3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCisKKyAgICBkZWYgdGVzdF9kZWFsbG9jX3dhcm4oc2VsZik6CisgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICByID0gcmVwcihzcykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJlc291cmNlV2FybmluZykgYXMgY206CisgICAgICAgICAgICBzcyA9IE5vbmUKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ociwgc3RyKGNtLndhcm5pbmcuYXJnc1swXSkpCisKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbApAQCAtNDIzLDYgKzQ3Myw2MCBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJrZXkgdmFsdWVzIG1pc21hdGNoIik6CiAgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKFNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCwgT05MWUtFWSkKKyAgICAgICAgIyBQYXNzd29yZCBwcm90ZWN0ZWQga2V5IGFuZCBjZXJ0CisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1LRVlfUEFTU1dPUkQpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1LRVlfUEFTU1dPUkQuZW5jb2RlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPWJ5dGVhcnJheShLRVlfUEFTU1dPUkQuZW5jb2RlKCkpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwgS0VZX1BBU1NXT1JEKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwgS0VZX1BBU1NXT1JELmVuY29kZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoS0VZX1BBU1NXT1JELmVuY29kZSgpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInNob3VsZCBiZSBhIHN0cmluZyIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPVRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD0iYmFkcGFzcyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2Fubm90IGJlIGxvbmdlciIpOgorICAgICAgICAgICAgIyBvcGVuc3NsIGhhcyBhIGZpeGVkIGxpbWl0IG9uIHRoZSBwYXNzd29yZCBidWZmZXIuCisgICAgICAgICAgICAjIFBFTV9CVUZTSVpFIGlzIGdlbmVyYWxseSBzZXQgdG8gMWtiLgorICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgbGFyZ2VyIHRoYW4gdGhpcy4KKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1iJ2EnICogMTAyNDAwKQorICAgICAgICAjIFBhc3N3b3JkIGNhbGxiYWNrCisgICAgICAgIGRlZiBnZXRwYXNzX3VuaWNvZGUoKToKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgZGVmIGdldHBhc3NfYnl0ZXMoKToKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQuZW5jb2RlKCkKKyAgICAgICAgZGVmIGdldHBhc3NfYnl0ZWFycmF5KCk6CisgICAgICAgICAgICByZXR1cm4gYnl0ZWFycmF5KEtFWV9QQVNTV09SRC5lbmNvZGUoKSkKKyAgICAgICAgZGVmIGdldHBhc3NfYmFkcGFzcygpOgorICAgICAgICAgICAgcmV0dXJuICJiYWRwYXNzIgorICAgICAgICBkZWYgZ2V0cGFzc19odWdlKCk6CisgICAgICAgICAgICByZXR1cm4gYidhJyAqICgxMDI0ICogMTAyNCkKKyAgICAgICAgZGVmIGdldHBhc3NfYmFkX3R5cGUoKToKKyAgICAgICAgICAgIHJldHVybiA5CisgICAgICAgIGRlZiBnZXRwYXNzX2V4Y2VwdGlvbigpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdnZXRwYXNzIGVycm9yJykKKyAgICAgICAgY2xhc3MgR2V0UGFzc0NhbGxhYmxlOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgICAgIGRlZiBnZXRwYXNzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfdW5pY29kZSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYnl0ZXMpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2J5dGVhcnJheSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUdldFBhc3NDYWxsYWJsZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1HZXRQYXNzQ2FsbGFibGUoKS5nZXRwYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19iYWRwYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbm5vdCBiZSBsb25nZXIiKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2h1Z2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJtdXN0IHJldHVybiBhIHN0cmluZyIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYmFkX3R5cGUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJnZXRwYXNzIGVycm9yIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19leGNlcHRpb24pCisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXNzd29yZCBmdW5jdGlvbiBpc24ndCBjYWxsZWQgaWYgaXQgaXNuJ3QgbmVlZGVkCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUsIHBhc3N3b3JkPWdldHBhc3NfZXhjZXB0aW9uKQogCiAgICAgZGVmIHRlc3RfbG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC00NDMsNiArNTQ3LDE5IEBACiAgICAgICAgICMgSXNzdWUgIzEwOTg5OiBjcmFzaCBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IHR5cGUgaXMgaW52YWxpZAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE5vbmUsIFRydWUpCiAKKyAgICBkZWYgdGVzdF9sb2FkX2RoX3BhcmFtcyhzZWxmKToKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoREhGSUxFKQorICAgICAgICBpZiBvcy5uYW1lICE9ICdudCc6CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQllURVNfREhGSUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX2RoX3BhcmFtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHgubG9hZF9kaF9wYXJhbXMsIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKFdST05HQ0VSVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9zZXNzaW9uX3N0YXRzKHNlbGYpOgogICAgICAgICBmb3IgcHJvdG8gaW4gUFJPVE9DT0xTOgpAQCAtNDY3LDYgKzU4NCw1NyBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIGN0eC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAiRUNESCBkaXNhYmxlZCBvbiB0aGlzIE9wZW5TU0wgYnVpbGQiKQorICAgIGRlZiB0ZXN0X3NldF9lY2RoX2N1cnZlKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfZWNkaF9jdXJ2ZSgicHJpbWUyNTZ2MSIpCisgICAgICAgIGN0eC5zZXRfZWNkaF9jdXJ2ZShiInByaW1lMjU2djEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHguc2V0X2VjZGhfY3VydmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgYiJmb28iKQorCisKK2NsYXNzIFNTTEVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICAjIFRoZSBzdHIoKSBvZiBhIFNTTEVycm9yIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZXJybm8KKyAgICAgICAgZSA9IHNzbC5TU0xFcnJvcigxLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIDEpCisgICAgICAgICMgU2FtZSBmb3IgYSBzdWJjbGFzcworICAgICAgICBlID0gc3NsLlNTTFplcm9SZXR1cm5FcnJvcigxLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIDEpCisKKyAgICBkZWYgdGVzdF9saWJfcmVhc29uKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGxpYnJhcnkgYW5kIHJlYXNvbiBhdHRyaWJ1dGVzCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5saWJyYXJ5LCAnUEVNJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uLCAnTk9fU1RBUlRfTElORScpCisgICAgICAgIHMgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJbUEVNOiBOT19TVEFSVF9MSU5FXSBubyBzdGFydCBsaW5lIiksIHMpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBhcHByb3ByaWF0ZSBTU0xFcnJvciBzdWJjbGFzcyBpcyByYWlzZWQKKyAgICAgICAgIyAodGhpcyBvbmx5IHRlc3RzIG9uZSBvZiB0aGVtKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CisgICAgICAgICAgICBzLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAgICAgICAgIHMubGlzdGVuKDUpCisgICAgICAgICAgICBjID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICBjLmNvbm5lY3Qocy5nZXRzb2NrbmFtZSgpKQorICAgICAgICAgICAgYy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KGMsIEZhbHNlLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgYzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xXYW50UmVhZEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgYy5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIHMgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAocmVhZCkiKSwgcykKKyAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEKQorCiAKIGNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTI5LDEzICs2OTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKICAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtNjY2LDQ3ICs4MzEsNDkgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSkKICAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic3ZuLnB5dGhvbi5vcmciKToKLSAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpKQotICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiBzdm4ucHl0aG9uLm9yZzo0NDMhIikKKyAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6CisgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCiAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSwgY2FfY2VydHM9Q0VSVEZJTEUpCi0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPUNFUlRGSUxFKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKKyAgICAgICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzXG4iICUgeCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKKworICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Y2VydCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yIHN2bi5weXRob24ub3JnISIgJSBwZW0pCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQogCi0gICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSwgY2FfY2VydHM9U1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQotICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiBzdm4ucHl0aG9uLm9yZzo0NDMhIikKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciBzdm4ucHl0aG9uLm9yZzo0NDMgaXNcbiVzXG4iICUgcGVtKQorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKCdzdm4ucHl0aG9uLm9yZycsIDQ0MywgU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQorICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKKyAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6CiAgICAgICAgIHJlbW90ZSA9ICgic3ZuLnB5dGhvbi5vcmciLCA0NDMpCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQocmVtb3RlWzBdKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKQotICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikKLSAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCisgICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgorICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCisgICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQogICAgICAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgogICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKQEAgLTc3NCw2ICs5NDEsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gc2VsZi5zZXJ2ZXIuY29udGV4dC53cmFwX3NvY2tldCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAjIFhYWCBWYXJpb3VzIGVycm9ycyBjYW4gaGF2ZSBoYXBwZW5lZCBoZXJlLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICAjIGEgbWlzbWF0Y2hpbmcgcHJvdG9jb2wgdmVyc2lvbiwgYW4gaW52YWxpZCBjZXJ0aWZpY2F0ZSwKQEAgLTc5Niw2ICs5NjQsOCBAQAogICAgICAgICAgICAgICAgICAgICBjaXBoZXIgPSBzZWxmLnNzbGNvbm4uY2lwaGVyKCkKICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiBjb25uZWN0aW9uIGNpcGhlciBpcyBub3cgIiArIHN0cihjaXBoZXIpICsgIlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IHNlbGVjdGVkIHByb3RvY29sIGlzIG5vdyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkgKyAiXG4iKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICBkZWYgcmVhZChzZWxmKToKQEAgLTg1MCw2ICsxMDIwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogY29ubmVjdGlvbiBpcyBub3cgdW5lbmNyeXB0ZWQuLi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInQ0IgdGxzLXVuaXF1ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiByZWFkIENCIHRscy11bmlxdWUgZnJvbSBjbGllbnQsIHNlbmRpbmcgb3VyIENCIGRhdGEuLi5cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc3NsY29ubi5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIoZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpICsgYiJcbiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0LnZlcmJvc2UgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHkpOgpAQCAtODY5LDcgKzEwNDQsNyBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2VydGlmaWNhdGU9Tm9uZSwgc3NsX3ZlcnNpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRyZXFzPU5vbmUsIGNhY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzdGFydHRsc19zZXJ2ZXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICBucG5fcHJvdG9jb2xzPU5vbmUsIGNpcGhlcnM9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgICAgIGlmIGNvbnRleHQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICAgZWxzZToKQEAgLTg4Miw2ICsxMDU3LDggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWNlcnRzKQogICAgICAgICAgICAgICAgIGlmIGNlcnRpZmljYXRlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRpZmljYXRlKQorICAgICAgICAgICAgICAgIGlmIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgICAgIGlmIGNpcGhlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQogICAgICAgICAgICAgc2VsZi5jaGF0dHkgPSBjaGF0dHkKQEAgLTg5MSw2ICsxMDY4LDcgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc29jaykKICAgICAgICAgICAgIHNlbGYuZmxhZyA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfcHJvdG9jb2xzID0gW10KICAgICAgICAgICAgIHNlbGYuY29ubl9lcnJvcnMgPSBbXQogICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgc2VsZi5kYWVtb24gPSBUcnVlCkBAIC05NTgsMTIgKzExMzYsMTEgQEAKICAgICAgICAgICAgICAgICBkZWYgX2RvX3NzbF9oYW5kc2hha2Uoc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xfRVJST1JfV0FOVF9XUklURSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfRU9GOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoc3NsLlNTTFdhbnRSZWFkRXJyb3IsIHNzbC5TU0xXYW50V3JpdGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IGVycm5vLkVDT05OQUJPUlRFRDoKQEAgLTEwODYsNiArMTI2Myw3IEBACiAgICAgICAgIExhdW5jaCBhIHNlcnZlciwgY29ubmVjdCBhIGNsaWVudCB0byBpdCBhbmQgdHJ5IHZhcmlvdXMgcmVhZHMKICAgICAgICAgYW5kIHdyaXRlcy4KICAgICAgICAgIiIiCisgICAgICAgIHN0YXRzID0ge30KICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9c2VydmVyX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9Y2hhdHR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKQEAgLTExMTEsNyArMTI4OSwxNCBAQAogICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBjbGllbnQ6ICBjbG9zaW5nIGNvbm5lY3Rpb24uXG4iKQorICAgICAgICAgICAgICAgIHN0YXRzLnVwZGF0ZSh7CisgICAgICAgICAgICAgICAgICAgICdjb21wcmVzc2lvbic6IHMuY29tcHJlc3Npb24oKSwKKyAgICAgICAgICAgICAgICAgICAgJ2NpcGhlcic6IHMuY2lwaGVyKCksCisgICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9wcm90b2NvbHMKKyAgICAgICAgcmV0dXJuIHN0YXRzCiAKICAgICBkZWYgdHJ5X3Byb3RvY29sX2NvbWJvKHNlcnZlcl9wcm90b2NvbCwgY2xpZW50X3Byb3RvY29sLCBleHBlY3Rfc3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRzcmVxcz1Ob25lLCBzZXJ2ZXJfb3B0aW9ucz0wLCBjbGllbnRfb3B0aW9ucz0wKToKQEAgLTEyNjMsNyArMTQ0OCw4IEBACiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAogICAgICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAotICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyksICJuZWVkIFNTTHYyIikKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlblNTTCBpcyBjb21waWxlZCB3aXRob3V0IFNTTHYyIHN1cHBvcnQiKQogICAgICAgICBkZWYgdGVzdF9wcm90b2NvbF9zc2x2MihzZWxmKToKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYW4gU1NMdjIgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucyIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTU2OSw2ICsxNzU1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25zdW1lIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVhZCgpCisKKyAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSBzZW5kbXNnIGV0IGFsIGFyZSBkaXNhbGxvd2VkIHRvIGF2b2lkCisgICAgICAgICAgICAgICAgIyBpbmFkdmVydGVudCBkaXNjbG9zdXJlIG9mIGRhdGEgYW5kL29yIGNvcnJ1cHRpb24KKyAgICAgICAgICAgICAgICAjIG9mIHRoZSBlbmNyeXB0ZWQgZGF0YSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzLnNlbmRtc2csIFtiImRhdGEiXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBzLnJlY3Ztc2csIDEwMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMucmVjdm1zZ19pbnRvLCBieXRlYXJyYXkoMTAwKSkKKwogICAgICAgICAgICAgICAgIHMud3JpdGUoYiJvdmVyXG4iKQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCkBAIC0xNjUzLDYgKzE4NDgsOCBAQAogICAgICAgICAgICAgY2xpZW50X2FkZHIgPSBjbGllbnQuZ2V0c29ja25hbWUoKQogICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKICAgICAgICAgICAgIHQuam9pbigpCisgICAgICAgICAgICByZW1vdGUuY2xvc2UoKQorICAgICAgICAgICAgc2VydmVyLmNsb3NlKCkKICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrcy4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZW1vdGUsIHNzbC5TU0xTb2NrZXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlZXIsIGNsaWVudF9hZGRyKQpAQCAtMTY2NywxMiArMTg2NCwxNDAgQEAKICAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1GYWxzZSkgYXMgc2VydmVyOgotICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6Ci0gICAgICAgICAgICAgICAgICAgIHMgPSBjb250ZXh0LndyYXBfc29ja2V0KHNvY2spCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoT1NFcnJvciwgc3NsLlNTTEVycm9yKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vIHNoYXJlZCBjaXBoZXIiLCBzdHIoc2VydmVyLmNvbm5fZXJyb3JzWzBdKSkKIAorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgbm90IGF2YWlsYWJsZSIpCisgICAgICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgorICAgICAgICAgICAgIiIiVGVzdCB0bHMtdW5pcXVlIGNoYW5uZWwgYmluZGluZy4iIiIKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihDRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkYXRhCisgICAgICAgICAgICAgICAgY2JfZGF0YSA9IHMuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGNoYW5uZWwgYmluZGluZyBkYXRhOiB7MCFyfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfZGF0YSkpCisKKyAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGl0IGlzIHNhbmUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNiX2RhdGEpLCAxMikgIyBUcnVlIGZvciBUTFN2MQorCisgICAgICAgICAgICAgICAgIyBhbmQgY29tcGFyZSB3aXRoIHRoZSBwZWVycyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgcy53cml0ZShiIkNCIHRscy11bmlxdWVcbiIpCisgICAgICAgICAgICAgICAgcGVlcl9kYXRhX3JlcHIgPSBzLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZWVyX2RhdGFfcmVwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoY2JfZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpKQorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisgICAgICAgICAgICAgICAgIyBub3csIGFnYWluCisgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICBuZXdfY2JfZGF0YSA9IHMuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGFub3RoZXIgY2hhbm5lbCBiaW5kaW5nIGRhdGE6IHswIXJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuZXdfY2JfZGF0YSkpCisgICAgICAgICAgICAgICAgIyBpcyBpdCByZWFsbHkgdW5pcXVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjYl9kYXRhLCBuZXdfY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShjYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNiX2RhdGEpLCAxMikgIyBUcnVlIGZvciBUTFN2MQorICAgICAgICAgICAgICAgIHMud3JpdGUoYiJDQiB0bHMtdW5pcXVlXG4iKQorICAgICAgICAgICAgICAgIHBlZXJfZGF0YV9yZXByID0gcy5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlcl9kYXRhX3JlcHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG5ld19jYl9kYXRhKS5lbmNvZGUoInVzLWFzY2lpIikpCisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICAgICAgZGVmIHRlc3RfY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgZ290IGNvbXByZXNzaW9uOiB7IXJ9XG4iLmZvcm1hdChzdGF0c1snY29tcHJlc3Npb24nXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHN0YXRzWydjb21wcmVzc2lvbiddLCB7IE5vbmUsICdaTElCJywgJ1JMRScgfSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ09QX05PX0NPTVBSRVNTSU9OJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzc2wuT1BfTk9fQ09NUFJFU1NJT04gbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9jb21wcmVzc2lvbl9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY29tcHJlc3Npb24nXSwgTm9uZSkKKworICAgICAgICBkZWYgdGVzdF9kaF9wYXJhbXMoc2VsZik6CisgICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgYSBjb25uZWN0aW9uIHdpdGggZXBoZW1lcmFsIERpZmZpZS1IZWxsbWFuCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfZGhfcGFyYW1zKERIRklMRSkKKyAgICAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoImtFREgiKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBjaXBoZXIgPSBzdGF0c1siY2lwaGVyIl1bMF0KKyAgICAgICAgICAgIHBhcnRzID0gY2lwaGVyLnNwbGl0KCItIikKKyAgICAgICAgICAgIGlmICJBREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkVESCIgbm90IGluIHBhcnRzIGFuZCAiREhFIiBub3QgaW4gcGFydHM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJOb24tREggY2lwaGVyOiAiICsgY2lwaGVyWzBdKQorCisgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgICAgICMgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgTlBOIGlzIHVzZWQKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY2xpZW50X25wbl9wcm90b2NvbCddLCBOb25lKQorCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfTlBOLCAiTlBOIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9ucG5fcHJvdG9jb2xzKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scyA9IFsnaHR0cC8xLjEnLCAnc3BkeS8yJ10KKyAgICAgICAgICAgIHByb3RvY29sX3Rlc3RzID0gWworICAgICAgICAgICAgICAgIChbJ2h0dHAvMS4xJywgJ3NwZHkvMiddLCAnaHR0cC8xLjEnKSwKKyAgICAgICAgICAgICAgICAoWydzcGR5LzInLCAnaHR0cC8xLjEnXSwgJ2h0dHAvMS4xJyksCisgICAgICAgICAgICAgICAgKFsnc3BkeS8yJywgJ3Rlc3QnXSwgJ3NwZHkvMicpLAorICAgICAgICAgICAgICAgIChbJ2FiYycsICdkZWYnXSwgJ2FiYycpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBmb3IgY2xpZW50X3Byb3RvY29scywgZXhwZWN0ZWQgaW4gcHJvdG9jb2xfdGVzdHM6CisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKHNlcnZlcl9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKGNsaWVudF9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisKKyAgICAgICAgICAgICAgICBtc2cgPSAiZmFpbGVkIHRyeWluZyAlcyAocykgYW5kICVzIChjKS5cbiIgXAorICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZXhwZWN0aW5nICVzLCBidXQgZ290ICUlcyBmcm9tIHRoZSAlJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3RyKHNlcnZlcl9wcm90b2NvbHMpLCBzdHIoY2xpZW50X3Byb3RvY29scyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgY2xpZW50X3Jlc3VsdCA9IHN0YXRzWydjbGllbnRfbnBuX3Byb3RvY29sJ10KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudF9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoY2xpZW50X3Jlc3VsdCwgImNsaWVudCIpKQorICAgICAgICAgICAgICAgIHNlcnZlcl9yZXN1bHQgPSBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXVstMV0gXAorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10pIGVsc2UgJ25vdGhpbmcnCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKHNlcnZlcl9yZXN1bHQsICJzZXJ2ZXIiKSkKKwogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgogICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTE3MDAsMTQgKzIwMjUsMTQgQEAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzXQorICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0c10KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCiAKICAgICBpZiBfaGF2ZV90aHJlYWRzOgogICAgICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKLSAgICAgICAgaWYgdGhyZWFkX2luZm8gYW5kIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgorICAgICAgICBpZiB0aHJlYWRfaW5mbzoKICAgICAgICAgICAgIHRlc3RzLmFwcGVuZChUaHJlYWRlZFRlc3RzKQogCiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZDVlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzdGF0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKKworCitkZWYgZ2V0X21vZGUoZm5hbWU9VEVTVEZOKToKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShvcy5sc3RhdChmbmFtZSkuc3RfbW9kZSkKKworCitjbGFzcyBUZXN0RmlsZW1vZGUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUoVEVTVEZOKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihURVNURk4pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgdGVhckRvd24gPSBzZXRVcAorCisgICAgZGVmIHRlc3RfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yd3gtLS0tLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzA3MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS1yd3gtLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzAwNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS0tLS1yd3gnKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzQ0NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yLS1yLS1yLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKVs6M10sICctcncnKQorCisgICAgZGVmIHRlc3RfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJ2Ryd3gtLS0tLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpWzBdLCAnZCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnc3ltbGluaycpLCAnb3Muc3ltbGluayBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9saW5rKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLmdldGN3ZCgpLCBURVNURk4pCisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKGVycikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKClbMF0sICdsJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ29zLm1rZmlmbyBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9maWZvKHNlbGYpOgorICAgICAgICBvcy5ta2ZpZm8oVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpLCAncHJ3eC0tLS0tLScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChUZXN0RmlsZW1vZGUpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKaW5kZXggMzRkMWRjZi4uYzJiZGZkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKQEAgLTI2LDYgKzI2LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmNhcHdvcmRzKCdcdGFCY1x0RGVGXHQnKSwgJ0FiYyBEZWYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnXHRhQmNcdERlRlx0JywgJ1x0JyksICdcdEFiY1x0RGVmXHQnKQogCisgICAgZGVmIHRlc3RfYmFzaWNfZm9ybWF0dGVyKHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezB9IiwgImJhciIpLCAiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MX17MH0tezF9IiwgImJhciIsIDYpLCAiZm9vNmJhci02IikKKwogICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fc3BlY2lmaWVycyhzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiLXthcmchcn0tIiwgYXJnPSd0ZXN0JyksICItJ3Rlc3QnLSIpCkBAIC0zOCwxNSArNDQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU1KSksICInXFx4ZmYnIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU2KSksICInXFx1MDEwMCciKQogCi0gICAgZGVmIHRlc3RfZm9ybWF0dGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X25hbWVfbG9va3VwKHNlbGYpOgogICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIGNsYXNzIEFueUF0dHI6CisgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIKKyAgICAgICAgeCA9IEFueUF0dHIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswLmx1bWJlcn17MC5qYWNrfSIsIHgpLCAnbHVtYmVyamFjaycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZm10LmZvcm1hdCgiezAubHVtYmVyfXswLmphY2t9IiwgJycpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MH0iLCAiYmFyIiksICJmb29iYXIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoImZvb3sxfXswfS17MX0iLCAiYmFyIiwgNiksICJmb282YmFyLTYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17YXJnIXJ9LSIsIGFyZz0ndGVzdCcpLCAiLSd0ZXN0Jy0iKQorICAgIGRlZiB0ZXN0X2luZGV4X2xvb2t1cChzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezBbMl19ezBbMF19IiwgbG9va3VwKSwgJ3NwYW1lZ2dzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIHt9KQogCi0gICAgICAgICMgb3ZlcnJpZGUgZ2V0X3ZhbHVlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZ2V0X3ZhbHVlKHNlbGYpOgogICAgICAgICBjbGFzcyBOYW1lc3BhY2VGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlPXt9KToKICAgICAgICAgICAgICAgICBzdHJpbmcuRm9ybWF0dGVyLl9faW5pdF9fKHNlbGYpCkBAIC02Niw3ICs4Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgie2dyZWV0aW5nfSwgd29ybGQhIiksICdoZWxsbywgd29ybGQhJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgZm9ybWF0X2ZpZWxkICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZm9ybWF0X2ZpZWxkKHNlbGYpOgogICAgICAgICBjbGFzcyBDYWxsRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIGZvcm1hdF9maWVsZChzZWxmLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOgogICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQodmFsdWUoKSwgZm9ybWF0X3NwZWMpCkBAIC03NSwxOCArOTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCcqezB9KicsIGxhbWJkYSA6ICdyZXN1bHQnKSwgJypyZXN1bHQqJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgY29udmVydF9maWVsZCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfY29udmVydF9maWVsZChzZWxmKToKICAgICAgICAgY2xhc3MgWEZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgIGRlZiBjb252ZXJ0X2ZpZWxkKHNlbGYsIHZhbHVlLCBjb252ZXJzaW9uKToKICAgICAgICAgICAgICAgICBpZiBjb252ZXJzaW9uID09ICd4JzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoWEZvcm1hdHRlciwgc2VsZikuY29udmVydF9maWVsZCh2YWx1ZSwgY29udmVyc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5jb252ZXJ0X2ZpZWxkKHZhbHVlLCBjb252ZXJzaW9uKQogCiAgICAgICAgIGZtdCA9IFhGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswIXJ9OnswIXh9IiwgJ2ZvbycsICdmb28nKSwgIidmb28nOk5vbmUiKQogCiAKLSAgICAgICAgIyBvdmVycmlkZSBwYXJzZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9wYXJzZShzZWxmKToKICAgICAgICAgY2xhc3MgQmFyRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgIyByZXR1cm5zIGFuIGl0ZXJhYmxlIHRoYXQgY29udGFpbnMgdHVwbGVzIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgIyAobGl0ZXJhbF90ZXh0LCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikKQEAgLTEwMiw3ICsxMTksNyBAQAogICAgICAgICBmbXQgPSBCYXJGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoJyp8KzA6XjEwc3wqJywgJ2ZvbycpLCAnKiAgIGZvbyAgICAqJykKIAotICAgICAgICAjIHRlc3QgYWxsIHBhcmFtZXRlcnMgdXNlZAorICAgIGRlZiB0ZXN0X2NoZWNrX3VudXNlZF9hcmdzKHNlbGYpOgogICAgICAgICBjbGFzcyBDaGVja0FsbFVzZWRGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgY2hlY2tfdW51c2VkX2FyZ3Moc2VsZiwgdXNlZF9hcmdzLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICAgICAgICAgICMgVHJhY2sgd2hpY2ggYXJndW1lbnRzIGFjdHVhbGx5IGdvdCB1c2VkCkBAIC0xMjQsMjggKzE0MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbXQuZm9ybWF0LCAiezB9IiwgMTAsIDIwLCBpPTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm10LmZvcm1hdCwgIntpfSIsIDEwLCAyMCwgaT0xMDApCiAKLSAgICBkZWYgdGVzdF92Zm9ybWF0X2Fzc2VydChzZWxmKToKLSAgICAgICAgY2xzID0gc3RyaW5nLkZvcm1hdHRlcigpCi0gICAgICAgIGt3YXJncyA9IHsKLSAgICAgICAgICAgICJpIjogMTAwCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLl92Zm9ybWF0LAotICAgICAgICAgICAgICAgIGNscy5mb3JtYXQsICJ7MH0iLCBrd2FyZ3MsIHNldCgpLCAtMikKLQotICAgIGRlZiB0ZXN0X2NvbnZlcnRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswIXN9IiwgJ2ZvbycpLCAnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLmZvcm1hdCwgInswIWh9IiwgJ2ZvbycpCi0KLSAgICBkZWYgdGVzdF9nZXRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBjbGFzcyBNeUNsYXNzOgotICAgICAgICAgICAgbmFtZSA9ICdsdW1iZXJqYWNrJwotICAgICAgICB4ID0gTXlDbGFzcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezAubmFtZX0iLCB4KSwgJ2x1bWJlcmphY2snKQotCi0gICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezBbMl19IiwgbG9va3VwKSwgJ3NwYW0nKQorICAgIGRlZiB0ZXN0X3Zmb3JtYXRfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGt3YXJncyA9IGRpY3QoaT0xMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgZm10Ll92Zm9ybWF0KCJ7aX0iLCBhcmdzLCBrd2FyZ3MsIHNldCgpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicmVjdXJzaW9uIiwgc3RyKGVyci5leGNlcHRpb24pKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKaW5kZXggNmJkYzZlNC4uMDdiYzQ4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKQEAgLTIsMTAgKzIsMTAgQEAKIAogVGhlcmUgYXJlIGZvdXIgdHlwZXMgb2Ygc3RyaW5nIGxpdGVyYWxzOgogCi0gICAgJ2FiYycgICAtLSBub3JtYWwgc3RyCi0gICAgcidhYmMnICAtLSByYXcgc3RyCi0gICAgYid4eXonICAtLSBub3JtYWwgYnl0ZXMKLSAgICBicid4eXonIC0tIHJhdyBieXRlcworICAgICdhYmMnICAgICAgICAgICAgIC0tIG5vcm1hbCBzdHIKKyAgICByJ2FiYycgICAgICAgICAgICAtLSByYXcgc3RyCisgICAgYid4eXonICAgICAgICAgICAgLS0gbm9ybWFsIGJ5dGVzCisgICAgYnIneHl6JyB8IHJiJ3h5eicgLS0gcmF3IGJ5dGVzCiAKIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbm9ybWFsIGFuZCByYXcgc3RyaW5ncyBpcyBvZiBjb3Vyc2UgdGhhdCBpbiBhCiByYXcgc3RyaW5nLCBcIGVzY2FwZXMgKHdoaWxlIHN0aWxsIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBlbmQgb2YgdGhlCkBAIC0xMDMsMTIgKzEwMywzNCBAQAogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDAxJyAiIiIpLCBiJ1xcJyArIGIneDAxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHgwMScgIiIiKSwgYidcXCcgKyBiJ3gwMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnInXHgwMScgIiIiKSwgYnl0ZSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYidceDAxJyAiIiIpLCBieXRlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDgxJyAiIiIpLCBiIlxcIiArIGIieDgxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHg4MScgIiIiKSwgYiJcXCIgKyBiIng4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiJ1x4ODEnICIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiIlxcIiArIGIidTE4ODEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiByYidcdTE4ODEnICIiIiksIGIiXFwiICsgYiJ1MTg4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnJyJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJicicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBycmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmJiJycgIiIiKQorCisgICAgZGVmIHRlc3RfZXZhbF9zdHJfdShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiB1J3gnICIiIiksICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiBVJ1x1MDBlNCcgIiIiKSwgJ8OkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiB1J1xOe0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTfScgIiIiKSwgJ8OkJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiB1cicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBydScnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBidScnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiB1YicnICIiIikKIAogICAgIGRlZiBjaGVja19lbmNvZGluZyhzZWxmLCBlbmNvZGluZywgZXh0cmE9IiIpOgogICAgICAgICBtb2RuYW1lID0gInh4XyIgKyBlbmNvZGluZy5yZXBsYWNlKCItIiwgIl8iKQpAQCAtMTMxLDcgKzE1Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNoZWNrX2VuY29kaW5nLCAidXRmLTgiLCBleHRyYSkKIAogICAgIGRlZiB0ZXN0X2ZpbGVfdXRmOChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygidXRmOCIpCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoInV0Zi04IikKIAogICAgIGRlZiB0ZXN0X2ZpbGVfaXNvXzg4NTlfMShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19lbmNvZGluZygiaXNvLTg4NTktMSIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGRjYzczYWIuLjIyMzc0ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC04LDkgKzgsMTkgQEAKIElTQklHRU5ESUFOID0gc3lzLmJ5dGVvcmRlciA9PSAiYmlnIgogSVMzMkJJVCA9IHN5cy5tYXhzaXplID09IDB4N2ZmZmZmZmYKIAotaW50ZWdlcl9jb2RlcyA9ICdiJywgJ0InLCAnaCcsICdIJywgJ2knLCAnSScsICdsJywgJ0wnLCAncScsICdRJworaW50ZWdlcl9jb2RlcyA9ICdiJywgJ0InLCAnaCcsICdIJywgJ2knLCAnSScsICdsJywgJ0wnLCAncScsICdRJywgJ24nLCAnTicKIGJ5dGVvcmRlcnMgPSAnJywgJ0AnLCAnPScsICc8JywgJz4nLCAnIScKIAorZGVmIGl0ZXJfaW50ZWdlcl9mb3JtYXRzKGJ5dGVvcmRlcnM9Ynl0ZW9yZGVycyk6CisgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKKyAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBieXRlb3JkZXJzOgorICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKKyAgICAgICAgICAgICAgICBub3QgSEFWRV9MT05HX0xPTkcpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIG5vdCBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCduJywgJ04nKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHlpZWxkIGNvZGUsIGJ5dGVvcmRlcgorCiAjIE5hdGl2ZSAncScgcGFja2luZyBpc24ndCBhdmFpbGFibGUgb24gc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdGhlIEMKICMgbG9uZyBsb25nIHR5cGUuCiB0cnk6CkBAIC0zMCw3ICs0MCw2IEBACiAgICAgICAgIHJldHVybiBzdHJpbmdfcmV2ZXJzZSh2YWx1ZSkKIAogY2xhc3MgU3RydWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KICAgICBkZWYgdGVzdF9pc2JpZ2VuZGlhbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoc3RydWN0LnBhY2soJz1pJywgMSlbMF0gPT0gMCksIElTQklHRU5ESUFOKQogCkBAIC0xNDIsMTQgKzE1MSwxMyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICMgc3RhbmRhcmQgaW50ZWdlciBzaXplcwotICAgICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgotICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnPScsICc8JywgJz4nLCAnISc6Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKLSAgICAgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZvcm1hdCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGV4cGVjdGVkX3NpemVbY29kZV0pCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKCc9JywgJzwnLCAnPicsICchJykpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKKyAgICAgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQogCiAgICAgICAgICMgbmF0aXZlIGludGVnZXIgc2l6ZXMKLSAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJworICAgICAgICBuYXRpdmVfcGFpcnMgPSAnYkInLCAnaEgnLCAnaUknLCAnbEwnLCAnbk4nCiAgICAgICAgIGlmIEhBVkVfTE9OR19MT05HOgogICAgICAgICAgICAgbmF0aXZlX3BhaXJzICs9ICdxUScsCiAgICAgICAgIGZvciBmb3JtYXRfcGFpciBpbiBuYXRpdmVfcGFpcnM6CkBAIC0xNjcsOSArMTc1LDExIEBACiAgICAgICAgIGlmIEhBVkVfTE9OR19MT05HOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2wnKSwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnUCcpKQogCiAgICAgZGVmIHRlc3RfaW50ZWdlcnMoc2VsZik6Ci0gICAgICAgICMgSW50ZWdlciB0ZXN0cyAoYkJoSGlJbExxUSkuCisgICAgICAgICMgSW50ZWdlciB0ZXN0cyAoYkJoSGlJbExxUW5OKS4KICAgICAgICAgaW1wb3J0IGJpbmFzY2lpCiAKICAgICAgICAgY2xhc3MgSW50VGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE4MywxMSArMTkzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ieXRlb3JkZXIpCiAgICAgICAgICAgICAgICAgc2VsZi5ieXRlc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCiAgICAgICAgICAgICAgICAgc2VsZi5iaXRzaXplID0gc2VsZi5ieXRlc2l6ZSAqIDgKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ2JoaWxxJyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdiaGlscW4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWduZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubWluX3ZhbHVlID0gLSgyKiooc2VsZi5iaXRzaXplLTEpKQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZSA9IDIqKihzZWxmLmJpdHNpemUtMSkgLSAxCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ0JISUxRJyk6CisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLmNvZGUgaW4gdHVwbGUoJ0JISUxRTicpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZ25lZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubWluX3ZhbHVlID0gMAogICAgICAgICAgICAgICAgICAgICBzZWxmLm1heF92YWx1ZSA9IDIqKnNlbGYuYml0c2l6ZSAtIDEKQEAgLTMxNywxNCArMzI3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrLCBzZWxmLmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqKQogCi0gICAgICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6Ci0gICAgICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIGNvZGUsIGJ5dGVvcmRlciBpbiBpdGVyX2ludGVnZXJfZm9ybWF0cygpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKKyAgICAgICAgICAgIHQgPSBJbnRUZXN0ZXIoZm9ybWF0KQorICAgICAgICAgICAgdC5ydW4oKQorCisgICAgZGVmIHRlc3Rfbk5fY29kZShzZWxmKToKKyAgICAgICAgIyBuIGFuZCBOIGRvbid0IGV4aXN0IGluIHN0YW5kYXJkIHNpemVzCisgICAgICAgIGRlZiBhc3NlcnRTdHJ1Y3RFcnJvcihmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmFkIGNoYXIgaW4gc3RydWN0IGZvcm1hdCIsIHN0cihjbS5leGNlcHRpb24pKQorICAgICAgICBmb3IgY29kZSBpbiAnbk4nOgorICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAoJz0nLCAnPCcsICc+JywgJyEnKToKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBieXRlb3JkZXIrY29kZQotICAgICAgICAgICAgICAgIHQgPSBJbnRUZXN0ZXIoZm9ybWF0KQotICAgICAgICAgICAgICAgIHQucnVuKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QuY2FsY3NpemUsIGZvcm1hdCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QucGFjaywgZm9ybWF0LCAwKQorICAgICAgICAgICAgICAgIGFzc2VydFN0cnVjdEVycm9yKHN0cnVjdC51bnBhY2ssIGZvcm1hdCwgYiIiKQogCiAgICAgZGVmIHRlc3RfcF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRlc3QgcCAoIlBhc2NhbCBzdHJpbmciKSBjb2RlLgpAQCAtMzc4LDE0ICszOTcsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc3RydWN0LnBhY2ssICI+ZiIsIGJpZykKIAogICAgIGRlZiB0ZXN0XzE1MzA1NTkoc2VsZik6Ci0gICAgICAgIGZvciBieXRlb3JkZXIgaW4gJycsICdAJywgJz0nLCAnPCcsICc+JywgJyEnOgotICAgICAgICAgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKLSAgICAgICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgICAgICBub3QgSEFWRV9MT05HX0xPTkcpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlciArIGNvZGUKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuNSkKKyAgICAgICAgZm9yIGNvZGUsIGJ5dGVvcmRlciBpbiBpdGVyX2ludGVnZXJfZm9ybWF0cygpOgorICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyICsgY29kZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXQsIDEuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgJ1AnLCAxLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssICdQJywgMS41KQogCkBAIC01NTksOSArNTc0LDkgQEAKIAogICAgIGRlZiBjaGVja19zaXplb2Yoc2VsZiwgZm9ybWF0X3N0ciwgbnVtYmVyX29mX2NvZGVzKToKICAgICAgICAgIyBUaGUgc2l6ZSBvZiAnUHlTdHJ1Y3RPYmplY3QnCi0gICAgICAgIHRvdGFsc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzVQJykKKyAgICAgICAgdG90YWxzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnMm4zUCcpCiAgICAgICAgICMgVGhlIHNpemUgdGFrZW4gdXAgYnkgdGhlICdmb3JtYXRjb2RlJyBkeW5hbWljIGFycmF5Ci0gICAgICAgIHRvdGFsc2l6ZSArPSBzdHJ1Y3QuY2FsY3NpemUoJzNQJykgKiAobnVtYmVyX29mX2NvZGVzICsgMSkKKyAgICAgICAgdG90YWxzaXplICs9IHN0cnVjdC5jYWxjc2l6ZSgnUDJuMFAnKSAqIChudW1iZXJfb2ZfY29kZXMgKyAxKQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBzdHJ1Y3QuU3RydWN0KGZvcm1hdF9zdHIpLCB0b3RhbHNpemUpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKaW5kZXggZDZjNjNiNy4uYTg5ZTk1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkKQEAgLTc4LDggKzc4LDkgQEAKIAogICAgIGRlZiB0ZXN0X2ZpZWxkcyhzZWxmKToKICAgICAgICAgdCA9IHRpbWUuZ210aW1lKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odCksIHQubl9maWVsZHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5uX2ZpZWxkcywgdC5uX3NlcXVlbmNlX2ZpZWxkcyt0Lm5fdW5uYW1lZF9maWVsZHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCB0Lm5fc2VxdWVuY2VfZmllbGRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubl91bm5hbWVkX2ZpZWxkcywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm5fZmllbGRzLCB0aW1lLl9TVFJVQ1RfVE1fSVRFTVMpCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKICAgICAgICAgdCA9IHRpbWUuc3RydWN0X3RpbWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQppbmRleCA5MjEzMjhmLi5mZjc0ZTg3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CkBAIC0xNiw2ICsxNiw3IEBACiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKK2ltcG9ydCB0ZXh0d3JhcAogCiB0cnk6CiAgICAgaW1wb3J0IHJlc291cmNlCkBAIC02Miw2ICs2Myw4IEBACiAgICAgICAgICMgc2h1dGRvd24gdGltZS4gIFRoYXQgZnJ1c3RyYXRlcyB0ZXN0cyB0cnlpbmcgdG8gY2hlY2sgc3RkZXJyIHByb2R1Y2VkCiAgICAgICAgICMgZnJvbSBhIHNwYXduZWQgUHl0aG9uIHByb2Nlc3MuCiAgICAgICAgIGFjdHVhbCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRlcnIpCisgICAgICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVyciBhbHNvIHN0cmlwcyB3aGl0ZXNwYWNlLCBzbyB3ZSBkbyB0b28uCisgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZykKIAogCkBAIC04NSw2ICs4OCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0NykKIAorICAgIGRlZiB0ZXN0X2NhbGxfdGltZW91dChzZWxmKToKKyAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZ3VtZW50OyB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY2hpbGQKKyAgICAgICAgIyBwcm9jZXNzIGdldHMga2lsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4gIElmIHRoZSBjaGlsZCBpc24ndAorICAgICAgICAjIGtpbGxlZCwgdGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgc2luY2Ugc3VicHJvY2Vzcy5jYWxsIHdhaXRzIGZvciB0aGUKKyAgICAgICAgIyBjaGlsZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCwgc3VicHJvY2Vzcy5jYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICItYyIsICJ3aGlsZSBUcnVlOiBwYXNzIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MC4xKQorCiAgICAgZGVmIHRlc3RfY2hlY2tfY2FsbF96ZXJvKHNlbGYpOgogICAgICAgICAjIGNoZWNrX2NhbGwoKSBmdW5jdGlvbiB3aXRoIHplcm8gcmV0dXJuIGNvZGUKICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW3N5cy5leGVjdXRhYmxlLCAiLWMiLApAQCAtMTI3LDYgKzEzOSwyMSBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBWYWx1ZUVycm9yIHdoZW4gc3Rkb3V0IGFyZyBzdXBwbGllZC4iKQogICAgICAgICBzZWxmLmFzc2VydEluKCdzdGRvdXQnLCBjLmV4Y2VwdGlvbi5hcmdzWzBdKQogCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgY2hlY2tfb3V0cHV0KCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpIGFzIGM6CisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXMsIHRpbWVcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LndyaXRlKCdCREZMJylcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LmZsdXNoKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICJ0aW1lLnNsZWVwKDM2MDApIl0sCisgICAgICAgICAgICAgICAgICAgICMgU29tZSBoZWF2aWx5IGxvYWRlZCBidWlsZGJvdHMgKHNwYXJjIERlYmlhbiAzLngpIHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG11Y2ggdGltZSB0byBzdGFydCBhbmQgcHJpbnQuCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MykKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVGltZW91dEV4cGlyZWQuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4Y2VwdGlvbi5vdXRwdXQsIGInQkRGTCcpCisKICAgICBkZWYgdGVzdF9jYWxsX2t3YXJncyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3MKICAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKQEAgLTE3Nyw2ICsyMDQsNDAgQEAKICAgICAgICAgcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGVyciwgTm9uZSkKIAorICAgIGRlZiBfYXNzZXJ0X3B5dGhvbihzZWxmLCBwcmVfYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIFdlIGluY2x1ZGUgc3lzLmV4aXQoKSB0byBwcmV2ZW50IHRoZSB0ZXN0IHJ1bm5lciBmcm9tIGhhbmdpbmcKKyAgICAgICAgIyB3aGVuZXZlciBweXRob24gaXMgZm91bmQuCisgICAgICAgIGFyZ3MgPSBwcmVfYXJncyArIFsiaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpIl0KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgKiprd2FyZ3MpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDcsIHAucmV0dXJuY29kZSkKKworICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB3b3Jrcy4KKyAgICAgICAgIworICAgICAgICAjIE9uIFVuaXggKG5vbi1NYWMgYW5kIG5vbi1XaW5kb3dzKSwgUHl0aG9uIGxvb2tzIGF0IGFyZ3NbMF0gdG8KKyAgICAgICAgIyBkZXRlcm1pbmUgd2hlcmUgaXRzIHN0YW5kYXJkIGxpYnJhcnkgaXMsIHNvIHdlIG5lZWQgdGhlIGRpcmVjdG9yeQorICAgICAgICAjIG9mIGFyZ3NbMF0gdG8gYmUgdmFsaWQgZm9yIHRoZSBQb3BlbigpIGNhbGwgdG8gUHl0aG9uIHRvIHN1Y2NlZWQuCisgICAgICAgICMgU2VlIGFsc28gaXNzdWUgIzE2MTcwIGFuZCBpc3N1ZSAjNzc3NC4KKyAgICAgICAgZG9lc25vdGV4aXN0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lc25vdGV4aXN0IikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihbZG9lc25vdGV4aXN0LCAiLWMiXSwgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSkKKworICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfdGFrZXNfcHJlY2VkZW5jZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBleGVjdXRhYmxlIGFyZ3VtZW50IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhcmdzWzBdLgorICAgICAgICAjCisgICAgICAgICMgVmVyaWZ5IGZpcnN0IHRoYXQgdGhlIGNhbGwgc3VjY2VlZHMgd2l0aG91dCB0aGUgZXhlY3V0YWJsZSBhcmcuCisgICAgICAgIHByZV9hcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiXQorICAgICAgICBzZWxmLl9hc3NlcnRfcHl0aG9uKHByZV9hcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc2VsZi5fYXNzZXJ0X3B5dGhvbiwgcHJlX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU9ImRvZXNub3RleGlzdCIpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgImV4ZWN1dGFibGUgYXJndW1lbnQgcmVwbGFjZXMgc2hlbGwiKQorICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfcmVwbGFjZXNfc2hlbGwoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzaGVsbAorICAgICAgICAjIHdoZW4gc2hlbGw9VHJ1ZS4KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihbXSwgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgc2hlbGw9VHJ1ZSkKKwogICAgICMgRm9yIHVzZSBpbiB0aGUgdGVzdF9jd2QqIHRlc3RzIGJlbG93LgogICAgIGRlZiBfbm9ybWFsaXplX2N3ZChzZWxmLCBjd2QpOgogICAgICAgICAjIE5vcm1hbGl6ZSBhbiBleHBlY3RlZCBjd2QgKGZvciBUcnU2NCBzdXBwb3J0KS4KQEAgLTIyNyw5ICsyODgsOSBAQAogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggdGhlIGNvcnJlY3QgY3dkLCBjb25maXJtIHRoYXQgdGhlIGNhbGwgZmFpbHMKICAgICAgICAgICAgICMgd2l0aG91dCBjd2QgYW5kIHdpdGggdGhlIHdyb25nIGN3ZC4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxfcHl0aG9uXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxfcHl0aG9uXSwgY3dkPXdyb25nX2RpcikKICAgICAgICAgICAgIHB5dGhvbl9kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHB5dGhvbl9kaXIpCiAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfY3dkKHB5dGhvbl9kaXIsIHJlbF9weXRob24sIGN3ZD1weXRob25fZGlyKQpAQCAtMjQ0LDkgKzMwNSw5IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpIGFzIHdyb25nX2RpcjoKICAgICAgICAgICAgICMgQmVmb3JlIGNhbGxpbmcgd2l0aCB0aGUgY29ycmVjdCBjd2QsIGNvbmZpcm0gdGhhdCB0aGUgY2FsbCBmYWlscwogICAgICAgICAgICAgIyB3aXRob3V0IGN3ZCBhbmQgd2l0aCB0aGUgd3JvbmcgY3dkLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RvZXNudGV4aXN0XSwgZXhlY3V0YWJsZT1yZWxfcHl0aG9uKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RvZXNudGV4aXN0XSwgZXhlY3V0YWJsZT1yZWxfcHl0aG9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXdyb25nX2RpcikKICAgICAgICAgICAgIHB5dGhvbl9kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHB5dGhvbl9kaXIpCkBAIC0yNjIsMTcgKzMyMywyMSBAQAogICAgICAgICB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggYW4gYWJzb2x1dGUgcGF0aCwgY29uZmlybSB0aGF0IHVzaW5nIGEKICAgICAgICAgICAgICMgcmVsYXRpdmUgcGF0aCBmYWlscy4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWxfcHl0aG9uXSwgY3dkPXdyb25nX2RpcikKICAgICAgICAgICAgIHdyb25nX2RpciA9IHNlbGYuX25vcm1hbGl6ZV9jd2Qod3JvbmdfZGlyKQogICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2N3ZCh3cm9uZ19kaXIsIGFic19weXRob24sIGN3ZD13cm9uZ19kaXIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5iYXNlX3ByZWZpeCAhPSBzeXMucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IHZlbnYtY29tcGF0aWJsZScpCiAgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV93aXRoX2N3ZChzZWxmKToKICAgICAgICAgcHl0aG9uX2RpciwgcHl0aG9uX2Jhc2UgPSBzZWxmLl9zcGxpdF9weXRob25fcGF0aCgpCiAgICAgICAgIHB5dGhvbl9kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHB5dGhvbl9kaXIpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jd2QocHl0aG9uX2RpciwgInNvbWV0aGluZ3lvdWRvbnRoYXZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLCBjd2Q9cHl0aG9uX2RpcikKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgdmVudi1jb21wYXRpYmxlJykKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKICAgICAgICAgICAgICAgICAgICAgICJuZWVkIGFuIGluc3RhbGxlZCBQeXRob24uIFNlZSAjNzc3NCIpCiAgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV93aXRob3V0X2N3ZChzZWxmKToKQEAgLTQxMCw2ICs0NzUsMzEgQEAKICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjbWRdLCBzdGRvdXQ9MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMikKIAorICAgIGRlZiB0ZXN0X3N0ZG91dF9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIGkgaW4gcmFuZ2UoMTAyNDApOicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCgieCIgKiAxMDI0KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3N0ZGVycl9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciBpIGluIHJhbmdlKDEwMjQwKTonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgieCIgKiAxMDI0KSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGVyciwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2Rldm51bGwoc2VsZik6CisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkaW4ucmVhZCgxKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICBwLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3RkaW4sIE5vbmUpCisKICAgICBkZWYgdGVzdF9lbnYoc2VsZik6CiAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIG5ld2VudlsiRlJVSVQiXSA9ICJvcmFuZ2UiCkBAIC00ODAsNiArNTcwLDQxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiImJhbmFuYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiInBpbmVhcHBsZSIpCiAKKyAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV90aW1lb3V0KHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvcyx0aW1lOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJwaW5lYXBwbGVcXG4iKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgxKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgicGVhclxcbiIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkpJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHAuY29tbXVuaWNhdGUsICJiYW5hbmEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTAuMykKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgY2FuIGtlZXAgd2FpdGluZyBmb3IgaXQsIGFuZCB0aGF0IHdlIGdldCB0aGUgd2hvbGUgb3V0cHV0CisgICAgICAgICMgYWZ0ZXIgaXQgY29tcGxldGVzLgorICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAiYmFuYW5hIikKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIuZW5jb2RlKCksIGIicGluZWFwcGxlXG5wZWFyXG4iKQorCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfdGltZW91dF9sYXJnZV9vdXB1dChzZWxmKToKKyAgICAgICAgIyBUZXN0IGFuIGV4cGlyaW5nIHRpbWVvdXQgd2hpbGUgdGhlIGNoaWxkIGlzIG91dHB1dHRpbmcgbG90cyBvZiBkYXRhLgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvcyx0aW1lOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGltZS5zbGVlcCgwLjIpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKCJhIiAqICg2NCAqIDEwMjQpKTsnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCwgcC5jb21tdW5pY2F0ZSwgdGltZW91dD0wLjQpCisgICAgICAgIChzdGRvdXQsIF8pID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN0ZG91dCksIDQgKiA2NCAqIDEwMjQpCisKICAgICAjIFRlc3QgZm9yIHRoZSBmZCBsZWFrIHJlcG9ydGVkIGluIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNzkxLgogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3BpcGVfZmRfbGVhayhzZWxmKToKICAgICAgICAgZm9yIHN0ZGluX3BpcGUgaW4gKEZhbHNlLCBUcnVlKToKQEAgLTUxNiwyNCArNjQxLDIxIEBACiAgICAgICAgICMgVGhpcyB0ZXN0IHdpbGwgcHJvYmFibHkgZGVhZGxvY2sgcmF0aGVyIHRoYW4gZmFpbCwgaWYKICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIGRvZXMgbm90IHdvcmsgcHJvcGVybHkuCiAgICAgICAgIHgsIHkgPSBvcy5waXBlKCkKLSAgICAgICAgaWYgbXN3aW5kb3dzOgotICAgICAgICAgICAgcGlwZV9idWYgPSA1MTIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBpcGVfYnVmID0gb3MuZnBhdGhjb25mKHgsICJQQ19QSVBFX0JVRiIpCiAgICAgICAgIG9zLmNsb3NlKHgpCiAgICAgICAgIG9zLmNsb3NlKHkpCiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzLG9zOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKDQ3KSk7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoInh5eiIqJWQpOycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkpJyAlIHBpcGVfYnVmXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJ4IiAqICVkKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5QSVBFX01BWF9TSVpFXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgIHN0cmluZ190b193cml0ZSA9IGIiYWJjIipwaXBlX2J1ZgorICAgICAgICBzdHJpbmdfdG9fd3JpdGUgPSBiImEiICogc3VwcG9ydC5QSVBFX01BWF9TSVpFCiAgICAgICAgIChzdGRvdXQsIHN0ZGVycikgPSBwLmNvbW11bmljYXRlKHN0cmluZ190b193cml0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHN0cmluZ190b193cml0ZSkKIApAQCAtNjA4LDggKzczMCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgIyBCVUc6IGNhbid0IGdpdmUgYSBub24tZW1wdHkgc3RkaW4gYmVjYXVzZSBpdCBicmVha3MgYm90aCB0aGUKLSAgICAgICAgIyBzZWxlY3QtIGFuZCBwb2xsLWJhc2VkIGNvbW11bmljYXRlKCkgaW1wbGVtZW50YXRpb25zLgogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxubGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKQEAgLTYxNywxMiArNzM3LDEyIEBACiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlX3N0ZGluKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCksIHdpdGggb25seSBzdGRpbgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgJycnXG5pZiBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQpAQCAtNjQwLDYgKzc2MCwzNSBAQAogICAgICAgICBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsIDApCiAKKyAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXNfY29tbXVuaWNhdGVfc3RkaW5fc3Rkb3V0X3N0ZGVycihzZWxmKToKKyAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpLCB3aXRoIHN0ZGluLCBzdGRvdXQsIHN0ZGVycgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4uYnVmZmVyLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTJcXHIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmUyXFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLmJ1ZmZlci5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTRcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTVcXHJcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmU2XFxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lN1xcclxcbnoiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQorICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgibGluZTFcbmxpbmUyXG5saW5lM1xubGluZTRcbmxpbmU1XG4iLCBzdGRvdXQpCisgICAgICAgICMgUHl0aG9uIGRlYnVnIGJ1aWxkIHB1c2ggc29tZXRoaW5nIGxpa2UgIls0MjQ0MiByZWZzXVxuIgorICAgICAgICAjIHRvIHN0ZGVyciBhdCBleGl0IG9mIHN1YnByb2Nlc3MuCisgICAgICAgICMgRG9uJ3QgdXNlIGFzc2VydFN0ZGVyckVxdWFsIGJlY2F1c2UgaXQgc3RyaXBzIENSIGFuZCBMRiBmcm9tIG91dHB1dC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0ZGVyci5zdGFydHN3aXRoKCJlbGluZTJcbmVsaW5lNlxuZWxpbmU3XG4iKSkKKwogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZV9lbmNvZGluZ3Moc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSB3b3JrcyBmb3IgdmFyaW91cyBlbmNvZGluZ3MsCiAgICAgICAgICMgaW4gcGFydGljdWxhciBmb3IgZW5jb2RpbmdzIGluIHRoZSBVVEYtMTYgYW5kIFVURi0zMiBmYW1pbGllcy4KQEAgLTY2OSw3ICs4MTgsNiBAQAogICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZwotCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKQEAgLTcyOSwzMCArODc3LDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VicHJvY2Vzcy5saXN0MmNtZGxpbmUoWydhYicsICcnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FiICIiJykKIAotCiAgICAgZGVmIHRlc3RfcG9sbChzZWxmKToKLSAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiLCAiaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMSkiXSkKLSAgICAgICAgY291bnQgPSAwCi0gICAgICAgIHdoaWxlIHAucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgIyBXZSBleHBlY3QgdGhhdCB0aGUgcG9sbCBsb29wIHByb2JhYmx5IHdlbnQgYXJvdW5kIGFib3V0IDEwIHRpbWVzLAotICAgICAgICAjIGJ1dCwgYmFzZWQgb24gc3lzdGVtIHNjaGVkdWxpbmcgd2UgY2FuJ3QgY29udHJvbCwgaXQncyBwb3NzaWJsZQotICAgICAgICAjIHBvbGwoKSBuZXZlciByZXR1cm5lZCBOb25lLiAgSXQgInNob3VsZCBiZSIgdmVyeSByYXJlIHRoYXQgaXQKLSAgICAgICAgIyBkaWRuJ3QgZ28gYXJvdW5kIGF0IGxlYXN0IHR3aWNlLgotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChjb3VudCwgMikKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBvczsgb3MucmVhZCgwLCAxKSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwLnBvbGwoKSkKKyAgICAgICAgb3Mud3JpdGUocC5zdGRpbi5maWxlbm8oKSwgYidBJykKKyAgICAgICAgcC53YWl0KCkKICAgICAgICAgIyBTdWJzZXF1ZW50IGludm9jYXRpb25zIHNob3VsZCBqdXN0IHJldHVybiB0aGUgcmV0dXJuY29kZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9sbCgpLCAwKQogCi0KICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsICJpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgyKSJdKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KCksIDApCiAgICAgICAgICMgU3Vic2VxdWVudCBpbnZvY2F0aW9ucyBzaG91bGQganVzdCByZXR1cm4gdGhlIHJldHVybmNvZGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLndhaXQoKSwgMCkKIAorICAgIGRlZiB0ZXN0X3dhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgImltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDAuMSkiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgcC53YWl0KHRpbWVvdXQ9MC4wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiMC4wMSIsIHN0cihjLmV4Y2VwdGlvbikpICAjIEZvciBjb3ZlcmFnZSBvZiBfX3N0cl9fLgorICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlIHRoaXMgbXVjaAorICAgICAgICAjIHRpbWUgdG8gc3RhcnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KHRpbWVvdXQ9MyksIDApCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2J1ZnNpemUoc2VsZik6CiAgICAgICAgICMgYW4gaW52YWxpZCB0eXBlIG9mIHRoZSBidWZzaXplIGFyZ3VtZW50IHNob3VsZCByYWlzZQpAQCAtODMxLDI1ICs5ODEsMjkgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAncGFzcyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHAuY29tbXVuaWNhdGUoYiJ4IiAqIDIqKjIwKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIHNpZ25hbC5TSUdBTFJNIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWlyZXMgc2lnbmFsLlNJR1VTUjEiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdraWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmtpbGwiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRwcGlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmdldHBwaWQiKQogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2VpbnRyKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMjQ5MzogY29tbXVuaWNhdGUoKSBzaG91bGQgaGFuZGxlIEVJTlRSCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgcGFzcwotICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb2xkX2hhbmRsZXIpCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdVU1IxLCBvbGRfaGFuZGxlcikKIAotICAgICAgICAjIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgZm9yIDIgc2Vjb25kcwotICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAnaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMiknXQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICdpbXBvcnQgb3MsIHNpZ25hbDsnCisgICAgICAgICAgICAgICAgJ29zLmtpbGwob3MuZ2V0cHBpZCgpLCBzaWduYWwuU0lHVVNSMSknXQogICAgICAgICBmb3Igc3RyZWFtIGluICgnc3Rkb3V0JywgJ3N0ZGVycicpOgogICAgICAgICAgICAga3cgPSB7c3RyZWFtOiBzdWJwcm9jZXNzLlBJUEV9CiAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncywgKiprdykgYXMgcHJvY2VzczoKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICAjIGNvbW11bmljYXRlKCkgd2lsbCBiZSBpbnRlcnJ1cHRlZCBieSBTSUdBTFJNCisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHdpbGwgYmUgaW50ZXJydXB0ZWQgYnkgU0lHVVNSMQogICAgICAgICAgICAgICAgIHByb2Nlc3MuY29tbXVuaWNhdGUoKQogCiAKQEAgLTE0NzMsNiArMTYyNywxMSBAQAogICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChbYWJzX3Byb2dyYW0sICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCiAKKyAgICAgICAgIyBhYnNvbHV0ZSBieXRlcyBwYXRoIGFzIGEgc3RyaW5nCisgICAgICAgIGNtZCA9IGIiJyIgKyBhYnNfcHJvZ3JhbSArIGIiJyAtYyBwYXNzIgorICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKICAgICAgICAgIyBieXRlcyBwcm9ncmFtLCB1bmljb2RlIFBBVEgKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WyJQQVRIIl0gPSBwYXRoCkBAIC0xNjU2LDcgKzE4MTUsNyBAQAogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHAucmV0dXJuY29kZSwgInNpZ2NoaWxkX2lnbm9yZS5weSBleGl0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiBub24temVybyB3aXRoIHRoaXMgZXJyb3I6XG4lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIuZGVjb2RlKCd1dGYtOCcpKQogCiAgICAgZGVmIHRlc3Rfc2VsZWN0X3VuYnVmZmVyZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExNDU5OiBidWZzaXplPTAgc2hvdWxkIHJlYWxseSBzZXQgdGhlIHBpcGVzIGFzCkBAIC0xOTAzLDI4ICsyMDYyLDYgQEAKICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlLnRlYXJEb3duKHNlbGYpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcycsIEZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICJfcG9zaXhzdWJwcm9jZXNzIGV4dGVuc2lvbiBtb2R1bGUgbm90IGZvdW5kLiIpCi1jbGFzcyBQcm9jZXNzVGVzdENhc2VQT1NJWFB1cmVQeXRob24oUHJvY2Vzc1Rlc3RDYXNlLCBQT1NJWFByb2Nlc3NUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgZ2xvYmFsIHN1YnByb2Nlc3MKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3Mgd2hpbGUgZm9yY2luZyBfcG9zaXhzdWJwcm9jZXNzIHRvIG5vdCBleGlzdC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnLipfcG9zaXhzdWJwcm9jZXNzIC4qIG5vdCBiZWluZyB1c2VkLionLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKSk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKAotICAgICAgICAgICAgICAgICAgICAnc3VicHJvY2VzcycsIGJsb2NrZWQ9WydfcG9zaXhzdWJwcm9jZXNzJ10pCi0gICAgICAgIGFzc2VydCBub3Qgc3VicHJvY2Vzcy5fcG9zaXhzdWJwcm9jZXNzCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBnbG9iYWwgc3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3MgYXMgaXQgc2hvdWxkIGJlLCByZXN0b3Jpbmcgb3JkZXIgdG8gdGhlIHVuaXZlcnNlLgotICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdzdWJwcm9jZXNzJykKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotCi0KIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYobXN3aW5kb3dzLCAiZXJybm8gYW5kIEVJTlRSIG1ha2Ugbm8gc2Vuc2Ugb24gd2luZG93cyIpCiAgICAgZGVmIHRlc3RfZWludHJfcmV0cnlfY2FsbChzZWxmKToKQEAgLTIwMTksMjAgKzIxNTYsMTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy5yZXR1cm5jb2RlLCAxKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVudmlyb25tZW50RXJyb3IpIGFzIGM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IpIGFzIGM6CiAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oWydub25leGlzdGluZ19pX2hvcGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpIGFzIHByb2M6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKLQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdW5pdF90ZXN0cyA9IChQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBQT1NJWFByb2Nlc3NUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgIFdpbjMyUHJvY2Vzc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlUE9TSVhQdXJlUHl0aG9uLAogICAgICAgICAgICAgICAgICAgQ29tbWFuZFRlc3RzLAogICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlTm9Qb2xsLAogICAgICAgICAgICAgICAgICAgSGVscGVyRnVuY3Rpb25UZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKaW5kZXggMDc4MDJkNi4uZmNjY2RmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKQEAgLTksNyArOSw2IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncyhxdWlldD1UcnVlKToKICAgICAgICAgICAgIGltcG9ydCBiZGIKICAgICAgICAgICAgIGltcG9ydCBjZ2l0YgotICAgICAgICAgICAgaW1wb3J0IGNvZGUKIAogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5iY3BwY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY2NvbXBpbGVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCA5MTQyMTZkLi5mNjQ2OWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTgxLDYgKzgxLDU1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFKCkuZigpLCAnQUUnKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X19fY2xhc3NfX19zZXQoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxMjM3MAorICAgICAgICBjbGFzcyBYKEEpOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZigpCisgICAgICAgICAgICBfX2NsYXNzX18gPSA0MTMKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZigpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2NsYXNzX18sIDQxMykKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19pbnN0YW5jZW1ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWCgpLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19jbGFzc21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKGNscyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X29ic2N1cmVfc3VwZXJfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgc3VwZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGYpCisgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmLCBOb25lKQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgX19jbGFzc19fCisgICAgICAgICAgICAgICAgZGVsIF9fY2xhc3NfXworICAgICAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBYKCkuZikKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFN1cGVyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZWY1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKQEAgLTAsMCArMSwxOTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgZXJybm8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitURVNURk4gPSBzdXBwb3J0LlRFU1RGTgorVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisKKworY2xhc3MgVGVzdFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKyAgICB0ZWFyRG93biA9IHNldFVwCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfbW9kdWxlKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImZ0cGxpYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmltcG9ydF9tb2R1bGUsICJmb28iKQorCisgICAgZGVmIHRlc3RfaW1wb3J0X2ZyZXNoX21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCJmdHBsaWIiKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2VsZiwgInRlc3RfZ2V0X2F0dHJpYnV0ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2dldF9hdHRyaWJ1dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmdldF9hdHRyaWJ1dGUsIHNlbGYsICJmb28iKQorCisgICAgQHVuaXR0ZXN0LnNraXAoImZhaWxpbmcgYnVpbGRib3RzIikKKyAgICBkZWYgdGVzdF9nZXRfb3JpZ2luYWxfc3Rkb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuZ2V0X29yaWdpbmFsX3N0ZG91dCgpLCBzeXMuc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfdW5sb2FkKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2NoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoInNjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3VubGluayhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoVEVTVEZOKSkKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfcm10cmVlKHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURElSTikKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKFRFU1RESVJOLCBURVNURElSTikpCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RESVJOKSkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisKKyAgICBkZWYgdGVzdF9mb3JnZXQoc2VsZik6CisgICAgICAgIG1vZF9maWxlbmFtZSA9IFRFU1RGTiArICcucHknCisgICAgICAgIHdpdGggb3Blbihtb2RfZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIHByaW50KCdmb28gPSAxJywgZmlsZT1mKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKworICAgICAgICAgICAgc3VwcG9ydC5mb3JnZXQoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihURVNURk4sIHN5cy5tb2R1bGVzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhtb2RfZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9IT1NUKHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuYmluZCgoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9maW5kX3VudXNlZF9wb3J0KHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgcG9ydCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYmluZF9wb3J0KHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHMpCisgICAgICAgIHMubGlzdGVuKDEpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfdGVtcF9jd2Qoc2VsZik6CisgICAgICAgIGhlcmUgPSBvcy5nZXRjd2QoKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZT1URVNURk4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgaGVyZSkKKworICAgIGRlZiB0ZXN0X3RlbXBfY3dkX19jaGRpcl93YXJuaW5nKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGUgd2FybmluZyBtZXNzYWdlIHdoZW4gb3MuY2hkaXIoKSBmYWlscy4iIiIKKyAgICAgICAgcGF0aCA9IFRFU1RGTiArICdfZG9lc19ub3RfZXhpc3QnCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpIGFzIHJlY29yZGVyOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHBhdGg9cGF0aCwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgbWVzc2FnZXMgPSBbc3RyKHcubWVzc2FnZSkgZm9yIHcgaW4gcmVjb3JkZXIud2FybmluZ3NdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIFsndGVzdHMgbWF5IGZhaWwsIHVuYWJsZSB0byBjaGFuZ2UgdGhlIENXRCB0byAnICsgcGF0aF0pCisKKyAgICBkZWYgdGVzdF9zb3J0ZGljdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LnNvcnRkaWN0KHszOjMsIDI6MiwgMToxfSksICJ7MTogMSwgMjogMiwgMzogM30iKQorCisgICAgZGVmIHRlc3RfbWFrZV9iYWRfZmQoc2VsZik6CisgICAgICAgIGZkID0gc3VwcG9ydC5tYWtlX2JhZF9mZCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYiJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisKKyAgICBkZWYgdGVzdF9jaGVja19zeW50YXhfZXJyb3Ioc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgY2xhc3MiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3IsIHNlbGYsICIxIikKKworICAgIGRlZiB0ZXN0X0NsZWFuSW1wb3J0KHNlbGYpOgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliCisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgiYXN5bmNvcmUiKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCJhc3luY29yZSIpCisKKyAgICBkZWYgdGVzdF9EaXJzT25TeXNQYXRoKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aCgnZm9vJywgJ2JhcicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiYXIiLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImJhciIsIHN5cy5wYXRoKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3Rkb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHByaW50KCJoZWxsbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF9zdGRlcnIoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzOgorICAgICAgICAgICAgcHJpbnQoImhlbGxvIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3RkaW4oc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRpbigpIGFzIHM6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iLCBmaWxlPXN5cy5zdGRpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsb1xuIikKKworICAgIGRlZiB0ZXN0X2djX2NvbGxlY3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9weXRob25faXNfb3B0aW1pemVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VwcG9ydC5weXRob25faXNfb3B0aW1pemVkKCksIGJvb2wpCisKKyAgICBkZWYgdGVzdF9zd2FwX2F0dHIoc2VsZik6CisgICAgICAgIGNsYXNzIE9iajoKKyAgICAgICAgICAgIHggPSAxCisgICAgICAgIG9iaiA9IE9iaigpCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIob2JqLCAieCIsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgMSkKKworICAgIGRlZiB0ZXN0X3N3YXBfaXRlbShzZWxmKToKKyAgICAgICAgRCA9IHsiaXRlbSI6MX0KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShELCAiaXRlbSIsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCAxKQorCisgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQorICAgICMgbWFrZV9sZWdhY3lfcHljCisgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCisgICAgIyByZXF1aXJlcworICAgICMgZmNtcAorICAgICMgdW1ha3MKKyAgICAjIGZpbmRmaWxlCisgICAgIyBjaGVja193YXJuaW5ncworICAgICMgRW52aXJvbm1lbnRWYXJHdWFyZAorICAgICMgVHJhbnNpZW50UmVzb3VyY2UKKyAgICAjIHRyYW5zaWVudF9pbnRlcm5ldAorICAgICMgcnVuX3dpdGhfbG9jYWxlCisgICAgIyBzZXRfbWVtbGltaXQKKyAgICAjIGJpZ21lbXRlc3QKKyAgICAjIHByZWNpc2lvbmJpZ21lbXRlc3QKKyAgICAjIGJpZ2FkZHJzcGFjZXRlc3QKKyAgICAjIHJlcXVpcmVzX3Jlc291cmNlCisgICAgIyBydW5fZG9jdGVzdAorICAgICMgdGhyZWFkaW5nX2NsZWFudXAKKyAgICAjIHJlYXBfdGhyZWFkcworICAgICMgcmVhcF9jaGlsZHJlbgorICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVycgorICAgICMgYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzCisgICAgIyBjYW5fc3ltbGluaworICAgICMgc2tpcF91bmxlc3Nfc3ltbGluaworCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0cyA9IFtUZXN0U3VwcG9ydF0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggYTUyNzY3YS4uZTVlYzg1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTMwMyw2ICszMDMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0ZGxvcGVuZmxhZ3MoKSwgb2xkZmxhZ3MrMSkKICAgICAgICAgICAgIHN5cy5zZXRkbG9wZW5mbGFncyhvbGRmbGFncykKIAorICAgIEB0ZXN0LnN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X3JlZmNvdW50KHNlbGYpOgogICAgICAgICAjIG4gaGVyZSBtdXN0IGJlIGEgZ2xvYmFsIGluIG9yZGVyIGZvciB0aGlzIHRlc3QgdG8gcGFzcyB3aGlsZQogICAgICAgICAjIHRyYWNpbmcgd2l0aCBhIHB5dGhvbiBmdW5jdGlvbi4gIFRyYWNpbmcgY2FsbHMgUHlGcmFtZV9GYXN0VG9Mb2NhbHMKQEAgLTM0Miw3ICszNDMsNyBAQAogICAgICMgVGVzdCBzeXMuX2N1cnJlbnRfZnJhbWVzKCkgaW4gYSBXSVRIX1RIUkVBRFMgYnVpbGQuCiAgICAgQHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgY3VycmVudF9mcmFtZXNfd2l0aF90aHJlYWRzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdGhyZWFkaW5nLCBfdGhyZWFkCisgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogCiAgICAgICAgICMgU3Bhd24gYSB0aHJlYWQgdGhhdCBibG9ja3MgYXQgYSBrbm93biBwbGFjZS4gIFRoZW4gdGhlIG1haW4KQEAgLTM1Niw3ICszNTcsNyBAQAogICAgICAgICAgICAgZzQ1NigpCiAKICAgICAgICAgZGVmIGc0NTYoKToKLSAgICAgICAgICAgIHRocmVhZF9pbmZvLmFwcGVuZChfdGhyZWFkLmdldF9pZGVudCgpKQorICAgICAgICAgICAgdGhyZWFkX2luZm8uYXBwZW5kKHRocmVhZGluZy5nZXRfaWRlbnQoKSkKICAgICAgICAgICAgIGVudGVyZWRfZy5zZXQoKQogICAgICAgICAgICAgbGVhdmVfZy53YWl0KCkKIApAQCAtMzcyLDcgKzM3Myw3IEBACiAKICAgICAgICAgZCA9IHN5cy5fY3VycmVudF9mcmFtZXMoKQogCi0gICAgICAgIG1haW5faWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIG1haW5faWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihtYWluX2lkLCBkKQogICAgICAgICBzZWxmLmFzc2VydEluKHRocmVhZF9pZCwgZCkKIApAQCAtNDE4LDYgKzQxOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMsIHR1cGxlKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmNvcHlyaWdodCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmV4ZWNfcHJlZml4LCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmV4ZWN1dGFibGUsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3lzLmZsb2F0X2luZm8pLCAxMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZmxvYXRfaW5mby5yYWRpeCwgMikKQEAgLTQ0Niw4ICs0NDgsMTAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLm1heHNpemUsIGludCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5tYXh1bmljb2RlLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1heHVuaWNvZGUsIDB4MTBGRkZGKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLnBsYXRmb3JtLCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMucHJlZml4LCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYmFzZV9wcmVmaXgsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy52ZXJzaW9uLCBzdHIpCiAgICAgICAgIHZpID0gc3lzLnZlcnNpb25faW5mbwogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmlbOl0sIHR1cGxlKQpAQCAtNDczLDYgKzQ3NywxNCBAQAogICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5hYmlmbGFncywgc3RyKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzeXMsICd0aHJlYWRfaW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3RocmVhZF9pbmZvKHNlbGYpOgorICAgICAgICBpbmZvID0gc3lzLnRocmVhZF9pbmZvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGluZm8pLCAzKQorICAgICAgICBzZWxmLmFzc2VydEluKGluZm8ubmFtZSwgKCdudCcsICdvczInLCAncHRocmVhZCcsICdzb2xhcmlzJywgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW5mby5sb2NrLCAoJ3NlbWFwaG9yZScsICdtdXRleCtjb25kJywgTm9uZSkpCisKICAgICBkZWYgdGVzdF80MzU4MShzZWxmKToKICAgICAgICAgIyBDYW4ndCB1c2Ugc3lzLnN0ZG91dCwgYXMgdGhpcyBpcyBhIFN0cmluZ0lPIG9iamVjdCB3aGVuCiAgICAgICAgICMgdGhlIHRlc3QgcnVucyB1bmRlciByZWdydGVzdC4KQEAgLTUwMCw3ICs1MTIsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX2ZsYWdzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLmZsYWdzKQotICAgICAgICBhdHRycyA9ICgiZGVidWciLCAiZGl2aXNpb25fd2FybmluZyIsCisgICAgICAgIGF0dHJzID0gKCJkZWJ1ZyIsCiAgICAgICAgICAgICAgICAgICJpbnNwZWN0IiwgImludGVyYWN0aXZlIiwgIm9wdGltaXplIiwgImRvbnRfd3JpdGVfYnl0ZWNvZGUiLAogICAgICAgICAgICAgICAgICAibm9fdXNlcl9zaXRlIiwgIm5vX3NpdGUiLCAiaWdub3JlX2Vudmlyb25tZW50IiwgInZlcmJvc2UiLAogICAgICAgICAgICAgICAgICAiYnl0ZXNfd2FybmluZyIsICJxdWlldCIsICJoYXNoX3JhbmRvbWl6YXRpb24iKQpAQCAtNTMyLDYgKzU0NCw4IEBACiAgICAgICAgIG91dCA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJz8nKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CiAgICAgICAgICMgc3lzLmV4ZWN1dGFibGUgc2hvdWxkIGJlIGFic29sdXRlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSwgc3lzLmV4ZWN1dGFibGUpCkBAIC01NjgsNiArNTgyLDM0IEBACiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X2ltcGxlbWVudGF0aW9uKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBhcHBsaWVzIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMgZXF1YWxseS4KKworICAgICAgICBsZXZlbHMgPSB7J2FscGhhJzogMHhBLCAnYmV0YSc6IDB4QiwgJ2NhbmRpZGF0ZSc6IDB4QywgJ2ZpbmFsJzogMHhGfQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAndmVyc2lvbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdoZXh2ZXJzaW9uJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycpKQorCisgICAgICAgIHZlcnNpb24gPSBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb25bOjJdLCAodmVyc2lvbi5tYWpvciwgdmVyc2lvbi5taW5vcikpCisKKyAgICAgICAgaGV4dmVyc2lvbiA9ICh2ZXJzaW9uLm1ham9yIDw8IDI0IHwgdmVyc2lvbi5taW5vciA8PCAxNiB8CisgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi5taWNybyA8PCA4IHwgbGV2ZWxzW3ZlcnNpb24ucmVsZWFzZWxldmVsXSA8PCA0IHwKKyAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLnNlcmlhbCA8PCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5pbXBsZW1lbnRhdGlvbi5oZXh2ZXJzaW9uLCBoZXh2ZXJzaW9uKQorCisgICAgICAgICMgUEVQIDQyMSByZXF1aXJlcyB0aGF0IC5uYW1lIGJlIGxvd2VyIGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmltcGxlbWVudGF0aW9uLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmltcGxlbWVudGF0aW9uLm5hbWUubG93ZXIoKSkKKworICAgIGRlZiB0ZXN0X2RlYnVnbWFsbG9jc3RhdHMoc2VsZik6CisgICAgICAgICMgVGVzdCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKQorICAgICAgICBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworICAgICAgICBhcmdzID0gWyctYycsICdpbXBvcnQgc3lzOyBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSddCisgICAgICAgIHJldCwgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiZnJlZSBQeURpY3RPYmplY3RzIiwgZXJyKQogCiBjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTkxLDEyICs2MzMsMTIgQEAKICAgICAgICAgIyBib29sIG9iamVjdHMgYXJlIG5vdCBnYyB0cmFja2VkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlKSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCiAgICAgICAgICMgYnV0IGxpc3RzIGFyZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoW10pLCB2c2l6ZSgnUFAnKSArIGdjX2hlYWRlcl9zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoW10pLCB2c2l6ZSgnUG4nKSArIGdjX2hlYWRlcl9zaXplKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKLSAgICAgICAgdnNpemUgPSB0ZXN0LnN1cHBvcnQuY2FsY3ZvYmpzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlKSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlLCAtMSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQorICAgICAgICBzaXplID0gdGVzdC5zdXBwb3J0LmNhbGN2b2Jqc2l6ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlLCAtMSksIHNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCiAKICAgICBkZWYgdGVzdF9vYmplY3R0eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBPYmplY3RzLwpAQCAtNjEzLDkgKzY1NSw5IEBACiAgICAgICAgIHNhbXBsZXMgPSBbYicnLCBiJ3UnKjEwMDAwMF0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgogICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShzYW1wbGUpCi0gICAgICAgICAgICBjaGVjayh4LCB2c2l6ZSgnaVBQJykgKyB4Ll9fYWxsb2NfXygpKQorICAgICAgICAgICAgY2hlY2soeCwgdnNpemUoJ2luUCcpICsgeC5fX2FsbG9jX18oKSkKICAgICAgICAgIyBieXRlYXJyYXlfaXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcihieXRlYXJyYXkoKSksIHNpemUoJ1BQJykpCisgICAgICAgIGNoZWNrKGl0ZXIoYnl0ZWFycmF5KCkpLCBzaXplKCduUCcpKQogICAgICAgICAjIGNlbGwKICAgICAgICAgZGVmIGdldF9jZWxsKCk6CiAgICAgICAgICAgICB4ID0gNDIKQEAgLTYyNCwyNyArNjY2LDMzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk4UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGRlZiBnZXRfY2VsbDIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4geAorICAgICAgICAgICAgcmV0dXJuIGlubmVyCisgICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpICsgMSkKICAgICAgICAgIyBjb21wbGV4CiAgICAgICAgIGNoZWNrKGNvbXBsZXgoMCwxKSwgc2l6ZSgnMmQnKSkKICAgICAgICAgIyBtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCi0gICAgICAgIGNoZWNrKHN0ci5sb3dlciwgc2l6ZSgnMlBQJykpCisgICAgICAgIGNoZWNrKHN0ci5sb3dlciwgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgY2xhc3NtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgbWVtYmVyX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKLSAgICAgICAgY2hlY2soZGF0ZXRpbWUudGltZWRlbHRhLmRheXMsIHNpemUoJzJQUCcpKQorICAgICAgICBjaGVjayhkYXRldGltZS50aW1lZGVsdGEuZGF5cywgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgZ2V0c2V0X2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBpbXBvcnQgY29sbGVjdGlvbnMKLSAgICAgICAgY2hlY2soY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5LCBzaXplKCcyUFAnKSkKKyAgICAgICAgY2hlY2soY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5LCBzaXplKCczUFAnKSkKICAgICAgICAgIyB3cmFwcGVyX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQotICAgICAgICBjaGVjayhpbnQuX19hZGRfXywgc2l6ZSgnMlAyUCcpKQorICAgICAgICBjaGVjayhpbnQuX19hZGRfXywgc2l6ZSgnM1AyUCcpKQogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnM1AyUCcgKyA4KidQMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ24yUCcgKyAnMm5QbicgKyA4KiduMlAnKSkKICAgICAgICAgbG9uZ2RpY3QgPSB7MToxLCAyOjIsIDM6MywgNDo0LCA1OjUsIDY6NiwgNzo3LCA4Ojh9Ci0gICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCczUDJQJyArIDgqJ1AyUCcpICsgMTYqc3RydWN0LmNhbGNzaXplKCdQMlAnKSkKKyAgICAgICAgY2hlY2sobG9uZ2RpY3QsIHNpemUoJ24yUCcgKyAnMm5QbicpICsgMTYqc3RydWN0LmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LWtleWl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWVpdGVyYXRvcgpAQCAtNjUyLDE4ICs3MDAsMTggQEAKICAgICAgICAgIyBkaWN0aW9uYXJ5LWl0ZW1pdGVyYXRvcgogICAgICAgICBjaGVjayh7fS5pdGVtcygpLCBzaXplKCdQJykpCiAgICAgICAgICMgZGljdGlvbmFyeSBpdGVyYXRvcgotICAgICAgICBjaGVjayhpdGVyKHt9KSwgc2l6ZSgnUDJQUFAnKSkKKyAgICAgICAgY2hlY2soaXRlcih7fSksIHNpemUoJ1AyblBuJykpCiAgICAgICAgICMgZGljdHByb3h5CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhDLl9fZGljdF9fLCBzaXplKCdQJykpCiAgICAgICAgICMgQmFzZUV4Y2VwdGlvbgotICAgICAgICBjaGVjayhCYXNlRXhjZXB0aW9uKCksIHNpemUoJzVQJykpCisgICAgICAgIGNoZWNrKEJhc2VFeGNlcHRpb24oKSwgc2l6ZSgnNVBpJykpCiAgICAgICAgICMgVW5pY29kZUVuY29kZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVFbmNvZGVFcnJvcigiIiwgIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZUVuY29kZUVycm9yKCIiLCAiIiwgMCwgMCwgIiIpLCBzaXplKCc1UGkgMlAyblAnKSkKICAgICAgICAgIyBVbmljb2RlRGVjb2RlRXJyb3IKLSAgICAgICAgY2hlY2soVW5pY29kZURlY29kZUVycm9yKCIiLCBiIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZURlY29kZUVycm9yKCIiLCBiIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgVW5pY29kZVRyYW5zbGF0ZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiIiwgMCwgMSwgIiIpLCBzaXplKCc1UCAyUDJQUCcpKQorICAgICAgICBjaGVjayhVbmljb2RlVHJhbnNsYXRlRXJyb3IoIiIsIDAsIDEsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgZWxsaXBzZXMKICAgICAgICAgY2hlY2soRWxsaXBzaXMsIHNpemUoJycpKQogICAgICAgICAjIEVuY29kaW5nTWFwCkBAIC02NzEsOSArNzE5LDkgQEAKICAgICAgICAgeCA9IGNvZGVjcy5jaGFybWFwX2J1aWxkKGVuY29kaW5ncy5pc284ODU5XzMuZGVjb2RpbmdfdGFibGUpCiAgICAgICAgIGNoZWNrKHgsIHNpemUoJzMyQjJpQicpKQogICAgICAgICAjIGVudW1lcmF0ZQotICAgICAgICBjaGVjayhlbnVtZXJhdGUoW10pLCBzaXplKCdsM1AnKSkKKyAgICAgICAgY2hlY2soZW51bWVyYXRlKFtdKSwgc2l6ZSgnbjNQJykpCiAgICAgICAgICMgcmV2ZXJzZQotICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ1BQJykpCisgICAgICAgIGNoZWNrKHJldmVyc2VkKCcnKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBmbG9hdAogICAgICAgICBjaGVjayhmbG9hdCgwKSwgc2l6ZSgnZCcpKQogICAgICAgICAjIHN5cy5mbG9hdGluZm8KQEAgLTY4OSw3ICs3MzcsNyBAQAogICAgICAgICBjaGVjayh4LCB2c2l6ZSgnMTJQM2knICsgQ09fTUFYQkxPQ0tTKiczaScgKyAnUCcgKyBleHRyYXMqJ1AnKSkKICAgICAgICAgIyBmdW5jdGlvbgogICAgICAgICBkZWYgZnVuYygpOiBwYXNzCi0gICAgICAgIGNoZWNrKGZ1bmMsIHNpemUoJzExUCcpKQorICAgICAgICBjaGVjayhmdW5jLCBzaXplKCcxMlAnKSkKICAgICAgICAgY2xhc3MgYygpOgogICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgZGVmIGZvbygpOgpAQCAtNjk4LDEyICs3NDYsMTIgQEAKICAgICAgICAgICAgIGRlZiBiYXIoY2xzKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAjIHN0YXRpY21ldGhvZAotICAgICAgICAgICAgY2hlY2soZm9vLCBzaXplKCdQJykpCisgICAgICAgICAgICBjaGVjayhmb28sIHNpemUoJ1BQJykpCiAgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCi0gICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1AnKSkKKyAgICAgICAgICAgIGNoZWNrKGJhciwgc2l6ZSgnUFAnKSkKICAgICAgICAgIyBnZW5lcmF0b3IKICAgICAgICAgZGVmIGdldF9nZW4oKTogeWllbGQgMQotICAgICAgICBjaGVjayhnZXRfZ2VuKCksIHNpemUoJ1BpMlAnKSkKKyAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQYjJQJykpCiAgICAgICAgICMgaXRlcmF0b3IKICAgICAgICAgY2hlY2soaXRlcignYWJjJyksIHNpemUoJ2xQJykpCiAgICAgICAgICMgY2FsbGFibGUtaXRlcmF0b3IKQEAgLTcxMiw3ICs3NjAsNyBAQAogICAgICAgICAjIGxpc3QKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgWzEsMiwzXSwgWycxJywgJzInLCAnMyddXQogICAgICAgICBmb3Igc2FtcGxlIGluIHNhbXBsZXM6Ci0gICAgICAgICAgICBjaGVjayhzYW1wbGUsIHZzaXplKCdQUCcpICsgbGVuKHNhbXBsZSkqc2VsZi5QKQorICAgICAgICAgICAgY2hlY2soc2FtcGxlLCB2c2l6ZSgnUG4nKSArIGxlbihzYW1wbGUpKnNlbGYuUCkKICAgICAgICAgIyBzb3J0d3JhcHBlciAobGlzdCkKICAgICAgICAgIyBYWFgKICAgICAgICAgIyBjbXB3cmFwcGVyIChsaXN0KQpAQCAtNzIwLDcgKzc2OCw3IEBACiAgICAgICAgICMgbGlzdGl0ZXJhdG9yIChsaXN0KQogICAgICAgICBjaGVjayhpdGVyKFtdKSwgc2l6ZSgnbFAnKSkKICAgICAgICAgIyBsaXN0cmV2ZXJzZWl0ZXJhdG9yIChsaXN0KQotICAgICAgICBjaGVjayhyZXZlcnNlZChbXSksIHNpemUoJ2xQJykpCisgICAgICAgIGNoZWNrKHJldmVyc2VkKFtdKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBsb25nCiAgICAgICAgIGNoZWNrKDAsIHZzaXplKCcnKSkKICAgICAgICAgY2hlY2soMSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCkBAIC03MzAsOSArNzc4LDkgQEAKICAgICAgICAgY2hlY2soaW50KFB5TG9uZ19CQVNFKioyLTEpLCB2c2l6ZSgnJykgKyAyKnNlbGYubG9uZ2RpZ2l0KQogICAgICAgICBjaGVjayhpbnQoUHlMb25nX0JBU0UqKjIpLCB2c2l6ZSgnJykgKyAzKnNlbGYubG9uZ2RpZ2l0KQogICAgICAgICAjIG1lbW9yeXZpZXcKLSAgICAgICAgY2hlY2sobWVtb3J5dmlldyhiJycpLCBzaXplKCdQUDJQMmk3UCcpKQorICAgICAgICBjaGVjayhtZW1vcnl2aWV3KGInJyksIHNpemUoJ1BuaW4gMlAybjJpNVAgM2NQbicpKQogICAgICAgICAjIG1vZHVsZQotICAgICAgICBjaGVjayh1bml0dGVzdCwgc2l6ZSgnM1AnKSkKKyAgICAgICAgY2hlY2sodW5pdHRlc3QsIHNpemUoJ1BuUCcpKQogICAgICAgICAjIE5vbmUKICAgICAgICAgY2hlY2soTm9uZSwgc2l6ZSgnJykpCiAgICAgICAgICMgTm90SW1wbGVtZW50ZWRUeXBlCkBAIC03NTEsNyArNzk5LDcgQEAKICAgICAgICAgIyByYW5nZWl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIocmFuZ2UoMSkpLCBzaXplKCc0bCcpKQogICAgICAgICAjIHJldmVyc2UKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ25QJykpCiAgICAgICAgICMgcmFuZ2UKICAgICAgICAgY2hlY2socmFuZ2UoMSksIHNpemUoJzRQJykpCiAgICAgICAgIGNoZWNrKHJhbmdlKDY2MDAwKSwgc2l6ZSgnNFAnKSkKQEAgLTc1OSw3ICs4MDcsNyBAQAogICAgICAgICAjIGZyb3plbnNldAogICAgICAgICBQeVNldF9NSU5TSVpFID0gOAogICAgICAgICBzYW1wbGVzID0gW1tdLCByYW5nZSgxMCksIHJhbmdlKDUwKV0KLSAgICAgICAgcyA9IHNpemUoJzNQMlAnICsgUHlTZXRfTUlOU0laRSonUFAnICsgJ1BQJykKKyAgICAgICAgcyA9IHNpemUoJzNuMlAnICsgUHlTZXRfTUlOU0laRSonblAnICsgJ25QJykKICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgogICAgICAgICAgICAgbWludXNlZCA9IGxlbihzYW1wbGUpCiAgICAgICAgICAgICBpZiBtaW51c2VkID09IDA6IHRtcCA9IDEKQEAgLTc3MywxMCArODIxLDEwIEBACiAgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ2xQJykpCi0gICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnbFAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCduUCcpKQorICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ25QJykpCiAgICAgICAgICMgc2V0aXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcihzZXQoKSksIHNpemUoJ1AzUCcpKQorICAgICAgICBjaGVjayhpdGVyKHNldCgpKSwgc2l6ZSgnUDNuJykpCiAgICAgICAgICMgc2xpY2UKICAgICAgICAgY2hlY2soc2xpY2UoMCksIHNpemUoJzNQJykpCiAgICAgICAgICMgc3VwZXIKQEAgLTc4NSwyOCArODMzLDU2IEBACiAgICAgICAgIGNoZWNrKCgpLCB2c2l6ZSgnJykpCiAgICAgICAgIGNoZWNrKCgxLDIsMyksIHZzaXplKCcnKSArIDMqc2VsZi5QKQogICAgICAgICAjIHR5cGUKLSAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCi0gICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcykKLSAgICAgICAgcyA9IHZzaXplKCdQMlAxNVBsNFBQOVBQMTFQSScpICsgc3RydWN0LmNhbGNzaXplKCcxNlBpMTdQIDNQIDEwUCAyUCAyUCcpCisgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAorICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykKICAgICAgICAgY2hlY2soaW50LCBzKQorICAgICAgICAjIChQeVR5cGVPYmplY3QgKyBQeU51bWJlck1ldGhvZHMgKyBQeU1hcHBpbmdNZXRob2RzICsKKyAgICAgICAgIyAgUHlTZXF1ZW5jZU1ldGhvZHMgKyBQeUJ1ZmZlclByb2NzICsgNFApCisgICAgICAgIHMgPSB2c2l6ZSgnUDJuMTVQbDRQbjlQbjExUEknKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDEwUCAyUCA0UCcpCisgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKKyAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQorICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cworICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQogICAgICAgICAjIHVuaWNvZGUKLSAgICAgICAgdXNpemUgPSBsZW4oJ1wwJy5lbmNvZGUoJ3VuaWNvZGUtaW50ZXJuYWwnKSkKLSAgICAgICAgc2FtcGxlcyA9IFsnJywgJzEnKjEwMF0KLSAgICAgICAgIyB3ZSBuZWVkIHRvIHRlc3QgZm9yIGJvdGggc2l6ZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpZiB0aGUgc3RyaW5nCi0gICAgICAgICMgaGFzIGJlZW4gY2FjaGVkCisgICAgICAgICMgZWFjaCB0dXBsZSBjb250YWlucyBhIHN0cmluZyBhbmQgaXRzIGV4cGVjdGVkIGNoYXJhY3RlciBzaXplCisgICAgICAgICMgZG9uJ3QgcHV0IGFueSBzdGF0aWMgc3RyaW5ncyBoZXJlLCBhcyB0aGV5IG1heSBjb250YWluCisgICAgICAgICMgd2NoYXJfdCBvciBVVEYtOCByZXByZXNlbnRhdGlvbnMKKyAgICAgICAgc2FtcGxlcyA9IFsnMScqMTAwLCAnXHhmZicqNTAsCisgICAgICAgICAgICAgICAgICAgJ1x1MDEwMCcqNDAsICdcdWZmZmYnKjEwMCwKKyAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDAwMCcqMzAsICdcVTAwMTBmZmZmJyoxMDBdCisgICAgICAgIGFzY2lpZmllbGRzID0gIm5uaVAiCisgICAgICAgIGNvbXBhY3RmaWVsZHMgPSBhc2NpaWZpZWxkcyArICJuUG4iCisgICAgICAgIHVuaWNvZGVmaWVsZHMgPSBjb21wYWN0ZmllbGRzICsgIlAiCiAgICAgICAgIGZvciBzIGluIHNhbXBsZXM6Ci0gICAgICAgICAgICBiYXNpY3NpemUgPSAgc2l6ZSgnUFBQaVAnKSArIHVzaXplICogKGxlbihzKSArIDEpCi0gICAgICAgICAgICBjaGVjayhzLCBiYXNpY3NpemUpCisgICAgICAgICAgICBtYXhjaGFyID0gb3JkKG1heChzKSkKKyAgICAgICAgICAgIGlmIG1heGNoYXIgPCAxMjg6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoYXNjaWlmaWVsZHMpICsgbGVuKHMpICsgMQorICAgICAgICAgICAgZWxpZiBtYXhjaGFyIDwgMjU2OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGNvbXBhY3RmaWVsZHMpICsgbGVuKHMpICsgMQorICAgICAgICAgICAgZWxpZiBtYXhjaGFyIDwgNjU1MzY6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoY29tcGFjdGZpZWxkcykgKyAyKihsZW4ocykgKyAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBMID0gc2l6ZShjb21wYWN0ZmllbGRzKSArIDQqKGxlbihzKSArIDEpCisgICAgICAgICAgICBjaGVjayhzLCBMKQorICAgICAgICAjIHZlcmlmeSB0aGF0IHRoZSBVVEYtOCBzaXplIGlzIGFjY291bnRlZCBmb3IKKyAgICAgICAgcyA9IGNocigweDQwMDApICAgIyA0IGJ5dGVzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbgorICAgICAgICBjaGVjayhzLCBzaXplKGNvbXBhY3RmaWVsZHMpICsgNCkKKyAgICAgICAgIyBjb21waWxlKCkgd2lsbCB0cmlnZ2VyIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBVVEYtOAorICAgICAgICAjIHJlcHJlc2VudGF0aW9uIGFzIGEgc2lkZSBlZmZlY3QKKyAgICAgICAgY29tcGlsZShzLCAiPHN0ZGluPiIsICJldmFsIikKKyAgICAgICAgY2hlY2socywgc2l6ZShjb21wYWN0ZmllbGRzKSArIDQgKyA0KQorICAgICAgICAjIFRPRE86IGFkZCBjaGVjayB0aGF0IGZvcmNlcyB0aGUgcHJlc2VuY2Ugb2Ygd2NoYXJfdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIFRPRE86IGFkZCBjaGVjayB0aGF0IGZvcmNlcyBsYXlvdXQgb2YgdW5pY29kZWZpZWxkcwogICAgICAgICAjIHdlYWtyZWYKICAgICAgICAgaW1wb3J0IHdlYWtyZWYKLSAgICAgICAgY2hlY2sod2Vha3JlZi5yZWYoaW50KSwgc2l6ZSgnMlBsMlAnKSkKKyAgICAgICAgY2hlY2sod2Vha3JlZi5yZWYoaW50KSwgc2l6ZSgnMlBuMlAnKSkKICAgICAgICAgIyB3ZWFrcHJveHkKICAgICAgICAgIyBYWFgKICAgICAgICAgIyB3ZWFrY2FsbGFibGVwcm94eQotICAgICAgICBjaGVjayh3ZWFrcmVmLnByb3h5KGludCksIHNpemUoJzJQbDJQJykpCisgICAgICAgIGNoZWNrKHdlYWtyZWYucHJveHkoaW50KSwgc2l6ZSgnMlBuMlAnKSkKIAogICAgIGRlZiB0ZXN0X3B5dGhvbnR5cGVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGFsbCB0eXBlcyBkZWZpbmVkIGluIFB5dGhvbi8KQEAgLTgxNSwxNiArODkxLDEzIEBACiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgIyBfYXN0LkFTVAogICAgICAgICBpbXBvcnQgX2FzdAotICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCcnKSkKLSAgICAgICAgIyBpbXAuTnVsbEltcG9ydGVyCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgY2hlY2soaW1wLk51bGxJbXBvcnRlcihzZWxmLmZpbGUubmFtZSksIHNpemUoJycpKQorICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCdQJykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQogICAgICAgICAgICAgIyB0cmFjZWJhY2sKLSAgICAgICAgICAgIGlmIHRiICE9IE5vbmU6CisgICAgICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBjaGVjayh0Yiwgc2l6ZSgnMlAyaScpKQogICAgICAgICAjIHN5bXRhYmxlIGVudHJ5CiAgICAgICAgICMgWFhYCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IGJhM2JjMmUuLjYzYWUxYjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0yNTEsNiArMjUxLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQogICAgICAgICBnYy5kaXNhYmxlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYudXNpbmdfZ2M6CkBAIC0zODksNiArMzkwLDkgQEAKIAogCiBjbGFzcyBSYWlzaW5nVHJhY2VGdW5jVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisKICAgICBkZWYgdHJhY2Uoc2VsZiwgZnJhbWUsIGV2ZW50LCBhcmcpOgogICAgICAgICAiIiJBIHRyYWNlIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpbiByZXNwb25zZSB0byBhCiAgICAgICAgIHNwZWNpZmljIHRyYWNlIGV2ZW50LiIiIgpAQCAtNjk2LDYgKzcwMCwxMCBAQAogCiAKIGNsYXNzIEp1bXBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKKyAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisKICAgICBkZWYgY29tcGFyZV9qdW1wX291dHB1dChzZWxmLCBleHBlY3RlZCwgcmVjZWl2ZWQpOgogICAgICAgICBpZiByZWNlaXZlZCAhPSBleHBlY3RlZDoKICAgICAgICAgICAgIHNlbGYuZmFpbCggIk91dHB1dHMgZG9uJ3QgbWF0Y2g6XG4iICsKQEAgLTc0Nyw2ICs3NTUsOCBAQAogICAgIGRlZiB0ZXN0XzE4X25vX2p1bXBfdG9fbm9uX2ludGVnZXJzKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90ZXN0KG5vX2p1bXBfdG9fbm9uX2ludGVnZXJzKQogICAgIGRlZiB0ZXN0XzE5X25vX2p1bXBfd2l0aG91dF90cmFjZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBNdXN0IHNldCBzeXMuc2V0dHJhY2UoTm9uZSkgaW4gc2V0VXAoKSwgZWxzZSBjb25kaXRpb24gaXMgbm90CisgICAgICAgICMgdHJpZ2dlcmVkLgogICAgICAgICBub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oKQogICAgIGRlZiB0ZXN0X2p1bXBfYWNyb3NzX3dpdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IGFhYmI2ZmEuLjkyMTkzNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0xLDExICsxLDkgQEAKLSIiIlRlc3RzIGZvciBzeXNjb25maWcuIiIiCi0KIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHNodXRpbAotZnJvbSBjb3B5IGltcG9ydCBjb3B5LCBkZWVwY29weQorZnJvbSBjb3B5IGltcG9ydCBjb3B5CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRfc3Rkb3V0LCBza2lwX3VubGVzc19zeW1saW5rKQpAQCAtMTUsMTEgKzEzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGdldF9wYXRoLCBnZXRfcGF0aF9uYW1lcywgX0lOU1RBTExfU0NIRU1FUywKICAgICAgICAgICAgICAgICAgICAgICAgX2dldF9kZWZhdWx0X3NjaGVtZSwgX2V4cGFuZF92YXJzLAogICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2NoZW1lX25hbWVzLCBnZXRfY29uZmlnX3ZhciwgX21haW4pCitpbXBvcnQgX29zeF9zdXBwb3J0CiAKIGNsYXNzIFRlc3RTeXNDb25maWcodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAiIiJNYWtlIGEgY29weSBvZiBzeXMucGF0aCIiIgogICAgICAgICBzdXBlcihUZXN0U3lzQ29uZmlnLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIHNlbGYuc3lzX3BhdGggPSBzeXMucGF0aFs6XQogICAgICAgICAjIHBhdGNoaW5nIG9zLnVuYW1lCkBAIC0yOCw3ICsyNiw3IEBACiAgICAgICAgICAgICBzZWxmLl91bmFtZSA9IG9zLnVuYW1lKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudW5hbWUgPSBOb25lCi0gICAgICAgICAgICBzZWxmLl91bmFtZSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX3NldF91bmFtZSgoJycsKSo1KQogICAgICAgICBvcy51bmFtZSA9IHNlbGYuX2dldF91bmFtZQogICAgICAgICAjIHNhdmluZyB0aGUgZW52aXJvbm1lbnQKICAgICAgICAgc2VsZi5uYW1lID0gb3MubmFtZQpAQCAtMzgsMTEgKzM2LDE2IEBACiAgICAgICAgIHNlbGYuam9pbiA9IG9zLnBhdGguam9pbgogICAgICAgICBzZWxmLmlzYWJzID0gb3MucGF0aC5pc2FicwogICAgICAgICBzZWxmLnNwbGl0ZHJpdmUgPSBvcy5wYXRoLnNwbGl0ZHJpdmUKLSAgICAgICAgc2VsZi5fY29uZmlnX3ZhcnMgPSBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCi0gICAgICAgIHNlbGYub2xkX2Vudmlyb24gPSBkZWVwY29weShvcy5lbnZpcm9uKQorICAgICAgICBzZWxmLl9jb25maWdfdmFycyA9IHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsIGNvcHkoc3lzY29uZmlnLl9DT05GSUdfVkFSUykKKyAgICAgICAgc2VsZi5fYWRkZWRfZW52dmFycyA9IFtdCisgICAgICAgIHNlbGYuX2NoYW5nZWRfZW52dmFycyA9IFtdCisgICAgICAgIGZvciB2YXIgaW4gKCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnLCAnUEFUSCcpOgorICAgICAgICAgICAgaWYgdmFyIGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlZF9lbnZ2YXJzLmFwcGVuZCgodmFyLCBvcy5lbnZpcm9uW3Zhcl0pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRlZF9lbnZ2YXJzLmFwcGVuZCh2YXIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICIiIlJlc3RvcmUgc3lzLnBhdGgiIiIKICAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLnN5c19wYXRoCiAgICAgICAgIHNlbGYuX2NsZWFudXBfdGVzdGZuKCkKICAgICAgICAgaWYgc2VsZi51bmFtZSBpcyBub3QgTm9uZToKQEAgLTU2LDE5ICs1OSwxOCBAQAogICAgICAgICBvcy5wYXRoLmpvaW4gPSBzZWxmLmpvaW4KICAgICAgICAgb3MucGF0aC5pc2FicyA9IHNlbGYuaXNhYnMKICAgICAgICAgb3MucGF0aC5zcGxpdGRyaXZlID0gc2VsZi5zcGxpdGRyaXZlCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBjb3B5KHNlbGYuX2NvbmZpZ192YXJzKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLm9sZF9lbnZpcm9uLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBvcy5lbnZpcm9uLmdldChrZXkpICE9IHZhbHVlOgotICAgICAgICAgICAgICAgIG9zLmVudmlyb25ba2V5XSA9IHZhbHVlCi0KLSAgICAgICAgZm9yIGtleSBpbiBsaXN0KG9zLmVudmlyb24ua2V5cygpKToKLSAgICAgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5vbGRfZW52aXJvbjoKLSAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvbltrZXldCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzZWxmLl9jb25maWdfdmFyc1swXQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2VsZi5fY29uZmlnX3ZhcnNbMV0pCisgICAgICAgIGZvciB2YXIsIHZhbHVlIGluIHNlbGYuX2NoYW5nZWRfZW52dmFyczoKKyAgICAgICAgICAgIG9zLmVudmlyb25bdmFyXSA9IHZhbHVlCisgICAgICAgIGZvciB2YXIgaW4gc2VsZi5fYWRkZWRfZW52dmFyczoKKyAgICAgICAgICAgIG9zLmVudmlyb24ucG9wKHZhciwgTm9uZSkKIAogICAgICAgICBzdXBlcihUZXN0U3lzQ29uZmlnLCBzZWxmKS50ZWFyRG93bigpCiAKICAgICBkZWYgX3NldF91bmFtZShzZWxmLCB1bmFtZSk6Ci0gICAgICAgIHNlbGYuX3VuYW1lID0gdW5hbWUKKyAgICAgICAgc2VsZi5fdW5hbWUgPSBvcy51bmFtZV9yZXN1bHQodW5hbWUpCiAKICAgICBkZWYgX2dldF91bmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3VuYW1lCkBAIC04NywyMSArODksMTkgQEAKICAgICAgICAgc2NoZW1lID0gZ2V0X3BhdGhzKCkKICAgICAgICAgZGVmYXVsdF9zY2hlbWUgPSBfZ2V0X2RlZmF1bHRfc2NoZW1lKCkKICAgICAgICAgd2FudGVkID0gX2V4cGFuZF92YXJzKGRlZmF1bHRfc2NoZW1lLCBOb25lKQotICAgICAgICB3YW50ZWQgPSBsaXN0KHdhbnRlZC5pdGVtcygpKQotICAgICAgICB3YW50ZWQuc29ydCgpCi0gICAgICAgIHNjaGVtZSA9IGxpc3Qoc2NoZW1lLml0ZW1zKCkpCi0gICAgICAgIHNjaGVtZS5zb3J0KCkKKyAgICAgICAgd2FudGVkID0gc29ydGVkKHdhbnRlZC5pdGVtcygpKQorICAgICAgICBzY2hlbWUgPSBzb3J0ZWQoc2NoZW1lLml0ZW1zKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NoZW1lLCB3YW50ZWQpCiAKICAgICBkZWYgdGVzdF9nZXRfcGF0aChzZWxmKToKLSAgICAgICAgIyB4eHggbWFrZSByZWFsIHRlc3RzIGhlcmUKKyAgICAgICAgIyBYWFggbWFrZSByZWFsIHRlc3RzIGhlcmUKICAgICAgICAgZm9yIHNjaGVtZSBpbiBfSU5TVEFMTF9TQ0hFTUVTOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdOgogICAgICAgICAgICAgICAgIHJlcyA9IGdldF9wYXRoKG5hbWUsIHNjaGVtZSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb25maWdfdmFycyhzZWxmKToKICAgICAgICAgY3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjdmFycywgZGljdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjdmFycywgZGljdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN2YXJzKQogCiAgICAgZGVmIHRlc3RfZ2V0X3BsYXRmb3JtKHNlbGYpOgpAQCAtMTM1LDggKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgKCdEYXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMS4xOiAnCiAgICAgICAgICAgICAgICAgICAgICdXZWQgT2N0IDEwIDE4OjIzOjI4IFBEVCAyMDA3OyAnCiAgICAgICAgICAgICAgICAgICAgICdyb290OnhudS03OTIuMjUuMjB+MS9SRUxFQVNFX0kzODYnKSwgJ1Bvd2VyUEMnKSkKLQotCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjMnCiAKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctZm5vLXN0cmljdC1hbGlhc2luZyAtRE5ERUJVRyAtZyAnCkBAIC0xNTEsMTIgKzE1MCwxMSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBtYXhpbnQKIAotCiAgICAgICAgIHNlbGYuX3NldF91bmFtZSgoJ0RhcndpbicsICdtYWN6aWFkZScsICc4LjExLjEnLAogICAgICAgICAgICAgICAgICAgICgnRGFyd2luIEtlcm5lbCBWZXJzaW9uIDguMTEuMTogJwogICAgICAgICAgICAgICAgICAgICAnV2VkIE9jdCAxMCAxODoyMzoyOCBQRFQgMjAwNzsgJwogICAgICAgICAgICAgICAgICAgICAncm9vdDp4bnUtNzkyLjI1LjIwfjEvUkVMRUFTRV9JMzg2JyksICdpMzg2JykpCi0gICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJworICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJwogCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWZuby1zdHJpY3QtYWxpYXNpbmcgLUROREVCVUcgLWcgJwpAQCAtMTcxLDYgKzE2OSw3IEBACiAgICAgICAgICAgICBzeXMubWF4c2l6ZSA9IG1heGludAogCiAgICAgICAgICMgbWFjYm9vayB3aXRoIGZhdCBiaW5hcmllcyAoZmF0LCB1bml2ZXJzYWwgb3IgZmF0NjQpCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjQnCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCkBAIC0xNzksNiArMTc4LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0JykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpAQCAtMTg2LDE4ICsxODYsMjEgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtaW50ZWwnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQzJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggcHBjNjQgLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtdW5pdmVyc2FsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYzY0IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTIwNiwxMiArMjA5LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQ2NCcpCiAKICAgICAgICAgZm9yIGFyY2ggaW4gKCdwcGMnLCAnaTM4NicsICd4ODZfNjQnLCAncHBjNjQnKToKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggJXMgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMyclKGFyY2gsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJyAlIGFyY2gpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC0lcyclKGFyY2gsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC0lcycgJSBhcmNoKQogCiAgICAgICAgICMgbGludXggZGViaWFuIHNhcmdlCiAgICAgICAgIG9zLm5hbWUgPSAncG9zaXgnCkBAIC0yMzksOCArMjQzLDggQEAKICAgICAgICAgIyBPbiBXaW5kb3dzLCB0aGUgRVhFIG5lZWRzIHRvIGtub3cgd2hlcmUgcHl0aG9uWFkuZGxsIGlzIGF0IHNvIHdlIGhhdmUKICAgICAgICAgIyB0byBhZGQgdGhlIGRpcmVjdG9yeSB0byB0aGUgcGF0aC4KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWyJQYXRoIl0gPSAie307e30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCBvcy5lbnZpcm9uWyJQYXRoIl0pCisgICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSAie307e30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCBvcy5lbnZpcm9uWyJQQVRIIl0pCiAKICAgICAgICAgIyBJc3N1ZSA3ODgwCiAgICAgICAgIGRlZiBnZXQocHl0aG9uKToKQEAgLTI2NCwxMiArMjY4LDE3IEBACiAgICAgICAgICMgdGhlIGdsb2JhbCBzY2hlbWUgbWlycm9ycyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBwcmVmaXggYW5kCiAgICAgICAgICMgZXhlYy1wcmVmaXggYnV0IG5vdCB0aGUgdXNlciBzY2hlbWUsIHNvIHdlIGhhdmUgdG8gYWRhcHQgdGhlIHBhdGhzCiAgICAgICAgICMgYmVmb3JlIGNvbXBhcmluZyAoaXNzdWUgIzkxMDApCi0gICAgICAgIGFkYXB0ID0gc3lzLnByZWZpeCAhPSBzeXMuZXhlY19wcmVmaXgKKyAgICAgICAgYWRhcHQgPSBzeXMuYmFzZV9wcmVmaXggIT0gc3lzLmJhc2VfZXhlY19wcmVmaXgKICAgICAgICAgZm9yIG5hbWUgaW4gKCdzdGRsaWInLCAncGxhdHN0ZGxpYicsICdwdXJlbGliJywgJ3BsYXRsaWInKToKICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2V0X3BhdGgobmFtZSwgJ3Bvc2l4X3ByZWZpeCcpCiAgICAgICAgICAgICBpZiBhZGFwdDoKLSAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMucHJlZml4KQotICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2xvYmFsX3BhdGgucmVwbGFjZShzeXMuZXhlY19wcmVmaXgsIHN5cy5iYXNlX3ByZWZpeCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLmJhc2VfcHJlZml4KQorICAgICAgICAgICAgZWxpZiBzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeDoKKyAgICAgICAgICAgICAgICAjIHZpcnR1YWwgZW52aXJvbm1lbnQ/IExpa2V3aXNlLCB3ZSBoYXZlIHRvIGFkYXB0IHRoZSBwYXRocworICAgICAgICAgICAgICAgICMgYmVmb3JlIGNvbXBhcmluZworICAgICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2xvYmFsX3BhdGgucmVwbGFjZShzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCisgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZShzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCiAgICAgICAgICAgICB1c2VyX3BhdGggPSBnZXRfcGF0aChuYW1lLCAncG9zaXhfdXNlcicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXJfcGF0aCwgZ2xvYmFsX3BhdGgucmVwbGFjZShiYXNlLCB1c2VyLCAxKSkKIApAQCAtMjg2LDcgKzI5NSw2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRJbihsZGZsYWdzLCBsZHNoYXJlZCkKIAotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iLCAidGVzdCBvbmx5IHJlbGV2YW50IG9uIE1hY09TWCIpCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1faW5fc3VicHJvY2VzcyhzZWxmKToKICAgICAgICAgbXlfcGxhdGZvcm0gPSBzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkKQEAgLTMxMiwyOCArMzIwLDU4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X3BsYXRmb3JtLCB0ZXN0X3BsYXRmb3JtKQogCi0KICAgICAgICAgIyBUZXN0IHdpdGggTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGluIHRoZSBlbnZpcm9ubWVudCwgYW5kCiAgICAgICAgICMgdXNpbmcgYSB2YWx1ZSB0aGF0IGlzIHVubGlrZWx5IHRvIGJlIHRoZSBkZWZhdWx0IG9uZS4KICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwgJy1jJywKLSAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgIHN0ZGVycj1vcGVuKCcvZGV2L251bGwnKSwKLSAgICAgICAgICAgIGVudj1lbnYpCi0gICAgICAgIHRlc3RfcGxhdGZvcm0gPSBwLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQotICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RhdHVzID0gcC53YWl0KCkKKyAgICAgICAgd2l0aCBvcGVuKCcvZGV2L251bGwnKSBhcyBkZXZfbnVsbDoKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKKyAgICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzY29uZmlnOyBwcmludChzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkpJywKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgc3RkZXJyPWRldl9udWxsLAorICAgICAgICAgICAgICAgIGVudj1lbnYpCisgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIHRlc3RfcGxhdGZvcm0gPSB0ZXN0X3BsYXRmb3JtLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgc3RhdHVzID0gcC53YWl0KCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKworICAgIGRlZiB0ZXN0X3NyY2RpcihzZWxmKToKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoc3JjZGlyKSwgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzcmNkaXIpLCBzcmNkaXIpCisKKyAgICAgICAgaWYgc3lzY29uZmlnLl9QWVRIT05fQlVJTEQ6CisgICAgICAgICAgICAjIFRoZSBweXRob24gZXhlY3V0YWJsZSBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHNvIHNyY2RpcgorICAgICAgICAgICAgIyBzaG91bGQgYmUgYSBmdWxsIHNvdXJjZSBjaGVja291dC4KKyAgICAgICAgICAgIFB5dGhvbl9oID0gb3MucGF0aC5qb2luKHNyY2RpciwgJ0luY2x1ZGUnLCAnUHl0aG9uLmgnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKFB5dGhvbl9oKSwgUHl0aG9uX2gpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzY29uZmlnLl9pc19weXRob25fc291cmNlX2RpcihzcmNkaXIpKQorICAgICAgICBlbGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5kaXJuYW1lKHN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RpcikKKworICAgIGRlZiB0ZXN0X3NyY2Rpcl9pbmRlcGVuZGVudF9vZl9jd2Qoc2VsZik6CisgICAgICAgICMgc3JjZGlyIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoJy4uJykKKyAgICAgICAgICAgIHNyY2RpcjIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZGlyLCBzcmNkaXIyKQogCiAKIGNsYXNzIE1ha2VmaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCiAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgV2luZG93cyBjb21wYXRpYmxlJykKICAgICBkZWYgdGVzdF9nZXRfbWFrZWZpbGVfZmlsZW5hbWUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKaW5kZXggYTUzMTgxZS4uYjIyNGJmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQpAQCAtMjEsNiArMjEsMTAgQEAKICAgICBpbXBvcnQgYnoyCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgYnoyID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBsem1hCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbHptYSA9IE5vbmUKIAogZGVmIG1kNXN1bShkYXRhKToKICAgICByZXR1cm4gbWQ1KGRhdGEpLmhleGRpZ2VzdCgpCkBAIC0yOSw2ICszMyw3IEBACiB0YXJuYW1lID0gc3VwcG9ydC5maW5kZmlsZSgidGVzdHRhci50YXIiKQogZ3ppcG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLmd6IikKIGJ6Mm5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLmJ6MiIpCit4em5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLnh6IikKIHRtcG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRtcC50YXIiKQogCiBtZDVfcmVndHlwZSA9ICI2NWY0NzdjODE4YWQ5ZTE1ZjdmZWFiMGM2ZDM3NzQyZiIKQEAgLTUxLDEzICs1NiwxMCBAQAogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9yZWd1bGFyX2ZpbGUoc2VsZik6CiAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhci5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQotICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CiAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgobGVuKGRhdGEpLCBtZDVzdW0oZGF0YSkpID09ICh0YXJpbmZvLnNpemUsIG1kNV9yZWd0eXBlKSwKICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXIgZmlsZSBleHRyYWN0aW9uIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVhZGxpbmVzKHNlbGYpOgogICAgICAgICBzZWxmLnRhci5leHRyYWN0KCJ1c3Rhci9yZWd0eXBlIiwgVEVNUERJUikKQEAgLTY1LDggKzY3LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihURU1QRElSLCAidXN0YXIvcmVndHlwZSIpLCAiciIpIGFzIGZvYmoxOgogICAgICAgICAgICAgbGluZXMxID0gZm9iajEucmVhZGxpbmVzKCkKIAotICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CiAgICAgICAgICAgICBmb2JqMiA9IGlvLlRleHRJT1dyYXBwZXIoZm9iaikKICAgICAgICAgICAgIGxpbmVzMiA9IGZvYmoyLnJlYWRsaW5lcygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMxID09IGxpbmVzMiwKQEAgLTc2LDIxICs3NywxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzMls4M10gPT0KICAgICAgICAgICAgICAgICAgICAgIkkgd2lsbCBnbGFkbHkgYWRtaXQgdGhhdCBQeXRob24gaXMgbm90IHRoZSBmYXN0ZXN0IHJ1bm5pbmcgc2NyaXB0aW5nIGxhbmd1YWdlLlxuIiwKICAgICAgICAgICAgICAgICAgICAgImZpbGVvYmoucmVhZGxpbmVzKCkgZmFpbGVkIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9pdGVyKHNlbGYpOgogICAgICAgICBzZWxmLnRhci5leHRyYWN0KCJ1c3Rhci9yZWd0eXBlIiwgVEVNUERJUikKICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyLmdldG1lbWJlcigidXN0YXIvcmVndHlwZSIpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInJVIikgYXMgZm9iajE6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInIiKSBhcyBmb2JqMToKICAgICAgICAgICAgIGxpbmVzMSA9IGZvYmoxLnJlYWRsaW5lcygpCi0gICAgICAgIGZvYmoyID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmoyOgogICAgICAgICAgICAgbGluZXMyID0gbGlzdChpby5UZXh0SU9XcmFwcGVyKGZvYmoyKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lczEgPT0gbGluZXMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlb2JqLl9faXRlcl9fKCkgZmFpbGVkIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmoyLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfc2VlayhzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCkBAIC0xNDIsMTcgKzEzOCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgInJlYWQoKSBhZnRlciByZWFkbGluZSgpIGZhaWxlZCIpCiAgICAgICAgIGZvYmouY2xvc2UoKQogCisgICAgZGVmIHRlc3RfZmlsZW9ial90ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKCJ1c3Rhci9yZWd0eXBlIikgYXMgZm9iajoKKyAgICAgICAgICAgIGZvYmogPSBpby5UZXh0SU9XcmFwcGVyKGZvYmopCisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkuZW5jb2RlKCJpc284ODU5LTEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZDVzdW0oZGF0YSksIG1kNV9yZWd0eXBlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvYmouc2VlaygxMDApCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTM4MTU6IHNlZWsoKSBjb21wbGFpbmVkIGFib3V0IGEgbWlzc2luZworICAgICAgICAgICAgICAgICMgZmx1c2goKSBtZXRob2QuCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzZWVraW5nIGZhaWxlZCBpbiB0ZXh0IG1vZGUiKQorCiAgICAgIyBUZXN0IGlmIHN5bWJvbGljIGFuZCBoYXJkIGxpbmtzIGFyZSByZXNvbHZlZCBieSBleHRyYWN0ZmlsZSgpLiAgVGhlCiAgICAgIyB0ZXN0IGxpbmsgbWVtYmVycyBlYWNoIHBvaW50IHRvIGEgcmVndWxhciBtZW1iZXIgd2hvc2UgZGF0YSBpcwogICAgICMgc3VwcG9zZWQgdG8gYmUgZXhwb3J0ZWQuCiAgICAgZGVmIF90ZXN0X2ZpbGVvYmpfbGluayhzZWxmLCBsbmt0eXBlLCByZWd0eXBlKToKLSAgICAgICAgYSA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKGxua3R5cGUpCi0gICAgICAgIGIgPSBzZWxmLnRhci5leHRyYWN0ZmlsZShyZWd0eXBlKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi50YXIuZXh0cmFjdGZpbGUobG5rdHlwZSkgYXMgYSwgc2VsZi50YXIuZXh0cmFjdGZpbGUocmVndHlwZSkgYXMgYjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5uYW1lLCBiLm5hbWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBhLmNsb3NlKCkKLSAgICAgICAgICAgIGIuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9saW5rMShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9maWxlb2JqX2xpbmsoInVzdGFyL2xua3R5cGUiLCAidXN0YXIvcmVndHlwZSIpCkBAIC0yMDQsMTMgKzIwNywxNSBAQAogICAgICAgICAgICAgX29wZW4gPSBnemlwLkd6aXBGaWxlCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6YnoyIik6CiAgICAgICAgICAgICBfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6eHoiKToKKyAgICAgICAgICAgIF9vcGVuID0gbHptYS5MWk1BRmlsZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX29wZW4gPSBvcGVuCisgICAgICAgICAgICBfb3BlbiA9IGlvLkZpbGVJTwogCiAgICAgICAgIGZvciBjaGFyIGluIChiJ1wwJywgYidhJyk6CiAgICAgICAgICAgICAjIFRlc3QgaWYgRU9GSGVhZGVyRXJyb3IgKCdcMCcpIGFuZCBJbnZhbGlkSGVhZGVyRXJyb3IgKCdhJykKICAgICAgICAgICAgICMgYXJlIGlnbm9yZWQgY29ycmVjdGx5LgotICAgICAgICAgICAgd2l0aCBfb3Blbih0bXBuYW1lLCAid2IiKSBhcyBmb2JqOgorICAgICAgICAgICAgd2l0aCBfb3Blbih0bXBuYW1lLCAidyIpIGFzIGZvYmo6CiAgICAgICAgICAgICAgICAgZm9iai53cml0ZShjaGFyICogMTAyNCkKICAgICAgICAgICAgICAgICBmb2JqLndyaXRlKHRhcmZpbGUuVGFySW5mbygiZm9vIikudG9idWYoKSkKIApAQCAtMjI1LDYgKzIzMCwxMCBAQAogY2xhc3MgTWlzY1JlYWRUZXN0KENvbW1vblJlYWRUZXN0KToKIAogICAgIGRlZiB0ZXN0X25vX25hbWVfYXJndW1lbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYubW9kZS5lbmRzd2l0aCgoImJ6MiIsICJ4eiIpKToKKyAgICAgICAgICAgICMgQloyRmlsZSBhbmQgTFpNQUZpbGUgaGF2ZSBubyBuYW1lIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIG5hbWUgYXR0cmlidXRlIikKKwogICAgICAgICB3aXRoIG9wZW4oc2VsZi50YXJuYW1lLCAicmIiKSBhcyBmb2JqOgogICAgICAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKGZpbGVvYmo9Zm9iaiwgbW9kZT1zZWxmLm1vZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhci5uYW1lLCBvcy5wYXRoLmFic3BhdGgoZm9iai5uYW1lKSkKQEAgLTI1NCw5ICsyNjMsOCBAQAogICAgICAgICAgICAgdCA9IHRhci5uZXh0KCkKICAgICAgICAgICAgIG5hbWUgPSB0Lm5hbWUKICAgICAgICAgICAgIG9mZnNldCA9IHQub2Zmc2V0Ci0gICAgICAgICAgICBmID0gdGFyLmV4dHJhY3RmaWxlKHQpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCB0YXIuZXh0cmFjdGZpbGUodCkgYXMgZjoKKyAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRhci5jbG9zZSgpCiAKQEAgLTI2NSwxMCArMjczLDEyIEBACiAgICAgICAgICAgICBfb3BlbiA9IGd6aXAuR3ppcEZpbGUKICAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoIjpiejIiKToKICAgICAgICAgICAgIF9vcGVuID0gYnoyLkJaMkZpbGUKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoIjp4eiIpOgorICAgICAgICAgICAgX29wZW4gPSBsem1hLkxaTUFGaWxlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBfb3BlbiA9IG9wZW4KLSAgICAgICAgZm9iaiA9IF9vcGVuKHNlbGYudGFybmFtZSwgInJiIikKLSAgICAgICAgdHJ5OgorICAgICAgICAgICAgX29wZW4gPSBpby5GaWxlSU8KKworICAgICAgICB3aXRoIF9vcGVuKHNlbGYudGFybmFtZSkgYXMgZm9iajoKICAgICAgICAgICAgIGZvYmouc2VlayhvZmZzZXQpCiAKICAgICAgICAgICAgICMgVGVzdCBpZiB0aGUgdGFyZmlsZSBzdGFydHMgd2l0aCB0aGUgc2Vjb25kIG1lbWJlci4KQEAgLTI4MSw4ICsyOTEsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXIuZXh0cmFjdGZpbGUodCkucmVhZCgpLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAic2VlayBiYWNrIGRpZCBub3Qgd29yayIpCiAgICAgICAgICAgICB0YXIuY2xvc2UoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9iai5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9mYWlsX2NvbXAoc2VsZik6CiAgICAgICAgICMgRm9yIEd6aXAgYW5kIEJ6MiBUZXN0czogZmFpbCB3aXRoIGEgUmVhZEVycm9yIG9uIGFuIHVuY29tcHJlc3NlZCBmaWxlLgpAQCAtNDE4LDI3ICs0MjYsMjYgQEAKICAgICAgICAgZm9yIHRhcmluZm8gaW4gc2VsZi50YXI6CiAgICAgICAgICAgICBpZiBub3QgdGFyaW5mby5pc3JlZygpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmb2JqLnJlYWQoNTEyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCB0YXJmaWxlLlN0cmVhbUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNpbXBsZSByZWFkLXRocm91Z2ggdXNpbmcgVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCIpCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZvYmoucmVhZCg1MTIpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCB0YXJmaWxlLlN0cmVhbUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaW1wbGUgcmVhZC10aHJvdWdoIHVzaW5nIFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQiKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICB0YXJpbmZvID0gc2VsZi50YXIubmV4dCgpICMgZ2V0ICJyZWd0eXBlIiAoY2FuJ3QgdXNlIGdldG1lbWJlcikKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChsZW4oZGF0YSksIG1kNXN1bShkYXRhKSkgPT0gKHRhcmluZm8uc2l6ZSwgbWQ1X3JlZ3R5cGUpLAogICAgICAgICAgICAgICAgICJyZWd1bGFyIGZpbGUgZXh0cmFjdGlvbiBmYWlsZWQiKQogCiAgICAgZGVmIHRlc3RfcHJvdm9rZV9zdHJlYW1fZXJyb3Ioc2VsZik6CiAgICAgICAgIHRhcmluZm9zID0gc2VsZi50YXIuZ2V0bWVtYmVycygpCi0gICAgICAgIGYgPSBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvc1swXSkgIyByZWFkIHRoZSBmaXJzdCBtZW1iZXIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5TdHJlYW1FcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm9zWzBdKSBhcyBmOiAjIHJlYWQgdGhlIGZpcnN0IG1lbWJlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5TdHJlYW1FcnJvciwgZi5yZWFkKQogCiAgICAgZGVmIHRlc3RfY29tcGFyZV9tZW1iZXJzKHNlbGYpOgogICAgICAgICB0YXIxID0gdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPSJpc284ODU5LTEiKQpAQCAtNTE2LDYgKzUyMywxOCBAQAogICAgICAgICAgICAgdGVzdGZ1bmMoYnoybmFtZSwgInJ8KiIpCiAgICAgICAgICAgICB0ZXN0ZnVuYyhiejJuYW1lLCAicnxiejIiKQogCisgICAgICAgIGlmIGx6bWE6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0YXJuYW1lLCBtb2RlPSJyOnh6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRhcm5hbWUsIG1vZGU9InJ8eHoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgeHpuYW1lLCBtb2RlPSJyOiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB4em5hbWUsIG1vZGU9InJ8IikKKworICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAiciIpCisgICAgICAgICAgICB0ZXN0ZnVuYyh4em5hbWUsICJyOioiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicjp4eiIpCisgICAgICAgICAgICB0ZXN0ZnVuYyh4em5hbWUsICJyfCoiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicnx4eiIpCisKICAgICBkZWYgdGVzdF9kZXRlY3RfZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9tb2RlcyhzZWxmLl90ZXN0ZnVuY19maWxlKQogCkBAIC03MTMsNyArNzMyLDcgQEAKICAgICAgICAgIyBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGxhdGZvcm0ga25vd3MgdGhlIHN0X2Jsb2NrcyBzdGF0IGF0dHJpYnV0ZSBhbmQKICAgICAgICAgIyB1c2VzIHN0X2Jsb2NrcyB1bml0cyBvZiA1MTIgYnl0ZXMsIGFuZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBhYmxlIHRvCiAgICAgICAgICMgc3RvcmUgaG9sZXMgaW4gZmlsZXMuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAibGludXgyIjoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4Iik6CiAgICAgICAgICAgICAjIExpbnV4IGV2aWRlbnRpYWxseSBoYXMgNTEyIGJ5dGUgc3RfYmxvY2tzIHVuaXRzLgogICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihURU1QRElSLCAic3BhcnNlLXRlc3QiKQogICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICJ3YiIpIGFzIGZvYmo6CkBAIC05MDMsNyArOTIyLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJmb28iLCAiYmFyIiwgImJheiIpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgbmFtZSkKLSAgICAgICAgICAgICAgICBvcGVuKG5hbWUsICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG5hbWUpCiAKICAgICAgICAgICAgIGV4Y2x1ZGUgPSBvcy5wYXRoLmlzZmlsZQogCkBAIC05MzAsNyArOTQ5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJmb28iLCAiYmFyIiwgImJheiIpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgbmFtZSkKLSAgICAgICAgICAgICAgICBvcGVuKG5hbWUsICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG5hbWUpCiAKICAgICAgICAgICAgIGRlZiBmaWx0ZXIodGFyaW5mbyk6CiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSh0YXJpbmZvLm5hbWUpID09ICJiYXIiOgpAQCAtOTY5LDcgKzk4OCw3IEBACiAgICAgICAgICMgYW5kIGNvbXBhcmUgdGhlIHN0b3JlZCBuYW1lIHdpdGggdGhlIG9yaWdpbmFsLgogICAgICAgICBmb28gPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgImZvbyIpCiAgICAgICAgIGlmIG5vdCBkaXI6Ci0gICAgICAgICAgICBvcGVuKGZvbywgInciKS5jbG9zZSgpCisgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKGZvbykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLm1rZGlyKGZvbykKIApAQCAtMTA4Niw2ICsxMTA1LDkgQEAKICAgICAgICAgICAgIGRhdGEgPSBkZWMuZGVjb21wcmVzcyhkYXRhKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihkZWMudW51c2VkX2RhdGEpID09IDAsCiAgICAgICAgICAgICAgICAgICAgICJmb3VuZCB0cmFpbGluZyBkYXRhIikKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoInh6Iik6CisgICAgICAgICAgICB3aXRoIGx6bWEuTFpNQUZpbGUodG1wbmFtZSkgYXMgZm9iajoKKyAgICAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdpdGggb3Blbih0bXBuYW1lLCAicmIiKSBhcyBmb2JqOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQpAQCAtMTMyOSw3ICsxMzUxLDcgQEAKICAgICAgICAgc2VsZi5fdGVzdF91bmljb2RlX2ZpbGVuYW1lKCJ1dGY3IikKIAogICAgIGRlZiB0ZXN0X3V0ZjhfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmOCIpCisgICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmLTgiKQogCiAgICAgZGVmIF90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoc2VsZiwgZW5jb2RpbmcpOgogICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4odG1wbmFtZSwgInciLCBmb3JtYXQ9c2VsZi5mb3JtYXQsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xNDA4LDcgKzE0MzAsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9wYXhfaGVhZGVyKHNlbGYpOgogICAgICAgICAjIFRlc3QgZm9yIGlzc3VlICM4NjMzLiBHTlUgdGFyIDw9IDEuMjMgY3JlYXRlcyByYXcgYmluYXJ5IGZpZWxkcwogICAgICAgICAjIHdpdGhvdXQgYSBoZHJjaGFyc2V0PUJJTkFSWSBoZWFkZXIuCi0gICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGY4IiwgInBheC9iYWQtcGF4LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAorICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmLTgiLCAicGF4L2JhZC1wYXgtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCiAgICAgICAgICAgICAgICAgKCJpc284ODU5LTEiLCAicGF4L2JhZC1wYXgtXHhlNFx4ZjZceGZjIiksKToKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpIGFzIHRhcjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDIzLDcgKzE0NDUsNyBAQAogCiAgICAgZGVmIHRlc3RfYmluYXJ5X2hlYWRlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGEgUE9TSVguMS0yMDA4IGNvbXBhdGlibGUgaGVhZGVyIHdpdGggYSBoZHJjaGFyc2V0PUJJTkFSWSBmaWVsZC4KLSAgICAgICAgZm9yIGVuY29kaW5nLCBuYW1lIGluICgoInV0ZjgiLCAicGF4L2hkcmNoYXJzZXQtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCisgICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGYtOCIsICJwYXgvaGRyY2hhcnNldC1cdWRjZTRcdWRjZjZcdWRjZmMiKSwKICAgICAgICAgICAgICAgICAoImlzbzg4NTktMSIsICJwYXgvaGRyY2hhcnNldC1ceGU0XHhmNlx4ZmMiKSwpOgogICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFybmFtZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgdGFyOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTE0NDgsMTIgKzE0NzAsOSBAQAogICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz0iaXNvODg1OS0xIikgYXMgc3JjOgogICAgICAgICAgICAgdCA9IHNyYy5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQogICAgICAgICAgICAgdC5uYW1lID0gImZvbyIKLSAgICAgICAgICAgIGYgPSBzcmMuZXh0cmFjdGZpbGUodCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc3JjLmV4dHJhY3RmaWxlKHQpIGFzIGY6CiAgICAgICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4oc2VsZi50YXJuYW1lLCBtb2RlKSBhcyB0YXI6CiAgICAgICAgICAgICAgICAgICAgIHRhci5hZGRmaWxlKHQsIGYpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIF90ZXN0KHNlbGYsIG5hbWVzPVsiYmFyIl0sIGZpbGVvYmo9Tm9uZSk6CiAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHNlbGYudGFybmFtZSwgZmlsZW9iaj1maWxlb2JqKSBhcyB0YXI6CkBAIC0xNTAwLDYgKzE1MTksMTIgQEAKICAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3R0YXIoInc6YnoyIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgdG1wbmFtZSwgImEiKQogCisgICAgZGVmIHRlc3RfYXBwZW5kX2x6bWEoc2VsZik6CisgICAgICAgIGlmIGx6bWEgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImx6bWEgbW9kdWxlIG5vdCBhdmFpbGFibGUiKQorICAgICAgICBzZWxmLl9jcmVhdGVfdGVzdHRhcigidzp4eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRtcG5hbWUsICJhIikKKwogICAgICMgQXBwZW5kIG1vZGUgaXMgc3VwcG9zZWQgdG8gZmFpbCBpZiB0aGUgdGFyZmlsZSB0byBhcHBlbmQgdG8KICAgICAjIGRvZXMgbm90IGVuZCB3aXRoIGEgemVybyBibG9jay4KICAgICBkZWYgX3Rlc3RfZXJyb3Ioc2VsZiwgZGF0YSk6CkBAIC0xNzc4LDYgKzE4MDMsMjEgQEAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX2lucHV0KCJyOmJ6MiIpCiAKIAorY2xhc3MgTHptYU1pc2NSZWFkVGVzdChNaXNjUmVhZFRlc3QpOgorICAgIHRhcm5hbWUgPSB4em5hbWUKKyAgICBtb2RlID0gInI6eHoiCitjbGFzcyBMem1hVXN0YXJSZWFkVGVzdChVc3RhclJlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyOnh6IgorY2xhc3MgTHptYVN0cmVhbVJlYWRUZXN0KFN0cmVhbVJlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyfHh6IgorY2xhc3MgTHptYVdyaXRlVGVzdChXcml0ZVRlc3QpOgorICAgIG1vZGUgPSAidzp4eiIKK2NsYXNzIEx6bWFTdHJlYW1Xcml0ZVRlc3QoU3RyZWFtV3JpdGVUZXN0KToKKyAgICBtb2RlID0gInd8eHoiCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQudW5saW5rKFRFTVBESVIpCiAgICAgb3MubWFrZWRpcnMoVEVNUERJUikKQEAgLTE4NDAsNiArMTg4MCwyMCBAQAogICAgICAgICAgICAgQnoyUGFydGlhbFJlYWRUZXN0LAogICAgICAgICBdCiAKKyAgICBpZiBsem1hOgorICAgICAgICAjIENyZWF0ZSB0ZXN0dGFyLnRhci54eiBhbmQgYWRkIGx6bWEtc3BlY2lmaWMgdGVzdHMuCisgICAgICAgIHN1cHBvcnQudW5saW5rKHh6bmFtZSkKKyAgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKHh6bmFtZSwgInciKSBhcyB0YXI6CisgICAgICAgICAgICB0YXIud3JpdGUoZGF0YSkKKworICAgICAgICB0ZXN0cyArPSBbCisgICAgICAgICAgICBMem1hTWlzY1JlYWRUZXN0LAorICAgICAgICAgICAgTHptYVVzdGFyUmVhZFRlc3QsCisgICAgICAgICAgICBMem1hU3RyZWFtUmVhZFRlc3QsCisgICAgICAgICAgICBMem1hV3JpdGVUZXN0LAorICAgICAgICAgICAgTHptYVN0cmVhbVdyaXRlVGVzdCwKKyAgICAgICAgXQorCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOTVlZWJmMy4uMTFlOTVlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTM2LDYgKzM2LDcgQEAKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisgICAgICAgIGRlbCBzZWxmLnRocmVhZCAgIyBDbGVhciBvdXQgYW55IGRhbmdsaW5nIFRocmVhZCBvYmplY3RzLgogCiAgICAgZGVmIHRlc3RCYXNpYyhzZWxmKToKICAgICAgICAgIyBjb25uZWN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKaW5kZXggNTBjZjNiNC4uZDc5ZjMxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CkBAIC0yMSw3ICsyMSw3IEBACiAKICMgVEVTVF9GSUxFUyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIGZvciBzeXN0ZW1zIGRlcGVuZGluZyBvbiB0aGUgbWF4aW11bQogIyBudW1iZXIgb2YgZmlsZXMgdGhhdCBjYW4gYmUgb3BlbmVkIGF0IG9uZSB0aW1lIChzZWUgdWxpbWl0IC1uKQotaWYgc3lzLnBsYXRmb3JtIGluICgnb3BlbmJzZDMnLCAnb3BlbmJzZDQnKToKK2lmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CiAgICAgVEVTVF9GSUxFUyA9IDQ4CiBlbHNlOgogICAgIFRFU1RfRklMRVMgPSAxMDAKQEAgLTMxLDcgKzMxLDcgQEAKICMgdGhyZWFkcyBpcyBub3QgZG9uZSBoZXJlLgogCiAjIENvbW1vbiBmdW5jdGlvbmFsaXR5LgotY2xhc3MgVEModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN0cl9jaGVjayA9IHJlLmNvbXBpbGUociJbYS16QS1aMC05Xy1dezZ9JCIpCiAKQEAgLTQ1LDExICs0NSw2IEBACiAgICAgICAgIHNlbGYuX3dhcm5pbmdzX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKIAogCi0gICAgZGVmIGZhaWxPbkV4Y2VwdGlvbihzZWxmLCB3aGF0LCBlaT1Ob25lKToKLSAgICAgICAgaWYgZWkgaXMgTm9uZToKLSAgICAgICAgICAgIGVpID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgc2VsZi5mYWlsKCIlcyByYWlzZWQgJXM6ICVzIiAlICh3aGF0LCBlaVswXSwgZWlbMV0pKQotCiAgICAgZGVmIG5hbWVDaGVjayhzZWxmLCBuYW1lLCBkaXIsIHByZSwgc3VmKToKICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKICAgICAgICAgbnByZSAgPSBuYmFzZVs6bGVuKHByZSldCkBAIC02OCw5ICs2Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAicmFuZG9tIHN0cmluZyAnJXMnIGRvZXMgbm90IG1hdGNoIC9eW2EtekEtWjAtOV8tXXs2fSQvIgogICAgICAgICAgICAgICAgICAgICAgJSBuYmFzZSkKIAotdGVzdF9jbGFzc2VzID0gW10KIAotY2xhc3MgdGVzdF9leHBvcnRzKFRDKToKK2NsYXNzIFRlc3RFeHBvcnRzKEJhc2VUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZXhwb3J0cyhzZWxmKToKICAgICAgICAgIyBUaGVyZSBhcmUgbm8gc3VycHJpc2luZyBzeW1ib2xzIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUKICAgICAgICAgZGljdCA9IHRlbXBmaWxlLl9fZGljdF9fCkBAIC05NywxMCArOTEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHVuZXhwKSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQga2V5czogJXMiICUgdW5leHApCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9leHBvcnRzKQogCi0KLWNsYXNzIHRlc3RfX1JhbmRvbU5hbWVTZXF1ZW5jZShUQyk6CitjbGFzcyBUZXN0UmFuZG9tTmFtZVNlcXVlbmNlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgaXRlcmF0b3Igb2JqZWN0IF9SYW5kb21OYW1lU2VxdWVuY2UuIiIiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xMjgsMTMgKzEyMCwxMCBAQAogCiAgICAgICAgIGkgPSAwCiAgICAgICAgIHIgPSBzZWxmLnIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHMgaW4gcjoKLSAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgICAgICBpZiBpID09IDIwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiaXRlcmF0aW9uIikKKyAgICAgICAgZm9yIHMgaW4gcjoKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgaWYgaSA9PSAyMDoKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwKICAgICAgICAgIm9zLmZvcmsgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCIpCkBAIC0xNjcsMTAgKzE1Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hpbGRfdmFsdWUsIHBhcmVudF92YWx1ZSkKIAogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX1JhbmRvbU5hbWVTZXF1ZW5jZSkKIAotCi1jbGFzcyB0ZXN0X19jYW5kaWRhdGVfdGVtcGRpcl9saXN0KFRDKToKK2NsYXNzIFRlc3RDYW5kaWRhdGVUZW1wZGlyTGlzdChCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGZ1bmN0aW9uIF9jYW5kaWRhdGVfdGVtcGRpcl9saXN0LiIiIgogCiAgICAgZGVmIHRlc3Rfbm9uZW1wdHlfbGlzdChzZWxmKToKQEAgLTIwOSwxMyArMTk2LDExIEBACiAgICAgICAgICAgICAjIE5vdCBwcmFjdGljYWwgdG8gdHJ5IHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgT1Mtc3BlY2lmaWMKICAgICAgICAgICAgICMgcGF0aHMgaW4gdGhpcyBsaXN0LgogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2NhbmRpZGF0ZV90ZW1wZGlyX2xpc3QpCi0KIAogIyBXZSB0ZXN0IF9nZXRfZGVmYXVsdF90ZW1wZGlyIGJ5IHRlc3RpbmcgZ2V0dGVtcGRpci4KIAogCi1jbGFzcyB0ZXN0X19nZXRfY2FuZGlkYXRlX25hbWVzKFRDKToKK2NsYXNzIFRlc3RHZXRDYW5kaWRhdGVOYW1lcyhCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGZ1bmN0aW9uIF9nZXRfY2FuZGlkYXRlX25hbWVzLiIiIgogCiAgICAgZGVmIHRlc3RfcmV0dmFsKHNlbGYpOgpAQCAtMjMwLDEwICsyMTUsOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIGIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9fZ2V0X2NhbmRpZGF0ZV9uYW1lcykKIAotCi1jbGFzcyB0ZXN0X19ta3N0ZW1wX2lubmVyKFRDKToKK2NsYXNzIFRlc3RNa3N0ZW1wSW5uZXIoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfbWtzdGVtcF9pbm5lci4iIiIKIAogICAgIGNsYXNzIG1rc3RlbXBlZDoKQEAgLTI1OCwxMCArMjQxLDcgQEAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIiwgYmluPTEpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gc2VsZi5ta3N0ZW1wZWQoZGlyLCBwcmUsIHN1ZiwgYmluKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiX21rc3RlbXBfaW5uZXIiKQorICAgICAgICBmaWxlID0gc2VsZi5ta3N0ZW1wZWQoZGlyLCBwcmUsIHN1ZiwgYmluKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTM1MywxMCArMzMzLDggQEAKICAgICAgICAgb3MubHNlZWsoZi5mZCwgMCwgb3MuU0VFS19TRVQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChmLmZkLCAyMCksIGIiYmxhdCIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9fbWtzdGVtcF9pbm5lcikKIAotCi1jbGFzcyB0ZXN0X2dldHRlbXBwcmVmaXgoVEMpOgorY2xhc3MgVGVzdEdldFRlbXBQcmVmaXgoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IGdldHRlbXBwcmVmaXgoKS4iIiIKIAogICAgIGRlZiB0ZXN0X3NhbmVfdGVtcGxhdGUoc2VsZik6CkBAIC0zNzYsMTkgKzM1NCwxNCBAQAogICAgICAgICBkID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9IiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4oZCwgcCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocCwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigib3Mub3BlbiIpCisgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocCwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICAgICAgb3MudW5saW5rKHApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5ybWRpcihkKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZ2V0dGVtcHByZWZpeCkKIAotCi1jbGFzcyB0ZXN0X2dldHRlbXBkaXIoVEMpOgorY2xhc3MgVGVzdEdldFRlbXBEaXIoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IGdldHRlbXBkaXIoKS4iIiIKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9leGlzdHMoc2VsZik6CkBAIC00MDYsMTIgKzM3OSw5IEBACiAgICAgICAgICMgc25lYWt5OiBqdXN0IGluc3RhbnRpYXRlIGEgTmFtZWRUZW1wb3JhcnlGaWxlLCB3aGljaAogICAgICAgICAjIGRlZmF1bHRzIHRvIHdyaXRpbmcgaW50byB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5CiAgICAgICAgICMgZ2V0dGVtcGRpci4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCi0gICAgICAgICAgICBmaWxlLndyaXRlKGIiYmxhdCIpCi0gICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNyZWF0ZSBmaWxlIGluICVzIiAlIHRlbXBmaWxlLmdldHRlbXBkaXIoKSkKKyAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIGZpbGUud3JpdGUoYiJibGF0IikKKyAgICAgICAgZmlsZS5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9zYW1lX3RoaW5nKHNlbGYpOgogICAgICAgICAjIGdldHRlbXBkaXIgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0CkBAIC00MjAsMjMgKzM5MCwxOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIGIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9nZXR0ZW1wZGlyKQogCi0KLWNsYXNzIHRlc3RfbWtzdGVtcChUQyk6CitjbGFzcyBUZXN0TWtzdGVtcChCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgbWtzdGVtcCgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAoZmQsIG5hbWUpID0gdGVtcGZpbGUubWtzdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQotICAgICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKLSAgICAgICAgICAgIGFkaXIgPSBvcy5wYXRoLmFic3BhdGgoZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGlyLCBuZGlyLAotICAgICAgICAgICAgICAgICJEaXJlY3RvcnkgJyVzJyBpbmNvcnJlY3RseSByZXR1cm5lZCBhcyAnJXMnIiAlIChhZGlyLCBuZGlyKSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm1rc3RlbXAiKQorICAgICAgICAoZmQsIG5hbWUpID0gdGVtcGZpbGUubWtzdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQorICAgICAgICAobmRpciwgbmJhc2UpID0gb3MucGF0aC5zcGxpdChuYW1lKQorICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGlyLCBuZGlyLAorICAgICAgICAgICAgIkRpcmVjdG9yeSAnJXMnIGluY29ycmVjdGx5IHJldHVybmVkIGFzICclcyciICUgKGFkaXIsIG5kaXIpKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubmFtZUNoZWNrKG5hbWUsIGRpciwgcHJlLCBzdWYpCkBAIC00NjEsMTkgKzQyNiwxNCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfbWtzdGVtcCkKIAotCi1jbGFzcyB0ZXN0X21rZHRlbXAoVEMpOgorY2xhc3MgVGVzdE1rZHRlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rZHRlbXAoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm1rZHRlbXAiKQorICAgICAgICBuYW1lID0gdGVtcGZpbGUubWtkdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYubmFtZUNoZWNrKG5hbWUsIGRpciwgcHJlLCBzdWYpCkBAIC01MjgsMTAgKzQ4OCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9ta2R0ZW1wKQogCi0KLWNsYXNzIHRlc3RfbWt0ZW1wKFRDKToKK2NsYXNzIFRlc3RNa3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rdGVtcCgpLiIiIgogCiAgICAgIyBGb3Igc2FmZXR5LCBhbGwgdXNlIG9mIG1rdGVtcCBtdXN0IG9jY3VyIGluIGEgcHJpdmF0ZSBkaXJlY3RvcnkuCkBAIC01NjAsMTAgKzUxOCw3IEBACiAgICAgICAgICAgICBzZWxmLl91bmxpbmsoc2VsZi5uYW1lKQogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBwcmU9IiIsIHN1Zj0iIik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSBzZWxmLm1rdGVtcGVkKHNlbGYuZGlyLCBwcmUsIHN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm1rdGVtcCIpCisgICAgICAgIGZpbGUgPSBzZWxmLm1rdGVtcGVkKHNlbGYuZGlyLCBwcmUsIHN1ZikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIHNlbGYuZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTU5MCwyMyArNTQ1LDE4IEBACiAjIyAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVXYXJuaW5nLAogIyMgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5ta3RlbXAsIGRpcj1zZWxmLmRpcikKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X21rdGVtcCkKLQogCiAjIFdlIHRlc3QgX1RlbXBvcmFyeUZpbGVXcmFwcGVyIGJ5IHRlc3RpbmcgTmFtZWRUZW1wb3JhcnlGaWxlLgogCiAKLWNsYXNzIHRlc3RfTmFtZWRUZW1wb3JhcnlGaWxlKFRDKToKK2NsYXNzIFRlc3ROYW1lZFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IE5hbWVkVGVtcG9yYXJ5RmlsZSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGRlbGV0ZT1UcnVlKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGU9ZGVsZXRlKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiTmFtZWRUZW1wb3JhcnlGaWxlIikKKyAgICAgICAgZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZT1kZWxldGUpCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBkaXIsIHByZSwgc3VmKQogICAgICAgICByZXR1cm4gZmlsZQpAQCAtNjU5LDExICs2MDksOCBAQAogICAgICAgICBmID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCkKICAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbG9zZSIpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKICAgICAgICAgIyBBIE5hbWVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlcgpAQCAtNjc3LDE4ICs2MjQsMTQgQEAKIAogICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X05hbWVkVGVtcG9yYXJ5RmlsZSkKIAotY2xhc3MgdGVzdF9TcG9vbGVkVGVtcG9yYXJ5RmlsZShUQyk6CitjbGFzcyBUZXN0U3Bvb2xlZFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IFNwb29sZWRUZW1wb3JhcnlGaWxlKCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIG1heF9zaXplPTAsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT1tYXhfc2l6ZSwgZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIlNwb29sZWRUZW1wb3JhcnlGaWxlIikKKyAgICAgICAgZmlsZSA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPW1heF9zaXplLCBkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogCiAgICAgICAgIHJldHVybiBmaWxlCiAKQEAgLTc3NiwxMSArNzE5LDggQEAKICAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLl9yb2xsZWQpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZV9hZnRlcl9yb2xsb3ZlcihzZWxmKToKICAgICAgICAgIyBBIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCkBAIC03ODgsMTEgKzcyOCw4IEBACiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLl9yb2xsZWQpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9ib3VuZF9tZXRob2RzKHNlbGYpOgogICAgICAgICAjIEl0IHNob3VsZCBiZSBPSyB0byBzdGVhbCBhIGJvdW5kIG1ldGhvZCBmcm9tIGEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUKQEAgLTg3OCw2NiArODE1LDc2IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB1c2VfY2xvc2VkKQogCi0KLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9TcG9vbGVkVGVtcG9yYXJ5RmlsZSkKLQotCi1jbGFzcyB0ZXN0X1RlbXBvcmFyeUZpbGUoVEMpOgotICAgICIiIlRlc3QgVGVtcG9yYXJ5RmlsZSgpLiIiIgotCi0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgICMgVGVtcG9yYXJ5RmlsZSBjYW4gY3JlYXRlIGZpbGVzCi0gICAgICAgICMgTm8gcG9pbnQgaW4gdGVzdGluZyB0aGUgbmFtZSBwYXJhbXMgLSB0aGUgZmlsZSBoYXMgbm8gbmFtZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJUZW1wb3JhcnlGaWxlIikKLQotICAgIGRlZiB0ZXN0X2hhc19ub19uYW1lKHNlbGYpOgotICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY3JlYXRlcyBmaWxlcyB3aXRoIG5vIG5hbWVzIChvbiB0aGlzIHN5c3RlbSkKLSAgICAgICAgZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKGRpcj1kaXIpCi0gICAgICAgIGYud3JpdGUoYidibGF0JykKLQotICAgICAgICAjIFNuZWFreTogYmVjYXVzZSB0aGlzIGZpbGUgaGFzIG5vIG5hbWUsIGl0IHNob3VsZCBub3QgcHJldmVudAotICAgICAgICAjIHVzIGZyb20gcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpdCB3YXMgY3JlYXRlZCBpbi4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBlaSA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICAjIGNsZWFudXAKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oInJtZGlyIiwgZWkpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZShzZWxmKToKLSAgICAgICAgIyBBIFRlbXBvcmFyeUZpbGUgY2FuIGJlIGNsb3NlZCBtYW55IHRpbWVzIHdpdGhvdXQgZXJyb3IKLSAgICAgICAgZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQotICAgICAgICBmLndyaXRlKGInYWJjXG4nKQotICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKLQotICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KLSAgICBkZWYgdGVzdF9tb2RlX2FuZF9lbmNvZGluZyhzZWxmKToKLQotICAgICAgICBkZWYgcm91bmR0cmlwKGlucHV0LCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCphcmdzLCAqKmt3YXJncykgYXMgZmlsZW9iajoKLSAgICAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKGlucHV0KQotICAgICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGZpbGVvYmoucmVhZCgpKQotCi0gICAgICAgIHJvdW5kdHJpcChiIjEyMzQiLCAidytiIikKLSAgICAgICAgcm91bmR0cmlwKCJhYmRjXG4iLCAidysiKQotICAgICAgICByb3VuZHRyaXAoIlx1MDM5QiIsICJ3KyIsIGVuY29kaW5nPSJ1dGYtMTYiKQotICAgICAgICByb3VuZHRyaXAoImZvb1xyXG4iLCAidysiLCBuZXdsaW5lPSIiKQorICAgIGRlZiB0ZXN0X3RydW5jYXRlX3dpdGhfc2l6ZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgdHJ1bmNhdGVkIHRvIHplcm8gc2l6ZQorICAgICAgICBmID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MTApCisgICAgICAgIGYud3JpdGUoYidhYmNkZWZnXG4nKQorICAgICAgICBmLnNlZWsoMCkKKyAgICAgICAgZi50cnVuY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5fcm9sbGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX2ZpbGUuZ2V0dmFsdWUoKSwgYicnKQorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHRydW5jYXRlZCB0byBhIHNwZWNpZmljIHNpemUKKyAgICAgICAgZiA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPTEwKQorICAgICAgICBmLndyaXRlKGInYWJjZGVmZ1xuJykKKyAgICAgICAgZi50cnVuY2F0ZSg0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuX3JvbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9maWxlLmdldHZhbHVlKCksIGInYWJjZCcpCisgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSByb2xscyBvdmVyIGlmIHRydW5jYXRlZCB0byBsYXJnZSBzaXplCisgICAgICAgIGYgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0xMCkKKyAgICAgICAgZi53cml0ZShiJ2FiY2RlZmdcbicpCisgICAgICAgIGYudHJ1bmNhdGUoMjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLl9yb2xsZWQpCisgICAgICAgIGlmIGhhc19zdGF0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5mc3RhdChmLmZpbGVubygpKS5zdF9zaXplLCAyMCkKIAogCiBpZiB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUgaXMgbm90IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGU6Ci0gICAgdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X1RlbXBvcmFyeUZpbGUpCisKKyAgICBjbGFzcyBUZXN0VGVtcG9yYXJ5RmlsZShCYXNlVGVzdENhc2UpOgorICAgICAgICAiIiJUZXN0IFRlbXBvcmFyeUZpbGUoKS4iIiIKKworICAgICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgICAgICMgVGVtcG9yYXJ5RmlsZSBjYW4gY3JlYXRlIGZpbGVzCisgICAgICAgICAgICAjIE5vIHBvaW50IGluIHRlc3RpbmcgdGhlIG5hbWUgcGFyYW1zIC0gdGhlIGZpbGUgaGFzIG5vIG5hbWUuCisgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKworICAgICAgICBkZWYgdGVzdF9oYXNfbm9fbmFtZShzZWxmKToKKyAgICAgICAgICAgICMgVGVtcG9yYXJ5RmlsZSBjcmVhdGVzIGZpbGVzIHdpdGggbm8gbmFtZXMgKG9uIHRoaXMgc3lzdGVtKQorICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZShkaXI9ZGlyKQorICAgICAgICAgICAgZi53cml0ZShiJ2JsYXQnKQorCisgICAgICAgICAgICAjIFNuZWFreTogYmVjYXVzZSB0aGlzIGZpbGUgaGFzIG5vIG5hbWUsIGl0IHNob3VsZCBub3QgcHJldmVudAorICAgICAgICAgICAgIyB1cyBmcm9tIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXQgd2FzIGNyZWF0ZWQgaW4uCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICMgY2xlYW51cAorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiB0ZXN0X211bHRpcGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgIyBBIFRlbXBvcmFyeUZpbGUgY2FuIGJlIGNsb3NlZCBtYW55IHRpbWVzIHdpdGhvdXQgZXJyb3IKKyAgICAgICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKyAgICAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgIyBIb3cgdG8gdGVzdCB0aGUgbW9kZSBhbmQgYnVmc2l6ZSBwYXJhbWV0ZXJzPworICAgICAgICBkZWYgdGVzdF9tb2RlX2FuZF9lbmNvZGluZyhzZWxmKToKKworICAgICAgICAgICAgZGVmIHJvdW5kdHJpcChpbnB1dCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKmFyZ3MsICoqa3dhcmdzKSBhcyBmaWxlb2JqOgorICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKGlucHV0KQorICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnB1dCwgZmlsZW9iai5yZWFkKCkpCisKKyAgICAgICAgICAgIHJvdW5kdHJpcChiIjEyMzQiLCAidytiIikKKyAgICAgICAgICAgIHJvdW5kdHJpcCgiYWJkY1xuIiwgIncrIikKKyAgICAgICAgICAgIHJvdW5kdHJpcCgiXHUwMzlCIiwgIncrIiwgZW5jb2Rpbmc9InV0Zi0xNiIpCisgICAgICAgICAgICByb3VuZHRyaXAoImZvb1xyXG4iLCAidysiLCBuZXdsaW5lPSIiKQogCiAKICMgSGVscGVyIGZvciB0ZXN0X2RlbF9vbl9zaHV0ZG93bgpAQCAtOTU2LDE2ICs5MDMsMTMgQEAKICAgICAgICAgICAgIGQuY2xlYXIoKQogICAgICAgICAgICAgZC51cGRhdGUoYykKIAotY2xhc3MgdGVzdF9UZW1wb3JhcnlEaXJlY3RvcnkoVEMpOgorY2xhc3MgVGVzdFRlbXBvcmFyeURpcmVjdG9yeShCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgVGVtcG9yYXJ5RGlyZWN0b3J5KCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIiwgcmVjdXJzZT0xKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdG1wID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJUZW1wb3JhcnlEaXJlY3RvcnkiKQorICAgICAgICB0bXAgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKICAgICAgICAgc2VsZi5uYW1lQ2hlY2sodG1wLm5hbWUsIGRpciwgcHJlLCBzdWYpCiAgICAgICAgICMgQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCBzb21lIGZpbGVzCiAgICAgICAgIGlmIHJlY3Vyc2U6CkBAIC0xMDg5LDExICsxMDMzLDggQEAKICAgICAgICAgIyBDYW4gYmUgY2xlYW5lZC11cCBtYW55IHRpbWVzIHdpdGhvdXQgZXJyb3IKICAgICAgICAgZCA9IHNlbGYuZG9fY3JlYXRlKCkKICAgICAgICAgZC5jbGVhbnVwKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZC5jbGVhbnVwKCkKLSAgICAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbGVhbnVwIikKKyAgICAgICAgZC5jbGVhbnVwKCkKKyAgICAgICAgZC5jbGVhbnVwKCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKICAgICAgICAgIyBDYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlcgpAQCAtMTEwNCwxMCArMTA0NSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZSkpCiAKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X1RlbXBvcmFyeURpcmVjdG9yeSkKLQogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkgYi9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CmluZGV4IDM5MDExMjAuLmM4NmY1Y2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQpAQCAtMTEsNyArMTEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotZnJvbSB0ZXh0d3JhcCBpbXBvcnQgVGV4dFdyYXBwZXIsIHdyYXAsIGZpbGwsIGRlZGVudAorZnJvbSB0ZXh0d3JhcCBpbXBvcnQgVGV4dFdyYXBwZXIsIHdyYXAsIGZpbGwsIGRlZGVudCwgaW5kZW50CiAKIAogY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEwMCw2ICsxMDAsMTQgQEAKICAgICAgICAgcmVzdWx0ID0gd3JhcHBlci5maWxsKHRleHQpCiAgICAgICAgIHNlbGYuY2hlY2socmVzdWx0LCAnXG4nLmpvaW4oZXhwZWN0KSkKIAorICAgICAgICB0ZXh0ID0gIlx0VGVzdFx0ZGVmYXVsdFx0XHR0YWJzaXplLiIKKyAgICAgICAgZXhwZWN0ID0gWyIgICAgICAgIFRlc3QgICAgZGVmYXVsdCAgICAgICAgIHRhYnNpemUuIl0KKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDgwLCBleHBlY3QpCisKKyAgICAgICAgdGV4dCA9ICJcdFRlc3RcdGN1c3RvbVx0XHR0YWJzaXplLiIKKyAgICAgICAgZXhwZWN0ID0gWyIgICAgVGVzdCAgICBjdXN0b20gICAgICB0YWJzaXplLiJdCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA4MCwgZXhwZWN0LCB0YWJzaXplPTQpCisKICAgICBkZWYgdGVzdF9maXhfc2VudGVuY2VfZW5kaW5ncyhzZWxmKToKICAgICAgICAgd3JhcHBlciA9IFRleHRXcmFwcGVyKDYwLCBmaXhfc2VudGVuY2VfZW5kaW5ncz1UcnVlKQogCkBAIC02MzQsMTEgKzY0MiwxNDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIGRlZGVudCh0ZXh0KSkKIAogCisjIFRlc3QgdGV4dHdyYXAuaW5kZW50CitjbGFzcyBJbmRlbnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUaGUgZXhhbXBsZXMgdXNlZCBmb3IgdGVzdHMuIElmIGFueSBvZiB0aGVzZSBjaGFuZ2UsIHRoZSBleHBlY3RlZAorICAgICMgcmVzdWx0cyBpbiB0aGUgdmFyaW91cyB0ZXN0IGNhc2VzIG11c3QgYWxzbyBiZSB1cGRhdGVkLgorICAgICMgVGhlIHJvdW5kdHJpcCBjYXNlcyBhcmUgc2VwYXJhdGUsIGJlY2F1c2UgdGV4dHdyYXAuZGVkZW50IGRvZXNuJ3QKKyAgICAjIGhhbmRsZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgIFJPVU5EVFJJUF9DQVNFUyA9ICgKKyAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuIiwKKyAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICJIaS5cblRoaXMgaXMgYSB0ZXN0LlxuXG5UZXN0aW5nLiIsCisgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICJcbkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLlxuIiwKKyAgICApCisgICAgQ0FTRVMgPSBST1VORFRSSVBfQ0FTRVMgKyAoCisgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgIkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cclxuVGVzdGluZy5cclxuIiwKKyAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICJcbkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cblxyXG5UZXN0aW5nLlxyXG5cbiIsCisgICAgKQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vbWFyZ2luX2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgaW5kZW50IHNob3VsZCBkbyBub3RoaW5nIGlmICdwcmVmaXgnIGlzIGVtcHR5LgorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLkNBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgJycpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vbWFyZ2luX2V4cGxpY2l0X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgVGhlIHNhbWUgYXMgdGVzdF9pbmRlbnRfbm9tYXJnaW4sIGJ1dCBleHBsaWNpdGx5IHJlcXVlc3RpbmcKKyAgICAgICAgIyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgYnkgcGFzc2luZyBOb25lIGFzIHRoZSBwcmVkaWNhdGUKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnLCBOb25lKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9hbGxfbGluZXMoc2VsZik6CisgICAgICAgICMgVGhlIHNhbWUgYXMgdGVzdF9pbmRlbnRfbm9tYXJnaW4sIGJ1dCB1c2luZyB0aGUgb3B0aW9uYWwKKyAgICAgICAgIyBwcmVkaWNhdGUgYXJndW1lbnQKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IFRydWUKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnLCBwcmVkaWNhdGUpLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X25vX2xpbmVzKHNlbGYpOgorICAgICAgICAjIEV4cGxpY2l0bHkgc2tpcCBpbmRlbnRpbmcgYW55IGxpbmVzCisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBGYWxzZQorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLkNBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgJyAgICAnLCBwcmVkaWNhdGUpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3NwYWNlcyhzZWxmKToKKyAgICAgICAgIyBBIHdoaXRlc3BhY2UgcHJlZml4IHNob3VsZCByb3VuZHRyaXAgd2l0aCBkZWRlbnQKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5ST1VORFRSSVBfQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZGVudChpbmRlbnQodGV4dCwgJyAgICAnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfdGFicyhzZWxmKToKKyAgICAgICAgIyBBIHdoaXRlc3BhY2UgcHJlZml4IHNob3VsZCByb3VuZHRyaXAgd2l0aCBkZWRlbnQKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5ST1VORFRSSVBfQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZGVudChpbmRlbnQodGV4dCwgJ1x0XHQnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfbWl4ZWQoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICcgXHQgIFx0ICcpKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIFRlc3QgZGVmYXVsdCBpbmRlbnRpbmcgb2YgbGluZXMgdGhhdCBhcmUgbm90IHdoaXRlc3BhY2Ugb25seQorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cblxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAgICAgIlxuICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXHJcbiAgVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIlxuICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cblxyXG4gIFRlc3RpbmcuXHJcblxuIiwKKyAgICAgICAgKQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZXhwbGljaXRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHQgaW5kZW50aW5nIG9mIGxpbmVzIHRoYXQgYXJlIG5vdCB3aGl0ZXNwYWNlIG9ubHkKKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICJcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICJcbiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXG5cclxuICBUZXN0aW5nLlxyXG5cbiIsCisgICAgICAgICkKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4LCBOb25lKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2FsbF9saW5lcyhzZWxmKToKKyAgICAgICAgIyBBZGQgJ3ByZWZpeCcgdG8gYWxsIGxpbmVzLCBpbmNsdWRpbmcgd2hpdGVzcGFjZS1vbmx5IG9uZXMuCisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBcbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICIgIFxuICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXHJcbiAgVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIiAgXG4gIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBcclxuICBUZXN0aW5nLlxyXG4gIFxuIiwKKyAgICAgICAgKQorICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogVHJ1ZQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9lbXB0eV9saW5lcyhzZWxmKToKKyAgICAgICAgIyBBZGQgJ3ByZWZpeCcgc29sZWx5IHRvIHdoaXRlc3BhY2Utb25seSBsaW5lcy4KKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICJIaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cbiAgXG5UZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAgICAgIiAgXG5IaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiSGkuXHJcblRoaXMgaXMgYSB0ZXN0LlxyXG5UZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiICBcbkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cbiAgXHJcblRlc3RpbmcuXHJcbiAgXG4iLAorICAgICAgICApCisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBub3QgbGluZS5zdHJpcCgpCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlKSwgZXhwZWN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChXcmFwVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb25nV29yZFRlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZW50VGVzdENhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVkZW50VGVzdENhc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWRlbnRUZXN0Q2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVudFRlc3RDYXNlKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CmluZGV4IDc3OTE5MzUuLjZjMjk2NWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5CkBAIC03LDEyICs3LDEzIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOCi10aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCisgICAgdmVyYm9zZSwgaW1wb3J0X21vZHVsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHJlYXBfdGhyZWFkcywgZm9yZ2V0LCB1bmxpbmspCiB0aHJlYWRpbmcgPSBpbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiBkZWYgdGFzayhOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMpOgpAQCAtMzAsNyArMzEsNyBAQAogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgZXJyb3JzLmFwcGVuZChlLndpdGhfdHJhY2ViYWNrKE5vbmUpKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIGRvbmVfdGFza3MuYXBwZW5kKHRocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgZG9uZV90YXNrcy5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogICAgICAgICBmaW5pc2hlZCA9IGxlbihkb25lX3Rhc2tzKSA9PSBOCiAgICAgICAgIGlmIGZpbmlzaGVkOgogICAgICAgICAgICAgZG9uZS5zZXQoKQpAQCAtNjIsMTYgKzYzLDE3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLm51bWNhbGxzID0gMAogICAgICAgICBzZWxmLnggPSAwCi0gICAgICAgIHNlbGYubG9jayA9IHRocmVhZC5hbGxvY2F0ZV9sb2NrKCkKKyAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICMgU2ltdWxhdGUgc29tZSB0aHJlYWQtdW5zYWZlIGJlaGF2aW91ci4gSWYgY2FsbHMgdG8gZmluZF9tb2R1bGUoKQogICAgICAgICAjIGFyZSBwcm9wZXJseSBzZXJpYWxpemVkLCBgeGAgd2lsbCBlbmQgdXAgdGhlIHNhbWUgYXMgYG51bWNhbGxzYC4KICAgICAgICAgIyBPdGhlcndpc2Ugbm90LgorICAgICAgICBhc3NlcnQgaW1wLmxvY2tfaGVsZCgpCiAgICAgICAgIHdpdGggc2VsZi5sb2NrOgogICAgICAgICAgICAgc2VsZi5udW1jYWxscyArPSAxCiAgICAgICAgIHggPSBzZWxmLngKLSAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKICAgICAgICAgc2VsZi54ID0geCArIDEKIAogY2xhc3MgRmx1c2hpbmdGaW5kZXI6CkBAIC0xMTMsOCArMTE1LDEwIEBACiAgICAgICAgICAgICBkb25lX3Rhc2tzID0gW10KICAgICAgICAgICAgIGRvbmUuY2xlYXIoKQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTik6Ci0gICAgICAgICAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGFzaywgKE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycywpKQotICAgICAgICAgICAgZG9uZS53YWl0KDYwKQorICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycywpKQorICAgICAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRvbmUud2FpdCg2MCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVycm9ycykKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoIk9LLiIpCkBAIC0xMjQsNyArMTI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X3BhcmFsbGVsX21ldGFfcGF0aChzZWxmKToKICAgICAgICAgZmluZGVyID0gRmluZGVyKCkKLSAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoZmluZGVyKQorICAgICAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBmaW5kZXIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcGFyYWxsZWxfbW9kdWxlX2luaXQoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGZpbmRlci5udW1jYWxscywgMCkKQEAgLTE0Myw3ICsxNDcsNyBAQAogICAgICAgICBkZWYgcGF0aF9ob29rKHBhdGgpOgogICAgICAgICAgICAgZmluZGVyLmZpbmRfbW9kdWxlKCcnKQogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKHBhdGhfaG9vaykKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIHBhdGhfaG9vaykKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoZmx1c2hpbmdfZmluZGVyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIEZsdXNoIHRoZSBjYWNoZSBhIGZpcnN0IHRpbWUKQEAgLTE4NSw4ICsxODksOSBAQAogICAgICAgICAgICAgY29udGVudHMgPSBjb250ZW50cyAlIHsnZGVsYXknOiBkZWxheX0KICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVTVEZOLCBuYW1lICsgIi5weSIpLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMuZW5jb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5tb2R1bGVzLnBvcCwgbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmb3JnZXQsIG5hbWUpCiAKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgIGRlZiBpbXBvcnRfYWIoKToKICAgICAgICAgICAgIGltcG9ydCBBCkBAIC0yMDIsOSArMjA3LDM4IEBACiAgICAgICAgIHQyLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChyZXN1bHRzKSwgeydhJywgJ2InfSkKIAorICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X2ltcG9ydChzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICBkZWYgdGFyZ2V0KCk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXRhcmdldCkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgdC5qb2luKCkiIiIKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLnJlbW92ZSwgb3MuY3VyZGlyKQorICAgICAgICBmaWxlbmFtZSA9IFRFU1RGTiArICIucHkiCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY29kZS5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoZm9yZ2V0LCBURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogCisKK0ByZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGhyZWFkZWRJbXBvcnRUZXN0cykKKyAgICBvbGRfc3dpdGNoaW50ZXJ2YWwgPSBOb25lCisgICAgdHJ5OgorICAgICAgICBvbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQorICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIHJ1bl91bml0dGVzdChUaHJlYWRlZEltcG9ydFRlc3RzKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIG9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChvbGRfc3dpdGNoaW50ZXJ2YWwpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKaW5kZXggMTdiZTg0Yi4uMTFlNjNkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICAgICBleGNlcHRpb24gPSBjdHlwZXMucHlfb2JqZWN0KEFzeW5jRXhjKQogCiAgICAgICAgICMgRmlyc3QgY2hlY2sgaXQgd29ya3Mgd2hlbiBzZXR0aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgc2FtZSB0aHJlYWQuCi0gICAgICAgIHRpZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0ID0gc2V0X2FzeW5jX2V4YyhjdHlwZXMuY19sb25nKHRpZCksIGV4Y2VwdGlvbikKQEAgLTIwNCw3ICsyMDQsNyBAQAogCiAgICAgICAgIGNsYXNzIFdvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5pZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgICAgICAgICBzZWxmLmlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgICAgICAgICAgc2VsZi5maW5pc2hlZCA9IEZhbHNlCiAKICAgICAgICAgICAgICAgICB0cnk6CkBAIC00MDksNiArNDA5LDE0IEBACiAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2RhZW1vbicgaW4gcmVwcih0KSkKIAorICAgIGRlZiB0ZXN0X2RlYW1vbl9wYXJhbShzZWxmKToKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQuZGFlbW9uKQorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChkYWVtb249RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5kYWVtb24pCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKGRhZW1vbj1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodC5kYWVtb24pCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZm9yaycpLCAndGVzdCBuZWVkcyBmb3JrKCknKQogICAgIGRlZiB0ZXN0X2R1bW15X3RocmVhZF9hZnRlcl9mb3JrKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNDMwODogYSBkdW1teSB0aHJlYWQgaW4gdGhlIGFjdGl2ZSBsaXN0IGRvZXNuJ3QgbWVzcyB1cApAQCAtNDQ0LDcgKzQ1Miw3IEBACiAgICAgIyBwcm9ibGVtcyB3aXRoIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgKGlzc3VlICMzODYzKTogc2tpcCBwcm9ibGVtYXRpYyB0ZXN0cwogICAgICMgb24gcGxhdGZvcm1zIGtub3duIHRvIGJlaGF2ZSBiYWRseS4KICAgICBwbGF0Zm9ybXNfdG9fc2tpcCA9ICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnbmV0YnNkNScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ29zMmVteCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29zMmVteCcsICdocC11eDExJykKIAogICAgIGRlZiBfcnVuX2FuZF9qb2luKHNlbGYsIHNjcmlwdCk6CiAgICAgICAgIHNjcmlwdCA9ICIiImlmIDE6CkBAIC03NDIsNiArNzUwLDEwIEBACiAgICAgICAgIHRocmVhZC5zdGFydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2V0YXR0ciwgdGhyZWFkLCAiZGFlbW9uIiwgVHJ1ZSkKIAorICAgIGRlZiB0ZXN0X3JlbGVhc2luZ191bmFjcXVpcmVkX2xvY2soc2VsZik6CisgICAgICAgIGxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5yZWxlYXNlKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAndGVzdCBtYWNvc3ggcHJvYmxlbScpCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgogICAgICAgICAjIElzc3VlIDk2NzAKQEAgLTgwMyw2ICs4MTUsNyBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChMb2NrVGVzdHMsIFB5UkxvY2tUZXN0cywgQ1JMb2NrVGVzdHMsIEV2ZW50VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25Bc1JMb2NrVGVzdHMsIENvbmRpdGlvblRlc3RzLApAQCAtODEwLDcgKzgyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZEpvaW5PblNodXRkb3duLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nRXhjZXB0aW9uVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJyaWVyVGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnJpZXJUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQppbmRleCBlMGFmMzFkLi5mOTc1YTc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CkBAIC0xNCwxMCArMTQsOCBAQAogcHJvY2Vzc19waWQgPSBvcy5nZXRwaWQoKQogc2lnbmFsbGVkX2FsbD10aHJlYWQuYWxsb2NhdGVfbG9jaygpCiAKLSMgSXNzdWUgIzExMjIzOiBMb2NrcyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBtdXRleCBhbmQgYSBjb25kaXRpb24gdmFyaWFibGUgb2YKLSMgdGhlIHB0aHJlYWQgbGlicmFyeSBvbiBGcmVlQlNENi4gUE9TSVggY29uZGl0aW9uIHZhcmlhYmxlcyBjYW5ub3QgYmUKLSMgaW50ZXJydXB0ZWQgYnkgc2lnbmFscyAoc2VlIHB0aHJlYWRfY29uZF93YWl0IG1hbnVhbCBwYWdlKS4KLVVTSU5HX1BUSFJFQURfQ09ORCA9IChzeXMucGxhdGZvcm0gPT0gJ2ZyZWVic2Q2JykKK1VTSU5HX1BUSFJFQURfQ09ORCA9IChzeXMudGhyZWFkX2luZm8ubmFtZSA9PSAncHRocmVhZCcKKyAgICAgICAgICAgICAgICAgICAgICBhbmQgc3lzLnRocmVhZF9pbmZvLmxvY2sgPT0gJ211dGV4K2NvbmQnKQogCiBkZWYgcmVnaXN0ZXJTaWduYWxzKGZvcl91c3IxLCBmb3JfdXNyMiwgZm9yX2Fscm0pOgogICAgIHVzcjEgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBmb3JfdXNyMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCBkM2M0OWJiLi5kYTBmNTU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC00LDcgKzQsMTcgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncworaW1wb3J0IHBsYXRmb3JtCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKKworIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCitTSVpFT0ZfSU5UID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAorVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKK1RJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCisKIAogY2xhc3MgVGltZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTcsOSArMjcsNTMgQEAKICAgICAgICAgdGltZS50aW1lem9uZQogICAgICAgICB0aW1lLnR6bmFtZQogCisgICAgZGVmIHRlc3RfdGltZShzZWxmKToKKyAgICAgICAgdGltZS50aW1lKCkKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ3RpbWUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5hZGp1c3RhYmxlKQorCiAgICAgZGVmIHRlc3RfY2xvY2soc2VsZik6CiAgICAgICAgIHRpbWUuY2xvY2soKQogCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCdjbG9jaycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLmFkanVzdGFibGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19nZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19nZXR0aW1lKCknKQorICAgIGRlZiB0ZXN0X2Nsb2NrX3JlYWx0aW1lKHNlbGYpOgorICAgICAgICB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX2dldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX2dldHRpbWUoKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnQ0xPQ0tfTU9OT1RPTklDJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5DTE9DS19NT05PVE9OSUMnKQorICAgIGRlZiB0ZXN0X2Nsb2NrX21vbm90b25pYyhzZWxmKToKKyAgICAgICAgYSA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykKKyAgICAgICAgYiA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYSwgYikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX2dldHJlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfZ2V0cmVzKCknKQorICAgIGRlZiB0ZXN0X2Nsb2NrX2dldHJlcyhzZWxmKToKKyAgICAgICAgcmVzID0gdGltZS5jbG9ja19nZXRyZXModGltZS5DTE9DS19SRUFMVElNRSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHJlcywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXMsIDEuMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX3NldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX3NldHRpbWUoKScpCisgICAgZGVmIHRlc3RfY2xvY2tfc2V0dGltZShzZWxmKToKKyAgICAgICAgdCA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSwgdCkKKyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBoYXNhdHRyKHRpbWUsICdDTE9DS19NT05PVE9OSUMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUsIHRpbWUuQ0xPQ0tfTU9OT1RPTklDLCAwKQorCiAgICAgZGVmIHRlc3RfY29udmVyc2lvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5jdGltZShzZWxmLnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuYXNjdGltZSh0aW1lLmxvY2FsdGltZShzZWxmLnQpKSkKQEAgLTI3LDYgKzgxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi50KSkKIAogICAgIGRlZiB0ZXN0X3NsZWVwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0aW1lLnNsZWVwLCAtMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGltZS5zbGVlcCwgLTEpCiAgICAgICAgIHRpbWUuc2xlZXAoMS4yKQogCiAgICAgZGVmIHRlc3Rfc3RyZnRpbWUoc2VsZik6CkBAIC00NywyOCArMTAzLDM0IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVmJykKIAotICAgIGRlZiBfYm91bmRzX2NoZWNraW5nKHNlbGYsIGZ1bmM9dGltZS5zdHJmdGltZSk6CisgICAgZGVmIF9ib3VuZHNfY2hlY2tpbmcoc2VsZiwgZnVuYyk6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgc3RyZnRpbWUoKSBjaGVja3MgdGhlIGJvdW5kcyBvZiB0aGUgdmFyaW91cyBwYXJ0cwotICAgICAgICAjb2YgdGhlIHRpbWUgdHVwbGUgKDAgaXMgdmFsaWQgZm9yICphbGwqIHZhbHVlcykuCisgICAgICAgICMgb2YgdGhlIHRpbWUgdHVwbGUgKDAgaXMgdmFsaWQgZm9yICphbGwqIHZhbHVlcykuCiAKICAgICAgICAgIyBUaGUgeWVhciBmaWVsZCBpcyB0ZXN0ZWQgYnkgb3RoZXIgdGVzdCBjYXNlcyBhYm92ZQogCiAgICAgICAgICMgQ2hlY2sgbW9udGggWzEsIDEyXSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEyLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIC0xLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEzLCAxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgZGF5IG9mIG1vbnRoIFsxLCAzMV0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMCwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAzMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAtMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAzMiwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIGhvdXIgWzAsIDIzXQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAyMywgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAtMSwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAyNCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIG1pbnV0ZSBbMCwgNTldCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDU5LCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIC0xLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCkBAIC03OCwxNSArMTQwLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIC0xLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQzk5IG9ubHkgcmVxdWlyZXMgYWxsb3dpbmcgZm9yIG9uZSBsZWFwIHNlY29uZCwgYnV0IFB5dGhvbidzIGRvY3Mgc2F5CiAgICAgICAgICMgYWxsb3cgdHdvIGxlYXAgc2Vjb25kcyAoMC4uNjEpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDYwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDYxLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDYyLCAwLCAxLCAtMSkpCiAgICAgICAgICMgTm8gY2hlY2sgZm9yIHVwcGVyLWJvdW5kIGRheSBvZiB3ZWVrOwogICAgICAgICAjICB2YWx1ZSBmb3JjZWQgaW50byByYW5nZSBieSBhIGBgJSA3YGAgY2FsY3VsYXRpb24uCiAgICAgICAgICMgU3RhcnQgY2hlY2sgYXQgLTIgc2luY2UgZ2V0dG1hcmcoKSBpbmNyZW1lbnRzIHZhbHVlIGJlZm9yZSB0YWtpbmcKICAgICAgICAgIyAgbW9kdWxvLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIC0xLCAxLCAtMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsICs2LCAxLCAtMSkpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAtMiwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIGRheSBvZiB0aGUgeWVhciBbMSwgMzY2XSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIDM2NiwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAtMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLApAQCAtOTYsMTIgKzE2NCwxMyBAQAogICAgICAgICBzZWxmLl9ib3VuZHNfY2hlY2tpbmcobGFtYmRhIHR1cDogdGltZS5zdHJmdGltZSgnJywgdHVwKSkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdmFsdWVzX2Zvcl96ZXJvKHNlbGYpOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHVzaW5nIGFsbCB6ZXJvcyB1c2VzIHRoZSBwcm9wZXIgZGVmYXVsdCB2YWx1ZXMuCi0gICAgICAgICMgTm8gdGVzdCBmb3IgZGF5bGlnaHQgc2F2aW5ncyBzaW5jZSBzdHJmdGltZSgpIGRvZXMgbm90IGNoYW5nZSBvdXRwdXQKLSAgICAgICAgIyBiYXNlZCBvbiBpdHMgdmFsdWUuCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdXNpbmcgYWxsIHplcm9zIHVzZXMgdGhlIHByb3BlciBkZWZhdWx0CisgICAgICAgICMgdmFsdWVzLiAgTm8gdGVzdCBmb3IgZGF5bGlnaHQgc2F2aW5ncyBzaW5jZSBzdHJmdGltZSgpIGRvZXMKKyAgICAgICAgIyBub3QgY2hhbmdlIG91dHB1dCBiYXNlZCBvbiBpdHMgdmFsdWUgYW5kIG5vIHRlc3QgZm9yIHllYXIKKyAgICAgICAgIyBiZWNhdXNlIHN5c3RlbXMgdmFyeSBpbiB0aGVpciBzdXBwb3J0IGZvciB5ZWFyIDAuCiAgICAgICAgIGV4cGVjdGVkID0gIjIwMDAgMDEgMDEgMDAgMDAgMDAgMSAwMDEiCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgotICAgICAgICAgICAgcmVzdWx0ID0gdGltZS5zdHJmdGltZSgiJVkgJW0gJWQgJUggJU0gJVMgJXcgJWoiLCAoMCwpKjkpCisgICAgICAgICAgICByZXN1bHQgPSB0aW1lLnN0cmZ0aW1lKCIlWSAlbSAlZCAlSCAlTSAlUyAldyAlaiIsICgyMDAwLCkrKDAsKSo4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCByZXN1bHQpCiAKICAgICBkZWYgdGVzdF9zdHJwdGltZShzZWxmKToKQEAgLTEyOCwxMSArMTk3LDEzIEBACiAgICAgICAgIHRpbWUuYXNjdGltZSh0aW1lLmdtdGltZShzZWxmLnQpKQogCiAgICAgICAgICMgTWF4IHllYXIgaXMgb25seSBsaW1pdGVkIGJ5IHRoZSBzaXplIG9mIEMgaW50LgotICAgICAgICBzaXplb2ZfaW50ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAotICAgICAgICBiaWd5ZWFyID0gKDEgPDwgOCAqIHNpemVvZl9pbnQgLSAxKSAtIDEKLSAgICAgICAgYXNjID0gdGltZS5hc2N0aW1lKChiaWd5ZWFyLCA2LCAxKSArICgwLCkqNikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc2NbLWxlbihzdHIoYmlneWVhcikpOl0sIHN0cihiaWd5ZWFyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGltZS5hc2N0aW1lLCAoYmlneWVhciArIDEsKSArICgwLCkqOCkKKyAgICAgICAgZm9yIGJpZ3llYXIgaW4gVElNRV9NQVhZRUFSLCBUSU1FX01JTllFQVI6CisgICAgICAgICAgICBhc2MgPSB0aW1lLmFzY3RpbWUoKGJpZ3llYXIsIDYsIDEpICsgKDAsKSAqIDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzY1stbGVuKHN0cihiaWd5ZWFyKSk6XSwgc3RyKGJpZ3llYXIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChUSU1FX01BWFlFQVIgKyAxLCkgKyAoMCwpICogOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGltZS5hc2N0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoVElNRV9NSU5ZRUFSIC0gMSwpICsgKDAsKSAqIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAoMCwpICogMTApCkBAIC0xNTUsOCArMjI2LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLmN0aW1lKHRlc3R2YWwpWzIwOl0sIHN0cih5ZWFyKSkKIAotICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIodGltZSwgInR6c2V0IiksCi0gICAgICAgICJ0aW1lIG1vZHVsZSBoYXMgbm8gYXR0cmlidXRlIHR6c2V0IikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICJ0enNldCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIG1vZHVsZSBoYXMgbm8gYXR0cmlidXRlIHR6c2V0IikKICAgICBkZWYgdGVzdF90enNldChzZWxmKToKIAogICAgICAgICBmcm9tIG9zIGltcG9ydCBlbnZpcm9uCkBAIC0yMDgsMTEgKzI3OSwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0aW1lLmdtdGltZSh4bWFzMjAwMiksIHRpbWUubG9jYWx0aW1lKHhtYXMyMDAyKSkKIAogICAgICAgICAgICAgIyBJc3N1ZSAjMTE4ODY6IEF1c3RyYWxpYW4gRWFzdGVybiBTdGFuZGFyZCBUaW1lIChVVEMrMTApIGlzIGNhbGxlZAotICAgICAgICAgICAgIyAiRVNUIiAoYXMgRWFzdGVybiBTdGFuZGFyZCBUaW1lLCBVVEMtNSkgaW5zdGVhZCBvZiAiQUVTVCIgb24gc29tZQotICAgICAgICAgICAgIyBvcGVyYXRpbmcgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgd2hpY2ggaXMgd3JvbmcuIFNlZSBmb3IgZXhhbXBsZQotICAgICAgICAgICAgIyB0aGlzIGJ1ZzogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTkzODEwCisgICAgICAgICAgICAjICJFU1QiIChhcyBFYXN0ZXJuIFN0YW5kYXJkIFRpbWUsIFVUQy01KSBpbnN0ZWFkIG9mICJBRVNUIgorICAgICAgICAgICAgIyAobm9uLURTVCB0aW1lem9uZSksIGFuZCAiRURUIiBpbnN0ZWFkIG9mICJBRURUIiAoRFNUIHRpbWV6b25lKSwKKyAgICAgICAgICAgICMgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgd2hpY2ggaXMgd3JvbmcuIFNlZSBmb3IKKyAgICAgICAgICAgICMgZXhhbXBsZSB0aGlzIGJ1ZzoKKyAgICAgICAgICAgICMgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTkzODEwCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHRpbWUudHpuYW1lWzBdLCAoJ0FFU1QnICdFU1QnKSwgdGltZS50em5hbWVbMF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGltZS50em5hbWVbMV0gPT0gJ0FFRFQnLCBzdHIodGltZS50em5hbWVbMV0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWUudHpuYW1lWzFdIGluICgnQUVEVCcsICdFRFQnKSwgc3RyKHRpbWUudHpuYW1lWzFdKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRpbWUudHpuYW1lKSwgMikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5kYXlsaWdodCwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS50aW1lem9uZSwgLTM2MDAwKQpAQCAtMjM1LDcgKzMwOCw3IEBACiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgZnVuYyBpbiB0aW1lLmN0aW1lLCB0aW1lLmdtdGltZSwgdGltZS5sb2NhbHRpbWU6CiAgICAgICAgICAgICBmb3IgdW5yZWFzb25hYmxlIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywgdW5yZWFzb25hYmxlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGZ1bmMsIHVucmVhc29uYWJsZSkKIAogICAgIGRlZiB0ZXN0X2N0aW1lX3dpdGhvdXRfYXJnKHNlbGYpOgogICAgICAgICAjIE5vdCBzdXJlIGhvdyB0byBjaGVjayB0aGUgdmFsdWVzLCBzaW5jZSB0aGUgY2xvY2sgY291bGQgdGljawpAQCAtMjU4LDYgKzMzMSwxMTcgQEAKICAgICAgICAgdDEgPSB0aW1lLm1rdGltZShsdDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwodDEsIHQwLCBkZWx0YT0wLjIpCiAKKyAgICBkZWYgdGVzdF9ta3RpbWUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE3MjY2ODcKKyAgICAgICAgZm9yIHQgaW4gKC0yLCAtMSwgMCwgMSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHQgPSB0aW1lLmxvY2FsdGltZSh0KQorICAgICAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5ta3RpbWUodHQpLCB0KQorCisgICAgIyBJc3N1ZSAjMTMzMDk6IHBhc3NpbmcgZXh0cmVtZSB2YWx1ZXMgdG8gbWt0aW1lKCkgb3IgbG9jYWx0aW1lKCkKKyAgICAjIGJvcmtzIHRoZSBnbGliYydzIGludGVybmFsIHRpbWV6b25lIGRhdGEuCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MocGxhdGZvcm0ubGliY192ZXIoKVswXSAhPSAnZ2xpYmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNhYmxlZCBiZWNhdXNlIG9mIGEgYnVnIGluIGdsaWJjLiBJc3N1ZSAjMTMzMDkiKQorICAgIGRlZiB0ZXN0X21rdGltZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBJdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGlhYmx5IG1ha2UgbWt0aW1lIHJldHVybiBlcnJvcgorICAgICAgICAjIG9uIGFsbCBwbGF0Zm9tLiAgVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGF0IG5vIG90aGVyIGV4Y2VwdGlvbgorICAgICAgICAjIHRoYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQgZm9yIGFuIGV4dHJlbWUgdmFsdWUuCisgICAgICAgIHR0ID0gdGltZS5nbXRpbWUoc2VsZi50KQorICAgICAgICB0em5hbWUgPSB0aW1lLnN0cmZ0aW1lKCclWicsIHR0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR6bmFtZSwgJ0xNVCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUubWt0aW1lKCgtMSwgMSwgMSwgMCwgMCwgMCwgLTEsIC0xLCAtMSkpCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuc3RyZnRpbWUoJyVaJywgdHQpLCB0em5hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdtb25vdG9uaWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLm1vbm90b25pYycpCisgICAgZGVmIHRlc3RfbW9ub3RvbmljKHNlbGYpOgorICAgICAgICB0MSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgIHQyID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBkdCA9IHQyIC0gdDEKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHQyLCB0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChkdCwgMC4xLCBkZWx0YT0wLjIpCisKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ21vbm90b25pYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLmFkanVzdGFibGUpCisKKyAgICBkZWYgdGVzdF9wZXJmX2NvdW50ZXIoc2VsZik6CisgICAgICAgIHRpbWUucGVyZl9jb3VudGVyKCkKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfdGltZShzZWxmKToKKyAgICAgICAgIyBwcm9jZXNzX3RpbWUoKSBzaG91bGQgbm90IGluY2x1ZGUgdGltZSBzcGVuZCBkdXJpbmcgYSBzbGVlcAorICAgICAgICBzdGFydCA9IHRpbWUucHJvY2Vzc190aW1lKCkKKyAgICAgICAgdGltZS5zbGVlcCgwLjEwMCkKKyAgICAgICAgc3RvcCA9IHRpbWUucHJvY2Vzc190aW1lKCkKKyAgICAgICAgIyB1c2UgMjAgbXMgYmVjYXVzZSBwcm9jZXNzX3RpbWUoKSBoYXMgdXN1YWxseSBhIHJlc29sdXRpb24gb2YgMTUgbXMKKyAgICAgICAgIyBvbiBXaW5kb3dzCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzdG9wIC0gc3RhcnQsIDAuMDIwKQorCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCdwcm9jZXNzX3RpbWUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5hZGp1c3RhYmxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnbW9ub3RvbmljJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5tb25vdG9uaWMnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX3NldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX3NldHRpbWUnKQorICAgIGRlZiB0ZXN0X21vbm90b25pY19zZXR0aW1lKHNlbGYpOgorICAgICAgICB0MSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcmVhbHRpbWUgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSkKKyAgICAgICAgIyBqdW1wIGJhY2t3YXJkIHdpdGggYW4gb2Zmc2V0IG9mIDEgaG91cgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSwgcmVhbHRpbWUgLSAzNjAwKQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoZXJyKQorICAgICAgICB0MiA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUsIHJlYWx0aW1lKQorICAgICAgICAjIG1vbm90b25pYyBtdXN0IG5vdCBiZSBhZmZlY3RlZCBieSBzeXN0ZW0gY2xvY2sgdXBkYXRlcworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCh0MiwgdDEpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTM4NDc6IGNoZWNrIGZvciBsb2NhbHRpbWUoKSBmYWlsdXJlCisgICAgICAgIGludmFsaWRfdGltZV90ID0gTm9uZQorICAgICAgICBmb3IgdGltZV90IGluICgtMSwgMioqMzAsIDIqKjMzLCAyKio2MCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGltZS5sb2NhbHRpbWUodGltZV90KQorICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmVlZCA2NC1iaXQgdGltZV90IikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIGludmFsaWRfdGltZV90ID0gdGltZV90CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgaW52YWxpZF90aW1lX3QgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInVuYWJsZSB0byBmaW5kIGFuIGludmFsaWQgdGltZV90IHZhbHVlIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCB0aW1lLmxvY2FsdGltZSwgaW52YWxpZF90aW1lX3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHRpbWUuY3RpbWUsIGludmFsaWRfdGltZV90KQorCisgICAgZGVmIHRlc3RfZ2V0X2Nsb2NrX2luZm8oc2VsZik6CisgICAgICAgIGNsb2NrcyA9IFsnY2xvY2snLCAncGVyZl9jb3VudGVyJywgJ3Byb2Nlc3NfdGltZScsICd0aW1lJ10KKyAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnbW9ub3RvbmljJyk6CisgICAgICAgICAgICBjbG9ja3MuYXBwZW5kKCdtb25vdG9uaWMnKQorCisgICAgICAgIGZvciBuYW1lIGluIGNsb2NrczoKKyAgICAgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKG5hbWUpCisgICAgICAgICAgICAjc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8sIGRpY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5pbXBsZW1lbnRhdGlvbiwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbmZvLmltcGxlbWVudGF0aW9uLCAnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLm1vbm90b25pYywgYm9vbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLnJlc29sdXRpb24sIGZsb2F0KQorICAgICAgICAgICAgIyAwLjAgPCByZXNvbHV0aW9uIDw9IDEuMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGluZm8ucmVzb2x1dGlvbiwgMC4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoaW5mby5yZXNvbHV0aW9uLCAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5hZGp1c3RhYmxlLCBib29sKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuZ2V0X2Nsb2NrX2luZm8sICd4eHgnKQorCisKIGNsYXNzIFRlc3RMb2NhbGUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5vbGRsb2MgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwpCkBAIC0yNzYsMTkgKzQ2MCwxMiBAQAogCiAKIGNsYXNzIF9CYXNlWWVhclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGFjY2VwdDJkeWVhciA9IE5vbmUKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF9hY2NlcHQyZHllYXIgPSB0aW1lLmFjY2VwdDJkeWVhcgotICAgICAgICB0aW1lLmFjY2VwdDJkeWVhciA9IHNlbGYuYWNjZXB0MmR5ZWFyCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHRpbWUuYWNjZXB0MmR5ZWFyID0gc2VsZi5zYXZlZF9hY2NlcHQyZHllYXIKLQogICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAogY2xhc3MgX1Rlc3RBc2N0aW1lWWVhcjoKKyAgICBfZm9ybWF0ID0gJyVkJworCiAgICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6CiAgICAgICAgIHJldHVybiB0aW1lLmFzY3RpbWUoKHksKSArICgwLCkgKiA4KS5zcGxpdCgpWy0xXQogCkBAIC0yOTgsMTE0ICs0NzUsMjExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1Njc4OSksICcxMjM0NTY3ODknKQogCiBjbGFzcyBfVGVzdFN0cmZ0aW1lWWVhcjoKLSAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKLSAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyVZJywgKHksKSArICgwLCkgKiA4KS5zcGxpdCgpWy0xXQogCi0gICAgZGVmIHRlc3RfbGFyZ2VfeWVhcihzZWxmKToKKyAgICAjIElzc3VlIDEzMzA1OiAgRm9yIHllYXJzIDwgMTAwMCwgdGhlIHZhbHVlIGlzIG5vdCBhbHdheXMKKyAgICAjIHBhZGRlZCB0byA0IGRpZ2l0cyBhY3Jvc3MgcGxhdGZvcm1zLiAgVGhlIEMgc3RhbmRhcmQKKyAgICAjIGFzc3VtZXMgeWVhciA+PSAxOTAwLCBzbyBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBudW1iZXIKKyAgICAjIG9mIGRpZ2l0cy4KKworICAgIGlmIHRpbWUuc3RyZnRpbWUoJyVZJywgKDEsKSArICgwLCkgKiA4KSA9PSAnMDAwMSc6CisgICAgICAgIF9mb3JtYXQgPSAnJTA0ZCcKKyAgICBlbHNlOgorICAgICAgICBfZm9ybWF0ID0gJyVkJworCisgICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6CisgICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclWScsICh5LCkgKyAoMCwpICogOCkKKworICAgIGRlZiB0ZXN0XzRkeWVhcihzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGNhbiByZXR1cm4gdGhlIHplcm8gcGFkZGVkIHZhbHVlLgorICAgICAgICBpZiBzZWxmLl9mb3JtYXQgPT0gJyUwNGQnOgorICAgICAgICAgICAgc2VsZi50ZXN0X3llYXIoJyUwNGQnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVmIHllYXI0ZCh5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJTRZJywgKHksKSArICgwLCkgKiA4KQorICAgICAgICAgICAgc2VsZi50ZXN0X3llYXIoJyUwNGQnLCBmdW5jPXllYXI0ZCkKKworICAgIGRlZiBza2lwX2lmX25vdF9zdXBwb3J0ZWQoeSk6CisgICAgICAgIG1zZyA9ICJzdHJmdGltZSgpIGlzIGxpbWl0ZWQgdG8gWzE7IDk5OTldIHdpdGggVmlzdWFsIFN0dWRpbyIKICAgICAgICAgIyBDaGVjayB0aGF0IGl0IGRvZXNuJ3QgY3Jhc2ggZm9yIHllYXIgPiA5OTk5CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRleHQgPSBzZWxmLnllYXJzdHIoMTIzNDUpCisgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclWScsICh5LCkgKyAoMCwpICogOCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAjIHN0cmZ0aW1lKCkgaXMgbGltaXRlZCB0byBbMTsgOTk5OV0gd2l0aCBWaXN1YWwgU3R1ZGlvCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCAnMTIzNDUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NTY3ODkpLCAnMTIzNDU2Nzg5JykKKyAgICAgICAgICAgIGNvbmQgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZCA9IFRydWUKKyAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBVbmxlc3MoY29uZCwgbXNnKQogCi1jbGFzcyBfVGVzdDJkWWVhcihfQmFzZVllYXJUZXN0KToKLSAgICBhY2NlcHQyZHllYXIgPSAxCisgICAgQHNraXBfaWZfbm90X3N1cHBvcnRlZCgxMDAwMCkKKyAgICBkZWYgdGVzdF9sYXJnZV95ZWFyKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS50ZXN0X2xhcmdlX3llYXIoKQogCi0gICAgZGVmIHRlc3RfeWVhcihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigwKSwgJzIwMDAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoNjkpLCAnMTk2OScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig2OCksICcyMDY4JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDk5KSwgJzE5OTknKQorICAgIEBza2lwX2lmX25vdF9zdXBwb3J0ZWQoMCkKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkudGVzdF9uZWdhdGl2ZSgpCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnllYXJzdHIsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnllYXJzdHIsIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi55ZWFyc3RyLCA5OTkpCisgICAgZGVsIHNraXBfaWZfbm90X3N1cHBvcnRlZAorCiAKIGNsYXNzIF9UZXN0NGRZZWFyKF9CYXNlWWVhclRlc3QpOgotICAgIGFjY2VwdDJkeWVhciA9IDAKKyAgICBfZm9ybWF0ID0gJyVkJwogCi0gICAgZGVmIHRlc3RfeWVhcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoMSksICAgICAoJzEnLCAnMDAwMScpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig2OCksICAgKCc2OCcsICcwMDY4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDY5KSwgICAoJzY5JywgJzAwNjknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoOTkpLCAgICgnOTknLCAnMDA5OScpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig5OTkpLCAoJzk5OScsICcwOTk5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDk5OTkpLCAnOTk5OScpCisgICAgZGVmIHRlc3RfeWVhcihzZWxmLCBmbXQ9Tm9uZSwgZnVuYz1Ob25lKToKKyAgICAgICAgZm10ID0gZm10IG9yIHNlbGYuX2Zvcm1hdAorICAgICAgICBmdW5jID0gZnVuYyBvciBzZWxmLnllYXJzdHIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDEpLCAgICBmbXQgJSAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoNjgpLCAgIGZtdCAlIDY4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoNjkpLCAgIGZtdCAlIDY5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoOTkpLCAgIGZtdCAlIDk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoOTk5KSwgIGZtdCAlIDk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDk5OTkpLCBmbXQgJSA5OTk5KQorCisgICAgZGVmIHRlc3RfbGFyZ2VfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDUpLCAnMTIzNDUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NTY3ODkpLCAnMTIzNDU2Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoVElNRV9NQVhZRUFSKSwgc3RyKFRJTUVfTUFYWUVBUikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYueWVhcnN0ciwgVElNRV9NQVhZRUFSICsgMSkKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXh0ID0gc2VsZi55ZWFyc3RyKC0xKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICMgc3RyZnRpbWUoKSBpcyBsaW1pdGVkIHRvIFsxOyA5OTk5XSB3aXRoIFZpc3VhbCBTdHVkaW8KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmFzc2VydEluKHRleHQsICgnLTEnLCAnLTAwMScpKQotCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xKSwgc2VsZi5fZm9ybWF0ICUgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0KSwgJy0xMjM0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQ1NiksICctMTIzNDU2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQ1Njc4OSksIHN0cigtMTIzNDU2Nzg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQ1Njc4OTApLCBzdHIoLTEyMzQ1Njc4OTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cihUSU1FX01JTllFQVIgKyAxOTAwKSwgc3RyKFRJTUVfTUlOWUVBUiArIDE5MDApKQorICAgICAgICAjIElzc3VlICMxMzMxMjogaXQgbWF5IHJldHVybiB3cm9uZyB2YWx1ZSBmb3IgeWVhciA8IFRJTUVfTUlOWUVBUiArIDE5MDAKKyAgICAgICAgIyBTa2lwIHRoZSB2YWx1ZSB0ZXN0LCBidXQgY2hlY2sgdGhhdCBubyBlcnJvciBpcyByYWlzZWQKKyAgICAgICAgc2VsZi55ZWFyc3RyKFRJTUVfTUlOWUVBUikKKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cihUSU1FX01JTllFQVIpLCBzdHIoVElNRV9NSU5ZRUFSKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi55ZWFyc3RyLCBUSU1FX01JTllFQVIgLSAxKQogCiAKLSAgICBkZWYgdGVzdF9ta3RpbWUoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzE3MjY2ODcKLSAgICAgICAgZm9yIHQgaW4gKC0yLCAtMSwgMCwgMSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdHQgPSB0aW1lLmxvY2FsdGltZSh0KQotICAgICAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5ta3RpbWUodHQpLCB0KQotICAgICAgICAjIEl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsaWFibHkgbWFrZSBta3RpbWUgcmV0dXJuIGVycm9yCi0gICAgICAgICMgb24gYWxsIHBsYXRmb20uICBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgZXhjZXB0aW9uCi0gICAgICAgICMgdGhhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZCBmb3IgYW4gZXh0cmVtZSB2YWx1ZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5ta3RpbWUoKC0xLCAxLCAxLCAwLCAwLCAwLCAtMSwgLTEsIC0xKSkKLSAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLWNsYXNzIFRlc3RBc2N0aW1lQWNjZXB0MmRZZWFyKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0MmRZZWFyKToKLSAgICBwYXNzCi0KLWNsYXNzIFRlc3RTdHJmdGltZUFjY2VwdDJkWWVhcihfVGVzdFN0cmZ0aW1lWWVhciwgX1Rlc3QyZFllYXIpOgotICAgIHBhc3MKLQogY2xhc3MgVGVzdEFzY3RpbWU0ZHllYXIoX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3Q0ZFllYXIpOgogICAgIHBhc3MKIAogY2xhc3MgVGVzdFN0cmZ0aW1lNGR5ZWFyKF9UZXN0U3RyZnRpbWVZZWFyLCBfVGVzdDRkWWVhcik6CiAgICAgcGFzcwogCi1jbGFzcyBUZXN0MmR5ZWFyQm9vbChfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDJkWWVhcik6Ci0gICAgYWNjZXB0MmR5ZWFyID0gVHJ1ZQogCi1jbGFzcyBUZXN0NGR5ZWFyQm9vbChfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDRkWWVhcik6Ci0gICAgYWNjZXB0MmR5ZWFyID0gRmFsc2UKK2NsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKKyAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKKyAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAorICAgICAgICApCiAKLWNsYXNzIFRlc3RBY2NlcHQyWWVhckJhZChfVGVzdEFzY3RpbWVZZWFyLCBfQmFzZVllYXJUZXN0KToKLSAgICBjbGFzcyBYOgotICAgICAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2JvbycpCi0gICAgYWNjZXB0MmR5ZWFyID0gWCgpCi0gICAgZGVmIHRlc3RfMmR5ZWFyKHNlbGYpOgotICAgICAgICBwYXNzCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLnllYXJzdHIsIDIwMCkKKyAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAorICAgICAgICBmb3Igb2JqLCB0aW1lX3QgaW4gKAorICAgICAgICAgICAgKDAsIDApLAorICAgICAgICAgICAgKC0xLCAtMSksCisgICAgICAgICAgICAoLTEuMCwgLTEpLAorICAgICAgICAgICAgKC0xLjksIC0xKSwKKyAgICAgICAgICAgICgxLjAsIDEpLAorICAgICAgICAgICAgKDEuOSwgMSksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZV90KG9iaiksIHRpbWVfdCkKIAorICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQpCisKKyAgICBkZWYgdGVzdF90aW1ldmFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1ldmFsCisgICAgICAgIGZvciBvYmosIHRpbWV2YWwgaW4gKAorICAgICAgICAgICAgKDAsICgwLCAwKSksCisgICAgICAgICAgICAoLTEsICgtMSwgMCkpLAorICAgICAgICAgICAgKC0xLjAsICgtMSwgMCkpLAorICAgICAgICAgICAgKDFlLTYsICgwLCAxKSksCisgICAgICAgICAgICAoLTFlLTYsICgtMSwgOTk5OTk5KSksCisgICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApKSwKKyAgICAgICAgICAgICgxLjEyMzQ1NjAsICgxLCAxMjM0NTYpKSwKKyAgICAgICAgICAgICgxLjEyMzQ1NjksICgxLCAxMjM0NTYpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTYwLCAoLTIsIDg3NjU0NCkpLAorICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbChvYmopLCB0aW1ldmFsKQorCisgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsIGludmFsaWQpCisKKyAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMKKyAgICAgICAgZm9yIG9iaiwgdGltZXNwZWMgaW4gKAorICAgICAgICAgICAgKDAsICgwLCAwKSksCisgICAgICAgICAgICAoLTEsICgtMSwgMCkpLAorICAgICAgICAgICAgKC0xLjAsICgtMSwgMCkpLAorICAgICAgICAgICAgKDFlLTksICgwLCAxKSksCisgICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSksCisgICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDAwMDApKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3ODkpKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3ODkpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSkpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjEwKSksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMob2JqKSwgdGltZXNwZWMpCisKKyAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsIGludmFsaWQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKKworICAgICAgICAjIEdldCB0aGUgbG9jYWx0aW1lIGFuZCBleGFtaW5lIGl0IGZvciB0aGUgb2Zmc2V0IGFuZCB6b25lLgorICAgICAgICBsdCA9IHRpbWUubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobHQsICJ0bV9nbXRvZmYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobHQsICJ0bV96b25lIikpCisKKyAgICAgICAgIyBTZWUgaWYgdGhlIG9mZnNldCBhbmQgem9uZSBhcmUgc2ltaWxhciB0byB0aGUgbW9kdWxlCisgICAgICAgICMgYXR0cmlidXRlcy4KKyAgICAgICAgaWYgbHQudG1fZ210b2ZmIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIodGltZSwgInRpbWV6b25lIikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx0LnRtX2dtdG9mZiwgLVt0aW1lLnRpbWV6b25lLCB0aW1lLmFsdHpvbmVdW2x0LnRtX2lzZHN0XSkKKyAgICAgICAgaWYgbHQudG1fem9uZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKHRpbWUsICJ0em5hbWUiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHQudG1fem9uZSwgdGltZS50em5hbWVbbHQudG1faXNkc3RdKQorCisgICAgICAgICMgVHJ5IGFuZCBtYWtlIFVOSVggdGltZXMgZnJvbSB0aGUgbG9jYWx0aW1lIGFuZCBhIDktdHVwbGUKKyAgICAgICAgIyBjcmVhdGVkIGZyb20gdGhlIGxvY2FsdGltZS4gVGVzdCB0byBzZWUgdGhhdCB0aGUgdGltZXMgYXJlCisgICAgICAgICMgdGhlIHNhbWUuCisgICAgICAgIHQgPSB0aW1lLm1rdGltZShsdCk7IHQ5ID0gdGltZS5ta3RpbWUobHRbOjldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHQ5KQorCisgICAgICAgICMgTWFrZSBsb2NhbHRpbWVzIGZyb20gdGhlIFVOSVggdGltZXMgYW5kIGNvbXBhcmUgdGhlbSB0bworICAgICAgICAjIHRoZSBvcmlnaW5hbCBsb2NhbHRpbWUsIHRodXMgbWFraW5nIGEgcm91bmQgdHJpcC4KKyAgICAgICAgbmV3X2x0ID0gdGltZS5sb2NhbHRpbWUodCk7IG5ld19sdDkgPSB0aW1lLmxvY2FsdGltZSh0OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQsIGx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdC50bV9nbXRvZmYsIGx0LnRtX2dtdG9mZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQudG1fem9uZSwgbHQudG1fem9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQ5LCBsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQudG1fZ210b2ZmLCBsdC50bV9nbXRvZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0OS50bV96b25lLCBsdC50bV96b25lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9zdHJwdGltZV90aW1lem9uZShzZWxmKToKKyAgICAgICAgdCA9IHRpbWUuc3RycHRpbWUoIlVUQyIsICIlWiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50bV96b25lLCAnVVRDJykKKyAgICAgICAgdCA9IHRpbWUuc3RycHRpbWUoIiswNTAwIiwgIiV6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRtX2dtdG9mZiwgNSAqIDM2MDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3Nob3J0X3RpbWVzKHNlbGYpOgorCisgICAgICAgIGltcG9ydCBwaWNrbGUKKworICAgICAgICAjIExvYWQgYSBzaG9ydCB0aW1lIHN0cnVjdHVyZSB1c2luZyBwaWNrbGUuCisgICAgICAgIHN0ID0gYiJjdGltZVxuc3RydWN0X3RpbWVcbnAwXG4oKEkyMDA3XG5JOFxuSTExXG5JMVxuSTI0XG5JNDlcbkk1XG5JMjIzXG5JMVxudHAxXG4oZHAyXG50cDNcblJwNFxuLiIKKyAgICAgICAgbHQgPSBwaWNrbGUubG9hZHMoc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobHQudG1fZ210b2ZmLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGltZVRlc3RDYXNlLAogICAgICAgICBUZXN0TG9jYWxlLAotICAgICAgICBUZXN0QXNjdGltZUFjY2VwdDJkWWVhciwKLSAgICAgICAgVGVzdFN0cmZ0aW1lQWNjZXB0MmRZZWFyLAogICAgICAgICBUZXN0QXNjdGltZTRkeWVhciwKICAgICAgICAgVGVzdFN0cmZ0aW1lNGR5ZWFyLAotICAgICAgICBUZXN0MmR5ZWFyQm9vbCwKLSAgICAgICAgVGVzdDRkeWVhckJvb2wsCi0gICAgICAgIFRlc3RBY2NlcHQyWWVhckJhZCkKKyAgICAgICAgVGVzdFB5dGltZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKaW5kZXggZjk2NTJjZS4uYjRhNThmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CkBAIC0yODksNiArMjg5LDY0IEBACiAgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOSkgKDEsIDMwKQogICAgIFNUUklORyAgICAgJ1IiQUJDIicgICAgICAoMSwgMzEpICgxLCAzNykKIAorICAgID4+PiBkdW1wX3Rva2VucygidSdhYmMnICsgVSdhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgInUnYWJjJyIgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICJVJ2FiYyciICAgICAgKDEsIDkpICgxLCAxNSkKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ3UiYWJjIiArIFUiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICd1ImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAnVSJhYmMiJyAgICAgICgxLCA5KSAoMSwgMTUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImInYWJjJyArIEInYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJiJ2FiYyciICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAiQidhYmMnIiAgICAgICgxLCA5KSAoMSwgMTUpCisgICAgPj4+IGR1bXBfdG9rZW5zKCdiImFiYyIgKyBCImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAnYiJhYmMiJyAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgJ0IiYWJjIicgICAgICAoMSwgOSkgKDEsIDE1KQorICAgID4+PiBkdW1wX3Rva2VucygiYnInYWJjJyArIGJSJ2FiYycgKyBCcidhYmMnICsgQlInYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJicidhYmMnIiAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAiYlInYWJjJyIgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICJCcidhYmMnIiAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgIkJSJ2FiYyciICAgICAoMSwgMzApICgxLCAzNykKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ2JyImFiYyIgKyBiUiJhYmMiICsgQnIiYWJjIiArIEJSImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAnYnIiYWJjIicgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgJ2JSImFiYyInICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAnQnIiYWJjIicgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICdCUiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCisgICAgPj4+IGR1bXBfdG9rZW5zKCJyYidhYmMnICsgckInYWJjJyArIFJiJ2FiYycgKyBSQidhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgInJiJ2FiYyciICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICJyQidhYmMnIiAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgIlJiJ2FiYyciICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAiUkInYWJjJyIgICAgICgxLCAzMCkgKDEsIDM3KQorICAgID4+PiBkdW1wX3Rva2VucygncmIiYWJjIiArIHJCImFiYyIgKyBSYiJhYmMiICsgUkIiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICdyYiJhYmMiJyAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAnckIiYWJjIicgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICdSYiJhYmMiJyAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgJ1JCImFiYyInICAgICAoMSwgMzApICgxLCAzNykKKwogT3BlcmF0b3JzCiAKICAgICA+Pj4gZHVtcF90b2tlbnMoImRlZiBkMjIoYSwgYiwgYz0yLCBkPTIsICprKTogcGFzcyIpCkBAIC01NTIsMTEgKzYxMCw2IEBACiAgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICg0LCAwKSAoNCwgMCkKICAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDQsIDApICg0LCAwKQogCi1QYXRob2xvZ2ljYWwgd2hpdGVzcGFjZSAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE2MTUyKQotICAgID4+PiBkdW1wX3Rva2VucygiQCAgICAgICAgICAiKQotICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCi0gICAgT1AgICAgICAgICAnQCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKLQogTm9uLWFzY2lpIGlkZW50aWZpZXJzCiAKICAgICA+Pj4gZHVtcF90b2tlbnMoIsOWcnRlciA9ICdwbGFjZXMnXFxuZ3LDvG4gPSAnZ3JlZW4nIikKQEAgLTU2OCwxNSArNjIxLDI4IEBACiAgICAgTkFNRSAgICAgICAnZ3LDvG4nICAgICAgICAoMiwgMCkgKDIsIDQpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgyLCA1KSAoMiwgNikKICAgICBTVFJJTkcgICAgICInZ3JlZW4nIiAgICAgKDIsIDcpICgyLCAxNCkKKworTGVnYWN5IHVuaWNvZGUgbGl0ZXJhbHM6CisKKyAgICA+Pj4gZHVtcF90b2tlbnMoIsOWcnRlciA9IHUncGxhY2VzJ1xcbmdyw7xuID0gVSdncmVlbiciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnw5ZydGVyJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBTVFJJTkcgICAgICJ1J3BsYWNlcyciICAgKDEsIDgpICgxLCAxNykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNykgKDEsIDE4KQorICAgIE5BTUUgICAgICAgJ2dyw7xuJyAgICAgICAgKDIsIDApICgyLCA0KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMiwgNSkgKDIsIDYpCisgICAgU1RSSU5HICAgICAiVSdncmVlbiciICAgICgyLCA3KSAoMiwgMTUpCiAiIiIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRva2VuaXplIGltcG9ydCAodG9rZW5pemUsIF90b2tlbml6ZSwgdW50b2tlbml6ZSwgTlVNQkVSLCBOQU1FLCBPUCwKLSAgICAgICAgICAgICAgICAgICAgIFNUUklORywgRU5ETUFSS0VSLCB0b2tfbmFtZSwgZGV0ZWN0X2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCBFTkRNQVJLRVIsIEVOQ09ESU5HLCB0b2tfbmFtZSwgZGV0ZWN0X2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgb3BlbiBhcyB0b2tlbml6ZV9vcGVuKQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKIGltcG9ydCBvcywgc3lzLCBnbG9iCitpbXBvcnQgdG9rZW4KIAogZGVmIGR1bXBfdG9rZW5zKHMpOgogICAgICIiIlByaW50IG91dCB0aGUgdG9rZW5zIGluIHMgaW4gYSB0YWJsZSBmb3JtYXQuCkBAIC02MDUsNyArNjcxLDcgQEAKICAgICAgICAgZi5jbG9zZSgpCiAgICAgdG9rZW5zMSA9IFt0b2tbOjJdIGZvciB0b2sgaW4gdG9rZW5fbGlzdF0KICAgICBuZXdfYnl0ZXMgPSB1bnRva2VuaXplKHRva2VuczEpCi0gICAgcmVhZGxpbmUgPSAobGluZSBmb3IgbGluZSBpbiBuZXdfYnl0ZXMuc3BsaXRsaW5lcygxKSkuX19uZXh0X18KKyAgICByZWFkbGluZSA9IChsaW5lIGZvciBsaW5lIGluIG5ld19ieXRlcy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKS5fX25leHRfXwogICAgIHRva2VuczIgPSBbdG9rWzoyXSBmb3IgdG9rIGluIHRva2VuaXplKHJlYWRsaW5lKV0KICAgICByZXR1cm4gdG9rZW5zMSA9PSB0b2tlbnMyCiAKQEAgLTkwMCw2ICs5NjYsMzUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAuZW5jb2RpbmcsICd1dGYtOC1zaWcnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5tb2RlLCAncicpCiAKKyAgICBkZWYgdGVzdF9maWxlbmFtZV9pbl9leGNlcHRpb24oc2VsZik6CisgICAgICAgICMgV2hlbiBwb3NzaWJsZSwgaW5jbHVkZSB0aGUgZmlsZSBuYW1lIGluIHRoZSBleGNlcHRpb24uCisgICAgICAgIHBhdGggPSAnc29tZV9maWxlX3BhdGgnCisgICAgICAgIGxpbmVzID0gKAorICAgICAgICAgICAgYidwcmludCgiXHhkZiIpJywgIyBMYXRpbi0xOiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworICAgICAgICAgICAgKQorICAgICAgICBjbGFzcyBCdW5rOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5fbGluZXMgPSBsaW5lcworICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorCisgICAgICAgICAgICBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lc1tzZWxmLl9pbmRleF0KKyAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGlucyA9IEJ1bmsobGluZXMsIHBhdGgpCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSBsYWNraW5nIGEgbmFtZSBpc24ndCBhbiBpc3N1ZS4KKyAgICAgICAgICAgIGRlbCBpbnMubmFtZQorICAgICAgICAgICAgZGV0ZWN0X2VuY29kaW5nKGlucy5yZWFkbGluZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnLip7fScuZm9ybWF0KHBhdGgpKToKKyAgICAgICAgICAgIGlucyA9IEJ1bmsobGluZXMsIHBhdGgpCisgICAgICAgICAgICBkZXRlY3RfZW5jb2RpbmcoaW5zLnJlYWRsaW5lKQorCisKIGNsYXNzIFRlc3RUb2tlbml6ZShUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90b2tlbml6ZShzZWxmKToKQEAgLTk0MSw2ICsxMDM2LDgyIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY29kaW5nX3VzZWQsIGVuY29kaW5nKQogCisgICAgZGVmIGFzc2VydEV4YWN0VHlwZUVxdWFsKHNlbGYsIG9wc3RyLCAqb3B0eXBlcyk6CisgICAgICAgIHRva2VucyA9IGxpc3QodG9rZW5pemUoQnl0ZXNJTyhvcHN0ci5lbmNvZGUoJ3V0Zi04JykpLnJlYWRsaW5lKSkKKyAgICAgICAgbnVtX29wdHlwZXMgPSBsZW4ob3B0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odG9rZW5zKSwgMiArIG51bV9vcHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1swXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50b2tfbmFtZVtFTkNPRElOR10pCisgICAgICAgIGZvciBpIGluIHJhbmdlKG51bV9vcHR5cGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zW2kgKyAxXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbb3B0eXBlc1tpXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zWzEgKyBudW1fb3B0eXBlc10uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbdG9rZW4uRU5ETUFSS0VSXSkKKworICAgIGRlZiB0ZXN0X2V4YWN0X3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJygpJywgdG9rZW4uTFBBUiwgdG9rZW4uUlBBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnW10nLCB0b2tlbi5MU1FCLCB0b2tlbi5SU1FCKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc6JywgdG9rZW4uQ09MT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJywnLCB0b2tlbi5DT01NQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnOycsIHRva2VuLlNFTUkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJysnLCB0b2tlbi5QTFVTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCctJywgdG9rZW4uTUlOVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyonLCB0b2tlbi5TVEFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvJywgdG9rZW4uU0xBU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3wnLCB0b2tlbi5WQkFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcmJywgdG9rZW4uQU1QRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzwnLCB0b2tlbi5MRVNTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+JywgdG9rZW4uR1JFQVRFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPScsIHRva2VuLkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcuJywgdG9rZW4uRE9UKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCclJywgdG9rZW4uUEVSQ0VOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgne30nLCB0b2tlbi5MQlJBQ0UsIHRva2VuLlJCUkFDRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPT0nLCB0b2tlbi5FUUVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCchPScsIHRva2VuLk5PVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PScsIHRva2VuLkxFU1NFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj0nLCB0b2tlbi5HUkVBVEVSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ34nLCB0b2tlbi5USUxERSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXicsIHRva2VuLkNJUkNVTUZMRVgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw8JywgdG9rZW4uTEVGVFNISUZUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+PicsIHRva2VuLlJJR0hUU0hJRlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyoqJywgdG9rZW4uRE9VQkxFU1RBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKz0nLCB0b2tlbi5QTFVTRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy09JywgdG9rZW4uTUlORVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyo9JywgdG9rZW4uU1RBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvPScsIHRva2VuLlNMQVNIRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyU9JywgdG9rZW4uUEVSQ0VOVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcmPScsIHRva2VuLkFNUEVSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3w9JywgdG9rZW4uVkJBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdePScsIHRva2VuLkNJUkNVTUZMRVhFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXj0nLCB0b2tlbi5DSVJDVU1GTEVYRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw8PScsIHRva2VuLkxFRlRTSElGVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+Pj0nLCB0b2tlbi5SSUdIVFNISUZURVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyoqPScsIHRva2VuLkRPVUJMRVNUQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy8nLCB0b2tlbi5ET1VCTEVTTEFTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy89JywgdG9rZW4uRE9VQkxFU0xBU0hFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCcsIHRva2VuLkFUKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ2EqKjIrYioqMj09YyoqMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlBMVVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkVRRVFVQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd7MSwgMiwgM30nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkxCUkFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OVU1CRVIsIHRva2VuLkNPTU1BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5VTUJFUiwgdG9rZW4uQ09NTUEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlJCUkFDRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXih4ICYgMHgxKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uQ0lSQ1VNRkxFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5MUEFSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5BTUUsIHRva2VuLkFNUEVSLCB0b2tlbi5OVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uUlBBUikKKworICAgIGRlZiB0ZXN0X3BhdGhvbG9naWNhbF90cmFpbGluZ193aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTYxNTIKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCAgICAgICAgICAnLCB0b2tlbi5BVCkKIAogX190ZXN0X18gPSB7ImRvY3Rlc3RzIiA6IGRvY3Rlc3RzLCAnZGVjaXN0bXQnOiBkZWNpc3RtdH0KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKaW5kZXggOTQwM2RhNy4uZjk3MTUxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CkBAIC02LDggKzYsOSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzY29uZmlnCkBAIC01MCw3ICs1MSw3IEBACiAgICAgICAgICAgICAgICAgKHN5cy5leGVjdXRhYmxlLCBzZWxmLnNjcmlwdCkgKyBhcmdzLAogICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkgYXMgcHJvYzoKLSAgICAgICAgICAgIG91dCwgZXJyID0gcHJvYy5jb21tdW5pY2F0ZShzb3VyY2UuZW5jb2RlKCkpCisgICAgICAgICAgICBvdXQsIGVyciA9IHByb2MuY29tbXVuaWNhdGUoc291cmNlKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlcnIpCiAgICAgICAgIHJldHVybiBvdXQKIApAQCAtMzY1LDcgKzM2Niw3IEBACiAgICAgIyBhZGRlZCBmb3IgYSBzY3JpcHQgaXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB3aGl0ZWxpc3QgYmVsb3cuCiAKICAgICAjIHNjcmlwdHMgdGhhdCBoYXZlIGluZGVwZW5kZW50IHRlc3RzLgotICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknXQorICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknLCAncGRlcHMucHknLCAnZ3Byb2YyaHRtbCddCiAgICAgIyBzY3JpcHRzIHRoYXQgY2FuJ3QgYmUgaW1wb3J0ZWQgd2l0aG91dCBydW5uaW5nCiAgICAgYmxhY2tsaXN0ID0gWydtYWtlX2N0eXBlLnB5J10KICAgICAjIHNjcmlwdHMgdGhhdCB1c2Ugd2luZG93cy1vbmx5IG1vZHVsZXMKQEAgLTQwNCw3ICs0MDUsOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdHNkaXIsICdwZGVwcy5weScpCi0gICAgICAgIHNlbGYucGRlcHMgPSBpbXAubG9hZF9zb3VyY2UoJ3BkZXBzJywgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdwZGVwcycsIHBhdGgpCisgICAgICAgIHNlbGYucGRlcHMgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CkBAIC00MjQsNiArNDI2LDM1IEBACiAgICAgICAgIHNlbGYucGRlcHMuaW52ZXJzZSh7J2EnOiBbXX0pCiAKIAorY2xhc3MgR3Byb2YyaHRtbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzY3JpcHRzZGlyLCAnZ3Byb2YyaHRtbC5weScpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignZ3Byb2YyaHRtbCcsIHBhdGgpCisgICAgICAgIHNlbGYuZ3Byb2YgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBvbGRhcmd2ID0gc3lzLmFyZ3YKKyAgICAgICAgZGVmIGZpeHVwKCk6CisgICAgICAgICAgICBzeXMuYXJndiA9IG9sZGFyZ3YKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZpeHVwKQorICAgICAgICBzeXMuYXJndiA9IFtdCisKKyAgICBkZWYgdGVzdF9ncHJvZihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ1MDg6IHRoaXMgdXNlZCB0byBmYWlsIHdpdGggYW4gTmFtZUVycm9yLgorICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuZ3Byb2YsICd3ZWJicm93c2VyJykgYXMgd21vY2ssIFwKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdhYmMnKQorICAgICAgICAgICAgb3BlbihmbiwgJ3cnKS5jbG9zZSgpCisgICAgICAgICAgICBzeXMuYXJndiA9IFsnZ3Byb2YyaHRtbCcsIGZuXQorICAgICAgICAgICAgc2VsZi5ncHJvZi5tYWluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdtb2NrLm9wZW4uY2FsbGVkKQorCisKKyMgUnVuIHRoZSB0ZXN0cyBpbiBUb29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5Cit3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aChvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICdwYXJzZXInKSk6CisgICAgZnJvbSB0ZXN0X3VucGFyc2UgaW1wb3J0IFVucGFyc2VUZXN0Q2FzZQorICAgIGZyb20gdGVzdF91bnBhcnNlIGltcG9ydCBEaXJlY3RvcnlUZXN0Q2FzZQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqW29iaiBmb3Igb2JqIGluIGdsb2JhbHMoKS52YWx1ZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCA0NjFkMWQ4Li5hYzNhMWEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTEwMiw2ICsxMDIsNyBAQAogY2xhc3MgVGVzdExpbmVDb3VudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIldoaXRlLWJveCB0ZXN0aW5nIG9mIGxpbmUtY291bnRpbmcsIHZpYSBydW5mdW5jIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0xLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTAsIGNvdW50Y2FsbGVycz0wKQogICAgICAgICBzZWxmLm15X3B5X2ZpbGVuYW1lID0gZml4X2V4dF9weShfX2ZpbGVfXykKIApAQCAtMTkyLDYgKzE5Myw3IEBACiAgICAgIiIiQSBzaW1wbGUgc2FuaXR5IHRlc3Qgb2YgbGluZS1jb3VudGluZywgdmlhIHJ1bmN0eCAoZXhlYykiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubXlfcHlfZmlsZW5hbWUgPSBmaXhfZXh0X3B5KF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKIAogICAgIGRlZiB0ZXN0X2V4ZWNfY291bnRzKHNlbGYpOgogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTEsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTApCkBAIC0yMTgsNiArMjIwLDcgQEAKIGNsYXNzIFRlc3RGdW5jcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgZnVuY3MgdHJhY2luZyIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHNlbGYudHJhY2VyID0gVHJhY2UoY291bnQ9MCwgdHJhY2U9MCwgY291bnRmdW5jcz0xKQogICAgICAgICBzZWxmLmZpbGVtb2QgPSBteV9maWxlX2FuZF9tb2RuYW1lKCkKIApAQCAtMjQyLDYgKzI0NSw4IEBACiAgICAgICAgIH0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRyYWNlci5yZXN1bHRzKCkuY2FsbGVkZnVuY3MsIGV4cGVjdGVkKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3ByZS1leGlzdGluZyB0cmFjZSBmdW5jdGlvbiB0aHJvd3Mgb2ZmIG1lYXN1cmVtZW50cycpCiAgICAgZGVmIHRlc3RfaW5zdF9tZXRob2RfY2FsbGluZyhzZWxmKToKICAgICAgICAgb2JqID0gVHJhY2VkQ2xhc3MoMjApCiAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmZ1bmMob2JqLmluc3RfbWV0aG9kX2NhbGxpbmcsIDEpCkBAIC0yNTcsOSArMjYyLDEyIEBACiBjbGFzcyBUZXN0Q2FsbGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgY2FsbGVycyB0cmFjaW5nIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGNhbGxlcnM9MSkKICAgICAgICAgc2VsZi5maWxlbW9kID0gbXlfZmlsZV9hbmRfbW9kbmFtZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAncHJlLWV4aXN0aW5nIHRyYWNlIGZ1bmN0aW9uIHRocm93cyBvZmYgbWVhc3VyZW1lbnRzJykKICAgICBkZWYgdGVzdF9sb29wX2NhbGxlcl9pbXBvcnRpbmcoc2VsZik6CiAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmZ1bmModHJhY2VkX2Z1bmNfaW1wb3J0aW5nX2NhbGxlciwgMSkKIApAQCAtMjgwLDYgKzI4OCw5IEBACiAKICMgQ3JlYXRlZCBzZXBhcmF0ZWx5IGZvciBpc3N1ZSAjMzgyMQogY2xhc3MgVGVzdENvdmVyYWdlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBybXRyZWUoVEVTVEZOKQogICAgICAgICB1bmxpbmsoVEVTVEZOKQpAQCAtMzA1LDEzICszMTYsMTMgQEAKICAgICAgICAgIyBJZ25vcmUgYWxsIGZpbGVzLCBub3RoaW5nIHNob3VsZCBiZSB0cmFjZWQgbm9yIHByaW50ZWQKICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKG9zLl9fZmlsZV9fKSkKICAgICAgICAgIyBzeXMucHJlZml4IGRvZXMgbm90IHdvcmsgd2hlbiBydW5uaW5nIGZyb20gYSBjaGVja291dAotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsIGxpYnBhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQorICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJwYXRoXSwgdHJhY2U9MCwgY291bnQ9MSkKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBzZWxmLl9jb3ZlcmFnZSh0cmFjZXIpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFRFU1RGTik6CiAgICAgICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIoVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlcywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbJ19pbXBvcnRsaWIuY292ZXInXSkgICMgSWdub3JlIF9faW1wb3J0X18KIAogICAgIGRlZiB0ZXN0X2lzc3VlOTkzNihzZWxmKToKICAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9MCwgY291bnQ9MSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKaW5kZXggNDc1MmQzNy4uNWJjZTJhZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKQEAgLTI0Niw2ICsyNDYsMjEgQEAKICAgICAgICAgc2VsZi5jaGVja196ZXJvX2RpdihibG9ja3NbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lubmVyX3JhaXNlKCkgIyBNYXJrZXInLCBibG9ja3NbMl0pCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X3N1cHByZXNzaW9uKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBOb25lCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBfOgorICAgICAgICAgICAgZSA9IF8KKyAgICAgICAgbGluZXMgPSBzZWxmLmdldF9yZXBvcnQoZSkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzBdLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMV0uc3RhcnRzd2l0aCgnICBGaWxlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1plcm9EaXZpc2lvbkVycm9yIGZyb20gTm9uZScsIGxpbmVzWzJdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbM10uc3RhcnRzd2l0aCgnWmVyb0RpdmlzaW9uRXJyb3InKSkKKwogICAgIGRlZiB0ZXN0X2NhdXNlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICAjIFdoZW4gYm90aCBhIGNhdXNlIGFuZCBhIGNvbnRleHQgYXJlIHNldCwgb25seSB0aGUgY2F1c2Ugc2hvdWxkIGJlCiAgICAgICAgICMgZGlzcGxheWVkIGFuZCB0aGUgY29udGV4dCBzaG91bGQgYmUgbXV0ZWQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5IGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQppbmRleCA2ZTkzNGZiLi5lNDE3MTFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKQEAgLTEsNiArMSw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNlcV90ZXN0cwogCiBpbXBvcnQgZ2MKK2ltcG9ydCBwaWNrbGUKIAogY2xhc3MgVHVwbGVUZXN0KHNlcV90ZXN0cy5Db21tb25UZXN0KToKICAgICB0eXBlMnRlc3QgPSB0dXBsZQpAQCAtMTY0LDYgKzE2NSwzNCBAQAogICAgICAgICBjaGVjaygxMCkgICAgICAgIyBjaGVjayBvdXIgY2hlY2tpbmcgY29kZQogICAgICAgICBjaGVjaygxMDAwMDAwKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICAjIFVzZXJsaXN0IGl0ZXJhdG9ycyBkb24ndCBzdXBwb3J0IHBpY2tsaW5nIHlldCBzaW5jZQorICAgICAgICAjIHRoZXkgYXJlIGJhc2VkIG9uIGdlbmVyYXRvcnMuCisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0b3JnID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKVsxOl0pCisKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0b3JnID0gcmV2ZXJzZWQoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKVsxOl0pCisKICAgICBkZWYgdGVzdF9ub19jb21kYXRfZm9sZGluZyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSA4ODQ3OiBJbiB0aGUgUEdPIGJ1aWxkLCB0aGUgTVNWQyBsaW5rZXIncyBDT01EQVQgZm9sZGluZwogICAgICAgICAjIG9wdGltaXphdGlvbiBjYXVzZXMgZmFpbHVyZXMgaW4gY29kZSB0aGF0IHJlbGllcyBvbiBkaXN0aW5jdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggOGE5OGEwMy4uM2VlNGM2YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC0xLDkgKzEsMTEgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgNiwgYnVpbHQtaW4gdHlwZXMKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX3dpdGhfbG9jYWxlCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGxvY2FsZQoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgVHlwZXNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU2OSw4ICs1NzEsNTgzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0dXBsZS5fX2l0ZW1zaXplX18sIDApCiAKIAorY2xhc3MgTWFwcGluZ1Byb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1hcHBpbmdwcm94eSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyB1c2VyZGljdChkaWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtYXBwaW5nID0geyd4JzogMSwgJ3knOiAyfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWFwcGluZ3Byb3h5KG1hcHBpbmcpLCBtYXBwaW5nKQorICAgICAgICBtYXBwaW5nID0gdXNlcmRpY3QoeD0xLCB5PTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisgICAgICAgIG1hcHBpbmcgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcCh7J3gnOiAxfSwgeyd5JzogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcHBpbmdwcm94eSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXBwaW5ncHJveHksICgiYSIsICJ0dXBsZSIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFwcGluZ3Byb3h5LCBbImEiLCAibGlzdCJdKQorCisgICAgZGVmIHRlc3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKHNlbGYubWFwcGluZ3Byb3h5KHt9KSkpIC0gc2V0KGRpcihvYmplY3QoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cnMsIHsKKyAgICAgICAgICAgICAnX19jb250YWluc19fJywKKyAgICAgICAgICAgICAnX19nZXRpdGVtX18nLAorICAgICAgICAgICAgICdfX2l0ZXJfXycsCisgICAgICAgICAgICAgJ19fbGVuX18nLAorICAgICAgICAgICAgICdjb3B5JywKKyAgICAgICAgICAgICAnZ2V0JywKKyAgICAgICAgICAgICAnaXRlbXMnLAorICAgICAgICAgICAgICdrZXlzJywKKyAgICAgICAgICAgICAndmFsdWVzJywKKyAgICAgICAgfSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KHsnYSc6ICdBJywgJ2InOiAnQid9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ2EnXSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ2InXSwgJ0InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3h4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ2EnKSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3LmdldCgneHh4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3h4eCcsIDQyKSwgNDIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBkaWN0bWlzc2luZyhkaWN0KToKKyAgICAgICAgICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiAibWlzc2luZz0lcyIgJSBrZXkKKworICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoZGljdG1pc3NpbmcoeD0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd4J10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneSddLCAnbWlzc2luZz15JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd5JyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3knLCA0MiksIDQyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3gnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3knIGluIHZpZXcpCisKKyAgICBkZWYgdGVzdF9jdXN0b21kaWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBjdXN0b21kaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnbWFnaWMnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWN0Ll9fY29udGFpbnNfXyhzZWxmLCBrZXkpCisKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcigoJ2l0ZXInLCkpCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA1MDAKKworICAgICAgICAgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjb3B5JworCisgICAgICAgICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2tleXMnCisKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zJworCisgICAgICAgICAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWVzJworCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gImdldGl0ZW09JXMiICUgZGljdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpCisKKyAgICAgICAgICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0PSVzIiAlIGRpY3QuZ2V0KHNlbGYsIGtleSwgJ2RlZmF1bHQ9JXInICUgZGVmYXVsdCkKKworICAgICAgICBjdXN0b20gPSBjdXN0b21kaWN0KHsna2V5JzogJ3ZhbHVlJ30pCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShjdXN0b20pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgna2V5JyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21hZ2ljJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd4eHgnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sna2V5J10sICdnZXRpdGVtPXZhbHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHZpZXcuX19nZXRpdGVtX18sICd4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHZpZXcpLCAoJ2l0ZXInLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCA1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5jb3B5KCksICdjb3B5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgna2V5JyksICdnZXQ9dmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd4eHgnKSwgJ2dldD1kZWZhdWx0PU5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuaXRlbXMoKSwgJ2l0ZW1zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmtleXMoKSwgJ2tleXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcudmFsdWVzKCksICd2YWx1ZXMnKQorCisgICAgZGVmIHRlc3RfY2hhaW5tYXAoc2VsZik6CisgICAgICAgIGQxID0geyd4JzogMX0KKyAgICAgICAgZDIgPSB7J3knOiAyfQorICAgICAgICBtYXBwaW5nID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoZDEsIGQyKQorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd4JyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3knIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3onIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneCddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ3knXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHZpZXcuX19nZXRpdGVtX18sICd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldykpLCAoJ3gnLCAneScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2aWV3KSwgMikKKyAgICAgICAgY29weSA9IHZpZXcuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoY29weSwgbWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvcHksIGNvbGxlY3Rpb25zLkNoYWluTWFwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHksIG1hcHBpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3gnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneScpLCAyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3LmdldCgneicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHNvcnRlZCh2aWV3Lml0ZW1zKCkpKSwgKCgneCcsIDEpLCAoJ3knLCAyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcua2V5cygpKSksICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcudmFsdWVzKCkpKSwgKDEsIDIpKQorCisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0LmZyb21rZXlzKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2InIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYycgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneHh4JyBpbiB2aWV3KQorCisgICAgZGVmIHRlc3Rfdmlld3Moc2VsZik6CisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZykKKyAgICAgICAga2V5cyA9IHZpZXcua2V5cygpCisgICAgICAgIHZhbHVlcyA9IHZpZXcudmFsdWVzKCkKKyAgICAgICAgaXRlbXMgPSB2aWV3Lml0ZW1zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtleXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHZhbHVlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlbXMpLCBbXSkKKyAgICAgICAgbWFwcGluZ1sna2V5J10gPSAndmFsdWUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChrZXlzKSwgWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHZhbHVlcyksIFsndmFsdWUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZW1zKSwgWygna2V5JywgJ3ZhbHVlJyldKQorCisgICAgZGVmIHRlc3RfbGVuKHNlbGYpOgorICAgICAgICBmb3IgZXhwZWN0ZWQgaW4gcmFuZ2UoNik6CisgICAgICAgICAgICBkYXRhID0gZGljdC5mcm9ta2V5cygnYWJjZGUnWzpleHBlY3RlZF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAga2V5cyA9ICgneCcsICd5JykKKyAgICAgICAgdmFsdWVzID0gKDEsIDIpCisgICAgICAgIGl0ZW1zID0gdHVwbGUoemlwKGtleXMsIHZhbHVlcykpCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0KGl0ZW1zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldyksIHNldChrZXlzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy5rZXlzKCkpLCBzZXQoa2V5cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHZpZXcudmFsdWVzKCkpLCBzZXQodmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy5pdGVtcygpKSwgc2V0KGl0ZW1zKSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0geydrZXkxJzogMjcsICdrZXkyJzogNTEsICdrZXkzJzogOTN9CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShvcmlnaW5hbCkKKyAgICAgICAgY29weSA9IHZpZXcuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjb3B5KSwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5LCBvcmlnaW5hbCkKKyAgICAgICAgb3JpZ2luYWxbJ2tleTEnXSA9IDcwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sna2V5MSddLCA3MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5WydrZXkxJ10sIDI3KQorCisKK2NsYXNzIENsYXNzQ3JlYXRpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICBkZWYgX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbnMpCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zLCAqKmt3KToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzLCAqKmt3KToKKyAgICAgICAgICAgIG5zID0gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKyAgICAgICAgICAgIG5zWyJ5Il0gPSAxCisgICAgICAgICAgICBucy51cGRhdGUoa3cpCisgICAgICAgICAgICByZXR1cm4gbnMKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19iYXNpY3Moc2VsZik6CisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKG9iamVjdCwpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKGludCwpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBpbnQpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGEoc2VsZik6CisgICAgICAgIE1ldGEgPSBzZWxmLk1ldGEKKyAgICAgICAgc2V0dGluZ3MgPSB7Im1ldGFjbGFzcyI6IE1ldGEsICJ6IjogMn0KKyAgICAgICAgIyBXZSBkbyB0aGlzIHR3aWNlIHRvIG1ha2Ugc3VyZSB0aGUgcGFzc2VkIGluIGRpY3QgaXNuJ3QgbXV0YXRlZAorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiICsgc3RyKGkpLCAoKSwgc2V0dGluZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQywgTWV0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy55LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnosIDIpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfZXhlY19ib2R5KHNlbGYpOgorICAgICAgICBNZXRhID0gc2VsZi5NZXRhCisgICAgICAgIGRlZiBmdW5jKG5zKToKKyAgICAgICAgICAgIG5zWyJ4Il0gPSAwCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoKSwgeyJtZXRhY2xhc3MiOiBNZXRhLCAieiI6IDJ9LCBmdW5jKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQywgTWV0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLngsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy55LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueiwgMikKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19tZXRhY2xhc3Nfa2V5d29yZHMoc2VsZik6CisgICAgICAgICNUZXN0IHRoYXQga2V5d29yZHMgYXJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzOgorICAgICAgICBkZWYgbWV0YV9mdW5jKG5hbWUsIGJhc2VzLCBucywgKiprdyk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSwgYmFzZXMsIG5zLCBrdworICAgICAgICByZXMgPSB0eXBlcy5uZXdfY2xhc3MoIlgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCwgb2JqZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPW1ldGFfZnVuYywgeD0wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICgiWCIsIChpbnQsIG9iamVjdCksIHt9LCB7IngiOiAwfSkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0cy9rZXl3b3JkczoKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsICgpLCB7fSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbmFtZV9fLCAiQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Jhc2VzX18sIChvYmplY3QsKSkKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19tZXRhX3dpdGhfYmFzZShzZWxmKToKKyAgICAgICAgTWV0YSA9IHNlbGYuTWV0YQorICAgICAgICBkZWYgZnVuYyhucyk6CisgICAgICAgICAgICBuc1sieCJdID0gMAorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKG5hbWU9IkMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzPShpbnQsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RzPWRpY3QobWV0YWNsYXNzPU1ldGEsIHo9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY19ib2R5PWZ1bmMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIGludCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy56LCAyKQorCisgICAgIyBNYW55IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIGRlcml2ZWQgZnJvbSB0ZXN0X2Rlc2NyLnB5CisgICAgZGVmIHRlc3RfcHJlcGFyZV9jbGFzcyhzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IG9mIG1ldGFjbGFzcyBkZXJpdmF0aW9uCisgICAgICAgIGV4cGVjdGVkX25zID0ge30KKyAgICAgICAgY2xhc3MgQSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXygqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX25zCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsIChvYmplY3QsKSkKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChvYmplY3QsKSwgeyJtZXRhY2xhc3MiOiBBfSkKKworICAgICAgICAjIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIG9mIEQgaXMgQSByYXRoZXIgdGhhbiB0eXBlLgorICAgICAgICBtZXRhLCBucywga3dkcyA9IHR5cGVzLnByZXBhcmVfY2xhc3MoIkQiLCAoQiwgQyksIHsibWV0YWNsYXNzIjogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWV0YSwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhucywgZXhwZWN0ZWRfbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGt3ZHMpLCAwKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX2Rlcml2YXRpb24oc2VsZik6CisgICAgICAgICMgaXNzdWUxMjk0MjMyOiBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbgorICAgICAgICBuZXdfY2FsbHMgPSBbXSAgIyB0byBjaGVjayB0aGUgb3JkZXIgb2YgX19uZXdfXyBjYWxscworICAgICAgICBjbGFzcyBBTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQU1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIGNsYXNzIEJNZXRhKEFNZXRhKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQk1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMpOgorICAgICAgICAgICAgICAgIG5zID0gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKyAgICAgICAgICAgICAgICBuc1snQk1ldGFfd2FzX2hlcmUnXSA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gbnMKKworICAgICAgICBBID0gdHlwZXMubmV3X2NsYXNzKCJBIiwgKCksIHsibWV0YWNsYXNzIjogQU1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEIgPSB0eXBlcy5uZXdfY2xhc3MoIkIiLCAoKSwgeyJtZXRhY2xhc3MiOiBCTWV0YX0pCisgICAgICAgICMgQk1ldGEuX19uZXdfXyBjYWxscyBBTWV0YS5fX25ld19fIHdpdGggc3VwZXI6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChBLCBCKSkKKyAgICAgICAgIyBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBCTWV0YToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgIyBCTWV0YS5fX3ByZXBhcmVfXyBzaG91bGQndmUgYmVlbiBjYWxsZWQ6CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQy5fX2RpY3RfXykKKworICAgICAgICAjIFRoZSBvcmRlciBvZiB0aGUgYmFzZXMgc2hvdWxkbid0IG1hdHRlcjoKKyAgICAgICAgQzIgPSB0eXBlcy5uZXdfY2xhc3MoIkMyIiwgKEIsIEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTWV0YScsICdBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMyLl9fZGljdF9fKQorCisgICAgICAgICMgQ2hlY2sgY29ycmVjdCBtZXRhY2xhc3MgY2FsY3VsYXRpb24gd2hlbiBhIG1ldGFjbGFzcyBpcyBkZWNsYXJlZDoKKyAgICAgICAgRCA9IHR5cGVzLm5ld19jbGFzcygiRCIsIChDLCksIHsibWV0YWNsYXNzIjogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRC5fX2RpY3RfXykKKworICAgICAgICBFID0gdHlwZXMubmV3X2NsYXNzKCJFIiwgKEMsKSwgeyJtZXRhY2xhc3MiOiBBTWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRS5fX2RpY3RfXykKKworICAgIGRlZiB0ZXN0X21ldGFjbGFzc19vdmVycmlkZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBTcGVjaWFsIGNhc2U6IHRoZSBnaXZlbiBtZXRhY2xhc3MgaXNuJ3QgYSBjbGFzcywKKyAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBtZXRhY2xhc3MgY2FsY3VsYXRpb24uCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPXNlbGYuTWV0YSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWFya2VyID0gb2JqZWN0KCkKKyAgICAgICAgZGVmIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXIKKworICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIFkgPSB0eXBlcy5uZXdfY2xhc3MoIlkiLCAob2JqZWN0LCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIFogPSB0eXBlcy5uZXdfY2xhc3MoIloiLCAoQSwpLCB7Im1ldGFjbGFzcyI6IGZ1bmN9KQorICAgICAgICBzZWxmLmFzc2VydElzKG1hcmtlciwgWCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYXJrZXIsIFkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFya2VyLCBaKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX292ZXJyaWRlX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICAjIFRoZSBnaXZlbiBtZXRhY2xhc3MgaXMgYSBjbGFzcywKKyAgICAgICAgIyBidXQgbm90IGEgZGVzY2VuZGFudCBvZiB0eXBlLgorICAgICAgICBuZXdfY2FsbHMgPSBbXSAgIyB0byBjaGVjayB0aGUgb3JkZXIgb2YgX19uZXdfXyBjYWxscworICAgICAgICBwcmVwYXJlX2NhbGxzID0gW10gICMgdG8gdHJhY2sgX19wcmVwYXJlX18gY2FsbHMKKyAgICAgICAgY2xhc3MgQU5vdE1ldGE6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19jYWxscy5hcHBlbmQoJ0FOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcHJlcGFyZV9jYWxscy5hcHBlbmQoJ0FOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4ge30KKworICAgICAgICBjbGFzcyBCTm90TWV0YShBTm90TWV0YSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19jYWxscy5hcHBlbmQoJ0JOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcHJlcGFyZV9jYWxscy5hcHBlbmQoJ0JOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKworICAgICAgICBBID0gdHlwZXMubmV3X2NsYXNzKCJBIiwgKCksIHsibWV0YWNsYXNzIjogQU5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEFOb3RNZXRhLCB0eXBlKEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsICgpLCB7Im1ldGFjbGFzcyI6IEJOb3RNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShCKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoQSwgQikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBDMiA9IHR5cGVzLm5ld19jbGFzcygiQzIiLCAoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQzIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgIyBUaGlzIGlzIGEgVHlwZUVycm9yLCBiZWNhdXNlIG9mIGEgbWV0YWNsYXNzIGNvbmZsaWN0OgorICAgICAgICAjIEJOb3RNZXRhIGlzIG5laXRoZXIgYSBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiB0eXBlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEQgPSB0eXBlcy5uZXdfY2xhc3MoIkQiLCAoQywpLCB7Im1ldGFjbGFzcyI6IHR5cGV9KQorCisgICAgICAgIEUgPSB0eXBlcy5uZXdfY2xhc3MoIkUiLCAoQywpLCB7Im1ldGFjbGFzcyI6IEFOb3RNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEYgPSB0eXBlcy5uZXdfY2xhc3MoIkYiLCAob2JqZWN0KCksIEMpKQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgRjIgPSB0eXBlcy5uZXdfY2xhc3MoIkYyIiwgKEMsIG9iamVjdCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShGMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICAjIFR5cGVFcnJvcjogQk5vdE1ldGEgaXMgbmVpdGhlciBhCisgICAgICAgICMgc3ViY2xhc3MsIG5vciBhIHN1cGVyY2xhc3Mgb2YgaW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoQywgaW50KCkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKGludCgpLCBDKSkKKworCitjbGFzcyBTaW1wbGVOYW1lc3BhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKipkaWN0KHg9MSwgeT0yKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoMSwgMiwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuczEuX19kaWN0X18pLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMi5fX2RpY3RfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCB7J3knOiAyLCAneCc6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuczMuX19kaWN0X18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMzKSwgeyd5JzogMiwgJ3gnOiAxfSkKKworICAgIGRlZiB0ZXN0X3VuYm91bmQoc2VsZik6CisgICAgICAgIG5zMSA9IHZhcnModHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkpCisgICAgICAgIG5zMiA9IHZhcnModHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLCB7J3knOiAyLCAneCc6IDF9KQorCisgICAgZGVmIHRlc3RfdW5kZXJseWluZ19kaWN0KHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShhPVRydWUsIGI9RmFsc2UpCisgICAgICAgIG1hcHBpbmcgPSBuczMuX19kaWN0X18KKyAgICAgICAgZGVsIG5zMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLl9fZGljdF9fLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuX19kaWN0X18sIHsneSc6IDIsICd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZywgZGljdChhPVRydWUsIGI9RmFsc2UpKQorCisgICAgZGVmIHRlc3RfYXR0cmdldChzZWxmKToKKyAgICAgICAgbnMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLngsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMueSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy53LCAzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG5zLnoKKworICAgIGRlZiB0ZXN0X2F0dHJzZXQoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9Miwgdz0zKQorICAgICAgICBuczEuYSA9ICdzcGFtJworICAgICAgICBuczEuYiA9ICdoYW0nCisgICAgICAgIG5zMi56ID0gNAorICAgICAgICBuczIudGhldGEgPSBOb25lCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuX19kaWN0X18sIGRpY3QoYT0nc3BhbScsIGI9J2hhbScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5fX2RpY3RfXywgZGljdCh4PTEsIHk9Miwgdz0zLCB6PTQsIHRoZXRhPU5vbmUpKQorCisgICAgZGVmIHRlc3RfYXR0cmRlbChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgbnMxLnNwYW0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgbnMyLnNwYW0KKworICAgICAgICBkZWwgbnMyLnkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIGRpY3Qodz0zLCB4PTEpKQorICAgICAgICBuczIueSA9ICdzcGFtJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSwgeT0nc3BhbScpKQorICAgICAgICBkZWwgbnMyLnkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIGRpY3Qodz0zLCB4PTEpKQorCisgICAgICAgIG5zMS5zcGFtID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwgZGljdChzcGFtPTUpKQorICAgICAgICBkZWwgbnMxLnNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMSksIHt9KQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMi54ID0gInNwYW0iCisgICAgICAgIG5zMi5feSA9IDUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwgIm5hbWVzcGFjZSh3PTMsIHg9MSwgeT0yKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczIpLCAibmFtZXNwYWNlKF95PTUsIHg9J3NwYW0nKSIpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWQoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShhPTEsIGI9MikKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9bnMxKQorICAgICAgICBuczIuc3BhbSA9IG5zMQorICAgICAgICBuczIuaGFtID0gJz8nCisgICAgICAgIG5zMi5zcGFtID0gbnMzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMSksIGRpY3QoYT0xLCBiPTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdChzcGFtPW5zMywgaGFtPSc/JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0sIG5zMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMyksIGRpY3QoeD1uczEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMy54LmEsIDEpCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShjPSdjb29raWUnKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xKQorICAgICAgICBuczEuc3BhbSA9IG5zMQorICAgICAgICBuczIuc3BhbSA9IG5zMworICAgICAgICBuczMuc3BhbSA9IG5zMgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLnNwYW0sIG5zMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbS5zcGFtLCBuczEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLnNwYW0uc3BhbSwgbnMxLnNwYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0sIG5zMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczMuc3BhbSwgbnMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5zcGFtLnNwYW0sIG5zMikKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoYz0nY29va2llJykKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSkKKyAgICAgICAgbnMxLnNwYW0gPSBuczEKKyAgICAgICAgbnMyLnNwYW0gPSBuczMKKyAgICAgICAgbnMzLnNwYW0gPSBuczIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZXNwYWNlKGM9J2Nvb2tpZScsIHNwYW09bmFtZXNwYWNlKC4uLikpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVzcGFjZShzcGFtPW5hbWVzcGFjZShzcGFtPW5hbWVzcGFjZSguLi4pLCB4PTEpKSIpCisKKyAgICBkZWYgdGVzdF9hc19kaWN0KHNlbGYpOgorICAgICAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShzcGFtPSdzcGFtc3BhbXNwYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGxlbihucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXRlcihucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgJ3NwYW0nIGluIG5zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG5zWydzcGFtJ10KKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBTcGFtKHR5cGVzLlNpbXBsZU5hbWVzcGFjZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc3BhbSA9IFNwYW0oaGFtPTgsIGVnZ3M9OSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoc3BhbSksIFNwYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhzcGFtKSwgeydoYW0nOiA4LCAnZWdncyc6IDl9KQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cykKKyAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cywgTWFwcGluZ1Byb3h5VGVzdHMsIENsYXNzQ3JlYXRpb25UZXN0cywKKyAgICAgICAgICAgICAgICAgU2ltcGxlTmFtZXNwYWNlVGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdWNuLnB5IGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKaW5kZXggZWJmZjBlMS4uMDU1NTdhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91Y24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKQEAgLTgsOSArOCwxMiBAQAogIiIiIyIKIAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pY29kZWRhdGEKIGltcG9ydCBfdGVzdGNhcGkKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCitmcm9tIHRlc3QudGVzdF9ub3JtYWxpemF0aW9uIGltcG9ydCBjaGVja192ZXJzaW9uCiAKIGNsYXNzIFVuaWNvZGVOYW1lc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02MCw4ICs2Myw2IEBACiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2FzY2lpX2xldHRlcnMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQotCiAgICAgICAgIGZvciBjaGFyIGluICIiLmpvaW4obWFwKGNociwgcmFuZ2Uob3JkKCJhIiksIG9yZCgieiIpKSkpOgogICAgICAgICAgICAgbmFtZSA9ICJMQVRJTiBTTUFMTCBMRVRURVIgJXMiICUgY2hhci51cHBlcigpCiAgICAgICAgICAgICBjb2RlID0gdW5pY29kZWRhdGEubG9va3VwKG5hbWUpCkBAIC04Miw3ICs4Myw2IEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTkdVTCBTWUxMQUJMRSBIV0VPSyIsICJcdWQ2ZjgiKQogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJIQU5HVUwgU1lMTEFCTEUgSElIIiwgIlx1ZDdhMyIpCiAKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUsICJcdWQ3YTQiKQogCiAgICAgZGVmIHRlc3RfY2prX3VuaWZpZWRfaWRlb2dyYXBocyhzZWxmKToKQEAgLTk4LDE0ICs5OCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJDSksgVU5JRklFRCBJREVPR1JBUEgtMkI4MUQiLCAiXFUwMDAyQjgxRCIpCiAKICAgICBkZWYgdGVzdF9ibXBfY2hhcmFjdGVycyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCi0gICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgY29kZSBpbiByYW5nZSgweDEwMDAwKToKICAgICAgICAgICAgIGNoYXIgPSBjaHIoY29kZSkKICAgICAgICAgICAgIG5hbWUgPSB1bmljb2RlZGF0YS5uYW1lKGNoYXIsIE5vbmUpCiAgICAgICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKG5hbWUpLCBjaGFyKQotICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKIAogICAgIGRlZiB0ZXN0X21pc2Nfc3ltYm9scyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiUElMQ1JPVyBTSUdOIiwgIlx1MDBiNiIpCkBAIC0xMTMsOCArMTEwLDg1IEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLIiwgIlx1RkY5RiIpCiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQSIsICJcdUZGNDEiKQogCisgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBhbGlhc2VzIGRlZmluZWQgaW4gdGhlIE5hbWVBbGlhc2VzLnR4dCBmaWxlIHdvcmsuCisgICAgICAgICMgVGhpcyBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIG5ldyBhbGlhc2VzIGFyZSBhZGRlZCBvciB0aGUgZmlsZQorICAgICAgICAjIHNob3VsZCBiZSBkb3dubG9hZGVkIGFuZCBwYXJzZWQgaW5zdGVhZC4gIFNlZSAjMTI3NTMuCisgICAgICAgIGFsaWFzZXMgPSBbCisgICAgICAgICAgICAoJ0xBVElOIENBUElUQUwgTEVUVEVSIEdIQScsIDB4MDFBMiksCisgICAgICAgICAgICAoJ0xBVElOIFNNQUxMIExFVFRFUiBHSEEnLCAweDAxQTMpLAorICAgICAgICAgICAgKCdLQU5OQURBIExFVFRFUiBMTExBJywgMHgwQ0RFKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBGTyBGT04nLCAweDBFOUQpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIEZPIEZBWScsIDB4MEU5RiksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgUk8nLCAweDBFQTMpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIExPJywgMHgwRUE1KSwKKyAgICAgICAgICAgICgnVElCRVRBTiBNQVJLIEJLQS0gU0hPRyBHSSBNR08gUkdZQU4nLCAweDBGRDApLAorICAgICAgICAgICAgKCdZSSBTWUxMQUJMRSBJVEVSQVRJT04gTUFSSycsIDB4QTAxNSksCisgICAgICAgICAgICAoJ1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQnLCAweEZFMTgpLAorICAgICAgICAgICAgKCdCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRlRIT1JBIFNLTElST04gQ0hST01BIFZBU0lTJywgMHgxRDBDNSkKKyAgICAgICAgXQorICAgICAgICBmb3IgYWxpYXMsIGNvZGVwb2ludCBpbiBhbGlhc2VzOgorICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihhbGlhcywgY2hyKGNvZGVwb2ludCkpCisgICAgICAgICAgICBuYW1lID0gdW5pY29kZWRhdGEubmFtZShjaHIoY29kZXBvaW50KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmFtZSwgYWxpYXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChhbGlhcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLmxvb2t1cChuYW1lKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVjZF8zXzJfMC5sb29rdXAoYWxpYXMpCisKKyAgICBkZWYgdGVzdF9hbGlhc2VzX25hbWVzX2luX3B1YV9yYW5nZShzZWxmKToKKyAgICAgICAgIyBXZSBhcmUgc3RvcmluZyBhbGlhc2VzIGluIHRoZSBQVUEgMTUsIGJ1dCB0aGVpciBuYW1lcyBzaG91bGRuJ3QgbGVhaworICAgICAgICBmb3IgY3AgaW4gcmFuZ2UoMHhmMDAwMCwgMHhmMDEwMCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLm5hbWUoY2hyKGNwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdubyBzdWNoIG5hbWUnKQorCisgICAgZGVmIHRlc3RfbmFtZWRfc2VxdWVuY2VzX25hbWVzX2luX3B1YV9yYW5nZShzZWxmKToKKyAgICAgICAgIyBXZSBhcmUgc3RvcmluZyBuYW1lZCBzZXEgaW4gdGhlIFBVQSAxNSwgYnV0IHRoZWlyIG5hbWVzIHNob3VsZG4ndCBsZWFrCisgICAgICAgIGZvciBjcCBpbiByYW5nZSgweGYwMTAwLCAweGYwZmZmKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubmFtZShjaHIoY3ApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgJ25vIHN1Y2ggbmFtZScpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfc2FtcGxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIGEgZmV3IG5hbWVkIHNlcXVlbmNlcy4gIFNlZSAjMTI3NTMuCisgICAgICAgIHNlcXVlbmNlcyA9IFsKKyAgICAgICAgICAgICgnTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBUSUxERScsICdcdTAwNzJcdTAzMDMnKSwKKyAgICAgICAgICAgICgnVEFNSUwgU1lMTEFCTEUgU0FJJywgJ1x1MEJCOFx1MEJDOCcpLAorICAgICAgICAgICAgKCdUQU1JTCBTWUxMQUJMRSBNT08nLCAnXHUwQkFFXHUwQkNCJyksCisgICAgICAgICAgICAoJ1RBTUlMIFNZTExBQkxFIE5OT08nLCAnXHUwQkEzXHUwQkNCJyksCisgICAgICAgICAgICAoJ1RBTUlMIENPTlNPTkFOVCBLU1MnLCAnXHUwQjk1XHUwQkNEXHUwQkI3XHUwQkNEJyksCisgICAgICAgIF0KKyAgICAgICAgZm9yIHNlcW5hbWUsIGNvZGVwb2ludHMgaW4gc2VxdWVuY2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAoc2VxbmFtZSksIGNvZGVwb2ludHMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKHNlcW5hbWUsIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51Y2RfM18yXzAubG9va3VwKHNlcW5hbWUpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfZnVsbChzZWxmKToKKyAgICAgICAgIyBDaGVjayBhbGwgdGhlIG5hbWVkIHNlcXVlbmNlcworICAgICAgICB1cmwgPSAoImh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLyVzL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQiICUKKyAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVuaWRhdGFfdmVyc2lvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdGRhdGEgPSBzdXBwb3J0Lm9wZW5fdXJscmVzb3VyY2UodXJsLCBlbmNvZGluZz0idXRmLTgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2s9Y2hlY2tfdmVyc2lvbikKKyAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSAiICsgdXJsKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdGRhdGEuY2xvc2UpCisgICAgICAgIGZvciBsaW5lIGluIHRlc3RkYXRhOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcW5hbWUsIGNvZGVwb2ludHMgPSBsaW5lLnNwbGl0KCc7JykKKyAgICAgICAgICAgIGNvZGVwb2ludHMgPSAnJy5qb2luKGNocihpbnQoY3AsIDE2KSkgZm9yIGNwIGluIGNvZGVwb2ludHMuc3BsaXQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKHNlcW5hbWUpLCBjb2RlcG9pbnRzKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihzZXFuYW1lLCBOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudWNkXzNfMl8wLmxvb2t1cChzZXFuYW1lKQorCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1bmljb2RlZGF0YS5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUsICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdW5pY29kZWRhdGEubG9va3VwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDQ3YWY4YjkuLjhmY2NhYjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTUsMTcgKzUsMTMgQEAKIChjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCiAKICIiIiMiCitpbXBvcnQgX3N0cmluZwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc3RyaW5nX3Rlc3RzCi1pbXBvcnQgX3N0cmluZwotCi0jIGRlY29yYXRvciB0byBza2lwIHRlc3RzIG9uIG5hcnJvdyBidWlsZHMKLXJlcXVpcmVzX3dpZGVfYnVpbGQgPSB1bml0dGVzdC5za2lwSWYoc3lzLm1heHVuaWNvZGUgPT0gNjU1MzUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB3aWRlIGJ1aWxkJykKIAogIyBFcnJvciBoYW5kbGluZyAoYmFkIGRlY29kZXIgcmV0dXJuKQogZGVmIHNlYXJjaF9mdW5jdGlvbihlbmNvZGluZyk6CkBAIC0zNyw3ICszMyw4IEBACiAKIGNsYXNzIFVuaWNvZGVUZXN0KHN0cmluZ190ZXN0cy5Db21tb25UZXN0LAogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QsCi0gICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVUZXN0KToKKyAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVRlc3QsCisgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHR5cGUydGVzdCA9IHN0cgogCkBAIC0xNzUsNiArMTcyLDE1IEBACiAKICAgICBkZWYgdGVzdF9maW5kKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X2ZpbmQoc2VsZikKKyAgICAgICAgIyB0ZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIG1lbWNociBmYXN0IHBhdGgKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwMCwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDEwMicpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDIwMScpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDEyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDIyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMDAsICdhJyAqIDEwMCArICdcVTAwMTAwMzA0JywgJ2ZpbmQnLCAnXFUwMDEwMDMwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1xVMDAxMDAzMDQnLCAnZmluZCcsICdcVTAwMTAwMjA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXFUwMDEwMDMwNCcsICdmaW5kJywgJ1xVMDAxMDIwMDQnKQorICAgICAgICAjIGNoZWNrIG1peGVkIGFyZ3VtZW50IHR5cGVzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDAsICAnYWJjZGVmZ2hpYWJjJywgJ2ZpbmQnLCAnYWJjJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoOSwgICdhYmNkZWZnaGlhYmMnLCAnZmluZCcsICdhYmMnLCAxKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgtMSwgJ2FiY2RlZmdoaWFiYycsICdmaW5kJywgJ2RlZicsIDQpCkBAIC0xODQsNiArMTkwLDE0IEBACiAKICAgICBkZWYgdGVzdF9yZmluZChzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9yZmluZChzZWxmKQorICAgICAgICAjIHRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgbWVtcmNociBmYXN0IHBhdGgKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDEwMicpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMjAxJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAxMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDIyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAwMzA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAwMjA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAyMDA0JykKICAgICAgICAgIyBjaGVjayBtaXhlZCBhcmd1bWVudCB0eXBlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCg5LCAgICdhYmNkZWZnaGlhYmMnLCAncmZpbmQnLCAnYWJjJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoMTIsICAnYWJjZGVmZ2hpYWJjJywgJ3JmaW5kJywgJycpCkBAIC0yODAsNiArMjk0LDEyIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCdvbmVAdHdvIXRocmVlIScsICdvbmUhdHdvIXRocmVlIScsICdyZXBsYWNlJywgJyEnLCAnQCcsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ3JlcGxhY2UnLnJlcGxhY2UsICJyIiwgNDIpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZXBsYWNlX2lkKHNlbGYpOgorICAgICAgICBwYXR0ZXJuID0gJ2FiYycKKyAgICAgICAgdGV4dCA9ICdhYmMgZGVmJworICAgICAgICBzZWxmLmFzc2VydElzKHRleHQucmVwbGFjZShwYXR0ZXJuLCBwYXR0ZXJuKSwgdGV4dCkKKwogICAgIGRlZiB0ZXN0X2J5dGVzX2NvbXBhcmlzb24oc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBCeXRlc1dhcm5pbmcpCkBAIC0zNTAsNiArMzcwLDggQEAKICAgICBkZWYgdGVzdF9pc2xvd2VyKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QudGVzdF9pc2xvd2VyKHNlbGYpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KEZhbHNlLCAnXHUxRkZjJywgJ2lzbG93ZXInKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcdTIxNjcnLmlzbG93ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcdTIxNzcnLmlzbG93ZXIoKSkKICAgICAgICAgIyBub24tQk1QLCB1cHBlcmNhc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXFUwMDAxMDQwMScuaXNsb3dlcigpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcVTAwMDEwNDI3Jy5pc2xvd2VyKCkpCkBAIC0zNjQsNiArMzg2LDggQEAKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfaXN1cHBlcihzZWxmKQogICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKToKICAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KEZhbHNlLCAnXHUxRkZjJywgJ2lzdXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1x1MjE2NycuaXN1cHBlcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcdTIxNzcnLmlzdXBwZXIoKSkKICAgICAgICAgIyBub24tQk1QLCB1cHBlcmNhc2UKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcVTAwMDEwNDAxJy5pc3VwcGVyKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXFUwMDAxMDQyNycuaXN1cHBlcigpKQpAQCAtNTIwLDcgKzU0NCw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtZXRoKHMpLCAnJWEuJXMoKSBpcyBGYWxzZScgJSAocywgbWV0aF9uYW1lKSkKIAogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF9sb3dlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9sb3dlcihzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDI3Jy5sb3dlcigpLCAnXFUwMDAxMDQ0RicpCkBAIC01MzAsOCArNTUzLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0NEZcVTAwMDEwNDRGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicubG93ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScubG93ZXIoKSwgJ++sgScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcubG93ZXIoKSwgJ1x1MDA2OVx1MDMwNycpCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQSBVKzAzQTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5sb3dlcigpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMzQ1XHUwM2EzJy5sb3dlcigpLCAnXHUwMzQ1XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzYScubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzNhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzXHUwMzQ1Jy5sb3dlcigpLCAnYVx1MDNjMlx1MDM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhM1x1MDM0NSAnLmxvd2VyKCksICdcdTAzYzNcdTAzNDUgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDA4ZmZmZScubG93ZXIoKSwgJ1xVMDAwOGZmZmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIxNzcnLmxvd2VyKCksICdcdTIxNzcnKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKKyAgICBkZWYgdGVzdF9jYXNlZm9sZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmNhc2Vmb2xkKCksICdoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hFTGxvJy5jYXNlZm9sZCgpLCAnaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDnycuY2FzZWZvbGQoKSwgJ3NzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy5jYXNlZm9sZCgpLCAnZmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLmNhc2Vmb2xkKCksICdcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5jYXNlZm9sZCgpLCAnYVx1MDNiOVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDBiNScuY2FzZWZvbGQoKSwgJ1x1MDNiYycpCisKICAgICBkZWYgdGVzdF91cHBlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF91cHBlcihzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy51cHBlcigpLCAnXFUwMDAxMDQyNycpCkBAIC01NDEsOCArNTg0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0MjdcVTAwMDEwNDI3JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicudXBwZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0MjdYXFUwMDAxMDQyNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScudXBwZXIoKSwgJ0ZJJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMTMwJy51cHBlcigpLCAnXHUwMTMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy51cHBlcigpLCAnXHUwM2EzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLnVwcGVyKCksICdTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMicudXBwZXIoKSwgJ1x1MDM5OVx1MDMwOFx1MDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwOGZmZmUnLnVwcGVyKCksICdcVTAwMDhmZmZlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMTc3Jy51cHBlcigpLCAnXHUyMTY3JykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9jYXBpdGFsaXplKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLmNhcGl0YWxpemUoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTU0LDggKzYwMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLmNhcGl0YWxpemUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hcdTAxMzAnLmNhcGl0YWxpemUoKSwgJ0hcdTAwNjlcdTAzMDcnKQorICAgICAgICBleHAgPSAnXHUwMzk5XHUwMzA4XHUwMzAwXHUwMDY5XHUwMzA3JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDJcdTAxMzAnLmNhcGl0YWxpemUoKSwgZXhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIFubmlzaCcuY2FwaXRhbGl6ZSgpLCAnRklubmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmNhcGl0YWxpemUoKSwgJ0FcdTAzNDVcdTAzYzInKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF90aXRsZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfdGl0bGUoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0RicudGl0bGUoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTY5LDggKzYyMiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RiBcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYgWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicudGl0bGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RiBYXFUwMDAxMDQ0RnhcVTAwMDEwNDRGJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBTk5JU0gnLnRpdGxlKCksICdGaW5uaXNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhMyBcdTFmYTF4eScudGl0bGUoKSwgJ0FcdTAzYzIgXHUxZmE5eHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzQScudGl0bGUoKSwgJ0FcdTAzYzNhJykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3Rfc3dhcGNhc2Uoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0Ricuc3dhcGNhc2UoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTgzLDYgKzYzOCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnN3YXBjYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hcVTAwMDEwNDRGWFxVMDAwMTA0MjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLnN3YXBjYXNlKCksICdGSScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcuc3dhcGNhc2UoKSwgJ1x1MDA2OVx1MDMwNycpCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQSBVKzAzQTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMzQ1XHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwMzk5XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzYScuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzNBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzXHUwMzQ1Jy5zd2FwY2FzZSgpLCAnYVx1MDNjMlx1MDM5OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhM1x1MDM0NSAnLnN3YXBjYXNlKCksICdcdTAzYzNcdTAzOTkgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLnN3YXBjYXNlKCksICdTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMicuc3dhcGNhc2UoKSwgJ1x1MDM5OVx1MDMwOFx1MDMwMCcpCiAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIFVuaWNvZGUgY29udGFpbnMgbWV0aG9kCkBAIC03NzYsNyArODQ0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezAhc30nLmZvcm1hdChHKCdkYXRhJykpLCAnc3RyaW5nIGlzIGRhdGEnKQogCiAgICAgICAgIG1zZyA9ICdvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMgZGVwcmVjYXRlZCcKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6XjEwfScuZm9ybWF0KEUoJ2RhdGEnKSksICcgRShkYXRhKSAgJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOl4xMHN9Jy5mb3JtYXQoRSgnZGF0YScpKSwgJyBFKGRhdGEpICAnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6PjE1c30nLmZvcm1hdChHKCdkYXRhJykpLCAnIHN0cmluZyBpcyBkYXRhJykKQEAgLTg1OCw2ICs5MjYsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAnJywgJyMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsICcnLCAnIzIwJykKIAorICAgICAgICAjIE5vbi1BU0NJSQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7MDpzfXsxOnN9Ii5mb3JtYXQoIkFCQyIsICJcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDXHUwNDEwXHUwNDExXHUwNDEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6LjNzfSIuZm9ybWF0KCJBQkNcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6LjBzfSIuZm9ybWF0KCJBQkNcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0X21hcCh7fSksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhJy5mb3JtYXRfbWFwKHt9KSwgJ2EnKQpAQCAtMTAwNSw2ICsxMDgxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVmJyAlIElORiwgJ2luZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVGJyAlIElORiwgJ0lORicpCiAKKyAgICAgICAgIyBQRVAgMzkzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyUuMXMnICUgImFceGU5XHUyMGFjIiwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclLjJzJyAlICJhXHhlOVx1MjBhYyIsICdhXHhlOScpCisKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9mb3JtYXR0aW5nX2h1Z2VfcHJlY2lzaW9uKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgSU5UX01BWApAQCAtMTA0MSwxMCArMTEyMSwxMyBAQAogICAgICAgICBjbGFzcyBVbmljb2RlU3ViY2xhc3Moc3RyKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyKFVuaWNvZGVTdWJjbGFzcygndW5pY29kZSBzdWJjbGFzcyBiZWNvbWVzIHVuaWNvZGUnKSksCi0gICAgICAgICAgICAndW5pY29kZSBzdWJjbGFzcyBiZWNvbWVzIHVuaWNvZGUnCi0gICAgICAgICkKKyAgICAgICAgZm9yIHRleHQgaW4gKCdhc2NpaScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBGRkZGJyk6CisgICAgICAgICAgICBzdWJjbGFzcyA9IFVuaWNvZGVTdWJjbGFzcyh0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3ViY2xhc3MpLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViY2xhc3MpLCBsZW4odGV4dCkpCisgICAgICAgICAgICBpZiB0ZXh0ID09ICdhc2NpaSc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJjbGFzcy5lbmNvZGUoJ2FzY2lpJyksIGInYXNjaWknKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViY2xhc3MuZW5jb2RlKCd1dGYtOCcpLCBiJ2FzY2lpJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc3RyKCdzdHJpbmdzIGFyZSBjb252ZXJ0ZWQgdG8gdW5pY29kZScpLApAQCAtMTE3MCwxNSArMTI1MywxMiBAQAogICAgIGRlZiB0ZXN0X2NvZGVjc191dGY4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmVuY29kZSgndXRmLTgnKSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIwYWMnLmVuY29kZSgndXRmLTgnKSwgYidceGUyXHg4Mlx4YWMnKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZDgwMFx1ZGMwMicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceDkwXHg4MFx4ODInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkODRkXHVkYzU2Jy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4YTNceDkxXHg5NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDInLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHg5MFx4ODBceDgyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAyMzQ1NicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceGEzXHg5MVx4OTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWQ4MDAnLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpLCBiJ1x4ZWRceGEwXHg4MCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZGMwMCcuZW5jb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVwYXNzJyksIGInXHhlZFx4YjBceDgwJykKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgICgnXHVkODAwXHVkYzAyJyoxMDAwKS5lbmNvZGUoJ3V0Zi04JyksCi0gICAgICAgICAgICAgICAgYidceGYwXHg5MFx4ODBceDgyJyoxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnXFUwMDAxMDAwMicqMTApLmVuY29kZSgndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZjBceDkwXHg4MFx4ODInKjEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgJ1x1NmI2M1x1NzhiYVx1MzA2Ylx1OGEwMFx1MzA0Nlx1MzA2OFx1N2ZmYlx1OGEzM1x1MzA2ZicKICAgICAgICAgICAgICdcdTMwNTVcdTMwOGNcdTMwNjZcdTMwNDRcdTMwN2VcdTMwNWJcdTMwOTNcdTMwMDJcdTRlMDAnCkBAIC0xMjkwLDcgKzEzNzAsNyBAQAogICAgICAgICAgICAgIyB3aXRoIHN0YXJ0IGJ5dGUgb2YgYSAyLWJ5dGUgc2VxdWVuY2UKICAgICAgICAgICAgIChiJ1x4YzInLCBGRkZEKSwgIyBvbmx5IHRoZSBzdGFydCBieXRlCiAgICAgICAgICAgICAoYidceGMyXHhjMicsIEZGRkQqMiksICMgMiBzdGFydCBieXRlcwotICAgICAgICAgICAgKGInXHhjMlx4YzJceGMyJywgRkZGRCozKSwgIyAyIHN0YXJ0IGJ5dGVzCisgICAgICAgICAgICAoYidceGMyXHhjMlx4YzInLCBGRkZEKjMpLCAjIDMgc3RhcnQgYnl0ZXMKICAgICAgICAgICAgIChiJ1x4YzJceDQxJywgRkZGRCsnQScpLCAjIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUKICAgICAgICAgICAgICMgd2l0aCBzdGFydCBieXRlIG9mIGEgMy1ieXRlIHNlcXVlbmNlCiAgICAgICAgICAgICAoYidceGUxJywgRkZGRCksICMgb25seSB0aGUgc3RhcnQgYnl0ZQpAQCAtMTM2MCw2ICsxNDQwLDIyNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXEuZGVjb2RlKCd1dGYtOCcsICdpZ25vcmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnJlcGxhY2UoJ1x1RkZGRCcsICcnKSkKIAorICAgIGRlZiB0b19ieXRlc3RyaW5nKHNlbGYsIHNlcSk6CisgICAgICAgIHJldHVybiBieXRlcyhpbnQoYywgMTYpIGZvciBjIGluIHNlcS5zcGxpdCgpKQorCisgICAgZGVmIGFzc2VydENvcnJlY3RVVEY4RGVjb2Rpbmcoc2VsZiwgc2VxLCByZXMsIGVycik6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IGFuIGludmFsaWQgVVRGLTggc2VxdWVuY2UgcmFpc2VzIGFuIFVuaWNvZGVEZWNvZGVFcnJvciB3aGVuCisgICAgICAgICdzdHJpY3QnIGlzIHVzZWQsIHJldHVybnMgcmVzIHdoZW4gJ3JlcGxhY2UnIGlzIHVzZWQsIGFuZCB0aGF0IGRvZXNuJ3QKKyAgICAgICAgcmV0dXJuIGFueXRoaW5nIHdoZW4gJ2lnbm9yZScgaXMgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlcS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIsIHN0cihleGMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcS5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKSwgcmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ2FhYWEnICsgc2VxICsgYidiYmJiJykuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2FhYWEnICsgcmVzICsgJ2JiYmInKQorICAgICAgICByZXMgPSByZXMucmVwbGFjZSgnXHVmZmZkJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VxLmRlY29kZSgndXRmLTgnLCAnaWdub3JlJyksIHJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidhYWFhJyArIHNlcSArIGInYmJiYicpLmRlY29kZSgndXRmLTgnLCAnaWdub3JlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhYWFhJyArIHJlcyArICdiYmJiJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfc3RhcnRfYnl0ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhbiAnaW52YWxpZCBzdGFydCBieXRlJyBlcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgZmlyc3QgYnl0ZQorICAgICAgICBpcyBub3QgaW4gdGhlIEFTQ0lJIHJhbmdlIG9yIGlzIG5vdCBhIHZhbGlkIHN0YXJ0IGJ5dGUgb2YgYSAyLSwgMy0sIG9yCisgICAgICAgIDQtYnl0ZXMgc2VxdWVuY2UuIFRoZSBpbnZhbGlkIHN0YXJ0IGJ5dGUgaXMgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZQorICAgICAgICBVK0ZGRkQgd2hlbiBlcnJvcnM9J3JlcGxhY2UnLgorICAgICAgICBFLmcuIDw4MD4gaXMgYSBjb250aW51YXRpb24gYnl0ZSBhbmQgY2FuIGFwcGVhciBvbmx5IGFmdGVyIGEgc3RhcnQgYnl0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIEZGRkQgPSAnXHVmZmZkJworICAgICAgICBmb3IgYnl0ZSBpbiBiJ1x4ODBceEEwXHg5Rlx4QkZceEMwXHhDMVx4RjVceEZGJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Q29ycmVjdFVURjhEZWNvZGluZyhieXRlcyhbYnl0ZV0pLCAnXHVmZmZkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBzdGFydCBieXRlJykKKworICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZW5kX29mX2RhdGEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYW4gJ3VuZXhwZWN0ZWQgZW5kIG9mIGRhdGEnIGVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBzdHJpbmcKKyAgICAgICAgZW5kcyBhZnRlciBhIHN0YXJ0IGJ5dGUgb2YgYSAyLSwgMy0sIG9yIDQtYnl0ZXMgc2VxdWVuY2Ugd2l0aG91dCBoYXZpbmcKKyAgICAgICAgZW5vdWdoIGNvbnRpbnVhdGlvbiBieXRlcy4gIFRoZSBpbmNvbXBsZXRlIHNlcXVlbmNlIGlzIHJlcGxhY2VkIHdpdGggYQorICAgICAgICBzaW5nbGUgVStGRkZEIHdoZW4gZXJyb3JzPSdyZXBsYWNlJy4KKyAgICAgICAgRS5nLiBpbiB0aGUgc2VxdWVuY2UgPEYzIDgwIDgwPiwgRjMgaXMgdGhlIHN0YXJ0IGJ5dGUgb2YgYSA0LWJ5dGVzCisgICAgICAgIHNlcXVlbmNlLCBidXQgaXQncyBmb2xsb3dlZCBieSBvbmx5IDIgdmFsaWQgY29udGludWF0aW9uIGJ5dGVzIGFuZCB0aGUKKyAgICAgICAgbGFzdCBjb250aW51YXRpb24gYnl0ZXMgaXMgbWlzc2luZy4KKyAgICAgICAgTm90ZTogdGhlIGNvbnRpbnVhdGlvbiBieXRlcyBtdXN0IGJlIGFsbCB2YWxpZCwgaWYgb25lIG9mIHRoZW0gaXMKKyAgICAgICAgaW52YWxpZCBhbm90aGVyIGVycm9yIHdpbGwgYmUgcmFpc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VxdWVuY2VzID0gWworICAgICAgICAgICAgJ0MyJywgJ0RGJywKKyAgICAgICAgICAgICdFMCBBMCcsICdFMCBCRicsICdFMSA4MCcsICdFMSBCRicsICdFQyA4MCcsICdFQyBCRicsCisgICAgICAgICAgICAnRUQgODAnLCAnRUQgOUYnLCAnRUUgODAnLCAnRUUgQkYnLCAnRUYgODAnLCAnRUYgQkYnLAorICAgICAgICAgICAgJ0YwIDkwJywgJ0YwIEJGJywgJ0YwIDkwIDgwJywgJ0YwIDkwIEJGJywgJ0YwIEJGIDgwJywgJ0YwIEJGIEJGJywKKyAgICAgICAgICAgICdGMSA4MCcsICdGMSBCRicsICdGMSA4MCA4MCcsICdGMSA4MCBCRicsICdGMSBCRiA4MCcsICdGMSBCRiBCRicsCisgICAgICAgICAgICAnRjMgODAnLCAnRjMgQkYnLCAnRjMgODAgODAnLCAnRjMgODAgQkYnLCAnRjMgQkYgODAnLCAnRjMgQkYgQkYnLAorICAgICAgICAgICAgJ0Y0IDgwJywgJ0Y0IDhGJywgJ0Y0IDgwIDgwJywgJ0Y0IDgwIEJGJywgJ0Y0IDhGIDgwJywgJ0Y0IDhGIEJGJworICAgICAgICBdCisgICAgICAgIEZGRkQgPSAnXHVmZmZkJworICAgICAgICBmb3Igc2VxIGluIHNlcXVlbmNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Q29ycmVjdFVURjhEZWNvZGluZyhzZWxmLnRvX2J5dGVzdHJpbmcoc2VxKSwgJ1x1ZmZmZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgZW5kIG9mIGRhdGEnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jYl9mb3JfMmJ5dGVzX3NlcShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhbiAnaW52YWxpZCBjb250aW51YXRpb24gYnl0ZScgZXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlCisgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlIG9mIGEgMi1ieXRlcyBzZXF1ZW5jZSBpcyBpbnZhbGlkLiAgVGhlIHN0YXJ0IGJ5dGUKKyAgICAgICAgaXMgcmVwbGFjZWQgYnkgYSBzaW5nbGUgVStGRkZEIGFuZCB0aGUgc2Vjb25kIGJ5dGUgaXMgaGFuZGxlZAorICAgICAgICBzZXBhcmF0ZWx5IHdoZW4gZXJyb3JzPSdyZXBsYWNlJy4KKyAgICAgICAgRS5nLiBpbiB0aGUgc2VxdWVuY2UgPEMyIDQxPiwgQzIgaXMgdGhlIHN0YXJ0IGJ5dGUgb2YgYSAyLWJ5dGVzCisgICAgICAgIHNlcXVlbmNlLCBidXQgNDEgaXMgbm90IGEgdmFsaWQgY29udGludWF0aW9uIGJ5dGUgYmVjYXVzZSBpdCdzIHRoZQorICAgICAgICBBU0NJSSBsZXR0ZXIgJ0EnLgorICAgICAgICAiIiIKKyAgICAgICAgRkZGRCA9ICdcdWZmZmQnCisgICAgICAgIEZGRkR4MiA9IEZGRkQgKiAyCisgICAgICAgIHNlcXVlbmNlcyA9IFsKKyAgICAgICAgICAgICgnQzIgMDAnLCBGRkZEKydceDAwJyksICgnQzIgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0MyIEMwJywgRkZGRHgyKSwgKCdDMiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0RGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0RGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdERiBDMCcsIEZGRkR4MiksICgnREYgRkYnLCBGRkZEeDIpLAorICAgICAgICBdCisgICAgICAgIGZvciBzZXEsIHJlcyBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvcnJlY3RVVEY4RGVjb2Rpbmcoc2VsZi50b19ieXRlc3RyaW5nKHNlcSksIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBjb250aW51YXRpb24gYnl0ZScpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NiX2Zvcl8zYnl0ZXNfc2VxKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGFuICdpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlJyBlcnJvciBpcyByYWlzZWQgd2hlbiB0aGUKKyAgICAgICAgY29udGludWF0aW9uIGJ5dGUocykgb2YgYSAzLWJ5dGVzIHNlcXVlbmNlIGFyZSBpbnZhbGlkLiAgV2hlbgorICAgICAgICBlcnJvcnM9J3JlcGxhY2UnLCBpZiB0aGUgZmlyc3QgY29udGludWF0aW9uIGJ5dGUgaXMgdmFsaWQsIHRoZSBmaXJzdAorICAgICAgICB0d28gYnl0ZXMgKHN0YXJ0IGJ5dGUgKyAxc3QgY2IpIGFyZSByZXBsYWNlZCBieSBhIHNpbmdsZSBVK0ZGRkQgYW5kIHRoZQorICAgICAgICB0aGlyZCBieXRlIGlzIGhhbmRsZWQgc2VwYXJhdGVseSwgb3RoZXJ3aXNlIG9ubHkgdGhlIHN0YXJ0IGJ5dGUgaXMKKyAgICAgICAgcmVwbGFjZWQgd2l0aCBhIFUrRkZGRCBhbmQgdGhlIG90aGVyIGNvbnRpbnVhdGlvbiBieXRlcyBhcmUgaGFuZGxlZAorICAgICAgICBzZXBhcmF0ZWx5LgorICAgICAgICBFLmcuIGluIHRoZSBzZXF1ZW5jZSA8RTEgODAgNDE+LCBFMSBpcyB0aGUgc3RhcnQgYnl0ZSBvZiBhIDMtYnl0ZXMKKyAgICAgICAgc2VxdWVuY2UsIDgwIGlzIGEgdmFsaWQgY29udGludWF0aW9uIGJ5dGUsIGJ1dCA0MSBpcyBub3QgYSB2YWxpZCBjYgorICAgICAgICBiZWNhdXNlIGl0J3MgdGhlIEFTQ0lJIGxldHRlciAnQScuCisgICAgICAgIE5vdGU6IHdoZW4gdGhlIHN0YXJ0IGJ5dGUgaXMgRTAgb3IgRUQsIHRoZSB2YWxpZCByYW5nZXMgZm9yIHRoZSBmaXJzdAorICAgICAgICBjb250aW51YXRpb24gYnl0ZSBhcmUgbGltaXRlZCB0byBBMC4uQkYgYW5kIDgwLi45RiByZXNwZWN0aXZlbHkuCisgICAgICAgIFB5dGhvbiAyIHVzZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBieXRlcyBpbiByYW5nZSA4MC4uQkYgdmFsaWQgd2hlbiB0aGUKKyAgICAgICAgc3RhcnQgYnl0ZSB3YXMgRUQuICBUaGlzIGlzIGZpeGVkIGluIFB5dGhvbiAzLgorICAgICAgICAiIiIKKyAgICAgICAgRkZGRCA9ICdcdWZmZmQnCisgICAgICAgIEZGRkR4MiA9IEZGRkQgKiAyCisgICAgICAgIHNlcXVlbmNlcyA9IFsKKyAgICAgICAgICAgICgnRTAgMDAnLCBGRkZEKydceDAwJyksICgnRTAgN0YnLCBGRkZEKydceDdmJyksICgnRTAgODAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFMCA5RicsIEZGRkR4MiksICgnRTAgQzAnLCBGRkZEeDIpLCAoJ0UwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRTAgQTAgMDAnLCBGRkZEKydceDAwJyksICgnRTAgQTAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0UwIEEwIEMwJywgRkZGRHgyKSwgKCdFMCBBMCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0UwIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0UwIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFMCBCRiBDMCcsIEZGRkR4MiksICgnRTAgQkYgRkYnLCBGRkZEeDIpLCAoJ0UxIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdFMSA3RicsIEZGRkQrJ1x4N2YnKSwgKCdFMSBDMCcsIEZGRkR4MiksICgnRTEgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFMSA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFMSA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRTEgODAgQzAnLCBGRkZEeDIpLCAoJ0UxIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRTEgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRTEgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0UxIEJGIEMwJywgRkZGRHgyKSwgKCdFMSBCRiBGRicsIEZGRkR4MiksICgnRUMgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0VDIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0VDIEMwJywgRkZGRHgyKSwgKCdFQyBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0VDIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0VDIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFQyA4MCBDMCcsIEZGRkR4MiksICgnRUMgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFQyBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFQyBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRUMgQkYgQzAnLCBGRkZEeDIpLCAoJ0VDIEJGIEZGJywgRkZGRHgyKSwgKCdFRCAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRUQgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0VEIEEwJywgRkZGRHgyKSwgKCdFRCBCRicsIEZGRkR4MiksICMgc2VlIG5vdGUgXgorICAgICAgICAgICAgKCdFRCBDMCcsIEZGRkR4MiksICgnRUQgRkYnLCBGRkZEeDIpLCAoJ0VEIDgwIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdFRCA4MCA3RicsIEZGRkQrJ1x4N2YnKSwgKCdFRCA4MCBDMCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0VEIDgwIEZGJywgRkZGRHgyKSwgKCdFRCA5RiAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRUQgOUYgN0YnLCBGRkZEKydceDdmJyksICgnRUQgOUYgQzAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFRCA5RiBGRicsIEZGRkR4MiksICgnRUUgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0VFIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0VFIEMwJywgRkZGRHgyKSwgKCdFRSBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0VFIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0VFIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFRSA4MCBDMCcsIEZGRkR4MiksICgnRUUgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFRSBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFRSBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRUUgQkYgQzAnLCBGRkZEeDIpLCAoJ0VFIEJGIEZGJywgRkZGRHgyKSwgKCdFRiAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRUYgN0YnLCBGRkZEKydceDdmJyksICgnRUYgQzAnLCBGRkZEeDIpLCAoJ0VGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRUYgODAgMDAnLCBGRkZEKydceDAwJyksICgnRUYgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0VGIDgwIEMwJywgRkZGRHgyKSwgKCdFRiA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0VGIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0VGIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFRiBCRiBDMCcsIEZGRkR4MiksICgnRUYgQkYgRkYnLCBGRkZEeDIpLAorICAgICAgICBdCisgICAgICAgIGZvciBzZXEsIHJlcyBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvcnJlY3RVVEY4RGVjb2Rpbmcoc2VsZi50b19ieXRlc3RyaW5nKHNlcSksIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBjb250aW51YXRpb24gYnl0ZScpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NiX2Zvcl80Ynl0ZXNfc2VxKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGFuICdpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlJyBlcnJvciBpcyByYWlzZWQgd2hlbiB0aGUKKyAgICAgICAgY29udGludWF0aW9uIGJ5dGUocykgb2YgYSA0LWJ5dGVzIHNlcXVlbmNlIGFyZSBpbnZhbGlkLiAgV2hlbgorICAgICAgICBlcnJvcnM9J3JlcGxhY2UnLHRoZSBzdGFydCBieXRlIGFuZCBhbGwgdGhlIGZvbGxvd2luZyB2YWxpZAorICAgICAgICBjb250aW51YXRpb24gYnl0ZXMgYXJlIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgVStGRkZELCBhbmQgYWxsIHRoZSBieXRlcworICAgICAgICBzdGFydGluZyBmcm9tIHRoZSBmaXJzdCBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlcyAoaW5jbHVkZWQpIGFyZQorICAgICAgICBoYW5kbGVkIHNlcGFyYXRlbHkuCisgICAgICAgIEUuZy4gaW4gdGhlIHNlcXVlbmNlIDxFMSA4MCA0MT4sIEUxIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgMy1ieXRlcworICAgICAgICBzZXF1ZW5jZSwgODAgaXMgYSB2YWxpZCBjb250aW51YXRpb24gYnl0ZSwgYnV0IDQxIGlzIG5vdCBhIHZhbGlkIGNiCisgICAgICAgIGJlY2F1c2UgaXQncyB0aGUgQVNDSUkgbGV0dGVyICdBJy4KKyAgICAgICAgTm90ZTogd2hlbiB0aGUgc3RhcnQgYnl0ZSBpcyBFMCBvciBFRCwgdGhlIHZhbGlkIHJhbmdlcyBmb3IgdGhlIGZpcnN0CisgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlIGFyZSBsaW1pdGVkIHRvIEEwLi5CRiBhbmQgODAuLjlGIHJlc3BlY3RpdmVseS4KKyAgICAgICAgSG93ZXZlciwgd2hlbiB0aGUgc3RhcnQgYnl0ZSBpcyBFRCwgUHl0aG9uIDIgY29uc2lkZXJzIGFsbCB0aGUgYnl0ZXMKKyAgICAgICAgaW4gcmFuZ2UgODAuLkJGIHZhbGlkLiAgVGhpcyBpcyBmaXhlZCBpbiBQeXRob24gMy4KKyAgICAgICAgIiIiCisgICAgICAgIEZGRkQgPSAnXHVmZmZkJworICAgICAgICBGRkZEeDIgPSBGRkZEICogMgorICAgICAgICBzZXF1ZW5jZXMgPSBbCisgICAgICAgICAgICAoJ0YwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YwIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0YwIDgwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjAgOEYnLCBGRkZEeDIpLCAoJ0YwIEMwJywgRkZGRHgyKSwgKCdGMCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YwIDkwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YwIDkwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMCA5MCBDMCcsIEZGRkR4MiksICgnRjAgOTAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMCBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMCBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjAgQkYgQzAnLCBGRkZEeDIpLCAoJ0YwIEJGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjAgOTAgODAgMDAnLCBGRkZEKydceDAwJyksICgnRjAgOTAgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YwIDkwIDgwIEMwJywgRkZGRHgyKSwgKCdGMCA5MCA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YwIDkwIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YwIDkwIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMCA5MCBCRiBDMCcsIEZGRkR4MiksICgnRjAgOTAgQkYgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMCBCRiA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMCBCRiA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjAgQkYgODAgQzAnLCBGRkZEeDIpLCAoJ0YwIEJGIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjAgQkYgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRjAgQkYgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YwIEJGIEJGIEMwJywgRkZGRHgyKSwgKCdGMCBCRiBCRiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YxIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YxIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0YxIEMwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjEgRkYnLCBGRkZEeDIpLCAoJ0YxIDgwIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdGMSA4MCA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMSA4MCBDMCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YxIDgwIEZGJywgRkZGRHgyKSwgKCdGMSBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRjEgQkYgN0YnLCBGRkZEKydceDdmJyksICgnRjEgQkYgQzAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMSBCRiBGRicsIEZGRkR4MiksICgnRjEgODAgODAgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0YxIDgwIDgwIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0YxIDgwIDgwIEMwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjEgODAgODAgRkYnLCBGRkZEeDIpLCAoJ0YxIDgwIEJGIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdGMSA4MCBCRiA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMSA4MCBCRiBDMCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YxIDgwIEJGIEZGJywgRkZGRHgyKSwgKCdGMSBCRiA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRjEgQkYgODAgN0YnLCBGRkZEKydceDdmJyksICgnRjEgQkYgODAgQzAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMSBCRiA4MCBGRicsIEZGRkR4MiksICgnRjEgQkYgQkYgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0YxIEJGIEJGIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0YxIEJGIEJGIEMwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjEgQkYgQkYgRkYnLCBGRkZEeDIpLCAoJ0YzIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdGMyA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMyBDMCcsIEZGRkR4MiksICgnRjMgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMyA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMyA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjMgODAgQzAnLCBGRkZEeDIpLCAoJ0YzIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjMgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRjMgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YzIEJGIEMwJywgRkZGRHgyKSwgKCdGMyBCRiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YzIDgwIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YzIDgwIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMyA4MCA4MCBDMCcsIEZGRkR4MiksICgnRjMgODAgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMyA4MCBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMyA4MCBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjMgODAgQkYgQzAnLCBGRkZEeDIpLCAoJ0YzIDgwIEJGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjMgQkYgODAgMDAnLCBGRkZEKydceDAwJyksICgnRjMgQkYgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YzIEJGIDgwIEMwJywgRkZGRHgyKSwgKCdGMyBCRiA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YzIEJGIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YzIEJGIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMyBCRiBCRiBDMCcsIEZGRkR4MiksICgnRjMgQkYgQkYgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGNCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGNCA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGNCA5MCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0Y0IEJGJywgRkZGRHgyKSwgKCdGNCBDMCcsIEZGRkR4MiksICgnRjQgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGNCA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGNCA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjQgODAgQzAnLCBGRkZEeDIpLCAoJ0Y0IDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjQgOEYgMDAnLCBGRkZEKydceDAwJyksICgnRjQgOEYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0Y0IDhGIEMwJywgRkZGRHgyKSwgKCdGNCA4RiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0Y0IDgwIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0Y0IDgwIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGNCA4MCA4MCBDMCcsIEZGRkR4MiksICgnRjQgODAgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGNCA4MCBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGNCA4MCBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjQgODAgQkYgQzAnLCBGRkZEeDIpLCAoJ0Y0IDgwIEJGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjQgOEYgODAgMDAnLCBGRkZEKydceDAwJyksICgnRjQgOEYgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0Y0IDhGIDgwIEMwJywgRkZGRHgyKSwgKCdGNCA4RiA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0Y0IDhGIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0Y0IDhGIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGNCA4RiBCRiBDMCcsIEZGRkR4MiksICgnRjQgOEYgQkYgRkYnLCBGRkZEeDIpCisgICAgICAgIF0KKyAgICAgICAgZm9yIHNlcSwgcmVzIGluIHNlcXVlbmNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Q29ycmVjdFVURjhEZWNvZGluZyhzZWxmLnRvX2J5dGVzdHJpbmcoc2VxKSwgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlJykKKwogICAgIGRlZiB0ZXN0X2NvZGVjc19pZG5hKHNlbGYpOgogICAgICAgICAjIFRlc3Qgd2hldGhlciB0cmFpbGluZyBkb3QgaXMgcHJlc2VydmVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnLiIuZW5jb2RlKCJpZG5hIiksIGIid3d3LnB5dGhvbi5vcmcuIikKQEAgLTEzOTEsMTQgKzE2OTEsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN0ciwgYiJoZWxsbyIsICJ0ZXN0LnVuaWNvZGUyIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiaGVsbG8iLmVuY29kZSwgInRlc3QudW5pY29kZTEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJoZWxsbyIuZW5jb2RlLCAidGVzdC51bmljb2RlMiIpCi0gICAgICAgICMgZXhlY3V0ZXMgUHlVbmljb2RlX0VuY29kZSgpCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBJbXBvcnRFcnJvciwKLSAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSwKLSAgICAgICAgICAgICJub24tZXhpc3RpbmcgbW9kdWxlIiwKLSAgICAgICAgICAgIFsibm9uLWV4aXN0aW5nIGRpciJdCi0gICAgICAgICkKIAogICAgICAgICAjIEVycm9yIGhhbmRsaW5nICh3cm9uZyBhcmd1bWVudHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgImhlbGxvIi5lbmNvZGUsIDQyLCA0MiwgNDIpCkBAIC0xNDE2LDE4ICsxNzA4LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ2FzY2lpJyksIGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtNycpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTgnKSwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0ZjgnKSwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi04JyksIGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtMTYtbGUnKSwgYidoXDAwMGVcMDAwbFwwMDBsXDAwMG9cMDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTE2LWJlJyksIGInXDAwMGhcMDAwZVwwMDBsXDAwMGxcMDAwbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ2xhdGluLTEnKSwgYidoZWxsbycpCiAKKyAgICAgICAgIyBEZWZhdWx0IGVuY29kaW5nIGlzIHV0Zi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MjYwMycuZW5jb2RlKCksIGInXHhlMlx4OThceDgzJykKKwogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIEJNUCAoanVzdCB0aGUgZmlyc3QgMTAyNCBjaGFycykKICAgICAgICAgZm9yIGMgaW4gcmFuZ2UoMTAyNCk6CiAgICAgICAgICAgICB1ID0gY2hyKGMpCiAgICAgICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtNycsICd1dGYtOCcsICd1dGYtMTYnLCAndXRmLTE2LWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3V0Zi0xNi1iZScsICdyYXdfdW5pY29kZV9lc2NhcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pY29kZV9lc2NhcGUnLCAndW5pY29kZV9pbnRlcm5hbCcpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQogCiAgICAgICAgICMgUm91bmR0cmlwIHNhZmV0eSBmb3IgQk1QIChqdXN0IHRoZSBmaXJzdCAyNTYgY2hhcnMpCiAgICAgICAgIGZvciBjIGluIHJhbmdlKDI1Nik6CkBAIC0xNDQyLDE4ICsxNzQxLDIwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIAogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIG5vbi1CTVAgKGp1c3QgYSBmZXcgY2hhcnMpCi0gICAgICAgIHUgPSAnXFUwMDAxMDAwMVxVMDAwMjAwMDJcVTAwMDMwMDAzXFUwMDA0MDAwNFxVMDAwNTAwMDUnCi0gICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywgJ3V0Zi0xNicsICd1dGYtMTYtbGUnLCAndXRmLTE2LWJlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAjJ3Jhd191bmljb2RlX2VzY2FwZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAotICAgICAgICAjIFVURi04IG11c3QgYmUgcm91bmR0cmlwIHNhZmUgZm9yIGFsbCBVQ1MtMiBjb2RlIHBvaW50cwotICAgICAgICAjIFRoaXMgZXhjbHVkZXMgc3Vycm9nYXRlczogaW4gdGhlIGZ1bGwgcmFuZ2UsIHRoZXJlIHdvdWxkIGJlCi0gICAgICAgICMgYSBzdXJyb2dhdGUgcGFpciAoXHVkYmZmXHVkYzAwKSwgd2hpY2ggZ2V0cyBjb252ZXJ0ZWQgYmFjawotICAgICAgICAjIHRvIGEgbm9uLUJNUCBjaGFyYWN0ZXIgKFxVMDAxMGZjMDApCi0gICAgICAgIHUgPSAnJy5qb2luKG1hcChjaHIsIGxpc3QocmFuZ2UoMCwweGQ4MDApKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoMHhlMDAwLDB4MTAwMDApKSkpCisgICAgICAgICAgICB1ID0gJ1xVMDAwMTAwMDFcVTAwMDIwMDAyXFUwMDAzMDAwM1xVMDAwNDAwMDRcVTAwMDUwMDA1JworICAgICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTgnLCAndXRmLTE2JywgJ3V0Zi0xNi1sZScsICd1dGYtMTYtYmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmF3X3VuaWNvZGVfZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorCisgICAgICAgICMgVVRGLTggbXVzdCBiZSByb3VuZHRyaXAgc2FmZSBmb3IgYWxsIGNvZGUgcG9pbnRzCisgICAgICAgICMgKGV4Y2VwdCBzdXJyb2dhdGVzLCB3aGljaCBhcmUgZm9yYmlkZGVuKS4KKyAgICAgICAgdSA9ICcnLmpvaW4obWFwKGNociwgbGlzdChyYW5nZSgwLCAweGQ4MDApKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoMHhlMDAwLCAweDExMDAwMCkpKSkKICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTgnLCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQogCkBAIC0xNjM4LDE3ICsxOTM5LDM5IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgJ3RcdHRcdCcuZXhwYW5kdGFicywgc3lzLm1heHNpemUpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9leHBhbmR0YWJzX29wdGltaXphdGlvbihzZWxmKToKKyAgICAgICAgcyA9ICdhYmMnCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocy5leHBhbmR0YWJzKCksIHMpCisKICAgICBkZWYgdGVzdF9yYWlzZU1lbUVycm9yKHNlbGYpOgotICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBmcmVlbGlzdCBjb250YWlucyBhIGNvbnNpc3RlbnQgb2JqZWN0LCBldmVuCi0gICAgICAgICMgd2hlbiBhIHN0cmluZyBhbGxvY2F0aW9uIGZhaWxzIHdpdGggYSBNZW1vcnlFcnJvci4KLSAgICAgICAgIyBUaGlzIHVzZWQgdG8gY3Jhc2ggdGhlIGludGVycHJldGVyLAotICAgICAgICAjIG9yIGxlYWsgcmVmZXJlbmNlcyB3aGVuIHRoZSBudW1iZXIgd2FzIHNtYWxsZXIuCi0gICAgICAgIGNoYXJ3aWR0aCA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPj0gMHgxMDAwMCBlbHNlIDIKLSAgICAgICAgIyBOb3RlOiBzeXMubWF4c2l6ZSBpcyBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4IGFsbG9jYXRpb24gYmVjYXVzZSBvZgotICAgICAgICAjIHRoZSBzaWduZWRuZXNzIG9mIFB5X3NzaXplX3QuCi0gICAgICAgIGFsbG9jID0gbGFtYmRhOiAiYSIgKiAoc3lzLm1heHNpemUgLy8gY2hhcndpZHRoICogMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCisgICAgICAgIGlmIHN0cnVjdC5jYWxjc2l6ZSgnUCcpID09IDg6CisgICAgICAgICAgICAjIDY0IGJpdHMgcG9pbnRlcnMKKyAgICAgICAgICAgIGFzY2lpX3N0cnVjdF9zaXplID0gNDgKKyAgICAgICAgICAgIGNvbXBhY3Rfc3RydWN0X3NpemUgPSA3MgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyAzMiBiaXRzIHBvaW50ZXJzCisgICAgICAgICAgICBhc2NpaV9zdHJ1Y3Rfc2l6ZSA9IDI0CisgICAgICAgICAgICBjb21wYWN0X3N0cnVjdF9zaXplID0gMzYKKworICAgICAgICBmb3IgY2hhciBpbiAoJ2EnLCAnXHhlOScsICdcdTIwYWMnLCAnXFUwMDEwZmZmZicpOgorICAgICAgICAgICAgY29kZSA9IG9yZChjaGFyKQorICAgICAgICAgICAgaWYgY29kZSA8IDB4MTAwOgorICAgICAgICAgICAgICAgIGNoYXJfc2l6ZSA9IDEgICMgc2l6ZW9mKFB5X1VDUzEpCisgICAgICAgICAgICAgICAgc3RydWN0X3NpemUgPSBhc2NpaV9zdHJ1Y3Rfc2l6ZQorICAgICAgICAgICAgZWxpZiBjb2RlIDwgMHgxMDAwMDoKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSAyICAjIHNpemVvZihQeV9VQ1MyKQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gY29tcGFjdF9zdHJ1Y3Rfc2l6ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSA0ICAjIHNpemVvZihQeV9VQ1M0KQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gY29tcGFjdF9zdHJ1Y3Rfc2l6ZQorICAgICAgICAgICAgIyBOb3RlOiBzeXMubWF4c2l6ZSBpcyBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4IGFsbG9jYXRpb24gYmVjYXVzZSBvZgorICAgICAgICAgICAgIyB0aGUgc2lnbmVkbmVzcyBvZiBQeV9zc2l6ZV90LiBTdHJpbmdzIG9mIG1heGxlbi0xIHNob3VsZCBpbiBwcmluY2lwbGUKKyAgICAgICAgICAgICMgYmUgYWxsb2NhdGFibGUsIGdpdmVuIGVub3VnaCBtZW1vcnkuCisgICAgICAgICAgICBtYXhsZW4gPSAoKHN5cy5tYXhzaXplIC0gc3RydWN0X3NpemUpIC8vIGNoYXJfc2l6ZSkKKyAgICAgICAgICAgIGFsbG9jID0gbGFtYmRhOiBjaGFyICogbWF4bGVuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCiAKICAgICBkZWYgdGVzdF9mb3JtYXRfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIFMoc3RyKToKQEAgLTE2NjEsMTEgKzE5ODQsMTAgQEAKICAgICAjIFRlc3QgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKQogICAgIGRlZiB0ZXN0X2Zyb21fZm9ybWF0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCi0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdCwgY19pbnQKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBuYW1lID0gIlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5hbWUgPSAiUHlVbmljb2RlVUNTNF9Gcm9tRm9ybWF0IgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgKHB5dGhvbmFwaSwgcHlfb2JqZWN0LAorICAgICAgICAgICAgY19pbnQsIGNfbG9uZywgY19sb25nbG9uZywgY19zc2l6ZV90LAorICAgICAgICAgICAgY191aW50LCBjX3Vsb25nLCBjX3Vsb25nbG9uZywgY19zaXplX3QpCisgICAgICAgIG5hbWUgPSAiUHlVbmljb2RlX0Zyb21Gb3JtYXQiCiAgICAgICAgIF9QeVVuaWNvZGVfRnJvbUZvcm1hdCA9IGdldGF0dHIocHl0aG9uYXBpLCBuYW1lKQogICAgICAgICBfUHlVbmljb2RlX0Zyb21Gb3JtYXQucmVzdHlwZSA9IHB5X29iamVjdAogCkBAIC0xNjg2LDEzICsyMDA4LDQwIEBACiAgICAgICAgICAgICAnc3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHhlOSQnLAogICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Gb3JtYXQsIGIndW5pY29kZVx4ZTk9JXMnLCAnYXNjaWknKQogCisgICAgICAgICMgdGVzdCAiJWMiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclYycsIGNfaW50KDB4YWJjZCkpLCAnXHVhYmNkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVjJywgY19pbnQoMHgxMGZmZmYpKSwgJ1xVMDAxMGZmZmYnKQogCi0gICAgICAgICMgb3RoZXIgdGVzdHMKKyAgICAgICAgIyB0ZXN0ICIlIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJScpLCAnJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJScpLCAnJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJXMnKSwgJyVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ1slJV0nKSwgJ1slXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJSVzJywgYidhYmMnKSwgJyVhYmMnKQorCisgICAgICAgICMgdGVzdCBpbnRlZ2VyIGZvcm1hdHMgKCVpLCAlZCwgJXUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMDNpJywgY19pbnQoMTApKSwgJzAxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMC40aScsIGNfaW50KDEwKSksICcwMDEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVpJywgY19pbnQoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGknLCBjX2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGxpJywgY19sb25nbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6aScsIGNfc3NpemVfdCgtMTIzKSksICctMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWQnLCBjX2ludCgtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsZCcsIGNfbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsbGQnLCBjX2xvbmdsb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXpkJywgY19zc2l6ZV90KC0xMjMpKSwgJy0xMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYicldScsIGNfdWludCgxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbHUnLCBjX3Vsb25nKDEyMykpLCAnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsbHUnLCBjX3Vsb25nbG9uZygxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclenUnLCBjX3NpemVfdCgxMjMpKSwgJzEyMycpCisKKyAgICAgICAgIyB0ZXN0ICVBCiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlQTolQScsICdhYmNceGU5XHVhYmNkXFUwMDEwZmZmZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgciIlQTonYWJjXHhlOVx1YWJjZFxVMDAxMGZmZmYnIikKIAorICAgICAgICAjIHRlc3QgJVYKICAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGIncmVwcj0lVicsICdhYmMnLCBiJ3h5eicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJ3JlcHI9YWJjJykKIApAQCAtMTcwNiw2ICsyMDU1LDEzIEBACiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ3JlcHI9JVYnLCBOb25lLCBiJ2FiY1x4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdyZXByPWFiY1x1ZmZmZCcpCiAKKyAgICAgICAgIyBub3Qgc3VwcG9ydGVkOiBjb3B5IHRoZSByYXcgZm9ybWF0IHN0cmluZy4gdGhlc2UgdGVzdHMgYXJlIGp1c3QgaGVyZQorICAgICAgICAjIHRvIGNoZWNrIGZvciBjcmFzaHMgYW5kIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhcyBzcGVjaWZpY2F0aW9ucworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTElcycsIGInYWJjJyksICclcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMWFiYycpLCAnJTFhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJStpJywgY19pbnQoMTApKSwgJyUraScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclLiVzJywgYidhYmMnKSwgJyUuJXMnKQorCiAgICAgIyBUZXN0IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkKICAgICBkZWYgdGVzdF9hc3dpZGVjaGFyKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9hc3dpZGVjaGFyCkBAIC0xNzY2LDYgKzIxMjIsNTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBuY2hhcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Y2hhciwgbm9uYm1wICsgJ1wwJykKIAorICAgIGRlZiB0ZXN0X3N1YmNsYXNzX2FkZChzZWxmKToKKyAgICAgICAgY2xhc3MgUyhzdHIpOgorICAgICAgICAgICAgZGVmIF9fYWRkX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICIzIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFMoIjQiKSArIFMoIjUiKSwgIjMiKQorICAgICAgICBjbGFzcyBTKHN0cik6CisgICAgICAgICAgICBkZWYgX19pYWRkX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICIzIgorICAgICAgICBzID0gUygiMSIpCisgICAgICAgIHMgKz0gIjQiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIjMiKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCB1bmljb2RlX2VuY29kZWRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoJzEyMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzMuMTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInIDMuMTQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICIxMjNcdTIwYWMiLCAic3RyaWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgICAgICAiXidkZWNpbWFsJyBjb2RlYyBjYW4ndCBlbmNvZGUgY2hhcmFjdGVyIiwKKyAgICAgICAgICAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgIjEyM1x1MjBhYyIsICJyZXBsYWNlIikKKworICAgIGRlZiB0ZXN0X3RyYW5zZm9ybV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV90cmFuc2Zvcm1kZWNpbWFsdG9hc2NpaSBhcyB0cmFuc2Zvcm1fZGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCcxMjMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICczLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzXHUyMGFjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEyM1x1MjBhYycpCisKKyAgICBkZWYgdGVzdF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICB0ZXh0ID0gJ2FiYycKKyAgICAgICAgYXJncyA9IHRleHQuX19nZXRuZXdhcmdzX18oKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXJncyksIDEpCisKIAogY2xhc3MgU3RyaW5nTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZm9ybWF0dGVyX3BhcnNlcihzZWxmKToKQEAgLTE4MTcsNDUgKzIyMTgsNiBAQAogICAgICAgICAgICAgXV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3N0cmluZy5mb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdCwgMSkKIAotICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNpbWFsKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9lbmNvZGVkZWNpbWFsCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCcxMjMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiczLjE0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJyAzLjE0ICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9lbmNvZGVkZWNpbWFsLCAiMTIzXHUyMGFjIiwgInN0cmljdCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAiaWdub3JlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgInhtbGNoYXJyZWZyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMmIzgzNjQ7JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJiYWNrc2xhc2hyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjNcXHUyMGFjJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhY1xOe0VNIFNQQUNFfSIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/ICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWNcdTIwYWMiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPz8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjXHUwNjYwIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8wJykKLQotICAgIGRlZiB0ZXN0X3RyYW5zZm9ybV9kZWNpbWFsKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV90cmFuc2Zvcm1kZWNpbWFsdG9hc2NpaSBhcyB0cmFuc2Zvcm1fZGVjaW1hbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCcxMjMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICczLjE0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzXHUyMGFjJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEyM1x1MjBhYycpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5CmluZGV4IDZjMjAxMWEuLmZhYThkYTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5CkBAIC02LDcgKzYsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBybXRyZWUsCi0gICAgVEVTVEZOX0VOQ09ESU5HLCBURVNURk5fVU5JQ09ERSwgVEVTVEZOX1VORU5DT0RBQkxFKQorICAgIFRFU1RGTl9FTkNPRElORywgVEVTVEZOX1VOSUNPREUsIFRFU1RGTl9VTkVOQ09EQUJMRSwgY3JlYXRlX2VtcHR5X2ZpbGUpCiAKIGlmIG5vdCBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzOgogICAgIHRyeToKQEAgLTU2LDE2ICs1NiwyMCBAQAogICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIHJlbmFtZSB0aGUgZmlsZSB1c2luZyBlaXRoZXIgbmFtZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSkpICMgbXVzdCBleGlzdC4KICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxKyIubmV3IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZTEgKyAiLm5ldyIsIGZpbGVuYW1lMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUyKSkKIAogICAgICAgICBzaHV0aWwuY29weShmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lMSArICIubmV3IikgIyByZW1vdmUgdXNpbmcgZXF1aXYgbmFtZS4KICAgICAgICAgIyBBbmQgYSBjb3VwbGUgb2YgbW92ZXMsIG9uZSB1c2luZyBlYWNoIG5hbWUuCiAgICAgICAgIHNodXRpbC5tb3ZlKGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIHNodXRpbC5tb3ZlKGZpbGVuYW1lMSArICIubmV3IiwgZmlsZW5hbWUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMiArICcubmV3JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTEpKQogICAgICAgICAjIE5vdGUgLSBkdWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHNodXRpbC5tb3ZlLAogICAgICAgICAjIGl0IHRyaWVzIGEgcmVuYW1lIGZpcnN0LiAgVGhpcyBvbmx5IGZhaWxzIG9uIFdpbmRvd3Mgd2hlbiBvbgpAQCAtNzMsMTAgKzc3LDEyIEBACiAgICAgICAgICMgU28gd2UgdGVzdCB0aGUgc2h1dGlsLmNvcHkyIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgdGhpbmcgbW9zdAogICAgICAgICAjIGxpa2VseSB0byBmYWlsLgogICAgICAgICBzaHV0aWwuY29weTIoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUxICsgIi5uZXciKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMiArICcubmV3JykpCiAKICAgICBkZWYgX2RvX2RpcmVjdG9yeShzZWxmLCBtYWtlX25hbWUsIGNoZGlyX25hbWUpOgotICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihtYWtlX25hbWUpOgogICAgICAgICAgICAgcm10cmVlKG1ha2VfbmFtZSkKICAgICAgICAgb3MubWtkaXIobWFrZV9uYW1lKQpAQCAtOTksOCArMTA1LDcgQEAKICAgICAjIHRvcC1sZXZlbCAndGVzdCcgZnVuY3Rpb25zIHdvdWxkIGJlIGlmIHRoZXkgY291bGQgdGFrZSBwYXJhbXMKICAgICBkZWYgX3Rlc3Rfc2luZ2xlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgcmVtb3ZlX2lmX2V4aXN0cyhmaWxlbmFtZSkKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICJ3IikKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9kb19zaW5nbGUoZmlsZW5hbWUpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQppbmRleCA5NzQ0MjU2Li45OWFhMDAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKQEAgLTIxLDcgKzIxLDcgQEAKIGNsYXNzIFVuaWNvZGVNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnMjFiOTBmMWFlZDAwMDgxYjgxY2E3OTQyYjIyMTk2YWYwOTAwMTVhMCcKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2JmN2E3OGYxYTUzMjQyMWI1MDMzNjAwMTAyZTIzYTkyMDQ0ZGJiYTknCiAKICAgICBkZWYgdGVzdF9tZXRob2RfY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtODAsNyArODAsNyBAQAogY2xhc3MgVW5pY29kZUZ1bmN0aW9uc1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnYzIzZGZjMGI1ZWFmM2NhMmFhZDMyZDczM2RlOTZiYjE4MmNjZGE1MCcKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJzE3ZmUyZjEyYjc4OGU0ZmZmNTQ3OWI0NjljNDQwNGJiNmVjZjg0MWYnCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1x1MjE1YicsIE5vbmUpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1x1MjQ2OCcpLCA5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1xVMDAwMjAwMDAnLCBOb25lKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcVTAwMDFEN0ZEJyksIDcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRpZ2l0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGlnaXQsICd4eCcpCkBAIC0xMjAsNiArMTIxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1x1MjQ2OCcpLCA5LjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcdWE2MjcnKSwgNy4wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXFUwMDAyMDAwMCcsIE5vbmUpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXFUwMDAxMDEyQScpLCA5MDAwKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5udW1lcmljKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIubnVtZXJpYywgJ3h4JykKQEAgLTEzMSw2ICsxMzMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXHUyMTViJywgTm9uZSksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcdTI0NjgnLCBOb25lKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1xVMDAwMjAwMDAnLCBOb25lKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1xVMDAwMUQ3RkQnKSwgNykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGVjaW1hbCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRlY2ltYWwsICd4eCcpCkBAIC0xNDEsNiArMTQ0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdhJyksICdMbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnQScpLCAnTHUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ1xVMDAwMjAwMDAnKSwgJ0xvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdcVTAwMDEwMTJBJyksICdObycpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmNhdGVnb3J5KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuY2F0ZWdvcnksICd4eCcpCkBAIC0zMDgsMTQgKzMxMiw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcdSUuNHggc2hvdWxkIG5vdCBiZSBhIGxpbmVicmVhayIgJSBpKQogCi0gICAgZGVmIHRlc3RfVUNTNChzZWxmKToKLSAgICAgICAgIyB1bmljb2RlZGF0YSBzaG91bGQgd29yayB3aXRoIGNvZGUgcG9pbnRzIG91dHNpZGUgdGhlIEJNUAotICAgICAgICAjIGV2ZW4gb24gYSBuYXJyb3cgVW5pY29kZSBidWlsZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoIlxVMDAwMTAxMkEiKSwgIk5vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoIlxVMDAwMTAxMkEiKSwgOTAwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoIlxVMDAwMUQ3RkQiKSwgNykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCJcVTAwMDFEN0ZEIiksIDcpCi0KIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBVbmljb2RlTWlzY1Rlc3QsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CmluZGV4IDNmYzQ5OWUuLjUyZTc3NDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CkBAIC0yNzAsMTAgKzI3MCw5IEBACiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2xvY2FsZmlsZShzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciAjMTA4MzYKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CisgICAgICAgICMgMy4zIC0gVVJMRXJyb3IgaXMgbm90IGNhcHR1cmVkLCBleHBsaWNpdCBJT0Vycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHVybG9wZW4oJ2ZpbGU6Ly9sb2NhbGhvc3QvYS9maWxlL3doaWNoL2RvZXNub3QvZXhpc3RzLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLmZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5leGNlcHRpb24ucmVhc29uKQogCiAgICAgZGVmIHRlc3RfZmlsZV9ub3RleGlzdHMoc2VsZik6CiAgICAgICAgIGZkLCB0bXBfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQpAQCAtMjg2LDIxICsyODUsMjAgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICAgICAgb3MudW5saW5rKHRtcF9maWxlKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHRtcF9maWxlKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpOgorICAgICAgICAjIDMuMyAtIElPRXJyb3IgaW5zdGVhZCBvZiBVUkxFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgdXJsb3Blbih0bXBfZmlsZXVybCkKIAogICAgIGRlZiB0ZXN0X2Z0cF9ub2hvc3Qoc2VsZik6CiAgICAgICAgIHRlc3RfZnRwX3VybCA9ICdmdHA6Ly8vcGF0aCcKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CisgICAgICAgICMgMy4zIC0gSU9FcnJvciBpbnN0ZWFkIG9mIFVSTEVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CiAgICAgICAgICAgICB1cmxvcGVuKHRlc3RfZnRwX3VybCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogICAgIGRlZiB0ZXN0X2Z0cF9ub25leGlzdGluZyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CisgICAgICAgICMgMy4zIC0gSU9FcnJvciBpbnN0ZWFkIG9mIFVSTEVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CiAgICAgICAgICAgICB1cmxvcGVuKCdmdHA6Ly9sb2NhbGhvc3QvYS9maWxlL3doaWNoL2RvZXNub3QvZXhpc3RzLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogCiAgICAgZGVmIHRlc3RfdXNlcnBhc3NfaW51cmwoc2VsZik6CkBAIC0zMzMsNiArMzMxLDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnVuZmFrZWh0dHAoKQogCisgICAgZGVmIHRlc3RfVVJMb3BlbmVyX2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QuVVJMb3BlbmVyKCkKKwogY2xhc3MgdXJscmV0cmlldmVfRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHVybGxpYi51cmxyZXRyaWV2ZSgpIG9uIGxvY2FsIGZpbGVzIiIiCiAKQEAgLTM2Niw3ICszNjgsNyBAQAogICAgIGRlZiBjb25zdHJ1Y3RMb2NhbEZpbGVVcmwoc2VsZiwgZmlsZVBhdGgpOgogICAgICAgICBmaWxlUGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlUGF0aCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZVBhdGguZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgIGZpbGVQYXRoLmVuY29kZSgidXRmLTgiKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVQYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAgICAgICAgIHJldHVybiAiZmlsZTovLyVzIiAlIHVybGxpYi5yZXF1ZXN0LnBhdGhuYW1lMnVybChmaWxlUGF0aCkKQEAgLTQxOSwxMSArNDIxLDExIEBACiAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBvcnRob29rIHdvcmtzLgotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgY291bnRfaG9sZGVyPVswXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY291bnQsIGludCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShibG9ja19zaXplLCBpbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodG90YWxfc2l6ZSwgaW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgY291bnRfaG9sZGVyWzBdKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIGNvdW50X2hvbGRlcj1bMF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJsb2NrX2NvdW50LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYmxvY2tfcmVhZF9zaXplLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmlsZV9zaXplLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJsb2NrX2NvdW50LCBjb3VudF9ob2xkZXJbMF0pCiAgICAgICAgICAgICBjb3VudF9ob2xkZXJbMF0gPSBjb3VudF9ob2xkZXJbMF0gKyAxCiAgICAgICAgIHNlY29uZF90ZW1wID0gIiVzLjIiICUgc3VwcG9ydC5URVNURk4KICAgICAgICAgc2VsZi5yZWdpc3RlckZpbGVGb3JDbGVhblVwKHNlY29uZF90ZW1wKQpAQCAtNDM0LDggKzQzNiw4IEBACiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va18wX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gemVybyBsZW5ndGggZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDEgdGltZS4KICAgICAgICAgcmVwb3J0ID0gW10KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKLSAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSkpCisgICAgICAgIGRlZiBob29rdGVzdGVyKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgorICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSkpCiAgICAgICAgIHNyY0ZpbGVOYW1lID0gc2VsZi5jcmVhdGVOZXdUZW1wRmlsZSgpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQpAQCAtNDQ1LDMxICs0NDcsMzIgQEAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rXzVfYnl0ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBvbiA1IGJ5dGUgZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDIgdGltZXMgKG9uY2Ugd2hlbgogICAgICAgICAjIHRoZSAibmV0d29yayBjb25uZWN0aW9uIiBpcyBlc3RhYmxpc2hlZCBhbmQgb25jZSB3aGVuIHRoZSBibG9jayBpcwotICAgICAgICAjIHJlYWQpLiBTaW5jZSB0aGUgYmxvY2sgc2l6ZSBpcyA4MTkyIGJ5dGVzLCBvbmx5IG9uZSBibG9jayByZWFkIGlzCi0gICAgICAgICMgcmVxdWlyZWQgdG8gcmVhZCB0aGUgZW50aXJlIGZpbGUuCisgICAgICAgICMgcmVhZCkuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoYiJ4IiAqIDUpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXBvcnQpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMl0sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzFdWzJdLCA1KQogCiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va184MTkzX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gODE5MyBieXRlIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAzIHRpbWVzIChvbmNlCiAgICAgICAgICMgd2hlbiB0aGUgIm5ldHdvcmsgY29ubmVjdGlvbiIgaXMgZXN0YWJsaXNoZWQsIG9uY2UgZm9yIHRoZSBuZXh0IDgxOTIKICAgICAgICAgIyBieXRlcywgYW5kIG9uY2UgZm9yIHRoZSBsYXN0IGJ5dGUpLgogICAgICAgICByZXBvcnQgPSBbXQotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgotICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBfcmVwb3J0PXJlcG9ydCk6CisgICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplKSkKICAgICAgICAgc3JjRmlsZU5hbWUgPSBzZWxmLmNyZWF0ZU5ld1RlbXBGaWxlKGIieCIgKiA4MTkzKQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVwb3J0KSwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDgxOTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzJdLCA4MTkzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMV1bMV0sIDgxOTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzJdWzFdLCA4MTkyKQogCiAKIGNsYXNzIHVybHJldHJpZXZlX0h0dHBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSwgRmFrZUhUVFBNaXhpbik6CkBAIC0xMjgwLDYgKzEyODMsMjggQEAKICMgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cC5mdHAuc29jay5nZXR0aW1lb3V0KCksIDMwKQogIyAgICAgICAgIGZ0cC5jbG9zZSgpCiAKK2NsYXNzIFJlcXVlc3RUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgdXJsbGliLnJlcXVlc3QuUmVxdWVzdC4iIiIKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfdmFsdWVzKHNlbGYpOgorICAgICAgICBSZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdAorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0dFVCcpCisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ1BPU1QnKQorCisgICAgZGVmIHRlc3Rfd2l0aF9tZXRob2RfYXJnKHNlbGYpOgorICAgICAgICBSZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdAorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwgbWV0aG9kPSdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0Lm1ldGhvZCwgJ0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnSEVBRCcpCisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCB7fSwgbWV0aG9kPSdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0Lm1ldGhvZCwgJ0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnSEVBRCcpCisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCBtZXRob2Q9J0dFVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdHRVQnKQorICAgICAgICByZXF1ZXN0Lm1ldGhvZCA9ICdIRUFEJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnSEVBRCcpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpAQCAtMTI5Niw2ICsxMzIxLDcgQEAKICAgICAgICAgVXRpbGl0eV9UZXN0cywKICAgICAgICAgVVJMb3BlbmVyX1Rlc3RzLAogICAgICAgICAjRlRQV3JhcHBlclRlc3RzLAorICAgICAgICBSZXF1ZXN0VGVzdHMsCiAgICAgKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCA1ZWFiMzBhLi5jY2Q1NDE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBzeXMKIAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCkBAIC0xOCw2ICsxOSwyMiBAQAogIyBwYXJzZV9rZXF2X2xpc3QsIHBhcnNlX2h0dHBfbGlzdCwgSFRUUERpZ2VzdEF1dGhIYW5kbGVyCiAKIGNsYXNzIFRyaXZpYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9fX2FsbF9fKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSB3aGljaCBuYW1lcyBhcmUgZXhwb3NlZAorICAgICAgICBmb3IgbW9kdWxlIGluICdyZXF1ZXN0JywgJ3Jlc3BvbnNlJywgJ3BhcnNlJywgJ2Vycm9yJywgJ3JvYm90cGFyc2VyJzoKKyAgICAgICAgICAgIGNvbnRleHQgPSB7fQorICAgICAgICAgICAgZXhlYygnZnJvbSB1cmxsaWIuJXMgaW1wb3J0IConICUgbW9kdWxlLCBjb250ZXh0KQorICAgICAgICAgICAgZGVsIGNvbnRleHRbJ19fYnVpbHRpbnNfXyddCisgICAgICAgICAgICBpZiBtb2R1bGUgPT0gJ3JlcXVlc3QnIGFuZCBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAgICAgdSwgcCA9IGNvbnRleHQucG9wKCd1cmwycGF0aG5hbWUnKSwgY29udGV4dC5wb3AoJ3BhdGhuYW1lMnVybCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1Ll9fbW9kdWxlX18sICdudHVybDJwYXRoJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuX19tb2R1bGVfXywgJ250dXJsMnBhdGgnKQorICAgICAgICAgICAgZm9yIGssIHYgaW4gY29udGV4dC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5fX21vZHVsZV9fLCAndXJsbGliLiVzJyAlIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgIiVyIGlzIGV4cG9zZWQgaW4gJ3VybGxpYi4lcycgYnV0IGRlZmluZWQgaW4gJXIiICUKKyAgICAgICAgICAgICAgICAgICAgKGssIG1vZHVsZSwgdi5fX21vZHVsZV9fKSkKKwogICAgIGRlZiB0ZXN0X3RyaXZpYWwoc2VsZik6CiAgICAgICAgICMgQSBjb3VwbGUgdHJpdmlhbCB0ZXN0cwogCkBAIC01MzYsMTAgKzU1Myw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvciwgby5vcGVuLCByZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoby5jYWxscywgWyhoYW5kbGVyc1swXSwgImh0dHBfb3BlbiIsIChyZXEsKSwge30pXSkKIAotIyMgICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgotIyMgICAgICAgICAjIFhYWCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgc2VlbSB0byBiZSB1c2VkIGluIHN0YW5kYXJkIGxpYnJhcnksCi0jIyAgICAgICAgICMgIGJ1dCBzaG91bGQgcmVhbGx5IGJlIHRlc3RlZCBhbnl3YXkuLi4KLQogICAgIGRlZiB0ZXN0X2h0dHBfZXJyb3Ioc2VsZik6CiAgICAgICAgICMgWFhYIGh0dHBfZXJyb3JfZGVmYXVsdAogICAgICAgICAjIGh0dHAgZXJyb3JzIGFyZSBhIHNwZWNpYWwgY2FzZQpAQCAtNTY3LDYgKzU4MCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChoYW5kbGVyLCBtZXRob2RfbmFtZSksIGdvdFs6Ml0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIGdvdFsyXSkKIAorCiAgICAgZGVmIHRlc3RfcHJvY2Vzc29ycyhzZWxmKToKICAgICAgICAgIyAqX3JlcXVlc3QgLyAqX3Jlc3BvbnNlIG1ldGhvZHMgZ2V0IGNhbGxlZCBhcHByb3ByaWF0ZWx5CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCkBAIC02MDIsMTAgKzYxNiwzMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIE5vbmUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShhcmdzWzFdLCBNb2NrUmVzcG9uc2UpKQogCisgICAgZGVmIHRlc3RfbWV0aG9kX2RlcHJlY2F0aW9ucyhzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuYWRkX2RhdGEoImRhdGEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfZGF0YSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmhhc19kYXRhKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X2hvc3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfc2VsZWN0b3IoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5pc191bnZlcmlmaWFibGUoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfb3JpZ2luX3JlcV9ob3N0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X3R5cGUoKQorCiAKIGRlZiBzYW5lcGF0aG5hbWUydXJsKHBhdGgpOgogICAgIHRyeToKLSAgICAgICAgcGF0aC5lbmNvZGUoInV0ZjgiKQorICAgICAgICBwYXRoLmVuY29kZSgidXRmLTgiKQogICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJwYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAgICAgdXJscGF0aCA9IHVybGxpYi5yZXF1ZXN0LnBhdGhuYW1lMnVybChwYXRoKQpAQCAtOTU3LDggKzk5MSw4IEBACiAgICAgICAgIG5ld3JlcSA9IGguaHR0cF9yZXF1ZXN0KHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5hY2hfcmVxLCByZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouYWNoX3JlcSwgbmV3cmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfb3JpZ2luX3JlcV9ob3N0KCksICJleGFtcGxlLmNvbSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLmlzX3VudmVyaWZpYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5vcmlnaW5fcmVxX2hvc3QsICJleGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLnVudmVyaWZpYWJsZSkKICAgICAgICAgbmV3ciA9IGguaHR0cF9yZXNwb25zZShyZXEsIHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouZWNfcmVxLCByZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouZWNfciwgcikKQEAgLTk5MCw3ICsxMDI0LDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoby5yZXEuZ2V0X21ldGhvZCgpLCAiR0VUIikKICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoby5yZXEuaGFzX2RhdGEoKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvLnJlcS5kYXRhKQogCiAgICAgICAgICAgICAgICAgIyBub3cgaXQncyBhIEdFVCwgdGhlcmUgc2hvdWxkIG5vdCBiZSBoZWFkZXJzIHJlZ2FyZGluZyBjb250ZW50CiAgICAgICAgICAgICAgICAgIyAocG9zc2libHkgZHJhZ2dlZCBmcm9tIGJlZm9yZSBiZWluZyBhIFBPU1QpCkBAIC0xMTA2LDkgKzExNDAsOSBAQAogICAgICAgICBoYW5kbGVycyA9IGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMobywgbWV0aF9zcGVjKQogCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJhY21lLmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgImFjbWUuZXhhbXBsZS5jb20iKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGhhbmRsZXJzWzBdLCAiaHR0cF9vcGVuIildLAogICAgICAgICAgICAgICAgICAgICAgICAgIFt0dXBbMDoyXSBmb3IgdHVwIGluIG8uY2FsbHNdKQpAQCAtMTExOSwxMyArMTE1MywxMyBAQAogICAgICAgICBwaCA9IHVybGxpYi5yZXF1ZXN0LlByb3h5SGFuZGxlcihkaWN0KGh0dHA9InByb3h5LmV4YW1wbGUuY29tIikpCiAgICAgICAgIG8uYWRkX2hhbmRsZXIocGgpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucGVybC5vcmcvIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5wZXJsLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucGVybC5vcmciKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tIikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydub19wcm94eSddCiAKICAgICBkZWYgdGVzdF9wcm94eV9ub19wcm94eV9hbGwoc2VsZik6CkBAIC0xMTM0LDkgKzExNjgsOSBAQAogICAgICAgICBwaCA9IHVybGxpYi5yZXF1ZXN0LlByb3h5SGFuZGxlcihkaWN0KGh0dHA9InByb3h5LmV4YW1wbGUuY29tIikpCiAgICAgICAgIG8uYWRkX2hhbmRsZXIocGgpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICBkZWwgb3MuZW52aXJvblsnbm9fcHJveHknXQogCiAKQEAgLTExNTAsOSArMTE4NCw5IEBACiAgICAgICAgIGhhbmRsZXJzID0gYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycyhvLCBtZXRoX3NwZWMpCiAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cuZXhhbXBsZS5jb20iKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhoYW5kbGVyc1swXSwgImh0dHBzX29wZW4iKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1cFswOjJdIGZvciB0dXAgaW4gby5jYWxsc10pCiAKQEAgLTExNjUsNyArMTE5OSw3IEBACiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpCiAgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJQcm94eS1BdXRob3JpemF0aW9uIiwiRm9vQmFyIikKICAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlVzZXItQWdlbnQiLCJHcmFpbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LmV4YW1wbGUuY29tIikKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVxLl90dW5uZWxfaG9zdCkKICAgICAgICAgciA9IG8ub3BlbihyZXEpCiAgICAgICAgICMgVmVyaWZ5IFByb3h5LUF1dGhvcml6YXRpb24gZ2V0cyB0dW5uZWxlZCB0byByZXF1ZXN0LgpAQCAtMTE3Niw5ICsxMjEwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCJVc2VyLUFnZW50IiwiR3JhaWwiKSwKICAgICAgICAgICAgICAgICAgICAgICBodHRwc19oYW5kbGVyLmh0dHBjb25uLnJlcV9oZWFkZXJzKQogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZXEuX3R1bm5lbF9ob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiUHJveHktYXV0aG9yaXphdGlvbiIpLCJGb29CYXIiKQogCisgICAgIyBUT0RPOiBUaGlzIHNob3VsZCBiZSBvbmx5IGZvciBPU1gKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICJvbmx5IHJlbGV2YW50IGZvciBPU1giKQogICAgIGRlZiB0ZXN0X29zeF9wcm94eV9ieXBhc3Moc2VsZik6CiAgICAgICAgIGJ5cGFzcyA9IHsKICAgICAgICAgICAgICdleGNsdWRlX3NpbXBsZSc6IEZhbHNlLApAQCAtMTI5OCw2ICsxMzM0LDI2IEBACiAgICAgICAgICMgX3Rlc3RfYmFzaWNfYXV0aCBjYWxsZWQgLm9wZW4oKSB0d2ljZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuZXIucmVjb3JkZWQsIFsiZGlnZXN0IiwgImJhc2ljIl0qMikKIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2F1dGhfZGlnZXN0X2hhbmRsZXIoc2VsZik6CisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgIyBXaGlsZSB1c2luZyBEaWdlc3RBdXRoSGFuZGxlcgorICAgICAgICBkaWdlc3RfYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUERpZ2VzdEF1dGhIYW5kbGVyKE5vbmUpCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKyAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEtlcmJlcm9zXHJcblxyXG4nKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoZGlnZXN0X2F1dGhfaGFuZGxlcikKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisKKyAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9hdXRoX2Jhc2ljX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgV2hpbGUgdXNpbmcgQmFzaWNBdXRoSGFuZGxlcgorICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgIGJhc2ljX2F1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY0F1dGhIYW5kbGVyKE5vbmUpCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKyAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IE5UTE1cclxuXHJcbicpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihiYXNpY19hdXRoX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorCiAgICAgZGVmIF90ZXN0X2Jhc2ljX2F1dGgoc2VsZiwgb3BlbmVyLCBhdXRoX2hhbmRsZXIsIGF1dGhfaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF91cmwsIHByb3RlY3RlZF91cmwpOgpAQCAtMTMzNSw2ICsxMzkxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaHR0cF9oYW5kbGVyLnJlcXVlc3RzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodHRwX2hhbmRsZXIucmVxdWVzdHNbMF0uaGFzX2hlYWRlcihhdXRoX2hlYWRlcikpCiAKKwogY2xhc3MgTWlzY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2J1aWxkX29wZW5lcihzZWxmKToKQEAgLTEzOTAsMTEgKzE0NDcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiUE9TVCIsIHNlbGYucG9zdC5nZXRfbWV0aG9kKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkdFVCIsIHNlbGYuZ2V0LmdldF9tZXRob2QoKSkKIAotICAgIGRlZiB0ZXN0X2FkZF9kYXRhKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZ2V0Lmhhc19kYXRhKCkpCisgICAgZGVmIHRlc3RfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmdldC5kYXRhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJHRVQiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCi0gICAgICAgIHNlbGYuZ2V0LmFkZF9kYXRhKCJzcGFtIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0Lmhhc19kYXRhKCkpCisgICAgICAgIHNlbGYuZ2V0LmRhdGEgPSAic3BhbSIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0LmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlBPU1QiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCiAKICAgICBkZWYgdGVzdF9nZXRfZnVsbF91cmwoc2VsZik6CkBAIC0xNDAyLDM2ICsxNDU5LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXQuZ2V0X2Z1bGxfdXJsKCkpCiAKICAgICBkZWYgdGVzdF9zZWxlY3RvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiL35qZXJlbXkvIiwgc2VsZi5nZXQuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi9+amVyZW15LyIsIHNlbGYuZ2V0LnNlbGVjdG9yKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5zZWxlY3RvcikKIAogICAgIGRlZiB0ZXN0X2dldF90eXBlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodHRwIiwgc2VsZi5nZXQuZ2V0X3R5cGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHR0cCIsIHNlbGYuZ2V0LnR5cGUpCiAKICAgICBkZWYgdGVzdF9nZXRfaG9zdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0Lmhvc3QpCiAKICAgICBkZWYgdGVzdF9nZXRfaG9zdF91bnF1b3RlKHNlbGYpOgogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LiU3MHl0aG9uLm9yZy8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5ob3N0KQogCiAgICAgZGVmIHRlc3RfcHJveHkoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5nZXQuaGFzX3Byb3h5KCkpCiAgICAgICAgIHNlbGYuZ2V0LnNldF9wcm94eSgid3d3LnBlcmwub3JnIiwgImh0dHAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5nZXQuaGFzX3Byb3h5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQuZ2V0X29yaWdpbl9yZXFfaG9zdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucGVybC5vcmciLCBzZWxmLmdldC5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0Lm9yaWdpbl9yZXFfaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnBlcmwub3JnIiwgc2VsZi5nZXQuaG9zdCkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdXJsKHNlbGYpOgogICAgICAgICByZXEgPSBSZXF1ZXN0KCI8VVJMOmh0dHA6Ly93d3cucHl0aG9uLm9yZz4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5ob3N0KQogCiAgICAgZGVmIHRlc3RfdXJsX2ZyYWdtZW50KHNlbGYpOgogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvP3FzPXF1ZXJ5I2ZyYWdtZW50PXRydWUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvP3FzPXF1ZXJ5IiwgcmVxLmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvP3FzPXF1ZXJ5IiwgcmVxLnNlbGVjdG9yKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvI2Z1bj10cnVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5zZWxlY3RvcikKIAogICAgICAgICAjIElzc3VlIDExNzAzOiBnZXR1cmwoKSBvbWl0cyBmcmFnbWVudCBpbiB0aGUgb3JpZ2luYWwgVVJMLgogICAgICAgICB1cmwgPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3VybGxpYjIuaHRtbCNPSycKQEAgLTE0NDMsNyArMTUwMCw5IEBACiAgICAgICAgIElzc3VlIDEzMjExIHJldmVhbHMgdGhhdCBIVFRQRXJyb3IgZGlkbid0IGltcGxlbWVudCB0aGUgVVJMRXJyb3IKICAgICAgICAgaW50ZXJmYWNlIGV2ZW4gdGhvdWdoIEhUVFBFcnJvciBpcyBhIHN1YmNsYXNzIG9mIFVSTEVycm9yLgogCi0gICAgICAgID4+PiBlcnIgPSB1cmxsaWIuZXJyb3IuSFRUUEVycm9yKG1zZz0nc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcsIHVybD1Ob25lLCBjb2RlPU5vbmUsIGhkcnM9Tm9uZSwgZnA9Tm9uZSkKKyAgICAgICAgPj4+IG1zZyA9ICdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJworICAgICAgICA+Pj4gdXJsID0gY29kZSA9IGhkcnMgPSBmcCA9IE5vbmUKKyAgICAgICAgPj4+IGVyciA9IHVybGxpYi5lcnJvci5IVFRQRXJyb3IodXJsLCBjb2RlLCBtc2csIGhkcnMsIGZwKQogICAgICAgICA+Pj4gYXNzZXJ0IGhhc2F0dHIoZXJyLCAncmVhc29uJykKICAgICAgICAgPj4+IGVyci5yZWFzb24KICAgICAgICAgJ3NvbWV0aGluZyBiYWQgaGFwcGVuZWQnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKaW5kZXggZjA3NDcxZC4uMWViYTE0YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQpAQCAtNDc2LDYgKzQ3NiwxMyBAQAogICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9odHRwc193aXRoX2NhZGVmYXVsdChzZWxmKToKKyAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAjIFNlbGYtc2lnbmVkIGNlcnQgc2hvdWxkIGZhaWwgdmVyaWZpY2F0aW9uIHdpdGggc3lzdGVtIGNlcnRpZmljYXRlIHN0b3JlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCisKICAgICBkZWYgdGVzdF9zZW5kaW5nX2hlYWRlcnMoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCiAgICAgICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIGhhbmRsZXIucG9ydCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQppbmRleCBlMmIxZDk1Li43ZjNjOTNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CkBAIC04MywxMiArODMsMTMgQEAKICAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKICAgICAgICAgIyBjYWxsaW5nIC5jbG9zZSgpIG9uIHVybGxpYjIncyByZXNwb25zZSBvYmplY3RzIHNob3VsZCBjbG9zZSB0aGUKICAgICAgICAgIyB1bmRlcmx5aW5nIHNvY2tldAotCi0gICAgICAgIHJlc3BvbnNlID0gX3VybG9wZW5fd2l0aF9yZXRyeSgiaHR0cDovL3d3dy5weXRob24ub3JnLyIpCi0gICAgICAgIHNvY2sgPSByZXNwb25zZS5mcAotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNvY2suY2xvc2VkKQotICAgICAgICByZXNwb25zZS5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrLmNsb3NlZCkKKyAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8iCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQodXJsKToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gX3VybG9wZW5fd2l0aF9yZXRyeSh1cmwpCisgICAgICAgICAgICBzb2NrID0gcmVzcG9uc2UuZnAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc29jay5jbG9zZWQpCisgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc29jay5jbG9zZWQpCiAKIGNsYXNzIE90aGVyTmV0d29ya1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CmluZGV4IDM4M2IyYWYuLmQzZmU2OWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CkBAIC0xMzcsMTAgKzEzNywxMCBAQAogICAgICIiIlRlc3RzIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlIHVzaW5nIHRoZSBuZXR3b3JrLiIiIgogCiAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgdXJscmV0cmlldmUoc2VsZiwgKmFyZ3MpOgorICAgIGRlZiB1cmxyZXRyaWV2ZShzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXNvdXJjZSA9IGFyZ3NbMF0KICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChyZXNvdXJjZSk6Ci0gICAgICAgICAgICBmaWxlX2xvY2F0aW9uLCBpbmZvID0gdXJsbGliLnJlcXVlc3QudXJscmV0cmlldmUoKmFyZ3MpCisgICAgICAgICAgICBmaWxlX2xvY2F0aW9uLCBpbmZvID0gdXJsbGliLnJlcXVlc3QudXJscmV0cmlldmUoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHlpZWxkIGZpbGVfbG9jYXRpb24sIGluZm8KICAgICAgICAgICAgIGZpbmFsbHk6CkBAIC0xNzAsOSArMTcwLDEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mbywgZW1haWwubWVzc2FnZS5NZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZvIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UiKQogCisgICAgbG9nbyA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvY29tbXVuaXR5L2xvZ29zL3B5dGhvbi1sb2dvLW1hc3Rlci12My1UTS5wbmciCisKICAgICBkZWYgdGVzdF9kYXRhX2hlYWRlcihzZWxmKToKLSAgICAgICAgbG9nbyA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvY29tbXVuaXR5L2xvZ29zL3B5dGhvbi1sb2dvLW1hc3Rlci12My1UTS5wbmciCi0gICAgICAgIHdpdGggc2VsZi51cmxyZXRyaWV2ZShsb2dvKSBhcyAoZmlsZV9sb2NhdGlvbiwgZmlsZWhlYWRlcnMpOgorICAgICAgICB3aXRoIHNlbGYudXJscmV0cmlldmUoc2VsZi5sb2dvKSBhcyAoZmlsZV9sb2NhdGlvbiwgZmlsZWhlYWRlcnMpOgogICAgICAgICAgICAgZGF0ZXZhbHVlID0gZmlsZWhlYWRlcnMuZ2V0KCdEYXRlJykKICAgICAgICAgICAgIGRhdGVmb3JtYXQgPSAnJWEsICVkICViICVZICVIOiVNOiVTIEdNVCcKICAgICAgICAgICAgIHRyeToKQEAgLTE4MCw2ICsxODEsMzEgQEAKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRGF0ZSB2YWx1ZSBub3QgaW4gJXIgZm9ybWF0JywgZGF0ZWZvcm1hdCkKIAorICAgIGRlZiB0ZXN0X3JlcG9ydGhvb2soc2VsZik6CisgICAgICAgIHJlY29yZHMgPSBbXQorICAgICAgICBkZWYgcmVjb3JkaW5nX3JlcG9ydGhvb2soYmxvY2tzLCBibG9ja19zaXplLCB0b3RhbF9zaXplKToKKyAgICAgICAgICAgIHJlY29yZHMuYXBwZW5kKChibG9ja3MsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorCisgICAgICAgIHdpdGggc2VsZi51cmxyZXRyaWV2ZShzZWxmLmxvZ28sIHJlcG9ydGhvb2s9cmVjb3JkaW5nX3JlcG9ydGhvb2spIGFzICgKKyAgICAgICAgICAgICAgICBmaWxlX2xvY2F0aW9uLCBmaWxlaGVhZGVycyk6CisgICAgICAgICAgICBleHBlY3RlZF9zaXplID0gaW50KGZpbGVoZWFkZXJzWydDb250ZW50LUxlbmd0aCddKQorCisgICAgICAgIHJlY29yZHNfcmVwciA9IHJlcHIocmVjb3JkcykgICMgRm9yIHVzZSBpbiBlcnJvciBtZXNzYWdlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZWNvcmRzKSwgMSwgbXNnPSJUaGVyZSBzaG91bGQgYWx3YXlzIGJlIHR3byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbHM7IHRoZSBmaXJzdCBvbmUgYmVmb3JlIHRoZSB0cmFuc2ZlciBzdGFydHMuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmRzWzBdWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocmVjb3Jkc1swXVsxXSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iYmxvY2sgc2l6ZSBjYW4ndCBiZSAwIGluICVzIiAlIHJlY29yZHNfcmVwcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmRzWzBdWzJdLCBleHBlY3RlZF9zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZHNbLTFdWzJdLCBleHBlY3RlZF9zaXplKQorCisgICAgICAgIGJsb2NrX3NpemVzID0ge2Jsb2NrX3NpemUgZm9yIF8sIGJsb2NrX3NpemUsIF8gaW4gcmVjb3Jkc30KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7cmVjb3Jkc1swXVsxXX0sIGJsb2NrX3NpemVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iYmxvY2sgc2l6ZXMgaW4gJXMgbXVzdCBiZSBlcXVhbCIgJSByZWNvcmRzX3JlcHIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJlY29yZHNbLTFdWzBdKnJlY29yZHNbMF1bMV0sIGV4cGVjdGVkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0ibnVtYmVyIG9mIGJsb2NrcyAqIGJsb2NrIHNpemUgbXVzdCBiZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiA+PSB0b3RhbCBzaXplIGluICVzIiAlIHJlY29yZHNfcmVwcikKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQppbmRleCA4NjhlZDI0Li42MzgxMDcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKQEAgLTUyLDYgKzUyLDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihrZXkpICsgJyEhIScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoVCgoMSwyKSkpKSwgIjAhISEiKQogCisgICAgZGVmIHRlc3RfdXNlcmxpc3RfY29weShzZWxmKToKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFs2LCA4LCAxLCA5LCAxXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHUpLCB0eXBlKHYpKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVXNlckxpc3RUZXN0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKaW5kZXggN2E4YjkzMi4uNzFmY2FjMiAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQpAQCAtMyw2ICszLDcgQEAKICMgVXNlclN0cmluZyBpbnN0YW5jZXMgc2hvdWxkIGJlaGF2ZSBzaW1pbGFyIHRvIGJ1aWx0aW4gc3RyaW5nIG9iamVjdHMuCiAKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzdHJpbmdfdGVzdHMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZwpAQCAtMTAsNiArMTEsNyBAQAogY2xhc3MgVXNlclN0cmluZ1Rlc3QoCiAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QsCiAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LAorICAgIHVuaXR0ZXN0LlRlc3RDYXNlCiAgICAgKToKIAogICAgIHR5cGUydGVzdCA9IFVzZXJTdHJpbmcKQEAgLTE3LDExICsxOSwxMSBAQAogICAgICMgT3ZlcndyaXRlIHRoZSB0aHJlZSB0ZXN0aW5nIG1ldGhvZHMsIGJlY2F1c2UgVXNlclN0cmluZwogICAgICMgY2FuJ3QgY29wZSB3aXRoIGFyZ3VtZW50cyBwcm9wYWdhdGVkIHRvIFVzZXJTdHJpbmcKICAgICAjIChhbmQgd2UgZG9uJ3QgdGVzdCB3aXRoIHN1YmNsYXNzZXMpCi0gICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmplY3QsIG1ldGhvZG5hbWUsICphcmdzKToKKyAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iamVjdCwgbWV0aG9kbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5maXh0eXBlKHJlc3VsdCkKICAgICAgICAgb2JqZWN0ID0gc2VsZi5maXh0eXBlKG9iamVjdCkKICAgICAgICAgIyB3ZSBkb24ndCBmaXggdGhlIGFyZ3VtZW50cywgYmVjYXVzZSBVc2VyU3RyaW5nIGNhbid0IGNvcGUgd2l0aCBpdAotICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmplY3QsIG1ldGhvZG5hbWUpKCphcmdzKQorICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmplY3QsIG1ldGhvZG5hbWUpKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHJlc3VsdCwKICAgICAgICAgICAgIHJlYWxyZXN1bHQKQEAgLTQyLDggKzQ0LDUgQEAKICAgICAgICAgZ2V0YXR0cihvYmplY3QsIG1ldGhvZG5hbWUpKCphcmdzKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVc2VyU3RyaW5nVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5IGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CmluZGV4IDQzZmE2NTYuLjdiYzU5ZWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKQEAgLTQ3MSwxNCArNDcxLDE0IEBACiAgICAgICAgIGlmIHBpZCA9PSAwOgogICAgICAgICAgICAgb3MuY2xvc2UoZmRzWzBdKQogICAgICAgICAgICAgdmFsdWUgPSB1dWlkLnV1aWQ0KCkKLSAgICAgICAgICAgIG9zLndyaXRlKGZkc1sxXSwgdmFsdWUuaGV4LmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgICAgICBvcy53cml0ZShmZHNbMV0sIHZhbHVlLmhleC5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgICAgIG9zLl9leGl0KDApCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLmNsb3NlKGZkc1sxXSkKICAgICAgICAgICAgIHBhcmVudF92YWx1ZSA9IHV1aWQudXVpZDQoKS5oZXgKICAgICAgICAgICAgIG9zLndhaXRwaWQocGlkLCAwKQotICAgICAgICAgICAgY2hpbGRfdmFsdWUgPSBvcy5yZWFkKGZkc1swXSwgMTAwKS5kZWNvZGUoJ2xhdGluMScpCisgICAgICAgICAgICBjaGlsZF92YWx1ZSA9IG9zLnJlYWQoZmRzWzBdLCAxMDApLmRlY29kZSgnbGF0aW4tMScpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGFyZW50X3ZhbHVlLCBjaGlsZF92YWx1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5IGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTY4NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKQEAgLTAsMCArMSwyMDMgQEAKKyIiIgorVGVzdCBoYXJuZXNzIGZvciB0aGUgdmVudiBtb2R1bGUuCisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpbmF5IFNhamlwLgorTGljZW5zZWQgdG8gdGhlIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rKQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdmVudgorCitjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdmVudiB0ZXN0cy4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5lbnZfZGlyID0gb3MucGF0aC5yZWFscGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ1NjcmlwdHMnCisgICAgICAgICAgICBzZWxmLnB5ZG9jbmFtZSA9ICdweWRvYy5weScKKyAgICAgICAgICAgIHNlbGYubGliID0gKCdMaWInLCkKKyAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdJbmNsdWRlJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnYmluJworICAgICAgICAgICAgc2VsZi5weWRvY25hbWUgPSAncHlkb2MnCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnbGliJywgJ3B5dGhvbiVzJyAlIHN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdpbmNsdWRlJworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgICAgIHNlbGYuZXhlID0gb3MucGF0aC5zcGxpdChleGVjdXRhYmxlKVstMV0KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisKKyAgICBkZWYgcnVuX3dpdGhfY2FwdHVyZShzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyb3I6CisgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBvdXRwdXQuZ2V0dmFsdWUoKSwgZXJyb3IuZ2V0dmFsdWUoKQorCisgICAgZGVmIGdldF9lbnZfZmlsZShzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5lbnZfZGlyLCAqYXJncykKKworICAgIGRlZiBnZXRfdGV4dF9maWxlX2NvbnRlbnRzKHNlbGYsICphcmdzKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZ2V0X2Vudl9maWxlKCphcmdzKSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCitjbGFzcyBCYXNpY1Rlc3QoQmFzZVRlc3QpOgorICAgICIiIlRlc3QgdmVudiBtb2R1bGUgZnVuY3Rpb25hbGl0eS4iIiIKKworICAgIGRlZiBpc2RpcihzZWxmLCAqYXJncyk6CisgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoKmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGZuKSkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGUgY3JlYXRlIGZ1bmN0aW9uIHdpdGggZGVmYXVsdCBhcmd1bWVudHMuCisgICAgICAgICIiIgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5iaW5kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5pbmNsdWRlKQorICAgICAgICBzZWxmLmlzZGlyKCpzZWxmLmxpYikKKyAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RleHRfZmlsZV9jb250ZW50cygncHl2ZW52LmNmZycpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKCdfX1BZVkVOVl9MQVVOQ0hFUl9fJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcy5lbnZpcm9uKToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSAgb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdob21lID0gJXMnICUgcGF0aCwgZGF0YSkKKyAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RleHRfZmlsZV9jb250ZW50cyhzZWxmLmJpbmRpciwgc2VsZi5weWRvY25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkYXRhLnN0YXJ0c3dpdGgoJyMhJXMlcycgJSAoc2VsZi5lbnZfZGlyLCBvcy5zZXApKSkKKyAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmbik6ICAjIGRpYWdub3N0aWNzIGZvciBXaW5kb3dzIGJ1aWxkYm90IGZhaWx1cmVzCisgICAgICAgICAgICBiZCA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyKQorICAgICAgICAgICAgcHJpbnQoJ0NvbnRlbnRzIG9mICVyOicgJSBiZCkKKyAgICAgICAgICAgIHByaW50KCcgICAgJXInICUgb3MubGlzdGRpcihiZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbiksICdGaWxlICVyIHNob3VsZCBleGlzdC4nICUgZm4pCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LCAnVGVzdCBub3QgYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIGEgdmVudicpCisgICAgZGVmIHRlc3RfcHJlZml4ZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHByZWZpeCB2YWx1ZXMgYXJlIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgI2NoZWNrIG91ciBwcmVmaXhlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5iYXNlX3ByZWZpeCwgc3lzLnByZWZpeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3lzLmV4ZWNfcHJlZml4KQorCisgICAgICAgICMgY2hlY2sgYSB2ZW52J3MgcHJlZml4ZXMKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBlbnZweSA9IG9zLnBhdGguam9pbihzZWxmLmVudl9kaXIsIHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgY21kID0gW2VudnB5LCAnLWMnLCBOb25lXQorICAgICAgICBmb3IgcHJlZml4LCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ3ByZWZpeCcsIHNlbGYuZW52X2RpciksCisgICAgICAgICAgICAoJ3ByZWZpeCcsIHNlbGYuZW52X2RpciksCisgICAgICAgICAgICAoJ2Jhc2VfcHJlZml4Jywgc3lzLnByZWZpeCksCisgICAgICAgICAgICAoJ2Jhc2VfZXhlY19wcmVmaXgnLCBzeXMuZXhlY19wcmVmaXgpKToKKyAgICAgICAgICAgIGNtZFsyXSA9ICdpbXBvcnQgc3lzOyBwcmludChzeXMuJXMpJyAlIHByZWZpeAorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBleHBlY3RlZC5lbmNvZGUoKSkKKworICAgIGRlZiB0ZXN0X292ZXJ3cml0ZV9leGlzdGluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY29udHJvbCBvZiBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBlbnZpcm9ubWVudCBkaXJlY3RvcnkuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUpCisgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKworICAgIGRlZiB0ZXN0X3VwZ3JhZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHVwZ3JhZGluZyBhbiBleGlzdGluZyBlbnZpcm9ubWVudCBkaXJlY3RvcnkuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKHVwZ3JhZGU9VHJ1ZSkKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKGJ1aWxkZXIuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5iaW5kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5pbmNsdWRlKQorICAgICAgICBzZWxmLmlzZGlyKCpzZWxmLmxpYikKKyAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmbik6ICAjIGRpYWdub3N0aWNzIGZvciBXaW5kb3dzIGJ1aWxkYm90IGZhaWx1cmVzCisgICAgICAgICAgICBiZCA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyKQorICAgICAgICAgICAgcHJpbnQoJ0NvbnRlbnRzIG9mICVyOicgJSBiZCkKKyAgICAgICAgICAgIHByaW50KCcgICAgJXInICUgb3MubGlzdGRpcihiZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbiksICdGaWxlICVyIHNob3VsZCBleGlzdC4nICUgZm4pCisKKyAgICBkZWYgdGVzdF9pc29sYXRpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGlzb2xhdGlvbiBmcm9tIHN5c3RlbSBzaXRlLXBhY2thZ2VzCisgICAgICAgICIiIgorICAgICAgICBmb3Igc3NwLCBzIGluICgoVHJ1ZSwgJ3RydWUnKSwgKEZhbHNlLCAnZmFsc2UnKSk6CisgICAgICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPXNzcCkKKyAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLmdldF90ZXh0X2ZpbGVfY29udGVudHMoJ3B5dmVudi5jZmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyA9ICVzXG4nICUgcywgZGF0YSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9zeW1saW5rKCksICdOZWVkcyBzeW1saW5rcycpCisgICAgZGVmIHRlc3Rfc3ltbGlua2luZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc3ltbGlua2luZyB3b3JrcyBhcyBleHBlY3RlZAorICAgICAgICAiIiIKKyAgICAgICAgZm9yIHVzbCBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlLCBzeW1saW5rcz11c2wpCisgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisgICAgICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgICAgICMgRG9uJ3QgdGVzdCB3aGVuIEZhbHNlLCBiZWNhdXNlIGUuZy4gJ3B5dGhvbicgaXMgYWx3YXlzCisgICAgICAgICAgICAjIHN5bWxpbmtlZCB0byAncHl0aG9uMy4zJyBpbiB0aGUgZW52LCBldmVuIHdoZW4gc3ltbGlua2luZyBpbgorICAgICAgICAgICAgIyBnZW5lcmFsIGlzbid0IHdhbnRlZC4KKyAgICAgICAgICAgIGlmIHVzbDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZm4pKQorCisgICAgIyBJZiBhIHZlbnYgaXMgY3JlYXRlZCBmcm9tIGEgc291cmNlIGJ1aWxkIGFuZCB0aGF0IHZlbnYgaXMgdXNlZCB0bworICAgICMgcnVuIHRoZSB0ZXN0LCB0aGUgcHl2ZW52LmNmZyBpbiB0aGUgdmVudiBjcmVhdGVkIGluIHRoZSB0ZXN0IHdpbGwKKyAgICAjIHBvaW50IHRvIHRoZSB2ZW52IGJlaW5nIHVzZWQgdG8gcnVuIHRoZSB0ZXN0LCBhbmQgd2UgbG9zZSB0aGUgbGluaworICAgICMgdG8gdGhlIHNvdXJjZSBidWlsZCAtIHNvIFB5dGhvbiBjYW4ndCBpbml0aWFsaXNlIHByb3Blcmx5LgorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsICdUZXN0IG5vdCBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gYSB2ZW52JykKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBzeXMuZXhlY3V0YWJsZSB2YWx1ZSBpcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgZW52cHkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWFscGF0aChzZWxmLmVudl9kaXIpLCBzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGNtZCA9IFtlbnZweSwgJy1jJywgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy5leGVjdXRhYmxlKSddCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZW52cHkuZW5jb2RlKCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fc3ltbGluaygpLCAnTmVlZHMgc3ltbGlua3MnKQorICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfc3ltbGlua3Moc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHN5cy5leGVjdXRhYmxlIHZhbHVlIGlzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorICAgICAgICBlbnZweSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlYWxwYXRoKHNlbGYuZW52X2RpciksIHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgY21kID0gW2VudnB5LCAnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLmV4ZWN1dGFibGUpJ10KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBlbnZweS5lbmNvZGUoKSkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChCYXNpY1Rlc3QpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CmluZGV4IDc4NmU2MGIuLmJkMDZjOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YWl0My5weQpAQCAtMTksMTMgKzE5LDE2IEBACiAKIGNsYXNzIFdhaXQzVGVzdChGb3JrV2FpdCk6CiAgICAgZGVmIHdhaXRfaW1wbChzZWxmLCBjcGlkKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAjIFRoaXMgbWFueSBpdGVyYXRpb25zIGNhbiBiZSByZXF1aXJlZCwgc2luY2Ugc29tZSBwcmV2aW91c2x5IHJ1bgorICAgICAgICAjIHRlc3RzIChlLmcuIHRlc3RfY3R5cGVzKSBjb3VsZCBoYXZlIHNwYXduZWQgYSBsb3Qgb2YgY2hpbGRyZW4KKyAgICAgICAgIyB2ZXJ5IHF1aWNrbHkuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMwKToKICAgICAgICAgICAgICMgd2FpdDMoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzLCBydXNhZ2UgPSBvcy53YWl0Myhvcy5XTk9IQU5HKQogICAgICAgICAgICAgaWYgc3BpZCA9PSBjcGlkOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BpZCwgY3BpZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKaW5kZXggNzliZTgzNS4uNDY0ZmY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CkBAIC00MCw3ICs0MCw3IEBACiAgICAgICAgIG1vZHVsZS5maWx0ZXJzID0gb3JpZ2luYWxfZmlsdGVycwogCiAKLWNsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0OgogCiAgICAgIiIiQmFzaWMgYm9va2tlZXBpbmcgcmVxdWlyZWQgZm9yIHRlc3RpbmcuIiIiCiAKQEAgLTYzLDcgKzYzLDcgQEAKICAgICAgICAgc3VwZXIoQmFzZVRlc3QsIHNlbGYpLnRlYXJEb3duKCkKIAogCi1jbGFzcyBGaWx0ZXJUZXN0cyhvYmplY3QpOgorY2xhc3MgRmlsdGVyVGVzdHMoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdGluZyB0aGUgZmlsdGVyaW5nIGZ1bmN0aW9uYWxpdHkuIiIiCiAKQEAgLTE4NiwxNCArMTg2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3Wy0xXS5tZXNzYWdlKSwgdGV4dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3Wy0xXS5jYXRlZ29yeSBpcyBVc2VyV2FybmluZykKIAotY2xhc3MgQ0ZpbHRlclRlc3RzKEJhc2VUZXN0LCBGaWx0ZXJUZXN0cyk6CitjbGFzcyBDRmlsdGVyVGVzdHMoRmlsdGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKLWNsYXNzIFB5RmlsdGVyVGVzdHMoQmFzZVRlc3QsIEZpbHRlclRlc3RzKToKK2NsYXNzIFB5RmlsdGVyVGVzdHMoRmlsdGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCiAKLWNsYXNzIFdhcm5UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBXYXJuVGVzdHMoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdCB3YXJuaW5ncy53YXJuKCkgYW5kIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoKS4iIiIKIApAQCAtMzYwLDcgKzM2MCw3IEBACiAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKEJhZFN0cldhcm5pbmcoKSkKIAogCi1jbGFzcyBDV2FyblRlc3RzKEJhc2VUZXN0LCBXYXJuVGVzdHMpOgorY2xhc3MgQ1dhcm5UZXN0cyhXYXJuVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKICAgICAjIEFzIGFuIGVhcmx5IGFkb3B0ZXIsIHdlIHNhbml0eSBjaGVjayB0aGUKQEAgLTM2OSw3ICszNjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9yaWdpbmFsX3dhcm5pbmdzIGlzIHNlbGYubW9kdWxlKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoc2VsZi5tb2R1bGUud2FybiwgJ19fY29kZV9fJykpCiAKLWNsYXNzIFB5V2FyblRlc3RzKEJhc2VUZXN0LCBXYXJuVGVzdHMpOgorY2xhc3MgUHlXYXJuVGVzdHMoV2FyblRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAogICAgICMgQXMgYW4gZWFybHkgYWRvcHRlciwgd2Ugc2FuaXR5IGNoZWNrIHRoZQpAQCAtMzc5LDcgKzM3OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYubW9kdWxlLndhcm4sICdfX2NvZGVfXycpKQogCiAKLWNsYXNzIFdDbWRMaW5lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgV0NtZExpbmVUZXN0cyhCYXNlVGVzdCk6CiAKICAgICBkZWYgdGVzdF9pbXByb3Blcl9pbnB1dChzZWxmKToKICAgICAgICAgIyBVc2VzIHRoZSBwcml2YXRlIF9zZXRvcHRpb24oKSBmdW5jdGlvbiB0byB0ZXN0IHRoZSBwYXJzaW5nCkBAIC00MTAsMTQgKzQxMCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dC5zdHJpcCgpKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGInUnVudGltZVdhcm5pbmcnLCBlcnIpCiAKLWNsYXNzIENXQ21kTGluZVRlc3RzKEJhc2VUZXN0LCBXQ21kTGluZVRlc3RzKToKK2NsYXNzIENXQ21kTGluZVRlc3RzKFdDbWRMaW5lVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKLWNsYXNzIFB5V0NtZExpbmVUZXN0cyhCYXNlVGVzdCwgV0NtZExpbmVUZXN0cyk6CitjbGFzcyBQeVdDbWRMaW5lVGVzdHMoV0NtZExpbmVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X3dhcm5pbmdzCiAKIAotY2xhc3MgX1dhcm5pbmdzVGVzdHMoQmFzZVRlc3QpOgorY2xhc3MgX1dhcm5pbmdzVGVzdHMoQmFzZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3RzIHNwZWNpZmljIHRvIHRoZSBfd2FybmluZ3MgbW9kdWxlLiIiIgogCkBAIC01MTIsMTIgKzUxMiwxMSBAQAogICAgIGRlZiB0ZXN0X3Nob3d3YXJuaW5nX25vdF9jYWxsYWJsZShzZWxmKToKICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgogICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQotICAgICAgICAgICAgb2xkX3Nob3d3YXJuaW5nID0gc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLnNob3d3YXJuaW5nID0gcHJpbnQKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9vdXRwdXQoJ3N0ZG91dCcpOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ1dhcm5pbmchJykKICAgICAgICAgICAgIHNlbGYubW9kdWxlLnNob3d3YXJuaW5nID0gMjMKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubW9kdWxlLndhcm4sICJXYXJuaW5nISIpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLnNob3d3YXJuaW5nID0gb2xkX3Nob3d3YXJuaW5nCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubW9kdWxlLndhcm4sICJXYXJuaW5nISIpCiAKICAgICBkZWYgdGVzdF9zaG93X3dhcm5pbmdfb3V0cHV0KHNlbGYpOgogICAgICAgICAjIFdpdGggc2hvd2FybmluZygpIG1pc3NpbmcsIG1ha2Ugc3VyZSB0aGF0IG91dHB1dCBpcyBva2F5LgpAQCAtNTQ3LDE1ICs1NDYsMTggQEAKICAgICAgICAgZ2xvYmFsc19kaWN0ID0gZ2xvYmFscygpCiAgICAgICAgIG9sZGZpbGUgPSBnbG9iYWxzX2RpY3RbJ19fZmlsZV9fJ10KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpIGFzIHc6CisgICAgICAgICAgICBjYXRjaCA9IG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU9c2VsZi5tb2R1bGUpCisgICAgICAgICAgICB3aXRoIGNhdGNoIGFzIHc6CiAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQogICAgICAgICAgICAgICAgIGdsb2JhbHNfZGljdFsnX19maWxlX18nXSA9IE5vbmUKICAgICAgICAgICAgICAgICBvcmlnaW5hbF93YXJuaW5ncy53YXJuKCd0ZXN0JywgVXNlcldhcm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih3KSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGdsb2JhbHNfZGljdFsnX19maWxlX18nXSA9IG9sZGZpbGUKIAogCi1jbGFzcyBXYXJuaW5nc0Rpc3BsYXlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBXYXJuaW5nc0Rpc3BsYXlUZXN0cyhCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0IHRoZSBkaXNwbGF5aW5nIG9mIHdhcm5pbmdzIGFuZCB0aGUgYWJpbGl0eSB0byBvdmVybG9hZCBmdW5jdGlvbnMKICAgICByZWxhdGVkIHRvIGRpc3BsYXlpbmcgd2FybmluZ3MuIiIiCkBAIC01OTksMTAgKzYwMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX29iamVjdCwgZXhwZWN0ZWRfZmlsZV9saW5lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgZmlsZV9vYmplY3QuZ2V0dmFsdWUoKSkKIAotY2xhc3MgQ1dhcm5pbmdzRGlzcGxheVRlc3RzKEJhc2VUZXN0LCBXYXJuaW5nc0Rpc3BsYXlUZXN0cyk6CitjbGFzcyBDV2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKLWNsYXNzIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMoQmFzZVRlc3QsIFdhcm5pbmdzRGlzcGxheVRlc3RzKToKK2NsYXNzIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCiAKQEAgLTcwOCwxMCArNzEwLDEwIEBACiAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCdmb28nLCBSdW50aW1lV2FybmluZykpOgogICAgICAgICAgICAgICAgIHdtb2Qud2FybigiZm9vIikKIAotY2xhc3MgQ0NhdGNoV2FybmluZ1Rlc3RzKENhdGNoV2FybmluZ1Rlc3RzKToKK2NsYXNzIENDYXRjaFdhcm5pbmdUZXN0cyhDYXRjaFdhcm5pbmdUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfd2FybmluZ3MKIAotY2xhc3MgUHlDYXRjaFdhcm5pbmdUZXN0cyhDYXRjaFdhcm5pbmdUZXN0cyk6CitjbGFzcyBQeUNhdGNoV2FybmluZ1Rlc3RzKENhdGNoV2FybmluZ1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAogCkBAIC03NjAsMTAgKzc2MiwxMCBAQAogICAgICAgICAgICAgICAgICJbJ2lnbm9yZTpEZXByZWNhY2nDs25XYXJuaW5nJ10iLmVuY29kZSgndXRmLTgnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLndhaXQoKSwgMCkKIAotY2xhc3MgQ0Vudmlyb25tZW50VmFyaWFibGVUZXN0cyhFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMpOgorY2xhc3MgQ0Vudmlyb25tZW50VmFyaWFibGVUZXN0cyhFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKLWNsYXNzIFB5RW52aXJvbm1lbnRWYXJpYWJsZVRlc3RzKEVudmlyb25tZW50VmFyaWFibGVUZXN0cyk6CitjbGFzcyBQeUVudmlyb25tZW50VmFyaWFibGVUZXN0cyhFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCiAKQEAgLTc4NiwyMCArNzg4LDEyIEBACiAgICAgICAgICAgICAgICAgZW52PWVudikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0Y29kZSwgMCkKIAotZGVmIHRlc3RfbWFpbigpOgorCitkZWYgc2V0VXBNb2R1bGUoKToKICAgICBweV93YXJuaW5ncy5vbmNlcmVnaXN0cnkuY2xlYXIoKQogICAgIGNfd2FybmluZ3Mub25jZXJlZ2lzdHJ5LmNsZWFyKCkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgQ0ZpbHRlclRlc3RzLCBQeUZpbHRlclRlc3RzLAotICAgICAgICBDV2FyblRlc3RzLCBQeVdhcm5UZXN0cywKLSAgICAgICAgQ1dDbWRMaW5lVGVzdHMsIFB5V0NtZExpbmVUZXN0cywKLSAgICAgICAgX1dhcm5pbmdzVGVzdHMsCi0gICAgICAgIENXYXJuaW5nc0Rpc3BsYXlUZXN0cywgUHlXYXJuaW5nc0Rpc3BsYXlUZXN0cywKLSAgICAgICAgQ0NhdGNoV2FybmluZ1Rlc3RzLCBQeUNhdGNoV2FybmluZ1Rlc3RzLAotICAgICAgICBDRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RzLCBQeUVudmlyb25tZW50VmFyaWFibGVUZXN0cywKLSAgICAgICAgQm9vdHN0cmFwVGVzdCwKLSAgICApCiAKK3RlYXJEb3duTW9kdWxlID0gc2V0VXBNb2R1bGUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWJicm93c2VyLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWJicm93c2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YjkzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3dlYmJyb3dzZXIucHkKQEAgLTAsMCArMSwxOTIgQEAKK2ltcG9ydCB3ZWJicm93c2VyCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzdWJwcm9jZXNzCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitVUkwgPSAnaHR0cDovL3d3dy5leGFtcGxlLmNvbScKK0NNRF9OQU1FID0gJ3Rlc3QnCisKKworY2xhc3MgUG9wZW5Nb2NrKG1vY2suTWFnaWNNb2NrKToKKworICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIHdhaXQoc2VsZiwgc2Vjb25kcz1Ob25lKToKKyAgICAgICAgcmV0dXJuIDAKKworCitjbGFzcyBDb21tYW5kVGVzdE1peGluOgorCisgICAgZGVmIF90ZXN0KHNlbGYsIG1ldGgsICosIGFyZ3M9W1VSTF0sIGt3PXt9LCBvcHRpb25zLCBhcmd1bWVudHMpOgorICAgICAgICAiIiJHaXZlbiBhIHdlYiBicm93c2VyIGluc3RhbmNlIG1ldGhvZCBuYW1lIGFsb25nIHdpdGggYXJndW1lbnRzIGFuZAorICAgICAgICBrZXl3b3JkcyBmb3Igc2FtZSAod2hpY2ggZGVmYXVsdHMgdG8gdGhlIHNpbmdsZSBhcmd1bWVudCBVUkwpLCBjcmVhdGVzCisgICAgICAgIGEgYnJvd3NlciBpbnN0YW5jZSBmcm9tIHRoZSBjbGFzcyBwb2ludGVkIHRvIGJ5IHNlbGYuYnJvd3NlciwgY2FsbHMgdGhlCisgICAgICAgIGluZGljYXRlZCBpbnN0YW5jZSBtZXRob2Qgd2l0aCB0aGUgaW5kaWNhdGVkIGFyZ3VtZW50cywgYW5kIGNvbXBhcmVzCisgICAgICAgIHRoZSByZXN1bHRpbmcgb3B0aW9ucyBhbmQgYXJndW1lbnRzIHBhc3NlZCB0byBQb3BlbiBieSB0aGUgYnJvd3NlcgorICAgICAgICBpbnN0YW5jZSBhZ2FpbnN0IHRoZSAnb3B0aW9ucycgYW5kICdhcmdzJyBsaXN0cy4gIE9wdGlvbnMgYXJlIGNvbXBhcmVkCisgICAgICAgIGluIGEgcG9zaXRpb24gaW5kZXBlbmRlbnQgZmFzaGlvbiwgYW5kIHRoZSBhcmd1bWVudHMgYXJlIGNvbXBhcmVkIGluCisgICAgICAgIHNlcXVlbmNlIG9yZGVyIHRvIHdoYXRldmVyIGlzIGxlZnQgb3ZlciBhZnRlciByZW1vdmluZyB0aGUgb3B0aW9ucy4KKworICAgICAgICAiIiIKKyAgICAgICAgcG9wZW4gPSBQb3Blbk1vY2soKQorICAgICAgICBzdXBwb3J0LnBhdGNoKHNlbGYsIHN1YnByb2Nlc3MsICdQb3BlbicsIHBvcGVuKQorICAgICAgICBicm93c2VyID0gc2VsZi5icm93c2VyX2NsYXNzKG5hbWU9Q01EX05BTUUpCisgICAgICAgIGdldGF0dHIoYnJvd3NlciwgbWV0aCkoKmFyZ3MsICoqa3cpCisgICAgICAgIHBvcGVuX2FyZ3MgPSBzdWJwcm9jZXNzLlBvcGVuLmNhbGxfYXJnc1swXVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcGVuX2FyZ3NbMF0sIENNRF9OQU1FKQorICAgICAgICBwb3Blbl9hcmdzLnBvcCgwKQorICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9wdGlvbiwgcG9wZW5fYXJncykKKyAgICAgICAgICAgIHBvcGVuX2FyZ3MucG9wKHBvcGVuX2FyZ3MuaW5kZXgob3B0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3Blbl9hcmdzLCBhcmd1bWVudHMpCisKKworY2xhc3MgR2VuZXJpY0Jyb3dzZXJDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5HZW5lcmljQnJvd3NlcgorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgQmFja2dyb3VuZEJyb3dzZXJDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5CYWNrZ3JvdW5kQnJvd3NlcgorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgQ2hyb21lQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuQ2hyb21lCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctLW5ldy13aW5kb3cnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgTW96aWxsYUNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLk1vemlsbGEKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmFpc2UnLCAnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX3dpdGhfYXV0b3JhaXNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywga3c9ZGljdChhdXRvcmFpc2U9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9Wyctbm9yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctd2luZG93KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXdfdGFiKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmFpc2UnLCAnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXRhYiknLmZvcm1hdChVUkwpXSkKKworCitjbGFzcyBHYWxlb25Db21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5HYWxlb24KKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctbiddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1ub3JhaXNlJywgJy1uJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXcnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy13J10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisKK2NsYXNzIE9wZXJhQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuT3BlcmEKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnLCAnLW5vcmFpc2UnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXdpbmRvdyknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctcGFnZSknLmZvcm1hdChVUkwpXSkKKworCitjbGFzcyBFTGlua3NDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5FbGlua3MKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy13aW5kb3cpJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy10YWIpJy5mb3JtYXQoVVJMKV0pCisKKworaWYgX19uYW1lX189PSdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQppbmRleCAzNGMzZGVhLi5lYjdmNzVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKQEAgLTE2LDE2ICsxNiwxMiBAQAogICAgIHRyeToKICAgICAgICAgIyBBc2sgdGhlIG1peGVyIEFQSSBmb3IgdGhlIG51bWJlciBvZiBkZXZpY2VzIGl0IGtub3dzIGFib3V0LgogICAgICAgICAjIFdoZW4gdGhlcmUgYXJlIG5vIGRldmljZXMsIFBsYXlTb3VuZCB3aWxsIGZhaWwuCi0gICAgICAgIGlmIGN0eXBlcy53aW5kbGwud2lubW0ubWl4ZXJHZXROdW1EZXZzKCkgaXMgMDoKKyAgICAgICAgaWYgY3R5cGVzLndpbmRsbC53aW5tbS5taXhlckdldE51bURldnMoKSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAga2V5ID0gd2lucmVnLk9wZW5LZXlFeCh3aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsCiAgICAgICAgICAgICAgICAgIkFwcEV2ZW50c1xTY2hlbWVzXEFwcHNcLkRlZmF1bHRcezB9XC5EZWZhdWx0Ii5mb3JtYXQoc291bmQpKQotICAgICAgICB2YWx1ZSA9IHdpbnJlZy5FbnVtVmFsdWUoa2V5LCAwKVsxXQotICAgICAgICBpZiB2YWx1ZSBpcyBub3QgIiI6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiB3aW5yZWcuRW51bVZhbHVlKGtleSwgMClbMV0gIT0gIiIKICAgICBleGNlcHQgV2luZG93c0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDA4ZjhkOWEuLjA1YzFmNGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTksNiArOSw4IEBACiBmcm9tIHdzZ2lyZWYuc2ltcGxlX3NlcnZlciBpbXBvcnQgbWFrZV9zZXJ2ZXIKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPLCBCdWZmZXJlZFJlYWRlcgogZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IEJhc2VTZXJ2ZXIKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl9pbXBsZW1lbnRhdGlvbgorCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMTAwLDkgKzEwMiwxMSBAQAogY2xhc3MgSW50ZWdyYXRpb25UZXN0cyhUZXN0Q2FzZSk6CiAKICAgICBkZWYgY2hlY2tfaGVsbG8oc2VsZiwgb3V0LCBoYXNfbGVuZ3RoPVRydWUpOgorICAgICAgICBweXZlciA9IChweXRob25faW1wbGVtZW50YXRpb24oKSArICIvIiArCisgICAgICAgICAgICAgICAgc3lzLnZlcnNpb24uc3BsaXQoKVswXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCiAgICAgICAgICAgICAoIkhUVFAvMS4wIDIwMCBPS1xyXG4iCi0gICAgICAgICAgICAiU2VydmVyOiBXU0dJU2VydmVyLzAuMiBQeXRob24vIitzeXMudmVyc2lvbi5zcGxpdCgpWzBdKyJcclxuIgorICAgICAgICAgICAgIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgIiArIHB5dmVyICsiXHJcbiIKICAgICAgICAgICAgICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cclxuIgogICAgICAgICAgICAgIkRhdGU6IE1vbiwgMDUgSnVuIDIwMDYgMTg6NDk6NTQgR01UXHJcbiIgKwogICAgICAgICAgICAgKGhhc19sZW5ndGggYW5kICAiQ29udGVudC1MZW5ndGg6IDEzXHJcbiIgb3IgIiIpICsKQEAgLTE1Niw5ICsxNjAsMTEgQEAKICAgICAgICAgb3V0LCBlcnIgPSBydW5fYW1vY2sodmFsaWRhdG9yKGFwcCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIuZW5kc3dpdGgoJyJHRVQgLyBIVFRQLzEuMCIgMjAwIDRcbicpKQogICAgICAgICB2ZXIgPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdLmVuY29kZSgnYXNjaWknKQorICAgICAgICBweSAgPSBweXRob25faW1wbGVtZW50YXRpb24oKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcHl2ZXIgPSBweSArIGIiLyIgKyB2ZXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBiIkhUVFAvMS4wIDIwMCBPS1xyXG4iCi0gICAgICAgICAgICAgICAgYiJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yIFB5dGhvbi8iICsgdmVyICsgYiJcclxuIgorICAgICAgICAgICAgICAgIGIiU2VydmVyOiBXU0dJU2VydmVyLzAuMiAiKyBweXZlciArIGIiXHJcbiIKICAgICAgICAgICAgICAgICBiIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOFxyXG4iCiAgICAgICAgICAgICAgICAgYiJEYXRlOiBXZWQsIDI0IERlYyAyMDA4IDEzOjI5OjMyIEdNVFxyXG4iCiAgICAgICAgICAgICAgICAgYiJcclxuIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCBmNjEyOTJmLi5iNGVkZDc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtMSwyOCArMSw0MSBAQAogIyB4bWwuZXRyZWUgdGVzdC4gIFRoaXMgZmlsZSBjb250YWlucyBlbm91Z2ggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQKICMgYWxsIGluY2x1ZGVkIGNvbXBvbmVudHMgd29yayBhcyB0aGV5IHNob3VsZC4KICMgTGFyZ2UgcGFydHMgYXJlIGV4dHJhY3RlZCBmcm9tIHRoZSB1cHN0cmVhbSB0ZXN0IHN1aXRlLgotCi0jIElNUE9SVEFOVDogdGhlIHNhbWUgZG9jdGVzdHMgYXJlIHJ1biBmcm9tICJ0ZXN0X3htbF9ldHJlZV9jIiBpbgotIyBvcmRlciB0byBlbnN1cmUgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlCi0jIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KKyMKKyMgUExFQVNFIHdyaXRlIGFsbCBuZXcgdGVzdHMgdXNpbmcgdGhlIHN0YW5kYXJkIHVuaXR0ZXN0IGluZnJhc3RydWN0dXJlIGFuZAorIyBub3QgZG9jdGVzdC4KKyMKKyMgSU1QT1JUQU5UOiB0aGUgc2FtZSB0ZXN0cyBhcmUgcnVuIGZyb20gInRlc3RfeG1sX2V0cmVlX2MiIGluIG9yZGVyCisjIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBDIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgUHl0aG9uCisjIGltcGxlbWVudGF0aW9uLgogIwogIyBGb3IgdGhpcyBwdXJwb3NlLCB0aGUgbW9kdWxlLWxldmVsICJFVCIgc3ltYm9sIGlzIHRlbXBvcmFyaWx5CiAjIG1vbmtleS1wYXRjaGVkIHdoZW4gcnVubmluZyB0aGUgInRlc3RfeG1sX2V0cmVlX2MiIHRlc3Qgc3VpdGUuCiAjIERvbid0IHJlLWltcG9ydCAieG1sLmV0cmVlLkVsZW1lbnRUcmVlIiBtb2R1bGUgaW4gdGhlIGRvY3N0cmluZywKICMgZXhjZXB0IGlmIHRoZSB0ZXN0IGlzIHNwZWNpZmljIHRvIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uCiAKLWltcG9ydCBzeXMKIGltcG9ydCBodG1sCitpbXBvcnQgaW8KK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgogCitmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcHJvZHVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGZpbmRmaWxlLCB1bmxpbmssIGltcG9ydF9mcmVzaF9tb2R1bGUsIGdjX2NvbGxlY3QKIAotZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCisjIHB5RVQgaXMgdGhlIHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uLgorIworIyBFVCBpcyBweUVUIGluIHRlc3RfeG1sX2V0cmVlIGFuZCBpcyB0aGUgQyBhY2NlbGVyYXRlZCB2ZXJzaW9uIGluCisjIHRlc3RfeG1sX2V0cmVlX2MuCitweUVUID0gTm9uZQorRVQgPSBOb25lCiAKIFNJTVBMRV9YTUxGSUxFID0gZmluZGZpbGUoInNpbXBsZS54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIHRyeToKLSAgICBTSU1QTEVfWE1MRklMRS5lbmNvZGUoInV0ZjgiKQorICAgIFNJTVBMRV9YTUxGSUxFLmVuY29kZSgidXRmLTgiKQogZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZmlsZW5hbWUgaXMgbm90IGVuY29kYWJsZSB0byB1dGY4IikKIFNJTVBMRV9OU19YTUxGSUxFID0gZmluZGZpbGUoInNpbXBsZS1ucy54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKQEAgLTU3LDYgKzcwLDIyIEBACiA8L2JvZHk+CiAiIiIKIAorU0FNUExFX1hNTF9OU19FTEVNUyA9ICIiIgorPHJvb3Q+Cis8aDp0YWJsZSB4bWxuczpoPSJoZWxsbyI+CisgIDxoOnRyPgorICAgIDxoOnRkPkFwcGxlczwvaDp0ZD4KKyAgICA8aDp0ZD5CYW5hbmFzPC9oOnRkPgorICA8L2g6dHI+Cis8L2g6dGFibGU+CisKKzxmOnRhYmxlIHhtbG5zOmY9ImZvbyI+CisgIDxmOm5hbWU+QWZyaWNhbiBDb2ZmZWUgVGFibGU8L2Y6bmFtZT4KKyAgPGY6d2lkdGg+ODA8L2Y6d2lkdGg+CisgIDxmOmxlbmd0aD4xMjA8L2Y6bGVuZ3RoPgorPC9mOnRhYmxlPgorPC9yb290PgorIiIiCiAKIGRlZiBzYW5pdHkoKToKICAgICAiIiIKQEAgLTE0OCw2ICsxNzcsMzggQEAKICAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgogICAgICAgICBjaGVja19lbGVtZW50KGVsZW0pCiAKK2NsYXNzIEVsZW1lbnRUZXN0Q2FzZToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMubW9kdWxlcyA9IHtweUVULCBFVH0KKworICAgIGRlZiBwaWNrbGVSb3VuZFRyaXAoc2VsZiwgb2JqLCBuYW1lLCBkdW1wZXIsIGxvYWRlcik6CisgICAgICAgIHNhdmVfbSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gZHVtcGVyCisgICAgICAgICAgICB0ZW1wID0gcGlja2xlLmR1bXBzKG9iaikKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbG9hZGVyCisgICAgICAgICAgICByZXN1bHQgPSBwaWNrbGUubG9hZHModGVtcCkKKyAgICAgICAgZXhjZXB0IHBpY2tsZS5QaWNrbGluZ0Vycm9yIGFzIHBlOgorICAgICAgICAgICAgIyBweUVUIG11c3QgYmUgc2Vjb25kLCBiZWNhdXNlIHB5RVQgbWF5IGJlIChlcXVhbCB0bykgRVQuCisgICAgICAgICAgICBodW1hbiA9IGRpY3QoWyhFVCwgImNFVCIpLCAocHlFVCwgInB5RVQiKV0pCisgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkZhaWxlZCB0byByb3VuZC10cmlwICVyIGZyb20gJXIgdG8gJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAob2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh1bWFuLmdldChkdW1wZXIsIGR1bXBlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHVtYW4uZ2V0KGxvYWRlciwgbG9hZGVyKSkpIGZyb20gcGUKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gc2F2ZV9tCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBhc3NlcnRFcXVhbEVsZW1lbnRzKHNlbGYsIGFsaWNlLCBib2IpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYWxpY2UsIChFVC5FbGVtZW50LCBweUVULkVsZW1lbnQpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYm9iLCAoRVQuRWxlbWVudCwgcHlFVC5FbGVtZW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChhbGljZSkpLCBsZW4obGlzdChib2IpKSkKKyAgICAgICAgZm9yIHgsIHkgaW4gemlwKGFsaWNlLCBib2IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbEVsZW1lbnRzKHgsIHkpCisgICAgICAgIHByb3BlcnRpZXMgPSBvcGVyYXRvci5hdHRyZ2V0dGVyKCd0YWcnLCAndGFpbCcsICd0ZXh0JywgJ2F0dHJpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvcGVydGllcyhhbGljZSksIHByb3BlcnRpZXMoYm9iKSkKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBlbGVtZW50IHRyZWUgdGVzdHMKIApAQCAtMTg4LDEwICsyNDksOCBAQAogCiAgICAgVGhlc2UgbWV0aG9kcyByZXR1cm4gYW4gaXRlcmFibGUuIFNlZSBidWcgNjQ3Mi4KIAotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyKCJ0YWciKS5fX25leHRfXykKICAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcmZpbmQoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgiKiIpLl9fbmV4dF9fKQotICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyKCJ0YWciKS5fX25leHRfXykKICAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcmZpbmQoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgiKiIpLl9fbmV4dF9fKQogCkBAIC0yNzAsMTY2ICszMjksNiBAQAogICAgICc8dGFnPmhlbGxvPC90YWc+JwogICAgICIiIgogCi0jIE9ubHkgd2l0aCBQeXRob24gaW1wbGVtZW50YXRpb24KLWRlZiBzaW1wbGVmaW5kKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBmaW5kIG1ldGhvZHMgdXNpbmcgdGhlIGVsZW1lbnRwYXRoIGZhbGxiYWNrLgotCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQotCi0gICAgPj4+IEN1cnJlbnRFbGVtZW50UGF0aCA9IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFRyZWUuX1NpbXBsZUVsZW1lbnRQYXRoKCkKLSAgICA+Pj4gZWxlbSA9IEVsZW1lbnRUcmVlLlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBlbGVtLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIpCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIsICJkZWZhdWx0IikKLSAgICAnZGVmYXVsdCcKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnLCAndGFnJ10KLQotICAgIFBhdGggc3ludGF4IGRvZXNuJ3Qgd29yayBpbiB0aGlzIGNhc2UuCi0KLSAgICA+Pj4gZWxlbS5maW5kKCJzZWN0aW9uL3RhZyIpCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uL3RhZyIpKQotICAgIFtdCi0KLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFBhdGggPSBDdXJyZW50RWxlbWVudFBhdGgKLSAgICAiIiIKLQotZGVmIGZpbmQoKToKLSAgICAiIiIKLSAgICBUZXN0IGZpbmQgbWV0aG9kcyAoaW5jbHVkaW5nIHhwYXRoIHN5bnRheCkuCi0KLSAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBlbGVtLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IGVsZW0uZmluZCgic2VjdGlvbi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBlbGVtLmZpbmQoIi4vdGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgiLi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCIvdGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gZWxlbVsyXSA9IEVULlhNTChTQU1QTEVfU0VDVElPTikKLSAgICA+Pj4gZWxlbS5maW5kKCJzZWN0aW9uL25leHR0YWciKS50YWcKLSAgICAnbmV4dHRhZycKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgic2VjdGlvbi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJ0b2ciKQotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJ0b2cvZm9vIikKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgic2VjdGlvbi9uZXh0dGFnIikKLSAgICAnJwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL25leHR0YWciLCAiZGVmYXVsdCIpCi0gICAgJycKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIikKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIiwgImRlZmF1bHQiKQotICAgICdkZWZhdWx0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInRvZy9mb28iKQotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidG9nL2ZvbyIsICJkZWZhdWx0IikKLSAgICAnZGVmYXVsdCcKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoIi4vdGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoIi90YWciKQotICAgICd0ZXh0JwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL3RhZyIpCi0gICAgJ3N1YnRleHQnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJzZWN0aW9uL3RhZyIpCi0gICAgJ3N1YnRleHQnCi0gICAgPj4+IEVULlhNTCgnPHJvb3Q+PGVtcHR5IC8+PC9yb290PicpLmZpbmR0ZXh0KCdlbXB0eScpCi0gICAgJycKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuIikpCi0gICAgWydib2R5J10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRvZyIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidG9nL2ZvbyIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiKiIpKQotICAgIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnLCAndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi90YWciKSkKLSAgICBbJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi8vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLyoiKSkKLSAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLy8qIikpCi0gICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vLi8vKiIpKQotICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqLyoiKSkKLSAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqLy8qIikpCi0gICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovdGFnIikpCi0gICAgWyd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovLi90YWciKSkKLSAgICBbJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy4vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWdbQGNsYXNzXSIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZ1tAY2xhc3M9J2EnXSIpKQotICAgIFsndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWdbQGNsYXNzPSdiJ10iKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZ1tAaWRdIikpCi0gICAgWyd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3NlY3Rpb25bdGFnXSIpKQotICAgIFsnc2VjdGlvbiddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vc2VjdGlvbltlbGVtZW50XSIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi4vdGFnIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLy4uL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmRhbGwoIi4vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLQotICAgIEZvbGxvd2luZyBleGFtcGxlIGlzIGludmFsaWQgaW4gMS4yLgotICAgIEEgbGVhZGluZyAnKicgaXMgYXNzdW1lZCBpbiAxLjMuCi0KLSAgICA+Pj4gZWxlbS5maW5kYWxsKCJzZWN0aW9uLy8iKSA9PSBlbGVtLmZpbmRhbGwoInNlY3Rpb24vLyoiKQotICAgIFRydWUKLQotICAgIEVUJ3MgUGF0aCBtb2R1bGUgaGFuZGxlcyB0aGlzIGNhc2UgaW5jb3JyZWN0bHk7IHRoaXMgZ2l2ZXMKLSAgICBhIHdhcm5pbmcgaW4gMS4zLCBhbmQgdGhlIGJlaGF2aW91ciB3aWxsIGJlIG1vZGlmaWVkIGluIDEuNC4KLQotICAgID4+PiBzdW1tYXJpemVfbGlzdChFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kYWxsKCIvdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLQotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidGFnIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpCi0gICAgWyd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJywgJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3todHRwOi8vZWZmYm90Lm9yZy9uc310YWciKSkKLSAgICBbJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnLCAne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZycsICd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJ10KLSAgICAiIiIKLQogZGVmIGZpbGVfaW5pdCgpOgogICAgICIiIgogICAgID4+PiBpbXBvcnQgaW8KQEAgLTQ0OCwzMSArMzQ3LDIzIEBACiAgICAgJ2VtcHR5LWVsZW1lbnQnCiAgICAgIiIiCiAKLWRlZiBiYWRfZmluZCgpOgotICAgICIiIgotICAgIENoZWNrIGJhZCBvciB1bnN1cHBvcnRlZCBwYXRoIGV4cHJlc3Npb25zLgotCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKLSAgICA+Pj4gZWxlbS5maW5kYWxsKCIvdGFnIikKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgU3ludGF4RXJyb3I6IGNhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCBvbiBlbGVtZW50Ci0gICAgIiIiCi0KIGRlZiBwYXRoX2NhY2hlKCk6CiAgICAgIiIiCiAgICAgQ2hlY2sgdGhhdCB0aGUgcGF0aCBjYWNoZSBiZWhhdmVzIHNhbmVseS4KIAorICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKKwogICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gY2FjaGVfbGVuXzEwID0gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkKKyAgICA+Pj4gY2FjaGVfbGVuXzEwID0gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkKICAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA9PSBjYWNoZV9sZW5fMTAKKyAgICA+Pj4gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkgPT0gY2FjaGVfbGVuXzEwCiAgICAgVHJ1ZQogICAgID4+PiBmb3IgaSBpbiByYW5nZSgyMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpID4gY2FjaGVfbGVuXzEwCisgICAgPj4+IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpID4gY2FjaGVfbGVuXzEwCiAgICAgVHJ1ZQogICAgID4+PiBmb3IgaSBpbiByYW5nZSg2MDApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA8IDUwMAorICAgID4+PiBsZW4oRWxlbWVudFBhdGguX2NhY2hlKSA8IDUwMAogICAgIFRydWUKICAgICAiIiIKIApAQCAtOTA0LDY1ICs3OTUsNiBAQAogICAgICIiIgogICAgIEVULlhNTCgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz48eG1sIC8+IiAlIGVuY29kaW5nKQogCi1kZWYgZW5jb2RpbmcoKToKLSAgICByIiIiCi0gICAgVGVzdCBlbmNvZGluZyBpc3N1ZXMuCi0KLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCi0gICAgPj4+IGVsZW0udGV4dCA9ICJhYmMiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+YWJjPC90YWc+IgotCi0gICAgPj4+IGVsZW0udGV4dCA9ICI8JlwiXCc+IgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpICMgY2RhdGEgY2hhcmFjdGVycwotICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLQotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAiPCZcIlwnPiIKLSAgICA+Pj4gZWxlbS50ZXh0ID0gTm9uZQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYic8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0KLSAgICA+Pj4gZWxlbS50ZXh0ID0gJ1x4ZTVceGY2XHhmNjw+JwotICAgID4+PiBlbGVtLmF0dHJpYi5jbGVhcigpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+XHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZz4mIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4iCi0KLSAgICA+Pj4gZWxlbS5hdHRyaWJbImtleSJdID0gJ1x4ZTVceGY2XHhmNjw+JwotICAgID4+PiBlbGVtLnRleHQgPSBOb25lCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnIGtleT0iXHhlNVx4ZjZceGY2Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWcga2V5PSJceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiJzw/eG1sIHZlcnNpb249XCcxLjBcJyBlbmNvZGluZz1cJ2lzby04ODU5LTFcJz8+XG48dGFnIGtleT0iXHhlNVx4ZjZceGY2Jmx0OyZndDsiIC8+JwotICAgICIiIgotCiBkZWYgbWV0aG9kcygpOgogICAgIHIiIiIKICAgICBUZXN0IHNlcmlhbGl6YXRpb24gbWV0aG9kcy4KQEAgLTk4MSwzNiArODEzLDYgQEAKICAgICAnMSA8IDJcbicKICAgICAiIiIKIAotZGVmIGl0ZXJhdG9ycygpOgotICAgICIiIgotICAgIFRlc3QgaXRlcmF0b3JzLgotCi0gICAgPj4+IGUgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlLml0ZXIoKSkKLSAgICBbJ2h0bWwnLCAnYm9keScsICdpJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZS5maW5kKCJib2R5IikuaXRlcigpKQotICAgIFsnYm9keScsICdpJ10KLSAgICA+Pj4gc3VtbWFyaXplKG5leHQoZS5pdGVyKCkpKQotICAgICdodG1sJwotICAgID4+PiAiIi5qb2luKGUuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicKLSAgICA+Pj4gIiIuam9pbihlLmZpbmQoImJvZHkiKS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLicKLSAgICA+Pj4gbmV4dChlLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSAnCi0KLSAgICBNZXRob2QgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IuIFNlZSBidWcgNjQ3Mi4KLQotICAgID4+PiBzb3VyY2VmaWxlID0gc2VyaWFsaXplKGUsIHRvX3N0cmluZz1GYWxzZSkKLSAgICA+Pj4gbmV4dChFVC5pdGVycGFyc2Uoc291cmNlZmlsZSkpICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgICgnZW5kJywgPEVsZW1lbnQgJ2knIGF0IDB4Li4uPikKLQotICAgID4+PiB0cmVlID0gRVQuRWxlbWVudFRyZWUoTm9uZSkKLSAgICA+Pj4gdHJlZS5pdGVyKCkKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgQXR0cmlidXRlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2l0ZXInCi0gICAgIiIiCi0KIEVOVElUWV9YTUwgPSAiIiJcCiA8IURPQ1RZUEUgcG9pbnRzIFsKIDwhRU5USVRZICUgdXNlci1lbnRpdGllcyBTWVNURU0gJ3VzZXItZW50aXRpZXMueG1sJz4KQEAgLTEwNTEsMjYgKzg1Myw2IEBACiAgICAgJzxkb2N1bWVudD50ZXh0PC9kb2N1bWVudD4nCiAgICAgIiIiCiAKLWRlZiBlcnJvcih4bWwpOgotICAgICIiIgotCi0gICAgVGVzdCBlcnJvciBoYW5kbGluZy4KLQotICAgID4+PiBpc3N1YmNsYXNzKEVULlBhcnNlRXJyb3IsIFN5bnRheEVycm9yKQotICAgIFRydWUKLSAgICA+Pj4gZXJyb3IoImZvbyIpLnBvc2l0aW9uCi0gICAgKDEsIDApCi0gICAgPj4+IGVycm9yKCI8dGFnPiZmb287PC90YWc+IikucG9zaXRpb24KLSAgICAoMSwgNSkKLSAgICA+Pj4gZXJyb3IoImZvb2JhcjwiKS5wb3NpdGlvbgotICAgICgxLCA2KQotCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBFVC5YTUwoeG1sKQotICAgIGV4Y2VwdCBFVC5QYXJzZUVycm9yOgotICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKClbMV0KLQogZGVmIG5hbWVzcGFjZSgpOgogICAgICIiIgogICAgIFRlc3QgbmFtZXNwYWNlIGlzc3Vlcy4KQEAgLTEyNTgsOCArMTA0MCw4IEBACiAKICAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPicpKQogICAgIGInPD90ZXN0IDx0ZXN0aW5nJj4/PicKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPlx4ZTMnKSwgJ2xhdGluMScpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdsYXRpbjEnPz5cXG48P3Rlc3QgPHRlc3RpbmcmPlxceGUzPz4iCisgICAgPj4+IEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJzx0ZXN0aW5nJj5ceGUzJyksICdsYXRpbi0xJykKKyAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluLTEnPz5cXG48P3Rlc3QgPHRlc3RpbmcmPlxceGUzPz4iCiAgICAgIiIiCiAKICMKQEAgLTEzMzgsMjEgKzExMjAsMjAgQEAKIDwvZG9jdW1lbnQ+CiAiIiIuZm9ybWF0KGh0bWwuZXNjYXBlKFNJTVBMRV9YTUxGSUxFLCBUcnVlKSkKIAorCiBkZWYgeGluY2x1ZGVfbG9hZGVyKGhyZWYsIHBhcnNlPSJ4bWwiLCBlbmNvZGluZz1Ob25lKToKICAgICB0cnk6CiAgICAgICAgIGRhdGEgPSBYSU5DTFVERVtocmVmXQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcmFpc2UgSU9FcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKKyAgICAgICAgcmFpc2UgT1NFcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKICAgICBpZiBwYXJzZSA9PSAieG1sIjoKLSAgICAgICAgZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0IFhNTAotICAgICAgICByZXR1cm4gWE1MKGRhdGEpCisgICAgICAgIGRhdGEgPSBFVC5YTUwoZGF0YSkKICAgICByZXR1cm4gZGF0YQogCiBkZWYgeGluY2x1ZGUoKToKICAgICByIiIiCiAgICAgQmFzaWMgaW5jbHVzaW9uIGV4YW1wbGUgKFhJbmNsdWRlIEMuMSkKIAotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKICAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCiAKICAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkMxLnhtbCIpCkBAIC0xNDA3LDI2ICsxMTg4LDEwIEBACiAgICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDNS54bWwiKQogICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIElPRXJyb3I6IHJlc291cmNlIG5vdCBmb3VuZAorICAgIE9TRXJyb3I6IHJlc291cmNlIG5vdCBmb3VuZAogICAgID4+PiAjIHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgQzUKICAgICAiIiIKIAotZGVmIHhpbmNsdWRlX2RlZmF1bHQoKToKLSAgICAiIiIKLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCi0KLSAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoImRlZmF1bHQueG1sIikKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCkKLSAgICA+Pj4gcHJpbnQoc2VyaWFsaXplKGRvY3VtZW50KSkgIyBkZWZhdWx0Ci0gICAgPGRvY3VtZW50PgotICAgICAgPHA+RXhhbXBsZS48L3A+Ci0gICAgICA8cm9vdD4KLSAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgotICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAotICAgICAgIDxlbXB0eS1lbGVtZW50IC8+Ci0gICAgPC9yb290PgotICAgIDwvZG9jdW1lbnQ+Ci0gICAgIiIiCiAKICMKICMgYmFkbHkgZm9ybWF0dGVkIHhpOmluY2x1ZGUgdGFncwpAQCAtMTYxNCw3ICsxMzc5LDcgQEAKIAogY2xhc3MgRXhjZXB0aW9uRmlsZToKICAgICBkZWYgcmVhZChzZWxmLCB4KToKLSAgICAgICAgcmFpc2UgSU9FcnJvcgorICAgICAgICByYWlzZSBPU0Vycm9yCiAKIGRlZiB4bWx0b29sa2l0NjAoKToKICAgICAiIiIKQEAgLTE2MjIsNyArMTM4Nyw3IEBACiAgICAgSGFuZGxlIGNyYXNoIGluIHN0cmVhbSBzb3VyY2UuCiAgICAgPj4+IHRyZWUgPSBFVC5wYXJzZShFeGNlcHRpb25GaWxlKCkpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIElPRXJyb3IKKyAgICBPU0Vycm9yCiAKICAgICAiIiIKIApAQCAtMTg1MywyNSArMTYxOCw4MzUgQEAKICAgICA+Pj4gRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCiAgICAgIiIiCiAKLWRlZiBjaGVja19odG1sX2VtcHR5X2VsZW1zX3NlcmlhbGl6YXRpb24oc2VsZik6Ci0gICAgIyBpc3N1ZSAxNTk3MAotICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKLSAgICAiIiIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgID4+PiBlbXB0eV9lbGVtcyA9IFsnQVJFQScsICdCQVNFJywgJ0JBU0VGT05UJywgJ0JSJywgJ0NPTCcsICdGUkFNRScsICdIUicsCi0gICAgLi4uICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXQotICAgID4+PiBlbGVtcyA9ICcnLmpvaW4oJzwlcyAvPicgJSBlbGVtIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKLSAgICA+Pj4gZWxlbXMgPSAnJy5qb2luKCc8JXM+PC8lcz4nICUgKGVsZW0sIGVsZW0pIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKIAotICAgICIiIgorY2xhc3MgQmFzaWNFbGVtZW50VGVzdChFbGVtZW50VGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hdWdtZW50YXRpb25fdHlwZV9lcnJvcnMoc2VsZik6CisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdqb2UnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuYXBwZW5kLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZS5leHRlbmQsIFtFVC5FbGVtZW50KCdiYXInKSwgJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuaW5zZXJ0LCAwLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2N5Y2xpY19nYyhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVtbXk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBUZXN0IHRoZSBzaG9ydGVzdCBjeWNsZTogZC0+ZWxlbWVudC0+ZAorICAgICAgICBkID0gRHVtbXkoKQorICAgICAgICBkLmR1bW15cmVmID0gRVQuRWxlbWVudCgnam9lJywgYXR0cj1kKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZCkKKyAgICAgICAgZGVsIGQKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKKworICAgICAgICAjIEEgbG9uZ2VyIGN5Y2xlOiBkLT5lLT5lMi0+ZAorICAgICAgICBlID0gRVQuRWxlbWVudCgnam9lJykKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IGUKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGUyID0gRVQuU3ViRWxlbWVudChlLCAnZm9vJywgYXR0cj1kKQorICAgICAgICBkZWwgZCwgZSwgZTIKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKKworICAgICAgICAjIEEgY3ljbGUgYmV0d2VlbiBFbGVtZW50IG9iamVjdHMgYXMgY2hpbGRyZW4gb2Ygb25lIGFub3RoZXIKKyAgICAgICAgIyBlMS0+ZTItPmUzLT5lMQorICAgICAgICBlMSA9IEVULkVsZW1lbnQoJ2UxJykKKyAgICAgICAgZTIgPSBFVC5FbGVtZW50KCdlMicpCisgICAgICAgIGUzID0gRVQuRWxlbWVudCgnZTMnKQorICAgICAgICBlMS5hcHBlbmQoZTIpCisgICAgICAgIGUyLmFwcGVuZChlMikKKyAgICAgICAgZTMuYXBwZW5kKGUxKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZTEpCisgICAgICAgIGRlbCBlMSwgZTIsIGUzCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICBmbGFnID0gRmFsc2UKKyAgICAgICAgZGVmIHdyZWZfY2Iodyk6CisgICAgICAgICAgICBub25sb2NhbCBmbGFnCisgICAgICAgICAgICBmbGFnID0gVHJ1ZQorICAgICAgICBlID0gRVQuRWxlbWVudCgnZScpCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihlLCB3cmVmX2NiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKS50YWcsICdlJykKKyAgICAgICAgZGVsIGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2dldF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIGUxID0gRVQuRWxlbWVudCgnZm9vJyAsIHg9MSwgeT0yLCB6PTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZTEuZ2V0KCd4JywgZGVmYXVsdD03KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMS5nZXQoJ3cnLCBkZWZhdWx0PTcpLCA3KQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICAjIGlzc3VlICMxNjA3NjogdGhlIEMgaW1wbGVtZW50YXRpb24gd2Fzbid0IHBpY2tsZWFibGUuCisgICAgICAgIGZvciBkdW1wZXIsIGxvYWRlciBpbiBwcm9kdWN0KHNlbGYubW9kdWxlcywgcmVwZWF0PTIpOgorICAgICAgICAgICAgZSA9IGR1bXBlci5FbGVtZW50KCdmb28nLCBiYXI9NDIpCisgICAgICAgICAgICBlLnRleHQgPSAidGV4dCBnb2VzIGhlcmUiCisgICAgICAgICAgICBlLnRhaWwgPSAib3Bwb3NpdGUgb2YgaGVhZCIKKyAgICAgICAgICAgIGR1bXBlci5TdWJFbGVtZW50KGUsICdjaGlsZCcpLmFwcGVuZChkdW1wZXIuRWxlbWVudCgnZ3JhbmRjaGlsZCcpKQorICAgICAgICAgICAgZS5hcHBlbmQoZHVtcGVyLkVsZW1lbnQoJ2NoaWxkJykpCisgICAgICAgICAgICBlLmZpbmRhbGwoJy4vL2dyYW5kY2hpbGQnKVswXS5zZXQoJ2F0dHInLCAnb3RoZXIgdmFsdWUnKQorCisgICAgICAgICAgICBlMiA9IHNlbGYucGlja2xlUm91bmRUcmlwKGUsICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wZXIsIGxvYWRlcikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMi50YWcsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMi5hdHRyaWJbJ2JhciddLCA0MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGUyKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxFbGVtZW50cyhlLCBlMikKKworY2xhc3MgRWxlbWVudFRyZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pc3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuUU5hbWUsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50VHJlZSwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULkVsZW1lbnQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5UcmVlQnVpbGRlciwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlhNTFBhcnNlciwgdHlwZSkKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfdHJpdmlhbChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgRVQuRWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgTXlFbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50YWcsICdmb28nKQorCisgICAgICAgICMgdGVzdCB0aGF0IGF0dHJpYnV0ZSBhc3NpZ25tZW50IHdvcmtzIChpc3N1ZSAxNDg0OSkKKyAgICAgICAgbXllLnRleHQgPSAiam9lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50ZXh0LCAiam9lIikKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgICAgICAgICAgICAgc3VwZXIoTXlFbGVtZW50LCBzZWxmKS5fX2luaXRfXyh0YWcgKyAnX18nLCBhdHRyaWIsICoqZXh0cmEpCisKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdmb28nLCB7J2EnOiAxLCAnYic6IDJ9LCBjPTMsIGQ9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUudGFnLCAnZm9vX18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChteWUuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCldKQorCisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc19uZXdfbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBkZWYgbmV3bWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRhZworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnam9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUubmV3bWV0aG9kKCksICdqb2UnKQorCisgICAgZGVmIHRlc3RfaHRtbF9lbXB0eV9lbGVtc19zZXJpYWxpemF0aW9uKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE1OTcwCisgICAgICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gWydBUkVBJywgJ0JBU0UnLCAnQkFTRUZPTlQnLCAnQlInLCAnQ09MJywgJ0ZSQU1FJywgJ0hSJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXToKKyAgICAgICAgICAgIGZvciBlbGVtIGluIFtlbGVtZW50LCBlbGVtZW50Lmxvd2VyKCldOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gJzwlcz4nICUgZWxlbQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUoRVQuWE1MKCc8JXMgLz4nICUgZWxlbSksIG1ldGhvZD0naHRtbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkID0gc2VyaWFsaXplKEVULlhNTCgnPCVzPjwvJXM+JyAlIChlbGVtLGVsZW0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0naHRtbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBleHBlY3RlZCkKKworCitjbGFzcyBFbGVtZW50RmluZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbmRfc2ltcGxlKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKFNBTVBMRV9YTUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCd0YWcnKS50YWcsICd0YWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnc2VjdGlvbi90YWcnKS50YWcsICd0YWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnLi90YWcnKS50YWcsICd0YWcnKQorCisgICAgICAgIGVbMl0gPSBFVC5YTUwoU0FNUExFX1NFQ1RJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCdzZWN0aW9uL25leHR0YWcnKS50YWcsICduZXh0dGFnJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZHRleHQoJy4vdGFnJyksICd0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCdzZWN0aW9uL3RhZycpLCAnc3VidGV4dCcpCisKKyAgICAgICAgIyBzZWN0aW9uL25leHR0YWcgaXMgZm91bmQgYnV0IGhhcyBubyB0ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kdGV4dCgnc2VjdGlvbi9uZXh0dGFnJyksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZHRleHQoJ3NlY3Rpb24vbmV4dHRhZycsICdkZWZhdWx0JyksICcnKQorCisgICAgICAgICMgdG9nIGRvZXNuJ3QgZXhpc3QgYW5kICdkZWZhdWx0JyBraWNrcyBpbgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLmZpbmR0ZXh0KCd0b2cnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCd0b2cnLCAnZGVmYXVsdCcpLCAnZGVmYXVsdCcpCisKKyAgICAgICAgIyBJc3N1ZSAjMTY5MjIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5YTUwoJzx0YWc+PGVtcHR5IC8+PC90YWc+JykuZmluZHRleHQoJ2VtcHR5JyksICcnKQorCisgICAgZGVmIHRlc3RfZmluZGFsbChzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBlWzJdID0gRVQuWE1MKFNBTVBMRV9TRUNUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLicpKSwgWydib2R5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCd0YWcnKSksIFsndGFnJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgndG9nJykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3RvZy9mb28nKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWcnKSksCisgICAgICAgICAgICBbJ3RhZyddICogNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vdGFnJykpLCBbJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8vdGFnJykpLCBbJ3RhZyddICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vLyonKSksCisgICAgICAgICAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8uLy8qJykpLAorICAgICAgICAgICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJyovKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJyovLyonKSksCisgICAgICAgICAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnKi90YWcnKSksIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcqLy4vdGFnJykpLCBbJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi90YWcnKSksIFsndGFnJ10gKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi8uL3RhZycpKSwgWyd0YWcnXSAqIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3RhZ1tAY2xhc3NdJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWdbQGNsYXNzPSJhIl0nKSksCisgICAgICAgICAgICBbJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi8vdGFnW0BjbGFzcz0iYiJdJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWdbQGlkXScpKSwKKyAgICAgICAgICAgIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy9zZWN0aW9uW3RhZ10nKSksCisgICAgICAgICAgICBbJ3NlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3NlY3Rpb25bZWxlbWVudF0nKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi4vdGFnJykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vLi4vdGFnJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kYWxsKCdzZWN0aW9uLy8nKSwgZS5maW5kYWxsKCdzZWN0aW9uLy8qJykpCisKKyAgICBkZWYgdGVzdF90ZXN0X2ZpbmRfd2l0aF9ucyhzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MX05TKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgndGFnJykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgie2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyIpKSwKKyAgICAgICAgICAgIFsne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyddICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgiLi8ve2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyIpKSwKKyAgICAgICAgICAgIFsne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyddICogMykKKworICAgIGRlZiB0ZXN0X2JhZF9maW5kKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKFNBTVBMRV9YTUwpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2Nhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCcpOgorICAgICAgICAgICAgZS5maW5kYWxsKCcvdGFnJykKKworICAgIGRlZiB0ZXN0X2ZpbmRfdGhyb3VnaF9FbGVtZW50VHJlZShzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnRUcmVlKGUpLmZpbmQoJ3RhZycpLnRhZywgJ3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuRWxlbWVudFRyZWUoZSkuZmluZHRleHQoJ3RhZycpLCAndGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoRVQuRWxlbWVudFRyZWUoZSkuZmluZGFsbCgndGFnJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDIpCisgICAgICAgICMgdGhpcyBwcm9kdWNlcyBhIHdhcm5pbmcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChFVC5FbGVtZW50VHJlZShlKS5maW5kYWxsKCcvL3RhZycpKSwKKyAgICAgICAgICAgIFsndGFnJ10gKiAzKQorCisKK2NsYXNzIEVsZW1lbnRJdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9pbGlzdChzZWxmLCBlbGVtLCB0YWc9Tm9uZSk6CisgICAgICAgIHJldHVybiBzdW1tYXJpemVfbGlzdChlbGVtLml0ZXIodGFnKSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYyksIFsnaHRtbCcsICdib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MuZmluZCgnYm9keScpKSwgWydib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVyKCkpLnRhZywgJ2h0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLml0ZXJ0ZXh0KCkpLCAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihkb2MuZmluZCgnYm9keScpLml0ZXJ0ZXh0KCkpLAorICAgICAgICAgICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVydGV4dCgpKSwgJ3RoaXMgaXMgYSAnKQorCisgICAgICAgICMgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IKKyAgICAgICAgc291cmNlZmlsZSA9IHNlcmlhbGl6ZShkb2MsIHRvX3N0cmluZz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSlbMF0sICdlbmQnKQorCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdHJlZS5pdGVyKQorCisgICAgICAgICMgSXNzdWUgIzE2OTEzCisgICAgICAgIGRvYyA9IEVULlhNTCgiPHJvb3Q+YSZhbXA7PHN1Yj5iJmFtcDs8L3N1Yj5jJmFtcDs8L3Jvb3Q+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGRvYy5pdGVydGV4dCgpKSwgJ2EmYiZjJicpCisKKyAgICBkZWYgdGVzdF9jb3JuZXJzKHNlbGYpOgorICAgICAgICAjIHNpbmdsZSByb290LCBubyBzdWJlbGVtZW50cworICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYSddKQorCisgICAgICAgICMgb25lIGNoaWxkCisgICAgICAgIGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InXSkKKworICAgICAgICAjIG9uZSBjaGlsZCBhbmQgb25lIGdyYW5kY2hpbGQKKyAgICAgICAgYyA9IEVULlN1YkVsZW1lbnQoYiwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnYicsICdjJ10pCisKKyAgICAgICAgIyB0d28gY2hpbGRyZW4sIG9ubHkgZmlyc3Qgd2l0aCBncmFuZGNoaWxkCisgICAgICAgIGQgPSBFVC5TdWJFbGVtZW50KGEsICdkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InLCAnYycsICdkJ10pCisKKyAgICAgICAgIyByZXBsYWNlIGZpcnN0IGNoaWxkIGJ5IHNlY29uZAorICAgICAgICBhWzBdID0gYVsxXQorICAgICAgICBkZWwgYVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnZCddKQorCisgICAgZGVmIHRlc3RfaXRlcl9ieV90YWcoc2VsZik6CisgICAgICAgIGRvYyA9IEVULlhNTCgnJycKKyAgICAgICAgICAgIDxkb2N1bWVudD4KKyAgICAgICAgICAgICAgICA8aG91c2U+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb20xPC9yb29tPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tMjwvcm9vbT4KKyAgICAgICAgICAgICAgICA8L2hvdXNlPgorICAgICAgICAgICAgICAgIDxzaGVkPm5vdGhpbmcgaGVyZQorICAgICAgICAgICAgICAgIDwvc2hlZD4KKyAgICAgICAgICAgICAgICA8aG91c2U+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb204PC9yb29tPgorICAgICAgICAgICAgICAgIDwvaG91c2U+CisgICAgICAgICAgICA8L2RvY3VtZW50PicnJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYywgJ3Jvb20nKSwgWydyb29tJ10gKiAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYywgJ2hvdXNlJyksIFsnaG91c2UnXSAqIDIpCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXRlciBhbHNvIGFjY2VwdHMgJ3RhZycgYXMgYSBrZXl3b3JkIGFyZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3VtbWFyaXplX2xpc3QoZG9jLml0ZXIodGFnPSdyb29tJykpLAorICAgICAgICAgICAgWydyb29tJ10gKiAzKQorCisgICAgICAgICMgbWFrZSBzdXJlIGJvdGggdGFnPU5vbmUgYW5kIHRhZz0nKicgcmV0dXJuIGFsbCB0YWdzCisgICAgICAgIGFsbF90YWdzID0gWydkb2N1bWVudCcsICdob3VzZScsICdyb29tJywgJ3Jvb20nLAorICAgICAgICAgICAgICAgICAgICAnc2hlZCcsICdob3VzZScsICdyb29tJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MpLCBhbGxfdGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICcqJyksIGFsbF90YWdzKQorCisKK2NsYXNzIFRyZWVCdWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2FtcGxlMSA9ICgnPCFET0NUWVBFIGh0bWwgUFVCTElDJworICAgICAgICAnICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiInCisgICAgICAgICcgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKKyAgICAgICAgJzxodG1sPnRleHQ8ZGl2PnN1YnRleHQ8L2Rpdj50YWlsPC9odG1sPicpCisKKyAgICBzYW1wbGUyID0gJycnPHRvcGxldmVsPnNvbWV0ZXh0PC90b3BsZXZlbD4nJycKKworICAgIGRlZiBfY2hlY2tfc2FtcGxlMV9lbGVtZW50KHNlbGYsIGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnaHRtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50ZXh0LCAndGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWlsLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXR0cmliLCB7fSkKKyAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAgICAgY2hpbGQgPSBjaGlsZHJlblswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLnRhZywgJ2RpdicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQudGV4dCwgJ3N1YnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLnRhaWwsICd0YWlsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC5hdHRyaWIsIHt9KQorCisgICAgZGVmIHRlc3RfZHVtbXlfYnVpbGRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZUR1bW15QnVpbGRlcjoKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBjbGFzcyBEdW1teUJ1aWxkZXIoQmFzZUR1bW15QnVpbGRlcik6CisgICAgICAgICAgICBkYXRhID0gc3RhcnQgPSBlbmQgPSBsYW1iZGEgKmE6IE5vbmUKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PUR1bW15QnVpbGRlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksIDQyKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9QmFzZUR1bW15QnVpbGRlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksIDQyKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9b2JqZWN0KCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlUcmVlQnVpbGRlcihFVC5UcmVlQnVpbGRlcik6CisgICAgICAgICAgICBkZWYgZm9vYmFyKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICogMgorCisgICAgICAgIHRiID0gTXlUcmVlQnVpbGRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGIuZm9vYmFyKDEwKSwgMjApCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YikKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUxX2VsZW1lbnQoZSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfZmFjdG9yeShzZWxmKToKKyAgICAgICAgbHN0ID0gW10KKyAgICAgICAgZGVmIG15ZmFjdG9yeSh0YWcsIGF0dHJpYik6CisgICAgICAgICAgICBub25sb2NhbCBsc3QKKyAgICAgICAgICAgIGxzdC5hcHBlbmQodGFnKQorICAgICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQodGFnLCBhdHRyaWIpCisKKyAgICAgICAgdGIgPSBFVC5UcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9bXlmYWN0b3J5KQorICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTIpCisgICAgICAgIHBhcnNlci5jbG9zZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFsndG9wbGV2ZWwnXSkKKworICAgIGRlZiBfY2hlY2tfZWxlbWVudF9mYWN0b3J5X2NsYXNzKHNlbGYsIGNscyk6CisgICAgICAgIHRiID0gRVQuVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PWNscykKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgY2xzKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUxX2VsZW1lbnQoZSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfZmFjdG9yeV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9jaGVja19lbGVtZW50X2ZhY3RvcnlfY2xhc3MoTXlFbGVtZW50KQorCisgICAgZGVmIHRlc3RfZWxlbWVudF9mYWN0b3J5X3B1cmVfcHl0aG9uX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIE1pbWljayBTaW1wbGVUQUwncyBiZWhhdmlvdXIgKGlzc3VlICMxNjA4OSk6IGJvdGggdmVyc2lvbnMgb2YKKyAgICAgICAgIyBUcmVlQnVpbGRlciBzaG91bGQgYmUgYWJsZSB0byBjb3BlIHdpdGggYSBzdWJjbGFzcyBvZiB0aGUKKyAgICAgICAgIyBwdXJlIFB5dGhvbiBFbGVtZW50IGNsYXNzLgorICAgICAgICBiYXNlID0gRVQuX0VsZW1lbnQKKyAgICAgICAgIyBOb3QgZnJvbSBhIEMgZXh0ZW5zaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZS5fX21vZHVsZV9fLCAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICAgICAgIyBGb3JjZSBzb21lIG11bHRpcGxlIGluaGVyaXRhbmNlIHdpdGggYSBDIGNsYXNzIHRvIG1ha2UgdGhpbmdzCisgICAgICAgICMgbW9yZSBpbnRlcmVzdGluZy4KKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KGJhc2UsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9jaGVja19lbGVtZW50X2ZhY3RvcnlfY2xhc3MoTXlFbGVtZW50KQorCisgICAgZGVmIHRlc3RfZG9jdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRG9jdHlwZVBhcnNlcjoKKyAgICAgICAgICAgIF9kb2N0eXBlID0gTm9uZQorCisgICAgICAgICAgICBkZWYgZG9jdHlwZShzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gKG5hbWUsIHB1YmlkLCBzeXN0ZW0pCisKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZG9jdHlwZQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9RG9jdHlwZVBhcnNlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKSwKKyAgICAgICAgICAgICgnaHRtbCcsICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicsCisgICAgICAgICAgICAgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnKSkKKworCitjbGFzcyBYaW5jbHVkZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfbXlfbG9hZGVyKHNlbGYsIGhyZWYsIHBhcnNlKToKKyAgICAgICAgIyBVc2VkIHRvIGF2b2lkIGEgdGVzdC1kZXBlbmRlbmN5IHByb2JsZW0gd2hlcmUgdGhlIGRlZmF1bHQgbG9hZGVyCisgICAgICAgICMgb2YgRWxlbWVudEluY2x1ZGUgdXNlcyB0aGUgcHlFVCBwYXJzZXIgZm9yIGNFVCB0ZXN0cy4KKyAgICAgICAgaWYgcGFyc2UgPT0gJ3htbCc6CisgICAgICAgICAgICB3aXRoIG9wZW4oaHJlZiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRVQucGFyc2UoZikuZ2V0cm9vdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHRlc3RfeGluY2x1ZGVfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCisgICAgICAgIGRvYyA9IHhpbmNsdWRlX2xvYWRlcignZGVmYXVsdC54bWwnKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvYywgc2VsZi5fbXlfbG9hZGVyKQorICAgICAgICBzID0gc2VyaWFsaXplKGRvYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnN0cmlwKCksICcnJzxkb2N1bWVudD4KKyAgPHA+RXhhbXBsZS48L3A+CisgIDxyb290PgorICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD4KKyAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAorICAgPGVtcHR5LWVsZW1lbnQgLz4KKzwvcm9vdD4KKzwvZG9jdW1lbnQ+JycnKQorCisKK2NsYXNzIFhNTFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHNhbXBsZTEgPSAnPGZpbGU+PGxpbmU+MjI8L2xpbmU+PC9maWxlPicKKyAgICBzYW1wbGUyID0gKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMnCisgICAgICAgICcgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIicKKyAgICAgICAgJyAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+JworICAgICAgICAnPGh0bWw+dGV4dDwvaHRtbD4nKQorCisgICAgZGVmIF9jaGVja19zYW1wbGVfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2ZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMF0udGFnLCAnbGluZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZVswXS50ZXh0LCAnMjInKQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JfYXJncyhzZWxmKToKKyAgICAgICAgIyBQb3NpdGlvbmFsIGFyZ3MuIFRoZSBmaXJzdCAoaHRtbCkgaXMgbm90IHN1cHBvcnRlZCwgYnV0IHNob3VsZCBiZQorICAgICAgICAjIG5ldmVydGhlbGVzcyBjb3JyZWN0bHkgYWNjZXB0ZWQuCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcihOb25lLCBFVC5UcmVlQnVpbGRlcigpLCAndXRmLTgnKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZV9lbGVtZW50KHBhcnNlci5jbG9zZSgpKQorCisgICAgICAgICMgTm93IGFzIGtleXdvcmQgYXJncy4KKyAgICAgICAgcGFyc2VyMiA9IEVULlhNTFBhcnNlcihlbmNvZGluZz0ndXRmLTgnLCBodG1sPVt7fV0sIHRhcmdldD1FVC5UcmVlQnVpbGRlcigpKQorICAgICAgICBwYXJzZXIyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGVfZWxlbWVudChwYXJzZXIyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlQYXJzZXIoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcGFyc2VyID0gTXlQYXJzZXIoKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZV9lbGVtZW50KHBhcnNlci5jbG9zZSgpKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NfZG9jdHlwZShzZWxmKToKKyAgICAgICAgX2RvY3R5cGUgPSBOb25lCisgICAgICAgIGNsYXNzIE15UGFyc2VyV2l0aERvY3R5cGUoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIF9kb2N0eXBlCisgICAgICAgICAgICAgICAgX2RvY3R5cGUgPSAobmFtZSwgcHViaWQsIHN5c3RlbSkKKworICAgICAgICBwYXJzZXIgPSBNeVBhcnNlcldpdGhEb2N0eXBlKCkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9kb2N0eXBlLAorICAgICAgICAgICAgKCdodG1sJywgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJywKKyAgICAgICAgICAgICAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcpKQorCisKK2NsYXNzIE5hbWVzcGFjZVBhcnNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmluZF93aXRoX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgbnNtYXAgPSB7J2gnOiAnaGVsbG8nLCAnZic6ICdmb28nfQorICAgICAgICBkb2MgPSBFVC5mcm9tc3RyaW5nKFNBTVBMRV9YTUxfTlNfRUxFTVMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG9jLmZpbmRhbGwoJ3toZWxsb310YWJsZScsIG5zbWFwKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRvYy5maW5kYWxsKCcuLy97aGVsbG99dGQnLCBuc21hcCkpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb2MuZmluZGFsbCgnLi8ve2Zvb31uYW1lJywgbnNtYXApKSwgMSkKKworCitjbGFzcyBFbGVtZW50U2xpY2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfZWxlbV90YWdzKHNlbGYsIGVsZW1saXN0KToKKyAgICAgICAgcmV0dXJuIFtlLnRhZyBmb3IgZSBpbiBlbGVtbGlzdF0KKworICAgIGRlZiBfc3ViZWxlbV90YWdzKHNlbGYsIGVsZW0pOgorICAgICAgICByZXR1cm4gc2VsZi5fZWxlbV90YWdzKGxpc3QoZWxlbSkpCisKKyAgICBkZWYgX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKHNlbGYsIG51bWNoaWxkcmVuKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIEVsZW1lbnQgd2l0aCBhIHRhZyAnYScsIHdpdGggdGhlIGdpdmVuIGFtb3VudCBvZiBjaGlsZHJlbgorICAgICAgICAgICBuYW1lZCAnYTAnLCAnYTEnIC4uLiBhbmQgc28gb24uCisKKyAgICAgICAgIiIiCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtY2hpbGRyZW4pOgorICAgICAgICAgICAgRVQuU3ViRWxlbWVudChlLCAnYSVzJyAlIGkpCisgICAgICAgIHJldHVybiBlCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9zaW5nbGVfaW5kZXgoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbigxMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMV0udGFnLCAnYTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbLTJdLnRhZywgJ2E4JykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IGVbMTJdKQorCisgICAgZGVmIHRlc3RfZ2V0c2xpY2VfcmFuZ2Uoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzpdKSwgWydhMycsICdhNCcsICdhNSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6Nl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzoxNl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo1XSksIFsnYTMnLCAnYTQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOi0xXSksIFsnYTMnLCAnYTQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Ml0pLCBbJ2EwJywgJ2ExJ10pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbODoxMDoxXSksIFsnYTgnLCAnYTknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6OjNdKSwgWydhMCcsICdhMycsICdhNicsICdhOSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6OF0pLCBbJ2EwJywgJ2E4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMTo6OF0pLCBbJ2ExJywgJ2E5J10pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9uZWdhdGl2ZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Oi0xXSksIFsnYTMnLCAnYTInLCAnYTEnLCAnYTAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Oi0yXSksIFsnYTMnLCAnYTEnXSkKKworICAgIGRlZiB0ZXN0X2RlbHNsaWNlKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZGVsIGVbMDoyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMicsICdhMyddKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVswOl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFtdKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVs6Oi0xXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgW10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzo6LTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2EyJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzE6OjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2EyJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDIpCisgICAgICAgIGRlbCBlWzo6Ml0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTEnXSkKKworCitjbGFzcyBJT1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgZW5jb2RpbmcgaXNzdWVzLgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gImFiYyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZz5hYmM8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+YWJjPC90YWc+JykKKyAgICAgICAgZm9yIGVuYyBpbiAoImlzby04ODU5LTEiLCAidXRmLTE2IiwgInV0Zi0zMiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9ZW5jKSwKKyAgICAgICAgICAgICAgICAgICAgKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIgorICAgICAgICAgICAgICAgICAgICAgIjx0YWc+YWJjPC90YWc+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGVsZW0udGV4dCA9ICI8JlwiXCc+IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZz4mbHQ7JmFtcDtcIicmZ3Q7PC90YWc+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGVsZW0uYXR0cmliWyJrZXkiXSA9ICI8JlwiXCc+IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZyBrZXk9XCImbHQ7JmFtcDsmcXVvdDsnJmd0O1wiIC8+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGVsZW0udGV4dCA9ICdceGU1XHhmNlx4ZjY8PicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnPlx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgYic8dGFnPiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgZm9yIGVuYyBpbiAoImlzby04ODU5LTEiLCAidXRmLTE2IiwgInV0Zi0zMiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9ZW5jKSwKKyAgICAgICAgICAgICAgICAgICAgKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIgorICAgICAgICAgICAgICAgICAgICAgIjx0YWc+w6XDtsO2Jmx0OyZndDs8L3RhZz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS5hdHRyaWJbImtleSJdID0gJ1x4ZTVceGY2XHhmNjw+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSJceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSImIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTE2bGUiLCAidXRmLTE2YmUiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZyBrZXk9XCLDpcO2w7YmbHQ7Jmd0O1wiIC8+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHRyZWUud3JpdGUoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fdGV4dF9maWxlKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fYmluYXJ5X2ZpbGUoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGInJyc8c2l0ZSAvPicnJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2JpbmFyeV9maWxlX3dpdGhfYm9tKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgIyB0ZXN0IEJPTSB3cml0aW5nIHRvIGJ1ZmZlcmVkIGZpbGUKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIHRyZWUud3JpdGUoZiwgZW5jb2Rpbmc9J3V0Zi0xNicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgJycnPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTE2Jz8+XG4nJycKKyAgICAgICAgICAgICAgICAgICAgJycnPHNpdGUgLz4nJycuZW5jb2RlKCJ1dGYtMTYiKSkKKyAgICAgICAgIyB0ZXN0IEJPTSB3cml0aW5nIHRvIG5vbi1idWZmZXJlZCBmaWxlCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicsIGJ1ZmZlcmluZz0wKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmLCBlbmNvZGluZz0ndXRmLTE2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAnJyc8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtMTYnPz5cbicnJworICAgICAgICAgICAgICAgICAgICAnJyc8c2l0ZSAvPicnJy5lbmNvZGUoInV0Zi0xNiIpKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3N0cmluZ2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygnJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICB0cmVlLnBhcnNlKHN0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3N0cmluZ2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB0cmVlLndyaXRlKHN0cmVhbSwgZW5jb2Rpbmc9J3VuaWNvZGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLCAnJyc8c2l0ZSAvPicnJykKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9ieXRlc2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKGInJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICB0cmVlLnBhcnNlKHJhdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2J5dGVzaW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgdHJlZS53cml0ZShyYXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3LmdldHZhbHVlKCksIGInJyc8c2l0ZSAvPicnJykKKworICAgIGNsYXNzIGR1bW15OgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fdXNlcl90ZXh0X3JlYWRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oJycnPD94bWwgdmVyc2lvbj0iMS4wIj8+PHNpdGU+PC9zaXRlPicnJykKKyAgICAgICAgcmVhZGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHJlYWRlci5yZWFkID0gc3RyZWFtLnJlYWQKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKCkKKyAgICAgICAgdHJlZS5wYXJzZShyZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5nZXRyb290KCkudGFnLCAnc2l0ZScpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b191c2VyX3RleHRfd3JpdGVyKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgd3JpdGVyLndyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIHRyZWUud3JpdGUod3JpdGVyLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVlKCksICcnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3VzZXJfYmluYXJ5X3JlYWRlcihzZWxmKToKKyAgICAgICAgcmF3ID0gaW8uQnl0ZXNJTyhiJycnPD94bWwgdmVyc2lvbj0iMS4wIj8+PHNpdGU+PC9zaXRlPicnJykKKyAgICAgICAgcmVhZGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHJlYWRlci5yZWFkID0gcmF3LnJlYWQKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKCkKKyAgICAgICAgdHJlZS5wYXJzZShyZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5nZXRyb290KCkudGFnLCAnc2l0ZScpCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZSgpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b191c2VyX2JpbmFyeV93cml0ZXIoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgd3JpdGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHdyaXRlci53cml0ZSA9IHJhdy53cml0ZQorICAgICAgICB0cmVlLndyaXRlKHdyaXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXcuZ2V0dmFsdWUoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fdXNlcl9iaW5hcnlfd3JpdGVyX3dpdGhfYm9tKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgcmF3ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHdyaXRlciA9IHNlbGYuZHVtbXkoKQorICAgICAgICB3cml0ZXIud3JpdGUgPSByYXcud3JpdGUKKyAgICAgICAgd3JpdGVyLnNlZWthYmxlID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHdyaXRlci50ZWxsID0gcmF3LnRlbGwKKyAgICAgICAgdHJlZS53cml0ZSh3cml0ZXIsIGVuY29kaW5nPSJ1dGYtMTYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhdy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICcnJzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi0xNic/PlxuJycnCisgICAgICAgICAgICAgICAgJycnPHNpdGUgLz4nJycuZW5jb2RlKCJ1dGYtMTYiKSkKKworICAgIGRlZiB0ZXN0X3Rvc3RyaW5nbGlzdF9pbnZhcmlhbnQoc2VsZik6CisgICAgICAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKCc8dGFnPmZvbzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBFVC50b3N0cmluZyhyb290LCAndW5pY29kZScpLAorICAgICAgICAgICAgJycuam9pbihFVC50b3N0cmluZ2xpc3Qocm9vdCwgJ3VuaWNvZGUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBFVC50b3N0cmluZyhyb290LCAndXRmLTE2JyksCisgICAgICAgICAgICBiJycuam9pbihFVC50b3N0cmluZ2xpc3Qocm9vdCwgJ3V0Zi0xNicpKSkKKworCitjbGFzcyBQYXJzZUVycm9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yKCksIFN5bnRheEVycm9yKQorCisgICAgZGVmIF9nZXRfZXJyb3Ioc2VsZiwgcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIEVULmZyb21zdHJpbmcocykKKyAgICAgICAgZXhjZXB0IEVULlBhcnNlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJldHVybiBlCisKKyAgICBkZWYgdGVzdF9lcnJvcl9wb3NpdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2ZvbycpLnBvc2l0aW9uLCAoMSwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZ2V0X2Vycm9yKCc8dGFnPiZmb287PC90YWc+JykucG9zaXRpb24sICgxLCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2Zvb2JhcjwnKS5wb3NpdGlvbiwgKDEsIDYpKQorCisgICAgZGVmIHRlc3RfZXJyb3JfY29kZShzZWxmKToKKyAgICAgICAgaW1wb3J0IHhtbC5wYXJzZXJzLmV4cGF0LmVycm9ycyBhcyBFUlJPUlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2ZvbycpLmNvZGUsCisgICAgICAgICAgICAgICAgRVJST1JTLmNvZGVzW0VSUk9SUy5YTUxfRVJST1JfU1lOVEFYXSkKKworCitjbGFzcyBLZXl3b3JkQXJnc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB2YXJpb3VzIGlzc3VlcyB3aXRoIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCB0byBFVC5FbGVtZW50CisgICAgIyBjb25zdHJ1Y3RvciBhbmQgbWV0aG9kcworICAgIGRlZiB0ZXN0X2lzc3VlMTQ4MTgoc2VsZik6CisgICAgICAgIHggPSBFVC5YTUwoIjxhPmZvbzwvYT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZCgnYScsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZpbmR0ZXh0KCdhJywgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kdGV4dChwYXRoPSdhJywgZGVmYXVsdD1Ob25lLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZGFsbCgnYScsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZGFsbChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHguaXRlcmZpbmQoJ2EnLCBOb25lKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh4Lml0ZXJmaW5kKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnQoJ2EnKS5hdHRyaWIsIHt9KQorICAgICAgICBlbGVtZW50cyA9IFsKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGF0dHJpYj1kaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIpLCBpZD0iZm9vIiksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgaHJlZj0iIyIsIGlkPSJmb28iKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIiksIGhyZWY9IiMiLCBpZD0iZm9vIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGUgaW4gZWxlbWVudHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnYScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXR0cmliLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpCisKKyAgICAgICAgZTIgPSBFVC5TdWJFbGVtZW50KGVsZW1lbnRzWzBdLCAnZm9vYmFyJywgYXR0cmliPXsna2V5MSc6ICd2YWx1ZTEnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMi5hdHRyaWJbJ2tleTEnXSwgJ3ZhbHVlMScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ211c3QgYmUgZGljdCwgbm90IHN0cicpOgorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsICJJJ20gbm90IGEgZGljdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtdXN0IGJlIGRpY3QsIG5vdCBzdHInKToKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBhdHRyaWI9IkknbSBub3QgYSBkaWN0IikKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBOb0FjY2VsZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBub3QgcHlFVDoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdvbmx5IGZvciB0aGUgUHl0aG9uIHZlcnNpb24nKQorCisgICAgIyBUZXN0IHRoYXQgdGhlIEMgYWNjZWxlcmF0b3Igd2FzIG5vdCBpbXBvcnRlZCBmb3IgcHlFVAorICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X3B5RVQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHlFVC5FbGVtZW50Ll9fbW9kdWxlX18sICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5RVQuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xODk0LDQ0ICsyNDY5LDY5IEBACiAgICAgICAgICAgICAoIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCiAgICAgICAgICAgICAgIlVzZSAuKyBpbnN0ZWFkLiIsIERlcHJlY2F0aW9uV2FybmluZyksCiAgICAgICAgICAgICAoIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCi0gICAgICAgICAgICAgIlVzZSAuKyBpbnN0ZWFkLiIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpLAotICAgICAgICAgICAgIyBYTUxQYXJzZXIuZG9jdHlwZSgpIGlzIGRlcHJlY2F0ZWQuCi0gICAgICAgICAgICAoIlRoaXMgbWV0aG9kIG9mIFhNTFBhcnNlciBpcyBkZXByZWNhdGVkLiAgRGVmaW5lIGRvY3R5cGUuLiAiCi0gICAgICAgICAgICAgIm1ldGhvZCBvbiB0aGUgVHJlZUJ1aWxkZXIgdGFyZ2V0LiIsIERlcHJlY2F0aW9uV2FybmluZykpCisgICAgICAgICAgICAgIlVzZSAuKyBpbnN0ZWFkLiIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKQogICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MgPSBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCpkZXByZWNhdGlvbnMsIHF1aWV0PXF1aWV0KQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlCi0gICAgICAgIHNlbGYuX25zbWFwID0gRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAKLSAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoLl9jYWNoZQorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKKyAgICAgICAgc2VsZi5fbnNtYXAgPSBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UuX25hbWVzcGFjZV9tYXAKICAgICAgICAgIyBDb3B5IHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBtYXBwaW5nCi0gICAgICAgIEVsZW1lbnRUcmVlLl9uYW1lc3BhY2VfbWFwID0gc2VsZi5fbnNtYXAuY29weSgpCisgICAgICAgIHNlbGYuX25zbWFwX2NvcHkgPSBzZWxmLl9uc21hcC5jb3B5KCkKICAgICAgICAgIyBDb3B5IHRoZSBwYXRoIGNhY2hlIChzaG91bGQgYmUgZW1wdHkpCi0gICAgICAgIEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUuY29weSgpCisgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBFbGVtZW50UGF0aC5fY2FjaGUKKyAgICAgICAgRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZS5jb3B5KCkKICAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzLl9fZW50ZXJfXygpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAgICAgICAgICMgUmVzdG9yZSBtYXBwaW5nIGFuZCBwYXRoIGNhY2hlCi0gICAgICAgIEVsZW1lbnRUcmVlLl9uYW1lc3BhY2VfbWFwID0gc2VsZi5fbnNtYXAKLSAgICAgICAgRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZQorICAgICAgICBzZWxmLl9uc21hcC5jbGVhcigpCisgICAgICAgIHNlbGYuX25zbWFwLnVwZGF0ZShzZWxmLl9uc21hcF9jb3B5KQorICAgICAgICBFbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCiAgICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncy5fX2V4aXRfXygqYXJncykKIAogCi1kZWYgdGVzdF9tYWluKG1vZHVsZV9uYW1lPSd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCitkZWYgdGVzdF9tYWluKG1vZHVsZT1Ob25lKToKKyAgICAjIFdoZW4gaW52b2tlZCB3aXRob3V0IGEgbW9kdWxlLCBydW5zIHRoZSBQeXRob24gRVQgdGVzdHMgYnkgbG9hZGluZyBweUVULgorICAgICMgT3RoZXJ3aXNlLCB1c2VzIHRoZSBnaXZlbiBtb2R1bGUgYXMgdGhlIEVULgorICAgIGdsb2JhbCBweUVUCisgICAgcHlFVCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5FbGVtZW50VHJlZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD1bJ19lbGVtZW50dHJlZSddKQorICAgIGlmIG1vZHVsZSBpcyBOb25lOgorICAgICAgICBtb2R1bGUgPSBweUVUCiAKLSAgICB1c2VfcHlfbW9kdWxlID0gKG1vZHVsZV9uYW1lID09ICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQorICAgIGdsb2JhbCBFVAorICAgIEVUID0gbW9kdWxlCiAKLSAgICAjIFRoZSBzYW1lIGRvY3Rlc3RzIGFyZSB1c2VkIGZvciBib3RoIHRoZSBQeXRob24gYW5kIHRoZSBDIGltcGxlbWVudGF0aW9ucwotICAgIGFzc2VydCB0ZXN0X3htbF9ldHJlZS5FVC5fX25hbWVfXyA9PSBtb2R1bGVfbmFtZQorICAgIHRlc3RfY2xhc3NlcyA9IFsKKyAgICAgICAgRWxlbWVudFNsaWNpbmdUZXN0LAorICAgICAgICBCYXNpY0VsZW1lbnRUZXN0LAorICAgICAgICBJT1Rlc3QsCisgICAgICAgIFBhcnNlRXJyb3JUZXN0LAorICAgICAgICBYaW5jbHVkZVRlc3QsCisgICAgICAgIEVsZW1lbnRUcmVlVGVzdCwKKyAgICAgICAgRWxlbWVudEZpbmRUZXN0LAorICAgICAgICBFbGVtZW50SXRlclRlc3QsCisgICAgICAgIFRyZWVCdWlsZGVyVGVzdCwKKyAgICAgICAgXQogCi0gICAgIyBYWFggdGhlIEMgbW9kdWxlIHNob3VsZCBnaXZlIHRoZSBzYW1lIHdhcm5pbmdzIGFzIHRoZSBQeXRob24gbW9kdWxlCi0gICAgd2l0aCBDbGVhbkNvbnRleHQocXVpZXQ9bm90IHVzZV9weV9tb2R1bGUpOgotICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICAjIFRoZXNlIHRlc3RzIHdpbGwgb25seSBydW4gZm9yIHRoZSBwdXJlLVB5dGhvbiB2ZXJzaW9uIHRoYXQgZG9lc24ndCBpbXBvcnQKKyAgICAjIF9lbGVtZW50dHJlZS4gV2UgY2FuJ3QgdXNlIHNraXBVbmxlc3MgaGVyZSwgYmVjYXVzZSBweUVUIGlzIGZpbGxlZCBpbiBvbmx5CisgICAgIyBhZnRlciB0aGUgbW9kdWxlIGlzIGxvYWRlZC4KKyAgICBpZiBweUVUIGlzIG5vdCBFVDoKKyAgICAgICAgdGVzdF9jbGFzc2VzLmV4dGVuZChbCisgICAgICAgICAgICBOb0FjY2VsZXJhdG9yVGVzdCwKKyAgICAgICAgICAgIF0pCiAKLSAgICAjIFRoZSBtb2R1bGUgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGJ5IHRoZSB0ZXN0cwotICAgIGFzc2VydCB0ZXN0X3htbF9ldHJlZS5FVC5fX25hbWVfXyA9PSBtb2R1bGVfbmFtZQorICAgIHRyeToKKyAgICAgICAgIyBYWFggdGhlIEMgbW9kdWxlIHNob3VsZCBnaXZlIHRoZSBzYW1lIHdhcm5pbmdzIGFzIHRoZSBQeXRob24gbW9kdWxlCisgICAgICAgIHdpdGggQ2xlYW5Db250ZXh0KHF1aWV0PShweUVUIGlzIG5vdCBFVCkpOgorICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKKyAgICAgICAgICAgIHN1cHBvcnQucnVuX2RvY3Rlc3Qoc3lzLm1vZHVsZXNbX19uYW1lX19dLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICBmaW5hbGx5OgorICAgICAgICAjIGRvbid0IGludGVyZmVyZSB3aXRoIHN1YnNlcXVlbnQgdGVzdHMKKyAgICAgICAgRVQgPSBweUVUID0gTm9uZQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CmluZGV4IDJmZjExOGYuLmU0NGM2Y2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQpAQCAtMSwzNiArMSwxMSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi0KK2ltcG9ydCBzeXMsIHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzJHCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWNFVCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgneG1sLmV0cmVlLmNFbGVtZW50VHJlZScpCi0KLQotIyBjRWxlbWVudFRyZWUgc3BlY2lmaWMgdGVzdHMKLQotZGVmIHNhbml0eSgpOgotICAgIHIiIiIKLSAgICBJbXBvcnQgc2FuaXR5LgotCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBjRWxlbWVudFRyZWUKLQotICAgIElzc3VlICM2Njk3LgotCi0gICAgPj4+IGUgPSBjRWxlbWVudFRyZWUuRWxlbWVudCgnYScpCi0gICAgPj4+IGdldGF0dHIoZSwgJ1x1RDgwMCcpICAgICAgICAgICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIC4uLgotICAgIFVuaWNvZGVFbmNvZGVFcnJvcjogLi4uCi0KLSAgICA+Pj4gcCA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoKQotICAgID4+PiBwLnZlcnNpb24uc3BsaXQoKVswXQotICAgICdFeHBhdCcKLSAgICA+Pj4gZ2V0YXR0cihwLCAnXHVEODAwJykKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIC4uLgotICAgIEF0dHJpYnV0ZUVycm9yOiAnWE1MUGFyc2VyJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnXHVkODAwJwotICAgICIiIgorY0VUID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgneG1sLmV0cmVlLkVsZW1lbnRUcmVlJywgZnJlc2g9WydfZWxlbWVudHRyZWUnXSkKK2NFVF9hbGlhcyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5jRWxlbWVudFRyZWUnLCBmcmVzaD1bJ19lbGVtZW50dHJlZScsICd4bWwuZXRyZWUnXSkKIAogCiBjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDcsMjcgKzIyLDY0IEBACiAgICAgICAgICAgICBkYXRhID0gTm9uZQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitjbGFzcyBUZXN0QWxpYXNXb3JraW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhhdCB0aGUgY0VUIGFsaWFzIG1vZHVsZSBpcyBhbGl2ZQorICAgIGRlZiB0ZXN0X2FsaWFzX3dvcmtpbmcoc2VsZik6CisgICAgICAgIGUgPSBjRVRfYWxpYXMuRWxlbWVudCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2ZvbycpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY0VULCAncmVxdWlyZXMgX2VsZW1lbnR0cmVlJykKK2NsYXNzIFRlc3RBY2NlbGVyYXRvckltcG9ydGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhhdCB0aGUgQyBhY2NlbGVyYXRvciB3YXMgaW1wb3J0ZWQsIGFzIGV4cGVjdGVkCisgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfY0VUKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNFVC5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICdfZWxlbWVudHRyZWUnKQorCisgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfY0VUX2FsaWFzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNFVF9hbGlhcy5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICdfZWxlbWVudHRyZWUnKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitAc3VwcG9ydC5jcHl0aG9uX29ubHkKK2NsYXNzIFNpemVvZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5lbGVtZW50c2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzVQJykKKyAgICAgICAgIyBleHRyYQorICAgICAgICBzZWxmLmV4dHJhID0gc3RydWN0LmNhbGNzaXplKCdQaWlQNFAnKQorCisgICAgY2hlY2tfc2l6ZW9mID0gc3VwcG9ydC5jaGVja19zaXplb2YKKworICAgIGRlZiB0ZXN0X2VsZW1lbnQoc2VsZik6CisgICAgICAgIGUgPSBjRVQuRWxlbWVudCgnYScpCisgICAgICAgIHNlbGYuY2hlY2tfc2l6ZW9mKGUsIHNlbGYuZWxlbWVudHNpemUpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X3dpdGhfYXR0cmliKHNlbGYpOgorICAgICAgICBlID0gY0VULkVsZW1lbnQoJ2EnLCBocmVmPSdhYm91dDonKQorICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplICsgc2VsZi5leHRyYSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfd2l0aF9jaGlsZHJlbihzZWxmKToKKyAgICAgICAgZSA9IGNFVC5FbGVtZW50KCdhJykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBjRVQuU3ViRWxlbWVudChlLCAnc3BhbicpCisgICAgICAgICMgc2hvdWxkIGhhdmUgc3BhY2UgZm9yIDggY2hpbGRyZW4gbm93CisgICAgICAgIHNlbGYuY2hlY2tfc2l6ZW9mKGUsIHNlbGYuZWxlbWVudHNpemUgKyBzZWxmLmV4dHJhICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmNhbGNzaXplKCc4UCcpKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZSwgdGVzdF94bWxfZXRyZWVfYwogCiAgICAgIyBSdW4gdGhlIHRlc3RzIHNwZWNpZmljIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uCi0gICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3htbF9ldHJlZV9jLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgTWlzY1Rlc3RzLAorICAgICAgICBUZXN0QWxpYXNXb3JraW5nLAorICAgICAgICBUZXN0QWNjZWxlcmF0b3JJbXBvcnRlZCwKKyAgICAgICAgU2l6ZW9mVGVzdCwKKyAgICAgICAgKQogCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWlzY1Rlc3RzKQorICAgICMgUnVuIHRoZSBzYW1lIHRlc3Qgc3VpdGUgYXMgdGhlIFB5dGhvbiBtb2R1bGUKKyAgICB0ZXN0X3htbF9ldHJlZS50ZXN0X21haW4obW9kdWxlPWNFVCkKIAotICAgICMgQXNzaWduIHRoZSBDIGltcGxlbWVudGF0aW9uIGJlZm9yZSBydW5uaW5nIHRoZSBkb2N0ZXN0cwotICAgICMgUGF0Y2ggdGhlIF9fbmFtZV9fLCB0byBwcmV2ZW50IGNvbmZ1c2lvbiB3aXRoIHRoZSBwdXJlIFB5dGhvbiB0ZXN0Ci0gICAgcHlFVCA9IHRlc3RfeG1sX2V0cmVlLkVUCi0gICAgcHlfX25hbWVfXyA9IHRlc3RfeG1sX2V0cmVlLl9fbmFtZV9fCi0gICAgdGVzdF94bWxfZXRyZWUuRVQgPSBjRVQKLSAgICBpZiBfX25hbWVfXyAhPSAnX19tYWluX18nOgotICAgICAgICB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXyA9IF9fbmFtZV9fCi0gICAgdHJ5OgotICAgICAgICAjIFJ1biB0aGUgc2FtZSB0ZXN0IHN1aXRlIGFzIHhtbC5ldHJlZS5FbGVtZW50VHJlZQotICAgICAgICB0ZXN0X3htbF9ldHJlZS50ZXN0X21haW4obW9kdWxlX25hbWU9J3htbC5ldHJlZS5jRWxlbWVudFRyZWUnKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHRlc3RfeG1sX2V0cmVlLkVUID0gcHlFVAotICAgICAgICB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXyA9IHB5X19uYW1lX18KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQppbmRleCAzODE0MTkxLi4xNmY4NWM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQpAQCAtMjQsNiArMjQsOCBAQAogICAgICAgICAgICdhc2hvcnRsb25nJzogMiwKICAgICAgICAgICAnYW5vdGhlcmxpc3QnOiBbJy56eXguNDEnXSwKICAgICAgICAgICAnYWJhc2U2NCc6IHhtbHJwY2xpYi5CaW5hcnkoYiJteSBkb2cgaGFzIGZsZWFzIiksCisgICAgICAgICAgJ2I2NGJ5dGVzJzogYiJteSBkb2cgaGFzIGZsZWFzIiwKKyAgICAgICAgICAnYjY0Ynl0ZWFycmF5JzogYnl0ZWFycmF5KGIibXkgZG9nIGhhcyBmbGVhcyIpLAogICAgICAgICAgICdib29sZWFuJzogRmFsc2UsCiAgICAgICAgICAgJ3VuaWNvZGUnOiAnXHU0MDAwXHU2MDAwXHU4MDAwJywKICAgICAgICAgICAndWtleVx1NDAwMCc6ICdyZWd1bGFyIHZhbHVlJywKQEAgLTQ0LDI3ICs0Niw1NCBAQAogICAgIGRlZiB0ZXN0X2R1bXBfYmFyZV9kYXRldGltZShzZWxmKToKICAgICAgICAgIyBUaGlzIGNoZWNrcyB0aGF0IGFuIHVud3JhcHBlZCBkYXRldGltZS5kYXRlIG9iamVjdCBjYW4gYmUgaGFuZGxlZAogICAgICAgICAjIGJ5IHRoZSBtYXJzaGFsbGluZyBjb2RlLiAgVGhpcyBjYW4ndCBiZSBkb25lIHZpYSB0ZXN0X2R1bXBfbG9hZCgpCi0gICAgICAgICMgc2luY2Ugd2l0aCB1c2VfZGF0ZXRpbWUgc2V0IHRvIDEgdGhlIHVubWFyc2hhbGxlciB3b3VsZCBjcmVhdGUKKyAgICAgICAgIyBzaW5jZSB3aXRoIHVzZV9idWlsdGluX3R5cGVzIHNldCB0byAxIHRoZSB1bm1hcnNoYWxsZXIgd291bGQgY3JlYXRlCiAgICAgICAgICMgZGF0ZXRpbWUgb2JqZWN0cyBmb3IgdGhlICdkYXRldGltZVsxMjNdJyBrZXlzIGFzIHdlbGwKICAgICAgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgyMDA1LCAyLCAxMCwgMTEsIDQxLCAyMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQogICAgICAgICBzID0geG1scnBjbGliLmR1bXBzKChkdCwpKQotICAgICAgICAobmV3ZHQsKSwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgTm9uZSkKIAotICAgICAgICAobmV3ZHQsKSwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIHhtbHJwY2xpYi5EYXRlVGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPUZhbHNlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgeG1scnBjbGliLkRhdGVUaW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCiAKICAgICBkZWYgdGVzdF9kYXRldGltZV9iZWZvcmVfMTkwMChzZWxmKToKICAgICAgICAgIyBzYW1lIGFzIGJlZm9yZSBidXQgd2l0aCBhIGRhdGUgYmVmb3JlIDE5MDAKICAgICAgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgxLCAgMiwgMTAsIDExLCA0MSwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMDAwMTAyMTBUMTE6NDE6MjMnKSkKICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygoZHQsKSkKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIE5vbmUpCiAKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMDAwMTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCB4bWxycGNsaWIuRGF0ZVRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCiAKICAgICBkZWYgdGVzdF9idWdfMTE2NDkxMiAoc2VsZik6CiAgICAgICAgIGQgPSB4bWxycGNsaWIuRGF0ZVRpbWUoKQpAQCAtMTI1LDYgKzE1NCwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtLmR1bXBfaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxycGNsaWIuTUlOSU5ULTEsIGR1bW15X3dyaXRlKQogCisgICAgZGVmIHRlc3RfZHVtcF9kb3VibGUoc2VsZik6CisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoMiAqKiAzNCksKSkKKyAgICAgICAgeG1scnBjbGliLmR1bXBzKChmbG9hdCh4bWxycGNsaWIuTUFYSU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCh4bWxycGNsaWIuTUlOSU5UKSkpCisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoeG1scnBjbGliLk1BWElOVCArIDQyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCh4bWxycGNsaWIuTUlOSU5UIC0gNDIpKSkKKworICAgICAgICBkZWYgZHVtbXlfd3JpdGUocyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbSA9IHhtbHJwY2xpYi5NYXJzaGFsbGVyKCkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUFYSU5ULCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUlOSU5ULCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUFYSU5UICsgNDIsIGR1bW15X3dyaXRlKQorICAgICAgICBtLmR1bXBfZG91YmxlKHhtbHJwY2xpYi5NSU5JTlQgLSA0MiwgZHVtbXlfd3JpdGUpCisKICAgICBkZWYgdGVzdF9kdW1wX25vbmUoc2VsZik6CiAgICAgICAgIHZhbHVlID0gYWxpc3QgKyBbTm9uZV0KICAgICAgICAgYXJnMSA9IChhbGlzdCArIFtOb25lXSwpCkBAIC0xMzMsNiArMTc4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbHJwY2xpYi5sb2FkcyhzdHJnKVswXVswXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4bWxycGNsaWIuZHVtcHMsIChhcmcxLCkpCiAKKyAgICBkZWYgdGVzdF9kdW1wX2J5dGVzKHNlbGYpOgorICAgICAgICBzYW1wbGUgPSBiIm15IGRvZyBoYXMgZmxlYXMiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FtcGxlLCB4bWxycGNsaWIuQmluYXJ5KHNhbXBsZSkpCisgICAgICAgIGZvciB0eXBlXyBpbiBieXRlcywgYnl0ZWFycmF5LCB4bWxycGNsaWIuQmluYXJ5OgorICAgICAgICAgICAgdmFsdWUgPSB0eXBlXyhzYW1wbGUpCisgICAgICAgICAgICBzID0geG1scnBjbGliLmR1bXBzKCh2YWx1ZSwpKQorCisgICAgICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgICAgIChuZXd2YWx1ZSwpID0gcmVzdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3ZhbHVlLCBzYW1wbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3dmFsdWUpLCBieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKyAgICAgICAgICAgIChuZXd2YWx1ZSwpID0gcmVzdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3ZhbHVlLCBzYW1wbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3dmFsdWUpLCB4bWxycGNsaWIuQmluYXJ5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTQwLDkgKzIwNCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaG9zdC50bGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQXV0aG9yaXphdGlvbicsICdCYXNpYyBkWE5sY2c9PScpXSwge30pKQogCi0gICAgZGVmIHRlc3RfZHVtcF9ieXRlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4bWxycGNsaWIuZHVtcHMsIChiIm15IGRvZyBoYXMgZmxlYXMiLCkpCi0KICAgICBkZWYgdGVzdF9zc2xfcHJlc2VuY2Uoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBzc2wKQEAgLTk4MCwxMCArMTA0MSw0NCBAQAogICAgICAgICAgICAgbGVuKGNvbnRlbnQpKQogCiAKK2NsYXNzIFVzZUJ1aWx0aW5UeXBlc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3VzZV9idWlsdGluX3R5cGVzKHNlbGYpOgorICAgICAgICAjIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18gYWNjZXB0cyB1c2VfYnVpbHRpbl90eXBlcywgd2hpY2gKKyAgICAgICAgIyBtYWtlcyBhbGwgZGlzcGF0Y2ggb2YgYmluYXJ5IGRhdGEgYXMgYnl0ZXMgaW5zdGFuY2VzLCBhbmQgYWxsCisgICAgICAgICMgZGlzcGF0Y2ggb2YgZGF0ZXRpbWUgYXJndW1lbnQgYXMgZGF0ZXRpbWUuZGF0ZXRpbWUgaW5zdGFuY2VzLgorICAgICAgICBzZWxmLmxvZyA9IFtdCisgICAgICAgIGV4cGVjdGVkX2J5dGVzID0gYiJteSBkb2cgaGFzIGZsZWFzIgorICAgICAgICBleHBlY3RlZF9kYXRlID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwOCwgNSwgMjYsIDE4LCAyNSwgMTIpCisgICAgICAgIG1hcnNoYWxlZCA9IHhtbHJwY2xpYi5kdW1wcygoZXhwZWN0ZWRfYnl0ZXMsIGV4cGVjdGVkX2RhdGUpLCAnZm9vYmFyJykKKyAgICAgICAgZGVmIGZvb2JhcigqYXJncyk6CisgICAgICAgICAgICBzZWxmLmxvZy5leHRlbmQoYXJncykKKyAgICAgICAgaGFuZGxlciA9IHhtbHJwYy5zZXJ2ZXIuU2ltcGxlWE1MUlBDRGlzcGF0Y2hlcigKKyAgICAgICAgICAgIGFsbG93X25vbmU9VHJ1ZSwgZW5jb2Rpbmc9Tm9uZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgaGFuZGxlci5yZWdpc3Rlcl9mdW5jdGlvbihmb29iYXIpCisgICAgICAgIGhhbmRsZXIuX21hcnNoYWxlZF9kaXNwYXRjaChtYXJzaGFsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYubG9nKSwgMikKKyAgICAgICAgbXlieXRlcywgbXlkYXRlID0gc2VsZi5sb2cKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvZywgW2V4cGVjdGVkX2J5dGVzLCBleHBlY3RlZF9kYXRlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG15ZGF0ZSksIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobXlieXRlcyksIGJ5dGVzKQorCisgICAgZGVmIHRlc3RfY2dpaGFuZGxlcl9oYXNfdXNlX2J1aWx0aW5fdHlwZXNfZmxhZyhzZWxmKToKKyAgICAgICAgaGFuZGxlciA9IHhtbHJwYy5zZXJ2ZXIuQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIodXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhbmRsZXIudXNlX2J1aWx0aW5fdHlwZXMpCisKKyAgICBkZWYgdGVzdF94bWxycGNzZXJ2ZXJfaGFzX3VzZV9idWlsdGluX3R5cGVzX2ZsYWcoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHhtbHJwYy5zZXJ2ZXIuU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgMCksCisgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci51c2VfYnVpbHRpbl90eXBlcykKKworCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKICAgICB4bWxycGNfdGVzdHMgPSBbWE1MUlBDVGVzdENhc2UsIEhlbHBlclRlc3RDYXNlLCBEYXRlVGltZVRlc3RDYXNlLAogICAgICAgICAgQmluYXJ5VGVzdENhc2UsIEZhdWx0VGVzdENhc2VdCisgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKFNpbXBsZVNlcnZlclRlc3RDYXNlKQogICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoS2VlcGFsaXZlU2VydmVyVGVzdENhc2UxKQogICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoS2VlcGFsaXZlU2VydmVyVGVzdENhc2UyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGQ3MmY4YWMuLmRmYjVmOWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAKLWltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IGVycm5vCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAgICAgIyBQZXJmb3JtIGEgbWluaW1hbCBzYW5pdHkgY2hlY2sgb24gdGhlIHJlc3VsdCwganVzdCB0byBiZSBzdXJlCiAgICAgICAgICMgdGhlIHJlcXVlc3QgbWVhbnMgd2hhdCB3ZSB0aGluayBpdCBtZWFucy4KLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJ1aWxkZXJzLCBjb2xsZWN0aW9ucy5TZXF1ZW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJ1aWxkZXJzLCBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShbeCBmb3IgeCBpbiBidWlsZGVycyBpZiAiMy54IiBpbiB4XSwgYnVpbGRlcnMpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CmluZGV4IGUwNzM4MGQuLmFjNjk4M2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKQEAgLTEsOSArMSwzIEBACi0jIFdlIGNhbiB0ZXN0IHBhcnQgb2YgdGhlIG1vZHVsZSB3aXRob3V0IHpsaWIuCi10cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMTksNyArMTMsNyBAQAogZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQsIHJhbmRvbQogZnJvbSB1bml0dGVzdCBpbXBvcnQgc2tpcFVubGVzcwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgZmluZGZpbGUsIHVubGluaywgcmVxdWlyZXNfemxpYiwgcmVxdWlyZXNfYnoyLCByZXF1aXJlc19sem1hCiAKIFRFU1RGTjIgPSBURVNURk4gKyAiMiIKIFRFU1RGTkRJUiA9IFRFU1RGTiArICJkIgpAQCAtMjY5LDQ0ICsyNjMsNDQgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3Rfb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfbG93X2NvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiJDaGVjayBmb3IgY2FzZXMgd2hlcmUgY29tcHJlc3NlZCBkYXRhIGlzIGxhcmdlciB0aGFuIG9yaWdpbmFsLiIiIgogICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKQEAgLTMxOSw2ICszMTMsMTAzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMScpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMicpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbl9iemlwMihzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgZm9yIGNhc2VzIHdoZXJlIGNvbXByZXNzZWQgZGF0YSBpcyBsYXJnZXIgdGhhbiBvcmlnaW5hbC4iIiIKKyAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfQlpJUDIpIGFzIHppcGZwOgorICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInN0cmZpbGUiLCAnMTInKQorCisgICAgICAgICMgR2V0IGFuIG9wZW4gb2JqZWN0IGZvciBzdHJmaWxlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJyIiwgemlwZmlsZS5aSVBfQlpJUDIpIGFzIHppcGZwOgorICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKCJzdHJmaWxlIikgYXMgb3Blbm9iajoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicxJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicyJykKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3Rfb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfbHptYShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjNzYxMDogY2FsbHMgdG8gcmVhZGxpbmUoKSBpbnRlcmxlYXZlZCB3aXRoIGNhbGxzIHRvIHJlYWQoKS4KKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfbG93X2NvbXByZXNzaW9uX2x6bWEoc2VsZik6CisgICAgICAgICIiIkNoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21wcmVzc2VkIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3JpZ2luYWwuIiIiCisgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX0xaTUEpIGFzIHppcGZwOgorICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInN0cmZpbGUiLCAnMTInKQorCisgICAgICAgICMgR2V0IGFuIG9wZW4gb2JqZWN0IGZvciBzdHJmaWxlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJyIiwgemlwZmlsZS5aSVBfTFpNQSkgYXMgemlwZnA6CisgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oInN0cmZpbGUiKSBhcyBvcGVub2JqOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzInKQorCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfYXJjbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgIi9hYnNvbHV0ZSIpCkBAIC0zNzcsNyArNDY4LDcgQEAKICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmcC5yZWFkKFRFU1RGTiksIGYucmVhZCgpKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcGVyX2ZpbGVfY29tcHJlc3Npb24oc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgZmlsZXMgd2l0aGluIGEgWmlwIGFyY2hpdmUgY2FuIGhhdmUgZGlmZmVyZW50CiAgICAgICAgIGNvbXByZXNzaW9uIG9wdGlvbnMuIiIiCkBAIC00NDYsMTkgKzUzNywzMiBAQAogICAgICAgICAjIHJlbW92ZSB0aGUgdGVzdCBmaWxlIHN1YmRpcmVjdG9yaWVzCiAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCAnemlwdGVzdDJkaXInKSkKIAotICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uX3N0b3JlZChzZWxmKToKICAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQogICAgICAgICB6aXBmcC53cml0ZXN0cigiYS50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX1NUT1JFRCkKLSAgICAgICAgaWYgemxpYjoKLSAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfREVGTEFURUQpCi0KICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2EudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgICAgICBpZiB6bGliOgotICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uX2RlZmxhdGVkKHNlbGYpOgorICAgICAgICB6aXBmcCA9IHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIpCisgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdiLnR4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9iemlwMihzZWxmKToKKyAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQorICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0JaSVAyKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2NvbXByZXNzaW9uX2x6bWEoc2VsZik6CisgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKKyAgICAgICAgemlwZnAud3JpdGVzdHIoImIudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9MWk1BKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfTFpNQSkKIAogICAgIGRlZiB6aXBfdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd3JpdGVzdHIgY3JlYXRlcyBmaWxlcyB3aXRoIG1vZGUgMDYwMCwKQEAgLTUxNCw3ICs2MTgsMTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCiAKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKworCisKKworCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF91bmljb2RlX2ZpbGVuYW1lcyhzZWxmKToKICAgICAgICAgIyBidWcgIzEwODAxCiAgICAgICAgIGZuYW1lID0gZmluZGZpbGUoJ3ppcF9jcDQzN19oZWFkZXIuemlwJykKQEAgLTYyMywxMSArNzMyLDIxIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgdGVzdF9hYnNvbHV0ZV9hcmNuYW1lcyhzZWxmKToKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9TVE9SRUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93WmlwNjQ9VHJ1ZSkgYXMgemlwZnA6CkBAIC03NTYsOCArODc1LDQwIEBACiAgICAgICAgICAgICBiJ1x4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg4MFx4MDFceDAwXHgwMFx4MDAnCiAgICAgICAgICAgICBiJ1x4MDBhZmlsZVBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDAnCiAgICAgICAgICAgICBiJ1x4MDFceDAwM1x4MDBceDAwXHgwMDNceDAwXHgwMFx4MDBceDAwXHgwMCcpLAorICAgICAgICB6aXBmaWxlLlpJUF9CWklQMjogKAorICAgICAgICAgICAgYidQS1x4MDNceDA0XHgxNFx4MDNceDAwXHgwMFx4MGNceDAwbnVceDBjPUZBJworICAgICAgICAgICAgYidLRThceDAwXHgwMFx4MDBuXHgwMFx4MDBceDAwXHgwNVx4MDBceDAwXHgwMGFmJworICAgICAgICAgICAgYidpbGVCWmg5MUFZJlNZXHhkNFx4YThceGNhJworICAgICAgICAgICAgYidceDdmXHgwMFx4MDBceDBmXHgxMVx4ODBAXHgwMFx4MDZEXHg5MFx4ODAgXHgwMCBceGE1JworICAgICAgICAgICAgYidQXHhkOSFceDAzXHgwM1x4MTNceDEzXHgxM1x4ODlceGE5XHhhOVx4YzJ1NTpceDlmJworICAgICAgICAgICAgYidceDhiXHhiOSJceDljKEhqVGU/XHg4MFBLXHgwMVx4MDJceDE0JworICAgICAgICAgICAgYidceDAzXHgxNFx4MDNceDAwXHgwMFx4MGNceDAwbnVceDBjPUZBS0U4JworICAgICAgICAgICAgYidceDAwXHgwMFx4MDBuXHgwMFx4MDBceDAwXHgwNVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwJworICAgICAgICAgICAgYidceDAwIFx4ODBceDgwXHg4MVx4MDBceDAwXHgwMFx4MDBhZmlsZVBLJworICAgICAgICAgICAgYidceDA1XHgwNlx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwM1x4MDBceDAwXHgwMFtceDAwJworICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwJyksCisgICAgICAgIHppcGZpbGUuWklQX0xaTUE6ICgKKyAgICAgICAgICAgIGInUEtceDAzXHgwNFx4MTRceDAzXHgwMFx4MDBceDBlXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0VceDFiXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBhZicKKyAgICAgICAgICAgIGInaWxlXHRceDA0XHgwNVx4MDBdXHgwMFx4MDBceDAwXHgwNFx4MDA0XHgxOUknCisgICAgICAgICAgICBiJ1x4ZWVceDhkXHhlOVx4MTdceDg5OjNgXHRxIS44XHgwMFBLJworICAgICAgICAgICAgYidceDAxXHgwMlx4MTRceDAzXHgxNFx4MDNceDAwXHgwMFx4MGVceDAwbnVceDBjPUZBJworICAgICAgICAgICAgYidLRVx4MWJceDAwXHgwMFx4MDBuXHgwMFx4MDBceDAwXHgwNVx4MDBceDAwXHgwMFx4MDBceDAwJworICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwIFx4ODBceDgwXHg4MVx4MDBceDAwXHgwMFx4MDBhZmlsJworICAgICAgICAgICAgYidlUEtceDA1XHgwNlx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwM1x4MDBceDAwJworICAgICAgICAgICAgYidceDAwPlx4MDBceDAwXHgwMFx4MDBceDAwJyksCiAgICAgfQogCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIyBGaWxlIGhhcyBhbiBleHRyYWN0X3ZlcnNpb24gb2YgMTIwCisgICAgICAgIGRhdGEgPSAoYidQS1x4MDNceDA0eFx4MDBceDAwXHgwMFx4MDBceDAwIXBceGExQFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAweFBLXHgwMVx4MDJ4XHgwM3hceDAwXHgwMFx4MDBceDAwJworICAgICAgICBiJ1x4MDAhcFx4YTFAXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJworICAgICAgICBiJ1x4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDAxXHgwMFx4MDBceDAwXHgwMHhQS1x4MDVceDA2JworICAgICAgICBiJ1x4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDFceDAwL1x4MDBceDAwXHgwMFx4MWZceDAwXHgwMFx4MDBceDAwXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW8uQnl0ZXNJTyhkYXRhKSwgJ3InKQorCiAgICAgZGVmIHRlc3RfdW5pY29kZV9maWxlbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgInciKSBhcyB6ZjoKICAgICAgICAgICAgIHpmLndyaXRlc3RyKCJmb28udHh0IiwgIlRlc3QgZm9yIHVuaWNvZGUgZmlsZW5hbWUiKQpAQCAtMTAzNCwxMCArMTE4NSwxOCBAQAogICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja190ZXN0emlwX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19kZWZsYXRlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja190ZXN0emlwX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19iemlwMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190ZXN0emlwX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190ZXN0emlwX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIGNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHNlbGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgIiIiVGVzdHMgdGhhdCBmaWxlcyB3aXRoIGJhZCBDUkNzIHJhaXNlIGEgQmFkWmlwRmlsZSBleGNlcHRpb24gd2hlbiByZWFkLiIiIgogICAgICAgICB6aXBkYXRhID0gc2VsZi56aXBzX3dpdGhfYmFkX2NyY1tjb21wcmVzc2lvbl0KQEAgLTEwNjIsMTAgKzEyMjEsMTggQEAKICAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19zdG9yZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfYnppcDIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX2x6bWEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiBjaGVja19yZWFkX3JldHVybl9zaXplKHNlbGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgIyBJc3N1ZSAjOTgzNzogWmlwRXh0RmlsZS5yZWFkKCkgc2hvdWxkbid0IHJldHVybiBtb3JlIGJ5dGVzCiAgICAgICAgICMgdGhhbiByZXF1ZXN0ZWQuCkBAIC0xMDgyLDEwICsxMjQ5LDE4IEBACiAgICAgZGVmIHRlc3RfcmVhZF9yZXR1cm5fc2l6ZV9zdG9yZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZF9yZXR1cm5fc2l6ZV9iemlwMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX2x6bWEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlc3RfZW1wdHlfemlwZmlsZShzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IGNyZWF0aW5nIGEgZmlsZSBpbiAndycgb3IgJ2EnIG1vZGUgYW5kIGNsb3Npbmcgd2l0aG91dAogICAgICAgICAjIGFkZGluZyBhbnkgZmlsZXMgdG8gdGhlIGFyY2hpdmVzIGNyZWF0ZXMgYSB2YWxpZCBlbXB0eSBaSVAgZmlsZQpAQCAtMTE3Miw3ICsxMzQ3LDcgQEAKICAgICAgICAgc2VsZi56aXAyLnNldHBhc3N3b3JkKGIicGVybCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2VsZi56aXAyLnJlYWQsICJ6ZXJvIikKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2dvb2RfcGFzc3dvcmQoc2VsZik6CiAgICAgICAgIHNlbGYuemlwLnNldHBhc3N3b3JkKGIicHl0aG9uIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnppcC5yZWFkKCJ0ZXN0LnR4dCIpLCBzZWxmLnBsYWluKQpAQCAtMTIyMiwxMSArMTM5NywyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHppcF9vcGVuX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQogCkBAIC0xMjYyLDExICsxNDQ3LDIxIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3Rfb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9vcGVuX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB6aXBfcmFuZG9tX29wZW5fdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCiAKQEAgLTEyOTAsMTMgKzE0ODUsMjMgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKIAotQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworCitAcmVxdWlyZXNfemxpYgogY2xhc3MgVGVzdHNXaXRoTXVsdGlwbGVPcGVucyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKQEAgLTE0ODgsMzIgKzE2OTMsODIgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNzYxMDogY2FsbHMgdG8gcmVhZGxpbmUoKSBpbnRlcmxlYXZlZCB3aXRoIGNhbGxzIHRvIHJlYWQoKS4KICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfaXRlcmxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfaXRlcmxpbmVzX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfaXRlcmxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKICAgICAgICAgICAgIG9zLnJlbW92ZShmbikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkKaW5kZXggMGU3ZDczZi4uYThmYjdhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkKQEAgLTExLDEyICsxMSw2IEBACiAgICAgICAgICd0ZXN0IHJlcXVpcmVzIGxvYWRzIG9mIGRpc2stc3BhY2UgYnl0ZXMgYW5kIGEgbG9uZyB0aW1lIHRvIHJ1bicKICAgICApCiAKLSMgV2UgY2FuIHRlc3QgcGFydCBvZiB0aGUgbW9kdWxlIHdpdGhvdXQgemxpYi4KLXRyeToKLSAgICBpbXBvcnQgemxpYgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHpsaWIgPSBOb25lCi0KIGltcG9ydCB6aXBmaWxlLCBvcywgdW5pdHRlc3QKIGltcG9ydCB0aW1lCiBpbXBvcnQgc3lzCkBAIC0yNCw3ICsxOCw3IEBACiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9yYXJ5RmlsZQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfemxpYgogCiBURVNURk4yID0gVEVTVEZOICsgIjIiCiAKQEAgLTgxLDEyICs3NSwxMiBAQAogICAgICAgICBmb3IgZiBpbiBUZW1wb3JhcnlGaWxlKCksIFRFU1RGTjI6CiAgICAgICAgICAgICBzZWxmLnppcFRlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgaWYgemxpYjoKLSAgICAgICAgZGVmIHRlc3REZWZsYXRlZChzZWxmKToKLSAgICAgICAgICAgICMgVHJ5IHRoZSB0ZW1wIGZpbGUgZmlyc3QuICBJZiB3ZSBkbyBURVNURk4yIGZpcnN0LCB0aGVuIGl0IGhvZ3MKLSAgICAgICAgICAgICMgZ2lnYWJ5dGVzIG9mIGRpc2sgc3BhY2UgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KLSAgICAgICAgICAgIGZvciBmIGluIFRlbXBvcmFyeUZpbGUoKSwgVEVTVEZOMjoKLSAgICAgICAgICAgICAgICBzZWxmLnppcFRlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdERlZmxhdGVkKHNlbGYpOgorICAgICAgICAjIFRyeSB0aGUgdGVtcCBmaWxlIGZpcnN0LiAgSWYgd2UgZG8gVEVTVEZOMiBmaXJzdCwgdGhlbiBpdCBob2dzCisgICAgICAgICMgZ2lnYWJ5dGVzIG9mIGRpc2sgc3BhY2UgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KKyAgICAgICAgZm9yIGYgaW4gVGVtcG9yYXJ5RmlsZSgpLCBURVNURk4yOgorICAgICAgICAgICAgc2VsZi56aXBUZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBmb3IgZm5hbWUgaW4gVEVTVEZOLCBURVNURk4yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQppbmRleCBkZjVmZjlkLi5mN2NiOGI5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQpAQCAtOSwxMiArOSw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC50ZXN0X2ltcG9ydGhvb2tzIGltcG9ydCBJbXBvcnRIb29rc0Jhc2VUZXN0Q2FzZSwgdGVzdF9zcmMsIHRlc3RfY28KIAotIyBzb21lIHRlc3RzIGNhbiBiZSByYW4gZXZlbiB3aXRob3V0IHpsaWIKLXRyeToKLSAgICBpbXBvcnQgemxpYgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHpsaWIgPSBOb25lCi0KIGZyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZSwgWmlwSW5mbywgWklQX1NUT1JFRCwgWklQX0RFRkxBVEVECiAKIGltcG9ydCB6aXBpbXBvcnQKQEAgLTI1LDcgKzE5LDcgQEAKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBleHRyYWN0X3RiLCBleHRyYWN0X3N0YWNrLCBwcmludF90YgogcmFpc2Vfc3JjID0gJ2RlZiBkb19yYWlzZSgpOiByYWlzZSBUeXBlRXJyb3JcbicKIAotZGVmIG1ha2VfcHljKGNvLCBtdGltZSk6CitkZWYgbWFrZV9weWMoY28sIG10aW1lLCBzaXplKToKICAgICBkYXRhID0gbWFyc2hhbC5kdW1wcyhjbykKICAgICBpZiB0eXBlKG10aW1lKSBpcyB0eXBlKDAuMCk6CiAgICAgICAgICMgTWFjIG10aW1lcyBuZWVkIGEgYml0IG9mIHNwZWNpYWwgY2FzaW5nCkBAIC0zMywxNCArMjcsMTQgQEAKICAgICAgICAgICAgIG10aW1lID0gaW50KG10aW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbXRpbWUgPSBpbnQoLTB4MTAwMDAwMDAwICsgaW50KG10aW1lKSkKLSAgICBweWMgPSBpbXAuZ2V0X21hZ2ljKCkgKyBzdHJ1Y3QucGFjaygiPGkiLCBpbnQobXRpbWUpKSArIGRhdGEKKyAgICBweWMgPSBpbXAuZ2V0X21hZ2ljKCkgKyBzdHJ1Y3QucGFjaygiPGlpIiwgaW50KG10aW1lKSwgc2l6ZSAmIDB4RkZGRkZGRkYpICsgZGF0YQogICAgIHJldHVybiBweWMKIAogZGVmIG1vZHVsZV9wYXRoX3RvX2RvdHRlZF9uYW1lKHBhdGgpOgogICAgIHJldHVybiBwYXRoLnJlcGxhY2Uob3Muc2VwLCAnLicpCiAKIE5PVyA9IHRpbWUudGltZSgpCi10ZXN0X3B5YyA9IG1ha2VfcHljKHRlc3RfY28sIE5PVykKK3Rlc3RfcHljID0gbWFrZV9weWModGVzdF9jbywgTk9XLCBsZW4odGVzdF9zcmMpKQogCiAKIFRFU1RNT0QgPSAiemlwdGVzdG1vZHVsZSIKQEAgLTIxMSw2ICsyMDUsMTAgQEAKICAgICAgICAgICAgIG1vZCA9IHppLmxvYWRfbW9kdWxlKFRFU1RQQUNLKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5nZXRfZmlsZW5hbWUoVEVTVFBBQ0spLCBtb2QuX19maWxlX18pCiAKKyAgICAgICAgICAgIGV4aXN0aW5nX3BhY2tfcGF0aCA9IF9faW1wb3J0X18oVEVTVFBBQ0spLl9fcGF0aF9fWzBdCisgICAgICAgICAgICBleHBlY3RlZF9wYXRoX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVNUF9aSVAsIFRFU1RQQUNLKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGlzdGluZ19wYWNrX3BhdGgsIGV4cGVjdGVkX3BhdGhfcGF0aCkKKwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKHBhY2tkaXIgKyAnX19pbml0X18nKSwgRmFsc2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UocGFja2RpciArIFRFU1RQQUNLMiksIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UocGFja2RpcjIgKyBURVNUTU9EKSwgRmFsc2UpCkBAIC0yOTksNyArMjk3LDcgQEAKICAgICAgICAgICAgIHJldHVybiBfX2ZpbGVfXwogICAgICAgICBpZiBfX2xvYWRlcl9fLmdldF9kYXRhKCJzb21lLmRhdGEiKSAhPSBiInNvbWUgZGF0YSI6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiYmFkIGRhdGEiKVxuIiIiCi0gICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUoc3JjLCAiPD8/Pz4iLCAiZXhlYyIpLCBOT1cpCisgICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUoc3JjLCAiPD8/Pz4iLCAiZXhlYyIpLCBOT1csIGxlbihzcmMpKQogICAgICAgICBmaWxlcyA9IHtURVNUTU9EICsgcHljX2V4dDogKE5PVywgcHljKSwKICAgICAgICAgICAgICAgICAgInNvbWUuZGF0YSI6IChOT1csICJzb21lIGRhdGEiKX0KICAgICAgICAgc2VsZi5kb1Rlc3QocHljX2V4dCwgZmlsZXMsIFRFU1RNT0QpCkBAIC0zMTksNyArMzE3LDcgQEAKICAgICAgICAgc2VsZi5kb1Rlc3QoIi5weSIsIGZpbGVzLCBURVNUTU9ELCBjYWxsPXNlbGYuYXNzZXJ0TW9kdWxlU291cmNlKQogCiAgICAgZGVmIHRlc3RHZXRDb21waWxlZFNvdXJjZShzZWxmKToKLSAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZSh0ZXN0X3NyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XKQorICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpLCBOT1csIGxlbih0ZXN0X3NyYykpCiAgICAgICAgIGZpbGVzID0ge1RFU1RNT0QgKyAiLnB5IjogKE5PVywgdGVzdF9zcmMpLAogICAgICAgICAgICAgICAgICBURVNUTU9EICsgcHljX2V4dDogKE5PVywgcHljKX0KICAgICAgICAgc2VsZi5kb1Rlc3QocHljX2V4dCwgZmlsZXMsIFRFU1RNT0QsIGNhbGw9c2VsZi5hc3NlcnRNb2R1bGVTb3VyY2UpCkBAIC0zOTIsNyArMzkwLDcgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKIAogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCitAc3VwcG9ydC5yZXF1aXJlc196bGliCiBjbGFzcyBDb21wcmVzc2VkWmlwSW1wb3J0VGVzdENhc2UoVW5jb21wcmVzc2VkWmlwSW1wb3J0VGVzdENhc2UpOgogICAgIGNvbXByZXNzaW9uID0gWklQX0RFRkxBVEVECiAKQEAgLTQxNyw3ICs0MTUsNyBAQAogCiAgICAgZGVmIHRlc3RFbXB0eUZpbGUoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RNT0QpCi0gICAgICAgIG9wZW4oVEVTVE1PRCwgJ3crJykuY2xvc2UoKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKFRFU1RNT0QpCiAgICAgICAgIHNlbGYuYXNzZXJ0WmlwRmFpbHVyZShURVNUTU9EKQogCiAgICAgZGVmIHRlc3RGaWxlVW5yZWFkYWJsZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDA2MDEwOGYuLmY3ZjMzOTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTY3LDIwICsxNjcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RSdW5uZXIudmVyYm9zZV9mbGFnLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRXhhbXBsZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X2RlYnVnLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZSwKLSAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdGVzdHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3RyYWlsaW5nX3NwYWNlX2luX3Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NUZXN0U3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NUZXN0RmluZGVyLAogICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAjIFRoZXNlIHJlbWFpbmluZyB0ZXN0cyBhcmUgdGhlIG9uZXMgd2hpY2ggbmVlZCBhY2Nlc3MKKyAgICAgICAgICAgICAgICAjIFRoZXNlIHRlc3RzIGFyZSB0aGUgb25lcyB3aGljaCBuZWVkIGFjY2VzcwogICAgICAgICAgICAgICAgICMgdG8gdGhlIGRhdGEgZmlsZXMsIHNvIHdlIGRvbid0IHJ1biB0aGVtCiAgICAgICAgICAgICAgICAgZmFpbF9kdWVfdG9fbWlzc2luZ19kYXRhX2ZpbGVzID0gWwogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jRmlsZVN1aXRlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdGVzdGZpbGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF91bml0dGVzdF9yZXBvcnRmbGFncywKICAgICAgICAgICAgICAgICBdCisKICAgICAgICAgICAgICAgICBmb3Igb2JqIGluIGtub3duX2dvb2RfdGVzdHM6CiAgICAgICAgICAgICAgICAgICAgIF9ydW5fb2JqZWN0X2RvY3Rlc3Qob2JqLCB0ZXN0X3ppcHBlZF9kb2N0ZXN0KQogICAgICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQppbmRleCA0NjYxYzFkLi4yZjZmODQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3psaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CkBAIC03LDEwICs3LDE2IEBACiAKIHpsaWIgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3psaWInKQogCi10cnk6Ci0gICAgaW1wb3J0IG1tYXAKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBtbWFwID0gTm9uZQorCitjbGFzcyBWZXJzaW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbGlicmFyeV92ZXJzaW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbWFqb3IgdmVyc2lvbiBvZiB0aGUgYWN0dWFsIGxpYnJhcnkgaW4gdXNlIG1hdGNoZXMgdGhlCisgICAgICAgICMgbWFqb3IgdmVyc2lvbiB0aGF0IHdlIHdlcmUgY29tcGlsZWQgYWdhaW5zdC4gV2UgY2FuJ3QgZ3VhcmFudGVlIHRoYXQKKyAgICAgICAgIyB0aGUgbWlub3IgdmVyc2lvbnMgd2lsbCBtYXRjaCAoZXZlbiBvbiB0aGUgbWFjaGluZSBvbiB3aGljaCB0aGUgbW9kdWxlCisgICAgICAgICMgd2FzIGNvbXBpbGVkKSwgYW5kIHRoZSBBUEkgaXMgc3RhYmxlIGJldHdlZW4gbWlub3IgdmVyc2lvbnMsIHNvCisgICAgICAgICMgdGVzdGluZyBvbmx5IHRoZSBtYWpvciB2ZXJzaW9ucyBhdm9pZHMgc3B1cmlvdXMgZmFpbHVyZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5aTElCX1JVTlRJTUVfVkVSU0lPTlswXSwgemxpYi5aTElCX1ZFUlNJT05bMF0pCiAKIAogY2xhc3MgQ2hlY2tzdW1UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNzMsMTAgKzE3OSw4IEBACiAgICAgZGVmIHRlc3RfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNlbGYsIHNpemUpOgogICAgICAgICBzZWxmLmNoZWNrX2JpZ19kZWNvbXByZXNzX2J1ZmZlcihzaXplLCB6bGliLmRlY29tcHJlc3MpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xlbmd0aF9vdmVyZmxvdyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgc2l6ZSA8IF80RyArIDEwMDoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vdCBlbm91Z2ggZnJlZSBtZW1vcnksIG5lZWQgYXQgbGVhc3QgNCBHQiIpCiAgICAgICAgIGRhdGEgPSBiJ3gnICogc2l6ZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB6bGliLmNvbXByZXNzLCBkYXRhLCAxKQpAQCAtNDIxLDYgKzQyNSwzNSBAQAogICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRjby5mbHVzaCgpLCBiIiIpICMgUmV0dXJucyBub3RoaW5nCiAKKyAgICBkZWYgdGVzdF9kaWN0aW9uYXJ5KHNlbGYpOgorICAgICAgICBoID0gSEFNTEVUX1NDRU5FCisgICAgICAgICMgQnVpbGQgYSBzaW11bGF0ZWQgZGljdGlvbmFyeSBvdXQgb2YgdGhlIHdvcmRzIGluIEhBTUxFVC4KKyAgICAgICAgd29yZHMgPSBoLnNwbGl0KCkKKyAgICAgICAgcmFuZG9tLnNodWZmbGUod29yZHMpCisgICAgICAgIHpkaWN0ID0gYicnLmpvaW4od29yZHMpCisgICAgICAgICMgVXNlIGl0IHRvIGNvbXByZXNzIEhBTUxFVC4KKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKHpkaWN0PXpkaWN0KQorICAgICAgICBjZCA9IGNvLmNvbXByZXNzKGgpICsgY28uZmx1c2goKQorICAgICAgICAjIFZlcmlmeSB0aGF0IGl0IHdpbGwgZGVjb21wcmVzcyB3aXRoIHRoZSBkaWN0aW9uYXJ5LgorICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooemRpY3Q9emRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLmRlY29tcHJlc3MoY2QpICsgZGNvLmZsdXNoKCksIGgpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgaXQgZmFpbHMgd2hlbiBub3QgZ2l2ZW4gdGhlIGRpY3Rpb25hcnkuCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHpsaWIuZXJyb3IsIGRjby5kZWNvbXByZXNzLCBjZCkKKworICAgIGRlZiB0ZXN0X2RpY3Rpb25hcnlfc3RyZWFtaW5nKHNlbGYpOgorICAgICAgICAjIFRoaXMgc2ltdWxhdGVzIHRoZSByZXVzZSBvZiBhIGNvbXByZXNzb3Igb2JqZWN0IGZvciBjb21wcmVzc2luZworICAgICAgICAjIHNldmVyYWwgc2VwYXJhdGUgZGF0YSBzdHJlYW1zLgorICAgICAgICBjbyA9IHpsaWIuY29tcHJlc3NvYmooemRpY3Q9SEFNTEVUX1NDRU5FKQorICAgICAgICBkbyA9IHpsaWIuZGVjb21wcmVzc29iaih6ZGljdD1IQU1MRVRfU0NFTkUpCisgICAgICAgIHBpZWNlID0gSEFNTEVUX1NDRU5FWzEwMDA6MTUwMF0KKyAgICAgICAgZDAgPSBjby5jb21wcmVzcyhwaWVjZSkgKyBjby5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZDEgPSBjby5jb21wcmVzcyhwaWVjZVsxMDA6XSkgKyBjby5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgZDIgPSBjby5jb21wcmVzcyhwaWVjZVs6LTEwMF0pICsgY28uZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG8uZGVjb21wcmVzcyhkMCksIHBpZWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvLmRlY29tcHJlc3MoZDEpLCBwaWVjZVsxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkby5kZWNvbXByZXNzKGQyKSwgcGllY2VbOi0xMDBdKQorCiAgICAgZGVmIHRlc3RfZGVjb21wcmVzc19pbmNvbXBsZXRlX3N0cmVhbShzZWxmKToKICAgICAgICAgIyBUaGlzIGlzICdmb28nLCBkZWZsYXRlZAogICAgICAgICB4ID0gYid4XHg5Y0tceGNiXHhjZlx4MDdceDAwXHgwMlx4ODJceDAxRScKQEAgLTQzNCw2ICs0NjcsMjYgQEAKICAgICAgICAgeSArPSBkY28uZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIGInZm9vJykKIAorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZW9mKHNlbGYpOgorICAgICAgICB4ID0gYid4XHg5Y0tceGNiXHhjZlx4MDdceDAwXHgwMlx4ODJceDAxRScgICMgJ2ZvbycKKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4WzotNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmRlY29tcHJlc3MoeFstNTpdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGNvLmVvZikKKyAgICAgICAgZGNvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRjby5lb2YpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2VvZl9pbmNvbXBsZXRlX3N0cmVhbShzZWxmKToKKyAgICAgICAgeCA9IGIneFx4OWNLXHhjYlx4Y2ZceDA3XHgwMFx4MDJceDgyXHgwMUUnICAjICdmb28nCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmRlY29tcHJlc3MoeFs6LTVdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKwogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfdW51c2VkX2RhdGEoc2VsZik6CiAgICAgICAgICMgUmVwZWF0ZWQgY2FsbHMgdG8gZGVjb21wcmVzcygpIGFmdGVyIEVPRiBzaG91bGQgYWNjdW11bGF0ZSBkYXRhIGluCiAgICAgICAgICMgZGNvLnVudXNlZF9kYXRhLCBpbnN0ZWFkIG9mIGp1c3Qgc3RvcmluZyB0aGUgYXJnIHRvIHRoZSBsYXN0IGNhbGwuCkBAIC00NTUsNiArNTA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gZGNvLmRlY29tcHJlc3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjby51bmNvbnN1bWVkX3RhaWwgKyB4W2kgOiBpICsgc3RlcF0sIG1heGxlbikKICAgICAgICAgICAgICAgICBkYXRhICs9IGRjby5mbHVzaCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRjby5lb2YpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzb3VyY2UpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28udW5jb25zdW1lZF90YWlsLCBiJycpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28udW51c2VkX2RhdGEsIHJlbWFpbmRlcikKQEAgLTU0NywxMCArNjAxLDggQEAKICAgICAgICAgZGVjb21wcmVzcyA9IGxhbWJkYSBzOiBkLmRlY29tcHJlc3MocykgKyBkLmZsdXNoKCkKICAgICAgICAgc2VsZi5jaGVja19iaWdfZGVjb21wcmVzc19idWZmZXIoc2l6ZSwgZGVjb21wcmVzcykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGVuZ3RoX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICBpZiBzaXplIDwgXzRHICsgMTAwOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm90IGVub3VnaCBmcmVlIG1lbW9yeSwgbmVlZCBhdCBsZWFzdCA0IEdCIikKICAgICAgICAgZGF0YSA9IGIneCcgKiBzaXplCiAgICAgICAgIGMgPSB6bGliLmNvbXByZXNzb2JqKDEpCiAgICAgICAgIGQgPSB6bGliLmRlY29tcHJlc3NvYmooKQpAQCAtNjUxLDYgKzcwMyw3IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgVmVyc2lvblRlc3RDYXNlLAogICAgICAgICBDaGVja3N1bVRlc3RDYXNlLAogICAgICAgICBDaGVja3N1bUJpZ0J1ZmZlclRlc3RDYXNlLAogICAgICAgICBFeGNlcHRpb25UZXN0Q2FzZSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RiejJfYmlnbWVtLmJ6MiBiL0xpYi90ZXN0L3Rlc3RiejJfYmlnbWVtLmJ6MgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhNDYxNi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0YnoyX2JpZ21lbS5iejIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weSBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CmluZGV4IGFkZjAzZTMuLjU0ODRlNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CisrKyBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CkBAIC0zNSw4ICszNSwxMSBAQAogICAgICAgICAoIm9zLnBhdGguYWJzcGF0aCIsIG9zLnBhdGguYWJzcGF0aCwgKCcuJywpKSwKICAgICAgICAgXToKIAotICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKLSAgICB0LnN0YXJ0KCkKLSAgICB0LmpvaW4oVElNRU9VVCkKLSAgICBpZiB0LmlzX2FsaXZlKCk6Ci0gICAgICAgIGVycm9ycy5hcHBlbmQoIiVzIGFwcGVhcmVkIHRvIGhhbmciICUgbmFtZSkKKyAgICB0cnk6CisgICAgICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKKyAgICAgICAgdC5zdGFydCgpCisgICAgICAgIHQuam9pbihUSU1FT1VUKQorICAgICAgICBpZiB0LmlzX2FsaXZlKCk6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCIlcyBhcHBlYXJlZCB0byBoYW5nIiAlIG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgZGVsIHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dCBiL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dAppbmRleCAwNmM4M2IwLi4yYzVmYjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQKKysrIGIvTGliL3Rlc3QvdG9rZW5pemVfdGVzdHMudHh0CkBAIC0xMTQsOCArMTE0LDEyIEBACiB5ID0gYiJhYmMiICsgQiJBQkMiCiB4ID0gYnInYWJjJyArIEJyJ0FCQycgKyBiUidBQkMnICsgQlInQUJDJwogeSA9IGJyImFiYyIgKyBCciJBQkMiICsgYlIiQUJDIiArIEJSIkFCQyIKK3ggPSByYidhYmMnICsgckInQUJDJyArIFJiJ0FCQycgKyBSQidBQkMnCit5ID0gcmIiYWJjIiArIHJCIkFCQyIgKyBSYiJBQkMiICsgUkIiQUJDIgogeCA9IGJyJ1xcJyArIEJSJ1xcJworeCA9IHJiJ1xcJyArIFJCJ1xcJwogeCA9IGJyJ1wnJyArICcnCit4ID0gcmInXCcnICsgJycKIHkgPSBicicnJwogZm9vIGJhciBcXAogYmF6JycnICsgQlInJycKQEAgLTEyNCw2ICsxMjgsMTAgQEAKIGJhciBcXCBiYXoKICIiIiArIGJSJycnc3BhbQogJycnCit5ID0gckIiIiJmb28KK2JhciBcXCBiYXoKKyIiIiArIFJiJycnc3BhbQorJycnCiAKICMgSW5kZW50YXRpb24KIGlmIDE6CmRpZmYgLS1naXQgYS9MaWIvdGV4dHdyYXAucHkgYi9MaWIvdGV4dHdyYXAucHkKaW5kZXggZGZiNDAwNS4uNzAyNGQ0ZCAxMDA2NDQKLS0tIGEvTGliL3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXh0d3JhcC5weQpAQCAtNSw5ICs1LDkgQEAKICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogIyBXcml0dGVuIGJ5IEdyZWcgV2FyZCA8Z3dhcmRAcHl0aG9uLm5ldD4KIAotaW1wb3J0IHN0cmluZywgcmUKK2ltcG9ydCByZQogCi1fX2FsbF9fID0gWydUZXh0V3JhcHBlcicsICd3cmFwJywgJ2ZpbGwnLCAnZGVkZW50J10KK19fYWxsX18gPSBbJ1RleHRXcmFwcGVyJywgJ3dyYXAnLCAnZmlsbCcsICdkZWRlbnQnLCAnaW5kZW50J10KIAogIyBIYXJkY29kZSB0aGUgcmVjb2duaXplZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgdG8gdGhlIFVTLUFTQ0lJCiAjIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4gIFRoZSBtYWluIHJlYXNvbiBmb3IgZG9pbmcgdGhpcyBpcyB0aGF0IGluCkBAIC0zOSw4ICszOSwxMSBAQAogICAgICAgICBvZiB3cmFwcGVkIG91dHB1dDsgYWxzbyBjb3VudHMgdG93YXJkcyBlYWNoIGxpbmUncyB3aWR0aC4KICAgICAgIGV4cGFuZF90YWJzIChkZWZhdWx0OiB0cnVlKQogICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIHNwYWNlcyBiZWZvcmUgZnVydGhlciBwcm9jZXNzaW5nLgotICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAxIC4uIDggc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uIGluCi0gICAgICAgIGl0cyBsaW5lLiAgSWYgZmFsc2UsIGVhY2ggdGFiIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAwIC4uICd0YWJzaXplJyBzcGFjZXMsIGRlcGVuZGluZyBvbiBpdHMgcG9zaXRpb24KKyAgICAgICAgaW4gaXRzIGxpbmUuICBJZiBmYWxzZSwgZWFjaCB0YWIgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuCisgICAgICB0YWJzaXplIChkZWZhdWx0OiA4KQorICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIDAgLi4gJ3RhYnNpemUnIHNwYWNlcywgdW5sZXNzCisgICAgICAgICdleHBhbmRfdGFicycgaXMgZmFsc2UuCiAgICAgICByZXBsYWNlX3doaXRlc3BhY2UgKGRlZmF1bHQ6IHRydWUpCiAgICAgICAgIFJlcGxhY2UgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQgdGV4dCBieSBzcGFjZXMKICAgICAgICAgYWZ0ZXIgdGFiIGV4cGFuc2lvbi4gIE5vdGUgdGhhdCBpZiBleHBhbmRfdGFicyBpcyBmYWxzZSBhbmQKQEAgLTEwMCw3ICsxMDMsOCBAQAogICAgICAgICAgICAgICAgICBmaXhfc2VudGVuY2VfZW5kaW5ncz1GYWxzZSwKICAgICAgICAgICAgICAgICAgYnJlYWtfbG9uZ193b3Jkcz1UcnVlLAogICAgICAgICAgICAgICAgICBkcm9wX3doaXRlc3BhY2U9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlKToKKyAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlLAorICAgICAgICAgICAgICAgICB0YWJzaXplPTgpOgogICAgICAgICBzZWxmLndpZHRoID0gd2lkdGgKICAgICAgICAgc2VsZi5pbml0aWFsX2luZGVudCA9IGluaXRpYWxfaW5kZW50CiAgICAgICAgIHNlbGYuc3Vic2VxdWVudF9pbmRlbnQgPSBzdWJzZXF1ZW50X2luZGVudApAQCAtMTEwLDYgKzExNCw3IEBACiAgICAgICAgIHNlbGYuYnJlYWtfbG9uZ193b3JkcyA9IGJyZWFrX2xvbmdfd29yZHMKICAgICAgICAgc2VsZi5kcm9wX3doaXRlc3BhY2UgPSBkcm9wX3doaXRlc3BhY2UKICAgICAgICAgc2VsZi5icmVha19vbl9oeXBoZW5zID0gYnJlYWtfb25faHlwaGVucworICAgICAgICBzZWxmLnRhYnNpemUgPSB0YWJzaXplCiAKIAogICAgICMgLS0gUHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjMsNyArMTI4LDcgQEAKICAgICAgICAgYmVjb21lcyAiIGZvbyAgICBiYXIgIGJheiIuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLmV4cGFuZF90YWJzOgotICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicygpCisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5leHBhbmR0YWJzKHNlbGYudGFic2l6ZSkKICAgICAgICAgaWYgc2VsZi5yZXBsYWNlX3doaXRlc3BhY2U6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmFuc2xhdGUoc2VsZi51bmljb2RlX3doaXRlc3BhY2VfdHJhbnMpCiAgICAgICAgIHJldHVybiB0ZXh0CkBAIC0zODEsNiArMzg2LDI1IEBACiAgICAgICAgIHRleHQgPSByZS5zdWIocicoP20pXicgKyBtYXJnaW4sICcnLCB0ZXh0KQogICAgIHJldHVybiB0ZXh0CiAKKworZGVmIGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZT1Ob25lKToKKyAgICAiIiJBZGRzICdwcmVmaXgnIHRvIHRoZSBiZWdpbm5pbmcgb2Ygc2VsZWN0ZWQgbGluZXMgaW4gJ3RleHQnLgorCisgICAgSWYgJ3ByZWRpY2F0ZScgaXMgcHJvdmlkZWQsICdwcmVmaXgnIHdpbGwgb25seSBiZSBhZGRlZCB0byB0aGUgbGluZXMKKyAgICB3aGVyZSAncHJlZGljYXRlKGxpbmUpJyBpcyBUcnVlLiBJZiAncHJlZGljYXRlJyBpcyBub3QgcHJvdmlkZWQsCisgICAgaXQgd2lsbCBkZWZhdWx0IHRvIGFkZGluZyAncHJlZml4JyB0byBhbGwgbm9uLWVtcHR5IGxpbmVzIHRoYXQgZG8gbm90CisgICAgY29uc2lzdCBzb2xlbHkgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIGlmIHByZWRpY2F0ZSBpcyBOb25lOgorICAgICAgICBkZWYgcHJlZGljYXRlKGxpbmUpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKQorCisgICAgZGVmIHByZWZpeGVkX2xpbmVzKCk6CisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhUcnVlKToKKyAgICAgICAgICAgIHlpZWxkIChwcmVmaXggKyBsaW5lIGlmIHByZWRpY2F0ZShsaW5lKSBlbHNlIGxpbmUpCisgICAgcmV0dXJuICcnLmpvaW4ocHJlZml4ZWRfbGluZXMoKSkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICNwcmludCBkZWRlbnQoIlx0Zm9vXG5cdGJhciIpCiAgICAgI3ByaW50IGRlZGVudCgiICBcdGhlbGxvIHRoZXJlXG4gIFx0ICBob3cgYXJlIHlvdT8iKQpkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggNThmZmE3ZS4uNmMzNGQ0OSAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0zLDcgKzMsMTEgQEAKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IF90aHJlYWQKIAotZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lLCBzbGVlcCBhcyBfc2xlZXAKK2Zyb20gdGltZSBpbXBvcnQgc2xlZXAgYXMgX3NsZWVwCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjIGFzIF9mb3JtYXRfZXhjCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiAKQEAgLTE5LDEyICsyMywxMiBAQAogCiBfX2FsbF9fID0gWydhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywgJ2VudW1lcmF0ZScsICdFdmVudCcsCiAgICAgICAgICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsICdCYXJyaWVyJywKLSAgICAgICAgICAgJ1RpbWVyJywgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCisgICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQogCiAjIFJlbmFtZSBzb21lIHN0dWZmIHNvICJmcm9tIHRocmVhZGluZyBpbXBvcnQgKiIgaXMgc2FmZQogX3N0YXJ0X25ld190aHJlYWQgPSBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQKIF9hbGxvY2F0ZV9sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrCi1fZ2V0X2lkZW50ID0gX3RocmVhZC5nZXRfaWRlbnQKK2dldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CiBUaHJlYWRFcnJvciA9IF90aHJlYWQuZXJyb3IKIHRyeToKICAgICBfQ1JMb2NrID0gX3RocmVhZC5STG9jawpAQCAtMzQsNDAgKzM4LDYgQEAKIGRlbCBfdGhyZWFkCiAKIAotIyBEZWJ1ZyBzdXBwb3J0IChhZGFwdGVkIGZyb20gaWhvb2tzLnB5KS4KLQotX1ZFUkJPU0UgPSBGYWxzZQotCi1pZiBfX2RlYnVnX186Ci0KLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICAgICAgaWYgdmVyYm9zZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBfVkVSQk9TRQotICAgICAgICAgICAgc2VsZi5fdmVyYm9zZSA9IHZlcmJvc2UKLQotICAgICAgICBkZWYgX25vdGUoc2VsZiwgZm9ybWF0LCAqYXJncyk6Ci0gICAgICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCAlIGFyZ3MKLSAgICAgICAgICAgICAgICAjIElzc3VlICM0MTg4OiBjYWxsaW5nIGN1cnJlbnRfdGhyZWFkKCkgY2FuIGluY3VyIGFuIGluZmluaXRlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpb24gaWYgaXQgaGFzIHRvIGNyZWF0ZSBhIER1bW15VGhyZWFkIG9uIHRoZSBmbHkuCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBfZ2V0X2lkZW50KCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfYWN0aXZlW2lkZW50XS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gIjxPUyB0aHJlYWQgJWQ+IiAlIGlkZW50Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gIiVzOiAlc1xuIiAlIChuYW1lLCBmb3JtYXQpCi0gICAgICAgICAgICAgICAgX3N5cy5zdGRlcnIud3JpdGUoZm9ybWF0KQotCi1lbHNlOgotICAgICMgRGlzYWJsZSB0aGlzIHdoZW4gdXNpbmcgInB5dGhvbiAtTyIKLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZGVmIF9ub3RlKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQogIyBTdXBwb3J0IGZvciBwcm9maWxlIGFuZCB0cmFjZSBob29rcwogCiBfcHJvZmlsZV9ob29rID0gTm9uZQpAQCAtODUsMTcgKzU1LDE0IEBACiAKIExvY2sgPSBfYWxsb2NhdGVfbG9jawogCi1kZWYgUkxvY2sodmVyYm9zZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAgIGlmIHZlcmJvc2UgaXMgTm9uZToKLSAgICAgICAgdmVyYm9zZSA9IF9WRVJCT1NFCi0gICAgaWYgKF9fZGVidWdfXyBhbmQgdmVyYm9zZSkgb3IgX0NSTG9jayBpcyBOb25lOgotICAgICAgICByZXR1cm4gX1B5UkxvY2sodmVyYm9zZSwgKmFyZ3MsICoqa3dhcmdzKQorZGVmIFJMb2NrKCphcmdzLCAqKmt3YXJncyk6CisgICAgaWYgX0NSTG9jayBpcyBOb25lOgorICAgICAgICByZXR1cm4gX1B5UkxvY2soKmFyZ3MsICoqa3dhcmdzKQogICAgIHJldHVybiBfQ1JMb2NrKCphcmdzLCAqKmt3YXJncykKIAotY2xhc3MgX1JMb2NrKF9WZXJib3NlKToKK2NsYXNzIF9STG9jazoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5fYmxvY2sgPSBfYWxsb2NhdGVfbG9jaygpCiAgICAgICAgIHNlbGYuX293bmVyID0gTm9uZQogICAgICAgICBzZWxmLl9jb3VudCA9IDAKQEAgLTExMCwzNyArNzcsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgb3duZXIsIHNlbGYuX2NvdW50KQogCiAgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSk6Ci0gICAgICAgIG1lID0gX2dldF9pZGVudCgpCisgICAgICAgIG1lID0gZ2V0X2lkZW50KCkKICAgICAgICAgaWYgc2VsZi5fb3duZXIgPT0gbWU6CiAgICAgICAgICAgICBzZWxmLl9jb3VudCA9IHNlbGYuX2NvdW50ICsgMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiByZWN1cnNpdmUgc3VjY2VzcyIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgcmMgPSBzZWxmLl9ibG9jay5hY3F1aXJlKGJsb2NraW5nLCB0aW1lb3V0KQogICAgICAgICBpZiByYzoKICAgICAgICAgICAgIHNlbGYuX293bmVyID0gbWUKICAgICAgICAgICAgIHNlbGYuX2NvdW50ID0gMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiBpbml0aWFsIHN1Y2Nlc3MiLCBzZWxmLCBibG9ja2luZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogZmFpbHVyZSIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICByZXR1cm4gcmMKIAogICAgIF9fZW50ZXJfXyA9IGFjcXVpcmUKIAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9vd25lciAhPSBfZ2V0X2lkZW50KCk6CisgICAgICAgIGlmIHNlbGYuX293bmVyICE9IGdldF9pZGVudCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICAgc2VsZi5fY291bnQgPSBjb3VudCA9IHNlbGYuX2NvdW50IC0gMQogICAgICAgICBpZiBub3QgY291bnQ6CiAgICAgICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnJlbGVhc2UoKTogZmluYWwgcmVsZWFzZSIsIHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMucmVsZWFzZSgpOiBub24tZmluYWwgcmVsZWFzZSIsIHNlbGYpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgogICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtMTUwLDEyICsxMDUsMTAgQEAKICAgICBkZWYgX2FjcXVpcmVfcmVzdG9yZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX2Jsb2NrLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl9jb3VudCwgc2VsZi5fb3duZXIgPSBzdGF0ZQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYWNxdWlyZV9yZXN0b3JlKCkiLCBzZWxmKQogCiAgICAgZGVmIF9yZWxlYXNlX3NhdmUoc2VsZik6Ci0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9yZWxlYXNlX3NhdmUoKSIsIHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2NvdW50ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQogICAgICAgICBjb3VudCA9IHNlbGYuX2NvdW50CiAgICAgICAgIHNlbGYuX2NvdW50ID0gMAogICAgICAgICBvd25lciA9IHNlbGYuX293bmVyCkBAIC0xNjQsMTggKzExNywxNCBAQAogICAgICAgICByZXR1cm4gKGNvdW50LCBvd25lcikKIAogICAgIGRlZiBfaXNfb3duZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vd25lciA9PSBfZ2V0X2lkZW50KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX293bmVyID09IGdldF9pZGVudCgpCiAKIF9QeVJMb2NrID0gX1JMb2NrCiAKIAotZGVmIENvbmRpdGlvbigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfQ29uZGl0aW9uKCphcmdzLCAqKmt3YXJncykKK2NsYXNzIENvbmRpdGlvbjoKIAotY2xhc3MgX0NvbmRpdGlvbihfVmVyYm9zZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jaz1Ob25lLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrPU5vbmUpOgogICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICBsb2NrID0gUkxvY2soKQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jawpAQCAtMjM0LDIzICsxODMsMTYgQEAKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB3YWl0ZXIuYWNxdWlyZSgpCiAgICAgICAgICAgICAgICAgZ290aXQgPSBUcnVlCi0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCk6IGdvdCBpdCIsIHNlbGYpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPiAwOgogICAgICAgICAgICAgICAgICAgICBnb3RpdCA9IHdhaXRlci5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShGYWxzZSkKICAgICAgICAgICAgICAgICBpZiBub3QgZ290aXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiB0aW1lZCBvdXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiBnb3QgaXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuIGdvdGl0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9hY3F1aXJlX3Jlc3RvcmUoc2F2ZWRfc3RhdGUpCkBAIC0yNjYsMTkgKzIwOCw5IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXRfZm9yKCVyLCAlcik6IFRpbWVkIG91dC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0X2ZvciglciwgJXIpOiBXYWl0aW5nIHdpdGggdGltZW91dD0lcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0LCB3YWl0dGltZSkKICAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdF9mb3IoJXIsICVyKTogU3VjY2Vzcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CkBAIC0yODcsMTEgKzIxOSw3IEBACiAgICAgICAgIF9fd2FpdGVycyA9IHNlbGYuX3dhaXRlcnMKICAgICAgICAgd2FpdGVycyA9IF9fd2FpdGVyc1s6bl0KICAgICAgICAgaWYgbm90IHdhaXRlcnM6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMubm90aWZ5KCk6IG5vIHdhaXRlcnMiLCBzZWxmKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX25vdGUoIiVzLm5vdGlmeSgpOiBub3RpZnlpbmcgJWQgd2FpdGVyJXMiLCBzZWxmLCBuLAotICAgICAgICAgICAgICAgICAgIG4hPTEgYW5kICJzIiBvciAiIikKICAgICAgICAgZm9yIHdhaXRlciBpbiB3YWl0ZXJzOgogICAgICAgICAgICAgd2FpdGVyLnJlbGVhc2UoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMzA1LDE3ICsyMzMsMTMgQEAKICAgICBub3RpZnlBbGwgPSBub3RpZnlfYWxsCiAKIAotZGVmIFNlbWFwaG9yZSgqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX1NlbWFwaG9yZShfVmVyYm9zZSk6CitjbGFzcyBTZW1hcGhvcmU6CiAKICAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIHNlbWFwaG9yZSBjbGFzcywgYnV0IG5vdCBxdWl0ZSB0aGUgc2FtZSAobm8gbWF4aW11bSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xLCB2ZXJib3NlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xKToKICAgICAgICAgaWYgdmFsdWUgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VtYXBob3JlIGluaXRpYWwgdmFsdWUgbXVzdCBiZSA+PSAwIikKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKIApAQCAtMzI4LDkgKzI1Miw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3ZhbHVlID09IDA6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogYmxvY2tlZCB3YWl0aW5nLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBibG9ja2luZywgc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CkBAIC0zNDEsOSArMjYyLDYgQEAKICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSAtIDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLl92YWx1ZSkKICAgICAgICAgICAgIHJjID0gVHJ1ZQogICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogICAgICAgICByZXR1cm4gcmMKQEAgLTM1Myw5ICsyNzEsNiBAQAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl92YWx1ZSA9IHNlbGYuX3ZhbHVlICsgMQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5yZWxlYXNlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHNlbGYuX3ZhbHVlKQogICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKQEAgLTM2MywzMCArMjc4LDIzIEBACiAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKIAotZGVmIEJvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX0JvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfQm91bmRlZFNlbWFwaG9yZShfU2VtYXBob3JlKToKK2NsYXNzIEJvdW5kZWRTZW1hcGhvcmUoU2VtYXBob3JlKToKICAgICAiIiJTZW1hcGhvcmUgdGhhdCBjaGVja3MgdGhhdCAjIHJlbGVhc2VzIGlzIDw9ICMgYWNxdWlyZXMiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1NlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CisgICAgICAgIFNlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSkKICAgICAgICAgc2VsZi5faW5pdGlhbF92YWx1ZSA9IHZhbHVlCiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fdmFsdWUgPj0gc2VsZi5faW5pdGlhbF92YWx1ZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbWFwaG9yZSByZWxlYXNlZCB0b28gbWFueSB0aW1lcyIpCi0gICAgICAgIHJldHVybiBfU2VtYXBob3JlLnJlbGVhc2Uoc2VsZikKKyAgICAgICAgcmV0dXJuIFNlbWFwaG9yZS5yZWxlYXNlKHNlbGYpCiAKIAotZGVmIEV2ZW50KCphcmdzLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIF9FdmVudCgqYXJncywgKiprd2FyZ3MpCi0KLWNsYXNzIF9FdmVudChfVmVyYm9zZSk6CitjbGFzcyBFdmVudDoKIAogICAgICMgQWZ0ZXIgVGltIFBldGVycycgZXZlbnQgY2xhc3MgKHdpdGhvdXQgaXNfcG9zdGVkKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl9mbGFnID0gRmFsc2UKIApAQCAtNDM2LDEzICszNDQsMTMgQEAKICMgc2luY2UgdGhlIHByZXZpb3VzIGN5Y2xlLiAgSW4gYWRkaXRpb24sIGEgJ3Jlc2V0dGluZycgc3RhdGUgZXhpc3RzIHdoaWNoIGlzCiAjIHNpbWlsYXIgdG8gJ2RyYWluaW5nJyBleGNlcHQgdGhhdCB0aHJlYWRzIGxlYXZlIHdpdGggYSBCcm9rZW5CYXJyaWVyRXJyb3IsCiAjIGFuZCBhICdicm9rZW4nIHN0YXRlIGluIHdoaWNoIGFsbCB0aHJlYWRzIGdldCB0aGUgZXhjZXB0aW9uLgotY2xhc3MgQmFycmllcihfVmVyYm9zZSk6CitjbGFzcyBCYXJyaWVyOgogICAgICIiIgogICAgIEJhcnJpZXIuICBVc2VmdWwgZm9yIHN5bmNocm9uaXppbmcgYSBmaXhlZCBudW1iZXIgb2YgdGhyZWFkcwogICAgIGF0IGtub3duIHN5bmNocm9uaXphdGlvbiBwb2ludHMuICBUaHJlYWRzIGJsb2NrIG9uICd3YWl0KCknIGFuZCBhcmUKICAgICBzaW11bHRhbmVvdXNseSBvbmNlIHRoZXkgaGF2ZSBhbGwgbWFkZSB0aGF0IGNhbGwuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgYmFycmllciwgaW5pdGlhbGlzZWQgdG8gJ3BhcnRpZXMnIHRocmVhZHMuCiAgICAgICAgICdhY3Rpb24nIGlzIGEgY2FsbGFibGUgd2hpY2gsIHdoZW4gc3VwcGxpZWQsIHdpbGwgYmUgY2FsbGVkCkBAIC00NTEsNyArMzU5LDYgQEAKICAgICAgICAgSWYgYSAndGltZW91dCcgaXMgcHJvdmlkZWQsIGl0IGlzIHVzZXMgYXMgdGhlIGRlZmF1bHQgZm9yCiAgICAgICAgIGFsbCBzdWJzZXF1ZW50ICd3YWl0KCknIGNhbGxzLgogICAgICAgICAiIiIKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX2FjdGlvbiA9IGFjdGlvbgogICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dApAQCAtNjEyLDcgKzUxOSw3IEBACiAKICMgTWFpbiBjbGFzcyBmb3IgdGhyZWFkcwogCi1jbGFzcyBUaHJlYWQoX1ZlcmJvc2UpOgorY2xhc3MgVGhyZWFkOgogCiAgICAgX19pbml0aWFsaXplZCA9IEZhbHNlCiAgICAgIyBOZWVkIHRvIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHN5cy5leGNfaW5mbyBmb3IgcHJpbnRpbmcKQEAgLTYyNSwxNiArNTMyLDE4IEBACiAgICAgI1hYWCBfX2V4Y19jbGVhciA9IF9zeXMuZXhjX2NsZWFyCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYXJncz0oKSwga3dhcmdzPU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAiZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3ciCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIGlmIGt3YXJncyBpcyBOb25lOgogICAgICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgIHNlbGYuX25hbWUgPSBzdHIobmFtZSBvciBfbmV3bmFtZSgpKQogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKLSAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBzZWxmLl9zZXRfZGFlbW9uKCkKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gY3VycmVudF90aHJlYWQoKS5kYWVtb24KICAgICAgICAgc2VsZi5faWRlbnQgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBFdmVudCgpCiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQpAQCAtNjUyLDEwICs1NjEsNiBAQAogICAgICAgICAgICAgc2VsZi5fYmxvY2suX19pbml0X18oKQogICAgICAgICBzZWxmLl9zdGFydGVkLl9yZXNldF9pbnRlcm5hbF9sb2NrcygpCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgICMgT3ZlcnJpZGRlbiBpbiBfTWFpblRocmVhZCBhbmQgX0R1bW15VGhyZWFkCi0gICAgICAgIHJldHVybiBjdXJyZW50X3RocmVhZCgpLmRhZW1vbgotCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCIKICAgICAgICAgc3RhdHVzID0gImluaXRpYWwiCkBAIC02NzUsOCArNTgwLDYgQEAKIAogICAgICAgICBpZiBzZWxmLl9zdGFydGVkLmlzX3NldCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0aHJlYWRzIGNhbiBvbmx5IGJlIHN0YXJ0ZWQgb25jZSIpCi0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnN0YXJ0KCk6IHN0YXJ0aW5nIHRocmVhZCIsIHNlbGYpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2xpbWJvW3NlbGZdID0gc2VsZgogICAgICAgICB0cnk6CkBAIC03MTcsNyArNjIwLDcgQEAKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgX3NldF9pZGVudChzZWxmKToKLSAgICAgICAgc2VsZi5faWRlbnQgPSBfZ2V0X2lkZW50KCkKKyAgICAgICAgc2VsZi5faWRlbnQgPSBnZXRfaWRlbnQoKQogCiAgICAgZGVmIF9ib290c3RyYXBfaW5uZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTcyNiwyNCArNjI5LDE3IEBACiAgICAgICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgICAgICBfYWN0aXZlW3NlbGYuX2lkZW50XSA9IHNlbGYKICAgICAgICAgICAgICAgICBkZWwgX2xpbWJvW3NlbGZdCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiB0aHJlYWQgc3RhcnRlZCIsIHNlbGYpCiAKICAgICAgICAgICAgIGlmIF90cmFjZV9ob29rOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogcmVnaXN0ZXJpbmcgdHJhY2UgaG9vayIsIHNlbGYpCiAgICAgICAgICAgICAgICAgX3N5cy5zZXR0cmFjZShfdHJhY2VfaG9vaykKICAgICAgICAgICAgIGlmIF9wcm9maWxlX2hvb2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiByZWdpc3RlcmluZyBwcm9maWxlIGhvb2siLCBzZWxmKQogICAgICAgICAgICAgICAgIF9zeXMuc2V0cHJvZmlsZShfcHJvZmlsZV9ob29rKQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5ydW4oKQogICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHJhaXNlZCBTeXN0ZW1FeGl0Iiwgc2VsZikKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHVuaGFuZGxlZCBleGNlcHRpb24iLCBzZWxmKQogICAgICAgICAgICAgICAgICMgSWYgc3lzLnN0ZGVyciBpcyBubyBtb3JlIChtb3N0IGxpa2VseSBmcm9tIGludGVycHJldGVyCiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93bikgdXNlIHNlbGYuX3N0ZGVyci4gIE90aGVyd2lzZSBzdGlsbCB1c2Ugc3lzIChhcyBpbgogICAgICAgICAgICAgICAgICMgX3N5cykgaW4gY2FzZSBzeXMuc3RkZXJyIHdhcyByZWRlZmluZWQgc2luY2UgdGhlIGNyZWF0aW9uIG9mCkBAIC03NzQsOSArNjcwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBob2c7IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgZWxzZSBpcyBqdXN0IGZvciB0aG9yb3VnaG5lc3MKICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IG5vcm1hbCByZXR1cm4iLCBzZWxmKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAjIFByZXZlbnQgYSByYWNlIGluCiAgICAgICAgICAgICAgICAgIyB0ZXN0X3RocmVhZGluZy50ZXN0X25vX3JlZmN5Y2xlX3Rocm91Z2hfdGFyZ2V0IHdoZW4KQEAgLTc5MCw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBjYWxsIHNlbGYuX2RlbGV0ZSgpIGJlY2F1c2UgaXQgYWxzbwogICAgICAgICAgICAgICAgICAgICAjIGdyYWJzIF9hY3RpdmVfbGltYm9fbG9jay4KLSAgICAgICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIApAQCAtODI2LDcgKzcxOSw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6Ci0gICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgICAgICAgICAgICAgICMgVGhlcmUgbXVzdCBub3QgYmUgYW55IHB5dGhvbiBjb2RlIGJldHdlZW4gdGhlIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgICAgICAjIGFuZCBhZnRlciB0aGUgbG9jayBpcyByZWxlYXNlZC4gIE90aGVyd2lzZSBhIHRyYWNpbmcgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAjIGNvdWxkIHRyeSB0byBhY3F1aXJlIHRoZSBsb2NrIGFnYWluIGluIHRoZSBzYW1lIHRocmVhZCwgKGluCkBAIC04NDMsMjkgKzczNiwxOCBAQAogICAgICAgICBpZiBzZWxmIGlzIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCBqb2luIGN1cnJlbnQgdGhyZWFkIikKIAotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc3RvcHBlZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHdhaXRpbmcgdW50aWwgdGhyZWFkIHN0b3BzIiwgc2VsZikKLQogICAgICAgICBzZWxmLl9ibG9jay5hY3F1aXJlKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wcGVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9ibG9jay53YWl0KCkKLSAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmpvaW4oKTogdGhyZWFkIHN0b3BwZWQiLCBzZWxmKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF90aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BwZWQ6CiAgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gZGVhZGxpbmUgLSBfdGltZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRlbGF5IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB0aW1lZCBvdXQiLCBzZWxmKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmxvY2sud2FpdChkZWxheSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkIiwgc2VsZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQogCkBAIC05MTcsMTAgKzc5OSw3IEBACiAKICMgVGhlIHRpbWVyIGNsYXNzIHdhcyBjb250cmlidXRlZCBieSBJdGFtYXIgU2h0dWxsLVRyYXVyaW5nCiAKLWRlZiBUaW1lcigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfVGltZXIoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfVGltZXIoVGhyZWFkKToKK2NsYXNzIFRpbWVyKFRocmVhZCk6CiAgICAgIiIiQ2FsbCBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzOgogCiAgICAgdCA9IFRpbWVyKDMwLjAsIGYsIGFyZ3M9W10sIGt3YXJncz17fSkKQEAgLTk1MiwyNiArODMxLDE4IEBACiBjbGFzcyBfTWFpblRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iTWFpblRocmVhZCIpCisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPSJNYWluVGhyZWFkIiwgZGFlbW9uPUZhbHNlKQogICAgICAgICBzZWxmLl9zdGFydGVkLnNldCgpCiAgICAgICAgIHNlbGYuX3NldF9pZGVudCgpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9leGl0ZnVuYyhzZWxmKToKICAgICAgICAgc2VsZi5fc3RvcCgpCiAgICAgICAgIHQgPSBfcGlja1NvbWVOb25EYWVtb25UaHJlYWQoKQotICAgICAgICBpZiB0OgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzOiB3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzIiwgc2VsZikKICAgICAgICAgd2hpbGUgdDoKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICB0ID0gX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCkKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXM6IGV4aXRpbmciLCBzZWxmKQogICAgICAgICBzZWxmLl9kZWxldGUoKQogCiBkZWYgX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCk6CkBAIC05OTIsNyArODYzLDcgQEAKIGNsYXNzIF9EdW1teVRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT1fbmV3bmFtZSgiRHVtbXktJWQiKSkKKyAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9X25ld25hbWUoIkR1bW15LSVkIiksIGRhZW1vbj1UcnVlKQogCiAgICAgICAgICMgVGhyZWFkLl9ibG9jayBjb25zdW1lcyBhbiBPUy1sZXZlbCBsb2NraW5nIHByaW1pdGl2ZSwgd2hpY2gKICAgICAgICAgIyBjYW4gbmV2ZXIgYmUgdXNlZCBieSBhIF9EdW1teVRocmVhZC4gIFNpbmNlIGEgX0R1bW15VGhyZWFkCkBAIC0xMDA0LDkgKzg3NSw2IEBACiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX3N0b3Aoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMTAxOCw5ICs4ODYsOCBAQAogCiBkZWYgY3VycmVudF90aHJlYWQoKToKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgcmV0dXJuIF9hY3RpdmVbZ2V0X2lkZW50KCldCiAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjI3ByaW50ICJjdXJyZW50X3RocmVhZCgpOiBubyBjdXJyZW50IHRocmVhZCBmb3IiLCBfZ2V0X2lkZW50KCkKICAgICAgICAgcmV0dXJuIF9EdW1teVRocmVhZCgpCiAKIGN1cnJlbnRUaHJlYWQgPSBjdXJyZW50X3RocmVhZApAQCAtMTA3Nyw3ICs5NDQsNyBAQAogICAgICAgICAgICAgaWYgdGhyZWFkIGlzIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBvbmx5IG9uZSBhY3RpdmUgdGhyZWFkLiBXZSByZXNldCB0aGUgaWRlbnQgdG8KICAgICAgICAgICAgICAgICAjIGl0cyBuZXcgdmFsdWUgc2luY2UgaXQgY2FuIGhhdmUgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICBpZGVudCA9IF9nZXRfaWRlbnQoKQorICAgICAgICAgICAgICAgIGlkZW50ID0gZ2V0X2lkZW50KCkKICAgICAgICAgICAgICAgICB0aHJlYWQuX2lkZW50ID0gaWRlbnQKICAgICAgICAgICAgICAgICBuZXdfYWN0aXZlW2lkZW50XSA9IHRocmVhZAogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5CmluZGV4IDFhZTU5ZTAuLjRmN2QyOGYgMTAwNjQ0Ci0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtOSwxNCArOSwxNSBAQAogTGlicmFyeSB1c2FnZTogc2VlIHRoZSBUaW1lciBjbGFzcy4KIAogQ29tbWFuZCBsaW5lIHVzYWdlOgotICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstaF0gWy0tXSBbc3RhdGVtZW50XQorICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstcF0gWy1oXSBbLS1dIFtzdGF0ZW1lbnRdCiAKIE9wdGlvbnM6CiAgIC1uLy0tbnVtYmVyIE46IGhvdyBtYW55IHRpbWVzIHRvIGV4ZWN1dGUgJ3N0YXRlbWVudCcgKGRlZmF1bHQ6IHNlZSBiZWxvdykKICAgLXIvLS1yZXBlYXQgTjogaG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0aW1lciAoZGVmYXVsdCAzKQogICAtcy8tLXNldHVwIFM6IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZCBvbmNlIGluaXRpYWxseSAoZGVmYXVsdCAncGFzcycpCi0gIC10Ly0tdGltZTogdXNlIHRpbWUudGltZSgpIChkZWZhdWx0IG9uIFVuaXgpCi0gIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlZmF1bHQgb24gV2luZG93cykKKyAgLXAvLS1wcm9jZXNzOiB1c2UgdGltZS5wcm9jZXNzX3RpbWUoKSAoZGVmYXVsdCBpcyB0aW1lLnBlcmZfY291bnRlcigpKQorICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVwcmVjYXRlZCkKKyAgLWMvLS1jbG9jazogdXNlIHRpbWUuY2xvY2soKSAoZGVwcmVjYXRlZCkKICAgLXYvLS12ZXJib3NlOiBwcmludCByYXcgdGltaW5nIHJlc3VsdHM7IHJlcGVhdCBmb3IgbW9yZSBkaWdpdHMgcHJlY2lzaW9uCiAgIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgIC0tOiBzZXBhcmF0ZSBvcHRpb25zIGZyb20gc3RhdGVtZW50LCB1c2Ugd2hlbiBzdGF0ZW1lbnQgc3RhcnRzIHdpdGggLQpAQCAtNjYsMjMgKzY3LDE3IEBACiBkdW1teV9zcmNfbmFtZSA9ICI8dGltZWl0LXNyYz4iCiBkZWZhdWx0X251bWJlciA9IDEwMDAwMDAKIGRlZmF1bHRfcmVwZWF0ID0gMwotCi1pZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAjIE9uIFdpbmRvd3MsIHRoZSBiZXN0IHRpbWVyIGlzIHRpbWUuY2xvY2soKQotICAgIGRlZmF1bHRfdGltZXIgPSB0aW1lLmNsb2NrCi1lbHNlOgotICAgICMgT24gbW9zdCBvdGhlciBwbGF0Zm9ybXMgdGhlIGJlc3QgdGltZXIgaXMgdGltZS50aW1lKCkKLSAgICBkZWZhdWx0X3RpbWVyID0gdGltZS50aW1lCitkZWZhdWx0X3RpbWVyID0gdGltZS5wZXJmX2NvdW50ZXIKIAogIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKICMgaW4gVGltZXIuX19pbml0X18oKSBkZXBlbmQgb24gc2V0dXAgYmVpbmcgaW5kZW50ZWQgNCBzcGFjZXMgYW5kIHN0bXQKICMgYmVpbmcgaW5kZW50ZWQgOCBzcGFjZXMuCiB0ZW1wbGF0ZSA9ICIiIgogZGVmIGlubmVyKF9pdCwgX3RpbWVyKToKLSAgICAlKHNldHVwKXMKKyAgICB7c2V0dXB9CiAgICAgX3QwID0gX3RpbWVyKCkKICAgICBmb3IgX2kgaW4gX2l0OgotICAgICAgICAlKHN0bXQpcworICAgICAgICB7c3RtdH0KICAgICBfdDEgPSBfdGltZXIoKQogICAgIHJldHVybiBfdDEgLSBfdDAKICIiIgpAQCAtMTI2LDkgKzEyMSw5IEBACiAgICAgICAgICAgICBzdG10ID0gcmVpbmRlbnQoc3RtdCwgOCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CiAgICAgICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZSAlIHsnc3RtdCc6IHN0bXQsICdzZXR1cCc6IHNldHVwfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPXNldHVwKQogICAgICAgICAgICAgZWxpZiBjYWxsYWJsZShzZXR1cCk6Ci0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUgJSB7J3N0bXQnOiBzdG10LCAnc2V0dXAnOiAnX3NldHVwKCknfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPSdfc2V0dXAoKScpCiAgICAgICAgICAgICAgICAgbnNbJ19zZXR1cCddID0gc2V0dXAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQpAQCAtMjU1LDkgKzI1MCwxMCBAQAogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCiAgICAgaW1wb3J0IGdldG9wdAogICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjdmgiLAorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjpzOnI6dGNwdmgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bWJlcj0iLCAic2V0dXA9IiwgInJlcGVhdD0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSIsICJjbG9jayIsICJwcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICAgcHJpbnQoZXJyKQogICAgICAgICBwcmludCgidXNlIC1oLy0taGVscCBmb3IgY29tbWFuZCBsaW5lIGhlbHAiKQpAQCAtMjgyLDYgKzI3OCw4IEBACiAgICAgICAgICAgICB0aW1lciA9IHRpbWUudGltZQogICAgICAgICBpZiBvIGluICgiLWMiLCAiLS1jbG9jayIpOgogICAgICAgICAgICAgdGltZXIgPSB0aW1lLmNsb2NrCisgICAgICAgIGlmIG8gaW4gKCItcCIsICItLXByb2Nlc3MiKToKKyAgICAgICAgICAgIHRpbWVyID0gdGltZS5wcm9jZXNzX3RpbWUKICAgICAgICAgaWYgbyBpbiAoIi12IiwgIi0tdmVyYm9zZSIpOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gMQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCBhNmFkODg4Li5lYTIzNzA1IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzAsMTcgKzMwLDE5IEBACiB0ay5tYWlubG9vcCgpCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cwogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgIyBBdHRlbXB0IHRvIGNvbmZpZ3VyZSBUY2wvVGsgd2l0aG91dCByZXF1aXJpbmcgUEFUSAogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZpeAorCitpbXBvcnQgd2FybmluZ3MKKwogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiBUY2xFcnJvciA9IF90a2ludGVyLlRjbEVycm9yCiBmcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCAqCiBpbXBvcnQgcmUKIAorCiB3YW50b2JqZWN0cyA9IDEKIAogVGtWZXJzaW9uID0gZmxvYXQoX3RraW50ZXIuVEtfVkVSU0lPTikKQEAgLTE5MCw2ICsxOTIsNyBAQAogICAgIFN1YmNsYXNzZXMgU3RyaW5nVmFyLCBJbnRWYXIsIERvdWJsZVZhciwgQm9vbGVhblZhciBhcmUgc3BlY2lhbGl6YXRpb25zCiAgICAgdGhhdCBjb25zdHJhaW4gdGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gZ2V0KCkuIiIiCiAgICAgX2RlZmF1bHQgPSAiIgorICAgIF90ayA9IE5vbmUKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsIHZhbHVlPU5vbmUsIG5hbWU9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdCBhIHZhcmlhYmxlCiAKQEAgLTIwMCw2ICsyMDMsMTEgQEAKICAgICAgICAgSWYgTkFNRSBtYXRjaGVzIGFuIGV4aXN0aW5nIHZhcmlhYmxlIGFuZCBWQUxVRSBpcyBvbWl0dGVkCiAgICAgICAgIHRoZW4gdGhlIGV4aXN0aW5nIHZhbHVlIGlzIHJldGFpbmVkLgogICAgICAgICAiIiIKKyAgICAgICAgIyBjaGVjayBmb3IgdHlwZSBvZiBOQU1FIHBhcmFtZXRlciB0byBvdmVycmlkZSB3ZWlyZCBlcnJvciBtZXNzYWdlCisgICAgICAgICMgcmFpc2VkIGZyb20gTW9kdWxlcy9fdGtpbnRlci5jOlNldFZhciBsaWtlOgorICAgICAgICAjIFR5cGVFcnJvcjogc2V0dmFyKCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMiBnaXZlbikKKyAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyaW5nIikKICAgICAgICAgZ2xvYmFsIF92YXJudW0KICAgICAgICAgaWYgbm90IG1hc3RlcjoKICAgICAgICAgICAgIG1hc3RlciA9IF9kZWZhdWx0X3Jvb3QKQEAgLTIxMSwxOCArMjE5LDIxIEBACiAgICAgICAgICAgICBzZWxmLl9uYW1lID0gJ1BZX1ZBUicgKyByZXByKF92YXJudW0pCiAgICAgICAgICAgICBfdmFybnVtICs9IDEKICAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldCh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZSh2YWx1ZSkKICAgICAgICAgZWxpZiBub3Qgc2VsZi5fdGsuY2FsbCgiaW5mbyIsICJleGlzdHMiLCBzZWxmLl9uYW1lKToKLSAgICAgICAgICAgIHNlbGYuc2V0KHNlbGYuX2RlZmF1bHQpCisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoc2VsZi5fZGVmYXVsdCkKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgIiIiVW5zZXQgdGhlIHZhcmlhYmxlIGluIFRjbC4iIiIKLSAgICAgICAgc2VsZi5fdGsuZ2xvYmFsdW5zZXR2YXIoc2VsZi5fbmFtZSkKKyAgICAgICAgaWYgKHNlbGYuX3RrIGlzIG5vdCBOb25lIGFuZCBzZWxmLl90ay5jYWxsKCJpbmZvIiwgImV4aXN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lKSk6CisgICAgICAgICAgICBzZWxmLl90ay5nbG9iYWx1bnNldHZhcihzZWxmLl9uYW1lKQogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGluIFRjbC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKICAgICBkZWYgc2V0KHNlbGYsIHZhbHVlKToKICAgICAgICAgIiIiU2V0IHRoZSB2YXJpYWJsZSB0byBWQUxVRS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdsb2JhbHNldHZhcihzZWxmLl9uYW1lLCB2YWx1ZSkKKyAgICBpbml0aWFsaXplID0gc2V0CiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIHZhcmlhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpCkBAIC0yOTcsMTIgKzMwOCw2IEBACiAgICAgICAgICIiIgogICAgICAgICBWYXJpYWJsZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsIHZhbHVlLCBuYW1lKQogCi0gICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6Ci0gICAgICAgICIiIlNldCB0aGUgdmFyaWFibGUgdG8gdmFsdWUsIGNvbnZlcnRpbmcgYm9vbGVhbnMgdG8gaW50ZWdlcnMuIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGJvb2wpOgotICAgICAgICAgICAgdmFsdWUgPSBpbnQodmFsdWUpCi0gICAgICAgIHJldHVybiBWYXJpYWJsZS5zZXQoc2VsZiwgdmFsdWUpCi0KICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhbiBpbnRlZ2VyLiIiIgogICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKQEAgLTM0Myw3ICszNDgsMTAgQEAKIAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGFzIGEgYm9vbC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGJvb2xlYW4oc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0Ym9vbGVhbihzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCisgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKIAogZGVmIG1haW5sb29wKG49MCk6CiAgICAgIiIiUnVuIHRoZSBtYWluIGxvb3Agb2YgVGNsLiIiIgpAQCAtMzU1LDcgKzM2MywxMCBAQAogCiBkZWYgZ2V0Ym9vbGVhbihzKToKICAgICAiIiJDb252ZXJ0IHRydWUgYW5kIGZhbHNlIHRvIGludGVnZXIgdmFsdWVzIDEgYW5kIDAuIiIiCi0gICAgcmV0dXJuIF9kZWZhdWx0X3Jvb3QudGsuZ2V0Ym9vbGVhbihzKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIF9kZWZhdWx0X3Jvb3QudGsuZ2V0Ym9vbGVhbihzKQorICAgIGV4Y2VwdCBUY2xFcnJvcjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQogCiAjIE1ldGhvZHMgZGVmaW5lZCBvbiBib3RoIHRvcGxldmVsIGFuZCBpbnRlcmlvciB3aWRnZXRzCiBjbGFzcyBNaXNjOgpAQCAtNDQ1LDcgKzQ1NiwxMCBAQAogICAgIGdldGRvdWJsZSA9IGZsb2F0CiAgICAgZGVmIGdldGJvb2xlYW4oc2VsZiwgcyk6CiAgICAgICAgICIiIlJldHVybiBhIGJvb2xlYW4gdmFsdWUgZm9yIFRjbCBib29sZWFuIHZhbHVlcyB0cnVlIGFuZCBmYWxzZSBnaXZlbiBhcyBwYXJhbWV0ZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4ocykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0Ym9vbGVhbihzKQorICAgICAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCiAgICAgZGVmIGZvY3VzX3NldChzZWxmKToKICAgICAgICAgIiIiRGlyZWN0IGlucHV0IGZvY3VzIHRvIHRoaXMgd2lkZ2V0LgogCkBAIC0xMjE4LDcgKzEyMzIsNiBAQAogICAgICAgICByZXR1cm4gKGUsKQogICAgIGRlZiBfcmVwb3J0X2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCi0gICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgZXhjLCB2YWwsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgcm9vdCA9IHNlbGYuX3Jvb3QoKQogICAgICAgICByb290LnJlcG9ydF9jYWxsYmFja19leGNlcHRpb24oZXhjLCB2YWwsIHRiKQpAQCAtMTI5Myw2ICsxMzA2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAncGxhY2UnLCAnc2xhdmVzJywgc2VsZi5fdykpXQogICAgICMgR3JpZCBtZXRob2RzIHRoYXQgYXBwbHkgdG8gdGhlIG1hc3RlcgorICAgIGRlZiBncmlkX2FuY2hvcihzZWxmLCBhbmNob3I9Tm9uZSk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgYW5jaG9yIHZhbHVlIGNvbnRyb2xzIGhvdyB0byBwbGFjZSB0aGUgZ3JpZCB3aXRoaW4gdGhlCisgICAgICAgIG1hc3RlciB3aGVuIG5vIHJvdy9jb2x1bW4gaGFzIGFueSB3ZWlnaHQuCisKKyAgICAgICAgVGhlIGRlZmF1bHQgYW5jaG9yIGlzIG53LiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ2dyaWQnLCAnYW5jaG9yJywgc2VsZi5fdywgYW5jaG9yKQorICAgIGFuY2hvciA9IGdyaWRfYW5jaG9yCiAgICAgZGVmIGdyaWRfYmJveChzZWxmLCBjb2x1bW49Tm9uZSwgcm93PU5vbmUsIGNvbDI9Tm9uZSwgcm93Mj1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgdHVwbGUgb2YgaW50ZWdlciBjb29yZGluYXRlcyBmb3IgdGhlIGJvdW5kaW5nCiAgICAgICAgIGJveCBvZiB0aGlzIHdpZGdldCBjb250cm9sbGVkIGJ5IHRoZSBnZW9tZXRyeSBtYW5hZ2VyIGdyaWQuCkBAIC0xMzExLDcgKzEzMzEsNiBAQAogICAgICAgICBpZiBjb2wyIGlzIG5vdCBOb25lIGFuZCByb3cyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyAoY29sMiwgcm93MikKICAgICAgICAgcmV0dXJuIHNlbGYuX2dldGludHMoc2VsZi50ay5jYWxsKCphcmdzKSkgb3IgTm9uZQotCiAgICAgYmJveCA9IGdyaWRfYmJveAogICAgIGRlZiBfZ3JpZF9jb25maWd1cmUoc2VsZiwgY29tbWFuZCwgaW5kZXgsIGNuZiwga3cpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKQEAgLTE1NzAsNiArMTU4OSwxNCBAQAogICAgICAgICB0aGUgZm9jdXMuIFJldHVybiBjdXJyZW50IGZvY3VzIG1vZGVsIGlmIE1PREVMIGlzIE5vbmUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZvY3VzbW9kZWwnLCBzZWxmLl93LCBtb2RlbCkKICAgICBmb2N1c21vZGVsID0gd21fZm9jdXNtb2RlbAorICAgIGRlZiB3bV9mb3JnZXQoc2VsZiwgd2luZG93KTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlRoZSB3aW5kb3cgd2lsbCBiZSB1bm1hcHBlbmQgZnJvbSB0aGUgc2NyZWVuIGFuZCB3aWxsIG5vIGxvbmdlcgorICAgICAgICBiZSBtYW5hZ2VkIGJ5IHdtLiB0b3BsZXZlbCB3aW5kb3dzIHdpbGwgYmUgdHJlYXRlZCBsaWtlIGZyYW1lCisgICAgICAgIHdpbmRvd3Mgb25jZSB0aGV5IGFyZSBubyBsb25nZXIgbWFuYWdlZCBieSB3bSwgaG93ZXZlciwgdGhlIG1lbnUKKyAgICAgICAgb3B0aW9uIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSByZW1lbWJlcmVkIGFuZCB0aGUgbWVudXMgd2lsbCByZXR1cm4KKyAgICAgICAgb25jZSB0aGUgd2lkZ2V0IGlzIG1hbmFnZWQgYWdhaW4uIiIiCisgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnZm9yZ2V0Jywgd2luZG93KQorICAgIGZvcmdldCA9IHdtX2ZvcmdldAogICAgIGRlZiB3bV9mcmFtZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgZm9yIGRlY29yYXRpdmUgZnJhbWUgb2YgdGhpcyB3aWRnZXQgaWYgcHJlc2VudC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd20nLCAnZnJhbWUnLCBzZWxmLl93KQpAQCAtMTYyMyw2ICsxNjUwLDMxIEBACiAgICAgICAgIE5vbmUgaXMgZ2l2ZW4uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ljb25uYW1lJywgc2VsZi5fdywgbmV3TmFtZSkKICAgICBpY29ubmFtZSA9IHdtX2ljb25uYW1lCisgICAgZGVmIHdtX2ljb25waG90byhzZWxmLCBkZWZhdWx0PUZhbHNlLCAqYXJncyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJTZXRzIHRoZSB0aXRsZWJhciBpY29uIGZvciB0aGlzIHdpbmRvdyBiYXNlZCBvbiB0aGUgbmFtZWQgcGhvdG8KKyAgICAgICAgaW1hZ2VzIHBhc3NlZCB0aHJvdWdoIGFyZ3MuIElmIGRlZmF1bHQgaXMgVHJ1ZSwgdGhpcyBpcyBhcHBsaWVkIHRvCisgICAgICAgIGFsbCBmdXR1cmUgY3JlYXRlZCB0b3BsZXZlbHMgYXMgd2VsbC4KKworICAgICAgICBUaGUgZGF0YSBpbiB0aGUgaW1hZ2VzIGlzIHRha2VuIGFzIGEgc25hcHNob3QgYXQgdGhlIHRpbWUgb2YKKyAgICAgICAgaW52b2NhdGlvbi4gSWYgdGhlIGltYWdlcyBhcmUgbGF0ZXIgY2hhbmdlZCwgdGhpcyBpcyBub3QgcmVmbGVjdGVkCisgICAgICAgIHRvIHRoZSB0aXRsZWJhciBpY29ucy4gTXVsdGlwbGUgaW1hZ2VzIGFyZSBhY2NlcHRlZCB0byBhbGxvdworICAgICAgICBkaWZmZXJlbnQgaW1hZ2VzIHNpemVzIHRvIGJlIHByb3ZpZGVkLiBUaGUgd2luZG93IG1hbmFnZXIgbWF5IHNjYWxlCisgICAgICAgIHByb3ZpZGVkIGljb25zIHRvIGFuIGFwcHJvcHJpYXRlIHNpemUuCisKKyAgICAgICAgT24gV2luZG93cywgdGhlIGltYWdlcyBhcmUgcGFja2VkIGludG8gYSBXaW5kb3dzIGljb24gc3RydWN0dXJlLgorICAgICAgICBUaGlzIHdpbGwgb3ZlcnJpZGUgYW4gaWNvbiBzcGVjaWZpZWQgdG8gd21faWNvbmJpdG1hcCwgYW5kIHZpY2UKKyAgICAgICAgdmVyc2EuCisKKyAgICAgICAgT24gWCwgdGhlIGltYWdlcyBhcmUgYXJyYW5nZWQgaW50byB0aGUgX05FVF9XTV9JQ09OIFggcHJvcGVydHksCisgICAgICAgIHdoaWNoIG1vc3QgbW9kZXJuIHdpbmRvdyBtYW5hZ2VycyBzdXBwb3J0LiBBbiBpY29uIHNwZWNpZmllZCBieQorICAgICAgICB3bV9pY29uYml0bWFwIG1heSBleGlzdCBzaW11dWx0YW5lb3VzbHkuCisKKyAgICAgICAgT24gTWFjaW50b3NoLCB0aGlzIGN1cnJlbnRseSBkb2VzIG5vdGhpbmcuIiIiCisgICAgICAgIGlmIGRlZmF1bHQ6CisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ljb25waG90bycsIHNlbGYuX3csICItZGVmYXVsdCIsICphcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdpY29ucGhvdG8nLCBzZWxmLl93LCAqYXJncykKKyAgICBpY29ucGhvdG8gPSB3bV9pY29ucGhvdG8KICAgICBkZWYgd21faWNvbnBvc2l0aW9uKHNlbGYsIHg9Tm9uZSwgeT1Ob25lKToKICAgICAgICAgIiIiU2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgaWNvbiBvZiB0aGlzIHdpZGdldCB0byBYIGFuZCBZLiBSZXR1cm4KICAgICAgICAgYSB0dXBsZSBvZiB0aGUgY3VycmVudCB2YWx1ZXMgb2YgWCBhbmQgWCBpZiBOb25lIGlzIGdpdmVuLiIiIgpAQCAtMTYzNCw2ICsxNjg2LDEyIEBACiAgICAgICAgIHZhbHVlIGlmIE5vbmUgaXMgZ2l2ZW4uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ljb253aW5kb3cnLCBzZWxmLl93LCBwYXRoTmFtZSkKICAgICBpY29ud2luZG93ID0gd21faWNvbndpbmRvdworICAgIGRlZiB3bV9tYW5hZ2Uoc2VsZiwgd2lkZ2V0KTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlRoZSB3aWRnZXQgc3BlY2lmaWVkIHdpbGwgYmVjb21lIGEgc3RhbmQgYWxvbmUgdG9wLWxldmVsIHdpbmRvdy4KKyAgICAgICAgVGhlIHdpbmRvdyB3aWxsIGJlIGRlY29yYXRlZCB3aXRoIHRoZSB3aW5kb3cgbWFuYWdlcnMgdGl0bGUgYmFyLAorICAgICAgICBldGMuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnbWFuYWdlJywgd2lkZ2V0KQorICAgIG1hbmFnZSA9IHdtX21hbmFnZQogICAgIGRlZiB3bV9tYXhzaXplKHNlbGYsIHdpZHRoPU5vbmUsIGhlaWdodD1Ob25lKToKICAgICAgICAgIiIiU2V0IG1heCBXSURUSCBhbmQgSEVJR0hUIGZvciB0aGlzIHdpZGdldC4gSWYgdGhlIHdpbmRvdyBpcyBncmlkZGVkCiAgICAgICAgIHRoZSB2YWx1ZXMgYXJlIGdpdmVuIGluIGdyaWQgdW5pdHMuIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZXMgaWYgTm9uZQpAQCAtMTcyMiw3ICsxNzgwLDcgQEAKICAgICAgICAgIyBlbnN1cmUgdGhhdCBzZWxmLnRrIGlzIGFsd2F5cyBfc29tZXRoaW5nXy4KICAgICAgICAgc2VsZi50ayA9IE5vbmUKICAgICAgICAgaWYgYmFzZU5hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGltcG9ydCBzeXMsIG9zCisgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKICAgICAgICAgICAgIGJhc2VOYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2VOYW1lKQogICAgICAgICAgICAgaWYgZXh0IG5vdCBpbiAoJy5weScsICcucHljJywgJy5weW8nKToKQEAgLTE3OTgsNyArMTg1Niw3IEBACiAgICAgICAgICAgICBleGVjKG9wZW4oYmFzZV9weSkucmVhZCgpLCBkaXIpCiAgICAgZGVmIHJlcG9ydF9jYWxsYmFja19leGNlcHRpb24oc2VsZiwgZXhjLCB2YWwsIHRiKToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIEl0IHJlcG9ydHMgZXhjZXB0aW9uIG9uIHN5cy5zdGRlcnIuIiIiCi0gICAgICAgIGltcG9ydCB0cmFjZWJhY2ssIHN5cworICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkV4Y2VwdGlvbiBpbiBUa2ludGVyIGNhbGxiYWNrXG4iKQogICAgICAgICBzeXMubGFzdF90eXBlID0gZXhjCiAgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsCkBAIC0yMTIzLDI1ICsyMTgxLDQ1IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdpbnZva2UnKQogCisKICMgSW5kaWNlczoKICMgWFhYIEkgZG9uJ3QgbGlrZSB0aGVzZSAtLSB0YWtlIHRoZW0gYXdheQogZGVmIEF0RW5kKCk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdEVuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHJldHVybiAnZW5kJworCisKIGRlZiBBdEluc2VydCgqYXJncyk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdEluc2VydCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHMgPSAnaW5zZXJ0JwogICAgIGZvciBhIGluIGFyZ3M6CiAgICAgICAgIGlmIGE6IHMgPSBzICsgKCcgJyArIGEpCiAgICAgcmV0dXJuIHMKKworCiBkZWYgQXRTZWxGaXJzdCgpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRTZWxGaXJzdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHJldHVybiAnc2VsLmZpcnN0JworCisKIGRlZiBBdFNlbExhc3QoKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0U2VsTGFzdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHJldHVybiAnc2VsLmxhc3QnCisKKwogZGVmIEF0KHgsIHk9Tm9uZSk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGlmIHkgaXMgTm9uZToKICAgICAgICAgcmV0dXJuICdAJXInICUgKHgsKQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiAnQCVyLCVyJyAlICh4LCB5KQogCisKIGNsYXNzIENhbnZhcyhXaWRnZXQsIFhWaWV3LCBZVmlldyk6CiAgICAgIiIiQ2FudmFzIHdpZGdldCB0byBkaXNwbGF5IGdyYXBoaWNhbCBlbGVtZW50cyBsaWtlIGxpbmVzIG9yIHRleHQuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCBjbmY9e30sICoqa3cpOgpAQCAtMjcyNyw2ICsyODA1LDEwIEBACiAgICAgZGVmIHVucG9zdChzZWxmKToKICAgICAgICAgIiIiVW5tYXAgYSBtZW51LiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3VucG9zdCcpCisgICAgZGVmIHhwb3NpdGlvbihzZWxmLCBpbmRleCk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJSZXR1cm4gdGhlIHgtcG9zaXRpb24gb2YgdGhlIGxlZnRtb3N0IHBpeGVsIG9mIHRoZSBtZW51IGl0ZW0KKyAgICAgICAgYXQgSU5ERVguIiIiCisgICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKHNlbGYuX3csICd4cG9zaXRpb24nLCBpbmRleCkpCiAgICAgZGVmIHlwb3NpdGlvbihzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgeS1wb3NpdGlvbiBvZiB0aGUgdG9wbW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtIGF0IElOREVYLiIiIgogICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgKQEAgLTI4ODYsNiArMjk2OCwyNSBAQAogICAgICAgICByZWxhdGlvbiBPUCBpcyBzYXRpc2ZpZWQuIE9QIGlzIG9uZSBvZiA8LCA8PSwgPT0sID49LCA+LCBvciAhPS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0Ym9vbGVhbihzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnY29tcGFyZScsIGluZGV4MSwgb3AsIGluZGV4MikpCisgICAgZGVmIGNvdW50KHNlbGYsIGluZGV4MSwgaW5kZXgyLCAqYXJncyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJDb3VudHMgdGhlIG51bWJlciBvZiByZWxldmFudCB0aGluZ3MgYmV0d2VlbiB0aGUgdHdvIGluZGljZXMuCisgICAgICAgIElmIGluZGV4MSBpcyBhZnRlciBpbmRleDIsIHRoZSByZXN1bHQgd2lsbCBiZSBhIG5lZ2F0aXZlIG51bWJlcgorICAgICAgICAoYW5kIHRoaXMgaG9sZHMgZm9yIGVhY2ggb2YgdGhlIHBvc3NpYmxlIG9wdGlvbnMpLgorCisgICAgICAgIFRoZSBhY3R1YWwgaXRlbXMgd2hpY2ggYXJlIGNvdW50ZWQgZGVwZW5kcyBvbiB0aGUgb3B0aW9ucyBnaXZlbiBieQorICAgICAgICBhcmdzLiBUaGUgcmVzdWx0IGlzIGEgbGlzdCBvZiBpbnRlZ2Vycywgb25lIGZvciB0aGUgcmVzdWx0IG9mIGVhY2gKKyAgICAgICAgY291bnRpbmcgb3B0aW9uIGdpdmVuLiBWYWxpZCBjb3VudGluZyBvcHRpb25zIGFyZSAiY2hhcnMiLAorICAgICAgICAiZGlzcGxheWNoYXJzIiwgImRpc3BsYXlpbmRpY2VzIiwgImRpc3BsYXlsaW5lcyIsICJpbmRpY2VzIiwKKyAgICAgICAgImxpbmVzIiwgInhwaXhlbHMiIGFuZCAieXBpeGVscyIuIFRoZXJlIGlzIGFuIGFkZGl0aW9uYWwgcG9zc2libGUKKyAgICAgICAgb3B0aW9uICJ1cGRhdGUiLCB3aGljaCBpZiBnaXZlbiB0aGVuIGFsbCBzdWJzZXF1ZW50IG9wdGlvbnMgZW5zdXJlCisgICAgICAgIHRoYXQgYW55IHBvc3NpYmxlIG91dCBvZiBkYXRlIGluZm9ybWF0aW9uIGlzIHJlY2FsY3VsYXRlZC4iIiIKKyAgICAgICAgYXJncyA9IFsnLSVzJyAlIGFyZyBmb3IgYXJnIGluIGFyZ3MgaWYgbm90IGFyZy5zdGFydHN3aXRoKCctJyldCisgICAgICAgIGFyZ3MgKz0gW2luZGV4MSwgaW5kZXgyXQorICAgICAgICByZXMgPSBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2NvdW50JywgKmFyZ3MpIG9yIE5vbmUKKyAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lIGFuZCBsZW4oYXJncykgPD0gMzoKKyAgICAgICAgICAgIHJldHVybiAocmVzLCApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcmVzCiAgICAgZGVmIGRlYnVnKHNlbGYsIGJvb2xlYW49Tm9uZSk6CiAgICAgICAgICIiIlR1cm4gb24gdGhlIGludGVybmFsIGNvbnNpc3RlbmN5IGNoZWNrcyBvZiB0aGUgQi1UcmVlIGluc2lkZSB0aGUgdGV4dAogICAgICAgICB3aWRnZXQgYWNjb3JkaW5nIHRvIEJPT0xFQU4uIiIiCkBAIC0zMDQ4LDYgKzMxNDksMjQgQEAKICAgICBkZWYgbWFya19wcmV2aW91cyhzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgcHJldmlvdXMgbWFyayBiZWZvcmUgSU5ERVguIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ21hcmsnLCAncHJldmlvdXMnLCBpbmRleCkgb3IgTm9uZQorICAgIGRlZiBwZWVyX2NyZWF0ZShzZWxmLCBuZXdQYXRoTmFtZSwgY25mPXt9LCAqKmt3KTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIkNyZWF0ZXMgYSBwZWVyIHRleHQgd2lkZ2V0IHdpdGggdGhlIGdpdmVuIG5ld1BhdGhOYW1lLCBhbmQgYW55CisgICAgICAgIG9wdGlvbmFsIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQnkgZGVmYXVsdCB0aGUgcGVlciB3aWxsCisgICAgICAgIGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5kIGFuZCBlbmQgbGluZSBhcyB0aGUgcGFyZW50IHdpZGdldCwgYnV0CisgICAgICAgIHRoZXNlIGNhbiBiZSBvdmVycmlkZW4gd2l0aCB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvcHRpb25zLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BlZXInLCAnY3JlYXRlJywgbmV3UGF0aE5hbWUsCisgICAgICAgICAgICAqc2VsZi5fb3B0aW9ucyhjbmYsIGt3KSkKKyAgICBkZWYgcGVlcl9uYW1lcyhzZWxmKTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHBlZXJzIG9mIHRoaXMgd2lkZ2V0ICh0aGlzIGRvZXMgbm90IGluY2x1ZGUKKyAgICAgICAgdGhlIHdpZGdldCBpdHNlbGYpLiIiIgorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwZWVyJywgJ25hbWVzJykpCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgaW5kZXgxLCBpbmRleDIsIGNoYXJzLCAqYXJncyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJSZXBsYWNlcyB0aGUgcmFuZ2Ugb2YgY2hhcmFjdGVycyBiZXR3ZWVuIGluZGV4MSBhbmQgaW5kZXgyIHdpdGgKKyAgICAgICAgdGhlIGdpdmVuIGNoYXJhY3RlcnMgYW5kIHRhZ3Mgc3BlY2lmaWVkIGJ5IGFyZ3MuCisKKyAgICAgICAgU2VlIHRoZSBtZXRob2QgaW5zZXJ0IGZvciBzb21lIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYXJncywgYW5kIHRoZQorICAgICAgICBtZXRob2QgZGVsZXRlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5kaWNlcy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdyZXBsYWNlJywgaW5kZXgxLCBpbmRleDIsIGNoYXJzLCAqYXJncykKICAgICBkZWYgc2Nhbl9tYXJrKHNlbGYsIHgsIHkpOgogICAgICAgICAiIiJSZW1lbWJlciB0aGUgY3VycmVudCBYLCBZIGNvb3JkaW5hdGVzLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NjYW4nLCAnbWFyaycsIHgsIHkpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9fZml4LnB5IGIvTGliL3RraW50ZXIvX2ZpeC5weQppbmRleCA1YTY5ZDg5Li41ZjMyZDI1IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fZml4LnB5CisrKyBiL0xpYi90a2ludGVyL19maXgucHkKQEAgLTQ2LDEwICs0NiwxMCBAQAogICAgICAgICAgICAgcyA9ICJcXCIgKyBzWzM6XQogICAgICAgICByZXR1cm4gcwogCi1wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwidGNsIikKK3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsInRjbCIpCiBpZiBub3Qgb3MucGF0aC5leGlzdHMocHJlZml4KToKICAgICAjIGRldmRpci8uLi90Y2x0ay9saWIKLSAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgb3MucGF0aC5wYXJkaXIsICJ0Y2x0ayIsICJsaWIiKQorICAgIHByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsIG9zLnBhdGgucGFyZGlyLCAidGNsdGsiLCAibGliIikKICAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgocHJlZml4KQogIyBpZiB0aGlzIGRvZXMgbm90IGV4aXN0LCBubyBmdXJ0aGVyIHNlYXJjaCBpcyBuZWVkZWQKIGlmIG9zLnBhdGguZXhpc3RzKHByZWZpeCk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5IGIvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQppbmRleCA5OGQyZDVjLi4zZmZiMjUyIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKQEAgLTMwNiw3ICszMDYsNiBAQAogICAgIGRlZiBfZml4cmVzdWx0KHNlbGYsIHdpZGdldCwgcmVzdWx0KToKICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgIyBrZWVwIGRpcmVjdG9yeSBhbmQgZmlsZW5hbWUgdW50aWwgbmV4dCB0aW1lCi0gICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgICMgY29udmVydCBUY2wgcGF0aCBvYmplY3RzIHRvIHN0cmluZ3MKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3RyaW5nCkBAIC0zMzMsNyArMzMyLDYgQEAKICAgICAgICAgICAgICMgbXVsdGlwbGUgcmVzdWx0czoKICAgICAgICAgICAgIHJlc3VsdCA9IHR1cGxlKFtnZXRhdHRyKHIsICJzdHJpbmciLCByKSBmb3IgciBpbiByZXN1bHRdKQogICAgICAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgICAgIHBhdGgsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KHJlc3VsdFswXSkKICAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbnNbImluaXRpYWxkaXIiXSA9IHBhdGgKICAgICAgICAgICAgICAgICAjIGRvbid0IHNldCBpbml0aWFsZmlsZSBvciBmaWxlbmFtZSwgYXMgd2UgaGF2ZSBtdWx0aXBsZSBvZiB0aGVzZQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZm9udC5weSBiL0xpYi90a2ludGVyL2ZvbnQucHkKaW5kZXggNTQyNWIwNi4uNDkyOTI0MSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZm9udC5weQorKysgYi9MaWIvdGtpbnRlci9mb250LnB5CkBAIC0yLDI3ICsyLDI3IEBACiAjCiAjIHdyaXR0ZW4gYnkgRnJlZHJpayBMdW5kaCwgRmVicnVhcnkgMTk5OAogIwotIyBGSVhNRTogc2hvdWxkIGFkZCAnZGlzcGxheW9mJyBvcHRpb24gd2hlcmUgcmVsZXZhbnQgKGFjdHVhbCwgZmFtaWxpZXMsCi0jICAgICAgICBtZWFzdXJlLCBhbmQgbWV0cmljcykKLSMKIAogX192ZXJzaW9uX18gPSAiMC45IgogCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgdGtpbnRlcgogCisKICMgd2VpZ2h0L3NsYW50CiBOT1JNQUwgPSAibm9ybWFsIgogUk9NQU4gPSAicm9tYW4iCiBCT0xEICAgPSAiYm9sZCIKIElUQUxJQyA9ICJpdGFsaWMiCiAKKwogZGVmIG5hbWV0b2ZvbnQobmFtZSk6CiAgICAgIiIiR2l2ZW4gdGhlIG5hbWUgb2YgYSB0ayBuYW1lZCBmb250LCByZXR1cm5zIGEgRm9udCByZXByZXNlbnRhdGlvbi4KICAgICAiIiIKICAgICByZXR1cm4gRm9udChuYW1lPW5hbWUsIGV4aXN0cz1UcnVlKQogCi1jbGFzcyBGb250OgogCitjbGFzcyBGb250OgogICAgICIiIlJlcHJlc2VudHMgYSBuYW1lZCBmb250LgogCiAgICAgQ29uc3RydWN0b3Igb3B0aW9ucyBhcmU6CkBAIC00NCw2ICs0NCw4IEBACiAKICAgICAiIiIKIAorICAgIGNvdW50ZXIgPSBpdGVydG9vbHMuY291bnQoMSkKKwogICAgIGRlZiBfc2V0KHNlbGYsIGt3KToKICAgICAgICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIGZvciBrLCB2IGluIGt3Lml0ZW1zKCk6CkBAIC02Myw3ICs2NSw4IEBACiAgICAgICAgICAgICBvcHRpb25zW2FyZ3NbaV1bMTpdXSA9IGFyZ3NbaSsxXQogICAgICAgICByZXR1cm4gb3B0aW9ucwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3Q9Tm9uZSwgZm9udD1Ob25lLCBuYW1lPU5vbmUsIGV4aXN0cz1GYWxzZSwgKipvcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdD1Ob25lLCBmb250PU5vbmUsIG5hbWU9Tm9uZSwgZXhpc3RzPUZhbHNlLAorICAgICAgICAgICAgICAgICAqKm9wdGlvbnMpOgogICAgICAgICBpZiBub3Qgcm9vdDoKICAgICAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKICAgICAgICAgaWYgZm9udDoKQEAgLTcyLDcgKzc1LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvbnQgPSBzZWxmLl9zZXQob3B0aW9ucykKICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gImZvbnQiICsgc3RyKGlkKHNlbGYpKQorICAgICAgICAgICAgbmFtZSA9ICJmb250IiArIHN0cihuZXh0KHNlbGYuY291bnRlcikpCiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKIAogICAgICAgICBpZiBleGlzdHM6CkBAIC0xMTgsMTQgKzEyMSwxNyBAQAogICAgICAgICAiUmV0dXJuIGEgZGlzdGluY3QgY29weSBvZiB0aGUgY3VycmVudCBmb250IgogICAgICAgICByZXR1cm4gRm9udChzZWxmLl9yb290LCAqKnNlbGYuYWN0dWFsKCkpCiAKLSAgICBkZWYgYWN0dWFsKHNlbGYsIG9wdGlvbj1Ob25lKToKKyAgICBkZWYgYWN0dWFsKHNlbGYsIG9wdGlvbj1Ob25lLCBkaXNwbGF5b2Y9Tm9uZSk6CiAgICAgICAgICJSZXR1cm4gYWN0dWFsIGZvbnQgYXR0cmlidXRlcyIKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGlmIGRpc3BsYXlvZjoKKyAgICAgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YpCiAgICAgICAgIGlmIG9wdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgIi0iK29wdGlvbikKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgKCctJyArIG9wdGlvbiwgKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lLCAqYXJncykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9ta2RpY3QoCi0gICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgKmFyZ3MpKSkKIAogICAgIGRlZiBjZ2V0KHNlbGYsIG9wdGlvbik6CiAgICAgICAgICJHZXQgZm9udCBhdHRyaWJ1dGUiCkBAIC0xMzgsMzcgKzE0NCw0NyBAQAogICAgICAgICAgICAgICAgICAgKnNlbGYuX3NldChvcHRpb25zKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9ta2RpY3QoCi0gICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJjb25maWciLCBzZWxmLm5hbWUpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgImNvbmZpZyIsIHNlbGYubmFtZSkpKQogCiAgICAgY29uZmlndXJlID0gY29uZmlnCiAKLSAgICBkZWYgbWVhc3VyZShzZWxmLCB0ZXh0KToKKyAgICBkZWYgbWVhc3VyZShzZWxmLCB0ZXh0LCBkaXNwbGF5b2Y9Tm9uZSk6CiAgICAgICAgICJSZXR1cm4gdGV4dCB3aWR0aCIKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsIHRleHQpKQorICAgICAgICBhcmdzID0gKHRleHQsKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mLCB0ZXh0KQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX2NhbGwoImZvbnQiLCAibWVhc3VyZSIsIHNlbGYubmFtZSwgKmFyZ3MpKQogCi0gICAgZGVmIG1ldHJpY3Moc2VsZiwgKm9wdGlvbnMpOgorICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zLCAqKmt3KToKICAgICAgICAgIiIiUmV0dXJuIGZvbnQgbWV0cmljcy4KIAogICAgICAgICBGb3IgYmVzdCBwZXJmb3JtYW5jZSwgY3JlYXRlIGEgZHVtbXkgd2lkZ2V0CiAgICAgICAgIHVzaW5nIHRoaXMgZm9udCBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZC4iIiIKLQorICAgICAgICBhcmdzID0gKCkKKyAgICAgICAgZGlzcGxheW9mID0ga3cucG9wKCdkaXNwbGF5b2YnLCBOb25lKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb25zOgorICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyBzZWxmLl9nZXQob3B0aW9ucykKICAgICAgICAgICAgIHJldHVybiBpbnQoCi0gICAgICAgICAgICAgICAgc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCBzZWxmLl9nZXQob3B0aW9ucykpCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzID0gc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIHJlcyA9IHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICAgICAgb3B0aW9ucyA9IHt9CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocmVzKSwgMik6CiAgICAgICAgICAgICAgICAgb3B0aW9uc1tyZXNbaV1bMTpdXSA9IGludChyZXNbaSsxXSkKICAgICAgICAgICAgIHJldHVybiBvcHRpb25zCiAKLWRlZiBmYW1pbGllcyhyb290PU5vbmUpOgorCitkZWYgZmFtaWxpZXMocm9vdD1Ob25lLCBkaXNwbGF5b2Y9Tm9uZSk6CiAgICAgIkdldCBmb250IGZhbWlsaWVzIChhcyBhIHR1cGxlKSIKICAgICBpZiBub3Qgcm9vdDoKICAgICAgICAgcm9vdCA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAotICAgIHJldHVybiByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoImZvbnQiLCAiZmFtaWxpZXMiKSkKKyAgICBhcmdzID0gKCkKKyAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YpCisgICAgcmV0dXJuIHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgiZm9udCIsICJmYW1pbGllcyIsICphcmdzKSkKKwogCiBkZWYgbmFtZXMocm9vdD1Ob25lKToKICAgICAiR2V0IG5hbWVzIG9mIGRlZmluZWQgZm9udHMgKGFzIGEgdHVwbGUpIgpAQCAtMTc2LDYgKzE5Miw3IEBACiAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKICAgICByZXR1cm4gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCJmb250IiwgIm5hbWVzIikpCiAKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyB0ZXN0IHN0dWZmCiAKQEAgLTE5OCwxMCArMjE1LDEwIEBACiAKICAgICBwcmludChmLm1lYXN1cmUoImhlbGxvIiksIGYubWV0cmljcygibGluZXNwYWNlIikpCiAKLSAgICBwcmludChmLm1ldHJpY3MoKSkKKyAgICBwcmludChmLm1ldHJpY3MoZGlzcGxheW9mPXJvb3QpKQogCiAgICAgZiA9IEZvbnQoZm9udD0oIkNvdXJpZXIiLCAyMCwgImJvbGQiKSkKLSAgICBwcmludChmLm1lYXN1cmUoImhlbGxvIiksIGYubWV0cmljcygibGluZXNwYWNlIikpCisgICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIsIGRpc3BsYXlvZj1yb290KSkKIAogICAgIHcgPSB0a2ludGVyLkxhYmVsKHJvb3QsIHRleHQ9IkhlbGxvLCB3b3JsZCIsIGZvbnQ9ZikKICAgICB3LnBhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzhjYzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKQEAgLTAsMCArMSwxNjUgQEAKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRraW50ZXIgaW1wb3J0IFZhcmlhYmxlLCBTdHJpbmdWYXIsIEludFZhciwgRG91YmxlVmFyLCBCb29sZWFuVmFyLCBUaworCisKK2NsYXNzIFZhcihWYXJpYWJsZSk6CisKKyAgICBfZGVmYXVsdCA9ICJkZWZhdWx0IgorICAgIHNpZGVfZWZmZWN0ID0gRmFsc2UKKworICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnNpZGVfZWZmZWN0ID0gVHJ1ZQorICAgICAgICBzdXBlcigpLnNldCh2YWx1ZSkKKworCitjbGFzcyBUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucm9vdCA9IFRrKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5yb290LmRlc3Ryb3koKQorCisKK2NsYXNzIFRlc3RWYXJpYWJsZShUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiLCB2LmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cih2KSwgciJeUFlfVkFSKFxkKykkIikKKworICAgIGRlZiB0ZXN0X25hbWVfYW5kX3ZhbHVlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290LCAic2FtcGxlIHN0cmluZyIsICJ2YXJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic2FtcGxlIHN0cmluZyIsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInZhcm5hbWUiLCBzdHIodikpCisKKyAgICBkZWYgdGVzdF9fX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QsICJzYW1wbGUgc3RyaW5nIiwgInZhcm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKyAgICAgICAgZGVsIHYKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorCisgICAgZGVmIHRlc3RfZG9udF91bnNldF9ub3RfZXhpc3Rpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKyAgICAgICAgdjEgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICB2MiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIGRlbCB2MQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJuYW1lIikpCisgICAgICAgICMgc2hvdWxkbid0IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICBkZWwgdjIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAibmFtZSIpKQorCisgICAgZGVmIHRlc3RfX19lcV9fKHNlbGYpOgorICAgICAgICAjIHZhbHVlcyBkb2Vzbid0IG1hdHRlciwgb25seSBjbGFzcyBhbmQgbmFtZSBhcmUgY2hlY2tlZAorICAgICAgICB2MSA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgdjIgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjEsIHYyKQorCisgICAgICAgIHYzID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICB2NCA9IFN0cmluZ1ZhcihzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodjMsIHY0KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9uYW1lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9MTIzKQorCisgICAgZGVmIHRlc3RfaW5pdGlhbGl6ZShzZWxmKToKKyAgICAgICAgdiA9IFZhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5zaWRlX2VmZmVjdCkKKyAgICAgICAgdi5zZXQoInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYuc2lkZV9lZmZlY3QpCisKKworY2xhc3MgVGVzdFN0cmluZ1ZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gU3RyaW5nVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IFN0cmluZ1ZhcihzZWxmLnJvb3QsICJhYmMiLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiYyIsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ2YWx1ZSIsIHYuZ2V0KCkpCisKKworY2xhc3MgVGVzdEludFZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gSW50VmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gSW50VmFyKHNlbGYucm9vdCwgMTIzLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIzLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjM0NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMzQ1LCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZShzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzNDUuMCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisKKworY2xhc3MgVGVzdERvdWJsZVZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLjAsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCAxLjIzLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMS4yMywgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzLjQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgzLjQ1LCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0X2Zyb21faW50KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgMS4yMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDEuMjMsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMy40NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMy40NSwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICI0NTYiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDQ1Niwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CisgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisKKworY2xhc3MgVGVzdEJvb2xlYW5WYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IEJvb2xlYW5WYXIoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gQm9vbGVhblZhcihzZWxmLnJvb3QsIFRydWUsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChUcnVlLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjAiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKEZhbHNlLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZV9kb21haW4oc2VsZik6CisgICAgICAgIHYgPSBCb29sZWFuVmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjEuMCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisKKwordGVzdHNfZ3VpID0gKFRlc3RWYXJpYWJsZSwgVGVzdFN0cmluZ1ZhciwgVGVzdEludFZhciwKKyAgICAgICAgICAgICBUZXN0RG91YmxlVmFyLCBUZXN0Qm9vbGVhblZhcikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoKnRlc3RzX2d1aSkKZGlmZiAtLWdpdCBhL0xpYi90b2tlbi5weSBiL0xpYi90b2tlbi5weQppbmRleCA2YjUzMjBkLi4zMWZhZTBhIDEwMDc1NQotLS0gYS9MaWIvdG9rZW4ucHkKKysrIGIvTGliL3Rva2VuLnB5CkBAIC03MCw3ICs3MCw3IEBACiAKIHRva19uYW1lID0ge3ZhbHVlOiBuYW1lCiAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZ2xvYmFscygpLml0ZW1zKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCl9CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpIGFuZCBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyl9CiBfX2FsbF9fLmV4dGVuZCh0b2tfbmFtZS52YWx1ZXMoKSkKIAogZGVmIElTVEVSTUlOQUwoeCk6CmRpZmYgLS1naXQgYS9MaWIvdG9rZW5pemUucHkgYi9MaWIvdG9rZW5pemUucHkKaW5kZXggMjljOWUyOS4uY2JmOTFlZiAxMDA2NDQKLS0tIGEvTGliL3Rva2VuaXplLnB5CisrKyBiL0xpYi90b2tlbml6ZS5weQpAQCAtNDUsNiArNDUsNTEgQEAKIEVOQ09ESU5HID0gTl9UT0tFTlMgKyAyCiB0b2tfbmFtZVtFTkNPRElOR10gPSAnRU5DT0RJTkcnCiBOX1RPS0VOUyArPSAzCitFWEFDVF9UT0tFTl9UWVBFUyA9IHsKKyAgICAnKCc6ICAgTFBBUiwKKyAgICAnKSc6ICAgUlBBUiwKKyAgICAnWyc6ICAgTFNRQiwKKyAgICAnXSc6ICAgUlNRQiwKKyAgICAnOic6ICAgQ09MT04sCisgICAgJywnOiAgIENPTU1BLAorICAgICc7JzogICBTRU1JLAorICAgICcrJzogICBQTFVTLAorICAgICctJzogICBNSU5VUywKKyAgICAnKic6ICAgU1RBUiwKKyAgICAnLyc6ICAgU0xBU0gsCisgICAgJ3wnOiAgIFZCQVIsCisgICAgJyYnOiAgIEFNUEVSLAorICAgICc8JzogICBMRVNTLAorICAgICc+JzogICBHUkVBVEVSLAorICAgICc9JzogICBFUVVBTCwKKyAgICAnLic6ICAgRE9ULAorICAgICclJzogICBQRVJDRU5ULAorICAgICd7JzogICBMQlJBQ0UsCisgICAgJ30nOiAgIFJCUkFDRSwKKyAgICAnPT0nOiAgRVFFUVVBTCwKKyAgICAnIT0nOiAgTk9URVFVQUwsCisgICAgJzw9JzogIExFU1NFUVVBTCwKKyAgICAnPj0nOiAgR1JFQVRFUkVRVUFMLAorICAgICd+JzogICBUSUxERSwKKyAgICAnXic6ICAgQ0lSQ1VNRkxFWCwKKyAgICAnPDwnOiAgTEVGVFNISUZULAorICAgICc+Pic6ICBSSUdIVFNISUZULAorICAgICcqKic6ICBET1VCTEVTVEFSLAorICAgICcrPSc6ICBQTFVTRVFVQUwsCisgICAgJy09JzogIE1JTkVRVUFMLAorICAgICcqPSc6ICBTVEFSRVFVQUwsCisgICAgJy89JzogIFNMQVNIRVFVQUwsCisgICAgJyU9JzogIFBFUkNFTlRFUVVBTCwKKyAgICAnJj0nOiAgQU1QRVJFUVVBTCwKKyAgICAnfD0nOiAgVkJBUkVRVUFMLAorICAgICdePSc6IENJUkNVTUZMRVhFUVVBTCwKKyAgICAnPDw9JzogTEVGVFNISUZURVFVQUwsCisgICAgJz4+PSc6IFJJR0hUU0hJRlRFUVVBTCwKKyAgICAnKio9JzogRE9VQkxFU1RBUkVRVUFMLAorICAgICcvLyc6ICBET1VCTEVTTEFTSCwKKyAgICAnLy89JzogRE9VQkxFU0xBU0hFUVVBTCwKKyAgICAnQCc6ICAgQVQKK30KIAogY2xhc3MgVG9rZW5JbmZvKGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ1Rva2VuSW5mbycsICd0eXBlIHN0cmluZyBzdGFydCBlbmQgbGluZScpKToKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC01Miw2ICs5NywxMyBAQAogICAgICAgICByZXR1cm4gKCdUb2tlbkluZm8odHlwZT0lcywgc3RyaW5nPSVyLCBzdGFydD0lciwgZW5kPSVyLCBsaW5lPSVyKScgJQogICAgICAgICAgICAgICAgIHNlbGYuX3JlcGxhY2UodHlwZT1hbm5vdGF0ZWRfdHlwZSkpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZXhhY3RfdHlwZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi50eXBlID09IE9QIGFuZCBzZWxmLnN0cmluZyBpbiBFWEFDVF9UT0tFTl9UWVBFUzoKKyAgICAgICAgICAgIHJldHVybiBFWEFDVF9UT0tFTl9UWVBFU1tzZWxmLnN0cmluZ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnR5cGUKKwogZGVmIGdyb3VwKCpjaG9pY2VzKTogcmV0dXJuICcoJyArICd8Jy5qb2luKGNob2ljZXMpICsgJyknCiBkZWYgYW55KCpjaG9pY2VzKTogcmV0dXJuIGdyb3VwKCpjaG9pY2VzKSArICcqJwogZGVmIG1heWJlKCpjaG9pY2VzKTogcmV0dXJuIGdyb3VwKCpjaG9pY2VzKSArICc/JwpAQCAtNzUsNiArMTI3LDggQEAKIEltYWdudW1iZXIgPSBncm91cChyJ1swLTldK1tqSl0nLCBGbG9hdG51bWJlciArIHInW2pKXScpCiBOdW1iZXIgPSBncm91cChJbWFnbnVtYmVyLCBGbG9hdG51bWJlciwgSW50bnVtYmVyKQogCitTdHJpbmdQcmVmaXggPSByJyg/OltiQl1bclJdP3xbclJdW2JCXT98W3VVXSk/JworCiAjIFRhaWwgZW5kIG9mICcgc3RyaW5nLgogU2luZ2xlID0gciJbXidcXF0qKD86XFwuW14nXFxdKikqJyIKICMgVGFpbCBlbmQgb2YgIiBzdHJpbmcuCkBAIC04MywxMCArMTM3LDEwIEBACiBTaW5nbGUzID0gciJbXidcXF0qKD86KD86XFwufCcoPyEnJykpW14nXFxdKikqJycnIgogIyBUYWlsIGVuZCBvZiAiIiIgc3RyaW5nLgogRG91YmxlMyA9IHInW14iXFxdKig/Oig/OlxcLnwiKD8hIiIpKVteIlxcXSopKiIiIicKLVRyaXBsZSA9IGdyb3VwKCJbYkJdP1tyUl0/JycnIiwgJ1tiQl0/W3JSXT8iIiInKQorVHJpcGxlID0gZ3JvdXAoU3RyaW5nUHJlZml4ICsgIicnJyIsIFN0cmluZ1ByZWZpeCArICciIiInKQogIyBTaW5nbGUtbGluZSAnIG9yICIgc3RyaW5nLgotU3RyaW5nID0gZ3JvdXAociJbYkJdP1tyUl0/J1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqJyIsCi0gICAgICAgICAgICAgICByJ1tiQl0/W3JSXT8iW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSoiJykKK1N0cmluZyA9IGdyb3VwKFN0cmluZ1ByZWZpeCArIHIiJ1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqJyIsCisgICAgICAgICAgICAgICBTdHJpbmdQcmVmaXggKyByJyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKiInKQogCiAjIEJlY2F1c2Ugb2YgbGVmdG1vc3QtdGhlbi1sb25nZXN0IG1hdGNoIHNlbWFudGljcywgYmUgc3VyZSB0byBwdXQgdGhlCiAjIGxvbmdlc3Qgb3BlcmF0b3JzIGZpcnN0IChlLmcuLCBpZiA9IGNhbWUgYmVmb3JlID09LCA9PSB3b3VsZCBnZXQKQEAgLTEwNCw5ICsxNTgsOSBAQAogVG9rZW4gPSBJZ25vcmUgKyBQbGFpblRva2VuCiAKICMgRmlyc3QgKG9yIG9ubHkpIGxpbmUgb2YgJyBvciAiIHN0cmluZy4KLUNvbnRTdHIgPSBncm91cChyIltiQl0/W3JSXT8nW15cbidcXF0qKD86XFwuW15cbidcXF0qKSoiICsKK0NvbnRTdHIgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiIgKwogICAgICAgICAgICAgICAgIGdyb3VwKCInIiwgcidcXFxyP1xuJyksCi0gICAgICAgICAgICAgICAgcidbYkJdP1tyUl0/IlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqJyArCisgICAgICAgICAgICAgICAgU3RyaW5nUHJlZml4ICsgciciW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSonICsKICAgICAgICAgICAgICAgICBncm91cCgnIicsIHInXFxccj9cbicpKQogUHNldWRvRXh0cmFzID0gZ3JvdXAocidcXFxyP1xufFxaJywgQ29tbWVudCwgVHJpcGxlKQogUHNldWRvVG9rZW4gPSBXaGl0ZXNwYWNlICsgZ3JvdXAoUHNldWRvRXh0cmFzLCBOdW1iZXIsIEZ1bm55LCBDb250U3RyLCBOYW1lKQpAQCAtMTE0LDM3ICsxNjgsNDkgQEAKIGRlZiBfY29tcGlsZShleHByKToKICAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQogCi10b2tlbnByb2csIHBzZXVkb3Byb2csIHNpbmdsZTNwcm9nLCBkb3VibGUzcHJvZyA9IG1hcCgKLSAgICBfY29tcGlsZSwgKFRva2VuLCBQc2V1ZG9Ub2tlbiwgU2luZ2xlMywgRG91YmxlMykpCi1lbmRwcm9ncyA9IHsiJyI6IF9jb21waWxlKFNpbmdsZSksICciJzogX2NvbXBpbGUoRG91YmxlKSwKLSAgICAgICAgICAgICInJyciOiBzaW5nbGUzcHJvZywgJyIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgInInJyciOiBzaW5nbGUzcHJvZywgJ3IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJiJycnIjogc2luZ2xlM3Byb2csICdiIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYnInJyciOiBzaW5nbGUzcHJvZywgJ2JyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiUicnJyI6IHNpbmdsZTNwcm9nLCAnUiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIkInJyciOiBzaW5nbGUzcHJvZywgJ0IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJiUicnJyI6IHNpbmdsZTNwcm9nLCAnYlIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCcicnJyI6IHNpbmdsZTNwcm9nLCAnQnIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCUicnJyI6IHNpbmdsZTNwcm9nLCAnQlIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZX0KK2VuZHBhdHMgPSB7IiciOiBTaW5nbGUsICciJzogRG91YmxlLAorICAgICAgICAgICAiJycnIjogU2luZ2xlMywgJyIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJyJycnIjogU2luZ2xlMywgJ3IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiYicnJyI6IFNpbmdsZTMsICdiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJCJycnIjogU2luZ2xlMywgJ0IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiYnInJyciOiBTaW5nbGUzLCAnYnIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiYlInJyciOiBTaW5nbGUzLCAnYlIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQnInJyciOiBTaW5nbGUzLCAnQnIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQlInJyciOiBTaW5nbGUzLCAnQlIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAicmInJyciOiBTaW5nbGUzLCAncmIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiUmInJyciOiBTaW5nbGUzLCAnUmIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJVJycnIjogU2luZ2xlMywgJ1UiIiInOiBEb3VibGUzLAorICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmUsCisgICAgICAgICAgICd1JzogTm9uZSwgJ1UnOiBOb25lfQogCiB0cmlwbGVfcXVvdGVkID0ge30KIGZvciB0IGluICgiJycnIiwgJyIiIicsCiAgICAgICAgICAgInInJyciLCAnciIiIicsICJSJycnIiwgJ1IiIiInLAogICAgICAgICAgICJiJycnIiwgJ2IiIiInLCAiQicnJyIsICdCIiIiJywKICAgICAgICAgICAiYnInJyciLCAnYnIiIiInLCAiQnInJyciLCAnQnIiIiInLAotICAgICAgICAgICJiUicnJyIsICdiUiIiIicsICJCUicnJyIsICdCUiIiIicpOgorICAgICAgICAgICJiUicnJyIsICdiUiIiIicsICJCUicnJyIsICdCUiIiIicsCisgICAgICAgICAgInJiJycnIiwgJ3JiIiIiJywgInJCJycnIiwgJ3JCIiIiJywKKyAgICAgICAgICAiUmInJyciLCAnUmIiIiInLCAiUkInJyciLCAnUkIiIiInLAorICAgICAgICAgICJ1JycnIiwgJ3UiIiInLCAiVScnJyIsICdVIiIiJywKKyAgICAgICAgICApOgogICAgIHRyaXBsZV9xdW90ZWRbdF0gPSB0CiBzaW5nbGVfcXVvdGVkID0ge30KIGZvciB0IGluICgiJyIsICciJywKICAgICAgICAgICAiciciLCAnciInLCAiUiciLCAnUiInLAogICAgICAgICAgICJiJyIsICdiIicsICJCJyIsICdCIicsCiAgICAgICAgICAgImJyJyIsICdiciInLCAiQnInIiwgJ0JyIicsCi0gICAgICAgICAgImJSJyIsICdiUiInLCAiQlInIiwgJ0JSIicgKToKKyAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyAsCisgICAgICAgICAgInJiJyIsICdyYiInLCAickInIiwgJ3JCIicsCisgICAgICAgICAgIlJiJyIsICdSYiInLCAiUkInIiwgJ1JCIicgLAorICAgICAgICAgICJ1JyIsICd1IicsICJVJyIsICdVIicsCisgICAgICAgICAgKToKICAgICBzaW5nbGVfcXVvdGVkW3RdID0gdAogCi1kZWwgX2NvbXBpbGUKLQogdGFic2l6ZSA9IDgKIAogY2xhc3MgVG9rZW5FcnJvcihFeGNlcHRpb24pOiBwYXNzCkBAIC0yODEsNiArMzQ3LDEwIEBACiAKICAgICBJZiBubyBlbmNvZGluZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGRlZmF1bHQgb2YgJ3V0Zi04JyB3aWxsIGJlIHJldHVybmVkLgogICAgICIiIgorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSByZWFkbGluZS5fX3NlbGZfXy5uYW1lCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBmaWxlbmFtZSA9IE5vbmUKICAgICBib21fZm91bmQgPSBGYWxzZQogICAgIGVuY29kaW5nID0gTm9uZQogICAgIGRlZmF1bHQgPSAndXRmLTgnCkBAIC0yOTcsNyArMzY3LDEwIEBACiAgICAgICAgICAgICAjIHBlciBkZWZhdWx0IGVuY29kaW5nLgogICAgICAgICAgICAgbGluZV9zdHJpbmcgPSBsaW5lLmRlY29kZSgndXRmLTgnKQogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoImludmFsaWQgb3IgbWlzc2luZyBlbmNvZGluZyBkZWNsYXJhdGlvbiIpCisgICAgICAgICAgICBtc2cgPSAiaW52YWxpZCBvciBtaXNzaW5nIGVuY29kaW5nIGRlY2xhcmF0aW9uIgorICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbXNnID0gJ3t9IGZvciB7IXJ9Jy5mb3JtYXQobXNnLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKG1zZykKIAogICAgICAgICBtYXRjaGVzID0gY29va2llX3JlLmZpbmRhbGwobGluZV9zdHJpbmcpCiAgICAgICAgIGlmIG5vdCBtYXRjaGVzOgpAQCAtMzA3LDEyICszODAsMjEgQEAKICAgICAgICAgICAgIGNvZGVjID0gbG9va3VwKGVuY29kaW5nKQogICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgICAgICAjIFRoaXMgYmVoYXZpb3VyIG1pbWljcyB0aGUgUHl0aG9uIGludGVycHJldGVyCi0gICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigidW5rbm93biBlbmNvZGluZzogIiArIGVuY29kaW5nKQorICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBlbmNvZGluZzogIiArIGVuY29kaW5nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGVuY29kaW5nIGZvciB7IXJ9OiB7fSIuZm9ybWF0KGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcpCisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAKICAgICAgICAgaWYgYm9tX2ZvdW5kOgogICAgICAgICAgICAgaWYgZW5jb2RpbmcgIT0gJ3V0Zi04JzoKICAgICAgICAgICAgICAgICAjIFRoaXMgYmVoYXZpb3VyIG1pbWljcyB0aGUgUHl0aG9uIGludGVycHJldGVyCi0gICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoJ2VuY29kaW5nIHByb2JsZW06IHV0Zi04JykKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZW5jb2RpbmcgcHJvYmxlbTogdXRmLTgnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2VuY29kaW5nIHByb2JsZW0gZm9yIHshcn06IHV0Zi04Jy5mb3JtYXQoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQogICAgICAgICAgICAgZW5jb2RpbmcgKz0gJy1zaWcnCiAgICAgICAgIHJldHVybiBlbmNvZGluZwogCkBAIC00NjksNyArNTUxLDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDAKIAogICAgICAgICB3aGlsZSBwb3MgPCBtYXg6Ci0gICAgICAgICAgICBwc2V1ZG9tYXRjaCA9IHBzZXVkb3Byb2cubWF0Y2gobGluZSwgcG9zKQorICAgICAgICAgICAgcHNldWRvbWF0Y2ggPSBfY29tcGlsZShQc2V1ZG9Ub2tlbikubWF0Y2gobGluZSwgcG9zKQogICAgICAgICAgICAgaWYgcHNldWRvbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNjYW4gZm9yIHRva2VucwogICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQgPSBwc2V1ZG9tYXRjaC5zcGFuKDEpCiAgICAgICAgICAgICAgICAgc3BvcywgZXBvcywgcG9zID0gKGxudW0sIHN0YXJ0KSwgKGxudW0sIGVuZCksIGVuZApAQCAtNDg3LDcgKzU2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG9rZW4uZW5kc3dpdGgoIlxuIikKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKENPTU1FTlQsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gdHJpcGxlX3F1b3RlZDoKLSAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IGVuZHByb2dzW3Rva2VuXQorICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCiAgICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCiAgICAgICAgICAgICAgICAgICAgIGlmIGVuZG1hdGNoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIG9uIG9uZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBlbmRtYXRjaC5lbmQoMCkKQEAgLTUwMyw4ICs1ODUsOSBAQAogICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZDoKICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW5bLTFdID09ICdcbic6ICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCA9IChsbnVtLCBzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSAoZW5kcHJvZ3NbaW5pdGlhbF0gb3IgZW5kcHJvZ3NbdG9rZW5bMV1dIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2dzW3Rva2VuWzJdXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW2luaXRpYWxdIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsxXV0gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzJdXSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzdHIsIG5lZWRjb250ID0gbGluZVtzdGFydDpdLCAxCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC01MzUsMjcgKzYxOCw2NSBAQAogZGVmIGdlbmVyYXRlX3Rva2VucyhyZWFkbGluZSk6CiAgICAgcmV0dXJuIF90b2tlbml6ZShyZWFkbGluZSwgTm9uZSkKIAorZGVmIG1haW4oKToKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgICMgSGVscGVyIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzCisgICAgZGVmIHBlcnJvcihtZXNzYWdlKToKKyAgICAgICAgcHJpbnQobWVzc2FnZSwgZmlsZT1zeXMuc3RkZXJyKQorCisgICAgZGVmIGVycm9yKG1lc3NhZ2UsIGZpbGVuYW1lPU5vbmUsIGxvY2F0aW9uPU5vbmUpOgorICAgICAgICBpZiBsb2NhdGlvbjoKKyAgICAgICAgICAgIGFyZ3MgPSAoZmlsZW5hbWUsKSArIGxvY2F0aW9uICsgKG1lc3NhZ2UsKQorICAgICAgICAgICAgcGVycm9yKCIlczolZDolZDogZXJyb3I6ICVzIiAlIGFyZ3MpCisgICAgICAgIGVsaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBwZXJyb3IoIiVzOiBlcnJvcjogJXMiICUgKGZpbGVuYW1lLCBtZXNzYWdlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBlcnJvcigiZXJyb3I6ICVzIiAlIG1lc3NhZ2UpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAjIFBhcnNlIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdweXRob24gLW0gdG9rZW5pemUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoZGVzdD0nZmlsZW5hbWUnLCBuYXJncz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSdmaWxlbmFtZS5weScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgZmlsZSB0byB0b2tlbml6ZTsgZGVmYXVsdHMgdG8gc3RkaW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZXhhY3QnLCBkZXN0PSdleGFjdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRva2VuIG5hbWVzIHVzaW5nIHRoZSBleGFjdCB0eXBlJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgdHJ5OgorICAgICAgICAjIFRva2VuaXplIHRoZSBpbnB1dAorICAgICAgICBpZiBhcmdzLmZpbGVuYW1lOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBhcmdzLmZpbGVuYW1lCisgICAgICAgICAgICB3aXRoIGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgdG9rZW5zID0gbGlzdCh0b2tlbml6ZShmLnJlYWRsaW5lKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gIjxzdGRpbj4iCisgICAgICAgICAgICB0b2tlbnMgPSBfdG9rZW5pemUoc3lzLnN0ZGluLnJlYWRsaW5lLCBOb25lKQorCisgICAgICAgICMgT3V0cHV0IHRoZSB0b2tlbml6YXRpb24KKyAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKKyAgICAgICAgICAgIHRva2VuX3R5cGUgPSB0b2tlbi50eXBlCisgICAgICAgICAgICBpZiBhcmdzLmV4YWN0OgorICAgICAgICAgICAgICAgIHRva2VuX3R5cGUgPSB0b2tlbi5leGFjdF90eXBlCisgICAgICAgICAgICB0b2tlbl9yYW5nZSA9ICIlZCwlZC0lZCwlZDoiICUgKHRva2VuLnN0YXJ0ICsgdG9rZW4uZW5kKQorICAgICAgICAgICAgcHJpbnQoIiUtMjBzJS0xNXMlLTE1ciIgJQorICAgICAgICAgICAgICAgICAgKHRva2VuX3JhbmdlLCB0b2tfbmFtZVt0b2tlbl90eXBlXSwgdG9rZW4uc3RyaW5nKSkKKyAgICBleGNlcHQgSW5kZW50YXRpb25FcnJvciBhcyBlcnI6CisgICAgICAgIGxpbmUsIGNvbHVtbiA9IGVyci5hcmdzWzFdWzE6M10KKyAgICAgICAgZXJyb3IoZXJyLmFyZ3NbMF0sIGZpbGVuYW1lLCAobGluZSwgY29sdW1uKSkKKyAgICBleGNlcHQgVG9rZW5FcnJvciBhcyBlcnI6CisgICAgICAgIGxpbmUsIGNvbHVtbiA9IGVyci5hcmdzWzFdCisgICAgICAgIGVycm9yKGVyci5hcmdzWzBdLCBmaWxlbmFtZSwgKGxpbmUsIGNvbHVtbikpCisgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGVycjoKKyAgICAgICAgZXJyb3IoZXJyLCBmaWxlbmFtZSkKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgIGVycm9yKGVycikKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHByaW50KCJpbnRlcnJ1cHRlZFxuIikKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgcGVycm9yKCJ1bmV4cGVjdGVkIGVycm9yOiAlcyIgJSBlcnIpCisgICAgICAgIHJhaXNlCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIyBRdWljayBzYW5pdHkgY2hlY2sKLSAgICBzID0gYicnJ2RlZiBwYXJzZWxpbmUoc2VsZiwgbGluZSk6Ci0gICAgICAgICAgICAiIiJQYXJzZSB0aGUgbGluZSBpbnRvIGEgY29tbWFuZCBuYW1lIGFuZCBhIHN0cmluZyBjb250YWluaW5nCi0gICAgICAgICAgICB0aGUgYXJndW1lbnRzLiAgUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgKGNvbW1hbmQsIGFyZ3MsIGxpbmUpLgotICAgICAgICAgICAgJ2NvbW1hbmQnIGFuZCAnYXJncycgbWF5IGJlIE5vbmUgaWYgdGhlIGxpbmUgY291bGRuJ3QgYmUgcGFyc2VkLgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgbGluZQotICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICc/JzoKLSAgICAgICAgICAgICAgICBsaW5lID0gJ2hlbHAgJyArIGxpbmVbMTpdCi0gICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gJyEnOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2RvX3NoZWxsJyk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSAnc2hlbGwgJyArIGxpbmVbMTpdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIGxpbmUKLSAgICAgICAgICAgIGksIG4gPSAwLCBsZW4obGluZSkKLSAgICAgICAgICAgIHdoaWxlIGkgPCBuIGFuZCBsaW5lW2ldIGluIHNlbGYuaWRlbnRjaGFyczogaSA9IGkrMQotICAgICAgICAgICAgY21kLCBhcmcgPSBsaW5lWzppXSwgbGluZVtpOl0uc3RyaXAoKQotICAgICAgICAgICAgcmV0dXJuIGNtZCwgYXJnLCBsaW5lCi0gICAgJycnCi0gICAgZm9yIHRvayBpbiB0b2tlbml6ZShpdGVyKHMuc3BsaXRsaW5lcygpKS5fX25leHRfXyk6Ci0gICAgICAgIHByaW50KHRvaykKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQppbmRleCA4NTAzNjliLi4zMTdiNWZkIDEwMDY0NAotLS0gYS9MaWIvdHJhY2UucHkKKysrIGIvTGliL3RyYWNlLnB5CkBAIC0zOSw4ICszOSw4IEBACiAKICAgIyBjcmVhdGUgYSBUcmFjZSBvYmplY3QsIHRlbGxpbmcgaXQgd2hhdCB0byBpZ25vcmUsIGFuZCB3aGV0aGVyIHRvCiAgICMgZG8gdHJhY2luZyBvciBsaW5lLWNvdW50aW5nIG9yIGJvdGguCi0gIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCxdLCB0cmFjZT0wLAotICAgICAgICAgICAgICAgICAgICBjb3VudD0xKQorICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LF0sCisgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICMgcnVuIHRoZSBuZXcgY29tbWFuZCB1c2luZyB0aGUgZ2l2ZW4gdHJhY2VyCiAgIHRyYWNlci5ydW4oJ21haW4oKScpCiAgICMgbWFrZSBhIHJlcG9ydCwgcGxhY2luZyBvdXRwdXQgaW4gL3RtcApAQCAtNDgsMTkgKzQ4LDIwIEBACiAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgY292ZXJkaXI9Ii90bXAiKQogIiIiCiBfX2FsbF9fID0gWydUcmFjZScsICdDb3ZlcmFnZVJlc3VsdHMnXQotaW1wb3J0IGlvCiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB0b2tlbgogaW1wb3J0IHRva2VuaXplCiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IGdjCiBpbXBvcnQgZGlzCiBpbXBvcnQgcGlja2xlCi1mcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTI0NCw4ICsyNDUsNyBAQAogICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZW5hbWUgZG9lcyBub3QgcmVmZXIgdG8gYSBmaWxlCiAgICAgICAgIHdlIHdhbnQgdG8gaGF2ZSByZXBvcnRlZC4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoZmlsZW5hbWUgPT0gIjxzdHJpbmc+IiBvcgotICAgICAgICAgICAgICAgIGZpbGVuYW1lLnN0YXJ0c3dpdGgoIjxkb2N0ZXN0ICIpKQorICAgICAgICByZXR1cm4gZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYsIG90aGVyKToKICAgICAgICAgIiIiTWVyZ2UgaW4gdGhlIGRhdGEgZnJvbSBhbm90aGVyIENvdmVyYWdlUmVzdWx0cyIiIgpAQCAtNDc3LDcgKzQ3Nyw3IEBACiAgICAgICAgIHNlbGYuX2NhbGxlcl9jYWNoZSA9IHt9CiAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IE5vbmUKICAgICAgICAgaWYgdGltaW5nOgotICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IF90aW1lKCkKICAgICAgICAgaWYgY291bnRjYWxsZXJzOgogICAgICAgICAgICAgc2VsZi5nbG9iYWx0cmFjZSA9IHNlbGYuZ2xvYmFsdHJhY2VfdHJhY2tjYWxsZXJzCiAgICAgICAgIGVsaWYgY291bnRmdW5jczoKQEAgLTYxNSw3ICs2MTUsNyBAQAogICAgICAgICAgICAgc2VsZi5jb3VudHNba2V5XSA9IHNlbGYuY291bnRzLmdldChrZXksIDApICsgMQogCiAgICAgICAgICAgICBpZiBzZWxmLnN0YXJ0X3RpbWU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKHRpbWUudGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKKyAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAoX3RpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCiAgICAgICAgICAgICBibmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgICAgICBwcmludCgiJXMoJWQpOiAlcyIgJSAoYm5hbWUsIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKSksIGVuZD0nJykKQEAgLTYyOCw3ICs2MjgsNyBAQAogICAgICAgICAgICAgbGluZW5vID0gZnJhbWUuZl9saW5lbm8KIAogICAgICAgICAgICAgaWYgc2VsZi5zdGFydF90aW1lOgotICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlICh0aW1lLnRpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKF90aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQogICAgICAgICAgICAgYm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQogICAgICAgICAgICAgcHJpbnQoIiVzKCVkKTogJXMiICUgKGJuYW1lLCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykpLCBlbmQ9JycpCkBAIC03NTAsMTAgKzc1MCwxMCBAQAogICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKIAogICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICJsaWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQogICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQogICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCiAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2ViYWNrLnB5IGIvTGliL3RyYWNlYmFjay5weQppbmRleCA4ZDRlOTZlLi5lZWI5ZTczIDEwMDY0NAotLS0gYS9MaWIvdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90cmFjZWJhY2sucHkKQEAgLTExOSwxNSArMTE5LDE2IEBACiAgICAgICAgIHNlZW4gPSBzZXQoKQogICAgIHNlZW4uYWRkKGV4YykKICAgICBpdHMgPSBbXQorICAgIGNvbnRleHQgPSBleGMuX19jb250ZXh0X18KICAgICBjYXVzZSA9IGV4Yy5fX2NhdXNlX18KICAgICBpZiBjYXVzZSBpcyBub3QgTm9uZSBhbmQgY2F1c2Ugbm90IGluIHNlZW46Ci0gICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY2F1c2UsIE5vbmUsIHNlZW4pKQorICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNhdXNlLCBGYWxzZSwgc2VlbikpCiAgICAgICAgIGl0cy5hcHBlbmQoWyhfY2F1c2VfbWVzc2FnZSwgTm9uZSldKQotICAgIGVsc2U6Ci0gICAgICAgIGNvbnRleHQgPSBleGMuX19jb250ZXh0X18KLSAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY29udGV4dCBub3QgaW4gc2VlbjoKLSAgICAgICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY29udGV4dCwgTm9uZSwgc2VlbikpCi0gICAgICAgICAgICBpdHMuYXBwZW5kKFsoX2NvbnRleHRfbWVzc2FnZSwgTm9uZSldKQorICAgIGVsaWYgKGNvbnRleHQgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgbm90IGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyBhbmQKKyAgICAgICAgICBjb250ZXh0IG5vdCBpbiBzZWVuKToKKyAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjb250ZXh0LCBOb25lLCBzZWVuKSkKKyAgICAgICAgaXRzLmFwcGVuZChbKF9jb250ZXh0X21lc3NhZ2UsIE5vbmUpXSkKICAgICBpdHMuYXBwZW5kKFsoZXhjLCBjdXN0b21fdGIgb3IgZXhjLl9fdHJhY2ViYWNrX18pXSkKICAgICAjIGl0ZXJ0b29scy5jaGFpbiBpcyBpbiBhbiBleHRlbnNpb24gbW9kdWxlIGFuZCBtYXkgYmUgdW5hdmFpbGFibGUKICAgICBmb3IgaXQgaW4gaXRzOgpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZS5weSBiL0xpYi90dXJ0bGUucHkKaW5kZXggYWMwYzMyYy4uYTQ0NzQzMyAxMDA2NDQKLS0tIGEvTGliL3R1cnRsZS5weQorKysgYi9MaWIvdHVydGxlLnB5CkBAIC0xMDgsNyArMTA4LDYgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IG1hdGgKIGltcG9ydCB0aW1lCi1pbXBvcnQgb3MKIGltcG9ydCBpbnNwZWN0CiAKIGZyb20gb3MucGF0aCBpbXBvcnQgaXNmaWxlLCBzcGxpdCwgam9pbgpkaWZmIC0tZ2l0IGEvTGliL3R5cGVzLnB5IGIvTGliL3R5cGVzLnB5CmluZGV4IGFiMzU0ZDEuLmNmZDA5ZWEgMTAwNjQ0Ci0tLSBhL0xpYi90eXBlcy5weQorKysgYi9MaWIvdHlwZXMucHkKQEAgLTEyLDYgKzEyLDggQEAKIEZ1bmN0aW9uVHlwZSA9IHR5cGUoX2YpCiBMYW1iZGFUeXBlID0gdHlwZShsYW1iZGE6IE5vbmUpICAgICAgICAgIyBTYW1lIGFzIEZ1bmN0aW9uVHlwZQogQ29kZVR5cGUgPSB0eXBlKF9mLl9fY29kZV9fKQorTWFwcGluZ1Byb3h5VHlwZSA9IHR5cGUodHlwZS5fX2RpY3RfXykKK1NpbXBsZU5hbWVzcGFjZSA9IHR5cGUoc3lzLmltcGxlbWVudGF0aW9uKQogCiBkZWYgX2coKToKICAgICB5aWVsZCAxCkBAIC0zOSwzICs0MSw2MSBAQAogTWVtYmVyRGVzY3JpcHRvclR5cGUgPSB0eXBlKEZ1bmN0aW9uVHlwZS5fX2dsb2JhbHNfXykKIAogZGVsIHN5cywgX2YsIF9nLCBfQywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBmb3IgZXhwb3J0CisKKworIyBQcm92aWRlIGEgUEVQIDMxMTUgY29tcGxpYW50IG1lY2hhbmlzbSBmb3IgY2xhc3MgY3JlYXRpb24KK2RlZiBuZXdfY2xhc3MobmFtZSwgYmFzZXM9KCksIGt3ZHM9Tm9uZSwgZXhlY19ib2R5PU5vbmUpOgorICAgICIiIkNyZWF0ZSBhIGNsYXNzIG9iamVjdCBkeW5hbWljYWxseSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLiIiIgorICAgIG1ldGEsIG5zLCBrd2RzID0gcHJlcGFyZV9jbGFzcyhuYW1lLCBiYXNlcywga3dkcykKKyAgICBpZiBleGVjX2JvZHkgaXMgbm90IE5vbmU6CisgICAgICAgIGV4ZWNfYm9keShucykKKyAgICByZXR1cm4gbWV0YShuYW1lLCBiYXNlcywgbnMsICoqa3dkcykKKworZGVmIHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXM9KCksIGt3ZHM9Tm9uZSk6CisgICAgIiIiQ2FsbCB0aGUgX19wcmVwYXJlX18gbWV0aG9kIG9mIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MuCisKKyAgICBSZXR1cm5zIChtZXRhY2xhc3MsIG5hbWVzcGFjZSwga3dkcykgYXMgYSAzLXR1cGxlCisKKyAgICAqbWV0YWNsYXNzKiBpcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzCisgICAgKm5hbWVzcGFjZSogaXMgdGhlIHByZXBhcmVkIGNsYXNzIG5hbWVzcGFjZQorICAgICprd2RzKiBpcyBhbiB1cGRhdGVkIGNvcHkgb2YgdGhlIHBhc3NlZCBpbiBrd2RzIGFyZ3VtZW50IHdpdGggYW55CisgICAgJ21ldGFjbGFzcycgZW50cnkgcmVtb3ZlZC4gSWYgbm8ga3dkcyBhcmd1bWVudCBpcyBwYXNzZWQgaW4sIHRoaXMgd2lsbAorICAgIGJlIGFuIGVtcHR5IGRpY3QuCisgICAgIiIiCisgICAgaWYga3dkcyBpcyBOb25lOgorICAgICAgICBrd2RzID0ge30KKyAgICBlbHNlOgorICAgICAgICBrd2RzID0gZGljdChrd2RzKSAjIERvbid0IGFsdGVyIHRoZSBwcm92aWRlZCBtYXBwaW5nCisgICAgaWYgJ21ldGFjbGFzcycgaW4ga3dkczoKKyAgICAgICAgbWV0YSA9IGt3ZHMucG9wKCdtZXRhY2xhc3MnKQorICAgIGVsc2U6CisgICAgICAgIGlmIGJhc2VzOgorICAgICAgICAgICAgbWV0YSA9IHR5cGUoYmFzZXNbMF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtZXRhID0gdHlwZQorICAgIGlmIGlzaW5zdGFuY2UobWV0YSwgdHlwZSk6CisgICAgICAgICMgd2hlbiBtZXRhIGlzIGEgdHlwZSwgd2UgZmlyc3QgZGV0ZXJtaW5lIHRoZSBtb3N0LWRlcml2ZWQgbWV0YWNsYXNzCisgICAgICAgICMgaW5zdGVhZCBvZiBpbnZva2luZyB0aGUgaW5pdGlhbCBjYW5kaWRhdGUgZGlyZWN0bHkKKyAgICAgICAgbWV0YSA9IF9jYWxjdWxhdGVfbWV0YShtZXRhLCBiYXNlcykKKyAgICBpZiBoYXNhdHRyKG1ldGEsICdfX3ByZXBhcmVfXycpOgorICAgICAgICBucyA9IG1ldGEuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsICoqa3dkcykKKyAgICBlbHNlOgorICAgICAgICBucyA9IHt9CisgICAgcmV0dXJuIG1ldGEsIG5zLCBrd2RzCisKK2RlZiBfY2FsY3VsYXRlX21ldGEobWV0YSwgYmFzZXMpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcy4iIiIKKyAgICB3aW5uZXIgPSBtZXRhCisgICAgZm9yIGJhc2UgaW4gYmFzZXM6CisgICAgICAgIGJhc2VfbWV0YSA9IHR5cGUoYmFzZSkKKyAgICAgICAgaWYgaXNzdWJjbGFzcyh3aW5uZXIsIGJhc2VfbWV0YSk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc3N1YmNsYXNzKGJhc2VfbWV0YSwgd2lubmVyKToKKyAgICAgICAgICAgIHdpbm5lciA9IGJhc2VfbWV0YQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm1ldGFjbGFzcyBjb25mbGljdDogIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBtZXRhY2xhc3Mgb2YgYSBkZXJpdmVkIGNsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgKG5vbi1zdHJpY3QpIHN1YmNsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvZiB0aGUgbWV0YWNsYXNzZXMgb2YgYWxsIGl0cyBiYXNlcyIpCisgICAgcmV0dXJuIHdpbm5lcgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L19fbWFpbl9fLnB5IGIvTGliL3VuaXR0ZXN0L19fbWFpbl9fLnB5CmluZGV4IDczMjAwNTAuLjc5OGViYzAgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9fX21haW5fXy5weQorKysgYi9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkKQEAgLTIsNyArMiwxNCBAQAogCiBpbXBvcnQgc3lzCiBpZiBzeXMuYXJndlswXS5lbmRzd2l0aCgiX19tYWluX18ucHkiKToKLSAgICBzeXMuYXJndlswXSA9ICJweXRob24gLW0gdW5pdHRlc3QiCisgICAgaW1wb3J0IG9zLnBhdGgKKyAgICAjIFdlIGNoYW5nZSBzeXMuYXJndlswXSB0byBtYWtlIGhlbHAgbWVzc2FnZSBtb3JlIHVzZWZ1bAorICAgICMgdXNlIGV4ZWN1dGFibGUgd2l0aG91dCBwYXRoLCB1bnF1b3RlZAorICAgICMgKGl0J3MganVzdCBhIGhpbnQgYW55d2F5KQorICAgICMgKGlmIHlvdSBoYXZlIHNwYWNlcyBpbiB5b3VyIGV4ZWN1dGFibGUgeW91IGdldCB3aGF0IHlvdSBkZXNlcnZlISkKKyAgICBleGVjdXRhYmxlID0gb3MucGF0aC5iYXNlbmFtZShzeXMuZXhlY3V0YWJsZSkKKyAgICBzeXMuYXJndlswXSA9IGV4ZWN1dGFibGUgKyAiIC1tIHVuaXR0ZXN0IgorICAgIGRlbCBvcwogCiBfX3VuaXR0ZXN0ID0gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvY2FzZS5weSBiL0xpYi91bml0dGVzdC9jYXNlLnB5CmluZGV4IGJlYTgxMDcuLmFkMWZhODQgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9jYXNlLnB5CisrKyBiL0xpYi91bml0dGVzdC9jYXNlLnB5CkBAIC05LDggKzksNyBAQAogaW1wb3J0IGNvbGxlY3Rpb25zCiAKIGZyb20gLiBpbXBvcnQgcmVzdWx0Ci1mcm9tIC51dGlsIGltcG9ydCAoc3RyY2xhc3MsIHNhZmVfcmVwciwgc29ydGVkX2xpc3RfZGlmZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICB1bm9yZGVyYWJsZV9saXN0X2RpZmZlcmVuY2UsIF9jb3VudF9kaWZmX2FsbF9wdXJwb3NlLAorZnJvbSAudXRpbCBpbXBvcnQgKHN0cmNsYXNzLCBzYWZlX3JlcHIsIF9jb3VudF9kaWZmX2FsbF9wdXJwb3NlLAogICAgICAgICAgICAgICAgICAgIF9jb3VudF9kaWZmX2hhc2hhYmxlKQogCiBfX3VuaXR0ZXN0ID0gVHJ1ZQpAQCAtMTA0LDkgKzEwMyw5IEBACiBjbGFzcyBfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgdGVzdF9jYXNlLCBjYWxsYWJsZV9vYmo9Tm9uZSwKLSAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgorICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleD1Ob25lKToKICAgICAgICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkCi0gICAgICAgIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiA9IHRlc3RfY2FzZS5mYWlsdXJlRXhjZXB0aW9uCisgICAgICAgIHNlbGYudGVzdF9jYXNlID0gdGVzdF9jYXNlCiAgICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gY2FsbGFibGVfb2JqLl9fbmFtZV9fCkBAIC0xMTcsNiArMTE2LDI0IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWRfcmVnZXgsIChieXRlcywgc3RyKSk6CiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCA9IHJlLmNvbXBpbGUoZXhwZWN0ZWRfcmVnZXgpCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcmVnZXggPSBleHBlY3RlZF9yZWdleAorICAgICAgICBzZWxmLm1zZyA9IE5vbmUKKworICAgIGRlZiBfcmFpc2VGYWlsdXJlKHNlbGYsIHN0YW5kYXJkTXNnKToKKyAgICAgICAgbXNnID0gc2VsZi50ZXN0X2Nhc2UuX2Zvcm1hdE1lc3NhZ2Uoc2VsZi5tc2csIHN0YW5kYXJkTXNnKQorICAgICAgICByYWlzZSBzZWxmLnRlc3RfY2FzZS5mYWlsdXJlRXhjZXB0aW9uKG1zZykKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgbmFtZSwgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgSWYgY2FsbGFibGVfb2JqIGlzIE5vbmUsIGFzc2VydFJhaXNlcy9XYXJucyBpcyBiZWluZyB1c2VkIGFzIGEKKyAgICAgICAgY29udGV4dCBtYW5hZ2VyLCBzbyBjaGVjayBmb3IgYSAnbXNnJyBrd2FyZyBhbmQgcmV0dXJuIHNlbGYuCisgICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBub3QgTm9uZSwgY2FsbCBpdCBwYXNzaW5nIGFyZ3MgYW5kIGt3YXJncy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5tc2cgPSBrd2FyZ3MucG9wKCdtc2cnLCBOb25lKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgd2l0aCBzZWxmOgorICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKwogCiAKIGNsYXNzIF9Bc3NlcnRSYWlzZXNDb250ZXh0KF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dCk6CkBAIC0xMzIsMTEgKzE0OSwxMCBAQAogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIGV4Y19uYW1lID0gc3RyKHNlbGYuZXhwZWN0ZWQpCiAgICAgICAgICAgICBpZiBzZWxmLm9ial9uYW1lOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigiezB9IG5vdCByYWlzZWQgYnkgezF9IgotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lLCBzZWxmLm9ial9uYW1lKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCByYWlzZWQgYnkge30iLmZvcm1hdChleGNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHJhaXNlZCIKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSkpCisgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgcmFpc2VkIi5mb3JtYXQoZXhjX25hbWUpKQogICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhleGNfdHlwZSwgc2VsZi5leHBlY3RlZCk6CiAgICAgICAgICAgICAjIGxldCB1bmV4cGVjdGVkIGV4Y2VwdGlvbnMgcGFzcyB0aHJvdWdoCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE0Nyw4ICsxNjMsOCBAQAogCiAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gc2VsZi5leHBlY3RlZF9yZWdleAogICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcmVnZXguc2VhcmNoKHN0cihleGNfdmFsdWUpKToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignIiVzIiBkb2VzIG5vdCBtYXRjaCAiJXMiJyAlCi0gICAgICAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGV4Y192YWx1ZSkpKQorICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCcie30iIGRvZXMgbm90IG1hdGNoICJ7fSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihleGNfdmFsdWUpKSkKICAgICAgICAgcmV0dXJuIFRydWUKIAogCkBAIC0xOTIsMTQgKzIwOCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICMgTm93IHdlIHNpbXBseSB0cnkgdG8gY2hvb3NlIGEgaGVscGZ1bCBmYWlsdXJlIG1lc3NhZ2UKICAgICAgICAgaWYgZmlyc3RfbWF0Y2hpbmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oJyIlcyIgZG9lcyBub3QgbWF0Y2ggIiVzIicgJQotICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGZpcnN0X21hdGNoaW5nKSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoJyJ7fSIgZG9lcyBub3QgbWF0Y2ggInt9IicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZmlyc3RfbWF0Y2hpbmcpKSkKICAgICAgICAgaWYgc2VsZi5vYmpfbmFtZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigiezB9IG5vdCB0cmlnZ2VyZWQgYnkgezF9IgotICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUsIHNlbGYub2JqX25hbWUpKQorICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgdHJpZ2dlcmVkIGJ5IHt9Ii5mb3JtYXQoZXhjX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigiezB9IG5vdCB0cmlnZ2VyZWQiCi0gICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCB0cmlnZ2VyZWQiLmZvcm1hdChleGNfbmFtZSkpCiAKIAogY2xhc3MgVGVzdENhc2Uob2JqZWN0KToKQEAgLTQ1Miw3ICs0NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGVzdFJlc3VsdCBoYXMgbm8gYWRkRXhwZWN0ZWRGYWlsdXJlIG1ldGhvZCwgcmVwb3J0aW5nIGFzIHBhc3NlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZFN1Y2Nlc3Moc2VsZikKLQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgcmVzdWx0LnN0b3BUZXN0KHNlbGYpCiAgICAgICAgICAgICBpZiBvcmlnX3Jlc3VsdCBpcyBOb25lOgpAQCAtNTI2LDcgKzU0MSw2IEBACiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gICclcyA6ICVzJyAlIChzYWZlX3JlcHIoc3RhbmRhcmRNc2cpLCBzYWZlX3JlcHIobXNnKSkKIAotCiAgICAgZGVmIGFzc2VydFJhaXNlcyhzZWxmLCBleGNDbGFzcywgY2FsbGFibGVPYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiRmFpbCB1bmxlc3MgYW4gZXhjZXB0aW9uIG9mIGNsYXNzIGV4Y0NsYXNzIGlzIHJhaXNlZAogICAgICAgICAgICBieSBjYWxsYWJsZU9iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZApAQCAtNTQxLDYgKzU1NSw5IEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgICAgICBBbiBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIGNhbiBiZSBwcm92aWRlZCB3aGVuIGFzc2VydFJhaXNlcworICAgICAgICAgICBpcyB1c2VkIGFzIGEgY29udGV4dCBvYmplY3QuCisKICAgICAgICAgICAgVGhlIGNvbnRleHQgbWFuYWdlciBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgZXhjZXB0aW9uIGFzCiAgICAgICAgICAgIHRoZSAnZXhjZXB0aW9uJyBhdHRyaWJ1dGUuIFRoaXMgYWxsb3dzIHlvdSB0byBpbnNwZWN0IHRoZQogICAgICAgICAgICBleGNlcHRpb24gYWZ0ZXIgdGhlIGFzc2VydGlvbjo6CkBAIC01NTEsMjUgKzU2OCwyNSBAQAogICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfZXhjZXB0aW9uLmVycm9yX2NvZGUsIDMpCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhjQ2xhc3MsIHNlbGYsIGNhbGxhYmxlT2JqKQotICAgICAgICBpZiBjYWxsYWJsZU9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVPYmooKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlcycsIGNhbGxhYmxlT2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0V2FybnMoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgY2FsbGFibGVfb2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkZhaWwgdW5sZXNzIGEgd2FybmluZyBvZiBjbGFzcyB3YXJuQ2xhc3MgaXMgdHJpZ2dlcmVkCi0gICAgICAgICAgIGJ5IGNhbGxhYmxlT2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCisgICAgICAgICAgIGJ5IGNhbGxhYmxlX29iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAogICAgICAgICAgICBhcmd1bWVudHMga3dhcmdzLiAgSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiB3YXJuaW5nIGlzCiAgICAgICAgICAgIHRyaWdnZXJlZCwgaXQgd2lsbCBub3QgYmUgaGFuZGxlZDogZGVwZW5kaW5nIG9uIHRoZSBvdGhlcgogICAgICAgICAgICB3YXJuaW5nIGZpbHRlcmluZyBydWxlcyBpbiBlZmZlY3QsIGl0IG1pZ2h0IGJlIHNpbGVuY2VkLCBwcmludGVkCiAgICAgICAgICAgIG91dCwgb3IgcmFpc2VkIGFzIGFuIGV4Y2VwdGlvbi4KIAotICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCBjYWxsYWJsZU9iaiBvbWl0dGVkIG9yIE5vbmUsIHdpbGwgcmV0dXJuIGEKKyAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggY2FsbGFibGVfb2JqIG9taXR0ZWQgb3IgTm9uZSwgd2lsbCByZXR1cm4gYQogICAgICAgICAgICBjb250ZXh0IG9iamVjdCB1c2VkIGxpa2UgdGhpczo6CiAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoU29tZVdhcm5pbmcpOgogICAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICAgICAgIEFuIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgJ21zZycgY2FuIGJlIHByb3ZpZGVkIHdoZW4gYXNzZXJ0V2FybnMKKyAgICAgICAgICAgaXMgdXNlZCBhcyBhIGNvbnRleHQgb2JqZWN0LgorCiAgICAgICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IG1hdGNoaW5nCiAgICAgICAgICAgIHdhcm5pbmcgYXMgdGhlICd3YXJuaW5nJyBhdHRyaWJ1dGU7IHNpbWlsYXJseSwgdGhlICdmaWxlbmFtZScKICAgICAgICAgICAgYW5kICdsaW5lbm8nIGF0dHJpYnV0ZXMgZ2l2ZSB5b3UgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbmUKQEAgLTU4MiwxMCArNTk5LDcgQEAKICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX3dhcm5pbmcuc29tZV9hdHRyaWJ1dGUsIDE0NykKICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGNhbGxhYmxlX29iaikKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zJywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgX2dldEFzc2VydEVxdWFsaXR5RnVuYyhzZWxmLCBmaXJzdCwgc2Vjb25kKToKICAgICAgICAgIiIiR2V0IGEgZGV0YWlsZWQgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdGhlIHR5cGVzIG9mIHRoZSB0d28gYXJncy4KQEAgLTcyMiw3ICs3MzYsNyBAQAogICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHRvIHVzZSBvbiBmYWlsdXJlIGluc3RlYWQgb2YgYSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VxX3R5cGUgIT0gTm9uZToKKyAgICAgICAgaWYgc2VxX3R5cGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZXFfdHlwZV9uYW1lID0gc2VxX3R5cGUuX19uYW1lX18KICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlcTEsIHNlcV90eXBlKToKICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oJ0ZpcnN0IHNlcXVlbmNlIGlzIG5vdCBhICVzOiAlcycKQEAgLTk1MSw0OCArOTY1LDYgQEAKIAogICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKIAotICAgIGRlZiBhc3NlcnRTYW1lRWxlbWVudHMoc2VsZiwgZXhwZWN0ZWRfc2VxLCBhY3R1YWxfc2VxLCBtc2c9Tm9uZSk6Ci0gICAgICAgICIiIkFuIHVub3JkZXJlZCBzZXF1ZW5jZSBzcGVjaWZpYyBjb21wYXJpc29uLgotCi0gICAgICAgIFJhaXNlcyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgbGlzdGluZyB3aGljaCBlbGVtZW50cyBvZiBleHBlY3RlZF9zZXEKLSAgICAgICAgYXJlIG1pc3NpbmcgZnJvbSBhY3R1YWxfc2VxIGFuZCB2aWNlIHZlcnNhIGlmIGFueS4KLQotICAgICAgICBEdXBsaWNhdGUgZWxlbWVudHMgYXJlIGlnbm9yZWQgd2hlbiBjb21wYXJpbmcgKmV4cGVjdGVkX3NlcSogYW5kCi0gICAgICAgICphY3R1YWxfc2VxKi4gSXQgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYGBhc3NlcnRFcXVhbChzZXQoZXhwZWN0ZWQpLAotICAgICAgICBzZXQoYWN0dWFsKSlgYCBidXQgaXQgd29ya3Mgd2l0aCBzZXF1ZW5jZXMgb2YgdW5oYXNoYWJsZSBvYmplY3RzIGFzCi0gICAgICAgIHdlbGwuCi0gICAgICAgICIiIgotICAgICAgICB3YXJuaW5ncy53YXJuKCdhc3NlcnRTYW1lRWxlbWVudHMgaXMgZGVwcmVjYXRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleHBlY3RlZCA9IHNldChleHBlY3RlZF9zZXEpCi0gICAgICAgICAgICBhY3R1YWwgPSBzZXQoYWN0dWFsX3NlcSkKLSAgICAgICAgICAgIG1pc3NpbmcgPSBzb3J0ZWQoZXhwZWN0ZWQuZGlmZmVyZW5jZShhY3R1YWwpKQotICAgICAgICAgICAgdW5leHBlY3RlZCA9IHNvcnRlZChhY3R1YWwuZGlmZmVyZW5jZShleHBlY3RlZCkpCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAjIEZhbGwgYmFjayB0byBzbG93ZXIgbGlzdC1jb21wYXJlIGlmIGFueSBvZiB0aGUgb2JqZWN0cyBhcmUKLSAgICAgICAgICAgICMgbm90IGhhc2hhYmxlLgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KGV4cGVjdGVkX3NlcSkKLSAgICAgICAgICAgIGFjdHVhbCA9IGxpc3QoYWN0dWFsX3NlcSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBleHBlY3RlZC5zb3J0KCkKLSAgICAgICAgICAgICAgICBhY3R1YWwuc29ydCgpCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgIG1pc3NpbmcsIHVuZXhwZWN0ZWQgPSB1bm9yZGVyYWJsZV9saXN0X2RpZmZlcmVuY2UoZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1pc3NpbmcsIHVuZXhwZWN0ZWQgPSBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLCBhY3R1YWwpCi0gICAgICAgIGVycm9ycyA9IFtdCi0gICAgICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCdFeHBlY3RlZCwgYnV0IG1pc3Npbmc6XG4gICAgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZV9yZXByKG1pc3NpbmcpKQotICAgICAgICBpZiB1bmV4cGVjdGVkOgotICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgnVW5leHBlY3RlZCwgYnV0IHByZXNlbnQ6XG4gICAgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZV9yZXByKHVuZXhwZWN0ZWQpKQotICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICdcbicuam9pbihlcnJvcnMpCi0gICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKLQogCiAgICAgZGVmIGFzc2VydENvdW50RXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpOgogICAgICAgICAiIiJBbiB1bm9yZGVyZWQgc2VxdWVuY2UgY29tcGFyaXNvbiBhc3NlcnRpbmcgdGhhdCB0aGUgc2FtZSBlbGVtZW50cywKQEAgLTEwMzcsOCArMTAwOSw4IEBACiAgICAgICAgICAgICBpZiAobGVuKGZpcnN0KSA+IHNlbGYuX2RpZmZUaHJlc2hvbGQgb3IKICAgICAgICAgICAgICAgICBsZW4oc2Vjb25kKSA+IHNlbGYuX2RpZmZUaHJlc2hvbGQpOgogICAgICAgICAgICAgICAgIHNlbGYuX2Jhc2VBc3NlcnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2cpCi0gICAgICAgICAgICBmaXJzdGxpbmVzID0gZmlyc3Quc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBzZWNvbmQuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgZmlyc3RsaW5lcyA9IGZpcnN0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKKyAgICAgICAgICAgIHNlY29uZGxpbmVzID0gc2Vjb25kLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgIGlmIGxlbihmaXJzdGxpbmVzKSA9PSAxIGFuZCBmaXJzdC5zdHJpcCgnXHJcbicpID09IGZpcnN0OgogICAgICAgICAgICAgICAgIGZpcnN0bGluZXMgPSBbZmlyc3QgKyAnXG4nXQogICAgICAgICAgICAgICAgIHNlY29uZGxpbmVzID0gW3NlY29uZCArICdcbiddCkBAIC0xMTA2LDE1ICsxMDc4LDE1IEBACiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleDogUmVnZXggKHJlIHBhdHRlcm4gb2JqZWN0IG9yIHN0cmluZykgZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZm91bmQgaW4gZXJyb3IgbWVzc2FnZS4KICAgICAgICAgICAgIGNhbGxhYmxlX29iajogRnVuY3Rpb24gdG8gYmUgY2FsbGVkLgorICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIHdoZW4gYXNzZXJ0UmFpc2VzUmVnZXggaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KICAgICAgICAgICAgIGFyZ3M6IEV4dHJhIGFyZ3MuCiAgICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIHNlbGYsIGNhbGxhYmxlX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4KQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFdhcm5zUmVnZXgoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgZXhwZWN0ZWRfcmVnZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVfb2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CkBAIC0xMTI4LDE1ICsxMTAwLDE0IEBACiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleDogUmVnZXggKHJlIHBhdHRlcm4gb2JqZWN0IG9yIHN0cmluZykgZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZm91bmQgaW4gZXJyb3IgbWVzc2FnZS4KICAgICAgICAgICAgIGNhbGxhYmxlX29iajogRnVuY3Rpb24gdG8gYmUgY2FsbGVkLgorICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIHdoZW4gYXNzZXJ0V2FybnNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KICAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCkKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zUmVnZXgnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRSZWdleChzZWxmLCB0ZXh0LCBleHBlY3RlZF9yZWdleCwgbXNnPU5vbmUpOgogICAgICAgICAiIiJGYWlsIHRoZSB0ZXN0IHVubGVzcyB0aGUgdGV4dCBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIiIiCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbWFpbi5weSBiL0xpYi91bml0dGVzdC9tYWluLnB5CmluZGV4IDU1ZDRlNGIuLmEyNWEyZjggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tYWluLnB5CisrKyBiL0xpYi91bml0dGVzdC9tYWluLnB5CkBAIC0xLDggKzEsOCBAQAogIiIiVW5pdHRlc3QgbWFpbiBwcm9ncmFtIiIiCiAKIGltcG9ydCBzeXMKK2ltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgdHlwZXMKIAogZnJvbSAuIGltcG9ydCBsb2FkZXIsIHJ1bm5lcgogZnJvbSAuc2lnbmFscyBpbXBvcnQgaW5zdGFsbEhhbmRsZXIKQEAgLTc3LDYgKzc3LDcgQEAKIGRlZiBfY29udmVydF9uYW1lcyhuYW1lcyk6CiAgICAgcmV0dXJuIFtfY29udmVydF9uYW1lKG5hbWUpIGZvciBuYW1lIGluIG5hbWVzXQogCisKIGNsYXNzIFRlc3RQcm9ncmFtKG9iamVjdCk6CiAgICAgIiIiQSBjb21tYW5kLWxpbmUgcHJvZ3JhbSB0aGF0IHJ1bnMgYSBzZXQgb2YgdGVzdHM7IHRoaXMgaXMgcHJpbWFyaWx5CiAgICAgICAgZm9yIG1ha2luZyB0ZXN0IG1vZHVsZXMgY29udmVuaWVudGx5IGV4ZWN1dGFibGUuCkBAIC0xNDMsMzMgKzE0NCw5IEBACiAgICAgICAgICAgICBzZWxmLl9kb19kaXNjb3ZlcnkoYXJndlsyOl0pCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpbXBvcnQgZ2V0b3B0Ci0gICAgICAgIGxvbmdfb3B0cyA9IFsnaGVscCcsICd2ZXJib3NlJywgJ3F1aWV0JywgJ2ZhaWxmYXN0JywgJ2NhdGNoJywgJ2J1ZmZlciddCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3ZbMTpdLCAnaEh2cWZjYicsIGxvbmdfb3B0cykKLSAgICAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6Ci0gICAgICAgICAgICBzZWxmLnVzYWdlRXhpdChtc2cpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmb3Igb3B0LCB2YWx1ZSBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgb3B0IGluICgnLWgnLCctSCcsJy0taGVscCcpOgotICAgICAgICAgICAgICAgIHNlbGYudXNhZ2VFeGl0KCkKLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1xJywnLS1xdWlldCcpOgotICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMAotICAgICAgICAgICAgaWYgb3B0IGluICgnLXYnLCctLXZlcmJvc2UnKToKLSAgICAgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDIKLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1mJywnLS1mYWlsZmFzdCcpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuZmFpbGZhc3QgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsZmFzdCA9IFRydWUKLSAgICAgICAgICAgICAgICAjIFNob3VsZCB0aGlzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiAtZiBpcyBub3QgdmFsaWQ/Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCctYycsJy0tY2F0Y2gnKToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNhdGNoYnJlYWsgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXRjaGJyZWFrID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1jIGlzIG5vdCB2YWxpZD8KLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1iJywnLS1idWZmZXInKToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmJ1ZmZlciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IFRydWUKLSAgICAgICAgICAgICAgICAjIFNob3VsZCB0aGlzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiAtYiBpcyBub3QgdmFsaWQ/CisgICAgICAgIHBhcnNlciA9IHNlbGYuX2dldE9wdFBhcnNlcigpCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2WzE6XSkKKyAgICAgICAgc2VsZi5fc2V0QXR0cmlidXRlc0Zyb21PcHRpb25zKG9wdGlvbnMpCiAKICAgICAgICAgaWYgbGVuKGFyZ3MpID09IDAgYW5kIHNlbGYubW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgICAjIHRoaXMgYWxsb3dzICJweXRob24gLW0gdW5pdHRlc3QgLXYiIHRvIHN0aWxsIHdvcmsgZm9yCkBAIC0xOTcsMTQgKzE3NCwxNCBAQAogICAgICAgICAgICAgc2VsZi50ZXN0ID0gc2VsZi50ZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhzZWxmLnRlc3ROYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUpCiAKLSAgICBkZWYgX2RvX2Rpc2NvdmVyeShzZWxmLCBhcmd2LCBMb2FkZXI9bG9hZGVyLlRlc3RMb2FkZXIpOgotICAgICAgICAjIGhhbmRsZSBjb21tYW5kIGxpbmUgYXJncyBmb3IgdGVzdCBkaXNjb3ZlcnkKLSAgICAgICAgc2VsZi5wcm9nTmFtZSA9ICclcyBkaXNjb3ZlcicgJSBzZWxmLnByb2dOYW1lCi0gICAgICAgIGltcG9ydCBvcHRwYXJzZQorICAgIGRlZiBfZ2V0T3B0UGFyc2VyKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQogICAgICAgICBwYXJzZXIucHJvZyA9IHNlbGYucHJvZ05hbWUKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGRlc3Q9J3ZlcmJvc2UnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdWZXJib3NlIG91dHB1dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1aWV0JywgZGVzdD0ncXVpZXQnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdRdWlldCBvdXRwdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorCiAgICAgICAgIGlmIHNlbGYuZmFpbGZhc3QgIT0gRmFsc2U6CiAgICAgICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLWYnLCAnLS1mYWlsZmFzdCcsIGRlc3Q9J2ZhaWxmYXN0JywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1N0b3Agb24gZmlyc3QgZmFpbCBvciBlcnJvcicsCkBAIC0yMTcsMjAgKzE5NCw5IEBACiAgICAgICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLWInLCAnLS1idWZmZXInLCBkZXN0PSdidWZmZXInLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQnVmZmVyIHN0ZG91dCBhbmQgc3RkZXJyIGR1cmluZyB0ZXN0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zdGFydC1kaXJlY3RvcnknLCBkZXN0PSdzdGFydCcsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXJlY3RvcnkgdG8gc3RhcnQgZGlzY292ZXJ5ICgnLicgZGVmYXVsdCkiKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wYXR0ZXJuJywgZGVzdD0ncGF0dGVybicsIGRlZmF1bHQ9J3Rlc3QqLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0dGVybiB0byBtYXRjaCB0ZXN0cyAoJ3Rlc3QqLnB5JyBkZWZhdWx0KSIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRvcC1sZXZlbC1kaXJlY3RvcnknLCBkZXN0PSd0b3AnLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RvcCBsZXZlbCBkaXJlY3Rvcnkgb2YgcHJvamVjdCAoZGVmYXVsdHMgdG8gc3RhcnQgZGlyZWN0b3J5KScpCisgICAgICAgIHJldHVybiBwYXJzZXIKIAotICAgICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndikKLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMzoKLSAgICAgICAgICAgIHNlbGYudXNhZ2VFeGl0KCkKLQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gemlwKCgnc3RhcnQnLCAncGF0dGVybicsICd0b3AnKSwgYXJncyk6Ci0gICAgICAgICAgICBzZXRhdHRyKG9wdGlvbnMsIG5hbWUsIHZhbHVlKQotCisgICAgZGVmIF9zZXRBdHRyaWJ1dGVzRnJvbU9wdGlvbnMoc2VsZiwgb3B0aW9ucyk6CiAgICAgICAgICMgb25seSBzZXQgb3B0aW9ucyBmcm9tIHRoZSBwYXJzaW5nIGhlcmUKICAgICAgICAgIyBpZiB0aGV5IHdlcmVuJ3Qgc2V0IGV4cGxpY2l0bHkgaW4gdGhlIGNvbnN0cnVjdG9yCiAgICAgICAgIGlmIHNlbGYuZmFpbGZhc3QgaXMgTm9uZToKQEAgLTI0Miw2ICsyMDgsMzEgQEAKIAogICAgICAgICBpZiBvcHRpb25zLnZlcmJvc2U6CiAgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDIKKyAgICAgICAgZWxpZiBvcHRpb25zLnF1aWV0OgorICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAwCisKKyAgICBkZWYgX2FkZERpc2NvdmVyeU9wdGlvbnMoc2VsZiwgcGFyc2VyKToKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc3RhcnQtZGlyZWN0b3J5JywgZGVzdD0nc3RhcnQnLCBkZWZhdWx0PScuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRGlyZWN0b3J5IHRvIHN0YXJ0IGRpc2NvdmVyeSAoJy4nIGRlZmF1bHQpIikKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcGF0dGVybicsIGRlc3Q9J3BhdHRlcm4nLCBkZWZhdWx0PSd0ZXN0Ki5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdHRlcm4gdG8gbWF0Y2ggdGVzdHMgKCd0ZXN0Ki5weScgZGVmYXVsdCkiKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10b3AtbGV2ZWwtZGlyZWN0b3J5JywgZGVzdD0ndG9wJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUb3AgbGV2ZWwgZGlyZWN0b3J5IG9mIHByb2plY3QgKGRlZmF1bHRzIHRvIHN0YXJ0IGRpcmVjdG9yeSknKQorCisgICAgZGVmIF9kb19kaXNjb3Zlcnkoc2VsZiwgYXJndiwgTG9hZGVyPWxvYWRlci5UZXN0TG9hZGVyKToKKyAgICAgICAgIyBoYW5kbGUgY29tbWFuZCBsaW5lIGFyZ3MgZm9yIHRlc3QgZGlzY292ZXJ5CisgICAgICAgIHNlbGYucHJvZ05hbWUgPSAnJXMgZGlzY292ZXInICUgc2VsZi5wcm9nTmFtZQorICAgICAgICBwYXJzZXIgPSBzZWxmLl9nZXRPcHRQYXJzZXIoKQorICAgICAgICBzZWxmLl9hZGREaXNjb3ZlcnlPcHRpb25zKHBhcnNlcikKKworICAgICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndikKKyAgICAgICAgaWYgbGVuKGFyZ3MpID4gMzoKKyAgICAgICAgICAgIHNlbGYudXNhZ2VFeGl0KCkKKworICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gemlwKCgnc3RhcnQnLCAncGF0dGVybicsICd0b3AnKSwgYXJncyk6CisgICAgICAgICAgICBzZXRhdHRyKG9wdGlvbnMsIG5hbWUsIHZhbHVlKQorCisgICAgICAgIHNlbGYuX3NldEF0dHJpYnV0ZXNGcm9tT3B0aW9ucyhvcHRpb25zKQogCiAgICAgICAgIHN0YXJ0X2RpciA9IG9wdGlvbnMuc3RhcnQKICAgICAgICAgcGF0dGVybiA9IG9wdGlvbnMucGF0dGVybgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21vY2sucHkgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjRjZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L21vY2sucHkKQEAgLTAsMCArMSwyMjExIEBACisjIG1vY2sucHkKKyMgVGVzdCB0b29scyBmb3IgbW9ja2luZyBhbmQgcGF0Y2hpbmcuCisjIE1haW50YWluZWQgYnkgTWljaGFlbCBGb29yZAorIyBCYWNrcG9ydCBmb3Igb3RoZXIgdmVyc2lvbnMgb2YgUHl0aG9uIGF2YWlsYWJsZSBmcm9tCisjIGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9tb2NrCisKK19fYWxsX18gPSAoCisgICAgJ01vY2snLAorICAgICdNYWdpY01vY2snLAorICAgICdwYXRjaCcsCisgICAgJ3NlbnRpbmVsJywKKyAgICAnREVGQVVMVCcsCisgICAgJ0FOWScsCisgICAgJ2NhbGwnLAorICAgICdjcmVhdGVfYXV0b3NwZWMnLAorICAgICdGSUxURVJfRElSJywKKyAgICAnTm9uQ2FsbGFibGVNb2NrJywKKyAgICAnTm9uQ2FsbGFibGVNYWdpY01vY2snLAorICAgICdtb2NrX29wZW4nLAorICAgICdQcm9wZXJ0eU1vY2snLAorKQorCisKK19fdmVyc2lvbl9fID0gJzEuMCcKKworCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHBwcmludAoraW1wb3J0IHN5cworZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKworQmFzZUV4Y2VwdGlvbnMgPSAoQmFzZUV4Y2VwdGlvbiwpCitpZiAnamF2YScgaW4gc3lzLnBsYXRmb3JtOgorICAgICMganl0aG9uCisgICAgaW1wb3J0IGphdmEKKyAgICBCYXNlRXhjZXB0aW9ucyA9IChCYXNlRXhjZXB0aW9uLCBqYXZhLmxhbmcuVGhyb3dhYmxlKQorCisKK0ZJTFRFUl9ESVIgPSBUcnVlCisKKyMgV29ya2Fyb3VuZCBmb3IgaXNzdWUgIzEyMzcwCisjIFdpdGhvdXQgdGhpcywgdGhlIF9fY2xhc3NfXyBwcm9wZXJ0aWVzIHdvdWxkbid0IGJlIHNldCBjb3JyZWN0bHkKK19zYWZlX3N1cGVyID0gc3VwZXIKKworZGVmIF9pc19pbnN0YW5jZV9tb2NrKG9iaik6CisgICAgIyBjYW4ndCB1c2UgaXNpbnN0YW5jZSBvbiBNb2NrIG9iamVjdHMgYmVjYXVzZSB0aGV5IG92ZXJyaWRlIF9fY2xhc3NfXworICAgICMgVGhlIGJhc2UgY2xhc3MgZm9yIGFsbCBtb2NrcyBpcyBOb25DYWxsYWJsZU1vY2sKKyAgICByZXR1cm4gaXNzdWJjbGFzcyh0eXBlKG9iaiksIE5vbkNhbGxhYmxlTW9jaykKKworCitkZWYgX2lzX2V4Y2VwdGlvbihvYmopOgorICAgIHJldHVybiAoCisgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBCYXNlRXhjZXB0aW9ucykgb3IKKyAgICAgICAgaXNpbnN0YW5jZShvYmosIHR5cGUpIGFuZCBpc3N1YmNsYXNzKG9iaiwgQmFzZUV4Y2VwdGlvbnMpCisgICAgKQorCisKK2NsYXNzIF9zbG90dGVkKG9iamVjdCk6CisgICAgX19zbG90c19fID0gWydhJ10KKworCitEZXNjcmlwdG9yVHlwZXMgPSAoCisgICAgdHlwZShfc2xvdHRlZC5hKSwKKyAgICBwcm9wZXJ0eSwKKykKKworCitkZWYgX2dldHNpZ25hdHVyZShmdW5jLCBza2lwZmlyc3QsIGluc3RhbmNlPUZhbHNlKToKKyAgICBpZiBpc2luc3RhbmNlKGZ1bmMsIHR5cGUpIGFuZCBub3QgaW5zdGFuY2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9faW5pdF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBza2lwZmlyc3QgPSBUcnVlCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmdW5jLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgIyBmb3IgY2xhc3NlcyB3aGVyZSBpbnN0YW5jZSBpcyBUcnVlIHdlIGVuZCB1cCBoZXJlIHRvbworICAgICAgICB0cnk6CisgICAgICAgICAgICBmdW5jID0gZnVuYy5fX2NhbGxfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKworICAgIHRyeToKKyAgICAgICAgYXJnc3BlYyA9IGluc3BlY3QuZ2V0ZnVsbGFyZ3NwZWMoZnVuYykKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAjIEMgZnVuY3Rpb24gLyBtZXRob2QsIHBvc3NpYmx5IGluaGVyaXRlZCBvYmplY3QoKS5fX2luaXRfXworICAgICAgICByZXR1cm4KKworICAgIHJlZ2FyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5LCBrd29ubHlkZWYsIGFubiA9IGFyZ3NwZWMKKworCisgICAgIyBpbnN0YW5jZSBtZXRob2RzIGFuZCBjbGFzc21ldGhvZHMgbmVlZCB0byBsb3NlIHRoZSBzZWxmIGFyZ3VtZW50CisgICAgaWYgZ2V0YXR0cihmdW5jLCAnX19zZWxmX18nLCBOb25lKSBpcyBub3QgTm9uZToKKyAgICAgICAgcmVnYXJncyA9IHJlZ2FyZ3NbMTpdCisgICAgaWYgc2tpcGZpcnN0OgorICAgICAgICAjIHRoaXMgY29uZGl0aW9uIGFuZCB0aGUgYWJvdmUgb25lIGFyZSBuZXZlciBib3RoIFRydWUgLSB3aHk/CisgICAgICAgIHJlZ2FyZ3MgPSByZWdhcmdzWzE6XQorCisgICAgc2lnbmF0dXJlID0gaW5zcGVjdC5mb3JtYXRhcmdzcGVjKAorICAgICAgICByZWdhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsCisgICAgICAgIGt3b25seSwga3dvbmx5ZGVmLCBhbm4sIGZvcm1hdHZhbHVlPWxhbWJkYSB2YWx1ZTogIiIpCisgICAgcmV0dXJuIHNpZ25hdHVyZVsxOi0xXSwgZnVuYworCisKK2RlZiBfY2hlY2tfc2lnbmF0dXJlKGZ1bmMsIG1vY2ssIHNraXBmaXJzdCwgaW5zdGFuY2U9RmFsc2UpOgorICAgIGlmIG5vdCBfY2FsbGFibGUoZnVuYyk6CisgICAgICAgIHJldHVybgorCisgICAgcmVzdWx0ID0gX2dldHNpZ25hdHVyZShmdW5jLCBza2lwZmlyc3QsIGluc3RhbmNlKQorICAgIGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICByZXR1cm4KKyAgICBzaWduYXR1cmUsIGZ1bmMgPSByZXN1bHQKKworICAgICMgY2FuJ3QgdXNlIHNlbGYgYmVjYXVzZSAic2VsZiIgaXMgY29tbW9uIGFzIGFuIGFyZ3VtZW50IG5hbWUKKyAgICAjIHVuZm9ydHVuYXRlbHkgZXZlbiBub3QgaW4gdGhlIGZpcnN0IHBsYWNlCisgICAgc3JjID0gImxhbWJkYSBfbW9ja19zZWxmLCAlczogTm9uZSIgJSBzaWduYXR1cmUKKyAgICBjaGVja3NpZyA9IGV2YWwoc3JjLCB7fSkKKyAgICBfY29weV9mdW5jX2RldGFpbHMoZnVuYywgY2hlY2tzaWcpCisgICAgdHlwZShtb2NrKS5fbW9ja19jaGVja19zaWcgPSBjaGVja3NpZworCisKK2RlZiBfY29weV9mdW5jX2RldGFpbHMoZnVuYywgZnVuY29weSk6CisgICAgZnVuY29weS5fX25hbWVfXyA9IGZ1bmMuX19uYW1lX18KKyAgICBmdW5jb3B5Ll9fZG9jX18gPSBmdW5jLl9fZG9jX18KKyAgICAjIHdlIGV4cGxpY2l0bHkgZG9uJ3QgY29weSBmdW5jLl9fZGljdF9fIGludG8gdGhpcyBjb3B5IGFzIGl0IHdvdWxkCisgICAgIyBleHBvc2Ugb3JpZ2luYWwgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSBtb2NrZWQKKyAgICBmdW5jb3B5Ll9fbW9kdWxlX18gPSBmdW5jLl9fbW9kdWxlX18KKyAgICBmdW5jb3B5Ll9fZGVmYXVsdHNfXyA9IGZ1bmMuX19kZWZhdWx0c19fCisgICAgZnVuY29weS5fX2t3ZGVmYXVsdHNfXyA9IGZ1bmMuX19rd2RlZmF1bHRzX18KKworCitkZWYgX2NhbGxhYmxlKG9iaik6CisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGlmIGdldGF0dHIob2JqLCAnX19jYWxsX18nLCBOb25lKSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworCitkZWYgX2lzX2xpc3Qob2JqKToKKyAgICAjIGNoZWNrcyBmb3IgbGlzdCBvciB0dXBsZXMKKyAgICAjIFhYWFggYmFkbHkgbmFtZWQhCisgICAgcmV0dXJuIHR5cGUob2JqKSBpbiAobGlzdCwgdHVwbGUpCisKKworZGVmIF9pbnN0YW5jZV9jYWxsYWJsZShvYmopOgorICAgICIiIkdpdmVuIGFuIG9iamVjdCwgcmV0dXJuIFRydWUgaWYgdGhlIG9iamVjdCBpcyBjYWxsYWJsZS4KKyAgICBGb3IgY2xhc3NlcywgcmV0dXJuIFRydWUgaWYgaW5zdGFuY2VzIHdvdWxkIGJlIGNhbGxhYmxlLiIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CisgICAgICAgICMgYWxyZWFkeSBhbiBpbnN0YW5jZQorICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosICdfX2NhbGxfXycsIE5vbmUpIGlzIG5vdCBOb25lCisKKyAgICAjICpjb3VsZCogYmUgYnJva2VuIGJ5IGEgY2xhc3Mgb3ZlcnJpZGluZyBfX21yb19fIG9yIF9fZGljdF9fIHZpYQorICAgICMgYSBtZXRhY2xhc3MKKyAgICBmb3IgYmFzZSBpbiAob2JqLCkgKyBvYmouX19tcm9fXzoKKyAgICAgICAgaWYgYmFzZS5fX2RpY3RfXy5nZXQoJ19fY2FsbF9fJykgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfc2V0X3NpZ25hdHVyZShtb2NrLCBvcmlnaW5hbCwgaW5zdGFuY2U9RmFsc2UpOgorICAgICMgY3JlYXRlcyBhIGZ1bmN0aW9uIHdpdGggc2lnbmF0dXJlICgqYXJncywgKiprd2FyZ3MpIHRoYXQgZGVsZWdhdGVzIHRvIGEKKyAgICAjIG1vY2suIEl0IHN0aWxsIGRvZXMgc2lnbmF0dXJlIGNoZWNraW5nIGJ5IGNhbGxpbmcgYSBsYW1iZGEgd2l0aCB0aGUgc2FtZQorICAgICMgc2lnbmF0dXJlIGFzIHRoZSBvcmlnaW5hbC4KKyAgICBpZiBub3QgX2NhbGxhYmxlKG9yaWdpbmFsKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBza2lwZmlyc3QgPSBpc2luc3RhbmNlKG9yaWdpbmFsLCB0eXBlKQorICAgIHJlc3VsdCA9IF9nZXRzaWduYXR1cmUob3JpZ2luYWwsIHNraXBmaXJzdCwgaW5zdGFuY2UpCisgICAgaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICMgd2FzIGEgQyBmdW5jdGlvbiAoZS5nLiBvYmplY3QoKS5fX2luaXRfXyApIHRoYXQgY2FuJ3QgYmUgbW9ja2VkCisgICAgICAgIHJldHVybgorCisgICAgc2lnbmF0dXJlLCBmdW5jID0gcmVzdWx0CisKKyAgICBzcmMgPSAibGFtYmRhICVzOiBOb25lIiAlIHNpZ25hdHVyZQorICAgIGNoZWNrc2lnID0gZXZhbChzcmMsIHt9KQorICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKKworICAgIG5hbWUgPSBvcmlnaW5hbC5fX25hbWVfXworICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICBuYW1lID0gJ2Z1bmNvcHknCisgICAgY29udGV4dCA9IHsnX2NoZWNrc2lnXyc6IGNoZWNrc2lnLCAnbW9jayc6IG1vY2t9CisgICAgc3JjID0gIiIiZGVmICVzKCphcmdzLCAqKmt3YXJncyk6CisgICAgX2NoZWNrc2lnXygqYXJncywgKiprd2FyZ3MpCisgICAgcmV0dXJuIG1vY2soKmFyZ3MsICoqa3dhcmdzKSIiIiAlIG5hbWUKKyAgICBleGVjIChzcmMsIGNvbnRleHQpCisgICAgZnVuY29weSA9IGNvbnRleHRbbmFtZV0KKyAgICBfc2V0dXBfZnVuYyhmdW5jb3B5LCBtb2NrKQorICAgIHJldHVybiBmdW5jb3B5CisKKworZGVmIF9zZXR1cF9mdW5jKGZ1bmNvcHksIG1vY2spOgorICAgIGZ1bmNvcHkubW9jayA9IG1vY2sKKworICAgICMgY2FuJ3QgdXNlIGlzaW5zdGFuY2Ugd2l0aCBtb2NrcworICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayhtb2NrKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2hhc19jYWxscygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2FueV9jYWxsKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9hbnlfY2FsbCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIHJlc2V0X21vY2soKToKKyAgICAgICAgZnVuY29weS5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQorICAgICAgICBmdW5jb3B5Lm1vY2tfY2FsbHMgPSBfQ2FsbExpc3QoKQorICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICByZXQgPSBmdW5jb3B5LnJldHVybl92YWx1ZQorICAgICAgICBpZiBfaXNfaW5zdGFuY2VfbW9jayhyZXQpIGFuZCBub3QgcmV0IGlzIG1vY2s6CisgICAgICAgICAgICByZXQucmVzZXRfbW9jaygpCisKKyAgICBmdW5jb3B5LmNhbGxlZCA9IEZhbHNlCisgICAgZnVuY29weS5jYWxsX2NvdW50ID0gMAorICAgIGZ1bmNvcHkuY2FsbF9hcmdzID0gTm9uZQorICAgIGZ1bmNvcHkuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQorICAgIGZ1bmNvcHkubWV0aG9kX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICBmdW5jb3B5Lm1vY2tfY2FsbHMgPSBfQ2FsbExpc3QoKQorCisgICAgZnVuY29weS5yZXR1cm5fdmFsdWUgPSBtb2NrLnJldHVybl92YWx1ZQorICAgIGZ1bmNvcHkuc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CisgICAgZnVuY29weS5fbW9ja19jaGlsZHJlbiA9IG1vY2suX21vY2tfY2hpbGRyZW4KKworICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZF93aXRoID0gYXNzZXJ0X2NhbGxlZF93aXRoCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCA9IGFzc2VydF9jYWxsZWRfb25jZV93aXRoCisgICAgZnVuY29weS5hc3NlcnRfaGFzX2NhbGxzID0gYXNzZXJ0X2hhc19jYWxscworICAgIGZ1bmNvcHkuYXNzZXJ0X2FueV9jYWxsID0gYXNzZXJ0X2FueV9jYWxsCisgICAgZnVuY29weS5yZXNldF9tb2NrID0gcmVzZXRfbW9jaworCisgICAgbW9jay5fbW9ja19kZWxlZ2F0ZSA9IGZ1bmNvcHkKKworCitkZWYgX2lzX21hZ2ljKG5hbWUpOgorICAgIHJldHVybiAnX18lc19fJyAlIG5hbWVbMjotMl0gPT0gbmFtZQorCisKK2NsYXNzIF9TZW50aW5lbE9iamVjdChvYmplY3QpOgorICAgICJBIHVuaXF1ZSwgbmFtZWQsIHNlbnRpbmVsIG9iamVjdC4iCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnc2VudGluZWwuJXMnICUgc2VsZi5uYW1lCisKKworY2xhc3MgX1NlbnRpbmVsKG9iamVjdCk6CisgICAgIiIiQWNjZXNzIGF0dHJpYnV0ZXMgdG8gcmV0dXJuIGEgbmFtZWQgb2JqZWN0LCB1c2FibGUgYXMgYSBzZW50aW5lbC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3NlbnRpbmVscyA9IHt9CisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgPT0gJ19fYmFzZXNfXyc6CisgICAgICAgICAgICAjIFdpdGhvdXQgdGhpcyBoZWxwKHVuaXR0ZXN0Lm1vY2spIHJhaXNlcyBhbiBleGNlcHRpb24KKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yCisgICAgICAgIHJldHVybiBzZWxmLl9zZW50aW5lbHMuc2V0ZGVmYXVsdChuYW1lLCBfU2VudGluZWxPYmplY3QobmFtZSkpCisKKworc2VudGluZWwgPSBfU2VudGluZWwoKQorCitERUZBVUxUID0gc2VudGluZWwuREVGQVVMVAorX21pc3NpbmcgPSBzZW50aW5lbC5NSVNTSU5HCitfZGVsZXRlZCA9IHNlbnRpbmVsLkRFTEVURUQKKworCitkZWYgX2NvcHkodmFsdWUpOgorICAgIGlmIHR5cGUodmFsdWUpIGluIChkaWN0LCBsaXN0LCB0dXBsZSwgc2V0KToKKyAgICAgICAgcmV0dXJuIHR5cGUodmFsdWUpKHZhbHVlKQorICAgIHJldHVybiB2YWx1ZQorCisKK19hbGxvd2VkX25hbWVzID0gc2V0KAorICAgIFsKKyAgICAgICAgJ3JldHVybl92YWx1ZScsICdfbW9ja19yZXR1cm5fdmFsdWUnLCAnc2lkZV9lZmZlY3QnLAorICAgICAgICAnX21vY2tfc2lkZV9lZmZlY3QnLCAnX21vY2tfcGFyZW50JywgJ19tb2NrX25ld19wYXJlbnQnLAorICAgICAgICAnX21vY2tfbmFtZScsICdfbW9ja19uZXdfbmFtZScKKyAgICBdCispCisKKworZGVmIF9kZWxlZ2F0aW5nX3Byb3BlcnR5KG5hbWUpOgorICAgIF9hbGxvd2VkX25hbWVzLmFkZChuYW1lKQorICAgIF90aGVfbmFtZSA9ICdfbW9ja18nICsgbmFtZQorICAgIGRlZiBfZ2V0KHNlbGYsIG5hbWU9bmFtZSwgX3RoZV9uYW1lPV90aGVfbmFtZSk6CisgICAgICAgIHNpZyA9IHNlbGYuX21vY2tfZGVsZWdhdGUKKyAgICAgICAgaWYgc2lnIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBfdGhlX25hbWUpCisgICAgICAgIHJldHVybiBnZXRhdHRyKHNpZywgbmFtZSkKKyAgICBkZWYgX3NldChzZWxmLCB2YWx1ZSwgbmFtZT1uYW1lLCBfdGhlX25hbWU9X3RoZV9uYW1lKToKKyAgICAgICAgc2lnID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBzaWcgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX19kaWN0X19bX3RoZV9uYW1lXSA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZXRhdHRyKHNpZywgbmFtZSwgdmFsdWUpCisKKyAgICByZXR1cm4gcHJvcGVydHkoX2dldCwgX3NldCkKKworCisKK2NsYXNzIF9DYWxsTGlzdChsaXN0KToKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICAgICAgICByZXR1cm4gbGlzdC5fX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpCisgICAgICAgIGxlbl92YWx1ZSA9IGxlbih2YWx1ZSkKKyAgICAgICAgbGVuX3NlbGYgPSBsZW4oc2VsZikKKyAgICAgICAgaWYgbGVuX3ZhbHVlID4gbGVuX3NlbGY6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW5fc2VsZiAtIGxlbl92YWx1ZSArIDEpOgorICAgICAgICAgICAgc3ViX2xpc3QgPSBzZWxmW2k6aStsZW5fdmFsdWVdCisgICAgICAgICAgICBpZiBzdWJfbGlzdCA9PSB2YWx1ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHBwcmludC5wZm9ybWF0KGxpc3Qoc2VsZikpCisKKworZGVmIF9jaGVja19hbmRfc2V0X3BhcmVudChwYXJlbnQsIHZhbHVlLCBuYW1lLCBuZXdfbmFtZSk6CisgICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKHZhbHVlKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgKCh2YWx1ZS5fbW9ja19uYW1lIG9yIHZhbHVlLl9tb2NrX25ld19uYW1lKSBvcgorICAgICAgICAodmFsdWUuX21vY2tfcGFyZW50IGlzIG5vdCBOb25lKSBvcgorICAgICAgICAodmFsdWUuX21vY2tfbmV3X3BhcmVudCBpcyBub3QgTm9uZSkpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIF9wYXJlbnQgPSBwYXJlbnQKKyAgICB3aGlsZSBfcGFyZW50IGlzIG5vdCBOb25lOgorICAgICAgICAjIHNldHRpbmcgYSBtb2NrICh2YWx1ZSkgYXMgYSBjaGlsZCBvciByZXR1cm4gdmFsdWUgb2YgaXRzZWxmCisgICAgICAgICMgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIG1vY2sKKyAgICAgICAgaWYgX3BhcmVudCBpcyB2YWx1ZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBfcGFyZW50ID0gX3BhcmVudC5fbW9ja19uZXdfcGFyZW50CisKKyAgICBpZiBuZXdfbmFtZToKKyAgICAgICAgdmFsdWUuX21vY2tfbmV3X3BhcmVudCA9IHBhcmVudAorICAgICAgICB2YWx1ZS5fbW9ja19uZXdfbmFtZSA9IG5ld19uYW1lCisgICAgaWYgbmFtZToKKyAgICAgICAgdmFsdWUuX21vY2tfcGFyZW50ID0gcGFyZW50CisgICAgICAgIHZhbHVlLl9tb2NrX25hbWUgPSBuYW1lCisgICAgcmV0dXJuIFRydWUKKworCisKK2NsYXNzIEJhc2Uob2JqZWN0KToKKyAgICBfbW9ja19yZXR1cm5fdmFsdWUgPSBERUZBVUxUCisgICAgX21vY2tfc2lkZV9lZmZlY3QgPSBOb25lCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKworCisKK2NsYXNzIE5vbkNhbGxhYmxlTW9jayhCYXNlKToKKyAgICAiIiJBIG5vbi1jYWxsYWJsZSB2ZXJzaW9uIG9mIGBNb2NrYCIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprdyk6CisgICAgICAgICMgZXZlcnkgaW5zdGFuY2UgaGFzIGl0cyBvd24gY2xhc3MKKyAgICAgICAgIyBzbyB3ZSBjYW4gY3JlYXRlIG1hZ2ljIG1ldGhvZHMgb24gdGhlCisgICAgICAgICMgY2xhc3Mgd2l0aG91dCBzdG9tcGluZyBvbiBvdGhlciBtb2NrcworICAgICAgICBuZXcgPSB0eXBlKGNscy5fX25hbWVfXywgKGNscywpLCB7J19fZG9jX18nOiBjbHMuX19kb2NfX30pCisgICAgICAgIGluc3RhbmNlID0gb2JqZWN0Ll9fbmV3X18obmV3KQorICAgICAgICByZXR1cm4gaW5zdGFuY2UKKworCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICAgICAgc2VsZiwgc3BlYz1Ob25lLCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsCisgICAgICAgICAgICBwYXJlbnQ9Tm9uZSwgX3NwZWNfc3RhdGU9Tm9uZSwgX25ld19uYW1lPScnLCBfbmV3X3BhcmVudD1Ob25lLAorICAgICAgICAgICAgKiprd2FyZ3MKKyAgICAgICAgKToKKyAgICAgICAgaWYgX25ld19wYXJlbnQgaXMgTm9uZToKKyAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gcGFyZW50CisKKyAgICAgICAgX19kaWN0X18gPSBzZWxmLl9fZGljdF9fCisgICAgICAgIF9fZGljdF9fWydfbW9ja19wYXJlbnQnXSA9IHBhcmVudAorICAgICAgICBfX2RpY3RfX1snX21vY2tfbmFtZSddID0gbmFtZQorICAgICAgICBfX2RpY3RfX1snX21vY2tfbmV3X25hbWUnXSA9IF9uZXdfbmFtZQorICAgICAgICBfX2RpY3RfX1snX21vY2tfbmV3X3BhcmVudCddID0gX25ld19wYXJlbnQKKworICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNwZWMgPSBzcGVjX3NldAorICAgICAgICAgICAgc3BlY19zZXQgPSBUcnVlCisKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKworICAgICAgICBfX2RpY3RfX1snX21vY2tfY2hpbGRyZW4nXSA9IHt9CisgICAgICAgIF9fZGljdF9fWydfbW9ja193cmFwcyddID0gd3JhcHMKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2RlbGVnYXRlJ10gPSBOb25lCisKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxlZCddID0gRmFsc2UKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxfYXJncyddID0gTm9uZQorICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9jb3VudCddID0gMAorICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9hcmdzX2xpc3QnXSA9IF9DYWxsTGlzdCgpCisgICAgICAgIF9fZGljdF9fWydfbW9ja19tb2NrX2NhbGxzJ10gPSBfQ2FsbExpc3QoKQorCisgICAgICAgIF9fZGljdF9fWydtZXRob2RfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgaWYga3dhcmdzOgorICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfbW9jaygqKmt3YXJncykKKworICAgICAgICBfc2FmZV9zdXBlcihOb25DYWxsYWJsZU1vY2ssIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgc3BlYywgd3JhcHMsIG5hbWUsIHNwZWNfc2V0LCBwYXJlbnQsCisgICAgICAgICAgICBfc3BlY19zdGF0ZQorICAgICAgICApCisKKworICAgIGRlZiBhdHRhY2hfbW9jayhzZWxmLCBtb2NrLCBhdHRyaWJ1dGUpOgorICAgICAgICAiIiIKKyAgICAgICAgQXR0YWNoIGEgbW9jayBhcyBhbiBhdHRyaWJ1dGUgb2YgdGhpcyBvbmUsIHJlcGxhY2luZyBpdHMgbmFtZSBhbmQKKyAgICAgICAgcGFyZW50LiBDYWxscyB0byB0aGUgYXR0YWNoZWQgbW9jayB3aWxsIGJlIHJlY29yZGVkIGluIHRoZQorICAgICAgICBgbWV0aG9kX2NhbGxzYCBhbmQgYG1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgb2YgdGhpcyBvbmUuIiIiCisgICAgICAgIG1vY2suX21vY2tfcGFyZW50ID0gTm9uZQorICAgICAgICBtb2NrLl9tb2NrX25ld19wYXJlbnQgPSBOb25lCisgICAgICAgIG1vY2suX21vY2tfbmFtZSA9ICcnCisgICAgICAgIG1vY2suX21vY2tfbmV3X25hbWUgPSBOb25lCisKKyAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyaWJ1dGUsIG1vY2spCisKKworICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKKyAgICAgICAgIiIiQWRkIGEgc3BlYyB0byBhIG1vY2suIGBzcGVjYCBjYW4gZWl0aGVyIGJlIGFuIG9iamVjdCBvciBhCisgICAgICAgIGxpc3Qgb2Ygc3RyaW5ncy4gT25seSBhdHRyaWJ1dGVzIG9uIHRoZSBgc3BlY2AgY2FuIGJlIGZldGNoZWQgYXMKKyAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgorCisgICAgICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LiIiIgorICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorCisKKyAgICBkZWYgX21vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQpOgorICAgICAgICBfc3BlY19jbGFzcyA9IE5vbmUKKworICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBub3QgX2lzX2xpc3Qoc3BlYyk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNwZWMsIHR5cGUpOgorICAgICAgICAgICAgICAgIF9zcGVjX2NsYXNzID0gc3BlYworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBfc3BlY19jbGFzcyA9IF9nZXRfY2xhc3Moc3BlYykKKworICAgICAgICAgICAgc3BlYyA9IGRpcihzcGVjKQorCisgICAgICAgIF9fZGljdF9fID0gc2VsZi5fX2RpY3RfXworICAgICAgICBfX2RpY3RfX1snX3NwZWNfY2xhc3MnXSA9IF9zcGVjX2NsYXNzCisgICAgICAgIF9fZGljdF9fWydfc3BlY19zZXQnXSA9IHNwZWNfc2V0CisgICAgICAgIF9fZGljdF9fWydfbW9ja19tZXRob2RzJ10gPSBzcGVjCisKKworICAgIGRlZiBfX2dldF9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIHJldCA9IHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHNlbGYuX21vY2tfZGVsZWdhdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlLnJldHVybl92YWx1ZQorCisgICAgICAgIGlmIHJldCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmV0ID0gc2VsZi5fZ2V0X2NoaWxkX21vY2soCisgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9c2VsZiwgX25ld19uYW1lPScoKScKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlID0gcmV0CisgICAgICAgIHJldHVybiByZXQKKworCisgICAgZGVmIF9fc2V0X3JldHVybl92YWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIHNlbGYuX21vY2tfZGVsZWdhdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9tb2NrX2RlbGVnYXRlLnJldHVybl92YWx1ZSA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9tb2NrX3JldHVybl92YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICBfY2hlY2tfYW5kX3NldF9wYXJlbnQoc2VsZiwgdmFsdWUsIE5vbmUsICcoKScpCisKKyAgICBfX3JldHVybl92YWx1ZV9kb2MgPSAiVGhlIHZhbHVlIHRvIGJlIHJldHVybmVkIHdoZW4gdGhlIG1vY2sgaXMgY2FsbGVkLiIKKyAgICByZXR1cm5fdmFsdWUgPSBwcm9wZXJ0eShfX2dldF9yZXR1cm5fdmFsdWUsIF9fc2V0X3JldHVybl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JldHVybl92YWx1ZV9kb2MpCisKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfX2NsYXNzX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3NwZWNfY2xhc3MgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl9zcGVjX2NsYXNzCisKKyAgICBjYWxsZWQgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbGVkJykKKyAgICBjYWxsX2NvdW50ID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxfY291bnQnKQorICAgIGNhbGxfYXJncyA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsX2FyZ3MnKQorICAgIGNhbGxfYXJnc19saXN0ID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxfYXJnc19saXN0JykKKyAgICBtb2NrX2NhbGxzID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ21vY2tfY2FsbHMnKQorCisKKyAgICBkZWYgX19nZXRfc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIGRlbGVnYXRlZCA9IHNlbGYuX21vY2tfZGVsZWdhdGUKKyAgICAgICAgaWYgZGVsZWdhdGVkIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbW9ja19zaWRlX2VmZmVjdAorICAgICAgICByZXR1cm4gZGVsZWdhdGVkLnNpZGVfZWZmZWN0CisKKyAgICBkZWYgX19zZXRfc2lkZV9lZmZlY3Qoc2VsZiwgdmFsdWUpOgorICAgICAgICB2YWx1ZSA9IF90cnlfaXRlcih2YWx1ZSkKKyAgICAgICAgZGVsZWdhdGVkID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBkZWxlZ2F0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVsZWdhdGVkLnNpZGVfZWZmZWN0ID0gdmFsdWUKKworICAgIHNpZGVfZWZmZWN0ID0gcHJvcGVydHkoX19nZXRfc2lkZV9lZmZlY3QsIF9fc2V0X3NpZGVfZWZmZWN0KQorCisKKyAgICBkZWYgcmVzZXRfbW9jayhzZWxmKToKKyAgICAgICAgIlJlc3RvcmUgdGhlIG1vY2sgb2JqZWN0IHRvIGl0cyBpbml0aWFsIHN0YXRlLiIKKyAgICAgICAgc2VsZi5jYWxsZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmNhbGxfYXJncyA9IE5vbmUKKyAgICAgICAgc2VsZi5jYWxsX2NvdW50ID0gMAorICAgICAgICBzZWxmLm1vY2tfY2FsbHMgPSBfQ2FsbExpc3QoKQorICAgICAgICBzZWxmLmNhbGxfYXJnc19saXN0ID0gX0NhbGxMaXN0KCkKKyAgICAgICAgc2VsZi5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQorCisgICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLl9tb2NrX2NoaWxkcmVuLnZhbHVlcygpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjaGlsZCwgX1NwZWNTdGF0ZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNoaWxkLnJlc2V0X21vY2soKQorCisgICAgICAgIHJldCA9IHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHJldCkgYW5kIHJldCBpcyBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldC5yZXNldF9tb2NrKCkKKworCisgICAgZGVmIGNvbmZpZ3VyZV9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgIiIiU2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgdGhyb3VnaCBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgICAgICBBdHRyaWJ1dGVzIHBsdXMgcmV0dXJuIHZhbHVlcyBhbmQgc2lkZSBlZmZlY3RzIGNhbiBiZSBzZXQgb24gY2hpbGQKKyAgICAgICAgbW9ja3MgdXNpbmcgc3RhbmRhcmQgZG90IG5vdGF0aW9uIGFuZCB1bnBhY2tpbmcgYSBkaWN0aW9uYXJ5IGluIHRoZQorICAgICAgICBtZXRob2QgY2FsbDoKKworICAgICAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICAgICAgPj4+IG1vY2suY29uZmlndXJlX21vY2soKiphdHRycykiIiIKKyAgICAgICAgZm9yIGFyZywgdmFsIGluIHNvcnRlZChrd2FyZ3MuaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHNvcnQgb24gdGhlIG51bWJlciBvZiBkb3RzIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZXMgYXJlIHNldCBiZWZvcmUgd2Ugc2V0IGF0dHJpYnV0ZXMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9bGFtYmRhIGVudHJ5OiBlbnRyeVswXS5jb3VudCgnLicpKToKKyAgICAgICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoJy4nKQorICAgICAgICAgICAgZmluYWwgPSBhcmdzLnBvcCgpCisgICAgICAgICAgICBvYmogPSBzZWxmCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gYXJnczoKKyAgICAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgZW50cnkpCisgICAgICAgICAgICBzZXRhdHRyKG9iaiwgZmluYWwsIHZhbCkKKworCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lID09ICdfbW9ja19tZXRob2RzJzoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGVsaWYgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzIG9yIG5hbWUgaW4gX2FsbF9tYWdpY3M6CisgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgbmFtZSkKKyAgICAgICAgZWxpZiBfaXNfbWFnaWMobmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX21vY2tfY2hpbGRyZW4uZ2V0KG5hbWUpCisgICAgICAgIGlmIHJlc3VsdCBpcyBfZGVsZXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGVsaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICAgICB3cmFwcyA9IE5vbmUKKyAgICAgICAgICAgIGlmIHNlbGYuX21vY2tfd3JhcHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBYWFhYIHNob3VsZCB3ZSBnZXQgdGhlIGF0dHJpYnV0ZSB3aXRob3V0IHRyaWdnZXJpbmcgY29kZQorICAgICAgICAgICAgICAgICMgZXhlY3V0aW9uPworICAgICAgICAgICAgICAgIHdyYXBzID0gZ2V0YXR0cihzZWxmLl9tb2NrX3dyYXBzLCBuYW1lKQorCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRfY2hpbGRfbW9jaygKKyAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZiwgbmFtZT1uYW1lLCB3cmFwcz13cmFwcywgX25ld19uYW1lPW5hbWUsCisgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9c2VsZgorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSAgPSByZXN1bHQKKworICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVzdWx0LCBfU3BlY1N0YXRlKToKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZV9hdXRvc3BlYygKKyAgICAgICAgICAgICAgICByZXN1bHQuc3BlYywgcmVzdWx0LnNwZWNfc2V0LCByZXN1bHQuaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgcmVzdWx0LnBhcmVudCwgcmVzdWx0Lm5hbWUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gID0gcmVzdWx0CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIF9uYW1lX2xpc3QgPSBbc2VsZi5fbW9ja19uZXdfbmFtZV0KKyAgICAgICAgX3BhcmVudCA9IHNlbGYuX21vY2tfbmV3X3BhcmVudAorICAgICAgICBsYXN0ID0gc2VsZgorCisgICAgICAgIGRvdCA9ICcuJworICAgICAgICBpZiBfbmFtZV9saXN0ID09IFsnKCknXToKKyAgICAgICAgICAgIGRvdCA9ICcnCisgICAgICAgIHNlZW4gPSBzZXQoKQorICAgICAgICB3aGlsZSBfcGFyZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbGFzdCA9IF9wYXJlbnQKKworICAgICAgICAgICAgX25hbWVfbGlzdC5hcHBlbmQoX3BhcmVudC5fbW9ja19uZXdfbmFtZSArIGRvdCkKKyAgICAgICAgICAgIGRvdCA9ICcuJworICAgICAgICAgICAgaWYgX3BhcmVudC5fbW9ja19uZXdfbmFtZSA9PSAnKCknOgorICAgICAgICAgICAgICAgIGRvdCA9ICcnCisKKyAgICAgICAgICAgIF9wYXJlbnQgPSBfcGFyZW50Ll9tb2NrX25ld19wYXJlbnQKKworICAgICAgICAgICAgIyB1c2UgaWRzIGhlcmUgc28gYXMgbm90IHRvIGNhbGwgX19oYXNoX18gb24gdGhlIG1vY2tzCisgICAgICAgICAgICBpZiBpZChfcGFyZW50KSBpbiBzZWVuOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWVuLmFkZChpZChfcGFyZW50KSkKKworICAgICAgICBfbmFtZV9saXN0ID0gbGlzdChyZXZlcnNlZChfbmFtZV9saXN0KSkKKyAgICAgICAgX2ZpcnN0ID0gbGFzdC5fbW9ja19uYW1lIG9yICdtb2NrJworICAgICAgICBpZiBsZW4oX25hbWVfbGlzdCkgPiAxOgorICAgICAgICAgICAgaWYgX25hbWVfbGlzdFsxXSBub3QgaW4gKCcoKScsICcoKS4nKToKKyAgICAgICAgICAgICAgICBfZmlyc3QgKz0gJy4nCisgICAgICAgIF9uYW1lX2xpc3RbMF0gPSBfZmlyc3QKKyAgICAgICAgbmFtZSA9ICcnLmpvaW4oX25hbWVfbGlzdCkKKworICAgICAgICBuYW1lX3N0cmluZyA9ICcnCisgICAgICAgIGlmIG5hbWUgbm90IGluICgnbW9jaycsICdtb2NrLicpOgorICAgICAgICAgICAgbmFtZV9zdHJpbmcgPSAnIG5hbWU9JXInICUgbmFtZQorCisgICAgICAgIHNwZWNfc3RyaW5nID0gJycKKyAgICAgICAgaWYgc2VsZi5fc3BlY19jbGFzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNwZWNfc3RyaW5nID0gJyBzcGVjPSVyJworICAgICAgICAgICAgaWYgc2VsZi5fc3BlY19zZXQ6CisgICAgICAgICAgICAgICAgc3BlY19zdHJpbmcgPSAnIHNwZWNfc2V0PSVyJworICAgICAgICAgICAgc3BlY19zdHJpbmcgPSBzcGVjX3N0cmluZyAlIHNlbGYuX3NwZWNfY2xhc3MuX19uYW1lX18KKyAgICAgICAgcmV0dXJuICI8JXMlcyVzIGlkPSclcyc+IiAlICgKKyAgICAgICAgICAgIHR5cGUoc2VsZikuX19uYW1lX18sCisgICAgICAgICAgICBuYW1lX3N0cmluZywKKyAgICAgICAgICAgIHNwZWNfc3RyaW5nLAorICAgICAgICAgICAgaWQoc2VsZikKKyAgICAgICAgKQorCisKKyAgICBkZWYgX19kaXJfXyhzZWxmKToKKyAgICAgICAgIiIiRmlsdGVyIHRoZSBvdXRwdXQgb2YgYGRpcihtb2NrKWAgdG8gb25seSB1c2VmdWwgbWVtYmVycy4iIiIKKyAgICAgICAgaWYgbm90IEZJTFRFUl9ESVI6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZGlyX18oc2VsZikKKworICAgICAgICBleHRyYXMgPSBzZWxmLl9tb2NrX21ldGhvZHMgb3IgW10KKyAgICAgICAgZnJvbV90eXBlID0gZGlyKHR5cGUoc2VsZikpCisgICAgICAgIGZyb21fZGljdCA9IGxpc3Qoc2VsZi5fX2RpY3RfXykKKworICAgICAgICBmcm9tX3R5cGUgPSBbZSBmb3IgZSBpbiBmcm9tX3R5cGUgaWYgbm90IGUuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBmcm9tX2RpY3QgPSBbZSBmb3IgZSBpbiBmcm9tX2RpY3QgaWYgbm90IGUuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICBfaXNfbWFnaWMoZSldCisgICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KGV4dHJhcyArIGZyb21fdHlwZSArIGZyb21fZGljdCArCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qoc2VsZi5fbW9ja19jaGlsZHJlbikpKQorCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lIGluIF9hbGxvd2VkX25hbWVzOgorICAgICAgICAgICAgIyBwcm9wZXJ0eSBzZXR0ZXJzIGdvIHRocm91Z2ggaGVyZQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiAoc2VsZi5fc3BlY19zZXQgYW5kIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyBhbmQKKyAgICAgICAgICAgIG5hbWUgbm90IGluIHNlbGYuX19kaWN0X18pOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSBuYW1lKQorICAgICAgICBlbGlmIG5hbWUgaW4gX3Vuc3VwcG9ydGVkX21hZ2ljczoKKyAgICAgICAgICAgIG1zZyA9ICdBdHRlbXB0aW5nIHRvIHNldCB1bnN1cHBvcnRlZCBtYWdpYyBtZXRob2QgJXIuJyAlIG5hbWUKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG1zZykKKyAgICAgICAgZWxpZiBuYW1lIGluIF9hbGxfbWFnaWNzOgorICAgICAgICAgICAgaWYgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lIGFuZCBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHM6CisgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSBuYW1lKQorCisgICAgICAgICAgICBpZiBub3QgX2lzX2luc3RhbmNlX21vY2sodmFsdWUpOgorICAgICAgICAgICAgICAgIHNldGF0dHIodHlwZShzZWxmKSwgbmFtZSwgX2dldF9tZXRob2QobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgICAgIG9yaWdpbmFsID0gdmFsdWUKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGxhbWJkYSAqYXJncywgKiprdzogb3JpZ2luYWwoc2VsZiwgKmFyZ3MsICoqa3cpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgb25seSBzZXQgX25ld19uYW1lIGFuZCBub3QgbmFtZSBzbyB0aGF0IG1vY2tfY2FsbHMgaXMgdHJhY2tlZAorICAgICAgICAgICAgICAgICMgYnV0IG5vdCBtZXRob2QgY2FsbHMKKyAgICAgICAgICAgICAgICBfY2hlY2tfYW5kX3NldF9wYXJlbnQoc2VsZiwgdmFsdWUsIE5vbmUsIG5hbWUpCisgICAgICAgICAgICAgICAgc2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gdmFsdWUKKyAgICAgICAgZWxpZiBuYW1lID09ICdfX2NsYXNzX18nOgorICAgICAgICAgICAgc2VsZi5fc3BlY19jbGFzcyA9IHZhbHVlCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgbmFtZSwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSA9IHZhbHVlCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSBpbiBfYWxsX21hZ2ljcyBhbmQgbmFtZSBpbiB0eXBlKHNlbGYpLl9fZGljdF9fOgorICAgICAgICAgICAgZGVsYXR0cih0eXBlKHNlbGYpLCBuYW1lKQorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAjIGZvciBtYWdpYyBtZXRob2RzIHRoYXQgYXJlIHN0aWxsIE1hZ2ljUHJveHkgb2JqZWN0cyBhbmQKKyAgICAgICAgICAgICAgICAjIG5vdCBzZXQgb24gdGhlIGluc3RhbmNlIGl0c2VsZgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5fX2RpY3RfXzoKKyAgICAgICAgICAgIG9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKQorCisgICAgICAgIG9iaiA9IHNlbGYuX21vY2tfY2hpbGRyZW4uZ2V0KG5hbWUsIF9taXNzaW5nKQorICAgICAgICBpZiBvYmogaXMgX2RlbGV0ZWQ6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBpZiBvYmogaXMgbm90IF9taXNzaW5nOgorICAgICAgICAgICAgZGVsIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0KKyAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSA9IF9kZWxldGVkCisKKworCisgICAgZGVmIF9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShzZWxmLCBhcmdzLCBrd2FyZ3MpOgorICAgICAgICBuYW1lID0gc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJworICAgICAgICByZXR1cm4gX2Zvcm1hdF9jYWxsX3NpZ25hdHVyZShuYW1lLCBhcmdzLCBrd2FyZ3MpCisKKworICAgIGRlZiBfZm9ybWF0X21vY2tfZmFpbHVyZV9tZXNzYWdlKHNlbGYsIGFyZ3MsIGt3YXJncyk6CisgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgZXhwZWN0ZWRfc3RyaW5nID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQorICAgICAgICBjYWxsX2FyZ3MgPSBzZWxmLmNhbGxfYXJncworICAgICAgICBpZiBsZW4oY2FsbF9hcmdzKSA9PSAzOgorICAgICAgICAgICAgY2FsbF9hcmdzID0gY2FsbF9hcmdzWzE6XQorICAgICAgICBhY3R1YWxfc3RyaW5nID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoKmNhbGxfYXJncykKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UgJSAoZXhwZWN0ZWRfc3RyaW5nLCBhY3R1YWxfc3RyaW5nKQorCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBSYWlzZXMgYW4gQXNzZXJ0aW9uRXJyb3IgaWYgdGhlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBwYXNzZWQgaW4gYXJlCisgICAgICAgIGRpZmZlcmVudCB0byB0aGUgbGFzdCBjYWxsIHRvIHRoZSBtb2NrLiIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBzZWxmLmNhbGxfYXJncyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRXhwZWN0ZWQgY2FsbDogJXNcbk5vdCBjYWxsZWQnICUgKGV4cGVjdGVkLCkpCisKKyAgICAgICAgaWYgc2VsZi5jYWxsX2FyZ3MgIT0gKGFyZ3MsIGt3YXJncyk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRfbW9ja19mYWlsdXJlX21lc3NhZ2UoYXJncywga3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQorCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBleGFjdGx5IG9uY2UgYW5kIHdpdGggdGhlIHNwZWNpZmllZAorICAgICAgICBhcmd1bWVudHMuIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIG5vdCBzZWxmLmNhbGxfY291bnQgPT0gMToKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkICVzIHRpbWVzLiIgJQorICAgICAgICAgICAgICAgICAgIChzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snLCBzZWxmLmNhbGxfY291bnQpKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQorICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorCisKKyAgICBkZWYgYXNzZXJ0X2hhc19jYWxscyhzZWxmLCBjYWxscywgYW55X29yZGVyPUZhbHNlKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY2FsbHMuCisgICAgICAgIFRoZSBgbW9ja19jYWxsc2AgbGlzdCBpcyBjaGVja2VkIGZvciB0aGUgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGVuIHRoZSBjYWxscyBtdXN0IGJlCisgICAgICAgIHNlcXVlbnRpYWwuIFRoZXJlIGNhbiBiZSBleHRyYSBjYWxscyBiZWZvcmUgb3IgYWZ0ZXIgdGhlCisgICAgICAgIHNwZWNpZmllZCBjYWxscy4KKworICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBUcnVlIHRoZW4gdGhlIGNhbGxzIGNhbiBiZSBpbiBhbnkgb3JkZXIsIGJ1dAorICAgICAgICB0aGV5IG11c3QgYWxsIGFwcGVhciBpbiBgbW9ja19jYWxsc2AuIiIiCisgICAgICAgIGlmIG5vdCBhbnlfb3JkZXI6CisgICAgICAgICAgICBpZiBjYWxscyBub3QgaW4gc2VsZi5tb2NrX2NhbGxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICAnQ2FsbHMgbm90IGZvdW5kLlxuRXhwZWN0ZWQ6ICVyXG4nCisgICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChjYWxscywgc2VsZi5tb2NrX2NhbGxzKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFsbF9jYWxscyA9IGxpc3Qoc2VsZi5tb2NrX2NhbGxzKQorCisgICAgICAgIG5vdF9mb3VuZCA9IFtdCisgICAgICAgIGZvciBrYWxsIGluIGNhbGxzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFsbF9jYWxscy5yZW1vdmUoa2FsbCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIG5vdF9mb3VuZC5hcHBlbmQoa2FsbCkKKyAgICAgICAgaWYgbm90X2ZvdW5kOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgJyVyIG5vdCBhbGwgZm91bmQgaW4gY2FsbCBsaXN0JyAlICh0dXBsZShub3RfZm91bmQpLCkKKyAgICAgICAgICAgICkKKworCisgICAgZGVmIGFzc2VydF9hbnlfY2FsbChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJhc3NlcnQgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCisKKyAgICAgICAgVGhlIGFzc2VydCBwYXNzZXMgaWYgdGhlIG1vY2sgaGFzICpldmVyKiBiZWVuIGNhbGxlZCwgdW5saWtlCisgICAgICAgIGBhc3NlcnRfY2FsbGVkX3dpdGhgIGFuZCBgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIHRoYXQgb25seSBwYXNzIGlmCisgICAgICAgIHRoZSBjYWxsIGlzIHRoZSBtb3N0IHJlY2VudCBvbmUuIiIiCisgICAgICAgIGthbGwgPSBjYWxsKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgaWYga2FsbCBub3QgaW4gc2VsZi5jYWxsX2FyZ3NfbGlzdDoKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICclcyBjYWxsIG5vdCBmb3VuZCcgJSBleHBlY3RlZF9zdHJpbmcKKyAgICAgICAgICAgICkKKworCisgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3KToKKyAgICAgICAgIiIiQ3JlYXRlIHRoZSBjaGlsZCBtb2NrcyBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlLgorICAgICAgICBCeSBkZWZhdWx0IGNoaWxkIG1vY2tzIHdpbGwgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgcGFyZW50LgorICAgICAgICBTdWJjbGFzc2VzIG9mIE1vY2sgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcyB0byBjdXN0b21pemUgdGhlIHdheQorICAgICAgICBjaGlsZCBtb2NrcyBhcmUgbWFkZS4KKworICAgICAgICBGb3Igbm9uLWNhbGxhYmxlIG1vY2tzIHRoZSBjYWxsYWJsZSB2YXJpYW50IHdpbGwgYmUgdXNlZCAocmF0aGVyIHRoYW4KKyAgICAgICAgYW55IGN1c3RvbSBzdWJjbGFzcykuIiIiCisgICAgICAgIF90eXBlID0gdHlwZShzZWxmKQorICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhfdHlwZSwgQ2FsbGFibGVNaXhpbik6CisgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKF90eXBlLCBOb25DYWxsYWJsZU1hZ2ljTW9jayk6CisgICAgICAgICAgICAgICAga2xhc3MgPSBNYWdpY01vY2sKKyAgICAgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhfdHlwZSwgTm9uQ2FsbGFibGVNb2NrKSA6CisgICAgICAgICAgICAgICAga2xhc3MgPSBNb2NrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBrbGFzcyA9IF90eXBlLl9fbXJvX19bMV0KKyAgICAgICAgcmV0dXJuIGtsYXNzKCoqa3cpCisKKworCitkZWYgX3RyeV9pdGVyKG9iaik6CisgICAgaWYgb2JqIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBvYmoKKyAgICBpZiBfaXNfZXhjZXB0aW9uKG9iaik6CisgICAgICAgIHJldHVybiBvYmoKKyAgICBpZiBfY2FsbGFibGUob2JqKToKKyAgICAgICAgcmV0dXJuIG9iagorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGl0ZXIob2JqKQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICMgWFhYWCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorICAgICAgICAjIGJ1dCB0aGlzIHdpbGwgYmxvdyB1cCBvbiBmaXJzdCBjYWxsIC0gc28gbWF5YmUgd2Ugc2hvdWxkIGZhaWwgZWFybHk/CisgICAgICAgIHJldHVybiBvYmoKKworCisKK2NsYXNzIENhbGxhYmxlTWl4aW4oQmFzZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYz1Ob25lLCBzaWRlX2VmZmVjdD1Ob25lLCByZXR1cm5fdmFsdWU9REVGQVVMVCwKKyAgICAgICAgICAgICAgICAgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCBwYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgX3NwZWNfc3RhdGU9Tm9uZSwgX25ld19uYW1lPScnLCBfbmV3X3BhcmVudD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX19kaWN0X19bJ19tb2NrX3JldHVybl92YWx1ZSddID0gcmV0dXJuX3ZhbHVlCisKKyAgICAgICAgX3NhZmVfc3VwZXIoQ2FsbGFibGVNaXhpbiwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBzcGVjLCB3cmFwcywgbmFtZSwgc3BlY19zZXQsIHBhcmVudCwKKyAgICAgICAgICAgIF9zcGVjX3N0YXRlLCBfbmV3X25hbWUsIF9uZXdfcGFyZW50LCAqKmt3YXJncworICAgICAgICApCisKKyAgICAgICAgc2VsZi5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisKKworICAgIGRlZiBfbW9ja19jaGVja19zaWcoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBzdHViIG1ldGhvZCB0aGF0IGNhbiBiZSByZXBsYWNlZCB3aXRoIG9uZSB3aXRoIGEgc3BlY2lmaWMgc2lnbmF0dXJlCisgICAgICAgIHBhc3MKKworCisgICAgZGVmIF9fY2FsbF9fKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgY2FuJ3QgdXNlIHNlbGYgaW4tY2FzZSBhIGZ1bmN0aW9uIC8gbWV0aG9kIHdlIGFyZSBtb2NraW5nIHVzZXMgc2VsZgorICAgICAgICAjIGluIHRoZSBzaWduYXR1cmUKKyAgICAgICAgX21vY2tfc2VsZi5fbW9ja19jaGVja19zaWcoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gX21vY2tfc2VsZi5fbW9ja19jYWxsKCphcmdzLCAqKmt3YXJncykKKworCisgICAgZGVmIF9tb2NrX2NhbGwoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCisgICAgICAgIHNlbGYuY2FsbF9jb3VudCArPSAxCisgICAgICAgIHNlbGYuY2FsbF9hcmdzID0gX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKQorICAgICAgICBzZWxmLmNhbGxfYXJnc19saXN0LmFwcGVuZChfQ2FsbCgoYXJncywga3dhcmdzKSwgdHdvPVRydWUpKQorCisgICAgICAgIF9uZXdfbmFtZSA9IHNlbGYuX21vY2tfbmV3X25hbWUKKyAgICAgICAgX25ld19wYXJlbnQgPSBzZWxmLl9tb2NrX25ld19wYXJlbnQKKyAgICAgICAgc2VsZi5tb2NrX2NhbGxzLmFwcGVuZChfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncykpKQorCisgICAgICAgIHNlZW4gPSBzZXQoKQorICAgICAgICBza2lwX25leHRfZG90ID0gX25ld19uYW1lID09ICcoKScKKyAgICAgICAgZG9fbWV0aG9kX2NhbGxzID0gc2VsZi5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUKKyAgICAgICAgbmFtZSA9IHNlbGYuX21vY2tfbmFtZQorICAgICAgICB3aGlsZSBfbmV3X3BhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRoaXNfbW9ja19jYWxsID0gX0NhbGwoKF9uZXdfbmFtZSwgYXJncywga3dhcmdzKSkKKyAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lOgorICAgICAgICAgICAgICAgIGRvdCA9ICcuJworICAgICAgICAgICAgICAgIGlmIHNraXBfbmV4dF9kb3Q6CisgICAgICAgICAgICAgICAgICAgIGRvdCA9ICcnCisKKyAgICAgICAgICAgICAgICBza2lwX25leHRfZG90ID0gRmFsc2UKKyAgICAgICAgICAgICAgICBpZiBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZSA9PSAnKCknOgorICAgICAgICAgICAgICAgICAgICBza2lwX25leHRfZG90ID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgX25ld19uYW1lID0gX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWUgKyBkb3QgKyBfbmV3X25hbWUKKworICAgICAgICAgICAgaWYgZG9fbWV0aG9kX2NhbGxzOgorICAgICAgICAgICAgICAgIGlmIF9uZXdfbmFtZSA9PSBuYW1lOgorICAgICAgICAgICAgICAgICAgICB0aGlzX21ldGhvZF9jYWxsID0gdGhpc19tb2NrX2NhbGwKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0aGlzX21ldGhvZF9jYWxsID0gX0NhbGwoKG5hbWUsIGFyZ3MsIGt3YXJncykpCisgICAgICAgICAgICAgICAgX25ld19wYXJlbnQubWV0aG9kX2NhbGxzLmFwcGVuZCh0aGlzX21ldGhvZF9jYWxsKQorCisgICAgICAgICAgICAgICAgZG9fbWV0aG9kX2NhbGxzID0gX25ld19wYXJlbnQuX21vY2tfcGFyZW50IGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgaWYgZG9fbWV0aG9kX2NhbGxzOgorICAgICAgICAgICAgICAgICAgICBuYW1lID0gX25ld19wYXJlbnQuX21vY2tfbmFtZSArICcuJyArIG5hbWUKKworICAgICAgICAgICAgX25ld19wYXJlbnQubW9ja19jYWxscy5hcHBlbmQodGhpc19tb2NrX2NhbGwpCisgICAgICAgICAgICBfbmV3X3BhcmVudCA9IF9uZXdfcGFyZW50Ll9tb2NrX25ld19wYXJlbnQKKworICAgICAgICAgICAgIyB1c2UgaWRzIGhlcmUgc28gYXMgbm90IHRvIGNhbGwgX19oYXNoX18gb24gdGhlIG1vY2tzCisgICAgICAgICAgICBfbmV3X3BhcmVudF9pZCA9IGlkKF9uZXdfcGFyZW50KQorICAgICAgICAgICAgaWYgX25ld19wYXJlbnRfaWQgaW4gc2VlbjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2Vlbi5hZGQoX25ld19wYXJlbnRfaWQpCisKKyAgICAgICAgcmV0X3ZhbCA9IERFRkFVTFQKKyAgICAgICAgZWZmZWN0ID0gc2VsZi5zaWRlX2VmZmVjdAorICAgICAgICBpZiBlZmZlY3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBfaXNfZXhjZXB0aW9uKGVmZmVjdCk6CisgICAgICAgICAgICAgICAgcmFpc2UgZWZmZWN0CisKKyAgICAgICAgICAgIGlmIG5vdCBfY2FsbGFibGUoZWZmZWN0KToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0KGVmZmVjdCkKKyAgICAgICAgICAgICAgICBpZiBfaXNfZXhjZXB0aW9uKHJlc3VsdCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHJlc3VsdAorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICAgICAgcmV0X3ZhbCA9IGVmZmVjdCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYucmV0dXJuX3ZhbHVlCisKKyAgICAgICAgaWYgKHNlbGYuX21vY2tfd3JhcHMgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgaXMgREVGQVVMVCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbW9ja193cmFwcygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJldF92YWwgPSBzZWxmLnJldHVybl92YWx1ZQorICAgICAgICByZXR1cm4gcmV0X3ZhbAorCisKKworY2xhc3MgTW9jayhDYWxsYWJsZU1peGluLCBOb25DYWxsYWJsZU1vY2spOgorICAgICIiIgorICAgIENyZWF0ZSBhIG5ldyBgTW9ja2Agb2JqZWN0LiBgTW9ja2AgdGFrZXMgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMKKyAgICB0aGF0IHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgTW9jayBvYmplY3Q6CisKKyAgICAqIGBzcGVjYDogVGhpcyBjYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBzdHJpbmdzIG9yIGFuIGV4aXN0aW5nIG9iamVjdCAoYQorICAgICAgY2xhc3Mgb3IgaW5zdGFuY2UpIHRoYXQgYWN0cyBhcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG1vY2sgb2JqZWN0LiBJZgorICAgICAgeW91IHBhc3MgaW4gYW4gb2JqZWN0IHRoZW4gYSBsaXN0IG9mIHN0cmluZ3MgaXMgZm9ybWVkIGJ5IGNhbGxpbmcgZGlyIG9uCisgICAgICB0aGUgb2JqZWN0IChleGNsdWRpbmcgdW5zdXBwb3J0ZWQgbWFnaWMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcykuIEFjY2Vzc2luZworICAgICAgYW55IGF0dHJpYnV0ZSBub3QgaW4gdGhpcyBsaXN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgICAgSWYgYHNwZWNgIGlzIGFuIG9iamVjdCAocmF0aGVyIHRoYW4gYSBsaXN0IG9mIHN0cmluZ3MpIHRoZW4KKyAgICAgIGBtb2NrLl9fY2xhc3NfX2AgcmV0dXJucyB0aGUgY2xhc3Mgb2YgdGhlIHNwZWMgb2JqZWN0LiBUaGlzIGFsbG93cyBtb2NrcworICAgICAgdG8gcGFzcyBgaXNpbnN0YW5jZWAgdGVzdHMuCisKKyAgICAqIGBzcGVjX3NldGA6IEEgc3RyaWN0ZXIgdmFyaWFudCBvZiBgc3BlY2AuIElmIHVzZWQsIGF0dGVtcHRpbmcgdG8gKnNldCoKKyAgICAgIG9yIGdldCBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vY2sgdGhhdCBpc24ndCBvbiB0aGUgb2JqZWN0IHBhc3NlZCBhcworICAgICAgYHNwZWNfc2V0YCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCisgICAgICB0aGUgYHNpZGVfZWZmZWN0YCBhdHRyaWJ1dGUuIFVzZWZ1bCBmb3IgcmFpc2luZyBleGNlcHRpb25zIG9yCisgICAgICBkeW5hbWljYWxseSBjaGFuZ2luZyByZXR1cm4gdmFsdWVzLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUKKyAgICAgIGFyZ3VtZW50cyBhcyB0aGUgbW9jaywgYW5kIHVubGVzcyBpdCByZXR1cm5zIGBERUZBVUxUYCwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KKyAgICAgIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLiBJZiBhbnkgb2YgdGhlIG1lbWJlcnMgb2YgdGhlIGl0ZXJhYmxlCisgICAgICBhcmUgZXhjZXB0aW9ucyB0aGV5IHdpbGwgYmUgcmFpc2VkIGluc3RlYWQgb2YgcmV0dXJuZWQuCisKKyAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KKyAgICAgIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLgorCisgICAgKiBgcmV0dXJuX3ZhbHVlYDogVGhlIHZhbHVlIHJldHVybmVkIHdoZW4gdGhlIG1vY2sgaXMgY2FsbGVkLiBCeSBkZWZhdWx0CisgICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQorICAgICAgYHJldHVybl92YWx1ZWAgYXR0cmlidXRlLgorCisgICAgKiBgd3JhcHNgOiBJdGVtIGZvciB0aGUgbW9jayBvYmplY3QgdG8gd3JhcC4gSWYgYHdyYXBzYCBpcyBub3QgTm9uZSB0aGVuCisgICAgICBjYWxsaW5nIHRoZSBNb2NrIHdpbGwgcGFzcyB0aGUgY2FsbCB0aHJvdWdoIHRvIHRoZSB3cmFwcGVkIG9iamVjdAorICAgICAgKHJldHVybmluZyB0aGUgcmVhbCByZXN1bHQpLiBBdHRyaWJ1dGUgYWNjZXNzIG9uIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGEKKyAgICAgIE1vY2sgb2JqZWN0IHRoYXQgd3JhcHMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIHRoZSB3cmFwcGVkIG9iamVjdAorICAgICAgKHNvIGF0dGVtcHRpbmcgdG8gYWNjZXNzIGFuIGF0dHJpYnV0ZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgd2lsbCByYWlzZSBhbgorICAgICAgYEF0dHJpYnV0ZUVycm9yYCkuCisKKyAgICAgIElmIHRoZSBtb2NrIGhhcyBhbiBleHBsaWNpdCBgcmV0dXJuX3ZhbHVlYCBzZXQgdGhlbiBjYWxscyBhcmUgbm90IHBhc3NlZAorICAgICAgdG8gdGhlIHdyYXBwZWQgb2JqZWN0IGFuZCB0aGUgYHJldHVybl92YWx1ZWAgaXMgcmV0dXJuZWQgaW5zdGVhZC4KKworICAgICogYG5hbWVgOiBJZiB0aGUgbW9jayBoYXMgYSBuYW1lIHRoZW4gaXQgd2lsbCBiZSB1c2VkIGluIHRoZSByZXByIG9mIHRoZQorICAgICAgbW9jay4gVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFRoZSBuYW1lIGlzIHByb3BhZ2F0ZWQgdG8gY2hpbGQKKyAgICAgIG1vY2tzLgorCisgICAgTW9ja3MgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlCisgICAgdXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBpdCBpcyBjcmVhdGVkLgorICAgICIiIgorCisKKworZGVmIF9kb3RfbG9va3VwKHRoaW5nLCBjb21wLCBpbXBvcnRfcGF0aCk6CisgICAgdHJ5OgorICAgICAgICByZXR1cm4gZ2V0YXR0cih0aGluZywgY29tcCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIF9faW1wb3J0X18oaW1wb3J0X3BhdGgpCisgICAgICAgIHJldHVybiBnZXRhdHRyKHRoaW5nLCBjb21wKQorCisKK2RlZiBfaW1wb3J0ZXIodGFyZ2V0KToKKyAgICBjb21wb25lbnRzID0gdGFyZ2V0LnNwbGl0KCcuJykKKyAgICBpbXBvcnRfcGF0aCA9IGNvbXBvbmVudHMucG9wKDApCisgICAgdGhpbmcgPSBfX2ltcG9ydF9fKGltcG9ydF9wYXRoKQorCisgICAgZm9yIGNvbXAgaW4gY29tcG9uZW50czoKKyAgICAgICAgaW1wb3J0X3BhdGggKz0gIi4lcyIgJSBjb21wCisgICAgICAgIHRoaW5nID0gX2RvdF9sb29rdXAodGhpbmcsIGNvbXAsIGltcG9ydF9wYXRoKQorICAgIHJldHVybiB0aGluZworCisKK2RlZiBfaXNfc3RhcnRlZChwYXRjaGVyKToKKyAgICAjIFhYWFggaG9ycmlibGUKKyAgICByZXR1cm4gaGFzYXR0cihwYXRjaGVyLCAnaXNfbG9jYWwnKQorCisKK2NsYXNzIF9wYXRjaChvYmplY3QpOgorCisgICAgYXR0cmlidXRlX25hbWUgPSBOb25lCisgICAgX2FjdGl2ZV9wYXRjaGVzID0gc2V0KCkKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgICAgIHNwZWNfc2V0LCBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCBrd2FyZ3MKKyAgICAgICAgKToKKyAgICAgICAgaWYgbmV3X2NhbGxhYmxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlICduZXcnIGFuZCAnbmV3X2NhbGxhYmxlJyB0b2dldGhlciIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnYXV0b3NwZWMnIGFuZCAnbmV3X2NhbGxhYmxlJyB0b2dldGhlciIKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5nZXR0ZXIgPSBnZXR0ZXIKKyAgICAgICAgc2VsZi5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGUKKyAgICAgICAgc2VsZi5uZXcgPSBuZXcKKyAgICAgICAgc2VsZi5uZXdfY2FsbGFibGUgPSBuZXdfY2FsbGFibGUKKyAgICAgICAgc2VsZi5zcGVjID0gc3BlYworICAgICAgICBzZWxmLmNyZWF0ZSA9IGNyZWF0ZQorICAgICAgICBzZWxmLmhhc19sb2NhbCA9IEZhbHNlCisgICAgICAgIHNlbGYuc3BlY19zZXQgPSBzcGVjX3NldAorICAgICAgICBzZWxmLmF1dG9zcGVjID0gYXV0b3NwZWMKKyAgICAgICAgc2VsZi5rd2FyZ3MgPSBrd2FyZ3MKKyAgICAgICAgc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzID0gW10KKworCisgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBfcGF0Y2goCisgICAgICAgICAgICBzZWxmLmdldHRlciwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYubmV3LCBzZWxmLnNwZWMsCisgICAgICAgICAgICBzZWxmLmNyZWF0ZSwgc2VsZi5zcGVjX3NldCwKKyAgICAgICAgICAgIHNlbGYuYXV0b3NwZWMsIHNlbGYubmV3X2NhbGxhYmxlLCBzZWxmLmt3YXJncworICAgICAgICApCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBzZWxmLmF0dHJpYnV0ZV9uYW1lCisgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IFsKKyAgICAgICAgICAgIHAuY29weSgpIGZvciBwIGluIHNlbGYuYWRkaXRpb25hbF9wYXRjaGVycworICAgICAgICBdCisgICAgICAgIHJldHVybiBwYXRjaGVyCisKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBmdW5jKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmdW5jLCB0eXBlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29yYXRlX2NsYXNzKGZ1bmMpCisgICAgICAgIHJldHVybiBzZWxmLmRlY29yYXRlX2NhbGxhYmxlKGZ1bmMpCisKKworICAgIGRlZiBkZWNvcmF0ZV9jbGFzcyhzZWxmLCBrbGFzcyk6CisgICAgICAgIGZvciBhdHRyIGluIGRpcihrbGFzcyk6CisgICAgICAgICAgICBpZiBub3QgYXR0ci5zdGFydHN3aXRoKHBhdGNoLlRFU1RfUFJFRklYKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihrbGFzcywgYXR0cikKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGF0dHJfdmFsdWUsICJfX2NhbGxfXyIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBhdGNoZXIgPSBzZWxmLmNvcHkoKQorICAgICAgICAgICAgc2V0YXR0cihrbGFzcywgYXR0ciwgcGF0Y2hlcihhdHRyX3ZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGtsYXNzCisKKworICAgIGRlZiBkZWNvcmF0ZV9jYWxsYWJsZShzZWxmLCBmdW5jKToKKyAgICAgICAgaWYgaGFzYXR0cihmdW5jLCAncGF0Y2hpbmdzJyk6CisgICAgICAgICAgICBmdW5jLnBhdGNoaW5ncy5hcHBlbmQoc2VsZikKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgQHdyYXBzKGZ1bmMpCisgICAgICAgIGRlZiBwYXRjaGVkKCphcmdzLCAqKmtleXdhcmdzKToKKyAgICAgICAgICAgIGV4dHJhX2FyZ3MgPSBbXQorICAgICAgICAgICAgZW50ZXJlZF9wYXRjaGVycyA9IFtdCisKKyAgICAgICAgICAgIGV4Y19pbmZvID0gdHVwbGUoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiBwYXRjaGVkLnBhdGNoaW5nczoKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gcGF0Y2hpbmcuX19lbnRlcl9fKCkKKyAgICAgICAgICAgICAgICAgICAgZW50ZXJlZF9wYXRjaGVycy5hcHBlbmQocGF0Y2hpbmcpCisgICAgICAgICAgICAgICAgICAgIGlmIHBhdGNoaW5nLmF0dHJpYnV0ZV9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5d2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXRjaGluZy5uZXcgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3MuYXBwZW5kKGFyZykKKworICAgICAgICAgICAgICAgIGFyZ3MgKz0gdHVwbGUoZXh0cmFfYXJncykKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprZXl3YXJncykKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBpZiAocGF0Y2hpbmcgbm90IGluIGVudGVyZWRfcGF0Y2hlcnMgYW5kCisgICAgICAgICAgICAgICAgICAgIF9pc19zdGFydGVkKHBhdGNoaW5nKSk6CisgICAgICAgICAgICAgICAgICAgICMgdGhlIHBhdGNoZXIgbWF5IGhhdmUgYmVlbiBzdGFydGVkLCBidXQgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICMgcmFpc2VkIHdoaWxzdCBlbnRlcmluZyBvbmUgb2YgaXRzIGFkZGl0aW9uYWxfcGF0Y2hlcnMKKyAgICAgICAgICAgICAgICAgICAgZW50ZXJlZF9wYXRjaGVycy5hcHBlbmQocGF0Y2hpbmcpCisgICAgICAgICAgICAgICAgIyBQYXNzIHRoZSBleGNlcHRpb24gdG8gX19leGl0X18KKyAgICAgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICAgICAgIyByZS1yYWlzZSB0aGUgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZm9yIHBhdGNoaW5nIGluIHJldmVyc2VkKGVudGVyZWRfcGF0Y2hlcnMpOgorICAgICAgICAgICAgICAgICAgICBwYXRjaGluZy5fX2V4aXRfXygqZXhjX2luZm8pCisKKyAgICAgICAgcGF0Y2hlZC5wYXRjaGluZ3MgPSBbc2VsZl0KKyAgICAgICAgcmV0dXJuIHBhdGNoZWQKKworCisgICAgZGVmIGdldF9vcmlnaW5hbChzZWxmKToKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi5nZXR0ZXIoKQorICAgICAgICBuYW1lID0gc2VsZi5hdHRyaWJ1dGUKKworICAgICAgICBvcmlnaW5hbCA9IERFRkFVTFQKKyAgICAgICAgbG9jYWwgPSBGYWxzZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdpbmFsID0gdGFyZ2V0Ll9fZGljdF9fW25hbWVdCisgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIEtleUVycm9yKToKKyAgICAgICAgICAgIG9yaWdpbmFsID0gZ2V0YXR0cih0YXJnZXQsIG5hbWUsIERFRkFVTFQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2NhbCA9IFRydWUKKworICAgICAgICBpZiBub3Qgc2VsZi5jcmVhdGUgYW5kIG9yaWdpbmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKKyAgICAgICAgICAgICAgICAiJXMgZG9lcyBub3QgaGF2ZSB0aGUgYXR0cmlidXRlICVyIiAlICh0YXJnZXQsIG5hbWUpCisgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBvcmlnaW5hbCwgbG9jYWwKKworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUGVyZm9ybSB0aGUgcGF0Y2guIiIiCisgICAgICAgIG5ldywgc3BlYywgc3BlY19zZXQgPSBzZWxmLm5ldywgc2VsZi5zcGVjLCBzZWxmLnNwZWNfc2V0CisgICAgICAgIGF1dG9zcGVjLCBrd2FyZ3MgPSBzZWxmLmF1dG9zcGVjLCBzZWxmLmt3YXJncworICAgICAgICBuZXdfY2FsbGFibGUgPSBzZWxmLm5ld19jYWxsYWJsZQorICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYuZ2V0dGVyKCkKKworICAgICAgICAjIG5vcm1hbGlzZSBGYWxzZSB0byBOb25lCisgICAgICAgIGlmIHNwZWMgaXMgRmFsc2U6CisgICAgICAgICAgICBzcGVjID0gTm9uZQorICAgICAgICBpZiBzcGVjX3NldCBpcyBGYWxzZToKKyAgICAgICAgICAgIHNwZWNfc2V0ID0gTm9uZQorICAgICAgICBpZiBhdXRvc3BlYyBpcyBGYWxzZToKKyAgICAgICAgICAgIGF1dG9zcGVjID0gTm9uZQorCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIGF1dG9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBzcGVjaWZ5IHNwZWMgYW5kIGF1dG9zcGVjIikKKyAgICAgICAgaWYgKChzcGVjIGlzIG5vdCBOb25lIG9yIGF1dG9zcGVjIGlzIG5vdCBOb25lKSBhbmQKKyAgICAgICAgICAgIHNwZWNfc2V0IG5vdCBpbiAoVHJ1ZSwgTm9uZSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBwcm92aWRlIGV4cGxpY2l0IHNwZWNfc2V0ICphbmQqIHNwZWMgb3IgYXV0b3NwZWMiKQorCisgICAgICAgIG9yaWdpbmFsLCBsb2NhbCA9IHNlbGYuZ2V0X29yaWdpbmFsKCkKKworICAgICAgICBpZiBuZXcgaXMgREVGQVVMVCBhbmQgYXV0b3NwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIGluaGVyaXQgPSBGYWxzZQorICAgICAgICAgICAgaWYgc3BlYyBpcyBUcnVlOgorICAgICAgICAgICAgICAgICMgc2V0IHNwZWMgdG8gdGhlIG9iamVjdCB3ZSBhcmUgcmVwbGFjaW5nCisgICAgICAgICAgICAgICAgc3BlYyA9IG9yaWdpbmFsCisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBvcmlnaW5hbAorICAgICAgICAgICAgICAgICAgICBzcGVjID0gTm9uZQorICAgICAgICAgICAgZWxpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNfc2V0ID0gc3BlYworICAgICAgICAgICAgICAgICAgICBzcGVjID0gTm9uZQorICAgICAgICAgICAgZWxpZiBzcGVjX3NldCBpcyBUcnVlOgorICAgICAgICAgICAgICAgIHNwZWNfc2V0ID0gb3JpZ2luYWwKKworICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBvciBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBvcmlnaW5hbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHVzZSAnc3BlYycgd2l0aCBjcmVhdGU9VHJ1ZSIpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvcmlnaW5hbCwgdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICMgSWYgd2UncmUgcGF0Y2hpbmcgb3V0IGEgY2xhc3MgYW5kIHRoZXJlIGlzIGEgc3BlYworICAgICAgICAgICAgICAgICAgICBpbmhlcml0ID0gVHJ1ZQorCisgICAgICAgICAgICBLbGFzcyA9IE1hZ2ljTW9jaworICAgICAgICAgICAgX2t3YXJncyA9IHt9CisgICAgICAgICAgICBpZiBuZXdfY2FsbGFibGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgS2xhc3MgPSBuZXdfY2FsbGFibGUKKyAgICAgICAgICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZSBvciBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjCisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICAgICAgaWYgX2lzX2xpc3QodGhpc19zcGVjKToKKyAgICAgICAgICAgICAgICAgICAgbm90X2NhbGxhYmxlID0gJ19fY2FsbF9fJyBub3QgaW4gdGhpc19zcGVjCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbm90X2NhbGxhYmxlID0gbm90IGNhbGxhYmxlKHRoaXNfc3BlYykKKyAgICAgICAgICAgICAgICBpZiBub3RfY2FsbGFibGU6CisgICAgICAgICAgICAgICAgICAgIEtsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKKworICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBfa3dhcmdzWydzcGVjJ10gPSBzcGVjCisgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBfa3dhcmdzWydzcGVjX3NldCddID0gc3BlY19zZXQKKworICAgICAgICAgICAgIyBhZGQgYSBuYW1lIHRvIG1vY2tzCisgICAgICAgICAgICBpZiAoaXNpbnN0YW5jZShLbGFzcywgdHlwZSkgYW5kCisgICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhLbGFzcywgTm9uQ2FsbGFibGVNb2NrKSBhbmQgc2VsZi5hdHRyaWJ1dGUpOgorICAgICAgICAgICAgICAgIF9rd2FyZ3NbJ25hbWUnXSA9IHNlbGYuYXR0cmlidXRlCisKKyAgICAgICAgICAgIF9rd2FyZ3MudXBkYXRlKGt3YXJncykKKyAgICAgICAgICAgIG5ldyA9IEtsYXNzKCoqX2t3YXJncykKKworICAgICAgICAgICAgaWYgaW5oZXJpdCBhbmQgX2lzX2luc3RhbmNlX21vY2sobmV3KToKKyAgICAgICAgICAgICAgICAjIHdlIGNhbiBvbmx5IHRlbGwgaWYgdGhlIGluc3RhbmNlIHNob3VsZCBiZSBjYWxsYWJsZSBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIHNwZWMgaXMgbm90IGEgbGlzdAorICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWMKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlY19zZXQKKyAgICAgICAgICAgICAgICBpZiAobm90IF9pc19saXN0KHRoaXNfc3BlYykgYW5kIG5vdAorICAgICAgICAgICAgICAgICAgICBfaW5zdGFuY2VfY2FsbGFibGUodGhpc19zcGVjKSk6CisgICAgICAgICAgICAgICAgICAgIEtsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKKworICAgICAgICAgICAgICAgIF9rd2FyZ3MucG9wKCduYW1lJykKKyAgICAgICAgICAgICAgICBuZXcucmV0dXJuX3ZhbHVlID0gS2xhc3MoX25ld19wYXJlbnQ9bmV3LCBfbmV3X25hbWU9JygpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfa3dhcmdzKQorICAgICAgICBlbGlmIGF1dG9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBzcGVjIGlzIGlnbm9yZWQsIG5ldyAqbXVzdCogYmUgZGVmYXVsdCwgc3BlY19zZXQgaXMgdHJlYXRlZAorICAgICAgICAgICAgIyBhcyBhIGJvb2xlYW4uIFNob3VsZCB3ZSBjaGVjayBzcGVjIGlzIG5vdCBOb25lIGFuZCB0aGF0IHNwZWNfc2V0CisgICAgICAgICAgICAjIGlzIGEgYm9vbD8KKyAgICAgICAgICAgIGlmIG5ldyBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJhdXRvc3BlYyBjcmVhdGVzIHRoZSBtb2NrIGZvciB5b3UuIENhbid0IHNwZWNpZnkgIgorICAgICAgICAgICAgICAgICAgICAiYXV0b3NwZWMgYW5kIG5ldy4iCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgb3JpZ2luYWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHVzZSAnYXV0b3NwZWMnIHdpdGggY3JlYXRlPVRydWUiKQorICAgICAgICAgICAgc3BlY19zZXQgPSBib29sKHNwZWNfc2V0KQorICAgICAgICAgICAgaWYgYXV0b3NwZWMgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICBhdXRvc3BlYyA9IG9yaWdpbmFsCisKKyAgICAgICAgICAgIG5ldyA9IGNyZWF0ZV9hdXRvc3BlYyhhdXRvc3BlYywgc3BlY19zZXQ9c3BlY19zZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25hbWU9c2VsZi5hdHRyaWJ1dGUsICoqa3dhcmdzKQorICAgICAgICBlbGlmIGt3YXJnczoKKyAgICAgICAgICAgICMgY2FuJ3Qgc2V0IGtleXdvcmQgYXJncyB3aGVuIHdlIGFyZW4ndCBjcmVhdGluZyB0aGUgbW9jaworICAgICAgICAgICAgIyBYWFhYIElmIG5ldyBpcyBhIE1vY2sgd2UgY291bGQgY2FsbCBuZXcuY29uZmlndXJlX21vY2soKiprd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHBhc3Mga3dhcmdzIHRvIGEgbW9jayB3ZSBhcmVuJ3QgY3JlYXRpbmciKQorCisgICAgICAgIG5ld19hdHRyID0gbmV3CisKKyAgICAgICAgc2VsZi50ZW1wX29yaWdpbmFsID0gb3JpZ2luYWwKKyAgICAgICAgc2VsZi5pc19sb2NhbCA9IGxvY2FsCisgICAgICAgIHNldGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlLCBuZXdfYXR0cikKKyAgICAgICAgaWYgc2VsZi5hdHRyaWJ1dGVfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGV4dHJhX2FyZ3MgPSB7fQorICAgICAgICAgICAgaWYgc2VsZi5uZXcgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICBleHRyYV9hcmdzW3NlbGYuYXR0cmlidXRlX25hbWVdID0gIG5ldworICAgICAgICAgICAgZm9yIHBhdGNoaW5nIGluIHNlbGYuYWRkaXRpb25hbF9wYXRjaGVyczoKKyAgICAgICAgICAgICAgICBhcmcgPSBwYXRjaGluZy5fX2VudGVyX18oKQorICAgICAgICAgICAgICAgIGlmIHBhdGNoaW5nLm5ldyBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzLnVwZGF0ZShhcmcpCisgICAgICAgICAgICByZXR1cm4gZXh0cmFfYXJncworCisgICAgICAgIHJldHVybiBuZXcKKworCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CisgICAgICAgICIiIlVuZG8gdGhlIHBhdGNoLiIiIgorICAgICAgICBpZiBub3QgX2lzX3N0YXJ0ZWQoc2VsZik6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3N0b3AgY2FsbGVkIG9uIHVuc3RhcnRlZCBwYXRjaGVyJykKKworICAgICAgICBpZiBzZWxmLmlzX2xvY2FsIGFuZCBzZWxmLnRlbXBfb3JpZ2luYWwgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi50ZW1wX29yaWdpbmFsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVsYXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jcmVhdGUgYW5kIG5vdCBoYXNhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSk6CisgICAgICAgICAgICAgICAgIyBuZWVkZWQgZm9yIHByb3h5IG9iamVjdHMgbGlrZSBkamFuZ28gc2V0dGluZ3MKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi50ZW1wX29yaWdpbmFsKQorCisgICAgICAgIGRlbCBzZWxmLnRlbXBfb3JpZ2luYWwKKyAgICAgICAgZGVsIHNlbGYuaXNfbG9jYWwKKyAgICAgICAgZGVsIHNlbGYudGFyZ2V0CisgICAgICAgIGZvciBwYXRjaGVyIGluIHJldmVyc2VkKHNlbGYuYWRkaXRpb25hbF9wYXRjaGVycyk6CisgICAgICAgICAgICBpZiBfaXNfc3RhcnRlZChwYXRjaGVyKToKKyAgICAgICAgICAgICAgICBwYXRjaGVyLl9fZXhpdF9fKCpleGNfaW5mbykKKworCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAiIiJBY3RpdmF0ZSBhIHBhdGNoLCByZXR1cm5pbmcgYW55IGNyZWF0ZWQgbW9jay4iIiIKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fX2VudGVyX18oKQorICAgICAgICBzZWxmLl9hY3RpdmVfcGF0Y2hlcy5hZGQoc2VsZikKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgIiIiU3RvcCBhbiBhY3RpdmUgcGF0Y2guIiIiCisgICAgICAgIHNlbGYuX2FjdGl2ZV9wYXRjaGVzLmRpc2NhcmQoc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX19leGl0X18oKQorCisKKworZGVmIF9nZXRfdGFyZ2V0KHRhcmdldCk6CisgICAgdHJ5OgorICAgICAgICB0YXJnZXQsIGF0dHJpYnV0ZSA9IHRhcmdldC5yc3BsaXQoJy4nLCAxKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJOZWVkIGEgdmFsaWQgdGFyZ2V0IHRvIHBhdGNoLiBZb3Ugc3VwcGxpZWQ6ICVyIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LCkpCisgICAgZ2V0dGVyID0gbGFtYmRhOiBfaW1wb3J0ZXIodGFyZ2V0KQorICAgIHJldHVybiBnZXR0ZXIsIGF0dHJpYnV0ZQorCisKK2RlZiBfcGF0Y2hfb2JqZWN0KAorICAgICAgICB0YXJnZXQsIGF0dHJpYnV0ZSwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwKKyAgICAgICAgY3JlYXRlPUZhbHNlLCBzcGVjX3NldD1Ob25lLCBhdXRvc3BlYz1Ob25lLAorICAgICAgICBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MKKyAgICApOgorICAgICIiIgorICAgIHBhdGNoIHRoZSBuYW1lZCBtZW1iZXIgKGBhdHRyaWJ1dGVgKSBvbiBhbiBvYmplY3QgKGB0YXJnZXRgKSB3aXRoIGEgbW9jaworICAgIG9iamVjdC4KKworICAgIGBwYXRjaC5vYmplY3RgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gQXJndW1lbnRzIGBuZXdgLCBgc3BlY2AsIGBjcmVhdGVgLCBgc3BlY19zZXRgLAorICAgIGBhdXRvc3BlY2AgYW5kIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gTGlrZQorICAgIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgY29uZmlndXJpbmcKKyAgICB0aGUgbW9jayBvYmplY3QgaXQgY3JlYXRlcy4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gub2JqZWN0YCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKKyAgICBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorICAgICIiIgorICAgIGdldHRlciA9IGxhbWJkYTogdGFyZ2V0CisgICAgcmV0dXJuIF9wYXRjaCgKKyAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLAorICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzCisgICAgKQorCisKK2RlZiBfcGF0Y2hfbXVsdGlwbGUodGFyZ2V0LCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKToKKyAgICAiIiJQZXJmb3JtIG11bHRpcGxlIHBhdGNoZXMgaW4gYSBzaW5nbGUgY2FsbC4gSXQgdGFrZXMgdGhlIG9iamVjdCB0byBiZQorICAgIHBhdGNoZWQgKGVpdGhlciBhcyBhbiBvYmplY3Qgb3IgYSBzdHJpbmcgdG8gZmV0Y2ggdGhlIG9iamVjdCBieSBpbXBvcnRpbmcpCisgICAgYW5kIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgcGF0Y2hlczo6CisKKyAgICAgICAgd2l0aCBwYXRjaC5tdWx0aXBsZShzZXR0aW5ncywgRklSU1RfUEFUQ0g9J29uZScsIFNFQ09ORF9QQVRDSD0ndHdvJyk6CisgICAgICAgICAgICAuLi4KKworICAgIFVzZSBgREVGQVVMVGAgYXMgdGhlIHZhbHVlIGlmIHlvdSB3YW50IGBwYXRjaC5tdWx0aXBsZWAgdG8gY3JlYXRlCisgICAgbW9ja3MgZm9yIHlvdS4gSW4gdGhpcyBjYXNlIHRoZSBjcmVhdGVkIG1vY2tzIGFyZSBwYXNzZWQgaW50byBhIGRlY29yYXRlZAorICAgIGZ1bmN0aW9uIGJ5IGtleXdvcmQsIGFuZCBhIGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQgd2hlbiBgcGF0Y2gubXVsdGlwbGVgIGlzCisgICAgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKworICAgIGBwYXRjaC5tdWx0aXBsZWAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBUaGUgYXJndW1lbnRzIGBzcGVjYCwgYHNwZWNfc2V0YCwgYGNyZWF0ZWAsCisgICAgYGF1dG9zcGVjYCBhbmQgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBUaGVzZQorICAgIGFyZ3VtZW50cyB3aWxsIGJlIGFwcGxpZWQgdG8gKmFsbCogcGF0Y2hlcyBkb25lIGJ5IGBwYXRjaC5tdWx0aXBsZWAuCisKKyAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm11bHRpcGxlYCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKKyAgICBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorICAgICIiIgorICAgIGlmIHR5cGUodGFyZ2V0KSBpcyBzdHI6CisgICAgICAgIGdldHRlciA9IGxhbWJkYTogX2ltcG9ydGVyKHRhcmdldCkKKyAgICBlbHNlOgorICAgICAgICBnZXR0ZXIgPSBsYW1iZGE6IHRhcmdldAorCisgICAgaWYgbm90IGt3YXJnczoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICdNdXN0IHN1cHBseSBhdCBsZWFzdCBvbmUga2V5d29yZCBhcmd1bWVudCB3aXRoIHBhdGNoLm11bHRpcGxlJworICAgICAgICApCisgICAgIyBuZWVkIHRvIHdyYXAgaW4gYSBsaXN0IGZvciBweXRob24gMywgd2hlcmUgaXRlbXMgaXMgYSB2aWV3CisgICAgaXRlbXMgPSBsaXN0KGt3YXJncy5pdGVtcygpKQorICAgIGF0dHJpYnV0ZSwgbmV3ID0gaXRlbXNbMF0KKyAgICBwYXRjaGVyID0gX3BhdGNoKAorICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsIHNwZWNfc2V0LAorICAgICAgICBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCB7fQorICAgICkKKyAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gYXR0cmlidXRlCisgICAgZm9yIGF0dHJpYnV0ZSwgbmV3IGluIGl0ZW1zWzE6XToKKyAgICAgICAgdGhpc19wYXRjaGVyID0gX3BhdGNoKAorICAgICAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLCBzcGVjX3NldCwKKyAgICAgICAgICAgIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIHt9CisgICAgICAgICkKKyAgICAgICAgdGhpc19wYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gYXR0cmlidXRlCisgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycy5hcHBlbmQodGhpc19wYXRjaGVyKQorICAgIHJldHVybiBwYXRjaGVyCisKKworZGVmIHBhdGNoKAorICAgICAgICB0YXJnZXQsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwKKyAgICAgICAgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAiIiIKKyAgICBgcGF0Y2hgIGFjdHMgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBJbnNpZGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uIG9yIHdpdGggc3RhdGVtZW50LCB0aGUgYHRhcmdldGAKKyAgICBpcyBwYXRjaGVkIHdpdGggYSBgbmV3YCBvYmplY3QuIFdoZW4gdGhlIGZ1bmN0aW9uL3dpdGggc3RhdGVtZW50IGV4aXRzCisgICAgdGhlIHBhdGNoIGlzIHVuZG9uZS4KKworICAgIElmIGBuZXdgIGlzIG9taXR0ZWQsIHRoZW4gdGhlIHRhcmdldCBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICBgTWFnaWNNb2NrYC4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgZGVjb3JhdG9yIGFuZCBgbmV3YCBpcworICAgIG9taXR0ZWQsIHRoZSBjcmVhdGVkIG1vY2sgaXMgcGFzc2VkIGluIGFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvIHRoZQorICAgIGRlY29yYXRlZCBmdW5jdGlvbi4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRoZSBjcmVhdGVkCisgICAgbW9jayBpcyByZXR1cm5lZCBieSB0aGUgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHRhcmdldGAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIGAncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lJ2AuIFRoZQorICAgIGB0YXJnZXRgIGlzIGltcG9ydGVkIGFuZCB0aGUgc3BlY2lmaWVkIG9iamVjdCByZXBsYWNlZCB3aXRoIHRoZSBgbmV3YAorICAgIG9iamVjdCwgc28gdGhlIGB0YXJnZXRgIG11c3QgYmUgaW1wb3J0YWJsZSBmcm9tIHRoZSBlbnZpcm9ubWVudCB5b3UgYXJlCisgICAgY2FsbGluZyBgcGF0Y2hgIGZyb20uIFRoZSB0YXJnZXQgaXMgaW1wb3J0ZWQgd2hlbiB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCisgICAgaXMgZXhlY3V0ZWQsIG5vdCBhdCBkZWNvcmF0aW9uIHRpbWUuCisKKyAgICBUaGUgYHNwZWNgIGFuZCBgc3BlY19zZXRgIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGBNYWdpY01vY2tgCisgICAgaWYgcGF0Y2ggaXMgY3JlYXRpbmcgb25lIGZvciB5b3UuCisKKyAgICBJbiBhZGRpdGlvbiB5b3UgY2FuIHBhc3MgYHNwZWM9VHJ1ZWAgb3IgYHNwZWNfc2V0PVRydWVgLCB3aGljaCBjYXVzZXMKKyAgICBwYXRjaCB0byBwYXNzIGluIHRoZSBvYmplY3QgYmVpbmcgbW9ja2VkIGFzIHRoZSBzcGVjL3NwZWNfc2V0IG9iamVjdC4KKworICAgIGBuZXdfY2FsbGFibGVgIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBjbGFzcywgb3IgY2FsbGFibGUgb2JqZWN0LAorICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY3JlYXRlIHRoZSBgbmV3YCBvYmplY3QuIEJ5IGRlZmF1bHQgYE1hZ2ljTW9ja2AgaXMKKyAgICB1c2VkLgorCisgICAgQSBtb3JlIHBvd2VyZnVsIGZvcm0gb2YgYHNwZWNgIGlzIGBhdXRvc3BlY2AuIElmIHlvdSBzZXQgYGF1dG9zcGVjPVRydWVgCisgICAgdGhlbiB0aGUgbW9jayB3aXRoIGJlIGNyZWF0ZWQgd2l0aCBhIHNwZWMgZnJvbSB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLgorICAgIEFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrIHdpbGwgYWxzbyBoYXZlIHRoZSBzcGVjIG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgYXR0cmlidXRlIG9mIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuIE1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBiZWluZworICAgIG1vY2tlZCB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQgYW5kIHdpbGwgcmFpc2UgYSBgVHlwZUVycm9yYCBpZgorICAgIHRoZXkgYXJlIGNhbGxlZCB3aXRoIHRoZSB3cm9uZyBzaWduYXR1cmUuIEZvciBtb2NrcyByZXBsYWNpbmcgYSBjbGFzcywKKyAgICB0aGVpciByZXR1cm4gdmFsdWUgKHRoZSAnaW5zdGFuY2UnKSB3aWxsIGhhdmUgdGhlIHNhbWUgc3BlYyBhcyB0aGUgY2xhc3MuCisKKyAgICBJbnN0ZWFkIG9mIGBhdXRvc3BlYz1UcnVlYCB5b3UgY2FuIHBhc3MgYGF1dG9zcGVjPXNvbWVfb2JqZWN0YCB0byB1c2UgYW4KKyAgICBhcmJpdHJhcnkgb2JqZWN0IGFzIHRoZSBzcGVjIGluc3RlYWQgb2YgdGhlIG9uZSBiZWluZyByZXBsYWNlZC4KKworICAgIEJ5IGRlZmF1bHQgYHBhdGNoYCB3aWxsIGZhaWwgdG8gcmVwbGFjZSBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QuIElmCisgICAgeW91IHBhc3MgaW4gYGNyZWF0ZT1UcnVlYCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdCwgcGF0Y2ggd2lsbAorICAgIGNyZWF0ZSB0aGUgYXR0cmlidXRlIGZvciB5b3Ugd2hlbiB0aGUgcGF0Y2hlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIGFuZAorICAgIGRlbGV0ZSBpdCBhZ2FpbiBhZnRlcndhcmRzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0cyBhZ2FpbnN0CisgICAgYXR0cmlidXRlcyB0aGF0IHlvdXIgcHJvZHVjdGlvbiBjb2RlIGNyZWF0ZXMgYXQgcnVudGltZS4gSXQgaXMgb2ZmIGJ5IGJ5CisgICAgZGVmYXVsdCBiZWNhdXNlIGl0IGNhbiBiZSBkYW5nZXJvdXMuIFdpdGggaXQgc3dpdGNoZWQgb24geW91IGNhbiB3cml0ZQorICAgIHBhc3NpbmcgdGVzdHMgYWdhaW5zdCBBUElzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QhCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQorICAgIGRlY29yYXRpbmcgZWFjaCB0ZXN0IG1ldGhvZCBpbiB0aGUgY2xhc3MuIFRoaXMgcmVkdWNlcyB0aGUgYm9pbGVycGxhdGUKKyAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gYHBhdGNoYCBmaW5kcworICAgIHRlc3RzIGJ5IGxvb2tpbmcgZm9yIG1ldGhvZCBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggYHBhdGNoLlRFU1RfUFJFRklYYC4KKyAgICBCeSBkZWZhdWx0IHRoaXMgaXMgYHRlc3RgLCB3aGljaCBtYXRjaGVzIHRoZSB3YXkgYHVuaXR0ZXN0YCBmaW5kcyB0ZXN0cy4KKyAgICBZb3UgY2FuIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYC4KKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCB3aXRoIHRoZSB3aXRoIHN0YXRlbWVudC4gSGVyZSB0aGUKKyAgICBwYXRjaGluZyBhcHBsaWVzIHRvIHRoZSBpbmRlbnRlZCBibG9jayBhZnRlciB0aGUgd2l0aCBzdGF0ZW1lbnQuIElmIHlvdQorICAgIHVzZSAiYXMiIHRoZW4gdGhlIHBhdGNoZWQgb2JqZWN0IHdpbGwgYmUgYm91bmQgdG8gdGhlIG5hbWUgYWZ0ZXIgdGhlCisgICAgImFzIjsgdmVyeSB1c2VmdWwgaWYgYHBhdGNoYCBpcyBjcmVhdGluZyBhIG1vY2sgb2JqZWN0IGZvciB5b3UuCisKKyAgICBgcGF0Y2hgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZSBwYXNzZWQgdG8KKyAgICB0aGUgYE1vY2tgIChvciBgbmV3X2NhbGxhYmxlYCkgb24gY29uc3RydWN0aW9uLgorCisgICAgYHBhdGNoLmRpY3QoLi4uKWAsIGBwYXRjaC5tdWx0aXBsZSguLi4pYCBhbmQgYHBhdGNoLm9iamVjdCguLi4pYCBhcmUKKyAgICBhdmFpbGFibGUgZm9yIGFsdGVybmF0ZSB1c2UtY2FzZXMuCisgICAgIiIiCisgICAgZ2V0dGVyLCBhdHRyaWJ1dGUgPSBfZ2V0X3RhcmdldCh0YXJnZXQpCisgICAgcmV0dXJuIF9wYXRjaCgKKyAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLAorICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzCisgICAgKQorCisKK2NsYXNzIF9wYXRjaF9kaWN0KG9iamVjdCk6CisgICAgIiIiCisgICAgUGF0Y2ggYSBkaWN0aW9uYXJ5LCBvciBkaWN0aW9uYXJ5IGxpa2Ugb2JqZWN0LCBhbmQgcmVzdG9yZSB0aGUgZGljdGlvbmFyeQorICAgIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSBhZnRlciB0aGUgdGVzdC4KKworICAgIGBpbl9kaWN0YCBjYW4gYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbWFwcGluZyBsaWtlIGNvbnRhaW5lci4gSWYgaXQgaXMgYQorICAgIG1hcHBpbmcgdGhlbiBpdCBtdXN0IGF0IGxlYXN0IHN1cHBvcnQgZ2V0dGluZywgc2V0dGluZyBhbmQgZGVsZXRpbmcgaXRlbXMKKyAgICBwbHVzIGl0ZXJhdGluZyBvdmVyIGtleXMuCisKKyAgICBgaW5fZGljdGAgY2FuIGFsc28gYmUgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgZGljdGlvbmFyeSwgd2hpY2gKKyAgICB3aWxsIHRoZW4gYmUgZmV0Y2hlZCBieSBpbXBvcnRpbmcgaXQuCisKKyAgICBgdmFsdWVzYCBjYW4gYmUgYSBkaWN0aW9uYXJ5IG9mIHZhbHVlcyB0byBzZXQgaW4gdGhlIGRpY3Rpb25hcnkuIGB2YWx1ZXNgCisgICAgY2FuIGFsc28gYmUgYW4gaXRlcmFibGUgb2YgYChrZXksIHZhbHVlKWAgcGFpcnMuCisKKyAgICBJZiBgY2xlYXJgIGlzIFRydWUgdGhlbiB0aGUgZGljdGlvbmFyeSB3aWxsIGJlIGNsZWFyZWQgYmVmb3JlIHRoZSBuZXcKKyAgICB2YWx1ZXMgYXJlIHNldC4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdG8gc2V0CisgICAgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5OjoKKworICAgICAgICB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgbXltb2R1bGU9TW9jaygpLCBvdGhlcl9tb2R1bGU9TW9jaygpKToKKyAgICAgICAgICAgIC4uLgorCisgICAgYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCBkZWNvcmF0b3Igb3IgY2xhc3MKKyAgICBkZWNvcmF0b3IuIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2guZGljdGAgaG9ub3VycworICAgIGBwYXRjaC5URVNUX1BSRUZJWGAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbl9kaWN0LCB2YWx1ZXM9KCksIGNsZWFyPUZhbHNlLCAqKmt3YXJncyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5fZGljdCwgc3RyKToKKyAgICAgICAgICAgIGluX2RpY3QgPSBfaW1wb3J0ZXIoaW5fZGljdCkKKyAgICAgICAgc2VsZi5pbl9kaWN0ID0gaW5fZGljdAorICAgICAgICAjIHN1cHBvcnQgYW55IGFyZ3VtZW50IHN1cHBvcnRlZCBieSBkaWN0KC4uLikgY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi52YWx1ZXMgPSBkaWN0KHZhbHVlcykKKyAgICAgICAgc2VsZi52YWx1ZXMudXBkYXRlKGt3YXJncykKKyAgICAgICAgc2VsZi5jbGVhciA9IGNsZWFyCisgICAgICAgIHNlbGYuX29yaWdpbmFsID0gTm9uZQorCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jbGFzcyhmKQorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIF9pbm5lcigqYXJncywgKiprdyk6CisgICAgICAgICAgICBzZWxmLl9wYXRjaF9kaWN0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gZigqYXJncywgKiprdykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fdW5wYXRjaF9kaWN0KCkKKworICAgICAgICByZXR1cm4gX2lubmVyCisKKworICAgIGRlZiBkZWNvcmF0ZV9jbGFzcyhzZWxmLCBrbGFzcyk6CisgICAgICAgIGZvciBhdHRyIGluIGRpcihrbGFzcyk6CisgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihrbGFzcywgYXR0cikKKyAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgocGF0Y2guVEVTVF9QUkVGSVgpIGFuZAorICAgICAgICAgICAgICAgICBoYXNhdHRyKGF0dHJfdmFsdWUsICJfX2NhbGxfXyIpKToKKyAgICAgICAgICAgICAgICBkZWNvcmF0b3IgPSBfcGF0Y2hfZGljdChzZWxmLmluX2RpY3QsIHNlbGYudmFsdWVzLCBzZWxmLmNsZWFyKQorICAgICAgICAgICAgICAgIGRlY29yYXRlZCA9IGRlY29yYXRvcihhdHRyX3ZhbHVlKQorICAgICAgICAgICAgICAgIHNldGF0dHIoa2xhc3MsIGF0dHIsIGRlY29yYXRlZCkKKyAgICAgICAgcmV0dXJuIGtsYXNzCisKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICIiIlBhdGNoIHRoZSBkaWN0LiIiIgorICAgICAgICBzZWxmLl9wYXRjaF9kaWN0KCkKKworCisgICAgZGVmIF9wYXRjaF9kaWN0KHNlbGYpOgorICAgICAgICB2YWx1ZXMgPSBzZWxmLnZhbHVlcworICAgICAgICBpbl9kaWN0ID0gc2VsZi5pbl9kaWN0CisgICAgICAgIGNsZWFyID0gc2VsZi5jbGVhcgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdpbmFsID0gaW5fZGljdC5jb3B5KCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBkaWN0IGxpa2Ugb2JqZWN0IHdpdGggbm8gY29weSBtZXRob2QKKyAgICAgICAgICAgICMgbXVzdCBzdXBwb3J0IGl0ZXJhdGlvbiBvdmVyIGtleXMKKyAgICAgICAgICAgIG9yaWdpbmFsID0ge30KKyAgICAgICAgICAgIGZvciBrZXkgaW4gaW5fZGljdDoKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFtrZXldID0gaW5fZGljdFtrZXldCisgICAgICAgIHNlbGYuX29yaWdpbmFsID0gb3JpZ2luYWwKKworICAgICAgICBpZiBjbGVhcjoKKyAgICAgICAgICAgIF9jbGVhcl9kaWN0KGluX2RpY3QpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5fZGljdC51cGRhdGUodmFsdWVzKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIGRpY3QgbGlrZSBvYmplY3Qgd2l0aCBubyB1cGRhdGUgbWV0aG9kCisgICAgICAgICAgICBmb3Iga2V5IGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBpbl9kaWN0W2tleV0gPSB2YWx1ZXNba2V5XQorCisKKyAgICBkZWYgX3VucGF0Y2hfZGljdChzZWxmKToKKyAgICAgICAgaW5fZGljdCA9IHNlbGYuaW5fZGljdAorICAgICAgICBvcmlnaW5hbCA9IHNlbGYuX29yaWdpbmFsCisKKyAgICAgICAgX2NsZWFyX2RpY3QoaW5fZGljdCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbl9kaWN0LnVwZGF0ZShvcmlnaW5hbCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZm9yIGtleSBpbiBvcmlnaW5hbDoKKyAgICAgICAgICAgICAgICBpbl9kaWN0W2tleV0gPSBvcmlnaW5hbFtrZXldCisKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICIiIlVucGF0Y2ggdGhlIGRpY3QuIiIiCisgICAgICAgIHNlbGYuX3VucGF0Y2hfZGljdCgpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgc3RhcnQgPSBfX2VudGVyX18KKyAgICBzdG9wID0gX19leGl0X18KKworCitkZWYgX2NsZWFyX2RpY3QoaW5fZGljdCk6CisgICAgdHJ5OgorICAgICAgICBpbl9kaWN0LmNsZWFyKCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGtleXMgPSBsaXN0KGluX2RpY3QpCisgICAgICAgIGZvciBrZXkgaW4ga2V5czoKKyAgICAgICAgICAgIGRlbCBpbl9kaWN0W2tleV0KKworCitkZWYgX3BhdGNoX3N0b3BhbGwoKToKKyAgICAiIiJTdG9wIGFsbCBhY3RpdmUgcGF0Y2hlcy4iIiIKKyAgICBmb3IgcGF0Y2ggaW4gbGlzdChfcGF0Y2guX2FjdGl2ZV9wYXRjaGVzKToKKyAgICAgICAgcGF0Y2guc3RvcCgpCisKKworcGF0Y2gub2JqZWN0ID0gX3BhdGNoX29iamVjdAorcGF0Y2guZGljdCA9IF9wYXRjaF9kaWN0CitwYXRjaC5tdWx0aXBsZSA9IF9wYXRjaF9tdWx0aXBsZQorcGF0Y2guc3RvcGFsbCA9IF9wYXRjaF9zdG9wYWxsCitwYXRjaC5URVNUX1BSRUZJWCA9ICd0ZXN0JworCittYWdpY19tZXRob2RzID0gKAorICAgICJsdCBsZSBndCBnZSBlcSBuZSAiCisgICAgImdldGl0ZW0gc2V0aXRlbSBkZWxpdGVtICIKKyAgICAibGVuIGNvbnRhaW5zIGl0ZXIgIgorICAgICJoYXNoIHN0ciBzaXplb2YgIgorICAgICJlbnRlciBleGl0ICIKKyAgICAiZGl2bW9kIG5lZyBwb3MgYWJzIGludmVydCAiCisgICAgImNvbXBsZXggaW50IGZsb2F0IGluZGV4ICIKKyAgICAidHJ1bmMgZmxvb3IgY2VpbCAiCisgICAgImJvb2wgbmV4dCAiCispCisKK251bWVyaWNzID0gImFkZCBzdWIgbXVsIGRpdiBmbG9vcmRpdiBtb2QgbHNoaWZ0IHJzaGlmdCBhbmQgeG9yIG9yIHBvdyAiCitpbnBsYWNlID0gJyAnLmpvaW4oJ2klcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCityaWdodCA9ICcgJy5qb2luKCdyJXMnICUgbiBmb3IgbiBpbiBudW1lcmljcy5zcGxpdCgpKQorCisjIG5vdCBpbmNsdWRpbmcgX19wcmVwYXJlX18sIF9faW5zdGFuY2VjaGVja19fLCBfX3N1YmNsYXNzY2hlY2tfXworIyAoYXMgdGhleSBhcmUgbWV0YWNsYXNzIG1ldGhvZHMpCisjIF9fZGVsX18gaXMgbm90IHN1cHBvcnRlZCBhdCBhbGwgYXMgaXQgY2F1c2VzIHByb2JsZW1zIGlmIGl0IGV4aXN0cworCitfbm9uX2RlZmF1bHRzID0gc2V0KCdfXyVzX18nICUgbWV0aG9kIGZvciBtZXRob2QgaW4gWworICAgICdnZXQnLCAnc2V0JywgJ2RlbGV0ZScsICdyZXZlcnNlZCcsICdtaXNzaW5nJywgJ3JlZHVjZScsICdyZWR1Y2VfZXgnLAorICAgICdnZXRpbml0YXJncycsICdnZXRuZXdhcmdzJywgJ2dldHN0YXRlJywgJ3NldHN0YXRlJywgJ2dldGZvcm1hdCcsCisgICAgJ3NldGZvcm1hdCcsICdyZXByJywgJ2RpcicsICdzdWJjbGFzc2VzJywgJ2Zvcm1hdCcsCitdKQorCisKK2RlZiBfZ2V0X21ldGhvZChuYW1lLCBmdW5jKToKKyAgICAiVHVybnMgYSBjYWxsYWJsZSBvYmplY3QgKGxpa2UgYSBtb2NrKSBpbnRvIGEgcmVhbCBmdW5jdGlvbiIKKyAgICBkZWYgbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgcmV0dXJuIGZ1bmMoc2VsZiwgKmFyZ3MsICoqa3cpCisgICAgbWV0aG9kLl9fbmFtZV9fID0gbmFtZQorICAgIHJldHVybiBtZXRob2QKKworCitfbWFnaWNzID0gc2V0KAorICAgICdfXyVzX18nICUgbWV0aG9kIGZvciBtZXRob2QgaW4KKyAgICAnICcuam9pbihbbWFnaWNfbWV0aG9kcywgbnVtZXJpY3MsIGlucGxhY2UsIHJpZ2h0XSkuc3BsaXQoKQorKQorCitfYWxsX21hZ2ljcyA9IF9tYWdpY3MgfCBfbm9uX2RlZmF1bHRzCisKK191bnN1cHBvcnRlZF9tYWdpY3MgPSBzZXQoWworICAgICdfX2dldGF0dHJfXycsICdfX3NldGF0dHJfXycsCisgICAgJ19faW5pdF9fJywgJ19fbmV3X18nLCAnX19wcmVwYXJlX18nCisgICAgJ19faW5zdGFuY2VjaGVja19fJywgJ19fc3ViY2xhc3NjaGVja19fJywKKyAgICAnX19kZWxfXycKK10pCisKK19jYWxjdWxhdGVfcmV0dXJuX3ZhbHVlID0geworICAgICdfX2hhc2hfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19oYXNoX18oc2VsZiksCisgICAgJ19fc3RyX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9fc3RyX18oc2VsZiksCisgICAgJ19fc2l6ZW9mX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9fc2l6ZW9mX18oc2VsZiksCit9CisKK19yZXR1cm5fdmFsdWVzID0geworICAgICdfX2x0X18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19ndF9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19fbGVfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2dlX18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19pbnRfXyc6IDEsCisgICAgJ19fY29udGFpbnNfXyc6IEZhbHNlLAorICAgICdfX2xlbl9fJzogMCwKKyAgICAnX19leGl0X18nOiBGYWxzZSwKKyAgICAnX19jb21wbGV4X18nOiAxaiwKKyAgICAnX19mbG9hdF9fJzogMS4wLAorICAgICdfX2Jvb2xfXyc6IFRydWUsCisgICAgJ19faW5kZXhfXyc6IDEsCit9CisKKworZGVmIF9nZXRfZXEoc2VsZik6CisgICAgZGVmIF9fZXFfXyhvdGhlcik6CisgICAgICAgIHJldF92YWwgPSBzZWxmLl9fZXFfXy5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgcmV0X3ZhbCBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiByZXRfdmFsCisgICAgICAgIHJldHVybiBzZWxmIGlzIG90aGVyCisgICAgcmV0dXJuIF9fZXFfXworCitkZWYgX2dldF9uZShzZWxmKToKKyAgICBkZWYgX19uZV9fKG90aGVyKToKKyAgICAgICAgaWYgc2VsZi5fX25lX18uX21vY2tfcmV0dXJuX3ZhbHVlIGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgcmV0dXJuIHNlbGYgaXMgbm90IG90aGVyCisgICAgcmV0dXJuIF9fbmVfXworCitkZWYgX2dldF9pdGVyKHNlbGYpOgorICAgIGRlZiBfX2l0ZXJfXygpOgorICAgICAgICByZXRfdmFsID0gc2VsZi5fX2l0ZXJfXy5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgcmV0X3ZhbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICMgaWYgcmV0X3ZhbCB3YXMgYWxyZWFkeSBhbiBpdGVyYXRvciwgdGhlbiBjYWxsaW5nIGl0ZXIgb24gaXQgc2hvdWxkCisgICAgICAgICMgcmV0dXJuIHRoZSBpdGVyYXRvciB1bmNoYW5nZWQKKyAgICAgICAgcmV0dXJuIGl0ZXIocmV0X3ZhbCkKKyAgICByZXR1cm4gX19pdGVyX18KKworX3NpZGVfZWZmZWN0X21ldGhvZHMgPSB7CisgICAgJ19fZXFfXyc6IF9nZXRfZXEsCisgICAgJ19fbmVfXyc6IF9nZXRfbmUsCisgICAgJ19faXRlcl9fJzogX2dldF9pdGVyLAorfQorCisKKworZGVmIF9zZXRfcmV0dXJuX3ZhbHVlKG1vY2ssIG1ldGhvZCwgbmFtZSk6CisgICAgZml4ZWQgPSBfcmV0dXJuX3ZhbHVlcy5nZXQobmFtZSwgREVGQVVMVCkKKyAgICBpZiBmaXhlZCBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgbWV0aG9kLnJldHVybl92YWx1ZSA9IGZpeGVkCisgICAgICAgIHJldHVybgorCisgICAgcmV0dXJuX2NhbHVsYXRvciA9IF9jYWxjdWxhdGVfcmV0dXJuX3ZhbHVlLmdldChuYW1lKQorICAgIGlmIHJldHVybl9jYWx1bGF0b3IgaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHJldHVybl9jYWx1bGF0b3IobW9jaykKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBYWFhYIHdoeSBkbyB3ZSByZXR1cm4gQXR0cmlidXRlRXJyb3IgaGVyZT8KKyAgICAgICAgICAgICMgICAgICBzZXQgaXQgYXMgYSBzaWRlX2VmZmVjdCBpbnN0ZWFkPworICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgbWV0aG9kLnJldHVybl92YWx1ZSA9IHJldHVybl92YWx1ZQorICAgICAgICByZXR1cm4KKworICAgIHNpZGVfZWZmZWN0b3IgPSBfc2lkZV9lZmZlY3RfbWV0aG9kcy5nZXQobmFtZSkKKyAgICBpZiBzaWRlX2VmZmVjdG9yIGlzIG5vdCBOb25lOgorICAgICAgICBtZXRob2Quc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdG9yKG1vY2spCisKKworCitjbGFzcyBNYWdpY01peGluKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgX3NhZmVfc3VwZXIoTWFnaWNNaXhpbiwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCisKKworICAgIGRlZiBfbW9ja19zZXRfbWFnaWNzKHNlbGYpOgorICAgICAgICB0aGVzZV9tYWdpY3MgPSBfbWFnaWNzCisKKyAgICAgICAgaWYgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGhlc2VfbWFnaWNzID0gX21hZ2ljcy5pbnRlcnNlY3Rpb24oc2VsZi5fbW9ja19tZXRob2RzKQorCisgICAgICAgICAgICByZW1vdmVfbWFnaWNzID0gc2V0KCkKKyAgICAgICAgICAgIHJlbW92ZV9tYWdpY3MgPSBfbWFnaWNzIC0gdGhlc2VfbWFnaWNzCisKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiByZW1vdmVfbWFnaWNzOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5IGluIHR5cGUoc2VsZikuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHVubmVlZGVkIG1hZ2ljIG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgZGVsYXR0cihzZWxmLCBlbnRyeSkKKworICAgICAgICAjIGRvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBhdHRyaWJ1dGVzIGlmIGNhbGxlZCBhIHNlY29uZCB0aW1lCisgICAgICAgIHRoZXNlX21hZ2ljcyA9IHRoZXNlX21hZ2ljcyAtIHNldCh0eXBlKHNlbGYpLl9fZGljdF9fKQorCisgICAgICAgIF90eXBlID0gdHlwZShzZWxmKQorICAgICAgICBmb3IgZW50cnkgaW4gdGhlc2VfbWFnaWNzOgorICAgICAgICAgICAgc2V0YXR0cihfdHlwZSwgZW50cnksIE1hZ2ljUHJveHkoZW50cnksIHNlbGYpKQorCisKKworY2xhc3MgTm9uQ2FsbGFibGVNYWdpY01vY2soTWFnaWNNaXhpbiwgTm9uQ2FsbGFibGVNb2NrKToKKyAgICAiIiJBIHZlcnNpb24gb2YgYE1hZ2ljTW9ja2AgdGhhdCBpc24ndCBjYWxsYWJsZS4iIiIKKyAgICBkZWYgbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSk6CisgICAgICAgICIiIkFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKyAgICAgICAgc2VsZi5fbW9ja19zZXRfbWFnaWNzKCkKKworCisKK2NsYXNzIE1hZ2ljTW9jayhNYWdpY01peGluLCBNb2NrKToKKyAgICAiIiIKKyAgICBNYWdpY01vY2sgaXMgYSBzdWJjbGFzcyBvZiBNb2NrIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMKKyAgICBvZiBtb3N0IG9mIHRoZSBtYWdpYyBtZXRob2RzLiBZb3UgY2FuIHVzZSBNYWdpY01vY2sgd2l0aG91dCBoYXZpbmcgdG8KKyAgICBjb25maWd1cmUgdGhlIG1hZ2ljIG1ldGhvZHMgeW91cnNlbGYuCisKKyAgICBJZiB5b3UgdXNlIHRoZSBgc3BlY2Agb3IgYHNwZWNfc2V0YCBhcmd1bWVudHMgdGhlbiAqb25seSogbWFnaWMKKyAgICBtZXRob2RzIHRoYXQgZXhpc3QgaW4gdGhlIHNwZWMgd2lsbCBiZSBjcmVhdGVkLgorCisgICAgQXR0cmlidXRlcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZiBhIGBNYWdpY01vY2tgIHdpbGwgYWxzbyBiZSBgTWFnaWNNb2Nrc2AuCisgICAgIiIiCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisgICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCisKKworCitjbGFzcyBNYWdpY1Byb3h5KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhcmVudCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBtID0gc2VsZi5jcmVhdGVfbW9jaygpCisgICAgICAgIHJldHVybiBtKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBjcmVhdGVfbW9jayhzZWxmKToKKyAgICAgICAgZW50cnkgPSBzZWxmLm5hbWUKKyAgICAgICAgcGFyZW50ID0gc2VsZi5wYXJlbnQKKyAgICAgICAgbSA9IHBhcmVudC5fZ2V0X2NoaWxkX21vY2sobmFtZT1lbnRyeSwgX25ld19uYW1lPWVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1wYXJlbnQpCisgICAgICAgIHNldGF0dHIocGFyZW50LCBlbnRyeSwgbSkKKyAgICAgICAgX3NldF9yZXR1cm5fdmFsdWUocGFyZW50LCBtLCBlbnRyeSkKKyAgICAgICAgcmV0dXJuIG0KKworICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgX3R5cGU9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV9tb2NrKCkKKworCisKK2NsYXNzIF9BTlkob2JqZWN0KToKKyAgICAiQSBoZWxwZXIgb2JqZWN0IHRoYXQgY29tcGFyZXMgZXF1YWwgdG8gZXZlcnl0aGluZy4iCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8QU5ZPicKKworQU5ZID0gX0FOWSgpCisKKworCitkZWYgX2Zvcm1hdF9jYWxsX3NpZ25hdHVyZShuYW1lLCBhcmdzLCBrd2FyZ3MpOgorICAgIG1lc3NhZ2UgPSAnJXMoJSVzKScgJSBuYW1lCisgICAgZm9ybWF0dGVkX2FyZ3MgPSAnJworICAgIGFyZ3Nfc3RyaW5nID0gJywgJy5qb2luKFtyZXByKGFyZykgZm9yIGFyZyBpbiBhcmdzXSkKKyAgICBrd2FyZ3Nfc3RyaW5nID0gJywgJy5qb2luKFsKKyAgICAgICAgJyVzPSVyJyAlIChrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKQorICAgIF0pCisgICAgaWYgYXJnc19zdHJpbmc6CisgICAgICAgIGZvcm1hdHRlZF9hcmdzID0gYXJnc19zdHJpbmcKKyAgICBpZiBrd2FyZ3Nfc3RyaW5nOgorICAgICAgICBpZiBmb3JtYXR0ZWRfYXJnczoKKyAgICAgICAgICAgIGZvcm1hdHRlZF9hcmdzICs9ICcsICcKKyAgICAgICAgZm9ybWF0dGVkX2FyZ3MgKz0ga3dhcmdzX3N0cmluZworCisgICAgcmV0dXJuIG1lc3NhZ2UgJSBmb3JtYXR0ZWRfYXJncworCisKKworY2xhc3MgX0NhbGwodHVwbGUpOgorICAgICIiIgorICAgIEEgdHVwbGUgZm9yIGhvbGRpbmcgdGhlIHJlc3VsdHMgb2YgYSBjYWxsIHRvIGEgbW9jaywgZWl0aGVyIGluIHRoZSBmb3JtCisgICAgYChhcmdzLCBrd2FyZ3MpYCBvciBgKG5hbWUsIGFyZ3MsIGt3YXJncylgLgorCisgICAgSWYgYXJncyBvciBrd2FyZ3MgYXJlIGVtcHR5IHRoZW4gYSBjYWxsIHR1cGxlIHdpbGwgY29tcGFyZSBlcXVhbCB0bworICAgIGEgdHVwbGUgd2l0aG91dCB0aG9zZSB2YWx1ZXMuIFRoaXMgbWFrZXMgY29tcGFyaXNvbnMgbGVzcyB2ZXJib3NlOjoKKworICAgICAgICBfQ2FsbCgoJ25hbWUnLCAoKSwge30pKSA9PSAoJ25hbWUnLCkKKyAgICAgICAgX0NhbGwoKCduYW1lJywgKDEsKSwge30pKSA9PSAoJ25hbWUnLCAoMSwpKQorICAgICAgICBfQ2FsbCgoKCksIHsnYSc6ICdiJ30pKSA9PSAoeydhJzogJ2InfSwpCisKKyAgICBUaGUgYF9DYWxsYCBvYmplY3QgcHJvdmlkZXMgYSB1c2VmdWwgc2hvcnRjdXQgZm9yIGNvbXBhcmluZyB3aXRoIGNhbGw6OgorCisgICAgICAgIF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSkgPT0gY2FsbCgxLCAyLCBhPTMpCisgICAgICAgIF9DYWxsKCgnZm9vJywgKDEsIDIpLCB7J2EnOiAzfSkpID09IGNhbGwuZm9vKDEsIDIsIGE9MykKKworICAgIElmIHRoZSBfQ2FsbCBoYXMgbm8gbmFtZSB0aGVuIGl0IHdpbGwgbWF0Y2ggYW55IG5hbWUuCisgICAgIiIiCisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZT0oKSwgbmFtZT1Ob25lLCBwYXJlbnQ9Tm9uZSwgdHdvPUZhbHNlLAorICAgICAgICAgICAgICAgIGZyb21fa2FsbD1UcnVlKToKKyAgICAgICAgbmFtZSA9ICcnCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBfbGVuID0gbGVuKHZhbHVlKQorICAgICAgICBpZiBfbGVuID09IDM6CisgICAgICAgICAgICBuYW1lLCBhcmdzLCBrd2FyZ3MgPSB2YWx1ZQorICAgICAgICBlbGlmIF9sZW4gPT0gMjoKKyAgICAgICAgICAgIGZpcnN0LCBzZWNvbmQgPSB2YWx1ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaXJzdCwgc3RyKToKKyAgICAgICAgICAgICAgICBuYW1lID0gZmlyc3QKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlY29uZCwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICBhcmdzID0gc2Vjb25kCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzID0gc2Vjb25kCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IGZpcnN0LCBzZWNvbmQKKyAgICAgICAgZWxpZiBfbGVuID09IDE6CisgICAgICAgICAgICB2YWx1ZSwgPSB2YWx1ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICAgICBuYW1lID0gdmFsdWUKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSB2YWx1ZQorCisgICAgICAgIGlmIHR3bzoKKyAgICAgICAgICAgIHJldHVybiB0dXBsZS5fX25ld19fKGNscywgKGFyZ3MsIGt3YXJncykpCisKKyAgICAgICAgcmV0dXJuIHR1cGxlLl9fbmV3X18oY2xzLCAobmFtZSwgYXJncywga3dhcmdzKSkKKworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPSgpLCBuYW1lPU5vbmUsIHBhcmVudD1Ob25lLCB0d289RmFsc2UsCisgICAgICAgICAgICAgICAgIGZyb21fa2FsbD1UcnVlKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLmZyb21fa2FsbCA9IGZyb21fa2FsbAorCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgb3RoZXIgaXMgQU5ZOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGVuX290aGVyID0gbGVuKG90aGVyKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgc2VsZl9uYW1lID0gJycKKyAgICAgICAgaWYgbGVuKHNlbGYpID09IDI6CisgICAgICAgICAgICBzZWxmX2FyZ3MsIHNlbGZfa3dhcmdzID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZl9uYW1lLCBzZWxmX2FyZ3MsIHNlbGZfa3dhcmdzID0gc2VsZgorCisgICAgICAgIG90aGVyX25hbWUgPSAnJworICAgICAgICBpZiBsZW5fb3RoZXIgPT0gMDoKKyAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9ICgpLCB7fQorICAgICAgICBlbGlmIGxlbl9vdGhlciA9PSAzOgorICAgICAgICAgICAgb3RoZXJfbmFtZSwgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gb3RoZXIKKyAgICAgICAgZWxpZiBsZW5fb3RoZXIgPT0gMToKKyAgICAgICAgICAgIHZhbHVlLCA9IG90aGVyCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgb3RoZXJfYXJncyA9IHZhbHVlCisgICAgICAgICAgICAgICAgb3RoZXJfa3dhcmdzID0ge30KKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICAgICBvdGhlcl9uYW1lID0gdmFsdWUKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwge30KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3RoZXJfYXJncyA9ICgpCisgICAgICAgICAgICAgICAgb3RoZXJfa3dhcmdzID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgbGVuIDIKKyAgICAgICAgICAgICMgY291bGQgYmUgKG5hbWUsIGFyZ3MpIG9yIChuYW1lLCBrd2FyZ3MpIG9yIChhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICBmaXJzdCwgc2Vjb25kID0gb3RoZXIKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlyc3QsIHN0cik6CisgICAgICAgICAgICAgICAgb3RoZXJfbmFtZSA9IGZpcnN0CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmQsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gc2Vjb25kLCB7fQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9ICgpLCBzZWNvbmQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gZmlyc3QsIHNlY29uZAorCisgICAgICAgIGlmIHNlbGZfbmFtZSBhbmQgb3RoZXJfbmFtZSAhPSBzZWxmX25hbWU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjIHRoaXMgb3JkZXIgaXMgaW1wb3J0YW50IGZvciBBTlkgdG8gd29yayEKKyAgICAgICAgcmV0dXJuIChvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MpID09IChzZWxmX2FyZ3MsIHNlbGZfa3dhcmdzKQorCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKKworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIHNlbGYubmFtZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF9DYWxsKCgnJywgYXJncywga3dhcmdzKSwgbmFtZT0nKCknKQorCisgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKyAnKCknCisgICAgICAgIHJldHVybiBfQ2FsbCgoc2VsZi5uYW1lLCBhcmdzLCBrd2FyZ3MpLCBuYW1lPW5hbWUsIHBhcmVudD1zZWxmKQorCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgIGlmIHNlbGYubmFtZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF9DYWxsKG5hbWU9YXR0ciwgZnJvbV9rYWxsPUZhbHNlKQorICAgICAgICBuYW1lID0gJyVzLiVzJyAlIChzZWxmLm5hbWUsIGF0dHIpCisgICAgICAgIHJldHVybiBfQ2FsbChuYW1lPW5hbWUsIHBhcmVudD1zZWxmLCBmcm9tX2thbGw9RmFsc2UpCisKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuZnJvbV9rYWxsOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZSBvciAnY2FsbCcKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnKCknKToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwlcycgJSBuYW1lCisgICAgICAgICAgICByZXR1cm4gbmFtZQorCisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAyOgorICAgICAgICAgICAgbmFtZSA9ICdjYWxsJworICAgICAgICAgICAgYXJncywga3dhcmdzID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmFtZSwgYXJncywga3dhcmdzID0gc2VsZgorICAgICAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsJworICAgICAgICAgICAgZWxpZiBub3QgbmFtZS5zdGFydHN3aXRoKCcoKScpOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbC4lcycgJSBuYW1lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCVzJyAlIG5hbWUKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKQorCisKKyAgICBkZWYgY2FsbF9saXN0KHNlbGYpOgorICAgICAgICAiIiJGb3IgYSBjYWxsIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgbXVsdGlwbGUgY2FsbHMsIGBjYWxsX2xpc3RgCisgICAgICAgIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgaW50ZXJtZWRpYXRlIGNhbGxzIGFzIHdlbGwgYXMgdGhlCisgICAgICAgIGZpbmFsIGNhbGwuIiIiCisgICAgICAgIHZhbHMgPSBbXQorICAgICAgICB0aGluZyA9IHNlbGYKKyAgICAgICAgd2hpbGUgdGhpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiB0aGluZy5mcm9tX2thbGw6CisgICAgICAgICAgICAgICAgdmFscy5hcHBlbmQodGhpbmcpCisgICAgICAgICAgICB0aGluZyA9IHRoaW5nLnBhcmVudAorICAgICAgICByZXR1cm4gX0NhbGxMaXN0KHJldmVyc2VkKHZhbHMpKQorCisKK2NhbGwgPSBfQ2FsbChmcm9tX2thbGw9RmFsc2UpCisKKworCitkZWYgY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlLCBpbnN0YW5jZT1GYWxzZSwgX3BhcmVudD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBfbmFtZT1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiQ3JlYXRlIGEgbW9jayBvYmplY3QgdXNpbmcgYW5vdGhlciBvYmplY3QgYXMgYSBzcGVjLiBBdHRyaWJ1dGVzIG9uIHRoZQorICAgIG1vY2sgd2lsbCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9uIHRoZSBgc3BlY2Agb2JqZWN0IGFzIHRoZWlyCisgICAgc3BlYy4KKworICAgIEZ1bmN0aW9ucyBvciBtZXRob2RzIGJlaW5nIG1vY2tlZCB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQKKyAgICB0byBjaGVjayB0aGF0IHRoZXkgYXJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHNpZ25hdHVyZS4KKworICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdAorICAgIG9uIHRoZSBzcGVjIG9iamVjdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICBJZiBhIGNsYXNzIGlzIHVzZWQgYXMgYSBzcGVjIHRoZW4gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbW9jayAodGhlCisgICAgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzKSB3aWxsIGhhdmUgdGhlIHNhbWUgc3BlYy4gWW91IGNhbiB1c2UgYSBjbGFzcyBhcyB0aGUKKyAgICBzcGVjIGZvciBhbiBpbnN0YW5jZSBvYmplY3QgYnkgcGFzc2luZyBgaW5zdGFuY2U9VHJ1ZWAuIFRoZSByZXR1cm5lZCBtb2NrCisgICAgd2lsbCBvbmx5IGJlIGNhbGxhYmxlIGlmIGluc3RhbmNlcyBvZiB0aGUgbW9jayBhcmUgY2FsbGFibGUuCisKKyAgICBgY3JlYXRlX2F1dG9zcGVjYCBhbHNvIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQgdG8KKyAgICB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGNyZWF0ZWQgbW9jay4iIiIKKyAgICBpZiBfaXNfbGlzdChzcGVjKToKKyAgICAgICAgIyBjYW4ndCBwYXNzIGEgbGlzdCBpbnN0YW5jZSB0byB0aGUgbW9jayBjb25zdHJ1Y3RvciBhcyBpdCB3aWxsIGJlCisgICAgICAgICMgaW50ZXJwcmV0ZWQgYXMgYSBsaXN0IG9mIHN0cmluZ3MKKyAgICAgICAgc3BlYyA9IHR5cGUoc3BlYykKKworICAgIGlzX3R5cGUgPSBpc2luc3RhbmNlKHNwZWMsIHR5cGUpCisKKyAgICBfa3dhcmdzID0geydzcGVjJzogc3BlY30KKyAgICBpZiBzcGVjX3NldDoKKyAgICAgICAgX2t3YXJncyA9IHsnc3BlY19zZXQnOiBzcGVjfQorICAgIGVsaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAjIE5vbmUgd2UgbW9jayB3aXRoIGEgbm9ybWFsIG1vY2sgd2l0aG91dCBhIHNwZWMKKyAgICAgICAgX2t3YXJncyA9IHt9CisKKyAgICBfa3dhcmdzLnVwZGF0ZShrd2FyZ3MpCisKKyAgICBLbGFzcyA9IE1hZ2ljTW9jaworICAgIGlmIHR5cGUoc3BlYykgaW4gRGVzY3JpcHRvclR5cGVzOgorICAgICAgICAjIGRlc2NyaXB0b3JzIGRvbid0IGhhdmUgYSBzcGVjCisgICAgICAgICMgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoYXQgdHlwZSB0aGV5IHJldHVybgorICAgICAgICBfa3dhcmdzID0ge30KKyAgICBlbGlmIG5vdCBfY2FsbGFibGUoc3BlYyk6CisgICAgICAgIEtsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKKyAgICBlbGlmIGlzX3R5cGUgYW5kIGluc3RhbmNlIGFuZCBub3QgX2luc3RhbmNlX2NhbGxhYmxlKHNwZWMpOgorICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICBfbmV3X25hbWUgPSBfbmFtZQorICAgIGlmIF9wYXJlbnQgaXMgTm9uZToKKyAgICAgICAgIyBmb3IgYSB0b3AgbGV2ZWwgb2JqZWN0IG5vIF9uZXdfbmFtZSBzaG91bGQgYmUgc2V0CisgICAgICAgIF9uZXdfbmFtZSA9ICcnCisKKyAgICBtb2NrID0gS2xhc3MocGFyZW50PV9wYXJlbnQsIF9uZXdfcGFyZW50PV9wYXJlbnQsIF9uZXdfbmFtZT1fbmV3X25hbWUsCisgICAgICAgICAgICAgICAgIG5hbWU9X25hbWUsICoqX2t3YXJncykKKworICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICMgc2hvdWxkIG9ubHkgaGFwcGVuIGF0IHRoZSB0b3AgbGV2ZWwgYmVjYXVzZSB3ZSBkb24ndAorICAgICAgICAjIHJlY3Vyc2UgZm9yIGZ1bmN0aW9ucworICAgICAgICBtb2NrID0gX3NldF9zaWduYXR1cmUobW9jaywgc3BlYykKKyAgICBlbHNlOgorICAgICAgICBfY2hlY2tfc2lnbmF0dXJlKHNwZWMsIG1vY2ssIGlzX3R5cGUsIGluc3RhbmNlKQorCisgICAgaWYgX3BhcmVudCBpcyBub3QgTm9uZSBhbmQgbm90IGluc3RhbmNlOgorICAgICAgICBfcGFyZW50Ll9tb2NrX2NoaWxkcmVuW19uYW1lXSA9IG1vY2sKKworICAgIGlmIGlzX3R5cGUgYW5kIG5vdCBpbnN0YW5jZSBhbmQgJ3JldHVybl92YWx1ZScgbm90IGluIGt3YXJnczoKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQsIGluc3RhbmNlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lPScoKScsIF9wYXJlbnQ9bW9jaykKKworICAgIGZvciBlbnRyeSBpbiBkaXIoc3BlYyk6CisgICAgICAgIGlmIF9pc19tYWdpYyhlbnRyeSk6CisgICAgICAgICAgICAjIE1hZ2ljTW9jayBhbHJlYWR5IGRvZXMgdGhlIHVzZWZ1bCBtYWdpYyBtZXRob2RzIGZvciB1cworICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIFhYWFggZG8gd2UgbmVlZCBhIGJldHRlciB3YXkgb2YgZ2V0dGluZyBhdHRyaWJ1dGVzIHdpdGhvdXQKKyAgICAgICAgIyB0cmlnZ2VyaW5nIGNvZGUgZXhlY3V0aW9uICg/KSBQcm9iYWJseSBub3QgLSB3ZSBuZWVkIHRoZSBhY3R1YWwKKyAgICAgICAgIyBvYmplY3QgdG8gbW9jayBpdCBzbyB3ZSB3b3VsZCByYXRoZXIgdHJpZ2dlciBhIHByb3BlcnR5IHRoYW4gbW9jaworICAgICAgICAjIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9yLiBMaWtld2lzZSB3ZSB3YW50IHRvIG1vY2sgb3V0IGR5bmFtaWNhbGx5CisgICAgICAgICMgcHJvdmlkZWQgYXR0cmlidXRlcy4KKyAgICAgICAgIyBYWFhYIHdoYXQgYWJvdXQgYXR0cmlidXRlcyB0aGF0IHJhaXNlIGV4Y2VwdGlvbnMgb3RoZXIgdGhhbgorICAgICAgICAjIEF0dHJpYnV0ZUVycm9yIG9uIGJlaW5nIGZldGNoZWQ/CisgICAgICAgICMgd2UgY291bGQgYmUgcmVzaWxpZW50IGFnYWluc3QgaXQsIG9yIGNhdGNoIGFuZCBwcm9wYWdhdGUgdGhlCisgICAgICAgICMgZXhjZXB0aW9uIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBmZXRjaGVkIGZyb20gdGhlIG1vY2sKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2luYWwgPSBnZXRhdHRyKHNwZWMsIGVudHJ5KQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGt3YXJncyA9IHsnc3BlYyc6IG9yaWdpbmFsfQorICAgICAgICBpZiBzcGVjX3NldDoKKyAgICAgICAgICAgIGt3YXJncyA9IHsnc3BlY19zZXQnOiBvcmlnaW5hbH0KKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvcmlnaW5hbCwgRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICAgICBuZXcgPSBfU3BlY1N0YXRlKG9yaWdpbmFsLCBzcGVjX3NldCwgbW9jaywgZW50cnksIGluc3RhbmNlKQorICAgICAgICAgICAgbW9jay5fbW9ja19jaGlsZHJlbltlbnRyeV0gPSBuZXcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhcmVudCA9IG1vY2sKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICAgICAgICAgcGFyZW50ID0gbW9jay5tb2NrCisKKyAgICAgICAgICAgIG5ldyA9IE1hZ2ljTW9jayhwYXJlbnQ9cGFyZW50LCBuYW1lPWVudHJ5LCBfbmV3X25hbWU9ZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9cGFyZW50LCAqKmt3YXJncykKKyAgICAgICAgICAgIG1vY2suX21vY2tfY2hpbGRyZW5bZW50cnldID0gbmV3CisgICAgICAgICAgICBza2lwZmlyc3QgPSBfbXVzdF9za2lwKHNwZWMsIGVudHJ5LCBpc190eXBlKQorICAgICAgICAgICAgX2NoZWNrX3NpZ25hdHVyZShvcmlnaW5hbCwgbmV3LCBza2lwZmlyc3Q9c2tpcGZpcnN0KQorCisgICAgICAgICMgc28gZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBfc2V0X3NpZ25hdHVyZSBiZWNvbWUgaW5zdGFuY2UgYXR0cmlidXRlcywKKyAgICAgICAgIyAqcGx1cyogdGhlaXIgdW5kZXJseWluZyBtb2NrIGV4aXN0cyBpbiBfbW9ja19jaGlsZHJlbiBvZiB0aGUgcGFyZW50CisgICAgICAgICMgbW9jay4gQWRkaW5nIHRvIF9tb2NrX2NoaWxkcmVuIG1heSBiZSB1bm5lY2Vzc2FyeSB3aGVyZSB3ZSBhcmUgYWxzbworICAgICAgICAjIHNldHRpbmcgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlPworICAgICAgICBpZiBpc2luc3RhbmNlKG5ldywgRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICAgICBzZXRhdHRyKG1vY2ssIGVudHJ5LCBuZXcpCisKKyAgICByZXR1cm4gbW9jaworCisKK2RlZiBfbXVzdF9za2lwKHNwZWMsIGVudHJ5LCBpc190eXBlKToKKyAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLCB0eXBlKToKKyAgICAgICAgaWYgZW50cnkgaW4gZ2V0YXR0cihzcGVjLCAnX19kaWN0X18nLCB7fSk6CisgICAgICAgICAgICAjIGluc3RhbmNlIGF0dHJpYnV0ZSAtIHNob3VsZG4ndCBza2lwCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgc3BlYyA9IHNwZWMuX19jbGFzc19fCisKKyAgICBmb3Iga2xhc3MgaW4gc3BlYy5fX21yb19fOgorICAgICAgICByZXN1bHQgPSBrbGFzcy5fX2RpY3RfXy5nZXQoZW50cnksIERFRkFVTFQpCisgICAgICAgIGlmIHJlc3VsdCBpcyBERUZBVUxUOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXN1bHQsIChzdGF0aWNtZXRob2QsIGNsYXNzbWV0aG9kKSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIGlzX3R5cGUKKworICAgICMgc2hvdWxkbid0IGdldCBoZXJlIHVubGVzcyBmdW5jdGlvbiBpcyBhIGR5bmFtaWNhbGx5IHByb3ZpZGVkIGF0dHJpYnV0ZQorICAgICMgWFhYWCB1bnRlc3RlZCBiZWhhdmlvdXIKKyAgICByZXR1cm4gaXNfdHlwZQorCisKK2RlZiBfZ2V0X2NsYXNzKG9iaik6CisgICAgdHJ5OgorICAgICAgICByZXR1cm4gb2JqLl9fY2xhc3NfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgIyBpdCBpcyBwb3NzaWJsZSBmb3Igb2JqZWN0cyB0byBoYXZlIG5vIF9fY2xhc3NfXworICAgICAgICByZXR1cm4gdHlwZShvYmopCisKKworY2xhc3MgX1NwZWNTdGF0ZShvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlLCBwYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgbmFtZT1Ob25lLCBpZHM9Tm9uZSwgaW5zdGFuY2U9RmFsc2UpOgorICAgICAgICBzZWxmLnNwZWMgPSBzcGVjCisgICAgICAgIHNlbGYuaWRzID0gaWRzCisgICAgICAgIHNlbGYuc3BlY19zZXQgPSBzcGVjX3NldAorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLmluc3RhbmNlID0gaW5zdGFuY2UKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisKK0Z1bmN0aW9uVHlwZXMgPSAoCisgICAgIyBweXRob24gZnVuY3Rpb24KKyAgICB0eXBlKGNyZWF0ZV9hdXRvc3BlYyksCisgICAgIyBpbnN0YW5jZSBtZXRob2QKKyAgICB0eXBlKEFOWS5fX2VxX18pLAorKQorCisKK2ZpbGVfc3BlYyA9IE5vbmUKKworCitkZWYgbW9ja19vcGVuKG1vY2s9Tm9uZSwgcmVhZF9kYXRhPScnKToKKyAgICAiIiIKKyAgICBBIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBtb2NrIHRvIHJlcGxhY2UgdGhlIHVzZSBvZiBgb3BlbmAuIEl0IHdvcmtzCisgICAgZm9yIGBvcGVuYCBjYWxsZWQgZGlyZWN0bHkgb3IgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKworICAgIFRoZSBgbW9ja2AgYXJndW1lbnQgaXMgdGhlIG1vY2sgb2JqZWN0IHRvIGNvbmZpZ3VyZS4gSWYgYE5vbmVgICh0aGUKKyAgICBkZWZhdWx0KSB0aGVuIGEgYE1hZ2ljTW9ja2Agd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UsIHdpdGggdGhlIEFQSSBsaW1pdGVkCisgICAgdG8gbWV0aG9kcyBvciBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBvbiBzdGFuZGFyZCBmaWxlIGhhbmRsZXMuCisKKyAgICBgcmVhZF9kYXRhYCBpcyBhIHN0cmluZyBmb3IgdGhlIGByZWFkYCBtZXRob2Qgb2YgdGhlIGZpbGUgaGFuZGxlIHRvIHJldHVybi4KKyAgICBUaGlzIGlzIGFuIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LgorICAgICIiIgorICAgIGdsb2JhbCBmaWxlX3NwZWMKKyAgICBpZiBmaWxlX3NwZWMgaXMgTm9uZToKKyAgICAgICAgaW1wb3J0IF9pbworICAgICAgICBmaWxlX3NwZWMgPSBsaXN0KHNldChkaXIoX2lvLlRleHRJT1dyYXBwZXIpKS51bmlvbihzZXQoZGlyKF9pby5CeXRlc0lPKSkpKQorCisgICAgaWYgbW9jayBpcyBOb25lOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKG5hbWU9J29wZW4nLCBzcGVjPW9wZW4pCisKKyAgICBoYW5kbGUgPSBNYWdpY01vY2soc3BlYz1maWxlX3NwZWMpCisgICAgaGFuZGxlLndyaXRlLnJldHVybl92YWx1ZSA9IE5vbmUKKyAgICBoYW5kbGUuX19lbnRlcl9fLnJldHVybl92YWx1ZSA9IGhhbmRsZQorICAgIGhhbmRsZS5yZWFkLnJldHVybl92YWx1ZSA9IHJlYWRfZGF0YQorCisgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKKyAgICByZXR1cm4gbW9jaworCisKK2NsYXNzIFByb3BlcnR5TW9jayhNb2NrKToKKyAgICAiIiIKKyAgICBBIG1vY2sgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHByb3BlcnR5LCBvciBvdGhlciBkZXNjcmlwdG9yLCBvbiBhIGNsYXNzLgorICAgIGBQcm9wZXJ0eU1vY2tgIHByb3ZpZGVzIGBfX2dldF9fYCBhbmQgYF9fc2V0X19gIG1ldGhvZHMgc28geW91IGNhbiBzcGVjaWZ5CisgICAgYSByZXR1cm4gdmFsdWUgd2hlbiBpdCBpcyBmZXRjaGVkLgorCisgICAgRmV0Y2hpbmcgYSBgUHJvcGVydHlNb2NrYCBpbnN0YW5jZSBmcm9tIGFuIG9iamVjdCBjYWxscyB0aGUgbW9jaywgd2l0aAorICAgIG5vIGFyZ3MuIFNldHRpbmcgaXQgY2FsbHMgdGhlIG1vY2sgd2l0aCB0aGUgdmFsdWUgYmVpbmcgc2V0LgorICAgICIiIgorICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gTWFnaWNNb2NrKCoqa3dhcmdzKQorCisgICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCBvYmpfdHlwZSk6CisgICAgICAgIHJldHVybiBzZWxmKCkKKyAgICBkZWYgX19zZXRfXyhzZWxmLCBvYmosIHZhbCk6CisgICAgICAgIHNlbGYodmFsKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weSBiL0xpYi91bml0dGVzdC9yZXN1bHQucHkKaW5kZXggNDRiZjE4Ni4uOTdlNTQyNiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQorKysgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCByZXN1bHQgb2JqZWN0IiIiCiAKLWltcG9ydCBvcwogaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weSBiL0xpYi91bml0dGVzdC90ZXN0L19faW5pdF9fLnB5CmluZGV4IDk5YjczMGIuLmNkYWU4YTcgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L19faW5pdF9fLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L19faW5pdF9fLnB5CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZG5hbWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQogICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUpKQorICAgIHN1aXRlLmFkZFRlc3QobG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCd1bml0dGVzdC50ZXN0LnRlc3Rtb2NrJykpCiAgICAgcmV0dXJuIHN1aXRlCiAKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9fdGVzdF93YXJuaW5ncy5weQppbmRleCBkMGJlMThkLi41Y2JmYjUzIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC9fdGVzdF93YXJuaW5ncy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC9fdGVzdF93YXJuaW5ncy5weQpAQCAtMTAsNyArMTAsNiBAQAogU2VlICMxMDUzNS4KICIiIgogCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKaW5kZXggYTFkMjBlYi4uZDQzZmU1YSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBwcm9kdWN0CiAKIAogY2xhc3MgVGVzdF9Bc3NlcnRpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE0NSw2ICsxNDYsMTQgQEAKICAgICAgICAgc2VsZi50ZXN0YWJsZVRydWUuX2Zvcm1hdE1lc3NhZ2Uob25lLCAnXHVGRkZEJykKIAogICAgIGRlZiBhc3NlcnRNZXNzYWdlcyhzZWxmLCBtZXRob2ROYW1lLCBhcmdzLCBlcnJvcnMpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCBtZXRob2ROYW1lKCphcmdzKSByYWlzZXMgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZXMuCisgICAgICAgIGVycm9ycyBzaG91bGQgYmUgYSBsaXN0IG9mIDQgcmVnZXggdGhhdCBtYXRjaCB0aGUgZXJyb3Igd2hlbjoKKyAgICAgICAgICAxKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBubyBtc2cgcGFzc2VkOworICAgICAgICAgIDIpIGxvbmdNZXNzYWdlID0gRmFsc2UgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICAgMykgbG9uZ01lc3NhZ2UgPSBUcnVlIGFuZCBubyBtc2cgcGFzc2VkOworICAgICAgICAgIDQpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbXNnIHBhc3NlZDsKKyAgICAgICAgIiIiCiAgICAgICAgIGRlZiBnZXRNZXRob2QoaSk6CiAgICAgICAgICAgICB1c2VUZXN0YWJsZUZhbHNlICA9IGkgPCAyCiAgICAgICAgICAgICBpZiB1c2VUZXN0YWJsZUZhbHNlOgpAQCAtMjg0LDMgKzI5Myw2NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUkIiwgIl5vb3BzJCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJedW5leHBlY3RlZGx5IGlkZW50aWNhbDogTm9uZSQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUgOiBvb3BzJCJdKQorCisKKyAgICBkZWYgYXNzZXJ0TWVzc2FnZXNDTShzZWxmLCBtZXRob2ROYW1lLCBhcmdzLCBmdW5jLCBlcnJvcnMpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlcyBhcmUgcmFpc2VkIHdoaWxlIGV4ZWN1dGluZzoKKyAgICAgICAgICB3aXRoIG1ldGhvZCgqYXJncyk6CisgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAqZXJyb3JzKiBzaG91bGQgYmUgYSBsaXN0IG9mIDQgcmVnZXggdGhhdCBtYXRjaCB0aGUgZXJyb3Igd2hlbjoKKyAgICAgICAgICAxKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBubyBtc2cgcGFzc2VkOworICAgICAgICAgIDIpIGxvbmdNZXNzYWdlID0gRmFsc2UgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICAgMykgbG9uZ01lc3NhZ2UgPSBUcnVlIGFuZCBubyBtc2cgcGFzc2VkOworICAgICAgICAgIDQpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbXNnIHBhc3NlZDsKKyAgICAgICAgIiIiCisgICAgICAgIHAgPSBwcm9kdWN0KChzZWxmLnRlc3RhYmxlRmFsc2UsIHNlbGYudGVzdGFibGVUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgKHt9LCB7Im1zZyI6ICJvb3BzIn0pKQorICAgICAgICBmb3IgKGNscywga3dhcmdzKSwgZXJyIGluIHppcChwLCBlcnJvcnMpOgorICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihjbHMsIG1ldGhvZE5hbWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2xzLmZhaWx1cmVFeGNlcHRpb24sIGVycik6CisgICAgICAgICAgICAgICAgd2l0aCBtZXRob2QoKmFyZ3MsICoqa3dhcmdzKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgZnVuYygpCisKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRSYWlzZXMnLCAoVHlwZUVycm9yLCksIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkIDogb29wcyQnXSkKKworICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzUmVnZXgoc2VsZik6CisgICAgICAgICMgdGVzdCBlcnJvciBub3QgcmFpc2VkCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCAoVHlwZUVycm9yLCAndW51c2VkIHJlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCA6IG9vcHMkJ10pCisgICAgICAgICMgdGVzdCBlcnJvciByYWlzZWQgYnV0IHdpdGggd3JvbmcgbWVzc2FnZQorICAgICAgICBkZWYgcmFpc2Vfd3JvbmdfbWVzc2FnZSgpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFJhaXNlc1JlZ2V4JywgKFR5cGVFcnJvciwgJ3JlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV93cm9uZ19tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIgOiBvb3BzJCddKQorCisgICAgZGVmIHRlc3RBc3NlcnRXYXJucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRXYXJucycsIChVc2VyV2FybmluZywpLCBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCA6IG9vcHMkJ10pCisKKyAgICBkZWYgdGVzdEFzc2VydFdhcm5zUmVnZXgoc2VsZik6CisgICAgICAgICMgdGVzdCBlcnJvciBub3QgcmFpc2VkCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnNSZWdleCcsIChVc2VyV2FybmluZywgJ3VudXNlZCByZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQgOiBvb3BzJCddKQorICAgICAgICAjIHRlc3Qgd2FybmluZyByYWlzZWQgYnV0IHdpdGggd3JvbmcgbWVzc2FnZQorICAgICAgICBkZWYgcmFpc2Vfd3JvbmdfbWVzc2FnZSgpOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybignZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRXYXJuc1JlZ2V4JywgKFVzZXJXYXJuaW5nLCAncmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX3dyb25nX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiA6IG9vcHMkJ10pCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKaW5kZXggYzc0YTUzOS4uZmRiMmU3OCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQpAQCAtNCw2ICs0LDcgQEAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgd2Vha3JlZgogaW1wb3J0IGluc3BlY3QKIAogZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQpAQCAtMzg2LDI3ICszODcsNjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEZvbygpLmlkKCksIHN0cikKIAogCi0gICAgIyAiSWYgcmVzdWx0IGlzIG9taXR0ZWQgb3IgTm9uZSwgYSB0ZW1wb3JhcnkgcmVzdWx0IG9iamVjdCBpcyBjcmVhdGVkCi0gICAgIyBhbmQgdXNlZCwgYnV0IGlzIG5vdCBtYWRlIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLiBBcyBUZXN0Q2FzZSBvd25zIHRoZQorICAgICMgIklmIHJlc3VsdCBpcyBvbWl0dGVkIG9yIE5vbmUsIGEgdGVtcG9yYXJ5IHJlc3VsdCBvYmplY3QgaXMgY3JlYXRlZCwKKyAgICAjIHVzZWQsIGFuZCBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLiBBcyBUZXN0Q2FzZSBvd25zIHRoZQogICAgICMgdGVtcG9yYXJ5IHJlc3VsdCBzdGFydFRlc3RSdW4gYW5kIHN0b3BUZXN0UnVuIGFyZSBjYWxsZWQuCiAKICAgICBkZWYgdGVzdF9ydW5fX3VzZXNfZGVmYXVsdFRlc3RSZXN1bHQoc2VsZik6CiAgICAgICAgIGV2ZW50cyA9IFtdCisgICAgICAgIGRlZmF1bHRSZXN1bHQgPSBMb2dnaW5nUmVzdWx0KGV2ZW50cykKIAogICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CiAgICAgICAgICAgICAgICAgZXZlbnRzLmFwcGVuZCgndGVzdCcpCiAKICAgICAgICAgICAgIGRlZiBkZWZhdWx0VGVzdFJlc3VsdChzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTG9nZ2luZ1Jlc3VsdChldmVudHMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRSZXN1bHQKIAogICAgICAgICAjIE1ha2UgcnVuKCkgZmluZCBhIHJlc3VsdCBvYmplY3Qgb24gaXRzIG93bgotICAgICAgICBGb28oJ3Rlc3QnKS5ydW4oKQorICAgICAgICByZXN1bHQgPSBGb28oJ3Rlc3QnKS5ydW4oKQogCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVzdWx0LCBkZWZhdWx0UmVzdWx0KQogICAgICAgICBleHBlY3RlZCA9IFsnc3RhcnRUZXN0UnVuJywgJ3N0YXJ0VGVzdCcsICd0ZXN0JywgJ2FkZFN1Y2Nlc3MnLAogICAgICAgICAgICAgJ3N0b3BUZXN0JywgJ3N0b3BUZXN0UnVuJ10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHMsIGV4cGVjdGVkKQogCisKKyAgICAjICJUaGUgcmVzdWx0IG9iamVjdCBpcyByZXR1cm5lZCB0byBydW4ncyBjYWxsZXIiCisgICAgZGVmIHRlc3RfcnVuX19yZXR1cm5zX2dpdmVuX3Jlc3VsdChzZWxmKToKKworICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRlc3RSZXN1bHQoKQorCisgICAgICAgIHJldHZhbCA9IEZvbygndGVzdCcpLnJ1bihyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCByZXN1bHQpCisKKworICAgICMgIlRoZSBzYW1lIGVmZmVjdCBbYXMgbWV0aG9kIHJ1bl0gbWF5IGJlIGhhZCBieSBzaW1wbHkgY2FsbGluZyB0aGUKKyAgICAjIFRlc3RDYXNlIGluc3RhbmNlLiIKKyAgICBkZWYgdGVzdF9jYWxsX19pbnZva2luZ19hbl9pbnN0YW5jZV9kZWxlZ2F0ZXNfdG9fcnVuKHNlbGYpOgorICAgICAgICByZXN1bHRJbiA9IHVuaXR0ZXN0LlRlc3RSZXN1bHQoKQorICAgICAgICByZXN1bHRPdXQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKworICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIHJlc3VsdEluKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRPdXQKKworICAgICAgICByZXR2YWwgPSBGb28oJ3Rlc3QnKShyZXN1bHRJbikKKworICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgcmVzdWx0T3V0KQorCisKICAgICBkZWYgdGVzdFNob3J0RGVzY3JpcHRpb25XaXRob3V0RG9jc3RyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnNob3J0RGVzY3JpcHRpb24oKSkKIApAQCAtMTE0MCw3ICsxMTc2LDYgQEAKICAgICAgICAgICAgIChzZWxmLmFzc2VydF8sIChUcnVlLCkpLAogICAgICAgICAgICAgKHNlbGYuZmFpbFVubGVzc1JhaXNlcywgKFR5cGVFcnJvciwgbGFtYmRhIF86IDMuMTQgKyAnc3BhbScpKSwKICAgICAgICAgICAgIChzZWxmLmZhaWxJZiwgKEZhbHNlLCkpLAotICAgICAgICAgICAgKHNlbGYuYXNzZXJ0U2FtZUVsZW1lbnRzLCAoWzEsIDEsIDIsIDNdLCBbMSwgMiwgM10pKSwKICAgICAgICAgICAgIChzZWxmLmFzc2VydERpY3RDb250YWluc1N1YnNldCwgKGRpY3QoYT0xLCBiPTIpLCBkaWN0KGE9MSwgYj0yLCBjPTMpKSksCiAgICAgICAgICAgICAoc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAsIChLZXlFcnJvciwgJ2ZvbycsIGxhbWJkYToge31bJ2ZvbyddKSksCiAgICAgICAgICAgICAoc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzLCAoJ2JhcicsICdiYXInKSksCkBAIC0xMTQ5LDE4ICsxMTg0LDIwIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgICAgICBtZXRoKCphcmdzKQogCi0gICAgZGVmIHRlc3REZXByZWNhdGVkRmFpbE1ldGhvZHMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhhdCB0aGUgZGVwcmVjYXRlZCBmYWlsKiBtZXRob2RzIGdldCByZW1vdmVkIGluIDMuMyIiIgorICAgICMgZGlzYWJsZSB0aGlzIHRlc3QgZm9yIG5vdy4gV2hlbiB0aGUgdmVyc2lvbiB3aGVyZSB0aGUgZmFpbCogbWV0aG9kcyB3aWxsCisgICAgIyBiZSByZW1vdmVkIGlzIGRlY2lkZWQsIHJlLWVuYWJsZSBpdCBhbmQgdXBkYXRlIHRoZSB2ZXJzaW9uCisgICAgZGVmIF90ZXN0RGVwcmVjYXRlZEZhaWxNZXRob2RzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGRlcHJlY2F0ZWQgZmFpbCogbWV0aG9kcyBnZXQgcmVtb3ZlZCBpbiAzLngiIiIKICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMyk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZGVwcmVjYXRlZF9uYW1lcyA9IFsKICAgICAgICAgICAgICdmYWlsSWZFcXVhbCcsICdmYWlsVW5sZXNzRXF1YWwnLCAnZmFpbFVubGVzc0FsbW9zdEVxdWFsJywKICAgICAgICAgICAgICdmYWlsSWZBbG1vc3RFcXVhbCcsICdmYWlsVW5sZXNzJywgJ2ZhaWxVbmxlc3NSYWlzZXMnLCAnZmFpbElmJywKLSAgICAgICAgICAgICdhc3NlcnRTYW1lRWxlbWVudHMnLCAnYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0JywKKyAgICAgICAgICAgICdhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQnLAogICAgICAgICBdCiAgICAgICAgIGZvciBkZXByZWNhdGVkX25hbWUgaW4gZGVwcmVjYXRlZF9uYW1lczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgotICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgZGVwcmVjYXRlZF9uYW1lKSAgIyByZW1vdmUgdGhlc2UgaW4gMy4zCisgICAgICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCBkZXByZWNhdGVkX25hbWUpICAjIHJlbW92ZSB0aGVzZSBpbiAzLngKIAogICAgIGRlZiB0ZXN0RGVlcGNvcHkoc2VsZik6CiAgICAgICAgICMgSXNzdWU6IDU2NjAKQEAgLTEyNjgsMyArMTMwNSwxMSBAQAogICAgICAgICAgICAga2xhc3MoJ3Rlc3Rfc29tZXRoaW5nJykucnVuKHJlc3VsdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5lcnJvcnMpLCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudGVzdHNSdW4sIDEpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdE5vQ3ljbGVzKHNlbGYpOgorICAgICAgICBjYXNlID0gdW5pdHRlc3QuVGVzdENhc2UoKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGNhc2UpCisgICAgICAgIHdpdGggc3VwcG9ydC5kaXNhYmxlX2djKCk6CisgICAgICAgICAgICBkZWwgY2FzZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3cigpKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQppbmRleCBmN2UzMWE1Li5kMWI5ZWY1IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQpAQCAtMjM5LDcgKzIzOSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnc2Rhc2Zhc2Zhc2RmJykKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCBzZGFzZmFzZmFzZGYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCiAKQEAgLTYxOSw3ICs2MTksNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnc2Rhc2Zhc2Zhc2RmJ10pCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgc2Rhc2Zhc2Zhc2RmIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMgZmFpbGVkIHRvIHJhaXNlIEltcG9ydEVycm9yIikKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CmluZGV4IGQ1ZDBmNWEuLjk3OTQ4NjggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKQEAgLTEzMSwyMyArMTMxLDYgQEAKICAgICAgICAgRmFrZVJ1bm5lci50ZXN0ID0gTm9uZQogICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSBGYWxzZQogCi0gICAgZGVmIHRlc3RIZWxwQW5kVW5rbm93bihzZWxmKToKLSAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQotICAgICAgICBkZWYgdXNhZ2VFeGl0KG1zZz1Ob25lKToKLSAgICAgICAgICAgIHByb2dyYW0ubXNnID0gbXNnCi0gICAgICAgICAgICBwcm9ncmFtLmV4aXQgPSBUcnVlCi0gICAgICAgIHByb2dyYW0udXNhZ2VFeGl0ID0gdXNhZ2VFeGl0Ci0KLSAgICAgICAgZm9yIG9wdCBpbiAnLWgnLCAnLUgnLCAnLS1oZWxwJzoKLSAgICAgICAgICAgIHByb2dyYW0uZXhpdCA9IEZhbHNlCi0gICAgICAgICAgICBwcm9ncmFtLnBhcnNlQXJncyhbTm9uZSwgb3B0XSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9ncmFtLmV4aXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9ncmFtLm1zZykKLQotICAgICAgICBwcm9ncmFtLnBhcnNlQXJncyhbTm9uZSwgJy0kJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9ncmFtLmV4aXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHByb2dyYW0ubXNnKQotCiAgICAgZGVmIHRlc3RWZXJib3NpdHkoc2VsZik6CiAgICAgICAgIHByb2dyYW0gPSBzZWxmLnByb2dyYW0KIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svX19pbml0X18ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2Q3YWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svX19pbml0X18ucHkKQEAgLTAsMCArMSwxNyBAQAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworCitoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorbG9hZGVyID0gdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXIKKworZGVmIGxvYWRfdGVzdHMoKmFyZ3MpOgorICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBmb3IgZm4gaW4gb3MubGlzdGRpcihoZXJlKToKKyAgICAgICAgaWYgZm4uc3RhcnRzd2l0aCgidGVzdCIpIGFuZCBmbi5lbmRzd2l0aCgiLnB5Iik6CisgICAgICAgICAgICBtb2RuYW1lID0gInVuaXR0ZXN0LnRlc3QudGVzdG1vY2suIiArIGZuWzotM10KKyAgICAgICAgICAgIF9faW1wb3J0X18obW9kbmFtZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZG5hbWVdCisgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkpCisgICAgcmV0dXJuIHN1aXRlCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDczODc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQpAQCAtMCwwICsxLDIzIEBACitpbXBvcnQgc3lzCisKK2RlZiBpc19pbnN0YW5jZShvYmosIGtsYXNzKToKKyAgICAiIiJWZXJzaW9uIG9mIGlzX2luc3RhbmNlIHRoYXQgZG9lc24ndCBhY2Nlc3MgX19jbGFzc19fIiIiCisgICAgcmV0dXJuIGlzc3ViY2xhc3ModHlwZShvYmopLCBrbGFzcykKKworCitjbGFzcyBTb21lQ2xhc3Mob2JqZWN0KToKKyAgICBjbGFzc19hdHRyaWJ1dGUgPSBOb25lCisKKyAgICBkZWYgd2liYmxlKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgWChvYmplY3QpOgorICAgIHBhc3MKKworCitkZWYgZXhhbWluZV93YXJuaW5ncyhmdW5jKToKKyAgICBkZWYgd3JhcHBlcigpOgorICAgICAgICB3aXRoIGNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3czoKKyAgICAgICAgICAgIGZ1bmMod3MpCisgICAgcmV0dXJuIHdyYXBwZXIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RjYWxsYWJsZS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RjYWxsYWJsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjJkZDAwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGNhbGxhYmxlLnB5CkBAIC0wLDAgKzEsMTQ3IEBACisjIENvcHlyaWdodCAoQykgMjAwNy0yMDEyIE1pY2hhZWwgRm9vcmQgJiB0aGUgbW9jayB0ZWFtCisjIEUtbWFpbDogZnV6enltYW4gQVQgdm9pZHNwYWNlIERPVCBvcmcgRE9UIHVrCisjIGh0dHA6Ly93d3cudm9pZHNwYWNlLm9yZy51ay9weXRob24vbW9jay8KKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgaXNfaW5zdGFuY2UsIFgsIFNvbWVDbGFzcworCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLAorICAgIE5vbkNhbGxhYmxlTW9jaywgcGF0Y2gsIGNyZWF0ZV9hdXRvc3BlYywKKyAgICBDYWxsYWJsZU1peGluCispCisKKworCitjbGFzcyBUZXN0Q2FsbGFibGUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGFzc2VydE5vdENhbGxhYmxlKHNlbGYsIG1vY2spOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2spKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2luc3RhbmNlKG1vY2ssIENhbGxhYmxlTWl4aW4pKQorCisKKyAgICBkZWYgdGVzdF9ub25fY2FsbGFibGUoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE5vbkNhbGxhYmxlTWFnaWNNb2NrKCksIE5vbkNhbGxhYmxlTW9jaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2NhbGxfXycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2NrLl9fY2xhc3NfXy5fX25hbWVfXywgcmVwcihtb2NrKSkKKworCisgICAgZGVmIHRlc3RfaGVpcmFyY2h5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYWdpY01vY2ssIE1vY2spKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrKSkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgb25lID0gTm9uQ2FsbGFibGVNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShvbmUub25lKSwgTW9jaykpCisKKyAgICAgICAgdHdvID0gTm9uQ2FsbGFibGVNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHR3by50d28pLCBNYWdpY01vY2spKQorCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBNb2NrU3ViKE1vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG9uZSA9IE1vY2tTdWIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKG9uZS5vbmUpLCBNb2NrU3ViKSkKKworICAgICAgICBjbGFzcyBNYWdpY1N1YihNYWdpY01vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHR3byA9IE1hZ2ljU3ViKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh0d28udHdvKSwgTWFnaWNTdWIpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLlgnICUgX19uYW1lX18sIHNwZWM9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUoaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLlgnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX2luc3RhbmNlKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLlgnICUgX19uYW1lX18sIHNwZWM9WCgpKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfc2V0X2luc3RhbmNlKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLlgnICUgX19uYW1lX18sIHNwZWNfc2V0PVgoKSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX2NhbGxhYmxlX2NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDYWxsYWJsZVgoWCk6CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIFN1YihDYWxsYWJsZVgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIE11bHRpKFNvbWVDbGFzcywgU3ViKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgIGZvciBLbGFzcyBpbiBDYWxsYWJsZVgsIFN1YiwgTXVsdGk6CisgICAgICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgKip7YXJnOiBLbGFzc30pIGFzIG1vY2s6CisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShpbnN0YW5jZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgICAgICAgICAgIyBpbmhlcml0ZWQgc3BlYworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29iYXJiYXonKQorCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlKCkKKyAgICAgICAgICAgICAgICAgICAgIyBpbnN0YW5jZSBpcyBjYWxsYWJsZSwgcmVzdWx0IGhhcyBubyBzcGVjCisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgICAgICAgICByZXN1bHQoMywgMiwgMSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5mb28oMywgMiwgMSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCAyLCAxKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3BzZWMoc2VsZik6CisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoWCkKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfaW5zdGFuY2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU29tZUNsYXNzLCBpbnN0YW5jZT1UcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgbW9jay53aWJibGUoKQorICAgICAgICBtb2NrLndpYmJsZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLndpYmJsZSwgJ3NvbWUnLCAgJ2FyZ3MnKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGhlbHBlcnMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmZiMjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGhlbHBlcnMucHkKQEAgLTAsMCArMSw4ODkgQEAKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBjYWxsLCBfQ2FsbCwgY3JlYXRlX2F1dG9zcGVjLCBNYWdpY01vY2ssCisgICAgTW9jaywgQU5ZLCBfQ2FsbExpc3QsIHBhdGNoLCBQcm9wZXJ0eU1vY2sKKykKKworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKworY2xhc3MgU29tZUNsYXNzKG9iamVjdCk6CisgICAgZGVmIG9uZShzZWxmLCBhLCBiKToKKyAgICAgICAgcGFzcworICAgIGRlZiB0d28oc2VsZik6CisgICAgICAgIHBhc3MKKyAgICBkZWYgdGhyZWUoc2VsZiwgYT1Ob25lKToKKyAgICAgICAgcGFzcworCisKKworY2xhc3MgQW55VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQU5ZLCBvYmplY3QoKSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soQU5ZKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChBTlkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKGZvbz1BTlkpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKGZvbz1BTlkpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQU5ZKSwgJzxBTlk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoQU5ZKSwgJzxBTlk+JykKKworCisgICAgZGVmIHRlc3RfYW55X2FuZF9kYXRldGltZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKGRhdGV0aW1lLm5vdygpLCBmb289ZGF0ZXRpbWUubm93KCkpCisKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoQU5ZLCBmb289QU5ZKQorCisKKyAgICBkZWYgdGVzdF9hbnlfbW9ja19jYWxsc19jb21wYXJpc29uX29yZGVyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGQgPSBkYXRldGltZS5ub3coKQorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBmb3IgZCBpbiBkYXRldGltZS5ub3coKSwgRm9vKCk6CisgICAgICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorCisgICAgICAgICAgICBtb2NrKGQsIGZvbz1kLCBiYXI9ZCkKKyAgICAgICAgICAgIG1vY2subWV0aG9kKGQsIHppbmdhPWQsIGFscGhhPWQpCisgICAgICAgICAgICBtb2NrKCkubWV0aG9kKGExPWQsIHo5OT1kKQorCisgICAgICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICAgICBjYWxsKEFOWSwgZm9vPUFOWSwgYmFyPUFOWSksCisgICAgICAgICAgICAgICAgY2FsbC5tZXRob2QoQU5ZLCB6aW5nYT1BTlksIGFscGhhPUFOWSksCisgICAgICAgICAgICAgICAgY2FsbCgpLCBjYWxsKCkubWV0aG9kKGExPUFOWSwgejk5PUFOWSkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIG1vY2subW9ja19jYWxscykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworCisKK2NsYXNzIENhbGxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9jYWxsKHNlbGYpOgorICAgICAgICBrYWxsID0gX0NhbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoKSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoe30sKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoKSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnZm9vJywpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ2JhcicsICgpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXonLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnc3BhbScsICgpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoKDEsIDIsIDMpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCgxLCAyLCAzKSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoMSwgMiwgMyksIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMyksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCgoMSwgMiwgNCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoJ2ZvbycsICgxLCAyLCA0KSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDQpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgNCksIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoMSwgMiwgNCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJ2JhcicsICgxLCAyLCA0KSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKHsnYSc6IDN9LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoKSwgeydhJzogM30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsIHsnYSc6IDN9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCgpLCB7J2EnOiAzfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCh7J2EnOiAzfSwpKSkKKworCisgICAgZGVmIHRlc3RfZW1wdHlfX0NhbGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoe30sKSkKKworCisgICAgZGVmIHRlc3RfbmFtZWRfZW1wdHlfY2FsbChzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgnZm9vJywgKCksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKHt9LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCdiYXInLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCdiYXInLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCdiYXInLCB7fSkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCgxLCAyLCAzKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksIHt9KSkKKworCisgICAgZGVmIHRlc3RfbmFtZWRfY2FsbF93aXRoX2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoJ2ZvbycsICgxLCAyLCAzKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgxLCAyLCAzKSwge30pKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfa3dhcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCgpLCBkaWN0KGE9MywgYj00KSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoZGljdChhPTMsIGI9NCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsIGRpY3QoYT0zLCBiPTQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgpLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgpLCBkaWN0KGE9MywgYj00KSkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2NhbGxfd2l0aF9rd2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoJ2ZvbycsICgpLCBkaWN0KGE9MywgYj00KSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsIGRpY3QoYT0zLCBiPTQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgpLCBkaWN0KGE9MywgYj00KSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoZGljdChhPTMsIGI9NCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKCksIGRpY3QoYT0zLCBiPTQpKSkKKworCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2FyZ3NfY2FsbF9lbXB0eV9uYW1lKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCgxLCAyLCAzKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIGNhbGwoMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxLCAyLCAzKSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGwoMSwgMiwgMykgaW4gW2FyZ3NdKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX25lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKF9DYWxsKCgoMSwgMiwgMyksKSksIGNhbGwoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoX0NhbGwoKCgxLCAyLCAzKSwpKSAhPSBjYWxsKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoX0NhbGwoKCgxLCAyKSwge30pKSAhPSBjYWxsKDEsIDIsIDMpKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX25vbl90dXBsZXMoc2VsZik6CisgICAgICAgIGthbGwgPSBfQ2FsbCgoKDEsIDIsIDMpLCkpCisgICAgICAgIGZvciB2YWx1ZSBpbiAxLCBOb25lLCBzZWxmLCBpbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrYWxsID09IHZhbHVlKQorCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKSksICdjYWxsKCknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCdmb28nLCkpKSwgJ2NhbGwuZm9vKCknKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihfQ2FsbCgoKDEsIDIsIDMpLCB7J2EnOiAnYid9KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsKDEsIDIsIDMsIGE9J2InKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihfQ2FsbCgoJ2JhcicsICgxLCAyLCAzKSwgeydhJzogJ2InfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbC5iYXIoMSwgMiwgMywgYT0nYicpIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCksICdjYWxsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY2FsbCksICdjYWxsJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgpKSwgJ2NhbGwoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKDEpKSwgJ2NhbGwoMSknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCh6ej0ndGhpbmcnKSksICJjYWxsKHp6PSd0aGluZycpIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgpLmZvbyksICdjYWxsKCkuZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoMSkuZm9vLmJhcihhPTMpLmJpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdjYWxsKCkuZm9vLmJhcigpLmJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihjYWxsKCkuZm9vKDEsIDIsIGE9MykpLAorICAgICAgICAgICAgImNhbGwoKS5mb28oMSwgMiwgYT0zKSIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgpKCkpLCAiY2FsbCgpKCkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgxKSgyKSksICJjYWxsKCkoMikiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihjYWxsKCkoKS5iYXIoKS5iYXouYmVlcCgxKSksCisgICAgICAgICAgICAiY2FsbCgpKCkuYmFyKCkuYmF6LmJlZXAoMSkiCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKCksICgnJywgKCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKCdmb28nLCAnYmFyJywgb25lPTMsIHR3bz00KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJycsICgnZm9vJywgJ2JhcicpLCB7J29uZSc6IDMsICd0d28nOiA0fSkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIDIsIDMpCisgICAgICAgIG1vY2soYT0zLCBiPTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsbCgxLCAyLCAzKSwgY2FsbChhPTMsIGI9NildKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlX2NhbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbC5mb28oMSksICgnZm9vJywgKDEsKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwuYmFyLmJheihmaXNoPSdlZ2dzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXIuYmF6JywgKCksIHsnZmlzaCc6ICdlZ2dzJ30pKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5mb28oMSwgMiAsMykKKyAgICAgICAgbW9jay5iYXIuYmF6KGE9MywgYj02KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxsLmZvbygxLCAyLCAzKSwgY2FsbC5iYXIuYmF6KGE9MywgYj02KV0pCisKKworICAgIGRlZiB0ZXN0X2V4dGVuZGVkX2NhbGwoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGNhbGwoMSkuZm9vKDIpLmJhcigzLCBhPTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAoJygpLmZvbygpLmJhcicsICgzLCksIGRpY3QoYT00KSkpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSwgMiwgYT0zLCBiPTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIGNhbGwoMSwgMiwgYT0zLCBiPTQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG1vY2suY2FsbF9hcmdzLCBjYWxsKDEsIDIsIDMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgW2NhbGwoMSwgMiwgYT0zLCBiPTQpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKDEsIDIsIGE9MywgYj00KV0pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2suZm9vKDEpLmJhcigpKCkuYmF6LmJlZXAoYT02KQorCisgICAgICAgIGxhc3RfY2FsbCA9IGNhbGwuZm9vKDEpLmJhcigpKCkuYmF6LmJlZXAoYT02KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxsc1stMV0sIGxhc3RfY2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGxhc3RfY2FsbC5jYWxsX2xpc3QoKSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9saXN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSkuY2FsbF9saXN0KCksIG1vY2subW9ja19jYWxscykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygxKS5tZXRob2QoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEpLm1ldGhvZCgyKS5jYWxsX2xpc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkubWV0aG9kKDIpKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxKS5tZXRob2QoMikoMykuY2FsbF9saXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2NhbGxzKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBpbnQobW9jaygxKS5tZXRob2QoMikoMykuZm9vLmJhci5iYXooNCkoNSkpCisgICAgICAgIGthbGwgPSBjYWxsKDEpLm1ldGhvZCgyKSgzKS5mb28uYmFyLmJheig0KSg1KS5fX2ludF9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLmNhbGxfbGlzdCgpLCBtb2NrLm1vY2tfY2FsbHMpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwsIEFOWSkKKworICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgaW50KG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBbQU5ZXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbQU5ZXSwgbS5tb2NrX2NhbGxzKQorCisKKyAgICBkZWYgdGVzdF90d29fYXJnc19jYWxsKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCgxLCAyKSwgeydhJzogM30pLCB0d289VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXJncyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMV0sIHsnYSc6IDN9KQorCisgICAgICAgIG90aGVyX2FyZ3MgPSBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgb3RoZXJfYXJncykKKworCitjbGFzcyBTcGVjU2lnbmF0dXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2NoZWNrX3NvbWVjbGFzc19tb2NrKHNlbGYsIG1vY2spOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2ZvbycpCisgICAgICAgIG1vY2sub25lKDEsIDIpCisgICAgICAgIG1vY2sub25lLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5vbmUuYXNzZXJ0X2NhbGxlZF93aXRoLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sub25lLCAxKQorCisgICAgICAgIG1vY2sudHdvKCkKKyAgICAgICAgbW9jay50d28uYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudHdvLmFzc2VydF9jYWxsZWRfd2l0aCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLnR3bywgMSkKKworICAgICAgICBtb2NrLnRocmVlKCkKKyAgICAgICAgbW9jay50aHJlZS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay50aHJlZS5hc3NlcnRfY2FsbGVkX3dpdGgsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay50aHJlZSwgMywgMikKKworICAgICAgICBtb2NrLnRocmVlKDEpCisgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisKKyAgICAgICAgbW9jay50aHJlZShhPTEpCisgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoKGE9MSkKKworCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIGZvciBzcGVjIGluIChTb21lQ2xhc3MsIFNvbWVDbGFzcygpKToKKyAgICAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NvbWVjbGFzc19tb2NrKG1vY2spCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY19yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZiwgcmV0dXJuX3ZhbHVlPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgJ2ZvbycpCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28sIHJldHVybl92YWx1ZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19yZXNldF9tb2NrKHNlbGYpOgorICAgICAgICBtID0gY3JlYXRlX2F1dG9zcGVjKGludCkKKyAgICAgICAgaW50KG0pCisgICAgICAgIG0ucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ludF9fLmNhbGxfY291bnQsIDApCisKKworICAgIGRlZiB0ZXN0X21vY2tpbmdfdW5ib3VuZF9tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgZm9vKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHAgPSBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJykKKyAgICAgICAgbW9ja19mb28gPSBwLnN0YXJ0KCkKKyAgICAgICAgRm9vKCkuZm9vKDEpCisKKyAgICAgICAgbW9ja19mb28uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY191bmJvdW5kX21ldGhvZHMoc2VsZik6CisgICAgICAgICMgc2VlIG1vY2sgaXNzdWUgMTI4CisgICAgICAgICMgdGhpcyBpcyBleHBlY3RlZCB0byBmYWlsIHVudGlsIHRoZSBpc3N1ZSBpcyBmaXhlZAorICAgICAgICByZXR1cm4KKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBrbGFzcyA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIGluc3RhbmNlID0ga2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlLmZvbywgMSkKKworICAgICAgICAjIE5vdGU6IG5vIHR5cGUgY2hlY2tpbmcgb24gdGhlICJzZWxmIiBwYXJhbWV0ZXIKKyAgICAgICAga2xhc3MuZm9vKDEpCisgICAgICAgIGtsYXNzLmZvby5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBrbGFzcy5mb28pCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY19rZXl3b3JkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBhID0gMworICAgICAgICBtID0gY3JlYXRlX2F1dG9zcGVjKEZvbywgYT0nMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5hLCAnMycpCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY19rZXl3b3JkX29ubHlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsICosIGI9Tm9uZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhmb28pCisgICAgICAgIG0oMSkKKyAgICAgICAgbS5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLCAxLCAyKQorCisgICAgICAgIG0oMiwgYj0zKQorICAgICAgICBtLmFzc2VydF9jYWxsZWRfd2l0aCgyLCBiPTMpCisKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2FzX2luc3RhbmNlX2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgb2JqID0gU29tZUNsYXNzKCkKKyAgICAgICAgZGVmIGYoYSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG9iai5mID0gZgorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMob2JqKQorICAgICAgICBtb2NrLmYoJ2JpbmcnKQorICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF93aXRoKCdiaW5nJykKKworCisgICAgZGVmIHRlc3Rfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICAjIGJlY2F1c2Ugc3BlYyBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyBpbiB0aGUgbW9jayBjb25zdHJ1Y3RvciBtZWFucworICAgICAgICAjIHNvbWV0aGluZyB2ZXJ5IGRpZmZlcmVudCB3ZSB0cmVhdCBhIGxpc3QgaW5zdGFuY2UgYXMgdGhlIHR5cGUuCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoW10pCisgICAgICAgIG1vY2suYXBwZW5kKCdmb28nKQorICAgICAgICBtb2NrLmFwcGVuZC5hc3NlcnRfY2FsbGVkX3dpdGgoJ2ZvbycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdmb28nKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0gW10KKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgbW9jay5mb28uYXBwZW5kKDMpCisgICAgICAgIG1vY2suZm9vLmFwcGVuZC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suZm9vLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViKFNvbWVDbGFzcyk6CisgICAgICAgICAgICBhdHRyID0gU29tZUNsYXNzKCkKKworICAgICAgICBzdWJfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhTdWIpCisKKyAgICAgICAgZm9yIG1vY2sgaW4gKHN1Yl9tb2NrLCBzdWJfbW9jay5hdHRyKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NvbWVjbGFzc19tb2NrKG1vY2spCisKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5fZnVuY3Rpb25zX3R5cGVzKHNlbGYpOgorICAgICAgICAjIHdlIGNvdWxkIHJlcGxhY2UgYnVpbHRpbiBmdW5jdGlvbnMgLyBtZXRob2RzIHdpdGggYSBmdW5jdGlvbgorICAgICAgICAjIHdpdGggKmFyZ3MgLyAqKmt3YXJncyBzaWduYXR1cmUuIFVzaW5nIHRoZSBidWlsdGluIG1ldGhvZCB0eXBlCisgICAgICAgICMgYXMgYSBzcGVjIHNlZW1zIHRvIHdvcmsgZmFpcmx5IHdlbGwgdGhvdWdoLgorICAgICAgICBjbGFzcyBCdWlsdGluU3ViY2xhc3MobGlzdCk6CisgICAgICAgICAgICBkZWYgYmFyKHNlbGYsIGFyZyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc29ydGVkID0gc29ydGVkCisgICAgICAgICAgICBhdHRyID0ge30KKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEJ1aWx0aW5TdWJjbGFzcykKKyAgICAgICAgbW9jay5hcHBlbmQoMykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmFwcGVuZCwgJ2ZvbycpCisKKyAgICAgICAgbW9jay5iYXIoJ2ZvbycpCisgICAgICAgIG1vY2suYmFyLmFzc2VydF9jYWxsZWRfd2l0aCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLmJhciwgJ2ZvbycsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5iYXIsICdmb28nKQorCisgICAgICAgIG1vY2suc29ydGVkKFsxLCAyXSkKKyAgICAgICAgbW9jay5zb3J0ZWQuYXNzZXJ0X2NhbGxlZF93aXRoKFsxLCAyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suc29ydGVkLCAnZm9vJykKKworICAgICAgICBtb2NrLmF0dHIucG9wKDMpCisgICAgICAgIG1vY2suYXR0ci5wb3AuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmF0dHIsICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2FsbHMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihTb21lQ2xhc3MpOgorICAgICAgICAgICAgYXR0ciA9IFNvbWVDbGFzcygpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhTdWIpCisgICAgICAgIG1vY2sub25lKDEsIDIpCisgICAgICAgIG1vY2sudHdvKCkKKyAgICAgICAgbW9jay50aHJlZSgzKQorCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwub25lKDEsIDIpLCBjYWxsLnR3bygpLCBjYWxsLnRocmVlKDMpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICBtb2NrLmF0dHIub25lKDEsIDIpCisgICAgICAgIG1vY2suYXR0ci50d28oKQorICAgICAgICBtb2NrLmF0dHIudGhyZWUoMykKKworICAgICAgICBleHBlY3RlZC5leHRlbmQoCisgICAgICAgICAgICBbY2FsbC5hdHRyLm9uZSgxLCAyKSwgY2FsbC5hdHRyLnR3bygpLCBjYWxsLmF0dHIudGhyZWUoMyldCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgZXhwZWN0ZWQpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHMoc2VsZik6CisgICAgICAgIGNsYXNzIEJ1aWx0aW5TdWJjbGFzcyhsaXN0KToKKyAgICAgICAgICAgIGF0dHIgPSB7fQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQnVpbHRpblN1YmNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnQsIG1vY2suYXR0cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9ja1snZm9vJ10sIE1hZ2ljTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suYXR0clsnZm9vJ10sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXQoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihTb21lQ2xhc3MpOgorICAgICAgICAgICAgYXR0ciA9IFNvbWVDbGFzcygpCisKKyAgICAgICAgZm9yIHNwZWMgaW4gKFN1YiwgU3ViKCkpOgorICAgICAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldD1UcnVlKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG1vY2ssICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLmF0dHIsICdmb28nLCAnYmFyJykKKworCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcnMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZihjbHMsIGEsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBnKGEsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCYXIoRm9vKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCYXooU29tZUNsYXNzLCBCYXIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBzcGVjIGluIChGb28sIEZvbygpLCBCYXIsIEJhcigpLCBCYXosIEJheigpKToKKyAgICAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYykKKyAgICAgICAgICAgIG1vY2suZigxLCAyKQorICAgICAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIpCisKKyAgICAgICAgICAgIG1vY2suZygzLCA0KQorICAgICAgICAgICAgbW9jay5nLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDMsIDQpCisKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZm9vID0gJ2ZvbyBiYXIgYmF6JworICAgICAgICAgICAgYmFyID0gZm9vCisKKyAgICAgICAgQS5CID0gQQorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEEpCisKKyAgICAgICAgbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5CLmNhbGxlZCkKKworICAgICAgICBtb2NrLmEoKQorICAgICAgICBtb2NrLkIuYSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtjYWxsLmEoKSwgY2FsbC5CLmEoKV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLmZvbywgQS5iYXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9jay5mb28sIG1vY2suYmFyKQorICAgICAgICBtb2NrLmZvby5sb3dlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmJhci5sb3dlci5hc3NlcnRfY2FsbGVkX3dpdGgpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfaW5oZXJpdGFuY2VfZm9yX2NsYXNzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzc19tb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KGNsYXNzX21vY2ssIGNsYXNzX21vY2soKSkKKworICAgICAgICBmb3IgdGhpc19tb2NrIGluIGNsYXNzX21vY2ssIGNsYXNzX21vY2soKToKKyAgICAgICAgICAgIHRoaXNfbW9jay5hKCkKKyAgICAgICAgICAgIHRoaXNfbW9jay5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRoaXNfbW9jay5hLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCB0aGlzX21vY2ssICdiJykKKworICAgICAgICBpbnN0YW5jZV9tb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbygpKQorICAgICAgICBpbnN0YW5jZV9tb2NrLmEoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZV9tb2NrLmEsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jaywgJ2InKQorCisgICAgICAgICMgVGhlIHJldHVybiB2YWx1ZSBpc24ndCBpc24ndCBjYWxsYWJsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlX21vY2spCisKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIuZigpCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyLmYuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2suQmFyLCAnZycpCisKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIoKS5mKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIoKS5mLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLkJhcigpLCAnZycpCisKKworICAgIGRlZiB0ZXN0X2luaGVyaXQoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgYSA9IDMKKworICAgICAgICBGb28uRm9vID0gRm9vCisKKyAgICAgICAgIyBjbGFzcworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlLCAnYicpCisKKyAgICAgICAgYXR0cl9pbnN0YW5jZSA9IG1vY2suRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGF0dHJfaW5zdGFuY2UsICdiJykKKworICAgICAgICAjIGluc3RhbmNlCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworICAgICAgICAjIGF0dHJpYnV0ZSBpbnN0YW5jZQorICAgICAgICBjYWxsX3Jlc3VsdCA9IG1vY2suRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGNhbGxfcmVzdWx0LCAnYicpCisKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5zKHNlbGYpOgorICAgICAgICAjIHVzZWQgdG8gZmFpbCB3aXRoIGluZmluaXRlIHJlY3Vyc2lvbgorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoMSkKKworICAgICAgICBjcmVhdGVfYXV0b3NwZWMoaW50KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoJ2ZvbycpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhzdHIpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyh7fSkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGRpY3QpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhbXSkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGxpc3QpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhzZXQoKSkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHNldCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDEuMCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGZsb2F0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoMWopCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhjb21wbGV4KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoRmFsc2UpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhUcnVlKQorCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgZGVmIGYoYSwgYik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMikKKworICAgICAgICBmLmYgPSBmCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLmYpCisgICAgICAgIG1vY2suZigzLCA0KQorICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIDQpCisKKworICAgIGRlZiB0ZXN0X3NraXBfYXR0cmlidXRlZXJyb3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBSYWlzZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgdHlwZT1Ob25lKToKKyAgICAgICAgICAgICAgICBpZiBvYmogaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ0NhbiBvbmx5IGJlIGFjY2Vzc2VkIHZpYSBhbiBpbnN0YW5jZScpCisKKyAgICAgICAgY2xhc3MgUmFpc2VyQ2xhc3Mob2JqZWN0KToKKyAgICAgICAgICAgIHJhaXNlciA9IFJhaXNlcigpCisKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBleGlzdGluZyhhLCBiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYSArIGIKKworICAgICAgICBzID0gY3JlYXRlX2F1dG9zcGVjKFJhaXNlckNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYSB4OiBzLmV4aXN0aW5nKDEsIDIsIDMpKQorICAgICAgICBzLmV4aXN0aW5nKDEsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IHMubm9uZXhpc3RpbmcpCisKKyAgICAgICAgIyBjaGVjayB3ZSBjYW4gZmV0Y2ggdGhlIHJhaXNlciBhdHRyaWJ1dGUgYW5kIGl0IGhhcyBubyBzcGVjCisgICAgICAgIG9iaiA9IHMucmFpc2VyCisgICAgICAgIG9iai5mb28sIG9iai5iYXIKKworCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhLCBiPTMpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2soMSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxKQorCisgICAgICAgIG1vY2soNCwgNSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoNCwgNSkKKworCisgICAgZGVmIHRlc3RfY2xhc3Nfd2l0aF9ub19pbml0KHNlbGYpOgorICAgICAgICAjIHRoaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgIyBkdWUgdG8gdHJ5aW5nIHRvIGdldCBhIHNpZ25hdHVyZSBmcm9tIG9iamVjdC5fX2luaXRfXworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKEZvbykKKworCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBDYWxsYWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhDYWxsYWJsZSkKKyAgICAgICAgbW9jaygpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2ssICdhJykKKworICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorICAgICAgICBpbnN0YW5jZShhPSdhJykKKyAgICAgICAgaW5zdGFuY2UuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoYT0nYScpCisgICAgICAgIGluc3RhbmNlKCdhJykKKyAgICAgICAgaW5zdGFuY2UuYXNzZXJ0X2NhbGxlZF93aXRoKCdhJykKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKENhbGxhYmxlKCkpCisgICAgICAgIG1vY2soYT0nYScpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoYT0nYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgbW9jaygnYScpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCdhJykKKworCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX25vbmNhbGxhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBOb25DYWxsYWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKE5vbkNhbGxhYmxlKQorICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UsICdhJykKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKE5vbkNhbGxhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnYScpCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY19ub25lKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGJhciA9IE5vbmUKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgbm9uZSA9IG1vY2suYmFyCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShub25lLCB0eXBlKE5vbmUpKQorCisgICAgICAgIG5vbmUuZm9vKCkKKyAgICAgICAgbm9uZS5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19mdW5jdGlvbnNfd2l0aF9zZWxmX2luX29kZF9wbGFjZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgZihhLCBzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYSA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIGEuZihzZWxmPTEwKQorICAgICAgICBhLmYuYXNzZXJ0X2NhbGxlZF93aXRoKHNlbGY9MTApCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3Byb3BlcnR5KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMworCisgICAgICAgIGZvbyA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2tfcHJvcGVydHkgPSBmb28uZm9vCisKKyAgICAgICAgIyBubyBzcGVjIG9uIHByb3BlcnRpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9ja19wcm9wZXJ0eSwgTWFnaWNNb2NrKSkKKyAgICAgICAgbW9ja19wcm9wZXJ0eSgxLCAyLCAzKQorICAgICAgICBtb2NrX3Byb3BlcnR5LmFiYyg0LCA1LCA2KQorICAgICAgICBtb2NrX3Byb3BlcnR5LmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgICAgIG1vY2tfcHJvcGVydHkuYWJjLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDQsIDUsIDYpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3Nsb3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9IFsnYSddCisKKyAgICAgICAgZm9vID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgbW9ja19zbG90ID0gZm9vLmEKKworICAgICAgICAjIG5vIHNwZWMgb24gc2xvdHMKKyAgICAgICAgbW9ja19zbG90KDEsIDIsIDMpCisgICAgICAgIG1vY2tfc2xvdC5hYmMoNCwgNSwgNikKKyAgICAgICAgbW9ja19zbG90LmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgICAgIG1vY2tfc2xvdC5hYmMuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoNCwgNSwgNikKKworCitjbGFzcyBUZXN0Q2FsbExpc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXJnc19saXN0X2NvbnRhaW5zX2NhbGxfbGlzdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5jYWxsX2FyZ3NfbGlzdCwgX0NhbGxMaXN0KQorCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jayhhPTMpCisgICAgICAgIG1vY2soMywgNCkKKyAgICAgICAgbW9jayhiPTYpCisKKyAgICAgICAgZm9yIGthbGwgaW4gY2FsbCgxLCAyKSwgY2FsbChhPTMpLCBjYWxsKDMsIDQpLCBjYWxsKGI9Nik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoa2FsbCBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorCisgICAgICAgIGNhbGxzID0gW2NhbGwoYT0zKSwgY2FsbCgzLCA0KV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxzIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisgICAgICAgIGNhbGxzID0gW2NhbGwoMSwgMiksIGNhbGwoYT0zKV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxzIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisgICAgICAgIGNhbGxzID0gW2NhbGwoMywgNCksIGNhbGwoYj02KV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxzIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisgICAgICAgIGNhbGxzID0gW2NhbGwoMywgNCldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2FsbCgnZmlzaCcpIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoW2NhbGwoJ2Zpc2gnKV0gaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworCisgICAgZGVmIHRlc3RfY2FsbF9saXN0X3N0cihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2suZm9vKGE9MykKKyAgICAgICAgbW9jay5mb28uYmFyKCkuYmF6KCdmaXNoJywgY2F0PSdkb2cnKQorCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICAgIltjYWxsKDEsIDIpLFxuIgorICAgICAgICAgICAgIiBjYWxsLmZvbyhhPTMpLFxuIgorICAgICAgICAgICAgIiBjYWxsLmZvby5iYXIoKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28uYmFyKCkuYmF6KCdmaXNoJywgY2F0PSdkb2cnKV0iCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9jay5tb2NrX2NhbGxzKSwgZXhwZWN0ZWQpCisKKworICAgIGRlZiB0ZXN0X3Byb3BlcnR5bW9jayhzZWxmKToKKyAgICAgICAgcCA9IHBhdGNoKCclcy5Tb21lQ2xhc3Mub25lJyAlIF9fbmFtZV9fLCBuZXdfY2FsbGFibGU9UHJvcGVydHlNb2NrKQorICAgICAgICBtb2NrID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNvbWVDbGFzcy5vbmUKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgICAgICBzID0gU29tZUNsYXNzKCkKKyAgICAgICAgICAgIHMub25lCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwoKSwgY2FsbCgpXSkKKworICAgICAgICAgICAgcy5vbmUgPSAzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwoKSwgY2FsbCgpLCBjYWxsKDMpXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3Byb3BlcnR5bW9ja19yZXR1cm52YWx1ZShzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHAgPSBQcm9wZXJ0eU1vY2soKQorICAgICAgICB0eXBlKG0pLmZvbyA9IHAKKworICAgICAgICByZXR1cm5lZCA9IG0uZm9vCisgICAgICAgIHAuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0dXJuZWQsIE1hZ2ljTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHJldHVybmVkLCBQcm9wZXJ0eU1vY2spCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiY2YwODgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC0wLDAgKzEsNDAzIEBACitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgc3lzCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2ssIE1hZ2ljTW9jaywgX21hZ2ljcworCisKKworY2xhc3MgVGVzdE1vY2tpbmdNYWdpY01ldGhvZHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGVsZXRpbmdfbWFnaWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fZ2V0aXRlbV9fJykpCisKKyAgICAgICAgbW9jay5fX2dldGl0ZW1fXyA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2NrLCAnX19nZXRpdGVtX18nKSkKKworICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fZ2V0aXRlbV9fJykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljbW9ja19kZWwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICAjIGJlZm9yZSB1c2luZyBnZXRpdGVtCisgICAgICAgIGRlbCBtb2NrLl9fZ2V0aXRlbV9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgIyB0aGlzIHRpbWUgdXNlIGl0IGZpcnN0CisgICAgICAgIG1vY2tbJ2ZvbyddCisgICAgICAgIGRlbCBtb2NrLl9fZ2V0aXRlbV9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kX3dyYXBwaW5nKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGRlZiBmKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYsICdmaXNoJworCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBmCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5fX2dldGl0ZW1fXyBpcyBmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tbJ2ZvbyddLCAobW9jaywgJ2Zpc2gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9fZ2V0aXRlbV9fKCdmb28nKSwgKG1vY2ssICdmaXNoJykpCisKKyAgICAgICAgbW9jay5fX2dldGl0ZW1fXyA9IG1vY2sKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suX19nZXRpdGVtX18gaXMgbW9jaykKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19pc29sYXRlZF9iZXR3ZWVuX21vY2tzKHNlbGYpOgorICAgICAgICBtb2NrMSA9IE1vY2soKQorICAgICAgICBtb2NrMiA9IE1vY2soKQorCisgICAgICAgIG1vY2sxLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrMSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGlzdChtb2NrMikpCisKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vY2spLCAiPE1vY2sgaWQ9JyVzJz4iICUgaWQobW9jaykpCisgICAgICAgIG1vY2suX19yZXByX18gPSBsYW1iZGEgczogJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vY2spLCAnZm9vJykKKworCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2spLCBvYmplY3QuX19zdHJfXyhtb2NrKSkKKyAgICAgICAgbW9jay5fX3N0cl9fID0gbGFtYmRhIHM6ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2spLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfZGljdF9tZXRob2RzKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorICAgICAgICBkZWYgX2RlbCgpOgorICAgICAgICAgICAgZGVsIG1vY2tbJ2ZvbyddCisgICAgICAgIGRlZiBfc2V0KCk6CisgICAgICAgICAgICBtb2NrWydmb28nXSA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfZGVsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zZXQpCisKKyAgICAgICAgX2RpY3QgPSB7fQorICAgICAgICBkZWYgZ2V0aXRlbShzLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBfZGljdFtuYW1lXQorICAgICAgICBkZWYgc2V0aXRlbShzLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICAgICBfZGljdFtuYW1lXSA9IHZhbHVlCisgICAgICAgIGRlZiBkZWxpdGVtKHMsIG5hbWUpOgorICAgICAgICAgICAgZGVsIF9kaWN0W25hbWVdCisKKyAgICAgICAgbW9jay5fX3NldGl0ZW1fXyA9IHNldGl0ZW0KKyAgICAgICAgbW9jay5fX2dldGl0ZW1fXyA9IGdldGl0ZW0KKyAgICAgICAgbW9jay5fX2RlbGl0ZW1fXyA9IGRlbGl0ZW0KKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKyAgICAgICAgbW9ja1snZm9vJ10gPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9kaWN0LCB7J2Zvbyc6ICdiYXInfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrWydmb28nXSwgJ2JhcicpCisgICAgICAgIGRlbCBtb2NrWydmb28nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9kaWN0LCB7fSkKKworCisgICAgZGVmIHRlc3RfbnVtZXJpYyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2sudmFsdWUgPSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2sgKyAzKQorCisgICAgICAgIGRlZiBhZGQoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgbW9jay52YWx1ZSArPSBvdGhlcgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgbW9jay5fX2FkZF9fID0gYWRkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayArIDMsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay52YWx1ZSwgMykKKworICAgICAgICBkZWwgbW9jay5fX2FkZF9fCisgICAgICAgIGRlZiBpYWRkKG1vY2spOgorICAgICAgICAgICAgbW9jayArPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaWFkZCwgbW9jaykKKyAgICAgICAgbW9jay5fX2lhZGRfXyA9IGFkZAorICAgICAgICBtb2NrICs9IDYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLCBvcmlnaW5hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnZhbHVlLCA5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAzICsgbW9jaykKKyAgICAgICAgbW9jay5fX3JhZGRfXyA9IGFkZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcgKyBtb2NrLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sudmFsdWUsIDE2KQorCisKKyAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgICMgdGVzdCBkZWxlZ2F0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtb2NrKSwgTW9jay5fX2hhc2hfXyhtb2NrKSkKKworICAgICAgICBkZWYgX2hhc2gocyk6CisgICAgICAgICAgICByZXR1cm4gMworICAgICAgICBtb2NrLl9faGFzaF9fID0gX2hhc2gKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1vY2spLCAzKQorCisKKyAgICBkZWYgdGVzdF9ub256ZXJvKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKG0pKQorCisgICAgICAgIG0uX19ib29sX18gPSBsYW1iZGEgczogRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShib29sKG0pKQorCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGRlZiBjb21wKHMsIG8pOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgbW9jay5fX2x0X18gPSBtb2NrLl9fZ3RfXyA9IG1vY2suX19sZV9fID0gbW9jay5fX2dlX18gPSBjb21wCisgICAgICAgIHNlbGYuIGFzc2VydFRydWUobW9jayA8IDMpCisgICAgICAgIHNlbGYuIGFzc2VydFRydWUobW9jayA+IDMpCisgICAgICAgIHNlbGYuIGFzc2VydFRydWUobW9jayA8PSAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPj0gMykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPCBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG9iamVjdCgpIDwgTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPiBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG9iamVjdCgpID4gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPD0gb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA8PSBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDw9IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPj0gb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA+PSBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID49IE1hZ2ljTW9jaygpKQorCisKKyAgICBkZWYgdGVzdF9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSBtb2NrLCBUcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgPT0gbW9jaywgYm9vbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBtb2NrLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrICE9IG1vY2ssIGJvb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gb2JqZWN0KCksIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG9iamVjdCgpLCBUcnVlKQorCisgICAgICAgICAgICBkZWYgZXEoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA9PSAzCisgICAgICAgICAgICBtb2NrLl9fZXFfXyA9IGVxCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jayA9PSAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrID09IDQpCisKKyAgICAgICAgICAgIGRlZiBuZShzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID09IDMKKyAgICAgICAgICAgIG1vY2suX19uZV9fID0gbmUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrICE9IDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2sgIT0gNCkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jay5fX2VxX18ucmV0dXJuX3ZhbHVlID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayA9PSAzLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gMywgVHJ1ZSkKKworICAgICAgICBtb2NrLl9fbmVfXy5yZXR1cm5fdmFsdWUgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayAhPSAzLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gMywgRmFsc2UpCisKKworICAgIGRlZiB0ZXN0X2xlbl9jb250YWluc19pdGVyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsZW4sIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXRlciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6ICdmb28nIGluIG1vY2spCisKKyAgICAgICAgbW9jay5fX2xlbl9fID0gbGFtYmRhIHM6IDYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9jayksIDYpCisKKyAgICAgICAgbW9jay5fX2NvbnRhaW5zX18gPSBsYW1iZGEgcywgbzogbyA9PSAzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgzIGluIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoNiBpbiBtb2NrKQorCisgICAgICAgIG1vY2suX19pdGVyX18gPSBsYW1iZGEgczogaXRlcignZm9vYmFyYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBsaXN0KCdmb29iYXJiYXonKSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNtb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICBtb2NrLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IGl0ZXIoWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFsxLCAyLCAzXSkKKworICAgICAgICBnZXRhdHRyKG1vY2ssICdfX2Jvb2xfXycpLnJldHVybl92YWx1ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19ub256ZXJvX18nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShib29sKG1vY2spKQorCisgICAgICAgIGZvciBlbnRyeSBpbiBfbWFnaWNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9jaywgZW50cnkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19faW1hZ2luZXJ5X18nKSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbW9ja19lcXVhbGl0eShzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrID09IG9iamVjdCgpLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayAhPSBvYmplY3QoKSwgYm9vbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gb2JqZWN0KCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gb2JqZWN0KCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSBtb2NrLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gbW9jaywgRmFsc2UpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljbW9ja19kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG1vY2spLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobW9jayksIDFqKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KG1vY2spLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ob2JqZWN0KCksIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2spLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobW9jayksIG9iamVjdC5fX2hhc2hfXyhtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9jayksIG9iamVjdC5fX3N0cl9fKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChtb2NrKSkKKworICAgICAgICAjIGluIFB5dGhvbiAzIG9jdCBhbmQgaGV4IHVzZSBfX2luZGV4X18KKyAgICAgICAgIyBzbyB0aGVzZSB0ZXN0cyBhcmUgZm9yIF9faW5kZXhfXyBpbiBweTNrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KG1vY2spLCAnMG8xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXgobW9jayksICcweDEnKQorICAgICAgICAjIGhvdyB0byB0ZXN0IF9fc2l6ZW9mX18gPworCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2FuZF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPUl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9faXRlcl9fKQorCisgICAgICAgIG1vY2suX19pdGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKworICAgICAgICBjbGFzcyBOb25JdGVyYWJsZShvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gTW9jayhzcGVjPU5vbkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9faXRlcl9fKQorCisgICAgICAgIGRlZiBzZXRfaW50KCk6CisgICAgICAgICAgICBtb2NrLl9faW50X18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhzcGVjPUl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19hbmRfc3BlY19zZXQoc2VsZik6CisgICAgICAgIGNsYXNzIEl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PUl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9faXRlcl9fKQorCisgICAgICAgIG1vY2suX19pdGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKworICAgICAgICBjbGFzcyBOb25JdGVyYWJsZShvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1Ob25JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBkZWYgc2V0X2ludCgpOgorICAgICAgICAgICAgbW9jay5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc3BlY19zZXQ9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisKKyAgICBkZWYgdGVzdF9zZXR0aW5nX3Vuc3VwcG9ydGVkX21hZ2ljX21ldGhvZChzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIGRlZiBzZXRfc2V0YXR0cigpOgorICAgICAgICAgICAgbW9jay5fX3NldGF0dHJfXyA9IGxhbWJkYSBzZWxmLCBuYW1lOiBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAiQXR0ZW1wdGluZyB0byBzZXQgdW5zdXBwb3J0ZWQgbWFnaWMgbWV0aG9kICdfX3NldGF0dHJfXycuIiwKKyAgICAgICAgICAgIHNldF9zZXRhdHRyCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc19hbmRfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgYXR0ciA9IG1vY2suZm9vCisgICAgICAgIGRlZiBfZ2V0X3R5cGUob2JqKToKKyAgICAgICAgICAgICMgdGhlIHR5cGUgb2YgZXZlcnkgbW9jayAob3IgbWFnaWNtb2NrKSBpcyBhIGN1c3RvbSBzdWJjbGFzcworICAgICAgICAgICAgIyBzbyB0aGUgcmVhbCB0eXBlIGlzIHRoZSBzZWNvbmQgaW4gdGhlIG1ybworICAgICAgICAgICAgcmV0dXJuIHR5cGUob2JqKS5fX21yb19fWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2dldF90eXBlKGF0dHIpLCBNYWdpY01vY2spCisKKyAgICAgICAgcmV0dXJuZWQgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZ2V0X3R5cGUocmV0dXJuZWQpLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfYXJlX21hZ2ljX21vY2tzKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suX19nZXRpdGVtX18sIE1hZ2ljTW9jaykKKworICAgICAgICBtb2NrWzFdWzJdLl9fZ2V0aXRlbV9fLnJldHVybl92YWx1ZSA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrWzFdWzJdWzNdLCAzKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RfcmVzZXRfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIHN0cihtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5fX3N0cl9fLmNhbGxlZCkKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLl9fc3RyX18uY2FsbGVkKQorCisKKyAgICBkZWYgdGVzdF9kaXIoc2VsZik6CisgICAgICAgICMgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgZGVmIF9kaXIoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFsnZm9vJ10KKyAgICAgICAgICAgIG1vY2suX19kaXJfXyA9IF9kaXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKG1vY2spLCBbJ2ZvbyddKQorCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKCdQeVB5JyBpbiBzeXMudmVyc2lvbiwgIlRoaXMgZmFpbHMgZGlmZmVyZW50bHkgb24gcHlweSIpCisgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorCisgICAgICAgICMgWFhYWCBzaG91bGQgdGhpcyBiZSBhbiBleHBlY3RlZCBmYWlsdXJlIGluc3RlYWQ/CisKKyAgICAgICAgIyB0aGlzIHNlZW1zIGxpa2UgaXQgc2hvdWxkIHdvcmssIGJ1dCBpcyBoYXJkIHRvIGRvIHdpdGhvdXQgaW50cm9kdWNpbmcKKyAgICAgICAgIyBvdGhlciBhcGkgaW5jb25zaXN0ZW5jaWVzLiBGYWlsdXJlIG1lc3NhZ2UgY291bGQgYmUgYmV0dGVyIHRob3VnaC4KKyAgICAgICAgbS5fX2l0ZXJfXyA9IFszXS5fX2l0ZXJfXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIG0pCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZF90eXBlKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28oTWFnaWNNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZm9vLl9faW50X18sIEZvbykKKworCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcl9mcm9tX2NsYXNzKHNlbGYpOgorICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgdHlwZShtKS5fX3N0cl9fLnJldHVybl92YWx1ZSA9ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG0pLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfaXRlcmFibGVfYXNfaXRlcl9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBtLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IFsxLCAyLCAzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbMSwgMiwgM10pCisKKyAgICAgICAgbS5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBpdGVyKFs0LCA1LCA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbNCwgNSwgNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgW10pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2ZjEyOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CkBAIC0wLDAgKzEsMTI3NSBAQAoraW1wb3J0IGNvcHkKK2ltcG9ydCBzeXMKKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgaXNfaW5zdGFuY2UKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAorICAgIGNhbGwsIERFRkFVTFQsIHBhdGNoLCBzZW50aW5lbCwKKyAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTW9jaywKKyAgICBOb25DYWxsYWJsZU1hZ2ljTW9jaywgX0NhbGxMaXN0LAorICAgIGNyZWF0ZV9hdXRvc3BlYworKQorCisKK2NsYXNzIEl0ZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudGhpbmcgPSBpdGVyKFsndGhpcycsICdpcycsICdhbicsICdpdGVyJ10pCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgbmV4dChzZWxmKToKKyAgICAgICAgcmV0dXJuIG5leHQoc2VsZi50aGluZykKKworICAgIF9fbmV4dF9fID0gbmV4dAorCisKKworY2xhc3MgTW9ja1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICAjIGlmIF9fYWxsX18gaXMgYmFkbHkgZGVmaW5lZCB0aGVuIGltcG9ydCAqIHdpbGwgcmFpc2UgYW4gZXJyb3IKKyAgICAgICAgIyBXZSBoYXZlIHRvIGV4ZWMgaXQgYmVjYXVzZSB5b3UgY2FuJ3QgaW1wb3J0ICogaW5zaWRlIGEgbWV0aG9kCisgICAgICAgICMgaW4gUHl0aG9uIDMKKyAgICAgICAgZXhlYygiZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAqIikKKworCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suY2FsbGVkLCAiY2FsbGVkIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9jb3VudCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9jb3VudCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2sucmV0dXJuX3ZhbHVlLCBNb2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5fdmFsdWUgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RfY2FsbHMgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgIyBDYW4ndCB1c2UgaGFzYXR0ciBmb3IgdGhpcyB0ZXN0IGFzIGl0IGFsd2F5cyByZXR1cm5zIFRydWUgb24gYSBtb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ19pdGVtcycgaW4gbW9jay5fX2RpY3RfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCBtb2NrIHNob3VsZCBub3QgaGF2ZSAnX2l0ZW1zJyBhdHRyaWJ1dGUiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vY2suX21vY2tfcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyZW50IG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb2NrLl9tb2NrX21ldGhvZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfY2hpbGRyZW4sIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiBub3QgaW5pdGlhbGlzZWQgaW5jb3JyZWN0bHkiKQorCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fdmFsdWVfaW5fY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb2NrLnJldHVybl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiB2YWx1ZSBpbiBjb25zdHJ1Y3RvciBub3QgaG9ub3VyZWQiKQorCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhuYW1lPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEluKCdmb28nLCByZXByKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEluKCInJXMnIiAlIGlkKG1vY2spLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2tzID0gWyhNb2NrKCksICdtb2NrJyksIChNb2NrKG5hbWU9J2JhcicpLCAnYmFyJyldCisgICAgICAgIGZvciBtb2NrLCBuYW1lIGluIG1vY2tzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMuYmFyJyAlIG5hbWUsIHJlcHIobW9jay5iYXIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMuZm9vKCknICUgbmFtZSwgcmVwcihtb2NrLmZvbygpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmZvbygpLmJpbmcnICUgbmFtZSwgcmVwcihtb2NrLmZvbygpLmJpbmcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKScgJSBuYW1lLCByZXByKG1vY2soKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcygpKCknICUgbmFtZSwgcmVwcihtb2NrKCkoKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcygpKCkuZm9vLmJhci5iYXooKS5iaW5nJyAlIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobW9jaygpKCkuZm9vLmJhci5iYXooKS5iaW5nKSkKKworCisgICAgZGVmIHRlc3RfcmVwcl93aXRoX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjPSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCgpKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlYz0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlY19zZXQ9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCgpKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlY19zZXQ9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YLCBuYW1lPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlYz0nWCcgIiwgcmVwcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J2ZvbycgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhuYW1lPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJzcGVjIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNwZWMiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9Wydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic3BlYyIsIHJlcHIobW9jaykpCisKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisKKyAgICAgICAgZGVmIGVmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoJ2thYmxvb2llJykKKworICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gZWZmZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yLCBtb2NrLCAxLCAyLCBmaXNoPTMpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIGZpc2g9MykKKworICAgICAgICByZXN1bHRzID0gWzEsIDIsIDNdCisgICAgICAgIGRlZiBlZmZlY3QoKToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHRzLnBvcCgpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBlZmZlY3QKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWzMsIDIsIDFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZSBlZmZlY3Qgbm90IHVzZWQgY29ycmVjdGx5IikKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zZW50aW5lbC5TaWRlRWZmZWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc2lkZV9lZmZlY3QsIHNlbnRpbmVsLlNpZGVFZmZlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlIGVmZmVjdCBpbiBjb25zdHJ1Y3RvciBub3QgdXNlZCIpCisKKyAgICAgICAgZGVmIHNpZGVfZWZmZWN0KCk6CisgICAgICAgICAgICByZXR1cm4gREVGQVVMVAorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCwgcmV0dXJuX3ZhbHVlPXNlbnRpbmVsLlJFVFVSTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHNlbnRpbmVsLlJFVFVSTikKKworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoJ2phdmEnIGluIHN5cy5wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdGVzdCBvbmx5IGFwcGxpZXMgdG8gSnl0aG9uJykKKyAgICBkZWYgdGVzdF9qYXZhX2V4Y2VwdGlvbl9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgaW1wb3J0IGphdmEKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9amF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24oIkJvb20hIikpCisKKyAgICAgICAgIyBjYW4ndCB1c2UgYXNzZXJ0UmFpc2VzIHdpdGggamF2YSBleGNlcHRpb25zCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vY2soMSwgMiwgZmlzaD0zKQorICAgICAgICBleGNlcHQgamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2phdmEgZXhjZXB0aW9uIG5vdCByYWlzZWQnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLDIsIGZpc2g9MykKKworCisgICAgZGVmIHRlc3RfcmVzZXRfbW9jayhzZWxmKToKKyAgICAgICAgcGFyZW50ID0gTW9jaygpCisgICAgICAgIHNwZWMgPSBbInNvbWV0aGluZyJdCisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9ImNoaWxkIiwgcGFyZW50PXBhcmVudCwgc3BlYz1zcGVjKQorICAgICAgICBtb2NrKHNlbnRpbmVsLlNvbWV0aGluZywgc29tZXRoaW5nPXNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UpCisgICAgICAgIHNvbWV0aGluZyA9IG1vY2suc29tZXRoaW5nCisgICAgICAgIG1vY2suc29tZXRoaW5nKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IHNlbnRpbmVsLlNpZGVFZmZlY3QKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gbW9jay5yZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuX3ZhbHVlKCkKKworICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19uYW1lLCAiY2hpbGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIGluY29ycmVjdGx5IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX3BhcmVudCwgcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJlbnQgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfbWV0aG9kcywgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyBpbmNvcnJlY3RseSByZXNldCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9jb3VudCwgMCwgImNhbGxfY291bnQgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywgTm9uZSwgImNhbGxfYXJncyBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFtdLCAiY2FsbF9hcmdzX2xpc3Qgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kX2NhbGxzIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHk6ICVyICE9ICVyIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAobW9jay5tZXRob2RfY2FsbHMsIFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zaWRlX2VmZmVjdCwgc2VudGluZWwuU2lkZUVmZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVfZWZmZWN0IGluY29ycmVjdGx5IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnJldHVybl92YWx1ZSwgcmV0dXJuX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuX3ZhbHVlIGluY29ycmVjdGx5IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXR1cm5fdmFsdWUuY2FsbGVkLCAicmV0dXJuIHZhbHVlIG1vY2sgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX2NoaWxkcmVuLCB7J3NvbWV0aGluZyc6IHNvbWV0aGluZ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiByZXNldCBpbmNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zb21ldGhpbmcsIHNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIGluY29ycmVjdGx5IGNsZWFyZWQiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suc29tZXRoaW5nLmNhbGxlZCwgImNoaWxkIG5vdCByZXNldCIpCisKKworICAgIGRlZiB0ZXN0X3Jlc2V0X21vY2tfcmVjdXJzaW9uKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gbW9jaworCisgICAgICAgICMgdXNlZCB0byBjYXVzZSByZWN1cnNpb24KKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobW9jay5yZXR1cm5fdmFsdWUsIE1vY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgIkRlZmF1bHQgcmV0dXJuX3ZhbHVlIHNob3VsZCBiZSBhIE1vY2siKQorCisgICAgICAgIHJlc3VsdCA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaWZmZXJlbnQgcmVzdWx0IGZyb20gY29uc2VjdXRpdmUgY2FsbHMiKQorICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorCisgICAgICAgIHJldF92YWwgPSBtb2NrKHNlbnRpbmVsLkFyZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suY2FsbGVkLCAiY2FsbGVkIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9jb3VudCwgMSwgImNhbGxfY291bnQgaW5jb3JlZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywgKChzZW50aW5lbC5BcmcsKSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3Mgbm90IHNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgWygoc2VudGluZWwuQXJnLCksIHt9KV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJnc19saXN0IG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gc2VudGluZWwuUmV0dXJuVmFsdWUKKyAgICAgICAgcmV0X3ZhbCA9IG1vY2soc2VudGluZWwuQXJnLCBrZXk9c2VudGluZWwuS2V5QXJnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldF92YWwsIHNlbnRpbmVsLlJldHVyblZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvcnJlY3QgcmV0dXJuIHZhbHVlIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9jb3VudCwgMiwgImNhbGxfY291bnQgaW5jb3JyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7J2tleSc6IHNlbnRpbmVsLktleUFyZ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3Mgbm90IHNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgWworICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwge30pLAorICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeydrZXknOiBzZW50aW5lbC5LZXlBcmd9KQorICAgICAgICBdLAorICAgICAgICAgICAgImNhbGxfYXJnc19saXN0IG5vdCBzZXQiKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2FyZ3NfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKCkKKyAgICAgICAgbW9jayhzZW50aW5lbC5BcmcpCisgICAgICAgIG1vY2soa3c9c2VudGluZWwuS3dhcmcpCisgICAgICAgIG1vY2soc2VudGluZWwuQXJnLCBrdz1zZW50aW5lbC5Ld2FyZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbCisgICAgICAgICAgICAoKSwKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksKSwKKyAgICAgICAgICAgICh7Imt3Ijogc2VudGluZWwuS3dhcmd9LCksCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7Imt3Ijogc2VudGluZWwuS3dhcmd9KQorICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsia3ciOiBzZW50aW5lbC5Ld2FyZ30pKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygpCisKKyAgICAgICAgIyBXaWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBmYWlscworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCwgMSkKKworICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgpCisKKyAgICAgICAgbW9jaygxLCAyLCAzLCBhPSdmaXNoJywgYj0nbm90aGluZycpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIDMsIGE9J2Zpc2gnLCBiPSdub3RoaW5nJykKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygpCisKKyAgICAgICAgIyBXaWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBmYWlscworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgpCisKKyAgICAgICAgbW9jaygnZm9vJywgJ2JhcicsIGJhej0yKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nLCAnYmFyJywgYmF6PTIpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgbW9jaygnZm9vJywgJ2JhcicsIGJhej0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgbGFtYmRhOiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdib2InLCAnYmFyJywgYmF6PTIpCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlX2FjY2Vzc19yZXR1cm5zX21vY2tzKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNvbWV0aGluZyA9IG1vY2suc29tZXRoaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShzb21ldGhpbmcsIE1vY2spLCAiYXR0cmlidXRlIGlzbid0IGEgbW9jayIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zb21ldGhpbmcsIHNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IGF0dHJpYnV0ZXMgcmV0dXJuZWQgZm9yIHNhbWUgbmFtZSIpCisKKyAgICAgICAgIyBVc2FnZSBleGFtcGxlCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcucmV0dXJuX3ZhbHVlID0gMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zb21ldGhpbmcoKSwgMywgIm1ldGhvZCByZXR1cm5lZCB3cm9uZyB2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLnNvbWV0aGluZy5jYWxsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kIGRpZG4ndCByZWNvcmQgYmVpbmcgY2FsbGVkIikKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc19oYXZlX25hbWVfYW5kX3BhcmVudF9zZXQoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc29tZXRoaW5nID0gbW9jay5zb21ldGhpbmcKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZy5fbW9ja19uYW1lLCAic29tZXRoaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIG5hbWUgbm90IHNldCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZy5fbW9ja19wYXJlbnQsIG1vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBwYXJlbnQgbm90IHNldCBjb3JyZWN0bHkiKQorCisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2FsbHNfcmVjb3JkZWQoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoMywgZmlzaD1Ob25lKQorICAgICAgICBtb2NrLnNvbWV0aGluZ19lbHNlLnNvbWV0aGluZyg2LCBjYWtlPXNlbnRpbmVsLkNha2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZ19lbHNlLm1ldGhvZF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWygic29tZXRoaW5nIiwgKDYsKSwgeydjYWtlJzogc2VudGluZWwuQ2FrZX0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBjYWxscyBub3QgcmVjb3JkZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWworICAgICAgICAgICAgKCJzb21ldGhpbmciLCAoMywpLCB7J2Zpc2gnOiBOb25lfSksCisgICAgICAgICAgICAoInNvbWV0aGluZ19lbHNlLnNvbWV0aGluZyIsICg2LCksIHsnY2FrZSc6IHNlbnRpbmVsLkNha2V9KQorICAgICAgICBdLAorICAgICAgICAgICAgIm1ldGhvZCBjYWxscyBub3QgcmVjb3JkZWQgY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzX2NvbXBhcmVfZWFzaWx5KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWygnc29tZXRoaW5nJywpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWygnc29tZXRoaW5nJywgKCksIHt9KV0pCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygnZGlmZmVyZW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWygnc29tZXRoaW5nJywgKCdkaWZmZXJlbnQnLCkpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKCdzb21ldGhpbmcnLCAoJ2RpZmZlcmVudCcsKSwge30pXSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKHg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWygnc29tZXRoaW5nJywgeyd4JzogMX0pXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWygnc29tZXRoaW5nJywgKCksIHsneCc6IDF9KV0pCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygnZGlmZmVyZW50Jywgc29tZT0nbW9yZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsKKyAgICAgICAgICAgICgnc29tZXRoaW5nJywgKCdkaWZmZXJlbnQnLCksIHsnc29tZSc6ICdtb3JlJ30pCisgICAgICAgIF0pCisKKworICAgIGRlZiB0ZXN0X29ubHlfYWxsb3dlZF9tZXRob2RzX2V4aXN0KHNlbGYpOgorICAgICAgICBmb3Igc3BlYyBpbiBbJ3NvbWV0aGluZyddLCAoJ3NvbWV0aGluZycsKToKKyAgICAgICAgICAgIGZvciBhcmcgaW4gJ3NwZWMnLCAnc3BlY19zZXQnOgorICAgICAgICAgICAgICAgIG1vY2sgPSBNb2NrKCoqe2FyZzogc3BlY30pCisKKyAgICAgICAgICAgICAgICAjIHRoaXMgc2hvdWxkIGJlIGFsbG93ZWQKKyAgICAgICAgICAgICAgICBtb2NrLnNvbWV0aGluZworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc29tZXRoaW5nX2Vsc2UnIiwKKyAgICAgICAgICAgICAgICAgICAgZ2V0YXR0ciwgbW9jaywgJ3NvbWV0aGluZ19lbHNlJworICAgICAgICAgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfZnJvbV9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIHggPSAzCisgICAgICAgICAgICBfX3NvbWV0aGluZ19fID0gTm9uZQorICAgICAgICAgICAgZGVmIHkoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMobW9jayk6CisgICAgICAgICAgICAjIHNob3VsZCB3b3JrCisgICAgICAgICAgICBtb2NrLngKKyAgICAgICAgICAgIG1vY2sueQorICAgICAgICAgICAgbW9jay5fX3NvbWV0aGluZ19fCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICd6JyIsCisgICAgICAgICAgICAgICAgZ2V0YXR0ciwgbW9jaywgJ3onCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdfX2Zvb2Jhcl9fJyIsCisgICAgICAgICAgICAgICAgZ2V0YXR0ciwgbW9jaywgJ19fZm9vYmFyX18nCisgICAgICAgICAgICApCisKKyAgICAgICAgdGVzdF9hdHRyaWJ1dGVzKE1vY2soc3BlYz1Tb21ldGhpbmcpKQorICAgICAgICB0ZXN0X2F0dHJpYnV0ZXMoTW9jayhzcGVjPVNvbWV0aGluZygpKSkKKworCisgICAgZGVmIHRlc3Rfd3JhcHNfY2FsbHMoc2VsZik6CisgICAgICAgIHJlYWwgPSBNb2NrKCkKKworICAgICAgICBtb2NrID0gTW9jayh3cmFwcz1yZWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgcmVhbCgpKQorCisgICAgICAgIHJlYWwucmVzZXRfbW9jaygpCisKKyAgICAgICAgbW9jaygxLCAyLCBmaXNoPTMpCisgICAgICAgIHJlYWwuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIGZpc2g9MykKKworCisgICAgZGVmIHRlc3Rfd3JhcHNfY2FsbF93aXRoX25vbmRlZmF1bHRfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICByZWFsID0gTW9jaygpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSAzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVhbC5jYWxsZWQpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFJlYWwob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IE1vY2soKQorCisgICAgICAgIHJlYWwgPSBSZWFsKCkKKworICAgICAgICBtb2NrID0gTW9jayh3cmFwcz1yZWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suYXR0cmlidXRlKCksIHJlYWwuYXR0cmlidXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suZmlzaCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG1vY2suYXR0cmlidXRlLCByZWFsLmF0dHJpYnV0ZSkKKyAgICAgICAgcmVzdWx0ID0gbW9jay5hdHRyaWJ1dGUuZnJvZygxLCAyLCBmaXNoPTMpCisgICAgICAgIFJlYWwuYXR0cmlidXRlLmZyb2cuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIGZpc2g9MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFJlYWwuYXR0cmlidXRlLmZyb2coKSkKKworCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uYWxfc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUF0dHJpYnV0ZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbW9jaykKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1BdHRyaWJ1dGVFcnJvcignZm9vJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9iYXNlZXhjZXB0aW9uYWxfc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUtleWJvYXJkSW50ZXJydXB0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwgbW9jaykKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1LZXlib2FyZEludGVycnVwdCgnZm9vJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50ZXJydXB0LCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX3dpdGhfbWVzc2FnZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEFzc2VydGlvbkVycm9yLCAnTm90IGNhbGxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhuYW1lPSdnZW9mZnJleScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICByIkV4cGVjdGVkICdnZW9mZnJleScgdG8gYmUgY2FsbGVkIG9uY2VcLiIsCisgICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisKKyAgICBkZWYgdGVzdF9fbmFtZV9fKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19uYW1lX18pCisKKyAgICAgICAgbW9jay5fX25hbWVfXyA9ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fX25hbWVfXywgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfbGlzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViKGxpc3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVN1YihbJ2ZvbyddKSkKKworICAgICAgICBtb2NrLmFwcGVuZCgzKQorICAgICAgICBtb2NrLmFwcGVuZC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrLCBYKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLl9fY2xhc3NfXywgWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2NrKCkuX19jbGFzc19fLl9fbmFtZV9fLCAnTW9jaycpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrLCBYKSkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ19hdHRyaWJ1dGVfd2l0aF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgeSA9IDMKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgpCisgICAgICAgIG1vY2sueCA9ICdmb28nCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCkKKyAgICAgICAgZGVmIHNldF9hdHRyKCk6CisgICAgICAgICAgICBtb2NrLnggPSAnZm9vJworCisgICAgICAgIG1vY2sueSA9ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfYXR0cikKKworCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgY3VycmVudCA9IHN5cy5nZXRyZWN1cnNpb25saW1pdCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0cmVjdXJzaW9ubGltaXQsIGN1cnJlbnQpCisKKyAgICAgICAgIyBjYW4ndCB1c2Ugc3lzLm1heGludCBhcyB0aGlzIGRvZXNuJ3QgZXhpc3QgaW4gUHl0aG9uIDMKKyAgICAgICAgc3lzLnNldHJlY3Vyc2lvbmxpbWl0KGludCgxMGU4KSkKKyAgICAgICAgIyB0aGlzIHNlZ2ZhdWx0cyB3aXRob3V0IHRoZSBmaXggaW4gcGxhY2UKKyAgICAgICAgY29weS5jb3B5KE1vY2soKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Nfd2l0aF9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWJDbGFzcyhNb2NrKToKKyAgICAgICAgICAgIGRlZiBfZ2V0KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAzCisgICAgICAgICAgICBkZWYgX3NldChzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdzdHJhbmdlIGVycm9yJykKKyAgICAgICAgICAgIHNvbWVfYXR0cmlidXRlID0gcHJvcGVydHkoX2dldCwgX3NldCkKKworICAgICAgICBzID0gU3ViQ2xhc3Moc3BlY19zZXQ9U3ViQ2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zb21lX2F0dHJpYnV0ZSwgMykKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcy5zb21lX2F0dHJpYnV0ZSA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCB0ZXN0KQorCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzLmZvbyA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorCisKKyAgICBkZWYgdGVzdF9zZXR0aW5nX2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfY2FsbChhKQorCisgICAgICAgIHR5cGUobW9jaykuX19jYWxsX18gPSBfX2NhbGxfXworICAgICAgICBtb2NrKCdvbmUnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnb25lJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2ssICdvbmUnLCAndHdvJykKKworCisgICAgZGVmIHRlc3RfZGlyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGF0dHJzID0gc2V0KGRpcihtb2NrKSkKKyAgICAgICAgdHlwZV9hdHRycyA9IHNldChbbSBmb3IgbSBpbiBkaXIoTW9jaykgaWYgbm90IG0uc3RhcnRzd2l0aCgnXycpXSkKKworICAgICAgICAjIGFsbCBwdWJsaWMgYXR0cmlidXRlcyBmcm9tIHRoZSB0eXBlIGFyZSBpbmNsdWRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCB0eXBlX2F0dHJzIC0gYXR0cnMpCisKKyAgICAgICAgIyBjcmVhdGVzIHRoZXNlIGF0dHJpYnV0ZXMKKyAgICAgICAgbW9jay5hLCBtb2NrLmIKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYScsIGRpcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYicsIGRpcihtb2NrKSkKKworICAgICAgICAjIGluc3RhbmNlIGF0dHJpYnV0ZXMKKyAgICAgICAgbW9jay5jID0gbW9jay5kID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEluKCdjJywgZGlyKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkJywgZGlyKG1vY2spKQorCisgICAgICAgICMgbWFnaWMgbWV0aG9kcworICAgICAgICBtb2NrLl9faXRlcl9fID0gbGFtYmRhIHM6IGl0ZXIoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faXRlcl9fJywgZGlyKG1vY2spKQorCisKKyAgICBkZWYgdGVzdF9kaXJfZnJvbV9zcGVjKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzcGVjPXVuaXR0ZXN0LlRlc3RDYXNlKQorICAgICAgICB0ZXN0Y2FzZV9hdHRycyA9IHNldChkaXIodW5pdHRlc3QuVGVzdENhc2UpKQorICAgICAgICBhdHRycyA9IHNldChkaXIobW9jaykpCisKKyAgICAgICAgIyBhbGwgYXR0cmlidXRlcyBmcm9tIHRoZSBzcGVjIGFyZSBpbmNsdWRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCB0ZXN0Y2FzZV9hdHRycyAtIGF0dHJzKQorCisgICAgICAgICMgc2hhZG93IGEgc3lzIGF0dHJpYnV0ZQorICAgICAgICBtb2NrLnZlcnNpb24gPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKG1vY2spLmNvdW50KCd2ZXJzaW9uJyksIDEpCisKKworICAgIGRlZiB0ZXN0X2ZpbHRlcl9kaXIoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QobW9jaywgJ0ZJTFRFUl9ESVInLCBGYWxzZSkKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGF0dHJzID0gc2V0KGRpcihNb2NrKCkpKQorICAgICAgICAgICAgdHlwZV9hdHRycyA9IHNldChkaXIoTW9jaykpCisKKyAgICAgICAgICAgICMgQUxMIGF0dHJpYnV0ZXMgZnJvbSB0aGUgdHlwZSBhcmUgaW5jbHVkZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIHR5cGVfYXR0cnMgLSBhdHRycykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X2NvbmZpZ3VyZV9tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhmb289J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28sICdiYXInKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soZm9vPSdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLCAnYmFyJykKKworICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorICAgICAgICBtb2NrID0gTW9jaygqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suY29uZmlndXJlX21vY2soKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKworICAgIGRlZiBhc3NlcnRSYWlzZXNXaXRoTXNnKHNlbGYsIGV4Y2VwdGlvbiwgbWVzc2FnZSwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBuZWVkZWQgYmVjYXVzZSBhc3NlcnRSYWlzZXNSZWdleCBkb2Vzbid0IHdvcmsgZWFzaWx5IHdpdGggbmV3bGluZXMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGluc3RhbmNlID0gc3lzLmV4Y19pbmZvKClbMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbnN0YW5jZSwgZXhjZXB0aW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdFeGNlcHRpb24gJXIgbm90IHJhaXNlZCcgJSAoZXhjZXB0aW9uLCkpCisKKyAgICAgICAgbXNnID0gc3RyKGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgbWVzc2FnZSkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoX2ZhaWx1cmVfbWVzc2FnZShzZWxmKToKKyAgICAgICAgbW9jayA9IE5vbkNhbGxhYmxlTW9jaygpCisKKyAgICAgICAgZXhwZWN0ZWQgPSAibW9jaygxLCAnMicsIDMsIGJhcj0nZm9vJykiCisgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbk5vdCBjYWxsZWQnCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCksCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCwgMSwgJzInLCAzLCBiYXI9J2ZvbycKKyAgICAgICAgKQorCisgICAgICAgIG1vY2suZm9vKDEsICcyJywgMywgZm9vPSdmb28nKQorCisKKyAgICAgICAgYXNzZXJ0ZXJzID0gWworICAgICAgICAgICAgbW9jay5mb28uYXNzZXJ0X2NhbGxlZF93aXRoLCBtb2NrLmZvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aAorICAgICAgICBdCisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKDEsICcyJywgMywgYmFyPSdmb28nKSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwgYWN0dWFsKSwKKyAgICAgICAgICAgICAgICBtZXRoLCAxLCAnMicsIDMsIGJhcj0nZm9vJworICAgICAgICAgICAgKQorCisgICAgICAgICMganVzdCBrd2FyZ3MKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oYmFyPSdmb28nKSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwgYWN0dWFsKSwKKyAgICAgICAgICAgICAgICBtZXRoLCBiYXI9J2ZvbycKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGp1c3QgYXJncworICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbygxLCAyLCAzKSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwgYWN0dWFsKSwKKyAgICAgICAgICAgICAgICBtZXRoLCAxLCAyLCAzCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBlbXB0eQorICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbygpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLCBtZXRoCisgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorCisgICAgICAgICMgbmVlZCB0byBkbyB0aGlzIGJlY2F1c2UgTWFnaWNNb2NrLm1vY2tfY2FsbHMgdXNlZCB0byBqdXN0IHJldHVybgorICAgICAgICAjIGEgTWFnaWNNb2NrIHdoaWNoIGFsc28gcmV0dXJuZWQgYSBNYWdpY01vY2sgd2hlbiBfX2VxX18gd2FzIGNhbGxlZAorICAgICAgICBzZWxmLmFzc2VydElzKG1vY2subW9ja19jYWxscyA9PSBbXSwgVHJ1ZSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygpCisgICAgICAgIGV4cGVjdGVkID0gWygnJywgKCksIHt9KV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorCisgICAgICAgIG1vY2suZm9vKCkKKyAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKGNhbGwuZm9vKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgIyBpbnRlcm1lZGlhdGUgbW9ja19jYWxscyB3b3JrIHRvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLm1vY2tfY2FsbHMsIFsoJycsICgpLCB7fSldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKCkuZm9vKDEsIDIsIDMsIGE9NCwgYj01KQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnJywgKCksIHt9KSwgKCcoKS5mb28nLCAoMSwgMiwgMyksIGRpY3QoYT00LCBiPTUpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnJldHVybl92YWx1ZS5mb28ubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKCcnLCAoMSwgMiwgMyksIGRpY3QoYT00LCBiPTUpKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKCdmb28nLCAoMSwgMiwgMyksIGRpY3QoYT00LCBiPTUpKV0pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soKS5mb28uYmFyKCkuYmF6KCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJycsICgpLCB7fSksICgnKCkuZm9vLmJhcicsICgpLCB7fSksCisgICAgICAgICAgICAoJygpLmZvby5iYXIoKS5iYXonLCAoKSwge30pCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwuZm9vLmJhcigpLmJheigpLmNhbGxfbGlzdCgpKQorCisgICAgICAgIGZvciBrd2FyZ3MgaW4gZGljdCgpLCBkaWN0KG5hbWU9J2JhcicpOgorICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIGludChtb2NrLmZvbykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gWygnZm9vLl9faW50X18nLCAoKSwge30pXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgbW9jay5hKCkoKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBbKCdhJywgKCksIHt9KSwgKCdhKCknLCAoKSwge30pXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmEoKS5tb2NrX2NhbGxzLCBbY2FsbCgpXSkKKworICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIG1vY2soMSkoMikoMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBjYWxsKDEpKDIpKDMpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkubW9ja19jYWxscywgY2FsbCgyKSgzKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpKCkubW9ja19jYWxscywgY2FsbCgzKS5jYWxsX2xpc3QoKSkKKworICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIG1vY2soMSkoMikoMykuYS5iLmMoNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKDEpKDIpKDMpLmEuYi5jKDQpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgyKSgzKS5hLmIuYyg0KS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgzKS5hLmIuYyg0KS5jYWxsX2xpc3QoKSkKKworICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIGludChtb2NrKCkuZm9vLmJhcigpLmJheigpKQorICAgICAgICAgICAgbGFzdF9jYWxsID0gKCcoKS5mb28uYmFyKCkuYmF6KCkuX19pbnRfXycsICgpLCB7fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzWy0xXSwgbGFzdF9jYWxsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5mb28uYmFyKCkuYmF6KCkuX19pbnRfXygpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkuZm9vLmJhcigpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwuYmF6KCkuX19pbnRfXygpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkuZm9vLmJhcigpLmJhei5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKCkuX19pbnRfXygpLmNhbGxfbGlzdCgpKQorCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViY2xhc3MoTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IFN1YmNsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBTdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2soKSwgU3ViY2xhc3MpCisKKyAgICAgICAgY2xhc3MgU3ViY2xhc3MoTW9jayk6CisgICAgICAgICAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9jaygqKmt3YXJncykKKworICAgICAgICBtb2NrID0gU3ViY2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UobW9jay5mb28sIFN1YmNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UobW9jaygpLCBTdWJjbGFzcykKKworCisgICAgZGVmIHRlc3RfYXJnX2xpc3RzKHNlbGYpOgorICAgICAgICBtb2NrcyA9IFsKKyAgICAgICAgICAgIE1vY2soKSwKKyAgICAgICAgICAgIE1hZ2ljTW9jaygpLAorICAgICAgICAgICAgTm9uQ2FsbGFibGVNb2NrKCksCisgICAgICAgICAgICBOb25DYWxsYWJsZU1hZ2ljTW9jaygpCisgICAgICAgIF0KKworICAgICAgICBkZWYgYXNzZXJ0X2F0dHJzKG1vY2spOgorICAgICAgICAgICAgbmFtZXMgPSAnY2FsbF9hcmdzX2xpc3QnLCAnbWV0aG9kX2NhbGxzJywgJ21vY2tfY2FsbHMnCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICBhdHRyID0gZ2V0YXR0cihtb2NrLCBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhdHRyLCBfQ2FsbExpc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGF0dHIsIGxpc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyLCBbXSkKKworICAgICAgICBmb3IgbW9jayBpbiBtb2NrczoKKyAgICAgICAgICAgIGFzc2VydF9hdHRycyhtb2NrKQorCisgICAgICAgICAgICBpZiBjYWxsYWJsZShtb2NrKToKKyAgICAgICAgICAgICAgICBtb2NrKCkKKyAgICAgICAgICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgICAgICAgICAgbW9jayhhPTMpCisKKyAgICAgICAgICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICAgICAgICAgIGFzc2VydF9hdHRycyhtb2NrKQorCisgICAgICAgICAgICBtb2NrLmZvbygpCisgICAgICAgICAgICBtb2NrLmZvby5iYXIoMSwgYT0zKQorICAgICAgICAgICAgbW9jay5mb28oMSkuYmFyKCkuYmF6KDMpCisKKyAgICAgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworCisgICAgZGVmIHRlc3RfY2FsbF9hcmdzX3R3b190dXBsZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIGE9MykKKyAgICAgICAgbW9jaygyLCBiPTQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9jay5jYWxsX2FyZ3MpLCAyKQorICAgICAgICBhcmdzLCBrd2FyZ3MgPSBtb2NrLmNhbGxfYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgyLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa3dhcmdzLCBkaWN0KGI9NCkpCisKKyAgICAgICAgZXhwZWN0ZWRfbGlzdCA9IFsoKDEsKSwgZGljdChhPTMpKSwgKCgyLCksIGRpY3QoYj00KSldCisgICAgICAgIGZvciBleHBlY3RlZCwgY2FsbF9hcmdzIGluIHppcChleHBlY3RlZF9saXN0LCBtb2NrLmNhbGxfYXJnc19saXN0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxfYXJncyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkWzBdLCBjYWxsX2FyZ3NbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkWzFdLCBjYWxsX2FyZ3NbMV0pCisKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1pdGVyKFsxLCAyLCAzXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1bJ2EnLCAnYicsICdjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbJ2EnLCAnYicsICdjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9J2doaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbJ2cnLCAnaCcsICdpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9Rm9vKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaygpLCBGb28pCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9SXRlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpLCBtb2NrKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndGhpcycsICdpcycsICdhbicsICdpdGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X2l0ZXJhdG9yX2V4Y2VwdGlvbnMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBpdGVyYWJsZSA9IChWYWx1ZUVycm9yLCAzLCBLZXlFcnJvciwgNikKKyAgICAgICAgICAgIG0gPSBLbGFzcyhzaWRlX2VmZmVjdD1pdGVyYWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0oKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtKCksIDYpCisKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X3NldHRpbmdfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IGl0ZXIoWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorICAgICAgICBzaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZGVfZWZmZWN0LCB0eXBlKGl0ZXIoW10pKSkKKworICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gWydhJywgJ2InLCAnYyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbJ2EnLCAnYicsICdjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisgICAgICAgIHNpZGVfZWZmZWN0ID0gbW9jay5zaWRlX2VmZmVjdAorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lkZV9lZmZlY3QsIHR5cGUoaXRlcihbXSkpKQorCisgICAgICAgIHRoaXNfaXRlciA9IEl0ZXIoKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gdGhpc19pdGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCksIG1vY2soKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyd0aGlzJywgJ2lzJywgJ2FuJywgJ2l0ZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLnNpZGVfZWZmZWN0LCB0aGlzX2l0ZXIpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9oYXNfY2FsbHNfYW55X29yZGVyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jayhhPTMpCisgICAgICAgIG1vY2soMywgNCkKKyAgICAgICAgbW9jayhiPTYpCisgICAgICAgIG1vY2soYj02KQorCisgICAgICAgIGthbGxzID0gWworICAgICAgICAgICAgY2FsbCgxLCAyKSwgKHsnYSc6IDN9LCksCisgICAgICAgICAgICAoKDMsIDQpLCksICgoKSwgeydhJzogM30pLAorICAgICAgICAgICAgKCcnLCAoMSwgMikpLCAoJycsIHsnYSc6IDN9KSwKKyAgICAgICAgICAgICgnJywgKDEsIDIpLCB7fSksICgnJywgKCksIHsnYSc6IDN9KQorICAgICAgICBdCisgICAgICAgIGZvciBrYWxsIGluIGthbGxzOgorICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKFtrYWxsXSwgYW55X29yZGVyPVRydWUpCisKKyAgICAgICAgZm9yIGthbGwgaW4gY2FsbCgxLCAnMicpLCBjYWxsKGI9MyksIGNhbGwoKSwgMywgTm9uZSwgJ2Zvbyc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfaGFzX2NhbGxzLAorICAgICAgICAgICAgICAgIFtrYWxsXSwgYW55X29yZGVyPVRydWUKKyAgICAgICAgICAgICkKKworICAgICAgICBrYWxsX2xpc3RzID0gWworICAgICAgICAgICAgW2NhbGwoMSwgMiksIGNhbGwoYj02KV0sCisgICAgICAgICAgICBbY2FsbCgzLCA0KSwgY2FsbCgxLCAyKV0sCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKGI9NildLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGthbGxfbGlzdCBpbiBrYWxsX2xpc3RzOgorICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKGthbGxfbGlzdCwgYW55X29yZGVyPVRydWUpCisKKyAgICAgICAga2FsbF9saXN0cyA9IFsKKyAgICAgICAgICAgIFtjYWxsKGI9NiksIGNhbGwoYj02KSwgY2FsbChiPTYpXSwKKyAgICAgICAgICAgIFtjYWxsKDEsIDIpLCBjYWxsKDEsIDIpXSwKKyAgICAgICAgICAgIFtjYWxsKDMsIDQpLCBjYWxsKDEsIDIpLCBjYWxsKDUsIDcpXSwKKyAgICAgICAgICAgIFtjYWxsKGI9NiksIGNhbGwoMywgNCksIGNhbGwoYj02KSwgY2FsbCgxLCAyKSwgY2FsbChiPTYpXSwKKyAgICAgICAgXQorICAgICAgICBmb3Iga2FsbF9saXN0IGluIGthbGxfbGlzdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfaGFzX2NhbGxzLAorICAgICAgICAgICAgICAgIGthbGxfbGlzdCwgYW55X29yZGVyPVRydWUKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9oYXNfY2FsbHMoc2VsZik6CisgICAgICAgIGthbGxzMSA9IFsKKyAgICAgICAgICAgICAgICBjYWxsKDEsIDIpLCAoeydhJzogM30sKSwKKyAgICAgICAgICAgICAgICAoKDMsIDQpLCksIGNhbGwoYj02KSwKKyAgICAgICAgICAgICAgICAoJycsICgxLCksIHsnYic6IDZ9KSwKKyAgICAgICAgXQorICAgICAgICBrYWxsczIgPSBbY2FsbC5mb28oKSwgY2FsbC5iYXIoMSldCisgICAgICAgIGthbGxzMi5leHRlbmQoY2FsbC5zcGFtKCkuYmF6KGE9MykuY2FsbF9saXN0KCkpCisgICAgICAgIGthbGxzMi5leHRlbmQoY2FsbC5iYW0oc2V0KCksIGZvbz17fSkuZmlzaChbMV0pLmNhbGxfbGlzdCgpKQorCisgICAgICAgIG1vY2tzID0gW10KKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgICAgIG1vY2soYT0zKQorICAgICAgICAgICAgbW9jaygzLCA0KQorICAgICAgICAgICAgbW9jayhiPTYpCisgICAgICAgICAgICBtb2NrKDEsIGI9NikKKyAgICAgICAgICAgIG1vY2tzLmFwcGVuZCgobW9jaywga2FsbHMxKSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suZm9vKCkKKyAgICAgICAgbW9jay5iYXIoMSkKKyAgICAgICAgbW9jay5zcGFtKCkuYmF6KGE9MykKKyAgICAgICAgbW9jay5iYW0oc2V0KCksIGZvbz17fSkuZmlzaChbMV0pCisgICAgICAgIG1vY2tzLmFwcGVuZCgobW9jaywga2FsbHMyKSkKKworICAgICAgICBmb3IgbW9jaywga2FsbHMgaW4gbW9ja3M6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oa2FsbHMpKToKKyAgICAgICAgICAgICAgICBmb3Igc3RlcCBpbiAxLCAyLCAzOgorICAgICAgICAgICAgICAgICAgICB0aGVzZSA9IGthbGxzW2k6aStzdGVwXQorICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHModGhlc2UpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHRoZXNlKSA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyZXZlcnNlZCh0aGVzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9hbnlfY2FsbChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDEsIGI9NikKKworICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCAyKQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbChhPTMpCisgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsKDEsIGI9NikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwsCisgICAgICAgICAgICAxLCAzCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsLAorICAgICAgICAgICAgYT00CisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbW9ja19jYWxsc19jcmVhdGVfYXV0b3NwZWMoc2VsZik6CisgICAgICAgIGRlZiBmKGEsIGIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBvYmogPSBJdGVyKCkKKyAgICAgICAgb2JqLmYgPSBmCisKKyAgICAgICAgZnVuY3MgPSBbCisgICAgICAgICAgICBjcmVhdGVfYXV0b3NwZWMoZiksCisgICAgICAgICAgICBjcmVhdGVfYXV0b3NwZWMob2JqKS5mCisgICAgICAgIF0KKyAgICAgICAgZm9yIGZ1bmMgaW4gZnVuY3M6CisgICAgICAgICAgICBmdW5jKDEsIDIpCisgICAgICAgICAgICBmdW5jKDMsIDQpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZnVuYy5tb2NrX2NhbGxzLCBbY2FsbCgxLCAyKSwgY2FsbCgzLCA0KV0KKyAgICAgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgX09uZShvYmplY3QpOgorICAgICAgICAgICAgb25lID0gMQorICAgICAgICBjbGFzcyBfVHdvKG9iamVjdCk6CisgICAgICAgICAgICB0d28gPSAyCisgICAgICAgIGNsYXNzIEFueXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBvbmUgPSB0d28gPSB0aHJlZSA9ICdmb3VyJworCisgICAgICAgIGtsYXNzZXMgPSBbCisgICAgICAgICAgICBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2sKKyAgICAgICAgXQorICAgICAgICBmb3IgS2xhc3MgaW4gbGlzdChrbGFzc2VzKToKKyAgICAgICAgICAgIGtsYXNzZXMuYXBwZW5kKGxhbWJkYSBLPUtsYXNzOiBLKHNwZWM9QW55dGhpbmcpKQorICAgICAgICAgICAga2xhc3Nlcy5hcHBlbmQobGFtYmRhIEs9S2xhc3M6IEsoc3BlY19zZXQ9QW55dGhpbmcpKQorCisgICAgICAgIGZvciBLbGFzcyBpbiBrbGFzc2VzOgorICAgICAgICAgICAgZm9yIGt3YXJncyBpbiBkaWN0KCksIGRpY3Qoc3BlY19zZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgICAgICAjbm8gZXJyb3IKKyAgICAgICAgICAgICAgICBtb2NrLm9uZSwgbW9jay50d28sIG1vY2sudGhyZWUKKworICAgICAgICAgICAgICAgIGZvciBPbmUsIFR3byBpbiBbKF9PbmUsIF9Ud28pLCAoWydvbmUnXSwgWyd0d28nXSldOgorICAgICAgICAgICAgICAgICAgICBmb3Iga3dhcmdzIGluIGRpY3QoKSwgZGljdChzcGVjX3NldD1UcnVlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhPbmUsICoqa3dhcmdzKQorCisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICd0d28nCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ3RocmVlJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3NwZWNfc2V0JyBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAndGhyZWUnLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfYWRkX3NwZWMoVHdvLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnb25lJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgbW9jay50d28KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAndGhyZWUnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnc3BlY19zZXQnIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG1vY2ssICd0aHJlZScsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAjIG5vdGUgdGhhdCBjcmVhdGluZyBhIG1vY2ssIHNldHRpbmcgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBhbmQKKyAgICAgICAgICAgICMgKnRoZW4qIHNldHRpbmcgYSBzcGVjIGRvZXNuJ3Qgd29yay4gTm90IHRoZSBpbnRlbmRlZCB1c2UgY2FzZQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjX21hZ2ljX21ldGhvZHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrOgorICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIGludChtb2NrKQorCisgICAgICAgICAgICBtb2NrLm1vY2tfYWRkX3NwZWMob2JqZWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnQsIG1vY2spCisKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrWydmb28nXQorICAgICAgICAgICAgbW9jay5fX2ludF9fLnJldHVybl92YWx1ZSA9NAorCisgICAgICAgICAgICBtb2NrLm1vY2tfYWRkX3NwZWMoaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobW9jayksIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKworICAgIGRlZiB0ZXN0X2FkZGluZ19jaGlsZF9tb2NrKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTm9uQ2FsbGFibGVNb2NrLCBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrOgorICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKworICAgICAgICAgICAgbW9jay5mb28gPSBNb2NrKCkKKyAgICAgICAgICAgIG1vY2suZm9vKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW2NhbGwuZm9vKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsLmZvbygpXSkKKworICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIG1vY2suYmFyID0gTW9jayhuYW1lPSduYW1lJykKKyAgICAgICAgICAgIG1vY2suYmFyKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtdKQorCisgICAgICAgICAgICAjIG1vY2sgd2l0aCBhbiBleGlzdGluZyBfbmV3X3BhcmVudCBidXQgbm8gbmFtZQorICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIG1vY2suYmF6ID0gTWFnaWNNb2NrKCkoKQorICAgICAgICAgICAgbW9jay5iYXooKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW10pCisKKworICAgIGRlZiB0ZXN0X2FkZGluZ19yZXR1cm5fdmFsdWVfbW9jayhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgICAgIG1vY2soKSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwoKSwgY2FsbCgpKCldKQorCisKKyAgICBkZWYgdGVzdF9tYW5hZ2VyX21vY2soc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgb25lID0gJ29uZScKKyAgICAgICAgICAgIHR3byA9ICd0d28nCisgICAgICAgIG1hbmFnZXIgPSBNb2NrKCkKKyAgICAgICAgcDEgPSBwYXRjaC5vYmplY3QoRm9vLCAnb25lJykKKyAgICAgICAgcDIgPSBwYXRjaC5vYmplY3QoRm9vLCAndHdvJykKKworICAgICAgICBtb2NrX29uZSA9IHAxLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAxLnN0b3ApCisgICAgICAgIG1vY2tfdHdvID0gcDIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocDIuc3RvcCkKKworICAgICAgICBtYW5hZ2VyLmF0dGFjaF9tb2NrKG1vY2tfb25lLCAnb25lJykKKyAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhtb2NrX3R3bywgJ3R3bycpCisKKyAgICAgICAgRm9vLnR3bygpCisgICAgICAgIEZvby5vbmUoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5tb2NrX2NhbGxzLCBbY2FsbC50d28oKSwgY2FsbC5vbmUoKV0pCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfbW9ja19jYWxscyhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBtLl9faW50X18gPSBNb2NrKHJldHVybl92YWx1ZT0zKQorICAgICAgICAgICAgbS5fX2Zsb2F0X18gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPTMuMCkKKyAgICAgICAgICAgIGludChtKQorICAgICAgICAgICAgZmxvYXQobSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIFtjYWxsLl9faW50X18oKSwgY2FsbC5fX2Zsb2F0X18oKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzLCBbXSkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlX2RlbGV0aW9uKHNlbGYpOgorICAgICAgICAjIHRoaXMgYmVoYXZpb3VyIGlzbid0ICp1c2VmdWwqLCBidXQgYXQgbGVhc3QgaXQncyBub3cgdGVzdGVkLi4uCisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgb3JpZ2luYWwgPSBtLmZvbworICAgICAgICAgICAgbS5mb28gPSAzCisgICAgICAgICAgICBkZWwgbS5mb28KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5mb28sIG9yaWdpbmFsKQorCisgICAgICAgICAgICBuZXcgPSBtLmZvbyA9IE1vY2soKQorICAgICAgICAgICAgZGVsIG0uZm9vCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZm9vLCBuZXcpCisKKworICAgIGRlZiB0ZXN0X21vY2tfcGFyZW50cyhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBvcmlnaW5hbF9yZXByID0gcmVwcihtKQorICAgICAgICAgICAgbS5yZXR1cm5fdmFsdWUgPSBtCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0oKSwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgb3JpZ2luYWxfcmVwcikKKworICAgICAgICAgICAgbS5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobSgpLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCBvcmlnaW5hbF9yZXByKQorCisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgbS5iID0gbS5hCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmEnIiwgcmVwcihtLmIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5hKSkKKyAgICAgICAgICAgIG0ucmVzZXRfbW9jaygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmEnIiwgcmVwcihtLmIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5hKSkKKworICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG9yaWdpbmFsX3JlcHIgPSByZXByKG0pCisgICAgICAgICAgICBtLmEgPSBtKCkKKyAgICAgICAgICAgIG0uYS5yZXR1cm5fdmFsdWUgPSBtCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgb3JpZ2luYWxfcmVwcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtLmEoKSksIG9yaWdpbmFsX3JlcHIpCisKKworICAgIGRlZiB0ZXN0X2F0dGFjaF9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzc2VzID0gTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrCisgICAgICAgIGZvciBLbGFzcyBpbiBjbGFzc2VzOgorICAgICAgICAgICAgZm9yIEtsYXNzMiBpbiBjbGFzc2VzOgorICAgICAgICAgICAgICAgIG0gPSBLbGFzcygpCisKKyAgICAgICAgICAgICAgICBtMiA9IEtsYXNzMihuYW1lPSdmb28nKQorICAgICAgICAgICAgICAgIG0uYXR0YWNoX21vY2sobTIsICdiYXInKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLmJhciwgbTIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5iYXInIiwgcmVwcihtMikpCisKKyAgICAgICAgICAgICAgICBtLmJhci5iYXooMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgW2NhbGwuYmFyLmJheigxKV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxscywgW2NhbGwuYmFyLmJheigxKV0pCisKKworICAgIGRlZiB0ZXN0X2F0dGFjaF9tb2NrX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgY2xhc3NlcyA9IE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaworICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgZm9yIEtsYXNzMiBpbiBjbGFzc2VzOgorICAgICAgICAgICAgICAgIG0gPSBLbGFzcygpCisKKyAgICAgICAgICAgICAgICBtMiA9IEtsYXNzMihuYW1lPSdmb28nKQorICAgICAgICAgICAgICAgIG0uYXR0YWNoX21vY2sobTIsICdyZXR1cm5fdmFsdWUnKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtKCksIG0yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2soKSciLCByZXByKG0yKSkKKworICAgICAgICAgICAgICAgIG0yLmZvbygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGNhbGwoKS5mb28oKS5jYWxsX2xpc3QoKSkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlX2RlbGV0aW9uKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9jaywgJ20nKSkKKworICAgICAgICAgICAgZGVsIG1vY2subQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdtJykpCisKKyAgICAgICAgICAgIGRlbCBtb2NrLmYKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnZicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdmJykKKworCisgICAgZGVmIHRlc3RfY2xhc3NfYXNzaWduYWJsZShzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtb2NrLCBpbnQpCisKKyAgICAgICAgICAgIG1vY2suX19jbGFzc19fID0gaW50CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgaW50KQorICAgICAgICAgICAgbW9jay5mb28KKworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwOTFiNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpAQCAtMCwwICsxLDE3ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTIgTWljaGFlbCBGb29yZCAmIHRoZSBtb2NrIHRlYW0KKyMgRS1tYWlsOiBmdXp6eW1hbiBBVCB2b2lkc3BhY2UgRE9UIG9yZyBET1QgdWsKKyMgaHR0cDovL3d3dy52b2lkc3BhY2Uub3JnLnVrL3B5dGhvbi9tb2NrLworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2sgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBTb21lQ2xhc3MsIGlzX2luc3RhbmNlCisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAorICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgcGF0Y2gsIHNlbnRpbmVsLAorICAgIE1hZ2ljTW9jaywgTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIHBhdGNoLCBfcGF0Y2gsCisgICAgREVGQVVMVCwgY2FsbCwgX2dldF90YXJnZXQKKykKKworCitidWlsdGluX3N0cmluZyA9ICdidWlsdGlucycKKworUFRNb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KK01PRE5BTUUgPSAnJXMuUFRNb2R1bGUnICUgX19uYW1lX18KKworCitkZWYgX2dldF9wcm94eShvYmosIGdldF9vbmx5PVRydWUpOgorICAgIGNsYXNzIFByb3h5KG9iamVjdCk6CisgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgbmFtZSkKKyAgICBpZiBub3QgZ2V0X29ubHk6CisgICAgICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICAgICBzZXRhdHRyKG9iaiwgbmFtZSwgdmFsdWUpCisgICAgICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIGRlbGF0dHIob2JqLCBuYW1lKQorICAgICAgICBQcm94eS5fX3NldGF0dHJfXyA9IF9fc2V0YXR0cl9fCisgICAgICAgIFByb3h5Ll9fZGVsYXR0cl9fID0gX19kZWxhdHRyX18KKyAgICByZXR1cm4gUHJveHkoKQorCisKKyMgZm9yIHVzZSBpbiB0aGUgdGVzdAorc29tZXRoaW5nICA9IHNlbnRpbmVsLlNvbWV0aGluZworc29tZXRoaW5nX2Vsc2UgID0gc2VudGluZWwuU29tZXRoaW5nRWxzZQorCisKK2NsYXNzIEZvbyhvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhKToKKyAgICAgICAgcGFzcworICAgIGRlZiBmKHNlbGYsIGEpOgorICAgICAgICBwYXNzCisgICAgZGVmIGcoc2VsZik6CisgICAgICAgIHBhc3MKKyAgICBmb28gPSAnYmFyJworCisgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgcGFzcworCitmb29fbmFtZSA9ICclcy5Gb28nICUgX19uYW1lX18KKworCitkZWYgZnVuY3Rpb24oYSwgYj1Gb28pOgorICAgIHBhc3MKKworCitjbGFzcyBDb250YWluZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudmFsdWVzID0ge30KKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVzW25hbWVdCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBzZWxmLnZhbHVlc1tuYW1lXSA9IHZhbHVlCisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGRlbCBzZWxmLnZhbHVlc1tuYW1lXQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLnZhbHVlcykKKworCisKK2NsYXNzIFBhdGNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgYXNzZXJ0Tm90Q2FsbGFibGUoc2VsZiwgb2JqLCBtYWdpYz1UcnVlKToKKyAgICAgICAgTW9ja0NsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKKyAgICAgICAgaWYgbm90IG1hZ2ljOgorICAgICAgICAgICAgTW9ja0NsYXNzID0gTm9uQ2FsbGFibGVNb2NrCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvYmopCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShvYmosIE1vY2tDbGFzcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfaW5zdGFuY2Uob2JqLCBDYWxsYWJsZU1peGluKSkKKworCisgICAgZGVmIHRlc3Rfc2luZ2xlX3BhdGNob2JqZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLCAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9ub25lKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBOb25lKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoU29tZXRoaW5nLmF0dHJpYnV0ZSwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX3BhdGNob2JqZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsMgorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICduZXh0X2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQyKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLm5leHRfYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLm5leHRfYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X29iamVjdF9sb29rdXBfaXNfcXVpdGVfbGF6eShzZWxmKToKKyAgICAgICAgZ2xvYmFsIHNvbWV0aGluZworICAgICAgICBvcmlnaW5hbCA9IHNvbWV0aGluZworICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMikKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzb21ldGhpbmcgPSBzZW50aW5lbC5yZXBsYWNlbWVudF92YWx1ZQorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwucmVwbGFjZW1lbnRfdmFsdWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzb21ldGhpbmcgPSBvcmlnaW5hbAorCisKKyAgICBkZWYgdGVzdF9wYXRjaChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpCisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nX2Vsc2UnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgICMgVGVzdCB0aGUgcGF0Y2hpbmcgYW5kIHJlc3RvcmluZyB3b3JrcyBhIHNlY29uZCB0aW1lCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IHNlbnRpbmVsLkhhbmRsZQorICAgICAgICBAcGF0Y2goJyVzLm9wZW4nICUgYnVpbHRpbl9zdHJpbmcsIG1vY2spCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW4oJ2ZpbGVuYW1lJywgJ3InKSwgc2VudGluZWwuSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlbiBub3QgcGF0Y2hlZCIpCisgICAgICAgIHRlc3QoKQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9wZW4sIG1vY2ssICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9jbGFzc19hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZScgJSBfX25hbWVfXywKKyAgICAgICAgICAgICAgIHNlbnRpbmVsLkNsYXNzQXR0cmlidXRlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5Tb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50aW5lbC5DbGFzc0F0dHJpYnV0ZSwgInVucGF0Y2hlZCIpCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFBUTW9kdWxlLlNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX2RlZmF1bHRfbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdChvYmplY3QpOgorICAgICAgICAgICAgc29tZXRoaW5nID0gc2VudGluZWwuT3JpZ2luYWwKKyAgICAgICAgICAgIHNvbWV0aGluZzIgPSBzZW50aW5lbC5PcmlnaW5hbDIKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcnKQorICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaywgVGVzdC5zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2NrIG5vdCBwYXNzZWQgaW50byB0ZXN0IGZ1bmN0aW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIEBwYXRjaC5vYmplY3QoVGVzdCwgJ3NvbWV0aGluZycpCisgICAgICAgIEBwYXRjaC5vYmplY3QoVGVzdCwgJ3NvbWV0aGluZzInKQorICAgICAgICBkZWYgdGVzdCh0aGlzMSwgdGhpczIsIG1vY2sxLCBtb2NrMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoaXMxLCBzZW50aW5lbC50aGlzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhdGNoZWQgZnVuY3Rpb24gZGlkbid0IHJlY2VpdmUgaW5pdGlhbCBhcmd1bWVudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoaXMyLCBzZW50aW5lbC50aGlzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhdGNoZWQgZnVuY3Rpb24gZGlkbid0IHJlY2VpdmUgc2Vjb25kIGFyZ3VtZW50IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jazEsIFRlc3Quc29tZXRoaW5nMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vY2sgbm90IHBhc3NlZCBpbnRvIHRlc3QgZnVuY3Rpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrMiwgVGVzdC5zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWNvbmQgTW9jayBub3QgcGFzc2VkIGludG8gdGVzdCBmdW5jdGlvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jazIsIE1hZ2ljTW9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggd2l0aCB0d28gYXJndW1lbnRzIGRpZCBub3QgY3JlYXRlIGEgbW9jayIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jazIsIE1hZ2ljTW9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggd2l0aCB0d28gYXJndW1lbnRzIGRpZCBub3QgY3JlYXRlIGEgbW9jayIpCisKKyAgICAgICAgICAgICMgQSBoYWNrIHRvIHRlc3QgdGhhdCBuZXcgbW9ja3MgYXJlIHBhc3NlZCB0aGUgc2Vjb25kIHRpbWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3V0ZXJNb2NrMSwgbW9jazEsICJ1bmV4cGVjdGVkIHZhbHVlIGZvciBtb2NrMSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG91dGVyTW9jazIsIG1vY2syLCAidW5leHBlY3RlZCB2YWx1ZSBmb3IgbW9jazEiKQorICAgICAgICAgICAgcmV0dXJuIG1vY2sxLCBtb2NrMgorCisgICAgICAgIG91dGVyTW9jazEgPSBvdXRlck1vY2syID0gTm9uZQorICAgICAgICBvdXRlck1vY2sxLCBvdXRlck1vY2syID0gdGVzdChzZW50aW5lbC50aGlzMSwgc2VudGluZWwudGhpczIpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgZXhlY3V0aW5nIGEgc2Vjb25kIHRpbWUgY3JlYXRlcyBuZXcgbW9ja3MKKyAgICAgICAgdGVzdChzZW50aW5lbC50aGlzMSwgc2VudGluZWwudGhpczIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlYyhzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9U29tZUNsYXNzKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy53aWJibGUsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9zcGVjKHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2NsYXNzX2F0dHJpYnV0ZScsIHNwZWM9U29tZUNsYXNzKQorICAgICAgICBkZWYgdGVzdChNb2NrQXR0cmlidXRlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwgTW9ja0F0dHJpYnV0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLndpYmJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9Wyd3aWJibGUnXSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3Mud2liYmxlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2NsYXNzX2F0dHJpYnV0ZScsIHNwZWM9Wyd3aWJibGUnXSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0F0dHJpYnV0ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsIE1vY2tBdHRyaWJ1dGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS53aWJibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfbmVzdGVkX3BhdGNoX3dpdGhfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICAjIHJlZ3Jlc3Npb24gdGVzdCBmb3IgbmVzdGVkIGRlY29yYXRvcnMKKyAgICAgICAgQHBhdGNoKCclcy5vcGVuJyAlIGJ1aWx0aW5fc3RyaW5nKQorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1bJ3dpYmJsZSddKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzLCBNb2NrT3Blbik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3Mud2liYmxlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogU29tZUNsYXNzLm5vdF93aWJibGUpCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWNfYXNfYm9vbGVhbihzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCByYWlzZSBhdHRyaWJ1dGUgZXJyb3IKKyAgICAgICAgICAgIE1vY2tTb21lQ2xhc3Mud2liYmxlCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IE1vY2tTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfb2JqZWN0X3dpdGhfc3BlY19hc19ib29sZWFuKHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KFBUTW9kdWxlLCAnU29tZUNsYXNzJywgc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgIyBTaG91bGQgbm90IHJhaXNlIGF0dHJpYnV0ZSBlcnJvcgorICAgICAgICAgICAgTW9ja1NvbWVDbGFzcy53aWJibGUKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogTW9ja1NvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9jbGFzc19hY3RzX3dpdGhfc3BlY19pc19pbmhlcml0ZWQoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKE1vY2tTb21lQ2xhc3MsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBpbnN0YW5jZSA9IE1vY2tTb21lQ2xhc3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShpbnN0YW5jZSkKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCByYWlzZSBhdHRyaWJ1dGUgZXJyb3IKKyAgICAgICAgICAgIGluc3RhbmNlLndpYmJsZQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBpbnN0YW5jZS5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX2NyZWF0ZV9tb2Nrc19ub25fZXhpc3RlbnRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5mcm9vYmxlJyAlIGJ1aWx0aW5fc3RyaW5nLCBzZW50aW5lbC5Gcm9vYmxlLCBjcmVhdGU9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJvb2JsZSwgc2VudGluZWwuRnJvb2JsZSkKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBsYW1iZGE6IGZyb29ibGUpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfY3JlYXRlX21vY2tzX25vbl9leGlzdGVudF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2Zyb29ibGUnLCBzZW50aW5lbC5Gcm9vYmxlLCBjcmVhdGU9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmZyb29ibGUsIHNlbnRpbmVsLkZyb29ibGUpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihTb21lQ2xhc3MsICdmcm9vYmxlJykpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dvbnRfY3JlYXRlX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIEBwYXRjaCgnJXMuZnJvb2JsZScgJSBidWlsdGluX3N0cmluZywgc2VudGluZWwuRnJvb2JsZSkKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcm9vYmxlLCBzZW50aW5lbC5Gcm9vYmxlKQorCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBsYW1iZGE6IGZyb29ibGUpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dvbnRfY3JlYXRlX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnZnJvb2JsZScsIHNlbnRpbmVsLkZyb29ibGUpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihTb21lQ2xhc3MsICdmcm9vYmxlJykpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3RhdGljX21ldGhvZHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIHdvb3QoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VudGluZWwuU3RhdGljCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICd3b290Jywgc3RhdGljbWV0aG9kKGxhbWJkYTogc2VudGluZWwuUGF0Y2hlZCkpCisgICAgICAgIGRlZiBhbm9ueW1vdXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLndvb3QoKSwgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgYW5vbnltb3VzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby53b290KCksIHNlbnRpbmVsLlN0YXRpYykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbG9jYWwoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbnRpbmVsLkZvbworICAgICAgICBAcGF0Y2gub2JqZWN0KHNlbnRpbmVsLCAnRm9vJywgJ0ZvbycpCisgICAgICAgIGRlZiBhbm9ueW1vdXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudGluZWwuRm9vLCAnRm9vJykKKyAgICAgICAgYW5vbnltb3VzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnRpbmVsLkZvbywgZm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zbG90cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoJ0ZvbycsKQorCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIGZvby5Gb28gPSBzZW50aW5lbC5Gb28KKworICAgICAgICBAcGF0Y2gub2JqZWN0KGZvbywgJ0ZvbycsICdGb28nKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5Gb28sICdGb28nKQorICAgICAgICBhbm9ueW1vdXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLkZvbywgc2VudGluZWwuRm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF9jbGFzc19kZWNvcmF0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChvdGhlcl9zZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIGRlZiBub3RfdGVzdF9tZXRob2Qob3RoZXJfc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tdGVzdCBtZXRob2QgcGF0Y2hlZCIpCisKKyAgICAgICAgRm9vID0gcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpKEZvbykKKworICAgICAgICBmID0gRm9vKCkKKyAgICAgICAgZi50ZXN0X21ldGhvZCgpCisgICAgICAgIGYubm90X3Rlc3RfbWV0aG9kKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9jbGFzc19kZWNvcmF0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhvZChvdGhlcl9zZWxmLCBtb2NrX3NvbWV0aGluZyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBkZWYgbm90X3Rlc3RfbWV0aG9kKG90aGVyX3NlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXRlc3QgbWV0aG9kIHBhdGNoZWQiKQorICAgICAgICBGb28gPSBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKShGb28pCisKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYudGVzdF9tZXRob2QoKQorICAgICAgICBmLm5vdF90ZXN0X21ldGhvZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3RfdHdpY2Uoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKyAgICAgICAgICAgIG5leHRfYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwyCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQsICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHsnaW5pdGlhbCc6IG9iamVjdCgpLCAnb3RoZXInOiAnc29tZXRoaW5nJ30KKyAgICAgICAgb3JpZ2luYWwgPSBmb28uY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgZm9vWydhJ10gPSAzCisgICAgICAgICAgICBkZWwgZm9vWydpbml0aWFsJ10KKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vWydhJ10sICdiJykKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBbKCdhJywgJ2InKV0pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmb28pLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb29bJ2EnXSwgJ2InKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX2NvbnRhaW5lcl9vYmplY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IENvbnRhaW5lcigpCisgICAgICAgIGZvb1snaW5pdGlhbCddID0gb2JqZWN0KCkKKyAgICAgICAgZm9vWydvdGhlciddID0gICdzb21ldGhpbmcnCisKKyAgICAgICAgb3JpZ2luYWwgPSBmb28udmFsdWVzLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZGVsIGZvb1snaW5pdGlhbCddCisgICAgICAgICAgICBmb29bJ290aGVyJ10gPSAnc29tZXRoaW5nIGVsc2UnCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmb28udmFsdWVzKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vWydhJ10sICdiJykKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfY2xlYXIoc2VsZik6CisgICAgICAgIGZvbyA9IHsnaW5pdGlhbCc6IG9iamVjdCgpLCAnb3RoZXInOiAnc29tZXRoaW5nJ30KKyAgICAgICAgb3JpZ2luYWwgPSBmb28uY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorICAgICAgICAgICAgZm9vWydhJ10gPSAzCisgICAgICAgICAgICBmb29bJ290aGVyJ10gPSAnc29tZXRoaW5nIGVsc2UnCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7J2EnOiAnYid9KQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIFsoJ2EnLCAnYicpXSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7J2EnOiAnYid9KQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX2NvbnRhaW5lcl9vYmplY3RfYW5kX2NsZWFyKHNlbGYpOgorICAgICAgICBmb28gPSBDb250YWluZXIoKQorICAgICAgICBmb29bJ2luaXRpYWwnXSA9IG9iamVjdCgpCisgICAgICAgIGZvb1snb3RoZXInXSA9ICAnc29tZXRoaW5nJworCisgICAgICAgIG9yaWdpbmFsID0gZm9vLnZhbHVlcy5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIHt9KQorICAgICAgICAgICAgZm9vWydhJ10gPSAzCisgICAgICAgICAgICBmb29bJ290aGVyJ10gPSAnc29tZXRoaW5nIGVsc2UnCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIHsnYSc6ICdiJ30pCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfbmFtZV9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIGZvbyA9IHt9CisKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIG9iamVjdCgpKQorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgb2JqZWN0KCksIGF1dG9zcGVjPVRydWUpCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCBvYmplY3QoKSkKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICBkZWYgc29tZV9uYW1lKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21lX25hbWUuX19uYW1lX18sICdzb21lX25hbWUnKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgZm9vID0ge30KKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ0tvbnJhZCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdOYW1lRXJyb3Igbm90IHJhaXNlZCBieSB0ZXN0JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9zdHJpbmcoc2VsZik6CisgICAgICAgIEBwYXRjaC5kaWN0KCdvcy5lbnZpcm9uJywgeydrb25yYWRfZGVsb25nJzogJ3NvbWUgdmFsdWUnfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2tvbnJhZF9kZWxvbmcnLCBvcy5lbnZpcm9uKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kZXNjcmlwdG9yKHNlbGYpOgorICAgICAgICAjIHdvdWxkIGJlIHNvbWUgZWZmb3J0IHRvIGZpeCB0aGlzIC0gd2UgY291bGQgc3BlY2lhbCBjYXNlIHRoZQorICAgICAgICAjIGJ1aWx0aW4gZGVzY3JpcHRvcnM6IGNsYXNzbWV0aG9kLCBwcm9wZXJ0eSwgc3RhdGljbWV0aG9kCisgICAgICAgIHJldHVybgorICAgICAgICBjbGFzcyBOb3RoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSBOb25lCisKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSB7fQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KE5vdGhpbmcsICdmb28nLCAyKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYga2xhc3MoY2xzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNscywgU29tZXRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KE5vdGhpbmcsICdmb28nLCAyKQorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIHN0YXRpYyhhcmcpOgorICAgICAgICAgICAgICAgIHJldHVybiBhcmcKKworICAgICAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYga2xhc3NfZGljdChjbHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2xzLCBTb21ldGhpbmcpCisKKyAgICAgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBzdGF0aWNfZGljdChhcmcpOgorICAgICAgICAgICAgICAgIHJldHVybiBhcmcKKworICAgICAgICAjIHRoZXNlIHdpbGwgcmFpc2UgZXhjZXB0aW9ucyBpZiBwYXRjaGluZyBkZXNjcmlwdG9ycyBpcyBicm9rZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuc3RhdGljKCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIFNvbWV0aGluZy5rbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLnN0YXRpY19kaWN0KCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIFNvbWV0aGluZy5rbGFzc19kaWN0KCkKKworICAgICAgICBzb21ldGhpbmcgPSBTb21ldGhpbmcoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZy5zdGF0aWMoJ2YwMCcpLCAnZjAwJykKKyAgICAgICAgc29tZXRoaW5nLmtsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuc3RhdGljX2RpY3QoJ2YwMCcpLCAnZjAwJykKKyAgICAgICAgc29tZXRoaW5nLmtsYXNzX2RpY3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9U29tZUNsYXNzLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgTW9ja0NsYXNzLnogPSAnZm9vJworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorCisgICAgICAgIEBwYXRjaC5vYmplY3Qoc3VwcG9ydCwgJ1NvbWVDbGFzcycsIHNwZWM9U29tZUNsYXNzLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgTW9ja0NsYXNzLnogPSAnZm9vJworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KHN1cHBvcnQsICdTb21lQ2xhc3MnLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgTW9ja0NsYXNzLnogPSAnZm9vJworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorCisKKyAgICBkZWYgdGVzdF9zcGVjX3NldF9pbmhlcml0KHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIGluc3RhbmNlID0gTW9ja0NsYXNzKCkKKyAgICAgICAgICAgIGluc3RhbmNlLnogPSAnZm9vJworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zdGFydF9zdG9wKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IHNvbWV0aGluZworICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9jaywgb3JpZ2luYWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgbW9jaykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3Rfc3RvcF93aXRob3V0X3N0YXJ0KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsICdiYXInLCAzKQorCisgICAgICAgICMgY2FsbGluZyBzdG9wIHdpdGhvdXQgc3RhcnQgdXNlZCB0byBwcm9kdWNlIGEgdmVyeSBvYnNjdXJlIGVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcGF0Y2hlci5zdG9wKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF9zdGFydF9zdG9wKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IHNvbWV0aGluZworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KFBUTW9kdWxlLCAnc29tZXRoaW5nJywgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKyAgICAgICAgcmVwbGFjZWQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBsYWNlZCwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgcmVwbGFjZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgZCA9IHsnZm9vJzogJ2Jhcid9CisgICAgICAgIG9yaWdpbmFsID0gZC5jb3B5KCkKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLmRpY3QoZCwgWygnc3BhbScsICdlZ2dzJyldLCBjbGVhcj1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsnc3BhbSc6ICdlZ2dzJ30pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X2NsYXNzX2RlY29yYXRvcihzZWxmKToKKyAgICAgICAgdGhpcyA9IHNlbGYKKyAgICAgICAgZCA9IHsnc3BhbSc6ICdlZ2dzJ30KKyAgICAgICAgb3JpZ2luYWwgPSBkLmNvcHkoKQorCisgICAgICAgIGNsYXNzIFRlc3Qob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZpcnN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWwoZCwgeydmb28nOiAnYmFyJ30pCisgICAgICAgICAgICBkZWYgdGVzdF9zZWNvbmQoc2VsZik6CisgICAgICAgICAgICAgICAgdGhpcy5hc3NlcnRFcXVhbChkLCB7J2Zvbyc6ICdiYXInfSkKKworICAgICAgICBUZXN0ID0gcGF0Y2guZGljdChkLCB7J2Zvbyc6ICdiYXInfSwgY2xlYXI9VHJ1ZSkoVGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICB0ZXN0ID0gVGVzdCgpCisKKyAgICAgICAgdGVzdC50ZXN0X2ZpcnN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICB0ZXN0LnRlc3Rfc2Vjb25kKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICB0ZXN0ID0gVGVzdCgpCisKKyAgICAgICAgdGVzdC50ZXN0X2ZpcnN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICB0ZXN0LnRlc3Rfc2Vjb25kKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfZ2V0X29ubHlfcHJveHkoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0gJ2ZvbycKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nRWxzZToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisKKyAgICAgICAgZm9yIHRoaW5nIGluIFNvbWV0aGluZywgU29tZXRoaW5nRWxzZSwgU29tZXRoaW5nKCksIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBwcm94eSA9IF9nZXRfcHJveHkodGhpbmcpCisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QocHJveHksICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdiYXInKQorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoaW5nLmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdmb28nLCBwcm94eS5fX2RpY3RfXykKKworCisgICAgZGVmIHRlc3RfZ2V0X3NldF9kZWxldGVfcHJveHkoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0gJ2ZvbycKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nRWxzZToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisKKyAgICAgICAgZm9yIHRoaW5nIGluIFNvbWV0aGluZywgU29tZXRoaW5nRWxzZSwgU29tZXRoaW5nKCksIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBwcm94eSA9IF9nZXRfcHJveHkoU29tZXRoaW5nLCBnZXRfb25seT1GYWxzZSkKKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChwcm94eSwgJ2ZvbycsICdiYXInKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2JhcicpCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpbmcuZm9vLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ZvbycsIHByb3h5Ll9fZGljdF9fKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIGt3YXJncyA9IHsnc2lkZV9lZmZlY3QnOiBLZXlFcnJvciwgJ2Zvby5iYXIucmV0dXJuX3ZhbHVlJzogMzMsCisgICAgICAgICAgICAgICAgICAnZm9vJzogTWFnaWNNb2NrKCl9CisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCAqKmt3YXJncykKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX29iamVjdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIGt3YXJncyA9IHsnc2lkZV9lZmZlY3QnOiBLZXlFcnJvciwgJ2Zvby5iYXIucmV0dXJuX3ZhbHVlJzogMzMsCisgICAgICAgICAgICAgICAgICAnZm9vJzogTWFnaWNNb2NrKCl9CisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgKiprd2FyZ3MpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSB7J2Zvbyc6ICdiYXInfQorICAgICAgICBjb3B5ID0gb3JpZ2luYWwuY29weSgpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLmRpY3Qob3JpZ2luYWwsIGZvbz0zLCBiYXI9NCwgYmF6PTUpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ2luYWwsIGRpY3QoZm9vPTMsIGJhcj00LCBiYXo9NSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ2luYWwsIGNvcHkpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBCb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgZihzZWxmLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgZyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBmb28gPSAnYmFyJworCisgICAgICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBfdGVzdChtb2NrKToKKyAgICAgICAgICAgIG1vY2soMSkKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKyAgICAgICAgZGVmIF90ZXN0Mihtb2NrKToKKyAgICAgICAgICAgIG1vY2suZigxKQorICAgICAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLmYpCisKKyAgICAgICAgICAgIG1vY2suZygpCisgICAgICAgICAgICBtb2NrLmcuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5nLCAxKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2gnKQorCisgICAgICAgICAgICBtb2NrLmZvby5sb3dlcigpCisgICAgICAgICAgICBtb2NrLmZvby5sb3dlci5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suZm9vLCAnYmFyJykKKworICAgICAgICAgICAgbW9jay5CYXIoKQorICAgICAgICAgICAgbW9jay5CYXIuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKworICAgICAgICAgICAgbW9jay5CYXIuYSgpCisgICAgICAgICAgICBtb2NrLkJhci5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suQmFyLmEsIDEpCisKKyAgICAgICAgICAgIG1vY2suQmFyKCkuYSgpCisgICAgICAgICAgICBtb2NrLkJhcigpLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5CYXIoKS5hLCAxKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5CYXIsICdiJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLkJhcigpLCAnYicpCisKKyAgICAgICAgZGVmIGZ1bmN0aW9uKG1vY2spOgorICAgICAgICAgICAgX3Rlc3QobW9jaykKKyAgICAgICAgICAgIF90ZXN0Mihtb2NrKQorICAgICAgICAgICAgX3Rlc3QyKG1vY2soMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vY2ssIEZvbykKKyAgICAgICAgICAgIHJldHVybiBtb2NrCisKKyAgICAgICAgdGVzdCA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1UcnVlKShmdW5jdGlvbikKKworICAgICAgICBtb2NrID0gdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRm9vLCBtb2NrKQorICAgICAgICAjIHRlc3QgcGF0Y2hpbmcgYSBzZWNvbmQgdGltZSB3b3JrcworICAgICAgICB0ZXN0KCkKKworICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICAgICAgdGVzdCA9IHBhdGNoLm9iamVjdChtb2R1bGUsICdGb28nLCBhdXRvc3BlYz1UcnVlKShmdW5jdGlvbikKKworICAgICAgICBtb2NrID0gdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRm9vLCBtb2NrKQorICAgICAgICAjIHRlc3QgcGF0Y2hpbmcgYSBzZWNvbmQgdGltZSB3b3JrcworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIGF1dG9zcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgZnVuY3Rpb24oMSkKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgZnVuY3Rpb24oMiwgMykKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgyLCAzKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGZ1bmN0aW9uLCAnZm9vJykKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfa2V5d29yZHMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIGF1dG9zcGVjPVRydWUsCisgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9MykKKyAgICAgICAgZGVmIHRlc3QobW9ja19mdW5jdGlvbik6CisgICAgICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChmdW5jdGlvbi5hYmMsICdmb28nKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKDEsIDIpCisKKyAgICAgICAgcmVzdWx0ID0gdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAzKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY193aXRoX25ldyhzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5mdW5jdGlvbicgJSBfX25hbWVfXywgbmV3PTMsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGF0Y2hlci5zdGFydCkKKworICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChtb2R1bGUsICdmdW5jdGlvbicsIG5ldz0zLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3dpdGhfb2JqZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBCYXIoRm9vKToKKyAgICAgICAgICAgIGV4dHJhID0gW10KKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPUJhcikKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgQmFyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZXh0cmEsIGxpc3QpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19pbmhlcml0cyhzZWxmKToKKyAgICAgICAgRm9vQ2xhc3MgPSBGb28KKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLCBGb29DbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrKDMpLCBGb29DbGFzcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX25hbWUoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdGb28nIiwgcmVwcihtb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdGb28uZiciLCByZXByKG1vY2suZikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vKCknIiwgcmVwcihtb2NrKE5vbmUpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdGb28oKS5mJyIsIHJlcHIobW9jayhOb25lKS5mKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3RyYWNlYmFja3Moc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIG9iamVjdCgpKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGVyciA9IHN5cy5leGNfaW5mbygpCisKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQoTm9uZSwgTm9uZSwgMCkKKyAgICAgICAgdHJhY2ViYWNrID0gcmVzdWx0Ll9leGNfaW5mb190b19zdHJpbmcoZXJyLCBzZWxmKQorICAgICAgICBzZWxmLmFzc2VydEluKCdyYWlzZSBBc3NlcnRpb25FcnJvcicsIHRyYWNlYmFjaykKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX3BhdGNoKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1hZ2ljTW9jaykKKworICAgICAgICBtMSA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBtMiA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobTEsIG0yKQorICAgICAgICBmb3IgbW9jayBpbiBtMSwgbTI6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG0xKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfcGF0Y2hfb2JqZWN0KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNYWdpY01vY2spCisKKyAgICAgICAgbTEgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgbTIgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KG0xLCBtMikKKyAgICAgICAgZm9yIG1vY2sgaW4gbTEsIG0yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtMSkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2tleXdvcmRfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgIGt3YXJncyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgQmFyLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUJhciwgYXJnMT0xLCBhcmcyPTIpCisgICAgICAgIG0gPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG0pLCBCYXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhci5rd2FyZ3MsIGRpY3QoYXJnMT0xLCBhcmcyPTIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAga3dhcmdzID0gTm9uZQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBCYXIua3dhcmdzID0ga3dhcmdzCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9QmFyLCBzcGVjPUJhcikKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFyLmt3YXJncywgZGljdChzcGVjPUJhcikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUJhciwgc3BlY19zZXQ9QmFyKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXIua3dhcmdzLCBkaWN0KHNwZWNfc2V0PUJhcikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfY3JlYXRlKHNlbGYpOgorICAgICAgICBub25fZXhpc3RlbnRfYXR0ciA9ICclcy53ZWVlZWUnICUgZm9vX25hbWUKKyAgICAgICAgcCA9IHBhdGNoKG5vbl9leGlzdGVudF9hdHRyLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgcC5zdGFydCkKKworICAgICAgICBwID0gcGF0Y2gobm9uX2V4aXN0ZW50X2F0dHIsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1vY2ssCisgICAgICAgICAgICAgICAgICBjcmVhdGU9VHJ1ZSkKKyAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG0sIG1hZ2ljPUZhbHNlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2luY29tcGF0aWJsZV93aXRoX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCBwYXRjaCwgZm9vX25hbWUsIG5ldz1vYmplY3QoKSwgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gub2JqZWN0LCBGb28sICdmJywgbmV3PW9iamVjdCgpLAorICAgICAgICAgICAgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaworICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmNvbXBhdGlibGVfd2l0aF9hdXRvc3BlYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCBwYXRjaCwgZm9vX25hbWUsIG5ld19jYWxsYWJsZT1NYWdpY01vY2ssCisgICAgICAgICAgICBhdXRvc3BlYz1UcnVlCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCBwYXRjaC5vYmplY3QsIEZvbywgJ2YnLCBuZXdfY2FsbGFibGU9TWFnaWNNb2NrLAorICAgICAgICAgICAgYXV0b3NwZWM9VHJ1ZQorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmhlcml0X2Zvcl9tb2NrcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ja1N1YihNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBNb2NrQ2xhc3NlcyA9ICgKKyAgICAgICAgICAgIE5vbkNhbGxhYmxlTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE1hZ2ljTW9jaywgTW9jaywgTW9ja1N1YgorICAgICAgICApCisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrQ2xhc3NlczoKKyAgICAgICAgICAgIGZvciBhcmcgaW4gJ3NwZWMnLCAnc3BlY19zZXQnOgorICAgICAgICAgICAgICAgIGt3YXJncyA9IHthcmc6IFRydWV9CisgICAgICAgICAgICAgICAgcCA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9S2xhc3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbS5yZXR1cm5fdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlLCAneCcpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2luaGVyaXRfbm9uX21vY2soc2VsZik6CisgICAgICAgIGNsYXNzIE5vdEFNb2NrKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgc2VsZi5zcGVjID0gc3BlYworCisgICAgICAgIHAgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPU5vdEFNb2NrLCBzcGVjPVRydWUpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG0sIE5vdEFNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtLCAncmV0dXJuX3ZhbHVlJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNwZWMsIEZvbykKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2NsYXNzX2RlY29yYXRpbmcoc2VsZik6CisgICAgICAgIHRlc3QgPSBzZWxmCisgICAgICAgIG9yaWdpbmFsID0gRm9vCisgICAgICAgIGNsYXNzIFNvbWVUZXN0KG9iamVjdCk6CisKKyAgICAgICAgICAgIGRlZiBfdGVzdChzZWxmLCBtb2NrX2Zvbyk6CisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJc05vdChGb28sIG9yaWdpbmFsKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLCBtb2NrX2ZvbykKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzSW5zdGFuY2UoRm9vLCBTb21lQ2xhc3MpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmLCBtb2NrX2Zvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdChtb2NrX2ZvbykKKyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmLCBtb2NrX2Zvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdChtb2NrX2ZvbykKKworICAgICAgICBTb21lVGVzdCA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9U29tZUNsYXNzKShTb21lVGVzdCkKKyAgICAgICAgU29tZVRlc3QoKS50ZXN0X29uZSgpCisgICAgICAgIFNvbWVUZXN0KCkudGVzdF90d28oKQorICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIxID0gcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9MSwgZz0yKQorICAgICAgICBwYXRjaGVyMiA9IHBhdGNoLm11bHRpcGxlKEZvbywgZj0xLCBnPTIpCisKKyAgICAgICAgZm9yIHBhdGNoZXIgaW4gcGF0Y2hlcjEsIHBhdGNoZXIyOgorICAgICAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIDIpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj0zLCBnPTQpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIDQpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX25vX2t3YXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGF0Y2gubXVsdGlwbGUsIGZvb19uYW1lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXRjaC5tdWx0aXBsZSwgRm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9jcmVhdGVfbW9ja3Moc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQsIGc9MywgZm9vPURFRkFVTFQpCisgICAgICAgIGRlZiB0ZXN0KGYsIGZvbyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGZvbywgTWFnaWNNb2NrKSkKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlX21vY2tzX2RpZmZlcmVudF9vcmRlcihzZWxmKToKKyAgICAgICAgIyBidWcgcmV2ZWFsZWQgYnkgSnl0aG9uIQorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgMykKKyAgICAgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9ICdmJworCisgICAgICAgIG90aGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCBERUZBVUxUKQorICAgICAgICBvdGhlci5hdHRyaWJ1dGVfbmFtZSA9ICdnJworICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBbb3RoZXJdCisKKyAgICAgICAgQHBhdGNoZXIKKyAgICAgICAgZGVmIHRlc3QoZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5nLCBnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgMykKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfc3RhY2tlZF9kZWNvcmF0b3JzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxUKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGZvbz1ERUZBVUxUKQorICAgICAgICBAcGF0Y2goZm9vX25hbWUgKyAnLmcnKQorICAgICAgICBkZWYgdGVzdDEoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgX3Rlc3QoZywgKiprd2FyZ3MpCisKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQpCisgICAgICAgIEBwYXRjaChmb29fbmFtZSArICcuZycpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZm9vPURFRkFVTFQpCisgICAgICAgIGRlZiB0ZXN0MihnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBfdGVzdChnLCAqKmt3YXJncykKKworICAgICAgICBAcGF0Y2goZm9vX25hbWUgKyAnLmcnKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCkKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmb289REVGQVVMVCkKKyAgICAgICAgZGVmIHRlc3QzKGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIF90ZXN0KGcsICoqa3dhcmdzKQorCisgICAgICAgIGRlZiBfdGVzdChnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBmID0ga3dhcmdzLnBvcCgnZicpCisgICAgICAgICAgICBmb28gPSBrd2FyZ3MucG9wKCdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrd2FyZ3MpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mLCBmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZywgZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZywgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgdGVzdDEoKQorICAgICAgICB0ZXN0MigpCisgICAgICAgIHRlc3QzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlX21vY2tzX3BhdGNoZXIoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQsIGc9MywgZm9vPURFRkFVTFQpCisKKyAgICAgICAgcmVzdWx0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSByZXN1bHRbJ2YnXQorICAgICAgICAgICAgZm9vID0gcmVzdWx0Wydmb28nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocmVzdWx0KSwgc2V0KFsnZicsICdmb28nXSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mLCBmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2RlY29yYXRpbmdfY2xhc3Moc2VsZik6CisgICAgICAgIHRlc3QgPSBzZWxmCisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgY2xhc3MgU29tZVRlc3Qob2JqZWN0KToKKworICAgICAgICAgICAgZGVmIF90ZXN0KHNlbGYsIGYsIGZvbyk6CisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvby5mLCBmKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0RXF1YWwoRm9vLmcsIDMpCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGZvbywgTWFnaWNNb2NrKSkKKworICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYsIGYsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdChmLCBmb28pCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgZiwgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KGYsIGZvbykKKworICAgICAgICBTb21lVGVzdCA9IHBhdGNoLm11bHRpcGxlKAorICAgICAgICAgICAgZm9vX25hbWUsIGY9REVGQVVMVCwgZz0zLCBmb289REVGQVVMVAorICAgICAgICApKFNvbWVUZXN0KQorCisgICAgICAgIHRoaW5nID0gU29tZVRlc3QoKQorICAgICAgICB0aGluZy50ZXN0X29uZSgpCisgICAgICAgIHRoaW5nLnRlc3RfdHdvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9jcmVhdGUoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGJsYW09J2JsYW0nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgcGF0Y2hlci5zdGFydCkKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBibGFtPSdibGFtJywgY3JlYXRlPVRydWUpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5ibGFtLCAnYmxhbScpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihGb28sICdibGFtJykpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICAjIGlmIHNwZWNfc2V0IHdvcmtzIHRoZW4gd2UgY2FuIGFzc3VtZSB0aGF0IHNwZWMgYW5kIGF1dG9zcGVjIGFsc28KKyAgICAgICAgIyB3b3JrIGFzIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVyeSBpcyB0aGUgc2FtZQorICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBmb289REVGQVVMVCwgc3BlY19zZXQ9WydhJywgJ2InXSkKKyAgICAgICAgcmVzdWx0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmZvbywgcmVzdWx0Wydmb28nXSkKKyAgICAgICAgICAgIEZvby5mb28uYSgxKQorICAgICAgICAgICAgRm9vLmZvby5iKDIpCisgICAgICAgICAgICBGb28uZm9vLmEuYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBGb28uZm9vLmIuYXNzZXJ0X2NhbGxlZF93aXRoKDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgRm9vLmZvbywgJ2MnLCBOb25lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfbmV3X2NhbGxhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBUaGluZyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZSgKKyAgICAgICAgICAgIEZvbywgZj1ERUZBVUxULCBnPURFRkFVTFQsIG5ld19jYWxsYWJsZT1UaGluZworICAgICAgICApCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mLCByZXN1bHRbJ2YnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmcsIHJlc3VsdFsnZyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEZvby5mLCBUaGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28uZywgVGhpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvby5mLCBGb28uZykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25lc3RlZF9wYXRjaF9mYWlsdXJlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzIoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBkZWYgdGhpbmczKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGZ1bmMgaW4gdGhpbmcxLCB0aGluZzIsIHRoaW5nMzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmdW5jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvby5mb28KKworICAgICAgICBkZWYgY3Jhc2hlcigpOgorICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdjcmFzaGVyJykKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcxKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMigpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIGRlZiB0aGluZzMoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3IgZnVuYyBpbiB0aGluZzEsIHRoaW5nMiwgdGhpbmczOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBmdW5jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mb28sIG9yaWdpbmFsX2ZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBnb29kID0gcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBnb29kLmF0dHJpYnV0ZV9uYW1lID0gJ2cnCisKKyAgICAgICAgYmFkID0gcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBiYWQuYXR0cmlidXRlX25hbWUgPSAnbWlzc2luZycKKworICAgICAgICBmb3IgYWRkaXRpb25hbHMgaW4gW2dvb2QsIGJhZF0sIFtiYWQsIGdvb2RdOgorICAgICAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gYWRkaXRpb25hbHMKKworICAgICAgICAgICAgQHBhdGNoZXIKKyAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9uZXdfY2FsbGFibGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28uZm9vCisKKyAgICAgICAgZGVmIGNyYXNoZXIoKToKKyAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignY3Jhc2hlcicpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9ICdmJworCisgICAgICAgIGdvb2QgPSBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIGdvb2QuYXR0cmlidXRlX25hbWUgPSAnZycKKworICAgICAgICBiYWQgPSBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIGJhZC5hdHRyaWJ1dGVfbmFtZSA9ICdmb28nCisKKyAgICAgICAgZm9yIGFkZGl0aW9uYWxzIGluIFtnb29kLCBiYWRdLCBbYmFkLCBnb29kXToKKyAgICAgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IGFkZGl0aW9uYWxzCisKKyAgICAgICAgICAgIEBwYXRjaGVyCisgICAgICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBmdW5jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mb28sIG9yaWdpbmFsX2ZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfc3RyaW5nX3N1YmNsYXNzZXMoc2VsZik6CisgICAgICAgIEZvbyA9IHR5cGUoJ0ZvbycsIChzdHIsKSwgeydmaXNoJzogJ3Rhc3R5J30pCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb28sIGZpc2g9J25lYXJseSBnb25lJykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmZpc2gsICduZWFybHkgZ29uZScpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmZpc2gsICd0YXN0eScpCisKKworICAgIEBwYXRjaCgndW5pdHRlc3QubW9jay5wYXRjaC5URVNUX1BSRUZJWCcsICdmb28nKQorICAgIGRlZiB0ZXN0X3BhdGNoX3Rlc3RfcHJlZml4KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHRoaW5nID0gJ29yaWdpbmFsJworCisgICAgICAgICAgICBkZWYgZm9vX29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworICAgICAgICAgICAgZGVmIGZvb190d28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisKKyAgICAgICAgRm9vID0gcGF0Y2gub2JqZWN0KEZvbywgJ3RoaW5nJywgJ2NoYW5nZWQnKShGb28pCisKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZm9vX29uZSgpLCAnY2hhbmdlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmZvb190d28oKSwgJ2NoYW5nZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50ZXN0X29uZSgpLCAnb3JpZ2luYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50ZXN0X3R3bygpLCAnb3JpZ2luYWwnKQorCisKKyAgICBAcGF0Y2goJ3VuaXR0ZXN0Lm1vY2sucGF0Y2guVEVTVF9QUkVGSVgnLCAnYmFyJykKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3Rlc3RfcHJlZml4KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBiYXJfb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIGJhcl90d28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QodGhlX2RpY3QpCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QodGhlX2RpY3QpCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QodGhlX2RpY3QpCisKKyAgICAgICAgdGhlX2RpY3QgPSB7J2tleSc6ICdvcmlnaW5hbCd9CisgICAgICAgIEZvbyA9IHBhdGNoLmRpY3QodGhlX2RpY3QsIGtleT0nY2hhbmdlZCcpKEZvbykKKworICAgICAgICBmb28gPUZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhcl9vbmUoKSwgeydrZXknOiAnY2hhbmdlZCd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXJfdHdvKCksIHsna2V5JzogJ2NoYW5nZWQnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF9vbmUoKSwgeydrZXknOiAnb3JpZ2luYWwnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF90d28oKSwgeydrZXknOiAnb3JpZ2luYWwnfSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX21vY2tfcmVwcihzZWxmKToKKyAgICAgICAgZm9yIGFyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCAqKnthcmc6IFRydWV9KQorICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MnIiwgcmVwcihtKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtLmNsYXNzX2F0dHJpYnV0ZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcygpJyIsIHJlcHIobSgpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzKCkuY2xhc3NfYXR0cmlidXRlJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0oKS5jbGFzc19hdHRyaWJ1dGUpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9uZXN0ZWRfYXV0b3NwZWNfcmVwcihzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgndW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0JywgYXV0b3NwZWM9VHJ1ZSkgYXMgbToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdzdXBwb3J0LlNvbWVDbGFzcy53aWJibGUoKSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0uU29tZUNsYXNzLndpYmJsZSgpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdzdXBwb3J0LlNvbWVDbGFzcygpLndpYmJsZSgpJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobS5Tb21lQ2xhc3MoKS53aWJibGUoKSkpCisKKworCisgICAgZGVmIHRlc3RfbW9ja19jYWxsc193aXRoX3BhdGNoKHNlbGYpOgorICAgICAgICBmb3IgYXJnIGluICgnc3BlYycsICdhdXRvc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sICoqe2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbS53aWJibGUoKQorCisgICAgICAgICAgICAgICAga2FsbHMgPSBbY2FsbC53aWJibGUoKV0KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywga2FsbHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxscywga2FsbHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLndpYmJsZS5tb2NrX2NhbGxzLCBbY2FsbCgpXSkKKworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG0oKQorICAgICAgICAgICAgICAgIGthbGxzLmFwcGVuZChjYWxsKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorCisgICAgICAgICAgICAgICAgcmVzdWx0LndpYmJsZSgpCisgICAgICAgICAgICAgICAga2FsbHMuYXBwZW5kKGNhbGwoKS53aWJibGUoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywga2FsbHMpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5tb2NrX2NhbGxzLCBbY2FsbC53aWJibGUoKV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQud2liYmxlLm1vY2tfY2FsbHMsIFtjYWxsKCldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm1ldGhvZF9jYWxscywgW2NhbGwud2liYmxlKCldKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9pbXBvcnRzX2xhemlseShzZWxmKToKKyAgICAgICAgc3lzLm1vZHVsZXMucG9wKCdzcXVpenonLCBOb25lKQorCisgICAgICAgIHAxID0gcGF0Y2goJ3NxdWl6ei5zcXVvenonKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgcDEuc3RhcnQpCisKKyAgICAgICAgc3F1aXp6ID0gTW9jaygpCisgICAgICAgIHNxdWl6ei5zcXVvenogPSA2CisgICAgICAgIHN5cy5tb2R1bGVzWydzcXVpenonXSA9IHNxdWl6egorICAgICAgICBwMSA9IHBhdGNoKCdzcXVpenouc3F1b3p6JykKKyAgICAgICAgc3F1aXp6LnNxdW96eiA9IDMKKyAgICAgICAgcDEuc3RhcnQoKQorICAgICAgICBwMS5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVpenouc3F1b3p6LCAzKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9wcm9wb2dyYXRlc19leGNfb25fZXhpdChzZWxmKToKKyAgICAgICAgY2xhc3MgaG9sZGVyOgorICAgICAgICAgICAgZXhjX2luZm8gPSBOb25lLCBOb25lLCBOb25lCisKKyAgICAgICAgY2xhc3MgY3VzdG9tX3BhdGNoKF9wYXRjaCk6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgZXR5cGU9Tm9uZSwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAgICAgICAgIF9wYXRjaC5fX2V4aXRfXyhzZWxmLCBldHlwZSwgdmFsLCB0YikKKyAgICAgICAgICAgICAgICBob2xkZXIuZXhjX2luZm8gPSBldHlwZSwgdmFsLCB0YgorICAgICAgICAgICAgc3RvcCA9IF9fZXhpdF9fCisKKyAgICAgICAgZGVmIHdpdGhfY3VzdG9tX3BhdGNoKHRhcmdldCk6CisgICAgICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSA9IF9nZXRfdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgICAgIHJldHVybiBjdXN0b21fcGF0Y2goCisgICAgICAgICAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIERFRkFVTFQsIE5vbmUsIEZhbHNlLCBOb25lLAorICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIHt9CisgICAgICAgICAgICApCisKKyAgICAgICAgQHdpdGhfY3VzdG9tX3BhdGNoKCdzcXVpenouc3F1b3p6JykKKyAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHRlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9sZGVyLmV4Y19pbmZvWzBdLCBSdW50aW1lRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhvbGRlci5leGNfaW5mb1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHZhbHVlIG5vdCBwcm9wZ2F0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShob2xkZXIuZXhjX2luZm9bMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB0cmFjZWJhY2sgbm90IHByb3BnYXRlZCcpCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hbmRfc3BlY3Moc2VsZik6CisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnc3BlY19zZXQnLCAnYXV0b3NwZWMnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaCgnJXMuZG9lc25vdGV4aXN0JyAlIF9fbmFtZV9fLCBjcmVhdGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAqKntrd2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGxhbWJkYTogZG9lc25vdGV4aXN0KQorCisgICAgICAgICAgICAjIGNoZWNrIHRoYXQgc3BlYyB3aXRoIGNyZWF0ZSBpcyBpbm5vY3VvdXMgaWYgdGhlIG9yaWdpbmFsIGV4aXN0cworICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIGNyZWF0ZT1UcnVlLCAqKntrd2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX3NwZWNzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IFBUTW9kdWxlCisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBhdXRvc3BlYz0wLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBUTW9kdWxlLCBvcmlnaW5hbCkKKworICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlY19zZXQ9MCwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQVE1vZHVsZSwgb3JpZ2luYWwpCisKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlY19zZXQnLCAnYXV0b3NwZWMnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPTAsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUFRNb2R1bGUsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9zcGVjc19mYWxzZV9pbnN0ZWFkX29mX25vbmUoc2VsZik6CisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPUZhbHNlLCBzcGVjX3NldD1GYWxzZSwgYXV0b3NwZWM9RmFsc2UpCisgICAgICAgIG1vY2sgPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBubyBzcGVjIHNob3VsZCBoYXZlIGJlZW4gc2V0LCBzbyBhdHRyaWJ1dGUgYWNjZXNzIHNob3VsZCBub3QgZmFpbAorICAgICAgICAgICAgbW9jay5kb2VzX25vdF9leGlzdAorICAgICAgICAgICAgbW9jay5kb2VzX25vdF9leGlzdCA9IDMKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X2ZhbHNleV9zcGVjKHNlbGYpOgorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtLCAnZG9lc25vdGV4aXQnKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX3NldF90cnVlKHNlbGYpOgorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlY19zZXQ9VHJ1ZSwgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2Vzbm90ZXhpc3QnLCAnc29tZXRoaW5nJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ2RvZXNub3RleGlzdCcpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X2NhbGxhYmxlX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgc3BlYyA9ICgnX19jYWxsX18nLCkKKyAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWM9c3BlYykKKyAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbGFibGUobSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9ub3RfY2FsbGFibGVfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICBzcGVjID0gKCdmb28nLCAnYmFyJykKKyAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWM9c3BlYykKKyAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNhbGxhYmxlKG0pKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3RvcGFsbChzZWxmKToKKyAgICAgICAgdW5saW5rID0gb3MudW5saW5rCisgICAgICAgIGNoZGlyID0gb3MuY2hkaXIKKyAgICAgICAgcGF0aCA9IG9zLnBhdGgKKyAgICAgICAgcGF0Y2goJ29zLnVubGluaycsIHNvbWV0aGluZykuc3RhcnQoKQorICAgICAgICBwYXRjaCgnb3MuY2hkaXInLCBzb21ldGhpbmdfZWxzZSkuc3RhcnQoKQorCisgICAgICAgIEBwYXRjaCgnb3MucGF0aCcpCisgICAgICAgIGRlZiBwYXRjaGVkKG1vY2tfcGF0aCk6CisgICAgICAgICAgICBwYXRjaC5zdG9wYWxsKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MucGF0aCwgbW9ja19wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy51bmxpbmssIHVubGluaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MuY2hkaXIsIGNoZGlyKQorCisgICAgICAgIHBhdGNoZWQoKQorICAgICAgICBzZWxmLmFzc2VydElzKG9zLnBhdGgsIHBhdGgpCisKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHNlbnRpbmVsLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHNlbnRpbmVsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZGE2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0c2VudGluZWwucHkKQEAgLTAsMCArMSwyOCBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHNlbnRpbmVsLCBERUZBVUxUCisKKworY2xhc3MgU2VudGluZWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0U2VudGluZWxzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnRpbmVsLndoYXRldmVyLCBzZW50aW5lbC53aGF0ZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc2VudGluZWwgbm90IHN0b3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2VudGluZWwud2hhdGV2ZXIsIHNlbnRpbmVsLndoYXRldmVyZWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VudGluZWwgc2hvdWxkIGJlIHVuaXF1ZScpCisKKworICAgIGRlZiB0ZXN0U2VudGluZWxOYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZW50aW5lbC53aGF0ZXZlciksICdzZW50aW5lbC53aGF0ZXZlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIG5hbWUgaW5jb3JyZWN0JykKKworCisgICAgZGVmIHRlc3RERUZBVUxUKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoREVGQVVMVCBpcyBzZW50aW5lbC5ERUZBVUxUKQorCisgICAgZGVmIHRlc3RCYXNlcyhzZWxmKToKKyAgICAgICAgIyBJZiB0aGlzIGRvZXNuJ3QgcmFpc2UgYW4gQXR0cmlidXRlRXJyb3IgdGhlbiBoZWxwKG1vY2spIGlzIGJyb2tlbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBzZW50aW5lbC5fX2Jhc2VzX18pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHdpdGgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEwY2ZhZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5CkBAIC0wLDAgKzEsMTc2IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gd2FybmluZ3MgaW1wb3J0IGNhdGNoX3dhcm5pbmdzCisKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBpc19pbnN0YW5jZQorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNYWdpY01vY2ssIE1vY2ssIHBhdGNoLCBzZW50aW5lbCwgbW9ja19vcGVuLCBjYWxsCisKKworCitzb21ldGhpbmcgID0gc2VudGluZWwuU29tZXRoaW5nCitzb21ldGhpbmdfZWxzZSAgPSBzZW50aW5lbC5Tb21ldGhpbmdFbHNlCisKKworCitjbGFzcyBXaXRoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcyLCAidW5wYXRjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcyLCAidW5wYXRjaGVkIikKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3BvdycpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInBhdGNoIHN3YWxsb3dlZCBleGNlcHRpb24iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9hcyhzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobW9ja19zb21ldGhpbmcsIE1hZ2ljTW9jayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoaW5nIHdyb25nIHR5cGUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9vYmplY3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgc29tZXRoaW5nID0gJ2ZvbycKKyAgICAgICAgb3JpZ2luYWwgPSBGb28uc29tZXRoaW5nCisgICAgICAgIHdpdGggcGF0Y2gub2JqZWN0KEZvbywgJ3NvbWV0aGluZycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChGb28uc29tZXRoaW5nLCBvcmlnaW5hbCwgInVucGF0Y2hlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLnNvbWV0aGluZywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X25lc3RlZChzZWxmKToKKyAgICAgICAgd2l0aCBjYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSk6CisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfc29tZXRoaW5nLCBwYXRjaCgnJXMuc29tZXRoaW5nX2Vsc2UnICUgX19uYW1lX18pIGFzIG1vY2tfc29tZXRoaW5nX2Vsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBtb2NrX3NvbWV0aGluZ19lbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSkKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlBhdGNoZWQpIGFzIG1vY2tfc29tZXRoaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja19zb21ldGhpbmcsIHNlbnRpbmVsLlBhdGNoZWQsICJ3cm9uZyBwYXRjaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0Q29udGV4dE1hbmFnZXJNb2NraW5nKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suX19lbnRlcl9fID0gTW9jaygpCisgICAgICAgIG1vY2suX19leGl0X18gPSBNb2NrKCkKKyAgICAgICAgbW9jay5fX2V4aXRfXy5yZXR1cm5fdmFsdWUgPSBGYWxzZQorCisgICAgICAgIHdpdGggbW9jayBhcyBtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBtb2NrLl9fZW50ZXJfXy5yZXR1cm5fdmFsdWUpCisgICAgICAgIG1vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIG1vY2suX19leGl0X18uYXNzZXJ0X2NhbGxlZF93aXRoKE5vbmUsIE5vbmUsIE5vbmUpCisKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl93aXRoX21hZ2ljX21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgICAgICAnZm9vJyArIDMKKyAgICAgICAgbW9jay5fX2VudGVyX18uYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suX19leGl0X18uY2FsbGVkKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9zYW1lX2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5QYXRjaGVkKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19hZ2FpbjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19hZ2FpbiwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3RvcmVkIHdpdGggd3JvbmcgaW5zdGFuY2UiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsICJub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9pbWJyaWNhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfc29tZXRoaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKworICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nX2Vsc2UnICUgX19uYW1lX18pIGFzIG1vY2tfc29tZXRoaW5nX2Vsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgbW9ja19zb21ldGhpbmdfZWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UpCisKKworICAgIGRlZiB0ZXN0X2RpY3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICBmb28gPSB7fQorICAgICAgICB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdLb25yYWQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKworCisKK2NsYXNzIFRlc3RNb2NrT3Blbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9tb2NrX29wZW4oc2VsZik6CisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4oKQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSkgYXMgcGF0Y2hlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocGF0Y2hlZCwgbW9jaykKKyAgICAgICAgICAgIG9wZW4oJ2ZvbycpCisKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKworCisgICAgZGVmIHRlc3RfbW9ja19vcGVuX2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbigpCisgICAgICAgIGhhbmRsZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIHdpdGggb3BlbignZm9vJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLnJlYWQoKQorCisgICAgICAgIGV4cGVjdGVkX2NhbGxzID0gW2NhbGwoJ2ZvbycpLCBjYWxsKCkuX19lbnRlcl9fKCksIGNhbGwoKS5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoKS5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkX2NhbGxzKQorICAgICAgICBzZWxmLmFzc2VydElzKGYsIGhhbmRsZSkKKworCisgICAgZGVmIHRlc3RfZXhwbGljaXRfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2tfb3Blbihtb2NrKQorCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKSBhcyBwYXRjaGVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXRjaGVkLCBtb2NrKQorICAgICAgICAgICAgb3BlbignZm9vJykKKworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nKQorCisKKyAgICBkZWYgdGVzdF9yZWFkX2RhdGEoc2VsZik6CisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4ocmVhZF9kYXRhPSdmb28nKQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICBoID0gb3BlbignYmFyJykKKyAgICAgICAgICAgIHJlc3VsdCA9IGgucmVhZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICdmb28nKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL2Vycm9yLnB5IGIvTGliL3VybGxpYi9lcnJvci5weQppbmRleCBlYjE0YzFkLi5iNzEyZWJiIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL2Vycm9yLnB5CisrKyBiL0xpYi91cmxsaWIvZXJyb3IucHkKQEAgLTEzLDYgKzEzLDkgQEAKIAogaW1wb3J0IHVybGxpYi5yZXNwb25zZQogCitfX2FsbF9fID0gWydVUkxFcnJvcicsICdIVFRQRXJyb3InLCAnQ29udGVudFRvb1Nob3J0RXJyb3InXQorCisKICMgZG8gdGhlc2UgZXJyb3IgY2xhc3NlcyBtYWtlIHNlbnNlPwogIyBtYWtlIHN1cmUgYWxsIG9mIHRoZSBJT0Vycm9yIHN0dWZmIGlzIG92ZXJyaWRkZW4uICB3ZSBqdXN0IHdhbnQgdG8gYmUKICMgc3VidHlwZXMuCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKaW5kZXggZWI0NWM3ZS4uNWRkZWM1ZiAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5CisrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQpAQCAtODksMTQgKzg5LDE2IEBACiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHBvc2l4cGF0aAotaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgd2FybmluZ3MKIAorCiBmcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgVVJMRXJyb3IsIEhUVFBFcnJvciwgQ29udGVudFRvb1Nob3J0RXJyb3IKIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCAoCiAgICAgdXJscGFyc2UsIHVybHNwbGl0LCB1cmxqb2luLCB1bndyYXAsIHF1b3RlLCB1bnF1b3RlLApAQCAtMTEyLDIxICsxMTQsNDAgQEAKIGVsc2U6CiAgICAgX2hhdmVfc3NsID0gVHJ1ZQogCitfX2FsbF9fID0gWworICAgICMgQ2xhc3NlcworICAgICdSZXF1ZXN0JywgJ09wZW5lckRpcmVjdG9yJywgJ0Jhc2VIYW5kbGVyJywgJ0hUVFBEZWZhdWx0RXJyb3JIYW5kbGVyJywKKyAgICAnSFRUUFJlZGlyZWN0SGFuZGxlcicsICdIVFRQQ29va2llUHJvY2Vzc29yJywgJ1Byb3h5SGFuZGxlcicsCisgICAgJ0hUVFBQYXNzd29yZE1ncicsICdIVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtJywKKyAgICAnQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyJywgJ0hUVFBCYXNpY0F1dGhIYW5kbGVyJywgJ1Byb3h5QmFzaWNBdXRoSGFuZGxlcicsCisgICAgJ0Fic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXInLCAnSFRUUERpZ2VzdEF1dGhIYW5kbGVyJywgJ1Byb3h5RGlnZXN0QXV0aEhhbmRsZXInLAorICAgICdIVFRQSGFuZGxlcicsICdGaWxlSGFuZGxlcicsICdGVFBIYW5kbGVyJywgJ0NhY2hlRlRQSGFuZGxlcicsCisgICAgJ1Vua25vd25IYW5kbGVyJywgJ0hUVFBFcnJvclByb2Nlc3NvcicsCisgICAgIyBGdW5jdGlvbnMKKyAgICAndXJsb3BlbicsICdpbnN0YWxsX29wZW5lcicsICdidWlsZF9vcGVuZXInLAorICAgICdwYXRobmFtZTJ1cmwnLCAndXJsMnBhdGhuYW1lJywgJ2dldHByb3hpZXMnLAorICAgICMgTGVnYWN5IGludGVyZmFjZQorICAgICd1cmxyZXRyaWV2ZScsICd1cmxjbGVhbnVwJywgJ1VSTG9wZW5lcicsICdGYW5jeVVSTG9wZW5lcicsCitdCisKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50CiBfX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQogCiBfb3BlbmVyID0gTm9uZQogZGVmIHVybG9wZW4odXJsLCBkYXRhPU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAotICAgICAgICAgICAgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lKToKKyAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSwgY2FkZWZhdWx0PUZhbHNlKToKICAgICBnbG9iYWwgX29wZW5lcgotICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRlZmF1bHQ6CiAgICAgICAgIGlmIG5vdCBfaGF2ZV9zc2w6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTU0wgc3VwcG9ydCBub3QgYXZhaWxhYmxlJykKICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjIKLSAgICAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aDoKKyAgICAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRlZmF1bHQ6CiAgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZSwgY2FwYXRoKQorICAgICAgICAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGUsIGNhcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjaGVja19ob3N0bmFtZSA9IEZhbHNlCkBAIC0xNDIsMTcgKzE2Myw3OCBAQAogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgX29wZW5lciA9IG9wZW5lcgogCi0jIFRPRE8oamh5bHRvbik6IE1ha2UgdGhpcyB3b3JrIHdpdGggdGhlIHNhbWUgZ2xvYmFsIG9wZW5lci4KLV91cmxvcGVuZXIgPSBOb25lCitfdXJsX3RlbXBmaWxlcyA9IFtdCiBkZWYgdXJscmV0cmlldmUodXJsLCBmaWxlbmFtZT1Ob25lLCByZXBvcnRob29rPU5vbmUsIGRhdGE9Tm9uZSk6Ci0gICAgZ2xvYmFsIF91cmxvcGVuZXIKLSAgICBpZiBub3QgX3VybG9wZW5lcjoKLSAgICAgICAgX3VybG9wZW5lciA9IEZhbmN5VVJMb3BlbmVyKCkKLSAgICByZXR1cm4gX3VybG9wZW5lci5yZXRyaWV2ZSh1cmwsIGZpbGVuYW1lLCByZXBvcnRob29rLCBkYXRhKQorICAgICIiIgorICAgIFJldHJpZXZlIGEgVVJMIGludG8gYSB0ZW1wb3JhcnkgbG9jYXRpb24gb24gZGlzay4KKworICAgIFJlcXVpcmVzIGEgVVJMIGFyZ3VtZW50LiBJZiBhIGZpbGVuYW1lIGlzIHBhc3NlZCwgaXQgaXMgdXNlZCBhcworICAgIHRoZSB0ZW1wb3JhcnkgZmlsZSBsb2NhdGlvbi4gVGhlIHJlcG9ydGhvb2sgYXJndW1lbnQgc2hvdWxkIGJlCisgICAgYSBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgYSBibG9jayBudW1iZXIsIGEgcmVhZCBzaXplLCBhbmQgdGhlCisgICAgdG90YWwgZmlsZSBzaXplIG9mIHRoZSBVUkwgdGFyZ2V0LiBUaGUgZGF0YSBhcmd1bWVudCBzaG91bGQgYmUKKyAgICB2YWxpZCBVUkwgZW5jb2RlZCBkYXRhLgorCisgICAgSWYgYSBmaWxlbmFtZSBpcyBwYXNzZWQgYW5kIHRoZSBVUkwgcG9pbnRzIHRvIGEgbG9jYWwgcmVzb3VyY2UsCisgICAgdGhlIHJlc3VsdCBpcyBhIGNvcHkgZnJvbSBsb2NhbCBmaWxlIHRvIG5ldyBmaWxlLgorCisgICAgUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gdGhlIG5ld2x5IGNyZWF0ZWQKKyAgICBkYXRhIGZpbGUgYXMgd2VsbCBhcyB0aGUgcmVzdWx0aW5nIEhUVFBNZXNzYWdlIG9iamVjdC4KKyAgICAiIiIKKyAgICB1cmxfdHlwZSwgcGF0aCA9IHNwbGl0dHlwZSh1cmwpCisKKyAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyh1cmxvcGVuKHVybCwgZGF0YSkpIGFzIGZwOgorICAgICAgICBoZWFkZXJzID0gZnAuaW5mbygpCisKKyAgICAgICAgIyBKdXN0IHJldHVybiB0aGUgbG9jYWwgcGF0aCBhbmQgdGhlICJoZWFkZXJzIiBmb3IgZmlsZTovLworICAgICAgICAjIFVSTHMuIE5vIHNlbnNlIGluIHBlcmZvcm1pbmcgYSBjb3B5IHVubGVzcyByZXF1ZXN0ZWQuCisgICAgICAgIGlmIHVybF90eXBlID09ICJmaWxlIiBhbmQgbm90IGZpbGVuYW1lOgorICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocGF0aCksIGhlYWRlcnMKKworICAgICAgICAjIEhhbmRsZSB0ZW1wb3JhcnkgZmlsZSBzZXR1cC4KKyAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICB0ZnAgPSBvcGVuKGZpbGVuYW1lLCAnd2InKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGZwID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgICAgIGZpbGVuYW1lID0gdGZwLm5hbWUKKyAgICAgICAgICAgIF91cmxfdGVtcGZpbGVzLmFwcGVuZChmaWxlbmFtZSkKKworICAgICAgICB3aXRoIHRmcDoKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVuYW1lLCBoZWFkZXJzCisgICAgICAgICAgICBicyA9IDEwMjQqOAorICAgICAgICAgICAgc2l6ZSA9IC0xCisgICAgICAgICAgICByZWFkID0gMAorICAgICAgICAgICAgYmxvY2tudW0gPSAwCisgICAgICAgICAgICBpZiAiY29udGVudC1sZW5ndGgiIGluIGhlYWRlcnM6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGludChoZWFkZXJzWyJDb250ZW50LUxlbmd0aCJdKQorCisgICAgICAgICAgICBpZiByZXBvcnRob29rOgorICAgICAgICAgICAgICAgIHJlcG9ydGhvb2soYmxvY2tudW0sIGJzLCBzaXplKQorCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGJsb2NrID0gZnAucmVhZChicykKKyAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmVhZCArPSBsZW4oYmxvY2spCisgICAgICAgICAgICAgICAgdGZwLndyaXRlKGJsb2NrKQorICAgICAgICAgICAgICAgIGJsb2NrbnVtICs9IDEKKyAgICAgICAgICAgICAgICBpZiByZXBvcnRob29rOgorICAgICAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCBicywgc2l6ZSkKKworICAgIGlmIHNpemUgPj0gMCBhbmQgcmVhZCA8IHNpemU6CisgICAgICAgIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yKAorICAgICAgICAgICAgInJldHJpZXZhbCBpbmNvbXBsZXRlOiBnb3Qgb25seSAlaSBvdXQgb2YgJWkgYnl0ZXMiCisgICAgICAgICAgICAlIChyZWFkLCBzaXplKSwgcmVzdWx0KQorCisgICAgcmV0dXJuIHJlc3VsdAogCiBkZWYgdXJsY2xlYW51cCgpOgotICAgIGlmIF91cmxvcGVuZXI6Ci0gICAgICAgIF91cmxvcGVuZXIuY2xlYW51cCgpCisgICAgZm9yIHRlbXBfZmlsZSBpbiBfdXJsX3RlbXBmaWxlczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MudW5saW5rKHRlbXBfZmlsZSkKKyAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWwgX3VybF90ZW1wZmlsZXNbOl0KICAgICBnbG9iYWwgX29wZW5lcgogICAgIGlmIF9vcGVuZXI6CiAgICAgICAgIF9vcGVuZXIgPSBOb25lCkBAIC0xNzgsNyArMjYwLDggQEAKIGNsYXNzIFJlcXVlc3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBkYXRhPU5vbmUsIGhlYWRlcnM9e30sCi0gICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UpOgorICAgICAgICAgICAgICAgICBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLAorICAgICAgICAgICAgICAgICBtZXRob2Q9Tm9uZSk6CiAgICAgICAgICMgdW53cmFwKCc8VVJMOnR5cGU6Ly9ob3N0L3BhdGg+JykgLS0+ICd0eXBlOi8vaG9zdC9wYXRoJwogICAgICAgICBzZWxmLmZ1bGxfdXJsID0gdW53cmFwKHVybCkKICAgICAgICAgc2VsZi5mdWxsX3VybCwgc2VsZi5mcmFnbWVudCA9IHNwbGl0dGFnKHNlbGYuZnVsbF91cmwpCkBAIC0xOTIsNiArMjc1LDcgQEAKICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdCA9IHJlcXVlc3RfaG9zdChzZWxmKQogICAgICAgICBzZWxmLm9yaWdpbl9yZXFfaG9zdCA9IG9yaWdpbl9yZXFfaG9zdAogICAgICAgICBzZWxmLnVudmVyaWZpYWJsZSA9IHVudmVyaWZpYWJsZQorICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgICBzZWxmLl9wYXJzZSgpCiAKICAgICBkZWYgX3BhcnNlKHNlbGYpOgpAQCAtMjAzLDQxICsyODcsNjAgQEAKICAgICAgICAgICAgIHNlbGYuaG9zdCA9IHVucXVvdGUoc2VsZi5ob3N0KQogCiAgICAgZGVmIGdldF9tZXRob2Qoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuIiIiCisgICAgICAgIGlmIHNlbGYubWV0aG9kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubWV0aG9kCisgICAgICAgIGVsaWYgc2VsZi5kYXRhIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuICJQT1NUIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuICJHRVQiCiAKLSAgICAjIEJlZ2luIGRlcHJlY2F0ZWQgbWV0aG9kcwotCi0gICAgZGVmIGFkZF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCi0KLSAgICBkZWYgaGFzX2RhdGEoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmRhdGEgaXMgbm90IE5vbmUKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQotCiAgICAgZGVmIGdldF9mdWxsX3VybChzZWxmKToKICAgICAgICAgaWYgc2VsZi5mcmFnbWVudDoKICAgICAgICAgICAgIHJldHVybiAnJXMjJXMnICUgKHNlbGYuZnVsbF91cmwsIHNlbGYuZnJhZ21lbnQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5mdWxsX3VybAogCisgICAgIyBCZWdpbiBkZXByZWNhdGVkIG1ldGhvZHMKKworICAgIGRlZiBhZGRfZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuYWRkX2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKworICAgIGRlZiBoYXNfZGF0YShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuaGFzX2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCisgICAgICAgIHJldHVybiBzZWxmLmRhdGEgaXMgbm90IE5vbmUKKworICAgIGRlZiBnZXRfZGF0YShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCisgICAgICAgIHJldHVybiBzZWxmLmRhdGEKKwogICAgIGRlZiBnZXRfdHlwZShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3R5cGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCiAgICAgICAgIHJldHVybiBzZWxmLnR5cGUKIAogICAgIGRlZiBnZXRfaG9zdChzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X2hvc3QgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCiAgICAgICAgIHJldHVybiBzZWxmLmhvc3QKIAogICAgIGRlZiBnZXRfc2VsZWN0b3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJSZXF1ZXN0LmdldF9zZWxlY3RvciBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYuc2VsZWN0b3IKIAogICAgIGRlZiBpc191bnZlcmlmaWFibGUoc2VsZik6CisgICAgICAgIG1zZyA9ICJSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYudW52ZXJpZmlhYmxlCiAKICAgICBkZWYgZ2V0X29yaWdpbl9yZXFfaG9zdChzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X29yaWdpbl9yZXFfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYub3JpZ2luX3JlcV9ob3N0CiAKICAgICAjIEVuZCBkZXByZWNhdGVkIG1ldGhvZHMKQEAgLTY4Miw4ICs3ODUsOCBAQAogICAgICAgICBzZWxmLnByb3hpZXMgPSBwcm94aWVzCiAgICAgICAgIGZvciB0eXBlLCB1cmwgaW4gcHJveGllcy5pdGVtcygpOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAnJXNfb3BlbicgJSB0eXBlLAotICAgICAgICAgICAgICAgICAgICBsYW1iZGEgciwgcHJveHk9dXJsLCB0eXBlPXR5cGUsIG1ldGg9c2VsZi5wcm94eV9vcGVuOiBcCi0gICAgICAgICAgICAgICAgICAgIG1ldGgociwgcHJveHksIHR5cGUpKQorICAgICAgICAgICAgICAgICAgICBsYW1iZGEgciwgcHJveHk9dXJsLCB0eXBlPXR5cGUsIG1ldGg9c2VsZi5wcm94eV9vcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgbWV0aChyLCBwcm94eSwgdHlwZSkpCiAKICAgICBkZWYgcHJveHlfb3BlbihzZWxmLCByZXEsIHByb3h5LCB0eXBlKToKICAgICAgICAgb3JpZ190eXBlID0gcmVxLnR5cGUKQEAgLTgyNSwxNyArOTI4LDIzIEBACiAgICAgICAgICAgICBzZWxmLnJldHJpZWQgKz0gMQogCiAgICAgICAgIGlmIGF1dGhyZXE6Ci0gICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKLSAgICAgICAgICAgIGlmIG1vOgotICAgICAgICAgICAgICAgIHNjaGVtZSwgcXVvdGUsIHJlYWxtID0gbW8uZ3JvdXBzKCkKLSAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyInIiwgJyInXToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAyKQotICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpID09ICdiYXNpYyc6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVzcG9uc2UgYW5kIHJlc3BvbnNlLmNvZGUgIT0gNDAxOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXRyaWVkID0gMAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKKyAgICAgICAgICAgIHNjaGVtZSA9IGF1dGhyZXEuc3BsaXQoKVswXQorICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgZG9lcyBub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBzY2hlbWU6ICclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbW8gPSBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucnguc2VhcmNoKGF1dGhyZXEpCisgICAgICAgICAgICAgICAgaWYgbW86CisgICAgICAgICAgICAgICAgICAgIHNjaGVtZSwgcXVvdGUsIHJlYWxtID0gbW8uZ3JvdXBzKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgcXVvdGUgbm90IGluIFsnIicsIiciXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpID09ICdiYXNpYyc6CisgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmV0cnlfaHR0cF9iYXNpY19hdXRoKGhvc3QsIHJlcSwgcmVhbG0pCisgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXNwb25zZSBhbmQgcmVzcG9uc2UuY29kZSAhPSA0MDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXRyaWVkID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgcmV0cnlfaHR0cF9iYXNpY19hdXRoKHNlbGYsIGhvc3QsIHJlcSwgcmVhbG0pOgogICAgICAgICB1c2VyLCBwdyA9IHNlbGYucGFzc3dkLmZpbmRfdXNlcl9wYXNzd29yZChyZWFsbSwgaG9zdCkKQEAgLTg3OCw5ICs5ODcsOSBAQAogICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogCi1kZWYgcmFuZG9tYnl0ZXMobik6Ci0gICAgIiIiUmV0dXJuIG4gcmFuZG9tIGJ5dGVzLiIiIgotICAgIHJldHVybiBvcy51cmFuZG9tKG4pCisjIFJldHVybiBuIHJhbmRvbSBieXRlcy4KK19yYW5kb21ieXRlcyA9IG9zLnVyYW5kb20KKwogCiBjbGFzcyBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyOgogICAgICMgRGlnZXN0IGF1dGhlbnRpY2F0aW9uIGlzIHNwZWNpZmllZCBpbiBSRkMgMjYxNy4KQEAgLTkyMSw2ICsxMDMwLDkgQEAKICAgICAgICAgICAgIHNjaGVtZSA9IGF1dGhyZXEuc3BsaXQoKVswXQogICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2RpZ2VzdCc6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfaHR0cF9kaWdlc3RfYXV0aChyZXEsIGF1dGhyZXEpCisgICAgICAgICAgICBlbGlmIHNjaGVtZS5sb3dlcigpICE9ICdiYXNpYyc6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlciBkb2VzIG5vdCBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJSBzY2hlbWUpCiAKICAgICBkZWYgcmV0cnlfaHR0cF9kaWdlc3RfYXV0aChzZWxmLCByZXEsIGF1dGgpOgogICAgICAgICB0b2tlbiwgY2hhbGxlbmdlID0gYXV0aC5zcGxpdCgnICcsIDEpCkBAIC05NDEsNyArMTA1Myw3IEBACiAgICAgICAgICMgYXV0aGVudGljYXRpb24sIGFuZCB0byBwcm92aWRlIHNvbWUgbWVzc2FnZSBpbnRlZ3JpdHkgcHJvdGVjdGlvbi4KICAgICAgICAgIyBUaGlzIGlzbid0IGEgZmFidWxvdXMgZWZmb3J0LCBidXQgaXQncyBwcm9iYWJseSBHb29kIEVub3VnaC4KICAgICAgICAgcyA9ICIlczolczolczoiICUgKHNlbGYubm9uY2VfY291bnQsIG5vbmNlLCB0aW1lLmN0aW1lKCkpCi0gICAgICAgIGIgPSBzLmVuY29kZSgiYXNjaWkiKSArIHJhbmRvbWJ5dGVzKDgpCisgICAgICAgIGIgPSBzLmVuY29kZSgiYXNjaWkiKSArIF9yYW5kb21ieXRlcyg4KQogICAgICAgICBkaWcgPSBoYXNobGliLnNoYTEoYikuaGV4ZGlnZXN0KCkKICAgICAgICAgcmV0dXJuIGRpZ1s6MTZdCiAKQEAgLTEwNjYsNyArMTE3OCw3IEBACiAgICAgICAgIGlmIHJlcXVlc3QuZGF0YSBpcyBub3QgTm9uZTogICMgUE9TVAogICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3QuZGF0YQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgotICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiXAorICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiIFwKICAgICAgICAgICAgICAgICAgICAgICAiSXQgY2Fubm90IGJlIG9mIHR5cGUgc3RyLiIKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQogICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC10eXBlJyk6CkBAIC0xMTYyLDcgKzEyNzQsNiBAQAogICAgIGh0dHBfcmVxdWVzdCA9IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fcmVxdWVzdF8KIAogaWYgaGFzYXR0cihodHRwLmNsaWVudCwgJ0hUVFBTQ29ubmVjdGlvbicpOgotICAgIGltcG9ydCBzc2wKIAogICAgIGNsYXNzIEhUVFBTSGFuZGxlcihBYnN0cmFjdEhUVFBIYW5kbGVyKToKIApAQCAtMTE3Nyw2ICsxMjg4LDggQEAKIAogICAgICAgICBodHRwc19yZXF1ZXN0ID0gQWJzdHJhY3RIVFRQSGFuZGxlci5kb19yZXF1ZXN0XwogCisgICAgX19hbGxfXy5hcHBlbmQoJ0hUVFBTSGFuZGxlcicpCisKIGNsYXNzIEhUVFBDb29raWVQcm9jZXNzb3IoQmFzZUhhbmRsZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb29raWVqYXI9Tm9uZSk6CiAgICAgICAgIGltcG9ydCBodHRwLmNvb2tpZWphcgpAQCAtMTQ2Myw2ICsxNTc2LDkgQEAKIAogICAgICMgQ29uc3RydWN0b3IKICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJveGllcz1Ob25lLCAqKng1MDkpOgorICAgICAgICBtc2cgPSAiJShjbGFzcylzIHN0eWxlIG9mIGludm9raW5nIHJlcXVlc3RzIGlzIGRlcHJlY2F0ZWQuICIgXAorICAgICAgICAgICAgICAiVXNlIG5ld2VyIHVybG9wZW4gZnVuY3Rpb25zL21ldGhvZHMiICUgeydjbGFzcyc6IHNlbGYuX19jbGFzc19fLl9fbmFtZV9ffQorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTMpCiAgICAgICAgIGlmIHByb3hpZXMgaXMgTm9uZToKICAgICAgICAgICAgIHByb3hpZXMgPSBnZXRwcm94aWVzKCkKICAgICAgICAgYXNzZXJ0IGhhc2F0dHIocHJveGllcywgJ2tleXMnKSwgInByb3hpZXMgbXVzdCBiZSBhIG1hcHBpbmciCkBAIC0xNTQyLDYgKzE2NTgsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIG5hbWUpKHVybCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsLCBkYXRhKQorICAgICAgICBleGNlcHQgSFRUUEVycm9yOgorICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdzb2NrZXQgZXJyb3InLCBtc2cpLndpdGhfdHJhY2ViYWNrKHN5cy5leGNfaW5mbygpWzJdKQogCkBAIC0xNzYwLDggKzE4NzgsOCBAQAogCiAgICAgZGVmIG9wZW5fbG9jYWxfZmlsZShzZWxmLCB1cmwpOgogICAgICAgICAiIiJVc2UgbG9jYWwgZmlsZS4iIiIKLSAgICAgICAgaW1wb3J0IG1pbWV0eXBlcywgZW1haWwudXRpbHMKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICAgICAgaW1wb3J0IGVtYWlsLnV0aWxzCisgICAgICAgIGltcG9ydCBtaW1ldHlwZXMKICAgICAgICAgaG9zdCwgZmlsZSA9IHNwbGl0aG9zdCh1cmwpCiAgICAgICAgIGxvY2FsbmFtZSA9IHVybDJwYXRobmFtZShmaWxlKQogICAgICAgICB0cnk6CkBAIC0xODc3LDcgKzE5OTUsNyBAQAogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LXR5cGU6ICVzJyAlIHR5cGUpCiAgICAgICAgIGlmIGVuY29kaW5nID09ICdiYXNlNjQnOgogICAgICAgICAgICAgIyBYWFggaXMgdGhpcyBlbmNvZGluZy9kZWNvZGluZyBvaz8KLSAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4tMScpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gdW5xdW90ZShkYXRhKQogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LUxlbmd0aDogJWQnICUgbGVuKGRhdGEpKQpAQCAtMTk3MCw3ICsyMDg4LDYgQEAKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3d3dy1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTE5OTYsNyArMjExMyw2IEBACiAgICAgICAgICAgICBVUkxvcGVuZXIuaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICAgc3R1ZmYgPSBoZWFkZXJzWydwcm94eS1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTIyODIsOCArMjM5OCw2IEBACiAgICAgICAnZXhjZXB0aW9ucyc6IFsnZm9vLmJhcicsICcqLmJhci5jb20nLCAnMTI3LjAuMC4xJywgJzEwLjEnLCAnMTAuMC8xNiddCiAgICAgfQogICAgICIiIgotICAgIGltcG9ydCByZQotICAgIGltcG9ydCBzb2NrZXQKICAgICBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKIAogICAgIGhvc3Rvbmx5LCBwb3J0ID0gc3BsaXRwb3J0KGhvc3QpCkBAIC0yMzg2LDcgKzI1MDAsNiBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm94eVNlcnZlci5zcGxpdCgnOycpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wsIGFkZHJlc3MgPSBwLnNwbGl0KCc9JywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlmIGFkZHJlc3MgaGFzIGEgdHlwZTovLyBwcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdeKFteLzpdKyk6Ly8nLCBhZGRyZXNzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzID0gJyVzOi8vJXMnICUgKHByb3RvY29sLCBhZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJveGllc1twcm90b2NvbF0gPSBhZGRyZXNzCkBAIC0yNDE4LDcgKzI1MzEsNiBAQAogICAgIGRlZiBwcm94eV9ieXBhc3NfcmVnaXN0cnkoaG9zdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCB3aW5yZWcKLSAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAjIFN0ZCBtb2R1bGVzLCBzbyBzaG91bGQgYmUgYXJvdW5kIC0gYnV0IHlvdSBuZXZlciBrbm93IQogICAgICAgICAgICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVzcG9uc2UucHkgYi9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5CmluZGV4IGZmYWE1ZmEuLjFjZjFkMWEgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVzcG9uc2UucHkKKysrIGIvTGliL3VybGxpYi9yZXNwb25zZS5weQpAQCAtMzcsMTIgKzM3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5mcCkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5mcDoKKyAgICAgICAgICAgIHNlbGYuZnAuY2xvc2UoKQorICAgICAgICBzZWxmLmZwID0gTm9uZQogICAgICAgICBzZWxmLnJlYWQgPSBOb25lCiAgICAgICAgIHNlbGYucmVhZGxpbmUgPSBOb25lCiAgICAgICAgIHNlbGYucmVhZGxpbmVzID0gTm9uZQogICAgICAgICBzZWxmLmZpbGVubyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5mcDogc2VsZi5mcC5jbG9zZSgpCi0gICAgICAgIHNlbGYuZnAgPSBOb25lCisgICAgICAgIHNlbGYuX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuX19uZXh0X18gPSBOb25lCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvdXVpZC5weSBiL0xpYi91dWlkLnB5CmluZGV4IDU2ODRhZDcuLjBkZjA3NDMgMTAwNjQ0Ci0tLSBhL0xpYi91dWlkLnB5CisrKyBiL0xpYi91dWlkLnB5CkBAIC00NDAsNyArNDQwLDcgQEAKICAgICBpbXBvcnQgc3lzCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBpbXBvcnQgb3MKLSAgICAgICAgaWYgaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkgPj0gOToKKyAgICAgICAgaWYgaW50KG9zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA+PSA5OgogICAgICAgICAgICAgX3V1aWRfZ2VuZXJhdGVfcmFuZG9tID0gX3V1aWRfZ2VuZXJhdGVfdGltZSA9IE5vbmUKIAogICAgICMgT24gV2luZG93cyBwcmlvciB0byAyMDAwLCBVdWlkQ3JlYXRlIGdpdmVzIGEgVVVJRCBjb250YWluaW5nIHRoZQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19pbml0X18ucHkgYi9MaWIvdmVudi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTIwNzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvX19pbml0X18ucHkKQEAgLTAsMCArMSw0MDcgQEAKKyIiIgorVmlydHVhbCBlbnZpcm9ubWVudCAodmVudikgcGFja2FnZSBmb3IgUHl0aG9uLiBCYXNlZCBvbiBQRVAgNDA1LgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBWaW5heSBTYWppcC4KK0xpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCisKK3VzYWdlOiBweXRob24gLW0gdmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCisgICAgICAgICAgICBbLS11cGdyYWRlXQorICAgICAgICAgICAgRU5WX0RJUiBbRU5WX0RJUiAuLi5dCisKK0NyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KKworcG9zaXRpb25hbCBhcmd1bWVudHM6CisgIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorCitvcHRpb25hbCBhcmd1bWVudHM6CisgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgorICAtLXN5bWxpbmtzICAgICAgICAgICAgQXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkuCisgIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorIiIiCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgaW8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKK2NsYXNzIENvbnRleHQ6CisgICAgIiIiCisgICAgSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW50IHZlbnYgY3JlYXRpb24vdXBncmFkZSByZXF1ZXN0LgorICAgICIiIgorICAgIHBhc3MKKworCitjbGFzcyBFbnZCdWlsZGVyOgorICAgICIiIgorICAgIFRoaXMgY2xhc3MgZXhpc3RzIHRvIGFsbG93IHZpcnR1YWwgZW52aXJvbm1lbnQgY3JlYXRpb24gdG8gYmUKKyAgICBjdXN0b21pc2VkLiBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBkZXRlcm1pbmUgdGhlIGJ1aWxkZXIncworICAgIGJlaGF2aW91ciB3aGVuIGNhbGxlZCB1cG9uIHRvIGNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQuCisKKyAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGRlciBtYWtlcyB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMgZGlyCisgICAgKnVuKmF2YWlsYWJsZSB0byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKworICAgIElmIGludm9rZWQgdXNpbmcgdGhlIFB5dGhvbiAtbSBvcHRpb24sIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSBjb3B5aW5nCisgICAgb24gV2luZG93cyBwbGF0Zm9ybXMgYnV0IHN5bWxpbmtzIGVsc2V3aGVyZS4gSWYgaW5zdGFudGlhdGVkIHNvbWUKKyAgICBvdGhlciB3YXksIHRoZSBkZWZhdWx0IGlzIHRvICpub3QqIHVzZSBzeW1saW5rcy4KKworICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIGNyZWF0ZWQgZW52aXJvbm1lbnRzLgorICAgIDpwYXJhbSBjbGVhcjogSWYgVHJ1ZSBhbmQgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBpdCBpcyBkZWxldGVkLgorICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICByYWlzZWQuCisgICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCisgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgIDpwYXJhbSB1cGdyYWRlOiBJZiBUcnVlLCB1cGdyYWRlIGFuIGV4aXN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAorICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSk6CisgICAgICAgIHNlbGYuc3lzdGVtX3NpdGVfcGFja2FnZXMgPSBzeXN0ZW1fc2l0ZV9wYWNrYWdlcworICAgICAgICBzZWxmLmNsZWFyID0gY2xlYXIKKyAgICAgICAgc2VsZi5zeW1saW5rcyA9IHN5bWxpbmtzCisgICAgICAgIHNlbGYudXBncmFkZSA9IHVwZ3JhZGUKKworICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgorCisgICAgICAgIDpwYXJhbSBlbnZfZGlyOiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgaW4uCisKKyAgICAgICAgIiIiCisgICAgICAgIGVudl9kaXIgPSBvcy5wYXRoLmFic3BhdGgoZW52X2RpcikKKyAgICAgICAgY29udGV4dCA9IHNlbGYuZW5zdXJlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisgICAgICAgIHNlbGYuY3JlYXRlX2NvbmZpZ3VyYXRpb24oY29udGV4dCkKKyAgICAgICAgc2VsZi5zZXR1cF9weXRob24oY29udGV4dCkKKyAgICAgICAgaWYgbm90IHNlbGYudXBncmFkZToKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfc2NyaXB0cyhjb250ZXh0KQorICAgICAgICAgICAgc2VsZi5wb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICBkZWYgZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIFJldHVybnMgYSBjb250ZXh0IG9iamVjdCB3aGljaCBob2xkcyBwYXRocyBpbiB0aGUgZW52aXJvbm1lbnQsCisgICAgICAgIGZvciB1c2UgYnkgc3Vic2VxdWVudCBsb2dpYy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9pZl9uZWVkZWQoZCk6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZCk6CisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZCkKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhlbnZfZGlyKSBhbmQgbm90IChzZWxmLmNsZWFyIG9yIHNlbGYudXBncmFkZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdEaXJlY3RvcnkgZXhpc3RzOiAlcycgJSBlbnZfZGlyKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhlbnZfZGlyKSBhbmQgc2VsZi5jbGVhcjoKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZW52X2RpcikKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQoKQorICAgICAgICBjb250ZXh0LmVudl9kaXIgPSBlbnZfZGlyCisgICAgICAgIGNvbnRleHQuZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KGVudl9kaXIpWzFdCisgICAgICAgIGNvbnRleHQucHJvbXB0ID0gJyglcykgJyAlIGNvbnRleHQuZW52X25hbWUKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChlbnZfZGlyKQorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIGVudjoKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQorICAgICAgICBkaXJuYW1lLCBleGVuYW1lID0gb3MucGF0aC5zcGxpdChvcy5wYXRoLmFic3BhdGgoZXhlY3V0YWJsZSkpCisgICAgICAgIGNvbnRleHQuZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUKKyAgICAgICAgY29udGV4dC5weXRob25fZGlyID0gZGlybmFtZQorICAgICAgICBjb250ZXh0LnB5dGhvbl9leGUgPSBleGVuYW1lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgYmlubmFtZSA9ICdTY3JpcHRzJworICAgICAgICAgICAgaW5jcGF0aCA9ICdJbmNsdWRlJworICAgICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCAnTGliJywgJ3NpdGUtcGFja2FnZXMnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmlubmFtZSA9ICdiaW4nCisgICAgICAgICAgICBpbmNwYXRoID0gJ2luY2x1ZGUnCisgICAgICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsICdsaWInLCAncHl0aG9uJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sICdzaXRlLXBhY2thZ2VzJykKKyAgICAgICAgY29udGV4dC5pbmNfcGF0aCA9IHBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgaW5jcGF0aCkKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChwYXRoKQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGxpYnBhdGgpCisgICAgICAgIGNvbnRleHQuYmluX3BhdGggPSBiaW5wYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsIGJpbm5hbWUpCisgICAgICAgIGNvbnRleHQuYmluX25hbWUgPSBiaW5uYW1lCisgICAgICAgIGNvbnRleHQuZW52X2V4ZSA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBleGVuYW1lKQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGJpbnBhdGgpCisgICAgICAgIHJldHVybiBjb250ZXh0CisKKyAgICBkZWYgY3JlYXRlX2NvbmZpZ3VyYXRpb24oc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUgaW5kaWNhdGluZyB3aGVyZSB0aGUgZW52aXJvbm1lbnQncyBQeXRob24KKyAgICAgICAgd2FzIGNvcGllZCBmcm9tLCBhbmQgd2hldGhlciB0aGUgc3lzdGVtIHNpdGUtcGFja2FnZXMgc2hvdWxkIGJlIG1hZGUKKyAgICAgICAgYXZhaWxhYmxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgY29udGV4dC5jZmdfcGF0aCA9IHBhdGggPSBvcy5wYXRoLmpvaW4oY29udGV4dC5lbnZfZGlyLCAncHl2ZW52LmNmZycpCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdob21lID0gJXNcbicgJSBjb250ZXh0LnB5dGhvbl9kaXIpCisgICAgICAgICAgICBpZiBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzOgorICAgICAgICAgICAgICAgIGluY2wgPSAndHJ1ZScKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW5jbCA9ICdmYWxzZScKKyAgICAgICAgICAgIGYud3JpdGUoJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMgPSAlc1xuJyAlIGluY2wpCisgICAgICAgICAgICBmLndyaXRlKCd2ZXJzaW9uID0gJWQuJWQuJWRcbicgJSBzeXMudmVyc2lvbl9pbmZvWzozXSkKKworICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgZGVmIGluY2x1ZGVfYmluYXJ5KHNlbGYsIGYpOgorICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgoJy5weWQnLCAnLmRsbCcpKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYuc3RhcnRzd2l0aCgncHl0aG9uJykgYW5kIGYuZW5kc3dpdGgoJy5leGUnKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHN5bWxpbmtfb3JfY29weShzZWxmLCBzcmMsIGRzdCk6CisgICAgICAgICIiIgorICAgICAgICBUcnkgc3ltbGlua2luZyBhIGZpbGUsIGFuZCBpZiB0aGF0IGZhaWxzLCBmYWxsIGJhY2sgdG8gY29weWluZy4KKyAgICAgICAgIiIiCisgICAgICAgIGZvcmNlX2NvcHkgPSBub3Qgc2VsZi5zeW1saW5rcworICAgICAgICBpZiBub3QgZm9yY2VfY29weToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsoZHN0KTogIyBjYW4ndCBsaW5rIHRvIGl0c2VsZiEKKyAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246ICAgIyBtYXkgbmVlZCB0byB1c2UgYSBtb3JlIHNwZWNpZmljIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gc3ltbGluayAlciB0byAlcicsIHNyYywgZHN0KQorICAgICAgICAgICAgICAgIGZvcmNlX2NvcHkgPSBUcnVlCisgICAgICAgIGlmIGZvcmNlX2NvcHk6CisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisKKyAgICBkZWYgc2V0dXBfcHl0aG9uKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2V0IHVwIGEgUHl0aG9uIGV4ZWN1dGFibGUgaW4gdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICBiaW5wYXRoID0gY29udGV4dC5iaW5fcGF0aAorICAgICAgICBleGVuYW1lID0gY29udGV4dC5weXRob25fZXhlCisgICAgICAgIHBhdGggPSBjb250ZXh0LmVudl9leGUKKyAgICAgICAgY29waWVyID0gc2VsZi5zeW1saW5rX29yX2NvcHkKKyAgICAgICAgY29waWVyKGNvbnRleHQuZXhlY3V0YWJsZSwgcGF0aCkKKyAgICAgICAgZGlybmFtZSA9IGNvbnRleHQucHl0aG9uX2RpcgorICAgICAgICBpZiBvcy5uYW1lICE9ICdudCc6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsocGF0aCk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG83NTUpCisgICAgICAgICAgICBmb3Igc3VmZml4IGluICgncHl0aG9uJywgJ3B5dGhvbjMnKToKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoZXhlbmFtZSwgcGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1YmRpciA9ICdETExzJworICAgICAgICAgICAgaW5jbHVkZSA9IHNlbGYuaW5jbHVkZV9iaW5hcnkKKyAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gb3MubGlzdGRpcihkaXJuYW1lKSBpZiBpbmNsdWRlKGYpXQorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGYpCisgICAgICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGYpCisgICAgICAgICAgICAgICAgaWYgZHN0ICE9IGNvbnRleHQuZW52X2V4ZTogICMgYWxyZWFkeSBkb25lLCBhYm92ZQorICAgICAgICAgICAgICAgICAgICBjb3BpZXIoc3JjLCBkc3QpCisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHN1YmRpcikKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlybmFtZSk6CisgICAgICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKGRpcm5hbWUpIGlmIGluY2x1ZGUoZildCisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBmKQorICAgICAgICAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZikKKyAgICAgICAgICAgICAgICAgICAgY29waWVyKHNyYywgZHN0KQorICAgICAgICAgICAgIyBjb3B5IGluaXQudGNsIG92ZXIKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGNvbnRleHQucHl0aG9uX2Rpcik6CisgICAgICAgICAgICAgICAgaWYgJ2luaXQudGNsJyBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgdGNsZGlyID0gb3MucGF0aC5iYXNlbmFtZShyb290KQorICAgICAgICAgICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4oY29udGV4dC5lbnZfZGlyLCAnTGliJywgdGNsZGlyKQorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyh0Y2xkaXIpCisgICAgICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihyb290LCAnaW5pdC50Y2wnKQorICAgICAgICAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odGNsZGlyLCAnaW5pdC50Y2wnKQorICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBkZWYgc2V0dXBfc2NyaXB0cyhzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBzY3JpcHRzIGludG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQgZnJvbSBhIGRpcmVjdG9yeS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpbnN0YWxscyB0aGUgZGVmYXVsdCBzY3JpcHRzIGludG8gdGhlIGVudmlyb25tZW50CisgICAgICAgIGJlaW5nIGNyZWF0ZWQuIFlvdSBjYW4gcHJldmVudCB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gYnkgb3ZlcnJpZGluZworICAgICAgICB0aGlzIG1ldGhvZCBpZiB5b3UgcmVhbGx5IG5lZWQgdG8sIG9yIGlmIHlvdSBuZWVkIHRvIHNwZWNpZnkKKyAgICAgICAgYSBkaWZmZXJlbnQgbG9jYXRpb24gZm9yIHRoZSBzY3JpcHRzIHRvIGluc3RhbGwuIEJ5IGRlZmF1bHQsIHRoZQorICAgICAgICAnc2NyaXB0cycgZGlyZWN0b3J5IGluIHRoZSB2ZW52IHBhY2thZ2UgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mCisgICAgICAgIHNjcmlwdHMgdG8gaW5zdGFsbC4KKyAgICAgICAgIiIiCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAnc2NyaXB0cycpCisgICAgICAgIHNlbGYuaW5zdGFsbF9zY3JpcHRzKGNvbnRleHQsIHBhdGgpCisKKyAgICBkZWYgcG9zdF9zZXR1cChzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIEhvb2sgZm9yIHBvc3Qtc2V0dXAgbW9kaWZpY2F0aW9uIG9mIHRoZSB2ZW52LiBTdWJjbGFzc2VzIG1heSBpbnN0YWxsCisgICAgICAgIGFkZGl0aW9uYWwgcGFja2FnZXMgb3Igc2NyaXB0cyBoZXJlLCBhZGQgYWN0aXZhdGlvbiBzaGVsbCBzY3JpcHRzLCBldGMuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiByZXBsYWNlX3ZhcmlhYmxlcyhzZWxmLCB0ZXh0LCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIFJlcGxhY2UgdmFyaWFibGUgcGxhY2Vob2xkZXJzIGluIHNjcmlwdCB0ZXh0IHdpdGggY29udGV4dC1zcGVjaWZpYworICAgICAgICB2YXJpYWJsZXMuCisKKyAgICAgICAgUmV0dXJuIHRoZSB0ZXh0IHBhc3NlZCBpbiAsIGJ1dCB3aXRoIHZhcmlhYmxlcyByZXBsYWNlZC4KKworICAgICAgICA6cGFyYW0gdGV4dDogVGhlIHRleHQgaW4gd2hpY2ggdG8gcmVwbGFjZSBwbGFjZWhvbGRlciB2YXJpYWJsZXMuCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfRElSX18nLCBjb250ZXh0LmVudl9kaXIpCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9OQU1FX18nLCBjb250ZXh0LnByb21wdCkKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX0JJTl9OQU1FX18nLCBjb250ZXh0LmJpbl9uYW1lKQorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfUFlUSE9OX18nLCBjb250ZXh0LmVudl9leGUpCisgICAgICAgIHJldHVybiB0ZXh0CisKKyAgICBkZWYgaW5zdGFsbF9zY3JpcHRzKHNlbGYsIGNvbnRleHQsIHBhdGgpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBzY3JpcHRzIGludG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQgZnJvbSBhIGRpcmVjdG9yeS4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICA6cGFyYW0gcGF0aDogICAgQWJzb2x1dGUgcGF0aG5hbWUgb2YgYSBkaXJlY3RvcnkgY29udGFpbmluZyBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRzIGluIHRoZSAnY29tbW9uJyBzdWJkaXJlY3Rvcnkgb2YgdGhpcyBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhvc2UgaW4gdGhlIGRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBydW4gb24sIGFyZSBpbnN0YWxsZWQgaW4gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBQbGFjZWhvbGRlciB2YXJpYWJsZXMgYXJlIHJlcGxhY2VkIHdpdGggZW52aXJvbm1lbnQtCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB2YWx1ZXMuCisgICAgICAgICIiIgorICAgICAgICBiaW5wYXRoID0gY29udGV4dC5iaW5fcGF0aAorICAgICAgICBwbGVuID0gbGVuKHBhdGgpCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgorICAgICAgICAgICAgaWYgcm9vdCA9PSBwYXRoOiAjIGF0IHRvcC1sZXZlbCwgcmVtb3ZlIGlycmVsZXZhbnQgZGlycworICAgICAgICAgICAgICAgIGZvciBkIGluIGRpcnNbOl06CisgICAgICAgICAgICAgICAgICAgIGlmIGQgbm90IGluICgnY29tbW9uJywgb3MubmFtZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgaWdub3JlIGZpbGVzIGluIHRvcCBsZXZlbAorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgc3JjZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHJvb3RbcGxlbjpdLnNwbGl0KG9zLnNlcClbMjpdCisgICAgICAgICAgICAgICAgaWYgbm90IHN1ZmZpeDoKKyAgICAgICAgICAgICAgICAgICAgZHN0ZGlyID0gYmlucGF0aAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRzdGRpciA9IG9zLnBhdGguam9pbihiaW5wYXRoLCAqc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RkaXIpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkc3RkaXIpCisgICAgICAgICAgICAgICAgZHN0ZmlsZSA9IG9zLnBhdGguam9pbihkc3RkaXIsIGYpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICAgICAgICAgIGlmIHNyY2ZpbGUuZW5kc3dpdGgoJy5leGUnKToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICd3YicKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3cnCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVwbGFjZV92YXJpYWJsZXMoZGF0YSwgY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCd1bmFibGUgdG8gY29weSBzY3JpcHQgJXIsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXkgYmUgYmluYXJ5OiAlcycsIHNyY2ZpbGUsIGUpCisgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRzdGZpbGUsIG1vZGUpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNmaWxlLCBkc3RmaWxlKQorCisKK2RlZiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSk6CisgICAgIiIiCisgICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKworICAgIEJ5IGRlZmF1bHQsIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIgKnVuKmF2YWlsYWJsZSB0bworICAgIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LCBhbmQgdXNlcyBjb3B5aW5nIHJhdGhlciB0aGFuIHN5bWxpbmtpbmcgZm9yIGZpbGVzCisgICAgb2J0YWluZWQgZnJvbSB0aGUgc291cmNlIFB5dGhvbiBpbnN0YWxsYXRpb24uCisKKyAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC4KKyAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUgYW5kIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgaXQgaXMgZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAgIDpwYXJhbSBzeW1saW5rczogSWYgVHJ1ZSwgYXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkgZmlsZXMgaW50bworICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAiIiIKKyAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zeXN0ZW1fc2l0ZV9wYWNrYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzKQorICAgIGJ1aWxkZXIuY3JlYXRlKGVudl9kaXIpCisKK2RlZiBtYWluKGFyZ3M9Tm9uZSk6CisgICAgY29tcGF0aWJsZSA9IFRydWUKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICBjb21wYXRpYmxlID0gRmFsc2UKKyAgICBlbGlmIG5vdCBoYXNhdHRyKHN5cywgJ2Jhc2VfcHJlZml4Jyk6CisgICAgICAgIGNvbXBhdGlibGUgPSBGYWxzZQorICAgIGlmIG5vdCBjb21wYXRpYmxlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGlzIHNjcmlwdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBQeXRob24gMy4zJykKKyAgICBlbHNlOgorICAgICAgICBpbXBvcnQgYXJncGFyc2UKKworICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPV9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudHMgaW4gb25lIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nT25jZSBhbiBlbnZpcm9ubWVudCBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCwgeW91IG1heSB3aXNoIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmF0ZSBpdCwgZS5nLiBieSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNpbmcgYW4gYWN0aXZhdGUgc2NyaXB0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbiBpdHMgYmluIGRpcmVjdG9yeS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc3lzdGVtLXNpdGUtcGFja2FnZXMnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3N5c3RlbV9zaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbSBzaXRlLXBhY2thZ2VzIGRpci4nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICB1c2Vfc3ltbGlua3MgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdXNlX3N5bWxpbmtzID0gVHJ1ZQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN5bWxpbmtzJywgZGVmYXVsdD11c2Vfc3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nc3ltbGlua3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hlbiBzeW1saW5rcyBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHBsYXRmb3JtLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMuIElmIG5vdCBzcGVjaWZpZWQgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvcicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpcyByYWlzZWQuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11cGdyYWRlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3lvdSBjYW5ub3Qgc3VwcGx5IC0tdXBncmFkZSBhbmQgLS1jbGVhciB0b2dldGhlci4nKQorICAgICAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1vcHRpb25zLnN5c3RlbV9zaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1vcHRpb25zLmNsZWFyLCBzeW1saW5rcz1vcHRpb25zLnN5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSkKKyAgICAgICAgZm9yIGQgaW4gb3B0aW9ucy5kaXJzOgorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoZCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICByYyA9IDEKKyAgICB0cnk6CisgICAgICAgIG1haW4oKQorICAgICAgICByYyA9IDAKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0KHJjKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19tYWluX18ucHkgYi9MaWIvdmVudi9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI0MjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvX19tYWluX18ucHkKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN5cworZnJvbSAuIGltcG9ydCBtYWluCisKK3JjID0gMQordHJ5OgorICAgIG1haW4oKQorICAgIHJjID0gMAorZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorc3lzLmV4aXQocmMpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNWVmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMQpAQCAtMCwwICsxLDM0IEBACiskZW52OlZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iDQorDQorIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQoraWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KKyAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQorfQ0KKw0KKyMgU2V0IHRoZSBwcm9tcHQgdG8gaW5jbHVkZSB0aGUgZW52IG5hbWUNCitjb3B5LWl0ZW0gZnVuY3Rpb246cHJvbXB0IGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCitmdW5jdGlvbiBwcm9tcHQgew0KKyAgICBXcml0ZS1Ib3N0IC1Ob05ld2xpbmUgLUZvcmVncm91bmRDb2xvciBHcmVlbiAnW19fVkVOVl9OQU1FX19dJw0KKyAgICBfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KKyMgQ2xlYXIgUFlUSE9OSE9NRQ0KK2lmIChUZXN0LVBhdGggZW52OlBZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpQWVRIT05IT01FIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6UFlUSE9OSE9NRQ0KK30NCisNCisjIEFkZCB0aGUgdmVudiB0byB0aGUgUEFUSA0KK2NvcHktaXRlbSBlbnY6UEFUSCBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCiskZW52OlBBVEggPSAiJGVudjpWSVJUVUFMX0VOVlxfX1ZFTlZfQklOX05BTUVfXzskZW52OlBBVEgiDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QxZTk2YgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEKQEAgLTAsMCArMSwxOSBAQAorIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQoraWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KKyAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52OlZJUlRVQUxfRU5WKSB7DQorICAgIHJlbW92ZS1pdGVtIGVudjpWSVJUVUFMX0VOVg0KK30NCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdCBiL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NWU2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdApAQCAtMCwwICsxLDMxIEBACitAZWNobyBvZmYNCitzZXQgVklSVFVBTF9FTlY9X19WRU5WX0RJUl9fDQorDQoraWYgbm90IGRlZmluZWQgUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0kUCRHDQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BST01QVCAoDQorICAgIHNldCBQUk9NUFQ9JV9PTERfVklSVFVBTF9QUk9NUFQlDQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgKA0KKyAgICAgc2V0IFBZVEhPTkhPTUU9JV9PTERfVklSVFVBTF9QWVRIT05IT01FJQ0KKykNCisNCitzZXQgX09MRF9WSVJUVUFMX1BST01QVD0lUFJPTVBUJQ0KK3NldCBQUk9NUFQ9X19WRU5WX05BTUVfXyVQUk9NUFQlDQorDQoraWYgZGVmaW5lZCBQWVRIT05IT01FICgNCisgICAgIHNldCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRT0lUFlUSE9OSE9NRSUNCisgICAgIHNldCBQWVRIT05IT01FPQ0KKykNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QQVRIIHNldCBQQVRIPSVfT0xEX1ZJUlRVQUxfUEFUSCU7IGdvdG8gU0tJUFBBVEgNCisNCitzZXQgX09MRF9WSVJUVUFMX1BBVEg9JVBBVEglDQorDQorOlNLSVBQQVRIDQorc2V0IFBBVEg9JVZJUlRVQUxfRU5WJVxfX1ZFTlZfQklOX05BTUVfXzslUEFUSCUNCisNCis6RU5EDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdCBiL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkYTViMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQKQEAgLTAsMCArMSwxNyBAQAorQGVjaG8gb2ZmDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0lX09MRF9WSVJUVUFMX1BST01QVCUNCispDQorc2V0IF9PTERfVklSVFVBTF9QUk9NUFQ9DQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSAoDQorICAgICBzZXQgUFlUSE9OSE9NRT0lX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUlDQorICAgICBzZXQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUU9DQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BBVEggc2V0IFBBVEg9JV9PTERfVklSVFVBTF9QQVRIJQ0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUEFUSD0NCisNCis6RU5EDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMmRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkKQEAgLTAsMCArMSw0IEBACisjIV9fVkVOVl9QWVRIT05fXworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzLCBweWRvYworICAgIHN5cy5leGl0KHB5ZG9jLmNsaSgpKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZSBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0MTQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUKQEAgLTAsMCArMSw3NiBAQAorIyBUaGlzIGZpbGUgbXVzdCBiZSB1c2VkIHdpdGggInNvdXJjZSBiaW4vYWN0aXZhdGUiICpmcm9tIGJhc2gqCisjIHlvdSBjYW5ub3QgcnVuIGl0IGRpcmVjdGx5CisKK2RlYWN0aXZhdGUgKCkgeworICAgICMgcmVzZXQgb2xkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUEFUSCIgXSA7IHRoZW4KKyAgICAgICAgUEFUSD0iJF9PTERfVklSVFVBTF9QQVRIIgorICAgICAgICBleHBvcnQgUEFUSAorICAgICAgICB1bnNldCBfT0xEX1ZJUlRVQUxfUEFUSAorICAgIGZpCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QWVRIT05IT01FIiBdIDsgdGhlbgorICAgICAgICBQWVRIT05IT01FPSIkX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUiCisgICAgICAgIGV4cG9ydCBQWVRIT05IT01FCisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QWVRIT05IT01FCisgICAgZmkKKworICAgICMgVGhpcyBzaG91bGQgZGV0ZWN0IGJhc2ggYW5kIHpzaCwgd2hpY2ggaGF2ZSBhIGhhc2ggY29tbWFuZCB0aGF0IG11c3QKKyAgICAjIGJlIGNhbGxlZCB0byBnZXQgaXQgdG8gZm9yZ2V0IHBhc3QgY29tbWFuZHMuICBXaXRob3V0IGZvcmdldHRpbmcKKyAgICAjIHBhc3QgY29tbWFuZHMgdGhlICRQQVRIIGNoYW5nZXMgd2UgbWFkZSBtYXkgbm90IGJlIHJlc3BlY3RlZAorICAgIGlmIFsgLW4gIiRCQVNIIiAtbyAtbiAiJFpTSF9WRVJTSU9OIiBdIDsgdGhlbgorICAgICAgICBoYXNoIC1yCisgICAgZmkKKworICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUFMxIiBdIDsgdGhlbgorICAgICAgICBQUzE9IiRfT0xEX1ZJUlRVQUxfUFMxIgorICAgICAgICBleHBvcnQgUFMxCisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QUzEKKyAgICBmaQorCisgICAgdW5zZXQgVklSVFVBTF9FTlYKKyAgICBpZiBbICEgIiQxIiA9ICJub25kZXN0cnVjdGl2ZSIgXSA7IHRoZW4KKyAgICAjIFNlbGYgZGVzdHJ1Y3QhCisgICAgICAgIHVuc2V0IC1mIGRlYWN0aXZhdGUKKyAgICBmaQorfQorCisjIHVuc2V0IGlycmVsYXZlbnQgdmFyaWFibGVzCitkZWFjdGl2YXRlIG5vbmRlc3RydWN0aXZlCisKK1ZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iCitleHBvcnQgVklSVFVBTF9FTlYKKworX09MRF9WSVJUVUFMX1BBVEg9IiRQQVRIIgorUEFUSD0iJFZJUlRVQUxfRU5WL19fVkVOVl9CSU5fTkFNRV9fOiRQQVRIIgorZXhwb3J0IFBBVEgKKworIyB1bnNldCBQWVRIT05IT01FIGlmIHNldAorIyB0aGlzIHdpbGwgZmFpbCBpZiBQWVRIT05IT01FIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nICh3aGljaCBpcyBiYWQgYW55d2F5KQorIyBjb3VsZCB1c2UgYGlmIChzZXQgLXU7IDogJFBZVEhPTkhPTUUpIDtgIGluIGJhc2gKK2lmIFsgLW4gIiRQWVRIT05IT01FIiBdIDsgdGhlbgorICAgIF9PTERfVklSVFVBTF9QWVRIT05IT01FPSIkUFlUSE9OSE9NRSIKKyAgICB1bnNldCBQWVRIT05IT01FCitmaQorCitpZiBbIC16ICIkVklSVFVBTF9FTlZfRElTQUJMRV9QUk9NUFQiIF0gOyB0aGVuCisgICAgX09MRF9WSVJUVUFMX1BTMT0iJFBTMSIKKyAgICBpZiBbICJ4X19WRU5WX05BTUVfXyIgIT0geCBdIDsgdGhlbgorCVBTMT0iX19WRU5WX05BTUVfXyRQUzEiCisgICAgZWxzZQorICAgIGlmIFsgImBiYXNlbmFtZSBcIiRWSVJUVUFMX0VOVlwiYCIgPSAiX18iIF0gOyB0aGVuCisgICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciBBc3BlbiBtYWdpYyBkaXJlY3RvcmllcworICAgICAgICAjIHNlZSBodHRwOi8vd3d3LnpldGFkZXYuY29tL3NvZnR3YXJlL2FzcGVuLworICAgICAgICBQUzE9IltgYmFzZW5hbWUgXGBkaXJuYW1lIFwiJFZJUlRVQUxfRU5WXCJcYGBdICRQUzEiCisgICAgZWxzZQorICAgICAgICBQUzE9IihgYmFzZW5hbWUgXCIkVklSVFVBTF9FTlZcImApJFBTMSIKKyAgICBmaQorICAgIGZpCisgICAgZXhwb3J0IFBTMQorZmkKKworIyBUaGlzIHNob3VsZCBkZXRlY3QgYmFzaCBhbmQgenNoLCB3aGljaCBoYXZlIGEgaGFzaCBjb21tYW5kIHRoYXQgbXVzdAorIyBiZSBjYWxsZWQgdG8gZ2V0IGl0IHRvIGZvcmdldCBwYXN0IGNvbW1hbmRzLiAgV2l0aG91dCBmb3JnZXR0aW5nCisjIHBhc3QgY29tbWFuZHMgdGhlICRQQVRIIGNoYW5nZXMgd2UgbWFkZSBtYXkgbm90IGJlIHJlc3BlY3RlZAoraWYgWyAtbiAiJEJBU0giIC1vIC1uICIkWlNIX1ZFUlNJT04iIF0gOyB0aGVuCisgICAgaGFzaCAtcgorZmkKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkyMzM3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jCkBAIC0wLDAgKzEsNSBAQAorIyFfX1ZFTlZfUFlUSE9OX18KK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cywgcHlkb2MKKyAgICBzeXMuZXhpdChweWRvYy5jbGkoKSkKKwpkaWZmIC0tZ2l0IGEvTGliL3dlYmJyb3dzZXIucHkgYi9MaWIvd2ViYnJvd3Nlci5weQppbmRleCAyMDJmMzRhLi45NGQ0YWQ0IDEwMDY0NAotLS0gYS9MaWIvd2ViYnJvd3Nlci5weQorKysgYi9MaWIvd2ViYnJvd3Nlci5weQpAQCAtMjMwLDcgKzIzMCw3IEBACiAgICAgICAgIGNtZGxpbmUgPSBbc2VsZi5uYW1lXSArIHJhaXNlX29wdCArIGFyZ3MKIAogICAgICAgICBpZiByZW1vdGUgb3Igc2VsZi5iYWNrZ3JvdW5kOgotICAgICAgICAgICAgaW5vdXQgPSBpby5vcGVuKG9zLmRldm51bGwsICJyKyIpCisgICAgICAgICAgICBpbm91dCA9IHN1YnByb2Nlc3MuREVWTlVMTAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBmb3IgVFRZIGJyb3dzZXJzLCB3ZSBuZWVkIHN0ZGluL291dAogICAgICAgICAgICAgaW5vdXQgPSBOb25lCkBAIC0yMzgsMTcgKzIzOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9KHNlbGYucmVkaXJlY3Rfc3Rkb3V0IGFuZCBpbm91dCBvciBOb25lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPWlub3V0LCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlKQogICAgICAgICBpZiByZW1vdGU6Ci0gICAgICAgICAgICAjIHdhaXQgZml2ZSBzZWNvbmRzLiBJZiB0aGUgc3VicHJvY2VzcyBpcyBub3QgZmluaXNoZWQsIHRoZQorICAgICAgICAgICAgIyB3YWl0IGF0IG1vc3QgZml2ZSBzZWNvbmRzLiBJZiB0aGUgc3VicHJvY2VzcyBpcyBub3QgZmluaXNoZWQsIHRoZQogICAgICAgICAgICAgIyByZW1vdGUgaW52b2NhdGlvbiBoYXMgKGhvcGVmdWxseSkgc3RhcnRlZCBhIG5ldyBpbnN0YW5jZS4KLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgICAgIHJjID0gcC5wb2xsKCkKLSAgICAgICAgICAgIGlmIHJjIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCg0KQotICAgICAgICAgICAgICAgIHJjID0gcC5wb2xsKCkKLSAgICAgICAgICAgICAgICBpZiByYyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgIyBpZiByZW1vdGUgY2FsbCBmYWlsZWQsIG9wZW4oKSB3aWxsIHRyeSBkaXJlY3QgaW52b2NhdGlvbgotICAgICAgICAgICAgcmV0dXJuIG5vdCByYworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJjID0gcC53YWl0KDUpCisgICAgICAgICAgICAgICAgIyBpZiByZW1vdGUgY2FsbCBmYWlsZWQsIG9wZW4oKSB3aWxsIHRyeSBkaXJlY3QgaW52b2NhdGlvbgorICAgICAgICAgICAgICAgIHJldHVybiBub3QgcmMKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsaWYgc2VsZi5iYWNrZ3JvdW5kOgogICAgICAgICAgICAgaWYgcC5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMzA2LDYgKzMwMywxOCBAQAogICAgIGJhY2tncm91bmQgPSBUcnVlCiAKIAorY2xhc3MgQ2hyb21lKFVuaXhCcm93c2VyKToKKyAgICAiTGF1bmNoZXIgY2xhc3MgZm9yIEdvb2dsZSBDaHJvbWUgYnJvd3Nlci4iCisKKyAgICByZW1vdGVfYXJncyA9IFsnJWFjdGlvbicsICclcyddCisgICAgcmVtb3RlX2FjdGlvbiA9ICIiCisgICAgcmVtb3RlX2FjdGlvbl9uZXd3aW4gPSAiLS1uZXctd2luZG93IgorICAgIHJlbW90ZV9hY3Rpb25fbmV3dGFiID0gIiIKKyAgICBiYWNrZ3JvdW5kID0gVHJ1ZQorCitDaHJvbWl1bSA9IENocm9tZQorCisKIGNsYXNzIE9wZXJhKFVuaXhCcm93c2VyKToKICAgICAiTGF1bmNoZXIgY2xhc3MgZm9yIE9wZXJhIGJyb3dzZXIuIgogCkBAIC0zNDUsNyArMzU0LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFjdGlvbiA9ICJvcGVuVVJMIgogCi0gICAgICAgIGRldm51bGwgPSBpby5vcGVuKG9zLmRldm51bGwsICJyKyIpCisgICAgICAgIGRldm51bGwgPSBzdWJwcm9jZXNzLkRFVk5VTEwKICAgICAgICAgIyBpZiBwb3NzaWJsZSwgcHV0IGJyb3dzZXIgaW4gc2VwYXJhdGUgcHJvY2VzcyBncm91cCwgc28KICAgICAgICAgIyBrZXlib2FyZCBpbnRlcnJ1cHRzIGRvbid0IGFmZmVjdCBicm93c2VyIGFzIHdlbGwgYXMgUHl0aG9uCiAgICAgICAgIHNldHNpZCA9IGdldGF0dHIob3MsICdzZXRzaWQnLCBOb25lKQpAQCAtNDQzLDYgKzQ1MiwxNCBAQAogCiBkZWYgcmVnaXN0ZXJfWF9icm93c2VycygpOgogCisgICAgIyB1c2UgeGRnLW9wZW4gaWYgYXJvdW5kCisgICAgaWYgX2lzY29tbWFuZCgieGRnLW9wZW4iKToKKyAgICAgICAgcmVnaXN0ZXIoInhkZy1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoInhkZy1vcGVuIikpCisKKyAgICAjIFRoZSBkZWZhdWx0IEdOT01FMyBicm93c2VyCisgICAgaWYgIkdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCIgaW4gb3MuZW52aXJvbiBhbmQgX2lzY29tbWFuZCgiZ3Zmcy1vcGVuIik6CisgICAgICAgIHJlZ2lzdGVyKCJndmZzLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigiZ3Zmcy1vcGVuIikpCisKICAgICAjIFRoZSBkZWZhdWx0IEdOT01FIGJyb3dzZXIKICAgICBpZiAiR05PTUVfREVTS1RPUF9TRVNTSU9OX0lEIiBpbiBvcy5lbnZpcm9uIGFuZCBfaXNjb21tYW5kKCJnbm9tZS1vcGVuIik6CiAgICAgICAgIHJlZ2lzdGVyKCJnbm9tZS1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoImdub21lLW9wZW4iKSkKQEAgLTQ3Myw2ICs0OTAsMTEgQEAKICAgICBpZiBfaXNjb21tYW5kKCJza2lwc3RvbmUiKToKICAgICAgICAgcmVnaXN0ZXIoInNraXBzdG9uZSIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJza2lwc3RvbmUiKSkKIAorICAgICMgR29vZ2xlIENocm9tZS9DaHJvbWl1bSBicm93c2VycworICAgIGZvciBicm93c2VyIGluICgiZ29vZ2xlLWNocm9tZSIsICJjaHJvbWUiLCAiY2hyb21pdW0iLCAiY2hyb21pdW0tYnJvd3NlciIpOgorICAgICAgICBpZiBfaXNjb21tYW5kKGJyb3dzZXIpOgorICAgICAgICAgICAgcmVnaXN0ZXIoYnJvd3NlciwgTm9uZSwgQ2hyb21lKGJyb3dzZXIpKQorCiAgICAgIyBPcGVyYSwgcXVpdGUgcG9wdWxhcgogICAgIGlmIF9pc2NvbW1hbmQoIm9wZXJhIik6CiAgICAgICAgIHJlZ2lzdGVyKCJvcGVyYSIsIE5vbmUsIE9wZXJhKCJvcGVyYSIpKQpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYuZWdnLWluZm8gYi9MaWIvd3NnaXJlZi5lZ2ctaW5mbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBiNzg5My4uMDAwMDAwMAotLS0gYS9MaWIvd3NnaXJlZi5lZ2ctaW5mbworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotTWV0YWRhdGEtVmVyc2lvbjogMS4wCi1OYW1lOiB3c2dpcmVmCi1WZXJzaW9uOiAwLjEuMgotU3VtbWFyeTogV1NHSSAoUEVQIDMzMykgUmVmZXJlbmNlIExpYnJhcnkKLUF1dGhvcjogUGhpbGxpcCBKLiBFYnkKLUF1dGhvci1lbWFpbDogd2ViLXNpZ0BweXRob24ub3JnCi1MaWNlbnNlOiBQU0Ygb3IgWlBMCi1QbGF0Zm9ybTogVU5LTk9XTgpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKaW5kZXggYWY4MmY5NS4uYTYwMTVmYiAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQorKysgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CkBAIC0xNCwxMyArMTQsMTQgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20gd3NnaXJlZi5oYW5kbGVycyBpbXBvcnQgU2ltcGxlSGFuZGxlcgorZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX2ltcGxlbWVudGF0aW9uCiAKIF9fdmVyc2lvbl9fID0gIjAuMiIKIF9fYWxsX18gPSBbJ1dTR0lTZXJ2ZXInLCAnV1NHSVJlcXVlc3RIYW5kbGVyJywgJ2RlbW9fYXBwJywgJ21ha2Vfc2VydmVyJ10KIAogCiBzZXJ2ZXJfdmVyc2lvbiA9ICJXU0dJU2VydmVyLyIgKyBfX3ZlcnNpb25fXwotc3lzX3ZlcnNpb24gPSAiUHl0aG9uLyIgKyBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCitzeXNfdmVyc2lvbiA9IHB5dGhvbl9pbXBsZW1lbnRhdGlvbigpICsgIi8iICsgc3lzLnZlcnNpb24uc3BsaXQoKVswXQogc29mdHdhcmVfdmVyc2lvbiA9IHNlcnZlcl92ZXJzaW9uICsgJyAnICsgc3lzX3ZlcnNpb24KIAogCmRpZmYgLS1naXQgYS9MaWIveGRybGliLnB5IGIvTGliL3hkcmxpYi5weQppbmRleCAyOTYzOTE1Li5jMDVjZjg3IDEwMDY0NAotLS0gYS9MaWIveGRybGliLnB5CisrKyBiL0xpYi94ZHJsaWIucHkKQEAgLTE0MSwxMSArMTQxLDcgQEAKICAgICAgICAgZGF0YSA9IHNlbGYuX19idWZbaTpqXQogICAgICAgICBpZiBsZW4oZGF0YSkgPCA0OgogICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKLSAgICAgICAgeCA9IHN0cnVjdC51bnBhY2soJz5MJywgZGF0YSlbMF0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGludCh4KQotICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCc+TCcsIGRhdGEpWzBdCiAKICAgICBkZWYgdW5wYWNrX2ludChzZWxmKToKICAgICAgICAgaSA9IHNlbGYuX19wb3MKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL19faW5pdF9fLnB5IGIvTGliL3htbC9kb20vX19pbml0X18ucHkKaW5kZXggNDQwMWJkZi4uOTdjZjlhNiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vX19pbml0X18ucHkKKysrIGIvTGliL3htbC9kb20vX19pbml0X18ucHkKQEAgLTE3LDYgKzE3LDcgQEAKIAogY2xhc3MgTm9kZToKICAgICAiIiJDbGFzcyBnaXZpbmcgdGhlIE5vZGVUeXBlIGNvbnN0YW50cy4iIiIKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgIyBET00gaW1wbGVtZW50YXRpb25zIG1heSB1c2UgdGhpcyBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZWlyIG93bgogICAgICMgTm9kZSBpbXBsZW1lbnRhdGlvbnMuICBJZiB0aGV5IGRvbid0LCB0aGUgY29uc3RhbnRzIGRlZmluZWQgaGVyZQpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZG9tcmVnLnB5IGIvTGliL3htbC9kb20vZG9tcmVnLnB5CmluZGV4IGNiMzViYjAuLjhjM2Q5MDEgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2RvbXJlZy5weQorKysgYi9MaWIveG1sL2RvbS9kb21yZWcucHkKQEAgLTIsOCArMiw2IEBACiBkaXJlY3RseS4gSW5zdGVhZCwgdGhlIGZ1bmN0aW9ucyBnZXRET01JbXBsZW1lbnRhdGlvbiBhbmQKIHJlZ2lzdGVyRE9NSW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGltcG9ydGVkIGZyb20geG1sLmRvbS4iIiIKIAotZnJvbSB4bWwuZG9tLm1pbmljb21wYXQgaW1wb3J0ICogICMgaXNpbnN0YW5jZSwgU3RyaW5nVHlwZXMKLQogIyBUaGlzIGlzIGEgbGlzdCBvZiB3ZWxsLWtub3duIGltcGxlbWVudGF0aW9ucy4gIFdlbGwta25vd24gbmFtZXMKICMgc2hvdWxkIGJlIHB1Ymxpc2hlZCBieSBwb3N0aW5nIHRvIHhtbC1zaWdAcHl0aG9uLm9yZywgYW5kIGFyZQogIyBzdWJzZXF1ZW50bHkgcmVjb3JkZWQgaW4gdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5IGIvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CmluZGV4IGE5OGZlMDMuLmYwNzRhYjkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKQEAgLTMzLDggKzMzLDYgQEAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBfYXBwZW5kX2NoaWxkLCBfc2V0X2F0dHJpYnV0ZV9ub2RlCiBmcm9tIHhtbC5kb20uTm9kZUZpbHRlciBpbXBvcnQgTm9kZUZpbHRlcgogCi1mcm9tIHhtbC5kb20ubWluaWNvbXBhdCBpbXBvcnQgKgotCiBURVhUX05PREUgPSBOb2RlLlRFWFRfTk9ERQogQ0RBVEFfU0VDVElPTl9OT0RFID0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUKIERPQ1VNRU5UX05PREUgPSBOb2RlLkRPQ1VNRU5UX05PREUKQEAgLTI4MywyNyArMjgxLDIzIEBACiAgICAgICAgIGVsaWYgY2hpbGROb2RlcyBhbmQgY2hpbGROb2Rlc1stMV0ubm9kZVR5cGUgPT0gVEVYVF9OT0RFOgogICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbLTFdCiAgICAgICAgICAgICB2YWx1ZSA9IG5vZGUuZGF0YSArIGRhdGEKLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCisgICAgICAgICAgICBub2RlLmRhdGEgPSB2YWx1ZQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBub2RlID0gbWluaWRvbS5UZXh0KCkKLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IGRhdGEKLSAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgIG5vZGUuZGF0YSA9IGRhdGEKKyAgICAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAKICAgICBkZWYgY2hhcmFjdGVyX2RhdGFfaGFuZGxlcihzZWxmLCBkYXRhKToKICAgICAgICAgY2hpbGROb2RlcyA9IHNlbGYuY3VyTm9kZS5jaGlsZE5vZGVzCiAgICAgICAgIGlmIGNoaWxkTm9kZXMgYW5kIGNoaWxkTm9kZXNbLTFdLm5vZGVUeXBlID09IFRFWFRfTk9ERToKICAgICAgICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzWy0xXQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gbm9kZS5kYXRhICsgZGF0YQorICAgICAgICAgICAgbm9kZS5kYXRhID0gbm9kZS5kYXRhICsgZGF0YQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG5vZGUgPSBtaW5pZG9tLlRleHQoKQotICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IG5vZGUuZGF0YSArIGRhdGEKLSAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgKyBkYXRhCisgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAKICAgICBkZWYgZW50aXR5X2RlY2xfaGFuZGxlcihzZWxmLCBlbnRpdHlOYW1lLCBpc19wYXJhbWV0ZXJfZW50aXR5LCB2YWx1ZSwKQEAgLTM2MywxMSArMzU3LDggQEAKICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKGF0dHJpYnV0ZXNbaV0sIEVNUFRZX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXNbaSsxXQotICAgICAgICAgICAgICAgIGQgPSBhLmNoaWxkTm9kZXNbMF0uX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgICAgICAgICAgX3NldF9hdHRyaWJ1dGVfbm9kZShub2RlLCBhKQogCiAgICAgICAgIGlmIG5vZGUgaXMgbm90IHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgpAQCAtNzYxLDE1ICs3NTIsMTMgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKCJ4bWxucyIsIFhNTE5TX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnMiLCBFTVBUWV9QUkVGSVgpCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdXJpCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB1cmkKLSAgICAgICAgICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgICAgICAgICAgYS52YWx1ZSA9IHVyaQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgICAgICBfc2V0X2F0dHJpYnV0ZV9ub2RlKG5vZGUsIGEpCiAgICAgICAgICAgICBkZWwgc2VsZi5fbnNfb3JkZXJlZF9wcmVmaXhlc1s6XQogCiAgICAgICAgIGlmIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICBub2RlLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgICAgICBfYXR0cnMgPSBub2RlLl9hdHRycwogICAgICAgICAgICAgX2F0dHJzTlMgPSBub2RlLl9hdHRyc05TCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXR0cmlidXRlcyksIDIpOgpAQCAtNzg1LDEyICs3NzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuYW1lLCBFTVBUWV9QUkVGSVgpCiAgICAgICAgICAgICAgICAgICAgIF9hdHRyc1thbmFtZV0gPSBhCiAgICAgICAgICAgICAgICAgICAgIF9hdHRyc05TWyhFTVBUWV9OQU1FU1BBQ0UsIGFuYW1lKV0gPSBhCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGRbJ293bmVyRWxlbWVudCddID0gbm9kZQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhLm93bmVyRWxlbWVudCA9IG5vZGUKIAogICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgIyBUaGlzIG9ubHkgYWRkcyBzb21lIGFzc2VydHMgdG8gdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5IGIvTGliL3htbC9kb20vbWluaWRvbS5weQppbmRleCBmMjNhZDA1Li4yOGU1MDMwIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5CisrKyBiL0xpYi94bWwvZG9tL21pbmlkb20ucHkKQEAgLTE0LDcgKzE0LDYgQEAKICAqIFNBWCAyIG5hbWVzcGFjZXMKICIiIgogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgaW8KIGltcG9ydCB4bWwuZG9tCiAKQEAgLTQ3LDI1ICs0NiwyNSBAQAogICAgICAgICByZXR1cm4gc2VsZi50b3ByZXR0eXhtbCgiIiwgIiIsIGVuY29kaW5nKQogCiAgICAgZGVmIHRvcHJldHR5eG1sKHNlbGYsIGluZGVudD0iXHQiLCBuZXdsPSJcbiIsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICAjIGluZGVudCA9IHRoZSBpbmRlbnRhdGlvbiBzdHJpbmcgdG8gcHJlcGVuZCwgcGVyIGxldmVsCi0gICAgICAgICMgbmV3bCA9IHRoZSBuZXdsaW5lIHN0cmluZyB0byBhcHBlbmQKLSAgICAgICAgdXNlX2VuY29kaW5nID0gInV0Zi04IiBpZiBlbmNvZGluZyBpcyBOb25lIGVsc2UgZW5jb2RpbmcKLSAgICAgICAgd3JpdGVyID0gY29kZWNzLmdldHdyaXRlcih1c2VfZW5jb2RpbmcpKGlvLkJ5dGVzSU8oKSkKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHdyaXRlciA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdyaXRlciA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9J1xuJykKICAgICAgICAgaWYgc2VsZi5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICAjIENhbiBwYXNzIGVuY29kaW5nIG9ubHkgdG8gZG9jdW1lbnQsIHRvIHB1dCBpdCBpbnRvIFhNTCBoZWFkZXIKICAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsLCBlbmNvZGluZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsKQogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5zdHJlYW0uZ2V0dmFsdWUoKS5kZWNvZGUodXNlX2VuY29kaW5nKQorICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5nZXR2YWx1ZSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gd3JpdGVyLnN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICByZXR1cm4gd3JpdGVyLmRldGFjaCgpLmdldHZhbHVlKCkKIAogICAgIGRlZiBoYXNDaGlsZE5vZGVzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNoaWxkTm9kZXM6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBib29sKHNlbGYuY2hpbGROb2RlcykKIAogICAgIGRlZiBfZ2V0X2NoaWxkTm9kZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmNoaWxkTm9kZXMKQEAgLTI4NiwxMCArMjg1LDEwIEBACiAgICAgY2hpbGROb2RlcyA9IHNlbGYuY2hpbGROb2RlcwogICAgIGlmIGNoaWxkTm9kZXM6CiAgICAgICAgIGxhc3QgPSBjaGlsZE5vZGVzWy0xXQotICAgICAgICBub2RlLl9fZGljdF9fWyJwcmV2aW91c1NpYmxpbmciXSA9IGxhc3QKLSAgICAgICAgbGFzdC5fX2RpY3RfX1sibmV4dFNpYmxpbmciXSA9IG5vZGUKKyAgICAgICAgbm9kZS5wcmV2aW91c1NpYmxpbmcgPSBsYXN0CisgICAgICAgIGxhc3QubmV4dFNpYmxpbmcgPSBub2RlCiAgICAgY2hpbGROb2Rlcy5hcHBlbmQobm9kZSkKLSAgICBub2RlLl9fZGljdF9fWyJwYXJlbnROb2RlIl0gPSBzZWxmCisgICAgbm9kZS5wYXJlbnROb2RlID0gc2VsZgogCiBkZWYgX2luX2RvY3VtZW50KG5vZGUpOgogICAgICMgcmV0dXJuIFRydWUgaWZmIG5vZGUgaXMgcGFydCBvZiBhIGRvY3VtZW50IHRyZWUKQEAgLTM0Miw5ICszNDEsMTAgQEAKIAogCiBjbGFzcyBBdHRyKE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ19uYW1lJywgJ192YWx1ZScsICduYW1lc3BhY2VVUkknLAorICAgICAgICAgICAgICAgJ19wcmVmaXgnLCAnY2hpbGROb2RlcycsICdfbG9jYWxOYW1lJywgJ293bmVyRG9jdW1lbnQnLCAnb3duZXJFbGVtZW50JykKICAgICBub2RlVHlwZSA9IE5vZGUuQVRUUklCVVRFX05PREUKICAgICBhdHRyaWJ1dGVzID0gTm9uZQotICAgIG93bmVyRWxlbWVudCA9IE5vbmUKICAgICBzcGVjaWZpZWQgPSBGYWxzZQogICAgIF9pc19pZCA9IEZhbHNlCiAKQEAgLTM1MiwxMiArMzUyLDExIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcU5hbWUsIG5hbWVzcGFjZVVSST1FTVBUWV9OQU1FU1BBQ0UsIGxvY2FsTmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBwcmVmaXg9Tm9uZSk6Ci0gICAgICAgICMgc2tpcCBzZXRhdHRyIGZvciBwZXJmb3JtYW5jZQotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyJub2RlTmFtZSJdID0gZFsibmFtZSJdID0gcU5hbWUKLSAgICAgICAgZFsibmFtZXNwYWNlVVJJIl0gPSBuYW1lc3BhY2VVUkkKLSAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgZFsnY2hpbGROb2RlcyddID0gTm9kZUxpc3QoKQorICAgICAgICBzZWxmLm93bmVyRWxlbWVudCA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmFtZSA9IHFOYW1lCisgICAgICAgIHNlbGYubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCisgICAgICAgIHNlbGYuX3ByZWZpeCA9IHByZWZpeAorICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAKICAgICAgICAgIyBBZGQgdGhlIHNpbmdsZSBjaGlsZCBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgdGhlIGF0dHIKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzLmFwcGVuZChUZXh0KCkpCkBAIC0zNjUsOSArMzY0LDEwIEBACiAgICAgICAgICMgbm9kZVZhbHVlIGFuZCB2YWx1ZSBhcmUgc2V0IGVsc2V3aGVyZQogCiAgICAgZGVmIF9nZXRfbG9jYWxOYW1lKHNlbGYpOgotICAgICAgICBpZiAnbG9jYWxOYW1lJyBpbiBzZWxmLl9fZGljdF9fOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X19bJ2xvY2FsTmFtZSddCi0gICAgICAgIHJldHVybiBzZWxmLm5vZGVOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubm9kZU5hbWUuc3BsaXQoIjoiLCAxKVstMV0KIAogICAgIGRlZiBfZ2V0X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm5hbWUKQEAgLTM3NSwyMCArMzc1LDMwIEBACiAgICAgZGVmIF9nZXRfc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5zcGVjaWZpZWQKIAotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGlmIG5hbWUgaW4gKCJ2YWx1ZSIsICJub2RlVmFsdWUiKToKLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBkMiA9IHNlbGYuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgZDJbImRhdGEiXSA9IGQyWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIGVsaWYgbmFtZSBpbiAoIm5hbWUiLCAibm9kZU5hbWUiKToKLSAgICAgICAgICAgIGRbIm5hbWUiXSA9IGRbIm5vZGVOYW1lIl0gPSB2YWx1ZQotICAgICAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZFtuYW1lXSA9IHZhbHVlCisgICAgZGVmIF9nZXRfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfc2V0X25hbWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9uYW1lID0gdmFsdWUKKyAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCisKKyAgICBub2RlTmFtZSA9IG5hbWUgPSBwcm9wZXJ0eShfZ2V0X25hbWUsIF9zZXRfbmFtZSkKKworICAgIGRlZiBfZ2V0X3ZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKKworICAgIGRlZiBfc2V0X3ZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQorICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQorICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisKKyAgICBub2RlVmFsdWUgPSB2YWx1ZSA9IHByb3BlcnR5KF9nZXRfdmFsdWUsIF9zZXRfdmFsdWUpCisKKyAgICBkZWYgX2dldF9wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXgKIAogICAgIGRlZiBfc2V0X3ByZWZpeChzZWxmLCBwcmVmaXgpOgogICAgICAgICBuc3VyaSA9IHNlbGYubmFtZXNwYWNlVVJJCkBAIC0zOTYsMjIgKzQwNiwxNiBAQAogICAgICAgICAgICAgaWYgbnN1cmkgYW5kIG5zdXJpICE9IFhNTE5TX05BTUVTUEFDRToKICAgICAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5hbWVzcGFjZUVycigKICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgdXNlIG9mICd4bWxucycgcHJlZml4IGZvciB0aGUgd3JvbmcgbmFtZXNwYWNlIikKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsncHJlZml4J10gPSBwcmVmaXgKKyAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CiAgICAgICAgIGlmIHByZWZpeCBpcyBOb25lOgogICAgICAgICAgICAgbmV3TmFtZSA9IHNlbGYubG9jYWxOYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuZXdOYW1lID0gIiVzOiVzIiAlIChwcmVmaXgsIHNlbGYubG9jYWxOYW1lKQogICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudDoKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgZFsnbm9kZU5hbWUnXSA9IGRbJ25hbWUnXSA9IG5ld05hbWUKKyAgICAgICAgc2VsZi5uYW1lID0gbmV3TmFtZQogCi0gICAgZGVmIF9zZXRfdmFsdWUoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudDoKLSAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQorICAgIHByZWZpeCA9IHByb3BlcnR5KF9nZXRfcHJlZml4LCBfc2V0X3ByZWZpeCkKIAogICAgIGRlZiB1bmxpbmsoc2VsZik6CiAgICAgICAgICMgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjYWxsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uCkBAIC01ODYsOCArNTkwLDggQEAKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc05TWyhuLm5hbWVzcGFjZVVSSSwgbi5sb2NhbE5hbWUpXQotICAgICAgICAgICAgaWYgJ293bmVyRWxlbWVudCcgaW4gbi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICBuLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IE5vbmUKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobiwgJ293bmVyRWxlbWVudCcpOgorICAgICAgICAgICAgICAgIG4ub3duZXJFbGVtZW50ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQpAQCAtNTk4LDggKzYwMiw4IEBACiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5fb3duZXJFbGVtZW50KQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzTlNbKG4ubmFtZXNwYWNlVVJJLCBuLmxvY2FsTmFtZSldCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KLSAgICAgICAgICAgIGlmICdvd25lckVsZW1lbnQnIGluIG4uX19kaWN0X186Ci0gICAgICAgICAgICAgICAgbi5fX2RpY3RfX1snb3duZXJFbGVtZW50J10gPSBOb25lCisgICAgICAgICAgICBpZiBoYXNhdHRyKG4sICdvd25lckVsZW1lbnQnKToKKyAgICAgICAgICAgICAgICBuLm93bmVyRWxlbWVudCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKQEAgLTY1OSw2ICs2NjMsOSBAQAogX25vX3R5cGUgPSBUeXBlSW5mbyhOb25lLCBOb25lKQogCiBjbGFzcyBFbGVtZW50KE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ293bmVyRG9jdW1lbnQnLCAncGFyZW50Tm9kZScsICd0YWdOYW1lJywgJ25vZGVOYW1lJywgJ3ByZWZpeCcsCisgICAgICAgICAgICAgICAnbmFtZXNwYWNlVVJJJywgJ19sb2NhbE5hbWUnLCAnY2hpbGROb2RlcycsICdfYXR0cnMnLCAnX2F0dHJzTlMnLAorICAgICAgICAgICAgICAgJ25leHRTaWJsaW5nJywgJ3ByZXZpb3VzU2libGluZycpCiAgICAgbm9kZVR5cGUgPSBOb2RlLkVMRU1FTlRfTk9ERQogICAgIG5vZGVWYWx1ZSA9IE5vbmUKICAgICBzY2hlbWFUeXBlID0gX25vX3R5cGUKQEAgLTY3NCw0MSArNjgxLDU3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZT1Ob25lKToKKyAgICAgICAgc2VsZi5wYXJlbnROb2RlID0gTm9uZQogICAgICAgICBzZWxmLnRhZ05hbWUgPSBzZWxmLm5vZGVOYW1lID0gdGFnTmFtZQogICAgICAgICBzZWxmLnByZWZpeCA9IHByZWZpeAogICAgICAgICBzZWxmLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQogICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCisgICAgICAgIHNlbGYubmV4dFNpYmxpbmcgPSBzZWxmLnByZXZpb3VzU2libGluZyA9IE5vbmUKIAotICAgICAgICBzZWxmLl9hdHRycyA9IHt9ICAgIyBhdHRyaWJ1dGVzIGFyZSBkb3VibGUtaW5kZXhlZDoKLSAgICAgICAgc2VsZi5fYXR0cnNOUyA9IHt9ICMgICAgdGFnTmFtZSAtPiBBdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgVVJJLGxvY2FsTmFtZSAtPiBBdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGZ1dHVyZTogY29uc2lkZXIgbGF6eSBnZW5lcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9mIGF0dHJpYnV0ZSBvYmplY3RzIHRoaXMgaXMgdG9vIHRyaWNreQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3Igbm93IGJlY2F1c2Ugb2YgaGVhZGFjaGVzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZXNwYWNlcy4KKyAgICAgICAgIyBBdHRyaWJ1dGUgZGljdGlvbmFyaWVzIGFyZSBsYXppbHkgY3JlYXRlZAorICAgICAgICAjIGF0dHJpYnV0ZXMgYXJlIGRvdWJsZS1pbmRleGVkOgorICAgICAgICAjICAgIHRhZ05hbWUgLT4gQXR0cmlidXRlCisgICAgICAgICMgICAgVVJJLGxvY2FsTmFtZSAtPiBBdHRyaWJ1dGUKKyAgICAgICAgIyBpbiB0aGUgZnV0dXJlOiBjb25zaWRlciBsYXp5IGdlbmVyYXRpb24KKyAgICAgICAgIyBvZiBhdHRyaWJ1dGUgb2JqZWN0cyB0aGlzIGlzIHRvbyB0cmlja3kKKyAgICAgICAgIyBmb3Igbm93IGJlY2F1c2Ugb2YgaGVhZGFjaGVzIHdpdGgKKyAgICAgICAgIyBuYW1lc3BhY2VzLgorICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKKyAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKKworICAgIGRlZiBfZW5zdXJlX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9hdHRycyA9IHt9CisgICAgICAgICAgICBzZWxmLl9hdHRyc05TID0ge30KIAogICAgIGRlZiBfZ2V0X2xvY2FsTmFtZShzZWxmKToKLSAgICAgICAgaWYgJ2xvY2FsTmFtZScgaW4gc2VsZi5fX2RpY3RfXzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fWydsb2NhbE5hbWUnXQotICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQogCiAgICAgZGVmIF9nZXRfdGFnTmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZQogCiAgICAgZGVmIHVubGluayhzZWxmKToKLSAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6Ci0gICAgICAgICAgICBhdHRyLnVubGluaygpCisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgICAgYXR0ci51bmxpbmsoKQogICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKICAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKICAgICAgICAgTm9kZS51bmxpbmsoc2VsZikKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGUoc2VsZiwgYXR0bmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW2F0dG5hbWVdLnZhbHVlCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAiIgogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TWyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSldLnZhbHVlCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTcxOCwxNCArNzQxLDExIEBACiAgICAgICAgIGF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGUoYXR0bmFtZSkKICAgICAgICAgaWYgYXR0ciBpcyBOb25lOgogICAgICAgICAgICAgYXR0ciA9IEF0dHIoYXR0bmFtZSkKLSAgICAgICAgICAgICMgZm9yIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGRbIm93bmVyRG9jdW1lbnQiXSA9IHNlbGYub3duZXJEb2N1bWVudAorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlICMgYWxzbyBzZXRzIG5vZGVWYWx1ZQorICAgICAgICAgICAgYXR0ci5vd25lckRvY3VtZW50ID0gc2VsZi5vd25lckRvY3VtZW50CiAgICAgICAgICAgICBzZWxmLnNldEF0dHJpYnV0ZU5vZGUoYXR0cikKICAgICAgICAgZWxpZiB2YWx1ZSAhPSBhdHRyLnZhbHVlOgotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgIGlmIGF0dHIuaXNJZDoKICAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKIApAQCAtNzMzLDMzICs3NTMsMzMgQEAKICAgICAgICAgcHJlZml4LCBsb2NhbG5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgICBhdHRyID0gc2VsZi5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbG5hbWUpCiAgICAgICAgIGlmIGF0dHIgaXMgTm9uZToKLSAgICAgICAgICAgICMgZm9yIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICBhdHRyID0gQXR0cihxdWFsaWZpZWROYW1lLCBuYW1lc3BhY2VVUkksIGxvY2FsbmFtZSwgcHJlZml4KQotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgICAgICBkWyJub2RlTmFtZSJdID0gcXVhbGlmaWVkTmFtZQotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGRbIm93bmVyRG9jdW1lbnQiXSA9IHNlbGYub3duZXJEb2N1bWVudAorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICBhdHRyLm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICAgICAgIHNlbGYuc2V0QXR0cmlidXRlTm9kZShhdHRyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KICAgICAgICAgICAgIGlmIHZhbHVlICE9IGF0dHIudmFsdWU6Ci0gICAgICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgICAgICBpZiBhdHRyLmlzSWQ6CiAgICAgICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogICAgICAgICAgICAgaWYgYXR0ci5wcmVmaXggIT0gcHJlZml4OgotICAgICAgICAgICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgICAgICAgICAgZFsibm9kZU5hbWUiXSA9IHF1YWxpZmllZE5hbWUKKyAgICAgICAgICAgICAgICBhdHRyLnByZWZpeCA9IHByZWZpeAorICAgICAgICAgICAgICAgIGF0dHIubm9kZU5hbWUgPSBxdWFsaWZpZWROYW1lCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRybmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMuZ2V0KGF0dHJuYW1lKQogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5vZGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TLmdldCgobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpKQogCiAgICAgZGVmIHNldEF0dHJpYnV0ZU5vZGUoc2VsZiwgYXR0cik6CiAgICAgICAgIGlmIGF0dHIub3duZXJFbGVtZW50IG5vdCBpbiAoTm9uZSwgc2VsZik6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLkludXNlQXR0cmlidXRlRXJyKCJhdHRyaWJ1dGUgbm9kZSBhbHJlYWR5IG93bmVkIikKKyAgICAgICAgc2VsZi5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICBvbGQxID0gc2VsZi5fYXR0cnMuZ2V0KGF0dHIubmFtZSwgTm9uZSkKICAgICAgICAgaWYgb2xkMSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYucmVtb3ZlQXR0cmlidXRlTm9kZShvbGQxKQpAQCAtNzc4LDYgKzc5OCw4IEBACiAgICAgc2V0QXR0cmlidXRlTm9kZU5TID0gc2V0QXR0cmlidXRlTm9kZQogCiAgICAgZGVmIHJlbW92ZUF0dHJpYnV0ZShzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGF0dHIgPSBzZWxmLl9hdHRyc1tuYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC03ODUsNiArODA3LDggQEAKICAgICAgICAgc2VsZi5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHIpCiAKICAgICBkZWYgcmVtb3ZlQXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYXR0ciA9IHNlbGYuX2F0dHJzTlNbKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKV0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtODA3LDkgKzgzMSwxMyBAQAogICAgIHJlbW92ZUF0dHJpYnV0ZU5vZGVOUyA9IHJlbW92ZUF0dHJpYnV0ZU5vZGUKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fYXR0cnMKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSBpbiBzZWxmLl9hdHRyc05TCiAKICAgICBkZWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoc2VsZiwgbmFtZSk6CkBAIC04NTAsNiArODc4LDcgQEAKICAgICAgICAgICAgIHdyaXRlci53cml0ZSgiLz4lcyIlKG5ld2wpKQogCiAgICAgZGVmIF9nZXRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICByZXR1cm4gTmFtZWROb2RlTWFwKHNlbGYuX2F0dHJzLCBzZWxmLl9hdHRyc05TLCBzZWxmKQogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZXMoc2VsZik6CkBAIC04NzQsNyArOTAzLDcgQEAKICAgICAgICAgaWYgX2dldF9jb250YWluaW5nX2VudHJlZihzZWxmKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyKCkKICAgICAgICAgaWYgbm90IGlkQXR0ci5faXNfaWQ6Ci0gICAgICAgICAgICBpZEF0dHIuX19kaWN0X19bJ19pc19pZCddID0gVHJ1ZQorICAgICAgICAgICAgaWRBdHRyLl9pc19pZCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21hZ2ljX2lkX25vZGVzICs9IDEKICAgICAgICAgICAgIHNlbGYub3duZXJEb2N1bWVudC5fbWFnaWNfaWRfY291bnQgKz0gMQogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCkBAIC04ODcsMTkgKzkxNiwyMCBAQAogCiBkZWYgX3NldF9hdHRyaWJ1dGVfbm9kZShlbGVtZW50LCBhdHRyKToKICAgICBfY2xlYXJfaWRfY2FjaGUoZWxlbWVudCkKKyAgICBlbGVtZW50Ll9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgZWxlbWVudC5fYXR0cnNbYXR0ci5uYW1lXSA9IGF0dHIKICAgICBlbGVtZW50Ll9hdHRyc05TWyhhdHRyLm5hbWVzcGFjZVVSSSwgYXR0ci5sb2NhbE5hbWUpXSA9IGF0dHIKIAogICAgICMgVGhpcyBjcmVhdGVzIGEgY2lyY3VsYXIgcmVmZXJlbmNlLCBidXQgRWxlbWVudC51bmxpbmsoKQogICAgICMgYnJlYWtzIHRoZSBjeWNsZSBzaW5jZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgYXR0cmlidXRlCiAgICAgIyBkaWN0aW9uYXJpZXMgYXJlIHRvc3NlZC4KLSAgICBhdHRyLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IGVsZW1lbnQKLQorICAgIGF0dHIub3duZXJFbGVtZW50ID0gZWxlbWVudAogCiBjbGFzcyBDaGlsZGxlc3M6CiAgICAgIiIiTWl4aW4gdGhhdCBtYWtlcyBjaGlsZGxlc3MtbmVzcyBlYXN5IHRvIGltcGxlbWVudCBhbmQgYXZvaWRzCiAgICAgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIE5vZGUgbWV0aG9kcyB0aGF0IGRlYWwgd2l0aCBjaGlsZHJlbi4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKICAgICBjaGlsZE5vZGVzID0gRW1wdHlOb2RlTGlzdCgpCkBAIC05MzgsNTQgKzk2OCw0OSBAQAogCiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oQ2hpbGRsZXNzLCBOb2RlKToKICAgICBub2RlVHlwZSA9IE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFCisgICAgX19zbG90c19fID0gKCd0YXJnZXQnLCAnZGF0YScpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLm5vZGVOYW1lID0gdGFyZ2V0Ci0gICAgICAgIHNlbGYuZGF0YSA9IHNlbGYubm9kZVZhbHVlID0gZGF0YQorICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCiAKLSAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgorICAgICMgbm9kZVZhbHVlIGlzIGFuIGFsaWFzIGZvciBkYXRhCisgICAgZGVmIF9nZXRfbm9kZVZhbHVlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0gICAgZGVmIF9zZXRfZGF0YShzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKKyAgICBkZWYgX3NldF9ub2RlVmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisgICAgbm9kZVZhbHVlID0gcHJvcGVydHkoX2dldF9ub2RlVmFsdWUsIF9zZXRfbm9kZVZhbHVlKQogCi0gICAgZGVmIF9nZXRfdGFyZ2V0KHNlbGYpOgorICAgICMgbm9kZU5hbWUgaXMgYW4gYWxpYXMgZm9yIHRhcmdldAorICAgIGRlZiBfZ2V0X25vZGVOYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQKLSAgICBkZWYgX3NldF90YXJnZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyd0YXJnZXQnXSA9IGRbJ25vZGVOYW1lJ10gPSB2YWx1ZQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSA9PSAiZGF0YSIgb3IgbmFtZSA9PSAibm9kZVZhbHVlIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ2RhdGEnXSA9IHNlbGYuX19kaWN0X19bJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgZWxpZiBuYW1lID09ICJ0YXJnZXQiIG9yIG5hbWUgPT0gIm5vZGVOYW1lIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ3RhcmdldCddID0gc2VsZi5fX2RpY3RfX1snbm9kZU5hbWUnXSA9IHZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gdmFsdWUKKyAgICBkZWYgX3NldF9ub2RlTmFtZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudGFyZ2V0ID0gdmFsdWUKKyAgICBub2RlTmFtZSA9IHByb3BlcnR5KF9nZXRfbm9kZU5hbWUsIF9zZXRfbm9kZU5hbWUpCiAKICAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgIHdyaXRlci53cml0ZSgiJXM8PyVzICVzPz4lcyIgJSAoaW5kZW50LHNlbGYudGFyZ2V0LCBzZWxmLmRhdGEsIG5ld2wpKQogCiAKIGNsYXNzIENoYXJhY3RlckRhdGEoQ2hpbGRsZXNzLCBOb2RlKToKKyAgICBfX3Nsb3RzX189KCdfZGF0YScsICdvd25lckRvY3VtZW50JywncGFyZW50Tm9kZScsICdwcmV2aW91c1NpYmxpbmcnLCAnbmV4dFNpYmxpbmcnKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLm93bmVyRG9jdW1lbnQgPSBzZWxmLnBhcmVudE5vZGUgPSBOb25lCisgICAgICAgIHNlbGYucHJldmlvdXNTaWJsaW5nID0gc2VsZi5uZXh0U2libGluZyA9IE5vbmUKKyAgICAgICAgc2VsZi5fZGF0YSA9ICcnCisgICAgICAgIE5vZGUuX19pbml0X18oc2VsZikKKwogICAgIGRlZiBfZ2V0X2xlbmd0aChzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCiAgICAgX19sZW5fXyA9IF9nZXRfbGVuZ3RoCiAKICAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1snZGF0YSddCisgICAgICAgIHJldHVybiBzZWxmLl9kYXRhCiAgICAgZGVmIF9zZXRfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBkYXRhCisgICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCiAKLSAgICBfZ2V0X25vZGVWYWx1ZSA9IF9nZXRfZGF0YQotICAgIF9zZXRfbm9kZVZhbHVlID0gX3NldF9kYXRhCi0KLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBuYW1lID09ICJkYXRhIiBvciBuYW1lID09ICJub2RlVmFsdWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1snZGF0YSddID0gc2VsZi5fX2RpY3RfX1snbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IHZhbHVlCisgICAgZGF0YSA9IG5vZGVWYWx1ZSA9IHByb3BlcnR5KF9nZXRfZGF0YSwgX3NldF9kYXRhKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBkYXRhID0gc2VsZi5kYXRhCkBAIC0xMDQyLDEwICsxMDY3LDcgQEAKIAogCiBjbGFzcyBUZXh0KENoYXJhY3RlckRhdGEpOgotICAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGFkZCBhbiBpbnN0YW5jZSBfX2RpY3RfXyBpZiB3ZSBkb24ndCBhbHJlYWR5Ci0gICAgIyBoYXZlIG9uZSwgYXQgbGVhc3Qgd2hlbiB0aGF0J3MgcG9zc2libGU6Ci0gICAgIyBYWFggdGhpcyBkb2VzIG5vdCB3b3JrLCBDaGFyYWN0ZXJEYXRhIGlzIGFuIG9sZC1zdHlsZSBjbGFzcwotICAgICMgX19zbG90c19fID0gKCkKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgbm9kZVR5cGUgPSBOb2RlLlRFWFRfTk9ERQogICAgIG5vZGVOYW1lID0gIiN0ZXh0IgpAQCAtMTExMiw5ICsxMTM0LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgY29udGVudDoKLSAgICAgICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBjb250ZW50Ci0gICAgICAgICAgICBkWydub2RlVmFsdWUnXSA9IGNvbnRlbnQKKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGNvbnRlbnQKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtMTE2MCw3ICsxMTgwLDggQEAKICAgICBub2RlTmFtZSA9ICIjY29tbWVudCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5ub2RlVmFsdWUgPSBkYXRhCisgICAgICAgIENoYXJhY3RlckRhdGEuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKIAogICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICAgaWYgIi0tIiBpbiBzZWxmLmRhdGE6CkBAIC0xMTY5LDEwICsxMTkwLDcgQEAKIAogCiBjbGFzcyBDREFUQVNlY3Rpb24oVGV4dCk6Ci0gICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGFuIGluc3RhbmNlIF9fZGljdF9fIGlmIHdlIGRvbid0IGFscmVhZHkKLSAgICAjIGhhdmUgb25lLCBhdCBsZWFzdCB3aGVuIHRoYXQncyBwb3NzaWJsZToKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIFRleHQgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAoKQorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBub2RlVHlwZSA9IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI2NkYXRhLXNlY3Rpb24iCkBAIC0xMjUyLDggKzEyNzAsNyBAQAogY2xhc3MgSWRlbnRpZmllZDoKICAgICAiIiJNaXgtaW4gY2xhc3MgdGhhdCBzdXBwb3J0cyB0aGUgcHVibGljSWQgYW5kIHN5c3RlbUlkIGF0dHJpYnV0ZXMuIiIiCiAKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAncHVibGljSWQnLCAnc3lzdGVtSWQnCisgICAgX19zbG90c19fID0gJ3B1YmxpY0lkJywgJ3N5c3RlbUlkJwogCiAgICAgZGVmIF9pZGVudGlmaWVkX21peGluX2luaXQoc2VsZiwgcHVibGljSWQsIHN5c3RlbUlkKToKICAgICAgICAgc2VsZi5wdWJsaWNJZCA9IHB1YmxpY0lkCkBAIC0xNTA0LDE4ICsxNTIxLDE5IEBACiAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudC5faWRfc2VhcmNoX3N0YWNrPSBOb25lCiAKIGNsYXNzIERvY3VtZW50KE5vZGUsIERvY3VtZW50TFMpOgorICAgIF9fc2xvdHNfXyA9ICgnX2VsZW1faW5mbycsICdkb2N0eXBlJywKKyAgICAgICAgICAgICAgICAgJ19pZF9zZWFyY2hfc3RhY2snLCAnY2hpbGROb2RlcycsICdfaWRfY2FjaGUnKQogICAgIF9jaGlsZF9ub2RlX3R5cGVzID0gKE5vZGUuRUxFTUVOVF9OT0RFLCBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLkNPTU1FTlRfTk9ERSwgTm9kZS5ET0NVTUVOVF9UWVBFX05PREUpCiAKKyAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKICAgICBub2RlVHlwZSA9IE5vZGUuRE9DVU1FTlRfTk9ERQogICAgIG5vZGVOYW1lID0gIiNkb2N1bWVudCIKICAgICBub2RlVmFsdWUgPSBOb25lCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKLSAgICBkb2N0eXBlID0gTm9uZQogICAgIHBhcmVudE5vZGUgPSBOb25lCiAgICAgcHJldmlvdXNTaWJsaW5nID0gbmV4dFNpYmxpbmcgPSBOb25lCiAKLSAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKIAogICAgICMgRG9jdW1lbnQgYXR0cmlidXRlcyBmcm9tIExldmVsIDMgKFdEIDkgQXByaWwgMjAwMikKIApAQCAtMTUzMCw2ICsxNTQ4LDcgQEAKICAgICBfbWFnaWNfaWRfY291bnQgPSAwCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9jdHlwZSA9IE5vbmUKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzID0gTm9kZUxpc3QoKQogICAgICAgICAjIG1hcHBpbmcgb2YgKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSAtPiBFbGVtZW50SW5mbwogICAgICAgICAjICAgICAgICBhbmQgdGFnTmFtZSAtPiBFbGVtZW50SW5mbwpAQCAtMTc3MSwxMiArMTc5MCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoImNhbm5vdCBpbXBvcnQgZG9jdW1lbnQgdHlwZSBub2RlcyIpCiAgICAgICAgIHJldHVybiBfY2xvbmVfbm9kZShub2RlLCBkZWVwLCBzZWxmKQogCi0gICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIsCi0gICAgICAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZSk6CisgICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JytuZXdsKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSIlcyI/PiVzJyAlIChlbmNvZGluZywgbmV3bCkpCisgICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiVzIj8+JXMnICUgKAorICAgICAgICAgICAgICAgIGVuY29kaW5nLCBuZXdsKSkKICAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICAgbm9kZS53cml0ZXhtbCh3cml0ZXIsIGluZGVudCwgYWRkaW5kZW50LCBuZXdsKQogCkBAIC0xODE1LDE3ICsxODM0LDE1IEBACiAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbGVtZW50ID0gTm9uZQotICAgICAgICAjIGF2b2lkIF9fc2V0YXR0cl9fCi0gICAgICAgIGQgPSBuLl9fZGljdF9fCi0gICAgICAgIGRbJ3ByZWZpeCddID0gcHJlZml4Ci0gICAgICAgIGRbJ2xvY2FsTmFtZSddID0gbG9jYWxOYW1lCi0gICAgICAgIGRbJ25hbWVzcGFjZVVSSSddID0gbmFtZXNwYWNlVVJJCi0gICAgICAgIGRbJ25vZGVOYW1lJ10gPSBuYW1lCisgICAgICAgIG4ucHJlZml4ID0gcHJlZml4CisgICAgICAgIG4uX2xvY2FsTmFtZSA9IGxvY2FsTmFtZQorICAgICAgICBuLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQorICAgICAgICBuLm5vZGVOYW1lID0gbmFtZQogICAgICAgICBpZiBuLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgZFsndGFnTmFtZSddID0gbmFtZQorICAgICAgICAgICAgbi50YWdOYW1lID0gbmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBhdHRyaWJ1dGUgbm9kZQotICAgICAgICAgICAgZFsnbmFtZSddID0gbmFtZQorICAgICAgICAgICAgbi5uYW1lID0gbmFtZQogICAgICAgICAgICAgaWYgZWxlbWVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5vZGUobikKICAgICAgICAgICAgICAgICBpZiBpc19pZDoKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL3B1bGxkb20ucHkgYi9MaWIveG1sL2RvbS9wdWxsZG9tLnB5CmluZGV4IGQ1YWM4YjIuLjQzNTA0ZjcgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL3B1bGxkb20ucHkKKysrIGIvTGliL3htbC9kb20vcHVsbGRvbS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB4bWwuc2F4CiBpbXBvcnQgeG1sLnNheC5oYW5kbGVyCi1pbXBvcnQgdHlwZXMKIAogU1RBUlRfRUxFTUVOVCA9ICJTVEFSVF9FTEVNRU5UIgogRU5EX0VMRU1FTlQgPSAiRU5EX0VMRU1FTlQiCkBAIC0zMzQsMTAgKzMzMyw3IEBACiAgICAgcmV0dXJuIERPTUV2ZW50U3RyZWFtKHN0cmVhbSwgcGFyc2VyLCBidWZzaXplKQogCiBkZWYgcGFyc2VTdHJpbmcoc3RyaW5nLCBwYXJzZXI9Tm9uZSk6Ci0gICAgdHJ5OgotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCiAgICAgYnVmc2l6ZSA9IGxlbihzdHJpbmcpCiAgICAgYnVmID0gU3RyaW5nSU8oc3RyaW5nKQpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggZmY4ZmY3ZC4uZThlMzA5YyAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC02OCw4ICs2OCw5IEBACiAgICAgInRvc3RyaW5nIiwgInRvc3RyaW5nbGlzdCIsCiAgICAgIlRyZWVCdWlsZGVyIiwKICAgICAiVkVSU0lPTiIsCi0gICAgIlhNTCIsCisgICAgIlhNTCIsICJYTUxJRCIsCiAgICAgIlhNTFBhcnNlciIsICJYTUxUcmVlQnVpbGRlciIsCisgICAgInJlZ2lzdGVyX25hbWVzcGFjZSIsCiAgICAgXQogCiBWRVJTSU9OID0gIjEuMy4wIgpAQCAtOTksMzQgKzEwMCwxMSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBpbworaW1wb3J0IGNvbnRleHRsaWIKIAorZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aAogCi1jbGFzcyBfU2ltcGxlRWxlbWVudFBhdGg6Ci0gICAgIyBlbXVsYXRlIHByZS0xLjIgZmluZC9maW5kdGV4dC9maW5kYWxsIGJlaGF2aW91cgotICAgIGRlZiBmaW5kKHNlbGYsIGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID09IHRhZzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbQotICAgICAgICByZXR1cm4gTm9uZQotICAgIGRlZiBmaW5kdGV4dChzZWxmLCBlbGVtZW50LCB0YWcsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgZWxlbSA9IHNlbGYuZmluZChlbGVtZW50LCB0YWcpCi0gICAgICAgIGlmIGVsZW0gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBlbGVtLnRleHQgb3IgIiIKLSAgICBkZWYgaXRlcmZpbmQoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBpZiB0YWdbOjNdID09ICIuLy8iOgotICAgICAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudC5pdGVyKHRhZ1szOl0pOgotICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KLSAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID09IHRhZzoKLSAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCi0gICAgZGVmIGZpbmRhbGwoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJmaW5kKGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcykpCi0KLXRyeToKLSAgICBmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgRWxlbWVudFBhdGggPSBfU2ltcGxlRWxlbWVudFBhdGgoKQogCiAjIwogIyBQYXJzZXIgZXJyb3IuICBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgPGI+U3ludGF4RXJyb3I8L2I+LgpAQCAtMTQ4LDkgKzEyNiw5IEBACiAjIEBkZWZyZXR1cm4gZmxhZwogCiBkZWYgaXNlbGVtZW50KGVsZW1lbnQpOgotICAgICMgRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXM7IG1pZ2h0IGJlIGEgYmV0dGVyIGlkZWEgdG8gbG9vawotICAgICMgZm9yIHRhZy9hdHRyaWIvdGV4dCBhdHRyaWJ1dGVzCi0gICAgcmV0dXJuIGlzaW5zdGFuY2UoZWxlbWVudCwgRWxlbWVudCkgb3IgaGFzYXR0cihlbGVtZW50LCAidGFnIikKKyAgICAjIEZJWE1FOiBub3Qgc3VyZSBhYm91dCB0aGlzOworICAgICMgaXNpbnN0YW5jZShlbGVtZW50LCBFbGVtZW50KSBvciBsb29rIGZvciB0YWcvYXR0cmliL3RleHQgYXR0cmlidXRlcworICAgIHJldHVybiBoYXNhdHRyKGVsZW1lbnQsICd0YWcnKQogCiAjIwogIyBFbGVtZW50IGNsYXNzLiAgVGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBFbGVtZW50IGludGVyZmFjZSwgYW5kCkBAIC0yMDUsNiArMTgzLDkgQEAKICAgICAjIGNvbnN0cnVjdG9yCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnLCBhdHRyaWI9e30sICoqZXh0cmEpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyaWIsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhdHRyaWIgbXVzdCBiZSBkaWN0LCBub3QgJXMiICUgKAorICAgICAgICAgICAgICAgIGF0dHJpYi5fX2NsYXNzX18uX19uYW1lX18sKSkKICAgICAgICAgYXR0cmliID0gYXR0cmliLmNvcHkoKQogICAgICAgICBhdHRyaWIudXBkYXRlKGV4dHJhKQogICAgICAgICBzZWxmLnRhZyA9IHRhZwpAQCAtMjk4LDcgKzI3OSw3IEBACiAgICAgIyBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBhZGQuCiAKICAgICBkZWYgYXBwZW5kKHNlbGYsIGVsZW1lbnQpOgotICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uYXBwZW5kKGVsZW1lbnQpCiAKICAgICAjIwpAQCAtMzA4LDggKzI4OSw4IEBACiAgICAgIyBAc2luY2UgMS4zCiAKICAgICBkZWYgZXh0ZW5kKHNlbGYsIGVsZW1lbnRzKToKLSAgICAgICAgIyBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKLSAgICAgICAgIyAgICAgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKKyAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuLmV4dGVuZChlbGVtZW50cykKIAogICAgICMjCkBAIC0zMTgsOSArMjk5LDE1IEBACiAgICAgIyBAcGFyYW0gaW5kZXggV2hlcmUgdG8gaW5zZXJ0IHRoZSBuZXcgc3ViZWxlbWVudC4KIAogICAgIGRlZiBpbnNlcnQoc2VsZiwgaW5kZXgsIGVsZW1lbnQpOgotICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uaW5zZXJ0KGluZGV4LCBlbGVtZW50KQogCisgICAgZGVmIF9hc3NlcnRfaXNfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgIyBOZWVkIHRvIHJlZmVyIHRvIHRoZSBhY3R1YWwgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBub3QgdGhlCisgICAgICAgICMgc2hhZG93aW5nIEMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGUsIF9FbGVtZW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgYW4gRWxlbWVudCwgbm90ICVzJyAlIHR5cGUoZSkuX19uYW1lX18pCisKICAgICAjIwogICAgICMgUmVtb3ZlcyBhIG1hdGNoaW5nIHN1YmVsZW1lbnQuICBVbmxpa2UgdGhlIDxiPmZpbmQ8L2I+IG1ldGhvZHMsCiAgICAgIyB0aGlzIG1ldGhvZCBjb21wYXJlcyBlbGVtZW50cyBiYXNlZCBvbiBpZGVudGl0eSwgbm90IG9uIHRhZwpAQCAtODEwLDU5ICs3OTcsMzggQEAKICAgICAjICAgICAiYzE0biI7IGRlZmF1bHQgaXMgInhtbCIpLgogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGZpbGVfb3JfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwKICAgICAgICAgICAgICAgeG1sX2RlY2xhcmF0aW9uPU5vbmUsCiAgICAgICAgICAgICAgIGRlZmF1bHRfbmFtZXNwYWNlPU5vbmUsCiAgICAgICAgICAgICAgIG1ldGhvZD1Ob25lKToKLSAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgICBpZiBub3QgbWV0aG9kOgogICAgICAgICAgICAgbWV0aG9kID0gInhtbCIKICAgICAgICAgZWxpZiBtZXRob2Qgbm90IGluIF9zZXJpYWxpemU6Ci0gICAgICAgICAgICAjIEZJWE1FOiByYWlzZSBhbiBJbXBvcnRFcnJvciBmb3IgYzE0biBpZiBFbGVtZW50QzE0TiBpcyBtaXNzaW5nPwogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5rbm93biBtZXRob2QgJXIiICUgbWV0aG9kKQogICAgICAgICBpZiBub3QgZW5jb2Rpbmc6CiAgICAgICAgICAgICBpZiBtZXRob2QgPT0gImMxNG4iOgogICAgICAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJ1cy1hc2NpaSIKLSAgICAgICAgZWxpZiBlbmNvZGluZyA9PSBzdHI6ICAjIGx4bWwuZXRyZWUgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgIGVuY29kaW5nID0gInVuaWNvZGUiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLmxvd2VyKCkKLSAgICAgICAgaWYgaGFzYXR0cihmaWxlX29yX2ZpbGVuYW1lLCAid3JpdGUiKToKLSAgICAgICAgICAgIGZpbGUgPSBmaWxlX29yX2ZpbGVuYW1lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBlbmNvZGluZyAhPSAidW5pY29kZSI6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgIndiIikKKyAgICAgICAgd2l0aCBfZ2V0X3dyaXRlcihmaWxlX29yX2ZpbGVuYW1lLCBlbmNvZGluZykgYXMgd3JpdGU6CisgICAgICAgICAgICBpZiBtZXRob2QgPT0gInhtbCIgYW5kICh4bWxfZGVjbGFyYXRpb24gb3IKKyAgICAgICAgICAgICAgICAgICAgKHhtbF9kZWNsYXJhdGlvbiBpcyBOb25lIGFuZAorICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmcgbm90IGluICgidXRmLTgiLCAidXMtYXNjaWkiLCAidW5pY29kZSIpKSk6CisgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICAgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKKyAgICAgICAgICAgICAgICAgICAgIyBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3IgdGhlIHhtbCBkZWNsYXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKyAgICAgICAgICAgICAgICB3cml0ZSgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIgJSAoCisgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nLCkpCisgICAgICAgICAgICBpZiBtZXRob2QgPT0gInRleHQiOgorICAgICAgICAgICAgICAgIF9zZXJpYWxpemVfdGV4dCh3cml0ZSwgc2VsZi5fcm9vdCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciKQotICAgICAgICBpZiBlbmNvZGluZyAhPSAidW5pY29kZSI6Ci0gICAgICAgICAgICBkZWYgd3JpdGUodGV4dCk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZS53cml0ZSh0ZXh0LmVuY29kZShlbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IodGV4dCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdyaXRlID0gZmlsZS53cml0ZQotICAgICAgICBpZiBtZXRob2QgPT0gInhtbCIgYW5kICh4bWxfZGVjbGFyYXRpb24gb3IKLSAgICAgICAgICAgICAgICAoeG1sX2RlY2xhcmF0aW9uIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgIGVuY29kaW5nIG5vdCBpbiAoInV0Zi04IiwgInVzLWFzY2lpIiwgInVuaWNvZGUiKSkpOgotICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcgPSBlbmNvZGluZwotICAgICAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgotICAgICAgICAgICAgICAgICMgUmV0cmlldmUgdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHRoZSB4bWwgZGVjbGFyYXRpb24KLSAgICAgICAgICAgICAgICBpbXBvcnQgbG9jYWxlCi0gICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQotICAgICAgICAgICAgd3JpdGUoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iICUgZGVjbGFyZWRfZW5jb2RpbmcpCi0gICAgICAgIGlmIG1ldGhvZCA9PSAidGV4dCI6Ci0gICAgICAgICAgICBfc2VyaWFsaXplX3RleHQod3JpdGUsIHNlbGYuX3Jvb3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBxbmFtZXMsIG5hbWVzcGFjZXMgPSBfbmFtZXNwYWNlcyhzZWxmLl9yb290LCBkZWZhdWx0X25hbWVzcGFjZSkKLSAgICAgICAgICAgIHNlcmlhbGl6ZSA9IF9zZXJpYWxpemVbbWV0aG9kXQotICAgICAgICAgICAgc2VyaWFsaXplKHdyaXRlLCBzZWxmLl9yb290LCBxbmFtZXMsIG5hbWVzcGFjZXMpCi0gICAgICAgIGlmIGZpbGVfb3JfZmlsZW5hbWUgaXMgbm90IGZpbGU6Ci0gICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBxbmFtZXMsIG5hbWVzcGFjZXMgPSBfbmFtZXNwYWNlcyhzZWxmLl9yb290LCBkZWZhdWx0X25hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemUgPSBfc2VyaWFsaXplW21ldGhvZF0KKyAgICAgICAgICAgICAgICBzZXJpYWxpemUod3JpdGUsIHNlbGYuX3Jvb3QsIHFuYW1lcywgbmFtZXNwYWNlcykKIAogICAgIGRlZiB3cml0ZV9jMTRuKHNlbGYsIGZpbGUpOgogICAgICAgICAjIGx4bWwuZXRyZWUgY29tcGF0aWJpbGl0eS4gIHVzZSBvdXRwdXQgbWV0aG9kIGluc3RlYWQKQEAgLTg3MSw2ICs4MzcsNTggQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgc2VyaWFsaXphdGlvbiBzdXBwb3J0CiAKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgX2dldF93cml0ZXIoZmlsZV9vcl9maWxlbmFtZSwgZW5jb2RpbmcpOgorICAgICMgcmV0dXJucyB0ZXh0IHdyaXRlIG1ldGhvZCBhbmQgcmVsZWFzZSBhbGwgcmVzb3Vyc2VzIGFmdGVyIHVzaW5nCisgICAgdHJ5OgorICAgICAgICB3cml0ZSA9IGZpbGVfb3JfZmlsZW5hbWUud3JpdGUKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgZmlsZV9vcl9maWxlbmFtZSBpcyBhIGZpbGUgbmFtZQorICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6CisgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlX29yX2ZpbGVuYW1lLCAidyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlX29yX2ZpbGVuYW1lLCAidyIsIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIpCisgICAgICAgIHdpdGggZmlsZToKKyAgICAgICAgICAgIHlpZWxkIGZpbGUud3JpdGUKKyAgICBlbHNlOgorICAgICAgICAjIGZpbGVfb3JfZmlsZW5hbWUgaXMgYSBmaWxlLWxpa2Ugb2JqZWN0CisgICAgICAgICMgZW5jb2RpbmcgZGV0ZXJtaW5lcyBpZiBpdCBpcyBhIHRleHQgb3IgYmluYXJ5IHdyaXRlcgorICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6CisgICAgICAgICAgICAjIHVzZSBhIHRleHQgd3JpdGVyIGFzIGlzCisgICAgICAgICAgICB5aWVsZCB3cml0ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB3cmFwIGEgYmluYXJ5IHdyaXRlciB3aXRoIFRleHRJT1dyYXBwZXIKKyAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVfb3JfZmlsZW5hbWUsIGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVfb3JfZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZV9vcl9maWxlbmFtZSwgaW8uUmF3SU9CYXNlKToKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLkJ1ZmZlcmVkV3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgICMgS2VlcCB0aGUgb3JpZ2luYWwgZmlsZSBvcGVuIHdoZW4gdGhlIEJ1ZmZlcmVkV3JpdGVyIGlzCisgICAgICAgICAgICAgICAgICAgICMgZGVzdHJveWVkCisgICAgICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKGZpbGUuZGV0YWNoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0byBoYW5kbGUgcGFzc2VkIG9iamVjdHMgdGhhdCBhcmVuJ3QgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICMgSU9CYXNlIGhpZXJhcmNoeSwgYnV0IGp1c3QgaGF2ZSBhIHdyaXRlIG1ldGhvZAorICAgICAgICAgICAgICAgICAgICBmaWxlID0gaW8uQnVmZmVyZWRJT0Jhc2UoKQorICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRhYmxlID0gbGFtYmRhOiBUcnVlCisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGUgPSB3cml0ZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRleHRJT1dyYXBwZXIgdXNlcyB0aGlzIG1ldGhvZHMgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIEJPTSAoZm9yIFVURi0xNiwgZXRjKSBzaG91bGQgYmUgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc2Vla2FibGUgPSBmaWxlX29yX2ZpbGVuYW1lLnNlZWthYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnRlbGwgPSBmaWxlX29yX2ZpbGVuYW1lLnRlbGwKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGZpbGUgPSBpby5UZXh0SU9XcmFwcGVyKGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT0iXG4iKQorICAgICAgICAgICAgICAgICMgS2VlcCB0aGUgb3JpZ2luYWwgZmlsZSBvcGVuIHdoZW4gdGhlIFRleHRJT1dyYXBwZXIgaXMKKyAgICAgICAgICAgICAgICAjIGRlc3Ryb3llZAorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKGZpbGUuZGV0YWNoKQorICAgICAgICAgICAgICAgIHlpZWxkIGZpbGUud3JpdGUKKwogZGVmIF9uYW1lc3BhY2VzKGVsZW0sIGRlZmF1bHRfbmFtZXNwYWNlPU5vbmUpOgogICAgICMgaWRlbnRpZnkgbmFtZXNwYWNlcyB1c2VkIGluIHRoaXMgdHJlZQogCkBAIC05MTAsMTEgKzkyOCw3IEBACiAgICAgICAgICAgICBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcihxbmFtZSkKIAogICAgICMgcG9wdWxhdGUgcW5hbWUgYW5kIG5hbWVzcGFjZXMgdGFibGUKLSAgICB0cnk6Ci0gICAgICAgIGl0ZXJhdGUgPSBlbGVtLml0ZXIKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGl0ZXJhdGUgPSBlbGVtLmdldGl0ZXJhdG9yICMgY0VUIGNvbXBhdGliaWxpdHkKLSAgICBmb3IgZWxlbSBpbiBpdGVyYXRlKCk6CisgICAgZm9yIGVsZW0gaW4gZWxlbS5pdGVyKCk6CiAgICAgICAgIHRhZyA9IGVsZW0udGFnCiAgICAgICAgIGlmIGlzaW5zdGFuY2UodGFnLCBRTmFtZSk6CiAgICAgICAgICAgICBpZiB0YWcudGV4dCBub3QgaW4gcW5hbWVzOgpAQCAtMTA4Niw2ICsxMTAwLDggQEAKICAgICAjIGR1YmxpbiBjb3JlCiAgICAgImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIjogImRjIiwKIH0KKyMgRm9yIHRlc3RzIGFuZCB0cm91Ymxlc2hvb3RpbmcKK3JlZ2lzdGVyX25hbWVzcGFjZS5fbmFtZXNwYWNlX21hcCA9IF9uYW1lc3BhY2VfbWFwCiAKIGRlZiBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcih0ZXh0KToKICAgICByYWlzZSBUeXBlRXJyb3IoCkBAIC0xMTU0LDIyICsxMTcwLDEzIEBACiAjIEBkZWZyZXR1cm4gc3RyaW5nCiAKIGRlZiB0b3N0cmluZyhlbGVtZW50LCBlbmNvZGluZz1Ob25lLCBtZXRob2Q9Tm9uZSk6Ci0gICAgY2xhc3MgZHVtbXk6Ci0gICAgICAgIHBhc3MKLSAgICBkYXRhID0gW10KLSAgICBmaWxlID0gZHVtbXkoKQotICAgIGZpbGUud3JpdGUgPSBkYXRhLmFwcGVuZAotICAgIEVsZW1lbnRUcmVlKGVsZW1lbnQpLndyaXRlKGZpbGUsIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kKQotICAgIGlmIGVuY29kaW5nIGluIChzdHIsICJ1bmljb2RlIik6Ci0gICAgICAgIHJldHVybiAiIi5qb2luKGRhdGEpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGIiIi5qb2luKGRhdGEpCisgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKSBpZiBlbmNvZGluZyA9PSAndW5pY29kZScgZWxzZSBpby5CeXRlc0lPKCkKKyAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kKQorICAgIHJldHVybiBzdHJlYW0uZ2V0dmFsdWUoKQogCiAjIwogIyBHZW5lcmF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGVsZW1lbnQsIGluY2x1ZGluZyBhbGwKLSMgc3ViZWxlbWVudHMuICBJZiBlbmNvZGluZyBpcyBGYWxzZSwgdGhlIHN0cmluZyBpcyByZXR1cm5lZCBhcyBhCi0jIHNlcXVlbmNlIG9mIHN0cmluZyBmcmFnbWVudHM7IG90aGVyd2lzZSBpdCBpcyBhIHNlcXVlbmNlIG9mCi0jIGJ5dGVzdHJpbmdzLgorIyBzdWJlbGVtZW50cy4KICMKICMgQHBhcmFtIGVsZW1lbnQgQW4gRWxlbWVudCBpbnN0YW5jZS4KICMgQGtleXBhcmFtIGVuY29kaW5nIE9wdGlvbmFsIG91dHB1dCBlbmNvZGluZyAoZGVmYXVsdCBpcyBVUy1BU0NJSSkuCkBAIC0xMTgwLDE1ICsxMTg3LDI5IEBACiAjIEBkZWZyZXR1cm4gc2VxdWVuY2UKICMgQHNpbmNlIDEuMwogCitjbGFzcyBfTGlzdERhdGFTdHJlYW0oaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgICIiIiBBbiBhdXhpbGlhcnkgc3RyZWFtIGFjY3VtdWxhdGluZyBpbnRvIGEgbGlzdCByZWZlcmVuY2UKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbHN0KToKKyAgICAgICAgc2VsZi5sc3QgPSBsc3QKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5sc3QuYXBwZW5kKGIpCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmxzdCkKKwogZGVmIHRvc3RyaW5nbGlzdChlbGVtZW50LCBlbmNvZGluZz1Ob25lLCBtZXRob2Q9Tm9uZSk6Ci0gICAgY2xhc3MgZHVtbXk6Ci0gICAgICAgIHBhc3MKLSAgICBkYXRhID0gW10KLSAgICBmaWxlID0gZHVtbXkoKQotICAgIGZpbGUud3JpdGUgPSBkYXRhLmFwcGVuZAotICAgIEVsZW1lbnRUcmVlKGVsZW1lbnQpLndyaXRlKGZpbGUsIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kKQotICAgICMgRklYTUU6IG1lcmdlIHNtYWxsIGZyYWdtZW50cyBpbnRvIGxhcmdlciBwYXJ0cwotICAgIHJldHVybiBkYXRhCisgICAgbHN0ID0gW10KKyAgICBzdHJlYW0gPSBfTGlzdERhdGFTdHJlYW0obHN0KQorICAgIEVsZW1lbnRUcmVlKGVsZW1lbnQpLndyaXRlKHN0cmVhbSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCisgICAgcmV0dXJuIGxzdAogCiAjIwogIyBXcml0ZXMgYW4gZWxlbWVudCB0cmVlIG9yIGVsZW1lbnQgc3RydWN0dXJlIHRvIHN5cy5zdGRvdXQuICBUaGlzCkBAIC0xNTEwLDI0ICsxNTMxLDMwIEBACiAgICAgICAgIHNlbGYudGFyZ2V0ID0gc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgIHNlbGYuX2Vycm9yID0gZXhwYXQuZXJyb3IKICAgICAgICAgc2VsZi5fbmFtZXMgPSB7fSAjIG5hbWUgbWVtbyBjYWNoZQotICAgICAgICAjIGNhbGxiYWNrcworICAgICAgICAjIG1haW4gY2FsbGJhY2tzCiAgICAgICAgIHBhcnNlci5EZWZhdWx0SGFuZGxlckV4cGFuZCA9IHNlbGYuX2RlZmF1bHQKLSAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLl9zdGFydAotICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSBzZWxmLl9lbmQKLSAgICAgICAgcGFyc2VyLkNoYXJhY3RlckRhdGFIYW5kbGVyID0gc2VsZi5fZGF0YQotICAgICAgICAjIG9wdGlvbmFsIGNhbGxiYWNrcwotICAgICAgICBwYXJzZXIuQ29tbWVudEhhbmRsZXIgPSBzZWxmLl9jb21tZW50Ci0gICAgICAgIHBhcnNlci5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyID0gc2VsZi5fcGkKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdzdGFydCcpOgorICAgICAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLl9zdGFydAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2VuZCcpOgorICAgICAgICAgICAgcGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fZW5kCisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnZGF0YScpOgorICAgICAgICAgICAgcGFyc2VyLkNoYXJhY3RlckRhdGFIYW5kbGVyID0gdGFyZ2V0LmRhdGEKKyAgICAgICAgIyBtaXNjZWxsYW5lb3VzIGNhbGxiYWNrcworICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2NvbW1lbnQnKToKKyAgICAgICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IHRhcmdldC5jb21tZW50CisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAncGknKToKKyAgICAgICAgICAgIHBhcnNlci5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyID0gdGFyZ2V0LnBpCiAgICAgICAgICMgbGV0IGV4cGF0IGRvIHRoZSBidWZmZXJpbmcsIGlmIHN1cHBvcnRlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wYXJzZXIuYnVmZmVyX3RleHQgPSAxCisgICAgICAgICAgICBwYXJzZXIuYnVmZmVyX3RleHQgPSAxCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyB1c2UgbmV3LXN0eWxlIGF0dHJpYnV0ZSBoYW5kbGluZywgaWYgc3VwcG9ydGVkCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5vcmRlcmVkX2F0dHJpYnV0ZXMgPSAxCi0gICAgICAgICAgICBzZWxmLl9wYXJzZXIuc3BlY2lmaWVkX2F0dHJpYnV0ZXMgPSAxCi0gICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0X2xpc3QKKyAgICAgICAgICAgIHBhcnNlci5vcmRlcmVkX2F0dHJpYnV0ZXMgPSAxCisgICAgICAgICAgICBwYXJzZXIuc3BlY2lmaWVkX2F0dHJpYnV0ZXMgPSAxCisgICAgICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3N0YXJ0Jyk6CisgICAgICAgICAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLl9zdGFydF9saXN0CiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5fZG9jdHlwZSA9IE5vbmUKQEAgLTE1NzEsNDQgKzE1OTgsMjkgQEAKICAgICAgICAgICAgICAgICBhdHRyaWJbZml4bmFtZShhdHRyaWJfaW5baV0pXSA9IGF0dHJpYl9pbltpKzFdCiAgICAgICAgIHJldHVybiBzZWxmLnRhcmdldC5zdGFydCh0YWcsIGF0dHJpYikKIAotICAgIGRlZiBfZGF0YShzZWxmLCB0ZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LmRhdGEodGV4dCkKLQogICAgIGRlZiBfZW5kKHNlbGYsIHRhZyk6CiAgICAgICAgIHJldHVybiBzZWxmLnRhcmdldC5lbmQoc2VsZi5fZml4bmFtZSh0YWcpKQogCi0gICAgZGVmIF9jb21tZW50KHNlbGYsIGRhdGEpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb21tZW50ID0gc2VsZi50YXJnZXQuY29tbWVudAotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY29tbWVudChkYXRhKQotCi0gICAgZGVmIF9waShzZWxmLCB0YXJnZXQsIGRhdGEpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwaSA9IHNlbGYudGFyZ2V0LnBpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBwaSh0YXJnZXQsIGRhdGEpCi0KICAgICBkZWYgX2RlZmF1bHQoc2VsZiwgdGV4dCk6CiAgICAgICAgIHByZWZpeCA9IHRleHRbOjFdCiAgICAgICAgIGlmIHByZWZpeCA9PSAiJiI6CiAgICAgICAgICAgICAjIGRlYWwgd2l0aCB1bmRlZmluZWQgZW50aXRpZXMKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnRhcmdldC5kYXRhKHNlbGYuZW50aXR5W3RleHRbMTotMV1dKQorICAgICAgICAgICAgICAgIGRhdGFfaGFuZGxlciA9IHNlbGYudGFyZ2V0LmRhdGEKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRhX2hhbmRsZXIoc2VsZi5lbnRpdHlbdGV4dFsxOi0xXV0pCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKICAgICAgICAgICAgICAgICBlcnIgPSBleHBhdC5lcnJvcigKICAgICAgICAgICAgICAgICAgICAgInVuZGVmaW5lZCBlbnRpdHkgJXM6IGxpbmUgJWQsIGNvbHVtbiAlZCIgJQotICAgICAgICAgICAgICAgICAgICAodGV4dCwgc2VsZi5fcGFyc2VyLkVycm9yTGluZU51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAodGV4dCwgc2VsZi5wYXJzZXIuRXJyb3JMaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5FcnJvckNvbHVtbk51bWJlcikKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGVyci5jb2RlID0gMTEgIyBYTUxfRVJST1JfVU5ERUZJTkVEX0VOVElUWQotICAgICAgICAgICAgICAgIGVyci5saW5lbm8gPSBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCi0gICAgICAgICAgICAgICAgZXJyLm9mZnNldCA9IHNlbGYuX3BhcnNlci5FcnJvckNvbHVtbk51bWJlcgorICAgICAgICAgICAgICAgIGVyci5saW5lbm8gPSBzZWxmLnBhcnNlci5FcnJvckxpbmVOdW1iZXIKKyAgICAgICAgICAgICAgICBlcnIub2Zmc2V0ID0gc2VsZi5wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKICAgICAgICAgICAgICAgICByYWlzZSBlcnIKICAgICAgICAgZWxpZiBwcmVmaXggPT0gIjwiIGFuZCB0ZXh0Wzo5XSA9PSAiPCFET0NUWVBFIjoKICAgICAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBbXSAjIGluc2lkZSBhIGRvY3R5cGUgZGVjbGFyYXRpb24KQEAgLTE2MjYsMTYgKzE2MzgsMTYgQEAKICAgICAgICAgICAgICAgICB0eXBlID0gc2VsZi5fZG9jdHlwZVsxXQogICAgICAgICAgICAgICAgIGlmIHR5cGUgPT0gIlBVQkxJQyIgYW5kIG4gPT0gNDoKICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSwgcHViaWQsIHN5c3RlbSA9IHNlbGYuX2RvY3R5cGUKKyAgICAgICAgICAgICAgICAgICAgaWYgcHViaWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IHB1YmlkWzE6LTFdCiAgICAgICAgICAgICAgICAgZWxpZiB0eXBlID09ICJTWVNURU0iIGFuZCBuID09IDM6CiAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHR5cGUsIHN5c3RlbSA9IHNlbGYuX2RvY3R5cGUKICAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBOb25lCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgcHViaWQ6Ci0gICAgICAgICAgICAgICAgICAgIHB1YmlkID0gcHViaWRbMTotMV0KICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYudGFyZ2V0LCAiZG9jdHlwZSIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldC5kb2N0eXBlKG5hbWUsIHB1YmlkLCBzeXN0ZW1bMTotMV0pCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLmRvY3R5cGUgaXMgbm90IHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZToKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuZG9jdHlwZSAhPSBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGU6CiAgICAgICAgICAgICAgICAgICAgICMgd2FybiBhYm91dCBkZXByZWNhdGVkIGNhbGwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlKG5hbWUsIHB1YmlkLCBzeXN0ZW1bMTotMV0pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQpAQCAtMTY2Niw3ICsxNjc4LDcgQEAKIAogICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wYXJzZXIuUGFyc2UoZGF0YSwgMCkKKyAgICAgICAgICAgIHNlbGYucGFyc2VyLlBhcnNlKGRhdGEsIDApCiAgICAgICAgIGV4Y2VwdCBzZWxmLl9lcnJvciBhcyB2OgogICAgICAgICAgICAgc2VsZi5fcmFpc2VlcnJvcih2KQogCkBAIC0xNjc4LDEyICsxNjkwLDEwMCBAQAogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wYXJzZXIuUGFyc2UoIiIsIDEpICMgZW5kIG9mIGRhdGEKKyAgICAgICAgICAgIHNlbGYucGFyc2VyLlBhcnNlKCIiLCAxKSAjIGVuZCBvZiBkYXRhCiAgICAgICAgIGV4Y2VwdCBzZWxmLl9lcnJvciBhcyB2OgogICAgICAgICAgICAgc2VsZi5fcmFpc2VlcnJvcih2KQotICAgICAgICB0cmVlID0gc2VsZi50YXJnZXQuY2xvc2UoKQotICAgICAgICBkZWwgc2VsZi50YXJnZXQsIHNlbGYuX3BhcnNlciAjIGdldCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcwotICAgICAgICByZXR1cm4gdHJlZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjbG9zZV9oYW5kbGVyID0gc2VsZi50YXJnZXQuY2xvc2UKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGNsb3NlX2hhbmRsZXIoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMKKyAgICAgICAgICAgIGRlbCBzZWxmLnBhcnNlciwgc2VsZi5fcGFyc2VyCisgICAgICAgICAgICBkZWwgc2VsZi50YXJnZXQsIHNlbGYuX3RhcmdldAorCisKKyMgSW1wb3J0IHRoZSBDIGFjY2VsZXJhdG9ycwordHJ5OgorICAgICMgRWxlbWVudCwgU3ViRWxlbWVudCwgUGFyc2VFcnJvciwgVHJlZUJ1aWxkZXIsIFhNTFBhcnNlcgorICAgIGZyb20gX2VsZW1lbnR0cmVlIGltcG9ydCAqCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICAjIE92ZXJ3cml0ZSAnRWxlbWVudFRyZWUucGFyc2UnIGFuZCAnaXRlcnBhcnNlJyB0byB1c2UgdGhlIEMgWE1MUGFyc2VyCisKKyAgICBjbGFzcyBFbGVtZW50VHJlZShFbGVtZW50VHJlZSk6CisgICAgICAgIGRlZiBwYXJzZShzZWxmLCBzb3VyY2UsIHBhcnNlcj1Ob25lKToKKyAgICAgICAgICAgIGNsb3NlX3NvdXJjZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICdyZWFkJyk6CisgICAgICAgICAgICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICdyYicpCisgICAgICAgICAgICAgICAgY2xvc2Vfc291cmNlID0gVHJ1ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHBhcnNlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCg2NTUzNikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuZmVlZChkYXRhKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwYXJzZXIgPSBYTUxQYXJzZXIoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gcGFyc2VyLl9wYXJzZShzb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgY2xvc2Vfc291cmNlOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQorCisgICAgY2xhc3MgaXRlcnBhcnNlOgorICAgICAgICByb290ID0gTm9uZQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgZXZlbnRzPU5vbmUpOgorICAgICAgICAgICAgc2VsZi5fY2xvc2VfZmlsZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihmaWxlLCAncmVhZCcpOgorICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGUsICdyYicpCisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZmlsZSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCisgICAgICAgICAgICBzZWxmLl9ldmVudHMgPSBbXQorICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCisgICAgICAgICAgICBzZWxmLl9lcnJvciA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QgPSBOb25lCisgICAgICAgICAgICBiID0gVHJlZUJ1aWxkZXIoKQorICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gWE1MUGFyc2VyKGIpCisgICAgICAgICAgICBzZWxmLl9wYXJzZXIuX3NldGV2ZW50cyhzZWxmLl9ldmVudHMsIGV2ZW50cykKKworICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGUgPSBzZWxmLl9lcnJvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fZXZlbnRzWzpdCisgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNjM4NCkKKyAgICAgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBleGMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZQorCisgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICMgY29tcGF0aWJpbGl0eQogWE1MVHJlZUJ1aWxkZXIgPSBYTUxQYXJzZXIKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkKaW5kZXggYTZmMTI3YS4uMzY4ZTY3OSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkKQEAgLTEsMyArMSwzIEBACi0jIFdyYXBwZXIgbW9kdWxlIGZvciBfZWxlbWVudHRyZWUKKyMgRGVwcmVjYXRlZCBhbGlhcyBmb3IgeG1sLmV0cmVlLkVsZW1lbnRUcmVlCiAKLWZyb20gX2VsZW1lbnR0cmVlIGltcG9ydCAqCitmcm9tIHhtbC5ldHJlZS5FbGVtZW50VHJlZSBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5IGIvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5CmluZGV4IGE4MDViODIuLmJjYmU5ZmIgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weQorKysgYi9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkKQEAgLTEsNiArMSw0IEBACiAiIiJJbnRlcmZhY2UgdG8gdGhlIEV4cGF0IG5vbi12YWxpZGF0aW5nIFhNTCBwYXJzZXIuIiIiCi1fX3ZlcnNpb25fXyA9ICckUmV2aXNpb24kJwotCiBpbXBvcnQgc3lzCiAKIGZyb20gcHlleHBhdCBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9jbGllbnQucHkgYi9MaWIveG1scnBjL2NsaWVudC5weQppbmRleCBlYzhkOGU5Li5kN2IyZGIzIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL2NsaWVudC5weQorKysgYi9MaWIveG1scnBjL2NsaWVudC5weQpAQCAtMTI4LDggKzEyOCwxMSBAQAogIiIiCiAKIGltcG9ydCBiYXNlNjQKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGh0dHAuY2xpZW50CitpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGVycm5vCkBAIC0xNDIsMTcgKzE0NSwxMyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBJbnRlcm5hbCBzdHVmZgogCi10cnk6Ci0gICAgaW1wb3J0IGRhdGV0aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZGF0ZXRpbWUgPSBOb25lCi0KIGRlZiBlc2NhcGUocyk6CiAgICAgcyA9IHMucmVwbGFjZSgiJiIsICImYW1wOyIpCiAgICAgcyA9IHMucmVwbGFjZSgiPCIsICImbHQ7IikKICAgICByZXR1cm4gcy5yZXBsYWNlKCI+IiwgIiZndDsiLCkKIAotX192ZXJzaW9uX18gPSAiMS4wLjEiCisjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAorX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KIAogIyB4bWxycGMgaW50ZWdlciBsaW1pdHMKIE1BWElOVCA9ICAyKiozMS0xCkBAIC0yNTIsMjEgKzI1MSwzMyBAQAogIyBXcmFwcGVyIGZvciBYTUwtUlBDIERhdGVUaW1lIHZhbHVlcy4gIFRoaXMgY29udmVydHMgYSB0aW1lIHZhbHVlIHRvCiAjIHRoZSBmb3JtYXQgdXNlZCBieSBYTUwtUlBDLgogIyA8cD4KLSMgVGhlIHZhbHVlIGNhbiBiZSBnaXZlbiBhcyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0Ci0jICJ5eXl5bW1kZFRoaDptbTpzcyIsIGFzIGEgOS1pdGVtIHRpbWUgdHVwbGUgKGFzIHJldHVybmVkIGJ5CisjIFRoZSB2YWx1ZSBjYW4gYmUgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFzIGEgc3RyaW5nIGluIHRoZQorIyBmb3JtYXQgInl5eXltbWRkVGhoOm1tOnNzIiwgYXMgYSA5LWl0ZW0gdGltZSB0dXBsZSAoYXMgcmV0dXJuZWQgYnkKICMgdGltZS5sb2NhbHRpbWUoKSksIG9yIGFuIGludGVnZXIgdmFsdWUgKGFzIHJldHVybmVkIGJ5IHRpbWUudGltZSgpKS4KICMgVGhlIHdyYXBwZXIgdXNlcyB0aW1lLmxvY2FsdGltZSgpIHRvIGNvbnZlcnQgYW4gaW50ZWdlciB0byBhIHRpbWUKICMgdHVwbGUuCiAjCi0jIEBwYXJhbSB2YWx1ZSBUaGUgdGltZSwgZ2l2ZW4gYXMgYW4gSVNPIDg2MDEgc3RyaW5nLCBhIHRpbWUKLSMgICAgICAgICAgICAgIHR1cGxlLCBvciBhIGludGVnZXIgdGltZSB2YWx1ZS4KKyMgQHBhcmFtIHZhbHVlIFRoZSB0aW1lLCBnaXZlbiBhcyBhIGRhdGV0aW1lIG9iamVjdCwgYW4gSVNPIDg2MDEgc3RyaW5nLAorIyAgICAgICAgICAgICAgYSB0aW1lIHR1cGxlLCBvciBhbiBpbnRlZ2VyIHRpbWUgdmFsdWUuCisKKworIyBJc3N1ZSAjMTMzMDU6IGRpZmZlcmVudCBmb3JtYXQgY29kZXMgYWNyb3NzIHBsYXRmb3JtcworX2RheTAgPSBkYXRldGltZSgxLCAxLCAxKQoraWYgX2RheTAuc3RyZnRpbWUoJyVZJykgPT0gJzAwMDEnOiAgICAgICMgTWFjIE9TIFgKKyAgICBkZWYgX2lzbzg2MDFfZm9ybWF0KHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnN0cmZ0aW1lKCIlWSVtJWRUJUg6JU06JVMiKQorZWxpZiBfZGF5MC5zdHJmdGltZSgnJTRZJykgPT0gJzAwMDEnOiAgICMgTGludXgKKyAgICBkZWYgX2lzbzg2MDFfZm9ybWF0KHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnN0cmZ0aW1lKCIlNFklbSVkVCVIOiVNOiVTIikKK2Vsc2U6CisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikuemZpbGwoMTcpCitkZWwgX2RheTAKKwogCiBkZWYgX3N0cmZ0aW1lKHZhbHVlKToKLSAgICBpZiBkYXRldGltZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUuZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuICIlMDRkJTAyZCUwMmRUJTAyZDolMDJkOiUwMmQiICUgKAotICAgICAgICAgICAgICAgIHZhbHVlLnllYXIsIHZhbHVlLm1vbnRoLCB2YWx1ZS5kYXksCi0gICAgICAgICAgICAgICAgdmFsdWUuaG91ciwgdmFsdWUubWludXRlLCB2YWx1ZS5zZWNvbmQpCisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUpOgorICAgICAgICByZXR1cm4gX2lzbzg2MDFfZm9ybWF0KHZhbHVlKQogCiAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsICh0dXBsZSwgdGltZS5zdHJ1Y3RfdGltZSkpOgogICAgICAgICBpZiB2YWx1ZSA9PSAwOgpAQCAtMjkxLDkgKzMwMiw5IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERhdGVUaW1lKToKICAgICAgICAgICAgIHMgPSBzZWxmLnZhbHVlCiAgICAgICAgICAgICBvID0gb3RoZXIudmFsdWUKLSAgICAgICAgZWxpZiBkYXRldGltZSBhbmQgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUuZGF0ZXRpbWUpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgIHMgPSBzZWxmLnZhbHVlCi0gICAgICAgICAgICBvID0gb3RoZXIuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpCisgICAgICAgICAgICBvID0gX2lzbzg2MDFfZm9ybWF0KG90aGVyKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQogICAgICAgICAgICAgbyA9IG90aGVyCkBAIC0zNjEsOCArMzcyLDcgQEAKICAgICByZXR1cm4gdmFsdWUKIAogZGVmIF9kYXRldGltZV90eXBlKGRhdGEpOgotICAgIHQgPSB0aW1lLnN0cnB0aW1lKGRhdGEsICIlWSVtJWRUJUg6JU06JVMiKQotICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZSgqdHVwbGUodClbOjZdKQorICAgIHJldHVybiBkYXRldGltZS5zdHJwdGltZShkYXRhLCAiJVklbSVkVCVIOiVNOiVTIikKIAogIyMKICMgV3JhcHBlciBmb3IgYmluYXJ5IGRhdGEuICBUaGlzIGNhbiBiZSB1c2VkIHRvIHRyYW5zcG9ydCBhbnkga2luZApAQCAtMzc3LDggKzM4Nyw4IEBACiAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgIGRhdGEgPSBiIiIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcyBvciBieXRlYXJyYXksIG5vdCAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgICAgIGRhdGEgPSBieXRlcyhkYXRhKSAgIyBNYWtlIGEgY29weSBvZiB0aGUgYnl0ZXMhCiAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKQEAgLTQwOCw3ICs0MTgsNiBAQAogICAgICAgICBvdXQud3JpdGUoIjx2YWx1ZT48YmFzZTY0PlxuIikKICAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5lbmNvZGVieXRlcyhzZWxmLmRhdGEpCiAgICAgICAgIG91dC53cml0ZShlbmNvZGVkLmRlY29kZSgnYXNjaWknKSkKLSAgICAgICAgb3V0LndyaXRlKCdcbicpCiAgICAgICAgIG91dC53cml0ZSgiPC9iYXNlNjQ+PC92YWx1ZT5cbiIpCiAKIGRlZiBfYmluYXJ5KGRhdGEpOgpAQCAtNTIyLDE1ICs1MzEsNiBAQAogICAgICAgICB3cml0ZSgiPHZhbHVlPjxuaWwvPjwvdmFsdWU+IikKICAgICBkaXNwYXRjaFt0eXBlKE5vbmUpXSA9IGR1bXBfbmlsCiAKLSAgICBkZWYgZHVtcF9pbnQoc2VsZiwgdmFsdWUsIHdyaXRlKToKLSAgICAgICAgIyBpbiBjYXNlIGludHMgYXJlID4gMzIgYml0cwotICAgICAgICBpZiB2YWx1ZSA+IE1BWElOVCBvciB2YWx1ZSA8IE1JTklOVDoKLSAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImludCBleGNlZWRzIFhNTC1SUEMgbGltaXRzIikKLSAgICAgICAgd3JpdGUoIjx2YWx1ZT48aW50PiIpCi0gICAgICAgIHdyaXRlKHN0cih2YWx1ZSkpCi0gICAgICAgIHdyaXRlKCI8L2ludD48L3ZhbHVlPlxuIikKLSAgICAjZGlzcGF0Y2hbaW50XSA9IGR1bXBfaW50Ci0KICAgICBkZWYgZHVtcF9ib29sKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIHdyaXRlKCI8dmFsdWU+PGJvb2xlYW4+IikKICAgICAgICAgd3JpdGUodmFsdWUgYW5kICIxIiBvciAiMCIpCkBAIC01NDUsNiArNTQ1LDkgQEAKICAgICAgICAgd3JpdGUoIjwvaW50PjwvdmFsdWU+XG4iKQogICAgIGRpc3BhdGNoW2ludF0gPSBkdW1wX2xvbmcKIAorICAgICMgYmFja3dhcmQgY29tcGF0aWJsZQorICAgIGR1bXBfaW50ID0gZHVtcF9sb25nCisKICAgICBkZWYgZHVtcF9kb3VibGUoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZG91YmxlPiIpCiAgICAgICAgIHdyaXRlKHJlcHIodmFsdWUpKQpAQCAtNTU3LDYgKzU2MCwxNCBAQAogICAgICAgICB3cml0ZSgiPC9zdHJpbmc+PC92YWx1ZT5cbiIpCiAgICAgZGlzcGF0Y2hbc3RyXSA9IGR1bXBfdW5pY29kZQogCisgICAgZGVmIGR1bXBfYnl0ZXMoc2VsZiwgdmFsdWUsIHdyaXRlKToKKyAgICAgICAgd3JpdGUoIjx2YWx1ZT48YmFzZTY0PlxuIikKKyAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5lbmNvZGVieXRlcyh2YWx1ZSkKKyAgICAgICAgd3JpdGUoZW5jb2RlZC5kZWNvZGUoJ2FzY2lpJykpCisgICAgICAgIHdyaXRlKCI8L2Jhc2U2ND48L3ZhbHVlPlxuIikKKyAgICBkaXNwYXRjaFtieXRlc10gPSBkdW1wX2J5dGVzCisgICAgZGlzcGF0Y2hbYnl0ZWFycmF5XSA9IGR1bXBfYnl0ZXMKKwogICAgIGRlZiBkdW1wX2FycmF5KHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIGkgPSBpZCh2YWx1ZSkKICAgICAgICAgaWYgaSBpbiBzZWxmLm1lbW86CkBAIC01ODksMTIgKzYwMCwxMSBAQAogICAgICAgICBkZWwgc2VsZi5tZW1vW2ldCiAgICAgZGlzcGF0Y2hbZGljdF0gPSBkdW1wX3N0cnVjdAogCi0gICAgaWYgZGF0ZXRpbWU6Ci0gICAgICAgIGRlZiBkdW1wX2RhdGV0aW1lKHNlbGYsIHZhbHVlLCB3cml0ZSk6Ci0gICAgICAgICAgICB3cml0ZSgiPHZhbHVlPjxkYXRlVGltZS5pc284NjAxPiIpCi0gICAgICAgICAgICB3cml0ZShfc3RyZnRpbWUodmFsdWUpKQotICAgICAgICAgICAgd3JpdGUoIjwvZGF0ZVRpbWUuaXNvODYwMT48L3ZhbHVlPlxuIikKLSAgICAgICAgZGlzcGF0Y2hbZGF0ZXRpbWUuZGF0ZXRpbWVdID0gZHVtcF9kYXRldGltZQorICAgIGRlZiBkdW1wX2RhdGV0aW1lKHNlbGYsIHZhbHVlLCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCI8dmFsdWU+PGRhdGVUaW1lLmlzbzg2MDE+IikKKyAgICAgICAgd3JpdGUoX3N0cmZ0aW1lKHZhbHVlKSkKKyAgICAgICAgd3JpdGUoIjwvZGF0ZVRpbWUuaXNvODYwMT48L3ZhbHVlPlxuIikKKyAgICBkaXNwYXRjaFtkYXRldGltZV0gPSBkdW1wX2RhdGV0aW1lCiAKICAgICBkZWYgZHVtcF9pbnN0YW5jZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICAjIGNoZWNrIGZvciBzcGVjaWFsIHdyYXBwZXJzCkBAIC02MjgsNyArNjM4LDcgQEAKICAgICAjIGFuZCBhZ2FpbiwgaWYgeW91IGRvbid0IHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uIGluIGhlcmUsCiAgICAgIyB0aGF0J3MgcGVyZmVjdGx5IG9rLgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLl90eXBlID0gTm9uZQogICAgICAgICBzZWxmLl9zdGFjayA9IFtdCiAgICAgICAgIHNlbGYuX21hcmtzID0gW10KQEAgLTYzNiw5ICs2NDYsOCBAQAogICAgICAgICBzZWxmLl9tZXRob2RuYW1lID0gTm9uZQogICAgICAgICBzZWxmLl9lbmNvZGluZyA9ICJ1dGYtOCIKICAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLl9zdGFjay5hcHBlbmQKLSAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2RhdGV0aW1lCi0gICAgICAgIGlmIHVzZV9kYXRldGltZSBhbmQgbm90IGRhdGV0aW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGhlIGRhdGV0aW1lIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2J1aWx0aW5fdHlwZXMgb3IgdXNlX2RhdGV0aW1lCisgICAgICAgIHNlbGYuX3VzZV9ieXRlcyA9IHVzZV9idWlsdGluX3R5cGVzCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICMgcmV0dXJuIHJlc3BvbnNlIHR1cGxlIGFuZCB0YXJnZXQgbWV0aG9kCkBAIC03NTAsNiArNzU5LDggQEAKICAgICBkZWYgZW5kX2Jhc2U2NChzZWxmLCBkYXRhKToKICAgICAgICAgdmFsdWUgPSBCaW5hcnkoKQogICAgICAgICB2YWx1ZS5kZWNvZGUoZGF0YS5lbmNvZGUoImFzY2lpIikpCisgICAgICAgIGlmIHNlbGYuX3VzZV9ieXRlczoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGF0YQogICAgICAgICBzZWxmLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICAgZGlzcGF0Y2hbImJhc2U2NCJdID0gZW5kX2Jhc2U2NApAQCAtODYxLDIzICs4NzIsMjYgQEAKICMKICMgcmV0dXJuIEEgKHBhcnNlciwgdW5tYXJzaGFsbGVyKSB0dXBsZS4KIAotZGVmIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9RmFsc2UpOgorZGVmIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAiIiJnZXRwYXJzZXIoKSAtPiBwYXJzZXIsIHVubWFyc2hhbGxlcgogCiAgICAgQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBmYXN0ZXN0IGF2YWlsYWJsZSBwYXJzZXIsIGFuZCBhdHRhY2ggaXQKICAgICB0byBhbiB1bm1hcnNoYWxsaW5nIG9iamVjdC4gIFJldHVybiBib3RoIG9iamVjdHMuCiAgICAgIiIiCi0gICAgaWYgdXNlX2RhdGV0aW1lIGFuZCBub3QgZGF0ZXRpbWU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBkYXRldGltZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCiAgICAgaWYgRmFzdFBhcnNlciBhbmQgRmFzdFVubWFyc2hhbGxlcjoKLSAgICAgICAgaWYgdXNlX2RhdGV0aW1lOgorICAgICAgICBpZiB1c2VfYnVpbHRpbl90eXBlczoKICAgICAgICAgICAgIG1rZGF0ZXRpbWUgPSBfZGF0ZXRpbWVfdHlwZQorICAgICAgICAgICAgbWtieXRlcyA9IGJhc2U2NC5kZWNvZGVieXRlcworICAgICAgICBlbGlmIHVzZV9kYXRldGltZToKKyAgICAgICAgICAgIG1rZGF0ZXRpbWUgPSBfZGF0ZXRpbWVfdHlwZQorICAgICAgICAgICAgbWtieXRlcyA9IF9iaW5hcnkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1rZGF0ZXRpbWUgPSBfZGF0ZXRpbWUKLSAgICAgICAgdGFyZ2V0ID0gRmFzdFVubWFyc2hhbGxlcihUcnVlLCBGYWxzZSwgX2JpbmFyeSwgbWtkYXRldGltZSwgRmF1bHQpCisgICAgICAgICAgICBta2J5dGVzID0gX2JpbmFyeQorICAgICAgICB0YXJnZXQgPSBGYXN0VW5tYXJzaGFsbGVyKFRydWUsIEZhbHNlLCBta2J5dGVzLCBta2RhdGV0aW1lLCBGYXVsdCkKICAgICAgICAgcGFyc2VyID0gRmFzdFBhcnNlcih0YXJnZXQpCiAgICAgZWxzZToKLSAgICAgICAgdGFyZ2V0ID0gVW5tYXJzaGFsbGVyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgICAgIHRhcmdldCA9IFVubWFyc2hhbGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLCB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgaWYgRmFzdFBhcnNlcjoKICAgICAgICAgICAgIHBhcnNlciA9IEZhc3RQYXJzZXIodGFyZ2V0KQogICAgICAgICBlbHNlOgpAQCAtOTE1LDcgKzkyOSw3IEBACiAKICAgICAgICAgZW5jb2Rpbmc6IHRoZSBwYWNrZXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVRGLTgpCiAKLSAgICBBbGwgOC1iaXQgc3RyaW5ncyBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXJlIGFzc3VtZWQgdG8gdXNlIHRoZQorICAgIEFsbCBieXRlIHN0cmluZ3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlIGFyZSBhc3N1bWVkIHRvIHVzZSB0aGUKICAgICBwYWNrZXQgZW5jb2RpbmcuICBVbmljb2RlIHN0cmluZ3MgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkLAogICAgIHdoZXJlIG5lY2Vzc2FyeS4KICAgICAiIiIKQEAgLTk3NCw3ICs5ODgsNyBAQAogIyAgICAgKE5vbmUgaWYgbm90IHByZXNlbnQpLgogIyBAc2VlIEZhdWx0CiAKLWRlZiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorZGVmIGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICIiImRhdGEgLT4gdW5tYXJzaGFsbGVkIGRhdGEsIG1ldGhvZCBuYW1lCiAKICAgICBDb252ZXJ0IGFuIFhNTC1SUEMgcGFja2V0IHRvIHVubWFyc2hhbGxlZCBkYXRhIHBsdXMgYSBtZXRob2QKQEAgLTk4Myw3ICs5OTcsNyBAQAogICAgIElmIHRoZSBYTUwtUlBDIHBhY2tldCByZXByZXNlbnRzIGEgZmF1bHQgY29uZGl0aW9uLCB0aGlzIGZ1bmN0aW9uCiAgICAgcmFpc2VzIGEgRmF1bHQgZXhjZXB0aW9uLgogICAgICIiIgotICAgIHAsIHUgPSBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICBwLCB1ID0gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgIHAuZmVlZChkYXRhKQogICAgIHAuY2xvc2UoKQogICAgIHJldHVybiB1LmNsb3NlKCksIHUuZ2V0bWV0aG9kbmFtZSgpCkBAIC0xMDg1LDcgKzEwOTksNyBAQAogICAgICIiIkhhbmRsZXMgYW4gSFRUUCB0cmFuc2FjdGlvbiB0byBhbiBYTUwtUlBDIHNlcnZlci4iIiIKIAogICAgICMgY2xpZW50IGlkZW50aWZpZXIgKG1heSBiZSBvdmVycmlkZGVuKQotICAgIHVzZXJfYWdlbnQgPSAieG1scnBjbGliLnB5LyVzIChieSB3d3cucHl0aG9ud2FyZS5jb20pIiAlIF9fdmVyc2lvbl9fCisgICAgdXNlcl9hZ2VudCA9ICJQeXRob24teG1scnBjLyVzIiAlIF9fdmVyc2lvbl9fCiAKICAgICAjaWYgdHJ1ZSwgd2UnbGwgcmVxdWVzdCBnemlwIGVuY29kaW5nCiAgICAgYWNjZXB0X2d6aXBfZW5jb2RpbmcgPSBUcnVlCkBAIC0xMDk1LDggKzExMDksOSBAQAogICAgICMgdGhhdCB0aGV5IGNhbiBkZWNvZGUgc3VjaCBhIHJlcXVlc3QKICAgICBlbmNvZGVfdGhyZXNob2xkID0gTm9uZSAjTm9uZSA9IGRvbid0IGVuY29kZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLl91c2VfZGF0ZXRpbWUgPSB1c2VfZGF0ZXRpbWUKKyAgICAgICAgc2VsZi5fdXNlX2J1aWx0aW5fdHlwZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gKE5vbmUsIE5vbmUpCiAgICAgICAgIHNlbGYuX2V4dHJhX2hlYWRlcnMgPSBbXQogCkBAIC0xMTU3LDcgKzExNzIsOCBAQAogCiAgICAgZGVmIGdldHBhcnNlcihzZWxmKToKICAgICAgICAgIyBnZXQgcGFyc2VyIGFuZCB1bm1hcnNoYWxsZXIKLSAgICAgICAgcmV0dXJuIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9c2VsZi5fdXNlX2RhdGV0aW1lKQorICAgICAgICByZXR1cm4gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT1zZWxmLl91c2VfZGF0ZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9c2VsZi5fdXNlX2J1aWx0aW5fdHlwZXMpCiAKICAgICAjIwogICAgICMgR2V0IGF1dGhvcml6YXRpb24gaW5mbyBmcm9tIGhvc3QgcGFyYW1ldGVyCkBAIC0xMTc1LDcgKzExOTEsNiBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKGhvc3QsIHR1cGxlKToKICAgICAgICAgICAgIGhvc3QsIHg1MDkgPSBob3N0CiAKLSAgICAgICAgaW1wb3J0IHVybGxpYi5wYXJzZQogICAgICAgICBhdXRoLCBob3N0ID0gdXJsbGliLnBhcnNlLnNwbGl0dXNlcihob3N0KQogCiAgICAgICAgIGlmIGF1dGg6CkBAIC0xMzY0LDExICsxMzc5LDEwIEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgICMgZXN0YWJsaXNoIGEgImxvZ2ljYWwiIHNlcnZlciBjb25uZWN0aW9uCiAKICAgICAgICAgIyBnZXQgdGhlIHVybAotICAgICAgICBpbXBvcnQgdXJsbGliLnBhcnNlCiAgICAgICAgIHR5cGUsIHVyaSA9IHVybGxpYi5wYXJzZS5zcGxpdHR5cGUodXJpKQogICAgICAgICBpZiB0eXBlIG5vdCBpbiAoImh0dHAiLCAiaHR0cHMiKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoInVuc3VwcG9ydGVkIFhNTC1SUEMgcHJvdG9jb2wiKQpAQCAtMTM3OCw5ICsxMzkyLDExIEBACiAKICAgICAgICAgaWYgdHJhbnNwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgICBpZiB0eXBlID09ICJodHRwcyI6Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0ID0gU2FmZVRyYW5zcG9ydCh1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBTYWZlVHJhbnNwb3J0CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IFRyYW5zcG9ydCh1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBUcmFuc3BvcnQKKyAgICAgICAgICAgIHRyYW5zcG9ydCA9IGhhbmRsZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9dXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIHNlbGYuX190cmFuc3BvcnQgPSB0cmFuc3BvcnQKIAogICAgICAgICBzZWxmLl9fZW5jb2RpbmcgPSBlbmNvZGluZyBvciAndXRmLTgnCmRpZmYgLS1naXQgYS9MaWIveG1scnBjL3NlcnZlci5weSBiL0xpYi94bWxycGMvc2VydmVyLnB5CmluZGV4IGZkMTcwMjYuLjU0ZTE3MjYgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvc2VydmVyLnB5CisrKyBiL0xpYi94bWxycGMvc2VydmVyLnB5CkBAIC0xNjAsMTEgKzE2MCwxMyBAQAogICAgIGNhbiBiZSBpbnN0YW5jZWQgd2hlbiB1c2VkIGJ5IHRoZSBNdWx0aVBhdGhYTUxSUENTZXJ2ZXIKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLmZ1bmNzID0ge30KICAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKICAgICAgICAgc2VsZi5hbGxvd19ub25lID0gYWxsb3dfbm9uZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JworICAgICAgICBzZWxmLnVzZV9idWlsdGluX3R5cGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKIAogICAgIGRlZiByZWdpc3Rlcl9pbnN0YW5jZShzZWxmLCBpbnN0YW5jZSwgYWxsb3dfZG90dGVkX25hbWVzPUZhbHNlKToKICAgICAgICAgIiIiUmVnaXN0ZXJzIGFuIGluc3RhbmNlIHRvIHJlc3BvbmQgdG8gWE1MLVJQQyByZXF1ZXN0cy4KQEAgLTI0NSw3ICsyNDcsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXJhbXMsIG1ldGhvZCA9IGxvYWRzKGRhdGEpCisgICAgICAgICAgICBwYXJhbXMsIG1ldGhvZCA9IGxvYWRzKGRhdGEsIHVzZV9idWlsdGluX3R5cGVzPXNlbGYudXNlX2J1aWx0aW5fdHlwZXMpCiAKICAgICAgICAgICAgICMgZ2VuZXJhdGUgcmVzcG9uc2UKICAgICAgICAgICAgIGlmIGRpc3BhdGNoX21ldGhvZCBpcyBub3QgTm9uZToKQEAgLTU3NSwxMCArNTc3LDExIEBACiAgICAgX3NlbmRfdHJhY2ViYWNrX2hlYWRlciA9IEZhbHNlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpOgorICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgIHNlbGYubG9nUmVxdWVzdHMgPSBsb2dSZXF1ZXN0cwogCi0gICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcpCisgICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBiaW5kX2FuZF9hY3RpdmF0ZSkKIAogICAgICAgICAjIFtCdWcgIzEyMjI3OTBdIElmIHBvc3NpYmxlLCBzZXQgY2xvc2Utb24tZXhlYyBmbGFnOyBpZiBhCkBAIC01OTgsMTAgKzYwMSwxMSBAQAogICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1ZXN0SGFuZGxlciBhY2NlcHRzIHRoZSBwYXRocyBpbiBxdWVzdGlvbi4KICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpOgorICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAKICAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cywgYWxsb3dfbm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2hlcnMgPSB7fQogICAgICAgICBzZWxmLmFsbG93X25vbmUgPSBhbGxvd19ub25lCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZyBvciAndXRmLTgnCkBAIC02MzEsOCArNjM1LDggQEAKIGNsYXNzIENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIpOgogICAgICIiIlNpbXBsZSBoYW5kbGVyIGZvciBYTUwtUlBDIGRhdGEgcGFzc2VkIHRocm91Z2ggQ0dJLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CisgICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIHVzZV9idWlsdGluX3R5cGVzKQogCiAgICAgZGVmIGhhbmRsZV94bWxycGMoc2VsZiwgcmVxdWVzdF90ZXh0KToKICAgICAgICAgIiIiSGFuZGxlIGEgc2luZ2xlIFhNTC1SUEMgcmVxdWVzdCIiIgpAQCAtOTI3LDkgKzkzMSwxMCBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLAogICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBTaW1wbGVYTUxSUENTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIGJpbmRfYW5kX2FjdGl2YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIFhNTFJQQ0RvY0dlbmVyYXRvci5fX2luaXRfXyhzZWxmKQogCiBjbGFzcyBEb2NDR0lYTUxSUENSZXF1ZXN0SGFuZGxlciggICBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlciwKQEAgLTk1OSw4ICs5NjQsMTMgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHByaW50KCdSdW5uaW5nIFhNTC1SUEMgc2VydmVyIG9uIHBvcnQgODAwMCcpCiAgICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpCiAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKLSAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICB0cnk6CisgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgc3lzLmV4aXQoMCkKZGlmZiAtLWdpdCBhL0xpYi96aXBmaWxlLnB5IGIvTGliL3ppcGZpbGUucHkKaW5kZXggMzJjZjQyYy4uZGNlYmY3MiAxMDA2NDQKLS0tIGEvTGliL3ppcGZpbGUucHkKKysrIGIvTGliL3ppcGZpbGUucHkKQEAgLTIyLDcgKzIyLDE4IEBACiAgICAgemxpYiA9IE5vbmUKICAgICBjcmMzMiA9IGJpbmFzY2lpLmNyYzMyCiAKLV9fYWxsX18gPSBbIkJhZFppcEZpbGUiLCAiQmFkWmlwZmlsZSIsICJlcnJvciIsICJaSVBfU1RPUkVEIiwgIlpJUF9ERUZMQVRFRCIsCit0cnk6CisgICAgaW1wb3J0IGJ6MiAjIFdlIG1heSBuZWVkIGl0cyBjb21wcmVzc2lvbiBtZXRob2QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYSAjIFdlIG1heSBuZWVkIGl0cyBjb21wcmVzc2lvbiBtZXRob2QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQorCitfX2FsbF9fID0gWyJCYWRaaXBGaWxlIiwgIkJhZFppcGZpbGUiLCAiZXJyb3IiLAorICAgICAgICAgICAiWklQX1NUT1JFRCIsICJaSVBfREVGTEFURUQiLCAiWklQX0JaSVAyIiwgIlpJUF9MWk1BIiwKICAgICAgICAgICAgImlzX3ppcGZpbGUiLCAiWmlwSW5mbyIsICJaaXBGaWxlIiwgIlB5WmlwRmlsZSIsICJMYXJnZVppcEZpbGUiXQogCiBjbGFzcyBCYWRaaXBGaWxlKEV4Y2VwdGlvbik6CkBAIC00NSw4ICs1NiwxNyBAQAogIyBjb25zdGFudHMgZm9yIFppcCBmaWxlIGNvbXByZXNzaW9uIG1ldGhvZHMKIFpJUF9TVE9SRUQgPSAwCiBaSVBfREVGTEFURUQgPSA4CitaSVBfQlpJUDIgPSAxMgorWklQX0xaTUEgPSAxNAogIyBPdGhlciBaSVAgY29tcHJlc3Npb24gbWV0aG9kcyBub3Qgc3VwcG9ydGVkCiAKK0RFRkFVTFRfVkVSU0lPTiA9IDIwCitaSVA2NF9WRVJTSU9OID0gNDUKK0JaSVAyX1ZFUlNJT04gPSA0NgorTFpNQV9WRVJTSU9OID0gNjMKKyMgd2UgcmVjb2duaXplIChidXQgbm90IG5lY2Vzc2FyaWx5IHN1cHBvcnQpIGFsbCBmZWF0dXJlcyB1cCB0byB0aGF0IHZlcnNpb24KK01BWF9FWFRSQUNUX1ZFUlNJT04gPSA2MworCiAjIEJlbG93IGFyZSBzb21lIGZvcm1hdHMgYW5kIGFzc29jaWF0ZWQgZGF0YSBmb3IgcmVhZGluZy93cml0aW5nIGhlYWRlcnMgdXNpbmcKICMgdGhlIHN0cnVjdCBtb2R1bGUuICBUaGUgbmFtZXMgYW5kIHN0cnVjdHVyZXMgb2YgaGVhZGVycy9yZWNvcmRzIGFyZSB0aG9zZSB1c2VkCiAjIGluIHRoZSBQS1dBUkUgZGVzY3JpcHRpb24gb2YgdGhlIFpJUCBmaWxlIGZvcm1hdDoKQEAgLTMxMyw4ICszMzMsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBBc3N1bWUgZXZlcnl0aGluZyBlbHNlIGlzIHVuaXgteQogICAgICAgICAgICAgc2VsZi5jcmVhdGVfc3lzdGVtID0gMyAgICAgICAgICAjIFN5c3RlbSB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCi0gICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSAyMCAgICAgICAgIyBWZXJzaW9uIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKLSAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSAyMCAgICAgICAjIFZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgYXJjaGl2ZQorICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gREVGQVVMVF9WRVJTSU9OICAjIFZlcnNpb24gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQorICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IERFRkFVTFRfVkVSU0lPTiAjIFZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgYXJjaGl2ZQogICAgICAgICBzZWxmLnJlc2VydmVkID0gMCAgICAgICAgICAgICAgICMgTXVzdCBiZSB6ZXJvCiAgICAgICAgIHNlbGYuZmxhZ19iaXRzID0gMCAgICAgICAgICAgICAgIyBaSVAgZmxhZyBiaXRzCiAgICAgICAgIHNlbGYudm9sdW1lID0gMCAgICAgICAgICAgICAgICAgIyBWb2x1bWUgbnVtYmVyIG9mIGZpbGUgaGVhZGVyCkBAIC0zNDEsNiArMzYxLDcgQEAKIAogICAgICAgICBleHRyYSA9IHNlbGYuZXh0cmEKIAorICAgICAgICBtaW5fdmVyc2lvbiA9IDAKICAgICAgICAgaWYgemlwNjQgaXMgTm9uZToKICAgICAgICAgICAgIHppcDY0ID0gZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCiAgICAgICAgIGlmIHppcDY0OgpAQCAtMzU0LDkgKzM3NSwxNSBAQAogICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gdGhlIFpJUDY0IGV4dGVuc2lvbgogICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgogICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gbWF4KDQ1LCBzZWxmLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBtYXgoNDUsIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorICAgICAgICBlbGlmIHNlbGYuY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KExaTUFfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisKKyAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCBzZWxmLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gc2VsZi5fZW5jb2RlRmlsZW5hbWVGbGFncygpCiAgICAgICAgIGhlYWRlciA9IHN0cnVjdC5wYWNrKHN0cnVjdEZpbGVIZWFkZXIsIHN0cmluZ0ZpbGVIZWFkZXIsCiAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uLCBzZWxmLnJlc2VydmVkLCBmbGFnX2JpdHMsCkBAIC00NjcsNiArNDk0LDU3IEBACiAgICAgICAgIHJldHVybiBjCiAKIAorY2xhc3MgTFpNQUNvbXByZXNzb3I6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2NvbXAgPSBOb25lCisKKyAgICBkZWYgX2luaXQoc2VsZik6CisgICAgICAgIHByb3BzID0gbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsnaWQnOiBsem1hLkZJTFRFUl9MWk1BMX0pCisgICAgICAgIHNlbGYuX2NvbXAgPSBsem1hLkxaTUFDb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1bCisgICAgICAgICAgICAgICAgbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLCBwcm9wcykKKyAgICAgICAgXSkKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCc8QkJIJywgOSwgNCwgbGVuKHByb3BzKSkgKyBwcm9wcworCisgICAgZGVmIGNvbXByZXNzKHNlbGYsIGRhdGEpOgorICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faW5pdCgpICsgc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQorICAgICAgICByZXR1cm4gc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faW5pdCgpICsgc2VsZi5fY29tcC5mbHVzaCgpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wLmZsdXNoKCkKKworCitjbGFzcyBMWk1BRGVjb21wcmVzc29yOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kZWNvbXAgPSBOb25lCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKyAgICAgICAgc2VsZi5lb2YgPSBGYWxzZQorCisgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIHNlbGYuX2RlY29tcCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCisgICAgICAgICAgICBpZiBsZW4oc2VsZi5fdW5jb25zdW1lZCkgPD0gNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBwc2l6ZSwgPSBzdHJ1Y3QudW5wYWNrKCc8SCcsIHNlbGYuX3VuY29uc3VtZWRbMjo0XSkKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0ICsgcHNpemU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJworCisgICAgICAgICAgICBzZWxmLl9kZWNvbXAgPSBsem1hLkxaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWRbNDo0ICsgcHNpemVdKQorICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl91bmNvbnN1bWVkWzQgKyBwc2l6ZTpdCisgICAgICAgICAgICBkZWwgc2VsZi5fdW5jb25zdW1lZAorCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2RlY29tcC5kZWNvbXByZXNzKGRhdGEpCisgICAgICAgIHNlbGYuZW9mID0gc2VsZi5fZGVjb21wLmVvZgorICAgICAgICByZXR1cm4gcmVzdWx0CisKKwogY29tcHJlc3Nvcl9uYW1lcyA9IHsKICAgICAwOiAnc3RvcmUnLAogICAgIDE6ICdzaHJpbmsnLApAQCAtNDg3LDYgKzU2NSw1MyBAQAogICAgIDk4OiAncHBtZCcsCiB9CiAKK2RlZiBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pOgorICAgIGlmIGNvbXByZXNzaW9uID09IFpJUF9TVE9SRUQ6CisgICAgICAgIHBhc3MKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgaWYgbm90IHpsaWI6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIHpsaWIgbW9kdWxlIikKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9CWklQMjoKKyAgICAgICAgaWYgbm90IGJ6MjoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgYnoyIG1vZHVsZSIpCisgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfTFpNQToKKyAgICAgICAgaWYgbm90IGx6bWE6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGx6bWEgbW9kdWxlIikKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQorCisKK2RlZiBfZ2V0X2NvbXByZXNzb3IoY29tcHJlc3NfdHlwZSk6CisgICAgaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6CisgICAgICAgIHJldHVybiB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAorICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gYnoyLkJaMkNvbXByZXNzb3IoKQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgcmV0dXJuIExaTUFDb21wcmVzc29yKCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfZ2V0X2RlY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKKyAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgIHJldHVybiBOb25lCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgcmV0dXJuIHpsaWIuZGVjb21wcmVzc29iaigtMTUpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgcmV0dXJuIGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgcmV0dXJuIExaTUFEZWNvbXByZXNzb3IoKQorICAgIGVsc2U6CisgICAgICAgIGRlc2NyID0gY29tcHJlc3Nvcl9uYW1lcy5nZXQoY29tcHJlc3NfdHlwZSkKKyAgICAgICAgaWYgZGVzY3I6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJjb21wcmVzc2lvbiB0eXBlICVkICglcykiICUgKGNvbXByZXNzX3R5cGUsIGRlc2NyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKGNvbXByZXNzX3R5cGUsKSkKKwogCiBjbGFzcyBaaXBFeHRGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgICAiIiJGaWxlLWxpa2Ugb2JqZWN0IGZvciByZWFkaW5nIGFuIGFyY2hpdmUgbWVtYmVyLgpAQCAtNTA5LDE5ICs2MzQsMTIgQEAKICAgICAgICAgc2VsZi5fY2xvc2VfZmlsZW9iaiA9IGNsb3NlX2ZpbGVvYmoKIAogICAgICAgICBzZWxmLl9jb21wcmVzc190eXBlID0gemlwaW5mby5jb21wcmVzc190eXBlCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgPSB6aXBpbmZvLmNvbXByZXNzX3NpemUKICAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQorICAgICAgICBzZWxmLl9sZWZ0ID0gemlwaW5mby5maWxlX3NpemUKIAotICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHpsaWIuZGVjb21wcmVzc29iaigtMTUpCi0gICAgICAgIGVsaWYgc2VsZi5fY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEOgotICAgICAgICAgICAgZGVzY3IgPSBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLl9jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgZGVzY3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCAoJXMpIiAlIChzZWxmLl9jb21wcmVzc190eXBlLCBkZXNjcikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKHNlbGYuX2NvbXByZXNzX3R5cGUsKSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBfZ2V0X2RlY29tcHJlc3NvcihzZWxmLl9jb21wcmVzc190eXBlKQogCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCkBAIC01OTYsNyArNzE0LDExIEBACiAgICAgICAgICIiIlJldHVybnMgYnVmZmVyZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIHBvc2l0aW9uLiIiIgogICAgICAgICBpZiBuID4gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJlYWQobikKLSAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCisgICAgICAgICAgICBpZiBsZW4oY2h1bmspID4gc2VsZi5fb2Zmc2V0OgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBjaHVuayArIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0KKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCiAKICAgICAgICAgIyBSZXR1cm4gdXAgdG8gNTEyIGJ5dGVzIHRvIHJlZHVjZSBhbGxvY2F0aW9uIG92ZXJoZWFkIGZvciB0aWdodCBsb29wcy4KICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OiBzZWxmLl9vZmZzZXQgKyA1MTJdCkBAIC02MDgsODAgKzczMCwxMjMgQEAKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHVwIHRvIG4gYnl0ZXMuCiAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4uCiAgICAgICAgICIiIgotICAgICAgICBidWYgPSBiJycKLSAgICAgICAgaWYgbiBpcyBOb25lOgotICAgICAgICAgICAgbiA9IC0xCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBuIDwgMDoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShuKQotICAgICAgICAgICAgZWxpZiBuID4gbGVuKGJ1Zik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobiAtIGxlbihidWYpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fZW9mOgorICAgICAgICAgICAgICAgIGJ1ZiArPSBzZWxmLl9yZWFkMShzZWxmLk1BWF9OKQorICAgICAgICAgICAgcmV0dXJuIGJ1ZgogCi0gICAgZGVmIF91cGRhdGVfY3JjKHNlbGYsIG5ld2RhdGEsIGVvZik6CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICB3aGlsZSBuID4gMCBhbmQgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBidWYgKz0gZGF0YVs6bl0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmICs9IGRhdGEKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfdXBkYXRlX2NyYyhzZWxmLCBuZXdkYXRhKToKICAgICAgICAgIyBVcGRhdGUgdGhlIENSQyB1c2luZyB0aGUgZ2l2ZW4gZGF0YS4KICAgICAgICAgaWYgc2VsZi5fZXhwZWN0ZWRfY3JjIGlzIE5vbmU6CiAgICAgICAgICAgICAjIE5vIG5lZWQgdG8gY29tcHV0ZSB0aGUgQ1JDIGlmIHdlIGRvbid0IGhhdmUgYSByZWZlcmVuY2UgdmFsdWUKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKSAmIDB4ZmZmZmZmZmYKICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKLSAgICAgICAgaWYgZW9mIGFuZCBzZWxmLl9ydW5uaW5nX2NyYyAhPSBzZWxmLl9leHBlY3RlZF9jcmM6CisgICAgICAgIGlmIHNlbGYuX2VvZiBhbmQgc2VsZi5fcnVubmluZ19jcmMgIT0gc2VsZi5fZXhwZWN0ZWRfY3JjOgogICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQmFkIENSQy0zMiBmb3IgZmlsZSAlciIgJSBzZWxmLm5hbWUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgbik6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gbiBieXRlcyB3aXRoIGF0IG1vc3Qgb25lIHJlYWQoKSBzeXN0ZW0gY2FsbC4iIiIKIAotICAgICAgICAjIFNpbXBsaWZ5IGFsZ29yaXRobSAoYnJhbmNoaW5nKSBieSB0cmFuc2Zvcm1pbmcgbmVnYXRpdmUgbiB0byBsYXJnZSBuLgotICAgICAgICBpZiBuIDwgMCBvciBuIGlzIE5vbmU6Ci0gICAgICAgICAgICBuID0gc2VsZi5NQVhfTgorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEoc2VsZi5NQVhfTikKKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgICAgICByZXR1cm4gYnVmCiAKLSAgICAgICAgIyBCeXRlcyBhdmFpbGFibGUgaW4gcmVhZCBidWZmZXIuCi0gICAgICAgIGxlbl9yZWFkYnVmZmVyID0gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICBpZiBuID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVs6bl0KKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfcmVhZDEoc2VsZiwgbik6CisgICAgICAgICMgUmVhZCB1cCB0byBuIGNvbXByZXNzZWQgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCisgICAgICAgICMgZGVjcnlwdCBhbmQgZGVjb21wcmVzcyB0aGVtLgorICAgICAgICBpZiBzZWxmLl9lb2Ygb3IgbiA8PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJwogCiAgICAgICAgICMgUmVhZCBmcm9tIGZpbGUuCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPiAwIGFuZCBuID4gbGVuX3JlYWRidWZmZXIgKyBsZW4oc2VsZi5fdW5jb25zdW1lZCk6Ci0gICAgICAgICAgICBuYnl0ZXMgPSBuIC0gbGVuX3JlYWRidWZmZXIgLSBsZW4oc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1heChuYnl0ZXMsIHNlbGYuTUlOX1JFQURfU0laRSkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1pbihuYnl0ZXMsIHNlbGYuX2NvbXByZXNzX2xlZnQpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICAgICAgIyMgSGFuZGxlIHVuY29uc3VtZWQgZGF0YS4KKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsCisgICAgICAgICAgICBpZiBuID4gbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fcmVhZDIobiAtIGxlbihkYXRhKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMihuKQogCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG5ieXRlcykKLSAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gbGVuKGRhdGEpCi0KLSAgICAgICAgICAgIGlmIGRhdGEgYW5kIHNlbGYuX2RlY3J5cHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfY3JjKGRhdGEsIGVvZj0oc2VsZi5fY29tcHJlc3NfbGVmdD09MCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFByZXBhcmUgZGVmbGF0ZWQgYnl0ZXMgZm9yIGRlY29tcHJlc3Npb24uCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICAgICAgIyBIYW5kbGUgdW5jb25zdW1lZCBkYXRhLgotICAgICAgICBpZiAobGVuKHNlbGYuX3VuY29uc3VtZWQpID4gMCBhbmQgbiA+IGxlbl9yZWFkYnVmZmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQsCi0gICAgICAgICAgICAgICAgbWF4KG4gLSBsZW5fcmVhZGJ1ZmZlciwgc2VsZi5NSU5fUkVBRF9TSVpFKQotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgZW9mID0gbGVuKHNlbGYuX3VuY29uc3VtZWQpID09IDAgYW5kIHNlbGYuX2NvbXByZXNzX2xlZnQgPT0gMAotICAgICAgICAgICAgaWYgZW9mOgorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKKyAgICAgICAgZWxpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgICAgIG4gPSBtYXgobiwgc2VsZi5NSU5fUkVBRF9TSVpFKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGRhdGEsIG4pCisgICAgICAgICAgICBzZWxmLl9lb2YgPSAoc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsKQorICAgICAgICAgICAgaWYgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fZW9mID0gc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvciBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKIAotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhLCBlb2Y9ZW9mKQotICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgIGRhdGEgPSBkYXRhWzpzZWxmLl9sZWZ0XQorICAgICAgICBzZWxmLl9sZWZ0IC09IGxlbihkYXRhKQorICAgICAgICBpZiBzZWxmLl9sZWZ0IDw9IDA6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCisgICAgICAgIHNlbGYuX3VwZGF0ZV9jcmMoZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKIAotICAgICAgICAjIFJlYWQgZnJvbSBidWZmZXIuCi0gICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDogc2VsZi5fb2Zmc2V0ICsgbl0KLSAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgIGRlZiBfcmVhZDIoc2VsZiwgbik6CisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICBuID0gbWF4KG4sIHNlbGYuTUlOX1JFQURfU0laRSkKKyAgICAgICAgbiA9IG1pbihuLCBzZWxmLl9jb21wcmVzc19sZWZ0KQorCisgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlb2JqLnJlYWQobikKKyAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCAtPSBsZW4oZGF0YSkKKworICAgICAgICBpZiBzZWxmLl9kZWNyeXB0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CkBAIC03MDAsNyArODY1LDggQEAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KICAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KLSAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pIG9yIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYikuCisgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKKyAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgICAgICAgICAgICAgICBuZWVkZWQsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoaXMgd291bGQKICAgICAgICAgICAgICAgICBiZSBuZWNlc3NhcnkuCkBAIC03MTQsMTQgKzg4MCw3IEBACiAgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgImEiKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignWmlwRmlsZSgpIHJlcXVpcmVzIG1vZGUgInIiLCAidyIsIG9yICJhIicpCiAKLSAgICAgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfREVGTEFURUQ6Ci0gICAgICAgICAgICBpZiBub3QgemxpYjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQogCiAgICAgICAgIHNlbGYuX2FsbG93WmlwNjQgPSBhbGxvd1ppcDY0CiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IEZhbHNlCkBAIC04NDAsNiArOTk5LDkgQEAKICAgICAgICAgICAgICh4LmNyZWF0ZV92ZXJzaW9uLCB4LmNyZWF0ZV9zeXN0ZW0sIHguZXh0cmFjdF92ZXJzaW9uLCB4LnJlc2VydmVkLAogICAgICAgICAgICAgICAgIHguZmxhZ19iaXRzLCB4LmNvbXByZXNzX3R5cGUsIHQsIGQsCiAgICAgICAgICAgICAgICAgeC5DUkMsIHguY29tcHJlc3Nfc2l6ZSwgeC5maWxlX3NpemUpID0gY2VudGRpclsxOjEyXQorICAgICAgICAgICAgaWYgeC5leHRyYWN0X3ZlcnNpb24gPiBNQVhfRVhUUkFDVF9WRVJTSU9OOgorICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInppcCBmaWxlIHZlcnNpb24gJS4xZiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHguZXh0cmFjdF92ZXJzaW9uIC8gMTApKQogICAgICAgICAgICAgeC52b2x1bWUsIHguaW50ZXJuYWxfYXR0ciwgeC5leHRlcm5hbF9hdHRyID0gY2VudGRpclsxNToxOF0KICAgICAgICAgICAgICMgQ29udmVydCBkYXRlL3RpbWUgY29kZSB0byAoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWluLCBzZWMpCiAgICAgICAgICAgICB4Ll9yYXdfdGltZSA9IHQKQEAgLTg2MiwxMCArMTAyNCw3IEBACiAKICAgICBkZWYgbmFtZWxpc3Qoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZSBuYW1lcyBpbiB0aGUgYXJjaGl2ZS4iIiIKLSAgICAgICAgbCA9IFtdCi0gICAgICAgIGZvciBkYXRhIGluIHNlbGYuZmlsZWxpc3Q6Ci0gICAgICAgICAgICBsLmFwcGVuZChkYXRhLmZpbGVuYW1lKQotICAgICAgICByZXR1cm4gbAorICAgICAgICByZXR1cm4gW2RhdGEuZmlsZW5hbWUgZm9yIGRhdGEgaW4gc2VsZi5maWxlbGlzdF0KIAogICAgIGRlZiBpbmZvbGlzdChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjbGFzcyBaaXBJbmZvIGluc3RhbmNlcyBmb3IgZmlsZXMgaW4gdGhlCkBAIC05NzIsNiArMTEzMSwxNCBAQAogICAgICAgICAgICAgaWYgZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXToKICAgICAgICAgICAgICAgICB6ZWZfZmlsZS5yZWFkKGZoZWFkZXJbX0ZIX0VYVFJBX0ZJRUxEX0xFTkdUSF0pCiAKKyAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MjA6CisgICAgICAgICAgICAgICAgIyBaaXAgMi43OiBjb21wcmVzc2VkIHBhdGNoZWQgZGF0YQorICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzZWQgcGF0Y2hlZCBkYXRhIChmbGFnIGJpdCA1KSIpCisKKyAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4NDA6CisgICAgICAgICAgICAgICAgIyBzdHJvbmcgZW5jcnlwdGlvbgorICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN0cm9uZyBlbmNyeXB0aW9uIChmbGFnIGJpdCA2KSIpCisKICAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4ODAwOgogICAgICAgICAgICAgICAgICMgVVRGLTggZmlsZW5hbWUKICAgICAgICAgICAgICAgICBmbmFtZV9zdHIgPSBmbmFtZS5kZWNvZGUoInV0Zi04IikKQEAgLTEwODgsMTEgKzEyNTUsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKLSAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQgYW5kIG5vdCB6bGliOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlIG5vdCBpbiAoWklQX1NUT1JFRCwgWklQX0RFRkxBVEVEKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIF9jaGVja19jb21wcmVzc2lvbih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICBpZiB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgogICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKQEAgLTExMzAsNiArMTI5Myw5IEBACiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKICAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAogICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCiAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKQEAgLTExNDMsNiArMTMwOSw3IEBACiAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCiAgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCkBAIC0xMTUxLDExICsxMzE4LDYgQEAKICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAogICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgICAgICBjbXByID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY21wciA9IE5vbmUKICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKQEAgLTEyMTQsMTMgKzEzNzYsMTUgQEAKICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAogICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQogICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZiAgICAgICAjIENSQy0zMiBjaGVja3N1bQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLTE1KQorICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICBpZiBjbzoKICAgICAgICAgICAgIGRhdGEgPSBjby5jb21wcmVzcyhkYXRhKSArIGNvLmZsdXNoKCkKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKICAgICAgICAgZWxzZToKQEAgLTEyNzcsMTggKzE0NDEsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSB6aW5mby5oZWFkZXJfb2Zmc2V0CiAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCisgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgICAgICBpZiBleHRyYToKICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSBzdHJ1Y3QucGFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxISCcgKyAnUScqbGVuKGV4dHJhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQogCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgoNDUsIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gbWF4KDQ1LCB6aW5mby5jcmVhdGVfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IHppbmZvLmV4dHJhY3RfdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSB6aW5mby5jcmVhdGVfdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChCWklQMl9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICAgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gemluZm8uX2VuY29kZUZpbGVuYW1lRmxhZ3MoKQogICAgICAgICAgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CmluZGV4IGRlMmY1Y2IuLmZhMDRiOTcgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CkBAIC04LDcwICs4LDEyNSBAQAogYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYCAKIGFuZCBgYHNjcmlwdHNgYCBhbmQgcGxhY2VkIHRoYXQgb24gYSBgYC5kbWdgYCBkaXNrIGltYWdlLgogCi1BcyBvZiBQeXRob24gMi43LnggYW5kIDMuMiwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKLWZvciBlYWNoIHJlbGVhc2U6CitBcyBvZiBQeXRob24gMy4zLjAsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCitmb3IgZWFjaCByZWxlYXNlLgogCiAxLiAgMzItYml0LW9ubHksIGkzODYgYW5kIFBQQyB1bml2ZXJzYWwsIGNhcGFibGUgb24gcnVubmluZyBvbiBhbGwgbWFjaGluZXMKLSAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42OjoKKyAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuNSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuODo6CiAKLSAgICAgICAgcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCisgICAgICAgIC91c3IvYmluL3B5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAorICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsgXAorICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9MzItYml0IFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC41CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IEludGVsIG9yIFBQQworICAgICAgICAqIFhjb2RlIDMuMS40CisgICAgICAgICogYGBNYWNPU1gxMC41YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNWBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogTWFjIE9TIFggMTAuNi44IHdpdGggWGNvZGUgMy4yLjYKKyAgICAgICAgICAgIC0gbmVlZCB0byBjaGFuZ2UgYGAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy97VGNsLFRrfS5mcmFtZXdvcmsvVmVyc2lvbi9DdXJyZW50YGAgdG8gYGA4LjRgYAorICAgICAgICAqIE5vdGUgWGNvZGUgNC4qIGRvZXMgbm90IHN1cHBvcnQgYnVpbGRpbmcgZm9yIFBQQyBzbyBjYW5ub3QgYmUgdXNlZCBmb3IgdGhpcyBidWlsZAorCisyLiAgNjQtYml0IC8gMzItYml0LCB4ODZfNjQgYW5kIGkzODYgdW5pdmVyc2FsLCBmb3IgT1MgWCAxMC42IChhbmQgbGF0ZXIpOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjYuc2RrIFwKKyAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPWludGVsIFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC42CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuOSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKKworICAgIC0gcmVjb21tZW5kZWQgYnVpbGQgZW52aXJvbm1lbnQ6CisKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42LjggKG9yIGxhdGVyKQorICAgICAgICAqIFhjb2RlIDMuMi42CisgICAgICAgICogYGBNYWNPU1gxMC42YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNmBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNiBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogbm9uZS4gIFhjb2RlIDQueCBjdXJyZW50bHkgc3VwcGxpZXMgdHdvIEMgY29tcGlsZXJzLgorICAgICAgICAgIGBgbGx2bS1nY2MtNC4yLjFgYCBoYXMgYmVlbiBmb3VuZCB0byBtaXNjb21waWxlIFB5dGhvbiAzLjMueCBhbmQKKyAgICAgICAgICBwcm9kdWNlIGEgbm9uLWZ1bmN0aW9uYWwgUHl0aG9uIGV4ZWN1dGFibGUuICBBcyBpdCBhcHBlYXJzIHRvIGJlCisgICAgICAgICAgY29uc2lkZXJlZCBhIG1pZ3JhdGlvbiBhaWQgYnkgQXBwbGUgYW5kIGlzIG5vdCBsaWtlbHkgdG8gYmUgZml4ZWQsCisgICAgICAgICAgaXRzIHVzZSBzaG91bGQgYmUgYXZvaWRlZC4gIFRoZSBvdGhlciBjb21waWxlciwgYGBjbGFuZ2BgLCBoYXMgYmVlbgorICAgICAgICAgIHVuZGVyZ29pbmcgcmFwaWQgZGV2ZWxvcG1lbnQuICBXaGlsZSBpdCBhcHBlYXJzIHRvIGhhdmUgYmVjb21lCisgICAgICAgICAgcHJvZHVjdGlvbi1yZWFkeSBpbiB0aGUgbW9zdCByZWNlbnQgWGNvZGUgNCByZWxlYXNlcyAoWGNvZGUgNC40LjEKKyAgICAgICAgICBhcyBvZiB0aGlzIHdyaXRpbmcpLCB0aGVyZSBhcmUgc3RpbGwgc29tZSBvcGVuIGlzc3VlcyB3aGVuCisgICAgICAgICAgYnVpbGRpbmcgUHl0aG9uIGFuZCB0aGVyZSBoYXMgbm90IHlldCBiZWVuIHRoZSBsZXZlbCBvZiBleHBvc3VyZSBpbgorICAgICAgICAgIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgorCisKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKICAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCiAgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAogICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMgCi0gICAgICAgICAgICAjIFRoZXNlIGFyZSB0aGUgY3VycmVudCBkZWZhdWx0IG9wdGlvbnMKIAogICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKICAgICAgICAgKiBCemlwMgotICAgICAgICAqIFpsaWIgMS4yLjMKKyAgICAgICAgKiBOQ3Vyc2VzCiAgICAgICAgICogR05VIFJlYWRsaW5lIChHUEwpCiAgICAgICAgICogU1FMaXRlIDMKLSAgICAgICAgKiBOQ3Vyc2VzCisgICAgICAgICogWFoKKyAgICAgICAgKiBabGliIDEuMi4zCiAgICAgICAgICogT3JhY2xlIFNsZWVweWNhdCBEQiA0LjggKFB5dGhvbiAyLnggb25seSkKIAogICAgIC0gcmVxdWlyZXMgQWN0aXZlU3RhdGUgYGBUY2wvVGsgOC40YGAgKGN1cnJlbnRseSA4LjQuMTkpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKIAotICAgIC0gY3VycmVudCB0YXJnZXQgYnVpbGQgZW52aXJvbm1lbnQ6CisgICAgLSByZWNvbW1lbmRlZCBidWlsZCBlbnZpcm9ubWVudDoKICAgICAgICAgCiAgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAogICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKICAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQogICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAogICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCi0gICAgICAgICogUHl0aG9uIDIubiAobiA+PSA0KSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorICAgICAgICAqIHN5c3RlbSBQeXRob24gMi41IGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIHdpdGggU3BoaW54CiAKICAgICAtIGFsdGVybmF0ZSBidWlsZCBlbnZpcm9ubWVudHM6CiAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC40LjExIHdpdGggWGNvZGUgMi41Ci0gICAgICAgICogTWFjIE9TIFggMTAuNi42IHdpdGggWGNvZGUgMy4yLjUKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42Ljggd2l0aCBYY29kZSAzLjIuNgogICAgICAgICAgICAgLSBuZWVkIHRvIGNoYW5nZSBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3tUY2wsVGt9LmZyYW1ld29yay9WZXJzaW9uL0N1cnJlbnRgYCB0byBgYDguNGBgCiAKLTIuICA2NC1iaXQgLyAzMi1iaXQsIHg4Nl82NCBhbmQgaTM4NiB1bml2ZXJzYWwsIGZvciBPUyBYIDEwLjYgKGFuZCBsYXRlcik6OgotCi0gICAgICAgIHB5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAotICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNi5zZGsgXAotICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9aW50ZWwgXAotICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjYKLQotICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCi0gICAgCi0gICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQotICAgICAgICAqIGJ1aWxkcyBPcmFjbGUgU2xlZXB5Y2F0IERCIDQuOCAoUHl0aG9uIDIueCBvbmx5KQotCi0gICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LjkgKG9yIGxhdGVyKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCi0KLSAgICAtIGN1cnJlbnQgdGFyZ2V0IGJ1aWxkIGVudmlyb25tZW50OgotICAgICAgICAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC42LjYgKG9yIGxhdGVyKQotICAgICAgICAqIFhjb2RlIDMuMi41IChvciBsYXRlcikKLSAgICAgICAgKiBgYE1hY09TWDEwLjZgYCBTREsKLSAgICAgICAgKiBgYE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC42YGAKLSAgICAgICAgKiBBcHBsZSBgYGdjYy00LjJgYAotICAgICAgICAqIFB5dGhvbiAyLm4gKG4gPj0gNCkgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKLQotICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKLQotICAgICAgICAqIG5vbmUKIAogCiBHZW5lcmFsIFByZXJlcXVpc2l0ZXMKQEAgLTg3LDYgKzE0MiwxMSBAQAogKiBJdCBpcyBzYWZlc3QgdG8gc3RhcnQgZWFjaCB2YXJpYW50IGJ1aWxkIHdpdGggYW4gZW1wdHkgc291cmNlIGRpcmVjdG9yeQogICBwb3B1bGF0ZWQgd2l0aCBhIGZyZXNoIGNvcHkgb2YgdGhlIHVudGFycmVkIHNvdXJjZS4KIAorKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZW1vdmUgYW55IGV4aXN0aW5nIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZQorICBQeXRob24gYmVpbmcgYnVpbHQ6OgorCisgICAgICBzdWRvIHJtIC1yZiAvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvbi5uCisKIAogVGhlIFJlY2lwZQogLS0tLS0tLS0tLQpAQCAtMTA3LDkgKzE2Nyw5IEBACiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIGEgNC13YXkgdW5pdmVyc2FsIGluc3RhbGxlciB0aGF0IHJ1bnMgb24gCi1PUyBYIExlb3BhcmQgb3IgbGF0ZXI6OgorT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCi0gIHB5dGhvbiAyLjYgL2J1aWxkLWluc3RhbGxlci5weSBcCisgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXAogICAgICAgICAtLWRlcC10YXJnZXQ9MTAuNQogICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz1hbGwKICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsKQEAgLTEyMCw3ICsxODAsOCBAQAogdmFyaWFudHMgY2FuIG9ubHkgYmUgcnVuIG9uIEc1IG1hY2hpbmVzIHJ1bm5pbmcgMTAuNS4gIE5vdGUgdGhhdCwKIHdoaWxlIE9TIFggMTAuNiBpcyBvbmx5IHN1cHBvcnRlZCBvbiBJbnRlbC1iYXNlZCBtYWNoaW5lcywgaXQgaXMgcG9zc2libGUKIHRvIHJ1biBgYHBwY2BgICgzMi1iaXQpIGV4ZWN1dGFibGVzIHVubW9kaWZpZWQgdGhhbmtzIHRvIHRoZSBSb3NldHRhIHBwYwotZW11bGF0aW9uIGluIE9TIFggMTAuNSBhbmQgMTAuNi4KK2VtdWxhdGlvbiBpbiBPUyBYIDEwLjUgYW5kIDEwLjYuICBUaGUgNC13YXkgaW5zdGFsbGVyIHZhcmlhbnQgbXVzdCBiZQorYnVpbHQgd2l0aCBYY29kZSAzLiAgSXQgaXMgbm90IHJlZ3VsYXJseSBidWlsdCBvciB0ZXN0ZWQuCiAKIE90aGVyIGBgLS11bml2ZXJzYWwtYXJjaHNgYCBvcHRpb25zIGFyZSBgYDY0LWJpdGBgIChgYHg4Nl82NGBgLCBgYHBwYzY0YGApLAogYW5kIGBgMy13YXlgYCAoYGBwcGNgYCwgYGBpMzg2YGAsIGBgeDg2XzY0YGApLiAgTm9uZSBvZiB0aGVzZSBvcHRpb25zCkBAIC0xMzMsMTUgKzE5NCwyMSBAQAogSWRlYWxseSwgdGhlIHJlc3VsdGluZyBiaW5hcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkIGFuZCB0aGUgdGVzdCBzdWl0ZSBydW4KIG9uIGFsbCBzdXBwb3J0ZWQgT1MgWCByZWxlYXNlcyBhbmQgYXJjaGl0ZWN0dXJlcy4gIEFzIGEgcHJhY3RpY2FsIG1hdHRlciwKIHRoYXQgaXMgZ2VuZXJhbGx5IG5vdCBwb3NzaWJsZS4gIEF0IGEgbWluaW11bSwgdmFyaWFudCAxIHNob3VsZCBiZSBydW4gb24KLWF0IGxlYXN0IG9uZSBJbnRlbCwgb25lIFBQQyBHNCwgYW5kIG9uZSBQUEMgRzMgc3lzdGVtIGFuZCBvbmUgZWFjaCBvZiAKLU9TIFggMTAuNiwgMTAuNSwgMTAuNCwgYW5kIDEwLjMuOS4gIE5vdCBhbGwgdGVzdHMgcnVuIG9uIDEwLjMuOS4KLVZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjYgaW4gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBtb2Rlcy46OgorYSBQUEMgRzQgc3lzdGVtIHdpdGggT1MgWCAxMC41IGFuZCBhdCBsZWFzdCBvbmUgSW50ZWwgc3lzdGVtIHJ1bm5pbmcgT1MgWAorMTAuOCwgMTAuNywgMTAuNiwgb3IgMTAuNS4gIFZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjgsIDEwLjcsIGFuZCAxMC42CitzeXN0ZW1zIGluIGJvdGggMzItYml0IGFuZCA2NC1iaXQgbW9kZXMuOjoKIAotICAgIGFyY2ggLWkzODYgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QucmVncnRlc3QgLXcgLXUgYWxsIAotICAgIGFyY2ggLVg4Nl82NCAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdC5yZWdydGVzdCAtdyAtdSBhbGwKKyAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQorICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAogICAgIAogQ2VydGFpbiB0ZXN0cyB3aWxsIGJlIHNraXBwZWQgYW5kIHNvbWUgY2F1c2UgdGhlIGludGVycHJldGVyIHRvIGZhaWwKIHdoaWNoIHdpbGwgbGlrZWx5IGdlbmVyYXRlIGBgUHl0aG9uIHF1aXQgdW5leHBlY3RlZGx5YGAgYWxlcnQgbWVzc2FnZXMKLXRvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGNhbgotYmUgaWdub3JlZC4KK3RvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGFyZSBub3JtYWwKK2R1cmluZyB0ZXN0aW5nIGFuZCBjYW4gYmUgaWdub3JlZC4KKworSXQgaXMgYWxzbyByZWNvbW1lbmQgdG8gbGF1bmNoIElETEUgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIGF0IGxlYXN0CitmdW5jdGlvbmFsLiAgRG91YmxlLWNsaWNrIG9uIHRoZSBJRExFIGFwcCBpY29uIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob25uLm5gYC4KK0l0IHNob3VsZCBhbHNvIGJlIHRlc3RlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgorCisgICAgL3Vzci9sb2NhbC9iaW4vaWRsZW4ubgogCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBiYTkyMDEyLi5iZDBjNDc2IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEsNyArMSw3IEBACi0jIS91c3IvYmluL3B5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAiIiIKIFRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gYnVpbGQgIm9mZmljaWFsIiB1bml2ZXJzYWwgaW5zdGFsbGVycyBvbiBNYWMgT1MgWC4KLUl0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjQsIFhjb2RlIDIuMiBhbmQgdGhlIDEwLjR1IFNESyBmb3IKK0l0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjUsIFhjb2RlIDMsIGFuZCB0aGUgMTAuNHUgU0RLIGZvcgogMzItYml0IGJ1aWxkcy4gIDY0LWJpdCBvciBmb3VyLXdheSB1bml2ZXJzYWwgYnVpbGRzIHJlcXVpcmUgYXQgbGVhc3QKIE9TIFggMTAuNSBhbmQgdGhlIDEwLjUgU0RLLgogCkBAIC0xMCwxOCArMTAsNDEgQEAKIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24sIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdAogUHl0aG9uIDIuNC4KIAorSW4gYWRkaXRpb24gdG8gd2hhdCBpcyBzdXBwbGllZCB3aXRoIE9TIFggMTAuNSsgYW5kIFhjb2RlIDMrLCB0aGUgc2NyaXB0CityZXF1aXJlcyBhbiBpbnN0YWxsZWQgdmVyc2lvbiBvZiBoZyBhbmQgYSB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mCitUY2wvVGsgOC40IChmb3IgT1MgWCAxMC40IGFuZCAxMC41IGRlcGxveW1lbnQgdGFyZ2V0cykgb3IgVGNsL1RLIDguNQorKGZvciAxMC42IG9yIGxhdGVyKSBpbnN0YWxsZWQgaW4gL0xpYnJhcnkvRnJhbWV3b3Jrcy4gIFdoZW4gaW5zdGFsbGVkLAordGhlIFB5dGhvbiBidWlsdCBieSB0aGlzIHNjcmlwdCB3aWxsIGF0dGVtcHQgdG8gZHluYW1pY2FsbHkgbGluayBmaXJzdCB0bworVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSBmYWxsCitiYWNrIHRvIHRoZSBvbmVzIGluIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmsuICBGb3IgdGhlIGJ1aWxkLCB3ZSByZWNvbW1lbmQKK2luc3RhbGxpbmcgdGhlIG1vc3QgcmVjZW50IEFjdGl2ZVRjbCA4LjQgb3IgOC41IHZlcnNpb24uCisKKzMyLWJpdC1vbmx5IGluc3RhbGxlciBidWlsZHMgYXJlIHN0aWxsIHBvc3NpYmxlIG9uIE9TIFggMTAuNCB3aXRoIFhjb2RlIDIuNQorYW5kIHRoZSBpbnN0YWxsYXRpb24gb2YgYWRkaXRpb25hbCBjb21wb25lbnRzLCBzdWNoIGFzIGEgbmV3ZXIgUHl0aG9uCisoMi41IGlzIG5lZWRlZCBmb3IgUHl0aG9uIHBhcnNlciB1cGRhdGVzKSwgaGcsIGFuZCBzdm4gKGZvciB0aGUgZG9jdW1lbnRhdGlvbgorYnVpbGQpLgorCiBVc2FnZTogc2VlIFVTQUdFIHZhcmlhYmxlIGluIHRoZSBzY3JpcHQuCiAiIiIKLWltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCB1cmxsaWIyLCBzdGF0LCB0aW1lLCBwd2QKLWltcG9ydCBncnAKK2ltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCBzdGF0LCB0aW1lLCBwd2QsIGdycAordHJ5OgorICAgIGltcG9ydCB1cmxsaWIyIGFzIHVybGxpYl9yZXF1ZXN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0IGFzIHVybGxpYl9yZXF1ZXN0CisKK1NUQVRfMG83NTUgPSAoIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUgorICAgICAgICAgICAgIHwgc3RhdC5TX0lSR1JQIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYR1JQCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJPVEggfCAgICAgICAgICAgICAgICBzdGF0LlNfSVhPVEggKQorCitTVEFUXzBvNzc1ID0gKCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IKKyAgICAgICAgICAgICB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JV0dSUCB8IHN0YXQuU19JWEdSUAorICAgICAgICAgICAgIHwgc3RhdC5TX0lST1RIIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYT1RIICkKIAogSU5DTFVERV9USU1FU1RBTVAgPSAxCiBWRVJCT1NFID0gMQogCiBmcm9tIHBsaXN0bGliIGltcG9ydCBQbGlzdAogCi1pbXBvcnQgTWFjT1MKLQogdHJ5OgogICAgIGZyb20gcGxpc3RsaWIgaW1wb3J0IHdyaXRlUGxpc3QKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQyLDIwICs2NSwzNSBAQAogICAgICAgICBpZiBsbi5zdGFydHN3aXRoKHZhcmlhYmxlKToKICAgICAgICAgICAgIHZhbHVlID0gbG5bbGVuKHZhcmlhYmxlKTpdLnN0cmlwKCkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsxOi0xXQotICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0KKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0pCisKK19jYWNoZV9nZXRWZXJzaW9uID0gTm9uZQogCiBkZWYgZ2V0VmVyc2lvbigpOgotICAgIHJldHVybiBncmVwVmFsdWUob3MucGF0aC5qb2luKFNSQ0RJUiwgJ2NvbmZpZ3VyZScpLCAnUEFDS0FHRV9WRVJTSU9OJykKKyAgICBnbG9iYWwgX2NhY2hlX2dldFZlcnNpb24KKyAgICBpZiBfY2FjaGVfZ2V0VmVyc2lvbiBpcyBOb25lOgorICAgICAgICBfY2FjaGVfZ2V0VmVyc2lvbiA9IGdyZXBWYWx1ZSgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihTUkNESVIsICdjb25maWd1cmUnKSwgJ1BBQ0tBR0VfVkVSU0lPTicpCisgICAgcmV0dXJuIF9jYWNoZV9nZXRWZXJzaW9uCiAKIGRlZiBnZXRWZXJzaW9uVHVwbGUoKToKICAgICByZXR1cm4gdHVwbGUoW2ludChuKSBmb3IgbiBpbiBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nKV0pCiAKK2RlZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpOgorICAgIHJldHVybiB0dXBsZShbaW50KG4pIGZvciBuIGluIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpXSkKKworX2NhY2hlX2dldEZ1bGxWZXJzaW9uID0gTm9uZQorCiBkZWYgZ2V0RnVsbFZlcnNpb24oKToKKyAgICBnbG9iYWwgX2NhY2hlX2dldEZ1bGxWZXJzaW9uCisgICAgaWYgX2NhY2hlX2dldEZ1bGxWZXJzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gX2NhY2hlX2dldEZ1bGxWZXJzaW9uCiAgICAgZm4gPSBvcy5wYXRoLmpvaW4oU1JDRElSLCAnSW5jbHVkZScsICdwYXRjaGxldmVsLmgnKQogICAgIGZvciBsbiBpbiBvcGVuKGZuKToKICAgICAgICAgaWYgJ1BZX1ZFUlNJT04nIGluIGxuOgotICAgICAgICAgICAgcmV0dXJuIGxuLnNwbGl0KClbLTFdWzE6LTFdCi0gICAgcmFpc2UgUnVudGltZUVycm9yLCAiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iCisgICAgICAgICAgICBfY2FjaGVfZ2V0RnVsbFZlcnNpb24gPSBsbi5zcGxpdCgpWy0xXVsxOi0xXQorICAgICAgICAgICAgcmV0dXJuIF9jYWNoZV9nZXRGdWxsVmVyc2lvbgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iKQogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMTExLDEzICsxNDksMTUgQEAKIERFUFRBUkdFVCA9ICcxMC4zJwogCiB0YXJnZXRfY2NfbWFwID0gewotICAgICAgICAnMTAuMyc6ICdnY2MtNC4wJywKLSAgICAgICAgJzEwLjQnOiAnZ2NjLTQuMCcsCi0gICAgICAgICcxMC41JzogJ2djYy00LjAnLAotICAgICAgICAnMTAuNic6ICdnY2MtNC4yJywKKyAgICAgICAgJzEwLjMnOiAoJ2djYy00LjAnLCAnZysrLTQuMCcpLAorICAgICAgICAnMTAuNCc6ICgnZ2NjLTQuMCcsICdnKystNC4wJyksCisgICAgICAgICcxMC41JzogKCdnY2MtNC4yJywgJ2crKy00LjInKSwKKyAgICAgICAgJzEwLjYnOiAoJ2djYy00LjInLCAnZysrLTQuMicpLAorICAgICAgICAnMTAuNyc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAorICAgICAgICAnMTAuOCc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAogfQogCi1DQyA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQorQ0MsIENYWCA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCiBQWVRIT05fMyA9IGdldFZlcnNpb25UdXBsZSgpID49ICgzLCAwKQogCkBAIC0xMzUsNiArMTc1LDEzIEBACiAgICAgLS11bml2ZXJzYWwtYXJjaHM9eCAgdW5pdmVyc2FsIGFyY2hpdGVjdHVyZXMgKG9wdGlvbnM6ICUoVU5JVkVSU0FMT1BUUylyLCBkZWZhdWx0OiAlKFVOSVZFUlNBTEFSQ0hTKXIpCiAiIiIpJSBnbG9iYWxzKCkKIAorIyBEaWN0IG9mIG9iamVjdCBmaWxlIG5hbWVzIHdpdGggc2hhcmVkIGxpYnJhcnkgbmFtZXMgdG8gY2hlY2sgYWZ0ZXIgYnVpbGRpbmcuCisjIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgd2UgZW5kZWQgdXAgZHluYW1pY2FsbHkgbGlua2luZyB3aXRoIHRoZSBzaGFyZWQKKyMgbGlicmFyeSBwYXRocyBhbmQgdmVyc2lvbnMgd2UgZXhwZWN0ZWQuICBGb3IgZXhhbXBsZToKKyMgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKKyMgICAgICAgICAgICAgICAgICAgICAgICcvTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RjbCcsCisjICAgICAgICAgICAgICAgICAgICAgICAnL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RrJ10KK0VYUEVDVEVEX1NIQVJFRF9MSUJTID0ge30KIAogIyBJbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIGxpYnJhcmllcyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEKICMgYmF0dGVyaWVzIGluY2x1ZGVkIHB5dGhvbi4KQEAgLTE0Myw2ICsxOTAsNzEgQEAKIGRlZiBsaWJyYXJ5X3JlY2lwZXMoKToKICAgICByZXN1bHQgPSBbXQogCisgICAgTFRfMTBfNSA9IGJvb2woREVQVEFSR0VUIDwgJzEwLjUnKQorCisgICAgcmVzdWx0LmV4dGVuZChbCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjMiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuMy50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nZmVmZTUyZjllY2Q1MjFkZTJhOGNlMzhjMjFhMjc1NzQnLAorICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKKyAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICApLAorICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS45IiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS45LnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc4Y2I5YzQxMmU1ZjJkOTZiYzZmNDU5YWE4YzYyODJhMScsCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4LWJpbmRpbmciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1hZGEiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCisgICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtZGVidWciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1ub3JtYWwiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC10ZXN0cyIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LW1hbnBhZ2VzIiwKKyAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCisgICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAorICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKKyAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHBhdGNoc2NyaXB0cz1bCisgICAgICAgICAgICAgICAgICAoImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvLzUuOS9uY3Vyc2VzLTUuOS0yMDEyMDYxNi1wYXRjaC5zaC5iejIiLAorICAgICAgICAgICAgICAgICAgICJmNTRiZjAyYTM0OWY5NmE3YzRmMGQwMDkyMmYzYTBkNCIpLAorICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHVzZUxERmxhZ3M9RmFsc2UsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgJiYgbWFrZSBpbnN0YWxsIERFU1RESVI9JXMgJiYgY2QgJXMvdXNyL2xvY2FsL2xpYiAmJiBsbiAtZnMgLi4vLi4vLi4vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliL2xpYiogLiclKAorICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKKyAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCisgICAgICAgICAgICAgICAgICBnZXRWZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICksCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy4xMyIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5zcWxpdGUub3JnL3NxbGl0ZS1hdXRvY29uZi0zMDcxMzAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSdjOTdkZjQwM2U4YTNkNWI2N2JiNDA4ZmNkNmFhYmQ4ZScsCisgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzNfUEFSRU5USEVTSVMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfUlRSRUUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9UQ0w9MCAnCisgICAgICAgICAgICAgICAgICclcycgJSAoJycsJy1EU1FMSVRFX1dJVEhPVVRfWk9ORU1BTExPQyAnKVtMVF8xMF81XSksCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAorICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCisgICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCisgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKKyAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICApLAorICAgICAgICBdKQorCiAgICAgaWYgREVQVEFSR0VUIDwgJzEwLjUnOgogICAgICAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KApAQCAtMTUwLDggKzI2Miw4IEBACiAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2J6aXAub3JnLzEuMC42L2J6aXAyLTEuMC42LnRhci5neiIsCiAgICAgICAgICAgICAgIGNoZWNrc3VtPScwMGI1MTZmNDcwNGQ0YTdjYjUwYTFkOTdlNmU4ZTE1YicsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAotICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCi0gICAgICAgICAgICAgICAgICBDQywKKyAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIENYWD0lcywgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCisgICAgICAgICAgICAgICAgICBDQywgQ1hYLAogICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKEFSQ0hMSVNUKSwKICAgICAgICAgICAgICAgICAgIFNES1BBVEgsCkBAIC0xNjIsOCArMjc0LDggQEAKICAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3Lmd6aXAub3JnL3psaWIvemxpYi0xLjIuMy50YXIuZ3oiLAogICAgICAgICAgICAgICBjaGVja3N1bT0nZGViYzYyNzU4NzE2YTE2OWRmOWY2MmU2YWIyYmM2MzQnLAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAotICAgICAgICAgICAgICAgICAgQ0MsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgaW5zdGFsbCBDQz0lcyBDWFg9JXMsIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAorICAgICAgICAgICAgICAgICAgQ0MsIENYWCwKICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCiAgICAgICAgICAgICAgICAgICAnIC1hcmNoICcuam9pbihBUkNITElTVCksCiAgICAgICAgICAgICAgICAgICBTREtQQVRILApAQCAtMTc4LDU4ICsyOTAsMTIgQEAKICAgICAgICAgICAgICAgcGF0Y2hlcz1bCiAgICAgICAgICAgICAgICAgICAjIFRoZSByZWFkbGluZSBtYWludGFpbmVycyBkb24ndCBkbyBhY3R1YWwgbWljcm8gcmVsZWFzZXMsIGJ1dAogICAgICAgICAgICAgICAgICAgIyBqdXN0IHNoaXAgYSBzZXQgb2YgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCi0gICAgICAgICAgICAgICAgICAnaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNi4xLXBhdGNoZXMvcmVhZGxpbmU2MS0wMDInLAorICAgICAgICAgICAgICAgICAgKCdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCisgICAgICAgICAgICAgICAgICAgJ2M2NDJmMmU4NGQ4MjA4ODRiMGJmOWZkMTc2YmM2YzNmJyksCisgICAgICAgICAgICAgICAgICAoJ2h0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L3JlYWRsaW5lL3JlYWRsaW5lLTYuMS1wYXRjaGVzL3JlYWRsaW5lNjEtMDAyJywKKyAgICAgICAgICAgICAgICAgICAnMWE3Njc4MWExZWE3MzRlODMxNTg4Mjg1ZGI3ZWM5YjEnKSwKICAgICAgICAgICAgICAgXQogICAgICAgICAgICksCi0gICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy40IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnNxbGl0ZS5vcmcvc3FsaXRlLWF1dG9jb25mLTMwNzA0MDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzhmMGM2OTBiZmIzM2MzY2JiYzI0NzFjM2Q5YmEwMTU4JywKLSAgICAgICAgICAgICAgY29uZmlndXJlX2Vudj0oJ0NGTEFHUz0iLU9zJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLURTUUxJVEVfRU5BQkxFX0ZUUzMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX0VOQUJMRV9SVFJFRScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX1RDTD0wJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCi0gICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCi0gICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKLSAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICApLAotICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS41LnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSdlNzNjMWFjMTBiNGJmYzQ2ZGI0M2IyZGRmZDYyNDRlZicsCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtYWRhIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCi0gICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAotICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKLSAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtdGVybWNhcCIsCi0gICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgIHBhdGNoZXM9WwotICAgICAgICAgICAgICAgICAgIm5jdXJzZXMtNS41LnBhdGNoIiwKLSAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgdXNlTERGbGFncz1GYWxzZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSAmJiBtYWtlIGluc3RhbGwgREVTVERJUj0lcyAmJiBjZCAlcy91c3IvbG9jYWwvbGliICYmIGxuIC1mcyAuLi8uLi8uLi9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8lcy9saWIvbGliKiAuJyUoCi0gICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAotICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKLSAgICAgICAgICAgICAgICAgIGdldFZlcnNpb24oKSwKLSAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgKSwKICAgICAgICAgXSkKIAogICAgIGlmIG5vdCBQWVRIT05fMzoKQEAgLTI5OCw5ICszNjQsNyBAQAogICAgICAgICAgICAgc291cmNlPSIvcHlkb2NzIiwKICAgICAgICAgICAgIHJlYWRtZT0iIiJcCiAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdlIGluc3RhbGxzIHRoZSBweXRob24gZG9jdW1lbnRhdGlvbiBhdCBhIGxvY2F0aW9uCi0gICAgICAgICAgICAgICAgdGhhdCBpcyB1c2VhYmxlIGZvciBweWRvYyBhbmQgSURMRS4gSWYgeW91IGhhdmUgaW5zdGFsbGVkIFhjb2RlCi0gICAgICAgICAgICAgICAgaXQgd2lsbCBhbHNvIGluc3RhbGwgYSBsaW5rIHRvIHRoZSBkb2N1bWVudGF0aW9uIGluCi0gICAgICAgICAgICAgICAgL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uL1B5dGhvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlYWJsZSBmb3IgcHlkb2MgYW5kIElETEUuCiAgICAgICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgcG9zdGZsaWdodD0ic2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCkBAIC0zMjYsNyArMzkwLDcgQEAKICAgICAgICAgKSwKICAgICBdCiAKLSAgICBpZiBERVBUQVJHRVQgPCAnMTAuNCc6CisgICAgaWYgREVQVEFSR0VUIDwgJzEwLjQnIGFuZCBub3QgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoCiAgICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICAgIG5hbWU9IlB5dGhvblN5c3RlbUZpeGVzIiwKQEAgLTM1OCw3ICs0MjIsNyBAQAogICAgICIiIgogICAgIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIG5hbWVkIGZpbGUKICAgICAiIiIKLSAgICByZXR1cm4gb3BlbihmbiwgJ3JiJykucmVhZCgpCisgICAgcmV0dXJuIG9wZW4oZm4sICdyJykucmVhZCgpCiAKIGRlZiBydW5Db21tYW5kKGNvbW1hbmRsaW5lKToKICAgICAiIiIKQEAgLTM3MCw3ICs0MzQsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICBpZiBWRVJCT1NFOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpOyBzeXMuc3Rkb3V0LmZsdXNoKCkKQEAgLTM4MSw3ICs0NDUsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICByZXR1cm4gZGF0YQogCkBAIC00MjMsMzkgKzQ4Nyw2MCBAQAogICAgICMgQmVjYXVzZSB3ZSBvbmx5IHN1cHBvcnQgZHluYW1pYyBsb2FkIG9mIG9ubHkgb25lIG1ham9yL21pbm9yIHZlcnNpb24gb2YKICAgICAjIFRjbC9UaywgZW5zdXJlOgogICAgICMgMS4gdGhlcmUgYXJlIG5vIHVzZXItaW5zdGFsbGVkIGZyYW1ld29ya3Mgb2YgVGNsL1RrIHdpdGggdmVyc2lvbgotICAgICMgICAgICAgaGlnaGVyIHRoYW4gdGhlIEFwcGxlLXN1cHBsaWVkIHN5c3RlbSB2ZXJzaW9uCi0gICAgIyAyLiB0aGVyZSBpcyBhIHVzZXItaW5zdGFsbGVkIGZyYW1ld29yayBpbiAvTGlicmFyeS9GcmFtZXdvcmtzIHdpdGggdGhlCi0gICAgIyAgICAgICBzYW1lIHZlcnNpb24gYXMgdGhlIHN5c3RlbSB2ZXJzaW9uLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gY2hvb3NlCi0gICAgIyAgICAgICB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCisgICAgIyAgICAgICBoaWdoZXIgdGhhbiB0aGUgQXBwbGUtc3VwcGxpZWQgc3lzdGVtIHZlcnNpb24gaW4KKyAgICAjICAgICAgIFNES1JPT1QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcworICAgICMgMi4gdGhlcmUgaXMgYSB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmsgKHVzdWFsbHkgQWN0aXZlVGNsKSBpbiAob3IgbGlua2VkCisgICAgIyAgICAgICBpbikgU0RLUk9PVC9MaWJyYXJ5L0ZyYW1ld29ya3Mgd2l0aCB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZSBzeXN0ZW0KKyAgICAjICAgICAgIHZlcnNpb24uIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGNob29zZSB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCiAKKyAgICBmcmFtZXdvcmtzID0ge30KICAgICBmb3IgZnJhbWV3b3JrIGluIFsnVGNsJywgJ1RrJ106Ci0gICAgICAgICNmdyA9IGRpY3QobG93ZXI9ZnJhbWV3b3JrLmxvd2VyKCksCi0gICAgICAgICMgICAgICAgICAgICB1cHBlcj1mcmFtZXdvcmsudXBwZXIoKSwKLSAgICAgICAgIyAgICAgICAgICAgIGNhcD1mcmFtZXdvcmsuY2FwaXRhbGl6ZSgpKQotICAgICAgICAjZndwdGggPSAiTGlicmFyeS9GcmFtZXdvcmtzLyUoY2FwKXMuZnJhbWV3b3JrLyUobG93ZXIpc0NvbmZpZy5zaCIgJSBmdwotICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50JworICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvJXMuZnJhbWV3b3JrL1ZlcnNpb25zL0N1cnJlbnQnICUgZnJhbWV3b3JrCiAgICAgICAgIHN5c2Z3ID0gb3MucGF0aC5qb2luKFNES1BBVEgsICdTeXN0ZW0nLCBmd3B0aCkKLSAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oJy8nLCBmd3B0aCkKKyAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oU0RLUEFUSCwgZndwdGgpCiAgICAgICAgIHVzcmZ3ID0gb3MucGF0aC5qb2luKG9zLmdldGVudignSE9NRScpLCBmd3B0aCkKLSAgICAgICAgI3ZlcnNpb24gPSAiJSh1cHBlcilzX1ZFUlNJT04iICUgZncKKyAgICAgICAgZnJhbWV3b3Jrc1tmcmFtZXdvcmtdID0gb3MucmVhZGxpbmsoc3lzZncpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWJmdyk6CisgICAgICAgICAgICBmYXRhbCgiUGxlYXNlIGluc3RhbGwgYSBsaW5rIHRvIGEgY3VycmVudCAlcyAlcyBhcyAlcyBzbyAiCisgICAgICAgICAgICAgICAgICAgICJ0aGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSBmcmFtZXdvcmsuIgorICAgICAgICAgICAgICAgICAgICAlIChmcmFtZXdvcmssIGZyYW1ld29ya3NbZnJhbWV3b3JrXSwgbGliZncpKQogICAgICAgICBpZiBvcy5yZWFkbGluayhsaWJmdykgIT0gb3MucmVhZGxpbmsoc3lzZncpOgogICAgICAgICAgICAgZmF0YWwoIlZlcnNpb24gb2YgJXMgbXVzdCBtYXRjaCAlcyIgJSAobGliZncsIHN5c2Z3KSApCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVzcmZ3KToKICAgICAgICAgICAgIGZhdGFsKCJQbGVhc2UgcmVuYW1lICVzIHRvIGF2b2lkIHBvc3NpYmxlIGR5bmFtaWMgbG9hZCBpc3N1ZXMuIgogICAgICAgICAgICAgICAgICAgICAlIHVzcmZ3KQogCisgICAgaWYgZnJhbWV3b3Jrc1snVGNsJ10gIT0gZnJhbWV3b3Jrc1snVGsnXToKKyAgICAgICAgZmF0YWwoIlRoZSBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLiIpCisKKyAgICAjIGFkZCBmaWxlcyB0byBjaGVjayBhZnRlciBidWlsZAorICAgIEVYUEVDVEVEX1NIQVJFRF9MSUJTWydfdGtpbnRlci5zbyddID0gWworICAgICAgICAgICAgIi9MaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UY2wiCisgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUY2wnXSwKKyAgICAgICAgICAgICIvTGlicmFyeS9GcmFtZXdvcmtzL1RrLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UayIKKyAgICAgICAgICAgICAgICAlIGZyYW1ld29ya3NbJ1RrJ10sCisgICAgICAgICAgICBdCisKICAgICAjIFJlbW92ZSBpbmhlcml0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIG1pZ2h0IGluZmx1ZW5jZSBidWlsZAogICAgIGVudmlyb25fdmFyX3ByZWZpeGVzID0gWydDUEFUSCcsICdDX0lOQ0xVREVfJywgJ0RZTERfJywgJ0xBTkcnLCAnTENfJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTERfJywgJ0xJQlJBUllfJywgJ1BBVEgnLCAnUFlUSE9OJ10KICAgICBmb3IgZXYgaW4gbGlzdChvcy5lbnZpcm9uKToKICAgICAgICAgZm9yIHByZWZpeCBpbiBlbnZpcm9uX3Zhcl9wcmVmaXhlczoKICAgICAgICAgICAgIGlmIGV2LnN0YXJ0c3dpdGgocHJlZml4KSA6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pCisgICAgICAgICAgICAgICAgcHJpbnQoIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pKQogICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2V2XQogCi0gICAgb3MuZW52aXJvblsnUEFUSCddID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJwotICAgIHByaW50ICJTZXR0aW5nIGRlZmF1bHQgUEFUSDogJXMiJShvcy5lbnZpcm9uWydQQVRIJ10pCisgICAgYmFzZV9wYXRoID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJworICAgIGlmICdTREtfVE9PTFNfQklOJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBiYXNlX3BhdGggPSBvcy5lbnZpcm9uWydTREtfVE9PTFNfQklOJ10gKyAnOicgKyBiYXNlX3BhdGgKKyAgICAjIFhjb2RlIDIuNSBvbiBPUyBYIDEwLjQgZG9lcyBub3QgaW5jbHVkZSBTZXRGaWxlIGluIGl0cyB1c3IvYmluOworICAgICMgYWRkIGl0cyBmaXhlZCBsb2NhdGlvbiBoZXJlIGlmIGl0IGV4aXN0cworICAgIE9MRF9ERVZFTE9QRVJfVE9PTFMgPSAnL0RldmVsb3Blci9Ub29scycKKyAgICBpZiBvcy5wYXRoLmlzZGlyKE9MRF9ERVZFTE9QRVJfVE9PTFMpOgorICAgICAgICBiYXNlX3BhdGggPSBiYXNlX3BhdGggKyAnOicgKyBPTERfREVWRUxPUEVSX1RPT0xTCisgICAgb3MuZW52aXJvblsnUEFUSCddID0gYmFzZV9wYXRoCisgICAgcHJpbnQoIlNldHRpbmcgZGVmYXVsdCBQQVRIOiAlcyIlKG9zLmVudmlyb25bJ1BBVEgnXSkpCiAKIAogZGVmIHBhcnNlT3B0aW9ucyhhcmdzPU5vbmUpOgpAQCAtNDYzLDcgKzU0OCw3IEBACiAgICAgUGFyc2UgYXJndW1lbnRzIGFuZCB1cGRhdGUgZ2xvYmFsIHNldHRpbmdzLgogICAgICIiIgogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCi0gICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MKKyAgICBnbG9iYWwgVU5JVkVSU0FMT1BUUywgVU5JVkVSU0FMQVJDSFMsIEFSQ0hMSVNULCBDQywgQ1hYCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTQ3MiwxOCArNTU3LDE4IEBACiAgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICc/aGInLAogICAgICAgICAgICAgICAgIFsgJ2J1aWxkLWRpcj0nLCAndGhpcmQtcGFydHk9JywgJ3Nkay1wYXRoPScgLCAnc3JjLWRpcj0nLAogICAgICAgICAgICAgICAgICAgJ2RlcC10YXJnZXQ9JywgJ3VuaXZlcnNhbC1hcmNocz0nLCAnaGVscCcgXSkKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6Ci0gICAgICAgIHByaW50IG1zZworICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CisgICAgICAgIHByaW50KHN5cy5leGNfaW5mbygpWzFdKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgaWYgYXJnczoKLSAgICAgICAgcHJpbnQgIkFkZGl0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICBwcmludCgiQWRkaXRpb25hbCBhcmd1bWVudHMiKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgZGVwdGFyZ2V0ID0gTm9uZQogICAgIGZvciBrLCB2IGluIG9wdGlvbnM6CiAgICAgICAgIGlmIGsgaW4gKCctaCcsICctPycsICctLWhlbHAnKToKLSAgICAgICAgICAgIHByaW50IFVTQUdFCisgICAgICAgICAgICBwcmludChVU0FHRSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKICAgICAgICAgZWxpZiBrIGluICgnLWQnLCAnLS1idWlsZC1kaXInKToKQEAgLTUxMSwyNyArNTk2LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCA9IGRlZmF1bHRfdGFyZ2V0X21hcC5nZXQodiwgJzEwLjMnKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCB2CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcih2KQogCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCBrCisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKGspCiAKICAgICBTUkNESVI9b3MucGF0aC5hYnNwYXRoKFNSQ0RJUikKICAgICBXT1JLRElSPW9zLnBhdGguYWJzcGF0aChXT1JLRElSKQogICAgIFNES1BBVEg9b3MucGF0aC5hYnNwYXRoKFNES1BBVEgpCiAgICAgREVQU1JDPW9zLnBhdGguYWJzcGF0aChERVBTUkMpCiAKLSAgICBDQz10YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KKyAgICBDQywgQ1hYPXRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCi0gICAgcHJpbnQgIlNldHRpbmdzOiIKLSAgICBwcmludCAiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIKLSAgICBwcmludCAiICogQnVpbGQgZGlyZWN0b3J5OiAiLCBXT1JLRElSCi0gICAgcHJpbnQgIiAqIFNESyBsb2NhdGlvbjogICAgIiwgU0RLUEFUSAotICAgIHByaW50ICIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDCi0gICAgcHJpbnQgIiAqIERlcGxveW1lbnQgdGFyZ2V0OiIsIERFUFRBUkdFVAotICAgIHByaW50ICIgKiBVbml2ZXJzYWwgYXJjaGl0ZWN0dXJlczoiLCBBUkNITElTVAotICAgIHByaW50ICIgKiBDIGNvbXBpbGVyOiIsIENDCi0gICAgcHJpbnQgIiIKKyAgICBwcmludCgiU2V0dGluZ3M6IikKKyAgICBwcmludCgiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIpCisgICAgcHJpbnQoIiAqIEJ1aWxkIGRpcmVjdG9yeTogIiwgV09SS0RJUikKKyAgICBwcmludCgiICogU0RLIGxvY2F0aW9uOiAgICAiLCBTREtQQVRIKQorICAgIHByaW50KCIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDKQorICAgIHByaW50KCIgKiBEZXBsb3ltZW50IHRhcmdldDoiLCBERVBUQVJHRVQpCisgICAgcHJpbnQoIiAqIFVuaXZlcnNhbCBhcmNoaXRlY3R1cmVzOiIsIEFSQ0hMSVNUKQorICAgIHByaW50KCIgKiBDIGNvbXBpbGVyOiIsIENDKQorICAgIHByaW50KCIgKiBDKysgY29tcGlsZXI6IiwgQ1hYKQorICAgIHByaW50KCIiKQogCiAKIApAQCAtNTc2LDMxICs2NjIsMTggQEAKICAgICAgICAgeGl0ID0gZnAuY2xvc2UoKQogICAgICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpCi0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICJDYW5ub3QgZXh0cmFjdCAlcyIlKGFyY2hpdmVOYW1lLCkKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGV4dHJhY3QgJXMiJShhcmNoaXZlTmFtZSwpKQogCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHJldHZhbCkKIAogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKIAotS05PV05TSVpFUyA9IHsKLSAgICAiaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNS4xLnRhci5neiI6IDc5NTI3NDIsCi0gICAgImh0dHA6Ly9kb3dubG9hZHMuc2xlZXB5Y2F0LmNvbS9kYi00LjQuMjAudGFyLmd6IjogMjAzMDI3NiwKLX0KLQogZGVmIGRvd25sb2FkVVJMKHVybCwgZm5hbWUpOgogICAgICIiIgogICAgIERvd25sb2FkIHRoZSBjb250ZW50cyBvZiB0aGUgdXJsIGludG8gdGhlIGZpbGUuCiAgICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBzaXplID0gb3MucGF0aC5nZXRzaXplKGZuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgaWYgS05PV05TSVpFUy5nZXQodXJsKSA9PSBzaXplOgotICAgICAgICAgICAgcHJpbnQgIlVzaW5nIGV4aXN0aW5nIGZpbGUgZm9yIiwgdXJsCi0gICAgICAgICAgICByZXR1cm4KLSAgICBmcEluID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICBmcEluID0gdXJsbGliX3JlcXVlc3QudXJsb3Blbih1cmwpCiAgICAgZnBPdXQgPSBvcGVuKGZuYW1lLCAnd2InKQogICAgIGJsb2NrID0gZnBJbi5yZWFkKDEwMjQwKQogICAgIHRyeToKQEAgLTYxNSw2ICs2ODgsMjQgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcwogCitkZWYgdmVyaWZ5VGhpcmRQYXJ0eUZpbGUodXJsLCBjaGVja3N1bSwgZm5hbWUpOgorICAgICIiIgorICAgIERvd25sb2FkIGZpbGUgZnJvbSB1cmwgdG8gZmlsZW5hbWUgZm5hbWUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICBBYm9ydCBpZiBmaWxlIGNvbnRlbnRzIGRvZXMgbm90IG1hdGNoIHN1cHBsaWVkIG1kNSBjaGVja3N1bS4KKyAgICAiIiIKKyAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmbmFtZSkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbmFtZSk6CisgICAgICAgIHByaW50KCJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCJEaWQgbm90IGZpbmQgbG9jYWwgY29weSBvZiAlcyIlKG5hbWUsKSkKKyAgICAgICAgcHJpbnQoIkRvd25sb2FkaW5nICVzIiUobmFtZSwpKQorICAgICAgICBkb3dubG9hZFVSTCh1cmwsIGZuYW1lKQorICAgICAgICBwcmludCgiQXJjaGl2ZSBmb3IgJXMgc3RvcmVkIGFzICVzIiUobmFtZSwgZm5hbWUpKQorICAgIGlmIG9zLnN5c3RlbSgKKyAgICAgICAgICAgICdNRDU9JChvcGVuc3NsIG1kNSAlcykgOyB0ZXN0ICIke01ENSMjKj0gfSIgPSAiJXMiJworICAgICAgICAgICAgICAgICUgKHNoZWxsUXVvdGUoZm5hbWUpLCBjaGVja3N1bSkgKToKKyAgICAgICAgZmF0YWwoJ01ENSBjaGVja3N1bSBtaXNtYXRjaCBmb3IgZmlsZSAlcycgJSBmbmFtZSkKKwogZGVmIGJ1aWxkUmVjaXBlKHJlY2lwZSwgYmFzZWRpciwgYXJjaExpc3QpOgogICAgICIiIgogICAgIEJ1aWxkIHNvZnR3YXJlIHVzaW5nIGEgcmVjaXBlLiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlCkBAIC02MzUsMTcgKzcyNiw4IEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKERFUFNSQyk6CiAgICAgICAgIG9zLm1rZGlyKERFUFNSQykKIAotCi0gICAgaWYgb3MucGF0aC5leGlzdHMoc291cmNlQXJjaGl2ZSk6Ci0gICAgICAgIHByaW50ICJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpCi0KLSAgICBlbHNlOgotICAgICAgICBwcmludCAiRGlkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgJXMiJShuYW1lLCkKLSAgICAgICAgcHJpbnQgIkRvd25sb2FkaW5nICVzIiUobmFtZSwpCi0gICAgICAgIGRvd25sb2FkVVJMKHVybCwgc291cmNlQXJjaGl2ZSkKLSAgICAgICAgcHJpbnQgIkFyY2hpdmUgZm9yICVzIHN0b3JlZCBhcyAlcyIlKG5hbWUsIHNvdXJjZUFyY2hpdmUpCi0KLSAgICBwcmludCAiRXh0cmFjdGluZyBhcmNoaXZlIGZvciAlcyIlKG5hbWUsKQorICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgcmVjaXBlWydjaGVja3N1bSddLCBzb3VyY2VBcmNoaXZlKQorICAgIHByaW50KCJFeHRyYWN0aW5nIGFyY2hpdmUgZm9yICVzIiUobmFtZSwpKQogICAgIGJ1aWxkRGlyPW9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkRGlyKToKICAgICAgICAgb3MubWtkaXIoYnVpbGREaXIpCkBAIC02NTUsMTggKzczNywzMSBAQAogICAgIGlmICdidWlsZERpcicgaW4gcmVjaXBlOgogICAgICAgICBvcy5jaGRpcihyZWNpcGVbJ2J1aWxkRGlyJ10pCiAKLQotICAgIGZvciBmbiBpbiByZWNpcGUuZ2V0KCdwYXRjaGVzJywgKCkpOgotICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCdodHRwOi8vJyk6Ci0gICAgICAgICAgICAjIERvd25sb2FkIHRoZSBwYXRjaCBiZWZvcmUgYXBwbHlpbmcgaXQuCi0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKERFUFNSQywgb3MucGF0aC5iYXNlbmFtZShmbikpCi0gICAgICAgICAgICBkb3dubG9hZFVSTChmbiwgcGF0aCkKLSAgICAgICAgICAgIGZuID0gcGF0aAotCi0gICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgZm4pCisgICAgZm9yIHBhdGNoIGluIHJlY2lwZS5nZXQoJ3BhdGNoZXMnLCAoKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0Y2gsIHR1cGxlKToKKyAgICAgICAgICAgIHVybCwgY2hlY2tzdW0gPSBwYXRjaAorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oREVQU1JDLCBvcy5wYXRoLmJhc2VuYW1lKHVybCkpCisgICAgICAgICAgICB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGF0Y2ggaXMgYSBmaWxlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihjdXJkaXIsIHBhdGNoKQogICAgICAgICBydW5Db21tYW5kKCdwYXRjaCAtcCVzIDwgJXMnJShyZWNpcGUuZ2V0KCdwYXRjaGxldmVsJywgMSksCiAgICAgICAgICAgICBzaGVsbFF1b3RlKGZuKSwpKQogCisgICAgZm9yIHBhdGNoc2NyaXB0IGluIHJlY2lwZS5nZXQoJ3BhdGNoc2NyaXB0cycsICgpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRjaHNjcmlwdCwgdHVwbGUpOgorICAgICAgICAgICAgdXJsLCBjaGVja3N1bSA9IHBhdGNoc2NyaXB0CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihERVBTUkMsIG9zLnBhdGguYmFzZW5hbWUodXJsKSkKKyAgICAgICAgICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBwYXRjaCBpcyBhIGZpbGUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgcGF0Y2hzY3JpcHQpCisgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcuYnoyJyk6CisgICAgICAgICAgICBydW5Db21tYW5kKCdidW56aXAyIC1mayAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgICAgIGZuID0gZm5bOi00XQorICAgICAgICBydW5Db21tYW5kKCdzaCAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgaWYgY29uZmlndXJlIGlzIG5vdCBOb25lOgogICAgICAgICBjb25maWd1cmVfYXJncyA9IFsKICAgICAgICAgICAgICItLXByZWZpeD0vdXNyL2xvY2FsIiwKQEAgLTY4NSw0MCArNzgwLDQ0IEBACiAKICAgICAgICAgaWYgcmVjaXBlLmdldCgndXNlTERGbGFncycsIDEpOgogICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MuZXh0ZW5kKFsKLSAgICAgICAgICAgICAgICAiQ0ZMQUdTPS1hcmNoICVzIC1pc3lzcm9vdCAlcyAtSSVzL3Vzci9sb2NhbC9pbmNsdWRlIiUoCisgICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzIC1pc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5nZXQoJ2V4dHJhX2NmbGFncycsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJhc2VkaXIpWzE6LTFdLCksCi0gICAgICAgICAgICAgICAgIkxERkxBR1M9LXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgIkxERkxBR1M9LW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShiYXNlZGlyKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmVfYXJncy5leHRlbmQoWwotICAgICAgICAgICAgICAgICJDRkxBR1M9LWFyY2ggJXMgLWlzeXNyb290ICVzIC1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAiQ0ZMQUdTPSVzLW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLWFyY2ggJXMgLWlzeXNyb290ICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUklcy91c3IvbG9jYWwvaW5jbHVkZSIlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmdldCgnZXh0cmFfY2ZsYWdzJywgJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgREVQVEFSR0VULAogICAgICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYmFzZWRpcilbMTotMV0sKSwKICAgICAgICAgICAgIF0pCiAKICAgICAgICAgaWYgJ2NvbmZpZ3VyZV9wb3N0JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzID0gbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCisgICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzICsgbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCiAKICAgICAgICAgY29uZmlndXJlX2FyZ3MuaW5zZXJ0KDAsIGNvbmZpZ3VyZSkKICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBbIHNoZWxsUXVvdGUoYSkgZm9yIGEgaW4gY29uZmlndXJlX2FyZ3MgXQogCi0gICAgICAgIGlmICdjb25maWd1cmVfZW52JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncy5pbnNlcnQoMCwgcmVjaXBlWydjb25maWd1cmVfZW52J10pCi0KLSAgICAgICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlIGZvciAlcyIlKG5hbWUsKQorICAgICAgICBwcmludCgiUnVubmluZyBjb25maWd1cmUgZm9yICVzIiUobmFtZSwpKQogICAgICAgICBydW5Db21tYW5kKCcgJy5qb2luKGNvbmZpZ3VyZV9hcmdzKSArICcgMj4mMScpCiAKLSAgICBwcmludCAiUnVubmluZyBpbnN0YWxsIGZvciAlcyIlKG5hbWUsKQorICAgIHByaW50KCJSdW5uaW5nIGluc3RhbGwgZm9yICVzIiUobmFtZSwpKQogICAgIHJ1bkNvbW1hbmQoJ3sgJyArIGluc3RhbGwgKyAnIDt9IDI+JjEnKQogCi0gICAgcHJpbnQgIkRvbmUgJXMiJShuYW1lLCkKLSAgICBwcmludCAiIgorICAgIHByaW50KCJEb25lICVzIiUobmFtZSwpKQorICAgIHByaW50KCIiKQogCiAgICAgb3MuY2hkaXIoY3VyZGlyKQogCkBAIC03MjYsOSArODI1LDkgQEAKICAgICAiIiIKICAgICBCdWlsZCBvdXIgZGVwZW5kZW5jaWVzIGludG8gJFdPUktESVIvbGlicmFyaWVzL3Vzci9sb2NhbAogICAgICIiIgotICAgIHByaW50ICIiCi0gICAgcHJpbnQgIkJ1aWxkaW5nIHJlcXVpcmVkIGxpYnJhcmllcyIKLSAgICBwcmludCAiIgorICAgIHByaW50KCIiKQorICAgIHByaW50KCJCdWlsZGluZyByZXF1aXJlZCBsaWJyYXJpZXMiKQorICAgIHByaW50KCIiKQogICAgIHVuaXZlcnNhbCA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykKICAgICBvcy5ta2Rpcih1bml2ZXJzYWwpCiAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHVuaXZlcnNhbCwgJ3VzcicsICdsb2NhbCcsICdsaWInKSkKQEAgLTc0Miw3ICs4NDEsNyBAQAogZGVmIGJ1aWxkUHl0aG9uRG9jcygpOgogICAgICMgVGhpcyBzdG9yZXMgdGhlIGRvY3VtZW50YXRpb24gYXMgUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbgogICAgICMgaW5zaWRlIHRoZSBmcmFtd29yay4gcHlkb2MgYW5kIElETEUgd2lsbCBwaWNrIGl0IHVwIHRoZXJlLgotICAgIHByaW50ICJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIgorICAgIHByaW50KCJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIikKICAgICByb290RGlyID0gb3MucGF0aC5qb2luKFdPUktESVIsICdfcm9vdCcpCiAgICAgYnVpbGREaXIgPSBvcy5wYXRoLmpvaW4oJy4uLy4uL0RvYycpCiAgICAgZG9jZGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdweWRvY3MnKQpAQCAtNzU3LDcgKzg1Niw3IEBACiAKIAogZGVmIGJ1aWxkUHl0aG9uKCk6Ci0gICAgcHJpbnQgIkJ1aWxkaW5nIGEgdW5pdmVyc2FsIHB5dGhvbiBmb3IgJXMgYXJjaGl0ZWN0dXJlcyIgJSBVTklWRVJTQUxBUkNIUworICAgIHByaW50KCJCdWlsZGluZyBhIHVuaXZlcnNhbCBweXRob24gZm9yICVzIGFyY2hpdGVjdHVyZXMiICUgVU5JVkVSU0FMQVJDSFMpCiAKICAgICBidWlsZERpciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcsICdweXRob24nKQogICAgIHJvb3REaXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19yb290JykKQEAgLTc4NSw3ICs4ODQsNyBAQAogICAgICMgd2lsbCBmaW5kIHRoZW0gZHVyaW5nIGl0cyBleHRlbnNpb24gaW1wb3J0IHNhbml0eSBjaGVja3MuCiAgICAgb3MuZW52aXJvblsnRFlMRF9MSUJSQVJZX1BBVEgnXSA9IG9zLnBhdGguam9pbihXT1JLRElSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnLCAndXNyJywgJ2xvY2FsJywgJ2xpYicpCi0gICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlLi4uIgorICAgIHByaW50KCJSdW5uaW5nIGNvbmZpZ3VyZS4uLiIpCiAgICAgcnVuQ29tbWFuZCgiJXMgLUMgLS1lbmFibGUtZnJhbWV3b3JrIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz0lcyAiCiAgICAgICAgICAgICAgICAiLS13aXRoLXVuaXZlcnNhbC1hcmNocz0lcyAiCiAgICAgICAgICAgICAgICAiJXMgIgpAQCAtNzk3LDE5ICs4OTYsMTkgQEAKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSwKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UiKQogICAgIHJ1bkNvbW1hbmQoIm1ha2UiKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgbWFrZSBpbnN0YWxsIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UgaW5zdGFsbCIpCiAgICAgcnVuQ29tbWFuZCgibWFrZSBpbnN0YWxsIERFU1RESVI9JXMiJSgKICAgICAgICAgc2hlbGxRdW90ZShyb290RGlyKSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMiCisgICAgcHJpbnQoIlJ1bm5pbmcgbWFrZSBmcmFtZXdvcmtpbnN0YWxsZXh0cmFzIikKICAgICBydW5Db21tYW5kKCJtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMgREVTVERJUj0lcyIlKAogICAgICAgICBzaGVsbFF1b3RlKHJvb3REaXIpKSkKIAogICAgIGRlbCBvcy5lbnZpcm9uWydEWUxEX0xJQlJBUllfUEFUSCddCi0gICAgcHJpbnQgIkNvcHlpbmcgcmVxdWlyZWQgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBwcmludCgiQ29weWluZyByZXF1aXJlZCBzaGFyZWQgbGlicmFyaWVzIikKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycsICdMaWJyYXJ5JykpOgogICAgICAgICBydW5Db21tYW5kKCJtdiAlcy8qICVzIiUoCiAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbigKQEAgLTgyMCwxNiArOTE5LDE2IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwcmludCAiRml4IGZpbGUgbW9kZXMiCisgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKICAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKKyAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGZybURpcik6CiAgICAgICAgIGZvciBkbiBpbiBkaXJuYW1lczoKLSAgICAgICAgICAgIG9zLmNobW9kKG9zLnBhdGguam9pbihkaXJwYXRoLCBkbiksIDA3NzUpCisgICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZG4pLCBTVEFUXzBvNzc1KQogICAgICAgICAgICAgb3MuY2hvd24ob3MucGF0aC5qb2luKGRpcnBhdGgsIGRuKSwgLTEsIGdpZCkKIAotCiAgICAgICAgIGZvciBmbiBpbiBmaWxlbmFtZXM6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmbik6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTg0MCw2ICs5MzksMTkgQEAKICAgICAgICAgICAgIG9zLmNobW9kKHAsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSB8IHN0YXQuU19JV0dSUCkKICAgICAgICAgICAgIG9zLmNob3duKHAsIC0xLCBnaWQpCiAKKyAgICAgICAgICAgIGlmIGZuIGluIEVYUEVDVEVEX1NIQVJFRF9MSUJTOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIHRoYXQgdGhpcyBmaWxlIHdhcyBsaW5rZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAjIGV4cGVjdGVkIGxpYnJhcnkgcGF0aCBhbmQgdmVyc2lvbgorICAgICAgICAgICAgICAgIGRhdGEgPSBjYXB0dXJlQ29tbWFuZCgib3Rvb2wgLUwgJXMiICUgc2hlbGxRdW90ZShwKSkKKyAgICAgICAgICAgICAgICBmb3Igc2wgaW4gRVhQRUNURURfU0hBUkVEX0xJQlNbZm5dOgorICAgICAgICAgICAgICAgICAgICBpZiAoIlx0JXMgIiAlIHNsKSBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJFeHBlY3RlZCBzaGFyZWQgbGliICVzIHdhcyBub3QgbGlua2VkIHdpdGggJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNsLCBwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9saWJfZXJyb3IgPSBUcnVlCisKKyAgICBpZiBzaGFyZWRfbGliX2Vycm9yOgorICAgICAgICBmYXRhbCgiVW5leHBlY3RlZCBzaGFyZWQgbGlicmFyeSBlcnJvcnMuIikKKwogICAgIGlmIFBZVEhPTl8zOgogICAgICAgICBMRFZFUlNJT049Tm9uZQogICAgICAgICBWRVJTSU9OPU5vbmUKQEAgLTg2MywxOSArOTc1LDI2IEBACiAKICAgICAjIFdlIGFkZGVkIHNvbWUgZGlyZWN0b3JpZXMgdG8gdGhlIHNlYXJjaCBwYXRoIGR1cmluZyB0aGUgY29uZmlndXJlCiAgICAgIyBwaGFzZS4gUmVtb3ZlIHRob3NlIGJlY2F1c2UgdGhvc2UgZGlyZWN0b3JpZXMgd29uJ3QgYmUgdGhlcmUgb24KLSAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLgotICAgIHBhdGggPW9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnLAotICAgICAgICAgICAgICAgICdWZXJzaW9ucycsIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCksCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgKyBjb25maWdfc3VmZml4LCAnTWFrZWZpbGUnKQotICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgZGF0YSA9IGZwLnJlYWQoKQotICAgIGZwLmNsb3NlKCkKKyAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLiBBbHNvIHJlbW92ZSB0aGUgZGlyZWN0b3JpZXMgZnJvbSBfc3lzY29uZmlnZGF0YS5weQorICAgICMgKGFkZGVkIGluIDMuMykgaWYgaXQgZXhpc3RzLgogCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUwlcy9saWJyYXJpZXMvdXNyL2xvY2FsL2xpYiclKFdPUktESVIsKSwgJycpCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQotICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgZnAud3JpdGUoZGF0YSkKLSAgICBmcC5jbG9zZSgpCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwgJ2xpYicsICdweXRob24lcyclKHZlcnNpb24sKSkKKyAgICBwYXRocyA9IFtvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdjb25maWcnICsgY29uZmlnX3N1ZmZpeCwgJ01ha2VmaWxlJyksCisgICAgICAgICAgICAgb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKV0KKyAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBmcC5jbG9zZSgpCisKKyAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnIC1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInJShXT1JLRElSLCksICcnKQorICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCcgLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQorICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICAgICBmcC53cml0ZShkYXRhKQorICAgICAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTkwNywxNyArMTAyNiwxNyBAQAogCiAgICAgIyBUaGlzIG9uZSBpcyBub3QgaGFuZHkgYXMgYSB0ZW1wbGF0ZSB2YXJpYWJsZQogICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJyRQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSJywgJy9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yaycpCi0gICAgZnAgPSBvcGVuKG91dFBhdGgsICd3YicpCisgICAgZnAgPSBvcGVuKG91dFBhdGgsICd3JykKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAogZGVmIHBhdGNoU2NyaXB0KGluUGF0aCwgb3V0UGF0aCk6CiAgICAgZGF0YSA9IGZpbGVDb250ZW50cyhpblBhdGgpCiAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnQFBZVkVSQCcsIGdldFZlcnNpb24oKSkKLSAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3diJykKKyAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3cnKQogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKG91dFBhdGgsIDA3NTUpCisgICAgb3MuY2htb2Qob3V0UGF0aCwgU1RBVF8wbzc1NSkKIAogCiAKQEAgLTkzNCw3ICsxMDUzLDcgQEAKICAgICAgICAgcmVhZG1lID0gdGV4dHdyYXAuZGVkZW50KHJlY2lwZVsncmVhZG1lJ10pCiAgICAgICAgIGlzUmVxdWlyZWQgPSByZWNpcGUuZ2V0KCdyZXF1aXJlZCcsIFRydWUpCiAKLSAgICAgICAgcHJpbnQgIi0gYnVpbGRpbmcgcGFja2FnZSAlcyIlKHBrZ25hbWUsKQorICAgICAgICBwcmludCgiLSBidWlsZGluZyBwYWNrYWdlICVzIiUocGtnbmFtZSwpKQogCiAgICAgICAgICMgU3Vic3RpdHV0ZSBzb21lIHZhcmlhYmxlcwogICAgICAgICB0ZXh0dmFycyA9IGRpY3QoCkBAIC05NzksNyArMTA5OCw3IEBACiAgICAgICAgICAgICBwYXRjaFNjcmlwdChwb3N0ZmxpZ2h0LCBvcy5wYXRoLmpvaW4ocnNyY0RpciwgJ3Bvc3RmbGlnaHQnKSkKIAogICAgICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgICAgICBtYWpvciwgbWlub3IgPSBtYXAoaW50LCBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nLCAyKSkKKyAgICAgICAgbWFqb3IsIG1pbm9yID0gZ2V0VmVyc2lvbk1ham9yTWlub3IoKQogICAgICAgICBwbCA9IFBsaXN0KAogICAgICAgICAgICAgICAgIENGQnVuZGxlR2V0SW5mb1N0cmluZz0iUHl0aG9uLiVzICVzIiUocGtnbmFtZSwgdmVycywpLAogICAgICAgICAgICAgICAgIENGQnVuZGxlSWRlbnRpZmllcj0nb3JnLnB5dGhvbi5QeXRob24uJXMnJShwa2duYW1lLCksCkBAIC0xMDE2LDcgKzExMzUsNyBAQAogZGVmIG1ha2VNcGtnUGxpc3QocGF0aCk6CiAKICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgIG1ham9yLCBtaW5vciA9IG1hcChpbnQsIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpKQorICAgIG1ham9yLCBtaW5vciA9IGdldFZlcnNpb25NYWpvck1pbm9yKCkKIAogICAgIHBsID0gUGxpc3QoCiAgICAgICAgICAgICBDRkJ1bmRsZUdldEluZm9TdHJpbmc9IlB5dGhvbiAlcyIlKHZlcnMsKSwKQEAgLTExMjcsNyArMTI0Niw3IEBACiAgICAgIyBDdXN0b20gaWNvbiBmb3IgdGhlIERNRywgc2hvd24gd2hlbiB0aGUgRE1HIGlzIG1vdW50ZWQuCiAgICAgc2h1dGlsLmNvcHkoIi4uL0ljb25zL0Rpc2sgSW1hZ2UuaWNucyIsCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUsICIuVm9sdW1lSWNvbi5pY25zIikpCi0gICAgcnVuQ29tbWFuZCgiL0RldmVsb3Blci9Ub29scy9TZXRGaWxlIC1hIEMgJXMvIiUoCisgICAgcnVuQ29tbWFuZCgiU2V0RmlsZSAtYSBDICVzLyIlKAogICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUpKSwpKQogCiAgICAgcnVuQ29tbWFuZCgiaGRpdXRpbCBkZXRhY2ggJXMiJShzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAibW50Iiwgdm9sbmFtZSkpKSkKQEAgLTExNjgsNiArMTI4Nyw3IEBACiAKICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9IERFUFRBUkdFVAogICAgIG9zLmVudmlyb25bJ0NDJ10gPSBDQworICAgIG9zLmVudmlyb25bJ0NYWCddID0gQ1hYCiAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhXT1JLRElSKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShXT1JLRElSKQpAQCAtMTE5OCw3ICsxMzE4LDcgQEAKIAogICAgIGZvbGRlciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAiX3Jvb3QiLCAiQXBwbGljYXRpb25zIiwgIlB5dGhvbiAlcyIlKAogICAgICAgICBnZXRWZXJzaW9uKCksKSkKLSAgICBvcy5jaG1vZChmb2xkZXIsIDA3NTUpCisgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIAogICAgICMgQ3JlYXRlIHRoZSBpbnN0YWxsZXIKQEAgLTEyMTEsOSArMTMzMSw5IEBACiAgICAgc2h1dGlsLmNvcHkoJy4uLy4uL0xJQ0VOU0UnLCBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2luc3RhbGxlcicsICdMaWNlbnNlLnR4dCcpKQogCiAgICAgZnAgPSBvcGVuKG9zLnBhdGguam9pbihXT1JLRElSLCAnaW5zdGFsbGVyJywgJ0J1aWxkLnR4dCcpLCAndycpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJVSUxEIElORk8iCi0gICAgcHJpbnQgPj4gZnAsICIjIERhdGU6IiwgdGltZS5jdGltZSgpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJ5OiIsIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MKKyAgICBmcC53cml0ZSgiIyBCVUlMRCBJTkZPXG4iKQorICAgIGZwLndyaXRlKCIjIERhdGU6ICVzXG4iICUgdGltZS5jdGltZSgpKQorICAgIGZwLndyaXRlKCIjIEJ5OiAlc1xuIiAlIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MpCiAgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBbmQgY29weSBpdCB0byBhIERNRwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoIGIvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWFiM2QzLi4wMDAwMDAwCi0tLSBhL01hYy9CdWlsZFNjcmlwdC9uY3Vyc2VzLTUuNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpZmYgLXIgLXUgbmN1cnNlcy01LjUtb3JpZy90ZXN0L01ha2VmaWxlLmluIG5jdXJzZXMtNS41L3Rlc3QvTWFrZWZpbGUuaW4KLS0tLSBuY3Vyc2VzLTUuNS1vcmlnL3Rlc3QvTWFrZWZpbGUuaW4JMjAwNi0wMy0yNCAxMjo0Nzo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBuY3Vyc2VzLTUuNS90ZXN0L01ha2VmaWxlLmluCTIwMDYtMDMtMjQgMTI6NDc6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNzUsNyArNzUsNyBAQAotIE1BVEhfTElCCT0gQE1BVEhfTElCQAotIAotIExECQk9IEBMREAKLS1MSU5LCQk9IEBMSU5LX1RFU1RTQCAkKExJQlRPT0xfTElOSykgJChDQykgJChDRkxBR1MpCi0rTElOSwkJPSBATElOS19URVNUU0AgJChMSUJUT09MX0xJTkspICQoQ0MpIAotIAotIHVzRkxBR1MJCT0gQExEX01PREVMQCBATE9DQUxfTERGTEFHU0AgQExERkxBR1NACi0gCi1kaWZmIC1ydSBuY3Vyc2VzLTUuNS1vcmlnL25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYyAyMDA0LTAxLTExIDAyOjU3OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jICAgICAgMjAwNi0wMy0yNSAyMjo0OTozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NzQsNyArNDc0LDcgQEAKLSAgICAgfQotIAotICAgICAvKiB0cnVuY2F0ZSB0aGUgdGVybWluYWwgbmFtZSB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyAqLwotLSAgICAodm9pZCkgc3ByaW50Zih0dG4sICIlYy8lLipzIiwgKnRuLCAoaW50KSBzaXplb2YodHRuKSAtIDMsIHRuKTsKLSsgICAgKHZvaWQpIHNwcmludGYodHRuLCAiJXgvJS4qcyIsICp0biwgKGludCkgc2l6ZW9mKHR0bikgLSAzLCB0bik7Ci0gCi0gICAgIC8qIFRoaXMgaXMgU3lzdGVtIFYgYmVoYXZpb3IsIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIHJlcXVpcmVtZW50cyBmb3IKLSAgICAgICogd3JpdGluZyB0ZXJtaW5mbyBlbnRyaWVzLgotZGlmZiAtcnUgbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUgbmN1cnNlcy01LjUvY29uZmlndXJlCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUJMjAwNS0wOS0yNCAyMzo1MDo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBuY3Vyc2VzLTUuNS9jb25maWd1cmUJMjAwNi0wMy0yNiAyMjoyNDo1OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01MDI3LDcgKzUwMjcsNyBAQAotIAlkYXJ3aW4qKQotIAkJRVhUUkFfQ0ZMQUdTPSItbm8tY3BwLXByZWNvbXAiCi0gCQlDQ19TSEFSRURfT1BUUz0iLWR5bmFtaWMiCi0tCQlNS19TSEFSRURfTElCPSckKENDKSAtZHluYW1pY2xpYiAtaW5zdGFsbF9uYW1lICQoREVTVERJUikkKGxpYmRpcikvYGJhc2VuYW1lICRAYCAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1jdXJyZW50X3ZlcnNpb24gJChBQklfVkVSU0lPTikgLW8gJEAnCi0rCQlNS19TSEFSRURfTElCPSckKENDKSAkKENGTEFHUykgLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpL2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKEFCSV9WRVJTSU9OKSAtY3VycmVudF92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1vICRAJwotIAkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPWFiaQotIAkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD15ZXMKLSAJCTs7CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQKaW5kZXggZjFiZWRhMC4uOWFjNTJkMCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnR4dApAQCAtNSw4ICs1LDE1IEBACiBJbnN0YWxsYXRpb24gcmVxdWlyZXMgYXBwcm94aW1hdGVseSAkSU5TVEFMTF9TSVpFIE1CIG9mIGRpc2sgc3BhY2UsCiBpZ25vcmUgdGhlIG1lc3NhZ2UgdGhhdCBpdCB3aWxsIHRha2UgemVybyBieXRlcy4KIAotWW91IG11c3QgaW5zdGFsbCBvbnRvIHlvdXIgY3VycmVudCBib290IGRpc2ssIGV2ZW4gdGhvdWdoIHRoZQotaW5zdGFsbGVyIGRvZXMgbm90IGVuZm9yY2UgdGhpcywgb3RoZXJ3aXNlIHRoaW5ncyB3aWxsIG5vdCB3b3JrLgorSWYgeW91IGFyZSBhdHRlbXB0aW5nIHRvIGluc3RhbGwgb24gYW4gT1MgWCAxMC44IHN5c3RlbSwgeW91IG1heQorc2VlIGEgbWVzc2FnZSB0aGF0IFB5dGhvbiBjYW4ndCBiZSBpbnN0YWxsZWQgYmVjYXVzZSBpdCBpcyBmcm9tIGFuCit1bmlkZW50aWZpZWQgZGV2ZWxvcGVyLiAgVGhpcyBpcyBiZWNhdXNlIHRoaXMgUHl0aG9uIGluc3RhbGxlcgorcGFja2FnZSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCB0aGUgR2F0ZWtlZXBlciBzZWN1cml0eSBmZWF0dXJlCitpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gIFRvIGFsbG93IFB5dGhvbiB0byBiZSBpbnN0YWxsZWQsIHlvdQorY2FuIG92ZXJyaWRlIHRoZSBHYXRla2VlcGVyIHBvbGljeSBmb3IgdGhpcyBpbnN0YWxsLiAgSW4gdGhlIEZpbmRlciwKK2luc3RlYWQgb2YgZG91YmxlLWNsaWNraW5nLCBjb250cm9sLWNsaWNrIG9yIHJpZ2h0IGNsaWNrIHRoZSAiUHl0aG9uIgoraW5zdGFsbGVyIHBhY2thZ2UgaWNvbi4gIFRoZW4gc2VsZWN0ICJPcGVuIHVzaW5nIC4uLiBJbnN0YWxsZXIiIGZyb20KK3RoZSBjb250ZXh0dWFsIG1lbnUgdGhhdCBhcHBlYXJzLgogCiBQeXRob24gY29uc2lzdHMgb2YgdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSBpbnRlcnByZXRlciwgcGx1cwogYSBzZXQgb2YgcHJvZ3JhbXMgdG8gYWxsb3cgZWFzeSBhY2Nlc3MgdG8gaXQgZm9yIE1hYyB1c2VycyBpbmNsdWRpbmcKQEAgLTE2LDEwICsyMywxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgICoqKiogSU1QT1JUQU5UICoqKioKICAgICAgICAgICAgICAgICAgICAgCi1CZWZvcmUgdXNpbmcgSURMRSBvciBvdGhlciBwcm9ncmFtcyB1c2luZyB0aGUgdGtpbnRlciBncmFwaGljYWwgdXNlcgotaW50ZXJmYWNlIHRvb2xraXQsIHZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCi1mb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zCi1vZiBUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIE1hYyBPUyBYLgorVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIHRraW50ZXIgZ3JhcGhpY2FsIHVzZXIKK2ludGVyZmFjZSB0b29sa2l0LCB5b3UgbWF5IG5lZWQgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKK3RoZSBUY2wvVGsgZnJhbWV3b3Jrcy4gIFZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCitmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mCitUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLgogCiAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioKIApAQCAtMzIsNSArNDAsMTMgQEAKIHdlbGwuIERvdWJsZS1jbGljayBvbiB0aGUgIlVwZGF0ZSBTaGVsbCBQcm9maWxlIiBjb21tYW5kIHRvIGFkZCB0aGUKICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayB0byB5b3VyIHNoZWxsJ3Mgc2VhcmNoIHBhdGguCiAKK1lvdSBtdXN0IGluc3RhbGwgb250byB5b3VyIGN1cnJlbnQgYm9vdCBkaXNrLCBldmVuIHRob3VnaCB0aGUKK2luc3RhbGxlciBkb2VzIG5vdCBlbmZvcmNlIHRoaXMsIG90aGVyd2lzZSB0aGluZ3Mgd2lsbCBub3Qgd29yay4KKworWW91IGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiB0aGUgZGlzayBpbWFnZSBmaWxlIGNvbnRhaW5pbmcgdGhlCitpbnN0YWxsZXIgcGFja2FnZSBhbmQgdGhpcyBSZWFkTWUgZmlsZSBieSBjb21wYXJpbmcgaXRzIG1kNSBjaGVja3N1bQorYW5kIHNpemUgd2l0aCB0aGUgdmFsdWVzIHB1Ymxpc2hlZCBvbiB0aGUgcmVsZWFzZSBwYWdlIGxpbmtlZCBhdAoraHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkLworCiBNb3JlIGluZm9ybWF0aW9uIG9uIFB5dGhvbiBpbiBnZW5lcmFsIGNhbiBiZSBmb3VuZCBhdAogaHR0cDovL3d3dy5weXRob24ub3JnLgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKaW5kZXggZDIwOWIxMC4uODZmYmY2MyAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCkBAIC0xLDggKzEsOCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMDM4XGNvY29hc3VicnRmMzUwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjExMzhcY29jb2FzdWJydGY0NzAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9CiBccGFwZXJ3MTE5MDRccGFwZXJoMTY4MzZcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzk2NDBcdmlld2gxMDYyMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccWxccW5hdHVyYWwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTIwLDkgKzIwLDkgQEAKIFwKIAogXGIgTk9URTogCi1cYjAgVGhpcyBwYWNrYWdlIHdpbGwgYnkgZGVmYXVsdCBub3QgdXBkYXRlIHlvdXIgc2hlbGwgcHJvZmlsZSBhbmQgd2lsbCBhbHNvIG5vdCBpbnN0YWxsIGZpbGVzIGluIC91c3IvbG9jYWwuICBEb3VibGUtY2xpY2sgCitcYjAgVGhpcyBwYWNrYWdlIHdpbGwgbm90IHVwZGF0ZSB5b3VyIHNoZWxsIHByb2ZpbGUgYnkgZGVmYXVsdC4gIERvdWJsZS1jbGljayAKIFxiIFVwZGF0ZSBTaGVsbCBQcm9maWxlCi1cYjAgIGF0IGFueSB0aW1lIHRvIG1ha2UgJEZVTExfVkVSU0lPTiB0aGUgZGVmYXVsdCBQeXRob24uXAorXGIwICBhdCBhbnkgdGltZSB0byBtYWtlICRGVUxMX1ZFUlNJT04gdGhlIGRlZmF1bHQgUHl0aG9uIDMgdmVyc2lvbi4gIFRoaXMgdmVyc2lvbiBjYW4gY28tZXhpc3Qgd2l0aCBvdGhlciBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgUHl0aG9uIDMgYW5kIFB5dGhvbiAyLlwKIFwKIAogXGIgSU1QT1JUQU5UOgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uCmluZGV4IDMxZmJmMmYuLmM0YmE2MTYgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbgorKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24KQEAgLTUsMTkgKzUsMTAgQEAKIEZXS19ET0NESVJfU1VCUEFUSD0iUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbiIKIEZXS19ET0NESVI9IiR7RldLfS8ke0ZXS19ET0NESVJfU1VCUEFUSH0iCiBBUFBESVI9Ii9BcHBsaWNhdGlvbnMvUHl0aG9uICR7UFlWRVJ9IgotREVWX0RPQ0RJUj0iL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uIgogU0hBUkVfRElSPSIke0ZXS30vc2hhcmUiCiBTSEFSRV9ET0NESVI9IiR7U0hBUkVfRElSfS9kb2MvcHl0aG9uJHtQWVZFUn0iCiBTSEFSRV9ET0NESVJfVE9fRldLPSIuLi8uLi8uLiIKIAotIyBtYWtlIGxpbmsgaW4gL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uLyBmb3IgWGNvZGUgdXNlcnMKLWlmIFsgLWQgIiR7REVWX0RPQ0RJUn0iIF07IHRoZW4KLSAgICBpZiBbICEgLWQgIiR7REVWX0RPQ0RJUn0vUHl0aG9uIiBdOyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICIke0RFVl9ET0NESVJ9L1B5dGhvbiIKLSAgICBmaQotICAgIGxuIC1maHMgIiR7RldLX0RPQ0RJUn0iICIke0RFVl9ET0NESVJ9L1B5dGhvbi9SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAke1BZVkVSfSIKLWZpCi0KICMgbWFrZSBsaW5rIGluIC9BcHBsaWNhdGlvbnMvUHl0aG9uIG0ubi8gZm9yIEZpbmRlciB1c2VycwogaWYgWyAtZCAiJHtBUFBESVJ9IiBdOyB0aGVuCiAgICAgbG4gLWZocyAiJHtGV0tfRE9DRElSfS9pbmRleC5odG1sIiAiJHtBUFBESVJ9L1B5dGhvbiBEb2N1bWVudGF0aW9uLmh0bWwiCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yayBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCmluZGV4IDlmYzkxNTEuLmViMDgyOTcgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCisrKyBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCkBAIC04LDE0ICs4LDI0IEBACiAKICIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAotICAgIC14IGJhZHN5bnRheCAteCBzaXRlLXBhY2thZ2VzIFwKKyAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAogIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCi0gICAgLXggYmFkc3ludGF4IC14IHNpdGUtcGFja2FnZXMgXAorICAgIC1mIC14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9IgogCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyAgICAtZiAteCBiYWRzeW50YXggXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCisKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorICAgIC1mIC14IGJhZHN5bnRheCBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKKwogY2hncnAgLVIgYWRtaW4gIiR7RldLfSIKIGNobW9kIC1SIGcrdyAiJHtGV0t9IgogCmRpZmYgLS1naXQgYS9NYWMvTWFrZWZpbGUuaW4gYi9NYWMvTWFrZWZpbGUuaW4KaW5kZXggOGE2MmE5MC4uMzU0YzFmZCAxMDA2NDQKLS0tIGEvTWFjL01ha2VmaWxlLmluCisrKyBiL01hYy9NYWtlZmlsZS5pbgpAQCAtNDAsMTQgKzQwLDEzIEBACiBJTlNUQUxMX0RBVEE9QElOU1RBTExfREFUQUAKIExOPUBMTkAKIFNUUklQRkxBRz0tcwotQ1BNQUM9L0RldmVsb3Blci9Ub29scy9DcE1hYworQ1BNQUM9Q3BNYWMKIAogQVBQVEVNUExBVEU9JChzcmNkaXIpL1Jlc291cmNlcy9hcHAKLUFQUFNVQkRJUlM9TWFjT1MgUmVzb3VyY2VzIAorQVBQU1VCRElSUz1NYWNPUyBSZXNvdXJjZXMKIGNvbXBpbGVhbGw9JChzcmNkaXIpLy4uL0xpYi9jb21waWxlYWxsLnB5CiAKLWluc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUgXAotCWNoZWNrYXBwbGVweXRob24KK2luc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUKIAogaW5zdGFsbF9weXRob253OiBweXRob253CiAJJChJTlNUQUxMX1BST0dSQU0pICQoU1RSSVBGTEFHKSBweXRob253ICIkKERFU1RESVIpJChwcmVmaXgpL2Jpbi9weXRob253JChWRVJTSU9OKSIKQEAgLTcyLDcgKzcxLDcgQEAKIAlmb3IgZm4gaW4gcHl0aG9uMyBweXRob253MyBpZGxlMyBweWRvYzMgcHl0aG9uMy1jb25maWcgXAogCQkgIHB5dGhvbiQoVkVSU0lPTikgcHl0aG9udyQoVkVSU0lPTikgaWRsZSQoVkVSU0lPTikgXAogCQkgIHB5ZG9jJChWRVJTSU9OKSBweXRob24kKFZFUlNJT04pLWNvbmZpZyAydG8zIFwKLQkJICAydG8zLSQoVkVSU0lPTikgO1wKKwkJICAydG8zLSQoVkVSU0lPTikgcHl2ZW52IHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTkzLDcgKzkyLDcgQEAKIAkJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICIkKERFU1RESVIpJChGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgpL2JpbiIgO1wKIAlmaQogCWZvciBmbiBpbiBweXRob24kKFZFUlNJT04pIHB5dGhvbnckKFZFUlNJT04pIGlkbGUkKFZFUlNJT04pIFwKLQkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pO1wKKwkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pIHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTE5NiwxNCArMTk1LDYgQEAKIAkJIiQoREVTVERJUikkKHByZWZpeCkvc2hhcmUvZG9jL3B5dGhvbiQoVkVSU0lPTikvZXhhbXBsZXMvVG9vbHMiIDsgXAogCQljaG1vZCAtUiB1Z28rclgsZ28tdyAiJChERVNURElSKSQocHJlZml4KS9zaGFyZS9kb2MvcHl0aG9uJChWRVJTSU9OKS9leGFtcGxlcy9Ub29scyIKIAotCi1jaGVja2FwcGxlcHl0aG9uOiAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weQotCUBpZiAhICQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSAtbjsgdGhlbiBcCi0JCWVjaG8gIiogV0FSTklORzogQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgd2lsbCBoYXZlIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyBmcm9tIG5vdyBvbi4iOyBcCi0JCWVjaG8gIiogV0FSTklORzogUnVuICQoc3JjZGlyKS9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5IHdpdGggXCJzdWRvXCIgdG8gZml4IHRoaXMuIjsgXAotCWZpCi0KLQogY2xlYW46CiAJcm0gcHl0aG9udwogCWNkIFB5dGhvbkxhdW5jaGVyICYmIG1ha2UgY2xlYW4KZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDY4NTNkYjQuLmY3YmM2YzMgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMSw2ICsxLDEzIEBACi09PT09PT09PT09PT0KLU1hY09TWCBOb3RlcwotPT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09CitQeXRob24gb24gTWFjIE9TIFggUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpBdXRob3JzOgorICAgIEphY2sgSmFuc2VuICgyMDA0LTA3KSwKKyAgICBSb25hbGQgT3Vzc29yZW4gKDIwMTAtMDQpLAorICAgIE5lZCBEZWlseSAoMjAxMi0wNikKKworOlZlcnNpb246IDMuMy4wCiAKIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBzb21lIE1hYyBPUyBYIHNwZWNpZmljIGZlYXR1cmVzIGluCiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KQEAgLTEyLDExICsxOSwxMSBAQAogICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAogICBpbmZvcm1hdGlvbiBvbiBmcmFtZXdvcmtzLgogCi0gIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXQgaW5zdGFsbGVkCisgIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXMgaW5zdGFsbGVkCiAgIGludG8gdGhhdCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCBhIHB5dGhvbiBmcmFtZXdvcmsgaW50bwogICB5b3VyIGhvbWUgZGlyZWN0b3J5OjoKIAotICAgICAkIGNvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAgJCAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKICAgICAgJCBtYWtlICYmIG1ha2UgaW5zdGFsbAogCiAgIFRoaXMgd2lsbCBpbnN0YWxsIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGluIGBgL1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3NgYCwKQEAgLTMzLDkgKzQwLDEwIEBACiAgIENyZWF0ZSBhIHVuaXZlcnNhbCBiaW5hcnkgYnVpbGQgb2Ygb2YgUHl0aG9uLiBUaGlzIGNhbiBiZSB1c2VkIHdpdGggYm90aAogICByZWd1bGFyIGFuZCBmcmFtZXdvcmsgYnVpbGRzLgogCi0gIFRoZSBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXMgd2hpY2ggT1NYIFNESyBzaG91bGQgYmUgdXNlZCB0byBwZXJmb3JtIHRoZQotICBidWlsZC4gVGhpcyBkZWZhdWx0cyB0byBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAsIHNwZWNpZnkgCi0gIGBgL2BgIHdoZW4gYnVpbGRpbmcgb24gYSAxMC41IHN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIDY0LWJpdCBjb2RlLgorICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVzIHdoaWNoIE9TIFggU0RLIHNob3VsZCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlCisgIGJ1aWxkLiAgSWYgeGNvZGVidWlsZCBpcyBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQsIHRoaXMgZGVmYXVsdHMgdG8KKyAgdGhlIFhjb2RlIGRlZmF1bHQgTWFjT1MgWCBTREssIG90aGVyd2lzZSBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAKKyAgaWYgYXZhaWxhYmxlIG9yIGBgL2BgIGlmIG5vdC4KIAogICBTZWUgdGhlIHNlY3Rpb24gX2BCdWlsZGluZyBhbmQgdXNpbmcgYSB1bml2ZXJzYWwgYmluYXJ5IG9mIFB5dGhvbiBvbiBNYWMgT1MgWGAKICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC00Myw3ICs1MSw5IEBACiAqIGBgLS13aXRoLXVuaXZlcmFsLWFyY2hzPVZBTFVFYGAKIAogICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgCi0gIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4KKyAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKKyAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cworICB0byBgYGludGVsYGAuCiAKIAogQnVpbGRpbmcgYW5kIHVzaW5nIGEgdW5pdmVyc2FsIGJpbmFyeSBvZiBQeXRob24gb24gTWFjIE9TIFgKQEAgLTUyLDkgKzYyLDE0IEBACiAxLiBXaGF0IGlzIGEgdW5pdmVyc2FsIGJpbmFyeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgYm90aCBQUEMgYW5kIGkzODYKLWFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUgc3BlZWQgb24gYm90aCBjbGFzc2ljIHBvd2VycGMgYmFzZWQgbWFjcyBhbmQKLXRoZSBuZXdlciBpbnRlbCBiYXNlZCBtYWNzLgorQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgbW9yZSB0aGFuIG9uZQorQ1BVIGFyY2hpdGVjdHVyZS4gIEEgdW5pdmVyc2FsIE9TIFggZXhlY3V0YWJsZSBmaWxlIG9yIGxpYnJhcnkgY29tYmluZXMgdGhlCithcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBpbnRvIG9uZSBmaWxlIGFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUKK3NwZWVkIG9uIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4gIFVuaXZlcnNhbCBmaWxlcyB3ZXJlIGludHJvZHVjZWQgaW4KK09TIFggMTAuNCB0byBhZGQgc3VwcG9ydCBmb3IgSW50ZWwtYmFzZWQgTWFjcyB0byB0aGUgZXhpc3RpbmcgUG93ZXJQQyAoUFBDKQorbWFjaGluZXMuICBJbiBPUyBYIDEwLjUgc3VwcG9ydCB3YXMgZXh0ZW5kZWQgdG8gNjQtYml0IEludGVsIGFuZCA2NC1iaXQgUFBDCithcmNoaXRlY3R1cmVzLiAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKK29mIGFyY2hpdGVjdHVyZXMgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCB0b29scyBhbmQgT1MgWCB2ZXJzaW9uIGluIHVzZS4KIAogMi4gSG93IGRvIEkgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3LDM4ICs4Miw1NSBAQAogICAkIG1ha2UgaW5zdGFsbAogCiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgd2l0aCBhIGZyYW1ld29yayBidWlsZCBvZiBweXRob24sIGJ1dCBhbHNvIHdpdGggYSBjbGFzc2ljCi11bml4IGJ1aWxkLiBFaXRoZXIgd2F5IHlvdSB3aWxsIGhhdmUgdG8gYnVpbGQgcHl0aG9uIG9uIE1hYyBPUyBYIDEwLjQgKG9yIGxhdGVyKQotd2l0aCBYY29kZSAyLjEgKG9yIGxhdGVyKS4gWW91IGFsc28gaGF2ZSB0byBpbnN0YWxsIHRoZSAxMC40dSBTREsgd2hlbiAKLWluc3RhbGxpbmcgWGNvZGUuCit1bml4IGJ1aWxkLiBVbml2ZXJzYWwgYnVpbGRzIHdlcmUgZmlyc3Qgc3VwcG9ydGVkIHdpdGggT1MgWCAxMC40IHdpdGggWGNvZGUgMi4xCithbmQgdGhlIDEwLjR1IFNESy4gIFN0YXJ0aW5nIHdpdGggWGNvZGUgMyBhbmQgT1MgWCAxMC41LCBtb3JlIGNvbmZpZ3VyYXRpb25zIGFyZQorYXZhaWxhYmxlLgogCi0yLjEgRmxhdm91cnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisyLjEgRmxhdm9ycyBvZiB1bml2ZXJzYWwgYmluYXJpZXMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1JdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3VycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKLXRoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpLiBUaGUgZmxhdm91ciBjYW4gYmUKLXNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCitJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3JzIG9mIHRoZSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkLAordGhlIGRlZmF1bHQgaXMgYSAzMi1iaXQgb25seSBiaW5hcnkgKGkzODYgYW5kIHBwYykgaW4gYnVpbGQgZW52aXJvbm1lbnRzIHRoYXQKK3N1cHBvcnQgcHBjICgxMC40IHdpdGggWGNvZGUgMiwgMTAuNSBhbmQgMTAuNiB3aXRoIFhjb2RlIDMpIG9yIGFuCitJbnRlbC0zMi8tNjQtYml0IGJpbmFyeSAoaTM4NiBhbmQgWDg2XzY0KSBpbiBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QKK3N1cHBvcnQgcHBjIChYY29kZSA0IG9uIDEwLjYgYW5kIGxhdGVyIHN5c3RlbXMpLiAgVGhlIGZsYXZvciBjYW4gYmUgc3BlY2lmaWVkCit1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYC4gVGhlIGZvbGxvd2luZwogdmFsdWVzIGFyZSBhdmFpbGFibGU6CiAKKyAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKKwogICAqIGBgMzItYml0YGA6ICAgYGBwcGNgYCwgYGBpMzg2YGAKIAorICAqIGBgMy13YXlgYDoJICBgYGkzODZgYCwgYGB4ODZfNjRgYCwgYGBwcGNgYAorCiAgICogYGA2NC1iaXRgYDogICBgYHBwYzY0YGAsIGBgeDg2XzY0YGAKIAogICAqIGBgYWxsYGA6ICAgICAgYGBwcGNgYCwgYGBwcGM2NGBgLCBgYGkzODZgYCwgYGB4ODZfNjRgYAogCi0gICogYGAzLXdheWBgOgkgIGBgcHBjYGAsIGBgaTM4NmBgIGFuZCBgYHg4Nl82NGBgCi0KLSAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKLQogVG8gYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgaW5jbHVkZXMgYSA2NC1iaXQgYXJjaGl0ZWN0dXJlLCB5b3UgbXVzdCBidWlsZAotb24gYSBzeXN0ZW0gcnVubmluZyBPU1ggMTAuNSBvciBsYXRlci4gVGhlIGBgYWxsYGAgZmxhdm91ciBjYW4gb25seSBiZSBidWlsdCBvbgotT1NYIDEwLjUuCitvbiBhIHN5c3RlbSBydW5uaW5nIE9TIFggMTAuNSBvciBsYXRlci4gIFRoZSBgYGFsbGBgIGFuZCBgYDY0LWJpdGBgIGZsYXZvcnMgY2FuCitvbmx5IGJlIGJ1aWx0IHdpdGggYW4gMTAuNSBTREsgYmVjYXVzZSBgYHBwYzY0YGAgc3VwcG9ydCB3YXMgb25seSBpbmNsdWRlZCB3aXRoCitPUyBYIDEwLjUuICBBbHRob3VnaCBsZWdhY3kgYGBwcGNgYCBzdXBwb3J0IHdhcyBpbmNsdWRlZCB3aXRoIFhjb2RlIDMgb24gT1MgWAorMTAuNiwgaXQgd2FzIHJlbW92ZWQgaW4gWGNvZGUgNCwgdmVyc2lvbnMgb2Ygd2hpY2ggd2VyZSByZWxlYXNlZCBvbiBPUyBYIDEwLjYKK2FuZCB3aGljaCBpcyB0aGUgY3VycmVudCBzdGFuZGFyZCBmb3IgT1MgWCAxMC43IGFuZCAxMC44LiAgVG8gc3VtbWFyaXplLCB0aGUKK2ZvbGxvd2luZyBjb21iaW5hdGlvbnMgb2YgU0RLcyBhbmQgdW5pdmVyc2FsLWFyY2hzIGZsYXZvcnMgYXJlIGF2YWlsYWJsZToKIAotVGhlIG1ha2VmaWxlIGZvciBhIGZyYW1ld29yayBidWlsZCB3aWxsIGluc3RhbGwgYGBweXRob24zMmBgIGFuZCBgYHB5dGhvbnczMmBgIAotYmluYXJpZXMgd2hlbiB0aGUgdW5pdmVyc2FsIGFyY2hpdGVjdXJlcyBpbmNsdWRlcyBhdCBsZWFzdCBvbmUgMzItYml0IGFyY2hpdGVjdHVyZQotKHRoYXQgaXMsIGZvciBhbGwgZmxhdm91cnMgYnV0IGBgNjQtYml0YGApLgorICAqIDEwLjR1IFNESyB3aXRoIFhjb2RlIDIgc3VwcG9ydHMgYGAzMi1iaXRgYCBvbmx5CiAKLVJ1bm5pbmcgYSBzcGVjaWZpYyBhcmNoaWN0dXJlCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorICAqIDEwLjUgU0RLIHdpdGggWGNvZGUgMy4xLnggc3VwcG9ydHMgYWxsIGZsYXZvcnMKKworICAqIDEwLjYgU0RLIHdpdGggWGNvZGUgMy4yLnggc3VwcG9ydHMgYGBpbnRlbGBgLCBgYDMtd2F5YGAsIGFuZCBgYDMyLWJpdGBgCisKKyAgKiAxMC42IFNESyB3aXRoIFhjb2RlIDQgc3VwcG9ydHMgYGBpbnRlbGBgIG9ubHkKKworICAqIDEwLjcgYW5kIDEwLjggU0RLcyB3aXRoIFhjb2RlIDQgc3VwcG9ydCBgYGludGVsYGAgb25seQorCitUaGUgbWFrZWZpbGUgZm9yIGEgZnJhbWV3b3JrIGJ1aWxkIHdpbGwgYWxzbyBpbnN0YWxsIGBgcHl0aG9uMy4zLTMyYGAKK2JpbmFyaWVzIHdoZW4gdGhlIHVuaXZlcnNhbCBhcmNoaXRlY3R1cmUgaW5jbHVkZXMgYXQgbGVhc3Qgb25lIDMyLWJpdAorYXJjaGl0ZWN0dXJlICh0aGF0IGlzLCBmb3IgYWxsIGZsYXZvcnMgYnV0IGBgNjQtYml0YGApLgorCitSdW5uaW5nIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFlvdSBjYW4gcnVuIGNvZGUgdXNpbmcgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgdXNpbmcgdGhlIGBgYXJjaGBgIGNvbW1hbmQ6OgogCkBAIC0xMTMsNiArMTQ1LDE0IEBACiB3cmFwcGVyIHRvb2xzIHRoYXQgZXhlY3V0ZSB0aGUgcmVhbCBpbnRlcnByZXRlciB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhlCiByZWFsIGludGVycHJldGVyIHJ1bnMgd2l0aCB0aGUgc2FtZSBhcmNoaXRlY3R1cmUuCiAKK1VzaW5nIGBgYXJjaGBgIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24gYXMgdGhlIHNlbGVjdGVkIGFyY2hpdGVjdHVyZSB3aWxsCitub3QgYXV0b21hdGljYWxseSBjYXJyeSB0aHJvdWdoIHRvIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBwcm9ncmFtcyBhbmQgdGVzdHMKK3VuZGVyIHRoYXQgUHl0aG9uLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgUHl0aG9uIGludGVycHJldGVycyBsYXVuY2hlZCBpbgorc3VicHJvY2Vzc2VzIGFsc28gcnVuIGluIDMyLWJpdC1tb2RlIGlmIHRoZSBtYWluIGludGVycHJldGVyIGRvZXMsIHVzZQorYSBgYHB5dGhvbjMuMy0zMmBgIGJpbmFyeSBhbmQgdXNlIHRoZSB2YWx1ZSBvZiBgYHN5cy5leGVjdXRhYmxlYGAgYXMgdGhlCitgYHN1YnByb2Nlc3NgYCBgYFBvcGVuYGAgZXhlY3V0YWJsZSB2YWx1ZS4KKworCiBCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYLgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMTIyLDE3ICsxNjIsMTcgQEAKIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCiBleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCi1mcm9tIGEgZnVsbGJsb3duIE1hY09TWCBhcHBsaWNhdGlvbiAoYSAiLmFwcCIgYnVuZGxlKS4KK2Zyb20gYSBNYWMgT1NYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCiBvbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAotIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMi42IiwKLSIzLjEiLCBldGMuLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcgCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiB3aGVyZSBgYDxWRVJTSU9OPmBgIGNhbiBiZSBlLmcuICIzLjMiLAorIjIuNyIsIGV0Yy4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nCiBQeXRob24gZnJvbSBhIGJpbmFyeSBkaXN0cmlidXRpb24gaWYgdGhleSB3YW50IHRvIGdldCByaWQgb2YgaXQgYWdhaW4uIE1vcmVvdmVyLAotZHVlIHRvIHRoZSB3YXkgZnJhbWV3b3JrcyB3b3JrIGEgdXNlciB3aXRob3V0IGFkbWluIHByaXZpbGVnZXMgY2FuIGluc3RhbGwgYSAKK2R1ZSB0byB0aGUgd2F5IGZyYW1ld29ya3Mgd29yaywgYSB1c2VyIHdpdGhvdXQgYWRtaW4gcHJpdmlsZWdlcyBjYW4gaW5zdGFsbCBhCiBiaW5hcnkgZGlzdHJpYnV0aW9uIGluIGhpcyBvciBoZXIgaG9tZSBkaXJlY3Rvcnkgd2l0aG91dCByZWNvbXBpbGF0aW9uLgogCiAyLiBIb3cgZG9lcyBhIGZyYW1ld29yayBQeXRob24gZGlmZmVyIGZyb20gYSBub3JtYWwgc3RhdGljIFB5dGhvbj8KQEAgLTE0OCwxOCArMTg4LDI1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFllcywgcHJvYmFibHkuICBJZiB5b3Ugd2FudCBUa2ludGVyIHN1cHBvcnQgeW91IG5lZWQgdG8gZ2V0IHRoZSBPU1ggQXF1YVRrIAotZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuIElmCi15b3Ugd2FudCB3eFB5dGhvbiB5b3UgbmVlZCB0byBnZXQgdGhhdC4gSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0Ci1QeU9iakMuIAorZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuICBCZQorYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgQ29jb2EtYmFzZWQgQXF1YVRrJ3Mgc3VwcGxpZWQgc3RhcnRpbmcgd2l0aCBPUyBYCisxMC42IGhhdmUgcHJvdmVuIHRvIGJlIHVuc3RhYmxlLiAgSWYgcG9zc2libGUsIHlvdSBzaG91bGQgY29uc2lkZXIKK2luc3RhbGxpbmcgYSBuZXdlciB2ZXJzaW9uIGJlZm9yZSBidWlsZGluZyBvbiBPUyBYIDEwLjYgb3IgbGF0ZXIsIHN1Y2ggYXMKK3RoZSBBY3RpdmVUY2wgOC41LiAgU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvLiAgSWYgeW91CithcmUgYnVpbGRpbmcgd2l0aCBhbiBTREssIGVuc3VyZSB0aGF0IHRoZSBuZXdlciBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlCitzZWVuIGluIHRoZSBTREsncyBgYExpYnJhcnkvRnJhbWV3b3Jrc2BgIGRpcmVjdG9yeTsgeW91IG1heSBuZWVkIHRvCittYW51YWxseSBjcmVhdGUgc3ltbGlua3MgdG8gdGhlaXIgaW5zdGFsbGVkIGxvY2F0aW9uLCBgYC9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK0lmIHlvdSB3YW50IHd4UHl0aG9uIHlvdSBuZWVkIHRvIGdldCB0aGF0LgorSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0IFB5T2JqQy4KIAogNC4gSG93IGRvIEkgYnVpbGQgYSBmcmFtZXdvcmsgUHl0aG9uPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgd2lsbCBjcmVhdGUgYSBjb3VwbGUgb2YgcHl0aG9uLXJlbGF0ZWQKLWFwcGxpY2F0aW9ucyAoZnVsbGJsb3duIE9TWCAuYXBwIGFwcGxpY2F0aW9ucywgdGhhdCBpcykgaW4KLSIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iLCBhbmQgYSBoaWRkZW4gaGVscGVyIGFwcGxpY2F0aW9uIFB5dGhvbi5hcHAgCi1pbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50byAKLS91c3IvbG9jYWwvYmluLiAgSW4gYWRkaXRpb24gaXQgaGFzIGEgdGFyZ2V0ICJpbnN0YWxsbWFjc3VidHJlZSIgdGhhdCBpbnN0YWxscyAKK2FwcGxpY2F0aW9ucyAoZnVsbC1ibG93biBPU1ggLmFwcCBhcHBsaWNhdGlvbnMsIHRoYXQgaXMpIGluCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiwgYW5kIGEgaGlkZGVuIGhlbHBlciBhcHBsaWNhdGlvbiBQeXRob24uYXBwCitpbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50bworL3Vzci9sb2NhbC9iaW4uICBJbiBhZGRpdGlvbiBpdCBoYXMgYSB0YXJnZXQgImluc3RhbGxtYWNzdWJ0cmVlIiB0aGF0IGluc3RhbGxzCiB0aGUgcmVsZXZhbnQgcG9ydGlvbnMgb2YgdGhlIE1hYyBzdWJ0cmVlIGludG8gdGhlIFB5dGhvbi5mcmFtZXdvcmsuCiAKIEl0IGlzIG5vcm1hbGx5IGludm9rZWQgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBtYWluIE1ha2VmaWxlLCBhcyB0aGUgbGFzdCBzdGVwCkBAIC0xNzEsMTcgKzIxOCwxNSBAQAogIAogIDMuIG1ha2UgaW5zdGFsbAogCi1UaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmssCi10aGUgYXBwbGljYXRpb25zIGluICIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iIGFuZCB0aGUgdW5peCB0b29scyBpbiAKLS91c3IvbG9jYWwvYmluLgorVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIGBgL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmtgYCwKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCitgYC91c3IvbG9jYWwvYmluYGAuCiAKLUluc3RhbGxpbmcgaW4gYW5vdGhlciBwbGFjZSwgZm9yIGluc3RhbmNlICRIT01FL0xpYnJhcnkvRnJhbWV3b3JrcyBpZiB5b3UgaGF2ZQotbm8gYWRtaW4gcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUsIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHZlcnkgbGlnaHRseS4gVGhpcwotY2FuIGJlIGRvbmUgYnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1mcmFtZXdvcms9JEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzLgotVGhlIG90aGVyIHR3byBkaXJlY3RvcmllcywgIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uLTxWRVJTSU9OPiIgYW5kCi0vdXNyL2xvY2FsL2Jpbiwgd2lsbCB0aGVuIGFsc28gYmUgZGVwb3NpdGVkIGluICRIT01FLiBUaGlzIGlzIHN1Yi1vcHRpbWFsIGZvcgotdGhlIHVuaXggdG9vbHMsIHdoaWNoIHlvdSB3b3VsZCB3YW50IGluICRIT01FL2JpbiwgYnV0IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvCi1maXggdGhpcyByaWdodCBub3cuCitJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQoraGF2ZSBubyBhZG1pbiBwcml2aWxlZ2VzIG9uIHlvdXIgbWFjaGluZSwgaXMgcG9zc2libGUuIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAorYnkgY29uZmlndXJpbmcgd2l0aCBgYC0tZW5hYmxlLWZyYW1ld29yaz0kSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK1RoZSBvdGhlciB0d28gZGlyZWN0b3JpZXMgd2lsbCB0aGVuIGFsc28gYmUgaW5zdGFsbGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksCithdCBgYCRIT01FL0FwcGxpY2F0aW9ucy9QeXRob24tPFZFUlNJT04+YGAgYW5kIGBgJEhPTUUvYmluYGAuCiAKIElmIHlvdSB3YW50IHRvIGluc3RhbGwgc29tZSBwYXJ0LCBidXQgbm90IGFsbCwgcmVhZCB0aGUgbWFpbiBNYWtlZmlsZS4gVGhlCiBmcmFtZXdvcmtpbnN0YWxsIGlzIGNvbXBvc2VkIG9mIGEgY291cGxlIG9mIHN1Yi10YXJnZXRzIHRoYXQgaW5zdGFsbCB0aGUKQEAgLTE4OSw3ICsyMzQsNyBAQAogCiBUaGVyZSBpcyBhbiBleHRyYSB0YXJnZXQgZnJhbWV3b3JraW5zdGFsbGV4dHJhcyB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZQogbm9ybWFsIGZyYW1ld29ya2luc3RhbGwgd2hpY2ggaW5zdGFsbHMgdGhlIFRvb2xzIGRpcmVjdG9yeSBpbnRvCi0iL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiwgdGhpcyBpcyB1c2VmdWwgZm9yIGJpbmFyeQorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIsIHRoaXMgaXMgdXNlZnVsIGZvciBiaW5hcnkKIGRpc3RyaWJ1dGlvbnMuCiAKIFdoYXQgZG8gYWxsIHRoZXNlIHByb2dyYW1zIGRvPwpAQCAtMjAyLDI0ICsyNDcsNDEgQEAKIGRvdWJsZS1jbGljayBhIC5weSwgLnB5YyBvciAucHl3IGZpbGUuIEZvciB0aGUgZmlyc3QgdHdvIGl0IGNyZWF0ZXMgYSBUZXJtaW5hbAogd2luZG93IGFuZCBydW5zIHRoZSBzY3JpcHRzIHdpdGggdGhlIG5vcm1hbCBjb21tYW5kLWxpbmUgUHl0aG9uLiBGb3IgdGhlCiBsYXR0ZXIgaXQgcnVucyB0aGUgc2NyaXB0IGluIHRoZSBQeXRob24uYXBwIGludGVycHJldGVyIHNvIHRoZSBzY3JpcHQgY2FuIGRvCi1HVUktdGhpbmdzLiBLZWVwIHRoZSAiYWx0IiBrZXkgZGVwcmVzc2VkIHdoaWxlIGRyYWdnaW5nIG9yIGRvdWJsZS1jbGlja2luZyBhCi1zY3JpcHQgdG8gc2V0IHJ1bnRpbWUgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgc2V0IG9uY2UgYW5kIGZvciBhbGwKK0dVSS10aGluZ3MuIEtlZXAgdGhlIGBgT3B0aW9uYGAga2V5IGRlcHJlc3NlZCB3aGlsZSBkcmFnZ2luZyBvciBkb3VibGUtY2xpY2tpbmcKK2Egc2NyaXB0IHRvIHNldCBydW50aW1lIG9wdGlvbnMuIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHNldCBwZXJzaXN0ZW50bHkKIHRocm91Z2ggUHl0aG9uTGF1bmNoZXIncyBwcmVmZXJlbmNlcyBkaWFsb2cuCiAKLVRoZSBjb21tYW5kbGluZSBzY3JpcHRzIC91c3IvbG9jYWwvYmluL3B5dGhvbiBhbmQgcHl0aG9udyBjYW4gYmUgdXNlZCB0byBydW4KLW5vbi1HVUkgYW5kIEdVSSBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHJlc3BlY3RpdmVseS4KK1RoZSBwcm9ncmFtIGBgcHl0aG9ueC54YGAgcnVucyBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBWYXJpb3VzCitjb21wYXRpYmlsaXR5IGFsaWFzZXMgYXJlIGFsc28gaW5zdGFsbGVkLCBpbmNsdWRpbmcgYGBweXRob253eC54YGAgd2hpY2gKK2luIGVhcmx5IHJlbGVhc2VzIG9mIFB5dGhvbiBvbiBPUyBYIHdhcyByZXF1aXJlZCB0byBydW4gR1VJIHByb2dyYW1zLiAgSW4KK2N1cnJlbnQgcmVsZWFzZXMsIHRoZSBgYHB5dGhvbngueGBgIGFuZCBgYHB5dGhvbnd4LnhgYCBjb21tYW5kcyBhcmUgaWRlbnRpY2FsLgogCiBIb3cgZG8gSSBjcmVhdGUgYSBiaW5hcnkgZGlzdHJpYnV0aW9uPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotR28gdG8gdGhlIGRpcmVjdG9yeSAiTWFjL09TWC9CdWlsZFNjcmlwdCIuIFRoZXJlIHlvdSdsbCBmaW5kIGEgc2NyaXB0IAotImJ1aWxkLWluc3RhbGxlci5weSIgdGhhdCBkb2VzIGFsbCB0aGUgd29yay4gVGhpcyB3aWxsIGRvd25sb2FkIGFuZCBidWlsZAorRG93bmxvYWQgYW5kIHVucGFjayB0aGUgc291cmNlIHJlbGVhc2UgZnJvbSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvLgorR28gdG8gdGhlIGRpcmVjdG9yeSBgYE1hYy9CdWlsZFNjcmlwdGBgLiBUaGVyZSB5b3Ugd2lsbCBmaW5kIGEgc2NyaXB0CitgYGJ1aWxkLWluc3RhbGxlci5weWBgIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmsuIFRoaXMgd2lsbCBkb3dubG9hZCBhbmQgYnVpbGQKIGEgbnVtYmVyIG9mIDNyZC1wYXJ0eSBsaWJhcmllcywgY29uZmlndXJlcyBhbmQgYnVpbGRzIGEgZnJhbWV3b3JrIFB5dGhvbiwKIGluc3RhbGxzIGl0LCBjcmVhdGVzIHRoZSBpbnN0YWxsZXIgcGFja2FnZSBmaWxlcyBhbmQgdGhlbiBwYWNrcyB0aGlzIGluIGEKLURNRyBpbWFnZS4KK0RNRyBpbWFnZS4gIFRoZSBzY3JpcHQgYWxzbyBidWlsZHMgYW4gSFRNTCBjb3B5IG9mIHRoZSBjdXJyZW50IFB5dGhvbgorZG9jdW1lbnRhdGlvbiBzZXQgZm9yIHRoaXMgcmVsZWFzZSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmcmFtZXdvcmsuICBUaGUKK2luc3RhbGxlciBwYWNrYWdlIHdpbGwgY3JlYXRlIGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB1c2UgYnkgSURMRSwKK3B5ZG9jLCBzaGVsbCB1c2VycywgYW5kIEZpbmRlciB1c2VyLgogCi1UaGUgc2NyaXB0IHdpbGwgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5LCB5b3UnbGwgdGhlcmVmb3JlIGhhdmUgdG8gcnVuIHRoaXMKK1RoZSBzY3JpcHQgd2lsbCBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgc28geW91J2xsIHRoZXJlZm9yZSBoYXZlIHRvIHJ1biB0aGlzCiBzY3JpcHQgb24gTWFjIE9TIFggMTAuNCBvciBsYXRlciBhbmQgd2l0aCBYY29kZSAyLjEgb3IgbGF0ZXIgaW5zdGFsbGVkLgorSG93ZXZlciwgdGhlIFB5dGhvbiBidWlsZCBwcm9jZXNzIGl0c2VsZiBoYXMgc2V2ZXJhbCBidWlsZCBkZXBlbmRlbmNpZXMgbm90CithdmFpbGFibGUgb3V0IG9mIHRoZSBib3ggd2l0aCBPUyBYIDEwLjQgc28geW91IG1heSBoYXZlIHRvIGluc3RhbGwKK2FkZGl0aW9uYWwgc29mdHdhcmUgYmV5b25kIHdoYXQgaXMgcHJvdmlkZWQgd2l0aCBYY29kZSAyLiAgT1MgWCAxMC41Citwcm92aWRlcyBhIHJlY2VudCBlbm91Z2ggc3lzdGVtIFB5dGhvbiAoaW4gYGAvdXNyL2JpbmBgKSB0byBidWlsZAordGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIHNldC4gIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB1c2UgU0RLcyBhbmQvb3Igb2xkZXIKK3ZlcnNpb25zIG9mIFhjb2RlIHRvIGJ1aWxkIGluc3RhbGxlcnMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHN5c3RlbXMKK29uIGEgbmV3ZXIgc3lzdGVtIGJ1dCB0aGlzIG1heSBub3QgYmUgY29tcGxldGVseSBmb29scHJvb2Ygc28gdGhlIHJlc3VsdGluZworZXhlY3V0YWJsZXMsIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBgYC5zb2BgIGJ1bmRsZXMgc2hvdWxkIGJlIGNhcmVmdWxseQorZXhhbWluZWQgYW5kIHRlc3RlZCBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgZm9yIHByb3BlciBkeW5hbWljIGxpbmtpbmcKK2RlcGVuZGVuY2llcy4gIEl0IGlzIHNhZmVzdCB0byBidWlsZCB0aGUgZGlzdHJpYnV0aW9uIG9uIGEgc3lzdGVtIHJ1bm5pbmcgdGhlCittaW5pbXVtIE9TIFggdmVyc2lvbiBzdXBwb3J0ZWQuCiAKIEFsbCBvZiB0aGlzIGlzIG5vcm1hbGx5IGRvbmUgY29tcGxldGVseSBpc29sYXRlZCBpbiAvdG1wL19weSwgc28gaXQgZG9lcyBub3QKIHVzZSB5b3VyIG5vcm1hbCBidWlsZCBkaXJlY3Rvcnkgbm9yIGRvZXMgaXQgaW5zdGFsbCBpbnRvIC8uCkBAIC0yNDQsNyArMzA2LDcgQEAKICAgIGNvbmZpZ3VyZTogV0FSTklORzogICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAKIFRoaXMgYWxtb3N0IGFsd2F5cyBtZWFucyB5b3UgYXJlIHRyeWluZyB0byBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgZm9yCi1QeXRob24gYW5kIGhhdmUgbGliYXJpZXMgaW4gYGAvdXNyL2xvY2FsYGAgdGhhdCBkb24ndCBjb250YWluIHRoZSByZXF1aXJlZAorUHl0aG9uIGFuZCBoYXZlIGxpYnJhcmllcyBpbiBgYC91c3IvbG9jYWxgYCB0aGF0IGRvbid0IGNvbnRhaW4gdGhlIHJlcXVpcmVkCiBhcmNoaXRlY3R1cmVzLiBUZW1wb3JhcmlseSBtb3ZlIGBgL3Vzci9sb2NhbGBgIGFzaWRlIHRvIGZpbmlzaCB0aGUgYnVpbGQuCiAKIApAQCAtMjUzLDcgKzMxNSw3IEBACiAKIFVuaW5zdGFsbGluZyBhIGZyYW1ld29yayBjYW4gYmUgZG9uZSBieSBtYW51YWxseSByZW1vdmluZyBhbGwgYml0cyB0aGF0IGdvdCBpbnN0YWxsZWQuCiBUaGF0J3MgdHJ1ZSBmb3IgYm90aCBpbnN0YWxsYXRpb25zIGZyb20gc291cmNlIGFuZCBpbnN0YWxsYXRpb25zIHVzaW5nIHRoZSBiaW5hcnkgaW5zdGFsbGVyLgotU2FkbHkgZW5vdWdoIE9TWCBkb2VzIG5vdCBoYXZlIGEgY2VudHJhbCB1bmluc3RhbGxlci4KK09TIFggZG9lcyBub3QgcHJvdmlkZSBhIGNlbnRyYWwgdW5pbnN0YWxsZXIuCiAKIFRoZSBtYWluIGJpdCBvZiBhIGZyYW1ld29yayBpbnN0YWxsIGlzIHRoZSBmcmFtZXdvcmsgaXRzZWxmLCBpbnN0YWxsZWQgaW4KIGBgL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrYGAuIFRoaXMgY2FuIGNvbnRhaW4gbXVsdGlwbGUgdmVyc2lvbnMKQEAgLTI2NywxNCArMzI5LDEyIEBACiBBbmQgbGFzdGx5IGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBpbnN0YWxscyBmaWxlcyBpbiBgYC91c3IvbG9jYWwvYmluYGAsIGFsbCBvZgogdGhlbSBzeW1ib2xpYyBsaW5rcyB0byBmaWxlcyBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9YLlkvYmluYGAuCiAKLU9kZHMgYW5kIGVuZHMKLT09PT09PT09PT09PT0KIAotU29tZXRoaW5nIHRvIHRha2Ugbm90ZSBvZiBpcyB0aGF0IHRoZSAiLnJzcmMiIGZpbGVzIGluIHRoZSBkaXN0cmlidXRpb24gYXJlCi1ub3QgYWN0dWFsbHkgcmVzb3VyY2UgZmlsZXMsIHRoZXkncmUgQXBwbGVTaW5nbGUgZW5jb2RlZCByZXNvdXJjZSBmaWxlcy4gVGhlCi1tYWNyZXNvdXJjZSBtb2R1bGUgYW5kIHRoZSBNYWMvT1NYL01ha2VmaWxlIGNhdGVyIGZvciB0aGlzLCBhbmQgY3JlYXRlCi0iLnJzcmMuZGYucnNyYyIgZmlsZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3JtYWwgZGF0YWZvcmstYmFzZWQgcmVzb3VyY2UKLWZpbGVzLgorUmVzb3VyY2VzCis9PT09PT09PT0KIAotCUphY2sgSmFuc2VuLCBKYWNrLkphbnNlbkBjd2kubmwsIDE1LUp1bC0yMDA0LgotCVJvbmFsZCBPdXNzb3JlbiwgUm9uYWxkT3Vzc29yZW5AbWFjLmNvbSwgMzAtQXByaWwtMjAxMAorICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjLworCisgICogIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9jb21tdW5pdHkvc2lncy9jdXJyZW50L3B5dGhvbm1hYy1zaWcvCisKKyAgKiAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSBiL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGI5NWIzLi4wMDAwMDAwCi0tLSBhL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0iIiJmaXhhcHBsZXB5dGhvbjIzIC0gRml4IEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIChvbiBNYWMgT1MgWCAxMC4zKQotCi1QeXRob24gMi4zIChhbmQgMi4zLlggZm9yIFg8NSkgaGF2ZSB0aGUgcHJvYmxlbSB0aGF0IGJ1aWxkaW5nIGFuIGV4dGVuc2lvbgotZm9yIGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBtYXkgYWNjaWRlbnRhbGx5IHBpY2sgdXAgdGhlIGZyYW1ld29yawotb2YgYSBuZXdlciBQeXRob24sIGluIHN0ZWFkIG9mIHRoZSBvbmUgdGhhdCB3YXMgdXNlZCB0byBidWlsZCB0aGUgZXh0ZW5zaW9uLgotCi1UaGlzIHNjcmlwdCBtb2RpZmllcyB0aGUgTWFrZWZpbGUgKGluIC4uLi9saWIvcHl0aG9uMi4zL2NvbmZpZykgdG8gdXNlCi10aGUgbmV3ZXIgbWV0aG9kIG9mIGxpbmtpbmcgZXh0ZW5zaW9ucyB3aXRoICItdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwIgotd2hpY2ggZml4ZXMgdGhpcyBwcm9ibGVtLgotCi1UaGUgc2NyaXB0IHdpbGwgZmlyc3QgY2hlY2sgYWxsIHByZXJlcXVpc2l0ZXMsIGFuZCByZXR1cm4gYSB6ZXJvIGV4aXQKLXN0YXR1cyBhbHNvIHdoZW4gbm90aGluZyBuZWVkcyB0byBiZSBmaXhlZC4KLSIiIgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLQotTUFLRUZJTEU9Jy9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi4zL2xpYi9weXRob24yLjMvY29uZmlnL01ha2VmaWxlJwotQ0hBTkdFUz0oKAotICAgICdMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtZnJhbWV3b3JrICQoUFlUSE9ORlJBTUVXT1JLKVxuJywKLSAgICAnTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cFxuJwotICAgICksKAotICAgICdCTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLWZyYW1ld29yayAkKFBZVEhPTkZSQU1FV09SSylcbicsCi0gICAgJ0JMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwXG4nCi0gICAgKSwoCi0gICAgJ0NDPVx0XHRnY2NcbicsCi0gICAgJ0NDPVx0XHQvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2NcbicKLSAgICApLCgKLSAgICAnQ1hYPVx0XHRjKytcbicsCi0gICAgJ0NYWD1cdFx0L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZysrXG4nCi0pKQotCi1HQ0NfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2MnCi1HWFhfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nKysnCi1TQ1JJUFQ9IiIiIyEvYmluL3NoCi1leHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjMKLWV4ZWMgJXMgIiR7QH0iCi0iIiIKLQotZGVmIGZpbmRsaW5lKGxpbmVzLCBzdGFydCk6Ci0gICAgIiIicmV0dXJuIGxpbmUgc3RhcnRpbmcgd2l0aCBnaXZlbiBzdHJpbmcgb3IgLTEiIiIKLSAgICBmb3IgaSBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgaWYgbGluZXNbaV1bOmxlbihzdGFydCldID09IHN0YXJ0OgotICAgICAgICAgICAgcmV0dXJuIGkKLSAgICByZXR1cm4gLTEKLQotZGVmIGZpeChtYWtlZmlsZSwgZG9fYXBwbHkpOgotICAgICIiIkZpeCB0aGUgTWFrZWZpbGUsIGlmIHJlcXVpcmVkLiIiIgotICAgIGZpeGVkID0gRmFsc2UKLSAgICBsaW5lcyA9IG9wZW4obWFrZWZpbGUpLnJlYWRsaW5lcygpCi0KLSAgICBmb3Igb2xkLCBuZXcgaW4gQ0hBTkdFUzoKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBuZXcpCi0gICAgICAgIGlmIGkgPj0gMDoKLSAgICAgICAgICAgICMgQWxyZWFkeSBmaXhlZAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBvbGQpCi0gICAgICAgIGlmIGkgPCAwOgotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IFB5dGhvbiBpbnN0YWxsYXRpb24gbm90IGZpeGVkIChhcHBlYXJzIGJyb2tlbiknKQotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG1pc3NpbmcgbGluZTonLCBvbGQpCi0gICAgICAgICAgICByZXR1cm4gMgotICAgICAgICBsaW5lc1tpXSA9IG5ldwotICAgICAgICBmaXhlZCA9IFRydWUKLQotICAgIGlmIGZpeGVkOgotICAgICAgICBpZiBkb19hcHBseToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgYXBwbGllZCcpCi0gICAgICAgICAgICBvcy5yZW5hbWUobWFrZWZpbGUsIG1ha2VmaWxlICsgJ34nKQotICAgICAgICAgICAgb3BlbihtYWtlZmlsZSwgJ3cnKS53cml0ZWxpbmVzKGxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgc2hvdWxkIGJlIGFwcGxpZWQnKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICBlbHNlOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogTm8gZml4IG5lZWRlZCwgYXBwZWFycyB0byBoYXZlIGJlZW4gYXBwbGllZCBiZWZvcmUnKQotICAgICAgICByZXR1cm4gMAotCi1kZWYgbWFrZXNjcmlwdChmaWxlbmFtZSwgY29tcGlsZXIpOgotICAgICIiIkNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0IGZvciBhIGNvbXBpbGVyIiIiCi0gICAgZGlybmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdCi0gICAgaWYgbm90IG9zLmFjY2VzcyhkaXJuYW1lLCBvcy5YX09LKToKLSAgICAgICAgb3MubWtkaXIoZGlybmFtZSwgMG83NTUpCi0gICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZnAud3JpdGUoU0NSSVBUICUgY29tcGlsZXIpCi0gICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKGZpbGVuYW1lLCAwbzc1NSkKLSAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogQ3JlYXRlZCcsIGZpbGVuYW1lKQotCi1kZWYgbWFpbigpOgotICAgICMgQ2hlY2sgZm9yIC1uIG9wdGlvbgotICAgIGlmIGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMuYXJndlsxXSA9PSAnLW4nOgotICAgICAgICBkb19hcHBseSA9IEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgZG9fYXBwbHkgPSBUcnVlCi0gICAgIyBGaXJzdCBjaGVjayBPUyB2ZXJzaW9uCi0gICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKLSAgICAgICAgIyBBbGwgaW50ZWwgbWFjcyBhcmUgZmluZQotICAgICAgICBwcmludCgiZml4YXBwbHlweXRob24yMzogbm8gZml4IGlzIG5lZWRlZCBvbiBNYWNPU1ggb24gSW50ZWwiKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgb3N2ZXIgPSAgcGxhdGZvcm0ubWFjX3ZlcigpCi0gICAgaWYgb3N2ZXIgIT0gJzEwLjMnIGFuZCBvcy52ZXIgPCAnMTAuMy4nOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogbm8gZml4IG5lZWRlZCBvbiBNYWNPU1ggPCAxMC4zJykKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGlmIG9zdmVyID49ICcxMC40JzoKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG5vIGZpeCBuZWVkZWQgb24gTWFjT1NYID49IDEwLjQnKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgIyBUZXN0IHRoYXQgYSBmcmFtZXdvcmsgUHl0aG9uIGlzIGluZGVlZCBpbnN0YWxsZWQKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoTUFLRUZJTEUpOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogUHl0aG9uIGZyYW1ld29yayBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkICg/KSwgbm90aGluZyBmaXhlZCcpCi0gICAgICAgIHN5cy5leGl0KDApCi0gICAgIyBDaGVjayB0aGF0IHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZmlsZQotICAgIGlmIGRvX2FwcGx5IGFuZCBub3Qgb3MuYWNjZXNzKE1BS0VGSUxFLCBvcy5XX09LKToKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IE5vIHdyaXRlIHBlcm1pc3Npb24sIHBsZWFzZSBydW4gd2l0aCAic3VkbyInKQotICAgICAgICBzeXMuZXhpdCgyKQotICAgICMgQ3JlYXRlIHRoZSBzaGVsbCBzY3JpcHRzCi0gICAgaWYgZG9fYXBwbHk6Ci0gICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MoR0NDX1NDUklQVCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICBtYWtlc2NyaXB0KEdDQ19TQ1JJUFQsICJnY2MiKQotICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKEdYWF9TQ1JJUFQsIG9zLlhfT0spOgotICAgICAgICAgICAgbWFrZXNjcmlwdChHWFhfU0NSSVBULCAiZysrIikKLSAgICAjICBGaW5hbGx5IGZpeCB0aGUgbWFrZWZpbGUKLSAgICBydiA9IGZpeChNQUtFRklMRSwgZG9fYXBwbHkpCi0gICAgI3N5cy5leGl0KHJ2KQotICAgIHN5cy5leGl0KDApCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvcHl0aG9udy5jIGIvTWFjL1Rvb2xzL3B5dGhvbncuYwppbmRleCAzMGM4MmFjLi4xZDJkYjM4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvcHl0aG9udy5jCisrKyBiL01hYy9Ub29scy9weXRob253LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKIAogZXh0ZXJuIGNoYXIqKiBlbnZpcm9uOwpAQCAtMTUwLDYgKzE1MSw1MyBAQAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgIGNoYXIqIGV4ZWNfcGF0aCA9IGdldF9weXRob25fcGF0aCgpOworICAgIHN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBzdGF0aWMgY2hhciByZWFsX3BhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBpbnQgc3RhdHVzOworICAgIHVpbnQzMl90IHNpemUgPSBQQVRIX01BWCAqIDI7CisKKyAgICAvKiBTZXQgdGhlIG9yaWdpbmFsIGV4ZWN1dGFibGUgcGF0aCBpbiB0aGUgZW52aXJvbm1lbnQuICovCisgICAgc3RhdHVzID0gX05TR2V0RXhlY3V0YWJsZVBhdGgocGF0aCwgJnNpemUpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBOb3RlOiBkb24ndCBjYWxsICdyZWFscGF0aCcsIHRoYXQgd2lsbAorICAgICAgICAgKiBlcmFzZSBzeW1saW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdAorICAgICAgICAgKiBicmVha3MgInB5dmVudiAtLXN5bWxpbmsiCisgICAgICAgICAqCisgICAgICAgICAqIEl0IGlzIG5pY2UgdG8gaGF2ZSB0aGUgZGlyZWN0b3J5IG5hbWUKKyAgICAgICAgICogYXMgYSBjbGVhbmVkIHVwIGFic29sdXRlIHBhdGggdGhvdWdoLAorICAgICAgICAgKiB0aGVyZWZvcmUgY2FsbCByZWFscGF0aCBvbiBkaXJuYW1lKHBhdGgpCisgICAgICAgICAqLworICAgICAgICBjaGFyKiBzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICAgICAgaWYgKHNsYXNoKSB7CisgICAgICAgICAgICBjaGFyICByZXBsYWNlZDsKKyAgICAgICAgICAgIHJlcGxhY2VkID0gc2xhc2hbMV07CisgICAgICAgICAgICBzbGFzaFsxXSA9IDA7CisgICAgICAgICAgICBpZiAocmVhbHBhdGgocGF0aCwgcmVhbF9wYXRoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJyKDEsICJyZWFscGF0aDogJXMiLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsYXNoWzFdID0gcmVwbGFjZWQ7CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsIHNsYXNoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZWFscGF0aCgiLiIsIHJlYWxfcGF0aCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsICIvIiwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCBwYXRoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iLCByZWFsX3BhdGgsIDEpOworICAgIH0KIAogICAgIC8qCiAgICAgICogTGV0IGFyZ3ZbMF0gcmVmZXIgdG8gdGhlIG5ldyBpbnRlcnByZXRlci4gVGhpcyBpcyBuZWVkZWQgdG8KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCBjMDE0MjM2Li4wODRmZjlmIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC0zNyw3ICszNyw3IEBACiBMSU5LQ0M9CQlATElOS0NDQAogQVI9CQlAQVJACiBSQU5MSUI9CQlAUkFOTElCQAotU1ZOVkVSU0lPTj0JQFNWTlZFUlNJT05ACitSRUFERUxGPQlAUkVBREVMRkAKIFNPQUJJPQkJQFNPQUJJQAogTERWRVJTSU9OPQlATERWRVJTSU9OQAogSEdWRVJTSU9OPQlASEdWRVJTSU9OQApAQCAtMTk4LDYgKzE5OCwxMCBAQAogUFlUSE9OPQkJcHl0aG9uJChFWEUpCiBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKIAorUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKK19QWVRIT05fSE9TVF9QTEFURk9STT1AX1BZVEhPTl9IT1NUX1BMQVRGT1JNQAorSE9TVF9HTlVfVFlQRT0gIEBob3N0QAorCiAjIFRoZSB0YXNrIHRvIHJ1biB3aGlsZSBpbnN0cnVtZW50IHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldAogUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5IC1uIDIgLS13aXRoLWdjIC0td2l0aC1zeXNjaGVjawogI1BST0ZJTEVfVEFTSz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yNDAsMjAgKzI0NCw0MSBAQAogIyBQYXJzZXIKIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogCitQU1JDUz0JCVwKKwkJUGFyc2VyL2FjY2VsZXIuYyBcCisJCVBhcnNlci9ncmFtbWFyMS5jIFwKKwkJUGFyc2VyL2xpc3Rub2RlLmMgXAorCQlQYXJzZXIvbm9kZS5jIFwKKwkJUGFyc2VyL3BhcnNlci5jIFwKKwkJUGFyc2VyL2JpdHNldC5jIFwKKwkJUGFyc2VyL21ldGFncmFtbWFyLmMgXAorCQlQYXJzZXIvZmlyc3RzZXRzLmMgXAorCQlQYXJzZXIvZ3JhbW1hci5jIFwKKwkJUGFyc2VyL3BnZW4uYworCiBQT0JKUz0JCVwKIAkJUGFyc2VyL2FjY2VsZXIubyBcCiAJCVBhcnNlci9ncmFtbWFyMS5vIFwKIAkJUGFyc2VyL2xpc3Rub2RlLm8gXAogCQlQYXJzZXIvbm9kZS5vIFwKIAkJUGFyc2VyL3BhcnNlci5vIFwKLQkJUGFyc2VyL3BhcnNldG9rLm8gXAogCQlQYXJzZXIvYml0c2V0Lm8gXAogCQlQYXJzZXIvbWV0YWdyYW1tYXIubyBcCiAJCVBhcnNlci9maXJzdHNldHMubyBcCiAJCVBhcnNlci9ncmFtbWFyLm8gXAogCQlQYXJzZXIvcGdlbi5vCiAKLVBBUlNFUl9PQkpTPQkkKFBPQkpTKSBQYXJzZXIvbXlyZWFkbGluZS5vIFBhcnNlci90b2tlbml6ZXIubworUEFSU0VSX09CSlM9CSQoUE9CSlMpIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3BhcnNldG9rLm8gUGFyc2VyL3Rva2VuaXplci5vCisKK1BHU1JDUz0JCVwKKwkJT2JqZWN0cy9vYm1hbGxvYy5jIFwKKwkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMuYyBcCisJCVB5dGhvbi9teXNucHJpbnRmLmMgXAorCQlQeXRob24vcHljdHlwZS5jIFwKKwkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAorCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAorCQlQYXJzZXIvcGFyc2V0b2tfcGdlbi5jIFwKKwkJUGFyc2VyL3BnZW5tYWluLmMKIAogUEdPQkpTPQkJXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXApAQCAtMjYyLDEzICsyODcsMTYgQEAKIAkJUHl0aG9uL3B5Y3R5cGUubyBcCiAJCVBhcnNlci90b2tlbml6ZXJfcGdlbi5vIFwKIAkJUGFyc2VyL3ByaW50Z3JhbW1hci5vIFwKKwkJUGFyc2VyL3BhcnNldG9rX3BnZW4ubyBcCiAJCVBhcnNlci9wZ2VubWFpbi5vCiAKIFBBUlNFUl9IRUFERVJTPSBcCi0JCVBhcnNlci9wYXJzZXIuaCBcCi0JCVBhcnNlci90b2tlbml6ZXIuaAorCQkkKHNyY2RpcikvUGFyc2VyL3BhcnNlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGFyc2V0b2suaCBcCisJCSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmgKIAotUEdFTk9CSlM9CSQoUEdFTk1BSU4pICQoUE9CSlMpICQoUEdPQkpTKQorUEdFTlNSQ1M9CSQoUFNSQ1MpICQoUEdTUkNTKQorUEdFTk9CSlM9CSQoUE9CSlMpICQoUEdPQkpTKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBU1QKQEAgLTMwNSw3ICszMzMsNiBAQAogCQlQeXRob24vY29kZWNzLm8gXAogCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5vIFwKIAkJUHl0aG9uL2Vycm9ycy5vIFwKLQkJUHl0aG9uL2Zyb3plbi5vIFwKIAkJUHl0aG9uL2Zyb3plbm1haW4ubyBcCiAJCVB5dGhvbi9mdXR1cmUubyBcCiAJCVB5dGhvbi9nZXRhcmdzLm8gXApAQCAtMzczLDExICs0MDAsMTIgQEAKIAkJT2JqZWN0cy9tZW1vcnlvYmplY3QubyBcCiAJCU9iamVjdHMvbWV0aG9kb2JqZWN0Lm8gXAogCQlPYmplY3RzL21vZHVsZW9iamVjdC5vIFwKKwkJT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QubyBcCiAJCU9iamVjdHMvb2JqZWN0Lm8gXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXAogCQlPYmplY3RzL2NhcHN1bGUubyBcCiAJCU9iamVjdHMvcmFuZ2VvYmplY3QubyBcCi0gICAgICAgICAgICAgICAgT2JqZWN0cy9zZXRvYmplY3QubyBcCisJCU9iamVjdHMvc2V0b2JqZWN0Lm8gXAogCQlPYmplY3RzL3NsaWNlb2JqZWN0Lm8gXAogCQlPYmplY3RzL3N0cnVjdHNlcS5vIFwKIAkJT2JqZWN0cy90dXBsZW9iamVjdC5vIFwKQEAgLTM4NiwxMCArNDE0LDkgQEAKIAkJT2JqZWN0cy91bmljb2RlY3R5cGUubyBcCiAJCU9iamVjdHMvd2Vha3JlZm9iamVjdC5vCiAKLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgb2JqZWN0cyB0aGF0IGdldCBsaW5rZWQgaW50byB0aGUgUHl0aG9uIGxpYnJhcnkKLUxJQlJBUllfT0JKUz0JXAorTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOPQlcCiAJCU1vZHVsZXMvZ2V0YnVpbGRpbmZvLm8gXAogCQkkKFBBUlNFUl9PQkpTKSBcCiAJCSQoT0JKRUNUX09CSlMpIFwKQEAgLTM5OCw2ICs0MjUsMTAgQEAKIAkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpCiAKK0xJQlJBUllfT0JKUz0JXAorCQkkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgXAorCQlQeXRob24vZnJvemVuLm8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdWxlcwogCkBAIC00MjEsMTAgKzQ1MiwxMSBAQAogCSQoTUFLRSkgYWxsIENGTEFHUz0iJChDRkxBR1MpIC1mcHJvZmlsZS1nZW5lcmF0ZSIgTElCUz0iJChMSUJTKSAtbGdjb3YiCiAKIHJ1bl9wcm9maWxlX3Rhc2s6Ci0JLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykKKwk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAorCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKQogCiBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6Ci0JJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLXVzZSIKKwkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtdXNlIC1mcHJvZmlsZS1jb3JyZWN0aW9uIgogCiBjb3ZlcmFnZToKIAlAZWNobyAiQnVpbGRpbmcgd2l0aCBzdXBwb3J0IGZvciBjb3ZlcmFnZSBjaGVja2luZzoiCkBAIC00MzYsMjEgKzQ2OCwyNiBAQAogJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCi1wbGF0Zm9ybTogJChCVUlMRFBZVEhPTikKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQorcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KIAorIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KKyMgcHlidWlsZGRpci50eHQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGRpciBhbmQgaXMgdXNlZCBmb3IKKyMgc3lzLnBhdGggZml4dXAgLS0gc2VlIE1vZHVsZXMvZ2V0cGF0aC5jLgorcHlidWlsZGRpci50eHQ6ICQoQlVJTERQWVRIT04pCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLVMgLW0gc3lzY29uZmlnIC0tZ2VuZXJhdGUtcG9zaXgtdmFycwogCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBVbmRlciBHTlUgbWFrZSwgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQ7IHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KICMgVW5kZXIgQlNEIG1ha2UsIE1BS0VGTEFHUyBtaWdodCBiZSAiIC1zIC12IHg9eSIuCi1zaGFyZWRtb2RzOiAkKEJVSUxEUFlUSE9OKQorc2hhcmVkbW9kczogJChCVUlMRFBZVEhPTikgcHlidWlsZGRpci50eHQKIAlAY2FzZSAiJCRNQUtFRkxBR1MiIGluIFwKIAkgICAgKlwgLXMqfHMqKSBxdWlldD0iLXEiOzsgXAogCSAgICAqKSBxdWlldD0iIjs7IFwKIAllc2FjOyBcCiAJJChSVU5TSEFSRUQpIENDPSckKENDKScgTERTSEFSRUQ9JyQoQkxEU0hBUkVEKScgT1BUPSckKE9QVCknIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtRSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKICMgQnVpbGQgc3RhdGljIGxpYnJhcnkKICMgYXZvaWQgbG9uZyBjb21tYW5kIGxpbmVzLCBzYW1lIGFzIExJQlJBUllfT0JKUwpAQCAtNDU5LDcgKzQ5Niw3IEBACiAJJChBUikgJChBUkZMQUdTKSAkQCBNb2R1bGVzL2dldGJ1aWxkaW5mby5vCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBBUlNFUl9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpFQ1RfT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoUFlUSE9OX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRE9CSlMpCiAJJChSQU5MSUIpICRACkBAIC01MDYsNyArNTQzLDcgQEAKIAkJLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy8kKFZFUlNJT04pLyQoUFlUSE9ORlJBTUVXT1JLKSBcCiAJCS1jb21wYXRpYmlsaXR5X3ZlcnNpb24gJChWRVJTSU9OKSBcCiAJCS1jdXJyZW50X3ZlcnNpb24gJChWRVJTSU9OKSBcCi0JCS1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gJChMSUJTKTsgCisJCS1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gJChMSUJTKTsKIAkkKElOU1RBTEwpIC1kIC1tICQoRElSTU9ERSkgIFwKIAkJJChQWVRIT05GUkFNRVdPUktESVIpL1ZlcnNpb25zLyQoVkVSU0lPTikvUmVzb3VyY2VzL0VuZ2xpc2gubHByb2oKIAkkKElOU1RBTExfREFUQSkgJChSRVNTUkNESVIpL0luZm8ucGxpc3QgXApAQCAtNTU3LDYgKzU5NCwxOCBAQAogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9fdGVzdGVtYmVkLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbXBvcnRsaWIKKworTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYjogTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKKwkkKE1BS0UpIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKKwkuL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAorCQkkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9pbXBvcnRsaWIuaAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU3BlY2lhbCBydWxlcyBmb3Igb2JqZWN0IGZpbGVzCiAKIE1vZHVsZXMvZ2V0YnVpbGRpbmZvLm86ICQoUEFSU0VSX09CSlMpIFwKQEAgLTU2Nyw3ICs2MTYsNiBAQAogCQkkKE1PRE9CSlMpIFwKIAkJJChzcmNkaXIpL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCi0JICAgICAgLURTVk5WRVJTSU9OPSJcImBMQ19BTEw9QyAkKFNWTlZFUlNJT04pYFwiIiBcCiAJICAgICAgLURIR1ZFUlNJT049IlwiYExDX0FMTD1DICQoSEdWRVJTSU9OKWBcIiIgXAogCSAgICAgIC1ESEdUQUc9IlwiYExDX0FMTD1DICQoSEdUQUcpYFwiIiBcCiAJICAgICAgLURIR0JSQU5DSD0iXCJgTENfQUxMPUMgJChIR0JSQU5DSClgXCIiIFwKQEAgLTU4NCw2ICs2MzIsOSBAQAogTW9kdWxlcy9weXRob24ubzogJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKIAkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKIAorTW9kdWxlcy9fdGVzdGVtYmVkLm86ICQoc3JjZGlyKS9Nb2R1bGVzL190ZXN0ZW1iZWQuYworCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKwogUHl0aG9uL2R5bmxvYWRfc2hsaWIubzogJChzcmNkaXIpL1B5dGhvbi9keW5sb2FkX3NobGliLmMgTWFrZWZpbGUKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCiAJCS1EU09BQkk9JyIkKFNPQUJJKSInIFwKQEAgLTU5NiwxMiArNjQ3LDEzIEBACiAKICQoSU9fT0JKUyk6ICQoSU9fSCkKIAotIyBVc2UgYSBzdGFtcCBmaWxlIHRvIHByZXZlbnQgbWFrZSAtaiBpbnZva2luZyBwZ2VuIHR3aWNlCi0kKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOiBQYXJzZXIvcGdlbi5zdGFtcAotUGFyc2VyL3BnZW4uc3RhbXA6ICQoUEdFTikgJChHUkFNTUFSX0lOUFVUKQotCQktQCQoSU5TVEFMTCkgLWQgSW5jbHVkZQorJChHUkFNTUFSX0gpOiAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTlNSQ1MpCisJCUAkKE1LRElSX1ApIEluY2x1ZGUKKwkJJChNQUtFKSAkKFBHRU4pCiAJCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCi0JCS10b3VjaCBQYXJzZXIvcGdlbi5zdGFtcAorJChHUkFNTUFSX0MpOiAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQorCQkkKE1BS0UpICQoR1JBTU1BUl9IKQorCQl0b3VjaCAkKEdSQU1NQVJfQykKIAogJChQR0VOKToJJChQR0VOT0JKUykKIAkJJChDQykgJChPUFQpICQoUFlfTERGTEFHUykgJChQR0VOT0JKUykgJChMSUJTKSAtbyAkKFBHRU4pCkBAIC02MTIsNiArNjY0LDggQEAKIFBhcnNlci9tZXRhZ3JhbW1hci5vOgkkKHNyY2RpcikvUGFyc2VyL21ldGFncmFtbWFyLmMKIAogUGFyc2VyL3Rva2VuaXplcl9wZ2VuLm86CSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmMKK1BhcnNlci9wYXJzZXRva19wZ2VuLm86CSQoc3JjZGlyKS9QYXJzZXIvcGFyc2V0b2suYworUGFyc2VyL3ByaW50Z3JhbW1hci5vOiAkKHNyY2RpcikvUGFyc2VyL3ByaW50Z3JhbW1hci5jCiAKIFBhcnNlci9wZ2VubWFpbi5vOgkkKHNyY2RpcikvSW5jbHVkZS9wYXJzZXRvay5oCiAKQEAgLTYxOSw3ICs2NzMsNyBAQAogCSQoTUtESVJfUCkgJChBU1RfSF9ESVIpCiAJJChBU0RMR0VOKSAtaCAkKEFTVF9IX0RJUikgJChBU1RfQVNETCkKIAotJChBU1RfQyk6ICQoQVNUX0FTREwpICQoQVNETEdFTl9GSUxFUykKKyQoQVNUX0MpOiAkKEFTVF9IKSAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCiAJJChNS0RJUl9QKSAkKEFTVF9DX0RJUikKIAkkKEFTRExHRU4pIC1jICQoQVNUX0NfRElSKSAkKEFTVF9BU0RMKQogCkBAIC02NDEsMjAgKzY5NSwyOSBAQAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaCBcCi0JCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaCBcCi0JCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCisKK1VOSUNPREVfREVQUyA9ICQoQllURVNUUl9ERVBTKSBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaAogCiBPYmplY3RzL2J5dGVzb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgJChCWVRFU1RSX0RFUFMpCiAKIE9iamVjdHMvYnl0ZWFycmF5b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jICQoQllURVNUUl9ERVBTKQogCi1PYmplY3RzL3VuaWNvZGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdW5pY29kZW9iamVjdC5jIFwKLQkJCQkkKEJZVEVTVFJfREVQUykKK09iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgJChVTklDT0RFX0RFUFMpCiAKIE9iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAogT2JqZWN0cy9zZXRvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKQEAgLTY2MiwxMSArNzI1LDEyIEBACiAkKE9QQ09ERVRBUkdFVFNfSCk6ICQoT1BDT0RFVEFSR0VUR0VOX0ZJTEVTKQogCSQoT1BDT0RFVEFSR0VUR0VOKSAkKE9QQ09ERVRBUkdFVFNfSCkKIAotUHl0aG9uL2NldmFsLm86ICQoT1BDT0RFVEFSR0VUU19IKSBQeXRob24vY2V2YWxfZ2lsLmgKK1B5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgJChzcmNkaXIpL1B5dGhvbi9jZXZhbF9naWwuaAogCiBQeXRob24vZm9ybWF0dGVyX3VuaWNvZGUubzogJChzcmNkaXIpL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIFwKLQkJCQkkKEJZVEVTVFJfREVQUykgXAotCQkJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaAorCQkJCSQoQllURVNUUl9ERVBTKQorCitQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaAogCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQpAQCAtNjc2LDg5ICs3NDAsODkgQEAKICMgSGVhZGVyIGZpbGVzCiAKIFBZVEhPTl9IRUFERVJTPSBcCi0JCUluY2x1ZGUvUHl0aG9uLWFzdC5oIFwKLQkJSW5jbHVkZS9QeXRob24uaCBcCi0JCUluY2x1ZGUvYWJzdHJhY3QuaCBcCi0JCUluY2x1ZGUvYWNjdS5oIFwKLQkJSW5jbHVkZS9hc2RsLmggXAotCQlJbmNsdWRlL2FzdC5oIFwKLSAgICAgICAgICAgICAgICBJbmNsdWRlL2JsdGlubW9kdWxlLmggXAotCQlJbmNsdWRlL2JpdHNldC5oIFwKLQkJSW5jbHVkZS9ib29sb2JqZWN0LmggXAotCQlJbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBcCi0JCUluY2x1ZGUvYnl0ZWFycmF5b2JqZWN0LmggXAotCQlJbmNsdWRlL2J5dGVzb2JqZWN0LmggXAotCQlJbmNsdWRlL2NlbGxvYmplY3QuaCBcCi0JCUluY2x1ZGUvY2V2YWwuaCBcCi0JCUluY2x1ZGUvY2xhc3NvYmplY3QuaCBcCi0JCUluY2x1ZGUvY29kZS5oIFwKLQkJSW5jbHVkZS9jb2RlY3MuaCBcCi0JCUluY2x1ZGUvY29tcGlsZS5oIFwKLQkJSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggXAotCQlJbmNsdWRlL2Rlc2Nyb2JqZWN0LmggXAotCQlJbmNsdWRlL2RpY3RvYmplY3QuaCBcCi0JCUluY2x1ZGUvZHRvYS5oIFwKLQkJSW5jbHVkZS9keW5hbWljX2Fubm90YXRpb25zLmggXAotCQlJbmNsdWRlL2VudW1vYmplY3QuaCBcCi0JCUluY2x1ZGUvZXJyY29kZS5oIFwKLQkJSW5jbHVkZS9ldmFsLmggXAotCQlJbmNsdWRlL2ZpbGVvYmplY3QuaCBcCi0JCUluY2x1ZGUvZmlsZXV0aWxzLmggXAotCQlJbmNsdWRlL2Zsb2F0b2JqZWN0LmggXAotCQlJbmNsdWRlL2ZyYW1lb2JqZWN0LmggXAotCQlJbmNsdWRlL2Z1bmNvYmplY3QuaCBcCi0JCUluY2x1ZGUvZ2Vub2JqZWN0LmggXAotCQlJbmNsdWRlL2ltcG9ydC5oIFwKLQkJSW5jbHVkZS9pbnRyY2hlY2suaCBcCi0JCUluY2x1ZGUvaXRlcm9iamVjdC5oIFwKLQkJSW5jbHVkZS9saXN0b2JqZWN0LmggXAotCQlJbmNsdWRlL2xvbmdpbnRyZXByLmggXAotCQlJbmNsdWRlL2xvbmdvYmplY3QuaCBcCi0JCUluY2x1ZGUvbWFyc2hhbC5oIFwKLQkJSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBcCi0JCUluY2x1ZGUvbWV0YWdyYW1tYXIuaCBcCi0JCUluY2x1ZGUvbWV0aG9kb2JqZWN0LmggXAotCQlJbmNsdWRlL21vZHN1cHBvcnQuaCBcCi0JCUluY2x1ZGUvbW9kdWxlb2JqZWN0LmggXAotCQlJbmNsdWRlL25vZGUuaCBcCi0JCUluY2x1ZGUvb2JqZWN0LmggXAotCQlJbmNsdWRlL29iamltcGwuaCBcCi0JCUluY2x1ZGUvb3Bjb2RlLmggXAotCQlJbmNsdWRlL29zZGVmcy5oIFwKLQkJSW5jbHVkZS9wYXJzZXRvay5oIFwKLQkJSW5jbHVkZS9wYXRjaGxldmVsLmggXAotCQlJbmNsdWRlL3BnZW4uaCBcCi0JCUluY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCi0JCUluY2x1ZGUvcHlhcmVuYS5oIFwKLQkJSW5jbHVkZS9weWF0b21pYy5oIFwKLQkJSW5jbHVkZS9weWNhcHN1bGUuaCBcCi0JCUluY2x1ZGUvcHljdHlwZS5oIFwKLQkJSW5jbHVkZS9weWRlYnVnLmggXAotCQlJbmNsdWRlL3B5ZXJyb3JzLmggXAotCQlJbmNsdWRlL3B5ZnBlLmggXAotCQlJbmNsdWRlL3B5bWF0aC5oIFwKLQkJSW5jbHVkZS9weWdldG9wdC5oIFwKLQkJSW5jbHVkZS9weW1lbS5oIFwKLQkJSW5jbHVkZS9weXBvcnQuaCBcCi0JCUluY2x1ZGUvcHlzdGF0ZS5oIFwKLQkJSW5jbHVkZS9weXN0cmNtcC5oIFwKLQkJSW5jbHVkZS9weXN0cnRvZC5oIFwKLQkJSW5jbHVkZS9weXRob25ydW4uaCBcCi0JCUluY2x1ZGUvcHl0aHJlYWQuaCBcCi0JCUluY2x1ZGUvcHl0aW1lLmggXAotCQlJbmNsdWRlL3Jhbmdlb2JqZWN0LmggXAotCQlJbmNsdWRlL3NldG9iamVjdC5oIFwKLQkJSW5jbHVkZS9zbGljZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBcCi0JCUluY2x1ZGUvc3RydWN0c2VxLmggXAotCQlJbmNsdWRlL3N5bXRhYmxlLmggXAotCQlJbmNsdWRlL3N5c21vZHVsZS5oIFwKLQkJSW5jbHVkZS90cmFjZWJhY2suaCBcCi0JCUluY2x1ZGUvdHVwbGVvYmplY3QuaCBcCi0JCUluY2x1ZGUvdWNuaGFzaC5oIFwKLQkJSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggXAotCQlJbmNsdWRlL3dhcm5pbmdzLmggXAotCQlJbmNsdWRlL3dlYWtyZWZvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYWJzdHJhY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2FjY3UuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2FzZGwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2FzdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYmx0aW5tb2R1bGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2JpdHNldC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYm9vbG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZWFycmF5b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ieXRlc29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY2VsbG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY2V2YWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NsYXNzb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb2RlY3MuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NvbXBpbGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kaWN0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kdG9hLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9keW5hbWljX2Fubm90YXRpb25zLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9lbnVtb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9lcnJjb2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ldmFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9maWxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9maWxldXRpbHMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9mcmFtZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZnVuY29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZ2Vub2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9pbXBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2ludHJjaGVjay5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvaXRlcm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbGlzdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbG9uZ2ludHJlcHIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xvbmdvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21hcnNoYWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21lbW9yeW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbWV0YWdyYW1tYXIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21ldGhvZG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbW9kc3VwcG9ydC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL25vZGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb2JqaW1wbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb3Bjb2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW4uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW5oZWFkZXJzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWFyZW5hLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWF0b21pYy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHljYXBzdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWN0eXBlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWRlYnVnLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWVycm9ycy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlmcGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWF0aC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlnZXRvcHQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWFjcm8uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWVtLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RhdGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RyY21wLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cnRvZC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aG9ucnVuLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXRocmVhZC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aW1lLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9yYW5nZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc2V0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zbGljZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3RydWN0bWVtYmVyLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zdHJ1Y3RzZXEuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N5bXRhYmxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zeXNtb2R1bGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3RyYWNlYmFjay5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvdHVwbGVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3Vjbmhhc2guaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3dhcm5pbmdzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAogCQlweWNvbmZpZy5oIFwKIAkJJChQQVJTRVJfSEVBREVSUykKIApAQCAtNzY3LDY1ICs4MzEsNTYgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFRlc3QgdGhlIGludGVycHJldGVyICh0d2ljZSwgb25jZSB3aXRob3V0IC5weWMgZmlsZXMsIG9uY2Ugd2l0aCkKK1RFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCitURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQorVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKK1RFU1RUSU1FT1VUPQkzNjAwCisKKyMgUnVuIGEgYmFzaWMgc2V0IG9mIHJlZ3Jlc3Npb24gdGVzdHMuCisjIFRoaXMgZXhjbHVkZXMgc29tZSB0ZXN0cyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkgcmVzb3VyY2UtaW50ZW5zaXZlLgordGVzdDoJCWFsbCBwbGF0Zm9ybQorCQkkKFRFU1RSVU5ORVIpICQoVEVTVE9QVFMpCisKKyMgUnVuIHRoZSBmdWxsIHRlc3Qgc3VpdGUgdHdpY2UgLSBvbmNlIHdpdGhvdXQgLnB5YyBmaWxlcywgYW5kIG9uY2Ugd2l0aC4KICMgSW4gdGhlIHBhc3QsIHdlJ3ZlIGhhZCBwcm9ibGVtcyB3aGVyZSBidWdzIGluIHRoZSBtYXJzaGFsbGluZyBvcgogIyBlbHNld2hlcmUgY2F1c2VkIGJ5dGVjb2RlIHJlYWQgZnJvbSAucHljIGZpbGVzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseQogIyB0aGFuIGJ5dGVjb2RlIGdlbmVyYXRlZCBkaXJlY3RseSBmcm9tIGEgLnB5IHNvdXJjZSBmaWxlLiAgU29tZXRpbWVzCi0jIHRoZSBieXRlY29kZSByZWFkIGZyb20gYSAucHljIGZpbGUgaGFkIHRoZSBidWcsIHNvbXRpbWVzIHRoZSBkaXJlY3RseQorIyB0aGUgYnl0ZWNvZGUgcmVhZCBmcm9tIGEgLnB5YyBmaWxlIGhhZCB0aGUgYnVnLCBzb21ldGltZXMgdGhlIGRpcmVjdGx5CiAjIGdlbmVyYXRlZCBieXRlY29kZS4gIFRoaXMgaXMgc29tZXRpbWVzIGEgdmVyeSBzaHkgYnVnIG5lZWRpbmcgYSBsb3Qgb2YKICMgc2FtcGxlIGRhdGEuCi0KLVRFU1RPUFRTPQktbCAkKEVYVFJBVEVTVE9QVFMpCi1URVNUUFJPRz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5Ci1URVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtV2QgLUUgLVIgLWJiICQoVEVTVFBZVEhPTk9QVFMpCi10ZXN0OgkJYWxsIHBsYXRmb3JtCi0JCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoVEVTVE9QVFMpCi0KIHRlc3RhbGw6CWFsbCBwbGF0Zm9ybQogCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJJChURVNUUFlUSE9OKSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKKwkJJChURVNUUFlUSE9OKSAtRSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKKwkJLSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCiAKLSMgIFJ1biB0aGUgdW5pdGVzdHMgZm9yIGJvdGggYXJjaGl0ZWN0dXJlcyBpbiBhIFVuaXZlcnNhbCBidWlsZCBvbiBPU1gKLSMgIE11c3QgYmUgcnVuIG9uIGFuIEludGVsIGJveC4KKyMgUnVuIHRoZSB0ZXN0IHN1aXRlIGZvciBib3RoIGFyY2hpdGVjdHVyZXMgaW4gYSBVbml2ZXJzYWwgYnVpbGQgb24gT1NYLgorIyBNdXN0IGJlIHJ1biBvbiBhbiBJbnRlbCBib3guCiB0ZXN0dW5pdmVyc2FsOglhbGwgcGxhdGZvcm0KIAkJaWYgWyBgYXJjaGAgIT0gJ2kzODYnIF07dGhlbiBcCiAJCQllY2hvICJUaGlzIGNhbiBvbmx5IGJlIHVzZWQgb24gT1NYL2kzODYiIDtcCiAJCQlleGl0IDEgO1wKIAkJZmkKLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKLQkJJChSVU5TSEFSRUQpIC91c3IvbGliZXhlYy9vYWgvdHJhbnNsYXRlIC4vJChCVUlMRFBZVEhPTikgLUUgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtdSBhbGwgJChURVNUT1BUUykKKwkJJChSVU5TSEFSRUQpIC91c3IvbGliZXhlYy9vYWgvdHJhbnNsYXRlIFwKKwkJCS4vJChCVUlMRFBZVEhPTikgLUUgLW0gdGVzdCAtaiAwIC11IGFsbCAkKFRFU1RPUFRTKQogCi0KLSMgTGlrZSB0ZXN0YWxsLCBidXQgd2l0aCBhIHNpbmdsZSBwYXNzIG9ubHkKLSMgcnVuIGFuIG9wdGlvbmFsIHNjcmlwdCB0byBpbmNsdWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIGVudmlyb25tZW50CisjIExpa2UgdGVzdGFsbCwgYnV0IHdpdGggb25seSBvbmUgcGFzcyBhbmQgd2l0aG91dCBtdWx0aXBsZSBwcm9jZXNzZXMuCisjIFJ1biBhbiBvcHRpb25hbCBzY3JpcHQgdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgZW52aXJvbm1lbnQuCiBidWlsZGJvdHRlc3Q6CWFsbCBwbGF0Zm9ybQogCQktQGlmIHdoaWNoIHB5YnVpbGRib3QuaWRlbnRpZnkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIAkJCXB5YnVpbGRib3QuaWRlbnRpZnkgIkNDPSckKENDKSciICJDWFg9JyQoQ1hYKSciOyBcCiAJCWZpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgLXJ3VyAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC1qIDEgLXUgYWxsIC1XIC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCiAJCXRlc3RfbXVsdGlwcm9jZXNzaW5nIHRlc3RfbWFpbGJveCB0ZXN0X3NvY2tldCB0ZXN0X3BvbGwgXAotCQl0ZXN0X3NlbGVjdCB0ZXN0X3ppcGZpbGUKKwkJdGVzdF9zZWxlY3QgdGVzdF96aXBmaWxlIHRlc3RfY29uY3VycmVudF9mdXR1cmVzCiBxdWlja3Rlc3Q6CWFsbCBwbGF0Zm9ybQotCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChRVUlDS1RFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoUVVJQ0tURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAkKFFVSUNLVEVTVE9QVFMpCiAKLU1FTVRFU1RPUFRTPSAgICAkKFFVSUNLVEVTVE9QVFMpIC14IHRlc3RfZGwgdGVzdF9fX2FsbF9fIHRlc3RfZm9yazEgXAotCQl0ZXN0X2xvbmdleHAKLW1lbXRlc3Q6CWFsbCBwbGF0Zm9ybQotCQktcm0gLWYgJChzcmNkaXIpL0xpYi90ZXN0LyoucHlbY29dCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoTUVNVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChNRU1URVNUT1BUUykKIAogaW5zdGFsbDogYWx0aW5zdGFsbCBiaW5pbnN0YWxsCiAKQEAgLTg2Niw3ICs5MjEsNyBAQAogCWRvbmUKIAkkKElOU1RBTExfUFJPR1JBTSkgJChCVUlMRFBZVEhPTikgJChERVNURElSKSQoQklORElSKS9weXRob24kKExEVkVSU0lPTikkKEVYRSkKIAktaWYgdGVzdCAiJChWRVJTSU9OKSIgIT0gIiQoTERWRVJTSU9OKSI7IHRoZW4gXAotCQlpZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pJChWRVJTSU9OKSQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKSQoVkVSU0lPTikkKEVYRSk7IFwKKwkJaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTikkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpOyBcCiAJCXRoZW4gcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpOyBcCiAJCWZpOyBcCiAJCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSBweXRob24kKExEVkVSU0lPTikkKEVYRSkgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSk7IFwKQEAgLTg4NywxMSArOTQyLDExIEBACiAJZmkKIAogYmluaW5zdGFsbDogYWx0YmluaW5zdGFsbAotCS1pZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSk7IFwKLQl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKTsgXAorCS1pZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSk7IFwKKwl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKTsgXAogCWVsc2UgdHJ1ZTsgXAogCWZpCi0JKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkgJChQWVRIT04pMyQoRVhFKSkKKwkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSBweXRob24zJChFWEUpKQogCS1pZiB0ZXN0ICIkKFZFUlNJT04pIiAhPSAiJChMRFZFUlNJT04pIjsgdGhlbiBcCiAJCXJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKS1jb25maWc7IFwKIAkJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5dGhvbiQoTERWRVJTSU9OKS1jb25maWcgcHl0aG9uJChWRVJTSU9OKS1jb25maWcpOyBcCkBAIC05MDgsNiArOTYzLDggQEAKIAkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHlkb2MkKFZFUlNJT04pIHB5ZG9jMykKIAktcm0gLWYgJChERVNURElSKSQoQklORElSKS8ydG8zCiAJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIDJ0bzMtJChWRVJTSU9OKSAydG8zKQorCS1ybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dmVudgorCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweXZlbnYtJChWRVJTSU9OKSBweXZlbnYpCiAKICMgSW5zdGFsbCB0aGUgbWFudWFsIHBhZ2UKIG1hbmluc3RhbGw6CkBAIC05MzMsMjEgKzk5MCw0MyBAQAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAotCQljb25jdXJyZW50IGNvbmN1cnJlbnQvZnV0dXJlcyBlbmNvZGluZ3MgXAotCQllbWFpbCBlbWFpbC9taW1lIGVtYWlsL3Rlc3QgZW1haWwvdGVzdC9kYXRhIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL25vdF9hX25hbWVzcGFjZV9wa2cvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMSBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMiBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MSBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50IFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQvY2hpbGQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkIFwKKyAgICAgICAgICAgICAgICB0ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UgXAorICAgICAgICAgICAgICAgIHRlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QgXAorCQljb2xsZWN0aW9ucyBjb25jdXJyZW50IGNvbmN1cnJlbnQvZnV0dXJlcyBlbmNvZGluZ3MgXAorCQllbWFpbCBlbWFpbC9taW1lIHRlc3QvdGVzdF9lbWFpbCB0ZXN0L3Rlc3RfZW1haWwvZGF0YSBcCiAJCWh0bWwganNvbiB0ZXN0L2pzb25fdGVzdHMgaHR0cCBkYm0geG1scnBjIFwKIAkJc3FsaXRlMyBzcWxpdGUzL3Rlc3QgXAogCQlsb2dnaW5nIGNzdiB3c2dpcmVmIHVybGxpYiBcCiAJCWxpYjJ0bzMgbGliMnRvMy9maXhlcyBsaWIydG8zL3BnZW4yIGxpYjJ0bzMvdGVzdHMgXAotCQlsaWIydG8zL3Rlc3RzL2RhdGEgbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycyBsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzL215Zml4ZXMgXAorCQlsaWIydG8zL3Rlc3RzL2RhdGEgbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycyBcCisJCWxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMvbXlmaXhlcyBcCiAJCWN0eXBlcyBjdHlwZXMvdGVzdCBjdHlwZXMvbWFjaG9saWIgaWRsZWxpYiBpZGxlbGliL0ljb25zIFwKIAkJZGlzdHV0aWxzIGRpc3R1dGlscy9jb21tYW5kIGRpc3R1dGlscy90ZXN0cyAkKFhNTExJQlNVQkRJUlMpIFwKLQkJaW1wb3J0bGliIGltcG9ydGxpYi90ZXN0IGltcG9ydGxpYi90ZXN0L2J1aWx0aW4gXAotCQlpbXBvcnRsaWIvdGVzdC9leHRlbnNpb24gaW1wb3J0bGliL3Rlc3QvZnJvemVuIFwKLQkJaW1wb3J0bGliL3Rlc3QvaW1wb3J0XyBpbXBvcnRsaWIvdGVzdC9zb3VyY2UgXAorCQlpbXBvcnRsaWIgdGVzdC90ZXN0X2ltcG9ydGxpYiB0ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4gXAorCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbiB0ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbiBcCisJCXRlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0XyB0ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZSBcCiAJCXR1cnRsZWRlbW8gXAogCQltdWx0aXByb2Nlc3NpbmcgbXVsdGlwcm9jZXNzaW5nL2R1bW15IFwKLQkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCBcCisJCXVuaXR0ZXN0IHVuaXR0ZXN0L3Rlc3QgdW5pdHRlc3QvdGVzdC90ZXN0bW9jayBcCisJCXZlbnYgdmVudi9zY3JpcHRzIHZlbnYvc2NyaXB0cy9wb3NpeCBcCiAJCWN1cnNlcyBweWRvY19kYXRhICQoTUFDSERFUFMpCiBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKQEAgLTk2OSw3ICsxMDQ4LDcgQEAKIAkJZWxzZQl0cnVlOyBcCiAJCWZpOyBcCiAJZG9uZQotCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgJChzcmNkaXIpL0xpYi8qLmVnZy1pbmZvIDsgXAorCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGEucHk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgLXggJCRpOyB0aGVuIFwKIAkJCSQoSU5TVEFMTF9TQ1JJUFQpICQkaSAkKERFU1RESVIpJChMSUJERVNUKTsgXApAQCAtMTAxMCwyNyArMTA4OSwyNyBAQAogCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXAogCWZpCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKIAogIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCiAkKHNyY2RpcikvTGliLyQoUExBVERJUik6CkBAIC0xMTI0LDExICsxMjAzLDEzIEBACiAjIEluc3RhbGwgdGhlIGR5bmFtaWNhbGx5IGxvYWRhYmxlIG1vZHVsZXMKICMgVGhpcyBnb2VzIGludG8gJChleGVjX3ByZWZpeCkKIHNoYXJlZGluc3RhbGw6IHNoYXJlZG1vZHMKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAkKHNyY2Rpcikvc2V0dXAucHkgaW5zdGFsbCBcCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL3NldHVwLnB5IGluc3RhbGwgXAogCSAgIAktLXByZWZpeD0kKHByZWZpeCkgXAogCQktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCQktLWluc3RhbGwtcGxhdGxpYj0kKERFU1RTSEFSRUQpIFwKIAkJLS1yb290PSQoREVTVERJUikvCisJLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhLnB5CisJLXJtIC1yICQoREVTVERJUikkKERFU1RTSEFSRUQpL19fcHljYWNoZV9fCiAKICMgSGVyZSBhcmUgYSBjb3VwbGUgb2YgdGFyZ2V0cyBmb3IgTWFjT1NYIGFnYWluLCB0byBpbnN0YWxsIGEgZnVsbAogIyBmcmFtZXdvcmstYmFzZWQgUHl0aG9uLiBmcmFtZXdvcmtpbnN0YWxsIGluc3RhbGxzIGV2ZXJ5dGhpbmcsIHRoZQpAQCAtMTE5OSwxMyArMTI4MCwxMyBAQAogIyBUaGlzIGluc3RhbGxzIGEgZmV3IG9mIHRoZSB1c2VmdWwgc2NyaXB0cyBpbiBUb29scy9zY3JpcHRzCiBzY3JpcHRzaW5zdGFsbDoKIAlTUkNESVI9JChzcmNkaXIpICQoUlVOU0hBUkVEKSBcCi0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9zZXR1cC5weSBpbnN0YWxsIFwKKwkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3NldHVwLnB5IGluc3RhbGwgXAogCS0tcHJlZml4PSQocHJlZml4KSBcCiAJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAktLXJvb3Q9JChERVNURElSKS8KIAogIyBCdWlsZCB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUKLU1ha2VmaWxlLnByZTogTWFrZWZpbGUucHJlLmluIGNvbmZpZy5zdGF0dXMKK01ha2VmaWxlLnByZTogJChzcmNkaXIpL01ha2VmaWxlLnByZS5pbiBjb25maWcuc3RhdHVzCiAJQ09ORklHX0ZJTEVTPU1ha2VmaWxlLnByZSBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgY29uZmlnLnN0YXR1cwogCSQoTUFLRSkgLWYgTWFrZWZpbGUucHJlIE1ha2VmaWxlCiAKQEAgLTEyNDgsNiArMTMyOSwxMCBAQAogCWV0YWdzIEluY2x1ZGUvKi5oOyBcCiAJZm9yIGkgaW4gJChTUkNESVJTKTsgZG8gZXRhZ3MgLWEgJCRpLyouW2NoXTsgZG9uZQogCisjIFRvdWNoIGdlbmVyYXRlZCBmaWxlcwordG91Y2g6CisJaGcgLS1jb25maWcgZXh0ZW5zaW9ucy50b3VjaD1Ub29scy9oZy9oZ3RvdWNoLnB5IHRvdWNoIC12CisKICMgU2FuaXRhdGlvbiB0YXJnZXRzIC0tIGNsZWFuIGxlYXZlcyBsaWJyYXJpZXMsIGV4ZWN1dGFibGVzIGFuZCB0YWdzCiAjIGZpbGVzLCB3aGljaCBjbG9iYmVyIHJlbW92ZXMgYXMgd2VsbAogcHljcmVtb3ZhbDoKQEAgLTEyNzAsMTYgKzEzNTUsMTggQEAKIAlmaW5kIC4gLW5hbWUgJyouc1tvbF0nIC1leGVjIHJtIC1mIHt9ICc7JwogCWZpbmQgLiAtbmFtZSAnKi5zby5bMC05XSouWzAtOV0qJyAtZXhlYyBybSAtZiB7fSAnOycKIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcuaCcgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKLQlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisJZmluZCBidWlsZCAtbmFtZSAnKi5weScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKwlmaW5kIGJ1aWxkIC1uYW1lICcqLnB5W2NvXScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKwktcm0gLWYgcHlidWlsZGRpci50eHQKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQotCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQKKwktcm0gLWYgTW9kdWxlcy9fdGVzdGVtYmVkIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKIAogY2xvYmJlcjogY2xlYW4gcHJvZmlsZS1yZW1vdmFsCiAJLXJtIC1mICQoQlVJTERQWVRIT04pICQoUEdFTikgJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChETExMSUJSQVJZKSBcCi0JCXRhZ3MgVEFHUyBQYXJzZXIvcGdlbi5zdGFtcCBcCisJCXRhZ3MgVEFHUyBcCiAJCWNvbmZpZy5jYWNoZSBjb25maWcubG9nIHB5Y29uZmlnLmggTW9kdWxlcy9jb25maWcuYwogCS1ybSAtcmYgYnVpbGQgcGxhdGZvcm0KIAktcm0gLXJmICQoUFlUSE9ORlJBTUVXT1JLRElSKQpAQCAtMTI5NSw3ICsxMzgyLDYgQEAKIAkJTW9kdWxlcy9TZXR1cCBNb2R1bGVzL1NldHVwLmxvY2FsIE1vZHVsZXMvU2V0dXAuY29uZmlnIFwKIAkJTW9kdWxlcy9sZF9zb19haXggTW9kdWxlcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCiAJLXJtIC1mIHB5dGhvbiotZ2RiLnB5Ci0JLXJtIC1mIHB5YnVpbGRkaXIudHh0CiAJZmluZCAkKHNyY2RpcikgJygnIC1uYW1lICcqLmZkYycgLW8gLW5hbWUgJyp+JyBcCiAJCQkgICAtbyAtbmFtZSAnW0AsI10qJyAtbyAtbmFtZSAnKi5vbGQnIFwKIAkJCSAgIC1vIC1uYW1lICcqLm9yaWcnIC1vIC1uYW1lICcqLnJlaicgXApAQCAtMTMxMCw4ICsxMzk2LDcgQEAKICMgRmluZCBmaWxlcyB3aXRoIGZ1bm55IG5hbWVzCiBmdW5ueToKIAlmaW5kICQoU1VCRElSUykgJChTVUJESVJTVE9PKSBcCi0JCS1uYW1lIC5zdm4gLXBydW5lIFwKLQkJLW8gLXR5cGUgZCBcCisJCS10eXBlIGQgXAogCQktbyAtbmFtZSAnKi5bY2hzXScgXAogCQktbyAtbmFtZSAnKi5weScgXAogCQktbyAtbmFtZSAnKi5weXcnIFwKQEAgLTEzNTAsMTMgKzE0MzUsMTMgQEAKIFB5dGhvbi90aHJlYWQubzogQFRIUkVBREhFQURFUlNACiAKICMgRGVjbGFyZSB0YXJnZXRzIHRoYXQgYXJlbid0IHJlYWwgZmlsZXMKLS5QSE9OWTogYWxsIGJ1aWxkX2FsbCBzaGFyZWRtb2RzIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QgbWVtdGVzdAorLlBIT05ZOiBhbGwgYnVpbGRfYWxsIHNoYXJlZG1vZHMgb2xkc2hhcmVkbW9kcyB0ZXN0IHF1aWNrdGVzdAogLlBIT05ZOiBpbnN0YWxsIGFsdGluc3RhbGwgb2xkc2hhcmVkaW5zdGFsbCBiaW5pbnN0YWxsIGFsdGJpbmluc3RhbGwKIC5QSE9OWTogbWFuaW5zdGFsbCBsaWJpbnN0YWxsIGluY2xpbnN0YWxsIGxpYmFpbnN0YWxsIHNoYXJlZGluc3RhbGwKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbCBmcmFtZXdvcmtpbnN0YWxsZnJhbWV3b3JrIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmUKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbG1hY2xpYiBmcmFtZXdvcmtpbnN0YWxsYXBwcyBmcmFtZXdvcmtpbnN0YWxsdW5peHRvb2xzCiAuUEhPTlk6IGZyYW1ld29ya2FsdGluc3RhbGx1bml4dG9vbHMgcmVjaGVjayBhdXRvY29uZiBjbGVhbiBjbG9iYmVyIGRpc3RjbGVhbgotLlBIT05ZOiBzbWVsbHkgZnVubnkgcGF0Y2hjaGVjaworLlBIT05ZOiBzbWVsbHkgZnVubnkgcGF0Y2hjaGVjayB0b3VjaAogLlBIT05ZOiBnZGJob29rcwogCiAjIElGIFlPVSBQVVQgQU5ZVEhJTkcgSEVSRSBJVCBXSUxMIEdPIEFXQVkKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCA2ZTdkZmU0Li42NjFkMGVjIDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMyw4ICsxMywxMSBAQAogCiBBYWh6CiBNaWNoYWVsIEFiYm90dAorUmFqaXYgQWJyYWhhbQogRGF2aWQgQWJyYWhhbXMKK01hcmMgQWJyYW1vd2l0egogUm9uIEFkYW0KK0FsaSBBZnNoYXIKIEppbSBBaGxzdHJvbQogRmFyaGFuIEFobWFkCiBNYXR0aGV3IEFocmVucwpAQCAtMzYsNiArMzksNyBAQAogRXJpayBBbmRlcnPDqW4KIE9saXZlciBBbmRyaWNoCiBSb3NzIEFuZHJ1cworSnVhbmNhcmxvIEHDsWV6CiBKw6lyw6lteSBBbmdlcgogSm9uIEFuZ2xpbgogSGVpZGkgQW5uZXhzdGFkCkBAIC00NSwxMyArNDksMTMgQEAKIEphc29uIEFzYmFocgogRGF2aWQgQXNjaGVyCiBDaHJpcyBBdExlZQorQXltZXJpYyBBdWd1c3RpbgogSm9obiBBeWNvY2sKLUphbi1IZWluIELDvGhybWFuCiBEb25vdmFuIEJhYXJkYQogQXJuZSBCYWJlbmhhdXNlcmhlaWRlCiBBdHRpbGEgQmFibwotQWxmb25zbyBCYWNpZXJvCiBNYXJjaW4gQmFjaHJ5CitBbGZvbnNvIEJhY2llcm8KIER3YXluZSBCYWlsZXkKIFN0aWcgQmFra2VuCiBHcmVnIEJhbGwKQEAgLTY2LDIzICs3MCwyNSBAQAogQW50b24gQmFya292c2t5CiBOaWNrIEJhcm5lcwogUXVlbnRpbiBCYXJuZXMKK0RhdmlkIEJhcm5ldHQKIE1hdHRoZXcgQmFybmV0dAogUmljaGFyZCBCYXJyYW4KIENlc2FyIEVkdWFyZG8gQmFycm9zCiBEZXMgQmFycnkKIFVsZiBCYXJ0ZWx0CiBEb24gQmFzaGZvcmQKK1Bpb3IgQmFzdGlkYQogTmljayBCYXN0aW4KIE5lZCBCYXRjaGVsZGVyCiBKZWZmIEJhdWVyCi1NaWtlIEJheWVyCiBNaWNoYWVsIFIgQmF4CiBBbnRob255IEJheHRlcgorTWlrZSBCYXllcgogU2FtdWVsIEwuIEJheWVyCiBEb25hbGQgQmVhdWRyeQogRGF2aWQgQmVhemxleQotUm9iaW4gQmVja2VyCiBOZWFsIEJlY2tlcgorUm9iaW4gQmVja2VyCiBUb3JzdGVuIEJlY2tlcgogQmlsbCBCZWRmb3JkCiBTdGVmYW4gQmVobmVsCkBAIC05NSw5ICsxMDEsMTEgQEAKIEFuZHJldyBCZW5uZXR0cwogQW5keSBCZW5za3kKIEJlbm5ldHQgQmVuc29uCitFenJhIEJlcmNoCiBNaWNoZWwgVmFuIGRlbiBCZXJnaAogSnVsaWFuIEJlcm1hbgogQnJpY2UgQmVybmEKK09saXZpZXIgQmVybmFyZAogRXJpYyBCZXNlcgogU3RldmVuIEJldGhhcmQKIFN0ZXBoZW4gQmV2YW4KQEAgLTExMCw2ICsxMTgsNyBAQAogU3R1YXJ0IEJpc2hvcAogUm95IEJpeGxlcgogSm9uYXRoYW4gQmxhY2sKK1JlbmF1ZCBCbGFuY2gKIE1pa2UgQmxhbmQKIE1hcnRpbiBCbGVzcwogUGFibG8gQmxleWVyCkBAIC0xMjAsMTEgKzEyOSwxMyBAQAogTWF0dGhldyBCb2VkaWNrZXIKIFJvYmluIEJvZXJkaWprCiBEYXZpZCBCb2xlbgotRm9yZXN0IEJvbmQKIEdhd2FpbiBCb2x0b24KK0ZvcmVzdCBCb25kCiBHcmVnb3J5IEJvbmQKK01hdGlhcyBCb3JkZXNlCiBKdXJqZW4gQm9zCiBQZXRlciBCb3NjaAorRGFuIEJvc3dlbGwKIEVyaWMgQm91Y2sKIFRoaWVycnkgQm91c2NoCiBTZWJhc3RpYW4gQm92aW5nCkBAIC0xMzUsOSArMTQ2LDExIEBACiBHZW9yZyBCcmFuZGwKIENocmlzdG9waGVyIEJyYW5ub24KIFRlcnJlbmNlIEJyYW5ub24KK0VyaWsgQnJheQogQnJpYW4gQnJhemlsCiBEYXZlIEJyZW5uYW4KIFRvbSBCcmlkZ21hbgorQW50aG9ueSBCcmlnZ3MKIEtlaXRoIEJyaWdncwogVG9iaWFzIEJyaW5rCiBSaWNoYXJkIEJyb2RpZQpAQCAtMTQ1LDYgKzE1OCw3IEBACiBEYW5pZWwgQnJvdHNreQogSmVhbiBCcm91d2VycwogR2FyeSBTLiBCcm93bgorVGl0dXMgQnJvd24KIE9sZWcgQnJveXRtYW5uCiBEYXZlIEJydWVjawogRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqQpAQCAtMTUyLDYgKzE2Niw3IEBACiBGbG9yaXMgQnJ1eW5vb2doZQogU3RhbiBCdWJyb3Vza2kKIEVyaWsgZGUgQnVlZ2VyCitKYW4tSGVpbiBCw7xocm1hbgogRGljayBCdWx0ZXJtYW4KIEJpbGwgQnVtZ2FybmVyCiBKaW1teSBCdXJnZXR0CkBAIC0xNjEsMTQgKzE3NiwxNSBAQAogVGFybiBXZWlzbmVyIEJ1cnRvbgogTGVlIEJ1c2J5CiBSYWxwaCBCdXRsZXIKK05pY29sYXMgQ2Fkb3UKIEpwIENhbGRlcm9uZQogQXJuYXVkIENhbG1ldHRlcwogRGFuaWVsIENhbHZlbG8KIFRvbnkgQ2FtcGJlbGwKIEJyZXR0IENhbm5vbgogTWlrZSBDYXJsdG9uCitQaWVycmUgQ2FycmllcgogVGVycnkgQ2Fycm9sbAotRGFtaWVuIENhc3NvdQogTG9yZW56byBNLiBDYXR1Y2NpCiBEb25uIENhdmUKIENoYXJsZXMgQ2F6YWJvbgpAQCAtMTgxLDkgKzE5NywxMCBAQAogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKLU1pdGNoIENoYXBtYW4KLUdyZWcgQ2hhcG1hbgorR29kZWZyb2lkIENoYXBlbGxlCiBCcmFkIENoYXBtYW4KK0dyZWcgQ2hhcG1hbgorTWl0Y2ggQ2hhcG1hbgogRGF2aWQgQ2hhdW0KIE5pY29sYXMgQ2hhdXZhdAogSmVycnkgQ2hlbgpAQCAtMTk4LDkgKzIxNSwxMSBAQAogRGF2aWQgQ2luZWdlCiBDcmFpZyBDaXRybwogR2lsbGVzIENpdmFyaW8KK0NocmlzIENsYXJrCiBNaWtlIENsYXJrc29uCiBBbmRyZXcgQ2xlZ2cKIEJyYWQgQ2xlbWVudHMKK1JvYmJpZSBDbGVtb25zCiBTdGV2ZSBDbGlmdAogSGVydsOpIENvYXRhbmhheQogTmljayBDb2dobGFuCkBAIC0yMTEsOCArMjMwLDkgQEAKIEplZmZlcnkgQ29sbGlucwogUm9iZXJ0IENvbGxpbnMKIFBhdWwgQ29sb21pZXRzCi1EZW52ZXIgQ29uZXliZWFyZQorQ2hyaXN0b3BoZSBDb21iZWxsZXMKIEdlcmVteSBDb25kcmEKK0RlbnZlciBDb25leWJlYXJlCiBKdWFuIEpvc8OpIENvbnRpCiBNYXR0IENvbndheQogRGF2aWQgTS4gQ29va2UKQEAgLTI0MSw2ICsyNjEsNyBAQAogQW50b25pbyBDdW5pCiBCcmlhbiBDdXJ0aW4KIExpc2FuZHJvIERhbGNpbgorRGFycmVuIERhbGUKIEFuZHJldyBEYWxrZQogTGFycyBEYW1lcm93CiBFdmFuIERhbmRyZWEKQEAgLTI0OSwxMCArMjcwLDEzIEBACiBCZW4gRGFybmVsbAogS3VzaGFsIERhcwogSm9uYXRoYW4gRGFzdGVlbAorUGllcnJlLVl2ZXMgRGF2aWQKK1hhdmllciBkZSBHYXllCiBKb2huIERlR29vZAogTmVkIERlaWx5CiBWaW5jZW50IERlbGZ0CiBBcm5hdWQgRGVsb2JlbGxlCitLb25yYWQgRGVsb25nCiBFcmlrIERlbWFpbmUKIEpvaG4gRGVubmlzCiBMLiBQZXRlciBEZXV0c2NoCkBAIC0yNjksNiArMjkzLDcgQEAKIEh1bWJlcnRvIERpb2dlbmVzCiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKK0pvc2lwIERqb2xvbmdhCiBKYXJvbWlyIERvbGVjZWsKIElzbWFpbCBEb25tZXoKIFJvYmVydCBEb25vaHVlCkBAIC0yOTUsNiArMzIwLDcgQEAKIFdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAorSm9obiBFZG1vbmRzCiBHcmFudCBFZHdhcmRzCiBKb2huIEVocmVzbWFuCiBUYWwgRWluYXQKQEAgLTMwMiwyOSArMzI4LDM1IEBACiBBbmRyZXcgRWxhbmQKIEp1bGllbiDDiWxpZQogTGFuY2UgRWxsaW5naGF1cworRGFuaWVsIEVsbGlzCiBEYXZpZCBFbHkKIEplZmYgRXBsZXIKK0plZmYgTWNOZWlsCiBUb20gRXBwZXJseQogU3RvZmZlbCBFcmFzbXVzCiBKw7xyZ2VuIEEuIEVyaGFyZAogTWljaGFlbCBFcm5zdAogQmVuIEVzY290bwogQW5keSBFc2tpbHNzb24KK0FuZHLDqSBFc3BhemUKIFN0ZWZhbiBFc3NlcgogTmljb2xhcyBFc3RpYmFscwotU3RlcGhlbiBEIEV2YW5zCiBDYXJleSBFdmFucworU3RlcGhlbiBEIEV2YW5zCiBUaW0gRXZlcmV0dAogUGF1bCBFdmVyaXR0CiBEYXZpZCBFdmVybHkKIERhbmllbCBFdmVycworV2luc3RvbiBFd2VydAogR3JlZyBFd2luZwogTWFydGlqbiBGYWFzc2VuCiBDbG92aXMgRmFicmljaW8KIEFuZHJlYXMgRmFlcmJlcgogQmlsbCBGYW5jaGVyCitNaWNoYWVsIEZhcnJlbGwKIFRyb3kgSi4gRmFycmVsbAogTWFyayBGYXZhcworQm9yaXMgRmVsZAogTmllbHMgRmVyZ3Vzb24KIFNlYmFzdGlhbiBGZXJuYW5kZXoKIEZsb3JpYW4gRmVzdGkKQEAgLTM0NCwxMSArMzc2LDE0IEBACiBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogRG91ZyBGb3J0CiBKb2huIEZvdWh5CitBbmRyZXcgRnJhbmNpcwogU3RlZmFuIEZyYW5rZQogTWFydGluIEZyYW5rbGluCitCcnVjZSBGcmVkZXJpa3NlbgogUm9iaW4gRnJpZWRyaWNoCiBCcmFkbGV5IEZyb2VobGUKIEl2YW4gRnJvaG5lCitNYXR0aGlhcyBGdWNocwogSmltIEZ1bHRvbgogVGFkYXlvc2hpIEZ1bmFiYQogR3lybyBGdW5jaApAQCAtMzg1LDEwICs0MjAsMTMgQEAKIEpvbmF0aGFuIEdpZGR5CiBKb2hhbm5lcyBHaWpzYmVycwogTWljaGFlbCBHaWxmaXgKK1lhbm5pY2sgR2luZ3JhcwogTWF0dCBHaXVjYQorTWljaGFlbCBHb2RlcmJhdWVyCiBDaHJpc3RvcGggR29obGtlCiBUaW0gR29sZGVuCiBHdWlsaGVybWUgR29uw6dhbHZlcworVGlhZ28gR29uw6dhbHZlcwogQ2hyaXMgR29ubmVybWFuCiBTaGVsbGV5IEdvb2NoCiBEYXZpZCBHb29kZ2VyCkBAIC0zOTYsNiArNDM0LDcgQEAKIE5hdGhhbmllbCBHcmF5CiBFZGR5IERlIEdyZWVmCiBHcmFudCBHcmlmZmluCitBbmRyZWEgR3JpZmZpbmkKIER1bmNhbiBHcmlzYnkKIEZhYmlhbiBHcm9mZmVuCiBFcmljIEdyb28KQEAgLTQwNSwxNSArNDQ0LDE4IEBACiBNaWNoYWVsIEd1cmF2YWdlCiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCitKb25hcyBILgogQmFycnkgSGFkZG93CiBQaGlsaXBwIEhhZ2VtZWlzdGVyCiBQYXVsIHRlbiBIYWdlbgogUmFzbXVzIEhhaG4KIFBldGVyIEhhaWdodAogVsOhY2xhdiBIYWlzbWFuCitXYWxrZXIgSGFsZSBJVgogQm9iIEhhbGxleQogSmVzc2UgSGFsbGlvCiBKdW4gSGFtYW5vCitBbGV4YW5kcmUgSGFtZWxpbgogQW5kZXJzIEhhbW1hcnF1aXN0CiBNYXJrIEhhbW1vbmQKIEhhcmFsZCBIYW5jaGUtT2xzZW4KQEAgLTQyNSw2ICs0NjcsNyBAQAogRGVyZWsgSGFybGFuZAogSmFzb24gSGFycGVyCiBCcmlhbiBIYXJyaW5nCitKb25hdGhhbiBIYXJ0bGV5CiBUcmF2aXMgQi4gSGFydHdlbGwKIExhcnJ5IEhhc3RpbmdzCiBUaW0gSGF0Y2gKQEAgLTQzOCw2ICs0ODEsNyBAQAogTWFsdGUgSGVsbWVydAogTGFuY2UgRmlubiBIZWxzdGVuCiBKb25hdGhhbiBIZW5kcnkKK01pY2hhZWwgSGVucnkKIEphbWVzIEhlbnN0cmlkZ2UKIEthc3VuIEhlcmF0aAogQ2hyaXMgSGVyYm9ydGgKQEAgLTQ0OSwxMCArNDkzLDEwIEBACiBNYWdudXMgTC4gSGV0bGFuZAogUmF5bW9uZCBIZXR0aW5nZXIKIEtldmFuIEhleWRvbgorS2Vsc2V5IEhpZ2h0b3dlcgogSmFzb24gSGlsZGVicmFuZAogUmljaGllIEhpbmRsZQogS29ucmFkIEhpbnNlbgotTWljaGFlbCBIZW5yeQogRGF2aWQgSG9ibGV5CiBUaW0gSG9jaGJlcmcKIEpvZXJnLUN5cmlsIEhvZWhsZQpAQCAtNDY4LDYgKzUxMiw3IEBACiBHZXJyaXQgSG9sbAogU2hhbmUgSG9sbG93YXkKIFJ1bmUgSG9sbQorVGhvbWFzIEhvbG1lcwogUGhpbGlwIEhvbWJ1cmcKIE5hb2Z1bWkgSG9uZGEKIEplZmZyZXkgSG9uaWcKQEAgLTQ3NiwyMiArNTIxLDI3IEBACiBCcmlhbiBIb29wZXIKIFJhbmRhbGwgSG9wcGVyCiBOYWRhdiBIb3Jlc2gKK0Fsb24gSG9yZXYKIEphbiBIb3NhbmcKIEtlbiBIb3dhcmQKIEJyYWQgSG93ZXMKIE1pa2UgSG95CiBDaGloLUhhbyBIdWFuZworQ2hyaXN0aWFuIEh1ZG9uCiBMYXdyZW5jZSBIdWRzb24KIE1pY2hhZWwgSHVkc29uCiBKaW0gSHVndW5pbgogR3JlZyBIdW1waHJleXMKIEVyaWMgSHVzcworVGFpaHl1biBId2FuZwogSmVyZW15IEh5bHRvbgogTHVkd2lnIEjDpGhuZQogR2VyaGFyZCBIw6RyaW5nCiBGcmVkcmlrIEjDpcOlcmQKK0NhdGFsaW4gSWFjb2IKIE1paGFpIEliYW5lc2N1CiBBbGkgSWtpbmNpCitBYXJvbiBJbGVzCiBMYXJzIEltbWlzY2gKIEJvYmJ5IEltcG9sbG9uaWEKIE1lYWRvciBJbmdlCkBAIC01MTEsMTMgKzU2MSwxNiBAQAogSmFjayBKYW5zZW4KIEJpbGwgSmFuc3NlbgogVGhvbWFzIEphcm9zY2gKLVpieXN6ZWsgSsSZZHJ6ZWpld3NraS1Tem1laworSnVoYW5hIEphdWhpYWluZW4KK1piaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsKK0p1bGllbiBKZWhhbm5ldAogRHJldyBKZW5raW5zCiBGbGVtbWluZyBLasOmciBKZW5zZW4KIFBoaWxpcCBILiBKZW5zZW4KIFBoaWxpcCBKZW52ZXkKIE11blNpYyBKZW9uZwogQ2hyaXMgSmVyZG9uZWsKK0ppbSBKZXdldHQKIFBlZHJvIERpYXogSmltZW5legogT3JqYW4gSm9oYW5zZW4KIEZyZWRyaWsgSm9oYW5zc29uCkBAIC01MjcsMTMgKzU4MCwxNSBAQAogTWF0dCBKb2luZXIKIFRob21hcyBKb2xsYW5zCiBOaWNvbGFzIEpvbHkKK0JyaWFuIEsuIEpvbmVzCiBFdmFuIEpvbmVzCiBKZXJlbXkgSm9uZXMKIFJpY2hhcmQgSm9uZXMKIElybWVuIGRlIEpvbmcKIEx1Y2FzIGRlIEpvbmdlCi1Kb2huIEpvcmdlbnNlbgorS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uCiBKZW5zIEIuIEpvcmdlbnNlbgorSm9obiBKb3JnZW5zZW4KIFNpamluIEpvc2VwaAogQW5kcmVhcyBKdW5nCiBUYXR0b28gTWFib256byBLLgpAQCAtNTQxLDIzICs1OTYsMjcgQEAKIEJvYiBLYWhuCiBLdXJ0IEIuIEthaXNlcgogVGFtaXRvIEthaml5YW1hCitKYW4gS2FsaXN6ZXdza2kKIFBldGVyIHZhbiBLYW1wZW4KIFJhZmUgS2FwbGFuCiBKYWNvYiBLYXBsYW4tTW9zcwogSmFuIEthbGlzemV3c2tpCitKYW5uZSBLYXJpbGEKK1BlciDDmHl2aW5kIEthcmxzZW4KIEFudG9uIEthc3lhbm92CiBMb3UgS2F0ZXMKIEhpcm9ha2kgS2F3YWkKIFNlYmFzdGllbiBLZWltCiBSeWFuIEtlbGx5CiBEYW4gS2VuaWdzYmVyZwotUm9iZXJ0IEtlcm4KIFJhbmRhbGwgS2VybgorUm9iZXJ0IEtlcm4KIEppbSBLZXJyCiBNYWdudXMgS2Vzc2xlcgogTGF3cmVuY2UgS2VzdGVsb290CiBWaXZlayBLaGVyYQogTWFkcyBLaWlsZXJpY2gKK0phc29uIEtpbGxlbgogSmFuIEtpbQogVGFlayBKb28gS2ltCiBXLiBUcmV2b3IgS2luZwpAQCAtNTgxLDYgKzY0MCw4IEBACiBEYW1vbiBLb2hsZXIKIE1hcmtvIEtvaHRhbGEKIEd1aWRvIEtvbGxlcmllCitKYWNlayBLb25pZWN6bnkKK9Cc0LDRgNC6INCa0L7RgNC10L3QsdC10YDQswogQXJrYWR5IEtvcGx5YXJvdgogUGV0ZXIgQS4gS29yZW4KIFZsYWQgS29yb2xldgpAQCAtNTk1LDM1ICs2NTYsNDAgQEAKIE1pY2hhZWwgS3JlbWVyCiBGYWJpYW4gS3JldXR6CiBDw6lkcmljIEtyaWVyCitQZWRybyBLcm9nZXIKIEhhbm51IEtyb3NpbmcKIEFuZHJlaiBLcnBpYwogSXZhbiBLcnN0acSHCiBTdGV2ZW4gS3J5c2thbGxhCiBBbmRyZXcgS3VjaGxpbmcKIERhdmUgS3VobG1hbgorSm9uIEt1aG4KIFZsYWRpbWlyIEt1c2huaXIKIEVybm8gS3V1c2VsYQogUm9zcyBMYWdlcndhbGwKIENhbWVyb24gTGFpcmQKIFRob21hcyBMYW1iCiBKZWFuLUJhcHRpc3RlICJKaWJhIiBMYW15CitSb25hbiBMYW15CiBUb3JzdGVuIExhbmRzY2hvZmYKIMWBdWthc3ogTGFuZ2EKIFRpbm8gTGFuZ2UKIEFuZHJldyBMYW5nbWVhZAogRGV0bGVmIExhbm5lcnQKIFNvcmVuIExhcnNlbgorQW1vcyBMYXR0ZWllcgogUGllcnMgTGF1ZGVyCiBCZW4gTGF1cmllCiBTaW1vbiBMYXcKIEp1bGlhIExhd2FsbAogQ2hyaXMgTGF3cmVuY2UKIEJyaWFuIExlYWlyCitNYXRoaWV1IExlZHVjLUhhbWVsCitDaHJpc3RvcGhlciBMZWUKK0lueWVvbCBMZWUKIEphbWVzIExlZQogSm9obiBKLiBMZWUKLUlueWVvbCBMZWUKIFRob21hcyBMZWUKLUNocmlzdG9waGVyIExlZQogVGVubmVzc2VlIExlZXV3ZW5idXJnCiBMdWMgTGVmZWJ2cmUKIFBpZXJyZSBQYXVsIExlZmVidnJlCkBAIC02MzgsNiArNzA0LDcgQEAKIE1hcmMtQW5kcsOpIExlbWJ1cmcKIEpvaG4gTGVudG9uCiBDaHJpc3RvcGhlciBUdXIgTGVzbmlld3NraS1MYWFzCitBbGFpbiBMZXVmcm95CiBNYXJrIExldmluc29uCiBXaWxsaWFtIExld2lzCiBBa2lyYSBMaQpAQCAtNjU4LDYgKzcyNSw3IEBACiBNaXJrbyBMaXNzCiBOaWNrIExvY2t3b29kCiBTdGVwaGFuaWUgTG9ja3dvb2QKK0h1Z28gTG9wZXMgVGF2YXJlcwogQW5uZSBMb3JkCiBUb20gTG9yZWRvCiBKdXN0aW4gTG92ZQpAQCAtNjcxLDYgKzczOSw3IEBACiBKaW0gTHluY2gKIE1pa2FlbCBMeW5ndmlnCiBNYXJ0aW4gdm9uIEzDtndpcworR3VpbGxlcm1vIEzDs3Blei1BbmdsYWRhCiBKZWZmIE1hY0RvbmFsZAogSm9obiBNYWNoaW4KIEFuZHJldyBJIE1hY0ludHlyZQpAQCAtNjgyLDYgKzc1MSw3IEBACiBEYXZpZCBNYWxjb2xtCiBLZW4gTWFuaGVpbWVyCiBWbGFkaW1pciBNYXJhbmdvem92CitDb2xpbiBNYXJjCiBWaW5jZW50IE1hcmNoZXR0aQogRGF2aWQgTWFyZWsKIERvdWcgTWFyaWVuCkBAIC02OTEsOCArNzYxLDEwIEBACiBPd2VuIE1hcnRpbgogV2VzdGxleSBNYXJ0w61uZXoKIFPDqWJhc3RpZW4gTWFydGluaQorU2lkbmV5IFNhbiBNYXJ0w61uCiBSb2dlciBNYXNzZQogTmljayBNYXRoZXdzb24KK1NpbW9uIE1hdGhpZXUKIExhdXJhIE1hdHNvbgogR3JhaGFtIE1hdHRoZXdzCiBEaWV0ZXIgTWF1cmVyCkBAIC03MDYsOCArNzc4LDggQEAKIE1pY2hhZWwgTWNMYXkKIE1hcmsgTWMgTWFob24KIEdvcmRvbiBNY01pbGxhbgotQ2FvbGFuIE1jTmFtYXJhCiBBbmRyZXcgTWNOYW1hcmEKK0Nhb2xhbiBNY05hbWFyYQogSmVmZiBNY05laWwKIENyYWlnIE1jUGhlZXRlcnMKIExhbWJlcnQgTWVlcnRlbnMKQEAgLTcyMCwzNyArNzkyLDQ1IEBACiBDYXJsIE1leWVyCiBNaWtlIE1leWVyCiBQaW90ciBNZXllcgorQWxleGlzIE3DqXRhaXJlYXUKIFN0ZXZlbiBNaWFsZQogVHJlbnQgTWljaworRnJhbmNrIE1pY2hlYQogVG9tIE1pZGRsZXRvbgogU3RhbiBNaWhhaQogU3RlZmFuIE1paGFpbGEKIEFyaXN0b3RlbGlzIE1pa3JvcG91bG9zCiBQYW9sbyBNaWxhbmkKLURhbWllbiBNaWxsZXIKIENoYWQgTWlsbGVyCitEYW1pZW4gTWlsbGVyCiBKYXNvbiBWLiBNaWxsZXIKIEpheSBULiBNaWxsZXIKIFJvbWFuIE1pbG5lcgorSnVsaWVuIE1pb3R0ZQogQW5kcmlpIFYuIE1pc2hrb3Zza3lpCi1EdXN0aW4gSi4gTWl0Y2hlbGwKIERvbSBNaXRjaGVsbAorRHVzdGluIEouIE1pdGNoZWxsCitadWJpbiBNaXRocmEKIEZsb3JpYW4gTWxhZGl0c2NoCiBEb3VnIE1vZW4KIFRoZSBEcmFnb24gRGUgTW9uc3luZQogU2tpcCBNb250YW5hcm8KK1BldGVyIE1vb2R5CiBQYXVsIE1vb3JlCiBSb3NzIE1vb3JlCiBEZXJlayBNb3JyCiBKYW1lcyBBIE1vcnJpc29uCitEZXJlayBNY1RhdmlzaCBNb3VuY2UKIEFsZXNzYW5kcm8gTW91cmEKIFBhYmxvIE1vdXpvCiBNaGVyIE1vdnNpc3lhbgogUnVzbGFuIE1zdG9pCi1Tam9lcmQgTXVsbGVuZGVyCitNaWNoYWVsIE11bGljaAogU2FwZSBNdWxsZW5kZXIKK1Nqb2VyZCBNdWxsZW5kZXIKIE1pY2hhZWwgTXVsbGVyCiBOZWlsIE11bGxlcgorTG91aXMgTXVucm8KIFIuIERhdmlkIE11cnJheQogTWF0dGkgTcOka2kKIERhbGUgTmFnYXRhCkBAIC03NjAsMTQgKzg0MCwxNSBAQAogQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpCiBWaWxtb3MgTmViZWhhagogRnJlZHJpayBOZWhyCi1UcmVudCBOZWxzb24KIFRvbnkgTmVsc29uCitUcmVudCBOZWxzb24KIENoYWQgTmV0emVyCiBNYXggTmV1bmjDtmZmZXIKIEdlb3JnZSBOZXZpbGxlLU5laWwKIEhpZXUgTmd1eWVuCiBKb2hhbm5lcyBOaWNvbGFpCiBTYW11ZWwgTmljb2xhcnkKK0pvbmF0aGFuIE5pZWhvZgogR3VzdGF2byBOaWVtZXllcgogT3NjYXIgTmllcnN0cmFzegogSHJ2b2plIE5pa3NpYwpAQCAtNzg2LDYgKzg2Nyw4IEBACiBLZXZpbiBPJ0Nvbm5vcgogVGltIE8nTWFsbGV5CiBab29rbyBPJ1doaWVsYWNyb254CitKYW1lcyBPYWtsZXkKK0pvbiBPYmVyaGVpZGUKIFBhc2NhbCBPYmVybmRvZXJmZXIKIEplZmZyZXkgT2xsaWUKIEFkYW0gT2xzZW4KQEAgLTgxNiwxNCArODk5LDE3IEBACiBEYW4gUGFyaXNpZW4KIFdpbGxpYW0gUGFyawogSGFycmkgUGFzYW5lbgotQmVya2VyIFBla3NhZwotQm8gUGVuZwotSm9lIFBldGVyc29uCitHYcOrbCBQYXNncmltYXVkCiBSYW5keSBQYXVzY2gKIFNhbXVlbGUgUGVkcm9uaQorSnVzdGluIFBlZWwKIE1hcmNlbCB2YW4gZGVyIFBlaWpsCitCZXJrZXIgUGVrc2FnCiBTdGV2ZW4gUGVtYmVydG9uCitCbyBQZW5nCiBTYW50aWFnbyBQZXJlc8OzbgorR2VvcmdlIFBlcmlzdGVyYWtpcworTWF0aGlldSBQZXJyZWF1bHQKIE1hcmsgUGVycmVnbwogVHJldm9yIFBlcnJpbgogR2FicmllbCBkZSBQZXJ0aHVpcwpAQCAtODMzLDYgKzkxOSw3IEBACiBDaHJpcyBQZXRyaWxsaQogQmpvcm4gUGV0dGVyc2VuCiBKdXN0aW4gRC4gUGV0dGl0CitSb25ueSBQZmFubnNjaG1pZHQKIEdlb2ZmIFBoaWxicmljawogR2F2cmllIFBoaWxpcHNvbgogQWRyaWFuIFBoaWxsaXBzCkBAIC04NDgsMjEgKzkzNSwyNSBAQAogQW50b2luZSBQaXRyb3UKIEplYW4tRnJhbsOnb2lzIFBpw6lyb25uZQogT2xlZyBQbGFraG90bnl1aworUmVtaSBQb2ludGVsCiBHdWlsaGVybWUgUG9sbwogTWljaGFlbCBQb21yYW5pbmcKIEl1c3RpbiBQb3AKIENsYXVkaXUgUG9wYQogSm9obiBQb3BwbGV3ZWxsCitHdWlsbGF1bWUgUHJhdHRlCiBBbXJpdCBQcmVtCiBQYXVsIFByZXNjb2QKIERvbm92YW4gUHJlc3RvbgorUGF1bCBQcmljZQogSnlya2kgUHVsbGlhaW5lbgogU3RldmUgUHVyY2VsbAotRmVybmFuZG8gUMOpcmV6CiBFZHVhcmRvIFDDqXJlegorRmVybmFuZG8gUMOpcmV6CiBQaWVycmUgUXVlbnRlbAogQnJpYW4gUXVpbmxhbgogQW5kZXJzIFF2aXN0CitKw6lyw7RtZSBSYWRpeAogQnVydG9uIFJhZG9ucwogSmVmZiBSYW1uYW5pCiBCcm9kaWUgUmFvCkBAIC04NzgsMTcgKzk2OSwyMSBAQAogR2FyZXRoIFJlZXMKIFN0ZXZlIFJlZXZlcwogTGVubmFydCBSZWdlYnJvCitKb2huIFJlZ2VocgorRmVkZXJpY28gUmVnaGVuemFuaQogT2ZpciBSZWljaGVuYmVyZwogU2VhbiBSZWlmc2NobmVpZGVyCiBNaWNoYWVsIFAuIFJlaWxseQogQmVybmhhcmQgUmVpdGVyCiBTdGV2ZW4gUmVpegogUm9lbGFuZCBSZW5nZWxpbmsKK0FudG9pbmUgUmV2ZXJzYXQKIEZsw6F2aW8gUmliZWlybwotVGltIFJpY2UKIEZyYW5jZXNjbyBSaWNjaWFyZGkKK1RpbSBSaWNlCiBKYW4gUGlldGVyIFJpZWdlbAogQXJtaW4gUmlnbworQXJjIFJpbGV5CiBOaWNob2xhcyBSaWxleQogSmVhbi1DbGF1ZGUgUmltYmF1bHQKIFZsYWQgUmlzY3V0aWEKQEAgLTg5OCwxNyArOTkzLDIxIEBACiBBbnRob255IFJvYWNoCiBDYXJsIFJvYmJlbgogTWFyayBSb2JlcnRzCi1KaW0gUm9iaW5zb24KIEFuZHkgUm9iaW5zb24KK0ppbSBSb2JpbnNvbgogTWFyayBSb2RkeQogS2V2aW4gUm9kZ2VycwogR2lhbXBhb2xvIFJvZG9sYQorRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCitMdWlzIFJvamFzCiBNaWtlIFJvbWJlcmcKIEFybWluIFJvbmFjaGVyCiBDYXNlIFJvb2xlCiBUaW1vdGh5IFJvc2NvZQorRXJpayBSb3NlCiBKaW0gUm9za2luZAorQnJpYW4gUm9zbmVyCiBHdWlkbyB2YW4gUm9zc3VtCiBKdXN0IHZhbiBSb3NzdW0KIEh1Z28gdmFuIFJvc3N1bQpAQCAtOTI3LDkgKzEwMjYsMTEgQEAKIEplZmYgUnVzaAogU2FtIFJ1c2hpbmcKIE1hcmsgUnVzc2VsbAorUnVzdHkgUnVzc2VsbAogTmljayBSdXNzbwogQ2hyaXMgUnlsYW5kCiBDb25zdGFudGluYSBTLgorUGF0cmljayBTYWJpbgogU8OpYmFzdGllbiBTYWJsw6kKIFN1bWFuIFNhaGEKIEhhamltZSBTYWl0b3UKQEAgLTkzNyw2ICsxMDM4LDcgQEAKIFJpY2ggU2FsegogS2V2aW4gU2FtYm9ybgogQWRyaWFuIFNhbXBzb24KK0phbWVzIFNhbmRlcnMKIElseWEgU2FuZGxlcgogTWFyayBTYXBpcm8KIFR5IFNhcm5hCkBAIC05NjUsMTkgKzEwNjcsMjEgQEAKIFN0ZWZhbiBTY2h3YXJ6ZXIKIERpZXRtYXIgU2Nod2VydGJlcmdlcgogRmVkZXJpY28gU2Nod2luZHQKLVN0ZXZlbiBTY290dAogQmFycnkgU2NvdHQKK1N0ZXZlbiBTY290dAogTmljayBTZWlkZW5tYW4KIMW9aWdhIFNlaWxuYWNodAogWXVyeSBTZWxpdmFub3YKIEZyZWQgU2VsbHMKIEppd29uIFNlbworScOxaWdvIFNlcm5hCiBKb2FraW0gU2VybmJyYW50Ci1Sb2dlciBTZXJ3eQorUm9nZXIgRC4gU2Vyd3kKIEplcnJ5IFNldXR0ZXIKIFBldGUgU2V2YW5kZXIKIERlbmlzIFNldmVyc29uCiBJYW4gU2V5ZXIKK0RhbmllbCBTaGFoYWYKIEhhIFNoYW8KIE1hcmsgU2hhbm5vbgogUmljaGFyZCBTaGFwaXJvCkBAIC05OTksNiArMTEwMyw3IEBACiBJb25lbCBTaW1pb25lc2N1CiBLaXJpbGwgU2ltb25vdgogTmF0aGFuIFBhdWwgU2ltb25zCitBZGFtIFNpbXBraW5zCiBSYXZpIFNpbmhhCiBKYW5uZSBTaW5ra29uZW4KIE5nIFBoZW5nIFNpb25nCkBAIC0xMDA2LDE0ICsxMTExLDE3IEBACiBKLiBTaXBwcmVsbAogS3JhZ2VuIFNpdGFrZXIKIE1pY2hhZWwgU2xvYW4KLUVyaWMgVi4gU21pdGgKIENocmlzdG9waGVyIFNtaXRoCitFcmljIFYuIFNtaXRoCiBHcmVnb3J5IFAuIFNtaXRoCitNYXJrIFNtaXRoCiBSb3kgU21pdGgKIFJhZmFsIFNtb3RyenlrCitFcmljIFNub3cKIERpcmsgU29lZGUKIFBhdWwgU29rb2xvdnNreQogQ29keSBTb21lcnZpbGxlCitFZG9hcmRvIFNwYWRvbGluaQogQ2xheSBTcGVuY2UKIFN0ZWZhbiBTcGVybGluZwogTmljaG9sYXMgU3BpZXMKQEAgLTEwMjUsMTAgKzExMzMsMTMgQEAKIFRhZ2UgU3RhYmVsbC1LdWxvCiBRdWVudGluIFN0YWZmb3JkLUZyYXNlcgogRnJhbmsgU3RhamFubworSm9lbCBTdGFubGV5CiBBbnRob255IFN0YXJrcwogT2xpdmVyIFN0ZWVsZQogR3JlZyBTdGVpbgorQmFydWNoIFN0ZXJpbgogQ2hyaXMgU3Rlcm4KK0FsZXggU3Rld2FydAogVmljdG9yIFN0aW5uZXIKIFJpY2hhcmQgU3RvYWtsZXkKIFBldGVyIFN0b2VocgpAQCAtMTA0NCw2ICsxMTU1LDcgQEAKIE5hdGhhbiBTdWxsaXZhbgogTWFyayBTdW1tZXJmaWVsZAogUmV1YmVuIFN1bW5lcgorTWFyZWsgxaB1cHBhCiBIaXNhbyBTdXp1a2kKIEthbGxlIFN2ZW5zc29uCiBBbmRyZXcgU3ZldGxvdgpAQCAtMTA1Nyw4ICsxMTY5LDggQEAKIFdpbGxpYW0gVGFua3NsZXkKIENocmlzdGlhbiBUYW56ZXIKIFN0ZXZlbiBUYXNjaHVrCi1Nb250eSBUYXlsb3IKIEFteSBUYXlsb3IKK01vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKIE1pa2hhaWwgVGVyZWtob3YKIFJpY2hhcmQgTS4gVGV3CkBAIC0xMDc2LDE1ICsxMTg4LDIwIEBACiBDaHJpc3RpYW4gVGlzbWVyCiBKaW0gVGl0dHNsZXIKIEZyYW5rIEouIFRvYmluCi1SIExpbmRzYXkgVG9kZAogQmVubmV0dCBUb2RkCitSIExpbmRzYXkgVG9kZAogRXVnZW5lIFRvZGVyCiBFcmlrIFRvbGxlcnVkCitTdGVwaGVuIFRvbmtpbgogTWF0aWFzIFRvcmNoaW5za3kKIFNhbmRybyBUb3NpCiBSaWNoYXJkIFRvd25zZW5kCitEYXZpZCBUb3duc2hlbmQKIE5hdGhhbiBUcmFwdXp6YW5vCiBMYXVyZW5jZSBUcmF0dAorQWxiZXJ0byBUcmV2aW5vCitNYXR0aGlhcyBUcm9mZmFlcworVG9tIFRyb21leQogSm9obiBUcm9tcAogSmFzb24gVHJvd2JyaWRnZQogQnJlbnQgVHViYnMKQEAgLTExMjAsNiArMTIzNyw3IEBACiBLYW5uYW4gVmlqYXlhbgogS3VydCBWaWxlCiBOb3JtYW4gVmluZQorUGF1bGkgVmlydGFuZW4KIEZyYW5rIFZpc3NlcgogSm9oYW5uZXMgVm9nZWwKIE1hcnRpam4gVnJpZXMKQEAgLTExNTgsMTAgKzEyNzYsMTAgQEAKIEJyeWNlICJab29rbyIgV2lsY294LU8nSGVhcm4KIFRpbW90aHkgV2lsZAogSmFrdWIgV2lsaworR2VyYWxkIFMuIFdpbGxpYW1zCiBKYXNvbiBXaWxsaWFtcwogSm9obiBXaWxsaWFtcwogU3VlIFdpbGxpYW1zCi1HZXJhbGQgUy4gV2lsbGlhbXMKIFN0ZXZlbiBXaWxsaXMKIEZyYW5rIFdpbGxpc29uCiBHcmVnIFYuIFdpbHNvbgpAQCAtMTE4Myw4ICsxMzAxLDggQEAKIFJpY2hhcmQgV29sZmYKIEFkYW0gV29vZGJlY2sKIFN0ZXZlbiBXb3JrCi1EYXJyZW4gV29ycmFsbAogR29yZG9uIFdvcmxleQorRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CkBAIC0xMTkzLDYgKzEzMTEsNyBAQAogSGlyb2thenUgWWFtYW1vdG8KIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KK0V1bmdKdW4gWWkKIEJvYiBZb2Rsb3dza2kKIERhbm55IFlvbwogUm9yeSBZb3JrZQpkaWZmIC0tZ2l0IGEvTWlzYy9ISVNUT1JZIGIvTWlzYy9ISVNUT1JZCmluZGV4IGE3ZmJhMmIuLjgzMjdkY2EgMTAwNjQ0Ci0tLSBhL01pc2MvSElTVE9SWQorKysgYi9NaXNjL0hJU1RPUlkKQEAgLTEwLDYgKzEwLDU0MDMgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwLUZlYi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTEyNDk6IEZpeCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzaW5nIHRoZSBsaW1pdGVkIEFQSS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExMjIyOiBGaXggbm9uLWZyYW1ld29yayBzaGFyZWQgbGlicmFyeSBidWlsZCBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjMTExODQ6IEZpeCBsYXJnZS1maWxlIHN1cHBvcnQgb24gQUlYLgorCistIElzc3VlICM5NDEzNDY6IEZpeCBicm9rZW4gc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gQUlYLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNzA5OiBBZGQgdXBkYXRlZCBBSVggbm90ZXMgaW4gTWlzYy9SRUFETUUuQUlYLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEzLUZlYi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTExMzQ6IEFkZCBtaXNzaW5nIGZpZWxkcyB0byB0eXBlc2xvdHMuaC4KKworLSBJc3N1ZSAjMTExMzU6IFJlbW92ZSByZWR1bmRhbnQgZG9jIGZpZWxkIGZyb20gUHlUeXBlX1NwZWMuCisKKy0gSXNzdWUgIzExMDY3OiBBZGQgUHlUeXBlX0dldEZsYWdzLCB0byBzdXBwb3J0IFB5VW5pY29kZV9DaGVjayBpbiB0aGUgbGltaXRlZAorICBBQkkuCisKKy0gSXNzdWUgIzExMTE4OiBGaXggYm9ndXMgZXhwb3J0IG9mIE5vbmUgaW4gcHl0aG9uMy5kbGwuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTExMTY6IGFueSBlcnJvciBkdXJpbmcgYWRkaXRpb24gb2YgYSBtZXNzYWdlIHRvIGEgbWFpbGJveCBub3cgY2F1c2VzIGEKKyAgcm9sbGJhY2ssIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgbWFpbGJveCBwYXJ0aWFsbHkgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzExMTMyOiBGaXggcGFzc2luZyBvZiAib3B0aW1pemUiIHBhcmFtZXRlciB3aGVuIHJlY3Vyc2luZyBpbgorICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKCkuCisKKy0gSXNzdWUgIzExMTEwOiBGaXggYSBwb3RlbnRpYWwgZGVjcmVmIG9mIGEgTlVMTCBpbiBzcWxpdGUzLgorCistIElzc3VlICM4Mjc1OiBGaXggcGFzc2luZyBvZiBjYWxsYmFjayBhcmd1bWVudHMgd2l0aCBjdHlwZXMgdW5kZXIgV2luNjQuICBQYXRjaAorICBieSBTdGFuIE1paGFpLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTEwNzk6IFRoZSAvQXBwbGljYXRpb25zL1B5dGhvbiB4LnggZm9sZGVyIGNyZWF0ZWQgYnkgdGhlIE1hYyBPUyBYCisgIGluc3RhbGxlcnMgbm93IGluY2x1ZGVzIGEgbGluayB0byB0aGUgaW5zdGFsbGVkIGRvY3VtZW50YXRpb24gYW5kIG5vIGxvbmdlcgorICBpbmNsdWRlcyBhbiBFeHRyYXMgZGlyZWN0b3J5LiAgVGhlIFRvb2xzIGRpcmVjdG9yeSBpcyBub3cgaW5zdGFsbGVkIGluIHRoZQorICBmcmFtZXdvcmsgdW5kZXIgc2hhcmUvZG9jLgorCistIElzc3VlICMxMTEyMTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtc2hhcmVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTA5NzE6IHRlc3RfemlwaW1wb3J0X3N1cHBvcnQgaXMgb25jZSBhZ2FpbiBjb21wYXRpYmxlIHdpdGggdGhlIHJlZmxlYWsKKyAgaHVudGVyIGZlYXR1cmUgb2YgdGVzdC5yZWdydGVzdC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAzMC1KYW4tMjAxMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNDUxOiBtZW1vcnl2aWV3IG9iamVjdHMgY291bGQgYWxsb3cgdG8gbXV0YXRlIGEgcmVhZGFibGUgYnVmZmVyLgorICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzkxMjQ6IG1haWxib3ggbm93IGFjY2VwdHMgYmluYXJ5IGlucHV0IGFuZCByZWFkcyBhbmQgd3JpdGVzIG1haWxib3gKKyAgZmlsZXMgaW4gYmluYXJ5IG1vZGUsIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlJ3MgYmluYXJ5IHN1cHBvcnQgdG8gcGFyc2UKKyAgYXJiaXRyYXJ5IGVtYWlsIG1lc3NhZ2VzLiAgU3RyaW5nSU8gYW5kIHRleHQgZmlsZSBpbnB1dCBpcyBkZXByZWNhdGVkLAorICBhbmQgc3RyaW5nIGlucHV0IGZhaWxzIGVhcmx5IGlmIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSB1c2VkLCB3aGVyZQorICBwcmV2aW91c2x5IGl0IHdvdWxkIGZhaWwgd2hlbiB0aGUgZW1haWwgd2FzIHByb2Nlc3NlZCBpbiBhIGxhdGVyIHN0ZXAuCisKKy0gSXNzdWUgIzEwODQ1OiBNaXRpZ2F0ZSB0aGUgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gdGhlIG11bHRpcHJvY2Vzc2luZworICBtb2R1bGUgb24gV2luZG93cyBhbmQgdGhlIHVzZSBvZiBwYWNrYWdlLCB6aXBmaWxlIG9yIGRpcmVjdG9yeSBleGVjdXRpb24KKyAgYnkgc3BlY2lhbCBjYXNpbmcgbWFpbiBtb2R1bGVzIHRoYXQgYWN0dWFsbHkgKmFyZSogY2FsbGVkIF9fbWFpbl9fLnB5LgorCistIElzc3VlICMxMTA0NTogUHJvdGVjdCBsb2dnaW5nIGNhbGwgYWdhaW5zdCBOb25lIGFyZ3VtZW50LgorCistIElzc3VlICMxMTA1MjogQ29ycmVjdCBJRExFIG1lbnUgYWNjZWxlcmF0b3JzIG9uIE1hYyBPUyBYIGZvciBTYXZlCisgIGNvbW1hbmRzLgorCistIElzc3VlICMxMTA1MzogRml4IElETEUgIlN5bnRheCBFcnJvciIgd2luZG93cyB0byBiZWhhdmUgYXMgaW4gMi54LAorICBwcmV2ZW50aW5nIGEgY29uZnVzaW5nIGh1bmcgYXBwZWFyYW5jZSBvbiBPUyBYIHdpdGggdGhlIHdpbmRvd3MKKyAgb2JzY3VyZWQuCisKKy0gSXNzdWUgIzEwOTQwOiBXb3JrYXJvdW5kIGFuIElETEUgaGFuZyBvbiBNYWMgT1MgWCAxMC42IHdoZW4gdXNpbmcgdGhlCisgIG1lbnUgYWNjZWxlcmF0b3JzIGZvciBPcGVuIE1vZHVsZSwgR28gdG8gTGluZSwgYW5kIE5ldyBJbmRlbnQgV2lkdGguCisgIFRoZSBhY2NlbGVyYXRvcnMgc3RpbGwgd29yayBidXQgbm8gbG9uZ2VyIGFwcGVhciBpbiB0aGUgbWVudSBpdGVtcy4KKworLSBJc3N1ZSAjMTA5ODk6IEZpeCBhIGNyYXNoIG9uIFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKE5vbmUsIFRydWUpLgorCistIElzc3VlICMxMTAyMDogQ29tbWFuZC1saW5lIHB5Y2xiciB3YXMgYnJva2VuIGJlY2F1c2Ugb2YgbWlzc2luZyAyLXRvLTMKKyAgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjMTEwMTk6IEZpeGVkIEJ5dGVzR2VuZXJhdG9yIHNvIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgYSBNZXNzYWdlCisgIHdpdGggYSBOb25lIGJvZHkuCisKKy0gSXNzdWUgIzExMDE0OiBNYWtlICdmaWx0ZXInIGFyZ3VtZW50IGluIHRhcmZpbGUuVGFyZmlsZS5hZGQoKSBpbnRvIGEKKyAga2V5d29yZC1vbmx5IGFyZ3VtZW50LiAgVGhlIHByZWNlZGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50IHdhcyBkZXByZWNhdGVkLAorICBzbyBpdCBtYWRlIG5vIHNlbnNlIHRvIGFkZCBmaWx0ZXIgYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LgorCistIElzc3VlICMxMTAwNDogUmVwYWlyZWQgZWRnZSBjYXNlIGluIGRlcXVlLmNvdW50KCkuCisKKy0gSXNzdWUgIzEwOTc0OiBJRExFIG5vIGxvbmdlciBjcmFzaGVzIGlmIGl0cyByZWNlbnQgZmlsZXMgbGlzdCBpbmNsdWRlcyBmaWxlcworICB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZWlyIHBhdGggbmFtZXMuCisKKy0gSGF2ZSBoYXNobGliLmFsZ29yaXRobXNfYXZhaWxhYmxlIGFuZCBoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCBib3RoCisgIHJldHVybiBzZXRzIGluc3RlYWQgb2Ygb25lIHJldHVybmluZyBhIHR1cGxlIGFuZCB0aGUgb3RoZXIgYSBmcm96ZW5zZXQuCisKKy0gSXNzdWUgIzEwOTg3OiBGaXggdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYW5kbGluZyBpbiB0aGUgX3BpY2tsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEwOTgzOiBGaXggc2V2ZXJhbCBidWdzIG1ha2luZyB0dW5uZWwgcmVxdWVzdHMgaW4gaHR0cC5jbGllbnQuCisKKy0gSXNzdWUgIzEwOTU1OiB6aXBpbXBvcnQgdXNlcyBBU0NJSSBlbmNvZGluZyBpbnN0ZWFkIG9mIGNwNDM3IHRvIGRlY29kZQorICBmaWxlbmFtZXMsIGF0IGJvb3RzdHJhcCwgaWYgdGhlIGNvZGVjIHJlZ2lzdHJ5IGlzIG5vdCByZWFkeSB5ZXQuIEl0IGlzIHN0aWxsCisgIHBvc3NpYmxlIHRvIGhhdmUgbm9uLUFTQ0lJIGZpbGVuYW1lcyB1c2luZyB0aGUgVW5pY29kZSBmbGFnIChVVEYtOCBlbmNvZGluZykKKyAgZm9yIGFsbCBmaWxlIGVudHJpZXMgaW4gdGhlIFpJUCBmaWxlLgorCistIElzc3VlICMxMDk0OTogSW1wcm92ZWQgcm9idXN0bmVzcyBvZiByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgorCistIElzc3VlICMxMDk1NTogRml4IGEgcG90ZW50aWFsIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIG1tYXAoKSBhIGZpbGUgcGFzdCBpdHMKKyAgbGVuZ3RoLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjMTA4OTg6IEFsbG93IGNvbXBpbGluZyB0aGUgcG9zaXggbW9kdWxlIHdoZW4gdGhlIEMgbGlicmFyeSBkZWZpbmVzCisgIGEgc3ltYm9sIG5hbWVkIEZTVEFULgorCistIElzc3VlICMxMDk4MDogdGhlIEhUVFAgc2VydmVyIG5vdyBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpCisgIGVuY29kaW5nLiAgVGhpcyBpcyB0aGUgcHJlZmVycmVkIGVuY29kaW5nIG9mIFBFUCAzMzMzIGFuZCB0aGUgYmFzZSBlbmNvZGluZworICBvZiBIVFRQIDEuMS4KKworLSBUbyBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIEhUVFAgc2VydmVyLCB0aGUgSFRUUCBjbGllbnQgbGlicmFyeSBub3cgYWxzbworICBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpIGVuY29kaW5nLiAgSXQgd2FzIGFscmVhZHkgZG9pbmcKKyAgdGhhdCBmb3IgaW5jb21pbmcgaGVhZGVycyB3aGljaCBtYWtlcyB0aGlzIGJlaGF2aW91ciBub3cgY29uc2lzdGVudCBpbgorICBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZyBkaXJlY3Rpb24uCisKKy0gSXNzdWUgIzk1MDk6IGFyZ3BhcnNlIG5vdyBwcm9wZXJseSBoYW5kbGVzIElPRXJyb3JzIHJhaXNlZCBieQorICBhcmdwYXJzZS5GaWxlVHlwZS4KKworLSBJc3N1ZSAjMTA5NjE6IFRoZSBuZXcgcHlkb2Mgc2VydmVyIG5vdyBiZXR0ZXIgaGFuZGxlcyBleGNlcHRpb25zIHJhaXNlZAorICBkdXJpbmcgcmVxdWVzdCBoYW5kbGluZy4KKworLSBJc3N1ZSAjMTA2ODA6IEZpeCBtdXR1YWxseSBleGNsdXNpdmUgYXJndW1lbnRzIGZvciBhcmd1bWVudCBncm91cHMgaW4KKyAgYXJncGFyc2UuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMTA1NDogQWxsb3cgTWFjIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byBhZ2FpbiB3b3JrIG9uIDEwLjUgd2l0aAorICB0aGUgc3lzdGVtLXByb3ZpZGVkIFB5dGhvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTYtSmFuLTIwMTEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDg4OTogcmFuZ2UgaW5kZXhpbmcgYW5kIHNsaWNpbmcgbm93IHdvcmtzIGNvcnJlY3RseSBvbiByYW5nZXMgd2l0aAorICBhIGxlbmd0aCB0aGF0IGV4Y2VlZHMgc3lzLm1heHNpemUuCisKKy0gSXNzdWUgIzEwODkyOiBEb24ndCBzZWdmYXVsdCB3aGVuIHRyeWluZyB0byBkZWxldGUgX19hYnN0cmFjdG1ldGhvZHNfXyBmcm9tIGEKKyAgY2xhc3MuCisKKy0gSXNzdWUgIzgwMjA6IEF2b2lkIGEgY3Jhc2ggd2hlcmUgdGhlIHNtYWxsIG9iamVjdHMgYWxsb2NhdG9yIHdvdWxkIHJlYWQKKyAgbm9uLVB5dGhvbiBtYW5hZ2VkIG1lbW9yeSB3aGlsZSBpdCBpcyBiZWluZyBtb2RpZmllZCBieSBhbm90aGVyIHRocmVhZC4gIFBhdGNoCisgIGJ5IE1hdHQgQmFuZHkuCisKKy0gSXNzdWUgIzEwODQxOiBPbiBXaW5kb3dzLCBzZXQgdGhlIGJpbmFyeSBtb2RlIG9uIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciBhbmQgYWxsCisgIGlvLkZpbGVJTyBvYmplY3RzICh0byBub3QgdHJhbnNsYXRlIG5ld2xpbmVzLCBcclxuIDw9PiBcbikuICBUaGUgUHl0aG9uIHBhcnNlcgorICB0cmFuc2xhdGVzIG5ld2xpbmVzIChcclxuID0+IFxuKS4KKworLSBSZW1vdmUgYnVmZmVyIEFQSSBmcm9tIHN0YWJsZSBBQkkgZm9yIG5vdywgc2VlICMxMDE4MS4KKworLSBJc3N1ZSAjODY1MTogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGZpbGUKKyAgZG9lc24ndCBoYXZlIFBZX1NTSVpFX1RfQ0xFQU4gZGVmaW5lIGFuZCB0aGUgc2l6ZSBkb2Vzbid0IGZpdCBpbiBhbiBpbnQKKyAgKGxlbmd0aCBiaWdnZXIgdGhhbiAyXjMxLTEgYnl0ZXMpLgorCistIElzc3VlICM5MDE1LCAjOTYxMTogRmlsZUlPLnJlYWRpbnRvKCksIEZpbGVJTy53cml0ZSgpLCBvcy53cml0ZSgpIGFuZAorICBzdGRwcmludGVyLndyaXRlKCkgY2xhbXAgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgyNzg6IE9uIFdpbmRvd3MgYW5kIHdpdGggYSBOVEZTIGZpbGVzeXN0ZW0sIG9zLnN0YXQoKSBhbmQgb3MudXRpbWUoKQorICBjYW4gbm93IGhhbmRsZSBkYXRlcyBhZnRlciAyMDM4LgorCistIElzc3VlICMxMDc4MDogUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBhbmQKKyAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBkZWNvZGUgdGhlIGZpbGVuYW1lIGZyb20gdGhlCisgIGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKworLSBJc3N1ZSAjMTA3Nzk6IFB5RXJyX1dhcm5FeHBsaWNpdCgpIGRlY29kZXMgdGhlIGZpbGVuYW1lIGZyb20gdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKworLSBBZGQgc3lzLmZsYWdzIGF0dHJpYnV0ZSBmb3IgdGhlIG5ldyAtcSBjb21tYW5kLWxpbmUgb3B0aW9uLgorCistIElzc3VlICMxMTUwNjogVHJ5aW5nIHRvIGFzc2lnbiB0byBhIGJ5dGVzIGxpdGVyYWwgc2hvdWxkIHJlc3VsdCBpbiBhCisgIFN5bnRheEVycm9yLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEwOTE2OiBtbWFwIHNob3VsZCBub3Qgc2VnZmF1bHQgd2hlbiBhIGZpbGUgaXMgbWFwcGVkIHVzaW5nIDAgYXMgbGVuZ3RoCisgIGFuZCBhIG5vbi16ZXJvIG9mZnNldCwgYW5kIGFuIGF0dGVtcHQgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgZmlsZSBpcyBtYWRlCisgIChJbmRleEVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkKS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxMDE1NCwgIzEwMDkwOiBjaGFuZ2UgdGhlIG5vcm1hbGl6YXRpb24gb2YgVVRGLTggdG8gIlVURi04IiBpbnN0ZWFkCisgIG9mICJVVEY4IiBpbiB0aGUgbG9jYWxlIG1vZHVsZSBhcyB0aGUgbGF0dGVyIGlzIG5vdCBzdXBwb3J0ZWQgTWFjT1NYIGFuZCBPcGVuQlNELgorCistIElzc3VlICMxMDkwNzogV2FybiBPUyBYIDEwLjYgSURMRSB1c2VycyB0byB1c2UgQWN0aXZlU3RhdGUgVGNsL1RrIDguNSwgcmF0aGVyCisgIHRoYW4gdGhlIGN1cnJlbnRseSBwcm9ibGVtYXRpYyBBcHBsZS1zdXBwbGllZCBvbmUsIHdoZW4gcnVubmluZyB3aXRoIHRoZQorICA2NC0vMzItYml0IGluc3RhbGxlciB2YXJpYW50LgorCistIElzc3VlICM0OTUzOiBjZ2kuRmllbGRTdG9yYWdlIGFuZCBjZ2kucGFyc2UoKSBwYXJzZSB0aGUgcmVxdWVzdCBhcyBieXRlcywgbm90CisgIGFzIHVuaWNvZGUsIGFuZCBhY2NlcHQgYmluYXJ5IGZpbGVzLiBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhdHRyaWJ1dGVzIHRvCisgIGNnaS5GaWVsZFN0b3JhZ2UuIFBhdGNoIHdyaXR0ZW4gYnkgUGllcnJlIFF1ZW50ZWwgKHdpdGggbWFueSBpbnB1dHMgYnkgR2xlbm4KKyAgTGluZGVybWFuKS4KKworLSBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhcmd1bWVudHMgdG8gdXJsbGliLnBhcnNlX3FzKCkgYW5kIHVybGxpYi5wYXJzZV9xc2woKS4KKworLSBJc3N1ZSAjMTA4OTk6IE5vIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBSZW1vdmVkCisgIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgZnJvbSBfcHlpby5weS4KKworLSBJc3N1ZSAjMTA4NzU6IFVwZGF0ZSBSZWd1bGFyIEV4cHJlc3Npb24gSE9XVE87IHBhdGNoIGJ5ICdTaWxlbnRHaG9zdCcuCisKKy0gSXNzdWUgIzEwODcyOiBUaGUgcmVwcigpIG9mIFRleHRJT1dyYXBwZXIgb2JqZWN0cyBub3cgaW5jbHVkZXMgdGhlIG1vZGUKKyAgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxMDg2OTogRml4ZWQgYnVnIHdoZXJlIGFzdC5pbmNyZW1lbnRfbGluZW5vIG1vZGlmaWVkIHRoZSByb290IG5vZGUKKyAgdHdpY2UuCisKKy0gSXNzdWUgIzU4NzE6IGVtYWlsLmhlYWRlci5IZWFkZXIuZW5jb2RlIG5vdyByYWlzZXMgYW4gZXJyb3IgaWYgYW55CisgIGNvbnRpbnVhdGlvbiBsaW5lIGluIHRoZSBmb3JtYXR0ZWQgdmFsdWUgaGFzIG5vIGxlYWRpbmcgd2hpdGUgc3BhY2UgYW5kIGxvb2tzCisgIGxpa2UgYSBoZWFkZXIuICBTaW5jZSBHZW5lcmF0b3IgdXNlcyBIZWFkZXIgdG8gZm9ybWF0IGFsbCBoZWFkZXJzLCB0aGlzIGNoZWNrCisgIGlzIG1hZGUgZm9yIGFsbCBoZWFkZXJzIGluIGFueSBzZXJpYWxpemVkIG1lc3NhZ2UgYXQgc2VyaWFsaXphdGlvbiB0aW1lLiAgVGhpcworICBwcm92aWRlcyBwcm90ZWN0aW9uIGFnYWluc3QgaGVhZGVyIGluamVjdGlvbiBhdHRhY2tzLgorCistIElzc3VlICMxMDg1OTogTWFrZSBgYGNvbnRleHRsaWIuR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYCBvZmZpY2lhbGx5CisgIHByaXZhdGUgYnkgcmVuYW1pbmcgaXQgdG8gYGBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYC4KKworLSBJc3N1ZSAjMTAwNDI6IEZpeGVkIHRoZSB0b3RhbF9vcmRlcmluZyBkZWNvcmF0b3IgdG8gaGFuZGxlIGNyb3NzLXR5cGUKKyAgY29tcGFyaXNvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi4KKworLSBJc3N1ZSAjMTA2ODY6IHRoZSBlbWFpbCBwYWNrYWdlIG5vdyA6cmZjOmAyMDQ3YFwgLWVuY29kZXMgaGVhZGVycyB3aXRoCisgIG5vbi1BU0NJSSBieXRlcyAocGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIpIHdoZW4gZG9pbmcgY29udmVyc2lvbiB0byA3Yml0LWNsZWFuCisgIHByZXNlbnRhdGlvbiwgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbSB3aXRoID9zLgorCistIGVtYWlsLmhlYWRlci5IZWFkZXIgd2FzIGluY29ycmVjdGx5IGVuY29kaW5nIGZvbGRpbmcgd2hpdGVzcGFjZSB3aGVuCisgIHJmYzIwNDctZW5jb2RpbmcgaGVhZGVyIHZhbHVlcyB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBsZWF2aW5nIHRoZW0gd2l0aG91dAorICBmb2xkaW5nIHdoaXRlc3BhY2UuICBJdCBub3cgdXNlcyB0aGUgY29udGludWF0aW9uX3dzLCBhcyBpdCBkb2VzIGZvcgorICBjb250aW51YXRpb24gbGluZXMgdGhhdCBpdCBjcmVhdGVzIGl0c2VsZi4KKworLSBJc3N1ZSAjMTc3NzQxMiwgIzEwODI3OiBDaGFuZ2VkIHRoZSBydWxlcyBmb3IgMi1kaWdpdCB5ZWFycy4gVGhlCisgIHRpbWUuYXNjdGltZSgpLCB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuc3RyZnRpbWUoKSBmdW5jdGlvbnMgd2lsbCBub3cgZm9ybWF0CisgIGFueSB5ZWFyIHdoZW4gYGB0aW1lLmFjY2VwdDJkeWVhcmBgIGlzIEZhbHNlIGFuZCB3aWxsIGFjY2VwdCB5ZWFycyA+PSAxMDAwCisgIG90aGVyd2lzZS4gYGB0aW1lLm1rdGltZWBgIGFuZCBgYHRpbWUuc3RyZnRpbWVgYCBub3cgYWNjZXB0IGZ1bGwgcmFuZ2UKKyAgc3VwcG9ydGVkIGJ5IHRoZSBPUy4gV2l0aCBWaXN1YWwgU3R1ZGlvIG9yIG9uIFNvbGFyaXMsIHRoZSB5ZWFyIGlzIGxpbWl0ZWQgdG8KKyAgdGhlIHJhbmdlIFsxOyA5OTk5XS4gQ29udmVyc2lvbiBvZiAyLWRpZ2l0IHllYXJzIHRvIDQtZGlnaXQgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjNzg1ODogUmFpc2UgYW4gZXJyb3IgcHJvcGVybHkgd2hlbiBvcy51dGltZSgpIGZhaWxzIHVuZGVyIFdpbmRvd3MKKyAgb24gYW4gZXhpc3RpbmcgZmlsZS4KKworLSBJc3N1ZSAjMzgzOTogd3NnaXJlZiBzaG91bGQgbm90IG92ZXJyaWRlIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHNldCBieQorICB0aGUgYXBwbGljYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IENsb3ZpcyBGYWJyaWNpby4KKworLSBJc3N1ZSAjMTA0OTI6IGJkYi5CZGIucnVuKCkgb25seSB0cmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSwgbm90IHRoZQorICBjb21waWxhdGlvbiAoaWYgdGhlIGlucHV0IGlzIGEgc3RyaW5nKS4KKworLSBJc3N1ZSAjNzk5NTogV2hlbiBjYWxsaW5nIGFjY2VwdCgpIG9uIGEgc29ja2V0IHdpdGggYSB0aW1lb3V0LCB0aGUgcmV0dXJuZWQKKyAgc29ja2V0IGlzIG5vdyBhbHdheXMgYmxvY2tpbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCisKKy0gSXNzdWUgIzEwNzU2OiBhdGV4aXQgbm9ybWFsaXplcyB0aGUgZXhjZXB0aW9uIGJlZm9yZSBkaXNwbGF5aW5nIGl0LiBQYXRjaCBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzEwNzkwOiBlbWFpbC5oZWFkZXIuSGVhZGVyLmFwcGVuZCdzIGNoYXJzZXQgbG9naWMgbm93IHdvcmtzIGNvcnJlY3RseQorICBmb3IgY2hhcnNldHMgd2hvc2Ugb3V0cHV0IGNvZGVjIGlzIGRpZmZlcmVudCBmcm9tIGl0cyBpbnB1dCBjb2RlYy4KKworLSBJc3N1ZSAjMTA4MTk6IFNvY2tldElPLm5hbWUgcHJvcGVydHkgcmV0dXJucyAtMSB3aGVuIGl0cyBjbG9zZWQsIGluc3RlYWQgb2YKKyAgcmFpc2luZyBhIFZhbHVlRXJyb3IsIHRvIGZpeCByZXByKCkuCisKKy0gSXNzdWUgIzg2NTA6IHpsaWIuY29tcHJlc3MoKSBhbmQgemxpYi5kZWNvbXByZXNzKCkgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZgorICB0aGUgaW5wdXQgYnVmZmVyIGxlbmd0aCBkb2Vzbid0IGZpdCBpbnRvIGFuIHVuc2lnbmVkIGludCAobGVuZ3RoIGJpZ2dlciB0aGFuCisgIDJeMzItMSBieXRlcykuCisKKy0gSXNzdWUgIzY2NDM6IFJlaW5pdGlhbGl6ZSBsb2NrcyBoZWxkIHdpdGhpbiB0aGUgdGhyZWFkaW5nIG1vZHVsZSBhZnRlciBmb3JrIHRvCisgIGF2b2lkIGEgcG90ZW50aWFsIHJhcmUgZGVhZGxvY2sgb3IgY3Jhc2ggb24gc29tZSBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzEwODA2LCBpc3N1ZSAjOTkwNTogRml4IHN1YnByb2Nlc3MgcGlwZXMgd2hlbiBzb21lIG9mIHRoZSBzdGFuZGFyZCBmaWxlCisgIGRlc2NyaXB0b3JzICgwLCAxLCAyKSBhcmUgY2xvc2VkIGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcworICBMYWdlcndhbGwuCisKKy0gYHVuaXR0ZXN0LlRlc3RDYXNlYCBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgYSBtZXRob2QgbmFtZTsgZm9yIHNpbXBsZXIKKyAgZXhwbG9yYXRpb24gZnJvbSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzEwNzk4OiBSZWplY3Qgc3VwcG9ydGluZyBjb25jdXJyZW50LmZ1dHVyZXMgaWYgdGhlIHN5c3RlbSBoYXMgdG9vCisgIGZldyBQT1NJWCBzZW1hcGhvcmVzLgorCistIElzc3VlICMxMDgwNzogUmVtb3ZlIGJhc2U2NCwgYnoyLCBoZXgsIHF1b3ByaSwgcm90MTMsIHV1IGFuZCB6bGliIGNvZGVjcyBmcm9tCisgIHRoZSBjb2RlYyBhbGlhc2VzLiBUaGV5IGFyZSBzdGlsbCBhY2Nlc3NpYmxlIHZpYSBjb2RlY3MubG9va3VwKCkuCisKKy0gSXNzdWUgIzEwODAxOiBJbiB6aXBmaWxlLCBzdXBwb3J0IGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBoZWFkZXIgYW5kIHRoZQorICBmaWxlbmFtZXMuCisKKy0gSXNzdWUgIzYyODU6IElETEUgbm8gbG9uZ2VyIGNyYXNoZXMgb24gbWlzc2luZyBoZWxwIGZpbGU7IHBhdGNoIGJ5IFNjb3R0CisgIERhdmlkIERhbmllbHMuCisKKy0gRml4IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LnNldGRlZmF1bHQoKSBzbyB0aGF0IGl0IHdvcmtzIGluIHN1YmNsYXNzZXMgdGhhdAorICBkZWZpbmUgX19taXNzaW5nX18oKS4KKworLSBJc3N1ZSAjMTA3ODY6IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIGRlZmF1bHQgc3RyZWFtIG5vIGxvbmdlciBib3VuZCBhdCBpbXBvcnQKKyAgdGltZS4gYHN5cy5zdGRlcnJgIG5vdyBsb29rZWQgdXAgYXQgaW5zdGFudGlhdGlvbiB0aW1lLiAgRml4IGNvbnRyaWJ1dGVkIGJ5CisgIE1hcmsgUm9kZHkuCisKKy0gSXNzdWUgIzEwNzUzOiBDaGFyYWN0ZXJzICc7JywgJz0nIGFuZCAnLCcgaW4gdGhlIFBBVEhfSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICB3b24ndCBiZSBxdW90ZWQgd2hlbiB0aGUgVVJJIGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSB3c2dpcmVmLnV0aWwncyByZXF1ZXN0X3VyaQorICBtZXRob2QuIEFjY29yZGluZyB0byBSRkMgMzk4NiwgdGhlc2UgY2hhcmFjdGVycyBjYW4gYmUgYSBwYXJ0IG9mIHBhcmFtcyBpbgorICBQQVRIIGNvbXBvbmVudCBvZiBVUkkgYW5kIG5lZWQgbm90IGJlIHF1b3RlZC4KKworLSBJc3N1ZSAjMTA3Mzg6IEZpeCB3ZWJicm93c2VyLk9wZXJhLnJhaXNlX29wdHMuCisKKy0gSXNzdWUgIzk4MjQ6IFNpbXBsZUNvb2tpZSBub3cgZW5jb2RlcyAsIGFuZCA7IGluIHZhbHVlcyB0byBjYXRlciB0byBob3cKKyAgYnJvd3NlcnMgYWN0dWFsbHkgcGFyc2UgY29va2llcy4KKworLSBJc3N1ZSAjOTMzMzogb3Muc3ltbGluayBub3cgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgdXNlciBwcml2aWxlZ2VzLiAgVGhlCisgIGZ1bmN0aW9uIG5vdyByYWlzZXMgT1NFcnJvciBvbiBXaW5kb3dzID49Ni4wIHdoZW4gdGhlIHVzZXIgaXMgdW5hYmxlIHRvIGNyZWF0ZQorICBzeW1ib2xpYyBsaW5rcy4gWFAgYW5kIDIwMDMgc3RpbGwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKworLSBJc3N1ZSAjMTA3ODM6IHN0cnVjdC5wYWNrKCkgbm8gbG9uZ2VyIGltcGxpY2l0bHkgZW5jb2RlcyB1bmljb2RlIHRvIFVURi04LgorCistIElzc3VlICMxMDczMDogQWRkIFNWRyBtaW1lIHR5cGVzIHRvIG1pbWV0eXBlcyBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNzY4OiBNYWtlIHRoZSBUa2ludGVyIFNjcm9sbGVkVGV4dCB3aWRnZXQgd29yayBhZ2Fpbi4KKworLSBJc3N1ZSAjMTA3Nzc6IEZpeCAiZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIgYnVnIGluCisgIEVsZW1lbnRUcmVlIHJlZ2lzdGVyX25hbWVzcGFjZSgpLgorCistIElzc3VlICMxMDYyNjogdGVzdF9sb2dnaW5nIG5vdyBwcmVzZXJ2ZXMgbG9nZ2VyIGRpc2FibGVkIHN0YXRlcy4KKworLSBJc3N1ZSAjMTA3NzQ6IHRlc3RfbG9nZ2luZyBub3cgcmVtb3ZlcyB0ZW1wIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRlc3RzLgorCistIElzc3VlICM1MjU4LyMxMDY0MjogaWYgc2l0ZS5weSBlbmNvdW50ZXJzIGEgLnB0aCBmaWxlIHRoYXQgZ2VuZXJhdGVzIGFuIGVycm9yLAorICBpdCBub3cgcHJpbnRzIHRoZSBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0cmFjZWJhY2sgdG8gc3RkZXJyIGFuZCBza2lwcworICB0aGUgcmVzdCBvZiB0aGF0IGluZGl2aWR1YWwgZmlsZSwgaW5zdGVhZCBvZiBzdG9wcGluZyBwcm9jZXNzaW5nIGVudGlyZWx5LgorCistIElzc3VlICMxMDc2Mzogc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIGNsb3NlcyBzdGRvdXQgYW5kIHN0ZGVyciBpZiBib3RoIGFyZQorICBwaXBlcyAoYnVnIHNwZWNpZmljIHRvIFdpbmRvd3MpLgorCistIElzc3VlICMxNjkzNTQ2OiBmaXggZW1haWwubWVzc2FnZSBSRkMgMjIzMSBwYXJhbWV0ZXIgZW5jb2RpbmcgdG8gYmUgaW4gYmV0dGVyCisgIGNvbXBsaWFuY2UgKG5vICJzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcykuCisKKy0gSW1wcm92ZWQgdGhlIGRpZmYgbWVzc2FnZSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlJ3MgYXNzZXJ0Q291bnRFcXVhbCgpLgorCistIElzc3VlICMxMTU1MzYyOiBlbWFpbC51dGlscy5wYXJzZWRhdGVfdHogbm93IGhhbmRsZXMgYSBtaXNzaW5nIHNwYWNlIGJlZm9yZQorICB0aGUgJy0nIG9mIGEgdGltZXpvbmUgZmllbGQgYXMgd2VsbCBhcyBiZWZvcmUgYSAnKycuCisKKy0gSXNzdWUgIzQ4NzE6IFRoZSB6aXBmaWxlIG1vZHVsZSBub3cgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmCisgIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGUgYXJjaGl2ZSBwYXNzd29yZC4KKworLSBJc3N1ZSAjMTA3NTA6IFRoZSBgYHJhd2BgIGF0dHJpYnV0ZSBvZiBidWZmZXJlZCBJTyBvYmplY3RzIGlzIG5vdyByZWFkLW9ubHkuCisKKy0gRGVwcmVjYXRlZCBhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoKSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlLgorCitDLUFQSQorLS0tLS0KKworLSBQeU9iamVjdF9DYWxsTWV0aG9kIG5vdyBwYXNzZXMgYWxvbmcgYW55IHVuZGVybHlpbmcgQXR0cmlidXRlRXJyb3IgZnJvbQorICBQeU9iamVjdF9HZXRBdHRyLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB3aXRoIHNvbWV0aGluZyBsZXNzIGluZm9ybWF0aXZlCisKKy0gSXNzdWUgIzEwOTEzOiBEZXByZWNhdGUgbWlzbGVhZGluZyBmdW5jdGlvbnMgUHlFdmFsX0FjcXVpcmVMb2NrKCkgYW5kCisgIFB5RXZhbF9SZWxlYXNlTG9jaygpLiAgVGhlIHRocmVhZC1zdGF0ZSBhd2FyZSBBUElzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEwMzMzOiBSZW1vdmUgYW5jaWVudCBHQyBBUEksIHdoaWNoIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uCisgIDIuMi4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwODQzOiBVcGRhdGUgdGhpcmQtcGFydHkgbGlicmFyeSB2ZXJzaW9ucyB1c2VkIGluIE9TIFggMzItYml0CisgIGluc3RhbGxlciBidWlsZHM6IGJ6aXAyIDEuMC42LCByZWFkbGluZSA2LjEuMiwgU1FMaXRlIDMuNy40ICh3aXRoIEZUUzMvRlRTNAorICBhbmQgUlRSRUUgZW5hYmxlZCksIGFuZCBuY3Vyc2VzdyA1LjUgKHdpZGUtY2hhciBzdXBwb3J0IGVuYWJsZWQpLgorCistIElzc3VlICMxMDgyMDogRml4IE9TIFggZnJhbWV3b3JrIGluc3RhbGxzIHRvIHN1cHBvcnQgdmVyc2lvbi1zcGVjaWZpYworICBzY3JpcHRzICgjMTA2NzkpLgorCistIElzc3VlICM3NzE2OiBVbmRlciBTb2xhcmlzLCBkb24ndCBhc3N1bWUgZXhpc3RlbmNlIG9mIC91c3IveHBnNC9iaW4vZ3JlcCBpbgorICB0aGUgY29uZmlndXJlIHNjcmlwdCBidXQgdXNlICRHUkVQIGluc3RlYWQuICBQYXRjaCBieSBGYWJpYW4gR3JvZmZlbi4KKworLSBJc3N1ZSAjMTA0NzU6IERvbid0IGhhcmRjb2RlIGNvbXBpbGVycyBmb3IgTERTSEFSRUQvTERDWFhTSEFSRUQgb24gTmV0QlNECisgIGFuZCBEcmFnb25GbHkgQlNELiAgUGF0Y2ggYnkgTmljb2xhcyBKb2x5LgorCistIElzc3VlICMxMDY3OTogVGhlICJpZGxlIiwgInB5ZG9jIiBhbmQgIjJ0bzMiIHNjcmlwdHMgYXJlIG5vdyBpbnN0YWxsZWQgd2l0aAorICBhIHZlcnNpb24tc3BlY2lmaWMgc3VmZml4IG9uICJtYWtlIGFsdGluc3RhbGwiLgorCistIElzc3VlICMxMDY1NTogRml4IHRoZSBidWlsZCBvbiBQb3dlclBDIG9uIExpbnV4IHdpdGggR0NDIHdoZW4gYnVpbGRpbmcgd2l0aAorICB0aW1lc3RhbXAgcHJvZmlsaW5nICgtLXdpdGgtdHNjKTogdGhlIHByZXByb2Nlc3NvciB0ZXN0IGZvciB0aGUgUG93ZXJQQworICBzdXBwb3J0IG5vdyBsb29rcyBmb3IgIl9fcG93ZXJwY19fIiBhcyB3ZWxsIGFzICJfX3BwY19fIjogdGhlIGxhdHRlciBzZWVtcyB0bworICBvbmx5IGJlIHByZXNlbnQgb24gT1MgWDsgdGhlIGZvcm1lciBpcyB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDLgorCistIElzc3VlICMxMDk5OiBGaXggdGhlIGJ1aWxkIG9uIE1hY09TWCB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggcHlkZWJ1ZworICB1c2luZyBHQ0MgNC4wLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTA4NDM6IEluc3RhbGwgdGhlIFRvb2xzIGRpcmVjdG9yeSBvbiBPUyBYIGluIHRoZSBhcHBsaWNhdGlvbnMgRXh0cmFzCisgICgvQXBwbGljYXRpb25zL1B5dGhvbiAzLm4vRXh0cmFzLykgd2hlcmUgdGhlIERlbW8gZGlyZWN0b3J5IGhhZCBwcmV2aW91cyBiZWVuCisgIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjNzk2MjogVGhlIERlbW8gZGlyZWN0b3J5IGlzIGdvbmUuICBNb3N0IG9mIHRoZSBvbGQgYW5kIHVubWFpbnRhaW5lZAorICBkZW1vcyBoYXZlIGJlZW4gcmVtb3ZlZCwgb3RoZXJzIGludGVncmF0ZWQgaW4gZG9jdW1lbnRhdGlvbiBvciBhIG5ldworICBUb29scy9kZW1vIHN1YmRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTA1MDI6IEFkZGl0aW9uIG9mIHRoZSB1bml0dGVzdGd1aSB0b29sLiBPcmlnaW5hbGx5IGJ5IFN0ZXZlIFB1cmNlbGwuCisgIFVwZGF0ZWQgZm9yIHRlc3QgZGlzY292ZXJ5IGJ5IE1hcmsgUm9kZHkgYW5kIFB5dGhvbiAzIGNvbXBhdGliaWxpdHkgYnkgQnJpYW4KKyAgQ3VydGluLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTE5MTA6IEZpeCB0ZXN0X2hlYXBxIHRvIHNraXAgdGhlIEMgdGVzdHMgd2hlbiBfaGVhcHEgaXMgbWlzc2luZy4KKworLSBGaXggdGVzdF9zdGFydGZpbGUgdG8gd2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUgYmVmb3JlIGZpbmlzaGluZy4KKworLSBJc3N1ZSAjMTA4MjI6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCisgIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIE1ha2UgdGhlIC0tY292ZXJhZ2UgZmxhZyB3b3JrIGZvciB0ZXN0LnJlZ3J0ZXN0LgorCistIElzc3VlICMxNjc3Njk0OiBSZWZhY3RvciBhbmQgaW1wcm92ZSB0ZXN0X3RpbWVvdXQuICBPcmlnaW5hbCBwYXRjaCBieQorICBCasO2cm4gTGluZHF2aXN0LgorCistIElzc3VlICM1NDg1OiBBZGQgdGVzdHMgZm9yIHRoZSBVc2VGb3JlaWduRFREIG1ldGhvZCBvZiBleHBhdCBwYXJzZXIgb2JqZWN0cy4KKyAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZSBhbmQgU2FuZHJvIFRvc2kuCisKKy0gSXNzdWUgIzYyOTM6IEhhdmUgcmVncnRlc3QucHkgZWNobyBiYWNrIHN5cy5mbGFncy4gIFRoaXMgaXMgZG9uZSBieSBkZWZhdWx0IGluCisgIHdob2xlIHJ1bnMgYW5kIGVuYWJsZWQgc2VsZWN0aXZlbHkgdXNpbmcgYGAtLWhlYWRlcmBgIHdoZW4gcnVubmluZyBhbiBleHBsaWNpdAorICBsaXN0IG9mIHRlc3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTktRGVjLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM4ODQ0OiBSZWd1bGFyIGFuZCByZWN1cnNpdmUgbG9jayBhY3F1aXNpdGlvbnMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZAorICBieSBzaWduYWxzIG9uIHBsYXRmb3JtcyB1c2luZyBwdGhyZWFkcy4gIFBhdGNoIGJ5IFJlaWQgS2xlY2tuZXIuCisKKy0gSXNzdWUgIzQyMzY6IFB5TW9kdWxlX0NyZWF0ZTIgbm93IGNoZWNrcyB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkaXJlY3RseQorICByYXRoZXIgdGhhbiB0aGUgUHlfSXNJbml0aWFsaXplZCBmbGFnLCBhdm9pZGluZyBhIEZhdGFsIFB5dGhvbgorICBlcnJvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbiBhbiBpbXBvcnQgaXMgZG9uZSBpbiBfX2RlbF9fLgorCistIElzc3VlICM1NTg3OiBhZGQgYSByZXByIHRvIGRpY3RfcHJveHkgb2JqZWN0cy4gIFBhdGNoIGJ5IERhdmlkIFN0YW5layBhbmQKKyAgRGFuaWVsIFVyYmFuLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzMyNDM6ICBTdXBwb3J0IGl0ZXJhYmxlIGJvZGllcyBpbiBodHRwbGliLiBQYXRjaCBDb250cmlidXRpb25zIGJ5CisgIFh1YW5qaSBMaSBhbmQgQ2hyaXMgQXRMZWUuCisKKy0gSXNzdWUgIzEwNjExOiBTeXN0ZW1FeGl0IGV4Y2VwdGlvbiB3aWxsIG5vIGxvbmdlciBraWxsIGEgdW5pdHRlc3QgcnVuLgorCistIElzc3VlICM5ODU3OiBJdCBpcyBub3cgcG9zc2libGUgdG8gc2tpcCBhIHRlc3QgaW4gYSBzZXRVcCwgdGVhckRvd24gb3IgY2xlYW4KKyAgdXAgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwNTczOiB1c2UgYWN0dWFsL2V4cGVjdGVkIGNvbnNpc3RlbnRseSBpbiB1bml0dGVzdCBtZXRob2RzLgorICBUaGUgb3JkZXIgb2YgdGhlIGFyZ3Mgb2YgYXNzZXJ0Q291bnRFcXVhbCBpcyBhbHNvIGNoYW5nZWQuCisKKy0gSXNzdWUgIzkyODY6IGVtYWlsLnV0aWxzLnBhcnNlYWRkciBubyBsb25nZXIgY29uY2F0ZW5hdGVzIGJsYW5rLXNlcGFyYXRlZAorICB3b3JkcyBpbiB0aGUgbG9jYWwgcGFydCBvZiBlbWFpbCBhZGRyZXNzZXMsIHRoZXJlYnkgcHJlc2VydmluZyB0aGUgaW5wdXQuCisKKy0gSXNzdWUgIzY3OTE6IExpbWl0IGhlYWRlciBsaW5lIGxlbmd0aCAodG8gNjU1MzUgYnl0ZXMpIGluIGh0dHAuY2xpZW50CisgIGFuZCBodHRwLnNlcnZlciwgdG8gYXZvaWQgZGVuaWFsIG9mIHNlcnZpY2VzIGZyb20gdGhlIG90aGVyIHBhcnR5LgorCistIElzc3VlICMxMDQwNDogVXNlIGN0bC1idXR0b24tMSBvbiBPU1ggZm9yIHRoZSBjb250ZXh0IG1lbnUgaW4gSWRsZS4KKworLSBJc3N1ZSAjOTkwNzogRml4IHRhYiBoYW5kbGluZyBvbiBPU1ggd2hlbiB1c2luZyBlZGl0bGluZSBieSBjYWxsaW5nCisgIHJsX2luaXRpYWxpemUgZmlyc3QsIHRoZW4gc2V0dGluZyBvdXIgY3VzdG9tIGRlZmF1bHRzLCB0aGVuIHJlYWRpbmcgLmVkaXRyYy4KKworLSBJc3N1ZSAjNDE4ODogQXZvaWQgY3JlYXRpbmcgZHVtbXkgdGhyZWFkIG9iamVjdHMgd2hlbiBsb2dnaW5nIG9wZXJhdGlvbnMKKyAgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZSAod2l0aCB0aGUgaW50ZXJuYWwgdmVyYm9zZSBmbGFnIGFjdGl2YXRlZCkuCisKKy0gSXNzdWUgIzEwNzExOiBSZW1vdmUgSFRUUCAwLjkgc3VwcG9ydCBmcm9tIGh0dHAuY2xpZW50LiAgVGhlIGBgc3RyaWN0YGAKKyAgcGFyYW1ldGVyIHRvIEhUVFBDb25uZWN0aW9uIGFuZCBmcmllbmRzIGlzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzk3MjE6IEZpeCB0aGUgYmVoYXZpb3Igb2YgdXJsam9pbiB3aGVuIHRoZSByZWxhdGl2ZSB1cmwgc3RhcnRzIHdpdGggYQorICAnOycgY2hhcmFjdGVyLiBQYXRjaCBieSBXZXMgQ2hvdy4KKworLSBJc3N1ZSAjMTA3MTQ6IExpbWl0IGxlbmd0aCBvZiBpbmNvbWluZyByZXF1ZXN0IGluIGh0dHAuc2VydmVyIHRvIDY1NTM2IGJ5dGVzCisgIGZvciBzZWN1cml0eSByZWFzb25zLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjOTU1ODogRml4IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCB3aXRoIFZTIDguMC4KKworLSBJc3N1ZSAjMTA2Njc6IEZhc3QgcGF0aCBmb3IgY29sbGVjdGlvbnMuQ291bnRlcigpLgorCistIElzc3VlICMxMDY5NTogcGFzc2luZyB0aGUgcG9ydCBhcyBhIHN0cmluZyB2YWx1ZSB0byB0ZWxuZXRsaWIgbm8gbG9uZ2VyCisgIGNhdXNlcyBkZWJ1ZyBtb2RlIHRvIGZhaWwuCisKKy0gSXNzdWUgIzEwNzg5MTk6IGFkZF9oZWFkZXIgbm93IGF1dG9tYXRpY2FsbHkgUkZDMjIzMSBlbmNvZGVzIHBhcmFtZXRlcnMKKyAgdGhhdCBjb250YWluIG5vbi1hc2NpaSB2YWx1ZXMuCisKKy0gSXNzdWUgIzEwMTg4IChwYXJ0aWFsIHJlc29sdXRpb24pOiB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgZW1pdHMKKyAgYSB3YXJuaW5nIG9uIHN5cy5zdGRlcnIgcmF0aGVyIHRoYW4gdGhyb3dpbmcgYSBtaXNsZWFkaW5nIGV4Y2VwdGlvbgorICBpZiBjbGVhbnVwIGZhaWxzIGR1ZSB0byBudWxsaW5nIG91dCBvZiBtb2R1bGVzIGR1cmluZyBzaHV0ZG93bi4KKyAgQWxzbyBhdm9pZHMgYW4gQXR0cmlidXRlRXJyb3Igd2hlbiBta2R0ZW1wIGNhbGwgZmFpbHMgYW5kIGlzc3VlcworICBhIFJlc291cmNlV2FybmluZyBvbiBpbXBsaWNpdCBjbGVhbnVwIHZpYSBfX2RlbF9fLgorCistIElzc3VlICMxMDEwNzogV2FybiBhYm91dCB1bnNhdmVkIGZpbGVzIGluIElETEUgb24gT1NYLgorCistIElzc3VlICM3MjEzOiBzdWJwcm9jZXNzLlBvcGVuJ3MgZGVmYXVsdCBmb3IgY2xvc2VfZmRzIGhhcyBiZWVuIGNoYW5nZWQuCisgIEl0IGlzIG5vdyBUcnVlIGluIG1vc3QgY2FzZXMgb3RoZXIgdGhhbiBvbiBXaW5kb3dzIHdoZW4gaW5wdXQsIG91dHB1dCBvcgorICBlcnJvciBoYW5kbGVzIGFyZSBwcm92aWRlZC4KKworLSBJc3N1ZSAjNjU1OTogc3VicHJvY2Vzcy5Qb3BlbiBoYXMgYSBuZXcgcGFzc19mZHMgcGFyYW1ldGVyIChhY3R1YWxseQorICBhZGRlZCBpbiAzLjJiZXRhMSkgdG8gYWxsb3cgc3BlY2lmeWluZyBhIHNwZWNpZmljIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycworICB0byBrZWVwIG9wZW4gaW4gdGhlIGNoaWxkIHByb2Nlc3MuCisKKy0gSXNzdWUgIzE3MzE3MTc6IEZpeGVkIHRoZSBwcm9ibGVtIHdoZXJlIHN1YnByb2Nlc3Mud2FpdCgpIGNvdWxkIGNhdXNlIGFuCisgIE9TRXJyb3IgZXhjZXB0aW9uIHdoZW4gVGhlIE9TIGhhZCBiZWVuIHRvbGQgdG8gaWdub3JlIFNJR0NMRCBpbiBvdXIgcHJvY2VzcworICBvciBvdGhlcndpc2Ugbm90IHdhaXQgZm9yIGV4aXRpbmcgY2hpbGQgcHJvY2Vzc2VzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNzc1OTY0OiB0ZXN0X2dycCBub3cgc2tpcHMgWVAvTklTIGVudHJpZXMgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4KKyAgZW5jb3VudGVyaW5nIHRoZW0uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM2MDc1OiBJRExFIG9uIE1hYyBPUyBYIG5vdyB3b3JrcyB3aXRoIGJvdGggQ2FyYm9uIEFxdWFUayBhbmQKKyAgQ29jb2EgQXF1YVRrLgorCistIElzc3VlICMxMDcxMDogYGBNaXNjL3NldHVpZC1wcm9nLmNgYCBpcyByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSB0cmVlLgorCistIElzc3VlICMxMDcwNjogUmVtb3ZlIG91dGRhdGVkIHNjcmlwdCBydW50ZXN0cy5zaC4gIEVpdGhlciBgYG1ha2UgdGVzdGBgCisgIG9yIGBgcHl0aG9uIC1tIHRlc3RgYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorCitCdWlsZAorLS0tLS0KKworLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBUY2wvVGsgOC41LjkgYW5kIHNxbGl0ZTMgMy43LjQuCisKKy0gSXNzdWUgIzkyMzQ6IGFyZ3BhcnNlIHN1cHBvcnRzIGFsaWFzIG5hbWVzIGZvciBzdWJwYXJzZXJzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBCZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwNS1EZWMtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNjMwOiBSZXR1cm4gZGljdCB2aWV3cyBmcm9tIHRoZSBkaWN0IHByb3h5IGtleXMoKS92YWx1ZXMoKS9pdGVtcygpCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzEwNTk2OiBGaXggZmxvYXQuX19tb2RfXyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBmbG9hdC5fX2Rpdm1vZF9fCisgIHdpdGggcmVzcGVjdCB0byBzaWduZWQgemVyb3MuICAtNC4wICUgNC4wIHNob3VsZCBiZSAwLjAsIG5vdCAtMC4wLgorCistIElzc3VlICMxNzcyODMzOiBBZGQgdGhlIC1xIGNvbW1hbmQtbGluZSBvcHRpb24gdG8gc3VwcHJlc3MgY29weXJpZ2h0IGFuZAorICB2ZXJzaW9uIG91dHB1dCBpbiBpbnRlcmFjdGl2ZSBtb2RlLgorCistIFByb3ZpZGUgYW4gKm9wdGltaXplKiBwYXJhbWV0ZXIgaW4gdGhlIGJ1aWx0LWluIGNvbXBpbGUoKSBmdW5jdGlvbi4KKworLSBGaXhlZCBzZXZlcmFsIGNvcm5lciBjYXNlIGlzc3VlcyBvbiBXaW5kb3dzIGluIG9zLnN0YXQvb3MubHN0YXQgcmVsYXRlZCB0bworICByZXBhcnNlIHBvaW50cy4KKworLSBQRVAgMzg0IChEZWZpbmluZyBhIFN0YWJsZSBBQkkpIGlzIGltcGxlbWVudGVkLgorCistIElzc3VlICMyNjkwOiBSYW5nZSBvYmplY3RzIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZy4KKworLSBJc3N1ZSAjOTkxNTogU3BlZWQgdXAgc29ydGluZyB3aXRoIGEga2V5LgorCistIElzc3VlICM4Njg1OiBTcGVlZCB1cCBzZXQgZGlmZmVyZW5jZSBgYGEgLSBiYGAgd2hlbiBzb3VyY2Ugc2V0IGBgYWBgIGlzIG11Y2gKKyAgbGFyZ2VyIHRoYW4gb3BlcmFuZCBgYGJgYC4gIFBhdGNoIGJ5IEFuZHJldyBCZW5uZXR0cy4KKworLSBJc3N1ZSAjMTA1MTg6IEJyaW5nIGJhY2sgdGhlIGNhbGxhYmxlKCkgYnVpbHRpbi4KKworLSBJc3N1ZSAjNzA5NDogQWRkZWQgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAnIycpIHRvIGBgX19mb3JtYXRfX2BgCisgIG1ldGhvZCBvZiBmbG9hdCwgY29tcGxleCwgYW5kIERlY2ltYWwuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBjb250cm9sIG92ZXIKKyAgd2hlbiBkZWNpbWFsIHBvaW50cyBhcmUgZGlzcGxheWVkLgorCistIElzc3VlICMxMDQ3NDogcmFuZ2UuY291bnQoKSBzaG91bGQgcmV0dXJuIGludGVnZXJzLgorCistIElzc3VlICMxNTc0MjE3OiBpc2luc3RhbmNlIG5vdyBjYXRjaGVzIG9ubHkgQXR0cmlidXRlRXJyb3IsIHJhdGhlciB0aGFuCisgIG1hc2tpbmcgYWxsIGVycm9ycy4KKworTGlicmFyeQorLS0tLS0tLQorCistIGxvZ2dpbmc6IGFkZGVkICJoYW5kbGVyIG9mIGxhc3QgcmVzb3J0Ii4gU2VlIGh0dHA6Ly9iaXQubHkvbGFzdC1yZXNvcnQtaGFuZGxlcgorCistIHRlc3Quc3VwcG9ydDogQWRkZWQgVGVzdEhhbmRsZXIgYW5kIE1hdGNoZXIgY2xhc3NlcyBmb3IgYmV0dGVyIHN1cHBvcnQgb2YKKyAgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgorCistIElzc3VlICM0MzkxOiBVc2UgcHJvcGVyIHBsdXJhbCBmb3JtcyBpbiBhcmdwYXJzZS4KKworLSBJc3N1ZSAjMTA2MDE6IHN5cy5kaXNwbGF5aG9vayB1c2VzICdiYWNrc2xhc2hyZXBsYWNlJyBlcnJvciBoYW5kbGVyIG9uCisgIFVuaWNvZGVFbmNvZGVFcnJvci4KKworLSBBZGQgdGhlICJkaXNwbGF5IiBhbmQgInVuZGlzcGxheSIgcGRiIGNvbW1hbmRzLgorCistIElzc3VlICM3MjQ1OiBBZGQgYSBTSUdJTlQgaGFuZGxlciBpbiBwZGIgdGhhdCBhbGxvd3MgdG8gYnJlYWsgYSBwcm9ncmFtIGFnYWluCisgIGFmdGVyIGEgImNvbnRpbnVlIiBjb21tYW5kLgorCistIEFkZCB0aGUgImludGVyYWN0IiBwZGIgY29tbWFuZC4KKworLSBJc3N1ZSAjNzkwNTogQWN0dWFsbHkgcmVzcGVjdCB0aGUga2V5ZW5jb2RpbmcgcGFyYW1ldGVyIHRvIHNoZWx2ZS5TaGVsZi4KKworLSBJc3N1ZSAjMTU2OTI5MTogU3BlZWQgdXAgYXJyYXkucmVwZWF0KCkuCisKKy0gUHJvdmlkZSBhbiBpbnRlcmZhY2UgdG8gc2V0IHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgb2YgY29tcGlsYXRpb24gaW4KKyAgcHlfY29tcGlsZSwgY29tcGlsZWFsbCBhbmQgemlwZmlsZS5QeVppcEZpbGUuCisKKy0gSXNzdWUgIzc5MDQ6IENoYW5nZXMgdG8gdXJsbGliLnBhcnNlLnVybHNwbGl0IHRvIGhhbmRsZSBzY2hlbWVzIGFzIGRlZmluZWQgYnkKKyAgUkZDMzk4Ni4gQW55dGhpbmcgYmVmb3JlIDovLyBpcyBjb25zaWRlcmVkIGEgc2NoZW1lIGFuZCBpcyBmb2xsb3dlZCBieSBhbgorICBhdXRob3JpdHkgKG9yIG5ldGxvYykgYW5kIGJ5ICcvJyBsZWQgcGF0aCwgd2hpY2ggaXMgb3B0aW9uYWwuCisKKy0gSXNzdWUgIzYwNDU6IGRibS5nbnUgZGF0YWJhc2VzIG5vdyBzdXBwb3J0IGdldCgpIGFuZCBzZXRkZWZhdWx0KCkgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTA2MjA6IGBweXRob24gLW0gdW5pdHRlc3RgIGNhbiBhY2NlcHQgZmlsZSBwYXRocyBpbnN0ZWFkIG9mIG1vZHVsZQorICBuYW1lcyBmb3IgcnVubmluZyBzcGVjaWZpYyB0ZXN0cy4KKworLSBJc3N1ZSAjOTQyNDogRGVwcmVjYXRlIHRoZSBgdW5pdHRlc3QuVGVzdENhc2VgIG1ldGhvZHMgYGFzc2VydEVxdWFsc2AsCisgIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0QWxtb3N0RXF1YWxzYCwgYGFzc2VydE5vdEFsbW9zdEVxdWFsc2AgYW5kIGBhc3NlcnRfYAorICBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIGNvcnJlY3QgbWV0aG9kcyBpbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisKKy0gSXNzdWUgIzEwMjcyOiBUaGUgc3NsIG1vZHVsZSBub3cgcmFpc2VzIHNvY2tldC50aW1lb3V0IGluc3RlYWQgb2YgYSBnZW5lcmljCisgIFNTTEVycm9yIG9uIHNvY2tldCB0aW1lb3V0cy4KKworLSBJc3N1ZSAjMTA1Mjg6IEFsbG93IHRyYW5zbGF0b3JzIHRvIHJlb3JkZXIgcGxhY2Vob2xkZXJzIGluIGxvY2FsaXphYmxlCisgIG1lc3NhZ2VzIGZyb20gYXJncGFyc2UuCisKKy0gSXNzdWUgIzEwNDk3OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBnZXR0ZXh0IGluIGFyZ3BhcnNlLgorCistIElzc3VlICMxMDQ3ODogUmVlbnRyYW50IGNhbGxzIGluc2lkZSBidWZmZXJlZCBJTyBvYmplY3RzIChmb3IgZXhhbXBsZSBieQorICB3YXkgb2YgYSBzaWduYWwgaGFuZGxlcikgbm93IHJhaXNlIGEgUnVudGltZUVycm9yIGluc3RlYWQgb2YgZnJlZXppbmcgdGhlCisgIGN1cnJlbnQgcHJvY2Vzcy4KKworLSBsb2dnaW5nOiBBZGRlZCBnZXRMb2dSZWNvcmRGYWN0b3J5L3NldExvZ1JlY29yZEZhY3Rvcnkgd2l0aCBkb2NzIGFuZCB0ZXN0cy4KKworLSBJc3N1ZSAjMTA1NDk6IEZpeCBweWRvYyB0cmFjZWJhY2sgd2hlbiB0ZXh0LWRvY3VtZW50aW5nIGNlcnRhaW4gY2xhc3Nlcy4KKworLSBJc3N1ZSAjMjAwMTogTmV3IEhUTUwgc2VydmVyIHdpdGggZW5oYW5jZWQgV2ViIHBhZ2UgZmVhdHVyZXMuICBQYXRjaCBieSBSb24KKyAgQWRhbS4KKworLSBJc3N1ZSAjMTAzNjA6IEluIFdlYWtTZXQsIGRvIG5vdCByYWlzZSBUeXBlRXJyb3JzIHdoZW4gdGVzdGluZyBmb3IgbWVtYmVyc2hpcAorICBvZiBub24td2Vha3JlZmFibGUgb2JqZWN0cy4KKworLSBJc3N1ZSAjOTQwMjg2OiBweWRvYy5IZWxwZXIuaGVscCgpIGlnbm9yZXMgaW5wdXQvb3V0cHV0IGluaXQgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjMTc0NTAzNTogQWRkIGEgY29tbWFuZCBzaXplIGFuZCBkYXRhIHNpemUgbGltaXQgdG8gc210cGQucHksIHRvIHByZXZlbnQKKyAgRG9TIGF0dGFja3MuICBQYXRjaCBieSBTYXZpbyBTZW5hLgorCistIElzc3VlICM0OTI1OiBBZGQgZmlsZW5hbWUgdG8gZXJyb3IgbWVzc2FnZSB3aGVuIGV4ZWN1dGFibGUgY2FuJ3QgYmUgZm91bmQgaW4KKyAgc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTAzOTE6IERvbid0IGRlcmVmZXJlbmNlIGludmFsaWQgbWVtb3J5IGluIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhc3QKKyAgbW9kdWxlLgorCistIElzc3VlICMxMDAyNzogc3Rfbmxpbmsgd2FzIG5vdCBiZWluZyBzZXQgb24gV2luZG93cyBjYWxscyB0byBvcy5zdGF0IG9yCisgIG9zLmxzdGF0LiBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjOTMzMzogRXhwb3NlIG9zLnN5bWxpbmsgb25seSB3aGVuIHRoZSBTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSBpcworICBoZWxkIGJ5IHRoZSB1c2VyJ3MgYWNjb3VudCwgaS5lLiwgd2hlbiB0aGUgZnVuY3Rpb24gY2FuIGFjdHVhbGx5IGJlIHVzZWQuCisKKy0gSXNzdWUgIzg4Nzk6IEFkZCBvcy5saW5rIHN1cHBvcnQgZm9yIFdpbmRvd3MuCisKKy0gSXNzdWUgIzc5MTE6IGBgdW5pdHRlc3QuVGVzdENhc2UubG9uZ01lc3NhZ2VgYCBkZWZhdWx0cyB0byBUcnVlIGZvciBpbXByb3ZlZAorICBmYWlsdXJlIG1lc3NhZ2VzIGJ5IGRlZmF1bHQuIFBhdGNoIGJ5IE1hcmsgUm9kZHkuCisKKy0gSXNzdWUgIzE0ODY3MTM6IEhUTUxQYXJzZXIgbm93IGhhcyBhbiBvcHRpb25hbCB0b2xlcmFudCBtb2RlIHdoZXJlIGl0IHRyaWVzIHRvCisgIGd1ZXNzIGF0IHRoZSBjb3JyZWN0IHBhcnNpbmcgb2YgaW52YWxpZCBodG1sLgorCistIElzc3VlICMxMDU1NDogQWRkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0IHRvIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0cy4KKworLSBJc3N1ZSAjODk4OTogZW1haWwudXRpbHMubWFrZV9tc2dpZCBub3cgaGFzIGEgZG9tYWluIHBhcmFtZXRlciB0aGF0IGNhbgorICBvdmVycmlkZSB0aGUgZG9tYWluIG5hbWUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG1zZ2lkLgorCistIElzc3VlICM5Mjk5OiBBZGQgZXhpc3Rfb2sgcGFyYW1ldGVyIHRvIG9zLm1ha2VkaXJzIHRvIHN1cHByZXNzIHRoZSAnRmlsZQorICBleGlzdHMnIGV4Y2VwdGlvbiB3aGVuIGEgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgbW9kZS4gUGF0Y2ggYnkgUmF5IEFsbGVuLgorCistIElzc3VlICM5NTczOiBvcy5mb3JrKCkgbm93IHdvcmtzIGNvcnJlY3RseSB3aGVuIHRyaWdnZXJlZCBhcyBhIHNpZGUgZWZmZWN0IG9mCisgIGEgbW9kdWxlIGltcG9ydC4KKworLSBJc3N1ZSAjMTA0NjQ6IG5ldHJjIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBsaW5lcyB3aXRoIGVtYmVkZGVkICcjJyBjaGFyYWN0ZXJzLgorCistIEFkZGVkIGl0ZXJ0b29scy5hY2N1bXVsYXRlKCkuCisKKy0gSXNzdWUgIzQxMTM6IEFkZGVkIGN1c3RvbSBgYF9fcmVwcl9fYGAgbWV0aG9kIHRvIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgorCistIElzc3VlICMxMDI3MzogUmVuYW1lIGBhc3NlcnRSZWdleHBNYXRjaGVzYCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4cGAgdG8KKyAgYGFzc2VydFJlZ2V4YCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4YC4KKworLSBJc3N1ZSAjMTA1MzU6IEVuYWJsZSBzaWxlbmNlZCB3YXJuaW5ncyBpbiB1bml0dGVzdCBieSBkZWZhdWx0LgorCistIElzc3VlICM5ODczOiBUaGUgVVJMIHBhcnNpbmcgZnVuY3Rpb25zIGluIHVybGxpYi5wYXJzZSBub3cgYWNjZXB0IEFTQ0lJIGJ5dGUKKyAgc2VxdWVuY2VzIGFzIGlucHV0IGluIGFkZGl0aW9uIHRvIGNoYXJhY3RlciBzdHJpbmdzLgorCistIElzc3VlICMxMDU4NjogVGhlIHN0YXRpc3RpY3MgQVBJIGZvciB0aGUgbmV3IGZ1bmN0b29scy5scnVfY2FjaGUgaGFzIGJlZW4KKyAgY2hhbmdlZCB0byBhIHNpbmdsZSBjYWNoZV9pbmZvKCkgbWV0aG9kIHJldHVybmluZyBhIG5hbWVkIHR1cGxlLgorCistIElzc3VlICMxMDMyMzogaXRlcnRvb2xzLmlzbGljZSgpIG5vdyBjb25zdW1lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgaW5wdXRzCisgIGJlZm9yZSBzdG9wcGluZy4gIEZvcm1lcmx5LCB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3Igd2FzCisgIHVuZGVmaW5lZC4KKworLSBJc3N1ZSAjMTA1NjU6IFRoZSBjb2xsZWN0aW9ucy5JdGVyYXRvciBBQkMgbm93IGNoZWNrcyBmb3IgYm90aCBfX2l0ZXJfXyBhbmQKKyAgX19uZXh0X18uCisKKy0gSXNzdWUgIzEwMjQyOiBGaXhlZCBpbXBsZW1lbnRhdGlvbiBvZiB1bml0dGVzdC5JdGVtc0VxdWFsIGFuZCBnYXZlIGl0IGEgbmV3CisgIG1vcmUgaW5mb3JtYXRpdmUgbmFtZSwgdW5pdHRlc3QuQ291bnRFcXVhbC4KKworLSBJc3N1ZSAjMTA1NjE6IEluIHBkYiwgY2xlYXIgdGhlIGJyZWFrcG9pbnRzIGJ5IHRoZSBicmVha3BvaW50IG51bWJlci4KKworLSBJc3N1ZSAjMjk4NjogZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgZ2V0cyBhIG5ldyBwYXJhbWV0ZXIsIGF1dG9qdW5rLCB3aGljaCBjYW4KKyAgYmUgc2V0IHRvIEZhbHNlIHRvIHR1cm4gb2ZmIHRoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCAncG9wdWxhcml0eScKKyAgaGV1cmlzdGljLiBQYXRjaCBieSBUZXJyeSBSZWVkeSBhbmQgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjMTA1MzQ6IGluIGRpZmZsaWIsIGV4cG9zZSBianVuayBhbmQgYnBvcHVsYXIgc2V0czsgZGVwcmVjYXRlCisgIHVuZG9jdW1lbnRlZCBhbmQgbm93IHJlZHVuZGFudCBpc2JqdW5rIGFuZCBpc2Jwb3B1bGFyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzk4NDY6IHppcGZpbGUgaXMgbm93IGNvcnJlY3RseSBjbG9zaW5nIHVuZGVybHlpbmcgZmlsZSBvYmplY3RzLgorCistIElzc3VlICMxMDQ1OTogVXBkYXRlIENKSyBjaGFyYWN0ZXIgbmFtZXMgdG8gVW5pY29kZSA2LjAuCisKKy0gSXNzdWUgIzQ0OTM6IHVybGxpYi5yZXF1ZXN0IGFkZHMgJy8nIGluIGZyb250IG9mIHBhdGggY29tcG9uZW50cyB3aGljaCBkb2VzIG5vdAorICBzdGFydCB3aXRoICcvLiBDb21tb24gYmVoYXZpb3IgZXhoaWJpdGVkIGJ5IGJyb3dzZXJzIGFuZCBvdGhlciBjbGllbnRzLgorCistIElzc3VlICM2Mzc4OiBpZGxlLmJhdCBub3cgcnVucyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBQeXRob24gdmVyc2lvbiByYXRoZXIgdGhhbgorICB0aGUgc3lzdGVtIGRlZmF1bHQuIFBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjMTA0NzA6ICdweXRob24gLW0gdW5pdHRlc3QnIHdpbGwgbm93IHJ1biB0ZXN0IGRpc2NvdmVyeSBieSBkZWZhdWx0LAorICB3aGVuIG5vIGV4dHJhIGFyZ3VtZW50cyBoYXZlIGJlZW4gcHJvdmlkZWQuCisKKy0gSXNzdWUgIzM3MDk6IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIgd2lsbCBidWZmZXIgdGhlIGhlYWRlcnMgYW5kIHdyaXRlIHRvCisgIG91dHB1dCBzdHJlYW0gb25seSB3aGVuIGVuZF9oZWFkZXJzIGlzIGludm9rZWQuIFRoaXMgaXMgYSBzcGVlZHVwIGFuZCBhbgorICBpbnRlcm5hbCBvcHRpbWl6YXRpb24uICBQYXRjaCBieSBBbmRyZXcgU2hhYWYuCisKKy0gSXNzdWUgIzEwMjIwOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlLiBJbml0aWFsIHBhdGNoIGJ5IFJvZG9scGhvCisgIEVja2hhcmR0LgorCistIElzc3VlICMxMDQ1MzogY29tcGlsZWFsbCBub3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIGdldG9wdCwgYW5kIHRodXMKKyAgcHJvdmlkZXMgY2xlYW4gb3V0cHV0IHdoZW4gY2FsbGVkIHdpdGggJy1oJy4KKworLSBJc3N1ZSAjODA3ODogQWRkIGNvbnN0YW50cyBmb3IgaGlnaGVyIGJhdWQgcmF0ZXMgaW4gdGhlIHRlcm1pb3MgbW9kdWxlLiAgUGF0Y2gKKyAgYnkgUm9kb2xwaG8gRWNraGFyZHQuCisKKy0gSXNzdWUgIzEwNDA3OiBGaXggdHdvIE5hbWVFcnJvcnMgaW4gZGlzdHV0aWxzLgorCistIElzc3VlICMxMDM3MTogRGVwcmVjYXRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNDY3OiBGaXggQnl0ZXNJTy5yZWFkaW50bygpIGFmdGVyIHNlZWtpbmcgaW50byBhIHBvc2l0aW9uIGFmdGVyIHRoZQorICBlbmQgb2YgdGhlIGZpbGUuCisKKy0gY29uZmlncGFyc2VyOiAxMDAlIHRlc3QgY292ZXJhZ2UuCisKKy0gSXNzdWUgIzEwNDk5OiBjb25maWdwYXJzZXIgc3VwcG9ydHMgcGx1Z2dhYmxlIGludGVycG9sYXRpb24gaGFuZGxlcnMuIFRoZQorICBkZWZhdWx0IGNsYXNzaWMgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBCYXNpY0ludGVycG9sYXRpb24uIEFub3RoZXIKKyAgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGFkZGVkIChFeHRlbmRlZEludGVycG9sYXRpb24pIHdoaWNoIHN1cHBvcnRzIHRoZSBzeW50YXgKKyAgdXNlZCBieSB6Yy5idWlsZG91dCAoZS5nLiBpbnRlcnBvbGF0aW9uIGJldHdlZW4gc2VjdGlvbnMpLgorCistIGNvbmZpZ3BhcnNlcjogdGhlIFNhZmVDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBDb25maWdQYXJzZXIuCisgIFRoZSBsZWdhY3kgQ29uZmlnUGFyc2VyIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQgYnV0IGl0cyBpbnRlcnBvbGF0aW9uIG1lY2hhbmlzbQorICBpcyBzdGlsbCBhdmFpbGFibGUgYXMgTGVnYWN5SW50ZXJwb2xhdGlvbi4KKworLSBjb25maWdwYXJzZXI6IFVzYWdlIG9mIFJhd0NvbmZpZ1BhcnNlciBpcyBub3cgZGlzY291cmFnZWQgZm9yIG5ldyBwcm9qZWN0cworICBpbiBmYXZvciBvZiBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKS4KKworLSBJc3N1ZSAjMTY4Mjk0MjogY29uZmlncGFyc2VyIHN1cHBvcnRzIGFsdGVybmF0aXZlIG9wdGlvbi92YWx1ZSBkZWxpbWl0ZXJzLgorCistIElzc3VlICM1NDEyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgbWFwcGluZyBwcm90b2NvbCBhY2Nlc3MuCisKKy0gSXNzdWUgIzk0MTE6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBzcGVjaWZ5aW5nIGVuY29kaW5nIGZvciByZWFkIG9wZXJhdGlvbnMuCisKKy0gSXNzdWUgIzk0MjE6IGNvbmZpZ3BhcnNlcidzIGdldGludCgpLCBnZXRmbG9hdCgpIGFuZCBnZXRib29sZWFuKCkgbWV0aG9kcworICBhY2NlcHQgdmFycyBhbmQgZGVmYXVsdCBhcmd1bWVudHMganVzdCBsaWtlIGdldCgpIGRvZXMuCisKKy0gSXNzdWUgIzk0NTI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyByZWFkaW5nIGZyb20gc3RyaW5ncyBhbmQgZGljdGlvbmFyaWVzCisgICh0aGFua3MgdG8gdGhlIG1hcHBpbmcgcHJvdG9jb2wgQVBJLCB0aGUgbGF0dGVyIGNhbiBiZSB1c2VkIHRvIGNvcHkgZGF0YQorICBiZXR3ZWVuIHBhcnNlcnMpLgorCistIGNvbmZpZ3BhcnNlcjogYWNjZXB0ZWQgSU5JIGZpbGUgc3RydWN0dXJlIGlzIG5vdyBjdXN0b21pemFibGUsIGluY2x1ZGluZworICBjb21tZW50IHByZWZpeGVzLCBuYW1lIG9mIHRoZSBERUZBVUxUIHNlY3Rpb24sIGVtcHR5IGxpbmVzIGluIG11bHRpbGluZQorICB2YWx1ZXMsIGFuZCBpbmRlbnRhdGlvbi4KKworLSBJc3N1ZSAjMTAzMjY6IHVuaXR0ZXN0LlRlc3RDYXNlIGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZC4KKworLSBJc3N1ZSAjOTkyNjogV3JhcHBlZCBUZXN0U3VpdGUgc3ViY2xhc3MgZG9lcyBub3QgZ2V0IF9fY2FsbF9fIGV4ZWN1dGVkLgorCistIElzc3VlICM5OTIwOiBTa2lwIHRlc3RzIGZvciBjbWF0aC5hdGFuIGFuZCBjbWF0aC5hdGFuaCBhcHBsaWVkIHRvIGNvbXBsZXgKKyAgemVyb3Mgb24gc3lzdGVtcyB3aGVyZSB0aGUgbG9nMXAgZnVuY3Rpb24gZmFpbHMgdG8gcmVzcGVjdCB0aGUgc2lnbiBvZiB6ZXJvLgorICBUaGlzIGZpeGVzIGEgdGVzdCBmYWlsdXJlIG9uIEFJWC4KKworLSBJc3N1ZSAjOTczMjogQWRkaXRpb24gb2YgZ2V0YXR0cl9zdGF0aWMgdG8gdGhlIGluc3BlY3QgbW9kdWxlLgorCistIElzc3VlICMxMDQ0NjogTW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIGJ5IHB5ZG9jIG5vdyBsaW5rcyB0byBhCisgIHZlcnNpb24tc3BlY2lmaWMgb25saW5lIHJlZmVyZW5jZSBtYW51YWwuCisKKy0gTWFrZSB0aGUgJ05vIG1vZHVsZSBuYW1lZCcgZXhjZXB0aW9uIG1lc3NhZ2UgZnJvbSBpbXBvcnRsaWIgY29uc2lzdGVudC4KKworLSBJc3N1ZSAjMTA0NDM6IEFkZCB0aGUgU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSBtZXRob2QuCisKKy0gSXNzdWUgIzEwNDQwOiBTdXBwb3J0IFJVU0FHRV9USFJFQUQgYXMgYSBjb25zdGFudCBpbiB0aGUgcmVzb3VyY2UgbW9kdWxlLgorICBQYXRjaCBieSBSb2JlcnQgQ29sbGlucy4KKworLSBJc3N1ZSAjMTA0Mjk6IElNQVAuc3RhcnR0bHMoKSBzdG9yZWQgdGhlIGNhcGFiaWxpdGllcyBhcyBieXRlcyBvYmplY3RzLCByYXRoZXIKKyAgdGhhbiBzdHJpbmdzLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTA1NTc6IEFkZGVkIGEgbmV3IEFQSSBmdW5jdGlvbiwgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKCksCisgIHdoaWNoIHRyYW5zZm9ybXMgbm9uLUFTQ0lJIGRlY2ltYWwgZGlnaXRzIGluIGEgVW5pY29kZSBzdHJpbmcgdG8gdGhlaXIgQVNDSUkKKyAgZXF1aXZhbGVudHMuCisKKy0gSXNzdWUgIzk1MTg6IEV4dGVuZCB0aGUgUHlNb2R1bGVEZWZfSEVBRF9JTklUIG1hY3JvIHRvIGV4cGxpY2l0bHkKKyAgemVyby1pbml0aWFsaXplIGFsbCBmaWVsZHMsIGZpeGluZyBjb21waWxlciB3YXJuaW5ncyBzZWVuIHdoZW4gYnVpbGRpbmcKKyAgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBnY2Mgd2l0aCAiLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIgKGltcGxpZWQgYnkKKyAgIi1XIikuCisKKy0gSXNzdWUgIzEwMjU1OiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuICBQYXRjaCBieSBOZWlsCisgIFNjaGVtZW5hdWVyLgorCistIHN0cnVjdHNlcS5oIGlzIG5vdyBpbmNsdWRlZCBpbiBQeXRob24uaC4KKworLSBMb29zZW4gUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzIHRvIGFsbG93IGRpY3Qgc3ViY2xhc3Nlcy4KKworVGVzdHMKKy0tLS0tCisKKy0gcmVncnRlc3QucHkgb25jZSBhZ2FpbiBlbnN1cmVzIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyByZW1vdmVkIGZyb20gc3lzLnBhdGgKKyAgd2hlbiBpdCBpcyBpbnZva2VkIGRpcmVjdGx5IGFzIHRoZSBfX21haW5fXyBtb2R1bGUuCisKKy0gYHB5dGhvbiAtbSB0ZXN0YCBjYW4gYmUgdXNlZCB0byBydW4gdGhlIHRlc3Qgc3VpdGUgYXMgd2VsbCBhcyBgcHl0aG9uIC1tCisgIHRlc3QucmVncnRlc3RgLgorCistIERvIG5vdCBmYWlsIHRlc3Rfc29ja2V0IHdoZW4gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGhvc3RuYW1lIGNhbm5vdCBiZQorICBsb29rZWQgdXAuCisKKy0gSXNzdWUgIzg4ODY6IFVzZSBjb250ZXh0IG1hbmFnZXJzIHRocm91Z2hvdXQgdGVzdF96aXBmaWxlLiBQYXRjaCBieSBFcmljCisgIENhcnN0ZW5zZW4uCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMDMyNTogRml4IHR3byBpc3N1ZXMgaW4gdGhlIGZhbGxiYWNrIGRlZmluaXRpb25zIGZvciBQWV9VTExPTkdfTUFYIGFuZAorICBQWV9MTE9OR19NQVggdGhhdCBtYWRlIHRoZW0gdW5zdWl0YWJsZSBmb3IgdXNlIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTAyOTk6IExpc3QgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiBhIHRhYmxlIGluIGZ1bmN0aW9ucy5yc3QuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtTm92LTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDM3MjogSW1wb3J0IHRoZSB3YXJuaW5ncyBtb2R1bGUgb25seSBhZnRlciB0aGUgSU8gbGlicmFyeSBpcworICBpbml0aWFsaXplZCwgc28gYXMgdG8gYXZvaWQgYm9vdHN0cmFwIGlzc3VlcyB3aXRoIHRoZSAnLVcnIG9wdGlvbi4KKworLSBJc3N1ZSAjMTAyOTM6IFJlbW92ZSBvYnNvbGV0ZSBmaWVsZCBpbiB0aGUgUHlNZW1vcnlWaWV3IHN0cnVjdHVyZSwgdW51c2VkCisgIHVuZG9jdW1lbnRlZCB2YWx1ZSBQeUJVRl9TSEFET1csIGFuZCBzdHJhbmdlbHktbG9va2luZyBjb2RlIGluCisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzLgorCistIElzc3VlICM2MDgxOiBBZGQgc3RyLmZvcm1hdF9tYXAoKSwgc2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLgorCistIElmIEZpbGVJTy5fX2luaXRfXyBmYWlscywgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjMTAyMjE6IGRpY3QucG9wKGspIG5vdyBoYXMgYSBrZXkgZXJyb3IgbWVzc2FnZSB0aGF0IGluY2x1ZGVzIHRoZQorICBtaXNzaW5nIGtleSAoc2FtZSBtZXNzYWdlIGRba10gcmV0dXJucyBmb3IgbWlzc2luZyBrZXlzKS4KKworLSBJc3N1ZSAjNTQzNzogQSBwcmVhbGxvY2F0ZWQgTWVtb3J5RXJyb3IgaW5zdGFuY2Ugc2hvdWxkIG5vdCBrZWVwIHRyYWNlYmFjaworICBkYXRhIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzIGNhdWdodCBpbiB0aGUgc3RhY2sgdHJhY2UpIGFsaXZlIGluZmluaXRlbHkuCisKKy0gSXNzdWUgIzEwMTg2OiBGaXggdGhlIFN5bnRheEVycm9yIGNhcmV0IHdoZW4gdGhlIG9mZnNldCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoCisgIG9mIHRoZSBvZmZlbmRpbmcgbGluZS4KKworLSBJc3N1ZSAjMTAwODk6IEFkZCBzdXBwb3J0IGZvciBhcmJpdHJhcnkgLVggb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVGhleQorICBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggYSBuZXcgYXR0cmlidXRlIGBgc3lzLl94b3B0aW9uc2BgLgorCistIElzc3VlICM0Mzg4OiBPbiBNYWMgT1MgWCwgZGVjb2RlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBVVEYtOCwgaW5zdGVhZCBvZgorICB0aGUgbG9jYWxlIGVuY29kaW5nLiAgSWYgdGhlIExBTkcgKGFuZCBMQ19BTEwgYW5kIExDX0NUWVBFKSBlbnZpcm9ubWVudAorICB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzIElTTy04ODU5LTEsIHdoZXJlYXMgbW9zdCBwcm9ncmFtcworICAoaW5jbHVkaW5nIFB5dGhvbikgZXhwZWN0IFVURi04LiAgUHl0aG9uIGFscmVhZHkgdXNlcyBVVEYtOCBmb3IgdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgYW5kIHRvIGVuY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIHRoaXMgT1MuCisKKy0gSXNzdWUgIzk3MTMsICMxMDExNDogUGFyc2VyIGZ1bmN0aW9ucyAoZS5nLiBQeVBhcnNlcl9BU1RGcm9tRmlsZSkgZXhwZWN0CisgIGZpbGVuYW1lcyBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvcgorICBoYW5kbGVyICh0byBzdXBwb3J0IHVuZGVjb2RhYmxlIGJ5dGVzKSwgaW5zdGVhZCBvZiBVVEYtOCBpbiBzdHJpY3QgbW9kZS4KKworLSBJc3N1ZSAjOTk5NzogRG9uJ3QgbGV0IHRoZSBuYW1lICJ0b3AiIGhhdmUgc3BlY2lhbCBzaWduaWZpY2FuY2UgaW4gc2NvcGUKKyAgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjOTg2MjogQ29tcGVuc2F0ZSBmb3IgYnJva2VuIFBJUEVfQlVGIGluIEFJWCBieSBoYXJkIGNvZGluZyBpdHMgdmFsdWUgYXMKKyAgdGhlIGRlZmF1bHQgNTEyIHdoZW4gY29tcGlsaW5nIG9uIEFJWC4KKworLSBVc2UgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTggdG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZW5hbWVzIGlmCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldC4KKworLSBJc3N1ZSAjMTAwOTU6IGZwX3NldHJlYWRsKCkgZG9lc24ndCByZW9wZW4gdGhlIGZpbGUsIGluc3RlYWQgcmV1c2UgdGhlIGZpbGUKKyAgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjOTQxODogTW92ZWQgcHJpdmF0ZSBzdHJpbmcgbWV0aG9kcyBgYF9mb3JtYXR0ZXJfcGFyc2VyYGAgYW5kCisgIGBgX2Zvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0YGAgaW50byBhIG5ldyBgYF9zdHJpbmdgYCBtb2R1bGUuCisKKy0gSXNzdWUgIzk5OTI6IFJlbW92ZSBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEyOTQzOiBweXRob24gLW0gdG9rZW5pemUgc3VwcG9ydCBoYXMgYmVlbiBhZGRlZCB0byB0b2tlbml6ZS4KKworLSBJc3N1ZSAjMTA0NjU6IGZpeCBicm9rZW4gZGVsZWdhdGluZyBvZiBhdHRyaWJ1dGVzIGJ5IGd6aXAuX1BhZGRlZEZpbGUuCisKKy0gSXNzdWUgIzEwMzU2OiBEZWNpbWFsLl9faGFzaF9fKC0xKSBzaG91bGQgcmV0dXJuIC0yLgorCistIElzc3VlICMxNTUzMzc1OiBsb2dnaW5nOiBBZGRlZCBzdGFja19pbmZvIGt3YXJnIHRvIGRpc3BsYXkgc3RhY2sgaW5mb3JtYXRpb24uCisKKy0gSXNzdWUgIzUxMTE6IElQdjYgSG9zdCBpbiB0aGUgSGVhZGVyIGlzIHdyYXBwZWQgaW5zaWRlIFsgXS4gUGF0Y2ggYnkgQ2hhbmRydS4KKworLSBGaXggRnJhY3Rpb24uX19oYXNoX18gc28gdGhhdCBGcmFjdGlvbi5fX2hhc2hfXygtMSkgaXMgLTIuICAoU2VlIGFsc28gaXNzdWUKKyAgIzEwMzU2LikKKworLSBJc3N1ZSAjNDQ3MTogQWRkIHRoZSBJTUFQLnN0YXJ0dGxzKCkgbWV0aG9kIHRvIGVuYWJsZSBlbmNyeXB0aW9uIG9uIHN0YW5kYXJkCisgIElNQVA0IGNvbm5lY3Rpb25zLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTG9yZW56byBNLiBDYXR1Y2NpLgorCistIElzc3VlICMxNDY2MDY1OiBBZGQgJ3ZhbGlkYXRlJyBvcHRpb24gdG8gYmFzZTY0LmI2NGRlY29kZSB0byByYWlzZSBhbiBlcnJvciBpZgorICB0aGVyZSBhcmUgbm9uLWJhc2U2NCBhbHBoYWJldCBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dC4KKworLSBJc3N1ZSAjMTAzODY6IEFkZCBfX2FsbF9fIHRvIHRva2VuIG1vZHVsZTsgdGhpcyBzaW1wbGlmaWVzIGltcG9ydGluZyBpbgorICB0b2tlbml6ZSBtb2R1bGUgYW5kIHByZXZlbnRzIGxlYWtpbmcgb2YgcHJpdmF0ZSBuYW1lcyB0aHJvdWdoIGBgaW1wb3J0ICpgYC4KKworLSBJc3N1ZSAjNDQ3MTogUHJvcGVybHkgc2h1dGRvd24gc29ja2V0IGluIElNQVAuc2h1dGRvd24oKS4gIFBhdGNoIGJ5IExvcmVuem8KKyAgTS4gQ2F0dWNjaS4KKworLSBGaXggSU1BUC5sb2dpbigpIHRvIHdvcmsgcHJvcGVybHkuCisKKy0gSXNzdWUgIzkyNDQ6IG11bHRpcHJvY2Vzc2luZyBwb29sIHdvcmtlciBwcm9jZXNzZXMgY291bGQgdGVybWluYXRlCisgIHVuZXhwZWN0ZWRseSBpZiB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgdGFzayBjb3VsZCBub3QgYmUgcGlja2xlZC4gIE9ubHkgdGhlCisgIGBgcmVwcmBgIG9mIHN1Y2ggZXJyb3JzIGFyZSBub3cgc2VudCBiYWNrLCB3cmFwcGVkIGluIGFuCisgIGBgTWF5YmVFbmNvZGluZ0Vycm9yYGAgZXhjZXB0aW9uLgorCistIElzc3VlICM5MjQ0OiBUaGUgYGBhcHBseV9hc3luYygpYGAgYW5kIGBgbWFwX2FzeW5jKClgYCBtZXRob2RzIG9mCisgIGBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgYCBub3cgYWNjZXB0cyBhIGBgZXJyb3JfY2FsbGJhY2tgYCBhcmd1bWVudC4gIFRoaXMgY2FuCisgIGJlIGEgY2FsbGJhY2sgd2l0aCB0aGUgc2lnbmF0dXJlIGBgY2FsbGJhY2soZXhjKWBgLCB3aGljaCB3aWxsIGJlIGNhbGxlZCBpZgorICB0aGUgdGFyZ2V0IHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzEwMDIyOiBUaGUgZGljdGlvbmFyeSByZXR1cm5lZCBieSB0aGUgYGBnZXRwZWVyY2VydCgpYGAgbWV0aG9kIG9mIFNTTAorICBzb2NrZXRzIG5vdyBoYXMgYWRkaXRpb25hbCBpdGVtcyBzdWNoIGFzIGBgaXNzdWVyYGAgYW5kIGBgbm90QmVmb3JlYGAuCisKKy0gYGB1c2VuZXRyY2BgIGlzIG5vdyBmYWxzZSBieSBkZWZhdWx0IGZvciBOTlRQIG9iamVjdHMuCisKKy0gSXNzdWUgIzE5MjY6IEFkZCBzdXBwb3J0IGZvciBOTlRQIG92ZXIgU1NMIG9uIHBvcnQgNTYzLCBhcyB3ZWxsIGFzIFNUQVJUVExTLgorICBQYXRjaCBieSBBbmRyZXcgVmFudC4KKworLSBJc3N1ZSAjMTAzMzU6IEFkZCB0b2tlbml6ZS5vcGVuKCksIGRldGVjdCB0aGUgZmlsZSBlbmNvZGluZyB1c2luZworICB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBhbmQgb3BlbiBpdCBpbiByZWFkIG9ubHkgbW9kZS4KKworLSBJc3N1ZSAjMTAzMjE6IEFkZCBzdXBwb3J0IGZvciBiaW5hcnkgZGF0YSB0byBzbXRwbGliLlNNVFAuc2VuZG1haWwsIGFuZCBhIG5ldworICBtZXRob2Qgc2VuZF9tZXNzYWdlIHRvIHNlbmQgYW4gZW1haWwubWVzc2FnZS5NZXNzYWdlIG9iamVjdC4KKworLSBJc3N1ZSAjNjAxMTogc3lzY29uZmlnIGFuZCBkaXN0dXRpbHMuc3lzY29uZmlnIHVzZSB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCisgIGhhbmRsZXIgdG8gcGFyc2UgdGhlIE1ha2VmaWxlIGZpbGUuICBBdm9pZCBhIFVuaWNvZGVEZWNvZGVFcnJvciBpZiB0aGUgc291cmNlCisgIGNvZGUgZGlyZWN0b3J5IG5hbWUgY29udGFpbnMgYSBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzCisgIEFTQ0lJLgorCistIElzc3VlICMxMDMyOTogVGhlIHRyYWNlIG1vZHVsZSB3cml0ZXMgcmVwb3J0cyB1c2luZyB0aGUgaW5wdXQgUHl0aG9uIHNjcmlwdAorICBlbmNvZGluZywgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLiAgUGF0Y2ggd3JpdHRlbiBieSBBbGV4YW5kZXIKKyAgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjMTAxMjY6IEZpeCBkaXN0dXRpbHMnIHRlc3RfYnVpbGQgd2hlbiBQeXRob24gd2FzIGJ1aWx0IHdpdGgKKyAgLS1lbmFibGUtc2hhcmVkLgorCistIElzc3VlICM5MjgxOiBQcmV2ZW50IHJhY2UgY29uZGl0aW9uIHdpdGggbWtkaXIgaW4gZGlzdHV0aWxzLiAgUGF0Y2ggYnkKKyAgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzEwMjI5OiBGaXggY2FjaGluZyBlcnJvciBpbiBnZXR0ZXh0LgorCistIElzc3VlICMxMDI1MjogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiBkaXN0dXRpbHMgY29kZSBhbmQKKyAgdGVzdHMuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwsIGNvbXBsZXRlZCBieSDDiXJpYyBBcmF1am8uCisKKy0gSXNzdWUgIzEwMTgwOiBQaWNrbGluZyBmaWxlIG9iamVjdHMgaXMgbm93IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBzaW5jZQorICB1bnBpY2tsaW5nIHRoZW0gcHJvZHVjZWQgbm9uc2Vuc2ljYWwgcmVzdWx0cy4KKworLSBJc3N1ZSAjMTAzMTE6IFRoZSBzaWduYWwgbW9kdWxlIG5vdyByZXN0b3JlcyBlcnJubyBiZWZvcmUgcmV0dXJuaW5nIGZyb20gaXRzCisgIGxvdy1sZXZlbCBzaWduYWwgaGFuZGxlci4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKKy0gSXNzdWUgIzEwMjgyOiBBZGQgYSBgYG5udHBfaW1wbGVtZW50YXRpb25gYCBhdHRyaWJ1dGUgdG8gTk5UUCBvYmplY3RzLgorCistIElzc3VlICMxMDI4MzogQWRkIGEgYGBncm91cF9wYXR0ZXJuYGAgYXJndW1lbnQgdG8gTk5UUC5saXN0KCkuCisKKy0gSXNzdWUgIzEwMTU1OiBBZGQgSUlTQ0dJSGFuZGxlciB0byB3c2dpcmVmLmhhbmRsZXJzIHRvIHN1cHBvcnQgSUlTIENHSQorICBlbnZpcm9ubWVudCBiZXR0ZXIsIGFuZCB0byBjb3JyZWN0IHVuaWNvZGUgZW52aXJvbm1lbnQgdmFsdWVzIGZvciBXU0dJIDEuMC4xLgorCistIElzc3VlICMxMDI4MTogbm50cGxpYiBub3cgcmV0dXJucyBOb25lIGZvciBhYnNlbnQgZmllbGRzIGluIHRoZSBPVkVSL1hPVkVSCisgIHJlc3BvbnNlLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgorCistIHdzZ2lyZWYgbm93IGltcGxlbWVudHMgYW5kIHZhbGlkYXRlcyBQRVAgMzMzMywgcmF0aGVyIHRoYW4gYW4gZXhwZXJpbWVudGFsCisgIGV4dGVuc2lvbiBvZiBQRVAgMzMzLiAgKE5vdGU6IGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uIDMueCBtYXkgaGF2ZQorICBpbmNvcnJlY3RseSB2YWxpZGF0ZWQgc29tZSBub24tY29tcGxpYW50IGFwcGxpY2F0aW9ucyBhcyBXU0dJIGNvbXBsaWFudDsgaWYKKyAgeW91ciBhcHAgdmFsaWRhdGVzIHdpdGggUHl0aG9uIDwzLjJiMSssIGJ1dCBub3Qgb24gdGhpcyB2ZXJzaW9uLCBpdCBpcyBsaWtlbHkKKyAgdGhlIGNhc2UgdGhhdCB5b3VyIGFwcCB3YXMgbm90IGNvbXBsaWFudC4pCisKKy0gSXNzdWUgIzEwMjgwOiBOTlRQLm5udHBfdmVyc2lvbiBzaG91bGQgcmVmbGVjdCB0aGUgaGlnaGVzdCB2ZXJzaW9uIGFkdmVydGlzZWQKKyAgYnkgdGhlIHNlcnZlci4KKworLSBJc3N1ZSAjMTAxODQ6IFRvdWNoIGRpcmVjdG9yaWVzIG9ubHkgb25jZSB3aGVuIGV4dHJhY3RpbmcgYSB0YXJmaWxlLgorCistIElzc3VlICMxMDE5OTogTmV3IHBhY2thZ2UsIGBgdHVydGxlZGVtb2BgIG5vdyBjb250YWlucyBzZWxlY3RlZCBkZW1vIHNjcmlwdHMKKyAgdGhhdCB3ZXJlIGZvcm1lcmx5IGZvdW5kIHVuZGVyIERlbW8vdHVydGxlLgorCistIElzc3VlICMxMDI2NTogQ2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgaW4gc3VuYXUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzEwMjY2OiB1dS5kZWNvZGUgZGlkbid0IGNsb3NlIGluX2ZpbGUgZXhwbGljaXRseSB3aGVuIGl0IHdhcyBnaXZlbiBhcyBhCisgIGZpbGVuYW1lLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxMDExMDogUXVldWUgb2JqZWN0cyBkaWRuJ3QgcmVjb2duaXplIGZ1bGwgcXVldWVzIHdoZW4gdGhlIG1heHNpemUKKyAgcGFyYW1ldGVyIGhhZCBiZWVuIHJlZHVjZWQuCisKKy0gSXNzdWUgIzEwMTYwOiBTcGVlZCB1cCBvcGVyYXRvci5hdHRyZ2V0dGVyLiAgUGF0Y2ggYnkgQ2hyaXN0b3MgR2Vvcmdpb3UuCisKKy0gbG9nZ2luZzogQWRkZWQgc3R5bGUgb3B0aW9uIHRvIGJhc2ljQ29uZmlnKCkgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgorCistIElzc3VlICM1NzI5OiBqc29uLmR1bXBzKCkgbm93IHN1cHBvcnRzIHVzaW5nIGEgc3RyaW5nIHN1Y2ggYXMgJ1x0JyBmb3IKKyAgcHJldHR5LXByaW50aW5nIG11bHRpbGV2ZWwgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTAyNTM6IEZpbGVJTyBsZWFrcyBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIHRyeWluZyB0byBvcGVuIGEgZmlsZSBmb3IKKyAgYXBwZW5kIHRoYXQgaXNuJ3Qgc2Vla2FibGUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gU3VwcG9ydCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIGZpbGUtbGlrZSBvYmplY3RzIHJldHVybmVkIGJ5IG1haWxib3gKKyAgYGBnZXRfZmlsZSgpYGAgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTAyNDY6IHV1LmVuY29kZSBkaWRuJ3QgY2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgd2hlbiBmaWxlbmFtZXMKKyAgd2VyZSBnaXZlbiB0byBpdC4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBJc3N1ZSAjMTAxOTg6IGZpeCBkdXBsaWNhdGUgaGVhZGVyIHdyaXR0ZW4gdG8gd2F2ZSBmaWxlcyB3aGVuIHdyaXRlZnJhbWVzKCkgaXMKKyAgY2FsbGVkIHdpdGhvdXQgZGF0YS4KKworLSBDbG9zZSBmaWxlIG9iamVjdHMgaW4gbW9kdWxlZmluZGVyIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGlvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGluIGVtYWlsLnBhcnNlciBpbiBhIHRpbWVseSBtYW5uZXIuCisKKy0gQ2xvc2UgYSBmaWxlIG9iamVjdCBpbiBkaXN0dXRpbHMuc3lzY29uZmlnIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIHBrZ3V0aWwgaW4gYSB0aW1lbHkgbWFubmVyLgorCistIElzc3VlICMxMDIzMzogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiB0aGUgdGFyZmlsZSBtb2R1bGUgYW5kCisgIGl0cyB0ZXN0IHN1aXRlLgorCistIElzc3VlICMxMDA5MzogUmVzb3VyY2VXYXJuaW5ncyBhcmUgbm93IGlzc3VlZCB3aGVuIGZpbGVzIGFuZCBzb2NrZXRzIGFyZQorICBkZWFsbG9jYXRlZCB3aXRob3V0IGV4cGxpY2l0IGNsb3NpbmcuICBUaGVzZSB3YXJuaW5ncyBhcmUgc2lsZW5jZWQgYnkgZGVmYXVsdCwKKyAgZXhjZXB0IGluIHB5ZGVidWcgbW9kZS4KKworLSB0YXJmaWxlLnB5OiBBZGQgc3VwcG9ydCBmb3IgYWxsIG1pc3NpbmcgdmFyaWFudHMgb2YgdGhlIEdOVSBzcGFyc2UgZXh0ZW5zaW9ucworICBhbmQgY3JlYXRlIGZpbGVzIHdpdGggaG9sZXMgd2hlbiBleHRyYWN0aW5nIHNwYXJzZSBtZW1iZXJzLgorCistIElzc3VlICMxMDIxODogUmV0dXJuIHRpbWVvdXQgc3RhdHVzIGZyb20gYGBDb25kaXRpb24ud2FpdGBgIGluIHRocmVhZGluZy4KKworLSBJc3N1ZSAjNzM1MTogQWRkIGBgemlwZmlsZS5CYWRaaXBGaWxlYGAgc3BlbGxpbmcgb2YgdGhlIGV4Y2VwdGlvbiBuYW1lIGFuZAorICBkZXByZWNhdGUgdGhlIG9sZCBuYW1lIGBgemlwZmlsZS5CYWRaaXBmaWxlYGAuCisKKy0gSXNzdWUgIzUwMjc6IFRoZSBzdGFuZGFyZCBgYHhtbGBgIG5hbWVzcGFjZSBpcyBub3cgdW5kZXJzdG9vZCBieQorICB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBhcyBiZWluZyBib3VuZCB0bworICBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuICBQYXRjaCBieSBUcm95IEouIEZhcnJlbGwuCisKKy0gSXNzdWUgIzU5NzU6IEFkZCBjc3YudW5peF9kaWFsZWN0IGNsYXNzLgorCistIElzc3VlICM3NzYxOiB0ZWxuZXRsaWIuaW50ZXJhY3QgZmFpbHVyZXMgb24gV2luZG93cyBmaXhlZC4KKworLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gRm9ybWF0dGVyIHRvIGFsbG93ICUsIHt9IG9yICQtZm9ybWF0dGluZy4KKworLSBJc3N1ZSAjNTE3ODogQWRkZWQgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGNsYXNzIHRoYXQgY2FuIGJlIHVzZWQgYXMgYQorICBjb250ZXh0IG1hbmFnZXIuCisKKy0gSXNzdWUgIzEzNDkxMDY6IEdlbmVyYXRvciAoYW5kIEJ5dGVzR2VuZXJhdG9yKSBmbGF0dGVuIG1ldGhvZCBhbmQgSGVhZGVyCisgIGVuY29kZSBtZXRob2Qgbm93IHN1cHBvcnQgYSAnbGluZXNlcCcgYXJndW1lbnQuCisKKy0gSXNzdWUgIzU2Mzk6IEFkZCBhICpzZXJ2ZXJfaG9zdG5hbWUqIGFyZ3VtZW50IHRvIGBgU1NMQ29udGV4dC53cmFwX3NvY2tldGBgIGluCisgIG9yZGVyIHRvIHN1cHBvcnQgdGhlIFRMUyBTTkkgZXh0ZW5zaW9uLiAgYGBIVFRQU0Nvbm5lY3Rpb25gYCBhbmQgYGB1cmxvcGVuKClgYAorICBhbHNvIHVzZSB0aGlzIGFyZ3VtZW50LCBzbyB0aGF0IEhUVFBTIHZpcnR1YWwgaG9zdHMgYXJlIG5vdyBzdXBwb3J0ZWQuCisKKy0gSXNzdWUgIzEwMTY2OiBBdm9pZCByZWN1cnNpb24gaW4gcHN0YXRzIFN0YXRzLmFkZCgpIGZvciBtYW55IHN0YXRzIGl0ZW1zLgorCistIElzc3VlICMxMDE2MzogU2tpcCB1bnJlYWRhYmxlIHJlZ2lzdHJ5IGtleXMgZHVyaW5nIG1pbWV0eXBlcyBpbml0aWFsaXphdGlvbi4KKworLSBsb2dnaW5nOiBNYWRlIFN0cmVhbUhhbmRsZXIgdGVybWluYXRvciBjb25maWd1cmFibGUuCisKKy0gbG9nZ2luZzogQWxsb3dlZCBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgorCistIGxvZ2dpbmc6IEFkZGVkIHRlc3RzIGZvciBfbG9nUmVjb3JkQ2xhc3MgY2hhbmdlcy4KKworLSBJc3N1ZSAjMTAwOTI6IFByb3Blcmx5IHJlc2V0IGxvY2FsZSBpbiBjYWxlbmRhci5Mb2NhbGUqQ2FsZW5kYXIgY2xhc3Nlcy4KKworLSBsb2dnaW5nOiBBZGRlZCBfbG9nUmVjb3JkQ2xhc3MsIGdldExvZ1JlY29yZENsYXNzLCBzZXRMb2dSZWNvcmRDbGFzcyB0bworICBpbmNyZWFzZSBmbGV4aWJpbGl0eSBvZiBMb2dSZWNvcmQgY3JlYXRpb24uCisKKy0gSXNzdWUgIzUxMTc6IENhc2Ugbm9ybWFsaXphdGlvbiB3YXMgbmVlZGVkIG9uIG50cGF0aC5yZWxwYXRoKCkuICBBbHNvIGZpeGVkCisgIHJvb3QgZGlyZWN0b3J5IGlzc3VlIG9uIHBvc2l4cGF0aC5yZWxwYXRoKCkuICAoUG9ydGVkIHdvcmtpbmcgZml4ZXMgZnJvbQorICBudHBhdGguKQorCistIElzc3VlICMxMzQzOiB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBub3cgaGFzIGFuIG9wdGlvbgorICBzaG9ydF9lbXB0eV9lbGVtZW50cyB0byBkaXJlY3QgaXQgdG8gdXNlIHNlbGYtY2xvc2luZyB0YWdzIHdoZW4gYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzk4MDcgKHBhcnQgMSk6IEV4cG9zZSB0aGUgQUJJIGZsYWdzIGluIHN5cy5hYmlmbGFncy4gIEFkZCAtLWFiaWZsYWdzCisgIHN3aXRjaCB0byBweXRob24tY29uZmlnIGZvciBjb21tYW5kIGxpbmUgYWNjZXNzLgorCistIElzc3VlICM2MDk4OiBEb24ndCBjbGFpbSBET00gbGV2ZWwgMyBjb25mb3JtYW5jZSBpbiBtaW5pZG9tLgorCistIElzc3VlICM1NzYyOiBGaXggQXR0cmlidXRlRXJyb3IgcmFpc2VkIGJ5IGBgeG1sLmRvbS5taW5pZG9tYGAgd2hlbiBhbiBlbXB0eQorICBYTUwgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyBlbmNvdW50ZXJlZC4KKworLSBJc3N1ZSAjMjgzMDogQWRkIHRoZSBgYGh0bWwuZXNjYXBlKClgYCBmdW5jdGlvbiwgd2hpY2ggcXVvdGVzIGFsbCBwcm9ibGVtYXRpYworICBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuICBEZXByZWNhdGUgYGBjZ2kuZXNjYXBlKClgYC4KKworLSBJc3N1ZSAjOTQwOTogRml4IHRoZSByZWdleCB0byBtYXRjaCBhbGwga2luZCBvZiBmaWxlbmFtZXMsIGZvciBpbnRlcmFjdGl2ZQorICBkZWJ1Z2dpbmcgaW4gZG9jdGVzdHMuCisKKy0gSXNzdWUgIzkxODM6IGBgZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKDApKWBgIHdpbGwgbm93IHJldHVybiB0aGUKKyAgc2FtZSBpbnN0YW5jZSBhcyBgYGRhdGV0aW1lLnRpbWV6b25lLnV0Y2BgLgorCistIElzc3VlICM3NTIzOiBBZGQgU09DS19DTE9FWEVDIGFuZCBTT0NLX05PTkJMT0NLIHRvIHRoZSBzb2NrZXQgbW9kdWxlLCB3aGVyZQorICBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCisKKy0gSXNzdWUgIzEwMDYzOiBmaWxlOi8vIHNjaGVtZSB3aWxsIHN0b3AgYWNjZXNzaW5nIHJlbW90ZSBob3N0cyB2aWEgZnRwCisgIHByb3RvY29sLiBmaWxlOi8vIHVybHMgaGFkIGZhbGxiYWNrIHRvIGFjY2VzcyByZW1vdGUgaG9zdHMgdmlhIGZ0cC4gVGhpcyB3YXMKKyAgbm90IGNvcnJlY3QsIGNoYW5nZSBpcyBtYWRlIHRvIHJhaXNlIGEgVVJMRXJyb3Igd2hlbiBhIHJlbW90ZSBob3N0IGlzIHRyaWVkIHRvCisgIGFjY2VzcyB2aWEgZmlsZTovLyBzY2hlbWUuCisKKy0gSXNzdWUgIzE3MTA3MDM6IFdyaXRlIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IFpJUCBhcmNoaXZlIHdoZW4gYSBaaXBGaWxlIGlzCisgIGNyZWF0ZWQgaW4gbW9kZXMgJ2EnIG9yICd3JyBhbmQgdGhlbiBjbG9zZWQgd2l0aG91dCBhZGRpbmcgYW55IGZpbGVzLiBSYWlzZQorICBCYWRaaXBmaWxlIChyYXRoZXIgdGhhbiBJT0Vycm9yKSB3aGVuIG9wZW5pbmcgc21hbGwgbm9uLVpJUCBmaWxlcy4KKworLSBJc3N1ZSAjMTAwNDE6IFRoZSBzaWduYXR1cmUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIGluIHNvY2tldC5tYWtlZmlsZSgpIGRpZG4ndAorICBtYXRjaCB0aGF0IG9mIGlvLm9wZW4oKSwgYW5kIHRoZXkgYWxzbyBkaWRuJ3QgZ2V0IGZvcndhcmRlZCBwcm9wZXJseSB0bworICBUZXh0SU9XcmFwcGVyIGluIHRleHQgbW9kZS4gIFBhdGNoIGJ5IEthaSBaaHUuCisKKy0gSXNzdWUgIzkwMDM6IGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgdXJsbGliLnJlcXVlc3QuSFRUUFNIYW5kbGVyIGFuZAorICB1cmxsaWIucmVxdWVzdC51cmxvcGVuIG5vdyB0YWtlIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBhbGxvdyBmb3Igc2VydmVyCisgIGNlcnRpZmljYXRlIGNoZWNraW5nLCBhcyByZWNvbW1lbmRlZCBpbiBwdWJsaWMgdXNlcyBvZiBIVFRQUy4KKworLSBJc3N1ZSAjNjYxMjogRml4IHNpdGUgYW5kIHN5c2NvbmZpZyB0byBjYXRjaCBvcy5nZXRjd2QoKSBlcnJvciwgZWcuIGlmIHRoZQorICBjdXJyZW50IGRpcmVjdG9yeSB3YXMgZGVsZXRlZC4gUGF0Y2ggd3JpdHRlbiBieSBXLiBUcmV2b3IgS2luZy4KKworLSBJc3N1ZSAjMzg3MzogU3BlZWQgdXAgdW5waWNrbGluZyBmcm9tIGZpbGUgb2JqZWN0cyB0aGF0IGhhdmUgYSBwZWVrKCkgbWV0aG9kLgorCistIElzc3VlICMxMDA3NTogQWRkIGEgc2Vzc2lvbl9zdGF0cygpIG1ldGhvZCB0byBTU0xDb250ZXh0IG9iamVjdHMuCisKKy0gSXNzdWUgIzk5NDg6IEZpeGVkIHByb2JsZW0gb2YgbG9zaW5nIGZpbGVuYW1lIGNhc2UgaW5mb3JtYXRpb24uCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1MTA5OiBhcnJheS5hcnJheSBjb25zdHJ1Y3RvciB3aWxsIG5vdyB1c2UgZmFzdCBjb2RlIHdoZW4KKyAgaW5pdGlhbCBkYXRhIGlzIHByb3ZpZGVkIGluIGFuIGFycmF5IG9iamVjdCB3aXRoIGNvcnJlY3QgdHlwZS4KKworLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBvbmx5IGFjY2VwdHMgdW5pY29kZS4KKworLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBjYW4gYWNjZXB0IG5vbiBhc2NpaSBmaWxlbmFtZS4KKworLSBJc3N1ZSAjOTM3NzogVXNlIFVuaWNvZGUgQVBJIGZvciBnZXRob3N0bmFtZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxMDE0MzogVXBkYXRlICJvcy5wYXRoY29uZiIgdmFsdWVzLgorCistIElzc3VlICM2NTE4OiBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90Y29sIGZvciBvc3NhdWRpb2RldiB0eXBlcy4KKworLSBJc3N1ZSAjNjc4MjUwOiBNYWtlIG1tYXAgZmx1c2ggYSBub29wIG9uIEFDQ0VTU19SRUFEIGFuZCBBQ0NFU1NfQ09QWS4KKworLSBJc3N1ZSAjOTA1NDogRml4IGEgY3Jhc2ggb2NjdXJyaW5nIHdoZW4gdXNpbmcgdGhlIHB5ZXhwYXQgbW9kdWxlIHdpdGggZXhwYXQKKyAgdmVyc2lvbiAyLjAuMS4KKworLSBJc3N1ZSAjNTM1NTogUHJvdmlkZSBtYXBwaW5ncyBmcm9tIEV4cGF0IGVycm9yIG51bWJlcnMgdG8gc3RyaW5nIGRlc2NyaXB0aW9ucworICBhbmQgYmFja3dhcmRzLCBpbiBvcmRlciB0byBhY3R1YWxseSBtYWtlIGl0IHBvc3NpYmxlIHRvIGFuYWx5emUgZXJyb3IgY29kZXMKKyAgcHJvdmlkZWQgYnkgRXhwYXRFcnJvci4KKworLSBUaGUgVW5pY29kZSBkYXRhYmFzZSB3YXMgdXBkYXRlZCB0byA2LjAuMC4KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzEwMjg4OiBUaGUgZGVwcmVjYXRlZCBmYW1pbHkgb2YgImNoYXIiLWhhbmRsaW5nIG1hY3JvcworICAoSVNMT1dFUigpL0lTVVBQRVIoKS9ldGMpIGhhdmUgbm93IGJlZW4gcmVtb3ZlZDogdXNlIFB5X0lTTE9XRVIoKSBldGMgaW5zdGVhZC4KKworLSBJc3N1ZSAjOTc3ODogSGFzaCB2YWx1ZXMgYXJlIG5vdyBhbHdheXMgdGhlIHNpemUgb2YgcG9pbnRlcnMuIEEgbmV3IFB5X2hhc2hfdAorICB0eXBlIGhhcyBiZWVuIGludHJvZHVjZWQuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxMDExNzogVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBub3cgYWNjZXB0cyBzb3VyY2UgZmlsZXMgdGhhdCB1c2UKKyAgZW5jb2Rpbmcgb3RoZXIgdGhhbiBBU0NJSSBvciBVVEYtOC4gIFNvdXJjZSBlbmNvZGluZyBpcyBwcmVzZXJ2ZWQgd2hlbgorICByZWluZGVudGVkIGNvZGUgaXMgd3JpdHRlbiB0byBhIGZpbGUuCisKKy0gSXNzdWUgIzcyODc6IERlbW8vaW1wdXRpbC9rbmVlLnB5IHdhcyByZW1vdmVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMzY5OTogRml4IHRlc3RfYmlnYWRkcnNwYWNlIGFuZCBleHRlbmQgaXQgdG8gdGVzdCBieXRlc3RyaW5ncyBhcyB3ZWxsCisgIGFzIHVuaWNvZGUgc3RyaW5ncy4gIEluaXRpYWwgcGF0Y2ggYnkgU2FuZHJvIFRvc2kuCisKKy0gSXNzdWUgIzEwMjk0OiBSZW1vdmUgZGVhZCBjb2RlIGZvcm0gdGVzdF91bmljb2RlX2ZpbGUuCisKKy0gSXNzdWUgIzEwMTIzOiBEb24ndCB1c2Ugbm9uLWFzY2lpIGZpbGVuYW1lcyBpbiB0ZXN0X2RvY3Rlc3QgdGVzdHMuIEFkZCBhIG5ldworICB0ZXN0IHNwZWNpZmljIHRvIHVuaWNvZGUgKG5vbi1hc2NpaSBuYW1lIGFuZCBmaWxlbmFtZSkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMDI2ODogQWRkIGEgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMgb3B0aW9uIHRvIGNvbmZpZ3VyZS4KKworLSBJc3N1ZSAjODg1MjogQWxsb3cgdGhlIHNvY2tldCBtb2R1bGUgdG8gYnVpbGQgb24gT3BlblNvbGFyaXMuCisKKy0gRHJvcCAtT1BUOk9saW1pdCBjb21waWxlciBvcHRpb24uCisKKy0gSXNzdWUgIzEwMDk0OiBVc2UgdmVyc2lvbmVkIC5zbyBmaWxlcyBvbiBHTlUva2ZyZWVCU0QgYW5kIHRoZSBHTlUgSHVyZC4KKworLSBBY2NlcHQgT3JhY2xlIEJlcmtlbGV5IERCIDUuMCBhbmQgNS4xIGFzIGJhY2tlbmQgZm9yIHRoZSBkYm0gZXh0ZW5zaW9uLgorCistIElzc3VlICM3NDczOiBhdm9pZCBsaW5rIGVycm9ycyB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggYSBkaWZmZXJlbnQgc2V0CisgIG9mIGFyY2hpdGVjdHVyZXMgdGhhbiB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwOS1PY3QtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwMDY4OiBHbG9iYWwgb2JqZWN0cyB3aGljaCBoYXZlIHJlZmVyZW5jZSBjeWNsZXMgd2l0aCB0aGVpciBtb2R1bGUncworICBkaWN0IGFyZSBub3cgY2xlYXJlZCBhZ2Fpbi4gVGhpcyBjYXVzZXMgaXNzdWUgIzcxNDAgdG8gYXBwZWFyIGFnYWluLgorCistIElzc3VlICM5NzM4OiBEb2N1bWVudCBQeUVycl9TZXRTdHJpbmcoKSBhbmQgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKCkKKyAgZW5jb2RpbmdzLgorCistIGFzdC5saXRlcmFsX2V2YWwoKSBjYW4gbm93IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzLiAgSXQgaXMgYWxzbyBhIGxpdHRsZSBtb3JlCisgIGxpYmVyYWwgaW4gd2hhdCBpdCBhY2NlcHRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRoZSBzYWZldHkgb2YgdGhlIGV2YWx1YXRpb24uCisgIEZvciBleGFtcGxlLCAzais0IGFuZCAzKzQrNSBhcmUgYm90aCBhY2NlcHRlZC4KKworLSBJc3N1ZSAjMTAwMDY6IHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXyBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yLiAgQXMgYQorICByZXN1bHQgbWV0YWNsYXNzZXMgY2FuIG5vdyBiZSBBQkNzIChzZWUgIzk1MzMpLgorCistIElzc3VlICM4NjcwOiBjdHlwZXMuY193Y2hhciBzdXBwb3J0cyBub24tQk1QIGNoYXJhY3RlcnMgd2l0aCAzMiBiaXRzIHdjaGFyX3QuCisKKy0gSXNzdWUgIzg2NzA6IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgYW5kIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCkgcmVwbGFjZQorICBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzIGJ5IHNpbmdsZSBub24tQk1QIGNoYXJhY3RlcnMgZm9yIDE2IGJpdHMgUHlfVU5JQ09ERSBhbmQKKyAgMzIgYml0cyB3Y2hhcl90IChlZy4gTGludXggaW4gbmFycm93IGJ1aWxkKS4KKworLSBJc3N1ZSAjMTAwMDM6IEFsbG93IGhhbmRsaW5nIG9mIFNJR0JSRUFLIG9uIFdpbmRvd3MuIEZpeGVzIGEgcmVncmVzc2lvbgorICBpbnRyb2R1Y2VkIGJ5IGlzc3VlICM5MzI0LgorCistIElzc3VlICM5OTc5OiBDcmVhdGUgZnVuY3Rpb24gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKS4KKworLSBJc3N1ZSAjNzM5NzogTWVudGlvbiB0aGF0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkgaXMgcHJvYmFibHkgd2hhdCBzb21lb25lCisgIHJlYWxseSB3YW50cyB0byBiZSB1c2luZyBpbiBfX2ltcG9ydF9fJ3MgZG9jc3RyaW5nLgorCistIElzc3VlICM4NTIxOiBBbGxvdyBDcmVhdGVLZXlFeCwgT3BlbktleUV4LCBhbmQgRGVsZXRlS2V5RXggZnVuY3Rpb25zIG9mIHdpbnJlZworICB0byB1c2UgbmFtZWQgYXJndW1lbnRzLgorCistIElzc3VlICM5OTMwOiBSZW1vdmUgYm9ndXMgc3VidHlwZSBjaGVjayB0aGF0IHdhcyBjYXVzaW5nIChlLmcuKQorICBmbG9hdC5fX3JkaXZfXygyLjAsIDMpIHRvIHJldHVybiBOb3RJbXBsZW1lbnRlZCBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAxLjUuCisKKy0gSXNzdWUgIzk4MDg6IEltcGxlbWVudCBvcy5nZXRsb2dpbiBmb3IgV2luZG93cy4gUGF0Y2ggYnkgSm9uIEFuZ2xpbi4KKworLSBJc3N1ZSAjOTkwMTogRGVzdHJveWluZyB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCkgY2FuIGZhaWwgaWYgc29tZSBvdGhlcgorICB0aHJlYWRzIGFyZSBzdGlsbCBydW5uaW5nLiAgSW5zdGVhZCwgcmVpbml0aWFsaXplIHRoZSBHSUwgb24gYSBzZWNvbmQgY2FsbCB0bworICBQeV9Jbml0aWFsaXplKCkuCisKKy0gQWxsIFN5bnRheEVycm9ycyBub3cgaGF2ZSBhIGNvbHVtbiBvZmZzZXQgYW5kIHRoZXJlZm9yZSBhIGNhcmV0IHdoZW4gdGhlIGVycm9yCisgIGlzIHByaW50ZWQuCisKKy0gSXNzdWUgIzkyNTI6IFB5SW1wb3J0X0ltcG9ydCBubyBsb25nZXIgdXNlcyBhIGZyb21saXN0IGhhY2sgdG8gcmV0dXJuIHRoZQorICBtb2R1bGUgdGhhdCB3YXMgaW1wb3J0ZWQsIGJ1dCBpbnN0ZWFkIGdldHMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzLgorCistIElzc3VlICM5MjEzOiBUaGUgcmFuZ2UgdHlwZV9pdGVtcyBub3cgcHJvdmlkZXMgaW5kZXgoKSBhbmQgY291bnQoKSBtZXRob2RzLCB0bworICBjb25mb3JtIHRvIHRoZSBTZXF1ZW5jZSBBQkMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4gYW5kIERhbmllbCBTdHV0emJhY2guCisKKy0gSXNzdWUgIzc5OTQ6IElzc3VlIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpZiBvYmplY3QuX19mb3JtYXRfXyBpcyBjYWxsZWQKKyAgd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nLiAgVGhpcyBpcyBhbiBlZmZvcnQgdG8gZnV0dXJlLXByb29mIHVzZXIKKyAgY29kZS4gSWYgYSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnQgX19mb3JtYXRfXyBidXQgbGF0ZXIKKyAgYWRkcyBpdHMgb3duIF9fZm9ybWF0X18sIGl0IHdvdWxkIG1vc3QgbGlrZWx5IGJyZWFrIHVzZXIgY29kZSB0aGF0IGhhZAorICBzdXBwbGllZCBhIGZvcm1hdCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byBhIERlcHJlY2F0aW9uV2FyaW5nIGluCisgIFB5dGhvbiAzLjMgYW5kIGl0IHdpbGwgYmUgYW4gZXJyb3IgaW4gUHl0aG9uIDMuNC4KKworLSBJc3N1ZSAjOTgyODogRGVzdHJveSB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCksIHNvIHRoYXQgaXQgZ2V0cyBwcm9wZXJseQorICByZS1jcmVhdGVkIG9uIGEgc3Vic2VxdWVudCBjYWxsIHRvIFB5X0luaXRpYWxpemUoKS4gIFRoZSBwcm9ibGVtIChhIGNyYXNoKQorICB3b3VsZG4ndCBhcHBlYXIgaW4gMy4xIG9yIDIuNyB3aGVyZSB0aGUgR0lMJ3Mgc3RydWN0dXJlIGlzIG1vcmUgdHJpdmlhbC4KKworLSBJc3N1ZSAjOTIxMDogQ29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2N0eXBlLWZ1bmN0aW9ucyB3YXMgcmVtb3ZlZC4gIFVzaW5nIHRoZQorICBmdW5jdGlvbnMgZnJvbSB0aGUgbGliYyBjYXVzZWQgdGhlIG1ldGhvZHMgLnVwcGVyKCkgYW5kIGxvd2VyKCkgdG8gYmVjb21lCisgIGxvY2FsZSBhd2FyZSBhbmQgY3JlYXRlZCBzdWJ0bHkgd3JvbmcgcmVzdWx0cy4KKworLSBJc3N1ZSAjOTczODogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBhbmQgUHlFcnJfRm9ybWF0KCkgcmFpc2UgYW4gZXJyb3Igb24gYQorICBub24tQVNDSUkgYnl0ZSBpbiB0aGUgZm9ybWF0IHN0cmluZy4KKworLSBJc3N1ZSAjNDYxNzogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lIGZyb20gdGhlIGxvY2FsCisgIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkIGJsb2NrLiAgVGhpcyBsaW1pdGF0aW9uCisgIG9mIHRoZSBjb21waWxlciBoYXMgYmVlbiBsaWZ0ZWQsIGFuZCBhIG5ldyBvcGNvZGUgaW50cm9kdWNlZCAoREVMRVRFX0RFUkVGKS4KKworLSBJc3N1ZSAjOTgwNDogYXNjaWkoKSBub3cgYWx3YXlzIHJlcHJlc2VudHMgdW5pY29kZSBzdXJyb2dhdGUgcGFpcnMgYXMgYSBzaW5nbGUKKyAgYGBcVVhYWFhYWFhYYGAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIHByaW50YWJsZSBvciBub3QuCisgIEFsc28sIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IgaGFuZGxlciBub3cgam9pbnMgc3Vycm9nYXRlIHBhaXJzIGludG8gYQorICBzaW5nbGUgY2hhcmFjdGVyIG9uIFVDUy0yIGJ1aWxkcy4KKworLSBJc3N1ZSAjOTc1NzogbWVtb3J5dmlldyBvYmplY3RzIGdldCBhIHJlbGVhc2UoKSBtZXRob2QgdG8gcmVsZWFzZSB0aGUKKyAgdW5kZXJseWluZyBidWZmZXIgKHByZXZpb3VzbHkgdGhpcyB3YXMgb25seSBkb25lIHdoZW4gZGVhbGxvY2F0aW5nIHRoZQorICBtZW1vcnl2aWV3KSwgYW5kIGdhaW4gc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KKworLSBJc3N1ZSAjOTc5NzogcHlzdGF0ZS5jIHdyb25nbHkgYXNzdW1lZCB0aGF0IHplcm8gY291bGRuJ3QgYmUgYSB2YWxpZAorICB0aHJlYWQtbG9jYWwgc3RvcmFnZSBrZXkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjIzNjogZGlzdHV0aWxzJyBta3BhdGggaWdub3JlZCB0aGUgbW9kZSBwYXJhbWV0ZXIuCisKKy0gRml4IHR5cG8gaW4gb25lIHNkaXN0IG9wdGlvbiAobWVkYXRhLWNoZWNrKS4KKworLSBJc3N1ZSAjOTE5OTogRml4IGluY29ycmVjdCB1c2Ugb2YgZGlzdHV0aWxzLmNtZC5Db21tYW5kLmFubm91bmNlLgorCistIElzc3VlICMxNzE4NTc0OiBGaXggb3B0aW9ucyB0aGF0IHdlcmUgc3VwcG9zZWQgdG8gYWNjZXB0IGFyZ3VtZW50cyBidXQgZGlkCisgIG5vdCBpbiBidWlsZF9jbGliLgorCistIElzc3VlICM5NDM3OiBGaXggYnVpbGRpbmcgQyBleHRlbnNpb25zIHdpdGggbm9uLWRlZmF1bHQgTERGTEFHUy4KKworLSBJc3N1ZSAjNDY2MTogZW1haWwgY2FuIG5vdyBwYXJzZSBieXRlcyBpbnB1dCBhbmQgZ2VuZXJhdGUgZWl0aGVyIGNvbnZlcnRlZAorICA3Yml0IG91dHB1dCBvciBieXRlcyBvdXRwdXQuICBFbWFpbCB2ZXJzaW9uIGJ1bXBlZCB0byA1LjEuMC4KKworLSBJc3N1ZSAjMTU4OTogQWRkIHNzbC5tYXRjaF9ob3N0bmFtZSgpLCB0byBoZWxwIGltcGxlbWVudCBzZXJ2ZXIgaWRlbnRpdHkKKyAgdmVyaWZpY2F0aW9uIGZvciBoaWdoZXItbGV2ZWwgcHJvdG9jb2xzLgorCistIElzc3VlICM5NzU5OiBHemlwRmlsZSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhbiBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkCisgIGFmdGVyIHRoZSBmaWxlIGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEplZmZyZXkgRmlua2Vsc3RlaW4uCisKKy0gSXNzdWUgIzkwNDI6IEZpeCBpbnRlcmFjdGlvbiBvZiBjdXN0b20gdHJhbnNsYXRpb24gY2xhc3NlcyBhbmQgY2FjaGluZyBpbgorICBnZXR0ZXh0LgorCistIElzc3VlICM2NzA2OiBhc3luY29yZS5kaXNwYXRjaGVyIG5vdyBwcm92aWRlcyBhIGhhbmRsZV9hY2NlcHRlZCgpIG1ldGhvZAorICByZXR1cm5pbmcgYSAoc29jaywgYWRkcikgcGFpciB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KKyAgZXN0YWJsaXNoZWQgd2l0aCBhIG5ldyByZW1vdGUgZW5kcG9pbnQuICBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgYXMgYQorICByZXBsYWNlbWVudCBmb3Igb2xkIGhhbmRsZV9hY2NlcHQoKSBhbmQgYXZvaWRzIHRoZSB1c2VyIHRvIGNhbGwgYWNjZXB0KCkKKyAgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzkwNjU6IHRhcmZpbGUgbm8gbG9uZ2VyIHVzZXMgInJvb3QiIGFzIHRoZSBkZWZhdWx0IGZvciB0aGUgdW5hbWUgYW5kCisgIGduYW1lIGZpZWxkLgorCistIElzc3VlICM4OTgwOiBGaXhlZCBhIGZhaWx1cmUgaW4gZGlzdHV0aWxzLmNvbW1hbmQgY2hlY2sgdGhhdCB3YXMgc2hhZG93ZWQgYnkKKyAgYW4gZW52aXJvbm1lbnQgdGhhdCBkb2VzIG5vdCBoYXZlIGRvY3V0aWxzLiAgUGF0Y2ggYnkgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzEwNTAyNjg6IHBhcnNlYWRkciBub3cgY29ycmVjdGx5IHF1b3RlcyBkb3VibGUgcXVvdGUgYW5kIGJhY2tzbGFzaAorICBjaGFyYWN0ZXJzIHRoYXQgYXBwZWFyIGluc2lkZSBxdW90ZWQgc3RyaW5ncyBpbiBlbWFpbCBhZGRyZXNzZXMuCisKKy0gSXNzdWUgIzEwMDA0OiBxdW9wcmltaW1lIG5vIGxvbmdlciBnZW5lcmF0ZXMgYSB0cmFjZWJhY2sgd2hlbiBjb25mcm9udGVkIHdpdGgKKyAgaW52YWxpZCBjaGFyYWN0ZXJzIGFmdGVyICc9JyBpbiBhIFEtZW5jb2RlZCB3b3JkLgorCistIElzc3VlICMxNDkxOiBCYXNlSFRUUFNlcnZlciBub3dzIHNlbmQgYSBgYDEwMCBDb250aW51ZWBgIHJlc3BvbnNlIGJlZm9yZQorICBzZW5kaW5nIGEgMjAwIE9LIGZvciB0aGUgRXhwZWN0OiAxMDAtY29udGludWUgcmVxdWVzdCBoZWFkZXIuCisKKy0gSXNzdWUgIzkzNjA6IENsZWFudXAgYW5kIGltcHJvdmVtZW50cyB0byB0aGUgbm50cGxpYiBtb2R1bGUuICBUaGUgQVBJIG5vdworICBjb25mb3JtcyB0byB0aGUgcGhpbG9zb3BoeSBvZiBieXRlcyBhbmQgdW5pY29kZSBzZXBhcmF0aW9uIGluIFB5dGhvbiAzLiAgQQorICB0ZXN0IHN1aXRlIGhhcyBhbHNvIGJlZW4gYWRkZWQuCisKKy0gSXNzdWUgIzk5NjI6IEd6aXBGaWxlIG5vdyBoYXMgdGhlIHBlZWsoKSBtZXRob2QuCisKKy0gSXNzdWUgIzkwOTA6IFdoZW4gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQgZmFpbHMgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4sCisgIHJldHJ5IHRoZSBzZWxlY3QoKSBsb29wIGluc3RlYWQgb2YgYmFpbGluZyBvdXQuICBUaGlzIGlzIGJlY2F1c2Ugc2VsZWN0KCkgY2FuCisgIGluY29ycmVjdGx5IHJlcG9ydCBhIHNvY2tldCBhcyByZWFkeSBmb3IgcmVhZGluZyAoZm9yIGV4YW1wbGUsIGlmIGl0IHJlY2VpdmVkCisgIHNvbWUgZGF0YSB3aXRoIGFuIGludmFsaWQgY2hlY2tzdW0pLgorCistIElzc3VlICMzNjEyOiBBZGRlZCBuZXcgdHlwZXMgdG8gY3R5cGVzLndpbnR5cGVzLiAoQ0hBUiBhbmQgcG9pbnRlcnMpCisKKy0gSXNzdWUgIzk5NTA6IEZpeCBzb2NrZXQuc2VuZGFsbCgpIGNyYXNoIG9yIG1pc2JlaGF2aW91ciB3aGVuIGEgc2lnbmFsIGlzCisgIHJlY2VpdmVkLiAgTm93IHNlbmRhbGwoKSBwcm9wZXJseSBjYWxscyBzaWduYWwgaGFuZGxlcnMgaWYgbmVjZXNzYXJ5LCBhbmQKKyAgcmV0cmllcyBzZW5kaW5nIGlmIHRoZXNlIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgaW5jbHVkaW5nIG9uIHNvY2tldHMgd2l0aCBhCisgIHRpbWVvdXQuCisKKy0gSXNzdWUgIzk5NDc6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVnIGluIHN0b3BMaXN0ZW5pbmcuCisKKy0gSXNzdWUgIzk5NDU6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVncyBpbiBhZGRIYW5kbGVyL3JlbW92ZUhhbmRsZXIuCisKKy0gSXNzdWUgIzk5MzY6IEZpeGVkIGV4ZWN1dGFibGUgbGluZXMnIHNlYXJjaCBpbiB0aGUgdHJhY2UgbW9kdWxlLgorCistIElzc3VlICM5NzkwOiBSZXdvcmsgaW1wb3J0cyBuZWNlc3NhcnkgZm9yIHNhbWVmaWxlIGFuZCBzYW1lb3BlbmZpbGUKKyAgaW4gbnRwYXRoLgorCistIElzc3VlICM5OTI4OiBQcm9wZXJseSBpbml0aWFsaXplIHRoZSB0eXBlcyBleHBvcnRlZCBieSB0aGUgYnoyIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY3NTk1MTogQWxsb3cgR3ppcEZpbGUgdG8gd29yayB3aXRoIHVuc2Vla2FibGUgZmlsZSBvYmplY3RzLiAgUGF0Y2ggYnkKKyAgRmxvcmlhbiBGZXN0aS4KKworLSBMb2dnaW5nOiBBZGRlZCBRdWV1ZUxpc3RlbmVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSBmb3IKKyAgcGVyZm9ybWFuY2UtY3JpdGljYWwgdGhyZWFkcy4KKworLSBJc3N1ZSAjOTkxNjogQWRkIHNvbWUgbWlzc2luZyBlcnJubyBzeW1ib2xzLgorCistIElzc3VlICM5ODc3OiBFeHBvc2Ugc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpCisKKy0gbG9nZ2luZzogQWRkZWQgaGFzSGFuZGxlcnMoKSBtZXRob2QgdG8gTG9nZ2VyIGFuZCBMb2dnZXJBZGFwdGVyLgorCistIElzc3VlICM5OTA4OiBGaXggb3Muc3RhdCgpIG9uIGJ5dGVzIHBhdGhzIHVuZGVyIFdpbmRvd3MgNy4KKworLSBJc3N1ZSAjMjY0MzogbXN5bmMoKSBpcyBub3QgY2FsbGVkIGFueW1vcmUgd2hlbiBkZWFsbG9jYXRpbmcgYW4gb3BlbiBtbWFwCisgIG9iamVjdCwgb25seSBtdW5tYXAoKS4KKworLSBsb2dnaW5nOiBDaGFuZ2VkIExvZ2dlckFkYXB0ZXIgaW1wbGVtZW50YXRpb24gaW50ZXJuYWxseSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8KKyAgc3ViY2xhc3MgaW4gYSB1c2VmdWwgd2F5LgorCistIGxvZ2dpbmc6IGhhc0hhbmRsZXJzIG1ldGhvZCB3YXMgYWRkZWQgdG8gTG9nZ2VyLCBhbmQgaXNFbmFibGVkRm9yLAorICBnZXRFZmZlY3RpdmVMZXZlbCwgaGFzSGFuZGxlcnMgYW5kIHNldExldmVsIHdlcmUgYWRkZWQgdG8gTG9nZ2VyQWRhcHRlci4KKyAgTG9nZ2VyQWRhcHRlciB3YXMgaW50cm9kdWNlZCBpbnRvIHRoZSB1bml0IHRlc3RzIGZvciBsb2dnaW5nLgorCistIElzc3VlICMxNjg2OiBGaXggc3RyaW5nLlRlbXBsYXRlIHdoZW4gb3ZlcnJpZGluZyB0aGUgcGF0dGVybiBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzk4NTQ6IFNvY2tldElPIG9iamVjdHMgbm93IG9ic2VydmUgdGhlIFJhd0lPQmFzZSBpbnRlcmZhY2UgaW4KKyAgbm9uLWJsb2NraW5nIG1vZGU6IHRoZXkgcmV0dXJuIE5vbmUgd2hlbiBhbiBvcGVyYXRpb24gd291bGQgYmxvY2sgKGluc3RlYWQgb2YKKyAgcmFpc2luZyBhbiBleGNlcHRpb24pLgorCistIElzc3VlICMxNzMwMTM2OiBGaXggdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBhIHRrLmZvbnQuRm9udCBhbmQgYW4gb2JqZWN0IG9mCisgIGFub3RoZXIga2luZC4KKworLSBJc3N1ZSAjOTQ0MTogbG9nZ2luZyBoYXMgYmV0dGVyIGNvdmVyYWdlIGZvciByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgorCistIElzc3VlICM5ODY1OiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgaGFzIGEgX19zaXplb2ZfXyBtZXRob2QuCisKKy0gSXNzdWUgIzk4NTQ6IFRoZSBkZWZhdWx0IHJlYWQoKSBpbXBsZW1lbnRhdGlvbiBpbiBpby5SYXdJT0Jhc2Ugbm93IGhhbmRsZXMKKyAgbm9uLWJsb2NraW5nIHJlYWRpbnRvKCkgcmV0dXJuaW5nIE5vbmUgY29ycmVjdGx5LgorCistIElzc3VlICMxNTUyOiBzb2NrZXQuc29ja2V0cGFpcigpIG5vdyByZXR1cm5zIHJlZ3VsYXIgc29ja2V0LnNvY2tldCBvYmplY3RzCisgIHN1cHBvcnRpbmcgdGhlIHdob2xlIHNvY2tldCBBUEkgKHJhdGhlciB0aGFuIHRoZSAicmF3IiBfc29ja2V0LnNvY2tldAorICBvYmplY3RzKS4KKworLSBJc3N1ZSAjOTg1MzogRml4IHRoZSBzaWduYXR1cmUgb2YgU1NMU29ja2V0LnJlY3Zmcm9tKCkgYW5kIFNTTFNvY2tldC5zZW5kdG8oKQorICB0byBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBzb2NrZXQgbWV0aG9kcy4KKworLSBJc3N1ZSAjOTg0MDogQWRkZWQgYSBkZWNvcmF0b3IgdG8gcmVwcmxpYiBmb3Igd3JhcHBpbmcgX19yZXByX18gbWV0aG9kcyB0byBtYWtlCisgIHRoZW0gaGFuZGxlIHJlY3Vyc2l2ZSBjYWxscyB3aXRoaW4gdGhlIHNhbWUgdGhyZWFkLgorCistIGxvZ2dpbmc6IEVuaGFuY2VkIEhUVFBIYW5kbGVyIHdpdGggc2VjdXJlIGFuZCBjcmVkZW50aWFscyBpbml0aWFsaXplcnMuCisKKy0gSXNzdWUgIzc2NzY0NTogU2V0IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgdG8gVHJ1ZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjOTgzNzogVGhlIHJlYWQoKSBtZXRob2Qgb2YgWmlwRXh0RmlsZSBvYmplY3RzIChhcyByZXR1cm5lZCBieQorICBaaXBGaWxlLm9wZW4oKSkgY291bGQgcmV0dXJuIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCisKKy0gSXNzdWUgIzk4MjY6IE9yZGVyZWREaWN0Ll9fcmVwcl9fIGNhbiBub3cgaGFuZGxlIHNlbGYtcmVmZXJlbnRpYWwgdmFsdWVzOgorICBkWyd4J10gPSBkLgorCistIElzc3VlICM5ODI1OiBVc2luZyBfX2RlbF9fIGluIHRoZSBkZWZpbml0aW9uIG9mIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG1hZGUKKyAgaXQgcG9zc2libGUgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBzZWxmLXJlZmVyZW5jaW5nIG9yZGVyZWQgZGljdGlvbmFyaWVzIHdoaWNoCisgIGJlY29tZSBwZXJtYW5lbnRseSB1bmNvbGxlY3RhYmxlIEdDIGdhcmJhZ2UuICBSZWluc3RhdGVkIHRoZSBQeXRob24gMy4xCisgIGFwcHJvYWNoIG9mIHVzaW5nIHdlYWtyZWYgcHJveGllcyBzbyB0aGF0IHJlZmVyZW5jZSBjeWNsZXMgbmV2ZXIgZ2V0IGNyZWF0ZWQKKyAgaW4gdGhlIGZpcnN0IHBsYWNlLgorCistIElzc3VlICM5NTc5LCAjOTU4MDogRml4IG9zLmNvbmZzdHIoKSBmb3IgdmFsdWUgbG9uZ2VyIHRoYW4gMjU1IGJ5dGVzIGFuZAorICBlbmNvZGUgdGhlIHZhbHVlIHdpdGggZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIChpbnN0ZWFkIG9mCisgIHV0Zi04IGluIHN0cmljdCBtb2RlKSAuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjMyOiBSZW1vdmUgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGZ1bmN0aW9uOiB1c2UgUFlUSE9ORlNFTkNPRElORworICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYXQgUHl0aG9uIHN0YXJ0dXAuCisgIHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSBjcmVhdGVzIGluY29uc2lzdGVuY2llcyBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0bworICByZWVuY29kZSBhbGwgZmlsZW5hbWVzIGluIGFsbCBvYmplY3RzLgorCistIElzc3VlICM5NDEwOiBWYXJpb3VzIG9wdGltaXphdGlvbnMgdG8gdGhlIHBpY2tsZSBtb2R1bGUsIGxlYWRpbmcgdG8gc3BlZWR1cHMKKyAgdXAgdG8gNHggKGRlcGVuZGluZyBvbiB0aGUgYmVuY2htYXJrKS4gIE1vc3RseSBwb3J0ZWQgZnJvbSBVbmxhZGVuIFN3YWxsb3c7CisgIGluaXRpYWwgcGF0Y2ggYnkgQWxleGFuZHJlIFZhc3NhbG90dGkuCisKKy0gVGhlIHBwcmludCBtb2R1bGUgbm93IHN1cHBvcnRzIHByaW50aW5nIE9yZGVyZWREaWN0cyBpbiB0aGVpciBnaXZlbiBvcmRlcgorICAoZm9ybWVybHksIGl0IHdvdWxkIHNvcnQgdGhlIGtleXMpLgorCistIExvZ2dpbmc6IEFkZGVkIFF1ZXVlSGFuZGxlciBjbGFzcyB0byBmYWNpbGl0YXRlIGxvZ2dpbmcgdXNhZ2Ugd2l0aAorICBtdWx0aXByb2Nlc3NpbmcuCisKKy0gSXNzdWUgIzk3MDc6IFJld3JpdHRlbiByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhyZWFkaW5nLmxvY2FsIHdoaWNoIGlzCisgIGZyaWVuZGxpZXIgdG93YXJkcyByZWZlcmVuY2UgY3ljbGVzLiAgVGhpcyBjaGFuZ2UgaXMgbm90IG5vcm1hbGx5IHZpc2libGUKKyAgc2luY2UgYW4gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24gKF90aHJlYWQuX2xvY2FsKSBpcyB1c2VkIGluc3RlYWQuCisKKy0gSXNzdWUgIzYzOTQ6IG9zLmdldHBwaWQoKSBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MuICBOb3RlIHRoYXQgaXQgd2lsbAorICBzdGlsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgcHJvY2VzcyBhZnRlciBpdCBoYXMgZXhpdGVkLiAgVGhpcyBwcm9jZXNzCisgIGlkIG1heSBldmVuIGhhdmUgYmVlbiByZXVzZWQgYnkgYW5vdGhlciB1bnJlbGF0ZWQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjOTc5MjogSW4gY2FzZSBvZiBjb25uZWN0aW9uIGZhaWx1cmUsIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIHdvdWxkCisgIHN3YWxsb3cgdGhlIGV4Y2VwdGlvbiBhbmQgcmFpc2UgYSBuZXcgb25lLCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBmZXRjaCB0aGUKKyAgb3JpZ2luYWwgZXJybm8sIG9yIHRvIGZpbHRlciB0aW1lb3V0IGVycm9ycy4gIE5vdyB0aGUgb3JpZ2luYWwgZXJyb3IgaXMKKyAgcmUtcmFpc2VkLgorCistIElzc3VlICM5NzU4OiBXaGVuIGZjbnRsLmlvY3RsKCkgd2FzIGNhbGxlZCB3aXRoIG11dGFibGVfZmxhZyBzZXQgdG8gVHJ1ZSwgYW5kCisgIHRoZSBwYXNzZWQgYnVmZmVyIHdhcyBleGFjdGx5IDEwMjQgYnl0ZXMgbG9uZywgdGhlIGJ1ZmZlciB3b3VsZG4ndCBiZSB1cGRhdGVkCisgIGJhY2sgYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIFVwZGF0ZXMgdG8gdGhlIHJhbmRvbSBtb2R1bGU6CisKKyAgKiBEb2N1bWVudCB3aGljaCBwYXJ0cyBvZiB0aGUgbW9kdWxlIGFyZSBndWFyYW50ZWVkIHRvIHN0YXkgdGhlIHNhbWUgYWNyb3NzCisgICAgdmVyc2lvbnMgYW5kIHdoaWNoIHBhcnRzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZS4KKworICAqIFVwZGF0ZSB0aGUgc2VlZCgpIG1ldGhvZCB0byB1c2UgYWxsIG9mIHRoZSBiaXRzIGluIGEgc3RyaW5nIGluc3RlYWQgb2YganVzdAorICAgIHRoZSBoYXNoIHZhbHVlLiAgVGhpcyBtYWtlcyBiZXR0ZXIgdXNlIG9mIHRoZSBzZWVkIHZhbHVlIGFuZCBhc3N1cmVzIHRoZQorICAgIHNlZWRpbmcgaXMgcGxhdGZvcm0gaW5kZXBlbmRlbnQuICBJc3N1ZSAjNzg4OS4KKworICAqIEltcHJvdmVkIHRoZSByYW5kb20oKS0tPmludGVnZXIgYWxnb3JpdGhtIHVzZWQgaW4gY2hvaWNlKCksIHNodWZmbGUoKSwKKyAgICBzYW1wbGUoKSwgcmFuZHJhbmdlKCksIGFuZCByYW5kaW50KCkuICBGb3JtZXJseSwgaXQgdXNlZCBpbnQobipyYW5kb20oKSkKKyAgICB3aGljaCBoYXMgYSBzbGlnaHQgYmlhcyB3aGVuZXZlciBuIGlzIG5vdCBhIHBvd2VyIG9mIHR3by4gIElzc3VlICM5MDI1LgorCisgICogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBvZiBhcmd1bWVudHMgdG8gcmFuZHJhbmdlKCkuICBJc3N1ZSAjOTM3OS4KKworLSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgc3VwcG9ydHMgYSBuZXcgbWV0aG9kIGZvciByZXBvc2l0aW9uaW5nIGtleXMgdG8KKyAgZWl0aGVyIGVuZC4KKworLSBJc3N1ZSAjOTc1NDogU2ltaWxhcmx5IHRvIGFzc2VydFJhaXNlcyBhbmQgYXNzZXJ0UmFpc2VzUmVnZXhwLCB1bml0dGVzdCB0ZXN0CisgIGNhc2VzIG5vdyBhbHNvIGhhdmUgYXNzZXJ0V2FybnMgYW5kIGFzc2VydFdhcm5zUmVnZXhwIG1ldGhvZHMgdG8gY2hlY2sgdGhhdCBhCisgIGdpdmVuIHdhcm5pbmcgdHlwZSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKKy0gSXNzdWUgIzU1MDY6IEJ5dGVzSU8gb2JqZWN0cyBub3cgaGF2ZSBhIGdldGJ1ZmZlcigpIG1ldGhvZCBleHBvcnRpbmcgYSB2aWV3IG9mCisgIHRoZWlyIGNvbnRlbnRzIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlbS4gIFRoZSB2aWV3IGlzIGJvdGggcmVhZGFibGUgYW5kCisgIHdyaXRhYmxlLgorCistIElzc3VlICM3NTY2OiBJbXBsZW1lbnQgb3MucGF0aC5zYW1lb3BlbmZpbGUgZm9yIFdpbmRvd3MuCisKKy0gSXNzdWUgIzkyOTM6IEkvTyBzdHJlYW1zIG5vdyByYWlzZSBgYGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uYGAgd2hlbiBhbgorICB1bnN1cHBvcnRlZCBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIChmb3IgZXhhbXBsZSwgd3JpdGluZyB0byBhIGZpbGUgb3BlbiBvbmx5CisgIGZvciByZWFkaW5nKS4KKworLSBoYXNobGliIGhhcyB0d28gbmV3IGNvbnN0YW50IGF0dHJpYnV0ZXM6IGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQKKyAgYWxnb3JpdGhtc19hdmFpYWJsZSB0aGF0IHJlc3BlY3RpdmVseSBsaXN0IHRoZSBuYW1lcyBvZiBoYXNoIGFsZ29yaXRobXMKKyAgZ3VhcmFudGVlZCB0byBleGlzdCBpbiBhbGwgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBhbmQgdGhlIG5hbWVzIG9mIGhhc2gKKyAgYWxnb3JpdGhtcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKworLSBBIG5ldyBwYWNrYWdlIGBgY29uY3VycmVudC5mdXR1cmVzYGAgYXMgZGVmaW5lZCBieSBQRVAgMzE0OC4KKworQy1BUEkKKy0tLS0tCisKKy0gQWRkIFB5RXJyX1N5bnRheExvY2F0aW9uRXgsIHdoaWNoIHN1cHBvcnRzIHBhc3NpbmcgYSBjb2x1bW4gb2Zmc2V0LgorCistIElzc3VlICM5ODM0OiBEb24ndCBzZWdmYXVsdCBpbiBQeVNlcXVlbmNlX0dldFNsaWNlLCBQeVNlcXVlbmNlX1NldFNsaWNlLCBvcgorICBQeVNlcXVlbmNlX0RlbFNsaWNlIHdoZW4gdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYW55IG1hcHBpbmcgb3BlcmF0aW9ucworICBkZWZpbmVkLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTE4ODogVGhlIGdkYiBleHRlbnNpb24gbm93IGhhbmRsZXMgY29ycmVjdGx5IG5hcnJvdyAoVUNTMikgYXMgd2VsbCBhcworICB3aWRlIChVQ1M0KSB1bmljb2RlIGJ1aWxkcyBmb3IgYm90aCB0aGUgaG9zdCBpbnRlcnByZXRlciAoZW1iZWRkZWQgaW5zaWRlIGdkYikKKyAgYW5kIHRoZSBpbnRlcnByZXRlciB1bmRlciB0ZXN0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTMwODogQWRkZWQgdGVzdHMgZm9yIGltcG9ydGluZyBlbmNvZGVkIG1vZHVsZXMgdGhhdCBkbyBub3QKKyAgZGVwZW5kIG9uIHNwZWNpZmljIHN0ZGxpYiBtb2R1bGVzIGJlaW5nIGVuY29kZWQgaW4gYSBjZXJ0YWluIHdheS4KKworLSBJc3N1ZSAjMTA1MTogQWRkIGEgc2NyaXB0IChMaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weSkgdG8gZ2VuZXJhdGUgdGhlIGN1c3RvbQorICBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgZmlsZXMgdXNlZCBieSBTU0wtcmVsYXRlZCBjZXJ0cy4KKworLSBJc3N1ZSAjOTk3ODogV2FpdCB1bnRpbCBzdWJwcm9jZXNzIGNvbXBsZXRlcyBpbml0aWFsaXphdGlvbi4gKFdpbjMyS2lsbFRlc3RzCisgIGluIHRlc3Rfb3MpCisKKy0gSXNzdWUgIzcxMTA6IHJlZ3J0ZXN0IG5vdyBzZW5kcyB0ZXN0IGZhaWx1cmUgcmVwb3J0cyBhbmQgc2luZ2xlLWZhaWx1cmUKKyAgdHJhY2ViYWNrcyB0byBzdGRlcnIgcmF0aGVyIHRoYW4gc3Rkb3V0LgorCistIElzc3VlICM5NjI4OiBmaXggcnVudGVzdHMuc2ggLXggb3B0aW9uIHNvIG1vcmUgdGhhbiBvbmUgdGVzdCBjYW4gYmUgZXhjbHVkZWQuCisKKy0gSXNzdWUgIzk4OTk6IEZpeCB0ZXN0X3RraW50ZXIudGVzdF9mb250IG9uIHZhcmlvdXMgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgTmVkCisgIERlaWx5LgorCistIElzc3VlICM5ODk0OiBEbyBub3QgaGFyZGNvZGUgRU5PRU5UIGluIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjOTMxNTogQWRkZWQgdGVzdHMgZm9yIHRoZSB0cmFjZSBtb2R1bGUuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgorCistIElzc3VlICM5MzIzOiBNYWtlIHRlc3QucmVncnRlc3QuX19maWxlX18gYWJzb2x1dGUsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlCisgIGNhc2Ugd2hlbiBydW5uaW5nIHByb2ZpbGUgb3IgdHJhY2UsIGZvciBleGFtcGxlLgorCistIElzc3VlICM5NTY4OiBGaXggdGVzdF91cmxsaWIyX2xvY2FsbmV0IG9uIE9TIFggMTAuMy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwMDYyOiBBbGxvdyBidWlsZGluZyBvbiBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IGhhdmUgc2VtX3RpbWVkd2FpdC4KKworLSBJc3N1ZSAjMTAwNTQ6IFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgdWludHB0cl90IGluIGludHR5cGVzLmguICBQYXRjaCBieSBBa2lyYQorICBLaXRhZGEuCisKKy0gSXNzdWUgIzEwMDU1OiBNYWtlIGpzb24gQzg5LWNvbXBsaWFudCBpbiBVQ1M0IG1vZGUuCisKKy0gSXNzdWUgIzk1NTI6IEF2b2lkIHVubmVjZXNzYXJ5IHJlYnVpbGQgb2YgT3BlblNTTC4gKFdpbmRvd3MpCisKKy0gSXNzdWUgIzE2MzM4NjM6IERvbid0IGlnbm9yZSAkQ0MgdW5kZXIgQUlYLgorCistIElzc3VlICM5ODEwOiBDb21waWxlIGJ6aXAyIHNvdXJjZSBmaWxlcyBpbiBQeXRob24ncyBwcm9qZWN0IGZpbGUgZGlyZWN0bHkuIEl0CisgIHVzZWQgdG8gYmUgYnVpbHQgd2l0aCBiemlwMidzIG1ha2VmaWxlLgorCistIElzc3VlICM5ODQ4OiBTdG9wcGluZyB0cnlpbmcgdG8gYnVpbGQgX3dlYWtyZWYgaW4gc2V0dXAucHkgYXMgaXQgaXMgYSBidWlsdC1pbgorICBtb2R1bGUuCisKKy0gSXNzdWUgIzk4MDY6IHB5dGhvbi1jb25maWcgbm93IGhhcyBhbiBgYC0tZXh0ZW5zaW9uLXN1ZmZpeGBgIG9wdGlvbiB0aGF0CisgIG91dHB1dHMgdGhlIHN1ZmZpeCBmb3IgZHluYW1pYyBsaWJyYXJpZXMgaW5jbHVkaW5nIHRoZSBBQkkgdmVyc2lvbiBuYW1lCisgIGRlZmluZWQgYnkgUEVQIDMxNDkuCisKKy0gSXNzdWUgIzk0MTM0NjogSW1wcm92ZSB0aGUgYnVpbGQgcHJvY2VzcyB1bmRlciBBSVggYW5kIGFsbG93IFB5dGhvbiB0byBiZQorICBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCisKKy0gSXNzdWUgIzQwMjY6IE1ha2UgdGhlIGZjbnRsIGV4dGVuc2lvbiBidWlsZCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuCisgIFNhYmzDqS4KKworLSBJc3N1ZSAjOTcwMTogVGhlIE1hY09TWCBpbnN0YWxsZXIgY2FuIHBhdGNoIHRoZSBzaGVsbCBwcm9maWxlIHRvIGVuc3VyZSB0aGF0CisgIHRoZSAiYmluIiBkaXJlY3RvcnkgaW5zaWRlIHRoZSBmcmFtZXdvcmsgaXMgb24gdGhlIHNoZWxsJ3Mgc2VhcmNoIHBhdGguIFRoaXMKKyAgZmVhdHVyZSBub3cgYWxzbyBzdXBwb3J0cyB0aGUgWlNIIHNoZWxsLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA1LVNlcC0yMDEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTIyNTogUmVtb3ZlIHRoZSBST1RfRk9VUiBhbmQgRFVQX1RPUFggb3Bjb2RlLCB0aGUgbGF0dGVyIHJlcGxhY2VkIGJ5CisgIHRoZSBuZXcgKGFuZCBzaW1wbGVyKSBEVVBfVE9QX1RXTy4gIFBlcmZvcm1hbmNlIGlzbid0IGNoYW5nZWQsIGJ1dCBvdXIKKyAgYnl0ZWNvZGUgaXMgYSBiaXQgc2ltcGxpZmllZC4gIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICM5NzY2OiBSZW5hbWUgcG9vcmx5IG5hbWVkIHZhcmlhYmxlcyBleHBvc2VkIGJ5IF93YXJuaW5ncyB0byBwcmV2ZW50CisgIGNvbmZ1c2lvbiB3aXRoIHRoZSBwcm9wZXIgdmFyaWFibGVzIG5hbWVzIGZyb20gJ3dhcm5pbmdzJyBpdHNlbGYuCisKKy0gSXNzdWUgIzkyMTI6IGRpY3Rfa2V5cyBhbmQgZGljdF9pdGVtcyBub3cgcHJvdmlkZSB0aGUgaXNkaXNqb2ludCgpIG1ldGhvZCwgdG8KKyAgY29uZm9ybSB0byB0aGUgU2V0IEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjOTczNzogRml4IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgc2xpY2Ugb3IgYW4gaXRlbSBmcm9tIGEKKyAgbWVtb3J5dmlldyBvYmplY3QuCisKKy0gSXNzdWUgIzk1NDk6IHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoKSBhbmQgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZygpIGFyZQorICBub3cgcmVtb3ZlZCwgc2luY2UgdGhlaXIgZWZmZWN0IHdhcyBpbmV4aXN0ZW50IGluIDMueCAodGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMKKyAgaGFyZGNvZGVkIHRvIHV0Zi04IGFuZCBjYW5ub3QgYmUgY2hhbmdlZCkuCisKKy0gSXNzdWUgIzc0MTU6IFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgpIG5vdyB1c2VzIHRoZSBuZXcgYnVmZmVyIEFQSQorICBwcm9wZXJseS4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzU1NTM6IFRoZSBQeV9MT0NBTF9JTkxJTkUgbWFjcm8gbm93IHJlc3VsdHMgaW4gaW5saW5pbmcgb24gbW9zdAorICBwbGF0Zm9ybXMuICBQcmV2aW91c2x5LCBpdCBpbmxpbmVkIG9ubHkgd2hlbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMuCisKKy0gSXNzdWUgIzk3MTI6IEZpeCB0b2tlbml6ZSBvbiBpZGVudGlmaWVycyB0aGF0IHN0YXJ0IHdpdGggbm9uLWFzY2lpIG5hbWVzLgorCistIElzc3VlICM5Njg4OiBfX2Jhc2ljc2l6ZV9fIGFuZCBfX2l0ZW1zaXplX18gbXVzdCBiZSBhY2Nlc3NlZCBhcyBQeV9zc2l6ZV90LgorCistIElzc3VlICM5Njg0OiBBZGRlZCBhIGRlZmluaXRpb24gZm9yIFNJWkVPRl9XQ0hBUl9UIHRvIFBDL3B5Y29uZmlnLmgsIHRvIG1hdGNoCisgIHRoZSBweWNvbmZpZy5oIGdlbmVyYXRlZCBieSBjb25maWd1cmUgb24gb3RoZXIgc3lzdGVtcy4KKworLSBJc3N1ZSAjOTY2NjogT25seSBjYXRjaCBBdHRyaWJ1dGVFcnJvciBpbiBoYXNhdHRyKCkuIEFsbCBvdGhlciBleGNlcHRpb25zIHRoYXQKKyAgb2NjdXIgZHVyaW5nIGF0dHJpYnV0ZSBsb29rdXAgYXJlIG5vdyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuCisKKy0gSXNzdWUgIzg2MjI6IEFkZCBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJyaWRlIHRoZQorICBmaWxlc3lzdGVtIGVuY29kaW5nLgorCistIElzc3VlICM1MTI3OiBUaGUgQyBmdW5jdGlvbnMgdGhhdCBhY2Nlc3MgdGhlIFVuaWNvZGUgRGF0YWJhc2Ugbm93IGFjY2VwdCBhbmQKKyAgcmV0dXJuIGNoYXJhY3RlcnMgZnJvbSB0aGUgZnVsbCBVbmljb2RlIHJhbmdlLCBldmVuIG9uIG5hcnJvdyB1bmljb2RlIGJ1aWxkcworICAoUHlfVU5JQ09ERV9UT0xPV0VSLCBQeV9VTklDT0RFX0lTREVDSU1BTCwgYW5kIG90aGVycykuICBBIHZpc2libGUgZGlmZmVyZW5jZQorICBpbiBQeXRob24gaXMgdGhhdCB1bmljb2RlZGF0YS5udW1lcmljKCkgbm93IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWUgZm9yCisgIGxhcmdlIGNvZGUgcG9pbnRzLCBhbmQgcmVwcigpIG1heSBjb25zaWRlciBtb3JlIGNoYXJhY3RlcnMgYXMgcHJpbnRhYmxlLgorCistIElzc3VlICM5NDI1OiBDcmVhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoKSBmdW5jdGlvbiB0byBnZXQgdGhlIGZpbGVuYW1lCisgIGFzIGEgdW5pY29kZSBvYmplY3QsIGluc3RlYWQgb2YgYSBieXRlIHN0cmluZy4gRnVuY3Rpb24gbmVlZGVkIHRvIHN1cHBvcnQKKyAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLiBEZXByZWNhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWUoKSBpbiBmYXZvciBvbiB0aGUgbmV3CisgIGZ1bmN0aW9uLgorCistIElzc3VlICM4MDYzOiBDYWxsIF9QeUdJTFN0YXRlX0luaXQoKSBlYXJsaWVyIGluIFB5X0luaXRpYWxpemVFeCgpLgorCistIElzc3VlICM5NjEyOiBUaGUgc2V0IG9iamVjdCBpcyBub3cgNjQtYml0IGNsZWFuIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgyMDI6IHN5cy5hcmd2WzBdIGlzIG5vdyBzZXQgdG8gJy1tJyBpbnN0ZWFkIG9mICctYycgd2hlbiBzZWFyY2hpbmcgZm9yCisgIHRoZSBtb2R1bGUgZmlsZSB0byBiZSBleGVjdXRlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgb3B0aW9uLgorCistIElzc3VlICM5NTk5OiBDcmVhdGUgUHlTeXNfRm9ybWF0U3Rkb3V0KCkgYW5kIFB5U3lzX0Zvcm1hdFN0ZGVycigpIGZ1bmN0aW9ucyB0bworICB3cml0ZSBhIG1lc3NhZ2UgZm9ybWF0dGVkIGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIHN5cy5zdGRvdXQgYW5kCisgIHN5cy5zdGRlcnIuCisKKy0gSXNzdWUgIzk1NDI6IENyZWF0ZSBQeVVuaWNvZGVfRlNEZWNvZGVyKCkgZnVuY3Rpb24sIGEgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6CisgIGRlY29kZSBieXRlcyBvYmplY3RzIHRvIHVuaWNvZGUgdXNpbmcgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKTsgc3RyCisgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KKworLSBJc3N1ZSAjOTIwMzogQ29tcHV0ZWQgZ290b3MgYXJlIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycworICAod2hpY2ggYXJlIGRldGVjdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0KS4gIFRoZXkgY2FuIHN0aWxsIGJlIGRpc2FibGUKKyAgc2VsZWN0aXZlbHkgYnkgc3BlY2lmeWluZyAtLXdpdGhvdXQtY29tcHV0ZWQtZ290b3MuCisKKy0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeUVycl9XYXJuRm9ybWF0KCkgZnVuY3Rpb24sIHNpbWlsYXIgdG8gUHlFcnJfV2FybkV4KCkgYnV0CisgIHVzZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSB0byBmb3JtYXQgdGhlIHdhcm5pbmcgbWVzc2FnZS4KKworLSBJc3N1ZSAjODUzMDogUHJldmVudCBzdHJpbmdsaWIgZmFzdHNlYXJjaCBmcm9tIHJlYWRpbmcgYmV5b25kIHRoZSBmcm9udCBvZiBhbgorICBhcnJheS4KKworLSBJc3N1ZSAjNTMxOTogUHJpbnQgYW4gZXJyb3IgaWYgZmx1c2hpbmcgc3Rkb3V0IGZhaWxzIGF0IGludGVycHJldGVyIHNodXRkb3duLgorCistIElzc3VlICM5MzM3OiBUaGUgc3RyKCkgb2YgYSBmbG9hdCBvciBjb21wbGV4IG51bWJlciBpcyBub3cgaWRlbnRpY2FsIHRvIGl0cworICByZXByKCkuCisKKy0gSXNzdWUgIzk0MTY6IEZpeCBzb21lIGlzc3VlcyB3aXRoIGNvbXBsZXggZm9ybWF0dGluZyB3aGVyZSB0aGUgb3V0cHV0IHdpdGggbm8KKyAgdHlwZSBzcGVjaWZpZXIgZmFpbGVkIHRvIG1hdGNoIHRoZSBzdHIgb3V0cHV0OgorCisgICAgLSBmb3JtYXQoY29tcGxleCgtMC4wLCAyLjApLCAnLScpIG9taXR0ZWQgdGhlIHJlYWwgcGFydCBmcm9tIHRoZSBvdXRwdXQsCisgICAgLSBmb3JtYXQoY29tcGxleCgwLjAsIDIuMCksICctJykgaW5jbHVkZWQgYSBzaWduIGFuZCBwYXJlbnRoZXNlcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzgwMTM6IHRpbWUuYXNjdGltZSBhbmQgdGltZS5jdGltZSBubyBsb25nZXIgY2FsbCBzeXN0ZW0KKyAgYXNjdGltZSBhbmQgY3RpbWUgZnVuY3Rpb25zLiAgVGhlIHllYXIgcmFuZ2UgZm9yIHRpbWUuYXNjdGltZSBpcyBub3cKKyAgMTkwMCB0aHJvdWdoIG1heGludC4gIFRoZSByYW5nZSBmb3IgdGltZS5jdGltZSBpcyB0aGUgc2FtZSBhcyBmb3IKKyAgdGltZS5sb2NhbHRpbWUuICBUaGUgc3RyaW5nIHByb2R1Y2VkIGJ5IHRoZXNlIGZ1bmN0aW9ucyBpcyBsb25nZXIKKyAgdGhhbiAyNCBjaGFyYWN0ZXJzIHdoZW4geWVhciBpcyBncmVhdGVyIHRoYW4gOTk5OS4KKworLSBJc3N1ZSAjNjYwODogdGltZS5hc2N0aW1lIGlzIG5vdyBjaGVja2luZyBzdHJ1Y3QgdG0gZmllbGRzIGl0cyBpbnB1dAorICBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgc3lzdGVtIGFzY3RpbWUuICBQYXRjaCBieSBNdW5TaWMgSmVvbmcuCisKKy0gSXNzdWUgIzg3MzQ6IEF2b2lkIGNyYXNoIGluIG1zdmNydC5nZXRfb3NmaGFuZGxlKCkgd2hlbiBhbiBpbnZhbGlkIGZpbGUKKyAgZGVzY3JpcHRvciBpcyBwcm92aWRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCistIElzc3VlICM3NzM2OiBSZWxlYXNlIHRoZSBHSUwgYXJvdW5kIGNhbGxzIHRvIG9wZW5kaXIoKSBhbmQgY2xvc2VkaXIoKSBpbiB0aGUKKyAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjNDgzNTogbWFrZSBQeUxvbmdfRnJvbVNvY2tldF90KCkgYW5kIFB5TG9uZ19Bc1NvY2tldF90KCkgcHJpdmF0ZSB0byB0aGUKKyAgc29ja2V0IG1vZHVsZSwgYW5kIGZpeCB0aGUgd2lkdGggb2Ygc29ja2V0IGRlc2NyaXB0b3JzIHRvIGJlIGNvcnJlY3RseQorICBkZXRlY3RlZCB1bmRlciA2NC1iaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMTAyNzIwNjogU3VwcG9ydCBJRE5BIGluIGdldGhvc3RieW5hbWUsIGdldGhvc3RieW5hbWVfZXgsIGdldGFkZHJpbmZvCisgIGFuZCBnZXRob3N0YnlhZGRyLiAgZ2V0bmFtZWluZm8gaXMgbm93IHJlc3RyaWN0ZWQgdG8gbnVtZXJpYyBhZGRyZXNzZXMgYXMKKyAgaW5wdXQuCisKKy0gSXNzdWUgIzkyMTQ6IFNldCBvcGVyYXRpb25zIG9uIGEgS2V5c1ZpZXcgb3IgSXRlbXNWaWV3IGluIGNvbGxlY3Rpb25zIG5vdworICBjb3JyZWN0bHkgcmV0dXJuIGEgc2V0LiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjNTczNzogQWRkIFNvbGFyaXMtc3BlY2lmaWMgbW5lbW9uaWNzIGluIHRoZSBlcnJubyBtb2R1bGUuICBQYXRjaCBieQorICBNYXR0aGV3IEFocmVucy4KKworLSBSZXN0b3JlIEdJTCBpbiBuaXNfY2F0IGluIGNhc2Ugb2YgZXJyb3IuIERlY29kZSBOSVMgZGF0YSB0byBmcyBlbmNvZGluZywgdXNpbmcKKyAgdGhlIHN1cnJvZ2F0ZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM2NjU3NjE6IGBgZnVuY3Rvb2xzLnJlZHVjZSgpYGAgd2lsbCBubyBsb25nZXIgbWFzayBleGNlcHRpb25zIG90aGVyCisgIHRoYW4gYGBUeXBlRXJyb3JgYCByYWlzZWQgYnkgdGhlIGl0ZXJhdG9yIGFyZ3VtZW50LgorCistIElzc3VlICM5NTcwOiBVc2UgUEVQIDM4MyBkZWNvZGluZyBpbiBvcy5ta25vZCBhbmQgb3MubWtmaWZvLgorCistIElzc3VlICM2OTE1OiBVbmRlciBXaW5kb3dzLCBvcy5saXN0ZGlyKCkgZGlkbid0IHJlbGVhc2UgdGhlIEdsb2JhbCBJbnRlcnByZXRlcgorICBMb2NrIGFyb3VuZCBhbGwgc3lzdGVtIGNhbGxzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUnlhbiBLZWxseS4KKworLSBJc3N1ZSAjODUyNDogQWRkIGEgZGV0YWNoKCkgbWV0aG9kIHRvIHNvY2tldCBvYmplY3RzLCBzbyBhcyB0byBwdXQgdGhlIHNvY2tldAorICBpbnRvIHRoZSBjbG9zZWQgc3RhdGUgd2l0aG91dCBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjNDc3ODYzOiBFbWl0IGEgUmVzb3VyY2VXYXJuaW5nIGF0IHNodXRkb3duIGlmIGdjLmdhcmJhZ2UgaXMgbm90IGVtcHR5LgorCistIElzc3VlICM2ODY5OiBGaXggYSByZWZjb3VudCBwcm9ibGVtIGluIHRoZSBfY3R5cGVzIGV4dGVuc2lvbi4KKworLSBJc3N1ZSAjNTUwNDogY3R5cGVzIHNob3VsZCBub3cgd29yayB3aXRoIHN5c3RlbXMgd2hlcmUgbW1hcCBjYW4ndCBiZQorICBQUk9UX1dSSVRFIGFuZCBQUk9UX0VYRUMuCisKKy0gSXNzdWUgIzk1MDc6IE5hbWVkIHR1cGxlIHJlcHIgd2lsbCBub3cgYXV0b21hdGljYWxseSBkaXNwbGF5IHRoZSByaWdodCBuYW1lIGluCisgIGEgdHVwbGUgc3ViY2xhc3MuCisKKy0gSXNzdWUgIzkzMjQ6IEFkZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byBzaWduYWwuc2lnbmFsIG9uIFdpbmRvd3MgaW4gb3JkZXIgdG8KKyAgcHJldmVudCBjcmFzaGVzLgorCistIElzc3VlICM5NTI2OiBSZW1vdmUgc29tZSBvdXRkYXRlZCAoaW50KSBjYXN0cyB0aGF0IHdlcmUgcHJldmVudGluZyB0aGUgYXJyYXkKKyAgbW9kdWxlIGZyb20gd29ya2luZyBjb3JyZWN0bHkgd2l0aCBhcnJheXMgb2YgbW9yZSB0aGFuIDIqKjMxIGVsZW1lbnRzLgorCistIEZpeCBtZW1vcnkgbGVhayBpbiBzc2wuX3NzbC5fdGVzdF9kZWNvZGVfY2VydC4KKworLSBJc3N1ZSAjODA2NTogRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lIG1vZHVsZSAoZnJvbSBmYWlsdXJlIHRvIGZyZWUgdGhlCisgIHJlc3VsdCBvZiBoaXN0b3J5X2dldF9oaXN0b3J5X3N0YXRlKCkpLgorCistIElzc3VlICM5NDUwOiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUucmVwbGFjZV9oaXN0b3J5X2l0ZW0gYW5kCisgIHJlYWRsaW5lLnJlbW92ZV9oaXN0b3J5X2l0ZW0gZm9yIHJlYWRsaW5lIHZlcnNpb24gPj0gNS4wLgorCistIElzc3VlICM4MTA1OiBWYWxpZGF0ZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvIG1tYXAubW1hcCBvbiBXaW5kb3dzLgorCistIElzc3VlICM4MDQ2OiBBZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgYW5kIC5jbG9zZWQgcHJvcGVydHkgdG8gbW1hcAorICBvYmplY3RzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzc0NTE6IEltcHJvdmUgZGVjb2RpbmcgcGVyZm9ybWFuY2Ugb2YgSlNPTiBvYmplY3RzLCBhbmQgcmVkdWNlIHRoZQorICBtZW1vcnkgY29uc3VtcHRpb24gb2Ygc2FpZCBkZWNvZGVkIG9iamVjdHMgd2hlbiB0aGV5IHVzZSB0aGUgc2FtZSBzdHJpbmdzIGFzCisgIGtleXMuCisKKy0gSXNzdWUgIzExMDA1NjI6IEZpeCBkZWVwLWNvcHlpbmcgb2Ygb2JqZWN0cyBkZXJpdmVkIGZyb20gdGhlIGxpc3QgYW5kIGRpY3QKKyAgdHlwZXMuICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5IGFuZCBCasO2cm4gTGluZHF2aXN0LgorCistIElzc3VlICM5NzUzOiBGaXhlZCBzb2NrZXQuZHVwLCB3aGljaCBkaWQgbm90IGFsd2F5cyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLgorCistIElzc3VlICM5NDIxOiBNYWRlIHRoZSBnZXQ8dHlwZT4gbWV0aG9kcyBjb25zaXN0ZW50bHkgYWNjZXB0IHRoZSB2YXJzIGFuZAorICBkZWZhdWx0IGFyZ3VtZW50cyBvbiBhbGwgcGFyc2VyIGNsYXNzZXMuCisKKy0gSXNzdWUgIzcwMDU6IEZpeGVkIG91dHB1dCBvZiBOb25lIHZhbHVlcyBmb3IgUmF3Q29uZmlnUGFyc2VyLndyaXRlIGFuZAorICBDb25maWdQYXJzZXIud3JpdGUuCisKKy0gSXNzdWUgIzg5OTA6IGFycmF5LmZyb21zdHJpbmcoKSBhbmQgYXJyYXkudG9zdHJpbmcoKSBnZXQgcmVuYW1lZCB0bworICBmcm9tYnl0ZXMoKSBhbmQgdG9ieXRlcygpLCByZXNwZWN0aXZlbHksIHRvIGF2b2lkIGNvbmZ1c2lvbi4gIEZ1cnRoZXJtb3JlLAorICBhcnJheS5mcm9tYnl0ZXMoKSwgYXJyYXkuZXh0ZW5kKCkgYXMgd2VsbCBhcyB0aGUgYXJyYXkuYXJyYXkoKSBjb25zdHJ1Y3RvciBub3cKKyAgYWNjZXB0IGJ5dGVhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkgVGhvbWFzIEpvbGxhbnMuCisKKy0gSXNzdWUgIzgwODE2NDogRml4ZWQgc29ja2V0LmNsb3NlIHRvIGF2b2lkIHJlZmVyZW5jZXMgdG8gZ2xvYmFscywgdG8gYXZvaWQKKyAgaXNzdWVzIHdoZW4gc29ja2V0LmNsb3NlIGlzIGNhbGxlZCBmcm9tIGEgX19kZWxfXyBtZXRob2QuCisKKy0gSXNzdWUgIzk3MDY6IHNzbCBtb2R1bGUgcHJvdmlkZXMgYSBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcgaW4gdmFyaW91cworICBjaXJjdW1zdGFuY2VzLgorCistIElzc3VlICMxODY4OiBFbGltaW5hdGUgc3VidGxlIHRpbWluZyBpc3N1ZXMgaW4gdGhyZWFkLWxvY2FsIG9iamVjdHMgYnkgZ2V0dGluZworICByaWQgb2YgdGhlIGNhY2hlZCBjb3B5IG9mIHRocmVhZC1sb2NhbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4KKworLSBJc3N1ZSAjMTUxMjc5MTogSW4gc2V0ZnJhbWVyYXRlKCkgaW4gdGhlIHdhdmUgbW9kdWxlLCBub24taW50ZWdyYWwgZnJhbWUgcmF0ZXMKKyAgYXJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlci4KKworLSBJc3N1ZSAjODc5NzogdXJsbGliMiBkb2VzIGEgcmV0cnkgZm9yIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgaW5zdGVhZCBvZgorICBmYWxsaW5nIGludG8gcmVjdXJzaW9uLgorCistIElzc3VlICMxMTk0MjIyOiBlbWFpbC51dGlscy5wYXJzZWRhdGUgbm93IHJldHVybnMgUkZDMjgyMiBjb21wbGlhbnQgZm91cgorICBjaGFyYWN0ZXIgeWVhcnMgZXZlbiBpZiB0aGUgbWVzc2FnZSBjb250YWlucyBSRkM4MjIgdHdvIGNoYXJhY3RlciB5ZWFycy4KKworLSBJc3N1ZSAjODc1MDogRml4ZWQgTXV0YWJsZVNldCdzIG1ldGhvZHMgdG8gY29ycmVjdGx5IGhhbmRsZSByZWZsZXhpdmUKKyAgb3BlcmF0aW9ucyBvbiBpdHMgc2VsZiwgbmFtZWx5IHggLT0geCBhbmQgeCBePSB4LgorCistIElzc3VlICM5MTI5OiBzbXRwZC5weSBpcyB2dWxuZXJhYmxlIHRvIERvUyBhdHRhY2tzIGRlcml2aW5nIGZyb20gbWlzc2luZyBlcnJvcgorICBoYW5kbGluZyB3aGVuIGFjY2VwdGluZyBhIG5ldyBjb25uZWN0aW9uLgorCistIElzc3VlICM5NjAxOiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudAorICBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyBJSVMgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgc2VydmVyIDIwMDMgcmV0dXJuaW5nIGludmFsaWQKKyAgcmVzcG9uc2UgY29kZXMgZm9yIE1LRCBhbmQgUFdEIGNvbW1hbmRzLgorCistIElzc3VlICM2NTg3NDk6IGFzeW5jb3JlJ3MgY29ubmVjdCgpIG1ldGhvZCBub3cgY29ycmVjdGx5IGludGVycHJldHMgd2luc29jaworICBlcnJvcnMuCisKKy0gSXNzdWUgIzk1MDE6IEZpeGVkIGxvZ2dpbmcgcmVncmVzc2lvbnMgaW4gY2xlYW51cCBjb2RlLgorCistIEZpeCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSB0byBza2lwIG1ldGhvZHMgaW5oZXJpdGVkIGZyb20gb2JqZWN0LgorCistIElzc3VlICM5NTcyOiBJbXBvcnRsaWIgc2hvdWxkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gaWYgYSBkaXJlY3RvcnkgaXQgdGhvdWdodAorICBpdCBuZWVkZWQgdG8gY3JlYXRlIHdhcyBkb25lIGNvbmN1cnJlbnRseSBieSBhbm90aGVyIHByb2Nlc3MuCisKKy0gSXNzdWUgIzk2MTc6IFNpZ25hbHMgcmVjZWl2ZWQgZHVyaW5nIGEgbG93LWxldmVsIHdyaXRlIG9wZXJhdGlvbiBhcmVuJ3QKKyAgaWdub3JlZCBieSB0aGUgYnVmZmVyZWQgSU8gbGF5ZXIgYW55bW9yZS4KKworLSBJc3N1ZSAjODQzNTkwOiBNYWtlICJtYWNpbnRvc2giIGFuIGFsaWFzIHRvIHRoZSAibWFjX3JvbWFuIiBlbmNvZGluZy4KKworLSBDcmVhdGUgb3MuZnNkZWNvZGUoKTogZGVjb2RlIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUKKyAgZXJyb3IgaGFuZGxlciwgb3Igc3RyaWN0IGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMzQ4ODogUHJvdmlkZSBjb252ZW5pZW50IHNob3J0aGFuZCBmdW5jdGlvbnMgYGBnemlwLmNvbXByZXNzYGAgYW5kCisgIGBgZ3ppcC5kZWNvbXByZXNzYGAuICBPcmlnaW5hbCBwYXRjaCBieSBBbmFuZCBCLiBQaWxsYWkuCisKKy0gSXNzdWUgIzg4MDc6IHBvcGxpYi5QT1AzX1NTTCBjbGFzcyBub3cgYWNjZXB0cyBhIGNvbnRleHQgcGFyYW1ldGVyLCB3aGljaCBpcyBhCisgIHNzbC5TU0xDb250ZXh0IG9iamVjdCBhbGxvd2luZyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbiBvcHRpb25zLAorICBjZXJ0aWZpY2F0ZXMgYW5kIHByaXZhdGUga2V5cyBpbnRvIGEgc2luZ2xlIChwb3RlbnRpYWxseSBsb25nLWxpdmVkKQorICBzdHJ1Y3R1cmUuCisKKy0gSXNzdWUgIzg4NjY6IHBhcmFtZXRlcnMgcGFzc2VkIHRvIHNvY2tldC5nZXRhZGRyaW5mbyBjYW4gbm93IGJlIHNwZWNpZmllZCBhcworICBzaW5nbGUga2V5d29yZCBhcmd1bWVudHMuCisKKy0gQWRkcmVzcyBYWFggY29tbWVudCBpbiBkaXMucHkgYnkgaGF2aW5nIGluc3BlY3QucHkgcHJlZmVyIHRvIHJldXNlIHRoZSBkaXMucHkKKyAgY29tcGlsZXIgZmxhZyB2YWx1ZXMgb3ZlciBkZWZpbmluZyBpdHMgb3duLgorCistIElzc3VlICM5MTQ3OiBBZGRlZCBkaXMuY29kZV9pbmZvKCkgd2hpY2ggaXMgc2ltaWxhciB0byBzaG93X2NvZGUoKSBidXQgcmV0dXJucworICBmb3JtYXR0ZWQgY29kZSBpbmZvcm1hdGlvbiBpbiBhIHN0cmluZyByYXRoZXIgdGhhbiBkaXNwbGF5aW5nIG9uIHNjcmVlbi4KKworLSBJc3N1ZSAjOTU2NzogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyBhZGRzIGEgX193cmFwcGVkX18gYXR0cmlidXRlCisgIHBvaW50aW5nIHRvIHRoZSBvcmlnaW5hbCBjYWxsYWJsZS4KKworLSBJc3N1ZSAjMzQ0NTogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyB0b2xlcmF0ZXMgbWlzc2luZyBhdHRyaWJ1dGVzIG9uCisgIHdyYXBwZWQgY2FsbGFibGVzLgorCistIElzc3VlICM1ODY3OiBBZGQgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QgYW5kIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZC4KKworLSBJc3N1ZSAjOTYwNTogcG9zaXguZ2V0bG9naW4oKSBkZWNvZGVzIHRoZSB1c2VybmFtZSB3aXRoIGZpbGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjA0OiBwb3NpeC5pbml0Z3JvdXBzKCkgZW5jb2RlcyB0aGUgdXNlcm5hbWUgdXNpbmcgdGhlIGZpbGV5c3RlbQorICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjAzOiBwb3NpeC50dHluYW1lKCkgYW5kIHBvc2l4LmN0ZXJtaWQoKSBkZWNvZGUgdGhlIHRlcm1pbmFsIG5hbWUKKyAgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLiBQYXRjaCB3cml0dGVuCisgIGJ5IERhdmlkIFdhdHNvbi4KKworLSBJc3N1ZSAjNzY0NzogVGhlIHBvc2l4IG1vZHVsZSBub3cgaGFzIHRoZSBTVF9SRE9OTFkgYW5kIFNUX05PU1VJRCBjb25zdGFudHMsCisgIGZvciB1c2Ugd2l0aCB0aGUgc3RhdHZmcygpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgQWRhbSBKYWNrc29uLgorCistIElzc3VlICM4Njg4OiBNQU5JRkVTVCBmaWxlcyBjcmVhdGVkIGJ5IGRpc3R1dGlscyBub3cgaW5jbHVkZSBhIG1hZ2ljIGNvbW1lbnQKKyAgaW5kaWNhdGluZyB0aGV5IGFyZSBnZW5lcmF0ZWQuICBNYW51YWxseSBtYWludGFpbmVkIE1BTklGRVNUcyB3aXRob3V0IHRoaXMKKyAgbWFya2VyIHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIG9yIHJlbW92ZWQuCisKKy0gSXNzdWUgIzc0Njc6IHdoZW4gcmVhZGluZyBhIGZpbGUgZnJvbSBhIFpJUCBhcmNoaXZlLCBpdHMgQ1JDIGlzIGNoZWNrZWQgYW5kIGEKKyAgQmFkWmlwZmlsZSBlcnJvciBpcyByYWlzZWQgaWYgaXQgZG9lc24ndCBtYXRjaCAoYXMgdXNlZCB0byBiZSB0aGUgY2FzZSBpbgorICBQeXRob24gMi41IGFuZCBlYXJsaWVyKS4KKworLSBJc3N1ZSAjOTU1MDogYSBCdWZmZXJlZFJlYWRlciBjb3VsZCBpc3N1ZSBhbiBhZGRpdGlvbmFsIHJlYWQgd2hlbiB0aGUgb3JpZ2luYWwKKyAgcmVhZCByZXF1ZXN0IGhhZCBiZWVuIHNhdGlzZmllZCwgd2hpY2ggY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IHdoZW4gdGhlCisgIHVuZGVybHlpbmcgcmF3IElPIGNoYW5uZWwgd2FzIGUuZy4gYSBzb2NrZXQuICBSZXBvcnQgYW5kIG9yaWdpbmFsIHBhdGNoIGJ5CisgIEphc29uIFYuIE1pbGxlci4KKworLSBJc3N1ZSAjMzc1NzogdGhyZWFkLWxvY2FsIG9iamVjdHMgbm93IHN1cHBvcnQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbi4KKyAgVGhyZWFkLWxvY2FsIG9iamVjdHMgaW52b2x2ZWQgaW4gcmVmZXJlbmNlIGN5Y2xlcyB3aWxsIGJlIGRlYWxsb2NhdGVkIHRpbWVseQorICBieSB0aGUgY3ljbGljIEdDLCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCistIElzc3VlICM5NDUyOiBBZGQgcmVhZF9maWxlLCByZWFkX3N0cmluZywgYW5kIHJlYWRfZGljdCB0byB0aGUgY29uZmlncGFyc2VyCisgIEFQSTsgbmV3IHNvdXJjZSBhdHRyaWJ1dGUgdG8gZXhjZXB0aW9ucy4KKworLSBJc3N1ZSAjNjIzMTogRml4IHhtbC5ldHJlZS5FbGVtZW50SW5jbHVkZSB0byBpbmNsdWRlIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50CisgIG5vZGUuCisKKy0gSXNzdWUgIzgwNDc6IEZpeCB0aGUgeG1sLmV0cmVlIHNlcmlhbGl6ZXIgdG8gcmV0dXJuIGJ5dGVzIGJ5IGRlZmF1bHQuICBVc2UKKyAgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0byBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLgorCistIElzc3VlICM4MjgwOiB1cmxsaWIyJ3MgUmVxdWVzdCBtZXRob2Qgd2lsbCByZW1vdmUgZnJhZ21lbnRzIGluIHRoZSB1cmwuICBUaGlzCisgIGlzIGhvdyBpdCBpcyBzdXBwb3NlZCB0byB3b3JrLCB3Z2V0IGFuZCBjdXJsIGRvIHRoZSBzYW1lLiAgUHJldmlvdXMgYmVoYXZpb3IKKyAgd2FzIHdyb25nLgorCistIElzc3VlICM2NjgzOiBGb3IgU01UUCBsb2dpbnMgd2Ugbm93IHRyeSBhbGwgYXV0aGVudGljYXRpb24gbWV0aG9kcyBhZHZlcnRpc2VkCisgIGJ5IHRoZSBzZXJ2ZXIuICBNYW55IHNlcnZlcnMgYXJlIGJ1Z2d5IGFuZCBhZHZlcnRpc2UgYXV0aGVudGljYXRpb24gbWV0aG9kcworICB0aGV5IGRvIG5vdCBzdXBwb3J0IGluIHJlYWxpdHkuCisKKy0gSXNzdWUgIzg4MTQ6IGZ1bmN0aW9uIGFubm90YXRpb25zICh0aGUgYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUpIGFyZSBub3cKKyAgaW5jbHVkZWQgaW4gdGhlIHNldCBvZiBhdHRyaWJ1dGVzIGNvcGllZCBieSBkZWZhdWx0IGJ5IGZ1bmN0b29scy53cmFwcyBhbmQKKyAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiAgUGF0Y2ggYnkgVGVycmVuY2UgQ29sZS4KKworLSBJc3N1ZSAjMjk0NDogYXN5bmNvcmUgZG9lc24ndCBoYW5kbGUgY29ubmVjdGlvbiByZWZ1c2VkIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjNDE4NDogUHJpdmF0ZSBhdHRyaWJ1dGVzIG9uIHNtdHBkLlNNVFBDaGFubmVsIG1hZGUgcHVibGljIGFuZCBkZXByZWNhdGUKKyAgdGhlIHByaXZhdGUgYXR0cmlidXRlcy4gQWRkIHRlc3RzIGZvciBzbXRwZCBtb2R1bGUuCisKKy0gSXNzdWUgIzMxOTY6IGVtYWlsIGhlYWRlciBkZWNvZGluZyBpcyBub3cgZm9yZ2l2aW5nIGlmIGFuIFJGQzIwNDcgZW5jb2RlZCB3b3JkCisgIGVuY29kZWQgaW4gYmFzZTY0IGlzIGxhY2tpbmcgcGFkZGluZy4KKworLSBJc3N1ZSAjOTQ0NDogQXJncGFyc2Ugbm93IHVzZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcHJlZml4X2NoYXJzIGFzIHRoZSBvcHRpb24KKyAgY2hhcmFjdGVyIGZvciB0aGUgYWRkZWQgJ2gvaGVscCcgb3B0aW9uIGlmIHByZWZpeF9jaGFycyBkb2VzIG5vdCBjb250YWluIGEKKyAgJy0nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzczNzI6IEZpeCBwc3RhdHMgcmVncmVzc2lvbiB3aGVuIHN0cmlwcGluZyBwYXRocyBmcm9tIHByb2ZpbGUgZGF0YQorICBnZW5lcmF0ZWQgd2l0aCB0aGUgcHJvZmlsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzk0Mjg6IEZpeCBydW5uaW5nIHNjcmlwdHMgd2l0aCB0aGUgcHJvZmlsZS9jUHJvZmlsZSBtb2R1bGVzIGZyb20gdGhlCisgIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjNzc4MTogRml4IHJlc3RyaWN0aW5nIHN0YXRzIGJ5IGVudHJ5IGNvdW50cyBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlCisgIGJyb3dzZXIuCisKKy0gSXNzdWUgIzkyMDk6IERvIG5vdCBjcmFzaCBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIgb24gaW52YWxpZCByZWd1bGFyCisgIGV4cHJlc3Npb25zLgorCistIFVwZGF0ZSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24gaW4gUHkyLjcgKGJhc2VkIG9uCisgIGxpc3RzIGluc3RlYWQgb2Ygd2Vha2x5IHJlZmVyZW5jZWQgTGluayBvYmplY3RzKS4KKworLSBJc3N1ZSAjODM5NzogUmFpc2UgYW4gZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1peCBpdGVyYXRpb24gYW5kIHJlZ3VsYXIgcmVhZHMKKyAgb24gYSBCWjJGaWxlIG9iamVjdCwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGluY29ycmVjdCByZXN1bHRzLgorCistIElzc3VlICM5NDQ4OiBGaXggYSBsZWFrIG9mIE9TIHJlc291cmNlcyAobXV0ZXhlcyBvciBzZW1hcGhvcmVzKSB3aGVuCisgIHJlLWluaXRpYWxpemluZyBhIGJ1ZmZlcmVkIElPIG9iamVjdCBieSBjYWxsaW5nIGl0cyBgYF9faW5pdF9fYGAgbWV0aG9kLgorCistIElzc3VlICMxNzEzOiBGaXggb3MucGF0aC5pc21vdW50KCksIHdoaWNoIHJldHVybmVkIHRydWUgZm9yIHN5bWJvbGljIGxpbmtzCisgIGFjcm9zcyBkZXZpY2VzLgorCistIElzc3VlICM4ODI2OiBQcm9wZXJseSBsb2FkIG9sZC1zdHlsZSAiZXhwaXJlcyIgYXR0cmlidXRlIGluIGh0dHAuY29va2llcy4KKworLSBJc3N1ZSAjMTY5MDEwMzogRml4IGluaXRpYWwgbmFtZXNwYWNlIGZvciBjb2RlIHJ1biB3aXRoIHRyYWNlLm1haW4oKS4KKworLSBJc3N1ZSAjNzM5NTogRml4IHRyYWNlYmFja3MgaW4gcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIuCisKKy0gSXNzdWUgIzgyMzA6IEZpeCBMaWIvdGVzdC9zb3J0cGVyZi5weS4KKworLSBJc3N1ZSAjODYyMDogd2hlbiBhIGNtZC5DbWQoKSBpcyBmZWQgaW5wdXQgdGhhdCByZWFjaGVzIEVPRiB3aXRob3V0IGEgZmluYWwKKyAgbmV3bGluZSwgaXQgbm8gbG9uZ2VyIHRydW5jYXRlcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3QgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM1MTQ2OiBIYW5kbGUgVUlEIFRIUkVBRCBjb21tYW5kIGNvcnJlY3RseSBpbiBpbWFwbGliLgorCistIElzc3VlICM1MTQ3OiBGaXggdGhlIGhlYWRlciBnZW5lcmF0ZWQgZm9yIGNvb2tpZSBmaWxlcyB3cml0dGVuIGJ5CisgIGh0dHAuY29va2llamFyLk1vemlsbGFDb29raWVKYXIuCisKKy0gSXNzdWUgIzgxOTg6IEluIHB5ZG9jLCBvdXRwdXQgYWxsIGhlbHAgdGV4dCB0byB0aGUgY29ycmVjdCBzdHJlYW0gd2hlbgorICBzeXMuc3Rkb3V0IGlzIHJlYXNzaWduZWQuCisKKy0gSXNzdWUgIzc5MDk6IERvIG5vdCB0b3VjaCBwYXRocyB3aXRoIHRoZSBzcGVjaWFsIHByZWZpeGVzIGBgXFwuXGBgIG9yIGBgXFw/XGBgCisgIGluIG50cGF0aC5ub3JtcGF0aCgpLgorCistIElzc3VlICMxMjg2OiBBbGxvdyB1c2luZyBmaWxlaW5wdXQuRmlsZUlucHV0IGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCistIEFkZCBscnVfY2FjaGUoKSBkZWNvcmF0b3IgdG8gdGhlIGZ1bmN0b29scyBtb2R1bGUuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIEZpeCBgYFRvb2xzL3NjcmlwdHMvY2hlY2tweWMucHlgYCBhZnRlciBQRVAgMzE0Ny4KKworLSBJc3N1ZSAjODg2NzogRml4IGBgVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weWBgIHRvIHdvcmsgd2l0aCBmaWxlcyBjb250YWluaW5nCisgIG5vbi1BU0NJSSBjb250ZW50LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTYwMTogUHJvdmlkZSBhIHRlc3QgY2FzZSBmb3IgZnRwbGliLnBhcnNlMjU3LgorCistIElzc3VlICM4ODU3OiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8uCisKKy0gSXNzdWUgIzc1NjQ6IFNraXAgdGVzdF9pb2N0bCBpZiBhbm90aGVyIHByb2Nlc3MgaXMgYXR0YWNoZWQgdG8gL2Rldi90dHkuCisKKy0gSXNzdWUgIzg0MzM6IEZpeCB0ZXN0X2N1cnNlcyBmYWlsdXJlIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbmN1cnNlcy4KKworLSBJc3N1ZSAjOTQ5NjogUHJvdmlkZSBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBybGNvbXBsZXRlciBtb2R1bGUuICBQYXRjaCBieQorICBNaWNoZWxlIE9ycsO5LgorCistIElzc3VlICM4Njg3OiBwcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3Igc2NoZWQucHkgbW9kdWxlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTMwMzQzNDogR2VuZXJhdGUgWklQIGZpbGUgY29udGFpbmluZyBhbGwgUERCcy4KKworLSBJc3N1ZSAjOTE5MzogUEVQIDMxNDkgaXMgYWNjZXB0ZWQuCisKKy0gSXNzdWUgIzMxMDE6IEhlbHBlciBmdW5jdGlvbnMgX2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfYWRkX29uZV90b19pbmRleF9GKCkKKyAgYmVjb21lIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoKSBhbmQgX1B5X2FkZF9vbmVfdG9faW5kZXhfRigpLCByZXNwZWN0aXZlbHkuCisKKy0gSXNzdWUgIzk3MDA6IGRlZmluZSBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTIHVuZGVyIEFJWCA2LnguICBQYXRjaCBieQorICBTw6liYXN0aWVuIFNhYmzDqS4KKworLSBEb24ndCBydW4gcGdlbiB0d2ljZSB3aGVuIHVzaW5nIG1ha2UgLWouCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtQXVnLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM4OTkxOiBjb252ZXJ0YnVmZmVyKCkgcmVqZWN0cyBkaXNjb250aWdpb3VzIGJ1ZmZlcnMuCisKKy0gSXNzdWUgIzc2MTY6IEZpeCBjb3B5aW5nIG9mIG92ZXJsYXBwaW5nIG1lbW9yeXZpZXcgc2xpY2VzIHdpdGggdGhlIEludGVsCisgIGNvbXBpbGVyLgorCistIElzc3VlICM4NDEzOiBzdHJ1Y3RzZXF1ZW5jZSBub3cgc3ViY2xhc3NlcyB0dXBsZS4KKworLSBJc3N1ZSAjODI3MTogZHVyaW5nIHRoZSBkZWNvZGluZyBvZiBhbiBpbnZhbGlkIFVURi04IGJ5dGUgc2VxdWVuY2UsIG9ubHkgdGhlCisgIHN0YXJ0IGJ5dGUgYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZShzKSBhcmUgbm93IGNvbnNpZGVyZWQgaW52YWxpZCwgaW5zdGVhZCBvZgorICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCBieSB0aGUgc3RhcnQgYnl0ZS4gIEUuZy46CisgICdceGYxXHg4MEFCJy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKSBub3cgcmV0dXJucyB1J1x1ZmZmZEFCJyBhbmQgcmVwbGFjZXMKKyAgd2l0aCBVK0ZGRkQgb25seSB0aGUgc3RhcnQgYnl0ZSAoJ1x4ZjEnKSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlICgnXHg4MCcpCisgIGV2ZW4gaWYgJ1x4ZjEnIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgNC1ieXRlcyBzZXF1ZW5jZS4gIFByZXZpb3VzIHZlcnNpb25zCisgIHJldHVybmVkIGEgc2luZ2xlIHUnXHVmZmZkJy4KKworLSBJc3N1ZSAjOTAxMTogQSBuZWdhdGVkIGltYWdpbmFyeSBsaXRlcmFsIChlLmcuLCAiLTdqIikgbm93IGhhcyByZWFsIHBhcnQgLTAuMAorICByYXRoZXIgdGhhbiAwLjAuICBTbyAiLTdqIiBpcyBub3cgZXhhY3RseSBlcXVpdmFsZW50IHRvICItKDdqKSIuCisKKy0gQmUgbW9yZSBzcGVjaWZpYyBpbiBlcnJvciBtZXNzYWdlcyBhYm91dCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjODk0OTogInoiIGZvcm1hdCBvZiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgZG9lc24ndCBhY2NlcHQgYnl0ZXMKKyAgb2JqZWN0cywgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2NTQzOiBXcml0ZSB0aGUgdHJhY2ViYWNrIGluIHRoZSB0ZXJtaW5hbCBlbmNvZGluZyBpbnN0ZWFkIG9mIHV0Zi04LgorICBGaXggdGhlIGVuY29kaW5nIG9mIHRoZSBtb2R1bGVzIGZpbGVuYW1lLiAgUGF0Y2ggd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdAorICBkJ0FyYy4KKworLSBJc3N1ZSAjOTAxMTogUmVtb3ZlIGJ1Z2d5IGFuZCB1bm5lY2Vzc2FyeSAoaW4gMy54KSBTVC0+QVNUIGNvbXBpbGF0aW9uIGNvZGUKKyAgZGVhbGluZyB3aXRoIHVuYXJ5IG1pbnVzIGFwcGxpZWQgdG8gYSBjb25zdGFudC4gIFRoZSByZW1vdmVkIGNvZGUgd2FzIG11dGF0aW5nCisgIHRoZSBTVCwgY2F1c2luZyBhIHNlY29uZCBjb21waWxhdGlvbiB0byBmYWlsLgorCistIElzc3VlICM4NTA5OTc6IG1iY3MgZW5jb2RpbmcgKFdpbmRvd3Mgb25seSkgaGFuZGxlcyBlcnJvcnMgYXJndW1lbnQ6IHN0cmljdAorICBtb2RlIHJhaXNlcyB1bmljb2RlIGVycm9ycy4gIFRoZSBlbmNvZGVyIG9ubHkgc3VwcG9ydHMgInN0cmljdCIgYW5kICJyZXBsYWNlIgorICBlcnJvciBoYW5kbGVycywgdGhlIGRlY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgImlnbm9yZSIgZXJyb3IKKyAgaGFuZGxlcnMuICBQYXRjaCB3cml0dGVuIGJ5IE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjODg1MDogUmVtb3ZlICJ3IiBhbmQgIncjIiBmb3JtYXRzIGZyb20gUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UKKyAgIncqIiBmb3JtYXQgaW5zdGVhZC4gQWRkIHRlc3RzIGZvciAidyoiIGZvcm1hdC4KKworLSBJc3N1ZSAjODU5MjogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGEgVHlwZUVycm9yIGZvciAieSIsICJ1IiBhbmQgIloiCisgIGZvcm1hdHMgaWYgdGhlIHN0cmluZyBjb250YWlucyBhIG51bGwgYnl0ZS9jaGFyYWN0ZXIuICBXcml0ZSB1bml0IHRlc3RzIGZvcgorICBzdHJpbmcgZm9ybWF0cy4KKworLSBJc3N1ZSAjNzQ5MDogVG8gZmFjaWxpdGF0ZSBzaGFyaW5nIG9mIGRvY3Rlc3RzIGJldHdlZW4gMi54IGFuZCAzLnggdGVzdAorICBzdWl0ZXMsIHRoZSBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCBkaXJlY3RpdmUgbm93IGFsc28gaWdub3JlcyB0aGUgbW9kdWxlCisgIGxvY2F0aW9uIG9mIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorCistIElzc3VlICM4OTY5OiBPbiBXaW5kb3dzLCB1c2UgbWJjcyBjb2RlYyBpbiBzdHJpY3QgbW9kZSB0byBlbmNvZGUgYW5kIGRlY29kZQorICBmaWxlbmFtZXMgYW5kIGVuYWJsZSBvcy5mc2VuY29kZSgpLgorCistIElzc3VlICM5MDU4OiBSZW1vdmUgYXNzZXJ0aW9ucyBhYm91dCBJTlRfTUFYIGluIFVuaWNvZGVEZWNvZGVFcnJvci4KKworLSBJc3N1ZSAjODk0MTogRGVjb2RpbmcgYmlnIGVuZGlhbiBVVEYtMzIgZGF0YSBpbiBVQ1MtMiBidWlsZHMgY291bGQgY3Jhc2ggdGhlCisgIGludGVycHJldGVyIHdpdGggY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKGhpZ2hlciB0aGFuCisgIDB4MTAwMDApLgorCistIElzc3VlICM4OTUwOiAoU2VlIGFsc28gaXNzdWUgIzUwODApLiAgUHlfQXJnUGFyc2UqKCkgZnVuY3Rpb25zIG5vdyByYWlzZQorICBUeXBlRXJyb3IgaW5zdGVhZCBvZiBnaXZpbmcgYSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhIGZsb2F0IGlzIHBhcnNlZCB1c2luZworICB0aGUgJ0wnIGNvZGUgKGZvciBsb25nIGxvbmcpLiAgKEFsbCBvdGhlciBpbnRlZ2VyIGNvZGVzIGFscmVhZHkgcmFpc2UKKyAgVHlwZUVycm9yIGluIHRoaXMgY2FzZS4pCisKKy0gSXNzdWUgIzg5MjI6IE5vcm1hbGl6ZSB0aGUgZW5jb2RpbmcgbmFtZSBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgdG8KKyAgZW5hYmxlIHNob3J0Y3V0cyBmb3IgdXBwZXIgY2FzZSBlbmNvZGluZyBuYW1lLiBBZGQgYWxzbyBhIHNob3J0Y3V0IGZvcgorICAiaXNvLTg4NTktMSIgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGFuZCBQeVVuaWNvZGVfRGVjb2RlKCkuCisKKy0gSXNzdWUgIzg4Mzg6IFJlbW92ZSBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBmdW5jdGlvbi4gIFRoZSBidWZmZXIgcHJvdG9jb2wKKyAgZG9lc24ndCBzdXBwb3J0ICJjaGFyIGJ1ZmZlciIgYW55bW9yZSBpbiBQeXRob24gMy4KKworLSBJc3N1ZSAjODMzOTogUmVtb3ZlICJ0IyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucywgdXNlICJzIyIgb3IgInMqIgorICBpbnN0ZWFkLiAgY29kZWNzLmNoYXJidWZmZXJfZW5jb2RlKCkgbm93IGFjY2VwdHMgbW9kaWZpYWJsZSBidWZmZXIgb2JqZWN0cworICBsaWtlIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjODgzNzogUmVtb3ZlICJPPyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucy4gIFRoZSBmb3JtYXQgaXMgbm8KKyAgdXNlZCBhbnltb3JlIGFuZCBpdCB3YXMgbmV2ZXIgZG9jdW1lbnRlZC4KKworLSBJbiBzdHIuZm9ybWF0KCksIHJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGluZGV4ZXMgdG8gYXJndW1lbnRzIGFyZSB0b28gbGFyZ2UuCisKKy0gSXNzdWUgIzI4NDQ6IE1ha2UgaW50KCc0MicsIG4pIGNvbnNpc3RlbnRseSByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkCisgIGludGVnZXJzIG4gKGluY2x1ZGluZyBuID0gLTkwOSkuCisKKy0gSXNzdWUgIzgxODg6IEludHJvZHVjZSBhIG5ldyBzY2hlbWUgZm9yIGNvbXB1dGluZyBoYXNoZXMgb2YgbnVtYmVycyAoaW5zdGFuY2VzCisgIG9mIGludCwgZmxvYXQsIGNvbXBsZXgsIGRlY2ltYWwuRGVjaW1hbCBhbmQgZnJhY3Rpb25zLkZyYWN0aW9uKSB0aGF0IG1ha2VzIGl0CisgIGVhc3kgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGhhc2goeCkgPT0gaGFzaCh5KSB3aGVuZXZlciB4IGFuZCB5IGhhdmUKKyAgZXF1YWwgdmFsdWUuCisKKy0gSXNzdWUgIzg3NDg6IEZpeCB0d28gaXNzdWVzIHdpdGggY29tcGFyaXNvbnMgYmV0d2VlbiBjb21wbGV4IGFuZCBpbnRlZ2VyCisgIG9iamVjdHMuICAoMSkgVGhlIGNvbXBhcmlzb24gY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIFRydWUgaW4gc29tZSBjYXNlcworICAoMioqNTMrMSA9PSBjb21wbGV4KDIqKjUzKSA9PSAyKio1MyksIGJyZWFraW5nIHRyYW5zaXRpdml0eSBvZiBlcXVhbGl0eS4KKyAgKDIpIFRoZSBjb21wYXJpc29uIHJhaXNlZCBhbiBPdmVyZmxvd0Vycm9yIGZvciBsYXJnZSBpbnRlZ2VycywgbGVhZGluZyB0bworICB1bnByZWRpY3RhYmxlIGV4Y2VwdGlvbnMgd2hlbiBjb21iaW5pbmcgaW50ZWdlcnMgYW5kIGNvbXBsZXggb2JqZWN0cyBpbiBzZXRzCisgIG9yIGRpY3RzLgorCistIElzc3VlICM4NzY2OiBJbml0aWFsaXplIF93YXJuaW5ncyBtb2R1bGUgYmVmb3JlIGltcG9ydGluZyB0aGUgZmlyc3QgbW9kdWxlLgorICBGaXggYSBjcmFzaCBpZiBhbiBlbXB0eSBkaXJlY3RvcnkgY2FsbGVkICJlbmNvZGluZ3MiIGV4aXN0cyBpbiBzeXMucGF0aC4KKworLSBJc3N1ZSAjODU4OTogRGVjb2RlIFBZVEhPTldBUk5JTkdTIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlIGZpbGUgc3lzdGVtCisgIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgdG8KKyAgYmUgY29uc2lzdGVudCB3aXRoIG9zLmVudmlyb24uICBBZGQgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUoKSBmdW5jdGlvbi4KKworLSBQeU9iamVjdF9EdW1wKCkgZW5jb2RlcyB1bmljb2RlIG9iamVjdHMgdG8gdXRmOCB3aXRoIGJhY2tzbGFzaHJlcGxhY2UgKGluc3RlYWQKKyAgb2Ygc3RyaWN0KSBlcnJvciBoYW5kbGVyIHRvIGVzY2FwZSBzdXJyb2dhdGVzLgorCistIElzc3VlICM4NzE1OiBDcmVhdGUgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpIGZ1bmN0aW9uOiBFbmNvZGUgYSBVbmljb2RlCisgIG9iamVjdCB0byBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIHdpdGggdGhlICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yCisgIGhhbmRsZXIsIGFuZCByZXR1cm4gYnl0ZXMuICBJZiBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzIG5vdCBzZXQsIGZhbGwKKyAgYmFjayB0byBVVEYtOC4KKworLSBFbmFibGUgc2hvcnRjdXRzIGZvciBjb21tb24gZW5jb2RpbmdzIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBmb3IgYW55CisgIGVycm9yIGhhbmRsZXIsIG5vdCBvbmx5IHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgKHN0cmljdCkuCisKKy0gSXNzdWUgIzg2MTA6IExvYWQgZmlsZSBzeXN0ZW0gY29kZWMgYXQgc3RhcnR1cCwgYW5kIGRpc3BsYXkgYSBmYXRhbCBlcnJvciBvbgorICBmYWlsdXJlLiAgU2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyB0byB1dGYtOCAoaW5zdGVhZCBvZiBOb25lKSBpZiBnZXR0aW5nCisgIHRoZSBsb2NhbGUgZW5jb2RpbmcgZmFpbGVkLCBvciBpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBmdW5jdGlvbiBpcyBtaXNzaW5nLgorCistIFB5RmlsZV9Gcm9tRmQoKSB1c2VzIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpbnN0ZWFkIG9mCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCkgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZSBmaWxlbmFtZSBhbmQgdXNlIHRoZSByaWdodAorICBlbmNvZGluZy4KKworLSBJc3N1ZSAjNzUwNzogUXVvdGUgIiEiIGluIHBpcGVzLnF1b3RlKCk7IGl0IGlzIHNwZWNpYWwgdG8gc29tZSBzaGVsbHMuCisKKy0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKSB1c2VzIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NDE5OiBQcmV2ZW50IHRoZSBkaWN0IGNvbnN0cnVjdG9yIGZyb20gYWNjZXB0aW5nIG5vbi1zdHJpbmcga2V5d29yZAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzgxMjQ6IFB5U3lzX1dyaXRlU3Rkb3V0KCkgYW5kIFB5U3lzX1dyaXRlU3RkZXJyKCkgZG9uJ3QgZXhlY3V0ZQorICBpbmRpcmVjdGx5IFB5dGhvbiBzaWduYWwgaGFuZGxlcnMgYW55bW9yZSBiZWNhdXNlIG15d3JpdGUoKSBpZ25vcmVzIGV4Y2VwdGlvbnMKKyAgKEtleWJvYXJkSW50ZXJydXB0KS4KKworLSBJc3N1ZSAjODA5MjogRml4IFB5VW5pY29kZV9FbmNvZGVVVEY4KCkgdG8gc3VwcG9ydCBlcnJvciBoYW5kbGVyIHByb2R1Y2luZworICB1bmljb2RlIHN0cmluZyAoZWcuIGJhY2tzbGFzaHJlcGxhY2UpLgorCistIElzc3VlICM4NDg1OiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKSBkb2Vzbid0IGFjY2VwdCBieXRlZWFycmF5IG9iamVjdHMKKyAgYW55bW9yZSwgeW91IGhhdmUgdG8gY29udmVydCB5b3VyIGJ5dGVhcnJheSBmaWxlbmFtZXMgdG8gYnl0ZXMuCisKKy0gSXNzdWUgIzczMzI6IFJlbW92ZSB0aGUgMTZLQiBzdGFjay1iYXNlZCBidWZmZXIgaW4KKyAgUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUsIHdoaWNoIGRvZXNuJ3QgYnJpbmcgYW55IG5vdGljZWFibGUgYmVuZWZpdAorICBjb21wYXJlZCB0byB0aGUgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiBmYWxsYmFjay4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzCisgIE5hdGFsaS4KKworLSBJc3N1ZSAjODQxNzogUmFpc2UgYW4gT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGludGVnZXIgbGFyZ2VyIHRoYW4gc3lzLm1heHNpemUgaXMKKyAgcGFzc2VkIHRvIGJ5dGVzIG9yIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjNzMwMTogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlICRQWVRIT05XQVJOSU5HUy4KKworLSBJc3N1ZSAjODMyOTogRG9uJ3QgcmV0dXJuIHRoZSBzYW1lIGxpc3RzIGZyb20gc2VsZWN0LnNlbGVjdCB3aGVuIG5vIGZkcyBhcmUKKyAgY2hhbmdlZC4KKworLSBJc3N1ZSAjODI1OTogMUwgPDwgKDIqKjMxKSBubyBsb25nZXIgcHJvZHVjZXMgYW4gJ291dHJhZ2VvdXMgc2hpZnQgZXJyb3InIG9uCisgIDY0LWJpdCBtYWNoaW5lcy4gIFRoZSBzaGlmdCBjb3VudCBmb3IgZWl0aGVyIGxlZnQgb3IgcmlnaHQgc2hpZnQgaXMgcGVybWl0dGVkCisgIHRvIGJlIHVwIHRvIHN5cy5tYXhzaXplLgorCistIEVuc3VyZSB0aGF0IHRva2VuaXphdGlvbiBvZiBpZGVudGlmaWVycyBpcyBub3QgYWZmZWN0ZWQgYnkgbG9jYWxlLgorCistIElzc3VlICMxMjIyNTg1OiBBZGRlZCBMRENYWFNIQVJFRCBmb3IgQysrIHN1cHBvcnQuIFBhdGNoIGJ5IEFyZnJldmVyLgorCistIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIFRfU1RSSU5HX0lOUExBQ0Ugc3RydWN0IG1lbWJlci4KKworLSBJc3N1ZSAjODIxMTogU2F2ZS9yZXN0b3JlIENGTEFHUyBhcm91bmQgQUNfUFJPR19DQyBpbiBjb25maWd1cmUuaW4sIGluIGNhc2UgaXQKKyAgaXMgc2V0LgorCistIElzc3VlICM4MjI2OiBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgTG9va3VwRXJyb3IgaWYgdGhlIGVuY29kaW5nCisgIGlzIHVua25vd24uCisKKy0gSXNzdWUgIzE1ODM4NjM6IEEgc3RyIHN1YmNsYXNzIGNhbiBub3cgb3ZlcnJpZGUgdGhlIF9fc3RyX18gbWV0aG9kLgorCistIElzc3VlICM4MDE0OiBTZXR0aW5nIGEgVF9VSU5UIG9yIFRfUFlTU0laRVQgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aXRoCisgIFB5TWVtYmVyRGVmcyBjb3VsZCBwcm9kdWNlIGFuIGludGVybmFsIGVycm9yOyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZC4KKworLSBJc3N1ZSAjNzg0NTogUmljaCBjb21wYXJpc29uIG1ldGhvZHMgb24gdGhlIGNvbXBsZXggdHlwZSBub3cgcmV0dXJuCisgIE5vdEltcGxlbWVudGVkIHJhdGhlciB0aGFuIHJhaXNpbmcgYSBUeXBlRXJyb3Igd2hlbiBjb21wYXJpbmcgd2l0aCBhbgorICBpbmNvbXBhdGlibGUgdHlwZTsgdGhpcyBhbGxvd3MgdXNlci1kZWZpbmVkIGNsYXNzZXMgdG8gaW1wbGVtZW50IHRoZWlyIG93bgorICBjb21wYXJpc29ucyB3aXRoIGNvbXBsZXguCisKKy0gSXNzdWUgIzMxMzc6IERvbid0IGlnbm9yZSBlcnJvcnMgYXQgc3RhcnR1cCwgZXNwZWNpYWxseSBhIGtleWJvYXJkIGludGVycnVwdAorICAoU0lHSU5UKS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGltcG9ydGluZyB0aGUgc2l0ZSBtb2R1bGUsIHRoZSBlcnJvciBpcworICBwcmludGVkIGFuZCBQeXRob24gZXhpdHMuIEluaXRpYWxpemUgdGhlIEdJTCBiZWZvcmUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZS4KKworLSBJc3N1ZSAjNzE3MzogR2VuZXJhdG9yIGZpbmFsaXphdGlvbiBjb3VsZCBpbnZhbGlkYXRlIHN5cy5leGNfaW5mbygpLgorCistIElzc3VlICM3NTQ0OiBQcmVhbGxvY2F0ZSB0aHJlYWQgbWVtb3J5IGJlZm9yZSBjcmVhdGluZyB0aGUgdGhyZWFkIHRvIGF2b2lkIGEKKyAgZmF0YWwgZXJyb3IgaW4gbG93IG1lbW9yeSBjb25kaXRpb24uCisKKy0gSXNzdWUgIzc4MjA6IFRoZSBwYXJzZXIgdG9rZW5pemVyIHJlc3RvcmVzIGFsbCBieXRlcyBpbiB0aGUgcmlnaHQgaWYgdGhlIEJPTQorICBjaGVjayBmYWlscy4KKworLSBIYW5kbGUgZXJyb3JzIGZyb20gbG9va2luZyB1cCBfX3ByZXBhcmVfXyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzU5Mzk6IEFkZCBhZGRpdGlvbmFsIHJ1bnRpbWUgY2hlY2tpbmcgdG8gZW5zdXJlIGEgdmFsaWQgY2Fwc3VsZSBpbgorICBNb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYy4KKworLSBJc3N1ZSAjNzMwOTogRml4IHVuY2hlY2tlZCBhdHRyaWJ1dGUgYWNjZXNzIHdoZW4gY29udmVydGluZworICBVbmljb2RlRW5jb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgYW5kIFVuaWNvZGVUcmFuc2xhdGVFcnJvciB0byBzdHJpbmdzLgorCistIElzc3VlICM2OTAyOiBGaXggcHJvYmxlbSB3aXRoIGJ1aWx0LWluIHR5cGVzIGZvcm1hdCBpbmNvcnJlY3RseSB3aXRoIDAKKyAgcGFkZGluZy4KKworLSBJc3N1ZSAjNzk4ODogRml4IGRlZmF1bHQgYWxpZ25tZW50IHRvIGJlIHJpZ2h0IGFsaWduZWQgZm9yIGNvbXBsZXguX19mb3JtYXRfXy4KKyAgTm93IGl0IG1hdGNoZXMgb3RoZXIgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjNTk4ODogUmVtb3ZlIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIFB5T1NfYXNjaWlfZm9ybWF0ZCwKKyAgUHlPU19hc2NpaV9zdHJ0b2QsIGFuZCBQeU9TX2FzY2lpX2F0b2YuICBVc2UgUHlPU19kb3VibGVfdG9fc3RyaW5nIGFuZAorICBQeU9TX3N0cmluZ190b19kb3VibGUgaW5zdGVhZC4gIFNlZSBpc3N1ZSAjNTgzNSBmb3IgdGhlIG9yaWdpbmFsIGRlcHJlY2F0aW9ucy4KKworLSBJc3N1ZSAjNzM4NTogRml4IGEgY3Jhc2ggaW4gYE1lbW9yeVZpZXdfRnJvbU9iamVjdGAgd2hlbiBgUHlPYmplY3RfR2V0QnVmZmVyYAorICBmYWlscy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLSBJc3N1ZSAjNzc4ODogRml4IGFuIGludGVycHJldGVyIGNyYXNoIHByb2R1Y2VkIGJ5IGRlbGV0aW5nIGEgbGlzdCBzbGljZSB3aXRoCisgIHZlcnkgbGFyZ2Ugc3RlcCB2YWx1ZS4KKworLSBJc3N1ZSAjNzc2NjogQ2hhbmdlIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpIHJldHVybiB2YWx1ZSB0byBhIG5hbWVkIHR1cGxlIGFuZAorICBhZGQgdGhlIGFkZGl0aW9uYWwgbWVtYmVycyByZXR1cm5lZCBpbiBhbiBPU1ZFUlNJT05JTkZPRVggc3RydWN0dXJlLiAgVGhlIG5ldworICBtZW1iZXJzIGFyZSBzZXJ2aWNlX3BhY2tfbWFqb3IsIHNlcnZpY2VfcGFja19taW5vciwgc3VpdGVfbWFzaywgYW5kCisgIHByb2R1Y3RfdHlwZS4KKworLSBJc3N1ZSAjNzU2MTogT3BlcmF0aW9ucyBvbiBlbXB0eSBieXRlYXJyYXlzIChzdWNoIGFzIGBpbnQoYnl0ZWFycmF5KCkpYCkgY291bGQKKyAgY3Jhc2ggaW4gbWFueSBwbGFjZXMgYmVjYXVzZSBvZiB0aGUgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKCkgbWFjcm8gcmV0dXJuaW5nCisgIE5VTEwuICBUaGUgbWFjcm8gbm93IHJldHVybnMgYSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBlbXB0eSBzdHJpbmcgaW5zdGVhZC4KKworLSBJc3N1ZSAjNjY5MDogT3B0aW1pemUgdGhlIGJ5dGVjb2RlIGZvciBleHByZXNzaW9ucyBzdWNoIGFzIGB4IGluIHsxLCAyLCAzfWAsCisgIHdoZXJlIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgaXMgYSBzZXQgb2YgY29uc3RhbnRzLCBieSB0dXJuaW5nIHRoZSBzZXQgaW50byBhCisgIGZyb3plbnNldCBhbmQgcHJlLWJ1aWxkaW5nIGl0IGFzIGEgY29uc3RhbnQuICBUaGUgY29tcGFyaXNvbiBvcGVyYXRpb24gaXMgbWFkZQorICBhZ2FpbnN0IHRoZSBjb25zdGFudCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGEgbmV3IHNldCBlYWNoIHRpbWUgaXQgaXMgZXhlY3V0ZWQgKGEKKyAgc2ltaWxhciBvcHRpbWl6YXRpb24gYWxyZWFkeSBleGlzdGVkIHdoaWNoIHR1cm5lZCBhIGxpc3Qgb2YgY29uc3RhbnRzIGludG8gYQorICBwcmUtYnVpbHQgdHVwbGUpLiAgUGF0Y2ggYW5kIGFkZGl0aW9uYWwgdGVzdHMgYnkgRGF2ZSBNYWxjb2xtLgorCistIElzc3VlICM3NjIyOiBJbXByb3ZlIHRoZSBzcGxpdCgpLCByc3BsaXQoKSwgc3BsaXRsaW5lcygpIGFuZCByZXBsYWNlKCkgbWV0aG9kcworICBvZiBieXRlcywgYnl0ZWFycmF5IGFuZCB1bmljb2RlIG9iamVjdHMgYnkgdXNpbmcgYSBjb21tb24gaW1wbGVtZW50YXRpb24gYmFzZWQKKyAgb24gc3RyaW5nbGliJ3MgZmFzdCBzZWFyY2guICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzc2MzI6IEZpeCB2YXJpb3VzIHN0ciAtPiBmbG9hdCBjb252ZXJzaW9uIGJ1Z3MgcHJlc2VudCBpbiAyLjcgYWxwaGEgMiwKKyAgaW5jbHVkaW5nOiAoMSkgYSBzZXJpb3VzICd3cm9uZyBvdXRwdXQnIGJ1ZyB0aGF0IGNvdWxkIG9jY3VyIGZvciBsb25nICg+IDQwCisgIGRpZ2l0KSBpbnB1dCBzdHJpbmdzLCAoMikgYSBjcmFzaCBpbiBkdG9hLmMgdGhhdCBvY2N1cnJlZCBpbiBkZWJ1ZyBidWlsZHMgd2hlbgorICBwYXJzaW5nIGNlcnRhaW4gbG9uZyBudW1lcmljIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBzdWJub3JtYWwgdmFsdWVzLCAoMykgYQorICBtZW1vcnkgbGVhayBmb3Igc29tZSB2YWx1ZXMgbGFyZ2UgZW5vdWdoIHRvIGNhdXNlIG92ZXJmbG93LCBhbmQgKDQpIGEgbnVtYmVyCisgIG9mIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdHMuCisKKy0gVGhlIF9fY29tcGxleF9fIG1ldGhvZCBpcyBub3cgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBvZiBpbnN0YW5jZXMgdG8gbWFrZSBpdAorICBjb25zaXN0ZW50IHdpdGggb3RoZXIgc3BlY2lhbCBtZXRob2RzLgorCistIElzc3VlICM3NDYyOiBJbXBsZW1lbnQgdGhlIHN0cmluZ2xpYiBmYXN0IHNlYXJjaCBhbGdvcml0aG0gZm9yIHRoZSBgcmZpbmRgLAorICBgcmluZGV4YCwgYHJzcGxpdGAgYW5kIGBycGFydGl0aW9uYCBtZXRob2RzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3NjA0OiBEZWxldGluZyBhbiB1bnNldCBzbG90dGVkIGF0dHJpYnV0ZSBkaWQgbm90IHJhaXNlIGFuCisgIEF0dHJpYnV0ZUVycm9yLgorCistIElzc3VlICM3NTM0OiBGaXggaGFuZGxpbmcgb2YgSUVFRSBzcGVjaWFscyAoaW5maW5pdGllcywgbmFucywgbmVnYXRpdmUgemVybykKKyAgaW4gKiogb3BlcmF0b3IuICBUaGUgYmVoYXZpb3VyIG5vdyBjb25mb3JtcyB0byB0aGF0IGRlc2NyaWJlZCBpbiBDOTkgQW5uZXggRi4KKworLSBJc3N1ZSAjMTgxMTogaW1wcm92ZSBhY2N1cmFjeSBhbmQgY3Jvc3MtcGxhdGZvcm0gY29uc2lzdGVuY3kgZm9yIHRydWUgZGl2aXNpb24KKyAgb2YgaW50ZWdlcnM6IHRoZSByZXN1bHQgb2YgYS9iIGlzIG5vdyBjb3JyZWN0bHkgcm91bmRlZCBmb3IgaW50cyBhIGFuZCBiIChhdAorICBsZWFzdCBvbiBJRUVFIDc1NCBwbGF0Zm9ybXMpLCBhbmQgaW4gcGFydGljdWxhciBkb2VzIG5vdCBkZXBlbmQgb24gdGhlCisgIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludC4KKworLSBJc3N1ZSAjNjgzNDogcmVwbGFjZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAncHl0aG9uJyBhbmQgJ3B5dGhvbncnCisgIGV4ZWN1dGFibGVzIG9uIE9TWC4KKworICBUaGVzZSBleGVjdXRhYmxlcyBub3cgd29yayBwcm9wZXJseSB3aXRoIHRoZSBhcmNoKDEpIGNvbW1hbmQ6IGBgYXJjaCAtcHBjCisgIHB5dGhvbmBgIHdpbGwgc3RhcnQgYSB1bml2ZXJzYWwgYmluYXJ5IHZlcnNpb24gb2YgcHl0aG9uIGluIFBQQyBtb2RlICh1bmxpa2UKKyAgcHJldmlvdXMgcmVsZWFzZXMpLgorCistIElzc3VlICM3NDY2OiBTZWdtZW50YXRpb24gZmF1bHQgd2hlbiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgY2FsbGVkIGluIHRoZQorICBtaWRkbGUgb2YgcG9wdWxhdGluZyBhIHR1cGxlLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3NDE5OiBzZXRsb2NhbGUoKSBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgb24gV2luZG93cyB3aGVuIGNhbGxlZAorICB3aXRoIGludmFsaWQgdmFsdWVzLgorCistIElzc3VlICM2MDc3OiBPbiBXaW5kb3dzLCBmaWxlcyBvcGVuZWQgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlIGluICJ3dCsiCisgIG1vZGUgd291bGQgYXBwZWFyIHRydW5jYXRlZCBvbiB0aGUgZmlyc3QgJzB4MWEnIGJ5dGUgKGFrYS4gQ3RybCtaKS4KKworLSBJc3N1ZSAjNzA4NTogRml4IGNyYXNoIHdoZW4gaW1wb3J0aW5nIHNvbWUgZXh0ZW5zaW9ucyBpbiBhIHRocmVhZCBvbiBNYWNPU1gKKyAgMTAuNi4KKworLSBJc3N1ZSAjMTc1NzEyNjogRml4IHRoZSBjeXJpbGxpYy1hc2lhbiBhbGlhcyBmb3IgdGhlIHB0Y3AxNTQgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzY5NzA6IFJlbW92ZSByZWR1bmRhbnQgY2FsbHMgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyB0aGF0IGRvbid0CisgIGltcGxlbWVudCB0aGUgcmVsZXZhbnQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMuCisKKy0gSXNzdWUgIzcyOTg6IEZpeGVzIGZvciByYW5nZSBhbmQgcmV2ZXJzZWQocmFuZ2UoLi4uKSkuICBJdGVyYXRpb24gb3ZlcgorICByYW5nZShhLCBiLCBjKSBpbmNvcnJlY3RseSBnYXZlIGFuIGVtcHR5IGl0ZXJhdG9yIHdoZW4gYSwgYiBhbmQgYyBmaXQgaW4gQworICBsb25nIGJ1dCB0aGUgbGVuZ3RoIG9mIHRoZSByYW5nZSBkaWQgbm90LiAgQWxzbyBmaXggc2V2ZXJhbCBjYXNlcyB3aGVyZQorICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgZ2F2ZSB3cm9uZyByZXN1bHRzLCBhbmQgZml4IGEgcmVmbGVhayBmb3IKKyAgcmV2ZXJzZWQocmFuZ2UoYSwgYiwgYykpIHdpdGggbGFyZ2UgYXJndW1lbnRzLgorCistIElzc3VlICM3MjQ0OiBpdGVydG9vbHMuaXppcF9sb25nZXN0KCkgbm8gbG9uZ2VyIGlnbm9yZXMgZXhjZXB0aW9ucyByYWlzZWQKKyAgZHVyaW5nIHRoZSBmb3JtYXRpb24gb2YgYW4gb3V0cHV0IHR1cGxlLgorCistIElzc3VlICMzMjk3OiBPbiB3aWRlIHVuaWNvZGUgYnVpbGRzLCBkbyBub3Qgc3BsaXQgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8KKyAgc3Vycm9nYXRlcy4KKworLSBSZW1vdmUgbGVuZ3RoIGxpbWl0YXRpb24gd2hlbiBjb25zdHJ1Y3RpbmcgYSBjb21wbGV4IG51bWJlciBmcm9tIGEgc3RyaW5nLgorCistIElzc3VlICMxMDg3NDE4OiBCb29zdCBwZXJmb3JtYW5jZSBvZiBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yIGxvbmdzLgorCistIFN1cHBvcnQgZm9yIEF0aGVPUyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQgZnJvbSB0aGUgY29kZSBiYXNlLiBJdCB3YXMKKyAgZGlzYWJsZWQgc2luY2UgUHl0aG9uIDMuMC4KKworLSBTdXBwb3J0IGZvciBzZXZlcmFsIGxlZ2FjeSB0aHJlYWRpbmcgbGlicmFyaWVzIGhhcyBiZWVuIGRpc2FibGVkLiBUaGVzZQorICBsaWJyYXJpZXMgYXJlOiBNYWNoIEMgdGhyZWFkcywgU3VuT1MgTFdQLCBHTlUgcHRoLCBJcml4IHRocmVhZHMuIFN1cHBvcnQgY29kZQorICB3aWxsIGJlIGVudGlyZWx5IHJlbW92ZWQgaW4gMy4zLgorCistIFN1cHBvcnQgZm9yIE9TRiogaGFzIGJlZW4gZGlzYWJsZWQuIElmIG5vYm9keSBzdGFuZHMgdXAsIHN1cHBvcnQgd2lsbCBiZQorICByZW1vdmVkIGluIDMuMy4gU2VlIDxodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNj4uCisKKy0gUGVlcGhvbGUgY29uc3RhbnQgZm9sZGluZyBoYWQgbWlzc2VkIFVOQVJZX1BPU0lUSVZFLgorCistIElzc3VlICMxNzIyMzQ0OiB0aHJlYWRpbmcuX3NodXRkb3duKCkgaXMgbm93IGNhbGxlZCBpbiBQeV9GaW5hbGl6ZSgpLCB3aGljaAorICBmaXhlcyB0aGUgcHJvYmxlbSBvZiBzb21lIGV4Y2VwdGlvbnMgYmVpbmcgdGhyb3duIGF0IHNodXRkb3duIHdoZW4gdGhlCisgIGludGVycHJldGVyIGlzIGtpbGxlZC4gUGF0Y2ggYnkgQWRhbSBPbHNlbi4KKworLSBJc3N1ZSAjNzE0NzogUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBQeXRob24gd2l0aG91dCBjb21wbGV4IG51bWJlcgorICBzdXBwb3J0LgorCistIElzc3VlICM3MTIwOiBsb2dnaW5nOiBSZW1vdmVkIGltcG9ydCBvZiBtdWx0aXByb2Nlc3Npbmcgd2hpY2ggaXMgY2F1c2luZyBjcmFzaAorICBpbiBHQUUuCisKKy0gSXNzdWUgIzE3NTQwOTQ6IEltcHJvdmUgdGhlIHN0YWNrIGRlcHRoIGNhbGN1bGF0aW9uIGluIHRoZSBjb21waWxlci4gIFRoZXJlCisgIHNob3VsZCBiZSBubyBvdGhlciBlZmZlY3QgdGhhbiBhIHNtYWxsIGRlY3JlYXNlIGluIG1lbW9yeSB1c2UuICBQYXRjaCBieQorICBDaHJpc3RvcGhlciBUdXIgTGVzbmlld3NraS1MYWFzLgorCistIElzc3VlICM3MDY1OiBGaXggYSBjcmFzaCBpbiBieXRlcy5tYWtldHJhbnMgYW5kIGJ5dGVhcnJheS5tYWtldHJhbnMgd2hlbiB1c2luZworICBieXRlIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICMxNTcxMTg0OiBUaGUgVW5pY29kZSBkYXRhYmFzZSBjb250YWlucyBwcm9wZXJ0aWVzIGZvciBtb3JlIGNoYXJhY3RlcnMuCisgIFRoZSB0YWJsZXMgZm9yIGNvZGUgcG9pbnRzIHJlcHJlc2VudGluZyBudW1lcmljIHZhbHVlcywgd2hpdGUgc3BhY2VzIG9yIGxpbmUKKyAgYnJlYWtzIGFyZSBub3cgZ2VuZXJhdGVkIGZyb20gdGhlIG9mZmljaWFsIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGZpbGVzLAorICBhbmQgaW5jbHVkZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVbmloYW4udHh0IGZpbGUuCisKKy0gSXNzdWUgIzcwMTk6IFJhaXNlIFZhbHVlRXJyb3Igd2hlbiB1bm1hcnNoYWxsaW5nIGJhZCBsb25nIGRhdGEsIGluc3RlYWQgb2YKKyAgcHJvZHVjaW5nIGludGVybmFsbHkgaW5jb25zaXN0ZW50IFB5dGhvbiBsb25ncy4KKworLSBJc3N1ZSAjNjk5MDogRml4IHRocmVhZGluZy5sb2NhbCBzdWJjbGFzc2VzIGxlYXZpbmcgb2xkIHN0YXRlIGFyb3VuZCBhZnRlciBhCisgIHJlZmVyZW5jZSBjeWNsZSBHQyB3aGljaCBjb3VsZCBiZSByZWN5Y2xlZCBieSBuZXcgbG9jYWxzLgorCistIElzc3VlICM1NDYwOiBGaXggYW4gYW1iaWd1aXR5IGluIHRoZSBncmFtbWFyLgorCistIElzc3VlICMxNzY2MzA0OiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIG1lbWJlcnNoaXAgdGVzdHMgb24gcmFuZ2Ugb2JqZWN0cy4KKworLSBJc3N1ZSAjNjcxMzogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBpbnRlZ2VyIC0+IHN0cmluZyBjb252ZXJzaW9ucy4KKworLSBJc3N1ZSAjNjg0NjogRml4IGJ1ZyB3aGVyZSBieXRlYXJyYXkucG9wKCkgcmV0dXJucyBuZWdhdGl2ZSBpbnRlZ2Vycy4KKworLSBJc3N1ZSAjNjc1MDogQSB0ZXh0IGZpbGUgb3BlbmVkIHdpdGggaW8ub3BlbigpIGNvdWxkIGR1cGxpY2F0ZSBpdHMgb3V0cHV0IHdoZW4KKyAgd3JpdGluZyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZS4KKworLSBJc3N1ZSAjNjcwNzogZGlyKCkgb24gYW4gdW5pbml0aWFsaXplZCBtb2R1bGUgY2F1c2VkIGEgY3Jhc2guCisKKy0gSXNzdWUgIzY1NDA6IEZpeGVkIGNyYXNoIGZvciBieXRlYXJyYXkudHJhbnNsYXRlKCkgd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMuCisKKy0gSXNzdWUgIzY1NzM6IHNldC51bmlvbigpIHN0b3BwZWQgcHJvY2Vzc2luZyBpbnB1dHMgaWYgYW4gaW5zdGFuY2Ugb2Ygc2VsZgorICBvY2N1cnJlZCBpbiB0aGUgYXJndW1lbnQgY2hhaW4uCisKKy0gSXNzdWUgIzYwNzA6IE9uIHBvc2l4IHBsYXRmb3JtcyBpbXBvcnQgbm8gbG9uZ2VyIGNvcGllcyB0aGUgZXhlY3V0ZSBiaXQgZnJvbQorICB0aGUgLnB5IGZpbGUgdG8gdGhlIC5weWMgZmlsZSBpZiBpdCBpcyBzZXQuCisKKy0gSXNzdWUgIzE2MTY5Nzk6IEFkZGVkIHRoZSBjcDcyMCAoQXJhYmljIERPUykgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzY0Mjg6IFNpbmNlIFB5dGhvbiAzLjAsIHRoZSBfX2Jvb2xfXyBtZXRob2QgbXVzdCByZXR1cm4gYSBib29sIG9iamVjdCwKKyAgYW5kIG5vdCBhbiBpbnQuICBGaXggdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uLgorCistIFRoZSBkZXByZWNhdGVkIFB5Q09iamVjdCBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM2MzQ3OiBJbmNsdWRlIGludHR5cGVzLmggYXMgd2VsbCBhcyBzdGRpbnQuaCBpbiBweXBvcnQuaC4gIFRoaXMgZml4ZXMgYQorICBidWlsZCBmYWlsdXJlIG9uIEhQLVVYOiBpbnQzMl90IGFuZCB1aW50MzJfdCBhcmUgZGVmaW5lZCBpbiBpbnR0eXBlcy5oIGluc3RlYWQKKyAgb2Ygc3RkaW50Lmggb24gdGhhdCBwbGF0Zm9ybS4KKworLSBJc3N1ZSAjNjM3MzogRml4ZWQgYSBTeXN0ZW1FcnJvciB3aGVuIGVuY29kaW5nIHdpdGggdGhlIGxhdGluLTEgY29kZWMgYW5kIHRoZQorICAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCBhIHN0cmluZyB3aGljaCBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCistIElzc3VlICM0ODU2OiBSZW1vdmUgY2hlY2tzIGZvciB3aW4gTlQuCisKKy0gSXNzdWUgIzY2ODc6IFB5Qnl0ZXNfRnJvbU9iamVjdCgpIG5vIGxvbmdlciBhY2NlcHRzIGFuIGludGVnZXIgYXMgaXRzIGFyZ3VtZW50CisgIHRvIGNvbnN0cnVjdCBhIG51bGwtaW5pdGlhbGl6ZWQgYnl0ZXMgb2JqZWN0LgorCistIElzc3VlICMxMDIzMjkwOiBBZGQgZnJvbV9ieXRlcygpIGFuZCB0b19ieXRlcygpIG1ldGhvZHMgdG8gaW50ZWdlcnMuICBUaGVzZQorICBtZXRob2RzIGFsbG93IHRoZSBjb252ZXJzaW9uIG9mIGludGVnZXJzIHRvIGJ5dGVzLCBhbmQgdmljZS12ZXJzYS4KKworLSBJc3N1ZSAjNzM4MjogRml4IGJ1ZyBpbiBieXRlcy5fX2dldG5ld2FyZ3NfXyB0aGF0IHByZXZlbnRlZCBieXRlcyBpbnN0YW5jZXMKKyAgZnJvbSBiZWluZyBjb3BpZWQgd2l0aCBjb3B5LmNvcHkoKSwgYW5kIGJ5dGVzIHN1YmNsYXNzZXMgZnJvbSBiZWluZyBwaWNrbGVkCisgIHByb3Blcmx5LgorCistIENvZGUgb2JqZWN0cyBub3cgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMuCisKKy0gSXNzdWUgIzcwNzI6IGlzc3BhY2UoMHhhMCkgaXMgdHJ1ZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjODA4NDogUEVQIDM3MCBub3cgY29uZm9ybXMgdG8gc3lzdGVtIGNvbnZlbnRpb25zIGZvciBmcmFtZXdvcmsgYnVpbGRzCisgIG9uIE1hY09TIFguIFRoYXQgaXMsICJweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIiIHdpbGwgaW5zdGFsbCBpbnRvCisgICJ+L0xpYnJhcnkvUHl0aG9uLzIuNyIgaW5zdGVhZCBvZiAifi8ubG9jYWwiLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjQ0MzogQSBuZXcgbWFjcm8sIGBQeV9WQV9DT1BZYCwgY29waWVzIHRoZSBzdGF0ZSBvZiB0aGUKKyAgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4gIGBQeV9WQV9DT1BZYCBpcyBlcXVpdmFsZW50IHRvIEM5OQorICBgdmFfY29weWAsIGJ1dCBhdmFpbGFibGUgb24gYWxsIHB5dGhvbiBwbGF0Zm9ybXMuCisKKy0gUHlTbGljZV9HZXRJbmRpY2VzRXggbm93IGNsaXBzIHRoZSBzdGVwIHRvIFstUFlfU1NJWkVfVF9NQVgsIFBZX1NTSVpFX1RfTUFYXQorICBpbnN0ZWFkIG9mIFstUFlfU1NJWkVfVF9NQVgtMSwgUFlfU1NJWkVfVF9NQVhdLiAgVGhpcyBtYWtlcyBpdCBzYWZlIHRvIGRvCisgICJzdGVwID0gLXN0ZXAiIHdoZW4gcmV2ZXJzaW5nIGEgc2xpY2UuCisKKy0gSXNzdWUgIzU3NTM6IEEgbmV3IEMgQVBJIGZ1bmN0aW9uLCBgUHlTeXNfU2V0QXJndkV4YCwgYWxsb3dzIGVtYmVkZGVycyBvZiB0aGUKKyAgaW50ZXJwcmV0ZXIgdG8gc2V0IHN5cy5hcmd2IHdpdGhvdXQgYWxzbyBtb2RpZnlpbmcgc3lzLnBhdGguICBUaGlzIGhlbHBzIGZpeAorICBgQ1ZFLTIwMDgtNTk4MworICA8aHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDA4LTU5ODM+YF8uCisKKy0gQWRkIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cywgd2hpY2ggY2hlY2tzIGlmIGFsbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUKKyAgc3RyaW5ncyBpbiBhbiBlZmZpY2llbnQgbWFubmVyLgorCistIElzc3VlICM4Mjc2OiBQeUV2YWxfQ2FsbE9iamVjdCgpIGlzIG5vdyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNybyBmb3JtLiAgVGhlCisgIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCB3aGljaCB3YXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgaXMKKyAgbm93IHJlbW92ZWQgKHRoZSBtYWNybyB3YXMgaW50cm9kdWNlZCBpbiAxOTk3ISkuCisKKy0gSXNzdWUgIzc3Njc6IE5ldyBmdW5jdGlvbiBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IGFkZGVkLCBhbmFsb2dvdXMgdG8KKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93LgorCistIE1ha2UgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgcmV0dXJuIG5vdCBlcXVhbCBpZiB0aGUgUHl0aG9uIHN0cmluZworICBoYXMgJ1wwJyBhdCB0aGUgZW5kLgorCistIElzc3VlICM1MDgwOiBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgUHlBcmdfUGFyc2VUdXBsZSwKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzLCBQeUFyZ19WYVBhcnNlLCBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyBhbmQKKyAgUHlBcmdfUGFyc2Ugbm93IHJhaXNlIGEgRGVwcmVjYXRpb25XYXJuaW5nIGZvciBmbG9hdCBhcmd1bWVudHMgcGFzc2VkIHdpdGggdGhlCisgICdMJyBmb3JtYXQgY29kZS4gIFRoaXMgd2lsbCBiZWNvbWUgYSBUeXBlRXJyb3IgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24sCisgIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG90aGVyIGludGVnZXIgZm9ybWF0IGNvZGVzLgorCistIElzc3VlICM3MDMzOiBGdW5jdGlvbiBgYFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoKWBgIGFkZGVkLgorCistIElzc3VlICM3NDE0OiAnQycgY29kZSB3YXNuJ3QgYmVpbmcgc2tpcHBlZCBwcm9wZXJseSAoZm9yIGtleXdvcmQgYXJndW1lbnRzKSBpbgorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMuCisKKy0gSXNzdWUgIzcyMjg6IEFkZCAnJWxsZCcgYW5kICclbGx1JyBzdXBwb3J0IHRvIFB5U3RyaW5nX0Zyb21Gb3JtYXQoVikgYW5kCisgIFB5RXJyX0Zvcm1hdCwgb24gbWFjaGluZXMgd2l0aCBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkLgorCistIElzc3VlICM2MTUxOiBNYWRlIFB5RGVzY3JfQ09NTU9OIGNvbmZvcm0gdG8gc3RhbmRhcmQgQyAobGlrZSBQeU9iamVjdF9IRUFEIGluCisgIFBFUCAzMTIzKS4gIFRoZSBQeURlc2NyX1RZUEUgYW5kIFB5RGVzY3JfTkFNRSBtYWNyb3Mgc2hvdWxkIGJlIHNob3VsZCB1c2VkIGZvcgorICBhY2Nlc3NpbmcgdGhlIGRfdHlwZSBhbmQgZF9uYW1lIG1lbWJlcnMgb2Ygc3RydWN0dXJlcyB1c2luZyBQeURlc2NyX0NPTU1PTi4KKworLSBJc3N1ZSAjNjQwNTogUmVtb3ZlIGR1cGxpY2F0ZSB0eXBlIGRlY2xhcmF0aW9ucyBpbiBkZXNjcm9iamVjdC5oLgorCistIFRoZSBjb2RlIGZsYWdzIGZvciBvbGQgX19mdXR1cmVfXyBmZWF0dXJlcyBhcmUgbm93IGF2YWlsYWJsZSBhZ2Fpbi4KKworLSBJc3N1ZSAjNTk1NDogQWRkIGEgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgZnVuY3Rpb24gdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YKKyAgUHlDb2RlX0FkZHIyTGluZSgpLgorCistIElzc3VlICM1OTU5OiBBZGQgYSBQeUNvZGVfTmV3RW1wdHkoKSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgZW1wdHkgY29kZQorICBvYmplY3QgYXQgYSBzcGVjaWZpZWQgZmlsZSwgZnVuY3Rpb24sIGFuZCBsaW5lIG51bWJlci4KKworLSBJc3N1ZSAjMTQxOTY1MjogQ2hhbmdlIHRoZSBmaXJzdCBhcmd1bWVudCB0byBQeUltcG9ydF9BcHBlbmRJbml0dGFiKCkgdG8KKyAgYGBjb25zdCBjaGFyICpgYCBhcyB0aGUgc3RyaW5nIGlzIHN0b3JlZCBiZXlvbmQgdGhlIGNhbGwuCisKKy0gSXNzdWUgIzI0MjI6IFdoZW4gY29tcGlsZWQgd2l0aCB0aGUgYGAtLXdpdGgtdmFsZ3JpbmRgYCBvcHRpb24sIHRoZSBweW1hbGxvYworICBhbGxvY2F0b3Igd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZC4gIFRoaXMKKyAgZ2l2ZXMgaW1wcm92ZWQgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgd2hpbGUgdGFraW5nCisgIGFkdmFudGFnZSBvZiBweW1hbGxvYyBhdCBvdGhlciB0aW1lcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIEluIHBkYiwgd2hlbiBDdHJsLUMgaXMgZW50ZXJlZCB3aGlsZSBkZWZpbmluZyBjb21tYW5kcyBmb3IgYSBicmVha3BvaW50LCB0aGUKKyAgb2xkIGNvbW1hbmRzIGFyZSByZXN0b3JlZC4KKworLSBGb3IgdHJhY2ViYWNrIGRlYnVnZ2luZywgdGhlIHBkYiBsaXN0aW5nIG5vdyBhbHNvIHNob3dzIHRoZSBsb2NhdGlvbnMgd2hlcmUKKyAgdGhlIGV4Y2VwdGlvbiB3YXMgb3JpZ2luYWxseSAocmUpcmFpc2VkLCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIGxhc3QgbGluZQorICBleGVjdXRlZCAoZS5nLiBpbiBjYXNlIG9mIGZpbmFsbHkgY2xhdXNlcykuCisKKy0gVGhlIHBkYiBjb21tYW5kICJzb3VyY2UiIGhhcyBiZWVuIGFkZGVkLiAgSXQgZGlzcGxheXMgdGhlIHNvdXJjZSBjb2RlIGZvciBhCisgIGdpdmVuIG9iamVjdCwgaWYgcG9zc2libGUuCisKKy0gVGhlIHBkYiBjb21tYW5kICJsb25nbGlzdCIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgd2hvbGUgc291cmNlIGNvZGUKKyAgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorCistIElzc3VlICMxNTAzNTAyOiBNYWtlIHBkYi5QZGIgZWFzaWVyIHRvIHN1YmNsYXNzIGJ5IHB1dHRpbmcgbWVzc2FnZSBhbmQgZXJyb3IKKyAgb3V0cHV0IGludG8gbWV0aG9kcy4KKworLSBJc3N1ZSAjODA5ODg3OiBNYWtlIHRoZSBvdXRwdXQgb2YgcGRiJ3MgYnJlYWtwb2ludCBkZWxldGlvbnMgbW9yZSBjb25zaXN0ZW50OworICBlbWl0IGEgbWVzc2FnZSB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorCistIElzc3VlICM1Mjk0OiBGaXggdGhlIGJlaGF2aW9yIG9mIHBkYidzICJjb250aW51ZSIgY29tbWFuZCB3aGVuIGNhbGxlZCBpbiB0aGUKKyAgdG9wLWxldmVsIGRlYnVnZ2VkIGZyYW1lLgorCistIElzc3VlICM1NzI3OiBSZXN0b3JlIHRoZSBhYmlsaXR5IHRvIHVzZSByZWFkbGluZSB3aGVuIGNhbGxpbmcgaW50byBwZGIgaW4KKyAgZG9jdGVzdHMuCisKKy0gSXNzdWUgIzY3MTk6IEluIHBkYiwgZG8gbm90IHN0b3Agc29tZXdoZXJlIGluIHRoZSBlbmNvZGluZ3MgbWFjaGluZXJ5IGlmIHRoZQorICBzb3VyY2UgZmlsZSB0byBiZSBkZWJ1Z2dlZCBpcyBpbiBhIG5vbi1idWlsdGluIGVuY29kaW5nLgorCistIElzc3VlICM4MDQ4OiBQcmV2ZW50IGRvY3Rlc3RzIGZyb20gZmFpbGluZyB3aGVuIHN5cy5kaXNwbGF5aG9vayBoYXMgYmVlbgorICByZWFzc2lnbmVkLgorCistIElzc3VlICM4MDE1OiBJbiBwZGIsIGRvIG5vdCBjcmFzaCB3aGVuIGFuIGVtcHR5IGxpbmUgaXMgZW50ZXJlZCBhcyBhCisgIGJyZWFrcG9pbnQgY29tbWFuZC4KKworLSBJbiBwZGIsIGFsbG93IGdpdmluZyBhIGxpbmUgbnVtYmVyIHRvIHRoZSAidW50aWwiIGNvbW1hbmQuCisKKy0gSXNzdWUgIzE0MzcwNTE6IEZvciBwZGIsIGFsbG93ICJjb250aW51ZSIgYW5kIHJlbGF0ZWQgY29tbWFuZHMgaW4gLnBkYnJjCisgIGZpbGVzLiAgQWxzbywgYWRkIGEgY29tbWFuZC1saW5lIG9wdGlvbiAiLWMiIHRoYXQgcnVucyBhIGNvbW1hbmQgYXMgaWYgZ2l2ZW4KKyAgaW4gLnBkYnJjLgorCistIElzc3VlICM0MTc5OiBJbiBwZGIsIGFsbG93ICJsaXN0IC4iIGFzIGEgY29tbWFuZCB0byByZXR1cm4gdG8gdGhlIGN1cnJlbnRseQorICBkZWJ1Z2dlZCBsaW5lLgorCistIElzc3VlICM0MTA4OiBJbiB1cmxsaWIucm9ib3RwYXJzZXIsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBgYFVzZXItYWdlbnQ6ICpgYAorICBlbnRyaWVzLCBjb25zaWRlciB0aGUgZmlyc3Qgb25lLgorCistIElzc3VlICM2NjMwOiBBbGxvdyBjdXN0b21pemluZyByZWdleCBmbGFncyB3aGVuIHN1YmNsYXNzaW5nIHRoZQorICBzdHJpbmcuVGVtcGxhdGUgY2xhc3MuCisKKy0gSXNzdWUgIzk0MTE6IEFsbG93IHNwZWNpZnlpbmcgYW4gZW5jb2RpbmcgZm9yIGNvbmZpZyBmaWxlcyBpbiB0aGUgY29uZmlncGFyc2VyCisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY4Mjk0MjogSW1wcm92ZW1lbnRzIHRvIGNvbmZpZ3BhcnNlcjogc3VwcG9ydCBhbHRlcm5hdGUgZGVsaW1pdGVycywKKyAgYWx0ZXJuYXRlIGNvbW1lbnQgcHJlZml4ZXMgYW5kIGVtcHR5IGxpbmVzIGluIHZhbHVlcy4KKworLSBJc3N1ZSAjOTM1NDogUHJvdmlkZSBnZXRzb2Nrb3B0KCkgaW4gYXN5bmNvcmUncyBmaWxlX3dyYXBwZXIuCisKKy0gSXNzdWUgIzg5NjY6IGN0eXBlczogUmVtb3ZlIGltcGxpY2l0IGJ5dGVzLXVuaWNvZGUgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjOTM3ODogcHl0aG9uIC1tIHBpY2tsZSA8cGlja2xlIGZpbGU+IHdpbGwgbm93IGxvYWQgYW5kIGRpc3BsYXkgdGhlCisgIGZpcnN0IG9iamVjdCBpbiB0aGUgcGlja2xlIGZpbGUuCisKKy0gSXNzdWUgIzQ3NzA6IFJlc3RyaWN0IGJpbmFzY2lpIG1vZHVsZSB0byBhY2NlcHQgb25seSBieXRlcyAoYXMgc3BlY2lmaWVkKS4KKyAgQW5kIGZpeCB0aGUgZW1haWwgcGFja2FnZSB0byBlbmNvZGUgdG8gQVNDSUkgaW5zdGVhZCBvZiBgYHJhdy11bmljb2RlLWVzY2FwZWBgCisgIGJlZm9yZSBBU0NJSS10by1iaW5hcnkgZGVjb2RpbmcuCisKKy0gSXNzdWUgIzkzODQ6IGBgcHl0aG9uIC1tIHRraW50ZXJgYCB3aWxsIG5vdyBkaXNwbGF5IGEgc2ltcGxlIGRlbW8gYXBwbGV0LgorCistIFRoZSBkZWZhdWx0IHNpemUgb2YgdGhlIHJlIG1vZHVsZSdzIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZSBoYXMgYmVlbgorICBpbmNyZWFzZWQgZnJvbSAxMDAgdG8gNTAwIGFuZCB0aGUgY2FjaGUgcmVwbGFjZW1lbnQgcG9saWN5IGhhcyBjaGFuZ2VkIGZyb20KKyAgc2ltcGx5IGNsZWFyaW5nIHRoZSBlbnRpcmUgY2FjaGUgb24gb3ZlcmZsb3cgdG8gZm9yZ2V0dGluZyB0aGUgbGVhc3QgcmVjZW50bHkKKyAgdXNlZCBjYWNoZWQgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4gIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSB3aW4gZm9yCisgIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBhIGxvdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBsaW1pdHMgdGhlIGltcGFjdCBvZgorICB0aGUgcGVyZm9ybWFuY2UgaGl0IGFueXRpbWUgdGhlIGNhY2hlIGlzIGV4Y2VlZGVkLgorCistIElzc3VlICM3MTEzOiBTcGVlZCB1cCBsb2FkaW5nIGluIGNvbmZpZ3BhcnNlci4gUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KKworLSBJc3N1ZSAjOTAzMjogWE1MLVJQQyBjbGllbnQgcmV0cmllcyB0aGUgcmVxdWVzdCBvbiBFUElQRSBlcnJvci4gIFRoZSBFUElQRQorICBlcnJvciBvY2N1cnMgd2hlbiB0aGUgc2VydmVyIGNsb3NlcyB0aGUgc29ja2V0IGFuZCB0aGUgY2xpZW50IHNlbmRzIGEgYmlnCisgIFhNTC1SUEMgcmVxdWVzdC4KKworLSBJc3N1ZSAjNDYyOTogZ2V0b3B0IHJhaXNlcyBhbiBlcnJvciBpZiBhbiBhcmd1bWVudCBlbmRzIHdpdGggIj0iLCB3aGVyZWFzCisgIGdldG9wdCBkb2Vzbid0IGFjY2VwdCBhIHZhbHVlIChlZy4gLS1oZWxwPSBpcyByZWplY3RlZCBpZiBnZXRvcHQgdXNlcworICBbJ2hlbHA9J10gbG9uZyBvcHRpb25zKS4KKworLSBJc3N1ZSAjNzk4OTogQWRkZWQgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBkYXRldGltZWAgbW9kdWxlLiAgVGhlIEMKKyAgbW9kdWxlIGlzIHJlbmFtZWQgdG8gYF9kYXRldGltZWAgYW5kIGlmIGF2YWlsYWJsZSwgb3ZlcnJpZGVzIGFsbCBjbGFzc2VzCisgIGRlZmluZWQgaW4gZGF0ZXRpbWUgd2l0aCBmYXN0IEMgaW1wZW1lbnRhdGlvbi4gIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZAorICBvbiB0aGUgb3JpZ2luYWwgcHl0aG9uIHByb3RvdHlwZSBmb3IgdGhlIGRhdGV0aW1lIG1vZHVsZSBieSBUaW0gUGV0ZXJzIHdpdGgKKyAgbWlub3IgbW9kaWZpY2F0aW9ucyBieSB0aGUgUHlQeSBwcm9qZWN0LiAgVGhlIHRlc3Qgc3VpdGUgbm93IHRlc3RzIGBkYXRldGltZWAKKyAgbW9kdWxlIHdpdGggYW5kIHdpdGhvdXQgYF9kYXRldGltZWAgYWNjZWxlcmF0aW9uIHVzaW5nIHRoZSBzYW1lIHRlc3QgY2FzZXMuCisKKy0gSXNzdWUgIzc4OTU6IHBsYXRmb3JtLm1hY192ZXIoKSBubyBsb25nZXIgY3Jhc2hlcyBhZnRlciBjYWxsaW5nIG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjOTMyMzogRml4ZWQgYSBidWcgaW4gdHJhY2UucHkgdGhhdCByZXN1bHRlZCBpbiBsb29zaW5nIHRoZSBuYW1lIG9mIHRoZQorICBzY3JpcHQgYmVpbmcgdHJhY2VkLiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjOTI4MjogRml4ZWQgLS1saXN0ZnVuY3Mgb3B0aW9uIG9mIHRyYWNlLnB5LiAgVGhhbmtzIEVsaSBCZW5kZXJza3kgZm9yCisgIHRoZSBwYXRjaC4KKworLSBJc3N1ZSAjMzcwNDogaHR0cC5jb29raWVqYXIgd2FzIG5vdCBwcm9wZXJseSBoYW5kbGluZyBVUkxzIHdpdGggYSAvIGluIHRoZQorICBwYXJhbWV0ZXJzLgorCistIElzc3VlICM5MjY4OiBgYHBpY2tsZXRvb2xzLmRpcygpYGAgbm93IGhhcyBhbiBvcHRpb25hbCAqYW5ub3RhdGUqIGFyZ3VtZW50CisgIHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIG9wY29kZSBkZXNjcmlwdGlvbnMgaW4gYGBkaXMoKWBgIG91dHB1dC4KKworLSBJc3N1ZSAjMTU1NTU3MDogZW1haWwgbm8gbG9uZ2VyIGluc2VydHMgZXh0cmEgYmxhbmsgbGluZXMgd2hlbiBhIFxyXG4gY29tYm8KKyAgY3Jvc3NlcyBhbiA4MTkyIGJ5dGUgYm91bmRhcnkuCisKKy0gSXNzdWUgIzkyNDM6IEZpeCBzbmRoZHIgbW9kdWxlIGFuZCBhZGQgdW5pdCB0ZXN0cywgY29udHJpYnV0ZWQgYnkgSmFtZXMgTGVlLgorCistIGBgYXN0LmxpdGVyYWxfZXZhbCgpYGAgbm93IGFsbG93cyBieXRlIGxpdGVyYWxzLgorCistIElzc3VlICM5MTM3OiBGaXggaXNzdWUgaW4gTXV0YWJsZU1hcHBpbmcudXBkYXRlLCB3aGljaCBpbmNvcnJlY3RseSB0cmVhdGVkCisgIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAnc2VsZicgb3IgJ290aGVyJyBzcGVjaWFsbHkuCisKKy0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIHNldCBsaXRlcmFscy4KKworLSBJc3N1ZSAjOTE2NDogRW5zdXJlIHRoYXQgc3lzY29uZmlnIGhhbmRsZXMgZHVwbGljYXRlIC1hcmNoIGZsYWdzIGluIENGTEFHUy4KKworLSBJc3N1ZSAjNzY0NjogVGhlIGZubWF0Y2ggcGF0dGVybiBjYWNoZSBubyBsb25nZXIgZ3Jvd3Mgd2l0aG91dCBib3VuZC4KKworLSBJc3N1ZSAjOTEzNjogRml4ICdkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uJyBSdW50aW1lRXJyb3IKKyAgcHJvZHVjZWQgd2hlbiBwcm9maWxpbmcgdGhlIGRlY2ltYWwgbW9kdWxlLiAgVGhpcyB3YXMgZHVlIHRvIGEgZGFuZ2Vyb3VzCisgIGl0ZXJhdGlvbiBvdmVyICdsb2NhbHMoKScgaW4gQ29udGV4dC5fX2luaXRfXy4KKworLSBGaXggZXh0cmVtZSBzcGVlZCBpc3N1ZSBpbiBEZWNpbWFsLnBvdyB3aGVuIHRoZSBiYXNlIGlzIGFuIGV4YWN0IHBvd2VyIG9mIDEwCisgIGFuZCB0aGUgZXhwb25lbnQgaXMgdGlueSAoZm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgxMCkgKioKKyAgRGVjaW1hbCgnMWUtOTk5OTk5OTk5JylgYCkuCisKKy0gSXNzdWUgIzkxODY6IEZpeCBtYXRoLmxvZzFwKC0xLjApIHRvIHJhaXNlIFZhbHVlRXJyb3IsIG5vdCBPdmVyZmxvd0Vycm9yLgorCistIElzc3VlICM5MTMwOiBGaXggdmFsaWRhdGlvbiBvZiByZWxhdGl2ZSBpbXBvcnRzIGluIHBhcnNlciBtb2R1bGUuCisKKy0gSXNzdWUgIzkxMjg6IEZpeCB2YWxpZGF0aW9uIG9mIGNsYXNzIGRlY29yYXRvcnMgaW4gcGFyc2VyIG1vZHVsZS4KKworLSBJc3N1ZSAjOTA5NDogcHl0aG9uIC1tIHBpY2tsZXRvb2xzIHdpbGwgbm93IGRpc2Fzc2VtYmxlIHBpY2tsZSBmaWxlcyBsaXN0ZWQgaW4KKyAgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZWUgb3V0cHV0IG9mIHB5dGhvbiAtbSBwaWNrbGV0b29scyAtaCBmb3IgbW9yZQorICBkZXRhaWxzLgorCistIElzc3VlICM1NDY4OiB1cmxlbmNvZGUgdG8gaGFuZGxlIGJ5dGVzIHR5cGUgYW5kIG90aGVyIGVuY29kaW5ncyBpbiBpdHMgcXVlcnkKKyAgcGFyYW1ldGVyLiBQYXRjaCBieSBEYW4gTWFobi4KKworLSBJc3N1ZSAjNzY3MzogRml4IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgKENWRS0yMDEwLTIwODkpIGluIHRoZSBhdWRpb29wIG1vZHVsZSwKKyAgZW5zdXJlIHRoYXQgdGhlIGlucHV0IHN0cmluZyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUgc2l6ZS4KKworLSBJc3N1ZSAjNjUwNzogQWNjZXB0IHNvdXJjZSBzdHJpbmdzIGluIGRpcy5kaXMoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IERhbmllbAorICBVcmJhbi4KKworLSBJc3N1ZSAjNzgyOTogQ2xlYXJseSBkb2N1bWVudCB0aGF0IHRoZSBkaXMgbW9kdWxlIGlzIGV4cG9zaW5nIGFuCisgIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IGlzIG5vdCBzdGFibGUgYmV0d2VlbiBQeXRob24gVk1zIG9yIHJlbGVhc2VzLgorCistIElzc3VlICM2NTg5OiBjbGVhbnVwIGFzeW5jb3JlLnNvY2tldF9tYXAgaW4gY2FzZSBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9yCisgIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzkxMTA6IEFkZGl0aW9uIG9mIENvbnRleHREZWNvcmF0b3IgdG8gY29udGV4dGxpYiwgZm9yIGNyZWF0aW5nIEFQSXMKKyAgdGhhdCBhY3QgYXMgYm90aCBjb250ZXh0IG1hbmFnZXJzIGFuZCBkZWNvcmF0b3JzLiBjb250ZXh0bWFuYWdlciBjaGFuZ2VzIHRvCisgIHVzZSBDb250ZXh0RGVjb3JhdG9yLgorCistIEltcGxlbWVudCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlciBhbmQgZGVwcmVjYXRlIFB5TG9hZGVyIGFuZCBQeVB5Y0xvYWRlcgorICBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy40LgorCistIElzc3VlICM5MDY0OiBwZGIncyAidXAiIGFuZCAiZG93biIgY29tbWFuZHMgbm93IGFjY2VwdCBhbiBvcHRpb25hbCBhcmd1bWVudAorICBnaXZpbmcgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gZ28uCisKKy0gSXNzdWUgIzkwMTg6IG9zLnBhdGgubm9ybWNhc2UoKSBub3cgcmFpc2VzIGEgVHlwZUVycm9yIGlmIHRoZSBhcmd1bWVudCBpcyBub3QKKyAgYGBzdHJgYCBvciBgYGJ5dGVzYGAuCisKKy0gSXNzdWUgIzkwNzU6IEluIHRoZSBzc2wgbW9kdWxlLCByZW1vdmUgdGhlIHNldHRpbmcgb2YgYSBgYGRlYnVnYGAgZmxhZyBvbiBhbgorICBPcGVuU1NMIHN0cnVjdHVyZS4KKworLSBJc3N1ZSAjODY4MjogVGhlIHNzbCBtb2R1bGUgbm93IHRlbXBvcmFyeSBpbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgYQorICBzb2NrZXQgb2JqZWN0IGdvdCB0aHJvdWdoIGBgUHlXZWFrcmVmX0dldE9iamVjdGBgLCBzbyBhcyB0byBhdm9pZCBwb3NzaWJsZQorICBkZWFsbG9jYXRpb24gd2hpbGUgdGhlIG9iamVjdCBpcyBzdGlsbCBiZWluZyB1c2VkLgorCistIElzc3VlICMxMzY4MzY4OiBGYW5jeVVSTE9wZW5lciBjbGFzcyBjaGFuZ2VkIHRvIHRocm93IGFuIEV4Y2VwdGlvbiBvbiB3cm9uZworICBwYXNzd29yZCBpbnN0ZWFkIG9mIHByZXNlbnRpbmcgYW4gaW50ZXJhY3RpdmUgcHJvbXB0LiAgT2xkZXIgYmVoYXZpb3IgY2FuIGJlCisgIG9idGFpbmVkIGJ5IHBhc3NpbmcgcmV0cnk9VHJ1ZSB0byBodHRwX2Vycm9yX3h4eCBtZXRob2RzIG9mIEZhbmN5VVJMT3BlbmVyLgorCistIElzc3VlICM4NzIwOiBGaXggcmVncmVzc2lvbiBjYXVzZWQgYnkgZml4IGZvciAjNDA1MCBieSBtYWtpbmcgZ2V0c291cmNlZmlsZQorICBzbWFydCBlbm91Z2ggdG8gZmluZCBzb3VyY2UgZmlsZXMgaW4gdGhlIGxpbmVjYWNoZS4KKworLSBJc3N1ZSAjNTYxMDogZmVlZHBhcnNlciBubyBsb25nZXIgZWF0cyBleHRyYSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQgb2YgYSBib2R5CisgIHBhcnQgaWYgdGhlIGJvZHkgcGFydCBlbmRzIHdpdGggYSBgYFxyXG5gYC4KKworLSBJc3N1ZSAjODk4NjogbWF0aC5lcmZjIHdhcyBpbmNvcnJlY3RseSByYWlzaW5nIE92ZXJmbG93RXJyb3IgZm9yIHZhbHVlcworICBiZXR3ZWVuIC0yNy4zIGFuZCAtMzAuMCBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjODc4NDogU2V0IHRhcmZpbGUgZGVmYXVsdCBlbmNvZGluZyB0byAndXRmLTgnIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzg5NjY6IElmIGEgY3R5cGVzIHN0cnVjdHVyZSBmaWVsZCBpcyBhbiBhcnJheSBvZiBjX2NoYXIsIGNvbnZlcnQgaXRzCisgIHZhbHVlIHRvIGJ5dGVzIGluc3RlYWQgb2Ygc3RyIChhcyBkb25lIGZvciBjX2NoYXIgYW5kIGNfY2hhcl9wKS4KKworLSBJc3N1ZSAjODE4ODogQ29tcGFyaXNvbnMgYmV0d2VlbiBEZWNpbWFsIGFuZCBGcmFjdGlvbiBvYmplY3RzIGFyZSBub3cKKyAgcGVybWl0dGVkLCByZXR1cm5pbmcgYSByZXN1bHQgYmFzZWQgb24gdGhlIGV4YWN0IG51bWVyaWNhbCB2YWx1ZXMgb2YgdGhlCisgIG9wZXJhbmRzLiAgVGhpcyBidWlsZHMgb24gaXNzdWUgIzI1MzEsIHdoaWNoIGFsbG93ZWQgRGVjaW1hbC10by1mbG9hdAorICBjb21wYXJpc29uczsgYWxsIGNvbXBhcmlzb25zIGludm9sdmluZyBudW1lcmljIHR5cGVzIChib29sLCBpbnQsIGZsb2F0LAorICBjb21wbGV4LCBEZWNpbWFsLCBGcmFjdGlvbikgc2hvdWxkIG5vdyBhY3QgYXMgZXhwZWN0ZWQuCisKKy0gSXNzdWUgIzg4OTc6IEZpeCBzdW5hdSBtb2R1bGUsIHVzZSBieXRlcyB0byB3cml0ZSB0aGUgaGVhZGVyLiBQYXRjaCB3cml0dGVuIGJ5CisgIFRob21hcyBKb2xsYW5zLgorCistIElzc3VlICM4ODk5OiB0aW1lLnN0cnVjdF90aW1lIG5vdyBoYXMgY2xhc3MgYW5kIGF0dHJpYnV0ZSBkb2NzdHJpbmdzLgorCistIElzc3VlICM2NDcwOiBEcm9wIFVOQyBwcmVmaXggaW4gRml4VGsuCisKKy0gSXNzdWUgIzQ3Njg6IGJhc2U2NCBlbmNvZGVkIGVtYWlsIGJvZHkgcGFydHMgd2VyZSBpbmNvcnJlY3RseSBzdG9yZWQgYXMgYmluYXJ5CisgIHN0cmluZ3MuICBUaGV5IGFyZSBub3cgY29ycmVjdGx5IGNvbnZlcnRlZCB0byBzdHJpbmdzLgorCistIElzc3VlICM4ODMzOiB0YXJmaWxlIGNyZWF0ZWQgaGFyZCBsaW5rIGVudHJpZXMgd2l0aCBhIHNpemUgZmllbGQgIT0gMCBieQorICBtaXN0YWtlLgorCistIENoYXJzZXQuYm9keV9lbmNvZGUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGJhc2U2NCBlbmNvZGluZyBieSBlbmNvZGluZyB3aXRoIHRoZQorICBvdXRwdXRfY2hhcnNldCBiZWZvcmUgY2FsbGluZyBiYXNlNjRtaW1lLmVuY29kZS4gIFBhc3NlcyB0aGUgdGVzdHMgZnJvbSAyLngKKyAgaXNzdWUgIzEzNjgyNDcuCisKKy0gSXNzdWUgIzg4NDU6IHNxbGl0ZTMgQ29ubmVjdGlvbiBvYmplY3RzIG5vdyBoYXZlIGEgcmVhZC1vbmx5IGluX3RyYW5zYWN0aW9uCisgIGF0dHJpYnV0ZSB0aGF0IGlzIFRydWUgaWZmIHRoZXJlIGFyZSB1bmNvbW1pdHRlZCBjaGFuZ2VzLgorCistIElzc3VlICMxMjg5MTE4OiBkYXRldGltZS50aW1lZGVsdGEgb2JqZWN0cyBjYW4gbm93IGJlIG11bHRpcGxpZWQgYnkgZmxvYXQgYW5kCisgIGRpdmlkZWQgYnkgZmxvYXQgYW5kIGludCBvYmplY3RzLiAgUmVzdWx0cyBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZQorICBvZiB0aW1lZGVsdGEucmVzb2x1dGlvbiB3aXRoIHRpZXMgcmVzb2x2ZWQgdXNpbmcgcm91bmQtaGFsZi10by1ldmVuIG1ldGhvZC4KKworLSBJc3N1ZSAjNzE1MDogUmFpc2UgT3ZlcmZsb3dFcnJvciBpZiB0aGUgcmVzdWx0IG9mIGFkZGluZyBvciBzdWJ0cmFjdGluZworICB0aW1lZGVsdGEgZnJvbSBkYXRlIG9yIGRhdGV0aW1lIGZhbGxzIG91dHNpZGUgb2YgdGhlIE1JTllFQVI6TUFYWUVBUiByYW5nZS4KKworLSBJc3N1ZSAjODgwNjogYWRkIFNTTCBjb250ZXh0cyBzdXBwb3J0IHRvIGZ0cGxpYi4KKworLSBJc3N1ZSAjNDc2OTogRml4IG1haW4oKSBmdW5jdGlvbiBvZiB0aGUgYmFzZTY0IG1vZHVsZSwgdXNlIHN5cy5zdGRpbi5idWZmZXIKKyAgYW5kIHN5cy5zdGRvdXQuYnVmZmVyIChpbnN0ZWFkIG9mIHN5cy5zdGRpbiBhbmQgc3lzLnN0ZG91dCkgdG8gdXNlIHRoZSBieXRlcworICBBUEkuCisKKy0gSXNzdWUgIzg3NzA6IE5vdyBzeXNjb25maWcgZGlzcGxheXMgaW5mb3JtYXRpb24gd2hlbiBpdCdzIGNhbGxlZCBhcyBhIHNjcmlwdC4KKyAgSW5pdGlhbCBpZGVhIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjY2MjogRml4IHBhcnNpbmcgb2YgbWFsZm9ybWF0dGVkIGNoYXJyZWYgKCYjYmFkOyksIHBhdGNoIHdyaXR0ZW4gYnkKKyAgRnJlZHJpayBIw6XDpXJkLgorCistIElzc3VlICM4NTQwOiBEZWNpbWFsIG1vZHVsZTogcmVuYW1lIHRoZSBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgdG8KKyAgQ29udGV4dC5jbGFtcCBhbmQgbWFrZSBpdCBwdWJsaWMuICBUaGlzIGlzIHVzZWZ1bCBpbiBjcmVhdGluZyBjb250ZXh0cyB0aGF0CisgIGNvcnJlc3BvbmQgdG8gdGhlIGRlY2ltYWwgaW50ZXJjaGFuZ2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gSUVFRSA3NTQuCisKKy0gSXNzdWUgIzYyNjg6IEZpeCBzZWVrKCkgbWV0aG9kIG9mIGNvZGVjcy5vcGVuKCksIGRvbid0IHJlYWQgb3Igd3JpdGUgdGhlIEJPTQorICB0d2ljZSBhZnRlciBzZWVrKDApLiBGaXggYWxzbyByZXNldCgpIG1ldGhvZCBvZiBjb2RlY3MsIFVURi0xNiwgVVRGLTMyIGFuZAorICBTdHJlYW1Xcml0ZXIgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMzc5ODogc3lzLmV4aXQobWVzc2FnZSkgd3JpdGVzIHRoZSBtZXNzYWdlIHRvIHN5cy5zdGRlcnIgZmlsZSwgaW5zdGVhZAorICBvZiB0aGUgQyBmaWxlIHN0ZGVyciwgdG8gdXNlIHN0ZGVyciBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjODc4MjogQWRkIGEgdHJhaWxpbmcgbmV3bGluZSBpbiBsaW5lY2FjaGUudXBkYXRlY2FjaGUgdG8gdGhlIGxhc3QgbGluZQorICBvZiBmaWxlcyB3aXRob3V0IG9uZS4KKworLSBJc3N1ZSAjODcyOTogUmV0dXJuIE5vdEltcGxlbWVudGVkIGZyb20gY29sbGVjdGlvbnMuTWFwcGluZy5fX2VxX18gd2hlbgorICBjb21wYXJpbmcgdG8gYSBub24tbWFwcGluZy4KKworLSBJc3N1ZSAjODc3NDogdGFibmFubnkgdXNlcyB0aGUgZW5jb2RpbmcgY29va2llICgjY29kaW5nOi4uLikgdG8gdXNlIHRoZQorICBjb3JyZWN0IGVuY29kaW5nLgorCistIElzc3VlICM0ODcwOiBBZGQgYW4gYG9wdGlvbnNgIGF0dHJpYnV0ZSB0byBTU0wgY29udGV4dHMsIGFzIHdlbGwgYXMgc2V2ZXJhbAorICBgYE9QXypgYCBjb25zdGFudHMgdG8gdGhlIGBzc2xgIG1vZHVsZS4gIFRoaXMgYWxsb3dzIHRvIHNlbGVjdGl2ZWx5IGRpc2FibGUKKyAgcHJvdG9jb2wgdmVyc2lvbnMsIHdoZW4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQUk9UT0NPTF9TU0x2MjNgLgorCistIElzc3VlICM4NzU5OiBGaXhlZCB1c2VyIHBhdGhzIGluIHN5c2NvbmZpZyBmb3IgcG9zaXggYW5kIG9zMiBzY2hlbWVzLgorCistIElzc3VlICM4NjYzOiBkaXN0dXRpbHMubG9nIGVtdWxhdGVzIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4gRml4CisgIGNvbXBpbGF0aW9uIGluIGEgbm9uLUFTQ0lJIGRpcmVjdG9yeSBpZiBzdGRvdXQgZW5jb2RpbmcgaXMgQVNDSUkgKGVnLiBpZgorICBzdGRvdXQgaXMgbm90IGEgVFRZKS4KKworLSBJc3N1ZSAjODUxMzogb3MuZ2V0X2V4ZWNfcGF0aCgpIHN1cHBvcnRzIGInUEFUSCcga2V5IGFuZCBieXRlcyB2YWx1ZS4KKyAgc3VicHJvY2Vzcy5Qb3BlbigpIGFuZCBvcy5fZXhlY3ZwZSgpIHN1cHBvcnQgYnl0ZXMgcHJvZ3JhbSBuYW1lLiBBZGQKKyAgb3Muc3VwcG9ydHNfYnl0ZXNfZW52aXJvbiBmbGFnOiBUcnVlIGlmIHRoZSBuYXRpdmUgT1MgdHlwZSBvZiB0aGUgZW52aXJvbm1lbnQKKyAgaXMgYnl0ZXMgKGVnLiBGYWxzZSBvbiBXaW5kb3dzKS4KKworLSBJc3N1ZSAjODYzMzogdGFyZmlsZSBpcyBub3cgYWJsZSB0byByZWFkIGFuZCB3cml0ZSBhcmNoaXZlcyB3aXRoICJyYXciIGJpbmFyeQorICBwYXggaGVhZGVycyBhcyBkZXNjcmliZWQgaW4gUE9TSVguMS0yMDA4LgorCistIElzc3VlICMxMjg1MDg2OiBTcGVlZCB1cCB1cmxsaWIucGFyc2UgZnVuY3Rpb25zOiBxdW90ZSwgcXVvdGVfZnJvbV9ieXRlcywKKyAgdW5xdW90ZSwgdW5xdW90ZV90b19ieXRlcy4KKworLSBJc3N1ZSAjODY4ODogRGlzdHV0aWxzIG5vdyByZWNhbGN1bGF0ZXMgTUFOSUZFU1QgZXZlcnl0aW1lLgorCistIElzc3VlICM4NDc3OiBzc2wuUkFORF9lZ2QoKSBhbmQgc3NsLl90ZXN0X2RlY29kZV9jZXJ0KCkgc3VwcG9ydCBzdHIgd2l0aAorICBzdXJyb2dhdGVzIGFuZCBieXRlcyBmb3IgdGhlIGZpbGVuYW1lLgorCistIElzc3VlICM4NTUwOiBBZGQgZmlyc3QgY2xhc3MgYGBTU0xDb250ZXh0YGAgb2JqZWN0cyB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjODY4MTogTWFrZSB0aGUgemxpYiBtb2R1bGUncyBlcnJvciBtZXNzYWdlcyBtb3JlIGluZm9ybWF0aXZlIHdoZW4gdGhlCisgIHpsaWIgaXRzZWxmIGRvZXNuJ3QgZ2l2ZSBhbnkgZGV0YWlsZWQgZXhwbGFuYXRpb24uCisKKy0gVGhlIGF1ZGlvb3AgbW9kdWxlIG5vdyBzdXBwb3J0cyBzb3VuZCBmcmFnbWVudHMgb2YgbGVuZ3RoIGdyZWF0ZXIgdGhhbiAyKiozMQorICBieXRlcyBvbiA2NC1iaXQgbWFjaGluZXMsIGFuZCBpcyBQWV9TU0laRV9UX0NMRUFOLgorCistIElzc3VlICM0OTcyOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0byB0aGUgZnRwbGliLkZUUAorICBjbGFzcy4KKworLSBJc3N1ZSAjODY2NDogSW4gcHlfY29tcGlsZSwgY3JlYXRlIF9fcHljYWNoZV9fIHdoZW4gdGhlIGNvbXBpbGVkIHBhdGggaXMKKyAgZ2l2ZW4uCisKKy0gSXNzdWUgIzg1MTQ6IEFkZCBvcy5mc2VuY29kZSgpIGZ1bmN0aW9uIChVbml4IG9ubHkpOiBlbmNvZGUgYSBzdHJpbmcgdG8gYnl0ZXMKKyAgZm9yIHVzZSBpbiB0aGUgZmlsZSBzeXN0ZW0sIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM4NTcxOiBGaXggYW4gaW50ZXJuYWwgZXJyb3Igd2hlbiBjb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIGEgY2h1bmsKKyAgbGFyZ2VyIHRoYW4gMUdCIHdpdGggdGhlIHpsaWIgbW9kdWxlJ3MgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG9iamVjdHMuCisKKy0gSXNzdWUgIzg2MDM6IFN1cHBvcnQgYnl0ZXMgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgb24gVW5peDogQWRkIG9zLmVudmlyb25iCisgIG1hcHBpbmcgYW5kIG9zLmdldGVudmIoKSBmdW5jdGlvbi4gb3MudW5zZXRlbnYoKSBlbmNvZGVzIHN0ciBhcmd1bWVudCB0byB0aGUKKyAgZmlsZSBzeXN0ZW0gZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgKGluc3RlYWQgb2YKKyAgdXRmOC9zdHJpY3QpIGFuZCBhY2NlcHRzIGJ5dGVzLiBwb3NpeC5lbnZpcm9uIGtleXMgYW5kIHZhbHVlcyBhcmUgbm93IGJ5dGVzLgorCistIElzc3VlICM4NTczOiBhc3luY29yZSBfc3RyZXJyb3IoKSBmdW5jdGlvbiBtaWdodCB0aHJvdyBWYWx1ZUVycm9yLgorCistIElzc3VlICM4NDgzOiBhc3luY29yZS5kaXNwYXRjaGVyJ3MgX19nZXRhdHRyX18gbWV0aG9kIHByb2R1Y2VkIGNvbmZ1c2luZyBlcnJvcgorICBtZXNzYWdlcyB3aGVuIGFjY2Vzc2luZyB1bmRlZmluZWQgY2xhc3MgYXR0cmlidXRlcyBiZWNhdXNlIG9mIHRoZSBjaGVhcAorICBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuICBUaGUgY2hlYXAgaW5oZXJpdGFuY2UgaGFzIGJlZW4KKyAgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjNDI2NTogc2h1dGlsLmNvcHlmaWxlKCkgd2FzIGxlYWtpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGRpc2sgZmlsbHMuCisgIFBhdGNoIGJ5IFRyZXMgU2VhdmVyLgorCistIElzc3VlICM4MzkwOiB0YXJmaWxlIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGFzIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIKKyAgKGluc3RlYWQgb2YgcmVwbGFjZSBpbiByZWFkIG1vZGUgb3Igc3RyaWN0IGluIHdyaXRlIG1vZGUpLgorCistIElzc3VlICM3NzU1OiBVc2UgYW4gdW5lbmN1bWJlcmVkIGF1ZGlvIGZpbGUgZm9yIHRlc3RzLgorCistIElzc3VlICM4NjIxOiB1dWlkLnV1aWQ0KCkgcmV0dXJuZWQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzIGluIHRoZSBwYXJlbnQKKyAgYW5kIGFueSBjaGlsZHJlbiBjcmVhdGVkIHVzaW5nIGBgb3MuZm9ya2BgIG9uIE1hY09TIFggMTAuNi4KKworLSBJc3N1ZSAjODU2NzogRml4IHByZWNlZGVuY2Ugb2Ygc2lnbmFscyBpbiBEZWNpbWFsIG1vZHVsZTogd2hlbiBhIERlY2ltYWwKKyAgb3BlcmF0aW9uIHJhaXNlcyBtdWx0aXBsZSBzaWduYWxzIGFuZCBtb3JlIHRoYW4gb25lIG9mIHRob3NlIHNpZ25hbHMgaXMKKyAgdHJhcHBlZCwgdGhlIHNwZWNpZmljYXRpb24gZGV0ZXJtaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHNpZ25hbHMgc2hvdWxkIGJlCisgIGhhbmRsZWQuICBJbiBtYW55IGNhc2VzIHRoaXMgb3JkZXIgd2Fzbid0IGJlaW5nIGZvbGxvd2VkLCBsZWFkaW5nIHRvIHRoZSB3cm9uZworICBQeXRob24gZXhjZXB0aW9uIGJlaW5nIHJhaXNlZC4KKworLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIGBgaW9gYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdworICBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgaW1wbGljaXQgZmx1c2goKS4gIEFsc28gcWVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQorICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCistIElzc3VlICM0Njg3OiBGaXggYWNjdXJhY3kgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnRpbWVzIGRpc3BsYXllZCB3aXRoCisgIGdjLkRFQlVHX1NUQVRTLgorCistIElzc3VlICM4MzU0OiBUaGUgc2lnaW50ZXJydXB0IHNldHRpbmcgaXMgbm93IHByZXNlcnZlZCBmb3IgYWxsIHNpZ25hbHMsIG5vdAorICBqdXN0IFNJR0NITEQuCisKKy0gSXNzdWUgIzcxOTI6IHdlYmJyb3dzZXIuZ2V0KCJmaXJlZm94Iikgbm93IHdvcmtzIG9uIE1hYyBPUyBYLCBhcyBkb2VzCisgIHdlYmJyb3dzZXIuZ2V0KCJzYWZhcmkiKS4KKworLSBJc3N1ZSAjODQ2NDogdGFyZmlsZSBubyBsb25nZXIgY3JlYXRlcyBmaWxlcyB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMgc2V0IHdoZW4KKyAgbW9kZT0id3wiIGlzIHVzZWQuCisKKy0gSXNzdWUgIzc4MzQ6IEZpeCBjb25uZWN0KCkgb2YgQmx1ZXRvb3RoIEwyQ0FQIHNvY2tldHMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YKKyAgdGhlIExpbnV4IGtlcm5lbC4gIFBhdGNoIGJ5IFlhbml2IEFrbmluLgorCistIElzc3VlICM4Mjk1OiBBZGRlZCBzaHV0aWwudW5wYWNrX2FyY2hpdmUuCisKKy0gSXNzdWUgIzYzMTI6IEZpeGVkIGh0dHAgSEVBRCByZXF1ZXN0IHdoZW4gdGhlIHRyYW5zZmVyIGVuY29kaW5nIGlzIGNodW5rZWQuCisgIEl0IHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIGFuIGVtcHR5IHJlc3BvbnNlIG5vdy4KKworLSBJc3N1ZSAjODU0NjogUmVqZWN0IE5vbmUgZ2l2ZW4gYXMgdGhlIGJ1ZmZlcmluZyBhcmd1bWVudCB0byBfcHlpby5vcGVuLgorCistIElzc3VlICM4NTQ5OiBGaXggY29tcGlsaW5nIHRoZSBfc3NsIGV4dGVuc2lvbiB1bmRlciBBSVguICBQYXRjaCBieQorICBTcmlkaGFyIFJhdG5ha3VtYXIuCisKKy0gSXNzdWUgIzY2NTY6IGZpeCBsb2NhbGUuZm9ybWF0X3N0cmluZyB0byBoYW5kbGUgZXNjYXBlZCBwZXJjZW50cworICBhbmQgbWFwcGluZ3MuCisKKy0gSXNzdWUgIzIzMDI6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNodXRkb3duLCB3aGVyZQorICB0aGUgbWV0aG9kIGNvdWxkIGJsb2NrIGluZGVmaW5pdGVseSBpZiBjYWxsZWQganVzdCBiZWZvcmUgdGhlIGV2ZW50IGxvb3AKKyAgc3RhcnRlZCBydW5uaW5nLiAgVGhpcyBhbHNvIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIGZyZWV6ZXMgd2l0bmVzc2VkIGluCisgIHRlc3RfaHR0cHNlcnZlcnMuCisKKy0gSXNzdWUgIzg1MjQ6IFdoZW4gY3JlYXRpbmcgYW4gU1NMIHNvY2tldCwgdGhlIHRpbWVvdXQgdmFsdWUgb2YgdGhlIG9yaWdpbmFsCisgIHNvY2tldCB3YXNuJ3QgcmV0YWluZWQgKGluc3RlYWQsIGEgc29ja2V0IHdpdGggYSBwb3NpdGl2ZSB0aW1lb3V0IHdvdWxkIGJlCisgIHR1cm5lZCBpbnRvIGEgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXQpLgorCistIElzc3VlICM1MTAzOiBTU0wgaGFuZHNoYWtlIHdvdWxkIGlnbm9yZSB0aGUgc29ja2V0IHRpbWVvdXQgYW5kIGJsb2NrCisgIGluZGVmaW5pdGVseSBpZiB0aGUgb3RoZXIgZW5kIGRpZG4ndCByZXNwb25kLgorCistIFRoZSBkb19oYW5kc2hha2UoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgbm93IGFkanVzdHMgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlCisgIFNTTCBzdHJ1Y3R1cmUgaWYgbmVjZXNzYXJ5IChhcyBvdGhlciBtZXRob2RzIGFscmVhZHkgZG8pLgorCistIElzc3VlICM4MzkxOiBvcy5leGVjdnBlKCkgYW5kIG9zLmdldGVudigpIHN1cHBvcnRzIHVuaWNvZGUgd2l0aCBzdXJyb2dhdGVzIGFuZAorICBieXRlcyBzdHJpbmdzIGZvciBlbnZpcm9ubWVudCBrZXlzIGFuZCB2YWx1ZXMuCisKKy0gSXNzdWUgIzg0Njc6IFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHN1YnByb2Nlc3MgZW5jb2RlcyB0aGUgZXJyb3IKKyAgbWVzc2FnZSB1c2luZyBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZQorICBtZXNzYWdlLgorCistIElzc3VlICM4NDY4OiBiejIuQloyRmlsZSgpIGFjY2VwdHMgc3RyIHdpdGggc3Vycm9nYXRlcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLgorCistIElzc3VlICM4NDUxOiBTeXNsb2cgbW9kdWxlIG5vdyB1c2VzIGJhc2VuYW1lKHN5cy5hcmd2WzBdKSBpbnN0ZWFkIG9mIHRoZQorICBzdHJpbmcgInB5dGhvbiIgYXMgdGhlICppZGVudCouICBvcGVubG9nKCkgYXJndW1lbnRzIGFyZSBhbGwgb3B0aW9uYWwgYW5kCisgIGtleXdvcmRzLgorCistIElzc3VlICM4MTA4OiBGaXggdGhlIHVud3JhcCgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyB3aGVuIHRoZSBzb2NrZXQgaGFzIGEKKyAgbm9uLWluZmluaXRlIHRpbWVvdXQuICBBbHNvIG1ha2UgdGhhdCBtZXRob2QgZnJpZW5kbGllciB3aXRoIGFwcGxpY2F0aW9ucworICB3YW50aW5nIHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzb2NrZXQgaW4gY2xlYXItdGV4dCBtb2RlLCBieSBkaXNhYmxpbmcKKyAgT3BlblNTTCdzIGludGVybmFsIHJlYWRhaGVhZC4gIFRoYW5rcyB0byBEYXJyeWwgTWlsZXMgZm9yIGd1aWRhbmNlLgorCistIElzc3VlICM4NDk2OiBtYWtlIG1haWxjYXAubG9va3VwKCkgYWx3YXlzIHJldHVybiBhIGxpc3QsIHJhdGhlciB0aGFuIGFuCisgIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgR3JlZ29yeSBOb2ZpLgorCistIElzc3VlICM4MTk1OiBGaXggYSBjcmFzaCBpbiBzcWxpdGUgQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkgaWYgdGhlCisgIGNvbGxhdGlvbiBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjODQ4NDogTG9hZCBhbGwgY2lwaGVycyBhbmQgZGlnZXN0IGFsZ29yaXRobXMgd2hlbiBpbml0aWFsaXppbmcgdGhlIF9zc2wKKyAgZXh0ZW5zaW9uLCBzdWNoIHRoYXQgdmVyaWZpY2F0aW9uIG9mIHNvbWUgU1NMIGNlcnRpZmljYXRlcyBkb2Vzbid0IGZhaWwKKyAgYmVjYXVzZSBvZiBhbiAidW5rbm93biBhbGdvcml0aG0iLgorCistIElzc3VlICM2NTQ3OiBBZGRlZCB0aGUgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzIG9wdGlvbiB0byBzaHV0aWwuY29weXRyZWUuCisKKy0gSXNzdWUgIzE1NDAxMTI6IE5vdyBhbGxvd2luZyB0aGUgY2hvaWNlIG9mIGEgY29weSBmdW5jdGlvbiBpbiBzaHV0aWwuY29weXRyZWUuCisKKy0gSXNzdWUgIzQ4MTQ6IHRpbWVvdXQgcGFyYW1ldGVyIGlzIG5vdyBhcHBsaWVkIGFsc28gZm9yIGNvbm5lY3Rpb25zIHJlc3VsdGluZworICBmcm9tIFBPUlQvRVBSVCBjb21tYW5kcy4KKworLSBJc3N1ZSAjODQ2MzogYWRkZWQgbWlzc2luZyByZWZlcmVuY2UgdG8gYnp0YXIgaW4gc2h1dGlsJ3MgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjNzE1NDogdXJsbGliLnJlcXVlc3QgY2FuIG5vdyBkZXRlY3QgdGhlIHByb3h5IHNldHRpbmdzIG9uIE9TWCAxMC42IChhcworICBsb25nIGFzIHRoZSB1c2VyIGRpZG4ndCBzcGVjaWZ5ICdhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbicpLgorCistIElzc3VlICMzODE3OiBmdHBsaWIuRlRQLmFib3J0KCkgbWV0aG9kIG5vdyBjb25zaWRlcnMgMjI1IGEgdmFsaWQgcmVzcG9uc2UgY29kZQorICBhcyBzdGF0ZWQgaW4gUkZDLTk1OSBhdCBjaGFwdGVyIDUuNC4KKworLSBJc3N1ZSAjODM5NDogX2N0eXBlcy5kbG9wZW4oKSBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoCisgIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzg1MDcyODogQWRkIGEgKnRpbWVvdXQqIHBhcmFtZXRlciB0byB0aGUgYGFjcXVpcmUoKWAgbWV0aG9kIG9mCisgIGB0aHJlYWRpbmcuU2VtYXBob3JlYCBvYmplY3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCistIElzc3VlICM4MzIyOiBBZGQgYSAqY2lwaGVycyogYXJndW1lbnQgdG8gU1NMIHNvY2tldHMsIHNvIGFzIHRvIGNoYW5nZSB0aGUKKyAgYXZhaWxhYmxlIGNpcGhlciBsaXN0LiAgSGVscHMgZml4IHRlc3Rfc3NsIHdpdGggT3BlblNTTCAxLjAuMC4KKworLSBJc3N1ZSAjODM5Mzogc3VicHJvY2VzcyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMgZm9yCisgIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCistIElzc3VlICM3NjA2OiBYTUwtUlBDIHRyYWNlYmFjayBzdG9yZWQgaW4gWC10cmFjZWJhY2sgaXMgbm93IGVuY29kZWQgdG8gQVNDSUkKKyAgdXNpbmcgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NDEyOiBvcy5zeXN0ZW0oKSBub3cgYWNjZXB0cyBieXRlcywgYnl0ZWFycmF5IGFuZCBzdHIgd2l0aCBzdXJyb2dhdGVzLgorCistIElzc3VlICMyOTg3OiBSRkMyNzMyIHN1cHBvcnQgZm9yIHVybHBhcnNlIChJUHY2IGFkZHJlc3NlcykuIFBhdGNoIGJ5IFRvbnkKKyAgTG9ja2UgYW5kIEhhbnMgVWxyaWNoIE5pZWRlcm1hbm4uCisKKy0gSXNzdWUgIzUyNzc6IEZpeCBxdW90ZSBjb3VudGluZyB3aGVuIHBhcnNpbmcgUkZDIDIyMzEgZW5jb2RlZCBwYXJhbWV0ZXJzLgorCistIElzc3VlICM3MzE2OiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBvZiBsb2NrIG9iamVjdHMgaW4gdGhlIGBgdGhyZWFkaW5nYGAKKyAgbW9kdWxlIG5vdyB0YWtlcyBhbiBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50IGluIHNlY29uZHMuICBUaW1lb3V0IHN1cHBvcnQKKyAgcmVsaWVzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIGxpYnJhcnksIHNvIGFzIHRvIGF2b2lkIGEgc2VtaS1idXN5IHdhaXQgbG9vcC4KKworLSBJc3N1ZSAjODM4MzogcGlja2xlIGFuZCBwaWNrbGV0b29scyB1c2Ugc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyIHdoZW4KKyAgZW5jb2RpbmcgdW5pY29kZSBhcyB1dGY4IHRvIHN1cHBvcnQgbG9uZSBzdXJyb2dhdGVzIGFuZCBzdGF5IGNvbXBhdGlibGUgd2l0aAorICBQeXRob24gMi54IGFuZCAzLnguCisKKy0gSXNzdWUgIzc1ODU6IGRpZmZsaWIgY29udGV4dCBhbmQgdW5pZmllZCBkaWZmcyBub3cgcGxhY2UgYSB0YWIgYmV0d2VlbgorICBmaWxlbmFtZSBhbmQgZGF0ZSwgY29uZm9ybWluZyB0byB0aGUgJ3N0YW5kYXJkcycgdGhleSB3ZXJlIG9yaWdpbmFsbHkgZGVzaWduZWQKKyAgdG8gZm9sbG93LiAgVGhpcyBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggcGF0Y2ggdG9vbHMuCisKKy0gSXNzdWUgIzc0NzI6IEZpeGVkIHR5cG8gaW4gZW1haWwuZW5jb2RlcnMgbW9kdWxlOyBtZXNzYWdlcyB1c2luZyBJU08tMjAyMgorICBjaGFyYWN0ZXIgc2V0cyB3aWxsIG5vdyBjb25zaXN0ZW50bHkgdXNlIGEgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBvZiA3Yml0CisgIHJhdGhlciB0aGFuIHNvbWV0aW1lcyBiZWluZyBtYXJrZWQgYXMgOGJpdC4KKworLSBJc3N1ZSAjODM3NTogdGVzdF9kaXN0dXRpbHMgbm93IGNoZWNrcyBpZiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhcmUgc3RpbGwKKyAgcHJlc2VudCBiZWZvcmUgaXQgY2xlYW5zIHRoZW0uCisKKy0gSXNzdWUgIzgzNzQ6IFVwZGF0ZSB0aGUgaW50ZXJuYWwgYWxpYXMgdGFibGUgaW4gdGhlIGBgbG9jYWxlYGAgbW9kdWxlIHRvCisgIGNvdmVyIHJlY2VudCBsb2NhbGUgY2hhbmdlcyBhbmQgYWRkaXRpb25zLgorCistIElzc3VlICM4MzIxOiBHaXZlIGFjY2VzcyB0byBPcGVuU1NMIHZlcnNpb24gbnVtYmVycyBmcm9tIHRoZSBgc3NsYCBtb2R1bGUsCisgIHVzaW5nIHRoZSBuZXcgYXR0cmlidXRlcyBgc3NsLk9QRU5TU0xfVkVSU0lPTmAsIGBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk9gIGFuZAorICBgc3NsLk9QRU5TU0xfVkVSU0lPTl9OVU1CRVJgLgorCistIEFkZCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSBhbmQgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KKworLSBJc3N1ZSAjODI1NzogVGhlIERlY2ltYWwgY29uc3RydWN0IG5vdyBhY2NlcHRzIGEgZmxvYXQgaW5zdGFuY2UgZGlyZWN0bHksCisgIGNvbnZlcnRpbmcgdGhhdCBmbG9hdCB0byBhIERlY2ltYWwgb2YgZXF1YWwgdmFsdWU6CisKKyAgICAgPj4+IERlY2ltYWwoMS4xKQorICAgICBEZWNpbWFsKCcxLjEwMDAwMDAwMDAwMDAwMDA4ODgxNzg0MTk3MDAxMjUyMzIzMzg5MDUzMzQ0NzI2NTYyNScpCisKKy0gSXNzdWUgIzgyOTQ6IFRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBEZWNpbWFsIGFuZCBmbG9hdCBpbnN0YW5jZXMKKyAgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzcyNzk6IENvbXBhcmlzb25zIGludm9sdmluZyBhIERlY2ltYWwgc2lnbmFsaW5nIE5hTiBub3cgc2lnbmFsCisgIEludmFsaWRPcGVyYXRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcgRmFsc2UuICAoQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQKKyAgTmFOIGFyZSB1bmNoYW5nZWQuKSAgQWxzbywgRGVjaW1hbCBxdWlldCBOYU5zIGFyZSBub3cgaGFzaGFibGU7IERlY2ltYWwKKyAgc2lnbmFsaW5nIE5hTnMgcmVtYWluIHVuaGFzaGFibGUuCisKKy0gSXNzdWUgIzI1MzE6IENvbXBhcmlzb24gb3BlcmF0aW9ucyBiZXR3ZWVuIGZsb2F0cyBhbmQgRGVjaW1hbCBpbnN0YW5jZXMgbm93CisgIHJldHVybiBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzOyBwcmV2aW91c2x5IHRoZXkKKyAgcmV0dXJuZWQgYW4gYXJiaXRyYXJ5IHJlc3VsdCBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgaWQoZmxvYXQpIGFuZAorICBpZChEZWNpbWFsKS4gIFNlZSBhbHNvIGlzc3VlICM4MTg4LCB3aGljaCBhZGRzIERlY2ltYWwtdG8tRnJhY3Rpb24KKyAgY29tcGFyaXNvbnMuCisKKy0gQWRkZWQgYSBzdWJ0cmFjdCgpIG1ldGhvZCB0byBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisKKy0gSXNzdWUgIzgyMzM6IFdoZW4gcnVuIGFzIGEgc2NyaXB0LCBweV9jb21waWxlLnB5IG9wdGlvbmFsbHkgdGFrZXMgYSBzaW5nbGUKKyAgYXJndW1lbnQgYC1gIHdoaWNoIHRlbGxzIGl0IHRvIHJlYWQgZmlsZXMgdG8gY29tcGlsZSBmcm9tIHN0ZGluLiAgRWFjaCBsaW5lIGlzCisgIHJlYWQgb24gZGVtYW5kIGFuZCB0aGUgbmFtZWQgZmlsZSBpcyBjb21waWxlZCBpbW1lZGlhdGVseS4gIChPcmlnaW5hbCBwYXRjaCBieQorICBQaW90ciBPxbxhcm93c2tpKS4KKworLSBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZTogVW5pY29kZSBjb2RlcG9pbnRzIGxpbmUgdGFidWxhdGlvbiAoMHgwQikgYW5kCisgIGZvcm0gZmVlZCAoMHgwQykgYXJlIG5vdyBjb25zaWRlcmVkIGxpbmVicmVha3MsIGFzIHNwZWNpZmllZCBpbiBVbmljb2RlCisgIFN0YW5kYXJkIEFubmV4ICMxNC4gIFNlZSBpc3N1ZSAjNzY0My4gIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjE0LworCistIENvbXBhcmlzb25zIHVzaW5nIG9uZSBvZiA8LCA8PSwgPiwgPj0gYmV0d2VlbiBhIGNvbXBsZXggaW5zdGFuY2UgYW5kIGEKKyAgRnJhY3Rpb25zIGluc3RhbmNlIG5vdyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgVHJ1ZS9GYWxzZS4gIFRoaXMKKyAgbWFrZXMgRnJhY3Rpb24gPD0+IGNvbXBsZXggY29tcGFyaXNvbnMgY29uc2lzdGVudCB3aXRoIGludCA8PT4gY29tcGxleCwgZmxvYXQKKyAgPD0+IGNvbXBsZXgsIGFuZCBjb21wbGV4IDw9PiBjb21wbGV4IGNvbXBhcmlzb25zLgorCistIElzc3VlICM4MTM5OiBvc3NhdWRpb2RldiBkaWRuJ3QgaW5pdGlhbGl6ZSBpdHMgdHlwZXMgcHJvcGVybHksIHRoZXJlZm9yZSBzb21lCisgIG1ldGhvZHMgKHN1Y2ggYXMgb3NzX21peGVyX2RldmljZS5maWxlbm8oKSkgd2VyZSBub3QgYXZhaWxhYmxlLiAgSW5pdGlhbCBwYXRjaAorICBieSBCZXJ0cmFuZCBKYW5pbi4KKworLSBJc3N1ZSAjODIwNTogUmVtb3ZlIHRoZSAiTW9kdWxlcyIgZGlyZWN0b3J5IGZyb20gc3lzLnBhdGggd2hlbiBQeXRob24gaXMKKyAgcnVubmluZyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkgKFBPU0lYIG9ubHkpLgorCistIElzc3VlICM3NTEyOiBzaHV0aWwuY29weXN0YXQoKSBjb3VsZCByYWlzZSBhbiBPU0Vycm9yIHdoZW4gdGhlIGZpbGVzeXN0ZW0KKyAgZGlkbid0IHN1cHBvcnQgY2hmbGFncygpIChmb3IgZXhhbXBsZSBaRlMgdW5kZXIgRnJlZUJTRCkuICBUaGUgZXJyb3IgaXMgbm93CisgIHNpbGVuY2VkLgorCistIElzc3VlICM3ODYwOiBwbGF0Zm9ybS51bmFtZSBub3cgcmVwb3J0cyB0aGUgY29ycmVjdCAnbWFjaGluZScgdHlwZSB3aGVuIFB5dGhvbgorICBpcyBydW5uaW5nIGluIFdPVzY0IG1vZGUgb24gNjQgYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzM4OTAsICM4MjIyOiBGaXggcmVjdigpIGFuZCByZWN2X2ludG8oKSBvbiBub24tYmxvY2tpbmcgU1NMIHNvY2tldHMuCisgIEFsc28sIGVuYWJsZSB0aGUgU1NMX01PREVfQVVUT19SRVRSWSBmbGFnIG9uIFNTTCBzb2NrZXRzLCBzbyB0aGF0IGJsb2NraW5nCisgIHJlYWRzIGFuZCB3cml0ZXMgYXJlIGFsd2F5cyByZXRyaWVkIGJ5IE9wZW5TU0wgaXRzZWxmLgorCistIElzc3VlICM0MjgyOiBGaXggdGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIHByb2ZpbGUgbW9kdWxlIGZvciBhIG5vbi1BU0NJSQorICBzY3JpcHQsIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5IG1vZGUgYW5kIG5vdCBpbiB0ZXh0IG1vZGUgd2l0aCB0aGUgZGVmYXVsdAorICAodXRmOCkgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzgxNzk6IEZpeCBtYWNwYXRoLnJlYWxwYXRoKCkgb24gYSBub24tZXhpc3RpbmcgcGF0aC4KKworLSBJc3N1ZSAjODAyNDogVXBkYXRlIHRoZSBVbmljb2RlIGRhdGFiYXNlIHRvIDUuMi4KKworLSBJc3N1ZSAjODE2ODogcHlfY29tcGlsZSBub3cgaGFuZGxlcyBmaWxlcyB3aXRoIHV0Zi04IEJPTVMuCisKKy0gYGB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmdgYCBub3cgcmV0dXJucyBgYCd1dGYtOC1zaWcnYGAgd2hlbiBhIFVURi04IEJPTSBpcworICBkZXRlY3RlZC4KKworLSBJc3N1ZSAjNjcxNi8yOiBCYWNrc2xhc2gtcmVwbGFjZSBlcnJvciBvdXRwdXQgaW4gY29tcGlsYWxsLgorCistIElzc3VlICM0OTYxOiBJbmNvbnNpc3RlbnQvd3JvbmcgcmVzdWx0IG9mIGFza3llc25vIGZ1bmN0aW9uIGluIHRrTWVzc2FnZUJveAorICB3aXRoIFRjbC9Uay04LjUuCisKKy0gSXNzdWUgIzgxNDA6IGV4dGVuZCBjb21waWxlYWxsIHRvIGNvbXBpbGUgc2luZ2xlIGZpbGVzLiAgQWRkIC1pIG9wdGlvbi4KKworLSBJc3N1ZSAjNzM1NjogY3R5cGVzLnV0aWw6IE1ha2UgcGFyc2luZyBvZiBsZGNvbmZpZyBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCisgIGxvY2FsZS4KKworLSBUaGUgaW50ZXJuYWxzIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBvbiBQT1NJWCBzeXN0ZW1zIGhhdmUgYmVlbiByZXBsYWNlZCBieQorICBhbiBleHRlbnNpb24gbW9kdWxlIChfcG9zaXhzdWJwcm9jZXNzKSBzbyB0aGF0IHRoZSBmb3JrKCkrZXhlYygpIGNhbiBiZSBkb25lCisgIHNhZmVseSB3aXRob3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBkZWFkbG9jayBpbiBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucy4KKworLSBzdWJwcm9jZXNzLlBvcGVuIG5vdyBoYXMgcmVzdG9yZV9zaWduYWxzIGFuZCBzdGFydF9uZXdfc2Vzc2lvbiBmZWF0dXJlcy4gIFRoZQorICBkZWZhdWx0IG9mIHJlc3RvcmVfc2lnbmFscz1UcnVlIGlzIGEgbmV3IGJlaGF2aW9yIGNvbXBhcmVkIHRvIGVhcmxpZXIgUHl0aG9uCisgIHZlcnNpb25zLiAgVGhpcyBtZWFucyB0aGF0IHNpZ25hbHMgc3VjaCBhcyBTSUdQSVBFIGFyZSBub3QgaWdub3JlZCBieSBkZWZhdWx0CisgIGluIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBQeXRob24gKElzc3VlICMxNjUyKS4KKworLSBJc3N1ZSAjNjQ3MjogVGhlIHhtbC5ldHJlZSBwYWNrYWdlIGlzIHVwZGF0ZWQgdG8gRWxlbWVudFRyZWUgMS4zLiAgVGhlCisgIGNFbGVtZW50VHJlZSBtb2R1bGUgaXMgdXBkYXRlZCB0b28uCisKKy0gSXNzdWUgIzc3NzQ6IFNldCBzeXMuZXhlY3V0YWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgaWYgYXJndlswXSBoYXMgYmVlbiBzZXQgdG8KKyAgYW4gbm9uIGV4aXN0ZW50IHByb2dyYW0gbmFtZSBhbmQgUHl0aG9uIGlzIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtCisgIG5hbWUuCisKKy0gSXNzdWUgIzc4ODA6IEZpeCBzeXNjb25maWcgd2hlbiB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgaXMgYSBzeW1ib2xpYyBsaW5rLgorCistIElzc3VlICM2NTA5OiBmaXggcmUuc3ViIHRvIHdvcmsgcHJvcGVybHkgd2hlbiB0aGUgcGF0dGVybiwgdGhlIHN0cmluZywgYW5kIHRoZQorICByZXBsYWNlbWVudCB3ZXJlIGFsbCBieXRlcy4gIFBhdGNoIGJ5IEFudG9pbmUgUGl0cm91LgorCistIFRoZSBzcWxpdGUzIG1vZHVsZSB3YXMgdXBkYXRlZCB0byBweXNxbGl0ZSAyLjYuMC4gVGhpcyBmaXhlcyBzZXZlcmFsIG9ic2N1cmUKKyAgYnVncyBhbmQgYWxsb3dzIGxvYWRpbmcgU1FMaXRlIGV4dGVuc2lvbnMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLgorCistIElzc3VlICMxMDU0OTQzOiBGaXggYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoJ05GQycsIHRleHQpYGAgZm9yIHRoZSBQdWJsaWMKKyAgUmV2aWV3IElzc3VlICMyOSAoaHR0cDovL3VuaWNvZGUub3JnL3Jldmlldy9wci0yOS5odG1sKS4KKworLSBJc3N1ZSAjNzQ5NDogZml4IGEgY3Jhc2ggaW4gX2xzcHJvZiAoY1Byb2ZpbGUpIGFmdGVyIGNsZWFyaW5nIHRoZSBwcm9maWxlciwKKyAgcmVzZXQgYWxzbyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBwb2ludGVyIGNvbnRleHQuCisKKy0gSXNzdWUgIzcyMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBUYXJGaWxlCisgIGNsYXNzLgorCistIElzc3VlICM3MjUwOiBGaXggaW5mbyBsZWFrIG9mIG9zLmVudmlyb24gYWNyb3NzIG11bHRpLXJ1biB1c2VzIG9mCisgIHdzZ2lyZWYuaGFuZGxlcnMuQ0dJSGFuZGxlci4KKworLSBJc3N1ZSAjMTcyOTMwNTogRml4IGRvY3Rlc3QgdG8gaGFuZGxlIGVuY29kZSBlcnJvciB3aXRoICJiYWNrc2xhc2hyZXBsYWNlIi4KKworLSBJc3N1ZSAjNjkxMjkxOiBjb2RlY3Mub3BlbigpIHNob3VsZCBub3QgY29udmVydCBlbmQgb2YgbGluZXMgb24gcmVhZGluZyBhbmQKKyAgd3JpdGluZy4KKworLSBJc3N1ZSAjNzg2OTogbG9nZ2luZzogaW1wcm92ZWQgZGlhZ25vc3RpYyBmb3IgZm9ybWF0LXRpbWUgZXJyb3JzLgorCistIElzc3VlICM3ODY4OiBsb2dnaW5nOiBhZGRlZCBsb2dnZXJDbGFzcyBhdHRyaWJ1dGUgdG8gTWFuYWdlci4KKworLSBsb2dnaW5nOiBJbXBsZW1lbnRlZCBQRVAgMzkxLgorCistIElzc3VlICMxNTM3NzIxOiBBZGQgYSB3cml0ZWhlYWRlcigpIG1ldGhvZCB0byBjc3YuRGljdFdyaXRlci4KKworLSBJc3N1ZSAjNzk1OTogY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9ucyBhcmUgbm93IHJlZ2lzdGVyZWQgY29ycmVjdGx5IHdpdGggdGhlCisgIGN5Y2xlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICM1ODAxOiByZW1vdmVkIHNwdXJpb3VzIGVtcHR5IGxpbmVzIGluIHdzZ2lyZWYuCisKKy0gSXNzdWUgIzY2NjY6IGZpeCBidWcgaW4gdHJhY2UucHkgdGhhdCBhcHBsaWVkIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlCisgIGlnbm9yZWQgb25seSB0byB0aGUgZmlyc3QgZmlsZS4gIE5vdGVkIGJ5IEJvZ2RhbiBPcGFuY2h1ay4KKworLSBJc3N1ZSAjNzU5NzogY3Vyc2VzLnVzZV9lbnYoKSBjYW4gbm93IGJlIGNhbGxlZCBiZWZvcmUgaW5pdHNjcigpLiAgTm90ZWQgYnkKKyAgS2FuLVJ1IENoZW4uCisKKy0gSXNzdWUgIzczMTA6IGZpeCB0aGUgX19yZXByX18gb2Ygb3MuZW52aXJvbiB0byBzaG93IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKy0gSXNzdWUgIzc5NzA6IGVtYWlsLkdlbmVyYXRvci5mbGF0dGVuIG5vdyBjb3JyZWN0bHkgZmxhdHRlbnMgbWVzc2FnZS9yZmM4MjIKKyAgbWVzc2FnZXMgcGFyc2VkIGJ5IGVtYWlsLlBhcnNlci5IZWFkZXJQYXJzZXIuCisKKy0gSXNzdWUgIzczNjE6IEltcG9ydGxpYiB3YXMgbm90IHByb3Blcmx5IGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4KKyAgYnl0ZWNvZGUgZmlsZSB3aGVuIGl0IHdhcyBsZXNzIHRoZW4gOCBieXRlcy4KKworLSBJc3N1ZSAjNzYzMzogSW4gdGhlIGRlY2ltYWwgbW9kdWxlLCBDb250ZXh0IGNsYXNzIG1ldGhvZHMgKHdpdGggdGhlIGV4Y2VwdGlvbgorICBvZiBjYW5vbmljYWwgYW5kIGlzX2Nhbm9uaWNhbCkgbm93IGFjY2VwdCBpbnN0YW5jZXMgb2YgaW50IGFuZCBsb25nIHdoZXJldmVyIGEKKyAgRGVjaW1hbCBpbnN0YW5jZSBpcyBhY2NlcHRlZCwgYW5kIGltcGxpY2l0bHkgY29udmVydCB0aGF0IGFyZ3VtZW50IHRvIERlY2ltYWwuCisgIFByZXZpb3VzbHkgb25seSBzb21lIGFyZ3VtZW50cyB3ZXJlIGNvbnZlcnRlZC4KKworLSBJc3N1ZSAjNzgzNTogc2hlbHZlIHNob3VsZCBubyBsb25nZXIgcHJvZHVjZSBteXN0ZXJpb3VzIHdhcm5pbmdzIGR1cmluZworICBpbnRlcnByZXRlciBzaHV0ZG93bi4KKworLSBJc3N1ZSAjMjc0NjogRG9uJ3QgZXNjYXBlIGFtcGVyc2FuZHMgYW5kIGFuZ2xlIGJyYWNrZXRzICgiJiIsICI8IiwgIj4iKSBpbiBYTUwKKyAgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYW5kIGNvbW1lbnRzLiAgVGhlc2UgcmF3IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnkgdGhlCisgIFhNTCBzcGVjaWZpY2F0aW9uLCBhbmQgYXJlIG5lY2Vzc2FyeSB3aGVuIG91dHB1dHRpbmcgZS5nLiAgUEhQIGNvZGUgaW4gYQorICBwcm9jZXNzaW5nIGluc3RydWN0aW9uLiAgUGF0Y2ggYnkgTmVpbCBNdWxsZXIuCisKKy0gSXNzdWUgIzYyMzM6IEVsZW1lbnRUcmVlIGZhaWxlZCBjb252ZXJ0aW5nIHVuaWNvZGUgY2hhcmFjdGVycyB0byBYTUwgZW50aXRpZXMKKyAgd2hlbiB0aGV5IGNvdWxkJ3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHJlcXVlc3RlZCBvdXRwdXQgZW5jb2RpbmcuICBQYXRjaCBieQorICBKZXJyeSBDaGVuLgorCistIElzc3VlICM2MDAzOiBhZGQgYW4gYXJndW1lbnQgdG8gYGB6aXBmaWxlLlppcGZpbGUud3JpdGVzdHJgYCB0byBzcGVjaWZ5IHRoZQorICBjb21wcmVzc2lvbiB0eXBlLgorCistIElzc3VlICM0NzcyOiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBhbiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCBpcworICBzcGVjaWZpZWQsIHJhdGhlciB0aGFuIGZhbGwgdGhyb3VnaCB0byBBRl9QQUNLRVQgKGluIHRoZSBgc29ja2V0YCBtb2R1bGUpLgorICBBbHNvLCByYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFR5cGVFcnJvciB3aGVuIGFuIHVua25vd24gVElQQyBhZGRyZXNzIHR5cGUKKyAgaXMgc3BlY2lmaWVkLiAgUGF0Y2ggYnkgQnJpYW4gQ3VydGluLgorCistIElzc3VlICM2OTM5OiBGaXggZmlsZSBJL08gb2JqZWN0cyBpbiB0aGUgYGlvYCBtb2R1bGUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZmlsZQorICBwb3NpdGlvbiB3aGVuIGNhbGxpbmcgYHRydW5jYXRlKClgLiAgSXQgd291bGQgcHJldmlvdXNseSBjaGFuZ2UgdGhlIGZpbGUKKyAgcG9zaXRpb24gdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbiBvZgorICBmdHJ1bmNhdGUoKSBhbmQgb3RoZXIgdHJ1bmNhdGlvbiBBUElzLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCisKKy0gSXNzdWUgIzc2MTA6IFJld29ya2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbAorICBgYHppcGZpbGUuWmlwRXh0RmlsZWBgIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGZpbGVzIHN0b3JlZCBpbnNpZGUgYW4KKyAgYXJjaGl2ZS4gIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgYW5kIGNhbiBiZSB3cmFwcGVkIGluCisgIGEgYGBpby5CdWZmZXJlZFJlYWRlcmBgIG9iamVjdCBmb3IgbW9yZSBzcGVlZHVwcy4gIEl0IGFsc28gc29sdmVzIGFuCisgIGlzc3VlIHdoZXJlIGludGVybGVhdmVkIGNhbGxzIHRvIGByZWFkKClgIGFuZCBgcmVhZGxpbmUoKWAgZ2l2ZSB3cm9uZyByZXN1bHRzLgorICBQYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzY5NjM6IEFkZGVkICJtYXh0YXNrc3BlcmNoaWxkIiBhcmd1bWVudCB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbCwKKyAgYWxsb3dpbmcgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUKKyAgd29ya2VyIGJlZm9yZSB0aGF0IHdvcmtlciBpcyB0ZXJtaW5hdGVkLCBhbmQgYSBuZXcgb25lIGNyZWF0ZWQgdG8gcmVwbGFjZSBpdC4KKworLSBJc3N1ZSAjNzc5MjogUmVnaXN0ZXJpbmcgbm9uLWNsYXNzZXMgdG8gQUJDcyByYWlzZWQgYW4gb2JzY3VyZSBlcnJvci4KKworLSBJc3N1ZSAjNzc4NTogRG9uJ3QgYWNjZXB0IGJ5dGVzIGluIEZpbGVJTy53cml0ZSgpLgorCistIFJlbW92ZWQgdGhlIGZ1bmN0aW9ucyAndmVyaWZ5JyBhbmQgJ3ZlcmVxJyBmcm9tIExpYi90ZXN0L3N1cHBvcnQucHkuCisKKy0gSXNzdWUgIzc3NzM6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSB3aGVuCisgIHRoZSByZWxlYXNlIGZpbGUgaXMgZW1wdHkuCisKKy0gSXNzdWUgIzc1NjE6IEZpeCBjcmFzaGVzIHdoZW4gdXNpbmcgYnl0ZWFycmF5IG9iamVjdHMgd2l0aCB0aGUgcG9zaXgKKyAgbW9kdWxlLgorCistIElzc3VlICMxNjcwNzY1OiBQcmV2ZW50IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IgZnJvbSByZS13cmFwcGluZyBoZWFkZXJzIGluCisgIG11bHRpcGFydC9zaWduZWQgTUlNRSBwYXJ0cywgd2hpY2ggZml4ZXMgb25lIG9mIHRoZSBzb3VyY2VzIG9mIGludmFsaWQKKyAgbW9kaWZpY2F0aW9ucyB0byBzdWNoIHBhcnRzIGJ5IEdlbmVyYXRvci4KKworLSBJc3N1ZSAjNzcwMzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBgYmluYXNjaWkuYTJiaHF4YC4gIFBhdGNoCisgIGJ5IEZsb3JlbnQgWGljbHVuYSwgYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCisKKy0gSXNzdWUgIzc3MDE6IEZpeCBjcmFzaCBpbiBiaW5hc2NpaS5iMmFfdXUoKSBpbiBkZWJ1ZyBtb2RlIHdoZW4gZ2l2ZW4gYSAxLWJ5dGUKKyAgYXJndW1lbnQuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMzI5OTogRml4IHBvc3NpYmxlIGNyYXNoIGluIHRoZSBfc3JlIG1vZHVsZSB3aGVuIGdpdmVuIGJhZCBhcmd1bWVudAorICB2YWx1ZXMgaW4gZGVidWcgbW9kZS4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMyODQ2OiBBZGQgc3VwcG9ydCBmb3IgZ3ppcC5HemlwRmlsZSByZWFkaW5nIHplcm8tcGFkZGVkIGZpbGVzLiAgUGF0Y2gKKyAgYnkgQnJpYW4gQ3VydGluLgorCistIElzc3VlICM3NjgxOiBVc2UgZmxvb3IgZGl2aXNpb24gaW4gYXBwcm9waWF0ZSBwbGFjZXMgaW4gdGhlIHdhdmUgbW9kdWxlLgorCistIElzc3VlICM1MzcyOiBEcm9wIHRoZSByZXVzZSBvZiAubyBmaWxlcyBpbiBEaXN0dXRpbHMnIGNjb21waWxlciAoc2luY2UKKyAgRXh0ZW5zaW9uIGV4dHJhIG9wdGlvbnMgbWF5IGNoYW5nZSB0aGUgb3V0cHV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIC5jCisgIGZpbGUpLiBJbml0aWFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCisKKy0gSXNzdWUgIzc2MTc6IE1ha2Ugc3VyZSBkaXN0dXRpbHMudW5peGNjb21waWxlci5Vbml4Q0NvbXBpbGVyIHJlY29nbml6ZXMgZ2NjCisgIHdoZW4gaXQgaGFzIGEgZnVsbHkgcXVhbGlmaWVkIGNvbmZpZ3VyYXRpb24gcHJlZml4LiBJbml0aWFsIHBhdGNoIGJ5IEFyZnJldmVyLgorCistIElzc3VlICM3MTA1OiBNYWtlIFdlYWtLZXlEaWN0aW9uYXJ5IGFuZCBXZWFrVmFsdWVEaWN0aW9uYXJ5IHJvYnVzdCBhZ2FpbnN0IHRoZQorICBkZXN0cnVjdGlvbiBvZiB3ZWFrcmVmJ2VkIG9iamVjdHMgd2hpbGUgaXRlcmF0aW5nLgorCistIElzc3VlICM3NDU1OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gY1BpY2tsZSBvbiBpbnZhbGlkIGlucHV0LiAgUGF0Y2ggYnkgVmljdG9yCisgIFN0aW5uZXIuCisKKy0gSXNzdWUgIzE2MjgyMDU6IFNvY2tldCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkgc29ja2V0LnNvY2tldC5tYWtlZmlsZSgpIG5vdworICBwcm9wZXJseSBoYW5kbGVzIEVJTlRSIHdpdGhpbiB0aGUgcmVhZCwgcmVhZGxpbmUsIHdyaXRlICYgZmx1c2ggbWV0aG9kcy4gIFRoZQorICBzb2NrZXQuc2VuZGFsbCgpIG1ldGhvZCBub3cgcHJvcGVybHkgaGFuZGxlcyBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbHMuCisKKy0gSXNzdWUgIzc0NzE6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEd6aXBGaWxlJ3MgYnVmZmVyaW5nIG1lY2hhbmlzbSwgYW5kCisgIG1ha2UgaXQgaW1wbGVtZW50IHRoZSBgaW8uQnVmZmVyZWRJT0Jhc2VgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcyBieQorICB3cmFwcGluZyBpdCBpbiBhbiBgaW8uQnVmZmVyZWRSZWFkZXJgLiAgUGF0Y2ggYnkgTmlyIEFpZGVzLgorCistIElzc3VlICMzOTcyOiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcworICBwYXJhbWV0ZXIgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGVyZSB5b3VyIGNvbm5lY3Rpb25zIGNvbWUgZnJvbS4KKworLSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLgorCistIElzc3VlICM1NTExOiBub3cgemlwZmlsZS5aaXBGaWxlIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLiAgSW5pdGlhbAorICBwYXRjaCBieSBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzc1NTY6IE1ha2Ugc3VyZSBEaXN0dXRpbHMnIG1zdmM5Y29tcGlsZSByZWFkcyBhbmQgd3JpdGVzIHRoZSBNU1ZDIFhNTAorICBNYW5pZmVzdCBmaWxlIGluIHRleHQgbW9kZSBzbyBzdHJpbmcgcGF0dGVybnMgY2FuIGJlIHVzZWQgaW4gcmVndWxhcgorICBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjNzU1MjogUmVtb3ZlZCBsaW5lIGZlZWQgaW4gdGhlIGJhc2U2NCBBdXRob3JpemF0aW9uIGhlYWRlciBpbiB0aGUKKyAgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIHRvIGF2b2lkIGFuIGVycm9yIHdoZW4gUHlQSSByZWFkcyBpdC4gIFRoaXMgb2NjdXJzIG9uCisgIGxvbmcgcGFzc3dvcmRzLiBJbml0aWFsIHBhdGNoIGJ5IEpQIFN0LiBQaWVycmUuCisKKy0gSXNzdWUgIzcyMzE6IHVybGxpYjIgY2Fubm90IGhhbmRsZSBodHRwcyB3aXRoIHByb3h5IHJlcXVpcmluZyBhdXRoLiAgUGF0Y2ggYnkKKyAgVGF0c3VoaXJvIFRzdWppa2F3YS4KKworLSBJc3N1ZSAjNDc1NzogYHpsaWIuY29tcHJlc3NgIGFuZCBvdGhlciBtZXRob2RzIGluIHRoZSB6bGliIG1vZHVsZSBub3cgcmFpc2UgYQorICBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiBgc3RyYCBvYmplY3QgKHJhdGhlciB0aGFuIGEgYGJ5dGVzYC1saWtlIG9iamVjdCkuCisgIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyIGFuZCBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzczNDk6IE1ha2UgbWV0aG9kcyBvZiBmaWxlIG9iamVjdHMgaW4gdGhlIGlvIG1vZHVsZSBhY2NlcHQgTm9uZSBhcyBhbgorICBhcmd1bWVudCB3aGVyZSBmaWxlLWxpa2Ugb2JqZWN0cyAoaWUgU3RyaW5nSU8gYW5kIEJ5dGVzSU8pIGFjY2VwdCB0aGVtIHRvIG1lYW4KKyAgdGhlIHNhbWUgYXMgcGFzc2luZyBubyBhcmd1bWVudC4KKworLSBJc3N1ZSAjNzM1NzogdGFyZmlsZSBubyBsb25nZXIgc3VwcHJlc3NlcyBmYXRhbCBleHRyYWN0aW9uIGVycm9ycyBieSBkZWZhdWx0LgorCistIElzc3VlICM1OTQ5OiBhZGRlZCBjaGVjayBmb3IgY29ycmVjdCBsaW5lZW5kcyBpbiBpbnB1dCBmcm9tIElNQVAgc2VydmVyIGluCisgIGltYXBsaWIuCisKKy0gQWRkIGNvdW50KCkgYW5kIHJldmVyc2UoKSBtZXRob2RzIHRvIGNvbGxlY3Rpb25zLmRlcXVlKCkuCisKKy0gRml4IHZhcmlhdGlvbnMgb2YgZXh0ZW5kaW5nIGRlcXVlczogIGQuZXh0ZW5kKGQpICBkLmV4dGVuZGxlZnQoZCkgIGQrPWQKKworLSBJc3N1ZSAjNjk4NjogRml4IGNyYXNoIGluIHRoZSBKU09OIEMgYWNjZWxlcmF0b3Igd2hlbiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgcGFyYW1ldGVyIHR5cGVzLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzc0NTc6IGFkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8KKyAgZGlzdHV0aWxzLmRpc3QuRGlzdHJpYnV0aW9uTWV0YWRhdGEuCisKKy0gbG9nZ2luZzogQWRkZWQgb3B0aW9uYWwgYHNlY3VyZWAgcGFyYW1ldGVyIHRvIFNNVFBIYW5kbGVyLCB0byBlbmFibGUgdXNlIG9mCisgIFRMUyB3aXRoIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgorCistIElzc3VlICMxOTIzOiBGaXhlZCB0aGUgcmVtb3ZhbCBvZiBtZWFuaW5nZnVsIHNwYWNlcyB3aGVuIFBLRy1JTkZPIGlzIGdlbmVyYXRlZAorICBpbiBEaXN0dXRpbHMuICBQYXRjaCBieSBTdGVwaGVuIEVtc2xpZS4KKworLSBJc3N1ZSAjNDEyMDogRHJvcCByZWZlcmVuY2UgdG8gQ1JUIGZyb20gbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIHdpdGgKKyAgbXN2Yzljb21waWxlci4KKworLSBJc3N1ZSAjNzMzMzogVGhlIGBwb3NpeGAgbW9kdWxlIGdhaW5zIGFuIGBpbml0Z3JvdXBzKClgIGZ1bmN0aW9uIHByb3ZpZGluZworICBhY2Nlc3MgdG8gdGhlIGluaXRncm91cHMoMykgQyBsaWJyYXJ5IGNhbGwgb24gVW5peCBzeXN0ZW1zIHdoaWNoIGltcGxlbWVudCBpdC4KKyAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZS4KKworLSBJc3N1ZSAjNzQwODogRml4ZWQgZGlzdHV0aWxzLnRlc3RzLnNkaXN0IHNvIGl0IGRvZXNuJ3QgY2hlY2sgZm9yIGdyb3VwCisgIG93bmVyc2hpcCB3aGVuIHRoZSBncm91cCBpcyBub3QgZm9yY2VkLCBiZWNhdXNlIHRoZSBncm91cCBtYXkgYmUgZGlmZmVyZW50CisgIGZyb20gdGhlIHVzZXIncyBncm91cCBhbmQgaW5oZXJpdCBmcm9tIGl0cyBjb250YWluZXIgd2hlbiB0aGUgdGVzdCBpcyBydW4uCisKKy0gSXNzdWUgIzQ0ODY6IFdoZW4gYW4gZXhjZXB0aW9uIGhhcyBhbiBleHBsaWNpdCBjYXVzZSwgZG8gbm90IHByaW50IGl0cworICBpbXBsaWNpdCBjb250ZXh0IHRvby4gIFRoaXMgYWZmZWN0cyB0aGUgYHRyYWNlYmFja2AgbW9kdWxlIGFzIHdlbGwgYXMgYnVpbHQtaW4KKyAgZXhjZXB0aW9uIHByaW50aW5nLgorCistIElzc3VlICMxNTE1OiBFbmFibGUgdXNlIG9mIGRlZXBjb3B5KCkgd2l0aCBpbnN0YW5jZSBtZXRob2RzLiAgUGF0Y2ggYnkgUm9iZXJ0CisgIENvbGxpbnMuCisKKy0gSXNzdWUgIzc0MDM6IGxvZ2dpbmc6IEZpeGVkIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGluIGxvY2sgY3JlYXRpb24uCisKKy0gSXNzdWUgIzY4NDU6IEFkZCByZXN0YXJ0IHN1cHBvcnQgZm9yIGJpbmFyeSB1cGxvYWQgaW4gZnRwbGliLiAgVGhlCisgIGBzdG9yYmluYXJ5KClgIG1ldGhvZCBvZiBGVFAgYW5kIEZUUF9UTFMgb2JqZWN0cyBnYWlucyBhbiBvcHRpb25hbCBgcmVzdGAKKyAgYXJndW1lbnQuICBQYXRjaCBieSBQYWJsbyBNb3V6by4KKworLSBJc3N1ZSAjNTc4ODogYGRhdGV0aW1lLnRpbWVkZWx0YWAgb2JqZWN0cyBnZXQgYSBuZXcgYHRvdGFsX3NlY29uZHMoKWAgbWV0aG9kCisgIHJldHVybmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGR1cmF0aW9uLiAgUGF0Y2ggYnkgQnJpYW4KKyAgUXVpbmxhbi4KKworLSBJc3N1ZSAjNzEzMzogU1NMIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIG5ldyBidWZmZXIgQVBJLgorCistIElzc3VlICMxNDg4OTQzOiBkaWZmbGliLkRpZmZlcigpIGRvZXNuJ3QgYWx3YXlzIGFkZCBoaW50cyBmb3IgdGFiIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzYxMjM6IHRhcmZpbGUgbm93IG9wZW5zIGVtcHR5IGFyY2hpdmVzIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5CisgIHJhaXNlcyBSZWFkRXJyb3Igb24gZW1wdHkgZmlsZXMuCisKKy0gSXNzdWUgIzczNTQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X21zdmM5Y29tcGlsZXIgLSBkcmFnZnVsbHdpbmRvd3MgY2FuIGJlIDIuCisKKy0gSXNzdWUgIzUwMzc6IFByb3h5IHRoZSBfX2J5dGVzX18gc3BlY2lhbCBtZXRob2QgaW5zdGVhZCB0byBfX2J5dGVzX18gaW5zdGVhZAorICBvZiBfX3N0cl9fLgorCistIElzc3VlICM3MzQxOiBDbG9zZSB0aGUgaW50ZXJuYWwgZmlsZSBvYmplY3QgaW4gdGhlIFRhckZpbGUgY29uc3RydWN0b3IgaW4gY2FzZQorICBvZiBhbiBlcnJvci4KKworLSBJc3N1ZSAjNzI5MzogZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlciBpcyBmaXhlZCB0byB3b3JrIG9uIGFueSBmcmVzaAorICBXaW5kb3dzIGJveC4gSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KKworLSBJc3N1ZSAjMjA1NDogZnRwbGliIG5vdyBwcm92aWRlcyBhbiBGVFBfVExTIGNsYXNzIHRvIGRvIHNlY3VyZSBGVFAgdXNpbmcgVExTCisgIG9yIFNTTC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICM3MzI4OiBweWRvYyBubyBsb25nZXIgY29ycnVwdHMgc3lzLnBhdGggd2hlbiBydW4gd2l0aCB0aGUgJy1tJyBzd2l0Y2guCisKKy0gSXNzdWUgIzQ5Njk6IFRoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZQorICByZWdpc3RyeSB1bmRlciBXaW5kb3dzLiAgUGF0Y2ggYnkgR2FicmllbCBHZW5lbGxpbmEuCisKKy0gSXNzdWUgIzY4MTY6IHJ1bnB5IG5vdyBwcm92aWRlcyBhIHJ1bl9wYXRoIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIFB5dGhvbiBjb2RlIHRvCisgIGV4ZWN1dGUgZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcworICB6aXBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIG90aGVyIHZhbGlkIHN5cy5wYXRoIGVudHJpZXMgdGhhdCBjb250YWluIGEKKyAgX19tYWluX18ucHkgZmlsZS4gIFRoaXMgYWxsb3dzIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvdGhlciBQeXRob24gc2NyaXB0cyB0bworICBzdXBwb3J0IHRoZSBzYW1lIGZsZXhpYmlsaXR5IGFzIHRoZSBDUHl0aG9uIGNvbW1hbmQgbGluZSBpdHNlbGYuCisKKy0gSXNzdWUgIzczMTg6IG11bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBhIHRpbWVvdXQgd2hlbiBpdCBmYWlscyB0byBlc3RhYmxpc2ggYQorICBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBwcm9jZXNzLCByYXRoZXIgdGhhbiBsb29waW5nIGVuZGxlc3NseS4gIFRoZSBkZWZhdWx0CisgIHRpbWVvdXQgaXMgMjAgc2Vjb25kcywgd2hpY2ggc2hvdWxkIGJlIGFtcGx5IHN1ZmZpY2llbnQgZm9yIGxvY2FsIGNvbm5lY3Rpb25zLgorCistIElzc3VlICM3MTk3OiBBbGxvdyB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lciBvYmplY3RzIHRvIGJlIHBpY2tsZWQgYW5kCisgIHVucGlja2xlZC4gIFRoaXMgZml4ZXMgY3Jhc2hlcyB1bmRlciBXaW5kb3dzIHdoZW4gdHJ5aW5nIHRvIHJ1bgorICB0ZXN0X211bHRpcHJvY2Vzc2luZyBpbiB2ZXJib3NlIG1vZGUuCisKKy0gSXNzdWUgIzc4OTM6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHRgYCBpcyBtYWRlIHB1YmxpYyBhbmQgYSBgYHJlc3VsdGNsYXNzYGAKKyAgYXJndW1lbnQgYWRkZWQgdG8gdGhlIFRleHRUZXN0UnVubmVyIGNvbnN0cnVjdG9yIGFsbG93aW5nIGEgZGlmZmVyZW50IHJlc3VsdAorICBjbGFzcyB0byBiZSB1c2VkIHdpdGhvdXQgaGF2aW5nIHRvIHN1YmNsYXNzLgorCistIElzc3VlICM3NTg4OiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0LmdldERlc2NyaXB0aW9uYGAgbm93IGluY2x1ZGVzIHRoZSB0ZXN0CisgIG5hbWUgaW4gZmFpbHVyZSByZXBvcnRzIGV2ZW4gaWYgdGhlIHRlc3QgaGFzIGEgZG9jc3RyaW5nLgorCistIElzc3VlICMzMDAxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIHJlY3Vyc2l2ZSBsb2NrcyB3aGljaCBpcyB1c2VkIGJ5CisgIGRlZmF1bHQgd2hlbiBpbnN0YW50aWF0aW5nIGEgYHRocmVhZGluZy5STG9ja2Agb2JqZWN0LiBUaGlzIG1ha2VzIHJlY3Vyc2l2ZQorICBsb2NrcyBhcyBmYXN0IGFzIHJlZ3VsYXIgbm9uLXJlY3Vyc2l2ZSBsb2NrcyAocHJldmlvdXNseSwgdGhleSB3ZXJlIHNsb3dlciBieQorICAxMHggdG8gMTV4KS4KKworLSBJc3N1ZSAjNzI4MjogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBhbiBSTG9jayB3YXMgdXNlZCBpbiBhIHRocmVhZCBvdGhlciB0aGFuCisgIHRob3NlIHN0YXJ0ZWQgdGhyb3VnaCBgdGhyZWFkaW5nLlRocmVhZGAgKGZvciBleGFtcGxlLCB1c2luZworICBgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKClgKS4KKworLSBJc3N1ZSAjNzE4NzogSW1wb3J0bGliIHdvdWxkIG5vdCBzaWxlbmNlIHRoZSBJT0Vycm9yIHJhaXNlZCB3aGVuIHRyeWluZyB0bworICB3cml0ZSBuZXcgYnl0ZWNvZGUgd2hlbiBpdCB3YXMgbWFkZSByZWFkLW9ubHkuCisKKy0gSXNzdWUgIzcyNjQ6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gZGVhbGxvY2F0aW5nIHRocmVhZC1sb2NhbCBvYmplY3RzCisgIHdoaWNoIGFyZSBwYXJ0IG9mIGEgcmVmZXJlbmNlIGN5Y2xlLgorCistIElzc3VlICM3MjExOiBBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGlkZW50YCBhbmQgYGRhdGFgIGZpZWxkcyBvZiBrZXZlbnQKKyAgb2JqZWN0cyBvbiA2NC1iaXQgc3lzdGVtcy4gIFBhdGNoIGJ5IE1pY2hhZWwgQnJvZ2h0b24uCisKKy0gSXNzdWUgIzY4OTY6IG1haWxib3guTWFpbGRpciBub3cgaW52YWxpZGF0ZXMgaXRzIGludGVybmFsIGNhY2hlIGVhY2ggdGltZSBhCisgIG1vZGlmaWNhdGlvbiBpcyBkb25lIHRocm91Z2ggaXQuICBUaGlzIGZpeGVzIGluY29uc2lzdGVuY2llcyBhbmQgdGVzdCBmYWlsdXJlcworICBvbiBzeXN0ZW1zIHdpdGggc2xpZ2h0bHkgYm9ndXMgbXRpbWUgYmVoYXZpb3VyLgorCistIElzc3VlICM3MjQ2ICYgSXNzdWUgIzcyMDg6IGdldHBhc3Mgbm93IHByb3Blcmx5IGZsdXNoZXMgaW5wdXQgYmVmb3JlIHJlYWRpbmcKKyAgZnJvbSBzdGRpbiBzbyB0aGF0IGV4aXN0aW5nIGlucHV0IGRvZXMgbm90IGNvbmZ1c2UgaXQgYW5kIGxlYWQgdG8gaW5jb3JyZWN0CisgIGVudHJ5IG9yIGFuIElPRXJyb3IuICBJdCBhbHNvIHByb3Blcmx5IGZsdXNoZXMgaXQgYWZ0ZXJ3YXJkcyB0byBhdm9pZCB0aGUKKyAgdGVybWluYWwgZWNob2luZyB0aGUgaW5wdXQgYWZ0ZXJ3YXJkcyBvbiBPU2VzIHN1Y2ggYXMgU29sYXJpcy4KKworLSBJc3N1ZSAjNzIzMzogRml4IGEgbnVtYmVyIG9mIHR3by1hcmd1bWVudCBEZWNpbWFsIG1ldGhvZHMgdG8gbWFrZSBzdXJlIHRoYXQKKyAgdGhleSBhY2NlcHQgYW4gaW50IG9yIGxvbmcgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4gIEFsc28gZml4IGJ1Z2d5IGhhbmRsaW5nIG9mCisgIGxhcmdlIGFyZ3VtZW50cyAodGhvc2Ugd2l0aCBjb2VmZmljaWVudCBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBwcmVjaXNpb24pIGluCisgIHNoaWZ0IGFuZCByb3RhdGUuCisKKy0gSXNzdWUgIzQ3NTA6IFN0b3JlIHRoZSBiYXNlbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaW4gdGhlIGd6aXAgRk5BTUUKKyAgaGVhZGVyIGFzIHJlcXVpcmVkIGJ5IFJGQyAxOTUyLgorCistIElzc3VlICMxMTgwOiBBZGRlZCBhIG5ldyBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZSB+Ly5weWRpc3R1dGlscy5jZmcgaW4KKyAgRGlzdHV0aWxzLgorCistIElzc3VlICM3MjE4OiBGaXggdGVzdF9zaXRlIGZvciB3aW4zMiwgdGhlIGRpcmVjdG9yeSBjb21wYXJpc29uIHdhcyBkb25lIHdpdGgKKyAgYW4gdXBwZXJjYXNlLgorCistIElzc3VlICM3MjA1OiBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIHVzaW5nIGEgQloyRmlsZSBvYmplY3QgZnJvbQorICBzZXZlcmFsIHRocmVhZHMgYXQgb25jZS4KKworLSBJc3N1ZSAjNzA3NzogbG9nZ2luZzogU3lzTG9nSGFuZGxlciBub3cgdHJlYXRzIFVuaWNvZGUgYXMgcGVyIFJGQyA1NDI0LgorCistIElzc3VlICM3MDk5OiBEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQKKyAgbGFyZ2VyIHRoYW4gZW1heC4KKworLSBJc3N1ZSAjNzA4MDogbG9jYWxlLnN0cnhmcm0oKSByYWlzZXMgYSBNZW1vcnlFcnJvciBvbiA2NC1iaXQgbm9uLVdpbmRvd3MKKyAgcGxhdGZvcm1zLCBhbmQgYXNzb3J0ZWQgbG9jYWxlIGZpeGVzIGJ5IERlcmsgRHJ1a2tlci4KKworLSBJc3N1ZSAjNTgzMzogRml4IGV4dHJhIHNwYWNlIGNoYXJhY3RlciBpbiByZWFkbGluZSBjb21wbGV0aW9uIHdpdGggdGhlIEdOVQorICByZWFkbGluZSBsaWJyYXJ5IHZlcnNpb24gNi4wLgorCistIElzc3VlICM2ODk0OiBGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KKworLSBJc3N1ZSAjNzA4NjogQWRkZWQgVENQIHN1cHBvcnQgdG8gU3lzTG9nSGFuZGxlciwgYW5kIHRpZGllZCB1cCBzb21lCisgIGFuYWNocm9uaXNtcyBpbiB0aGUgY29kZSB3aGljaCB3ZXJlIGEgcmVsaWMgb2YgMS41LjIgY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjNzA4MjogV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UKKyAgdG8gbG9vayBmb3IgaXQgaXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCisKKy0gTWFrZSB0b2tlbml6ZS5kZXRlY3RfY29kaW5nKCkgbm9ybWFsaXplIHV0Zi04IGFuZCBpc28tODg1OS0xIHZhcmlhbnRzIGxpa2UgdGhlCisgIGJ1aWx0aW4gdG9rZW5pemVyLgorCistIElzc3VlICM3MDQ4OiBGb3JjZSBEZWNpbWFsLmxvZ2IgdG8gcm91bmQgaXRzIHJlc3VsdCB3aGVuIHRoYXQgcmVzdWx0IGlzIHRvbworICBsYXJnZSB0byBmaXQgaW4gdGhlIGN1cnJlbnQgcHJlY2lzaW9uLgorCistIElzc3VlICM2MjM2LCAjNjM0ODogRml4IHZhcmlvdXMgZmFpbHVyZXMgaW4gdGhlIEkvTyBsaWJyYXJ5IHVuZGVyIEFJWCBhbmQKKyAgb3RoZXIgcGxhdGZvcm1zLCB3aGVuIHVzaW5nIGEgbm9uLWdjYyBjb21waWxlci4gUGF0Y2ggYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICM0NjA2OiBQYXNzaW5nICdOb25lJyBpZiBjdHlwZXMgYXJndHlwZSBpcyBzZXQgdG8gUE9JTlRFUiguLi4pICBkb2VzIG5vdworICBhbHdheXMgcmVzdWx0IGluIE5VTEwuCisKKy0gSXNzdWUgIzUwNDI6IFN0cnVjdHVyZSBzdWItc3ViY2xhc3MgZG9lcyBub3cgaW5pdGlhbGl6ZSBjb3JyZWN0bHkgd2l0aCBiYXNlCisgIGNsYXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCistIElzc3VlICM2ODgyOiBJbXBvcnQgdXVpZCBjcmVhdGVzIHpvbWJpZXMgcHJvY2Vzc2VzLgorCistIElzc3VlICM2NjM1OiBGaXggcHJvZmlsZXIgcHJpbnRpbmcgdXNhZ2UgbWVzc2FnZS4KKworLSBJc3N1ZSAjNjg1NjogQWRkIGEgZmlsdGVyIGtleXdvcmQgYXJndW1lbnQgdG8gVGFyRmlsZS5hZGQoKS4KKworLSBJc3N1ZSAjNjg4ODogcGRiJ3MgYWxpYXMgY29tbWFuZCB3YXMgYnJva2VuIHdoZW4gbm8gYXJndW1lbnRzIHdlcmUgZ2l2ZW4uCisKKy0gSXNzdWUgIzY4NTc6IERlZmF1bHQgZm9ybWF0KCkgYWxpZ25tZW50IHNob3VsZCBiZSAnPicgZm9yIERlY2ltYWwgaW5zdGFuY2VzLgorCistIElzc3VlICM2Nzk1OiBpbnQoRGVjaW1hbCgnbmFuJykpIG5vdyByYWlzZXMgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZworICBOYU4gb3IgcmFpc2luZyBJbnZhbGlkQ29udGV4dC4gIEFsc28sIGZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4KKyAgbG9uZyhEZWNpbWFsKCduYW4nKSkuCisKKy0gSXNzdWUgIzY4NTA6IEZpeCBidWcgaW4gRGVjaW1hbC5fcGFyc2VfZm9ybWF0X3NwZWNpZmllciBmb3IgZm9ybWF0cyB3aXRoIG5vCisgIHR5cGUgc3BlY2lmaWVyLgorCistIElzc3VlICM2MjM5OiBjdHlwZXMuY19jaGFyX3AgcmV0dXJuIHZhbHVlIG11c3QgcmV0dXJuIGJ5dGVzLgorCistIElzc3VlICM2ODM4OiBVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseQorICBjb25jYXRlbmF0aW5nIHN0cmluZ3MgaW4gaHR0cC5jbGllbnQncyBIVFRQUmVzcG9uc2UuX3JlYWRfY2h1bmtlZCBwcm92aWRpbmcgYQorICBzaWduaWZpY2FudCBzcGVlZCBpbmNyZWFzZSB3aGVuIGRvd25sb2FkaW5nIGxhcmdlIGZpbGVzIHNlcnZlbmQgd2l0aCBhCisgIFRyYW5zZmVyLUVuY29kaW5nIG9mICdjaHVua2VkJy4KKworLSBUcnlpbmcgdG8gaW1wb3J0IGEgc3VibW9kdWxlIGZyb20gYSBtb2R1bGUgdGhhdCBpcyBub3QgYSBwYWNrYWdlLCBJbXBvcnRFcnJvcgorICBzaG91bGQgYmUgcmFpc2VkLCBub3QgQXR0cmlidXRlRXJyb3IuCisKKy0gV2hlbiB0aGUgZ2xvYmFscyBwYXN0IHRvIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgaGFzIF9fcGFja2FnZV9fIHNldCB0byBOb25lLAorICBmYWxsIGJhY2sgdG8gY29tcHV0aW5nIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlIGluc3RlYWQgb2YgZ2l2aW5nIHVwLgorCistIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdGhlIG5hbWUgb2YgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgZm9yCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fIGlzIG5vdCBhIHN0cmluZyAod2FzIHJhaXNpbmcgYW4gQXR0cmlidXRlRXJyb3IgYmVmb3JlKS4KKworLSBBbGxvdyB0aGUgZnJvbWxpc3QgcGFzc2VkIGludG8gaW1wb3J0bGliLl9faW1wb3J0X18gdG8gYmUgYW55IGl0ZXJhYmxlLgorCistIEhhdmUgaW1wb3J0bGliIHJhaXNlIEltcG9ydEVycm9yIGlmIE5vbmUgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMuCisKKy0gSXNzdWUgIzYwNTQ6IERvIG5vdCBub3JtYWxpemUgc3RvcmVkIHBhdGhuYW1lcyBpbiB0YXJmaWxlLgorCistIElzc3VlICM2Nzk0OiBGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4KKyAgcGF5bG9hZHMgYXJlIG5vdyBvcmRlcmVkIGJ5IGludGVnZXIgdmFsdWUgcmF0aGVyIHRoYW4gbGV4aWNvZ3JhcGhpY2FsbHkuCisKKy0gSXNzdWUgIzEzNTY5Njk6IEFkZCBtaXNzaW5nIGluZm8gbWV0aG9kcyBpbiB0aXguSExpc3QuCisKKy0gSXNzdWUgIzE1MjI1ODc6IE5ldyBjb25zdGFudHMgYW5kIG1ldGhvZHMgZm9yIHRoZSB0aXguR3JpZCB3aWRnZXQuCisKKy0gSXNzdWUgIzEyNTA0Njk6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRpeC5QYW5lZFdpbmRvdy5wYW5lcy4KKworLSBJc3N1ZSAjMTExOTY3MzogRG8gbm90IG92ZXJyaWRlIHRraW50ZXIuVGV4dCBtZXRob2RzIHdoZW4gY3JlYXRpbmcgYQorICBTY3JvbGxlZFRleHQuCisKKy0gSXNzdWUgIzY2NjU6IEZpeCBmbm1hdGNoIHRvIHByb3Blcmx5IG1hdGNoIGZpbGVuYW1lcyB3aXRoIG5ld2xpbmVzIGluIHRoZW0uCisKKy0gSXNzdWUgIzExMzU6IEFkZCB0aGUgWFZpZXcgYW5kIFlWaWV3IG1peC1pbnMgdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIHh2aWV3KgorICBhbmQgeXZpZXcqIG1ldGhvZHMuCisKKy0gSXNzdWUgIzY2Mjk6IEZpeCBhIGRhdGEgY29ycnVwdGlvbiBpc3N1ZSBpbiB0aGUgbmV3IEkvTyBsaWJyYXJ5LCB3aGljaCBjb3VsZAorICBvY2N1ciB3aGVuIHdyaXRpbmcgdG8gYSBCdWZmZXJlZFJhbmRvbSBvYmplY3QgKGUuZy4gYSBmaWxlIG9wZW5lZCBpbiAicmIrIiBvcgorICAid2IrIiBtb2RlKSBhZnRlciBoYXZpbmcgYnVmZmVyZWQgYSBjZXJ0YWluIGFtb3VudCBvZiBkYXRhIGZvciByZWFkaW5nLiBUaGlzCisgIGJ1ZyB3YXMgbm90IHByZXNlbnQgaW4gdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICM2NjIyOiBGaXggImxvY2FsIHZhcmlhYmxlICdzZWNyZXQnIHJlZmVyZW5jZWQgYmVmb3JlIGFzc2lnbm1lbnQiIGJ1ZyBpbgorICBQT1AzLmFwb3AuCisKKy0gSXNzdWUgIzI3MTU6IFJlbW92ZSByZW1uYW50cyBvZiBDYXJib24uRmlsZSBmcm9tIGJpbmhleCBtb2R1bGUuCisKKy0gSXNzdWUgIzY1OTU6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgYXJiaXRyYXJ5IFVuaWNvZGUgZGVjaW1hbAorICBkaWdpdHMgaW4gaW5wdXQsIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBzdGFuZGFyZC4gIFByZXZpb3VzbHkgaXQgd2FzIHJlc3RyaWN0ZWQKKyAgdG8gYWNjZXB0aW5nIFswLTldLgorCistIElzc3VlICM2MTA2OiB0ZWxuZXRsaWIuVGVsbmV0LnByb2Nlc3NfcmF3cSBkb2Vzbid0IGhhbmRsZSBkZWZhdWx0IFdJTEwvV09OVAorICBETy9ET05UIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTQyNDE1MjogRml4IGZvciBodHRwLmNsaWVudCwgdXJsbGliLnJlcXVlc3QgdG8gc3VwcG9ydCBTU0wgd2hpbGUKKyAgd29ya2luZyB0aHJvdWdoIHByb3h5LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0b3BoZXIgTGksIGNoYW5nZXMgbWFkZSBieQorICBTZW50aGlsIEt1bWFyYW4uCisKKy0gQWRkIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyIHRvIHJlcHJlc2VudCB0aGUgUEVQIDMwMiBwcm90b2NvbCBmb3IKKyAgbG9hZGVycyB0aGF0IGFsbG93IGZvciBtb2R1bGVzIHRvIGJlIGV4ZWN1dGVkLiBCb3RoIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgYW5kCisgIFB5UHljTG9hZGVyIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzIGFuZCBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBpbiByZWxhdGlvbiB0bworICBvdGhlciBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBBQkNzLgorCistIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgZGlkIG5vdCBpbmhlcml0IGZyb20gaW1wb3J0bGliLmFiYy5SZXNvdXJjZUxvYWRlciBsaWtlCisgIHRoZSBkb2N1bWVudGF0aW9uIHNhaWQgaXQgZGlkIGV2ZW4gdGhvdWdoIHRoZSBjb2RlIGluIFB5TG9hZGVyIHJlbGllZCBvbiB0aGUKKyAgYWJzdHJhY3QgbWV0aG9kIHJlcXVpcmVkIGJ5IFJlc291cmNlTG9hZGVyLgorCistIElzc3VlICM2NDMxOiBNYWtlIEZyYWN0aW9uIHR5cGUgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4gaXQgZG9lc24ndCBrbm93IGhvdworICB0byBoYW5kbGUgYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nCisgIG9mIGluZmluaXRpZXMgYW5kIG5hbnMgZm9yIGNvbXBhcmlzb25zIHdpdGggZmxvYXQuCisKKy0gSXNzdWUgIzY0MTU6IEZpeGVkIHdhcm5pbmdzLndhcm4gc2VnZmF1bHQgb24gYmFkIGZvcm1hdHRlZCBzdHJpbmcuCisKKy0gSXNzdWUgIzYzNTg6IFRoZSBleGl0IHN0YXR1cyBvZiBhIGNvbW1hbmQgc3RhcnRlZCB3aXRoIG9zLnBvcGVuKCkgd2FzIHJlcG9ydGVkCisgIGRpZmZlcmVudGx5IHRoYW4gaXQgZGlkIHdpdGggcHl0aG9uIDIueC4KKworLSBJc3N1ZSAjNjMyMzogVGhlIHBkYiBkZWJ1Z2dlciBkaWQgbm90IGV4aXQgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHdpdGggYSBzeW50YXgKKyAgZXJyb3IuCisKKy0gSXNzdWUgIzMzOTI6IFRoZSBzdWJwcm9jZXNzIGNvbW11bmljYXRlKCkgbWV0aG9kIG5vIGxvbmdlciBmYWlscyBpbiBzZWxlY3QoKQorICB3aGVuIGZpbGUgZGVzY3JpcHRvcnMgYXJlIGxhcmdlOyBjb21tdW5pY2F0ZSgpIG5vdyB1c2VzIHBvbGwoKSB3aGVuIHBvc3NpYmxlLgorCistIElzc3VlICM2MzY5OiBGaXggYW4gUkxFIGRlY29tcHJlc3Npb24gYnVnIGluIHRoZSBiaW5oZXggbW9kdWxlLgorCistIElzc3VlICM2MzQ0OiBGaXhlZCBhIGNyYXNoIG9mIG1tYXAucmVhZCgpIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgYXJndW1lbnQuCisKKy0gVGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gc3RyaW5nLm1ha2V0cmFucyBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM0MDA1OiBGaXhlZCBhIGNyYXNoIG9mIHB5ZG9jIHdoZW4gdGhlcmUgd2FzIGEgemlwIGZpbGUgcHJlc2VudCBpbgorICBzeXMucGF0aC4KKworLSBJc3N1ZSAjNjIxODogaW8uU3RyaW5nSU8gYW5kIGlvLkJ5dGVzSU8gaW5zdGFuY2VzIGFyZSBub3cgcGlja2xhYmxlLgorCistIFRoZSBvcy5nZXRfZXhlY19wYXRoKCkgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZQorICBzZWFyY2hlZCBmb3IgYW4gZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyBhIHN1YnByb2Nlc3Mgd2FzIGFkZGVkLgorCistIElzc3VlICM3NDgxOiBXaGVuIGEgdGhyZWFkaW5nLlRocmVhZCBmYWlsZWQgdG8gc3RhcnQgaXQgd291bGQgbGVhdmUgdGhlCisgIGluc3RhbmNlIHN0dWNrIGluIGluaXRpYWwgc3RhdGUgYW5kIHByZXNlbnQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpLgorCistIElzc3VlICMxMDY4MjY4OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGhhbmRsZXMgRUlOVFIgaW4gaW50ZXJuYWwgb3Mud2FpdHBpZAorICBhbmQgb3MucmVhZCBzeXN0ZW0gY2FsbHMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzY3Mjk6IEFkZGVkIGN0eXBlcy5jX3NzaXplX3QgdG8gcmVwcmVzZW50IHNzaXplX3QuCisKKy0gSXNzdWUgIzYyNDc6IFRoZSBhcmdwYXJzZSBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisKKy0gSXNzdWUgIzgyMzU6IF9zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcyBhIHNvY2tldAorICBvcHRpb24gYXZhaWxhYmxlIG9uIEZyZWVCU0QgNy4xIGFuZCBuZXdlci4KKworLSBJc3N1ZSAjOTMxNTogRml4IGZvciB0aGUgdHJhY2UgbW9kdWxlIHRvIHJlY29yZCBjb3JyZWN0IGNsYXNzIG5hbWUKKyAgZm9yIHRyYWNpbmcgbWV0aG9kcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzk5NTk6IFR3ZWFrIGZvcm11bGEgdXNlZCBmb3IgY29tcHV0aW5nIG1hdGgubG9nIG9mIGFuIGludGVnZXIsCisgIG1ha2luZyBpdCBtYXJnaW5hbGx5IG1vcmUgYWNjdXJhdGUgZm9yIGV4YWN0IHBvd2VycyBvZiAyLgorCistIElzc3VlICM5NDIyOiBGaXggbWVtb3J5IGxlYWsgd2hlbiByZS1pbml0aWFsaXppbmcgYSBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KKworLSBJc3N1ZSAjNzkwMDogVGhlIGdldGdyb3VwcygyKSBzeXN0ZW0gY2FsbCBvbiBNYWNPU1ggYmVoYXZlcyByYXRoZXIgb2RkbHkKKyAgY29tcGFyZWQgdG8gb3RoZXIgdW5peCBzeXN0ZW1zLiBJbiBwYXJ0aWN1bGFyLCBvcy5nZXRncm91cHMoKSBkb2VzIG5vdCByZWZsZWN0CisgIGFueSBjaGFuZ2VzIG1hZGUgdXNpbmcgb3Muc2V0Z3JvdXBzKCkgYnV0IGJhc2ljbHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKKyAgaW5mb3JtYXRpb24gYXMgdGhlIGlkIGNvbW1hbmQuIG9zLmdldGdyb3VwcygpIGNhbiBub3cgcmV0dXJuIG1vcmUgdGhhbiAxNgorICBncm91cHMgb24gTWFjT1NYLgorCistIElzc3VlICM2MDk1OiBNYWtlIGRpcmVjdG9yeSBhcmd1bWVudCB0byBvcy5saXN0ZGlyIG9wdGlvbmFsLgorCistIElzc3VlICM5Mjc3OiBGaXggYnVnIGluIHN0cnVjdC5wYWNrIGZvciBib29scyBpbiBzdGFuZGFyZCBtb2RlIChlLmcuLAorICBzdHJ1Y3QucGFjaygnPj8nKSk6IGlmIGNvbnZlcnNpb24gdG8gYm9vbCByYWlzZWQgYW4gZXhjZXB0aW9uIHRoZW4gdGhhdAorICBleGNlcHRpb24gd2Fzbid0IHByb3Blcmx5IHByb3BhZ2F0ZWQgb24gbWFjaGluZXMgd2hlcmUgY2hhciBpcyB1bnNpZ25lZC4KKworLSBJc3N1ZSAjNTE4MDogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQgbG9hZGluZyAyLnggcGlja2xlcyBpbiAzLnggcHl0aG9uIHdoZW4KKyAgdGhleSBjb250YWluIGluc3RhbmNlcyBvZiBvbGQtc3R5bGUgY2xhc3Nlcy4KKworLSBJc3N1ZSAjOTE2NTogQWRkIG5ldyBmdW5jdGlvbnMgbWF0aC5pc2Zpbml0ZSBhbmQgY21hdGguaXNmaW5pdGUsIHRvIGFjY29tcGFueQorICBleGlzdGluZyBpc2luZiBhbmQgaXNuYW4gZnVuY3Rpb25zLgorCistIElzc3VlICMxNTc4MjY5OiBJbXBsZW1lbnQgb3Muc3ltbGluayBmb3IgV2luZG93cyA2LjArLiAgUGF0Y2ggYnkgSmFzb24KKyAgUi4gQ29vbWJzLgorCistIEluIHN0cnVjdC5wYWNrLCBjb3JyZWN0bHkgcHJvcG9nYXRlIGV4Y2VwdGlvbnMgZnJvbSBjb21wdXRpbmcgdGhlIHRydXRoIG9mIGFuCisgIG9iamVjdCBpbiB0aGUgJz8nIGZvcm1hdC4KKworLSBJc3N1ZSAjOTAwMDogZGF0ZXRpbWUudGltZXpvbmUgb2JqZWN0cyBub3cgaGF2ZSBldmFsLWZyaWVuZGx5IHJlcHIuCisKKy0gSW4gdGhlIG1hdGggbW9kdWxlLCBjb3JyZWN0bHkgbG9va3VwIF9fdHJ1bmNfXywgX19jZWlsX18sIGFuZCBfX2Zsb29yX18gYXMKKyAgc3BlY2lhbCBtZXRob2RzLgorCistIElzc3VlICM5MDA1OiBQcmV2ZW50IHV0Y3RpbWV0dXBsZSgpIGZyb20gcHJvZHVjaW5nIHllYXIgMCBvciB5ZWFyIDEwLDAwMC4KKyAgUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIHRpbWV6b25lIGFkanVzdG1lbnQgaW4gdXRjdGltZXR1cGxlKCkgY291bGQgcHJvZHVjZQorICB0bV95ZWFyIHZhbHVlIG9mIDAgb3IgMTAsMDAwLiAgTm93IGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGluIHRoZXNlIGVkZ2UKKyAgY2FzZXMuCisKKy0gSXNzdWUgIzY2NDE6IFRoZSBgYGRhdGV0aW1lLnN0cnB0aW1lYGAgbWV0aG9kIG5vdyBzdXBwb3J0cyB0aGUgYGAlemBgCisgIGRpcmVjdGl2ZS4gIFdoZW4gdGhlIGBgJXpgYCBkaXJlY3RpdmUgaXMgcHJlc2VudCBpbiB0aGUgZm9ybWF0IHN0cmluZywgYW4KKyAgYXdhcmUgYGBkYXRldGltZWBgIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIGBgdHppbmZvYGAgYm91bmQgdG8gYQorICBgYGRhdGV0aW1lLnRpbWV6b25lYGAgaW5zdGFuY2UgY29uc3RydWN0ZWQgZnJvbSB0aGUgcGFyc2VkIG9mZnNldC4gIElmIGJvdGgKKyAgYGAlemBgIGFuZCBgYCVaYGAgYXJlIHByZXNlbnQsIHRoZSBkYXRhIGluIGBgJVpgYCBmaWVsZCBpcyB1c2VkIGZvciB0aW1lem9uZQorICBuYW1lLCBidXQgYGAlWmBgIGRhdGEgd2l0aG91dCBgYCV6YGAgaXMgZGlzY2FyZGVkLgorCistIElzc3VlICM1MDk0OiBUaGUgYGBkYXRldGltZWBgIG1vZHVsZSBub3cgaGFzIGEgc2ltcGxlIGNvbmNyZXRlIGNsYXNzCisgIGltcGxlbWVudGluZyBgYGRhdGV0aW1lLnR6aW5mb2BgIGludGVyZmFjZS4gIEluc3RhbmNlcyBvZiB0aGUgbmV3IGNsYXNzLAorICBgYGRhdGV0aW1lLnRpbWV6b25lYGAsIHJldHVybiBmaXhlZCBuYW1lIGFuZCBVVEMgb2Zmc2V0IGZyb20gdGhlaXIKKyAgYGB0em5hbWUoZHQpYGAgYW5kIGBgdXRjb2Zmc2V0KGR0KWBgIG1ldGhvZHMuICBUaGUgYGBkc3QoZHQpYGAgbWV0aG9kIGFsd2F5cworICByZXR1cm5zIGBgTm9uZWBgLiAgQSBjbGFzcyBhdHRyaWJ1dGUsIGBgdXRjYGAgY29udGFpbnMgYW4gaW5zdGFuY2UKKyAgcmVwcmVzZW50aW5nIHRoZSBVVEMgdGltZXpvbmUuICBPcmlnaW5hbCBwYXRjaCBieSBSYWZlIEthcGxhbi4KKworLSBJc3N1ZSAjODk3MzogQWRkIF9fYWxsX18gdG8gc3RydWN0IG1vZHVsZTsgdGhpcyBlbnN1cmVzIHRoYXQgaGVscChzdHJ1Y3QpCisgIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzdHJ1Y3QuU3RydWN0IGNsYXNzLgorCistIElzc3VlICMzMTI5OiBUcmFpbGluZyBkaWdpdHMgaW4gc3RydWN0IGZvcm1hdCBzdHJpbmcgYXJlIG5vIGxvbmdlciBpZ25vcmVkLgorICBGb3IgZXhhbXBsZSwgIjEiIG9yICJpbGliMTIzIiBhcmUgbm93IGludmFsaWQgZm9ybWF0cyBhbmQgY2F1c2UKKyAgYGBzdHJ1Y3QuZXJyb3JgYCB0byBiZSByYWlzZWQuICBQYXRjaCBieSBDYWxlYiBEZXZlcmF1eC4KKworLSBJc3N1ZSAjNzM4NDogSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsIHRoZQorICBjdXJzZXMgbW9kdWxlIG11c3QgYmUgbGlua2VkIGFnYWluc3QgbmN1cnNlcyBhcyB3ZWxsLiBPdGhlcndpc2UgaXQgaXMgbm90IHNhZmUKKyAgdG8gbG9hZCBib3RoIHRoZSByZWFkbGluZSBhbmQgY3Vyc2VzIG1vZHVsZXMgaW4gYW4gYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI4MTA6IEZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEsCisgIHJlcXVpcmluZyBhIHJlLXRyeSBpbiBvcmRlciB0byBnZXQgdGhlIGNvbXBsZXRlIHJlc3VsdC4KKworLSBJc3N1ZSAjODY5MjogT3B0aW1pemUgbWF0aC5mYWN0b3JpYWw6IHJlcGxhY2UgdGhlIHByZXZpb3VzIG5haXZlIGFsZ29yaXRobQorICB3aXRoIGFuIGltcHJvdmVkICdiaW5hcnktc3BsaXQnIGFsZ29yaXRobSB0aGF0IHVzZXMgZmV3ZXIgbXVsdGlwbGljYXRpb25zIGFuZAorICBhbGxvd3MgbWFueSBvZiB0aGUgbXVsdGlwbGljYXRpb25zIHRvIGJlIHBlcmZvcm1lZCB1c2luZyBwbGFpbiBDIGludGVnZXIKKyAgYXJpdGhtZXRpYyBpbnN0ZWFkIG9mIFB5TG9uZyBhcml0aG1ldGljLiAgQWxzbyB1c2VzIGEgbG9va3VwIHRhYmxlIGZvciBzbWFsbAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzg2NzQ6IEZpeGVkIGEgbnVtYmVyIG9mIGluY29ycmVjdCBvciB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nCisgIG92ZXJmbG93IGNoZWNrcyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCisKKy0gSXNzdWUgIzg2NDQ6IFRoZSBhY2N1cmFjeSBvZiB0ZC50b3RhbF9zZWNvbmRzKCkgaGFzIGJlZW4gaW1wcm92ZWQgKGJ5CisgIGNhbGN1bGF0aW5nIHdpdGggaW50ZWdlciBhcml0aG1ldGljIGluc3RlYWQgb2YgZmxvYXQgYXJpdGhtZXRpYyBpbnRlcm5hbGx5KToKKyAgdGhlIHJlc3VsdCBpcyBub3cgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBhbmQgaXMgZXF1aXZhbGVudCB0byBgYHRkIC8KKyAgdGltZWRlbHRhKHNlY29uZHM9MSlgYC4KKworLSBJc3N1ZSAjMjcwNjogQWxsb3cgZGl2aXNpb24gb2YgYSB0aW1lZGVsdGEgYnkgYW5vdGhlciB0aW1lZGVsdGE6IHRpbWVkZWx0YSAvCisgIHRpbWVkZWx0YSwgdGltZWRlbHRhICUgdGltZWRlbHRhLCB0aW1lZGVsdGEgLy8gdGltZWRlbHRhIGFuZCBkaXZtb2QodGltZWRlbHRhLAorICB0aW1lZGVsdGEpIGFyZSBhbGwgc3VwcG9ydGVkLgorCistIElzc3VlICM4MzE0OiBGaXggdW5zaWduZWQgbG9uZyBsb25nIGJ1ZyBpbiBsaWJmZmkgb24gU3BhcmMgdjguCisKKy0gSXNzdWUgIzgzMDA6IFdoZW4gcGFzc2luZyBhIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IHRvIHN0cnVjdC5wYWNrIHdpdGggYW55CisgIGludGVnZXIgZm9ybWF0IGNvZGUsIHN0cnVjdC5wYWNrIGZpcnN0IGF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIG5vbi1pbnRlZ2VyCisgIHVzaW5nIGl0cyBfX2luZGV4X18gbWV0aG9kLiAgSWYgdGhhdCBtZXRob2QgaXMgbm9uLWV4aXN0ZW50IG9yIHJhaXNlcworICBUeXBlRXJyb3IgaXQgZ29lcyBvbiB0byB0cnkgdGhlIF9faW50X18gbWV0aG9kLCBhcyBkZXNjcmliZWQgYmVsb3cuCisKKy0gSXNzdWUgIzgxNDI6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC45IHJlbGVhc2UuCisKKy0gSXNzdWUgIzY5NDk6IEFsbG93IHRoZSBfZGJtIGV4dGVuc2lvbiB0byBiZSBidWlsdCB3aXRoIGRiIDQuOC54LgorCistIElzc3VlICM2NTQ0OiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IKKyAgaGFuZGxpbmcuCisKKy0gU3RvcCBwcm92aWRpbmcgY3J0YXNzZW0uaCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLCBhcworICBtc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KKworLSBJc3N1ZSAjNjUwODogQWRkIHBvc2l4LntnZXRyZXN1aWQsZ2V0cmVzZ2lkLHNldHJlc3VpZCxzZXRyZXNnaWR9LgorCistIElzc3VlICM3MDc4OiBTZXQgc3RydWN0Ll9fZG9jX18gZnJvbSBfc3RydWN0Ll9fZG9jX18uCisKKy0gSXNzdWUgIzMzNjY6IEFkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KKworLSBJc3N1ZSAjNjg3NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGxpbmsgdGhlIHJlYWRsaW5lIGV4dGVuc2lvbiB0byB0aGUgbGliZWRpdAorICByZWFkbGluZSBlbXVsYXRpb24gb24gT1NYIDEwLjUgb3IgbGF0ZXIuCisKKy0gSXNzdWUgIzY4NDg6IEZpeCBjdXJzZXMgbW9kdWxlIGJ1aWxkIGZhaWx1cmUgb24gT1MgWCAxMC42LgorCistIEZpeCBhIHNlZ2ZhdWx0IHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGV4cGF0IHdpdGggc3BlY2lhbGx5IGZvcm1lZCBpbnB1dC4KKworLSBJc3N1ZSAjNjU2MTogJ1xkJyBpbiBhIHJlZ2V4IG5vdyBtYXRjaGVzIG9ubHkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgY2F0ZWdvcnkKKyAgJ05kJyAoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAorICBjYXRlZ29yeSAnTm8nLgorCistIElzc3VlICM0NTA5OiBBcnJheSBvYmplY3RzIGFyZSBubyBsb25nZXIgbW9kaWZpZWQgYWZ0ZXIgYW4gb3BlcmF0aW9uIGZhaWxpbmcKKyAgZHVlIHRvIHRoZSByZXNpemUgcmVzdHJpY3Rpb24gaW4tcGxhY2Ugd2hlbiB0aGUgb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzLgorCistIElzc3VlICMyMzg5OiBBcnJheSBvYmplY3RzIGFyZSBub3cgcGlja2xlZCBpbiBhIHBvcnRhYmxlIG1hbm5lci4KKworLSBFeHBhdDogRml4IERvUyB2aWEgWE1MIGRvY3VtZW50IHdpdGggbWFsZm9ybWVkIFVURi04IHNlcXVlbmNlcworICAoQ1ZFXzIwMDlfMzU2MCkuCisKKy0gSXNzdWUgIzcyNDI6IE9uIFNvbGFyaXMgOSBhbmQgZWFybGllciBjYWxsaW5nIG9zLmZvcmsoKSBmcm9tIHdpdGhpbiBhIHRocmVhZAorICBjb3VsZCByYWlzZSBhbiBpbmNvcnJlY3QgUnVudGltZUVycm9yIGFib3V0IG5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jay4gIFRoZQorICBpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgorCistIElzc3VlICM3OTk5OiBvcy5zZXRyZXVpZCgpIGFuZCBvcy5zZXRyZWdpZCgpIHdvdWxkIHJlZnVzZSB0byBhY2NlcHQgYSAtMQorICBwYXJhbWV0ZXIgb24gc29tZSBwbGF0Zm9ybXMgc3VjaCBhcyBPUyBYLgorCistIEJ1aWxkIHRoZSBvc3NhdWRpbyBleHRlbnNpb24gb24gR05VL2tGcmVlQlNELgorCistIElzc3VlICM3MzQ3OiB3aW5yZWc6IEFkZCBDcmVhdGVLZXlFeCBhbmQgRGVsZXRlS2V5RXgsIGFzIHdlbGwgYXMgZml4IGEgYnVnIGluCisgIHRoZSByZXR1cm4gdmFsdWUgb2YgUXVlcnlSZWZsZWN0aW9uS2V5LgorCistIElzc3VlICM3NTY3OiBQeUN1cnNlc19zZXR1cHRlcm06IERvbid0IGNhbGwgYGBzZXR1cHRlcm1gYCB0d2ljZS4KKworQnVpbGQKKy0tLS0tCisKKy0gVXNlIE9wZW5TU0wgMS4wLjBhIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzkyODA6IE1ha2Ugc2hhcmVkaW5zdGFsbCBkZXBlbmQgb24gc2hhcmVkbW9kcy4KKworLSBJc3N1ZSAjOTE4OTogTWFrZSBhIHVzZXItc3BlY2lmaWVkIENGTEFHUywgQ1BQRkxBR1MsIG9yIExERkxBR1Mgc2V0dGluZworICBvdmVycmlkZSB0aGUgY29uZmlndXJlIGFuZCBtYWtlZmlsZSBkZWZhdWx0cywgd2l0aG91dCBkZWxldGluZyBvcHRpb25zIHRoZQorICB1c2VyIGRpZG4ndCBpbnRlbmQgdG8gb3ZlcnJpZGUuICBEZXZlbG9wZXJzIHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5CisgIE9QVCBvciBFWFRSQV9DRkxBR1MsIGFsdGhvdWdoIHRob3NlIHZhcmlhYmxlcyBhcmUgc3RpbGwgcHJlc2VudCBmb3IKKyAgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjODg1NDogRml4IGZpbmRpbmcgVmlzdWFsIFN0dWRpbyAyMDA4IG9uIFdpbmRvd3MgeDY0LgorCistIElzc3VlICMxNzU5MTY5LCAjODg2NDogRHJvcCBfWE9QRU5fU09VUkNFIG9uIFNvbGFyaXMsIGRlZmluZSBpdCBmb3IKKyAgbXVsdGlwcm9jZXNzaW5nIG9ubHkuCisKKy0gSXNzdWUgIzg2MjU6IFR1cm4gb2ZmIG9wdGltaXphdGlvbiBpbiAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgd2l0aCBnY2MuCisgIChPcHRpbWl6YXRpb24gd2FzIHVuaW50ZW50aW9uYWxseSB0dXJuZWQgb24gaW4gZ2NjIC0td2l0aC1weWRlYnVnIGJ1aWxkcyBhcyBhCisgIHJlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3Mgc3RyYW5nZSBjaG9pY2Ugb2YKKyAgZGVmYXVsdCBDRkxBR1MgcHJvZHVjZWQgYnkgQUNfUFJPR19DQyBmb3IgZ2NjLikKKworLSBJc3N1ZSAjMzY0NjogSXQgaXMgbm93IGVhc2lseSBwb3NzaWJsZSB0byBpbnN0YWxsIGEgUHl0aG9uIGZyYW1ld29yayBpbnRvIHlvdXIKKyAgaG9tZSBkaXJlY3Rvcnkgb24gTWFjT1NYLCBzZWUgTWFjL1JFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMzkyODogb3MubWtub2QoKSBub3cgYXZhaWxhYmxlIGluIFNvbGFyaXMsIGFsc28uCisKKy0gSXNzdWUgIzMzMjY6IEJ1aWxkIFB5dGhvbiB3aXRob3V0IC1mbm8tc3RyaWN0LWFsaWFzaW5nIHdoZW4gdGhlIGdjYyBkb2VzIG5vdAorICBnaXZlIGZhbHNlIHdhcm5pbmdzLgorCistIElzc3VlICMxNjI4NDg0OiBUaGUgTWFrZWZpbGUgZG9lc24ndCBpZ25vcmUgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICBhbnltb3JlLiAgSXQgYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYQorICBzaGFyZWQgbGlicmFyeS4KKworLSBJc3N1ZSAjNjcxNjogUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4gIEV4Y2x1ZGUgMnRvMworICB0ZXN0cyBmcm9tIGNvbXBpbGVhbGwuCisKKy0gSXNzdWUgIzM5MjAsICM3OTAzOiBEZWZpbmUgX0JTRF9TT1VSQ0Ugb24gT3BlbkJTRCA0LjQgdGhyb3VnaCA0LjkuCisKKy0gSXNzdWUgIzc2MzI6IFdoZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUKKyAgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGluIGR0b2EuYyBhbmQgdXNlIFB5TWVtX01hbGxvYyBhbmQgUHlNZW1fRnJlZQorICBpbnN0ZWFkLiAgQWxzbyBkaXNhYmxlIGNhY2hpbmcgb2YgcG93ZXJzIG9mIDUuCisKKy0gSXNzdWUgIzY0OTE6IEFsbG93IC0td2l0aC1kYm1saWJvcmRlciB0byBzcGVjaWZ5IHRoYXQgbm8gZGJtcyB3aWxsIGJlIGJ1aWx0LgorCistIElzc3VlICM2OTQzOiBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBsaWJmZmkgaGVhZGVycyB3aGVuIHRoZQorICAtLXdpdGgtc3lzdGVtLWZmaSBmbGFnIGlzIHVzZWQuCisKKy0gSXNzdWUgIzc2MDk6IEFkZCBhIC0td2l0aC1zeXN0ZW0tZXhwYXQgb3B0aW9uIHRoYXQgY2F1c2VzIHRoZSBzeXN0ZW0ncyBleHBhdAorICBsaWJyYXJ5IHRvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQgd2l0aAorICBQeXRob24uCisKKy0gSXNzdWUgIzc1ODk6IE9ubHkgYnVpbGQgdGhlIG5pcyBtb2R1bGUgd2hlbiB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZXMgYXJlCisgIGZvdW5kLgorCistIFN3aXRjaCB0byBPcGVuU1NMIDAuOS44bCBhbmQgc3FsaXRlIDMuNi4yMSBvbiBXaW5kb3dzLgorCistIElzc3VlICM1NzkyOiBFeHRlbmQgdGhlIHNob3J0IGZsb2F0IHJlcHIgc3VwcG9ydCB0byB4ODYgc3lzdGVtcyB1c2luZworICBpY2Mgb3Igc3VuY2MuCisKKy0gSXNzdWUgIzY2MDM6IENoYW5nZSBSRUFEX1RJTUVTVEFNUCBtYWNybyBpbiBjZXZhbC5jIHNvIHRoYXQgaXQgY29tcGlsZXMKKyAgY29ycmVjdGx5IHVuZGVyIGdjYyBvbiB4ODYtNjQuICBUaGlzIGZpeGVzIGEgcmVwb3J0ZWQgcHJvYmxlbSB3aXRoIHRoZQorICAtLXdpdGgtdHNjIGJ1aWxkIG9uIHg4Ni02NC4KKworLSBJc3N1ZSAjNjgwMjogRml4IGJ1aWxkIGlzc3VlcyBvbiBNYWNPU1ggMTAuNi4KKworLSBJc3N1ZSAjNjI0NDogQWxsb3cgZGV0ZWN0X3RraW50ZXIgdG8gbG9vayBmb3IgVGNsL1RrIDguNi4KKworLSBJc3N1ZSAjNDYwMTogJ21ha2UgaW5zdGFsbCcgZGlkIG5vdCBzZXQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIG9uCisgIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM1MzkwOiBBZGQgdW5pbnN0YWxsIGljb24gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciBmaWxlIGV4dGVuc2lvbnMgYXJlCisgIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjNzU0MTogV2hlbiB1c2luZyBgYHB5dGhvbi1jb25maWdgYCB3aXRoIGEgZnJhbWV3b3JrIGluc3RhbGwgdGhlCisgIGNvbXBpbGVyIG1pZ2h0IHVzZSB0aGUgd3JvbmcgbGlicmFyeS4KKworLSBweXRob24tY29uZmlnIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBvcHRpb25zIG9uIHRoZSBzYW1lIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjODUwOTogRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KKworLSBJc3N1ZSAjODUxMDogVXBkYXRlIHRvIGF1dG9jb25mMi42NS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM5ODE3OiBBZGQgZXhwYXQgQ09QWUlORyBmaWxlOyBhZGQgZXhwYXQsIGxpYmZmaSBhbmQgZXhwYXQgbGljZW5zZXMKKyAgdG8gRG9jL2xpY2Vuc2UucnN0LgorCistIElzc3VlICM5NTI0OiBEb2N1bWVudCB0aGF0IHR3byBDVFJMKiBzaWduYWxzIGFyZSBtZWFudCBmb3IgdXNlIG9ubHkKKyAgd2l0aCBvcy5raWxsLgorCistIElzc3VlICM5MjU1OiBEb2N1bWVudCB0aGF0IHRoZSAndGVzdCcgcGFja2FnZSBpcyBtZWFudCBmb3IgaW50ZXJuYWwgUHl0aG9uIHVzZQorICBvbmx5LgorCistIEEgc21hbGwgV1NHSSBzZXJ2ZXIgd2FzIGFkZGVkIGFzIFRvb2xzL3NjcmlwdHMvc2VydmUucHksIGFuZCBpcyB1c2VkIHRvCisgIGltcGxlbWVudCBhIGxvY2FsIGRvY3VtZW50YXRpb24gc2VydmVyIHZpYSAnbWFrZSBzZXJ2ZScgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCisKKy0gVXBkYXRpbmcgYFVzaW5nIFB5dGhvbmAgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGRlc2NyaXB0aW9uIG9mIENQeXRob24ncyAtSgorICBhbmQgLVggb3B0aW9ucy4KKworLSBEb2N1bWVudCB0aGF0IGltcG9ydGluZyBhIG1vZHVsZSB0aGF0IGhhcyBOb25lIGluIHN5cy5tb2R1bGVzIHRyaWdnZXJzIGFuCisgIEltcG9ydEVycm9yLgorCistIElzc3VlICM2NTU2OiBGaXhlZCB0aGUgRGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9jYXRpb24gZXhwbGFuYXRpb24gZm9yCisgIFdpbmRvd3MuCisKKy0gVXBkYXRlIHB5dGhvbiBtYW51YWwgcGFnZSAob3B0aW9ucyAtQiwgLU8wLCAtcywgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KKworLSBJc3N1ZSAjODkwOTogQWRkZWQgdGhlIHNpemUgb2YgdGhlIGJpdG1hcCB1c2VkIGluIHRoZSBpbnN0YWxsZXIgY3JlYXRlZCBieQorICBkaXN0dXRpbHMnIGJkaXN0X3dpbmluc3QuIFBhdGNoIGJ5IEFuYXRvbHkgVGVjaHRvbmlrLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTI1MTogdGVzdF90aHJlYWRlZF9pbXBvcnQgZGlkbid0IGZhaWwgd2hlbiBydW4gdGhyb3VnaCByZWdydGVzdCBpZiB0aGUKKyAgaW1wb3J0IGxvY2sgd2FzIGRpc2FibGVkLgorCistIElzc3VlICM4NjA1OiBTa2lwIHRlc3RfZ2RiIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMuCisKKy0gSXNzdWUgIzc0NDk6IFNraXAgdGVzdF9zb2NrZXRzZXJ2ZXIgaWYgdGhyZWFkaW5nIHN1cHBvcnQgaXMgZGlzYWJsZWQuCisKKy0gSXNzdWUgIzg2NzI6IEFkZCBhIHpsaWIgdGVzdCBlbnN1cmluZyB0aGF0IGFuIGluY29tcGxldGUgc3RyZWFtIGNhbiBiZSBoYW5kbGVkCisgIGJ5IGEgZGVjb21wcmVzc29yIG9iamVjdCB3aXRob3V0IGVycm9ycyAoaXQgcmV0dXJucyBpbmNvbXBsZXRlIHVuY29tcHJlc3NlZAorICBkYXRhKS4KKworLSBJc3N1ZSAjODUzMzogcmVncnRlc3QgdXNlcyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIgZm9yIHN0ZG91dCB0byBhdm9pZAorICBVbmljb2RlRW5jb2RlRXJyb3IgKHdyaXRlIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdG8gc3Rkb3V0IHVzaW5nIEFTQ0lJIGVuY29kaW5nKS4KKworLSBJc3N1ZSAjODU3NjogUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZAorICB0ZXN0X211bHRpcHJvY2Vzc2luZy4gIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzc0NDk6IEZpeCBtYW55IHRlc3RzIHRvIHN1cHBvcnQgUHl0aG9uIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkCisgIHN1cHBvcnQuIFBhdGNoZXMgd3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgorCistIElzc3VlICM4MTA4OiB0ZXN0X2Z0cGxpYidzIG5vbi1ibG9ja2luZyBTU0wgc2VydmVyIG5vdyBoYXMgcHJvcGVyIGhhbmRsaW5nIG9mCisgIFNTTCBzaHV0ZG93bnMuCisKKy0gSXNzdWVzICM4Mjc5LCAjODMzMCwgIzg0MzcsICM4NDgwLCAjODQ5NTogRml4IHRlc3RfZ2RiIGZhaWx1cmVzLCBwYXRjaCB3cml0dGVuCisgIGJ5IERhdmUgTWFsY29sbS4KKworLSBJc3N1ZSAjMzg2NDogU2tpcCB0aHJlZSB0ZXN0X3NpZ25hbCB0ZXN0cyBvbiBmcmVlYnNkNiBiZWNhdXNlIHRoZXkgZmFpbCBpZiBhbnkKKyAgdGhyZWFkIHdhcyBwcmV2aW91c2x5IHN0YXJ0ZWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBhIHBsYXRmb3JtIGJ1Zy4KKworLSBJc3N1ZSAjODE5MzogRml4IHRlc3RfemxpYiBmYWlsdXJlIHdpdGggemxpYiAxLjIuNC4KKworLSBJc3N1ZSAjODI0ODogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBib29sIHR5cGUuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCisKKy0gSXNzdWUgIzgyNjM6IE5vdyByZWdydGVzdC5weSB3aWxsIHJlcG9ydCBhIGZhaWx1cmUgaWYgaXQgcmVjZWl2ZXMgYQorICBLZXlib2FyZEludGVycnVwdCAoU0lHSU5UKS4KKworLSBJc3N1ZSAjODE4MCBhbmQgIzgyMDc6IEZpeCB0ZXN0X3BlcDI3NyBvbiBPUyBYIGFuZCBhZGQgbW9yZSB0ZXN0cyBmb3Igc3BlY2lhbAorICBVbmljb2RlIG5vcm1hbGl6YXRpb24gY2FzZXMuCisKKy0gSXNzdWUgIzc3ODM6IHRlc3Quc3VwcG9ydC5vcGVuX3VybHJlc291cmNlIGludmFsaWRhdGVzIHRoZSBvdXRkYXRlZCBmaWxlcyBmcm9tCisgIHRoZSBsb2NhbCBjYWNoZS4KKworLSBJc3N1ZSAjNzg0OTogTm93IHRoZSB1dGlsaXR5IGBgY2hlY2tfd2FybmluZ3NgYCB2ZXJpZmllcyBpZiB0aGUgd2FybmluZ3MgYXJlCisgIGVmZmVjdGl2ZWx5IHJhaXNlZC4KKworLSBUaGUgZm91ciBwYXRoIG1vZHVsZXMgKGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGgsIHBvc2l4cGF0aCkgc2hhcmUgYSBjb21tb24KKyAgVGVzdENhc2UgZm9yIHNvbWUgdGVzdHM6IHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdC4KKworLSBQcmludCBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB3aGVuIHJ1bm5pbmcgdGhlIHdob2xlIHRlc3Qgc3VpdGUsIG9yIHVzaW5nIHRoZQorICAtLXZlcmJvc2UgZmxhZy4KKworLSBJc3N1ZSAjNzY3Njc1OiBlbmFibGUgdGVzdF9wZXAyNzcgb24gUE9TSVggcGxhdGZvcm1zIHdpdGggVW5pY29kZS1mcmllbmRseQorICBmaWxlc3lzdGVtIGVuY29kaW5nLgorCistIElzc3VlICM2MjkyOiBmb3IgdGhlIG1vbWVudCBhdCBsZWFzdCwgdGhlIHRlc3Qgc3VpdGUgcnVucyBjbGVhbmx5IGlmIHB5dGhvbiBpcworICBydW4gd2l0aCB0aGUgLU9PIGZsYWcuICBUZXN0cyByZXF1aXJpbmcgZG9jc3RyaW5ncyBhcmUgc2tpcHBlZC4KKworLSBJc3N1ZSAjNzcxMjogdGVzdC5zdXBwb3J0IGdhaW5lZCBhIG5ldyBgdGVtcF9jd2RgIGNvbnRleHQgbWFuYWdlciB3aGljaCBpcyBub3cKKyAgYWxzbyB1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQorICBvcmlnaW5hbCBDV0QgaXMgc2F2ZWQgaW4gYHN1cHBvcnQuU0FWRURDV0RgLiAgVGhhbmtzIHRvIEZsb3JlbnQgWGljbHVuYSB3aG8KKyAgaGVscGVkIHdpdGggdGhlIHBhdGNoLgorCistIElzc3VlICM3OTI0OiBGaXggYW4gaW50ZXJtaXR0ZW50ICdYWFggdW5kZXRlY3RlZCBlcnJvcicgZmFpbHVyZSBpbiB0ZXN0X2NhcGkKKyAgKG9ubHkgc2VlbiBzbyBmYXIgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjdXJzZXMgbW9kdWxlIHdhc24ndCBidWlsdCksIGR1ZSB0bworICBhbiB1bmNsZWFyZWQgZXhjZXB0aW9uLgorCistIElzc3VlICM3NzI4OiB0ZXN0X3RpbWVvdXQgd2FzIGNoYW5nZWQgdG8gdXNlIHN1cHBvcnQuYmluZF9wb3J0IGluc3RlYWQgb2YgYQorICBoYXJkIGNvZGVkIHBvcnQuCisKKy0gSXNzdWUgIzczNzY6IEluc3RlYWQgb2YgcnVubmluZyBhIHNlbGYtdGVzdCAod2hpY2ggd2FzIGZhaWxpbmcpIHdoZW4gY2FsbGVkCisgIHdpdGggbm8gYXJndW1lbnRzLCBkb2N0ZXN0LnB5IG5vdyBnaXZlcyBhIHVzYWdlIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzczOTY6IGZpeCByZWdydGVzdCAtcywgd2hpY2ggd2FzIGJyb2tlbiBieSB0aGUgLWogZW5oYW5jZW1lbnQuCisKKy0gSXNzdWUgIzc0OTg6IHRlc3RfbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIHRlc3Quc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0CisgIGluc3RlYWQgb2YgYSBoYXJkY29kZWQgcG9ydCBudW1iZXIgaW4gdGVzdF9yYXBpZF9yZXN0YXJ0LgorCistIElzc3VlICM3NDMxOiBVc2UgVEVTVEZOIGluIHRlc3RfbGluZWNhY2hlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGNyZWF0ZSBhIGZpbGUKKyAgaW4gdGhlIExpYi90ZXN0IGRpcmVjdG9yeSwgd2hpY2ggbWlnaHQgYmUgcmVhZC1vbmx5IGZvciB0aGUgdXNlciBydW5uaW5nIHRoZQorICB0ZXN0cy4KKworLSBJc3N1ZSAjNzMyNDogQWRkIGEgc2FuaXR5IGNoZWNrIHRvIHJlZ3J0ZXN0IGFyZ3VtZW50IHBhcnNpbmcgdG8gY2F0Y2ggdGhlIGNhc2UKKyAgb2YgYW4gb3B0aW9uIHdpdGggbm8gaGFuZGxlci4KKworLSBJc3N1ZSAjNzMxMjogQWRkIGEgLUYgZmxhZyB0byBydW4gdGhlIHNlbGVjdGVkIHRlc3RzIGluIGEgbG9vcCB1bnRpbCBhIHRlc3QKKyAgZmFpbHMuICBDYW4gYmUgY29tYmluZWQgd2l0aCAtai4KKworLSBJc3N1ZSAjNjU1MTogdGVzdF96aXBpbXBvcnQgY291bGQgaW1wb3J0IGFuZCB0aGVuIGRlc3Ryb3kgc29tZSBtb2R1bGVzIG9mIHRoZQorICBlbmNvZGluZ3MgcGFja2FnZSwgd2hpY2ggd291bGQgbWFrZSBvdGhlciB0ZXN0cyBmYWlsIGZ1cnRoZXIgZG93biB0aGUgcm9hZAorICBiZWNhdXNlIHRoZSBpbnRlcm5hbGx5IGNhY2hlZCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgd291bGQgcG9pbnQgdG8gZW1wdHkKKyAgZ2xvYmFsIHZhcmlhYmxlcy4KKworLSBJc3N1ZSAjNzI5NTogRG8gbm90IHVzZSBhIGhhcmRjb2RlZCBmaWxlIG5hbWUgaW4gdGVzdF90YXJmaWxlLgorCistIElzc3VlICM3MjcwOiBBZGQgc29tZSBkZWRpY2F0ZWQgdW5pdCB0ZXN0cyBmb3IgbXVsdGktdGhyZWFkIHN5bmNocm9uaXphdGlvbgorICBwcmltaXRpdmVzIHN1Y2ggYXMgTG9jaywgUkxvY2ssIENvbmRpdGlvbiwgRXZlbnQgYW5kIFNlbWFwaG9yZS4KKworLSBJc3N1ZSAjNzI0OCAocGFydCAyKTogVXNlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGltcG9ydGxpYiBzb3VyY2UKKyAgdGVzdHMgaW5zdGVhZCBvZiB0ZW1wZmlsZS50ZW1wZGlyLiBUaGlzIHByZXZlbnRzIHRoZSB0ZXN0cyBmcm9tIHNoYXJpbmcgc3RhdGUKKyAgYmV0d2VlbiBjb25jdXJyZW50IGV4ZWN1dGlvbnMgb24gdGhlIHNhbWUgc3lzdGVtLgorCistIElzc3VlICM3MjQ4OiBJbiBpbXBvcnRsaWIudGVzdC5zb3VyY2UudXRpbCBhIHRyeS9maW5hbGx5IGJsb2NrIGRpZCBub3QgbWFrZQorICBzdXJlIHRoYXQgc29tZSByZWZlcmVuY2VkIG9iamVjdHMgYWN0dWFsbHkgd2VyZSBjcmVhdGVkIGluIHRoZSBibG9jayBiZWZvcmUKKyAgY2FsbGluZyBtZXRob2RzIG9uIHRoZSBvYmplY3QuCisKKy0gSXNzdWUgIzcyMjI6IE1ha2UgdGhyZWFkICJyZWFwaW5nIiBtb3JlIHJlbGlhYmxlIHNvIHRoYXQgcmVmZXJlbmNlCisgIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiAgVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCisgIHRocmVhZHMgY291bGQgcmV0dXJuIHN1Y2Nlc3NmdWxseSB3aGlsZSBzb21lIFRocmVhZCBvYmplY3RzIHdlcmUgc3RpbGwKKyAgcmVmZXJlbmNlZC4gIFRoaXMgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHByaXZhdGUgZnVuY3Rpb246CisgIGBgX3RocmVhZC5fY291bnQoKWBgLgorCistIElzc3VlICM3MTUxOiBGaXhlZCByZWdydGVzdCAtaiBzbyB0aGF0IG91dHB1dCB0byBzdGRlcnIgZnJvbSBhIHRlc3Qgbm8gbG9uZ2VyCisgIHJ1bnMgdGhlIHJpc2sgb2YgY2F1c2luZyB0aGUgd29ya2VyIHRocmVhZCB0byBmYWlsLgorCistIElzc3VlICM3MDU1OiB0ZXN0X19fYWxsX18gbm93IGdyZWVkaWx5IGRldGVjdHMgYWxsIG1vZHVsZXMgd2hpY2ggaGF2ZSBhbgorICBfX2FsbF9fIGF0dHJpYnV0ZSwgcmF0aGVyIHRoYW4gdXNpbmcgYSBoYXJkY29kZWQgYW5kIGluY29tcGxldGUgbGlzdC4KKworLSBJc3N1ZSAjNzA1ODogQWRkZWQgc2F2ZS9yZXN0b3JlIGZvciB0aGluZ3MgbGlrZSBzeXMuYXJndiBhbmQgY3dkIHRvCisgIHJ1bnRlc3RfaW5uZXIgaW4gcmVncnRlc3QsIHdpdGggd2FybmluZ3MgaWYgdGhlIGNhbGxlZCB0ZXN0IG1vZGlmaWVzIHRoZW0sIGFuZAorICBhIG5ldyBzZWN0aW9uIGluIHRoZSBzdW1tYXJ5IHJlcG9ydCBhdCB0aGUgZW5kLgorCistIElzc3VlICM3MDQyOiBGaXggdGVzdF9zaWduYWwgKHRlc3RfaXRpbWVyX3ZpcnR1YWwpIGZhaWx1cmUgb24gT1MgWCAxMC42LgorCistIEZpeGVkIHRlc3RzIGluIGltcG9ydGxpYi50ZXN0LnNvdXJjZS50ZXN0X2FiY19sb2FkZXIgdGhhdCB3ZXJlIG1hc2tpbmcgdGhlCisgIHByb3BlciBleGNlcHRpb25zIHRoYXQgc2hvdWxkIGJlIHJhaXNlZCBmb3IgbWlzc2luZyBvciBpbXByb3BlciBjb2RlIG9iamVjdAorICBieXRlY29kZS4KKworLSBSZW1vdmVkIGltcG9ydGxpYidzIGN1c3RvbSB0ZXN0IGRpc2NvdmVyeSBjb2RlIGFuZCBzd2l0Y2hlZCB0bworICB1bml0dGVzdC5UZXN0TG9hZGVyLmRpc2NvdmVyKCkuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM1NDY0LCAjODk3NDogSW1wbGVtZW50IHBsdXJhbCBmb3JtcyBpbiBtc2dmbXQucHkuCisKKy0gaW9iZW5jaCAoYSBmaWxlIEkvTyBiZW5jaG1hcmspIGFuZCBjY2JlbmNoIChhIGNvbmN1cnJlbmN5IGJlbmNobWFyaykgd2VyZQorICBhZGRlZCB0byB0aGUgYFRvb2xzL2AgZGlyZWN0b3J5LiAgVGhleSB3ZXJlIHByZXZpb3VzbHkgbGl2aW5nIGluIHRoZSBzYW5kYm94LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjctSnVuZS0yMDA5KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjMzNDogRml4IGJ1ZyBpbiByYW5nZSBsZW5ndGggY2FsY3VsYXRpb24gZm9yIHJhbmdlcyB3aXRoCisgIGxhcmdlIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjNjMyOTogRml4ZWQgaXRlcmF0aW9uIGZvciBtZW1vcnl2aWV3IG9iamVjdHMgKGl0IHdhcyBiZWluZyBibG9ja2VkCisgIGJlY2F1c2UgaXQgd2Fzbid0IHJlY29nbml6ZWQgYXMgYSBzZXF1ZW5jZSkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjNjEyNjogRml4ZWQgcGRiIGNvbW1hbmQtbGluZSB1c2FnZS4KKworLSBJc3N1ZSAjNjMxNDogbG9nZ2luZzogcGVyZm9ybXMgZXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50LgorCistIElzc3VlICM2Mjc0OiBGaXhlZCBwb3NzaWJsZSBmaWxlIGRlc2NyaXB0b3JzIGxlYWsgaW4gc3VicHJvY2Vzcy5weQorCistIEFjY2Vzc2luZyBpby5TdHJpbmdJTy5idWZmZXIgbm93IHJhaXNlcyBhbiBBdHRyaWJ1dGVFcnJvciBpbnN0ZWFkIG9mCisgIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLgorCistIElzc3VlICM2MjcxOiBtbWFwIHRyaWVkIHRvIGNsb3NlIGludmFsaWQgZmlsZSBoYW5kbGUgKC0xKSB3aGVuIGFub255bW91cy4KKyAgKE9uIFVuaXgpCisKKy0gSXNzdWUgIzEyMDI6IHppcGZpbGUgbW9kdWxlIHdvdWxkIGNhdXNlIGEgc3RydWN0LmVycm9yIHdoZW4gYXR0ZW1wdGluZyB0bworICBzdG9yZSBmaWxlcyB3aXRoIGEgQ1JDMzIgPiAyKiozMS0xLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTU5MDogUmVtb3ZlIHVudXNlZCBnbG9iYWwgdmFyaWFibGUgaW4gcHlleHBhdCBleHRlbnNpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtSnVuZS0yMDA5KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXhlZCBTeXN0ZW1FcnJvciB0cmlnZ2VyZWQgYnkgInJhbmdlKFtdLCAxLCAtMSkiLgorCistIElzc3VlICM1OTI0OiBPbiBXaW5kb3dzLCBhIGxhcmdlIFBZVEhPTlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgKG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycykgd291bGQgYmUgY29tcGxldGVseSBpZ25vcmVkLgorCistIElzc3VlICM0NTQ3OiBXaGVuIGRlYnVnZ2luZyBhIHZlcnkgbGFyZ2UgZnVuY3Rpb24sIGl0IHdhcyBub3QgYWx3YXlzCisgIHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgbGluZW5vIGF0dHJpYnV0ZSBvZiB0aGUgY3VycmVudCBmcmFtZS4KKworLSBJc3N1ZSAjNTMzMDogQyBmdW5jdGlvbnMgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMgd2VyZSBub3QgcmVwb3J0ZWQgYnkKKyAgdGhlIHZhcmlvdXMgcHJvZmlsaW5nIG1vZHVsZXMgKHByb2ZpbGUsIGNQcm9maWxlKS4gUGF0Y2ggYnkgSGFnZW4gRsO8cnN0ZW5hdS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM2NDM4OiBGaXhlZCBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyLmdldF92ZXJzaW9ucyA6IHRoZSByZWd1bGFyCisgIGV4cHJlc3Npb24gc3RyaW5nIHBhdHRlcm4gd2FzIHRyeWluZyB0byBtYXRjaCBhZ2FpbnN0IGEgYnl0ZXMgcmV0dXJuZWQgYnkKKyAgUG9wZW4uIFRlc3RlZCB1bmRlciB3aW4zMiB0byBidWlsZCB0aGUgcHktcG9zdGdyZXNxbCBwcm9qZWN0LgorCistIElzc3VlICM2MjU4OiBTdXBwb3J0IEFNRDY0IGluIGJkaXN0X21zaS4KKworLSBJc3N1ZSAjNjE5NTogZml4ZWQgZG9jdGVzdCB0byBubyBsb25nZXIgdHJ5IHRvIHJlYWQgJ3NvdXJjZScgZGF0YSBmcm9tCisgIGJpbmFyeSBmaWxlcy4KKworLSBJc3N1ZSAjNTI2MjogRml4ZWQgYnVnIGluIG5leHQgcm9sbG92ZXIgdGltZSBjb21wdXRhdGlvbiBpbgorICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIuCisKKy0gSXNzdWUgIzYyMTc6IFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGlvLlRleHRJT1dyYXBwZXIgZGlkbid0IGluY2x1ZGUgdGhlCisgIGVycm9ycyBwcm9wZXJ0eS4gIEFkZGl0aW9uYWxseSwgdGhlIGVycm9ycyBhbmQgZW5jb2RpbmcgcHJvcGVydGllcyBvZiBTdHJpbmdJTworICBhcmUgYWx3YXlzIE5vbmUgbm93LgorCistIElzc3VlICM2MTM3OiBUaGUgcGlja2xlIG1vZHVsZSBub3cgdHJhbnNsYXRlcyBtb2R1bGUgbmFtZXMgd2hlbiBsb2FkaW5nCisgIG9yIGR1bXBpbmcgcGlja2xlcyB3aXRoIGEgMi54LWNvbXBhdGlibGUgcHJvdG9jb2wsIGluIG9yZGVyIHRvIG1ha2UgZGF0YQorICBzaGFyaW5nIGFuZCBtaWdyYXRpb24gZWFzaWVyLiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgZGlzYWJsZWQgdXNpbmcgdGhlCisgIG5ldyBgZml4X2ltcG9ydHNgIG9wdGlvbmFsIGFyZ3VtZW50LgorCistIFJlbW92ZWQgdGhlIGlwYWRkciBtb2R1bGUuCisKKy0gSXNzdWUgIzM2MTM6IGJhc2U2NC57ZW5jb2RlLGRlY29kZX1zdHJpbmcgYXJlIG5vdyBjYWxsZWQKKyAgYmFzZTY0LntlbmNvZGUsZGVjb2RlfWJ5dGVzIHdoaWNoIHJlZmxlY3RzIHdoYXQgdHlwZSB0aGV5IGFjY2VwdCBhbmQgcmV0dXJuLgorICBUaGUgb2xkIG5hbWVzIGFyZSBzdGlsbCB0aGVyZSBhcyBkZXByZWNhdGVkIGFsaWFzZXMuCisKKy0gSXNzdWUgIzU3Njc6IFJlbW92ZSBzZ21sb3Agc3VwcG9ydCBmcm9tIHhtbHJwYy5jbGllbnQuCisKKy0gSXNzdWUgIzYxNTA6IEZpeCB0ZXN0X3VuaWNvZGUgb24gd2lkZS11bmljb2RlIGJ1aWxkcy4KKworLSBJc3N1ZSAjNjE0OTogRml4IGluaXRpYWxpemF0aW9uIG9mIFdlYWtWYWx1ZURpY3Rpb25hcnkgb2JqZWN0cyBmcm9tIG5vbi1lbXB0eQorICBwYXJhbWV0ZXJzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzYyMjE6IERlbGV0ZSB0ZXN0IHJlZ2lzdHJ5IGtleSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdC4KKworLSBJc3N1ZSAjNjE1ODogUGFja2FnZSBTaW5lLTEwMDBIei0zMDBtcy5haWYgaW4gTVNJIGZpbGUuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICM1NzM1OiBQeXRob24gY29tcGlsZWQgd2l0aCAtLXdpdGgtcHlkZWJ1ZyBzaG91bGQgdGhyb3cgYW4KKyAgSW1wb3J0RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IG1vZHVsZXMgY29tcGlsZWQgd2l0aG91dAorICAtLXdpdGgtcHlkZWJ1ZywgYW5kIHZpY2UtdmVyc2EuCisKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzYxNTQ6IE1ha2Ugc3VyZSB0aGUgaW50bCBsaWJyYXJ5IGlzIGFkZGVkIHRvIExJQlMgaWYgbmVlZGVkLiBBbHNvCisgIGFkZGVkIExJQlMgdG8gT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgorCistIElzc3VlICM1ODA5OiBTcGVjaWZ5aW5nIGJvdGggLS1lbmFibGUtZnJhbWV3b3JrIGFuZCAtLWVuYWJsZS1zaGFyZWQgaXMKKyAgYW4gZXJyb3IuIENvbmZpZ3VyZSBub3cgZXhwbGljaXR5IHRlbGxzIHlvdSBhYm91dCB0aGlzLgorCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS0wNS0zMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzYwOTc6IEVzY2FwZSBVVEYtOCBzdXJyb2dhdGVzIHJlc3VsdGluZyBmcm9tIG1ic3RvY3MgY29udmVyc2lvbgorICBvZiB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM2MDEyOiBBZGQgY2xlYW51cCBzdXBwb3J0IHRvIE8mIGFyZ3VtZW50IHBhcnNpbmcuCisKKy0gSXNzdWUgIzYwODk6IEZpeGVkIHN0ci5mb3JtYXQgd2l0aCBjZXJ0YWluIGludmFsaWQgZmllbGQgc3BlY2lmaWVycworICB0aGF0IHdvdWxkIHJhaXNlIFN5c3RlbUVycm9yLgorCistIElzc3VlICM1OTgyOiBzdGF0aWNtZXRob2QgYW5kIGNsYXNzbWV0aG9kIG5vdyBleHBvc2UgdGhlIHdyYXBwZWQKKyAgZnVuY3Rpb24gd2l0aCBfX2Z1bmNfXy4KKworLSBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IG1hbmFnZXJzIGluIHRoZSBzYW1lIHdpdGgtc3RhdGVtZW50LgorICBEZXByZWNhdGVkIGNvbnRleHRsaWIubmVzdGVkKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKworLSBJc3N1ZSAjNTgyOTogY29tcGxleCgiMWU1MDAiKSBubyBsb25nZXIgcmFpc2VzIE92ZXJmbG93RXJyb3IuICBUaGlzCisgIG1ha2VzIGl0IGNvbnNpc3RlbnQgd2l0aCBmbG9hdCgiMWU1MDAiKSBhbmQgaW50ZXJwcmV0YXRpb24gb2YgcmVhbAorICBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLgorCistIElzc3VlICMzNTI3OiBSZW1vdmVkIFB5X1dJTl9XSURFX0ZJTEVOQU1FUyB3aGljaCBpcyBub3QgdXNlZCBhbnkgbW9yZS4KKworLSBJc3N1ZSAjNTk5NDogdGhlIG1hcnNoYWwgbW9kdWxlIG5vdyBoYXMgZG9jc3RyaW5ncy4KKworLSBJc3N1ZSAjNTk4MTogRml4IHRocmVlIG1pbm9yIGluZi9uYW4gaXNzdWVzIGluIGZsb2F0LmZyb21oZXg6CisgICgxKSBpbmYgYW5kIG5hbiBzdHJpbmdzIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB3ZXJlIGluY29ycmVjdGx5CisgIHJlamVjdGVkOyAgKDIpIHBhcnNpbmcgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgaW5maW5pdGllcyBhbmQgbmFucworICB3YXMgbG9jYWxlIGF3YXJlOyBhbmQgKDMpIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmcm9taGV4KCctbmFuJykKKyAgZGlkbid0IG1hdGNoIHRoYXQgb2YgZmxvYXQoJy1uYW4nKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM0ODU5OiBJbXBsZW1lbnQgUEVQIDM4MyBmb3IgcHdkLCBzcHdkLCBhbmQgZ3JwLgorCistIHNtdHBsaWIgJ2xvZ2luJyBhbmQgJ2NyYW0tbWQ1JyBsb2dpbiBhcmUgYWxzbyBmaXhlZCAoc2VlIElzc3VlICM1MjU5KS4KKworLSBJc3N1ZSAjNjEyMTogcHlkb2Mgbm93IGlnbm9yZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZQorICBhcmd1bWVudCB0byB0aGUgJ2hlbHAnIGZ1bmN0aW9uLgorCistIElzc3VlICM2MTE4OiB1cmxsaWIucGFyc2UucXVvdGVfcGx1cyBpZ25vcmVkIHRoZSBlbmNvZGluZyBhbmQgZXJyb3JzCisgIGFyZ3VtZW50cyBmb3Igc3RyaW5ncyB3aXRoIGEgc3BhY2UgaW4gdGhlbS4KKworLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgd2FzIG5vdCB3b3JraW5nIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZAorICBuYW1lczogIGNscywgc2VsZiwgdHVwbGUsIGl0ZW1nZXR0ZXIsIGFuZCBwcm9wZXJ0eS4KKworLSBJbiB1bml0dGVzdCwgdXNpbmcgYSBza2lwcGluZyBkZWNvcmF0b3Igb24gYSBjbGFzcyBpcyBub3cgZXF1aXZhbGVudCB0bworICBza2lwcGluZyBldmVyeSB0ZXN0IG9uIHRoZSBjbGFzcy4gIFRoZSBDbGFzc1Rlc3RTdWl0ZSBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM2MDUwOiBEb24ndCBmYWlsIGV4dHJhY3RpbmcgYSBkaXJlY3RvcnkgZnJvbSBhIHppcGZpbGUgaWYKKyAgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy4KKworLSBJc3N1ZSAjMTMwOTM1MjogZmNudGwgbm93IGNvbnZlcnRzIGl0cyB0aGlyZCBhcmd1bWVudHMgdG8gYSBDIGBsb25nYCByYXRoZXIKKyAgdGhhbiBhbiBpbnQsIHdoaWNoIG1ha2VzIHNvbWUgb3BlcmF0aW9ucyBwb3NzaWJsZSB1bmRlciA2NC1iaXQgTGludXggKGUuZy4KKyAgRE5fTVVMVElTSE9UIHdpdGggRl9OT1RJRlkpLgorCistIElzc3VlICM1NzYxOiBBZGQgdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgZmlsZSB0byB0aGUgcmVwcigpIG9mIHZhcmlvdXMKKyAgSU8gb2JqZWN0cy4KKworLSBJc3N1ZSAjNTI1OTogc210cGxpYiBwbGFpbiBhdXRoIGxvZ2luIG5vIGxvbmdlciBnaXZlcyBhIHRyYWNlYmFjay4gIEZpeAorICBieSBNdXNhc2hpIFRhbXVyYSwgdGVzdHMgYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjMTk4MzogRml4IGZ1bmN0aW9ucyB0YWtpbmcgb3IgcmV0dXJuaW5nIGEgcHJvY2VzcyBpZGVudGlmaWVyIHRvIHVzZQorICB0aGUgZGVkaWNhdGVkIEMgdHlwZSBgYHBpZF90YGAgaW5zdGVhZCBvZiBhIEMgYGBpbnRgYC4gU29tZSBwbGF0Zm9ybXMgaGF2ZQorICBhIHByb2Nlc3MgaWRlbnRpZmllciB0eXBlIHdpZGVyIHRoYW4gdGhlIHN0YW5kYXJkIEMgaW50ZWdlciB0eXBlLgorCistIElzc3VlICM0MDY2OiBzbXRwbGliLlNNVFBfU1NMLl9nZXRfc29ja2V0IG5vdyBjb3JyZWN0bHkgcmV0dXJucyB0aGUgc29ja2V0LgorICBQYXRjaCBieSBGYXJoYW4gQWhtYWQsIHRlc3QgYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjMjExNjogV2VhayByZWZlcmVuY2VzIGFuZCB3ZWFrIGRpY3Rpb25hcmllcyBub3cgc3VwcG9ydCBjb3B5KClpbmcgYW5kCisgIGRlZXBjb3B5KClpbmcuCisKKy0gSXNzdWUgIzE2NTU6IE1ha2UgaW1hcGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCisKKy0gSXNzdWUgIzU5MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBwYXJzZXIgbW9kdWxlLgorCistIElzc3VlICMxNjY0OiBNYWtlIG5udHBsaWIgSVB2Ni1jYXBhYmxlLiBQYXRjaCBieSBEZXJlayBNb3JyLgorCistIElzc3VlICM1MDA2OiBCZXR0ZXIgaGFuZGxpbmcgb2YgdW5pY29kZSBieXRlLW9yZGVyIG1hcmtzIChCT00pIGluIHRoZSBpbworICBsaWJyYXJ5LiBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvcGVuaW5nIGFuIFVURi0xNiB0ZXh0IGZpbGUgaW4KKyAgYXBwZW5kIG1vZGUgZG9lc24ndCBhZGQgYSBCT00gYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiB0aGUgZmlsZSBpc24ndAorICBlbXB0eS4KKworLSBJc3N1ZSAjNDA1MDogaW5zcGVjdC5maW5kc291cmNlL2dldHNvdXJjZSBub3cgcmFpc2UgYW4gSU9FcnJvciBpZiB0aGUgJ3NvdXJjZScKKyAgZmlsZSBpcyBhIGJpbmFyeS4gIFBhdGNoIGJ5IEJyb2RpZSBSYW8sIHRlc3RzIGJ5IERhbmllbCBEaW5pei4gIFRoaXMgZml4CisgIGNvcnJlY3RzIGEgcHlkb2MgcmVncmVzc2lvbi4KKworLSBJc3N1ZSAjNTk1NTogYWlmYydzIGNsb3NlIG1ldGhvZCBkaWQgbm90IGNsb3NlIHRoZSBmaWxlIGl0IHdyYXBwZWQsCisgIG5vdyBpdCBkb2VzLiAgVGhpcyBhbHNvIG1lYW5zIGdldGZwIG1ldGhvZCBub3cgcmV0dXJucyB0aGUgcmVhbCBmcC4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjA0NzogZnVsbGluc3RhbGwgaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIFB5dGhvbiAzJ3MgZXhlY3V0YWJsZSB3aWxsCisgIG5vdyBiZSBrbm93biBhcyBweXRob24zLgorCistIExpYi9zbXRwZC5weSBpcyBubyBsb25nZXIgaW5zdGFsbGVkIGFzIGEgc2NyaXB0LgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMzA2MTogVXNlIHdjc2Z0aW1lIGZvciB0aW1lLnN0cmZ0aW1lIHdoZXJlIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjNDg3MzogRml4IHJlc291cmNlIGxlYWtzIGluIGVycm9yIGNhc2VzIG9mIHB3ZCBhbmQgZ3JwLgorCistIElzc3VlICM2MDkzOiBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBsb2NhbGUuc3RyeGZybS4KKworLSBUaGUgX2Z1bmN0b29scyBhbmQgX2xvY2FsZSBtb2R1bGVzIGFyZSBub3cgYnVpbHQgaW50byB0aGUgbGlicHl0aG9uIHNoYXJlZAorICBsaWJyYXJ5IGluc3RlYWQgb2YgYXMgZXh0ZW5zaW9uIG1vZHVsZXMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMzNTg1OiBBZGQgcGtnLWNvbmZpZyBzdXBwb3J0LiBJdCBjcmVhdGVzIGEgcHl0aG9uLTIuNy5wYyBmaWxlCisgIGFuZCBhIHB5dGhvbjMucGMgc3ltbGluayBpbiB0aGUgJChMSUJESVIpL3BrZ2NvbmZpZyBkaXJlY3RvcnkuIFBhdGNoIGJ5CisgIENsaW50b24gUm95LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNTQ0MjogVGVzdHMgZm9yIGltcG9ydGxpYiB3ZXJlIG5vdCBwcm9wZXJseSBza2lwcGluZyBjYXNlLXNlbnNpdGl2aXR5CisgIHRlc3RzIG9uIGRhcndpbiBldmVuIHdoZW4gdGhlIE9TIHdhcyBpbnN0YWxsZWQgb24gYSBjYXNlLXNlbnNpdGl2ZQorICBmaWxlc3lzdGVtLiBBbHNvIGZpeGVkIHRlc3RzIHRoYXQgc2hvdWxkIG5vdCBiZSBydW4gd2hlbgorICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyB0cnVlLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBiZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTA2KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTkxNDogQWRkIG5ldyBDIEFQSSBmdW5jdGlvbiBQeU9TX3N0cmluZ190b19kb3VibGUsIGFuZAorICBkZXByZWNhdGUgUHlPU19hc2NpaV9zdHJ0b2QgYW5kIFB5T1NfYXNjaWlfYXRvZi4KKworLSBJc3N1ZSAjMzM4MjogZmxvYXQuX19mb3JtYXRfXywgY29tcGxleC5fX2Zvcm1hdF9fLCBhbmQgJS1mb3JtYXR0aW5nCisgIG5vIGxvbmdlciBtYXAgJ0YnIHRvICdmJy4gQmVjYXVzZSBvZiBpc3N1ZSAjNTg1OSAoYmVsb3cpLCB0aGlzIG9ubHkKKyAgYWZmZWN0cyBuYW4gLT4gTkFOIGFuZCBpbmYgLT4gSU5GLgorCistIElzc3VlICM1Nzk5OiBudHBhdGggKGllLCBvcy5wYXRoIG9uIFdpbmRvd3MpIGZ1bGx5IHN1cHBvcnRzIFVOQyBwYXRobmFtZXMKKyAgaW4gYWxsIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzcGxpdGRyaXZlLCBzcGxpdCwgZXRjLiAgc3BsaXR1bmMoKSBub3cgaXNzdWVzCisgIGEgUGVuZGluZ0RlcHJlY2F0aW9uIHdhcm5pbmcuCisKKy0gSXNzdWUgIzU5MjA6IEZvciBmbG9hdC5fX2Zvcm1hdF9fLCBjaGFuZ2UgdGhlIGJlaGF2aW9yIHdpdGggdGhlCisgIGVtcHR5IHByZXNlbnRhdGlvbiB0eXBlICh0aGF0IGlzLCBub3Qgb25lIG9mICdlJywgJ2YnLCAnZycsIG9yICduJykKKyAgdG8gYmUgbGlrZSAnZycgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwgcG9pbnQgYW5kIHdpdGggYQorICBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gUHJldmlvdXNseSwgdGhlIGJlaGF2aW9yIHRoZSBzYW1lIGJ1dCB3aXRoCisgIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgNi4gIFRoaXMgbW9yZSBjbG9zZWx5IG1hdGNoZXMgc3RyKCksIGFuZAorICByZWR1Y2VzIHN1cnByaXNlcyB3aGVuIGFkZGluZyBhbGlnbm1lbnQgZmxhZ3MgdG8gdGhlIGVtcHR5CisgIHByZXNlbnRhdGlvbiB0eXBlLiBUaGlzIGFsc28gYWZmZWN0cyB0aGUgbmV3IGNvbXBsZXguX19mb3JtYXRfXyBpbgorICB0aGUgc2FtZSB3YXkuCisKKy0gSW1wbGVtZW50IFBFUCAzODMsIE5vbi1kZWNvZGFibGUgQnl0ZXMgaW4gU3lzdGVtIENoYXJhY3RlciBJbnRlcmZhY2VzLgorCistIElzc3VlICM1ODkwOiBpbiBzdWJjbGFzc2VzIG9mICdwcm9wZXJ0eScgdGhlIF9fZG9jX18gYXR0cmlidXRlIHdhcworICBzaGFkb3dlZCBieSBjbGFzc3R5cGUncywgZXZlbiBpZiBpdCB3YXMgTm9uZS4gIHByb3BlcnR5IG5vdworICBpbnNlcnRzIHRoZSBfX2RvY19fIGludG8gdGhlIHN1YmNsYXNzIGluc3RhbmNlIF9fZGljdF9fLgorCistIElzc3VlICM0NDI2OiBUaGUgVVRGLTcgZGVjb2RlciB3YXMgdG9vIHN0cmljdCBhbmQgZGlkbid0IGFjY2VwdCBzb21lIGxlZ2FsCisgIHNlcXVlbmNlcy4gUGF0Y2ggYnkgTmljayBCYXJuZXMgYW5kIFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMzNjcyOiBSZWplY3Qgc3Vycm9nYXRlcyBpbiB1dGYtOCBjb2RlYzsgYWRkIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjNTg4MzogSW4gdGhlIGlvIG1vZHVsZSwgdGhlIEJ1ZmZlcmVkSU9CYXNlIGFuZCBUZXh0SU9CYXNlIEFCQ3MgaGF2ZQorICByZWNlaXZlZCBhIG5ldyBtZXRob2QsIGRldGFjaCgpLiAgZGV0YWNoKCkgZGlzY29ubmVjdHMgdGhlIHVuZGVybHlpbmcgc3RyZWFtCisgIGZyb20gdGhlIGJ1ZmZlciBvciB0ZXh0IElPIGFuZCByZXR1cm5zIGl0LgorCistIElzc3VlICM1ODU5OiBSZW1vdmUgc3dpdGNoIGZyb20gJyVmJyB0byAnJWcnLXN0eWxlIGZvcm1hdHRpbmcgZm9yCisgIGZsb2F0cyB3aXRoIGFic29sdXRlIHZhbHVlIG92ZXIgMWU1MC4gIEFsc28gcmVtb3ZlIGxlbmd0aAorICByZXN0cmljdGlvbnMgZm9yIGZsb2F0IGZvcm1hdHRpbmc6ICclLjY3ZicgJSAxMi4zNCBhbmQgJyUuMTIwZScgJQorICAxMi4zNCBubyBsb25nZXIgcmFpc2UgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNTg4OiBBZGQgY29tcGxleC5fX2Zvcm1hdF9fLiBGb3IgZXhhbXBsZSwKKyAgZm9ybWF0KGNvbXBsZXgoMSwgMi4vMyksICcuNScpIG5vdyBwcm9kdWNlcyBhIHNlbnNpYmxlIHJlc3VsdC4KKworLSBJc3N1ZSAjNTg2NDogRml4IGVtcHR5IGZvcm1hdCBjb2RlIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBzbyB0aGF0IGl0CisgIG5ldmVyIGdpdmVzIG1vcmUgdGhhbiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCisKKy0gSXNzdWUgIzU3OTM6IFJhdGlvbmFsaXplIGlzZGlnaXQgLyBpc2FscGhhIC8gdG9sb3dlciwgZXRjLiBJbmNsdWRlcworICBuZXcgUHlfSVNESUdJVCAvIFB5X0lTQUxQSEEgLyBQeV9UT0xPV0VSLCBldGMuIGluIHBjdHlwZXMuaC4KKworLSBJc3N1ZSAjNTgzNTogRGVwcmVjYXRlIFB5T1NfYXNjaWlfZm9ybWF0ZC4KKworLSBJc3N1ZSAjNDk3MTogRml4IHRpdGxlY2FzZSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSB0aGVpciBvd24KKyAgdGl0bGVjYXNlLCBidXQgbm90IHRoZWlyIG93biB1cHBlcmNhc2UuCisKKy0gSXNzdWUgIzUyODM6IFNldHRpbmcgX19jbGFzc19fIGluIF9fZGVsX18gY2F1c2VkIGEgc2VnZmF1bHQuCisKKy0gSXNzdWUgIzU4MTY6IGNvbXBsZXgocmVwcih6KSkgbm93IHJlY292ZXJzIHogZXhhY3RseSwgZXZlbiB3aGVuCisgIHogaW52b2x2ZXMgbmFucywgaW5mcyBvciBuZWdhdGl2ZSB6ZXJvcy4KKworLSBJc3N1ZSAjMzE2NjogTWFrZSBpbnQgLT4gZmxvYXQgY29udmVyc2lvbnMgY29ycmVjdGx5IHJvdW5kZWQuCisKKy0gSXNzdWUgIzE4NjkgKGFuZCBtYW55IGR1cGxpY2F0ZXMpOiBtYWtlIHJvdW5kKHgsIG4pIGNvcnJlY3RseQorICByb3VuZGVkIGZvciBhIGZsb2F0IHgsIGJ5IHVzaW5nIHRoZSBkZWNpbWFsIDwtPiBiaW5hcnkgY29udmVyc2lvbnMKKyAgZnJvbSBQeXRob24vZHRvYS5jLiAgQXMgYSBjb25zZXF1ZW5jZSwgKGUuZy4pIHJvdW5kKHgsIDIpIG5vdworICBjb25zaXN0ZW50bHkgYWdyZWVzIHdpdGggZm9ybWF0KHgsICcuMmYnKS4KKworLSBJc3N1ZSAjNTc4Nzogb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc29tZV90eXBlLCAiX19iYXNlc19fIikgc2VnZmF1bHRlZCBvbgorICBzb21lIGJ1aWx0aW4gdHlwZXMuCisKKy0gSXNzdWUgIzU3NzI6IGZvcm1hdCgxZTEwMCwgJzwnKSBwcm9kdWNlcyAnMWUrMTAwJywgbm90ICcxLjBlKzEwMCcuCisKKy0gSXNzdWUgIzU1MTU6IHN0ci5mb3JtYXQoKSB0eXBlICduJyBjb21iaW5lZCB3aXRoIGNvbW1hcyBhbmQgbGVhZGluZworICB6ZXJvcyBubyBsb25nZXIgZ2l2ZXMgb2RkIHJlc3VsdHMgd2l0aCBpbnRzIGFuZCBmbG9hdHMuCisKKy0gSW1wbGVtZW50IFBFUCAzNzgsIEZvcm1hdCBTcGVjaWZpZXIgZm9yIFRob3VzYW5kcyBTZXBhcmF0b3IsIGZvcgorICBmbG9hdHMuCisKKy0gVGhlIHN0ciBmdW5jdGlvbiBzd2l0Y2hlcyB0byBleHBvbmVudGlhbCBub3RhdGlvbiBhdAorICAxZTExLCBub3QgMWUxMi4gIFRoaXMgYXZvaWRzIHByaW50aW5nIDEzIHNpZ25pZmljYW50IGRpZ2l0cyBpbgorICBzaXR1YXRpb25zIHdoZXJlIG9ubHkgMTIgb2YgdGhlbSBhcmUgY29ycmVjdC4gIEV4YW1wbGUgcHJvYmxlbQorICB2YWx1ZTogc3RyKDFlMTEgKyAwLjUpLiAgKFRoaXMgbWlub3IgaXNzdWUgaGFzIGV4aXN0ZWQgaW4gMi54IGZvciBhCisgIGxvbmcgdGltZS4pCisKKy0gSXNzdWUgIzE1ODA6IE9uIG1vc3QgcGxhdGZvcm1zLCB1c2UgYSAnc2hvcnQnIGZsb2F0IHJlcHI6IGZvciBhCisgIGZpbml0ZSBmbG9hdCB4LCByZXByKHgpIG5vdyBvdXRwdXRzIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSBzaG9ydGVzdAorICBzZXF1ZW5jZSBvZiBkZWNpbWFsIGRpZ2l0cyB0aGF0IHJvdW5kcyB0byB4LiAgUHJldmlvdXMgYmVoYXZpb3VyIHdhcworICB0byBvdXRwdXQgMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuIHN0cmlwIHRyYWlsaW5nIHplcm9zLgorICBBbm90aGVyIG1pbm9yIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgbmV3IHJlcHIgc3dpdGNoZXMgdG8KKyAgZXhwb25lbnRpYWwgbm90YXRpb24gYXQgMWUxNiBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyAxZTE3OyB0aGlzCisgIGF2b2lkcyBtaXNsZWFkaW5nIG91dHB1dCBpbiBzb21lIGNhc2VzLgorCisgIFRoZXJlJ3MgYSBuZXcgc3lzIGF0dHJpYnV0ZSBzeXMuZmxvYXRfcmVwcl9zdHlsZSwgd2hpY2ggdGFrZXMKKyAgdGhlIHZhbHVlICdzaG9ydCcgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSB1c2luZyBzaG9ydCBmbG9hdCByZXByLAorICBhbmQgJ2xlZ2FjeScgaWYgdGhlIHNob3J0IGZsb2F0IHJlcHIgaXNuJ3QgYXZhaWxhYmxlIGZvciBvbmUKKyAgcmVhc29uIG9yIGFub3RoZXIuCisKKyAgVGhlIGZsb2F0IHJlcHIgY2hhbmdlIGludm9sdmVzIGluY29ycG9yYXRpbmcgRGF2aWQgR2F5J3MgJ3BlcmZlY3QKKyAgcm91bmRpbmcnIGNvZGUgaW50byB0aGUgUHl0aG9uIGNvcmUgKGl0J3MgaW4gUHl0aG9uL2R0b2EuYykuICBBcyBhCisgIHNlY29uZGFyeSBjb25zZXF1ZW5jZSwgYWxsIHN0cmluZy10by1mbG9hdCBhbmQgZmxvYXQtdG8tc3RyaW5nCisgIGNvbnZlcnNpb25zIChpbmNsdWRpbmcgYWxsIGZsb2F0IGZvcm1hdHRpbmcgb3BlcmF0aW9ucykgd2lsbCBiZQorICBjb3JyZWN0bHkgcm91bmRlZCBvbiB0aGVzZSBwbGF0Zm9ybXMuCisKKyAgU2VlIGlzc3VlICMxNTgwIGRpc2N1c3Npb25zIGZvciBkZXRhaWxzIG9mIHBsYXRmb3JtcyBmb3Igd2hpY2gKKyAgdGhpcyBjaGFuZ2UgZG9lcyBub3QgYXBwbHkuCisKKy0gSXNzdWUgIzU3NTk6IGZsb2F0KCkgZGlkbid0IGNhbGwgX19mbG9hdF9fIG9uIHN0ciBzdWJjbGFzc2VzLgorCistIFRoZSBzdHJpbmcubWFrZXRyYW5zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdGhlcmUgaXMgYSBuZXcgc3RhdGljIG1ldGhvZAorICBtYWtldHJhbnMoKSBvbiB0aGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjbGFzc2VzLiAgVGhpcyByZW1vdmVzIGNvbmZ1c2lvbiBhYm91dAorICB0aGUgdHlwZXMgc3RyaW5nLm1ha2V0cmFucygpIGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCwgYW5kIG1pcnJvcnMgdGhlCisgIG1ldGhvZHMgYXZhaWxhYmxlIG9uIHRoZSBzdHIgY2xhc3MuCisKKy0gSXNzdWUgIzIxNzA6IHJlZmFjdG9yZWQgeG1sLmRvbS5taW5pZG9tLm5vcm1hbGl6ZSwgaW5jcmVhc2luZyBib3RoCisgIGl0cyBjbGFyaXR5IGFuZCBpdHMgc3BlZWQuCisKKy0gSXNzdWUgIzExMTMyNDQ6IFB5X1hJTkNSRUYsIFB5X0RFQ1JFRiwgUHlfWERFQ1JFRjogQWRkIGBgZG8geyAuLi4gfSB3aGlsZSAoMClgYAorICB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KKworLSBJc3N1ZSAjMzczOTogVGhlIHVuaWNvZGUtaW50ZXJuYWwgZW5jb2RlciBub3cgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKKyAgY29uc3VtZWQgbGlrZSBhbnkgb3RoZXIgZW5jb2RlciAoaW5zdGVhZCBvZiB0aGUgbnVtYmVyIG9mIGJ5dGVzKS4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTc1NjogSW5zdGFsbCBpZGxlIGFuZCBweWRvYyB3aXRoIGEgMyBzdWZmaXguCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjODIwMzogRml4IElETEUgQ3JlZGl0cyBkaWFsb2c6IHZpZXdfZmlsZSgpIHVzZXMgaXRzIGVuY29kaW5nIGFyZ3VtZW50LgorCistIElzc3VlICM1MzExOiBiZGlzdF9tc2kgY2FuIG5vdyBidWlsZCBwYWNrYWdlcyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gYQorICBzcGVjaWZpYyBQeXRob24gdmVyc2lvbi4KKworLSBJc3N1ZSAjNTE1MDogSURMRSdzIGZvcm1hdCBtZW51IG5vdyBoYXMgYW4gb3B0aW9uIHRvIHN0cmlwIHRyYWlsaW5nCisgIHdoaXRlc3BhY2UuCisKKy0gSXNzdWUgIzU5NDA6IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2NsaWIuY2hlY2tfbGlicmFyeV9saXN0IHdhcyBub3QgZG9pbmcKKyAgdGhlIHJpZ2h0IHR5cGUgY2hlY2tpbmdzIGFueW1vcmUuCisKKy0gSXNzdWUgIzQ4NzU6IE9uIHdpbjMyLCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgZG9lcyBubyBsb25nZXIKKyAgcmV0dXJuIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM1MTQyOiBBZGQgdGhlIGFiaWxpdHkgdG8gc2tpcCBtb2R1bGVzIHdoaWxlIHN0ZXBwaW5nIHRvIHBkYi4KKworLSBJc3N1ZSAjMTMwOTU2NzogRml4IGxpbmVjYWNoZSBiZWhhdmlvciBvZiBzdHJpcHBpbmcgc3ViZGlyZWN0b3JpZXMgd2hlbgorICBsb29raW5nIGZvciBmaWxlcyBnaXZlbiBieSBhIHJlbGF0aXZlIGZpbGVuYW1lLgorCistIElzc3VlICM1OTIzOiBVcGRhdGUgdGhlIGBgdHVydGxlYGAgbW9kdWxlIHRvIHZlcnNpb24gMS4xLCBhZGQgdHdvIG5ldworICB0dXJ0bGUgZGVtb3MgaW4gRGVtby90dXJ0bGUuCisKKy0gSXNzdWUgIzU2OTI6IEluIGBgemlwZmlsZS5aaXBmaWxlYGAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KKyAgZXh0cmFjdGluZyBhIGZpbGUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgorCistIElzc3VlICM1OTEzOiBvcy5saXN0ZGlyKCkgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KKworLSBJc3N1ZSAjNTA4NDogdW5waWNrbGluZyBub3cgaW50ZXJucyB0aGUgYXR0cmlidXRlIG5hbWVzIG9mIHBpY2tsZWQgb2JqZWN0cywKKyAgc2F2aW5nIG1lbW9yeSBhbmQgYXZvaWRpbmcgZ3Jvd3RoIGluIHNpemUgb2Ygc3Vic2VxdWVudCBwaWNrbGVzLiBQcm9wb3NhbAorICBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkgSmFrZSBNY0d1aXJlLgorCistIFRoZSBqc29uIG1vZHVsZSBub3cgd29ya3MgZXhjbHVzaXZlbHkgd2l0aCBzdHIgYW5kIG5vdCBieXRlcy4KKworLSBJc3N1ZSAjMzk1OTogVGhlIGlwYWRkciBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisgIENvbnRyaWJ1dGVkIGJ5IEdvb2dsZS4KKworLSBJc3N1ZSAjMzAwMjogYGBzaHV0aWwuY29weWZpbGUoKWBgIGFuZCBgYHNodXRpbC5jb3B5dHJlZSgpYGAgbm93IHJhaXNlIGFuCisgIGVycm9yIHdoZW4gYSBuYW1lZCBwaXBlIGlzIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBibG9ja2luZyBpbmZpbml0ZWx5LgorCistIElzc3VlICM1ODU3OiB0b2tlbml6ZS50b2tlbml6ZSgpIG5vdyByZXR1cm5zIG5hbWVkIHR1cGxlcy4KKworLSBJc3N1ZSAjNDMwNTogY3R5cGVzIHNob3VsZCBub3cgYnVpbGQgYWdhaW4gb24gbWlwc2VsLWxpbnV4LWdudQorCistIElzc3VlICMxNzM0MjM0OiBNYXNzaXZlbHkgc3BlZWR1cCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAgd2hlbiB0aGUKKyAgc3RyaW5nIGlzIGFscmVhZHkgaW4gbm9ybWFsaXplZCBmb3JtLCBieSBwZXJmb3JtaW5nIGEgcXVpY2sgY2hlY2sgYmVmb3JlaGFuZC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgUmF1bGkgUnVvaG9uZW4uCisKKy0gSXNzdWUgIzU4NTM6IGNhbGxpbmcgYSBmdW5jdGlvbiBvZiB0aGUgbWltZXR5cGVzIG1vZHVsZSBmcm9tIHNldmVyYWwgdGhyZWFkcworICBhdCBvbmNlIGNvdWxkIGhpdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlmIHRoZSBtaW1ldHlwZXMgZGF0YWJhc2UgaGFkbid0IGJlZW4KKyAgaW5pdGlhbGl6ZWQgYmVmb3JlLgorCistIElzc3VlICM1ODU0OiBVcGRhdGVkIF9fYWxsX18gdG8gaW5jbHVkZSBzb21lIG1pc3NpbmcgbmFtZXMgYW5kIHJlbW92ZSBzb21lCisgIG5hbWVzIHdoaWNoIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQuCisKKy0gSXNzdWUgIzMxMDI6ICBBbGwgZ2xvYmFsIHN5bWJvbHMgdGhhdCB0aGUgX2N0eXBlcyBleHRlbnNpb24gZGVmaW5lcworICBhcmUgbm93IHByZWZpeGVkIHdpdGggJ1B5JyBvciAnX2N0eXBlcycuCisKKy0gSXNzdWUgIzUwNDE6IGN0eXBlcyBkb2VzIG5vdyBhbGxvdyBwaWNrbGluZyB3aWRlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjNTgxMjogRm9yIHRoZSB0d28tYXJndW1lbnQgZm9ybSBvZiB0aGUgRnJhY3Rpb24gY29uc3RydWN0b3IsCisgIEZyYWN0aW9uKG0sIG4pLCBtIGFuZCBuIGFyZSBwZXJtaXR0ZWQgdG8gYmUgYXJiaXRyYXJ5IFJhdGlvbmFsCisgIGluc3RhbmNlcy4KKworLSBJc3N1ZSAjNTgxMjogRnJhY3Rpb24oJzFlNicpIGlzIHZhbGlkOiBtb3JlIGdlbmVyYWxseSwgYW55IHN0cmluZworICB0aGF0J3MgdmFsaWQgZm9yIGZsb2F0KCkgaXMgbm93IHZhbGlkIGZvciBGcmFjdGlvbigpLCB3aXRoIHRoZQorICBleGNlcHRpb24gb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgTmFOcyBhbmQgaW5maW5pdGllcy4KKworLSBJc3N1ZSAjNTczNDogQnVmZmVyZWRSV1BhaXIgd2FzIHBvb3JseSB0ZXN0ZWQgYW5kIGhhZCBzZXZlcmFsIGdsYXJpbmcKKyAgYnVncy4gUGF0Y2ggYnkgQnJpYW4gUXVpbmxhbi4KKworLSBJc3N1ZSAjMTE2MTAzMTogZml4IHJlYWR3cml0ZSBzZWxlY3QgZmxhZyBoYW5kbGluZzogUE9MTFBSSSBub3cKKyAgcmVzdWx0cyBpbiBhIGhhbmRsZV9leHB0X2V2ZW50IGNhbGwsIG5vdCBoYW5kbGVfcmVhZF9ldmVudCwgYW5kIFBPTExFUlIKKyAgYW5kIFBPTExOVkFMIG5vdyBjYWxsIGhhbmRsZV9jbG9zZSwgbm90IGhhbmRsZV9leHB0X2V2ZW50LiAgQWxzbywKKyAgZGlzcGF0Y2hlciBub3cgaGFzIGFuICdpZ25vcmVfbG9nX3R5cGVzJyBhdHRyaWJ1dGUgZm9yIHN1cHByZXNzaW5nCisgIGxvZyBtZXNzYWdlcywgd2hpY2ggaXMgc2V0IHRvICd3YXJuaW5nJyBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzAzOiBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fOiBQcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvcgorICBuZXcgYXJndW1lbnRzIGludHJvZHVjZWQgaW4gMi41LgorCistIElzc3VlICM1ODI4IChJbnZhbGlkIGJlaGF2aW9yIG9mIHVuaWNvZGUubG93ZXIpOiBGaXhlZCBib2d1cyBsb2dpYyBpbgorICBtYWtldW5pY29kZWRhdGEucHkgYW5kIHJlZ2VuZXJhdGVkIHRoZSBVbmljb2RlIGRhdGFiYXNlIChUaGlzIGZpeGVzCisgIHUnXHUxZDc5Jy5sb3dlcigpID09ICdceDAwJykuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1ODgxOiBSZW1vdmUgb2xkIHVuZG9jdW1lbnRlZCBjb21wYXRpYmlsaXR5IGludGVyZmFjZXMgaW4gaGFzaGxpYiBhbmQKKyAgcHdkLgorCistIElzc3VlICM1NDYzOiBJbiBzdHJ1Y3QgbW9kdWxlLCByZW1vdmUgZGVwcmVjYXRlZCBmbG9hdCBjb2VyY2lvbgorICBmb3IgaW50ZWdlciB0eXBlIGNvZGVzOiBzdHJ1Y3QucGFjaygnTCcsIDAuMykgc2hvdWxkIG5vdyByYWlzZQorICBhbiBlcnJvci4gIFRoZSBfUFlfU1RSVUNUX0ZMT0FUX0NPRVJDRSBjb25zdGFudCBoYXMgYmVlbiByZW1vdmVkLgorICBUaGUgdmVyc2lvbiBudW1iZXIgaGFzIGJlZW4gYnVtcGVkIHRvIDAuMy4KKworLSBJc3N1ZSAjNTM1OTogUmVhZGQgdGhlIEJlcmtlbGV5IERCIGRldGVjdGlvbiBjb2RlIHRvIGFsbG93IF9kYm0gYmUgYnVpbHQKKyAgdXNpbmcgQmVya2VsZXkgREIuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM1MzU0OiBOZXcgdGVzdCBzdXBwb3J0IGZ1bmN0aW9uIGltcG9ydF9mcmVzaF9tb2R1bGUoKSBtYWtlcworICBpdCBlYXN5IHRvIGltcG9ydCBib3RoIG5vcm1hbCBhbmQgb3B0aW1pc2VkIHZlcnNpb25zIG9mIG1vZHVsZXMuCisgIHRlc3RfaGVhcHEgYW5kIHRlc3Rfd2FybmluZ3MgaGF2ZSBiZWVuIGFkanVzdGVkIHRvIHVzZSBpdCwgdGVzdHMgZm9yCisgIG90aGVyIG1vZHVsZXMgd2l0aCBib3RoIEMgYW5kIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHN0ZGxpYgorICBjYW4gYmUgYWRqdXN0ZWQgdG8gdXNlIGl0IG92ZXIgdGltZS4KKworLSBJc3N1ZSAjNTgzNzogQ2VydGFpbiBzZXF1ZW5jZXMgb2YgY2FsbHMgdG8gc2V0KCkgYW5kIHVuc2V0KCkgZm9yCisgIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCBvYmplY3RzIHJlc3RvcmVkIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgaW5jb3JyZWN0bHkgb24gX19leGl0X18uCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICM1NjMwOiBBIHJlcGxhY2VtZW50IFB5Q09iamVjdCBBUEksIFB5Q2Fwc3VsZSwgaGFzIGJlZW4gYWRkZWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS00LTQqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIEltcGxlbWVudCBQRVAgMzc4LCBGb3JtYXQgU3BlY2lmaWVyIGZvciBUaG91c2FuZHMgU2VwYXJhdG9yLCBmb3IKKyAgaW50ZWdlcnMuCisKKy0gSXNzdWUgIzU2NjY6IFB5X0J1aWxkVmFsdWUncyAnYycgY29kZSBzaG91bGQgY3JlYXRlIGJ5dGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjNTQ5OTogVGhlICdjJyBjb2RlIGZvciBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgb25seSBhY2NlcHRzIGEKKyAgYnl0ZSwgYW5kIHRoZSAnQycgY29kZSBvbmx5IGFjY2VwdHMgYSB1bmljb2RlIGNoYXJhY3Rlci4KKworLSBGaXggYSBwcm9ibGVtIGluIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbiB0aGF0IGxlYWRzIHRvICJ1bmRldGVjdGVkIGVycm9ycyIKKyAgd2hlbiBoaXR0aW5nIHRoZSByZWN1cnNpb24gbGltaXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgorCistIElzc3VlICMxNjY1MjA2OiBSZW1vdmUgdGhlIGxhc3QgZWFnZXIgaW1wb3J0IGluIF93YXJuaW5ncy5jIGFuZCBtYWtlIGl0IGxhenkuCisKKy0gRml4IGEgc2VnZmF1bHQgd2hlbiBydW5uaW5nIHRlc3RfZXhjZXB0aW9ucyB3aXRoIGNvdmVyYWdlLCBjYXVzZWQgYnkKKyAgaW5zdWZmaWNpZW50IGNoZWNrcyBpbiBhY2Nlc3NvcnMgb2YgRXhjZXB0aW9uLl9fY29udGV4dF9fLgorCistIElzc3VlICM1NjA0OiBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBtb2R1bGUgbmFtZSBwYXNzZWQgdG8KKyAgaW1wLmZpbmRfbW9kdWxlKCkgd2VyZSBjb252ZXJ0ZWQgdG8gVVRGLTggd2hpbGUgdGhlIHBhdGggaXMKKyAgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcsIGNhdXNpbmcgbm9uc2Vuc2UuCisKKy0gSXNzdWUgIzUxMjY6IHN0ci5pc3ByaW50YWJsZSgpIHJldHVybmVkIEZhbHNlIGZvciBzcGFjZSBjaGFyYWN0ZXJzLgorCistIElzc3VlICM0ODY1OiBPbiBNYWNPU1ggL0xpYnJhcnkvUHl0aG9uLzIuNy9zaXRlLXBhY2thZ2VzIGlzIGFkZGVkIHRvCisgIHRoZSBlbmQgc3lzLnBhdGgsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN5c3RlbSBpbnN0YWxsIG9mIFB5dGhvbi4KKworLSBJc3N1ZSAjNDY4ODogQWRkIGEgaGV1cmlzdGljIHNvIHRoYXQgdHVwbGVzIGFuZCBkaWN0cyBjb250YWluaW5nIG9ubHkKKyAgdW50cmFja2FibGUgb2JqZWN0cyBhcmUgbm90IHRyYWNrZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiBUaGlzIGNhbgorICByZWR1Y2UgdGhlIHNpemUgb2YgY29sbGVjdGlvbnMgYW5kIHRoZXJlZm9yZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG92ZXJoZWFkCisgIG9uIGxvbmctcnVubmluZyBwcm9ncmFtcywgZGVwZW5kaW5nIG9uIHRoZWlyIHBhcnRpY3VsYXIgdXNlIG9mIGRhdGF0eXBlcy4KKworLSBJc3N1ZSAjNTUxMjogUmV3cml0ZSBQeUxvbmcgbG9uZyBkaXZpc2lvbiBhbGdvcml0aG0gKHhfZGl2cmVtKSB0bworICBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZS4gIExvbmcgZGl2aXNpb25zIGFuZCByZW1haW5kZXIgb3BlcmF0aW9ucworICBhcmUgbm93IGJldHdlZW4gNTAlIGFuZCAxNTAlIGZhc3Rlci4KKworLSBJc3N1ZSAjNDI1ODogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgYmFzZSAyKiozMCBpbnN0ZWFkIG9mIGJhc2UKKyAgMioqMTUgZm9yIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2VycywgZm9yIHBlcmZvcm1hbmNlCisgIHJlYXNvbnMuICBCYXNlIDIqKjMwIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiA2NC1iaXQgbWFjaGluZXMuICBBZGQKKyAgLS1lbmFibGUtYmlnLWRpZ2l0cyBvcHRpb24gdG8gY29uZmlndXJlLCB3aGljaCBvdmVycmlkZXMgdGhlCisgIGRlZmF1bHQuICBBZGQgc3lzLmludF9pbmZvIHN0cnVjdHNlcSB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0CisgIHRoZSBpbnRlcm5hbCBmb3JtYXQuCisKKy0gSXNzdWUgIzQ0NzQ6IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgbm93IGNvbnZlcnRzIGNoYXJhY3RlcnMgb3V0c2lkZQorICB0aGUgQk1QIHRvIHN1cnJvZ2F0ZSBwYWlycywgb24gc3lzdGVtcyB3aXRoIHNpemVvZih3Y2hhcl90KSA9PSA0CisgIGFuZCBzaXplb2YoUHlfVU5JQ09ERSkgPT0gMi4KKworLSBJc3N1ZSAjNTIzNzogQWxsb3cgYXV0by1udW1iZXJlZCBmaWVsZHMgaW4gc3RyLmZvcm1hdCgpLiBGb3IKKyAgZXhhbXBsZTogJ3t9IHt9Jy5mb3JtYXQoMSwgMikgPT0gJzEgMicuCisKKy0gSXNzdWUgIzUzOTI6IHdoZW4gYSB2ZXJ5IGxvdyByZWN1cnNpb24gbGltaXQgd2FzIHNldCwgdGhlIGludGVycHJldGVyIHdvdWxkCisgIGFib3J0IHdpdGggYSBmYXRhbCBlcnJvciBhZnRlciB0aGUgcmVjdXJzaW9uIGxpbWl0IHdhcyBoaXQgdHdpY2UuCisKKy0gSXNzdWUgIzM4NDU6IEluIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzIGF2b2lkIGludmFsaWQgbWVtb3J5IGFjY2VzcyB3aXRoCisgIHNob3J0IGZpbGUgbmFtZXMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjYyNTogYWRkZWQgbWlzc2luZyBpdGVtcygpIGNhbGwgdG8gdGhlIGZvciBsb29wIGluCisgIG1haWxib3guTUguZ2V0X21lc3NhZ2UoKS4KKworLSBJc3N1ZSAjNTY0MDogRml4IF9tdWx0aWJ5dGVjb2RlYyBzbyB0aGF0IENKSyBjb2RlY3MgZG9uJ3QgcmVwZWF0CisgIGVycm9yIHN1YnN0aXR1dGlvbnMgZnJvbSBub24tc3RyaWN0IGNvZGVjIGVycm9yIGNhbGxiYWNrcyBpbgorICBpbmNyZW1lbnRhbGVuY29kZXIgYW5kIFN0cmVhbVdyaXRlci4KKworLSBJc3N1ZSAjNTY1NjogRml4IHRoZSBjb3ZlcmFnZSByZXBvcnRpbmcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIHdpdGgKKyAgdGhlIC1UIGFyZ3VtZW50LgorCistIElzc3VlICM1NjQ3OiBNdXRhYmxlU2V0Ll9faWFuZF9fKCkgbm8gbG9uZ2VyIG11dGF0ZXMgc2VsZiBkdXJpbmcgaXRlcmF0aW9uLgorCistIElzc3VlICM1NjI0OiBGaXggdGhlIF93aW5yZWcgbW9kdWxlIG5hbWUgc3RpbGwgdXNlZCBpbiBzZXZlcmFsIG1vZHVsZXMuCisKKy0gSXNzdWUgIzU2Mjg6IEZpeCBpby5UZXh0SU9XcmFwcGVyLnJlYWQoKSB3aXRoIGEgdW5yZWFkYWJsZSBidWZmZXIuCisKKy0gSXNzdWUgIzU2MTk6IE11bHRpcHJvY2Vzc2luZyBjaGlsZHJlbiBkaXNvYmV5IHRoZSBkZWJ1ZyBmbGFnIGFuZCBjYXVzZXMKKyAgcG9wdXBzIG9uIHdpbmRvd3MgYnVpbGRib3RzLiBQYXRjaCBhcHBsaWVkIHRvIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUuCisKKy0gSXNzdWUgIzU0MDA6IEFkZGVkIHBhdGNoIGZvciBtdWx0aXByb2Nlc3Npbmcgb24gbmV0YnNkIGNvbXBpbGF0aW9uL3N1cHBvcnQKKworLSBJc3N1ZSAjNTM4NzogRml4ZWQgbW1hcC5tb3ZlIGNyYXNoIGJ5IGludGVnZXIgb3ZlcmZsb3cuCisKKy0gSXNzdWUgIzUyNjE6IFBhdGNoIG11bHRpcHJvY2Vzc2luZydzIHNlbWFwaG9yZS5jIHRvIHN1cHBvcnQgY29udGV4dAorICBtYW5hZ2VyIHVzZTogIndpdGggbXVsdGlwcm9jZXNzaW5nLkxvY2soKSIgd29ya3Mgbm93LgorCistIElzc3VlICM1MjM2OiBDaGFuZ2UgdGltZS5zdHJwdGltZSgpIHRvIG9ubHkgdGFrZSBzdHJpbmdzLiBEaWRuJ3Qgd29yayB3aXRoCisgIGJ5dGVzIGFscmVhZHkgYnV0IHRoZSBmYWlsdXJlIHdhcyBub24tb2J2aW91cy4KKworLSBJc3N1ZSAjNTE3NzogTXVsdGlwcm9jZXNzaW5nJ3MgU29ja2V0TGlzdGVuZXIgY2xhc3Mgbm93IHVzZXMKKyAgc29ja2V0LlNPX1JFVVNFQUREUiBvbiBhbGwgY29ubmVjdGlvbnMgc28gdGhhdCB0aGUgdXNlciBubyBsb25nZXIgbmVlZHMKKyAgdG8gd2FpdCAxMjAgc2Vjb25kcyBmb3IgdGhlIHNvY2tldCB0byBleHBpcmUuCisKKy0gSXNzdWUgIzU1OTU6IEZpeCBVbmJvdW5kZWRMb2NhbEVycm9yIGluIG50cGF0aC5pc21vdW50KCkuCisKKy0gSXNzdWUgIzExNzQ2MDY6IENhbGxpbmcgcmVhZCgpIHdpdGhvdXQgYXJndW1lbnRzIG9mIGFuIHVuYm91bmRlZCBmaWxlCisgICh0eXBpY2FsbHkgL2Rldi96ZXJvIHVuZGVyIFVuaXgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlci4KKworLSBUaGUgbWF4X2J1ZmZlcl9zaXplIGFyZ3VtZW50cyBvZiBpby5CdWZmZXJlZFdyaXRlciwgaW8uQnVmZmVyZWRSV1BhaXIsIGFuZAorICBpby5CdWZmZXJlZFJhbmRvbSBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4yLgorCistIElzc3VlICM1MDY4OiBGaXhlZCB0aGUgdGFyZmlsZS5fQloyUHJveHkucmVhZCgpIG1ldGhvZCB0aGF0IHdvdWxkIGxvb3AKKyAgZm9yZXZlciBvbiBpbmNvbXBsZXRlIGlucHV0LiBUaGF0IGNhdXNlZCB0YXJmaWxlLm9wZW4oKSB0byBoYW5nIHdoZW4gdXNlZAorICB3aXRoIG1vZGUgJ3InIG9yICdyOmJ6MicgYW5kIGEgZmlsZW9iaiBhcmd1bWVudCB0aGF0IGNvbnRhaW5lZCBubyBkYXRhIG9yCisgIHBhcnRpYWwgYnppcDIgY29tcHJlc3NlZCBkYXRhLgorCistIElzc3VlICMyMTEwOiBBZGQgc3VwcG9ydCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgJ24nIHR5cGUKKyAgc3BlY2lmaWVyIHRvIERlY2ltYWwuX19mb3JtYXRfXworCistIEZpeCBEZWNpbWFsLl9fZm9ybWF0X18gYnVnIHRoYXQgc3dhcHBlZCB0aGUgbWVhbmluZ3Mgb2YgdGhlICc8JyBhbmQKKyAgJz4nIGFsaWdubWVudCBjaGFyYWN0ZXJzLgorCistIFRoZSBlcnJvciBkZXRlY3Rpb24gY29kZSBpbiBGaWxlSU8uY2xvc2UoKSBjb3VsZCBmYWlsIHRvIHJlZmxlY3QgdGhlIGBlcnJub2AKKyAgdmFsdWUsIGFuZCByZXBvcnQgaXQgYXMgLTEgaW5zdGVhZC4KKworLSBJc3N1ZSAjNTAxNjogRmlsZUlPLnNlZWthYmxlKCkgY291bGQgcmV0dXJuIEZhbHNlIGlmIHRoZSBmaWxlIHBvc2l0aW9uCisgIHdhcyBuZWdhdGl2ZSB3aGVuIHRydW5jYXRlZCB0byBhIEMgaW50LiBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzUzOTE6IG1tYXAgbm93IGRlYWxzIGV4Y2x1c2l2ZWx5IHdpdGggYnl0ZXMuCisKKy0gSXNzdWUgIzU0NjM6IEluIHN0cnVjdCBtb2R1bGUsIHJlbW92ZSBkZXByZWNhdGVkIG92ZXJmbG93IHdyYXBwaW5nCisgIHdoZW4gcGFja2luZyBhbiBpbnRlZ2VyOiBzdHJ1Y3QucGFjaygnPUwnLCAtMSkgbm93IHJhaXNlcworICBzdHJ1Y3QuZXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgYidceGZmXHhmZlx4ZmZceGZmJy4gIFRoZQorICBfUFlfU1RSVUNUX1JBTkdFX0NIRUNLSU5HIGFuZCBfUFlfU1RSVUNUX09WRVJGTE9XX01BU0tJTkcgY29uc3RhbnRzCisgIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN0cnVjdCBtb2R1bGUuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMDktMDMtMDcqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIFRoZSBpbyBtb2R1bGUgaGFzIGJlZW4gcmVpbXBsZW1lbnRlZCBpbiBDIGZvciBzcGVlZC4KKworLSBHaXZlIGRpY3Qgdmlld3MgYW4gaW5mb3JtYXRpdmUgX19yZXByX18uCisKKy0gSXNzdWUgIzUyNDc6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHVua25vd24gZm9ybWF0IGNvZGVzIGFyZQorICB1c2VkIHdoZW4gdXNpbmcgc3RyLmZvcm1hdCgpIHdpdGggc3RyLCBpbnQsIGFuZCBmbG9hdCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzUyNDk6IHRpbWUuc3RyZnRpbWUgcmV0dXJuZWQgbWFsZm9ybWVkIHN0cmluZyB3aGVuIGZvcm1hdCBzdHJpbmcKKyAgY29udGFpbmVkIG5vbiBhc2NpaSBjaGFyYWN0ZXIgb24gd2luZG93cy4KKworLSBJc3N1ZSAjNDYyNjogY29tcGlsZSgpLCBleGVjKCksIGFuZCBldmFsKCkgaWdub3JlIHRoZSBjb2RpbmcgY29va2llIGlmIHRoZQorICBzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBkZWNvZGVkIGludG8gc3RyLgorCistIElzc3VlICM1MTg2OiBSZWR1Y2UgaGFzaCBjb2xsaXNpb25zIGZvciBvYmplY3RzIHdpdGggbm8gX19oYXNoX18gbWV0aG9kIGJ5CisgIHJvdGF0aW5nIHRoZSBvYmplY3QgcG9pbnRlciBieSA0IGJpdHMgdG8gdGhlIHJpZ2h0LgorCistIElzc3VlICM0NTc1OiBGaXggUHlfSVNfSU5GSU5JVFkgbWFjcm8gdG8gd29yayBjb3JyZWN0bHkgb24geDg3IEZQVXM6CisgIGl0IG5vdyBmb3JjZXMgaXRzIGFyZ3VtZW50IHRvIGRvdWJsZSBiZWZvcmUgdGVzdGluZyBmb3IgaW5maW5pdHkuCisKKy0gSXNzdWUgIzUxMzc6IE1ha2UgbGVuKCkgY29ycmVjdGx5IHJhaXNlIGEgVHlwZUVycm9yIHdoZW4gYSBfX2xlbl9fIG1ldGhvZAorICByZXR1cm5zIGEgbm9uLW51bWJlciB0eXBlLgorCistIElzc3VlICM1MTgyOiBSZW1vdmVkIG1lbW9yeXZpZXcuX19zdHJfXy4KKworLSBJc3N1ZSAjMTcxNzogUmVtb3ZlZCBidWlsdGluIGNtcCgpIGZ1bmN0aW9uLCBkcm9wcGVkIHRwX2NvbXBhcmUKKyAgc2xvdCwgdGhlIEMgQVBJIGZ1bmN0aW9ucyBQeU9iamVjdF9Db21wYXJlIGFuZCBQeVVuaWNvZGVfQ29tcGFyZSBhbmQKKyAgdGhlIHR5cGUgZGVmaW5pdGlvbiBjbXBmdW5jLiAgVGhlIHRwX2NvbXBhcmUgc2xvdCBoYXMgYmVlbiByZW5hbWVkCisgIHRvIHRwX3Jlc2VydmVkLCBhbmQgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2FnZS4KKworLSBJc3N1ZSAjMTI0MjY1NzogdGhlIF9fbGVuX18oKSBhbmQgX19sZW5ndGhfaGludF9fKCkgY2FsbHMgaW4gc2V2ZXJhbCB0b29scworICB3ZXJlIHN1cHByZXNzaW5nIGFsbCBleGNlcHRpb25zLiAgVGhlc2UgaW5jbHVkZSBsaXN0KCkgYW5kIGJ5dGVhcnJheSgpLgorCistIElzc3VlICM0NzA3OiByb3VuZCh4LCBuKSBub3cgcmV0dXJucyBhbiBpbnRlZ2VyIGlmIHggaXMgYW4gaW50ZWdlci4KKyAgUHJldmlvdXNseSBpdCByZXR1cm5lZCBhIGZsb2F0LgorCistIElzc3VlICM0NzUzOiBCeSBlbmFibGluZyBhIGNvbmZpZ3VyZSBvcHRpb24gbmFtZWQgJy0td2l0aC1jb21wdXRlZC1nb3RvcycKKyAgb24gY29tcGlsZXJzIHRoYXQgc3VwcG9ydCBpdCAobm90YWJseTogZ2NjLCBTdW5Qcm8sIGljYyksIHRoZSBieXRlY29kZQorICBldmFsdWF0aW9uIGxvb3AgaXMgY29tcGlsZWQgd2l0aCBhIG5ldyBkaXNwYXRjaCBtZWNoYW5pc20gd2hpY2ggZ2l2ZXMKKyAgc3BlZWR1cHMgb2YgdXAgdG8gMjAlLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb24gdmFyaW91cyBiZW5jaG1hcmtzLgorCistIElzc3VlICM0ODc0OiBNb3N0IGJ1aWx0aW4gZGVjb2RlcnMgbm93IHJlamVjdCB1bmljb2RlIGlucHV0LgorCistIElzc3VlICM0ODQyOiBEb24ndCBhbGxvdyB0cmFpbGluZyAnTCcgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gaW50ZWdlcgorICBmcm9tIGEgc3RyaW5nLgorCistIElzc3VlICM0OTkxOiBvcy5mZG9wZW4gbm93IHJhaXNlcyBhbiBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisKKy0gSXNzdWUgIzQ4Mzg6IFdoZW4gYSBtb2R1bGUgaXMgZGVhbGxvY2F0ZWQsIGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZQorICBvcHRpb25hbCBtb2R1bGUgc3RhdGUgZGF0YS4KKworLSBJc3N1ZSAjNDkxMDogUmVuYW1lIG5iX2xvbmcgc2xvdCB0byBuYl9yZXNlcnZlZCwgYW5kIGNoYW5nZSBpdHMKKyAgdHlwZSB0byBgYCh2b2lkICopYGAuCisKKy0gSXNzdWUgIzQ5MzU6IFRoZSBvdmVyZmxvdyBjaGVja2luZyBjb2RlIGluIHRoZSBleHBhbmR0YWJzKCkgbWV0aG9kIGNvbW1vbgorICB0byBzdHIsIGJ5dGVzIGFuZCBieXRlYXJyYXkgY291bGQgYmUgb3B0aW1pemVkIGF3YXkgYnkgdGhlIGNvbXBpbGVyLCBsZXR0aW5nCisgIHRoZSBpbnRlcnByZXRlciBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzM3MjA6IEZpeCBhIGNyYXNoIHdoZW4gYW4gaXRlcmF0b3IgbW9kaWZpZXMgaXRzIGNsYXNzIGFuZCByZW1vdmVzIGl0cworICBfX25leHRfXyBtZXRob2QuCisKKy0gSXNzdWUgIzQ5MTA6IEJ1aWx0aW4gaW50KCkgZnVuY3Rpb24gYW5kIFB5TnVtYmVyX0xvbmcvUHlOdW1iZXJfSW50IEFQSQorICBmdW5jdGlvbiBubyBsb25nZXIgYXR0ZW1wdCB0byBjYWxsIHRoZSBfX2xvbmdfXyBzbG90IHRvIGNvbnZlcnQgYW4gb2JqZWN0CisgIHRvIGFuIGludGVnZXIuICBPbmx5IHRoZSBfX2ludF9fIGFuZCBfX3RydW5jX18gc2xvdHMgYXJlIGV4YW1pbmVkLgorCistIElzc3VlICM0ODkzOiBVc2UgTlQgdGhyZWFkaW5nIG9uIENFLgorCistIElzc3VlICM0OTE1OiBQb3J0IHN5c21vZHVsZSB0byBXaW5kb3dzIENFLgorCistIElzc3VlICM0ODY4OiB1dGYtOCwgdXRmLTE2IGFuZCBsYXRpbjEgZGVjb2RpbmcgYXJlIG5vdyAyeCB0byA0eCBmYXN0ZXIuIFRoZQorICBjb21tb24gY2FzZXMgYXJlIG9wdGltaXplZCB0aGFua3MgdG8gYSBkZWRpY2F0ZWQgZmFzdCBwYXRoIGFuZCBhIG1vZGVyYXRlCisgIGFtb3VudCBvZiBsb29wIHVucm9sbGluZy4KKworLSBJc3N1ZSAjNDA3NDogQ2hhbmdlIHRoZSBjcml0ZXJpYSBmb3IgZG9pbmcgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiAoaS5lLgorICBjb2xsZWN0aW5nIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbikgc28gdGhhdCBhbGxvY2F0aW5nIGxvdHMgb2Ygb2JqZWN0cyB3aXRob3V0CisgIGRlc3Ryb3lpbmcgdGhlbSBkb2VzIG5vdCBzaG93IHF1YWRyYXRpYyBwZXJmb3JtYW5jZS4gQmFzZWQgb24gYSBwcm9wb3NhbCBieQorICBNYXJ0aW4gdm9uIEzDtndpcyBhdAorICBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDgtSnVuZS8wODA1NzkuaHRtbC4KKworLSBJc3N1ZSAjNDYwNDogU29tZSBvYmplY3RzIG9mIHRoZSBJL08gbGlicmFyeSBjb3VsZCBzdGlsbCBiZSB1c2VkIGFmdGVyCisgIGhhdmluZyBiZWVuIGNsb3NlZCAoZm9yIGluc3RhbmNlLCBhIHJlYWQoKSBjYWxsIGNvdWxkIHJldHVybiBzb21lCisgIHByZXZpb3VzbHkgYnVmZmVyZWQgZGF0YSkuIFBhdGNoIGJ5IERtaXRyeSBWYXNpbGlldi4KKworLSBJc3N1ZSAjNDcwNTogRml4IHRoZSAtdSAoInVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyIikgY29tbWFuZC1saW5lCisgIGZsYWcgdG8gd29yayBwcm9wZXJseS4gRnVydGhlcm1vcmUsIHdoZW4gc3BlY2lmeWluZyAtdSwgdGhlIHRleHQgc3Rkb3V0CisgIGFuZCBzdGRlcnIgc3RyZWFtcyBoYXZlIGxpbmUtYnktbGluZSBidWZmZXJpbmcgZW5hYmxlZCAodGhlIGRlZmF1bHQgYmVpbmcKKyAgdG8gYnVmZmVyIGFyYml0cmFyeSBjaHVua3Mgb2YgZGF0YSkuCisKKy0gVGhlIGludGVybmFsIHRhYmxlLCBfUHlMb25nX0RpZ2l0VmFsdWUsIGlzIG5vdyBhbiBhcnJheSBvZiB1bnNpZ25lZCBjaGFycworICBpbnN0ZWFkIG9mIGludHMgKHJlZHVjaW5nIGl0cyBzaXplIGZyb20gNCB0byA4IHRpbWVzIHRoZXJlYnkgcmVkdWNpbmcKKyAgUHl0aG9uJ3Mgb3ZlcmFsbCBtZW1vcnkpLgorCistIElzc3VlICMxMTgwMTkzOiBXaGVuIGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgLnB5YyAob3IgLnB5bykgZmlsZSB3aXRoCisgIGFuIGV4aXN0aW5nIC5weSBjb3VudGVycGFydCwgb3ZlcnJpZGUgdGhlIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZXMgb2YgYWxsCisgIGNvZGUgb2JqZWN0cyBpZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaXMgb2Jzb2xldGUgKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlCisgIGZpbGUgaGFzIGJlZW4gcmVuYW1lZCwgbW92ZWQsIG9yIGlmIGl0IGlzIGFjY2Vzc2VkIHRocm91Z2ggZGlmZmVyZW50IHBhdGhzKS4KKyAgUGF0Y2ggYnkgWmlnYSBTZWlsbmFjaHQgYW5kIEplYW4tUGF1bCBDYWxkZXJvbmUuCisKKy0gSXNzdWUgIzQ1ODA6IEZpeCBzbGljaW5nIG9mIG1lbW9yeXZpZXdzIHdoZW4gdGhlIGl0ZW0gc2l6ZSBpcyBncmVhdGVyIHRoYW4KKyAgb25lIGJ5dGUuIEFsc28gZml4ZXMgdGhlIG1lYW5pbmcgb2YgbGVuKCkgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAgaXRlbXMsIHJhdGhlciB0aGFuIHRoZSBzaXplIGluIGJ5dGVzLgorCistIElzc3VlICM0MDc1OiBVc2UgT3V0cHV0RGVidWdTdHJpbmdXIGluIFB5X0ZhdGFsRXJyb3IuCisKKy0gSXNzdWUgIzQ3NDc6IFdoZW4gdGhlIHRlcm1pbmFsIGRvZXMgbm90IHVzZSB1dGYtOCwgZXhlY3V0aW5nIGEgc2NyaXB0IHdpdGgKKyAgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUgY291bGQgZmFpbCB3aXRoIGEgIlN5bnRheEVycm9yOiBOb25lIiBlcnJvci4KKworLSBJc3N1ZSAjNDc5NzogSU9FcnJvci5maWxlbmFtZSB3YXMgbm90IHNldCB3aGVuIGBgX2ZpbGVpby5GaWxlSU9gYCBmYWlsZWQKKyAgdG8gb3BlbiBmaWxlIHdpdGggYSBieXRlcyBmaWxlbmFtZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMzNjgwOiBSZWZlcmVuY2UgY3ljbGVzIGNyZWF0ZWQgdGhyb3VnaCBhIGRpY3QsIHNldCBvciBkZXF1ZSBpdGVyYXRvcgorICBkaWQgbm90IGdldCBjb2xsZWN0ZWQuCisKKy0gSXNzdWUgIzQ3MDE6IFB5T2JqZWN0X0hhc2ggbm93IGltcGxpY2l0bHkgY2FsbHMgUHlUeXBlX1JlYWR5IG9uIHR5cGVzCisgIHdoZXJlIHRoZSB0cF9oYXNoIGFuZCB0cF9kaWN0IHNsb3RzIGFyZSBib3RoIE5VTEwuCisKKy0gSXNzdWUgIzQ3NTk6IE5vbmUgaXMgbm93IGFsbG93ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mCisgIGJ5dGVhcnJheS50cmFuc2xhdGUoKS4gIEl0IHdhcyBhbHdheXMgYWxsb3dlZCBmb3IgYnl0ZXMudHJhbnNsYXRlKCkuCisKKy0gQWRkZWQgdGVzdCBjYXNlIHRvIGVuc3VyZSBhdHRlbXB0cyB0byByZWFkIGZyb20gYSBmaWxlIG9wZW5lZCBmb3Igd3JpdGluZworICBmYWlsLgorCistIElzc3VlICMzMTA2OiBTcGVlZHVwIHNvbWUgY29tcGFyaXNvbnMgKHN0ci9zdHIgYW5kIGludC9pbnQpLgorCistIElzc3VlICMyMTgzOiBTaW1wbGlmeSBhbmQgb3B0aW1pemUgYnl0ZWNvZGUgZm9yIGxpc3QsIGRpY3QgYW5kIHNldAorICBjb21wcmVoZW5zaW9ucy4gT3JpZ2luYWwgcGF0Y2ggZm9yIGxpc3QgY29tcHJlaGVuc2lvbnMgYnkgTmVhbCBOb3J3aXR6LgorCistIElzc3VlICMyNDY3OiBnYy5ERUJVR19TVEFUUyByZXBvcnRlZCBpbnZhbGlkIGVsYXBzZWQgdGltZXMuIEFsc28sIGFsd2F5cworICBwcmludCBlbGFwc2VkIHRpbWVzLCBub3Qgb25seSB3aGVuIHNvbWUgb2JqZWN0cyBhcmUgdW5jb2xsZWN0YWJsZSAvCisgIHVucmVhY2hhYmxlLiBPcmlnaW5hbCBwYXRjaCBieSBOZWlsIFNjaGVtZW5hdWVyLgorCistIElzc3VlICMzNDM5OiBBZGQgYSBiaXRfbGVuZ3RoIG1ldGhvZCB0byBpbnQuCisKKy0gSXNzdWUgIzIxNzM6IFdoZW4gZ2V0dGluZyBkZXZpY2UgZW5jb2RpbmcsIGNoZWNrIHRoYXQgcmV0dXJuIHZhbHVlIG9mCisgIG5sX2xhbmdpbmZvIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLiAgVGhpcyB3YXMgY2F1c2luZyBzaWxlbnQgYnVpbGQKKyAgZmFpbHVyZXMgb24gT1MgWC4KKworLSBJc3N1ZSAjNDU5NzogRml4ZWQgc2V2ZXJhbCBvcGNvZGVzIHRoYXQgd2VyZW4ndCBhbHdheXMgcHJvcGFnYXRpbmcKKyAgZXhjZXB0aW9ucy4KKworLSBJc3N1ZSAjNDU4OTogRml4ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gdGhlIF9fZXhpdF9fIGZ1bmN0aW9uIG9mIGEKKyAgY29udGV4dCBtYW5hZ2VyIHJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBib29sLgorCistIElzc3VlICM0NDQ1OiBSZXBsYWNlICJzaXplb2YoUHlCeXRlc09iamVjdCkiIHdpdGgKKyAgIm9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSIgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IKKyAgYnl0ZXMgaW5zdGFuY2VzLiAgT24gYSB0eXBpY2FsIG1hY2hpbmUgdGhpcyBzYXZlcyAzIGJ5dGVzIG9mIG1lbW9yeQorICAob24gYXZlcmFnZSkgcGVyIGFsbG9jYXRpb24gb2YgYSBieXRlcyBpbnN0YW5jZS4KKworLSBJc3N1ZSAjNDUzMzogRmlsZSByZWFkIG9wZXJhdGlvbiB3YXMgZHJlYWRmdWxseSBzbG93IGR1ZSB0byBhIHNsb3dseQorICBncm93aW5nIHJlYWQgYnVmZmVyLiBGaXhlZCBieSB1c2luZyB0aGUgc2FtZSBncm93dGggcmF0ZSBhbGdvcml0aG0gYXMKKyAgUHl0aG9uIDIueC4KKworLSBJc3N1ZSAjNDUwOTogVmFyaW91cyBpc3N1ZXMgc3Vycm91bmRpbmcgcmVzaXplIG9mIGJ5dGVhcnJheSBvYmplY3RzIHRvCisgIHdoaWNoIHRoZXJlIGFyZSBidWZmZXIgZXhwb3J0cyAoZS5nLiBtZW1vcnl2aWV3IGluc3RhbmNlcykuCisKKy0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAKKyAgbWV0aG9kIG9uIGZpbGUgb2JqZWN0cyB3aXRoIGNsb3NlZmQ9RmFsc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgc3RpbGwKKyAga2VwdCBvcGVuIGJ1dCB0aGUgZmlsZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgCisgIG9iamVjdCBhbHNvIGdvdCBhIG5ldyByZWFkb25seSBhdHRyaWJ1dGUgYGBjbG9zZWZkYGAuCisKKy0gSXNzdWUgIzQ1Njk6IEludGVycHJldGVyIGNyYXNoIHdoZW4gbXV0YXRpbmcgYSBtZW1vcnl2aWV3IHdpdGggYW4gaXRlbSBzaXplCisgIGxhcmdlciB0aGFuIDEuCisKKy0gSXNzdWUgIzQ3NDg6IExhbWJkYSBnZW5lcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYSB2YWx1ZS4KKworLSBUaGUgcmUuc3ViKCksIHJlLnN1Ym4oKSBhbmQgcmUuc3BsaXQoKSBmdW5jdGlvbnMgbm93IGFjY2VwdCBhIGZsYWdzIHBhcmFtZXRlci4KKworLSBJc3N1ZSAjNTEwODogSGFuZGxlICVzIGxpa2UgJVMsICVSIGFuZCAlQSBpbiBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKTogQ2FsbAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpIG9uY2UsIHJlbWVtYmVyIHRoZSByZXN1bHQgYW5kIG91dHB1dCBpdCBpbiBhIHNlY29uZAorICBzdGVwLiBUaGlzIGF2b2lkcyBwcm9ibGVtcyB3aXRoIGNvdW50aW5nIFVURi04IGJ5dGVzIHRoYXQgaWdub3JlcyB0aGUgZWZmZWN0CisgIG9mIHVzaW5nIHRoZSByZXBsYWNlIGVycm9yIGhhbmRsZXIgaW4gUHlVbmljb2RlX0RlY29kZVVURjgoKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM3MDcxOiBieXRlLWNvbXBpbGF0aW9uIGluIERpc3R1dGlscyBpcyBub3cgZG9uZSB3aXRoIHJlc3BlY3QgdG8KKyAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUuCisKKy0gSXNzdWUgIzcwNjY6IGFyY2hpdmVfdXRpbC5tYWtlX2FyY2hpdmUgbm93IHJlc3RvcmVzIHRoZSBjd2QgaWYgYW4gZXJyb3IgaXMKKyAgcmFpc2VkLiBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjNjUxNjogQWRkZWQgb3duZXIvZ3JvdXAgc3VwcG9ydCB3aGVuIGNyZWF0aW5nIHRhciBhcmNoaXZlcyBpbgorICBEaXN0dXRpbHMuCisKKy0gSXNzdWUgIzY5NTQ6IEZpeGVkIGNyYXNoIHdoZW4gdXNpbmcgRElTVFVUSUxTX0RFQlVHIGZsYWcgaW4gRGlzdHV0aWxzLgorCistIElzc3VlICM2MTYzOiBGaXhlZCBIUC1VWCBydW50aW1lIGxpYnJhcnkgZGlyIG9wdGlvbnMgaW4KKyAgZGlzdHV0aWxzLnVuaXhjb21waWxlci4gSW5pdGlhbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIgYW5kCisgIE1pY2hhZWwgSGF1YmVud2FsbG5lci4KKworLSBJc3N1ZSAjNjY5MzogTmV3IGZ1bmN0aW9ucyBpbiBzaXRlLnB5IHRvIGdldCB1c2VyL2dsb2JhbCBzaXRlIHBhY2thZ2VzIHBhdGhzLgorCistIElzc3VlICM2NTExOiBaaXBGaWxlIG5vdyByYWlzZXMgQmFkWmlwZmlsZSAoaW5zdGVhZCBvZiBhbiBJT0Vycm9yKSB3aGVuCisgIG9wZW5pbmcgYW4gZW1wdHkgb3IgdmVyeSBzbWFsbCBmaWxlLgorCistIElzc3VlICM2NTQ1OiBSZW1vdmVkIGFzc2VydCBzdGF0ZW1lbnRzIGluIGRpc3R1dGlscy5FeHRlbnNpb24sIHNvIHRoZQorICBiZWhhdmlvciBpcyBzaW1pbGFyIHdoZW4gdXNlZCB3aXRoIC1PLgorCistIHVuaXR0ZXN0IGhhcyBiZWVuIHNwbGl0IHVwIGludG8gYSBwYWNrYWdlLiAgQWxsIG9sZCBuYW1lcyBzaG91bGQgc3RpbGwgd29yay4KKworLSBJc3N1ZSAjNjQ2Njogbm93IGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgYW5kIGRpc3R1dGlscy5lbXhjY29tcGlsZXIKKyAgdXNlcyB0aGUgc2FtZSByZWZhY3RvcmVkIGZ1bmN0aW9uIHRvIGdldCBnY2MvbGQvZGxsd3JhcCB2ZXJzaW9ucyBudW1iZXJzLgorICBJdCdzIGBkaXN0dXRpbHMudXRpbC5nZXRfY29tcGlsZXJfdmVyc2lvbnNgLiBBZGRlZCBkZXByZWNhdGlvbiB3YXJuaW5ncworICBmb3IgdGhlIG9ic29sZXRlIGdldF92ZXJzaW9ucygpIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjNjQzMzogZml4ZWQgaXNzdWVzIHdpdGggbXVsdGlwcm9jZXNzaW5nLnBvb2wubWFwIGhhbmdpbmcgb24gZW1wdHkgbGlzdAorCistIElzc3VlICM2MzE0OiBsb2dnaW5nOiBFeHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQgaW4gbW9yZSBwbGFjZXMuCisKKy0gSXNzdWUgIzI2MjI6IEZpeGVkIGFuIEltcG9ydEVycm9yIHdoZW4gaW1wb3J0aW5nIGVtYWlsLm1lc3NhZ2UgZnJvbSBhCisgIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gYnVpbHQgd2l0aCBweTJleGUgb3IgcHkyYXBwLgorCistIElzc3VlICM2NDU1OiBGaXhlZCB0ZXN0X2J1aWxkX2V4dCB1bmRlciB3aW4zMi4KKworLSBJc3N1ZSAjNjM3NzogRW5hYmxlZCB0aGUgY29tcGlsZXIgb3B0aW9uLCBhbmQgZGVwcmVjYXRlIGl0cyB1c2FnZSBhcyBhbgorICBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzY0MTM6IEZpeGVkIHRoZSBsb2cgbGV2ZWwgaW4gZGlzdHV0aWxzLmRpc3QgZm9yIGFubm91bmNlLgorCistIElzc3VlICM2NDAzOiBGaXhlZCBwYWNrYWdlIHBhdGggdXNhZ2UgaW4gYnVpbGRfZXh0LgorCistIElzc3VlcyAjNTE1NSwgNTMxMywgNTMzMTogbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX2Jvb3RzdHJhcCB3YXMKKyAgdW5jb25kaXRpb25hbGx5IGNhbGxpbmcgIm9zLmNsb3NlKHN5cy5zdGRpbi5maWxlbm8oKSkiIHJlc3VsdGluZyBpbiBmaWxlCisgIGRlc2NyaXB0b3IgZXJyb3JzCisKKy0gSXNzdWUgIzYzNjU6IERpc3R1dGlscyBidWlsZF9leHQgaW5wbGFjZSBtb2RlIHdhcyBjb3B5aW5nIHRoZSBjb21waWxlZAorICBleHRlbnNpb24gaW4gYSBzdWJkaXJlY3RvcnkgaWYgdGhlIGV4dGVuc2lvbiBuYW1lIGhhZCBkb3RzLgorCistIElzc3VlICM2MTY0OiBBZGRlZCBhbiBBSVggc3BlY2lmaWMgbGlua2VyIGFyZ3VtZW50IGluIERpc3R1dGlscworICB1bml4Y29tcGlsZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjI4NjogTm93IERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBpcyBiYXNlZCBvbiB1cmxsaWIyIGluc3RlYWQgb2YKKyAgaHR0cGxpYiwgYWxsb3dpbmcgdGhlIHVzYWdlIG9mIGh0dHBfcHJveHkuCisKKy0gSXNzdWUgIzYyODc6IEFkZGVkIHRoZSBsaWNlbnNlIGZpZWxkIGluIERpc3R1dGlscyBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2MjYzOiBGaXhlZCBzeW50YXggZXJyb3IgaW4gZGlzdHV0aWxzLmN5Z3dpbmNvbXBpbGVyLgorCistIElzc3VlICM1MjAxOiBkaXN0dXRpbHMuc3lzY29uZmlnLnBhcnNlX21ha2VmaWxlKCkgbm93IHVuZGVyc3RhbmRzIGAkJGAKKyAgaW4gTWFrZWZpbGVzLiBUaGlzIHByZXZlbnRzIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgc3ludGF4IGxpa2U6CisgIGBMREZMQUdTPSctcnBhdGg9XCQkTElCOi9zb21lL290aGVyL3BhdGgnYC4gUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCisKKy0gSXNzdWUgIzYxMzE6IHRlc3RfbW9kdWxlZmluZGVyIGxlYWtlZCB3aGVuIHJ1biBhZnRlciB0ZXN0X2Rpc3R1dGlscy4KKyAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzYwNDg6IE5vdyBEaXN0dXRpbHMgdXNlcyB0aGUgdGFyZmlsZSBtb2R1bGUgaW4gYXJjaGl2ZV91dGlsLgorCistIElzc3VlICM2MDYyOiBJbiBkaXN0dXRpbHMsIGZpeGVkIHRoZSBwYWNrYWdlIG9wdGlvbiBvZiBidWlsZF9leHQuIEZlZWRiYWNrCisgIGFuZCB0ZXN0cyBvbiBweXdpbjMyIGJ5IFRpbSBHb2xkZW4uCisKKy0gSXNzdWUgIzYwNTM6IEZpeGVkIGRpc3R1dGlscyB0ZXN0cyBvbiB3aW4zMi4gcGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzYwNDY6IEZpeGVkIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiB3aGVuIGRpc3R1dGlscyBidWlsZF9leHQgaXMgdXNlZAorICBpbnBsYWNlLiBJbml0aWFsIHBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YuCisKKy0gSXNzdWUgIzYwNDE6IE5vdyBkaXN0dXRpbHMgYHNkaXN0YCBhbmQgYHJlZ2lzdGVyYCBjb21tYW5kcyB1c2UgYGNoZWNrYCBhcyBhCisgIHN1YmNvbW1hbmQuCisKKy0gSXNzdWUgIzYwMjI6IGEgdGVzdCBmaWxlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGJ5CisgIHRlc3RfZ2V0X291dHB1dHMgaW4gRGlzdHV0aWxzLgorCistIElzc3VlICM1OTc3OiBkaXN0dXRpbHMgYnVpbGRfZXh0LmdldF9vdXRwdXRzIHdhcyBub3QgdGFraW5nIGludG8gYWNjb3VudCB0aGUKKyAgaW5wbGFjZSBvcHRpb24uIEluaXRpYWwgcGF0Y2ggYnkga3hyb2JlcnRvLgorCistIElzc3VlICM1OTg0OiBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQuY2hlY2tfZXh0ZW5zaW9uc19saXN0IGNoZWNrcyB3ZXJlIGJyb2tlbgorICBmb3Igb2xkLXN0eWxlIGV4dGVuc2lvbnMuCisKKy0gSXNzdWUgIzU5NzY6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2NoZWNrX2Vudmlyb24uCisKKy0gSXNzdWUgIzU5NDE6IERpc3R1dGlscyBidWlsZF9jbGliIGNvbW1hbmQgd2FzIG5vdCB3b3JraW5nIGFueW1vcmUgYmVjYXVzZQorICBvZiBhbiBpbmNvbXBsZXRlIGNvc3R1bWl6YXRpb24gb2YgdGhlIGFyY2hpdmVyIGNvbW1hbmQuIEFkZGVkIEFSRkxBR1MgaW4gdGhlCisgIE1ha2VmaWxlIGJlc2lkZXMgQVIgYW5kIG1ha2UgRGlzdHV0aWxzIHVzZSBpdC4gT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQKKyAgQ291cm5hcGVhdS4KKworLSBJc3N1ZSAjMjI0NTogYWlmYyBub3cgc2tpcHMgY2h1bmsgdHlwZXMgaXQgZG9lc24ndCByZWNvZ25pemUsIHBlciBzcGVjLgorCistIElzc3VlICM1ODc0OiBkaXN0dXRpbHMudGVzdHMudGVzdF9jb25maWdfY21kIGlzIG5vdCBsb2NhbGUtc2Vuc2l0aXZlCisgIGFueW1vcmUuCisKKy0gSXNzdWUgIzU4MTA6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2J1aWxkX3NjcmlwdHMgc28gaXQgdXNlcworICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzLgorCistIElzc3VlICM0OTUxOiBGaXhlZCBmYWlsdXJlIGluIHRlc3RfaHR0cHNlcnZlcnMuCisKKy0gSXNzdWUgIzU3OTU6IEZpeGVkIHRlc3RfZGlzdHV0aWxzIGZhaWx1cmUgb24gRGViaWFuIHBwYy4KKworLSBJc3N1ZSAjNTYwNzogZml4ZWQgRGlzdHV0aWxzIHRlc3RfZ2V0X3BsYXRmb3JtIGZvciBNYWMgT1MgWCBmYXQgYmluYXJpZXMuCisKKy0gSXNzdWUgIzU3NDE6IGRvbid0IGRpc2FsbG93ICIlJSIgKHdoaWNoIGlzIGFuIGVzY2FwZSBmb3IgIiUiKSB3aGVuIHNldHRpbmcKKyAgYSB2YWx1ZSBpbiBTYWZlQ29uZmlnUGFyc2VyLgorCistIElzc3VlICM1NzMyOiBhZGRlZCBhIG5ldyBjb21tYW5kIGluIERpc3R1dGlsczogY2hlY2suCisKKy0gSXNzdWUgIzU3MzE6IERpc3R1dGlscyBiZGlzdF93aW5pbnN0IG5vIGxvbmdlciB3b3JrZWQgb24gbm9uLVdpbmRvd3MKKyAgcGxhdGZvcm1zLiBJbml0aWFsIHBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzUwOTU6IEFkZGVkIGJkaXN0X21zaSB0byB0aGUgbGlzdCBvZiBiZGlzdCBzdXBwb3J0ZWQgZm9ybWF0cy4KKyAgSW5pdGlhbCBmaXggYnkgU3RldmVuIEJldGhhcmQuCisKKy0gSXNzdWUgIzE0OTE0MzE6IEZpeGVkIGRpc3R1dGlscy5maWxlbGlzdC5nbG9iX3RvX3JlIGZvciBlZGdlIGNhc2VzLgorICBJbml0aWFsIGZpeCBieSBXYXluZSBEYXZpc29uLgorCistIElzc3VlICM1Njk0OiByZW1vdmVkIHNwdXJpb3VzIHRlc3Qgb3V0cHV0IGluIERpc3R1dGlscyAodGVzdF9jbGVhbikuCisKKy0gSXNzdWUgIzEzMjYwNzc6IGZpeCB0aGUgZm9ybWF0dGluZyBvZiBTeW50YXhFcnJvcnMgYnkgdGhlIHRyYWNlYmFjayBtb2R1bGUuCisKKy0gSXNzdWUgIzE2NjUyMDYgKHBhcnRpYWxseSk6IE1vdmUgaW1wb3J0cyBpbiBjZ2l0YiB0byB0aGUgdG9wIG9mIHRoZSBtb2R1bGUKKyAgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIHRoZW0gaW4gZnVuY3Rpb25zLiBIZWxwcyBwcmV2ZW50IGltcG9ydCBkZWFkbG9ja2luZyBpbgorICB0aHJlYWRzLgorCistIElzc3VlICMyNTIyOiBsb2NhbGUuZm9ybWF0IG5vdyBjaGVja3MgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGVuc3VyZSBpdCBoYXMKKyAgYmVlbiBwYXNzZWQgb25seSBvbmUgcGF0dGVybiwgYXZvaWRpbmcgbXlzdGVyaW91cyBlcnJvcnMgd2hlcmUgaXQgYXBwZWFyZWQKKyAgdGhhdCBpdCB3YXMgZmFpbGluZyB0byBkbyBsb2NhbGl6YXRpb24uCisKKy0gSXNzdWUgIzU1ODM6IEFkZGVkIG9wdGlvbmFsIEV4dGVuc2lvbnMgaW4gRGlzdHV0aWxzLiBJbml0aWFsIHBhdGNoIGJ5IEdlb3JnCisgIEJyYW5kbC4KKworLSBJc3N1ZSAjMTIyMjogbG9jYWxlLmZvcm1hdCgpIGJ1ZyB3aGVuIHRoZSB0aG91c2FuZHMgc2VwYXJhdG9yIGlzIGEgc3BhY2UKKyAgY2hhcmFjdGVyLgorCistIElzc3VlICM1NDcyOiBGaXhlZCBkaXN0dXRpbHMudGVzdF91dGlsIHRlYXIgZG93bi4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgVGltIEdvbGRlbi4KKworLSBjb2xsZWN0aW9ucy5kZXF1ZSgpIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgYXR0cmlidXRlIGNhbGxlZCBtYXhsZW4uCisKKy0gSXNzdWUgIzI2Mzg6IFNob3cgYSB3aW5kb3cgY29uc3RydWN0ZWQgd2l0aCB0a1NpbXBsZURpYWxvZy5EaWFsb2cgb25seSBhZnRlcgorICBpdCBpcyBoYXMgYmVlbiBwb3B1bGF0ZWQgYW5kIHByb3Blcmx5IGNvbmZpZ3VyZWQgaW4gb3JkZXIgdG8gcHJldmVudAorICB3aW5kb3cgZmxhc2hpbmcuCisKKy0gSXNzdWUgIzQ3OTI6IFByZXZlbnQgYSBzZWdmYXVsdCBpbiBfdGtpbnRlciBieSB1c2luZyB0aGUKKyAgZ3VhcmFudGVlZCB0byBiZSBzYWZlIGludGVycCBhcmd1bWVudCBnaXZlbiB0byB0aGUgUHl0aG9uQ21kIGluIHBsYWNlIG9mCisgIHRoZSBUY2wgaW50ZXJwcmV0ZXIgdGFrZW4gZnJvbSBhIFB5dGhvbkNtZF9DbGllbnREYXRhLgorCistIElzc3VlICM1MTkzOiBHdWFyYW50ZWUgdGhhdCB0a2ludGVyLlRleHQuc2VhcmNoIHJldHVybnMgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzUzOTQ6IHJlbW92ZWQgPiAyLjMgc3ludGF4IGZyb20gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFraXJhIEtpdGFkYS4KKworLSBJc3N1ZSAjNTMzNDogYXJyYXkuZnJvbWZpbGUoKSBmYWlsZWQgdG8gaW5zZXJ0IHZhbHVlcyB3aGVuIEVPRkVycm9yIHdhcyByYWlzZWQuCisKKy0gSXNzdWUgIzUzODU6IEZpeGVkIG1tYXAgY3Jhc2ggYWZ0ZXIgcmVzaXplIGZhaWx1cmUgb24gd2luZG93cy4KKworLSBJc3N1ZSAjNTE3OTogRml4ZWQgc3VicHJvY2VzcyBoYW5kbGUgbGVhayBvbiBmYWlsdXJlIG9uIHdpbmRvd3MuCisKKy0gUEVQIDM3MjogIEFkZGVkIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkuCisKKy0gVGhlIF9hc2RpY3QoKSBmb3IgbWV0aG9kIGZvciBuYW1lZHR1cGxlcyBub3cgcmV0dXJucyBhbiBPcmRlcmVkRGljdCgpLgorCistIGNvbmZpZ3BhcnNlciBub3cgZGVmYXVsdHMgdG8gdXNpbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgorCistIElzc3VlICM1NDAxOiBGaXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gaW4gbWltZXR5cGVzIHdoZW4gYGBmcm9tIG1pbWV0eXBlcworICBpbXBvcnQgZ3Vlc3NfZXh0ZW5zaW9uYGAgd2FzIHVzZWQuCisKKy0gSXNzdWUgIzE3MzM5ODY6IEZpeGVkIG1tYXAgY3Jhc2ggaW4gYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHNlY29uZCBtYXAgb2JqZWN0CisgIHdpdGggc2FtZSB0YWduYW1lIGJ1dCBsYXJnZXIgc2l6ZSB0aGFuIGZpcnN0IG1hcC4gKFdpbmRvd3MpCisKKy0gSXNzdWUgIzUzODY6IG1tYXAud3JpdGVfYnl0ZSBkaWRuJ3QgY2hlY2sgbWFwIHNpemUsIHNvIGl0IGNvdWxkIGNhdXNlIGJ1ZmZlcgorICBvdmVycnVuLgorCistIElzc3VlICMxNTMzMTY0OiBJbnN0YWxsZWQgYnV0IG5vdCBsaXN0ZWQgYGAqLnB5b2BgIHdhcyBicmVha2luZyBEaXN0dXRpbHMKKyAgYmRpc3RfcnBtIGNvbW1hbmQuCisKKy0gSXNzdWUgIzUzNzg6IGFkZGVkIC0tcXVpZXQgb3B0aW9uIHRvIERpc3R1dGlscyBiZGlzdF9ycG0gY29tbWFuZC4KKworLSBJc3N1ZSAjNTA1MjogbWFrZSBEaXN0dXRpbHMgY29tcGF0aWJsZSB3aXRoIDIuMyBhZ2Fpbi4KKworLSBJc3N1ZSAjNTMxNjogRml4ZWQgYnVpbGRib3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSBtdWx0aXBsZSBpbmhlcml0YW5jZQorICBpbiBEaXN0dXRpbHMgdGVzdHMuCisKKy0gSXNzdWUgIzUyODc6IEFkZCBleGNlcHRpb24gaGFuZGxpbmcgYXJvdW5kIGZpbmRDYWxsZXIoKSBjYWxsIHRvIGhlbHAgb3V0CisgIElyb25QeXRob24uCisKKy0gSXNzdWUgIzUyODI6IEZpeGVkIG1tYXAgcmVzaXplIG9uIDMyYml0IHdpbmRvd3MgYW5kIHVuaXguIFdoZW4gb2Zmc2V0ID4gMCwKKyAgVGhlIGZpbGUgd2FzIHJlc2l6ZWQgdG8gd3Jvbmcgc2l6ZS4KKworLSBJc3N1ZSAjNTI5MjogRml4ZWQgbW1hcCBjcmFzaCBvbiBpdHMgYm91bmRhcnkgYWNjZXNzIG1bbGVuKG0pXS4KKworLSBJc3N1ZSAjMjI3OTogZGlzdHV0aWxzLnNkaXN0LmFkZF9kZWZhdWx0cyBub3cgYWRkIGZpbGVzCisgIGZyb20gdGhlIHBhY2thZ2VfZGF0YSBhbmQgdGhlIGRhdGFfZmlsZXMgbWV0YWRhdGEuCisKKy0gSXNzdWUgIzUyNTc6IHJlZmFjdG9yZWQgYWxsIHRlc3RzIGluIGRpc3R1dGlscywgc28gdGhleSB1c2UKKyAgc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwgdG8gYXZvaWQgd3JpdGluZyBpbiB0aGUgdGVzdHMgZGlyZWN0b3J5LgorCistIElzc3VlICM0NTI0OiBkaXN0dXRpbHMgYnVpbGRfc2NyaXB0IGNvbW1hbmQgZmFpbGVkIHdpdGggLS13aXRoLXN1ZmZpeD0zLgorICBJbml0aWFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCistIElzc3VlICMyNDYxOiBhZGRlZCB0ZXN0cyBmb3IgZGlzdHV0aWxzLnV0aWwKKworLSBJc3N1ZSAjNDk5ODogVGhlIG1lbW9yeSBzYXZpbmcgZWZmZWN0IG9mIF9fc2xvdHNfXyBoYWQgYmVlbiBsb3N0IG9uIEZyYWN0aW9ucworICB3aGljaCBpbmhlcml0ZWQgZnJvbSBudW1iZXJzLnB5IHdoaWNoIGRpZCBub3QgaGF2ZSBfX3Nsb3RzX18gZGVmaW5lZC4gIFRoZQorICBudW1iZXJzIGhpZXJhcmNoeSBub3cgaGFzIGl0cyBvd24gX19zbG90c19fIGRlY2xhcmF0aW9ucy4KKworLSBJc3N1ZSAjNDYzMTogRml4IHVybG9wZW4oKSByZXN1bHQgd2hlbiBhbiBIVFRQIHJlc3BvbnNlIHVzZXMgY2h1bmtlZAorICBlbmNvZGluZy4KKworLSBJc3N1ZSAjNTIwMzogRml4ZWQgY3R5cGVzIHNlZ2ZhdWx0cyB3aGVuIHBhc3NpbmcgYSB1bmljb2RlIHN0cmluZyB0byBhCisgIGZ1bmN0aW9uIHdpdGhvdXQgYXJndHlwZXMgKG9ubHkgb2NjdXJzIGlmIEhBVkVfVVNBQkxFX1dDSEFSX1QgaXMgZmFsc2UpLgorCistIElzc3VlICMzMzg2OiBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliIHByZWZpeCBhcmd1bWVudCB3YXMgaWdub3JlZAorICB1bmRlciBOVCBhbmQgT1MyLiBQYXRjaCBieSBQaGlsaXAgSmVudmV5LgorCistIElzc3VlICM1MTI4OiBNYWtlIGNvbXBpbGVhbGwgcHJvcGVybHkgaW5zcGVjdCBieXRlY29kZSB0byBkZXRlcm1pbmUgaWYgbmVlZHMKKyAgdG8gYmUgcmVjcmVhdGVkLiBUaGlzIGF2b2lkcyBhIHRpbWluZyBob2xlIHRoYW5rcyB0byB0aGUgb2xkIHJlbGlhbmNlIG9uIHRoZQorICBjdGltZSBvZiB0aGUgZmlsZXMgaW52b2x2ZWQuCisKKy0gSXNzdWUgIzUxMjI6IFN5bmNocm9uaXplIHRrIGxvYWQgZmFpbHVyZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsCisgIGRlYWRsb2NrLgorCistIElzc3VlICMxODE4OiBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IHN1cHBvcnRzIGEga2V5d29yZCBhcmd1bWVudAorICAncmVuYW1lJyB3aGljaCBsZXRzIGludmFsaWQgZmllbGRuYW1lcyBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0bworICBwb3NpdGlvbmFsIG5hbWVzIGluIHRoZSBmb3JtLCBfMSwgXzIsIC4uLgorCistIElzc3VlICM0ODkwOiBIYW5kbGUgZW1wdHkgdGV4dCBzZWFyY2ggcGF0dGVybiBpbiBUa2ludGVyLlRleHQuc2VhcmNoLgorCistIElzc3VlICM0NTEyIChwYXJ0IDIpOiBQcm9tb3RlIGBgWmlwSW1wb3J0ZXIuX2dldF9maWxlbmFtZSgpYGAgdG8gYmUgYQorICBwdWJsaWMgZG9jdW1lbnRlZCBtZXRob2QgYGBaaXBJbXBvcnRlci5nZXRfZmlsZW5hbWUoKWBgLgorCistIElzc3VlICM0MTk1OiBUaGUgYGBydW5weWBgIG1vZHVsZSAoYW5kIHRoZSBgYC1tYGAgc3dpdGNoKSBub3cgc3VwcG9ydAorICB0aGUgZXhlY3V0aW9uIG9mIHBhY2thZ2VzIGJ5IGxvb2tpbmcgZm9yIGFuZCBleGVjdXRpbmcgYSBgYF9fbWFpbl9fYGAKKyAgc3VibW9kdWxlIHdoZW4gYSBwYWNrYWdlIG5hbWUgaXMgc3VwcGxpZWQuIEluaXRpYWwgcGF0Y2ggYnkgQW5kaQorICBWYWpkYS4KKworLSBJc3N1ZSAjMTczMTcwNjogQ2FsbCBUY2xfQ29uZGl0aW9uRmluYWxpemUgZm9yIFRjbF9Db25kaXRpb25zIHRoYXQgd2lsbAorICBub3QgYmUgdXNlZCBhZ2FpbiAodGhpcyByZXF1aXJlcyBUY2wvVGsgOC4zLjEpLCBhbHNvIGZpeCBhIG1lbW9yeSBsZWFrIGluCisgIFRrYXBwX0NhbGwgd2hlbiBjYWxsaW5nIGZyb20gYSB0aHJlYWQgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSB0aGF0IGNyZWF0ZWQKKyAgdGhlIFRjbCBpbnRlcnByZXRlci4gUGF0Y2ggYnkgUm9iZXJ0IEhhbmNvY2suCisKKy0gSXNzdWUgIzQyODU6IENoYW5nZSBzeXMudmVyc2lvbl9pbmZvIHRvIGJlIGEgbmFtZWQgdHVwbGUuIFBhdGNoIGJ5CisgIFJvc3MgTGlnaHQuCisKKy0gSXNzdWUgIzE1MjA4Nzc6IE5vdyBkaXN0dXRpbHMuc3lzY29uZmlnIHJlYWRzICRBUiBmcm9tIHRoZQorICBlbnZpcm9ubWVudC9NYWtlZmlsZS4gUGF0Y2ggYnkgRG91Z2xhcyBHcmVpbWFuLgorCistIElzc3VlICMxMjc2NzY4OiBUaGUgdmVyYm9zZSBvcHRpb24gd2FzIG5vdCB1c2VkIGluIHRoZSBjb2RlIG9mCisgIGRpc3R1dGlscy5maWxlX3V0aWwgYW5kIGRpc3R1dGlscy5kaXJfdXRpbC4KKworLSBJc3N1ZSAjNTEzMjogRml4ZWQgdHJvdWJsZSBidWlsZGluZyBleHRlbnNpb25zIHVuZGVyIFNvbGFyaXMgd2l0aAorICAtLWVuYWJsZWQtc2hhcmVkIGFjdGl2YXRlZC4gSW5pdGlhbCBwYXRjaCBieSBEYXZlIFBldGVyc29uLgorCistIElzc3VlICMxNTgxNDc2OiBBbHdheXMgdXNlIHRoZSBUY2wgZ2xvYmFsIG5hbWVzcGFjZSB3aGVuIGNhbGxpbmcgaW50byBUY2wuCisKKy0gVGhlIHNoZWx2ZSBtb2R1bGUgbm93IGRlZmF1bHRzIHRvIHBpY2tsZSBwcm90b2NvbCAzLgorCistIEZpeCBhIGJ1ZyBpbiB0aGUgdHJhY2UgbW9kdWxlIHdoZXJlIGEgYnl0ZXMgb2JqZWN0IGZyb20gY29fbG5vdGFiIGhhZCBpdHMKKyAgaXRlbXMgYmVpbmcgcGFzc2VkIHRocm91Z2ggb3JkKCkuCisKKy0gSXNzdWUgIzIwNDc6IHNodXRpbC5tb3ZlKCkgY291bGQgYmVsaWV2ZSB0aGF0IGl0cyBkZXN0aW5hdGlvbiBwYXRoIHdhcworICBpbnNpZGUgaXRzIHNvdXJjZSBwYXRoIGlmIGl0IGJlZ2FuIHdpdGggdGhlIHNhbWUgbGV0dGVycyAoZS5nLiAic3JjIiB2cy4KKyAgInNyYy5uZXciKS4KKworLSBBZGRlZCB0aGUgdHRrIG1vZHVsZS4gU2VlIGlzc3VlICMyOTgzOiBUdGsgc3VwcG9ydCBmb3IgVGtpbnRlci4KKworLSBSZW1vdmVkIGlzU2VxdWVuY2VUeXBlKCksIGlzTWFwcGluZ1R5cGUsIGFuZCBpc051bWJlclR5cGUoKSBmcm9tIHRoZQorICBvcGVyYXRvciBtb2R1bGU7IHVzZSB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGluc3RlYWQuICBBbHNvIHJlbW92ZWQKKyAgdGhlIHJlcGVhdCgpIGZ1bmN0aW9uOyB1c2UgbXVsKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjNTAyMTogIGRvY3Rlc3QudGVzdGZpbGUoKSBkaWQgbm90IGNyZWF0ZSBfX25hbWVfXyBhbmQKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIHJlbGllZCBvbiBfX25hbWVfXyBiZWluZyBkZWZpbmVkLgorCistIEJhY2twb3J0IGltcG9ydGxpYiBmcm9tIFB5dGhvbiAzLjEuIE9ubHkgdGhlIGltcG9ydF9tb2R1bGUoKSBmdW5jdGlvbiBoYXMKKyAgYmVlbiBiYWNrcG9ydGVkIHRvIGhlbHAgZmFjaWxpdGF0ZSB0cmFuc2l0aW9ucyBmcm9tIDIuNyB0byAzLjEuCisKKy0gSXNzdWUgIzE4ODU6IGRpc3R1dGlscy4gV2hlbiBydW5uaW5nIHNkaXN0IHdpdGggLS1mb3JtYXRzPXRhcixnenRhcgorICB0aGUgdGFyIGZpbGUgd2FzIG92ZXJyaWRlbiBieSB0aGUgZ3p0YXIgb25lLgorCistIElzc3VlICM0ODYzOiBkaXN0dXRpbHMubXdlcmtzY29tcGlsZXIgaGFzIGJlZW4gcmVtb3ZlZC4KKworLSBBZGRlZCBhIG5ldyBpdGVydG9vbHMgZnVuY3Rpb25zOiAgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoKQorICBhbmQgY29tcHJlc3MoKS4KKworLSBJc3N1ZSAjNTAzMjogIGFkZGVkIGEgc3RlcCBhcmd1bWVudCB0byBpdGVydG9vbHMuY291bnQoKSBhbmQKKyAgYWxsb3dlZCBub24taW50ZWdlciBhcmd1bWVudHMuCisKKy0gRml4IGFuZCBwcm9wZXJseSBkb2N1bWVudCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSdzIGxvZ2dpbmcKKyAgc3VwcG9ydCwgZXhwb3NlIHRoZSBpbnRlcm5hbCBsZXZlbHMgYW5kIHByb3ZpZGUgcHJvcGVyIHVzYWdlCisgIGV4YW1wbGVzLgorCistIElzc3VlICMxNjcyMzMyOiBmaXggdW5waWNrbGluZyBvZiBzdWJub3JtYWwgZmxvYXRzLCB3aGljaCB3YXMKKyAgcHJvZHVjaW5nIGEgVmFsdWVFcnJvciBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMzg4MTogSGVscCBUY2wgdG8gbG9hZCBldmVuIHdoZW4gc3RhcnRlZCB0aHJvdWdoIHRoZQorICB1bnJlYWRhYmxlIGxvY2FsIHN5bWxpbmsgdG8gIlByb2dyYW0gRmlsZXMiIG9uIFZpc3RhLgorCistIElzc3VlICM0NzEwOiBFeHRyYWN0IGRpcmVjdG9yaWVzIHByb3Blcmx5IGluIHRoZSB6aXBmaWxlIG1vZHVsZTsKKyAgYWxsb3cgYWRkaW5nIGRpcmVjdG9yaWVzIHRvIGEgemlwZmlsZS4KKworLSBJc3N1ZSAjMzgwNzogX211bHRpcHJvY2Vzc2luZyBidWlsZCBmYWlscyB3aGVuIGNvbmZpZ3VyZSBpcyBwYXNzZWQKKyAgLS13aXRob3V0LXRocmVhZHMgYXJndW1lbnQuIFdoZW4gdGhpcyBvY2N1cnMsIF9tdWx0aXByb2Nlc3Npbmcgd2lsbAorICBiZSBkaXNhYmxlZCwgYW5kIG5vdCBjb21waWxlZC4KKworLSBJc3N1ZSAjNTAwODogV2hlbiBhIGZpbGUgaXMgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggdGhlIG5ldyBJTyBsaWJyYXJ5LAorICBkbyBhbiBleHBsaWNpdCBzZWVrIHRvIHRoZSBlbmQgb2YgZmlsZSAoc28gdGhhdCBlLmcuIHRlbGwoKSByZXR1cm5zIHRoZQorICBmaWxlIHNpemUgcmF0aGVyIHRoYW4gMCkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdGhlCisgIHRyYWRpdGlvbmFsIDIueCBmaWxlIG9iamVjdC4KKworLSBJc3N1ZSAjNTAxMzogRml4ZWQgYSBidWcgaW4gRmlsZUhhbmRsZXIgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgZGVsYXkKKyAgcGFyYW1ldGVyIHdhcyBzZXQuCisKKy0gSXNzdWUgIzQ4NDI6IEFsd2F5cyBhcHBlbmQgYSB0cmFpbGluZyAnTCcgd2hlbiBwaWNrbGluZyBsb25ncyB1c2luZworICBwaWNrbGUgcHJvdG9jb2wgMC4gIFdoZW4gcmVhZGluZywgdGhlICdMJyBpcyBvcHRpb25hbC4KKworLSBBZGQgdGhlIGltcG9ydGxpYiBwYWNrYWdlLgorCistIElzc3VlICM0MzAxOiBQYXRjaCB0aGUgbG9nZ2luZyBtb2R1bGUgdG8gYWRkIHByb2Nlc3NOYW1lIHN1cHBvcnQsIHJlbW92ZQorICBfY2hlY2tfbG9nZ2VyX2NsYXNzIGZyb20gbXVsdGlwcm9jZXNzaW5nLgorCistIElzc3VlICMzMzI1OiBSZW1vdmUgcHl0aG9uMi54IHRyeTogZXhjZXB0OiBpbXBvcnRzIGZvciBvbGQgY1BpY2tsZSBmcm9tCisgIG11bHRpcHJvY2Vzc2luZy4KKworLSBJc3N1ZSAjNDk1OTogaW5zcGVjdC5mb3JtYXRhcmdzcGVjIG5vdyB3b3JrcyBmb3Iga2V5d29yZCBvbmx5IGFyZ3VtZW50cworICB3aXRob3V0IGRlZmF1bHRzLgorCistIElzc3VlICMzMzIxOiBgYF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigpYGAgZG9lc24ndCBjaGVjayBoYW5kbGU7IGFkZGVkIGNoZWNrcworICBmb3IgVW5peCBtYWNoaW5lcyBmb3IgbmVnYXRpdmUgaGFuZGxlcyBhbmQgbGFyZ2UgaW50IGhhbmRsZXMuIFdpdGhvdXQgdGhpcyBjaGVjaworICBpdCBpcyBwb3NzaWJsZSB0byBzZWdmYXVsdCB0aGUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzQ0NDk6IEFzc2VydGlvbkVycm9yIGluIG1wX2JlbmNobWFya3MucHksIGNhdXNlZCBieSBhbiB1bmRlcmx5aW5nIGlzc3VlCisgIGluIHNoYXJlZGN0eXBlcy5weS4KKworLSBJc3N1ZSAjMTIyNTEwNzogaW5zcGVjdC5pc2NsYXNzKCkgcmV0dXJuZWQgVHJ1ZSBmb3IgaW5zdGFuY2VzIHdpdGggYSBjdXN0b20KKyAgX19nZXRhdHRyX18uCisKKy0gSXNzdWUgIzM4MjYgYW5kICM0NzkxOiBUaGUgc29ja2V0IG1vZHVsZSBub3cgY2xvc2VzIHRoZSB1bmRlcmx5aW5nIHNvY2tldAorICBhcHByb3ByaWF0ZWx5IHdoZW4gaXQgaXMgYmVpbmcgdXNlZCB2aWEgc29ja2V0Lm1ha2VmaWxlKCkgb2JqZWN0cworICByYXRoZXIgdGhhbiBkZWxheWluZyB0aGUgY2xvc2UgYnkgd2FpdGluZyBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uIHRvIGRvIGl0LgorCistIElzc3VlICMxNjk2MTk5OiAgQWRkIGNvbGxlY3Rpb25zLkNvdW50ZXIoKSBmb3IgcmFwaWQgYW5kIGNvbnZlbmllbnQKKyAgY291bnRpbmcuCisKKy0gSXNzdWUgIzM4NjA6IEd6aXBGaWxlIGFuZCBCWjJGaWxlIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wuCisKKy0gSXNzdWUgIzQ4Njc6IEZpeGVkIGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gcGFzc2luZyBhIHN0cmluZyB0byBhCisgIGZ1bmN0aW9uIHdpdGhvdXQgZGVmaW5pbmcgYXJndHlwZXMuCisKKy0gSXNzdWUgIzQyNzI6IEFkZCBhbiBvcHRpb25hbCBhcmd1bWVudCB0byB0aGUgR3ppcEZpbGUgY29uc3RydWN0b3IgdG8gb3ZlcnJpZGUKKyAgdGhlIHRpbWVzdGFtcCBpbiB0aGUgZ3ppcCBzdHJlYW0uIFRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbnMgdGhlIGN1cnJlbnQgdGltZS4KKyAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5IGUuZy4gZ3VuemlwIHdoZW4gZGVjb21wcmVzc2luZy4gUGF0Y2ggYnkKKyAgSmFjcXVlcyBGcmVjaGV0LgorCistIFJlc3RvcmUgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5IGZvciBkZWNpbWFsLnB5LgorCistIElzc3VlICMzNjM4OiBSZW1vdmUgZnVuY3Rpb25zIGZyb20gX3RraW50ZXIgbW9kdWxlIGxldmVsIHRoYXQgZGVwZW5kIG9uCisgIFRrYXBwT2JqZWN0IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorCistIElzc3VlICM0NzE4OiBBZGFwdCB0aGUgd3NnaXJlZiBwYWNrYWdlIHNvIHRoYXQgaXQgYWN0dWFsbHkgd29ya3Mgd2l0aAorICBQeXRob24gMy54LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGBvZmZpY2lhbCBhbWVuZG1lbnRzIG9mIHRoZSBzcGVjCisgIDxodHRwOi8vd3d3LndzZ2kub3JnL3dzZ2kvQW1lbmRtZW50c18xLjA+YF8uCisKKy0gSXNzdWUgIzQ3OTY6IEFkZGVkIERlY2ltYWwuZnJvbV9mbG9hdCgpIGFuZCBDb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKQorICB0byB0aGUgZGVjaW1hbCBtb2R1bGUuCisKKy0gRnJhY3Rpb25zLmZyb21fZmxvYXQoKSBubyBsb25nZXIgbG9zZXMgcHJlY2lzaW9uIGZvciBpbnRlZ2VycyB0b28gYmlnIHRvCisgIGNhc3QgYXMgZmxvYXRzLgorCistIElzc3VlICM0ODEyOiBhZGQgbWlzc2luZyB1bmRlcnNjb3JlIHByZWZpeCB0byBzb21lIGludGVybmFsLXVzZS1vbmx5CisgIGNvbnN0YW50cyBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuICAoRGVjXzAgYmVjb21lcyBfRGVjXzAsIGV0Yy4pCisKKy0gSXNzdWUgIzQ3OTA6IFRoZSBuc21hbGxlc3QoKSBhbmQgbmxhcmdlc3QoKSBmdW5jdGlvbnMgaW4gdGhlIGhlYXBxIG1vZHVsZQorICBkaWQgdW5uZWNlc3Nhcnkgd29yayBpbiB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgbm8ga2V5IGZ1bmN0aW9uIHdhcyBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzQ3OTU6IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbigpIHJldHVybnMgRmFsc2UgaW5zdGVhZCBvZiBOb25lIHdoZW4KKyAgdGhlIGZ1bmN0aW9uIGlzIG5vdCBhIGdlbmVyYXRvci4KKworLSBJc3N1ZSAjNDcwMjogVGhyb3dpbmcgYSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yIGluc3RlYWQgb2YgSU9FcnJvciBpbiBjYXNlCisgIG5vIE1TVkMgY29tcGlsZXIgaXMgZm91bmQgdW5kZXIgV2luZG93cy4gT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KKworLSBJc3N1ZSAjNDY0NjogZGlzdHV0aWxzIHdhcyBjaG9raW5nIG9uIGVtcHR5IG9wdGlvbnMgYXJnIGluIHRoZSBzZXR1cAorICBmdW5jdGlvbi4gT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEhlbGxlci4KKworLSBJc3N1ZSAjMzc2NzogQ29udmVydCBUayBvYmplY3QgdG8gc3RyaW5nIGluIHRrQ29sb3JDaG9vc2VyLgorCistIElzc3VlICMzMjQ4OiBBbGxvdyBwbGFjaW5nIFNjcm9sbGVkVGV4dCBpbiBhIFBhbmVkV2luZG93LgorCistIElzc3VlICM0NDQ0OiBBbGxvdyBhc3NlcnRSYWlzZXMoKSB0byBiZSB1c2VkIGFzIGEgY29udGV4dCBoYW5kbGVyLCBzbyB0aGF0CisgIHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4gaW5saW5lIGlmIG1vcmUgcHJhY3RpY2FsLgorCistIElzc3VlICM0NzM5OiBBZGQgcHlkb2MgaGVscCB0b3BpY3MgZm9yIHN5bWJvbHMsIHNvIHRoYXQgZS5nLiBoZWxwKCdAJykKKyAgd29ya3MgYXMgZXhwZWN0ZWQgaW4gdGhlIGludGVyYWN0aXZlIGVudmlyb25tZW50LgorCistIElzc3VlICM0NzU2OiB6aXBmaWxlLmlzX3ppcGZpbGUoKSBub3cgc3VwcG9ydHMgZmlsZS1saWtlIG9iamVjdHMuIFBhdGNoIGJ5CisgIEdhYnJpZWwgR2VuZWxsaW5hLgorCistIElzc3VlICM0NTc0OiByZWFkaW5nIGFuIFVURjE2LWVuY29kZWQgdGV4dCBmaWxlIGNyYXNoZXMgaWYgXHIgb24gNjQtY2hhcgorICBib3VuZGFyeS4KKworLSBJc3N1ZSAjNDIyMzogaW5zcGVjdC5nZXRzb3VyY2UoKSB3aWxsIG5vdyBjb3JyZWN0bHkgZGlzcGxheSBzb3VyY2UgY29kZQorICBmb3IgcGFja2FnZXMgbG9hZGVkIHZpYSB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIKKyAgbG9hZGVyKS4gT3JpZ2luYWwgcGF0Y2ggYnkgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzQyMDE6IHBkYiBjYW4gbm93IGFjY2VzcyBhbmQgZGlzcGxheSBzb3VyY2UgY29kZSBsb2FkZWQgdmlhCisgIHppcGltcG9ydCAob3IgYW55IG90aGVyIGNvbmZvcm1hbnQgUEVQIDMwMiBsb2FkZXIpLiBPcmlnaW5hbCBwYXRjaCBieQorICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjNDE5NzogZG9jdGVzdHMgaW4gbW9kdWxlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIFBFUAorICAzMDIgY29uZm9ybWFudCBsb2FkZXIpIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IGluIG1vc3QgY2FzZXMgKHRoZXkKKyAgYXJlIHN0aWxsIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnRzIHRoYXQgZXhpc3QgZm9yIGFsbCBjb2RlIHJ1bm5pbmcKKyAgZnJvbSBpbnNpZGUgYSBtb2R1bGUgbG9hZGVkIHZpYSBhIFBFUCAzMDIgbG9hZGVyIGFuZCBhdHRlbXB0aW5nIHRvCisgIHBlcmZvcm0gSU8gb3BlcmF0aW9ucyBiYXNlZCBvbiBfX2ZpbGVfXykuIE9yaWdpbmFsIHBhdGNoIGJ5CisgIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlcyAjNDA4MiBhbmQgIzQ1MTI6IEFkZCBydW5weSBzdXBwb3J0IHRvIHppcGltcG9ydCBpbiBhIG1hbm5lciB0aGF0CisgIGFsbG93cyBiYWNrcG9ydGluZyB0byBtYWludGVuYW5jZSBicmFuY2hlcy4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzQxNjM6IHRleHR3cmFwIG1vZHVsZTogYWxsb3cgd29yZCBzcGxpdHRpbmcgb24gYSBoeXBoZW4gcHJlY2VkZWQgYnkKKyAgYSBub24tQVNDSUkgbGV0dGVyLgorCistIElzc3VlICM0NjE2OiBUYXJGaWxlLnV0aW1lKCk6IFJlc3RvcmUgZGlyZWN0b3J5IHRpbWVzIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQwMjE6IHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIG5vdyByYWlzZXMgYSBTeW50YXhFcnJvciB3aGVuIHRoZQorICBjb2RlYyBjYW5ub3QgYmUgZm91bmQuICBUaGlzIGlzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGJ1aWx0aW4gYmVoYXZpb3IuCisKKy0gSXNzdWUgIzQwODQ6IEZpeCBtYXgsIG1pbiwgbWF4X21hZyBhbmQgbWluX21hZyBEZWNpbWFsIG1ldGhvZHMgdG8KKyAgZ2l2ZSBjb3JyZWN0IHJlc3VsdHMgaW4gdGhlIGNhc2Ugd2hlcmUgb25lIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOCisgIGFuZCB0aGUgb3RoZXIgaXMgYSBmaW5pdGUgbnVtYmVyIHRoYXQgcmVxdWlyZXMgcm91bmRpbmcuCisKKy0gSXNzdWUgIzQ0ODM6IF9kYm0gbW9kdWxlIG5vdyBidWlsZHMgb24gc3lzdGVtcyB3aXRoIGdkYm0gJiBnZGJtX2NvbXBhdAorICBsaWJzLgorCistIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX2NhbGxfb3V0cHV0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IG91dHB1dAorICBmcm9tIGEgc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLSBJc3N1ZSAjMTA1NTIzNDogY2dpLnBhcnNlX2hlYWRlcigpOiBGaXhlZCBwYXJzaW5nIG9mIGhlYWRlciBwYXJhbWV0ZXJzIHRvCisgIHN1cHBvcnQgdW51c3VhbCBmaWxlbmFtZXMgKHN1Y2ggYXMgdGhvc2UgY29udGFpbmluZyBzZW1pLWNvbG9ucykgaW4KKyAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXJzLgorCistIElzc3VlICM0Mzg0OiBBZGRlZCBsb2dnaW5nIGludGVncmF0aW9uIHdpdGggd2FybmluZ3MgbW9kdWxlIHVzaW5nCisgIGNhcHR1cmVXYXJuaW5ncygpLiBUaGlzIGNoYW5nZSBpbmNsdWRlcyBhIE51bGxIYW5kbGVyIHdoaWNoIGRvZXMgbm90aGluZzsKKyAgaXQgd2lsbCBiZSBvZiB1c2UgdG8gbGlicmFyeSBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGF2b2lkIHRoZSAiTm8gaGFuZGxlcnMKKyAgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciBYWFgiIG1lc3NhZ2Ugd2hpY2ggY2FuIGFwcGVhciBpZiB0aGUgbGlicmFyeSB1c2VyCisgIGRvZXNuJ3QgY29uZmlndXJlIGxvZ2dpbmcuCisKKy0gSXNzdWUgIzM3NDE6IERJU1RVVElMU19VU0VfU0RLIHNldCBjYXVzZXMgbXN2Yzljb21waWxlci5weSB0byByYWlzZSBhbgorICBleGNlcHRpb24uCisKKy0gSXNzdWUgIzQ1Mjk6IGZpeCB0aGUgcGFyc2VyIG1vZHVsZSdzIHZhbGlkYXRpb24gb2YgdHJ5LWV4Y2VwdC1maW5hbGx5CisgIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzQ0NTg6IGdldG9wdC5nbnVfZ2V0b3B0KCkgbm93IHJlY29nbml6ZXMgYSBzaW5nbGUgIi0iIGFzIGFuIGFyZ3VtZW50LAorICBub3QgYSBtYWxmb3JtZWQgb3B0aW9uLgorCistIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBvdXRwdXQKKyAgZnJvbSBhIHN1YnByb2Nlc3Mgb24gc3VjY2VzcyBvciByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuCisKKy0gSXNzdWUgIzQ1NDI6IE9uIFdpbmRvd3MsIGJpbmFzY2lpLmNyYzMyIHN0aWxsIGFjY2VwdGVkIHN0ciBhcyBiaW5hcnkgaW5wdXQ7CisgIHRoZSBjb3JyZXNwb25kaW5nIHRlc3RzIG5vdyBwYXNzLgorCistIElzc3VlICM0NTM3OiB3ZWJicm93c2VyLlVuaXhCcm93c2VyIHdvdWxkIGZhaWwgdG8gb3BlbiB0aGUgYnJvd3NlciBiZWNhdXNlCisgIGl0IHdhcyBjYWxsaW5nIHRoZSB3cm9uZyBvcGVuKCkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwNTUyMzQ6IGNnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0bworICBzdXBwb3J0IHVudXN1YWwgZmlsZW5hbWVzIChzdWNoIGFzIHRob3NlIGNvbnRhaW5pbmcgc2VtaS1jb2xvbnMpIGluCisgIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVycy4KKworLSBJc3N1ZSAjNDg2MTogY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCk6IFJvYnVzdGlmeS4gRml4IGxpYnJhcnkgZGV0ZWN0aW9uIG9uCisgIGJpYXJjaCBzeXN0ZW1zLiBUcnkgdG8gcmVseSBvbiBsZGNvbmZpZyBvbmx5LCB3aXRob3V0IHVzaW5nIG9iamR1bXAgYW5kIGdjYy4KKworLSBJc3N1ZSAjNTEwNDogVGhlIHNvY2tldCBtb2R1bGUgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yIHdoZW4gMTYtYml0IHBvcnQgYW5kCisgIHByb3RvY29sIG51bWJlcnMgYXJlIHN1cHBsaWVkIG91dHNpZGUgdGhlIGFsbG93ZWQgMC02NTUzNiByYW5nZSBvbiBiaW5kKCkKKyAgYW5kIGdldHNlcnZieXBvcnQoKS4KKworLSBXaW5kb3dzIGxvY2FsZSBtYXBwaW5nIHVwZGF0ZWQgdG8gVmlzdGEuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM0NzA0OiByZW1vdmUgdXNlIG9mIGNtcCgpIGluIHB5YmVuY2gsIGJ1bXAgaXRzIHZlcnNpb24gbnVtYmVyIHRvIDIuMSwKKyAgYW5kIG1ha2UgaXQgMi42LWNvbXBhdGlibGUuCisKKy0gVHRrIGRlbW9zIGFkZGVkIGluIERlbW8vdGtpbnRlci90dGsvCisKKy0gSXNzdWUgIzQ2Nzc6IGFkZCB0d28gbGlzdCBjb21wcmVoZW5zaW9uIHRlc3RzIHRvIHB5YmVuY2guCisKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzYwOTQ6IEJ1aWxkIGNvcnJlY3RseSB3aXRoIFN1YnZlcnNpb24gMS43LgorCistIElzc3VlICM1ODQ3OiBSZW1vdmUgLW4gc3dpdGNoIG9uICJFZGl0IHdpdGggSURMRSIgbWVudSBpdGVtLgorCistIElzc3VlICM1NzI2OiBNYWtlIE1vZHVsZXMvbGRfc29fYWl4IHJldHVybiB0aGUgYWN0dWFsIGV4aXQgY29kZSBvZiB0aGUKKyAgbGlua2VyLCByYXRoZXIgdGhhbiBhbHdheXMgZXhpdCBzdWNjZXNzZnVsbHkuIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgorCistIElzc3VlICM0NTg3OiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQorICB0aGUgb3JkZXIgdGhhdCBiYWNrZW5kcyBmb3IgdGhlIGRibSBleHRlbnNpb24gYXJlIGNoZWNrZWQuCisKKy0gTGluayB0aGUgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5IHdpdGggJChNT0RMSUJTKS4KKworLSBJc3N1ZSAjNTEzNDogU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBzcWxpdGUgd2l0aCBWQysrLgorCistIElzc3VlICM0NDk0OiBGaXggYnVpbGQgd2l0aCBQeV9OT19FTkFCTEVfU0hBUkVEIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQ4OTU6IFVzZSBfc3RyZHVwIG9uIFdpbmRvd3MgQ0UuCisKKy0gSXNzdWUgIzQ0NzI6ICJjb25maWd1cmUgLS1lbmFibGUtc2hhcmVkIiBub3cgd29ya3Mgb24gT1NYCisKKy0gSXNzdWVzICM0NzI4IGFuZCAjNDA2MDogV09SRFNfQklHRURJQU4gaXMgbm93IGNvcnJlY3QgaW4gVW5pdmVyc2FsIGJ1aWxkcy4KKworLSBJc3N1ZSAjNDM4OTogQWRkIGljb24gdG8gdGhlIHVuaW5zdGFsbCBlbnRyeSBpbiAiYWRkLWFuZC1yZW1vdmUtcHJvZ3JhbXMiLgorCistIElzc3VlICM0Mjg5OiBSZW1vdmUgQ2FuY2VsIGJ1dHRvbiBmcm9tIEFkdmFuY2VkRGxnLgorCistIElzc3VlICMxNjU2Njc1OiBSZWdpc3RlciBhIGRyb3AgaGFuZGxlciBmb3IgLnB5KiBmaWxlcyBvbiBXaW5kb3dzLgorCistIElzc3VlICM0MTIwOiBFeGNsdWRlIG1hbmlmZXN0IGZyb20gZXh0ZW5zaW9uIG1vZHVsZXMgaW4gVlMyMDA4LgorCistIElzc3VlICM0MDkxOiBJbnN0YWxsIHB5dGhvbnh5LmRsbCBpbiBzeXN0ZW0zMiBhZ2Fpbi4KKworLSBJc3N1ZSAjNDAxODogRGlzYWJsZSAiZm9yIG1lIiBpbnN0YWxsYXRpb25zIG9uIFZpc3RhLgorCistIElzc3VlICMzNzU4OiBBZGQgYGBwYXRjaGNoZWNrYGAgYnVpbGQgdGFyZ2V0IHRvIC5QSE9OWS4KKworLSBJc3N1ZSAjNDIwNDogRml4ZWQgbW9kdWxlIGJ1aWxkIGVycm9ycyBvbiBGcmVlQlNEIDQuCisKKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzY2MjQ6IHlBcmdfUGFyc2VUdXBsZSB3aXRoICJzIiBmb3JtYXQgd2hlbiBwYXJzaW5nIGFyZ3VtZW50IHdpdGgKKyAgTlVMOiBCb2d1cyBUeXBlRXJyb3IgZGV0YWlsIHN0cmluZy4KKworLSBJc3N1ZSAjNTE3NTogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3IKKyAgZm9yIG5lZ2F0aXZlIGFyZ3VtZW50cy4gIFByZXZpb3VzbHksIGl0IHJhaXNlZCBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzQ3MjA6IFRoZSBmb3JtYXQgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBjYW4gYmVnaW4gd2l0aCAnfCcuCisKKy0gSXNzdWUgIzM2MzI6IGZyb20gdGhlIGdkYiBkZWJ1Z2dlciwgdGhlICdweW8nIG1hY3JvIGNhbiBub3cgYmUgY2FsbGVkIHdoZW4KKyAgdGhlIEdJTCBpcyByZWxlYXNlZCwgb3Igb3duZWQgYnkgYW5vdGhlciB0aHJlYWQuCisKKy0gSXNzdWUgIzQxMjI6IE9uIFdpbmRvd3MsIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgdGhlCisgIFB5X1VOSUNPREVfSVNTUEFDRSBtYWNybyBpbiBhbiBleHRlbnNpb24gbW9kdWxlLgorCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMzNzQ1OiBGaXggaGFzaGxpYiB0byBhbHdheXMgcmVqZWN0IHVuaWNvZGUgYW5kIG5vbiBidWZmZXItYXBpCisgIHN1cHBvcnRpbmcgb2JqZWN0cyBhcyBpbnB1dCBubyBtYXR0ZXIgaG93IGl0IHdhcyBjb21waWxlZCAoYnVpbHQgaW4KKyAgaW1wbGVtZW50YXRpb25zIG9yIGV4dGVybmFsIG9wZW5zc2wgbGlicmFyeSkuCisKKy0gSXNzdWUgIzQzOTc6IEZpeCBvY2Nhc2lvbmFsIHRlc3Rfc29ja2V0IGZhaWx1cmUgb24gT1MgWC4KKworLSBJc3N1ZSAjNDI3OTogRml4IGJ1aWxkIG9mIHBhcnNlcm1vZHVsZSB1bmRlciBDeWd3aW4uCisKKy0gSXNzdWUgIzQ3NTE6IGhhc2hsaWIgbm93IHJlbGVhc2VzIHRoZSBHSUwgd2hlbiBoYXNoaW5nIGxhcmdlIGJ1ZmZlcnMKKyAgKHdpdGggYSBoYXJkd2lyZWQgdGhyZXNob2xkIG9mIDIwNDggYnl0ZXMpLCBhbGxvd2luZyBiZXR0ZXIgcGFyYWxsZWxpemF0aW9uCisgIG9uIG11bHRpLUNQVSBzeXN0ZW1zLiBDb250cmlidXRlZCBieSBMdWthcyBMdWVnIChlYmZlKSBhbmQgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzQwNTE6IFByZXZlbnQgY29uZmxpY3Qgb2YgVU5JQ09ERSBtYWNyb3MgaW4gY1BpY2tsZS4KKworLSBJc3N1ZSAjNDczODogRWFjaCB6bGliIG9iamVjdCBub3cgaGFzIGEgc2VwYXJhdGUgbG9jaywgYWxsb3dpbmcgdG8gY29tcHJlc3MKKyAgb3IgZGVjb21wcmVzcyBzZXZlcmFsIHN0cmVhbXMgYXQgb25jZSBvbiBtdWx0aS1DUFUgc3lzdGVtcy4gQWxzbywgdGhlIEdJTAorICBpcyBub3cgcmVsZWFzZWQgd2hlbiBjb21wdXRpbmcgdGhlIENSQyBvZiBhIGxhcmdlIGJ1ZmZlci4gUGF0Y2ggYnkgZWJmZS4KKworLSBJc3N1ZSAjNDIyODogUGFjayBuZWdhdGl2ZSB2YWx1ZXMgdGhlIHNhbWUgd2F5IGFzIDIuNCBpbiBzdHJ1Y3QncyBMIGZvcm1hdC4KKworLSBJc3N1ZSAjMTA0MDAyNjogRml4IG9zLnRpbWVzIHJlc3VsdCBvbiBzeXN0ZW1zIHdoZXJlIEhaIGlzIGluY29ycmVjdC4KKworLSBJc3N1ZXMgIzMxNjcsICMzNjgyOiBGaXggdGVzdF9tYXRoIGZhaWx1cmVzIGZvciBsb2csIGxvZzEwIG9uIFNvbGFyaXMsCisgIE9wZW5CU0QuCisKKy0gSXNzdWUgIzQ1ODM6IGFycmF5LmFycmF5IHdvdWxkIG5vdCBhbHdheXMgcHJvaGliaXQgcmVzaXppbmcgd2hlbiBhIGJ1ZmZlcgorICBoYXMgYmVlbiBleHBvcnRlZCwgcmVzdWx0aW5nIGluIGFuIGludGVycHJldGVyIGNyYXNoIHdoZW4gYWNjZXNzaW5nIHRoZQorICBidWZmZXIuCisKKworLSBJc3N1ZSAjNTIyODogTWFrZSBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzIGNhbiBub3cgYmUgcGlja2xlZC4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzYxNTI6IE5ldyBvcHRpb24gJy1qJy8nLS1tdWx0aXByb2Nlc3MnIGZvciByZWdydGVzdCBhbGxvd3MgcnVubmluZworICByZWdyZXNzaW9uIHRlc3RzIGluIHBhcmFsbGVsLCBzaG9ydGVuaW5nIHRoZSB0b3RhbCBydW50aW1lLgorCistIElzc3VlICM1NDUwOiBNb3ZlZCB0ZXN0cyBpbnZvbHZpbmcgbG9hZGluZyB0ayBmcm9tIExpYi90ZXN0L3Rlc3RfdGNsIHRvCisgIExpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbG9hZHRrLiBXaXRoIHRoaXMsIHRoZXNlIHRlc3RzIGRlbW9uc3RyYXRlCisgIHRoZSBzYW1lIGJlaGF2aW91ciBhcyB0ZXN0X3R0a2d1aW9ubHkgKGFuZCBub3cgYWxzbyB0ZXN0X3RrKSB3aGljaCBpcyB0bworICBza2lwIHRoZSB0ZXN0cyBpZiBESVNQTEFZIGlzIGRlZmluZWQgYnV0IGNhbid0IGJlIHVzZWQuCisKKy0gcmVncnRlc3Qgbm8gbG9uZ2VyIHRyZWF0cyBJbXBvcnRFcnJvciBhcyBlcXVpdmFsZW50IHRvIFNraXBUZXN0LiAgSW1wb3J0cworICB0aGF0IHNob3VsZCBjYXVzZSBhIHRlc3QgdG8gYmUgc2tpcHBlZCBhcmUgbm93IGRvbmUgdXNpbmcgaW1wb3J0X21vZHVsZQorICBmcm9tIHRlc3Qgc3VwcG9ydCwgd2hpY2ggZG9lcyB0aGUgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjNTA4MzogTmV3ICdndWknIHJlc291cmNlIGZvciByZWdydGVzdC4KKworCitEb2NzCistLS0tCisKKwogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4wIGZpbmFsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCmluZGV4IGE0NmJjYzcuLjdhNzIwYzEgMTAwNjQ0Ci0tLSBhL01pc2MvTkVXUworKysgYi9NaXNjL05FV1MKQEAgLTIsMTAgKzIsMTIgQEAKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuNAotPT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4xPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSpSZWxlYXNlIGRhdGU6IFhYLVhYLVhYWFgqCisqTm90IHlldCByZWxlYXNlZCwgc2VlIHNlY3Rpb25zIGJlbG93IGZvciBjaGFuZ2VzIHJlbGVhc2VkIGluIDMuMy4wKgorCisuLiAqUmVsZWFzZSBkYXRlOiBYWC1YWFgtMjAxMioKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMyw5ICsxNSwyMiBAQAogLSBJc3N1ZSAjMTQ4NTA6IE5vdyBhIGNoYXJtYXAgZGVjb2RlciB0cmVhdHMgVStGRkZFIGFzICJ1bmRlZmluZWQgbWFwcGluZyIKICAgaW4gYW55IG1hcHBpbmcsIG5vdCBvbmx5IGluIGEgc3RyaW5nLgogCistIElzc3VlICMxNjczMDogaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIG5vdyBubyBsb25nZXJzIHJhaXNlcyBhbgorICBleGNlcHRpb24gd2hlbiB0cnlpbmcgdG8gcG9wdWxhdGUgaXRzIGNhY2hlIGFuZCBpdCBmaW5kcyBvdXQgdGhlIGRpcmVjdG9yeSBpcworICB1bnJlYWRhYmxlIG9yIGhhcyB0dXJuZWQgaW50byBhIGZpbGUuIFJlcG9ydGVkIGFuZCBkaWFnbm9zZWQgYnkKKyAgRGF2aWQgUHJpdGNoYXJkLgorCistIElzc3VlICMxNjkwNjogRml4IGEgbG9naWMgZXJyb3IgdGhhdCBwcmV2ZW50ZWQgbW9zdCBzdGF0aWMgc3RyaW5ncyBmcm9tIGJlaW5nCisgIGNsZWFyZWQuCisKIC0gSXNzdWUgIzExNDYxOiBGaXggdGhlIGluY3JlbWVudGFsIFVURi0xNiBkZWNvZGVyLiBPcmlnaW5hbCBwYXRjaCBieQogICBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KIAorLSBJc3N1ZSAjMTY4ODE6IEZpeCBQeV9BUlJBWV9MRU5HVEggbWFjcm8gZm9yIEdDQyA8IDMuMS4KKworLSBJc3N1ZSAjMTY4NTY6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBmcm9tIGNhbGxpbmcgcmVwcigpIG9uIGEgZGljdCB3aXRoCisgIGEga2V5IHdob3NlIHJlcHIgcmFpc2UgYW4gZXhjZXB0aW9uLgorCiAtIElzc3VlICMxNjM2NzogRml4IEZpbGVJTy5yZWFkYWxsKCkgb24gV2luZG93cyBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQi4KIAogLSBJc3N1ZSAjMTY0NTU6IE9uIEZyZWVCU0QgYW5kIFNvbGFyaXMsIGlmIHRoZSBsb2NhbGUgaXMgQywgdGhlCkBAIC0zMyw2ICs0OCwxMiBAQAogLSBJc3N1ZSAjMTQ0MjA6IFN1cHBvcnQgdGhlIGZ1bGwgRFdPUkQgKHVuc2lnbmVkIGxvbmcpIHJhbmdlIGluIFB5MlJlZwogICB3aGVuIHBhc3NlZCBhIFJFR19EV09SRCB2YWx1ZS4gRml4ZXMgT3ZlcmZsb3dFcnJvciBpbiB3aW5yZWcuU2V0VmFsdWVFeC4KIAorLSBJc3N1ZSAjMTY1OTc6IEluIGJ1ZmZlcmVkIGFuZCB0ZXh0IElPLCBjYWxsIGNsb3NlKCkgb24gdGhlIHVuZGVybHlpbmcgc3RyZWFtCisgIGlmIGludm9raW5nIGZsdXNoKCkgZmFpbHMuCisKKy0gSXNzdWUgIzE2NzIyOiBJbiB0aGUgYnl0ZXMoKSBjb25zdHJ1Y3RvciwgdHJ5IHRvIGNhbGwgX19ieXRlc19fIG9uIHRoZQorICBhcmd1bWVudCBiZWZvcmUgX19pbmRleF9fLgorCiAtIElzc3VlICMxNjYwMjogV2hlbiBhIHdlYWtyZWYncyB0YXJnZXQgd2FzIHBhcnQgb2YgYSBsb25nIGRlYWxsb2NhdGlvbgogICBjaGFpbiwgdGhlIG9iamVjdCBjb3VsZCByZW1haW4gcmVhY2hhYmxlIHRocm91Z2ggaXRzIHdlYWtyZWYgZXZlbiB0aG91Z2gKICAgaXRzIHJlZmNvdW50IGhhZCBkcm9wcGVkIHRvIHplcm8uCkBAIC00MywyMiArNjQsMzMgQEAKICAgaW5jb25zaXN0ZW5jaWVzIHdpdGggb3MuZnNlbmNvZGUoKSBhbmQgb3MuZnNkZWNvZGUoKSBmdW5jdGlvbnMgd2hpY2ggYXJlCiAgIGFscmVhZHkgdXNpbmcgVVRGLTgvc3Vycm9nYXRlZXNjYXBlLgogCi0tIElzc3VlICMxNjU4ODogU2lsZW5jZSB1bnVzZWQtYnV0LXNldCB3YXJuaW5ncyBpbiBQeXRob24vdGhyZWFkX3B0aHJlYWQuaAorLSBJc3N1ZSAjMTY1ODg6IFNpbGVuY2UgdW51c2VkLWJ1dC1zZXQgd2FybmluZ3MgaW4gUHl0aG9uL3RocmVhZF9wdGhyZWFkCisKKy0gSXNzdWUgIzE2NTQ2OiBGaXg6IGFzdC5ZaWVsZEZyb20gYXJndW1lbnQgaXMgbm93IG1hbmRhdG9yeS4KKworLSBJc3N1ZSAjMTY1MTQ6IEZpeCByZWdyZXNzaW9uIGNhdXNpbmcgYSB0cmFjZWJhY2sgd2hlbiBzeXMucGF0aFswXSBpcyBOb25lCisgIChhY3R1YWxseSwgYW55IG5vbi1zdHJpbmcgb3Igbm9uLWJ5dGVzIHR5cGUpLgogCiAtIElzc3VlICMxNjMwNjogRml4IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIHdoZW4gdW5rbm93biBjb21tYW5kIGxpbmUKICAgcGFyYW1ldGVycyB3aGVyZSBwYXNzZWQgdG8gdGhlIGludGVycHJldGVyLiAgUGF0Y2ggYnkgSGlldSBOZ3V5ZW4uCiAKKy0gSXNzdWUgIzE2MjE1OiBGaXggcG90ZW50aWFsIGRvdWJsZSBtZW1vcnkgZnJlZSBpbiBzdHIucmVwbGFjZSgpLiAgUGF0Y2gKKyAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKwogLSBJc3N1ZSAjMTY0NTM6IEZpeCBlcXVhbGl0eSB0ZXN0aW5nIG9mIGRlYWQgd2Vha3JlZiBvYmplY3RzLgogCiAtIElzc3VlICM5NTM1OiBGaXggcGVuZGluZyBzaWduYWxzIHRoYXQgaGF2ZSBiZWVuIHJlY2VpdmVkIGJ1dCBub3QgeWV0CiAgIGhhbmRsZWQgYnkgUHl0aG9uIHRvIG5vdCBwZXJzaXN0IGFmdGVyIG9zLmZvcmsoKSBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KIAotLSBJc3N1ZSAjMTUwMDE6IGZpeCBzZWdmYXVsdCBvbiAiZGVsIHN5cy5tb2R1bGVbJ19fbWFpbl9fJ10iLiBQYXRjaCBieSBWaWN0b3IKKy0gSXNzdWUgIzE1MDAxOiBmaXggc2VnZmF1bHQgb24gImRlbCBzeXMubW9kdWxlc1snX19tYWluX18nXSIuIFBhdGNoIGJ5IFZpY3RvcgogICBTdGlubmVyLgogCi0tIElzc3VlICM1MDU3OiB0aGUgcGVlcGhvbGVyIG5vIGxvbmdlciBvcHRpbWl6ZXMgc3Vic2NyaXB0aW9uIG9uIHVuaWNvZGUKLSAgbGl0ZXJhbHMgKGUuZy4gdSdmb28nWzBdKSBpbiBvcmRlciB0byBwcm9kdWNlIGNvbXBhdGlibGUgcHljIGZpbGVzIGJldHdlZW4KLSAgbmFycm93IGFuZCB3aWRlIGJ1aWxkcy4KKy0gSXNzdWUgIzgyNzE6IHRoZSB1dGYtOCBkZWNvZGVyIG5vdyBvdXRwdXRzIHRoZSBjb3JyZWN0IG51bWJlciBvZiBVK0ZGRkQKKyAgY2hhcmFjdGVycyB3aGVuIHVzZWQgd2l0aCB0aGUgJ3JlcGxhY2UnIGVycm9yIGhhbmRsZXIgb24gaW52YWxpZCB1dGYtOAorICBzZXF1ZW5jZXMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLCB0ZXN0cyBieSBFemlvIE1lbG90dGkuCisKKy0gSXNzdWUgIzU3NjU6IEFwcGx5IGEgaGFyZCByZWN1cnNpb24gbGltaXQgaW4gdGhlIGNvbXBpbGVyIGluc3RlYWQgb2YKKyAgYmxvd2luZyB0aGUgc3RhY2sgYW5kIHNlZ2ZhdWx0aW5nLiBJbml0aWFsIHBhdGNoIGJ5IEFuZHJlYSBHcmlmZmluaS4KIAogLSBJc3N1ZSAjMTY0MDI6IFdoZW4gc2xpY2luZyBhIHJhbmdlLCBmaXggc2hhZG93aW5nIG9mIGV4Y2VwdGlvbnMgZnJvbQogICBfX2luZGV4X18uCkBAIC02OSwxNCArMTAxLDIwIEBACiAtIElzc3VlICM4NDAxOiBhc3NpZ25pbmcgYW4gaW50IHRvIGEgYnl0ZWFycmF5IHNsaWNlIChlLmcuIGJbMzo0XSA9IDUpIG5vdwogICByYWlzZXMgYW4gZXJyb3IuCiAKKy0gRml4IHNlZ2ZhdWx0cyBvbiBzZXR0aW5nIF9fcXVhbG5hbWVfXyBvbiBidWlsdGluIHR5cGVzIGFuZCBhdHRlbXB0aW5nIHRvCisgIGRlbGV0ZSBpdCBvbiBhbnkgdHlwZS4KKwogLSBJc3N1ZSAjMTYzNDU6IEZpeCBhbiBpbmZpbml0ZSBsb29wIHdoZW4gYGBmcm9ta2V5c2BgIG9uIGEgZGljdCBzdWJjbGFzcwogICByZWNlaXZlZCBhIG5vbmVtcHR5IGRpY3QgZnJvbSB0aGUgY29uc3RydWN0b3IuCiAKKy0gSXNzdWUgIzE2MjcxOiBGaXggc3RyYW5nZSBidWdzIHRoYXQgcmVzdWx0ZWQgZnJvbSBfX3F1YWxuYW1lX18gYXBwZWFyaW5nIGluIGEKKyAgY2xhc3MncyBfX2RpY3RfXyBhbmQgb24gdHlwZS4KKwogLSBJc3N1ZSAjMTYxOTc6IFVwZGF0ZSB3aW5yZWcgZG9jc3RyaW5ncyBhbmQgZG9jdW1lbnRhdGlvbiB0byBtYXRjaCBjb2RlLgogICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCiAKLS0gSXNzdWUgIzE0NzAwOiBGaXggYnVnZ3kgb3ZlcmZsb3cgY2hlY2tzIHdoZW4gaGFuZGxpbmcgbGFyZ2UgcHJlY2lzaW9ucyBhbmQKLSAgd2lkdGhzIGluIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGZvcm1hdHRpbmcuCistIElzc3VlICMxNjI0MTogRG9jdW1lbnQgLVggZmF1bHRoYW5kbGVyIGNvbW1hbmQgbGluZSBvcHRpb24uCisgIFBhdGNoIGJ5IE1hcmVrIMWgdXBwYS4KIAogLSBJc3N1ZSAjNjA3NDogRW5zdXJlIGNhY2hlZCBieXRlY29kZSBmaWxlcyBjYW4gYWx3YXlzIGJlIHVwZGF0ZWQgYnkgdGhlCiAgIHVzZXIgdGhhdCBjcmVhdGVkIHRoZW0sIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVhZC1vbmx5LgpAQCAtODQsMTI0ICsxMjIsNDAgQEAKIC0gSXNzdWUgIzE0NzgzOiBJbXByb3ZlIGludCgpIGRvY3N0cmluZyBhbmQgc3dpdGNoIGRvY3N0cmluZ3MgZm9yIHN0cigpLAogICByYW5nZSgpLCBhbmQgc2xpY2UoKSB0byB1c2UgbXVsdGktbGluZSBzaWduYXR1cmVzLgogCistIElzc3VlICMxNjE2MDogU3ViY2xhc3Mgc3VwcG9ydCBub3cgd29ya3MgZm9yIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKwogLSBJc3N1ZSAjMTUzNzk6IEZpeCBwYXNzaW5nIG9mIG5vbi1CTVAgY2hhcmFjdGVycyBhcyBpbnRlZ2VycyBmb3IgdGhlIGNoYXJtYXAKICAgZGVjb2RlciAoYWxyZWFkeSB3b3JraW5nIGFzIHVuaWNvZGUgc3RyaW5ncykuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxMzk5MjogVGhlIHRyYXNoY2FuIG1lY2hhbmlzbSBpcyBub3cgdGhyZWFkLXNhZmUuICBUaGlzIGVsaW1pbmF0ZXMKLSAgc3BvcmFkaWMgY3Jhc2hlcyBpbiBtdWx0aS10aHJlYWQgcHJvZ3JhbXMgd2hlbiBzZXZlcmFsIGxvbmcgZGVhbGxvY2F0b3IKLSAgY2hhaW5zIHJhbiBjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyCi0gIHR5cGVzLgorLSBJc3N1ZSAjMTUxNDQ6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gaGFuZGxpbmcgcG9pbnRlcnMgYXMgaW50ZWdlcgorICB2YWx1ZXMsIGJ5IHVzaW5nIGBQeV91aW50cHRyX3RgIGluc3RlYWQgb2YgYHNpemVfdGAuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTg0NjogRml4IFN5c3RlbUVycm9yIHdoaWNoIGhhcHBlbmVkIHdoZW4gdXNpbmcgYXN0LnBhcnNlIGluIGFuCistIElzc3VlICMxNTk2NTogRXhwbGljaXRseSBjYXN0IGBBVF9GRENXRGAgYXMgKGludCkuICBSZXF1aXJlZCBvbiBTb2xhcmlzIDEwCisgICh3aGljaCBkZWZpbmVzIGBBVF9GRENXRGAgYXMgYGAweGZmZDE5NTUzYGApLCBoYXJtbGVzcyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE1ODM5OiBDb252ZXJ0IFN5c3RlbUVycm9ycyBpbiBgc3VwZXIoKWAgdG8gUnVudGltZUVycm9ycy4KKworLSBJc3N1ZSAjMTU4NDY6IEZpeCBTeXN0ZW1FcnJvciB3aGljaCBoYXBwZW5lZCB3aGVuIHVzaW5nIGBhc3QucGFyc2UoKWAgaW4gYW4KICAgZXhjZXB0aW9uIGhhbmRsZXIgb24gY29kZSB3aXRoIHN5bnRheCBlcnJvcnMuCiAKLS0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBQWVRIT05FWEVDVVRBQkxFIGlzIHNldCBvbiBNYWMgT1MgWC4KLQogLSBJc3N1ZSAjMTU4MDE6IE1ha2Ugc3VyZSBtYXBwaW5ncyBwYXNzZWQgdG8gJyUnIGZvcm1hdHRpbmcgYXJlIGFjdHVhbGx5CiAgIHN1YnNjcmlwdGFibGUuCiAKLS0gSXNzdWUgIzE1NzI2OiBGaXggaW5jb3JyZWN0IGJvdW5kcyBjaGVja2luZyBpbiBQeVN0YXRlX0ZpbmRNb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKy0gSXNzdWUgIzE1MTExOiBfX2ltcG9ydF9fIHNob3VsZCBsZXQgSW1wb3J0RXJyb3IgcHJvcGFnYXRlIHdoZW4gYSBtb2R1bGUgdGhhdAorICBpcyBpbXBvcnRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHVzaW5nIGZyb21saXN0IHRyaWVzIHRvIGltcG9ydCBhIG1vZHVsZQorICB0aGF0IGNhbm5vdCBiZSBmb3VuZC4KIAotLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCi0gIGVycm9ycyBjb3JyZWN0bHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzExOTogc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCi0gIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgotCi0tIElzc3VlICMxNDU3OTogRml4IENWRS0yMDEyLTIxMzU6IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHV0Zi0xNiBkZWNvZGVyIGFmdGVyCi0gIGVycm9yIGhhbmRsaW5nLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KLQotLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIFB5TW9kdWxlX0NyZWF0ZSB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvCi0gIGJlIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgotCi0tIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZQotICBub24tZGV0ZXJtaW5pc3RpYyB3aGVuIHVzaW5nIHJhbmRvbWl6ZWQgaGFzaGluZyAoLVIpIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNjM2OTogR2xvYmFsIFB5VHlwZU9iamVjdHMgbm90IGluaXRpYWxpemVkIHdpdGggUHlUeXBlX1JlYWR5KC4uLikuCi0KLS0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdwotICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgotCi0tIElzc3VlICMxNTg5NzogemlwaW1wb3J0LmMgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgZnNlZWsoKS4KLSAgUGF0Y2ggYnkgRmVsaXBlIENydXouCi0KLS0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0Y2gsCi0gIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCi0gIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCi0gIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgotICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgotCi0tIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwotICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQotICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzE0NzYxOiBGaXggcG90ZW50aWFsIGxlYWsgb24gYW4gZXJyb3IgY2FzZSBpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4KLSAgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgotICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCi0KLS0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCi0gIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLQotLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKLSAgd2l0aCB2YWx1ZSAwLgotCi0tIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCi0KLS0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgotCi0tIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCi0gIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCi0gIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCi0KLS0gSXNzdWUgIzE0NDc0OiBTYXZlIGFuZCByZXN0b3JlIGV4Y2VwdGlvbiBzdGF0ZSBpbiB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpCi0gIHdoaWxlIHdyaXRpbmcgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdGhyZWFkIGxlYXZlcyBhIHVuaGFuZGxlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEzMDE5OiBGaXggcG90ZW50aWFsIHJlZmVyZW5jZSBsZWFrcyBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaAotICBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcwotICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgotCi0tIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5Ci0gIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgotCi0tIElzc3VlICMxNDMzNDogUHJldmVudCBpbiBhIHNlZ2ZhdWx0IGluIHR5cGUuX19nZXRhdHRyaWJ1dGVfXyB3aGVuIGl0IHdhcyBub3QKLSAgcGFzc2VkIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKLSAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCi0KLS0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAotICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCi0KLS0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCi0gIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KIAogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxNjk5MjogT24gV2luZG93cyBpbiBzaWduYWwuc2V0X3dha2V1cF9mZCwgdmFsaWRhdGUgdGhlIGZpbGUKKyAgZGVzY3JpcHRvciBhcmd1bWVudC4KKworLSBJc3N1ZSAjMTY0MjI6IEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFB5dGhvbiB2ZXJzaW9uLCB0aGUgQyB2ZXJzaW9uIG9mCisgIGRlY2ltYWwgbm93IHVzZXMgc3RyaW5ncyBpbnN0ZWFkIG9mIGludGVnZXJzIGZvciByb3VuZGluZyBtb2RlIGNvbnN0YW50cy4KKwogLSBJc3N1ZSAjMTU4NjE6IHRraW50ZXIgbm93IGNvcnJlY3RseSB3b3JrcyB3aXRoIGxpc3RzIGFuZCB0dXBsZXMgY29udGFpbmluZwogICBzdHJpbmdzIHdpdGggd2hpdGVzcGFjZXMsIGJhY2tzbGFzaGVzIG9yIHVuYmFsYW5jZWQgYnJhY2VzLgogCkBAIC0yMTAsOSArMTY0LDE2IEBACiAtIElzc3VlICM5NzIwOiB6aXBmaWxlIG5vdyB3cml0ZXMgY29ycmVjdCBsb2NhbCBoZWFkZXJzIGZvciBmaWxlcyBsYXJnZXIgdGhhbgogICA0IEdpQi4KIAorLSBJc3N1ZSAjMTY5NTU6IEZpeCB0aGUgcG9sbCgpIG1ldGhvZCBmb3IgbXVsdGlwcm9jZXNzaW5nJ3Mgc29ja2V0CisgIGNvbm5lY3Rpb25zIG9uIFdpbmRvd3MuCisKKy0gU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG5vdyBwcm9wZXJseSBjbG9zZXMgdGhlIGlucHV0IGZpbGUuCisKIC0gSXNzdWUgIzE2ODI5OiBJRExFIHByaW50aW5nIG5vIGxvbmdlciBmYWlscyBpZiB0aGVyZSBhcmUgc3BhY2VzIG9yIG90aGVyCiAgIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBwYXRoLgogCistIElzc3VlICMxNjkwMDogSXNzdWUgYSBSZXNvdXJjZVdhcm5pbmcgd2hlbiBhbiBzc2wgc29ja2V0IGlzIGxlZnQgdW5jbG9zZWQuCisKIC0gSXNzdWUgIzEzODk5OiBcQSwgXFosIGFuZCBcQiBub3cgY29ycmVjdGx5IG1hdGNoIHRoZSBBLCBaLCBhbmQgQiBsaXRlcmFscwogICB3aGVuIHVzZWQgaW5zaWRlIGNoYXJhY3RlciBjbGFzc2VzIChlLmcuICdbXEFdJykuICBQYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCiAKQEAgLTIyMiw4ICsxODMsMTEgQEAKIAogLSBJc3N1ZSAjMTY0OTE6IElETEUgbm93IHByaW50cyBjaGFpbmVkIGV4Y2VwdGlvbiB0cmFjZWJhY2tzLgogCi0tIElzc3VlICMxNjgyODogRml4IGVycm9yIGluY29ycmVjdGx5IHJhaXNlZCBieSBiejIuY29tcHJlc3MoJycpLiBQYXRjaCBieQotICBNYXJ0aW4gUGFja21hbi4KKy0gSXNzdWUgIzE1OTcyOiBGaXggZXJyb3IgbWVzc2FnZXMgd2hlbiBvcyBmdW5jdGlvbnMgZXhwZWN0aW5nIGEgZmlsZSBuYW1lIG9yCisgIGZpbGUgZGVzY3JpcHRvciByZWNlaXZlIHRoZSBpbmNvcnJlY3QgdHlwZS4KKworLSBJc3N1ZSAjMTY4Mjg6IEZpeCBlcnJvciBpbmNvcnJlY3RseSByYWlzZWQgYnkgYnoyLmNvbXByZXNzKGInJykgYW5kCisgIGJ6Mi5CWjJDb21wcmVzc29yLmNvbXByZXNzKGInJykuIEluaXRpYWwgcGF0Y2ggYnkgTWFydGluIFBhY2ttYW4uCiAKIC0gSXNzdWUgIzE2NTQxOiB0a19zZXRQYWxldHRlKCkgbm93IHdvcmtzIHdpdGgga2V5d29yZCBhcmd1bWVudHMuCiAKQEAgLTIzNCw5ICsxOTgsOSBAQAogICBzZWN0aW9uIG9yZGVyIHdpdGhpbiB0aGUgcGFyc2VyLiBUaGlzIG1ha2VzIGBwYXJzZXIudXBkYXRlKClgIHByZXNlcnZlIHNlY3Rpb24KICAgb3JkZXIgYXMgd2VsbC4KIAotLSBJc3N1ZSAjOTY0NDogRml4IHRoZSBlbmNvZGluZyB1c2VkIGJ5IG9zLnN0YXR2ZnMoKTogdXNlIHRoZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIHdpdGggdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLCBpbnN0ZWFkIG9mIFVURi04IGluIHN0cmljdAotICBtb2RlLgorLSBJc3N1ZSAjMTY4MjA6IEluIGNvbmZpZ3BhcnNlciwgYGBwYXJzZXJbJ0RFRkFVTFQnXSA9IHt9YGAgbm93IGNvcnJlY3RseQorICBjbGVhcnMgcHJldmlvdXMgdmFsdWVzIHN0b3JlZCBpbiB0aGUgZGVmYXVsdCBzZWN0aW9uLiBTYW1lIGdvZXMgZm9yCisgIGBgcGFyc2VyLnVwZGF0ZSh7J0RFRkFVTFQnOiB7fX0pYGAuCiAKIC0gSXNzdWUgIzE2ODE5OiBJRExFIG1ldGhvZCBjb21wbGV0aW9uIG5vdyBjb3JyZWN0bHkgd29ya3MgZm9yIGJ5dGVzIGxpdGVyYWxzLgogCkBAIC0yNDQsOSArMjA4LDE4IEBACiAKIC0gSXNzdWUgIzEwNTI3OiBtYWtlIG11bHRpcHJvY2Vzc2luZyB1c2UgcG9sbCgpIGluc3RlYWQgb2Ygc2VsZWN0KCkgaWYgYXZhaWxhYmxlLgogCistIElzc3VlICMxNjY4ODogTm93IHJlZ2V4ZXMgY29udGFpbmVkIGJhY2tyZWZlcmVuY2VzIGNvcnJlY3RseSB3b3JrIHdpdGgKKyAgbm9uLUFTQ0lJIHN0cmluZ3MuICBQYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCisKIC0gSXNzdWUgIzE2NDg1OiBOb3cgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xvc2VkIGlmIGZpbGUgaGVhZGVyIHBhdGNoaW5nIGZhaWxlZAogICBvbiBjbG9zaW5nIGFuIGFpZmMgZmlsZS4KIAorLSBJc3N1ZSAjMTYxNjU6IHNjaGVkLnNjaGVkdWxlci5ydW4oKSBubyBsb25nZXIgYmxvY2tzIGEgc2NoZWR1bGVyIGZvciBvdGhlcgorICB0aHJlYWRzLgorCistIElzc3VlICMxNjY0MTogRGVmYXVsdCB2YWx1ZXMgb2Ygc2NoZWQuc2NoZWR1bGVyLmVudGVyKCkgYXJlIG5vIGxvbmdlcgorICBtb2RpZmlhYmxlLgorCiAtIElzc3VlICMxNjUwNDogSURMRSBub3cgY2F0Y2hlcyBTeW50YXhFcnJvcnMgcmFpc2VkIGJ5IHRva2VuaXplci4gUGF0Y2ggYnkKICAgUm9nZXIgU2Vyd3kuCiAKQEAgLTI2Nyw2ICsyNDAsOCBAQAogCiAtIElzc3VlICMxNTcwMTogRml4IEhUVFBFcnJvciBpbmZvIG1ldGhvZCBjYWxsIHRvIHJldHVybiB0aGUgaGVhZGVycyBpbmZvcm1hdGlvbi4KIAorLSBJc3N1ZSAjMTY3NTI6IEFkZCBhIG1pc3NpbmcgaW1wb3J0IHRvIG1vZHVsZWZpbmRlci4gUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKwogLSBJc3N1ZSAjMTY2NDY6IGZ0cGxpYi5GVFAubWFrZXBvcnQoKSBtaWdodCBsb3NlIHNvY2tldCBlcnJvciBkZXRhaWxzLgogICAocGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYSkKIApAQCAtMjc0LDEwICsyNDksMTggQEAKICAgcGF0dGVybiBjb250YWlucyBhIHdpbGRjYXJkIGluIHRoZSBkcml2ZSBvciBVTkMgcGF0aC4gIFBhdGNoIGJ5IFNlcmhpeQogICBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzE1NzgzOiBFeGNlcHQgZm9yIHRoZSBudW1iZXIgbWV0aG9kcywgdGhlIEMgdmVyc2lvbiBvZiBkZWNpbWFsIG5vdworICBzdXBwb3J0cyBhbGwgTm9uZSBkZWZhdWx0IHZhbHVlcyBwcmVzZW50IGluIGRlY2ltYWwucHkuIFRoZXNlIHZhbHVlcyB3ZXJlCisgIGxhcmdlbHkgdW5kb2N1bWVudGVkLgorCiAtIElzc3VlICMxNjI5ODogSW4gSFRUUFJlc3BvbnNlLnJlYWQoKSwgY2xvc2UgdGhlIHNvY2tldCB3aGVuIHRoZXJlIGlzIG5vCiAgIENvbnRlbnQtTGVuZ3RoIGFuZCB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIGZpbmlzaGVkLiAgUGF0Y2ggYnkgRXJhbgogICBSdW5kc3RlaW4uCiAKKy0gSXNzdWUgIzE1ODcyOiBGaXggMy4zIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSB0aGUgbmV3IGZkLWJhc2VkIHNodXRpbC5ybXRyZWUKKyAgdGhhdCBjYXVzZWQgaXQgdG8gbm90IGlnbm9yZSBjZXJ0YWluIGVycm9ycyB3aGVuIGlnbm9yZV9lcnJvcnMgd2FzIHNldC4KKyAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYSBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KKwogLSBJc3N1ZSAjMTYyNDg6IERpc2FibGUgY29kZSBleGVjdXRpb24gZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IGJ5CiAgIHRraW50ZXIgd2hlbiB0aGUgLUUgZmxhZyBpcyBwYXNzZWQgdG8gUHl0aG9uLiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgogCkBAIC0yOTUsNiArMjc4LDkgQEAKIC0gSXNzdWUgIzEzMTIwOiBBbGxvdyB0byBjYWxsIHBkYi5zZXRfdHJhY2UoKSBmcm9tIHRocmVhZC4KICAgUGF0Y2ggYnkgSWx5YSBTYW5kbGVyLgogCistIElzc3VlICMxNjU4NTogTWFrZSBDSksgZW5jb2RlcnMgc3VwcG9ydCBlcnJvciBoYW5kbGVycyB0aGF0IHJldHVybiBieXRlcyBwZXIKKyAgUEVQIDM4My4KKwogLSBJc3N1ZSAjMTAxODI6IFRoZSByZSBtb2R1bGUgZG9lc24ndCB0cnVuY2F0ZSBpbmRpY2VzIHRvIDMyIGJpdHMgYW55bW9yZS4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIApAQCAtMzExLDE1ICsyOTcsMTEgQEAKICAgbGVuZ3RocyBhcyB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlcnMsIGxpa2UgdGhlIEMgaW1wbGVtZW50YXRpb24gZG9lcy4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTE2MDogRml4IGNvbXBpbGluZyBsYXJnZSByZWd1bGFyIGV4cHJlc3Npb25zIG9uIFVDUzIgYnVpbGRzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNDMxMzogemlwZmlsZSBub3cgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiB0aGUgY29tcHJlc3Npb24KLSAgdHlwZSBpcyB1bmtub3duLgotCiAtIElzc3VlICMxNjQwODogRml4IGZpbGUgZGVzY3JpcHRvcnMgbm90IGJlaW5nIGNsb3NlZCBpbiBlcnJvciBjb25kaXRpb25zCiAgIGluIHRoZSB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzE2NDgxOiBtdWx0aXByb2Nlc3Npbmcgbm8gbG9uZ2VyIGxlYWtzIHByb2Nlc3MgaGFuZGxlcyBvbiBXaW5kb3dzLgorCiAtIElzc3VlICMxNjE0MDogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vIGxvbmdlciBkb3VibGUgY2xvc2VzIGl0cyBjaGlsZAogICBzdWJwcm9jZXNzLlBJUEUgcGFyZW50IGZpbGUgZGVzY3JpcHRvcnMgb24gY2hpbGQgZXJyb3IgcHJpb3IgdG8gZXhlYygpLgogCkBAIC0zMzgsNiArMzIwLDE0IEBACiAtIElzc3VlICMxNjM1NzogZml4IGNhbGxpbmcgYWNjZXB0KCkgb24gYSBTU0xTb2NrZXQgY3JlYXRlZCB0aHJvdWdoCiAgIFNTTENvbnRleHQud3JhcF9zb2NrZXQoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEplZmYgTWNOZWlsLgogCistIElzc3VlICMxNjQwOTogVGhlIHJlcG9ydGhvb2sgY2FsbGJhY2sgbWFkZSBieSB0aGUgbGVnYWN5CisgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlIEFQSSBub3cgcHJvcGVybHkgc3VwcGxpZXMgYSBjb25zdGFudCBub24temVybworICBibG9ja19zaXplIGFzIGl0IGRpZCBpbiBQeXRob24gMy4yIGFuZCAyLjcuICBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mCisgIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lci5yZXRyaWV2ZS4KKworLSBJc3N1ZSAjMTY0MzE6IFVzZSB0aGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIGNvbnN0cnVjdGluZyBhIERlY2ltYWwgc3VidHlwZQorICBmcm9tIGEgRGVjaW1hbCBhcmd1bWVudC4KKwogLSBJc3N1ZSAjMTYzNTA6IHpsaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgYWNjdW11bGF0ZXMgZGF0YSBmcm9tCiAgIHN1Y2Nlc3NpdmUgY2FsbHMgYWZ0ZXIgRU9GIGluIHVudXNlZF9kYXRhLCBpbnN0ZWFkIG9mIG9ubHkgc2F2aW5nIHRoZSBhcmd1bWVudAogICB0byB0aGUgbGFzdCBjYWxsLiBkZWNvbXByZXNzb2JqKCkuZmx1c2goKSBub3cgY29ycmVjdGx5IHNldHMgdW51c2VkX2RhdGEgYW5kCkBAIC0zNjUsMTAgKzM1NSwxNSBAQAogLSBJc3N1ZSAjMTI4OTA6IGNnaXRiIG5vIGxvbmdlciBwcmludHMgc3B1cmlvdXMgPHA+IHRhZ3MgaW4gdGV4dAogICBtb2RlIHdoZW4gdGhlIGxvZ2RpciBvcHRpb24gaXMgc3BlY2lmaWVkLgogCistIElzc3VlICMxNjMwNzogRml4IG11bHRpcHJvY2Vzc2luZy5Qb29sLm1hcF9hc3luYyBub3QgY2FsbGluZyBpdHMgY2FsbGJhY2tzLgorICBQYXRjaCBieSBKYW5uZSBLYXJpbGEuCisKIC0gSXNzdWUgIzE2MjUwOiBGaXggVVJMRXJyb3IgaW52b2NhdGlvbiB3aXRoIHByb3BlciBhcmdzLgogCi0tIElzc3VlICMxNjMwNTogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IG9jY3VycmluZyB3aGVuIGludGVycnVwdGluZwotICBtYXRoLmZhY3RvcmlhbC4KKy0gSXNzdWUgIzE2MTE2OiBGaXggaW5jbHVkZSBhbmQgbGlicmFyeSBwYXRocyB0byBiZSBjb3JyZWN0IHdoZW4gYnVpbGRpbmcgQworICBleHRlbnNpb25zIGluIHZlbnZzLgorCistIElzc3VlICMxNjI0NTogRml4IHRoZSB2YWx1ZSBvZiBhIGZldyBlbnRpdGllcyBpbiBodG1sLmVudGl0aWVzLmh0bWw1LgogCiAtIElzc3VlICMxNDM5ODogRml4IHNpemUgdHJ1bmNhdGlvbiBhbmQgb3ZlcmZsb3cgYnVncyBpbiB0aGUgYnoyIG1vZHVsZS4KIApAQCAtMzgzLDk0ICszNzgsOTM4IEBACiAKIC0gSXNzdWUgIzE2MTc2OiBQcm9wZXJseSBpZGVudGlmeSBXaW5kb3dzIDggdmlhIHBsYXRmb3JtLnBsYXRmb3JtKCkKIAotLSBJc3N1ZSAjMTYxMTQ6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgcHJvdmlkZXMgYSBtaXNsZWFkaW5nCi0gIGVycm9yIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IGFyZ3NbMF0gZGlkIG5vdCBleGlzdCB3aGVuIGVpdGhlciB0aGUgY3dkIG9yCi0gIGV4ZWN1dGFibGUga2V5d29yZCBhcmd1bWVudHMgc3BlY2lmaWVkIGEgcGF0aCB0aGF0IGRpZCBub3QgZXhpc3QuCistIElzc3VlICMxNjExNDogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vIGxvbmdlciBwcm92aWRlcyBhIG1pc2xlYWRpbmcgZXJyb3IKKyAgbWVzc2FnZSBzdGF0aW5nIHRoYXQgYXJnc1swXSBkaWQgbm90IGV4aXN0IHdoZW4gZWl0aGVyIHRoZSBjd2Qgb3IgZXhlY3V0YWJsZQorICBrZXl3b3JkIGFyZ3VtZW50cyBzcGVjaWZpZWQgYSBwYXRoIHRoYXQgZGlkIG5vdCBleGlzdC4KIAotLSBJc3N1ZSAjMTU3NTY6IHN1YnByb2Nlc3MucG9sbCgpIG5vdyBwcm9wZXJseSBoYW5kbGVzIGVycm5vLkVDSElMRCB0bwotICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdAotICBiZSB3YWl0ZWQgb24uCistIElzc3VlICMxNjE2OTogRml4IGN0eXBlcy5XaW5FcnJvcigpJ3MgY29uZnVzaW9uIGJldHdlZW4gZXJybm8gYW5kIHdpbmVycm9yLgogCi0tIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIFRleHRUZXN0UmVzdWx0Ll9faW5pdF9fIHN1cGVyIGNhbGwKKy0gSXNzdWUgIzE2MDc2OiBNYWRlIF9lbGVtZW50dHJlZS5FbGVtZW50IHBpY2tsZWFibGUgaW4gYSB3YXkgdGhhdCBpcyBjb21wYXRpYmxlCisgIHdpdGggdGhlIFB5dGhvbiBFbGVtZW50LiBQaWNrbGluZy91bnBpY2tsaW5nIG9mIHhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50CisgIHdvcmtzIGFnYWluIC0gdGhpcyB3YXMgYSB0ZW1wb3JhcnkgcmVncmVzc2lvbiBmcm9tIDMuMiB3aGVyZSB0aGUgYnktZGVmYXVsdAorICBpbXBvcnRlZCBfZWxlbWVudHRyZWUgaGFkIG5vIHBpY2tsaW5nIGNhcGFiaWxpdHkuCiAKLS0gSXNzdWUgIzE1MjIyOiBJbnNlcnQgYmxhbmsgbGluZSBhZnRlciBlYWNoIG1lc3NhZ2UgaW4gbWJveCBtYWlsYm94ZXMKKy0gSXNzdWUgIzE2MDg5OiBBbGxvdyBFbGVtZW50VHJlZS5UcmVlQnVpbGRlciB0byB3b3JrIGFnYWluIHdpdGggYSBub24tRWxlbWVudAorICBlbGVtZW50X2ZhY3RvcnkgKGZpeGVzIGEgcmVncmVzc2lvbiBpbiBTaW1wbGVUQUwpLgogCi0tIElzc3VlICMxNjAxMzogRml4IENTViBSZWFkZXIgcGFyc2luZyBpc3N1ZSB3aXRoIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXJzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTY5MTM6IEZpeCBFbGVtZW50Lml0ZXJ0ZXh0KCkncyBoYW5kbGluZyBvZiB0ZXh0IHdpdGggWE1MIGVudGl0aWVzLiwKIAotLSBJc3N1ZSAjMTU0MjE6IGZpeCBhbiBPdmVyZmxvd0Vycm9yIGluIENhbGVuZGFyLml0ZXJtb250aGRhdGVzKCkgYWZ0ZXIKLSAgZGF0ZXRpbWUuTUFYWUVBUi4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCi0KLS0gSXNzdWUgIzE1OTcwOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93IHNlcmlhbGl6ZXMgY29ycmVjdGx5IHRoZSBlbXB0eSBIVE1MCi0gIGVsZW1lbnRzICdtZXRhJyBhbmQgJ3BhcmFtJy4KLQotLSBJc3N1ZSAjMTU4NDI6IHRoZSBTb2NrZXRJTy57cmVhZGFibGUsd3JpdGFibGUsc2Vla2FibGV9IG1ldGhvZHMgbm93Ci0gIHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgZmlsZS1saWtlIG9iamVjdCBpcyBjbG9zZWQuICBQYXRjaCBieSBBbGVzc2FuZHJvCi0gIE1vdXJhLgotCi0tIElzc3VlICMxNTg4MTogRml4ZWQgYXRleGl0IGhvb2sgaW4gbXVsdGlwcm9jZXNzaW5nLiAgT3JpZ2luYWwgcGF0Y2gKLSAgYnkgQ2hyaXMgTWNEb25vdWdoLgotCi0tIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIC9kZXYvdXJhbmRvbSBjYW5ub3QKLSAgYmUgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgotCi0tIElzc3VlICMxNTg0MTogVGhlIHJlYWRhYmxlKCksIHdyaXRhYmxlKCkgYW5kIHNlZWthYmxlKCkgbWV0aG9kcyBvZiBCeXRlc0lPCi0gIGFuZCBTdHJpbmdJTyBvYmplY3RzIG5vdyByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIG9iamVjdCBoYXMgYmVlbiBjbG9zZWQuCi0gIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCi0KLS0gSXNzdWUgIzE1NTA5OiB3ZWJicm93c2VyLlVuaXhCcm93c2VyIG5vIGxvbmdlciBwYXNzZXMgZW1wdHkgYXJndW1lbnRzIHRvCi0gIFBvcGVuIHdoZW4gJWFjdGlvbiBzdWJzdGl0dXRpb25zIHByb2R1Y2UgZW1wdHkgc3RyaW5ncy4KKy0gSXNzdWUgIzE2MDM0OiBGaXggcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgaW4gdGhlIG5ldyBgYnoyLkJaMkZpbGVgCisgIGltcGxlbWVudGF0aW9uLiAgSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNjExMjogcGxhdGZvcm0uYXJjaGl0ZWN0dXJlIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgYXJndW1lbnQgdG8KICAgL3Vzci9iaW4vZmlsZS4gIFBhdGNoIGJ5IERhdmlkIEJlbmphbWluLgogCi0tIElzc3VlICMxMjc3NiwjMTE4Mzk6IGNhbGwgYXJncGFyc2UgdHlwZSBmdW5jdGlvbiAoc3BlY2lmaWVkIGJ5IGFkZF9hcmd1bWVudCkKLSAgb25seSBvbmNlLiBCZWZvcmUsIHRoZSB0eXBlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgdHdpY2UgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCi0gIGRlZmF1bHQgd2FzIHNwZWNpZmllZCBhbmQgdGhlIGFyZ3VtZW50IHdhcyBnaXZlbiBhcyB3ZWxsLiAgVGhpcyB3YXMKLSAgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBmb3IgdGhlIEZpbGVUeXBlIHR5cGUsIGFzIGEgZGVmYXVsdCBmaWxlIHdvdWxkIGFsd2F5cwotICBiZSBvcGVuZWQsIGV2ZW4gaWYgYSBmaWxlIGFyZ3VtZW50IHdhcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKy0gSXNzdWUgIzE1NzU2OiBgc3VicHJvY2Vzcy5wb2xsKClgIG5vdyBwcm9wZXJseSBoYW5kbGVzIGBlcnJuby5FQ0hJTERgIHRvCisgIHJldHVybiBhIHJldHVybmNvZGUgb2YgMCB3aGVuIHRoZSBjaGlsZCBoYXMgYWxyZWFkeSBleGl0ZWQgb3IgY2Fubm90IGJlIHdhaXRlZAorICBvbi4KIAotLSBJc3N1ZSAjMTU5MDY6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UgY2F1c2VkIGJ5IHRoZSBwcmVjZWRpbmcgY2hhbmdlLAotICB3aGVuIGFjdGlvbj0nYXBwZW5kJywgdHlwZT0nc3RyJyBhbmQgZGVmYXVsdD1bXS4KKy0gSXNzdWUgIzE1MzIzOiBJbXByb3ZlIGZhaWx1cmUgbWVzc2FnZSBvZiBgTW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpYC4KIAotLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcwotICBjb21waWxlZCB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIKKy0gSXNzdWUgIzE2MDY0OiBgYHVuaXR0ZXN0IC1tYGAgY2xhaW1zIGV4ZWN1dGFibGUgaXMgInB5dGhvbiIsIG5vdCAicHl0aG9uMyIuCisKKy0gSXNzdWUgIzEyMzc2OiBQYXNzIG9uIHBhcmFtZXRlcnMgaW4gYFRleHRUZXN0UmVzdWx0Ll9faW5pdF9fKClgIHN1cGVyIGNhbGwuCisKKy0gSXNzdWUgIzE1MjIyOiBJbnNlcnQgYmxhbmsgbGluZSBhZnRlciBlYWNoIG1lc3NhZ2UgaW4gbWJveCBtYWlsYm94ZXMuCisKKy0gSXNzdWUgIzE2MDEzOiBGaXggYGNzdi5SZWFkZXJgIHBhcnNpbmcgaXNzdWUgd2l0aCBlbmRpbmcgcXVvdGUgY2hhcmFjdGVycy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0MjE6IEZpeCBhbiBPdmVyZmxvd0Vycm9yIGluIGBDYWxlbmRhci5pdGVybW9udGhkYXRlcygpYCBhZnRlcgorICBgZGF0ZXRpbWUuTUFYWUVBUmAuICBQYXRjaCBieSBDw6lkcmljIEtyaWVyLgorCistIElzc3VlICMxNTk3MDogYHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgbm93IHNlcmlhbGl6ZXMgY29ycmVjdGx5IHRoZSBlbXB0eSBIVE1MCisgIGVsZW1lbnRzICdtZXRhJyBhbmQgJ3BhcmFtJy4KKworLSBJc3N1ZSAjMTU4NDI6IFRoZSBgU29ja2V0SU8ue3JlYWRhYmxlLHdyaXRhYmxlLHNlZWthYmxlfWAgbWV0aG9kcyBub3cgcmFpc2UKKyAgVmFsdWVFcnJvciB3aGVuIHRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCisKKy0gSXNzdWUgIzE1ODc2OiBGaXggYSByZWZsZWFrIGluIHRoZSBgY3Vyc2VzYCBtb2R1bGU6IHdpbmRvdy5lbmNvZGluZy4KKworLSBJc3N1ZSAjMTU4ODE6IEZpeCBgYXRleGl0YCBob29rIGluIGBtdWx0aXByb2Nlc3NpbmdgLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXMKKyAgTWNEb25vdWdoLgorCistIElzc3VlICMxNTg0MTogVGhlIHJlYWRhYmxlKCksIHdyaXRhYmxlKCkgYW5kIHNlZWthYmxlKCkgbWV0aG9kcyBvZgorICBgaW8uQnl0ZXNJT2AgYW5kIGBpby5TdHJpbmdJT2Agb2JqZWN0cyBub3cgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBvYmplY3QKKyAgaGFzIGJlZW4gY2xvc2VkLiAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYS4KKworLSBJc3N1ZSAjMTYxMjY6IFB5RXJyX0Zvcm1hdCBmb3JtYXQgbWlzbWF0Y2ggaW4gX3Rlc3RjYXBpbW9kdWxlLmMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1NDQ3OiBVc2UgYHN1YnByb2Nlc3MuREVWTlVMTGAgaW4gd2ViYnJvd3NlciwgaW5zdGVhZCBvZiBvcGVuaW5nCisgIGBvcy5kZXZudWxsYCBleHBsaWNpdGx5IGFuZCBsZWF2aW5nIGl0IG9wZW4uCisKKy0gSXNzdWUgIzE1NTA5OiBgd2ViYnJvd3Nlci5Vbml4QnJvd3NlcmAgbm8gbG9uZ2VyIHBhc3NlcyBlbXB0eSBhcmd1bWVudHMgdG8KKyAgUG9wZW4gd2hlbiBgYCVhY3Rpb25gYCBzdWJzdGl0dXRpb25zIHByb2R1Y2UgZW1wdHkgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTI3NzYsIGlzc3VlICMxMTgzOTogQ2FsbCBgYXJncGFyc2VgIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieQorICBhZGRfYXJndW1lbnQpIG9ubHkgb25jZS4gIEJlZm9yZSwgdGhlIHR5cGUgZnVuY3Rpb24gd2FzIGNhbGxlZCB0d2ljZSBpbiB0aGUKKyAgY2FzZSB3aGVyZSB0aGUgZGVmYXVsdCB3YXMgc3BlY2lmaWVkIGFuZCB0aGUgYXJndW1lbnQgd2FzIGdpdmVuIGFzIHdlbGwuICBUaGlzCisgIHdhcyBlc3BlY2lhbGx5IHByb2JsZW1hdGljIGZvciB0aGUgRmlsZVR5cGUgdHlwZSwgYXMgYSBkZWZhdWx0IGZpbGUgd291bGQKKyAgYWx3YXlzIGJlIG9wZW5lZCwgZXZlbiBpZiBhIGZpbGUgYXJndW1lbnQgd2FzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICMxNTkwNjogRml4IGEgcmVncmVzc2lvbiBpbiBgYXJncGFyc2VgIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKKyAgd2hlbiBgYGFjdGlvbj0nYXBwZW5kJ2BgLCBgYHR5cGU9J3N0cidgYCBhbmQgYGBkZWZhdWx0PVtdYGAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNjkyMzogRml4IFJlc291cmNlV2FybmluZ3MgaW4gdGVzdF9zc2wuCisKKy0gSXNzdWUgIzE1NTM5OiBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvciBUb29scy9zY3JpcHRzL3BpbmRlbnQucHkuCisKKy0gSXNzdWUgIzE2OTI1OiB0ZXN0X2NvbmZpZ3BhcnNlciBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjkxODogdGVzdF9jb2RlY3Mgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY5MTk6IHRlc3RfY3J5cHQgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY5MTA6IHRlc3RfYnl0ZXMsIHRlc3RfdW5pY29kZSwgYW5kIHRlc3RfdXNlcnN0cmluZyBub3cgd29yayB3aXRoCisgIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjkwNTogdGVzdF93YXJuaW5ncyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgSW5pdGlhbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMxNjg5ODogdGVzdF9idWZpbyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjg4ODogdGVzdF9hcnJheSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjg5NjogdGVzdF9hc3luY29yZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjg5NzogdGVzdF9iaXNlY3Qgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIEluaXRpYWwgcGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjg1MjogdGVzdF9nZW5lcmljcGF0aCwgdGVzdF9wb3NpeHBhdGgsIHRlc3RfbnRwYXRoLCBhbmQgdGVzdF9tYWNwYXRoCisgIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE2NzQ4OiB0ZXN0X2hlYXBxIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorCistIElzc3VlICMxNTMyNDogRml4IHJlZ3J0ZXN0IHBhcnNpbmcgb2YgLS1mcm9tZmlsZSwgLS1tYXRjaCwgYW5kIC0tcmFuZG9taXplCisgIG9wdGlvbnMuCisKKy0gSXNzdWUgIzE2NjY0OiBBZGQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgZ2xvYidzIGJlaGF2aW91ciBjb25jZXJuaW5nIGVudHJpZXMKKyAgc3RhcnRpbmcgd2l0aCBhICIuIi4gIFBhdGNoIGJ5IFNlYmFzdGlhbiBLcmVmdC4KKworLSBJc3N1ZSAjMTY1NTk6IEFkZCBtb3JlIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUsIGluY2x1ZGluZyBzb21lIGZyb20gdGhlCisgIG9mZmljaWFsIHRlc3Qgc3VpdGUgYXQganNvbi5vcmcuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNjY2MTogRml4IHRoZSBgb3MuZ2V0Z3JvdXBsaXN0KClgIHRlc3QgYnkgbm90IGFzc3VtaW5nIHRoYXQgaXQgZ2l2ZXMKKyAgdGhlIHNhbWUgb3V0cHV0IGFzIDpjb21tYW5kOmBpZCAtR2AuCisKKy0gSXNzdWUgIzE2MTE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnQgdG8KKyAgc3VicHJvY2Vzcy5Qb3BlbigpLiAgSW5pdGlhbCBwYXRjaCBieSBLdXNoYWwgRGFzLgorCistIElzc3VlICMxNTMwNDogRml4IHdhcm5pbmcgbWVzc2FnZSB3aGVuIGBvcy5jaGRpcigpYCBmYWlscyBpbnNpZGUKKyAgYHRlc3Quc3VwcG9ydC50ZW1wX2N3ZCgpYC4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTgwMjogRml4IHRlc3QgbG9naWMgaW4gYFRlc3RNYWlsZGlyLnRlc3RfY3JlYXRlX3RtcCgpYC4gUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU1NTc6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBgd2ViYnJvd3NlcmAgbW9kdWxlLCB0aGFua3MgdG8gQW50b24KKyAgQmFya292c2t5LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTY5NTM6IEZpeCBzb2NrZXQgbW9kdWxlIGNvbXBpbGF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoCisgIEhBVkVfQlJPS0VOX1BPTEwuIFBhdGNoIGJ5IEplZmZyZXkgQXJtc3Ryb25nLgorCistIElzc3VlICMxNjgzNjogRW5hYmxlIElQdjYgc3VwcG9ydCBldmVuIGlmIElQdjYgaXMgZGlzYWJsZWQgb24gdGhlIGJ1aWxkIGhvc3QuCisKKy0gQ3Jvc3MgY29tcGlsaW5nIG5lZWRzIGhvc3QgYW5kIGJ1aWxkIHNldHRpbmdzLiBjb25maWd1cmUgbm8gbG9uZ2VyCisgIGNyZWF0ZXMgYSBicm9rZW4gUFlUSE9OX0ZPUl9CVUlMRCB2YXJpYWJsZSB3aGVuIC0tYnVpbGQgaXMgbWlzc2luZy4KKworLSBGaXggY3Jvc3MgY29tcGlsaW5nIGlzc3VlIGluIHNldHVwLnB5LCBlbnN1cmUgdGhhdCBsaWJfZGlycyBhbmQgaW5jX2RpcnMgYXJlCisgIGRlZmluZWQgaW4gY3Jvc3MgY29tcGlsaW5nIG1vZGUsIHRvby4KKworLSBJc3N1ZSAjMTY1OTM6IEhhdmUgQlNEICdtYWtlIC1zJyBkbyB0aGUgcmlnaHQgdGhpbmcsIHRoYW5rcyB0byBEYW5pZWwgU2hhaGFmCisKKy0gSXNzdWUgIzE2MjYyOiBmaXggb3V0LW9mLXNyYy10cmVlIGJ1aWxkcywgaWYgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzE1Mjk4OiBlbnN1cmUgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGluIGJ1aWxkIGRpcmVjdG9yeSwgbm90CisgIHNvdXJjZSBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE1ODMzOiBGaXggYSByZWdyZXNzaW9uIGluIDMuMyB0aGF0IHJlc3VsdGVkIGluIGV4Y2VwdGlvbnMgYmVpbmcKKyAgcmFpc2VkIGlmIGltcG9ydGxpYiBmYWlsZWQgdG8gd3JpdGUgYnl0ZS1jb21waWxlZCBmaWxlcy4gIFRoaXMgYWZmZWN0ZWQKKyAgYXR0ZW1wdHMgdG8gYnVpbGQgUHl0aG9uIG91dC1vZi10cmVlIGZyb20gYSByZWFkLW9ubHkgc291cmNlIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTU5MjM6IEZpeCBhIG1pc3Rha2UgaW4gYGBhc2RsX2MucHlgYCB0aGF0IHJlc3VsdGVkIGluIGEgVHlwZUVycm9yCisgIGFmdGVyIDI4MDFiZjg3NWEyNCAoc2VlICMxNTgwMSkuCisKKy0gSXNzdWUgIzE1ODE5OiBNYWtlIHN1cmUgd2UgY2FuIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZC1vbmx5CisgIHNvdXJjZSBkaXJlY3RvcnkuICAoU29tZXdoYXQgcmVsYXRlZCB0byBpc3N1ZSAjOTg2MC4pCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxMzMwMTogdXNlIGFzdC5saXRlcmFsX2V2YWwoKSBpbnN0ZWFkIG9mIGV2YWwoKSBpbiBUb29scy9pMThuL21zZ2ZtdC5weQorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEzMDk0OiBhZGQgIldoeSBkbyBsYW1iZGFzIGRlZmluZWQgaW4gYSBsb29wIHdpdGggZGlmZmVyZW50IHZhbHVlcworICBhbGwgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdD8iIHByb2dyYW1taW5nIEZBUS4KKworLSBJc3N1ZSAjMTQ5MDE6IFVwZGF0ZSBwb3J0aW9ucyBvZiB0aGUgV2luZG93cyBGQVEuCisgIFBhdGNoIGJ5IEFzaGlzaCBOaXRpbiBQYXRpbC4KKworLSBJc3N1ZSAjMTYyNjc6IEJldHRlciBkb2N1bWVudCB0aGUgMy4zKyBhcHByb2FjaCB0byBjb21iaW5pbmcKKyAgQGFic3RyYWN0bWV0aG9kIHdpdGggQHN0YXRpY21ldGhvZCwgQGNsYXNzbWV0aG9kIGFuZCBAcHJvcGVydHkKKworLSBJc3N1ZSAjMTUyMDk6IENsYXJpZnkgZXhjZXB0aW9uIGNoYWluaW5nIGRlc2NyaXB0aW9uIGluIGV4Y2VwdGlvbnMgbW9kdWxlCisgIGRvY3VtZW50YXRpb24KKworLSBJc3N1ZSAjMTU5OTA6IEltcHJvdmUgYXJndW1lbnQvcGFyYW1ldGVyIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE2MjA5OiBNb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3RyIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGEgbmV3CisgIHN0ciBjbGFzcyBlbnRyeSBpbiB0aGUgIlRleHQgU2VxdWVuY2UgVHlwZSIgc2VjdGlvbi4KKworLSBJc3N1ZSAjMTM1Mzg6IEltcHJvdmUgc3RyKCkgYW5kIG9iamVjdC5fX3N0cl9fKCkgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTY0ODk6IE1ha2UgaXQgY2xlYXJlciB0aGF0IGltcG9ydGxpYi5maW5kX2xvYWRlcigpIHJlcXVpcmVzIGFueSBhbmQKKyAgYWxsIHBhY2thZ2VzIHRvIGJlIHNlcGFyYXRlbHkgaW1wb3J0ZWQuCisKKy0gSXNzdWUgIzE2NDAwOiBVcGRhdGUgdGhlIGRlc2NyaXB0aW9uIG9mIHdoaWNoIHZlcnNpb25zIG9mIGEgZ2l2ZW4gcGFja2FnZQorICBQeVBJIGRpc3BsYXlzLgorCistIElzc3VlICMxNTY3NzogRG9jdW1lbnQgdGhhdCB6bGliIGFuZCBnemlwIGFjY2VwdCBhIGNvbXByZXNzaW9uIGxldmVsIG9mIDAgdG8KKyAgbWVhbiAnbm8gY29tcHJlc3Npb24nLiBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzgwNDA6IGFkZGVkIGEgdmVyc2lvbiBzd2l0Y2hlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4gIFBhdGNoIGJ5CisgIFl1cnkgU2VsaXZhbm92LgorCistIEFkZGl0aW9uYWwgY29tbWVudHMgYW5kIHNvbWUgc3R5bGUgY2hhbmdlcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIFVSTAorICByZXRyaWV2YWwgZXhhbXBsZQorCistIElzc3VlICMxNjExNTogSW1wcm92ZSBzdWJwcm9jZXNzLlBvcGVuKCkgZG9jdW1lbnRhdGlvbiBhcm91bmQgYXJncywgc2hlbGwsCisgIGFuZCBleGVjdXRhYmxlIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTU1MzM6IENsYXJpZnkgZG9jcyBhbmQgYWRkIHRlc3RzIGZvciBgc3VicHJvY2Vzcy5Qb3BlbigpYCdzIGN3ZAorICBhcmd1bWVudC4KKworLSBJc3N1ZSAjMTU5Nzk6IEltcHJvdmUgdGltZWl0IGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE2MDM2OiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgYnVpbHQtaW4gYGludCgpYCdzIHNpZ25hdHVyZSBhbmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMxNTkzNTogQ2xhcmlmaWNhdGlvbiBvZiBgYXJncGFyc2VgIGRvY3MsIHJlOiBhZGRfYXJndW1lbnQoKSB0eXBlIGFuZAorICBkZWZhdWx0IGFyZ3VtZW50cy4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxMTk2NDogRG9jdW1lbnQgYSBjaGFuZ2UgaW4gdjMuMiB0byB0aGUgYmVoYXZpb3Igb2YgdGhlIGluZGVudAorICBwYXJhbWV0ZXIgb2YganNvbiBlbmNvZGluZyBvcGVyYXRpb25zLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1Mzk6IEZpeCBhIG51bWJlciBvZiBidWdzIGluIFRvb2xzL3NjcmlwdHMvcGluZGVudC5weS4gIE5vdworICBwaW5kZW50LnB5IHdvcmtzIHdpdGggYSAid2l0aCIgc3RhdGVtZW50LiAgcGluZGVudC5weSBubyBsb25nZXIgcHJvZHVjZXMKKyAgaW1wcm9wZXIgaW5kZW50YXRpb24uICBwaW5kZW50LnB5IG5vdyB3b3JrcyB3aXRoIGNvbnRpbnVlZCBsaW5lcyBicm9rZW4gYWZ0ZXIKKyAgImNsYXNzIiBvciAiZGVmIiBrZXl3b3JkcyBhbmQgd2l0aCBjb250aW51YXRpb25zIGF0IHRoZSBzdGFydCBvZiBsaW5lLgorCistIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjktU2VwLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KKworLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBgX190cnVuY19fKClgIHJldHVybnMgYW4gb2JqZWN0IHdob3NlCisgIGBfX2ludF9fKClgIGdpdmVzIGEgbm9uLWludGVnZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTYwMTI6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcHlleHBhdC4gVGhlIHBhcnNlcidzIGBVc2VGb3JlaWduRFREKClgCisgIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIzLVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKWAuCisKKy0gSXNzdWUgIzE1OTI2OiBGaXggY3Jhc2ggYWZ0ZXIgbXVsdGlwbGUgcmVpbml0aWFsaXphdGlvbnMgb2YgdGhlIGludGVycHJldGVyLgorCistIElzc3VlICMxNTg5NTogRml4IEZJTEUgcG9pbnRlciBsZWFrIGluIG9uZSBlcnJvciBicmFuY2ggb2YKKyAgYFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKClgIHdoZW4gZmlsZW5hbWUgcG9pbnRzIHRvIGEgcHljL3B5byBmaWxlLCBjbG9zZWl0IGlzCisgIGZhbHNlIGFuIGFuZCBzZXRfbWFpbl9sb2FkZXIoKSBmYWlscy4KKworLSBGaXhlcyBmb3IgYSBmZXcgY3Jhc2ggYW5kIG1lbW9yeSBsZWFrIHJlZ3Jlc3Npb25zIGZvdW5kIGJ5IENvdmVyaXR5LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KKyAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQorICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KKworLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGVtYWlsLnV0aWxgIHdoZXJlIHRoZSBgcGFyc2VkYXRlKClgIGFuZAorICBgcGFyc2VkYXRlX3R6KClgIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKKyAgbm90IGJlIHBhcnNlZC4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1OTczOiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjb21wYXJpbmcgZGF0ZXRpbWUgdGltZXpvbmUKKyAgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgorICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KKworLSBJc3N1ZSAjMTU5Njk6IGBmYXVsdGhhbmRsZXJgIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCisgIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KKworLSBfZGVjaW1hbCBtb2R1bGU6IHVzZSBvbmx5IEMgODkgc3R5bGUgY29tbWVudHMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA5LVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCisgIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucworICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KKworLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBgT1NFcnJvcmAuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm5vCisgIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KKworLSBJc3N1ZSAjMTU3ODE6IEZpeCB0d28gc21hbGwgcmFjZSBjb25kaXRpb25zIGluIGltcG9ydCdzIG1vZHVsZSBsb2NraW5nLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMgYXMKKyAgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KKworLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCisKKy0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gYGAvZGV2L3VyYW5kb21gYCBjYW5ub3QgYmUKKyAgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorCistIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIGBEZWNpbWFsLnF1YW50aXplKClgCisgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQorICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKKyAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQorICBrZXlwYWQga2V5cy4KKworLSBJc3N1ZSAjMTQyMjM6IEZpeCBgd2luZG93LmFkZGNoKClgIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgbGlrZSBjdXJzZXMuQUNTX0hMSU5FOiB0aGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKGludCkgYW5kIGFkZGNoKGJ5dGVzKSBpcyBub3cKKyAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkY2goKS9tdndhZGRjaCgpIChhcyBpdCB3YXMgZG9uZSBpbiBQeXRob24gMy4yKSwKKyAgaW5zdGVhZCBvZiB3YWRkX3djaCgpL212d2FkZF93Y2goKS4gVGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChzdHIpIGlzIHN0aWxsCisgIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZF93Y2goKS9tdndhZGRfd2NoKCkgaWYgdGhlIFB5dGhvbiBjdXJzZXMgaXMgbGlua2VkCisgIHRvIGxpYm5jdXJzZXN3LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTU4MjI6IFJlYWxseSBlbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZAorICAocmVwbGFjZXMgZml4ZXMgZm9yIElzc3VlICMxNTY0NSkuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkIHRoZQorICBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZSBpdGVtCisgIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleSB3aWxsIGJlCisgIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjUtQXVnLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKKyAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCisKKy0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAorICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KKyAgbGV0IHRoYXQgcHJvcGFnYXRlLgorCistIElzc3VlICMxNTc3ODogRW5zdXJlIHRoYXQgYGBzdHIoSW1wb3J0RXJyb3IobXNnKSlgYCByZXR1cm5zIGEgc3RyIGV2ZW4gd2hlbgorICBtc2cgaXNuJ3QgYSBzdHIuCisKKy0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkgY29waWVkIHRvCisgIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliIHJlaW50cm9kdWNlZCB0aGlzCisgIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZgorICB0aGlzIHBhdGNoKQorCistIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gYGBQWVRIT05FWEVDVVRBQkxFYGAgaXMgc2V0IG9uIE1hYyBPUyBYLgorCistIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLiAgUGF0Y2ggYnkKKyAgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQorICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ4NDY6IGBpbXBvcnRsaWIuRmlsZUZpbmRlcmAgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeQorICBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAorICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCisKKy0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KIAogLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgogCi0tIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KKy0gSXNzdWUgIzE1Nzc2OiBBbGxvdyBweXZlbnYgdG8gd29yayBpbiBleGlzdGluZyBkaXJlY3Rvcnkgd2l0aCAtLWNsZWFuLgorCistIElzc3VlICMxNTI0OTogZW1haWwncyBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgogICByZXF1ZXN0ZWQpIGV2ZW4gaWYgdGhlIGJvZHkgY29udGFpbnMgdW5kZWNvZGFibGUgYnl0ZXMuCiAKIC0gSXNzdWUgIzE1Nzc3OiBGaXggYSByZWZsZWFrIGluIF9wb3NpeHN1YnByb2Nlc3MuCiAKKy0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBgZW1haWwudXRpbHMubG9jYWx0aW1lYCB0byB1c2UgZGF0ZXRpbWUuYXN0aW1lem9uZSBhbmQKKyAgY29ycmVjdGx5IGhhbmRsZSBoaXN0b3JpYyBjaGFuZ2VzIGluIFVUQyBvZmZzZXRzLgorCiAtIElzc3VlICMxNTE5OTogRml4IEphdmFTY3JpcHQncyBkZWZhdWx0IE1JTUUgdHlwZSB0byBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LgogICBQYXRjaCBieSBCb2h1c2xhdiBLYWJyZGEuCiAKLS0gSXNzdWUgIzEzNTc5OiBzdHJpbmcuRm9ybWF0dGVyIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgorLSBJc3N1ZSAjMTI2NDM6IGBjb2RlLkludGVyYWN0aXZlQ29uc29sZWAgbm93IHJlc3BlY3RzIGBzeXMuZXhjZXB0aG9va2Agd2hlbgorICBkaXNwbGF5aW5nIGV4Y2VwdGlvbnMuICBQYXRjaCBieSBBYXJvbiBJbGVzLgogCi0tIElzc3VlICMxNTc5MzogU3RhY2sgY29ycnVwdGlvbiBpbiBzc2wuUkFORF9lZ2QoKS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCiAKLS0gSXNzdWUgIzE1NTk1OiBGaXggc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgZm9yIGNlcnRhaW4gbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCistIElzc3VlICMxNTU5NTogRml4IGBgc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSlgYCBmb3IgY2VydGFpbgorICBsb2NhbGVzICh1dGYtMTYgYW5kIHV0Zi0zMiBmYW1pbHkpLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KIAogLSBJc3N1ZSAjMTU0Nzc6IEluIGNtYXRoIGFuZCBtYXRoIG1vZHVsZXMsIGFkZCB3b3JrYXJvdW5kIGZvciBwbGF0Zm9ybXMgd2hvc2UKICAgc3lzdGVtLXN1cHBsaWVkIGxvZzFwIGZ1bmN0aW9uIGRvZXNuJ3QgcmVzcGVjdCBzaWducyBvZiB6ZXJvcy4KIAorLSBJc3N1ZSAjMTU3MTU6IGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYCB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUKKyAgdXNlIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KKworLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWMgT1MgWCBieQorICBzZW5kaW5nL3JlY2VpdmluZyBhbiBhY2tub3dsZWRnbWVudCBhZnRlciBmaWxlIGRlc2NyaXB0b3IgdHJhbnNmZXIuCisgIFRlc3RQaWNrbGluZ0Nvbm5lY3Rpb24gaGFzIGJlZW4gcmVlbmFibGVkIGZvciBNYWMgT1MgWC4KKwogLSBJc3N1ZSAjMTEwNjI6IEZpeCBhZGRpbmcgYSBtZXNzYWdlIGZyb20gZmlsZSB0byBCYWJ5bCBtYWlsYm94LgogCi0tIElzc3VlICMxNTY0NjogUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcKLSAgbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyciCi0gIGlkaW9tLgorLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nIGBtdWx0aXByb2Nlc3NpbmdgCisgIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgYGBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nYGAgaWRpb20uCiAKLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLgotICBQYXRjaCBieSBMdWR3aWcgSMOkaG5lLgorLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lICgzLjMuMGIyCisgIHJlZ3Jlc3Npb24pLgorCitDIEFQSQorLS0tLS0KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBganNvbmAgbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KKyAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgorCistIENyZWF0ZSBhICdDb25jdXJyZW50IEV4ZWN1dGlvbicgc2VjdGlvbiBpbiB0aGUgZG9jcywgYW5kIHNwbGl0IHVwIHRoZQorICAnT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcycgc2VjdGlvbiB0byB1c2UgYSBtb3JlIHVzZXItY2VudHJpYworICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQgdGV4dAorICBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0b25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aCB0aGUgU3BoaW54CisgIGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mIENvbnRlbnRzLgorCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAorICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCisKKy0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCisgIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbiB0aGUKKyAgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcy4KKworLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKKyAgRGFuaWVsIEVsbGlzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCisgIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgorICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCisKKy0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZyB0d28KKyAgZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZSBvZiB0ZXN0LgorCistIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiBgdXJsbGliYCB0ZXN0cy4gUGF0Y2ggYnkKKyAgSmVmZiBLbnVwcC4KKworLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYGpzb25gIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQKKyAgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKK0J1aWxkCistLS0tLQorCistIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCisKKy0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCisKKy0gRHJvcCBgYFBDXHB5dGhvbl9udC5oYGAgYXMgaXQncyBub3QgdXNlZC4gIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQorICBidWlsZCBzdGVwLgorCistIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsIGFtZDY0CisgIGNvbmZpZ3VyYXRpb24uCisKKy0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCisKKy0gSXNzdWUgIzE1NjQ1OiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEyLUF1Zy0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgeWllbGQgZnJvbWBgIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcworICByYWlzZWQgYnkgYSBjdXN0b20gaXRlcmF0b3IuCisKKy0gSXNzdWUgIzEzMTE5OiBgc3lzLnN0ZG91dGAgYW5kIGBzeXMuc3RkZXJyYCBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCisgIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgorCistIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBgX19pbXBvcnRfXygpYCB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAorICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90CisgIHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZworICBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KKworLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKKyAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCisKKy0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCisgIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgorCistIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KKworLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgorCistIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCisgIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgorCistIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYworICBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCisgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgorCistIElzc3VlICMxNTMxNDogYGBfX21haW5fXy5fX2xvYWRlcl9fYGAgaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCisgIHN0YXJ0dXAuCisKKy0gSXNzdWUgIzE1MTExOiBXaGVuIGEgbW9kdWxlIGltcG9ydGVkIHVzaW5nICdmcm9tIGltcG9ydCcgaGFzIGFuIEltcG9ydEVycm9yCisgIGluc2lkZSBpdHNlbGYsIGRvbid0IG1hc2sgdGhhdCBmYWN0IGJlaGluZCBhIGdlbmVyaWMgSW1wb3J0RXJyb3IgZm9yIHRoZQorICBtb2R1bGUgaXRzZWxmLgorCistIElzc3VlICMxNTI5MzogQWRkIEdDIHN1cHBvcnQgdG8gdGhlIEFTVCBiYXNlIG5vZGUgdHlwZS4KKworLSBJc3N1ZSAjMTUyOTE6IEZpeCBhIG1lbW9yeSBsZWFrIHdoZXJlIEFTVCBub2RlcyB3aGVyZSBub3QgcHJvcGVybHkKKyAgZGVhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzE1MTEwOiBGaXggdGhlIHRyYWNlYmFja3MgZ2VuZXJhdGVkIGJ5ICJpbXBvcnQgeHh4IiB0byBub3Qgc2hvdyB0aGUKKyAgaW1wb3J0bGliIHN0YWNrIGZyYW1lcy4KKworLSBJc3N1ZSAjMTYzNjk6IEdsb2JhbCBQeVR5cGVPYmplY3RzIG5vdCBpbml0aWFsaXplZCB3aXRoIFB5VHlwZV9SZWFkeSguLi4pLgorCistIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKKyAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KKworLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCisgIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgorCistIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGNoLAorICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1MjI5OiBBbiBgT1NFcnJvcmAgc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKKyAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgorICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCisKKy0gSXNzdWUgIzE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgorICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQ1OTA6IGNvbmZpZ3BhcnNlciBub3cgY29ycmVjdGx5IHN0cmlwcyBpbmxpbmUgY29tbWVudHMgd2hlbiBkZWxpbWl0ZXIKKyAgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuCisKKy0gSXNzdWUgIzE1NDI0OiBBZGQgYSBgX19zaXplb2ZfXygpYCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5CisgIEx1ZHdpZyBIw6RobmUuCisKKy0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgorCistIElzc3VlICMxNTUwMjogSGF2ZSBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIHdvcmsgb24gYHN5cy5tZXRhX3BhdGhgCisgIGluc3RlYWQgb2YgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4KKworLSBJc3N1ZSAjMTUxNjM6IFB5ZG9jIHNob3VsZG4ndCBsaXN0IF9fbG9hZGVyX18gYXMgbW9kdWxlIGRhdGEuCisKKy0gSXNzdWUgIzE1NDcxOiBEbyBub3QgdXNlIG11dGFibGUgb2JqZWN0cyBhcyBkZWZhdWx0cyBmb3IKKyAgYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgLgorCistIElzc3VlICMxNTU1OTogVG8gYXZvaWQgYSBwcm9ibGVtYXRpYyBmYWlsdXJlIG1vZGUgd2hlbiBwYXNzZWQgdG8gdGhlIGJ5dGVzCisgIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgYF9faW5kZXhfXygpYAorICAodGhleSBzdGlsbCBpbXBsZW1lbnQgYF9faW50X18oKWAgYXMgYXBwcm9wcmlhdGUpLgorCistIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgYW5kCisgIHJlYWQxKCkgbWV0aG9kcyBvZiB0aGUgQloyRmlsZSwgR3ppcEZpbGUgYW5kIExaTUFGaWxlIGNsYXNzZXMuCiAKIC0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZwotICBlbmRlZCB3aXRoICdcJy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisgIGVuZGVkIHdpdGggYGBcYGAuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAotLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkKLSAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorLSBJc3N1ZSAjMTI2NTU6IEluc3RlYWQgb2YgcmVxdWlyaW5nIGEgY3VzdG9tIHR5cGUsIGBvcy5zY2hlZF9nZXRhZmZpbml0eSgpYCBhbmQKKyAgYG9zLnNjaGVkX3NldGFmZmluaXR5KClgIG5vdyB1c2UgcmVndWxhciBzZXRzIG9mIGludGVnZXJzIHRvIHJlcHJlc2VudCB0aGUKKyAgQ1BVcyBhIHByb2Nlc3MgaXMgcmVzdHJpY3RlZCB0by4KKworLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgYHNvY2tldC5nZXRuYW1laW5mbygpYCAvCisgIGBzb2NrZXQuZ2V0YWRkcmluZm8oKWAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorCistIElzc3VlICMxNTUxOTogUHJvcGVybHkgZXhwb3NlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBpbiBpbXBvcnRsaWIgKGFuZCB1c2UgdGhlCisgIGNvcnJlY3QgdGVybSBmb3IgaXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorCistIElzc3VlICMxNTUwMjogQnJpbmcgdGhlIGltcG9ydGxpYiBBQkNzIGludG8gbGluZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQorICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCisKKy0gSXNzdWUgIzE1NDk5OiBMYXVuY2hpbmcgYSB3ZWJicm93c2VyIGluIFVuaXggdXNlZCB0byBzbGVlcCBmb3IgYSBmZXcgc2Vjb25kcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgQW50b24gQmFya292c2t5LgorCistIElzc3VlICMxNTQ2MzogVGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgdHJ1bmNhdGVzIHN0cmluZ3MgdG8gNTAwIGNoYXJhY3RlcnMsCisgIGluc3RlYWQgb2YgMTAwLCB0byBiZSBhYmxlIHRvIGRpc3BsYXkgbG9uZyBmaWxlIHBhdGhzLgorCistIElzc3VlICM2MDU2OiBNYWtlIGBtdWx0aXByb2Nlc3NpbmdgIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUgc29ja2V0cyBpdAorICB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCisKKy0gSXNzdWUgIzE1MzY0OiBGaXggc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgorCistIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1NDEzOiBgb3MudGltZXMoKWAgaGFkIGRpc2FwcGVhcmVkIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBgc3lzLmdldHNpemVvZigpYCB0bworICByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHN0cnVjdC5TdHJ1Y3QgaW5zdGFuY2VzIGhhcyBiZWVuIGZpeGVkLiAgSW5pdGlhbAorICBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBgZW1haWwuR2VuZXJhdG9yYCBub3cgY29ycmVjdGx5CisgIG1hbmdsZXMgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IKKyAgZXBpbG9ndWUuCisKKy0gSXNzdWUgIzE1MDk0OiBJbmNvcnJlY3RseSBwbGFjZWQgI2VuZGlmIGluIF90a2ludGVyLmMuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxMzkyMjogYGFyZ3BhcnNlYCBubyBsb25nZXIgaW5jb3JyZWN0bHkgc3RyaXBzICctLSdzIHRoYXQgYXBwZWFyIGFmdGVyCisgIHRoZSBmaXJzdCBvbmUuCisKKy0gSXNzdWUgIzEyMzUzOiBgYXJncGFyc2VgIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKworLSBJc3N1ZSAjMTAwMTcsIGlzc3VlICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKKyAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KKworLSBJc3N1ZSAjMTUzOTc6IGBpbnNwZWN0LmdldG1vZHVsZW5hbWUoKWAgaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIGltcG9ydGxpYiB2aWEKKyAgYSBuZXcgYGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKClgIEFQSS4KKworLSBJc3N1ZSAjMTQ2MzU6IGB0ZWxuZXRsaWJgIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCisgIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCisKKy0gSXNzdWUgIzE1MTgwOiBDbGFyaWZ5IHBvc2l4cGF0aC5qb2luKCkgZXJyb3IgbWVzc2FnZSB3aGVuIG1peGluZyBzdHIgJiBieXRlcy4KKworLSBJc3N1ZSAjMTUzNDM6IHBrZ3V0aWwgbm93IGluY2x1ZGVzIGFuIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyBpbXBsZW1lbnRhdGlvbiBmb3IKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIChzaW1pbGFyIHRvIHRoZSB3YXkgaXQgYWxyZWFkeSBoYW5kbGVkCisgIHppcGltcG9ydC56aXBpbXBvcnRlcikuCisKKy0gSXNzdWUgIzE1MzE0OiBydW5weSBub3cgc2V0cyBfX21haW5fXy5fX2xvYWRlcl9fIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTUzNTc6IFRoZSBpbXBvcnQgZW11bGF0aW9uIGluIHBrZ3V0aWwgaXMgbm93IGRlcHJlY2F0ZWQuIHBrZ3V0aWwgdXNlcworICBpbXBvcnRsaWIgaW50ZXJuYWxseSByYXRoZXIgdGhhbiB0aGUgZW11bGF0aW9uLgorCistIElzc3VlICMxNTIzMzogUHl0aG9uIG5vdyBndWFyYW50ZWVzIHRoYXQgY2FsbGFibGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYXRleGl0CisgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCisKKy0gSXNzdWUgIzE1MjM4OiBgc2h1dGlsLmNvcHlzdGF0KClgIG5vdyBjb3BpZXMgTGludXggImV4dGVuZGVkIGF0dHJpYnV0ZXMiLgorCistIElzc3VlICMxNTIzMDogcnVucHkucnVuX3BhdGggbm93IGNvcnJlY3RseSBzZXRzIF9fcGFja2FnZV9fIGFzIGRlc2NyaWJlZCBpbgorICB0aGUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTUzMTU6IFN1cHBvcnQgVlMgMjAxMCBpbiBkaXN0dXRpbHMgY3lnd2luY29tcGlsZXIuCisKKy0gSXNzdWUgIzE1Mjk0OiBGaXggYSByZWdyZXNzaW9uIGluIHBrZ3V0aWwuZXh0ZW5kX3BhdGgoKSdzIGhhbmRsaW5nIG9mIG5lc3RlZAorICBuYW1lc3BhY2UgcGFja2FnZXMuCisKKy0gSXNzdWUgIzE1MDU2OiBgaW1wLmNhY2hlX2Zyb21fc291cmNlKClgIGFuZCBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHJhaXNlCisgIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgc2V0IHRvIE5vbmUuCisKKy0gSXNzdWUgIzE1MjU2OiBHcmFtbWF0aWNhbCBtaXN0YWtlIGluIGV4Y2VwdGlvbiByYWlzZWQgYnkgYGltcC5maW5kX21vZHVsZSgpYC4KKworLSBJc3N1ZSAjNTkzMTogYHdzZ2lyZWZgIGVudmlyb24gdmFyaWFibGUgU0VSVkVSX1NPRlRXQVJFIHdpbGwgc3BlY2lmeSBhbgorICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UgQ1B5dGhvbiwgSnl0aG9uIGluc3RlYWQgb2YgZ2VuZXJpYyAiUHl0aG9uIi4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAibWF4X2J1ZmZlcl9zaXplIiBvZiBCdWZmZXJlZFdyaXRlciBhbmQKKyAgQnVmZmVyZWRSV1BhaXIsIGZyb20gdGhlIGlvIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYC4KKworLSBJc3N1ZSAjMTQ4MTQ6IEltcGxlbWVudCBtb3JlIGNvbnNpc3RlbnQgb3JkZXJpbmcgYW5kIHNvcnRpbmcgYmVoYXZpb3VyIGZvcgorICBpcGFkZHJlc3Mgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ4MTQ6IGBpcGFkZHJlc3NgIG5ldHdvcmsgb2JqZWN0cyBjb3JyZWN0bHkgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4KKyAgY29tcGFyZWQgdG8gYXJiaXRyYXJ5IG9iamVjdHMgaW5zdGVhZCBvZiByYWlzaW5nIFR5cGVFcnJvci4KKworLSBJc3N1ZSAjMTQ5OTA6IENvcnJlY3RseSBmYWlsIHdpdGggU3ludGF4RXJyb3Igb24gaW52YWxpZCBlbmNvZGluZyBkZWNsYXJhdGlvbi4KKworLSBJc3N1ZSAjMTQ4MTQ6IGBpcGFkZHJlc3NgIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KKyAgY29uc3RydWN0aW5nIGluc3RhbmNlcyBkaXJlY3RseSAoY2hhbmdlcyBwZXJtaXR0ZWQgZHVyaW5nIGJldGEgZHVlIHRvCisgIHByb3Zpc2lvbmFsIEFQSSBzdGF0dXMpLgorCistIElzc3VlICMxNTI0NzogYGlvLkZpbGVJT2Agbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yCisgIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5LgorCistIElzc3VlICMxNTI2MTogU3RvcCBvcy5zdGF0KGZkKSBjcmFzaGluZyBvbiBXaW5kb3dzIHdoZW4gZmQgbm90IG9wZW4uCisKKy0gSXNzdWUgIzE1MTY2OiBJbXBsZW1lbnQgYGltcC5nZXRfdGFnKClgIHVzaW5nIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYC4KKworLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gYGltcG9ydGxpYi5fX2luaXRfXygpYCBjYW4ndCBmaW5kCisgIF9mcm96ZW5faW1wb3J0bGliIGluIHN5cy5tb2R1bGVzLCBub3QgSW1wb3J0RXJyb3IuCisKKy0gSXNzdWUgIzE1MDMwOiBgaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcmAgbm93IHN1cHBvcnRzIHRoZSBuZXcgc291cmNlIHNpemUKKyAgaGVhZGVyIGZpZWxkIGluIC5weWMgZmlsZXMuCisKKy0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3ggZmlsZXMgb24KKyAgZmx1c2goKS4KKworLSBJc3N1ZSAjMTA1NzE6IEZpeCB0aGUgIi0tc2lnbiIgb3B0aW9uIG9mIGRpc3R1dGlscycgdXBsb2FkIGNvbW1hbmQuICBQYXRjaCBieQorICBKYWt1YiBXaWxrLgorCistIElzc3VlICM5NTU5OiBJZiBtZXNzYWdlcyB3ZXJlIG9ubHkgYWRkZWQsIGEgbmV3IGZpbGUgaXMgbm8gbG9uZ2VyIGNyZWF0ZWQgYW5kCisgIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbiBtYm94LCBNTURGIG9yIEJhYnlsCisgIG1haWxib3guCisKKy0gSXNzdWUgIzEwOTI0OiBGaXhlZCBgY3J5cHQubWtzYWx0KClgIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgorICBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKy0gSXNzdWUgIzE1MTg0OiBFbnN1cmUgY29uc2lzdGVudCByZXN1bHRzIG9mIE9TIFggY29uZmlndXJhdGlvbiB0YWlsb3JpbmcgZm9yCisgIHVuaXZlcnNhbCBidWlsZHMgYnkgZmFjdG9yaW5nIG91dCBjb21tb24gT1MgWC1zcGVjaWZpYyBjdXN0b21pemF0aW9ucyBmcm9tCisgIHN5c2NvbmZpZywgZGlzdHV0aWxzLnN5c2NvbmZpZywgZGlzdHV0aWxzLnV0aWwsIGFuZCBkaXN0dXRpbHMudW5peGNjb21waWxlcgorICBpbnRvIGEgbmV3IG1vZHVsZSBfb3N4X3N1cHBvcnQuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMxNTYxMDogYFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KClgIG5vdyB1c2VzIGEgJ2xldmVsJyBvZiAwIGluc3RlYWQgb2YgLTEuCisKKy0gSXNzdWUgIzE1MTY5LCBpc3N1ZSAjMTQ1OTk6IFN0cmlwIG91dCB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZgorICBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCisgIHVzZWQgdGhlIFB5dGhvbiBjb2RlIGluc3RlYWQuIExlYWRzIHRvIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkgdG8gbm90CisgIHRyeSB0byBpbmZlciB0aGUgc291cmNlIHBhdGggZnJvbSB0aGUgYnl0ZWNvZGUgcGF0aCBhcworICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBkb2VzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcyBvZgorICB0eXBlIGBjdHlwZXMuY191aW50MzJgIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzE1MTk0OiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuMTEgcmVsZWFzZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NDU4OiBweXRob24tY29uZmlnIGdldHMgYSBuZXcgb3B0aW9uIC0tY29uZmlnZGlyIHRvIHByaW50IHRoZSAkTElCUEwKKyAgdmFsdWUuCisKKy0gTW92ZSBpbXBvcnRsaWIudGVzdC5iZW5jaG1hcmsgdG8gVG9vbHMvaW1wb3J0YmVuY2guCisKKy0gSXNzdWUgIzEyNjA1OiBUaGUgZ2RiIGhvb2tzIGZvciBkZWJ1Z2dpbmcgQ1B5dGhvbiAod2l0aGluIFRvb2xzL2dkYikgaGF2ZSBiZWVuCisgIGVuaGFuY2VkIHRvIHNob3cgaW5mb3JtYXRpb24gb24gbW9yZSBDIGZyYW1lcyByZWxldmFudCB0byBDUHl0aG9uIHdpdGhpbiB0aGUKKyAgInB5LWJ0IiBhbmQgInB5LWJ0LWZ1bGwiIGNvbW1hbmRzOgorCisgICogQyBmcmFtZXMgdGhhdCBhcmUgd2FpdGluZyBvbiB0aGUgR0lMCisgICogQyBmcmFtZXMgdGhhdCBhcmUgZ2FyYmFnZS1jb2xsZWN0aW5nCisgICogQyBmcmFtZXMgdGhhdCBhcmUgZHVlIHRvIHRoZSBpbnZvY2F0aW9uIG9mIGEgUHlDRnVuY3Rpb24KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUyOTU6IFJlb3JnYW5pemUgYW5kIHJld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0uCisKKy0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weSBtb2R1bGUgYW5kCisgIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KKworLSBJc3N1ZSAjMTUwNTM6IENvcHkgUHl0aG9uIDMuMyBpbXBvcnQgbG9jayBjaGFuZ2Ugbm90aWNlIHRvIGFsbCByZWxldmFudAorICBmdW5jdGlvbnMgaW4gaW1wIGluc3RlYWQgb2YganVzdCBhdCB0aGUgdG9wIG9mIHRoZSByZWxldmFudCBzZWN0aW9uLgorCistIElzc3VlICMxNTI4ODogTGluayB0byB0aGUgdGVybSAibG9hZGVyIiBpbiBub3RlcyBpbiBwa2d1dGlsIGFib3V0IGhvdyB0aGluZ3MKKyAgd29uJ3Qgd29yayBhcyBleHBlY3RlZCBpbiBQeXRob24gMy4zIGFuZCBtYXJrIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25zIGFzCisgICJjaGFuZ2VkIiBzaW5jZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIHdvcmsgd2l0aCBtb2R1bGVzIGRpcmVjdGx5IGltcG9ydGVkIGJ5CisgIGltcG9ydCBpdHNlbGYuCisKKy0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGBleGVjKClgIG9yCisgIGBleGVjZmlsZSgpYC4KKworLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgYGZpbGVjbXAuZGlyY21wKClgIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKKyAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBgX19zaXplb2ZfXygpYCB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gIFBhdGNoCisgIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MzIwOiBNYWtlIGl0ZXJhdGluZyB0aGUgbGlzdCBvZiB0ZXN0cyB0aHJlYWQtc2FmZSB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgaW4gbXVsdGlwcm9jZXNzIG1vZGUuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTE2ODogTW92ZSBgaW1wb3J0bGliLnRlc3RgIHRvIGB0ZXN0LnRlc3RfaW1wb3J0bGliYC4KKworLSBJc3N1ZSAjMTUwOTE6IFJlYWN0aXZhdGUgYSB0ZXN0IG9uIFVOSVggd2hpY2ggd2FzIGZhaWxpbmcgdGhhbmtzIHRvIGEKKyAgZm9yZ290dGVuIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgY2FsbC4KKworLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzLgorCistIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQorICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgorICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTUyODQ6IFNraXAge3NlbmQscmVjdn1tc2cgdGVzdHMgaW4gdGVzdF9zb2NrZXQgd2hlbiBJUHY2IGlzIG5vdAorICBlbmFibGVkLiBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzE1Mjc3OiBGaXggYSByZXNvdXJjZSBsZWFrIGluIHN1cHBvcnQucHkgd2hlbiBJUHY2IGlzIGRpc2FibGVkLiAgUGF0Y2gKKyAgYnkgQnJpYW4gQnJhemlsLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTE3MTU6IEZpeCBtdWx0aWFyY2ggZGV0ZWN0aW9uIHdpdGhvdXQgaGF2aW5nIERlYmlhbiBkZXZlbG9wbWVudCB0b29scworICAoZHBrZy1kZXYpIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTUwMzc6IEJ1aWxkIE9TIFggaW5zdGFsbGVycyB3aXRoIGxvY2FsIGNvcHkgb2YgbmN1cnNlcyA1LjkgbGlicmFyaWVzCisgIHRvIGF2b2lkIGN1cnNlcy51bmdldF93Y2ggYnVnIHByZXNlbnQgaW4gb2xkZXIgdmVyc2lvbnMgb2YgbmN1cnNlcyBzdWNoIGFzCisgIHRob3NlIHNoaXBwZWQgd2l0aCBPUyBYLgorCistIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLiAgQWxzbywgZm9yCisgIE9TIFggaW5zdGFsbGVycywgZW5zdXJlIGNvbnNpc3RlbnQgc3FsaXRlMyBiZWhhdmlvciBhbmQgZmVhdHVyZSBhdmFpbGFiaWxpdHkKKyAgYnkgYnVpbGRpbmcgYSBsb2NhbCBjb3B5IG9mIGxpYnNxbGl0ZTMgcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHRoZSB3aWRlIHJhbmdlCisgIG9mIHZlcnNpb25zIHN1cHBsaWVkIHdpdGggdmFyaW91cyBPUyBYIHJlbGVhc2VzLgorCistIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCisKKy0gSXNzdWUgIzE1NDMxOiBBZGQgX2ZyZWV6ZV9pbXBvcnRsaWIgcHJvamVjdCB0byByZWdlbmVyYXRlIGltcG9ydGxpYi5oIG9uCisgIFdpbmRvd3MuIFBhdGNoIGJ5IEtyaXN0asOhbiBWYWx1ciBKw7Nuc3Nvbi4KKworLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCisKKy0gSXNzdWUgIzE0MzMwOiBGb3IgY3Jvc3MgYnVpbGRzLCBkb24ndCB1c2UgaG9zdCBweXRob24sIHVzZSBob3N0IHNlYXJjaCBwYXRocworICBmb3IgaG9zdCBjb21waWxlci4KKworLSBJc3N1ZSAjMTUyMzU6IEFsbG93IEJlcmtsZXkgREIgdmVyc2lvbnMgdXAgdG8gNS4zIHRvIGJ1aWxkIHRoZSBkYm0gbW9kdWxlLgorCistIElzc3VlICMxNTI2ODogU2VhcmNoIGN1cnNlcy5oIGluIC91c3IvaW5jbHVkZS9uY3Vyc2Vzdy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI3LUp1bi0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXggYSAobW9zdCBsaWtlbHkpIHZlcnkgcmFyZSBtZW1vcnkgbGVhayB3aGVuIGNhbGxpbmcgbWFpbigpIGFuZCBub3QgYmVpbmcKKyAgYWJsZSB0byBkZWNvZGUgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE0ODE1OiBVc2UgUHlfc3NpemVfdCBpbnN0ZWFkIG9mIGxvbmcgZm9yIHRoZSBvYmplY3QgaGFzaCwgdG8KKyAgcHJlc2VydmUgYWxsIDY0IGJpdHMgb2YgaGFzaCBvbiBXaW42NC4KKworLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCisgIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCisgIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgorICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgorCistIElzc3VlICMxMTYyNjogQWRkIF9TaXplVCBmdW5jdGlvbnMgdG8gc3RhYmxlIEFCSS4KKworLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTUxNDI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIGRlYWxsb2NhdGluZyBpbnN0YW5jZXMgb2YgdHlwZXMKKyAgY3JlYXRlZCB1c2luZyBQeVR5cGVfRnJvbVNwZWMoKS4KKworLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCisgIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTAwNTM6IERvbid0IGNsb3NlIEZEcyB3aGVuIEZpbGVJTy5fX2luaXRfXyBmYWlscy4gTG9vc2VseSBiYXNlZCBvbgorICB0aGUgd29yayBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTUwOTY6IFJlbW92ZWQgc3VwcG9ydCBmb3IgdXInJyBhcyB0aGUgcmF3IG5vdGF0aW9uIGlzbid0CisgIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTM3ODM6IEdlbmVyYXRvciBvYmplY3RzIG5vdyB1c2UgdGhlIGlkZW50aWZpZXIgQVBJcyBpbnRlcm5hbGx5CisKKy0gSXNzdWUgIzE0ODc0OiBSZXN0b3JlIGNoYXJtYXAgZGVjb2Rpbmcgc3BlZWQgdG8gcHJlLVBFUCAzOTMgbGV2ZWxzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTAyNjogdXRmLTE2IGVuY29kaW5nIGlzIG5vdyBzaWduaWZpY2FudGx5IGZhc3RlciAodXAgdG8gMTB4KS4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTEwMjI6IG9wZW4oKSBhbmQgaW8uVGV4dElPV3JhcHBlciBhcmUgbm93IGNhbGxpbmcKKyAgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpbnN0ZWFkIG9mIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgIGluIHRleHQgbW9kZSBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKKyAgbG9jYWxlIGVuY29kaW5nIHVzaW5nIGxvY2FsZS5zZXRsb2NhbGUoKSwgdXNlIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZworICBpbnN0ZWFkIG9mIHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZy4KKworLSBJc3N1ZSAjMTQ2NzM6IEFkZCBFcmljIFNub3cncyBzeXMuaW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1MDM4OiBPcHRpbWl6ZSBweXRob24gTG9ja3Mgb24gV2luZG93cy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNjMwNTogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IG9jY3VycmluZyB3aGVuIGludGVycnVwdGluZworICBtYXRoLmZhY3RvcmlhbC4KIAogLSBJc3N1ZSAjOTgwMzogRG9uJ3QgY2xvc2UgSURMRSBvbiBzYXZpbmcgaWYgYnJlYWtwb2ludCBpcyBvcGVuLgogICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KQEAgLTQ5MCw2MyArMTMyOSwxNTAgQEAKIC0gSXNzdWUgIzE1NDg3OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjNjA1NjogTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZQotICBzb2NrZXRzIGl0IHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KKy0gSXNzdWUgIzE1NTE0OiBDb3JyZWN0IF9fc2l6ZW9mX18gc3VwcG9ydCBmb3IgY3B1X3NldC4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTUwNDE6IHVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZworICBiZWhpbmQuCiAKLS0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBzeXMuZ2V0c2l6ZW9mIHRvCi0gIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuCi0gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE1MTc3OiBBZGRlZCBkaXJfZmQgcGFyYW1ldGVyIHRvIG9zLmZ3YWxrKCkuCiAKLS0gSXNzdWUgIzE1MjMyOiB3aGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGVtYWlsLkdlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMKLSAgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IgZXBpbG9ndWUuCistIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KKyAgb2Ygb3MubGlzdGRpcigpLgogCi0tIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhcgotICBhZnRlciB0aGUgZmlyc3Qgb25lLgorLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgorICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKKyAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KIAotLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKy0gSXNzdWUgIzE1MTY0OiBDaGFuZ2UgcmV0dXJuIHZhbHVlIG9mIHBsYXRmb3JtLnVuYW1lKCkgZnJvbSBhCisgIHBsYWluIHR1cGxlIHRvIGEgY29sbGVjdGlvbnMubmFtZWR0dXBsZS4KIAotLSBJc3N1ZXMgIzEwMDE3IGFuZCAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCi0gIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCistIFN1cHBvcnQgTWFnZWlhIExpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCiAKLS0gSXNzdWUgIzE0NjM1OiB0ZWxuZXRsaWIgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUKLSAgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KKy0gSXNzdWUgIzExNjc4OiBTdXBwb3J0IEFyY2ggbGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzCistIElzc3VlICMxNTExODogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBvcy51bmFtZSgpIGFuZCBvcy50aW1lcygpIGZyb20KKyAgcGxhaW4gdHVwbGVzIHRvIGltbXV0YWJsZSBpdGVyYWJsZSBvYmplY3RzIHdpdGggbmFtZWQgYXR0cmlidXRlcworICAoc3RydWN0c2VxIG9iamVjdHMpLgogCi0tIElzc3VlICMxNTIzMDogcnVucHkucnVuX3BhdGggbm93IGNvcnJlY3RseSBzZXRzIF9fcGFja2FnZV9fIGFzIGRlc2NyaWJlZAotICBpbiB0aGUgZG9jdW1lbnRhdGlvbgorLSBTcGVlZCB1cCBfZGVjaW1hbCBieSBhbm90aGVyIDEwLTE1JSBieSBjYWNoaW5nIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICB0aGF0IHdhcyBsYXN0IGFjY2Vzc2VkLiBJbiB0aGUgcGkgYmVuY2htYXJrICg2NC1iaXQgcGxhdGZvcm0sIHByZWM9OSksCisgIF9kZWNpbWFsIGlzIG5vdyBvbmx5IDEuNXggc2xvd2VyIHRoYW4gZmxvYXQuCiAKLS0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcKLSAgZGVjbGFyYXRpb24uCistIFJlbW92ZSB0aGUgcGFja2FnaW5nIG1vZHVsZSwgd2hpY2ggaXMgbm90IHJlYWR5IGZvciBwcmltZSB0aW1lLgogCi0tIElzc3VlICMxNTI0NzogRmlsZUlPIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgotICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KKy0gSXNzdWUgIzE1MTU0OiBBZGQgImRpcl9mZCIgcGFyYW1ldGVyIHRvIG9zLnJtZGlyLCByZW1vdmUgInJtZGlyIgorICBwYXJhbWV0ZXIgZnJvbSBvcy5yZW1vdmUgLyBvcy51bmxpbmsuCiAKLS0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3gKLSAgZmlsZXMgb24gZmx1c2goKS4KKy0gSXNzdWUgIzQ0ODk6IEFkZCBhIHNodXRpbC5ybXRyZWUgdGhhdCBpc24ndCBzdXNjZXB0aWJsZSB0byBzeW1saW5rIGF0dGFja3MuCisgIEl0IGlzIHVzZWQgYXV0b21hdGljYWxseSBvbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IG9zLm9wZW5hdCgpCisgIGFuZCBvcy51bmxpbmthdCgpIGZ1bmN0aW9ucy4gTWFpbiBjb2RlIGJ5IE1hcnRpbiB2b24gTMO2d2lzLgogCi0tIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4KLSAgUGF0Y2ggYnkgSmFrdWIgV2lsay4KKy0gSXNzdWUgIzE1MTU2OiBIVE1MUGFyc2VyIG5vdyB1c2VzIHRoZSBuZXcgImh0bWwuZW50aXRpZXMuaHRtbDUiIGRpY3Rpb25hcnkuCiAKLS0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIKLSAgY3JlYXRlZCBhbmQgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuCi0gIG1ib3gsIE1NREYgb3IgQmFieWwgbWFpbGJveC4KKy0gSXNzdWUgIzExMTEzOiBhZGQgYSBuZXcgImh0bWw1IiBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG5hbWVkIGNoYXJhY3RlcgorICByZWZlcmVuY2VzIGRlZmluZWQgYnkgdGhlIEhUTUw1IHN0YW5kYXJkIGFuZCB0aGUgZXF1aXZhbGVudCBVbmljb2RlCisgIGNoYXJhY3RlcihzKSB0byB0aGUgaHRtbC5lbnRpdGllcyBtb2R1bGUuCisKKy0gSXNzdWUgIzE1MTE0OiB0aGUgc3RyaWN0IG1vZGUgb2YgSFRNTFBhcnNlciBhbmQgdGhlIEhUTUxQYXJzZUVycm9yIGV4Y2VwdGlvbgorICBhcmUgZGVwcmVjYXRlZCBub3cgdGhhdCB0aGUgcGFyc2VyIGlzIGFibGUgdG8gcGFyc2UgaW52YWxpZCBtYXJrdXAuCisKKy0gSXNzdWUgIzM2NjU6IFx1IGFuZCBcVSBlc2NhcGVzIGFyZSBub3cgc3VwcG9ydGVkIGluIHVuaWNvZGUgcmVndWxhcgorICBleHByZXNzaW9ucy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MTUzOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyB0byBzaW1wbGlmeSB3aGl0ZSBib3gKKyAgdGVzdGluZyBvZiBnZW5lcmF0b3Igc3RhdGUgdXBkYXRlcworCistIElzc3VlICMxMzA2MjogQWRkZWQgaW5zcGVjdC5nZXRjbG9zdXJldmFycyB0byBzaW1wbGlmeSB0ZXN0aW5nIHN0YXRlZnVsCisgIGNsb3N1cmVzCisKKy0gSXNzdWUgIzExMDI0OiBGaXhlcyBhbmQgYWRkaXRpb25hbCB0ZXN0cyBmb3IgVGltZTJJbnRlcm5hbGRhdGUuCisKKy0gSXNzdWUgIzE0NjI2OiBMYXJnZSByZWZhY3RvcmluZyBvZiBmdW5jdGlvbnMgLyBwYXJhbWV0ZXJzIGluIHRoZSBvcyBtb2R1bGUuCisgIE1hbnkgZnVuY3Rpb25zIG5vdyBzdXBwb3J0ICJkaXJfZmQiIGFuZCAiZm9sbG93X3N5bWxpbmtzIiBwYXJhbWV0ZXJzOworICBzb21lIGFsc28gc3VwcG9ydCBhY2NlcHRpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgaW4gcGxhY2Ugb2YgYSBwYXRoCisgIHN0cmluZy4gIEFkZGVkIG9zLnN1cHBvcnRfKiBjb2xsZWN0aW9ucyBhcyBMQllMIGhlbHBlcnMuICBSZW1vdmVkIG1hbnkKKyAgZnVuY3Rpb25zIG9ubHkgcHJldmlvdXNseSBzZWVuIGluIDMuMyBhbHBoYSByZWxlYXNlcyAob2Z0ZW4gc3RhcnRpbmcgd2l0aAorICAiZiIgb3IgImwiLCBvciBlbmRpbmcgd2l0aCAiYXQiKS4gIE9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFNlcmhpeSBTdG9yY2hha2E7CisgIGltcGxlbWVudGVkIGJ5IExhcnJ5IEhhc3RpbmdzLgorCistIElzc3VlICMxNTAwODogSW1wbGVtZW50IFBFUCAzNjIgIlNpZ25hdHVyZSBPYmplY3RzIi4KKyAgUGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWU6ICMxNTEzODogYmFzZTY0LnVybHNhZmVfe2VuLGRlfWNvZGUoKSBhcmUgbm93IDMtNHggZmFzdGVyLgorCistIElzc3VlICM0NDQ1ODI6IEFkZCBzaHV0aWwud2hpY2gsIGZvciBmaW5kaW5nIHByb2dyYW1zIG9uIHRoZSBzeXN0ZW0gcGF0aC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBEZW1haW5lLCB3aXRoIGxhdGVyIGl0ZXJhdGlvbnMgYnkgSmFuIEtpbGxpYW4KKyAgYW5kIEJyaWFuIEN1cnRpbi4KKworLSBJc3N1ZSAjMTQ4Mzc6IFNTTCBlcnJvcnMgbm93IGhhdmUgYGBsaWJyYXJ5YGAgYW5kIGBgcmVhc29uYGAgYXR0cmlidXRlcworICBkZXNjcmliaW5nIHByZWNpc2VseSB3aGF0IGhhcHBlbmVkIGFuZCBpbiB3aGljaCBPcGVuU1NMIHN1Ym1vZHVsZS4gIFRoZQorICBzdHIoKSBvZiBhIFNTTEVycm9yIGlzIGFsc28gZW5oYW5jZWQgYWNjb3JkaW5nbHkuCisKKy0gSXNzdWUgIzk1Mjc6IGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2Qgd2lsbCBub3cgc3VwcGx5IGEgY2xhc3MKKyAgdGltZXpvbmUgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgc3lzdGVtIGxvY2FsIHRpbWV6b25lIHdoZW4KKyAgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLgogCiAtIElzc3VlICMxNDY1MzogZW1haWwudXRpbHMubWt0aW1lX3R6KCkgbm8gbG9uZ2VyIHJlbGllcyBvbiBzeXN0ZW0KICAgbWt0aW1lKCkgd2hlbiB0aW1lem9uZSBvZmZlc3QgaXMgc3VwcGxpZWQuCiAKKy0gSXNzdWUgIzE0Njg0OiB6bGliLmNvbXByZXNzb2JqKCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpIG5vdyBzdXBwb3J0IHRoZSB1c2UKKyAgb2YgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJpZXMuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbSBSdXNoaW5nLgorCiAtIEZpeCBHemlwRmlsZSdzIGhhbmRsaW5nIG9mIGZpbGVuYW1lcyBnaXZlbiBhcyBieXRlcyBvYmplY3RzLgogCistIElzc3VlICMxNDc3MjogUmV0dXJuIGRlc3RpbmF0aW9uIHZhbHVlcyBmcm9tIHNvbWUgc2h1dGlsIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTUwNjQ6IEltcGxlbWVudCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIG11bHRpcHJvY2Vzc2luZyB0eXBlcworCiAtIElzc3VlICMxNTEwMTogTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgogCistIElzc3VlICMxNDY1NzogVGhlIGZyb3plbiBpbnN0YW5jZSBvZiBpbXBvcnRsaWIgdXNlZCBmb3IgYm9vdHN0cmFwIGlzIG5vdworICBhbHNvIHRoZSBtb2R1bGUgaW1wb3J0ZWQgYXMgaW1wb3J0bGliLl9ib290c3RyYXAuCisKKy0gSXNzdWUgIzE0MDU1OiBBZGQgX19zaXplb2ZfXyBzdXBwb3J0IHRvIF9lbGVtZW50dHJlZS4KKworLSBJc3N1ZSAjMTUwNTQ6IEEgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscworICB3aXRoICdiJyBwcmVmaXhlcyB0byBiZSBpbmNvcnJlY3RseSB0b2tlbml6ZWQgaGFzIGJlZW4gZml4ZWQuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MDA2OiBBbGxvdyBlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlCisgIHRpbWUgb3IgZGF0ZXRpbWUgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKKyAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKKyAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCisKIC0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCiAgIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCiAgIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KIAotLSBJc3N1ZSAjMTAxMzM6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGRlYWxsb2NhdGUgYnVmZmVyIGlmIHNvY2tldCByZWFkCi0gIGZhaWxzLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KKy0gSXNzdWUgIzE0MDU5OiBJbXBsZW1lbnQgbXVsdGlwcm9jZXNzaW5nLkJhcnJpZXIuCisKKy0gSXNzdWUgIzE1MDYxOiBUaGUgaW5hcHByb3ByaWF0ZWx5IG5hbWVkIGhtYWMuc2VjdXJlX2NvbXBhcmUgaGFzIGJlZW4KKyAgcmVuYW1lZCB0byBobWFjLmNvbXBhcmVfZGlnZXN0LCByZXN0cmljdGVkIHRvIG9wZXJhdGluZyBvbiBieXRlcyBpbnB1dHMKKyAgb25seSBhbmQgaGFkIGl0cyBkb2N1bWVudGF0aW9uIHVwZGF0ZWQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgYm90aCBpdHMKKyAgaW50ZW50IGFuZCBpdHMgbGltaXRhdGlvbnMKKworLSBJc3N1ZSAjMTM4NDE6IE1ha2UgY2hpbGQgcHJvY2Vzc2VzIGV4aXQgdXNpbmcgc3lzLmV4aXQoKSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNDkzNjogY3Vyc2VzX3BhbmVsIHdhcyBjb252ZXJ0ZWQgdG8gUEVQIDMxMjEgYW5kIFBFUCAzODQgQVBJLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE2Njc1NDY6IE9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRtX3pvbmUgYW5kIHRtX2dtdG9mZiBmaWVsZHMKKyAgaW4gc3RydWN0IHRtLCB0aW1lLnN0cnVjdF90aW1lIG9iamVjdHMgcmV0dXJuZWQgYnkgdGltZS5nbXRpbWUoKSwKKyAgdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5zdHJwdGltZSgpIGZ1bmN0aW9ucyBub3cgaGF2ZSB0bV96b25lIGFuZAorICB0bV9nbXRvZmYgYXR0cmlidXRlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFBhdWwgQm9kZGllLgorCistIFJlbmFtZSBhZGp1c3RlZCBhdHRyaWJ1dGUgdG8gYWRqdXN0YWJsZSBpbiB0aW1lLmdldF9jbG9ja19pbmZvKCkgcmVzdWx0LgorCistIElzc3VlICMzNTE4OiBSZW1vdmUgcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgQmFzZU1hbmFnZXIuZnJvbV9hZGRyZXNzKCkKKyAgbWV0aG9kLgorCistIElzc3VlICMxMzg1NzogQWRkZWQgdGV4dHdyYXAuaW5kZW50KCkgZnVuY3Rpb24gKGluaXRpYWwgcGF0Y2ggYnkgRXpyYQorICBCZXJjaCkKKworLSBJc3N1ZSAjMjczNjogQWRkZWQgZGF0ZXRpbWUudGltZXN0YW1wKCkgbWV0aG9kLgogCiAtIElzc3VlICMxMzg1NDogTWFrZSBtdWx0aXByb2Nlc3NpbmcgcHJvcGVybHkgaGFuZGxlIG5vbi1pbnRlZ2VyCiAgIG5vbi1zdHJpbmcgYXJndW1lbnQgdG8gU3lzdGVtRXhpdC4KQEAgLTU1NCwxNCArMTQ4MCwxNzEgQEAKIC0gSXNzdWUgIzEyMTU3OiBNYWtlIHBvb2wubWFwKCkgZW1wdHkgaXRlcmFibGVzIGNvcnJlY3RseS4gIEluaXRpYWwKICAgcGF0Y2ggYnkgbW91YWQuCiAKKy0gSXNzdWUgIzExODIzOiBkaXNhc3NlbWJseSBub3cgc2hvd3MgYXJndW1lbnQgY291bnRzIG9uIGNhbGxzIHdpdGgga2V5d29yZCBhcmdzLgorCistIElzc3VlICMxNDcxMTogb3Muc3RhdF9mbG9hdF90aW1lcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKKy0gTFpNQUZpbGUgbm93IGFjY2VwdHMgdGhlIG1vZGVzICJyYiIvIndiIi8iYWIiIGFzIHN5bm9ueW1zIG9mICJyIi8idyIvImEiLgorCistIFRoZSBiejIgYW5kIGx6bWEgbW9kdWxlcyBub3cgZWFjaCBjb250YWluIGFuIG9wZW4oKSBmdW5jdGlvbiwgYWxsb3dpbmcKKyAgY29tcHJlc3NlZCBmaWxlcyB0byByZWFkaWx5IGJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYXMgd2VsbCBhcyBiaW5hcnkgbW9kZS4KKworLSBCWjJGaWxlLl9faW5pdF9fKCkgYW5kIExaTUFGaWxlLl9faW5pdF9fKCkgbm93IGFjY2VwdCBhIGZpbGUgb2JqZWN0IGFzIHRoZWlyCisgIGZpcnN0IGFyZ3VtZW50LCByYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSAiZmlsZW9iaiIgYXJndW1lbnQuCisKKy0gZ3ppcC5vcGVuKCkgbm93IGFjY2VwdHMgZmlsZSBvYmplY3RzIGFzIHdlbGwgYXMgZmlsZW5hbWVzLgorCiAtIElzc3VlICMxNDk5Mjogb3MubWFrZWRpcnMocGF0aCwgZXhpc3Rfb2s9VHJ1ZSkgd291bGQgcmFpc2UgYW4gT1NFcnJvcgogICB3aGVuIHRoZSBwYXRoIGV4aXN0ZWQgYW5kIGhhZCB0aGUgU19JU0dJRCBtb2RlIGJpdCBzZXQgd2hlbiBpdCB3YXMKICAgbm90IGV4cGxpY2l0bHkgYXNrZWQgZm9yLiAgVGhpcyBpcyBubyBsb25nZXIgYW4gZXhjZXB0aW9uIGFzIG1rZGlyCiAgIGNhbm5vdCBjb250cm9sIGlmIHRoZSBPUyBzZXRzIHRoYXQgYml0IGZvciBpdCBvciBub3QuCiAKKy0gSXNzdWUgIzE0OTg5OiBNYWtlIHRoZSBDR0kgZW5hYmxlIG9wdGlvbiB0byBodHRwLnNlcnZlciBhdmFpbGFibGUgdmlhIGNvbW1hbmQKKyAgbGluZS4KKworLSBJc3N1ZSAjMTQ5ODc6IEFkZCBhIG1pc3NpbmcgaW1wb3J0IHN0YXRlbWVudCB0byBpbnNwZWN0LgorCistIElzc3VlICMxMDc5OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBub3cgY29ycmVjdGx5IHBhcnNlcyBhbGwgdGhlIGV4YW1wbGVzCisgIGluIFJGQzIwNDcuICBUaGVyZSBpcyBhIG5lY2Vzc2FyeSB2aXNpYmxlIGJlaGF2aW9yIGNoYW5nZTogdGhlIGxlYWRpbmcgYW5kL29yCisgIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb24gQVNDSUkgcGFydHMgaXMgbm93IHByZXNlcnZlZC4KKworLSBJc3N1ZSAjMTQ5Njk6IEJldHRlciBoYW5kbGluZyBvZiBleGNlcHRpb24gY2hhaW5pbmcgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sKKwogLSBJc3N1ZSAjMTQ5NjI6IFVwZGF0ZSB0ZXh0IGNvbG9yaW5nIGluIElETEUgc2hlbGwgd2luZG93IGFmdGVyIGNoYW5naW5nCiAgIG9wdGlvbnMuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTQ5NjM6IENvbnZlcnQgY29udGV4dGxpYi5FeGl0U3RhY2suX19leGl0X18gdG8gdXNlIGFuIGl0ZXJhdGl2ZQorICBhbGdvcml0aG0gKFBhdGNoIGJ5IEFsb24gSG9yZXYpCisKKy0gSXNzdWUgIzE0Nzg1OiBBZGQgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkgdG8gaGVscCBkZWJ1ZyBsb3ctbGV2ZWwgbWVtb3J5CisgIGFsbG9jYXRpb24gaXNzdWVzCisKKy0gSXNzdWUgIzE0NDQzOiBFbnN1cmUgdGhhdCAucHkgZmlsZXMgYXJlIGJ5dGUtY29tcGlsZWQgd2l0aCB0aGUgY29ycmVjdCBQeXRob24KKyAgZXhlY3V0YWJsZSB3aXRoaW4gYmRpc3RfcnBtIGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgUlBNCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxMzc4MzogSW5hZHZlcnRlbnQgYWRkaXRpb25zIHRvIHRoZSBwdWJsaWMgQyBBUEkgaW4gdGhlIFBFUCAzODAKKyAgaW1wbGVtZW50YXRpb24gaGF2ZSBlaXRoZXIgYmVlbiByZW1vdmVkIG9yIG1hcmtlZCBhcyBwcml2YXRlIGludGVyZmFjZXMuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTUwODE6IERvY3VtZW50IFB5U3RhdGVfRmluZE1vZHVsZS4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNDgxNDogQWRkZWQgZmlyc3QgZHJhZnQgb2YgaXBhZGRyZXNzIG1vZHVsZSBBUEkgcmVmZXJlbmNlCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDc2OTogdGVzdF9jYXBpIG5vdyBoYXMgU2tpcGl0ZW1UZXN0LCB3aGljaCBjbGV2ZXJseSBjaGVja3MKKyAgZm9yICJwYXJpdHkiIGJldHdlZW4gUHlBcmdfUGFyc2VUdXBsZSgpIGFuZCB0aGUgUHl0aG9uL2dldGFyZ3MuYyBzdGF0aWMKKyAgZnVuY3Rpb24gc2tpcGl0ZW0oKSBmb3IgYWxsIHBvc3NpYmxlICJmb3JtYXQgdW5pdHMiLgorCistIHRlc3Rfbm50cGxpYiBub3cgdG9sZXJhdGVzIGJlaW5nIHJ1biBmcm9tIGJlaGluZCBOTlRQIGdhdGV3YXlzIHRoYXQgYWRkCisgICJYLUFudGl2aXJ1cyIgaGVhZGVycyB0byBhcnRpY2xlcworCistIElzc3VlICMxNTA0MzogdGVzdF9nZGIgaXMgbm93IHNraXBwZWQgZW50aXJlbHkgaWYgZ2RiIHNlY3VyaXR5IHNldHRpbmdzCisgIGJsb2NrIGxvYWRpbmcgb2YgdGhlIGdkYiBob29rcworCistIElzc3VlICMxNDk2MzogQWRkIHRlc3QgY2FzZXMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBiZWhhdmlvdXIKKyAgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sgKEluaXRpYWwgcGF0Y2ggYnkgQWxvbiBIb3JldikKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEzNTkwOiBJbXByb3ZlIHN1cHBvcnQgZm9yIE9TIFggWGNvZGUgNDoKKyAgICAqIFRyeSB0byBhdm9pZCBidWlsZGluZyBQeXRob24gb3IgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBwcm9ibGVtYXRpYworICAgICAgbGx2bS1nY2MgY29tcGlsZXIuCisgICAgKiBTaW5jZSBYY29kZSA0IHJlbW92ZXMgcHBjIHN1cHBvcnQsIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdworICAgICAgY2hlY2sgZm9yIHBwYyBjb21waWxlciBzdXBwb3J0IGFuZCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBwcGMgYW5kCisgICAgICBwcGM2NCBhcmNocyB3aGVuIG5vdCBhdmFpbGFibGUuCisgICAgKiBTaW5jZSBYY29kZSA0IG5vIGxvbmdlciBpbnN0YWxsIFNES3MgaW4gZGVmYXVsdCBsb2NhdGlvbnMsCisgICAgICBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cgcmV2ZXJ0IHRvIHVzaW5nIGluc3RhbGxlZCBoZWFkZXJzCisgICAgICBhbmQgbGlicyBpZiB0aGUgU0RLIHVzZWQgdG8gYnVpbGQgdGhlIGludGVycHJldGVyIGlzIG5vdAorICAgICAgYXZhaWxhYmxlLgorICAgICogVXBkYXRlIC4vY29uZmlndXJlIHRvIHVzZSBiZXR0ZXIgZGVmYXVsdHMgZm9yIHVuaXZlcnNhbCBidWlsZHM7CisgICAgICBpbiBwYXJ0aWN1bGFyLCAtLWVuYWJsZS11bml2ZXJzYWxzZGs9eWVzIHVzZXMgdGhlIFhjb2RlIGRlZmF1bHQKKyAgICAgIFNESyBhbmQgLS13aXRoLXVuaXZlcnNhbC1hcmNocyBub3cgZGVmYXVsdHMgdG8gImludGVsIiBpZiBwcGMKKyAgICAgIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzE0MjI1OiBGaXggVW5pY29kZSBzdXBwb3J0IGZvciBjdXJzZXMgKCMxMjU2Nykgb24gT1MgWAorCistIElzc3VlICMxNDkyODogRml4IGltcG9ydGxpYiBib290c3RyYXAgaXNzdWVzIGJ5IHVzaW5nIGEgY3VzdG9tIGV4ZWN1dGFibGUKKyAgKE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIpIHRvIGJ1aWxkIFB5dGhvbi9pbXBvcnRsaWIuaC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMzEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDgzNTogTWFrZSBwbGlzdGxpYiBvdXRwdXQgZW1wdHkgYXJyYXlzICYgZGljdHMgbGlrZSBPUyBYLgorICBQYXRjaCBieSBTaWRuZXkgU2FuIE1hcnTDrW4uCisKKy0gSXNzdWUgIzE0NzQ0OiBVc2UgdGhlIG5ldyBfUHlVbmljb2RlV3JpdGVyIGludGVybmFsIEFQSSB0byBzcGVlZCB1cAorICBzdHIlYXJncyBhbmQgc3RyLmZvcm1hdChhcmdzKS4KKworLSBJc3N1ZSAjMTQ5MzA6IE1ha2UgbWVtb3J5dmlldyBvYmplY3RzIHdlYWtyZWZhYmxlLgorCistIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQorICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KKworLSBJc3N1ZSAjMTQ4NTc6IGZpeCByZWdyZXNzaW9uIGluIHJlZmVyZW5jZXMgdG8gUEVQIDMxMzUgaW1wbGljaXQgX19jbGFzc19fCisgIGNsb3N1cmUgdmFyaWFibGUgKFJlb3BlbnMgaXNzdWUgIzEyMzcwKQorCistIElzc3VlICMxNDcxMiAoUEVQIDQwNSk6IFZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbXBsZW1lbnRlZCBieSBWaW5heSBTYWppcC4KKworLSBJc3N1ZSAjMTQ2NjAgKFBFUCA0MjApOiBOYW1lc3BhY2UgcGFja2FnZXMuIEltcGxlbWVudGVkIGJ5IEVyaWMgU21pdGguCisKKy0gSXNzdWUgIzE0NDk0OiBGaXggX19mdXR1cmVfXy5weSBhbmQgaXRzIGRvY3VtZW50YXRpb24gdG8gbm90ZSB0aGF0CisgIGFic29sdXRlIGltcG9ydHMgYXJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIDMuMCBpbnN0ZWFkIG9mIDIuNy4KKyAgUGF0Y2ggYnkgU3ZlbiBNYXJuYWNoLgorCistIElzc3VlICM5MjYwOiBBIGZpbmVyLWdyYWluZWQgaW1wb3J0IGxvY2suICBNb3N0IG9mIHRoZSBpbXBvcnQgc2VxdWVuY2UKKyAgbm93IHVzZXMgcGVyLW1vZHVsZSBsb2NrcyByYXRoZXIgdGhhbiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrLCBlbGltaW5hdGluZworICB3ZWxsLWtub3duIGlzc3VlcyB3aXRoIHRocmVhZHMgYW5kIGltcG9ydHMuCisKKy0gSXNzdWUgIzE0NjI0OiBVVEYtMTYgZGVjb2RpbmcgaXMgbm93IDN4IHRvIDR4IGZhc3RlciBvbiB2YXJpb3VzIGlucHV0cy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBhc2RsX3NlcSBhbmQgYXNkbF9pbnRfc2VxIGFyZSBub3cgUHlfc3NpemVfdCBzaXplZC4KKworLSBJc3N1ZSAjMTQxMzMgKFBFUCA0MTUpOiBJbXBsZW1lbnQgc3VwcHJlc3Npb24gb2YgX19jb250ZXh0X18gZGlzcGxheSB3aXRoIGFuCisgIGF0dHJpYnV0ZSBvbiBCYXNlRXhjZXB0aW9uLiBUaGlzIHJlcGxhY2VzIHRoZSBvcmlnaW5hbCBtZWNoYW5pc20gb2YgUEVQIDQwOS4KKworLSBJc3N1ZSAjMTQ0MTc6IE11dGF0aW5nIGEgZGljdCBkdXJpbmcgbG9va3VwIG5vdyByZXN0YXJ0cyB0aGUgbG9va3VwIGluc3RlYWQKKyAgb2YgcmFpc2luZyBhIFJ1bnRpbWVFcnJvciAodW5kb2VzIGlzc3VlICMxNDIwNSkuCisKKy0gSXNzdWUgIzE0NzM4OiBTcGVlZC11cCBVVEYtOCBkZWNvZGluZyBvbiBub24tQVNDSUkgZGF0YS4gIFBhdGNoIGJ5IFNlcmhpeQorICBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0NzAwOiBGaXggdHdvIGJyb2tlbiBhbmQgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZyBvdmVyZmxvdyBjaGVja3MKKyAgaW4gb2xkLXN0eWxlIHN0cmluZyBmb3JtYXR0aW5nLgorCistIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAorICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KKyAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDY5MDogVXNlIG1vbm90b25pYyBjbG9jayBpbnN0ZWFkIG9mIHN5c3RlbSBjbG9jayBpbiB0aGUgc2NoZWQsCisgIHN1YnByb2Nlc3MgYW5kIHRyYWNlIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE0OTU4OiBDaGFuZ2UgSURMRSBzeXN0YXggaGlnaGxpZ2h0aW5nIHRvIHJlY29nbml6ZSBhbGwgc3RyaW5nIGFuZAorICBieXRlIGxpdGVyYWxzIHN1cHBvcnRlZCBpbiBQeXRob24gMy4zLgorCiAtIElzc3VlICMxMDk5NzogUHJldmVudCBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBJRExFJ3MgIlJlY2VudCBGaWxlcyIgbWVudS4KIAogLSBJc3N1ZSAjMTQ0NDM6IFRlbGwgcnBtYnVpbGQgdG8gdXNlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgUHl0aG9uIGluCkBAIC01NzAsMjkgKzE2NTMsNzAgQEAKIC0gSXNzdWUgIzE0OTI5OiBTdG9wIElkbGUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgogICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzEyNTE1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IGlmIGl0IGdldHMgdG8gRU9GIHdoaWxlIHBhcnNpbmcKKyAgYSBNSU1FIHBhcnQgd2l0aG91dCBzZWVpbmcgdGhlIGNsb3NpbmcgTUlNRSBib3VuZGFyeS4KKwogLSBJc3N1ZSAjMTI1MTA6IEF0dGVtcHRpbmcgdG8gZ2V0IGludmFsaWQgdG9vbHRpcCBubyBsb25nZXIgY2xvc2VzIElkbGUuCiAgIE90aGVyIHRvb2x0aXBzcyBoYXZlIGJlZW4gY29ycmVjdGVkIG9yIGltcHJvdmVkIGFuZCB0aGUgbnVtYmVyIG9mIHRlc3RzCiAgIGhhcyBiZWVuIHRyaXBsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCistIElzc3VlICMxNjcyNTY4OiBlbWFpbCBub3cgYWx3YXlzIGRlY29kZXMgYmFzZTY0IHBheWxvYWRzLCBhZGRpbmcgcGFkZGluZyBhbmQKKyAgaWdub3Jpbmcgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGlmIG5lZWRlZCwgYW5kIHJlZ2lzdGVyaW5nIGRlZmVjdHMKKyAgZm9yIGFueSBzdWNoIHByb2JsZW1zLgorCistIElzc3VlICMxNDkyNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCB3aGVuIHRoZSBwYXJzZXIgZGVjaWRlcyB0aGF0IHRoZXJlCisgIGlzIGEgbWlzc2luZyBoZWFkZXIvYm9keSBzZXBhcmF0b3IgbGluZS4gIE1hbGZvcm1lZEhlYWRlckRlZmVjdCwgd2hpY2ggdGhlCisgIGV4aXN0aW5nIGNvZGUgd291bGQgbmV2ZXIgYWN0dWFsbHkgZ2VuZXJhdGUsIGlzIGRlcHJlY2F0ZWQuCisKIC0gSXNzdWUgIzEwMzY1OiBGaWxlIG9wZW4gZGlhbG9nIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIGV2ZW4gd2hlbgogICB0aGUgcGFyZW50IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSBkaWFsb2cuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCistIElzc3VlICM4NzM5OiBVcGRhdGVkIHNtdHBkIHRvIHN1cHBvcnQgUkZDIDUzMjEsIGFuZCBhZGRlZCBzdXBwb3J0IGZvciB0aGUKKyAgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uCisKKy0gSXNzdWUgIzY2NTE5NDogQWRkZWQgYSBsb2NhbHRpbWUgZnVuY3Rpb24gdG8gZW1haWwudXRpbHMgdG8gcHJvdmlkZSBhbgorICBhd2FyZSBsb2NhbCBkYXRldGltZSBmb3IgdXNlIGluIHNldHRpbmcgRGF0ZSBoZWFkZXJzLgorCistIElzc3VlICMxMjU4NjogQWRkZWQgbmV3IHByb3Zpc2lvbmFsIHBvbGljaWVzIHRoYXQgaW1wbGVtZW50IGNvbnZlbmllbnQKKyAgdW5pY29kZSBzdXBwb3J0IGZvciBlbWFpbCBoZWFkZXJzLiAgU2VlIFdoYXQncyBOZXcgZm9yIGRldGFpbHMuCisKKy0gSXNzdWUgIzE0NzMxOiBSZWZhY3RvcmVkIGVtYWlsIFBvbGljeSBmcmFtZXdvcmsgdG8gc3VwcG9ydCBmdWxsIGJhY2t3YXJkCisgIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yIGJ5IGRlZmF1bHQgeWV0IGFsbG93IGZvciB0aGUgaW50cm9kdWN0aW9uIG9mCisgIG5ldyBmZWF0dXJlcyB0aHJvdWdoIG5ldyBwb2xpY2llcy4gIE5vdGUgdGhhdCBQb2xpY3kubXVzdF9iZV83Yml0IGlzIHJlbmFtZWQKKyAgdG8gY3RlX3R5cGUuCisKIC0gSXNzdWUgIzE0ODc2OiBVc2UgdXNlci1zZWxlY3RlZCBmb250IGZvciBoaWdobGlnaHQgY29uZmlndXJhdGlvbi4KIAogLSBJc3N1ZSAjMTQ5MjA6IEZpeCB0aGUgaGVscCh1cmxsaWIucGFyc2UpIGZhaWx1cmUgb24gbG9jYWxlIEMgb24gdGVybWluYWxzLgogICBIYXZlIGFzY2lpIGNoYXJhY3RlcnMgaW4gaGVscC4KIAorLSBJc3N1ZSAjMTQ1NDg6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZQorICBydW5uaW5nIHRvIGNvcGUgd2l0aCBwb3NzaWJpbGl0eSBvZiBnYyBydW5uaW5nIGp1c3QgYWZ0ZXIgZm9yay4KKwogLSBJc3N1ZSAjMTQ4NjM6IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcy5mZG9wZW4oKSB0byByZWZsZWN0IHRoZQogICBmYWN0IHRoYXQgaXQncyBvbmx5IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBvcGVuKCkgYW55bW9yZS4KIAogLSBJc3N1ZSAjMTQwMzY6IEFkZCBhbiBhZGRpdGlvbmFsIGNoZWNrIHRvIHZhbGlkYXRlIHRoYXQgcG9ydCBpbiB1cmxwYXJzZSBkb2VzCiAgIG5vdCBnbyBpbiBpbGxlZ2FsIHJhbmdlIGFuZCByZXR1cm5zIE5vbmUuCiAKKy0gSXNzdWUgIzE0ODYyOiBBZGQgbWlzc2luZyBuYW1lcyB0byBvcy5fX2FsbF9fCisKIC0gSXNzdWUgIzE0ODc1OiBVc2UgZmxvYXQoJ2luZicpIGluc3RlYWQgb2YgZmxvYXQoJzFlNjY2NjYnKSBpbiB0aGUganNvbiBtb2R1bGUuCiAKKy0gSXNzdWUgIzEzNTg1OiBBZGRlZCBjb250ZXh0bGliLkV4aXRTdGFjaworCistIFBFUCAzMTQ0LCBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIHRoZSBpcGFkZHJlc3MgbW9kdWxlCisKIC0gSXNzdWUgIzE0NDI2OiBDb3JyZWN0IHRoZSBEYXRlIGZvcm1hdCBpbiBFeHBpcmVzIGF0dHJpYnV0ZSBvZiBTZXQtQ29va2llCiAgIEhlYWRlciBpbiBDb29raWUucHkuCiAKKy0gSXNzdWUgIzE0NTg4OiBUaGUgdHlwZXMgbW9kdWxlIG5vdyBwcm92aWRlIG5ld19jbGFzcygpIGFuZCBwcmVwYXJlX2NsYXNzKCkKKyAgZnVuY3Rpb25zIHRvIHN1cHBvcnQgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgY2xhc3MgY3JlYXRpb24uIFBhdGNoIGJ5CisgIERhbmllbCBVcmJhbiBhbmQgTmljayBDb2dobGFuLgorCistIElzc3VlICMxMzE1MjogQWxsb3cgdG8gc3BlY2lmeSBhIGN1c3RvbSB0YWJzaXplIGZvciBleHBhbmRpbmcgdGFicyBpbgorICB0ZXh0d3JhcC4gUGF0Y2ggYnkgSm9obiBGZXVlcnN0ZWluLgorCiAtIElzc3VlICMxNDcyMTogU2VuZCB0aGUgY29ycmVjdCAnQ29udGVudC1sZW5ndGg6IDAnIGhlYWRlciB3aGVuIHRoZSBib2R5IGlzIGFuCiAgIGVtcHR5IHN0cmluZyAnJy4gSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCiAKQEAgLTYwNiwyNSArMTczMCw3NiBAQAogICB3aGVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkKICAgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzEyMDk4OiBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyBub3cgc3RhcnRzIGNoaWxkIHByb2Nlc3NlcworICB1c2luZyB0aGUgc2FtZSBzeXMuZmxhZ3MgYXMgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkKKyAgU2VyZ2V5IE1lemVudHNldi4KKworLSBJc3N1ZSAjMTMwMzE6IFNtYWxsIHNwZWVkLXVwIGZvciB0YXJmaWxlIHdoZW4gdW56aXBwaW5nIHRhcmZpbGVzLgorICBQYXRjaCBieSBKdXN0aW4gUGVlbC4KKworLSBJc3N1ZSAjMTQ3ODA6IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oKSBub3cgaGFzIGEgYGBjYWRlZmF1bHRgYCBhcmd1bWVudAorICB0byB1c2UgdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUuICBJbml0aWFsIHBhdGNoIGJ5IEphbWVzIE9ha2xleS4KKwogLSBJc3N1ZSAjMTQ4Mjk6IEZpeCBiaXNlY3QgYW5kIHJhbmdlKCkgaW5kZXhpbmcgd2l0aCBsYXJnZSBpbmRpY2VzCiAgICg+PSAyICoqIDMyKSB1bmRlciA2NC1iaXQgV2luZG93cy4KIAorLSBJc3N1ZSAjMTQ3MzI6IFRoZSBfY3N2IG1vZHVsZSBub3cgdXNlcyBQRVAgMzEyMSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTQ4MDk6IEFkZCBIVFRQIHN0YXR1cyBjb2RlcyBpbnRyb2R1Y2VkIGJ5IFJGQyA2NTg1IHRvIGh0dHAuc2VydmVyCisgIGFuZCBodHRwLmNsaWVudC4gUGF0Y2ggYnkgRXVuZ0p1biBZaS4KKwogLSBJc3N1ZSAjMTQ3Nzc6IHRraW50ZXIgbWF5IHJldHVybiB1bmRlY29kZWQgVVRGLTggYnl0ZXMgYXMgYSBzdHJpbmcgd2hlbgogICBhY2Nlc3NpbmcgdGhlIFRrIGNsaXBib2FyZC4gIE1vZGlmeSBjbGlwYm9hZF9nZXQoKSB0byBmaXJzdCByZXF1ZXN0IHR5cGUKICAgVVRGOF9TVFJJTkcgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHJlcXVlc3RlZCBpbiBhbiBYMTEgd2luZG93aW5nCiAgIGVudmlyb25tZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgZGVmYXVsdCB0eXBlIFNUUklORyBpZiB0aGF0IGZhaWxzLgogICBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KIAorLSBJc3N1ZSAjMTQ3NzM6IEZpeCBvcy5md2FsaygpIGZhaWxpbmcgb24gZGFuZ2xpbmcgc3ltbGlua3MuCisKIC0gSXNzdWUgIzEyNTQxOiBCZSBsZW5pZW50IHdpdGggcXVvdGVzIGFyb3VuZCBSZWFsbSBmaWVsZCBvZiBIVFRQIEJhc2ljCiAgIEF1dGhlbnRhdGlvbiBpbiB1cmxsaWIyLgogCistIElzc3VlICMxNDgwNzogbW92ZSB1bmRvY3VtZW50ZWQgdGFyZmlsZS5maWxlbW9kZSgpIHRvIHN0YXQuZmlsZW1vZGUoKSBhbmQgYWRkCisgIGRvYyBlbnRyeS4gQWRkIHRhcmZpbGUuZmlsZW1vZGUgYWxpYXMgd2l0aCBkZXByZWNhdGlvbiB3YXJuaW5nLgorCistIElzc3VlICMxMzgxNTogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIG5vdyByZXR1cm5zIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NTMyOiBBZGQgYSBzZWN1cmVfY29tcGFyZSgpIGhlbHBlciB0byB0aGUgaG1hYyBtb2R1bGUsIHRvIG1pdGlnYXRlCisgIHRpbWluZyBhdHRhY2tzLiBQYXRjaCBieSBKb24gT2JlcmhlaWRlLgorCistIEFkZCBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKS4KKworLSBJc3N1ZSAjMTQzNjY6IFN1cHBvcnQgbHptYSBjb21wcmVzc2lvbiBpbiB6aXAgZmlsZXMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzEzOTU5OiBJbnRyb2R1Y2UgaW1wb3J0bGliLmZpbmRfbG9hZGVyKCkgYW5kIGRvY3VtZW50CisgIGltcC5maW5kX21vZHVsZS9sb2FkX21vZHVsZSBhcyBkZXByZWNhdGVkLgorCistIElzc3VlICMxNDA4Mjogc2h1dGlsLmNvcHkyKCkgbm93IGNvcGllcyBleHRlbmRlZCBhdHRyaWJ1dGVzLCBpZiBwb3NzaWJsZS4KKyAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKS9nZXRfZmlsZW5hbWUoKSBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLmxvYWRfbW9kdWxlKCkgaGF2ZSB0aGVpciBzaW5nbGUKKyAgYXJndW1lbnQgYmUgb3B0aW9uYWwuIEFsbG93cyBmb3IgdGhlIHJlcGxhY2VtZW50IChhbmQgdGh1cyBkZXByZWNhdGlvbikgb2YKKyAgaW1wLmxvYWRfc291cmNlKCkvbG9hZF9wYWNrYWdlKCkvbG9hZF9jb21waWxlZCgpLgorCistIElzc3VlICMxMzk1OTogaW1wLmdldF9zdWZmaXhlcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBuZXcKKyAgYXR0cmlidXRlcyBvbiBpbXBvcnRsaWIubWFjaGluZXJ5OiBTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLCBhbmQgRVhURU5TSU9OX1NVRkZJWEVTLiBUaGlzCisgIGxlZCB0byBhbiBpbmRpcmVjdCBkZXByZWNhdGlvbiBvZiBpbnNwZWN0LmdldG1vZHVsZWluZm8oKS4KKwogLSBJc3N1ZSAjMTQ2NjI6IFByZXZlbnQgc2h1dGlsIGZhaWx1cmVzIG9uIE9TIFggd2hlbiBkZXN0aW5hdGlvbiBkb2VzIG5vdAogICBzdXBwb3J0IGNoZmxhZyBvcGVyYXRpb25zLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCiAtIElzc3VlICMxNDE1NzogRml4IHRpbWUuc3RycHRpbWUgZmFpbGluZyB3aXRob3V0IGEgeWVhciBvbiBGZWJydWFyeSAyOXRoLgogICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKLS0gSXNzdWUgIzE0NzY4OiBvcy5wYXRoLmV4cGFuZHVzZXIoJ34vYScpIGRvZXNuJ3Qgd29ya3MgY29ycmVjdGx5IHdoZW4gSE9NRSBpcyAnLycuCistIElzc3VlICMxNDc1MzogTWFrZSBtdWx0aXByb2Nlc3NpbmcncyBoYW5kbGluZyBvZiBuZWdhdGl2ZSB0aW1lb3V0cworICB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uIDMuMi4KKworLSBJc3N1ZSAjMTQ1ODM6IEZpeCBpbXBvcnRsaWIgYnVnIHdoZW4gYSBwYWNrYWdlJ3MgX19pbml0X18ucHkgd291bGQgZmlyc3QKKyAgaW1wb3J0IG9uZSBvZiBpdHMgbW9kdWxlcyB0aGVuIHJhaXNlIGFuIGVycm9yLgogCiAtIElzc3VlICMxNDc0MTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgRWxsaXBzaXMgKCcuLi4nKSBpbiBwYXJzZXIgbW9kdWxlLgogCkBAIC02MzMsNiArMTgwOCwxMzggQEAKIAogLSBJc3N1ZSAjMTQ3MDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yICdyYWlzZSAuLi4gZnJvbScgaW4gcGFyc2VyIG1vZHVsZS4KIAorLSBBZGQgc3VwcG9ydCBmb3IgdGltZW91dHMgdG8gdGhlIGFjcXVpcmUoKSBtZXRob2RzIG9mCisgIG11bHRpcHJvY2Vzc2luZydzIGxvY2svc2VtYXBob3JlL2NvbmRpdGlvbiBwcm94aWVzLgorCistIElzc3VlICMxMzk4OTogQWRkIHN1cHBvcnQgZm9yIHRleHQgbW9kZSB0byBnemlwLm9wZW4oKS4KKworLSBJc3N1ZSAjMTQxMjc6IFRoZSBvcy5zdGF0KCkgcmVzdWx0IG9iamVjdCBub3cgcHJvdmlkZXMgdGhyZWUgYWRkaXRpb25hbAorICBmaWVsZHM6IHN0X2N0aW1lX25zLCBzdF9tdGltZV9ucywgYW5kIHN0X2F0aW1lX25zLCBwcm92aWRpbmcgdGhvc2UgdGltZXMgYXMgYW4KKyAgaW50ZWdlciB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4gIFRoZSBmdW5jdGlvbnMgb3MudXRpbWUoKSwgb3MubHV0aW1lcygpLAorICBhbmQgb3MuZnV0aW1lcygpIG5vdyBhY2NlcHQgYSBuZXcgcGFyYW1ldGVyLCBucywgd2hpY2ggYWNjZXB0cyBtdGltZSBhbmQgYXRpbWUKKyAgYXMgaW50ZWdlcnMgd2l0aCBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKKy0gSXNzdWUgIzE0MTI3IGFuZCAjMTAxNDg6IHNodXRpbC5jb3B5c3RhdCBub3cgcHJlc2VydmVzIGV4YWN0IG10aW1lIGFuZCBhdGltZQorICBvbiBmaWxlc3lzdGVtcyBwcm92aWRpbmcgbmFub3NlY29uZCByZXNvbHV0aW9uLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTU6IEJyaW5nIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5IHN1cHBvcnQgdXAgdG8gZGF0ZSB3aXRoCisgIHRoZSBQeXRob24gMy4zIEdyYW1tYXIuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNDQ3MjogVXBkYXRlIC5naXRpZ25vcmUuIFBhdGNoIGJ5IE1hdGVqIENlcGwuCisKKy0gVXBncmFkZSBXaW5kb3dzIGxpYnJhcnkgdmVyc2lvbnM6IGJ6aXAgMS4wLjYsIE9wZW5TU0wgMS4wLjFjLgorCistIElzc3VlICMxNDY5MzogVW5kZXIgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBoYXNobGliJ3MgZmFsbGJhY2sgbW9kdWxlcyBhcmUKKyAgYWx3YXlzIGNvbXBpbGVkLCBldmVuIGlmIE9wZW5TU0wgaXMgcHJlc2VudCBhdCBidWlsZCB0aW1lLgorCistIElzc3VlICMxMzIxMDogV2luZG93cyBidWlsZCBub3cgdXNlcyBWUzIwMTAsIHBvcnRlZCBmcm9tIFZTMjAwOC4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDU4ODogVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgYWNjdXJhdGVseSBkb2N1bWVudHMgdGhlIFB5dGhvbiAzCisgIGNsYXNzIGRlZmluaXRpb24gcHJvY2Vzcy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLgorCistIElzc3VlICMxNDk0MzogQ29ycmVjdCBhIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHdpbnJlZy5PcGVuS2V5CisgIGFuZCBjb3JyZWN0bHkgbGlzdCB0aGUgYXJndW1lbnQgbmFtZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZXhwbGFuYXRpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDAxLU1heS0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgorCistIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4gaXMgY2xvc2VkLgorCistIElzc3VlICMxNDUyMTogTWFrZSByZXN1bHQgb2YgZmxvYXQoJ25hbicpIGFuZCBmbG9hdCgnLW5hbicpIG1vcmUgY29uc2lzdGVudAorICBhY3Jvc3MgcGxhdGZvcm1zLgorCistIElzc3VlICMxNDY0NjogX19pbXBvcnRfXygpIHNldHMgX19sb2FkZXJfXyBpZiB0aGUgbG9hZGVyIGRpZCBub3QuCisKKy0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5tZXRhX3BhdGguIElmCisgIHN5cy5tZXRhX3BhdGggaXMgZm91bmQgdG8gYmUgZW1wdHksIHJhaXNlIEltcG9ydFdhcm5pbmcuCisKKy0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5wYXRoX2hvb2tzLiBJZgorICBzeXMucGF0aF9ob29rcyBpcyBmb3VuZCB0byBiZSBlbXB0eSwgYSB3YXJuaW5nIHdpbGwgYmUgcmFpc2VkLiBOb25lIGlzIG5vdworICBpbnNlcnRlZCBpbnRvIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlmIG5vIGZpbmRlciB3YXMgZGlzY292ZXJlZC4gVGhpcyBhbHNvCisgIG1lYW5zIGltcC5OdWxsSW1wb3J0ZXIgaXMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgdXNlZC4KKworLSBJc3N1ZSAjMTM5MDM6IEltcGxlbWVudCBQRVAgNDEyLiBJbmRpdmlkdWFsIGRpY3Rpb25hcnkgaW5zdGFuY2VzIGNhbiBub3cgc2hhcmUKKyAgdGhlaXIga2V5cyB3aXRoIG90aGVyIGRpY3Rpb25hcmllcy4gQ2xhc3NlcyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIHRvIHNoYXJlCisgIHRoZWlyIGluc3RhbmNlIGRpY3Rpb25hcnkga2V5cyBmb3IgaW1wcm92ZWQgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZS4KKworLSBJc3N1ZSAjMTE2MDMgKGFnYWluKTogU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IKKyAgd2hlbiByZXByKCkgb3Igc3RyKCkgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gb2JqZWN0LgorCistIElzc3VlICMxNDY1ODogRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYQorICBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisKKy0gSXNzdWUgIzE0NjMwOiBGaXggYSBtZW1vcnkgYWNjZXNzIGJ1ZyBmb3IgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3Mgb2YgaW50CisgIHdpdGggdmFsdWUgMC4KKworLSBJc3N1ZSAjMTQzMzk6IFNwZWVkIGltcHJvdmVtZW50cyB0byBiaW4sIG9jdCBhbmQgaGV4IGZ1bmN0aW9ucy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCisgIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzE0Mzg1OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIGEgY3VzdG9tIHR5cGUgZm9yIHRoZSBfX2J1aWx0aW5zX18KKyAgbmFtZXNwYWNlLCBpbnN0ZWFkIG9mIGEgZGljdC4gSXQgY2FuIGJlIHVzZWQgZm9yIHNhbmRib3hpbmcgZm9yIGV4YW1wbGUuCisgIFJhaXNlIGFsc28gYSBOYW1lRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvciBpZiBfX2J1aWxkX2NsYXNzX18gbmFtZSBpZiBub3QKKyAgZm91bmQgaW4gX19idWlsdGluc19fLgorCistIElzc3VlICMxMjU5OTogQmUgbW9yZSBzdHJpY3QgaW4gYWNjZXB0aW5nIE5vbmUgY29tcGFyZWQgdG8gYSBmYWxzZS1saWtlCisgIG9iamVjdCBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIgYW5kCisgIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci4KKworLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgorCistIElzc3VlICMxNDU5MjogQXR0ZW1wdGluZyBhIHJlbGF0aXZlIGltcG9ydCB3L28gX19wYWNrYWdlX18gb3IgX19uYW1lX18gc2V0IGluCisgIGdsb2JhbHMgcmFpc2VzIGEgS2V5RXJyb3IuCisKKy0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgorCistIElzc3VlICMxMDg1NDogVGhlIEltcG9ydEVycm9yIHJhaXNlZCB3aGVuIGFuIGV4dGVuc2lvbiBtb2R1bGUgb24gV2luZG93cworICBmYWlscyB0byBpbXBvcnQgbm93IHVzZXMgdGhlIG5ldyBwYXRoIGFuZCBuYW1lIGF0dHJpYnV0ZXMgZnJvbQorICBJc3N1ZSAjMTU1OTU0OS4KKworLSBJc3N1ZSAjMTM4ODk6IENoZWNrIGFuZCAoaWYgbmVjZXNzYXJ5KSBzZXQgRlBVIGNvbnRyb2wgd29yZCBiZWZvcmUgY2FsbGluZworICBhbnkgb2YgdGhlIGR0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZgorICBQeXRob24uICBUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgorCistIF9faW1wb3J0X18oKSBub3cgbWF0Y2hlcyBQRVAgMzI4IGFuZCBkb2N1bWVudGF0aW9uIGJ5IGRlZmF1bHRpbmcgJ2luZGV4JyB0byAwCisgIGluc3RlYWQgb2YgLTEgYW5kIHJlbW92aW5nIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIHZhbHVlcy4KKworLSBJc3N1ZSAjMjM3NzogTWFrZSBpbXBvcnRsaWIgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9faW1wb3J0X18oKS4KKworLSBJc3N1ZSAjMTU1OTU0OTogSW1wb3J0RXJyb3Igbm93IGhhcyAnbmFtZScgYW5kICdwYXRoJyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNldAorICB1c2luZyBrZXl3b3JkIGFyZ3VtZW50cyB0byBpdHMgY29uc3RydWN0b3IuIFRoZXkgYXJlIGN1cnJlbnRseSBub3Qgc2V0IGJ5CisgIGltcG9ydCBhcyB0aGV5IGFyZSBtZWFudCBmb3IgdXNlIGJ5IGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTQ0NzQ6IFNhdmUgYW5kIHJlc3RvcmUgZXhjZXB0aW9uIHN0YXRlIGluIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKKyAgd2hpbGUgd3JpdGluZyBlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGEgdW5oYW5kbGVkIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCisgIGJ5IFN1bWFuIFNhaGEuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KKworLSBJc3N1ZSAjMTQzNzE6IFN1cHBvcnQgYnppcDIgaW4gemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCiAtIElzc3VlICMxMzE4MzogRml4IHBkYiBza2lwcGluZyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKICAgc3RlcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCkBAIC02NDMsOSArMTk1MCwyNSBAQAogCiAtIElzc3VlICM5MTU0OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kIGZ1bmN0aW9uIGFubm90YXRpb25zLgogCistIElzc3VlICM2MDg1OiBJbiBodHRwLnNlcnZlci5weSBTaW1wbGVIVFRQU2VydmVyLmFkZHJlc3Nfc3RyaW5nIHJldHVybnMgdGhlCisgIGNsaWVudCBpcCBhZGRyZXNzIGluc3RlYWQgY2xpZW50IGhvc3RuYW1lLiBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzE0MzA5OiBEZXByZWNhdGUgdGltZS5jbG9jaygpLCB1c2UgdGltZS5wZXJmX2NvdW50ZXIoKSBvcgorICB0aW1lLnByb2Nlc3NfdGltZSgpIGluc3RlYWQuCisKKy0gSXNzdWUgIzE0NDI4OiBJbXBsZW1lbnQgdGhlIFBFUCA0MTguIEFkZCB0aW1lLmdldF9jbG9ja19pbmZvKCksCisgIHRpbWUucGVyZl9jb3VudGVyKCkgYW5kIHRpbWUucHJvY2Vzc190aW1lKCkgZnVuY3Rpb25zLCBhbmQgcmVuYW1lCisgIHRpbWUuc3RlYWR5KCkgdG8gdGltZS5tb25vdG9uaWMoKS4KKworLSBJc3N1ZSAjMTQ2NDY6IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyKCkgbm93IHNldHMgX19sb2FkZXJfXyBhbmQKKyAgX19wYWNrYWdlX18gKHdoZW4gcG9zc2libGUpLgorCiAtIElzc3VlICMxNDY2NDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEKICAgdGVzdCBjbGFzcyB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlIChpLmUuIGEgbWl4aW4pLgogCistIElzc3VlICM0ODkyOiBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbnMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCisgIG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucy4gIFBhdGNoIGJ5IFJpY2hhcmQgT3Vka2VyayAoc2J0KS4KKwogLSBJc3N1ZSAjMTQxNjA6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQgdG8gcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuCiAgIHRoZSBsaW5rcyB3ZXJlIG5vdCBsb2NhdGVkIGluIGFuIGFyY2hpdmUgc3ViZGlyZWN0b3J5LgogCkBAIC02NTUsMTg4ICsxOTc4LDEwMCBAQAogLSBJc3N1ZSAjMTM2ODQ6IEZpeCBodHRwbGliIHR1bm5lbCBpc3N1ZSBvZiBpbmZpbml0ZSBsb29wcyBmb3IgY2VydGFpbiBzaXRlcwogICB3aGljaCBzZW5kIEVPRiB3aXRob3V0IHRyYWlsaW5nIFxyXG4uCiAKKy0gSXNzdWUgIzE0NjA1OiBBZGQgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLCBpbXBvcnRsaWIubWFjaGluZXJ5LihGaWxlRmluZGVyLAorICBTb3VyY2VGaWxlTG9hZGVyLCBTb3VyY2VsZXNzRmlsZUxvYWRlciwgRXh0ZW5zaW9uRmlsZUxvYWRlcikuCisKKy0gSXNzdWUgIzEzOTU5OiBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKS9zb3VyY2VfZnJvbV9jYWNoZSgpIG5vdyBmb2xsb3cKKyAgb3MucGF0aC5qb2luKCkvc3BsaXQoKSBzZW1hbnRpY3MgZm9yIHBhdGggbWFuaXB1bGF0aW9uIGluc3RlYWQgb2YgaXRzIHByaW9yLAorICBjdXN0b20gc2VtYW50aWNzIG9mIGNhcmluZyB0aGUgcmlnaHQtbW9zdCBwYXRoIHNlcGFyYXRvciBmb3J3YXJkIGluIHBhdGgKKyAgam9pbmluZy4KKworLSBJc3N1ZSAjMjE5MzogQWxsb3cgIjoiIGNoYXJhY3RlciBpbiBDb29raWUgTkFNRSB2YWx1ZXMuCisKKy0gSXNzdWUgIzE0NjI5OiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIHdpbGwgc3BlY2lmeSB0aGUgZmlsZW5hbWUgaW4gdGhlCisgIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpZiBmb3VuZCBhdCByZWFkbGluZS5fX3NlbGZfXy5uYW1lLgorCiAtIElzc3VlICMxNDYyOTogUmFpc2UgU3ludGF4RXJyb3IgaW4gdG9rZW5pemVyLmRldGVjdF9lbmNvZGluZyBpZiB0aGUKICAgZmlyc3QgdHdvIGxpbmVzIGhhdmUgbm9uLVVURi04IGNoYXJhY3RlcnMgd2l0aG91dCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbi4KIAogLSBJc3N1ZSAjMTQzMDg6IEZpeCBhbiBleGNlcHRpb24gd2hlbiBhICJkdW1teSIgdGhyZWFkIGlzIGluIHRoZSB0aHJlYWRpbmcKICAgbW9kdWxlJ3MgYWN0aXZlIGxpc3QgYWZ0ZXIgYSBmb3JrKCkuCiAKKy0gSXNzdWUgIzExNzUwOiBUaGUgV2luZG93cyBBUEkgZnVuY3Rpb25zIHNjYXR0ZXJlZCBpbiB0aGUgX3N1YnByb2Nlc3MgYW5kCisgIF9tdWx0aXByb2Nlc3Npbmcud2luMzIgbW9kdWxlcyBub3cgbGl2ZSBpbiBhIHNpbmdsZSBtb2R1bGUgIl93aW5hcGkiLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MDg3OiBtdWx0aXByb2Nlc3Npbmc6IGFkZCBDb25kaXRpb24ud2FpdF9mb3IoKS4gUGF0Y2ggYnkgc2J0LgorCiAtIElzc3VlICMxNDUzODogSFRNTFBhcnNlciBjYW4gbm93IHBhcnNlIGNvcnJlY3RseSBzdGFydCB0YWdzIHRoYXQgY29udGFpbgogICBhIGJhcmUgJy8nLgogCiAtIElzc3VlICMxNDQ1MjogU3lzTG9nSGFuZGxlciBubyBsb25nZXIgaW5zZXJ0cyBhIFVURi04IEJPTSBpbnRvIHRoZSBtZXNzYWdlLgogCistIElzc3VlICMxNDM4NjogRXhwb3NlIHRoZSBkaWN0X3Byb3h5IGludGVybmFsIHR5cGUgYXMgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZS4KKworLSBJc3N1ZSAjMTM5NTk6IE1ha2UgaW1wLnJlbG9hZCgpIGFsd2F5cyB1c2UgYSBtb2R1bGUncyBfX2xvYWRlcl9fIHRvIHBlcmZvcm0KKyAgdGhlIHJlbG9hZC4KKworLSBJc3N1ZSAjMTM5NTk6IEFkZCBpbXAucHkgYW5kIHJlbmFtZSB0aGUgYnVpbHQtaW4gbW9kdWxlIHRvIF9pbXAsIGFsbG93aW5nIGZvcgorICByZS1pbXBsZW1lbnRpbmcgcGFydHMgb2YgdGhlIG1vZHVsZSBpbiBwdXJlIFB5dGhvbi4KKwogLSBJc3N1ZSAjMTM0OTY6IEZpeCBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gYmlzZWN0LmJpc2VjdCBhbGdvcml0aG0gd2hlbiBhcHBsaWVkCiAgIHRvIGEgY29sbGVjdGlvbiBvZiBzaXplID4gc3lzLm1heHNpemUgLyAyLgogCistIEhhdmUgaW1wb3J0bGliIHRha2UgYWR2YW50YWdlIG9mIEltcG9ydEVycm9yJ3MgbmV3ICduYW1lJyBhbmQgJ3BhdGgnCisgIGF0dHJpYnV0ZXMuCisKIC0gSXNzdWUgIzE0Mzk5OiB6aXBmaWxlIG5vdyByZWNvZ25pemVzIHRoYXQgdGhlIGFyY2hpdmUgaGFzIGJlZW4gbW9kaWZpZWQgZXZlbgogICBpZiBvbmx5IHRoZSBjb21tZW50IGlzIGNoYW5nZWQuICBJbiBhZGRpdGlvbiwgdGhlIFR5cGVFcnJvciB0aGF0IHJlc3VsdHMgZnJvbQogICB0cnlpbmcgdG8gc2V0IGEgbm9uLWJpbmFyeSB2YWx1ZSBhcyBhIGNvbW1lbnQgaXMgbm93IHJhaXNlZCBhdCB0aGUgdGltZQogICB0aGUgY29tbWVudCBpcyBzZXQgcmF0aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlIHppcGZpbGUgaXMgd3JpdHRlbi4KIAorLSB0cmFjZS5Db3ZlcmFnZVJlc3VsdHMuaXNfaWdub3JlZF9maWxlbmFtZSgpIG5vdyBpZ25vcmVzIGFueSBuYW1lIHRoYXQgc3RhcnRzCisgIHdpdGggIjwiIGFuZCBlbmRzIHdpdGggIj4iIGluc3RlYWQgb2Ygc3BlY2lhbC1jYXNpbmcgIjxzdHJpbmc+IiBhbmQKKyAgIjxkb2N0ZXN0ICIuCisKKy0gSXNzdWUgIzEyNTM3OiBUaGUgbWFpbGJveCBtb2R1bGUgbm8gbG9uZ2VyIGRlcGVuZHMgb24ga25vd2xlZGdlIG9mIGludGVybmFsCisgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgTWVzc2FnZSBvYmplY3QuCisKIC0gSXNzdWUgIzc5Nzg6IHNvY2tldHNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwogICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgogICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCiAKKy0gSXNzdWUgIzE0NTIyOiBBdm9pZCBkdXBsaWNhdGluZyBzb2NrZXQgaGFuZGxlcyBpbiBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi4KKyAgUGF0Y2ggYnkgc2J0LgorCistIERvbid0IFB5X0RFQ1JFRiBOVUxMIHZhcmlhYmxlIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuCisKKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKIC0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgogICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzMwMzM6IEFkZCBkaXNwbGF5b2YgcGFyYW1ldGVyIHRvIHRraW50ZXIgZm9udC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKIC0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCiAgIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1VOSVggdHlwZSBhZGRyZXNzIHVuZGVyCiAgIFdpbmRvd3MuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzgwMjMxMDogR2VuZXJhdGUgYWx3YXlzIHVuaXF1ZSB0a2ludGVyIGZvbnQgbmFtZXMgaWYgbm90IGRpcmVjdGx5IHBhc3NlZC4KKwogLSBJc3N1ZSAjMTQxNTE6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKICAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfUElQRSB0eXBlIGFkZHJlc3MgdW5kZXIKICAgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgogCi0tIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKLSAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCistIElzc3VlICMxNDQ5MzogVXNlIGd2ZnMtb3BlbiBvciB4ZGctb3BlbiBpbiB3ZWJicm93c2VyLgogCi0tIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAotICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCitCdWlsZAorLS0tLS0KIAotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCi0gIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAotICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCi0KLS0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbwotICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KLQotLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwotICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCi0KLS0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKLSAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgotCi0tIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCi0KLS0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCi0KLS0gSXNzdWUgIzE0MDYyOiBIZWFkZXIgb2JqZWN0cyBub3cgY29ycmVjdGx5IHJlc3BlY3QgdGhlICdsaW5lc2VwJyBzZXR0aW5nCi0gIHdoZW4gcHJvY2Vzc2VkIGJ5IEJ5dGVzUGFyc2VyICh3aGljaCBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlIHVzZXMpLgotCi0tIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCi0gIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KLQotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQotLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCi0gIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCi0KLS0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCi0KLS0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKLSAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KLQotLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKLSAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCi0gIGZpeGVkLgotCi0tIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQotICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBjb250YWluZXJzIChXZWFrU2V0LCBXZWFrS2V5RGljdGlvbmFyeSwKLSAgV2Vha1ZhbHVlRGljdGlvbmFyeSkgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lIG9iamVjdHMKLSAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCi0gIE8obikuCi0KLS0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgotICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCi0KLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucwotICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gRml4IHRoZSBsZWFrIG9mIGEgZGljdCBpbiB0aGUgdGltZSBtb2R1bGUgd2hlbiB1c2VkIGluIGFuIGVtYmVkZGVkCi0gIGludGVycHJldGVyIHRoYXQgaXMgcmVwZWF0ZWRseSBpbml0aWFsaXplZCBhbmQgc2h1dGRvd24gYW5kIHJlaW5pdGlhbGl6ZWQuCi0KLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKLSAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCi0KLS0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCi0gIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCi0gIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKLSAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCistICJtYWtlIHRvdWNoIiB3aWxsIG5vdyB0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBpbnRvIE1lcmN1cmlhbCwKKyAgYWZ0ZXIgYSAiaGcgdXBkYXRlIiB3aGljaCBmYWlsZWQgdG8gYnJpbmcgdGhlIHRpbWVzdGFtcHMgaW50byB0aGUgcmlnaHQgb3JkZXIuCiAKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMxNTUzOTogQWRkZWQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgVG9vbHMvc2NyaXB0cy9waW5kZW50LnB5LgotCi0tIElzc3VlICMxNTMyNDogRml4IHJlZ3J0ZXN0IHBhcnNpbmcgb2YgLS1mcm9tZmlsZSwgLS1tYXRjaCwgYW5kIC0tcmFuZG9taXplCi0gIG9wdGlvbnMuCi0KLS0gSXNzdWUgIzE2NjY0OiBBZGQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgZ2xvYidzIGJlaGF2aW91ciBjb25jZXJuaW5nIGVudHJpZXMKLSAgc3RhcnRpbmcgd2l0aCBhICIuIi4gIFBhdGNoIGJ5IFNlYmFzdGlhbiBLcmVmdC4KLQotLSBJc3N1ZSAjMTU4NzI6IEFkZCB0ZXN0cyBmb3IgYSAzLjMgcmVncmVzc2lvbiB3aGljaCBjYXVzZWQgdGhlIG5ldyBmZC1iYXNlZAotICBzaHV0aWwucm10cmVlIG5vdCBpZ25vcmUgYWxsIGVycm9ycy4gQWxzbyBhZGQgYSB0ZXN0IGVuc3VyaW5nIHRoYXQgcm10cmVlCi0gIGZhaWxzIHdoZW4gYmVpbmcgY2FsbGVkIG9uIGEgc3ltbGluay4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTY1NTk6IEFkZCBtb3JlIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUsIGluY2x1ZGluZyBzb21lIGZyb20gdGhlCi0gIG9mZmljaWFsIHRlc3Qgc3VpdGUgYXQganNvbi5vcmcuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTMwNDogRml4IHdhcm5pbmcgbWVzc2FnZSB3aGVuIG9zLmNoZGlyKCkgZmFpbHMgaW5zaWRlCi0gIHRlc3Quc3VwcG9ydC50ZW1wX2N3ZCgpLiAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBUZXN0TWFpbGRpci50ZXN0X2NyZWF0ZV90bXAuIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQotICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKLSAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgotCi0tIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcKLSAgdHdvIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUKLSAgb2YgdGVzdC4KLQotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkCi0gIGlucHV0IGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgotCi0tIElzc3VlICMxNTQ5NjogQWRkIGRpcmVjdG9yeSByZW1vdmFsIGhlbHBlcnMgZm9yIHRlc3RzIG9uIFdpbmRvd3MuCi0gIFBhdGNoIGJ5IEplcmVteSBLbG90aC4KLQotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZwotICB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cwotCi0tIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQotICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgotICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSB0ZXN0X25udHBsaWIgbm93IHRvbGVyYXRlcyBiZWluZyBydW4gZnJvbSBiZWhpbmQgTk5UUCBnYXRld2F5cyB0aGF0IGFkZAotICAiWC1BbnRpdmlydXMiIGhlYWRlcnMgdG8gYXJ0aWNsZXMKLQotLSBJc3N1ZSAjMTUwNDM6IHRlc3RfZ2RiIGlzIG5vdyBza2lwcGVkIGVudGlyZWx5IGlmIGdkYiBzZWN1cml0eSBzZXR0aW5ncwotICBibG9jayBsb2FkaW5nIG9mIHRoZSBnZGIgaG9va3MKLQogLSBJc3N1ZSAjMTQwMjY6IEluIHRlc3RfY21kX2xpbmVfc2NyaXB0LCBjaGVjayB0aGF0IHN5cy5hcmd2IGlzIHBvcHVsYXRlZAogICBjb3JyZWN0bHkgZm9yIHRoZSB2YXJpb3VzIGludm9jYXRpb24gYXBwcm9hY2hlcyAoUGF0Y2ggYnkgSmFzb24gWWVvKQogCkBAIC04NDYsMTg5ICsyMDgxLDMxMCBAQAogLSBJc3N1ZSAjMTQ1ODk6IFVwZGF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Igc2hhMjU2LnRicy1pbnRlcm5ldC5jb20sIGZpeGluZwogICBhIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KIAotQnVpbGQKLS0tLS0tCistIElzc3VlICMxNDM1NTogUmVncnRlc3Qgbm93IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcsIGFuZAorICB3aWxsIHVzZSBpdCBpZiBhIHRlc3QgZmlsZSBjb250YWlucyBubyBgdGVzdF9tYWluYCBtZXRob2QuCiAKLS0gSXNzdWUgIzE2OTUzOiBGaXggc29ja2V0IG1vZHVsZSBjb21waWxhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aAotICBIQVZFX0JST0tFTl9QT0xMLiBQYXRjaCBieSBKZWZmcmV5IEFybXN0cm9uZy4KLQotLSBJc3N1ZSAjMTY4MzY6IEVuYWJsZSBJUHY2IHN1cHBvcnQgZXZlbiBpZiBJUHY2IGlzIGRpc2FibGVkIG9uIHRoZSBidWlsZCBob3N0LgotCi0tIElzc3VlICMxNjU5MzogSGF2ZSBCU0QgJ21ha2UgLXMnIGRvIHRoZSByaWdodCB0aGluZywgdGhhbmtzIHRvIERhbmllbCBTaGFoYWYKLQotLSBJc3N1ZSAjMTYyNjI6IGZpeCBvdXQtb2Ytc3JjLXRyZWUgYnVpbGRzLCBpZiBtZXJjdXJpYWwgaXMgbm90IGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTU5MjM6IGZpeCBhIG1pc3Rha2UgaW4gYXNkbF9jLnB5IHRoYXQgcmVzdWx0ZWQgaW4gYSBUeXBlRXJyb3IgYWZ0ZXIKLSAgMjgwMWJmODc1YTI0IChzZWUgIzE1ODAxKS4KLQotLSBJc3N1ZSAjMTE3MTU6IEZpeCBtdWx0aWFyY2ggZGV0ZWN0aW9uIHdpdGhvdXQgaGF2aW5nIERlYmlhbiBkZXZlbG9wbWVudAotICB0b29scyAoZHBrZy1kZXYpIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTU4MTk6IE1ha2Ugc3VyZSB3ZSBjYW4gYnVpbGQgUHl0aG9uIG91dC1vZi10cmVlIGZyb20gYSByZWFkb25seQotICBzb3VyY2UgZGlyZWN0b3J5LiAgKFNvbWV3aGF0IHJlbGF0ZWQgdG8gSXNzdWUgIzk4NjAuKQotCi0tIElzc3VlICMxNTgyMjogRW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1NTYwOiBGaXggYnVpbGRpbmcgX3NxbGl0ZTMgZXh0ZW5zaW9uIG9uIE9TIFggd2l0aCBhbiBTREsuCi0KLS0gSXNzdWUgIzg4NDc6IERpc2FibGUgQ09NREFUIGZvbGRpbmcgaW4gV2luZG93cyBQR08gYnVpbGRzLgotCi0tIElzc3VlICMxNDE5NzogRm9yIE9TIFggZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlIGxpbmtzIHRvIHRoZSBzaGFyZWQKLSAgbGlicmFyeSBhcmUgY3JlYXRlZCB3aXRoIHRoZSBwcm9wZXIgQUJJIHN1ZmZpeC4KLQotLSBJc3N1ZSAjMTQ0NzI6IFVwZGF0ZSAuZ2l0aWdub3JlLiBQYXRjaCBieSBNYXRlaiBDZXBsLgotCi0tIFRoZSBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIE9wZW5TU0wgMS4wLjBqIGFuZCBiemlwMiAxLjAuNi4KLQotLSBJc3N1ZSAjMTQ1NTc6IEZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgotCi0tIElzc3VlICMxNDQzNzogRml4IGJ1aWxkaW5nIHRoZSBfaW8gbW9kdWxlIHVuZGVyIEN5Z3dpbi4KLQotLSBJc3N1ZSAjMTQzODc6IERvIG5vdCBpbmNsdWRlIGFjY3UuaCBmcm9tIFB5dGhvbi5oLgotCi0tIElzc3VlICMxNDM1OTogT25seSB1c2UgT19DTE9FWEVDIGluIF9wb3NpeG1vZHVsZS5jIGlmIGl0IGlzIGRlZmluZWQuCi0gIEJhc2VkIG9uIHBhdGNoIGZyb20gSGVydsOpIENvYXRhbmhheS4KLQotLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMzMwMTogdXNlIGFzdC5saXRlcmFsX2V2YWwoKSBpbnN0ZWFkIG9mIGV2YWwoKSBpbiBUb29scy9pMThuL21zZ2ZtdC5weQotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi1Eb2N1bWVudGF0aW9uCitUb29scyAvIERlbW9zCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzEzMDk0OiBhZGQgIldoeSBkbyBsYW1iZGFzIGRlZmluZWQgaW4gYSBsb29wIHdpdGggZGlmZmVyZW50IHZhbHVlcwotICBhbGwgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdD8iIHByb2dyYW1taW5nIEZBUS4KKy0gSXNzdWUgIzM1NjE6IFRoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaGFzIGFuIG9wdGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvcgorICBwbGFjaW5nIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGludG8gdGhlIHN5c3RlbSAiUGF0aCIgZW52aXJvbm1lbnQgdmFyaWFibGUuCiAKLS0gSXNzdWUgIzE0OTAxOiBVcGRhdGUgcG9ydGlvbnMgb2YgdGhlIFdpbmRvd3MgRkFRLgotICBQYXRjaCBieSBBc2hpc2ggTml0aW4gUGF0aWwuCi0KLS0gSXNzdWUgIzE1OTkwOiBJbXByb3ZlIGFyZ3VtZW50L3BhcmFtZXRlciBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMzUzODogSW1wcm92ZSBzdHIoKSBhbmQgb2JqZWN0Ll9fc3RyX18oKSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNjQwMDogVXBkYXRlIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGljaCB2ZXJzaW9ucyBvZiBhIGdpdmVuIHBhY2thZ2UKLSAgUHlQSSBkaXNwbGF5cy4KLQotLSBJc3N1ZSAjMTU2Nzc6IERvY3VtZW50IHRoYXQgemxpYiBhbmQgZ3ppcCBhY2NlcHQgYSBjb21wcmVzc2lvbiBsZXZlbCBvZiAwIHRvCi0gIG1lYW4gJ25vIGNvbXByZXNzaW9uJy4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICM4MDQwOiBhZGRlZCBhIHZlcnNpb24gc3dpdGNoZXIgdG8gdGhlIGRvY3VtZW50YXRpb24uICBQYXRjaCBieQotICBZdXJ5IFNlbGl2YW5vdi4KLQotLSBJc3N1ZSAjMTYxMTU6IEltcHJvdmUgc3VicHJvY2Vzcy5Qb3BlbigpIGRvY3VtZW50YXRpb24gYXJvdW5kIGFyZ3MsIHNoZWxsLAotICBhbmQgZXhlY3V0YWJsZSBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCi0gIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCi0KLS0gSXNzdWUgIzE1NTMzOiBDbGFyaWZ5IGRvY3MgYW5kIGFkZCB0ZXN0cyBmb3Igc3VicHJvY2Vzcy5Qb3BlbigpJ3MgY3dkCi0gIGFyZ3VtZW50LgotCi0tIElzc3VlICMxNTk3OTogSW1wcm92ZSB0aW1laXQgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTYwMzY6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBidWlsdC1pbiBpbnQoKSdzIHNpZ25hdHVyZSBhbmQKLSAgYXJndW1lbnRzLgotCi0tIElzc3VlICMxNTkzNTogQ2xhcmlmaWNhdGlvbiBvZiBhcmdwYXJzZSBkb2NzLCByZTogYWRkX2FyZ3VtZW50KCkgdHlwZSBhbmQKLSAgZGVmYXVsdCBhcmd1bWVudHMuICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTE5NjQ6IERvY3VtZW50IGEgY2hhbmdlIGluIHYzLjIgdG8gdGhlIGJlaGF2aW9yIG9mIHRoZSBpbmRlbnQKLSAgcGFyYW1ldGVyIG9mIGpzb24gZW5jb2Rpbmcgb3BlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGpzb24gbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KLSAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgotCi0tIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5Ci0gIERhbmllbCBFbGxpcy4KLQotLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDgyOiBQcm9wZXJseSBkb2N1bWVudCB0aGUgZGVmYXVsdCAnbGV2ZWwnIHZhbHVlIGZvciBfX2ltcG9ydF9fKCkKLSAgd2hpbGUgd2FybmluZyBhYm91dCB1c2luZyBuZWdhdGl2ZSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weQotICBtb2R1bGUgYW5kIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gZXhlYyBvcgotICBleGVjZmlsZSgpLgotCi0tIElzc3VlICM4Nzk5OiBGaXggYW5kIGltcHJvdmUgdGhlIHRocmVhZGluZy5Db25kaXRpb24gZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTQ5NDM6IENvcnJlY3QgYSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlIGZvciB3aW5yZWcuT3BlbktleQotICBhbmQgY29ycmVjdGx5IGxpc3QgdGhlIGFyZ3VtZW50IG5hbWVzIGluIHRoZSBmdW5jdGlvbidzIGV4cGxhbmF0aW9uLgotCi0tIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgotCi0tIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBmaWxlY21wLmRpcmNtcCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCi0gIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU1Mzk6IEZpeCBhIG51bWJlciBvZiBidWdzIGluIFRvb2xzL3NjcmlwdHMvcGluZGVudC5weS4gIE5vdwotICBwaW5kZW50LnB5IHdvcmtzIHdpdGggYSAid2l0aCIgc3RhdGVtZW50LiAgcGluZGVudC5weSBubyBsb25nZXIgcHJvZHVjZXMKLSAgaW1wcm9wZXIgaW5kZW50YXRpb24uICBwaW5kZW50LnB5IG5vdyB3b3JrcyB3aXRoIGNvbnRpbnVlZCBsaW5lcyBicm9rZW4gYWZ0ZXIKLSAgImNsYXNzIiBvciAiZGVmIiBrZXl3b3JkcyBhbmQgd2l0aCBjb250aW51YXRpb25zIGF0IHRoZSBzdGFydCBvZiBsaW5lLgotCi0tIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0Njk1OiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBzdGFycmVkIGFzc2lnbm1lbnRzIGluCi0gIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LgorLSBJc3N1ZSAjMTMxNjU6IHN0cmluZ2JlbmNoIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIFRvb2xzL3N0cmluZ2JlbmNoIGZvbGRlci4KKyAgSXQgdXNlZCB0byBsaXZlIGluIGl0cyBvd24gU1ZOIHByb2plY3QuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0qUmVsZWFzZSBkYXRlOiAxMC1BcHItMjAxMioKKypSZWxlYXNlIGRhdGU6IDAxLUFwci0yMDEyKgogCi1CdWlsZAotLS0tLS0KK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNDM4NzogV29yayBhcm91bmQgYSBwcm9ibGVtIGJ1aWxkaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHVuZGVyIFdpbmRvd3MKLSAgYnkgdW5kZWZpbmluZyBgYHNtYWxsYGAgYmVmb3JlIHVzZSBpbiB0aGUgUHl0aG9uIGhlYWRlcnMuCistIElzc3VlICMxNjgzMzY4OiBvYmplY3QuX19uZXdfXyBhbmQgb2JqZWN0Ll9faW5pdF9fIHJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZXkKKyAgYXJlIHBhc3NlZCBhcmd1bWVudHMgYW5kIHRoZWlyIGNvbXBsZW1lbnRhcnkgbWV0aG9kIGlzIG5vdCBvdmVycmlkZGVuLgogCistIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcworICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMyByZWxlYXNlIGNhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKKyAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCiAKLSpSZWxlYXNlIGRhdGU6IDE4LU1hci0yMDEyKgorLSBJc3N1ZSAjMTQzMzQ6IFByZXZlbnQgaW4gYSBzZWdmYXVsdCBpbiB0eXBlLl9fZ2V0YXR0cmlidXRlX18gd2hlbiBpdCB3YXMgbm90CisgIHBhc3NlZCBzdHJpbmdzLgorCistIElzc3VlICMxNDY5NjI5OiBBbGxvdyBjeWNsZXMgdGhyb3VnaCBhbiBvYmplY3QncyBfX2RpY3RfXyBzbG90IHRvIGJlCisgIGNvbGxlY3RlZC4gKEZvciBleGFtcGxlIGlmIGBgeC5fX2RpY3RfXyBpcyB4YGApLgorCistIElzc3VlICMxNDIwNTogZGljdCBsb29rdXAgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZSBkaWN0IGlzIG1vZGlmaWVkCisgIGR1cmluZyBhIGxvb2t1cC4KKworLSBJc3N1ZSAjMTQyMjA6IFdoZW4gYSBnZW5lcmF0b3IgaXMgZGVsZWdhdGluZyB0byBhbm90aGVyIGl0ZXJhdG9yIHdpdGggdGhlCisgIHlpZWxkIGZyb20gc3ludGF4LCBpdCBuZWVkcyB0byBoYXZlIGl0cyBgYGdpX3J1bm5pbmdgYCBmbGFnIHNldCB0byBUcnVlLgorCistIElzc3VlICMxNDQzNTogUmVtb3ZlIGRlZGljYXRlZCBibG9jayBhbGxvY2F0b3IgZnJvbSBmbG9hdG9iamVjdC5jIGFuZCByZWx5CisgIG9uIHRoZSBQeU9iamVjdF9NYWxsb2MoKSBhcGkgbGlrZSBhbGwgb3RoZXIgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ0NzE6IEZpeCBhIHBvc3NpYmxlIGJ1ZmZlciBvdmVycnVuIGluIHRoZSB3aW5yZWcgbW9kdWxlLgorCistIElzc3VlICMxNDI4ODogQWxsb3cgdGhlIHNlcmlhbGl6YXRpb24gb2YgYnVpbHRpbiBpdGVyYXRvcnMKIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKLSAgb24gV2luZG93cy4KKy0gSXNzdWUgIzE0MzAwOiBVbmRlciBXaW5kb3dzLCBzb2NrZXRzIGNyZWF0ZWQgdXNpbmcgc29ja2V0LmR1cCgpIG5vdyBhbGxvdworICBvdmVybGFwcGVkIEkvTy4gIFBhdGNoIGJ5IHNidC4KIAotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCistIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKKyAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzE0NDA2OiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIHVzaW5nIGBgY29uY3VycmVudC5mdXR1cmVzLndhaXQoCisgIHJldHVybl93aGVuPUFMTF9DT01QTEVURUQpYGAuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCisKKy0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93CisgIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKKyAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCisgIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKKyAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgorCistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCisKKy0gSXNzdWUgIzE0Mjk1OiBBZGQgdW5pdHRlc3QubW9jaworCistIElzc3VlICM3NjUyOiBBZGQgLS13aXRoLXN5c3RlbS1saWJtcGRlYyBvcHRpb24gdG8gY29uZmlndXJlIGZvciBsaW5raW5nCisgIHRoZSBfZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhbiBpbnN0YWxsZWQgbGlibXBkZWMuCisKKy0gSXNzdWUgIzE0MzgwOiBNSU1FVGV4dCBub3cgZGVmYXVsdHMgdG8gdXRmLTggd2hlbiBwYXNzZWQgbm9uLUFTQ0lJIHVuaWNvZGUKKyAgd2l0aCBubyBjaGFyc2V0IHNwZWNpZmllZC4KKworLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCisgIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAorICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCisKKy0gSXNzdWUgIzE0MjA0OiBUaGUgc3NsIG1vZHVsZSBub3cgaGFzIHN1cHBvcnQgZm9yIHRoZSBOZXh0IFByb3RvY29sCisgIE5lZ290aWF0aW9uIGV4dGVuc2lvbiwgaWYgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgbGlicmFyeS4KKyAgUGF0Y2ggYnkgQ29saW4gTWFyYy4KKworLSBJc3N1ZSAjMzAzNTogVW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIgYXJlIG1hcmtlZCBhcyBwZW5kaW5nIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbworICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KKworLSBJc3N1ZSAjNzY1MjogSW50ZWdyYXRlIHRoZSBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGxpYm1wZGVjIGxpYnJhcnkgdG8gc3BlZWQKKyAgdXAgdGhlIGRlY2ltYWwgbW9kdWxlLiBQZXJmb3JtYW5jZSBnYWlucyBvZiB0aGUgbmV3IEMgaW1wbGVtZW50YXRpb24gYXJlCisgIGJldHdlZW4gMTB4IGFuZCAxMDB4LCBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uLgorCistIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCisgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKKworLSBJc3N1ZSAjMTQyNjk6IFNNVFBEIG5vdyBjb25mb3JtcyB0byB0aGUgUkZDIGFuZCByZXF1aXJlcyBhIEhFTE8gY29tbWFuZAorICBiZWZvcmUgTUFJTCwgUkNQVCwgb3IgREFUQS4KKworLSBJc3N1ZSAjMTM2OTQ6IGFzeW5jaHJvbm91cyBjb25uZWN0IGluIGFzeW5jb3JlLmRpc3BhdGNoZXIgZG9lcyBub3Qgc2V0IGFkZHIKKyAgYXR0cmlidXRlLgorCistIElzc3VlICMxNDM0NDogZml4ZWQgdGhlIHJlcHIgb2YgZW1haWwucG9saWN5IG9iamVjdHMuCisKKy0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCisgIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KKworLSBJc3N1ZSAjMTQzMzU6IG11bHRpcHJvY2Vzc2luZydzIGN1c3RvbSBQaWNrbGVyIHN1YmNsYXNzIG5vdyBpbmhlcml0cyBmcm9tCisgIHRoZSBDLWFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLiAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCisKKy0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCisKKy0gSW1wcm92ZSB0aGUgbWVtb3J5IHV0aWxpemF0aW9uIGFuZCBzcGVlZCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlLgorCistIElzc3VlICMxNDIyMjogVXNlIHRoZSBuZXcgdGltZS5zdGVhZHkoKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRpbWUudGltZSgpIGZvcgorICB0aW1lb3V0IGluIHF1ZXVlIGFuZCB0aHJlYWRpbmcgbW9kdWxlcyB0byBub3QgYmUgYWZmZWN0ZWQgb2Ygc3lzdGVtIHRpbWUKKyAgdXBkYXRlLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIGxpYjJ0bzMucHl0cmVlLkJhc2UuZ2V0X3ByZWZpeC9zZXRfcHJlZml4LgogCiAtIElzc3VlICMxNDIzNDogQ1ZFLTIwMTItMDg3NjogUmFuZG9taXplIGhhc2hlcyBvZiB4bWwgYXR0cmlidXRlcyBpbiB0aGUgaGFzaAogICB0YWJsZSBpbnRlcm5hbCB0byB0aGUgcHlleHBhdCBtb2R1bGUncyBjb3B5IG9mIHRoZSBleHBhdCBsaWJyYXJ5IHRvIGF2b2lkIGEKICAgZGVuaWFsIG9mIHNlcnZpY2UgZHVlIHRvIGhhc2ggY29sbGlzaW9ucy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0gd2l0aCBzb21lCiAgIG1vZGlmaWNhdGlvbnMgYnkgdGhlIGV4cGF0IHByb2plY3QuCiAKKy0gSXNzdWUgIzE0MjAwOiBJZGxlIHNoZWxsIGNyYXNoIG9uIHByaW50aW5nIG5vbi1CTVAgdW5pY29kZSBjaGFyYWN0ZXIuCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSBJc3N1ZSAjMTI4MTg6IGZvcm1hdCBhZGRyZXNzIG5vIGxvbmdlciBuZWVkbGVzc2x5IFwgZXNjYXBlcyAoKXMgaW4gbmFtZXMgd2hlbgorICB0aGUgbmFtZSBlbmRzIHVwIGJlaW5nIHF1b3RlZC4KIAotKlJlbGVhc2UgZGF0ZTogMjQtRmViLTIwMTIqCistIElzc3VlICMxNDA2MjogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBmb2xkcyBIZWFkZXIgb2JqZWN0cywKKyAgaW5jbHVkaW5nIHVzaW5nIGxpbmVzZXAgd2hlbiBmb2xkaW5nLgorCistIElzc3VlICMxMzgzOTogV2hlbiBpbnZva2VkIG9uIHRoZSBjb21tYW5kLWxpbmUsIHRoZSBwc3RhdHMgbW9kdWxlIG5vdworICBhY2NlcHRzIHNldmVyYWwgZmlsZW5hbWVzIG9mIHByb2ZpbGUgc3RhdCBmaWxlcyBhbmQgbWVyZ2VzIHRoZW0gYWxsLgorICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjMTQyOTE6IEVtYWlsIG5vdyBkZWZhdWx0cyB0byB1dGYtOCBmb3Igbm9uLUFTQ0lJIHVuaWNvZGUgaGVhZGVycworICBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byAyLjcuCisKKy0gSXNzdWUgIzk4OTcxMjogU3VwcG9ydCB1c2luZyBUayB3aXRob3V0IGEgbWFpbmxvb3AuCisKKy0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCisKKy0gSXNzdWUgIzM4MzU6IFJlZnVzZSB0byB1c2UgdW50aHJlYWRlZCBUY2wgaW4gdGhyZWFkZWQgUHl0aG9uLgorCistIElzc3VlICMyODQzOiBBZGQgbmV3IFRrIEFQSSB0byBUa2ludGVyLgorCistIElzc3VlICMxNDE4NDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KKyAgTWFjIE9TIFggdG8gYXZvaWQgaW50ZXJwcmV0ZXIgY3Jhc2hlcyB3aGVuIHVzaW5nIHRocmVhZHMgb24gMTAuNy4KKworLSBJc3N1ZSAjMTQxODA6IGRhdGV0aW1lLmRhdGUuZnJvbXRpbWVzdGFtcCgpLAorICBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKQorICBub3cgcmFpc2UgYW4gT1NFcnJvciBpbnN0ZWFkIG9mIFZhbHVlRXJyb3IgaWYgbG9jYWx0aW1lKCkgb3IgZ210aW1lKCkgZmFpbGVkLgorCistIElzc3VlICMxNDE4MDogdGltZS5jdGltZSgpLCBnbXRpbWUoKSwgdGltZS5sb2NhbHRpbWUoKSwKKyAgZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpIG5vdyByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvciwgaW5zdGVhZCBvZgorICBhIFZhbHVlRXJyb3IsIGlmIHRoZSB0aW1lc3RhbXAgZG9lcyBub3QgZml0IGluIHRpbWVfdC4KKworLSBJc3N1ZSAjMTQxODA6IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpIG5vdyByb3VuZCBtaWNyb3NlY29uZHMgdG93YXJkcyB6ZXJvCisgIGluc3RlYWQgb2Ygcm91bmRpbmcgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8uCisKKy0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCisKKy0gSXNzdWUgIzExNzg4NjM6IFNlcGFyYXRlIGluaXRpYWxpc2F0aW9uIGZyb20gc2V0dGluZyB3aGVuIGluaXRpYWxpemluZworICBUa2ludGVyLlZhcmlhYmxlczsgaGFybW9uaXplIGV4Y2VwdGlvbnMgdG8gVmFsdWVFcnJvcjsgb25seSBkZWxldGUgdmFyaWFibGVzCisgIHRoYXQgaGF2ZSBub3QgYmVlbiBkZWxldGVkOyBhc3NlcnQgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTQxMDQ6IEltcGxlbWVudCB0aW1lLm1vbm90b25pYygpIG9uIE1hYyBPUyBYLCBwYXRjaCB3cml0dGVuIGJ5CisgIE5pY2hvbGFzIFJpbGV5LgorCistIElzc3VlICMxMzM5NDogdGhlIGFpZmMgbW9kdWxlIG5vdyB1c2VzIHdhcm5pbmdzLndhcm4oKSB0byBzaWduYWwgd2FybmluZ3MuCisKKy0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKKyAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KKworLSBJc3N1ZSAjMTQyMjM6IGN1cnNlcy5hZGRjaCgpIGlzIG5vIG1vcmUgbGltaXRlZCB0byB0aGUgcmFuZ2UgMC0yNTUgd2hlbiB0aGUKKyAgUHl0aG9uIGN1cnNlcyBpcyBub3QgbGlua2VkIHRvIGxpYm5jdXJzZXN3LiBJdCB3YXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQKKyAgaW4gUHl0aG9uIDMuM2ExLgorCistIElzc3VlICMxNDE2ODogQ2hlY2sgZm9yIHByZXNlbmNlIG9mIEVsZW1lbnQuX2F0dHJzIGluIG1pbmlkb20gYmVmb3JlCisgIGFjY2Vzc2luZyBpdC4KKworLSBJc3N1ZSAjMTIzMjg6IEZpeCBtdWx0aXByb2Nlc3NpbmcncyB1c2Ugb2Ygb3ZlcmxhcHBlZCBJL08gb24gV2luZG93cy4KKyAgQWxzbywgYWRkIGEgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdChybGlzdCwgdGltZW91dD1Ob25lKSBmdW5jdGlvbgorICBmb3IgcG9sbGluZyBtdWx0aXBsZSBvYmplY3RzIGF0IG9uY2UuICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MDA3OiBBY2NlcHQgaW5jb21wbGV0ZSBUcmVlQnVpbGRlciBvYmplY3RzIChtaXNzaW5nIHN0YXJ0LCBlbmQsCisgIGRhdGEgb3IgY2xvc2UgbWV0aG9kKSBmb3IgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsLgorICBEcm9wIHRoZSBuby1vcCBUcmVlQnVpbGRlcigpLnhtbCgpIG1ldGhvZCBmcm9tIHRoZSBDIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxNDIxMDogcGRiIG5vdyBoYXMgdGFiLWNvbXBsZXRpb24gbm90IG9ubHkgZm9yIGNvbW1hbmQgbmFtZXMsIGJ1dAorICBhbHNvIGZvciB0aGVpciBhcmd1bWVudHMsIHdoZXJldmVyIHBvc3NpYmxlLgorCistIElzc3VlICMxNDMxMDogU29ja2V0cyBjYW4gbm93IGJlIHdpdGggb3RoZXIgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgdXNpbmcKKyAgdGhlIGFwaSBzb2NrZXQuc29ja2V0LnNoYXJlKCkgYW5kIHNvY2tldC5mcm9tc2hhcmUoKS4KKworLSBJc3N1ZSAjMTA1NzY6IFRoZSBnYyBtb2R1bGUgbm93IGhhcyBhICdjYWxsYmFja3MnIG1lbWJlciB0aGF0IHdpbGwgZ2V0CisgIGNhbGxlZCB3aGVuIGdhcmJhZ2UgY29sbGVjdGlvbiB0YWtlcyBwbGFjZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KKworLSBJc3N1ZSAjMTQzODc6IERvIG5vdCBpbmNsdWRlIGFjY3UuaCBmcm9tIFB5dGhvbi5oLgorCistIElzc3VlICMxNDM1OTogT25seSB1c2UgT19DTE9FWEVDIGluIF9wb3NpeG1vZHVsZS5jIGlmIGl0IGlzIGRlZmluZWQuCisgIEJhc2VkIG9uIHBhdGNoIGZyb20gSGVydsOpIENvYXRhbmhheS4KKworLSBJc3N1ZSAjMTQzMjE6IERvIG5vdCBydW4gcGdlbiBkdXJpbmcgdGhlIGJ1aWxkIGlmIGZpbGVzIGFyZSB1cCB0byBkYXRlLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0MDM0OiBhZGRlZCB0aGUgYXJncGFyc2UgdHV0b3JpYWwuCisKKy0gSXNzdWUgIzE0MzI0OiBGaXggY29uZmlndXJlIHRlc3RzIGZvciBjcm9zcyBidWlsZHMuCisKKy0gSXNzdWUgIzE0MzI3OiBDYWxsIEFDX0NBTk9OSUNBTF9IT1NUIGluIGNvbmZpZ3VyZS5hYyBhbmQgY2hlY2sgaW4KKyAgY29uZmlnLntndWVzcyxzdWJ9LiBEb24ndCB1c2UgdW5hbWUgY2FsbHMgZm9yIGNyb3NzIGJ1aWxkcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCisgIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCisgIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKKyAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCisKKy0gSXNzdWUgIzE0MjU5OiBUaGUgZmluZGl0ZXIoKSBtZXRob2Qgb2YgcmUgb2JqZWN0cyBkaWQgbm90IHRha2UgYW55CisgIGtleXdvcmQgYXJndW1lbnRzLCBjb250cmFyeSB0byB0aGUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTAxNDI6IFN1cHBvcnQgZm9yIFNFRUtfSE9MRS9TRUVLX0RBVEEgKGZvciBleGFtcGxlLCB1bmRlciBaRlMpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTQ0NDI6IEFkZCBtaXNzaW5nIGVycm5vIGltcG9ydCBpbiB0ZXN0X3NtdHBsaWIuCisKKy0gSXNzdWUgIzgzMTU6IChwYXJ0aWFsIGZpeCkgcHl0aG9uIC1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCBub3cgd29ya3MuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA1LU1hci0yMDEyKgogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBhZGQgLVIgY29tbWFuZC1saW5lIG9wdGlvbiBhbmQgUFlUSE9OSEFTSFNFRUQKLSAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRvIHByb3ZpZGUgYW4gb3B0LWluIHdheSB0byBwcm90ZWN0IGFnYWluc3QgZGVuaWFsIG9mCi0gIHNlcnZpY2UgYXR0YWNrcyBkdWUgdG8gaGFzaCBjb2xsaXNpb25zIHdpdGhpbiB0aGUgZGljdCBhbmQgc2V0IHR5cGVzLiAgUGF0Y2gKLSAgYnkgRGF2aWQgTWFsY29sbSwgYmFzZWQgb24gd29yayBieSBWaWN0b3IgU3Rpbm5lci4KKy0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAorICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCisKKy0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCisgIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gUEVQIDQwOSwgSXNzdWUgIzYyMTA6ICJyYWlzZSBYIGZyb20gTm9uZSIgaXMgbm93IHN1cHBvcnRlZCBhcyBhIG1lYW5zIG9mCisgIHN1cHByZXNzaW5nIHRoZSBkaXNwbGF5IG9mIHRoZSBjaGFpbmVkIGV4Y2VwdGlvbiBjb250ZXh0LiBUaGUgY2hhaW5lZAorICBjb250ZXh0IHN0aWxsIHJlbWFpbnMgYXZhaWxhYmxlIGFzIHRoZSBfX2NvbnRleHRfXyBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzEwMTgxOiBOZXcgbWVtb3J5dmlldyBpbXBsZW1lbnRhdGlvbiBmaXhlcyBtdWx0aXBsZSBvd25lcnNoaXAKKyAgYW5kIGxpZmV0aW1lIGlzc3VlcyBvZiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgUHlfYnVmZmVyIG1lbWJlcnMgKCM5OTkwKQorICBhcyB3ZWxsIGFzIGNyYXNoZXMgKCM4MzA1LCAjNzQzMykuIE1hbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZAorICAoU2VlIHdoYXRzbmV3LzMuMyksIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIGV4dGVuc2l2ZWx5LgorICBUaGUgbmRhcnJheSB0ZXN0IG9iamVjdCBmcm9tIF90ZXN0YnVmZmVyLmMgaW1wbGVtZW50cyBhbGwgYXNwZWN0cyBvZgorICBQRVAtMzExOCwgc28gZnVydGhlciBkZXZlbG9wbWVudCB0b3dhcmRzIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbgorICBvZiB0aGUgUEVQIGNhbiBwcm9jZWVkIGluIGEgdGVzdC1kcml2ZW4gbWFubmVyLgorCisgIFRoYW5rcyB0byBOaWNrIENvZ2hsYW4sIEFudG9pbmUgUGl0cm91IGFuZCBQYXVsaSBWaXJ0YW5lbiBmb3IgcmV2aWV3CisgIGFuZCBtYW55IGlkZWFzLgorCistIElzc3VlICMxMjgzNDogRml4IGluY29ycmVjdCByZXN1bHRzIG9mIG1lbW9yeXZpZXcudG9ieXRlcygpIGZvcgorICBub24tY29udGlndW91cyBhcnJheXMuCisKKy0gSXNzdWUgIzUyMzE6IEludHJvZHVjZSBtZW1vcnl2aWV3LmNhc3QoKSBtZXRob2QgdGhhdCBhbGxvd3MgY2hhbmdpbmcKKyAgZm9ybWF0IGFuZCBzaGFwZSB3aXRob3V0IG1ha2luZyBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgbWVtb3J5LgogCiAtIElzc3VlICMxNDA4NDogRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgd2l0aCBhCiAgIGJhZCBlbmNvZGluZy4KIAorLSBVcGdyYWRlIFVuaWNvZGUgZGF0YSB0byBVbmljb2RlIDYuMS4KKworLSBJc3N1ZSAjMTQwNDA6IFJlbW92ZSByYXJlbHkgdXNlZCBmaWxlIG5hbWUgc3VmZml4ZXMgZm9yIEMgZXh0ZW5zaW9ucworICAodW5kZXIgUE9TSVggbWFpbmx5KS4KKworLSBJc3N1ZSAjMTQwNTE6IEFsbG93IGFyYml0cmFyeSBhdHRyaWJ1dGVzIHRvIGJlIHNldCBvZiBjbGFzc21ldGhvZCBhbmQKKyAgc3RhdGljbWV0aG9kLgorCistIElzc3VlICMxMzcwMzogb0NFUlQtMjAxMS0wMDM6IFJhbmRvbWl6ZSBoYXNoZXMgb2Ygc3RyIGFuZCBieXRlcyB0byBwcm90ZWN0CisgIGFnYWluc3QgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrcyBkdWUgdG8gaGFzaCBjb2xsaXNpb25zIHdpdGhpbiB0aGUgZGljdCBhbmQKKyAgc2V0IHR5cGVzLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSwgYmFzZWQgb24gd29yayBieSBWaWN0b3IgU3Rpbm5lci4KKwogLSBJc3N1ZSAjMTMwMjA6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIHdoZW4gYWxsb2NhdGluZyBhIHN0cnVjdHNlcXVlbmNlIG9iamVjdAogICBmYWlscy4gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKQEAgLTEwMzcsNiArMjM5Myw5IEBACiAtIElzc3VlICMxMTIzNTogRml4IE92ZXJmbG93RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IGEgc291cmNlIGZpbGUgd2hvc2UKICAgbW9kaWZpY2F0aW9uIHRpbWUgZG9lc24ndCBmaXQgaW4gYSAzMi1iaXQgdGltZXN0YW1wLgogCistIElzc3VlICMxMjcwNTogQSBTeW50YXhFcnJvciBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcgdG8KKyAgY29tcGlsZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudC4KKwogLSBGaXggdGhlIGJ1aWx0aW4gbW9kdWxlIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gc3RvcmUgdGhlIGluaXQgZnVuY3Rpb24gZm9yCiAgIGZ1dHVyZSByZWluaXRpYWxpemF0aW9uLgogCkBAIC0xMDQ4LDYgKzI0MDcsMzcgQEAKIC0gSXNzdWUgIzEzNjI5OiBSZW51bWJlciB0aGUgdG9rZW5zIGluIHRva2VuLmggc28gdGhhdCB0aGV5IG1hdGNoIHRoZSBpbmRleGVzCiAgIGludG8gX1B5UGFyc2VyX1Rva2VuTmFtZXMuCiAKKy0gSXNzdWUgIzEzNzUyOiBBZGQgYSBjYXNlZm9sZCgpIG1ldGhvZCB0byBzdHIuCisKKy0gSXNzdWUgIzEzNzYxOiBBZGQgYSAiZmx1c2giIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHByaW50KCkgZnVuY3Rpb24sCisgIHVzZWQgdG8gZW5zdXJlIGZsdXNoaW5nIHRoZSBvdXRwdXQgc3RyZWFtLgorCistIElzc3VlICMxMzY0NTogcHljIGZpbGVzIG5vdyBjb250YWluIHRoZSBzaXplIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZQorICBjb2RlLCB0byBhdm9pZCB0aW1lc3RhbXAgY29sbGlzaW9ucyAoZXNwZWNpYWxseSBvbiBmaWxlc3lzdGVtcyB3aXRoIGEgbG93CisgIHRpbWVzdGFtcCByZXNvbHV0aW9uKSB3aGVuIGNoZWNraW5nIGZvciBmcmVzaG5lc3Mgb2YgdGhlIGJ5dGVjb2RlLgorCistIFBFUCAzODAsIElzc3VlICMxMTY4MjogQWRkICJ5aWVsZCBmcm9tIDx4PiIgdG8gc3VwcG9ydCBlYXN5IGRlbGVnYXRpb24gdG8KKyAgc3ViZ2VuZXJhdG9ycyAoaW5pdGlhbCBwYXRjaCBieSBHcmVnIEV3aW5nLCBpbnRlZ3JhdGlvbiBpbnRvIDMuMyBieQorICBSZW5hdWQgQmxhbmNoLCBSeWFuIEtlbGx5LCBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGFuZCBOaWNrIENvZ2hsYW4pCisKKy0gSXNzdWUgIzEzNzQ4OiBSYXcgYnl0ZXMgbGl0ZXJhbHMgY2FuIG5vdyBiZSB3cml0dGVuIHdpdGggdGhlIGBgcmJgYCBwcmVmaXgKKyAgYXMgd2VsbCBhcyBgYGJyYGAuCisKKy0gSXNzdWUgIzEyNzM2OiBVc2UgZnVsbCB1bmljb2RlIGNhc2UgbWFwcGluZ3MgZm9yIHVwcGVyLCBsb3dlciwgYW5kIHRpdGxlIGNhc2UuCisKKy0gSXNzdWUgIzEyNzYwOiBBZGQgYSBjcmVhdGUgbW9kZSB0byBvcGVuKCkuIFBhdGNoIGJ5IERhdmlkIFRvd25zaGVuZC4KKworLSBJc3N1ZSAjMTM3Mzg6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGJ5dGVzLmxvd2VyKCkgYW5kIGJ5dGVzLnVwcGVyKCkuCisKKy0gSXNzdWUgIzEzNTc3OiBCdWlsdC1pbiBtZXRob2RzIGFuZCBmdW5jdGlvbnMgbm93IGhhdmUgYSBfX3F1YWxuYW1lX18uCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjNjY5NTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcnVucyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0IG9mIHNldAorICBvYmplY3RzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXR0aGlhcyBUcm9mZmFlcy4KKworLSBGaXggT1NFcnJvci5fX2luaXRfXyBhbmQgT1NFcnJvci5fX25ld19fIHNvIHRoYXQgZWFjaCBvZiB0aGVtIGNhbiBiZQorICBvdmVycmlkZW4gYW5kIHRha2UgYWRkaXRpb25hbCBhcmd1bWVudHMgKGZvbGxvd3VwIHRvIGlzc3VlICMxMjU1NSkuCisKIC0gRml4IHRoZSBmaXggZm9yIGlzc3VlICMxMjE0OTogaXQgd2FzIGluY29ycmVjdCwgYWx0aG91Z2ggaXQgaGFkIHRoZSBzaWRlCiAgIGVmZmVjdCBvZiBhcHBlYXJpbmcgdG8gcmVzb2x2ZSB0aGUgaXNzdWUuICBUaGFua3MgdG8gTWFyayBTaGFubm9uIGZvcgogICBub3RpY2luZy4KQEAgLTEwNTgsMjYgKzI0NDgsNjggQEAKIC0gSXNzdWUgIzExMTQ3OiBGaXggYW4gdW51c2VkIGFyZ3VtZW50IGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIuICAoRml4CiAgIGdpdmVuIGJ5IENhbXBiZWxsIEJhcnRvbikuCiAKKy0gSXNzdWUgIzEzNTAzOiBVc2UgYSBtb3JlIGVmZmljaWVudCByZWR1Y3Rpb24gZm9ybWF0IGZvciBieXRlYXJyYXlzIHdpdGgKKyAgcGlja2xlIHByb3RvY29sID49IDMuICBUaGUgb2xkIHJlZHVjdGlvbiBmb3JtYXQgaXMga2VwdCB3aXRoIG9sZGVyIHByb3RvY29scworICBpbiBvcmRlciB0byBhbGxvdyB1bnBpY2tsaW5nIHVuZGVyIFB5dGhvbiAyLiAgUGF0Y2ggYnkgSXJtZW4gZGUgSm9uZy4KKwogLSBJc3N1ZSAjNzExMTogUHl0aG9uIGNhbiBub3cgYmUgcnVuIHdpdGhvdXQgYSBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVycgogICBzdHJlYW0uICBJdCB3YXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIFB5dGhvbiAyLiAgSG93ZXZlciwgdGhlIGNvcnJlc3BvbmRpbmcKICAgc3lzIG1vZHVsZSBlbnRyaWVzIGFyZSBub3cgc2V0IHRvIE5vbmUgKGluc3RlYWQgb2YgYW4gdW51c2FibGUgZmlsZSBvYmplY3QpLgogCistIElzc3VlICMxMTg0OTogRW5zdXJlIHRoYXQgZnJlZSgpZCBtZW1vcnkgYXJlbmFzIGFyZSByZWFsbHkgcmVsZWFzZWQKKyAgb24gUE9TSVggc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkgbWFwcGluZ3MuICBQYXRjaCBieQorICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycworICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKKyAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KKworLSBQRVAgMzE1NSAvIGlzc3VlICMxMzQ0ODogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KKwogLSBJc3N1ZSAjMTM0MzY6IEZpeCBhIGJvZ3VzIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBBU1Qgb2JqZWN0IHdhcyBwYXNzZWQKICAgYW4gaW52YWxpZCBpbnRlZ2VyIHZhbHVlLgogCistIElzc3VlICMxMzQxMTogbWVtb3J5dmlldyBvYmplY3RzIGFyZSBub3cgaGFzaGFibGUgd2hlbiB0aGUgdW5kZXJseWluZworICBvYmplY3QgaXMgaGFzaGFibGUuCisKIC0gSXNzdWUgIzEzMzM4OiBIYW5kbGUgYWxsIGVudW1lcmF0aW9ucyBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSCiAgIHRvIGFsbG93IGNvbXBpbGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIC1Xc3dpdGNoLWVudW0gb24gZ2NjLgogICBJbml0aWFsIHBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgogCistIElzc3VlICMxMDIyNzogQWRkIGFuIGFsbG9jYXRpb24gY2FjaGUgZm9yIGEgc2luZ2xlIHNsaWNlIG9iamVjdC4gIFBhdGNoIGJ5CisgIFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzEzMzkzOiBCdWZmZXJlZFJlYWRlci5yZWFkMSgpIG5vdyBhc2tzIHRoZSBmdWxsIHJlcXVlc3RlZCBzaXplIHRvCisgIHRoZSByYXcgc3RyZWFtIGluc3RlYWQgb2YgbGltaXRpbmcgaXRzZWxmIHRvIHRoZSBidWZmZXIgc2l6ZS4KKworLSBJc3N1ZSAjMTMzOTI6IFdyaXRpbmcgYSBweWMgZmlsZSBzaG91bGQgbm93IGJlIGF0b21pYyB1bmRlciBXaW5kb3dzIGFzIHdlbGwuCisKIC0gSXNzdWUgIzEzMzMzOiBUaGUgVVRGLTcgZGVjb2RlciBub3cgYWNjZXB0cyBsb25lIHN1cnJvZ2F0ZXMgKHRoZSBlbmNvZGVyCiAgIGFscmVhZHkgYWNjZXB0cyB0aGVtKS4KIAorLSBJc3N1ZSAjMTMzODk6IEZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhc3NlcyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0cyBmb3IKKyAgbGlzdCBhbmQgZGljdCBvYmplY3RzLiAgVGhleSBhbHJlYWR5IGNsZWFyZWQgb3RoZXIgZnJlZWxpc3RzIGluIHRoZQorICBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjMTMzMjc6IFJlbW92ZSB0aGUgbmVlZCBmb3IgYW4gZXhwbGljaXQgTm9uZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50CisgIHRvIG9zLnV0aW1lLCBvcy5sdXRpbWVzLCBvcy5mdXRpbWVzLCBvcy5mdXRpbWVucywgb3MuZnV0aW1lc2F0LCBpbgorICBvcmRlciB0byB1cGRhdGUgdG8gdGhlIGN1cnJlbnQgdGltZS4gQWxzbyBhZGRlZCBrZXl3b3JkIGFyZ3VtZW50CisgIGhhbmRsaW5nIHRvIG9zLnV0aW1lbnNhdCBpbiBvcmRlciB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IE5vbmUuCisKKy0gSXNzdWUgIzEzMzUwOiBTaW1wbGlmeSBzb21lIEMgY29kZSBieSByZXBsYWNpbmcgbW9zdCB1c2FnZXMgb2YKKyAgUHlVbmljb2RlX0Zvcm1hdCBieSBQeVVuaWNvZGVfRnJvbUZvcm1hdC4KKwogLSBJc3N1ZSAjMTMzNDI6IGlucHV0KCkgdXNlZCB0byBpZ25vcmUgc3lzLnN0ZGluJ3MgYW5kIHN5cy5zdGRvdXQncyB1bmljb2RlCiAgIGVycm9yIGhhbmRsZXIgaW4gaW50ZXJhY3RpdmUgbW9kZSAod2hlbiBjYWxsaW5nIGludG8gUHlPU19SZWFkbGluZSgpKS4KIAorLSBJc3N1ZSAjOTg5NjogQWRkIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhdHRyaWJ1dGVzIHRvIHJhbmdlIG9iamVjdHMuCisKIC0gSXNzdWUgIzEzMzQzOiBGaXggYSBTeXN0ZW1FcnJvciB3aGVuIGEgbGFtYmRhIGV4cHJlc3Npb24gdXNlcyBhIGdsb2JhbAotICB2YXJpYWJsZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGtleXdvcmQtb25seSBhcmd1bWVudDoKLSAgKGxhbWJkYSAqLCBhcmc9R0xPQkFMX05BTUU6IE5vbmUpCisgIHZhcmlhYmxlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50OiBgYGxhbWJkYSAqLAorICBhcmc9R0xPQkFMX05BTUU6IE5vbmVgYAorCistIElzc3VlICMxMjc5NzogQWRkZWQgY3VzdG9tIG9wZW5lciBwYXJhbWV0ZXIgdG8gYnVpbHRpbiBvcGVuKCkgYW5kCisgIEZpbGVJTy5vcGVuKCkuCiAKIC0gSXNzdWUgIzEwNTE5OiBBdm9pZCB1bm5lY2Vzc2FyeSByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgaW4KICAgc2V0b2JqZWN0LmMuCkBAIC0xMDg3LDIxICsyNTE5LDQ3IEBACiAtIElzc3VlICMxMzAxODogRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBlcnJvciBwYXRocyBpbiBkaWN0b2JqZWN0LmMuCiAgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKKy0gSXNzdWUgIzEzMjAxOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24KKyAgdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgb2JqZWN0IGlkZW50aXR5KS4KKwogLSBJc3N1ZSAjMTI5NDIzMjogSW4gYSBmZXcgY2FzZXMgaW52b2x2aW5nIG1ldGFjbGFzcyBpbmhlcml0YW5jZSwgdGhlCiAgIGludGVycHJldGVyIHdvdWxkIHNvbWV0aW1lcyBpbnZva2UgdGhlIHdyb25nIG1ldGFjbGFzcyB3aGVuIGJ1aWxkaW5nIGEgbmV3CiAgIGNsYXNzIG9iamVjdC4gVGhlc2UgY2FzZXMgbm93IGJlaGF2ZSBjb3JyZWN0bHkuIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KIAorLSBJc3N1ZSAjMTI3NTM6IEFkZCBzdXBwb3J0IGZvciBVbmljb2RlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLgorICBCb3RoIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCBhbmQgJ1xOey4uLn0nIG5vdyByZXNvbHZlIGFsaWFzZXMsCisgIGFuZCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworLSBJc3N1ZSAjMTIxNzA6IFRoZSBjb3VudCgpLCBmaW5kKCksIHJmaW5kKCksIGluZGV4KCkgYW5kIHJpbmRleCgpIG1ldGhvZHMKKyAgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIG5vdyBhY2NlcHQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDI1NQorICBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgorCiAtIElzc3VlICMxMjYwNDogVlRSQUNFIG1hY3JvIGV4cGFuZGVkIHRvIG5vLW9wIGluIF9zcmUuYyB0byBhdm9pZCBjb21waWxlcgogICB3YXJuaW5ncy4gUGF0Y2ggYnkgSm9zaCBUcmlwbGV0dCBhbmQgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEyMjgxOiBSZXdyaXRlIHRoZSBNQkNTIGNvZGVjIHRvIGhhbmRsZSBjb3JyZWN0bHkgcmVwbGFjZSBhbmQgaWdub3JlCisgIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiBUaGUgTUJDUyBjb2RlYyBpcyBub3cgc3VwcG9ydGluZyBhbGwKKyAgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seSByZXBsYWNlIHRvIGVuY29kZSBhbmQgaWdub3JlIHRvIGRlY29kZS4KKwogLSBJc3N1ZSAjMTMxODg6IFdoZW4gY2FsbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgdHJhY2ViYWNrIGFyZ3VtZW50LAogICBnZW5lcmF0b3IudGhyb3coKSBub3cgZ2V0cyB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIHBhc3NlZCBleGNlcHRpb24ncwogICBgYF9fdHJhY2ViYWNrX19gYCBhdHRyaWJ1dGUuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KIAorLSBJc3N1ZSAjMTMxNDY6IFdyaXRpbmcgYSBweWMgZmlsZSBpcyBub3cgYXRvbWljIHVuZGVyIFBPU0lYLgorCiAtIElzc3VlICM3ODMzOiBFeHRlbnNpb24gbW9kdWxlcyBidWlsdCB1c2luZyBkaXN0dXRpbHMgb24gV2luZG93cyB3aWxsIG5vCiAgIGxvbmdlciBpbmNsdWRlIGEgIm1hbmlmZXN0IiB0byBwcmV2ZW50IHRoZW0gZmFpbGluZyBhdCBpbXBvcnQgdGltZSBpbiBzb21lCiAgIGVtYmVkZGVkIHNpdHVhdGlvbnMuCiAKKy0gUEVQIDMxNTEgLyBpc3N1ZSAjMTI1NTU6IHJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkuCisKKy0gSXNzdWUgIzEzNTYwOiBBZGQgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgpLCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpCisgIGFuZCBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKCkgZnVuY3Rpb25zIHRvIHRoZSBDIEFQSSB0byBkZWNvZGUvZW5jb2RlIGZyb20vdG8KKyAgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgorCistIEFkZCBpbnRlcm5hbCBBUEkgZm9yIHN0YXRpYyBzdHJpbmdzIChfUHlfaWRlbnRpZmllciBldCBhbC4pLgorCiAtIElzc3VlICMxMzA2MzogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfTk9fREFUQSAobnVtYmVyZWQgMjMyIGFuZCBkZXNjcmliZWQKICAgYXMgIlRoZSBwaXBlIGlzIGJlaW5nIGNsb3NlZCIpIGlzIG5vdyBtYXBwZWQgdG8gUE9TSVggZXJybm8gRVBJUEUKICAgKHByZXZpb3VzbHkgRUlOVkFMKS4KQEAgLTExMDksNiArMjU2NywxNiBAQAogLSBJc3N1ZSAjMTI5MTE6IEZpeCBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVwcigpIG9mIGh1Z2UKICAgdHVwbGVzIG9yIGxpc3RzLgogCistIFBFUCAzOTM6IGZsZXhpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhhbmtzIHRvIFRvcnN0ZW4gQmVja2VyIGZvciB0aGUKKyAgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYW5kIFZpY3RvciBTdGlubmVyIGZvciB2YXJpb3VzIGJ1ZyBmaXhlcy4KKworLSBJc3N1ZSAjMTQwODE6IFRoZSAnc2VwJyBhbmQgJ21heHNwbGl0JyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0LCBieXRlcy5zcGxpdCwKKyAgYW5kIGJ5dGVhcnJheS5zcGxpdCBtYXkgbm93IGJlIHBhc3NlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTMwMTI6IFRoZSAna2VlcGVuZHMnIHBhcmFtZXRlciB0byBzdHIuc3BsaXRsaW5lcyBtYXkgbm93IGJlIHBhc3NlZAorICBhcyBhIGtleXdvcmQgYXJndW1lbnQ6ICAibXlfc3RyaW5nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkiLiAgVGhlIHNhbWUKKyAgY2hhbmdlIGFsc28gYXBwbGllcyB0byBieXRlcy5zcGxpdGxpbmVzIGFuZCBieXRlYXJyYXkuc3BsaXRsaW5lcy4KKwogLSBJc3N1ZSAjNzczMjogRG9uJ3Qgb3BlbiBhIGRpcmVjdG9yeSBhcyBhIGZpbGUgYW55bW9yZSB3aGlsZSBpbXBvcnRpbmcgYQogICBtb2R1bGUuIElnbm9yZSB0aGUgZGlyZWNvdHJ5IGlmIGl0cyBuYW1lIG1hdGNocyB0aGUgbW9kdWxlIG5hbWUgKGUuZy4KICAgIl9faW5pdF9fLnB5IikgYW5kIHJhaXNlIGEgSW1wb3J0RXJyb3IgaW5zdGVhZC4KQEAgLTExMjAsNiArMjU4OCw5IEBACiAgIGxpc3RfcmVwZWF0IChsaXN0b2JqZWN0LmMpIGFuZCBpc2xpY2VfbmV4dCAoaXRlcnRvb2xzbW9kdWxlLmMpLiAgVGhlc2UgYnVncwogICBjYXVzZWQgdGVzdCBmYWlsdXJlcyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBDbGFuZy4KIAorLSBJc3N1ZSAjMTI5MDQ6IG9zLnV0aW1lLCBvcy5mdXRpbWVzLCBvcy5sdXRpbWVzLCBhbmQgb3MuZnV0aW1lc2F0IG5vdyB3cml0ZQorICBhdGltZSBhbmQgbXRpbWUgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbiBvbiBtb2Rlcm4gUE9TSVggcGxhdGZvcm1zLgorCiAtIElzc3VlICMxMjgwMjogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfRElSRUNUT1JZIChudW1iZXJlZCAyNjcpIGlzIG5vdwogICBtYXBwZWQgdG8gUE9TSVggZXJybm8gRU5PVERJUiAocHJldmlvdXNseSBFSU5WQUwpLgogCkBAIC0xMTI5LDM3ICsyNjAwLDMyOSBAQAogLSBJc3N1ZSAjMTI3OTE6IEJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgZWFybHkgd2hlbiBhIGdlbmVyYXRvciBleGl0cyB3aXRoCiAgIGFuIGV4Y2VwdGlvbi4KIAorLSBJc3N1ZSAjMTI3NzM6IE1ha2UgX19kb2NfXyBtdXRhYmxlIG9uIHVzZXItZGVmaW5lZCBjbGFzc2VzLgorCistIElzc3VlICMxMjc2NjogUmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gY3JlYXRpbmcgYSBjbGFzcyB3aXRoIGEgY2xhc3MgdmFyaWFibGUKKyAgdGhhdCBjb25mbGljdHMgd2l0aCBhIG5hbWUgaW4gX19zbG90c19fLgorCiAtIElzc3VlICMxMjI2NjogRml4IHN0ci5jYXBpdGFsaXplKCkgdG8gY29ycmVjdGx5IHVwcGVyY2FzZS9sb3dlcmNhc2UKICAgdGl0bGVjYXNlZCBhbmQgY2FzZWQgbm9uLWxldHRlciBjaGFyYWN0ZXJzLgogCistIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKKyAgb3V0c2lkZSB0aGUgQk1QLgorCistIElzc3VlICMxMjU3NTogVmFsaWRhdGUgdXNlci1nZW5lcmF0ZWQgQVNUIGJlZm9yZSBpdCBpcyBjb21waWxlZC4KKworLSBNYWtlIHR5cGUoTm9uZSksIHR5cGUoRWxsaXBzaXMpLCBhbmQgdHlwZShOb3RJbXBsZW1lbnRlZCkgY2FsbGFibGUuIFRoZXkKKyAgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHNpbmdsZXRvbiBpbnN0YW5jZXMuCisKKy0gRm9yYmlkIHN1bW1pbmcgYnl0ZXMgd2l0aCBzdW0oKS4KKworLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKKyAgY29tcGlsaW5nIHRoZW0uCisKKy0gSXNzdWUgIzEyNjQ3OiBUaGUgTm9uZSBvYmplY3Qgbm93IGhhcyBhIF9fYm9vbF9fKCkgbWV0aG9kIHRoYXQgcmV0dXJucyBGYWxzZS4KKyAgRm9ybWVybHksIGJvb2woTm9uZSkgcmV0dXJuZWQgRmFsc2Ugb25seSBiZWNhdXNlIG9mIHNwZWNpYWwgY2FzZSBsb2dpYworICBpbiBQeU9iamVjdF9Jc1RydWUoKS4KKworLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCisgIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQorICBKdWxpYW4gQmVybWFuLgorCistIElzc3VlICMxMDI3MTogQWxsb3cgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSBiZSBhbnkgY2FsbGFibGUuCisKKy0gSXNzdWUgIzExNjI3OiBGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGEgZXhjZXB0aW9uIHJldHVybnMgYQorICBub24tZXhjZXB0aW9uIGNsYXNzLgorCistIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbmFyeSBnZXRzCisgIGNsZWFyZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgVGhpcyBmaXhlcyBhIHNlZ2ZhdWx0IHdoZW4gYW4gaW5zdGFuY2UKKyAgYW5kIGl0cyB0eXBlIGdldCBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncworICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZworICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCisKKy0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKworLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCisgIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCisKKy0gSXNzdWUgIzk2NDI6IEZpeCBmaWxlc3lzdGVtIGVuY29kaW5nIGluaXRpYWxpemF0aW9uOiB1c2UgdGhlIEFOU0kgY29kZSBwYWdlCisgIG9uIFdpbmRvd3MgaWYgdGhlIG1iY3MgY29kZWMgaXMgbm90IGF2YWlsYWJsZSwgYW5kIGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmCisgIHdlIGNhbm5vdCBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyAoaWYgbmxfbGFuZ2luZm8oQ09ERVNFVCkgaXMgbm90IGF2YWlsYWJsZSkKKyAgaW5zdGVhZCBvZiB1c2luZyBVVEYtOC4KKworLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQorICBnZW5lcmF0b3IuCisKKy0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQorICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KKworLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sCisgIHdpdGggb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTIzNTY6IFdoZW4gcmVxdWlyZWQgcG9zaXRpb25hbCBvciBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBub3QKKyAgZ2l2ZW4sIHByb2R1Y2UgYSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIHdoaWNoIGluY2x1ZGVzIHRoZSBuYW1lKHMpIG9mIHRoZQorICBtaXNzaW5nIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTIzNzA6IEZpeCBzdXBlciB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIF9fY2xhc3NfXyBpcyBvdmVycmlkZW4gaW4gdGhlCisgIGNsYXNzIGJvZHkuCisKKy0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKKyAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgorCistIExvb3NlbiB0eXBlIHJlc3RyaWN0aW9ucyBvbiB0aGUgX19kaXJfXyBtZXRob2QuIF9fZGlyX18gY2FuIG5vdyByZXR1cm4gYW55CisgIHNlcXVlbmNlLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIGxpc3QgYW5kIHNvcnRlZCBieSBkaXIoKS4KKworLSBJc3N1ZSAjMTIyNjU6IE1ha2UgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgYnkgcGFzc2luZyBhbiBpbnZhbGlkIHNldCBvZgorICBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBtb3JlIGluZm9ybWF0aXZlLgorCistIElzc3VlICMxMjIyNTogU3RpbGwgYWxsb3cgUHl0aG9uIHRvIGJ1aWxkIGlmIFB5dGhvbiBpcyBub3QgaW4gaXRzIGhnIHJlcG8gb3IKKyAgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAorICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAorICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCisKKy0gSXNzdWUgIzEyMjE2OiBBbGxvdyB1bmV4cGVjdGVkIEVPRiBlcnJvcnMgdG8gaGFwcGVuIG9uIGFueSBsaW5lIG9mIHRoZSBmaWxlLgorCistIElzc3VlICMxMjE5OTogVGhlIFRyeUV4Y2VwdCBhbmQgVHJ5RmluYWxseSBhbmQgQVNUIG5vZGVzIGhhdmUgYmVlbiB1bmlmaWVkCisgIGludG8gYSBUcnkgbm9kZS4KKworLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KKyAgTWFjIE9TIFggYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhCisgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4KKyAgKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKKworLSBJc3N1ZSAjMTIxMDY6IFRoZSB1c2Ugb2YgdGhlIG11bHRpcGxlLXdpdGggc2hvcnRoYW5kIHN5bnRheCBpcyBub3cgcmVmbGVjdGVkCisgIGluIHRoZSBBU1QuCisKKy0gSXNzdWUgIzEyMTkwOiBUcnkgdG8gdXNlIHRoZSBzYW1lIGZpbGVuYW1lIG9iamVjdCB3aGVuIGNvbXBpbGluZyB1bm1hcnNoYWxsaW5nCisgIGEgY29kZSBvYmplY3RzIGluIHRoZSBzYW1lIGZpbGUuCisKKy0gSXNzdWUgIzEyMTY2OiBNb3ZlIGltcGxlbWVudGF0aW9ucyBvZiBkaXIoKSBzcGVjaWFsaXplZCBmb3IgdmFyaW91cyB0eXBlcyBpbnRvCisgIHRoZSBfX2Rpcl9fKCkgbWV0aG9kcyBvZiB0aG9zZSB0eXBlcy4KKworLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKworLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCisgIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCisKKy0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAorICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxNzQ2NjU2OiBBZGRlZCB0aGUgaWZfbmFtZWluZGV4LCBpZl9pbmRleHRvbmFtZSwgaWZfbmFtZXRvaW5kZXgKKyAgbWV0aG9kcyB0byB0aGUgc29ja2V0IG1vZHVsZS4KKworLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCisgIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5CisgIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCisKKy0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCisgIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgorCistIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQorICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4KKyAgdGhleSB0cnkgdG8gdGFrZSB0aGUgR0lMLgorCistIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAorICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgorICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCisgIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgorICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMDkxNDogSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIGZpbGVzeXN0ZW0gY29kZWMgd2hlbiBjcmVhdGluZyBhIG5ldworICBzdWJpbnRlcnByZXRlciB0byBmaXggYSBib290c3RyYXAgaXNzdWUgd2l0aCBjb2RlY3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBhcworICB0aGUgSVNPLTg4NTktMTUgY29kZWMuCisKKy0gSXNzdWUgIzExOTE4OiBPUy8yIGFuZCBWTVMgYXJlIG5vIG1vcmUgc3VwcG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGxhY2sgb2YKKyAgbWFpbnRhaW5lci4KKworLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCisgIGFjY2VwdGVkIHRvby4KKworLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcworICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAKKyAgY2hhcnMgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KKworLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgorICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCisKKy0gSXNzdWUgIzU2NzM6IEFkZGVkIGEgYHRpbWVvdXRgIGtleXdvcmQgYXJndW1lbnQgdG8gc3VicHJvY2Vzcy5Qb3Blbi53YWl0LAorICBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlZCwgc3VicHJvY2Vzcy5jYWxsLCBzdWJwcm9jZXNzLmNoZWNrX2NhbGwsIGFuZAorICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dC4gIElmIHRoZSBibG9ja2luZyBvcGVyYXRpb24gdGFrZXMgbW9yZSB0aGFuIGB0aW1lb3V0YAorICBzZWNvbmRzLCB0aGUgYHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKy0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCisgIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzkzMTk6IEluY2x1ZGUgdGhlIGZpbGVuYW1lIGluICJOb24tVVRGOCBjb2RlIC4uLiIgc3ludGF4IGVycm9yLgorCistIElzc3VlICMxMDc4NTogU3RvcmUgdGhlIGZpbGVuYW1lIGFzIFVuaWNvZGUgaW4gdGhlIFB5dGhvbiBwYXJzZXIuCisKKy0gSXNzdWUgIzExNjE5OiBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoKSBkb2Vzbid0IGVuY29kZSB0aGUgcGF0aCB0byBieXRlcworICBvbiBXaW5kb3dzLgorCistIElzc3VlICMxMDk5ODogUmVtb3ZlIG1lbnRpb25zIG9mIC1RLCBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyBhbmQKKyAgUHlfRGl2aXNpb25XYXJuaW5nRmxhZyBsZWZ0IG92ZXIgZnJvbSBQeXRob24gMi4KKworLSBJc3N1ZSAjMTEyNDQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBwZWVwaG9sZXIgY2hlY2sgdGhhdCB3YXMgcHJldmVudGluZworICBuZWdhdGl2ZSB6ZXJvcyBmcm9tIGJlaW5nIGNvbnN0YW50LWZvbGRlZCBwcm9wZXJseS4KKworLSBJc3N1ZSAjMTEzOTU6IGlvLkZpbGVJTygpLndyaXRlKCkgY2xhbXBzIHRoZSBkYXRhIGxlbmd0aCB0byAzMiw3NjcgYnl0ZXMgb24KKyAgV2luZG93cyBpZiB0aGUgZmlsZSBpcyBhIFRUWSB0byB3b3JrYXJvdW5kIGEgV2luZG93cyBidWcuIFRoZSBXaW5kb3dzIGNvbnNvbGUKKyAgcmV0dXJucyBhbiBlcnJvciAoMTI6IG5vdCBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYKKyAgc3Rkb3V0IG1vZGUgaXMgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCisgIGRlcGVuZGluZyBvbiBoZWFwIHVzYWdlKS4KKworLSBJc3N1ZSAjMTEzMjA6IGZpeCBib2d1cyBtZW1vcnkgbWFuYWdlbWVudCBpbiBNb2R1bGVzL2dldHBhdGguYywgbGVhZGluZyB0bworICBhIHBvc3NpYmxlIGNyYXNoIHdoZW4gY2FsbGluZyBQeV9TZXRQYXRoKCkuCisKKy0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAorICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCisgIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KKworLSBJc3N1ZSAjOTg1NjogQ2hhbmdlIG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZworICB0byBiZSBhIERlcHJlY2F0aW9uV2FybmluZy4gSW4gMy4yIGl0IHdhcyBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisgIEluIDMuNCBpdCB3aWxsIGJlIGEgVHlwZUVycm9yLgorCistIElzc3VlICMxMTI0NDogVGhlIHBlZXBob2xlIG9wdGltaXplciBpcyBub3cgYWJsZSB0byBjb25zdGFudC1mb2xkCisgIGFyYml0cmFyaWx5IGNvbXBsZXggZXhwcmVzc2lvbnMuICBUaGlzIGFsc28gZml4ZXMgYSAzLjIgcmVncmVzc2lvbiB3aGVyZQorICBvcGVyYXRpb25zIGludm9sdmluZyBuZWdhdGl2ZSBudW1iZXJzIHdlcmUgbm90IGNvbnN0YW50LWZvbGRlZC4KKworLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuCisgIHRoZXJlIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCisKKy0gSXNzdWUgIzExMzM1OiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGxpc3Quc29ydCB3aGVuIHRoZSBrZXkgZnVuY3Rpb24KKyAgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjODkyMzogV2hlbiBhIHN0cmluZyBpcyBlbmNvZGVkIHRvIFVURi04IGluIHN0cmljdCBtb2RlLCB0aGUgcmVzdWx0IGlzCisgIGNhY2hlZCBpbnRvIHRoZSBvYmplY3QuIEV4YW1wbGVzOiBzdHIuZW5jb2RlKCksIHN0ci5lbmNvZGUoJ3V0Zi04JyksCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAorICBOVUxMKS4KKworLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KKworLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQorICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgorCistIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCisKKy0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCisgIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCisgIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgorCistIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoCisgIGEgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KKworLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCisgIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KKworLSBJc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIG5vdyBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KKyAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCisKKy0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KKyAgbmFycm93IGJ1aWxkLgorCistIElzc3VlICMxMTE2ODogUmVtb3ZlIGZpbGVuYW1lIGRlYnVnIHZhcmlhYmxlIGZyb20gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCisgIEl0IGVuY29kZWQgdGhlIFVuaWNvZGUgZmlsZW5hbWUgdG8gVVRGLTgsIGJ1dCB0aGUgZW5jb2RpbmcgZmFpbHMgb24KKyAgdW5kZWNvZGFibGUgZmlsZW5hbWUgKG9uIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzKSB3aGljaCByYWlzZXMgYW4gdW5leHBlY3RlZAorICBVbmljb2RlRW5jb2RlRXJyb3Igb24gcmVjdXJzaW9uIGxpbWl0LgorCistIElzc3VlICMxMTE4NzogUmVtb3ZlIGJvb3RzdHJhcCBjb2RlICh1c2UgQVNDSUkpIG9mCisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSwgaXQgd2FzIHJlcGxhY2VkIGJ5IGEgYmV0dGVyIGZhbGxiYWNrICh1c2UgdGhlCisgIGxvY2FsZSBlbmNvZGluZykgaW4gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLgorCistIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCisKKy0gSXNzdWUgIzEwNTE2OiBOZXcgY29weSgpIGFuZCBjbGVhcigpIG1ldGhvZHMgZm9yIGxpc3RzIGFuZCBieXRlYXJyYXlzLgorCistIElzc3VlICMxMTM4NjogYnl0ZWFycmF5LnBvcCgpIG5vdyB0aHJvd3MgSW5kZXhFcnJvciB3aGVuIHRoZSBieXRlYXJyYXkgaXMKKyAgZW1wdHksIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KKworLSBJc3N1ZSAjMTIzODA6IFRoZSByanVzdCwgbGp1c3QgYW5kIGNlbnRlciBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgbm93IGFjY2VwdCBhIGJ5dGVhcnJheSBhcmd1bWVudC4KKwogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxNDE5NTogQW4gaXNzdWUgdGhhdCBjYXVzZWQgd2Vha3JlZi5XZWFrU2V0IGluc3RhbmNlcyB0byBpbmNvcnJlY3RseQorICByZXR1cm4gVHJ1ZSBmb3IgYSBXZWFrU2V0IGluc3RhbmNlICdhJyBpbiBib3RoICdhIDwgYScgYW5kICdhID4gYScgaGFzIGJlZW4KKyAgZml4ZWQuCisKKy0gSXNzdWUgIzE0MTY2OiBQaWNrbGVyIG9iamVjdHMgbm93IGhhdmUgYW4gb3B0aW9uYWwgYGBkaXNwYXRjaF90YWJsZWBgCisgIGF0dHJpYnV0ZSB3aGljaCBhbGxvd3MgdG8gc2V0IGN1c3RvbSBwZXItcGlja2xlciByZWR1Y3Rpb24gZnVuY3Rpb25zLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MTc3OiBtYXJzaGFsLmxvYWRzKCkgbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiB1bmljb2RlCisgIHN0cmluZy4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzU1MDogUmVtb3ZlIHRoZSBkZWJ1ZyBtYWNoaW5lcnkgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZTogcmVtb3ZlCisgIHZlcmJvc2UgYXJndW1lbnRzIGZyb20gYWxsIHRocmVhZGluZyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCisgIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCisgIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgorICBPKG4pLgorCistIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KKyAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgorCistIElzc3VlICMxMTg0MTogRml4IGNvbXBhcmlzb24gYnVnIHdpdGggJ3JjJyB2ZXJzaW9ucyBpbiBwYWNrYWdpbmcudmVyc2lvbi4KKyAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCisgIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCisgIG9uIFdpbmRvd3MuICBBbHNvIGZpeGVkIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjODAzMzogc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zCisgIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcHBlIERldmFsa2VuZWVyLgorCiAtIEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KIAorLSBJc3N1ZSAjMTM2NDE6IERlY29kaW5nIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZTY0IG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKKyAgdW5pY29kZSBzdHJpbmdzLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjMTQwNDM6IFNwZWVkIHVwIGltcG9ydGxpYidzIF9GaWxlRmluZGVyIGJ5IGF0IGxlYXN0IDh4LCBhbmQgYWRkIGEKKyAgbmV3IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGZ1bmN0aW9uLgorCiAtIElzc3VlICMxNDAwMTogQ1ZFLTIwMTItMDg0NTogeG1scnBjOiBGaXggYW4gZW5kbGVzcyBsb29wIGluCiAgIFNpbXBsZVhNTFJQQ1NlcnZlciB1cG9uIG1hbGZvcm1lZCBQT1NUIHJlcXVlc3QuCiAKKy0gSXNzdWUgIzEzOTYxOiBNb3ZlIGltcG9ydGxpYiBvdmVyIHRvIHVzaW5nIG9zLnJlcGxhY2UoKSBmb3IgYXRvbWljIHJlbmFtaW5nLgorCistIERvIGF3YXkgd2l0aCBhbWJpZ3VvdXMgbGV2ZWwgdmFsdWVzIChhcyBzdWdnZXN0ZWQgYnkgUEVQIDMyOCkgaW4KKyAgaW1wb3J0bGliLl9faW1wb3J0X18oKSBieSByYWlzaW5nIFZhbHVlRXJyb3Igd2hlbiBsZXZlbCA8IDAuCisKIC0gSXNzdWUgIzI0ODk6IHB0eS5zcGF3biBjb3VsZCBjb25zdW1lIDEwMCUgY3B1IHdoZW4gaXQgZW5jb3VudGVyZWQgYW4gRU9GLgogCiAtIElzc3VlICMxMzAxNDogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCiAKKy0gSXNzdWUgIzEzNzc3OiBBZGQgUEZfU1lTVEVNIHNvY2tldHMgb24gT1MgWC4KKyAgUGF0Y2ggYnkgTWljaGFlbCBHb2RlcmJhdWVyLgorCiAtIElzc3VlICMxMzAxNTogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gZGVmYXVsdGRpY3QuX19yZXByX18uCiAgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKLS0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYnVpbGRfZXh0IGNvbW1hbmQgLS1saWJyYXJpZXMgb3B0aW9uIG5vdwotICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMuCistIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGFuZCBwYWNrYWdpbmcncyBidWlsZF9leHQgY29tbWFuZHMgb3B0aW9uIG5vdworICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyAoc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzKSBnaXZlbgorICB0byB0aGVpciAtLWxpYnJhcmllcyBvcHRpb24uCiAKIC0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgZmlyc3QgYmVmb3JlCiAgIHNlbmRpbmcgTU9ERSBSRUFERVIsIGFuZCBvbmx5IHNlbmRzIGl0IGlmIG5vdCBhbHJlYWR5IGluIFJFQURFUiBtb2RlLgogICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKLS0gSXNzdWUgIzEzOTc5OiBBIGJ1ZyBpbiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgdGhhdCBjYXVzZWQKLSAgdGhlIHdyb25nIGxpYnJhcnkgbmFtZSB0byBiZSByZXR1cm5lZCBoYXMgYmVlbiBmaXhlZC4KLQogLSBJc3N1ZSAjMTM5OTM6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBlbmQgdGFncyB3aGVuCiAgIHN0cmljdD1GYWxzZS4KIAorLSBJc3N1ZSAjMTM5MzA6IGxpYjJ0bzMgbm93IHN1cHBvcnRzIHdyaXRpbmcgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCisgIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCisgIHN1ZmZpeC4KKwogLSBJc3N1ZSAjOTc1MDogRml4IHNxbGl0ZTMuQ29ubmVjdGlvbi5pdGVyZHVtcCBvbiB0YWJsZXMgYW5kIGZpZWxkcwogICB3aXRoIGEgbmFtZSB0aGF0IGlzIGEga2V5d29yZCBvciBjb250YWlucyBxdW90ZXMuIFBhdGNoIGJ5IE1hcmtvCiAgIEtvaHRhbGEuCkBAIC0xMTg3LDEwICsyOTUwLDI3IEBACiAtIElzc3VlICMxMzk2MDogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGNvbW1lbnRzIHdoZW4KICAgc3RyaWN0PUZhbHNlLgogCi0tIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKKyAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCisgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogCi0tIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKLSAgcmVsZXZhbnQsIGluc3RlYWQgc2VuZCBtZXRob2QuCistIFdoZW4gJycgaXMgYSBwYXRoIChlLmcuIGluIHN5cy5wYXRoKSwgbWFrZSBzdXJlIF9fZmlsZV9fIHVzZXMgdGhlIGN1cnJlbnQKKyAgd29ya2luZyBkaXJlY3RvcnkgaW5zdGVhZCBvZiAnJyBpbiBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzEzNjA5OiBBZGQgdHdvIGZ1bmN0aW9ucyB0byBxdWVyeSB0aGUgdGVybWluYWwgc2l6ZToKKyAgb3MuZ2V0X3Rlcm1pbmFsX3NpemUgKGxvdyBsZXZlbCkgYW5kIHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSAoaGlnaCBsZXZlbCkuCisgIFBhdGNoIGJ5IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsuCisKKy0gSXNzdWUgIzEzODQ1OiBPbiBXaW5kb3dzLCB0aW1lLnRpbWUoKSBub3cgdXNlcyBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpCisgIGluc3RlYWQgb2YgZnRpbWUoKSB0byBoYXZlIGEgcmVzb2x1dGlvbiBvZiAxMDAgbnMgaW5zdGVhZCBvZiAxIG1zICh0aGUgY2xvY2sKKyAgYWNjdXJhY3kgaXMgYmV0d2VlbiAwLjUgbXMgYW5kIDE1IG1zKS4KKworLSBJc3N1ZSAjMTM4NDY6IEFkZCB0aW1lLm1vbm90b25pYygpLCBtb25vdG9uaWMgY2xvY2suCisKKy0gSXNzdWUgIzgxODQ6IG11bHRpcHJvY2Vzc2luZzogT24gV2luZG93cywgZG9uJ3Qgc2V0IFNPX1JFVVNFQUREUiBvbgorICBDb25uZWN0aW9uIHNvY2tldHMsIGFuZCBzZXQgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0Ugb24gbmFtZWQgcGlwZXMsIHRvCisgIG1ha2Ugc3VyZSB0d28gbGlzdGVuZXJzIGNhbid0IGJpbmQgdG8gdGhlIHNhbWUgc29ja2V0L3BpcGUgKG9yIGFueSBleGlzdGluZworICBzb2NrZXQvcGlwZSkuCiAKIC0gSXNzdWUgIzEwODExOiBGaXggcmVjdXJzaXZlIHVzYWdlIG9mIGN1cnNvcnMuIEluc3RlYWQgb2YgY3Jhc2hpbmcsCiAgIHJhaXNlIGEgUHJvZ3JhbW1pbmdFcnJvciBub3cuCkBAIC0xMjAwLDggKzI5ODAsMTUgQEAKIC0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KICAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgogCistIElzc3VlICMxMzczNDogQWRkIG9zLmZ3YWxrKCksIGEgZGlyZWN0b3J5IHdhbGtpbmcgZnVuY3Rpb24geWllbGRpbmcgZmlsZQorICBkZXNjcmlwdG9ycy4KKwogLSBJc3N1ZSAjMjk0NTogTWFrZSB0aGUgZGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIGF3YXJlIG9mIGJkaXN0X3JwbSBwcm9kdWN0cy4KIAorLSBJc3N1ZSAjMTM3MTI6IHB5c2V0dXAgY3JlYXRlIHNob3VsZCBub3QgY29udmVydCBwYWNrYWdlX2RhdGEgdG8gZXh0cmFfZmlsZXMuCisKKy0gSXNzdWUgIzExODA1OiBwYWNrYWdlX2RhdGEgaW4gc2V0dXAuY2ZnIHNob3VsZCBhbGxvdyBtb3JlIHRoYW4gb25lIHZhbHVlLgorCiAtIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKICAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCiAKQEAgLTEyMTIsNiArMjk5OSw5IEBACiAtIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgogICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgogCistIElzc3VlICM4ODI4OiBBZGQgbmV3IGZ1bmN0aW9uIG9zLnJlcGxhY2UoKSwgZm9yIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nCisgIHdpdGggb3ZlcndyaXRpbmcuCisKIC0gSXNzdWUgIzEzODQ4OiBvcGVuKCkgYW5kIHRoZSBGaWxlSU8gY29uc3RydWN0b3Igbm93IGNoZWNrIGZvciBOVUwKICAgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBuYW1lLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCkBAIC0xMjI0LDYgKzMwMTQsMTcgQEAKIC0gSXNzdWUgIzEzODg1OiBDVkUtMjAxMS0zMzg5OiB0aGUgX3NzbCBtb2R1bGUgd291bGQgYWx3YXlzIGRpc2FibGUgdGhlIENCQwogICBJViBhdHRhY2sgY291bnRlcm1lYXN1cmUuCiAKKy0gSXNzdWUgIzEzODQ3OiB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLmdtdGltZSgpIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQKKyAgb2YgVmFsdWVFcnJvciBvbiBmYWlsdXJlLiB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuYXNjdGltZSgpIG5vdyByYWlzZXMgYW4KKyAgT1NFcnJvciBpZiBsb2NhbHRpbWUoKSBmYWlsZWQuIHRpbWUuY2xvY2soKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQorICBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgb3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZAorCistIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQorICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCisKKy0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCisKIC0gSXNzdWUgIzEzNzcyOiBJbiBvcy5zeW1saW5rKCkgdW5kZXIgV2luZG93cywgZG8gbm90IHRyeSB0byBndWVzcyB0aGUgbGluawogICB0YXJnZXQncyB0eXBlIChmaWxlIG9yIGRpcmVjdG9yeSkuICBUaGUgZGV0ZWN0aW9uIHdhcyBidWdneSBhbmQgbWFkZSB0aGUKICAgY2FsbCBub24tYXRvbWljICh0aGVyZWZvcmUgcHJvbmUgdG8gcmFjZSBjb25kaXRpb25zKS4KQEAgLTEyMzksNiArMzA0MCwxMSBAQAogLSBJc3N1ZSAjMTM4MDM6IFVuZGVyIFNvbGFyaXMsIGRpc3R1dGlscyBkb2Vzbid0IGluY2x1ZGUgYml0bmVzcwogICBpbiB0aGUgZGlyZWN0b3J5IG5hbWUuCiAKKy0gSXNzdWUgIzEwMjc4OiBBZGQgdGltZS53YWxsY2xvY2soKSBmdW5jdGlvbiwgbW9ub3RvbmljIGNsb2NrLgorCistIElzc3VlICMxMzgwOTogRml4IHJlZ3Jlc3Npb24gd2hlcmUgYnoyIG1vZHVsZSB3b3VsZG4ndCB3b3JrIHdoZW4gdGhyZWFkcyBhcmUKKyAgZGlzYWJsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCiAtIElzc3VlICMxMzU4OTogRml4IHNvbWUgc2VyaWFsaXphdGlvbiBwcmltaXRpdmVzIGluIHRoZSBhaWZjIG1vZHVsZS4KICAgUGF0Y2ggYnkgT2xlZyBQbGFraG90bnl1ay4KIApAQCAtMTI1NSw2ICszMDYxLDExIEBACiAtIElzc3VlICMxMzUwMjogdGhyZWFkaW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBFdmVudC53YWl0KCkgdGhhdCBtYWRlIGl0CiAgIHJldHVybiBGYWxzZSB3aGVuIHRoZSBldmVudCB3YXMgc2V0IGFuZCBjbGVhcmVkIHJpZ2h0IGFmdGVyLgogCistIElzc3VlICM5OTkzOiBXaGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMsCisgIGFuZCB0aGUgc291cmNlIGlzIGEgc3ltbGluaywgc2h1dGlsLm1vdmUoKSBub3cgcmVjcmVhdGVzIGEgc3ltbGluayBvbiB0aGUKKyAgZGVzdGluYXRpb24gaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGNvbnRlbnRzLiAgUGF0Y2ggYnkgSm9uYXRoYW4gTmllaG9mCisgIGFuZCBIeW5layBTY2hsYXdhY2suCisKIC0gSXNzdWUgIzEyOTI2OiBGaXggYSBidWcgaW4gdGFyZmlsZSdzIGxpbmsgZXh0cmFjdGlvbi4KIAogLSBJc3N1ZSAjMTM2OTY6IEZpeCB0aGUgMzAyIFJlbGF0aXZlIFVSTCBSZWRpcmVjdGlvbiBwcm9ibGVtLgpAQCAtMTI2MiwxNSArMzA3Myw0MiBAQAogLSBJc3N1ZSAjMTM2MzY6IFdlYWsgY2lwaGVycyBhcmUgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIHNzbCBtb2R1bGUKICAgKGV4Y2VwdCB3aGVuIFNTTHYyIGlzIGV4cGxpY2l0bHkgYXNrZWQgZm9yKS4KIAotLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTI3MTU6IEFkZCBhbiBvcHRpb25hbCBzeW1saW5rcyBhcmd1bWVudCB0byBzaHV0aWwgZnVuY3Rpb25zCisgIChjb3B5ZmlsZSwgY29weW1vZGUsIGNvcHlzdGF0LCBjb3B5LCBjb3B5MikuICBXaGVuIHRoYXQgcGFyYW1ldGVyIGlzCisgIHRydWUsIHN5bWxpbmtzIGFyZW4ndCBkZXJlZmVyZW5jZWQgYW5kIHRoZSBvcGVyYXRpb24gaW5zdGVhZCBhY3RzIG9uIHRoZQorICBzeW1saW5rIGl0c2VsZiAob3IgY3JlYXRlcyBvbmUsIGlmIHJlbGV2YW50KS4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKworLSBBZGQgYSBmbGFncyBwYXJhbWV0ZXIgdG8gc2VsZWN0LmVwb2xsLgorCistIElzc3VlICMxMzYyNjogQWRkIHN1cHBvcnQgZm9yIFNTTCBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlCisgIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBtZXRob2QgYW5kIHRoZSBzc2wuT1BfU0lOR0xFX0RIX1VTRSBvcHRpb24uCiAKIC0gSXNzdWUgIzExMDA2OiBEb24ndCBpc3N1ZSBsb3cgbGV2ZWwgd2FybmluZyBpbiBzdWJwcm9jZXNzIHdoZW4gcGlwZTIoKSBmYWlscy4KIAorLSBJc3N1ZSAjMTM2MjA6IFN1cHBvcnQgZm9yIENocm9tZSBicm93c2VyIGluIHdlYmJyb3dzZXIuICBQYXRjaCBjb250cmlidXRlZAorICBieSBBcm5hdWQgQ2FsbWV0dGVzLgorCiAtIElzc3VlICMxMTgyOTogRml4IGNvZGUgZXhlY3V0aW9uIGhvbGVzIGluIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yCiAgIG1ldGFjbGFzc2VzIHdpdGggbWV0YWNsYXNzZXMuIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KIAorLSBJc3N1ZSAjMTI3MDg6IEFkZCBzdGFybWFwKCkgYW5kIHN0YXJtYXBfYXN5bmMoKSBtZXRob2RzIChzaW1pbGFyIHRvCisgIGl0ZXJ0b29scy5zdGFybWFwKCkpIHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCiAtIElzc3VlICMxNzg1OiBGaXggaW5zcGVjdCBhbmQgcHlkb2Mgd2l0aCBtaXNiZWhhdmluZyBkZXNjcmlwdG9ycy4KIAorLSBJc3N1ZSAjMTM2Mzc6ICJhMmIiIGZ1bmN0aW9ucyBpbiB0aGUgYmluYXNjaWkgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQorICB1bmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzNjM0OiBBZGQgc3VwcG9ydCBmb3IgcXVlcnlpbmcgYW5kIGRpc2FibGluZyBTU0wgY29tcHJlc3Npb24uCisKKy0gSXNzdWUgIzEzNjI3OiBBZGQgc3VwcG9ydCBmb3IgU1NMIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuCisgIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUgU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZSgpIG1ldGhvZCBhbmQgdGhlCisgIHNzbC5PUF9TSU5HTEVfRUNESF9VU0Ugb3B0aW9uLgorCistIElzc3VlICMxMzYzNTogQWRkIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIHNvIHRoYXQgU1NMIHNlcnZlcnMKKyAgY2hvb3NlIHRoZSBjaXBoZXIgYmFzZWQgb24gdGhlaXIgb3duIHByZWZlcmVuY2VzLCByYXRoZXIgdGhhbiBvbiB0aGUKKyAgY2xpZW50J3MuCisKIC0gSXNzdWUgIzExODEzOiBGaXggaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IgbW9kdWxlcy4gUGF0Y2ggYnkgQW5kcmVhcwogICBTdMO8aHJrLgogCkBAIC0xMjgzLDI3ICszMTIxLDU4IEBACiAtIElzc3VlICM4MDM1OiB1cmxsaWI6IEZpeCBhIGJ1ZyB3aGVyZSB0aGUgY2xpZW50IGNvdWxkIHJlbWFpbiBzdHVjayBhZnRlciBhCiAgIHJlZGlyZWN0aW9uIG9yIGFuIGVycm9yLgogCistIElzc3VlICMxMzU2MDogb3Muc3RyZXJyb3IoKSBub3cgdXNlcyB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZgorICBVVEYtOC4KKworLSBJc3N1ZSAjODM3MzogVGhlIGZpbGVzeXN0ZW0gcGF0aCBvZiBBRl9VTklYIHNvY2tldHMgbm93IHVzZXMgdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgYW5kIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciwgcmF0aGVyIHRoYW4gVVRGLTguICBQYXRjaAorICBieSBEYXZpZCBXYXRzb24uCisKIC0gSXNzdWUgIzEwMzUwOiBSZWFkIGFuZCBzYXZlIGVycm5vIGJlZm9yZSBjYWxsaW5nIGEgZnVuY3Rpb24gd2hpY2ggbWlnaHQKICAgb3ZlcndyaXRlIGl0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KIAorLSBJc3N1ZSAjMTE2MTA6IEludHJvZHVjZSBhIG1vcmUgZ2VuZXJhbCB3YXkgdG8gZGVjbGFyZSBhYnN0cmFjdCBwcm9wZXJ0aWVzLgorCiAtIElzc3VlICMxMzU5MTogQSBidWcgaW4gaW1wb3J0bGliIGhhcyBiZWVuIGZpeGVkIHRoYXQgY2F1c2VkIGltcG9ydF9tb2R1bGUKICAgdG8gbG9hZCBhIG1vZHVsZSB0d2ljZS4KIAotLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQKLSAgZmlsZXMsIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4KLSAgKG9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQorLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCisgIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIFJvZ2VyIFNlcnd5LgogCi0tIElzc3VlICM1OTA1OiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGluc3RlYWQgb2YKLSAgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCistIElzc3VlICMxMzQ0OSBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbWV0aG9kIGhhcyBhIG5ldyAiYmxvY2tpbmciIHBhcmFtZXRlciB3aGljaAorICB3aGVuIHNldCB0byBGYWxzZSBtYWtlcyBydW4oKSBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKKyAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4uICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2zDoC4KKworLSBJc3N1ZSAjODY4NCBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgIGVudmlyb25tZW50cy4gIFBhdGNoIGJ5IEpvc2lhaCBDYXJsc29uIGFuZCBHaWFtcGFvbG8gUm9kb2zDoC4KKworLSBBbGlhcyByZXNvdXJjZS5lcnJvciB0byBPU0Vycm9yIGFsYSBQRVAgMzE1MS4KKworLSBJc3N1ZSAjNTY4OTogQWRkIHN1cHBvcnQgZm9yIGx6bWEgY29tcHJlc3Npb24gdG8gdGhlIHRhcmZpbGUgbW9kdWxlLgorCistIElzc3VlICMxMzI0ODogVHVybiAzLjIncyBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGludG8gMy4zJ3MKKyAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSXQgY292ZXJzICdjZ2kuZXNjYXBlJywgJ2ltcG9ydGxpYi5hYmMuUHlMb2FkZXInLAorICAnaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcicsICdubnRwbGliLk5OVFAueGd0aXRsZScsICdubnRwbGliLk5OVFAueHBhdGgnLAorICBhbmQgcHJpdmF0ZSBhdHRyaWJ1dGVzIG9mICdzbXRwZC5TTVRQQ2hhbm5lbCcuCisKKy0gSXNzdWUgIzU5MDUsICMxMzU2MDogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgY3VycmVudCBsb2NhbGUKKyAgZW5jb2RpbmcsIGluc3RlYWQgb2YgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCiAKIC0gSXNzdWUgIzg2NDE6IFVwZGF0ZSBJRExFIDMgc3ludGF4IGNvbG9yaW5nIHRvIHJlY29nbml6ZSBiIi4uIiBhbmQgbm90IHUiLi4iLgogICBQYXRjaCBieSBUYWwgRWluYXQuCiAKKy0gSXNzdWUgIzEzNDY0OiBBZGQgYSByZWFkaW50bygpIG1ldGhvZCB0byBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UuICBQYXRjaAorICBieSBKb24gS3Vobi4KKwogLSB0YXJmaWxlLnB5OiBDb3JyZWN0bHkgZGV0ZWN0IGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtcyB3aXRoIGJsb2Nrc2l6ZXMKICAgb3RoZXIgdGhhbiA5MDBrLgogCiAtIElzc3VlICMxMzQzOTogRml4IG1hbnkgZXJyb3JzIGluIHR1cnRsZSBkb2NzdHJpbmdzLgogCistIElzc3VlICM2NzE1OiBBZGQgYSBtb2R1bGUgJ2x6bWEnIGZvciBjb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0uCisgIFRoYW5rcyB0byBQZXIgw5h5dmluZCBLYXJsc2VuIGZvciB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbi4KKwogLSBJc3N1ZSAjMTM0ODc6IE1ha2UgaW5zcGVjdC5nZXRtb2R1bGUgcm9idXN0IGFnYWluc3QgY2hhbmdlcyBkb25lIHRvCiAgIHN5cy5tb2R1bGVzIHdoaWxlIGl0IGlzIGl0ZXJhdGluZyBvdmVyIGl0LgogCkBAIC0xMzEzLDE1ICszMTgyLDMxIEBACiAtIElzc3VlICMxMzQ0NDogV2hlbiBzdGRvdXQgaGFzIGJlZW4gY2xvc2VkIGV4cGxpY2l0bHksIHdlIHNob3VsZCBub3QgYXR0ZW1wdAogICB0byBmbHVzaCBpdCBhdCBzaHV0ZG93biBhbmQgcHJpbnQgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzEyNTY3OiBUaGUgY3Vyc2VzIG1vZHVsZSB1c2VzIFVuaWNvZGUgZnVuY3Rpb25zIGZvciBVbmljb2RlIGFyZ3VtZW50cworICB3aGVuIGl0IGlzIGxpbmtlZCB0byB0aGUgbmN1cnNlcyBsaWJyYXJ5LiBJdCBlbmNvZGVzIGFsc28gVW5pY29kZSBzdHJpbmdzIHRvCisgIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKwogLSBJc3N1ZSAjMTI4NTY6IEVuc3VyZSBjaGlsZCBwcm9jZXNzZXMgZG8gbm90IGluaGVyaXQgdGhlIHBhcmVudCdzIHJhbmRvbQogICBzZWVkIGZvciBmaWxlbmFtZSBnZW5lcmF0aW9uIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUuICBQYXRjaCBieSBCcmlhbgogICBIYXJyaW5nLgogCistIElzc3VlICM5OTU3OiBTcG9vbGVkVGVtcG9yYXJ5RmlsZS50cnVuY2F0ZSgpIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNpemUKKyAgcGFyYW1ldGVyLCBhcyBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cy4gIFBhdGNoIGJ5IFJ5YW4gS2VsbHkuCisKIC0gSXNzdWUgIzEzNDU4OiBGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgc3NsIG1vZHVsZSB3aGVuIGRlY29kaW5nIGEKICAgY2VydGlmaWNhdGUgd2l0aCBhIHN1YmplY3RBbHROYW1lLiAgUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCiAKIC0gSXNzdWUgIzEzNDE1OiBvcy51bnNldGVudigpIGRvZXNuJ3QgaWdub3JlIGVycm9ycyBhbnltb3JlLgogCistIElzc3VlICMxMzI0NTogc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNvbnN0cnVjdG9yJ3MgdGltZWZ1bmMgYW5kCisgIGRlbGF5ZnVuY3QgcGFyYW1ldGVycyBhcmUgbm93IG9wdGlvbmFsLgorICBzY2hlZHVsZXIuZW50ZXIgYW5kIHNjaGVkdWxlci5lbnRlcmFicyBtZXRob2RzIGdhaW5lZCBhIG5ldyBrd2FyZ3MgcGFyYW1ldGVyLgorICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBDbGFyay4KKworLSBJc3N1ZSAjMTIzMjg6IFVuZGVyIFdpbmRvd3MsIHJlZmFjdG9yIGhhbmRsaW5nIG9mIEN0cmwtQyBldmVudHMgYW5kCisgIG1ha2UgX211bHRpcHJvY2Vzc2luZy53aW4zMi5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGludGVycnVwdGlibGUgd2hlbgorICB0aGUgd2FpdF9mbGFnIHBhcmFtZXRlciBpcyBmYWxzZS4gIFBhdGNoIGJ5IHNidC4KKwogLSBJc3N1ZSAjMTMzMjI6IEZpeCBCdWZmZXJlZFdyaXRlci53cml0ZSgpIHRvIGVuc3VyZSB0aGF0IEJsb2NraW5nSU9FcnJvciBpcwogICByYWlzZWQgd2hlbiB0aGUgd3JhcHBlZCByYXcgZmlsZSBpcyBub24tYmxvY2tpbmcgYW5kIHRoZSB3cml0ZSB3b3VsZCBibG9jay4KICAgUHJldmlvdXMgY29kZSBhc3N1bWVkIHRoYXQgdGhlIHJhdyB3cml0ZSgpIHdvdWxkIHJhaXNlIEJsb2NraW5nSU9FcnJvciwgYnV0CkBAIC0xMzM0LDEzICszMjE5LDI1IEBACiAgIG5vZGUgd2hlbiBpdCBpcyB0aGUgb25seSBjaGlsZCBvZiBhbiBlbGVtZW50LiAgSW5pdGlhbCBwYXRjaCBieSBEYW4KICAgS2VuaWdzYmVyZy4KIAorLSBJc3N1ZSAjMTMzNzQ6IFRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHRoZSBvcyBtb2R1bGUuIFVzZQorICBVbmljb2RlIGZpbGVuYW1lcyBpbnN0ZWFkIG9mIGJ5dGVzIGZpbGVuYW1lcyB0byBub3QgZGVwZW5kIG9uIHRoZSBBTlNJIGNvZGUKKyAgcGFnZSBhbnltb3JlIGFuZCB0byBzdXBwb3J0IGFueSBmaWxlbmFtZS4KKworLSBJc3N1ZSAjMTMyOTc6IFVzZSBieXRlcyB0eXBlIHRvIHNlbmQgYW5kIHJlY2VpdmUgYmluYXJ5IGRhdGEgdGhyb3VnaCBYTUxSUEMuCisKKy0gSXNzdWUgIzYzOTc6IFN1cHBvcnQgIi9kZXYvcG9sbCIgcG9sbGluZyBvYmplY3RzIGluIHNlbGVjdCBtb2R1bGUsCisgIHVuZGVyIFNvbGFyaXMgJiBkZXJpdmF0aXZlcy4KKwogLSBJc3N1ZXMgIzE3NDU3NjEsICM3NTU2NzAsICMxMzM1NywgIzEyNjI5LCAjMTIwMDMxMzogSFRNTFBhcnNlciBub3cgY29ycmVjdGx5CiAgIGhhbmRsZXMgbm9uLXZhbGlkIGF0dHJpYnV0ZXMsIGluY2x1ZGluZyBhZGphY2VudCBhbmQgdW5xdW90ZWQgYXR0cmlidXRlcy4KIAotLSBJc3N1ZSAjMTMxOTM6IEZpeCBkaXN0dXRpbHMuZmlsZWxpc3QuRmlsZUxpc3QgdW5kZXIgV2luZG93cy4KKy0gSXNzdWUgIzEzMTkzOiBGaXggZGlzdHV0aWxzLmZpbGVsaXN0LkZpbGVMaXN0IGFuZCBwYWNrYWdpbmcubWFuaWZlc3QuTWFuaWZlc3QKKyAgdW5kZXIgV2luZG93cy4KIAogLSBJc3N1ZSAjMTMzODQ6IFJlbW92ZSB1bm5lY2Vzc2FyeSBfX2Z1dHVyZV9fIGltcG9ydCBpbiBMaWIvcmFuZG9tLnB5CiAKKy0gSXNzdWUgIzEzMTQ5OiBTcGVlZCB1cCBhcHBlbmQtb25seSBTdHJpbmdJTyBvYmplY3RzLgorCiAtIElzc3VlICMxMzM3MzogbXVsdGlwcm9jZXNzaW5nLlF1ZXVlLmdldCgpIGNvdWxkIHNvbWV0aW1lcyBibG9jayBpbmRlZmluaXRlbHkKICAgd2hlbiBjYWxsZWQgd2l0aCBhIHRpbWVvdXQuICBQYXRjaCBieSBBcm5hdWQgWXNtYWwuCiAKQEAgLTEzNTYsMTEgKzMyNTMsMjAgQEAKIC0gSXNzdWUgIzEzMzM5OiBGaXggY29tcGlsZSBlcnJvciBpbiBwb3NpeG1vZHVsZS5jIGR1ZSB0byBtaXNzaW5nIHNlbWljb2xvbi4KICAgVGhhbmtzIHRvIFJvYmVydCBYaWFvLgogCistIEJ5dGUgY29tcGlsYXRpb24gaW4gcGFja2FnaW5nIGlzIG5vdyBpc29sYXRlZCBmcm9tIHRoZSBjYWxsaW5nIFB5dGhvbiAtQiBvcgorICAtTyBvcHRpb25zLCBpbnN0ZWFkIG9mIGJlaW5nIGRpc2FsbG93ZWQgdW5kZXIgLUIgb3IgYnVnZ3kgdW5kZXIgLU8uCisKIC0gSXNzdWUgIzEwNTcwOiBjdXJzZXMucHV0cCgpIGFuZCBjdXJzZXMudHBhcm0oKSBhcmUgbm93IGV4cGVjdGluZyBhIGJ5dGUKICAgc3RyaW5nLCBpbnN0ZWFkIG9mIGEgVW5pY29kZSBzdHJpbmcuCiAKKy0gSXNzdWUgIzEzMjk1OiBodHRwLnNlcnZlciBub3cgcHJvZHVjZXMgdmFsaWQgSFRNTCA0LjAxIHN0cmljdC4KKwogLSBJc3N1ZSAjMjg5MjogcHJlc2VydmUgaXRlcnBhcnNlIGV2ZW50cyBpbiBjYXNlIG9mIFN5bnRheEVycm9yLgogCistIElzc3VlICMxMzI4NzogdXJsbGliLnJlcXVlc3QgYW5kIHVybGxpYi5lcnJvciBub3cgY29udGFpbnMgYW4gX19hbGxfXworICBhdHRyaWJ1dGUgdG8gZXhwb3NlIG9ubHkgcmVsZXZhbnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAgUGF0Y2ggYnkgRmxvcmVudAorICBYaWNsdW5hLgorCiAtIElzc3VlICM2NzA2NjQ6IEZpeCBIVE1MUGFyc2VyIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGNvbnRlbnQgb2YKICAgYGA8c2NyaXB0Pi4uLjwvc2NyaXB0PmBgIGFuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgogCkBAIC0xMzcwLDYgKzMyNzYsOSBAQAogLSBJc3N1ZSAjMTMyOTY6IEZpeCBJRExFIHRvIGNsZWFyIGNvbXBpbGUgX19mdXR1cmVfXyBmbGFncyBvbiBzaGVsbCByZXN0YXJ0LgogICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCiAKKy0gRml4IHRoZSB4bWxycGMuY2xpZW50IHVzZXIgYWdlbnQgdG8gcmV0dXJuIHNvbWV0aGluZyBzaW1pbGFyIHRvCisgIHVybGxpYi5yZXF1ZXN0IHVzZXIgYWdlbnQ6ICJQeXRob24teG1scnBjLzMuMyIuCisKIC0gSXNzdWUgIzEzMjkzOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byBtYXJzaGFsIGJ5dGVzIHVzaW5nCiAgIHhtbHJwYy5jbGllbnQuCiAKQEAgLTEzODAsNTEgKzMyODksODEgQEAKIC0gSXNzdWUgIzEzMjczOiBmaXggYSBidWcgdGhhdCBwcmV2ZW50ZWQgSFRNTFBhcnNlciB0byBwcm9wZXJseSBkZXRlY3Qgc29tZQogICB0YWdzIHdoZW4gc3RyaWN0PUZhbHNlLgogCistIElzc3VlICMxMTE4MzogQWRkIGZpbmVyLWdyYWluZWQgZXhjZXB0aW9ucyB0byB0aGUgc3NsIG1vZHVsZSwgc28gdGhhdAorICB5b3UgZG9uJ3QgaGF2ZSB0byBpbnNwZWN0IHRoZSBleGNlcHRpb24ncyBhdHRyaWJ1dGVzIGluIHRoZSBjb21tb24gY2FzZS4KKworLSBJc3N1ZSAjMTMyMTY6IEFkZCBjcDY1MDAxIGNvZGVjLCB0aGUgV2luZG93cyBVVEYtOCAoQ1BfVVRGOCkuCisKKy0gSXNzdWUgIzEzMjI2OiBBZGQgUlRMRF94eHggY29uc3RhbnRzIHRvIHRoZSBvcyBtb2R1bGUuIFRoZXNlIGNvbnN0YW50cyBjYW4gYmUKKyAgdXNlZCB3aXRoIHN5cy5zZXRkbG9wZW5mbGFncygpLgorCistIElzc3VlICMxMDI3ODogQWRkIGNsb2NrX2dldHJlcygpLCBjbG9ja19nZXR0aW1lKCkgYW5kIENMT0NLX3h4eCBjb25zdGFudHMgdG8KKyAgdGhlIHRpbWUgbW9kdWxlLiB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpIHByb3ZpZGVzIGEKKyAgbW9ub3RvbmljIGNsb2NrCisKIC0gSXNzdWUgIzEwMzMyOiBtdWx0aXByb2Nlc3Npbmc6IGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYSBQb29sIGlzIGNsb3NlZAogICBiZWZvcmUgYWxsIHRhc2tzIGhhdmUgY29tcGxldGVkLgogCiAtIElzc3VlICMxMzI1NTogd3JvbmcgZG9jc3RyaW5ncyBpbiBhcnJheSBtb2R1bGUuCiAKKy0gSXNzdWUgIzg1NDA6IFJlbW92ZSBkZXByZWNhdGVkIENvbnRleHQuX2NsYW1wIGF0dHJpYnV0ZSBpbiBEZWNpbWFsIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyMzU6IEFkZGVkIERlcHJlY2F0aW9uV2FybmluZyB0byBsb2dnaW5nLndhcm4oKSBtZXRob2QgYW5kIGZ1bmN0aW9uLgorCiAtIElzc3VlICM5MTY4OiBub3cgc210cGQgaXMgYWJsZSB0byBiaW5kIHByaXZpbGVnZWQgcG9ydC4KIAogLSBJc3N1ZSAjMTI1Mjk6IGZpeCBjZ2kucGFyc2VfaGVhZGVyIGlzc3VlIG9uIHN0cmluZ3Mgd2l0aCBkb3VibGUtcXVvdGVzIGFuZAogICBzZW1pY29sb25zIHRvZ2V0aGVyLiBQYXRjaCBieSBCZW4gRGFybmVsbCBhbmQgUGV0cmkgTGVodGluZW4uCiAKLS0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAotICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgorLSBJc3N1ZSAjMTMyMjc6IGZ1bmN0b29scy5scnVfY2FjaGUoKSBub3cgaGFzIGEgb3B0aW9uIHRvIGRpc3Rpbmd1aXNoCisgIGNhbGxzIHdpdGggZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLgogCiAtIElzc3VlICM2MDkwOiB6aXBmaWxlIHJhaXNlcyBhIFZhbHVlRXJyb3Igd2hlbiBhIGRvY3VtZW50IHdpdGggYSB0aW1lc3RhbXAKICAgZWFybGllciB0aGFuIDE5ODAgaXMgcHJvdmlkZWQuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuLgogCistIElzc3VlICMxMzE1MDogc3lzY29uZmlnIG5vIGxvbmdlciBwYXJzZXMgdGhlIE1ha2VmaWxlIGFuZCBjb25maWcuaCBmaWxlcworICB3aGVuIGltcG9ydGVkLCBpbnN0ZWFkIGRvaW5nIGl0IGF0IGJ1aWxkIHRpbWUuICBUaGlzIG1ha2VzIGltcG9ydGluZworICBzeXNjb25maWcgZmFzdGVyIGFuZCByZWR1Y2VzIFB5dGhvbiBzdGFydHVwIHRpbWUgYnkgMjAlLgorCistIElzc3VlICMxMjQ0ODogc210cGxpYiBub3cgZmx1c2hlcyBzdGRvdXQgd2hpbGUgcnVubmluZyBgYHB5dGhvbiAtbSBzbXRwbGliYGAKKyAgaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgcHJvbXB0IGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTI0NTQ6IFRoZSBtYWlsYm94IG1vZHVsZSBpcyBub3cgdXNpbmcgQVNDSUksIGluc3RlYWQgb2YgdGhlIGxvY2FsZQorICBlbmNvZGluZywgdG8gcmVhZCBhbmQgd3JpdGUgLm1oX3NlcXVlbmNlcyBmaWxlcy4KKwogLSBJc3N1ZSAjMTMxOTQ6IHpsaWIuY29tcHJlc3NvYmooKS5jb3B5KCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpLmNvcHkoKSBhcmUKICAgbm93IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgogCistIElzc3VlICMxNjczMDA3OiB1cmxsaWIucmVxdWVzdCBub3cgc3VwcG9ydHMgSEVBRCByZXF1ZXN0IHZpYSBuZXcgbWV0aG9kIGFyZ3VtZW50LgorICBQYXRjaCBjb250cmlidXRpb25zIGJ5IERhdmlkIFN0YW5laywgUGF0cmljayBXZXN0ZXJob2ZmIGFuZCBFemlvIE1lbG90dGkuCisKKy0gSXNzdWUgIzEyMzg2OiBwYWNrYWdpbmcgZG9lcyBub3QgZmFpbCBhbnltb3JlIHdoZW4gd3JpdGluZyB0aGUgUkVTT1VSQ0VTCisgIGZpbGUuCisKIC0gSXNzdWUgIzEzMTU4OiBGaXggZGVjb2RpbmcgYW5kIGVuY29kaW5nIG9mIEdOVSB0YXIgc3BlY2lmaWMgYmFzZS0yNTYgbnVtYmVyCiAgIGZpZWxkcyBpbiB0YXJmaWxlLgogCi0tIElzc3VlICMxMzE3NzogIEZ1bmN0b29scyBscnVfY2FjaGUoKSBubyBsb25nZXIgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uCi0gIGluc2lkZSBhbiBleGNlcHRpb24gaGFuZGxlci4gIFRoaXMgbWFrZXMgdHJhY2ViYWNrcyBlYXNpZXIgdG8gcmVhZCBiZWNhdXNlCi0gIGNoYWluZWQgZXhjZXB0aW9ucyBhcmUgYXZvaWRlZC4KLQogLSBJc3N1ZSAjMTMwMjU6IG1pbWV0eXBlcyBpcyBub3cgcmVhZGluZyBNSU1FIHR5cGVzIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZywKICAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgogCiAtIElzc3VlICMxMDY1MzogT24gV2luZG93cywgdXNlIHN0cmZ0aW1lKCkgaW5zdGVhZCBvZiB3Y3NmdGltZSgpIGJlY2F1c2UKICAgd2NzZnRpbWUoKSBkb2Vzbid0IGZvcm1hdCB0aW1lIHpvbmUgY29ycmVjdGx5LgogCistIElzc3VlICMxMzE1MDogVGhlIHRva2VuaXplIG1vZHVsZSBkb2Vzbid0IGNvbXBpbGUgbGFyZ2UgcmVndWxhciBleHByZXNzaW9ucworICBhdCBzdGFydHVwIGFueW1vcmUuCisKIC0gSXNzdWUgIzExMTcxOiBGaXggZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUgd2hlbiBQeXRob24gd2FzCiAgIGNvbmZpZ3VyZWQgd2l0aCBkaWZmZXJlbnQgcHJlZml4IGFuZCBleGVjLXByZWZpeC4KIAotLSBJc3N1ZSAjMTEyNTQ6IFRlYWNoIGRpc3R1dGlscyB0byBjb21waWxlIC5weWMgYW5kIC5weW8gZmlsZXMgaW4KKy0gSXNzdWUgIzExMjU0OiBUZWFjaCBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyB0byBjb21waWxlIC5weWMgYW5kIC5weW8gZmlsZXMgaW4KICAgUEVQIDMxNDctY29tcGxpYW50IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLgogCi0tIElzc3VlICMxMTI1MDogQmFjayBwb3J0IGZpeCBmcm9tIDMuMyBicmFuY2gsIHNvIHRoYXQgMnRvMyBjYW4gaGFuZGxlIGZpbGVzCi0gIHdpdGggbGluZSBmZWVkcy4gIFRoaXMgd2FzIHBvcnRlZCBmcm9tIHRoZSBzYW5kYm94IHRvIHRoZSAzLjMgYnJhbmNoLCBidXQKLSAgZGlkbid0IG1ha2UgaXQgaW50byAzLjIuCi0KIC0gSXNzdWUgIzczNjc6IEZpeCBwa2d1dGlsLndhbGtfcGF0aHMgdG8gc2tpcCBkaXJlY3RvcmllcyB3aG9zZQogICBjb250ZW50cyBjYW5ub3QgYmUgcmVhZC4KIAorLSBJc3N1ZSAjMzE2MzogVGhlIHN0cnVjdCBtb2R1bGUgZ2V0cyBuZXcgZm9ybWF0IGNoYXJhY3RlcnMgJ24nIGFuZCAnTicKKyAgc3VwcG9ydGluZyBDIGludGVnZXIgdHlwZXMgYGBzc2l6ZV90YGAgYW5kIGBgc2l6ZV90YGAsIHJlc3BlY3RpdmVseS4KKwogLSBJc3N1ZSAjMTMwOTk6IEZpeCBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgdW5kZXIgYSBUdXJraXNoIGxvY2FsZS4KICAgUmVwb3J0ZWQgYW5kIGRpYWdub3NlZCBieSBUaG9tYXMgS2x1eXZlci4KIApAQCAtMTQzNiw4ICszMzc1LDYgQEAKICAgbWV0YWNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCBjb3B5cmVnLiAgUGF0Y2ggYnkgTmljb2xhcyBNLiBUaGnDqXJ5IGFuZCBDcmFpZwogICBDaXRyby4KIAotLSBJc3N1ZSAjNDE0NzogbWluaWRvbSdzIHRvcHJldHR5eG1sIG5vIGxvbmdlciBhZGRzIHdoaXRlc3BhY2UgdG8gdGV4dCBub2Rlcy4KLQogLSBJc3N1ZSAjMTMwMzQ6IFdoZW4gZGVjb2Rpbmcgc29tZSBTU0wgY2VydGlmaWNhdGVzLCB0aGUgc3ViamVjdEFsdE5hbWUKICAgZXh0ZW5zaW9uIGNvdWxkIGJlIHVucmVwb3J0ZWQuCiAKQEAgLTE0NDUsMTMgKzMzODIsMjkgQEAKICAgd2l0aCBpbnZhbGlkIGhleCBlc2NhcGUgc2VxdWVuY2VzLCBsaWtlIGInXHgwJy4KICAgKE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4pCiAKLS0gSXNzdWUgIzg5MzM6IGRpc3R1dGlscycgUEtHLUlORk8gZmlsZXMgd2lsbCBub3cgY29ycmVjdGx5IHJlcG9ydAotICBNZXRhZGF0YS1WZXJzaW9uOiAxLjEgaW5zdGVhZCBvZiAxLjAgaWYgYSBDbGFzc2lmaWVyIG9yIERvd25sb2FkLVVSTCBmaWVsZCBpcwotICBwcmVzZW50LgorLSBJc3N1ZSAjMTIzMDY6IEV4cG9zZSB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSB6bGliIEMgbGlicmFyeSBhcyBhIGNvbnN0YW50LAorICBaTElCX1JVTlRJTUVfVkVSU0lPTiwgaW4gdGhlIHpsaWIgbW9kdWxlLiBQYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCiAKLS0gSXNzdWUgIzk1NjE6IGRpc3R1dGlscyBub3cgcmVhZHMgYW5kIHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKKy0gSXNzdWUgIzEyOTU5OiBBZGQgY29sbGVjdGlvbnMuQ2hhaW5NYXAgdG8gY29sbGVjdGlvbnMuX19hbGxfXy4KKworLSBJc3N1ZSAjODkzMzogZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyBhbmQgcGFja2FnaW5nJ3MgTUVUQURBVEEgZmlsZXMgd2lsbAorICBub3cgY29ycmVjdGx5IHJlcG9ydCBNZXRhZGF0YS1WZXJzaW9uOiAxLjEgaW5zdGVhZCBvZiAxLjAgaWYgYSBDbGFzc2lmaWVyIG9yCisgIERvd25sb2FkLVVSTCBmaWVsZCBpcyBwcmVzZW50LgorCistIElzc3VlICMxMjU2NzogQWRkIGN1cnNlcy51bmdldF93Y2goKSBmdW5jdGlvbi4gUHVzaCBhIGNoYXJhY3RlciBzbyB0aGUgbmV4dAorICBnZXRfd2NoKCkgd2lsbCByZXR1cm4gaXQuCisKKy0gSXNzdWUgIzk1NjE6IGRpc3R1dGlscyBhbmQgcGFja2FnaW5nIG5vdyB3cml0ZXMgZWdnLWluZm8gZmlsZXMgdXNpbmcgVVRGLTgsCiAgIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAorLSBJc3N1ZSAjODI4NjogVGhlIGRpc3R1dGlscyBjb21tYW5kIHNkaXN0IHdpbGwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgaW5zdGVhZAorICBvZiBjcmFzaGluZyB3aGVuIGFuIGludmFsaWQgcGF0aCBpcyBnaXZlbiBpbiB0aGUgbWFuaWZlc3QgdGVtcGxhdGUuCisKKy0gSXNzdWUgIzEyODQxOiB0YXJmaWxlIHVubmVjZXNzYXJpbHkgY2hlY2tlZCB0aGUgZXhpc3RlbmNlIG9mIG51bWVyaWNhbCB1c2VyCisgIGFuZCBncm91cCBpZHMgb24gZXh0cmFjdGlvbi4gSWYgb25lIG9mIHRoZW0gZGlkIG5vdCBleGlzdCB0aGUgcmVzcGVjdGl2ZSBpZAorICBvZiB0aGUgY3VycmVudCB1c2VyIChpLmUuIHJvb3QpIHdhcyB1c2VkIGZvciB0aGUgZmlsZSBhbmQgb3duZXJzaGlwCisgIGluZm9ybWF0aW9uIHdhcyBsb3N0LgorCiAtIElzc3VlICMxMjg4ODogRml4IGEgYnVnIGluIEhUTUxQYXJzZXIudW5lc2NhcGUgdGhhdCBwcmV2ZW50ZWQgaXQgdG8gZXNjYXBlCiAgIG1vcmUgdGhhbiAxMjggZW50aXRpZXMuICBQYXRjaCBieSBQZXRlciBPdHRlbi4KIApAQCAtMTQ1OSw2ICszNDEyLDE2IEBACiAKIC0gSXNzdWUgIzEyNjM2OiBJRExFIHJlYWRzIHRoZSBjb2RpbmcgY29va2llIHdoZW4gZXhlY3V0aW5nIGEgUHl0aG9uIHNjcmlwdC4KIAorLSBJc3N1ZSAjMTI0OTQ6IE9uIGVycm9yLCBjYWxsKCksIGNoZWNrX2NhbGwoKSwgY2hlY2tfb3V0cHV0KCkgYW5kCisgIGdldHN0YXR1c291dHB1dCgpIGZ1bmN0aW9ucyBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGtpbGwgdGhlIHByb2Nlc3MsCisgIHJlYWQgaXRzIHN0YXR1cyAodG8gYXZvaWQgem9tYmlzKSBhbmQgY2xvc2UgcGlwZXMuCisKKy0gSXNzdWUgIzEyNzIwOiBFeHBvc2UgbG93LWxldmVsIExpbnV4IGV4dGVuZGVkIGZpbGUgYXR0cmlidXRlIGZ1bmN0aW9ucyBpbiBvcy4KKworLSBJc3N1ZSAjMTA5NDY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZHMgYmRpc3RfZHVtYiwgYmRpc3Rfd2luaW5zdCBhbmQgYmRpc3RfbXNpCisgIG5vdyByZXNwZWN0IGEgLS1za2lwLWJ1aWxkIG9wdGlvbiBnaXZlbiB0byBiZGlzdC4gIFRoZSBwYWNrYWdpbmcgY29tbWFuZHMKKyAgd2VyZSBmaXhlZCB0b28uCisKIC0gSXNzdWUgIzEyODQ3OiBGaXggYSBjcmFzaCB3aXRoIG5lZ2F0aXZlIFBVVCBhbmQgTE9OR19CSU5QVVQgYXJndW1lbnRzIGluCiAgIHRoZSBDIHBpY2tsZSBpbXBsZW1lbnRhdGlvbi4KIApAQCAtMTQ2OCwyMDEgKzM0MzEsNDcgQEAKIC0gSXNzdWUgIzEyMjg3OiBGaXggYSBzdGFjayBjb3JydXB0aW9uIGluIG9zc2F1ZGlvZGV2IG1vZHVsZSB3aGVuIHRoZSBGRCBpcwogICBncmVhdGVyIHRoYW4gRkRfU0VUU0laRS4KIAorLSBJc3N1ZSAjMTI4Mzk6IEZpeCBjcmFzaCBpbiB6bGliIG1vZHVsZSBkdWUgdG8gdmVyc2lvbiBtaXNtYXRjaC4KKyAgRml4IGJ5IFJpY2hhcmQgTS4gVGV3LgorCistIElzc3VlICM5OTIzOiBUaGUgbWFpbGNhcCBtb2R1bGUgbm93IGNvcnJlY3RseSB1c2VzIHRoZSBwbGF0Zm9ybSBwYXRoCisgIHNlcGFyYXRvciBmb3IgdGhlIE1BSUxDQVAgZW52aXJvbm1lbnQgdmFyaWFibGUgb24gbm9uLVBPU0lYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMTI4MzU6IEZvbGxvdyB1cCB0byAjNjU2MCB0aGF0IHVuY29uZGl0aW9uYWxseSBwcmV2ZW50cyB1c2Ugb2YgdGhlCisgIHVuZW5jcnlwdGVkIHNlbmRtc2cvcmVjdm1zZyBBUElzIG9uIFNTTCB3cmFwcGVkIHNvY2tldHMuIFBhdGNoIGJ5IERhdmlkCisgIFdhdHNvbi4KKworLSBJc3N1ZSAjMTI4MDM6IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkgbm93IGFjY2VwdHMgYSBwYXNzd29yZCBhcmd1bWVudAorICB0byBiZSB1c2VkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBlbmNyeXB0ZWQuICBQYXRjaCBieSBBZGFtIFNpbXBraW5zLgorCiAtIElzc3VlICMxMTY1NzogRml4IHNlbmRpbmcgZmlsZSBkZXNjcmlwdG9ycyBvdmVyIDI1NSBvdmVyIGEgbXVsdGlwcm9jZXNzaW5nCiAgIFBpcGUuCiAKLS0gSXNzdWUgIzEzMDA3OiB3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KKy0gSXNzdWUgIzEyODExOiB0YWJuYW5ueS5jaGVjaygpIG5vdyBwcm9tcHRseSBjbG9zZXMgY2hlY2tlZCBmaWxlcy4gUGF0Y2ggYnkKKyAgQW50aG9ueSBCcmlnZ3MuCisKKy0gSXNzdWUgIzY1NjA6IFRoZSBzZW5kbXNnL3JlY3Ztc2cgQVBJIGlzIG5vdyBleHBvc2VkIGJ5IHRoZSBzb2NrZXQgbW9kdWxlCisgIHdoZW4gcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0sIHN1cHBvcnRpbmcgcHJvY2Vzc2luZyBvZgorICBhbmNpbGxhcnkgZGF0YSBpbiBwdXJlIFB5dGhvbiBjb2RlLiBQYXRjaCBieSBEYXZpZCBXYXRzb24gYW5kIEhlaWtvIFd1bmRyYW0uCisKKy0gSXNzdWUgIzEyMzI2OiBPbiBMaW51eCwgc3lzLnBsYXRmb3JtIGRvZXNuJ3QgY29udGFpbiB0aGUgbWFqb3IgdmVyc2lvbgorICBhbnltb3JlLiBJdCBpcyBub3cgYWx3YXlzICdsaW51eCcsIGluc3RlYWQgb2YgJ2xpbnV4Micgb3IgJ2xpbnV4MycgZGVwZW5kaW5nCisgIG9uIHRoZSBMaW51eCB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgUHl0aG9uLgogCiAtIElzc3VlICMxMjIxMzogRml4IGEgYnVmZmVyaW5nIGJ1ZyB3aXRoIGludGVybGVhdmVkIHJlYWRzIGFuZCB3cml0ZXMgdGhhdAogICBjb3VsZCBhcHBlYXIgb24gQnVmZmVyZWRSYW5kb20gc3RyZWFtcy4KIAorLSBJc3N1ZSAjMTI3Nzg6IFJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBKU09OLWVuY29kaW5nIGEgbGFyZ2UKKyAgY29udGFpbmVyIG9mIG1hbnkgc21hbGwgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTI2NTA6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGEgc3VicHJvY2Vzcy5Qb3BlbiBjb3VsZCBsZWFrCiAgIHJlc291cmNlcyAoRkQvem9tYmllKSB3aGVuIGtpbGxlZCBhdCB0aGUgd3JvbmcgdGltZS4KIAotLSBJc3N1ZSAjMTA4NjA6IGh0dHAuY2xpZW50IG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBhbiBlbXB0eSBwb3J0IGFmdGVyIHBvcnQKLSAgZGVsaW1pdGVyIGluIFVSTHMuCistIElzc3VlICMxMjc0NDogRml4IGluZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzIGJldHdlZW4gMioqMzEgYW5kCisgIDIqKjYzIG9uIHN5c3RlbXMgd2l0aCBhIDY0LWJpdCBDICJsb25nIi4KIAotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgotCi0tIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCi0KLS0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MDUzOiBwYXRjaGNoZWNrLnB5ICgibWFrZSBwYXRjaGNoZWNrIikgbm93IHdvcmtzIHdpdGggTVEgcGF0Y2hlcy4KLSAgUGF0Y2ggYnkgRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqS4KLQotLSBJc3N1ZSAjMTM5MzA6IDJ0bzMgaXMgbm93IGFibGUgdG8gd3JpdGUgaXRzIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgotICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQotICBzdWZmaXguICBTZWUgaXRzIG5ldyAtbywgLVcgYW5kIC0tYWRkLXN1ZmZpeCBvcHRpb25zLiAgVGhpcyBtYWtlcyBpdCBtb3JlCi0gIHVzZWZ1bCBpbiBtYW55IGF1dG9tYXRlZCBjb2RlIHRyYW5zbGF0aW9uIHdvcmtmbG93cy4KLQotLSBJc3N1ZSAjMTM2Mjg6IHB5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbgotICB0cmFjZWJhY2sgaWYgUHl0aG9uIGlzIG9wdGltaXplZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdAotCi0tIElzc3VlICMxMzc4NjogUmVtb3ZlIHVuaW1wbGVtZW50ZWQgJ3RyYWNlJyBsb25nIG9wdGlvbiBmcm9tIHJlZ3J0ZXN0LnB5LgotCi0tIElzc3VlICMxMzcyNTogRml4IHJlZ3J0ZXN0IHRvIHJlY29nbml6ZSB0aGUgZG9jdW1lbnRlZCAtZCBmbGFnLgotICBQYXRjaCBieSBFcm5vIFR1a2lhLgotCi0tIElzc3VlICMxMzMwNDogU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvcgotICBQWVRIT05OT1VTRVJTSVRFKS4gIChQYXRjaCBieSBDYXJsIE1leWVyKQotCi0tIElzc3VlICMxMzIxODogRml4IHRlc3Rfc3NsIGZhaWx1cmVzIG9uIERlYmlhbi9VYnVudHUuCi0KLS0gSXNzdWUgIzEyODIxOiBGaXggdGVzdF9mY250bCBmYWlsdXJlcyBvbiBPcGVuQlNEIDUuCi0KLS0gUmUtZW5hYmxlIGxpYjJ0bzMncyB0ZXN0X3BhcnNlci5weSB0ZXN0cywgdGhvdWdoIHdpdGggYW4gZXhwZWN0ZWQgZmFpbHVyZQotICAoc2VlIGlzc3VlIDEzMTI1KS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEzODQwOiBUaGUgZXJyb3IgbWVzc2FnZSBwcm9kdWNlZCBieSBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIKLSAgd2hlbiBnaXZlbiBhIFVuaWNvZGUgc3RyaW5nIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICM5OTc1OiBzb2NrZXQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGZsb3dpbmZvIGFuZCBzY29wZV9pZC4gUGF0Y2ggYnkKLSAgVmlsbW9zIE5lYmVoYWouCi0KLS0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkZpbGUgbm93IHVzZSBhIGxpbmVhci10aW1lIGJ1ZmZlciBncm93dGgKLSAgc3RyYXRlZ3kgaW5zdGVhZCBvZiBhIHF1YWRyYXRpYy10aW1lIG9uZS4KLQotLSBJc3N1ZSAjMTMwNzA6IEZpeCBhIGNyYXNoIHdoZW4gYSBUZXh0SU9XcmFwcGVyIGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZQotICB3b3VsZCBiZSBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSB0byBpdHMgdW5kZXJseWluZyBCdWZmZXJlZFJXUGFpcidzCi0gIHdyaXRlciBnb3QgY2xlYXJlZCBieSB0aGUgR0MuCi0KLS0gSXNzdWUgIzEyODgxOiBjdHlwZXM6IEZpeCBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcy4KLQotLSBJc3N1ZSAjMTMwNTg6IG9zc2F1ZGlvZGV2OiBmaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBvbiBlcnJvci4gUGF0Y2ggYnkKLSAgVGhvbWFzIEphcm9zY2guCi0KLS0gSXNzdWUgIzEzMDEzOiBjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLgotICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTMwMjI6IEZpeDogX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoKSBkb2Vzbid0IGNoZWNrIHRoYXQKLSAgZmlsZSBkZXNjcmlwdG9yIHdhcyBhY3R1YWxseSByZWNlaXZlZC4KLQotLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjawotICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCi0tIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCi0gIE9wZW5JbmRpYW5hL0lsbHVtb3MuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZXMgIzEzNDkxIGFuZCAjMTM5OTU6IEZpeCBtYW55IGVycm9ycyBpbiBzcWxpdGUzIGRvY3VtZW50YXRpb24uCi0gIEluaXRpYWwgcGF0Y2ggZm9yICMxMzQ5MSBieSBKb2hhbm5lcyBWb2dlbC4KLQotLSBJc3N1ZSAjMTM0MDI6IERvY3VtZW50IGFic29sdXRlbmVzcyBvZiBzeXMuZXhlY3V0YWJsZS4KLQotLSBJc3N1ZSAjMTM4ODM6IFBZVEhPTkNBU0VPSyBhbHNvIHVzZWQgb24gT1MgWCBhbmQgT1MvMi4KLQotLSBJc3N1ZSAjMTI5NDk6IERvY3VtZW50IHRoZSBrd29ubHlhcmdjb3VudCBhcmd1bWVudCBmb3IgdGhlIFB5Q29kZV9OZXcKLSAgQyBBUEkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzIxMzQ6IFRoZSB0b2tlbml6ZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGNsYXJpZmllZCB0byBleHBsYWluIHdoeQotICBhbGwgb3BlcmF0b3IgYW5kIGRlbGltaXRlciB0b2tlbnMgYXJlIHRyZWF0ZWQgYXMgdG9rZW4uT1AgdG9rZW5zLgotCi0tIElzc3VlICMxMzUxMzogRml4IGlvLklPQmFzZSBkb2N1bWVudGF0aW9uIHRvIGNvcnJlY3RseSBsaW5rIHRvIHRoZQotICBpby5JT0Jhc2UucmVhZGxpbmUgbWV0aG9kIGluc3RlYWQgb2YgdGhlIHJlYWRsaW5lIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMyMzc6IFJlb3JnYW5pc2Ugc3VicHJvY2VzcyBkb2N1bWVudGF0aW9uIHRvIGVtcGhhc2lzZSBjb252ZW5pZW5jZQotICBmdW5jdGlvbnMgYW5kIHRoZSBtb3N0IGNvbW1vbmx5IG5lZWRlZCBhcmd1bWVudHMgdG8gUG9wZW4uCi0KLS0gSXNzdWUgIzEzMTQxOiBEZW1vbnN0cmF0ZSByZWNvbW1lbmRlZCBzdHlsZSBmb3Igc29ja2V0c2VydmVyIGV4YW1wbGVzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAzLVNlcC0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIzMjY6IHN5cy5wbGF0Zm9ybSBpcyBub3cgYWx3YXlzICdsaW51eDInIG9uIExpbnV4LCBldmVuIGlmIFB5dGhvbgotICBpcyBjb21waWxlZCBvbiBMaW51eCAzLgotCi0tIEFjY2VwdCBieXRlcyBmb3IgdGhlIEFTVCBzdHJpbmcgdHlwZS4gVGhpcyBpcyB0ZW1wb3JhcnkgdW50aWwgYSBwcm9wZXIgZml4IGluCi0gIDMuMy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCi0gIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KLQotLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKLSAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCi0gIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKLSAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCi0KLS0gSXNzdWUgIzEwOTQ2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmRzIGJkaXN0X2R1bWIsIGJkaXN0X3dpbmluc3QgYW5kIGJkaXN0X21zaQotICBub3cgcmVzcGVjdCBhIC0tc2tpcC1idWlsZCBvcHRpb24gZ2l2ZW4gdG8gYmRpc3QuCi0KLS0gSXNzdWUgIzEyODM5OiBGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guCi0gIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KLSAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCi0KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMiByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTQtQXVnLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKLSAgb3V0c2lkZSB0aGUgQk1QLgotCi0tIElzc3VlICMxMTYwMzogRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzExMzIxOiBGaXggYSBjcmFzaCB3aXRoIG11bHRpcGxlIGltcG9ydHMgb2YgdGhlIF9waWNrbGUgbW9kdWxlIHdoZW4KLSAgZW1iZWRkaW5nIFB5dGhvbi4gIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKLSAgY29tcGlsaW5nIHRoZW0uCi0KLS0gSXNzdWUgIzEyNTc5OiBzdHIuZm9ybWF0X21hcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHVzZWQgb24gYQotICBmb3JtYXQgc3RyaW5nIHRoYXQgY29udGFpbnMgcG9zaXRpb25hbCBmaWVsZHMuIEluaXRpYWwgcGF0Y2ggYnkKLSAgSnVsaWFuIEJlcm1hbi4KLQotLSBJc3N1ZSAjMTE2Mjc6IEZpeCBzZWdmYXVsdCB3aGVuIF9fbmV3X18gb24gYSBleGNlcHRpb24gcmV0dXJucyBhCi0gIG5vbi1leGNlcHRpb24gY2xhc3MuCi0KLS0gSXNzdWUgIzEyMTQ5OiBVcGRhdGUgdGhlIG1ldGhvZCBjYWNoZSBhZnRlciBhIHR5cGUncyBkaWN0aW9uYXJ5IGdldHMKLSAgY2xlYXJlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGlzIGZpeGVzIGEgc2VnZmF1bHQgd2hlbiBhbiBpbnN0YW5jZQotICBhbmQgaXRzIHR5cGUgZ2V0IGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZSwgYW5kIHRoZSBpbnN0YW5jZSdzCi0gIGRlYWxsb2NhdG9yIGNhbGxzIG9uZSBvZiB0aGUgbWV0aG9kcyBvbiB0aGUgdHlwZSAoZS5nLiB3aGVuIHN1YmNsYXNzaW5nCi0gIElPQmFzZSkuICBEaWFnbm9zaXMgYW5kIHBhdGNoIGJ5IERhdmlkZSBSaXp6by4KLQotLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQotICBnZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQotICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTI2NDY6IEFkZCBhbiAnZW9mJyBhdHRyaWJ1dGUgdG8gemxpYi5EZWNvbXByZXNzLCB0byBtYWtlIGl0IGVhc2llciB0bworICBkZXRlY3QgdHJ1bmNhdGVkIGlucHV0IHN0cmVhbXMuCiAKIC0gSXNzdWUgIzExNTEzOiBGaXggZXhjZXB0aW9uIGhhbmRsaW5nIGBgdGFyZmlsZS5UYXJGaWxlLmd6b3BlbigpYGAgd2hlbgogICB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgpAQCAtMTY3NSwxOCArMzQ4NCw0MyBAQAogLSBJc3N1ZSAjMTI1NDA6IFByZXZlbnQgem9tYmllIElETEUgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgZHVlIHRvIGNoYW5nZXMKICAgaW4gb3Mua2lsbCgpLgogCistIElzc3VlICMxMzEyMTogYWRkIHN1cHBvcnQgZm9yIGlucGxhY2UgbWF0aCBvcGVyYXRvcnMgdG8gY29sbGVjdGlvbnMuQ291bnRlci4KKworLSBBZGQgc3VwcG9ydCBmb3IgdW5hcnkgcGx1cyBhbmQgdW5hcnkgbWludXMgdG8gY29sbGVjdGlvbnMuQ291bnRlci4KKwogLSBJc3N1ZSAjMTI2ODM6IHVybHBhcnNlIHVwZGF0ZWQgdG8gaW5jbHVkZSBzdm4gYXMgc2NoZW1lcyB0aGF0IHVzZXMgcmVsYXRpdmUKICAgcGF0aHMuIChzdm4gZnJvbSAxLjUgb253YXJkcyBzdXBwb3J0IHJlbGF0aXZlIHBhdGgpLgogCistIElzc3VlICMxMjY1NTogRXhwb3NlIGZ1bmN0aW9ucyBmcm9tIHNjaGVkLmggaW4gdGhlIG9zIG1vZHVsZTogc2NoZWRfeWllbGQoKSwKKyAgc2NoZWRfc2V0c2NoZWR1bGVyKCksIHNjaGVkX2dldHNjaGVkdWxlcigpLCBzY2hlZF9zZXRwYXJhbSgpLAorICBzY2hlZF9nZXRfbWluX3ByaW9yaXR5KCksIHNjaGVkX2dldF9tYXhfcHJpb3JpdHkoKSwgc2NoZWRfcnJfZ2V0X2ludGVydmFsKCksCisgIHNjaGVkX2dldGFmZmluaXR5KCksIHNjaGVkX3NldGFmZmluaXR5KCkuCisKKy0gQWRkIFRocmVhZEVycm9yIHRvIHRocmVhZGluZy5fX2FsbF9fLgorCiAtIElzc3VlcyAjMTExMDQsICM4Njg4OiBGaXggdGhlIGJlaGF2aW9yIG9mIGRpc3R1dGlscycgc2Rpc3QgY29tbWFuZCB3aXRoCiAgIG1hbnVhbGx5LW1haW50YWluZWQgTUFOSUZFU1QgZmlsZXMuCiAKKy0gSXNzdWUgIzExMjgxOiBzbXRwbGliLlNUTVAgZ2V0cyBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIsIHdoaWNoIGFkZHMgdGhlCisgIGFiaWxpdHkgdG8gYmluZCB0byBzcGVjaWZpYyBzb3VyY2UgYWRkcmVzcyBvbiBhIG1hY2hpbmUgd2l0aCBtdWx0aXBsZQorICBpbnRlcmZhY2VzLiBQYXRjaCBieSBQYXVsbyBTY2FyZGluZS4KKwogLSBJc3N1ZSAjMTI0NjQ6IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeS5jbGVhbnVwKCkgc2hvdWxkIG5vdCBmb2xsb3cKICAgc3ltbGlua3M6IGZpeCBpdC4gUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCiAKIC0gSXNzdWUgIzg4ODc6ICJweWRvYyBzb21lYnVpbHRpbi5zb21lbWV0aG9kIiAob3IgaGVscCgnc29tZWJ1aWx0aW4uc29tZW1ldGhvZCcpCiAgIGluIFB5dGhvbiBjb2RlKSBub3cgZmluZHMgdGhlIGRvYyBvZiB0aGUgbWV0aG9kLgogCistIElzc3VlICMxMDk2ODogUmVtb3ZlIGluZGlyZWN0aW9uIGluIHRocmVhZGluZy4gIFRoZSBwdWJsaWMgbmFtZXMgKEV2ZW50LAorICBDb25kaXRpb24sIGV0Yy4pIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBoaWRkZW4KKyAgY2xhc3NlcyAoX0V2ZW50LCBfQ29uZGl0aW9uLCBldGMuKSwgYmVjYXVzZSAoaWYgR3VpZG8gcmVjYWxscyBjb3JyZWN0bHkpIHRoaXMKKyAgY29kZSBwcmUtZGF0ZXMgdGhlIGFiaWxpdHkgdG8gc3ViY2xhc3MgZXh0ZW5zaW9uIHR5cGVzLiAgSXQgaXMgbm93IHBvc3NpYmxlCisgIHRvIGluaGVyaXQgZnJvbSB0aGVzZSBjbGFzc2VzLCB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlIHByaXZhdGUKKyAgdW5kZXJzY29yZWQgbmFtZXMgbGlrZSBtdWx0aXByb2Nlc3NpbmcgZGlkLgorCistIElzc3VlICM5NzIzOiBBZGQgc2hsZXgucXVvdGUgZnVuY3Rpb25zLCB0byBlc2NhcGUgZmlsZW5hbWVzIGFuZCBjb21tYW5kCisgIGxpbmVzLgorCiAtIElzc3VlICMxMjYwMzogRml4IHB5ZG9jLnN5bm9wc2lzKCkgb24gZmlsZXMgd2l0aCBub24tbmVnYXRpdmUgc3RfbXRpbWUuCiAKIC0gSXNzdWUgIzEyNTE0OiBVc2UgdHJ5L2ZpbmFsbHkgdG8gYXNzdXJlIHRoZSB0aW1laXQgbW9kdWxlIHJlc3RvcmVzIGdhcmJhZ2UKQEAgLTE3MDEsMTkgKzM1MzUsMzUgQEAKIC0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlcykKICAgQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIuCiAKKy0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAorICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCisKKy0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgorCiAtIElzc3VlICMxODEzOiBGaXggY29kZWMgbG9va3VwIHVuZGVyIFR1cmtpc2ggbG9jYWxlcy4KIAogLSBJc3N1ZSAjMTI1OTE6IEltcHJvdmUgc3VwcG9ydCBvZiAidW5pdmVyc2FsIG5ld2xpbmVzIiBpbiB0aGUgc3VicHJvY2VzcwogICBtb2R1bGU6IHRoZSBwaXBlZCBzdHJlYW1zIGNhbiBub3cgYmUgcHJvcGVybHkgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8uCiAKIC0gSXNzdWUgIzEyNTkxOiBBbGxvdyBpby5UZXh0SU9XcmFwcGVyIHRvIHdvcmsgd2l0aCByYXcgSU8gb2JqZWN0cyAod2l0aG91dAotICBhIHJlYWQxKCkgbWV0aG9kKSwgYW5kIGFkZCBhbiB1bmRvY3VtZW50ZWQgKndyaXRlX3Rocm91Z2gqIHBhcmFtZXRlciB0bwotICBtYW5kYXRlIHVuYnVmZmVyZWQgd3JpdGVzLgotCi0tIElzc3VlICM5NjExLCAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisgIGEgcmVhZDEoKSBtZXRob2QpLCBhbmQgYWRkIGEgKndyaXRlX3Rocm91Z2gqIHBhcmFtZXRlciB0byBtYW5kYXRlCisgIHVuYnVmZmVyZWQgd3JpdGVzLgogCiAtIElzc3VlICMxMDg4MzogRml4IHNvY2tldCBsZWFrcyBpbiB1cmxsaWIucmVxdWVzdCB3aGVuIHVzaW5nIEZUUC4KIAorLSBJc3N1ZSAjMTI1OTI6IE1ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCisKKy0gSXNzdWUgIzEyMzcyOiBQT1NJWCBzZW1hcGhvcmVzIGFyZSBicm9rZW4gb24gQUlYOiBkb24ndCB1c2UgdGhlbS4KKworLSBJc3N1ZSAjMTI1NTE6IFByb3ZpZGUgYSBnZXRfY2hhbm5lbF9iaW5kaW5nKCkgbWV0aG9kIG9uIFNTTCBzb2NrZXRzIHNvIGFzCisgIHRvIGdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgdGhlIGN1cnJlbnQgU1NMIHNlc3Npb24gKG9ubHkgdGhlCisgICJ0bHMtdW5pcXVlIiBjaGFubmVsIGJpbmRpbmcgaXMgaW1wbGVtZW50ZWQpLiAgVGhpcyBhbGxvd3MgdGhlIGltcGxlbWVudGF0aW9uCisgIG9mIGNlcnRhaW4gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzIFNDUkFNLVNIQS0xLVBMVVMuICBQYXRjaCBieQorICBKYWNlayBLb25pZWN6bnkuCisKKy0gSXNzdWUgIzY2NTE5NDogZW1haWwudXRpbHMgbm93IGhhcyBmb3JtYXRfZGF0ZXRpbWUgYW5kIHBhcnNlZGF0ZV90b19kYXRldGltZQorICBmdW5jdGlvbnMsIGFsbG93aW5nIGZvciByb3VuZCB0cmlwcGluZyBvZiBSRkMyODIyIGZvcm1hdCBkYXRlcy4KKwogLSBJc3N1ZSAjMTI1NzE6IEFkZCBhIHBsYXQtbGludXgzIGRpcmVjdG9yeSBtaXJyb3JpbmcgdGhlIHBsYXQtbGludXgyCiAgIGRpcmVjdG9yeSwgc28gdGhhdCAiaW1wb3J0IERMRkNOIiBhbmQgb3RoZXIgc2ltaWxhciBpbXBvcnRzIHdvcmsgb24KICAgTGludXggMy4wLgpAQCAtMTcyMSwxODQgKzM1NzEsOTEgQEAKIC0gSXNzdWUgIzc0ODQ6IHNtdHBsaWIgbm8gbG9uZ2VyIHB1dHMgPD4gYXJvdW5kIGFkZHJlc3NlcyBpbiBWUkZZIGFuZCBFWFBOCiAgIGNvbW1hbmRzOyB0aGV5IGFyZW4ndCByZXF1aXJlZCBhbmQgaW4gZmFjdCBwb3N0Zml4IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IGZvcm0uCiAKLS0gQ2xvc2UgdGhlIGNhbGwgcXVldWUgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3Igd2hlbgotICBzaHV0ZG93bigpIGlzIGNhbGxlZCwgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8ga2ljayBpbi4KKy0gSXNzdWUgIzEyMjczOiBSZW1vdmUgYXN0Ll9fdmVyc2lvbl9fLiBBU1QgY2hhbmdlcyBjYW4gYmUgYWNjb3VudGVkIGZvciBieQorICBjaGVja2luZyBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5fbWVyY3VyaWFsLgorCistIFNpbGVuY2Ugc3B1cmlvdXMgImJyb2tlbiBwaXBlIiB0cmFjZWJhY2tzIHdoZW4gc2h1dHRpbmcgZG93biBhCisgIFByb2Nlc3NQb29sRXhlY3V0b3IuCisKKy0gRml4IHBvdGVudGlhbCByZXNvdXJjZSBsZWFrcyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcgorICBieSBqb2luaW5nIGFsbCBxdWV1ZXMgYW5kIHByb2Nlc3NlcyB3aGVuIHNodXRkb3duKCkgaXMgY2FsbGVkLgorCistIElzc3VlICMxMTYwMzogRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzExMzIxOiBGaXggYSBjcmFzaCB3aXRoIG11bHRpcGxlIGltcG9ydHMgb2YgdGhlIF9waWNrbGUgbW9kdWxlIHdoZW4KKyAgZW1iZWRkaW5nIFB5dGhvbi4gIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjNjc1NTogQWRkIGdldF93Y2goKSBtZXRob2QgdG8gY3Vyc2VzLndpbmRvdyBjbGFzcy4gUGF0Y2ggYnkgScOxaWdvCisgIFNlcm5hLgorCistIEFkZCBjZ2kuY2xvc2Vsb2coKSBmdW5jdGlvbiB0byBjbG9zZSB0aGUgbG9nIGZpbGUuCiAKIC0gSXNzdWUgIzEyNTAyOiBhc3luY29yZTogZml4IHBvbGxpbmcgbG9vcCB3aXRoIEFGX1VOSVggc29ja2V0cy4KIAotLSBJc3N1ZSAjNDM3NjogY3R5cGVzIG5vdyBzdXBwb3J0cyBuZXN0ZWQgc3RydWN0dXJlcyB3aXRoIGFuIGVuZGlhbm5lc3MKLSAgZGlmZmVyZW50IHRoYW4gdGhhdCBvZiB0aGUgcGFyZW50IHN0cnVjdHVyZS4gIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCistIElzc3VlICM0Mzc2OiBjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIGluIGEgZW5kaWFuIGRpZmZlcmVudCB0aGFuCisgIHRoZSBwYXJlbnQgc3RydWN0dXJlLiBQYXRjaCBieSBWbGFkIFJpc2N1dGlhLgogCiAtIFJhaXNlIFZhbHVlRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIHNldCB0aGUgX0NIVU5LX1NJWkUgYXR0cmlidXRlIG9mIGEKICAgVGV4dElPV3JhcHBlciB0byBhIGh1Z2UgdmFsdWUsIG5vdCBUeXBlRXJyb3IuCiAKLS0gSXNzdWUgIzEyNDkzOiBzdWJwcm9jZXNzOiBQb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGhhbmRsZXMgRUlOVFIgZXJyb3JzCi0gIGlmIHRoZSBwcm9jZXNzIGhhcyBvbmx5IG9uZSBwaXBlLgorLSBJc3N1ZSAjMTI1MDQ6IENsb3NlIGZpbGUgaGFuZGxlcyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gcGFja2FnaW5nLmRhdGFiYXNlLgorICBUaGlzIGZpeGVzIGEgYnVnIHdpdGggdGhlIHJlbW92ZSAodW5pbnN0YWxsKSBmZWF0dXJlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWVzICMxMjE2OSBhbmQgIzEwNTEwOiBGYWN0b3Igb3V0IGNvZGUgdXNlZCBieSB2YXJpb3VzIHBhY2thZ2luZyBjb21tYW5kcworICB0byBtYWtlIEhUVFAgUE9TVCByZXF1ZXN0cywgYW5kIG1ha2Ugc3VyZSBpdCB1c2VzIENSTEYuCisKKy0gSXNzdWUgIzEyMDE2OiBNdWx0aWJ5dGUgQ0pLIGRlY29kZXJzIG5vdyByZXN5bmNocm9uaXplIGZhc3Rlci4gVGhleSBvbmx5CisgIGlnbm9yZSB0aGUgZmlyc3QgYnl0ZSBvZiBhbiBpbnZhbGlkIGJ5dGUgc2VxdWVuY2UuIEZvciBleGFtcGxlLAorICBiJ1x4ZmZcbicuZGVjb2RlKCdnYjIzMTInLCAncmVwbGFjZScpIGdpdmVzICdcdWZmZmRcbicgaW5zdGVhZCBvZiAnXHVmZmZkJy4KKworLSBJc3N1ZSAjMTI0NTk6IHRpbWUuc2xlZXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgc2xlZXAgbGVuZ3RoIGlzCisgIG5lZ2F0aXZlLCBpbnN0ZWFkIG9mIGFuIGluZmluaXRlIHNsZWVwIG9uIFdpbmRvd3Mgb3IgcmFpc2luZyBhbiBJT0Vycm9yIG9uCisgIExpbnV4IGZvciBleGFtcGxlLCB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBhbGwgcGxhdGZvcm1zLgogCiAtIElzc3VlICMxMjQ1MTogcHlkb2M6IGh0bWxfZ2V0ZmlsZSgpIG5vdyB1c2VzIHRva2VuaXplLm9wZW4oKSB0byBzdXBwb3J0Ci0gIFB5dGhvbiBtb2R1bGVzIHVzaW5nIGEgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gVVRGLTggKHJlYWRpbmcgdGhlIGNvZGluZwotICBjb29raWUgb2YgdGhlIG1vZHVsZSkuCisgIFB5dGhvbiBzY3JpcHRzIHVzaW5nIGEgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gVVRGLTggKHJlYWQgdGhlIGNvZGluZyBjb29raWUKKyAgb2YgdGhlIHNjcmlwdCkuCiAKLS0gSXNzdWUgIzEyNDUxOiBweWRvYzogaW1wb3J0ZmlsZSgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIG1vZHVsZSBpbiBiaW5hcnkgbW9kZSwKLSAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogcnVucHk6IHJ1bl9wYXRoKCkgbm93IG9wZW5zIHRoZSBQeXRob24gbW9kdWxlIGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBzdXBwb3J0IG90aGVyIGVuY29kaW5ncwotICB0aGFuIFVURi04IChtb2R1bGVzIHVzaW5nIHRoZSBjb2RpbmcgY29va2llKS4KLQotLSBJc3N1ZSAjMTI0NTE6IHhtbC5kb20ucHVsbGRvbTogcGFyc2UoKSBub3cgb3BlbnMgZmlsZXMgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZAotICBvZiB0aGUgdGV4dCBtb2RlICh1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nKSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzE0NDQzOiBFbnN1cmUgdGhhdCAucHkgZmlsZXMgYXJlIGJ5dGUtY29tcGlsZWQgd2l0aCB0aGUgY29ycmVjdCBQeXRob24KLSAgZXhlY3V0YWJsZSB3aXRoaW4gYmRpc3RfcnBtIGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgUlBNCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjc2NDogRml4IGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gdGhlIG5hbWUgb2YgYSBTdHJ1Y3R1cmUgZmllbGQgaXMgbm90Ci0gIGEgc3RyaW5nLgotCi0tIElzc3VlICMxMTI0MTogc3ViY2xhc3NlcyBvZiBjdHlwZXMuQXJyYXkgY2FuIG5vdyBiZSBzdWJjbGFzc2VkLgotCi0tIElzc3VlICMxMDMwOTogRGVmaW5lIF9HTlVfU09VUkNFIHNvIHRoYXQgbXJlbWFwKCkgZ2V0cyB0aGUgcHJvcGVyCi0gIHNpZ25hdHVyZS4gIFdpdGhvdXQgdGhpcywgYXJjaGl0ZWN0dXJlcyB3aGVyZSBzaXplb2Ygdm9pZCogIT0gc2l6ZW9mIGludCBhcmUKLSAgYnJva2VuLiAgUGF0Y2ggZ2l2ZW4gYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotQy1BUEkKLS0tLS0tCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuICBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCi0KLS0gSXNzdWUgIzEyNTkyOiBNYWtlIFB5dGhvbiBidWlsZCBvbiBPcGVuQlNEIDUgKGFuZCBmdXR1cmUgbWFqb3IgcmVsZWFzZXMpLgotCi0tIElzc3VlICMxMjM3MjogUE9TSVggc2VtYXBob3JlcyBhcmUgYnJva2VuIG9uIEFJWDogZG9uJ3QgdXNlIHRoZW0uCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDYzOTogcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlCi0gIGFuIGVycm9yIGlmIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIGZpbGUgd2l0aCBtaXhlZCBuZXdsaW5lcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgbGliMnRvMyBjYW4gbm93IHJ1biBmcm9tIGFuIGluc3RhbGxlZAotICBQeXRob24uCi0KLS0gSXNzdWUgIzEyNjI2OiBJbiByZWdydGVzdCwgYWxsb3cgdG8gZmlsdGVyIHRlc3RzIHVzaW5nIGEgZ2xvYiBmaWx0ZXIKLSAgd2l0aCB0aGUgYGAtbWBgIChvciBgYC0tbWF0Y2hgYCkgb3B0aW9uLiAgVGhpcyB3b3JrcyB3aXRoIGFsbCB0ZXN0IGNhc2VzCi0gIHVzaW5nIHRoZSB1bml0dGVzdCBtb2R1bGUuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKLSAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTI2MjQ6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBmYWlsIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlIHdoZW4KLSAgcnVubmluZyBpbiB2ZXJib3NlIG1vZGUgKGBgLXZgYCBvciBgYC1XYGApLCBieSB1c2luZyB0aGUgYGAtLWZhaWxmYXN0YGAKLSAgKG9yIGBgLUdgYCkgb3B0aW9uIHRvIHJlZ3J0ZXN0LiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNTg3OiBDb3JyZWN0IGZhdWx0eSB0ZXN0IGZpbGUgYW5kIHJlZmVyZW5jZSBpbiB0ZXN0X3Rva2VuaXplLgotICAoUGF0Y2ggYnkgUm9iZXJ0IFhpYW8pCi0KLS0gVHJ5IGhhcmRlciB0byByZWFwIGRhbmdsaW5nIHRocmVhZHMgaW4gdGVzdC5zdXBwb3J0LnJlYXBfdGhyZWFkcygpLgotCi0tIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKLSAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKLSAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKLSAgV2ViIHNpdGUuCi0KLS0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQotICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCi0gIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KLQotLSBJc3N1ZSAjMTI0OTc6IEluc3RhbGwgdGVzdC9kYXRhIHRvIHByZXZlbnQgZmFpbHVyZXMgb2YgdGhlIHZhcmlvdXMgY29kZWNtYXBzCi0gIHRlc3RzLgotCi0tIElzc3VlICMxMjQ5NjogSW5zdGFsbCB0ZXN0L2NhcGF0aCBkaXJlY3RvcnkgdG8gcHJldmVudCB0ZXN0X2Nvbm5lY3RfY2FwYXRoCi0gIHRlc3RjYXNlIGZhaWx1cmUgaW4gdGVzdF9zc2wuCi0KLS0gSXNzdWUgIzEyNDY5OiBSdW4gIndha2V1cCIgc2lnbmFsIHRlc3RzIGluIHN1YnByb2Nlc3MgdG8gcnVuIHRoZSB0ZXN0IGluIGEKLSAgZnJlc2ggcHJvY2VzcyB3aXRoIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwgaGFuZGxpbmcgb2YgdGhlCi0gIHBhcmVudCBwcm9jZXNzLgotCi0tIElzc3VlICM4NzE2OiBBdm9pZCBjcmFzaGVzIGNhdXNlZCBieSBBcXVhIFRrIG9uIE9TWCB3aGVuIGF0dGVtcHRpbmcgdG8gcnVuCi0gIHRlc3RfdGsgb3IgdGVzdF90dGtfZ3Vpb25seSB1bmRlciBhIHVzZXJuYW1lIHRoYXQgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQKLSAgaW4gdG8gdGhlIGNvbnNvbGUgd2luZG93c2VydmVyIChhcyBtYXkgYmUgdGhlIGNhc2UgdW5kZXIgYnVpbGRib3Qgb3Igc3NoKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMC1KdWwtMjAxMSoKLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKKyAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCiAKIC0gSXNzdWUgIzEyNDY3OiB3YXJuaW5nczogZml4IGEgcmFjZSBjb25kaXRpb24gaWYgYSB3YXJuaW5nIGlzIGVtaXR0ZWQgYXQKICAgc2h1dGRvd24sIGlmIGdsb2JhbHMoKVsnX19maWxlX18nXSBpcyBOb25lLgogCi1UZXN0cwotLS0tLS0KKy0gSXNzdWUgIzEyNDUxOiBweWRvYzogaW1wb3J0ZmlsZSgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKKyAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgogCi0tIFNraXAgbmV0d29yayB0ZXN0cyB3aGVuIGdldGFkZHJpbmZvKCkgcmV0dXJucyBFQUlfQUdBSU4sIG1lYW5pbmcgYSB0ZW1wb3JhcnkKLSAgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uCistIElzc3VlICMxMjQ1MTogcnVucHk6IHJ1bl9wYXRoKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAorICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBzdXBwb3J0IG90aGVyIGVuY29kaW5ncworICB0aGFuIFVURi04IChzY3JpcHRzIHVzaW5nIHRoZSBjb2RpbmcgY29va2llKS4KIAotLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCi0gIGluIHRlc3RfdGVsbmV0bGliLnB5LgotCi0tIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cwotICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0Ci0gIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjEgcmVsZWFzZSBjYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAzLUp1bC0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sIHdpdGgKLSAgb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTIwODQ6IG9zLnN0YXQgb24gV2luZG93cyBub3cgd29ya3MgcHJvcGVybHkgd2l0aCByZWxhdGl2ZSBzeW1ib2xpYwotICBsaW5rcyB3aGVuIGNhbGxlZCBmcm9tIGFueSBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAotICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAotICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCi0KLS0gSXNzdWUgIzk2NzA6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uIE1hYyBPUyBYCi0gIGFuZCBGcmVlQlNEIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZiBhIGNyYXNoIGluc3RlYWQgb2YgYSAibWF4aW11bSByZWN1cnNpb24KLSAgZGVwdGgiIFJ1bnRpbWVFcnJvciBleGNlcHRpb24gKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikuCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzEyNDUxOiB4bWwuZG9tLnB1bGxkb206IHBhcnNlKCkgbm93IG9wZW5zIGZpbGVzIGluIGJpbmFyeSBtb2RlIGluc3RlYWQKKyAgb2YgdGhlIHRleHQgbW9kZSAodXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZykgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgogCiAtIElzc3VlICMxMjE0NzogQWRqdXN0IHRoZSBuZXctaW4tMy4yIHNtdHBsaWIuc2VuZF9tZXNzYWdlIG1ldGhvZCBmb3IgYmV0dGVyCi0gIGNvbmZvcm1hbmNlIHRvIHRoZSBSRkNzOiBjb3JyZWN0bHkgaGFuZGxlIFNlbmRlciBhbmQgUmVzZW50IGhlYWRlcnMuCisgIGNvbmZvcm1hbmNlIHRvIHRoZSBSRkNzOiAgY29ycmVjdGx5IGhhbmRsZSBTZW5kZXIgYW5kIFJlc2VudC0gaGVhZGVycy4KIAogLSBJc3N1ZSAjMTIzNTI6IEZpeCBhIGRlYWRsb2NrIGluIG11bHRpcHJvY2Vzc2luZy5IZWFwIHdoZW4gYSBibG9jayBpcyBmcmVlZCBieQogICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igd2hpbGUgdGhlIEhlYXAgbG9jayBpcyBoZWxkLgogCistIElzc3VlICMxMjQ2MjogdGltZS5zbGVlcCgpIG5vdyBpbW1lZGlhdGVseSBjYWxscyB0aGUgKFB5dGhvbikgc2lnbmFsIGhhbmRsZXIKKyAgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdhaXQgdW50aWwgdGhlIG5leHQKKyAgaW5zdHJ1Y3Rpb24uCisKKy0gSXNzdWUgIzEyNDQyOiBuZXcgc2h1dGlsLmRpc2tfdXNhZ2UgZnVuY3Rpb24sIHByb3ZpZGluZyB0b3RhbCwgdXNlZCBhbmQgZnJlZQorICBkaXNrIHNwYWNlIHN0YXRpc3RpY3MuCisKIC0gSXNzdWUgIzEyNDUxOiBUaGUgWEluY2x1ZGUgZGVmYXVsdCBsb2FkZXIgb2YgeG1sLmV0cmVlIG5vdyBkZWNvZGVzIGZpbGVzIGZyb20KICAgVVRGLTggaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBJdCBub3cKLSAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlIHRvCi0gIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSBhbnltb3JlCisgIGFsc28gb3BlbnMgWE1MIGZpbGVzIGZvciB0aGUgcGFyc2VyIGluIGJpbmFyeSBtb2RlIGluc3RlYWQgb2YgdGhlIHRleHQgbW9kZQogICB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCiAKLS0gSXNzdWUgIzEyNDUxOiBweWRvYy5zeW5vcHNpcygpIG5vdyByZWFkcyB0aGUgZW5jb2RpbmcgY29va2llIGlmIGF2YWlsYWJsZSwgdG8KLSAgcmVhZCB0aGUgUHl0aG9uIG1vZHVsZSBmcm9tIHRoZSByaWdodCBlbmNvZGluZy4KKy0gSXNzdWUgIzEyNDUxOiBkb2N0ZXN0LmRlYnVnX3NjcmlwdCgpIGRvZXNuJ3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUKKyAgYW55bW9yZSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCisKKy0gSXNzdWUgIzEyNDUxOiBweWRvYy5zeW5vcHNpcygpIG5vdyByZWFkcyB0aGUgZW5jb2RpbmcgY29va2llIGlmIGF2YWlsYWJsZSwKKyAgdG8gcmVhZCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIHRoZSByaWdodCBlbmNvZGluZy4KIAogLSBJc3N1ZSAjMTI0NTE6IGRpc3R1dGlscyBub3cgb3BlbnMgdGhlIHNldHVwIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSB0byByZWFkIHRoZQogICBlbmNvZGluZyBjb29raWUsIGluc3RlYWQgb2Ygb3BlbmluZyBpdCBpbiBVVEYtOC4KQEAgLTE5MTIsMTQgKzM2NjksMzIgQEAKICAgc3RpbGwgcG9zc2libGUgdG8gZ2xvYmFsbHkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnkgc2V0dGluZwogICBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgYmVmb3JlIGxhdW5jaGluZyB0aGUgaW50ZXJwcmV0ZXI7IGl0cyB2YWx1ZSBtdXN0IGJlCiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIHRoZSB2YWx1ZSB3aXRoIHdoaWNoIHRoZSBpbnRlcnByZXRlcgotICB3YXMgYnVpbHQuCisgIHdhcyBidWlsdC4gIEFsc28sIGltcGxlbWVudCB0aGUgc2FtZSBoYW5kbGluZyBpbiBwYWNrYWdpbmcuCisKKy0gSXNzdWUgIzEyNDIyOiBJbiB0aGUgY29weSBtb2R1bGUsIGRvbid0IHN0b3JlIG9iamVjdHMgdGhhdCBhcmUgdGhlaXIgb3duIGNvcHkKKyAgaW4gdGhlIG1lbW8gZGljdC4KKworLSBJc3N1ZSAjMTIzMDM6IEFkZCBzaWd3YWl0aW5mbygpIGFuZCBzaWd0aW1lZHdhaXQoKSB0byB0aGUgc2lnbmFsIG1vZHVsZS4KKworLSBJc3N1ZSAjMTI0MDQ6IFJlbW92ZSBDODkgaW5jb21wYXRpYmxlIGNvZGUgZnJvbSBtbWFwIG1vZHVsZS4gUGF0Y2ggYnkgQWtpcmEKKyAgS2l0YWRhLgorCistIElzc3VlICMxODc0OiBlbWFpbCBub3cgZGV0ZWN0cyBhbmQgcmVwb3J0cyBhcyBhIGRlZmVjdCB0aGUgcHJlc2VuY2Ugb2YKKyAgYW55IENURSBvdGhlciB0aGFuIDdiaXQsIDhiaXQsIG9yIGJpbmFyeSBvbiBhIG11bHRpcGFydC4KIAogLSBJc3N1ZSAjMTIzODM6IEZpeCBzdWJwcm9jZXNzIG1vZHVsZSB3aXRoIGVudj17fTogZG9uJ3QgY29weSB0aGUgZW52aXJvbm1lbnQKICAgdmFyaWFibGVzLCBzdGFydCB3aXRoIGFuIGVtcHR5IGVudmlyb25tZW50LgogCi0tIElzc3VlICMxMTU4NDogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSBoZWFkZXIgcGFzc2VkCi0gIHRvIGl0IGlzIGEgSGVhZGVyIG9iamVjdCwgYW5kIEhlYWRlci9tYWtlX2hlYWRlciBubyBsb25nZXIgZmFpbCBpZiBnaXZlbgotICBiaW5hcnkgdW5rbm93bi04Yml0IGlucHV0LgorLSBJc3N1ZSAjMTE2Mzc6IEZpeCBzdXBwb3J0IGZvciBpbXBvcnRpbmcgcGFja2FnaW5nIHNldHVwIGhvb2tzIGZyb20gdGhlCisgIHByb2plY3QgZGlyZWN0b3J5LgorCistIElzc3VlICM2NzcxOiBNb3ZlZCB0aGUgY3Vyc2VzLndyYXBwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2luZ2xlLWZ1bmN0aW9uCisgIHdyYXBwZXIgbW9kdWxlIGludG8gX19pbml0X18sIGVsaW1pbmF0aW5nIHRoZSBtb2R1bGUuICBTaW5jZSBfX2luaXRfXyB3YXMKKyAgYWxyZWFkeSBpbXBvcnRpbmcgdGhlIGZ1bmN0aW9uIHRvIGN1cnNlcy53cmFwcGVyLCB0aGVyZSBpcyBubyBBUEkgY2hhbmdlLgorCistIElzc3VlICMxMTU4NDogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSBoZWFkZXIKKyAgcGFzc2VkIHRvIGl0IGlzIGEgSGVhZGVyIG9iamVjdCwgYW5kIEhlYWRlci9tYWtlX2hlYWRlciBubyBsb25nZXIgZmFpbAorICBpZiBnaXZlbiBiaW5hcnkgdW5rbm93bi04Yml0IGlucHV0LgogCiAtIElzc3VlICMxMTcwMDogbWFpbGJveCBwcm94eSBvYmplY3QgY2xvc2UgbWV0aG9kcyBjYW4gbm93IGJlIGNhbGxlZCBtdWx0aXBsZQogICB0aW1lcyB3aXRob3V0IGVycm9yLgpAQCAtMTkzMCwzNSArMzcwNSwxMDUgQEAKICAgY29ubmVjdGlvbiBpZiBpdHMgZ2V0cmVzcG9uc2UoKSBtZXRob2QgZmFpbHMgd2l0aCBhIHNvY2tldCBlcnJvci4gUGF0Y2gKICAgd3JpdHRlbiBieSBFemlvIE1lbG90dGkuCiAKKy0gSXNzdWUgIzEyMjQwOiBBbGxvdyBtdWx0aXBsZSBzZXR1cCBob29rcyBpbiBwYWNrYWdpbmcncyBzZXR1cC5jZmcgZmlsZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgQnJheS4KKwogLSBJc3N1ZSAjOTI4NDogQWxsb3cgaW5zcGVjdC5maW5kc291cmNlKCkgdG8gZmluZCB0aGUgc291cmNlIG9mIGRvY3Rlc3QKICAgZnVuY3Rpb25zLgogCistIElzc3VlICMxMTU5NTogRml4IGFzc29ydGVkIGJ1Z3MgaW4gcGFja2FnaW5nLnV0aWwuY2ZnX3RvX2FyZ3MsIGEKKyAgY29tcGF0aWJpbGl0eSBoZWxwZXIgZm9yIHRoZSBkaXN0dXRpbHMtcGFja2FnaW5nIHRyYW5zaXRpb24uICBPcmlnaW5hbCBwYXRjaAorICBieSBFcmlrIEJyYXkuCisKKy0gSXNzdWUgIzEyMjg3OiBJbiBvc3NhdWRpb2RldiwgY2hlY2sgdGhhdCB0aGUgZGV2aWNlIGlzbid0IGNsb3NlZCBpbiBzZXZlcmFsCisgIG1ldGhvZHMuCisKIC0gSXNzdWUgIzEyMDA5OiBGaXhlZCByZWdyZXNzaW9uIGluIG5ldHJjIGZpbGUgY29tbWVudCBoYW5kbGluZy4KIAorLSBJc3N1ZSAjMTIyNDY6IFdhcm4gYW5kIGZhaWwgd2hlbiB0cnlpbmcgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHByb2plY3QgZnJvbQorICBhbiB1bmluc3RhbGxlZCBQeXRob24gKGJ1aWx0IGluIGEgc291cmNlIGNoZWNrb3V0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIFRzaGVwYW5nIExla2hvbmtob2JlLgorCiAtIElzc3VlICMxMDY5NDogemlwZmlsZSBub3cgaWdub3JlcyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgYSB6aXBmaWxlLgogCiAtIElzc3VlICMxMjI4MzogRml4ZWQgcmVncmVzc2lvbiBpbiBzbXRwbGliIHF1b3Rpbmcgb2YgbGVhZGluZyBkb3RzIGluIERBVEEuCiAKKy0gSXNzdWUgIzEwNDI0OiBBcmdwYXJzZSBub3cgaW5jbHVkZXMgdGhlIG5hbWVzIG9mIHRoZSBtaXNzaW5nIHJlcXVpcmVkCisgIGFyZ3VtZW50cyBpbiB0aGUgbWlzc2luZyBhcmd1bWVudHMgZXJyb3IgbWVzc2FnZS4KKwogLSBJc3N1ZSAjMTIxNjg6IFN5c0xvZ0hhbmRsZXIgbm93IGFsbG93cyBOVUwgdGVybWluYXRpb24gdG8gYmUgY29udHJvbGxlZCB1c2luZwogICBhIG5ldyAnYXBwZW5kX251bCcgYXR0cmlidXRlIG9uIHRoZSBoYW5kbGVyLgogCiAtIElzc3VlICMxMTU4MzogU3BlZWQgdXAgb3MucGF0aC5pc2RpciBvbiBXaW5kb3dzIGJ5IHVzaW5nIEdldEZpbGVBdHRyaWJ1dGVzCiAgIGluc3RlYWQgb2Ygb3Muc3RhdC4KIAorLSBJc3N1ZSAjMTIwMjE6IE1ha2UgbW1hcCdzIHJlYWQoKSBtZXRob2QgYXJndW1lbnQgb3B0aW9uYWwuIFBhdGNoIGJ5IFBldHJpCisgIExlaHRpbmVuLgorCistIElzc3VlICM5MjA1OiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvciBub3cgZGV0ZWN0cyBraWxsZWQKKyAgY2hpbGRyZW4gYW5kIHJhaXNlcyBCcm9rZW5Qcm9jZXNzUG9vbCBpbiBzdWNoIGEgc2l0dWF0aW9uLiAgUHJldmlvdXNseSBpdAorICB3b3VsZCByZWxpYWJseSBmcmVlemUvZGVhZGxvY2suCisKKy0gSXNzdWUgIzEyMDQwOiBFeHBvc2UgYSBuZXcgYXR0cmlidXRlIGBgc2VudGluZWxgYCBvbiBpbnN0YW5jZXMgb2YKKyAgYGBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2BgLiAgQWxzbywgZml4IFByb2Nlc3Muam9pbigpIHRvIG5vdCB1c2UgcG9sbGluZworICBhbnltb3JlLCB3aGVuIGdpdmVuIGEgdGltZW91dC4KKworLSBJc3N1ZSAjMTE4OTM6IFJlbW92ZSBvYnNvbGV0ZSBpbnRlcm5hbCB3cmFwcGVyIGNsYXNzIGBgU1NMRmFrZUZpbGVgYCBpbiB0aGUKKyAgc210cGxpYiBtb2R1bGUuICBQYXRjaCBieSBDYXRhbGluIElhY29iLgorCistIElzc3VlICMxMjA4MDogRml4IGEgRGVjaW1hbC5wb3dlcigpIGNhc2UgdGhhdCB0b29rIGFuIHVucmVhc29uYWJseSBsb25nIHRpbWUKKyAgdG8gY29tcHV0ZS4KKworLSBJc3N1ZSAjMTIyMjE6IFJlbW92ZSBfX3ZlcnNpb25fXyBhdHRyaWJ1dGVzIGZyb20gcHlleHBhdCwgcGlja2xlLCB0YXJmaWxlLAorICBweWRvYywgdGtpbnRlciwgYW5kIHhtbC5wYXJzZXJzLmV4cGF0LiBUaGlzIHdlcmUgdXNlbGVzcyB2ZXJzaW9uIGNvbnN0YW50cworICBsZWZ0IG92ZXIgZnJvbSB0aGUgTWVyY3VyaWFsIHRyYW5zaXRpb24KKwogLSBOYW1lZCB0dXBsZXMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggdmFycygpLgogCiAtIElzc3VlICMxMjA4NTogRml4IGFuIGF0dHJpYnV0ZSBlcnJvciBpbiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3IgaWYgdGhlCiAgIGNvbnN0cnVjdG9yIGhhcyBmYWlsZWQsIGUuZy4gYmVjYXVzZSBvZiBhbiB1bmRlY2xhcmVkIGtleXdvcmQgYXJndW1lbnQuIFBhdGNoCiAgIHdyaXR0ZW4gYnkgT2xlZyBPc2hteWFuLgogCi0tIElzc3VlICM5ODUwNjQ6IE1ha2UgcGxpc3RsaWIgbW9yZSByZXNpbGllbnQgdG8gZmF1bHR5IGlucHV0IHBsaXN0cy4gIFBhdGNoIGJ5Ci0gIE1oZXIgTW92c2lzeWFuLgorLSBJc3N1ZSAjMTIwMjg6IE1ha2UgdGhyZWFkaW5nLl9nZXRfaWRlbnQoKSBwdWJsaWMsIHJlbmFtZSBpdCB0bworICB0aHJlYWRpbmcuZ2V0X2lkZW50KCkgYW5kIGRvY3VtZW50IGl0LiBUaGlzIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IHVzZWQgdXNpbmcKKyAgX3RocmVhZC5nZXRfaWRlbnQoKS4KKworLSBJc3N1ZSAjMTIxNzE6IEluY3JlbWVudGFsRW5jb2Rlci5yZXNldCgpIG9mIENKSyBjb2RlY3MgKG11bHRpYnl0ZWNvZGVjKSBjYWxscworICBlbmNyZXNldCgpIGluc3RlYWQgb2YgZGVjcmVzZXQoKS4KKworLSBJc3N1ZSAjMTIyMTg6IFJlbW92ZWQgd3NnaXJlZi5lZ2ctaW5mby4KKworLSBJc3N1ZSAjMTIxOTY6IEFkZCBwaXBlMigpIHRvIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLgorICBQYXRjaCBieSBNaGVyIE1vdnNpc3lhbi4KKworLSBJc3N1ZSAjMTYyNTogQloyRmlsZSBhbmQgYnoyLmRlY29tcHJlc3MoKSBub3cgc3VwcG9ydCBtdWx0aS1zdHJlYW0gZmlsZXMuCisgIEluaXRpYWwgcGF0Y2ggYnkgTmlyIEFpZGVzLgorCistIElzc3VlICMxMjE3NTogQnVmZmVyZWRSZWFkZXIucmVhZCgtMSkgbm93IGNhbGxzIHJhdy5yZWFkYWxsKCkgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgb25seSByZWFkcyB0aGUgZmlsZSBwb3NpdGlvbiBhbmQgc2l6ZQorICBvbmNlLgogCiAtIElzc3VlICMxMjE3NTogUmF3SU9CYXNlLnJlYWRhbGwoKSBub3cgcmV0dXJucyBOb25lIGlmIHJlYWQoKSByZXR1cm5zIE5vbmUuCiAKIC0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYW4gSU9FcnJvcgogICBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuCiAKKy0gSXNzdWUgIzExMTA5OiBOZXcgc2VydmljZV9hY3Rpb24gbWV0aG9kIGZvciBCYXNlU2VydmVyLCB1c2VkIGJ5IEZvcmtpbmdNaXhpbgorICBjbGFzcyBmb3IgY2xlYW51cC4gSW5pdGlhbCBQYXRjaCBieSBKdXN0aW4gV2Fya2VudGluLgorCistIElzc3VlICMxMjA0NTogQXZvaWQgZHVwbGljYXRlIGV4ZWN1dGlvbiBvZiBjb21tYW5kIGluCisgIGN0eXBlcy51dGlsLl9nZXRfc29uYW1lKCkuICBQYXRjaCBieSBTaWppbiBKb3NlcGguCisKKy0gSXNzdWUgIzEwODE4OiBSZW1vdmUgdGhlIFRrIEdVSSBhbmQgdGhlIHNlcnZlKCkgZnVuY3Rpb24gb2YgdGhlIHB5ZG9jIG1vZHVsZSwKKyAgcHlkb2MgLWcgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yIGFuZCBpdCBoYXMgYSBuZXcgZW5oYW5jZWQgd2ViCisgIHNlcnZlci4KKworLSBJc3N1ZSAjMTQ0MTUzMDogSW4gaW1hcGxpYiwgcmVhZCB0aGUgZGF0YSBpbiBvbmUgY2h1bmsgdG8gc3BlZWQgdXAgbGFyZ2UKKyAgcmVhZHMgYW5kIHNpbXBsaWZ5IGNvZGUuCisKIC0gSXNzdWUgIzEyMDcwOiBGaXggdGhlIE1ha2VmaWxlIHBhcnNlciBvZiB0aGUgc3lzY29uZmlnIG1vZHVsZSB0byBoYW5kbGUKICAgY29ycmVjdGx5IHJlZmVyZW5jZXMgdG8gImJvZ3VzIHZhcmlhYmxlIiAoZS5nLiAicHJlZml4PSQvb3B0L3B5dGhvbiIpLgogCkBAIC0xOTY2LDgxICszODExLDMwIEBACiAgIHRoZWlyIGVuY29kZSgpIG1ldGhvZCBhbnltb3JlLCBidXQgY29udGludWUgdG8gY2FsbCB0aGUgcmVzZXQoKSBtZXRob2QgaWYgdGhlCiAgIGZpbmFsIGFyZ3VtZW50IGlzIFRydWUuCiAKLS0gSXNzdWUgIzU3MTU6IEluIHNvY2tldHNlcnZlciwgY2xvc2UgdGhlIHNlcnZlciBzb2NrZXQgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCistIElzc3VlICMxMjA0OTogQWRkIFJBTkRfYnl0ZXMoKSBhbmQgUkFORF9wc2V1ZG9fYnl0ZXMoKSBmdW5jdGlvbnMgdG8gdGhlIHNzbAorICBtb2R1bGUuCiAKLS0gQ29ycmVjdCBsb29rdXAgb2YgX19kaXJfXyBvbiBvYmplY3RzLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgY2F1c2VzIGVycm9ycwotICBiZXNpZGVzIEF0dHJpYnV0ZUVycm9yIGZvdW5kIG9uIGxvb2t1cCB0byBiZSBwcm9wYWdhdGVkLgorLSBJc3N1ZSAjNjUwMTogb3MuZGV2aWNlX2VuY29kaW5nKCkgcmV0dXJucyBOb25lIG9uIFdpbmRvd3MgaWYgdGhlIGFwcGxpY2F0aW9uCisgIGhhcyBubyBjb25zb2xlLgorCistIElzc3VlICMxMjEwNTogQWRkIE9fQ0xPRVhFQyB0byB0aGUgb3MgbW9kdWxlLgorCistIElzc3VlICMxMjA3OTogRGVjaW1hbCgnSW5maW5pdHknKS5mbWEoRGVjaW1hbCgnMCcpLCAoMy45MTIyNDMxODEyNjc4NmUrMTkrMGopKQorICBub3cgcmFpc2VzIFR5cGVFcnJvciAocmVmbGVjdGluZyB0aGUgaW52YWxpZCB0eXBlIG9mIHRoZSAzcmQgYXJndW1lbnQpIHJhdGhlcgorICB0aGFuIERlY2ltYWwuSW52YWxpZE9wZXJhdGlvbi4KIAogLSBJc3N1ZSAjMTIxMjQ6IHppcGltcG9ydCBkb2Vzbid0IGtlZXAgYSByZWZlcmVuY2UgdG8gemxpYi5kZWNvbXByZXNzKCkgYW55bW9yZQogICB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlLgogCistIEFkZCB0aGUgcGFja2FnaW5nIG1vZHVsZSwgYW4gaW1wcm92ZWQgZm9yayBvZiBkaXN0dXRpbHMgKGFsc28ga25vd24gYXMKKyAgZGlzdHV0aWxzMikuCisKIC0gSXNzdWUgIzEyMDY1OiBjb25uZWN0X2V4KCkgb24gYW4gU1NMIHNvY2tldCBub3cgcmV0dXJucyB0aGUgb3JpZ2luYWwgZXJybm8KICAgd2hlbiB0aGUgc29ja2V0J3MgdGltZW91dCBleHBpcmVzIChpdCB1c2VkIHRvIHJldHVybiBOb25lKS4KIAotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNDA0OiBSZW1vdmUgQzg5IGluY29tcGF0aWJsZSBjb2RlIGZyb20gbW1hcCBtb2R1bGUuIFBhdGNoIGJ5IEFraXJhCi0gIEtpdGFkYS4KLQotLSBJc3N1ZSAjMTIyMjE6IFJlcGxhY2UgcHlleHBhdC5fX3ZlcnNpb25fXyB3aXRoIHRoZSBQeXRob24gdmVyc2lvbi4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzg3NDY6IENvcnJlY3QgZmF1bHR5IGNvbmZpZ3VyZSBjaGVja3Mgc28gdGhhdCBvcy5jaGZsYWdzKCkgYW5kCi0gIG9zLmxjaGZsYWdzKCkgYXJlIG9uY2UgYWdhaW4gYnVpbHQgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhlc2UgZnVuY3Rpb25zCi0gICgqQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFggKFVGX0hJRERFTiBhbmQKLSAgVUZfQ09NUFJFU1NFRCkuCi0KLS0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlCi0gICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIgZmlsZXMgaW4gdGhlCi0gIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgotCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKLSAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQotICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgotCi0tIElzc3VlICMxMjE0MTogSW5zdGFsbCBhIGNvcHkgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0IHRlc3RfYnVpbGRfZXh0Ci0gIG9mIHRlc3RfZGlzdHV0aWxzIGlzIG5vIGxvbmdlciBzaWxlbnRseSBza2lwcGVkIHdoZW4gcnVuIG91dHNpZGUgb2YgYSBidWlsZAotICBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzg3NDY6IEFkZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkuICBQYXRjaAotICBieSBHYXJyZXR0IENvb3Blci4KLQotLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOSBvbiBNYWMKLSAgT1MgWC4gIChQYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCi0KLS0gSXNzdWUgIzEyMDU3OiBBZGQgdGVzdHMgZm9yIElTTyAyMDIyIGNvZGVjcyAoaXNvMjAyMl9qcCwgaXNvMjAyMl9qcF8yLAotICBpc28yMDIyX2tyKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMSByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTUtTWF5LTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjA2MDogVXNlIHNpZ19hdG9taWNfdCB0eXBlIGFuZCB2b2xhdGlsZSBrZXl3b3JkIGluIHRoZSBzaWduYWwKLSAgbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCi0gIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5Ci0gIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCi0KLS0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCi0gIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICM4ODA5OiBUaGUgU01UUF9TU0wgY29uc3RydWN0b3IgYW5kIFNNVFAuc3RhcnR0bHMoKSBub3cgc3VwcG9ydAorICBwYXNzaW5nIGEgYGBjb250ZXh0YGAgYXJndW1lbnQgcG9pbnRpbmcgdG8gYW4gc3NsLlNTTENvbnRleHQgaW5zdGFuY2UuCisgIFBhdGNoIGJ5IEthc3VuIEhlcmF0aC4KIAogLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCiAgIHdpdGggVGsgOC41LgpAQCAtMjA0OCw4ICszODQyLDYgQEAKIC0gSXNzdWUgIzk1MTY6IElzc3VlICM5NTE2OiBhdm9pZCBlcnJvcnMgaW4gc3lzY29uZmlnIHdoZW4gTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiAgIGlzIHNldCBpbiBzaGVsbC4KIAotLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgotCiAtIElzc3VlICM4NjUwOiBNYWtlIHpsaWIgbW9kdWxlIDY0LWJpdCBjbGVhbi4gY29tcHJlc3MoKSwgZGVjb21wcmVzcygpIGFuZAogICB0aGVpciBpbmNyZW1lbnRhbCBjb3VudGVycGFydHMgbm93IHJhaXNlIE92ZXJmbG93RXJyb3IgaWYgZ2l2ZW4gYW4gaW5wdXQKICAgbGFyZ2VyIHRoYW4gNEdCLCBpbnN0ZWFkIG9mIHNpbGVudGx5IHRydW5jYXRpbmcgdGhlIGlucHV0IGFuZCByZXR1cm5pbmcKQEAgLTIwNjMsMTIgKzM4NTUsMTYgQEAKICAgd3JpdGluZywgdGhlbiBzZWVraW5nIGJlZm9yZSB0aGUgcHJldmlvdXMgd3JpdGUgYnV0IHN0aWxsIHdpdGhpbiBidWZmZXJlZAogICBkYXRhLCBhbmQgd3JpdGluZyBhZ2FpbikuCiAKKy0gSXNzdWUgIzk5NzE6IFdyaXRlIGFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bygpLgorICBQYXRjaCBieSBKb2huIE8nQ29ubm9yLgorCiAtIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCiAgIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKICAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KIAotLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCi0gIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCistIElzc3VlICMxMTc5OTogdXJsbGliLnJlcXVlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlcnMgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IKKyAgd2hlbiBwcmVzZW50ZWQgd2l0aCBhbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuIFBhdGNoIGNvbnRyaWJ1dGVkCisgIGJ5IFl1dmFsIEdyZWVuZmllbGQuCiAKIC0gSXNzdWUgIzEwNDE5LCAjNjAxMTogYnVpbGRfc2NyaXB0cyBjb21tYW5kIG9mIGRpc3R1dGlscyBoYW5kbGVzIGNvcnJlY3RseQogICBub24tQVNDSUkgcGF0aCAocGF0aCB0byB0aGUgUHl0aG9uIGV4ZWN1dGFibGUpLiBPcGVuIGFuZCB3cml0ZSB0aGUgc2NyaXB0IGluCkBAIC0yMDc4LDEzMyArMzg3NCw2OCBAQAogLSBJc3N1ZSAjODQ5ODogSW4gc29ja2V0LmFjY2VwdCgpLCBhbGxvdyB0byBzcGVjaWZ5IDAgYXMgYSBiYWNrbG9nIHZhbHVlIGluCiAgIG9yZGVyIHRvIGFjY2VwdCBleGFjdGx5IG9uZSBjb25uZWN0aW9uLiAgUGF0Y2ggYnkgRGFuaWVsIEV2ZXJzLgogCistIElzc3VlICMxMjAxMTogc2lnbmFsLnNpZ25hbCgpIGFuZCBzaWduYWwuc2lnaW50ZXJydXB0KCkgcmFpc2UgYW4gT1NFcnJvciwKKyAgaW5zdGVhZCBvZiBhIFJ1bnRpbWVFcnJvcjogT1NFcnJvciBoYXMgYW4gZXJybm8gYXR0cmlidXRlLgorCistIElzc3VlICMzNzA5OiBhZGQgYSBmbHVzaF9oZWFkZXJzIG1ldGhvZCB0byBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCB3aGljaAorICBtYW5hZ2VzIHRoZSBzZW5kaW5nIG9mIGhlYWRlcnMgdG8gb3V0cHV0IHN0cmVhbSBhbmQgZmx1c2hpbmcgdGhlIGludGVybmFsCisgIGhlYWRlcnMgYnVmZmVyLiBQYXRjaCBjb250cmlidXRpb24gYnkgQW5kcmV3IFNjaGFhZgorCistIElzc3VlICMxMTc0MzogUmV3cml0ZSBtdWx0aXByb2Nlc3NpbmcgY29ubmVjdGlvbiBjbGFzc2VzIGluIHB1cmUgUHl0aG9uLgorCiAtIElzc3VlICMxMTE2NDogU3RvcCB0cnlpbmcgdG8gdXNlIF94bWxwbHVzIGluIHRoZSB4bWwgbW9kdWxlLgogCi1CdWlsZAotLS0tLS0KKy0gSXNzdWUgIzExODg4OiBBZGQgbG9nMiBmdW5jdGlvbiB0byBtYXRoIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBNYXJrCisgIERpY2tpbnNvbi4KIAotLSBJc3N1ZSAjMTEzNDc6IFVzZSAtLW5vLWFzLW5lZWRlZCB3aGVuIGxpbmtpbmcgbGlicHl0aG9uMy5zby4KKy0gSXNzdWUgIzEyMDEyOiBzc2wuUFJPVE9DT0xfU1NMdjIgYmVjb21lcyBvcHRpb25hbC4KIAotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCistIElzc3VlICM4NDA3OiBUaGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVzIHRoZSBzaWduYWwgbnVtYmVyIGFzIGEgc2luZ2xlIGJ5dGUKKyAgaW5zdGVhZCBvZiBhIG51bCBieXRlIGludG8gdGhlIHdha2V1cCBmaWxlIGRlc2NyaXB0b3IuIFNvIGl0IGlzIHBvc3NpYmxlIHRvCisgIHdhaXQgbW9yZSB0aGFuIG9uZSBzaWduYWwgYW5kIGtub3cgd2hpY2ggc2lnbmFscyB3ZXJlIHJhaXNlZC4KIAotLSBJc3N1ZSAjMTE5OTY6IGxpYnB5dGhvbiAoZ2RiKSwgcmVwbGFjZSAicHktYnQiIGNvbW1hbmQgYnkgInB5LWJ0LWZ1bGwiIGFuZAotICBhZGQgYSBzbWFydGVyICJweS1idCIgY29tbWFuZCBwcmludGluZyBhIGNsYXNzaWMgUHl0aG9uIHRyYWNlYmFjay4KKy0gSXNzdWUgIzg0MDc6IEFkZCBwdGhyZWFkX2tpbGwoKSwgc2lncGVuZGluZygpIGFuZCBzaWd3YWl0KCkgZnVuY3Rpb25zIHRvIHRoZQorICBzaWduYWwgbW9kdWxlLgogCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTIwOTY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRlc3RfdGhyZWFkaW5nLnRlc3Rfd2FpdGZvcigpLiBQYXRjaAotICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTE2MTQ6IGltcG9ydCBfX2hlbGxvX18gcHJpbnRzICJIZWxsbyBXb3JsZCEiLiBQYXRjaCB3cml0dGVuIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjNTcyMzogSW1wcm92ZSBqc29uIHRlc3RzIHRvIGJlIGV4ZWN1dGVkIHdpdGggYW5kIHdpdGhvdXQgYWNjZWxlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTE5MTA6IEZpeCB0ZXN0X2hlYXBxIHRvIHNraXAgdGhlIEMgdGVzdHMgd2hlbiBfaGVhcHEgaXMgbWlzc2luZy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMSBiZXRhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA4LU1heS0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTg1NjogQXZvaWQgY3Jhc2hlcyBhbmQgbG9ja3VwcyB3aGVuIGRhZW1vbiB0aHJlYWRzIHJ1biB3aGlsZSB0aGUKLSAgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bjsgaW5zdGVhZCwgdGhlc2UgdGhyZWFkcyBhcmUgbm93IGtpbGxlZCB3aGVuIHRoZXkKLSAgdHJ5IHRvIHRha2UgdGhlIEdJTC4KLQotLSBJc3N1ZSAjOTc1NjogV2hlbiBjYWxsaW5nIGEgbWV0aG9kIGRlc2NyaXB0b3Igb3IgYSBzbG90IHdyYXBwZXIgZGVzY3JpcHRvciwKLSAgdGhlIGNoZWNrIG9mIHRoZSBvYmplY3QgdHlwZSBkb2Vzbid0IHJlYWQgdGhlIF9fY2xhc3NfXyBhdHRyaWJ1dGUgYW55bW9yZS4KLSAgRml4IGEgY3Jhc2ggaWYgYSBjbGFzcyBvdmVycmlkZSBpdHMgX19jbGFzc19fIGF0dHJpYnV0ZSAoZS5nLiBhIHByb3h5IG9mIHRoZQotICBzdHIgdHlwZSkuIFBhdGNoIHdyaXR0ZW4gYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMDkxNDogSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIGZpbGVzeXN0ZW0gY29kZWMgd2hlbiBjcmVhdGluZyBhIG5ldwotICBzdWJpbnRlcnByZXRlciB0byBmaXggYSBib290c3RyYXAgaXNzdWUgd2l0aCBjb2RlY3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBhcwotICB0aGUgSVNPLTg4NTktMTUgY29kZWMuCi0KLS0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgotICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2ggYnkKLSAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICM2NzgwOiBmaXggc3RhcnRzL2VuZHN3aXRoIGVycm9yIG1lc3NhZ2UgdG8gbWVudGlvbiB0aGF0IHR1cGxlcyBhcmUKLSAgYWNjZXB0ZWQgdG9vLgotCi0tIElzc3VlICM1MDU3OiBmaXggYSBidWcgaW4gdGhlIHBlZXBob2xlciB0aGF0IGxlZCB0byBub24tcG9ydGFibGUgcHljIGZpbGVzCi0gIGJldHdlZW4gbmFycm93IGFuZCB3aWRlIGJ1aWxkcyB3aGlsZSBvcHRpbWl6aW5nIEJJTkFSWV9TVUJTQ1Igb24gbm9uLUJNUCBjaGFycwotICAoZS5nLiAiXFUwMDAxMjM0NSJbMF0pLgotCi0tIElzc3VlICMxMTg0NTogRml4IHR5cG8gaW4gcmFuZ2VvYmplY3QuYyB0aGF0IGNhdXNlZCBhIGNyYXNoIGluCi0gIGNvbXB1dGVfc2xpY2VfaW5kaWNlcy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KLQotLSBJc3N1ZSAjMTE2NTA6IFB5T1NfU3RkaW9SZWFkbGluZSgpIHJldHJpZXMgZmdldHMoKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQKLSAgKEVJTlRSKSwgZm9yIGV4YW1wbGUgaWYgdGhlIHByb2dyYW0gaXMgc3RvcHBlZCB3aXRoIENUUkwreiBvbiBNYWMgT1MgWC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTEzOTU6IGlvLkZpbGVJTygpLndyaXRlKCkgY2xhbXBzIHRoZSBkYXRhIGxlbmd0aCB0byAzMiw3NjcgYnl0ZXMgb24KLSAgV2luZG93cyBpZiB0aGUgZmlsZSBpcyBhIFRUWSB0byB3b3JrYXJvdW5kIGEgV2luZG93cyBidWcuIFRoZSBXaW5kb3dzIGNvbnNvbGUKLSAgcmV0dXJucyBhbiBlcnJvciAoMTI6IG5vdCBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYgc3Rkb3V0Ci0gIG1vZGUgaXMgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsIGRlcGVuZGluZwotICBvbiBoZWFwIHVzYWdlKS4KLQotLSBJc3N1ZSAjMTEzMjA6IGZpeCBib2d1cyBtZW1vcnkgbWFuYWdlbWVudCBpbiBNb2R1bGVzL2dldHBhdGguYywgbGVhZGluZyB0byBhCi0gIHBvc3NpYmxlIGNyYXNoIHdoZW4gY2FsbGluZyBQeV9TZXRQYXRoKCkuCi0KLS0gSXNzdWUgIzExNTEwOiBGaXhlZCBvcHRpbWl6ZXIgYnVnIHdoaWNoIHR1cm5lZCAiYSxiPXsxLDF9IiBpbnRvICJhLGI9KDEsMSkiLgotCi0tIElzc3VlICMxMTQzMjogQSBidWcgd2FzIGludHJvZHVjZWQgaW4gc3VicHJvY2Vzcy5Qb3BlbiBvbiBwb3NpeCBzeXN0ZW1zIHdpdGgKLSAgMy4yLjAgd2hlcmUgdGhlIHN0ZG91dCBvciBzdGRlcnIgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRoZSBzYW1lIGFzIHRoZSBzdGRpbgotICBmaWxlIGRlc2NyaXB0b3Igd291bGQgcmFpc2UgYW4gZXhjZXB0aW9uLiB3ZWJicm93c2VyLm9wZW4gd291bGQgZmFpbC4gZml4ZWQuCi0KLS0gSXNzdWUgIzExNDUwOiBEb24ndCB0cnVuY2F0ZSBoZyB2ZXJzaW9uIGluZm8gaW4gUHlfR2V0QnVpbGRJbmZvKCkgd2hlbiB0aGVyZQotICBhcmUgbWFueSB0YWdzIChlLmcuIHdoZW4gdXNpbmcgbXEpLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTI0NjogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlViIpIHRvIGRlY29kZSB0aGUgYnl0ZSBzdHJpbmcgZnJvbQotICBVVEYtOCAod2l0aCByZXBsYWNlIGVycm9yIGhhbmRsZXIpIGluc3RlYWQgb2YgSVNPLTg4NTktMSAoaW4gc3RyaWN0IG1vZGUpLgotICBQYXRjaCB3cml0dGVuIGJ5IFJheSBBbGxlbi4KLQotLSBJc3N1ZSAjMTEyODY6IFJhaXNlIGEgVmFsdWVFcnJvciBmcm9tIGNhbGxpbmcgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIgd2l0aCBhCi0gIGJ1ZmZlciBzdHJ1Y3QgaGF2aW5nIGEgTlVMTCBkYXRhIHBvaW50ZXIuCi0KLS0gSXNzdWUgIzExMjcyOiBPbiBXaW5kb3dzLCBpbnB1dCgpIHN0cmlwcyAnXHInIChhbmQgbm90IG9ubHkgJ1xuJyksIGFuZAotICBzeXMuc3RkaW4gdXNlcyB1bml2ZXJzYWwgbmV3bGluZSAocmVwbGFjZSAnXHJcbicgYnkgJ1xuJykuCi0KLS0gSXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBkb24ndCBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4gIFBhdGNoCi0gIGJ5IFRvcnN0ZW4gQmVja2VyLgotCi0tIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCi0gIG5hcnJvdyBidWlsZC4KLQotLSBDaGVjayBmb3IgTlVMTCByZXN1bHQgaW4gUHlUeXBlX0Zyb21TcGVjLgotCi0tIElzc3VlICMxMTM4NjogYnl0ZWFycmF5LnBvcCgpIG5vdyB0aHJvd3MgSW5kZXhFcnJvciB3aGVuIHRoZSBieXRlYXJyYXkgaXMKLSAgZW1wdHksIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMTkyNzogU01UUF9TU0wgbm93IHVzZXMgcG9ydCA0NjUgYnkgZGVmYXVsdCBhcyBkb2N1bWVudGVkLiAgUGF0Y2ggYnkKLSAgS2FzdW4gSGVyYXRoLgorLSBJc3N1ZSAjMTE5Mjc6IFNNVFBfU1NMIG5vdyB1c2VzIHBvcnQgNDY1IGJ5IGRlZmF1bHQgYXMgZG9jdW1lbnRlZC4gIFBhdGNoCisgIGJ5IEthc3VuIEhlcmF0aC4KIAogLSBJc3N1ZSAjMTIwMDI6IGZ0cGxpYidzIGFib3J0KCkgbWV0aG9kIHJhaXNlcyBUeXBlRXJyb3IuCiAKKy0gSXNzdWUgIzExOTE2OiBBZGQgYSBudW1iZXIgb2YgTWFjT1NYIHNwZWNpZmljIGRlZmluaXRpb25zIHRvIHRoZSBlcnJubyBtb2R1bGUuCisgIFBhdGNoIGJ5IFBpZXJyZSBDYXJyaWVyLgorCiAtIElzc3VlICMxMTk5OTogZml4ZWQgc3BvcmFkaWMgc3luYyBmYWlsdXJlIG1haWxib3guTWFpbGRpciBkdWUgdG8gaXRzIHRyeWluZyB0bwogICBkZXRlY3QgbXRpbWUgY2hhbmdlcyBieSBjb21wYXJpbmcgdG8gdGhlIHN5c3RlbSBjbG9jayBpbnN0ZWFkIG9mIHRvIHRoZQogICBwcmV2aW91cyB2YWx1ZSBvZiB0aGUgbXRpbWUuCiAKKy0gSXNzdWUgIzExMDcyOiBhZGRlZCBNTFNEIGNvbW1hbmQgKFJGQy0zNjU5KSBzdXBwb3J0IHRvIGZ0cGxpYi4KKworLSBJc3N1ZSAjODgwODogVGhlIElNQVA0X1NTTCBjb25zdHJ1Y3RvciBub3cgYWxsb3dzIHBhc3NpbmcgYW4gU1NMQ29udGV4dAorICBwYXJhbWV0ZXIgdG8gY29udHJvbCBwYXJhbWV0ZXJzIG9mIHRoZSBzZWN1cmUgY2hhbm5lbC4gIFBhdGNoIGJ5IFNpamluCisgIEpvc2VwaC4KKwogLSBudHBhdGguc2FtZWZpbGUgZmFpbGVkIHRvIG5vdGljZSB0aGF0ICJhLnR4dCIgYW5kICJBLlRYVCIgcmVmZXIgdG8gdGhlIHNhbWUKICAgZmlsZSBvbiBXaW5kb3dzIFhQLiBBcyBub3RpY2VkIGluIGlzc3VlICMxMDY4NC4KIAotLSBJc3N1ZSAjMTIwMDA6IFdoZW4gYSBTU0wgY2VydGlmaWNhdGUgaGFzIGEgc3ViamVjdEFsdE5hbWUgd2l0aG91dCBhbnkgZE5TTmFtZQotICBlbnRyeSwgc3NsLm1hdGNoX2hvc3RuYW1lKCkgc2hvdWxkIHVzZSB0aGUgc3ViamVjdCdzIGNvbW1vbk5hbWUuICBQYXRjaCBieQotICBOaWNvbGFzIEJhcmVpbC4KKy0gSXNzdWUgIzEyMDAwOiBXaGVuIGEgU1NMIGNlcnRpZmljYXRlIGhhcyBhIHN1YmplY3RBbHROYW1lIHdpdGhvdXQgYW55CisgIGROU05hbWUgZW50cnksIHNzbC5tYXRjaF9ob3N0bmFtZSgpIHNob3VsZCB1c2UgdGhlIHN1YmplY3QncyBjb21tb25OYW1lLgorICBQYXRjaCBieSBOaWNvbGFzIEJhcmVpbC4KIAotLSBJc3N1ZSAjMTE2NDc6IG9iamVjdHMgY3JlYXRlZCB1c2luZyBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyIG5vdyBzdXBwb3J0IG1vcmUKLSAgdGhhbiBvbmUgY2FsbCB0byB0aGUgZnVuY3Rpb24gd2hlbiB1c2VkIGFzIGEgZGVjb3JhdG9yLiBJbml0aWFsIHBhdGNoIGJ5IFlzagotICBSYXkuCistIElzc3VlICMxMDc3NTogYXNzZXJ0UmFpc2VzLCBhc3NlcnRSYWlzZXNSZWdleCwgYXNzZXJ0V2FybnMsIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4IG5vdyBhY2NlcHQgYSBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIHdoZW4gdXNlZCBhcyBjb250ZXh0CisgIG1hbmFnZXJzLiAgSW5pdGlhbCBwYXRjaCBieSBXaW5zdG9uIEV3ZXJ0LgorCistIElzc3VlICMxMDY4NDogc2h1dGlsLm1vdmUgdXNlZCB0byBkZWxldGUgYSBmb2xkZXIgb24gY2FzZSBpbnNlbnNpdGl2ZQorICBmaWxlc3lzdGVtcyB3aGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0CisgIGZvciB0aGUgY2FzZS4KKworLSBJc3N1ZSAjMTE2NDc6IG9iamVjdHMgY3JlYXRlZCB1c2luZyBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyIG5vdyBzdXBwb3J0CisgIG1vcmUgdGhhbiBvbmUgY2FsbCB0byB0aGUgZnVuY3Rpb24gd2hlbiB1c2VkIGFzIGEgZGVjb3JhdG9yLiBJbml0aWFsIHBhdGNoCisgIGJ5IFlzaiBSYXkuCisKKy0gSXNzdWUgIzExOTMwOiBSZW1vdmVkIGRlcHJlY2F0ZWQgdGltZS5hY2NlcHQyZHllYXIgdmFyaWFibGUuCisgIFJlbW92ZWQgeWVhciA+PSAxMDAwIHJlc3RyaWN0aW9uIGZyb20gZGF0ZXRpbWUuc3RyZnRpbWUuCiAKIC0gbG9nZ2luZzogZG9uJ3QgZGVmaW5lIFF1ZXVlTGlzdGVuZXIgaWYgUHl0aG9uIGhhcyBubyB0aHJlYWQgc3VwcG9ydC4KIApAQCAtMjIxMywxNiArMzk0NCwzOSBAQAogLSBJc3N1ZSAjMTEyNzc6IG1tYXAubW1hcCgpIGNhbGxzIGZjbnRsKGZkLCBGX0ZVTExGU1lOQykgb24gTWFjIE9TIFggdG8gZ2V0CiAgIGFyb3VuZCBhIG1tYXAgYnVnIHdpdGggc3BhcnNlIGZpbGVzLiBQYXRjaCB3cml0dGVuIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCiAKKy0gSXNzdWUgIzg0MDc6IEFkZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCkgZnVuY3Rpb24gdG8gZmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUKKyAgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLgorCiAtIElzc3VlICMxMTg1ODogY29uZmlncGFyc2VyLkV4dGVuZGVkSW50ZXJwb2xhdGlvbiBleHBlY3RlZCBsb3dlci1jYXNlIHNlY3Rpb24KICAgbmFtZXMuCiAKIC0gSXNzdWUgIzExMzI0OiBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKSBub3cgd29ya3MgY29ycmVjdGx5LgogCistIElzc3VlICMxMTgxMTogc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKSBpcyBub3cgSVB2Ni1jb21wYXRpYmxlLiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCiAtIElzc3VlICMxMTc2MzogZG9uJ3QgdXNlIGRpZmZsaWIgaW4gVGVzdENhc2UuYXNzZXJ0TXVsdGlMaW5lRXF1YWwgaWYgdGhlCiAgIHN0cmluZ3MgYXJlIHRvbyBsb25nLgogCiAtIElzc3VlICMxMTIzNjogZ2V0cGFzcy5nZXRwYXNzIHJlc3BvbmRzIHRvIGN0cmwtYyBvciBjdHJsLXogb24gdGVybWluYWwuCiAKKy0gSXNzdWUgIzExODU2OiBTcGVlZCB1cCBwYXJzaW5nIG9mIEpTT04gbnVtYmVycy4KKworLSBJc3N1ZSAjMTEwMDU6IHRocmVhZGluZy5STG9jaygpLl9yZWxlYXNlX3NhdmUoKSByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCisgIGxvY2sgd2FzIG5vdCBhY3F1aXJlZC4KKworLSBJc3N1ZSAjMTEyNTg6IFNwZWVkIHVwIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpIHVuZGVyIExpbnV4IGJ5IGEgZmFjdG9yCisgIG9mIDUgdG8gMTAuICBJbml0aWFsIHBhdGNoIGJ5IEpvbmFzIEguCisKKy0gSXNzdWUgIzExMzgyOiBUcml2aWFsIHN5c3RlbSBjYWxscywgc3VjaCBhcyBkdXAoKSBvciBwaXBlKCksIG5lZWRuJ3QKKyAgcmVsZWFzZSB0aGUgR0lMLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMTIyMzogQWRkIHRocmVhZGluZy5faW5mbygpIGZ1bmN0aW9uIHByb3ZpZGluZyBpbmZvcm1hdGlvbnMgYWJvdXQKKyAgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTE3MzE6IHNpbXBsaWZ5L2VuaGFuY2UgZW1haWwgcGFyc2VyL2dlbmVyYXRvciBBUEkgYnkgaW50cm9kdWNpbmcKKyAgcG9saWN5IG9iamVjdHMuCisKIC0gSXNzdWUgIzExNzY4OiBUaGUgc2lnbmFsIGhhbmRsZXIgb2YgdGhlIHNpZ25hbCBtb2R1bGUgb25seSBjYWxscwogICBQeV9BZGRQZW5kaW5nQ2FsbCgpIGZvciB0aGUgZmlyc3Qgc2lnbmFsIHRvIGZpeCBhIGRlYWRsb2NrIG9uIHJlZW50cmFudCBvcgogICBwYXJhbGxlbCBjYWxscy4gUHlFcnJfU2V0SW50ZXJydXB0KCkgd3JpdGVzIGFsc28gaW50byB0aGUgd2FrZSB1cCBmaWxlLgpAQCAtMjI0Miw2ICszOTk2LDEwIEBACiAtIElzc3VlICMxMTQ3NDogRml4IHRoZSBidWcgd2l0aCB1cmwycGF0aG5hbWUoKSBoYW5kbGluZyBvZiAnL0N8Lycgb24gV2luZG93cy4KICAgUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCiAKKy0gSXNzdWUgIzExNjg0OiBjb21wbGV0ZSBlbWFpbC5wYXJzZXIgYnl0ZXMgQVBJIGJ5IGFkZGluZyBCeXRlc0hlYWRlclBhcnNlci4KKworLSBUaGUgYnoyIG1vZHVsZSBub3cgaGFuZGxlcyA0R2lCKyBpbnB1dCBidWZmZXJzIGNvcnJlY3RseS4KKwogLSBJc3N1ZSAjOTIzMzogRml4IGpzb24ubG9hZHMoJ3t9JykgdG8gcmV0dXJuIGEgZGljdCAoaW5zdGVhZCBvZiBhIGxpc3QpLCB3aGVuCiAgIF9qc29uIGlzIG5vdCBhdmFpbGFibGUuCiAKQEAgLTIyNTMsMTcgKzQwMTEsMzMgQEAKIC0gSXNzdWUgIzEwMDE5OiBGaXhlZCByZWdyZXNzaW9uIGluIGpzb24gbW9kdWxlIHdoZXJlIGFuIGluZGVudCBvZiAwIHN0b3BwZWQKICAgYWRkaW5nIG5ld2xpbmVzIGFuZCBhY3RlZCBpbnN0ZWFkIGxpa2UgJ05vbmUnLgogCistIElzc3VlICMxMTE4NjogcHlkb2MgaWdub3JlcyBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZQorICBjaGFyYWN0ZXIgaW4gdGhlIGluZGV4IG9mIG1vZHVsZXMuCisKKy0gSXNzdWUgIzExODE1OiBVc2UgYSBsaWdodC13ZWlnaHQgU2ltcGxlUXVldWUgZm9yIHRoZSByZXN1bHQgcXVldWUgaW4KKyAgY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IuCisKIC0gSXNzdWUgIzUxNjI6IFRyZWF0IHNlcnZpY2VzIGxpa2UgZnJvemVuIGV4ZWN1dGFibGVzIHRvIGFsbG93IGNoaWxkIHNwYXduaW5nCiAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgb24gV2luZG93cy4KIAorLSBsb2dnaW5nLmJhc2ljQ29uZmlnIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAnaGFuZGxlcnMnIGFyZ3VtZW50IHRha2luZyBhbgorICBpdGVyYWJsZSBvZiBoYW5kbGVycyB0byBiZSBhZGRlZCB0byB0aGUgcm9vdCBsb2dnZXIuIEFkZGl0aW9uYWwgcGFyYW1ldGVyCisgIGNoZWNrcyB3ZXJlIGFsc28gYWRkZWQgdG8gYmFzaWNDb25maWcuCisKIC0gSXNzdWUgIzExODE0OiBGaXggbGlrZWx5IHR5cG8gaW4gbXVsdGlwcm9jZXNzaW5nLlBvb2wuX3Rlcm1pbmF0ZSgpLgogCiAtIElzc3VlICMxMTc0NzogRml4IHJhbmdlIGZvcm1hdHRpbmcgaW4gZGlmZmxpYi5jb250ZXh0X2RpZmYoKSBhbmQKICAgZGlmZmxpYi51bmlmaWVkX2RpZmYoKS4KIAogLSBJc3N1ZSAjODQyODogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gbXVsdGlwcm9jZXNzaW5nLlBvb2wgd2hlbiB0ZXJtaW5hdGluZwotICB3b3JrZXIgcHJvY2Vzc2VzOiBuZXcgcHJvY2Vzc2VzIHdvdWxkIGJlIHNwYXduZWQgd2hpbGUgdGhlIHBvb2wgaXMgYmVpbmcgc2h1dAotICBkb3duLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorICB3b3JrZXIgcHJvY2Vzc2VzOiBuZXcgcHJvY2Vzc2VzIHdvdWxkIGJlIHNwYXduZWQgd2hpbGUgdGhlIHBvb2wgaXMgYmVpbmcKKyAgc2h1dCBkb3duLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMyNjUwOiByZS5lc2NhcGUoKSBubyBsb25nZXIgZXNjYXBlcyB0aGUgJ18nLgorCistIElzc3VlICMxMTc1Nzogc2VsZWN0LnNlbGVjdCgpIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIGEgbmVnYXRpdmUgdGltZW91dAorICBpcyBwYXNzZWQgKHByZXZpb3VzbHksIGEgc2VsZWN0LmVycm9yIHdpdGggRUlOVkFMIHdvdWxkIGJlIHJhaXNlZCkuICBQYXRjaAorICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCiAKIC0gSXNzdWUgIzczMTE6IGZpeCBodG1sLnBhcnNlciB0byBhY2NlcHQgbm9uLUFTQ0lJIGF0dHJpYnV0ZSB2YWx1ZXMuCiAKQEAgLTIyNzEsMjEgKzQwNDUsNTAgQEAKICAgbXVsdGlwYXJ0IHN1YnBhcnRzIHdpdGggYW4gOC1iaXQgQ1RFIGludG8gdW5pY29kZSBpbnN0ZWFkIG9mIHByZXNlcnZpbmcgdGhlCiAgIGJ5dGVzLgogCistIElzc3VlICMxNjkwNjA4OiBlbWFpbC51dGlsLmZvcm1hdGFkZHIgaXMgbm93IFJGQyAyMDQ3IGF3YXJlOiAgaXQgbm93IGhhcyBhCisgIGNoYXJzZXQgcGFyYW1ldGVyIHRoYXQgZGVmYXVsdHMgdG8gdXRmLTggYW5kIGlzIHVzZWQgYXMgdGhlIGNoYXJzZXQgZm9yIFJGQworICAyMDQ3IGVuY29kaW5nIHdoZW4gdGhlIHJlYWxuYW1lIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgorCiAtIElzc3VlICMxMDk2MzogRW5zdXJlIHRoYXQgc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIG5ldmVyIHJhaXNlcyBFUElQRS4KIAorLSBJc3N1ZSAjMTA3OTE6IEltcGxlbWVudCBtaXNzaW5nIG1ldGhvZCBHemlwRmlsZS5yZWFkMSgpLCBhbGxvd2luZyBHemlwRmlsZQorICB0byBiZSB3cmFwcGVkIGluIGEgVGV4dElPV3JhcHBlci4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KKworLSBJc3N1ZSAjMTE3MDc6IEFkZGVkIGEgZmFzdCBDIHZlcnNpb24gb2YgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KKyAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTE2ODg6IEFkZCBzcWxpdGUzLkNvbm5lY3Rpb24uc2V0X3RyYWNlX2NhbGxiYWNrKCkuICBQYXRjaCBieQorICBUb3JzdGVuIExhbmRzY2hvZmYuCisKIC0gSXNzdWUgIzExNzQ2OiBGaXggU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSB0byBhY2NlcHQgZWxsaXB0aWMgY3VydmUKICAgcHJpdmF0ZSBrZXlzLgogCistIElzc3VlICM1ODYzOiBSZXdyaXRlIEJaMkZpbGUgaW4gcHVyZSBQeXRob24sIGFuZCBhbGxvdyBpdCB0byBhY2NlcHQKKyAgZmlsZS1saWtlIG9iamVjdHMgdXNpbmcgYSBuZXcgYGBmaWxlb2JqYGAgY29uc3RydWN0b3IgYXJndW1lbnQuICBQYXRjaCBieQorICBOYWRlZW0gVmF3ZGEuCisKKy0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0U2FtZUVsZW1lbnRzIGhhcyBiZWVuIHJlbW92ZWQuCisKIC0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiBpbml0ZnNlbmNvZGluZygpIHdhcyBub3QKICAgY2FsbGVkIHlldDogZGV0ZWN0IGJvb3RzdHJhcCAoc3RhcnR1cCkgaXNzdWVzIGVhcmxpZXIuCiAKKy0gSXNzdWUgIzExMzkzOiBBZGQgdGhlIG5ldyBmYXVsdGhhbmRsZXIgbW9kdWxlLgorCiAtIElzc3VlICMxMTYxODogRml4IHRoZSB0aW1lb3V0IGxvZ2ljIGluIHRocmVhZGluZy5Mb2NrLmFjcXVpcmUoKSB1bmRlciBXaW5kb3dzLgogCistIFJlbW92ZWQgdGhlICdzdHJpY3QnIGFyZ3VtZW50IHRvIGVtYWlsLnBhcnNlci5QYXJzZXIsIHdoaWNoIGhhcyBiZWVuCisgIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDIuNC4KKwogLSBJc3N1ZSAjMTEyNTY6IEZpeCBpbnNwZWN0LmdldGNhbGxhcmdzIG9uIGZ1bmN0aW9ucyB0aGF0IHRha2Ugb25seSBrZXl3b3JkCiAgIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMTE2OTY6IEZpeCBJRCBnZW5lcmF0aW9uIGluIG1zaWxpYi4KIAorLSBpdGVydG9vbHMuYWNjdW11bGF0ZSBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgKmZ1bmMqIGFyZ3VtZW50IGZvcgorICBhIHVzZXItc3VwcGxpZWQgYmluYXJ5IGZ1bmN0aW9uLgorCistIElzc3VlICMxMTY5MjogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlbW8gZnVuY3Rpb25zIGluIHN1YnByb2Nlc3MgbW9kdWxlLgorCiAtIElzc3VlICM5Njk2OiBGaXggZXhjZXB0aW9uIGluY29ycmVjdGx5IHJhaXNlZCBieSB4ZHJsaWIuUGFja2VyLnBhY2tfaW50IHdoZW4KICAgdHJ5aW5nIHRvIHBhY2sgYSBuZWdhdGl2ZSAoaW4tcmFuZ2UpIGludGVnZXIuCiAKQEAgLTIzMDEsNyArNDEwNCwyNiBAQAogLSBJc3N1ZSAjMTE2MzU6IERvbid0IHVzZSBwb2xsaW5nIGluIHdvcmtlciB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgbGF1bmNoZWQgYnkKICAgY29uY3VycmVudC5mdXR1cmVzLgogCi0tIElzc3VlICMxMTYyODogY21wX3RvX2tleSBnZW5lcmF0ZWQgY2xhc3Mgc2hvdWxkIHVzZSBfX3Nsb3RzX18KKy0gSXNzdWUgIzY4MTE6IEFsbG93IGltcG9ydGxpYiB0byBjaGFuZ2UgYSBjb2RlIG9iamVjdCdzIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZQorICB0byBtYXRjaCB0aGUgcGF0aCB0byB3aGVyZSB0aGUgc291cmNlIGNvZGUgY3VycmVudGx5IGlzLCBub3Qgd2hlcmUgdGhlIGNvZGUKKyAgb2JqZWN0IG9yaWdpbmFsbHkgY2FtZSBmcm9tLgorCistIElzc3VlICM4NzU0OiBIYXZlIGltcG9ydGxpYiB1c2UgdGhlIHJlcHIgb2YgYSBtb2R1bGUgbmFtZSBpbiBlcnJvciBtZXNzYWdlcy4KKworLSBJc3N1ZSAjMTE1OTE6IFByZXZlbnQgImltcG9ydCBzaXRlIiBmcm9tIG1vZGlmeWluZyBzeXMucGF0aCB3aGVuIHB5dGhvbgorICB3YXMgc3RhcnRlZCB3aXRoIC1TLgorCistIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSBub3cgYWRkcyBhIF9zb3VyY2UgYXR0cmlidXRlIHRvIHRoZSBnZW5lcmF0ZWQKKyAgY2xhc3MuICBUaGlzIG1ha2UgdGhlIHNvdXJjZSBtb3JlIGFjY2Vzc2libGUgdGhhbiB0aGUgb3V0ZGF0ZWQKKyAgInZlcmJvc2UiIG9wdGlvbiB3aGljaCBwcmludHMgdG8gc3Rkb3V0IGJ1dCBkb2Vzbid0IG1ha2UgdGhlIHNvdXJjZQorICBzdHJpbmcgYXZhaWxhYmxlLgorCistIElzc3VlICMxMTM3MTogTWFyayBnZXRvcHQgZXJyb3IgbWVzc2FnZXMgYXMgbG9jYWxpemFibGUuICBQYXRjaCBieSBGaWxpcAorICBHcnVzemN6ecWEc2tpLgorCistIElzc3VlICMxMTMzMzogQWRkIF9fc2xvdHNfXyB0byBjb2xsZWN0aW9ucyBBQkNzLgorCistIElzc3VlICMxMTYyODogY21wX3RvX2tleSBnZW5lcmF0ZWQgY2xhc3Mgc2hvdWxkIHVzZSBfX3Nsb3RzX18uCiAKIC0gSXNzdWUgIzExNjY2OiBsZXQgaGVscCgpIGRpc3BsYXkgbmFtZWQgdHVwbGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcwogICB0aGF0IHN0YXJ0IHdpdGggYSBsZWFkaW5nIHVuZGVyc2NvcmUuCkBAIC0yMzEyLDYgKzQxMzQsMTAgQEAKIC0gSXNzdWUgIzU1Mzc6IEZpeCB0aW1lMmlzb3ooKSBhbmQgdGltZTJuZXRzY2FwZSgpIGZ1bmN0aW9ucyBvZgogICBodHRwbGliLmNvb2tpZWphciBmb3IgZXhwaXJhdGlvbiB5ZWFyIGdyZWF0ZXIgdGhhbiAyMDM4IG9uIDMyLWJpdCBzeXN0ZW1zLgogCistIElzc3VlICM0MzkxOiBVc2UgcHJvcGVyIGdldHRleHQgcGx1cmFsIGZvcm1zIGluIG9wdHBhcnNlLgorCistIElzc3VlICMxMTEyNzogUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gcGlja2xlIGEgc29ja2V0IG9iamVjdC4KKwogLSBJc3N1ZSAjMTE1NjM6IENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyIGlzIHNlbnQgYnkgcmVxdWVzdHMgdXNpbmcgVVJMT3BlbmVyCiAgIGNsYXNzIHdoaWNoIGhlbHBzIGluIGNsb3Npbmcgb2Ygc29ja2V0cyBhZnRlciBjb25uZWN0aW9uIGlzIG92ZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGlvbnMgYnkgSmVmZiBNY05laWwgYW5kIE5hZGVlbSBWYXdkYS4KQEAgLTIzMjIsNiArNDE0OCw4IEBACiAtIElzc3VlICM1NDIxOiBGaXggbWlzbGVhZGluZyBlcnJvciBtZXNzYWdlIHdoZW4gb25lIG9mIHNvY2tldC5zZW5kdG8oKSdzCiAgIGFyZ3VtZW50cyBoYXMgdGhlIHdyb25nIHR5cGUuICBQYXRjaCBieSBOaWtpdGEgVmV0b3Noa2luLgogCistIElzc3VlICMxMDgxMjogQWRkIHNvbWUgZXh0cmEgcG9zaXggZnVuY3Rpb25zIHRvIHRoZSBvcyBtb2R1bGUuCisKIC0gSXNzdWUgIzEwOTc5OiB1bml0dGVzdCBzdGRvdXQgYnVmZmVyaW5nIG5vdyB3b3JrcyB3aXRoIGNsYXNzIGFuZCBtb2R1bGUKICAgc2V0dXAgYW5kIHRlYXJkb3duLgogCkBAIC0yMzM0LDc1ICs0MTYyLDE1NCBAQAogICByZWxhdGl2ZSB0byBQeXRob24yIGFuZCB0aGUgcmVzdWx0IGlzIG5vdyB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uMi4KIAogLSBJc3N1ZSAjOTI5ODogYmFzZTY0IGJvZGllcyB3ZXJlbid0IGJlaW5nIGZvbGRlZCB0byBsaW5lIGxlbmd0aHMgbGVzcyB0aGFuIDc4LAotICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZSBvZgotICB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KKyAgd2hpY2ggd2FzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yLiAgVW5saWtlIFB5dGhvbjIsIHRoZSBsYXN0IGxpbmUKKyAgb2YgdGhlIGZvbGRlZCBib2R5IG5vdyBlbmRzIHdpdGggYSBjYXJyaWFnZSByZXR1cm4uCiAKIC0gSXNzdWUgIzExNTYwOiBzaHV0aWwudW5wYWNrX2FyY2hpdmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIHRoZSBmb3JtYXQKICAgcGFyYW1ldGVyLiBQYXRjaCBieSBFdmFuIERhbmRyZWEuCiAKKy0gSXNzdWUgIzU4NzA6IEFkZCBgc3VicHJvY2Vzcy5ERVZOVUxMYCBjb25zdGFudC4KKwogLSBJc3N1ZSAjMTExMzM6IGZpeCB0d28gY2FzZXMgd2hlcmUgaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBjYW4gdHJpZ2dlciBjb2RlCiAgIGV4ZWN1dGlvbi4gUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgogCiAtIElzc3VlICMxMTU2OTogdXNlIGFic29sdXRlIHBhdGggdG8gdGhlIHN5c2N0bCBjb21tYW5kIGluIG11bHRpcHJvY2Vzc2luZyB0bwotICBlbnN1cmUgdGhhdCBpdCB3aWxsIGJlIGZvdW5kIHJlZ2FyZGxlc3Mgb2YgdGhlIHNoZWxsIFBBVEguIFRoaXMgZW5zdXJlcyB0aGF0Ci0gIG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQgd29ya3Mgb24gZGVmYXVsdCBpbnN0YWxscyBvZiBNYWNPU1guCisgIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzCisgIHRoYXQgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KIAogLSBJc3N1ZSAjMTE1MDE6IGRpc3V0aWxzLmFyY2hpdmVfdXRpbHMubWFrZV96aXBmaWxlIG5vIGxvbmdlciBmYWlscyBpZiB6bGliIGlzCiAgIG5vdCBpbnN0YWxsZWQuIEluc3RlYWQsIHRoZSB6aXBmaWxlLlpJUF9TVE9SRUQgY29tcHJlc3Npb24gaXMgdXNlZCB0byBjcmVhdGUKICAgdGhlIFppcEZpbGUuIFBhdGNoIGJ5IE5hdGFsaWEgQi4gQmlkYXJ0LgogCistIElzc3VlICMxMTI4OTogYHNtdHAuU01UUGAgY2xhc3MgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIHNvIGl0IGNhbiBiZSB1c2VkCisgIGluIGEgYHdpdGhgIHN0YXRlbWVudC4gIENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEuCisKIC0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0CiAgIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCiAKLS0gSXNzdWUgIzExNTAwOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgb3MgeCBwcm94eSBieXBhc3MgY29kZSBmb3IgZnVsbHkgcXVhbGlmaWVkIElQCi0gIGFkZHJlc3NlcyBpbiB0aGUgcHJveHkgZXhjZXB0aW9uIGxpc3QuCistIElzc3VlICMxMTUwOTogU2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIGZpbGVpbnB1dC4KKyAgUGF0Y2ggYnkgRGVudmVyIENvbmV5YmVhcmUgYXQgUHlDb24gMjAxMSBTcHJpbnRzLgogCi0tIElzc3VlICMxMTQ5MTogZGJtLmVycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgd2hlbiBkYm0ub3BlbiBpcyBjYWxsZWQgd2l0aCB0aGUKLSAgIm4iIGFzIHRoZSBmbGFnIGFyZ3VtZW50IGFuZCB0aGUgZmlsZSBleGlzdHMuIFRoZSBiZWhhdmlvciBtYXRjaGVzIHRoZQotICBkb2N1bWVudGF0aW9uIGFuZCBnZW5lcmFsIGxvZ2ljLgorLSBJc3N1ZSAjMTE0MDc6IGBUZXN0Q2FzZS5ydW5gIHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3QgdXNlZCBvciBjcmVhdGVkLgorICBDb250cmlidXRlZCBieSBKYW5hdGhhbiBIYXJ0bGV5LgogCi0tIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMgb3BlcmF0aW9ucwotICB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgorLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBPUyBYIHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQKKyAgSVAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KKworLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGgKKyAgdGhlICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcworICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KKworLSBJc3N1ZSAjMTE2MjQ3NzogUG9zdGVsIFByaW5jaXBsZSBhZGp1c3RtZW50IHRvIGVtYWlsIGRhdGUgcGFyc2luZzogaGFuZGxlIHRoZQorICBmYWN0IHRoYXQgc29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyBpbnN0ZWFkIG9mICc6JyBpbiB0aW1lIHNwZWNzLgorCistIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMKKyAgb3BlcmF0aW9ucyB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgorCistIElzc3VlICM5OTM1OiBTcGVlZCB1cCBwaWNrbGluZyBvZiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMuCiAKIC0gSXNzdWUgIzU2MjI6IEZpeCBjdXJzZXMud3JhcHBlciB0byByYWlzZSBjb3JyZWN0IGV4Y2VwdGlvbiBpZiBjdXJzZXMKICAgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKKy0gSXNzdWUgIzExNDA4OiBJbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCksIG9ubHkgY2FsbCBnZXR0aW1lb2ZkYXkoKSB3aGVuCisgIHJlYWxseSBuZWNlc3NhcnkuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzExMzkxOiBXcml0aW5nIHRvIGEgbW1hcCBvYmplY3QgY3JlYXRlZCB3aXRoCiAgIGBgbW1hcC5QUk9UX1JFQUR8bW1hcC5QUk9UX0VYRUNgYCB3b3VsZCBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYQogICBUeXBlRXJyb3IuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCiAKLS0gSXNzdWUgIzExMzA2OiBtYWlsYm94IGluIGNlcnRhaW4gY2FzZXMgYWRhcHRzIHRvIGFuIGluYWJpbGl0eSB0byBvcGVuIGNlcnRhaW4KLSAgZmlsZXMgaW4gcmVhZC13cml0ZSBtb2RlLiAgUHJldmlvdXNseSBpdCBkZXRlY3RlZCB0aGlzIGJ5IGNoZWNraW5nIGZvciBFQUNDRVMsCi0gIG5vdyBpdCBhbHNvIGNoZWNrcyBmb3IgRVJPRlMuCistIElzc3VlICM5Nzk1OiBhZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgZm9yIG5udHBsaWIuTk5UUCBjbGFzcy4KIAotLSBJc3N1ZSAjMTEyNjU6IGFzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMgb24KLSAgYWNjZXB0KCksIHNlbmQoKSBhbmQgcmVjdigpLgorLSBJc3N1ZSAjMTEzMDY6IG1haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4KKyAgY2VydGFpbiBmaWxlcyBpbiByZWFkLXdyaXRlIG1vZGUuICBQcmV2aW91c2x5IGl0IGRldGVjdGVkIHRoaXMgYnkKKyAgY2hlY2tpbmcgZm9yIEVBQ0NFUywgbm93IGl0IGFsc28gY2hlY2tzIGZvciBFUk9GUy4KKworLSBJc3N1ZSAjMTEyNjU6IGFzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMKKyAgb24gYWNjZXB0KCksIHNlbmQoKSBhbmQgcmVjdigpLgorCistIElzc3VlICMxMTM3NzogRGVwcmVjYXRlIHBsYXRmb3JtLnBvcGVuKCkgYW5kIHJlaW1wbGVtZW50IGl0IHdpdGggb3MucG9wZW4oKS4KKworLSBJc3N1ZSAjODUxMzogT24gVU5JWCwgc3VicHJvY2VzcyBzdXBwb3J0cyBieXRlcyBjb21tYW5kIHN0cmluZy4KKworLSBJc3N1ZSAjMTA4NjY6IEFkZCBzb2NrZXQuc2V0aG9zdG5hbWUoKS4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzExMTQwOiBMb2NrLnJlbGVhc2UoKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIHdoZW4gYXR0ZW1wdGluZworICB0byByZWxlYXNlIGFuIHVuYWNxdWlyZWQgbG9jaywgYXMgY2xhaW1lZCBpbiB0aGUgdGhyZWFkaW5nIGRvY3VtZW50YXRpb24uCisgIFRoZSBfdGhyZWFkLmVycm9yIGV4Y2VwdGlvbiBpcyBub3cgYW4gYWxpYXMgb2YgUnVudGltZUVycm9yLiAgUGF0Y2ggYnkKKyAgRmlsaXAgR3J1c3pjennFhHNraS4gIFBhdGNoIGZvciBfZHVtbXlfdGhyZWFkIGJ5IEF5bWVyaWMgQXVndXN0aW4uCisKKy0gSXNzdWUgIzg1OTQ6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYSBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB3aGljaAorICAoYWRkcmVzcywgcG9ydCkgdG8gYmluZCB0byBiZWZvcmUgY29ubmVjdGluZy4KIAogLSBJc3N1ZSAjMTEzMjY6IEFkZCB0aGUgbWlzc2luZyBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24gZm9yIFNTTCBzb2NrZXRzLAogICBhbmQgbWFrZSBpdCB3b3JrIGZvciBub24tYmxvY2tpbmcgY29ubmVjdHMuCiAKKy0gSXNzdWUgIzExMjk3OiBBZGQgY29sbGVjdGlvbnMuQ2hhaW5NYXAoKS4KKworLSBJc3N1ZSAjMTA3NTU6IEFkZCB0aGUgcG9zaXguZmxpc3RkaXIoKSBmdW5jdGlvbi4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICM0NzYxOiBBZGQgdGhlIGBgKmF0KClgYCBmYW1pbHkgb2YgZnVuY3Rpb25zIChvcGVuYXQoKSwgZXRjLikgdG8gdGhlCisgIHBvc2l4IG1vZHVsZS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCiAtIElzc3VlICM3MzIyOiBUcnlpbmcgdG8gcmVhZCBmcm9tIGEgc29ja2V0J3MgZmlsZS1saWtlIG9iamVjdCBhZnRlciBhIHRpbWVvdXQKICAgb2NjdXJyZWQgbm93IHJhaXNlcyBhbiBlcnJvciBpbnN0ZWFkIG9mIHNpbGVudGx5IGxvc2luZyBkYXRhLgogCistIElzc3VlICMxMTI5MTogcG9wbGliLlBPUCBubyBsb25nZXIgc3VwcHJlc3NlcyBlcnJvcnMgb24gcXVpdCgpLgorCistIElzc3VlICMxMTE3NzogYXN5bmNvcmUncyBjcmVhdGVfc29ja2V0KCkgYXJndW1lbnRzIGNhbiBub3cgYmUgb21pdHRlZC4KKworLSBJc3N1ZSAjNjA2NDogQWRkIGEgYGBkYWVtb25gYCBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSB0aHJlYWRpbmcuVGhyZWFkCisgIGFuZCBtdWx0aXByb2Nlc3NpbmcuUHJvY2VzcyBjb25zdHJ1Y3RvcnMgaW4gb3JkZXIgdG8gb3ZlcnJpZGUgdGhlCisgIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGluaGVyaXRpbmcgdGhlIGRhZW1vbmljIHByb3BlcnR5IGZyb20gdGhlIGN1cnJlbnQKKyAgdGhyZWFkL3Byb2Nlc3MuCisKIC0gSXNzdWUgIzEwOTU2OiBCdWZmZXJlZCBJL08gY2xhc3NlcyByZXRyeSByZWFkaW5nIG9yIHdyaXRpbmcgYWZ0ZXIgYSBzaWduYWwKICAgaGFzIGFycml2ZWQgYW5kIHRoZSBoYW5kbGVyIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4KIAorLSBJc3N1ZSAjMTA3ODQ6IE5ldyBvcy5nZXRwcmlvcml0eSgpIGFuZCBvcy5zZXRwcmlvcml0eSgpIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTExMTQ6IEZpeCBjYXRhc3Ryb3BoaWMgcGVyZm9ybWFuY2Ugb2YgdGVsbCgpIG9uIHRleHQgZmlsZXMgKHVwCisgIHRvIDEwMDB4IGZhc3RlciBpbiBzb21lIGNhc2VzKS4gIEl0IGlzIHN0aWxsIG9uZSB0byB0d28gb3JkZXIgb2YgbWFnbml0dWRlcworICBzbG93ZXIgdGhhbiBiaW5hcnkgdGVsbCgpLgorCistIElzc3VlICMxMDg4MjogQWRkIG9zLnNlbmRmaWxlIGZ1bmN0aW9uLgorCistIElzc3VlICMxMDg2ODogQWxsb3cgdXNhZ2Ugb2YgdGhlIHJlZ2lzdGVyIG1ldGhvZCBvZiBhbiBBQkMgYXMgYSBjbGFzcworICBkZWNvcmF0b3IuCisKIC0gSXNzdWUgIzExMjI0OiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW4gdGFyZmlsZSB0aGF0IGFmZmVjdGVkIHRoZSBmaWxlLWxpa2UKICAgb2JqZWN0cyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgcmVnYXJkaW5nIHBlcmZvcm1hbmNlLCBtZW1vcnkKICAgY29uc3VtcHRpb24gYW5kIGZhaWx1cmVzIHdpdGggdGhlIHN0cmVhbSBpbnRlcmZhY2UuCiAKKy0gSXNzdWUgIzEwOTI0OiBBZGRpbmcgc2FsdCBhbmQgTW9kdWxhciBDcnlwdCBGb3JtYXQgdG8gY3J5cHQgbGlicmFyeS4KKyAgTW92ZWQgb2xkIEMgd3JhcHBlciB0byBfY3J5cHQsIGFuZCBhZGRlZCBhIFB5dGhvbiB3cmFwcGVyIHdpdGgKKyAgZW5oYW5jZWQgc2FsdCBnZW5lcmF0aW9uIGFuZCBzaW1wbGVyIEFQSSBmb3IgcGFzc3dvcmQgZ2VuZXJhdGlvbi4KKwogLSBJc3N1ZSAjMTEwNzQ6IE1ha2UgJ3Rva2VuaXplJyBzbyBpdCBjYW4gYmUgcmVsb2FkZWQuCiAKKy0gSXNzdWUgIzExMDg1OiBNb3ZlZCBjb2xsZWN0aW9ucyBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaW50byBhIHNlcGFyYXRlCisgIG1vZHVsZSBjYWxsZWQgY29sbGVjdGlvbnMuYWJjLCBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gdXNlZCBieSBpbXBvcnRsaWIuYWJjLgorICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBuYW1lcyBhcmUgaW1wb3J0ZWQgaW50byB0aGUgY29sbGVjdGlvbnMKKyAgbW9kdWxlLgorCiAtIElzc3VlICM0NjgxOiBBbGxvdyBtbWFwKCkgdG8gd29yayBvbiBmaWxlIHNpemVzIGFuZCBvZmZzZXRzIGxhcmdlciB0aGFuCiAgIDRHQiwgZXZlbiBvbiAzMi1iaXQgYnVpbGRzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbCwgYWRhcHRlZCBmb3IKICAgMzItYml0IFdpbmRvd3MuCiAKKy0gSXNzdWUgIzExMTY5OiBjb21waWxlYWxsIG1vZHVsZSB1c2VzIHJlcHIoKSB0byBmb3JtYXQgZmlsZW5hbWVzIGFuZCBwYXRocyB0bworICBlc2NhcGUgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHNob3cgc3BhY2VzLgorCiAtIElzc3VlICMxMTA4OTogRml4IHBlcmZvcm1hbmNlIGlzc3VlIGxpbWl0aW5nIHRoZSB1c2Ugb2YgQ29uZmlnUGFyc2VyKCkKICAgd2l0aCBsYXJnZSBjb25maWcgZmlsZXMuCiAKIC0gSXNzdWUgIzEwMjc2OiBGaXggdGhlIHJlc3VsdHMgb2YgemxpYi5jcmMzMigpIGFuZCB6bGliLmFkbGVyMzIoKSBvbiBidWZmZXJzCiAgIGxhcmdlciB0aGFuIDRHQi4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KIAorLSBJc3N1ZSAjMTEzODg6IEFkZGVkIGEgY2xlYXIoKSBtZXRob2QgdG8gTXV0YWJsZVNlcXVlbmNlCisKKy0gSXNzdWUgIzExMTc0OiBBZGQgYXJncGFyc2UuTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyLCB3aGljaCB1c2VzIHR5cGUgbmFtZXMKKyAgZm9yIHRoZSBuYW1lcyBvZiBvcHRpb25hbCBhbmQgcG9zaXRpb25hbCBhcmd1bWVudHMgaW4gaGVscCBtZXNzYWdlcy4KKwogLSBJc3N1ZSAjOTM0ODogUmFpc2UgYW4gZWFybHkgZXJyb3IgaWYgYXJncGFyc2UgbmFyZ3MgYW5kIG1ldGF2YXIgZG9uJ3QgbWF0Y2guCiAKIC0gSXNzdWUgIzg5ODI6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgpAQCAtMjQxNCwyOCArNDMyMSwxNDEgQEAKIAogLSBJc3N1ZSAjOTM0NzogRml4IGZvcm1hdHRpbmcgZm9yIHR1cGxlcyBpbiBhcmdwYXJzZSB0eXBlPSBlcnJvciBtZXNzYWdlcy4KIAorLSBJc3N1ZSAjMTIxOTE6IEFkZGVkIHNodXRpbC5jaG93bigpIHRvIGNoYW5nZSB1c2VyIGFuZC9vciBncm91cCBvd25lciBvZiBhCisgIGdpdmVuIHBhdGggYWxzbyBzcGVjaWZ5aW5nIHRoZWlyIG5hbWVzLgorCistIElzc3VlICMxMzk4ODogVGhlIF9lbGVtZW50dHJlZSBhY2NlbGVyYXRvciBpcyB1c2VkIHdoZW5ldmVyIGF2YWlsYWJsZS4KKyAgTm93IHhtbC5ldHJlZS5jRWxlbWVudFRyZWUgYmVjb21lcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdG8gRWxlbWVudFRyZWUuCisKIEJ1aWxkCiAtLS0tLQogCistIElzc3VlICM2ODA3OiBSdW4gbXNpc3VwcG9ydC5tYWsgZWFybGllci4KKworLSBJc3N1ZSAjMTA1ODA6IE1pbm9yIGdyYW1tYXIgY2hhbmdlIGluIFdpbmRvd3MgaW5zdGFsbGVyLgorCistIElzc3VlICMxMzMyNjogQ2xlYW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29ycmVjdGx5IG9uIE9wZW5CU0QuCisKKy0gUEVQIDM5MzogdGhlIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXdpZGUtdW5pY29kZSBpcyByZW1vdmVkLgorCistIElzc3VlICMxMjg1MjogU2V0IF9YT1BFTl9TT1VSQ0UgdG8gNzAwLCBpbnN0ZWFkIG9mIDYwMCwgdG8gZ2V0IFBPU0lYIDIwMDgKKyAgZnVuY3Rpb25zIG9uIE9wZW5CU0QgKGUuZy4gZmRvcGVuZGlyKS4KKworLSBJc3N1ZSAjMTE4NjM6IFJlbW92ZSBzdXBwb3J0IGZvciBsZWdhY3kgc3lzdGVtcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIKKyAgKGZvbGxvd2luZyBQRVAgMTEpLiAgVGhlc2Ugc3lzdGVtcyBhcmUgc3lzdGVtcyB1c2luZyBNYWNoIEMgVGhyZWFkcywKKyAgU3VuT1MgbGlnaHR3ZWlnaHQgcHJvY2Vzc2VzLCBHTlUgcHRoIHRocmVhZHMgYW5kIElSSVggdGhyZWFkcy4KKworLSBJc3N1ZSAjODc0NjogQ29ycmVjdCBmYXVsdHkgY29uZmlndXJlIGNoZWNrcyBzbyB0aGF0IG9zLmNoZmxhZ3MoKSBhbmQKKyAgb3MubGNoZmxhZ3MoKSBhcmUgb25jZSBhZ2FpbiBidWlsdCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCB0aGVzZQorICBmdW5jdGlvbnMgKEJTRCBhbmQgT1MgWCkuICBBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYCisgIChVRl9ISURERU4gYW5kIFVGX0NPTVBSRVNTRUQpLgorCistIElzc3VlICMxMDY0NTogSW5zdGFsbGluZyBQeXRob24gbm8gbG9uZ2VyIGNyZWF0ZXMgYQorICBQeXRob24tWC5ZLlotcHlYLlkuZWdnLWluZm8gZmlsZSBpbiB0aGUgbGliLWR5bmxvYWQgZGlyZWN0b3J5LgorCistIERvIG5vdCBhY2NpZGVudGFsbHkgaW5jbHVkZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc3FsaXRlLmggdHdpY2Ugd2hlbgorICBidWlsZGluZyBzcWxpdGUzLgorCistIElzc3VlICMxMTIxNzogRm9yIDY0LWJpdC8zMi1iaXQgTWFjIE9TIFggdW5pdmVyc2FsIGZyYW1ld29yayBidWlsZHMsCisgIGVuc3VyZSAibWFrZSBpbnN0YWxsIiBjcmVhdGVzIHN5bWxpbmtzIGluIC0tcHJlZml4IGJpbiBmb3IgdGhlICItMzIiCisgIGZpbGVzIGluIHRoZSBmcmFtZXdvcmsgYmluIGRpcmVjdG9yeSBsaWtlIHRoZSBpbnN0YWxsZXIgZG9lcy4KKworLSBJc3N1ZSAjMTEzNDc6IFVzZSAtLW5vLWFzLW5lZWRlZCB3aGVuIGxpbmtpbmcgbGlicHl0aG9uMy5zby4KKwogLSBJc3N1ZSAjMTE0MTE6IEZpeCAnbWFrZSBERVNURElSPScgd2l0aCBhIHJlbGF0aXZlIGRlc3RpbmF0aW9uLgogCi0tIElzc3VlICMxMTI2ODogUHJldmVudCBNYWMgT1MgWCBJbnN0YWxsZXIgZmFpbHVyZSBpZiBEb2N1bWVudGF0aW9uIHBhY2thZ2UgaGFkCi0gIHByZXZpb3VzbHkgYmVlbiBpbnN0YWxsZWQuCistIElzc3VlICMxMTI2ODogUHJldmVudCBNYWMgT1MgWCBJbnN0YWxsZXIgZmFpbHVyZSBpZiBEb2N1bWVudGF0aW9uCisgIHBhY2thZ2UgaGFkIHByZXZpb3VzbHkgYmVlbiBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzExNDk1OiBPU0Ygc3VwcG9ydCBpcyBlbGltaW5hdGVkLiBJdCB3YXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yLgorCiAKIElETEUKIC0tLS0KIAotLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkgZmlsZSBpbgotICBhIHBhY2thZ2UuCistIElzc3VlICMxMTcxODogSURMRSdzIG9wZW4gbW9kdWxlIGRpYWxvZyBjb3VsZG4ndCBmaW5kIHRoZSBfX2luaXRfXy5weQorICBmaWxlIGluIGEgcGFja2FnZS4KIAogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE0MDUzOiBwYXRjaGNoZWNrLnB5ICgibWFrZSBwYXRjaGNoZWNrIikgbm93IHdvcmtzIHdpdGggTVEgcGF0Y2hlcy4KKyAgUGF0Y2ggYnkgRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqS4KKworLSBJc3N1ZSAjMTM5MzA6IDJ0bzMgaXMgbm93IGFibGUgdG8gd3JpdGUgaXRzIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgorICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQorICBzdWZmaXguICBTZWUgaXRzIG5ldyAtbywgLVcgYW5kIC0tYWRkLXN1ZmZpeCBvcHRpb25zLiAgVGhpcyBtYWtlcyBpdCBtb3JlCisgIHVzZWZ1bCBpbiBtYW55IGF1dG9tYXRlZCBjb2RlIHRyYW5zbGF0aW9uIHdvcmtmbG93cy4KKworLSBJc3N1ZSAjMTM2Mjg6IHB5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbgorICB0cmFjZWJhY2sgaWYgUHl0aG9uIGlzIG9wdGltaXplZC4KKworLSBJc3N1ZSAjMTE5OTY6IGxpYnB5dGhvbiAoZ2RiKSwgcmVwbGFjZSAicHktYnQiIGNvbW1hbmQgYnkgInB5LWJ0LWZ1bGwiIGFuZAorICBhZGQgYSBzbWFydGVyICJweS1idCIgY29tbWFuZCBwcmludGluZyBhIGNsYXNzaWMgUHl0aG9uIHRyYWNlYmFjay4KKwogLSBJc3N1ZSAjMTExNzk6IE1ha2UgY2NiZW5jaCB3b3JrIHVuZGVyIFB5dGhvbiAzLjEgYW5kIDIuNyBhZ2Fpbi4KIAorLSBJc3N1ZSAjMTA2Mzk6IHJlaW5kZW50LnB5IG5vIGxvbmdlciBjb252ZXJ0cyBuZXdsaW5lcyBhbmQgd2lsbCByYWlzZQorICBhbiBlcnJvciBpZiBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgYSBmaWxlIHdpdGggbWl4ZWQgbmV3bGluZXMuCisgICItLW5ld2xpbmUiIG9wdGlvbiBhZGRlZCB0byBzcGVjaWZ5IG5ldyBsaW5lIGNoYXJhY3Rlci4KKwogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE2ODQ3OiBGaXhlZCBpbXByb3BlciB1c2Ugb2YgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCkgaW4KKyAgbm9uLXB5ZGVidWcgYnVpbGRzLiBTZXZlcmFsIGV4dGVuc2lvbiBtb2R1bGVzIG5vdyBjb21waWxlIGNsZWFubHkgd2hlbgorICBhc3NlcnQoKXMgYXJlIGVuYWJsZWQgaW4gc3RhbmRhcmQgYnVpbGRzICgtRERFQlVHIGZsYWcpLgorCistIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCisgIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5CisgIFZpbG1vcyBOZWJlaGFqLgorCistIElzc3VlICM3Nzc3OiBzb2NrZXQ6IEFkZCBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIChQRl9SRFMpIHN1cHBvcnQuCisKKy0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkNvbXByZXNzb3IvQloyRGVjb21wcmVzc29yIG5vdyB1c2UgYSBsaW5lYXItdGltZQorICBidWZmZXIgZ3Jvd3RoIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMtdGltZSBvbmUuCisKKy0gSXNzdWUgIzEwMTQxOiBzb2NrZXQ6IEFkZCBTb2NrZXRDQU4gKFBGX0NBTikgc3VwcG9ydC4gSW5pdGlhbCBwYXRjaCBieQorICBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCisgIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKKyAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KKworLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgorCistIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQorICBUaG9tYXMgSmFyb3NjaC4KKworLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCisgIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgorCistIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAorICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgorCistIElzc3VlICMxMTcyNzExOiBBZGQgJ2xvbmcgbG9uZycgc3VwcG9ydCB0byB0aGUgYXJyYXkgbW9kdWxlLgorICBJbml0aWFsIHBhdGNoIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjaworICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCisgIE9wZW5JbmRpYW5hL0lsbHVtb3MuCisKKy0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKKyAgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCisKKy0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KKyAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCisKKy0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKKyAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQorICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgorCiAtIElzc3VlICMxMjA1MTogRml4IHNlZ2ZhdWx0IGluIGpzb24uZHVtcHMoKSB3aGlsZSBlbmNvZGluZyBoaWdobHktbmVzdGVkCiAgIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KIApAQCAtMjQ0OCwzNSArNDQ2OCwxODQgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKKworLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KKworLSBJc3N1ZSAjMTM3MjU6IEZpeCByZWdydGVzdCB0byByZWNvZ25pemUgdGhlIGRvY3VtZW50ZWQgLWQgZmxhZy4KKyAgUGF0Y2ggYnkgRXJubyBUdWtpYS4KKworLSBJc3N1ZSAjMTMzMDQ6IFNraXAgdGVzdCBjYXNlIGlmIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXNhYmxlZCAoLXMgb3IKKyAgUFlUSE9OTk9VU0VSU0lURSkuICAoUGF0Y2ggYnkgQ2FybCBNZXllcikKKworLSBJc3N1ZSAjNTY2MTogQWRkIGEgdGVzdCBmb3IgRUNPTk5SRVNFVC9FUElQRSBoYW5kbGluZyB0byB0ZXN0X2FzeW5jb3JlLiBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMTMyMTg6IEZpeCB0ZXN0X3NzbCBmYWlsdXJlcyBvbiBEZWJpYW4vVWJ1bnR1LgorCistIFJlLWVuYWJsZSBsaWIydG8zJ3MgdGVzdF9wYXJzZXIucHkgdGVzdHMsIHRob3VnaCB3aXRoIGFuIGV4cGVjdGVkIGZhaWx1cmUKKyAgKHNlZSBpc3N1ZSAxMzEyNSkuCisKKy0gSXNzdWUgIzEyNjU2OiBBZGQgdGVzdHMgZm9yIElQdjYgYW5kIFVuaXggc29ja2V0cyB0byB0ZXN0X2FzeW5jb3JlLgorCistIElzc3VlICM2NDg0OiBBZGQgdW5pdCB0ZXN0cyBmb3IgbWFpbGNhcCBtb2R1bGUgKHBhdGNoIGJ5IEdyZWdvcnkgTm9maSkKKworLSBJc3N1ZSAjMTE2NTE6IEltcHJvdmUgdGhlIE1ha2VmaWxlIHRlc3QgdGFyZ2V0cyB0byBydW4gbW9yZSBvZiB0aGUgdGVzdCBzdWl0ZQorICBtb3JlIHF1aWNrbHkuIFRoZSAtLW11bHRpcHJvY2VzcyBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgcmVkdWNpbmcKKyAgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHRlc3RzLiAibWFrZSB0ZXN0IiBhbmQgIm1ha2UgcXVpY2t0ZXN0IgorICBub3cgaW5jbHVkZSBzb21lIHJlc291cmNlLWludGVuc2l2ZSB0ZXN0cywgYnV0IG5vIGxvbmdlciBydW4gdGhlIHRlc3Qgc3VpdGUKKyAgdHdpY2UgdG8gY2hlY2sgZm9yIGJ1Z3MgaW4gLnB5YyBnZW5lcmF0aW9uLiBUb29scy9zY3JpcHRzL3J1bl90ZXN0LnB5IHByb3ZpZGVzCisgIGFuIGVhc3kgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5IHRvIHJ1biB0ZXN0IHN1aXRlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHBhY2thZ2luZyBtb2R1bGUgY2FuIG5vdyBydW4gZnJvbSBhbgorICBpbnN0YWxsZWQgUHl0aG9uLgorCistIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uLgorCistIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCisgIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcworICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCisgIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCisgIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCisgIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcworICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KKyAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQorCistIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKKyAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCisKKy0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQorICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCisgIGluIHRlc3RfdGVsbmV0bGliLnB5LgorCistIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKKyAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKKyAgV2ViIHNpdGUuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cworICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0CisgIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQorICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCisgIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworLSBJc3N1ZSAjMTE1MTI6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBjZ2l0YiBtb2R1bGUuIFBhdGNoIGJ5IFJvYmJpZSBDbGVtb25zLgorCistIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKKyAgdGVzdHMuCisKKy0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKKyAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KKworLSBJc3N1ZSAjMTI0Njk6IFJ1biB3YWtldXAgYW5kIHBlbmRpbmcgc2lnbmFsIHRlc3RzIGluIGEgc3VicHJvY2VzcyB0byBydW4gdGhlCisgIHRlc3QgaW4gYSBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAorICBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KKyAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAorICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgorCistIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKKyAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQorICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgorCistIElzc3VlICMxMjE0MTogSW5zdGFsbCBjb3BpZXMgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0CisgIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2NvbW1hbmRfYnVpbGRfZXh0IG9mCisgIHRlc3RfcGFja2FnaW5nIGFyZSBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuCisgIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQgZGlyZWN0b3J5LgorCistIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLgorICBQYXRjaCBieSBHYXJyZXR0IENvb3Blci4KKworLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOQorICAyLjggKyAgb24gTWFjIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCistIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKKyAgaXNvMjAyMl9rcikuCisKKy0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCisKKy0gSXNzdWUgIzEyMDQxOiBNYWtlIHRlc3Rfd2FpdDMgbW9yZSByb2J1c3QuCisKIC0gSXNzdWUgIzExODczOiBDaGFuZ2UgcmVnZXggaW4gdGVzdF9jb21waWxlYWxsIHRvIGZpeCBvY2Nhc2lvbmFsIGZhaWx1cmVzIHdoZW4KICAgd2hlbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHRlbXBvcmFyeSBwYXRoIGhhcHBlbmVkIHRvIG1hdGNoIHRoZSByZWdleC4KIAorLSBJc3N1ZSAjMTE5NTg6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0Ii4KKyAgUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjODQwNywgIzExODU5OiBGaXggdGVzdHMgb2YgdGVzdF9pbyB1c2luZyB0aHJlYWRzIGFuZCBhbiBhbGFybTogdXNlCisgIHB0aHJlYWRfc2lnbWFzaygpIHRvIGVuc3VyZSB0aGF0IHRoZSBTSUdBTFJNIHNpZ25hbCBpcyByZWNlaXZlZCBieSB0aGUgbWFpbgorICB0aHJlYWQuCisKKy0gSXNzdWUgIzExODExOiBGYWN0b3Igb3V0IGRldGVjdGlvbiBvZiBJUHY2IHN1cHBvcnQgb24gdGhlIGN1cnJlbnQgaG9zdAorICBhbmQgbWFrZSBpdCBhdmFpbGFibGUgYXMgYGB0ZXN0LnN1cHBvcnQuSVBWNl9FTkFCTEVEYGAuICBQYXRjaCBieQorICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzEwOTE0OiBBZGQgYSBtaW5pbWFsIGVtYmVkZGluZyB0ZXN0IHRvIHRlc3RfY2FwaS4KIAotLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbgotICB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KKy0gSXNzdWUgIzExMjIzOiBTa2lwIHRlc3RfbG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIGFuZAorICB0ZXN0X3Jsb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgb2YgdGVzdF90aHJlYWRzaWduYWxzIGlmIGEgdGhyZWFkIGxvY2sgaXMKKyAgaW1wbGVtZW50ZWQgdXNpbmcgYSBQT1NJWCBtdXRleCBhbmQgYSBQT1NJWCBjb25kaXRpb24gdmFyaWFibGUuIEEgUE9TSVgKKyAgY29uZGl0aW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZS5nLiBvbiBMaW51eCwgdGhlCisgIGZ1dGV4IHN5c3RlbSBjYWxsIGlzIHJlc3RhcnRlZCkuCisKKy0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCiAKIC0gRml4IHBvc3NpYmxlICJmaWxlIGFscmVhZHkgZXhpc3RzIiBlcnJvciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHBhcmFsbGVsLgogCiAtIElzc3VlICMxMTcxOTogRml4IG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCB0ZXN0X21zaWxpYiBza2lwIG9uIG5vbi1XaW5kb3dzCiAgIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgogCistIElzc3VlICMxMTcyNzogQWRkIGEgLS10aW1lb3V0IG9wdGlvbiB0byByZWdydGVzdDogaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgorICBUSU1FT1VUIHNlY29uZHMsIGR1bXBzIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgYW5kIGV4aXRzLgorCiAtIElzc3VlICMxMTY1MzogZml4IC1XIHdpdGggLWogaW4gcmVncnRlc3QuCiAKKy0gVGhlIGVtYWlsIHRlc3Qgc3VpdGUgbm93IGxpdmVzIGluIHRoZSBMaWIvdGVzdC90ZXN0X2VtYWlsIHBhY2thZ2UuICBUaGUgdGVzdAorICBoYXJuZXNzIGNvZGUgaGFzIGFsc28gYmVlbiBtb2Rlcm5pemVkIHRvIGFsbG93IHVzZSBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMuCisKKy0gcmVncnRlc3Qgbm93IGRpc2NvdmVycyB0ZXN0IHBhY2thZ2VzIGFzIHdlbGwgYXMgdGVzdCBtb2R1bGVzLgorCiAtIElzc3VlICMxMTU3NzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIGJpbmhleC5weS4gUGF0Y2ggYnkgQXJrYWR5IEtvcGx5YXJvdi4KIAorLSBOZXcgdGVzdF9jcmFzaGVycyBhZGRlZCB0byBleGVyY2lzZSB0aGUgc2NyaXB0cyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMKKyAgZGlyZWN0b3J5IGFuZCBjb25maXJtIHRoZXkgZmFpbCBhcyBleHBlY3RlZAorCiAtIElzc3VlICMxMTU3ODogYWRkZWQgdGVzdCBmb3IgdGhlIHRpbWVpdCBtb2R1bGUuICBQYXRjaCBieSBNaWNoYWVsIEhlbnJ5LgogCiAtIElzc3VlICMxMTUwMzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHBvc2l4cGF0aC5weS4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgogCi0tIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQotICBBcmxlbi4KKy0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weSwgaW5jcmVhc2VzIGdyYW51bGFyaXR5IG9mCisgIHN0cmluZy5Gb3JtYXR0ZXIgdGVzdHMuIEluaXRpYWwgcGF0Y2ggYnkgQWxpY2lhIEFybGVuLgogCiAtIElzc3VlICMxMTU0ODogSW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHRoZSBzaHV0aWwgbW9kdWxlLiBQYXRjaCBieQogICBFdmFuIERhbmRyZWEuCiAKIC0gSXNzdWUgIzExNTU0OiBSZWFjdGl2YXRlZCB0ZXN0X2VtYWlsX2NvZGVjcy4KIAorLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKKyAgQXJsZW4KKwogLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCiAgIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCiAKQEAgLTI0ODksNTQwNyArNDY1OCw3MiBAQAogLSBJc3N1ZSAjOTkzMTogRml4IGhhbmdzIGluIEdVSSB0ZXN0cyB1bmRlciBXaW5kb3dzIGluIGNlcnRhaW4gY29uZGl0aW9ucy4KICAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCiAKKy0gSXNzdWUgIzEwNTEyOiBQcm9wZXJseSBjbG9zZSBzb2NrZXRzIHVuZGVyIHRlc3QudGVzdF9jZ2kuCisKKy0gSXNzdWUgIzEwOTkyOiBNYWtlIHRlc3RzIHBhc3MgdW5kZXIgY292ZXJhZ2UuCisKIC0gSXNzdWUgIzEwODI2OiBQcmV2ZW50IHNwb3JhZGljIGZhaWx1cmUgaW4gdGVzdF9zdWJwcm9jZXNzIG9uIFNvbGFyaXMgZHVlCiAgIHRvIG9wZW4gZG9vciBmaWxlcy4KIAorLSBJc3N1ZSAjMTA5OTA6IFByZXZlbnQgdGVzdHMgZnJvbSBjbG9iYmVyaW5nIGEgc2V0IHRyYWNlIGZ1bmN0aW9uLgorCitDLUFQSQorLS0tLS0KKworLSBBZGQgUHlPYmplY3RfR2VuZXJpY0dldERpY3QgYW5kIFB5T2JqZWN0X0dlbmVyaVNldERpY3QuIFRoZXkgYXJlIGdlbmVyaWMKKyAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvciBvZiBDCisgIHR5cGVzLgorCistIElzc3VlICMxMzcyNzogQWRkIDMgbWFjcm9zIHRvIGFjY2VzcyBQeURhdGVUaW1lX0RlbHRhIG1lbWJlcnM6CisgIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMsIFB5RGF0ZVRpbWVfREVMVEFfR0VUX1NFQ09ORFMsCisgIFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EUy4KKworLSBJc3N1ZSAjMTA1NDI6IEFkZCA0IG1hY3JvcyB0byB3b3JrIHdpdGggc3Vycm9nYXRlczogUHlfVU5JQ09ERV9JU19TVVJST0dBVEUsCisgIFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUsIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURSwKKyAgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMuCisKKy0gSXNzdWUgIzEyNzI0OiBBZGQgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEIG1hY3JvIGZvciByZXR1cm5pbmcgTm90SW1wbGVtZW50ZWQuCisKKy0gUFlfUEFUQ0hMRVZFTF9SRVZJU0lPTiBoYXMgYmVlbiByZW1vdmVkLCBzaW5jZSBpdCdzIG1lYW5pbmdsZXNzIHdpdGgKKyAgTWVyY3VyaWFsLgorCistIElzc3VlICMxMjE3MzogVGhlIGZpcnN0IGFyZ3VtZW50IG9mIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsIGlzIG5vdyBgY29uc3QKKyAgY2hhciAqYCBpbnN0ZWFkIG9mIGBjaGFyICpgLgorCistIElzc3VlICMxMjM4MDogUHlBcmdfUGFyc2VUdXBsZSBub3cgYWNjZXB0cyBhIGJ5dGVhcnJheSBmb3IgdGhlICdjJyBmb3JtYXQuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTM0OTg6IENsYXJpZnkgZG9jcyBvZiBvcy5tYWtlZGlycygpJ3MgZXhpc3Rfb2sgYXJndW1lbnQuICBEb25lIHdpdGgKKyAgZ3JlYXQgbmF0aXZlLXNwZWFrZXIgaGVscCBmcm9tIFIuIERhdmlkIE11cnJheS4KKworLSBJc3N1ZXMgIzEzNDkxIGFuZCAjMTM5OTU6IEZpeCBtYW55IGVycm9ycyBpbiBzcWxpdGUzIGRvY3VtZW50YXRpb24uCisgIEluaXRpYWwgcGF0Y2ggZm9yICMxMzQ5MSBieSBKb2hhbm5lcyBWb2dlbC4KKworLSBJc3N1ZSAjMTM0MDI6IERvY3VtZW50IGFic29sdXRlbmVzcyBvZiBzeXMuZXhlY3V0YWJsZS4KKworLSBJc3N1ZSAjMTM4ODM6IFBZVEhPTkNBU0VPSyBhbHNvIHdvcmtzIG9uIE9TIFguCisKKy0gSXNzdWUgIzkwMjE6IEFkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzYwMDU6IEV4YW1wbGVzIGluIHRoZSBzb2NrZXQgbGlicmFyeSBkb2N1bWVudGF0aW9uIHVzZSBzZW5kYWxsLCB3aGVyZQorICByZWxldmFudCwgaW5zdGVhZCBzZW5kIG1ldGhvZC4KKworLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldworICBDIEFQSSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKKyAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKKyAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgorCistIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIHNvY2tldHNlcnZlciBleGFtcGxlcy4KKwogLSBJc3N1ZSAjMTE4MTg6IEZpeCB0ZW1wZmlsZSBleGFtcGxlcyBmb3IgUHl0aG9uIDMuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMC1GZWItMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzExMjQ5OiBGaXggcG90ZW50aWFsIGNyYXNoZXMgd2hlbiB1c2luZyB0aGUgbGltaXRlZCBBUEkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMTIyMjogRml4IG5vbi1mcmFtZXdvcmsgc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzExMTg0OiBGaXggbGFyZ2UtZmlsZSBzdXBwb3J0IG9uIEFJWC4KLQotLSBJc3N1ZSAjOTQxMzQ2OiBGaXggYnJva2VuIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkIG9uIEFJWC4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDcwOTogQWRkIHVwZGF0ZWQgQUlYIG5vdGVzIGluIE1pc2MvUkVBRE1FLkFJWC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMy1GZWItMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzExMTM0OiBBZGQgbWlzc2luZyBmaWVsZHMgdG8gdHlwZXNsb3RzLmguCi0KLS0gSXNzdWUgIzExMTM1OiBSZW1vdmUgcmVkdW5kYW50IGRvYyBmaWVsZCBmcm9tIFB5VHlwZV9TcGVjLgotCi0tIElzc3VlICMxMTA2NzogQWRkIFB5VHlwZV9HZXRGbGFncywgdG8gc3VwcG9ydCBQeVVuaWNvZGVfQ2hlY2sgaW4gdGhlIGxpbWl0ZWQKLSAgQUJJLgotCi0tIElzc3VlICMxMTExODogRml4IGJvZ3VzIGV4cG9ydCBvZiBOb25lIGluIHB5dGhvbjMuZGxsLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzExMTE2OiBhbnkgZXJyb3IgZHVyaW5nIGFkZGl0aW9uIG9mIGEgbWVzc2FnZSB0byBhIG1haWxib3ggbm93IGNhdXNlcyBhCi0gIHJvbGxiYWNrLCBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIG1haWxib3ggcGFydGlhbGx5IG1vZGlmaWVkLgotCi0tIElzc3VlICMxMTEzMjogRml4IHBhc3Npbmcgb2YgIm9wdGltaXplIiBwYXJhbWV0ZXIgd2hlbiByZWN1cnNpbmcgaW4KLSAgY29tcGlsZWFsbC5jb21waWxlX2RpcigpLgotCi0tIElzc3VlICMxMTExMDogRml4IGEgcG90ZW50aWFsIGRlY3JlZiBvZiBhIE5VTEwgaW4gc3FsaXRlMy4KLQotLSBJc3N1ZSAjODI3NTogRml4IHBhc3Npbmcgb2YgY2FsbGJhY2sgYXJndW1lbnRzIHdpdGggY3R5cGVzIHVuZGVyIFdpbjY0LiAgUGF0Y2gKLSAgYnkgU3RhbiBNaWhhaS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzExMDc5OiBUaGUgL0FwcGxpY2F0aW9ucy9QeXRob24geC54IGZvbGRlciBjcmVhdGVkIGJ5IHRoZSBNYWMgT1MgWAotICBpbnN0YWxsZXJzIG5vdyBpbmNsdWRlcyBhIGxpbmsgdG8gdGhlIGluc3RhbGxlZCBkb2N1bWVudGF0aW9uIGFuZCBubyBsb25nZXIKLSAgaW5jbHVkZXMgYW4gRXh0cmFzIGRpcmVjdG9yeS4gIFRoZSBUb29scyBkaXJlY3RvcnkgaXMgbm93IGluc3RhbGxlZCBpbiB0aGUKLSAgZnJhbWV3b3JrIHVuZGVyIHNoYXJlL2RvYy4KLQotLSBJc3N1ZSAjMTExMjE6IEZpeCBidWlsZGluZyB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEwOTcxOiB0ZXN0X3ppcGltcG9ydF9zdXBwb3J0IGlzIG9uY2UgYWdhaW4gY29tcGF0aWJsZSB3aXRoIHRoZSByZWZsZWFrCi0gIGh1bnRlciBmZWF0dXJlIG9mIHRlc3QucmVncnRlc3QuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMzAtSmFuLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDQ1MTogbWVtb3J5dmlldyBvYmplY3RzIGNvdWxkIGFsbG93IHRvIG11dGF0ZSBhIHJlYWRhYmxlIGJ1ZmZlci4KLSAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM5MTI0OiBtYWlsYm94IG5vdyBhY2NlcHRzIGJpbmFyeSBpbnB1dCBhbmQgcmVhZHMgYW5kIHdyaXRlcyBtYWlsYm94Ci0gIGZpbGVzIGluIGJpbmFyeSBtb2RlLCB1c2luZyB0aGUgZW1haWwgcGFja2FnZSdzIGJpbmFyeSBzdXBwb3J0IHRvIHBhcnNlCi0gIGFyYml0cmFyeSBlbWFpbCBtZXNzYWdlcy4gIFN0cmluZ0lPIGFuZCB0ZXh0IGZpbGUgaW5wdXQgaXMgZGVwcmVjYXRlZCwKLSAgYW5kIHN0cmluZyBpbnB1dCBmYWlscyBlYXJseSBpZiBub24tQVNDSUkgY2hhcmFjdGVycyBhcmUgdXNlZCwgd2hlcmUKLSAgcHJldmlvdXNseSBpdCB3b3VsZCBmYWlsIHdoZW4gdGhlIGVtYWlsIHdhcyBwcm9jZXNzZWQgaW4gYSBsYXRlciBzdGVwLgotCi0tIElzc3VlICMxMDg0NTogTWl0aWdhdGUgdGhlIGluY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHRoZSBtdWx0aXByb2Nlc3NpbmcKLSAgbW9kdWxlIG9uIFdpbmRvd3MgYW5kIHRoZSB1c2Ugb2YgcGFja2FnZSwgemlwZmlsZSBvciBkaXJlY3RvcnkgZXhlY3V0aW9uCi0gIGJ5IHNwZWNpYWwgY2FzaW5nIG1haW4gbW9kdWxlcyB0aGF0IGFjdHVhbGx5ICphcmUqIGNhbGxlZCBfX21haW5fXy5weS4KLQotLSBJc3N1ZSAjMTEwNDU6IFByb3RlY3QgbG9nZ2luZyBjYWxsIGFnYWluc3QgTm9uZSBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTEwNTI6IENvcnJlY3QgSURMRSBtZW51IGFjY2VsZXJhdG9ycyBvbiBNYWMgT1MgWCBmb3IgU2F2ZQotICBjb21tYW5kcy4KLQotLSBJc3N1ZSAjMTEwNTM6IEZpeCBJRExFICJTeW50YXggRXJyb3IiIHdpbmRvd3MgdG8gYmVoYXZlIGFzIGluIDIueCwKLSAgcHJldmVudGluZyBhIGNvbmZ1c2luZyBodW5nIGFwcGVhcmFuY2Ugb24gT1MgWCB3aXRoIHRoZSB3aW5kb3dzCi0gIG9ic2N1cmVkLgotCi0tIElzc3VlICMxMDk0MDogV29ya2Fyb3VuZCBhbiBJRExFIGhhbmcgb24gTWFjIE9TIFggMTAuNiB3aGVuIHVzaW5nIHRoZQotICBtZW51IGFjY2VsZXJhdG9ycyBmb3IgT3BlbiBNb2R1bGUsIEdvIHRvIExpbmUsIGFuZCBOZXcgSW5kZW50IFdpZHRoLgotICBUaGUgYWNjZWxlcmF0b3JzIHN0aWxsIHdvcmsgYnV0IG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIG1lbnUgaXRlbXMuCi0KLS0gSXNzdWUgIzEwOTg5OiBGaXggYSBjcmFzaCBvbiBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhOb25lLCBUcnVlKS4KLQotLSBJc3N1ZSAjMTEwMjA6IENvbW1hbmQtbGluZSBweWNsYnIgd2FzIGJyb2tlbiBiZWNhdXNlIG9mIG1pc3NpbmcgMi10by0zCi0gIGNvbnZlcnNpb24uCi0KLS0gSXNzdWUgIzExMDE5OiBGaXhlZCBCeXRlc0dlbmVyYXRvciBzbyB0aGF0IGl0IGNvcnJlY3RseSBoYW5kbGVzIGEgTWVzc2FnZQotICB3aXRoIGEgTm9uZSBib2R5LgotCi0tIElzc3VlICMxMTAxNDogTWFrZSAnZmlsdGVyJyBhcmd1bWVudCBpbiB0YXJmaWxlLlRhcmZpbGUuYWRkKCkgaW50byBhCi0gIGtleXdvcmQtb25seSBhcmd1bWVudC4gIFRoZSBwcmVjZWRpbmcgcG9zaXRpb25hbCBhcmd1bWVudCB3YXMgZGVwcmVjYXRlZCwKLSAgc28gaXQgbWFkZSBubyBzZW5zZSB0byBhZGQgZmlsdGVyIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTEwMDQ6IFJlcGFpcmVkIGVkZ2UgY2FzZSBpbiBkZXF1ZS5jb3VudCgpLgotCi0tIElzc3VlICMxMDk3NDogSURMRSBubyBsb25nZXIgY3Jhc2hlcyBpZiBpdHMgcmVjZW50IGZpbGVzIGxpc3QgaW5jbHVkZXMgZmlsZXMKLSAgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGVpciBwYXRoIG5hbWVzLgotCi0tIEhhdmUgaGFzaGxpYi5hbGdvcml0aG1zX2F2YWlsYWJsZSBhbmQgaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQgYm90aAotICByZXR1cm4gc2V0cyBpbnN0ZWFkIG9mIG9uZSByZXR1cm5pbmcgYSB0dXBsZSBhbmQgdGhlIG90aGVyIGEgZnJvemVuc2V0LgotCi0tIElzc3VlICMxMDk4NzogRml4IHRoZSByZWN1cnNpb24gbGltaXQgaGFuZGxpbmcgaW4gdGhlIF9waWNrbGUgbW9kdWxlLgotCi0tIElzc3VlICMxMDk4MzogRml4IHNldmVyYWwgYnVncyBtYWtpbmcgdHVubmVsIHJlcXVlc3RzIGluIGh0dHAuY2xpZW50LgotCi0tIElzc3VlICMxMDk1NTogemlwaW1wb3J0IHVzZXMgQVNDSUkgZW5jb2RpbmcgaW5zdGVhZCBvZiBjcDQzNyB0byBkZWNvZGUKLSAgZmlsZW5hbWVzLCBhdCBib290c3RyYXAsIGlmIHRoZSBjb2RlYyByZWdpc3RyeSBpcyBub3QgcmVhZHkgeWV0LiBJdCBpcyBzdGlsbAotICBwb3NzaWJsZSB0byBoYXZlIG5vbi1BU0NJSSBmaWxlbmFtZXMgdXNpbmcgdGhlIFVuaWNvZGUgZmxhZyAoVVRGLTggZW5jb2RpbmcpCi0gIGZvciBhbGwgZmlsZSBlbnRyaWVzIGluIHRoZSBaSVAgZmlsZS4KLQotLSBJc3N1ZSAjMTA5NDk6IEltcHJvdmVkIHJvYnVzdG5lc3Mgb2Ygcm90YXRpbmcgZmlsZSBoYW5kbGVycy4KLQotLSBJc3N1ZSAjMTA5NTU6IEZpeCBhIHBvdGVudGlhbCBjcmFzaCB3aGVuIHRyeWluZyB0byBtbWFwKCkgYSBmaWxlIHBhc3QgaXRzCi0gIGxlbmd0aC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzEwODk4OiBBbGxvdyBjb21waWxpbmcgdGhlIHBvc2l4IG1vZHVsZSB3aGVuIHRoZSBDIGxpYnJhcnkgZGVmaW5lcwotICBhIHN5bWJvbCBuYW1lZCBGU1RBVC4KLQotLSBJc3N1ZSAjMTA5ODA6IHRoZSBIVFRQIHNlcnZlciBub3cgZW5jb2RlcyBoZWFkZXJzIHdpdGggaXNvLTg4NTktMSAobGF0aW4xKQotICBlbmNvZGluZy4gIFRoaXMgaXMgdGhlIHByZWZlcnJlZCBlbmNvZGluZyBvZiBQRVAgMzMzMyBhbmQgdGhlIGJhc2UgZW5jb2RpbmcKLSAgb2YgSFRUUCAxLjEuCi0KLS0gVG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiBIVFRQIHNlcnZlciwgdGhlIEhUVFAgY2xpZW50IGxpYnJhcnkgbm93IGFsc28KLSAgZW5jb2RlcyBoZWFkZXJzIHdpdGggaXNvLTg4NTktMSAobGF0aW4xKSBlbmNvZGluZy4gIEl0IHdhcyBhbHJlYWR5IGRvaW5nCi0gIHRoYXQgZm9yIGluY29taW5nIGhlYWRlcnMgd2hpY2ggbWFrZXMgdGhpcyBiZWhhdmlvdXIgbm93IGNvbnNpc3RlbnQgaW4KLSAgYm90aCBpbmNvbWluZyBhbmQgb3V0Z29pbmcgZGlyZWN0aW9uLgotCi0tIElzc3VlICM5NTA5OiBhcmdwYXJzZSBub3cgcHJvcGVybHkgaGFuZGxlcyBJT0Vycm9ycyByYWlzZWQgYnkKLSAgYXJncGFyc2UuRmlsZVR5cGUuCi0KLS0gSXNzdWUgIzEwOTYxOiBUaGUgbmV3IHB5ZG9jIHNlcnZlciBub3cgYmV0dGVyIGhhbmRsZXMgZXhjZXB0aW9ucyByYWlzZWQKLSAgZHVyaW5nIHJlcXVlc3QgaGFuZGxpbmcuCi0KLS0gSXNzdWUgIzEwNjgwOiBGaXggbXV0dWFsbHkgZXhjbHVzaXZlIGFyZ3VtZW50cyBmb3IgYXJndW1lbnQgZ3JvdXBzIGluCi0gIGFyZ3BhcnNlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTEwNTQ6IEFsbG93IE1hYyBPUyBYIGluc3RhbGxlciBidWlsZHMgdG8gYWdhaW4gd29yayBvbiAxMC41IHdpdGgKLSAgdGhlIHN5c3RlbS1wcm92aWRlZCBQeXRob24uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIFJlbGVhc2UgQ2FuZGlkYXRlIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE2LUphbi0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA4ODk6IHJhbmdlIGluZGV4aW5nIGFuZCBzbGljaW5nIG5vdyB3b3JrcyBjb3JyZWN0bHkgb24gcmFuZ2VzIHdpdGgKLSAgYSBsZW5ndGggdGhhdCBleGNlZWRzIHN5cy5tYXhzaXplLgotCi0tIElzc3VlICMxMDg5MjogRG9uJ3Qgc2VnZmF1bHQgd2hlbiB0cnlpbmcgdG8gZGVsZXRlIF9fYWJzdHJhY3RtZXRob2RzX18gZnJvbSBhCi0gIGNsYXNzLgotCi0tIElzc3VlICM4MDIwOiBBdm9pZCBhIGNyYXNoIHdoZXJlIHRoZSBzbWFsbCBvYmplY3RzIGFsbG9jYXRvciB3b3VsZCByZWFkCi0gIG5vbi1QeXRob24gbWFuYWdlZCBtZW1vcnkgd2hpbGUgaXQgaXMgYmVpbmcgbW9kaWZpZWQgYnkgYW5vdGhlciB0aHJlYWQuICBQYXRjaAotICBieSBNYXR0IEJhbmR5LgotCi0tIElzc3VlICMxMDg0MTogT24gV2luZG93cywgc2V0IHRoZSBiaW5hcnkgbW9kZSBvbiBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGFsbAotICBpby5GaWxlSU8gb2JqZWN0cyAodG8gbm90IHRyYW5zbGF0ZSBuZXdsaW5lcywgXHJcbiA8PT4gXG4pLiAgVGhlIFB5dGhvbiBwYXJzZXIKLSAgdHJhbnNsYXRlcyBuZXdsaW5lcyAoXHJcbiA9PiBcbikuCi0KLS0gUmVtb3ZlIGJ1ZmZlciBBUEkgZnJvbSBzdGFibGUgQUJJIGZvciBub3csIHNlZSAjMTAxODEuCi0KLS0gSXNzdWUgIzg2NTE6IFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyByYWlzZSBhbiBPdmVyZmxvd0Vycm9yIGlmIHRoZSBmaWxlCi0gIGRvZXNuJ3QgaGF2ZSBQWV9TU0laRV9UX0NMRUFOIGRlZmluZSBhbmQgdGhlIHNpemUgZG9lc24ndCBmaXQgaW4gYW4gaW50Ci0gIChsZW5ndGggYmlnZ2VyIHRoYW4gMl4zMS0xIGJ5dGVzKS4KLQotLSBJc3N1ZSAjOTAxNSwgIzk2MTE6IEZpbGVJTy5yZWFkaW50bygpLCBGaWxlSU8ud3JpdGUoKSwgb3Mud3JpdGUoKSBhbmQKLSAgc3RkcHJpbnRlci53cml0ZSgpIGNsYW1wIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM4Mjc4OiBPbiBXaW5kb3dzIGFuZCB3aXRoIGEgTlRGUyBmaWxlc3lzdGVtLCBvcy5zdGF0KCkgYW5kIG9zLnV0aW1lKCkKLSAgY2FuIG5vdyBoYW5kbGUgZGF0ZXMgYWZ0ZXIgMjAzOC4KLQotLSBJc3N1ZSAjMTA3ODA6IFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKCkgYW5kCi0gIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKCkgZGVjb2RlIHRoZSBmaWxlbmFtZSBmcm9tIHRoZQotICBmaWxlc3lzdGVtIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCi0KLS0gSXNzdWUgIzEwNzc5OiBQeUVycl9XYXJuRXhwbGljaXQoKSBkZWNvZGVzIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCi0KLS0gQWRkIHN5cy5mbGFncyBhdHRyaWJ1dGUgZm9yIHRoZSBuZXcgLXEgY29tbWFuZC1saW5lIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTE1MDY6IFRyeWluZyB0byBhc3NpZ24gdG8gYSBieXRlcyBsaXRlcmFsIHNob3VsZCByZXN1bHQgaW4gYQotICBTeW50YXhFcnJvci4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMDkxNjogbW1hcCBzaG91bGQgbm90IHNlZ2ZhdWx0IHdoZW4gYSBmaWxlIGlzIG1hcHBlZCB1c2luZyAwIGFzIGxlbmd0aAotICBhbmQgYSBub24temVybyBvZmZzZXQsIGFuZCBhbiBhdHRlbXB0IHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9mIGZpbGUgaXMgbWFkZQotICAoSW5kZXhFcnJvciBpcyByYWlzZWQgaW5zdGVhZCkuICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTAxNTQsICMxMDA5MDogY2hhbmdlIHRoZSBub3JtYWxpemF0aW9uIG9mIFVURi04IHRvICJVVEYtOCIgaW5zdGVhZAotICBvZiAiVVRGOCIgaW4gdGhlIGxvY2FsZSBtb2R1bGUgYXMgdGhlIGxhdHRlciBpcyBub3Qgc3VwcG9ydGVkIE1hY09TWCBhbmQgT3BlbkJTRC4KLQotLSBJc3N1ZSAjMTA2ODQ6IHNodXRpbC5tb3ZlIHVzZWQgdG8gZGVsZXRlIGEgZm9sZGVyIG9uIGNhc2UgaW5zZW5zaXRpdmUKLSAgZmlsZXN5c3RlbXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lIHdoZXJlIHRoZSBzYW1lIGV4Y2VwdAotICBmb3IgdGhlIGNhc2UuCi0KLS0gSXNzdWUgIzEwOTA3OiBXYXJuIE9TIFggMTAuNiBJRExFIHVzZXJzIHRvIHVzZSBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LCByYXRoZXIKLSAgdGhhbiB0aGUgY3VycmVudGx5IHByb2JsZW1hdGljIEFwcGxlLXN1cHBsaWVkIG9uZSwgd2hlbiBydW5uaW5nIHdpdGggdGhlCi0gIDY0LS8zMi1iaXQgaW5zdGFsbGVyIHZhcmlhbnQuCi0KLS0gSXNzdWUgIzQ5NTM6IGNnaS5GaWVsZFN0b3JhZ2UgYW5kIGNnaS5wYXJzZSgpIHBhcnNlIHRoZSByZXF1ZXN0IGFzIGJ5dGVzLCBub3QKLSAgYXMgdW5pY29kZSwgYW5kIGFjY2VwdCBiaW5hcnkgZmlsZXMuIEFkZCBlbmNvZGluZyBhbmQgZXJyb3JzIGF0dHJpYnV0ZXMgdG8KLSAgY2dpLkZpZWxkU3RvcmFnZS4gUGF0Y2ggd3JpdHRlbiBieSBQaWVycmUgUXVlbnRlbCAod2l0aCBtYW55IGlucHV0cyBieSBHbGVubgotICBMaW5kZXJtYW4pLgotCi0tIEFkZCBlbmNvZGluZyBhbmQgZXJyb3JzIGFyZ3VtZW50cyB0byB1cmxsaWIucGFyc2VfcXMoKSBhbmQgdXJsbGliLnBhcnNlX3FzbCgpLgotCi0tIElzc3VlICMxMDg5OTogTm8gZnVuY3Rpb24gdHlwZSBhbm5vdGF0aW9ucyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFJlbW92ZWQKLSAgZnVuY3Rpb24gdHlwZSBhbm5vdGF0aW9ucyBmcm9tIF9weWlvLnB5LgotCi0tIElzc3VlICMxMDg3NTogVXBkYXRlIFJlZ3VsYXIgRXhwcmVzc2lvbiBIT1dUTzsgcGF0Y2ggYnkgJ1NpbGVudEdob3N0Jy4KLQotLSBJc3N1ZSAjMTA4NzI6IFRoZSByZXByKCkgb2YgVGV4dElPV3JhcHBlciBvYmplY3RzIG5vdyBpbmNsdWRlcyB0aGUgbW9kZQotICBpZiBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzEwODY5OiBGaXhlZCBidWcgd2hlcmUgYXN0LmluY3JlbWVudF9saW5lbm8gbW9kaWZpZWQgdGhlIHJvb3Qgbm9kZQotICB0d2ljZS4KLQotLSBJc3N1ZSAjNTg3MTogZW1haWwuaGVhZGVyLkhlYWRlci5lbmNvZGUgbm93IHJhaXNlcyBhbiBlcnJvciBpZiBhbnkKLSAgY29udGludWF0aW9uIGxpbmUgaW4gdGhlIGZvcm1hdHRlZCB2YWx1ZSBoYXMgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBhbmQgbG9va3MKLSAgbGlrZSBhIGhlYWRlci4gIFNpbmNlIEdlbmVyYXRvciB1c2VzIEhlYWRlciB0byBmb3JtYXQgYWxsIGhlYWRlcnMsIHRoaXMgY2hlY2sKLSAgaXMgbWFkZSBmb3IgYWxsIGhlYWRlcnMgaW4gYW55IHNlcmlhbGl6ZWQgbWVzc2FnZSBhdCBzZXJpYWxpemF0aW9uIHRpbWUuICBUaGlzCi0gIHByb3ZpZGVzIHByb3RlY3Rpb24gYWdhaW5zdCBoZWFkZXIgaW5qZWN0aW9uIGF0dGFja3MuCi0KLS0gSXNzdWUgIzEwODU5OiBNYWtlIGBgY29udGV4dGxpYi5HZW5lcmF0b3JDb250ZXh0TWFuYWdlcmBgIG9mZmljaWFsbHkKLSAgcHJpdmF0ZSBieSByZW5hbWluZyBpdCB0byBgYF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlcmBgLgotCi0tIElzc3VlICMxMDA0MjogRml4ZWQgdGhlIHRvdGFsX29yZGVyaW5nIGRlY29yYXRvciB0byBoYW5kbGUgY3Jvc3MtdHlwZQotICBjb21wYXJpc29ucyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgotCi0tIElzc3VlICMxMDY4NjogdGhlIGVtYWlsIHBhY2thZ2Ugbm93IDpyZmM6YDIwNDdgXCAtZW5jb2RlcyBoZWFkZXJzIHdpdGgKLSAgbm9uLUFTQ0lJIGJ5dGVzIChwYXJzZWQgYnkgYSBCeXRlc1BhcnNlcikgd2hlbiBkb2luZyBjb252ZXJzaW9uIHRvIDdiaXQtY2xlYW4KLSAgcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtIHdpdGggP3MuCi0KLS0gZW1haWwuaGVhZGVyLkhlYWRlciB3YXMgaW5jb3JyZWN0bHkgZW5jb2RpbmcgZm9sZGluZyB3aGl0ZXNwYWNlIHdoZW4KLSAgcmZjMjA0Ny1lbmNvZGluZyBoZWFkZXIgdmFsdWVzIHdpdGggZW1iZWRkZWQgbmV3bGluZXMsIGxlYXZpbmcgdGhlbSB3aXRob3V0Ci0gIGZvbGRpbmcgd2hpdGVzcGFjZS4gIEl0IG5vdyB1c2VzIHRoZSBjb250aW51YXRpb25fd3MsIGFzIGl0IGRvZXMgZm9yCi0gIGNvbnRpbnVhdGlvbiBsaW5lcyB0aGF0IGl0IGNyZWF0ZXMgaXRzZWxmLgotCi0tIElzc3VlICMxNzc3NDEyLCAjMTA4Mjc6IENoYW5nZWQgdGhlIHJ1bGVzIGZvciAyLWRpZ2l0IHllYXJzLiBUaGUKLSAgdGltZS5hc2N0aW1lKCksIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5zdHJmdGltZSgpIGZ1bmN0aW9ucyB3aWxsIG5vdyBmb3JtYXQKLSAgYW55IHllYXIgd2hlbiBgYHRpbWUuYWNjZXB0MmR5ZWFyYGAgaXMgRmFsc2UgYW5kIHdpbGwgYWNjZXB0IHllYXJzID49IDEwMDAKLSAgb3RoZXJ3aXNlLiBgYHRpbWUubWt0aW1lYGAgYW5kIGBgdGltZS5zdHJmdGltZWBgIG5vdyBhY2NlcHQgZnVsbCByYW5nZQotICBzdXBwb3J0ZWQgYnkgdGhlIE9TLiBXaXRoIFZpc3VhbCBTdHVkaW8gb3Igb24gU29sYXJpcywgdGhlIHllYXIgaXMgbGltaXRlZCB0bwotICB0aGUgcmFuZ2UgWzE7IDk5OTldLiBDb252ZXJzaW9uIG9mIDItZGlnaXQgeWVhcnMgdG8gNC1kaWdpdCBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICM3ODU4OiBSYWlzZSBhbiBlcnJvciBwcm9wZXJseSB3aGVuIG9zLnV0aW1lKCkgZmFpbHMgdW5kZXIgV2luZG93cwotICBvbiBhbiBleGlzdGluZyBmaWxlLgotCi0tIElzc3VlICMzODM5OiB3c2dpcmVmIHNob3VsZCBub3Qgb3ZlcnJpZGUgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgc2V0IGJ5Ci0gIHRoZSBhcHBsaWNhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgQ2xvdmlzIEZhYnJpY2lvLgotCi0tIElzc3VlICMxMDQ5MjogYmRiLkJkYi5ydW4oKSBvbmx5IHRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb2RlLCBub3QgdGhlCi0gIGNvbXBpbGF0aW9uIChpZiB0aGUgaW5wdXQgaXMgYSBzdHJpbmcpLgotCi0tIElzc3VlICM3OTk1OiBXaGVuIGNhbGxpbmcgYWNjZXB0KCkgb24gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQsIHRoZSByZXR1cm5lZAotICBzb2NrZXQgaXMgbm93IGFsd2F5cyBibG9ja2luZywgcmVnYXJkbGVzcyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KLQotLSBJc3N1ZSAjMTA3NTY6IGF0ZXhpdCBub3JtYWxpemVzIHRoZSBleGNlcHRpb24gYmVmb3JlIGRpc3BsYXlpbmcgaXQuIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTA3OTA6IGVtYWlsLmhlYWRlci5IZWFkZXIuYXBwZW5kJ3MgY2hhcnNldCBsb2dpYyBub3cgd29ya3MgY29ycmVjdGx5Ci0gIGZvciBjaGFyc2V0cyB3aG9zZSBvdXRwdXQgY29kZWMgaXMgZGlmZmVyZW50IGZyb20gaXRzIGlucHV0IGNvZGVjLgotCi0tIElzc3VlICMxMDgxOTogU29ja2V0SU8ubmFtZSBwcm9wZXJ0eSByZXR1cm5zIC0xIHdoZW4gaXRzIGNsb3NlZCwgaW5zdGVhZCBvZgotICByYWlzaW5nIGEgVmFsdWVFcnJvciwgdG8gZml4IHJlcHIoKS4KLQotLSBJc3N1ZSAjODY1MDogemxpYi5jb21wcmVzcygpIGFuZCB6bGliLmRlY29tcHJlc3MoKSByYWlzZSBhbiBPdmVyZmxvd0Vycm9yIGlmCi0gIHRoZSBpbnB1dCBidWZmZXIgbGVuZ3RoIGRvZXNuJ3QgZml0IGludG8gYW4gdW5zaWduZWQgaW50IChsZW5ndGggYmlnZ2VyIHRoYW4KLSAgMl4zMi0xIGJ5dGVzKS4KLQotLSBJc3N1ZSAjNjY0MzogUmVpbml0aWFsaXplIGxvY2tzIGhlbGQgd2l0aGluIHRoZSB0aHJlYWRpbmcgbW9kdWxlIGFmdGVyIGZvcmsgdG8KLSAgYXZvaWQgYSBwb3RlbnRpYWwgcmFyZSBkZWFkbG9jayBvciBjcmFzaCBvbiBzb21lIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTA4MDYsIGlzc3VlICM5OTA1OiBGaXggc3VicHJvY2VzcyBwaXBlcyB3aGVuIHNvbWUgb2YgdGhlIHN0YW5kYXJkIGZpbGUKLSAgZGVzY3JpcHRvcnMgKDAsIDEsIDIpIGFyZSBjbG9zZWQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzCi0gIExhZ2Vyd2FsbC4KLQotLSBgdW5pdHRlc3QuVGVzdENhc2VgIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCBhIG1ldGhvZCBuYW1lOyBmb3Igc2ltcGxlcgotICBleHBsb3JhdGlvbiBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMTA3OTg6IFJlamVjdCBzdXBwb3J0aW5nIGNvbmN1cnJlbnQuZnV0dXJlcyBpZiB0aGUgc3lzdGVtIGhhcyB0b28KLSAgZmV3IFBPU0lYIHNlbWFwaG9yZXMuCi0KLS0gSXNzdWUgIzEwODA3OiBSZW1vdmUgYmFzZTY0LCBiejIsIGhleCwgcXVvcHJpLCByb3QxMywgdXUgYW5kIHpsaWIgY29kZWNzIGZyb20KLSAgdGhlIGNvZGVjIGFsaWFzZXMuIFRoZXkgYXJlIHN0aWxsIGFjY2Vzc2libGUgdmlhIGNvZGVjcy5sb29rdXAoKS4KLQotLSBJc3N1ZSAjMTA4MDE6IEluIHppcGZpbGUsIHN1cHBvcnQgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIGhlYWRlciBhbmQgdGhlCi0gIGZpbGVuYW1lcy4KLQotLSBJc3N1ZSAjNjI4NTogSURMRSBubyBsb25nZXIgY3Jhc2hlcyBvbiBtaXNzaW5nIGhlbHAgZmlsZTsgcGF0Y2ggYnkgU2NvdHQKLSAgRGF2aWQgRGFuaWVscy4KLQotLSBGaXggY29sbGVjdGlvbnMuT3JkZXJlZERpY3Quc2V0ZGVmYXVsdCgpIHNvIHRoYXQgaXQgd29ya3MgaW4gc3ViY2xhc3NlcyB0aGF0Ci0gIGRlZmluZSBfX21pc3NpbmdfXygpLgotCi0tIElzc3VlICMxMDc4NjogdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIgZGVmYXVsdCBzdHJlYW0gbm8gbG9uZ2VyIGJvdW5kIGF0IGltcG9ydAotICB0aW1lLiBgc3lzLnN0ZGVycmAgbm93IGxvb2tlZCB1cCBhdCBpbnN0YW50aWF0aW9uIHRpbWUuICBGaXggY29udHJpYnV0ZWQgYnkKLSAgTWFyayBSb2RkeS4KLQotLSBJc3N1ZSAjMTA3NTM6IENoYXJhY3RlcnMgJzsnLCAnPScgYW5kICcsJyBpbiB0aGUgUEFUSF9JTkZPIGVudmlyb25tZW50IHZhcmlhYmxlCi0gIHdvbid0IGJlIHF1b3RlZCB3aGVuIHRoZSBVUkkgaXMgY29uc3RydWN0ZWQgYnkgdGhlIHdzZ2lyZWYudXRpbCdzIHJlcXVlc3RfdXJpCi0gIG1ldGhvZC4gQWNjb3JkaW5nIHRvIFJGQyAzOTg2LCB0aGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBhIHBhcnQgb2YgcGFyYW1zIGluCi0gIFBBVEggY29tcG9uZW50IG9mIFVSSSBhbmQgbmVlZCBub3QgYmUgcXVvdGVkLgotCi0tIElzc3VlICMxMDczODogRml4IHdlYmJyb3dzZXIuT3BlcmEucmFpc2Vfb3B0cy4KLQotLSBJc3N1ZSAjOTgyNDogU2ltcGxlQ29va2llIG5vdyBlbmNvZGVzICwgYW5kIDsgaW4gdmFsdWVzIHRvIGNhdGVyIHRvIGhvdwotICBicm93c2VycyBhY3R1YWxseSBwYXJzZSBjb29raWVzLgotCi0tIElzc3VlICM5MzMzOiBvcy5zeW1saW5rIG5vdyBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiB1c2VyIHByaXZpbGVnZXMuICBUaGUKLSAgZnVuY3Rpb24gbm93IHJhaXNlcyBPU0Vycm9yIG9uIFdpbmRvd3MgPj02LjAgd2hlbiB0aGUgdXNlciBpcyB1bmFibGUgdG8gY3JlYXRlCi0gIHN5bWJvbGljIGxpbmtzLiBYUCBhbmQgMjAwMyBzdGlsbCByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLgotCi0tIElzc3VlICMxMDc4Mzogc3RydWN0LnBhY2soKSBubyBsb25nZXIgaW1wbGljaXRseSBlbmNvZGVzIHVuaWNvZGUgdG8gVVRGLTguCi0KLS0gSXNzdWUgIzEwNzMwOiBBZGQgU1ZHIG1pbWUgdHlwZXMgdG8gbWltZXR5cGVzIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA3Njg6IE1ha2UgdGhlIFRraW50ZXIgU2Nyb2xsZWRUZXh0IHdpZGdldCB3b3JrIGFnYWluLgotCi0tIElzc3VlICMxMDc3NzogRml4ICJkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIiBidWcgaW4KLSAgRWxlbWVudFRyZWUgcmVnaXN0ZXJfbmFtZXNwYWNlKCkuCi0KLS0gSXNzdWUgIzEwNjI2OiB0ZXN0X2xvZ2dpbmcgbm93IHByZXNlcnZlcyBsb2dnZXIgZGlzYWJsZWQgc3RhdGVzLgotCi0tIElzc3VlICMxMDc3NDogdGVzdF9sb2dnaW5nIG5vdyByZW1vdmVzIHRlbXAgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGVzdHMuCi0KLS0gSXNzdWUgIzUyNTgvIzEwNjQyOiBpZiBzaXRlLnB5IGVuY291bnRlcnMgYSAucHRoIGZpbGUgdGhhdCBnZW5lcmF0ZXMgYW4gZXJyb3IsCi0gIGl0IG5vdyBwcmludHMgdGhlIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRyYWNlYmFjayB0byBzdGRlcnIgYW5kIHNraXBzCi0gIHRoZSByZXN0IG9mIHRoYXQgaW5kaXZpZHVhbCBmaWxlLCBpbnN0ZWFkIG9mIHN0b3BwaW5nIHByb2Nlc3NpbmcgZW50aXJlbHkuCi0KLS0gSXNzdWUgIzEwNzYzOiBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgY2xvc2VzIHN0ZG91dCBhbmQgc3RkZXJyIGlmIGJvdGggYXJlCi0gIHBpcGVzIChidWcgc3BlY2lmaWMgdG8gV2luZG93cykuCi0KLS0gSXNzdWUgIzE2OTM1NDY6IGZpeCBlbWFpbC5tZXNzYWdlIFJGQyAyMjMxIHBhcmFtZXRlciBlbmNvZGluZyB0byBiZSBpbiBiZXR0ZXIKLSAgY29tcGxpYW5jZSAobm8gInMgYXJvdW5kIGVuY29kZWQgdmFsdWVzKS4KLQotLSBJbXByb3ZlZCB0aGUgZGlmZiBtZXNzYWdlIGluIHRoZSB1bml0dGVzdCBtb2R1bGUncyBhc3NlcnRDb3VudEVxdWFsKCkuCi0KLS0gSXNzdWUgIzExNTUzNjI6IGVtYWlsLnV0aWxzLnBhcnNlZGF0ZV90eiBub3cgaGFuZGxlcyBhIG1pc3Npbmcgc3BhY2UgYmVmb3JlCi0gIHRoZSAnLScgb2YgYSB0aW1lem9uZSBmaWVsZCBhcyB3ZWxsIGFzIGJlZm9yZSBhICcrJy4KLQotLSBJc3N1ZSAjNDg3MTogVGhlIHppcGZpbGUgbW9kdWxlIG5vdyBnaXZlcyBhIG1vcmUgdXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYKLSAgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSBhIHN0cmluZyB0byBzcGVjaWZ5IHRoZSBhcmNoaXZlIHBhc3N3b3JkLgotCi0tIElzc3VlICMxMDc1MDogVGhlIGBgcmF3YGAgYXR0cmlidXRlIG9mIGJ1ZmZlcmVkIElPIG9iamVjdHMgaXMgbm93IHJlYWQtb25seS4KLQotLSBEZXByZWNhdGVkIGFzc2VydERpY3RDb250YWluc1N1YnNldCgpIGluIHRoZSB1bml0dGVzdCBtb2R1bGUuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxMDkxMzogRGVwcmVjYXRlIG1pc2xlYWRpbmcgZnVuY3Rpb25zIFB5RXZhbF9BY3F1aXJlTG9jaygpIGFuZAotICBQeUV2YWxfUmVsZWFzZUxvY2soKS4gIFRoZSB0aHJlYWQtc3RhdGUgYXdhcmUgQVBJcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgotCi0tIElzc3VlICMxMDMzMzogUmVtb3ZlIGFuY2llbnQgR0MgQVBJLCB3aGljaCBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbgotICAyLjIuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMDg0MzogVXBkYXRlIHRoaXJkLXBhcnR5IGxpYnJhcnkgdmVyc2lvbnMgdXNlZCBpbiBPUyBYIDMyLWJpdAotICBpbnN0YWxsZXIgYnVpbGRzOiBiemlwMiAxLjAuNiwgcmVhZGxpbmUgNi4xLjIsIFNRTGl0ZSAzLjcuNCAod2l0aCBGVFMzL0ZUUzQKLSAgYW5kIFJUUkVFIGVuYWJsZWQpLCBhbmQgbmN1cnNlc3cgNS41ICh3aWRlLWNoYXIgc3VwcG9ydCBlbmFibGVkKS4KLQotLSBJc3N1ZSAjMTA4MjA6IEZpeCBPUyBYIGZyYW1ld29yayBpbnN0YWxscyB0byBzdXBwb3J0IHZlcnNpb24tc3BlY2lmaWMKLSAgc2NyaXB0cyAoIzEwNjc5KS4KLQotLSBJc3N1ZSAjNzcxNjogVW5kZXIgU29sYXJpcywgZG9uJ3QgYXNzdW1lIGV4aXN0ZW5jZSBvZiAvdXNyL3hwZzQvYmluL2dyZXAgaW4KLSAgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnV0IHVzZSAkR1JFUCBpbnN0ZWFkLiAgUGF0Y2ggYnkgRmFiaWFuIEdyb2ZmZW4uCi0KLS0gSXNzdWUgIzEwNDc1OiBEb24ndCBoYXJkY29kZSBjb21waWxlcnMgZm9yIExEU0hBUkVEL0xEQ1hYU0hBUkVEIG9uIE5ldEJTRAotICBhbmQgRHJhZ29uRmx5IEJTRC4gIFBhdGNoIGJ5IE5pY29sYXMgSm9seS4KLQotLSBJc3N1ZSAjMTA2Nzk6IFRoZSAiaWRsZSIsICJweWRvYyIgYW5kICIydG8zIiBzY3JpcHRzIGFyZSBub3cgaW5zdGFsbGVkIHdpdGgKLSAgYSB2ZXJzaW9uLXNwZWNpZmljIHN1ZmZpeCBvbiAibWFrZSBhbHRpbnN0YWxsIi4KLQotLSBJc3N1ZSAjMTA2NTU6IEZpeCB0aGUgYnVpbGQgb24gUG93ZXJQQyBvbiBMaW51eCB3aXRoIEdDQyB3aGVuIGJ1aWxkaW5nIHdpdGgKLSAgdGltZXN0YW1wIHByb2ZpbGluZyAoLS13aXRoLXRzYyk6IHRoZSBwcmVwcm9jZXNzb3IgdGVzdCBmb3IgdGhlIFBvd2VyUEMKLSAgc3VwcG9ydCBub3cgbG9va3MgZm9yICJfX3Bvd2VycGNfXyIgYXMgd2VsbCBhcyAiX19wcGNfXyI6IHRoZSBsYXR0ZXIgc2VlbXMgdG8KLSAgb25seSBiZSBwcmVzZW50IG9uIE9TIFg7IHRoZSBmb3JtZXIgaXMgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQy4KLQotLSBJc3N1ZSAjMTA5OTogRml4IHRoZSBidWlsZCBvbiBNYWNPU1ggd2hlbiBidWlsZGluZyBhIGZyYW1ld29yayB3aXRoIHB5ZGVidWcKLSAgdXNpbmcgR0NDIDQuMC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwODQzOiBJbnN0YWxsIHRoZSBUb29scyBkaXJlY3Rvcnkgb24gT1MgWCBpbiB0aGUgYXBwbGljYXRpb25zIEV4dHJhcwotICAoL0FwcGxpY2F0aW9ucy9QeXRob24gMy5uL0V4dHJhcy8pIHdoZXJlIHRoZSBEZW1vIGRpcmVjdG9yeSBoYWQgcHJldmlvdXMgYmVlbgotICBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzc5NjI6IFRoZSBEZW1vIGRpcmVjdG9yeSBpcyBnb25lLiAgTW9zdCBvZiB0aGUgb2xkIGFuZCB1bm1haW50YWluZWQKLSAgZGVtb3MgaGF2ZSBiZWVuIHJlbW92ZWQsIG90aGVycyBpbnRlZ3JhdGVkIGluIGRvY3VtZW50YXRpb24gb3IgYSBuZXcKLSAgVG9vbHMvZGVtbyBzdWJkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzEwNTAyOiBBZGRpdGlvbiBvZiB0aGUgdW5pdHRlc3RndWkgdG9vbC4gT3JpZ2luYWxseSBieSBTdGV2ZSBQdXJjZWxsLgotICBVcGRhdGVkIGZvciB0ZXN0IGRpc2NvdmVyeSBieSBNYXJrIFJvZGR5IGFuZCBQeXRob24gMyBjb21wYXRpYmlsaXR5IGJ5IEJyaWFuCi0gIEN1cnRpbi4KLQotVGVzdHMKLS0tLS0tCi0KLS0gRml4IHRlc3Rfc3RhcnRmaWxlIHRvIHdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlIGJlZm9yZSBmaW5pc2hpbmcuCi0KLS0gSXNzdWUgIzEwODIyOiBGaXggdGVzdF9wb3NpeDp0ZXN0X2dldGdyb3VwcyBmYWlsdXJlIHVuZGVyIFNvbGFyaXMuICBQYXRjaAotICBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBNYWtlIHRoZSAtLWNvdmVyYWdlIGZsYWcgd29yayBmb3IgdGVzdC5yZWdydGVzdC4KLQotLSBJc3N1ZSAjMTY3NzY5NDogUmVmYWN0b3IgYW5kIGltcHJvdmUgdGVzdF90aW1lb3V0LiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQmrDtnJuIExpbmRxdmlzdC4KLQotLSBJc3N1ZSAjNTQ4NTogQWRkIHRlc3RzIGZvciB0aGUgVXNlRm9yZWlnbkRURCBtZXRob2Qgb2YgZXhwYXQgcGFyc2VyIG9iamVjdHMuCi0gIFBhdGNoIGJ5IEplYW4tUGF1bCBDYWxkZXJvbmUgYW5kIFNhbmRybyBUb3NpLgotCi0tIElzc3VlICM2MjkzOiBIYXZlIHJlZ3J0ZXN0LnB5IGVjaG8gYmFjayBzeXMuZmxhZ3MuICBUaGlzIGlzIGRvbmUgYnkgZGVmYXVsdCBpbgotICB3aG9sZSBydW5zIGFuZCBlbmFibGVkIHNlbGVjdGl2ZWx5IHVzaW5nIGBgLS1oZWFkZXJgYCB3aGVuIHJ1bm5pbmcgYW4gZXhwbGljaXQKLSAgbGlzdCBvZiB0ZXN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEJldGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE5LURlYy0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjODg0NDogUmVndWxhciBhbmQgcmVjdXJzaXZlIGxvY2sgYWNxdWlzaXRpb25zIGNhbiBub3cgYmUgaW50ZXJydXB0ZWQKLSAgYnkgc2lnbmFscyBvbiBwbGF0Zm9ybXMgdXNpbmcgcHRocmVhZHMuICBQYXRjaCBieSBSZWlkIEtsZWNrbmVyLgotCi0tIElzc3VlICM0MjM2OiBQeU1vZHVsZV9DcmVhdGUyIG5vdyBjaGVja3MgdGhlIGltcG9ydCBtYWNoaW5lcnkgZGlyZWN0bHkKLSAgcmF0aGVyIHRoYW4gdGhlIFB5X0lzSW5pdGlhbGl6ZWQgZmxhZywgYXZvaWRpbmcgYSBGYXRhbCBQeXRob24KLSAgZXJyb3IgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4gYW4gaW1wb3J0IGlzIGRvbmUgaW4gX19kZWxfXy4KLQotLSBJc3N1ZSAjNTU4NzogYWRkIGEgcmVwciB0byBkaWN0X3Byb3h5IG9iamVjdHMuICBQYXRjaCBieSBEYXZpZCBTdGFuZWsgYW5kCi0gIERhbmllbCBVcmJhbi4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMzMjQzOiAgU3VwcG9ydCBpdGVyYWJsZSBib2RpZXMgaW4gaHR0cGxpYi4gUGF0Y2ggQ29udHJpYnV0aW9ucyBieQotICBYdWFuamkgTGkgYW5kIENocmlzIEF0TGVlLgotCi0tIElzc3VlICMxMDYxMTogU3lzdGVtRXhpdCBleGNlcHRpb24gd2lsbCBubyBsb25nZXIga2lsbCBhIHVuaXR0ZXN0IHJ1bi4KLQotLSBJc3N1ZSAjOTg1NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHNraXAgYSB0ZXN0IGluIGEgc2V0VXAsIHRlYXJEb3duIG9yIGNsZWFuCi0gIHVwIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMDU3MzogdXNlIGFjdHVhbC9leHBlY3RlZCBjb25zaXN0ZW50bHkgaW4gdW5pdHRlc3QgbWV0aG9kcy4KLSAgVGhlIG9yZGVyIG9mIHRoZSBhcmdzIG9mIGFzc2VydENvdW50RXF1YWwgaXMgYWxzbyBjaGFuZ2VkLgotCi0tIElzc3VlICM5Mjg2OiBlbWFpbC51dGlscy5wYXJzZWFkZHIgbm8gbG9uZ2VyIGNvbmNhdGVuYXRlcyBibGFuay1zZXBhcmF0ZWQKLSAgd29yZHMgaW4gdGhlIGxvY2FsIHBhcnQgb2YgZW1haWwgYWRkcmVzc2VzLCB0aGVyZWJ5IHByZXNlcnZpbmcgdGhlIGlucHV0LgotCi0tIElzc3VlICM2NzkxOiBMaW1pdCBoZWFkZXIgbGluZSBsZW5ndGggKHRvIDY1NTM1IGJ5dGVzKSBpbiBodHRwLmNsaWVudAotICBhbmQgaHR0cC5zZXJ2ZXIsIHRvIGF2b2lkIGRlbmlhbCBvZiBzZXJ2aWNlcyBmcm9tIHRoZSBvdGhlciBwYXJ0eS4KLQotLSBJc3N1ZSAjMTA0MDQ6IFVzZSBjdGwtYnV0dG9uLTEgb24gT1NYIGZvciB0aGUgY29udGV4dCBtZW51IGluIElkbGUuCi0KLS0gSXNzdWUgIzk5MDc6IEZpeCB0YWIgaGFuZGxpbmcgb24gT1NYIHdoZW4gdXNpbmcgZWRpdGxpbmUgYnkgY2FsbGluZwotICBybF9pbml0aWFsaXplIGZpcnN0LCB0aGVuIHNldHRpbmcgb3VyIGN1c3RvbSBkZWZhdWx0cywgdGhlbiByZWFkaW5nIC5lZGl0cmMuCi0KLS0gSXNzdWUgIzQxODg6IEF2b2lkIGNyZWF0aW5nIGR1bW15IHRocmVhZCBvYmplY3RzIHdoZW4gbG9nZ2luZyBvcGVyYXRpb25zCi0gIGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGUgKHdpdGggdGhlIGludGVybmFsIHZlcmJvc2UgZmxhZyBhY3RpdmF0ZWQpLgotCi0tIElzc3VlICMxMDcxMTogUmVtb3ZlIEhUVFAgMC45IHN1cHBvcnQgZnJvbSBodHRwLmNsaWVudC4gIFRoZSBgYHN0cmljdGBgCi0gIHBhcmFtZXRlciB0byBIVFRQQ29ubmVjdGlvbiBhbmQgZnJpZW5kcyBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICM5NzIxOiBGaXggdGhlIGJlaGF2aW9yIG9mIHVybGpvaW4gd2hlbiB0aGUgcmVsYXRpdmUgdXJsIHN0YXJ0cyB3aXRoIGEKLSAgJzsnIGNoYXJhY3Rlci4gUGF0Y2ggYnkgV2VzIENob3cuCi0KLS0gSXNzdWUgIzEwNzE0OiBMaW1pdCBsZW5ndGggb2YgaW5jb21pbmcgcmVxdWVzdCBpbiBodHRwLnNlcnZlciB0byA2NTUzNiBieXRlcwotICBmb3Igc2VjdXJpdHkgcmVhc29ucy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzk1NTg6IEZpeCBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQgd2l0aCBWUyA4LjAuCi0KLS0gSXNzdWUgIzEwNjY3OiBGYXN0IHBhdGggZm9yIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KLQotLSBJc3N1ZSAjMTA2OTU6IHBhc3NpbmcgdGhlIHBvcnQgYXMgYSBzdHJpbmcgdmFsdWUgdG8gdGVsbmV0bGliIG5vIGxvbmdlcgotICBjYXVzZXMgZGVidWcgbW9kZSB0byBmYWlsLgotCi0tIElzc3VlICMxMDc4OTE5OiBhZGRfaGVhZGVyIG5vdyBhdXRvbWF0aWNhbGx5IFJGQzIyMzEgZW5jb2RlcyBwYXJhbWV0ZXJzCi0gIHRoYXQgY29udGFpbiBub24tYXNjaWkgdmFsdWVzLgotCi0tIElzc3VlICMxMDE4OCAocGFydGlhbCByZXNvbHV0aW9uKTogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGVtaXRzCi0gIGEgd2FybmluZyBvbiBzeXMuc3RkZXJyIHJhdGhlciB0aGFuIHRocm93aW5nIGEgbWlzbGVhZGluZyBleGNlcHRpb24KLSAgaWYgY2xlYW51cCBmYWlscyBkdWUgdG8gbnVsbGluZyBvdXQgb2YgbW9kdWxlcyBkdXJpbmcgc2h1dGRvd24uCi0gIEFsc28gYXZvaWRzIGFuIEF0dHJpYnV0ZUVycm9yIHdoZW4gbWtkdGVtcCBjYWxsIGZhaWxzIGFuZCBpc3N1ZXMKLSAgYSBSZXNvdXJjZVdhcm5pbmcgb24gaW1wbGljaXQgY2xlYW51cCB2aWEgX19kZWxfXy4KLQotLSBJc3N1ZSAjMTAxMDc6IFdhcm4gYWJvdXQgdW5zYXZlZCBmaWxlcyBpbiBJRExFIG9uIE9TWC4KLQotLSBJc3N1ZSAjNzIxMzogc3VicHJvY2Vzcy5Qb3BlbidzIGRlZmF1bHQgZm9yIGNsb3NlX2ZkcyBoYXMgYmVlbiBjaGFuZ2VkLgotICBJdCBpcyBub3cgVHJ1ZSBpbiBtb3N0IGNhc2VzIG90aGVyIHRoYW4gb24gV2luZG93cyB3aGVuIGlucHV0LCBvdXRwdXQgb3IKLSAgZXJyb3IgaGFuZGxlcyBhcmUgcHJvdmlkZWQuCi0KLS0gSXNzdWUgIzY1NTk6IHN1YnByb2Nlc3MuUG9wZW4gaGFzIGEgbmV3IHBhc3NfZmRzIHBhcmFtZXRlciAoYWN0dWFsbHkKLSAgYWRkZWQgaW4gMy4yYmV0YTEpIHRvIGFsbG93IHNwZWNpZnlpbmcgYSBzcGVjaWZpYyBsaXN0IG9mIGZpbGUgZGVzY3JpcHRvcnMKLSAgdG8ga2VlcCBvcGVuIGluIHRoZSBjaGlsZCBwcm9jZXNzLgotCi0tIElzc3VlICMxNzMxNzE3OiBGaXhlZCB0aGUgcHJvYmxlbSB3aGVyZSBzdWJwcm9jZXNzLndhaXQoKSBjb3VsZCBjYXVzZSBhbgotICBPU0Vycm9yIGV4Y2VwdGlvbiB3aGVuIFRoZSBPUyBoYWQgYmVlbiB0b2xkIHRvIGlnbm9yZSBTSUdDTEQgaW4gb3VyIHByb2Nlc3MKLSAgb3Igb3RoZXJ3aXNlIG5vdCB3YWl0IGZvciBleGl0aW5nIGNoaWxkIHByb2Nlc3Nlcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzc3NTk2NDogdGVzdF9ncnAgbm93IHNraXBzIFlQL05JUyBlbnRyaWVzIGluc3RlYWQgb2YgZmFpbGluZyB3aGVuCi0gIGVuY291bnRlcmluZyB0aGVtLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjA3NTogSURMRSBvbiBNYWMgT1MgWCBub3cgd29ya3Mgd2l0aCBib3RoIENhcmJvbiBBcXVhVGsgYW5kCi0gIENvY29hIEFxdWFUay4KLQotLSBJc3N1ZSAjMTA3MTA6IGBgTWlzYy9zZXR1aWQtcHJvZy5jYGAgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTA3MDY6IFJlbW92ZSBvdXRkYXRlZCBzY3JpcHQgcnVudGVzdHMuc2guICBFaXRoZXIgYGBtYWtlIHRlc3RgYAotICBvciBgYHB5dGhvbiAtbSB0ZXN0YGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gVGhlIFdpbmRvd3MgYnVpbGQgbm93IHVzZXMgVGNsL1RrIDguNS45IGFuZCBzcWxpdGUzIDMuNy40LgotCi0tIElzc3VlICM5MjM0OiBhcmdwYXJzZSBzdXBwb3J0cyBhbGlhcyBuYW1lcyBmb3Igc3VicGFyc2Vycy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDUtRGVjLTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDYzMDogUmV0dXJuIGRpY3Qgdmlld3MgZnJvbSB0aGUgZGljdCBwcm94eSBrZXlzKCkvdmFsdWVzKCkvaXRlbXMoKQotICBtZXRob2RzLgotCi0tIElzc3VlICMxMDU5NjogRml4IGZsb2F0Ll9fbW9kX18gdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgZmxvYXQuX19kaXZtb2RfXwotICB3aXRoIHJlc3BlY3QgdG8gc2lnbmVkIHplcm9zLiAgLTQuMCAlIDQuMCBzaG91bGQgYmUgMC4wLCBub3QgLTAuMC4KLQotLSBJc3N1ZSAjMTc3MjgzMzogQWRkIHRoZSAtcSBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIHN1cHByZXNzIGNvcHlyaWdodCBhbmQKLSAgdmVyc2lvbiBvdXRwdXQgaW4gaW50ZXJhY3RpdmUgbW9kZS4KLQotLSBQcm92aWRlIGFuICpvcHRpbWl6ZSogcGFyYW1ldGVyIGluIHRoZSBidWlsdC1pbiBjb21waWxlKCkgZnVuY3Rpb24uCi0KLS0gRml4ZWQgc2V2ZXJhbCBjb3JuZXIgY2FzZSBpc3N1ZXMgb24gV2luZG93cyBpbiBvcy5zdGF0L29zLmxzdGF0IHJlbGF0ZWQgdG8KLSAgcmVwYXJzZSBwb2ludHMuCi0KLS0gUEVQIDM4NCAoRGVmaW5pbmcgYSBTdGFibGUgQUJJKSBpcyBpbXBsZW1lbnRlZC4KLQotLSBJc3N1ZSAjMjY5MDogUmFuZ2Ugb2JqZWN0cyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcuCi0KLS0gSXNzdWUgIzk5MTU6IFNwZWVkIHVwIHNvcnRpbmcgd2l0aCBhIGtleS4KLQotLSBJc3N1ZSAjODY4NTogU3BlZWQgdXAgc2V0IGRpZmZlcmVuY2UgYGBhIC0gYmBgIHdoZW4gc291cmNlIHNldCBgYGFgYCBpcyBtdWNoCi0gIGxhcmdlciB0aGFuIG9wZXJhbmQgYGBiYGAuICBQYXRjaCBieSBBbmRyZXcgQmVubmV0dHMuCi0KLS0gSXNzdWUgIzEwNTE4OiBCcmluZyBiYWNrIHRoZSBjYWxsYWJsZSgpIGJ1aWx0aW4uCi0KLS0gSXNzdWUgIzcwOTQ6IEFkZGVkIGFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgJyMnKSB0byBgYF9fZm9ybWF0X19gYAotICBtZXRob2Qgb2YgZmxvYXQsIGNvbXBsZXgsIGFuZCBEZWNpbWFsLiBUaGlzIGFsbG93cyBtb3JlIHByZWNpc2UgY29udHJvbCBvdmVyCi0gIHdoZW4gZGVjaW1hbCBwb2ludHMgYXJlIGRpc3BsYXllZC4KLQotLSBJc3N1ZSAjMTA0NzQ6IHJhbmdlLmNvdW50KCkgc2hvdWxkIHJldHVybiBpbnRlZ2Vycy4KLQotLSBJc3N1ZSAjMTU3NDIxNzogaXNpbnN0YW5jZSBub3cgY2F0Y2hlcyBvbmx5IEF0dHJpYnV0ZUVycm9yLCByYXRoZXIgdGhhbgotICBtYXNraW5nIGFsbCBlcnJvcnMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBsb2dnaW5nOiBhZGRlZCAiaGFuZGxlciBvZiBsYXN0IHJlc29ydCIuIFNlZSBodHRwOi8vYml0Lmx5L2xhc3QtcmVzb3J0LWhhbmRsZXIKLQotLSB0ZXN0LnN1cHBvcnQ6IEFkZGVkIFRlc3RIYW5kbGVyIGFuZCBNYXRjaGVyIGNsYXNzZXMgZm9yIGJldHRlciBzdXBwb3J0IG9mCi0gIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KLQotLSBJc3N1ZSAjNDM5MTogVXNlIHByb3BlciBwbHVyYWwgZm9ybXMgaW4gYXJncGFyc2UuCi0KLS0gSXNzdWUgIzEwNjAxOiBzeXMuZGlzcGxheWhvb2sgdXNlcyAnYmFja3NsYXNocmVwbGFjZScgZXJyb3IgaGFuZGxlciBvbgotICBVbmljb2RlRW5jb2RlRXJyb3IuCi0KLS0gQWRkIHRoZSAiZGlzcGxheSIgYW5kICJ1bmRpc3BsYXkiIHBkYiBjb21tYW5kcy4KLQotLSBJc3N1ZSAjNzI0NTogQWRkIGEgU0lHSU5UIGhhbmRsZXIgaW4gcGRiIHRoYXQgYWxsb3dzIHRvIGJyZWFrIGEgcHJvZ3JhbSBhZ2FpbgotICBhZnRlciBhICJjb250aW51ZSIgY29tbWFuZC4KLQotLSBBZGQgdGhlICJpbnRlcmFjdCIgcGRiIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzc5MDU6IEFjdHVhbGx5IHJlc3BlY3QgdGhlIGtleWVuY29kaW5nIHBhcmFtZXRlciB0byBzaGVsdmUuU2hlbGYuCi0KLS0gSXNzdWUgIzE1NjkyOTE6IFNwZWVkIHVwIGFycmF5LnJlcGVhdCgpLgotCi0tIFByb3ZpZGUgYW4gaW50ZXJmYWNlIHRvIHNldCB0aGUgb3B0aW1pemF0aW9uIGxldmVsIG9mIGNvbXBpbGF0aW9uIGluCi0gIHB5X2NvbXBpbGUsIGNvbXBpbGVhbGwgYW5kIHppcGZpbGUuUHlaaXBGaWxlLgotCi0tIElzc3VlICM3OTA0OiBDaGFuZ2VzIHRvIHVybGxpYi5wYXJzZS51cmxzcGxpdCB0byBoYW5kbGUgc2NoZW1lcyBhcyBkZWZpbmVkIGJ5Ci0gIFJGQzM5ODYuIEFueXRoaW5nIGJlZm9yZSA6Ly8gaXMgY29uc2lkZXJlZCBhIHNjaGVtZSBhbmQgaXMgZm9sbG93ZWQgYnkgYW4KLSAgYXV0aG9yaXR5IChvciBuZXRsb2MpIGFuZCBieSAnLycgbGVkIHBhdGgsIHdoaWNoIGlzIG9wdGlvbmFsLgotCi0tIElzc3VlICM2MDQ1OiBkYm0uZ251IGRhdGFiYXNlcyBub3cgc3VwcG9ydCBnZXQoKSBhbmQgc2V0ZGVmYXVsdCgpIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzEwNjIwOiBgcHl0aG9uIC1tIHVuaXR0ZXN0YCBjYW4gYWNjZXB0IGZpbGUgcGF0aHMgaW5zdGVhZCBvZiBtb2R1bGUKLSAgbmFtZXMgZm9yIHJ1bm5pbmcgc3BlY2lmaWMgdGVzdHMuCi0KLS0gSXNzdWUgIzk0MjQ6IERlcHJlY2F0ZSB0aGUgYHVuaXR0ZXN0LlRlc3RDYXNlYCBtZXRob2RzIGBhc3NlcnRFcXVhbHNgLAotICBgYXNzZXJ0Tm90RXF1YWxzYCwgYGFzc2VydEFsbW9zdEVxdWFsc2AsIGBhc3NlcnROb3RBbG1vc3RFcXVhbHNgIGFuZCBgYXNzZXJ0X2AKLSAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBjb3JyZWN0IG1ldGhvZHMgaW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLgotCi0tIElzc3VlICMxMDI3MjogVGhlIHNzbCBtb2R1bGUgbm93IHJhaXNlcyBzb2NrZXQudGltZW91dCBpbnN0ZWFkIG9mIGEgZ2VuZXJpYwotICBTU0xFcnJvciBvbiBzb2NrZXQgdGltZW91dHMuCi0KLS0gSXNzdWUgIzEwNTI4OiBBbGxvdyB0cmFuc2xhdG9ycyB0byByZW9yZGVyIHBsYWNlaG9sZGVycyBpbiBsb2NhbGl6YWJsZQotICBtZXNzYWdlcyBmcm9tIGFyZ3BhcnNlLgotCi0tIElzc3VlICMxMDQ5NzogRml4IGluY29ycmVjdCB1c2Ugb2YgZ2V0dGV4dCBpbiBhcmdwYXJzZS4KLQotLSBJc3N1ZSAjMTA0Nzg6IFJlZW50cmFudCBjYWxscyBpbnNpZGUgYnVmZmVyZWQgSU8gb2JqZWN0cyAoZm9yIGV4YW1wbGUgYnkKLSAgd2F5IG9mIGEgc2lnbmFsIGhhbmRsZXIpIG5vdyByYWlzZSBhIFJ1bnRpbWVFcnJvciBpbnN0ZWFkIG9mIGZyZWV6aW5nIHRoZQotICBjdXJyZW50IHByb2Nlc3MuCi0KLS0gbG9nZ2luZzogQWRkZWQgZ2V0TG9nUmVjb3JkRmFjdG9yeS9zZXRMb2dSZWNvcmRGYWN0b3J5IHdpdGggZG9jcyBhbmQgdGVzdHMuCi0KLS0gSXNzdWUgIzEwNTQ5OiBGaXggcHlkb2MgdHJhY2ViYWNrIHdoZW4gdGV4dC1kb2N1bWVudGluZyBjZXJ0YWluIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzIwMDE6IE5ldyBIVE1MIHNlcnZlciB3aXRoIGVuaGFuY2VkIFdlYiBwYWdlIGZlYXR1cmVzLiAgUGF0Y2ggYnkgUm9uCi0gIEFkYW0uCi0KLS0gSXNzdWUgIzEwMzYwOiBJbiBXZWFrU2V0LCBkbyBub3QgcmFpc2UgVHlwZUVycm9ycyB3aGVuIHRlc3RpbmcgZm9yIG1lbWJlcnNoaXAKLSAgb2Ygbm9uLXdlYWtyZWZhYmxlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzk0MDI4NjogcHlkb2MuSGVscGVyLmhlbHAoKSBpZ25vcmVzIGlucHV0L291dHB1dCBpbml0IHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzE3NDUwMzU6IEFkZCBhIGNvbW1hbmQgc2l6ZSBhbmQgZGF0YSBzaXplIGxpbWl0IHRvIHNtdHBkLnB5LCB0byBwcmV2ZW50Ci0gIERvUyBhdHRhY2tzLiAgUGF0Y2ggYnkgU2F2aW8gU2VuYS4KLQotLSBJc3N1ZSAjNDkyNTogQWRkIGZpbGVuYW1lIHRvIGVycm9yIG1lc3NhZ2Ugd2hlbiBleGVjdXRhYmxlIGNhbid0IGJlIGZvdW5kIGluCi0gIHN1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEwMzkxOiBEb24ndCBkZXJlZmVyZW5jZSBpbnZhbGlkIG1lbW9yeSBpbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgYXN0Ci0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTAwMjc6IHN0X25saW5rIHdhcyBub3QgYmVpbmcgc2V0IG9uIFdpbmRvd3MgY2FsbHMgdG8gb3Muc3RhdCBvcgotICBvcy5sc3RhdC4gUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzkzMzM6IEV4cG9zZSBvcy5zeW1saW5rIG9ubHkgd2hlbiB0aGUgU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UgaXMKLSAgaGVsZCBieSB0aGUgdXNlcidzIGFjY291bnQsIGkuZS4sIHdoZW4gdGhlIGZ1bmN0aW9uIGNhbiBhY3R1YWxseSBiZSB1c2VkLgotCi0tIElzc3VlICM4ODc5OiBBZGQgb3MubGluayBzdXBwb3J0IGZvciBXaW5kb3dzLgotCi0tIElzc3VlICM3OTExOiBgYHVuaXR0ZXN0LlRlc3RDYXNlLmxvbmdNZXNzYWdlYGAgZGVmYXVsdHMgdG8gVHJ1ZSBmb3IgaW1wcm92ZWQKLSAgZmFpbHVyZSBtZXNzYWdlcyBieSBkZWZhdWx0LiBQYXRjaCBieSBNYXJrIFJvZGR5LgotCi0tIElzc3VlICMxNDg2NzEzOiBIVE1MUGFyc2VyIG5vdyBoYXMgYW4gb3B0aW9uYWwgdG9sZXJhbnQgbW9kZSB3aGVyZSBpdCB0cmllcyB0bwotICBndWVzcyBhdCB0aGUgY29ycmVjdCBwYXJzaW5nIG9mIGludmFsaWQgaHRtbC4KLQotLSBJc3N1ZSAjMTA1NTQ6IEFkZCBjb250ZXh0IG1hbmFnZXIgc3VwcG9ydCB0byBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdHMuCi0KLS0gSXNzdWUgIzg5ODk6IGVtYWlsLnV0aWxzLm1ha2VfbXNnaWQgbm93IGhhcyBhIGRvbWFpbiBwYXJhbWV0ZXIgdGhhdCBjYW4KLSAgb3ZlcnJpZGUgdGhlIGRvbWFpbiBuYW1lIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBtc2dpZC4KLQotLSBJc3N1ZSAjOTI5OTogQWRkIGV4aXN0X29rIHBhcmFtZXRlciB0byBvcy5tYWtlZGlycyB0byBzdXBwcmVzcyB0aGUgJ0ZpbGUKLSAgZXhpc3RzJyBleGNlcHRpb24gd2hlbiBhIHRhcmdldCBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc3BlY2lmaWVkCi0gIG1vZGUuIFBhdGNoIGJ5IFJheSBBbGxlbi4KLQotLSBJc3N1ZSAjOTU3Mzogb3MuZm9yaygpIG5vdyB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0cmlnZ2VyZWQgYXMgYSBzaWRlIGVmZmVjdCBvZgotICBhIG1vZHVsZSBpbXBvcnQuCi0KLS0gSXNzdWUgIzEwNDY0OiBuZXRyYyBub3cgY29ycmVjdGx5IGhhbmRsZXMgbGluZXMgd2l0aCBlbWJlZGRlZCAnIycgY2hhcmFjdGVycy4KLQotLSBBZGRlZCBpdGVydG9vbHMuYWNjdW11bGF0ZSgpLgotCi0tIElzc3VlICM0MTEzOiBBZGRlZCBjdXN0b20gYGBfX3JlcHJfX2BgIG1ldGhvZCB0byBgYGZ1bmN0b29scy5wYXJ0aWFsYGAuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IERhbmllbCBVcmJhbi4KLQotLSBJc3N1ZSAjMTAyNzM6IFJlbmFtZSBgYXNzZXJ0UmVnZXhwTWF0Y2hlc2AgYW5kIGBhc3NlcnRSYWlzZXNSZWdleHBgIHRvCi0gIGBhc3NlcnRSZWdleGAgYW5kIGBhc3NlcnRSYWlzZXNSZWdleGAuCi0KLS0gSXNzdWUgIzEwNTM1OiBFbmFibGUgc2lsZW5jZWQgd2FybmluZ3MgaW4gdW5pdHRlc3QgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjOTg3MzogVGhlIFVSTCBwYXJzaW5nIGZ1bmN0aW9ucyBpbiB1cmxsaWIucGFyc2Ugbm93IGFjY2VwdCBBU0NJSSBieXRlCi0gIHNlcXVlbmNlcyBhcyBpbnB1dCBpbiBhZGRpdGlvbiB0byBjaGFyYWN0ZXIgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTA1ODY6IFRoZSBzdGF0aXN0aWNzIEFQSSBmb3IgdGhlIG5ldyBmdW5jdG9vbHMubHJ1X2NhY2hlIGhhcyBiZWVuCi0gIGNoYW5nZWQgdG8gYSBzaW5nbGUgY2FjaGVfaW5mbygpIG1ldGhvZCByZXR1cm5pbmcgYSBuYW1lZCB0dXBsZS4KLQotLSBJc3N1ZSAjMTAzMjM6IGl0ZXJ0b29scy5pc2xpY2UoKSBub3cgY29uc3VtZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGlucHV0cwotICBiZWZvcmUgc3RvcHBpbmcuICBGb3JtZXJseSwgdGhlIGZpbmFsIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIHdhcwotICB1bmRlZmluZWQuCi0KLS0gSXNzdWUgIzEwNTY1OiBUaGUgY29sbGVjdGlvbnMuSXRlcmF0b3IgQUJDIG5vdyBjaGVja3MgZm9yIGJvdGggX19pdGVyX18gYW5kCi0gIF9fbmV4dF9fLgotCi0tIElzc3VlICMxMDI0MjogRml4ZWQgaW1wbGVtZW50YXRpb24gb2YgdW5pdHRlc3QuSXRlbXNFcXVhbCBhbmQgZ2F2ZSBpdCBhIG5ldwotICBtb3JlIGluZm9ybWF0aXZlIG5hbWUsIHVuaXR0ZXN0LkNvdW50RXF1YWwuCi0KLS0gSXNzdWUgIzEwNTYxOiBJbiBwZGIsIGNsZWFyIHRoZSBicmVha3BvaW50cyBieSB0aGUgYnJlYWtwb2ludCBudW1iZXIuCi0KLS0gSXNzdWUgIzI5ODY6IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyIGdldHMgYSBuZXcgcGFyYW1ldGVyLCBhdXRvanVuaywgd2hpY2ggY2FuCi0gIGJlIHNldCB0byBGYWxzZSB0byB0dXJuIG9mZiB0aGUgcHJldmlvdXNseSB1bmRvY3VtZW50ZWQgJ3BvcHVsYXJpdHknCi0gIGhldXJpc3RpYy4gUGF0Y2ggYnkgVGVycnkgUmVlZHkgYW5kIEVsaSBCZW5kZXJza3kuCi0KLS0gSXNzdWUgIzEwNTM0OiBpbiBkaWZmbGliLCBleHBvc2UgYmp1bmsgYW5kIGJwb3B1bGFyIHNldHM7IGRlcHJlY2F0ZQotICB1bmRvY3VtZW50ZWQgYW5kIG5vdyByZWR1bmRhbnQgaXNianVuayBhbmQgaXNicG9wdWxhciBtZXRob2RzLgotCi0tIElzc3VlICM5ODQ2OiB6aXBmaWxlIGlzIG5vdyBjb3JyZWN0bHkgY2xvc2luZyB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTA0NTk6IFVwZGF0ZSBDSksgY2hhcmFjdGVyIG5hbWVzIHRvIFVuaWNvZGUgNi4wLgotCi0tIElzc3VlICM0NDkzOiB1cmxsaWIucmVxdWVzdCBhZGRzICcvJyBpbiBmcm9udCBvZiBwYXRoIGNvbXBvbmVudHMgd2hpY2ggZG9lcyBub3QKLSAgc3RhcnQgd2l0aCAnLy4gQ29tbW9uIGJlaGF2aW9yIGV4aGliaXRlZCBieSBicm93c2VycyBhbmQgb3RoZXIgY2xpZW50cy4KLQotLSBJc3N1ZSAjNjM3ODogaWRsZS5iYXQgbm93IHJ1bnMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uIHZlcnNpb24gcmF0aGVyIHRoYW4KLSAgdGhlIHN5c3RlbSBkZWZhdWx0LiBQYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzEwNDcwOiAncHl0aG9uIC1tIHVuaXR0ZXN0JyB3aWxsIG5vdyBydW4gdGVzdCBkaXNjb3ZlcnkgYnkgZGVmYXVsdCwKLSAgd2hlbiBubyBleHRyYSBhcmd1bWVudHMgaGF2ZSBiZWVuIHByb3ZpZGVkLgotCi0tIElzc3VlICMzNzA5OiBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyIHdpbGwgYnVmZmVyIHRoZSBoZWFkZXJzIGFuZCB3cml0ZSB0bwotICBvdXRwdXQgc3RyZWFtIG9ubHkgd2hlbiBlbmRfaGVhZGVycyBpcyBpbnZva2VkLiBUaGlzIGlzIGEgc3BlZWR1cCBhbmQgYW4KLSAgaW50ZXJuYWwgb3B0aW1pemF0aW9uLiAgUGF0Y2ggYnkgZW5kaWFuLgotCi0tIElzc3VlICMxMDIyMDogQWRkZWQgaW5zcGVjdC5nZXRnZW5lcmF0b3JzdGF0ZS4gSW5pdGlhbCBwYXRjaCBieSBSb2RvbHBobwotICBFY2toYXJkdC4KLQotLSBJc3N1ZSAjMTA0NTM6IGNvbXBpbGVhbGwgbm93IHVzZXMgYXJncGFyc2UgaW5zdGVhZCBvZiBnZXRvcHQsIGFuZCB0aHVzCi0gIHByb3ZpZGVzIGNsZWFuIG91dHB1dCB3aGVuIGNhbGxlZCB3aXRoICctaCcuCi0KLS0gSXNzdWUgIzgwNzg6IEFkZCBjb25zdGFudHMgZm9yIGhpZ2hlciBiYXVkIHJhdGVzIGluIHRoZSB0ZXJtaW9zIG1vZHVsZS4gIFBhdGNoCi0gIGJ5IFJvZG9scGhvIEVja2hhcmR0LgotCi0tIElzc3VlICMxMDQwNzogRml4IHR3byBOYW1lRXJyb3JzIGluIGRpc3R1dGlscy4KLQotLSBJc3N1ZSAjMTAzNzE6IERlcHJlY2F0ZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBpbiB0aGUgdHJhY2UgbW9kdWxlLgotCi0tIElzc3VlICMxMDQ2NzogRml4IEJ5dGVzSU8ucmVhZGludG8oKSBhZnRlciBzZWVraW5nIGludG8gYSBwb3NpdGlvbiBhZnRlciB0aGUKLSAgZW5kIG9mIHRoZSBmaWxlLgotCi0tIGNvbmZpZ3BhcnNlcjogMTAwJSB0ZXN0IGNvdmVyYWdlLgotCi0tIElzc3VlICMxMDQ5OTogY29uZmlncGFyc2VyIHN1cHBvcnRzIHBsdWdnYWJsZSBpbnRlcnBvbGF0aW9uIGhhbmRsZXJzLiBUaGUKLSAgZGVmYXVsdCBjbGFzc2ljIGludGVycG9sYXRpb24gaGFuZGxlciBpcyBjYWxsZWQgQmFzaWNJbnRlcnBvbGF0aW9uLiBBbm90aGVyCi0gIGludGVycG9sYXRpb24gaGFuZGxlciBhZGRlZCAoRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKSB3aGljaCBzdXBwb3J0cyB0aGUgc3ludGF4Ci0gIHVzZWQgYnkgemMuYnVpbGRvdXQgKGUuZy4gaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHNlY3Rpb25zKS4KLQotLSBjb25maWdwYXJzZXI6IHRoZSBTYWZlQ29uZmlnUGFyc2VyIGNsYXNzIGhhcyBiZWVuIHJlbmFtZWQgdG8gQ29uZmlnUGFyc2VyLgotICBUaGUgbGVnYWN5IENvbmZpZ1BhcnNlciBjbGFzcyBoYXMgYmVlbiByZW1vdmVkIGJ1dCBpdHMgaW50ZXJwb2xhdGlvbiBtZWNoYW5pc20KLSAgaXMgc3RpbGwgYXZhaWxhYmxlIGFzIExlZ2FjeUludGVycG9sYXRpb24uCi0KLS0gY29uZmlncGFyc2VyOiBVc2FnZSBvZiBSYXdDb25maWdQYXJzZXIgaXMgbm93IGRpc2NvdXJhZ2VkIGZvciBuZXcgcHJvamVjdHMKLSAgaW4gZmF2b3Igb2YgQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSkuCi0KLS0gSXNzdWUgIzE2ODI5NDI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBhbHRlcm5hdGl2ZSBvcHRpb24vdmFsdWUgZGVsaW1pdGVycy4KLQotLSBJc3N1ZSAjNTQxMjogY29uZmlncGFyc2VyIHN1cHBvcnRzIG1hcHBpbmcgcHJvdG9jb2wgYWNjZXNzLgotCi0tIElzc3VlICM5NDExOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgc3BlY2lmeWluZyBlbmNvZGluZyBmb3IgcmVhZCBvcGVyYXRpb25zLgotCi0tIElzc3VlICM5NDIxOiBjb25maWdwYXJzZXIncyBnZXRpbnQoKSwgZ2V0ZmxvYXQoKSBhbmQgZ2V0Ym9vbGVhbigpIG1ldGhvZHMKLSAgYWNjZXB0IHZhcnMgYW5kIGRlZmF1bHQgYXJndW1lbnRzIGp1c3QgbGlrZSBnZXQoKSBkb2VzLgotCi0tIElzc3VlICM5NDUyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgcmVhZGluZyBmcm9tIHN0cmluZ3MgYW5kIGRpY3Rpb25hcmllcwotICAodGhhbmtzIHRvIHRoZSBtYXBwaW5nIHByb3RvY29sIEFQSSwgdGhlIGxhdHRlciBjYW4gYmUgdXNlZCB0byBjb3B5IGRhdGEKLSAgYmV0d2VlbiBwYXJzZXJzKS4KLQotLSBjb25maWdwYXJzZXI6IGFjY2VwdGVkIElOSSBmaWxlIHN0cnVjdHVyZSBpcyBub3cgY3VzdG9taXphYmxlLCBpbmNsdWRpbmcKLSAgY29tbWVudCBwcmVmaXhlcywgbmFtZSBvZiB0aGUgREVGQVVMVCBzZWN0aW9uLCBlbXB0eSBsaW5lcyBpbiBtdWx0aWxpbmUKLSAgdmFsdWVzLCBhbmQgaW5kZW50YXRpb24uCi0KLS0gSXNzdWUgIzEwMzI2OiB1bml0dGVzdC5UZXN0Q2FzZSBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQuCi0KLS0gSXNzdWUgIzk5MjY6IFdyYXBwZWQgVGVzdFN1aXRlIHN1YmNsYXNzIGRvZXMgbm90IGdldCBfX2NhbGxfXyBleGVjdXRlZC4KLQotLSBJc3N1ZSAjOTkyMDogU2tpcCB0ZXN0cyBmb3IgY21hdGguYXRhbiBhbmQgY21hdGguYXRhbmggYXBwbGllZCB0byBjb21wbGV4Ci0gIHplcm9zIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGxvZzFwIGZ1bmN0aW9uIGZhaWxzIHRvIHJlc3BlY3QgdGhlIHNpZ24gb2YgemVyby4KLSAgVGhpcyBmaXhlcyBhIHRlc3QgZmFpbHVyZSBvbiBBSVguCi0KLS0gSXNzdWUgIzk3MzI6IEFkZGl0aW9uIG9mIGdldGF0dHJfc3RhdGljIHRvIHRoZSBpbnNwZWN0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA0NDY6IE1vZHVsZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBieSBweWRvYyBub3cgbGlua3MgdG8gYQotICB2ZXJzaW9uLXNwZWNpZmljIG9ubGluZSByZWZlcmVuY2UgbWFudWFsLgotCi0tIE1ha2UgdGhlICdObyBtb2R1bGUgbmFtZWQnIGV4Y2VwdGlvbiBtZXNzYWdlIGZyb20gaW1wb3J0bGliIGNvbnNpc3RlbnQuCi0KLS0gSXNzdWUgIzEwNDQzOiBBZGQgdGhlIFNTTENvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkgbWV0aG9kLgotCi0tIElzc3VlICMxMDQ0MDogU3VwcG9ydCBSVVNBR0VfVEhSRUFEIGFzIGEgY29uc3RhbnQgaW4gdGhlIHJlc291cmNlIG1vZHVsZS4KLSAgUGF0Y2ggYnkgUm9iZXJ0IENvbGxpbnMuCi0KLS0gSXNzdWUgIzEwNDI5OiBJTUFQLnN0YXJ0dGxzKCkgc3RvcmVkIHRoZSBjYXBhYmlsaXRpZXMgYXMgYnl0ZXMgb2JqZWN0cywgcmF0aGVyCi0gIHRoYW4gc3RyaW5ncy4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzEwNTU3OiBBZGRlZCBhIG5ldyBBUEkgZnVuY3Rpb24sIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSSgpLAotICB3aGljaCB0cmFuc2Zvcm1zIG5vbi1BU0NJSSBkZWNpbWFsIGRpZ2l0cyBpbiBhIFVuaWNvZGUgc3RyaW5nIHRvIHRoZWlyIEFTQ0lJCi0gIGVxdWl2YWxlbnRzLgotCi0tIElzc3VlICM5NTE4OiBFeHRlbmQgdGhlIFB5TW9kdWxlRGVmX0hFQURfSU5JVCBtYWNybyB0byBleHBsaWNpdGx5Ci0gIHplcm8taW5pdGlhbGl6ZSBhbGwgZmllbGRzLCBmaXhpbmcgY29tcGlsZXIgd2FybmluZ3Mgc2VlbiB3aGVuIGJ1aWxkaW5nCi0gIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggZ2NjIHdpdGggIi1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiIChpbXBsaWVkIGJ5Ci0gICItVyIpLgotCi0tIElzc3VlICMxMDI1NTogRml4IHJlZmVyZW5jZSBsZWFrIGluIFB5X0luaXRpYWxpemVFeCgpLiAgUGF0Y2ggYnkgTmVpbAotICBTY2hlbWVuYXVlci4KLQotLSBzdHJ1Y3RzZXEuaCBpcyBub3cgaW5jbHVkZWQgaW4gUHl0aG9uLmguCi0KLS0gTG9vc2VuIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cyB0byBhbGxvdyBkaWN0IHN1YmNsYXNzZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIHJlZ3J0ZXN0LnB5IG9uY2UgYWdhaW4gZW5zdXJlcyB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgcmVtb3ZlZCBmcm9tIHN5cy5wYXRoCi0gIHdoZW4gaXQgaXMgaW52b2tlZCBkaXJlY3RseSBhcyB0aGUgX19tYWluX18gbW9kdWxlLgotCi0tIGBweXRob24gLW0gdGVzdGAgY2FuIGJlIHVzZWQgdG8gcnVuIHRoZSB0ZXN0IHN1aXRlIGFzIHdlbGwgYXMgYHB5dGhvbiAtbQotICB0ZXN0LnJlZ3J0ZXN0YC4KLQotLSBEbyBub3QgZmFpbCB0ZXN0X3NvY2tldCB3aGVuIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBob3N0bmFtZSBjYW5ub3QgYmUKLSAgbG9va2VkIHVwLgotCi0tIElzc3VlICM4ODg2OiBVc2UgY29udGV4dCBtYW5hZ2VycyB0aHJvdWdob3V0IHRlc3RfemlwZmlsZS4gUGF0Y2ggYnkgRXJpYwotICBDYXJzdGVuc2VuLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTAzMjU6IEZpeCB0d28gaXNzdWVzIGluIHRoZSBmYWxsYmFjayBkZWZpbml0aW9ucyBmb3IgUFlfVUxMT05HX01BWCBhbmQKLSAgUFlfTExPTkdfTUFYIHRoYXQgbWFkZSB0aGVtIHVuc3VpdGFibGUgZm9yIHVzZSBpbiBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMjk5OiBMaXN0IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgaW4gYSB0YWJsZSBpbiBmdW5jdGlvbnMucnN0LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSA0PwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEzLU5vdi0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAzNzI6IEltcG9ydCB0aGUgd2FybmluZ3MgbW9kdWxlIG9ubHkgYWZ0ZXIgdGhlIElPIGxpYnJhcnkgaXMKLSAgaW5pdGlhbGl6ZWQsIHNvIGFzIHRvIGF2b2lkIGJvb3RzdHJhcCBpc3N1ZXMgd2l0aCB0aGUgJy1XJyBvcHRpb24uCi0KLS0gSXNzdWUgIzEwMjkzOiBSZW1vdmUgb2Jzb2xldGUgZmllbGQgaW4gdGhlIFB5TWVtb3J5VmlldyBzdHJ1Y3R1cmUsIHVudXNlZAotICB1bmRvY3VtZW50ZWQgdmFsdWUgUHlCVUZfU0hBRE9XLCBhbmQgc3RyYW5nZWx5LWxvb2tpbmcgY29kZSBpbgotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cy4KLQotLSBJc3N1ZSAjNjA4MTogQWRkIHN0ci5mb3JtYXRfbWFwKCksIHNpbWlsYXIgdG8gYGBzdHIuZm9ybWF0KCoqbWFwcGluZylgYC4KLQotLSBJZiBGaWxlSU8uX19pbml0X18gZmFpbHMsIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IuCi0KLS0gSXNzdWUgIzEwMjIxOiBkaWN0LnBvcChrKSBub3cgaGFzIGEga2V5IGVycm9yIG1lc3NhZ2UgdGhhdCBpbmNsdWRlcyB0aGUKLSAgbWlzc2luZyBrZXkgKHNhbWUgbWVzc2FnZSBkW2tdIHJldHVybnMgZm9yIG1pc3Npbmcga2V5cykuCi0KLS0gSXNzdWUgIzU0Mzc6IEEgcHJlYWxsb2NhdGVkIE1lbW9yeUVycm9yIGluc3RhbmNlIHNob3VsZCBub3Qga2VlcCB0cmFjZWJhY2sKLSAgZGF0YSAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyBjYXVnaHQgaW4gdGhlIHN0YWNrIHRyYWNlKSBhbGl2ZSBpbmZpbml0ZWx5LgotCi0tIElzc3VlICMxMDE4NjogRml4IHRoZSBTeW50YXhFcnJvciBjYXJldCB3aGVuIHRoZSBvZmZzZXQgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aAotICBvZiB0aGUgb2ZmZW5kaW5nIGxpbmUuCi0KLS0gSXNzdWUgIzEwMDg5OiBBZGQgc3VwcG9ydCBmb3IgYXJiaXRyYXJ5IC1YIG9wdGlvbnMgb24gdGhlIGNvbW1hbmQgbGluZS4gIFRoZXkKLSAgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIGEgbmV3IGF0dHJpYnV0ZSBgYHN5cy5feG9wdGlvbnNgYC4KLQotLSBJc3N1ZSAjNDM4ODogT24gTWFjIE9TIFgsIGRlY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZyb20gVVRGLTgsIGluc3RlYWQgb2YKLSAgdGhlIGxvY2FsZSBlbmNvZGluZy4gIElmIHRoZSBMQU5HIChhbmQgTENfQUxMIGFuZCBMQ19DVFlQRSkgZW52aXJvbm1lbnQKLSAgdmFyaWFibGUgaXMgbm90IHNldCwgdGhlIGxvY2FsZSBlbmNvZGluZyBpcyBJU08tODg1OS0xLCB3aGVyZWFzIG1vc3QgcHJvZ3JhbXMKLSAgKGluY2x1ZGluZyBQeXRob24pIGV4cGVjdCBVVEYtOC4gIFB5dGhvbiBhbHJlYWR5IHVzZXMgVVRGLTggZm9yIHRoZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGFuZCB0byBlbmNvZGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvbiB0aGlzIE9TLgotCi0tIElzc3VlICM5NzEzLCAjMTAxMTQ6IFBhcnNlciBmdW5jdGlvbnMgKGUuZy4gUHlQYXJzZXJfQVNURnJvbUZpbGUpIGV4cGVjdAotICBmaWxlbmFtZXMgZW5jb2RlZCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKLSAgaGFuZGxlciAodG8gc3VwcG9ydCB1bmRlY29kYWJsZSBieXRlcyksIGluc3RlYWQgb2YgVVRGLTggaW4gc3RyaWN0IG1vZGUuCi0KLS0gSXNzdWUgIzk5OTc6IERvbid0IGxldCB0aGUgbmFtZSAidG9wIiBoYXZlIHNwZWNpYWwgc2lnbmlmaWNhbmNlIGluIHNjb3BlCi0gIHJlc29sdXRpb24uCi0KLS0gSXNzdWUgIzk4NjI6IENvbXBlbnNhdGUgZm9yIGJyb2tlbiBQSVBFX0JVRiBpbiBBSVggYnkgaGFyZCBjb2RpbmcgaXRzIHZhbHVlIGFzCi0gIHRoZSBkZWZhdWx0IDUxMiB3aGVuIGNvbXBpbGluZyBvbiBBSVguCi0KLS0gVXNlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04IHRvIGVuY29kZSBhbmQgZGVjb2RlIGZpbGVuYW1lcyBpZgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzIG5vdCBzZXQuCi0KLS0gSXNzdWUgIzEwMDk1OiBmcF9zZXRyZWFkbCgpIGRvZXNuJ3QgcmVvcGVuIHRoZSBmaWxlLCBpbnN0ZWFkIHJldXNlIHRoZSBmaWxlCi0gIGRlc2NyaXB0b3IuCi0KLS0gSXNzdWUgIzk0MTg6IE1vdmVkIHByaXZhdGUgc3RyaW5nIG1ldGhvZHMgYGBfZm9ybWF0dGVyX3BhcnNlcmBgIGFuZAotICBgYF9mb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdGBgIGludG8gYSBuZXcgYGBfc3RyaW5nYGAgbW9kdWxlLgotCi0tIElzc3VlICM5OTkyOiBSZW1vdmUgUFlUSE9ORlNFTkNPRElORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMDQ2NTogZml4IGJyb2tlbiBkZWxlZ2F0aW5nIG9mIGF0dHJpYnV0ZXMgYnkgZ3ppcC5fUGFkZGVkRmlsZS4KLQotLSBJc3N1ZSAjMTAzNTY6IERlY2ltYWwuX19oYXNoX18oLTEpIHNob3VsZCByZXR1cm4gLTIuCi0KLS0gSXNzdWUgIzE1NTMzNzU6IGxvZ2dpbmc6IEFkZGVkIHN0YWNrX2luZm8ga3dhcmcgdG8gZGlzcGxheSBzdGFjayBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjNTExMTogSVB2NiBIb3N0IGluIHRoZSBIZWFkZXIgaXMgd3JhcHBlZCBpbnNpZGUgWyBdLiBQYXRjaCBieSBDaGFuZHJ1LgotCi0tIEZpeCBGcmFjdGlvbi5fX2hhc2hfXyBzbyB0aGF0IEZyYWN0aW9uLl9faGFzaF9fKC0xKSBpcyAtMi4gIChTZWUgYWxzbyBpc3N1ZQotICAjMTAzNTYuKQotCi0tIElzc3VlICM0NDcxOiBBZGQgdGhlIElNQVAuc3RhcnR0bHMoKSBtZXRob2QgdG8gZW5hYmxlIGVuY3J5cHRpb24gb24gc3RhbmRhcmQKLSAgSU1BUDQgY29ubmVjdGlvbnMuICBPcmlnaW5hbCBwYXRjaCBieSBMb3JlbnpvIE0uIENhdHVjY2kuCi0KLS0gSXNzdWUgIzE0NjYwNjU6IEFkZCAndmFsaWRhdGUnIG9wdGlvbiB0byBiYXNlNjQuYjY0ZGVjb2RlIHRvIHJhaXNlIGFuIGVycm9yIGlmCi0gIHRoZXJlIGFyZSBub24tYmFzZTY0IGFscGhhYmV0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0LgotCi0tIElzc3VlICMxMDM4NjogQWRkIF9fYWxsX18gdG8gdG9rZW4gbW9kdWxlOyB0aGlzIHNpbXBsaWZpZXMgaW1wb3J0aW5nIGluCi0gIHRva2VuaXplIG1vZHVsZSBhbmQgcHJldmVudHMgbGVha2luZyBvZiBwcml2YXRlIG5hbWVzIHRocm91Z2ggYGBpbXBvcnQgKmBgLgotCi0tIElzc3VlICM0NDcxOiBQcm9wZXJseSBzaHV0ZG93biBzb2NrZXQgaW4gSU1BUC5zaHV0ZG93bigpLiAgUGF0Y2ggYnkgTG9yZW56bwotICBNLiBDYXR1Y2NpLgotCi0tIEZpeCBJTUFQLmxvZ2luKCkgdG8gd29yayBwcm9wZXJseS4KLQotLSBJc3N1ZSAjOTI0NDogbXVsdGlwcm9jZXNzaW5nIHBvb2wgd29ya2VyIHByb2Nlc3NlcyBjb3VsZCB0ZXJtaW5hdGUKLSAgdW5leHBlY3RlZGx5IGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgYSB0YXNrIGNvdWxkIG5vdCBiZSBwaWNrbGVkLiAgT25seSB0aGUKLSAgYGByZXByYGAgb2Ygc3VjaCBlcnJvcnMgYXJlIG5vdyBzZW50IGJhY2ssIHdyYXBwZWQgaW4gYW4KLSAgYGBNYXliZUVuY29kaW5nRXJyb3JgYCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzkyNDQ6IFRoZSBgYGFwcGx5X2FzeW5jKClgYCBhbmQgYGBtYXBfYXN5bmMoKWBgIG1ldGhvZHMgb2YKLSAgYGBtdWx0aXByb2Nlc3NpbmcuUG9vbGBgIG5vdyBhY2NlcHRzIGEgYGBlcnJvcl9jYWxsYmFja2BgIGFyZ3VtZW50LiAgVGhpcyBjYW4KLSAgYmUgYSBjYWxsYmFjayB3aXRoIHRoZSBzaWduYXR1cmUgYGBjYWxsYmFjayhleGMpYGAsIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGlmCi0gIHRoZSB0YXJnZXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTAwMjI6IFRoZSBkaWN0aW9uYXJ5IHJldHVybmVkIGJ5IHRoZSBgYGdldHBlZXJjZXJ0KClgYCBtZXRob2Qgb2YgU1NMCi0gIHNvY2tldHMgbm93IGhhcyBhZGRpdGlvbmFsIGl0ZW1zIHN1Y2ggYXMgYGBpc3N1ZXJgYCBhbmQgYGBub3RCZWZvcmVgYC4KLQotLSBgYHVzZW5ldHJjYGAgaXMgbm93IGZhbHNlIGJ5IGRlZmF1bHQgZm9yIE5OVFAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTkyNjogQWRkIHN1cHBvcnQgZm9yIE5OVFAgb3ZlciBTU0wgb24gcG9ydCA1NjMsIGFzIHdlbGwgYXMgU1RBUlRUTFMuCi0gIFBhdGNoIGJ5IEFuZHJldyBWYW50LgotCi0tIElzc3VlICMxMDMzNTogQWRkIHRva2VuaXplLm9wZW4oKSwgZGV0ZWN0IHRoZSBmaWxlIGVuY29kaW5nIHVzaW5nCi0gIHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIGFuZCBvcGVuIGl0IGluIHJlYWQgb25seSBtb2RlLgotCi0tIElzc3VlICMxMDMyMTogQWRkIHN1cHBvcnQgZm9yIGJpbmFyeSBkYXRhIHRvIHNtdHBsaWIuU01UUC5zZW5kbWFpbCwgYW5kIGEgbmV3Ci0gIG1ldGhvZCBzZW5kX21lc3NhZ2UgdG8gc2VuZCBhbiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2Ugb2JqZWN0LgotCi0tIElzc3VlICM2MDExOiBzeXNjb25maWcgYW5kIGRpc3R1dGlscy5zeXNjb25maWcgdXNlIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKLSAgaGFuZGxlciB0byBwYXJzZSB0aGUgTWFrZWZpbGUgZmlsZS4gIEF2b2lkIGEgVW5pY29kZURlY29kZUVycm9yIGlmIHRoZSBzb3VyY2UKLSAgY29kZSBkaXJlY3RvcnkgbmFtZSBjb250YWlucyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIHRoZSBsb2NhbGUgZW5jb2RpbmcgaXMKLSAgQVNDSUkuCi0KLS0gSXNzdWUgIzEwMzI5OiBUaGUgdHJhY2UgbW9kdWxlIHdyaXRlcyByZXBvcnRzIHVzaW5nIHRoZSBpbnB1dCBQeXRob24gc2NyaXB0Ci0gIGVuY29kaW5nLCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuICBQYXRjaCB3cml0dGVuIGJ5IEFsZXhhbmRlcgotICBCZWxvcG9sc2t5LgotCi0tIElzc3VlICMxMDEyNjogRml4IGRpc3R1dGlscycgdGVzdF9idWlsZCB3aGVuIFB5dGhvbiB3YXMgYnVpbHQgd2l0aAotICAtLWVuYWJsZS1zaGFyZWQuCi0KLS0gSXNzdWUgIzkyODE6IFByZXZlbnQgcmFjZSBjb25kaXRpb24gd2l0aCBta2RpciBpbiBkaXN0dXRpbHMuICBQYXRjaCBieQotICBBcmZyZXZlci4KLQotLSBJc3N1ZSAjMTAyMjk6IEZpeCBjYWNoaW5nIGVycm9yIGluIGdldHRleHQuCi0KLS0gSXNzdWUgIzEwMjUyOiBDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIGRpc3R1dGlscyBjb2RlIGFuZAotICB0ZXN0cy4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbCwgY29tcGxldGVkIGJ5IMOJcmljIEFyYXVqby4KLQotLSBJc3N1ZSAjMTAxODA6IFBpY2tsaW5nIGZpbGUgb2JqZWN0cyBpcyBub3cgZXhwbGljaXRseSBmb3JiaWRkZW4sIHNpbmNlCi0gIHVucGlja2xpbmcgdGhlbSBwcm9kdWNlZCBub25zZW5zaWNhbCByZXN1bHRzLgotCi0tIElzc3VlICMxMDMxMTogVGhlIHNpZ25hbCBtb2R1bGUgbm93IHJlc3RvcmVzIGVycm5vIGJlZm9yZSByZXR1cm5pbmcgZnJvbSBpdHMKLSAgbG93LWxldmVsIHNpZ25hbCBoYW5kbGVyLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTAyODI6IEFkZCBhIGBgbm50cF9pbXBsZW1lbnRhdGlvbmBgIGF0dHJpYnV0ZSB0byBOTlRQIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEwMjgzOiBBZGQgYSBgYGdyb3VwX3BhdHRlcm5gYCBhcmd1bWVudCB0byBOTlRQLmxpc3QoKS4KLQotLSBJc3N1ZSAjMTAxNTU6IEFkZCBJSVNDR0lIYW5kbGVyIHRvIHdzZ2lyZWYuaGFuZGxlcnMgdG8gc3VwcG9ydCBJSVMgQ0dJCi0gIGVudmlyb25tZW50IGJldHRlciwgYW5kIHRvIGNvcnJlY3QgdW5pY29kZSBlbnZpcm9ubWVudCB2YWx1ZXMgZm9yIFdTR0kgMS4wLjEuCi0KLS0gSXNzdWUgIzEwMjgxOiBubnRwbGliIG5vdyByZXR1cm5zIE5vbmUgZm9yIGFic2VudCBmaWVsZHMgaW4gdGhlIE9WRVIvWE9WRVIKLSAgcmVzcG9uc2UsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCi0KLS0gd3NnaXJlZiBub3cgaW1wbGVtZW50cyBhbmQgdmFsaWRhdGVzIFBFUCAzMzMzLCByYXRoZXIgdGhhbiBhbiBleHBlcmltZW50YWwKLSAgZXh0ZW5zaW9uIG9mIFBFUCAzMzMuICAoTm90ZTogZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gMy54IG1heSBoYXZlCi0gIGluY29ycmVjdGx5IHZhbGlkYXRlZCBzb21lIG5vbi1jb21wbGlhbnQgYXBwbGljYXRpb25zIGFzIFdTR0kgY29tcGxpYW50OyBpZgotICB5b3VyIGFwcCB2YWxpZGF0ZXMgd2l0aCBQeXRob24gPDMuMmIxKywgYnV0IG5vdCBvbiB0aGlzIHZlcnNpb24sIGl0IGlzIGxpa2VseQotICB0aGUgY2FzZSB0aGF0IHlvdXIgYXBwIHdhcyBub3QgY29tcGxpYW50LikKLQotLSBJc3N1ZSAjMTAyODA6IE5OVFAubm50cF92ZXJzaW9uIHNob3VsZCByZWZsZWN0IHRoZSBoaWdoZXN0IHZlcnNpb24gYWR2ZXJ0aXNlZAotICBieSB0aGUgc2VydmVyLgotCi0tIElzc3VlICMxMDE4NDogVG91Y2ggZGlyZWN0b3JpZXMgb25seSBvbmNlIHdoZW4gZXh0cmFjdGluZyBhIHRhcmZpbGUuCi0KLS0gSXNzdWUgIzEwMTk5OiBOZXcgcGFja2FnZSwgYGB0dXJ0bGVkZW1vYGAgbm93IGNvbnRhaW5zIHNlbGVjdGVkIGRlbW8gc2NyaXB0cwotICB0aGF0IHdlcmUgZm9ybWVybHkgZm91bmQgdW5kZXIgRGVtby90dXJ0bGUuCi0KLS0gSXNzdWUgIzEwMjY1OiBDbG9zZSBmaWxlIG9iamVjdHMgZXhwbGljaXRseSBpbiBzdW5hdS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBJc3N1ZSAjMTAyNjY6IHV1LmRlY29kZSBkaWRuJ3QgY2xvc2UgaW5fZmlsZSBleHBsaWNpdGx5IHdoZW4gaXQgd2FzIGdpdmVuIGFzIGEKLSAgZmlsZW5hbWUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzEwMTEwOiBRdWV1ZSBvYmplY3RzIGRpZG4ndCByZWNvZ25pemUgZnVsbCBxdWV1ZXMgd2hlbiB0aGUgbWF4c2l6ZQotICBwYXJhbWV0ZXIgaGFkIGJlZW4gcmVkdWNlZC4KLQotLSBJc3N1ZSAjMTAxNjA6IFNwZWVkIHVwIG9wZXJhdG9yLmF0dHJnZXR0ZXIuICBQYXRjaCBieSBDaHJpc3RvcyBHZW9yZ2lvdS4KLQotLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gYmFzaWNDb25maWcoKSB0byBhbGxvdyAlLCB7fSBvciAkLWZvcm1hdHRpbmcuCi0KLS0gSXNzdWUgIzU3Mjk6IGpzb24uZHVtcHMoKSBub3cgc3VwcG9ydHMgdXNpbmcgYSBzdHJpbmcgc3VjaCBhcyAnXHQnIGZvcgotICBwcmV0dHktcHJpbnRpbmcgbXVsdGlsZXZlbCBvYmplY3RzLgotCi0tIElzc3VlICMxMDI1MzogRmlsZUlPIGxlYWtzIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvcgotICBhcHBlbmQgdGhhdCBpc24ndCBzZWVrYWJsZS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBmb3IgZmlsZS1saWtlIG9iamVjdHMgcmV0dXJuZWQgYnkgbWFpbGJveAotICBgYGdldF9maWxlKClgYCBtZXRob2RzLgotCi0tIElzc3VlICMxMDI0NjogdXUuZW5jb2RlIGRpZG4ndCBjbG9zZSBmaWxlIG9iamVjdHMgZXhwbGljaXRseSB3aGVuIGZpbGVuYW1lcwotICB3ZXJlIGdpdmVuIHRvIGl0LiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICMxMDE5ODogZml4IGR1cGxpY2F0ZSBoZWFkZXIgd3JpdHRlbiB0byB3YXZlIGZpbGVzIHdoZW4gd3JpdGVmcmFtZXMoKSBpcwotICBjYWxsZWQgd2l0aG91dCBkYXRhLgotCi0tIENsb3NlIGZpbGUgb2JqZWN0cyBpbiBtb2R1bGVmaW5kZXIgaW4gYSB0aW1lbHkgbWFubmVyLgotCi0tIENsb3NlIGEgaW8uVGV4dElPV3JhcHBlciBvYmplY3QgaW4gZW1haWwucGFyc2VyIGluIGEgdGltZWx5IG1hbm5lci4KLQotLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIGRpc3R1dGlscy5zeXNjb25maWcgaW4gYSB0aW1lbHkgbWFubmVyLgotCi0tIENsb3NlIGEgZmlsZSBvYmplY3QgaW4gcGtndXRpbCBpbiBhIHRpbWVseSBtYW5uZXIuCi0KLS0gSXNzdWUgIzEwMjMzOiBDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIHRoZSB0YXJmaWxlIG1vZHVsZSBhbmQKLSAgaXRzIHRlc3Qgc3VpdGUuCi0KLS0gSXNzdWUgIzEwMDkzOiBSZXNvdXJjZVdhcm5pbmdzIGFyZSBub3cgaXNzdWVkIHdoZW4gZmlsZXMgYW5kIHNvY2tldHMgYXJlCi0gIGRlYWxsb2NhdGVkIHdpdGhvdXQgZXhwbGljaXQgY2xvc2luZy4gIFRoZXNlIHdhcm5pbmdzIGFyZSBzaWxlbmNlZCBieSBkZWZhdWx0LAotICBleGNlcHQgaW4gcHlkZWJ1ZyBtb2RlLgotCi0tIHRhcmZpbGUucHk6IEFkZCBzdXBwb3J0IGZvciBhbGwgbWlzc2luZyB2YXJpYW50cyBvZiB0aGUgR05VIHNwYXJzZSBleHRlbnNpb25zCi0gIGFuZCBjcmVhdGUgZmlsZXMgd2l0aCBob2xlcyB3aGVuIGV4dHJhY3Rpbmcgc3BhcnNlIG1lbWJlcnMuCi0KLS0gSXNzdWUgIzEwMjE4OiBSZXR1cm4gdGltZW91dCBzdGF0dXMgZnJvbSBgYENvbmRpdGlvbi53YWl0YGAgaW4gdGhyZWFkaW5nLgotCi0tIElzc3VlICM3MzUxOiBBZGQgYGB6aXBmaWxlLkJhZFppcEZpbGVgYCBzcGVsbGluZyBvZiB0aGUgZXhjZXB0aW9uIG5hbWUgYW5kCi0gIGRlcHJlY2F0ZSB0aGUgb2xkIG5hbWUgYGB6aXBmaWxlLkJhZFppcGZpbGVgYC4KLQotLSBJc3N1ZSAjNTAyNzogVGhlIHN0YW5kYXJkIGBgeG1sYGAgbmFtZXNwYWNlIGlzIG5vdyB1bmRlcnN0b29kIGJ5Ci0gIHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yIGFzIGJlaW5nIGJvdW5kIHRvCi0gIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS4gIFBhdGNoIGJ5IFRyb3kgSi4gRmFycmVsbC4KLQotLSBJc3N1ZSAjNTk3NTogQWRkIGNzdi51bml4X2RpYWxlY3QgY2xhc3MuCi0KLS0gSXNzdWUgIzc3NjE6IHRlbG5ldGxpYi5pbnRlcmFjdCBmYWlsdXJlcyBvbiBXaW5kb3dzIGZpeGVkLgotCi0tIGxvZ2dpbmc6IEFkZGVkIHN0eWxlIG9wdGlvbiB0byBGb3JtYXR0ZXIgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgotCi0tIElzc3VlICM1MTc4OiBBZGRlZCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBhcyBhCi0gIGNvbnRleHQgbWFuYWdlci4KLQotLSBJc3N1ZSAjMTM0OTEwNjogR2VuZXJhdG9yIChhbmQgQnl0ZXNHZW5lcmF0b3IpIGZsYXR0ZW4gbWV0aG9kIGFuZCBIZWFkZXIKLSAgZW5jb2RlIG1ldGhvZCBub3cgc3VwcG9ydCBhICdsaW5lc2VwJyBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNTYzOTogQWRkIGEgKnNlcnZlcl9ob3N0bmFtZSogYXJndW1lbnQgdG8gYGBTU0xDb250ZXh0LndyYXBfc29ja2V0YGAgaW4KLSAgb3JkZXIgdG8gc3VwcG9ydCB0aGUgVExTIFNOSSBleHRlbnNpb24uICBgYEhUVFBTQ29ubmVjdGlvbmBgIGFuZCBgYHVybG9wZW4oKWBgCi0gIGFsc28gdXNlIHRoaXMgYXJndW1lbnQsIHNvIHRoYXQgSFRUUFMgdmlydHVhbCBob3N0cyBhcmUgbm93IHN1cHBvcnRlZC4KLQotLSBJc3N1ZSAjMTAxNjY6IEF2b2lkIHJlY3Vyc2lvbiBpbiBwc3RhdHMgU3RhdHMuYWRkKCkgZm9yIG1hbnkgc3RhdHMgaXRlbXMuCi0KLS0gSXNzdWUgIzEwMTYzOiBTa2lwIHVucmVhZGFibGUgcmVnaXN0cnkga2V5cyBkdXJpbmcgbWltZXR5cGVzIGluaXRpYWxpemF0aW9uLgotCi0tIGxvZ2dpbmc6IE1hZGUgU3RyZWFtSGFuZGxlciB0ZXJtaW5hdG9yIGNvbmZpZ3VyYWJsZS4KLQotLSBsb2dnaW5nOiBBbGxvd2VkIGZpbHRlcnMgdG8gYmUganVzdCBjYWxsYWJsZXMuCi0KLS0gbG9nZ2luZzogQWRkZWQgdGVzdHMgZm9yIF9sb2dSZWNvcmRDbGFzcyBjaGFuZ2VzLgotCi0tIElzc3VlICMxMDA5MjogUHJvcGVybHkgcmVzZXQgbG9jYWxlIGluIGNhbGVuZGFyLkxvY2FsZSpDYWxlbmRhciBjbGFzc2VzLgotCi0tIGxvZ2dpbmc6IEFkZGVkIF9sb2dSZWNvcmRDbGFzcywgZ2V0TG9nUmVjb3JkQ2xhc3MsIHNldExvZ1JlY29yZENsYXNzIHRvCi0gIGluY3JlYXNlIGZsZXhpYmlsaXR5IG9mIExvZ1JlY29yZCBjcmVhdGlvbi4KLQotLSBJc3N1ZSAjNTExNzogQ2FzZSBub3JtYWxpemF0aW9uIHdhcyBuZWVkZWQgb24gbnRwYXRoLnJlbHBhdGgoKS4gIEFsc28gZml4ZWQKLSAgcm9vdCBkaXJlY3RvcnkgaXNzdWUgb24gcG9zaXhwYXRoLnJlbHBhdGgoKS4gIChQb3J0ZWQgd29ya2luZyBmaXhlcyBmcm9tCi0gIG50cGF0aC4pCi0KLS0gSXNzdWUgIzEzNDM6IHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yIG5vdyBoYXMgYW4gb3B0aW9uCi0gIHNob3J0X2VtcHR5X2VsZW1lbnRzIHRvIGRpcmVjdCBpdCB0byB1c2Ugc2VsZi1jbG9zaW5nIHRhZ3Mgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjOTgwNyAocGFydCAxKTogRXhwb3NlIHRoZSBBQkkgZmxhZ3MgaW4gc3lzLmFiaWZsYWdzLiAgQWRkIC0tYWJpZmxhZ3MKLSAgc3dpdGNoIHRvIHB5dGhvbi1jb25maWcgZm9yIGNvbW1hbmQgbGluZSBhY2Nlc3MuCi0KLS0gSXNzdWUgIzYwOTg6IERvbid0IGNsYWltIERPTSBsZXZlbCAzIGNvbmZvcm1hbmNlIGluIG1pbmlkb20uCi0KLS0gSXNzdWUgIzU3NjI6IEZpeCBBdHRyaWJ1dGVFcnJvciByYWlzZWQgYnkgYGB4bWwuZG9tLm1pbmlkb21gYCB3aGVuIGFuIGVtcHR5Ci0gIFhNTCBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIGVuY291bnRlcmVkLgotCi0tIElzc3VlICMyODMwOiBBZGQgdGhlIGBgaHRtbC5lc2NhcGUoKWBgIGZ1bmN0aW9uLCB3aGljaCBxdW90ZXMgYWxsIHByb2JsZW1hdGljCi0gIGNoYXJhY3RlcnMgYnkgZGVmYXVsdC4gIERlcHJlY2F0ZSBgYGNnaS5lc2NhcGUoKWBgLgotCi0tIElzc3VlICM5NDA5OiBGaXggdGhlIHJlZ2V4IHRvIG1hdGNoIGFsbCBraW5kIG9mIGZpbGVuYW1lcywgZm9yIGludGVyYWN0aXZlCi0gIGRlYnVnZ2luZyBpbiBkb2N0ZXN0cy4KLQotLSBJc3N1ZSAjOTE4MzogYGBkYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoMCkpYGAgd2lsbCBub3cgcmV0dXJuIHRoZQotICBzYW1lIGluc3RhbmNlIGFzIGBgZGF0ZXRpbWUudGltZXpvbmUudXRjYGAuCi0KLS0gSXNzdWUgIzc1MjM6IEFkZCBTT0NLX0NMT0VYRUMgYW5kIFNPQ0tfTk9OQkxPQ0sgdG8gdGhlIHNvY2tldCBtb2R1bGUsIHdoZXJlCi0gIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KLQotLSBJc3N1ZSAjMTAwNjM6IGZpbGU6Ly8gc2NoZW1lIHdpbGwgc3RvcCBhY2Nlc3NpbmcgcmVtb3RlIGhvc3RzIHZpYSBmdHAKLSAgcHJvdG9jb2wuIGZpbGU6Ly8gdXJscyBoYWQgZmFsbGJhY2sgdG8gYWNjZXNzIHJlbW90ZSBob3N0cyB2aWEgZnRwLiBUaGlzIHdhcwotICBub3QgY29ycmVjdCwgY2hhbmdlIGlzIG1hZGUgdG8gcmFpc2UgYSBVUkxFcnJvciB3aGVuIGEgcmVtb3RlIGhvc3QgaXMgdHJpZWQgdG8KLSAgYWNjZXNzIHZpYSBmaWxlOi8vIHNjaGVtZS4KLQotLSBJc3N1ZSAjMTcxMDcwMzogV3JpdGUgc3RydWN0dXJlcyBmb3IgYW4gZW1wdHkgWklQIGFyY2hpdmUgd2hlbiBhIFppcEZpbGUgaXMKLSAgY3JlYXRlZCBpbiBtb2RlcyAnYScgb3IgJ3cnIGFuZCB0aGVuIGNsb3NlZCB3aXRob3V0IGFkZGluZyBhbnkgZmlsZXMuIFJhaXNlCi0gIEJhZFppcGZpbGUgKHJhdGhlciB0aGFuIElPRXJyb3IpIHdoZW4gb3BlbmluZyBzbWFsbCBub24tWklQIGZpbGVzLgotCi0tIElzc3VlICMxMDA0MTogVGhlIHNpZ25hdHVyZSBvZiBvcHRpb25hbCBhcmd1bWVudHMgaW4gc29ja2V0Lm1ha2VmaWxlKCkgZGlkbid0Ci0gIG1hdGNoIHRoYXQgb2YgaW8ub3BlbigpLCBhbmQgdGhleSBhbHNvIGRpZG4ndCBnZXQgZm9yd2FyZGVkIHByb3Blcmx5IHRvCi0gIFRleHRJT1dyYXBwZXIgaW4gdGV4dCBtb2RlLiAgUGF0Y2ggYnkgS2FpIFpodS4KLQotLSBJc3N1ZSAjOTAwMzogaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uLCB1cmxsaWIucmVxdWVzdC5IVFRQU0hhbmRsZXIgYW5kCi0gIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4gbm93IHRha2Ugb3B0aW9uYWwgYXJndW1lbnRzIHRvIGFsbG93IGZvciBzZXJ2ZXIKLSAgY2VydGlmaWNhdGUgY2hlY2tpbmcsIGFzIHJlY29tbWVuZGVkIGluIHB1YmxpYyB1c2VzIG9mIEhUVFBTLgotCi0tIElzc3VlICM2NjEyOiBGaXggc2l0ZSBhbmQgc3lzY29uZmlnIHRvIGNhdGNoIG9zLmdldGN3ZCgpIGVycm9yLCBlZy4gaWYgdGhlCi0gIGN1cnJlbnQgZGlyZWN0b3J5IHdhcyBkZWxldGVkLiBQYXRjaCB3cml0dGVuIGJ5IFcuIFRyZXZvciBLaW5nLgotCi0tIElzc3VlICMzODczOiBTcGVlZCB1cCB1bnBpY2tsaW5nIGZyb20gZmlsZSBvYmplY3RzIHRoYXQgaGF2ZSBhIHBlZWsoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzEwMDc1OiBBZGQgYSBzZXNzaW9uX3N0YXRzKCkgbWV0aG9kIHRvIFNTTENvbnRleHQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjOTk0ODogRml4ZWQgcHJvYmxlbSBvZiBsb3NpbmcgZmlsZW5hbWUgY2FzZSBpbmZvcm1hdGlvbi4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzUxMDk6IGFycmF5LmFycmF5IGNvbnN0cnVjdG9yIHdpbGwgbm93IHVzZSBmYXN0IGNvZGUgd2hlbgotICBpbml0aWFsIGRhdGEgaXMgcHJvdmlkZWQgaW4gYW4gYXJyYXkgb2JqZWN0IHdpdGggY29ycmVjdCB0eXBlLgotCi0tIElzc3VlICM2MzE3OiBOb3cgd2luc291bmQuUGxheVNvdW5kIG9ubHkgYWNjZXB0cyB1bmljb2RlLgotCi0tIElzc3VlICM2MzE3OiBOb3cgd2luc291bmQuUGxheVNvdW5kIGNhbiBhY2NlcHQgbm9uIGFzY2lpIGZpbGVuYW1lLgotCi0tIElzc3VlICM5Mzc3OiBVc2UgVW5pY29kZSBBUEkgZm9yIGdldGhvc3RuYW1lIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEwMTQzOiBVcGRhdGUgIm9zLnBhdGhjb25mIiB2YWx1ZXMuCi0KLS0gSXNzdWUgIzY1MTg6IFN1cHBvcnQgY29udGV4dCBtYW5hZ2VyIHByb3Rjb2wgZm9yIG9zc2F1ZGlvZGV2IHR5cGVzLgotCi0tIElzc3VlICM2NzgyNTA6IE1ha2UgbW1hcCBmbHVzaCBhIG5vb3Agb24gQUNDRVNTX1JFQUQgYW5kIEFDQ0VTU19DT1BZLgotCi0tIElzc3VlICM5MDU0OiBGaXggYSBjcmFzaCBvY2N1cnJpbmcgd2hlbiB1c2luZyB0aGUgcHlleHBhdCBtb2R1bGUgd2l0aCBleHBhdAotICB2ZXJzaW9uIDIuMC4xLgotCi0tIElzc3VlICM1MzU1OiBQcm92aWRlIG1hcHBpbmdzIGZyb20gRXhwYXQgZXJyb3IgbnVtYmVycyB0byBzdHJpbmcgZGVzY3JpcHRpb25zCi0gIGFuZCBiYWNrd2FyZHMsIGluIG9yZGVyIHRvIGFjdHVhbGx5IG1ha2UgaXQgcG9zc2libGUgdG8gYW5hbHl6ZSBlcnJvciBjb2RlcwotICBwcm92aWRlZCBieSBFeHBhdEVycm9yLgotCi0tIFRoZSBVbmljb2RlIGRhdGFiYXNlIHdhcyB1cGRhdGVkIHRvIDYuMC4wLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTAyODg6IFRoZSBkZXByZWNhdGVkIGZhbWlseSBvZiAiY2hhciItaGFuZGxpbmcgbWFjcm9zCi0gIChJU0xPV0VSKCkvSVNVUFBFUigpL2V0YykgaGF2ZSBub3cgYmVlbiByZW1vdmVkOiB1c2UgUHlfSVNMT1dFUigpIGV0YyBpbnN0ZWFkLgotCi0tIElzc3VlICM5Nzc4OiBIYXNoIHZhbHVlcyBhcmUgbm93IGFsd2F5cyB0aGUgc2l6ZSBvZiBwb2ludGVycy4gQSBuZXcgUHlfaGFzaF90Ci0gIHR5cGUgaGFzIGJlZW4gaW50cm9kdWNlZC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMTE3OiBUb29scy9zY3JpcHRzL3JlaW5kZW50LnB5IG5vdyBhY2NlcHRzIHNvdXJjZSBmaWxlcyB0aGF0IHVzZQotICBlbmNvZGluZyBvdGhlciB0aGFuIEFTQ0lJIG9yIFVURi04LiAgU291cmNlIGVuY29kaW5nIGlzIHByZXNlcnZlZCB3aGVuCi0gIHJlaW5kZW50ZWQgY29kZSBpcyB3cml0dGVuIHRvIGEgZmlsZS4KLQotLSBJc3N1ZSAjNzI4NzogRGVtby9pbXB1dGlsL2tuZWUucHkgd2FzIHJlbW92ZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMzNjk5OiBGaXggdGVzdF9iaWdhZGRyc3BhY2UgYW5kIGV4dGVuZCBpdCB0byB0ZXN0IGJ5dGVzdHJpbmdzIGFzIHdlbGwKLSAgYXMgdW5pY29kZSBzdHJpbmdzLiAgSW5pdGlhbCBwYXRjaCBieSBTYW5kcm8gVG9zaS4KLQotLSBJc3N1ZSAjMTAyOTQ6IFJlbW92ZSBkZWFkIGNvZGUgZm9ybSB0ZXN0X3VuaWNvZGVfZmlsZS4KLQotLSBJc3N1ZSAjMTAxMjM6IERvbid0IHVzZSBub24tYXNjaWkgZmlsZW5hbWVzIGluIHRlc3RfZG9jdGVzdCB0ZXN0cy4gQWRkIGEgbmV3Ci0gIHRlc3Qgc3BlY2lmaWMgdG8gdW5pY29kZSAobm9uLWFzY2lpIG5hbWUgYW5kIGZpbGVuYW1lKS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEwMjY4OiBBZGQgYSAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucyBvcHRpb24gdG8gY29uZmlndXJlLgotCi0tIElzc3VlICM4ODUyOiBBbGxvdyB0aGUgc29ja2V0IG1vZHVsZSB0byBidWlsZCBvbiBPcGVuU29sYXJpcy4KLQotLSBEcm9wIC1PUFQ6T2xpbWl0IGNvbXBpbGVyIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTAwOTQ6IFVzZSB2ZXJzaW9uZWQgLnNvIGZpbGVzIG9uIEdOVS9rZnJlZUJTRCBhbmQgdGhlIEdOVSBIdXJkLgotCi0tIEFjY2VwdCBPcmFjbGUgQmVya2VsZXkgREIgNS4wIGFuZCA1LjEgYXMgYmFja2VuZCBmb3IgdGhlIGRibSBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzc0NzM6IGF2b2lkIGxpbmsgZXJyb3JzIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBhIGRpZmZlcmVudCBzZXQKLSAgb2YgYXJjaGl0ZWN0dXJlcyB0aGFuIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAzPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA5LU9jdC0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAwNjg6IEdsb2JhbCBvYmplY3RzIHdoaWNoIGhhdmUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoIHRoZWlyIG1vZHVsZSdzCi0gIGRpY3QgYXJlIG5vdyBjbGVhcmVkIGFnYWluLiBUaGlzIGNhdXNlcyBpc3N1ZSAjNzE0MCB0byBhcHBlYXIgYWdhaW4uCi0KLS0gSXNzdWUgIzk3Mzg6IERvY3VtZW50IFB5RXJyX1NldFN0cmluZygpIGFuZCBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoKQotICBlbmNvZGluZ3MuCi0KLS0gYXN0LmxpdGVyYWxfZXZhbCgpIGNhbiBub3cgaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMuICBJdCBpcyBhbHNvIGEgbGl0dGxlIG1vcmUKLSAgbGliZXJhbCBpbiB3aGF0IGl0IGFjY2VwdHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGhlIHNhZmV0eSBvZiB0aGUgZXZhbHVhdGlvbi4KLSAgRm9yIGV4YW1wbGUsIDNqKzQgYW5kIDMrNCs1IGFyZSBib3RoIGFjY2VwdGVkLgotCi0tIElzc3VlICMxMDAwNjogdHlwZS5fX2Fic3RyYWN0bWV0aG9kc19fIG5vdyByYWlzZXMgYW4gQXR0cmlidXRlRXJyb3IuICBBcyBhCi0gIHJlc3VsdCBtZXRhY2xhc3NlcyBjYW4gbm93IGJlIEFCQ3MgKHNlZSAjOTUzMykuCi0KLS0gSXNzdWUgIzg2NzA6IGN0eXBlcy5jX3djaGFyIHN1cHBvcnRzIG5vbi1CTVAgY2hhcmFjdGVycyB3aXRoIDMyIGJpdHMgd2NoYXJfdC4KLQotLSBJc3N1ZSAjODY3MDogUHlVbmljb2RlX0FzV2lkZUNoYXIoKSBhbmQgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKSByZXBsYWNlCi0gIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgYnkgc2luZ2xlIG5vbi1CTVAgY2hhcmFjdGVycyBmb3IgMTYgYml0cyBQeV9VTklDT0RFIGFuZAotICAzMiBiaXRzIHdjaGFyX3QgKGVnLiBMaW51eCBpbiBuYXJyb3cgYnVpbGQpLgotCi0tIElzc3VlICMxMDAwMzogQWxsb3cgaGFuZGxpbmcgb2YgU0lHQlJFQUsgb24gV2luZG93cy4gRml4ZXMgYSByZWdyZXNzaW9uCi0gIGludHJvZHVjZWQgYnkgaXNzdWUgIzkzMjQuCi0KLS0gSXNzdWUgIzk5Nzk6IENyZWF0ZSBmdW5jdGlvbiBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpLgotCi0tIElzc3VlICM3Mzk3OiBNZW50aW9uIHRoYXQgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSBpcyBwcm9iYWJseSB3aGF0IHNvbWVvbmUKLSAgcmVhbGx5IHdhbnRzIHRvIGJlIHVzaW5nIGluIF9faW1wb3J0X18ncyBkb2NzdHJpbmcuCi0KLS0gSXNzdWUgIzg1MjE6IEFsbG93IENyZWF0ZUtleUV4LCBPcGVuS2V5RXgsIGFuZCBEZWxldGVLZXlFeCBmdW5jdGlvbnMgb2Ygd2lucmVnCi0gIHRvIHVzZSBuYW1lZCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzk5MzA6IFJlbW92ZSBib2d1cyBzdWJ0eXBlIGNoZWNrIHRoYXQgd2FzIGNhdXNpbmcgKGUuZy4pCi0gIGZsb2F0Ll9fcmRpdl9fKDIuMCwgMykgdG8gcmV0dXJuIE5vdEltcGxlbWVudGVkIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDEuNS4KLQotLSBJc3N1ZSAjOTgwODogSW1wbGVtZW50IG9zLmdldGxvZ2luIGZvciBXaW5kb3dzLiBQYXRjaCBieSBKb24gQW5nbGluLgotCi0tIElzc3VlICM5OTAxOiBEZXN0cm95aW5nIHRoZSBHSUwgaW4gUHlfRmluYWxpemUoKSBjYW4gZmFpbCBpZiBzb21lIG90aGVyCi0gIHRocmVhZHMgYXJlIHN0aWxsIHJ1bm5pbmcuICBJbnN0ZWFkLCByZWluaXRpYWxpemUgdGhlIEdJTCBvbiBhIHNlY29uZCBjYWxsIHRvCi0gIFB5X0luaXRpYWxpemUoKS4KLQotLSBBbGwgU3ludGF4RXJyb3JzIG5vdyBoYXZlIGEgY29sdW1uIG9mZnNldCBhbmQgdGhlcmVmb3JlIGEgY2FyZXQgd2hlbiB0aGUgZXJyb3IKLSAgaXMgcHJpbnRlZC4KLQotLSBJc3N1ZSAjOTI1MjogUHlJbXBvcnRfSW1wb3J0IG5vIGxvbmdlciB1c2VzIGEgZnJvbWxpc3QgaGFjayB0byByZXR1cm4gdGhlCi0gIG1vZHVsZSB0aGF0IHdhcyBpbXBvcnRlZCwgYnV0IGluc3RlYWQgZ2V0cyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMuCi0KLS0gSXNzdWUgIzkyMTM6IFRoZSByYW5nZSB0eXBlX2l0ZW1zIG5vdyBwcm92aWRlcyBpbmRleCgpIGFuZCBjb3VudCgpIG1ldGhvZHMsIHRvCi0gIGNvbmZvcm0gdG8gdGhlIFNlcXVlbmNlIEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbiBhbmQgRGFuaWVsIFN0dXR6YmFjaC4KLQotLSBJc3N1ZSAjNzk5NDogSXNzdWUgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGlmIG9iamVjdC5fX2Zvcm1hdF9fIGlzIGNhbGxlZAotICB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcuICBUaGlzIGlzIGFuIGVmZm9ydCB0byBmdXR1cmUtcHJvb2YgdXNlcgotICBjb2RlLiBJZiBhIGRlcml2ZWQgY2xhc3MgZG9lcyBub3QgY3VycmVudGx5IGltcGxlbWVudCBfX2Zvcm1hdF9fIGJ1dCBsYXRlcgotICBhZGRzIGl0cyBvd24gX19mb3JtYXRfXywgaXQgd291bGQgbW9zdCBsaWtlbHkgYnJlYWsgdXNlciBjb2RlIHRoYXQgaGFkCi0gIHN1cHBsaWVkIGEgZm9ybWF0IHN0cmluZy4gIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvIGEgRGVwcmVjYXRpb25XYXJpbmcgaW4KLSAgUHl0aG9uIDMuMyBhbmQgaXQgd2lsbCBiZSBhbiBlcnJvciBpbiBQeXRob24gMy40LgotCi0tIElzc3VlICM5ODI4OiBEZXN0cm95IHRoZSBHSUwgaW4gUHlfRmluYWxpemUoKSwgc28gdGhhdCBpdCBnZXRzIHByb3Blcmx5Ci0gIHJlLWNyZWF0ZWQgb24gYSBzdWJzZXF1ZW50IGNhbGwgdG8gUHlfSW5pdGlhbGl6ZSgpLiAgVGhlIHByb2JsZW0gKGEgY3Jhc2gpCi0gIHdvdWxkbid0IGFwcGVhciBpbiAzLjEgb3IgMi43IHdoZXJlIHRoZSBHSUwncyBzdHJ1Y3R1cmUgaXMgbW9yZSB0cml2aWFsLgotCi0tIElzc3VlICM5MjEwOiBDb25maWd1cmUgb3B0aW9uIC0td2l0aC13Y3R5cGUtZnVuY3Rpb25zIHdhcyByZW1vdmVkLiAgVXNpbmcgdGhlCi0gIGZ1bmN0aW9ucyBmcm9tIHRoZSBsaWJjIGNhdXNlZCB0aGUgbWV0aG9kcyAudXBwZXIoKSBhbmQgbG93ZXIoKSB0byBiZWNvbWUKLSAgbG9jYWxlIGF3YXJlIGFuZCBjcmVhdGVkIHN1YnRseSB3cm9uZyByZXN1bHRzLgotCi0tIElzc3VlICM5NzM4OiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGFuZCBQeUVycl9Gb3JtYXQoKSByYWlzZSBhbiBlcnJvciBvbiBhCi0gIG5vbi1BU0NJSSBieXRlIGluIHRoZSBmb3JtYXQgc3RyaW5nLgotCi0tIElzc3VlICM0NjE3OiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWUgZnJvbSB0aGUgbG9jYWwKLSAgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWQgYmxvY2suICBUaGlzIGxpbWl0YXRpb24KLSAgb2YgdGhlIGNvbXBpbGVyIGhhcyBiZWVuIGxpZnRlZCwgYW5kIGEgbmV3IG9wY29kZSBpbnRyb2R1Y2VkIChERUxFVEVfREVSRUYpLgotCi0tIElzc3VlICM5ODA0OiBhc2NpaSgpIG5vdyBhbHdheXMgcmVwcmVzZW50cyB1bmljb2RlIHN1cnJvZ2F0ZSBwYWlycyBhcyBhIHNpbmdsZQotICBgYFxVWFhYWFhYWFhgYCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgcHJpbnRhYmxlIG9yIG5vdC4KLSAgQWxzbywgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVyIG5vdyBqb2lucyBzdXJyb2dhdGUgcGFpcnMgaW50byBhCi0gIHNpbmdsZSBjaGFyYWN0ZXIgb24gVUNTLTIgYnVpbGRzLgotCi0tIElzc3VlICM5NzU3OiBtZW1vcnl2aWV3IG9iamVjdHMgZ2V0IGEgcmVsZWFzZSgpIG1ldGhvZCB0byByZWxlYXNlIHRoZQotICB1bmRlcmx5aW5nIGJ1ZmZlciAocHJldmlvdXNseSB0aGlzIHdhcyBvbmx5IGRvbmUgd2hlbiBkZWFsbG9jYXRpbmcgdGhlCi0gIG1lbW9yeXZpZXcpLCBhbmQgZ2FpbiBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgotCi0tIElzc3VlICM5Nzk3OiBweXN0YXRlLmMgd3JvbmdseSBhc3N1bWVkIHRoYXQgemVybyBjb3VsZG4ndCBiZSBhIHZhbGlkCi0gIHRocmVhZC1sb2NhbCBzdG9yYWdlIGtleS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyMjM2OiBkaXN0dXRpbHMnIG1rcGF0aCBpZ25vcmVkIHRoZSBtb2RlIHBhcmFtZXRlci4KLQotLSBGaXggdHlwbyBpbiBvbmUgc2Rpc3Qgb3B0aW9uIChtZWRhdGEtY2hlY2spLgotCi0tIElzc3VlICM5MTk5OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBkaXN0dXRpbHMuY21kLkNvbW1hbmQuYW5ub3VuY2UuCi0KLS0gSXNzdWUgIzE3MTg1NzQ6IEZpeCBvcHRpb25zIHRoYXQgd2VyZSBzdXBwb3NlZCB0byBhY2NlcHQgYXJndW1lbnRzIGJ1dCBkaWQKLSAgbm90IGluIGJ1aWxkX2NsaWIuCi0KLS0gSXNzdWUgIzk0Mzc6IEZpeCBidWlsZGluZyBDIGV4dGVuc2lvbnMgd2l0aCBub24tZGVmYXVsdCBMREZMQUdTLgotCi0tIElzc3VlICM0NjYxOiBlbWFpbCBjYW4gbm93IHBhcnNlIGJ5dGVzIGlucHV0IGFuZCBnZW5lcmF0ZSBlaXRoZXIgY29udmVydGVkCi0gIDdiaXQgb3V0cHV0IG9yIGJ5dGVzIG91dHB1dC4gIEVtYWlsIHZlcnNpb24gYnVtcGVkIHRvIDUuMS4wLgotCi0tIElzc3VlICMxNTg5OiBBZGQgc3NsLm1hdGNoX2hvc3RuYW1lKCksIHRvIGhlbHAgaW1wbGVtZW50IHNlcnZlciBpZGVudGl0eQotICB2ZXJpZmljYXRpb24gZm9yIGhpZ2hlci1sZXZlbCBwcm90b2NvbHMuCi0KLS0gSXNzdWUgIzk3NTk6IEd6aXBGaWxlIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIGFuIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQKLSAgYWZ0ZXIgdGhlIGZpbGUgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgSmVmZnJleSBGaW5rZWxzdGVpbi4KLQotLSBJc3N1ZSAjOTA0MjogRml4IGludGVyYWN0aW9uIG9mIGN1c3RvbSB0cmFuc2xhdGlvbiBjbGFzc2VzIGFuZCBjYWNoaW5nIGluCi0gIGdldHRleHQuCi0KLS0gSXNzdWUgIzY3MDY6IGFzeW5jb3JlLmRpc3BhdGNoZXIgbm93IHByb3ZpZGVzIGEgaGFuZGxlX2FjY2VwdGVkKCkgbWV0aG9kCi0gIHJldHVybmluZyBhIChzb2NrLCBhZGRyKSBwYWlyIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGEgY29ubmVjdGlvbiBoYXMgYmVlbgotICBlc3RhYmxpc2hlZCB3aXRoIGEgbmV3IHJlbW90ZSBlbmRwb2ludC4gIFRoaXMgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhcyBhCi0gIHJlcGxhY2VtZW50IGZvciBvbGQgaGFuZGxlX2FjY2VwdCgpIGFuZCBhdm9pZHMgdGhlIHVzZXIgdG8gY2FsbCBhY2NlcHQoKQotICBkaXJlY3RseS4KLQotLSBJc3N1ZSAjOTA2NTogdGFyZmlsZSBubyBsb25nZXIgdXNlcyAicm9vdCIgYXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB1bmFtZSBhbmQKLSAgZ25hbWUgZmllbGQuCi0KLS0gSXNzdWUgIzg5ODA6IEZpeGVkIGEgZmFpbHVyZSBpbiBkaXN0dXRpbHMuY29tbWFuZCBjaGVjayB0aGF0IHdhcyBzaGFkb3dlZCBieQotICBhbiBlbnZpcm9ubWVudCB0aGF0IGRvZXMgbm90IGhhdmUgZG9jdXRpbHMuICBQYXRjaCBieSBBcmZyZXZlci4KLQotLSBJc3N1ZSAjMTA1MDI2ODogcGFyc2VhZGRyIG5vdyBjb3JyZWN0bHkgcXVvdGVzIGRvdWJsZSBxdW90ZSBhbmQgYmFja3NsYXNoCi0gIGNoYXJhY3RlcnMgdGhhdCBhcHBlYXIgaW5zaWRlIHF1b3RlZCBzdHJpbmdzIGluIGVtYWlsIGFkZHJlc3Nlcy4KLQotLSBJc3N1ZSAjMTAwMDQ6IHF1b3ByaW1pbWUgbm8gbG9uZ2VyIGdlbmVyYXRlcyBhIHRyYWNlYmFjayB3aGVuIGNvbmZyb250ZWQgd2l0aAotICBpbnZhbGlkIGNoYXJhY3RlcnMgYWZ0ZXIgJz0nIGluIGEgUS1lbmNvZGVkIHdvcmQuCi0KLS0gSXNzdWUgIzE0OTE6IEJhc2VIVFRQU2VydmVyIG5vd3Mgc2VuZCBhIGBgMTAwIENvbnRpbnVlYGAgcmVzcG9uc2UgYmVmb3JlCi0gIHNlbmRpbmcgYSAyMDAgT0sgZm9yIHRoZSBFeHBlY3Q6IDEwMC1jb250aW51ZSByZXF1ZXN0IGhlYWRlci4KLQotLSBJc3N1ZSAjOTM2MDogQ2xlYW51cCBhbmQgaW1wcm92ZW1lbnRzIHRvIHRoZSBubnRwbGliIG1vZHVsZS4gIFRoZSBBUEkgbm93Ci0gIGNvbmZvcm1zIHRvIHRoZSBwaGlsb3NvcGh5IG9mIGJ5dGVzIGFuZCB1bmljb2RlIHNlcGFyYXRpb24gaW4gUHl0aG9uIDMuICBBCi0gIHRlc3Qgc3VpdGUgaGFzIGFsc28gYmVlbiBhZGRlZC4KLQotLSBJc3N1ZSAjOTk2MjogR3ppcEZpbGUgbm93IGhhcyB0aGUgcGVlaygpIG1ldGhvZC4KLQotLSBJc3N1ZSAjOTA5MDogV2hlbiBhIHNvY2tldCB3aXRoIGEgdGltZW91dCBmYWlscyB3aXRoIEVXT1VMREJMT0NLIG9yIEVBR0FJTiwKLSAgcmV0cnkgdGhlIHNlbGVjdCgpIGxvb3AgaW5zdGVhZCBvZiBiYWlsaW5nIG91dC4gIFRoaXMgaXMgYmVjYXVzZSBzZWxlY3QoKSBjYW4KLSAgaW5jb3JyZWN0bHkgcmVwb3J0IGEgc29ja2V0IGFzIHJlYWR5IGZvciByZWFkaW5nIChmb3IgZXhhbXBsZSwgaWYgaXQgcmVjZWl2ZWQKLSAgc29tZSBkYXRhIHdpdGggYW4gaW52YWxpZCBjaGVja3N1bSkuCi0KLS0gSXNzdWUgIzM2MTI6IEFkZGVkIG5ldyB0eXBlcyB0byBjdHlwZXMud2ludHlwZXMuIChDSEFSIGFuZCBwb2ludGVycykKLQotLSBJc3N1ZSAjOTk1MDogRml4IHNvY2tldC5zZW5kYWxsKCkgY3Jhc2ggb3IgbWlzYmVoYXZpb3VyIHdoZW4gYSBzaWduYWwgaXMKLSAgcmVjZWl2ZWQuICBOb3cgc2VuZGFsbCgpIHByb3Blcmx5IGNhbGxzIHNpZ25hbCBoYW5kbGVycyBpZiBuZWNlc3NhcnksIGFuZAotICByZXRyaWVzIHNlbmRpbmcgaWYgdGhlc2UgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBpbmNsdWRpbmcgb24gc29ja2V0cyB3aXRoIGEKLSAgdGltZW91dC4KLQotLSBJc3N1ZSAjOTk0NzogbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWcgaW4gc3RvcExpc3RlbmluZy4KLQotLSBJc3N1ZSAjOTk0NTogbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWdzIGluIGFkZEhhbmRsZXIvcmVtb3ZlSGFuZGxlci4KLQotLSBJc3N1ZSAjOTkzNjogRml4ZWQgZXhlY3V0YWJsZSBsaW5lcycgc2VhcmNoIGluIHRoZSB0cmFjZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzk3OTA6IFJld29yayBpbXBvcnRzIG5lY2Vzc2FyeSBmb3Igc2FtZWZpbGUgYW5kIHNhbWVvcGVuZmlsZQotICBpbiBudHBhdGguCi0KLS0gSXNzdWUgIzk5Mjg6IFByb3Blcmx5IGluaXRpYWxpemUgdGhlIHR5cGVzIGV4cG9ydGVkIGJ5IHRoZSBiejIgbW9kdWxlLgotCi0tIElzc3VlICMxNjc1OTUxOiBBbGxvdyBHemlwRmlsZSB0byB3b3JrIHdpdGggdW5zZWVrYWJsZSBmaWxlIG9iamVjdHMuICBQYXRjaCBieQotICBGbG9yaWFuIEZlc3RpLgotCi0tIExvZ2dpbmc6IEFkZGVkIFF1ZXVlTGlzdGVuZXIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBsb2dnaW5nIHVzYWdlIGZvcgotICBwZXJmb3JtYW5jZS1jcml0aWNhbCB0aHJlYWRzLgotCi0tIElzc3VlICM5OTE2OiBBZGQgc29tZSBtaXNzaW5nIGVycm5vIHN5bWJvbHMuCi0KLS0gSXNzdWUgIzk4Nzc6IEV4cG9zZSBzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKLQotLSBsb2dnaW5nOiBBZGRlZCBoYXNIYW5kbGVycygpIG1ldGhvZCB0byBMb2dnZXIgYW5kIExvZ2dlckFkYXB0ZXIuCi0KLS0gSXNzdWUgIzk5MDg6IEZpeCBvcy5zdGF0KCkgb24gYnl0ZXMgcGF0aHMgdW5kZXIgV2luZG93cyA3LgotCi0tIElzc3VlICMyNjQzOiBtc3luYygpIGlzIG5vdCBjYWxsZWQgYW55bW9yZSB3aGVuIGRlYWxsb2NhdGluZyBhbiBvcGVuIG1tYXAKLSAgb2JqZWN0LCBvbmx5IG11bm1hcCgpLgotCi0tIGxvZ2dpbmc6IENoYW5nZWQgTG9nZ2VyQWRhcHRlciBpbXBsZW1lbnRhdGlvbiBpbnRlcm5hbGx5LCB0byBtYWtlIGl0IGVhc2llciB0bwotICBzdWJjbGFzcyBpbiBhIHVzZWZ1bCB3YXkuCi0KLS0gbG9nZ2luZzogaGFzSGFuZGxlcnMgbWV0aG9kIHdhcyBhZGRlZCB0byBMb2dnZXIsIGFuZCBpc0VuYWJsZWRGb3IsCi0gIGdldEVmZmVjdGl2ZUxldmVsLCBoYXNIYW5kbGVycyBhbmQgc2V0TGV2ZWwgd2VyZSBhZGRlZCB0byBMb2dnZXJBZGFwdGVyLgotICBMb2dnZXJBZGFwdGVyIHdhcyBpbnRyb2R1Y2VkIGludG8gdGhlIHVuaXQgdGVzdHMgZm9yIGxvZ2dpbmcuCi0KLS0gSXNzdWUgIzE2ODY6IEZpeCBzdHJpbmcuVGVtcGxhdGUgd2hlbiBvdmVycmlkaW5nIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjOTg1NDogU29ja2V0SU8gb2JqZWN0cyBub3cgb2JzZXJ2ZSB0aGUgUmF3SU9CYXNlIGludGVyZmFjZSBpbgotICBub24tYmxvY2tpbmcgbW9kZTogdGhleSByZXR1cm4gTm9uZSB3aGVuIGFuIG9wZXJhdGlvbiB3b3VsZCBibG9jayAoaW5zdGVhZCBvZgotICByYWlzaW5nIGFuIGV4Y2VwdGlvbikuCi0KLS0gSXNzdWUgIzE3MzAxMzY6IEZpeCB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIGEgdGsuZm9udC5Gb250IGFuZCBhbiBvYmplY3Qgb2YKLSAgYW5vdGhlciBraW5kLgotCi0tIElzc3VlICM5NDQxOiBsb2dnaW5nIGhhcyBiZXR0ZXIgY292ZXJhZ2UgZm9yIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMuCi0KLS0gSXNzdWUgIzk4NjU6IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyBoYXMgYSBfX3NpemVvZl9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjOTg1NDogVGhlIGRlZmF1bHQgcmVhZCgpIGltcGxlbWVudGF0aW9uIGluIGlvLlJhd0lPQmFzZSBub3cgaGFuZGxlcwotICBub24tYmxvY2tpbmcgcmVhZGludG8oKSByZXR1cm5pbmcgTm9uZSBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzE1NTI6IHNvY2tldC5zb2NrZXRwYWlyKCkgbm93IHJldHVybnMgcmVndWxhciBzb2NrZXQuc29ja2V0IG9iamVjdHMKLSAgc3VwcG9ydGluZyB0aGUgd2hvbGUgc29ja2V0IEFQSSAocmF0aGVyIHRoYW4gdGhlICJyYXciIF9zb2NrZXQuc29ja2V0Ci0gIG9iamVjdHMpLgotCi0tIElzc3VlICM5ODUzOiBGaXggdGhlIHNpZ25hdHVyZSBvZiBTU0xTb2NrZXQucmVjdmZyb20oKSBhbmQgU1NMU29ja2V0LnNlbmR0bygpCi0gIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIHNvY2tldCBtZXRob2RzLgotCi0tIElzc3VlICM5ODQwOiBBZGRlZCBhIGRlY29yYXRvciB0byByZXBybGliIGZvciB3cmFwcGluZyBfX3JlcHJfXyBtZXRob2RzIHRvIG1ha2UKLSAgdGhlbSBoYW5kbGUgcmVjdXJzaXZlIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSB0aHJlYWQuCi0KLS0gbG9nZ2luZzogRW5oYW5jZWQgSFRUUEhhbmRsZXIgd2l0aCBzZWN1cmUgYW5kIGNyZWRlbnRpYWxzIGluaXRpYWxpemVycy4KLQotLSBJc3N1ZSAjNzY3NjQ1OiBTZXQgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyB0byBUcnVlIG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICM5ODM3OiBUaGUgcmVhZCgpIG1ldGhvZCBvZiBaaXBFeHRGaWxlIG9iamVjdHMgKGFzIHJldHVybmVkIGJ5Ci0gIFppcEZpbGUub3BlbigpKSBjb3VsZCByZXR1cm4gbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4KLQotLSBJc3N1ZSAjOTgyNjogT3JkZXJlZERpY3QuX19yZXByX18gY2FuIG5vdyBoYW5kbGUgc2VsZi1yZWZlcmVudGlhbCB2YWx1ZXM6Ci0gIGRbJ3gnXSA9IGQuCi0KLS0gSXNzdWUgIzk4MjU6IFVzaW5nIF9fZGVsX18gaW4gdGhlIGRlZmluaXRpb24gb2YgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgbWFkZQotICBpdCBwb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8gY3JlYXRlIHNlbGYtcmVmZXJlbmNpbmcgb3JkZXJlZCBkaWN0aW9uYXJpZXMgd2hpY2gKLSAgYmVjb21lIHBlcm1hbmVudGx5IHVuY29sbGVjdGFibGUgR0MgZ2FyYmFnZS4gIFJlaW5zdGF0ZWQgdGhlIFB5dGhvbiAzLjEKLSAgYXBwcm9hY2ggb2YgdXNpbmcgd2Vha3JlZiBwcm94aWVzIHNvIHRoYXQgcmVmZXJlbmNlIGN5Y2xlcyBuZXZlciBnZXQgY3JlYXRlZAotICBpbiB0aGUgZmlyc3QgcGxhY2UuCi0KLS0gSXNzdWUgIzk1NzksICM5NTgwOiBGaXggb3MuY29uZnN0cigpIGZvciB2YWx1ZSBsb25nZXIgdGhhbiAyNTUgYnl0ZXMgYW5kCi0gIGVuY29kZSB0aGUgdmFsdWUgd2l0aCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgKGluc3RlYWQgb2YKLSAgdXRmLTggaW4gc3RyaWN0IG1vZGUpIC4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzk2MzI6IFJlbW92ZSBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgZnVuY3Rpb246IHVzZSBQWVRIT05GU0VOQ09ESU5HCi0gIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhdCBQeXRob24gc3RhcnR1cC4KLSAgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGNyZWF0ZXMgaW5jb25zaXN0ZW5jaWVzIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvCi0gIHJlZW5jb2RlIGFsbCBmaWxlbmFtZXMgaW4gYWxsIG9iamVjdHMuCi0KLS0gSXNzdWUgIzk0MTA6IFZhcmlvdXMgb3B0aW1pemF0aW9ucyB0byB0aGUgcGlja2xlIG1vZHVsZSwgbGVhZGluZyB0byBzcGVlZHVwcwotICB1cCB0byA0eCAoZGVwZW5kaW5nIG9uIHRoZSBiZW5jaG1hcmspLiAgTW9zdGx5IHBvcnRlZCBmcm9tIFVubGFkZW4gU3dhbGxvdzsKLSAgaW5pdGlhbCBwYXRjaCBieSBBbGV4YW5kcmUgVmFzc2Fsb3R0aS4KLQotLSBUaGUgcHByaW50IG1vZHVsZSBub3cgc3VwcG9ydHMgcHJpbnRpbmcgT3JkZXJlZERpY3RzIGluIHRoZWlyIGdpdmVuIG9yZGVyCi0gIChmb3JtZXJseSwgaXQgd291bGQgc29ydCB0aGUga2V5cykuCi0KLS0gTG9nZ2luZzogQWRkZWQgUXVldWVIYW5kbGVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSB3aXRoCi0gIG11bHRpcHJvY2Vzc2luZy4KLQotLSBJc3N1ZSAjOTcwNzogUmV3cml0dGVuIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWRpbmcubG9jYWwgd2hpY2ggaXMKLSAgZnJpZW5kbGllciB0b3dhcmRzIHJlZmVyZW5jZSBjeWNsZXMuICBUaGlzIGNoYW5nZSBpcyBub3Qgbm9ybWFsbHkgdmlzaWJsZQotICBzaW5jZSBhbiBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiAoX3RocmVhZC5fbG9jYWwpIGlzIHVzZWQgaW5zdGVhZC4KLQotLSBJc3N1ZSAjNjM5NDogb3MuZ2V0cHBpZCgpIGlzIG5vdyBzdXBwb3J0ZWQgb24gV2luZG93cy4gIE5vdGUgdGhhdCBpdCB3aWxsCi0gIHN0aWxsIHJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBwcm9jZXNzIGFmdGVyIGl0IGhhcyBleGl0ZWQuICBUaGlzIHByb2Nlc3MKLSAgaWQgbWF5IGV2ZW4gaGF2ZSBiZWVuIHJldXNlZCBieSBhbm90aGVyIHVucmVsYXRlZCBwcm9jZXNzLgotCi0tIElzc3VlICM5NzkyOiBJbiBjYXNlIG9mIGNvbm5lY3Rpb24gZmFpbHVyZSwgc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKCkgd291bGQKLSAgc3dhbGxvdyB0aGUgZXhjZXB0aW9uIGFuZCByYWlzZSBhIG5ldyBvbmUsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGZldGNoIHRoZQotICBvcmlnaW5hbCBlcnJubywgb3IgdG8gZmlsdGVyIHRpbWVvdXQgZXJyb3JzLiAgTm93IHRoZSBvcmlnaW5hbCBlcnJvciBpcwotICByZS1yYWlzZWQuCi0KLS0gSXNzdWUgIzk3NTg6IFdoZW4gZmNudGwuaW9jdGwoKSB3YXMgY2FsbGVkIHdpdGggbXV0YWJsZV9mbGFnIHNldCB0byBUcnVlLCBhbmQKLSAgdGhlIHBhc3NlZCBidWZmZXIgd2FzIGV4YWN0bHkgMTAyNCBieXRlcyBsb25nLCB0aGUgYnVmZmVyIHdvdWxkbid0IGJlIHVwZGF0ZWQKLSAgYmFjayBhZnRlciB0aGUgc3lzdGVtIGNhbGwuICBPcmlnaW5hbCBwYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gVXBkYXRlcyB0byB0aGUgcmFuZG9tIG1vZHVsZToKLQotICAqIERvY3VtZW50IHdoaWNoIHBhcnRzIG9mIHRoZSBtb2R1bGUgYXJlIGd1YXJhbnRlZWQgdG8gc3RheSB0aGUgc2FtZSBhY3Jvc3MKLSAgICB2ZXJzaW9ucyBhbmQgd2hpY2ggcGFydHMgYXJlIHN1YmplY3QgdG8gY2hhbmdlLgotCi0gICogVXBkYXRlIHRoZSBzZWVkKCkgbWV0aG9kIHRvIHVzZSBhbGwgb2YgdGhlIGJpdHMgaW4gYSBzdHJpbmcgaW5zdGVhZCBvZiBqdXN0Ci0gICAgdGhlIGhhc2ggdmFsdWUuICBUaGlzIG1ha2VzIGJldHRlciB1c2Ugb2YgdGhlIHNlZWQgdmFsdWUgYW5kIGFzc3VyZXMgdGhlCi0gICAgc2VlZGluZyBpcyBwbGF0Zm9ybSBpbmRlcGVuZGVudC4gIElzc3VlICM3ODg5LgotCi0gICogSW1wcm92ZWQgdGhlIHJhbmRvbSgpLS0+aW50ZWdlciBhbGdvcml0aG0gdXNlZCBpbiBjaG9pY2UoKSwgc2h1ZmZsZSgpLAotICAgIHNhbXBsZSgpLCByYW5kcmFuZ2UoKSwgYW5kIHJhbmRpbnQoKS4gIEZvcm1lcmx5LCBpdCB1c2VkIGludChuKnJhbmRvbSgpKQotICAgIHdoaWNoIGhhcyBhIHNsaWdodCBiaWFzIHdoZW5ldmVyIG4gaXMgbm90IGEgcG93ZXIgb2YgdHdvLiAgSXNzdWUgIzkwMjUuCi0KLSAgKiBJbXByb3ZlZCBkb2N1bWVudGF0aW9uIG9mIGFyZ3VtZW50cyB0byByYW5kcmFuZ2UoKS4gIElzc3VlICM5Mzc5LgotCi0tIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyBzdXBwb3J0cyBhIG5ldyBtZXRob2QgZm9yIHJlcG9zaXRpb25pbmcga2V5cyB0bwotICBlaXRoZXIgZW5kLgotCi0tIElzc3VlICM5NzU0OiBTaW1pbGFybHkgdG8gYXNzZXJ0UmFpc2VzIGFuZCBhc3NlcnRSYWlzZXNSZWdleHAsIHVuaXR0ZXN0IHRlc3QKLSAgY2FzZXMgbm93IGFsc28gaGF2ZSBhc3NlcnRXYXJucyBhbmQgYXNzZXJ0V2FybnNSZWdleHAgbWV0aG9kcyB0byBjaGVjayB0aGF0IGEKLSAgZ2l2ZW4gd2FybmluZyB0eXBlIHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KLQotLSBJc3N1ZSAjNTUwNjogQnl0ZXNJTyBvYmplY3RzIG5vdyBoYXZlIGEgZ2V0YnVmZmVyKCkgbWV0aG9kIGV4cG9ydGluZyBhIHZpZXcgb2YKLSAgdGhlaXIgY29udGVudHMgd2l0aG91dCBkdXBsaWNhdGluZyB0aGVtLiAgVGhlIHZpZXcgaXMgYm90aCByZWFkYWJsZSBhbmQKLSAgd3JpdGFibGUuCi0KLS0gSXNzdWUgIzc1NjY6IEltcGxlbWVudCBvcy5wYXRoLnNhbWVvcGVuZmlsZSBmb3IgV2luZG93cy4KLQotLSBJc3N1ZSAjOTI5MzogSS9PIHN0cmVhbXMgbm93IHJhaXNlIGBgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb25gYCB3aGVuIGFuCi0gIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQgKGZvciBleGFtcGxlLCB3cml0aW5nIHRvIGEgZmlsZSBvcGVuIG9ubHkKLSAgZm9yIHJlYWRpbmcpLgotCi0tIGhhc2hsaWIgaGFzIHR3byBuZXcgY29uc3RhbnQgYXR0cmlidXRlczogYWxnb3JpdGhtc19ndWFyYW50ZWVkIGFuZAotICBhbGdvcml0aG1zX2F2YWlhYmxlIHRoYXQgcmVzcGVjdGl2ZWx5IGxpc3QgdGhlIG5hbWVzIG9mIGhhc2ggYWxnb3JpdGhtcwotICBndWFyYW50ZWVkIHRvIGV4aXN0IGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zIGFuZCB0aGUgbmFtZXMgb2YgaGFzaAotICBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwcm9jZXNzLgotCi0tIEEgbmV3IHBhY2thZ2UgYGBjb25jdXJyZW50LmZ1dHVyZXNgYCBhcyBkZWZpbmVkIGJ5IFBFUCAzMTQ4LgotCi1DLUFQSQotLS0tLS0KLQotLSBBZGQgUHlFcnJfU3ludGF4TG9jYXRpb25FeCwgd2hpY2ggc3VwcG9ydHMgcGFzc2luZyBhIGNvbHVtbiBvZmZzZXQuCi0KLS0gSXNzdWUgIzk4MzQ6IERvbid0IHNlZ2ZhdWx0IGluIFB5U2VxdWVuY2VfR2V0U2xpY2UsIFB5U2VxdWVuY2VfU2V0U2xpY2UsIG9yCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2Ugd2hlbiB0aGUgb2JqZWN0IGRvZXNuJ3QgaGF2ZSBhbnkgbWFwcGluZyBvcGVyYXRpb25zCi0gIGRlZmluZWQuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5MTg4OiBUaGUgZ2RiIGV4dGVuc2lvbiBub3cgaGFuZGxlcyBjb3JyZWN0bHkgbmFycm93IChVQ1MyKSBhcyB3ZWxsIGFzCi0gIHdpZGUgKFVDUzQpIHVuaWNvZGUgYnVpbGRzIGZvciBib3RoIHRoZSBob3N0IGludGVycHJldGVyIChlbWJlZGRlZCBpbnNpZGUgZ2RiKQotICBhbmQgdGhlIGludGVycHJldGVyIHVuZGVyIHRlc3QuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM5MzA4OiBBZGRlZCB0ZXN0cyBmb3IgaW1wb3J0aW5nIGVuY29kZWQgbW9kdWxlcyB0aGF0IGRvIG5vdAotICBkZXBlbmQgb24gc3BlY2lmaWMgc3RkbGliIG1vZHVsZXMgYmVpbmcgZW5jb2RlZCBpbiBhIGNlcnRhaW4gd2F5LgotCi0tIElzc3VlICMxMDUxOiBBZGQgYSBzY3JpcHQgKExpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5KSB0byBnZW5lcmF0ZSB0aGUgY3VzdG9tCi0gIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSBmaWxlcyB1c2VkIGJ5IFNTTC1yZWxhdGVkIGNlcnRzLgotCi0tIElzc3VlICM5OTc4OiBXYWl0IHVudGlsIHN1YnByb2Nlc3MgY29tcGxldGVzIGluaXRpYWxpemF0aW9uLiAoV2luMzJLaWxsVGVzdHMKLSAgaW4gdGVzdF9vcykKLQotLSBJc3N1ZSAjNzExMDogcmVncnRlc3Qgbm93IHNlbmRzIHRlc3QgZmFpbHVyZSByZXBvcnRzIGFuZCBzaW5nbGUtZmFpbHVyZQotICB0cmFjZWJhY2tzIHRvIHN0ZGVyciByYXRoZXIgdGhhbiBzdGRvdXQuCi0KLS0gSXNzdWUgIzk2Mjg6IGZpeCBydW50ZXN0cy5zaCAteCBvcHRpb24gc28gbW9yZSB0aGFuIG9uZSB0ZXN0IGNhbiBiZSBleGNsdWRlZC4KLQotLSBJc3N1ZSAjOTg5OTogRml4IHRlc3RfdGtpbnRlci50ZXN0X2ZvbnQgb24gdmFyaW91cyBwbGF0Zm9ybXMuICBQYXRjaCBieSBOZWQKLSAgRGVpbHkuCi0KLS0gSXNzdWUgIzk4OTQ6IERvIG5vdCBoYXJkY29kZSBFTk9FTlQgaW4gdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICM5MzE1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHRyYWNlIG1vZHVsZS4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCi0KLS0gSXNzdWUgIzkzMjM6IE1ha2UgdGVzdC5yZWdydGVzdC5fX2ZpbGVfXyBhYnNvbHV0ZSwgdGhpcyB3YXMgbm90IGFsd2F5cyB0aGUKLSAgY2FzZSB3aGVuIHJ1bm5pbmcgcHJvZmlsZSBvciB0cmFjZSwgZm9yIGV4YW1wbGUuCi0KLS0gSXNzdWUgIzk1Njg6IEZpeCB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgb24gT1MgWCAxMC4zLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTAwNjI6IEFsbG93IGJ1aWxkaW5nIG9uIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSBzZW1fdGltZWR3YWl0LgotCi0tIElzc3VlICMxMDA1NDogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSB1aW50cHRyX3QgaW4gaW50dHlwZXMuaC4gIFBhdGNoIGJ5IEFraXJhCi0gIEtpdGFkYS4KLQotLSBJc3N1ZSAjMTAwNTU6IE1ha2UganNvbiBDODktY29tcGxpYW50IGluIFVDUzQgbW9kZS4KLQotLSBJc3N1ZSAjOTU1MjogQXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZCBvZiBPcGVuU1NMLiAoV2luZG93cykKLQotLSBJc3N1ZSAjMTYzMzg2MzogRG9uJ3QgaWdub3JlICRDQyB1bmRlciBBSVguCi0KLS0gSXNzdWUgIzk4MTA6IENvbXBpbGUgYnppcDIgc291cmNlIGZpbGVzIGluIFB5dGhvbidzIHByb2plY3QgZmlsZSBkaXJlY3RseS4gSXQKLSAgdXNlZCB0byBiZSBidWlsdCB3aXRoIGJ6aXAyJ3MgbWFrZWZpbGUuCi0KLS0gSXNzdWUgIzk4NDg6IFN0b3BwaW5nIHRyeWluZyB0byBidWlsZCBfd2Vha3JlZiBpbiBzZXR1cC5weSBhcyBpdCBpcyBhIGJ1aWx0LWluCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTgwNjogcHl0aG9uLWNvbmZpZyBub3cgaGFzIGFuIGBgLS1leHRlbnNpb24tc3VmZml4YGAgb3B0aW9uIHRoYXQKLSAgb3V0cHV0cyB0aGUgc3VmZml4IGZvciBkeW5hbWljIGxpYnJhcmllcyBpbmNsdWRpbmcgdGhlIEFCSSB2ZXJzaW9uIG5hbWUKLSAgZGVmaW5lZCBieSBQRVAgMzE0OS4KLQotLSBJc3N1ZSAjOTQxMzQ2OiBJbXByb3ZlIHRoZSBidWlsZCBwcm9jZXNzIHVuZGVyIEFJWCBhbmQgYWxsb3cgUHl0aG9uIHRvIGJlCi0gIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnkuICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KLQotLSBJc3N1ZSAjNDAyNjogTWFrZSB0aGUgZmNudGwgZXh0ZW5zaW9uIGJ1aWxkIHVuZGVyIEFJWC4gIFBhdGNoIGJ5IFPDqWJhc3RpZW4KLSAgU2FibMOpLgotCi0tIElzc3VlICM5NzAxOiBUaGUgTWFjT1NYIGluc3RhbGxlciBjYW4gcGF0Y2ggdGhlIHNoZWxsIHByb2ZpbGUgdG8gZW5zdXJlIHRoYXQKLSAgdGhlICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayBpcyBvbiB0aGUgc2hlbGwncyBzZWFyY2ggcGF0aC4gVGhpcwotICBmZWF0dXJlIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBaU0ggc2hlbGwuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDUtU2VwLTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5MjI1OiBSZW1vdmUgdGhlIFJPVF9GT1VSIGFuZCBEVVBfVE9QWCBvcGNvZGUsIHRoZSBsYXR0ZXIgcmVwbGFjZWQgYnkKLSAgdGhlIG5ldyAoYW5kIHNpbXBsZXIpIERVUF9UT1BfVFdPLiAgUGVyZm9ybWFuY2UgaXNuJ3QgY2hhbmdlZCwgYnV0IG91cgotICBieXRlY29kZSBpcyBhIGJpdCBzaW1wbGlmaWVkLiAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCi0KLS0gSXNzdWUgIzk3NjY6IFJlbmFtZSBwb29ybHkgbmFtZWQgdmFyaWFibGVzIGV4cG9zZWQgYnkgX3dhcm5pbmdzIHRvIHByZXZlbnQKLSAgY29uZnVzaW9uIHdpdGggdGhlIHByb3BlciB2YXJpYWJsZXMgbmFtZXMgZnJvbSAnd2FybmluZ3MnIGl0c2VsZi4KLQotLSBJc3N1ZSAjOTIxMjogZGljdF9rZXlzIGFuZCBkaWN0X2l0ZW1zIG5vdyBwcm92aWRlIHRoZSBpc2Rpc2pvaW50KCkgbWV0aG9kLCB0bwotICBjb25mb3JtIHRvIHRoZSBTZXQgQUJDLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICM5NzM3OiBGaXggYSBjcmFzaCB3aGVuIHRyeWluZyB0byBkZWxldGUgYSBzbGljZSBvciBhbiBpdGVtIGZyb20gYQotICBtZW1vcnl2aWV3IG9iamVjdC4KLQotLSBJc3N1ZSAjOTU0OTogc3lzLnNldGRlZmF1bHRlbmNvZGluZygpIGFuZCBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nKCkgYXJlCi0gIG5vdyByZW1vdmVkLCBzaW5jZSB0aGVpciBlZmZlY3Qgd2FzIGluZXhpc3RlbnQgaW4gMy54ICh0aGUgZGVmYXVsdCBlbmNvZGluZyBpcwotICBoYXJkY29kZWQgdG8gdXRmLTggYW5kIGNhbm5vdCBiZSBjaGFuZ2VkKS4KLQotLSBJc3N1ZSAjNzQxNTogUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCkgbm93IHVzZXMgdGhlIG5ldyBidWZmZXIgQVBJCi0gIHByb3Blcmx5LiAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQotLSBJc3N1ZSAjNTU1MzogVGhlIFB5X0xPQ0FMX0lOTElORSBtYWNybyBub3cgcmVzdWx0cyBpbiBpbmxpbmluZyBvbiBtb3N0Ci0gIHBsYXRmb3Jtcy4gIFByZXZpb3VzbHksIGl0IGlubGluZWQgb25seSB3aGVuIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQy4KLQotLSBJc3N1ZSAjOTcxMjogRml4IHRva2VuaXplIG9uIGlkZW50aWZpZXJzIHRoYXQgc3RhcnQgd2l0aCBub24tYXNjaWkgbmFtZXMuCi0KLS0gSXNzdWUgIzk2ODg6IF9fYmFzaWNzaXplX18gYW5kIF9faXRlbXNpemVfXyBtdXN0IGJlIGFjY2Vzc2VkIGFzIFB5X3NzaXplX3QuCi0KLS0gSXNzdWUgIzk2ODQ6IEFkZGVkIGEgZGVmaW5pdGlvbiBmb3IgU0laRU9GX1dDSEFSX1QgdG8gUEMvcHljb25maWcuaCwgdG8gbWF0Y2gKLSAgdGhlIHB5Y29uZmlnLmggZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBvbiBvdGhlciBzeXN0ZW1zLgotCi0tIElzc3VlICM5NjY2OiBPbmx5IGNhdGNoIEF0dHJpYnV0ZUVycm9yIGluIGhhc2F0dHIoKS4gQWxsIG90aGVyIGV4Y2VwdGlvbnMgdGhhdAotICBvY2N1ciBkdXJpbmcgYXR0cmlidXRlIGxvb2t1cCBhcmUgbm93IHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4KLQotLSBJc3N1ZSAjODYyMjogQWRkIFBZVEhPTkZTRU5DT0RJTkcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3ZlcnJpZGUgdGhlCi0gIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzUxMjc6IFRoZSBDIGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyB0aGUgVW5pY29kZSBEYXRhYmFzZSBub3cgYWNjZXB0IGFuZAotICByZXR1cm4gY2hhcmFjdGVycyBmcm9tIHRoZSBmdWxsIFVuaWNvZGUgcmFuZ2UsIGV2ZW4gb24gbmFycm93IHVuaWNvZGUgYnVpbGRzCi0gIChQeV9VTklDT0RFX1RPTE9XRVIsIFB5X1VOSUNPREVfSVNERUNJTUFMLCBhbmQgb3RoZXJzKS4gIEEgdmlzaWJsZSBkaWZmZXJlbmNlCi0gIGluIFB5dGhvbiBpcyB0aGF0IHVuaWNvZGVkYXRhLm51bWVyaWMoKSBub3cgcmV0dXJucyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IKLSAgbGFyZ2UgY29kZSBwb2ludHMsIGFuZCByZXByKCkgbWF5IGNvbnNpZGVyIG1vcmUgY2hhcmFjdGVycyBhcyBwcmludGFibGUuCi0KLS0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgpIGZ1bmN0aW9uIHRvIGdldCB0aGUgZmlsZW5hbWUKLSAgYXMgYSB1bmljb2RlIG9iamVjdCwgaW5zdGVhZCBvZiBhIGJ5dGUgc3RyaW5nLiBGdW5jdGlvbiBuZWVkZWQgdG8gc3VwcG9ydAotICB1bmVuY29kYWJsZSBmaWxlbmFtZXMuIERlcHJlY2F0ZSBQeU1vZHVsZV9HZXRGaWxlbmFtZSgpIGluIGZhdm9yIG9uIHRoZSBuZXcKLSAgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzgwNjM6IENhbGwgX1B5R0lMU3RhdGVfSW5pdCgpIGVhcmxpZXIgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuCi0KLS0gSXNzdWUgIzk2MTI6IFRoZSBzZXQgb2JqZWN0IGlzIG5vdyA2NC1iaXQgY2xlYW4gdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjODIwMjogc3lzLmFyZ3ZbMF0gaXMgbm93IHNldCB0byAnLW0nIGluc3RlYWQgb2YgJy1jJyB3aGVuIHNlYXJjaGluZyBmb3IKLSAgdGhlIG1vZHVsZSBmaWxlIHRvIGJlIGV4ZWN1dGVkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBvcHRpb24uCi0KLS0gSXNzdWUgIzk1OTk6IENyZWF0ZSBQeVN5c19Gb3JtYXRTdGRvdXQoKSBhbmQgUHlTeXNfRm9ybWF0U3RkZXJyKCkgZnVuY3Rpb25zIHRvCi0gIHdyaXRlIGEgbWVzc2FnZSBmb3JtYXR0ZWQgYnkgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgdG8gc3lzLnN0ZG91dCBhbmQKLSAgc3lzLnN0ZGVyci4KLQotLSBJc3N1ZSAjOTU0MjogQ3JlYXRlIFB5VW5pY29kZV9GU0RlY29kZXIoKSBmdW5jdGlvbiwgYSBQYXJzZVR1cGxlIGNvbnZlcnRlcjoKLSAgZGVjb2RlIGJ5dGVzIG9iamVjdHMgdG8gdW5pY29kZSB1c2luZyBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgpOyBzdHIKLSAgb2JqZWN0cyBhcmUgb3V0cHV0IGFzLWlzLgotCi0tIElzc3VlICM5MjAzOiBDb21wdXRlZCBnb3RvcyBhcmUgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBzdXBwb3J0ZWQgY29tcGlsZXJzCi0gICh3aGljaCBhcmUgZGV0ZWN0ZWQgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQpLiAgVGhleSBjYW4gc3RpbGwgYmUgZGlzYWJsZQotICBzZWxlY3RpdmVseSBieSBzcGVjaWZ5aW5nIC0td2l0aG91dC1jb21wdXRlZC1nb3Rvcy4KLQotLSBJc3N1ZSAjOTQyNTogQ3JlYXRlIFB5RXJyX1dhcm5Gb3JtYXQoKSBmdW5jdGlvbiwgc2ltaWxhciB0byBQeUVycl9XYXJuRXgoKSBidXQKLSAgdXNlIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIGZvcm1hdCB0aGUgd2FybmluZyBtZXNzYWdlLgotCi0tIElzc3VlICM4NTMwOiBQcmV2ZW50IHN0cmluZ2xpYiBmYXN0c2VhcmNoIGZyb20gcmVhZGluZyBiZXlvbmQgdGhlIGZyb250IG9mIGFuCi0gIGFycmF5LgotCi0tIElzc3VlICM1MzE5OiBQcmludCBhbiBlcnJvciBpZiBmbHVzaGluZyBzdGRvdXQgZmFpbHMgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCi0KLS0gSXNzdWUgIzkzMzc6IFRoZSBzdHIoKSBvZiBhIGZsb2F0IG9yIGNvbXBsZXggbnVtYmVyIGlzIG5vdyBpZGVudGljYWwgdG8gaXRzCi0gIHJlcHIoKS4KLQotLSBJc3N1ZSAjOTQxNjogRml4IHNvbWUgaXNzdWVzIHdpdGggY29tcGxleCBmb3JtYXR0aW5nIHdoZXJlIHRoZSBvdXRwdXQgd2l0aCBubwotICB0eXBlIHNwZWNpZmllciBmYWlsZWQgdG8gbWF0Y2ggdGhlIHN0ciBvdXRwdXQ6Ci0KLSAgICAtIGZvcm1hdChjb21wbGV4KC0wLjAsIDIuMCksICctJykgb21pdHRlZCB0aGUgcmVhbCBwYXJ0IGZyb20gdGhlIG91dHB1dCwKLSAgICAtIGZvcm1hdChjb21wbGV4KDAuMCwgMi4wKSwgJy0nKSBpbmNsdWRlZCBhIHNpZ24gYW5kIHBhcmVudGhlc2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjODAxMzogdGltZS5hc2N0aW1lIGFuZCB0aW1lLmN0aW1lIG5vIGxvbmdlciBjYWxsIHN5c3RlbQotICBhc2N0aW1lIGFuZCBjdGltZSBmdW5jdGlvbnMuICBUaGUgeWVhciByYW5nZSBmb3IgdGltZS5hc2N0aW1lIGlzIG5vdwotICAxOTAwIHRocm91Z2ggbWF4aW50LiAgVGhlIHJhbmdlIGZvciB0aW1lLmN0aW1lIGlzIHRoZSBzYW1lIGFzIGZvcgotICB0aW1lLmxvY2FsdGltZS4gIFRoZSBzdHJpbmcgcHJvZHVjZWQgYnkgdGhlc2UgZnVuY3Rpb25zIGlzIGxvbmdlcgotICB0aGFuIDI0IGNoYXJhY3RlcnMgd2hlbiB5ZWFyIGlzIGdyZWF0ZXIgdGhhbiA5OTk5LgotCi0tIElzc3VlICM2NjA4OiB0aW1lLmFzY3RpbWUgaXMgbm93IGNoZWNraW5nIHN0cnVjdCB0bSBmaWVsZHMgaXRzIGlucHV0Ci0gIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHRoZSBzeXN0ZW0gYXNjdGltZS4gIFBhdGNoIGJ5IE11blNpYyBKZW9uZy4KLQotLSBJc3N1ZSAjODczNDogQXZvaWQgY3Jhc2ggaW4gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoKSB3aGVuIGFuIGludmFsaWQgZmlsZQotICBkZXNjcmlwdG9yIGlzIHByb3ZpZGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzc3MzY6IFJlbGVhc2UgdGhlIEdJTCBhcm91bmQgY2FsbHMgdG8gb3BlbmRpcigpIGFuZCBjbG9zZWRpcigpIGluIHRoZQotICBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICM0ODM1OiBtYWtlIFB5TG9uZ19Gcm9tU29ja2V0X3QoKSBhbmQgUHlMb25nX0FzU29ja2V0X3QoKSBwcml2YXRlIHRvIHRoZQotICBzb2NrZXQgbW9kdWxlLCBhbmQgZml4IHRoZSB3aWR0aCBvZiBzb2NrZXQgZGVzY3JpcHRvcnMgdG8gYmUgY29ycmVjdGx5Ci0gIGRldGVjdGVkIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxMDI3MjA2OiBTdXBwb3J0IElETkEgaW4gZ2V0aG9zdGJ5bmFtZSwgZ2V0aG9zdGJ5bmFtZV9leCwgZ2V0YWRkcmluZm8KLSAgYW5kIGdldGhvc3RieWFkZHIuICBnZXRuYW1laW5mbyBpcyBub3cgcmVzdHJpY3RlZCB0byBudW1lcmljIGFkZHJlc3NlcyBhcwotICBpbnB1dC4KLQotLSBJc3N1ZSAjOTIxNDogU2V0IG9wZXJhdGlvbnMgb24gYSBLZXlzVmlldyBvciBJdGVtc1ZpZXcgaW4gY29sbGVjdGlvbnMgbm93Ci0gIGNvcnJlY3RseSByZXR1cm4gYSBzZXQuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgotCi0tIElzc3VlICM1NzM3OiBBZGQgU29sYXJpcy1zcGVjaWZpYyBtbmVtb25pY3MgaW4gdGhlIGVycm5vIG1vZHVsZS4gIFBhdGNoIGJ5Ci0gIE1hdHRoZXcgQWhyZW5zLgotCi0tIFJlc3RvcmUgR0lMIGluIG5pc19jYXQgaW4gY2FzZSBvZiBlcnJvci4gRGVjb2RlIE5JUyBkYXRhIHRvIGZzIGVuY29kaW5nLCB1c2luZwotICB0aGUgc3Vycm9nYXRlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzY2NTc2MTogYGBmdW5jdG9vbHMucmVkdWNlKClgYCB3aWxsIG5vIGxvbmdlciBtYXNrIGV4Y2VwdGlvbnMgb3RoZXIKLSAgdGhhbiBgYFR5cGVFcnJvcmBgIHJhaXNlZCBieSB0aGUgaXRlcmF0b3IgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzk1NzA6IFVzZSBQRVAgMzgzIGRlY29kaW5nIGluIG9zLm1rbm9kIGFuZCBvcy5ta2ZpZm8uCi0KLS0gSXNzdWUgIzY5MTU6IFVuZGVyIFdpbmRvd3MsIG9zLmxpc3RkaXIoKSBkaWRuJ3QgcmVsZWFzZSB0aGUgR2xvYmFsIEludGVycHJldGVyCi0gIExvY2sgYXJvdW5kIGFsbCBzeXN0ZW0gY2FsbHMuICBPcmlnaW5hbCBwYXRjaCBieSBSeWFuIEtlbGx5LgotCi0tIElzc3VlICM4NTI0OiBBZGQgYSBkZXRhY2goKSBtZXRob2QgdG8gc29ja2V0IG9iamVjdHMsIHNvIGFzIHRvIHB1dCB0aGUgc29ja2V0Ci0gIGludG8gdGhlIGNsb3NlZCBzdGF0ZSB3aXRob3V0IGNsb3NpbmcgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yLgotCi0tIElzc3VlICM0Nzc4NjM6IEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgYXQgc2h1dGRvd24gaWYgZ2MuZ2FyYmFnZSBpcyBub3QgZW1wdHkuCi0KLS0gSXNzdWUgIzY4Njk6IEZpeCBhIHJlZmNvdW50IHByb2JsZW0gaW4gdGhlIF9jdHlwZXMgZXh0ZW5zaW9uLgotCi0tIElzc3VlICM1NTA0OiBjdHlwZXMgc2hvdWxkIG5vdyB3b3JrIHdpdGggc3lzdGVtcyB3aGVyZSBtbWFwIGNhbid0IGJlCi0gIFBST1RfV1JJVEUgYW5kIFBST1RfRVhFQy4KLQotLSBJc3N1ZSAjOTUwNzogTmFtZWQgdHVwbGUgcmVwciB3aWxsIG5vdyBhdXRvbWF0aWNhbGx5IGRpc3BsYXkgdGhlIHJpZ2h0IG5hbWUgaW4KLSAgYSB0dXBsZSBzdWJjbGFzcy4KLQotLSBJc3N1ZSAjOTMyNDogQWRkIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHNpZ25hbC5zaWduYWwgb24gV2luZG93cyBpbiBvcmRlciB0bwotICBwcmV2ZW50IGNyYXNoZXMuCi0KLS0gSXNzdWUgIzk1MjY6IFJlbW92ZSBzb21lIG91dGRhdGVkIChpbnQpIGNhc3RzIHRoYXQgd2VyZSBwcmV2ZW50aW5nIHRoZSBhcnJheQotICBtb2R1bGUgZnJvbSB3b3JraW5nIGNvcnJlY3RseSB3aXRoIGFycmF5cyBvZiBtb3JlIHRoYW4gMioqMzEgZWxlbWVudHMuCi0KLS0gRml4IG1lbW9yeSBsZWFrIGluIHNzbC5fc3NsLl90ZXN0X2RlY29kZV9jZXJ0LgotCi0tIElzc3VlICM4MDY1OiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUgbW9kdWxlIChmcm9tIGZhaWx1cmUgdG8gZnJlZSB0aGUKLSAgcmVzdWx0IG9mIGhpc3RvcnlfZ2V0X2hpc3Rvcnlfc3RhdGUoKSkuCi0KLS0gSXNzdWUgIzk0NTA6IEZpeCBtZW1vcnkgbGVhayBpbiByZWFkbGluZS5yZXBsYWNlX2hpc3RvcnlfaXRlbSBhbmQKLSAgcmVhZGxpbmUucmVtb3ZlX2hpc3RvcnlfaXRlbSBmb3IgcmVhZGxpbmUgdmVyc2lvbiA+PSA1LjAuCi0KLS0gSXNzdWUgIzgxMDU6IFZhbGlkYXRlIGZpbGUgZGVzY3JpcHRvciBwYXNzZWQgdG8gbW1hcC5tbWFwIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzgwNDY6IEFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBhbmQgLmNsb3NlZCBwcm9wZXJ0eSB0byBtbWFwCi0gIG9iamVjdHMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzQ1MTogSW1wcm92ZSBkZWNvZGluZyBwZXJmb3JtYW5jZSBvZiBKU09OIG9iamVjdHMsIGFuZCByZWR1Y2UgdGhlCi0gIG1lbW9yeSBjb25zdW1wdGlvbiBvZiBzYWlkIGRlY29kZWQgb2JqZWN0cyB3aGVuIHRoZXkgdXNlIHRoZSBzYW1lIHN0cmluZ3MgYXMKLSAga2V5cy4KLQotLSBJc3N1ZSAjMTEwMDU2MjogRml4IGRlZXAtY29weWluZyBvZiBvYmplY3RzIGRlcml2ZWQgZnJvbSB0aGUgbGlzdCBhbmQgZGljdAotICB0eXBlcy4gIFBhdGNoIGJ5IE1pY2hlbGUgT3Jyw7kgYW5kIEJqw7ZybiBMaW5kcXZpc3QuCi0KLS0gSXNzdWUgIzk3NTM6IEZpeGVkIHNvY2tldC5kdXAsIHdoaWNoIGRpZCBub3QgYWx3YXlzIHdvcmsgY29ycmVjdGx5IG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzk0MjE6IE1hZGUgdGhlIGdldDx0eXBlPiBtZXRob2RzIGNvbnNpc3RlbnRseSBhY2NlcHQgdGhlIHZhcnMgYW5kCi0gIGRlZmF1bHQgYXJndW1lbnRzIG9uIGFsbCBwYXJzZXIgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjNzAwNTogRml4ZWQgb3V0cHV0IG9mIE5vbmUgdmFsdWVzIGZvciBSYXdDb25maWdQYXJzZXIud3JpdGUgYW5kCi0gIENvbmZpZ1BhcnNlci53cml0ZS4KLQotLSBJc3N1ZSAjODk5MDogYXJyYXkuZnJvbXN0cmluZygpIGFuZCBhcnJheS50b3N0cmluZygpIGdldCByZW5hbWVkIHRvCi0gIGZyb21ieXRlcygpIGFuZCB0b2J5dGVzKCksIHJlc3BlY3RpdmVseSwgdG8gYXZvaWQgY29uZnVzaW9uLiAgRnVydGhlcm1vcmUsCi0gIGFycmF5LmZyb21ieXRlcygpLCBhcnJheS5leHRlbmQoKSBhcyB3ZWxsIGFzIHRoZSBhcnJheS5hcnJheSgpIGNvbnN0cnVjdG9yIG5vdwotICBhY2NlcHQgYnl0ZWFycmF5IG9iamVjdHMuICBQYXRjaCBieSBUaG9tYXMgSm9sbGFucy4KLQotLSBJc3N1ZSAjODA4MTY0OiBGaXhlZCBzb2NrZXQuY2xvc2UgdG8gYXZvaWQgcmVmZXJlbmNlcyB0byBnbG9iYWxzLCB0byBhdm9pZAotICBpc3N1ZXMgd2hlbiBzb2NrZXQuY2xvc2UgaXMgY2FsbGVkIGZyb20gYSBfX2RlbF9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjOTcwNjogc3NsIG1vZHVsZSBwcm92aWRlcyBhIGJldHRlciBlcnJvciBoYW5kbGluZyBpbiB2YXJpb3VzCi0gIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzE4Njg6IEVsaW1pbmF0ZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBpbiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBieSBnZXR0aW5nCi0gIHJpZCBvZiB0aGUgY2FjaGVkIGNvcHkgb2YgdGhyZWFkLWxvY2FsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxNTEyNzkxOiBJbiBzZXRmcmFtZXJhdGUoKSBpbiB0aGUgd2F2ZSBtb2R1bGUsIG5vbi1pbnRlZ3JhbCBmcmFtZSByYXRlcwotICBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLgotCi0tIElzc3VlICM4Nzk3OiB1cmxsaWIyIGRvZXMgYSByZXRyeSBmb3IgQmFzaWMgQXV0aGVudGljYXRpb24gZmFpbHVyZSBpbnN0ZWFkIG9mCi0gIGZhbGxpbmcgaW50byByZWN1cnNpb24uCi0KLS0gSXNzdWUgIzExOTQyMjI6IGVtYWlsLnV0aWxzLnBhcnNlZGF0ZSBub3cgcmV0dXJucyBSRkMyODIyIGNvbXBsaWFudCBmb3VyCi0gIGNoYXJhY3RlciB5ZWFycyBldmVuIGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIFJGQzgyMiB0d28gY2hhcmFjdGVyIHllYXJzLgotCi0tIElzc3VlICM4NzUwOiBGaXhlZCBNdXRhYmxlU2V0J3MgbWV0aG9kcyB0byBjb3JyZWN0bHkgaGFuZGxlIHJlZmxleGl2ZQotICBvcGVyYXRpb25zIG9uIGl0cyBzZWxmLCBuYW1lbHkgeCAtPSB4IGFuZCB4IF49IHguCi0KLS0gSXNzdWUgIzkxMjk6IHNtdHBkLnB5IGlzIHZ1bG5lcmFibGUgdG8gRG9TIGF0dGFja3MgZGVyaXZpbmcgZnJvbSBtaXNzaW5nIGVycm9yCi0gIGhhbmRsaW5nIHdoZW4gYWNjZXB0aW5nIGEgbmV3IGNvbm5lY3Rpb24uCi0KLS0gSXNzdWUgIzk2MDE6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciBub24tY29tcGxpYW50Ci0gIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIElJUyBzaGlwcGVkIHdpdGggV2luZG93cyBzZXJ2ZXIgMjAwMyByZXR1cm5pbmcgaW52YWxpZAotICByZXNwb25zZSBjb2RlcyBmb3IgTUtEIGFuZCBQV0QgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzY1ODc0OTogYXN5bmNvcmUncyBjb25uZWN0KCkgbWV0aG9kIG5vdyBjb3JyZWN0bHkgaW50ZXJwcmV0cyB3aW5zb2NrCi0gIGVycm9ycy4KLQotLSBJc3N1ZSAjOTUwMTogRml4ZWQgbG9nZ2luZyByZWdyZXNzaW9ucyBpbiBjbGVhbnVwIGNvZGUuCi0KLS0gRml4IGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIHRvIHNraXAgbWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBvYmplY3QuCi0KLS0gSXNzdWUgIzk1NzI6IEltcG9ydGxpYiBzaG91bGQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhIGRpcmVjdG9yeSBpdCB0aG91Z2h0Ci0gIGl0IG5lZWRlZCB0byBjcmVhdGUgd2FzIGRvbmUgY29uY3VycmVudGx5IGJ5IGFub3RoZXIgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjOTYxNzogU2lnbmFscyByZWNlaXZlZCBkdXJpbmcgYSBsb3ctbGV2ZWwgd3JpdGUgb3BlcmF0aW9uIGFyZW4ndAotICBpZ25vcmVkIGJ5IHRoZSBidWZmZXJlZCBJTyBsYXllciBhbnltb3JlLgotCi0tIElzc3VlICM4NDM1OTA6IE1ha2UgIm1hY2ludG9zaCIgYW4gYWxpYXMgdG8gdGhlICJtYWNfcm9tYW4iIGVuY29kaW5nLgotCi0tIENyZWF0ZSBvcy5mc2RlY29kZSgpOiBkZWNvZGUgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZQotICBlcnJvciBoYW5kbGVyLCBvciBzdHJpY3QgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMzNDg4OiBQcm92aWRlIGNvbnZlbmllbnQgc2hvcnRoYW5kIGZ1bmN0aW9ucyBgYGd6aXAuY29tcHJlc3NgYCBhbmQKLSAgYGBnemlwLmRlY29tcHJlc3NgYC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFuYW5kIEIuIFBpbGxhaS4KLQotLSBJc3N1ZSAjODgwNzogcG9wbGliLlBPUDNfU1NMIGNsYXNzIG5vdyBhY2NlcHRzIGEgY29udGV4dCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEKLSAgc3NsLlNTTENvbnRleHQgb2JqZWN0IGFsbG93aW5nIGJ1bmRsaW5nIFNTTCBjb25maWd1cmF0aW9uIG9wdGlvbnMsCi0gIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpCi0gIHN0cnVjdHVyZS4KLQotLSBJc3N1ZSAjODg2NjogcGFyYW1ldGVycyBwYXNzZWQgdG8gc29ja2V0LmdldGFkZHJpbmZvIGNhbiBub3cgYmUgc3BlY2lmaWVkIGFzCi0gIHNpbmdsZSBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBBZGRyZXNzIFhYWCBjb21tZW50IGluIGRpcy5weSBieSBoYXZpbmcgaW5zcGVjdC5weSBwcmVmZXIgdG8gcmV1c2UgdGhlIGRpcy5weQotICBjb21waWxlciBmbGFnIHZhbHVlcyBvdmVyIGRlZmluaW5nIGl0cyBvd24uCi0KLS0gSXNzdWUgIzkxNDc6IEFkZGVkIGRpcy5jb2RlX2luZm8oKSB3aGljaCBpcyBzaW1pbGFyIHRvIHNob3dfY29kZSgpIGJ1dCByZXR1cm5zCi0gIGZvcm1hdHRlZCBjb2RlIGluZm9ybWF0aW9uIGluIGEgc3RyaW5nIHJhdGhlciB0aGFuIGRpc3BsYXlpbmcgb24gc2NyZWVuLgotCi0tIElzc3VlICM5NTY3OiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgbm93IGFkZHMgYSBfX3dyYXBwZWRfXyBhdHRyaWJ1dGUKLSAgcG9pbnRpbmcgdG8gdGhlIG9yaWdpbmFsIGNhbGxhYmxlLgotCi0tIElzc3VlICMzNDQ1OiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgbm93IHRvbGVyYXRlcyBtaXNzaW5nIGF0dHJpYnV0ZXMgb24KLSAgd3JhcHBlZCBjYWxsYWJsZXMuCi0KLS0gSXNzdWUgIzU4Njc6IEFkZCBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZCBhbmQgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kLgotCi0tIElzc3VlICM5NjA1OiBwb3NpeC5nZXRsb2dpbigpIGRlY29kZXMgdGhlIHVzZXJuYW1lIHdpdGggZmlsZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzk2MDQ6IHBvc2l4LmluaXRncm91cHMoKSBlbmNvZGVzIHRoZSB1c2VybmFtZSB1c2luZyB0aGUgZmlsZXlzdGVtCi0gIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzk2MDM6IHBvc2l4LnR0eW5hbWUoKSBhbmQgcG9zaXguY3Rlcm1pZCgpIGRlY29kZSB0aGUgdGVybWluYWwgbmFtZQotICB1c2luZyB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4KLSAgYnkgRGF2aWQgV2F0c29uLgotCi0tIElzc3VlICM3NjQ3OiBUaGUgcG9zaXggbW9kdWxlIG5vdyBoYXMgdGhlIFNUX1JET05MWSBhbmQgU1RfTk9TVUlEIGNvbnN0YW50cywKLSAgZm9yIHVzZSB3aXRoIHRoZSBzdGF0dmZzKCkgZnVuY3Rpb24uICBQYXRjaCBieSBBZGFtIEphY2tzb24uCi0KLS0gSXNzdWUgIzg2ODg6IE1BTklGRVNUIGZpbGVzIGNyZWF0ZWQgYnkgZGlzdHV0aWxzIG5vdyBpbmNsdWRlIGEgbWFnaWMgY29tbWVudAotICBpbmRpY2F0aW5nIHRoZXkgYXJlIGdlbmVyYXRlZC4gIE1hbnVhbGx5IG1haW50YWluZWQgTUFOSUZFU1RzIHdpdGhvdXQgdGhpcwotICBtYXJrZXIgd2lsbCBub3QgYmUgb3ZlcndyaXR0ZW4gb3IgcmVtb3ZlZC4KLQotLSBJc3N1ZSAjNzQ2Nzogd2hlbiByZWFkaW5nIGEgZmlsZSBmcm9tIGEgWklQIGFyY2hpdmUsIGl0cyBDUkMgaXMgY2hlY2tlZCBhbmQgYQotICBCYWRaaXBmaWxlIGVycm9yIGlzIHJhaXNlZCBpZiBpdCBkb2Vzbid0IG1hdGNoIChhcyB1c2VkIHRvIGJlIHRoZSBjYXNlIGluCi0gIFB5dGhvbiAyLjUgYW5kIGVhcmxpZXIpLgotCi0tIElzc3VlICM5NTUwOiBhIEJ1ZmZlcmVkUmVhZGVyIGNvdWxkIGlzc3VlIGFuIGFkZGl0aW9uYWwgcmVhZCB3aGVuIHRoZSBvcmlnaW5hbAotICByZWFkIHJlcXVlc3QgaGFkIGJlZW4gc2F0aXNmaWVkLCB3aGljaCBjb3VsZCBibG9jayBpbmRlZmluaXRlbHkgd2hlbiB0aGUKLSAgdW5kZXJseWluZyByYXcgSU8gY2hhbm5lbCB3YXMgZS5nLiBhIHNvY2tldC4gIFJlcG9ydCBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkKLSAgSmFzb24gVi4gTWlsbGVyLgotCi0tIElzc3VlICMzNzU3OiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBub3cgc3VwcG9ydCBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0aW9uLgotICBUaHJlYWQtbG9jYWwgb2JqZWN0cyBpbnZvbHZlZCBpbiByZWZlcmVuY2UgY3ljbGVzIHdpbGwgYmUgZGVhbGxvY2F0ZWQgdGltZWx5Ci0gIGJ5IHRoZSBjeWNsaWMgR0MsIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCi0KLS0gSXNzdWUgIzk0NTI6IEFkZCByZWFkX2ZpbGUsIHJlYWRfc3RyaW5nLCBhbmQgcmVhZF9kaWN0IHRvIHRoZSBjb25maWdwYXJzZXIKLSAgQVBJOyBuZXcgc291cmNlIGF0dHJpYnV0ZSB0byBleGNlcHRpb25zLgotCi0tIElzc3VlICM2MjMxOiBGaXggeG1sLmV0cmVlLkVsZW1lbnRJbmNsdWRlIHRvIGluY2x1ZGUgdGhlIHRhaWwgb2YgdGhlIGN1cnJlbnQKLSAgbm9kZS4KLQotLSBJc3N1ZSAjODA0NzogRml4IHRoZSB4bWwuZXRyZWUgc2VyaWFsaXplciB0byByZXR1cm4gYnl0ZXMgYnkgZGVmYXVsdC4gIFVzZQotICBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcuCi0KLS0gSXNzdWUgIzgyODA6IHVybGxpYjIncyBSZXF1ZXN0IG1ldGhvZCB3aWxsIHJlbW92ZSBmcmFnbWVudHMgaW4gdGhlIHVybC4gIFRoaXMKLSAgaXMgaG93IGl0IGlzIHN1cHBvc2VkIHRvIHdvcmssIHdnZXQgYW5kIGN1cmwgZG8gdGhlIHNhbWUuICBQcmV2aW91cyBiZWhhdmlvcgotICB3YXMgd3JvbmcuCi0KLS0gSXNzdWUgIzY2ODM6IEZvciBTTVRQIGxvZ2lucyB3ZSBub3cgdHJ5IGFsbCBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGFkdmVydGlzZWQKLSAgYnkgdGhlIHNlcnZlci4gIE1hbnkgc2VydmVycyBhcmUgYnVnZ3kgYW5kIGFkdmVydGlzZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzCi0gIHRoZXkgZG8gbm90IHN1cHBvcnQgaW4gcmVhbGl0eS4KLQotLSBJc3N1ZSAjODgxNDogZnVuY3Rpb24gYW5ub3RhdGlvbnMgKHRoZSBgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSkgYXJlIG5vdwotICBpbmNsdWRlZCBpbiB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMgY29waWVkIGJ5IGRlZmF1bHQgYnkgZnVuY3Rvb2xzLndyYXBzIGFuZAotICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuICBQYXRjaCBieSBUZXJyZW5jZSBDb2xlLgotCi0tIElzc3VlICMyOTQ0OiBhc3luY29yZSBkb2Vzbid0IGhhbmRsZSBjb25uZWN0aW9uIHJlZnVzZWQgY29ycmVjdGx5LgotCi0tIElzc3VlICM0MTg0OiBQcml2YXRlIGF0dHJpYnV0ZXMgb24gc210cGQuU01UUENoYW5uZWwgbWFkZSBwdWJsaWMgYW5kIGRlcHJlY2F0ZQotICB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGVzLiBBZGQgdGVzdHMgZm9yIHNtdHBkIG1vZHVsZS4KLQotLSBJc3N1ZSAjMzE5NjogZW1haWwgaGVhZGVyIGRlY29kaW5nIGlzIG5vdyBmb3JnaXZpbmcgaWYgYW4gUkZDMjA0NyBlbmNvZGVkIHdvcmQKLSAgZW5jb2RlZCBpbiBiYXNlNjQgaXMgbGFja2luZyBwYWRkaW5nLgotCi0tIElzc3VlICM5NDQ0OiBBcmdwYXJzZSBub3cgdXNlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBwcmVmaXhfY2hhcnMgYXMgdGhlIG9wdGlvbgotICBjaGFyYWN0ZXIgZm9yIHRoZSBhZGRlZCAnaC9oZWxwJyBvcHRpb24gaWYgcHJlZml4X2NoYXJzIGRvZXMgbm90IGNvbnRhaW4gYQotICAnLScsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjNzM3MjogRml4IHBzdGF0cyByZWdyZXNzaW9uIHdoZW4gc3RyaXBwaW5nIHBhdGhzIGZyb20gcHJvZmlsZSBkYXRhCi0gIGdlbmVyYXRlZCB3aXRoIHRoZSBwcm9maWxlIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTQyODogRml4IHJ1bm5pbmcgc2NyaXB0cyB3aXRoIHRoZSBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgZnJvbSB0aGUKLSAgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM3NzgxOiBGaXggcmVzdHJpY3Rpbmcgc3RhdHMgYnkgZW50cnkgY291bnRzIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUKLSAgYnJvd3Nlci4KLQotLSBJc3N1ZSAjOTIwOTogRG8gbm90IGNyYXNoIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3NlciBvbiBpbnZhbGlkIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbnMuCi0KLS0gVXBkYXRlIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IHRvIG1hdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBQeTIuNyAoYmFzZWQgb24KLSAgbGlzdHMgaW5zdGVhZCBvZiB3ZWFrbHkgcmVmZXJlbmNlZCBMaW5rIG9iamVjdHMpLgotCi0tIElzc3VlICM4Mzk3OiBSYWlzZSBhbiBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gbWl4IGl0ZXJhdGlvbiBhbmQgcmVndWxhciByZWFkcwotICBvbiBhIEJaMkZpbGUgb2JqZWN0LCByYXRoZXIgdGhhbiByZXR1cm5pbmcgaW5jb3JyZWN0IHJlc3VsdHMuCi0KLS0gSXNzdWUgIzk0NDg6IEZpeCBhIGxlYWsgb2YgT1MgcmVzb3VyY2VzIChtdXRleGVzIG9yIHNlbWFwaG9yZXMpIHdoZW4KLSAgcmUtaW5pdGlhbGl6aW5nIGEgYnVmZmVyZWQgSU8gb2JqZWN0IGJ5IGNhbGxpbmcgaXRzIGBgX19pbml0X19gYCBtZXRob2QuCi0KLS0gSXNzdWUgIzE3MTM6IEZpeCBvcy5wYXRoLmlzbW91bnQoKSwgd2hpY2ggcmV0dXJuZWQgdHJ1ZSBmb3Igc3ltYm9saWMgbGlua3MKLSAgYWNyb3NzIGRldmljZXMuCi0KLS0gSXNzdWUgIzg4MjY6IFByb3Blcmx5IGxvYWQgb2xkLXN0eWxlICJleHBpcmVzIiBhdHRyaWJ1dGUgaW4gaHR0cC5jb29raWVzLgotCi0tIElzc3VlICMxNjkwMTAzOiBGaXggaW5pdGlhbCBuYW1lc3BhY2UgZm9yIGNvZGUgcnVuIHdpdGggdHJhY2UubWFpbigpLgotCi0tIElzc3VlICM3Mzk1OiBGaXggdHJhY2ViYWNrcyBpbiBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3Nlci4KLQotLSBJc3N1ZSAjODIzMDogRml4IExpYi90ZXN0L3NvcnRwZXJmLnB5LgotCi0tIElzc3VlICM4NjIwOiB3aGVuIGEgY21kLkNtZCgpIGlzIGZlZCBpbnB1dCB0aGF0IHJlYWNoZXMgRU9GIHdpdGhvdXQgYSBmaW5hbAotICBuZXdsaW5lLCBpdCBubyBsb25nZXIgdHJ1bmNhdGVzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbGFzdCBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzUxNDY6IEhhbmRsZSBVSUQgVEhSRUFEIGNvbW1hbmQgY29ycmVjdGx5IGluIGltYXBsaWIuCi0KLS0gSXNzdWUgIzUxNDc6IEZpeCB0aGUgaGVhZGVyIGdlbmVyYXRlZCBmb3IgY29va2llIGZpbGVzIHdyaXR0ZW4gYnkKLSAgaHR0cC5jb29raWVqYXIuTW96aWxsYUNvb2tpZUphci4KLQotLSBJc3N1ZSAjODE5ODogSW4gcHlkb2MsIG91dHB1dCBhbGwgaGVscCB0ZXh0IHRvIHRoZSBjb3JyZWN0IHN0cmVhbSB3aGVuCi0gIHN5cy5zdGRvdXQgaXMgcmVhc3NpZ25lZC4KLQotLSBJc3N1ZSAjNzkwOTogRG8gbm90IHRvdWNoIHBhdGhzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4ZXMgYGBcXC5cYGAgb3IgYGBcXD9cYGAKLSAgaW4gbnRwYXRoLm5vcm1wYXRoKCkuCi0KLS0gSXNzdWUgIzEyODY6IEFsbG93IHVzaW5nIGZpbGVpbnB1dC5GaWxlSW5wdXQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCi0KLS0gQWRkIGxydV9jYWNoZSgpIGRlY29yYXRvciB0byB0aGUgZnVuY3Rvb2xzIG1vZHVsZS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gRml4IGBgVG9vbHMvc2NyaXB0cy9jaGVja3B5Yy5weWBgIGFmdGVyIFBFUCAzMTQ3LgotCi0tIElzc3VlICM4ODY3OiBGaXggYGBUb29scy9zY3JpcHRzL3NlcnZlLnB5YGAgdG8gd29yayB3aXRoIGZpbGVzIGNvbnRhaW5pbmcKLSAgbm9uLUFTQ0lJIGNvbnRlbnQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM5NjAxOiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBmdHBsaWIucGFyc2UyNTcuCi0KLS0gSXNzdWUgIzg4NTc6IFByb3ZpZGUgYSB0ZXN0IGNhc2UgZm9yIHNvY2tldC5nZXRhZGRyaW5mby4KLQotLSBJc3N1ZSAjNzU2NDogU2tpcCB0ZXN0X2lvY3RsIGlmIGFub3RoZXIgcHJvY2VzcyBpcyBhdHRhY2hlZCB0byAvZGV2L3R0eS4KLQotLSBJc3N1ZSAjODQzMzogRml4IHRlc3RfY3Vyc2VzIGZhaWx1cmUgd2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzLgotCi0tIElzc3VlICM5NDk2OiBQcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIHJsY29tcGxldGVyIG1vZHVsZS4gIFBhdGNoIGJ5Ci0gIE1pY2hlbGUgT3Jyw7kuCi0KLS0gSXNzdWUgIzg2ODc6IHByb3ZpZGUgYSB0ZXN0IHN1aXRlIGZvciBzY2hlZC5weSBtb2R1bGUuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMzAzNDM0OiBHZW5lcmF0ZSBaSVAgZmlsZSBjb250YWluaW5nIGFsbCBQREJzLgotCi0tIElzc3VlICM5MTkzOiBQRVAgMzE0OSBpcyBhY2NlcHRlZC4KLQotLSBJc3N1ZSAjMzEwMTogSGVscGVyIGZ1bmN0aW9ucyBfYWRkX29uZV90b19pbmRleF9DKCkgYW5kIF9hZGRfb25lX3RvX2luZGV4X0YoKQotICBiZWNvbWUgX1B5X2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfUHlfYWRkX29uZV90b19pbmRleF9GKCksIHJlc3BlY3RpdmVseS4KLQotLSBJc3N1ZSAjOTcwMDogZGVmaW5lIEhBVkVfQlJPS0VOX1BPU0lYX1NFTUFQSE9SRVMgdW5kZXIgQUlYIDYueC4gIFBhdGNoIGJ5Ci0gIFPDqWJhc3RpZW4gU2FibMOpLgotCi0tIERvbid0IHJ1biBwZ2VuIHR3aWNlIHdoZW4gdXNpbmcgbWFrZSAtai4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMS1BdWctMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzg5OTE6IGNvbnZlcnRidWZmZXIoKSByZWplY3RzIGRpc2NvbnRpZ2lvdXMgYnVmZmVycy4KLQotLSBJc3N1ZSAjNzYxNjogRml4IGNvcHlpbmcgb2Ygb3ZlcmxhcHBpbmcgbWVtb3J5dmlldyBzbGljZXMgd2l0aCB0aGUgSW50ZWwKLSAgY29tcGlsZXIuCi0KLS0gSXNzdWUgIzg0MTM6IHN0cnVjdHNlcXVlbmNlIG5vdyBzdWJjbGFzc2VzIHR1cGxlLgotCi0tIElzc3VlICM4MjcxOiBkdXJpbmcgdGhlIGRlY29kaW5nIG9mIGFuIGludmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZSwgb25seSB0aGUKLSAgc3RhcnQgYnl0ZSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlKHMpIGFyZSBub3cgY29uc2lkZXJlZCBpbnZhbGlkLCBpbnN0ZWFkIG9mCi0gIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGJ5IHRoZSBzdGFydCBieXRlLiAgRS5nLjoKLSAgJ1x4ZjFceDgwQUInLmRlY29kZSgndXRmLTgnLCAncmVwbGFjZScpIG5vdyByZXR1cm5zIHUnXHVmZmZkQUInIGFuZCByZXBsYWNlcwotICB3aXRoIFUrRkZGRCBvbmx5IHRoZSBzdGFydCBieXRlICgnXHhmMScpIGFuZCB0aGUgY29udGludWF0aW9uIGJ5dGUgKCdceDgwJykKLSAgZXZlbiBpZiAnXHhmMScgaXMgdGhlIHN0YXJ0IGJ5dGUgb2YgYSA0LWJ5dGVzIHNlcXVlbmNlLiAgUHJldmlvdXMgdmVyc2lvbnMKLSAgcmV0dXJuZWQgYSBzaW5nbGUgdSdcdWZmZmQnLgotCi0tIElzc3VlICM5MDExOiBBIG5lZ2F0ZWQgaW1hZ2luYXJ5IGxpdGVyYWwgKGUuZy4sICItN2oiKSBub3cgaGFzIHJlYWwgcGFydCAtMC4wCi0gIHJhdGhlciB0aGFuIDAuMC4gIFNvICItN2oiIGlzIG5vdyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gIi0oN2opIi4KLQotLSBCZSBtb3JlIHNwZWNpZmljIGluIGVycm9yIG1lc3NhZ2VzIGFib3V0IHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICM4OTQ5OiAieiIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyBkb2Vzbid0IGFjY2VwdCBieXRlcwotICBvYmplY3RzLCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzY1NDM6IFdyaXRlIHRoZSB0cmFjZWJhY2sgaW4gdGhlIHRlcm1pbmFsIGVuY29kaW5nIGluc3RlYWQgb2YgdXRmLTguCi0gIEZpeCB0aGUgZW5jb2Rpbmcgb2YgdGhlIG1vZHVsZXMgZmlsZW5hbWUuICBQYXRjaCB3cml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90Ci0gIGQnQXJjLgotCi0tIElzc3VlICM5MDExOiBSZW1vdmUgYnVnZ3kgYW5kIHVubmVjZXNzYXJ5IChpbiAzLngpIFNULT5BU1QgY29tcGlsYXRpb24gY29kZQotICBkZWFsaW5nIHdpdGggdW5hcnkgbWludXMgYXBwbGllZCB0byBhIGNvbnN0YW50LiAgVGhlIHJlbW92ZWQgY29kZSB3YXMgbXV0YXRpbmcKLSAgdGhlIFNULCBjYXVzaW5nIGEgc2Vjb25kIGNvbXBpbGF0aW9uIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzg1MDk5NzogbWJjcyBlbmNvZGluZyAoV2luZG93cyBvbmx5KSBoYW5kbGVzIGVycm9ycyBhcmd1bWVudDogc3RyaWN0Ci0gIG1vZGUgcmFpc2VzIHVuaWNvZGUgZXJyb3JzLiAgVGhlIGVuY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgInJlcGxhY2UiCi0gIGVycm9yIGhhbmRsZXJzLCB0aGUgZGVjb2RlciBvbmx5IHN1cHBvcnRzICJzdHJpY3QiIGFuZCAiaWdub3JlIiBlcnJvcgotICBoYW5kbGVycy4gIFBhdGNoIHdyaXR0ZW4gYnkgTWFyayBIYW1tb25kLgotCi0tIElzc3VlICM4ODUwOiBSZW1vdmUgInciIGFuZCAidyMiIGZvcm1hdHMgZnJvbSBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMsIHVzZQotICAidyoiIGZvcm1hdCBpbnN0ZWFkLiBBZGQgdGVzdHMgZm9yICJ3KiIgZm9ybWF0LgotCi0tIElzc3VlICM4NTkyOiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgcmFpc2UgYSBUeXBlRXJyb3IgZm9yICJ5IiwgInUiIGFuZCAiWiIKLSAgZm9ybWF0cyBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGEgbnVsbCBieXRlL2NoYXJhY3Rlci4gIFdyaXRlIHVuaXQgdGVzdHMgZm9yCi0gIHN0cmluZyBmb3JtYXRzLgotCi0tIElzc3VlICM3NDkwOiBUbyBmYWNpbGl0YXRlIHNoYXJpbmcgb2YgZG9jdGVzdHMgYmV0d2VlbiAyLnggYW5kIDMueCB0ZXN0Ci0gIHN1aXRlcywgdGhlIElHTk9SRV9FWENFUFRJT05fREVUQUlMIGRpcmVjdGl2ZSBub3cgYWxzbyBpZ25vcmVzIHRoZSBtb2R1bGUKLSAgbG9jYXRpb24gb2YgdGhlIHJhaXNlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzg5Njk6IE9uIFdpbmRvd3MsIHVzZSBtYmNzIGNvZGVjIGluIHN0cmljdCBtb2RlIHRvIGVuY29kZSBhbmQgZGVjb2RlCi0gIGZpbGVuYW1lcyBhbmQgZW5hYmxlIG9zLmZzZW5jb2RlKCkuCi0KLS0gSXNzdWUgIzkwNTg6IFJlbW92ZSBhc3NlcnRpb25zIGFib3V0IElOVF9NQVggaW4gVW5pY29kZURlY29kZUVycm9yLgotCi0tIElzc3VlICM4OTQxOiBEZWNvZGluZyBiaWcgZW5kaWFuIFVURi0zMiBkYXRhIGluIFVDUy0yIGJ1aWxkcyBjb3VsZCBjcmFzaCB0aGUKLSAgaW50ZXJwcmV0ZXIgd2l0aCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoaGlnaGVyIHRoYW4KLSAgMHgxMDAwMCkuCi0KLS0gSXNzdWUgIzg5NTA6IChTZWUgYWxzbyBpc3N1ZSAjNTA4MCkuICBQeV9BcmdQYXJzZSooKSBmdW5jdGlvbnMgbm93IHJhaXNlCi0gIFR5cGVFcnJvciBpbnN0ZWFkIG9mIGdpdmluZyBhIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIGEgZmxvYXQgaXMgcGFyc2VkIHVzaW5nCi0gIHRoZSAnTCcgY29kZSAoZm9yIGxvbmcgbG9uZykuICAoQWxsIG90aGVyIGludGVnZXIgY29kZXMgYWxyZWFkeSByYWlzZQotICBUeXBlRXJyb3IgaW4gdGhpcyBjYXNlLikKLQotLSBJc3N1ZSAjODkyMjogTm9ybWFsaXplIHRoZSBlbmNvZGluZyBuYW1lIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSB0bwotICBlbmFibGUgc2hvcnRjdXRzIGZvciB1cHBlciBjYXNlIGVuY29kaW5nIG5hbWUuIEFkZCBhbHNvIGEgc2hvcnRjdXQgZm9yCi0gICJpc28tODg1OS0xIiBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgYW5kIFB5VW5pY29kZV9EZWNvZGUoKS4KLQotLSBJc3N1ZSAjODgzODogUmVtb3ZlIGNvZGVjcy5jaGFyYnVmZmVyX2VuY29kZSgpIGZ1bmN0aW9uLiAgVGhlIGJ1ZmZlciBwcm90b2NvbAotICBkb2Vzbid0IHN1cHBvcnQgImNoYXIgYnVmZmVyIiBhbnltb3JlIGluIFB5dGhvbiAzLgotCi0tIElzc3VlICM4MzM5OiBSZW1vdmUgInQjIiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UgInMjIiBvciAicyoiCi0gIGluc3RlYWQuICBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBub3cgYWNjZXB0cyBtb2RpZmlhYmxlIGJ1ZmZlciBvYmplY3RzCi0gIGxpa2UgYnl0ZWFycmF5LgotCi0tIElzc3VlICM4ODM3OiBSZW1vdmUgIk8/IiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLiAgVGhlIGZvcm1hdCBpcyBubwotICB1c2VkIGFueW1vcmUgYW5kIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkLgotCi0tIEluIHN0ci5mb3JtYXQoKSwgcmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gaW5kZXhlcyB0byBhcmd1bWVudHMgYXJlIHRvbyBsYXJnZS4KLQotLSBJc3N1ZSAjMjg0NDogTWFrZSBpbnQoJzQyJywgbikgY29uc2lzdGVudGx5IHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQKLSAgaW50ZWdlcnMgbiAoaW5jbHVkaW5nIG4gPSAtOTA5KS4KLQotLSBJc3N1ZSAjODE4ODogSW50cm9kdWNlIGEgbmV3IHNjaGVtZSBmb3IgY29tcHV0aW5nIGhhc2hlcyBvZiBudW1iZXJzIChpbnN0YW5jZXMKLSAgb2YgaW50LCBmbG9hdCwgY29tcGxleCwgZGVjaW1hbC5EZWNpbWFsIGFuZCBmcmFjdGlvbnMuRnJhY3Rpb24pIHRoYXQgbWFrZXMgaXQKLSAgZWFzeSB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgaGFzaCh4KSA9PSBoYXNoKHkpIHdoZW5ldmVyIHggYW5kIHkgaGF2ZQotICBlcXVhbCB2YWx1ZS4KLQotLSBJc3N1ZSAjODc0ODogRml4IHR3byBpc3N1ZXMgd2l0aCBjb21wYXJpc29ucyBiZXR3ZWVuIGNvbXBsZXggYW5kIGludGVnZXIKLSAgb2JqZWN0cy4gICgxKSBUaGUgY29tcGFyaXNvbiBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gVHJ1ZSBpbiBzb21lIGNhc2VzCi0gICgyKio1MysxID09IGNvbXBsZXgoMioqNTMpID09IDIqKjUzKSwgYnJlYWtpbmcgdHJhbnNpdGl2aXR5IG9mIGVxdWFsaXR5LgotICAoMikgVGhlIGNvbXBhcmlzb24gcmFpc2VkIGFuIE92ZXJmbG93RXJyb3IgZm9yIGxhcmdlIGludGVnZXJzLCBsZWFkaW5nIHRvCi0gIHVucHJlZGljdGFibGUgZXhjZXB0aW9ucyB3aGVuIGNvbWJpbmluZyBpbnRlZ2VycyBhbmQgY29tcGxleCBvYmplY3RzIGluIHNldHMKLSAgb3IgZGljdHMuCi0KLS0gSXNzdWUgIzg3NjY6IEluaXRpYWxpemUgX3dhcm5pbmdzIG1vZHVsZSBiZWZvcmUgaW1wb3J0aW5nIHRoZSBmaXJzdCBtb2R1bGUuCi0gIEZpeCBhIGNyYXNoIGlmIGFuIGVtcHR5IGRpcmVjdG9yeSBjYWxsZWQgImVuY29kaW5ncyIgZXhpc3RzIGluIHN5cy5wYXRoLgotCi0tIElzc3VlICM4NTg5OiBEZWNvZGUgUFlUSE9OV0FSTklOR1MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCB0aGUgZmlsZSBzeXN0ZW0KLSAgZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZyB0bwotICBiZSBjb25zaXN0ZW50IHdpdGggb3MuZW52aXJvbi4gIEFkZCBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZSgpIGZ1bmN0aW9uLgotCi0tIFB5T2JqZWN0X0R1bXAoKSBlbmNvZGVzIHVuaWNvZGUgb2JqZWN0cyB0byB1dGY4IHdpdGggYmFja3NsYXNocmVwbGFjZSAoaW5zdGVhZAotICBvZiBzdHJpY3QpIGVycm9yIGhhbmRsZXIgdG8gZXNjYXBlIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzg3MTU6IENyZWF0ZSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCkgZnVuY3Rpb246IEVuY29kZSBhIFVuaWNvZGUKLSAgb2JqZWN0IHRvIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmcgd2l0aCB0aGUgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IKLSAgaGFuZGxlciwgYW5kIHJldHVybiBieXRlcy4gIElmIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldCwgZmFsbAotICBiYWNrIHRvIFVURi04LgotCi0tIEVuYWJsZSBzaG9ydGN1dHMgZm9yIGNvbW1vbiBlbmNvZGluZ3MgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGZvciBhbnkKLSAgZXJyb3IgaGFuZGxlciwgbm90IG9ubHkgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlciAoc3RyaWN0KS4KLQotLSBJc3N1ZSAjODYxMDogTG9hZCBmaWxlIHN5c3RlbSBjb2RlYyBhdCBzdGFydHVwLCBhbmQgZGlzcGxheSBhIGZhdGFsIGVycm9yIG9uCi0gIGZhaWx1cmUuICBTZXQgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIHRvIHV0Zi04IChpbnN0ZWFkIG9mIE5vbmUpIGlmIGdldHRpbmcKLSAgdGhlIGxvY2FsZSBlbmNvZGluZyBmYWlsZWQsIG9yIGlmIG5sX2xhbmdpbmZvKENPREVTRVQpIGZ1bmN0aW9uIGlzIG1pc3NpbmcuCi0KLS0gUHlGaWxlX0Zyb21GZCgpIHVzZXMgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCgpIGluc3RlYWQgb2YKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmcoKSB0byBzdXBwb3J0IHN1cnJvZ2F0ZXMgaW4gdGhlIGZpbGVuYW1lIGFuZCB1c2UgdGhlIHJpZ2h0Ci0gIGVuY29kaW5nLgotCi0tIElzc3VlICM3NTA3OiBRdW90ZSAiISIgaW4gcGlwZXMucXVvdGUoKTsgaXQgaXMgc3BlY2lhbCB0byBzb21lIHNoZWxscy4KLQotLSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgpIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzg0MTk6IFByZXZlbnQgdGhlIGRpY3QgY29uc3RydWN0b3IgZnJvbSBhY2NlcHRpbmcgbm9uLXN0cmluZyBrZXl3b3JkCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjODEyNDogUHlTeXNfV3JpdGVTdGRvdXQoKSBhbmQgUHlTeXNfV3JpdGVTdGRlcnIoKSBkb24ndCBleGVjdXRlCi0gIGluZGlyZWN0bHkgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyBhbnltb3JlIGJlY2F1c2UgbXl3cml0ZSgpIGlnbm9yZXMgZXhjZXB0aW9ucwotICAoS2V5Ym9hcmRJbnRlcnJ1cHQpLgotCi0tIElzc3VlICM4MDkyOiBGaXggUHlVbmljb2RlX0VuY29kZVVURjgoKSB0byBzdXBwb3J0IGVycm9yIGhhbmRsZXIgcHJvZHVjaW5nCi0gIHVuaWNvZGUgc3RyaW5nIChlZy4gYmFja3NsYXNocmVwbGFjZSkuCi0KLS0gSXNzdWUgIzg0ODU6IFB5VW5pY29kZV9GU0NvbnZlcnRlcigpIGRvZXNuJ3QgYWNjZXB0IGJ5dGVlYXJyYXkgb2JqZWN0cwotICBhbnltb3JlLCB5b3UgaGF2ZSB0byBjb252ZXJ0IHlvdXIgYnl0ZWFycmF5IGZpbGVuYW1lcyB0byBieXRlcy4KLQotLSBJc3N1ZSAjNzMzMjogUmVtb3ZlIHRoZSAxNktCIHN0YWNrLWJhc2VkIGJ1ZmZlciBpbgotICBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZSwgd2hpY2ggZG9lc24ndCBicmluZyBhbnkgbm90aWNlYWJsZSBiZW5lZml0Ci0gIGNvbXBhcmVkIHRvIHRoZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIGZhbGxiYWNrLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMKLSAgTmF0YWxpLgotCi0tIElzc3VlICM4NDE3OiBSYWlzZSBhbiBPdmVyZmxvd0Vycm9yIHdoZW4gYW4gaW50ZWdlciBsYXJnZXIgdGhhbiBzeXMubWF4c2l6ZSBpcwotICBwYXNzZWQgdG8gYnl0ZXMgb3IgYnl0ZWFycmF5LgotCi0tIElzc3VlICM3MzAxOiBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGUgJFBZVEhPTldBUk5JTkdTLgotCi0tIElzc3VlICM4MzI5OiBEb24ndCByZXR1cm4gdGhlIHNhbWUgbGlzdHMgZnJvbSBzZWxlY3Quc2VsZWN0IHdoZW4gbm8gZmRzIGFyZQotICBjaGFuZ2VkLgotCi0tIElzc3VlICM4MjU5OiAxTCA8PCAoMioqMzEpIG5vIGxvbmdlciBwcm9kdWNlcyBhbiAnb3V0cmFnZW91cyBzaGlmdCBlcnJvcicgb24KLSAgNjQtYml0IG1hY2hpbmVzLiAgVGhlIHNoaWZ0IGNvdW50IGZvciBlaXRoZXIgbGVmdCBvciByaWdodCBzaGlmdCBpcyBwZXJtaXR0ZWQKLSAgdG8gYmUgdXAgdG8gc3lzLm1heHNpemUuCi0KLS0gRW5zdXJlIHRoYXQgdG9rZW5pemF0aW9uIG9mIGlkZW50aWZpZXJzIGlzIG5vdCBhZmZlY3RlZCBieSBsb2NhbGUuCi0KLS0gSXNzdWUgIzEyMjI1ODU6IEFkZGVkIExEQ1hYU0hBUkVEIGZvciBDKysgc3VwcG9ydC4gUGF0Y2ggYnkgQXJmcmV2ZXIuCi0KLS0gUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgVF9TVFJJTkdfSU5QTEFDRSBzdHJ1Y3QgbWVtYmVyLgotCi0tIElzc3VlICM4MjExOiBTYXZlL3Jlc3RvcmUgQ0ZMQUdTIGFyb3VuZCBBQ19QUk9HX0NDIGluIGNvbmZpZ3VyZS5pbiwgaW4gY2FzZSBpdAotICBpcyBzZXQuCi0KLS0gSXNzdWUgIzgyMjY6IHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSByYWlzZXMgYSBMb29rdXBFcnJvciBpZiB0aGUgZW5jb2RpbmcKLSAgaXMgdW5rbm93bi4KLQotLSBJc3N1ZSAjMTU4Mzg2MzogQSBzdHIgc3ViY2xhc3MgY2FuIG5vdyBvdmVycmlkZSB0aGUgX19zdHJfXyBtZXRob2QuCi0KLS0gSXNzdWUgIzgwMTQ6IFNldHRpbmcgYSBUX1VJTlQgb3IgVF9QWVNTSVpFVCBhdHRyaWJ1dGUgb2YgYW4gb2JqZWN0IHdpdGgKLSAgUHlNZW1iZXJEZWZzIGNvdWxkIHByb2R1Y2UgYW4gaW50ZXJuYWwgZXJyb3I7IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkLgotCi0tIElzc3VlICM3ODQ1OiBSaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBvbiB0aGUgY29tcGxleCB0eXBlIG5vdyByZXR1cm4KLSAgTm90SW1wbGVtZW50ZWQgcmF0aGVyIHRoYW4gcmFpc2luZyBhIFR5cGVFcnJvciB3aGVuIGNvbXBhcmluZyB3aXRoIGFuCi0gIGluY29tcGF0aWJsZSB0eXBlOyB0aGlzIGFsbG93cyB1c2VyLWRlZmluZWQgY2xhc3NlcyB0byBpbXBsZW1lbnQgdGhlaXIgb3duCi0gIGNvbXBhcmlzb25zIHdpdGggY29tcGxleC4KLQotLSBJc3N1ZSAjMzEzNzogRG9uJ3QgaWdub3JlIGVycm9ycyBhdCBzdGFydHVwLCBlc3BlY2lhbGx5IGEga2V5Ym9hcmQgaW50ZXJydXB0Ci0gIChTSUdJTlQpLiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZSwgdGhlIGVycm9yIGlzCi0gIHByaW50ZWQgYW5kIFB5dGhvbiBleGl0cy4gSW5pdGlhbGl6ZSB0aGUgR0lMIGJlZm9yZSBpbXBvcnRpbmcgdGhlIHNpdGUgbW9kdWxlLgotCi0tIElzc3VlICM3MTczOiBHZW5lcmF0b3IgZmluYWxpemF0aW9uIGNvdWxkIGludmFsaWRhdGUgc3lzLmV4Y19pbmZvKCkuCi0KLS0gSXNzdWUgIzc1NDQ6IFByZWFsbG9jYXRlIHRocmVhZCBtZW1vcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSB0aHJlYWQgdG8gYXZvaWQgYQotICBmYXRhbCBlcnJvciBpbiBsb3cgbWVtb3J5IGNvbmRpdGlvbi4KLQotLSBJc3N1ZSAjNzgyMDogVGhlIHBhcnNlciB0b2tlbml6ZXIgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBpZiB0aGUgQk9NCi0gIGNoZWNrIGZhaWxzLgotCi0tIEhhbmRsZSBlcnJvcnMgZnJvbSBsb29raW5nIHVwIF9fcHJlcGFyZV9fIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjNTkzOTogQWRkIGFkZGl0aW9uYWwgcnVudGltZSBjaGVja2luZyB0byBlbnN1cmUgYSB2YWxpZCBjYXBzdWxlIGluCi0gIE1vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jLgotCi0tIElzc3VlICM3MzA5OiBGaXggdW5jaGVja2VkIGF0dHJpYnV0ZSBhY2Nlc3Mgd2hlbiBjb252ZXJ0aW5nCi0gIFVuaWNvZGVFbmNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yLCBhbmQgVW5pY29kZVRyYW5zbGF0ZUVycm9yIHRvIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzY5MDI6IEZpeCBwcm9ibGVtIHdpdGggYnVpbHQtaW4gdHlwZXMgZm9ybWF0IGluY29ycmVjdGx5IHdpdGggMAotICBwYWRkaW5nLgotCi0tIElzc3VlICM3OTg4OiBGaXggZGVmYXVsdCBhbGlnbm1lbnQgdG8gYmUgcmlnaHQgYWxpZ25lZCBmb3IgY29tcGxleC5fX2Zvcm1hdF9fLgotICBOb3cgaXQgbWF0Y2hlcyBvdGhlciBudW1lcmljIHR5cGVzLgotCi0tIElzc3VlICM1OTg4OiBSZW1vdmUgZGVwcmVjYXRlZCBmdW5jdGlvbnMgUHlPU19hc2NpaV9mb3JtYXRkLAotICBQeU9TX2FzY2lpX3N0cnRvZCwgYW5kIFB5T1NfYXNjaWlfYXRvZi4gIFVzZSBQeU9TX2RvdWJsZV90b19zdHJpbmcgYW5kCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZSBpbnN0ZWFkLiAgU2VlIGlzc3VlICM1ODM1IGZvciB0aGUgb3JpZ2luYWwgZGVwcmVjYXRpb25zLgotCi0tIElzc3VlICM3Mzg1OiBGaXggYSBjcmFzaCBpbiBgTWVtb3J5Vmlld19Gcm9tT2JqZWN0YCB3aGVuIGBQeU9iamVjdF9HZXRCdWZmZXJgCi0gIGZhaWxzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3Nzg4OiBGaXggYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggcHJvZHVjZWQgYnkgZGVsZXRpbmcgYSBsaXN0IHNsaWNlIHdpdGgKLSAgdmVyeSBsYXJnZSBzdGVwIHZhbHVlLgotCi0tIElzc3VlICM3NzY2OiBDaGFuZ2Ugc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgcmV0dXJuIHZhbHVlIHRvIGEgbmFtZWQgdHVwbGUgYW5kCi0gIGFkZCB0aGUgYWRkaXRpb25hbCBtZW1iZXJzIHJldHVybmVkIGluIGFuIE9TVkVSU0lPTklORk9FWCBzdHJ1Y3R1cmUuICBUaGUgbmV3Ci0gIG1lbWJlcnMgYXJlIHNlcnZpY2VfcGFja19tYWpvciwgc2VydmljZV9wYWNrX21pbm9yLCBzdWl0ZV9tYXNrLCBhbmQKLSAgcHJvZHVjdF90eXBlLgotCi0tIElzc3VlICM3NTYxOiBPcGVyYXRpb25zIG9uIGVtcHR5IGJ5dGVhcnJheXMgKHN1Y2ggYXMgYGludChieXRlYXJyYXkoKSlgKSBjb3VsZAotICBjcmFzaCBpbiBtYW55IHBsYWNlcyBiZWNhdXNlIG9mIHRoZSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoKSBtYWNybyByZXR1cm5pbmcKLSAgTlVMTC4gIFRoZSBtYWNybyBub3cgcmV0dXJucyBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGVtcHR5IHN0cmluZyBpbnN0ZWFkLgotCi0tIElzc3VlICM2NjkwOiBPcHRpbWl6ZSB0aGUgYnl0ZWNvZGUgZm9yIGV4cHJlc3Npb25zIHN1Y2ggYXMgYHggaW4gezEsIDIsIDN9YCwKLSAgd2hlcmUgdGhlIHJpZ2h0IGhhbmQgb3BlcmFuZCBpcyBhIHNldCBvZiBjb25zdGFudHMsIGJ5IHR1cm5pbmcgdGhlIHNldCBpbnRvIGEKLSAgZnJvemVuc2V0IGFuZCBwcmUtYnVpbGRpbmcgaXQgYXMgYSBjb25zdGFudC4gIFRoZSBjb21wYXJpc29uIG9wZXJhdGlvbiBpcyBtYWRlCi0gIGFnYWluc3QgdGhlIGNvbnN0YW50IGluc3RlYWQgb2YgYnVpbGRpbmcgYSBuZXcgc2V0IGVhY2ggdGltZSBpdCBpcyBleGVjdXRlZCAoYQotICBzaW1pbGFyIG9wdGltaXphdGlvbiBhbHJlYWR5IGV4aXN0ZWQgd2hpY2ggdHVybmVkIGEgbGlzdCBvZiBjb25zdGFudHMgaW50byBhCi0gIHByZS1idWlsdCB0dXBsZSkuICBQYXRjaCBhbmQgYWRkaXRpb25hbCB0ZXN0cyBieSBEYXZlIE1hbGNvbG0uCi0KLS0gSXNzdWUgIzc2MjI6IEltcHJvdmUgdGhlIHNwbGl0KCksIHJzcGxpdCgpLCBzcGxpdGxpbmVzKCkgYW5kIHJlcGxhY2UoKSBtZXRob2RzCi0gIG9mIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHVuaWNvZGUgb2JqZWN0cyBieSB1c2luZyBhIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBiYXNlZAotICBvbiBzdHJpbmdsaWIncyBmYXN0IHNlYXJjaC4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzYzMjogRml4IHZhcmlvdXMgc3RyIC0+IGZsb2F0IGNvbnZlcnNpb24gYnVncyBwcmVzZW50IGluIDIuNyBhbHBoYSAyLAotICBpbmNsdWRpbmc6ICgxKSBhIHNlcmlvdXMgJ3dyb25nIG91dHB1dCcgYnVnIHRoYXQgY291bGQgb2NjdXIgZm9yIGxvbmcgKD4gNDAKLSAgZGlnaXQpIGlucHV0IHN0cmluZ3MsICgyKSBhIGNyYXNoIGluIGR0b2EuYyB0aGF0IG9jY3VycmVkIGluIGRlYnVnIGJ1aWxkcyB3aGVuCi0gIHBhcnNpbmcgY2VydGFpbiBsb25nIG51bWVyaWMgc3RyaW5ncyBjb3JyZXNwb25kaW5nIHRvIHN1Ym5vcm1hbCB2YWx1ZXMsICgzKSBhCi0gIG1lbW9yeSBsZWFrIGZvciBzb21lIHZhbHVlcyBsYXJnZSBlbm91Z2ggdG8gY2F1c2Ugb3ZlcmZsb3csIGFuZCAoNCkgYSBudW1iZXIKLSAgb2YgZmxhd3MgdGhhdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0cy4KLQotLSBUaGUgX19jb21wbGV4X18gbWV0aG9kIGlzIG5vdyBsb29rZWQgdXAgb24gdGhlIGNsYXNzIG9mIGluc3RhbmNlcyB0byBtYWtlIGl0Ci0gIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBzcGVjaWFsIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzc0NjI6IEltcGxlbWVudCB0aGUgc3RyaW5nbGliIGZhc3Qgc2VhcmNoIGFsZ29yaXRobSBmb3IgdGhlIGByZmluZGAsCi0gIGByaW5kZXhgLCBgcnNwbGl0YCBhbmQgYHJwYXJ0aXRpb25gIG1ldGhvZHMuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzc2MDQ6IERlbGV0aW5nIGFuIHVuc2V0IHNsb3R0ZWQgYXR0cmlidXRlIGRpZCBub3QgcmFpc2UgYW4KLSAgQXR0cmlidXRlRXJyb3IuCi0KLS0gSXNzdWUgIzc1MzQ6IEZpeCBoYW5kbGluZyBvZiBJRUVFIHNwZWNpYWxzIChpbmZpbml0aWVzLCBuYW5zLCBuZWdhdGl2ZSB6ZXJvKQotICBpbiAqKiBvcGVyYXRvci4gIFRoZSBiZWhhdmlvdXIgbm93IGNvbmZvcm1zIHRvIHRoYXQgZGVzY3JpYmVkIGluIEM5OSBBbm5leCBGLgotCi0tIElzc3VlICMxODExOiBpbXByb3ZlIGFjY3VyYWN5IGFuZCBjcm9zcy1wbGF0Zm9ybSBjb25zaXN0ZW5jeSBmb3IgdHJ1ZSBkaXZpc2lvbgotICBvZiBpbnRlZ2VyczogdGhlIHJlc3VsdCBvZiBhL2IgaXMgbm93IGNvcnJlY3RseSByb3VuZGVkIGZvciBpbnRzIGEgYW5kIGIgKGF0Ci0gIGxlYXN0IG9uIElFRUUgNzU0IHBsYXRmb3JtcyksIGFuZCBpbiBwYXJ0aWN1bGFyIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUKLSAgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50LgotCi0tIElzc3VlICM2ODM0OiByZXBsYWNlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICdweXRob24nIGFuZCAncHl0aG9udycKLSAgZXhlY3V0YWJsZXMgb24gT1NYLgotCi0gIFRoZXNlIGV4ZWN1dGFibGVzIG5vdyB3b3JrIHByb3Blcmx5IHdpdGggdGhlIGFyY2goMSkgY29tbWFuZDogYGBhcmNoIC1wcGMKLSAgcHl0aG9uYGAgd2lsbCBzdGFydCBhIHVuaXZlcnNhbCBiaW5hcnkgdmVyc2lvbiBvZiBweXRob24gaW4gUFBDIG1vZGUgKHVubGlrZQotICBwcmV2aW91cyByZWxlYXNlcykuCi0KLS0gSXNzdWUgIzc0NjY6IFNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpcyBjYWxsZWQgaW4gdGhlCi0gIG1pZGRsZSBvZiBwb3B1bGF0aW5nIGEgdHVwbGUuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzc0MTk6IHNldGxvY2FsZSgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciBvbiBXaW5kb3dzIHdoZW4gY2FsbGVkCi0gIHdpdGggaW52YWxpZCB2YWx1ZXMuCi0KLS0gSXNzdWUgIzYwNzc6IE9uIFdpbmRvd3MsIGZpbGVzIG9wZW5lZCB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUgaW4gInd0KyIKLSAgbW9kZSB3b3VsZCBhcHBlYXIgdHJ1bmNhdGVkIG9uIHRoZSBmaXJzdCAnMHgxYScgYnl0ZSAoYWthLiBDdHJsK1opLgotCi0tIElzc3VlICM3MDg1OiBGaXggY3Jhc2ggd2hlbiBpbXBvcnRpbmcgc29tZSBleHRlbnNpb25zIGluIGEgdGhyZWFkIG9uIE1hY09TWAotICAxMC42LgotCi0tIElzc3VlICMxNzU3MTI2OiBGaXggdGhlIGN5cmlsbGljLWFzaWFuIGFsaWFzIGZvciB0aGUgcHRjcDE1NCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjk3MDogUmVtb3ZlIHJlZHVuZGFudCBjYWxscyB3aGVuIGNvbXBhcmluZyBvYmplY3RzIHRoYXQgZG9uJ3QKLSAgaW1wbGVtZW50IHRoZSByZWxldmFudCByaWNoIGNvbXBhcmlzb24gbWV0aG9kcy4KLQotLSBJc3N1ZSAjNzI5ODogRml4ZXMgZm9yIHJhbmdlIGFuZCByZXZlcnNlZChyYW5nZSguLi4pKS4gIEl0ZXJhdGlvbiBvdmVyCi0gIHJhbmdlKGEsIGIsIGMpIGluY29ycmVjdGx5IGdhdmUgYW4gZW1wdHkgaXRlcmF0b3Igd2hlbiBhLCBiIGFuZCBjIGZpdCBpbiBDCi0gIGxvbmcgYnV0IHRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIGRpZCBub3QuICBBbHNvIGZpeCBzZXZlcmFsIGNhc2VzIHdoZXJlCi0gIHJldmVyc2VkKHJhbmdlKGEsIGIsIGMpKSBnYXZlIHdyb25nIHJlc3VsdHMsIGFuZCBmaXggYSByZWZsZWFrIGZvcgotICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgd2l0aCBsYXJnZSBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzcyNDQ6IGl0ZXJ0b29scy5pemlwX2xvbmdlc3QoKSBubyBsb25nZXIgaWdub3JlcyBleGNlcHRpb25zIHJhaXNlZAotICBkdXJpbmcgdGhlIGZvcm1hdGlvbiBvZiBhbiBvdXRwdXQgdHVwbGUuCi0KLS0gSXNzdWUgIzMyOTc6IE9uIHdpZGUgdW5pY29kZSBidWlsZHMsIGRvIG5vdCBzcGxpdCB1bmljb2RlIGNoYXJhY3RlcnMgaW50bwotICBzdXJyb2dhdGVzLgotCi0tIFJlbW92ZSBsZW5ndGggbGltaXRhdGlvbiB3aGVuIGNvbnN0cnVjdGluZyBhIGNvbXBsZXggbnVtYmVyIGZyb20gYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzEwODc0MTg6IEJvb3N0IHBlcmZvcm1hbmNlIG9mIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3IgbG9uZ3MuCi0KLS0gU3VwcG9ydCBmb3IgQXRoZU9TIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBjb2RlIGJhc2UuIEl0IHdhcwotICBkaXNhYmxlZCBzaW5jZSBQeXRob24gMy4wLgotCi0tIFN1cHBvcnQgZm9yIHNldmVyYWwgbGVnYWN5IHRocmVhZGluZyBsaWJyYXJpZXMgaGFzIGJlZW4gZGlzYWJsZWQuIFRoZXNlCi0gIGxpYnJhcmllcyBhcmU6IE1hY2ggQyB0aHJlYWRzLCBTdW5PUyBMV1AsIEdOVSBwdGgsIElyaXggdGhyZWFkcy4gU3VwcG9ydCBjb2RlCi0gIHdpbGwgYmUgZW50aXJlbHkgcmVtb3ZlZCBpbiAzLjMuCi0KLS0gU3VwcG9ydCBmb3IgT1NGKiBoYXMgYmVlbiBkaXNhYmxlZC4gSWYgbm9ib2R5IHN0YW5kcyB1cCwgc3VwcG9ydCB3aWxsIGJlCi0gIHJlbW92ZWQgaW4gMy4zLiBTZWUgPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NjA2Pi4KLQotLSBQZWVwaG9sZSBjb25zdGFudCBmb2xkaW5nIGhhZCBtaXNzZWQgVU5BUllfUE9TSVRJVkUuCi0KLS0gSXNzdWUgIzE3MjIzNDQ6IHRocmVhZGluZy5fc2h1dGRvd24oKSBpcyBub3cgY2FsbGVkIGluIFB5X0ZpbmFsaXplKCksIHdoaWNoCi0gIGZpeGVzIHRoZSBwcm9ibGVtIG9mIHNvbWUgZXhjZXB0aW9ucyBiZWluZyB0aHJvd24gYXQgc2h1dGRvd24gd2hlbiB0aGUKLSAgaW50ZXJwcmV0ZXIgaXMga2lsbGVkLiBQYXRjaCBieSBBZGFtIE9sc2VuLgotCi0tIElzc3VlICM3MTQ3OiBSZW1vdmUgc3VwcG9ydCBmb3IgY29tcGlsaW5nIFB5dGhvbiB3aXRob3V0IGNvbXBsZXggbnVtYmVyCi0gIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzcxMjA6IGxvZ2dpbmc6IFJlbW92ZWQgaW1wb3J0IG9mIG11bHRpcHJvY2Vzc2luZyB3aGljaCBpcyBjYXVzaW5nIGNyYXNoCi0gIGluIEdBRS4KLQotLSBJc3N1ZSAjMTc1NDA5NDogSW1wcm92ZSB0aGUgc3RhY2sgZGVwdGggY2FsY3VsYXRpb24gaW4gdGhlIGNvbXBpbGVyLiAgVGhlcmUKLSAgc2hvdWxkIGJlIG5vIG90aGVyIGVmZmVjdCB0aGFuIGEgc21hbGwgZGVjcmVhc2UgaW4gbWVtb3J5IHVzZS4gIFBhdGNoIGJ5Ci0gIENocmlzdG9waGVyIFR1ciBMZXNuaWV3c2tpLUxhYXMuCi0KLS0gSXNzdWUgIzcwNjU6IEZpeCBhIGNyYXNoIGluIGJ5dGVzLm1ha2V0cmFucyBhbmQgYnl0ZWFycmF5Lm1ha2V0cmFucyB3aGVuIHVzaW5nCi0gIGJ5dGUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAxMjcuICBQYXRjaCBieSBEZXJrIERydWtrZXIuCi0KLS0gSXNzdWUgIzE1NzExODQ6IFRoZSBVbmljb2RlIGRhdGFiYXNlIGNvbnRhaW5zIHByb3BlcnRpZXMgZm9yIG1vcmUgY2hhcmFjdGVycy4KLSAgVGhlIHRhYmxlcyBmb3IgY29kZSBwb2ludHMgcmVwcmVzZW50aW5nIG51bWVyaWMgdmFsdWVzLCB3aGl0ZSBzcGFjZXMgb3IgbGluZQotICBicmVha3MgYXJlIG5vdyBnZW5lcmF0ZWQgZnJvbSB0aGUgb2ZmaWNpYWwgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgZmlsZXMsCi0gIGFuZCBpbmNsdWRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFVuaWhhbi50eHQgZmlsZS4KLQotLSBJc3N1ZSAjNzAxOTogUmFpc2UgVmFsdWVFcnJvciB3aGVuIHVubWFyc2hhbGxpbmcgYmFkIGxvbmcgZGF0YSwgaW5zdGVhZCBvZgotICBwcm9kdWNpbmcgaW50ZXJuYWxseSBpbmNvbnNpc3RlbnQgUHl0aG9uIGxvbmdzLgotCi0tIElzc3VlICM2OTkwOiBGaXggdGhyZWFkaW5nLmxvY2FsIHN1YmNsYXNzZXMgbGVhdmluZyBvbGQgc3RhdGUgYXJvdW5kIGFmdGVyIGEKLSAgcmVmZXJlbmNlIGN5Y2xlIEdDIHdoaWNoIGNvdWxkIGJlIHJlY3ljbGVkIGJ5IG5ldyBsb2NhbHMuCi0KLS0gSXNzdWUgIzU0NjA6IEZpeCBhbiBhbWJpZ3VpdHkgaW4gdGhlIGdyYW1tYXIuCi0KLS0gSXNzdWUgIzE3NjYzMDQ6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgbWVtYmVyc2hpcCB0ZXN0cyBvbiByYW5nZSBvYmplY3RzLgotCi0tIElzc3VlICM2NzEzOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGludGVnZXIgLT4gc3RyaW5nIGNvbnZlcnNpb25zLgotCi0tIElzc3VlICM2ODQ2OiBGaXggYnVnIHdoZXJlIGJ5dGVhcnJheS5wb3AoKSByZXR1cm5zIG5lZ2F0aXZlIGludGVnZXJzLgotCi0tIElzc3VlICM2NzUwOiBBIHRleHQgZmlsZSBvcGVuZWQgd2l0aCBpby5vcGVuKCkgY291bGQgZHVwbGljYXRlIGl0cyBvdXRwdXQgd2hlbgotICB3cml0aW5nIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhdCB0aGUgc2FtZSB0aW1lLgotCi0tIElzc3VlICM2NzA3OiBkaXIoKSBvbiBhbiB1bmluaXRpYWxpemVkIG1vZHVsZSBjYXVzZWQgYSBjcmFzaC4KLQotLSBJc3N1ZSAjNjU0MDogRml4ZWQgY3Jhc2ggZm9yIGJ5dGVhcnJheS50cmFuc2xhdGUoKSB3aXRoIGludmFsaWQgcGFyYW1ldGVycy4KLQotLSBJc3N1ZSAjNjU3Mzogc2V0LnVuaW9uKCkgc3RvcHBlZCBwcm9jZXNzaW5nIGlucHV0cyBpZiBhbiBpbnN0YW5jZSBvZiBzZWxmCi0gIG9jY3VycmVkIGluIHRoZSBhcmd1bWVudCBjaGFpbi4KLQotLSBJc3N1ZSAjNjA3MDogT24gcG9zaXggcGxhdGZvcm1zIGltcG9ydCBubyBsb25nZXIgY29waWVzIHRoZSBleGVjdXRlIGJpdCBmcm9tCi0gIHRoZSAucHkgZmlsZSB0byB0aGUgLnB5YyBmaWxlIGlmIGl0IGlzIHNldC4KLQotLSBJc3N1ZSAjMTYxNjk3OTogQWRkZWQgdGhlIGNwNzIwIChBcmFiaWMgRE9TKSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjQyODogU2luY2UgUHl0aG9uIDMuMCwgdGhlIF9fYm9vbF9fIG1ldGhvZCBtdXN0IHJldHVybiBhIGJvb2wgb2JqZWN0LAotICBhbmQgbm90IGFuIGludC4gIEZpeCB0aGUgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlLCBhbmQgdGhlIGRvY3VtZW50YXRpb24uCi0KLS0gVGhlIGRlcHJlY2F0ZWQgUHlDT2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzYzNDc6IEluY2x1ZGUgaW50dHlwZXMuaCBhcyB3ZWxsIGFzIHN0ZGludC5oIGluIHB5cG9ydC5oLiAgVGhpcyBmaXhlcyBhCi0gIGJ1aWxkIGZhaWx1cmUgb24gSFAtVVg6IGludDMyX3QgYW5kIHVpbnQzMl90IGFyZSBkZWZpbmVkIGluIGludHR5cGVzLmggaW5zdGVhZAotICBvZiBzdGRpbnQuaCBvbiB0aGF0IHBsYXRmb3JtLgotCi0tIElzc3VlICM2MzczOiBGaXhlZCBhIFN5c3RlbUVycm9yIHdoZW4gZW5jb2Rpbmcgd2l0aCB0aGUgbGF0aW4tMSBjb2RlYyBhbmQgdGhlCi0gICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIGEgc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzQ4NTY6IFJlbW92ZSBjaGVja3MgZm9yIHdpbiBOVC4KLQotLSBJc3N1ZSAjNjY4NzogUHlCeXRlc19Gcm9tT2JqZWN0KCkgbm8gbG9uZ2VyIGFjY2VwdHMgYW4gaW50ZWdlciBhcyBpdHMgYXJndW1lbnQKLSAgdG8gY29uc3RydWN0IGEgbnVsbC1pbml0aWFsaXplZCBieXRlcyBvYmplY3QuCi0KLS0gSXNzdWUgIzEwMjMyOTA6IEFkZCBmcm9tX2J5dGVzKCkgYW5kIHRvX2J5dGVzKCkgbWV0aG9kcyB0byBpbnRlZ2Vycy4gIFRoZXNlCi0gIG1ldGhvZHMgYWxsb3cgdGhlIGNvbnZlcnNpb24gb2YgaW50ZWdlcnMgdG8gYnl0ZXMsIGFuZCB2aWNlLXZlcnNhLgotCi0tIElzc3VlICM3MzgyOiBGaXggYnVnIGluIGJ5dGVzLl9fZ2V0bmV3YXJnc19fIHRoYXQgcHJldmVudGVkIGJ5dGVzIGluc3RhbmNlcwotICBmcm9tIGJlaW5nIGNvcGllZCB3aXRoIGNvcHkuY29weSgpLCBhbmQgYnl0ZXMgc3ViY2xhc3NlcyBmcm9tIGJlaW5nIHBpY2tsZWQKLSAgcHJvcGVybHkuCi0KLS0gQ29kZSBvYmplY3RzIG5vdyBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjNzA3MjogaXNzcGFjZSgweGEwKSBpcyB0cnVlIG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICM4MDg0OiBQRVAgMzcwIG5vdyBjb25mb3JtcyB0byBzeXN0ZW0gY29udmVudGlvbnMgZm9yIGZyYW1ld29yayBidWlsZHMKLSAgb24gTWFjT1MgWC4gVGhhdCBpcywgInB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlciIgd2lsbCBpbnN0YWxsIGludG8KLSAgIn4vTGlicmFyeS9QeXRob24vMi43IiBpbnN0ZWFkIG9mICJ+Ly5sb2NhbCIuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMyNDQzOiBBIG5ldyBtYWNybywgYFB5X1ZBX0NPUFlgLCBjb3BpZXMgdGhlIHN0YXRlIG9mIHRoZQotICB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LiAgYFB5X1ZBX0NPUFlgIGlzIGVxdWl2YWxlbnQgdG8gQzk5Ci0gIGB2YV9jb3B5YCwgYnV0IGF2YWlsYWJsZSBvbiBhbGwgcHl0aG9uIHBsYXRmb3Jtcy4KLQotLSBQeVNsaWNlX0dldEluZGljZXNFeCBub3cgY2xpcHMgdGhlIHN0ZXAgdG8gWy1QWV9TU0laRV9UX01BWCwgUFlfU1NJWkVfVF9NQVhdCi0gIGluc3RlYWQgb2YgWy1QWV9TU0laRV9UX01BWC0xLCBQWV9TU0laRV9UX01BWF0uICBUaGlzIG1ha2VzIGl0IHNhZmUgdG8gZG8KLSAgInN0ZXAgPSAtc3RlcCIgd2hlbiByZXZlcnNpbmcgYSBzbGljZS4KLQotLSBJc3N1ZSAjNTc1MzogQSBuZXcgQyBBUEkgZnVuY3Rpb24sIGBQeVN5c19TZXRBcmd2RXhgLCBhbGxvd3MgZW1iZWRkZXJzIG9mIHRoZQotICBpbnRlcnByZXRlciB0byBzZXQgc3lzLmFyZ3Ygd2l0aG91dCBhbHNvIG1vZGlmeWluZyBzeXMucGF0aC4gIFRoaXMgaGVscHMgZml4Ci0gIGBDVkUtMjAwOC01OTgzCi0gIDxodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMDgtNTk4Mz5gXy4KLQotLSBBZGQgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzLCB3aGljaCBjaGVja3MgaWYgYWxsIGtleXdvcmQgYXJndW1lbnRzIGFyZQotICBzdHJpbmdzIGluIGFuIGVmZmljaWVudCBtYW5uZXIuCi0KLS0gSXNzdWUgIzgyNzY6IFB5RXZhbF9DYWxsT2JqZWN0KCkgaXMgbm93IG9ubHkgYXZhaWxhYmxlIGluIG1hY3JvIGZvcm0uICBUaGUKLSAgZnVuY3Rpb24gZGVjbGFyYXRpb24sIHdoaWNoIHdhcyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBpcwotICBub3cgcmVtb3ZlZCAodGhlIG1hY3JvIHdhcyBpbnRyb2R1Y2VkIGluIDE5OTchKS4KLQotLSBJc3N1ZSAjNzc2NzogTmV3IGZ1bmN0aW9uIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgYWRkZWQsIGFuYWxvZ291cyB0bwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cuCi0KLS0gTWFrZSBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyByZXR1cm4gbm90IGVxdWFsIGlmIHRoZSBQeXRob24gc3RyaW5nCi0gIGhhcyAnXDAnIGF0IHRoZSBlbmQuCi0KLS0gSXNzdWUgIzUwODA6IFRoZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBQeUFyZ19QYXJzZVR1cGxlLAotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMsIFB5QXJnX1ZhUGFyc2UsIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzIGFuZAotICBQeUFyZ19QYXJzZSBub3cgcmFpc2UgYSBEZXByZWNhdGlvbldhcm5pbmcgZm9yIGZsb2F0IGFyZ3VtZW50cyBwYXNzZWQgd2l0aCB0aGUKLSAgJ0wnIGZvcm1hdCBjb2RlLiAgVGhpcyB3aWxsIGJlY29tZSBhIFR5cGVFcnJvciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiwKLSAgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgb3RoZXIgaW50ZWdlciBmb3JtYXQgY29kZXMuCi0KLS0gSXNzdWUgIzcwMzM6IEZ1bmN0aW9uIGBgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygpYGAgYWRkZWQuCi0KLS0gSXNzdWUgIzc0MTQ6ICdDJyBjb2RlIHdhc24ndCBiZWluZyBza2lwcGVkIHByb3Blcmx5IChmb3Iga2V5d29yZCBhcmd1bWVudHMpIGluCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcy4KLQotLSBJc3N1ZSAjNzIyODogQWRkICclbGxkJyBhbmQgJyVsbHUnIHN1cHBvcnQgdG8gUHlTdHJpbmdfRnJvbUZvcm1hdChWKSBhbmQKLSAgUHlFcnJfRm9ybWF0LCBvbiBtYWNoaW5lcyB3aXRoIEhBVkVfTE9OR19MT05HIGRlZmluZWQuCi0KLS0gSXNzdWUgIzYxNTE6IE1hZGUgUHlEZXNjcl9DT01NT04gY29uZm9ybSB0byBzdGFuZGFyZCBDIChsaWtlIFB5T2JqZWN0X0hFQUQgaW4KLSAgUEVQIDMxMjMpLiAgVGhlIFB5RGVzY3JfVFlQRSBhbmQgUHlEZXNjcl9OQU1FIG1hY3JvcyBzaG91bGQgYmUgc2hvdWxkIHVzZWQgZm9yCi0gIGFjY2Vzc2luZyB0aGUgZF90eXBlIGFuZCBkX25hbWUgbWVtYmVycyBvZiBzdHJ1Y3R1cmVzIHVzaW5nIFB5RGVzY3JfQ09NTU9OLgotCi0tIElzc3VlICM2NDA1OiBSZW1vdmUgZHVwbGljYXRlIHR5cGUgZGVjbGFyYXRpb25zIGluIGRlc2Nyb2JqZWN0LmguCi0KLS0gVGhlIGNvZGUgZmxhZ3MgZm9yIG9sZCBfX2Z1dHVyZV9fIGZlYXR1cmVzIGFyZSBub3cgYXZhaWxhYmxlIGFnYWluLgotCi0tIElzc3VlICM1OTU0OiBBZGQgYSBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSBmdW5jdGlvbiB0byByZXBsYWNlIG1vc3QgdXNlcyBvZgotICBQeUNvZGVfQWRkcjJMaW5lKCkuCi0KLS0gSXNzdWUgIzU5NTk6IEFkZCBhIFB5Q29kZV9OZXdFbXB0eSgpIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBlbXB0eSBjb2RlCi0gIG9iamVjdCBhdCBhIHNwZWNpZmllZCBmaWxlLCBmdW5jdGlvbiwgYW5kIGxpbmUgbnVtYmVyLgotCi0tIElzc3VlICMxNDE5NjUyOiBDaGFuZ2UgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIFB5SW1wb3J0X0FwcGVuZEluaXR0YWIoKSB0bwotICBgYGNvbnN0IGNoYXIgKmBgIGFzIHRoZSBzdHJpbmcgaXMgc3RvcmVkIGJleW9uZCB0aGUgY2FsbC4KLQotLSBJc3N1ZSAjMjQyMjogV2hlbiBjb21waWxlZCB3aXRoIHRoZSBgYC0td2l0aC12YWxncmluZGBgIG9wdGlvbiwgdGhlIHB5bWFsbG9jCi0gIGFsbG9jYXRvciB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLiAgVGhpcwotICBnaXZlcyBpbXByb3ZlZCBtZW1vcnkgbGVhayBkZXRlY3Rpb24gd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLCB3aGlsZSB0YWtpbmcKLSAgYWR2YW50YWdlIG9mIHB5bWFsbG9jIGF0IG90aGVyIHRpbWVzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSW4gcGRiLCB3aGVuIEN0cmwtQyBpcyBlbnRlcmVkIHdoaWxlIGRlZmluaW5nIGNvbW1hbmRzIGZvciBhIGJyZWFrcG9pbnQsIHRoZQotICBvbGQgY29tbWFuZHMgYXJlIHJlc3RvcmVkLgotCi0tIEZvciB0cmFjZWJhY2sgZGVidWdnaW5nLCB0aGUgcGRiIGxpc3Rpbmcgbm93IGFsc28gc2hvd3MgdGhlIGxvY2F0aW9ucyB3aGVyZQotICB0aGUgZXhjZXB0aW9uIHdhcyBvcmlnaW5hbGx5IChyZSlyYWlzZWQsIGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgbGFzdCBsaW5lCi0gIGV4ZWN1dGVkIChlLmcuIGluIGNhc2Ugb2YgZmluYWxseSBjbGF1c2VzKS4KLQotLSBUaGUgcGRiIGNvbW1hbmQgInNvdXJjZSIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgc291cmNlIGNvZGUgZm9yIGEKLSAgZ2l2ZW4gb2JqZWN0LCBpZiBwb3NzaWJsZS4KLQotLSBUaGUgcGRiIGNvbW1hbmQgImxvbmdsaXN0IiBoYXMgYmVlbiBhZGRlZC4gIEl0IGRpc3BsYXlzIHRoZSB3aG9sZSBzb3VyY2UgY29kZQotICBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzE1MDM1MDI6IE1ha2UgcGRiLlBkYiBlYXNpZXIgdG8gc3ViY2xhc3MgYnkgcHV0dGluZyBtZXNzYWdlIGFuZCBlcnJvcgotICBvdXRwdXQgaW50byBtZXRob2RzLgotCi0tIElzc3VlICM4MDk4ODc6IE1ha2UgdGhlIG91dHB1dCBvZiBwZGIncyBicmVha3BvaW50IGRlbGV0aW9ucyBtb3JlIGNvbnNpc3RlbnQ7Ci0gIGVtaXQgYSBtZXNzYWdlIHdoZW4gYSBicmVha3BvaW50IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0KLS0gSXNzdWUgIzUyOTQ6IEZpeCB0aGUgYmVoYXZpb3Igb2YgcGRiJ3MgImNvbnRpbnVlIiBjb21tYW5kIHdoZW4gY2FsbGVkIGluIHRoZQotICB0b3AtbGV2ZWwgZGVidWdnZWQgZnJhbWUuCi0KLS0gSXNzdWUgIzU3Mjc6IFJlc3RvcmUgdGhlIGFiaWxpdHkgdG8gdXNlIHJlYWRsaW5lIHdoZW4gY2FsbGluZyBpbnRvIHBkYiBpbgotICBkb2N0ZXN0cy4KLQotLSBJc3N1ZSAjNjcxOTogSW4gcGRiLCBkbyBub3Qgc3RvcCBzb21ld2hlcmUgaW4gdGhlIGVuY29kaW5ncyBtYWNoaW5lcnkgaWYgdGhlCi0gIHNvdXJjZSBmaWxlIHRvIGJlIGRlYnVnZ2VkIGlzIGluIGEgbm9uLWJ1aWx0aW4gZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzgwNDg6IFByZXZlbnQgZG9jdGVzdHMgZnJvbSBmYWlsaW5nIHdoZW4gc3lzLmRpc3BsYXlob29rIGhhcyBiZWVuCi0gIHJlYXNzaWduZWQuCi0KLS0gSXNzdWUgIzgwMTU6IEluIHBkYiwgZG8gbm90IGNyYXNoIHdoZW4gYW4gZW1wdHkgbGluZSBpcyBlbnRlcmVkIGFzIGEKLSAgYnJlYWtwb2ludCBjb21tYW5kLgotCi0tIEluIHBkYiwgYWxsb3cgZ2l2aW5nIGEgbGluZSBudW1iZXIgdG8gdGhlICJ1bnRpbCIgY29tbWFuZC4KLQotLSBJc3N1ZSAjMTQzNzA1MTogRm9yIHBkYiwgYWxsb3cgImNvbnRpbnVlIiBhbmQgcmVsYXRlZCBjb21tYW5kcyBpbiAucGRicmMKLSAgZmlsZXMuICBBbHNvLCBhZGQgYSBjb21tYW5kLWxpbmUgb3B0aW9uICItYyIgdGhhdCBydW5zIGEgY29tbWFuZCBhcyBpZiBnaXZlbgotICBpbiAucGRicmMuCi0KLS0gSXNzdWUgIzQxNzk6IEluIHBkYiwgYWxsb3cgImxpc3QgLiIgYXMgYSBjb21tYW5kIHRvIHJldHVybiB0byB0aGUgY3VycmVudGx5Ci0gIGRlYnVnZ2VkIGxpbmUuCi0KLS0gSXNzdWUgIzQxMDg6IEluIHVybGxpYi5yb2JvdHBhcnNlciwgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGBgVXNlci1hZ2VudDogKmBgCi0gIGVudHJpZXMsIGNvbnNpZGVyIHRoZSBmaXJzdCBvbmUuCi0KLS0gSXNzdWUgIzY2MzA6IEFsbG93IGN1c3RvbWl6aW5nIHJlZ2V4IGZsYWdzIHdoZW4gc3ViY2xhc3NpbmcgdGhlCi0gIHN0cmluZy5UZW1wbGF0ZSBjbGFzcy4KLQotLSBJc3N1ZSAjOTQxMTogQWxsb3cgc3BlY2lmeWluZyBhbiBlbmNvZGluZyBmb3IgY29uZmlnIGZpbGVzIGluIHRoZSBjb25maWdwYXJzZXIKLSAgbW9kdWxlLgotCi0tIElzc3VlICMxNjgyOTQyOiBJbXByb3ZlbWVudHMgdG8gY29uZmlncGFyc2VyOiBzdXBwb3J0IGFsdGVybmF0ZSBkZWxpbWl0ZXJzLAotICBhbHRlcm5hdGUgY29tbWVudCBwcmVmaXhlcyBhbmQgZW1wdHkgbGluZXMgaW4gdmFsdWVzLgotCi0tIElzc3VlICM5MzU0OiBQcm92aWRlIGdldHNvY2tvcHQoKSBpbiBhc3luY29yZSdzIGZpbGVfd3JhcHBlci4KLQotLSBJc3N1ZSAjODk2NjogY3R5cGVzOiBSZW1vdmUgaW1wbGljaXQgYnl0ZXMtdW5pY29kZSBjb252ZXJzaW9uLgotCi0tIElzc3VlICM5Mzc4OiBweXRob24gLW0gcGlja2xlIDxwaWNrbGUgZmlsZT4gd2lsbCBub3cgbG9hZCBhbmQgZGlzcGxheSB0aGUKLSAgZmlyc3Qgb2JqZWN0IGluIHRoZSBwaWNrbGUgZmlsZS4KLQotLSBJc3N1ZSAjNDc3MDogUmVzdHJpY3QgYmluYXNjaWkgbW9kdWxlIHRvIGFjY2VwdCBvbmx5IGJ5dGVzIChhcyBzcGVjaWZpZWQpLgotICBBbmQgZml4IHRoZSBlbWFpbCBwYWNrYWdlIHRvIGVuY29kZSB0byBBU0NJSSBpbnN0ZWFkIG9mIGBgcmF3LXVuaWNvZGUtZXNjYXBlYGAKLSAgYmVmb3JlIEFTQ0lJLXRvLWJpbmFyeSBkZWNvZGluZy4KLQotLSBJc3N1ZSAjOTM4NDogYGBweXRob24gLW0gdGtpbnRlcmBgIHdpbGwgbm93IGRpc3BsYXkgYSBzaW1wbGUgZGVtbyBhcHBsZXQuCi0KLS0gVGhlIGRlZmF1bHQgc2l6ZSBvZiB0aGUgcmUgbW9kdWxlJ3MgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGNhY2hlIGhhcyBiZWVuCi0gIGluY3JlYXNlZCBmcm9tIDEwMCB0byA1MDAgYW5kIHRoZSBjYWNoZSByZXBsYWNlbWVudCBwb2xpY3kgaGFzIGNoYW5nZWQgZnJvbQotICBzaW1wbHkgY2xlYXJpbmcgdGhlIGVudGlyZSBjYWNoZSBvbiBvdmVyZmxvdyB0byBmb3JnZXR0aW5nIHRoZSBsZWFzdCByZWNlbnRseQotICB1c2VkIGNhY2hlZCBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zLiAgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIHdpbiBmb3IKLSAgYXBwbGljYXRpb25zIHRoYXQgdXNlIGEgbG90IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIGxpbWl0cyB0aGUgaW1wYWN0IG9mCi0gIHRoZSBwZXJmb3JtYW5jZSBoaXQgYW55dGltZSB0aGUgY2FjaGUgaXMgZXhjZWVkZWQuCi0KLS0gSXNzdWUgIzcxMTM6IFNwZWVkIHVwIGxvYWRpbmcgaW4gY29uZmlncGFyc2VyLiBQYXRjaCBieSDFgXVrYXN6IExhbmdhLgotCi0tIElzc3VlICM5MDMyOiBYTUwtUlBDIGNsaWVudCByZXRyaWVzIHRoZSByZXF1ZXN0IG9uIEVQSVBFIGVycm9yLiAgVGhlIEVQSVBFCi0gIGVycm9yIG9jY3VycyB3aGVuIHRoZSBzZXJ2ZXIgY2xvc2VzIHRoZSBzb2NrZXQgYW5kIHRoZSBjbGllbnQgc2VuZHMgYSBiaWcKLSAgWE1MLVJQQyByZXF1ZXN0LgotCi0tIElzc3VlICM0NjI5OiBnZXRvcHQgcmFpc2VzIGFuIGVycm9yIGlmIGFuIGFyZ3VtZW50IGVuZHMgd2l0aCAiPSIsIHdoZXJlYXMKLSAgZ2V0b3B0IGRvZXNuJ3QgYWNjZXB0IGEgdmFsdWUgKGVnLiAtLWhlbHA9IGlzIHJlamVjdGVkIGlmIGdldG9wdCB1c2VzCi0gIFsnaGVscD0nXSBsb25nIG9wdGlvbnMpLgotCi0tIElzc3VlICM3OTg5OiBBZGRlZCBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGRhdGV0aW1lYCBtb2R1bGUuICBUaGUgQwotICBtb2R1bGUgaXMgcmVuYW1lZCB0byBgX2RhdGV0aW1lYCBhbmQgaWYgYXZhaWxhYmxlLCBvdmVycmlkZXMgYWxsIGNsYXNzZXMKLSAgZGVmaW5lZCBpbiBkYXRldGltZSB3aXRoIGZhc3QgQyBpbXBlbWVudGF0aW9uLiAgUHl0aG9uIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkCi0gIG9uIHRoZSBvcmlnaW5hbCBweXRob24gcHJvdG90eXBlIGZvciB0aGUgZGF0ZXRpbWUgbW9kdWxlIGJ5IFRpbSBQZXRlcnMgd2l0aAotICBtaW5vciBtb2RpZmljYXRpb25zIGJ5IHRoZSBQeVB5IHByb2plY3QuICBUaGUgdGVzdCBzdWl0ZSBub3cgdGVzdHMgYGRhdGV0aW1lYAotICBtb2R1bGUgd2l0aCBhbmQgd2l0aG91dCBgX2RhdGV0aW1lYCBhY2NlbGVyYXRpb24gdXNpbmcgdGhlIHNhbWUgdGVzdCBjYXNlcy4KLQotLSBJc3N1ZSAjNzg5NTogcGxhdGZvcm0ubWFjX3ZlcigpIG5vIGxvbmdlciBjcmFzaGVzIGFmdGVyIGNhbGxpbmcgb3MuZm9yaygpLgotCi0tIElzc3VlICM5MzIzOiBGaXhlZCBhIGJ1ZyBpbiB0cmFjZS5weSB0aGF0IHJlc3VsdGVkIGluIGxvb3NpbmcgdGhlIG5hbWUgb2YgdGhlCi0gIHNjcmlwdCBiZWluZyB0cmFjZWQuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgotCi0tIElzc3VlICM5MjgyOiBGaXhlZCAtLWxpc3RmdW5jcyBvcHRpb24gb2YgdHJhY2UucHkuICBUaGFua3MgRWxpIEJlbmRlcnNreSBmb3IKLSAgdGhlIHBhdGNoLgotCi0tIElzc3VlICMzNzA0OiBodHRwLmNvb2tpZWphciB3YXMgbm90IHByb3Blcmx5IGhhbmRsaW5nIFVSTHMgd2l0aCBhIC8gaW4gdGhlCi0gIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzkyNjg6IGBgcGlja2xldG9vbHMuZGlzKClgYCBub3cgaGFzIGFuIG9wdGlvbmFsICphbm5vdGF0ZSogYXJndW1lbnQKLSAgd2hpY2ggY29udHJvbHMgcHJpbnRpbmcgb2Ygb3Bjb2RlIGRlc2NyaXB0aW9ucyBpbiBgYGRpcygpYGAgb3V0cHV0LgotCi0tIElzc3VlICMxNTU1NTcwOiBlbWFpbCBubyBsb25nZXIgaW5zZXJ0cyBleHRyYSBibGFuayBsaW5lcyB3aGVuIGEgXHJcbiBjb21ibwotICBjcm9zc2VzIGFuIDgxOTIgYnl0ZSBib3VuZGFyeS4KLQotLSBJc3N1ZSAjOTI0MzogRml4IHNuZGhkciBtb2R1bGUgYW5kIGFkZCB1bml0IHRlc3RzLCBjb250cmlidXRlZCBieSBKYW1lcyBMZWUuCi0KLS0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIGJ5dGUgbGl0ZXJhbHMuCi0KLS0gSXNzdWUgIzkxMzc6IEZpeCBpc3N1ZSBpbiBNdXRhYmxlTWFwcGluZy51cGRhdGUsIHdoaWNoIGluY29ycmVjdGx5IHRyZWF0ZWQKLSAga2V5d29yZCBhcmd1bWVudHMgY2FsbGVkICdzZWxmJyBvciAnb3RoZXInIHNwZWNpYWxseS4KLQotLSBgYGFzdC5saXRlcmFsX2V2YWwoKWBgIG5vdyBhbGxvd3Mgc2V0IGxpdGVyYWxzLgotCi0tIElzc3VlICM5MTY0OiBFbnN1cmUgdGhhdCBzeXNjb25maWcgaGFuZGxlcyBkdXBsaWNhdGUgLWFyY2ggZmxhZ3MgaW4gQ0ZMQUdTLgotCi0tIElzc3VlICM3NjQ2OiBUaGUgZm5tYXRjaCBwYXR0ZXJuIGNhY2hlIG5vIGxvbmdlciBncm93cyB3aXRob3V0IGJvdW5kLgotCi0tIElzc3VlICM5MTM2OiBGaXggJ2RpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24nIFJ1bnRpbWVFcnJvcgotICBwcm9kdWNlZCB3aGVuIHByb2ZpbGluZyB0aGUgZGVjaW1hbCBtb2R1bGUuICBUaGlzIHdhcyBkdWUgdG8gYSBkYW5nZXJvdXMKLSAgaXRlcmF0aW9uIG92ZXIgJ2xvY2FscygpJyBpbiBDb250ZXh0Ll9faW5pdF9fLgotCi0tIEZpeCBleHRyZW1lIHNwZWVkIGlzc3VlIGluIERlY2ltYWwucG93IHdoZW4gdGhlIGJhc2UgaXMgYW4gZXhhY3QgcG93ZXIgb2YgMTAKLSAgYW5kIHRoZSBleHBvbmVudCBpcyB0aW55IChmb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDEwKSAqKgotICBEZWNpbWFsKCcxZS05OTk5OTk5OTknKWBgKS4KLQotLSBJc3N1ZSAjOTE4NjogRml4IG1hdGgubG9nMXAoLTEuMCkgdG8gcmFpc2UgVmFsdWVFcnJvciwgbm90IE92ZXJmbG93RXJyb3IuCi0KLS0gSXNzdWUgIzkxMzA6IEZpeCB2YWxpZGF0aW9uIG9mIHJlbGF0aXZlIGltcG9ydHMgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTEyODogRml4IHZhbGlkYXRpb24gb2YgY2xhc3MgZGVjb3JhdG9ycyBpbiBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICM5MDk0OiBweXRob24gLW0gcGlja2xldG9vbHMgd2lsbCBub3cgZGlzYXNzZW1ibGUgcGlja2xlIGZpbGVzIGxpc3RlZCBpbgotICB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNlZSBvdXRwdXQgb2YgcHl0aG9uIC1tIHBpY2tsZXRvb2xzIC1oIGZvciBtb3JlCi0gIGRldGFpbHMuCi0KLS0gSXNzdWUgIzU0Njg6IHVybGVuY29kZSB0byBoYW5kbGUgYnl0ZXMgdHlwZSBhbmQgb3RoZXIgZW5jb2RpbmdzIGluIGl0cyBxdWVyeQotICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IERhbiBNYWhuLgotCi0tIElzc3VlICM3NjczOiBGaXggc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAoQ1ZFLTIwMTAtMjA4OSkgaW4gdGhlIGF1ZGlvb3AgbW9kdWxlLAotICBlbnN1cmUgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIGxlbmd0aCBpcyBhIG11bHRpcGxlIG9mIHRoZSBmcmFtZSBzaXplLgotCi0tIElzc3VlICM2NTA3OiBBY2NlcHQgc291cmNlIHN0cmluZ3MgaW4gZGlzLmRpcygpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsCi0gIFVyYmFuLgotCi0tIElzc3VlICM3ODI5OiBDbGVhcmx5IGRvY3VtZW50IHRoYXQgdGhlIGRpcyBtb2R1bGUgaXMgZXhwb3NpbmcgYW4KLSAgaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgaXMgbm90IHN0YWJsZSBiZXR3ZWVuIFB5dGhvbiBWTXMgb3IgcmVsZWFzZXMuCi0KLS0gSXNzdWUgIzY1ODk6IGNsZWFudXAgYXN5bmNvcmUuc29ja2V0X21hcCBpbiBjYXNlIHNtdHBkLlNNVFBTZXJ2ZXIgY29uc3RydWN0b3IKLSAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjOTExMDogQWRkaXRpb24gb2YgQ29udGV4dERlY29yYXRvciB0byBjb250ZXh0bGliLCBmb3IgY3JlYXRpbmcgQVBJcwotICB0aGF0IGFjdCBhcyBib3RoIGNvbnRleHQgbWFuYWdlcnMgYW5kIGRlY29yYXRvcnMuIGNvbnRleHRtYW5hZ2VyIGNoYW5nZXMgdG8KLSAgdXNlIENvbnRleHREZWNvcmF0b3IuCi0KLS0gSW1wbGVtZW50IGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyIGFuZCBkZXByZWNhdGUgUHlMb2FkZXIgYW5kIFB5UHljTG9hZGVyCi0gIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjQuCi0KLS0gSXNzdWUgIzkwNjQ6IHBkYidzICJ1cCIgYW5kICJkb3duIiBjb21tYW5kcyBub3cgYWNjZXB0IGFuIG9wdGlvbmFsIGFyZ3VtZW50Ci0gIGdpdmluZyB0aGUgbnVtYmVyIG9mIGZyYW1lcyB0byBnby4KLQotLSBJc3N1ZSAjOTAxODogb3MucGF0aC5ub3JtY2FzZSgpIG5vdyByYWlzZXMgYSBUeXBlRXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdAotICBgYHN0cmBgIG9yIGBgYnl0ZXNgYC4KLQotLSBJc3N1ZSAjOTA3NTogSW4gdGhlIHNzbCBtb2R1bGUsIHJlbW92ZSB0aGUgc2V0dGluZyBvZiBhIGBgZGVidWdgYCBmbGFnIG9uIGFuCi0gIE9wZW5TU0wgc3RydWN0dXJlLgotCi0tIElzc3VlICM4NjgyOiBUaGUgc3NsIG1vZHVsZSBub3cgdGVtcG9yYXJ5IGluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhCi0gIHNvY2tldCBvYmplY3QgZ290IHRocm91Z2ggYGBQeVdlYWtyZWZfR2V0T2JqZWN0YGAsIHNvIGFzIHRvIGF2b2lkIHBvc3NpYmxlCi0gIGRlYWxsb2NhdGlvbiB3aGlsZSB0aGUgb2JqZWN0IGlzIHN0aWxsIGJlaW5nIHVzZWQuCi0KLS0gSXNzdWUgIzEzNjgzNjg6IEZhbmN5VVJMT3BlbmVyIGNsYXNzIGNoYW5nZWQgdG8gdGhyb3cgYW4gRXhjZXB0aW9uIG9uIHdyb25nCi0gIHBhc3N3b3JkIGluc3RlYWQgb2YgcHJlc2VudGluZyBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQuICBPbGRlciBiZWhhdmlvciBjYW4gYmUKLSAgb2J0YWluZWQgYnkgcGFzc2luZyByZXRyeT1UcnVlIHRvIGh0dHBfZXJyb3JfeHh4IG1ldGhvZHMgb2YgRmFuY3lVUkxPcGVuZXIuCi0KLS0gSXNzdWUgIzg3MjA6IEZpeCByZWdyZXNzaW9uIGNhdXNlZCBieSBmaXggZm9yICM0MDUwIGJ5IG1ha2luZyBnZXRzb3VyY2VmaWxlCi0gIHNtYXJ0IGVub3VnaCB0byBmaW5kIHNvdXJjZSBmaWxlcyBpbiB0aGUgbGluZWNhY2hlLgotCi0tIElzc3VlICM1NjEwOiBmZWVkcGFyc2VyIG5vIGxvbmdlciBlYXRzIGV4dHJhIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBhIGJvZHkKLSAgcGFydCBpZiB0aGUgYm9keSBwYXJ0IGVuZHMgd2l0aCBhIGBgXHJcbmBgLgotCi0tIElzc3VlICM4OTg2OiBtYXRoLmVyZmMgd2FzIGluY29ycmVjdGx5IHJhaXNpbmcgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzCi0gIGJldHdlZW4gLTI3LjMgYW5kIC0zMC4wIG9uIHNvbWUgcGxhdGZvcm1zLgotCi0tIElzc3VlICM4Nzg0OiBTZXQgdGFyZmlsZSBkZWZhdWx0IGVuY29kaW5nIHRvICd1dGYtOCcgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjODk2NjogSWYgYSBjdHlwZXMgc3RydWN0dXJlIGZpZWxkIGlzIGFuIGFycmF5IG9mIGNfY2hhciwgY29udmVydCBpdHMKLSAgdmFsdWUgdG8gYnl0ZXMgaW5zdGVhZCBvZiBzdHIgKGFzIGRvbmUgZm9yIGNfY2hhciBhbmQgY19jaGFyX3ApLgotCi0tIElzc3VlICM4MTg4OiBDb21wYXJpc29ucyBiZXR3ZWVuIERlY2ltYWwgYW5kIEZyYWN0aW9uIG9iamVjdHMgYXJlIG5vdwotICBwZXJtaXR0ZWQsIHJldHVybmluZyBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgZXhhY3QgbnVtZXJpY2FsIHZhbHVlcyBvZiB0aGUKLSAgb3BlcmFuZHMuICBUaGlzIGJ1aWxkcyBvbiBpc3N1ZSAjMjUzMSwgd2hpY2ggYWxsb3dlZCBEZWNpbWFsLXRvLWZsb2F0Ci0gIGNvbXBhcmlzb25zOyBhbGwgY29tcGFyaXNvbnMgaW52b2x2aW5nIG51bWVyaWMgdHlwZXMgKGJvb2wsIGludCwgZmxvYXQsCi0gIGNvbXBsZXgsIERlY2ltYWwsIEZyYWN0aW9uKSBzaG91bGQgbm93IGFjdCBhcyBleHBlY3RlZC4KLQotLSBJc3N1ZSAjODg5NzogRml4IHN1bmF1IG1vZHVsZSwgdXNlIGJ5dGVzIHRvIHdyaXRlIHRoZSBoZWFkZXIuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgVGhvbWFzIEpvbGxhbnMuCi0KLS0gSXNzdWUgIzg4OTk6IHRpbWUuc3RydWN0X3RpbWUgbm93IGhhcyBjbGFzcyBhbmQgYXR0cmlidXRlIGRvY3N0cmluZ3MuCi0KLS0gSXNzdWUgIzY0NzA6IERyb3AgVU5DIHByZWZpeCBpbiBGaXhUay4KLQotLSBJc3N1ZSAjNDc2ODogYmFzZTY0IGVuY29kZWQgZW1haWwgYm9keSBwYXJ0cyB3ZXJlIGluY29ycmVjdGx5IHN0b3JlZCBhcyBiaW5hcnkKLSAgc3RyaW5ncy4gIFRoZXkgYXJlIG5vdyBjb3JyZWN0bHkgY29udmVydGVkIHRvIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzg4MzM6IHRhcmZpbGUgY3JlYXRlZCBoYXJkIGxpbmsgZW50cmllcyB3aXRoIGEgc2l6ZSBmaWVsZCAhPSAwIGJ5Ci0gIG1pc3Rha2UuCi0KLS0gQ2hhcnNldC5ib2R5X2VuY29kZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgYmFzZTY0IGVuY29kaW5nIGJ5IGVuY29kaW5nIHdpdGggdGhlCi0gIG91dHB1dF9jaGFyc2V0IGJlZm9yZSBjYWxsaW5nIGJhc2U2NG1pbWUuZW5jb2RlLiAgUGFzc2VzIHRoZSB0ZXN0cyBmcm9tIDIueAotICBpc3N1ZSAjMTM2ODI0Ny4KLQotLSBJc3N1ZSAjODg0NTogc3FsaXRlMyBDb25uZWN0aW9uIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgaW5fdHJhbnNhY3Rpb24KLSAgYXR0cmlidXRlIHRoYXQgaXMgVHJ1ZSBpZmYgdGhlcmUgYXJlIHVuY29tbWl0dGVkIGNoYW5nZXMuCi0KLS0gSXNzdWUgIzEyODkxMTg6IGRhdGV0aW1lLnRpbWVkZWx0YSBvYmplY3RzIGNhbiBub3cgYmUgbXVsdGlwbGllZCBieSBmbG9hdCBhbmQKLSAgZGl2aWRlZCBieSBmbG9hdCBhbmQgaW50IG9iamVjdHMuICBSZXN1bHRzIGFyZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlCi0gIG9mIHRpbWVkZWx0YS5yZXNvbHV0aW9uIHdpdGggdGllcyByZXNvbHZlZCB1c2luZyByb3VuZC1oYWxmLXRvLWV2ZW4gbWV0aG9kLgotCi0tIElzc3VlICM3MTUwOiBSYWlzZSBPdmVyZmxvd0Vycm9yIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nIG9yIHN1YnRyYWN0aW5nCi0gIHRpbWVkZWx0YSBmcm9tIGRhdGUgb3IgZGF0ZXRpbWUgZmFsbHMgb3V0c2lkZSBvZiB0aGUgTUlOWUVBUjpNQVhZRUFSIHJhbmdlLgotCi0tIElzc3VlICM4ODA2OiBhZGQgU1NMIGNvbnRleHRzIHN1cHBvcnQgdG8gZnRwbGliLgotCi0tIElzc3VlICM0NzY5OiBGaXggbWFpbigpIGZ1bmN0aW9uIG9mIHRoZSBiYXNlNjQgbW9kdWxlLCB1c2Ugc3lzLnN0ZGluLmJ1ZmZlcgotICBhbmQgc3lzLnN0ZG91dC5idWZmZXIgKGluc3RlYWQgb2Ygc3lzLnN0ZGluIGFuZCBzeXMuc3Rkb3V0KSB0byB1c2UgdGhlIGJ5dGVzCi0gIEFQSS4KLQotLSBJc3N1ZSAjODc3MDogTm93IHN5c2NvbmZpZyBkaXNwbGF5cyBpbmZvcm1hdGlvbiB3aGVuIGl0J3MgY2FsbGVkIGFzIGEgc2NyaXB0LgotICBJbml0aWFsIGlkZWEgYnkgU3JpZGhhciBSYXRuYWt1bWFyLgotCi0tIElzc3VlICM2NjYyOiBGaXggcGFyc2luZyBvZiBtYWxmb3JtYXR0ZWQgY2hhcnJlZiAoJiNiYWQ7KSwgcGF0Y2ggd3JpdHRlbiBieQotICBGcmVkcmlrIEjDpcOlcmQuCi0KLS0gSXNzdWUgIzg1NDA6IERlY2ltYWwgbW9kdWxlOiByZW5hbWUgdGhlIENvbnRleHQuX2NsYW1wIGF0dHJpYnV0ZSB0bwotICBDb250ZXh0LmNsYW1wIGFuZCBtYWtlIGl0IHB1YmxpYy4gIFRoaXMgaXMgdXNlZnVsIGluIGNyZWF0aW5nIGNvbnRleHRzIHRoYXQKLSAgY29ycmVzcG9uZCB0byB0aGUgZGVjaW1hbCBpbnRlcmNoYW5nZSBmb3JtYXRzIHNwZWNpZmllZCBpbiBJRUVFIDc1NC4KLQotLSBJc3N1ZSAjNjI2ODogRml4IHNlZWsoKSBtZXRob2Qgb2YgY29kZWNzLm9wZW4oKSwgZG9uJ3QgcmVhZCBvciB3cml0ZSB0aGUgQk9NCi0gIHR3aWNlIGFmdGVyIHNlZWsoMCkuIEZpeCBhbHNvIHJlc2V0KCkgbWV0aG9kIG9mIGNvZGVjcywgVVRGLTE2LCBVVEYtMzIgYW5kCi0gIFN0cmVhbVdyaXRlciBjbGFzc2VzLgotCi0tIElzc3VlICMzNzk4OiBzeXMuZXhpdChtZXNzYWdlKSB3cml0ZXMgdGhlIG1lc3NhZ2UgdG8gc3lzLnN0ZGVyciBmaWxlLCBpbnN0ZWFkCi0gIG9mIHRoZSBDIGZpbGUgc3RkZXJyLCB0byB1c2Ugc3RkZXJyIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM4NzgyOiBBZGQgYSB0cmFpbGluZyBuZXdsaW5lIGluIGxpbmVjYWNoZS51cGRhdGVjYWNoZSB0byB0aGUgbGFzdCBsaW5lCi0gIG9mIGZpbGVzIHdpdGhvdXQgb25lLgotCi0tIElzc3VlICM4NzI5OiBSZXR1cm4gTm90SW1wbGVtZW50ZWQgZnJvbSBjb2xsZWN0aW9ucy5NYXBwaW5nLl9fZXFfXyB3aGVuCi0gIGNvbXBhcmluZyB0byBhIG5vbi1tYXBwaW5nLgotCi0tIElzc3VlICM4Nzc0OiB0YWJuYW5ueSB1c2VzIHRoZSBlbmNvZGluZyBjb29raWUgKCNjb2Rpbmc6Li4uKSB0byB1c2UgdGhlCi0gIGNvcnJlY3QgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzQ4NzA6IEFkZCBhbiBgb3B0aW9uc2AgYXR0cmlidXRlIHRvIFNTTCBjb250ZXh0cywgYXMgd2VsbCBhcyBzZXZlcmFsCi0gIGBgT1BfKmBgIGNvbnN0YW50cyB0byB0aGUgYHNzbGAgbW9kdWxlLiAgVGhpcyBhbGxvd3MgdG8gc2VsZWN0aXZlbHkgZGlzYWJsZQotICBwcm90b2NvbCB2ZXJzaW9ucywgd2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYFBST1RPQ09MX1NTTHYyM2AuCi0KLS0gSXNzdWUgIzg3NTk6IEZpeGVkIHVzZXIgcGF0aHMgaW4gc3lzY29uZmlnIGZvciBwb3NpeCBhbmQgb3MyIHNjaGVtZXMuCi0KLS0gSXNzdWUgIzg2NjM6IGRpc3R1dGlscy5sb2cgZW11bGF0ZXMgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLiBGaXgKLSAgY29tcGlsYXRpb24gaW4gYSBub24tQVNDSUkgZGlyZWN0b3J5IGlmIHN0ZG91dCBlbmNvZGluZyBpcyBBU0NJSSAoZWcuIGlmCi0gIHN0ZG91dCBpcyBub3QgYSBUVFkpLgotCi0tIElzc3VlICM4NTEzOiBvcy5nZXRfZXhlY19wYXRoKCkgc3VwcG9ydHMgYidQQVRIJyBrZXkgYW5kIGJ5dGVzIHZhbHVlLgotICBzdWJwcm9jZXNzLlBvcGVuKCkgYW5kIG9zLl9leGVjdnBlKCkgc3VwcG9ydCBieXRlcyBwcm9ncmFtIG5hbWUuIEFkZAotICBvcy5zdXBwb3J0c19ieXRlc19lbnZpcm9uIGZsYWc6IFRydWUgaWYgdGhlIG5hdGl2ZSBPUyB0eXBlIG9mIHRoZSBlbnZpcm9ubWVudAotICBpcyBieXRlcyAoZWcuIEZhbHNlIG9uIFdpbmRvd3MpLgotCi0tIElzc3VlICM4NjMzOiB0YXJmaWxlIGlzIG5vdyBhYmxlIHRvIHJlYWQgYW5kIHdyaXRlIGFyY2hpdmVzIHdpdGggInJhdyIgYmluYXJ5Ci0gIHBheCBoZWFkZXJzIGFzIGRlc2NyaWJlZCBpbiBQT1NJWC4xLTIwMDguCi0KLS0gSXNzdWUgIzEyODUwODY6IFNwZWVkIHVwIHVybGxpYi5wYXJzZSBmdW5jdGlvbnM6IHF1b3RlLCBxdW90ZV9mcm9tX2J5dGVzLAotICB1bnF1b3RlLCB1bnF1b3RlX3RvX2J5dGVzLgotCi0tIElzc3VlICM4Njg4OiBEaXN0dXRpbHMgbm93IHJlY2FsY3VsYXRlcyBNQU5JRkVTVCBldmVyeXRpbWUuCi0KLS0gSXNzdWUgIzg0Nzc6IHNzbC5SQU5EX2VnZCgpIGFuZCBzc2wuX3Rlc3RfZGVjb2RlX2NlcnQoKSBzdXBwb3J0IHN0ciB3aXRoCi0gIHN1cnJvZ2F0ZXMgYW5kIGJ5dGVzIGZvciB0aGUgZmlsZW5hbWUuCi0KLS0gSXNzdWUgIzg1NTA6IEFkZCBmaXJzdCBjbGFzcyBgYFNTTENvbnRleHRgYCBvYmplY3RzIHRvIHRoZSBzc2wgbW9kdWxlLgotCi0tIElzc3VlICM4NjgxOiBNYWtlIHRoZSB6bGliIG1vZHVsZSdzIGVycm9yIG1lc3NhZ2VzIG1vcmUgaW5mb3JtYXRpdmUgd2hlbiB0aGUKLSAgemxpYiBpdHNlbGYgZG9lc24ndCBnaXZlIGFueSBkZXRhaWxlZCBleHBsYW5hdGlvbi4KLQotLSBUaGUgYXVkaW9vcCBtb2R1bGUgbm93IHN1cHBvcnRzIHNvdW5kIGZyYWdtZW50cyBvZiBsZW5ndGggZ3JlYXRlciB0aGFuIDIqKjMxCi0gIGJ5dGVzIG9uIDY0LWJpdCBtYWNoaW5lcywgYW5kIGlzIFBZX1NTSVpFX1RfQ0xFQU4uCi0KLS0gSXNzdWUgIzQ5NzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBmdHBsaWIuRlRQCi0gIGNsYXNzLgotCi0tIElzc3VlICM4NjY0OiBJbiBweV9jb21waWxlLCBjcmVhdGUgX19weWNhY2hlX18gd2hlbiB0aGUgY29tcGlsZWQgcGF0aCBpcwotICBnaXZlbi4KLQotLSBJc3N1ZSAjODUxNDogQWRkIG9zLmZzZW5jb2RlKCkgZnVuY3Rpb24gKFVuaXggb25seSk6IGVuY29kZSBhIHN0cmluZyB0byBieXRlcwotICBmb3IgdXNlIGluIHRoZSBmaWxlIHN5c3RlbSwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzg1NzE6IEZpeCBhbiBpbnRlcm5hbCBlcnJvciB3aGVuIGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgYSBjaHVuawotICBsYXJnZXIgdGhhbiAxR0Igd2l0aCB0aGUgemxpYiBtb2R1bGUncyBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3Igb2JqZWN0cy4KLQotLSBJc3N1ZSAjODYwMzogU3VwcG9ydCBieXRlcyBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBvbiBVbml4OiBBZGQgb3MuZW52aXJvbmIKLSAgbWFwcGluZyBhbmQgb3MuZ2V0ZW52YigpIGZ1bmN0aW9uLiBvcy51bnNldGVudigpIGVuY29kZXMgc3RyIGFyZ3VtZW50IHRvIHRoZQotICBmaWxlIHN5c3RlbSBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciAoaW5zdGVhZCBvZgotICB1dGY4L3N0cmljdCkgYW5kIGFjY2VwdHMgYnl0ZXMuIHBvc2l4LmVudmlyb24ga2V5cyBhbmQgdmFsdWVzIGFyZSBub3cgYnl0ZXMuCi0KLS0gSXNzdWUgIzg1NzM6IGFzeW5jb3JlIF9zdHJlcnJvcigpIGZ1bmN0aW9uIG1pZ2h0IHRocm93IFZhbHVlRXJyb3IuCi0KLS0gSXNzdWUgIzg0ODM6IGFzeW5jb3JlLmRpc3BhdGNoZXIncyBfX2dldGF0dHJfXyBtZXRob2QgcHJvZHVjZWQgY29uZnVzaW5nIGVycm9yCi0gIG1lc3NhZ2VzIHdoZW4gYWNjZXNzaW5nIHVuZGVmaW5lZCBjbGFzcyBhdHRyaWJ1dGVzIGJlY2F1c2Ugb2YgdGhlIGNoZWFwCi0gIGluaGVyaXRhbmNlIHdpdGggdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4gIFRoZSBjaGVhcCBpbmhlcml0YW5jZSBoYXMgYmVlbgotICBkZXByZWNhdGVkLgotCi0tIElzc3VlICM0MjY1OiBzaHV0aWwuY29weWZpbGUoKSB3YXMgbGVha2luZyBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gZGlzayBmaWxscy4KLSAgUGF0Y2ggYnkgVHJlcyBTZWF2ZXIuCi0KLS0gSXNzdWUgIzgzOTA6IHRhcmZpbGUgdXNlcyBzdXJyb2dhdGVlc2NhcGUgYXMgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlcgotICAoaW5zdGVhZCBvZiByZXBsYWNlIGluIHJlYWQgbW9kZSBvciBzdHJpY3QgaW4gd3JpdGUgbW9kZSkuCi0KLS0gSXNzdWUgIzc3NTU6IFVzZSBhbiB1bmVuY3VtYmVyZWQgYXVkaW8gZmlsZSBmb3IgdGVzdHMuCi0KLS0gSXNzdWUgIzg2MjE6IHV1aWQudXVpZDQoKSByZXR1cm5lZCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgaW4gdGhlIHBhcmVudAotICBhbmQgYW55IGNoaWxkcmVuIGNyZWF0ZWQgdXNpbmcgYGBvcy5mb3JrYGAgb24gTWFjT1MgWCAxMC42LgotCi0tIElzc3VlICM4NTY3OiBGaXggcHJlY2VkZW5jZSBvZiBzaWduYWxzIGluIERlY2ltYWwgbW9kdWxlOiB3aGVuIGEgRGVjaW1hbAotICBvcGVyYXRpb24gcmFpc2VzIG11bHRpcGxlIHNpZ25hbHMgYW5kIG1vcmUgdGhhbiBvbmUgb2YgdGhvc2Ugc2lnbmFscyBpcwotICB0cmFwcGVkLCB0aGUgc3BlY2lmaWNhdGlvbiBkZXRlcm1pbmVzIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgc2lnbmFscyBzaG91bGQgYmUKLSAgaGFuZGxlZC4gIEluIG1hbnkgY2FzZXMgdGhpcyBvcmRlciB3YXNuJ3QgYmVpbmcgZm9sbG93ZWQsIGxlYWRpbmcgdG8gdGhlIHdyb25nCi0gIFB5dGhvbiBleGNlcHRpb24gYmVpbmcgcmFpc2VkLgotCi0tIElzc3VlICM3ODY1OiBUaGUgY2xvc2UoKSBtZXRob2Qgb2YgOm1vZDpgaW9gIG9iamVjdHMgc2hvdWxkIG5vdCBzd2FsbG93Ci0gIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSBpbXBsaWNpdCBmbHVzaCgpLiAgQWxzbyBxZW5zdXJlIHRoYXQgY2FsbGluZyBjbG9zZSgpCi0gIHNldmVyYWwgdGltZXMgaXMgc3VwcG9ydGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzQ2ODc6IEZpeCBhY2N1cmFjeSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gcnVudGltZXMgZGlzcGxheWVkIHdpdGgKLSAgZ2MuREVCVUdfU1RBVFMuCi0KLS0gSXNzdWUgIzgzNTQ6IFRoZSBzaWdpbnRlcnJ1cHQgc2V0dGluZyBpcyBub3cgcHJlc2VydmVkIGZvciBhbGwgc2lnbmFscywgbm90Ci0gIGp1c3QgU0lHQ0hMRC4KLQotLSBJc3N1ZSAjNzE5Mjogd2ViYnJvd3Nlci5nZXQoImZpcmVmb3giKSBub3cgd29ya3Mgb24gTWFjIE9TIFgsIGFzIGRvZXMKLSAgd2ViYnJvd3Nlci5nZXQoInNhZmFyaSIpLgotCi0tIElzc3VlICM4NDY0OiB0YXJmaWxlIG5vIGxvbmdlciBjcmVhdGVzIGZpbGVzIHdpdGggZXhlY3V0ZSBwZXJtaXNzaW9ucyBzZXQgd2hlbgotICBtb2RlPSJ3fCIgaXMgdXNlZC4KLQotLSBJc3N1ZSAjNzgzNDogRml4IGNvbm5lY3QoKSBvZiBCbHVldG9vdGggTDJDQVAgc29ja2V0cyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZgotICB0aGUgTGludXgga2VybmVsLiAgUGF0Y2ggYnkgWWFuaXYgQWtuaW4uCi0KLS0gSXNzdWUgIzgyOTU6IEFkZGVkIHNodXRpbC51bnBhY2tfYXJjaGl2ZS4KLQotLSBJc3N1ZSAjNjMxMjogRml4ZWQgaHR0cCBIRUFEIHJlcXVlc3Qgd2hlbiB0aGUgdHJhbnNmZXIgZW5jb2RpbmcgaXMgY2h1bmtlZC4KLSAgSXQgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gYW4gZW1wdHkgcmVzcG9uc2Ugbm93LgotCi0tIElzc3VlICM4NTQ2OiBSZWplY3QgTm9uZSBnaXZlbiBhcyB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IHRvIF9weWlvLm9wZW4uCi0KLS0gSXNzdWUgIzg1NDk6IEZpeCBjb21waWxpbmcgdGhlIF9zc2wgZXh0ZW5zaW9uIHVuZGVyIEFJWC4gIFBhdGNoIGJ5Ci0gIFNyaWRoYXIgUmF0bmFrdW1hci4KLQotLSBJc3N1ZSAjNjY1NjogZml4IGxvY2FsZS5mb3JtYXRfc3RyaW5nIHRvIGhhbmRsZSBlc2NhcGVkIHBlcmNlbnRzCi0gIGFuZCBtYXBwaW5ncy4KLQotLSBJc3N1ZSAjMjMwMjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2h1dGRvd24sIHdoZXJlCi0gIHRoZSBtZXRob2QgY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IGlmIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgZXZlbnQgbG9vcAotICBzdGFydGVkIHJ1bm5pbmcuICBUaGlzIGFsc28gZml4ZXMgdGhlIG9jY2FzaW9uYWwgZnJlZXplcyB3aXRuZXNzZWQgaW4KLSAgdGVzdF9odHRwc2VydmVycy4KLQotLSBJc3N1ZSAjODUyNDogV2hlbiBjcmVhdGluZyBhbiBTU0wgc29ja2V0LCB0aGUgdGltZW91dCB2YWx1ZSBvZiB0aGUgb3JpZ2luYWwKLSAgc29ja2V0IHdhc24ndCByZXRhaW5lZCAoaW5zdGVhZCwgYSBzb2NrZXQgd2l0aCBhIHBvc2l0aXZlIHRpbWVvdXQgd291bGQgYmUKLSAgdHVybmVkIGludG8gYSBub24tYmxvY2tpbmcgU1NMIHNvY2tldCkuCi0KLS0gSXNzdWUgIzUxMDM6IFNTTCBoYW5kc2hha2Ugd291bGQgaWdub3JlIHRoZSBzb2NrZXQgdGltZW91dCBhbmQgYmxvY2sKLSAgaW5kZWZpbml0ZWx5IGlmIHRoZSBvdGhlciBlbmQgZGlkbid0IHJlc3BvbmQuCi0KLS0gVGhlIGRvX2hhbmRzaGFrZSgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyBub3cgYWRqdXN0cyB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUKLSAgU1NMIHN0cnVjdHVyZSBpZiBuZWNlc3NhcnkgKGFzIG90aGVyIG1ldGhvZHMgYWxyZWFkeSBkbykuCi0KLS0gSXNzdWUgIzgzOTE6IG9zLmV4ZWN2cGUoKSBhbmQgb3MuZ2V0ZW52KCkgc3VwcG9ydHMgdW5pY29kZSB3aXRoIHN1cnJvZ2F0ZXMgYW5kCi0gIGJ5dGVzIHN0cmluZ3MgZm9yIGVudmlyb25tZW50IGtleXMgYW5kIHZhbHVlcy4KLQotLSBJc3N1ZSAjODQ2NzogUHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3VicHJvY2VzcyBlbmNvZGVzIHRoZSBlcnJvcgotICBtZXNzYWdlIHVzaW5nIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlciB0byBzdXBwb3J0IHN1cnJvZ2F0ZXMgaW4gdGhlCi0gIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzg0Njg6IGJ6Mi5CWjJGaWxlKCkgYWNjZXB0cyBzdHIgd2l0aCBzdXJyb2dhdGVzIGFuZCBieXRlcyBmaWxlbmFtZXMuCi0KLS0gSXNzdWUgIzg0NTE6IFN5c2xvZyBtb2R1bGUgbm93IHVzZXMgYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pIGluc3RlYWQgb2YgdGhlCi0gIHN0cmluZyAicHl0aG9uIiBhcyB0aGUgKmlkZW50Ki4gIG9wZW5sb2coKSBhcmd1bWVudHMgYXJlIGFsbCBvcHRpb25hbCBhbmQKLSAga2V5d29yZHMuCi0KLS0gSXNzdWUgIzgxMDg6IEZpeCB0aGUgdW53cmFwKCkgbWV0aG9kIG9mIFNTTCBvYmplY3RzIHdoZW4gdGhlIHNvY2tldCBoYXMgYQotICBub24taW5maW5pdGUgdGltZW91dC4gIEFsc28gbWFrZSB0aGF0IG1ldGhvZCBmcmllbmRsaWVyIHdpdGggYXBwbGljYXRpb25zCi0gIHdhbnRpbmcgdG8gY29udGludWUgdXNpbmcgdGhlIHNvY2tldCBpbiBjbGVhci10ZXh0IG1vZGUsIGJ5IGRpc2FibGluZwotICBPcGVuU1NMJ3MgaW50ZXJuYWwgcmVhZGFoZWFkLiAgVGhhbmtzIHRvIERhcnJ5bCBNaWxlcyBmb3IgZ3VpZGFuY2UuCi0KLS0gSXNzdWUgIzg0OTY6IG1ha2UgbWFpbGNhcC5sb29rdXAoKSBhbHdheXMgcmV0dXJuIGEgbGlzdCwgcmF0aGVyIHRoYW4gYW4KLSAgaXRlcmF0b3IuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCi0KLS0gSXNzdWUgIzgxOTU6IEZpeCBhIGNyYXNoIGluIHNxbGl0ZSBDb25uZWN0aW9uLmNyZWF0ZV9jb2xsYXRpb24oKSBpZiB0aGUKLSAgY29sbGF0aW9uIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyLgotCi0tIElzc3VlICM4NDg0OiBMb2FkIGFsbCBjaXBoZXJzIGFuZCBkaWdlc3QgYWxnb3JpdGhtcyB3aGVuIGluaXRpYWxpemluZyB0aGUgX3NzbAotICBleHRlbnNpb24sIHN1Y2ggdGhhdCB2ZXJpZmljYXRpb24gb2Ygc29tZSBTU0wgY2VydGlmaWNhdGVzIGRvZXNuJ3QgZmFpbAotICBiZWNhdXNlIG9mIGFuICJ1bmtub3duIGFsZ29yaXRobSIuCi0KLS0gSXNzdWUgIzY1NDc6IEFkZGVkIHRoZSBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3Mgb3B0aW9uIHRvIHNodXRpbC5jb3B5dHJlZS4KLQotLSBJc3N1ZSAjMTU0MDExMjogTm93IGFsbG93aW5nIHRoZSBjaG9pY2Ugb2YgYSBjb3B5IGZ1bmN0aW9uIGluIHNodXRpbC5jb3B5dHJlZS4KLQotLSBJc3N1ZSAjNDgxNDogdGltZW91dCBwYXJhbWV0ZXIgaXMgbm93IGFwcGxpZWQgYWxzbyBmb3IgY29ubmVjdGlvbnMgcmVzdWx0aW5nCi0gIGZyb20gUE9SVC9FUFJUIGNvbW1hbmRzLgotCi0tIElzc3VlICM4NDYzOiBhZGRlZCBtaXNzaW5nIHJlZmVyZW5jZSB0byBienRhciBpbiBzaHV0aWwncyBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM3MTU0OiB1cmxsaWIucmVxdWVzdCBjYW4gbm93IGRldGVjdCB0aGUgcHJveHkgc2V0dGluZ3Mgb24gT1NYIDEwLjYgKGFzCi0gIGxvbmcgYXMgdGhlIHVzZXIgZGlkbid0IHNwZWNpZnkgJ2F1dG9tYXRpYyBwcm94eSBjb25maWd1cmF0aW9uJykuCi0KLS0gSXNzdWUgIzM4MTc6IGZ0cGxpYi5GVFAuYWJvcnQoKSBtZXRob2Qgbm93IGNvbnNpZGVycyAyMjUgYSB2YWxpZCByZXNwb25zZSBjb2RlCi0gIGFzIHN0YXRlZCBpbiBSRkMtOTU5IGF0IGNoYXB0ZXIgNS40LgotCi0tIElzc3VlICM4Mzk0OiBfY3R5cGVzLmRsb3BlbigpIGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGgKLSAgc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjODUwNzI4OiBBZGQgYSAqdGltZW91dCogcGFyYW1ldGVyIHRvIHRoZSBgYWNxdWlyZSgpYCBtZXRob2Qgb2YKLSAgYHRocmVhZGluZy5TZW1hcGhvcmVgIG9iamVjdHMuICBPcmlnaW5hbCBwYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCi0KLS0gSXNzdWUgIzgzMjI6IEFkZCBhICpjaXBoZXJzKiBhcmd1bWVudCB0byBTU0wgc29ja2V0cywgc28gYXMgdG8gY2hhbmdlIHRoZQotICBhdmFpbGFibGUgY2lwaGVyIGxpc3QuICBIZWxwcyBmaXggdGVzdF9zc2wgd2l0aCBPcGVuU1NMIDEuMC4wLgotCi0tIElzc3VlICM4MzkzOiBzdWJwcm9jZXNzIGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGggc3Vycm9nYXRlcyBmb3IKLSAgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzc2MDY6IFhNTC1SUEMgdHJhY2ViYWNrIHN0b3JlZCBpbiBYLXRyYWNlYmFjayBpcyBub3cgZW5jb2RlZCB0byBBU0NJSQotICB1c2luZyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzg0MTI6IG9zLnN5c3RlbSgpIG5vdyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzI5ODc6IFJGQzI3MzIgc3VwcG9ydCBmb3IgdXJscGFyc2UgKElQdjYgYWRkcmVzc2VzKS4gUGF0Y2ggYnkgVG9ueQotICBMb2NrZSBhbmQgSGFucyBVbHJpY2ggTmllZGVybWFubi4KLQotLSBJc3N1ZSAjNTI3NzogRml4IHF1b3RlIGNvdW50aW5nIHdoZW4gcGFyc2luZyBSRkMgMjIzMSBlbmNvZGVkIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzczMTY6IFRoZSBhY3F1aXJlKCkgbWV0aG9kIG9mIGxvY2sgb2JqZWN0cyBpbiB0aGUgOm1vZDpgdGhyZWFkaW5nYAotICBtb2R1bGUgbm93IHRha2VzIGFuIG9wdGlvbmFsIHRpbWVvdXQgYXJndW1lbnQgaW4gc2Vjb25kcy4gIFRpbWVvdXQgc3VwcG9ydAotICByZWxpZXMgb24gdGhlIHN5c3RlbSB0aHJlYWRpbmcgbGlicmFyeSwgc28gYXMgdG8gYXZvaWQgYSBzZW1pLWJ1c3kgd2FpdCBsb29wLgotCi0tIElzc3VlICM4MzgzOiBwaWNrbGUgYW5kIHBpY2tsZXRvb2xzIHVzZSBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgd2hlbgotICBlbmNvZGluZyB1bmljb2RlIGFzIHV0ZjggdG8gc3VwcG9ydCBsb25lIHN1cnJvZ2F0ZXMgYW5kIHN0YXkgY29tcGF0aWJsZSB3aXRoCi0gIFB5dGhvbiAyLnggYW5kIDMueC4KLQotLSBJc3N1ZSAjNzU4NTogZGlmZmxpYiBjb250ZXh0IGFuZCB1bmlmaWVkIGRpZmZzIG5vdyBwbGFjZSBhIHRhYiBiZXR3ZWVuCi0gIGZpbGVuYW1lIGFuZCBkYXRlLCBjb25mb3JtaW5nIHRvIHRoZSAnc3RhbmRhcmRzJyB0aGV5IHdlcmUgb3JpZ2luYWxseSBkZXNpZ25lZAotICB0byBmb2xsb3cuICBUaGlzIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBwYXRjaCB0b29scy4KLQotLSBJc3N1ZSAjNzQ3MjogRml4ZWQgdHlwbyBpbiBlbWFpbC5lbmNvZGVycyBtb2R1bGU7IG1lc3NhZ2VzIHVzaW5nIElTTy0yMDIyCi0gIGNoYXJhY3RlciBzZXRzIHdpbGwgbm93IGNvbnNpc3RlbnRseSB1c2UgYSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIG9mIDdiaXQKLSAgcmF0aGVyIHRoYW4gc29tZXRpbWVzIGJlaW5nIG1hcmtlZCBhcyA4Yml0LgotCi0tIElzc3VlICM4Mzc1OiB0ZXN0X2Rpc3R1dGlscyBub3cgY2hlY2tzIGlmIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFyZSBzdGlsbAotICBwcmVzZW50IGJlZm9yZSBpdCBjbGVhbnMgdGhlbS4KLQotLSBJc3N1ZSAjODM3NDogVXBkYXRlIHRoZSBpbnRlcm5hbCBhbGlhcyB0YWJsZSBpbiB0aGUgOm1vZDpgbG9jYWxlYCBtb2R1bGUgdG8KLSAgY292ZXIgcmVjZW50IGxvY2FsZSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMuCi0KLS0gSXNzdWUgIzgzMjE6IEdpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwKLSAgdXNpbmcgdGhlIG5ldyBhdHRyaWJ1dGVzIGBzc2wuT1BFTlNTTF9WRVJTSU9OYCwgYHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GT2AgYW5kCi0gIGBzc2wuT1BFTlNTTF9WRVJTSU9OX05VTUJFUmAuCi0KLS0gQWRkIGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIGFuZCBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgotCi0tIElzc3VlICM4MjU3OiBUaGUgRGVjaW1hbCBjb25zdHJ1Y3Qgbm93IGFjY2VwdHMgYSBmbG9hdCBpbnN0YW5jZSBkaXJlY3RseSwKLSAgY29udmVydGluZyB0aGF0IGZsb2F0IHRvIGEgRGVjaW1hbCBvZiBlcXVhbCB2YWx1ZToKLQotICAgICA+Pj4gRGVjaW1hbCgxLjEpCi0gICAgIERlY2ltYWwoJzEuMTAwMDAwMDAwMDAwMDAwMDg4ODE3ODQxOTcwMDEyNTIzMjMzODkwNTMzNDQ3MjY1NjI1JykKLQotLSBJc3N1ZSAjODI5NDogVGhlIEZyYWN0aW9uIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIERlY2ltYWwgYW5kIGZsb2F0IGluc3RhbmNlcwotICBkaXJlY3RseS4KLQotLSBJc3N1ZSAjNzI3OTogQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgRGVjaW1hbCBzaWduYWxpbmcgTmFOIG5vdyBzaWduYWwKLSAgSW52YWxpZE9wZXJhdGlvbiBpbnN0ZWFkIG9mIHJldHVybmluZyBGYWxzZS4gIChDb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldAotICBOYU4gYXJlIHVuY2hhbmdlZC4pICBBbHNvLCBEZWNpbWFsIHF1aWV0IE5hTnMgYXJlIG5vdyBoYXNoYWJsZTsgRGVjaW1hbAotICBzaWduYWxpbmcgTmFOcyByZW1haW4gdW5oYXNoYWJsZS4KLQotLSBJc3N1ZSAjMjUzMTogQ29tcGFyaXNvbiBvcGVyYXRpb25zIGJldHdlZW4gZmxvYXRzIGFuZCBEZWNpbWFsIGluc3RhbmNlcyBub3cKLSAgcmV0dXJuIGEgcmVzdWx0IGJhc2VkIG9uIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHM7IHByZXZpb3VzbHkgdGhleQotICByZXR1cm5lZCBhbiBhcmJpdHJhcnkgcmVzdWx0IGJhc2VkIG9uIHRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBpZChmbG9hdCkgYW5kCi0gIGlkKERlY2ltYWwpLiAgU2VlIGFsc28gaXNzdWUgIzgxODgsIHdoaWNoIGFkZHMgRGVjaW1hbC10by1GcmFjdGlvbgotICBjb21wYXJpc29ucy4KLQotLSBBZGRlZCBhIHN1YnRyYWN0KCkgbWV0aG9kIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KLQotLSBJc3N1ZSAjODIzMzogV2hlbiBydW4gYXMgYSBzY3JpcHQsIHB5X2NvbXBpbGUucHkgb3B0aW9uYWxseSB0YWtlcyBhIHNpbmdsZQotICBhcmd1bWVudCBgLWAgd2hpY2ggdGVsbHMgaXQgdG8gcmVhZCBmaWxlcyB0byBjb21waWxlIGZyb20gc3RkaW4uICBFYWNoIGxpbmUgaXMKLSAgcmVhZCBvbiBkZW1hbmQgYW5kIHRoZSBuYW1lZCBmaWxlIGlzIGNvbXBpbGVkIGltbWVkaWF0ZWx5LiAgKE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFBpb3RyIE/FvGFyb3dza2kpLgotCi0tIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlOiBVbmljb2RlIGNvZGVwb2ludHMgbGluZSB0YWJ1bGF0aW9uICgweDBCKSBhbmQKLSAgZm9ybSBmZWVkICgweDBDKSBhcmUgbm93IGNvbnNpZGVyZWQgbGluZWJyZWFrcywgYXMgc3BlY2lmaWVkIGluIFVuaWNvZGUKLSAgU3RhbmRhcmQgQW5uZXggIzE0LiAgU2VlIGlzc3VlICM3NjQzLiAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMTQvCi0KLS0gQ29tcGFyaXNvbnMgdXNpbmcgb25lIG9mIDwsIDw9LCA+LCA+PSBiZXR3ZWVuIGEgY29tcGxleCBpbnN0YW5jZSBhbmQgYQotICBGcmFjdGlvbnMgaW5zdGFuY2Ugbm93IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBUcnVlL0ZhbHNlLiAgVGhpcwotICBtYWtlcyBGcmFjdGlvbiA8PT4gY29tcGxleCBjb21wYXJpc29ucyBjb25zaXN0ZW50IHdpdGggaW50IDw9PiBjb21wbGV4LCBmbG9hdAotICA8PT4gY29tcGxleCwgYW5kIGNvbXBsZXggPD0+IGNvbXBsZXggY29tcGFyaXNvbnMuCi0KLS0gSXNzdWUgIzgxMzk6IG9zc2F1ZGlvZGV2IGRpZG4ndCBpbml0aWFsaXplIGl0cyB0eXBlcyBwcm9wZXJseSwgdGhlcmVmb3JlIHNvbWUKLSAgbWV0aG9kcyAoc3VjaCBhcyBvc3NfbWl4ZXJfZGV2aWNlLmZpbGVubygpKSB3ZXJlIG5vdCBhdmFpbGFibGUuICBJbml0aWFsIHBhdGNoCi0gIGJ5IEJlcnRyYW5kIEphbmluLgotCi0tIElzc3VlICM4MjA1OiBSZW1vdmUgdGhlICJNb2R1bGVzIiBkaXJlY3RvcnkgZnJvbSBzeXMucGF0aCB3aGVuIFB5dGhvbiBpcwotICBydW5uaW5nIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeSAoUE9TSVggb25seSkuCi0KLS0gSXNzdWUgIzc1MTI6IHNodXRpbC5jb3B5c3RhdCgpIGNvdWxkIHJhaXNlIGFuIE9TRXJyb3Igd2hlbiB0aGUgZmlsZXN5c3RlbQotICBkaWRuJ3Qgc3VwcG9ydCBjaGZsYWdzKCkgKGZvciBleGFtcGxlIFpGUyB1bmRlciBGcmVlQlNEKS4gIFRoZSBlcnJvciBpcyBub3cKLSAgc2lsZW5jZWQuCi0KLS0gSXNzdWUgIzc4NjA6IHBsYXRmb3JtLnVuYW1lIG5vdyByZXBvcnRzIHRoZSBjb3JyZWN0ICdtYWNoaW5lJyB0eXBlIHdoZW4gUHl0aG9uCi0gIGlzIHJ1bm5pbmcgaW4gV09XNjQgbW9kZSBvbiA2NCBiaXQgV2luZG93cy4KLQotLSBJc3N1ZSAjMzg5MCwgIzgyMjI6IEZpeCByZWN2KCkgYW5kIHJlY3ZfaW50bygpIG9uIG5vbi1ibG9ja2luZyBTU0wgc29ja2V0cy4KLSAgQWxzbywgZW5hYmxlIHRoZSBTU0xfTU9ERV9BVVRPX1JFVFJZIGZsYWcgb24gU1NMIHNvY2tldHMsIHNvIHRoYXQgYmxvY2tpbmcKLSAgcmVhZHMgYW5kIHdyaXRlcyBhcmUgYWx3YXlzIHJldHJpZWQgYnkgT3BlblNTTCBpdHNlbGYuCi0KLS0gSXNzdWUgIzQyODI6IEZpeCB0aGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgcHJvZmlsZSBtb2R1bGUgZm9yIGEgbm9uLUFTQ0lJCi0gIHNjcmlwdCwgb3BlbiB0aGUgZmlsZSBpbiBiaW5hcnkgbW9kZSBhbmQgbm90IGluIHRleHQgbW9kZSB3aXRoIHRoZSBkZWZhdWx0Ci0gICh1dGY4KSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjODE3OTogRml4IG1hY3BhdGgucmVhbHBhdGgoKSBvbiBhIG5vbi1leGlzdGluZyBwYXRoLgotCi0tIElzc3VlICM4MDI0OiBVcGRhdGUgdGhlIFVuaWNvZGUgZGF0YWJhc2UgdG8gNS4yLgotCi0tIElzc3VlICM4MTY4OiBweV9jb21waWxlIG5vdyBoYW5kbGVzIGZpbGVzIHdpdGggdXRmLTggQk9NUy4KLQotLSBgYHRva2VuaXplLmRldGVjdF9lbmNvZGluZ2BgIG5vdyByZXR1cm5zIGBgJ3V0Zi04LXNpZydgYCB3aGVuIGEgVVRGLTggQk9NIGlzCi0gIGRldGVjdGVkLgotCi0tIElzc3VlICM2NzE2LzI6IEJhY2tzbGFzaC1yZXBsYWNlIGVycm9yIG91dHB1dCBpbiBjb21waWxhbGwuCi0KLS0gSXNzdWUgIzQ5NjE6IEluY29uc2lzdGVudC93cm9uZyByZXN1bHQgb2YgYXNreWVzbm8gZnVuY3Rpb24gaW4gdGtNZXNzYWdlQm94Ci0gIHdpdGggVGNsL1RrLTguNS4KLQotLSBJc3N1ZSAjODE0MDogZXh0ZW5kIGNvbXBpbGVhbGwgdG8gY29tcGlsZSBzaW5nbGUgZmlsZXMuICBBZGQgLWkgb3B0aW9uLgotCi0tIElzc3VlICM3MzU2OiBjdHlwZXMudXRpbDogTWFrZSBwYXJzaW5nIG9mIGxkY29uZmlnIG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKLSAgbG9jYWxlLgotCi0tIFRoZSBpbnRlcm5hbHMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG9uIFBPU0lYIHN5c3RlbXMgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5Ci0gIGFuIGV4dGVuc2lvbiBtb2R1bGUgKF9wb3NpeHN1YnByb2Nlc3MpIHNvIHRoYXQgdGhlIGZvcmsoKStleGVjKCkgY2FuIGJlIGRvbmUKLSAgc2FmZWx5IHdpdGhvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGRlYWRsb2NrIGluIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zLgotCi0tIHN1YnByb2Nlc3MuUG9wZW4gbm93IGhhcyByZXN0b3JlX3NpZ25hbHMgYW5kIHN0YXJ0X25ld19zZXNzaW9uIGZlYXR1cmVzLiAgVGhlCi0gIGRlZmF1bHQgb2YgcmVzdG9yZV9zaWduYWxzPVRydWUgaXMgYSBuZXcgYmVoYXZpb3IgY29tcGFyZWQgdG8gZWFybGllciBQeXRob24KLSAgdmVyc2lvbnMuICBUaGlzIG1lYW5zIHRoYXQgc2lnbmFscyBzdWNoIGFzIFNJR1BJUEUgYXJlIG5vdCBpZ25vcmVkIGJ5IGRlZmF1bHQKLSAgaW4gc3VicHJvY2Vzc2VzIGxhdW5jaGVkIGJ5IFB5dGhvbiAoSXNzdWUgIzE2NTIpLgotCi0tIElzc3VlICM2NDcyOiBUaGUgeG1sLmV0cmVlIHBhY2thZ2UgaXMgdXBkYXRlZCB0byBFbGVtZW50VHJlZSAxLjMuICBUaGUKLSAgY0VsZW1lbnRUcmVlIG1vZHVsZSBpcyB1cGRhdGVkIHRvby4KLQotLSBJc3N1ZSAjNzc3NDogU2V0IHN5cy5leGVjdXRhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBpZiBhcmd2WzBdIGhhcyBiZWVuIHNldCB0bwotICBhbiBub24gZXhpc3RlbnQgcHJvZ3JhbSBuYW1lIGFuZCBQeXRob24gaXMgdW5hYmxlIHRvIHJldHJpZXZlIHRoZSByZWFsIHByb2dyYW0KLSAgbmFtZS4KLQotLSBJc3N1ZSAjNzg4MDogRml4IHN5c2NvbmZpZyB3aGVuIHRoZSBweXRob24gZXhlY3V0YWJsZSBpcyBhIHN5bWJvbGljIGxpbmsuCi0KLS0gSXNzdWUgIzY1MDk6IGZpeCByZS5zdWIgdG8gd29yayBwcm9wZXJseSB3aGVuIHRoZSBwYXR0ZXJuLCB0aGUgc3RyaW5nLCBhbmQgdGhlCi0gIHJlcGxhY2VtZW50IHdlcmUgYWxsIGJ5dGVzLiAgUGF0Y2ggYnkgQW50b2luZSBQaXRyb3UuCi0KLS0gVGhlIHNxbGl0ZTMgbW9kdWxlIHdhcyB1cGRhdGVkIHRvIHB5c3FsaXRlIDIuNi4wLiBUaGlzIGZpeGVzIHNldmVyYWwgb2JzY3VyZQotICBidWdzIGFuZCBhbGxvd3MgbG9hZGluZyBTUUxpdGUgZXh0ZW5zaW9ucyBmcm9tIHNoYXJlZCBsaWJyYXJpZXMuCi0KLS0gSXNzdWUgIzEwNTQ5NDM6IEZpeCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgdGV4dClgYCBmb3IgdGhlIFB1YmxpYwotICBSZXZpZXcgSXNzdWUgIzI5IChodHRwOi8vdW5pY29kZS5vcmcvcmV2aWV3L3ByLTI5Lmh0bWwpLgotCi0tIElzc3VlICM3NDk0OiBmaXggYSBjcmFzaCBpbiBfbHNwcm9mIChjUHJvZmlsZSkgYWZ0ZXIgY2xlYXJpbmcgdGhlIHByb2ZpbGVyLAotICByZXNldCBhbHNvIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHBvaW50ZXIgY29udGV4dC4KLQotLSBJc3N1ZSAjNzIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgdG8gdGhlIFRhckZpbGUKLSAgY2xhc3MuCi0KLS0gSXNzdWUgIzcyNTA6IEZpeCBpbmZvIGxlYWsgb2Ygb3MuZW52aXJvbiBhY3Jvc3MgbXVsdGktcnVuIHVzZXMgb2YKLSAgd3NnaXJlZi5oYW5kbGVycy5DR0lIYW5kbGVyLgotCi0tIElzc3VlICMxNzI5MzA1OiBGaXggZG9jdGVzdCB0byBoYW5kbGUgZW5jb2RlIGVycm9yIHdpdGggImJhY2tzbGFzaHJlcGxhY2UiLgotCi0tIElzc3VlICM2OTEyOTE6IGNvZGVjcy5vcGVuKCkgc2hvdWxkIG5vdCBjb252ZXJ0IGVuZCBvZiBsaW5lcyBvbiByZWFkaW5nIGFuZAotICB3cml0aW5nLgotCi0tIElzc3VlICM3ODY5OiBsb2dnaW5nOiBpbXByb3ZlZCBkaWFnbm9zdGljIGZvciBmb3JtYXQtdGltZSBlcnJvcnMuCi0KLS0gSXNzdWUgIzc4Njg6IGxvZ2dpbmc6IGFkZGVkIGxvZ2dlckNsYXNzIGF0dHJpYnV0ZSB0byBNYW5hZ2VyLgotCi0tIGxvZ2dpbmc6IEltcGxlbWVudGVkIFBFUCAzOTEuCi0KLS0gSXNzdWUgIzE1Mzc3MjE6IEFkZCBhIHdyaXRlaGVhZGVyKCkgbWV0aG9kIHRvIGNzdi5EaWN0V3JpdGVyLgotCi0tIElzc3VlICM3OTU5OiBjdHlwZXMgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBub3cgcmVnaXN0ZXJlZCBjb3JyZWN0bHkgd2l0aCB0aGUKLSAgY3ljbGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0KLS0gSXNzdWUgIzU4MDE6IHJlbW92ZWQgc3B1cmlvdXMgZW1wdHkgbGluZXMgaW4gd3NnaXJlZi4KLQotLSBJc3N1ZSAjNjY2NjogZml4IGJ1ZyBpbiB0cmFjZS5weSB0aGF0IGFwcGxpZWQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYmUKLSAgaWdub3JlZCBvbmx5IHRvIHRoZSBmaXJzdCBmaWxlLiAgTm90ZWQgYnkgQm9nZGFuIE9wYW5jaHVrLgotCi0tIElzc3VlICM3NTk3OiBjdXJzZXMudXNlX2VudigpIGNhbiBub3cgYmUgY2FsbGVkIGJlZm9yZSBpbml0c2NyKCkuICBOb3RlZCBieQotICBLYW4tUnUgQ2hlbi4KLQotLSBJc3N1ZSAjNzMxMDogZml4IHRoZSBfX3JlcHJfXyBvZiBvcy5lbnZpcm9uIHRvIHNob3cgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLQotLSBJc3N1ZSAjNzk3MDogZW1haWwuR2VuZXJhdG9yLmZsYXR0ZW4gbm93IGNvcnJlY3RseSBmbGF0dGVucyBtZXNzYWdlL3JmYzgyMgotICBtZXNzYWdlcyBwYXJzZWQgYnkgZW1haWwuUGFyc2VyLkhlYWRlclBhcnNlci4KLQotLSBJc3N1ZSAjNzM2MTogSW1wb3J0bGliIHdhcyBub3QgcHJvcGVybHkgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBieXRlcyBpbgotICBieXRlY29kZSBmaWxlIHdoZW4gaXQgd2FzIGxlc3MgdGhlbiA4IGJ5dGVzLgotCi0tIElzc3VlICM3NjMzOiBJbiB0aGUgZGVjaW1hbCBtb2R1bGUsIENvbnRleHQgY2xhc3MgbWV0aG9kcyAod2l0aCB0aGUgZXhjZXB0aW9uCi0gIG9mIGNhbm9uaWNhbCBhbmQgaXNfY2Fub25pY2FsKSBub3cgYWNjZXB0IGluc3RhbmNlcyBvZiBpbnQgYW5kIGxvbmcgd2hlcmV2ZXIgYQotICBEZWNpbWFsIGluc3RhbmNlIGlzIGFjY2VwdGVkLCBhbmQgaW1wbGljaXRseSBjb252ZXJ0IHRoYXQgYXJndW1lbnQgdG8gRGVjaW1hbC4KLSAgUHJldmlvdXNseSBvbmx5IHNvbWUgYXJndW1lbnRzIHdlcmUgY29udmVydGVkLgotCi0tIElzc3VlICM3ODM1OiBzaGVsdmUgc2hvdWxkIG5vIGxvbmdlciBwcm9kdWNlIG15c3RlcmlvdXMgd2FybmluZ3MgZHVyaW5nCi0gIGludGVycHJldGVyIHNodXRkb3duLgotCi0tIElzc3VlICMyNzQ2OiBEb24ndCBlc2NhcGUgYW1wZXJzYW5kcyBhbmQgYW5nbGUgYnJhY2tldHMgKCImIiwgIjwiLCAiPiIpIGluIFhNTAotICBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBhbmQgY29tbWVudHMuICBUaGVzZSByYXcgY2hhcmFjdGVycyBhcmUgYWxsb3dlZCBieSB0aGUKLSAgWE1MIHNwZWNpZmljYXRpb24sIGFuZCBhcmUgbmVjZXNzYXJ5IHdoZW4gb3V0cHV0dGluZyBlLmcuICBQSFAgY29kZSBpbiBhCi0gIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uICBQYXRjaCBieSBOZWlsIE11bGxlci4KLQotLSBJc3N1ZSAjNjIzMzogRWxlbWVudFRyZWUgZmFpbGVkIGNvbnZlcnRpbmcgdW5pY29kZSBjaGFyYWN0ZXJzIHRvIFhNTCBlbnRpdGllcwotICB3aGVuIHRoZXkgY291bGQndCBiZSByZXByZXNlbnRlZCBpbiB0aGUgcmVxdWVzdGVkIG91dHB1dCBlbmNvZGluZy4gIFBhdGNoIGJ5Ci0gIEplcnJ5IENoZW4uCi0KLS0gSXNzdWUgIzYwMDM6IGFkZCBhbiBhcmd1bWVudCB0byBgYHppcGZpbGUuWmlwZmlsZS53cml0ZXN0cmBgIHRvIHNwZWNpZnkgdGhlCi0gIGNvbXByZXNzaW9uIHR5cGUuCi0KLS0gSXNzdWUgIzQ3NzI6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGFuIHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIGlzCi0gIHNwZWNpZmllZCwgcmF0aGVyIHRoYW4gZmFsbCB0aHJvdWdoIHRvIEFGX1BBQ0tFVCAoaW4gdGhlIGBzb2NrZXRgIG1vZHVsZSkuCi0gIEFsc28sIHJhaXNlIFZhbHVlRXJyb3IgcmF0aGVyIHRoYW4gVHlwZUVycm9yIHdoZW4gYW4gdW5rbm93biBUSVBDIGFkZHJlc3MgdHlwZQotICBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzY5Mzk6IEZpeCBmaWxlIEkvTyBvYmplY3RzIGluIHRoZSBgaW9gIG1vZHVsZSB0byBrZWVwIHRoZSBvcmlnaW5hbCBmaWxlCi0gIHBvc2l0aW9uIHdoZW4gY2FsbGluZyBgdHJ1bmNhdGUoKWAuICBJdCB3b3VsZCBwcmV2aW91c2x5IGNoYW5nZSB0aGUgZmlsZQotICBwb3NpdGlvbiB0byB0aGUgZ2l2ZW4gYXJndW1lbnQsIHdoaWNoIGdvZXMgYWdhaW5zdCB0aGUgdHJhZGl0aW9uIG9mCi0gIGZ0cnVuY2F0ZSgpIGFuZCBvdGhlciB0cnVuY2F0aW9uIEFQSXMuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KLQotLSBJc3N1ZSAjNzYxMDogUmV3b3JrZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsCi0gIDpjbGFzczpgemlwZmlsZS5aaXBFeHRGaWxlYCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBmaWxlcyBzdG9yZWQgaW5zaWRlIGFuCi0gIGFyY2hpdmUuICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIGFuZCBjYW4gYmUgd3JhcHBlZCBpbgotICBhIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdCBmb3IgbW9yZSBzcGVlZHVwcy4gIEl0IGFsc28gc29sdmVzIGFuCi0gIGlzc3VlIHdoZXJlIGludGVybGVhdmVkIGNhbGxzIHRvIGByZWFkKClgIGFuZCBgcmVhZGxpbmUoKWAgZ2l2ZSB3cm9uZyByZXN1bHRzLgotICBQYXRjaCBieSBOaXIgQWlkZXMuCi0KLS0gSXNzdWUgIzY5NjM6IEFkZGVkICJtYXh0YXNrc3BlcmNoaWxkIiBhcmd1bWVudCB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbCwKLSAgYWxsb3dpbmcgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUKLSAgd29ya2VyIGJlZm9yZSB0aGF0IHdvcmtlciBpcyB0ZXJtaW5hdGVkLCBhbmQgYSBuZXcgb25lIGNyZWF0ZWQgdG8gcmVwbGFjZSBpdC4KLQotLSBJc3N1ZSAjNzc5MjogUmVnaXN0ZXJpbmcgbm9uLWNsYXNzZXMgdG8gQUJDcyByYWlzZWQgYW4gb2JzY3VyZSBlcnJvci4KLQotLSBJc3N1ZSAjNzc4NTogRG9uJ3QgYWNjZXB0IGJ5dGVzIGluIEZpbGVJTy53cml0ZSgpLgotCi0tIFJlbW92ZWQgdGhlIGZ1bmN0aW9ucyAndmVyaWZ5JyBhbmQgJ3ZlcmVxJyBmcm9tIExpYi90ZXN0L3N1cHBvcnQucHkuCi0KLS0gSXNzdWUgIzc3NzM6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSB3aGVuCi0gIHRoZSByZWxlYXNlIGZpbGUgaXMgZW1wdHkuCi0KLS0gSXNzdWUgIzc1NjE6IEZpeCBjcmFzaGVzIHdoZW4gdXNpbmcgYnl0ZWFycmF5IG9iamVjdHMgd2l0aCB0aGUgcG9zaXgKLSAgbW9kdWxlLgotCi0tIElzc3VlICMxNjcwNzY1OiBQcmV2ZW50IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IgZnJvbSByZS13cmFwcGluZyBoZWFkZXJzIGluCi0gIG11bHRpcGFydC9zaWduZWQgTUlNRSBwYXJ0cywgd2hpY2ggZml4ZXMgb25lIG9mIHRoZSBzb3VyY2VzIG9mIGludmFsaWQKLSAgbW9kaWZpY2F0aW9ucyB0byBzdWNoIHBhcnRzIGJ5IEdlbmVyYXRvci4KLQotLSBJc3N1ZSAjNzcwMzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBgYmluYXNjaWkuYTJiaHF4YC4gIFBhdGNoCi0gIGJ5IEZsb3JlbnQgWGljbHVuYSwgYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCi0KLS0gSXNzdWUgIzc3MDE6IEZpeCBjcmFzaCBpbiBiaW5hc2NpaS5iMmFfdXUoKSBpbiBkZWJ1ZyBtb2RlIHdoZW4gZ2l2ZW4gYSAxLWJ5dGUKLSAgYXJndW1lbnQuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMzI5OTogRml4IHBvc3NpYmxlIGNyYXNoIGluIHRoZSBfc3JlIG1vZHVsZSB3aGVuIGdpdmVuIGJhZCBhcmd1bWVudAotICB2YWx1ZXMgaW4gZGVidWcgbW9kZS4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICMyODQ2OiBBZGQgc3VwcG9ydCBmb3IgZ3ppcC5HemlwRmlsZSByZWFkaW5nIHplcm8tcGFkZGVkIGZpbGVzLiAgUGF0Y2gKLSAgYnkgQnJpYW4gQ3VydGluLgotCi0tIElzc3VlICM3NjgxOiBVc2UgZmxvb3IgZGl2aXNpb24gaW4gYXBwcm9waWF0ZSBwbGFjZXMgaW4gdGhlIHdhdmUgbW9kdWxlLgotCi0tIElzc3VlICM1MzcyOiBEcm9wIHRoZSByZXVzZSBvZiAubyBmaWxlcyBpbiBEaXN0dXRpbHMnIGNjb21waWxlciAoc2luY2UKLSAgRXh0ZW5zaW9uIGV4dHJhIG9wdGlvbnMgbWF5IGNoYW5nZSB0aGUgb3V0cHV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIC5jCi0gIGZpbGUpLiBJbml0aWFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCi0KLS0gSXNzdWUgIzc2MTc6IE1ha2Ugc3VyZSBkaXN0dXRpbHMudW5peGNjb21waWxlci5Vbml4Q0NvbXBpbGVyIHJlY29nbml6ZXMgZ2NjCi0gIHdoZW4gaXQgaGFzIGEgZnVsbHkgcXVhbGlmaWVkIGNvbmZpZ3VyYXRpb24gcHJlZml4LiBJbml0aWFsIHBhdGNoIGJ5IEFyZnJldmVyLgotCi0tIElzc3VlICM3MTA1OiBNYWtlIFdlYWtLZXlEaWN0aW9uYXJ5IGFuZCBXZWFrVmFsdWVEaWN0aW9uYXJ5IHJvYnVzdCBhZ2FpbnN0IHRoZQotICBkZXN0cnVjdGlvbiBvZiB3ZWFrcmVmJ2VkIG9iamVjdHMgd2hpbGUgaXRlcmF0aW5nLgotCi0tIElzc3VlICM3NDU1OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gY1BpY2tsZSBvbiBpbnZhbGlkIGlucHV0LiAgUGF0Y2ggYnkgVmljdG9yCi0gIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzE2MjgyMDU6IFNvY2tldCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkgc29ja2V0LnNvY2tldC5tYWtlZmlsZSgpIG5vdwotICBwcm9wZXJseSBoYW5kbGVzIEVJTlRSIHdpdGhpbiB0aGUgcmVhZCwgcmVhZGxpbmUsIHdyaXRlICYgZmx1c2ggbWV0aG9kcy4gIFRoZQotICBzb2NrZXQuc2VuZGFsbCgpIG1ldGhvZCBub3cgcHJvcGVybHkgaGFuZGxlcyBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbHMuCi0KLS0gSXNzdWUgIzc0NzE6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEd6aXBGaWxlJ3MgYnVmZmVyaW5nIG1lY2hhbmlzbSwgYW5kCi0gIG1ha2UgaXQgaW1wbGVtZW50IHRoZSBgaW8uQnVmZmVyZWRJT0Jhc2VgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcyBieQotICB3cmFwcGluZyBpdCBpbiBhbiBgaW8uQnVmZmVyZWRSZWFkZXJgLiAgUGF0Y2ggYnkgTmlyIEFpZGVzLgotCi0tIElzc3VlICMzOTcyOiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcwotICBwYXJhbWV0ZXIgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGVyZSB5b3VyIGNvbm5lY3Rpb25zIGNvbWUgZnJvbS4KLQotLSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLgotCi0tIElzc3VlICM1NTExOiBub3cgemlwZmlsZS5aaXBGaWxlIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLiAgSW5pdGlhbAotICBwYXRjaCBieSBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzc1NTY6IE1ha2Ugc3VyZSBEaXN0dXRpbHMnIG1zdmM5Y29tcGlsZSByZWFkcyBhbmQgd3JpdGVzIHRoZSBNU1ZDIFhNTAotICBNYW5pZmVzdCBmaWxlIGluIHRleHQgbW9kZSBzbyBzdHJpbmcgcGF0dGVybnMgY2FuIGJlIHVzZWQgaW4gcmVndWxhcgotICBleHByZXNzaW9ucy4KLQotLSBJc3N1ZSAjNzU1MjogUmVtb3ZlZCBsaW5lIGZlZWQgaW4gdGhlIGJhc2U2NCBBdXRob3JpemF0aW9uIGhlYWRlciBpbiB0aGUKLSAgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIHRvIGF2b2lkIGFuIGVycm9yIHdoZW4gUHlQSSByZWFkcyBpdC4gIFRoaXMgb2NjdXJzIG9uCi0gIGxvbmcgcGFzc3dvcmRzLiBJbml0aWFsIHBhdGNoIGJ5IEpQIFN0LiBQaWVycmUuCi0KLS0gSXNzdWUgIzcyMzE6IHVybGxpYjIgY2Fubm90IGhhbmRsZSBodHRwcyB3aXRoIHByb3h5IHJlcXVpcmluZyBhdXRoLiAgUGF0Y2ggYnkKLSAgVGF0c3VoaXJvIFRzdWppa2F3YS4KLQotLSBJc3N1ZSAjNDc1NzogYHpsaWIuY29tcHJlc3NgIGFuZCBvdGhlciBtZXRob2RzIGluIHRoZSB6bGliIG1vZHVsZSBub3cgcmFpc2UgYQotICBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiBgc3RyYCBvYmplY3QgKHJhdGhlciB0aGFuIGEgYGJ5dGVzYC1saWtlIG9iamVjdCkuCi0gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyIGFuZCBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzczNDk6IE1ha2UgbWV0aG9kcyBvZiBmaWxlIG9iamVjdHMgaW4gdGhlIGlvIG1vZHVsZSBhY2NlcHQgTm9uZSBhcyBhbgotICBhcmd1bWVudCB3aGVyZSBmaWxlLWxpa2Ugb2JqZWN0cyAoaWUgU3RyaW5nSU8gYW5kIEJ5dGVzSU8pIGFjY2VwdCB0aGVtIHRvIG1lYW4KLSAgdGhlIHNhbWUgYXMgcGFzc2luZyBubyBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNzM1NzogdGFyZmlsZSBubyBsb25nZXIgc3VwcHJlc3NlcyBmYXRhbCBleHRyYWN0aW9uIGVycm9ycyBieSBkZWZhdWx0LgotCi0tIElzc3VlICM1OTQ5OiBhZGRlZCBjaGVjayBmb3IgY29ycmVjdCBsaW5lZW5kcyBpbiBpbnB1dCBmcm9tIElNQVAgc2VydmVyIGluCi0gIGltYXBsaWIuCi0KLS0gQWRkIGNvdW50KCkgYW5kIHJldmVyc2UoKSBtZXRob2RzIHRvIGNvbGxlY3Rpb25zLmRlcXVlKCkuCi0KLS0gRml4IHZhcmlhdGlvbnMgb2YgZXh0ZW5kaW5nIGRlcXVlczogIGQuZXh0ZW5kKGQpICBkLmV4dGVuZGxlZnQoZCkgIGQrPWQKLQotLSBJc3N1ZSAjNjk4NjogRml4IGNyYXNoIGluIHRoZSBKU09OIEMgYWNjZWxlcmF0b3Igd2hlbiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKLSAgcGFyYW1ldGVyIHR5cGVzLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzc0NTc6IGFkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8KLSAgZGlzdHV0aWxzLmRpc3QuRGlzdHJpYnV0aW9uTWV0YWRhdGEuCi0KLS0gbG9nZ2luZzogQWRkZWQgb3B0aW9uYWwgYHNlY3VyZWAgcGFyYW1ldGVyIHRvIFNNVFBIYW5kbGVyLCB0byBlbmFibGUgdXNlIG9mCi0gIFRMUyB3aXRoIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgotCi0tIElzc3VlICMxOTIzOiBGaXhlZCB0aGUgcmVtb3ZhbCBvZiBtZWFuaW5nZnVsIHNwYWNlcyB3aGVuIFBLRy1JTkZPIGlzIGdlbmVyYXRlZAotICBpbiBEaXN0dXRpbHMuICBQYXRjaCBieSBTdGVwaGVuIEVtc2xpZS4KLQotLSBJc3N1ZSAjNDEyMDogRHJvcCByZWZlcmVuY2UgdG8gQ1JUIGZyb20gbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIHdpdGgKLSAgbXN2Yzljb21waWxlci4KLQotLSBJc3N1ZSAjNzMzMzogVGhlIGBwb3NpeGAgbW9kdWxlIGdhaW5zIGFuIGBpbml0Z3JvdXBzKClgIGZ1bmN0aW9uIHByb3ZpZGluZwotICBhY2Nlc3MgdG8gdGhlIGluaXRncm91cHMoMykgQyBsaWJyYXJ5IGNhbGwgb24gVW5peCBzeXN0ZW1zIHdoaWNoIGltcGxlbWVudCBpdC4KLSAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZS4KLQotLSBJc3N1ZSAjNzQwODogRml4ZWQgZGlzdHV0aWxzLnRlc3RzLnNkaXN0IHNvIGl0IGRvZXNuJ3QgY2hlY2sgZm9yIGdyb3VwCi0gIG93bmVyc2hpcCB3aGVuIHRoZSBncm91cCBpcyBub3QgZm9yY2VkLCBiZWNhdXNlIHRoZSBncm91cCBtYXkgYmUgZGlmZmVyZW50Ci0gIGZyb20gdGhlIHVzZXIncyBncm91cCBhbmQgaW5oZXJpdCBmcm9tIGl0cyBjb250YWluZXIgd2hlbiB0aGUgdGVzdCBpcyBydW4uCi0KLS0gSXNzdWUgIzQ0ODY6IFdoZW4gYW4gZXhjZXB0aW9uIGhhcyBhbiBleHBsaWNpdCBjYXVzZSwgZG8gbm90IHByaW50IGl0cwotICBpbXBsaWNpdCBjb250ZXh0IHRvby4gIFRoaXMgYWZmZWN0cyB0aGUgYHRyYWNlYmFja2AgbW9kdWxlIGFzIHdlbGwgYXMgYnVpbHQtaW4KLSAgZXhjZXB0aW9uIHByaW50aW5nLgotCi0tIElzc3VlICMxNTE1OiBFbmFibGUgdXNlIG9mIGRlZXBjb3B5KCkgd2l0aCBpbnN0YW5jZSBtZXRob2RzLiAgUGF0Y2ggYnkgUm9iZXJ0Ci0gIENvbGxpbnMuCi0KLS0gSXNzdWUgIzc0MDM6IGxvZ2dpbmc6IEZpeGVkIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGluIGxvY2sgY3JlYXRpb24uCi0KLS0gSXNzdWUgIzY4NDU6IEFkZCByZXN0YXJ0IHN1cHBvcnQgZm9yIGJpbmFyeSB1cGxvYWQgaW4gZnRwbGliLiAgVGhlCi0gIGBzdG9yYmluYXJ5KClgIG1ldGhvZCBvZiBGVFAgYW5kIEZUUF9UTFMgb2JqZWN0cyBnYWlucyBhbiBvcHRpb25hbCBgcmVzdGAKLSAgYXJndW1lbnQuICBQYXRjaCBieSBQYWJsbyBNb3V6by4KLQotLSBJc3N1ZSAjNTc4ODogYGRhdGV0aW1lLnRpbWVkZWx0YWAgb2JqZWN0cyBnZXQgYSBuZXcgYHRvdGFsX3NlY29uZHMoKWAgbWV0aG9kCi0gIHJldHVybmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGR1cmF0aW9uLiAgUGF0Y2ggYnkgQnJpYW4KLSAgUXVpbmxhbi4KLQotLSBJc3N1ZSAjNzEzMzogU1NMIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIG5ldyBidWZmZXIgQVBJLgotCi0tIElzc3VlICMxNDg4OTQzOiBkaWZmbGliLkRpZmZlcigpIGRvZXNuJ3QgYWx3YXlzIGFkZCBoaW50cyBmb3IgdGFiIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzYxMjM6IHRhcmZpbGUgbm93IG9wZW5zIGVtcHR5IGFyY2hpdmVzIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5Ci0gIHJhaXNlcyBSZWFkRXJyb3Igb24gZW1wdHkgZmlsZXMuCi0KLS0gSXNzdWUgIzczNTQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X21zdmM5Y29tcGlsZXIgLSBkcmFnZnVsbHdpbmRvd3MgY2FuIGJlIDIuCi0KLS0gSXNzdWUgIzUwMzc6IFByb3h5IHRoZSBfX2J5dGVzX18gc3BlY2lhbCBtZXRob2QgaW5zdGVhZCB0byBfX2J5dGVzX18gaW5zdGVhZAotICBvZiBfX3N0cl9fLgotCi0tIElzc3VlICM3MzQxOiBDbG9zZSB0aGUgaW50ZXJuYWwgZmlsZSBvYmplY3QgaW4gdGhlIFRhckZpbGUgY29uc3RydWN0b3IgaW4gY2FzZQotICBvZiBhbiBlcnJvci4KLQotLSBJc3N1ZSAjNzI5MzogZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlciBpcyBmaXhlZCB0byB3b3JrIG9uIGFueSBmcmVzaAotICBXaW5kb3dzIGJveC4gSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KLQotLSBJc3N1ZSAjMjA1NDogZnRwbGliIG5vdyBwcm92aWRlcyBhbiBGVFBfVExTIGNsYXNzIHRvIGRvIHNlY3VyZSBGVFAgdXNpbmcgVExTCi0gIG9yIFNTTC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgotCi0tIElzc3VlICM3MzI4OiBweWRvYyBubyBsb25nZXIgY29ycnVwdHMgc3lzLnBhdGggd2hlbiBydW4gd2l0aCB0aGUgJy1tJyBzd2l0Y2guCi0KLS0gSXNzdWUgIzQ5Njk6IFRoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZQotICByZWdpc3RyeSB1bmRlciBXaW5kb3dzLiAgUGF0Y2ggYnkgR2FicmllbCBHZW5lbGxpbmEuCi0KLS0gSXNzdWUgIzY4MTY6IHJ1bnB5IG5vdyBwcm92aWRlcyBhIHJ1bl9wYXRoIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIFB5dGhvbiBjb2RlIHRvCi0gIGV4ZWN1dGUgZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcwotICB6aXBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIG90aGVyIHZhbGlkIHN5cy5wYXRoIGVudHJpZXMgdGhhdCBjb250YWluIGEKLSAgX19tYWluX18ucHkgZmlsZS4gIFRoaXMgYWxsb3dzIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvdGhlciBQeXRob24gc2NyaXB0cyB0bwotICBzdXBwb3J0IHRoZSBzYW1lIGZsZXhpYmlsaXR5IGFzIHRoZSBDUHl0aG9uIGNvbW1hbmQgbGluZSBpdHNlbGYuCi0KLS0gSXNzdWUgIzczMTg6IG11bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBhIHRpbWVvdXQgd2hlbiBpdCBmYWlscyB0byBlc3RhYmxpc2ggYQotICBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBwcm9jZXNzLCByYXRoZXIgdGhhbiBsb29waW5nIGVuZGxlc3NseS4gIFRoZSBkZWZhdWx0Ci0gIHRpbWVvdXQgaXMgMjAgc2Vjb25kcywgd2hpY2ggc2hvdWxkIGJlIGFtcGx5IHN1ZmZpY2llbnQgZm9yIGxvY2FsIGNvbm5lY3Rpb25zLgotCi0tIElzc3VlICM3MTk3OiBBbGxvdyB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lciBvYmplY3RzIHRvIGJlIHBpY2tsZWQgYW5kCi0gIHVucGlja2xlZC4gIFRoaXMgZml4ZXMgY3Jhc2hlcyB1bmRlciBXaW5kb3dzIHdoZW4gdHJ5aW5nIHRvIHJ1bgotICB0ZXN0X211bHRpcHJvY2Vzc2luZyBpbiB2ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzc4OTM6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHRgYCBpcyBtYWRlIHB1YmxpYyBhbmQgYSBgYHJlc3VsdGNsYXNzYGAKLSAgYXJndW1lbnQgYWRkZWQgdG8gdGhlIFRleHRUZXN0UnVubmVyIGNvbnN0cnVjdG9yIGFsbG93aW5nIGEgZGlmZmVyZW50IHJlc3VsdAotICBjbGFzcyB0byBiZSB1c2VkIHdpdGhvdXQgaGF2aW5nIHRvIHN1YmNsYXNzLgotCi0tIElzc3VlICM3NTg4OiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0LmdldERlc2NyaXB0aW9uYGAgbm93IGluY2x1ZGVzIHRoZSB0ZXN0Ci0gIG5hbWUgaW4gZmFpbHVyZSByZXBvcnRzIGV2ZW4gaWYgdGhlIHRlc3QgaGFzIGEgZG9jc3RyaW5nLgotCi0tIElzc3VlICMzMDAxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIHJlY3Vyc2l2ZSBsb2NrcyB3aGljaCBpcyB1c2VkIGJ5Ci0gIGRlZmF1bHQgd2hlbiBpbnN0YW50aWF0aW5nIGEgYHRocmVhZGluZy5STG9ja2Agb2JqZWN0LiBUaGlzIG1ha2VzIHJlY3Vyc2l2ZQotICBsb2NrcyBhcyBmYXN0IGFzIHJlZ3VsYXIgbm9uLXJlY3Vyc2l2ZSBsb2NrcyAocHJldmlvdXNseSwgdGhleSB3ZXJlIHNsb3dlciBieQotICAxMHggdG8gMTV4KS4KLQotLSBJc3N1ZSAjNzI4MjogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBhbiBSTG9jayB3YXMgdXNlZCBpbiBhIHRocmVhZCBvdGhlciB0aGFuCi0gIHRob3NlIHN0YXJ0ZWQgdGhyb3VnaCBgdGhyZWFkaW5nLlRocmVhZGAgKGZvciBleGFtcGxlLCB1c2luZwotICBgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKClgKS4KLQotLSBJc3N1ZSAjNzE4NzogSW1wb3J0bGliIHdvdWxkIG5vdCBzaWxlbmNlIHRoZSBJT0Vycm9yIHJhaXNlZCB3aGVuIHRyeWluZyB0bwotICB3cml0ZSBuZXcgYnl0ZWNvZGUgd2hlbiBpdCB3YXMgbWFkZSByZWFkLW9ubHkuCi0KLS0gSXNzdWUgIzcyNjQ6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gZGVhbGxvY2F0aW5nIHRocmVhZC1sb2NhbCBvYmplY3RzCi0gIHdoaWNoIGFyZSBwYXJ0IG9mIGEgcmVmZXJlbmNlIGN5Y2xlLgotCi0tIElzc3VlICM3MjExOiBBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGlkZW50YCBhbmQgYGRhdGFgIGZpZWxkcyBvZiBrZXZlbnQKLSAgb2JqZWN0cyBvbiA2NC1iaXQgc3lzdGVtcy4gIFBhdGNoIGJ5IE1pY2hhZWwgQnJvZ2h0b24uCi0KLS0gSXNzdWUgIzY4OTY6IG1haWxib3guTWFpbGRpciBub3cgaW52YWxpZGF0ZXMgaXRzIGludGVybmFsIGNhY2hlIGVhY2ggdGltZSBhCi0gIG1vZGlmaWNhdGlvbiBpcyBkb25lIHRocm91Z2ggaXQuICBUaGlzIGZpeGVzIGluY29uc2lzdGVuY2llcyBhbmQgdGVzdCBmYWlsdXJlcwotICBvbiBzeXN0ZW1zIHdpdGggc2xpZ2h0bHkgYm9ndXMgbXRpbWUgYmVoYXZpb3VyLgotCi0tIElzc3VlICM3MjQ2ICYgSXNzdWUgIzcyMDg6IGdldHBhc3Mgbm93IHByb3Blcmx5IGZsdXNoZXMgaW5wdXQgYmVmb3JlIHJlYWRpbmcKLSAgZnJvbSBzdGRpbiBzbyB0aGF0IGV4aXN0aW5nIGlucHV0IGRvZXMgbm90IGNvbmZ1c2UgaXQgYW5kIGxlYWQgdG8gaW5jb3JyZWN0Ci0gIGVudHJ5IG9yIGFuIElPRXJyb3IuICBJdCBhbHNvIHByb3Blcmx5IGZsdXNoZXMgaXQgYWZ0ZXJ3YXJkcyB0byBhdm9pZCB0aGUKLSAgdGVybWluYWwgZWNob2luZyB0aGUgaW5wdXQgYWZ0ZXJ3YXJkcyBvbiBPU2VzIHN1Y2ggYXMgU29sYXJpcy4KLQotLSBJc3N1ZSAjNzIzMzogRml4IGEgbnVtYmVyIG9mIHR3by1hcmd1bWVudCBEZWNpbWFsIG1ldGhvZHMgdG8gbWFrZSBzdXJlIHRoYXQKLSAgdGhleSBhY2NlcHQgYW4gaW50IG9yIGxvbmcgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4gIEFsc28gZml4IGJ1Z2d5IGhhbmRsaW5nIG9mCi0gIGxhcmdlIGFyZ3VtZW50cyAodGhvc2Ugd2l0aCBjb2VmZmljaWVudCBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBwcmVjaXNpb24pIGluCi0gIHNoaWZ0IGFuZCByb3RhdGUuCi0KLS0gSXNzdWUgIzQ3NTA6IFN0b3JlIHRoZSBiYXNlbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaW4gdGhlIGd6aXAgRk5BTUUKLSAgaGVhZGVyIGFzIHJlcXVpcmVkIGJ5IFJGQyAxOTUyLgotCi0tIElzc3VlICMxMTgwOiBBZGRlZCBhIG5ldyBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZSB+Ly5weWRpc3R1dGlscy5jZmcgaW4KLSAgRGlzdHV0aWxzLgotCi0tIElzc3VlICM3MjE4OiBGaXggdGVzdF9zaXRlIGZvciB3aW4zMiwgdGhlIGRpcmVjdG9yeSBjb21wYXJpc29uIHdhcyBkb25lIHdpdGgKLSAgYW4gdXBwZXJjYXNlLgotCi0tIElzc3VlICM3MjA1OiBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIHVzaW5nIGEgQloyRmlsZSBvYmplY3QgZnJvbQotICBzZXZlcmFsIHRocmVhZHMgYXQgb25jZS4KLQotLSBJc3N1ZSAjNzA3NzogbG9nZ2luZzogU3lzTG9nSGFuZGxlciBub3cgdHJlYXRzIFVuaWNvZGUgYXMgcGVyIFJGQyA1NDI0LgotCi0tIElzc3VlICM3MDk5OiBEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQKLSAgbGFyZ2VyIHRoYW4gZW1heC4KLQotLSBJc3N1ZSAjNzA4MDogbG9jYWxlLnN0cnhmcm0oKSByYWlzZXMgYSBNZW1vcnlFcnJvciBvbiA2NC1iaXQgbm9uLVdpbmRvd3MKLSAgcGxhdGZvcm1zLCBhbmQgYXNzb3J0ZWQgbG9jYWxlIGZpeGVzIGJ5IERlcmsgRHJ1a2tlci4KLQotLSBJc3N1ZSAjNTgzMzogRml4IGV4dHJhIHNwYWNlIGNoYXJhY3RlciBpbiByZWFkbGluZSBjb21wbGV0aW9uIHdpdGggdGhlIEdOVQotICByZWFkbGluZSBsaWJyYXJ5IHZlcnNpb24gNi4wLgotCi0tIElzc3VlICM2ODk0OiBGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjNzA4NjogQWRkZWQgVENQIHN1cHBvcnQgdG8gU3lzTG9nSGFuZGxlciwgYW5kIHRpZGllZCB1cCBzb21lCi0gIGFuYWNocm9uaXNtcyBpbiB0aGUgY29kZSB3aGljaCB3ZXJlIGEgcmVsaWMgb2YgMS41LjIgY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjNzA4MjogV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UKLSAgdG8gbG9vayBmb3IgaXQgaXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCi0KLS0gTWFrZSB0b2tlbml6ZS5kZXRlY3RfY29kaW5nKCkgbm9ybWFsaXplIHV0Zi04IGFuZCBpc28tODg1OS0xIHZhcmlhbnRzIGxpa2UgdGhlCi0gIGJ1aWx0aW4gdG9rZW5pemVyLgotCi0tIElzc3VlICM3MDQ4OiBGb3JjZSBEZWNpbWFsLmxvZ2IgdG8gcm91bmQgaXRzIHJlc3VsdCB3aGVuIHRoYXQgcmVzdWx0IGlzIHRvbwotICBsYXJnZSB0byBmaXQgaW4gdGhlIGN1cnJlbnQgcHJlY2lzaW9uLgotCi0tIElzc3VlICM2MjM2LCAjNjM0ODogRml4IHZhcmlvdXMgZmFpbHVyZXMgaW4gdGhlIEkvTyBsaWJyYXJ5IHVuZGVyIEFJWCBhbmQKLSAgb3RoZXIgcGxhdGZvcm1zLCB3aGVuIHVzaW5nIGEgbm9uLWdjYyBjb21waWxlci4gUGF0Y2ggYnkgRGVyayBEcnVra2VyLgotCi0tIElzc3VlICM0NjA2OiBQYXNzaW5nICdOb25lJyBpZiBjdHlwZXMgYXJndHlwZSBpcyBzZXQgdG8gUE9JTlRFUiguLi4pICBkb2VzIG5vdwotICBhbHdheXMgcmVzdWx0IGluIE5VTEwuCi0KLS0gSXNzdWUgIzUwNDI6IFN0cnVjdHVyZSBzdWItc3ViY2xhc3MgZG9lcyBub3cgaW5pdGlhbGl6ZSBjb3JyZWN0bHkgd2l0aCBiYXNlCi0gIGNsYXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICM2ODgyOiBJbXBvcnQgdXVpZCBjcmVhdGVzIHpvbWJpZXMgcHJvY2Vzc2VzLgotCi0tIElzc3VlICM2NjM1OiBGaXggcHJvZmlsZXIgcHJpbnRpbmcgdXNhZ2UgbWVzc2FnZS4KLQotLSBJc3N1ZSAjNjg1NjogQWRkIGEgZmlsdGVyIGtleXdvcmQgYXJndW1lbnQgdG8gVGFyRmlsZS5hZGQoKS4KLQotLSBJc3N1ZSAjNjg4ODogcGRiJ3MgYWxpYXMgY29tbWFuZCB3YXMgYnJva2VuIHdoZW4gbm8gYXJndW1lbnRzIHdlcmUgZ2l2ZW4uCi0KLS0gSXNzdWUgIzY4NTc6IERlZmF1bHQgZm9ybWF0KCkgYWxpZ25tZW50IHNob3VsZCBiZSAnPicgZm9yIERlY2ltYWwgaW5zdGFuY2VzLgotCi0tIElzc3VlICM2Nzk1OiBpbnQoRGVjaW1hbCgnbmFuJykpIG5vdyByYWlzZXMgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZwotICBOYU4gb3IgcmFpc2luZyBJbnZhbGlkQ29udGV4dC4gIEFsc28sIGZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4KLSAgbG9uZyhEZWNpbWFsKCduYW4nKSkuCi0KLS0gSXNzdWUgIzY4NTA6IEZpeCBidWcgaW4gRGVjaW1hbC5fcGFyc2VfZm9ybWF0X3NwZWNpZmllciBmb3IgZm9ybWF0cyB3aXRoIG5vCi0gIHR5cGUgc3BlY2lmaWVyLgotCi0tIElzc3VlICM2MjM5OiBjdHlwZXMuY19jaGFyX3AgcmV0dXJuIHZhbHVlIG11c3QgcmV0dXJuIGJ5dGVzLgotCi0tIElzc3VlICM2ODM4OiBVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseQotICBjb25jYXRlbmF0aW5nIHN0cmluZ3MgaW4gaHR0cC5jbGllbnQncyBIVFRQUmVzcG9uc2UuX3JlYWRfY2h1bmtlZCBwcm92aWRpbmcgYQotICBzaWduaWZpY2FudCBzcGVlZCBpbmNyZWFzZSB3aGVuIGRvd25sb2FkaW5nIGxhcmdlIGZpbGVzIHNlcnZlbmQgd2l0aCBhCi0gIFRyYW5zZmVyLUVuY29kaW5nIG9mICdjaHVua2VkJy4KLQotLSBUcnlpbmcgdG8gaW1wb3J0IGEgc3VibW9kdWxlIGZyb20gYSBtb2R1bGUgdGhhdCBpcyBub3QgYSBwYWNrYWdlLCBJbXBvcnRFcnJvcgotICBzaG91bGQgYmUgcmFpc2VkLCBub3QgQXR0cmlidXRlRXJyb3IuCi0KLS0gV2hlbiB0aGUgZ2xvYmFscyBwYXN0IHRvIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgaGFzIF9fcGFja2FnZV9fIHNldCB0byBOb25lLAotICBmYWxsIGJhY2sgdG8gY29tcHV0aW5nIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlIGluc3RlYWQgb2YgZ2l2aW5nIHVwLgotCi0tIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdGhlIG5hbWUgb2YgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgZm9yCi0gIGltcG9ydGxpYi5fX2ltcG9ydF9fIGlzIG5vdCBhIHN0cmluZyAod2FzIHJhaXNpbmcgYW4gQXR0cmlidXRlRXJyb3IgYmVmb3JlKS4KLQotLSBBbGxvdyB0aGUgZnJvbWxpc3QgcGFzc2VkIGludG8gaW1wb3J0bGliLl9faW1wb3J0X18gdG8gYmUgYW55IGl0ZXJhYmxlLgotCi0tIEhhdmUgaW1wb3J0bGliIHJhaXNlIEltcG9ydEVycm9yIGlmIE5vbmUgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMuCi0KLS0gSXNzdWUgIzYwNTQ6IERvIG5vdCBub3JtYWxpemUgc3RvcmVkIHBhdGhuYW1lcyBpbiB0YXJmaWxlLgotCi0tIElzc3VlICM2Nzk0OiBGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4KLSAgcGF5bG9hZHMgYXJlIG5vdyBvcmRlcmVkIGJ5IGludGVnZXIgdmFsdWUgcmF0aGVyIHRoYW4gbGV4aWNvZ3JhcGhpY2FsbHkuCi0KLS0gSXNzdWUgIzEzNTY5Njk6IEFkZCBtaXNzaW5nIGluZm8gbWV0aG9kcyBpbiB0aXguSExpc3QuCi0KLS0gSXNzdWUgIzE1MjI1ODc6IE5ldyBjb25zdGFudHMgYW5kIG1ldGhvZHMgZm9yIHRoZSB0aXguR3JpZCB3aWRnZXQuCi0KLS0gSXNzdWUgIzEyNTA0Njk6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRpeC5QYW5lZFdpbmRvdy5wYW5lcy4KLQotLSBJc3N1ZSAjMTExOTY3MzogRG8gbm90IG92ZXJyaWRlIHRraW50ZXIuVGV4dCBtZXRob2RzIHdoZW4gY3JlYXRpbmcgYQotICBTY3JvbGxlZFRleHQuCi0KLS0gSXNzdWUgIzY2NjU6IEZpeCBmbm1hdGNoIHRvIHByb3Blcmx5IG1hdGNoIGZpbGVuYW1lcyB3aXRoIG5ld2xpbmVzIGluIHRoZW0uCi0KLS0gSXNzdWUgIzExMzU6IEFkZCB0aGUgWFZpZXcgYW5kIFlWaWV3IG1peC1pbnMgdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIHh2aWV3KgotICBhbmQgeXZpZXcqIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzY2Mjk6IEZpeCBhIGRhdGEgY29ycnVwdGlvbiBpc3N1ZSBpbiB0aGUgbmV3IEkvTyBsaWJyYXJ5LCB3aGljaCBjb3VsZAotICBvY2N1ciB3aGVuIHdyaXRpbmcgdG8gYSBCdWZmZXJlZFJhbmRvbSBvYmplY3QgKGUuZy4gYSBmaWxlIG9wZW5lZCBpbiAicmIrIiBvcgotICAid2IrIiBtb2RlKSBhZnRlciBoYXZpbmcgYnVmZmVyZWQgYSBjZXJ0YWluIGFtb3VudCBvZiBkYXRhIGZvciByZWFkaW5nLiBUaGlzCi0gIGJ1ZyB3YXMgbm90IHByZXNlbnQgaW4gdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICM2NjIyOiBGaXggImxvY2FsIHZhcmlhYmxlICdzZWNyZXQnIHJlZmVyZW5jZWQgYmVmb3JlIGFzc2lnbm1lbnQiIGJ1ZyBpbgotICBQT1AzLmFwb3AuCi0KLS0gSXNzdWUgIzI3MTU6IFJlbW92ZSByZW1uYW50cyBvZiBDYXJib24uRmlsZSBmcm9tIGJpbmhleCBtb2R1bGUuCi0KLS0gSXNzdWUgIzY1OTU6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgYXJiaXRyYXJ5IFVuaWNvZGUgZGVjaW1hbAotICBkaWdpdHMgaW4gaW5wdXQsIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBzdGFuZGFyZC4gIFByZXZpb3VzbHkgaXQgd2FzIHJlc3RyaWN0ZWQKLSAgdG8gYWNjZXB0aW5nIFswLTldLgotCi0tIElzc3VlICM2MTA2OiB0ZWxuZXRsaWIuVGVsbmV0LnByb2Nlc3NfcmF3cSBkb2Vzbid0IGhhbmRsZSBkZWZhdWx0IFdJTEwvV09OVAotICBETy9ET05UIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTQyNDE1MjogRml4IGZvciBodHRwLmNsaWVudCwgdXJsbGliLnJlcXVlc3QgdG8gc3VwcG9ydCBTU0wgd2hpbGUKLSAgd29ya2luZyB0aHJvdWdoIHByb3h5LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0b3BoZXIgTGksIGNoYW5nZXMgbWFkZSBieQotICBTZW50aGlsIEt1bWFyYW4uCi0KLS0gQWRkIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyIHRvIHJlcHJlc2VudCB0aGUgUEVQIDMwMiBwcm90b2NvbCBmb3IKLSAgbG9hZGVycyB0aGF0IGFsbG93IGZvciBtb2R1bGVzIHRvIGJlIGV4ZWN1dGVkLiBCb3RoIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgYW5kCi0gIFB5UHljTG9hZGVyIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzIGFuZCBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBpbiByZWxhdGlvbiB0bwotICBvdGhlciBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBBQkNzLgotCi0tIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgZGlkIG5vdCBpbmhlcml0IGZyb20gaW1wb3J0bGliLmFiYy5SZXNvdXJjZUxvYWRlciBsaWtlCi0gIHRoZSBkb2N1bWVudGF0aW9uIHNhaWQgaXQgZGlkIGV2ZW4gdGhvdWdoIHRoZSBjb2RlIGluIFB5TG9hZGVyIHJlbGllZCBvbiB0aGUKLSAgYWJzdHJhY3QgbWV0aG9kIHJlcXVpcmVkIGJ5IFJlc291cmNlTG9hZGVyLgotCi0tIElzc3VlICM2NDMxOiBNYWtlIEZyYWN0aW9uIHR5cGUgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4gaXQgZG9lc24ndCBrbm93IGhvdwotICB0byBoYW5kbGUgYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nCi0gIG9mIGluZmluaXRpZXMgYW5kIG5hbnMgZm9yIGNvbXBhcmlzb25zIHdpdGggZmxvYXQuCi0KLS0gSXNzdWUgIzY0MTU6IEZpeGVkIHdhcm5pbmdzLndhcm4gc2VnZmF1bHQgb24gYmFkIGZvcm1hdHRlZCBzdHJpbmcuCi0KLS0gSXNzdWUgIzYzNTg6IFRoZSBleGl0IHN0YXR1cyBvZiBhIGNvbW1hbmQgc3RhcnRlZCB3aXRoIG9zLnBvcGVuKCkgd2FzIHJlcG9ydGVkCi0gIGRpZmZlcmVudGx5IHRoYW4gaXQgZGlkIHdpdGggcHl0aG9uIDIueC4KLQotLSBJc3N1ZSAjNjMyMzogVGhlIHBkYiBkZWJ1Z2dlciBkaWQgbm90IGV4aXQgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHdpdGggYSBzeW50YXgKLSAgZXJyb3IuCi0KLS0gSXNzdWUgIzMzOTI6IFRoZSBzdWJwcm9jZXNzIGNvbW11bmljYXRlKCkgbWV0aG9kIG5vIGxvbmdlciBmYWlscyBpbiBzZWxlY3QoKQotICB3aGVuIGZpbGUgZGVzY3JpcHRvcnMgYXJlIGxhcmdlOyBjb21tdW5pY2F0ZSgpIG5vdyB1c2VzIHBvbGwoKSB3aGVuIHBvc3NpYmxlLgotCi0tIElzc3VlICM2MzY5OiBGaXggYW4gUkxFIGRlY29tcHJlc3Npb24gYnVnIGluIHRoZSBiaW5oZXggbW9kdWxlLgotCi0tIElzc3VlICM2MzQ0OiBGaXhlZCBhIGNyYXNoIG9mIG1tYXAucmVhZCgpIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgYXJndW1lbnQuCi0KLS0gVGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gc3RyaW5nLm1ha2V0cmFucyBoYXMgYmVlbiByZW1vdmVkLgotCi0tIElzc3VlICM0MDA1OiBGaXhlZCBhIGNyYXNoIG9mIHB5ZG9jIHdoZW4gdGhlcmUgd2FzIGEgemlwIGZpbGUgcHJlc2VudCBpbgotICBzeXMucGF0aC4KLQotLSBJc3N1ZSAjNjIxODogaW8uU3RyaW5nSU8gYW5kIGlvLkJ5dGVzSU8gaW5zdGFuY2VzIGFyZSBub3cgcGlja2xhYmxlLgotCi0tIFRoZSBvcy5nZXRfZXhlY19wYXRoKCkgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZQotICBzZWFyY2hlZCBmb3IgYW4gZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyBhIHN1YnByb2Nlc3Mgd2FzIGFkZGVkLgotCi0tIElzc3VlICM3NDgxOiBXaGVuIGEgdGhyZWFkaW5nLlRocmVhZCBmYWlsZWQgdG8gc3RhcnQgaXQgd291bGQgbGVhdmUgdGhlCi0gIGluc3RhbmNlIHN0dWNrIGluIGluaXRpYWwgc3RhdGUgYW5kIHByZXNlbnQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpLgotCi0tIElzc3VlICMxMDY4MjY4OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGhhbmRsZXMgRUlOVFIgaW4gaW50ZXJuYWwgb3Mud2FpdHBpZAotICBhbmQgb3MucmVhZCBzeXN0ZW0gY2FsbHMgd2hlcmUgYXBwcm9wcmlhdGUuCi0KLS0gSXNzdWUgIzY3Mjk6IEFkZGVkIGN0eXBlcy5jX3NzaXplX3QgdG8gcmVwcmVzZW50IHNzaXplX3QuCi0KLS0gSXNzdWUgIzYyNDc6IFRoZSBhcmdwYXJzZSBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzgyMzU6IF9zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcyBhIHNvY2tldAotICBvcHRpb24gYXZhaWxhYmxlIG9uIEZyZWVCU0QgNy4xIGFuZCBuZXdlci4KLQotLSBJc3N1ZSAjOTMxNTogRml4IGZvciB0aGUgdHJhY2UgbW9kdWxlIHRvIHJlY29yZCBjb3JyZWN0IGNsYXNzIG5hbWUKLSAgZm9yIHRyYWNpbmcgbWV0aG9kcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzk5NTk6IFR3ZWFrIGZvcm11bGEgdXNlZCBmb3IgY29tcHV0aW5nIG1hdGgubG9nIG9mIGFuIGludGVnZXIsCi0gIG1ha2luZyBpdCBtYXJnaW5hbGx5IG1vcmUgYWNjdXJhdGUgZm9yIGV4YWN0IHBvd2VycyBvZiAyLgotCi0tIElzc3VlICM5NDIyOiBGaXggbWVtb3J5IGxlYWsgd2hlbiByZS1pbml0aWFsaXppbmcgYSBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KLQotLSBJc3N1ZSAjNzkwMDogVGhlIGdldGdyb3VwcygyKSBzeXN0ZW0gY2FsbCBvbiBNYWNPU1ggYmVoYXZlcyByYXRoZXIgb2RkbHkKLSAgY29tcGFyZWQgdG8gb3RoZXIgdW5peCBzeXN0ZW1zLiBJbiBwYXJ0aWN1bGFyLCBvcy5nZXRncm91cHMoKSBkb2VzIG5vdCByZWZsZWN0Ci0gIGFueSBjaGFuZ2VzIG1hZGUgdXNpbmcgb3Muc2V0Z3JvdXBzKCkgYnV0IGJhc2ljbHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKLSAgaW5mb3JtYXRpb24gYXMgdGhlIGlkIGNvbW1hbmQuIG9zLmdldGdyb3VwcygpIGNhbiBub3cgcmV0dXJuIG1vcmUgdGhhbiAxNgotICBncm91cHMgb24gTWFjT1NYLgotCi0tIElzc3VlICM2MDk1OiBNYWtlIGRpcmVjdG9yeSBhcmd1bWVudCB0byBvcy5saXN0ZGlyIG9wdGlvbmFsLgotCi0tIElzc3VlICM5Mjc3OiBGaXggYnVnIGluIHN0cnVjdC5wYWNrIGZvciBib29scyBpbiBzdGFuZGFyZCBtb2RlIChlLmcuLAotICBzdHJ1Y3QucGFjaygnPj8nKSk6IGlmIGNvbnZlcnNpb24gdG8gYm9vbCByYWlzZWQgYW4gZXhjZXB0aW9uIHRoZW4gdGhhdAotICBleGNlcHRpb24gd2Fzbid0IHByb3Blcmx5IHByb3BhZ2F0ZWQgb24gbWFjaGluZXMgd2hlcmUgY2hhciBpcyB1bnNpZ25lZC4KLQotLSBJc3N1ZSAjNTE4MDogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQgbG9hZGluZyAyLnggcGlja2xlcyBpbiAzLnggcHl0aG9uIHdoZW4KLSAgdGhleSBjb250YWluIGluc3RhbmNlcyBvZiBvbGQtc3R5bGUgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjOTE2NTogQWRkIG5ldyBmdW5jdGlvbnMgbWF0aC5pc2Zpbml0ZSBhbmQgY21hdGguaXNmaW5pdGUsIHRvIGFjY29tcGFueQotICBleGlzdGluZyBpc2luZiBhbmQgaXNuYW4gZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNTc4MjY5OiBJbXBsZW1lbnQgb3Muc3ltbGluayBmb3IgV2luZG93cyA2LjArLiAgUGF0Y2ggYnkgSmFzb24KLSAgUi4gQ29vbWJzLgotCi0tIEluIHN0cnVjdC5wYWNrLCBjb3JyZWN0bHkgcHJvcG9nYXRlIGV4Y2VwdGlvbnMgZnJvbSBjb21wdXRpbmcgdGhlIHRydXRoIG9mIGFuCi0gIG9iamVjdCBpbiB0aGUgJz8nIGZvcm1hdC4KLQotLSBJc3N1ZSAjOTAwMDogZGF0ZXRpbWUudGltZXpvbmUgb2JqZWN0cyBub3cgaGF2ZSBldmFsLWZyaWVuZGx5IHJlcHIuCi0KLS0gSW4gdGhlIG1hdGggbW9kdWxlLCBjb3JyZWN0bHkgbG9va3VwIF9fdHJ1bmNfXywgX19jZWlsX18sIGFuZCBfX2Zsb29yX18gYXMKLSAgc3BlY2lhbCBtZXRob2RzLgotCi0tIElzc3VlICM5MDA1OiBQcmV2ZW50IHV0Y3RpbWV0dXBsZSgpIGZyb20gcHJvZHVjaW5nIHllYXIgMCBvciB5ZWFyIDEwLDAwMC4KLSAgUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIHRpbWV6b25lIGFkanVzdG1lbnQgaW4gdXRjdGltZXR1cGxlKCkgY291bGQgcHJvZHVjZQotICB0bV95ZWFyIHZhbHVlIG9mIDAgb3IgMTAsMDAwLiAgTm93IGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGluIHRoZXNlIGVkZ2UKLSAgY2FzZXMuCi0KLS0gSXNzdWUgIzY2NDE6IFRoZSBgYGRhdGV0aW1lLnN0cnB0aW1lYGAgbWV0aG9kIG5vdyBzdXBwb3J0cyB0aGUgYGAlemBgCi0gIGRpcmVjdGl2ZS4gIFdoZW4gdGhlIGBgJXpgYCBkaXJlY3RpdmUgaXMgcHJlc2VudCBpbiB0aGUgZm9ybWF0IHN0cmluZywgYW4KLSAgYXdhcmUgYGBkYXRldGltZWBgIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIGBgdHppbmZvYGAgYm91bmQgdG8gYQotICBgYGRhdGV0aW1lLnRpbWV6b25lYGAgaW5zdGFuY2UgY29uc3RydWN0ZWQgZnJvbSB0aGUgcGFyc2VkIG9mZnNldC4gIElmIGJvdGgKLSAgYGAlemBgIGFuZCBgYCVaYGAgYXJlIHByZXNlbnQsIHRoZSBkYXRhIGluIGBgJVpgYCBmaWVsZCBpcyB1c2VkIGZvciB0aW1lem9uZQotICBuYW1lLCBidXQgYGAlWmBgIGRhdGEgd2l0aG91dCBgYCV6YGAgaXMgZGlzY2FyZGVkLgotCi0tIElzc3VlICM1MDk0OiBUaGUgYGBkYXRldGltZWBgIG1vZHVsZSBub3cgaGFzIGEgc2ltcGxlIGNvbmNyZXRlIGNsYXNzCi0gIGltcGxlbWVudGluZyBgYGRhdGV0aW1lLnR6aW5mb2BgIGludGVyZmFjZS4gIEluc3RhbmNlcyBvZiB0aGUgbmV3IGNsYXNzLAotICBgYGRhdGV0aW1lLnRpbWV6b25lYGAsIHJldHVybiBmaXhlZCBuYW1lIGFuZCBVVEMgb2Zmc2V0IGZyb20gdGhlaXIKLSAgYGB0em5hbWUoZHQpYGAgYW5kIGBgdXRjb2Zmc2V0KGR0KWBgIG1ldGhvZHMuICBUaGUgYGBkc3QoZHQpYGAgbWV0aG9kIGFsd2F5cwotICByZXR1cm5zIGBgTm9uZWBgLiAgQSBjbGFzcyBhdHRyaWJ1dGUsIGBgdXRjYGAgY29udGFpbnMgYW4gaW5zdGFuY2UKLSAgcmVwcmVzZW50aW5nIHRoZSBVVEMgdGltZXpvbmUuICBPcmlnaW5hbCBwYXRjaCBieSBSYWZlIEthcGxhbi4KLQotLSBJc3N1ZSAjODk3MzogQWRkIF9fYWxsX18gdG8gc3RydWN0IG1vZHVsZTsgdGhpcyBlbnN1cmVzIHRoYXQgaGVscChzdHJ1Y3QpCi0gIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzdHJ1Y3QuU3RydWN0IGNsYXNzLgotCi0tIElzc3VlICMzMTI5OiBUcmFpbGluZyBkaWdpdHMgaW4gc3RydWN0IGZvcm1hdCBzdHJpbmcgYXJlIG5vIGxvbmdlciBpZ25vcmVkLgotICBGb3IgZXhhbXBsZSwgIjEiIG9yICJpbGliMTIzIiBhcmUgbm93IGludmFsaWQgZm9ybWF0cyBhbmQgY2F1c2UKLSAgYGBzdHJ1Y3QuZXJyb3JgYCB0byBiZSByYWlzZWQuICBQYXRjaCBieSBDYWxlYiBEZXZlcmF1eC4KLQotLSBJc3N1ZSAjNzM4NDogSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsIHRoZQotICBjdXJzZXMgbW9kdWxlIG11c3QgYmUgbGlua2VkIGFnYWluc3QgbmN1cnNlcyBhcyB3ZWxsLiBPdGhlcndpc2UgaXQgaXMgbm90IHNhZmUKLSAgdG8gbG9hZCBib3RoIHRoZSByZWFkbGluZSBhbmQgY3Vyc2VzIG1vZHVsZXMgaW4gYW4gYXBwbGljYXRpb24uCi0KLS0gSXNzdWUgIzI4MTA6IEZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEsCi0gIHJlcXVpcmluZyBhIHJlLXRyeSBpbiBvcmRlciB0byBnZXQgdGhlIGNvbXBsZXRlIHJlc3VsdC4KLQotLSBJc3N1ZSAjODY5MjogT3B0aW1pemUgbWF0aC5mYWN0b3JpYWw6IHJlcGxhY2UgdGhlIHByZXZpb3VzIG5haXZlIGFsZ29yaXRobQotICB3aXRoIGFuIGltcHJvdmVkICdiaW5hcnktc3BsaXQnIGFsZ29yaXRobSB0aGF0IHVzZXMgZmV3ZXIgbXVsdGlwbGljYXRpb25zIGFuZAotICBhbGxvd3MgbWFueSBvZiB0aGUgbXVsdGlwbGljYXRpb25zIHRvIGJlIHBlcmZvcm1lZCB1c2luZyBwbGFpbiBDIGludGVnZXIKLSAgYXJpdGhtZXRpYyBpbnN0ZWFkIG9mIFB5TG9uZyBhcml0aG1ldGljLiAgQWxzbyB1c2VzIGEgbG9va3VwIHRhYmxlIGZvciBzbWFsbAotICBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzg2NzQ6IEZpeGVkIGEgbnVtYmVyIG9mIGluY29ycmVjdCBvciB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nCi0gIG92ZXJmbG93IGNoZWNrcyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCi0KLS0gSXNzdWUgIzg2NDQ6IFRoZSBhY2N1cmFjeSBvZiB0ZC50b3RhbF9zZWNvbmRzKCkgaGFzIGJlZW4gaW1wcm92ZWQgKGJ5Ci0gIGNhbGN1bGF0aW5nIHdpdGggaW50ZWdlciBhcml0aG1ldGljIGluc3RlYWQgb2YgZmxvYXQgYXJpdGhtZXRpYyBpbnRlcm5hbGx5KToKLSAgdGhlIHJlc3VsdCBpcyBub3cgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBhbmQgaXMgZXF1aXZhbGVudCB0byBgYHRkIC8KLSAgdGltZWRlbHRhKHNlY29uZHM9MSlgYC4KLQotLSBJc3N1ZSAjMjcwNjogQWxsb3cgZGl2aXNpb24gb2YgYSB0aW1lZGVsdGEgYnkgYW5vdGhlciB0aW1lZGVsdGE6IHRpbWVkZWx0YSAvCi0gIHRpbWVkZWx0YSwgdGltZWRlbHRhICUgdGltZWRlbHRhLCB0aW1lZGVsdGEgLy8gdGltZWRlbHRhIGFuZCBkaXZtb2QodGltZWRlbHRhLAotICB0aW1lZGVsdGEpIGFyZSBhbGwgc3VwcG9ydGVkLgotCi0tIElzc3VlICM4MzE0OiBGaXggdW5zaWduZWQgbG9uZyBsb25nIGJ1ZyBpbiBsaWJmZmkgb24gU3BhcmMgdjguCi0KLS0gSXNzdWUgIzgzMDA6IFdoZW4gcGFzc2luZyBhIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IHRvIHN0cnVjdC5wYWNrIHdpdGggYW55Ci0gIGludGVnZXIgZm9ybWF0IGNvZGUsIHN0cnVjdC5wYWNrIGZpcnN0IGF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIG5vbi1pbnRlZ2VyCi0gIHVzaW5nIGl0cyBfX2luZGV4X18gbWV0aG9kLiAgSWYgdGhhdCBtZXRob2QgaXMgbm9uLWV4aXN0ZW50IG9yIHJhaXNlcwotICBUeXBlRXJyb3IgaXQgZ29lcyBvbiB0byB0cnkgdGhlIF9faW50X18gbWV0aG9kLCBhcyBkZXNjcmliZWQgYmVsb3cuCi0KLS0gSXNzdWUgIzgxNDI6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC45IHJlbGVhc2UuCi0KLS0gSXNzdWUgIzY5NDk6IEFsbG93IHRoZSBfZGJtIGV4dGVuc2lvbiB0byBiZSBidWlsdCB3aXRoIGRiIDQuOC54LgotCi0tIElzc3VlICM2NTQ0OiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IKLSAgaGFuZGxpbmcuCi0KLS0gU3RvcCBwcm92aWRpbmcgY3J0YXNzZW0uaCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLCBhcwotICBtc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KLQotLSBJc3N1ZSAjNjUwODogQWRkIHBvc2l4LntnZXRyZXN1aWQsZ2V0cmVzZ2lkLHNldHJlc3VpZCxzZXRyZXNnaWR9LgotCi0tIElzc3VlICM3MDc4OiBTZXQgc3RydWN0Ll9fZG9jX18gZnJvbSBfc3RydWN0Ll9fZG9jX18uCi0KLS0gSXNzdWUgIzMzNjY6IEFkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KLQotLSBJc3N1ZSAjNjg3NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGxpbmsgdGhlIHJlYWRsaW5lIGV4dGVuc2lvbiB0byB0aGUgbGliZWRpdAotICByZWFkbGluZSBlbXVsYXRpb24gb24gT1NYIDEwLjUgb3IgbGF0ZXIuCi0KLS0gSXNzdWUgIzY4NDg6IEZpeCBjdXJzZXMgbW9kdWxlIGJ1aWxkIGZhaWx1cmUgb24gT1MgWCAxMC42LgotCi0tIEZpeCBhIHNlZ2ZhdWx0IHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGV4cGF0IHdpdGggc3BlY2lhbGx5IGZvcm1lZCBpbnB1dC4KLQotLSBJc3N1ZSAjNjU2MTogJ1xkJyBpbiBhIHJlZ2V4IG5vdyBtYXRjaGVzIG9ubHkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgY2F0ZWdvcnkKLSAgJ05kJyAoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAotICBjYXRlZ29yeSAnTm8nLgotCi0tIElzc3VlICM0NTA5OiBBcnJheSBvYmplY3RzIGFyZSBubyBsb25nZXIgbW9kaWZpZWQgYWZ0ZXIgYW4gb3BlcmF0aW9uIGZhaWxpbmcKLSAgZHVlIHRvIHRoZSByZXNpemUgcmVzdHJpY3Rpb24gaW4tcGxhY2Ugd2hlbiB0aGUgb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzLgotCi0tIElzc3VlICMyMzg5OiBBcnJheSBvYmplY3RzIGFyZSBub3cgcGlja2xlZCBpbiBhIHBvcnRhYmxlIG1hbm5lci4KLQotLSBFeHBhdDogRml4IERvUyB2aWEgWE1MIGRvY3VtZW50IHdpdGggbWFsZm9ybWVkIFVURi04IHNlcXVlbmNlcwotICAoQ1ZFXzIwMDlfMzU2MCkuCi0KLS0gSXNzdWUgIzcyNDI6IE9uIFNvbGFyaXMgOSBhbmQgZWFybGllciBjYWxsaW5nIG9zLmZvcmsoKSBmcm9tIHdpdGhpbiBhIHRocmVhZAotICBjb3VsZCByYWlzZSBhbiBpbmNvcnJlY3QgUnVudGltZUVycm9yIGFib3V0IG5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jay4gIFRoZQotICBpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgotCi0tIElzc3VlICM3OTk5OiBvcy5zZXRyZXVpZCgpIGFuZCBvcy5zZXRyZWdpZCgpIHdvdWxkIHJlZnVzZSB0byBhY2NlcHQgYSAtMQotICBwYXJhbWV0ZXIgb24gc29tZSBwbGF0Zm9ybXMgc3VjaCBhcyBPUyBYLgotCi0tIEJ1aWxkIHRoZSBvc3NhdWRpbyBleHRlbnNpb24gb24gR05VL2tGcmVlQlNELgotCi0tIElzc3VlICM3MzQ3OiB3aW5yZWc6IEFkZCBDcmVhdGVLZXlFeCBhbmQgRGVsZXRlS2V5RXgsIGFzIHdlbGwgYXMgZml4IGEgYnVnIGluCi0gIHRoZSByZXR1cm4gdmFsdWUgb2YgUXVlcnlSZWZsZWN0aW9uS2V5LgotCi0tIElzc3VlICM3NTY3OiBQeUN1cnNlc19zZXR1cHRlcm06IERvbid0IGNhbGwgYGBzZXR1cHRlcm1gYCB0d2ljZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gVXNlIE9wZW5TU0wgMS4wLjBhIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzkyODA6IE1ha2Ugc2hhcmVkaW5zdGFsbCBkZXBlbmQgb24gc2hhcmVkbW9kcy4KLQotLSBJc3N1ZSAjOTE4OTogTWFrZSBhIHVzZXItc3BlY2lmaWVkIENGTEFHUywgQ1BQRkxBR1MsIG9yIExERkxBR1Mgc2V0dGluZwotICBvdmVycmlkZSB0aGUgY29uZmlndXJlIGFuZCBtYWtlZmlsZSBkZWZhdWx0cywgd2l0aG91dCBkZWxldGluZyBvcHRpb25zIHRoZQotICB1c2VyIGRpZG4ndCBpbnRlbmQgdG8gb3ZlcnJpZGUuICBEZXZlbG9wZXJzIHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5Ci0gIE9QVCBvciBFWFRSQV9DRkxBR1MsIGFsdGhvdWdoIHRob3NlIHZhcmlhYmxlcyBhcmUgc3RpbGwgcHJlc2VudCBmb3IKLSAgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjODg1NDogRml4IGZpbmRpbmcgVmlzdWFsIFN0dWRpbyAyMDA4IG9uIFdpbmRvd3MgeDY0LgotCi0tIElzc3VlICMxNzU5MTY5LCAjODg2NDogRHJvcCBfWE9QRU5fU09VUkNFIG9uIFNvbGFyaXMsIGRlZmluZSBpdCBmb3IKLSAgbXVsdGlwcm9jZXNzaW5nIG9ubHkuCi0KLS0gSXNzdWUgIzg2MjU6IFR1cm4gb2ZmIG9wdGltaXphdGlvbiBpbiAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgd2l0aCBnY2MuCi0gIChPcHRpbWl6YXRpb24gd2FzIHVuaW50ZW50aW9uYWxseSB0dXJuZWQgb24gaW4gZ2NjIC0td2l0aC1weWRlYnVnIGJ1aWxkcyBhcyBhCi0gIHJlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3Mgc3RyYW5nZSBjaG9pY2Ugb2YKLSAgZGVmYXVsdCBDRkxBR1MgcHJvZHVjZWQgYnkgQUNfUFJPR19DQyBmb3IgZ2NjLikKLQotLSBJc3N1ZSAjMzY0NjogSXQgaXMgbm93IGVhc2lseSBwb3NzaWJsZSB0byBpbnN0YWxsIGEgUHl0aG9uIGZyYW1ld29yayBpbnRvIHlvdXIKLSAgaG9tZSBkaXJlY3Rvcnkgb24gTWFjT1NYLCBzZWUgTWFjL1JFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjMzkyODogb3MubWtub2QoKSBub3cgYXZhaWxhYmxlIGluIFNvbGFyaXMsIGFsc28uCi0KLS0gSXNzdWUgIzMzMjY6IEJ1aWxkIFB5dGhvbiB3aXRob3V0IC1mbm8tc3RyaWN0LWFsaWFzaW5nIHdoZW4gdGhlIGdjYyBkb2VzIG5vdAotICBnaXZlIGZhbHNlIHdhcm5pbmdzLgotCi0tIElzc3VlICMxNjI4NDg0OiBUaGUgTWFrZWZpbGUgZG9lc24ndCBpZ25vcmUgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICBhbnltb3JlLiAgSXQgYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYQotICBzaGFyZWQgbGlicmFyeS4KLQotLSBJc3N1ZSAjNjcxNjogUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4gIEV4Y2x1ZGUgMnRvMwotICB0ZXN0cyBmcm9tIGNvbXBpbGVhbGwuCi0KLS0gSXNzdWUgIzM5MjAsICM3OTAzOiBEZWZpbmUgX0JTRF9TT1VSQ0Ugb24gT3BlbkJTRCA0LjQgdGhyb3VnaCA0LjkuCi0KLS0gSXNzdWUgIzc2MzI6IFdoZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUKLSAgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGluIGR0b2EuYyBhbmQgdXNlIFB5TWVtX01hbGxvYyBhbmQgUHlNZW1fRnJlZQotICBpbnN0ZWFkLiAgQWxzbyBkaXNhYmxlIGNhY2hpbmcgb2YgcG93ZXJzIG9mIDUuCi0KLS0gSXNzdWUgIzY0OTE6IEFsbG93IC0td2l0aC1kYm1saWJvcmRlciB0byBzcGVjaWZ5IHRoYXQgbm8gZGJtcyB3aWxsIGJlIGJ1aWx0LgotCi0tIElzc3VlICM2OTQzOiBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBsaWJmZmkgaGVhZGVycyB3aGVuIHRoZQotICAtLXdpdGgtc3lzdGVtLWZmaSBmbGFnIGlzIHVzZWQuCi0KLS0gSXNzdWUgIzc2MDk6IEFkZCBhIC0td2l0aC1zeXN0ZW0tZXhwYXQgb3B0aW9uIHRoYXQgY2F1c2VzIHRoZSBzeXN0ZW0ncyBleHBhdAotICBsaWJyYXJ5IHRvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQgd2l0aAotICBQeXRob24uCi0KLS0gSXNzdWUgIzc1ODk6IE9ubHkgYnVpbGQgdGhlIG5pcyBtb2R1bGUgd2hlbiB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZXMgYXJlCi0gIGZvdW5kLgotCi0tIFN3aXRjaCB0byBPcGVuU1NMIDAuOS44bCBhbmQgc3FsaXRlIDMuNi4yMSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM1NzkyOiBFeHRlbmQgdGhlIHNob3J0IGZsb2F0IHJlcHIgc3VwcG9ydCB0byB4ODYgc3lzdGVtcyB1c2luZwotICBpY2Mgb3Igc3VuY2MuCi0KLS0gSXNzdWUgIzY2MDM6IENoYW5nZSBSRUFEX1RJTUVTVEFNUCBtYWNybyBpbiBjZXZhbC5jIHNvIHRoYXQgaXQgY29tcGlsZXMKLSAgY29ycmVjdGx5IHVuZGVyIGdjYyBvbiB4ODYtNjQuICBUaGlzIGZpeGVzIGEgcmVwb3J0ZWQgcHJvYmxlbSB3aXRoIHRoZQotICAtLXdpdGgtdHNjIGJ1aWxkIG9uIHg4Ni02NC4KLQotLSBJc3N1ZSAjNjgwMjogRml4IGJ1aWxkIGlzc3VlcyBvbiBNYWNPU1ggMTAuNi4KLQotLSBJc3N1ZSAjNjI0NDogQWxsb3cgZGV0ZWN0X3RraW50ZXIgdG8gbG9vayBmb3IgVGNsL1RrIDguNi4KLQotLSBJc3N1ZSAjNDYwMTogJ21ha2UgaW5zdGFsbCcgZGlkIG5vdCBzZXQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIG9uCi0gIGRpcmVjdG9yaWVzLgotCi0tIElzc3VlICM1MzkwOiBBZGQgdW5pbnN0YWxsIGljb24gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciBmaWxlIGV4dGVuc2lvbnMgYXJlCi0gIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjNzU0MTogV2hlbiB1c2luZyBgYHB5dGhvbi1jb25maWdgYCB3aXRoIGEgZnJhbWV3b3JrIGluc3RhbGwgdGhlCi0gIGNvbXBpbGVyIG1pZ2h0IHVzZSB0aGUgd3JvbmcgbGlicmFyeS4KLQotLSBweXRob24tY29uZmlnIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBvcHRpb25zIG9uIHRoZSBzYW1lIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjODUwOTogRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KLQotLSBJc3N1ZSAjODUxMDogVXBkYXRlIHRvIGF1dG9jb25mMi42NS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5ODE3OiBBZGQgZXhwYXQgQ09QWUlORyBmaWxlOyBhZGQgZXhwYXQsIGxpYmZmaSBhbmQgZXhwYXQgbGljZW5zZXMKLSAgdG8gRG9jL2xpY2Vuc2UucnN0LgotCi0tIElzc3VlICM5NTI0OiBEb2N1bWVudCB0aGF0IHR3byBDVFJMKiBzaWduYWxzIGFyZSBtZWFudCBmb3IgdXNlIG9ubHkKLSAgd2l0aCBvcy5raWxsLgotCi0tIElzc3VlICM5MjU1OiBEb2N1bWVudCB0aGF0IHRoZSAndGVzdCcgcGFja2FnZSBpcyBtZWFudCBmb3IgaW50ZXJuYWwgUHl0aG9uIHVzZQotICBvbmx5LgotCi0tIEEgc21hbGwgV1NHSSBzZXJ2ZXIgd2FzIGFkZGVkIGFzIFRvb2xzL3NjcmlwdHMvc2VydmUucHksIGFuZCBpcyB1c2VkIHRvCi0gIGltcGxlbWVudCBhIGxvY2FsIGRvY3VtZW50YXRpb24gc2VydmVyIHZpYSAnbWFrZSBzZXJ2ZScgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCi0KLS0gVXBkYXRpbmcgYFVzaW5nIFB5dGhvbmAgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGRlc2NyaXB0aW9uIG9mIENQeXRob24ncyAtSgotICBhbmQgLVggb3B0aW9ucy4KLQotLSBEb2N1bWVudCB0aGF0IGltcG9ydGluZyBhIG1vZHVsZSB0aGF0IGhhcyBOb25lIGluIHN5cy5tb2R1bGVzIHRyaWdnZXJzIGFuCi0gIEltcG9ydEVycm9yLgotCi0tIElzc3VlICM2NTU2OiBGaXhlZCB0aGUgRGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9jYXRpb24gZXhwbGFuYXRpb24gZm9yCi0gIFdpbmRvd3MuCi0KLS0gVXBkYXRlIHB5dGhvbiBtYW51YWwgcGFnZSAob3B0aW9ucyAtQiwgLU8wLCAtcywgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KLQotLSBJc3N1ZSAjODkwOTogQWRkZWQgdGhlIHNpemUgb2YgdGhlIGJpdG1hcCB1c2VkIGluIHRoZSBpbnN0YWxsZXIgY3JlYXRlZCBieQotICBkaXN0dXRpbHMnIGJkaXN0X3dpbmluc3QuIFBhdGNoIGJ5IEFuYXRvbHkgVGVjaHRvbmlrLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjOTI1MTogdGVzdF90aHJlYWRlZF9pbXBvcnQgZGlkbid0IGZhaWwgd2hlbiBydW4gdGhyb3VnaCByZWdydGVzdCBpZiB0aGUKLSAgaW1wb3J0IGxvY2sgd2FzIGRpc2FibGVkLgotCi0tIElzc3VlICM4NjA1OiBTa2lwIHRlc3RfZ2RiIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMuCi0KLS0gSXNzdWUgIzc0NDk6IFNraXAgdGVzdF9zb2NrZXRzZXJ2ZXIgaWYgdGhyZWFkaW5nIHN1cHBvcnQgaXMgZGlzYWJsZWQuCi0KLS0gSXNzdWUgIzg2NzI6IEFkZCBhIHpsaWIgdGVzdCBlbnN1cmluZyB0aGF0IGFuIGluY29tcGxldGUgc3RyZWFtIGNhbiBiZSBoYW5kbGVkCi0gIGJ5IGEgZGVjb21wcmVzc29yIG9iamVjdCB3aXRob3V0IGVycm9ycyAoaXQgcmV0dXJucyBpbmNvbXBsZXRlIHVuY29tcHJlc3NlZAotICBkYXRhKS4KLQotLSBJc3N1ZSAjODUzMzogcmVncnRlc3QgdXNlcyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIgZm9yIHN0ZG91dCB0byBhdm9pZAotICBVbmljb2RlRW5jb2RlRXJyb3IgKHdyaXRlIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdG8gc3Rkb3V0IHVzaW5nIEFTQ0lJIGVuY29kaW5nKS4KLQotLSBJc3N1ZSAjODU3NjogUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZAotICB0ZXN0X211bHRpcHJvY2Vzc2luZy4gIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCi0KLS0gSXNzdWUgIzc0NDk6IEZpeCBtYW55IHRlc3RzIHRvIHN1cHBvcnQgUHl0aG9uIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkCi0gIHN1cHBvcnQuIFBhdGNoZXMgd3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgotCi0tIElzc3VlICM4MTA4OiB0ZXN0X2Z0cGxpYidzIG5vbi1ibG9ja2luZyBTU0wgc2VydmVyIG5vdyBoYXMgcHJvcGVyIGhhbmRsaW5nIG9mCi0gIFNTTCBzaHV0ZG93bnMuCi0KLS0gSXNzdWVzICM4Mjc5LCAjODMzMCwgIzg0MzcsICM4NDgwLCAjODQ5NTogRml4IHRlc3RfZ2RiIGZhaWx1cmVzLCBwYXRjaCB3cml0dGVuCi0gIGJ5IERhdmUgTWFsY29sbS4KLQotLSBJc3N1ZSAjMzg2NDogU2tpcCB0aHJlZSB0ZXN0X3NpZ25hbCB0ZXN0cyBvbiBmcmVlYnNkNiBiZWNhdXNlIHRoZXkgZmFpbCBpZiBhbnkKLSAgdGhyZWFkIHdhcyBwcmV2aW91c2x5IHN0YXJ0ZWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBhIHBsYXRmb3JtIGJ1Zy4KLQotLSBJc3N1ZSAjODE5MzogRml4IHRlc3RfemxpYiBmYWlsdXJlIHdpdGggemxpYiAxLjIuNC4KLQotLSBJc3N1ZSAjODI0ODogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBib29sIHR5cGUuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCi0KLS0gSXNzdWUgIzgyNjM6IE5vdyByZWdydGVzdC5weSB3aWxsIHJlcG9ydCBhIGZhaWx1cmUgaWYgaXQgcmVjZWl2ZXMgYQotICBLZXlib2FyZEludGVycnVwdCAoU0lHSU5UKS4KLQotLSBJc3N1ZSAjODE4MCBhbmQgIzgyMDc6IEZpeCB0ZXN0X3BlcDI3NyBvbiBPUyBYIGFuZCBhZGQgbW9yZSB0ZXN0cyBmb3Igc3BlY2lhbAotICBVbmljb2RlIG5vcm1hbGl6YXRpb24gY2FzZXMuCi0KLS0gSXNzdWUgIzc3ODM6IHRlc3Quc3VwcG9ydC5vcGVuX3VybHJlc291cmNlIGludmFsaWRhdGVzIHRoZSBvdXRkYXRlZCBmaWxlcyBmcm9tCi0gIHRoZSBsb2NhbCBjYWNoZS4KLQotLSBJc3N1ZSAjNzg0OTogTm93IHRoZSB1dGlsaXR5IGBgY2hlY2tfd2FybmluZ3NgYCB2ZXJpZmllcyBpZiB0aGUgd2FybmluZ3MgYXJlCi0gIGVmZmVjdGl2ZWx5IHJhaXNlZC4KLQotLSBUaGUgZm91ciBwYXRoIG1vZHVsZXMgKGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGgsIHBvc2l4cGF0aCkgc2hhcmUgYSBjb21tb24KLSAgVGVzdENhc2UgZm9yIHNvbWUgdGVzdHM6IHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdC4KLQotLSBQcmludCBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB3aGVuIHJ1bm5pbmcgdGhlIHdob2xlIHRlc3Qgc3VpdGUsIG9yIHVzaW5nIHRoZQotICAtLXZlcmJvc2UgZmxhZy4KLQotLSBJc3N1ZSAjNzY3Njc1OiBlbmFibGUgdGVzdF9wZXAyNzcgb24gUE9TSVggcGxhdGZvcm1zIHdpdGggVW5pY29kZS1mcmllbmRseQotICBmaWxlc3lzdGVtIGVuY29kaW5nLgotCi0tIElzc3VlICM2MjkyOiBmb3IgdGhlIG1vbWVudCBhdCBsZWFzdCwgdGhlIHRlc3Qgc3VpdGUgcnVucyBjbGVhbmx5IGlmIHB5dGhvbiBpcwotICBydW4gd2l0aCB0aGUgLU9PIGZsYWcuICBUZXN0cyByZXF1aXJpbmcgZG9jc3RyaW5ncyBhcmUgc2tpcHBlZC4KLQotLSBJc3N1ZSAjNzcxMjogdGVzdC5zdXBwb3J0IGdhaW5lZCBhIG5ldyBgdGVtcF9jd2RgIGNvbnRleHQgbWFuYWdlciB3aGljaCBpcyBub3cKLSAgYWxzbyB1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQotICBvcmlnaW5hbCBDV0QgaXMgc2F2ZWQgaW4gYHN1cHBvcnQuU0FWRURDV0RgLiAgVGhhbmtzIHRvIEZsb3JlbnQgWGljbHVuYSB3aG8KLSAgaGVscGVkIHdpdGggdGhlIHBhdGNoLgotCi0tIElzc3VlICM3OTI0OiBGaXggYW4gaW50ZXJtaXR0ZW50ICdYWFggdW5kZXRlY3RlZCBlcnJvcicgZmFpbHVyZSBpbiB0ZXN0X2NhcGkKLSAgKG9ubHkgc2VlbiBzbyBmYXIgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjdXJzZXMgbW9kdWxlIHdhc24ndCBidWlsdCksIGR1ZSB0bwotICBhbiB1bmNsZWFyZWQgZXhjZXB0aW9uLgotCi0tIElzc3VlICM3NzI4OiB0ZXN0X3RpbWVvdXQgd2FzIGNoYW5nZWQgdG8gdXNlIHN1cHBvcnQuYmluZF9wb3J0IGluc3RlYWQgb2YgYQotICBoYXJkIGNvZGVkIHBvcnQuCi0KLS0gSXNzdWUgIzczNzY6IEluc3RlYWQgb2YgcnVubmluZyBhIHNlbGYtdGVzdCAod2hpY2ggd2FzIGZhaWxpbmcpIHdoZW4gY2FsbGVkCi0gIHdpdGggbm8gYXJndW1lbnRzLCBkb2N0ZXN0LnB5IG5vdyBnaXZlcyBhIHVzYWdlIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzczOTY6IGZpeCByZWdydGVzdCAtcywgd2hpY2ggd2FzIGJyb2tlbiBieSB0aGUgLWogZW5oYW5jZW1lbnQuCi0KLS0gSXNzdWUgIzc0OTg6IHRlc3RfbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIHRlc3Quc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0Ci0gIGluc3RlYWQgb2YgYSBoYXJkY29kZWQgcG9ydCBudW1iZXIgaW4gdGVzdF9yYXBpZF9yZXN0YXJ0LgotCi0tIElzc3VlICM3NDMxOiBVc2UgVEVTVEZOIGluIHRlc3RfbGluZWNhY2hlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGNyZWF0ZSBhIGZpbGUKLSAgaW4gdGhlIExpYi90ZXN0IGRpcmVjdG9yeSwgd2hpY2ggbWlnaHQgYmUgcmVhZC1vbmx5IGZvciB0aGUgdXNlciBydW5uaW5nIHRoZQotICB0ZXN0cy4KLQotLSBJc3N1ZSAjNzMyNDogQWRkIGEgc2FuaXR5IGNoZWNrIHRvIHJlZ3J0ZXN0IGFyZ3VtZW50IHBhcnNpbmcgdG8gY2F0Y2ggdGhlIGNhc2UKLSAgb2YgYW4gb3B0aW9uIHdpdGggbm8gaGFuZGxlci4KLQotLSBJc3N1ZSAjNzMxMjogQWRkIGEgLUYgZmxhZyB0byBydW4gdGhlIHNlbGVjdGVkIHRlc3RzIGluIGEgbG9vcCB1bnRpbCBhIHRlc3QKLSAgZmFpbHMuICBDYW4gYmUgY29tYmluZWQgd2l0aCAtai4KLQotLSBJc3N1ZSAjNjU1MTogdGVzdF96aXBpbXBvcnQgY291bGQgaW1wb3J0IGFuZCB0aGVuIGRlc3Ryb3kgc29tZSBtb2R1bGVzIG9mIHRoZQotICBlbmNvZGluZ3MgcGFja2FnZSwgd2hpY2ggd291bGQgbWFrZSBvdGhlciB0ZXN0cyBmYWlsIGZ1cnRoZXIgZG93biB0aGUgcm9hZAotICBiZWNhdXNlIHRoZSBpbnRlcm5hbGx5IGNhY2hlZCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgd291bGQgcG9pbnQgdG8gZW1wdHkKLSAgZ2xvYmFsIHZhcmlhYmxlcy4KLQotLSBJc3N1ZSAjNzI5NTogRG8gbm90IHVzZSBhIGhhcmRjb2RlZCBmaWxlIG5hbWUgaW4gdGVzdF90YXJmaWxlLgotCi0tIElzc3VlICM3MjcwOiBBZGQgc29tZSBkZWRpY2F0ZWQgdW5pdCB0ZXN0cyBmb3IgbXVsdGktdGhyZWFkIHN5bmNocm9uaXphdGlvbgotICBwcmltaXRpdmVzIHN1Y2ggYXMgTG9jaywgUkxvY2ssIENvbmRpdGlvbiwgRXZlbnQgYW5kIFNlbWFwaG9yZS4KLQotLSBJc3N1ZSAjNzI0OCAocGFydCAyKTogVXNlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGltcG9ydGxpYiBzb3VyY2UKLSAgdGVzdHMgaW5zdGVhZCBvZiB0ZW1wZmlsZS50ZW1wZGlyLiBUaGlzIHByZXZlbnRzIHRoZSB0ZXN0cyBmcm9tIHNoYXJpbmcgc3RhdGUKLSAgYmV0d2VlbiBjb25jdXJyZW50IGV4ZWN1dGlvbnMgb24gdGhlIHNhbWUgc3lzdGVtLgotCi0tIElzc3VlICM3MjQ4OiBJbiBpbXBvcnRsaWIudGVzdC5zb3VyY2UudXRpbCBhIHRyeS9maW5hbGx5IGJsb2NrIGRpZCBub3QgbWFrZQotICBzdXJlIHRoYXQgc29tZSByZWZlcmVuY2VkIG9iamVjdHMgYWN0dWFsbHkgd2VyZSBjcmVhdGVkIGluIHRoZSBibG9jayBiZWZvcmUKLSAgY2FsbGluZyBtZXRob2RzIG9uIHRoZSBvYmplY3QuCi0KLS0gSXNzdWUgIzcyMjI6IE1ha2UgdGhyZWFkICJyZWFwaW5nIiBtb3JlIHJlbGlhYmxlIHNvIHRoYXQgcmVmZXJlbmNlCi0gIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiBUaGUgcHJldmlvdXMgbWV0aG9kIG9mIHJlYXBpbmcKLSAgdGhyZWFkcyBjb3VsZCByZXR1cm4gc3VjY2Vzc2Z1bGx5IHdoaWxlIHNvbWUgVGhyZWFkIG9iamVjdHMgd2VyZSBzdGlsbAotICByZWZlcmVuY2VkLiBUaGlzIGFsc28gaW50cm9kdWNlcyBhIG5ldyBwcml2YXRlIGZ1bmN0aW9uOgotICA6ZnVuYzpgX3RocmVhZC5fY291bnQoKWAuCi0KLS0gSXNzdWUgIzcxNTE6IEZpeGVkIHJlZ3J0ZXN0IC1qIHNvIHRoYXQgb3V0cHV0IHRvIHN0ZGVyciBmcm9tIGEgdGVzdCBubyBsb25nZXIKLSAgcnVucyB0aGUgcmlzayBvZiBjYXVzaW5nIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzcwNTU6IHRlc3RfX19hbGxfXyBub3cgZ3JlZWRpbHkgZGV0ZWN0cyBhbGwgbW9kdWxlcyB3aGljaCBoYXZlIGFuCi0gIF9fYWxsX18gYXR0cmlidXRlLCByYXRoZXIgdGhhbiB1c2luZyBhIGhhcmRjb2RlZCBhbmQgaW5jb21wbGV0ZSBsaXN0LgotCi0tIElzc3VlICM3MDU4OiBBZGRlZCBzYXZlL3Jlc3RvcmUgZm9yIHRoaW5ncyBsaWtlIHN5cy5hcmd2IGFuZCBjd2QgdG8KLSAgcnVudGVzdF9pbm5lciBpbiByZWdydGVzdCwgd2l0aCB3YXJuaW5ncyBpZiB0aGUgY2FsbGVkIHRlc3QgbW9kaWZpZXMgdGhlbSwgYW5kCi0gIGEgbmV3IHNlY3Rpb24gaW4gdGhlIHN1bW1hcnkgcmVwb3J0IGF0IHRoZSBlbmQuCi0KLS0gSXNzdWUgIzcwNDI6IEZpeCB0ZXN0X3NpZ25hbCAodGVzdF9pdGltZXJfdmlydHVhbCkgZmFpbHVyZSBvbiBPUyBYIDEwLjYuCi0KLS0gRml4ZWQgdGVzdHMgaW4gaW1wb3J0bGliLnRlc3Quc291cmNlLnRlc3RfYWJjX2xvYWRlciB0aGF0IHdlcmUgbWFza2luZyB0aGUKLSAgcHJvcGVyIGV4Y2VwdGlvbnMgdGhhdCBzaG91bGQgYmUgcmFpc2VkIGZvciBtaXNzaW5nIG9yIGltcHJvcGVyIGNvZGUgb2JqZWN0Ci0gIGJ5dGVjb2RlLgotCi0tIFJlbW92ZWQgaW1wb3J0bGliJ3MgY3VzdG9tIHRlc3QgZGlzY292ZXJ5IGNvZGUgYW5kIHN3aXRjaGVkIHRvCi0gIHVuaXR0ZXN0LlRlc3RMb2FkZXIuZGlzY292ZXIoKS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU0NjQsICM4OTc0OiBJbXBsZW1lbnQgcGx1cmFsIGZvcm1zIGluIG1zZ2ZtdC5weS4KLQotLSBpb2JlbmNoIChhIGZpbGUgSS9PIGJlbmNobWFyaykgYW5kIGNjYmVuY2ggKGEgY29uY3VycmVuY3kgYmVuY2htYXJrKSB3ZXJlCi0gIGFkZGVkIHRvIHRoZSBgVG9vbHMvYCBkaXJlY3RvcnkuICBUaGV5IHdlcmUgcHJldmlvdXNseSBsaXZpbmcgaW4gdGhlIHNhbmRib3guCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyNy1KdW5lLTIwMDkqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2MzM0OiBGaXggYnVnIGluIHJhbmdlIGxlbmd0aCBjYWxjdWxhdGlvbiBmb3IgcmFuZ2VzIHdpdGgKLSAgbGFyZ2UgYXJndW1lbnRzLgotCi0tIElzc3VlICM2MzI5OiBGaXhlZCBpdGVyYXRpb24gZm9yIG1lbW9yeXZpZXcgb2JqZWN0cyAoaXQgd2FzIGJlaW5nIGJsb2NrZWQKLSAgYmVjYXVzZSBpdCB3YXNuJ3QgcmVjb2duaXplZCBhcyBhIHNlcXVlbmNlKS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM2MTI2OiBGaXhlZCBwZGIgY29tbWFuZC1saW5lIHVzYWdlLgotCi0tIElzc3VlICM2MzE0OiBsb2dnaW5nOiBwZXJmb3JtcyBleHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzYyNzQ6IEZpeGVkIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgbGVhayBpbiBzdWJwcm9jZXNzLnB5Ci0KLS0gQWNjZXNzaW5nIGlvLlN0cmluZ0lPLmJ1ZmZlciBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yIGluc3RlYWQgb2YKLSAgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24uCi0KLS0gSXNzdWUgIzYyNzE6IG1tYXAgdHJpZWQgdG8gY2xvc2UgaW52YWxpZCBmaWxlIGhhbmRsZSAoLTEpIHdoZW4gYW5vbnltb3VzLgotICAoT24gVW5peCkKLQotLSBJc3N1ZSAjMTIwMjogemlwZmlsZSBtb2R1bGUgd291bGQgY2F1c2UgYSBzdHJ1Y3QuZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvCi0gIHN0b3JlIGZpbGVzIHdpdGggYSBDUkMzMiA+IDIqKjMxLTEuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1NTkwOiBSZW1vdmUgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBpbiBweWV4cGF0IGV4dGVuc2lvbi4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgUmVsZWFzZSBDYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMy1KdW5lLTIwMDkqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEZpeGVkIFN5c3RlbUVycm9yIHRyaWdnZXJlZCBieSAicmFuZ2UoW10sIDEsIC0xKSIuCi0KLS0gSXNzdWUgIzU5MjQ6IE9uIFdpbmRvd3MsIGEgbGFyZ2UgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAobW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzKSB3b3VsZCBiZSBjb21wbGV0ZWx5IGlnbm9yZWQuCi0KLS0gSXNzdWUgIzQ1NDc6IFdoZW4gZGVidWdnaW5nIGEgdmVyeSBsYXJnZSBmdW5jdGlvbiwgaXQgd2FzIG5vdCBhbHdheXMKLSAgcG9zc2libGUgdG8gdXBkYXRlIHRoZSBsaW5lbm8gYXR0cmlidXRlIG9mIHRoZSBjdXJyZW50IGZyYW1lLgotCi0tIElzc3VlICM1MzMwOiBDIGZ1bmN0aW9ucyBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyB3ZXJlIG5vdCByZXBvcnRlZCBieQotICB0aGUgdmFyaW91cyBwcm9maWxpbmcgbW9kdWxlcyAocHJvZmlsZSwgY1Byb2ZpbGUpLiBQYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzY0Mzg6IEZpeGVkIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIuZ2V0X3ZlcnNpb25zIDogdGhlIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbiBzdHJpbmcgcGF0dGVybiB3YXMgdHJ5aW5nIHRvIG1hdGNoIGFnYWluc3QgYSBieXRlcyByZXR1cm5lZCBieQotICBQb3Blbi4gVGVzdGVkIHVuZGVyIHdpbjMyIHRvIGJ1aWxkIHRoZSBweS1wb3N0Z3Jlc3FsIHByb2plY3QuCi0KLS0gSXNzdWUgIzYyNTg6IFN1cHBvcnQgQU1ENjQgaW4gYmRpc3RfbXNpLgotCi0tIElzc3VlICM2MTk1OiBmaXhlZCBkb2N0ZXN0IHRvIG5vIGxvbmdlciB0cnkgdG8gcmVhZCAnc291cmNlJyBkYXRhIGZyb20KLSAgYmluYXJ5IGZpbGVzLgotCi0tIElzc3VlICM1MjYyOiBGaXhlZCBidWcgaW4gbmV4dCByb2xsb3ZlciB0aW1lIGNvbXB1dGF0aW9uIGluCi0gIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlci4KLQotLSBJc3N1ZSAjNjIxNzogVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgaW8uVGV4dElPV3JhcHBlciBkaWRuJ3QgaW5jbHVkZSB0aGUKLSAgZXJyb3JzIHByb3BlcnR5LiAgQWRkaXRpb25hbGx5LCB0aGUgZXJyb3JzIGFuZCBlbmNvZGluZyBwcm9wZXJ0aWVzIG9mIFN0cmluZ0lPCi0gIGFyZSBhbHdheXMgTm9uZSBub3cuCi0KLS0gSXNzdWUgIzYxMzc6IFRoZSBwaWNrbGUgbW9kdWxlIG5vdyB0cmFuc2xhdGVzIG1vZHVsZSBuYW1lcyB3aGVuIGxvYWRpbmcKLSAgb3IgZHVtcGluZyBwaWNrbGVzIHdpdGggYSAyLngtY29tcGF0aWJsZSBwcm90b2NvbCwgaW4gb3JkZXIgdG8gbWFrZSBkYXRhCi0gIHNoYXJpbmcgYW5kIG1pZ3JhdGlvbiBlYXNpZXIuIFRoaXMgYmVoYXZpb3VyIGNhbiBiZSBkaXNhYmxlZCB1c2luZyB0aGUKLSAgbmV3IGBmaXhfaW1wb3J0c2Agb3B0aW9uYWwgYXJndW1lbnQuCi0KLS0gUmVtb3ZlZCB0aGUgaXBhZGRyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMzYxMzogYmFzZTY0LntlbmNvZGUsZGVjb2RlfXN0cmluZyBhcmUgbm93IGNhbGxlZAotICBiYXNlNjQue2VuY29kZSxkZWNvZGV9Ynl0ZXMgd2hpY2ggcmVmbGVjdHMgd2hhdCB0eXBlIHRoZXkgYWNjZXB0IGFuZCByZXR1cm4uCi0gIFRoZSBvbGQgbmFtZXMgYXJlIHN0aWxsIHRoZXJlIGFzIGRlcHJlY2F0ZWQgYWxpYXNlcy4KLQotLSBJc3N1ZSAjNTc2NzogUmVtb3ZlIHNnbWxvcCBzdXBwb3J0IGZyb20geG1scnBjLmNsaWVudC4KLQotLSBJc3N1ZSAjNjE1MDogRml4IHRlc3RfdW5pY29kZSBvbiB3aWRlLXVuaWNvZGUgYnVpbGRzLgotCi0tIElzc3VlICM2MTQ5OiBGaXggaW5pdGlhbGl6YXRpb24gb2YgV2Vha1ZhbHVlRGljdGlvbmFyeSBvYmplY3RzIGZyb20gbm9uLWVtcHR5Ci0gIHBhcmFtZXRlcnMuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjIyMTogRGVsZXRlIHRlc3QgcmVnaXN0cnkga2V5IGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0LgotCi0tIElzc3VlICM2MTU4OiBQYWNrYWdlIFNpbmUtMTAwMEh6LTMwMG1zLmFpZiBpbiBNU0kgZmlsZS4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzU3MzU6IFB5dGhvbiBjb21waWxlZCB3aXRoIC0td2l0aC1weWRlYnVnIHNob3VsZCB0aHJvdyBhbgotICBJbXBvcnRFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgbW9kdWxlcyBjb21waWxlZCB3aXRob3V0Ci0gIC0td2l0aC1weWRlYnVnLCBhbmQgdmljZS12ZXJzYS4KLQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjE1NDogTWFrZSBzdXJlIHRoZSBpbnRsIGxpYnJhcnkgaXMgYWRkZWQgdG8gTElCUyBpZiBuZWVkZWQuIEFsc28KLSAgYWRkZWQgTElCUyB0byBPUyBYIGZyYW1ld29yayBidWlsZHMuCi0KLS0gSXNzdWUgIzU4MDk6IFNwZWNpZnlpbmcgYm90aCAtLWVuYWJsZS1mcmFtZXdvcmsgYW5kIC0tZW5hYmxlLXNoYXJlZCBpcwotICBhbiBlcnJvci4gQ29uZmlndXJlIG5vdyBleHBsaWNpdHkgdGVsbHMgeW91IGFib3V0IHRoaXMuCi0KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTMwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjA5NzogRXNjYXBlIFVURi04IHN1cnJvZ2F0ZXMgcmVzdWx0aW5nIGZyb20gbWJzdG9jcyBjb252ZXJzaW9uCi0gIG9mIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzYwMTI6IEFkZCBjbGVhbnVwIHN1cHBvcnQgdG8gTyYgYXJndW1lbnQgcGFyc2luZy4KLQotLSBJc3N1ZSAjNjA4OTogRml4ZWQgc3RyLmZvcm1hdCB3aXRoIGNlcnRhaW4gaW52YWxpZCBmaWVsZCBzcGVjaWZpZXJzCi0gIHRoYXQgd291bGQgcmFpc2UgU3lzdGVtRXJyb3IuCi0KLS0gSXNzdWUgIzU5ODI6IHN0YXRpY21ldGhvZCBhbmQgY2xhc3NtZXRob2Qgbm93IGV4cG9zZSB0aGUgd3JhcHBlZAotICBmdW5jdGlvbiB3aXRoIF9fZnVuY19fLgotCi0tIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgbWFuYWdlcnMgaW4gdGhlIHNhbWUgd2l0aC1zdGF0ZW1lbnQuCi0gIERlcHJlY2F0ZWQgY29udGV4dGxpYi5uZXN0ZWQoKSB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkLgotCi0tIElzc3VlICM1ODI5OiBjb21wbGV4KCIxZTUwMCIpIG5vIGxvbmdlciByYWlzZXMgT3ZlcmZsb3dFcnJvci4gIFRoaXMKLSAgbWFrZXMgaXQgY29uc2lzdGVudCB3aXRoIGZsb2F0KCIxZTUwMCIpIGFuZCBpbnRlcnByZXRhdGlvbiBvZiByZWFsCi0gIGFuZCBpbWFnaW5hcnkgbGl0ZXJhbHMuCi0KLS0gSXNzdWUgIzM1Mjc6IFJlbW92ZWQgUHlfV0lOX1dJREVfRklMRU5BTUVTIHdoaWNoIGlzIG5vdCB1c2VkIGFueSBtb3JlLgotCi0tIElzc3VlICM1OTk0OiB0aGUgbWFyc2hhbCBtb2R1bGUgbm93IGhhcyBkb2NzdHJpbmdzLgotCi0tIElzc3VlICM1OTgxOiBGaXggdGhyZWUgbWlub3IgaW5mL25hbiBpc3N1ZXMgaW4gZmxvYXQuZnJvbWhleDoKLSAgKDEpIGluZiBhbmQgbmFuIHN0cmluZ3Mgd2l0aCB0cmFpbGluZyB3aGl0ZXNwYWNlIHdlcmUgaW5jb3JyZWN0bHkKLSAgcmVqZWN0ZWQ7ICAoMikgcGFyc2luZyBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyBpbmZpbml0aWVzIGFuZCBuYW5zCi0gIHdhcyBsb2NhbGUgYXdhcmU7IGFuZCAoMykgdGhlIGludGVycHJldGF0aW9uIG9mIGZyb21oZXgoJy1uYW4nKQotICBkaWRuJ3QgbWF0Y2ggdGhhdCBvZiBmbG9hdCgnLW5hbicpLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzQ4NTk6IEltcGxlbWVudCBQRVAgMzgzIGZvciBwd2QsIHNwd2QsIGFuZCBncnAuCi0KLS0gc210cGxpYiAnbG9naW4nIGFuZCAnY3JhbS1tZDUnIGxvZ2luIGFyZSBhbHNvIGZpeGVkIChzZWUgSXNzdWUgIzUyNTkpLgotCi0tIElzc3VlICM2MTIxOiBweWRvYyBub3cgaWdub3JlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgaW4gdGhlCi0gIGFyZ3VtZW50IHRvIHRoZSAnaGVscCcgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzYxMTg6IHVybGxpYi5wYXJzZS5xdW90ZV9wbHVzIGlnbm9yZWQgdGhlIGVuY29kaW5nIGFuZCBlcnJvcnMKLSAgYXJndW1lbnRzIGZvciBzdHJpbmdzIHdpdGggYSBzcGFjZSBpbiB0aGVtLgotCi0tIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSB3YXMgbm90IHdvcmtpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkCi0gIG5hbWVzOiAgY2xzLCBzZWxmLCB0dXBsZSwgaXRlbWdldHRlciwgYW5kIHByb3BlcnR5LgotCi0tIEluIHVuaXR0ZXN0LCB1c2luZyBhIHNraXBwaW5nIGRlY29yYXRvciBvbiBhIGNsYXNzIGlzIG5vdyBlcXVpdmFsZW50IHRvCi0gIHNraXBwaW5nIGV2ZXJ5IHRlc3Qgb24gdGhlIGNsYXNzLiAgVGhlIENsYXNzVGVzdFN1aXRlIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzYwNTA6IERvbid0IGZhaWwgZXh0cmFjdGluZyBhIGRpcmVjdG9yeSBmcm9tIGEgemlwZmlsZSBpZgotICB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLgotCi0tIElzc3VlICMxMzA5MzUyOiBmY250bCBub3cgY29udmVydHMgaXRzIHRoaXJkIGFyZ3VtZW50cyB0byBhIEMgYGxvbmdgIHJhdGhlcgotICB0aGFuIGFuIGludCwgd2hpY2ggbWFrZXMgc29tZSBvcGVyYXRpb25zIHBvc3NpYmxlIHVuZGVyIDY0LWJpdCBMaW51eCAoZS5nLgotICBETl9NVUxUSVNIT1Qgd2l0aCBGX05PVElGWSkuCi0KLS0gSXNzdWUgIzU3NjE6IEFkZCB0aGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBmaWxlIHRvIHRoZSByZXByKCkgb2YgdmFyaW91cwotICBJTyBvYmplY3RzLgotCi0tIElzc3VlICM1MjU5OiBzbXRwbGliIHBsYWluIGF1dGggbG9naW4gbm8gbG9uZ2VyIGdpdmVzIGEgdHJhY2ViYWNrLiAgRml4Ci0gIGJ5IE11c2FzaGkgVGFtdXJhLCB0ZXN0cyBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICMxOTgzOiBGaXggZnVuY3Rpb25zIHRha2luZyBvciByZXR1cm5pbmcgYSBwcm9jZXNzIGlkZW50aWZpZXIgdG8gdXNlCi0gIHRoZSBkZWRpY2F0ZWQgQyB0eXBlIGBgcGlkX3RgYCBpbnN0ZWFkIG9mIGEgQyBgYGludGBgLiBTb21lIHBsYXRmb3JtcyBoYXZlCi0gIGEgcHJvY2VzcyBpZGVudGlmaWVyIHR5cGUgd2lkZXIgdGhhbiB0aGUgc3RhbmRhcmQgQyBpbnRlZ2VyIHR5cGUuCi0KLS0gSXNzdWUgIzQwNjY6IHNtdHBsaWIuU01UUF9TU0wuX2dldF9zb2NrZXQgbm93IGNvcnJlY3RseSByZXR1cm5zIHRoZSBzb2NrZXQuCi0gIFBhdGNoIGJ5IEZhcmhhbiBBaG1hZCwgdGVzdCBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICMyMTE2OiBXZWFrIHJlZmVyZW5jZXMgYW5kIHdlYWsgZGljdGlvbmFyaWVzIG5vdyBzdXBwb3J0IGNvcHkoKWluZyBhbmQKLSAgZGVlcGNvcHkoKWluZy4KLQotLSBJc3N1ZSAjMTY1NTogTWFrZSBpbWFwbGliIElQdjYtY2FwYWJsZS4gUGF0Y2ggYnkgRGVyZWsgTW9yci4KLQotLSBJc3N1ZSAjNTkxODogRml4IGEgY3Jhc2ggaW4gdGhlIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2NjQ6IE1ha2Ugbm50cGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCi0KLS0gSXNzdWUgIzUwMDY6IEJldHRlciBoYW5kbGluZyBvZiB1bmljb2RlIGJ5dGUtb3JkZXIgbWFya3MgKEJPTSkgaW4gdGhlIGlvCi0gIGxpYnJhcnkuIFRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IG9wZW5pbmcgYW4gVVRGLTE2IHRleHQgZmlsZSBpbgotICBhcHBlbmQgbW9kZSBkb2Vzbid0IGFkZCBhIEJPTSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIHRoZSBmaWxlIGlzbid0Ci0gIGVtcHR5LgotCi0tIElzc3VlICM0MDUwOiBpbnNwZWN0LmZpbmRzb3VyY2UvZ2V0c291cmNlIG5vdyByYWlzZSBhbiBJT0Vycm9yIGlmIHRoZSAnc291cmNlJwotICBmaWxlIGlzIGEgYmluYXJ5LiAgUGF0Y2ggYnkgQnJvZGllIFJhbywgdGVzdHMgYnkgRGFuaWVsIERpbml6LiAgVGhpcyBmaXgKLSAgY29ycmVjdHMgYSBweWRvYyByZWdyZXNzaW9uLgotCi0tIElzc3VlICM1OTU1OiBhaWZjJ3MgY2xvc2UgbWV0aG9kIGRpZCBub3QgY2xvc2UgdGhlIGZpbGUgaXQgd3JhcHBlZCwKLSAgbm93IGl0IGRvZXMuICBUaGlzIGFsc28gbWVhbnMgZ2V0ZnAgbWV0aG9kIG5vdyByZXR1cm5zIHRoZSByZWFsIGZwLgotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2MDQ3OiBmdWxsaW5zdGFsbCBoYXMgYmVlbiByZW1vdmVkIGJlY2F1c2UgUHl0aG9uIDMncyBleGVjdXRhYmxlIHdpbGwKLSAgbm93IGJlIGtub3duIGFzIHB5dGhvbjMuCi0KLS0gTGliL3NtdHBkLnB5IGlzIG5vIGxvbmdlciBpbnN0YWxsZWQgYXMgYSBzY3JpcHQuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzMDYxOiBVc2Ugd2NzZnRpbWUgZm9yIHRpbWUuc3RyZnRpbWUgd2hlcmUgYXZhaWxhYmxlLgotCi0tIElzc3VlICM0ODczOiBGaXggcmVzb3VyY2UgbGVha3MgaW4gZXJyb3IgY2FzZXMgb2YgcHdkIGFuZCBncnAuCi0KLS0gSXNzdWUgIzYwOTM6IEZpeCBvZmYtYnktb25lIGVycm9yIGluIGxvY2FsZS5zdHJ4ZnJtLgotCi0tIFRoZSBfZnVuY3Rvb2xzIGFuZCBfbG9jYWxlIG1vZHVsZXMgYXJlIG5vdyBidWlsdCBpbnRvIHRoZSBsaWJweXRob24gc2hhcmVkCi0gIGxpYnJhcnkgaW5zdGVhZCBvZiBhcyBleHRlbnNpb24gbW9kdWxlcy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzM1ODU6IEFkZCBwa2ctY29uZmlnIHN1cHBvcnQuIEl0IGNyZWF0ZXMgYSBweXRob24tMi43LnBjIGZpbGUKLSAgYW5kIGEgcHl0aG9uMy5wYyBzeW1saW5rIGluIHRoZSAkKExJQkRJUikvcGtnY29uZmlnIGRpcmVjdG9yeS4gUGF0Y2ggYnkKLSAgQ2xpbnRvbiBSb3kuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM1NDQyOiBUZXN0cyBmb3IgaW1wb3J0bGliIHdlcmUgbm90IHByb3Blcmx5IHNraXBwaW5nIGNhc2Utc2Vuc2l0aXZpdHkKLSAgdGVzdHMgb24gZGFyd2luIGV2ZW4gd2hlbiB0aGUgT1Mgd2FzIGluc3RhbGxlZCBvbiBhIGNhc2Utc2Vuc2l0aXZlCi0gIGZpbGVzeXN0ZW0uIEFsc28gZml4ZWQgdGVzdHMgdGhhdCBzaG91bGQgbm90IGJlIHJ1biB3aGVuCi0gIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIHRydWUuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktMDUtMDYqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1OTE0OiBBZGQgbmV3IEMgQVBJIGZ1bmN0aW9uIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZSwgYW5kCi0gIGRlcHJlY2F0ZSBQeU9TX2FzY2lpX3N0cnRvZCBhbmQgUHlPU19hc2NpaV9hdG9mLgotCi0tIElzc3VlICMzMzgyOiBmbG9hdC5fX2Zvcm1hdF9fLCBjb21wbGV4Ll9fZm9ybWF0X18sIGFuZCAlLWZvcm1hdHRpbmcKLSAgbm8gbG9uZ2VyIG1hcCAnRicgdG8gJ2YnLiBCZWNhdXNlIG9mIGlzc3VlICM1ODU5IChiZWxvdyksIHRoaXMgb25seQotICBhZmZlY3RzIG5hbiAtPiBOQU4gYW5kIGluZiAtPiBJTkYuCi0KLS0gSXNzdWUgIzU3OTk6IG50cGF0aCAoaWUsIG9zLnBhdGggb24gV2luZG93cykgZnVsbHkgc3VwcG9ydHMgVU5DIHBhdGhuYW1lcwotICBpbiBhbGwgb3BlcmF0aW9ucywgaW5jbHVkaW5nIHNwbGl0ZHJpdmUsIHNwbGl0LCBldGMuICBzcGxpdHVuYygpIG5vdyBpc3N1ZXMKLSAgYSBQZW5kaW5nRGVwcmVjYXRpb24gd2FybmluZy4KLQotLSBJc3N1ZSAjNTkyMDogRm9yIGZsb2F0Ll9fZm9ybWF0X18sIGNoYW5nZSB0aGUgYmVoYXZpb3Igd2l0aCB0aGUKLSAgZW1wdHkgcHJlc2VudGF0aW9uIHR5cGUgKHRoYXQgaXMsIG5vdCBvbmUgb2YgJ2UnLCAnZicsICdnJywgb3IgJ24nKQotICB0byBiZSBsaWtlICdnJyBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbCBwb2ludCBhbmQgd2l0aCBhCi0gIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBQcmV2aW91c2x5LCB0aGUgYmVoYXZpb3IgdGhlIHNhbWUgYnV0IHdpdGgKLSAgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiA2LiAgVGhpcyBtb3JlIGNsb3NlbHkgbWF0Y2hlcyBzdHIoKSwgYW5kCi0gIHJlZHVjZXMgc3VycHJpc2VzIHdoZW4gYWRkaW5nIGFsaWdubWVudCBmbGFncyB0byB0aGUgZW1wdHkKLSAgcHJlc2VudGF0aW9uIHR5cGUuIFRoaXMgYWxzbyBhZmZlY3RzIHRoZSBuZXcgY29tcGxleC5fX2Zvcm1hdF9fIGluCi0gIHRoZSBzYW1lIHdheS4KLQotLSBJbXBsZW1lbnQgUEVQIDM4MywgTm9uLWRlY29kYWJsZSBCeXRlcyBpbiBTeXN0ZW0gQ2hhcmFjdGVyIEludGVyZmFjZXMuCi0KLS0gSXNzdWUgIzU4OTA6IGluIHN1YmNsYXNzZXMgb2YgJ3Byb3BlcnR5JyB0aGUgX19kb2NfXyBhdHRyaWJ1dGUgd2FzCi0gIHNoYWRvd2VkIGJ5IGNsYXNzdHlwZSdzLCBldmVuIGlmIGl0IHdhcyBOb25lLiAgcHJvcGVydHkgbm93Ci0gIGluc2VydHMgdGhlIF9fZG9jX18gaW50byB0aGUgc3ViY2xhc3MgaW5zdGFuY2UgX19kaWN0X18uCi0KLS0gSXNzdWUgIzQ0MjY6IFRoZSBVVEYtNyBkZWNvZGVyIHdhcyB0b28gc3RyaWN0IGFuZCBkaWRuJ3QgYWNjZXB0IHNvbWUgbGVnYWwKLSAgc2VxdWVuY2VzLiBQYXRjaCBieSBOaWNrIEJhcm5lcyBhbmQgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzM2NzI6IFJlamVjdCBzdXJyb2dhdGVzIGluIHV0Zi04IGNvZGVjOyBhZGQgc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM1ODgzOiBJbiB0aGUgaW8gbW9kdWxlLCB0aGUgQnVmZmVyZWRJT0Jhc2UgYW5kIFRleHRJT0Jhc2UgQUJDcyBoYXZlCi0gIHJlY2VpdmVkIGEgbmV3IG1ldGhvZCwgZGV0YWNoKCkuICBkZXRhY2goKSBkaXNjb25uZWN0cyB0aGUgdW5kZXJseWluZyBzdHJlYW0KLSAgZnJvbSB0aGUgYnVmZmVyIG9yIHRleHQgSU8gYW5kIHJldHVybnMgaXQuCi0KLS0gSXNzdWUgIzU4NTk6IFJlbW92ZSBzd2l0Y2ggZnJvbSAnJWYnIHRvICclZyctc3R5bGUgZm9ybWF0dGluZyBmb3IKLSAgZmxvYXRzIHdpdGggYWJzb2x1dGUgdmFsdWUgb3ZlciAxZTUwLiAgQWxzbyByZW1vdmUgbGVuZ3RoCi0gIHJlc3RyaWN0aW9ucyBmb3IgZmxvYXQgZm9ybWF0dGluZzogJyUuNjdmJyAlIDEyLjM0IGFuZCAnJS4xMjBlJyAlCi0gIDEyLjM0IG5vIGxvbmdlciByYWlzZSBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzE1ODg6IEFkZCBjb21wbGV4Ll9fZm9ybWF0X18uIEZvciBleGFtcGxlLAotICBmb3JtYXQoY29tcGxleCgxLCAyLi8zKSwgJy41Jykgbm93IHByb2R1Y2VzIGEgc2Vuc2libGUgcmVzdWx0LgotCi0tIElzc3VlICM1ODY0OiBGaXggZW1wdHkgZm9ybWF0IGNvZGUgZm9ybWF0dGluZyBmb3IgZmxvYXRzIHNvIHRoYXQgaXQKLSAgbmV2ZXIgZ2l2ZXMgbW9yZSB0aGFuIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KLQotLSBJc3N1ZSAjNTc5MzogUmF0aW9uYWxpemUgaXNkaWdpdCAvIGlzYWxwaGEgLyB0b2xvd2VyLCBldGMuIEluY2x1ZGVzCi0gIG5ldyBQeV9JU0RJR0lUIC8gUHlfSVNBTFBIQSAvIFB5X1RPTE9XRVIsIGV0Yy4gaW4gcGN0eXBlcy5oLgotCi0tIElzc3VlICM1ODM1OiBEZXByZWNhdGUgUHlPU19hc2NpaV9mb3JtYXRkLgotCi0tIElzc3VlICM0OTcxOiBGaXggdGl0bGVjYXNlIGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIHRoZWlyIG93bgotICB0aXRsZWNhc2UsIGJ1dCBub3QgdGhlaXIgb3duIHVwcGVyY2FzZS4KLQotLSBJc3N1ZSAjNTI4MzogU2V0dGluZyBfX2NsYXNzX18gaW4gX19kZWxfXyBjYXVzZWQgYSBzZWdmYXVsdC4KLQotLSBJc3N1ZSAjNTgxNjogY29tcGxleChyZXByKHopKSBub3cgcmVjb3ZlcnMgeiBleGFjdGx5LCBldmVuIHdoZW4KLSAgeiBpbnZvbHZlcyBuYW5zLCBpbmZzIG9yIG5lZ2F0aXZlIHplcm9zLgotCi0tIElzc3VlICMzMTY2OiBNYWtlIGludCAtPiBmbG9hdCBjb252ZXJzaW9ucyBjb3JyZWN0bHkgcm91bmRlZC4KLQotLSBJc3N1ZSAjMTg2OSAoYW5kIG1hbnkgZHVwbGljYXRlcyk6IG1ha2Ugcm91bmQoeCwgbikgY29ycmVjdGx5Ci0gIHJvdW5kZWQgZm9yIGEgZmxvYXQgeCwgYnkgdXNpbmcgdGhlIGRlY2ltYWwgPC0+IGJpbmFyeSBjb252ZXJzaW9ucwotICBmcm9tIFB5dGhvbi9kdG9hLmMuICBBcyBhIGNvbnNlcXVlbmNlLCAoZS5nLikgcm91bmQoeCwgMikgbm93Ci0gIGNvbnNpc3RlbnRseSBhZ3JlZXMgd2l0aCBmb3JtYXQoeCwgJy4yZicpLgotCi0tIElzc3VlICM1Nzg3OiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzb21lX3R5cGUsICJfX2Jhc2VzX18iKSBzZWdmYXVsdGVkIG9uCi0gIHNvbWUgYnVpbHRpbiB0eXBlcy4KLQotLSBJc3N1ZSAjNTc3MjogZm9ybWF0KDFlMTAwLCAnPCcpIHByb2R1Y2VzICcxZSsxMDAnLCBub3QgJzEuMGUrMTAwJy4KLQotLSBJc3N1ZSAjNTUxNTogc3RyLmZvcm1hdCgpIHR5cGUgJ24nIGNvbWJpbmVkIHdpdGggY29tbWFzIGFuZCBsZWFkaW5nCi0gIHplcm9zIG5vIGxvbmdlciBnaXZlcyBvZGQgcmVzdWx0cyB3aXRoIGludHMgYW5kIGZsb2F0cy4KLQotLSBJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yCi0gIGZsb2F0cy4KLQotLSBUaGUgc3RyIGZ1bmN0aW9uIHN3aXRjaGVzIHRvIGV4cG9uZW50aWFsIG5vdGF0aW9uIGF0Ci0gIDFlMTEsIG5vdCAxZTEyLiAgVGhpcyBhdm9pZHMgcHJpbnRpbmcgMTMgc2lnbmlmaWNhbnQgZGlnaXRzIGluCi0gIHNpdHVhdGlvbnMgd2hlcmUgb25seSAxMiBvZiB0aGVtIGFyZSBjb3JyZWN0LiAgRXhhbXBsZSBwcm9ibGVtCi0gIHZhbHVlOiBzdHIoMWUxMSArIDAuNSkuICAoVGhpcyBtaW5vciBpc3N1ZSBoYXMgZXhpc3RlZCBpbiAyLnggZm9yIGEKLSAgbG9uZyB0aW1lLikKLQotLSBJc3N1ZSAjMTU4MDogT24gbW9zdCBwbGF0Zm9ybXMsIHVzZSBhICdzaG9ydCcgZmxvYXQgcmVwcjogZm9yIGEKLSAgZmluaXRlIGZsb2F0IHgsIHJlcHIoeCkgbm93IG91dHB1dHMgYSBzdHJpbmcgYmFzZWQgb24gdGhlIHNob3J0ZXN0Ci0gIHNlcXVlbmNlIG9mIGRlY2ltYWwgZGlnaXRzIHRoYXQgcm91bmRzIHRvIHguICBQcmV2aW91cyBiZWhhdmlvdXIgd2FzCi0gIHRvIG91dHB1dCAxNyBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gc3RyaXAgdHJhaWxpbmcgemVyb3MuCi0gIEFub3RoZXIgbWlub3IgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBuZXcgcmVwciBzd2l0Y2hlcyB0bwotICBleHBvbmVudGlhbCBub3RhdGlvbiBhdCAxZTE2IGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIDFlMTc7IHRoaXMKLSAgYXZvaWRzIG1pc2xlYWRpbmcgb3V0cHV0IGluIHNvbWUgY2FzZXMuCi0KLSAgVGhlcmUncyBhIG5ldyBzeXMgYXR0cmlidXRlIHN5cy5mbG9hdF9yZXByX3N0eWxlLCB3aGljaCB0YWtlcwotICB0aGUgdmFsdWUgJ3Nob3J0JyB0byBpbmRpY2F0ZSB0aGF0IHdlJ3JlIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIsCi0gIGFuZCAnbGVnYWN5JyBpZiB0aGUgc2hvcnQgZmxvYXQgcmVwciBpc24ndCBhdmFpbGFibGUgZm9yIG9uZQotICByZWFzb24gb3IgYW5vdGhlci4KLQotICBUaGUgZmxvYXQgcmVwciBjaGFuZ2UgaW52b2x2ZXMgaW5jb3Jwb3JhdGluZyBEYXZpZCBHYXkncyAncGVyZmVjdAotICByb3VuZGluZycgY29kZSBpbnRvIHRoZSBQeXRob24gY29yZSAoaXQncyBpbiBQeXRob24vZHRvYS5jKS4gIEFzIGEKLSAgc2Vjb25kYXJ5IGNvbnNlcXVlbmNlLCBhbGwgc3RyaW5nLXRvLWZsb2F0IGFuZCBmbG9hdC10by1zdHJpbmcKLSAgY29udmVyc2lvbnMgKGluY2x1ZGluZyBhbGwgZmxvYXQgZm9ybWF0dGluZyBvcGVyYXRpb25zKSB3aWxsIGJlCi0gIGNvcnJlY3RseSByb3VuZGVkIG9uIHRoZXNlIHBsYXRmb3Jtcy4KLQotICBTZWUgaXNzdWUgIzE1ODAgZGlzY3Vzc2lvbnMgZm9yIGRldGFpbHMgb2YgcGxhdGZvcm1zIGZvciB3aGljaAotICB0aGlzIGNoYW5nZSBkb2VzIG5vdCBhcHBseS4KLQotLSBJc3N1ZSAjNTc1OTogZmxvYXQoKSBkaWRuJ3QgY2FsbCBfX2Zsb2F0X18gb24gc3RyIHN1YmNsYXNzZXMuCi0KLS0gVGhlIHN0cmluZy5tYWtldHJhbnMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOyB0aGVyZSBpcyBhIG5ldyBzdGF0aWMgbWV0aG9kCi0gIG1ha2V0cmFucygpIG9uIHRoZSBieXRlcyBhbmQgYnl0ZWFycmF5IGNsYXNzZXMuICBUaGlzIHJlbW92ZXMgY29uZnVzaW9uIGFib3V0Ci0gIHRoZSB0eXBlcyBzdHJpbmcubWFrZXRyYW5zKCkgaXMgc3VwcG9zZWQgdG8gd29yayB3aXRoLCBhbmQgbWlycm9ycyB0aGUKLSAgbWV0aG9kcyBhdmFpbGFibGUgb24gdGhlIHN0ciBjbGFzcy4KLQotLSBJc3N1ZSAjMjE3MDogcmVmYWN0b3JlZCB4bWwuZG9tLm1pbmlkb20ubm9ybWFsaXplLCBpbmNyZWFzaW5nIGJvdGgKLSAgaXRzIGNsYXJpdHkgYW5kIGl0cyBzcGVlZC4KLQotLSBJc3N1ZSAjMTExMzI0NDogUHlfWElOQ1JFRiwgUHlfREVDUkVGLCBQeV9YREVDUkVGOiBBZGQgYGBkbyB7IC4uLiB9IHdoaWxlICgwKWBgCi0gIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgotCi0tIElzc3VlICMzNzM5OiBUaGUgdW5pY29kZS1pbnRlcm5hbCBlbmNvZGVyIG5vdyByZXBvcnRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycwotICBjb25zdW1lZCBsaWtlIGFueSBvdGhlciBlbmNvZGVyIChpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMpLgotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1NzU2OiBJbnN0YWxsIGlkbGUgYW5kIHB5ZG9jIHdpdGggYSAzIHN1ZmZpeC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM4MjAzOiBGaXggSURMRSBDcmVkaXRzIGRpYWxvZzogdmlld19maWxlKCkgdXNlcyBpdHMgZW5jb2RpbmcgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzUzMTE6IGJkaXN0X21zaSBjYW4gbm93IGJ1aWxkIHBhY2thZ2VzIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBhCi0gIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLgotCi0tIElzc3VlICM1MTUwOiBJRExFJ3MgZm9ybWF0IG1lbnUgbm93IGhhcyBhbiBvcHRpb24gdG8gc3RyaXAgdHJhaWxpbmcKLSAgd2hpdGVzcGFjZS4KLQotLSBJc3N1ZSAjNTk0MDogZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfY2xpYi5jaGVja19saWJyYXJ5X2xpc3Qgd2FzIG5vdCBkb2luZwotICB0aGUgcmlnaHQgdHlwZSBjaGVja2luZ3MgYW55bW9yZS4KLQotLSBJc3N1ZSAjNDg3NTogT24gd2luMzIsIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBkb2VzIG5vIGxvbmdlcgotICByZXR1cm4gZGlyZWN0b3JpZXMuCi0KLS0gSXNzdWUgIzUxNDI6IEFkZCB0aGUgYWJpbGl0eSB0byBza2lwIG1vZHVsZXMgd2hpbGUgc3RlcHBpbmcgdG8gcGRiLgotCi0tIElzc3VlICMxMzA5NTY3OiBGaXggbGluZWNhY2hlIGJlaGF2aW9yIG9mIHN0cmlwcGluZyBzdWJkaXJlY3RvcmllcyB3aGVuCi0gIGxvb2tpbmcgZm9yIGZpbGVzIGdpdmVuIGJ5IGEgcmVsYXRpdmUgZmlsZW5hbWUuCi0KLS0gSXNzdWUgIzU5MjM6IFVwZGF0ZSB0aGUgYGB0dXJ0bGVgYCBtb2R1bGUgdG8gdmVyc2lvbiAxLjEsIGFkZCB0d28gbmV3Ci0gIHR1cnRsZSBkZW1vcyBpbiBEZW1vL3R1cnRsZS4KLQotLSBJc3N1ZSAjNTY5MjogSW4gOmNsYXNzOmB6aXBmaWxlLlppcGZpbGVgLCBmaXggd3JvbmcgcGF0aCBjYWxjdWxhdGlvbiB3aGVuCi0gIGV4dHJhY3RpbmcgYSBmaWxlIHRvIHRoZSByb290IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNTkxMzogb3MubGlzdGRpcigpIHNob3VsZCBmYWlsIGZvciBlbXB0eSBwYXRoIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzUwODQ6IHVucGlja2xpbmcgbm93IGludGVybnMgdGhlIGF0dHJpYnV0ZSBuYW1lcyBvZiBwaWNrbGVkIG9iamVjdHMsCi0gIHNhdmluZyBtZW1vcnkgYW5kIGF2b2lkaW5nIGdyb3d0aCBpbiBzaXplIG9mIHN1YnNlcXVlbnQgcGlja2xlcy4gUHJvcG9zYWwKLSAgYW5kIG9yaWdpbmFsIHBhdGNoIGJ5IEpha2UgTWNHdWlyZS4KLQotLSBUaGUganNvbiBtb2R1bGUgbm93IHdvcmtzIGV4Y2x1c2l2ZWx5IHdpdGggc3RyIGFuZCBub3QgYnl0ZXMuCi0KLS0gSXNzdWUgIzM5NTk6IFRoZSBpcGFkZHIgbW9kdWxlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotICBDb250cmlidXRlZCBieSBHb29nbGUuCi0KLS0gSXNzdWUgIzMwMDI6IGBgc2h1dGlsLmNvcHlmaWxlKClgYCBhbmQgYGBzaHV0aWwuY29weXRyZWUoKWBgIG5vdyByYWlzZSBhbgotICBlcnJvciB3aGVuIGEgbmFtZWQgcGlwZSBpcyBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gYmxvY2tpbmcgaW5maW5pdGVseS4KLQotLSBJc3N1ZSAjNTg1NzogdG9rZW5pemUudG9rZW5pemUoKSBub3cgcmV0dXJucyBuYW1lZCB0dXBsZXMuCi0KLS0gSXNzdWUgIzQzMDU6IGN0eXBlcyBzaG91bGQgbm93IGJ1aWxkIGFnYWluIG9uIG1pcHNlbC1saW51eC1nbnUKLQotLSBJc3N1ZSAjMTczNDIzNDogTWFzc2l2ZWx5IHNwZWVkdXAgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgIHdoZW4gdGhlCi0gIHN0cmluZyBpcyBhbHJlYWR5IGluIG5vcm1hbGl6ZWQgZm9ybSwgYnkgcGVyZm9ybWluZyBhIHF1aWNrIGNoZWNrIGJlZm9yZWhhbmQuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFJhdWxpIFJ1b2hvbmVuLgotCi0tIElzc3VlICM1ODUzOiBjYWxsaW5nIGEgZnVuY3Rpb24gb2YgdGhlIG1pbWV0eXBlcyBtb2R1bGUgZnJvbSBzZXZlcmFsIHRocmVhZHMKLSAgYXQgb25jZSBjb3VsZCBoaXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpZiB0aGUgbWltZXR5cGVzIGRhdGFiYXNlIGhhZG4ndCBiZWVuCi0gIGluaXRpYWxpemVkIGJlZm9yZS4KLQotLSBJc3N1ZSAjNTg1NDogVXBkYXRlZCBfX2FsbF9fIHRvIGluY2x1ZGUgc29tZSBtaXNzaW5nIG5hbWVzIGFuZCByZW1vdmUgc29tZQotICBuYW1lcyB3aGljaCBzaG91bGQgbm90IGJlIGV4cG9ydGVkLgotCi0tIElzc3VlICMzMTAyOiAgQWxsIGdsb2JhbCBzeW1ib2xzIHRoYXQgdGhlIF9jdHlwZXMgZXh0ZW5zaW9uIGRlZmluZXMKLSAgYXJlIG5vdyBwcmVmaXhlZCB3aXRoICdQeScgb3IgJ19jdHlwZXMnLgotCi0tIElzc3VlICM1MDQxOiBjdHlwZXMgZG9lcyBub3cgYWxsb3cgcGlja2xpbmcgd2lkZSBjaGFyYWN0ZXIuCi0KLS0gSXNzdWUgIzU4MTI6IEZvciB0aGUgdHdvLWFyZ3VtZW50IGZvcm0gb2YgdGhlIEZyYWN0aW9uIGNvbnN0cnVjdG9yLAotICBGcmFjdGlvbihtLCBuKSwgbSBhbmQgbiBhcmUgcGVybWl0dGVkIHRvIGJlIGFyYml0cmFyeSBSYXRpb25hbAotICBpbnN0YW5jZXMuCi0KLS0gSXNzdWUgIzU4MTI6IEZyYWN0aW9uKCcxZTYnKSBpcyB2YWxpZDogbW9yZSBnZW5lcmFsbHksIGFueSBzdHJpbmcKLSAgdGhhdCdzIHZhbGlkIGZvciBmbG9hdCgpIGlzIG5vdyB2YWxpZCBmb3IgRnJhY3Rpb24oKSwgd2l0aCB0aGUKLSAgZXhjZXB0aW9uIG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIE5hTnMgYW5kIGluZmluaXRpZXMuCi0KLS0gSXNzdWUgIzU3MzQ6IEJ1ZmZlcmVkUldQYWlyIHdhcyBwb29ybHkgdGVzdGVkIGFuZCBoYWQgc2V2ZXJhbCBnbGFyaW5nCi0gIGJ1Z3MuIFBhdGNoIGJ5IEJyaWFuIFF1aW5sYW4uCi0KLS0gSXNzdWUgIzExNjEwMzE6IGZpeCByZWFkd3JpdGUgc2VsZWN0IGZsYWcgaGFuZGxpbmc6IFBPTExQUkkgbm93Ci0gIHJlc3VsdHMgaW4gYSBoYW5kbGVfZXhwdF9ldmVudCBjYWxsLCBub3QgaGFuZGxlX3JlYWRfZXZlbnQsIGFuZCBQT0xMRVJSCi0gIGFuZCBQT0xMTlZBTCBub3cgY2FsbCBoYW5kbGVfY2xvc2UsIG5vdCBoYW5kbGVfZXhwdF9ldmVudC4gIEFsc28sCi0gIGRpc3BhdGNoZXIgbm93IGhhcyBhbiAnaWdub3JlX2xvZ190eXBlcycgYXR0cmlidXRlIGZvciBzdXBwcmVzc2luZwotICBsb2cgbWVzc2FnZXMsIHdoaWNoIGlzIHNldCB0byAnd2FybmluZycgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjMjcwMzogU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXzogUHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IKLSAgbmV3IGFyZ3VtZW50cyBpbnRyb2R1Y2VkIGluIDIuNS4KLQotLSBJc3N1ZSAjNTgyOCAoSW52YWxpZCBiZWhhdmlvciBvZiB1bmljb2RlLmxvd2VyKTogRml4ZWQgYm9ndXMgbG9naWMgaW4KLSAgbWFrZXVuaWNvZGVkYXRhLnB5IGFuZCByZWdlbmVyYXRlZCB0aGUgVW5pY29kZSBkYXRhYmFzZSAoVGhpcyBmaXhlcwotICB1J1x1MWQ3OScubG93ZXIoKSA9PSAnXHgwMCcpLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTg4MTogUmVtb3ZlIG9sZCB1bmRvY3VtZW50ZWQgY29tcGF0aWJpbGl0eSBpbnRlcmZhY2VzIGluIGhhc2hsaWIgYW5kCi0gIHB3ZC4KLQotLSBJc3N1ZSAjNTQ2MzogSW4gc3RydWN0IG1vZHVsZSwgcmVtb3ZlIGRlcHJlY2F0ZWQgZmxvYXQgY29lcmNpb24KLSAgZm9yIGludGVnZXIgdHlwZSBjb2Rlczogc3RydWN0LnBhY2soJ0wnLCAwLjMpIHNob3VsZCBub3cgcmFpc2UKLSAgYW4gZXJyb3IuICBUaGUgX1BZX1NUUlVDVF9GTE9BVF9DT0VSQ0UgY29uc3RhbnQgaGFzIGJlZW4gcmVtb3ZlZC4KLSAgVGhlIHZlcnNpb24gbnVtYmVyIGhhcyBiZWVuIGJ1bXBlZCB0byAwLjMuCi0KLS0gSXNzdWUgIzUzNTk6IFJlYWRkIHRoZSBCZXJrZWxleSBEQiBkZXRlY3Rpb24gY29kZSB0byBhbGxvdyBfZGJtIGJlIGJ1aWx0Ci0gIHVzaW5nIEJlcmtlbGV5IERCLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjNTM1NDogTmV3IHRlc3Qgc3VwcG9ydCBmdW5jdGlvbiBpbXBvcnRfZnJlc2hfbW9kdWxlKCkgbWFrZXMKLSAgaXQgZWFzeSB0byBpbXBvcnQgYm90aCBub3JtYWwgYW5kIG9wdGltaXNlZCB2ZXJzaW9ucyBvZiBtb2R1bGVzLgotICB0ZXN0X2hlYXBxIGFuZCB0ZXN0X3dhcm5pbmdzIGhhdmUgYmVlbiBhZGp1c3RlZCB0byB1c2UgaXQsIHRlc3RzIGZvcgotICBvdGhlciBtb2R1bGVzIHdpdGggYm90aCBDIGFuZCBQeXRob24gaW1wbGVtZW50YXRpb25zIGluIHRoZSBzdGRsaWIKLSAgY2FuIGJlIGFkanVzdGVkIHRvIHVzZSBpdCBvdmVyIHRpbWUuCi0KLS0gSXNzdWUgIzU4Mzc6IENlcnRhaW4gc2VxdWVuY2VzIG9mIGNhbGxzIHRvIHNldCgpIGFuZCB1bnNldCgpIGZvcgotICBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQgb2JqZWN0cyByZXN0b3JlZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gIGluY29ycmVjdGx5IG9uIF9fZXhpdF9fLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjNTYzMDogQSByZXBsYWNlbWVudCBQeUNPYmplY3QgQVBJLCBQeUNhcHN1bGUsIGhhcyBiZWVuIGFkZGVkLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBhbHBoYSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktNC00KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yCi0gIGludGVnZXJzLgotCi0tIElzc3VlICM1NjY2OiBQeV9CdWlsZFZhbHVlJ3MgJ2MnIGNvZGUgc2hvdWxkIGNyZWF0ZSBieXRlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzU0OTk6IFRoZSAnYycgY29kZSBmb3IgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgbm93IG9ubHkgYWNjZXB0cyBhCi0gIGJ5dGUsIGFuZCB0aGUgJ0MnIGNvZGUgb25seSBhY2NlcHRzIGEgdW5pY29kZSBjaGFyYWN0ZXIuCi0KLS0gRml4IGEgcHJvYmxlbSBpbiBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24gdGhhdCBsZWFkcyB0byAidW5kZXRlY3RlZCBlcnJvcnMiCi0gIHdoZW4gaGl0dGluZyB0aGUgcmVjdXJzaW9uIGxpbWl0IHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KLQotLSBJc3N1ZSAjMTY2NTIwNjogUmVtb3ZlIHRoZSBsYXN0IGVhZ2VyIGltcG9ydCBpbiBfd2FybmluZ3MuYyBhbmQgbWFrZSBpdCBsYXp5LgotCi0tIEZpeCBhIHNlZ2ZhdWx0IHdoZW4gcnVubmluZyB0ZXN0X2V4Y2VwdGlvbnMgd2l0aCBjb3ZlcmFnZSwgY2F1c2VkIGJ5Ci0gIGluc3VmZmljaWVudCBjaGVja3MgaW4gYWNjZXNzb3JzIG9mIEV4Y2VwdGlvbi5fX2NvbnRleHRfXy4KLQotLSBJc3N1ZSAjNTYwNDogbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gbW9kdWxlIG5hbWUgcGFzc2VkIHRvCi0gIGltcC5maW5kX21vZHVsZSgpIHdlcmUgY29udmVydGVkIHRvIFVURi04IHdoaWxlIHRoZSBwYXRoIGlzCi0gIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nLCBjYXVzaW5nIG5vbnNlbnNlLgotCi0tIElzc3VlICM1MTI2OiBzdHIuaXNwcmludGFibGUoKSByZXR1cm5lZCBGYWxzZSBmb3Igc3BhY2UgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjNDg2NTogT24gTWFjT1NYIC9MaWJyYXJ5L1B5dGhvbi8yLjcvc2l0ZS1wYWNrYWdlcyBpcyBhZGRlZCB0bwotICB0aGUgZW5kIHN5cy5wYXRoLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzeXN0ZW0gaW5zdGFsbCBvZiBQeXRob24uCi0KLS0gSXNzdWUgIzQ2ODg6IEFkZCBhIGhldXJpc3RpYyBzbyB0aGF0IHR1cGxlcyBhbmQgZGljdHMgY29udGFpbmluZyBvbmx5Ci0gIHVudHJhY2thYmxlIG9iamVjdHMgYXJlIG5vdCB0cmFja2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gVGhpcyBjYW4KLSAgcmVkdWNlIHRoZSBzaXplIG9mIGNvbGxlY3Rpb25zIGFuZCB0aGVyZWZvcmUgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBvdmVyaGVhZAotICBvbiBsb25nLXJ1bm5pbmcgcHJvZ3JhbXMsIGRlcGVuZGluZyBvbiB0aGVpciBwYXJ0aWN1bGFyIHVzZSBvZiBkYXRhdHlwZXMuCi0KLS0gSXNzdWUgIzU1MTI6IFJld3JpdGUgUHlMb25nIGxvbmcgZGl2aXNpb24gYWxnb3JpdGhtICh4X2RpdnJlbSkgdG8KLSAgaW1wcm92ZSBpdHMgcGVyZm9ybWFuY2UuICBMb25nIGRpdmlzaW9ucyBhbmQgcmVtYWluZGVyIG9wZXJhdGlvbnMKLSAgYXJlIG5vdyBiZXR3ZWVuIDUwJSBhbmQgMTUwJSBmYXN0ZXIuCi0KLS0gSXNzdWUgIzQyNTg6IE1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGJhc2UgMioqMzAgaW5zdGVhZCBvZiBiYXNlCi0gIDIqKjE1IGZvciB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMsIGZvciBwZXJmb3JtYW5jZQotICByZWFzb25zLiAgQmFzZSAyKiozMCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gNjQtYml0IG1hY2hpbmVzLiAgQWRkCi0gIC0tZW5hYmxlLWJpZy1kaWdpdHMgb3B0aW9uIHRvIGNvbmZpZ3VyZSwgd2hpY2ggb3ZlcnJpZGVzIHRoZQotICBkZWZhdWx0LiAgQWRkIHN5cy5pbnRfaW5mbyBzdHJ1Y3RzZXEgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dAotICB0aGUgaW50ZXJuYWwgZm9ybWF0LgotCi0tIElzc3VlICM0NDc0OiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyIG5vdyBjb252ZXJ0cyBjaGFyYWN0ZXJzIG91dHNpZGUKLSAgdGhlIEJNUCB0byBzdXJyb2dhdGUgcGFpcnMsIG9uIHN5c3RlbXMgd2l0aCBzaXplb2Yod2NoYXJfdCkgPT0gNAotICBhbmQgc2l6ZW9mKFB5X1VOSUNPREUpID09IDIuCi0KLS0gSXNzdWUgIzUyMzc6IEFsbG93IGF1dG8tbnVtYmVyZWQgZmllbGRzIGluIHN0ci5mb3JtYXQoKS4gRm9yCi0gIGV4YW1wbGU6ICd7fSB7fScuZm9ybWF0KDEsIDIpID09ICcxIDInLgotCi0tIElzc3VlICM1MzkyOiB3aGVuIGEgdmVyeSBsb3cgcmVjdXJzaW9uIGxpbWl0IHdhcyBzZXQsIHRoZSBpbnRlcnByZXRlciB3b3VsZAotICBhYm9ydCB3aXRoIGEgZmF0YWwgZXJyb3IgYWZ0ZXIgdGhlIHJlY3Vyc2lvbiBsaW1pdCB3YXMgaGl0IHR3aWNlLgotCi0tIElzc3VlICMzODQ1OiBJbiBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncyBhdm9pZCBpbnZhbGlkIG1lbW9yeSBhY2Nlc3Mgd2l0aAotICBzaG9ydCBmaWxlIG5hbWVzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzI2MjU6IGFkZGVkIG1pc3NpbmcgaXRlbXMoKSBjYWxsIHRvIHRoZSBmb3IgbG9vcCBpbgotICBtYWlsYm94Lk1ILmdldF9tZXNzYWdlKCkuCi0KLS0gSXNzdWUgIzU2NDA6IEZpeCBfbXVsdGlieXRlY29kZWMgc28gdGhhdCBDSksgY29kZWNzIGRvbid0IHJlcGVhdAotICBlcnJvciBzdWJzdGl0dXRpb25zIGZyb20gbm9uLXN0cmljdCBjb2RlYyBlcnJvciBjYWxsYmFja3MgaW4KLSAgaW5jcmVtZW50YWxlbmNvZGVyIGFuZCBTdHJlYW1Xcml0ZXIuCi0KLS0gSXNzdWUgIzU2NTY6IEZpeCB0aGUgY292ZXJhZ2UgcmVwb3J0aW5nIHdoZW4gcnVubmluZyB0aGUgdGVzdCBzdWl0ZSB3aXRoCi0gIHRoZSAtVCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNTY0NzogTXV0YWJsZVNldC5fX2lhbmRfXygpIG5vIGxvbmdlciBtdXRhdGVzIHNlbGYgZHVyaW5nIGl0ZXJhdGlvbi4KLQotLSBJc3N1ZSAjNTYyNDogRml4IHRoZSBfd2lucmVnIG1vZHVsZSBuYW1lIHN0aWxsIHVzZWQgaW4gc2V2ZXJhbCBtb2R1bGVzLgotCi0tIElzc3VlICM1NjI4OiBGaXggaW8uVGV4dElPV3JhcHBlci5yZWFkKCkgd2l0aCBhIHVucmVhZGFibGUgYnVmZmVyLgotCi0tIElzc3VlICM1NjE5OiBNdWx0aXByb2Nlc3NpbmcgY2hpbGRyZW4gZGlzb2JleSB0aGUgZGVidWcgZmxhZyBhbmQgY2F1c2VzCi0gIHBvcHVwcyBvbiB3aW5kb3dzIGJ1aWxkYm90cy4gUGF0Y2ggYXBwbGllZCB0byB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLgotCi0tIElzc3VlICM1NDAwOiBBZGRlZCBwYXRjaCBmb3IgbXVsdGlwcm9jZXNzaW5nIG9uIG5ldGJzZCBjb21waWxhdGlvbi9zdXBwb3J0Ci0KLS0gSXNzdWUgIzUzODc6IEZpeGVkIG1tYXAubW92ZSBjcmFzaCBieSBpbnRlZ2VyIG92ZXJmbG93LgotCi0tIElzc3VlICM1MjYxOiBQYXRjaCBtdWx0aXByb2Nlc3NpbmcncyBzZW1hcGhvcmUuYyB0byBzdXBwb3J0IGNvbnRleHQKLSAgbWFuYWdlciB1c2U6ICJ3aXRoIG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkiIHdvcmtzIG5vdy4KLQotLSBJc3N1ZSAjNTIzNjogQ2hhbmdlIHRpbWUuc3RycHRpbWUoKSB0byBvbmx5IHRha2Ugc3RyaW5ncy4gRGlkbid0IHdvcmsgd2l0aAotICBieXRlcyBhbHJlYWR5IGJ1dCB0aGUgZmFpbHVyZSB3YXMgbm9uLW9idmlvdXMuCi0KLS0gSXNzdWUgIzUxNzc6IE11bHRpcHJvY2Vzc2luZydzIFNvY2tldExpc3RlbmVyIGNsYXNzIG5vdyB1c2VzCi0gIHNvY2tldC5TT19SRVVTRUFERFIgb24gYWxsIGNvbm5lY3Rpb25zIHNvIHRoYXQgdGhlIHVzZXIgbm8gbG9uZ2VyIG5lZWRzCi0gIHRvIHdhaXQgMTIwIHNlY29uZHMgZm9yIHRoZSBzb2NrZXQgdG8gZXhwaXJlLgotCi0tIElzc3VlICM1NTk1OiBGaXggVW5ib3VuZGVkTG9jYWxFcnJvciBpbiBudHBhdGguaXNtb3VudCgpLgotCi0tIElzc3VlICMxMTc0NjA2OiBDYWxsaW5nIHJlYWQoKSB3aXRob3V0IGFyZ3VtZW50cyBvZiBhbiB1bmJvdW5kZWQgZmlsZQotICAodHlwaWNhbGx5IC9kZXYvemVybyB1bmRlciBVbml4KSBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIuCi0KLS0gVGhlIG1heF9idWZmZXJfc2l6ZSBhcmd1bWVudHMgb2YgaW8uQnVmZmVyZWRXcml0ZXIsIGlvLkJ1ZmZlcmVkUldQYWlyLCBhbmQKLSAgaW8uQnVmZmVyZWRSYW5kb20gaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMi4KLQotLSBJc3N1ZSAjNTA2ODogRml4ZWQgdGhlIHRhcmZpbGUuX0JaMlByb3h5LnJlYWQoKSBtZXRob2QgdGhhdCB3b3VsZCBsb29wCi0gIGZvcmV2ZXIgb24gaW5jb21wbGV0ZSBpbnB1dC4gVGhhdCBjYXVzZWQgdGFyZmlsZS5vcGVuKCkgdG8gaGFuZyB3aGVuIHVzZWQKLSAgd2l0aCBtb2RlICdyJyBvciAncjpiejInIGFuZCBhIGZpbGVvYmogYXJndW1lbnQgdGhhdCBjb250YWluZWQgbm8gZGF0YSBvcgotICBwYXJ0aWFsIGJ6aXAyIGNvbXByZXNzZWQgZGF0YS4KLQotLSBJc3N1ZSAjMjExMDogQWRkIHN1cHBvcnQgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3IgYW5kICduJyB0eXBlCi0gIHNwZWNpZmllciB0byBEZWNpbWFsLl9fZm9ybWF0X18KLQotLSBGaXggRGVjaW1hbC5fX2Zvcm1hdF9fIGJ1ZyB0aGF0IHN3YXBwZWQgdGhlIG1lYW5pbmdzIG9mIHRoZSAnPCcgYW5kCi0gICc+JyBhbGlnbm1lbnQgY2hhcmFjdGVycy4KLQotLSBUaGUgZXJyb3IgZGV0ZWN0aW9uIGNvZGUgaW4gRmlsZUlPLmNsb3NlKCkgY291bGQgZmFpbCB0byByZWZsZWN0IHRoZSBgZXJybm9gCi0gIHZhbHVlLCBhbmQgcmVwb3J0IGl0IGFzIC0xIGluc3RlYWQuCi0KLS0gSXNzdWUgIzUwMTY6IEZpbGVJTy5zZWVrYWJsZSgpIGNvdWxkIHJldHVybiBGYWxzZSBpZiB0aGUgZmlsZSBwb3NpdGlvbgotICB3YXMgbmVnYXRpdmUgd2hlbiB0cnVuY2F0ZWQgdG8gYSBDIGludC4gUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1MzkxOiBtbWFwIG5vdyBkZWFscyBleGNsdXNpdmVseSB3aXRoIGJ5dGVzLgotCi0tIElzc3VlICM1NDYzOiBJbiBzdHJ1Y3QgbW9kdWxlLCByZW1vdmUgZGVwcmVjYXRlZCBvdmVyZmxvdyB3cmFwcGluZwotICB3aGVuIHBhY2tpbmcgYW4gaW50ZWdlcjogc3RydWN0LnBhY2soJz1MJywgLTEpIG5vdyByYWlzZXMKLSAgc3RydWN0LmVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIGInXHhmZlx4ZmZceGZmXHhmZicuICBUaGUKLSAgX1BZX1NUUlVDVF9SQU5HRV9DSEVDS0lORyBhbmQgX1BZX1NUUlVDVF9PVkVSRkxPV19NQVNLSU5HIGNvbnN0YW50cwotICBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzdHJ1Y3QgbW9kdWxlLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBhbHBoYSAxCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDA5LTAzLTA3KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBUaGUgaW8gbW9kdWxlIGhhcyBiZWVuIHJlaW1wbGVtZW50ZWQgaW4gQyBmb3Igc3BlZWQuCi0KLS0gR2l2ZSBkaWN0IHZpZXdzIGFuIGluZm9ybWF0aXZlIF9fcmVwcl9fLgotCi0tIElzc3VlICM1MjQ3OiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiB1bmtub3duIGZvcm1hdCBjb2RlcyBhcmUKLSAgdXNlZCB3aGVuIHVzaW5nIHN0ci5mb3JtYXQoKSB3aXRoIHN0ciwgaW50LCBhbmQgZmxvYXQgYXJndW1lbnRzLgotCi0tIElzc3VlICM1MjQ5OiB0aW1lLnN0cmZ0aW1lIHJldHVybmVkIG1hbGZvcm1lZCBzdHJpbmcgd2hlbiBmb3JtYXQgc3RyaW5nCi0gIGNvbnRhaW5lZCBub24gYXNjaWkgY2hhcmFjdGVyIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzQ2MjY6IGNvbXBpbGUoKSwgZXhlYygpLCBhbmQgZXZhbCgpIGlnbm9yZSB0aGUgY29kaW5nIGNvb2tpZSBpZiB0aGUKLSAgc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gZGVjb2RlZCBpbnRvIHN0ci4KLQotLSBJc3N1ZSAjNTE4NjogUmVkdWNlIGhhc2ggY29sbGlzaW9ucyBmb3Igb2JqZWN0cyB3aXRoIG5vIF9faGFzaF9fIG1ldGhvZCBieQotICByb3RhdGluZyB0aGUgb2JqZWN0IHBvaW50ZXIgYnkgNCBiaXRzIHRvIHRoZSByaWdodC4KLQotLSBJc3N1ZSAjNDU3NTogRml4IFB5X0lTX0lORklOSVRZIG1hY3JvIHRvIHdvcmsgY29ycmVjdGx5IG9uIHg4NyBGUFVzOgotICBpdCBub3cgZm9yY2VzIGl0cyBhcmd1bWVudCB0byBkb3VibGUgYmVmb3JlIHRlc3RpbmcgZm9yIGluZmluaXR5LgotCi0tIElzc3VlICM1MTM3OiBNYWtlIGxlbigpIGNvcnJlY3RseSByYWlzZSBhIFR5cGVFcnJvciB3aGVuIGEgX19sZW5fXyBtZXRob2QKLSAgcmV0dXJucyBhIG5vbi1udW1iZXIgdHlwZS4KLQotLSBJc3N1ZSAjNTE4MjogUmVtb3ZlZCBtZW1vcnl2aWV3Ll9fc3RyX18uCi0KLS0gSXNzdWUgIzE3MTc6IFJlbW92ZWQgYnVpbHRpbiBjbXAoKSBmdW5jdGlvbiwgZHJvcHBlZCB0cF9jb21wYXJlCi0gIHNsb3QsIHRoZSBDIEFQSSBmdW5jdGlvbnMgUHlPYmplY3RfQ29tcGFyZSBhbmQgUHlVbmljb2RlX0NvbXBhcmUgYW5kCi0gIHRoZSB0eXBlIGRlZmluaXRpb24gY21wZnVuYy4gIFRoZSB0cF9jb21wYXJlIHNsb3QgaGFzIGJlZW4gcmVuYW1lZAotICB0byB0cF9yZXNlcnZlZCwgYW5kIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNhZ2UuCi0KLS0gSXNzdWUgIzEyNDI2NTc6IHRoZSBfX2xlbl9fKCkgYW5kIF9fbGVuZ3RoX2hpbnRfXygpIGNhbGxzIGluIHNldmVyYWwgdG9vbHMKLSAgd2VyZSBzdXBwcmVzc2luZyBhbGwgZXhjZXB0aW9ucy4gIFRoZXNlIGluY2x1ZGUgbGlzdCgpIGFuZCBieXRlYXJyYXkoKS4KLQotLSBJc3N1ZSAjNDcwNzogcm91bmQoeCwgbikgbm93IHJldHVybnMgYW4gaW50ZWdlciBpZiB4IGlzIGFuIGludGVnZXIuCi0gIFByZXZpb3VzbHkgaXQgcmV0dXJuZWQgYSBmbG9hdC4KLQotLSBJc3N1ZSAjNDc1MzogQnkgZW5hYmxpbmcgYSBjb25maWd1cmUgb3B0aW9uIG5hbWVkICctLXdpdGgtY29tcHV0ZWQtZ290b3MnCi0gIG9uIGNvbXBpbGVycyB0aGF0IHN1cHBvcnQgaXQgKG5vdGFibHk6IGdjYywgU3VuUHJvLCBpY2MpLCB0aGUgYnl0ZWNvZGUKLSAgZXZhbHVhdGlvbiBsb29wIGlzIGNvbXBpbGVkIHdpdGggYSBuZXcgZGlzcGF0Y2ggbWVjaGFuaXNtIHdoaWNoIGdpdmVzCi0gIHNwZWVkdXBzIG9mIHVwIHRvIDIwJSwgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0sIG9uIHZhcmlvdXMgYmVuY2htYXJrcy4KLQotLSBJc3N1ZSAjNDg3NDogTW9zdCBidWlsdGluIGRlY29kZXJzIG5vdyByZWplY3QgdW5pY29kZSBpbnB1dC4KLQotLSBJc3N1ZSAjNDg0MjogRG9uJ3QgYWxsb3cgdHJhaWxpbmcgJ0wnIHdoZW4gY29uc3RydWN0aW5nIGFuIGludGVnZXIKLSAgZnJvbSBhIHN0cmluZy4KLQotLSBJc3N1ZSAjNDk5MTogb3MuZmRvcGVuIG5vdyByYWlzZXMgYW4gT1NFcnJvciBmb3IgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLgotCi0tIElzc3VlICM0ODM4OiBXaGVuIGEgbW9kdWxlIGlzIGRlYWxsb2NhdGVkLCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUKLSAgb3B0aW9uYWwgbW9kdWxlIHN0YXRlIGRhdGEuCi0KLS0gSXNzdWUgIzQ5MTA6IFJlbmFtZSBuYl9sb25nIHNsb3QgdG8gbmJfcmVzZXJ2ZWQsIGFuZCBjaGFuZ2UgaXRzCi0gIHR5cGUgdG8gYGAodm9pZCAqKWBgLgotCi0tIElzc3VlICM0OTM1OiBUaGUgb3ZlcmZsb3cgY2hlY2tpbmcgY29kZSBpbiB0aGUgZXhwYW5kdGFicygpIG1ldGhvZCBjb21tb24KLSAgdG8gc3RyLCBieXRlcyBhbmQgYnl0ZWFycmF5IGNvdWxkIGJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBjb21waWxlciwgbGV0dGluZwotICB0aGUgaW50ZXJwcmV0ZXIgc2VnZmF1bHQgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICMzNzIwOiBGaXggYSBjcmFzaCB3aGVuIGFuIGl0ZXJhdG9yIG1vZGlmaWVzIGl0cyBjbGFzcyBhbmQgcmVtb3ZlcyBpdHMKLSAgX19uZXh0X18gbWV0aG9kLgotCi0tIElzc3VlICM0OTEwOiBCdWlsdGluIGludCgpIGZ1bmN0aW9uIGFuZCBQeU51bWJlcl9Mb25nL1B5TnVtYmVyX0ludCBBUEkKLSAgZnVuY3Rpb24gbm8gbG9uZ2VyIGF0dGVtcHQgdG8gY2FsbCB0aGUgX19sb25nX18gc2xvdCB0byBjb252ZXJ0IGFuIG9iamVjdAotICB0byBhbiBpbnRlZ2VyLiAgT25seSB0aGUgX19pbnRfXyBhbmQgX190cnVuY19fIHNsb3RzIGFyZSBleGFtaW5lZC4KLQotLSBJc3N1ZSAjNDg5MzogVXNlIE5UIHRocmVhZGluZyBvbiBDRS4KLQotLSBJc3N1ZSAjNDkxNTogUG9ydCBzeXNtb2R1bGUgdG8gV2luZG93cyBDRS4KLQotLSBJc3N1ZSAjNDg2ODogdXRmLTgsIHV0Zi0xNiBhbmQgbGF0aW4xIGRlY29kaW5nIGFyZSBub3cgMnggdG8gNHggZmFzdGVyLiBUaGUKLSAgY29tbW9uIGNhc2VzIGFyZSBvcHRpbWl6ZWQgdGhhbmtzIHRvIGEgZGVkaWNhdGVkIGZhc3QgcGF0aCBhbmQgYSBtb2RlcmF0ZQotICBhbW91bnQgb2YgbG9vcCB1bnJvbGxpbmcuCi0KLS0gSXNzdWUgIzQwNzQ6IENoYW5nZSB0aGUgY3JpdGVyaWEgZm9yIGRvaW5nIGEgZnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gKGkuZS4KLSAgY29sbGVjdGluZyB0aGUgb2xkZXN0IGdlbmVyYXRpb24pIHNvIHRoYXQgYWxsb2NhdGluZyBsb3RzIG9mIG9iamVjdHMgd2l0aG91dAotICBkZXN0cm95aW5nIHRoZW0gZG9lcyBub3Qgc2hvdyBxdWFkcmF0aWMgcGVyZm9ybWFuY2UuIEJhc2VkIG9uIGEgcHJvcG9zYWwgYnkKLSAgTWFydGluIHZvbiBMw7Z3aXMgYXQKLSAgaHR0cDovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWRldi8yMDA4LUp1bmUvMDgwNTc5Lmh0bWwuCi0KLS0gSXNzdWUgIzQ2MDQ6IFNvbWUgb2JqZWN0cyBvZiB0aGUgSS9PIGxpYnJhcnkgY291bGQgc3RpbGwgYmUgdXNlZCBhZnRlcgotICBoYXZpbmcgYmVlbiBjbG9zZWQgKGZvciBpbnN0YW5jZSwgYSByZWFkKCkgY2FsbCBjb3VsZCByZXR1cm4gc29tZQotICBwcmV2aW91c2x5IGJ1ZmZlcmVkIGRhdGEpLiBQYXRjaCBieSBEbWl0cnkgVmFzaWxpZXYuCi0KLS0gSXNzdWUgIzQ3MDU6IEZpeCB0aGUgLXUgKCJ1bmJ1ZmZlcmVkIGJpbmFyeSBzdGRvdXQgYW5kIHN0ZGVyciIpIGNvbW1hbmQtbGluZQotICBmbGFnIHRvIHdvcmsgcHJvcGVybHkuIEZ1cnRoZXJtb3JlLCB3aGVuIHNwZWNpZnlpbmcgLXUsIHRoZSB0ZXh0IHN0ZG91dAotICBhbmQgc3RkZXJyIHN0cmVhbXMgaGF2ZSBsaW5lLWJ5LWxpbmUgYnVmZmVyaW5nIGVuYWJsZWQgKHRoZSBkZWZhdWx0IGJlaW5nCi0gIHRvIGJ1ZmZlciBhcmJpdHJhcnkgY2h1bmtzIG9mIGRhdGEpLgotCi0tIFRoZSBpbnRlcm5hbCB0YWJsZSwgX1B5TG9uZ19EaWdpdFZhbHVlLCBpcyBub3cgYW4gYXJyYXkgb2YgdW5zaWduZWQgY2hhcnMKLSAgaW5zdGVhZCBvZiBpbnRzIChyZWR1Y2luZyBpdHMgc2l6ZSBmcm9tIDQgdG8gOCB0aW1lcyB0aGVyZWJ5IHJlZHVjaW5nCi0gIFB5dGhvbidzIG92ZXJhbGwgbWVtb3J5KS4KLQotLSBJc3N1ZSAjMTE4MDE5MzogV2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIC5weWMgKG9yIC5weW8pIGZpbGUgd2l0aAotICBhbiBleGlzdGluZyAucHkgY291bnRlcnBhcnQsIG92ZXJyaWRlIHRoZSBjb19maWxlbmFtZSBhdHRyaWJ1dGVzIG9mIGFsbAotICBjb2RlIG9iamVjdHMgaWYgdGhlIG9yaWdpbmFsIGZpbGVuYW1lIGlzIG9ic29sZXRlICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZQotICBmaWxlIGhhcyBiZWVuIHJlbmFtZWQsIG1vdmVkLCBvciBpZiBpdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGRpZmZlcmVudCBwYXRocykuCi0gIFBhdGNoIGJ5IFppZ2EgU2VpbG5hY2h0IGFuZCBKZWFuLVBhdWwgQ2FsZGVyb25lLgotCi0tIElzc3VlICM0NTgwOiBGaXggc2xpY2luZyBvZiBtZW1vcnl2aWV3cyB3aGVuIHRoZSBpdGVtIHNpemUgaXMgZ3JlYXRlciB0aGFuCi0gIG9uZSBieXRlLiBBbHNvIGZpeGVzIHRoZSBtZWFuaW5nIG9mIGxlbigpIHNvIHRoYXQgaXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mCi0gIGl0ZW1zLCByYXRoZXIgdGhhbiB0aGUgc2l6ZSBpbiBieXRlcy4KLQotLSBJc3N1ZSAjNDA3NTogVXNlIE91dHB1dERlYnVnU3RyaW5nVyBpbiBQeV9GYXRhbEVycm9yLgotCi0tIElzc3VlICM0NzQ3OiBXaGVuIHRoZSB0ZXJtaW5hbCBkb2VzIG5vdCB1c2UgdXRmLTgsIGV4ZWN1dGluZyBhIHNjcmlwdCB3aXRoCi0gIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lIGNvdWxkIGZhaWwgd2l0aCBhICJTeW50YXhFcnJvcjogTm9uZSIgZXJyb3IuCi0KLS0gSXNzdWUgIzQ3OTc6IElPRXJyb3IuZmlsZW5hbWUgd2FzIG5vdCBzZXQgd2hlbiBgYF9maWxlaW8uRmlsZUlPYGAgZmFpbGVkCi0gIHRvIG9wZW4gZmlsZSB3aXRoIGEgYnl0ZXMgZmlsZW5hbWUgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMzY4MDogUmVmZXJlbmNlIGN5Y2xlcyBjcmVhdGVkIHRocm91Z2ggYSBkaWN0LCBzZXQgb3IgZGVxdWUgaXRlcmF0b3IKLSAgZGlkIG5vdCBnZXQgY29sbGVjdGVkLgotCi0tIElzc3VlICM0NzAxOiBQeU9iamVjdF9IYXNoIG5vdyBpbXBsaWNpdGx5IGNhbGxzIFB5VHlwZV9SZWFkeSBvbiB0eXBlcwotICB3aGVyZSB0aGUgdHBfaGFzaCBhbmQgdHBfZGljdCBzbG90cyBhcmUgYm90aCBOVUxMLgotCi0tIElzc3VlICM0NzU5OiBOb25lIGlzIG5vdyBhbGxvd2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBvZgotICBieXRlYXJyYXkudHJhbnNsYXRlKCkuICBJdCB3YXMgYWx3YXlzIGFsbG93ZWQgZm9yIGJ5dGVzLnRyYW5zbGF0ZSgpLgotCi0tIEFkZGVkIHRlc3QgY2FzZSB0byBlbnN1cmUgYXR0ZW1wdHMgdG8gcmVhZCBmcm9tIGEgZmlsZSBvcGVuZWQgZm9yIHdyaXRpbmcKLSAgZmFpbC4KLQotLSBJc3N1ZSAjMzEwNjogU3BlZWR1cCBzb21lIGNvbXBhcmlzb25zIChzdHIvc3RyIGFuZCBpbnQvaW50KS4KLQotLSBJc3N1ZSAjMjE4MzogU2ltcGxpZnkgYW5kIG9wdGltaXplIGJ5dGVjb2RlIGZvciBsaXN0LCBkaWN0IGFuZCBzZXQKLSAgY29tcHJlaGVuc2lvbnMuIE9yaWdpbmFsIHBhdGNoIGZvciBsaXN0IGNvbXByZWhlbnNpb25zIGJ5IE5lYWwgTm9yd2l0ei4KLQotLSBJc3N1ZSAjMjQ2NzogZ2MuREVCVUdfU1RBVFMgcmVwb3J0ZWQgaW52YWxpZCBlbGFwc2VkIHRpbWVzLiBBbHNvLCBhbHdheXMKLSAgcHJpbnQgZWxhcHNlZCB0aW1lcywgbm90IG9ubHkgd2hlbiBzb21lIG9iamVjdHMgYXJlIHVuY29sbGVjdGFibGUgLwotICB1bnJlYWNoYWJsZS4gT3JpZ2luYWwgcGF0Y2ggYnkgTmVpbCBTY2hlbWVuYXVlci4KLQotLSBJc3N1ZSAjMzQzOTogQWRkIGEgYml0X2xlbmd0aCBtZXRob2QgdG8gaW50LgotCi0tIElzc3VlICMyMTczOiBXaGVuIGdldHRpbmcgZGV2aWNlIGVuY29kaW5nLCBjaGVjayB0aGF0IHJldHVybiB2YWx1ZSBvZgotICBubF9sYW5naW5mbyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZy4gIFRoaXMgd2FzIGNhdXNpbmcgc2lsZW50IGJ1aWxkCi0gIGZhaWx1cmVzIG9uIE9TIFguCi0KLS0gSXNzdWUgIzQ1OTc6IEZpeGVkIHNldmVyYWwgb3Bjb2RlcyB0aGF0IHdlcmVuJ3QgYWx3YXlzIHByb3BhZ2F0aW5nCi0gIGV4Y2VwdGlvbnMuCi0KLS0gSXNzdWUgIzQ1ODk6IEZpeGVkIGV4Y2VwdGlvbiBoYW5kbGluZyB3aGVuIHRoZSBfX2V4aXRfXyBmdW5jdGlvbiBvZiBhCi0gIGNvbnRleHQgbWFuYWdlciByZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgYm9vbC4KLQotLSBJc3N1ZSAjNDQ0NTogUmVwbGFjZSAic2l6ZW9mKFB5Qnl0ZXNPYmplY3QpIiB3aXRoCi0gICJvZmZzZXRvZihQeUJ5dGVzT2JqZWN0LCBvYl9zdmFsKSArIDEiIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yCi0gIGJ5dGVzIGluc3RhbmNlcy4gIE9uIGEgdHlwaWNhbCBtYWNoaW5lIHRoaXMgc2F2ZXMgMyBieXRlcyBvZiBtZW1vcnkKLSAgKG9uIGF2ZXJhZ2UpIHBlciBhbGxvY2F0aW9uIG9mIGEgYnl0ZXMgaW5zdGFuY2UuCi0KLS0gSXNzdWUgIzQ1MzM6IEZpbGUgcmVhZCBvcGVyYXRpb24gd2FzIGRyZWFkZnVsbHkgc2xvdyBkdWUgdG8gYSBzbG93bHkKLSAgZ3Jvd2luZyByZWFkIGJ1ZmZlci4gRml4ZWQgYnkgdXNpbmcgdGhlIHNhbWUgZ3Jvd3RoIHJhdGUgYWxnb3JpdGhtIGFzCi0gIFB5dGhvbiAyLnguCi0KLS0gSXNzdWUgIzQ1MDk6IFZhcmlvdXMgaXNzdWVzIHN1cnJvdW5kaW5nIHJlc2l6ZSBvZiBieXRlYXJyYXkgb2JqZWN0cyB0bwotICB3aGljaCB0aGVyZSBhcmUgYnVmZmVyIGV4cG9ydHMgKGUuZy4gbWVtb3J5dmlldyBpbnN0YW5jZXMpLgotCi0tIElzc3VlICM0MjMzOiBDaGFuZ2VkIHNlbWFudGljIG9mIGBgX2ZpbGVpby5GaWxlSU9gYCdzIGBgY2xvc2UoKWBgCi0gIG1ldGhvZCBvbiBmaWxlIG9iamVjdHMgd2l0aCBjbG9zZWZkPUZhbHNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHN0aWxsCi0gIGtlcHQgb3BlbiBidXQgdGhlIGZpbGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGNsb3NlZCBmaWxlLiBUaGUgYGBGaWxlSU9gYAotICBvYmplY3QgYWxzbyBnb3QgYSBuZXcgcmVhZG9ubHkgYXR0cmlidXRlIGBgY2xvc2VmZGBgLgotCi0tIElzc3VlICM0NTY5OiBJbnRlcnByZXRlciBjcmFzaCB3aGVuIG11dGF0aW5nIGEgbWVtb3J5dmlldyB3aXRoIGFuIGl0ZW0gc2l6ZQotICBsYXJnZXIgdGhhbiAxLgotCi0tIElzc3VlICM0NzQ4OiBMYW1iZGEgZ2VuZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEgdmFsdWUuCi0KLS0gVGhlIHJlLnN1YigpLCByZS5zdWJuKCkgYW5kIHJlLnNwbGl0KCkgZnVuY3Rpb25zIG5vdyBhY2NlcHQgYSBmbGFncyBwYXJhbWV0ZXIuCi0KLS0gSXNzdWUgIzUxMDg6IEhhbmRsZSAlcyBsaWtlICVTLCAlUiBhbmQgJUEgaW4gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCk6IENhbGwKLSAgUHlVbmljb2RlX0RlY29kZVVURjgoKSBvbmNlLCByZW1lbWJlciB0aGUgcmVzdWx0IGFuZCBvdXRwdXQgaXQgaW4gYSBzZWNvbmQKLSAgc3RlcC4gVGhpcyBhdm9pZHMgcHJvYmxlbXMgd2l0aCBjb3VudGluZyBVVEYtOCBieXRlcyB0aGF0IGlnbm9yZXMgdGhlIGVmZmVjdAotICBvZiB1c2luZyB0aGUgcmVwbGFjZSBlcnJvciBoYW5kbGVyIGluIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzA3MTogYnl0ZS1jb21waWxhdGlvbiBpbiBEaXN0dXRpbHMgaXMgbm93IGRvbmUgd2l0aCByZXNwZWN0IHRvCi0gIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlLgotCi0tIElzc3VlICM3MDY2OiBhcmNoaXZlX3V0aWwubWFrZV9hcmNoaXZlIG5vdyByZXN0b3JlcyB0aGUgY3dkIGlmIGFuIGVycm9yIGlzCi0gIHJhaXNlZC4gSW5pdGlhbCBwYXRjaCBieSBFemlvIE1lbG90dGkuCi0KLS0gSXNzdWUgIzY1MTY6IEFkZGVkIG93bmVyL2dyb3VwIHN1cHBvcnQgd2hlbiBjcmVhdGluZyB0YXIgYXJjaGl2ZXMgaW4KLSAgRGlzdHV0aWxzLgotCi0tIElzc3VlICM2OTU0OiBGaXhlZCBjcmFzaCB3aGVuIHVzaW5nIERJU1RVVElMU19ERUJVRyBmbGFnIGluIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNjE2MzogRml4ZWQgSFAtVVggcnVudGltZSBsaWJyYXJ5IGRpciBvcHRpb25zIGluCi0gIGRpc3R1dGlscy51bml4Y29tcGlsZXIuIEluaXRpYWwgcGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyIGFuZAotICBNaWNoYWVsIEhhdWJlbndhbGxuZXIuCi0KLS0gSXNzdWUgIzY2OTM6IE5ldyBmdW5jdGlvbnMgaW4gc2l0ZS5weSB0byBnZXQgdXNlci9nbG9iYWwgc2l0ZSBwYWNrYWdlcyBwYXRocy4KLQotLSBJc3N1ZSAjNjUxMTogWmlwRmlsZSBub3cgcmFpc2VzIEJhZFppcGZpbGUgKGluc3RlYWQgb2YgYW4gSU9FcnJvcikgd2hlbgotICBvcGVuaW5nIGFuIGVtcHR5IG9yIHZlcnkgc21hbGwgZmlsZS4KLQotLSBJc3N1ZSAjNjU0NTogUmVtb3ZlZCBhc3NlcnQgc3RhdGVtZW50cyBpbiBkaXN0dXRpbHMuRXh0ZW5zaW9uLCBzbyB0aGUKLSAgYmVoYXZpb3IgaXMgc2ltaWxhciB3aGVuIHVzZWQgd2l0aCAtTy4KLQotLSB1bml0dGVzdCBoYXMgYmVlbiBzcGxpdCB1cCBpbnRvIGEgcGFja2FnZS4gIEFsbCBvbGQgbmFtZXMgc2hvdWxkIHN0aWxsIHdvcmsuCi0KLS0gSXNzdWUgIzY0NjY6IG5vdyBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGFuZCBkaXN0dXRpbHMuZW14Y2NvbXBpbGVyCi0gIHVzZXMgdGhlIHNhbWUgcmVmYWN0b3JlZCBmdW5jdGlvbiB0byBnZXQgZ2NjL2xkL2RsbHdyYXAgdmVyc2lvbnMgbnVtYmVycy4KLSAgSXQncyBgZGlzdHV0aWxzLnV0aWwuZ2V0X2NvbXBpbGVyX3ZlcnNpb25zYC4gQWRkZWQgZGVwcmVjYXRpb24gd2FybmluZ3MKLSAgZm9yIHRoZSBvYnNvbGV0ZSBnZXRfdmVyc2lvbnMoKSBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzY0MzM6IGZpeGVkIGlzc3VlcyB3aXRoIG11bHRpcHJvY2Vzc2luZy5wb29sLm1hcCBoYW5naW5nIG9uIGVtcHR5IGxpc3QKLQotLSBJc3N1ZSAjNjMxNDogbG9nZ2luZzogRXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50IGluIG1vcmUgcGxhY2VzLgotCi0tIElzc3VlICMyNjIyOiBGaXhlZCBhbiBJbXBvcnRFcnJvciB3aGVuIGltcG9ydGluZyBlbWFpbC5tZXNzYWdlIGZyb20gYQotICBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIGJ1aWx0IHdpdGggcHkyZXhlIG9yIHB5MmFwcC4KLQotLSBJc3N1ZSAjNjQ1NTogRml4ZWQgdGVzdF9idWlsZF9leHQgdW5kZXIgd2luMzIuCi0KLS0gSXNzdWUgIzYzNzc6IEVuYWJsZWQgdGhlIGNvbXBpbGVyIG9wdGlvbiwgYW5kIGRlcHJlY2F0ZSBpdHMgdXNhZ2UgYXMgYW4KLSAgYXR0cmlidXRlLgotCi0tIElzc3VlICM2NDEzOiBGaXhlZCB0aGUgbG9nIGxldmVsIGluIGRpc3R1dGlscy5kaXN0IGZvciBhbm5vdW5jZS4KLQotLSBJc3N1ZSAjNjQwMzogRml4ZWQgcGFja2FnZSBwYXRoIHVzYWdlIGluIGJ1aWxkX2V4dC4KLQotLSBJc3N1ZXMgIzUxNTUsIDUzMTMsIDUzMzE6IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9ib290c3RyYXAgd2FzCi0gIHVuY29uZGl0aW9uYWxseSBjYWxsaW5nICJvcy5jbG9zZShzeXMuc3RkaW4uZmlsZW5vKCkpIiByZXN1bHRpbmcgaW4gZmlsZQotICBkZXNjcmlwdG9yIGVycm9ycwotCi0tIElzc3VlICM2MzY1OiBEaXN0dXRpbHMgYnVpbGRfZXh0IGlucGxhY2UgbW9kZSB3YXMgY29weWluZyB0aGUgY29tcGlsZWQKLSAgZXh0ZW5zaW9uIGluIGEgc3ViZGlyZWN0b3J5IGlmIHRoZSBleHRlbnNpb24gbmFtZSBoYWQgZG90cy4KLQotLSBJc3N1ZSAjNjE2NDogQWRkZWQgYW4gQUlYIHNwZWNpZmljIGxpbmtlciBhcmd1bWVudCBpbiBEaXN0dXRpbHMKLSAgdW5peGNvbXBpbGVyLiBPcmlnaW5hbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzYyODY6IE5vdyBEaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgaXMgYmFzZWQgb24gdXJsbGliMiBpbnN0ZWFkIG9mCi0gIGh0dHBsaWIsIGFsbG93aW5nIHRoZSB1c2FnZSBvZiBodHRwX3Byb3h5LgotCi0tIElzc3VlICM2Mjg3OiBBZGRlZCB0aGUgbGljZW5zZSBmaWVsZCBpbiBEaXN0dXRpbHMgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNjI2MzogRml4ZWQgc3ludGF4IGVycm9yIGluIGRpc3R1dGlscy5jeWd3aW5jb21waWxlci4KLQotLSBJc3N1ZSAjNTIwMTogZGlzdHV0aWxzLnN5c2NvbmZpZy5wYXJzZV9tYWtlZmlsZSgpIG5vdyB1bmRlcnN0YW5kcyBgJCRgCi0gIGluIE1ha2VmaWxlcy4gVGhpcyBwcmV2ZW50cyBjb21waWxlIGVycm9ycyB3aGVuIHVzaW5nIHN5bnRheCBsaWtlOgotICBgTERGTEFHUz0nLXJwYXRoPVwkJExJQjovc29tZS9vdGhlci9wYXRoJ2AuIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICM2MTMxOiB0ZXN0X21vZHVsZWZpbmRlciBsZWFrZWQgd2hlbiBydW4gYWZ0ZXIgdGVzdF9kaXN0dXRpbHMuCi0gIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICM2MDQ4OiBOb3cgRGlzdHV0aWxzIHVzZXMgdGhlIHRhcmZpbGUgbW9kdWxlIGluIGFyY2hpdmVfdXRpbC4KLQotLSBJc3N1ZSAjNjA2MjogSW4gZGlzdHV0aWxzLCBmaXhlZCB0aGUgcGFja2FnZSBvcHRpb24gb2YgYnVpbGRfZXh0LiBGZWVkYmFjawotICBhbmQgdGVzdHMgb24gcHl3aW4zMiBieSBUaW0gR29sZGVuLgotCi0tIElzc3VlICM2MDUzOiBGaXhlZCBkaXN0dXRpbHMgdGVzdHMgb24gd2luMzIuIHBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICM2MDQ2OiBGaXhlZCB0aGUgbGlicmFyeSBleHRlbnNpb24gd2hlbiBkaXN0dXRpbHMgYnVpbGRfZXh0IGlzIHVzZWQKLSAgaW5wbGFjZS4gSW5pdGlhbCBwYXRjaCBieSBSb3VtZW4gUGV0cm92LgotCi0tIElzc3VlICM2MDQxOiBOb3cgZGlzdHV0aWxzIGBzZGlzdGAgYW5kIGByZWdpc3RlcmAgY29tbWFuZHMgdXNlIGBjaGVja2AgYXMgYQotICBzdWJjb21tYW5kLgotCi0tIElzc3VlICM2MDIyOiBhIHRlc3QgZmlsZSB3YXMgY3JlYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBieQotICB0ZXN0X2dldF9vdXRwdXRzIGluIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNTk3NzogZGlzdHV0aWxzIGJ1aWxkX2V4dC5nZXRfb3V0cHV0cyB3YXMgbm90IHRha2luZyBpbnRvIGFjY291bnQgdGhlCi0gIGlucGxhY2Ugb3B0aW9uLiBJbml0aWFsIHBhdGNoIGJ5IGt4cm9iZXJ0by4KLQotLSBJc3N1ZSAjNTk4NDogZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfZXh0LmNoZWNrX2V4dGVuc2lvbnNfbGlzdCBjaGVja3Mgd2VyZSBicm9rZW4KLSAgZm9yIG9sZC1zdHlsZSBleHRlbnNpb25zLgotCi0tIElzc3VlICM1OTc2OiBGaXhlZCBEaXN0dXRpbHMgdGVzdF9jaGVja19lbnZpcm9uLgotCi0tIElzc3VlICM1OTQxOiBEaXN0dXRpbHMgYnVpbGRfY2xpYiBjb21tYW5kIHdhcyBub3Qgd29ya2luZyBhbnltb3JlIGJlY2F1c2UKLSAgb2YgYW4gaW5jb21wbGV0ZSBjb3N0dW1pemF0aW9uIG9mIHRoZSBhcmNoaXZlciBjb21tYW5kLiBBZGRlZCBBUkZMQUdTIGluIHRoZQotICBNYWtlZmlsZSBiZXNpZGVzIEFSIGFuZCBtYWtlIERpc3R1dGlscyB1c2UgaXQuIE9yaWdpbmFsIHBhdGNoIGJ5IERhdmlkCi0gIENvdXJuYXBlYXUuCi0KLS0gSXNzdWUgIzIyNDU6IGFpZmMgbm93IHNraXBzIGNodW5rIHR5cGVzIGl0IGRvZXNuJ3QgcmVjb2duaXplLCBwZXIgc3BlYy4KLQotLSBJc3N1ZSAjNTg3NDogZGlzdHV0aWxzLnRlc3RzLnRlc3RfY29uZmlnX2NtZCBpcyBub3QgbG9jYWxlLXNlbnNpdGl2ZQotICBhbnltb3JlLgotCi0tIElzc3VlICM1ODEwOiBGaXhlZCBEaXN0dXRpbHMgdGVzdF9idWlsZF9zY3JpcHRzIHNvIGl0IHVzZXMKLSAgc3lzY29uZmlnLmdldF9jb25maWdfdmFycy4KLQotLSBJc3N1ZSAjNDk1MTogRml4ZWQgZmFpbHVyZSBpbiB0ZXN0X2h0dHBzZXJ2ZXJzLgotCi0tIElzc3VlICM1Nzk1OiBGaXhlZCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlIG9uIERlYmlhbiBwcGMuCi0KLS0gSXNzdWUgIzU2MDc6IGZpeGVkIERpc3R1dGlscyB0ZXN0X2dldF9wbGF0Zm9ybSBmb3IgTWFjIE9TIFggZmF0IGJpbmFyaWVzLgotCi0tIElzc3VlICM1NzQxOiBkb24ndCBkaXNhbGxvdyAiJSUiICh3aGljaCBpcyBhbiBlc2NhcGUgZm9yICIlIikgd2hlbiBzZXR0aW5nCi0gIGEgdmFsdWUgaW4gU2FmZUNvbmZpZ1BhcnNlci4KLQotLSBJc3N1ZSAjNTczMjogYWRkZWQgYSBuZXcgY29tbWFuZCBpbiBEaXN0dXRpbHM6IGNoZWNrLgotCi0tIElzc3VlICM1NzMxOiBEaXN0dXRpbHMgYmRpc3Rfd2luaW5zdCBubyBsb25nZXIgd29ya2VkIG9uIG5vbi1XaW5kb3dzCi0gIHBsYXRmb3Jtcy4gSW5pdGlhbCBwYXRjaCBieSBQYXVsIE1vb3JlLgotCi0tIElzc3VlICM1MDk1OiBBZGRlZCBiZGlzdF9tc2kgdG8gdGhlIGxpc3Qgb2YgYmRpc3Qgc3VwcG9ydGVkIGZvcm1hdHMuCi0gIEluaXRpYWwgZml4IGJ5IFN0ZXZlbiBCZXRoYXJkLgotCi0tIElzc3VlICMxNDkxNDMxOiBGaXhlZCBkaXN0dXRpbHMuZmlsZWxpc3QuZ2xvYl90b19yZSBmb3IgZWRnZSBjYXNlcy4KLSAgSW5pdGlhbCBmaXggYnkgV2F5bmUgRGF2aXNvbi4KLQotLSBJc3N1ZSAjNTY5NDogcmVtb3ZlZCBzcHVyaW91cyB0ZXN0IG91dHB1dCBpbiBEaXN0dXRpbHMgKHRlc3RfY2xlYW4pLgotCi0tIElzc3VlICMxMzI2MDc3OiBmaXggdGhlIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIGJ5IHRoZSB0cmFjZWJhY2sgbW9kdWxlLgotCi0tIElzc3VlICMxNjY1MjA2IChwYXJ0aWFsbHkpOiBNb3ZlIGltcG9ydHMgaW4gY2dpdGIgdG8gdGhlIHRvcCBvZiB0aGUgbW9kdWxlCi0gIGluc3RlYWQgb2YgcGVyZm9ybWluZyB0aGVtIGluIGZ1bmN0aW9ucy4gSGVscHMgcHJldmVudCBpbXBvcnQgZGVhZGxvY2tpbmcgaW4KLSAgdGhyZWFkcy4KLQotLSBJc3N1ZSAjMjUyMjogbG9jYWxlLmZvcm1hdCBub3cgY2hlY2tzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBlbnN1cmUgaXQgaGFzCi0gIGJlZW4gcGFzc2VkIG9ubHkgb25lIHBhdHRlcm4sIGF2b2lkaW5nIG15c3RlcmlvdXMgZXJyb3JzIHdoZXJlIGl0IGFwcGVhcmVkCi0gIHRoYXQgaXQgd2FzIGZhaWxpbmcgdG8gZG8gbG9jYWxpemF0aW9uLgotCi0tIElzc3VlICM1NTgzOiBBZGRlZCBvcHRpb25hbCBFeHRlbnNpb25zIGluIERpc3R1dGlscy4gSW5pdGlhbCBwYXRjaCBieSBHZW9yZwotICBCcmFuZGwuCi0KLS0gSXNzdWUgIzEyMjI6IGxvY2FsZS5mb3JtYXQoKSBidWcgd2hlbiB0aGUgdGhvdXNhbmRzIHNlcGFyYXRvciBpcyBhIHNwYWNlCi0gIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjNTQ3MjogRml4ZWQgZGlzdHV0aWxzLnRlc3RfdXRpbCB0ZWFyIGRvd24uIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFRpbSBHb2xkZW4uCi0KLS0gY29sbGVjdGlvbnMuZGVxdWUoKSBvYmplY3RzIG5vdyBoYXZlIGEgcmVhZC1vbmx5IGF0dHJpYnV0ZSBjYWxsZWQgbWF4bGVuLgotCi0tIElzc3VlICMyNjM4OiBTaG93IGEgd2luZG93IGNvbnN0cnVjdGVkIHdpdGggdGtTaW1wbGVEaWFsb2cuRGlhbG9nIG9ubHkgYWZ0ZXIKLSAgaXQgaXMgaGFzIGJlZW4gcG9wdWxhdGVkIGFuZCBwcm9wZXJseSBjb25maWd1cmVkIGluIG9yZGVyIHRvIHByZXZlbnQKLSAgd2luZG93IGZsYXNoaW5nLgotCi0tIElzc3VlICM0NzkyOiBQcmV2ZW50IGEgc2VnZmF1bHQgaW4gX3RraW50ZXIgYnkgdXNpbmcgdGhlCi0gIGd1YXJhbnRlZWQgdG8gYmUgc2FmZSBpbnRlcnAgYXJndW1lbnQgZ2l2ZW4gdG8gdGhlIFB5dGhvbkNtZCBpbiBwbGFjZSBvZgotICB0aGUgVGNsIGludGVycHJldGVyIHRha2VuIGZyb20gYSBQeXRob25DbWRfQ2xpZW50RGF0YS4KLQotLSBJc3N1ZSAjNTE5MzogR3VhcmFudGVlIHRoYXQgdGtpbnRlci5UZXh0LnNlYXJjaCByZXR1cm5zIGEgc3RyaW5nLgotCi0tIElzc3VlICM1Mzk0OiByZW1vdmVkID4gMi4zIHN5bnRheCBmcm9tIGRpc3R1dGlscy5tc3ZjOWNvbXBpbGVyLgotICBPcmlnaW5hbCBwYXRjaCBieSBBa2lyYSBLaXRhZGEuCi0KLS0gSXNzdWUgIzUzMzQ6IGFycmF5LmZyb21maWxlKCkgZmFpbGVkIHRvIGluc2VydCB2YWx1ZXMgd2hlbiBFT0ZFcnJvciB3YXMgcmFpc2VkLgotCi0tIElzc3VlICM1Mzg1OiBGaXhlZCBtbWFwIGNyYXNoIGFmdGVyIHJlc2l6ZSBmYWlsdXJlIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzUxNzk6IEZpeGVkIHN1YnByb2Nlc3MgaGFuZGxlIGxlYWsgb24gZmFpbHVyZSBvbiB3aW5kb3dzLgotCi0tIFBFUCAzNzI6ICBBZGRlZCBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpLgotCi0tIFRoZSBfYXNkaWN0KCkgZm9yIG1ldGhvZCBmb3IgbmFtZWR0dXBsZXMgbm93IHJldHVybnMgYW4gT3JkZXJlZERpY3QoKS4KLQotLSBjb25maWdwYXJzZXIgbm93IGRlZmF1bHRzIHRvIHVzaW5nIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4KLQotLSBJc3N1ZSAjNTQwMTogRml4ZWQgYSBwZXJmb3JtYW5jZSBwcm9ibGVtIGluIG1pbWV0eXBlcyB3aGVuIGBgZnJvbSBtaW1ldHlwZXMKLSAgaW1wb3J0IGd1ZXNzX2V4dGVuc2lvbmBgIHdhcyB1c2VkLgotCi0tIElzc3VlICMxNzMzOTg2OiBGaXhlZCBtbWFwIGNyYXNoIGluIGFjY2Vzc2luZyBlbGVtZW50cyBvZiBzZWNvbmQgbWFwIG9iamVjdAotICB3aXRoIHNhbWUgdGFnbmFtZSBidXQgbGFyZ2VyIHNpemUgdGhhbiBmaXJzdCBtYXAuIChXaW5kb3dzKQotCi0tIElzc3VlICM1Mzg2OiBtbWFwLndyaXRlX2J5dGUgZGlkbid0IGNoZWNrIG1hcCBzaXplLCBzbyBpdCBjb3VsZCBjYXVzZSBidWZmZXIKLSAgb3ZlcnJ1bi4KLQotLSBJc3N1ZSAjMTUzMzE2NDogSW5zdGFsbGVkIGJ1dCBub3QgbGlzdGVkIGBgKi5weW9gYCB3YXMgYnJlYWtpbmcgRGlzdHV0aWxzCi0gIGJkaXN0X3JwbSBjb21tYW5kLgotCi0tIElzc3VlICM1Mzc4OiBhZGRlZCAtLXF1aWV0IG9wdGlvbiB0byBEaXN0dXRpbHMgYmRpc3RfcnBtIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzUwNTI6IG1ha2UgRGlzdHV0aWxzIGNvbXBhdGlibGUgd2l0aCAyLjMgYWdhaW4uCi0KLS0gSXNzdWUgIzUzMTY6IEZpeGVkIGJ1aWxkYm90IGZhaWx1cmVzIGludHJvZHVjZWQgYnkgbXVsdGlwbGUgaW5oZXJpdGFuY2UKLSAgaW4gRGlzdHV0aWxzIHRlc3RzLgotCi0tIElzc3VlICM1Mjg3OiBBZGQgZXhjZXB0aW9uIGhhbmRsaW5nIGFyb3VuZCBmaW5kQ2FsbGVyKCkgY2FsbCB0byBoZWxwIG91dAotICBJcm9uUHl0aG9uLgotCi0tIElzc3VlICM1MjgyOiBGaXhlZCBtbWFwIHJlc2l6ZSBvbiAzMmJpdCB3aW5kb3dzIGFuZCB1bml4LiBXaGVuIG9mZnNldCA+IDAsCi0gIFRoZSBmaWxlIHdhcyByZXNpemVkIHRvIHdyb25nIHNpemUuCi0KLS0gSXNzdWUgIzUyOTI6IEZpeGVkIG1tYXAgY3Jhc2ggb24gaXRzIGJvdW5kYXJ5IGFjY2VzcyBtW2xlbihtKV0uCi0KLS0gSXNzdWUgIzIyNzk6IGRpc3R1dGlscy5zZGlzdC5hZGRfZGVmYXVsdHMgbm93IGFkZCBmaWxlcwotICBmcm9tIHRoZSBwYWNrYWdlX2RhdGEgYW5kIHRoZSBkYXRhX2ZpbGVzIG1ldGFkYXRhLgotCi0tIElzc3VlICM1MjU3OiByZWZhY3RvcmVkIGFsbCB0ZXN0cyBpbiBkaXN0dXRpbHMsIHNvIHRoZXkgdXNlCi0gIHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsIHRvIGF2b2lkIHdyaXRpbmcgaW4gdGhlIHRlc3RzIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNDUyNDogZGlzdHV0aWxzIGJ1aWxkX3NjcmlwdCBjb21tYW5kIGZhaWxlZCB3aXRoIC0td2l0aC1zdWZmaXg9My4KLSAgSW5pdGlhbCBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KLQotLSBJc3N1ZSAjMjQ2MTogYWRkZWQgdGVzdHMgZm9yIGRpc3R1dGlscy51dGlsCi0KLS0gSXNzdWUgIzQ5OTg6IFRoZSBtZW1vcnkgc2F2aW5nIGVmZmVjdCBvZiBfX3Nsb3RzX18gaGFkIGJlZW4gbG9zdCBvbiBGcmFjdGlvbnMKLSAgd2hpY2ggaW5oZXJpdGVkIGZyb20gbnVtYmVycy5weSB3aGljaCBkaWQgbm90IGhhdmUgX19zbG90c19fIGRlZmluZWQuICBUaGUKLSAgbnVtYmVycyBoaWVyYXJjaHkgbm93IGhhcyBpdHMgb3duIF9fc2xvdHNfXyBkZWNsYXJhdGlvbnMuCi0KLS0gSXNzdWUgIzQ2MzE6IEZpeCB1cmxvcGVuKCkgcmVzdWx0IHdoZW4gYW4gSFRUUCByZXNwb25zZSB1c2VzIGNodW5rZWQKLSAgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzUyMDM6IEZpeGVkIGN0eXBlcyBzZWdmYXVsdHMgd2hlbiBwYXNzaW5nIGEgdW5pY29kZSBzdHJpbmcgdG8gYQotICBmdW5jdGlvbiB3aXRob3V0IGFyZ3R5cGVzIChvbmx5IG9jY3VycyBpZiBIQVZFX1VTQUJMRV9XQ0hBUl9UIGlzIGZhbHNlKS4KLQotLSBJc3N1ZSAjMzM4NjogZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYiBwcmVmaXggYXJndW1lbnQgd2FzIGlnbm9yZWQKLSAgdW5kZXIgTlQgYW5kIE9TMi4gUGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KLQotLSBJc3N1ZSAjNTEyODogTWFrZSBjb21waWxlYWxsIHByb3Blcmx5IGluc3BlY3QgYnl0ZWNvZGUgdG8gZGV0ZXJtaW5lIGlmIG5lZWRzCi0gIHRvIGJlIHJlY3JlYXRlZC4gVGhpcyBhdm9pZHMgYSB0aW1pbmcgaG9sZSB0aGFua3MgdG8gdGhlIG9sZCByZWxpYW5jZSBvbiB0aGUKLSAgY3RpbWUgb2YgdGhlIGZpbGVzIGludm9sdmVkLgotCi0tIElzc3VlICM1MTIyOiBTeW5jaHJvbml6ZSB0ayBsb2FkIGZhaWx1cmUgY2hlY2sgdG8gcHJldmVudCBhIHBvdGVudGlhbAotICBkZWFkbG9jay4KLQotLSBJc3N1ZSAjMTgxODogY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBzdXBwb3J0cyBhIGtleXdvcmQgYXJndW1lbnQKLSAgJ3JlbmFtZScgd2hpY2ggbGV0cyBpbnZhbGlkIGZpZWxkbmFtZXMgYmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8KLSAgcG9zaXRpb25hbCBuYW1lcyBpbiB0aGUgZm9ybSwgXzEsIF8yLCAuLi4KLQotLSBJc3N1ZSAjNDg5MDogSGFuZGxlIGVtcHR5IHRleHQgc2VhcmNoIHBhdHRlcm4gaW4gVGtpbnRlci5UZXh0LnNlYXJjaC4KLQotLSBJc3N1ZSAjNDUxMiAocGFydCAyKTogUHJvbW90ZSBgYFppcEltcG9ydGVyLl9nZXRfZmlsZW5hbWUoKWBgIHRvIGJlIGEKLSAgcHVibGljIGRvY3VtZW50ZWQgbWV0aG9kIGBgWmlwSW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lKClgYC4KLQotLSBJc3N1ZSAjNDE5NTogVGhlIGBgcnVucHlgYCBtb2R1bGUgKGFuZCB0aGUgYGAtbWBgIHN3aXRjaCkgbm93IHN1cHBvcnQKLSAgdGhlIGV4ZWN1dGlvbiBvZiBwYWNrYWdlcyBieSBsb29raW5nIGZvciBhbmQgZXhlY3V0aW5nIGEgYGBfX21haW5fX2BgCi0gIHN1Ym1vZHVsZSB3aGVuIGEgcGFja2FnZSBuYW1lIGlzIHN1cHBsaWVkLiBJbml0aWFsIHBhdGNoIGJ5IEFuZGkKLSAgVmFqZGEuCi0KLS0gSXNzdWUgIzE3MzE3MDY6IENhbGwgVGNsX0NvbmRpdGlvbkZpbmFsaXplIGZvciBUY2xfQ29uZGl0aW9ucyB0aGF0IHdpbGwKLSAgbm90IGJlIHVzZWQgYWdhaW4gKHRoaXMgcmVxdWlyZXMgVGNsL1RrIDguMy4xKSwgYWxzbyBmaXggYSBtZW1vcnkgbGVhayBpbgotICBUa2FwcF9DYWxsIHdoZW4gY2FsbGluZyBmcm9tIGEgdGhyZWFkIGRpZmZlcmVudCB0aGFuIHRoZSBvbmUgdGhhdCBjcmVhdGVkCi0gIHRoZSBUY2wgaW50ZXJwcmV0ZXIuIFBhdGNoIGJ5IFJvYmVydCBIYW5jb2NrLgotCi0tIElzc3VlICM0Mjg1OiBDaGFuZ2Ugc3lzLnZlcnNpb25faW5mbyB0byBiZSBhIG5hbWVkIHR1cGxlLiBQYXRjaCBieQotICBSb3NzIExpZ2h0LgotCi0tIElzc3VlICMxNTIwODc3OiBOb3cgZGlzdHV0aWxzLnN5c2NvbmZpZyByZWFkcyAkQVIgZnJvbSB0aGUKLSAgZW52aXJvbm1lbnQvTWFrZWZpbGUuIFBhdGNoIGJ5IERvdWdsYXMgR3JlaW1hbi4KLQotLSBJc3N1ZSAjMTI3Njc2ODogVGhlIHZlcmJvc2Ugb3B0aW9uIHdhcyBub3QgdXNlZCBpbiB0aGUgY29kZSBvZgotICBkaXN0dXRpbHMuZmlsZV91dGlsIGFuZCBkaXN0dXRpbHMuZGlyX3V0aWwuCi0KLS0gSXNzdWUgIzUxMzI6IEZpeGVkIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyB1bmRlciBTb2xhcmlzIHdpdGgKLSAgLS1lbmFibGVkLXNoYXJlZCBhY3RpdmF0ZWQuIEluaXRpYWwgcGF0Y2ggYnkgRGF2ZSBQZXRlcnNvbi4KLQotLSBJc3N1ZSAjMTU4MTQ3NjogQWx3YXlzIHVzZSB0aGUgVGNsIGdsb2JhbCBuYW1lc3BhY2Ugd2hlbiBjYWxsaW5nIGludG8gVGNsLgotCi0tIFRoZSBzaGVsdmUgbW9kdWxlIG5vdyBkZWZhdWx0cyB0byBwaWNrbGUgcHJvdG9jb2wgMy4KLQotLSBGaXggYSBidWcgaW4gdGhlIHRyYWNlIG1vZHVsZSB3aGVyZSBhIGJ5dGVzIG9iamVjdCBmcm9tIGNvX2xub3RhYiBoYWQgaXRzCi0gIGl0ZW1zIGJlaW5nIHBhc3NlZCB0aHJvdWdoIG9yZCgpLgotCi0tIElzc3VlICMyMDQ3OiBzaHV0aWwubW92ZSgpIGNvdWxkIGJlbGlldmUgdGhhdCBpdHMgZGVzdGluYXRpb24gcGF0aCB3YXMKLSAgaW5zaWRlIGl0cyBzb3VyY2UgcGF0aCBpZiBpdCBiZWdhbiB3aXRoIHRoZSBzYW1lIGxldHRlcnMgKGUuZy4gInNyYyIgdnMuCi0gICJzcmMubmV3IikuCi0KLS0gQWRkZWQgdGhlIHR0ayBtb2R1bGUuIFNlZSBpc3N1ZSAjMjk4MzogVHRrIHN1cHBvcnQgZm9yIFRraW50ZXIuCi0KLS0gUmVtb3ZlZCBpc1NlcXVlbmNlVHlwZSgpLCBpc01hcHBpbmdUeXBlLCBhbmQgaXNOdW1iZXJUeXBlKCkgZnJvbSB0aGUKLSAgb3BlcmF0b3IgbW9kdWxlOyB1c2UgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnN0ZWFkLiAgQWxzbyByZW1vdmVkCi0gIHRoZSByZXBlYXQoKSBmdW5jdGlvbjsgdXNlIG11bCgpIGluc3RlYWQuCi0KLS0gSXNzdWUgIzUwMjE6ICBkb2N0ZXN0LnRlc3RmaWxlKCkgZGlkIG5vdCBjcmVhdGUgX19uYW1lX18gYW5kCi0gIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSByZWxpZWQgb24gX19uYW1lX18gYmVpbmcgZGVmaW5lZC4KLQotLSBCYWNrcG9ydCBpbXBvcnRsaWIgZnJvbSBQeXRob24gMy4xLiBPbmx5IHRoZSBpbXBvcnRfbW9kdWxlKCkgZnVuY3Rpb24gaGFzCi0gIGJlZW4gYmFja3BvcnRlZCB0byBoZWxwIGZhY2lsaXRhdGUgdHJhbnNpdGlvbnMgZnJvbSAyLjcgdG8gMy4xLgotCi0tIElzc3VlICMxODg1OiBkaXN0dXRpbHMuIFdoZW4gcnVubmluZyBzZGlzdCB3aXRoIC0tZm9ybWF0cz10YXIsZ3p0YXIKLSAgdGhlIHRhciBmaWxlIHdhcyBvdmVycmlkZW4gYnkgdGhlIGd6dGFyIG9uZS4KLQotLSBJc3N1ZSAjNDg2MzogZGlzdHV0aWxzLm13ZXJrc2NvbXBpbGVyIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gQWRkZWQgYSBuZXcgaXRlcnRvb2xzIGZ1bmN0aW9uczogIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCkKLSAgYW5kIGNvbXByZXNzKCkuCi0KLS0gSXNzdWUgIzUwMzI6ICBhZGRlZCBhIHN0ZXAgYXJndW1lbnQgdG8gaXRlcnRvb2xzLmNvdW50KCkgYW5kCi0gIGFsbG93ZWQgbm9uLWludGVnZXIgYXJndW1lbnRzLgotCi0tIEZpeCBhbmQgcHJvcGVybHkgZG9jdW1lbnQgdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUncyBsb2dnaW5nCi0gIHN1cHBvcnQsIGV4cG9zZSB0aGUgaW50ZXJuYWwgbGV2ZWxzIGFuZCBwcm92aWRlIHByb3BlciB1c2FnZQotICBleGFtcGxlcy4KLQotLSBJc3N1ZSAjMTY3MjMzMjogZml4IHVucGlja2xpbmcgb2Ygc3Vibm9ybWFsIGZsb2F0cywgd2hpY2ggd2FzCi0gIHByb2R1Y2luZyBhIFZhbHVlRXJyb3Igb24gc29tZSBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzM4ODE6IEhlbHAgVGNsIHRvIGxvYWQgZXZlbiB3aGVuIHN0YXJ0ZWQgdGhyb3VnaCB0aGUKLSAgdW5yZWFkYWJsZSBsb2NhbCBzeW1saW5rIHRvICJQcm9ncmFtIEZpbGVzIiBvbiBWaXN0YS4KLQotLSBJc3N1ZSAjNDcxMDogRXh0cmFjdCBkaXJlY3RvcmllcyBwcm9wZXJseSBpbiB0aGUgemlwZmlsZSBtb2R1bGU7Ci0gIGFsbG93IGFkZGluZyBkaXJlY3RvcmllcyB0byBhIHppcGZpbGUuCi0KLS0gSXNzdWUgIzM4MDc6IF9tdWx0aXByb2Nlc3NpbmcgYnVpbGQgZmFpbHMgd2hlbiBjb25maWd1cmUgaXMgcGFzc2VkCi0gIC0td2l0aG91dC10aHJlYWRzIGFyZ3VtZW50LiBXaGVuIHRoaXMgb2NjdXJzLCBfbXVsdGlwcm9jZXNzaW5nIHdpbGwKLSAgYmUgZGlzYWJsZWQsIGFuZCBub3QgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzUwMDg6IFdoZW4gYSBmaWxlIGlzIG9wZW5lZCBpbiBhcHBlbmQgbW9kZSB3aXRoIHRoZSBuZXcgSU8gbGlicmFyeSwKLSAgZG8gYW4gZXhwbGljaXQgc2VlayB0byB0aGUgZW5kIG9mIGZpbGUgKHNvIHRoYXQgZS5nLiB0ZWxsKCkgcmV0dXJucyB0aGUKLSAgZmlsZSBzaXplIHJhdGhlciB0aGFuIDApLiBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3VyIG9mIHRoZQotICB0cmFkaXRpb25hbCAyLnggZmlsZSBvYmplY3QuCi0KLS0gSXNzdWUgIzUwMTM6IEZpeGVkIGEgYnVnIGluIEZpbGVIYW5kbGVyIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIGRlbGF5Ci0gIHBhcmFtZXRlciB3YXMgc2V0LgotCi0tIElzc3VlICM0ODQyOiBBbHdheXMgYXBwZW5kIGEgdHJhaWxpbmcgJ0wnIHdoZW4gcGlja2xpbmcgbG9uZ3MgdXNpbmcKLSAgcGlja2xlIHByb3RvY29sIDAuICBXaGVuIHJlYWRpbmcsIHRoZSAnTCcgaXMgb3B0aW9uYWwuCi0KLS0gQWRkIHRoZSBpbXBvcnRsaWIgcGFja2FnZS4KLQotLSBJc3N1ZSAjNDMwMTogUGF0Y2ggdGhlIGxvZ2dpbmcgbW9kdWxlIHRvIGFkZCBwcm9jZXNzTmFtZSBzdXBwb3J0LCByZW1vdmUKLSAgX2NoZWNrX2xvZ2dlcl9jbGFzcyBmcm9tIG11bHRpcHJvY2Vzc2luZy4KLQotLSBJc3N1ZSAjMzMyNTogUmVtb3ZlIHB5dGhvbjIueCB0cnk6IGV4Y2VwdDogaW1wb3J0cyBmb3Igb2xkIGNQaWNrbGUgZnJvbQotICBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzQ5NTk6IGluc3BlY3QuZm9ybWF0YXJnc3BlYyBub3cgd29ya3MgZm9yIGtleXdvcmQgb25seSBhcmd1bWVudHMKLSAgd2l0aG91dCBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMzMyMTogYGBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oKWBgIGRvZXNuJ3QgY2hlY2sgaGFuZGxlOyBhZGRlZCBjaGVja3MKLSAgZm9yIFVuaXggbWFjaGluZXMgZm9yIG5lZ2F0aXZlIGhhbmRsZXMgYW5kIGxhcmdlIGludCBoYW5kbGVzLiBXaXRob3V0IHRoaXMgY2hlY2sKLSAgaXQgaXMgcG9zc2libGUgdG8gc2VnZmF1bHQgdGhlIGludGVycHJldGVyLgotCi0tIElzc3VlICM0NDQ5OiBBc3NlcnRpb25FcnJvciBpbiBtcF9iZW5jaG1hcmtzLnB5LCBjYXVzZWQgYnkgYW4gdW5kZXJseWluZyBpc3N1ZQotICBpbiBzaGFyZWRjdHlwZXMucHkuCi0KLS0gSXNzdWUgIzEyMjUxMDc6IGluc3BlY3QuaXNjbGFzcygpIHJldHVybmVkIFRydWUgZm9yIGluc3RhbmNlcyB3aXRoIGEgY3VzdG9tCi0gIF9fZ2V0YXR0cl9fLgotCi0tIElzc3VlICMzODI2IGFuZCAjNDc5MTogVGhlIHNvY2tldCBtb2R1bGUgbm93IGNsb3NlcyB0aGUgdW5kZXJseWluZyBzb2NrZXQKLSAgYXBwcm9wcmlhdGVseSB3aGVuIGl0IGlzIGJlaW5nIHVzZWQgdmlhIHNvY2tldC5tYWtlZmlsZSgpIG9iamVjdHMKLSAgcmF0aGVyIHRoYW4gZGVsYXlpbmcgdGhlIGNsb3NlIGJ5IHdhaXRpbmcgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkbyBpdC4KLQotLSBJc3N1ZSAjMTY5NjE5OTogIEFkZCBjb2xsZWN0aW9ucy5Db3VudGVyKCkgZm9yIHJhcGlkIGFuZCBjb252ZW5pZW50Ci0gIGNvdW50aW5nLgotCi0tIElzc3VlICMzODYwOiBHemlwRmlsZSBhbmQgQloyRmlsZSBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLgotCi0tIElzc3VlICM0ODY3OiBGaXhlZCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHBhc3NpbmcgYSBzdHJpbmcgdG8gYQotICBmdW5jdGlvbiB3aXRob3V0IGRlZmluaW5nIGFyZ3R5cGVzLgotCi0tIElzc3VlICM0MjcyOiBBZGQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdG8gdGhlIEd6aXBGaWxlIGNvbnN0cnVjdG9yIHRvIG92ZXJyaWRlCi0gIHRoZSB0aW1lc3RhbXAgaW4gdGhlIGd6aXAgc3RyZWFtLiBUaGUgZGVmYXVsdCB2YWx1ZSByZW1haW5zIHRoZSBjdXJyZW50IHRpbWUuCi0gIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCBieSBlLmcuIGd1bnppcCB3aGVuIGRlY29tcHJlc3NpbmcuIFBhdGNoIGJ5Ci0gIEphY3F1ZXMgRnJlY2hldC4KLQotLSBSZXN0b3JlIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eSBmb3IgZGVjaW1hbC5weS4KLQotLSBJc3N1ZSAjMzYzODogUmVtb3ZlIGZ1bmN0aW9ucyBmcm9tIF90a2ludGVyIG1vZHVsZSBsZXZlbCB0aGF0IGRlcGVuZCBvbgotICBUa2FwcE9iamVjdCB0byB3b3JrIHdpdGggbXVsdGlwbGUgdGhyZWFkcy4KLQotLSBJc3N1ZSAjNDcxODogQWRhcHQgdGhlIHdzZ2lyZWYgcGFja2FnZSBzbyB0aGF0IGl0IGFjdHVhbGx5IHdvcmtzIHdpdGgKLSAgUHl0aG9uIDMueCwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBgb2ZmaWNpYWwgYW1lbmRtZW50cyBvZiB0aGUgc3BlYwotICA8aHR0cDovL3d3dy53c2dpLm9yZy93c2dpL0FtZW5kbWVudHNfMS4wPmBfLgotCi0tIElzc3VlICM0Nzk2OiBBZGRlZCBEZWNpbWFsLmZyb21fZmxvYXQoKSBhbmQgQ29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCkKLSAgdG8gdGhlIGRlY2ltYWwgbW9kdWxlLgotCi0tIEZyYWN0aW9ucy5mcm9tX2Zsb2F0KCkgbm8gbG9uZ2VyIGxvc2VzIHByZWNpc2lvbiBmb3IgaW50ZWdlcnMgdG9vIGJpZyB0bwotICBjYXN0IGFzIGZsb2F0cy4KLQotLSBJc3N1ZSAjNDgxMjogYWRkIG1pc3NpbmcgdW5kZXJzY29yZSBwcmVmaXggdG8gc29tZSBpbnRlcm5hbC11c2Utb25seQotICBjb25zdGFudHMgaW4gdGhlIGRlY2ltYWwgbW9kdWxlLiAgKERlY18wIGJlY29tZXMgX0RlY18wLCBldGMuKQotCi0tIElzc3VlICM0NzkwOiBUaGUgbnNtYWxsZXN0KCkgYW5kIG5sYXJnZXN0KCkgZnVuY3Rpb25zIGluIHRoZSBoZWFwcSBtb2R1bGUKLSAgZGlkIHVubmVjZXNzYXJ5IHdvcmsgaW4gdGhlIGNvbW1vbiBjYXNlIHdoZXJlIG5vIGtleSBmdW5jdGlvbiB3YXMgc3BlY2lmaWVkLgotCi0tIElzc3VlICM0Nzk1OiBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24oKSByZXR1cm5zIEZhbHNlIGluc3RlYWQgb2YgTm9uZSB3aGVuCi0gIHRoZSBmdW5jdGlvbiBpcyBub3QgYSBnZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzQ3MDI6IFRocm93aW5nIGEgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciBpbnN0ZWFkIG9mIElPRXJyb3IgaW4gY2FzZQotICBubyBNU1ZDIGNvbXBpbGVyIGlzIGZvdW5kIHVuZGVyIFdpbmRvd3MuIE9yaWdpbmFsIHBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCi0KLS0gSXNzdWUgIzQ2NDY6IGRpc3R1dGlscyB3YXMgY2hva2luZyBvbiBlbXB0eSBvcHRpb25zIGFyZyBpbiB0aGUgc2V0dXAKLSAgZnVuY3Rpb24uIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBIZWxsZXIuCi0KLS0gSXNzdWUgIzM3Njc6IENvbnZlcnQgVGsgb2JqZWN0IHRvIHN0cmluZyBpbiB0a0NvbG9yQ2hvb3Nlci4KLQotLSBJc3N1ZSAjMzI0ODogQWxsb3cgcGxhY2luZyBTY3JvbGxlZFRleHQgaW4gYSBQYW5lZFdpbmRvdy4KLQotLSBJc3N1ZSAjNDQ0NDogQWxsb3cgYXNzZXJ0UmFpc2VzKCkgdG8gYmUgdXNlZCBhcyBhIGNvbnRleHQgaGFuZGxlciwgc28gdGhhdAotICB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSBpZiBtb3JlIHByYWN0aWNhbC4KLQotLSBJc3N1ZSAjNDczOTogQWRkIHB5ZG9jIGhlbHAgdG9waWNzIGZvciBzeW1ib2xzLCBzbyB0aGF0IGUuZy4gaGVscCgnQCcpCi0gIHdvcmtzIGFzIGV4cGVjdGVkIGluIHRoZSBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjNDc1NjogemlwZmlsZS5pc196aXBmaWxlKCkgbm93IHN1cHBvcnRzIGZpbGUtbGlrZSBvYmplY3RzLiBQYXRjaCBieQotICBHYWJyaWVsIEdlbmVsbGluYS4KLQotLSBJc3N1ZSAjNDU3NDogcmVhZGluZyBhbiBVVEYxNi1lbmNvZGVkIHRleHQgZmlsZSBjcmFzaGVzIGlmIFxyIG9uIDY0LWNoYXIKLSAgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzQyMjM6IGluc3BlY3QuZ2V0c291cmNlKCkgd2lsbCBub3cgY29ycmVjdGx5IGRpc3BsYXkgc291cmNlIGNvZGUKLSAgZm9yIHBhY2thZ2VzIGxvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgY29uZm9ybWFudCBQRVAgMzAyCi0gIGxvYWRlcikuIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MjAxOiBwZGIgY2FuIG5vdyBhY2Nlc3MgYW5kIGRpc3BsYXkgc291cmNlIGNvZGUgbG9hZGVkIHZpYQotICB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIgbG9hZGVyKS4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQWxleGFuZGVyIEJlbG9wb2xza3kuCi0KLS0gSXNzdWUgIzQxOTc6IGRvY3Rlc3RzIGluIG1vZHVsZXMgbG9hZGVkIHZpYSB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBQRVAKLSAgMzAyIGNvbmZvcm1hbnQgbG9hZGVyKSB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseSBpbiBtb3N0IGNhc2VzICh0aGV5Ci0gIGFyZSBzdGlsbCBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50cyB0aGF0IGV4aXN0IGZvciBhbGwgY29kZSBydW5uaW5nCi0gIGZyb20gaW5zaWRlIGEgbW9kdWxlIGxvYWRlZCB2aWEgYSBQRVAgMzAyIGxvYWRlciBhbmQgYXR0ZW1wdGluZyB0bwotICBwZXJmb3JtIElPIG9wZXJhdGlvbnMgYmFzZWQgb24gX19maWxlX18pLiBPcmlnaW5hbCBwYXRjaCBieQotICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KLQotLSBJc3N1ZXMgIzQwODIgYW5kICM0NTEyOiBBZGQgcnVucHkgc3VwcG9ydCB0byB6aXBpbXBvcnQgaW4gYSBtYW5uZXIgdGhhdAotICBhbGxvd3MgYmFja3BvcnRpbmcgdG8gbWFpbnRlbmFuY2UgYnJhbmNoZXMuIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MTYzOiB0ZXh0d3JhcCBtb2R1bGU6IGFsbG93IHdvcmQgc3BsaXR0aW5nIG9uIGEgaHlwaGVuIHByZWNlZGVkIGJ5Ci0gIGEgbm9uLUFTQ0lJIGxldHRlci4KLQotLSBJc3N1ZSAjNDYxNjogVGFyRmlsZS51dGltZSgpOiBSZXN0b3JlIGRpcmVjdG9yeSB0aW1lcyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0MDIxOiB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBub3cgcmFpc2VzIGEgU3ludGF4RXJyb3Igd2hlbiB0aGUKLSAgY29kZWMgY2Fubm90IGJlIGZvdW5kLiAgVGhpcyBpcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBidWlsdGluIGJlaGF2aW9yLgotCi0tIElzc3VlICM0MDg0OiBGaXggbWF4LCBtaW4sIG1heF9tYWcgYW5kIG1pbl9tYWcgRGVjaW1hbCBtZXRob2RzIHRvCi0gIGdpdmUgY29ycmVjdCByZXN1bHRzIGluIHRoZSBjYXNlIHdoZXJlIG9uZSBhcmd1bWVudCBpcyBhIHF1aWV0IE5hTgotICBhbmQgdGhlIG90aGVyIGlzIGEgZmluaXRlIG51bWJlciB0aGF0IHJlcXVpcmVzIHJvdW5kaW5nLgotCi0tIElzc3VlICM0NDgzOiBfZGJtIG1vZHVsZSBub3cgYnVpbGRzIG9uIHN5c3RlbXMgd2l0aCBnZGJtICYgZ2RibV9jb21wYXQKLSAgbGlicy4KLQotLSBBZGRlZCB0aGUgc3VicHJvY2Vzcy5jaGVja19jYWxsX291dHB1dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBvdXRwdXQKLSAgZnJvbSBhIHN1YnByb2Nlc3Mgb24gc3VjY2VzcyBvciByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuCi0KLS0gSXNzdWUgIzEwNTUyMzQ6IGNnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0bwotICBzdXBwb3J0IHVudXN1YWwgZmlsZW5hbWVzIChzdWNoIGFzIHRob3NlIGNvbnRhaW5pbmcgc2VtaS1jb2xvbnMpIGluCi0gIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVycy4KLQotLSBJc3N1ZSAjNDM4NDogQWRkZWQgbG9nZ2luZyBpbnRlZ3JhdGlvbiB3aXRoIHdhcm5pbmdzIG1vZHVsZSB1c2luZwotICBjYXB0dXJlV2FybmluZ3MoKS4gVGhpcyBjaGFuZ2UgaW5jbHVkZXMgYSBOdWxsSGFuZGxlciB3aGljaCBkb2VzIG5vdGhpbmc7Ci0gIGl0IHdpbGwgYmUgb2YgdXNlIHRvIGxpYnJhcnkgZGV2ZWxvcGVycyB3aG8gd2FudCB0byBhdm9pZCB0aGUgIk5vIGhhbmRsZXJzCi0gIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgWFhYIiBtZXNzYWdlIHdoaWNoIGNhbiBhcHBlYXIgaWYgdGhlIGxpYnJhcnkgdXNlcgotICBkb2Vzbid0IGNvbmZpZ3VyZSBsb2dnaW5nLgotCi0tIElzc3VlICMzNzQxOiBESVNUVVRJTFNfVVNFX1NESyBzZXQgY2F1c2VzIG1zdmM5Y29tcGlsZXIucHkgdG8gcmFpc2UgYW4KLSAgZXhjZXB0aW9uLgotCi0tIElzc3VlICM0NTI5OiBmaXggdGhlIHBhcnNlciBtb2R1bGUncyB2YWxpZGF0aW9uIG9mIHRyeS1leGNlcHQtZmluYWxseQotICBzdGF0ZW1lbnRzLgotCi0tIElzc3VlICM0NDU4OiBnZXRvcHQuZ251X2dldG9wdCgpIG5vdyByZWNvZ25pemVzIGEgc2luZ2xlICItIiBhcyBhbiBhcmd1bWVudCwKLSAgbm90IGEgbWFsZm9ybWVkIG9wdGlvbi4KLQotLSBBZGRlZCB0aGUgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgb3V0cHV0Ci0gIGZyb20gYSBzdWJwcm9jZXNzIG9uIHN1Y2Nlc3Mgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLgotCi0tIElzc3VlICM0NTQyOiBPbiBXaW5kb3dzLCBiaW5hc2NpaS5jcmMzMiBzdGlsbCBhY2NlcHRlZCBzdHIgYXMgYmluYXJ5IGlucHV0OwotICB0aGUgY29ycmVzcG9uZGluZyB0ZXN0cyBub3cgcGFzcy4KLQotLSBJc3N1ZSAjNDUzNzogd2ViYnJvd3Nlci5Vbml4QnJvd3NlciB3b3VsZCBmYWlsIHRvIG9wZW4gdGhlIGJyb3dzZXIgYmVjYXVzZQotICBpdCB3YXMgY2FsbGluZyB0aGUgd3Jvbmcgb3BlbigpIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMDU1MjM0OiBjZ2kucGFyc2VfaGVhZGVyKCk6IEZpeGVkIHBhcnNpbmcgb2YgaGVhZGVyIHBhcmFtZXRlcnMgdG8KLSAgc3VwcG9ydCB1bnVzdWFsIGZpbGVuYW1lcyAoc3VjaCBhcyB0aG9zZSBjb250YWluaW5nIHNlbWktY29sb25zKSBpbgotICBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzQ4NjE6IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpOiBSb2J1c3RpZnkuIEZpeCBsaWJyYXJ5IGRldGVjdGlvbiBvbgotICBiaWFyY2ggc3lzdGVtcy4gVHJ5IHRvIHJlbHkgb24gbGRjb25maWcgb25seSwgd2l0aG91dCB1c2luZyBvYmpkdW1wIGFuZCBnY2MuCi0KLS0gSXNzdWUgIzUxMDQ6IFRoZSBzb2NrZXQgbW9kdWxlIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciB3aGVuIDE2LWJpdCBwb3J0IGFuZAotICBwcm90b2NvbCBudW1iZXJzIGFyZSBzdXBwbGllZCBvdXRzaWRlIHRoZSBhbGxvd2VkIDAtNjU1MzYgcmFuZ2Ugb24gYmluZCgpCi0gIGFuZCBnZXRzZXJ2Ynlwb3J0KCkuCi0KLS0gV2luZG93cyBsb2NhbGUgbWFwcGluZyB1cGRhdGVkIHRvIFZpc3RhLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNDcwNDogcmVtb3ZlIHVzZSBvZiBjbXAoKSBpbiBweWJlbmNoLCBidW1wIGl0cyB2ZXJzaW9uIG51bWJlciB0byAyLjEsCi0gIGFuZCBtYWtlIGl0IDIuNi1jb21wYXRpYmxlLgotCi0tIFR0ayBkZW1vcyBhZGRlZCBpbiBEZW1vL3RraW50ZXIvdHRrLwotCi0tIElzc3VlICM0Njc3OiBhZGQgdHdvIGxpc3QgY29tcHJlaGVuc2lvbiB0ZXN0cyB0byBweWJlbmNoLgotCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM2MDk0OiBCdWlsZCBjb3JyZWN0bHkgd2l0aCBTdWJ2ZXJzaW9uIDEuNy4KLQotLSBJc3N1ZSAjNTg0NzogUmVtb3ZlIC1uIHN3aXRjaCBvbiAiRWRpdCB3aXRoIElETEUiIG1lbnUgaXRlbS4KLQotLSBJc3N1ZSAjNTcyNjogTWFrZSBNb2R1bGVzL2xkX3NvX2FpeCByZXR1cm4gdGhlIGFjdHVhbCBleGl0IGNvZGUgb2YgdGhlCi0gIGxpbmtlciwgcmF0aGVyIHRoYW4gYWx3YXlzIGV4aXQgc3VjY2Vzc2Z1bGx5LiBQYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KLQotLSBJc3N1ZSAjNDU4NzogQWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWRibWxpYm9yZGVyPWRiMTpkYjI6Li4uIHRvIHNwZWNpZnkKLSAgdGhlIG9yZGVyIHRoYXQgYmFja2VuZHMgZm9yIHRoZSBkYm0gZXh0ZW5zaW9uIGFyZSBjaGVja2VkLgotCi0tIExpbmsgdGhlIHNoYXJlZCBweXRob24gbGlicmFyeSB3aXRoICQoTU9ETElCUykuCi0KLS0gSXNzdWUgIzUxMzQ6IFNpbGVuY2UgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgc3FsaXRlIHdpdGggVkMrKy4KLQotLSBJc3N1ZSAjNDQ5NDogRml4IGJ1aWxkIHdpdGggUHlfTk9fRU5BQkxFX1NIQVJFRCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0ODk1OiBVc2UgX3N0cmR1cCBvbiBXaW5kb3dzIENFLgotCi0tIElzc3VlICM0NDcyOiAiY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZCIgbm93IHdvcmtzIG9uIE9TWAotCi0tIElzc3VlcyAjNDcyOCBhbmQgIzQwNjA6IFdPUkRTX0JJR0VESUFOIGlzIG5vdyBjb3JyZWN0IGluIFVuaXZlcnNhbCBidWlsZHMuCi0KLS0gSXNzdWUgIzQzODk6IEFkZCBpY29uIHRvIHRoZSB1bmluc3RhbGwgZW50cnkgaW4gImFkZC1hbmQtcmVtb3ZlLXByb2dyYW1zIi4KLQotLSBJc3N1ZSAjNDI4OTogUmVtb3ZlIENhbmNlbCBidXR0b24gZnJvbSBBZHZhbmNlZERsZy4KLQotLSBJc3N1ZSAjMTY1NjY3NTogUmVnaXN0ZXIgYSBkcm9wIGhhbmRsZXIgZm9yIC5weSogZmlsZXMgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNDEyMDogRXhjbHVkZSBtYW5pZmVzdCBmcm9tIGV4dGVuc2lvbiBtb2R1bGVzIGluIFZTMjAwOC4KLQotLSBJc3N1ZSAjNDA5MTogSW5zdGFsbCBweXRob254eS5kbGwgaW4gc3lzdGVtMzIgYWdhaW4uCi0KLS0gSXNzdWUgIzQwMTg6IERpc2FibGUgImZvciBtZSIgaW5zdGFsbGF0aW9ucyBvbiBWaXN0YS4KLQotLSBJc3N1ZSAjMzc1ODogQWRkIGBgcGF0Y2hjaGVja2BgIGJ1aWxkIHRhcmdldCB0byAuUEhPTlkuCi0KLS0gSXNzdWUgIzQyMDQ6IEZpeGVkIG1vZHVsZSBidWlsZCBlcnJvcnMgb24gRnJlZUJTRCA0LgotCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICM2NjI0OiB5QXJnX1BhcnNlVHVwbGUgd2l0aCAicyIgZm9ybWF0IHdoZW4gcGFyc2luZyBhcmd1bWVudCB3aXRoCi0gIE5VTDogQm9ndXMgVHlwZUVycm9yIGRldGFpbCBzdHJpbmcuCi0KLS0gSXNzdWUgIzUxNzU6IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yCi0gIGZvciBuZWdhdGl2ZSBhcmd1bWVudHMuICBQcmV2aW91c2x5LCBpdCByYWlzZWQgVHlwZUVycm9yLgotCi0tIElzc3VlICM0NzIwOiBUaGUgZm9ybWF0IGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgY2FuIGJlZ2luIHdpdGggJ3wnLgotCi0tIElzc3VlICMzNjMyOiBmcm9tIHRoZSBnZGIgZGVidWdnZXIsIHRoZSAncHlvJyBtYWNybyBjYW4gbm93IGJlIGNhbGxlZCB3aGVuCi0gIHRoZSBHSUwgaXMgcmVsZWFzZWQsIG9yIG93bmVkIGJ5IGFub3RoZXIgdGhyZWFkLgotCi0tIElzc3VlICM0MTIyOiBPbiBXaW5kb3dzLCBmaXggYSBjb21waWxhdGlvbiBlcnJvciB3aGVuIHVzaW5nIHRoZQotICBQeV9VTklDT0RFX0lTU1BBQ0UgbWFjcm8gaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZS4KLQotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzc0NTogRml4IGhhc2hsaWIgdG8gYWx3YXlzIHJlamVjdCB1bmljb2RlIGFuZCBub24gYnVmZmVyLWFwaQotICBzdXBwb3J0aW5nIG9iamVjdHMgYXMgaW5wdXQgbm8gbWF0dGVyIGhvdyBpdCB3YXMgY29tcGlsZWQgKGJ1aWx0IGluCi0gIGltcGxlbWVudGF0aW9ucyBvciBleHRlcm5hbCBvcGVuc3NsIGxpYnJhcnkpLgotCi0tIElzc3VlICM0Mzk3OiBGaXggb2NjYXNpb25hbCB0ZXN0X3NvY2tldCBmYWlsdXJlIG9uIE9TIFguCi0KLS0gSXNzdWUgIzQyNzk6IEZpeCBidWlsZCBvZiBwYXJzZXJtb2R1bGUgdW5kZXIgQ3lnd2luLgotCi0tIElzc3VlICM0NzUxOiBoYXNobGliIG5vdyByZWxlYXNlcyB0aGUgR0lMIHdoZW4gaGFzaGluZyBsYXJnZSBidWZmZXJzCi0gICh3aXRoIGEgaGFyZHdpcmVkIHRocmVzaG9sZCBvZiAyMDQ4IGJ5dGVzKSwgYWxsb3dpbmcgYmV0dGVyIHBhcmFsbGVsaXphdGlvbgotICBvbiBtdWx0aS1DUFUgc3lzdGVtcy4gQ29udHJpYnV0ZWQgYnkgTHVrYXMgTHVlZyAoZWJmZSkgYW5kIFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICM0MDUxOiBQcmV2ZW50IGNvbmZsaWN0IG9mIFVOSUNPREUgbWFjcm9zIGluIGNQaWNrbGUuCi0KLS0gSXNzdWUgIzQ3Mzg6IEVhY2ggemxpYiBvYmplY3Qgbm93IGhhcyBhIHNlcGFyYXRlIGxvY2ssIGFsbG93aW5nIHRvIGNvbXByZXNzCi0gIG9yIGRlY29tcHJlc3Mgc2V2ZXJhbCBzdHJlYW1zIGF0IG9uY2Ugb24gbXVsdGktQ1BVIHN5c3RlbXMuIEFsc28sIHRoZSBHSUwKLSAgaXMgbm93IHJlbGVhc2VkIHdoZW4gY29tcHV0aW5nIHRoZSBDUkMgb2YgYSBsYXJnZSBidWZmZXIuIFBhdGNoIGJ5IGViZmUuCi0KLS0gSXNzdWUgIzQyMjg6IFBhY2sgbmVnYXRpdmUgdmFsdWVzIHRoZSBzYW1lIHdheSBhcyAyLjQgaW4gc3RydWN0J3MgTCBmb3JtYXQuCi0KLS0gSXNzdWUgIzEwNDAwMjY6IEZpeCBvcy50aW1lcyByZXN1bHQgb24gc3lzdGVtcyB3aGVyZSBIWiBpcyBpbmNvcnJlY3QuCi0KLS0gSXNzdWVzICMzMTY3LCAjMzY4MjogRml4IHRlc3RfbWF0aCBmYWlsdXJlcyBmb3IgbG9nLCBsb2cxMCBvbiBTb2xhcmlzLAotICBPcGVuQlNELgotCi0tIElzc3VlICM0NTgzOiBhcnJheS5hcnJheSB3b3VsZCBub3QgYWx3YXlzIHByb2hpYml0IHJlc2l6aW5nIHdoZW4gYSBidWZmZXIKLSAgaGFzIGJlZW4gZXhwb3J0ZWQsIHJlc3VsdGluZyBpbiBhbiBpbnRlcnByZXRlciBjcmFzaCB3aGVuIGFjY2Vzc2luZyB0aGUKLSAgYnVmZmVyLgotCi0KLS0gSXNzdWUgIzUyMjg6IE1ha2UgZnVuY3Rvb2xzLnBhcnRpYWwgb2JqZWN0cyBjYW4gbm93IGJlIHBpY2tsZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM2MTUyOiBOZXcgb3B0aW9uICctaicvJy0tbXVsdGlwcm9jZXNzJyBmb3IgcmVncnRlc3QgYWxsb3dzIHJ1bm5pbmcKLSAgcmVncmVzc2lvbiB0ZXN0cyBpbiBwYXJhbGxlbCwgc2hvcnRlbmluZyB0aGUgdG90YWwgcnVudGltZS4KLQotLSBJc3N1ZSAjNTQ1MDogTW92ZWQgdGVzdHMgaW52b2x2aW5nIGxvYWRpbmcgdGsgZnJvbSBMaWIvdGVzdC90ZXN0X3RjbCB0bwotICBMaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X2xvYWR0ay4gV2l0aCB0aGlzLCB0aGVzZSB0ZXN0cyBkZW1vbnN0cmF0ZQotICB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgdGVzdF90dGtndWlvbmx5IChhbmQgbm93IGFsc28gdGVzdF90aykgd2hpY2ggaXMgdG8KLSAgc2tpcCB0aGUgdGVzdHMgaWYgRElTUExBWSBpcyBkZWZpbmVkIGJ1dCBjYW4ndCBiZSB1c2VkLgotCi0tIHJlZ3J0ZXN0IG5vIGxvbmdlciB0cmVhdHMgSW1wb3J0RXJyb3IgYXMgZXF1aXZhbGVudCB0byBTa2lwVGVzdC4gIEltcG9ydHMKLSAgdGhhdCBzaG91bGQgY2F1c2UgYSB0ZXN0IHRvIGJlIHNraXBwZWQgYXJlIG5vdyBkb25lIHVzaW5nIGltcG9ydF9tb2R1bGUKLSAgZnJvbSB0ZXN0IHN1cHBvcnQsIHdoaWNoIGRvZXMgdGhlIGNvbnZlcnNpb24uCi0KLS0gSXNzdWUgIzUwODM6IE5ldyAnZ3VpJyByZXNvdXJjZSBmb3IgcmVncnRlc3QuCi0KLQotRG9jcwotLS0tLQotCi0KICoqKEZvciBpbmZvcm1hdGlvbiBhYm91dCBvbGRlciB2ZXJzaW9ucywgY29uc3VsdCB0aGUgSElTVE9SWSBmaWxlLikqKgpkaWZmIC0tZ2l0IGEvTWlzYy9SRUFETUUgYi9NaXNjL1JFQURNRQppbmRleCBiMjM5Y2VlLi4xMThmNmM3IDEwMDY0NAotLS0gYS9NaXNjL1JFQURNRQorKysgYi9NaXNjL1JFQURNRQpAQCAtOCw3ICs4LDYgQEAKIC0tLS0tLS0tLS0tLS0tLS0KIAogQUNLUyAgICAgICAgICAgICAgICAgICAgQWNrbm93bGVkZ2VtZW50cwotYnVpbGQuc2ggICAgICAgICAgICAgICAgU2NyaXB0IHRvIGJ1aWxkIGFuZCB0ZXN0IGxhdGVzdCBQeXRob24gZnJvbSB0aGUgcmVwb3NpdG9yeQogZ2RiaW5pdCAgICAgICAgICAgICAgICAgSGFuZHkgc3R1ZmYgdG8gcHV0IGluIHlvdXIgLmdkYmluaXQgZmlsZSwgaWYgeW91IHVzZSBnZGIKIEhJU1RPUlkgICAgICAgICAgICAgICAgIE5ld3MgZnJvbSBwcmV2aW91cyByZWxlYXNlcyAtLSBvbGRlc3QgbGFzdAogaW5kZW50LnBybyAgICAgICAgICAgICAgR05VIGluZGVudCBwcm9maWxlIGFwcHJveGltYXRpbmcgbXkgQyBzdHlsZQpAQCAtMTksOCArMTgsMTEgQEAKIHB5dGhvbi5wYy5pbiAgICAgICAgICAgIFBhY2thZ2UgY29uZmlndXJhdGlvbiBpbmZvIHRlbXBsYXRlIGZvciBwa2ctY29uZmlnCiBweXRob24td2luZyoud3ByICAgICAgICBXaW5nIElERSBwcm9qZWN0IGZpbGUKIFJFQURNRSAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHlvdSdyZSByZWFkaW5nIG5vdworUkVBRE1FLkFJWCAgICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgUHl0aG9uIG9uIEFJWAorUkVBRE1FLmNvdmVyaXR5ICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgcnVubmluZyBDb3Zlcml0eSdzIFByZXZlbnQgb24gUHl0aG9uCiBSRUFETUUudmFsZ3JpbmQgICAgICAgICBJbmZvcm1hdGlvbiBmb3IgVmFsZ3JpbmQgdXNlcnMsIHNlZSB2YWxncmluZC1weXRob24uc3VwcAogUlBNICAgICAgICAgICAgICAgICAgICAgKE9sZCkgdG9vbHMgdG8gYnVpbGQgUlBNcworc3ZubWFwLnR4dCAgICAgICAgICAgICAgTWFwIG9mIG9sZCBTVk4gcmV2cyBhbmQgYnJhbmNoZXMgdG8gaGcgY2hhbmdlc2V0IGlkcwogU3BlY2lhbEJ1aWxkcy50eHQgICAgICAgRGVzY3JpYmVzIGV4dHJhIHN5bWJvbHMgeW91IGNhbiBzZXQgZm9yIGRlYnVnIGJ1aWxkcwogVGV4dE1hdGUgICAgICAgICAgICAgICAgQSBUZXh0TWF0ZSBidW5kbGUgZm9yIFB5dGhvbiBkZXZlbG9wbWVudAogdmFsZ3JpbmQtcHl0aG9uLnN1cHAgICAgVmFsZ3JpbmQgc3VwcHJlc3Npb24gZmlsZSwgc2VlIFJFQURNRS52YWxncmluZApkaWZmIC0tZ2l0IGEvTWlzYy9SUE0vcHl0aG9uLTMuMi5zcGVjIGIvTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIE1pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYwpyZW5hbWUgdG8gTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCmluZGV4IDE4ZjNlNzcuLjkzNmEyMWYgMTAwNjQ0Ci0tLSBhL01pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYworKysgYi9NaXNjL1JQTS9weXRob24tMy4zLnNwZWMKQEAgLTM5LDggKzM5LDggQEAKIAogJWRlZmluZSBuYW1lIHB5dGhvbgogIy0tc3RhcnQgY29uc3RhbnRzLS0KLSVkZWZpbmUgdmVyc2lvbiAzLjIuMwotJWRlZmluZSBsaWJ2ZXJzIDMuMgorJWRlZmluZSB2ZXJzaW9uIDMuMy4wCislZGVmaW5lIGxpYnZlcnMgMy4zCiAjLS1lbmQgY29uc3RhbnRzLS0KICVkZWZpbmUgcmVsZWFzZSAxcHlkb3RvcmcKICVkZWZpbmUgX19wcmVmaXggL3VzcgpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24tY29uZmlnLmluIGIvTWlzYy9weXRob24tY29uZmlnLmluCmluZGV4IDc5ZjBiYjEuLmJiMGIwMDggMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorKysgYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgc3lzY29uZmlnCiAKIHZhbGlkX29wdHMgPSBbJ3ByZWZpeCcsICdleGVjLXByZWZpeCcsICdpbmNsdWRlcycsICdsaWJzJywgJ2NmbGFncycsCi0gICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncyddCisgICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncycsICdjb25maWdkaXInXQogCiBkZWYgZXhpdF93aXRoX3VzYWdlKGNvZGU9MSk6CiAgICAgcHJpbnQoIlVzYWdlOiB7MH0gW3sxfV0iLmZvcm1hdCgKQEAgLTYxLDMgKzYxLDYgQEAKIAogICAgIGVsaWYgb3B0ID09ICctLWFiaWZsYWdzJzoKICAgICAgICAgcHJpbnQoc3lzLmFiaWZsYWdzKQorCisgICAgZWxpZiBvcHQgPT0gJy0tY29uZmlnZGlyJzoKKyAgICAgICAgcHJpbnQoc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMSUJQTCcpKQpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24ubWFuIGIvTWlzYy9weXRob24ubWFuCmluZGV4IDIwYmVkZWQuLjcyZTFlY2IgMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLm1hbgorKysgYi9NaXNjL3B5dGhvbi5tYW4KQEAgLTM3LDEzICszNyw2IEBACiAuQiBcLU9PCiBdCiBbCi0uQiBcLVIKLV0KLVsKLS5CIC1RCi0uSSBhcmd1bWVudAotXQotWwogLkIgXC1zCiBdCiBbCkBAIC0xNTUsMjcgKzE0OCw2IEBACiBEbyBub3QgcHJpbnQgdGhlIHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcy4gVGhlc2UgbWVzc2FnZXMgYXJlIAogYWxzbyBzdXBwcmVzc2VkIGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlLgogLlRQCi0uQiBcLVIKLVR1cm4gb24gImhhc2ggcmFuZG9taXphdGlvbiIsIHNvIHRoYXQgdGhlIGhhc2goKSB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQKLWRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSBwc2V1ZG8tcmFuZG9tIHZhbHVlLgotQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlCi1ub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCi0uSVAKLVRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwgb2Ygc2VydmljZQotY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QgY2FzZSBwZXJmb3JtYW5jZQotb2YgYSBkaWN0IGNvbnN0cnVjdGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKLWh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbAotZm9yIGRldGFpbHMuCi0uVFAKLS5CSSAiXC1RICIgYXJndW1lbnQKLURpdmlzaW9uIGNvbnRyb2w7IHNlZSBQRVAgMjM4LiAgVGhlIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mICJvbGQiICh0aGUKLWRlZmF1bHQsIGludC9pbnQgYW5kIGxvbmcvbG9uZyByZXR1cm4gYW4gaW50IG9yIGxvbmcpLCAibmV3IiAobmV3Ci1kaXZpc2lvbiBzZW1hbnRpY3MsIGkuZS4gaW50L2ludCBhbmQgbG9uZy9sb25nIHJldHVybnMgYSBmbG9hdCksCi0id2FybiIgKG9sZCBkaXZpc2lvbiBzZW1hbnRpY3Mgd2l0aCBhIHdhcm5pbmcgZm9yIGludC9pbnQgYW5kCi1sb25nL2xvbmcpLCBvciAid2FybmFsbCIgKG9sZCBkaXZpc2lvbiBzZW1hbnRpY3Mgd2l0aCBhIHdhcm5pbmcgZm9yCi1hbGwgdXNlIG9mIHRoZSBkaXZpc2lvbiBvcGVyYXRvcikuICBGb3IgYSB1c2Ugb2YgIndhcm5hbGwiLCBzZWUgdGhlCi1Ub29scy9zY3JpcHRzL2ZpeGRpdi5weSBzY3JpcHQuCi0uVFAKIC5CIFwtcwogRG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGguCiAuVFAKQEAgLTE4NCw3ICsxNTYsOSBAQAogLkkgc2l0ZQogYW5kIHRoZSBzaXRlLWRlcGVuZGVudCBtYW5pcHVsYXRpb25zIG9mCiAuSSBzeXMucGF0aAotdGhhdCBpdCBlbnRhaWxzLgordGhhdCBpdCBlbnRhaWxzLiAgQWxzbyBkaXNhYmxlIHRoZXNlIG1hbmlwdWxhdGlvbnMgaWYKKy5JIHNpdGUKK2lzIGV4cGxpY2l0bHkgaW1wb3J0ZWQgbGF0ZXIuCiAuVFAKIC5CIFwtdQogRm9yY2UgdGhlIGJpbmFyeSBJL08gbGF5ZXJzIG9mIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciB0byBiZSB1bmJ1ZmZlcmVkLgpAQCAtMjgzLDkgKzI1Nyw5IEBACiBmcm9tIHRoYXQgZmlsZTsKIHdoZW4gY2FsbGVkIHdpdGgKIC5CIFwtYwotLkkgY29tbWFuZCwKKy5JUiBjb21tYW5kICwKIGl0IGV4ZWN1dGVzIHRoZSBQeXRob24gc3RhdGVtZW50KHMpIGdpdmVuIGFzCi0uSSBjb21tYW5kLgorLklSIGNvbW1hbmQgLgogSGVyZQogLkkgY29tbWFuZAogbWF5IGNvbnRhaW4gbXVsdGlwbGUgc3RhdGVtZW50cyBzZXBhcmF0ZWQgYnkgbmV3bGluZXMuCkBAIC0yOTUsNyArMjY5LDcgQEAKIC5QUAogSWYgYXZhaWxhYmxlLCB0aGUgc2NyaXB0IG5hbWUgYW5kIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRoZXJlYWZ0ZXIgYXJlCiBwYXNzZWQgdG8gdGhlIHNjcmlwdCBpbiB0aGUgUHl0aG9uIHZhcmlhYmxlCi0uSSBzeXMuYXJndiAsCisuSVIgc3lzLmFyZ3YgLAogd2hpY2ggaXMgYSBsaXN0IG9mIHN0cmluZ3MgKHlvdSBtdXN0IGZpcnN0CiAuSSBpbXBvcnQgc3lzCiB0byBiZSBhYmxlIHRvIGFjY2VzcyBpdCkuCkBAIC0zMDksMTQgKzI4MywxNCBAQAogLkkgJy1jJy4KIE5vdGUgdGhhdCBvcHRpb25zIGludGVycHJldGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXRzZWxmCiBhcmUgbm90IHBsYWNlZCBpbgotLkkgc3lzLmFyZ3YuCisuSVIgc3lzLmFyZ3YgLgogLlBQCiBJbiBpbnRlcmFjdGl2ZSBtb2RlLCB0aGUgcHJpbWFyeSBwcm9tcHQgaXMgYD4+Pic7IHRoZSBzZWNvbmQgcHJvbXB0CiAod2hpY2ggYXBwZWFycyB3aGVuIGEgY29tbWFuZCBpcyBub3QgY29tcGxldGUpIGlzIGAuLi4nLgogVGhlIHByb21wdHMgY2FuIGJlIGNoYW5nZWQgYnkgYXNzaWdubWVudCB0bwogLkkgc3lzLnBzMQogb3IKLS5JIHN5cy5wczIuCisuSVIgc3lzLnBzMiAuCiBUaGUgaW50ZXJwcmV0ZXIgcXVpdHMgd2hlbiBpdCByZWFkcyBhbiBFT0YgYXQgYSBwcm9tcHQuCiBXaGVuIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzLCBhIHN0YWNrIHRyYWNlIGlzIHByaW50ZWQgYW5kCiBjb250cm9sIHJldHVybnMgdG8gdGhlIHByaW1hcnkgcHJvbXB0OyBpbiBub24taW50ZXJhY3RpdmUgbW9kZSwgdGhlCkBAIC0zNzIsNyArMzQ2LDcgQEAKIGluc2VydGVkIGluIHRoZSBwYXRoIGluIGZyb250IG9mICRQWVRIT05QQVRILgogVGhlIHNlYXJjaCBwYXRoIGNhbiBiZSBtYW5pcHVsYXRlZCBmcm9tIHdpdGhpbiBhIFB5dGhvbiBwcm9ncmFtIGFzIHRoZQogdmFyaWFibGUKLS5JIHN5cy5wYXRoIC4KKy5JUiBzeXMucGF0aCAuCiAuSVAgUFlUSE9OU1RBUlRVUAogSWYgdGhpcyBpcyB0aGUgbmFtZSBvZiBhIHJlYWRhYmxlIGZpbGUsIHRoZSBQeXRob24gY29tbWFuZHMgaW4gdGhhdAogZmlsZSBhcmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBmaXJzdCBwcm9tcHQgaXMgZGlzcGxheWVkIGluIGludGVyYWN0aXZlCkBAIC00MjksOSArNDAzLDggQEAKIElmIHRoaXMgaXMgc2V0IHRvIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBpdCBpcyBlcXVpdmFsZW50IHRvCiBzcGVjaWZ5aW5nIHRoZSBcZkJcLVdcZlAgb3B0aW9uIGZvciBlYWNoIHNlcGFyYXRlIHZhbHVlLgogLklQIFBZVEhPTkhBU0hTRUVECi1JZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAicmFuZG9tIiwgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZSBhcyBzcGVjaWZ5aW5nCi10aGUgXGZCLVJcZlAgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsCi1ieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KK0lmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICJyYW5kb20iLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcworb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KIAogSWYgUFlUSE9OSEFTSFNFRUQgaXMgc2V0IHRvIGFuIGludGVnZXIgdmFsdWUsIGl0IGlzIHVzZWQgYXMgYSBmaXhlZCBzZWVkIGZvcgogZ2VuZXJhdGluZyB0aGUgaGFzaCgpIG9mIHRoZSB0eXBlcyBjb3ZlcmVkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24uICBJdHMKQEAgLTQ0MCw4ICs0MTMsNyBAQAogdmFsdWVzLgogCiBUaGUgaW50ZWdlciBtdXN0IGJlIGEgZGVjaW1hbCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdLiAgU3BlY2lmeWluZwotdGhlIHZhbHVlIDAgd2lsbCBsZWFkIHRvIHRoZSBzYW1lIGhhc2ggdmFsdWVzIGFzIHdoZW4gaGFzaCByYW5kb21pemF0aW9uIGlzCi1kaXNhYmxlZC4KK3RoZSB2YWx1ZSAwIHdpbGwgZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uCiAuU0ggQVVUSE9SCiBUaGUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb246IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YKIC5TSCBJTlRFUk5FVCBSRVNPVVJDRVMKZGlmZiAtLWdpdCBhL01pc2Mvc3ZubWFwLnR4dCBiL01pc2Mvc3ZubWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDJiZTdmCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9zdm5tYXAudHh0CkBAIC0wLDAgKzEsNzI1NDYgQEAKKzIxNjEgM2NkMDMzZTZiNTMwZjZhNzhiM2IxNGZlZGJkMjA3NDg5NmRiZjZkZSBsZWdhY3ktdHJ1bmsKKzIxNjIgNGRiOWQ0NmIzMDZhOWM2ZWMyZDFmZTdhN2NjMzZlZjcxNzM0MjZhNiBsZWdhY3ktdHJ1bmsKKzIxNjMgNGEzYTY0ODE4NWVmODk2NWMzNDI4NjBiZDg0NTdlZDZjMDNjNmRlMCBsZWdhY3ktdHJ1bmsKKzIxNjQgOGRhOTIyNWNjNjBlMmRhMTY2NWE4MGFmOTAxODRkYjBmZGRhMDVjZSBsZWdhY3ktdHJ1bmsKKzIxNjUgMTdlNDkwYjRkYzI4YjhhYzYwNWZhMTllNDgyY2Y3MjJmZTgwNjU4ZCBsZWdhY3ktdHJ1bmsKKzIxNjYgNTU3MGRiYjFjZTU1OGI1NTcxNmVhYjdkMDgwYTFhZmFkMmU3N2UyZiBsZWdhY3ktdHJ1bmsKKzIxNjcgZmM2ZmNkN2RmNGY3ZjJlMWMxMmYxN2FmMjQ2NGM0OTdkNmY2YTNlOSBsZWdhY3ktdHJ1bmsKKzIxNjggMzRkNjY3ZGMxYTRjNGFiZGNiMTljZGRmZDJlOWJmZGEwMTEzOWVkMiBsZWdhY3ktdHJ1bmsKKzIxNjkgNmZjMTQ2YmQ0ZjAzYzk3ZDE0YzdjMzAwYjEyMTJhMTFlYjliNjcyYSBsZWdhY3ktdHJ1bmsKKzIxNzAgMzM3MDFkYjRlYTU1OTEwMGQzN2JlNDRkMmYwZDUzZTU2OGEwZWMzMyBsZWdhY3ktdHJ1bmsKKzIxNzEgYTcxZTg5NmVkMDQ3MzQyMWQ4OGZlNDU1MjY5YzVhNWU1NDczMmEyMiBsZWdhY3ktdHJ1bmsKKzIxNzIgYmNlYTZjODIyOTA2Yzg0ZWRlZGFiY2MwM2VjNDgxNTk1ZGVmMGE2MyBsZWdhY3ktdHJ1bmsKKzIxNzMgMzZhMjIwZDM3MzFhMDMzNDU3ODU1OTNlYzMyZWJjMzVhMjk0OTRkZSBsZWdhY3ktdHJ1bmsKKzIxNzQgMDZiZjJhZjAwZTNhOWViNTE1MjliNjE4Y2JkYzBiYmNmMWE0ZTk2NCBsZWdhY3ktdHJ1bmsKKzIxNzUgODc0YzhmZDU2NWZhMDk0NjFjMjEzOTlhZjllZGUxMjM0ZWExMGY3MCBsZWdhY3ktdHJ1bmsKKzIxNzYgZTllMDVmYmJhN2E0MDAzNGY4MjExYzlkMWQxMmIyODg3OWY1MWZjZiBsZWdhY3ktdHJ1bmsKKzIxNzcgMDgwOGU1YWI3NDNhYmI4YjA1N2E1NWY3NjUxYWMxMThjODNmNWIwYyBsZWdhY3ktdHJ1bmsKKzIxNzggYTVmMDFhOTE3NDA5MmQyOWViYTYzNzdjMjM2OTE4N2NkYjNmZDdkNSBsZWdhY3ktdHJ1bmsKKzIxNzkgZTliYmU0YWMzMjM4OWU4YTdhNmMwYjRhZWZhZjRlYWQzMDg4ZjIxYSBsZWdhY3ktdHJ1bmsKKzIxODAgNzFhYzBlMzcyMzZhNTRlMGE2Nzg4YjM4NDY1NWQ4ZDgyMDlkODU4YSBsZWdhY3ktdHJ1bmsKKzIxODEgMTE4NTQ1MzEyZjNiZmUxMDNiY2NmYjEwM2Y0ZGYyZWViMGQwZWI4MyBsZWdhY3ktdHJ1bmsKKzIxODIgOTYxNjk2ZWYzYWI3ZTQzYzk5ZjVjNzYwZjdjNjIxYjZhMTE5ZGM5OCBsZWdhY3ktdHJ1bmsKKzIxODMgMmQzZWI3MTdhMDBkMTAzZDQzNzU5NGUwODE5M2RhZTYwMDA2MWRhOSBsZWdhY3ktdHJ1bmsKKzIxODQgMDg1NjJkZTAxNjY4MDBlMWM2ZDVkNTE1Zjc0MzY5YjM5OWZkOGNhYSBsZWdhY3ktdHJ1bmsKKzIxODUgNjRhNjlkNjEyMWUwZDIwNjJmMjZhN2VjYTY3ZTliNmE0MmRjYTI3YiBsZWdhY3ktdHJ1bmsKKzIxODYgMzI2Mzk4NzhkMTZiNjA0ODc1Mzg4ZTIyOTk2MTFiYmZjNTE4OTYyNiBsZWdhY3ktdHJ1bmsKKzIxODcgNDVhZWIyZWVhZDc5ZWU3ZmEzNmU0MTY2ZGViNzUzODZjMTNlMzQxZCBsZWdhY3ktdHJ1bmsKKzIxODggODJjN2JhYjc4YmIxMGE3MDZmNWQ1MjBiMTU1MGU3MjRiOTRhYTM4YyBsZWdhY3ktdHJ1bmsKKzIxODkgZTVjNTBjNjg4MTE3YzZlNWJkODk1NDYwZGFjZTZjOWNiZjU4MWFmZCBsZWdhY3ktdHJ1bmsKKzIxOTAgMzQyYTdjNjFjMGMzYzBmZTQ4MTRkMWFkMjRlNzcxNDI3NzM4MTViMSBsZWdhY3ktdHJ1bmsKKzIxOTEgODZlMGUyMzUwYmExMTc0N2M0ZTBmZGNlOTdiYzdjOWJjNjQ4NzQxYiBsZWdhY3ktdHJ1bmsKKzIxOTIgYzQ4N2RmYzMwNjYzMzk4NTA4NTRmYjg1OGM2YTgzMzA1OWE5YmM3OCBsZWdhY3ktdHJ1bmsKKzIxOTMgYjY0M2VhZGU2NTQ0NTlmODdkNTcyZDZiNzkzODk2ZDliM2FkZjg0MCBsZWdhY3ktdHJ1bmsKKzIxOTQgYjgwN2M5MGM0YTY4MjJkMWNiOGIzOTY5OTFjYWE4MDg1YmIzMmI0ZSBsZWdhY3ktdHJ1bmsKKzIxOTUgMWQyMjkwMGY3N2I4NTNiZWUwNmRkMjRhMWJmMWZkZjQ1MTViNDhiYyBsZWdhY3ktdHJ1bmsKKzIxOTYgZGEwNmEyODJiODgwNGZhNDdmZjRjM2M0YmQ5MmJhOWZiOGVlYTkyOSBsZWdhY3ktdHJ1bmsKKzIxOTcgYTIyNDBjZTkxZTUyMDYxYjQzMmY5Nzk1N2Y5MmJmNzk3ODUzNDBhYyBsZWdhY3ktdHJ1bmsKKzIxOTggYzc5NWZkYWNlZDliOGEyOGQ5ODMzMjc3ODY4YjFmNzQ2MWEwOTVmNSBsZWdhY3ktdHJ1bmsKKzIxOTkgMTBlMTgyMWMzNDVjYTJkMTM3NTM1YTZjMWNmNWViMDEyODZmY2Q3ZSBsZWdhY3ktdHJ1bmsKKzIyMDAgMTkwNWY4MjEzOTdiMGYwOTQxMDExNjA4ZTViNDZkZDFjOWUzODllNCBsZWdhY3ktdHJ1bmsKKzIyMDEgZjI4YWM3ZjYyMWM3NjA3OTc3NGMzMDAxN2IyOTAxMzk2NWQxMDQwOSBsZWdhY3ktdHJ1bmsKKzIyMDIgZTgwZWZlYWI0OWIzMmMxNWFjOTdiMjRkNGY2ZThmZGQ1Y2NmMGE5NSBsZWdhY3ktdHJ1bmsKKzIyMDMgNDgzNWMyZDM4Yjg0ZTVmYjU1ODAzNmQ0N2M1ODcxZGQ5NjYzMzhiNyBsZWdhY3ktdHJ1bmsKKzIyMDQgZWEyMTk4MmExNTMyNDI1ZjgyZWM1YTQzNDZjYjg0MTkxN2E3MWQ5NSBsZWdhY3ktdHJ1bmsKKzIyMDUgNGQzYTI4ZGZmYzliOTVkMzhiOTEyY2I2OTU3NDJkZTQwZDk1NzYzNSBsZWdhY3ktdHJ1bmsKKzIyMDYgN2ZlY2FiYjMyNzkxNDUwNDU0NDYxN2U1YmFjZDFjMDVhMTJlODY5ZiBsZWdhY3ktdHJ1bmsKKzIyMDcgY2U2ZjI0NzExNTA0ZTU5NTZkNjYwMDk5Yzk5ZWNjYjk1MWMwYzE0OSBsZWdhY3ktdHJ1bmsKKzIyMDggMDUwNTdlMzY2MGY4MmNlOGU4M2U4YzJkNzNkMGI1ODQ5NGYyYmVhNyBsZWdhY3ktdHJ1bmsKKzIyMDkgYjBlNzYyMjFlN2ZmZGJjZmU5OGE0NGFkZmFlOWMyMzUwOTNjN2NlYiBsZWdhY3ktdHJ1bmsKKzIyMTAgYzNmYTJkMWYzMDM1ODY5OWVlMjRlMmE1YzNjMDExNjYyZjc1YzM3NiBsZWdhY3ktdHJ1bmsKKzIyMTEgYjk0ODIyZjU0OTkxMzA0YjU4YWRiYmVhMjM4NjljOThiMmY2ZjNmZSBsZWdhY3ktdHJ1bmsKKzIyMTIgZWJjYjYyNmNmZGRmYjlmMWM3YjE4Njc4YWNiZWM0NGViOTdhYmJkNyBsZWdhY3ktdHJ1bmsKKzIyMTMgMWIzMTA3N2FjNjQzMDdhYjU0NTUyNjUxYWVjNjc4NzhkODBkMGJkNyBsZWdhY3ktdHJ1bmsKKzIyMTQgYTFlNTBhOGY0MmUyM2NmYWI2NGJlM2U5OWQ4YTUzMzVlYTMzYTljNSBsZWdhY3ktdHJ1bmsKKzIyMTUgNDAyZjU3MDhiMTA3YjA1ZjgxMWU1Zjg1NDI4NDJlNzE3OThkYTZjOSBsZWdhY3ktdHJ1bmsKKzIyMTYgN2EwMWRiY2VlOWJjMDMxMmY1YTMxN2ZiMjQyOTk3NTFlNzhkZGRjMiBsZWdhY3ktdHJ1bmsKKzIyMTcgYTdlOGZiN2JiNmEyOGViMTNjMDU2ZjNjNjJhOTZjYWFjNWY2NDRkNCBsZWdhY3ktdHJ1bmsKKzIyMTggYTFjMmI0ZmFkMTM2Y2ZiMWIyMjMxNTBhNDhjMzQ4MGQ2M2UyZGVjYiBsZWdhY3ktdHJ1bmsKKzIyMTkgNDk3NWY3OTkwYjJiMzVjNzBkMjM1MDVlY2VhNWMyMGVlZmNkMWVkOCBsZWdhY3ktdHJ1bmsKKzIyMjAgNDMzZjUyZDFkOTU4Nzc2NzAzYTczZTgwZTU1NmJlZWIwZTQ3ZjU0MyBsZWdhY3ktdHJ1bmsKKzIyMjEgNGY1OTNiMzhkMDYxNTU3OWFjYWQ0YzNjOWNiMzUwZWI2MDBkZGM0ZSBsZWdhY3ktdHJ1bmsKKzIyMjIgNWM0ZGQ5MzQ4ZTgxMTMzMjBjNGY3YjRlOTgzM2YzMjA1ZGYxOGI4MCBsZWdhY3ktdHJ1bmsKKzIyMjMgZmZmZDEyODZjODgyNjc5MzRkNzQ4NmU0YzRlNDY3ZDU3YjA4NjU5YiBsZWdhY3ktdHJ1bmsKKzIyMjQgNjEzMTE1MDZmMmNkMDliYWRkOGI3OTQ1NmFmOTc4OTIxNGVjYjBmNCBsZWdhY3ktdHJ1bmsKKzIyMjUgYTIyZGY1MmQ3NzQ5YTNhOGMwNzcwYTgyMTNkZTQ3YjJjYTU4ZmVjZiBsZWdhY3ktdHJ1bmsKKzIyMjYgYTcyYzBhN2RjOTkzYWFlMDVlNzA4NWNkMzg2NzhiOWRiYmViMTk4MSBsZWdhY3ktdHJ1bmsKKzIyMjcgNDZjYjE0YWVjMTBhOGQ2ZTM2NjViNzE4ODA3MGI2N2U4OTlhZDYzNiBsZWdhY3ktdHJ1bmsKKzIyMjggZjk4ZTQxNzExZDE3NzkwMGE5NmQ1NzQ1YmE5MGNjODhiZDgyZDdkOCBsZWdhY3ktdHJ1bmsKKzIyMjkgMzY1MDM3MzZmZGMyMzkzNDA2YzA4NjBjODFhMjAyMjJkNzNjZWU1OSBsZWdhY3ktdHJ1bmsKKzIyMzAgY2NjZDUzNGYyMjgwNzRmMjY3NDg0ODQyMjFkNjlmMmVlNzUyZjJiMyBsZWdhY3ktdHJ1bmsKKzIyMzEgYTM2YzM0OGE4ZTFhMjkxNWQ2OWI3ZGQyMDIxNjNmZGI3ZTU5NmM4OCBsZWdhY3ktdHJ1bmsKKzIyMzIgYWM0NTIyZTk5Y2E5NDM3N2E2NWM2NmNmZGMyNjY4NGZhMGZkZmJlYiBsZWdhY3ktdHJ1bmsKKzIyMzMgNWU4YTBiNDBhNGJkZjFlODNjNWQwYmYzOGVmYzc3NDViMDZlZjhkNCBsZWdhY3ktdHJ1bmsKKzIyMzQgMzAyOGFjYWE1NmIwNWVkMGUxMWUxNTZlODFiNWEwNjcxOTE1Y2I4NiBsZWdhY3ktdHJ1bmsKKzIyMzUgYmMyNDRkZjIwMjUxNmI1YTU1NTEzZTQ2M2IyZjYzN2QxOGY1ODA1NSBsZWdhY3ktdHJ1bmsKKzIyMzYgODVlZWQwNjBhNDZjZTI2NjQ5ZmQ2ODAyY2ZiZDVlZWM2MTkxMDY4OCBsZWdhY3ktdHJ1bmsKKzIyMzcgZWRlODY3OTk3MDViYTE0YmM0MDIxMzU3MWRmZTJhMWQ1ZjU2ZTkwNyBsZWdhY3ktdHJ1bmsKKzIyMzggZjcyZTBjNjIzNjllMjRjY2MwZWNkYWI3OTJjOTdhMjFiMjMzMmJhZCBsZWdhY3ktdHJ1bmsKKzIyMzkgYjFmYjRlMWY2ZTUxNmQyODBjNTU1MDFiMjM0NDQ5OGNhNjI3ZmViYyBsZWdhY3ktdHJ1bmsKKzIyNDAgNmM0M2U1NDc2ZGU2OTA0MTI2OTliM2JkZTZiNTA3YjFjNDg4MDRhNiBsZWdhY3ktdHJ1bmsKKzIyNDEgZjQ3MTAxZGMzYzE4OGYyNGY5Yjk3MDVkYjNiNjQ4OTE5MTRiZGI4MiBsZWdhY3ktdHJ1bmsKKzIyNDIgZGUzNGY0YTRkMzUzYjlmNWY5OTFhYWNhOThjODNmYWFjNjgxYzZmNSBsZWdhY3ktdHJ1bmsKKzIyNDMgNTU0YWM2NTliMmNiOTUyNGVmNGY5NmVjMjc1NmRjNGNhMGZhMGY5YiBsZWdhY3ktdHJ1bmsKKzIyNDQgZjZiY2YzYzFkNzE0ZTc4NzUzNTZjYTEyYzMyZWU1Zjk3NWY0ZWQ4YSBsZWdhY3ktdHJ1bmsKKzIyNDUgYTc5Y2JiMjY1NWJhYWY1NGFkZGMyMjAzMzUwMDM2NDc5YmRjYjdlMyBsZWdhY3ktdHJ1bmsKKzIyNDYgMDZjOTJmNDkxZjU4OGVkOWFiZTBmMmQ0ZjE1MTIwNjlhMzBjMTkwMSBsZWdhY3ktdHJ1bmsKKzIyNDcgYTY5MzQzODBjNmU3OWI4N2Y3NzYyYjFkOTQzM2QwZTBhODkzNzQ1MiBsZWdhY3ktdHJ1bmsKKzIyNDggZWYyNDQwZjI0ZjEwMmM2NzdhMDJkNDA3OTg4ZGQ4NWY1ZGE1MGNhYiBsZWdhY3ktdHJ1bmsKKzIyNDkgMTZlOGM1ZDE2NDkzNWYzYzZhOTg5ZWVlYWRmMjJiMGFiNGRjMjJlYSBsZWdhY3ktdHJ1bmsKKzIyNTAgNTg0N2RmMTM5OTFkZTZhODM2NDg0MTA3NTUzZjRlOWNlY2NhOGExNCBsZWdhY3ktdHJ1bmsKKzIyNTEgNWNiODQzYmM4N2ZjMDg2NTQ2ZmFiZjZiOGVjMDNlZWQzMWUyMGE4ZiBsZWdhY3ktdHJ1bmsKKzIyNTIgNWMzNTdkMzdiMzI3MzFjOGQwMjA0NTQ5NzAyMDg1OGM3OWM1NzEzOSBsZWdhY3ktdHJ1bmsKKzIyNTMgMDAyMDY2YTgzOWM1MWNjMTg0YTBjNmU2NjllYzlkNjM0MjBjZGE2NyBsZWdhY3ktdHJ1bmsKKzIyNTQgOWUwNTFmYzcwNzNlNzdiOWUxNTAzNGExOWU1NDdlZmUyYjg1YzY2YSBsZWdhY3ktdHJ1bmsKKzIyNTUgZGFjODYyNWM4ZDliMDE0MTc5Y2Q1ODMzNThiNGQwZTRlMjUwMjU2NyBsZWdhY3ktdHJ1bmsKKzIyNTYgYTViZjdkNTk1OWNlMDUwZjJiMDUxYzEyZTgxODA4OTVlN2U2ZDhhOSBsZWdhY3ktdHJ1bmsKKzIyNTcgMjdhNWIwOGMzZTc0MmM2MmExNWI2ODE1NmZlMGQ0ODhjMDk0YWQ0MiBsZWdhY3ktdHJ1bmsKKzIyNTggNmI3NWYyYTMwMDBkNDA2NTE0NmIyZGFmZTZkODNkMzMwNzFlOGQzNSBsZWdhY3ktdHJ1bmsKKzIyNTkgNDU1ZDY1YTExYjEzZWQzNzc5MmUxZjRmZmJmZTNiY2RmYWE3ODNlZSBsZWdhY3ktdHJ1bmsKKzIyNjAgZTBjOGVmZWU3NmJkODE1Nzg0YzgxM2M2NmEyYTEwNDZlNWEwYmY1YSBsZWdhY3ktdHJ1bmsKKzIyNjEgYWQxNGFhOGEyOTg0NDMyMzg0ZjdhZjIxZDQ1MmJlNWFhYmE2ZjE4ZiBsZWdhY3ktdHJ1bmsKKzIyNjIgMDhlNTVkYjZmNzk2YTI3NmVjZDFjMTY4M2E1MDJiYWZkNzI0Nzg3MiBsZWdhY3ktdHJ1bmsKKzIyNjMgZjJjYWNiOTBjOTE3YzhkMjkyNzk5NGNjMjQzMTJhNjIxZGIxM2Y4MyBsZWdhY3ktdHJ1bmsKKzIyNjQgMTIyOWJhMTI0ZTBiYThlY2U5MjJjZTE0YzBmNGFhYmRiZGUxZDNmMCBsZWdhY3ktdHJ1bmsKKzIyNjUgNGVjOGMyNjNhYjQ4YjQ5ZDc3MjcwMTFjNGE4NmM3YjEwOWIwZmE1OCBsZWdhY3ktdHJ1bmsKKzIyNjYgYjRkNWZkY2JmODNjNjhmOTEzYWY0YzE3NWExNDNjOGFiZjc3NWZlZiBsZWdhY3ktdHJ1bmsKKzIyNjcgNjQzNzNjNzljMDk5OTkwY2I2OTI2MmQxODNhNDVlNGRiZmY0Mjg0MiBsZWdhY3ktdHJ1bmsKKzIyNjggMWUwMDdkY2NiMjcwOWIwODExZTUzYmYwN2M3Yjg3OTc5MWFjOTc3NCBsZWdhY3ktdHJ1bmsKKzIyNjkgYWU5YjM2NmM1NzVkNTU3ZTZmODA2ZjBkMTZlNTQ3ODU3MTc1NGMxYiBsZWdhY3ktdHJ1bmsKKzIyNzAgZjY5NDAzNmI4NTYxZWIxYjNjYjU5ZWYzNjgwZDdlOTZkZGZkNzFhMCBsZWdhY3ktdHJ1bmsKKzIyNzEgZTRiMWQ5ZTY5ODBhNDM4ZjkwMmVlZjkwMDM2OGMyZTZhMmQ1MGE2NCBsZWdhY3ktdHJ1bmsKKzIyNzIgZDA4Zjc1MmI1NmMwNjE0NmQ1YmFjZmIyZWY3NmMxMDM2YTNjZGM0OSBsZWdhY3ktdHJ1bmsKKzIyNzMgZDhhMWI2NDU2MjEyYjI4YjYxMjY0ZGIwMmQ2NWIyYzVmNmRlNzJjOCBsZWdhY3ktdHJ1bmsKKzIyNzQgZDE2OTYxMTY3MzY1ZmZmZjgxN2JiOGU2OGEyMTExZmU1M2E2Y2M1OCBsZWdhY3ktdHJ1bmsKKzIyNzUgMWVmYjhlZDZhZmQzM2EwMDZjNTI5OWQzYTQxNWFjZTEyYzk4NmE4OSBsZWdhY3ktdHJ1bmsKKzIyNzYgNDA5NGI0NmYwNGM4ZWFmMzI1YjNkNTk5ZTczMmE1YmY5YThjM2E3YiBsZWdhY3ktdHJ1bmsKKzIyNzcgMGEwMmNhOWRjZDZlMDIyZjEwYTFjYzU1MzdjNzhhYTcxMzI0YTMyMyBsZWdhY3ktdHJ1bmsKKzIyNzggNzg3MzNjMWM2ZTM2MTg3YWY1N2Y0ZWEyNTE3MGFkMDdkMDgxMGJiOCBsZWdhY3ktdHJ1bmsKKzIyNzkgYTgwOTAxM2MyYWYxZWYzZmQ2OWZmNTFiNDljMjU2M2FmN2MzMjcwNSBsZWdhY3ktdHJ1bmsKKzIyODAgOWZlZTFjYTZjOGZlZDE1NzcwY2YwNmY0MTg3NWRmZmFlOWFlZDQyYSBsZWdhY3ktdHJ1bmsKKzIyODEgYzlhNWZlMTY2MGY1MTk4NWUyNjliZTQ5Mjk0NjRlNWM0ZWEyZTVhZCBsZWdhY3ktdHJ1bmsKKzIyODIgMGMyNWZhZjRhNmE0NDUwODVjNGI3YTk4NWI3YTQzMDBjOTM5Y2Y3MSBsZWdhY3ktdHJ1bmsKKzIyODMgYjM4MDNmZDNjYjJjOGQ5MDkzMTM2ZjVhMWQyZWM1MGY5ODFiNDMxMiBsZWdhY3ktdHJ1bmsKKzIyODQgMjI3MjdiNDM3ODFlN2M1M2RiZGNmNTJmMzhhYmZkMDlkNmQwODE0ZiBsZWdhY3ktdHJ1bmsKKzIyODUgYThkMDMzYzZmYjU0YTNlZWE4MGRlMGEyOTUyY2Y1YTk4MGIzZjg0NyBsZWdhY3ktdHJ1bmsKKzIyODYgZjcxZDZhMDk2YjAyMThhMjY3MjdiZGEwZDRkM2Q1YWNiZjM1MjNkYiBsZWdhY3ktdHJ1bmsKKzIyODcgMjdjYzBkODIzNzY2M2I3NWRhMzg3MTU0NmIyMDNmNTY4NWE0N2E0NSBsZWdhY3ktdHJ1bmsKKzIyODggZDIxNGI1ZDIxZGY4YzVhY2VjZWVlNTZiZTE0ODE4NDQ1ZjgwOTgzMyBsZWdhY3ktdHJ1bmsKKzIyODkgM2JlZDc2Y2RhYzBjNDY1NWNmODAyNWJhNjEyMjFmM2VjY2Q3YjY5ZiBsZWdhY3ktdHJ1bmsKKzIyOTAgZWZkOTAwNDk3ZjRmODdkNzE3ZDEzN2RiNThhZjk5NWQ2YTAzYjE0YiBsZWdhY3ktdHJ1bmsKKzIyOTEgOGYyMTRkNjE3YWNhYjgwZjE2NjdjMTAyYjZmZTg1ZjY4MGJjZTBkYiBsZWdhY3ktdHJ1bmsKKzIyOTIgYWQ0YzVhNWVmMGZmZWVlOWI5YWE4ODVhNDE2ZTA5ZmE0NDkyNTFiMCBsZWdhY3ktdHJ1bmsKKzIyOTMgNjVlZGRlMDIyZDcxZWUzODNiMGE1NDZjNzI5N2M5Mzg5OGE2ZTFiMSBsZWdhY3ktdHJ1bmsKKzIyOTQgMDY4ODk2ODVlYjYyMDFkMjRlOTEzYjRjMDU0YzFmMjI3NGQ0ZDM1ZCBsZWdhY3ktdHJ1bmsKKzIyOTUgNWQ1YzliMmRhNTYyMjE4MmNhZmNmMTc3N2I4YWE3NmM3MGFiNzYyMCBsZWdhY3ktdHJ1bmsKKzIyOTYgMjZjY2JjM2U0MWM0NjFhZDc5YTQyZTIwMTMzOWNiOWY5YTJkODljNyBsZWdhY3ktdHJ1bmsKKzIyOTcgNjUyM2JkMjk1NGYwNDM2ZmI4ZjZjYjRhYWFmYTMwMDUwN2UzYWIyNyBsZWdhY3ktdHJ1bmsKKzIyOTggODJlZjk0YjhiOTAyZTM0OTRiMzg2MDFkMTg0NGJiOTU5ZGUzMTY3NyBsZWdhY3ktdHJ1bmsKKzIyOTkgYmIyNDk0ODk1N2UzY2E5Njg3NmU5MDJlZGIyOTBhYjQ2NGJhNmI2ZSBsZWdhY3ktdHJ1bmsKKzIzMDAgYzI5NGE4Y2FlYmI5YmIzZWU5Zjg5MmEzNzJkNjQ1NzUwNzA0NmY1MyBsZWdhY3ktdHJ1bmsKKzIzMDEgM2I4MDIzYjBiYjQ4YjEwNjZkNGEzMzQwNzMxNzMwNGQzNzI5ZTM5MSBsZWdhY3ktdHJ1bmsKKzIzMDIgYmY1YTg1MzlkOGJhN2Y3NGYwMzQyMmM1YjRmNjY5MDcwZmI5NjUyMSBsZWdhY3ktdHJ1bmsKKzIzMDMgYzdlYTYwNDkxZTY4MWU5YjkxZjc2YTAxMmM0ZGM5NDRiNWZmZjJkOCBsZWdhY3ktdHJ1bmsKKzIzMDQgMTg3MGQ4MmRlMDY5OWFmYmE4OWExOTQ2NmIyZjljMzY1MWI0Y2M5YSBsZWdhY3ktdHJ1bmsKKzIzMDUgYzcwZWVmZTQ4MDI5MGExZDgwZDk4N2EyZmY1OTlhMGVhY2JlYjk5MCBsZWdhY3ktdHJ1bmsKKzIzMDYgODUzYjczNmE2YTllZTM4ZTMzMDFkNDMwYzE1MmFlNzU4ZTE2MWE0MCBsZWdhY3ktdHJ1bmsKKzIzMDcgMGY1OTg5OTNkOTk4NmY0YWU0ZTZkZDlhMzQ5MWQ1MDliMzA5OGU4MyBsZWdhY3ktdHJ1bmsKKzIzMDggMzQ5OWFkODc4MzlhZjdhMWE0ZjcxYzE1Zjg5ZDIwYWI4NGM3OGU3MSBsZWdhY3ktdHJ1bmsKKzIzMDkgYTBjNWYyYWYyZTBjYWQ1YzRkNGRlNGE4OTNjYTVhNWZlN2NlN2Q0MSBsZWdhY3ktdHJ1bmsKKzIzMTAgNjFjNTI2MGMzNjRmMjYwZTRjOWM5YzU5ZDdmOWQyYTdkNDQzNmExYyBsZWdhY3ktdHJ1bmsKKzIzMTEgYzY1ZWJhODE5NGM3YjQwM2I5ZTcyZWFhYzQ1MGUyZGFkYWYyMDM3NyBsZWdhY3ktdHJ1bmsKKzIzMTIgOWQ0YzdkZTBkZWY0ZmU2N2VmNWFkNTgyNDRjNzY5OWI1MTg4YmExZCBsZWdhY3ktdHJ1bmsKKzIzMTMgMWQ0MDk0YzdkNThiOGM3MzBmMDM0YjFiMzEzNjUxODU2MjlkYTU2MyBsZWdhY3ktdHJ1bmsKKzIzMTQgZTU3NjRhMGQyZDMyOTlkYTY2MTRlZWYxOTIyYzdmNDE3NzY2NWZjZSBsZWdhY3ktdHJ1bmsKKzIzMTUgZjJlZmNlYWY3M2NjOWQ5OTliOGRmNTNiZmY3Y2QyMThhMmU2MzI0MyBsZWdhY3ktdHJ1bmsKKzIzMTYgODk2YzgyNWYyZjcxYmRkMmFjMGRmMTJiNWM2ZmYxNzllMDZjZGEyNSBsZWdhY3ktdHJ1bmsKKzIzMTcgNDNjYWJhYzUwMjNkMmFjMjdmNWM5YTNjODM1ZjFhYzY2OGM0MzY4MyBsZWdhY3ktdHJ1bmsKKzIzMTggNDdjYzBjZTc5OTljNzg3ZjZlOTRiZDNhMDNlMTljMDkwMjIyNDhmZSBsZWdhY3ktdHJ1bmsKKzIzMTkgYzg2NTlmOGE1ZjYzNzg0YzVhZmU0MDBkYzE3YjVmYzE5MmQwMDE5NSBsZWdhY3ktdHJ1bmsKKzIzMjAgNDFmM2M2NmIxMGZkMGE2NWNhYmM0OGJmYTFjNmFlYjMyMGQ0MTM1NSBsZWdhY3ktdHJ1bmsKKzIzMjEgYWZhNDhhOTZhNDQ0M2NiNTg1NzEzODc5OWUxZDA5YzVkYzRiYWQ2OCBsZWdhY3ktdHJ1bmsKKzIzMjIgMjVhN2ZiNDRlMjk3ODQ0OTgxMjM1NGNiMDdhMmI4NjJhZjMyY2VlMiBsZWdhY3ktdHJ1bmsKKzIzMjMgNzYxODY5NzY2ZTQ1MjhlNjhmMWQxMTQ2MDZlYmM5MWVlYzhhNGVmYSBsZWdhY3ktdHJ1bmsKKzIzMjQgZWY5YjRiZTVhM2ZlYTEwMjliMzFiNTE1NDI0NjlkZTBiMjY4ZGYwYiBsZWdhY3ktdHJ1bmsKKzIzMjUgN2NlOTFjZmI3YWM0NTEyZDQ5MDc3M2Q4MTc0OTM3NWE4YmMzMjk4MiBsZWdhY3ktdHJ1bmsKKzIzMjYgYTQ1NDdhZjI5NjcxMWJhYTc0Mzc3MjI5MmM3NDE4NGM5ZDI3ODVjOSBsZWdhY3ktdHJ1bmsKKzIzMjcgMjg5MjNlNDQyNTRjZWI3Njc4OTdmNDVkZGVkZTVlMjI5ZWY1NGVkMyBsZWdhY3ktdHJ1bmsKKzIzMjggM2ZhMmIxNGJlMjcwOTExOTA3OWY3YTZjNjMwZTViMTM1ZDVkZTkwNSBsZWdhY3ktdHJ1bmsKKzIzMjkgNjU4NWFhYmUxOTY4YmE1NjE4ZjE4ZWEwYzlkYTFjOTc4OGIzNDg5ZiBsZWdhY3ktdHJ1bmsKKzIzMzAgMWVkN2Y2ZjY1OTgzNzFlYmQyMzUwZTE2ODEwODFiMjY3YWMzMDFlNiBsZWdhY3ktdHJ1bmsKKzIzMzEgZWUwYTMyZmQ0NTY3ODQ5NWFjMDIzM2NhYWY2ZWVjZDBjODg0ZTk4YiBsZWdhY3ktdHJ1bmsKKzIzMzIgMGNlZTAxYjY4ZDljODI0ZDMzMzIyZTM2MDI0YTAyZjRhNzVlN2UxMCBsZWdhY3ktdHJ1bmsKKzIzMzMgNWNmM2MzNmQwMmVhNGNhYjIzMWMyOTk3ZWFiMjhmZTJjNzI2YjExZiBsZWdhY3ktdHJ1bmsKKzIzMzQgNDY1NjQ1MjQzNmUxOWM0MTJlODgwODgzNGUzMTg1YTk2NTAwOTVlNCBsZWdhY3ktdHJ1bmsKKzIzMzUgMjBmZWU0ZTJlZWNkYzk1ZWUwMGIyZWEzY2QyYjJlZTk1YjVlNWI0ZCBsZWdhY3ktdHJ1bmsKKzIzMzYgMDZjYzNiMDA2NzFjM2UyMjE1N2UyN2U4YTdmNmU4NjgyYTc2YTg0OSBsZWdhY3ktdHJ1bmsKKzIzMzcgMjI5MTY4YTJmZTI4NmE4YjI1ZDgzZDgwNTYzZDc1ZjQ2MGEyNTlhMCBsZWdhY3ktdHJ1bmsKKzIzMzggYmQ0OWNhNmM0YWRkMjQzYzg4YTA5NDJhYmY1ZjEzY2VmMTBmYzNkMSBsZWdhY3ktdHJ1bmsKKzIzMzkgZmI2MzY3ZDVmZjQ2NDkwNTRlODc3OTdmNDEyMjM0ODkzMDU5MTNhNCBsZWdhY3ktdHJ1bmsKKzIzNDAgMGMzNTVlOWVlODU0NThhMWQxYWVlOGJhZGVhZGI4MmY1YWJhZGI0ZiBsZWdhY3ktdHJ1bmsKKzIzNDEgYTQwNWEzMTI0MmU3YzRiNGQyZWQwZTQ2YmU1ZjRmOTBhM2Q3MzhjYSBsZWdhY3ktdHJ1bmsKKzIzNDIgYTgyMzYwMmMyMjc0MWQ1YWI5YzQ3OGM2ZjViZDE5MTdjMjA0MTVlYyBsZWdhY3ktdHJ1bmsKKzIzNDMgNTlmZmI2ZDRiMzRjNzY3M2NhNzRhZmRhODJhZWE2M2ZkNGJjZWQ3NCBsZWdhY3ktdHJ1bmsKKzIzNDQgYzkxNjhhZmUyM2RkZjY5Y2RmNWYwMTZjNzMxZWQzYzRjYWJjZjAxNCBsZWdhY3ktdHJ1bmsKKzIzNDUgMWIwOGRmNDE1ODdiODU1ZjRjNjI1YjkyM2JiZmZkNDYyNzU0YjU5NCBsZWdhY3ktdHJ1bmsKKzIzNDYgMzM0NjYyNjhiNjM3MWVhNWU5M2M5MzFkMGNlMzM1NDBkNWFlMmU4ZCBsZWdhY3ktdHJ1bmsKKzIzNDcgODkxMTVlNzUzNGQ1ODBlMGI4ZDI1ODFjOGMyNGQwMDc5MWRiMWE4ZCBsZWdhY3ktdHJ1bmsKKzIzNDggZjQ3ZDVlOWVhMjY0ZWY5M2QzNWZkOWI0MTk0OGNkMTQyYmE3MGQ0NyBsZWdhY3ktdHJ1bmsKKzIzNDkgZDgxODE4ZTYyNjcxYTYzZTU1NTNjOTk4Y2M2MWJkZmIzNTkxMzQ2YSBsZWdhY3ktdHJ1bmsKKzIzNTAgZmYwZGFlMWY0ZGI2MjViZjEzMWJlYjdiNmNmNzNmMTNhZTU3YzVmYSBsZWdhY3ktdHJ1bmsKKzIzNTEgYjUwZmE2ZDU4Nzg2ZGRiZDQ3M2RlY2Q5NWU2MDViODllMDRiYzQ4YyBsZWdhY3ktdHJ1bmsKKzIzNTIgNWZmZDM3MWI3ODQxZGU2NTBjMmJmYWMxMjdmMDQwYjlmYjc4MmE5NyBsZWdhY3ktdHJ1bmsKKzIzNTMgMzJhZTRhMWFhYjY4OWFlZjhlZTA5MGM0YzE4OTE2ZGE3OGUyMmZkYiBsZWdhY3ktdHJ1bmsKKzIzNTQgNTdmM2ZmYzdiMWM0MDU0MjUxOTllYjdmYzJkODM0ZDM4NTc4MmUzZCBsZWdhY3ktdHJ1bmsKKzIzNTUgMTQ1ZjllMTQ1OTVmNGJjNjJiMWU3NDIwN2M2ZDU5NjM2YTdlOTdlMSBsZWdhY3ktdHJ1bmsKKzIzNTYgNDVmNDNmNzU1ZTVjNTNiYjRmZWNjODU4YTc1NTQyM2Q4MmU1OGY4OSBsZWdhY3ktdHJ1bmsKKzIzNTcgNDhmYzBiOGYzM2Q5MDliNDQzZmQ4MGI4MzNlYTVmYjRjNTUzZWE1MCBsZWdhY3ktdHJ1bmsKKzIzNTggNDIzYmU4NzZkY2NlNjIyNTcwYzU3OTMxOTk0OTY2ODEyZDExNDgzMSBsZWdhY3ktdHJ1bmsKKzIzNTkgNjQ2MzE2Yzk5NTA3ODg4Y2U5MjI2ZmU3ZTY3OTdmZTc2OGZlNTNmMCBsZWdhY3ktdHJ1bmsKKzIzNjAgMGEzZTMzY2ZkNGE5MzMzZTlkMDZkNDc0NjNhZWRmYmEwNjc0MGU5YSBsZWdhY3ktdHJ1bmsKKzIzNjEgOWQwMTk2NWY0ZjQ4YWZkNThlOWYyYzk4ZWMzNTVmZGU2Yjg1NjljZCBsZWdhY3ktdHJ1bmsKKzIzNjIgMzEwZjhjOTI0MDczMmUwYTczNjQ3MTMzNDY0MzljNmY1MWMyOTdlZiBsZWdhY3ktdHJ1bmsKKzIzNjMgYmZmZmM3ZTBmY2MzZTE5MGExMzU1Mjg4ZThhZDcxYWIxM2E2Yzk4ZiBsZWdhY3ktdHJ1bmsKKzIzNjQgY2ViMzZlYzYxOThkZjM5OWMxOTlkN2QwMThlYmQxNjRiYTZmNjc4NyBsZWdhY3ktdHJ1bmsKKzIzNjUgM2Q3ZGE2MTc0ZTJlNTg1M2ZjNTJlY2M4ZGZiNWE4OTBkNTU0N2RjMiBsZWdhY3ktdHJ1bmsKKzIzNjYgOGZmZGE4NDZkNzg4OWZkOTczY2E5MDA1MjRlNGM5MTcxMzEzNWFlYyBsZWdhY3ktdHJ1bmsKKzIzNjcgM2NjNTQ5NzJhYjUyMzA2YWY1OTkyN2Q1YmEwNzAyMmJiNjVkMDRhNSBsZWdhY3ktdHJ1bmsKKzIzNjggOWFiMzI5Njk3ZGRhNTQ3NTA5ODg4NTI0NTMwZTAyODBjNTQyMDBmZiBsZWdhY3ktdHJ1bmsKKzIzNjkgZjM1MmVhNGRmZjcwOGIxYTcyYTk1YzQ1ZWQ5OWE4NDg5MTg2ZmExMSBsZWdhY3ktdHJ1bmsKKzIzNzAgZTQ4NmM4NDljNTBjMjU2ZWJjNmYwOTAzYTk2OWVhMDM2ZDQzODljNCBsZWdhY3ktdHJ1bmsKKzIzNzEgOTFhMmY0NzQ1ODUyMTg0NDA1ZjYyZTEzZGM5ZTkyYzUwN2RjOGU5NiBsZWdhY3ktdHJ1bmsKKzIzNzIgODNmMGE3MjRhODdjMDE2MzBhMzk2YmE1NmEzYWJhOWJkYmFlZjQ2ZSBsZWdhY3ktdHJ1bmsKKzIzNzMgYTc5M2M5ZTg4MGM3ZjkzNTlmMDYzMzgwN2Q3ZDYyZDVhYzA3MjQwZiBsZWdhY3ktdHJ1bmsKKzIzNzQgNjZiNTU3NjZiYTY1OGE1NmIxZWM0MWRlOWMyYjE2MmI4YThiMWIxNiBsZWdhY3ktdHJ1bmsKKzIzNzUgZWQwMzExYjhlNzQxOTE4MDc5YzdmNTI2YWNmMjgxNzc3NjE2YjU1ZSBsZWdhY3ktdHJ1bmsKKzIzNzYgZjYxZTczNjhkZWYyZTllNWY1NTg2ODdjOWFjMTVmYTM0ZjAwZDFmMiBsZWdhY3ktdHJ1bmsKKzIzNzcgMTc1NGI4MDI0YjU1ZDBjMzdmZmU2YzFhZjNlYjAxYjM3MWQ2YWVkYSBsZWdhY3ktdHJ1bmsKKzIzNzggMTk1ODcyM2JmZTAyNGQ2ZWI0YTRiMGM2NmYyOWM1OGQyYjI2YWJhZiBsZWdhY3ktdHJ1bmsKKzIzNzkgMzQyOWM5NDVkODE3ZGJkMWVjNDE1YWM5NTM2ZDJkMjE0YWJhODI1OCBsZWdhY3ktdHJ1bmsKKzIzODAgYTEwOTdjZDAzMzQ4ZWU4MWI2MWMwNjA0OGNjYmE2ZDljMjU4Y2I2YyBsZWdhY3ktdHJ1bmsKKzIzODEgMWVmZjYxMTE1ODJlNDhlMDA5MDY4OGY0NzVkMTZkYmRkOGYyMjdkZCBsZWdhY3ktdHJ1bmsKKzIzODIgZWRkYTlhYWQzZThmMTdlMmQ4ZmJjYzMyN2YxN2ZiNmMwZWZjNzY3YiBsZWdhY3ktdHJ1bmsKKzIzODMgMjg5OGQ3OGZhMzJkZTdlMDZiMGRjMWI0ZTJiYThiMzM4OGQ1NmQ1ZCBsZWdhY3ktdHJ1bmsKKzIzODQgNjY5M2M1ZDg3ZjNhMDQ5ZDkwODBhZTZjOTA0ZWQ5YTIzNDY5MTNiMCBsZWdhY3ktdHJ1bmsKKzIzODUgZTcxYjZmZWM4NmU1OThmZDMwMjZmN2VkNjMwOGZhMzczMGU2YTVlZSBsZWdhY3ktdHJ1bmsKKzIzODYgNzgxOWUxNjE1MzIwYjQyMDYyMzJlZGMzN2ViODYyYmM2Zjg3M2I2MiBsZWdhY3ktdHJ1bmsKKzIzODcgN2U4MzExNWVkYjZhZTZkMzI2NGVjMzNjODk0MzJiM2VkYTJmMDAwMSBsZWdhY3ktdHJ1bmsKKzIzODggN2VjNjA1OGI1MzliN2VkOWZhMGNmNmJlMzdlZGNkMTZmYzE2ODY4YiBsZWdhY3ktdHJ1bmsKKzIzODkgNjM0YzFkM2M3ZDM5MjNmMDRjYTUzNGFhOGZmMDc0Mzk5Mjk2MTFjOCBsZWdhY3ktdHJ1bmsKKzIzOTAgMDg1OTdlMmI2M2QzZjk0M2NmZGU2ZDI3NDM0NDY3NWM3MjdjM2UwNCBsZWdhY3ktdHJ1bmsKKzIzOTEgN2JhOTYxMjA1OGE0NjliMzQ5MzlmNDg4MDdiZDZlMmMyNGVlMGY2MiBsZWdhY3ktdHJ1bmsKKzIzOTIgYjMxYWJmNDIwZTYxYTdhMGE1YWFiNGE3MTI5YmFhMTU4YzllZWYwNCBsZWdhY3ktdHJ1bmsKKzIzOTMgYWYyZTY0MDA3Njk4MTdiMzhlZmI3ZWQ1MDVhY2E2YzgxYzU4ODlkYyBsZWdhY3ktdHJ1bmsKKzIzOTQgOGY2MmE1NDU3MzE5ZTI2N2Y0NGI2YmU1MWVmM2JlMWQ4MGE4ZWYzZiBsZWdhY3ktdHJ1bmsKKzIzOTUgOTE0YzgzY2ZhNWUxMDVjNzkxMjQ3YzNhOGRmYmQwODE2Y2Y0NDk5NyBsZWdhY3ktdHJ1bmsKKzIzOTYgOTc3MDExMmU2NjBhOTAzZjVlYWM2NTc4YThkNTU4ODE0Zjc0OGIyMiBsZWdhY3ktdHJ1bmsKKzIzOTcgMGE5MmI2YTFiOWMwYWJlODc3YjYxYTRlM2I0NThlMWZlYjdiNjhhZSBsZWdhY3ktdHJ1bmsKKzIzOTggMTZmNDY3NzE3ZDdhYjcwMzVhMTE1YWE5ZDUxMmViNTljNzBmOWJjYyBsZWdhY3ktdHJ1bmsKKzIzOTkgZmQ4MTZlZDE3ZTM1ZjE3MTBlOGI5NmIzY2M5ZmI3ZTA5MWQ1NWUxOSBsZWdhY3ktdHJ1bmsKKzI0MDAgZmRhOTczZjJhNTEyYjlhNTYyNTc1NWNlNzAxZjYzYWViN2RlZDJiNyBsZWdhY3ktdHJ1bmsKKzI0MDEgMGFhZDNhN2I5N2VmMzUyOTEzMTcxMWZjODFhYmQzNzc5NGFmYmU1MiBsZWdhY3ktdHJ1bmsKKzI0MDIgNDFlMDU3ODcwYTUzNTRlZjViNTI5NTZiODk4OTJmNDRhM2JmN2Q3NSBsZWdhY3ktdHJ1bmsKKzI0MDMgMzE2YTBkOWMwMDk2OWVkMDY2YjAyNWMwNTRmZGIwZDFjNDRkNjhkNCBsZWdhY3ktdHJ1bmsKKzI0MDQgNWY3YzI0YjM5NTNiZTc0NDNlZDZmMWUzNzliMzBiNTNiYmQwYWU3NyBsZWdhY3ktdHJ1bmsKKzI0MDUgNDdlYjgxZGE0NmRjMjE2NzdmMThiYzFmNTNiYWVmMjBmNDRiZjU4NyBsZWdhY3ktdHJ1bmsKKzI0MDYgNDMxMzNkODg1YzRjYzk2MzIxMTY5OWVkMjhjOTY3OTAzZTE2N2EzZiBsZWdhY3ktdHJ1bmsKKzI0MDcgOTU2ZmQ1YzNmMDQwNzgwMTdkYmIyNWZiNzBiMmFkMWE4ZWExYjI4YiBsZWdhY3ktdHJ1bmsKKzI0MDggMzU5YmYxMDlkYTBmN2M2MTAyYzBkZGU5MGE1OTllODE4OGViMWY0ZCBsZWdhY3ktdHJ1bmsKKzI0MDkgOWViMTNjNjdhZTZmZjZiZWE5MmY4MjZjZTdhZjEzNWFjMGFlYjliYiBsZWdhY3ktdHJ1bmsKKzI0MTAgYmFiMWY1NDk0YjhlZGRjZGQxZTc5ZDcxNzk0YzRmM2UwODNjMzI2OCBsZWdhY3ktdHJ1bmsKKzI0MTEgYjk5ODYwMDlkN2RjNGI3YzI4OTA1NGE4OWE2ODZjZGEyZmE2ZWQ3NyBsZWdhY3ktdHJ1bmsKKzI0MTIgNDhkNThiNzRhM2E0N2FiY2M2MTZiY2I2MzU4YjA4ZDQyNTIyNTlhMyBsZWdhY3ktdHJ1bmsKKzI0MTMgNjgxMTkxMmY2NzJkODk0MzM5MTMyYjZiOGZjODZkY2Q1OTBjYTM3MyBsZWdhY3ktdHJ1bmsKKzI0MTQgZDRlNTMyZWU2ZjNkMTg3YzA3ZWQ1N2Q0NDc1OWI0MDQwZWNjYzIzNyBsZWdhY3ktdHJ1bmsKKzI0MTUgNzFiMGJkNWVkMTYyMDViMjFkNDM2YTZjYmZkNDgxMmYxNmM5ZjlhZCBsZWdhY3ktdHJ1bmsKKzI0MTYgODYwNGY5MDI5Y2RhM2Q3MTdiZWM2NDEyNjZlYzcwNGM4ZjM2OWUyMCBsZWdhY3ktdHJ1bmsKKzI0MTcgM2VhYjJjZjVlNGRkNTFjZmNjNDQ5ZGY2ZTRjMDk4ZGY5YjBjZjdkNCBsZWdhY3ktdHJ1bmsKKzI0MTggYTQ2NTU4YWQwYmVkYTk1OGFjNWMxNzAxMTU2ZTQ2OTE4YzBjNzFkNCBsZWdhY3ktdHJ1bmsKKzI0MTkgM2I5M2JjZWExMGY2ZGY4NjkxODM4MzVlODRjZmY1YmZjNTg3Nzg0YSBsZWdhY3ktdHJ1bmsKKzI0MjAgNjMyMWQzZGM1N2UwYzE4OTBhNmY2MjJjNTFkMzlmNDBhZmFjYTY0ZCBsZWdhY3ktdHJ1bmsKKzI0MjEgMjZiMmVlZDc4MzgxNDg4MDc0MTMzMGQwZDZjMmQxYjhiZTExNGUwNCBsZWdhY3ktdHJ1bmsKKzI0MjIgZjRhOTQ0ZTk4MzVmYTkzMmYxNDI2ODVhN2UyNDRmNmQyOTk0NzExNCBsZWdhY3ktdHJ1bmsKKzI0MjMgNmFjZDQxYTQ1ZDhkYThiYjBmM2E1NmZiZGUwZjhjNjY4MjZkMDNkOSBsZWdhY3ktdHJ1bmsKKzI0MjQgMjhmMGZmZDlmYWNmYjk5YWM1OTU4Yzc4ZTA4M2NlMjI2NjM4MDkxNyBsZWdhY3ktdHJ1bmsKKzI0MjUgNzJkMWI4OWJlMzVhZTIyYmI2YWVhNTNhMzdkMzg0NDg0NjMzY2Y0OCBsZWdhY3ktdHJ1bmsKKzI0MjYgMTg3YmExNzMzYjE3ODFiNGJmNWQ5N2E0ZDRmYjMzNDI1NTUwZDg5MCBsZWdhY3ktdHJ1bmsKKzI0MjcgYjU4MjZiZjI5Njc3NmVhMGY0M2E5NTIxMDRkMTE0OThmZjI0YWQ2ZSBsZWdhY3ktdHJ1bmsKKzI0MjggNDU3NjYxZTQ3YzdiYTliNmRkOTI2NTNmN2I0N2Q3YWNmYTk0MjNhNSBsZWdhY3ktdHJ1bmsKKzI0MjkgMGZlMjQ3MTE2NmYwNTNiZjdmNmIxYjAxMzNkMzlkOGMyNmVmYjIzZiBsZWdhY3ktdHJ1bmsKKzI0MzAgNzQ1YTQ2NjExOTU3ZDZiMjQ1NDc2NzhkZTNhMWVlMGY1MjNlY2U2NSBsZWdhY3ktdHJ1bmsKKzI0MzEgYWRlZDIwOGFkZjZjNjI4NWE4M2U4ZTQzYmM1OTI5ZWQwNGU0MmMzYyBsZWdhY3ktdHJ1bmsKKzI0MzIgMGJmMDJlMWI3ZjUxZGU2YzY1MGQxODk4NTY1MmZlZGJjYTBlOWExMCBsZWdhY3ktdHJ1bmsKKzI0MzMgZjA4NTdjZTdlZDRmYWU0MDk4NWUyZGQwZDIxNjM3NmZmZmYzMDdjNiBsZWdhY3ktdHJ1bmsKKzI0MzQgYWYxYzhmNWQwYjM3ZjkzMWJkMTc2MWI4OTNkNzdjZjNhOTVlMDU2OSBsZWdhY3ktdHJ1bmsKKzI0MzUgMTJhNjQxMTVhNGVlYmRhNGI4Y2NmOTNmMzIyMTZiMjI3MDc4NGE5NiBsZWdhY3ktdHJ1bmsKKzI0MzYgODAwMDFjMDIzYjJiMjZmYWM5OGMyOTQwZjMxYTQ2Y2YyZjU0YmU5OCBsZWdhY3ktdHJ1bmsKKzI0MzcgMTA3OGNkMjczYjQwNDFiNzlmMTJmYjQxOWY4NTc0OWI3ZGY5YmZiYiBsZWdhY3ktdHJ1bmsKKzI0MzggNTNjOGQ3NjJmM2E4M2UyMDNhNWVhMDEyMTNkMTE1YzU1M2QzZmI0MCBsZWdhY3ktdHJ1bmsKKzI0MzkgYWY5YTg2MzZlNGE4Nzc4NzQ3MTQxMDkzNDE1MjMxNDcyYjdmOWM0ZSBsZWdhY3ktdHJ1bmsKKzI0NDAgOWM5MjRmOWMzYjE2OTQzMjg3YWE1NmJiZDllZmNmMzM2YTE2NTQ2ZCBsZWdhY3ktdHJ1bmsKKzI0NDEgNzAyYTEzOWZhMjRiNDlhODRhNTMwMTIyOWYzMGMwZTA5MGEyMTFhZiBsZWdhY3ktdHJ1bmsKKzI0NDIgNmRmYzkyNjMwMTIzNDcwYTA0NDdjZmFkN2JhZTc5ZDkwMDI2NDIxMiBsZWdhY3ktdHJ1bmsKKzI0NDMgZDVjOWFlNDIyYjQxMDM2NmQ1ZDMwMTc3NGI2MmQ3NzU5NmJiYjU5NSBsZWdhY3ktdHJ1bmsKKzI0NDQgZWQwMTYyNTU4OTI5MzNhOWRlMmUxY2NiZGQ2MzNlN2Y0MmVlMzExMiBsZWdhY3ktdHJ1bmsKKzI0NDUgNmFjNDAyMDIzY2FjNWVhOWYzNzVmNDIyNWQ1MWU0ZDFmMzk2NmJkOCBsZWdhY3ktdHJ1bmsKKzI0NDYgODViZDdkYWMxM2YzYWVjOGZjZjI0MWE4NDRhNjQ3NDQyZDY4NTM2NSBsZWdhY3ktdHJ1bmsKKzI0NDcgMzkwNWRhNmM0YThiZjE0NTdhYmIwZmRkY2UxOGQyZWEwMzk0YzZlZiBsZWdhY3ktdHJ1bmsKKzI0NDggMDdlZmRhMjk1MWE4N2YxZjkwMjIwNWIwYmQ4ZTMxOTBiMzliN2QwNiBsZWdhY3ktdHJ1bmsKKzI0NDkgOWI0M2E5ODMxMjRjMTJjNjYyOGQyMzQzMzNkODE3NzI1M2I2OWU0ZSBsZWdhY3ktdHJ1bmsKKzI0NTAgYzRjMjc4YzU2ZTkwMDA1MzEzYjI1MWM1OWFiYWU4MzE3MzAyODZiNyBsZWdhY3ktdHJ1bmsKKzI0NTEgNjYzN2VlZTFjNGY4NDIyZDc2M2RjZTg0OGIzMWFjODBlMjk1N2MxNSBsZWdhY3ktdHJ1bmsKKzI0NTIgMDY3NzRhOTRhYmI1YmQ3MzY2MWYzMTYxMTExOGUxMjBiZTM1ZjYxMyBsZWdhY3ktdHJ1bmsKKzI0NTMgNjMwODVmN2IzZGI1YWQyYmNhYjY1MDUzMWMyN2M4ZWE4MjJhYzRjMyBsZWdhY3ktdHJ1bmsKKzI0NTQgZjkwMGI2OTJiMzdlNDcwMThkNTVkYjNkOTdhZWY0Y2M2ZDNiMGNjNyBsZWdhY3ktdHJ1bmsKKzI0NTUgODkzOGIzMTMyY2FhOTAzOGEwNmJmNjg1YjgzMjhhY2YzYTIyZWQ1YiBsZWdhY3ktdHJ1bmsKKzI0NTYgZDdhMzhkZWNlODZhODE4MmE0ZWQzMjQ0NTMxM2JiM2UzOTQwNWMyYiBsZWdhY3ktdHJ1bmsKKzI0NTcgN2EzNWQ5ODU3NjNiMjFmOTU5ZTJkMTZjOGFlY2JlYmI1ZWNkNTU1YyBsZWdhY3ktdHJ1bmsKKzI0NTggYWJjY2IwZjlmNzM1OWJjMjliNmJkZGIyOWNkY2QwMmIzN2YxZWI3MCBsZWdhY3ktdHJ1bmsKKzI0NTkgN2Y4NzU2ZmQ2NDIyMGUzZDEwNjY1MTI1ZDZlZjJlMjliOGE1MGU1OCBsZWdhY3ktdHJ1bmsKKzI0NjAgZjcwOTBmNTgxNGMyMjc2MTk4OTE3ZmQ4NjViZTY3MTU1MzU0ZjhjOCBsZWdhY3ktdHJ1bmsKKzI0NjEgMDlmYjc5ZTdiYWY3YWU3ZTEwZWFkZDEyMThhNDQ5OGE2OTFkMGE2NiBsZWdhY3ktdHJ1bmsKKzI0NjIgYzI4ZmFiZTIxMTY1NDQ1ODc5ODdkM2M2MGYxNDMwNmM3Yjk5NzJhYiBsZWdhY3ktdHJ1bmsKKzI0NjMgZDE5YTY2NTkwNGRmNTc5NDgzN2M1MTY0ODc5N2U4Y2FiZWFlYmMzMiBsZWdhY3ktdHJ1bmsKKzI0NjQgMTQ5ZGQxMjFkMGE2YjRlYjQwMzQwY2E5ZjAwNDAxMmM3ZjNhN2RmYiBsZWdhY3ktdHJ1bmsKKzI0NjUgMzIwMWI3NTY5NWVmMjg4M2VmZDQ4NjRmNDdhMGYzYWM1MjdhODZkYiBsZWdhY3ktdHJ1bmsKKzI0NjYgNmI5M2Q0Y2U4ZGNiOThiZjU4YTJkOGU5MGI5MzcxM2UxNjk5YTBkZSBsZWdhY3ktdHJ1bmsKKzI0NjcgYzhhOTc5MDI5ZGY0MWQ4YWMxMjNiMjNlNTEzODBiNzFjYTQyNTIwMCBsZWdhY3ktdHJ1bmsKKzI0NjggMzVhMjUyOGY4YTczZDg2ZmQzOGU5YmJhMDNjMTdjYWNiM2UwN2EzNCBsZWdhY3ktdHJ1bmsKKzI0NjkgYWJjZDkxNTkzMDM1NzdmYmVmYmY0NjRlMzE2NTBhYzBmZWE0MjMxNSBsZWdhY3ktdHJ1bmsKKzI0NzAgMzgyMzIzZjkyZmNlNWZkMDRlYzUwNjE4M2YwMmY4NDFmYTBmZGU0OCBsZWdhY3ktdHJ1bmsKKzI0NzEgNzJhMDI2ODQyMGQwNjc0ZTJhOGQwZGQ2NTdhNjQ2ZWQ3MDRhOGY0MSBsZWdhY3ktdHJ1bmsKKzI0NzIgNjA1ZTE3MmJiYjU1NzQ2NDI4NzgyM2U0ZTdkNDZmMzg3ZmUyMGFmMSBsZWdhY3ktdHJ1bmsKKzI0NzMgYWU4OTQxMWY2ZmMwZTA2NDg2YTEwMTIwMzliZWNmNTllNWM1Nzk1ZSBsZWdhY3ktdHJ1bmsKKzI0NzQgYjhlNDIxM2Y2NWE2ZTU0ZGI0ZTMyZTk0MGM1MTllNmNhZTYxNjczNCBsZWdhY3ktdHJ1bmsKKzI0NzUgZTgzODUyZDFhNWUyM2Q2ZDM4ZDg2YTkwZDc3MzllNDVhZjJhYzJmYiBsZWdhY3ktdHJ1bmsKKzI0NzYgYWVmN2UwYTkxMTllNWQzN2VlODIyMjZhNDQ1MmIyMjhmYzcwYTIwZiBsZWdhY3ktdHJ1bmsKKzI0NzcgYTlkNDY3ZTg0NjMxOTRjZDU2YzFiNmY4Mzc4MDAxNmY3MGVlMTBkOSBsZWdhY3ktdHJ1bmsKKzI0NzggMzI1YjQwZDc3MjM1NTYyOTU0ZDcxZmUxZjU5ZjkxYjc4YmY2NjcwMyBsZWdhY3ktdHJ1bmsKKzI0NzkgMTJmZGZhMDEwZTQxZWI5NTVmZDVjN2VlNGEyNzZlNmZkZGRhNDY4ZCBsZWdhY3ktdHJ1bmsKKzI0ODAgYTE3NzVjYzc4NmU2YWQ5ZDEyNTRhMmIwYTFiMDBjY2U0YTVlNzc1MCBsZWdhY3ktdHJ1bmsKKzI0ODEgMjY0MjZjNDJhMTYyYTQ0OWZlMDI4NzA2NTY1N2Y1YTY5MjM4ZTA0ZSBsZWdhY3ktdHJ1bmsKKzI0ODIgMmE4NGIxNmY5MWIwOTg4MzFiYTc1M2IzZTMxM2Q1Zjg2NWEyOWQwMCBsZWdhY3ktdHJ1bmsKKzI0ODMgMWE2Y2YxZjhjY2VjYTA0YmRjMmVhNzBjZDIzZGJkYjVkODYxNTU4MSBsZWdhY3ktdHJ1bmsKKzI0ODQgNzE0YzIzOTBlNWNiNDVlNmM4MzM0ZmM0MWNjZTllMmQ2YzEyNDQ4NiBsZWdhY3ktdHJ1bmsKKzI0ODUgYTgxMDIwZDUwNWJmOWU4YjZjOWUwZjc4MjllYzExYTFlZWIzMzMwOCBsZWdhY3ktdHJ1bmsKKzI0ODYgYmFhZGEyMDc2MmIwODE4NWQwMTBlMzZjNjY4MTgzMjgzZDNjZWMwYyBsZWdhY3ktdHJ1bmsKKzI0ODcgZmYwODYyZTNkNjNhOTY3NzhkZTI4MGM5Njg3NWFmZjE0NjI3OTdlZSBsZWdhY3ktdHJ1bmsKKzI0ODggNGI1OWU2M2EyN2I1N2MzMTcyZWRkMGU5NWM5NjMxMzVmOTg5YWNlOCBsZWdhY3ktdHJ1bmsKKzI0ODkgNDhiYmM4YWQ4MDE2YTViNTQ3NDE2ZWUxYmZjZmJkMDVjZDJmMDlmNiBsZWdhY3ktdHJ1bmsKKzI0OTAgZjIxY2I3YjUzZjZjZjhhYzU3NDk1OWYyZWUyNWUyOGM0ZjVmYWZhZiBsZWdhY3ktdHJ1bmsKKzI0OTEgMTgwN2Q2MGU2MjMxZjdiYWI4NDJhOGI3MTg1MGEwNjI5ZDY1NjYwMSBsZWdhY3ktdHJ1bmsKKzI0OTIgMjFjMjY2ZjdlY2ExZDk2N2FiZjgzY2M1ZmM0MDMwMjllOGY5YzBlZSBsZWdhY3ktdHJ1bmsKKzI0OTMgYmUzMDUyYTc3YjdmZDQ2ODk1NGEwNzQ4NTMxN2FkZTNkOTgzYjQwZSBsZWdhY3ktdHJ1bmsKKzI0OTQgMTM3YTVlMDZmYzg0Y2U1NWNiNDMwZTg5NzVkNjliMDc5NWU0Yzc1ZSBsZWdhY3ktdHJ1bmsKKzI0OTUgNDQ5ZjVlNWQ5YWY2MmYyM2VlNTA5NTI3NTRmM2ZkOTFlZGU3ZDRmMyBsZWdhY3ktdHJ1bmsKKzI0OTYgMTdhMjk3NjBkMDYyYjAxM2NkY2I0YmU1NzYwNzMyYTdjMWMxYzcxYiBsZWdhY3ktdHJ1bmsKKzI0OTcgNjQxODliYTdlMjNiY2FjMzBiYjBkYmFjMTdlNDFkNGUwNzA4YjM4MyBsZWdhY3ktdHJ1bmsKKzI0OTggNDI2NmFlZjUwYzJiNGNmYjFjMmYxMTI1NTdiNmRiMDQyZGJjYTdmMCBsZWdhY3ktdHJ1bmsKKzI0OTkgNzk0Y2ZkNDU1ZGM2ZjYyNmJjZGM1Yzg0MTE2NDBjOWVmMjUxY2IyYiBsZWdhY3ktdHJ1bmsKKzI1MDAgMDhkYzM3YTRkZDMyM2EyMjU1YjA0ODY4NWU5NTk2MjcwNGNiZmM2NiBsZWdhY3ktdHJ1bmsKKzI1MDEgZTM5NDFlZmQ3MzEwNWMxMjE4YWExMWMzOTQ0NGUwNTgwODY0ODBmNiBsZWdhY3ktdHJ1bmsKKzI1MDIgOTA0MThmZDQzN2RiZDM2NzUwODM1NDExZTZjMWExYTJkNWY0YjNiOCBsZWdhY3ktdHJ1bmsKKzI1MDMgZjM3OTVhYzE0NmNlZmVmMGI2YTU1YjEzMTMxZjc3ZjljNmNhOTdiNSBsZWdhY3ktdHJ1bmsKKzI1MDQgMzZhY2U5MDgyODliYTc5ZDk3YjcwNjBlODVmMDVkYmU5ZmRiZTM0MiBsZWdhY3ktdHJ1bmsKKzI1MDUgNzViMmZkMTYzZmQ3MTVhMTAwMzNhNjA4Mzc2NjczNzBiNjUwMTVjOCBsZWdhY3ktdHJ1bmsKKzI1MDYgMmUwZWE2ZDVjNmNlZmE3YWNkY2U1MWFjNTM5MTU5NTdkM2Y2N2ZiNyBsZWdhY3ktdHJ1bmsKKzI1MDcgNDgxN2FlNDBhNGUyMWRjMDhkN2Q2YTU0YTUzNzVkOTZlYWM1ZWU0OSBsZWdhY3ktdHJ1bmsKKzI1MDggZGFhYmUyMzIwNjJlMDRjNjNlZGI1NGFiNTE3NzJjNDRjZGU1MmM4ZCBsZWdhY3ktdHJ1bmsKKzI1MDkgYTI5NWQ5YTNmZTg5MjMzYzJmNTUzYzdiM2RkZWUxYjI3MmRkN2Y2MCBsZWdhY3ktdHJ1bmsKKzI1MTAgNmU1Y2JkOWNkNWY5NTE4N2NjYmNlNTBmNzE1YjY2NjFkMGRhMTQ3NSBsZWdhY3ktdHJ1bmsKKzI1MTEgM2RmYWEwOTNkOTZlOTE4YzNlMGU4NWJhOTUwY2IzNGRiNWNmODA1OSBsZWdhY3ktdHJ1bmsKKzI1MTIgYTM1OTVhZTRkYzFlNzgzZmE0OTk5OTRkZGFjYzk5M2I2M2U3NDkzMyBsZWdhY3ktdHJ1bmsKKzI1MTMgZDkzMjU5Y2QzNzlkNjY2ZWZkMTIzNGQ1OWEwZWIwZDEzNzRjYzA4NiBsZWdhY3ktdHJ1bmsKKzI1MTQgMWMyY2YyYmRiNmM4YTBlNTVjMmRmMDUxYjIyMTZiNTFkZTMxMDUzMCBsZWdhY3ktdHJ1bmsKKzI1MTUgNjBkYTdlZTkxMDBlNjQ5YjQwMjUwNGM0MjJmN2M1ODk4MDBjNGI1OSBsZWdhY3ktdHJ1bmsKKzI1MTYgOGE5NGNjYzRjOTE0MDBiMmU0NjIyM2U5YWMxNzgwNmYxZDhlMWFkMyBsZWdhY3ktdHJ1bmsKKzI1MTcgYWIwNWVmZWQwM2U5MGZmNjFjYjYyODY5YzQyMjhhZmQ3YTM4MWNhNyBsZWdhY3ktdHJ1bmsKKzI1MTggMjM1ODdiZWExMWJiMWE4ZjY3NmY0OTg3Y2QwZjEzOTBmY2JmYTE2YyBsZWdhY3ktdHJ1bmsKKzI1MTkgYTY3YWI1ZDU4MTQ2M2MxZmRmNTA5NTFhMDcwZDZjY2E5NjA1MjMyMiBsZWdhY3ktdHJ1bmsKKzI1MjAgMDY5NmYxOTg3NTNmOTQ4ZThhNjE0ZDE5ZjMwMWFkNjQ4Yjk2ODJjOCBsZWdhY3ktdHJ1bmsKKzI1MjEgM2IzM2FjNDRlMzZlM2M2NWNlNzI2OWRjODljOWVmYTJmZDkxYTliZCBsZWdhY3ktdHJ1bmsKKzI1MjIgYzg1ODRhMWJhMzhhOTQ3NDRlNjExZTRhMTJlMTM2NmQwYzY5NDhmZSBsZWdhY3ktdHJ1bmsKKzI1MjMgYjI5Njk2ZTVjNGQ5ODJkOTU5YTIyZmVhY2EwNDU3ZTVhMDQ3ZmFlMCBsZWdhY3ktdHJ1bmsKKzI1MjQgZDcwNzU0YTk2MzEwZDYyODgxYTg5OWI2NTYzYWFiMzJlNThkNTUwOCBsZWdhY3ktdHJ1bmsKKzI1MjUgMGJmODI1ZjU1YWMxNTIwMGI2MDIxZjhhYTNiNDBkMWY0Y2IyYTk4OSBsZWdhY3ktdHJ1bmsKKzI1MjYgNGUzMDczYmIwZTNlMDM5N2JkZTk3NTNlODgzMjIxM2MwOWNhMDkwMCBsZWdhY3ktdHJ1bmsKKzI1MjcgY2ZiYWM2ZmY3M2FmM2NhNDM0OWZlMzkwZWQ1YTBlMGJkMGVhOGMyNiBsZWdhY3ktdHJ1bmsKKzI1MjggYTdkMzcwZjkzZjc1MjZmMzQzM2I2YjM0YWI1NGYyMjE1MTg1Y2RjYiBsZWdhY3ktdHJ1bmsKKzI1MjkgMDkyN2JkYjgxNmEwNDNiY2I0YTExZjE0ODAwZWQxNzlkODYzNjRkMiBsZWdhY3ktdHJ1bmsKKzI1MzAgNDZhNjU2MTIzYTY5NjU1NjBiZjIzMjIzODA2OTMyZDUzN2MzMzYyZCBsZWdhY3ktdHJ1bmsKKzI1MzEgNTA5YmI3NGFjMzI0MTI5ZDMyMzUzMjFjOWFhNWRlNzM5OThmYjFlNyBsZWdhY3ktdHJ1bmsKKzI1MzIgMzk3MjkwMGUxYjYxYjI3MmQ1ZjQ2YmZmMjAyZmY0YmFkNTQ3N2NlNyBsZWdhY3ktdHJ1bmsKKzI1MzMgMTZiMThmNTg2ZmVjYzQxZDE1NDQ0YmQ0MjkxNDYzY2I5YTY3NGY3MyBsZWdhY3ktdHJ1bmsKKzI1MzQgMzA1ZTE1MGJhYTUzOGU1ZTdkZGMwZjUxY2UzNmQ0NzYwOTJiZjU1YyBsZWdhY3ktdHJ1bmsKKzI1MzUgNzBhMThhNjY4OWQ0ZDljZDBkZTM3YWMyYzZkNDdjODViNjIzYzdmMSBsZWdhY3ktdHJ1bmsKKzI1MzYgODY4MjhjYzFjNjQ2OGQzYWIwZjA4MjI0YTI3MjZjNmRjOTEzOTVkMSBsZWdhY3ktdHJ1bmsKKzI1MzcgNTY0NTk0MmI3YWUwNTVjNTZiZDFkNjNmMzA5YWU1MDMyNmFkYzRiOCBsZWdhY3ktdHJ1bmsKKzI1MzggN2FhNGNkNjIxZjU5MjY0ZjJmOWQzMDE3MTQwMzNiNzdlNjcxY2E5ZiBsZWdhY3ktdHJ1bmsKKzI1MzkgNzMwNzU3Y2NiOGEzNjk4NGY4MThhMTE4ODY1ODljOTFhOTM3Y2IzYSBsZWdhY3ktdHJ1bmsKKzI1NDAgNzNlZmUzZWE0ZjFiOGFmN2MyZmJiZTg1ZTNlODliZjgxNTlmNzIzNCBsZWdhY3ktdHJ1bmsKKzI1NDEgZGRhYjUwMjg1YzQ3OWVhZjg0Y2Y3ZDZiMDA2Y2I2ZTcwYTYwN2E4NyBsZWdhY3ktdHJ1bmsKKzI1NDIgNGE5NjgyM2Y5YjY4NDk2MDBjNTg4ZmYzODc3NWY4NjgyZjk2MjcwMyBsZWdhY3ktdHJ1bmsKKzI1NDMgNGRmZjIzZTdjZjExNDE3YjUwZDdkYTdkNzExZDg0N2YzYjgwNTA2MyBsZWdhY3ktdHJ1bmsKKzI1NDQgYmEzYzFmOTVlNjY1ZTM1NTY3Y2JiMTc4MWRmNjMwZmM3MzZmNGYyOSBsZWdhY3ktdHJ1bmsKKzI1NDUgYTNkNGQ0NjFkNDQyMWZhZWIzNGFjYTI4ZmM2NjQzNzYwYTk0MWRlNSBsZWdhY3ktdHJ1bmsKKzI1NDYgMDM5YWVlNmNiZDc4NmFiZjUxMmNjYmEyMDkwYmY0OTA3NTk4MTFhMyBsZWdhY3ktdHJ1bmsKKzI1NDcgMDU5OGY0ZjI1ZDA0NGQ2MmFiM2U3MjNjYzYzMjA2MTY5YmI1N2EzNiBsZWdhY3ktdHJ1bmsKKzI1NDggZjAxYWVlNjE1NWIzYTJmZjJhM2RmOTkzYWUxMjU3NjBkNzgyYThjMiBsZWdhY3ktdHJ1bmsKKzI1NDkgMzFkNTA5ZTk0MjcxMDU5ZjEyZDYzYzcxMzFjMGQ1ODAyNmQ4Nzk0ZSBsZWdhY3ktdHJ1bmsKKzI1NTAgNTViZjY2NDQ1Yzg1YzgwZjIyN2FjNDljMzFhM2U4OGY5ZjgwNWU5NyBsZWdhY3ktdHJ1bmsKKzI1NTEgMTcyYWEyYzNlNzM0MGMxZTc0MzlmM2I3ZTFiYTBmM2YwY2NhNmYwNiBsZWdhY3ktdHJ1bmsKKzI1NTIgY2FmODQ2NmRjYzljMzU3N2MxZWI2MTkxNDY3ZmU5NGYxNWIyNDI1NyBsZWdhY3ktdHJ1bmsKKzI1NTMgZjMzYTNmNjlkZmNiNTliZDE5ODY0MGE2MjQ3ODllNjIxN2IxNjMzMSBsZWdhY3ktdHJ1bmsKKzI1NTQgNTk2MDliM2FmOTc4YTM5NzAxNmNkMzViYWVhMmQxNWU1OGMzZmFmYSBsZWdhY3ktdHJ1bmsKKzI1NTUgODE1NDM4NTI0OGQ4MTc1N2RlOTExODk3YjI3ZDhiM2YxZmEwZGIzMCBsZWdhY3ktdHJ1bmsKKzI1NTYgNjU5YjhkYmY2OTVjNTExYTk5NTVlOWM3N2Q0MmM1ZmZhOTk4OWZjNyBsZWdhY3ktdHJ1bmsKKzI1NTcgYzI2MmY0MjFhNDRjNTFjNGZhODk3NTQwZDQzOTU0ZTE4MTFhOTkzNyBsZWdhY3ktdHJ1bmsKKzI1NTggNGNkY2MxNmJkMDgwMGZlYzBiMjgxNGU4YzAwOWRmZGMwZDVmMjAyMyBsZWdhY3ktdHJ1bmsKKzI1NTkgMGFjMTM1N2NkODk4OWUzYjM2NTQyMjhlMTY2NzdiZGExNjYyYTM5OSBsZWdhY3ktdHJ1bmsKKzI1NjAgMWU0ZTZkZjA3MThlMDM4MzZhNWJiNjkzZWNmMzgwNWM0MmMwNzI0NCBsZWdhY3ktdHJ1bmsKKzI1NjEgZDE4OWEyZjY4MWE2ZGYzNzU5YTBhNDAyNmJkNjVlZDc0MTMyMjBhMCBsZWdhY3ktdHJ1bmsKKzI1NjIgMGM1ZTRlMTM3ZGU2ZTBmMzY4YWI0ODllNjQ0NjFlZjhiMDQyY2JmMCBsZWdhY3ktdHJ1bmsKKzI1NjMgOWJkMjY4MGQxNmJjMzYxNzBmMGYyYzkwM2YxZmI4NzY1NDEwNzcwNyBsZWdhY3ktdHJ1bmsKKzI1NjQgZDc4MzJhZjZhYmE2MzRlNWUzM2FkYjQ4MTVlZDkwN2Y5YjI4ODBjZSBsZWdhY3ktdHJ1bmsKKzI1NjUgOWNkMzhkMWFjMzkxOWYzNmMwYTI2M2ZjYWU0ODdmM2YwNDEyYWU5YyBsZWdhY3ktdHJ1bmsKKzI1NjYgZDNkMzI4NjgwMzI4ZGU3Zjg2MmMxMTIzYjYyM2U4YzRjNzc1ZDM2NyBsZWdhY3ktdHJ1bmsKKzI1NjcgZTYyOGQwOWNlMjJmZWJkZGJjNWZlZmFhMjIzMjYyMDI2NjRlYTcxYyBsZWdhY3ktdHJ1bmsKKzI1NjggOWIzZDU1NzY2NWE5MTgwMjU1YjZmNTc3M2UwOTI1ZjZmYTgwMjI0NyBsZWdhY3ktdHJ1bmsKKzI1NjkgOTUyMTMzZTg5YmM3MjVlYmZhNDlmMzgxNjA5NjNlMDVhMjJjNzRmNCBsZWdhY3ktdHJ1bmsKKzI1NzAgYjVmZTY0ODIwNzJmZWZhNGNiNDNiNzJiMTJjZmY1ZTJmNmQzZTYyNCBsZWdhY3ktdHJ1bmsKKzI1NzEgZmQwNjFkYWU5ZTU3MGQ4ZmE4MDM4Y2VjZTcwYmFjZWY1ZTFmZjY3YiBsZWdhY3ktdHJ1bmsKKzI1NzIgMGYzNTNhZmMyODcwZDY4NDQ3NzI5ZGEwNzQyZDQ0MTFjNWJiZWQyNyBsZWdhY3ktdHJ1bmsKKzI1NzMgNGVmMzFmNWQzZDkyN2I0YjcyYmYxMzEwMWYzODY0ZWFmNjMyMjY5MSBsZWdhY3ktdHJ1bmsKKzI1NzQgMmFmZjM3YjllMjBlY2EwOTdkOGM5YWM5MGZjNmNiZmQ0NDMwYzY4ZiBsZWdhY3ktdHJ1bmsKKzI1NzUgNGM0NWJjYmUzYmIzYmJmNzEyZjJhZWI5NTNiNDVlNDVkM2YzOThmZiBsZWdhY3ktdHJ1bmsKKzI1NzYgNGYxNTdiMzI0YzUwNWIwNjJjZjUyYTI5NmE0YWY0ZDJhOTQzNTZjYiBsZWdhY3ktdHJ1bmsKKzI1NzcgMmIwMzRjOTBiNmQ5YTY3OGRkYzQ3OTkzOWM0MWExMThmYzYwYWM1ZSBsZWdhY3ktdHJ1bmsKKzI1NzggMTYzZTI5MDYwZjBiZjMyZjExOWI3ZDEyMTI4ZTE3NDE5OWQ0MTQ4YyBsZWdhY3ktdHJ1bmsKKzI1NzkgNzAzMjNjYmEzYzEzNjlkYTI0YzAzMDlmZDA2YzMzZjk5MzUyM2Q3OSBsZWdhY3ktdHJ1bmsKKzI1ODAgNWE5YWEyYWJhMDhlOTZkMDAwZThjM2ZmZDgxYTQzZjljMDA1OTE4NSBsZWdhY3ktdHJ1bmsKKzI1ODEgMzk0MzAxMzQwNjkzMzcyYmI4YzBmZTM5MjcwNzBiMjEzMDAxNDJhZSBsZWdhY3ktdHJ1bmsKKzI1ODIgNTVlZTc1ZjJmZWE0YWNkYWQ2NGVlMzZlMmM0Y2ZlYWViNWJiYjM1ZCBsZWdhY3ktdHJ1bmsKKzI1ODMgZWE1Y2YwOWJiZjM2YjQ2N2NiNzhmN2NiMzc2NDcyMmUwNTBiNDVhYyBsZWdhY3ktdHJ1bmsKKzI1ODQgYzhkMGE0YTQxZjBiYTdjZTgyZmQ3YmNlNzU5YWYxMTgzYzRjMWI4MiBsZWdhY3ktdHJ1bmsKKzI1ODUgMmRjZWNhOWEwNzEzOTMzYzM2MWU0MWM2YjNkMjBlYWNjNWM0NDk3NSBsZWdhY3ktdHJ1bmsKKzI1ODYgZDFlZTBmYjBjMGRmNTY1YTI0MDU1MTM3ZTNlYzY2MGYzZGMwNzNjMiBsZWdhY3ktdHJ1bmsKKzI1ODcgNjFiYmM3MjMwYzcxNjZlNTY1ZWQwYWJmYTM1NTMwZWZlMzQ0YzJkZiBsZWdhY3ktdHJ1bmsKKzI1ODggYTNhODQyYjM5OTEzMmVjODBlZGU1ODk0MmZmMTliNGI3MWE3YWFjNCBsZWdhY3ktdHJ1bmsKKzI1ODkgM2M3YjdjYWE5ZGE1NjZhYWNlNjEwZDExZWZmZGZlODdhNDE5MDk3OSBsZWdhY3ktdHJ1bmsKKzI1OTAgYmIzMDhlN2IwMDM5NGZiYzljN2U0NDU1YWVjZTRjYTUwMTM5ODM4ZCBsZWdhY3ktdHJ1bmsKKzI1OTEgMGY5ZWJjNjNkY2I1NjM4OWFmMWIxYmZkNzEzZWIxMGI5OTc2ZGNiMCBsZWdhY3ktdHJ1bmsKKzI1OTIgMDhiMWE4OWM4ZjA2MzUzNGM3OTM5NzU3NDE0Mzc5NDFlNzNhZmU1MiBsZWdhY3ktdHJ1bmsKKzI1OTMgNzk0MGJiMzkxYTZhY2IyZjlmNWUwMzZlMWYwZTUyZDdlOTRkZjdhZCBsZWdhY3ktdHJ1bmsKKzI1OTQgOGJlZGRjMTcwMzk2NjhiMzQ4MDY5NWJiM2M4ZDJiOTViZjU0ZjczNSBsZWdhY3ktdHJ1bmsKKzI1OTUgNDg3YjdjNjJhZTc3NGEzODUxMzNkYjAxMTU2ZDI3MTdiNTZkZTA1NSBsZWdhY3ktdHJ1bmsKKzI1OTYgMmRlMzRiOTYwMmUwZWY2NWU0OGQxNGUzOWVkNjBmMTc1NTI4NDA1NiBsZWdhY3ktdHJ1bmsKKzI1OTcgMWU2YzhmMmFhMTM2ZGFhMjc1NDc2MTM5M2UwYzkyMjNkMGZmZmFlNSBsZWdhY3ktdHJ1bmsKKzI1OTggNDAyYTU5YWQyNDkzZjBiOTdmMzJjNmZlYjE4OWE1NWVlMWE1YTMzMiBsZWdhY3ktdHJ1bmsKKzI1OTkgNjRiYzhhMjg0ZmIzZmNmZDM2YTE4YmNkMmZlNmI1MjcwZjRkZjFmMyBsZWdhY3ktdHJ1bmsKKzI2MDAgYzEyZDAzM2Y2NTk0ZTY2NDlmZmMyNGI4MWUwN2UwYmEwMTY5OTdiOSBsZWdhY3ktdHJ1bmsKKzI2MDEgZTJkYjMzNDFkNjg2MGVlNjc2YjViZDgyNjg1MGNlNjI2NDdiZGVlMyBsZWdhY3ktdHJ1bmsKKzI2MDIgNjAwYmZhOWZiOGI3NmU1YTlhNDc1MDIxYmRmZjM3MDNhNTI0MzkzZCBsZWdhY3ktdHJ1bmsKKzI2MDMgMTdmNGNkZjI4OTU5ZjYwYTI0NDk0ZWY2ZjFlNDEwNWZiNDk4MDkwYSBsZWdhY3ktdHJ1bmsKKzI2MDQgOWY4NWJlYjFmN2M4NDlmZTAxNjk3MmQ4ODBjOGEwYmEyM2NiZmMxYyBsZWdhY3ktdHJ1bmsKKzI2MDUgMWY2NGY1NWE1MmU4NjVhYTdhYTk2N2I5MTlmYTQwYmE3NzRlNDJjOCBsZWdhY3ktdHJ1bmsKKzI2MDYgYzA2ODNkNjY3NmM2NmJjNTRiYTk2ZWZjMDE5Nzk5OGY4ZjAzN2RkYyBsZWdhY3ktdHJ1bmsKKzI2MDcgYzMwN2QxMGI2ODBjNmEzOThjYTE1NmY3YzBjZDQwNmMyMmUyZWExZiBsZWdhY3ktdHJ1bmsKKzI2MDggOGY2Mzg5ZGJjMWNmN2I0ZmE3MTgyNzk5MDM0YWNjOGM4ZmYwOGM4OCBsZWdhY3ktdHJ1bmsKKzI2MDkgMzI2Yjg5ZWE2NzEzOGJhYzQ1MzFjNTk4MDYyMmY4NWU5MjJiZjc1NCBsZWdhY3ktdHJ1bmsKKzI2MTAgYTRmZWE2OTEyMGQ4MTQ3NzMxYjI2OTQ5MjExMGU3NmZhNTBmMjIzOSBsZWdhY3ktdHJ1bmsKKzI2MTEgMjM0OTdkYjY2ODdhYTFkYWNlMTk2ZGM2MTY0MmQwMzFkODdhYzlkMyBsZWdhY3ktdHJ1bmsKKzI2MTIgYjJkY2UwMWMzNjZlNmFlNTQ1NjFhN2E4ZTg2NTI2ZDcxNjQ2ODczYSBsZWdhY3ktdHJ1bmsKKzI2MTMgYWUxYTU1NWU2NWZhYzY0NjU2YmMwMmVhNWRkYWFjYmIzNzBlMDQ2YyBsZWdhY3ktdHJ1bmsKKzI2MTQgMzRhYmNhMTgyZjE4ZTFiNjE2OWVhZTA4MmMzMWEzMjgxZTg4MWE0NSBsZWdhY3ktdHJ1bmsKKzI2MTUgYTVmMGI4MzkwYzg3OTY4MWRiYjI4NDk0Y2JkZWI4Y2UxZmJkOGY4OCBsZWdhY3ktdHJ1bmsKKzI2MTYgNDY0ZDlkOTNmMzRlOTFhMjI4ZmY2NWRhZjQ0MGQ5ZWE4Y2NjNzI4NCBsZWdhY3ktdHJ1bmsKKzI2MTcgOTI3MThlNGY1YWRjMWIyODRjNzY4ZWRlMmVhYzcwYmQ4NGUyYjRlMCBsZWdhY3ktdHJ1bmsKKzI2MTggZTg2NjdhN2QzMThkZGVlMDg1ZDhlMjRlOGQ3MDZlNDZhOGFiYTMzMSBsZWdhY3ktdHJ1bmsKKzI2MTkgMWZkNDcxMmNjNjZmN2I2YWM1OTgwNDVjODAwNWYwNTkxNzg2NTQ0MSBsZWdhY3ktdHJ1bmsKKzI2MjAgMDczNmFlZmFmYzYwMThjMTY0ZmY4MGQ4ZTNjMjg0YjhiOTUxNjU1ZSBsZWdhY3ktdHJ1bmsKKzI2MjEgN2E2MGZhYTM4MTEzNTFiYTBiNDZkYTkwZTZlOTM5NDcxODY2Y2IyZCBsZWdhY3ktdHJ1bmsKKzI2MjIgNzY5Y2ZmZjRhZTVlOTUwNDFhYzM5NjQ2NmMwNWQxMWRlNjMyNTllNiBsZWdhY3ktdHJ1bmsKKzI2MjMgNjc4YTczNGMyNDRkYzkwY2Q4MzE1ZWUzYjc0MjNjMGJmNGJjMzQ2OCBsZWdhY3ktdHJ1bmsKKzI2MjQgYzk3ZjRjNmJhNmM2NWVjYzYzZjMzNWJmNzBhY2Y0MTI2MTcyYWQyNyBsZWdhY3ktdHJ1bmsKKzI2MjUgOTAzMDBjYTIxMjAwNTkyMDY2YmE3OGUyN2U5NDFiMmFjNjczMmEzYyBsZWdhY3ktdHJ1bmsKKzI2MjYgY2EwMzkxYTgxMmY4NjM1ODkyOTU0OGM3NWFiYWM5ZjIwN2I4ZTU2ZiBsZWdhY3ktdHJ1bmsKKzI2MjcgOTBjYmNiMGI5N2RjN2Q0OTg0NDM1MjRjNTIyYjkxMTkzY2U5NTBkMyBsZWdhY3ktdHJ1bmsKKzI2MjggMWNiNzhiNjI1YjA3MjNjYjQ5NTUyZGQ2YWM3ODA5Y2U1YTRiYTRmYSBsZWdhY3ktdHJ1bmsKKzI2MjkgMTBlM2QyNjA0MTMxMDlhOWFiZDM3ZWI0NTc2ZTBlNTJmMjUyZGQyYyBsZWdhY3ktdHJ1bmsKKzI2MzAgNDIxMzBlNzIyMGFmZmI5NGQwYzMzZjhmZTY3N2Q3ODJlODAyY2JjYyBsZWdhY3ktdHJ1bmsKKzI2MzEgYTEwMjVjYmJhMzBkYWQxN2Y5OTU3NDFhYThkNWI0NTI4OGQ5Y2RkNyBsZWdhY3ktdHJ1bmsKKzI2MzIgMWJlMjA4NzY5MmEyNDQ0NjQzNDczMTM5MmUzNDBlYTYyYmZjODYzZCBsZWdhY3ktdHJ1bmsKKzI2MzMgMWQ0YjAzMzliODNkYThlM2JjYTA0NGVlMjI2ZGY1MmRkNDFjOWY3YSBsZWdhY3ktdHJ1bmsKKzI2MzQgNGE3ZjBmMDZjZDI3YzRiMjlmNzY2NjNmMDY3Mzg3YjJiMzYxZjdmMCBsZWdhY3ktdHJ1bmsKKzI2MzUgMTkzNjUyMDFkY2ZhODVhZWFlM2Q5NDA1OTY0ZWJiZGY4Mjk2ODBhYSBsZWdhY3ktdHJ1bmsKKzI2MzYgZTJjMzQ2M2M0ZDkxODQzMDM4ZmE2MGFiNzcyYmYzNzBmZjNjYjQwNCBsZWdhY3ktdHJ1bmsKKzI2MzcgYmVjOTYzZjk5YmM5ZjU5MWFkMWMyZTA5ZWU2MjQ1MmVlYTliOWFhMCBsZWdhY3ktdHJ1bmsKKzI2MzggNDM2YzgxMDMwODUzMzg2NzMzZjZiMjFhM2RjNDk3YjliZmQ5NGYyZiBsZWdhY3ktdHJ1bmsKKzI2MzkgYzNiZWU1YTU3MjFmN2VjZDdkYWJkOTZkODhkZjU0ZjhhMGMwMjU0NiBsZWdhY3ktdHJ1bmsKKzI2NDAgMzI0OTZhMGQwMWY0ODhhNjVlNzU4ZWVmNDVjM2U1YjMwMmVkYjI1MCBsZWdhY3ktdHJ1bmsKKzI2NDEgYzY0YzY3MDI1NDlkNmJhMmNkYjk5MDg5NWY0ZmZmY2M3NWZmZjQwMyBsZWdhY3ktdHJ1bmsKKzI2NDIgZGMwNDYzNDUzYTY0MzcxYmFhMDM4MWI1M2MyZmIzOGE4ZDY2MWNmOSBsZWdhY3ktdHJ1bmsKKzI2NDMgZWU4OTlhODE1NzBkMDUwNGNhODBhYTFkZDgyZGQzNDM1Y2RlZDcwNCBsZWdhY3ktdHJ1bmsKKzI2NDQgY2ZiYzRjY2UxYTQyNzc2Mjk4ZjZkNjAyZjQ1Nzc5MWQ4Mzk4ZjVkOSBsZWdhY3ktdHJ1bmsKKzI2NDUgZGI4MjBkYTNjZTAzZWQ2NzFmNmFjYzI0OTQyMDI0NThjMzZmNzQwYyBsZWdhY3ktdHJ1bmsKKzI2NDYgM2IzODViZGEzOGY4OTE1OGE3ZjBlMDJhMTk0OWU1NTgxYTk0OTkxNSBsZWdhY3ktdHJ1bmsKKzI2NDcgYzdhMmY1NjEzZDY2NDY5MTk2YmE4MDdkM2I4NDIyMTEyYzk0ZTQ1YiBsZWdhY3ktdHJ1bmsKKzI2NDggNzdiODBhOTFkMzU3YzFkOTVkOGU3Y2Q0Y2JiZTc5OWU1ZGViNzc3ZSBsZWdhY3ktdHJ1bmsKKzI2NDkgOTBmMzVmY2Y4ZWEwMWQ3MDgyOWRiNTZlYmRhY2QyYWQ0M2Y3MTQwMCBsZWdhY3ktdHJ1bmsKKzI2NTAgYTBmYmM3YjZhNDg1Zjk4YzkwNzFkMjg3Nzk0ZjFkMjRmMWU2M2RkNyBsZWdhY3ktdHJ1bmsKKzI2NTEgMDIzYzdmNjlkMjQwMDJjODYzOTM3Yjg0M2U3N2E0M2U2YjRmMDJkNyBsZWdhY3ktdHJ1bmsKKzI2NTIgYjkyNjU4MGM5YzI4NDE4NjMxODJhMDhjMTQ3OTA4MjlkODEzZGQ5MSBsZWdhY3ktdHJ1bmsKKzI2NTMgOTJhMTBhMWUxNDYzMDA3YzAzNTg3Nzg5MWQ5YWFhMjYwNTI5ZDMzNyBsZWdhY3ktdHJ1bmsKKzI2NTQgNTc2NjdhYjFlMTk0MWQwMWVlYmM0YzZlYmU2ZDc3YWU4OGNlMTNkZCBsZWdhY3ktdHJ1bmsKKzI2NTUgNGMyMTFlODI4NmI1YzYyODJlYTQ1MjdkODU1Y2IyYzYyNDQyNDk5YiBsZWdhY3ktdHJ1bmsKKzI2NTYgMGFjOWQ1ZGI0MWM4ZmYxZmViYjUxMGJkMzQzYTA1M2I0YjM0NzEwZiBsZWdhY3ktdHJ1bmsKKzI2NTcgMGFjMzkyYjdmNzZlYWJlYWQ4ODQxNzE3ZmVkMTM1MGE1MDNjYWM0NiBsZWdhY3ktdHJ1bmsKKzI2NTggMmNlNmEyYTMxODg2M2RlZTNlZGJhZjkwNjM5YmEzMmM2NzVkYzY2YiBsZWdhY3ktdHJ1bmsKKzI2NTkgNTZiYjEwNjdhODgwNmVkMmM5MTNkZTk0NmQ2ZjViZDFiOWE4MTgyNiBsZWdhY3ktdHJ1bmsKKzI2NjAgODBlMmU1ZDY3YjQ5NjY2NTMwOWYxMTY1ZWExNGM4Nzk0ZGFkZDdiMyBsZWdhY3ktdHJ1bmsKKzI2NjEgN2YzZmFhZmQ4M2VkMzcyNzUyOWQ3MWRhODNjMDQwZDk1NjU1N2M3YyBsZWdhY3ktdHJ1bmsKKzI2NjIgZGRiY2Q1MzJjMTE0ZGY3NWJmNzNlMzA3M2RlYTQxNjU4NTUyYTNjMCBsZWdhY3ktdHJ1bmsKKzI2NjMgNjdmNmY3MTk0M2MxNjIyOWRhNzVhMzY3NjY2M2Q2MDYyNzcwNjg2YyBsZWdhY3ktdHJ1bmsKKzI2NjQgZTE0ZDQ2NDQwZWE3MTM5OWZmZjE2ZjdjMDVkMWFiNzk0ZjhhY2U2MyBsZWdhY3ktdHJ1bmsKKzI2NjUgZWIwMzk3N2JhZWViNGNmMzI4N2FmYzdhMjc2YThlOTI1NTJmMDRiZSBsZWdhY3ktdHJ1bmsKKzI2NjYgMDk1ZDljZjRlM2U2ZTI0YjE4MGIwY2M0ZmZlMWMwYzg2OTA4NjJmZSBsZWdhY3ktdHJ1bmsKKzI2NjcgOWY3MTYxZGI1NjY5ZTkxYjU2ODM3NGZkNmJkMDQ0NWZhNjU0NzFiNyBsZWdhY3ktdHJ1bmsKKzI2NjggZmJmZjJlN2NjNDlkZjg4N2I0OWZkODNlNDU1MWY0Mzc5ZTlkZGRhMiBsZWdhY3ktdHJ1bmsKKzI2NjkgNzllYTEzYjdkZjJjMTYyNzUwYTQyN2EwYjRlYzczYWUyMjVlYjdjZSBsZWdhY3ktdHJ1bmsKKzI2NzAgNWI1Zjg2ZWU0Zjc5YjdlNTUyMWQ2ZTYyZDc2OGI4MDcwYTMxYWNiNSBsZWdhY3ktdHJ1bmsKKzI2NzEgY2JjZGZkYTA1YmM0ZTIyYWY1NmRmZGYwMWVjYTdkN2I4ZjM2ZjNhNCBsZWdhY3ktdHJ1bmsKKzI2NzIgNzY2Y2M4MjBmNTExZTEwMTlhYjdhMDk5YTU0YmVmZjdhZjlmMzIwNyBsZWdhY3ktdHJ1bmsKKzI2NzMgODQxNGUxZjlhNWZlNGNjYjM3M2UyNWQzMTgzYWRlYmY5MjA4MWNhMSBsZWdhY3ktdHJ1bmsKKzI2NzQgOTg5NmRjZjA4ZTE2ZmFlMDllNjFiNTQ1MjFjZmIyZTQ4NDU3YjhmZSBsZWdhY3ktdHJ1bmsKKzI2NzUgYjQ2ZDc2ZWJkOWE3MmU1MDMyZjQxNTc3YjI4NjhlNGI3M2QwMDRjMiBsZWdhY3ktdHJ1bmsKKzI2NzYgZjhkNTNiNmNkNDQyZTgwMGUyMjllZDFmZjQ1OTMwZDk3MzcwMDE5ZiBsZWdhY3ktdHJ1bmsKKzI2NzcgNjlmODk3Mzk5MzhmOWE2MDhmZGFlNjgwNTQ1NGI0MDNjZDM0ZmY4YSBsZWdhY3ktdHJ1bmsKKzI2NzggNDNjMjIzMTU5YjI4Mjc2OTdjODA4OWFkZTFjNjhkZmUwNWNhZmFmNiBsZWdhY3ktdHJ1bmsKKzI2NzkgZGYwMzQzYWM4YTIxYWIxNThmYTRiMTM5OTY1MzdlYWMwNjAyOTFkYyBsZWdhY3ktdHJ1bmsKKzI2ODAgMDQ4ZTEzNzFjNDUwNmMxZTNlMjI2MGI5NjIzNWE1OTVkODBmMDA4NCBsZWdhY3ktdHJ1bmsKKzI2ODEgMDJkZTdhOGFlMjY3NjFjZjVjNjdkY2QyOTIxYzBjZTJmNjZkNGEyMiBsZWdhY3ktdHJ1bmsKKzI2ODIgMmRjZGIwMDIzYzMyMGVlNTJlZTczMzdjNjk5MjA3MGE1OWY5NTViYyBsZWdhY3ktdHJ1bmsKKzI2ODMgYmU4OThjYzE1ODAwNmExODQ3ODM5NTI0M2MzNWFlYjU1M2IxMGQ1NCBsZWdhY3ktdHJ1bmsKKzI2ODQgZDliNmIwMzY5ODYwYzQ1YzRhZWVjY2M3NmM4OTA2YjI5YjE0MjdiNiBsZWdhY3ktdHJ1bmsKKzI2ODUgYjM4MjVjZTgzYzg3ZjI0MjlkZmY4NDVlYzc0MzVmNGE3NmU4N2QwYSBsZWdhY3ktdHJ1bmsKKzI2ODYgNzQyZGM4MzgwMzhiZmNhY2FkN2IwM2ZjMGEwNjVkYjMzNjIwMmRlNSBsZWdhY3ktdHJ1bmsKKzI2ODcgMmIwYWQ1MmFjMzk2ODZjODk4NDk5ZTMwZjk5ZWExZmEzNTgyOTY3MyBsZWdhY3ktdHJ1bmsKKzI2ODggNDM1N2FiNjhjN2Q1YjZlOWMwZDZhMTZiNzhmNWJmMzEwZGE2YThlMSBsZWdhY3ktdHJ1bmsKKzI2ODkgM2Q0NjcxMDhiMDA4M2M0YzU2YmQ1YTQ3NDdiYWVhNzAzMjEyNWJlNSBsZWdhY3ktdHJ1bmsKKzI2OTAgMWVmZGIxNTIyMWRkZDFlOTYzNTcwZmI3MWYyODE4YmUwYzRiNjgwOSBsZWdhY3ktdHJ1bmsKKzI2OTEgZGMyZWM0OWEyYWQyOWI2ZDk2MzAxM2RlNTJhMWE4MzVlMGZjNzFmMyBsZWdhY3ktdHJ1bmsKKzI2OTIgODMzMTA3NmNmZTE1MmRmY2I5ZDE2NjlmOTI5ZDQ3OTFkNWI5MzYzOCBsZWdhY3ktdHJ1bmsKKzI2OTMgZmVlMzUwNzhlZjQwYTNkNWI1NGZlMDhiMzM0OTk3MjUzMzBlZWY5OCBsZWdhY3ktdHJ1bmsKKzI2OTQgOGI0YTI3NGU1NDZkY2NhOGNhODBiYzE2MTkxMjE4NDZlYjYwOWVlOCBsZWdhY3ktdHJ1bmsKKzI2OTUgOTZiMjEyOGYwMGFlZGMyNGEyNDRhNmVhZTIwMWFlZTQ4ODc4MjQxMiBsZWdhY3ktdHJ1bmsKKzI2OTYgMjY5NmI1NmRkYWM0OTUyZmNkMzgwMmQxZTE4MjQzM2RlZjFhNjM1YSBsZWdhY3ktdHJ1bmsKKzI2OTcgMjU1NzI4YTg0MWRlZjFiNWU5MjhlMGVkNjFkNjRjY2E0ODYxNzM2MyBsZWdhY3ktdHJ1bmsKKzI2OTggOTAxOTg0ODgyNGExMGQ2ZTFlMThlYThiYjY3Njg1MTA4MmNiNTk2MyBsZWdhY3ktdHJ1bmsKKzI2OTkgOWQwMjQyYjkyY2E1ZmIwNzdjZWRjYzAwZjE2MTBhZWRlZjljYzAyNSBsZWdhY3ktdHJ1bmsKKzI3MDAgZWE1MTQ2ODY2YmNmMTc5NzQ1NDI3ZWQzZmE5Yjk5YmI3MDBkZjZmNCBsZWdhY3ktdHJ1bmsKKzI3MDEgNDhlYWY0ZmM1M2NiMGQ4MDEzMjYyMWEzODYxNWM2MWFlYWYwZWVlMSBsZWdhY3ktdHJ1bmsKKzI3MDIgNWY1OTBhYjQ1Mjk1Nzc2YjNjODQ3ZWIyNzY0YmU0NzYxOWZkNjk0NSBsZWdhY3ktdHJ1bmsKKzI3MDMgYjU4NjE4OWNjMWY1ZTY5OWRiMzc3ZDQwYTUwYzRkMmQ3Njk0NDUxNCBsZWdhY3ktdHJ1bmsKKzI3MDQgZDVlMWM0OTlmMDEzN2RmMjQ5MTczMTdmMWViNjE4OGMwM2RhNzMxOCBsZWdhY3ktdHJ1bmsKKzI3MDUgZDBiYWE4MzAwMDA1NjI0MmVmMjI1ZDhiMTA0ZjE2YTYyNjIxMmFiNSBsZWdhY3ktdHJ1bmsKKzI3MDYgOWYwNmM2Njg5ZjBkMTBhNDM3MjVhNDViNTUwMzFjOTZhYmFhZWJjNCBsZWdhY3ktdHJ1bmsKKzI3MDcgOTM3Y2JjMGJlNmVjZWRiNWMwYjkyN2JhNTAzODRiMDBjOTVlNWE4NCBsZWdhY3ktdHJ1bmsKKzI3MDggZTE5OGNjOThhNGZkMGU3ZTJmMzM5YTQyZTc0N2VkMjAyZGM4NzFkNiBsZWdhY3ktdHJ1bmsKKzI3MDkgODMwNDY2NjQxNjBlOTkwOTJkMzMyNjVkODFiNmI4NjM4YmViZDRhMyBsZWdhY3ktdHJ1bmsKKzI3MTAgNGVmZmY2Y2VhOTBmNjk5ZDdmNjUxMGEyOTg4ZTBiNmIwNWVkZDYxOSBsZWdhY3ktdHJ1bmsKKzI3MTEgNzY2Y2VjNTBkNzY2ZDNmN2I1NWQ1MjZmYmQyODJlZmZlNmQ0ZTIyYiBsZWdhY3ktdHJ1bmsKKzI3MTIgNWE2MWY4MjdmNDdjM2EzOWI0YWVhYzUzOTAxNjM5MzFhYThkNGY4NiBsZWdhY3ktdHJ1bmsKKzI3MTMgYzE1OGM4MzQ3NjU0NjViNzM3MzVjMzc0ZWEyNGVhNDZiMzFiNDkyZiBsZWdhY3ktdHJ1bmsKKzI3MTQgMjY0MzA2YjYxYjgzZmVmY2YwMzRjZDQxMWVhNzM2ZGJhZDEwZTA2OSBsZWdhY3ktdHJ1bmsKKzI3MTUgMmUyODdhMTUwM2IyNTI2NDZmNGQ4MGNmOWI2YzczY2Q1ZDZlOTAyNCBsZWdhY3ktdHJ1bmsKKzI3MTYgMDc4MGI5NWE2NjBlYzgyMDk4ZjNhODU0ZTI2MmJhY2E4YWI1OTFlNiBsZWdhY3ktdHJ1bmsKKzI3MTcgYWRmYTA4MmY1MjBhNjE2NmY2ZDM1ZjczMDFjNTcwMTg4MTRhNzYwMiBsZWdhY3ktdHJ1bmsKKzI3MTggMWVmNjNhZGY0ZmM1YmE2ODU2NDc0MzEyZTMyZTBjMWMwZWFlNjJiYSBsZWdhY3ktdHJ1bmsKKzI3MTkgY2ZiNTMzMjJjOWQxMTQzMmRhNTJlM2ZmMTk2MTk2NWRiODRiZDQzYiBsZWdhY3ktdHJ1bmsKKzI3MjAgNjgzZWRiMGM0NDYzNDkyOTgzOWY2M2E1Y2RjMzg4N2IzNWI1OTA5YSBsZWdhY3ktdHJ1bmsKKzI3MjEgMDYxNGQ4ODdkMTBhYmQwMmJlMTRkODkxNTlkOWE0ZDNlMjk3OTZiZiBsZWdhY3ktdHJ1bmsKKzI3MjIgNDQzNDM5M2I0ZWRlNjU2Njg2NThiNDZhNmI1ZTVlMjM0ZjgxZjMyNCBsZWdhY3ktdHJ1bmsKKzI3MjMgMTcwNjhhNmEwYWE1MTdiNmQwM2FlZTc5NzU2NGFlOGE1NTUwYWVlMSBsZWdhY3ktdHJ1bmsKKzI3MjQgNzNlMjY2YmY3YWM2YjAzYjk3MmIzYjMwNmM2N2NjZmZhZTQwZjVmMyBsZWdhY3ktdHJ1bmsKKzI3MjUgZjljMDdlZTc5MzAyMmY2NWMyYmNiY2I1N2M3MjExZDMyYTYyMDhlNSBsZWdhY3ktdHJ1bmsKKzI3MjYgNWZhZjkzZWI5MjU2ZTMzNjM0M2NhMmQyZjY5YjI0ZTQyNThmZDRiMiBsZWdhY3ktdHJ1bmsKKzI3MjcgNWExZjlhZGUxNTEyNDMyMGEwMzQ5MjBiM2M1MTEwN2FhY2ExODE5ZCBsZWdhY3ktdHJ1bmsKKzI3MjggOGMxNzlkMDIzNTgzY2Q4NjFkNzExZmYzMTM2OTRmMWQxZjU3NjliNyBsZWdhY3ktdHJ1bmsKKzI3MjkgOTI1MDlkMzA0ZTQ3OWM2MGE3YWI0MzU1ZWRmOGVkZWE1YzdkOGFkYiBsZWdhY3ktdHJ1bmsKKzI3MzAgNmMzNmMyNzNkNTdkNGQ5ZTAyMjFiZGNkYmVkMjI4MzI1NDVlMGZkMCBsZWdhY3ktdHJ1bmsKKzI3MzEgMzRhNzYxMDQ2ZGJkNjlmNjlkZDM3NTFmNTlkMTgxZWIxMTAyNmExYyBsZWdhY3ktdHJ1bmsKKzI3MzIgYTVjMjQ1OTIzYjMxMGQ1NjhhMGFmZWZhMGU0ZjY2YzMxMTI5NTNmZSBsZWdhY3ktdHJ1bmsKKzI3MzMgMDg2YmRiYjY5NzNiZjM1YjVjNGVmOTgzZTBhYWUwOTRkOGM0NGJhNiBsZWdhY3ktdHJ1bmsKKzI3MzQgNGNiNTUzNTY3MDZmM2JmYjNlMTRlZTVmZjIyODI5NWE3NmRmZTU2MiBsZWdhY3ktdHJ1bmsKKzI3MzUgMDNiOWYxNTJhZGI2OTUzMjVjNTkzMTExYTExODMzNjc4M2M3ZjE4OSBsZWdhY3ktdHJ1bmsKKzI3MzYgZGVhZTgwZTA3YTgxYzk4ZTI1YjJjMTNmMmMyYWZiNjg1NjVlODE0ZiBsZWdhY3ktdHJ1bmsKKzI3MzcgM2I4ZjQxZjk2ZWI0Yzk1MzMzNjc0MTBhY2YzMmNkNDBmMDI2OWUxYSBsZWdhY3ktdHJ1bmsKKzI3MzggMmRhOTM0ZWYyN2MwMzgxM2FiZDFhZmUwODI5MWNkODdkMTRkYWY3YSBsZWdhY3ktdHJ1bmsKKzI3MzkgMTJlY2VhNmU5NTVjMTJiMTMzZjk0ZTM2ZjQwYTI0MjU4MzVhMDBjNCBsZWdhY3ktdHJ1bmsKKzI3NDAgNjg4NDM0NmMwNGEwNDhiMzBmM2M1MzM2NWJjYjdjNGQ4YWMxNzMyZiBsZWdhY3ktdHJ1bmsKKzI3NDEgMzE2OWQzOGY2Nzc0MmI5ODE2MDYyYzlhZDk0YjY5NTlkOGM4Y2VlYiBsZWdhY3ktdHJ1bmsKKzI3NDIgYmFlMTQ5NGYyZWM4MTAyMzBjYjU3NDUyYjA2MDM0OGNiZWY0MjFhNyBsZWdhY3ktdHJ1bmsKKzI3NDMgNWY3MWYxNjYwNzlkNDAxZGZjY2Y1YjRjYjUxMzc3NjI2NmI2ODJmYyBsZWdhY3ktdHJ1bmsKKzI3NDQgYzcyZjI2YWM0OTFiYThkODIyOGViOGY2ZjU3YjgxNmQzNWY3ZjE5ZSBsZWdhY3ktdHJ1bmsKKzI3NDUgMzdhYTY3ZjA4NjdjMTBmNDYzN2M3ZTAwZjQ0Y2ViMzRmMmFhYTRjYyBsZWdhY3ktdHJ1bmsKKzI3NDYgMzc5MDVmZTE4OTJhMjdkZDhiN2M0MzVmNDQ0NDQ3ZjQzYTAyYzQzNSBsZWdhY3ktdHJ1bmsKKzI3NDcgZGJmNDA4OTE4MjAxNjFlYjVlNDdkMDViZGU5YmZmNjM2YmQwOTQwZiBsZWdhY3ktdHJ1bmsKKzI3NDggZDE1NDdkNmJiNWI1Y2Y2MTFmOGY3NzMyNWUyOTQwYzIyMmNkYmRhMCBsZWdhY3ktdHJ1bmsKKzI3NDkgN2QyNGRlNjQzZmI1MGNhYWIzZDI0MDU5OTUyZWFjMmI3NjM2ZTFmNSBsZWdhY3ktdHJ1bmsKKzI3NTAgNjA3NzcwNGRhYjdhM2Y3OWI3MTY0ZTRkMTgxMmI2NTRjZGRhMzFhOCBsZWdhY3ktdHJ1bmsKKzI3NTEgZjExZmFlOGVlMWU0MjlkODM2YmYyNzk0NDM3YmFjMzIxYzUxMWUwYSBsZWdhY3ktdHJ1bmsKKzI3NTIgOTI3NmIzZWUzOTM2N2M2MWQyMWJkMTQyY2Q5N2JkZDJmZGJiNzNmOSBsZWdhY3ktdHJ1bmsKKzI3NTMgOTU3MmE3ZDA5ZGZmNDYyZWJlYWQ0OWMxMDQyMzFhM2E0ZWVjMzJkMiBsZWdhY3ktdHJ1bmsKKzI3NTQgMDg2ODE3NjM2NWQ3ZmFjMThkOWU2ZTQ0Nzc4YjM5NDhlNzA0NzVkMSBsZWdhY3ktdHJ1bmsKKzI3NTUgNDdjNDJlYTY3YThiZDg1MzE0NGQ5OWQwYmE4Y2U3NjFjNTYzZTY3MyBsZWdhY3ktdHJ1bmsKKzI3NTYgZjljZGVlYmZjYjY3MGMzMDY4ODU1ODc5ZjQ5NzA5ODI5ZDlkODQ3MiBsZWdhY3ktdHJ1bmsKKzI3NTcgZTE4ZjFmYTM5OGEzMGIzZTI1Y2FmZTNjNjg3OTA4MGUyYjFkN2Y1YSBsZWdhY3ktdHJ1bmsKKzI3NTggODAwY2Y0MDg2ZmIzM2Q4MGNiM2I2NzcxNDliZjE1YjZmMDMyMmU1OSBsZWdhY3ktdHJ1bmsKKzI3NTkgYjIwNGYzMWZiYzk3ZTYwZGQxNzQzN2IyNDgwZDllNjhlZTJhOTUxNyBsZWdhY3ktdHJ1bmsKKzI3NjAgYTM0NzkzM2E2ZDkyMmY2MDVmNTAyZThjZDJhZjI4ZWIzZmQ5NWRlMyBsZWdhY3ktdHJ1bmsKKzI3NjEgZDQ5YjZhNjcyNWJkODdmNTIxOWE3M2QxZjA3MTU1MzQxYzQ0ZTdhMyBsZWdhY3ktdHJ1bmsKKzI3NjIgOGNkZDYyYmI1MTVjYmFhMGMxNzhmNzYxOGE2MmM5NmFmNmRlYWI4MyBsZWdhY3ktdHJ1bmsKKzI3NjMgNWEzNTE5NTM5OGVmNTNmYmRkNTdkNmQ2YmM4ODQxZDhkMmU0NjAwOSBsZWdhY3ktdHJ1bmsKKzI3NjQgMzRkNjdkYTg4ZTg0Yjg0YjZkOGVkNzczNzIyMTIxOWRmYmIyZDRiMCBsZWdhY3ktdHJ1bmsKKzI3NjUgOGEyNGVmNDRkZmIwYThiNDJiNjUxNDU4ZjU1ZWQ3NTA3OTBmNjFkZCBsZWdhY3ktdHJ1bmsKKzI3NjYgNmIzNjA0MTU5Y2E5YjExOGM2NzEwMmU2NTI4NGFkNTE1NDY2NGVjOSBsZWdhY3ktdHJ1bmsKKzI3NjcgYzc2M2ZjNjRmY2FiYmUyNWNiNGYzMmIwNGNjNTdhZjA3YmQ3MGVhNCBsZWdhY3ktdHJ1bmsKKzI3NjggMDIxNGJiZjQ3YmY2ZGVlNDZlZDE1MzAwNzBlNDMxOTM4NjIzMmFlYyBsZWdhY3ktdHJ1bmsKKzI3NjkgOTI3NmMyNjI1ZDY0Y2JmZDI0MmEzYmY0NWMxYmVlZmMyMzBiZmYxNiBsZWdhY3ktdHJ1bmsKKzI3NzAgMGFkNWIzNWUzYWQ4OWY4NjM1NzYwNDY5NmZiYWZhYTNhNzM1ZTQyYSBsZWdhY3ktdHJ1bmsKKzI3NzEgZGNjNmRlMWMzN2E0ZjUzNTI2ZTA2MjU0NDI4NTc2YTdiOThmNGUyOCBsZWdhY3ktdHJ1bmsKKzI3NzIgZTI1ZTI2NTZjODUzN2IxMTVmMzgyNjE0MTY4OTZlNDRhNmZlNjI3NSBsZWdhY3ktdHJ1bmsKKzI3NzMgZjgyNThmODQxMDQ2ZThkNjQ5MjAyNWMzNGJmYTUyNzkzMzlmMmY2MyBsZWdhY3ktdHJ1bmsKKzI3NzQgNDA1YTJmZWM3NDU0MWRlNzAzM2M0YzMxZGI0NjM4NDdmOWUwYjczZCBsZWdhY3ktdHJ1bmsKKzI3NzUgMTFlODYyNzBlZDBkY2ZlN2I0N2NhM2U5YTRiMzg0MzlhMGJmMzRhNSBsZWdhY3ktdHJ1bmsKKzI3NzYgNDBhMGVjOTk0YzU0OWVjYzg5M2IzYjcyZTgxNTEyNDViMmIwM2MwNiBsZWdhY3ktdHJ1bmsKKzI3NzcgOGQ1NzI1NDk0ZWRlNzMxNjBiMDc1ZjI1MDBmZDQ3YTMxN2EyYzI5OCBsZWdhY3ktdHJ1bmsKKzI3NzggNzU1YmI4ZWZjYzJkNTMzNDljOGUwOWZhYzM3MDBlMTdiN2I1ZjExYSBsZWdhY3ktdHJ1bmsKKzI3NzkgMTg5ZWUzYmVlYmI1ZTZmNmE1MWM0NmFhYzc5NDFmMDg3YWYzZDM3OSBsZWdhY3ktdHJ1bmsKKzI3ODAgYWM3ZDY0NDUzYWE5ZjE1ZWE5ODg4OGE1MWI4Y2UzNWMxZGY3ZWZlNCBsZWdhY3ktdHJ1bmsKKzI3ODEgZDFmNmVjNzg4YWNmN2I1ZmM0NzE1YTAwNzZhYTNiMzliNjgxNzNmOSBsZWdhY3ktdHJ1bmsKKzI3ODIgY2RlYzNlODgwNTNiM2RmNTVmNzc1MTI5ODQyNzVkMzI2YWNiMjYyYiBsZWdhY3ktdHJ1bmsKKzI3ODMgYTBkNGM1ZWYxZDVkNzg5NWZkYzViZGY3NDY0ZWQ0MzNkMjQwZWYxZCBsZWdhY3ktdHJ1bmsKKzI3ODQgOWJlNjU4ZDE5M2E5ODlmOTIzMTMwMjVjY2NlYjdkMzU2YzNmOWQ1ZSBsZWdhY3ktdHJ1bmsKKzI3ODUgMGU0MzYyMDBiZjEyODg0Y2UxZGQ1NWI0ODQ0NTU0NTViMTBjMWRmMyBsZWdhY3ktdHJ1bmsKKzI3ODYgN2ZiNWRlZmM4ZjZmYWFhNTk1ZWMxYjdiODRkNmE5MzUxZTFiNWE2NyBsZWdhY3ktdHJ1bmsKKzI3ODcgMjEyYWQxNThhODA2MmUyZjUzOGRhM2QwMjU0YjgxMTQwN2U3MGNmZiBsZWdhY3ktdHJ1bmsKKzI3ODggMWQ2NWYyOGMwYWE5N2NiODUzOTk1Njc4MDY3MzA0N2VlODAzODA1NCBsZWdhY3ktdHJ1bmsKKzI3ODkgZDQyMGFmOWMxYjc1N2EyZjgyNjA1MmFiZjE0ZWQ1NmJiNDY2ZTczZCBsZWdhY3ktdHJ1bmsKKzI3OTAgNDJhNmI4ZTEzOTFhMDc4NWJlYmFiNjRmMmY4MWNjZDBjMDhhMTUxMCBsZWdhY3ktdHJ1bmsKKzI3OTEgMDRlZDQ3NjViMTdjZTUzMGRmMTRkZDk0ZWM5NDVkNmRlZWQwMzM0MyBsZWdhY3ktdHJ1bmsKKzI3OTIgZjVhMmJjMzllMTBlMmE0ZDRkODg3MzczYjFkZTk3NDhhNTdhNGRkZSBsZWdhY3ktdHJ1bmsKKzI3OTMgMGMxOTM4ZjJlMGMwMmY4NGI1YWQ2MmExY2Q1NTM5NTM0YjkwY2QxMiBsZWdhY3ktdHJ1bmsKKzI3OTQgMWY2YzU5M2VkYTY4N2IyOWQ1MjAzMWQ3ZmUxNzM5NjEyNWY3NDEwYiBsZWdhY3ktdHJ1bmsKKzI3OTUgODg1OTk2YTFhNjMxODgwZWY2MjhiYWNhZGNkZTBiYjlmODNlMTkwNCBsZWdhY3ktdHJ1bmsKKzI3OTYgNzg0YTA5YTUyMzc1YzRlNTUyZThlM2Y4M2VkYzk3M2RjNzY1OTJmZiBsZWdhY3ktdHJ1bmsKKzI3OTcgZDViYjhmZTQzZGYyZjNiZmIzM2U3OThkY2JmODk1ODhkY2I0MjljZiBsZWdhY3ktdHJ1bmsKKzI3OTggM2NiNjg2YzQ4Y2RkZGY4MWJlNDM0MmJiZGZhY2U3MTRlZmQ2OGY4NCBsZWdhY3ktdHJ1bmsKKzI3OTkgOWQwMWU5OGVkODQ5M2UwNzY2YjVlNWZmMTI1OTgwNGY3MTg5YmQ1NCBsZWdhY3ktdHJ1bmsKKzI4MDAgMmY5NWEwMWQ2YzFmM2M2NDU2ZGZkMmFkNDc4NzNmYzYwNGY4YTZhYyBsZWdhY3ktdHJ1bmsKKzI4MDEgMGIzODAwMGZjODIzZGY3ODBmN2RkODZkM2NmNjEyMjI4Mjk5N2ZkYiBsZWdhY3ktdHJ1bmsKKzI4MDIgYjE2MmIyNzQwMGJjNTAyZGQwZWNjNzQzZGFhMGZlNTM4Njg0OWZlNiBsZWdhY3ktdHJ1bmsKKzI4MDMgMGVmYjhkZGY2YzBlZDc4YmNhMDNmMzU2NWFjMmIxZDQyOGU2NTJjYyBsZWdhY3ktdHJ1bmsKKzI4MDQgMDJkM2YxNjFiN2Y1NTcwMmFkZmE0OTVhMDAxY2QxYTczYmY1NmIxZCBsZWdhY3ktdHJ1bmsKKzI4MDUgNTlmOTMyNWJiOGVjYzNlNWRiNDBiMGQ2NTAzY2M3OTE3NDYzOGEwYiBsZWdhY3ktdHJ1bmsKKzI4MDYgYzBlN2IwYjliNzUwN2Q0MzJmMWUwNWY1YWQxZTdhODc1YTJlNGQ1ZCBsZWdhY3ktdHJ1bmsKKzI4MDcgYzgzMmEyYjBkNDMzMGJkODMxNTIxZmZkZmFjYWE4M2Y4Nzk0ZTM0YiBsZWdhY3ktdHJ1bmsKKzI4MDggOGJiYTE0ZjdkYjhhMWRjZmU5NzMwOGIyY2M1MDMwNDMzMGVmODljZiBsZWdhY3ktdHJ1bmsKKzI4MDkgZjZjYzdhYTMxZGU2OWU5YTdjNjIxYWJhZWE3ZWMwNWVmMDZjYTYxNSBsZWdhY3ktdHJ1bmsKKzI4MTAgZGE1YjE0MzM0NjdjMWNhNWY1OTRlZDI3OWNmOTJkNjEyNTk0NWNlNCBsZWdhY3ktdHJ1bmsKKzI4MTEgNDg5ZmVjYzFkYTI4NmFhYzJmNzgzYWIzMzU0YTU4Njg2ZmY2NjYyYyBsZWdhY3ktdHJ1bmsKKzI4MTIgNzNmZTdhMWE1ZGQ0MmUzNjYyNGIxMTM1Zjc2YjgyYjhlMGIwNzllYiBsZWdhY3ktdHJ1bmsKKzI4MTMgMDQ1N2M0NDFiMDg2MDc3OWE3MTllMDVlYTUyOTU2OGE3NDI5ZmRiOCBsZWdhY3ktdHJ1bmsKKzI4MTQgNzQ5NDJlYzcwNDMwYWU4ZmI1NGZkNGZhMWFlNzI5NTQwYzgzMGEyMSBsZWdhY3ktdHJ1bmsKKzI4MTUgMmUwZDY4ODIwMTNlZmZkZTY0MjJkZGFlZTAyZDc0OWU4ZWUzZDhhZSBsZWdhY3ktdHJ1bmsKKzI4MTYgZTcyOTNiNWI1NzBkOWQ2MTkxYjEwYWU0ODBlZjlhNDI3NTRmZWFjNSBsZWdhY3ktdHJ1bmsKKzI4MTcgZjZmOTgyY2I1NDAxMzIyYjRjNjg2ODFjY2EwNWNkNThhNGM5ODk1MSBsZWdhY3ktdHJ1bmsKKzI4MTggM2U2MjZjNDEzYmJmNDg4ZmMyODhmZmFjMTZmMDkxZWVhOWU3NGI5OCBsZWdhY3ktdHJ1bmsKKzI4MTkgNWI1MjFmZTRkMWY2NDk2YjBkMzJmMGMxZTAzODkzN2Y3NGJkNWQ0NiBsZWdhY3ktdHJ1bmsKKzI4MjAgNmQxNTk5YmUyYjU0ZTBlNDAwNjJhZWIwOGNlMzFlZjczYTY1NGEwZSBsZWdhY3ktdHJ1bmsKKzI4MjEgZDM3NzBiMWRhNjExNTI5NTdiNGVjMjY2YzEzZDI4ZDYzMzFiMzZlOCBsZWdhY3ktdHJ1bmsKKzI4MjIgN2U1ZjRkOWFlZTc3YmM2ZGJhZmFmYjlhOTkzYmEyYzE4YzI0MzRiZiBsZWdhY3ktdHJ1bmsKKzI4MjMgYWFmZjY1MGQ3ZTEzNjYwYWIxZmQ2YmQzNGIzY2MwMjhlN2QzNDhiNSBsZWdhY3ktdHJ1bmsKKzI4MjQgNWVkNmFkYmI5NWYzNTkwMzJkZGFkNjNmNTE4ZGIzOGQ2ZDYyMjQ3MiBsZWdhY3ktdHJ1bmsKKzI4MjUgZTNiNjNhOTkxNGY4NzAyOWMzNDYzOWNkOGQyYWFiYmNjOTI2NTM1OSBsZWdhY3ktdHJ1bmsKKzI4MjYgMTg5MDc4MTM2MzUxNTcxYWZhMmQ0ODZmZDlkMjhiZTRkMjEwM2Y3MyBsZWdhY3ktdHJ1bmsKKzI4MjcgMjgzOTAzNzVhMmI5YWU2NjUwMTdmMjBmODY0NmFhZWU2YjNlYWU4MyBsZWdhY3ktdHJ1bmsKKzI4MjggMTY0YjU2ZmE2NTU4ZWFhYTJmMjE2ZWUzYzQyNGE3OWVkMTllMmVhYSBsZWdhY3ktdHJ1bmsKKzI4MjkgMTA0OTg2N2RjYTFmOTQ4M2NhNzU4ODk1ZWY0OTM4YWFlODI3YjBkNCBsZWdhY3ktdHJ1bmsKKzI4MzAgYzJiYTg4N2Q5NDkyYjFiM2M0NWEyZTM4Njk3NjkzMmM3OGIyOGQyNiBsZWdhY3ktdHJ1bmsKKzI4MzEgMmNkZGJiZWE5YmZiMzIzYzU3MjQ4ZGRhMmQ1YWNiMTk3ZjRhMmY3MiBsZWdhY3ktdHJ1bmsKKzI4MzIgMTAwMDJlMWJjNTI2NDJkODhlMzBmZDFlNDQyNDUwZmQwMjcyOGVhYyBsZWdhY3ktdHJ1bmsKKzI4MzMgZmZkZGU3ZmM3MWMxZWNiODJkNGU0YmU2MTU1MTc2ZDdkYzkwOTc1OSBsZWdhY3ktdHJ1bmsKKzI4MzQgNzFkNDk2MjU5YWQzNDhlNmRlMWMzNzNiZjQ1ODA5ZmMwNWUxMDMxNCBsZWdhY3ktdHJ1bmsKKzI4MzUgNGUyZDIzOWRjNjRjOGYxMmFlZTlmMjg4ZTFjN2YxZTNhNGJlNmVlZCBsZWdhY3ktdHJ1bmsKKzI4MzYgNWFmZjlmOGZkMjk5NWVmYjJjMGU1ZjFiNTM3NTJlODdkYWY2MjZjNiBsZWdhY3ktdHJ1bmsKKzI4MzcgZTM0ZWJjYmJkY2E2ZmZhNGI5YjA4NDFjMjU2NjI0NGVkZWE0MGFjZiBsZWdhY3ktdHJ1bmsKKzI4MzggNjQ0MWFhNmE0MTI2NDk4NGZhN2RiMTQ0ZjcwNDljNGZiMTc0M2M1YiBsZWdhY3ktdHJ1bmsKKzI4MzkgMjA1Yjk0N2IxZDNjMjZjNzYwNDc1NmM4MDkxMzdiNTExNTBlMjI2MiBsZWdhY3ktdHJ1bmsKKzI4NDAgNmE2MDM0MmMzMTA3NDgzNmE0NWRjY2M4MjQxY2U3NTk5NTA1MDQyZSBsZWdhY3ktdHJ1bmsKKzI4NDEgMTAyZGUzMTk5OThlMTdlMGQxZWE5MWVmZTU3OTQwZjE1MTJjYmU0MyBsZWdhY3ktdHJ1bmsKKzI4NDIgMTM4NmE3MmFlNjA0N2Q5NzYwNTIxZjAyZGI5NDc5NzI1YTI3M2M2NyBsZWdhY3ktdHJ1bmsKKzI4NDMgNzU0NGViYWM1Njk4NzgxNmRiZTYxYjZjNGU1MjdiYjUzNDBjNTM4NiBsZWdhY3ktdHJ1bmsKKzI4NDQgM2IwOWI0MGNlZjFkMDlmYWMxNjVmNTU1NWJkNWM4ZGQ1NWRhNjVlOSBsZWdhY3ktdHJ1bmsKKzI4NDUgOTEyNmY0Y2IxY2NhNDcwNWM3Y2RlMmVmNTQ0ZDJiNjVjYTcxNGJmMCBsZWdhY3ktdHJ1bmsKKzI4NDYgY2EyOGEzYTgyYmJhODQ4MWUyNDg3OGU3MTQxM2JhMzdlMGE0NTQ3ZiBsZWdhY3ktdHJ1bmsKKzI4NDcgZDI0NGVlMDNjNTc2ZTcyNGZhNWU3ZDA0OWFjM2EyNTNhNTRjNDRhYiBsZWdhY3ktdHJ1bmsKKzI4NDggZTE1YmVhOTcxYTViZDUzNzllOGJiNTMzMDYwYjFmNTg2NWVhM2I5YSBsZWdhY3ktdHJ1bmsKKzI4NDkgNWI3MTg2M2M4MDFkMjk2ZjUyMzIyNDc1YzE2NjRlOGNhYzM2YzQyMiBsZWdhY3ktdHJ1bmsKKzI4NTAgOTBlYTUwNzg2MDk1MGEzM2RkODZiYjI2MzJjODUzMzM1YjEyMTExMCBsZWdhY3ktdHJ1bmsKKzI4NTEgODkxZjk4MzU3YzA0MzU1YWQyYjJkNGU5ZmRjMzYxMjQ5ZjMyZmY1MSBsZWdhY3ktdHJ1bmsKKzI4NTIgZDZmYTY0Y2VjNDEwZTYwYzBhODY2MjczNjA0MGNhMDk2MGMwZTY3ZCBsZWdhY3ktdHJ1bmsKKzI4NTMgMmRiZDdlODQ0YmQwODI3YTRkYjIwMjhiMTA4OWEyZjlkYzRhYmY3ZCBsZWdhY3ktdHJ1bmsKKzI4NTQgYjQ5YmFhZDliNjQwNmM3Nzc0OWQ0MTc4OTY0ZWRhYjk0MDU1YTU1MCBsZWdhY3ktdHJ1bmsKKzI4NTUgNWMxOGQ2YzU3ODI3NDJmMjlmYjE3YTRhYzdmNjUzNjY4ZmQwMjk4YiBsZWdhY3ktdHJ1bmsKKzI4NTYgODdhYjljODFlOTI3ZWRkNjZkOGI4YzkyZWExYWNjOGM0MmMyMTc0NCBsZWdhY3ktdHJ1bmsKKzI4NTcgZjM3ZjhiYzkxOTBjNTZhMGY1YzQyMTliYTU0YTRjODU3MTAyMThlZCBsZWdhY3ktdHJ1bmsKKzI4NTggN2MwNmJmMTVmZDJhYmRlMTA5NDExZDhjYTMxODNhNWVjOTJjOTMyYiBsZWdhY3ktdHJ1bmsKKzI4NTkgOGE2MDY0OWU3OTg3ZTUxYTc1NjhmMWQ5ZjIyNDU2MGQ3ZjBkYjg5NiBsZWdhY3ktdHJ1bmsKKzI4NjAgODJjMTI1OWE0ZWYzMzAyYTA3MzEyMzZiYjlmMTUyYTExOTE3Y2RjYSBsZWdhY3ktdHJ1bmsKKzI4NjEgMTQxMTliMTk0OGZiNDEzYjVkNjI4NzMzZDVjZDRiMDQ4MDdjYWMxMCBsZWdhY3ktdHJ1bmsKKzI4NjIgMDljZTA0ZWY3MjNiZTcxZGU1ZWZiMTg0ZmIwMzg2ZDVlODkxNmI5MCBsZWdhY3ktdHJ1bmsKKzI4NjMgZjUzZGNiOWEwNGQ2MzgyNTE3ZmEwMzQ0ZWNiMzk2MzRlMDhhNzUwZCBsZWdhY3ktdHJ1bmsKKzI4NjQgOGZmYWUwYjQ2ZmQ0OTI3YjhmMTY5ZDZhNzdmNWNkNmIwMWI2MWNhMyBsZWdhY3ktdHJ1bmsKKzI4NjUgYTgwMjJiMmE3N2U2MDk2YTFiNTg1YWUxZGY0YTQyNjNlY2FhYzI2ZCBsZWdhY3ktdHJ1bmsKKzI4NjYgMWU4ZTNhYjY3YjQ1ODVlNDg1ZTIzZmFkNWUzNmJhMjBmYWUwY2FiMSBsZWdhY3ktdHJ1bmsKKzI4NjcgNzU4MmVkMTM2ODRlNDk3ODA2NzNiM2MwYzExNDIzMzQ3YjdiMTIyMyBsZWdhY3ktdHJ1bmsKKzI4NjggYmZkZDZlNjI2ZGQzNzBhZTQyZjJlYzk3YzJhZjM4YjkxYTdmNmFiYyBsZWdhY3ktdHJ1bmsKKzI4NjkgOGJjYjUwZjQzNmZhZGVlNjg4MWEyYmU1ZTQyYTJlZTY0MGNjNWZmMiBsZWdhY3ktdHJ1bmsKKzI4NzAgNzIzNmUwMmM0NTYzMTI2NzRlZmE3Yzc2YWMwOWY3N2NiMDc0OWM3NCBsZWdhY3ktdHJ1bmsKKzI4NzEgYmM1Yzc3ZmE4MDA2ODdjZmU3NDBmZmM5MTQ3MTBiNjQ1OWZkZjMwYiBsZWdhY3ktdHJ1bmsKKzI4NzIgM2Q5YzIzMTBhZmU4NWJjNzUwYWU1NmFkNDViMmU1ZWMxYTVjYzVkYSBsZWdhY3ktdHJ1bmsKKzI4NzMgMDBjZGI4ZGVkZDZmMmE1NDYwMDVlZGVjZWZmOGY1MmZlODZjMjEwNSBsZWdhY3ktdHJ1bmsKKzI4NzQgODYyNDU3ZTAyMzdjYTU4ZjU4ODM1NzFkYjc1MTZkMzQwZTA5MTkwZiBsZWdhY3ktdHJ1bmsKKzI4NzUgMjQwM2ZiNmVhZWM2MjFjMzU4ZTJhNWNlNTUwMjRmYjQ3Njc2MzA5NCBsZWdhY3ktdHJ1bmsKKzI4NzYgOTNlMjE1ZGMxZDZlZjFlMmM3ZTIxNmJhMmUwN2RiNjMxYzg5NjUyNiBsZWdhY3ktdHJ1bmsKKzI4NzcgNGQ2NGFiYmRmNzBhOTY5MTI2MTZlM2E0YjczNGE4NmEyZTcwNzA5OCBsZWdhY3ktdHJ1bmsKKzI4NzggOWU5MTQ1YWJjNDJhYzQ1NGU1ODhlNzRiMDM2OGI4NjA5ZTE2NzczNiBsZWdhY3ktdHJ1bmsKKzI4NzkgNGQyYTE5OWUxMjAyYTZiNzM3ODhlMDlhNWFjZDFiMWViZTA2NTU4NiBsZWdhY3ktdHJ1bmsKKzI4ODAgY2NlMDVhNDc2ZTA0MTJlZTBjMzIyOGY1NmFhYTY0ZDQwNTliZTNhOSBsZWdhY3ktdHJ1bmsKKzI4ODEgZjcyNzhhMDY3ZmI0MzAzNjViMDEyMzIxN2UyYjU2ZGI2YmYzNWVkMSBsZWdhY3ktdHJ1bmsKKzI4ODIgZDhiMTdmYWIzYTk4M2YxMjdlNzY3YjkwMTZkMDhjOGRlNGZhMjgwMCBsZWdhY3ktdHJ1bmsKKzI4ODMgNTdlOTRlYmEyNDg0OGNiODA1N2MxMGVjN2I1ZjdlYWRjOWMyMzk5NCBsZWdhY3ktdHJ1bmsKKzI4ODQgZTc1NzFhMThiZGVmMWQwMjE0NTVlZDFkMmRkYzk0OWFjYTUyM2FmNSBsZWdhY3ktdHJ1bmsKKzI4ODUgNDc2YmI3ZTViODU0NzU2OWIxOGU3ZDFiMDA4ZDA5ODhiMzJmZDU1ZiBsZWdhY3ktdHJ1bmsKKzI4ODYgNzZlNDg3MDEyMDRiZjIzN2M5OTE5NTlhNzZmNGUyNTY4NjBiMWVjZCBsZWdhY3ktdHJ1bmsKKzI4ODcgZThjNmZhOTExOGViZTllZmY2Yjk4NjY4NjMxNDU5NTliOGFhOWRhMyBsZWdhY3ktdHJ1bmsKKzI4ODggOWE3NTQ0ODZlZjBiNTEyMWIyNmEyNTg0NGRmZjQ3M2NmNzAwMDQ5YyBsZWdhY3ktdHJ1bmsKKzI4ODkgNzZkOTJlYmI0ZDgyYTc1YzUwNjNkZGY1OGM2MDBhNTIxZDBmY2RmOSBsZWdhY3ktdHJ1bmsKKzI4OTAgODJkZDA4MWYzODBkNTRhNzQ5NDhlYjE4YzkwYzE1YmUyMDU0ZGQ0MiBsZWdhY3ktdHJ1bmsKKzI4OTEgYzgxOTUyZDk3ZWJlOGFkODc2NzJjZWNiYjM5NTlkZGNhN2ZhZTZhOCBsZWdhY3ktdHJ1bmsKKzI4OTIgYzY1ZmMxNzJmMTZkYmJhNmZkZWE5Y2Q5YjFiYjhkZGMzYzVmZTVjMyBsZWdhY3ktdHJ1bmsKKzI4OTMgMDMzOGM3YzlmMDhjOTlhYmVlOWM4YmIyNzRkYjM5MmYyYjhlMjFiYSBsZWdhY3ktdHJ1bmsKKzI4OTQgZjE3OWQ4ZDVlZThjODUzZGNjZjk2YzlkMDYxMDk0NzI2NTM3MzBiYyBsZWdhY3ktdHJ1bmsKKzI4OTUgY2Y1Y2FiZmIzZjcxZjZiNzc5YjE0Y2E4NzY4NmZjZDBjOTA3YWJjYyBsZWdhY3ktdHJ1bmsKKzI4OTYgMWUyMDVkMDg3NWY2MmRmNTkyYTUzMzlkMjIyZGEwMTE5OTRjOTI4ZiBsZWdhY3ktdHJ1bmsKKzI4OTcgZWEwYmFkOWZkZjY3MzRlOTA5NDNjOTUyNDYyMTU3ZjlhNzEzMjRmZiBsZWdhY3ktdHJ1bmsKKzI4OTggODI0NjU3NmVmM2Y1MzU5Njk1NzgxMjQ4MjJiMjc5NTUyOGY1NThhNCBsZWdhY3ktdHJ1bmsKKzI4OTkgNTVjNjBlN2YzMWVkYTI3M2JkNjIwN2JmNWEyYTIzMTAzOWY5OThkZSB1bmxhYmVsZWQtMS41LjQKKzI5MDAgMDc4ZjkwMTVmMTc4OTI4YzZkMjIzNDkxMmI5OWVjMDE2ODNiMDU0OSBsZWdhY3ktdHJ1bmsKKzI5MDEgYWIxYjM0ODZiMjI2MzhmNTRhZjZjOWIwYWYyNjY0MDdjNzkxNWZkMCBsZWdhY3ktdHJ1bmsKKzI5MDIgZDc3ODI0NTQzYmNlOTZhOWYwMDY0OTJiZDdlODhjOGY1MjNmNDBlMCBsZWdhY3ktdHJ1bmsKKzI5MDMgZGM2MDk1M2Y2MDUyOTkwN2I4MGYwZmM4ZDlhZGMwZjMzNjYyMGE3ZSBsZWdhY3ktdHJ1bmsKKzI5MDQgZjcxMDExMGNmZDM5MmE1NmJhM2JlOWFmZDkyYWNiMTk2MWYzMmIyMiBsZWdhY3ktdHJ1bmsKKzI5MDUgZGJjYjQ5ZDc0MmEwY2ZmMmFjMzM4MTBiOTQ3N2VjN2MxMmIzNTQ0MyBsZWdhY3ktdHJ1bmsKKzI5MDYgODM0ZGQ0YTc3ZWUyMGY5OTk4YjU2ZmUyMWQ4YTlkODk2MmZjODYwMSBsZWdhY3ktdHJ1bmsKKzI5MDcgYzdiMjNjYzhjZGVkYWZmNDg3MGRkZjUzZjM4YmJhOGU0N2Q1OWIzOCBsZWdhY3ktdHJ1bmsKKzI5MDggNmMwZjE2MDA4YmQ5ZDQwZmNhYzhiNTE4OWUxZWY4MTU4ZTE5OTIxOCBsZWdhY3ktdHJ1bmsKKzI5MDkgNDVjODE4OTM5NGZmMGUzZTlkOTYyMDMzMmE4Y2ExODMyNTQyNjBlNiBsZWdhY3ktdHJ1bmsKKzI5MTAgNzBjMmY0MDQzMGM3Njk1ZWY5MmQ4Y2MzMTVmMzMzYjljYmMxOTM0ZSBsZWdhY3ktdHJ1bmsKKzI5MTEgMzIwODVlZGQ3N2E3ZDg5NGYyODM1NzBhYmUzNTJlMTAwMTFhMmU3ZSBsZWdhY3ktdHJ1bmsKKzI5MTIgZmYzZGI5NTVlNjI4ZjM0MTY0NzVmNzZkNDJhZDliZTQ1MDhlZmQ3YiB1bmxhYmVsZWQtMS41LjIKKzI5MTMgYTVlNjg4MWNlYmYwOWM4MTZiODA1OTYzMGI3OGVjNTUxMTEzOTJlNyBsZWdhY3ktdHJ1bmsKKzI5MTQgMGQ0OTRiYzI0MjA3Zjc3YTU2ZWY3NDVjYTg0ODYxYmU5MTdhNjMyZiBsZWdhY3ktdHJ1bmsKKzI5MTUgOGJkMjE5NGFkNmY5YTliNTNlODgyNDA5YTBmY2FiOTg2YzU2Mjk4NyBsZWdhY3ktdHJ1bmsKKzI5MTYgOGY3YjMxYThhNjc4NWM4NDY2NzA5ZjVkM2YzM2ZhOGNhZGI1NjBjNSBsZWdhY3ktdHJ1bmsKKzI5MTcgNmZiYjAzZGM0MzllZTI2OWIyNDdhZGRmYmUzYWEwZTU0ODNmMDZhZiBsZWdhY3ktdHJ1bmsKKzI5MTggMmRkNWRiZjI4YTJkZDU1ZDRhZTcyY2E1YzE4NGEyYTExM2QzNjRkMiBsZWdhY3ktdHJ1bmsKKzI5MTkgNWQyZjYyYWQ4ZGVlYzEyMjNkZmFiZDBjNTRlNTVhY2M2ZmJmMDBiZCBsZWdhY3ktdHJ1bmsKKzI5MjAgOWRlM2QwMmFhNzVkMTlhYjkyODg3OTI0OTBiZTQ1NmRjNzRmYzJjNCBsZWdhY3ktdHJ1bmsKKzI5MjEgYmZjNjU1MDc0NTIzZDBhYmY0MDgyOTk1YzcxNTQyN2ZhM2EyMTJkYyBsZWdhY3ktdHJ1bmsKKzI5MjIgNDFkZDM5MzQ4N2Y1OTFhNDRjYWFlZDNjY2Q2OWNmYTc2NGNhMWUzZSBsZWdhY3ktdHJ1bmsKKzI5MjMgOWI2NzFmMzk3YThmMjcwMzcwOThjYTM2NjE0OGU0ZDQyZGRkMGI4MCBsZWdhY3ktdHJ1bmsKKzI5MjQgMWRmYjBjOWQwNTc2N2QwY2RiODAzN2E2YTdjMTVhMzg2NTkyMzZhZCBsZWdhY3ktdHJ1bmsKKzI5MjUgNTdjM2U5Y2ZlZTQwZmY4NTk5ZDAxZDUxZWY2M2JjODAxMThlN2NiYiBsZWdhY3ktdHJ1bmsKKzI5MjYgMDdkNWQ2MmE0YTJiMjAxNjYwZTMwMGJkM2M2YzZkNTU1OTQ4NDhjOSBsZWdhY3ktdHJ1bmsKKzI5MjcgN2Q4NGUwZGRmM2JlMmRjODY0NDQ0YTg2MWQ2NTdlODYwOWY4Y2U4MCBsZWdhY3ktdHJ1bmsKKzI5MjggMzg5MGY0NmQ2ZTNiNzExNDlhNjA3ZTZlMzc5YjkzZDQ2NTM0MzUwNyBsZWdhY3ktdHJ1bmsKKzI5MjkgMDUzNzZjOTI2ZjU4MGQ5OWIxZDg5ZDc3NzFjZWFlNzEzZDA4MDRkMyBsZWdhY3ktdHJ1bmsKKzI5MzAgN2EwZDAzZThiZDI5YmFlNmQ5ODRjMzYxY2MxNWQwNGU2N2QwYzNmNiBsZWdhY3ktdHJ1bmsKKzI5MzEgNjc2MDMxYmY0NGVlMWFkNTM5YTVkMWVjZDA2M2JlMmRlZTFiOGJiYSBsZWdhY3ktdHJ1bmsKKzI5MzIgZjg0MjFkYTRlZmE3NmI3ZDVkNTlkODdiMmI0OTAxNDZiNzIzODExNyBsZWdhY3ktdHJ1bmsKKzI5MzMgNzQ0Njk2YmE4OTI3YWU3YmNhZjg1ZTY1Y2U3YjkyNWI0MDM1YjExZCBsZWdhY3ktdHJ1bmsKKzI5MzQgMmU4MmRkMGY4YTllMzdkYWM3MGFjMDY2MGIwYmU0NWE4Yjk4NjQzNiBsZWdhY3ktdHJ1bmsKKzI5MzUgZDk0NWNmMzNhNjRmNDY4YWE3YmViZDJmZGM5NWY1OWJlYzU0NWE0ZSBsZWdhY3ktdHJ1bmsKKzI5MzYgYzcyMWFmYWIwZWZhNjFlNWE4ZTIyMzM2ZGQ3NGUwYjg3YmYxNzM4OCBsZWdhY3ktdHJ1bmsKKzI5MzcgN2M4YWJjZTE5Nzk4NGE5YTYyMjVhOTcyODYyOWM4ZDU2MDEwOTRmNiBsZWdhY3ktdHJ1bmsKKzI5MzggNDViM2E3OGYyNTZiYWU2YjQ5OGY3YzFkNjI5NzRkYTIxMjI1YmY3MSBsZWdhY3ktdHJ1bmsKKzI5MzkgNzI1OWU5NmEwNGE5ZDQ1MTQwZjBkNjZjNjJjZTc2YzA5ZDIyNWEwNyBsZWdhY3ktdHJ1bmsKKzI5NDAgYzBkNGNhYTcxYmRhYjEyZmIwYTMzM2FmMTQwYzE1ZGY5ZTVmODcwZSBsZWdhY3ktdHJ1bmsKKzI5NDEgNjE2MzAyMGE5NjdkYmMzZjdiOTVhMmQ5OGVlMjY1NWYxNTg1NmVkOSBsZWdhY3ktdHJ1bmsKKzI5NDIgYjM3YWM5MWUyYTBkYTRiODA4YmYyYjU0MThjMjc0MDczNGFiZDIxZCBsZWdhY3ktdHJ1bmsKKzI5NDMgMzBhNjUyMTAxNTk5ZmYxZTc4NmE5MGIxYjEwMTY1ZmE1NGQ5M2E4YSBsZWdhY3ktdHJ1bmsKKzI5NDQgNjg1ODQzMTRhMTU0N2ZkZThhNjcwYjYwZGFkYWIwYzBjMWFkYmMxMiBsZWdhY3ktdHJ1bmsKKzI5NDUgMDEyZTM3ZjA1MDE5MGYxOTExNjVmNWE5ODliYTYxMjYyNzAwYTMxYSBsZWdhY3ktdHJ1bmsKKzI5NDYgM2UxZmJlODRjZjlmYzZhMjYzMGFhMmEwN2QxOTNkZWY0MTIwNGEzYiBsZWdhY3ktdHJ1bmsKKzI5NDcgZmJkNjhlNjkyMTRjMjdlMDU5NTM4MTNmYTAxODQ1NGY4ZmZjZjgxMyBsZWdhY3ktdHJ1bmsKKzI5NDggY2Q4MWU1NjgwNGIwOTQyYjFhOWQ0NTA2MGMzZjdjMTFlMWIxMWFlZSBsZWdhY3ktdHJ1bmsKKzI5NDkgNjNkMzRlODc3YTY5NzA4ZjNkZWJkZTFlNDY0NTI2ODkzZDk4YWIwOSBsZWdhY3ktdHJ1bmsKKzI5NTAgNDQzMTlkZjZhOTFjMjk2NzcyM2ZlZTUwNjAwMjEyNDE1ZjdhODVhZiBsZWdhY3ktdHJ1bmsKKzI5NTEgYmE0ZWMxM2MwZjlmOTgyZWY5YjVlNTQyZDM1YTYzYTU1NTE2OTVkNSBsZWdhY3ktdHJ1bmsKKzI5NTIgZjU2NWNmN2Y5YWJhODNjMWE4MGM3MWUxODQ3ZjczNTk3MjFlMzE5OSBsZWdhY3ktdHJ1bmsKKzI5NTMgMTY0ODQ5ZjU2MTA1ZmUyYzMwNjE5YTY0YWZlMjNkYzU1YzZlZjk0NCBsZWdhY3ktdHJ1bmsKKzI5NTQgNzdlZTliMjIyZmRiNGE0ODg4NTc4NWY5YWE2MTQyNWJmMTVmOGI3NSBsZWdhY3ktdHJ1bmsKKzI5NTUgZGMzYjQ1NWY3NjMyNzczNWIwNjViYmUwNmUwMjgwNzFjNTRlMTkwMCBsZWdhY3ktdHJ1bmsKKzI5NTYgY2JmMGVmOTk4YTRhMWU1N2NmZGFlNjQ4N2Q3NDc0YTE1Y2I1OWJhZiBsZWdhY3ktdHJ1bmsKKzI5NTcgYzdiYzU2MTRlZWFkNWI0ZjY5ZmJkM2ZiZmNmZTk2N2Q1Zjk2MDA5YiBsZWdhY3ktdHJ1bmsKKzI5NTggMGNkMTk3OTQ3ZDgxNGU5Y2YyMmI5ZDQ0YTlmNjY5YTE3ZDA3MDY1ZSBsZWdhY3ktdHJ1bmsKKzI5NTkgMTM2MDYxODQwNjI0MzQxNTM5OWFjNjYzMzIzZjlkOTQxMzdkZDQzMCBsZWdhY3ktdHJ1bmsKKzI5NjAgM2M4YjQ0MmU1ZTFmMmU2Y2UzM2FhNGY1NWZlN2I4MGQ5MWY0MjY0NyBsZWdhY3ktdHJ1bmsKKzI5NjEgZGZiM2IwZWMxZmY5MjlhNjgyMmNkNWJjOTBjMDIwM2U2MzI4YzkxYyBsZWdhY3ktdHJ1bmsKKzI5NjIgNzg0YzUxY2IxYjc5NzBiN2ExYzdlMGQwYjE0YWQ5NjA1Njc3MzM2MiBsZWdhY3ktdHJ1bmsKKzI5NjMgNDRlY2ZmNjg4NGI3ZDcxY2Y0Yzk4MGZlOWEyYWQ4MDAzMDU5ZDBkYyBsZWdhY3ktdHJ1bmsKKzI5NjQgOTY1MmZjODMwYTEyZDlhYmE5YWQ4NmMwYzRjNmM4N2ViZTk2ZDViOSBsZWdhY3ktdHJ1bmsKKzI5NjUgM2Q2NTQxYTJlY2E1YTA2MjVlNWY0MjQ0OTAwNDE1NTJkMmFjOTJhNyBsZWdhY3ktdHJ1bmsKKzI5NjYgZDA1NzA0YTAwMGViZGU1ZDkxYTIzY2UxNjJlYWNjNzM0OGYxMWRlOSBsZWdhY3ktdHJ1bmsKKzI5NjcgM2FkZWNlMmM4NTY3MDQ1ZGMxOTdmZjk4Y2RmOGIzYjQzZTVhZjZlNyBsZWdhY3ktdHJ1bmsKKzI5NjggYmFiMmJlYmQzNWU3MzU4MWFlNGQ4ODljMWU1YjA0YmZmZDZjMWUwOCBsZWdhY3ktdHJ1bmsKKzI5NjkgMjU5OTIzZTRkN2IxN2ZiY2QwMGQ2ODE3Zjc5ZjFhN2JjMDc0M2Q4ZSBsZWdhY3ktdHJ1bmsKKzI5NzAgNDNjODZkMWViMjJjMjk0NjY2MDMxODMyOGY4ZDU1OWMwNTdkMWU2MyBsZWdhY3ktdHJ1bmsKKzI5NzEgMGNmZjM2YjExMGZlNTUyNzQ2OWQwNmMzNjExODQwYTJkN2JkZGE4MSBsZWdhY3ktdHJ1bmsKKzI5NzIgODU3ZWQzZmJkYzBlYTM5ZDJiMDhmMDVjZjY4ODc5ZmE2NGEzZGU3MyBsZWdhY3ktdHJ1bmsKKzI5NzMgMzc3M2I2ZjZkZDUzYmNlYjZjNDdkMWM2N2M0ZTdlODJkZmIwOTczYyBsZWdhY3ktdHJ1bmsKKzI5NzQgZDZlMjU3OTIzMjNmYjZiZmNlNDE5NzI2YmFhYmU3OGZjYzExZThlNCBsZWdhY3ktdHJ1bmsKKzI5NzUgOTRlYTZlYTdmN2Q1NTZhZjdlNTk2NWMwYWYxZDVhMjkzMjVhODBmZiBsZWdhY3ktdHJ1bmsKKzI5NzYgMDFhNmJmNTc0NTJlNTVhZWQ3MTU3MzNmZjBkMWY4Y2U4YmZjZWY2NCBsZWdhY3ktdHJ1bmsKKzI5NzcgZjA4ZDM0NDk5MjY5ZGUwZTQ4ZmVjYjRlYmFjNDdlOTQ1ODhjYjMyOSBsZWdhY3ktdHJ1bmsKKzI5NzggNjUwOGM5M2Y5NDcyOWFhZGVlOGM0YjEzYzYxZjljMmFkYjIyMDE5NiBsZWdhY3ktdHJ1bmsKKzI5NzkgZTRhMjdkODRlYTM2NzgwZjA4NjRiM2Q1NGMzYThkNzZlY2JhMWFkYiBsZWdhY3ktdHJ1bmsKKzI5ODAgYWE2MzNmMGRlZmE2MWVhOTU1ZTA0ZWVlZGIzNDQ4NmI0NTRlNjA2MCBsZWdhY3ktdHJ1bmsKKzI5ODEgZTE1N2MxMmNkNmU3Zjc0OTFjZTMwZmMzYzUzYWFjZWM1YWJmYzM2NyBsZWdhY3ktdHJ1bmsKKzI5ODIgYTFlODRiNDg0NDdhZTY0NGJiYWRmYmU1YzM5NjJlMDc3ODJkYmJlOSBsZWdhY3ktdHJ1bmsKKzI5ODMgMDljNjlhMWVjN2IwOTI4YjFmYjkxN2NkZGNjMWMxZWE1YTc5NWZjZiBsZWdhY3ktdHJ1bmsKKzI5ODQgMDFmYzU5MDAzMzM5Zjc3MDNmMGY5Y2EzY2JjMDIwNTNkYjg2MmZkMSBsZWdhY3ktdHJ1bmsKKzI5ODUgMWVlY2ZmZDk2OTY4OWUwODA5MjIyNDlhZGEyZDY5YWE3Y2U1NzA2YyBsZWdhY3ktdHJ1bmsKKzI5ODYgZDFiODllODVjZTc1NmQzYTJkNmQ2YzczZjE4MjQxYTJjNDY4MTI2MiBsZWdhY3ktdHJ1bmsKKzI5ODcgYjg0YTZkNGRlOTBlOGZjZjQzNGEzMWFlZjBkZTk4MWQ1ZGQ3MTYyOSBsZWdhY3ktdHJ1bmsKKzI5ODggMWQxOTY2OWY1Njg3Njk2NDMzYTVmMmMwNDhiOTNkYWNjYWI5NDlhNyBsZWdhY3ktdHJ1bmsKKzI5ODkgM2NiOWEyYjdiNDBjZjQyZGUzOWE0YTkwMDRmYTUzNjNhYjcwYzQzYyBsZWdhY3ktdHJ1bmsKKzI5OTAgZmFmMTFhZGNjZmM2NWJkMGE3NDgxMzQ5Y2ExM2JlYTVlYTE4ZTAzNyBsZWdhY3ktdHJ1bmsKKzI5OTEgMmZjZDQwMWE2MjMyM2E0Njk0ZGVhMGFmMmNhODZjOTUzNDZkOTRjOCBsZWdhY3ktdHJ1bmsKKzI5OTIgMjFiM2VhNmJkMzJkMzE2ZTFkOWI2N2ZmZmUwMzA0NTgyYjY5MWY1NiBsZWdhY3ktdHJ1bmsKKzI5OTMgZWE1MDcyZGU3NDI3M2E1MjlmYTAwNjQyMzM5ZmZiNGQ0OTJmYTBkZSBsZWdhY3ktdHJ1bmsKKzI5OTQgM2ViMDVkMmRjN2IxMWY0MWI1NjMxZWM4OTNkZTc5YmUzYjZkMjQ2YyBsZWdhY3ktdHJ1bmsKKzI5OTUgYjQxNzkyMzA3MDA4ZGViNDM4YTk3M2FiNzlhMjc3MWU2OGE3N2VjMyBsZWdhY3ktdHJ1bmsKKzI5OTYgYTc4ODJmYzZlYTI3MDViOGUxNTBkYmJjMWUxZmU5MjY0MmM5M2FlMSBsZWdhY3ktdHJ1bmsKKzI5OTcgNmJmNjlmNTRhOTAzZDg5ZTZkNWMxOTdhNDUzZDc0ZjI3ZGMyOTczNiBsZWdhY3ktdHJ1bmsKKzI5OTggZjI3NzNhNmRjNTFlZWNiMjhiZGU1YmY3NmIwMjRkNDkxOTc0MjU2OCBsZWdhY3ktdHJ1bmsKKzI5OTkgN2I0YWRlNTM2YWY4OGY0NTMwZWY2ZTc1MTBjOWE0ZjI3N2IxNjY2YyBsZWdhY3ktdHJ1bmsKKzMwMDAgYjk4YWVmMjEzZGFlYTU0YzIzMGM4M2NkNjQ0MGUzM2YyYjhkODE3NSBsZWdhY3ktdHJ1bmsKKzMwMDEgMDdhOGM0NDNiODMxMDQ4M2NjNGU1MjY3NmNkYjViYjEyNzYxZTkzYSBsZWdhY3ktdHJ1bmsKKzMwMDIgMTc4MGViOGZkZTJiNjQ1ZjMzYTBlYTczMmExYWQ5ZjEwNDYzZWIwNSBsZWdhY3ktdHJ1bmsKKzMwMDMgNDEwMWRlZDczYzUyZGE4ZGY3ZWMwM2UwYmYxZTQzOTliYTQ0ZmQ5YyBsZWdhY3ktdHJ1bmsKKzMwMDQgM2Y4MWI1YWMyYmIyMDI0MDg1OTI1NTdkMDJjZTBlNzdmYzQ5ZTdhZCBsZWdhY3ktdHJ1bmsKKzMwMDUgMTQ2NjM1ZGVmMDFlYWIyZGIzNzFkZTlhMzdlMTAyOTMyMGE0ODU1NiBsZWdhY3ktdHJ1bmsKKzMwMDYgMzk4YzAwZjExYTJmNDVjMjdlNDNmY2IxOTgzMzdlMmY0MzQxYjFmMyBsZWdhY3ktdHJ1bmsKKzMwMDcgYzU1Y2I3NmJjODM3MDgxZTBkNTFhZjk3ZjQ4YjI1MGZkYWI5MDQ0YSBsZWdhY3ktdHJ1bmsKKzMwMDggODUxYWM0YThiZTdkODg1YjM3MWNjZTNlYWM1MjE3ZGU5OGFlNzUyYiBsZWdhY3ktdHJ1bmsKKzMwMDkgMTY0MGNjM2YxYTUzZjgwNzUyZmIyYzgwYmQ1NzFjNDBkZWViZWUwOSBsZWdhY3ktdHJ1bmsKKzMwMTAgZDMxZWMxNWY1ZjcxMDY0NGFlMjczNjI5ODNmN2Q2YjBhNjlmNDFhYSBsZWdhY3ktdHJ1bmsKKzMwMTEgYjJhNDFmNmFlYWM5OTBjYWNiYTI0ZDBhOTI3OTRiMjMwMzAyMmUzNSBsZWdhY3ktdHJ1bmsKKzMwMTIgZmU2YTVmMjY0MGEyNzZkOTAxN2Y1ZWRmMDA3NDQ2MWQzYmQ5Yjk2YiBsZWdhY3ktdHJ1bmsKKzMwMTMgODcyYTNjYWVmZjA3MjQyMDM1Mzg5ZDZmZTY1ZjAyODJhMjAzNmI5NyBsZWdhY3ktdHJ1bmsKKzMwMTQgNGRlZmFiYjgyOTZiNWI0NzA2ZDAzN2Q1OGFhMGRjNjk1NmIwZGIzOSBsZWdhY3ktdHJ1bmsKKzMwMTUgMWFjNWM2NzI3ZThjNThkYzg5OTQwYjZmNzAwNzdjYjBjYmJiYjEyZSBsZWdhY3ktdHJ1bmsKKzMwMTYgNGQ1OGUyYzUwODg3YTVhY2FlOGU4OTI1ODRkNTdhNjViYTk0Y2U3ZSBsZWdhY3ktdHJ1bmsKKzMwMTcgMzllNWI3ZTMxNTg4ODVmMzFlYmEzNDBkZWZmMDI1YTA3MWQ1YzAzMCBsZWdhY3ktdHJ1bmsKKzMwMTggNmY0OTlkNWRhZGRmN2FiY2Y3ZTQ5MTQ0Mjk2ZGRlOGEyODE3MDA1ZiBsZWdhY3ktdHJ1bmsKKzMwMTkgMjU0MWIzZDBmMjBmNzFlNjE2Yjk3YTlmMGRlMjYyYTcwMzJlZGE3NyBsZWdhY3ktdHJ1bmsKKzMwMjAgOGJjMTcwZTVlZmVlNzIxNDZhOGNlMmNjMDk4MDc1ZDkxN2EzOGUzZCBsZWdhY3ktdHJ1bmsKKzMwMjEgNmNhMWM0NGZkNTI3OGEzMjljYzdmMTQ5NTkwY2UzYTJmN2Q2NWI4NSBsZWdhY3ktdHJ1bmsKKzMwMjIgNmYzZmVkMjUwYWRiMGZhMjIyNzdlMWQ4YWEyNWVlOWZlZmExNmVmNiBsZWdhY3ktdHJ1bmsKKzMwMjMgMzkxMzRjOTljOTIzODNhNTcxNjY2ODcwZjdhYTcyMDY3ZmJmZjExMCBsZWdhY3ktdHJ1bmsKKzMwMjQgNzYwOTVhOGI5NmNhZWJmMGRkY2QyYjllZmEzMTRhN2JjMzc3MDhmZCBsZWdhY3ktdHJ1bmsKKzMwMjUgYmNmMDIwNTJlOTA5ZTgxYTdjNGMwMDc5NmJkM2E2YjRkYjIyZWFlMiBsZWdhY3ktdHJ1bmsKKzMwMjYgYjY4YjEwYTIxNTIwMDkzZThhMTZmYjI3MzdlNWI5ZGE0MGNmNzdiMCBsZWdhY3ktdHJ1bmsKKzMwMjcgZTU4ZjQwYzJmMjg1Y2Y1ZTM2YzYxZGIwOTE0NTI3NzdmNGEzNGRjMCBsZWdhY3ktdHJ1bmsKKzMwMjggNThlODc3MGRiNDRhY2RmZWQxZDc2N2NjNmQwMTA4OWZkNDllMmY5NyBsZWdhY3ktdHJ1bmsKKzMwMjkgMDZjMDc4NzUwZTgwOGEzM2I4YjczMWMyMDUzNmVmZWUzOTE1ZGQxNCBsZWdhY3ktdHJ1bmsKKzMwMzAgY2IxNDZhYTk4N2M5NDVmOTYwNDdmNzg0NjVlNzYyMzE4YzM4MDUwMCBsZWdhY3ktdHJ1bmsKKzMwMzEgYjJkYjRiZjM0ZmY4Y2U0OTk5NWRhN2U4NDA0ODNiZmU3Mjk4Nzk0MiBsZWdhY3ktdHJ1bmsKKzMwMzIgOGUzNTFmYjI1NzdhMDJiMjYyYTdlZjUwOTc2NzM1ZGQyYTVkYjI4ZiBsZWdhY3ktdHJ1bmsKKzMwMzMgOTcxNWZkYzFlNDYyZGZkNGY1MGZkOGMwZDdiM2RhNzAyMGE5M2ZiYiBsZWdhY3ktdHJ1bmsKKzMwMzQgMjIxNjlmY2MxMTgyNmRhNjU3ODE4ZjE4MmMyNmRjMzczOWEyNTk3NSBsZWdhY3ktdHJ1bmsKKzMwMzUgN2EwMTNkNjQ0NWE0ODc3NTVjNDk2MWNhODcyMWY5ZGIzNmZkYjJiOSBsZWdhY3ktdHJ1bmsKKzMwMzYgYWFkZGY4MjFmNWQ0MzJjZjExNmIzYWJhNDQ4NjExNWMzOGUwMmVkMSBsZWdhY3ktdHJ1bmsKKzMwMzcgNGM5YmM1MmI4MDgwZDM5Y2Y4ZGY2ZmNlOGJmZDgwODFhZGFjZWM4ZCBsZWdhY3ktdHJ1bmsKKzMwMzggY2QwZTdmMjRmYWNhMWIxMWFiNTZiNWExYjYyZDhhZjAwM2MwNDFhNyBsZWdhY3ktdHJ1bmsKKzMwMzkgZWMzMTc0ODgzN2RjMjc4OWY0ODc5NDZmMzI1OTE3MzE5NzE0MmY5MiBsZWdhY3ktdHJ1bmsKKzMwNDAgOWZiMmE4NjhlZWVlYzY1YWU3ZGM2MTk4MDRlZDU1OTE4ZDc5MWI1YSBsZWdhY3ktdHJ1bmsKKzMwNDEgMzYzMjMxNDBmNzUxODU0NWUyYmFkODM1ZmFlOTRhZDdhMmY1NTY5NSBsZWdhY3ktdHJ1bmsKKzMwNDIgZjk0ODFhYTVlNzc2YjY1ZjdiZDFlMjZiNTc5NjNlMTg1YjQxZDNhNCBsZWdhY3ktdHJ1bmsKKzMwNDMgMzZiOTM0MzI2ZmVkNWY0NTVhN2MwZmZhZDhkMzM1MDUwOWUxMjgyOSBsZWdhY3ktdHJ1bmsKKzMwNDQgYWZmODE5Y2FmMjFhZjU0Y2I2NjFjNjk5MGUwMTQwOWI3ZDNkNTExYyBsZWdhY3ktdHJ1bmsKKzMwNDUgMDBlYmU1ZmIwYWM2NzEyMGI2MDRlNTFhMjc2OGMzZWQ4MGIwYTg0NSBsZWdhY3ktdHJ1bmsKKzMwNDYgYTU0ZTRhNzE3YzliYmUyOTFkOTJlNGQ2MzA1NTJiNGQ5ZDk4ZThlZSBsZWdhY3ktdHJ1bmsKKzMwNDcgYzAyYzNjYmI4YWQxMDQ3NzQxYmM2ZjliNDYyMmNkNzFmY2YzZmQ1OCBsZWdhY3ktdHJ1bmsKKzMwNDggMjY2ZGU1OWRlOGE5ZDg3Mjg3Y2I0ODNkZWVjMjg2ZDI4ZDBhMDhmYSBsZWdhY3ktdHJ1bmsKKzMwNDkgOWEwNWUyYmZhNzRjMzZiYmE2YmViN2RlM2Y1MDZlNmVkZjBmZjE5YSBsZWdhY3ktdHJ1bmsKKzMwNTAgMTZhMTk1MzU0YjJiZWUwNmI3ZmMzYjVkOWFkYjI2NTA0NGM4MjFkMiBsZWdhY3ktdHJ1bmsKKzMwNTEgZGQ3ZGZhZDQwNGNkODMyZGE2MzhmMTc1Mjk0YTZlZmU5ZmNiN2FkNCBsZWdhY3ktdHJ1bmsKKzMwNTIgMTgxNDA5MTQxYTE4MDZkN2I4NWMzMThmZGI5NjQzYmUyNDdlZTA5YyBsZWdhY3ktdHJ1bmsKKzMwNTMgYjNkNjM5YWQ2NjZkNWIyMGIwZGI3YzU1M2MwMzdlNDlkYWU1ZDY2ZCBsZWdhY3ktdHJ1bmsKKzMwNTQgYThjYTcyMGZkOTIxOWVlYTZiY2UzMmRmNmE5OWQ1Zjk1YTAxNmZhNyBsZWdhY3ktdHJ1bmsKKzMwNTUgMTFlYTY2OWMyMzFlMTNkMjRkNDlkYjM4Yzc1MzExMDI4ZjM1YzQ0ZCBsZWdhY3ktdHJ1bmsKKzMwNTYgMjI2NTgyODIyY2ZhZjEyMmYwZWQzY2E5NWJiMTJmYTljM2QxMTU0ZSBsZWdhY3ktdHJ1bmsKKzMwNTcgNDZjYjZiY2U0YzQ3NWY0ZmVmYzUyMjg0OTE5NjY2ZDRmYWM0NGZmNiBsZWdhY3ktdHJ1bmsKKzMwNTggYmViZGMxYWNmNDc0NTliODZlNWNmOTc1MDJkZmIwNjIwMTcxNzdjYyBsZWdhY3ktdHJ1bmsKKzMwNTkgNjQ1OWUyZjIxYmY2ODA3NzM3ODhmYzJhZmQ2NjE5YjcyZDdjOGVhYSBsZWdhY3ktdHJ1bmsKKzMwNjAgMGM1YjJkOWU0NWU4MmQzZjJlNWU4YWVkNDRhZjVmYWMyY2I5NTU2MSBsZWdhY3ktdHJ1bmsKKzMwNjEgZWY4NjUwMjUwOGUyZjEwODZjMWExODZiZmIxM2E2NWEwZjBkMmYwZiBsZWdhY3ktdHJ1bmsKKzMwNjIgOTliZmYxZGI3NWY0YTBmZjFkNjcyOWRlMWVjOTdhNmYzYWIxZTY3NCBsZWdhY3ktdHJ1bmsKKzMwNjMgNThhNzQzOGMyZTdlZjkyMmIzNjMxNzllMDQ2ZjA4MjliYmFhYWQwYSBsZWdhY3ktdHJ1bmsKKzMwNjQgZmVhM2Y1OTRkZjc3NDZiNzc2YTEzY2I5MGYzZWZhNDliM2NiN2Y1NCBsZWdhY3ktdHJ1bmsKKzMwNjUgYTQ3OTNhZTI2NjgyNmMwMTM0YzQ5NjdkMGEwYmJjM2E2Mzg0YWMxNCBsZWdhY3ktdHJ1bmsKKzMwNjYgZmQ2MmMyODA5NmI1ODc3ZTY2ZDRiZWQ3YzFmYTQ1OTAxMDY1NzQ3OSBsZWdhY3ktdHJ1bmsKKzMwNjcgN2Y3YmE2NWEyODI1YzBlNDZiNTg0ZjliMTIyNTk5M2JjMDM1NmI1YyBsZWdhY3ktdHJ1bmsKKzMwNjggYTFmNWIyMTZlMzkyY2Q5YjUyYTU3NTlhYzZjYWJjYTNlYWJmODVhNyBsZWdhY3ktdHJ1bmsKKzMwNjkgNjM3OThjZGU1ODJjZjUzNTY0NWEyNDJlY2EzZGFlNzlmYzBlMzYwZiBsZWdhY3ktdHJ1bmsKKzMwNzAgMzIwMTBkMzU1ZmI2MTIyZTUyNThlYTkyMzY2MzQ2NTgzZGI1ZjViZCBsZWdhY3ktdHJ1bmsKKzMwNzEgNDI0ZjU1ZTY3ZDVkMzI0Yjk4NjU3NmE1ZmRlOThjMTQ3Y2YyYjQyNSBsZWdhY3ktdHJ1bmsKKzMwNzIgNGRhMGI3ZGFlNzk2ZmY4ZjI1OGFkNmI3YTQ3MGU2ZmI5Y2MzZGIxZCBsZWdhY3ktdHJ1bmsKKzMwNzMgYTRmMmIyMjEwYjAyMTE1MDMwYzU5YTE1NzUzOTYxNTczMzkzOGQ2ZiBsZWdhY3ktdHJ1bmsKKzMwNzQgNGZkMjI2MDJlMjgyYzFlZThiZjUxODdmZDE0ZmQyYjNhODRiYTU2NyBsZWdhY3ktdHJ1bmsKKzMwNzUgNjBlMzExOGQzMDczN2JiNmYyOWMzODc2YTRjODEzYzYzMDRkNDU5OSBsZWdhY3ktdHJ1bmsKKzMwNzYgZTk4YThmODAyOTAzYTYyOWM2MjQ2NjE0MTRjYzg5Y2FlMmFjNzY2ZCBsZWdhY3ktdHJ1bmsKKzMwNzcgNzRiNzE2ZTlhYzQ5ODZlNDAwMzc4OTM4MWNkMGRkMDQ0ZTJhMmEzOCBsZWdhY3ktdHJ1bmsKKzMwNzggMzllZTdkZTc0NzUwMmU5NjJiZGI1YzZlODcyYjM2N2Y0MmIwYTU1YSBsZWdhY3ktdHJ1bmsKKzMwNzkgZmVjMThlMjQ0ZDE2ODgyYjI5ZjBmZDU3YmU3ZDUxMWZkMmZmMjlmNiBsZWdhY3ktdHJ1bmsKKzMwODAgY2ZkZDU3NWVmZmYyYjQxNTcwYjM3YmZiZmY4MGIyYzM3NTEwNjNhNSBsZWdhY3ktdHJ1bmsKKzMwODEgZTQzYTIyMGMyODdhYTNlYTI3YjdjMWUxM2Y1ZmMwMzA5MTlmNWRmNCBsZWdhY3ktdHJ1bmsKKzMwODIgZDNiMjdmZmYwMGIyZjEyNTc1ZWMxZDIxM2I4ZTZkN2QzNzc5ZWUzYiBsZWdhY3ktdHJ1bmsKKzMwODMgOGM3M2M1ZjNiNmNhNzNkZGI2Njk0YTZjNTUyODcwOTUwNmFmZjZkNiBsZWdhY3ktdHJ1bmsKKzMwODQgODA3ODgzNDk5NmVjYzU4MmNhNDQ3OTY4MzE0MGYwOGY3ZjMwYjAzNCBsZWdhY3ktdHJ1bmsKKzMwODUgYzEyYjQ0NWNkYWNlYTFkOWY5YTA4OGFmNjIyYTZhNWIxYzA0Y2FhZSBsZWdhY3ktdHJ1bmsKKzMwODYgNzJhY2VlZDM2NWQ0MzViN2MyOTUzZGI4NDBiY2QwNTQ3Njk5ODM3MyBsZWdhY3ktdHJ1bmsKKzMwODcgMjUwNWZkMjBkMjc3YTQ3OWUwZDQ4NzY2MmI4ZGMyMzRkNmJhZTI2MCBsZWdhY3ktdHJ1bmsKKzMwODggNjExNDNiZjAzYjQ0NzZlMDVlMjcyY2NlOWRhYTk1NjYxM2FjZTc0NyBsZWdhY3ktdHJ1bmsKKzMwODkgYzE1NmQ0OTYwYzJiNDA4NTliMWYwNThjMjRmZDFiMDYwNTA0M2U3MCBsZWdhY3ktdHJ1bmsKKzMwOTAgYWFjYmQ0YjU1OGM3ZWZjZmJiZjc3Y2NiYmUyNzA2ODM0NmMwMGI0OCBsZWdhY3ktdHJ1bmsKKzMwOTEgODcyNWZhOGQ3ZmY5MWQ4MWE0MzZhYTYxZDM0ZDcwZjZjZWUyOTEyOSBsZWdhY3ktdHJ1bmsKKzMwOTIgZmYwMmI5NDhjOWE4MGI3Yjk1NWMxNTg0MWI5MzFmNTQxMmJkODFhMiBsZWdhY3ktdHJ1bmsKKzMwOTMgZTUwNjE5NzMzMmMwYzFhMTFlYTRiZjljZGE3MjgwNjJlODg1ZjA0ZSBsZWdhY3ktdHJ1bmsKKzMwOTQgZDg2MDhlZDFjYzNiMTNiOTgyMzAxMmUwYmFmNmQ5YTQ2NmM1ZTNlNyBsZWdhY3ktdHJ1bmsKKzMwOTUgNjE1OTgzZjFhM2ZmM2ZkNTkyZTI2NzNiNGE3ZTQ0YmJlMzNmNGViZCBsZWdhY3ktdHJ1bmsKKzMwOTYgYzQzMjczOGNmNjlhZWFlMTVmNTg4Y2ZhNmY0ZjEwOWRlNzk0YWIzMiBsZWdhY3ktdHJ1bmsKKzMwOTcgZDM4M2QyNzMzMTc2NWY4ZDZlY2MwNmUzMWQ0NTBiNGFmMzliY2MyMyBsZWdhY3ktdHJ1bmsKKzMwOTggNDg3OTk2Nzk2ZWRjNmM3MzFiNzUwY2Y5NTg2ZDk1MjEzNzk4ZWUxNSBsZWdhY3ktdHJ1bmsKKzMwOTkgZGNlNmRjNjJmMTA4ZWU0NGIwNDdlZGIwMmJmNDRkOTljZTIwNWFjOSBsZWdhY3ktdHJ1bmsKKzMxMDAgNThhNGNiMThmMDI1YWY4NmQ5ZGIzZDA5MWM5MWM0ZjQ0Njg0NDc4ZiBsZWdhY3ktdHJ1bmsKKzMxMDEgMTgzNjliYjljMjRkMDc4NzlmNjA1ZWZhN2VjNTFhNTBmMjkyZDdhOCBsZWdhY3ktdHJ1bmsKKzMxMDIgNzI0M2E5MDY5MzdjZjc4NDgzY2VlZGEzNTAzNGE0ZDAxNmM0MzJlYSBsZWdhY3ktdHJ1bmsKKzMxMDMgODQ0NDgyYjY0NjdhYWUzZDU4YzgxYTUwNTcwNWU1MjNiYTZlZjJiMSBsZWdhY3ktdHJ1bmsKKzMxMDQgY2Q0MGUzZWViYjQ5MzkwZjRlMDM0YWYzMTFkY2JlMjYxYmM3YTAxNCBsZWdhY3ktdHJ1bmsKKzMxMDUgM2FhNjU4OTJiNzVjNDcwNjk2NzM1NzMzNWE5ODc2MTc5ZTUzOWE5OSBsZWdhY3ktdHJ1bmsKKzMxMDYgYjQ2ZjIxYzgzMzY5MDk2ZjAwM2Q5N2I4ZmI1NGQ1YWI5ZDc1OGYxMSBsZWdhY3ktdHJ1bmsKKzMxMDcgMjIyZjA0ZjU1MDgzMzU3MjZhYjZlNjFlMWQ1ZGYzNDQ3NzNkOGIxYyBsZWdhY3ktdHJ1bmsKKzMxMDggNDY1Yjk4NDE3NzBlMzQ1NjVlNGQ5NmNmMGRmNzBiY2E0YjA3ZDhlNiBsZWdhY3ktdHJ1bmsKKzMxMDkgMzZlMmI3YTAwZDcyZjM2YWZiYWJjODAxZTJkMDM1ZGY3MDA1MzE0YiBsZWdhY3ktdHJ1bmsKKzMxMTAgMjYwZDk2ZGIxMTJmODdkMjA0YmM4ZTVlMmRjNDg3M2ZiODFmYzIyNSBsZWdhY3ktdHJ1bmsKKzMxMTEgZTVhZTQyZmZkOWEwNzU3ZjZhNzcxZjk2NzFlZmU2MDY2YmUyMzczNiBsZWdhY3ktdHJ1bmsKKzMxMTIgYmMwYWIwMTc1NGJhNWRjYjQ4MDA0MWU1M2Q5ZDg3YTY3ZDU1MzA3ZiBsZWdhY3ktdHJ1bmsKKzMxMTMgYjlmMjRkMGM3ZDk2MTZhN2QwMmYxNjBlYzc4YTQwMzBkOTU2N2MyMyBsZWdhY3ktdHJ1bmsKKzMxMTQgMDI4NGYxMDc5YTdiYWU1NjQyM2M5Y2U3M2FlMjM4M2JhNzFjZGE1YSBsZWdhY3ktdHJ1bmsKKzMxMTUgN2Q4ZTUxZTU4MGQxYTIzY2EzM2QyMDI4OTc2ZjUyZDJiMmJkNjY5ZSBsZWdhY3ktdHJ1bmsKKzMxMTYgMmI2MDgzMjcyM2MxNDMxZjc5NWY4NDhkMzE3M2I2Mzc5YTg1ZGU5ZiBsZWdhY3ktdHJ1bmsKKzMxMTcgMjY2YThiYTIwNzg0ZmNmNDFiYzRlZjI4ZWNmY2U5YTk5MjRlYzhjNyBsZWdhY3ktdHJ1bmsKKzMxMTggMDNkZTY3MDgwYzk1NjI0MjhkYzczN2U3MWY0ZWU0ZWQyMjUyZDlhNyBsZWdhY3ktdHJ1bmsKKzMxMTkgYTYwY2I1MzIxMjExMGU1NDAwYjQzYjViODhlYmQ2Y2U3N2RjN2UxOSBsZWdhY3ktdHJ1bmsKKzMxMjAgNWM2Y2RiNThhODAxY2I4MTk0NjRlMGU4Y2QxZTFkZDMxMGY4ODIwNSBsZWdhY3ktdHJ1bmsKKzMxMjEgYTczNmVmMTg0MGE1MWZlMmI3NWVhODlmNTE5MTU1OGVkOTQxM2I1NiBsZWdhY3ktdHJ1bmsKKzMxMjIgNjhiMzAyYWQ4NGExOTFiNDNkOTk1NWM1OGM4MjkzOWNkNjI5NTk5MCBsZWdhY3ktdHJ1bmsKKzMxMjMgN2QzYTA1M2M2NzY1YWU1NmViMTZjMTBkYzU4OWQ1YzBmZjEzMDk5NSBsZWdhY3ktdHJ1bmsKKzMxMjQgYTMxZTA3ODQ3MDYzODc0NjljZjBlOWYzZWNjOGI4OTExN2ZkNGVmYiBsZWdhY3ktdHJ1bmsKKzMxMjUgYjQxZTk1NzMxZTQyMjQyMTc4NWYxNWQ4OTU3MTMzZjQ0ZmQzZDlmZCBsZWdhY3ktdHJ1bmsKKzMxMjYgYjVmY2I2NjI0NjVlNzNjZjhmNjdlOTVhZTlkMDU0MzNlOTMyMDlmNyBsZWdhY3ktdHJ1bmsKKzMxMjcgNGJkYjI3OTQzZTIyNDIxMzcwMDY5MDkwZGFlNDAwZTUzYmZjN2Y1ZSBsZWdhY3ktdHJ1bmsKKzMxMjggMTRjYzRiMDdjZWJiZDYxMWU3NzBiZjdhMWI1MDkyOGQ4ZGM3YzA3OSBsZWdhY3ktdHJ1bmsKKzMxMjkgMjdhYWY5NDQ3NWRkYmQ3NTliMDUwMmQ3YmM3ZmM2MzlmOThhZmU0MCBsZWdhY3ktdHJ1bmsKKzMxMzAgMWE1MjAyOTBjMzljMDUyNWE3ZmUwMjFhMjExMjNhODI0MmFlMjE1OSBsZWdhY3ktdHJ1bmsKKzMxMzEgMDZhOWM4MjhiNjA4OTFiNThjYmQ2YTZjMzIzYjNlOTA0MTFkNDFhYyBsZWdhY3ktdHJ1bmsKKzMxMzIgOWJmZTczYzc3MzM0Y2FiNjEzMDIzNmI3ZjU0NzM0Zjk4ZmU0ZThlZiBsZWdhY3ktdHJ1bmsKKzMxMzMgNDY1N2Y3Yzk4MGU4NTlmNTkyMTQ5OWQ2NTg2ZmEzZWM3ODRiNDI2NyBsZWdhY3ktdHJ1bmsKKzMxMzQgZjY3MTkzOGRmZGUyZTUzMjhhYTgwOGU3NDhhMDFkYWRiMTUxY2RhYyBsZWdhY3ktdHJ1bmsKKzMxMzUgN2IzN2I1ZTcxNDkzYTM2NzE4ZjU1MDM1NGVjZDlhNjM1ZTBkY2U5NCBsZWdhY3ktdHJ1bmsKKzMxMzYgMzBhMjkwMjU3YzMxZDBiMDhkMTcyODY1MmQxNGQ2ZGU1MzE1MmQ2NSBsZWdhY3ktdHJ1bmsKKzMxMzcgYzljMDMyODM2OGE5ZTJiNjQzOTE2MDQzZmY1YjY1YzIyZjQ1YjBiZiBsZWdhY3ktdHJ1bmsKKzMxMzggYWRiYWM1ODkzZjljNjBkZmIxNzNhMmY2NTAxNzY0NTZkZWNiZmJkMiBsZWdhY3ktdHJ1bmsKKzMxMzkgMzFiMDE4YmRhN2UyZDNmNTAwZDlmYzc0OGU0YTliZTE1OWIxZTlmMSBsZWdhY3ktdHJ1bmsKKzMxNDAgNTc2ZGMxNGEyNDAwOTcxMmVjYjEwNjNjOTM4NjRhYjdmM2FmYzM1MSBsZWdhY3ktdHJ1bmsKKzMxNDEgMTNjOTllYWYzMmE4YzQ1ZmM5Mzk4MTliYTAxOGM0YjE5NDNiNTY2MCBsZWdhY3ktdHJ1bmsKKzMxNDIgM2M1NWU2MTJhNmZjYzFkN2VjNDE5MWVlMDQwZTkzNjZhNzJlMWJjNyBsZWdhY3ktdHJ1bmsKKzMxNDMgZmZlMmZiYzU4M2RlY2Q3OTE5ODVlMjYzZmU5NzliZThmNTM4ZDlhZSBsZWdhY3ktdHJ1bmsKKzMxNDQgOWYxZGI1NTZmZmJjMjhlYTNkYWRkMmQ2YTMxOTczOTgyYWUxMDhjNiBsZWdhY3ktdHJ1bmsKKzMxNDUgZmJjYjhkMGJkNDVlMDMyMWVjOWQ1NGQ1YWZhZGRkNzg3M2NhODBhZiBsZWdhY3ktdHJ1bmsKKzMxNDYgYjA0NWU2OGJiY2RkNTRkNGI0NWUzYzA3M2QwMjgyNzI2YTNmZTI4OSBsZWdhY3ktdHJ1bmsKKzMxNDcgODdhZWQ1MTYwMTYxNzZiNGE0MDAyNTc5MDJhNTk3OTI2NWM4NjlmZSBsZWdhY3ktdHJ1bmsKKzMxNDggNWNjN2EzY2Q1NTdiNjQ5Mzc3NmEyMmFiNTMzM2I4ZDAyMDBiMTcxMyBsZWdhY3ktdHJ1bmsKKzMxNDkgMmEwNzQ2ZDUyNDc4YTcyZWFkM2QxZGNiNjA3NTdiMDE2MDAzNTYxNiBsZWdhY3ktdHJ1bmsKKzMxNTAgMjRjOThiNjBkZDc0NjViZTQwYjAzN2E2NmM1YzVhZjU4MjE4Zjk5ZSBsZWdhY3ktdHJ1bmsKKzMxNTEgMTk3YTJjZjNhNjYyYzZiMWM3MDJiNzMxMDAxNzAyZDJlZGJkMDZhYyBsZWdhY3ktdHJ1bmsKKzMxNTIgNzdhY2E2OTY2YjlkMDFiNWExMzRmMGZjOTkzODY3NzVlNjVlZTZmNiBsZWdhY3ktdHJ1bmsKKzMxNTMgYTllYjdhMGQ0MDAyMTQxZmU3MjU0ZDVlY2UyYzUzM2NhNjVlNTVlMiBsZWdhY3ktdHJ1bmsKKzMxNTQgN2Y4MGYzMzZiZTdmODJhYmVjZDQ1ZDc4OGI4YjJiZDFiNmQ1MmMwYyBsZWdhY3ktdHJ1bmsKKzMxNTUgNDhjNjM3ZmIxNTBmMzI4OTgxNmYxZmQzN2M3YWFhOGUzOGU0MDA3MCBsZWdhY3ktdHJ1bmsKKzMxNTYgN2NlMTk3NWYxMWE5MGYxMjQxY2NiMzFlYmM1MjMyNWIxMDYzYjA4ZiBsZWdhY3ktdHJ1bmsKKzMxNTcgZjRkYjQwNjNlYzg4NmVkMzlhZWViMTY0ZTQ2NjAxYTZkYjQyOTAxOCBsZWdhY3ktdHJ1bmsKKzMxNTggZjAyNWVlZjkzMTMwZDMyNTkyNzU3NGYwOTdkNTY4MWMyMmI2OTBlYyBsZWdhY3ktdHJ1bmsKKzMxNTkgZmZiMDNjZWJmM2Y0NTVlNDI2ZTQyNWFmZTMyNjY0ODJjYjdhOGQyOCBsZWdhY3ktdHJ1bmsKKzMxNjAgMGJlMWE1ZGI3Nzg0NzRhMGU1Y2ZmN2ZhZDEyOTFiZDZkYmFhZGIxNiBsZWdhY3ktdHJ1bmsKKzMxNjEgMDliNDg2MDQ4NTVmNGRkM2YzNzczZDJlZjI0MWFhZGEwZTBjNTEwOSBsZWdhY3ktdHJ1bmsKKzMxNjIgZGViZmNiOWE3ZTA4YTY0NzQzODlkMmY5YTZlYzkwYjFkMTY1Yjc2YiBsZWdhY3ktdHJ1bmsKKzMxNjMgNjc3NDEwN2M2NDdkYzU5YzYwNGRhYTcwYzRiMWFiZTdiYzlkNTVmMSBsZWdhY3ktdHJ1bmsKKzMxNjQgNTA2N2YyZDM4ZTE0M2ZiMjMyNTg1MTY1MjQ1NDQ4NjYyOWJjZjY1NyBsZWdhY3ktdHJ1bmsKKzMxNjUgMGNlNDA0ZTQxMzljNWI2NTExOTBjODRhMmU4MWQ0NWM2ZGRiMmE5ZiBsZWdhY3ktdHJ1bmsKKzMxNjYgMTdkYjA1OWIyOWJhY2FiMzFkZDkwMWM5NjA2NWFlNDVhNmNlMDdmZSBsZWdhY3ktdHJ1bmsKKzMxNjcgNWQ3MTQyZWEwMWI3ZGIwZjE3ODA2NjRlNjljODhhZGM1M2EyMTQwYiBsZWdhY3ktdHJ1bmsKKzMxNjggYjMzMjI4ZTNjMmMyN2VkOTIzMTVlMzU0ZmI4MDViNTZlZTQ1NzhmYiBsZWdhY3ktdHJ1bmsKKzMxNjkgOTAzMDcxMzc3ZDI5MmU1OTkyNDBkOTNlYmJiMTU2MTlhMGY3ZDVkNSBsZWdhY3ktdHJ1bmsKKzMxNzAgMDRhOGE4OWM5MmViNzBlMTIxMzg2MDJhZDU0NzRlNjE3ZDM5NzY3ZiBsZWdhY3ktdHJ1bmsKKzMxNzEgZmRiZWFlMmQ2ZTY3MWUyMTVhODUxZTZmZTdkZGMzYzM4NGJhZjAyYSBsZWdhY3ktdHJ1bmsKKzMxNzIgMDlkMjcxZWYzYjgyNDA0Mjc5MDI4OWE5NWFiN2FlZjgyMTNkM2VhMiBsZWdhY3ktdHJ1bmsKKzMxNzMgNmMxZmQwNTEwZDYxYmNkMTcwOGUxOTJlNWE4YzNhYzM4OTRjZWU1ZCBsZWdhY3ktdHJ1bmsKKzMxNzQgOTI2NzhiNTA1N2M2NTU2Y2U1NDQ1NmU1MDU0MGIxNWI3NWE3YWEwYyBsZWdhY3ktdHJ1bmsKKzMxNzUgODA2Njg5YjkzNTU4Zjk1NmY3MWU2MDlmMjMyYzFlMDJmZGM1NDgzNCBsZWdhY3ktdHJ1bmsKKzMxNzYgYTFjZTVhOTQ5ODI4ZDVjMmJmMTU1NGY4MDBkM2FkN2IxMmZjODcyMyBsZWdhY3ktdHJ1bmsKKzMxNzcgOTZhY2IzNWJiOTJiYjg5MWQ5YWMwZTE4MjIxZTE5ODUwMTA2YzBhMiBsZWdhY3ktdHJ1bmsKKzMxNzggZjNkNWUyYzNiOWEzYTUzMWY3Y2U3MmViZjRjMzkxMGI5YjFiYTFiNyBsZWdhY3ktdHJ1bmsKKzMxNzkgYTQxZTNiYTViNDdkOTZmYmI3ZDkyMWQ1NGFkYmYxZGQ5NzM1MDBlMCBsZWdhY3ktdHJ1bmsKKzMxODAgY2I3ZWY5YmQ5ZWRlYzM3OWE1Mzg2NDBkOWQzYjNlNzM2Nzc0OWUxYyBsZWdhY3ktdHJ1bmsKKzMxODEgMzk0NWYzNzEyMzU0OTAxYmQ3Njg5YWE5M2Q1Y2JhYzFlMGUyZDE2MiBsZWdhY3ktdHJ1bmsKKzMxODIgYTNlNzY4ZWE4MDJhYjkwN2YwMTEwMTdhZTFiZWZmNWUxN2E2NmI0ZSBsZWdhY3ktdHJ1bmsKKzMxODMgNzQ0MmIyMGM0M2ZkZmNjYzFhMzk5NzcwNTM3M2I5YTFkNTEzODRiNSBsZWdhY3ktdHJ1bmsKKzMxODQgMGQ3YzgyMzY2NzA0NTAwNTI3YzQ1NzM3ZDNjMzJjM2QxY2FlMTM2MCBsZWdhY3ktdHJ1bmsKKzMxODUgOWI1NjZhYzM4YzJiODQzNDFjODQ1MzAyNTAzN2M3ZjEyOWExYjViYyBsZWdhY3ktdHJ1bmsKKzMxODYgOTRhYjY3NjFhZmUyYzRlZjJkNzA1YzdjZTlhMWQzMTFjZmU4ZmFjMiBsZWdhY3ktdHJ1bmsKKzMxODcgN2I0ZjI4MzNmZDkwMmJjNTU4YTIxYmExY2ExODRiNjFiODNhZTUxNyBsZWdhY3ktdHJ1bmsKKzMxODggZjk5MzE5N2MzYTQ3NmU0OWMzN2UzZDliNDQ2NTYzNDQ4MDdiOTE3OSBsZWdhY3ktdHJ1bmsKKzMxODkgNTZkNjNjYWJkYmE3ZWMwODU1ZmUyNDBkMWE1NGNhMmQ2Y2NhMThhMSBsZWdhY3ktdHJ1bmsKKzMxOTAgNTEzOTQwZWI0ZDdiNjk5MWIxNTU2ZmQ5N2JmY2JhYmJiZjlkZDVlNCBsZWdhY3ktdHJ1bmsKKzMxOTEgZWQ0NTZlOTFkOTVhZTg1NDY3NDU5OWU5YjYzMzM5YmI5NmMxYTZiOSBsZWdhY3ktdHJ1bmsKKzMxOTIgMmY5ODA1Yzk2M2U4NTM2NDgwN2I4ZWExN2ViYjNjZjM0MWQyYWVkNCBsZWdhY3ktdHJ1bmsKKzMxOTMgOWYwZmIxMTRjMWU1NGNlNTYzZTU0MzMwZmQ3ZDE4YzA1ZGY0Y2VmNyBsZWdhY3ktdHJ1bmsKKzMxOTQgN2ExMWE3MGY3ZjQ0ZGNjZDQyZWRkMWQ5YjI5NmY4NzUyM2NiYTE4MiBsZWdhY3ktdHJ1bmsKKzMxOTUgNDMyZmU3ZjA4MzdjNGIyNWE3NGM0MmZhNGJlMzViNTJmOTU1MmM4NiBsZWdhY3ktdHJ1bmsKKzMxOTYgZmJiODQwZjY0YmY4OTU2N2NhNmM5M2JjMGU1MGQ1ZWFlNWRmMWRmNSBsZWdhY3ktdHJ1bmsKKzMxOTcgYmJkMDE5OGVhZTViZjE4ZmFhYzI3NGM2N2UyNTM0Y2RkN2U4M2E0ZSBsZWdhY3ktdHJ1bmsKKzMxOTggNWZiM2Y3M2E2MjdmY2U1OWVkMGUxOGMzMGUxZWVhNmE3YWQ4ZmNkOCBsZWdhY3ktdHJ1bmsKKzMxOTkgYmZmZWZiZmNlYjYwNTQzYzM0OGE2ZmI5OTg0MWI4ZWUzYzlhN2QyNSBsZWdhY3ktdHJ1bmsKKzMyMDAgNTE2YjVhMTZhYzc3MThkNmUxN2RhMjFhMDZlZjM0M2QzYjU2OWY3OSBsZWdhY3ktdHJ1bmsKKzMyMDEgYjAwNDM4ZjI2NWVkOGY5NjIyZGFhZTNhNmUwYTMyYWFkNjYzNDkwNCBsZWdhY3ktdHJ1bmsKKzMyMDIgNmFhMGVlMTRhYzJlZDYwNmEwZThiYzhhNjQ2MDQ2OTgwYmI0NDlhMyBsZWdhY3ktdHJ1bmsKKzMyMDMgMGVlNTlhMTRlNTQyMWZjOWI0MzIyNDIwZTA3NTZhMTNhYjM1ZTcwOCBsZWdhY3ktdHJ1bmsKKzMyMDQgM2RhYzIwNGI3NGZhZmY5MzdmMTA1YzgyNDdjYzFlMzI4NWRlMWUwNSBsZWdhY3ktdHJ1bmsKKzMyMDUgNThmNzQ4ZjU4ZGY1ODRiYjI2OTZlNTk4ZmJjOTJjODFmNzdlYTQ4YyBsZWdhY3ktdHJ1bmsKKzMyMDYgOGYzYTI1NDA5OTVhMTVlMGUxN2RlODliNzczYzc5NzE2NzA0OTc5MiBsZWdhY3ktdHJ1bmsKKzMyMDcgYzcyZWUyOWNjY2QwMThmZDczNzJmNmJlNDEyNDg2OTI2M2MzNzE5ZSBsZWdhY3ktdHJ1bmsKKzMyMDggMTBmMTBkNDU0MmZhZWQ4NTQyZTZiNTZkZmE5MTgxYWVhNTJiNmNkMSBsZWdhY3ktdHJ1bmsKKzMyMDkgZDY4MDhlYzZlZGM3MzZlNjM0NTRjM2E1YjdjNzlmNjFkZGVlNThhMCBsZWdhY3ktdHJ1bmsKKzMyMTAgNmI1YTM0ZGIyMWZlMTczMzY4MmFlNDdmODI0YmY3M2NiOGU4MTRjNiBsZWdhY3ktdHJ1bmsKKzMyMTEgYzFlYmZkZTM0MWEzZWNjOWE5OTUwZWZkM2U2MjkzNzQ1NWM2NTM5ZiBsZWdhY3ktdHJ1bmsKKzMyMTIgMmVkNTExMTcxODA5ODM4MjdiMTkxMWNiODY0NDg4OTQ3MzNmODhlMSBsZWdhY3ktdHJ1bmsKKzMyMTMgZjQ5ZDIzMTE3NzZiYjkzZGM5ZDg1ZWNlOTk4OTI0OWZjNjE2YjI4ZiBsZWdhY3ktdHJ1bmsKKzMyMTQgZjU0ZTY0YzhiOWI3MGJiOWIwM2QzMGNmMjhhMWQ4MzQ1MjkzYWY2MyBsZWdhY3ktdHJ1bmsKKzMyMTUgNjUwOGVhMzJjNmIwOTk5OWZiNGIxZjM1Y2RmODdmZjkyNTI1NDI4ZCBsZWdhY3ktdHJ1bmsKKzMyMTYgYzk1NDZhMjExOGYwNGI2YjM2NTA3YmIzNTUzMWI0NjU3NjIxODc2OCBsZWdhY3ktdHJ1bmsKKzMyMTggMzE2Y2U2NzdjNmIyMGE0YzkwYTI4NmQ3OTAwM2NiMjI5N2ZkZjRhYiBsZWdhY3ktdHJ1bmsKKzMyMTkgNmFiMjA3YTU1ZmNhMzQ3N2Y0NjEwYmRjYWE5ODIyNzBhMGJiYWY5MiBsZWdhY3ktdHJ1bmsKKzMyMjAgOWJmNzVlNGQ5YWVjM2VhYjNkYmEwNTM1NjI4OWRkNDYwYTY4NTdhNSBsZWdhY3ktdHJ1bmsKKzMyMjEgZTY2NDJhNTM1ZGI1ZmMxNmMwYWZlOWIxNDY1OTYwNmMxNjhmOTA3NiBsZWdhY3ktdHJ1bmsKKzMyMjIgZmUxOTI2YjlkZmZhNzMxMjU0ODhkZWQxYzRmZGVkOThjZTliZGJjOCBsZWdhY3ktdHJ1bmsKKzMyMjMgNTkyYmFjNmFkZmZjMjU2NjYyYjQ5ZGFlYzQ4MWUxYjhiNWRiOWY3MSBsZWdhY3ktdHJ1bmsKKzMyMjQgNGY2NjQxZGVhNjQ1ODk3OGQwMjEwMThkZDJhMmI4ODk4N2UxNmZmOCBsZWdhY3ktdHJ1bmsKKzMyMjUgYTNmYTIyOTc3NWMxNmQzYTMyYjlmYjU1YTRmMTNkNDBkZGZkNTA4NyBsZWdhY3ktdHJ1bmsKKzMyMjYgMGRhMTZlODE0ODJjZjMzZDBjYTliOGE0OGQyMzZjNjc0MDZlMWM5YSBsZWdhY3ktdHJ1bmsKKzMyMjcgYWFhM2JjY2IxNDNhYWYxYjc3MTU1YzdhMTliNjJiYTJiMTU2N2RjOCBsZWdhY3ktdHJ1bmsKKzMyMjggNmJlOTcwMzljYzExZjYyNGEwYmEyY2E2NjNhM2ViYmExZmRhNWFmMyBsZWdhY3ktdHJ1bmsKKzMyMjkgYjVkOTVhY2ZkM2VlMzIzNTgzOWM3MTM2YjI3YmZjZjdiMWFlYzU5ZCBsZWdhY3ktdHJ1bmsKKzMyMzAgNjk2YjkxMzI3ZWEyMzhlNTEzMTRkNDAzYTFiMDIxYTMxYmMwZjYwOCBsZWdhY3ktdHJ1bmsKKzMyMzEgMzkzZDU0ZWNkNDNiNWI5NmQ0MWVhNDg0NmY4MDU2ZWEyNThhMjJmMyBsZWdhY3ktdHJ1bmsKKzMyMzIgNzE2MmY1YWM4OTlhYTkyYTY0YmM0OWI0NDVhZmQ3YzEyZDZjNTg4MSBsZWdhY3ktdHJ1bmsKKzMyMzMgMDAxNjQ1N2JkOTdhODVhNWE2YzVjMTEzODRmOGYzZmFmYmU1MzUwZiBsZWdhY3ktdHJ1bmsKKzMyMzQgMWE1NGQzMjBmMjk2NGFhNzg1YzIwZDdlM2RlMDJmOTI3YWFjYTY3ZCBsZWdhY3ktdHJ1bmsKKzMyMzUgMjI5MWRhMDVmMTc4NGJmYjg1MTRkZTU2YmQ5MzkxMDgzZDEyMGMwYyBsZWdhY3ktdHJ1bmsKKzMyMzYgNzY3ZWY3MzcwZDMzYzRkOTA5MzhjNTUwZDMzY2FkNTVlYjUyODQzOSBsZWdhY3ktdHJ1bmsKKzMyMzcgMmMwNDMyZmNjMjcwNzlkMDBlZWYyMDc2YzA1NjMyOTZkYjc5MzEwOSBsZWdhY3ktdHJ1bmsKKzMyMzggNGRjMzgyZmY2ZmM3NGQzNTBkNjBjNjExNGQ1ZTY2ODNiYThjMWExZSBsZWdhY3ktdHJ1bmsKKzMyMzkgOThjYjZhMTI1MmNiNjViMzNmY2Y4MjA4ZjA0MGIyMmJiZjYxMzEyZSBsZWdhY3ktdHJ1bmsKKzMyNDAgNmFjOTE2ZjhmODYyNjhkMDgwY2U1ZWMwMDkxZDUyZDhjOWFhNzNmYSBsZWdhY3ktdHJ1bmsKKzMyNDEgZmViNWIyMzRiMGI1ZmZiMjQzNjhiNzQyNmI0NzkyYjlmMjcxNGIwMSBsZWdhY3ktdHJ1bmsKKzMyNDIgMjQ1MDAzYzAwNmE2MzdmNGYxZDA4Y2YzOTc3ZWMxN2Q4MjYyMWU2ZiBsZWdhY3ktdHJ1bmsKKzMyNDMgZTRjNmEwZGQ1YzJiMjdhN2E1ZmU3ODUzMjY1ZWJjZDA1YjMwYWM1NiBsZWdhY3ktdHJ1bmsKKzMyNDQgNzY1N2E3NTA5NGYxYzIwODJhMTJlZDU2NTkzYTgzN2IzNmQwNWUxOCBsZWdhY3ktdHJ1bmsKKzMyNDUgMzFkZjU4ZmE5OGNjNTU5MWJjMWU2MjExMWMzMjBmYWMxMTE5NmNlMCBsZWdhY3ktdHJ1bmsKKzMyNDYgMDhkM2MzNzAxOTNkZjdmNjhkYmY0NmIzNTQyZmRmOGU0OGM5ZWRkNyBsZWdhY3ktdHJ1bmsKKzMyNDcgZjA4NmQ3YjQ5M2I0ZGZjZmExYzVhN2QwM2RjM2Q4MzdlNjIxNTliMCBsZWdhY3ktdHJ1bmsKKzMyNDggYjc1NWE0NjIwMWY2ZTc1Yzc4ZDRkZjhjYWM2MzA2NjIyYTg4Nzg5ZiBsZWdhY3ktdHJ1bmsKKzMyNDkgOTY1YWEzYjUzYTlkODZhNWEzY2M2YzZkMmU2ZDljZGYwODRlN2E2OCBsZWdhY3ktdHJ1bmsKKzMyNTAgZGI4MTdmM2ExYzY1NDQ4YTU1NWY2MjczYmFmODA0NGI0NDNmNzY4YyBsZWdhY3ktdHJ1bmsKKzMyNTEgYjllNGY3MzIxZTI4ZGNmYjM4MmNhMzM2ODAxY2JmMjQ0NDMwNDNhYyBsZWdhY3ktdHJ1bmsKKzMyNTIgMzU4MjQ4OTlhYWNmODIwYWU5MGM5YTFhNzg2ZTc5MjA5ZGRlMTk1NiBsZWdhY3ktdHJ1bmsKKzMyNTMgOGQ2MmM5MDU2ZmUxNTQ0NDMwNzZhYmM2YzVkNWE4MDc4Y2MwYTdkYSBsZWdhY3ktdHJ1bmsKKzMyNTQgYWI5MjY1MzRhMTUyNzQ5MDhlZTJhNTA5MzIxZmEwOTJjMGNmZmZkMCBsZWdhY3ktdHJ1bmsKKzMyNTUgNmQ1N2RjYjRmYWFkY2JlOTMzN2M5MTA5MzJhZjY5ZjhkOWRlZTlmYiBsZWdhY3ktdHJ1bmsKKzMyNTYgODJjNTVlYTkwNjllNWI1NDhiN2MxMzYwM2NmOTExZWU3YThlNjJkYiBsZWdhY3ktdHJ1bmsKKzMyNTcgYTQzNzZhOTk3ZmIxOGI5Yjk2ZTJiNTdhNzgxYjg0M2E3ZmEwMDBjZCBsZWdhY3ktdHJ1bmsKKzMyNTggZDJhZjZiZGNiNmQwYTI0NDM3NjcyYmZhNjM3MGUyYzcxNmVkZmJiMyBsZWdhY3ktdHJ1bmsKKzMyNTkgYWMwODI4ZWY2OGYyOWJiZDExNDI1ZTNjYTA3MjRhMzYyNmQyOGRmNiBsZWdhY3ktdHJ1bmsKKzMyNjAgY2U3MTg0NTdiMTcyNjU3NzExN2EwMDhlOGYwYzI1NmRjMjIyODBmYyBsZWdhY3ktdHJ1bmsKKzMyNjEgYzY0NGJjNjI2MDk4YWQ3YmYzM2E1ODIxZTc0NTVlNzRkYWY2MGE3YyBsZWdhY3ktdHJ1bmsKKzMyNjIgYzlkMmY2YmRhYTY5YmQ0ZjMyMzJmZThmZjVlNzUwMjA1NDhiOWVkMSBsZWdhY3ktdHJ1bmsKKzMyNjMgM2RkN2I4MjU1NjE5YWE4MjQ0ZGIzNmJjZDlmYWNjNjA1N2NmMWZjZSBsZWdhY3ktdHJ1bmsKKzMyNjQgZmYxODk5ZGNkYTA1OWRkY2IzMGZlY2NiNzAzNWIyZWVlZjliOTVhOCBsZWdhY3ktdHJ1bmsKKzMyNjUgYjc1N2U1OGJjNTI1YzM5ODRlNzc5NzYwOGEyOTgxNTY0MWE0OTNkZSBsZWdhY3ktdHJ1bmsKKzMyNjYgMzBjMjZjZjU0ODA0OTY3MzUyOGU0Y2Q2Mzg3ODkwOWFlYWIwYjMxOCBsZWdhY3ktdHJ1bmsKKzMyNjcgZmNhYWZkNWVjNjk1NjNjMGI3ZDA4MGZkNjdlMTdmZmI3OGQ5YmJkYiBsZWdhY3ktdHJ1bmsKKzMyNjggNDE1NGU5OGQxNDc4YjkyZGZjNDBkODc3NmNmMjFhZWY4NjRhZWRhYSBsZWdhY3ktdHJ1bmsKKzMyNjkgNmYyYTZlZmQwMTllNDVmODA3NTFjZTJiZDBkNzBkOGI0NTI5YTdkYiBsZWdhY3ktdHJ1bmsKKzMyNzAgOGVhNTQ2MDQ3ZjAxMTYzMDNhODU1ZjhlNzZkMDgwNTM2NGEzNmZmNiBsZWdhY3ktdHJ1bmsKKzMyNzEgOTFjMTg2YTIxNmU3MDk4YzgzM2UxMTQxZTI2MjIzNDQzNjZiMmNhNiBsZWdhY3ktdHJ1bmsKKzMyNzIgN2Y4ZGRjZTg4NDk2MWQ0YjkzNTI3MDE1MjBiZGQ3ZWY1ZjU2Y2Y1NyBsZWdhY3ktdHJ1bmsKKzMyNzMgZTJmODA3N2E5MjZlZWMyYjIyZGU3NGE4YzAyMTMzMjljNjBjMmEyNiBsZWdhY3ktdHJ1bmsKKzMyNzQgMWQwNmIxNDk5ZWI5MzJmMzdhMmQ0Zjg3MDBjMmRlODNiNWI5NmYzMCBsZWdhY3ktdHJ1bmsKKzMyNzUgZGU3MGQ3N2IzZWVkNzRlMGMxMGViYTI4NDVhYjU1OThiZjMwMzE3ZSBsZWdhY3ktdHJ1bmsKKzMyNzYgODM5OWU5YWEwM2U3ZmUyZTU2NzRhYTM3YmZiYzliZDU1MWQ2YmZhNiBsZWdhY3ktdHJ1bmsKKzMyNzcgNDZkMzFhNjQ5Y2U2NjczMWFjZjcxYTlmMzMwMTMzMWViMDZhMjI0NCBsZWdhY3ktdHJ1bmsKKzMyNzggYzBhZWQ1ZWUxMTBiYzdkM2IxZTE2OTlmMjBkZWI5NDA4N2FkMmE3NiBsZWdhY3ktdHJ1bmsKKzMyNzkgYzFlZTYwYmQ1ZGU0NWFhN2FmMDQ2ZmExZjk2MjFjMTEzZDI1NWNkMiBsZWdhY3ktdHJ1bmsKKzMyODAgYzI2ZjViZWMzNDM4YWQ5YWM5NjVlYWQzYzFjNzNmMzI3MzhlNzdjYyBsZWdhY3ktdHJ1bmsKKzMyODEgMWEwYmU2ZTM2ODE4Yjg5MTJhM2ZmYTQyODRjZmRkYjYxMTg4OTFhNyBsZWdhY3ktdHJ1bmsKKzMyODIgNTY2MzYzOTU3MjRkNDk0NDljZDEzZGY5NTU0OThjZGYzMWIyZGI2ZiBsZWdhY3ktdHJ1bmsKKzMyODMgZmY2ZTIxNzMwOTlhZTNjODVjZjgxZjIyYWZkMWUxYzIyYjM1NTgzOSBsZWdhY3ktdHJ1bmsKKzMyODQgNWU2NWIxMGRkMjRkMzljZDJhY2ZjZjc2YTc5ZDRmMWIxZWIyYTMzNCBsZWdhY3ktdHJ1bmsKKzMyODUgNzViNDcyYWM1YjdiZTMyZmQzNjcwYWU2MDNlM2IwOWE4YjZhMjU1OCBsZWdhY3ktdHJ1bmsKKzMyODYgOTRkMTIxMTY3NTZhYzc1YTkyODdlNTZjZWE1OWZiMjI1NGVkYjExZiBsZWdhY3ktdHJ1bmsKKzMyODcgMDkxNDc0YzA4MzFhN2EyNzJhMmE3NzMwYjk1ZmEwNjI5YWIzNGUzNiBsZWdhY3ktdHJ1bmsKKzMyODggZGQ3MGEzYWFkMjY2NWVhYmI1MmM4YTUzNmIwY2Q2OWM1MzViMmZiZCBsZWdhY3ktdHJ1bmsKKzMyODkgMGNjYjM1NmU4OGIxMjZmNTNkYzNjMGIzOGIwZGFhYzA2ZDBiZmVmOSBsZWdhY3ktdHJ1bmsKKzMyOTAgNDFmYmQ5MmJmMWFkODAxYTEwOWI3MjljMDlmZTcwZWM5NzFjODA3ZSBsZWdhY3ktdHJ1bmsKKzMyOTEgYTdiYTE5MTIwZjU0NzQ5ZjRmOTBiMjUxOTE1YmIyZGQ4N2NiNjk4YSBsZWdhY3ktdHJ1bmsKKzMyOTIgYWE5ZWQzYjllZGExY2EzNGFlNzE2YjUyMDUwYjBhOGM3MTcwZjFlZCBsZWdhY3ktdHJ1bmsKKzMyOTMgYjZjZGRmZDM0OGJhMWE1ODVhZTg3MzdkOTM0NDBlZjE0ZTU2ZWViNCBsZWdhY3ktdHJ1bmsKKzMyOTQgM2U5ZWM4NWFjNDliNmZmNTVhZjYwZDE4ODQ0Nzk5YTViNGI3NWEzZiBsZWdhY3ktdHJ1bmsKKzMyOTUgZTUzYmFmOWI0Yjk1NTFlNTU4OGMyZmFmNDg5MWI1NDNkYWZkYjY2NyBsZWdhY3ktdHJ1bmsKKzMyOTYgNjQ2MWRhYzlhOWYyOTc3N2IwZDdmNDhkYTllODg1YWQ4OWU1MGYyYSBsZWdhY3ktdHJ1bmsKKzMyOTcgOWFkZDBlM2U4MDRhMDU5ODdkNGI4YTY2NzEyOTI4OWI4ZDIxNDc5YSBsZWdhY3ktdHJ1bmsKKzMyOTggNTExMmQ0MzIxMjZiMTc1NzA0NzZmM2NlZTUzZWJjYmM1NjZlYTBkZSBsZWdhY3ktdHJ1bmsKKzMyOTkgNjIzMWUxYjViMjJiN2JlYWQyMDAxZGMyNzMzODhmZDFkNTJkYTVjZiBsZWdhY3ktdHJ1bmsKKzMzMDAgZTM5MzA5YjlhMGFhNmQxNjZiYzA5ZGQ5MjQ3NmU4YWRlMWJkYTNiOSBsZWdhY3ktdHJ1bmsKKzMzMDEgYjMzODI2MmNkMDgwN2M0NjQ0ZjhmMDkwNTZiODAxNGM5Mjc4MzllNCBsZWdhY3ktdHJ1bmsKKzMzMDIgOTUwZjAxMTMxNDAzZTE1OGUzNTQzMmJkODk1MTIwYmUzOGJjNGM1NiBsZWdhY3ktdHJ1bmsKKzMzMDMgZjQ5ZTg2MmZlZWM0ZDkxNzhkNDI0MmJlNTJjMDI2YThjNWJmZGMyOSBsZWdhY3ktdHJ1bmsKKzMzMDQgYmU4OTEyNTY0M2YyNWNmOTAxNjBhMjlmMTRhZmY2ZjViZWVhYmNmYyBsZWdhY3ktdHJ1bmsKKzMzMDUgNTRlYjJjZjI2OTdlNmU1MzRlNTI4MjZkMzViYTU5NGE4MzkwMWUzNiBsZWdhY3ktdHJ1bmsKKzMzMDYgZTA4NzcyMjZkNjEzOGUwZWQ0OTEzMGI0NzMyZTQzNmQzODQ2YmM5ZCBsZWdhY3ktdHJ1bmsKKzMzMDcgZTVjZTlkMDQwOGQwZTU2ZjdmNDE2ODdkNDg1MGFlZTZmMzY4ZWU2ZCBsZWdhY3ktdHJ1bmsKKzMzMDggZjIwZGUxMzIyNjkyMGQ5MzhhNzkxMTEwYTZmNDdjYzM0ZTY3MWM2OSBsZWdhY3ktdHJ1bmsKKzMzMDkgYmI3NjY1YzQ0ODIyNmZiOTgyMTJlYzU2ZGFhZDg4MGVkODkxMGYzYiBsZWdhY3ktdHJ1bmsKKzMzMTAgYTQxNjQ5M2QzYTRjMmYzYjI0NzFmYjBiOTBkODhkNmM2M2M5NzMwMiBsZWdhY3ktdHJ1bmsKKzMzMTEgM2M2YTUyZDI1NDNkYzJkMDUyYjA1Y2NkMWIzZDAyNzk2NTcxYzJjNSBsZWdhY3ktdHJ1bmsKKzMzMTIgZmE2MmZiMGU1NWIyZDg5YmZmZmY0NjgwNzI4YWFkM2MyOWQ1NjA0NSBsZWdhY3ktdHJ1bmsKKzMzMTMgYzcyZWNkYjMzYWY3NTc5MWJjNDk2YmViOGZjOTczYWRkNzBhYWZjZCBsZWdhY3ktdHJ1bmsKKzMzMTQgODQ2N2IxMTkzNTBiZWJjNjc4NGQ3Njk1NGZmNzI4N2Q2ZDhmZWFhNCBsZWdhY3ktdHJ1bmsKKzMzMTUgMTk0YWYwNGQzNDRiMDgwNmI5NGUwMTMyMmJiNmQwNmE2MDE0NWQyNiBsZWdhY3ktdHJ1bmsKKzMzMTYgNjVlNDE5OWE3OTgyZmIxOWFlMWVmMzJiNTdhYTE3ZGYzMTFhZTZhMiBsZWdhY3ktdHJ1bmsKKzMzMTcgZDQ0ODBjMDg0NDRkYzViNjM2NDZlZjA0ZDE4NDNkNmZjM2JjZjFkNCBsZWdhY3ktdHJ1bmsKKzMzMTggZTgyYWM0NTJkNTUxZGQ3Y2Y5NTIzYjdlMGNkMGEwYTMwYzg3NjJlOCBsZWdhY3ktdHJ1bmsKKzMzMTkgMjlkMmVmMGM5NGI5NTA0ZGE4ZjgwOTI1NjRjN2FiNmE5ODE4Mjg2NCBsZWdhY3ktdHJ1bmsKKzMzMjAgMjNlYjI3NzMxZDljYjMyYWQ5YTk0YjEyZWE2ODhlNDI0ZDc0ZmU5NSBsZWdhY3ktdHJ1bmsKKzMzMjEgZjBlYjc3YWJmMjQ0MzZiYmNkNzQ2YzkwMzM3MDY5NGQ3MjFhY2Y5YyBsZWdhY3ktdHJ1bmsKKzMzMjIgMTIwNTE4ZWYzNmUzM2E0N2MyOTRhYTllMTliNmY1ZmYwYjdkNjNiNyBsZWdhY3ktdHJ1bmsKKzMzMjMgZGVkZDQ0ZWI3MzViM2YxNjUxMmI0ZWNkZjY5M2VhYTgwZjZkNzlhZiBsZWdhY3ktdHJ1bmsKKzMzMjQgNTI0NDgyN2RkNDIzODE3YTgwYmE1NjI0MGI2ZTMxZWUxMTlkOGIzZCBsZWdhY3ktdHJ1bmsKKzMzMjUgOWI3ZjkwZjlmM2MxNTI5OTZlYmE2Y2U5NDBiMjNhYTc4MWNmYjkzZSBsZWdhY3ktdHJ1bmsKKzMzMjYgZmFjNjJiY2QzYmI4ZGUxY2NlM2Q2OWYzMWNlN2Y3OGEzZTNhMDY3MyBsZWdhY3ktdHJ1bmsKKzMzMjcgZWRkYzU0YjFkOWFiOGI2NzU5NzNjMDVmYzg0MzU2MTkwZjUzNGM0ZiBsZWdhY3ktdHJ1bmsKKzMzMjggZjA3ODRhZTFmZjVjYWNhZjg2NWRkNmYzYjE0ZTA1YzU1MmJlMDdlNyBsZWdhY3ktdHJ1bmsKKzMzMjkgZDk5MGMyYjhhMWU2ZDA5YjA0MDZkN2NiM2IzOTFkODlhZjYxYzlkYiBsZWdhY3ktdHJ1bmsKKzMzMzAgYTdjZjIwYzg0NWEzYTQ2ZTZjMzY1NTNiMTdmNTVjYzE1MTVlYzJmYyBsZWdhY3ktdHJ1bmsKKzMzMzEgYTQ3ZTBjOWJhYWQwMDgyNDljYjhkNWI3NmFlM2MxMDMyMzI5NzVlMiBsZWdhY3ktdHJ1bmsKKzMzMzIgYzAxYzk1ZWYxZmJkYTg4NGI0MDAyZjhhM2NiZTFjMWQzY2E2NDk5OCBsZWdhY3ktdHJ1bmsKKzMzMzMgNTc0NWU1NWYyZTI4MGYxMDk4NGJlODkyZjMxMjEwYjcxOWExZTk5ZCBsZWdhY3ktdHJ1bmsKKzMzMzQgYmI1NGZmNDEzNDhmODc5YmUxODNmMGE1ODVjZTdkYTg4NjI5NTllMSBsZWdhY3ktdHJ1bmsKKzMzMzUgOWMxYWU2MDdkMTM1MzgwNmVhYWJiN2NiMDE3Yzg2OTU3NWYyMmU3NCBsZWdhY3ktdHJ1bmsKKzMzMzYgZTcxYjY0N2ZhMzM1NmY1MGNmNGQyODU0ZDI2YTNkNWNlZGEzYWZjMiBsZWdhY3ktdHJ1bmsKKzMzMzcgOTU1MjEyZWQ1MmQzN2M3NDdmOTc2ZGUxNTcxNmMxMDk4YWJiNGQ0ZCBsZWdhY3ktdHJ1bmsKKzMzMzggODYwNGMzOTQ5ODA5ZDUxMzFmMmVkMzEwZDdlMDcxNWI0NDgzOGY0MSBsZWdhY3ktdHJ1bmsKKzMzMzkgNzE3ZWExNzY3NDMwYmFkYTgyMTkxMGYwMDhmMmYwYTcyYzY4ZDI3MSBsZWdhY3ktdHJ1bmsKKzMzNDAgMjcxNTRhMmI5MjQ0MDI3MDMwY2U4MzQ1ZWE4MzU1NGNmZGRhNmY1ZiBsZWdhY3ktdHJ1bmsKKzMzNDEgNTMzZTM2ZGUxZTRkZjYxOTVjNWZhNTdjZTVmNDg2YjliZWFlMTkzYyBsZWdhY3ktdHJ1bmsKKzMzNDIgZjliYmIwMTM4OGQ1YmYzY2I4ZTcxYWY0MTNkM2JhZWVjM2JjZWFkYyBsZWdhY3ktdHJ1bmsKKzMzNDMgOWFlNjVlZTA5NzM1ZDA3MjJhNjNkYjM4ODIyODJhZWQxOTcyYTM5NCBsZWdhY3ktdHJ1bmsKKzMzNDQgMWQ2Y2JlYjI3MDk2MjcyYTljZWQzODE1YWYxYTBjYjYxMTZkMjJkZiBsZWdhY3ktdHJ1bmsKKzMzNDUgOTUwY2QzN2ZjZGRjNTQ3N2RiY2IwOGNmMjI4YzdmODAwMTk5MWExZSBsZWdhY3ktdHJ1bmsKKzMzNDYgNjRjZjE5MWQyMWQwOGM5MzEyZjk0YTBlOGFmNTBkMWUzYzI3ZjAxNCBsZWdhY3ktdHJ1bmsKKzMzNDYgNjRjYzU0MzllMTBhNmZkZjk4NGVmZmFmMDE0MWU5NGZhNGNjMTAwNCBsZWdhY3ktdHJ1bmsKKzMzNDggY2Y4ZGRiMjllMjZlZGFmYWVhMGI1MGZiMmY4YjRhYjg1MjJlMTIzOSBsZWdhY3ktdHJ1bmsKKzMzNDkgMGVmZWY5Nzg1YTI1ZDdkOWFhZTI1ZWExMmEwMGFhODQxNmRhYzE5MSBsZWdhY3ktdHJ1bmsKKzMzNTAgOTQ3ZjhhMzQ3YzRmMTc4OWU4Yzg5MzdlMWQ1NWY0YTkzNzc4OTY1NSBsZWdhY3ktdHJ1bmsKKzMzNTEgNmEwNzdjMjkzOTg2YzBhZDc5NzFjYmY0Y2U2YzE4NDYwN2I4NmY2ZiBsZWdhY3ktdHJ1bmsKKzMzNTIgNTg0YzQxNDJjNTM3OWYzYTUzN2IyN2E5OTUzYzkwNjJlZjJjYWY1ZSBsZWdhY3ktdHJ1bmsKKzMzNTMgODQ3YzQ4MzU2MjhmYThmMTFiMzhmZDI4OWE3MTI5MjJlNDYwM2IzNyBsZWdhY3ktdHJ1bmsKKzMzNTQgZWE4ZDRjY2U3ODJiYmZhZGYwZTJjOTE1YzgyZGIyNjJmNDk3Y2ExZiBsZWdhY3ktdHJ1bmsKKzMzNTUgMzhmMDA1NGY0NGE3MWM2Zjc5MDFkNWJmMTA0NWU1MzQ5Y2U3MzQxNiBsZWdhY3ktdHJ1bmsKKzMzNTYgNzg0MjgyNDNmZWFhNzUyMDlkYTdmOTk2ZDgwNjg4YTVhODhkYTJmYyBsZWdhY3ktdHJ1bmsKKzMzNTcgYjdhZWU3OTlkYzcxNWFkMWI4NGZhZmFjMzVlYTc3NTVmOTA3N2IwMCBsZWdhY3ktdHJ1bmsKKzMzNTggMzEwNTMyMDE1YTdkMzU5YmZlNzc2MGE1NWFjNDM4YjRlZjEwODNiNCBsZWdhY3ktdHJ1bmsKKzMzNTkgZTEyMDkzNmEwYzg3Zjk1MTVjMTQwMThhYmJlNmVkMWExZDczNjFmMSBsZWdhY3ktdHJ1bmsKKzMzNjAgY2U2N2Q5MWFkZjVlN2UwNjVkYjM1YWEwZGZkYmQzNDU5MTI0ZmY3MyBsZWdhY3ktdHJ1bmsKKzMzNjEgNjc1YTAyODIwZDY2ZTE0MGUyYTU1ODNkZjYyOWU4MmFiZTc1NGY2NCBsZWdhY3ktdHJ1bmsKKzMzNjIgMjkzNzg5N2E3ZDhiMDM4NzkzNjA4NGY0MjRjNjlhYjVhMzEzYTI4ZiBsZWdhY3ktdHJ1bmsKKzMzNjMgNzE4ZjFkOWJjYjUwNGYyNTVjZjczNjgxOTcxMzVhOGFkZmQ0OTQ5NSBsZWdhY3ktdHJ1bmsKKzMzNjQgZTgyMjNkMGI3MmFjNTE5NjBiZjA5MzFlOTZjMDJhYzU3MWMxZDdiNSBsZWdhY3ktdHJ1bmsKKzMzNjUgMGQ3OTlkM2M0MDM2ZTdmOGIxNjk1MDM3YTNlNzI4MjcxNjViYjVjZiBsZWdhY3ktdHJ1bmsKKzMzNjYgZDAyMjIxZWJhYzJhZDdjOGIwOTE4ZDc5NjU4YWFkZGY2NWRlZDIxYiBsZWdhY3ktdHJ1bmsKKzMzNjcgODMxZDgyYWE0ZGQwODE4OWExOGYwMjAxMzc5NWU4YzNkMjViMTk0MSBsZWdhY3ktdHJ1bmsKKzMzNjggMzU3M2VmNDIxYmY0MTEwN2JmNzE5OWU1ZWFmMWIxYjQ5YzNjMTg4ZSBsZWdhY3ktdHJ1bmsKKzMzNjkgZWNmYmMyNDZlZWFhMTBjNDgzNDM1YzdiZDIyZjY4MDFiNjM1MTZhMiBsZWdhY3ktdHJ1bmsKKzMzNzAgM2QxZjcwODc5ZjAzMDQxNGJhZGQ5ODlkMjA1NWQyNTVjZTNhMDljMCBsZWdhY3ktdHJ1bmsKKzMzNzEgYjU2NGJkNGU1N2UxMzUzNDQ5NzAxOTU1NjE1OWQ1ZjQ3Y2JiNjk4OSBsZWdhY3ktdHJ1bmsKKzMzNzIgOWIxNGE0ZDg5MjA3M2M2MDg5ZDgyZWI5ZGNiZjQzOGM5MGViOGJjYyBsZWdhY3ktdHJ1bmsKKzMzNzMgOWZlNzgzY2E5NzZlMmY5MWFmZTc2MDYyMWM5OWY0MmM4OGVkM2E1YyBsZWdhY3ktdHJ1bmsKKzMzNzQgYmJlZjI0NzNlNTY4ZDI5Mjg3MTgxMGVjNTZiZjQzNTdjZmQwN2FmNCBsZWdhY3ktdHJ1bmsKKzMzNzUgNDA2ODYwZGZhYWM3OGI2MDgxNGE4ZTc2MjIxY2FhZWIwNmZjZmZiMSBsZWdhY3ktdHJ1bmsKKzMzNzYgNWE0MTA5NDQxZWFlMDA5NTEyNThiYzhhYzYwMTY5MmVhYmZiMDgxZCBsZWdhY3ktdHJ1bmsKKzMzNzcgZmE2Y2U3ZjUzYWE1MDE4YTkwZTkwNmZhYjI2ZGRiZjQ0NzBhOGE2ZiBsZWdhY3ktdHJ1bmsKKzMzNzggNDE2YThhODg2YTgyYWEyZDNmNTZlYTljZTVjMjM5ODRkNzljMDM4ZCBsZWdhY3ktdHJ1bmsKKzMzNzkgOWQ2Y2Y1MjliYjcxYTdmNGZlOTk3NTlkZDY3NzcwZmZjMDU1NWJiZCBsZWdhY3ktdHJ1bmsKKzMzODAgNDkyZjVlM2U2NDk1NTU4ZDU4YzhiOTZmZDVkODBjMzY3Y2E5ODEzYiBsZWdhY3ktdHJ1bmsKKzMzODEgMWQ3YTRlZDBjOTg1ZjVlZjgyMjM0YmY1ZmZjOTg0NTk4YzQwYjdmYyBsZWdhY3ktdHJ1bmsKKzMzODIgNTEyMjNjZTk1YTYxOTg2NjFjOWEyODMzMjA4Mzg0Yzk2OWMxMmVhNCBsZWdhY3ktdHJ1bmsKKzMzODMgNjRlYzdiZDJlODM3MzdhNzNmYzg4YjhiMzAzMTE5ZTBkYmM4MTBjMiBsZWdhY3ktdHJ1bmsKKzMzODQgODJmNGE2YTE5NjRkZWY2MWVkMDI0MTY3NTliMTIyN2Y0NDcxZWJmMiBsZWdhY3ktdHJ1bmsKKzMzODUgYWQ2ZDVjMWVmNWU2MWEyOTAwNmViNThmZmMyODg4MjBlZjE0YjMyYiBsZWdhY3ktdHJ1bmsKKzMzODYgY2U3YWU4ZjgxYjA2MTgyNDQxMzM4ZmI5MDY1ZWQ1YzMyZGE3MTdiNiBsZWdhY3ktdHJ1bmsKKzMzODcgNWFlNGE4Y2Y3OWVmMzNlYjVjMjk5NzMzZTM2OTA4MDM3ODZjMDRkNCBsZWdhY3ktdHJ1bmsKKzMzODggN2UyNzY1OWViMmQ5NjY5ODFiOWI5MmZlN2VhNzY5MzI3NjI5MDU0OCBsZWdhY3ktdHJ1bmsKKzMzODkgMjc1M2UyYzlhYTIxYzliNmFhODRlOTA1NjkyYjkwNmU5ZGQxYmQxZiBsZWdhY3ktdHJ1bmsKKzMzOTAgMDY1OWI2M2Q2MDQ0N2Q2MzM2ZWVkMmNhNjk5NDEzNzcyMmQwZmRkZSBsZWdhY3ktdHJ1bmsKKzMzOTEgMjAyNmVjMDBlZmRjZjQwYzc1Y2MwMzU5YzNjYWJmYjNiMmEzZGYyYiBsZWdhY3ktdHJ1bmsKKzMzOTIgZjAxOGQxZDBlOTFhNWRmNzdiNDE5OTIzZTllNzdlMmQwMDJiMTM3ZiBsZWdhY3ktdHJ1bmsKKzMzOTMgZGNlN2E0Y2JhYzExMmZlZTU4OWEyODgzN2MzMjI2MjJiNzZiOGNmYyBsZWdhY3ktdHJ1bmsKKzMzOTQgZTBmN2ZmODVmYTA2NTM4Mzc3MTQ0NWNkM2IxMGQ0ZWFmZmQ3NzFhZCBsZWdhY3ktdHJ1bmsKKzMzOTUgMjY4OGY5YmViZDlhNWE1Y2FhNmI1NDc1NWM5YzdlNGQ5YjZiNTYzYSBsZWdhY3ktdHJ1bmsKKzMzOTYgYWZjYmE4OGM2YWNiNzdkZWZkOGQ5Yjg3YzRhZmQwMmVhODkzODg5ZSBsZWdhY3ktdHJ1bmsKKzMzOTcgYjNlNmE0MzVjNDhmZTI3YmRjZmU4Yzk1NmJhNzBjZWZmNDAyNjgwYyBsZWdhY3ktdHJ1bmsKKzMzOTggNTg2YzkyOGM2NWQzNGRlOGI5N2U5MzAzNzBhMjViMTZjMGNmNzU3OCBsZWdhY3ktdHJ1bmsKKzMzOTkgODdlZDAwYTYyZDMxMDEzODUzYzVmM2QzMDgwNGQ2MzliOWY2ZTk3MiBsZWdhY3ktdHJ1bmsKKzM0MDAgNjgwNDA2YzQxNTM5MTZlYmI0ZDJiYjFmNDNiZTk4NzM4ZTY4OGUwZSBsZWdhY3ktdHJ1bmsKKzM0MDEgMDU1ODBlMDBmNDFlMmM3NWQ3OWNmZTY3MDRlOTZiNmQwODE1ZTcwZCBsZWdhY3ktdHJ1bmsKKzM0MDIgZDQyNmM1ZDU5MjU0YTUwMTY0ZDc5NzgyZjUzNWQ0MWU1MzQ1OWVhZiBsZWdhY3ktdHJ1bmsKKzM0MDMgMGM2NTdkYjI3ZGJmNjRmOWY4ODg0ZTcwZmI4MzdmMjMzNmEzYzMwOSBsZWdhY3ktdHJ1bmsKKzM0MDQgZTYwMzRlZGM0N2FlNWMyZWQ3NWEyN2UzYzU4ZjU2OTBkMWQ2YjMyMSB1bmxhYmVsZWQtMS45LjIKKzM0MDUgNWI4ZWM4ZjcxMWNlZjEwNzA4MWNjZmJjNDQyZjQ1NjVjMGIwZGQ4NiBsZWdhY3ktdHJ1bmsKKzM0MDYgYTc1OTNiYTk5ZGNiYWJkZTI0MTYwZTVhMmY1ZTcwYjg2YmU3ZmQ3ZCBsZWdhY3ktdHJ1bmsKKzM0MDcgZTU1NzI0ZmJjMmFmN2IwZTExNjcxNTM5M2Q1NjMzMmM4OGVkMzM4YSBsZWdhY3ktdHJ1bmsKKzM0MDggOGYyNDZjODlkZGNlYjk3ZWU3N2ZlNmVmYjkwYzliNzc2NDJmNzhmNyBsZWdhY3ktdHJ1bmsKKzM0MDkgOTFhNzcwODdlODNmMjFjNGU1MmNjYTY4NzM0OTU1MTg3ZjUwODU1YyBsZWdhY3ktdHJ1bmsKKzM0MTAgMWE2YmEyM2FlNDQ3YWNhZTBhNWRhOTQzOTBjZTdjYWI5NDk4MzgwYyBsZWdhY3ktdHJ1bmsKKzM0MTEgOTExYjgwMTdkYTQ2YjYzMjhmMjdjNTZkZmYxYjNhMzYxYTU2MTUzMiBsZWdhY3ktdHJ1bmsKKzM0MTIgNmIzYjc1ZjA3Y2JiN2I4MjZlMGI2MTczY2RjNGZlOWNlOTA5MjcwMyBsZWdhY3ktdHJ1bmsKKzM0MTMgNzhjYjBhY2NmYjBjZWYyOWZmYTAwN2ZjOTQzOGViYTk0NzljNjg2ZCBsZWdhY3ktdHJ1bmsKKzM0MTQgOTFjMWY5NGIxN2JjMTE3YTgxYmZmNmIxMjYzZTRjMTdiYzUxZWY3OCBsZWdhY3ktdHJ1bmsKKzM0MTUgNDlhN2EzYzNkODUwODljZjA4OTQyOGU1OTZlNTZlNWEzYmVkNGJmMCBsZWdhY3ktdHJ1bmsKKzM0MTYgY2ExNzI4YzRiZDc4ODQ2ZjYyZGY3ODA3MmE2NzA3ODM2OTNiZmY0ZSBsZWdhY3ktdHJ1bmsKKzM0MTcgYzRjZDBkOWQ4MjgxZGI1MzA5NjUwMDA3MmJhMDQ3YTFkN2U4YjQ0YSBsZWdhY3ktdHJ1bmsKKzM0MTggNjg1YjMxZmU4OWM2MGQwMjRhOGRhMDNjZmFlNGY1ZGE4MTAwYjcxOSBsZWdhY3ktdHJ1bmsKKzM0MTkgYmJjZWMyNGIyNDM3NzZkOWJhNDIzOTBiNzRkMTE0MTRjMTdiZjMzZiBsZWdhY3ktdHJ1bmsKKzM0MjAgNDk2MzAxMjNhM2YzNDAzN2U4YmJmYTMxY2Y1ZDdkZDliZmJiMjU4MyBsZWdhY3ktdHJ1bmsKKzM0MjEgN2FhOTYxM2ZmZDM2MzEzNjIwZTlkMDFkMmI5ZGYyMDU2NjllMGZlZiBsZWdhY3ktdHJ1bmsKKzM0MjIgMWNhYmMyYjZjOTcwMWFlYTI5YmI1MDZiNTkzOTQ2ZTY3YmY3NTkzYSBsZWdhY3ktdHJ1bmsKKzM0MjMgNmI4Njg4ZTZhN2VkNmVjNWY2MzcyMzY5Y2JiNzY0NzNmYzFiNzUzMyB1bmxhYmVsZWQtMi4zLjIKKzM0MjQgNmQ4MGUxZjhmNzBhNTgwYjc4OTA3YWZmYTQ1NGZlNTE3NjBiYTAyMyBsZWdhY3ktdHJ1bmsKKzM0MjUgNDVkNzA4NTIxMTg4MTk1OWNhYTU2Y2YyNjUzMDAxYjIzZTFiZjMyMCBsZWdhY3ktdHJ1bmsKKzM0MjYgYjEyMGNkZDMwZmJjYTU5MWE0NDczYmQxMWRjMGUyOWJlZTEzMTdhYyBsZWdhY3ktdHJ1bmsKKzM0MjcgMmM1MTVmMDczNjdhZDQxNDdlMWFhMzliYmUzN2VkMTNjMWUyMTZjZiBsZWdhY3ktdHJ1bmsKKzM0MjggZjgyMGU2OTE3ZjA3ZTUwMTJiZGQxMDNlZjk3Mzg5MzE4ZDVhMTBmOCBsZWdhY3ktdHJ1bmsKKzM0MjkgNjVhMWU0ZTljZDU0NmM0ZTU3ODczMGE4OGRkYWYyMzRiZTRkNDA0MiBsZWdhY3ktdHJ1bmsKKzM0MzAgNmM1OGRjMWQyZjlkMjA4YTkxMDZkNDQ0OGMyOWE5YTZiNmMzMzgxNCBsZWdhY3ktdHJ1bmsKKzM0MzEgMTgxMWU5NjA4MGQ0NDIyZGVlYjE5ZjkxOWRlZWJjN2I2ZDNmNGJlMCBsZWdhY3ktdHJ1bmsKKzM0MzIgODllNGIxNjY2MTc4OWNiMzY4ZTQ4ZTNkZTkxMTg2OWUzOTRmZTEwMiBsZWdhY3ktdHJ1bmsKKzM0MzMgZDAyY2UzMGQ3ZGRiYzg3YmRlNjMzMjA5ZmRhZmNiMTJiZmFlMjhiNyBsZWdhY3ktdHJ1bmsKKzM0MzQgZjVmNzNjOTQ2M2E4NmQyNjc5YTY2OTI0NzJhN2FiZDdlMjdhNjBjZiBsZWdhY3ktdHJ1bmsKKzM0MzUgMjg5NDgxODFmYjJmNzk1ZjhlZmZhNTYxNDQ4NjM2YWI3MDE0NDVlYyBsZWdhY3ktdHJ1bmsKKzM0MzYgMTQzNjlhNWU2MTY3OTM2NGRlZWFlOWE5YTBkZWVkYmQ1OTNhNzJlMCBsZWdhY3ktdHJ1bmsKKzM0MzcgMjkxOWI0NDhlMzg1OGExMDhlNzRiOTYyYjc0ODA5ZTE3NjJhZjViYyBsZWdhY3ktdHJ1bmsKKzM0MzggN2I3NDExZjliMTE2ZjAwYzIzNGEzMjg2ZTI2ZjNjZmE2NmEwZGY3MSBsZWdhY3ktdHJ1bmsKKzM0MzkgNjlhMDY2YjZiMWZmNGFmNTExNjI2NWQ2OWE0MTNkMWJmYzNhZGM4OCBsZWdhY3ktdHJ1bmsKKzM0NDAgMmM3NDk2MGQ2YWZlZjEzNmY5YThiNDExN2Y1ZTBhYzViY2U0YzdjZSBsZWdhY3ktdHJ1bmsKKzM0NDEgYmNhNzFmMmUyY2I0ZWU2NjQ2MThkMDUwYzE3ZmZkN2YyODAxNmEzOSBsZWdhY3ktdHJ1bmsKKzM0NDIgZjc2YjdiYTk5ZDNlZmI1MTUyMzdlZDc0N2JjY2I4ZGU3NDQ0MmU1OSBsZWdhY3ktdHJ1bmsKKzM0NDMgODcxNDZkYzFmNzljNWI3Y2U5ODBhZjhhZjcyYmFjMWRjY2ZjYjlmMCBsZWdhY3ktdHJ1bmsKKzM0NDQgM2NhNDU2ZjQ0YmYzZWYzNmE5NzRkZDc1ZThhZGRiOWM3YjViNzRlNSBsZWdhY3ktdHJ1bmsKKzM0NDUgOWU0MjA2ZjY0ZDFiNTE0N2ZkMDdlMzI3MTI2YjZjMmJiZTY4OWUxZiBsZWdhY3ktdHJ1bmsKKzM0NDYgYWYyN2E4MzAwZDI0MDk0YWFmYTZlZTc0NmRlNTU2N2JhOWJjYzQ0NyBsZWdhY3ktdHJ1bmsKKzM0NDcgYzYwY2IwNTljNDgxZTRhOTRkNTk0NjQ2OWQ0MjlhMjlhYWZmOGI1ZCBsZWdhY3ktdHJ1bmsKKzM0NDggZTA0NjRlNzExNWNhMmJmOWM4MGM5NWY0NDZhNmQ2NGRmZjI4M2YwMiBsZWdhY3ktdHJ1bmsKKzM0NDkgOTE4MWRhNDA2OTc4YzgxZGVkMTkwMmI5NGEwY2Q5NjJhZDMxOTBiOSBsZWdhY3ktdHJ1bmsKKzM0NTAgZGJjZTcyYWZlMjYxNTE2ZDM1NjNjZDE3MjBmYWMyMzY5NjhkY2E3MyBsZWdhY3ktdHJ1bmsKKzM0NTEgNmQ3ZmRlYzlkNDllMjg0M2I0N2FlNjM0NTBkNjA5ZjM0MzU3NDY1OSBsZWdhY3ktdHJ1bmsKKzM0NTIgMzNmM2Q3ZWJmY2MxYjAxZTcxNjliNzYzMGFlZGQ1NzZhOGM2N2FkNiBsZWdhY3ktdHJ1bmsKKzM0NTMgNjczZGQ5YmJkYmYxNTExYWU5MDA5MjcwMWFkZjkyMGE3NjNhMjYzMCBsZWdhY3ktdHJ1bmsKKzM0NTQgOWZlZDU3MjZhMzZkN2NlMTM1NWMzMDU5MjgzOGQ5MzMyMWQ1ODBlZSBsZWdhY3ktdHJ1bmsKKzM0NTUgNGQyOTJjNzg1N2Q0NzRmYWU1ZWM5MDllZGQ0MzRiY2VkMDhiODM2NCBsZWdhY3ktdHJ1bmsKKzM0NTYgNzk3MWZlY2JmMjhlN2UxZTA5OGE3OTc5NjRhNmRjMDAzZjllYzQ4NiBsZWdhY3ktdHJ1bmsKKzM0NTcgNTE3ZDI5ZWJjODQwZGU0NWIzYzk0NTYwOTNkODQyYTFiMzFjMTNiYiBsZWdhY3ktdHJ1bmsKKzM0NTggNTdiODBiOThiOGU1MDc1MmNhNDU3NzA0M2Q4NDdhY2RjZWE5MDk1ZiBsZWdhY3ktdHJ1bmsKKzM0NTkgYWMzYzgwYWJiZjQzMDAzNDljNWU2ZTMzODUzMGIyOWFlMGZhMzYwNCBsZWdhY3ktdHJ1bmsKKzM0NjAgNjcyNjFjNzkyZjRjMTRmYmNiMTNmZmIwYjUxYTgzNmMyYWQ1MTMwYSBsZWdhY3ktdHJ1bmsKKzM0NjEgNDc3M2Q1YzNiNWE0NmRlMGY2Y2ZkYmM2YzAzYzE0ZDI3ZTk0ODg1YiBsZWdhY3ktdHJ1bmsKKzM0NjIgYzNkMDlmNzZkNmJmNDM4ZjljN2IxM2ZjNmIxMTZmMGJkNWVmODM5MSBsZWdhY3ktdHJ1bmsKKzM0NjMgOTIzNGM5NjFlYzQzY2EyODU3ZTM4MTAzMjY3MGRlOTQ1MmE1Yzk4NCBsZWdhY3ktdHJ1bmsKKzM0NjQgZGVhNzQ0MmM1Zjg3YzZlMWQwYTA5YWVmNWIxYjNlYWE4NzI4ODQ3NCBsZWdhY3ktdHJ1bmsKKzM0NjUgMDRhN2Y5YmYxZTY3MmM0ZjdkZTUyN2U4ODkwNDVlNjMzZDBkMDdhYiBsZWdhY3ktdHJ1bmsKKzM0NjYgYzY0YWY1NjcxY2M2OTVlNjJiMzY0ZDQzMjAyMjFmOWE4ZDhmNmU1NCBsZWdhY3ktdHJ1bmsKKzM0NjcgMzljNzY2YTZlZDVmOWRhYjIyOTY0ZTkxZDEyNTA3OGQ4MGY0NTk0YSBsZWdhY3ktdHJ1bmsKKzM0NjggY2VmNTE0Zjk5NzRjOTgzYmRmYWYxZTZmZjYyNjU1YmM2OTlkNDExZiBsZWdhY3ktdHJ1bmsKKzM0NjkgYmNhNzg1NWQ4ZTA5M2YwOWY1NWNiMGEwZjJiOTEwYWI2N2ZlMzJlNCBsZWdhY3ktdHJ1bmsKKzM0NzAgMjA5MDU1ZTVlNDZhNDBkMjI2Y2ZmNWM0NjIzNmM4MDVjOTEyNjdmNCBsZWdhY3ktdHJ1bmsKKzM0NzEgNmUzN2FmM2YyNjFjMzliOTJmZTcyMWRhYjQ0MjBiOWM5NzQxZjUxYyBsZWdhY3ktdHJ1bmsKKzM0NzIgOTlkOWU3ZTlmMzc2N2U4OTE0MDBiZDM4YjA0YmUxNTVkYThiMjUyYyBsZWdhY3ktdHJ1bmsKKzM0NzMgY2ZmN2M0OGZhOWUxNWNlYzY4MDU5YTc1OTA3YWJiNDQyZWViM2Y1YiBsZWdhY3ktdHJ1bmsKKzM0NzQgMWU4YmQzNTRiNjc2MTEyZDhiM2E4NGI4NzJkNzI3ZDlhYTYzZTA0ZSBsZWdhY3ktdHJ1bmsKKzM0NzUgMDJjMDNhZmM1MTNlOTVmMzE3OGU5NzdlZTIwZjM2NTgxMDgzOGM3OSBsZWdhY3ktdHJ1bmsKKzM0NzYgNzQ3Y2U3ZTM2MDg0NGEzM2VjMWIyYWViYmU4OGJhNjU0MGUwZjJhZCBsZWdhY3ktdHJ1bmsKKzM0NzcgMDgzMGNmMmJlMWQyYzU5MjdjYzMzYWU0MmRmOGRjNmQ5NzZlOTc2OCBsZWdhY3ktdHJ1bmsKKzM0NzggMmY2OTFkYzU0YmZhNmE4ODU1YTY0Mjk0NGVlZDc0OGM2MjllYThkMyBsZWdhY3ktdHJ1bmsKKzM0NzkgNmVlMzgwMzQ5Yzg0OTAyMzI5NzdkNTFiZTI5ODRmYzU2NzQzZDExMCBsZWdhY3ktdHJ1bmsKKzM0ODAgOTE4YmVlOTBmNzNlMTUyMmUxNzY2NDE5ODQ5MTVhODJmZmRhMWZiOCBsZWdhY3ktdHJ1bmsKKzM0ODEgYWNkYzBiOWE2Yzc4NDhhNjkzN2FiNzljZmY0ZDkwYTU1OGRkODljNSBsZWdhY3ktdHJ1bmsKKzM0ODIgMmYzZjI5M2VmNWYxNTU5NzY5MDA3MGNkZTk1MTFlOTQ4OGI3ZGU1MSBsZWdhY3ktdHJ1bmsKKzM0ODMgZWMzMTJiNjQ3ZmNiZmE4OThmZGRhOTc0OTRiNzYzY2M4Y2Q2YmMzMCBsZWdhY3ktdHJ1bmsKKzM0ODQgOTJlNmE4Y2YxNGJlZTY1NTY1ZWY4YWQ2ZTliYjE5ZmQ4NzhkOTM1MSBsZWdhY3ktdHJ1bmsKKzM0ODUgY2QzOTcyNjZkYzFjOGUxZTE4ZDAyZjhkOWZlOTM0MjU3ZWIzNjA5ZCBsZWdhY3ktdHJ1bmsKKzM0ODYgNzg3NDJiM2ZkZDQ0YmE5MGUyN2MzZTllMWFjOWU0ZmJjMjk2MTUzZCB1bmxhYmVsZWQtMi4xNi4yCiszNDg3IDkwN2MzOTk2YjE1YzJjODU1NGIwNDIxYzNjMTllNjliZWZlMjU0OGQgbGVnYWN5LXRydW5rCiszNDg4IGE4MDY3Nzc5OGY4NDIwNGIxZjgzNTYwY2YxMDhlNjE0YmFiOTg1YTggbGVnYWN5LXRydW5rCiszNDg5IGYzYzkwN2VmZTVkNzEwMjAyYmU2OGY2ZGQ0NWE1OGEyYjgzMjZhODYgbGVnYWN5LXRydW5rCiszNDkwIGZlNzY1ODVjNzQ4ZThlYTNkODJkYTg2NmNlNmI2ZTJhMDYxOTYzYzYgbGVnYWN5LXRydW5rCiszNDkxIDcxNmJlNzY1YTc5YjJiYzZkMzJkNjEzZWUzOTA5NzE1MGE3YmM2YmQgbGVnYWN5LXRydW5rCiszNDkyIDI1ZDFjOTkzMjU1ODIyYTA3Mzc2YTRiNjcyMmI2YmU4NjU2MjA4YmYgbGVnYWN5LXRydW5rCiszNDkzIGU1ZDM2MzU0MDE3OWY5ZTZjOTdmMWE4ZWVmMWMxZDI4YWU3Nzg5NTYgbGVnYWN5LXRydW5rCiszNDk0IDhhMzU3NGEwN2IxODVkNWJjMmNkMGQzOTkzOThjZWFjZTc0Y2JhNGUgbGVnYWN5LXRydW5rCiszNDk1IGUyZGVjYTk4MzAwODJiNzAzOWNkODRiNTdjODAxYzE0YzlkYTNkYzggbGVnYWN5LXRydW5rCiszNDk2IDUxOWMyNTAzOWM2YTQ1ODhhN2RkZWNmMmFhYTBhZTM4ZTRlODMwZDggbGVnYWN5LXRydW5rCiszNDk3IDQwOWVhNzRmZWIyMTdjMjRjOTQ0YzczYzQxOWZkMzYzYTI1Y2EyNzYgbGVnYWN5LXRydW5rCiszNDk4IDA3OTAwODM0Y2M5N2QxYjhkZjFjMzdhNzgxZmM0YzFjOWI4MjUyNWMgbGVnYWN5LXRydW5rCiszNDk5IGU1ZmI5Y2RiZTA1MDdiYjMxZjQ2M2JlMmM0YTEwNjQyNDZhMzdlYmYgbGVnYWN5LXRydW5rCiszNDk5IDc4YTdlZDY5NTMwMjVlN2VjZGRlOTU4NTA5OWIwMWE2YWU0MGI3NmEgbGVnYWN5LXRydW5rCiszNTAxIGYzODQ4Zjc0YjI4Mjc5OWYzNGEwMzhkMWEyOGRjYTg4YzdjZTY4OGUgbGVnYWN5LXRydW5rCiszNTAyIDQxOTJlMjRlYzU2MmQxZTA5YjM4OGNlZTcyYjgxYjIwN2NkZjgzOWQgbGVnYWN5LXRydW5rCiszNTAzIGM0NDU0NWU1OTVhMTVjYzBiMjE4NjEzYmNkMWVhMmRkYjBmM2Q0M2YgbGVnYWN5LXRydW5rCiszNTA0IGY4ZjY0Y2JkOWZiNWExOWJiMDA2NTFiOWY1NDc0ODNhYWI5MjljNjMgbGVnYWN5LXRydW5rCiszNTA1IGFhYjMwYjc0Y2Y2YThkZjI3NjExMWQ3Nzk0ZTQzNzQ0NTkyZDUxOTcgbGVnYWN5LXRydW5rCiszNTA2IGQyMDdiZWVkYzg2ZDY4YmJmM2Q5ZWQ5YWMyZTZkNDI2YjM0OTJlYzMgbGVnYWN5LXRydW5rCiszNTA3IDY2ODg1M2Q3YjY0YmNiYTQ0MDk5NjQ5ODMyYmMxYjA4MWFhN2ViODggbGVnYWN5LXRydW5rCiszNTA4IDEzZDBmZGU0ODgzMjYzYmM2ZDUyNWFjNjM2ODlhNTU4YmYyMDYzMDMgbGVnYWN5LXRydW5rCiszNTA5IGYzNzkxYzRmYjcyNDdiMDhlZDYxNjFiZGI1OGE5NjhkZGMwNmQxMWMgbGVnYWN5LXRydW5rCiszNTEwIGQwYTVjMzAwZWFhZjVlYzNjMTAxZTg5ZmYzMTI3MTRhNGMxM2JkMDYgbGVnYWN5LXRydW5rCiszNTExIDI3OThkODYwM2JmMDI4NzNkZTgwNTBlYWM1YzhkMjczNDBlOWVmMDUgbGVnYWN5LXRydW5rCiszNTEyIGY0MTQzM2M5OGM1ZWIwMmU4OGNhZTk5OThkOTNjMmI4N2M5Mzk0YzcgbGVnYWN5LXRydW5rCiszNTEzIDVkMGIyNzgxZTIzYjQwYWY1N2FjODEyYzVlNWIyZjRjNGFkOTRmMjAgbGVnYWN5LXRydW5rCiszNTE0IGEyMmEzNTBkM2E1ZGQzY2QwMjRkNjhjYWNkMjVmM2I5MTZjODViYmEgbGVnYWN5LXRydW5rCiszNTE1IDVlZmE3NmNhMTdmMmVkMTI4YzY4MjMzMjcwNThjOGEzN2I5YzQ0MzUgbGVnYWN5LXRydW5rCiszNTE2IGEzYTAyN2M0OWViMTNjMDY4MGUzM2YxMTdiMWU1ZDgzMjRkYzQyMzUgbGVnYWN5LXRydW5rCiszNTE3IGQ5Y2I1NWVmMzRlMmU1MDRiMTBmZWEwZDg0MTc5MjA1ZDc4OTAyZTggbGVnYWN5LXRydW5rCiszNTE4IGUxNDljNzdkMTczY2FhZGMwMmRmYjdiNWY1NDdiMjRiNzI0ZjkyZTYgbGVnYWN5LXRydW5rCiszNTE5IDRkMWExNWZjNDc0OGQ2ZDkwZDRjZWJlNTYyMTBhZjRjNDhjYmE5MGIgbGVnYWN5LXRydW5rCiszNTIwIGE2MzU1YzgzNTc4ZDhkM2U4ZWY5OGU0OWUwOGU2MWZhOTU2Yjk0NGYgbGVnYWN5LXRydW5rCiszNTIxIGZjY2Q0MTVlMmViOGNkMGFhNWMxYWEzZmMxODZlMWNmYTM3ODg5NWEgbGVnYWN5LXRydW5rCiszNTIyIDJiNTRjY2M4NTJlNDA0YTQxNzJiYzdlZWNjODhlZTEwMDk1YTliOWEgbGVnYWN5LXRydW5rCiszNTIzIDA0M2RhMTkzMDJlZjI0NGJmNTcyMWYyMTg2Y2EyNzliY2JjZDlhMDUgbGVnYWN5LXRydW5rCiszNTI0IDJmYWMyMDllMWMzZjU1MjIxMmQyOTZlMTU3MjUxNTI4ZTQ0ZDMwNDggbGVnYWN5LXRydW5rCiszNTI1IDNlMzNjYTU0ZmJkYzFjMzI2MWRkOGQ2ODBkZjFkNWZhM2YwNmFkN2UgbGVnYWN5LXRydW5rCiszNTI2IDVkNzRhOTg3MzU4OTY3NDUwZDE5MmJlMDhkMjU5Y2RhZTlkYzIwMDMgbGVnYWN5LXRydW5rCiszNTI3IDE4MDhjYTVkODg4MzA5N2M3MmM2YThhODkxNDMwNDFjMjBlYTEzYzEgbGVnYWN5LXRydW5rCiszNTI4IDdjZDUzM2NmMTk0YTlkYmVhZTkwYjg3NjhmZjVkZDJlZTMzYmYzYTggbGVnYWN5LXRydW5rCiszNTI5IDU2MDQwN2VjNjMyYjlmNmZjZWJmODk3NTVmMzgzZDFlYjQ3MmU0YWEgbGVnYWN5LXRydW5rCiszNTMwIGUxYzQ3M2Y5MjljNDcyNjQ3ZjAyMTBmYTY4YmZjNjhhOTA1MDIzMGQgbGVnYWN5LXRydW5rCiszNTMxIDEzMjYwMmQ4NTRkOGM0MGY0ZTQ5M2U5ZmFhNDZmNjI3ZWM2NDExMDYgbGVnYWN5LXRydW5rCiszNTMyIGE1ZmMxMDQ4NDlhYTIxZjYzMjFmNWQ5OTdlM2EzN2ZiNjVhN2Q5ZDMgbGVnYWN5LXRydW5rCiszNTMzIDI4N2ZjMzJjMWQ5YzNmYjJmMjIxZGNiMDU2YTI1MzkyOWJlMzA3Y2EgbGVnYWN5LXRydW5rCiszNTM0IGVlNGEyZjg5MzI1NGRkNDBlMDFjMjdkY2I2MWE1MzhkMzkzNDcwZTMgbGVnYWN5LXRydW5rCiszNTM1IDRjOGU1ZmNiMzMwMTU5ZGYzNzhmMzdiNTgzMjg5ZmFmYWE1ZDlkYTkgbGVnYWN5LXRydW5rCiszNTM2IDg5ZTFlNWQ5Y2NiZjAzZDk0ODUwZjIxNmM0MTlkNGMxNThjNTY1ODUgbGVnYWN5LXRydW5rCiszNTM3IGY5ZTVhMjgyMzY3NzdlNTBhMzJmMTBkYjE5Mzg5MGIxOWFmNDJjYjggbGVnYWN5LXRydW5rCiszNTM4IGZhYWYzODQzYjhiZDVkMWE2ZmI3YzMzNTdhMGU0ODgwMzBhMDY0ZWQgbGVnYWN5LXRydW5rCiszNTM5IGY3YzYwNjEwM2RkNWVkMWVlYTNlNTczM2VlZjE3NTU2MTMxMDA4ZTQgbGVnYWN5LXRydW5rCiszNTQwIDdiZTdhN2UwYzQ2NWU3NmU4ZDk3ZTU0NTlkNWZlNjM4ZWNmNWNmZTUgbGVnYWN5LXRydW5rCiszNTQxIDg5ZDdkNWUxMzZhZGRjZTdiNThlNzg3NWVlMjhjNGYyNmRkZDNmZjkgbGVnYWN5LXRydW5rCiszNTQyIGYzYTMyNTY2MmQzOWM2MmIwOGNiMDQxYjRkMzA3NzkzNTg5YjVhNzggbGVnYWN5LXRydW5rCiszNTQzIDEwNWQzMzJjMjc3YzY1MTlhMTI4MzZlMjllZjM1MTlmOWI4NmNhYWEgbGVnYWN5LXRydW5rCiszNTQ0IDM1NDNjZTg4YTMxZWQ4NWYyYjFkYTUyZTI5ODIzMDI0ZGM1NjJhMzUgbGVnYWN5LXRydW5rCiszNTQ1IGIwM2QwMGUyNGMzYzFhMDU3ZjgzYzQ1N2U3ZjdhNjI1ZGNiM2MyZjUgbGVnYWN5LXRydW5rCiszNTQ2IDcxMGM2YjEzZTg3NTA4M2E2NDJlZDRlNDJlZmU2OGY5MzhhNmQ0MTQgbGVnYWN5LXRydW5rCiszNTQ3IGE0YWE4MzAxMmFmM2IyM2ZhYWVjMmMwOWFhMGE2ZTk1MTY3NjhiMmMgbGVnYWN5LXRydW5rCiszNTQ4IGMwMmIzZmUwYjMzYzI1OWVmY2RmMWY4MjM2OWFmNjQxMTgxNTBjYTUgbGVnYWN5LXRydW5rCiszNTQ5IGEwYTBjNzZmNmVmNmE4Y2I1N2U4Y2Q3NDA3YjAwMWUzODllZmFlMWUgbGVnYWN5LXRydW5rCiszNTUwIGFlNGU5MGZhOGJjYTUyMTg5NGI3MDhhOWUwNGQwMGU0NTU0MjJiMDMgbGVnYWN5LXRydW5rCiszNTUxIGIyYzdhYWJmYTkxM2I5YmIyZjlmMzE3ODViMWVmNjQ5YTJmNTI5NDMgbGVnYWN5LXRydW5rCiszNTUyIDE1OGYwZDljZGQ0MGY1MzVkYThmNTg3MTIxYWU3MTM0ZWQ2MDhiNTAgbGVnYWN5LXRydW5rCiszNTUzIDVhMzBhNGUwNTZlN2NjMzdkNzJmMTBhZGUxMjM0MGM4NGE4ODI5NjQgbGVnYWN5LXRydW5rCiszNTU0IGY5OTJhYzJhMzhkNWM3ZjNmYzVhNDczMDdiNjBlZGIzMzhkNzMzZjQgbGVnYWN5LXRydW5rCiszNTU1IGRjZTNjMzBjZDcyNzg3YTc0M2RiN2E4N2U0NjE2OTdiMjk5ZmJkNjQgbGVnYWN5LXRydW5rCiszNTU2IGU5OWMyMjQ5MGJmYmQ0ZTE3NWFiMDk0NmUwZDdjOTk3ZjhmM2VkZDcgbGVnYWN5LXRydW5rCiszNTU3IGNmZmU4ZDZiMmYwOWI3ZWVkMTg2N2JkNzM5MzA1YTc2ZjQwOTFjY2QgbGVnYWN5LXRydW5rCiszNTU4IDdjMzI0NWMxODY3NzRiODQ0NDU0MGJlZjZkNTM5M2EzNjAxOTZlZDMgbGVnYWN5LXRydW5rCiszNTU5IDBmZmZmNDBkMTNmZjQ3MGUzOTFlODcxOWNkMjVhYmM1M2UzNTU0YjAgbGVnYWN5LXRydW5rCiszNTYwIDdkNmEyZDk1MGYxM2M3NDA3ODVjNGZhZjIwMzMxYjU2YWE2MWJmZmYgbGVnYWN5LXRydW5rCiszNTYxIDk4ZjUxZjYxY2I0Yjc2YWZmNzdkNWQwYmMyZWFiNWE5ZDM2OWJlNGUgbGVnYWN5LXRydW5rCiszNTYyIDQyMjkyNzVkZWMzMjYxMDNhOGRiNDg2N2M4NzM3MzViMjYwYzY0YWUgdW5sYWJlbGVkLTIuMTAuMgorMzU2MyBiZTYxZTA3MmE1MDViOWVjYjBmOTdmN2UxYjBkMDhhOWZlZTFjZDJjIGxlZ2FjeS10cnVuaworMzU2NCA0YTI4NmIzMDBiNWVmY2FmMjgxZmRiZThiNTMyNmIxOWFkOThmY2M4IGxlZ2FjeS10cnVuaworMzU2NSAxY2UyYzBmNTY1ZWYzZTZiYWY0NDRjODI4ZmY3MjkyMDliYzlkMTNiIGxlZ2FjeS10cnVuaworMzU2NiAxZDg0MTU4N2FlZGViMDcxYTlhNThhMjljODcwYWM4ZTExOGFmZjc3IGxlZ2FjeS10cnVuaworMzU2NyBjYzE3MmNlMDU1NjFhZjE2YWEwNWIyMTVhMDdkNTFmMmNiYmNjN2QzIGxlZ2FjeS10cnVuaworMzU2OCBhYWM4MjMxYTcxNWM3Y2U0ODc3ZWFlNmZiYzk4MWVkYjdiYzMyN2U2IGxlZ2FjeS10cnVuaworMzU2OSBjZDU5ODlhNThiY2ZlMDMyMGRkZDJiMTRjNDY5ZjdjMmI1YTRjNDkxIGxlZ2FjeS10cnVuaworMzU3MCBhZjRlMjcxZDA3YjFkZDJlZTVhNzA2Y2RiZWE2ZWJlYmY5NGQ4MmVkIGxlZ2FjeS10cnVuaworMzU3MSA2Mjc4OTMzZDAyZTM4YmI4YWJkZGJjNzU0NjczZjc5NjE3ZDFiZjg4IGxlZ2FjeS10cnVuaworMzU3MiBjODE0OTM3ODgwY2MzY2MwMDY3NjA4MmNjOGE5YjRhNGU1ZTlkNzhjIGxlZ2FjeS10cnVuaworMzU3MyA5MGM1ZTJiYjRkYTU1YmVkZTZlN2Q4ZGU0NGU2YTJiMGJjZGUxMWNkIGxlZ2FjeS10cnVuaworMzU3NCA0NzQ4MjNlNWY3ZGMxM2I5NmQ1ZmQ4ZWI5YzgwOWNjZThhYTkwNDY3IGxlZ2FjeS10cnVuaworMzU3NSBhNThjMDYxYjRmNTU1MjUxNzdkNjdhMTUyZTdlMGY4ZjkzZjRmZWE3IHVubGFiZWxlZC0yLjEuMgorMzU3NiAyZTBhOGEzZWVmNGE4Zjk3NWIwYzEyNjcxMzUyZDEyNTc3ZDYzNmJiIHVubGFiZWxlZC0yLjEuNAorMzU3NyBiOWZjZmI5OWEzZTU0YjZmNzY2MzUwOGQxMGUwZDgwODc4MWI5ZjdjIGxlZ2FjeS10cnVuaworMzU3OCAxOGRmNjc0NTM5ZGE1NTMwNWY2ZDI2YzJkZDQ2MDMwNmEwZmYyYzMzIGxlZ2FjeS10cnVuaworMzU3OSBmNWIxZGRmZGRiYTgzM2IzMWI2YWFmNjFkODExMzA0OWYwNDIzNDg1IGxlZ2FjeS10cnVuaworMzU4MCAzMTUyNzJlYzRkNWI2M2Q1ZWQyZTVmNWYwM2M4ZmExMWZmY2Q2MzBiIGxlZ2FjeS10cnVuaworMzU4MSAxNjkxZWE1ZDlkNGI1YjM0NDE5N2EzMzZjNzMyMWM1ZWEzYmU5MjY1IGxlZ2FjeS10cnVuaworMzU4MiAwMGYxZTg4NjRkY2NkZmU2MTRkMjRiM2VjMzQ0NWYzZTRhY2JjOTFkIGxlZ2FjeS10cnVuaworMzU4MyBjOTE0YjEwYmYyZWQ3NzVjMDMyZDc0ZjVhZTQ1ZTA0NzY2MDBiYTI0IGxlZ2FjeS10cnVuaworMzU4NCAyNDkxNzc0ZTM2YTkwY2JiNWNmZTI2MzQzMmIxYTc2ZDJkM2FhMTE5IHVubGFiZWxlZC0yLjI1LjIKKzM1ODUgZjU1MDMxZDU0OWI3OWE2YmViMDdjMzBiZTFkZjUzZmU0NzM0NDllYyB1bmxhYmVsZWQtMi4yNS40CiszNTg2IGVkNTIyYzk0OGQ0MjhjMzdhZTBlOWQ1OGU0YzllOTg1MDZkYzc2MTkgdW5sYWJlbGVkLTIuOS4yCiszNTg3IGNhZGViNzljMTMyZjU1MDJjZWZmOTIzMTIwMjA3NjYwZDliMjU3MmIgdW5sYWJlbGVkLTIuOS40CiszNTg4IDI4NTJlZGI0ZmZmZTBlYzM3ODk1ZjAzMTQxMjNlMDg0NWY4ZWMwY2QgbGVnYWN5LXRydW5rCiszNTg5IDA2NTcwNDI5ZjA2MmQzMTRkMGI4NjgyMmQxYTNjY2RhNTM0NmUyMGUgbGVnYWN5LXRydW5rCiszNTkwIGQ2ZjZhMWNiN2Q3OWU5YjE5OGZjMTU4M2IyODY5YzllOWY0MDA4MTUgbGVnYWN5LXRydW5rCiszNTkxIGY3ZWRmYTZkMGRjYmE0ODcyYmY0MDg0ZjZiNTc0ZDNlYTExOGRkMzQgbGVnYWN5LXRydW5rCiszNTkyIGIxYmI3NGEyYjU5MzBlOWI0ZmM3OGU5YjU1ZjY2OTE1OTIxMmFiZDAgbGVnYWN5LXRydW5rCiszNTkzIDIwNDAwMWRkZGNjMzJlMzhlMTM2OThkOGQyZGQ1OTRjYzZkMjU4OGIgbGVnYWN5LXRydW5rCiszNTk0IGQyZjk4YmVlYzg1Y2YyMjRjODgyOThhMGRiNmRlOTVkN2MyOWU0MDcgbGVnYWN5LXRydW5rCiszNTk1IGZlNzI5ODgxM2YxNzE0YjQ3ZmEyYjkzMDY3MDZmZjM1ZjgzYWE0ZDcgbGVnYWN5LXRydW5rCiszNTk2IDhhOTBjOWJiYmRmMGM5ZDcxYTgzNGMyZjM5MTlhYzA0MDUxMmRlNzUgbGVnYWN5LXRydW5rCiszNTk3IDBiMzJlYzhhM2UyMDgyMWU2NDhlZTFlNWNhOTEzOTE4N2QwMDZiYzcgbGVnYWN5LXRydW5rCiszNTk4IGEyZjJhOGJkNTZmOWJmZjFhNTIxYTZjYzZlZDlkMDVmMjA0N2M3NTAgbGVnYWN5LXRydW5rCiszNTk5IDcyYmRkZmFkMzUxYTlhMjIwZGIyNDUwNGRhYmEwYTY4YmFkODI4ZjEgbGVnYWN5LXRydW5rCiszNjAwIGM4ODdhMWYzMDUyNTVkMWFiZmE2ZmU2YWVmZWE2OGYzZTZkNmQxZWMgbGVnYWN5LXRydW5rCiszNjAxIDg3MDFiOTMzODNhYjFkZGU5MThlYjdjNmNkNmYwMmU1M2I5NWI5MDUgbGVnYWN5LXRydW5rCiszNjAyIGY3YTc1MmZiN2I3MzdkMWYwZTljYjQ1YThiMDIxMjc2Yjg5NjYyMmIgbGVnYWN5LXRydW5rCiszNjAzIGFkYTU2YjA3NjVjMTY3MmQ5ZGVkODA3ZjYzMTY1Yzc3ODViNTQ1MDUgbGVnYWN5LXRydW5rCiszNjA0IDljNzA3ZDhjZjBjOGQxNmU2ZDg2OWVmYjYzYTZlODM4ODFkZWY3N2MgbGVnYWN5LXRydW5rCiszNjA1IGQ3MTY4Y2MyYmUwNzgzM2QwYTE1YTA2ZmE5NDc0NmM1OTMzZjE5MDIgbGVnYWN5LXRydW5rCiszNjA2IDY0MGMzNmI2NGRlYTFjZjcyZmVlNDFmNTExOWMwNmQ1MzQ4NDgzMTEgbGVnYWN5LXRydW5rCiszNjA3IDVjYWU3NjUzMTcxYjQ0YTE5ZDY1YWI2MTM4ZjcxODE1NDFjZjY3YzQgbGVnYWN5LXRydW5rCiszNjA4IDQ2YzIxNzMzN2JkZTRmNTQ5OTg5MDE0ZTJmYWZhNzg2NDZkMTNhMTIgbGVnYWN5LXRydW5rCiszNjA5IDU2MGVjNzAzMDgxNzdiNDM5MWFmYTE3MWQ2MDRkZjMxZTdlMzQ0MGMgbGVnYWN5LXRydW5rCiszNjEwIDg5YTVjZTE5ZDEzYWYyMDhlYTEyZjVlNmUwMDFkZjBjMjRhN2E1ZGMgbGVnYWN5LXRydW5rCiszNjExIGU0OTkxMTZkNDVlNDkxOWRjNDZkNzUyYjM4NDk2ODJkZTg3ZGQyNWIgbGVnYWN5LXRydW5rCiszNjEyIGQ3ZTM4NDJiMmU3YjEwZmZmYjA0ZjQxZWJjZWFjNzAxNTAxMjkxNmYgbGVnYWN5LXRydW5rCiszNjEzIGU0NjMyMmEzMWY2MjJiYTFjOWQwNDQ5YmZkMGY3ZGEzYTFkZDYwOGMgbGVnYWN5LXRydW5rCiszNjE0IGQ4MmMyYmE0ZjgxODdiNTAwYmU2ZGQ2MDRkYzdlZTNmYzA4ZTZiMGYgbGVnYWN5LXRydW5rCiszNjE1IGNkMzgyNDU2YzU3MmJiYWEyMDU1M2U5YjExMTI0YTNlZDE2ZTcwYzUgbGVnYWN5LXRydW5rCiszNjE2IDI4Y2NlYWJmOGNjZWM2ODJhYzY3MzE4YzIzY2Q4ODczZDFmNzhiM2YgdW5sYWJlbGVkLTIuMzYuMgorMzYxNyBjYmYyOGQ2NTQ2OWY1MDYyNDhiMzJhYzRjMjJiODM0MTZkNjEzYTc4IHVubGFiZWxlZC0yLjM2LjQKKzM2MTggNDc0OWM5NTc0NjZiNzdmMTA4MDE5OWVjNmQ5NzBmMzg2N2NhY2ExNyBsZWdhY3ktdHJ1bmsKKzM2MTkgMmVjMDhhOWQwMzI1NTIxMDZjYmJiZWE2Y2QwYTAxOGJkYWY3OTAyMCBsZWdhY3ktdHJ1bmsKKzM2MjAgZjJkMDQwNTRjOTM0NmEzNjQ1ZjZkMTUzZmZjYzg1ZDNmYTUyYzY2ZCBsZWdhY3ktdHJ1bmsKKzM2MjEgOTEzMzgwNjdmNzUwMWUzZTFkOWQ2Mzg4NDViYWZiYTlmNzk2YWNlOCBsZWdhY3ktdHJ1bmsKKzM2MjIgOWZiMGYxYWZiMzRjZDNhODdmYzM0MDRiMDAzYjRiNmUzOTllMmU1MyBsZWdhY3ktdHJ1bmsKKzM2MjMgNGZmNjA4YzRjYWNhZTBjMTQ3NGI0OWY0OGI0NWIzOWQ3M2YzOWMyNSBsZWdhY3ktdHJ1bmsKKzM2MjQgMzI4ZjQ0NmQyMDE2NzYwNmY4ZDI2MmMwNDM0YTEwOGI1NWFjYzI0OSBsZWdhY3ktdHJ1bmsKKzM2MjUgYWU5M2VjNGRkNTU2MzY5YmFmYWIzOWM0ZTBhODY1M2RjNzc0MTRmMiBsZWdhY3ktdHJ1bmsKKzM2MjYgZDhjYTBlOTEzYzQ0NDJhNmI0Y2Q2MzIyMzI2ODk1ZDc2NDRhOWRjOCBsZWdhY3ktdHJ1bmsKKzM2MjcgYTg5MzJhNGI5NjI0ZDliYmQyNTU0OWQyYTUyNmMxMDU5OTlhM2NiNiBsZWdhY3ktdHJ1bmsKKzM2MjggYTVhNDY1NGMzM2JlNWIzOTc3NjE5NDAzNjE5NmUzMzJlNDk5YWU4OCBsZWdhY3ktdHJ1bmsKKzM2MjkgZDc3M2E1Zjg5NDI2ODc5ZGIyZmViZDI1OTg5MTIzMzFjZDhiZjMzZSBsZWdhY3ktdHJ1bmsKKzM2MzAgM2E1ZjJmMTEwZjcwNjJiOWUyNjUxMmNmZWQ0OWFjMDJhZTYyNGI4NiBsZWdhY3ktdHJ1bmsKKzM2MzIgNTAxMDFlYjYzMTFiMDc3YzlkOTY3MzM2OTQyNDJhNDFmODdmODg2ZSBhbHBoYTEwMAorMzYzMyBiMThlYjJmNGFmMGNmM2M1OTJlYzIzYzZmZjM3YzY4ZTk2NTA4MWNlIGFscGhhMTAwCiszNjM0IDFjZWE5ZDgwYTJiYzFjZTRiMWUxZjYwOGZkMjZkMzAwNWRjYmY0ZjQgYWxwaGExMDAKKzM2MzUgZDlkMjEzODJjNzNiOTJjMTgxYTAyY2EzYTA0MjA5NGFmMjMzYTM5MyBhbHBoYTEwMAorMzYzNiA1Yjk3MDA0N2E3MjJjMTZlMTI2ZjcyZTA1ZjUxY2E0ZGQyOTU1NWE4IGxlZ2FjeS10cnVuaworMzYzNiBlZjczZDQwYTgyNzk1MWM5ZGE3YTMyY2M4ZGJlMzg2MDBmZmVjN2RiIGFscGhhMTAwCiszNjM3IDI5MmM1ZTc5MjY0ZGYyNjY4MjU2YzY5ZTRlODRiZTlkMDVmOTYxZmMgYWxwaGExMDAKKzM2MzcgZDhjZGFjOGZkYzc0NTBiZTFiZTE2MjI4NjU0OTdkNGFhMGIyZGNhMCB1bmxhYmVsZWQtMi4yNS4yCiszNjM3IDhiMDhhMzY2NzZkNGVkYTQ3ZTFkYTc2OTZlNGIyMjgxMjMxOTNmM2IgdW5sYWJlbGVkLTIuMzYuMgorMzYzNyAxOWZhMDFjOWZhZjM5NzYzNzhmNjU0YmI0ZmE3Y2QzZGIyODgyYTRkIGxlZ2FjeS10cnVuaworMzYzNyA4ZWVmMjExNTU1YzZkMzVmNGQyOWM5ZGM3NzRhMjQ5YmQxYzc0Y2QwIHVubGFiZWxlZC0xLjUuMgorMzYzNyAwY2E2NTNkNjc3ZDM0OTc0M2MyOWMxYWUyMjEyYThkY2I1NzI5M2NkIHVubGFiZWxlZC0yLjkuMgorMzYzOCA2MDdiMTlhZTFlMTNhMzIyMDUwNmU4NWMyODg3ZmY3NDljNjRmNTUwIHVubGFiZWxlZC0xLjIuMgorMzYzOSAzMWYxYjk4N2NkZjgyY2JjYjM4ZjUwMTA4YTBhZjA4Mzc5ZDgzMWYzIGFscGhhMTAwCiszNjQwIGQ5NjE5OWJlNzRlNmE0NDhjYzk1NDBiZDk2YjlmMWU0YzlmNDE1ZDYgYWxwaGExMDAKKzM2NDEgZjhkM2ZmNjYzOWI1OTY3MGRjMTEzMmQ5ZThkY2U1ZDhjYzk1ZmVjOSBhbHBoYTEwMAorMzY0MiBhNzliMDI0Mzk3Zjg3YzcxOGEyYTMxYmRmMjNkZDk2ZGUwMjhlYjc5IGFscGhhMTAwCiszNjQzIDVjZTQwNDYyYWU5OWFlZDk0ZWI1MGY4MThjMmM0ZWNiMjc3MjkyMGEgYWxwaGExMDAKKzM2NDMgYjg1ODBlMzIwNDZjMWI2OTM5Y2VhYjhlOTM5MmVlZTg4MGYyZTRhZSB1bmxhYmVsZWQtMi4xLjIKKzM2NDQgMDhkNGRhNDhkY2Q1ODg3NDIwODEyNzEyNDIwZmUxN2YzMDE3NTcyZCBsZWdhY3ktdHJ1bmsKKzM2NDUgZDhiYTNjZjlkYWJjYTk3OGZmNTY1ZjM2MTkwMDcxOGE1YmM4NzQ0OCBsZWdhY3ktdHJ1bmsKKzM2NDYgMWY4YzY0ODQ5MjAzNDgwMDE1NzU1ZGI1Mzg5ZGQyNDViZGViYjJiNyB1bmxhYmVsZWQtMS4zLjIKKzM2NDcgNmMwNjc2OWE4ODY5YjBkZGZhYzc0YTk4MGU4Njk1NTI1ODk0YjQ2YiBsZWdhY3ktdHJ1bmsKKzM2NDggMjVjMTEyYjNjOTU3ZWUxOTE1MjVhYzU0N2Q4MDdkOWQwMDc5YjU4OCBsZWdhY3ktdHJ1bmsKKzM2NDkgMTA5ZDM5ZGVjMTI4ODZiZTNjMGNjZGQ3ZWI2M2U0OWVkYWFmYzNjYiBsZWdhY3ktdHJ1bmsKKzM2NTAgNWYzZDZlNGI1NTAzZDUxZWExY2IyMjQyYWQ3MTdlZjU3MTcwZTkxNiBsZWdhY3ktdHJ1bmsKKzM2NTEgMzA1NzQ4ZWJhYjQzNzI0NTI1YmE0ZGY5ZTdmMGFkM2ZiOTYxOTVhOSBsZWdhY3ktdHJ1bmsKKzM2NTIgNGRjN2IxNWI2Yjk3MGRhYWRlMWUzNzhlNzMzZTdmOGMyZWJkNjBkMCBsZWdhY3ktdHJ1bmsKKzM2NTMgYzhhOTVjMTcwZTFlZDg3MzQwNzM0NWI5MWE1YTZjODQzMzM4OTRmMCBsZWdhY3ktdHJ1bmsKKzM2NTQgZWQzNmIzZTljZDc4NjVhYzZiNTExZTBkNDhlZTUwYTA1ZTJlZGQ1OSBsZWdhY3ktdHJ1bmsKKzM2NTUgNjNlYjZjNzUwOTI3NTdkMjAwNDAwNzk3MmExZTQyMDkxYTA2ZWQ0MSBhbHBoYTEwMAorMzY1NiAxOWM5OGYyMGE5YjgzYTMxY2I0ODliY2FjYjEyMjg3YTJmMTg5YTczIGxlZ2FjeS10cnVuaworMzY1NiAwOGNkOGI5NmI2YmZjMjc4YjY2ZWQ0MTFkM2I5ZDdiNjM0Yjg5OTFmIGFscGhhMTAwCiszNjU3IDZiY2UzM2Q3ZjBkMTEyZjRkZGIzOTZlZTk1MTFhZjY3NjkyMzEyMTcgbGVnYWN5LXRydW5rCiszNjU3IGY1MzM2ZDg2ZjU4YjhkOWE0ZTAzNGZkNGJjZTFkMGEzZmZjZDRkYWQgYWxwaGExMDAKKzM2NTggMzA1OTIxOGY2MzBiZDhlYzBmMjZiMTIyZWUzOGJlNzU2ZWM3OTFhNiBsZWdhY3ktdHJ1bmsKKzM2NTkgNzczOGNlOTViYTRkY2E5Y2Q4ZWI1ZWNkM2EyYmNkZTBhZWYwNWU1NCB1bmxhYmVsZWQtMS45LjIKKzM2NTkgODM4YWExNDA2ZWVhZWY4MzIxNmUwNDQ5MGJkYmZiYTMxYTYxMjExYyBhbHBoYTEwMAorMzY1OSAyNDMwYTg2MDJhNjVkMTM2OTUzNjZhY2NlY2Y5NjQ5ZDc1NGEyYjhlIHVubGFiZWxlZC0yLjE2LjIKKzM2NTkgYjRmODE1ZjNjZjNlMTA4ZmM5N2NmMGYyOGI4N2ZhYmMzODUwZTYxMiB1bmxhYmVsZWQtMi4yNS40CiszNjU5IGQwMTg3NjU4Y2YwYjNiYjZmNDQ5Y2RjMmQ4YjBlMWQ5ZDkxODZhNTAgdW5sYWJlbGVkLTIuMS40CiszNjU5IDYxMmM3NmFhYzNhYTg5ZTg2ZjVlNGVjY2Y5ODNiMzRjZWQwYTI5NzEgdW5sYWJlbGVkLTIuMzYuNAorMzY1OSAzMTNkOWI5MzA5NDA5ZWRkZDYyYjk3ODRlNzA2Y2Q0NzRmY2NhMzA0IHVubGFiZWxlZC0yLjEwLjIKKzM2NTkgOGRjMmNmMzE0NWIzYmJiYTUzYTdiZGM1ZDFmZTNjNmViOTgzOTY4MyB1bmxhYmVsZWQtMi45LjQKKzM2NTkgNTFlZWZjMDU0YWZmOGJhM2JlMThlZGVjY2Q5MjdiMTIxMDJkMTk2YiB1bmxhYmVsZWQtMS41LjQKKzM2NTkgYWY2NjdjNmQyMDcyMjExMTk0ZGNjNDljZWNjZWFmMWViYmQxZGU3NiB1bmxhYmVsZWQtMi4zLjIKKzM2NjAgZDQ3MDVkNzA2NjMyOTI0ODkwMGNmOWM2MjU3MWEyMjAyMmE3ZDZkNyBsZWdhY3ktdHJ1bmsKKzM2NjAgMWRjYTMzZWIyZDdhNTM3ZGYxNGFiMzgzNTY5ODgzZjU1ZGU5OTc1ZCB1bmxhYmVsZWQtMS4yLjIKKzM2NjAgOGY0NGU0MzEwNDE0YjZkOTU3ODVhOWZlMzc5NTYzMTQyYWJhZjdiMSB1bmxhYmVsZWQtMS4zLjIKKzM2NjEgZGNjZWYxY2JkYTVhMDZkYzhmMTc5YWY3YzlkZDc3NzIyMjdhZTY5ZiBhbHBoYTEwMAorMzY2MiAyZWM5NjE0MGEzNmI0ODgzNDVhM2MxYTFjZThmYmU0MGMzYjNiMjY1IGxlZ2FjeS10cnVuaworMzY2MiA0YWE5MWZkNjk3MTU0Nzk2Y2ExZWQxYTg1YTU2Y2M1OWNiM2QzZjg2IGFscGhhMTAwCiszNjYzIGM3NTFjYmVlZTY4ODJmYjMwNDZjYmExNjY5OTA2YTk1ZjM2YTU3MjggbGVnYWN5LXRydW5rCiszNjY0IDIzNTYxZGM3YjE1ZjVlODMyMDBhYTVmYzA0NWFjNGQxMWNhZDhlOWEgYWxwaGExMDAKKzM2NjUgZTU2MGIzMzQyNDA1YjMyNzdiNGRmZGM2YjAwMzgwMjI3N2QxZWUwZiBhbHBoYTEwMAorMzY2NiAwZWIwZWZjNTFkOWIzN2M0OGZhNmMzOTQzM2I3YWUyOGUyNDY4ZTdiIGFscGhhMTAwCiszNjY3IGMzMmUxMDIwNDY4ZGZmODQyOTE1NzljYTlkYzU5YzFhYjY3ODFlZmYgYWxwaGExMDAKKzM2NjggZTI2M2E3MmE3NmZlOWQ2YTFhYzAxZTIzM2I0ODUyNDI3NzY3ODllZSBhbHBoYTEwMAorMzY2OSA5M2QxMjk3MTc4Y2JlNzg1ZjBiMjU1MTIxYWFiMmNlY2Y3ZWEyMTQ4IGxlZ2FjeS10cnVuaworMzY3MCA5OGM1NTlmZDZlMmE5MmE0ZTVjMDllYTZiMzE3ZTI5YjAyZGU5NjMyIGFscGhhMTAwCiszNjcxIGNiYTEwOTZkYTU1MzExZGQ2MmI2OWMwYmJiODAyNzBhMGMxODk5ZmMgYWxwaGExMDAKKzM2NzIgMjA2NGIxNjcwOWYyY2U1ZjkwZjZmODRiODRlZTA1MWJiMWVjNTBiNiBsZWdhY3ktdHJ1bmsKKzM2NzIgMzQ1ZDU3YmVjMjY5ZDdiZmQ2ZjI2ZTcyNTE1NjljYTJjZDNjZmI1MyBhbHBoYTEwMAorMzY3MyBmODZmNjUxYzcwN2Y0MTBiMDI5MDFmOThlNWU0N2JlNTc3NWIxOTlkIGFscGhhMTAwCiszNjc0IDJjYjA3NmFlODkyNzIxNzkxMDFlNmExZWIzZjMyZTcwY2E4NjdmZTUgbGVnYWN5LXRydW5rCiszNjc0IGViZjcyODgwMzU1ZjE4MjYzZDFmODcxZDVkMDQzMzJjZDE3MTE2ZGUgYWxwaGExMDAKKzM2NzUgM2ZlNzU4MmI5NjM2ZGYyZDQzYzQ3OTRjZWYxYzZhZWI2ZGJhZGUyNSBhbHBoYTEwMAorMzY3NiA0ODE0MWU2OGIzNjk4MzIyZmMwMzdkMTQ0M2Q4MTg1NGExMDdmNDA1IGxlZ2FjeS10cnVuaworMzY3NyBkODM2NjQ1OGQxMDY2ZDFjMDRhMzAyYTg3MWI0ODg5NTIxMDUzMzA1IGFscGhhMTAwCiszNjc4IDJiZTgwNDk2NjE0NzY5OGI0MTQ3YTk0ZmVkZWFiYmEwOThmYjc4MDMgdW5sYWJlbGVkLTEuMS4yCiszNjc5IGYyZjE2M2MwOTk1OWIzZTc1MjI2NzE2M2NhZDI3ODMyMmE5NGM5OTUgbGVnYWN5LXRydW5rCiszNjc5IGI2NmM2ZTJhNmUwNmZhMzQyZTA0OGFkMDIzNjJkNGZhOGUxOGRhMzIgdW5sYWJlbGVkLTEuMS4yCiszNjc5IGZlYzJjZjhkNmU3Nzk5OTQ5YjA2ZDMzMTAyZmUyNmQ5ZTZkNzc3NDYgYWxwaGExMDAKKzM2ODAgODcwNzUxZmIwOWViZmQ1OTMwOTI4NTkyZjU4YjU5YTJhOTkyMzU4MyBhbHBoYTEwMAorMzY4MSAwZGVmOTRmODBiMzg0OTc0ODY4MzNkOWFhZjcwOTlmYjJmNWNjYjQ5IGFscGhhMTAwCiszNjgyIDI0ZDY1NjUzZTJhYzlkNDQ2MmNjMzg0MDIyMDAwYTYxOWNhZGJlMTcgbGVnYWN5LXRydW5rCiszNjgyIDFjNGUyZDYyMGIxNjM4MjYxMjk3YjVmYmMzYjg2MTQyZDgwNjU5NzkgYWxwaGExMDAKKzM2ODMgZDAzY2VhNmMwNzk1ZDRkOTg2Yzc3MzdmNjQ0YzMyNjlhM2U1NTBkYiBsZWdhY3ktdHJ1bmsKKzM2ODMgNDM4NTMzYjM0MWE2ZDU2OTljMDM1ZTY1NWRiYTAyOWFhZDk3YjRlNiBhbHBoYTEwMAorMzY4NCBlMzM3NjI0YzNlYTM3MDUzNTQwMWUzYjhhMzJhOTE3ZjVlM2NkMzlhIGFscGhhMTAwCiszNjg1IDNkNWQ0YzllZDE5ZGQ4Njk1ZTlmNTQ3ZGNkNmMwYmQ0MWMxZWRiNmUgYWxwaGExMDAKKzM2ODYgYjgwZjFkYzk2YzFhNTZiM2M0M2I0MDc5Zjc4NzMwMDNmM2RjNzNlOSBsZWdhY3ktdHJ1bmsKKzM2ODcgZWFiMDE5NmE4ZDgzOGU3MmM5Y2MwNGY4OTY1YmIxNTI3NGI5MzFmMyBsZWdhY3ktdHJ1bmsKKzM2ODggYjViMWYzOGJlZmE0OGRhMGE4NjYxZDRiYWQxOGE4Yzk3M2ZjYmUzNyBsZWdhY3ktdHJ1bmsKKzM2ODkgNTUwZTI2MDU5NThiMTZlNjQxNTY1Nzc3YzEwOWYzNWRhYWJkY2EzNiBsZWdhY3ktdHJ1bmsKKzM2OTAgMmRkZWE4ZTZkZDIwYjBmYjdiZWYzMDIyMmVhM2EwNmFlYzc0Mjc5OSBsZWdhY3ktdHJ1bmsKKzM2OTAgMzU1OWIwOTA2NzBlZWM5ZmQxYjY5N2E5ZjkwZjExNzkwOTRmNTY1MCBhbHBoYTEwMAorMzY5MSA2MWE3MjNmYTI1MzhjNzU1ZTRmNTdhNTA0M2QxNTZhMmE3MzEzM2EwIGFscGhhMTAwCiszNjkyIDlmM2UyZTkzMWI0YjkzZmQ1YjZlZDRlYzgzODNhNWM4ZTIyM2U3MTIgYWxwaGExMDAKKzM2OTMgNTc4MWFhZjljY2QzNWY3MWQwMDkwYzVkODI0YTM1ZjY4YWI5OGI3YSBhbHBoYTEwMAorMzY5NCA1MDE5ZDAzZDcxOTIwYjkxNmQyNjY1NDk2N2M2ZDY3MWUyYmEyNTA5IGFscGhhMTAwCiszNjk1IDIyNGM2YmQ5MmNlYjQ1NDBkNzRmZTIzMDk0ZjIzNDg4OTFkMTYyMjAgYWxwaGExMDAKKzM2OTYgOGQ2ZDg1MzU5ZmEzYjljZGQxMGM4YWFiZGE0Njk1NzJiZmYzMTU5NiBsZWdhY3ktdHJ1bmsKKzM2OTcgZTVmYTg5NzliOWU2NjgyNDEyMGU5NzY5Mjc2ZjRlZGZjNGQwMjU1ZiBhbHBoYTEwMAorMzY5OCAwYTZiZWU0YjZiMTc1MThiZWZmOTBlMWI0MDMxN2UzMWY3OWIzZTRlIGFscGhhMTAwCiszNjk5IDJhZTAyZjBkOWU2YjBhNmQ0MDg3ZGNkYWJiYTk3ZDQ5MDczYzBjOTcgYWxwaGExMDAKKzM3MDAgMmQ0YmQ4Y2M0MDQyMDBmYTcyNTVjYmU1YTBjNzUwNjZiMjJjNjhjOSBhbHBoYTEwMAorMzcwMSA0Zjg5NjBjNzgxNDFkYmMzNzQwMjdjNWU4OGI3ZmFiNDRmODVhMGUwIGFscGhhMTAwCiszNzAyIDc1ODcxN2Y4NTBmMmFhMzdlNTkzNjM2MGQzZDQzZWU2Y2U0MTIzMGMgYWxwaGExMDAKKzM3MDMgMDUwMTRlMGQzM2VjNTgxNjQ1ZGFkMDRlYzRiMTkzODBiZWY4ZjRkNyBhbHBoYTEwMAorMzcwNCA3NmJjNmQ3NDg4OTBkODdhOTkwNDZmYTU2ZTAxNjMwMzU2YTUzMjFkIGxlZ2FjeS10cnVuaworMzcwNSBlNTNlZDY3NDU5ZjU2ZDczNDZhMWUyYjNmZDk5NzNlYThiZDgwMzY3IGFscGhhMTAwCiszNzA2IDBjOGIxODEyZjBiNjlkOTFlMzhiMDdlYzM4MDVhOTY2ZmQ1ZTM4NGIgYWxwaGExMDAKKzM3MDcgMTBhZDhiZWY5ZjQzZGI3NWU5OGFhZGE0MTRkZmY4ZGU3YmVjNTc4ZiBhbHBoYTEwMAorMzcwOCBhOTA5MWM0OThiMTAxZTU4MjM1MjRjOGZmZDM2NTM1NDJiMWIwMjI0IGFscGhhMTAwCiszNzA5IDYyN2JjNDIyYTkwMjg2ODFmMGVlYmYzMTllZmExNmJhNjQxNjZkNGMgbGVnYWN5LXRydW5rCiszNzA5IDhiM2E3MjdkYzcxYjNhYzNlOTlkMDNiN2I0Y2RmNWFiMzEwMWFjZTAgYWxwaGExMDAKKzM3MTAgMjcyZTJjNjRiNzRkYmJiODk4NTNjYjE1NDJjYTVkNDkzNDQzMDY0MyBhbHBoYTEwMAorMzcxMSA2ZGZiODRhZGZlNDMxMTlhOWE3ZTEyMWMwOGNiMGJjNzY2ZDZmMDgxIGFscGhhMTAwCiszNzEyIDZiNjMwMGNjNDY0ZTVhNGJjMTY3MGI3YTcyNTllYWFhMGQ4NWJkOGQgYWxwaGExMDAKKzM3MTMgNTBmYWIyMzNmNDA0MjEzMDJhNGUyYzIwYzAzOTY2ZjRlODNjZmJmMiBhbHBoYTEwMAorMzcxNCAzZDE5Y2E0MGViODJkZmQyZThmNWFkMmQ2YTk1Yjk2OTBmZTdmM2ZiIGxlZ2FjeS10cnVuaworMzcxNCA5MjVjOTUyODMwY2UyNmViYmE2OGIyNGIzMjkyZGNmODFjM2QzNTdhIHVubGFiZWxlZC0xLjEuMgorMzcxNCA2MjdkNjQ0YmM2YzE3N2Y5YTZlZjQ5NTUzYzQyMzc1ZGM5YzA2MzA2IGFscGhhMTAwCiszNzE1IDk2MzdjMDQ5NjE3ZDMzNzZkNGVlNTE3N2Q4OTFmNjBlMjM2YmMxNzUgbGVnYWN5LXRydW5rCiszNzE2IGVkNzU5OTIxNzdlODMxNzE5YjA2OGRjNmVmOThjMDllNWFlZWFkZWUgbGVnYWN5LXRydW5rCiszNzE3IDI5OTI3ZjAzODZhNjllODNlOWFjMjJmMGY1YWZjODkzYjU0YmQ5NjAgYWxwaGExMDAKKzM3MTggYzYyYTZkYTdmZWFjM2Q3YTUxNzlkZDEzOTA0MGI5YWUyMTk5MzQwMCBsZWdhY3ktdHJ1bmsKKzM3MTkgYTUyNTYwNjFmM2EwMGY3NmFlMjRjNTE4MWUyNjA4MDFlZDU1M2UzYSBhbHBoYTEwMAorMzcyMCA1ZmQ1NWE2YWM3NmU4MzdjMzAwOTg1NmEzMzY2NmE1NzMyNjA0ZjlkIGxlZ2FjeS10cnVuaworMzcyMCAzMjg2NWM4OWNmMTJlNjNkODQ0NDVkODcwYzdkMjI2NDAwNDg2NmUwIGFscGhhMTAwCiszNzIxIGUxODM1MDJmYjViYzZmNWMzYTYzNDZhZWMwOGE1OTBmOWZlNzI5YzEgbGVnYWN5LXRydW5rCiszNzIxIGZkYmQzOTU0ZmVmMDBiNDQ2YTQxMTc4YTVmNzYyMGNjMDU2MWM3NTYgYWxwaGExMDAKKzM3MjIgNWU5MmIxMzJlNzBmYTMyYjdiYTFkNDE2NGVhNWVkNzc3MjAyMzIxZiBhbHBoYTEwMAorMzcyMyBkMGJiMDdkNGM2ZmViOGQyYjMwYWQ0MDhmZTk1OGEwM2EwZTRjMjFjIGFscGhhMTAwCiszNzI0IDc0NTNlMmJhNTM2MmE0NDMyMTZlYTk4ZWI2ZjAwODE3YjhhZGViNDYgbGVnYWN5LXRydW5rCiszNzI0IGFhNDcyZTkxN2Y2YzIzMzlmNDQwMTQ4MTg0YTlmNDJkZjU0YmUzNzEgYWxwaGExMDAKKzM3MjUgODc3MDczYjlmOGMzMjU0YTgzMjUwYjI1NjRlZmM2NWM5ZjFhYmFhYiBsZWdhY3ktdHJ1bmsKKzM3MjYgZTRlZjFiMTdkYTNkYmM1YjliYzIxZjFhMGM2YTAyN2Q2YmE0NTMxYSBhbHBoYTEwMAorMzcyNyBjYzMxMTkxNjRkNWMyZjM2NWVjNzIwNmM5OTQzNTY1NTMyOWY1YmE1IGxlZ2FjeS10cnVuaworMzcyNyBhYmMyZjk4MTRjYzk2ODU1ZWFlY2YwODVmZTZmMTA4YTNlYWNlMWY1IGFscGhhMTAwCiszNzI4IDk0NGNjN2M2NGU3Y2RkOTYxMDU3MzBkMGMxZGE1OTljZmI1MGE3OWEgYWxwaGExMDAKKzM3MjkgOWYyODhjYjU2YWI1MWY3YWE0OGY0ZDM3ZjY3ODRiNTFmODdlNzdkNyBhbHBoYTEwMAorMzczMCBhNmViYjY4ZGIzNGViNTE2MWZkMzFmOTU2OGQxY2VjZGYzZGEwZTcxIGxlZ2FjeS10cnVuaworMzczMCA3N2UwZWE2MDc5NmFlNDg0YmNkYTZlZjk2MDMyZDAyZTExMjFjNWVkIGFscGhhMTAwCiszNzMxIGE3NWY3MGNhMWJlMGE2NGMzZTcxOTE1OWQ5M2Q1ZGJhMDNmZmEzNjIgbGVnYWN5LXRydW5rCiszNzMyIGY1MjBiOWM3YWU2ZjY1ZGIxMDdhODBjOGNlYzEzNjg0ZWU2NmMxZTQgbGVnYWN5LXRydW5rCiszNzMzIDU2OGM2MDZhMGUzMTFiNjU0NzlkNmMxYWI4YTdiMDhiODAwNWZhNDEgYWxwaGExMDAKKzM3MzQgMWY3ZGFkNTc2YTg1MWQxYjFmNmNhZDIyYmEyNjdkZDYyZTdiNTY2YiBsZWdhY3ktdHJ1bmsKKzM3MzQgMjA0YjdlNzkzYzE1YjRiZDFkNDBhZGU1NjU2YTVlZGZlZGFkY2FlNyBhbHBoYTEwMAorMzczNSA3ODNlZjM2MWYzOTUxNWE4YWVmNTU2OTU4MzNlM2FjNDEwOWUzN2FhIGxlZ2FjeS10cnVuaworMzczNiA4OTY1ZWY0ZWIzOTlhYzQ3NmRjYmZlYmE3YmE0MzFhYTVkOWE2ZWVhIGxlZ2FjeS10cnVuaworMzczNyAzNjY0Y2I4OGEwMzAwOGVkYmNjN2Y5NzQ4NGU4NTU4ZDE4NDNiNmI3IGxlZ2FjeS10cnVuaworMzczOCA1MjNkNDIxMTg4YjkzYTUzN2FiM2IyNDcxMTAyMjliOGIyNmY2OTRjIGxlZ2FjeS10cnVuaworMzczOSBhZWU1NWQ5NjlhMTIyNDFhNzhkZDE3ZGVlMDZhYzcyODEyYmNjOWFjIGxlZ2FjeS10cnVuaworMzc0MCBlZjA4MmMxMDcyYTcxMTVkYmZjMzAzNmVjNjNmY2RmMWI4OWE1Yzc5IGxlZ2FjeS10cnVuaworMzc0MSA1YjI1NWEzNTg4MzMwYjU4OGMwY2Q4NWIxNzYyZGU2NWRjMzdkZTI3IGxlZ2FjeS10cnVuaworMzc0MiA5MzlhOTVmM2RjZGVhNDMxYjgzOGJiZGIzYjMyYWJjYmJjMDFmNmNhIGxlZ2FjeS10cnVuaworMzc0MyBiZTY4MDBhNjAxOWI0ZDQyMTQ3MGNjNTk4MmNmNTI5ZjYzMTlmMTkwIGFscGhhMTAwCiszNzQ0IDM2NDJjNjQ0NzJjMDc4YTY5YjNkOGVmZjNmY2U5NjMxNWJiMmRhYTYgYWxwaGExMDAKKzM3NDUgMzY0OGVkZDM0M2ViNDRjNjQxMGRkZGQ4ODI0ZDA0NzliMDMwNWYxNyBhbHBoYTEwMAorMzc0NiA2ZDI0Yjk5ZGM4ODFiOGYzNzYxZGMwZjdlY2I0ZTlmZTJkYjhjZjVmIGFscGhhMTAwCiszNzQ3IGM4YjcxNGI5YmM1YWIyYjVjZjYwMTdjMjIwMTVjOGQ1YjMwN2YyZjUgYWxwaGExMDAKKzM3NDggNTk5NDk0OWE3ZWU5ZGI0MDFiOWU2Y2I1MWQwNGU3ZDMzMDU0ZmNhOCBhbHBoYTEwMAorMzc0OSAxZTI2OTRhMDY5Mzk4OGJlNDA5Njk3MzkwZWZmNmEwNWM3NjIxNWQ3IGxlZ2FjeS10cnVuaworMzc0OSA5MWJhZDM3NmI0YmNlNWViNDZjMjM4NWQyMTJlMzRlYzY1NGVhMDFjIHVubGFiZWxlZC0xLjEuMgorMzc0OSAyZWE4MTNhYTI2MDJmYzk1NjQ4MWU0ZmRlODc5NmYzNWNiZDIxYjEzIGFscGhhMTAwCiszNzUwIGY5YWRiODlmMjAwMTZhOWZhNjQ1ODAwNTY3ZTQyMDJjMGM1MmE0ZDAgYWxwaGExMDAKKzM3NTEgZmE5ZTRkYjc5MTFkYTlmZmMwNjNhZTgzYmU1NTliOGVjMDlmMmQ5ZiBhbHBoYTEwMAorMzc1MiBjNWNlMzU4NDAwMTMwYTljYzkzNjRjOWJkMjE2ZjE5NWQ5ZjY2N2U3IGFscGhhMTAwCiszNzUzIDA3MjY3ZWQxMzcxMzU5MmMwMzI5N2IwNDAyNWUwOTY2MzU2MDBlODkgYWxwaGExMDAKKzM3NTQgMWY4NDE3ODBlZmMyM2VlZGUwNzc0YjYwM2U2MWI4ODhjMDE5N2JmNCBhbHBoYTEwMAorMzc1NSAyN2YzOTVhZmU2MGY2OTY2ZGU3MzVkNzNmZTM3ZTFhYmQ2M2UzYmJkIGFscGhhMTAwCiszNzU2IGZkYmQ4OThiYzFmZTYyZDg0NzliYWExOTk4YjQ2Yjg4MjA3MWIwZjUgYWxwaGExMDAKKzM3NTcgNDQ4NjNjNDlhNDM2YmZhMzA4ZDA5MjUzNGZmNjQ3NGE0OTBhNzc3MiBsZWdhY3ktdHJ1bmsKKzM3NTcgYTFhZWU3Njk5YmVhNjU0ZTRkZmRmOTVmMWYxM2Q1NTliMmUyYmJmMiBhbHBoYTEwMAorMzc1OCA0YTcyMjk2MmZiNjk3MDk0NjUzZTIyMGM2ZGM0Zjg3OTIzYmM0NzZkIGFscGhhMTAwCiszNzU5IDc1MzljY2I3N2QyODhhYThlNmFlYzJlYzY4NDVhNGQ4MDQ1N2NmMWQgYWxwaGExMDAKKzM3NjAgMzMzNmNkY2Q0YTVmZjZjNzZiMTAxNzhkNjBjZGE0NGQ5ZDhjYjViMyBhbHBoYTEwMAorMzc2MSA0NzJhMzQ3YmFmY2NjNDk4MTNhNzBkZWUzYzkyODExMjAxNTQ0MjgyIGFscGhhMTAwCiszNzYyIDEzMGIwNGZjNTRkY2M2OTk4ZTIwYmIyYTE0OWNkZWNlMTk3NjE1OGYgbGVnYWN5LXRydW5rCiszNzYzIGVkNGMxMTZiNTg5MzRlODI4MzY1MTkwNmRhNWM2NDBmYTkxZjNjNDggbGVnYWN5LXRydW5rCiszNzYzIDgxMWVmNmVkNGNhMWJiNGMzMjFjNjdlMmRkZmQ0Mzk3ZTU0OGQ3NzEgYWxwaGExMDAKKzM3NjQgM2JiNzg4YTFkZGEwNDZkY2U1YTU1MjMwYTk4NGUxOTc0MmExYzFmYiBhbHBoYTEwMAorMzc2NSAyYmJhMTg4YzZhZGFkZTM2Yjc1ZGI0MWMxYTJjNmZlNWFlZjI4ZDQ1IGxlZ2FjeS10cnVuaworMzc2NiAwNjEwNjJmOGE5YmZkN2RiMWI0ZDYzMTRjNDcyYjMzYzI4OGM3MDkzIGFscGhhMTAwCiszNzY3IDA5MGQwY2Q5NjFhZjE3NTBlZjhkZTY4ZTU1OWYwYjk5ZDM4MWY5MWQgbGVnYWN5LXRydW5rCiszNzY3IGMyM2MxYWM5MjIwODI0M2U0MzQ4MTFmOWRkMTljYzdmZmIxNTJlNjYgYWxwaGExMDAKKzM3NjggMzVkYjZmY2E0ZGY0ZDcyZWMyYmZmNzhlOTJiMGIzNGM5OGYyNWU2MyBhbHBoYTEwMAorMzc2OSAwODE3MzJjNmMxMTI5OGQwYTA1ZmMxYTdkMGEyNGEyNzA4ODExMzhmIGxlZ2FjeS10cnVuaworMzc2OSBjNTc5ODc1YjI5ODA3OGU1N2NjNWIxNjdiM2JkZGUyMjc2NjIxMmU4IHVubGFiZWxlZC0xLjEuMgorMzc2OSA3NDgxOTA0MGU3MjY1NzkxNmZiNDBiYTRiYTZhY2YwZTk2YTAwMjIyIGFscGhhMTAwCiszNzcwIDA5YTJhNjYxZThjMDUxMjFiZGFiOWFjYjI0ODdiMmUyNDg1Yzg3YWEgbGVnYWN5LXRydW5rCiszNzcwIDVmMGY4YmY3YjM1Y2VkNWUzMzk1NDA3ZjhlNThhZTM0NTZkMGZlOGEgdW5sYWJlbGVkLTEuMS4yCiszNzcwIDliNGY5ZTgyMWZkNDZlYjcxMTEyZDkzMWM0NDI5ZWFjNDY0MTQ5YWQgYWxwaGExMDAKKzM3NzEgN2MzZmJjOTdmOTQ2NzcwZWFjNDBkNTJmNWJhNDhlNmNjZTc3YjcyMyBhbHBoYTEwMAorMzc3MiBiYzVjOTI1MDhmNTYwMzAxMjBlZWYwZDE4MTEyMzQwZDUxZDYzYjhmIGxlZ2FjeS10cnVuaworMzc3MyBkY2M5NWExMzdhNmY5MWNlOTU2MTFlZmQ5YWQzOGE0MDZiODJhZWI2IGFscGhhMTAwCiszNzc0IDNiNmY5NTA1MzA0MzYwODBiNzgzM2E0MmJkODMxZTJkYzY5ZjM2ODkgYWxwaGExMDAKKzM3NzUgZTIxMGE0YTNkOWYwYzg2YWFiYjhjNTYxMTRhZTVjNjE3ODViYmQzMyBsZWdhY3ktdHJ1bmsKKzM3NzUgMWZmMzdmZjZhZmY0ZTRkNmI1YjEyZTE4N2EzNGNkYzU5N2ZhNzQ2NCBhbHBoYTEwMAorMzc3NiBhMjdkNmVjM2ZkNGE1OTk5ZjYyMDBlZDc5MWY0YWM4MzI5MDRkMDY5IGFscGhhMTAwCiszNzc3IGQ2OGY2Y2MyNjExZWNlMzIzZDcyMDE2ZDE1MjQ3MTg3MTgxN2U4YzcgYWxwaGExMDAKKzM3NzggZjVjMTk3OWJlYTdjZDVjMmNhMmJhZGYzYjg0ZGU5ZWIzZjRjMWM3MiBhbHBoYTEwMAorMzc3OSA1NmNiZmRmMzcyNTRjOWUwODU3YWQxY2RkZTFkNjVmZTNjYzJkYWNhIGFscGhhMTAwCiszNzgwIGMyODY4ZWYyOGJlZTJiMmYxZDJiZWM5ZjMwMjQyNzBhMGMyZWFmMTggYWxwaGExMDAKKzM3ODEgMWE4ZTkwYTM3MzU3YmFlN2I0YWJhOTIyZjFmMGFiMzNiZmRjZWY2ZiBsZWdhY3ktdHJ1bmsKKzM3ODIgOGU5N2E2OGIyYjE3ZDAxZGFjNzQ1ODYzNDRmYjA2OGNlYzhmOGU2OSBsZWdhY3ktdHJ1bmsKKzM3ODMgYmRiZTZkOGE3YThmODZmYmNhMmI3ZTBhYmViOWFjN2Y1MDI4OTVjYyBsZWdhY3ktdHJ1bmsKKzM3ODMgYTRmNmJhMmU0N2ZmZDYzM2EyNTZkMjc4NTdhOTg5ZGMwNTA1YTJmZiBhbHBoYTEwMAorMzc4NCA5NzgxOTU2NThlOWEzN2UyMGI5YzIwOTZhZjM2MTc0ODQ5YjQxMDNjIGFscGhhMTAwCiszNzg1IDA5NDIwZTJlOTM4ODQ1YTBkNWFlZmZlOTNhZDQ5NDRiZmY5YjQxMzEgbGVnYWN5LXRydW5rCiszNzg2IGU0NTk0OGUyYjY2Y2U0ODVhZGU0OTMyYTlkYTU0ZmU5NjU1Zjg1NTMgYWxwaGExMDAKKzM3ODcgZGQ2ZWExNjdmMmJkMWI3NDFjNzBmZTg4NmI5MmE1MDhkM2YyMzMwZiBsZWdhY3ktdHJ1bmsKKzM3ODggMGY4OGY5NjViZmYyN2M4ODY3NTgxOTcyMGFiMGM3ZTUyZTA1MTFkOCBhbHBoYTEwMAorMzc4OSAzMzhmZTU4YjJjNjc3Mzg1OGVhMDIyZjQ1YWUzMjliMDg3YjE3NDQ5IGFscGhhMTAwCiszNzkwIDE0N2U5OTE5ODgzOGNjNjdmYjgxMGQ4MTFkZTgxYjBiMmI2ZTBhYzIgbGVnYWN5LXRydW5rCiszNzkwIDIwZmJkMDQzNGZiNjM0ZGZjMDBiNzdhYWEzZGIzM2M0ZjYzYzZjNDcgYWxwaGExMDAKKzM3OTEgNzY4OTFkMGNkNWZkYWMxZTQ1MTA0ZTMyODljZjhiN2FiMDI0YjlhNSBhbHBoYTEwMAorMzc5MiBkYzhhZWQ4YjIwNGQxOGZmZDc5MjQxNWVmNjRkNjI5OTkwNTJiMjNhIGxlZ2FjeS10cnVuaworMzc5MyA4YjkwOGU5OTM5NzU3ZGMzNTEyOTEwMTM1OGNjMjRhZjMzYTFjODMyIGFscGhhMTAwCiszNzk0IDg4YmE1ZDE3ZjMwYTBmNTNhYmZjMzY3MWMxN2IzZTQxYzRiZGU0ZTcgYWxwaGExMDAKKzM3OTUgNWQ1ZWI3NmJiMjc4YWE2YzE1YTI5MjQ0ZTc3NmQyZWU2ZTVkOTVmMCBsZWdhY3ktdHJ1bmsKKzM3OTUgMDdlNGM1NzI2Zjc4NTY3OGE0Zjg4MzgxYmY1ODY1Yzk1NDMyNzYzYiBhbHBoYTEwMAorMzc5NiBiYmE4MDA4OGEwNDRhMzM4NzkwNjM5NDRkOWJkNGE3ZjFjZmFiZWE1IGFscGhhMTAwCiszNzk3IGMyM2NjYWVjOTI0OTMyNWQzYzNmMDlkYWI5NDk1ZWM5Njk4YjI0ZWYgYWxwaGExMDAKKzM3OTggMDM2OGVmNDlmZjRjNjE3NDBjMTYzYWFhNjcyOThjNjc4NmU5MWE0MCBhbHBoYTEwMAorMzc5OSA1M2VjY2VkMmYyYjJhMTg0ZjIzNjFmMGM5YjkxYWMwMmYzYzFiOTJlIGxlZ2FjeS10cnVuaworMzc5OSA3Y2U0MTIyOTVjYTNjYWI1YTQyZmFjZGVhYmYyMjBmYjhmMTA1MmQzIGFscGhhMTAwCiszODAwIDk3YzVlNjA3Yjc5NzczMjY3ZDI4OGFmODA1YzMzNWFlYjQ5MWM3MzggbGVnYWN5LXRydW5rCiszODAwIDhkOGI3ZGM5OTk4MmUzNjFkNjg1YmIwM2Y1MTMwNGEyYzdmYTU4ZDggYWxwaGExMDAKKzM4MDEgYzliM2Y3N2UxOGJhZWZhZTVhOTJkOTU4NWQ0ZmJkYTgwYTI5OWNjYiBsZWdhY3ktdHJ1bmsKKzM4MDIgYzNkN2Y4MTRiMmQwNjQwMWM3YjBjYmJiZGI5YzY4ODNjNjg1NjUxNyBsZWdhY3ktdHJ1bmsKKzM4MDMgMjYwM2I0MjBjNWRlY2FjNTE3OGM0NDY2ZjdjOWUzZTZhNmVjYjdhNiBhbHBoYTEwMAorMzgwNCBlOWIwY2NlM2I5ODA5M2UwZjc0ZGE0MjdjY2E5YzJhMTBkNGMyY2YxIGFscGhhMTAwCiszODA1IDE3ZTVjOTRmODYyZjc2NzhmMGE0OGJlZmI5OTlkZTE3MjI2ZGExMzYgbGVnYWN5LXRydW5rCiszODA2IDE1ZTFiODYxMDRhNmU2MThmOTJjMjE3ZmQ2M2Q3ODUyM2Q0ZmRiYWEgbGVnYWN5LXRydW5rCiszODA3IDk5NWE4ZWY0YTVjMDRmM2U2ODExODE2OGJlMDdhM2ViODkyNDllZTUgbGVnYWN5LXRydW5rCiszODA4IGVkMjExYzc2MTA4NThiZDZkNTk0YTIwNzA3ZTM1ZmEyNDJiZDUwMTkgbGVnYWN5LXRydW5rCiszODA5IDg3Y2JmOWUyMjcyOThlNmE5YjY1MzJiZTkyYTc3MmJlYTU1MTAwZDcgYWxwaGExMDAKKzM4MTAgNWM2Yzk5MDY2YjJjNzEwOTYyOGZmNDAzYzhkZjVmNmY4YjU5YTc4ZCBhbHBoYTEwMAorMzgxMSA0OGFlYzlkMzg1MmE5NTI5MTljMGRjODJmYTgxZDcwNTA4NjJlZDhlIGFscGhhMTAwCiszODEyIDg2OWZiYTgwOWM2ODllM2Q2NGE2MzQ4Zjk1ZjQzMWU0MmI4NjlhOTcgbGVnYWN5LXRydW5rCiszODEzIDVjMDE5MzFkYTU5YmQxZDE4ZTM2N2VjM2E5YjE3ODJjZTNlNzk0OGIgbGVnYWN5LXRydW5rCiszODEzIDdjMzU3YzZhMjhiZGM4OWRlZDhhNDllNmViNzQ4NjMyMGIzZjBhZDIgYWxwaGExMDAKKzM4MTQgN2VjZDYzODA1NjZjYjMxOGIyY2UyZDZkNmVlZTYzMTI1ZWUwMmRmMyBsZWdhY3ktdHJ1bmsKKzM4MTUgZTA1M2E4NzgyOGY0NDI2MmIzYWQyNjM5MmJlNDNlNDE0Yzk5NmU5ZSBhbHBoYTEwMAorMzgxNSA5NzhiZjEzNGY0NGFiN2MzYzg0YzQ3NmEyOTFlN2Y0ZWQ5NzgzNmE2IGFscGhhMTAwCiszODE3IDlmYmYzNGUxYzFmNzZiZjE0MDRmOGViZTZjMmIyNjM3MjQ0M2U0MjIgbGVnYWN5LXRydW5rCiszODE4IDVhMTdjNDNkY2ZmMDNjZDkyMTBkNWNjYzVhODM1MTg5YTE3ODQ0OGIgbGVnYWN5LXRydW5rCiszODE5IDQwNDdmMjI0ZWZkYjBlYzc4ODJkZGFiZWEyODAyMjA3NjdkZDU5ZjkgbGVnYWN5LXRydW5rCiszODIwIDYzMGUwMzEwOWM2MzhkZDE2Y2RlOTM3OGFmYTQxMWY4YzI5ZDFmNmQgbGVnYWN5LXRydW5rCiszODIxIGRmMGFlZTY0MTE0YmNmMWY5MjM5N2JjOGZjODQ0N2FiNjE0Y2JiYmUgbGVnYWN5LXRydW5rCiszODIyIDFmZjZjZWRkMjI0MTJkZWQ3NTc0MWQ5YTRkN2ZjN2FkYTUwYjliYzYgbGVnYWN5LXRydW5rCiszODIzIDFjMzY0NGJhYjg2YWI1M2YyZjI5MjY0MTExZDNkODJhZDExODU2YjcgbGVnYWN5LXRydW5rCiszODI0IGI2OGZiNzM5ODVkODM2YTQzMjBhZWMwYzZkMmQzMWE2MzQyN2FkMTAgbGVnYWN5LXRydW5rCiszODI1IDQ0MzQ3MWZmMzE0NzBhMmViMzIzMjkwYjYyYWQ4ZTIxYTY5MDNhNmIgYWxwaGExMDAKKzM4MjYgYmEyNGZjOGQzZjhjNTVkZjViMWM0M2JlZWZkMTIzNDQxNzFmNjhmNyBsZWdhY3ktdHJ1bmsKKzM4MjcgMGVmYTI0MGIxZGJjMDU3ZGM0NGZhMWQ0NGQ0YzRkOGZlZGFjNTYzOCBsZWdhY3ktdHJ1bmsKKzM4MjggNTA1NTMwODE1MmE0ZTI4NzdiOWU1Zjk3MmRlMjdhZTg3M2RiMzM4NiBhbHBoYTEwMAorMzgyOSA1Y2VmNGY1YTI4Y2VkZmNhNWZhZGU4MjVlZGZjNjBiMDdmZjZlODg4IGxlZ2FjeS10cnVuaworMzgyOSA5ZWM3ZDZmNzc1MDBjYTA5MGMyMTkxZTBiM2I0MGM2NmEzZTBmZTc3IGFscGhhMTAwCiszODMwIDgxZjI2YmYxMTc4ZjllMzcxMGMwOGFkZjZiOGNjOTQyYjE2ZmZkMTYgbGVnYWN5LXRydW5rCiszODMwIGVlM2Q1ZWExM2EzN2I5MmM2ZWMwNTllZTlkODI5ODczYjE2MTk2NDIgYWxwaGExMDAKKzM4MzEgNDhhYTNkMzMxNGFjMTcxZGI1Y2UxN2Y2NTZlNGI0YzcxMDAwZTFhMCBhbHBoYTEwMAorMzgzMiA5ODA2MjZlY2FkNjFkOGQwNTZmMzlmZWM0ZTJiYTg5NDM0ZmJhZGM2IGxlZ2FjeS10cnVuaworMzgzMiA1YzM1MDYzMWM4Mzk2MDVhMWQzYWRjNWJmNDNjYWYxNDgwNWQxZjFmIGFscGhhMTAwCiszODMzIDNlNjViZmQxNTc2ZWQ5OGEwOGExOTZjNzE2YWQ1YzgyYTMwNDExZmMgYWxwaGExMDAKKzM4MzQgOTkzMDA4N2VhOGY1ZTZlOGQ3Y2M1NDMyNmE2ZmI4NGVhMjhiOWM3NSBhbHBoYTEwMAorMzgzNSA4Yzg5ZjZlZjlmOWY4ZjU0N2Q1N2M4NTg2ZTMwZWViODNkZWYzNDM0IGFscGhhMTAwCiszODM2IGNiNWZkODAwNjhjZWYyNTY4OWRiN2RjYmJkZjllMzcxOWI3OWU4Y2EgYWxwaGExMDAKKzM4MzcgYmFmYzUzM2UwZWI2YWM1YWE1ZjA4MmVjY2ZiZDMxODI3OGY2YzU0NyBsZWdhY3ktdHJ1bmsKKzM4MzcgNzAzMmE4YTJjNDJjNTIyNGUzY2Y1MmYzYzg4NmVjMzZjYjUzZDEzMCB1bmxhYmVsZWQtMS4xLjIKKzM4MzcgYzk2ZmM0OTdiOTMyZjVkZDI4NjAzYjFkYmRjNTFlMWM5ZWI3ZDA0MSBhbHBoYTEwMAorMzgzNyBiMTViOGNjOWI4ZDEwZTAzNTJhMGI4YjdlOGQ1MWZhMzA5ZGI2ZGYzIGxlZ2FjeS10cnVuaworMzgzOSAyNjhlNTc2MzAwMTYyMDI4MDg2MDllMWE4NmQwZGIwODgzOGQ2OTI1IGFscGhhMTAwCiszODQwIGI3MGYwODkwNzU0NjE3YmYzZjg1ODEyNGNmYmI3YzA1MTcwNmI0OWEgbGVnYWN5LXRydW5rCiszODQxIDZmNTJiNTM4OWI4ODgxN2Q0NGI3MTQ4ODcxZDdjMDcwNDlhYTk3NzggYWxwaGExMDAKKzM4NDIgZTM4MGI0ZDU0ZmQzOWVhZjNhYjg5YTFjOTRlM2FkMTg5NWQ2OTY4ZiBhbHBoYTEwMAorMzg0MyA1ZGZkMWQ1MWQ2NmRlYWE1NjVlNWE3NzBlNDZjZjAwZDgwZWFhNWVhIGFscGhhMTAwCiszODQ0IDY5NjZkOTU3YjViMWU3NTBmNjBmZGU1MzdiMzlhNTBkMGI4Y2E1ZWMgYWxwaGExMDAKKzM4NDUgMmI1ZjhiMjAyMWJmZDczMDk0YzlmODIyOGVlNDhmNjYyNGRjNTgxNyBhbHBoYTEwMAorMzg0NiA4ZGY3MmU1OGZhOTgwMzJjN2U0MjYxYTE1MmM0MzQ4NDA2YTJhODgxIGFscGhhMTAwCiszODQ3IGFkMjE2ODc2YzQ3ZmJmZjcwNGIzYWQyMTA1ZDk5YTJhNWFiODljMjQgYWxwaGExMDAKKzM4NDggOGM2ODE0ZjM0Y2RkOTM2ZjA3MzkwYzNkMDdiOTgxNTg4YzRmZGIwZiBsZWdhY3ktdHJ1bmsKKzM4NDggMjJiN2QzNzM1YmQyNWZlYzNmY2NlNDE2ZjM0YzA4Zjg5ODhlMjc2OSBhbHBoYTEwMAorMzg0OSA2ZDM1MzA4MjYxZjRmNzRkODVjMTAzYjk3NWM4NDM0ZTQwNzc4NWI5IGxlZ2FjeS10cnVuaworMzg0OSA3NzIzZTAwMDM5OGRhNzc0NDQ5ZDdlZmQ2NTA1OGJjMTkyNDhlNTBmIGFscGhhMTAwCiszODUwIDU5NzMzNTRmYjQ5OTU0ZjcyNDY1ZjcxMzIyY2FlY2FiNDZhZDBjNzUgYWxwaGExMDAKKzM4NTEgY2QyNzllMGY3N2Q4NTNmMjYzY2E3NjM1ODBmZWMxMzUzNTk2ZDQ3NyBsZWdhY3ktdHJ1bmsKKzM4NTIgYzM0MTViMzE5YjRlODY5MmY5YzY0ZTI3N2E0N2ZiYzE2YjhlMThmZCBsZWdhY3ktdHJ1bmsKKzM4NTMgMTcyYWEwZWVlYjZmN2NiZjBiNzU0MWZmZGQ4Mzc4OGFhZGIxMWY5NCBhbHBoYTEwMAorMzg1NCAyNzQwNjZiZGUyNDEyM2NhYzA1NjM1Y2I1OTIzOGIwMDZjZmU0OWFhIGxlZ2FjeS10cnVuaworMzg1NSBkZjBmYjc4OGMwYzFmNTA2NTMzMTM4OGJiMzkxYzY0ZTQ0ODUwZTdjIGxlZ2FjeS10cnVuaworMzg1NiA5ZTM0NDQ4YTAwNWVkNzVmYjBhNWI1OTU3NzE0ZjRjN2EyY2NmZGUyIGFscGhhMTAwCiszODU3IDE2ZDFkYWIzZjJjMWI5YjMzMmE3NjUwMmFlYjA2ZTczY2U5M2I4YWIgYWxwaGExMDAKKzM4NTggOGNjOTA4YjBkODNiZGUyNWVmMTE5YzY1Mjc5NDA3NjUyYWYwOWRkZiBhbHBoYTEwMAorMzg1OSAzMjg2YmZmNDQzYzZhMDY2MGJjZDU4MWIxYzc0MjFmOGNmOGI0ZDYxIGFscGhhMTAwCiszODYwIDI3NGI5M2IxMjExM2Y1ODlhNTVkOGZhNjg0YzgwOGNhNDhjYjcxOWYgbGVnYWN5LXRydW5rCiszODYwIGU1ZDY2NTIzMWM1ODk0YzYzNjFiMzNjOGEyYTA3YmJjZTkyN2QwZWQgYWxwaGExMDAKKzM4NjEgOGVhYjJlZTQwZjMyZGJkZWQ4YWM2NGUyZGNiZDhlYjhhNmNjNzVkNCBhbHBoYTEwMAorMzg2MiAyNDlmZTVlMjRlMjBlYjhkOWUzYTc3MmI3YmVjMTY3N2ZkMmU1ZjgyIGFscGhhMTAwCiszODYzIDhhYWJlOWFhZTBmYTA3YTZhYTU0MmQxZmY4YzI4MmFlZTZjNzZjNTQgbGVnYWN5LXRydW5rCiszODY0IGNmNjBhMmIyNDk3OTg1ODg5ZjhiZjQxYjAxNzY1NTEzNjBiYTI5YWEgYWxwaGExMDAKKzM4NjUgZjRkYjkyZWVmMmFmNzE3YjRlY2ZkNzU1MWI0YjBmNTQ3NDViMzUxMyBhbHBoYTEwMAorMzg2NiAwMjBkOGMyZDlkM2NmYjNkMjY4NWEwNGIzNmQzNmJmM2Q1ZDM0M2I5IGxlZ2FjeS10cnVuaworMzg2NyBiZDFhNGQ3MTdlOWQxZWU0NGVhOGVhM2E4ZmVjZTc0MmVlYzJmY2UyIGxlZ2FjeS10cnVuaworMzg2OCA3ODBmMzM1YmY1MjRiNzA1OWFlNjQyNTVmOTA5ZTAwZTZiYjVhOTRkIGFscGhhMTAwCiszODY5IDU5ZmQ0Njg2Zjg4Y2E2NGI0YjdiMDNlOGE2MmRiMzRhYjQzYzNmMDUgbGVnYWN5LXRydW5rCiszODcwIGIzYmZmNWVkNWQzZDA4OTQxY2JkNGQyNWNmODQ0OTJlNzMyZWVjODIgbGVnYWN5LXRydW5rCiszODcxIDk2MDA1NTM5MDBkNDdlYTE0MDUwMjgzY2Q4ZWU5YWJhZGE0NDE3ZjYgbGVnYWN5LXRydW5rCiszODcyIGIzMzcyMGQwYWQ5N2IxNTM3OTYxNDllZDVhNjg4MzE5YzE1OGEzNDkgYWxwaGExMDAKKzM4NzMgY2RhZmM5NTFlOGU4YjMwZmQxMzIwNmY0YjgwZGYxNDVlM2UzZGQ4ZSBhbHBoYTEwMAorMzg3NCBkZGRjYmEyMDM4YmNiNWIyZjE5ZmRmMGQ1ZmNiZDUzZjIwODBlODNjIGxlZ2FjeS10cnVuaworMzg3NSA3ZDIxYzkyM2I1NGFlYmYzY2RkNzMxZGZmNTkyMzk4OTYzNTQxNDBlIGFscGhhMTAwCiszODc2IDkwMzc5NGRmNWVhOWVlZDU1YTMwMGFjZjJmNzYxYzU3OGYyNjRhOTEgYWxwaGExMDAKKzM4NzcgZTQ0NDk5YTQ0Y2I4ZTM3NGUzNWJiZjU0YjNhYTZiZmEwZjYxNzcwOSBsZWdhY3ktdHJ1bmsKKzM4NzggMzcwMDUwY2QwYjZjNTAxZTYwMzQ4YjA5ZDRiZmJhZWUyNDNiZjhhZCBhbHBoYTEwMAorMzg3OSA4ZDI2ZWUyNGFkMTgyZWEwZThhYjY3MWE0N2Y5OGQ3NTkxNzJjMWE5IGFscGhhMTAwCiszODgwIDNhY2Y4MThmMzU0ODMxZjQ2MjM2NzU1MWIxYmVjMjBhNTI5YmJhMDMgYWxwaGExMDAKKzM4ODEgY2RiMTQwNDFjYzg3YmI2NDBhZDA0YjA0YjIwMmZjZmJjZTdiZmRlYyBhbHBoYTEwMAorMzg4MiBhY2JhNDQyN2U4OWM3MDAwNzQ4Zjk4NGJkYTZlYjIzYTVmYzM3MmVkIGFscGhhMTAwCiszODgzIDNkMDE2OTk5MjY0YWMyYzczZWM4ZDZiNDQwZjFkODZmN2Q1ODIxYzUgbGVnYWN5LXRydW5rCiszODg0IGFmM2YyYTAzYmIxOGZlMGVlZjk3ZDk2ZWQ0ZWExOWExMjJhOTJhZmUgYWxwaGExMDAKKzM4ODUgM2NkZGM2N2JlM2Y1NzU2NjJjZjczNGI1MTI0NzFlZmI1MDBmODYyNiBhbHBoYTEwMAorMzg4NiBhZTRiOWNiNWJhMTU2MTEyOGFjYmNjYzM5N2IwMDZmMTgxMzkwNzI0IGxlZ2FjeS10cnVuaworMzg4NyAwNmFhNjA4YzU4OWU4NmM1ODZiYzFjY2QyNjBmZjViNWY0ZjkwM2Q2IGxlZ2FjeS10cnVuaworMzg4OCA5MWY4NDZmNmQ2YTYxZDA0M2QwZTcyNGY4NWM3ODRkMTRhNzE1YTUyIGxlZ2FjeS10cnVuaworMzg4OSBlYWNhYTRmMDc4MjZkOWEwMGIyM2YyMTYwNDlkM2UzOGE4N2NhNDY5IGFscGhhMTAwCiszODkwIDJhMGQ0OTk3NDBiNjI0Yjg4MDcyNDM5ODMzZjFlYmUwNmE3NjU0OTkgYWxwaGExMDAKKzM4OTEgODM2MjJiN2EwMGI1MjM4ZjgzMDU5MDZjZjhlMzRjODdjYmMwNDlkYSBhbHBoYTEwMAorMzg5MiBlYWFiYTJjYWZlZWI5YzM0MDc4OWVhMmJhNDM0MjIxYzM5NTMxMTg5IGxlZ2FjeS10cnVuaworMzg5MyAyZDBlY2U1NjA0MDY5YTE2MmY3OTQzNDBiZWIxYThjODA0NDhhNjk2IGFscGhhMTAwCiszODk0IDcyZjhlMWU2MTRmMDYzMDM1Nzc1OTNjNzFkMjFmZDY5MTU1YTlhNTcgbGVnYWN5LXRydW5rCiszODk1IDQ1NzI4YmZlY2I3NjhmMDIxMjg1ODc3YzYxNTFmYTllNjAxYTMyOGUgbGVnYWN5LXRydW5rCiszODk2IDY5NWZiNDk0YTNhMjJmYzkzNmI0NGY1MzBkODU5Y2VjZDE3YmEwYjAgbGVnYWN5LXRydW5rCiszODk3IDdiZjZiMTI4ZTk4YzQ4ODY4ZTUzZDdiZjdiYmFjMjU5Mjg4YzkwMjUgYWxwaGExMDAKKzM4OTggZjMyNjM3NTk2NzhlZjM4NDcyZmQxYzM4NjcxNmExYWUwMmNiMjI4OSBhbHBoYTEwMAorMzg5OSA0NDRlMzQ5Zjk2MmYwYWUzMDA2ODI1MmU1OWRiZTU3NzkxZmNjNjgwIGxlZ2FjeS10cnVuaworMzkwMCBiMjFmMDQ4YzIzZTllMDI4NDUwZjFmMmVjNGQwNGFlYjU3MTI5YmM0IGxlZ2FjeS10cnVuaworMzkwMSAyODhhNDYwNmQyZmRlMTAwNjhkYzc5Y2VhNmFjZDlmODA3NDU1ODU2IGFscGhhMTAwCiszOTAyIDAyMWRhYWJlNjlkODc5NTY2MWY3OWY2N2VhZWIyODJmZjM5NmE1MDAgbGVnYWN5LXRydW5rCiszOTAzIGMxNzM2MGExNjU4NzAzOGM1YmViYmYzZmRlOWIxZGVlN2QzYTNmMDAgbGVnYWN5LXRydW5rCiszOTA0IDMyZGE1NzgxOGU5N2I1ZmZkMjA4ZWI5NmJlYWNiNGEwZDk4MzBkYjggbGVnYWN5LXRydW5rCiszOTA1IGI5NjM0YmQ1Y2E1NWE5OGUyZWZkNmIyNzljMGQ5MjlhMGRkZjZjNjEgbGVnYWN5LXRydW5rCiszOTA2IDIzODRmYWE1MzUwZjNiNmQxZTBmMmIxM2YyZjlmMGQwNTZiNDU0NTkgbGVnYWN5LXRydW5rCiszOTA3IGIzZmNkYmQyZDliYmE1M2I1Nzg1OWU4MzAxMjQyZmUyMWM0YmEzMTIgbGVnYWN5LXRydW5rCiszOTA4IDhkN2FiMmM3ZTk5MzMwOTEwMjc1ZjAxZGI5MWQ4ZWVlNTUxNmQ0NTcgYWxwaGExMDAKKzM5MDkgZTk2YThjZmJiZWYxYjZhM2RkZjYzZWY5MGZkMDhlZjdkNmZlNDc3OSBhbHBoYTEwMAorMzkxMCBjOTY0MzY0YThmN2Y4ZTdjMDRmZTc3ZTI5NjJkYzJmMjg0MjM2MDg3IGFscGhhMTAwCiszOTExIGIyZDE4ZmE1MjlmNDg3NjBjYmRiNGE1NzFkNDIzNTA3MjU4OGI4YTYgYWxwaGExMDAKKzM5MTIgMDU1NjYxN2FhMzM4NmU3MGZmNDcwZWNjZTFmNmE2MDM3MWVjNDYxMiBhbHBoYTEwMAorMzkxMyBkNTkwZmZkNTRmODk4Y2ExMTdmMDAyNzkyMDM0N2MxYmMyZTkxOTZlIGFscGhhMTAwCiszOTE0IDc5YmI2ODI3MGM3YjEyY2RiMDM2YTBhZmQ2MmUyN2NlZDg1YTE3NmIgYWxwaGExMDAKKzM5MTUgNDFiY2QxODUzZmVhNTdkYjliOWVkN2Y4MjliNzc3ZjhlMGY4YWE4OCBhbHBoYTEwMAorMzkxNiAxMzEzMjNmMTcxNTkyMmZkZWMwYTc0NWJhMGM5YWEyZDk4YzlmMTVkIGFscGhhMTAwCiszOTE3IDgxMDE4NjUwZGMzMjQ1YTk2ZWJjMDQzMGNmYjM4ZjlhMmI5MGFmOGMgYWxwaGExMDAKKzM5MTggYzEzYmJkZmVlYmZmZTZjMWUwZjRlMGFhZDVhN2JjZTFkMGJiY2JkYSBhbHBoYTEwMAorMzkxOSBjYTVlZDUyYWNhMjdhNmE4ZDc2MGVmMGNiOTE3OTI4YmUyOTE1YTA2IGFscGhhMTAwCiszOTIwIGZjNDVlNTc3ZmY5YjIwY2VhODUzNzliN2QyNzA0YWQ3ZWE3NDdmNjIgYWxwaGExMDAKKzM5MjEgYTcwNDFkNmY3ZGUzZTM1ODk3N2RhOTI4NzhkYzI0NTU0ZDIwY2ExMiBhbHBoYTEwMAorMzkyMiA1ZWZmYWFkNzFiYTUyZTVlNmI0NDBjOGQ4NTNiNjRmNDliMjk2YjVkIGFscGhhMTAwCiszOTIzIGFkMjI3MGU3MWVjM2YwYjY1M2MyN2MyNmZhMTViYTNjZWRlZTkyOTQgYWxwaGExMDAKKzM5MjQgMzQ2OWQwNGUzZTM2ZDVmY2E4OTliZjRjYjBjOWYxNTViNWE0NzUxMCBhbHBoYTEwMAorMzkyNSBmMDcxNGJiNGVhOTZhMWUxMDA4MzIyZWQ1YjcxZTQzOWY4NzMzMjc4IGFscGhhMTAwCiszOTI2IDMzN2FiZGMxNTg0YTQyNWU1NDQzYTg5MjdmZGEzMWJlYmJhMTY1OWIgYWxwaGExMDAKKzM5MjcgN2M3NWY2MDQ2OGY4MDJkMGY3MzMyOTRmMWNmZmI2YWZiYzUxOGE3ZSBsZWdhY3ktdHJ1bmsKKzM5MjggMjIzNmQ3MDlmZjJkYWVhNjA4ZmEwNGJkZWM1MzkxZDIxNTk2ZDRiNiBhbHBoYTEwMAorMzkyOSA5MGEyMDk5Mzc0N2QxZjM4YTVhMGM0YmI1ZjI1MjQ2MGE1NmQzMWJkIGFscGhhMTAwCiszOTMwIGMxY2RlZWQ4YzUxNDRmNWVlNzIzMzJlNzNlNWUwNDA2YmRjMGI1Y2YgYWxwaGExMDAKKzM5MzEgM2Q4YmE0MTg0OGZmMGY4MjI1NDQ0NWUyNjllYjFjOGUzMzA3Y2I4YSBsZWdhY3ktdHJ1bmsKKzM5MzIgYjQ1NGRjOTI0N2IwNzZiN2NhNTdjYTk2ZThjMTI0ZTBkYTA5MjhhOCBsZWdhY3ktdHJ1bmsKKzM5MzMgOTk4YzY0MjJjZDhhYWUwM2QyOGI4YTVkMzJjYmI2Y2NiNjY4YTMxNCBhbHBoYTEwMAorMzkzNCBiY2YwYjhkZmRhZTlmNDQ2ZDYxMzFlNDllMjg2MjRkODMxYjM4YmI0IGxlZ2FjeS10cnVuaworMzkzNSA3ZmRlYWRmYTgzZTBjYzY4Nzg4YzM3MDQ5Y2JiMjg3MGIwN2UwMWJlIGxlZ2FjeS10cnVuaworMzkzNiBhYzJlNWNjMjk5NDlkOWVkNmMzZWMwNTk0MTU0OTNhZjYwMWIzMmExIGxlZ2FjeS10cnVuaworMzkzNyA1OTRhOGMxMmQ2ODgyNzZmMmQyMjcwZjhiNDZjMGVkZjA0Y2IwZWU5IGFscGhhMTAwCiszOTM4IGZjYTJmZWRlYTcxY2M2N2FhMjIwYmVmYzI1YThmYjYxYTk1YWI0YzAgYWxwaGExMDAKKzM5MzkgMmM2ZjEzMzc4MDFjYzAxMDJlZjczMDk2YmYwZGU2YTZjMWFlMDE4MyBhbHBoYTEwMAorMzk0MCAxMjg3ZmIwNTk1ODg4YzAxNDdjNDU1ZWI2NjI0N2Y3NzhkNGVlZGE0IGFscGhhMTAwCiszOTQxIGY2NTc5NDg4OTM0MzcwYTQ0NDhlNmUzYzNmZjc1NDJkM2U3NWFkNDEgYWxwaGExMDAKKzM5NDIgYWM5ZTEyYjRlYThjNjU3YmNhMzRlMThhNzExN2IwYjQ0ZTNkZmUxNyBsZWdhY3ktdHJ1bmsKKzM5NDMgMjBkZjY1MzM3NmI0MTdiOThlMmFhYWVkM2FkZWI0NzVhYzkxNWYzMiBsZWdhY3ktdHJ1bmsKKzM5NDQgNjcyMDExODcxYTFiNjQwNTliODgwMGZhZTFlNzg3YjQwMjU1MTUxNyBhbHBoYTEwMAorMzk0NSBhNWJkZmY5NzA1OTUxZmE2Y2U3YTY0Yjk0MjE1ZTk2NTA3ODlkOGM0IGFscGhhMTAwCiszOTQ2IDg4ZGUyMWVmNGE4YTMwZjZhOTE2OWI4OTZmYzI2YThjN2FjOTM3MWYgbGVnYWN5LXRydW5rCiszOTQ3IGJhNmFjODJmY2I2ODZkZTE1Y2MzNmE3ZTNmZDM0NzU4YzVhNGFkOGYgbGVnYWN5LXRydW5rCiszOTQ4IGIzNDQzNTQ2ZDZlZTRiMDA5OGY5MmIwYzU0NGViMjU0NzFlOTA4M2QgbGVnYWN5LXRydW5rCiszOTQ5IDQ1NzkwMzU2ZTAyNGY3NjIwNmJjMWE0MGU4Y2E3YWI1MWI2YTA4NTIgYWxwaGExMDAKKzM5NTAgMjE5N2RkMjQxZDhkYzg2MjE1Y2JiMmQ5YWJlZjgxNGEzODY2ZmI3NiBsZWdhY3ktdHJ1bmsKKzM5NTEgZGVhNjdjMmE0YzA3ZjNiZGZlYzk0MTJiNjFiOGQxNDBmNjkzYjM0OCBsZWdhY3ktdHJ1bmsKKzM5NTEgNzlhYjRkZjlkMGY1ZmYyZjJjOWMzYTMwNmYxZmViMWFkMmM1MjgxNCBhbHBoYTEwMAorMzk1MiA5ZTBlY2U2ZWQ4MWQ3YTBhZDQ1OTM0ZDYyMTgwY2I1YzEwZDBhOTMzIGFscGhhMTAwCiszOTUzIGNhM2NjYWE4NTA2MDI2ZmRlMWYyYjk2OGUzYzUyYWU0NzIxODQ5ODMgYWxwaGExMDAKKzM5NTQgZWNiYWRiODE4ODQ3NTAzYjY4YmZmZTFhZGYxZTc0Y2Y0ZTU3YTQ3ZCBsZWdhY3ktdHJ1bmsKKzM5NTUgYjJjOTIyY2ZiNGQ5N2JjZmNkODk1MGNmOTg2NTQ1NDI1ODY2MGQ2ZiBhbHBoYTEwMAorMzk1NiA0YmNmNTg0YzE1NzJiNGYyNzE4MDAwNjA1ZGZhNzhlODg4MzU3NDY2IGFscGhhMTAwCiszOTU3IDgzYjQxYmYxOTM5MmVkM2ZmNGFiNzRhMzYxN2JiZDM5OWE4MzQ0ODcgYWxwaGExMDAKKzM5NTggZDc0MTA0MWNiMDc2ZWJjYmUxZjRiYjM5N2E5OWVmZWM5NDhkZWVjZSBhbHBoYTEwMAorMzk1OSAwOWQ3N2JiNzFkNzViNTNkZWI1YTQ4YmMyM2JhZjk3YzQ1NzA2ZmRlIGFscGhhMTAwCiszOTYwIGNlMzI4NDcxNjRlMWU2ZDA3NzJjNDkxMzZjOTEzYzRjODAyYTAwOGQgYWxwaGExMDAKKzM5NjEgZTc2YzY4N2FjNzgxZDQyYTc0MzU5NjhhMjc0NDNlNzM1YTQzMmZkNSBhbHBoYTEwMAorMzk2MiA2ZWMxNTIyMjE3OTJlNjVmN2ExMWUyYWI1ZWVmNWQxNDhiZjFmMmMxIGFscGhhMTAwCiszOTYzIDMzZDMzNDQzZWM0NTlmZDIyOGNkNTQ1ZTE0ZDVlOWQ1ZGI5YmI0YjQgbGVnYWN5LXRydW5rCiszOTY0IDMwMWY4Y2E5OGUwYjVmNDQwYzlkMDE0NTA3NzJkM2M4ZTBlYThhMTMgbGVnYWN5LXRydW5rCiszOTY1IDU3YjliNzdkYTIxYjM5ZDVhOWE1YzkxN2E4MTFkZjgyZjM5ZjkyMTAgbGVnYWN5LXRydW5rCiszOTY2IDVlNWE2MWJkZGUwYjc4MTljZDIzOWVlZGU5ODViMGI2YmVkNjhiNWYgYWxwaGExMDAKKzM5NjcgOTA3YzVkZDg5YzZjZWZiYThhNDhkNDdkYjM5YTQwOTdmOTViNzIxYSBsZWdhY3ktdHJ1bmsKKzM5NjggNGU3ZWI1YTNmYmRhZjEyMTVlZDcwMDM2OGJkOWZlOGQyMDg5MDExZiBsZWdhY3ktdHJ1bmsKKzM5NjkgYzJmZjIxNjNmMGI3MGMxZWNkMGQ4YWFjMDNkNTMzOWE0NDc4OTZlMyBsZWdhY3ktdHJ1bmsKKzM5NzAgZThiZjEwNzcxNzgxMzk3YjhkMzc0NTI5ZjExMmY5NGI0OWFjODUwMyBsZWdhY3ktdHJ1bmsKKzM5NzEgNjBhNzIxNGYzM2E4ODE2NWM3MDRiNzMxOWVlNjI4ZDUzYmNjOGU4YSBhbHBoYTEwMAorMzk3MiA1NDg4OTExZWJjMjZlYzcyOTY1YWMzMDkxYjI3ZTAzMTBiYjE3MmU3IGFscGhhMTAwCiszOTczIDE0MzFhYmIyODM1M2Y0ODUwZWE1ZGJjMjFiMjA2MjRmMGVmMGNkY2YgYWxwaGExMDAKKzM5NzQgMTI5ZDk4YjUxN2MyNTZmZTg1YjQzOTI2Mzc2YWEwNjY0ZDdhZjQ5ZSBhbHBoYTEwMAorMzk3NSBhNzU0YmM3NGU1ODRkYWVhN2YxMGY0OGJlZjhjNzMxOTljYmFjOTRjIGxlZ2FjeS10cnVuaworMzk3NSA3NTkzOWRjYzkzOGE3MWFkYTFlZDg5YzM1OTEyNmMwZGMxNjAxYzE3IGFscGhhMTAwCiszOTc2IDA3NzA4MGQ3NThkZGE2ODJlZDYxOGEzYTVjOWFmY2RkNzdhMmVlMjggYWxwaGExMDAKKzM5NzcgYzZhZmI5NmE0NTIzMGY1NTFkZjE0YWMyMTE5Y2M4MGEzNjVjMWVhYSBhbHBoYTEwMAorMzk3OCA1YzI5ZjRiMWIyODUxNTI1MzRhMGUyNTc2ZjM3Mjc2OTUwYmZiZGIzIGFscGhhMTAwCiszOTc5IGUyOTExMDViMWJlZWFiMjY5YzdhMzRjZGI4OTIxN2YxYjE3OGY1NGEgYWxwaGExMDAKKzM5ODAgNjlkNWRjMjRjYjNiNTU5ZjhjZDE5ZWFlNTI5MDNkMDE3ZjMwNTk0NiBhbHBoYTEwMAorMzk4MSAyNDFjMzU1ZmQ5ZWFkNTczZmYwODA4OTFmNTEzMTI3NzNmNGZlOWEyIGxlZ2FjeS10cnVuaworMzk4MSA4ZGVkOGM2NTUxMWRhNDNiZDBiOTAzNDcwODc1YmI0ZGViOTVlZDYwIGFscGhhMTAwCiszOTgyIDJlOGVhZWU5ZWY0NWNlYTZlYzFhOGIyNTY5ODFlNGViYzk4Mjc5ZWMgYWxwaGExMDAKKzM5ODMgYmUyZGIzMTQyMzU3NGQ2MTg0YmI1YTE0YmI5Njc4ZWY2N2UwMDczNCBhbHBoYTEwMAorMzk4NCAyMjFkNDdiMjk3NGU3M2FiNzkxYTQwY2I5ZDhhYzVjZjQ0YTk5NzczIGFscGhhMTAwCiszOTg1IDc4YWNhZGVhMzkxOGZjOTY3ZTU1OGYwZmY0OGI3ODY4ZGUxOWY1ZGEgbGVnYWN5LXRydW5rCiszOTg1IGY5ZGJiYmIxNzkyOTAyNWQwNmQ2MjlhNGJlZDNlNTFhMTEzMWE3MjQgYWxwaGExMDAKKzM5ODYgYWNlYTExMDMxMjliYWMxMWFmNjFkZGE3ZjgxMmM1MThkYTViODZjZSBsZWdhY3ktdHJ1bmsKKzM5ODcgODNlZTc2NDk4MjNkMjU2Y2YyNzkxM2JiNDQ4ZjljNGFmYzhjZmY4ZSBhbHBoYTEwMAorMzk4OCA0MDQ4Y2NmODViM2QyNDU2Njc1NGJhMzAzM2ViNzRjY2Y4NjQ2MDM0IGFscGhhMTAwCiszOTg5IGQ3YTg1NTdlNzgwY2Q1MjZhODU1MzhhZWE2YTFkMGY0NGQ1NDliZDkgbGVnYWN5LXRydW5rCiszOTkwIGM5NDlkY2IwMzQ4YmU0ZWFiZGZlNTFlZDk0Yzg1OWJkMzJjZTc3YzYgYWxwaGExMDAKKzM5OTEgN2I5ODI4YmM3MWRkNjQ5MjU5YWI0ZWQ3YzE1ZDhhMjJkZWFiOGJkMSBsZWdhY3ktdHJ1bmsKKzM5OTIgZTIwZDA2OTRlNzQwMTRlYmY2ZGFiNjRkOWIyNmQzMGJmYTVlM2QzMiBsZWdhY3ktdHJ1bmsKKzM5OTMgMTAzNmYyMDVjYzJkN2E1ZjEwN2NkYzFmYmVlMzIwNzQ5ODE5MmMwNSBhbHBoYTEwMAorMzk5NCA3MDQ5MmQ2NTllM2M3YzEyNGQzZmNiMTQwOWEyMDliM2ZkNzI1Y2NiIGxlZ2FjeS10cnVuaworMzk5NSBhODI3NTU2Mjc4NGNkMmYyNjkxOTYxMWIwODdlNTY5OWQ2MTQzOGY4IGxlZ2FjeS10cnVuaworMzk5NiBmNTBmZTRiOTUyYmFhMTcyZDZkZmZhM2EyOGNhZDYyOTVlZDVkNzMxIGxlZ2FjeS10cnVuaworMzk5NiAwMzI2YjVkNjE0NDVlZTNhOGQzZGUyODExOWY5NjUyY2I3MmQyZTNmIGxlZ2FjeS10cnVuaworMzk5OCA2YTAxZjA5OWYwYWQ4ZDQ1NDdkZDdjNmE4YTFkOGVhYzZlNWViZmRmIGFscGhhMTAwCiszOTk5IDM2NmY4ZGVlOTZmYmY0ZTc3NDYwOGUwZWRlOWJjMGFiNGQ3YmEyYTEgYWxwaGExMDAKKzQwMDAgMmUwNTBhNTBhYTBhMDFmMzUzNWRhMDI3OTFhNmEwZmUxOTMzM2VmMiBhbHBoYTEwMAorNDAwMSAyYjI3NTUzMDI4YWFjMjNlNjg3MDgxNzk4NjM5YzQxOWQzNGNjMDhmIGxlZ2FjeS10cnVuaworNDAwMSA3NDkyMGMzYTM2N2QyZDFjN2YyOTM4OGIyNDQ0MDFmZDJlZTQzOTg3IHVubGFiZWxlZC0xLjEuMgorNDAwMSAyMjU0ODIyOWQ2ZmRkY2UzM2NmNTdhMzkzMWZiYjcyNzJjNGJlNzY2IGFscGhhMTAwCis0MDAyIDA0NzdiYzM5YzkzNTkyYWQ5MjMzOTFmNzgzMTQxZGRhODE4Mzk0MzEgYWxwaGExMDAKKzQwMDMgN2Y4OTFmMzI4NjRjYTUyYTFkMGM3OTZiZWI3YjMwMmQ5MDJjYzNmOSBsZWdhY3ktdHJ1bmsKKzQwMDMgODg5NmU0ZWMwOWZjNGE0Njg0OGY0MzhiMDQxZDIwOGIyNTUzNGUyMCBhbHBoYTEwMAorNDAwNCBiMTRjNmI5NTUxNjFjYTA0YWUwOTNhODY3MjNkNDQwM2NhMTMwY2JmIGxlZ2FjeS10cnVuaworNDAwNiA4NDU0NTc5YWI1MmYzNzFkY2Y1NTQ2Y2I1MzBlMmRkNmZkNjBmZjVlIGxlZ2FjeS10cnVuaworNDAwNyA5Y2M4NThiZDU3M2RlMzRmMzA5ZmUxNmVhNWM0OGU5NDZiNzUzNzI1IGxlZ2FjeS10cnVuaworNDAwOCA4MTJkMDgxMWZjZjNlMDYyZTQ1MTU5YjQzOGNhYmFhZjAwMzA4Y2QyIGxlZ2FjeS10cnVuaworNDAwOSBhNzVkYzg2NTZjYjBhMjM5M2RiYTRjMjUyZjMxZDMxMmJlNGQxMzJjIGxlZ2FjeS10cnVuaworNDAxMCBiNmI1MGQ5NDEyNWZkNDJmMTAyYmMwZDhmYzA0NDNjNDc1OTYyODRkIGxlZ2FjeS10cnVuaworNDAxMSA4N2EyYjA0YzQ2ODBiZDEyMWZjM2U2ODZmZmE4NzhmNmI0ZmEzMTZiIGFscGhhMTAwCis0MDEyIDk2ZDBkYzQ3MzllY2EyNDgyMDc1M2IxNGJkYmViMDgxNzA3YWJkMmUgbGVnYWN5LXRydW5rCis0MDEyIDFjZjYwODU2OTdjZDVhMGE0ZTAyYjNmMDkyNGZhMjU2OGRlZDAxMjggYWxwaGExMDAKKzQwMTMgNTUyYjIxZTdjMjMwYTc5ZDI2YmMzMTVmOWVmNTYwOThkMDRkNzQ3NSBhbHBoYTEwMAorNDAxNCBjMWZiMmI2YzQ3NGNlYTkzZWU1NGNjODFmMTRlNjlhMGJjYzQyNzEyIGFscGhhMTAwCis0MDE1IGU0MWE2NTMwNjcwNjIwMDVhMmM1ZWM1MDZjYWRlMDk3ZDFiODQ0NDYgYWxwaGExMDAKKzQwMTYgMTUxMzIxYTE4ZGI0YTc4Yjg4N2E3YjYwNzZhNDBlNjBkMmUwNjRiZiBsZWdhY3ktdHJ1bmsKKzQwMTYgNDI0ODZiZjIzNjQ3ZGI0MzAyNjVhNGUzMzI4MTg0NmNhNzJmNjA4ZSBhbHBoYTEwMAorNDAxNyA4ZmJlODYwYTI2ZTE5OTVmMWRhMWZhNzFkOTg5NWQxNDQwZDgwNTBiIGxlZ2FjeS10cnVuaworNDAxNyBlNDZlMGVlNzZkYmM0NDgxOGE2NjdlYzEyNDNhZmU5NTUzYWQ3YWQzIGFscGhhMTAwCis0MDE4IGE5ZGQyZTFlYTVjOWVhMmNhNDdiNGQwYzgwYWNlYjZhMTQ1NmZmMGYgbGVnYWN5LXRydW5rCis0MDE4IGExOWZhMDU1ZWM0OGIyNDQ2N2E3YTIzMGRiY2FhMjdiY2MzMTZhMzMgYWxwaGExMDAKKzQwMTkgNDEyMWFmZDc2ZDczNGFmZWMyMjRmYjJiYTllYjhkMTY2YzNkMTA5MiBsZWdhY3ktdHJ1bmsKKzQwMjAgNWE2YzJhMjM4ZjAzODc2ZTJhNzllMmFiMzI5ZjI1ZTI3YmEyODkzNSBhbHBoYTEwMAorNDAyMSAyOWM0MjU1Y2Q0NWNkNWYyZWJjNmMxMWQ2Y2Y0ZjBjNTU3YWY4ODU0IGFscGhhMTAwCis0MDIyIDAyMDJhNzJkOTk0ZTNkMzgyNTVmM2E1NTNhOTBjZTFiMTUzNmVlZmYgbGVnYWN5LXRydW5rCis0MDIyIDRlMWEyZGJmOTNjNTMyYTJiZmZjZTNjNWRmZTU3YTc4ZjZkNmYyMmUgYWxwaGExMDAKKzQwMjMgM2U2YjY3Y2E5ZGJlNDI2OWY5NTkwMDQyMzcyYjdlYWZkOGMzNmI3NyBsZWdhY3ktdHJ1bmsKKzQwMjQgMDA3YWRmMDE1NDNjNTE3NjlmYzMyZDhhMTlkZTQ5NDYxZmNlZTE5OSBsZWdhY3ktdHJ1bmsKKzQwMjUgNmNlODJjMTU4MWI5MmY3NzFkYjkwYzRmNTI4NWRhYzU2ZWRiOWNjYiBhbHBoYTEwMAorNDAyNiBmMjYwMjI4ODM4MWE0MjU3ZjhmNjJmOThhMDM2ZmRlNzY5ZjBlZGM3IGxlZ2FjeS10cnVuaworNDAyNyA1OTAzOWMwODU2YzkzOTZlM2YxZjNhNDc0NDlkMzE2OWQ3M2Y3NWY0IGxlZ2FjeS10cnVuaworNDAyOCBhM2ViMjUyNTkzMjk0MjE2NmUzNDBlN2M2ZDg0ODczNGE4YWY1NjAyIGxlZ2FjeS10cnVuaworNDAyOSAxZjQ5MjlhNDhlNjRhMDA0N2MzOGVkNzg5MWQxMmVhYjU5MjFiYjE0IGxlZ2FjeS10cnVuaworNDAzMCA5YWY4YjM5OTFjZWRmNzJlYmJiOTZkYTdjYjYxMTQ0OGRhMWI4YzdjIGxlZ2FjeS10cnVuaworNDAzMSBmY2FmOGEyYmFmMzg5NmU5MDAzNzhiODYwODQ5ZGFhMDE0NjIwYmMwIGFscGhhMTAwCis0MDMyIGJjYTgyOTBjMWIzMWNkN2Q3MjcwNWUzOTMyNzU2ZTJkMjhlZTA1NTEgYWxwaGExMDAKKzQwMzMgN2EyOWJiM2JkZGI0NjVhZTQ0MGEzNWQ2ZjUzOTI2OWUzYzgwNGQ0NCBsZWdhY3ktdHJ1bmsKKzQwMzQgMzdjZjg3ZjU2MWVjYTk4NWFlYWYyYTA1MTRkZGRkOTdlOWExODgxMCBsZWdhY3ktdHJ1bmsKKzQwMzUgMDU1OTYyZjk2ZGU3YjVmMGZhMDhkM2MzZWYxNTU2YmEwZmU4MjZlYyBhbHBoYTEwMAorNDAzNiAxNGIwODdmZTUzNDcwYzRlMzdlMTQwMDA3NThlZGU1NTU5OTA3ZTgyIGxlZ2FjeS10cnVuaworNDAzNyA3MDg2NTRhNWRkZGUwMzExZDc1ODE3NTY2Y2FiMTdjNmJkYWMzZTQ3IGxlZ2FjeS10cnVuaworNDAzOCAwZDAyOWRlZTkxMjkwZjlhMmY2ZTQ1YTJhZGY3ZDVjYjA4ZmQzZDg1IGxlZ2FjeS10cnVuaworNDAzOSA3YTQ3ZmFiYjE4N2M2YzI2N2NlZTc3YjQ1Mjc5NTYzMmI2MWM3MjljIGxlZ2FjeS10cnVuaworNDA0MCBmYTUwZDRiZDU1Mzc4NWExYzFhYmU3Mjk3OTM2OGI0MDY4OTI1OGE4IGxlZ2FjeS10cnVuaworNDA0MCA2MGIwMTU4ZDk0OGFjYzNhMTkwNWUwYjFkN2FlZTI1NjU5ZDhmNzM4IGFscGhhMTAwCis0MDQxIGY4NDk4YjA4OGFhMWEwYzUwMzY2ZGNhNTIzNmNjNTVjMTA0OGNkMTEgbGVnYWN5LXRydW5rCis0MDQxIDhhN2U1MzBkZDQ0YTVlNjQwMDA4YTkzNmVhYzM1MzZhZTQ3MmNiMzEgYWxwaGExMDAKKzQwNDIgNjIzZGQ3MjQ5MTg2NjQ0MTE0OGQ4MGJkMDUxYjkxOGY0Y2QzMmFlMiBsZWdhY3ktdHJ1bmsKKzQwNDIgMTlmMjA3NTFmOGRlZmJlZjE0NmM3NzgxNTQ1OWVjYjNjYjAyNzc1NyBhbHBoYTEwMAorNDA0MyAwM2UwOTdkZGVjYTJiZWNiODIyOTA4NmY2ZjI1MGFlNmY0ZjFjZDQ1IGxlZ2FjeS10cnVuaworNDA0NCA2Y2Y2YjY2OTFhYWViMjgxN2YwOTI2ZmEyZGUxM2Y4YzRkNzJiMmE0IGFscGhhMTAwCis0MDQ1IDdhYzRlNDk3OTFmNDdlMWJkYWQ4ZWY0ZTQ2OGIzOTJiYzc2MjQ2NDMgbGVnYWN5LXRydW5rCis0MDQ2IDllMmIxOTQyYTc0MjBhYTQwNjdjMTk1Y2E5MWQ5YTliNjY2N2FjN2IgYWxwaGExMDAKKzQwNDcgMWM3MWEyN2ZkNjkzM2RjNmRlNTU4NzEzMjdhNDNhYjJiMDQ4Y2FhMiBsZWdhY3ktdHJ1bmsKKzQwNDggNTFhMDZmZGZmZjc4OWQzM2UyYTAwNmZjMTY4Yjk2MTg1NGU2MTQwNCBsZWdhY3ktdHJ1bmsKKzQwNDggMTFlYTE2MWEwMWMyZmQ5MmI0NGE5OGIyMjAyNmYyOTU2ZmE2ZDEwOSBhbHBoYTEwMAorNDA0OSBjZjMyOGE5ZWM1ZDQ0ODc2Y2YwMjRmMTFkN2FjNTY1OWY5ZDM5NTQwIGFscGhhMTAwCis0MDUwIDE5YjAwZWY0Y2RkOTk3ZGEzMjhlMzllM2Q1MmQ5MzQ5MTEwOTYxM2QgYWxwaGExMDAKKzQwNTEgN2U1Zjk3YmFiMWU2ZjhkZWM3NmQ0ZjA3NDE3NDQ3ZWI1NzkyMDBkMCBsZWdhY3ktdHJ1bmsKKzQwNTEgY2YyNGYzZTdiZTZkN2U2NWVhNWE1YzU3ZmJmMWZiYThmOGFkMmZlMCBhbHBoYTEwMAorNDA1MiAzMmMyOGFkY2NkMTJiMDY5MGMxOTVkM2E4YzIzOGJhMTI0NzA4NjNmIGxlZ2FjeS10cnVuaworNDA1MyAzYWFjODI1YTUzYjUyM2RmNWYwMmFkMGYzODc3MWQxYTc1YzZkMTViIGxlZ2FjeS10cnVuaworNDA1NCBjYmVlNWUxZTliZTgzMjU5MDQyNjk5ODA5ODMxMGZlNjliYTEzN2E5IGxlZ2FjeS10cnVuaworNDA1NSA3NjAzYTNiMmNiZWU5OTM0NWQyZjllM2U3Y2ZhYmVmOTMxODhkMWFjIGFscGhhMTAwCis0MDU2IDkwZWU3MWEzYTEzZWJiNDQ4MzZjYWYxNmY2OThkYjkyZDIxOGJkNWQgbGVnYWN5LXRydW5rCis0MDU3IGE0YzdlZmYyNTlhNTljOGI0ZjUxOThhMjY3ODQ3ZGFkYTc1YjhhMTkgYWxwaGExMDAKKzQwNTggNGRlZjkzNGZmNzViODA2MmFiZmE4YTA3MDFkYmE2Nzk1Zjk3NTZlNCBsZWdhY3ktdHJ1bmsKKzQwNTkgZjAyYTQ2NzU0ZjUwNWMzZWQzMGRhZmQ3YzRjMTU1NDhmZGI5MGRhNiBsZWdhY3ktdHJ1bmsKKzQwNjAgYTg2MmQ4ZjQ1MDdiOGI0YmQzYzRkZmExM2QzZjhiOTE3NjM4NGZkZSBsZWdhY3ktdHJ1bmsKKzQwNjEgMWI5ZWMzN2RiMmI5YWJmOTVjYTFlOGI4ZDQxOGI1ZDBkZTY0ZTAyZiBhbHBoYTEwMAorNDA2MiA1MDk2YmI0OGNjZmUxMzBiZmUxZmU4YzFjYTAwNGRjZjg2NWFmOTRhIGxlZ2FjeS10cnVuaworNDA2MyBiNWE2NjBjYWE4ZTFiYzQ1N2I1NDE0NDNiYjFiMWRkYTJlZWVjZDcyIGFscGhhMTAwCis0MDY0IGQ5MGFhYTA5MTIzYmY1ODhhNzlkMDlmZmVmZjM3MDcyYTlkZDNkOGIgYWxwaGExMDAKKzQwNjUgZTI4MjMxMTBjMDUxNTcwNDU0NDRlMWYzOGMzMmVkOGVjNWYyZDkxMiBhbHBoYTEwMAorNDA2NiBlNmEyMTNiN2QwZDJiOTgwM2NmNDAyM2YwZTY0ZmMwY2Q3MjUxNjc3IGFscGhhMTAwCis0MDY3IDcyYzlhNGRjNDg0N2Q3OTQ4OTc3NmQ1NmEyNDIzZDNlYTBlNTNhYmIgYWxwaGExMDAKKzQwNjggNGY0NDlhYjYwNTY3ZmJiNjQzZTJhZDQ1MzVjY2JkYzljOTgwZmJhNCBhbHBoYTEwMAorNDA2OSBmZmQ0OTViYWNiZDQzNmYwMGU4Y2JlYjJiYjBjMTA4M2FiODNmMDQzIGxlZ2FjeS10cnVuaworNDA2OSA4ZTdkOGQwZDRlOTBhOTQ1MTU4ZGE1NmRhYzk4OGRmNzI5YmI1YTg3IGFscGhhMTAwCis0MDcwIGY3ZTFlMjM4OTM3NWYyMzI2MjBhZWY4ZTRhZDQ4ZTcxYzRjNThiMjMgYWxwaGExMDAKKzQwNzEgMDFkMjY0ODZiMGVlNjY0N2MzZjJkMTBhMGRiYmY0MTJhMzZmODJmYyBsZWdhY3ktdHJ1bmsKKzQwNzIgMTRiMDM0MThjOTBmYjM4YWYyMGZlZDdmNDcyNjg5ZWU5NTNjNGNjYiBsZWdhY3ktdHJ1bmsKKzQwNzMgYTZlNmZhZDFhMDFiMzJmZGY0NDgzM2U0ZjBmOThiNzNkMzcyNGYxYyBsZWdhY3ktdHJ1bmsKKzQwNzQgYTA5ZWZiMTM1ZGU1NTI0NjM1MGVlNDI0NWFjMTgxOTg0YjU3ZTU3YyBsZWdhY3ktdHJ1bmsKKzQwNzUgZDA3NGIyZmI2MDkxNGRkN2Q1Y2I5MDFiOTFmOTVmYjkyZWY2ODJkNSBsZWdhY3ktdHJ1bmsKKzQwNzYgNzNkZDJhOTc5ODU3ZjE3YjM2ZTkxNTMyYjE2NzJmZTY1ZGNiOTYyZSBsZWdhY3ktdHJ1bmsKKzQwNzcgYjVkNWJiY2ViMDBmNjA0ODYzNGI5OGYwN2Q4NjliZGRiNGE5M2I1MCBsZWdhY3ktdHJ1bmsKKzQwNzggYTk2MTZmNTY1NDY1NTM3ODI5NWU0YTliMzEzZTNlZDk0ZTg0YTg1NiBsZWdhY3ktdHJ1bmsKKzQwNzkgMjczNDUxODkyMzI3Y2UxZjFiMDdmMGRkNDkwOWQwZDU2ZWE2OGRkZiBsZWdhY3ktdHJ1bmsKKzQwODAgMzgyYjRmOGE3MzdhNGNmZjFhYjdiMDVmZTkzYjhkZDY3MDU0NjkzOCBsZWdhY3ktdHJ1bmsKKzQwODEgOTUzZTc0ZWFjMDA2Mjk4MTY5YzUyZWU3MmEyOWU3ZjRmNDVkNTZjZiBsZWdhY3ktdHJ1bmsKKzQwODIgY2VkM2QxMTIyZjdjYmFiMTNlMDc3MTMyZDY4ZDRkMDExOTI4ODUzYiBsZWdhY3ktdHJ1bmsKKzQwODMgMzQ0ZGQyOGRhOWM1NjYyMGY1MzZlYTFhMzhlODcyODIzYzUwZGIzZiBsZWdhY3ktdHJ1bmsKKzQwODQgYTk0OGI0NGFkNGExNTUwYjU3MmJiNzU4MTAyZmU1YzA4MzBmZDA0NiBsZWdhY3ktdHJ1bmsKKzQwODUgMmZlNTRmNjJjZGI1NDk3MmMxYTU5MmNjNjNkZWFlNGU5NzU5OGJmYyBsZWdhY3ktdHJ1bmsKKzQwODYgNGMzMDYyYzcxMzVmY2QzZDcxZDA0ZTQ4NjFkZTgyYjIyN2VmZjliMCBsZWdhY3ktdHJ1bmsKKzQwODcgNmEwZTVjZDQ5OWM0NWVkZGQ3NWNjYjNiZjgyNDNjNDU2ZDhjZjBiZSBhbHBoYTEwMAorNDA4OCA0OTZjN2U5ZjExZDI0ODIwZGIzNDUzODE0ZjYyMzRhZGQ1ZjIyOWM5IGFscGhhMTAwCis0MDg5IGNhMDIzMzk5ZTVjOTRiYjVlN2Y5MmY5YTVmMDRhNDQyYjAzYjIyMzggYWxwaGExMDAKKzQwOTAgNTJmYTRkY2QxYjBlMGExNjJiMGZkYzdiNDhiMTNlNDNiYjViMjY0ZCBhbHBoYTEwMAorNDA5MSBiNmMzNWUxZmFkYWU2ZmYxMjcxZjViNWQ4NzViMGJiNjRiZmUxNmJmIGFscGhhMTAwCis0MDkyIDhmOTY4MDI3MzMwNzc1MzhmODk1ZTM5NzU3NDFkZDliMTgwZTZmYzIgYWxwaGExMDAKKzQwOTMgOWFlN2YyZmQ4OWYxMDk3ZGM3OGE2NjE4OWFlYjRiZjBiNDEzZmI0NyBhbHBoYTEwMAorNDA5NCA0YjUwZjEwNDJlOGRjMDkwMzg2ZDA1NDcxNzkxODgyYzNiZTFmNjYwIGFscGhhMTAwCis0MDk1IDc2MzcxODA1ZDlmMzc0ZjE5NzMyODgxMjlhMjQzMzE0Y2M0Mjg4NjAgbGVnYWN5LXRydW5rCis0MDk1IDAzYjA1NzE3Yjk1MjI0YWQyYTcwN2E3NjIwNTY0NGQ5MzM3MDk5NWIgYWxwaGExMDAKKzQwOTYgMWUzYTU1M2U0NzlhZjA4ZGUzZTdkOWE4ZWE1OGQwNzM4YjU5MmRmMyBhbHBoYTEwMAorNDA5NyAzYjkwYTlmYzFlMDM5ODkyODUzYjY1YmNjZDg0YjhmZWExOTI0MDY5IGFscGhhMTAwCis0MDk4IDFmMDZmNzE5MDRjMjQxZjBhMzViYTc1ODM0NzdmOGNlOWU0YzkyMWEgbGVnYWN5LXRydW5rCis0MDk5IDUwOGI3M2UwYTdlNGYxZjE1YmY2Y2U0NGM3ZTc2YTc2OWZiZmQ4MjQgYWxwaGExMDAKKzQxMDAgM2FmYWZhYzNkN2ExNmJlYmMyOWU3NGExNGZjZGI0YmUwYTNiNmRmZiBhbHBoYTEwMAorNDEwMSAwMmQ4YzE1ODgyZmY5YWQ1MDk2OGEzYmUxN2M4MDNmYWIxOGYxMTI3IGFscGhhMTAwCis0MTAyIDUyOTA0MjhiYWQzNzE1YjczZmEwZDEyMDBhMzk0ZDcyMTkwYjA3NjMgbGVnYWN5LXRydW5rCis0MTAzIDc1YmNiMWZjNjViZTU5YzEzMjU3NjllMmEyZDI3YmY1MTQ2ZmZjNTggYWxwaGExMDAKKzQxMDQgOGNmNjQwZWYzNDQwMDc2ODllOWQzNjQ0MWFlNDM1ZWI3YWE1M2UyYyBhbHBoYTEwMAorNDEwNSAxMDA5ZWE0OTM2NmNjOThjZjZmYWY5NTVkNmNkOWFkMDNkODlkYjZiIGFscGhhMTAwCis0MTA2IGMyZTZjOWE3YTk1ZjhiNDZhZjk2ODYxYTQ1ZmEyNDRjYTFjMjEzZmYgYWxwaGExMDAKKzQxMDcgMGE2MDQ2MGU5OWYwMmI0MTk2ZTRhN2JkYzNiMjk4OGNhNzgwNDgyMCBsZWdhY3ktdHJ1bmsKKzQxMDggZGM4ZTFkNzJkNzhkY2NlNWVmNTAxYjQzZjVkNTJmMjdjNjk2NTIyOSBsZWdhY3ktdHJ1bmsKKzQxMDggY2FlYWVlMzkwZTQzZmU1NzNhOTNkMzVjMmJjZTgzNDI3MzNhMGNkMyBhbHBoYTEwMAorNDEwOSAxYjE3YWFmMjUxMDU0OTc2YmIyYzNhZWM3YzRkNTk0MTQwMWJiNGJkIGFscGhhMTAwCis0MTEwIDJiY2RkYzkwNWRhMGI5ZjhjYjUyN2U2ZmNmYjVmZThkYzQzYzcyNDQgbGVnYWN5LXRydW5rCis0MTExIDA4MDgxMWIxZDAyMzMyMGZhYjNhODk1ZmY2Y2FjOTRkNmIxM2JhYzggbGVnYWN5LXRydW5rCis0MTEyIDFjZDRmZDE2NjIzZGUyMzRlNmMyMWY4ODdkMzkzNzM0YzUzOTIyOWMgYWxwaGExMDAKKzQxMTMgNGNiZjUzNmE2ZjE4MDM4NThlNGI1NzAxOWY2YmFkNzY4NjdmY2E2NiBsZWdhY3ktdHJ1bmsKKzQxMTQgYzU0YzA3YWJjZmNmMzFmZmJkMjhlMzUwODBkYmM1MDQyMjIzOWM5MCBhbHBoYTEwMAorNDExNSA2YmU5MWM0NGNhZmZkNWUyYzNmNDI5MTNmOGRkYjIzYWY5ODViNTMyIGxlZ2FjeS10cnVuaworNDExNSA2ZTRhODllZTExNjM0YjVlZmMwZGIwZmUxMDc1M2JkODM5ZTEzMTQ2IGFscGhhMTAwCis0MTE2IDIzZmQ1MGQ3N2I1YTA1MDM2ZGFiZGRmNGJkODQ3YTc1NmM4MjNlNTkgbGVnYWN5LXRydW5rCis0MTE3IGI1YTU3YWY0MDUwOGM4ZTRkYTVlYWFhNmU1ODhhNTBlZDM3NTkxZDQgbGVnYWN5LXRydW5rCis0MTE4IGJiNjE4MTZlMWRhYjBlNDY4MTIxM2E3MjFlYzRkYWUzOWMzOTkwZmUgbGVnYWN5LXRydW5rCis0MTE5IDk0NjIxYTQ2OGI2MGQ0MTU5M2MxMmFhODAzMDE5ZjZmMzZkODNjM2YgbGVnYWN5LXRydW5rCis0MTIwIDkzZTAzNjc4NmIxN2E3OGQwZDBlZjU4MTUwMTk2YjVhOGQ5NGViZTUgbGVnYWN5LXRydW5rCis0MTIxIGQ4OGFmNThlOTVjZDA4NDRlYjk5NTFhN2M2YmI0MmQ5MDU3MzY4YWYgbGVnYWN5LXRydW5rCis0MTIyIGUyNjY1ZDlkNGU0NmQyNTQ5ZDU5YmUwODc1NWUwZDcxNWRkMTdjNzUgbGVnYWN5LXRydW5rCis0MTIzIGNmMjljMDlmMDdiNjFmNzllYTIzOGIxN2QxMmIwNjI0NTZkNjUzNjAgbGVnYWN5LXRydW5rCis0MTI0IDAzZDM1MWI2ZjczOGU0YzViOGEyZGZiMThkYmFmODM3ZTg5MDhhZWEgbGVnYWN5LXRydW5rCis0MTI1IGM1MDEyNzgwOTE3OWRkZWQ3YzdhMDEzODkyZGQ0YWEzZGFmMGUwMmQgbGVnYWN5LXRydW5rCis0MTI2IGI5NDkyMjRhNGJkNTYxYThkODUwYjEzZWI0OGY0ZTliODlmMTUxNjQgbGVnYWN5LXRydW5rCis0MTI3IDkwMmZmZjU1ZGIzODFmMDkzNGQ5YWMzNWU1ZjIyYjZiN2IxZmQyYzkgYWxwaGExMDAKKzQxMjggNTE3YmFhZTFiNjYzYzI2MWI2YTA3ZGZmNTlmMWIwNjEwOGU1ODY5MyBhbHBoYTEwMAorNDEyOSA0NjhiODc4NGRhNDhiNzRhMDdlYTgwYmI2MDE1Yzg5Y2M2NWVmNGM5IGFscGhhMTAwCis0MTMwIGJmY2ZmOGFmOTc1MTY4N2ZlOTFjMWY1MmJhYTk5MzE3ZGU4N2JkODYgYWxwaGExMDAKKzQxMzEgZjg1NDBhOGNmNWQ3OTQ2NDViNGI1OGJlNWI0MDU4NzhkNDIxY2MzNSBhbHBoYTEwMAorNDEzMiBhMjQwM2ZlMmM4ODU4MDU1ZjY1MWE3OTE5MDA4MjgwNDhhMWY3OTQwIGFscGhhMTAwCis0MTMzIDJiMDdkOTI1YzA5ZDQxZWVkZDFiZjdmMjg0Y2JkOGFmYTgzZmNmYWEgYWxwaGExMDAKKzQxMzQgZGYyMjA0ZTQ3YjY1Zjc1YTA1ZWUyMWQyZTU4MmUxYWNhYjIzNjNiNSBhbHBoYTEwMAorNDEzNSA3N2M5NDkzMDFkYjM3NDkwNGJmNjViNzVlMTU1OGU4YmJmMTBiZWIyIGFscGhhMTAwCis0MTM2IDc4NzQ3NTYxMGIwMmUzMWRjNTU3MGExMzJkMGE3N2EzY2M2MTM3YjcgbGVnYWN5LXRydW5rCis0MTM2IGI3MDcyZWM3ZDY1MjM3YWNlNDcxYWQzZmIzODIxMTE0YzVjNDdhZWMgYWxwaGExMDAKKzQxMzcgN2IxYzQ5YTdkMzc1ZWEwOTVmNWI2ODcwYWNhMjE0ZDJiMTYyMDkzNyBhbHBoYTEwMAorNDEzOCBkYTJhZmMwMjk4YTcwZmNlN2QzYzE5NjhhYTQwNjIyOWMyZTY0NWI1IGFscGhhMTAwCis0MTM5IDlkYTQ5NDIzODc3M2M5MTZlMjVhNmUzMTVmZDZmYmQ5ZWYxZjRhMjIgYWxwaGExMDAKKzQxNDAgZmI1YmI5ZTdjZDdhODE5YzFkNGUyYWE4NTM0ZGQ4YTJkNjg1MzQ2OSBsZWdhY3ktdHJ1bmsKKzQxNDAgZWJlODY4MWNmNWZlYWYxYTRkZDk4MDA3NGUwYjQwMjA2YzA4OTE5MCBhbHBoYTEwMAorNDE0MSA4NzllOGQwNGU1ODk2NzdmYzY0MDk1ZDAwNzMyZDZlZTE3ODQ3OGRjIGFscGhhMTAwCis0MTQyIGViMTFhMDk4YjdmZjJjY2RlODM5ZWE3NjAxMGExYzczNTZlNWQ3MzcgYWxwaGExMDAKKzQxNDMgOWU3ZDIwNmE0OTIyMTY2YTIxOWFiNTlkNDIzOWI1MmQ2MzE5OWUzNCBhbHBoYTEwMAorNDE0NCA5M2RmODMwMjJiZTg3OGMxMTA3NmE4NjA4OGI4YzIwZTAxNzUzNGVlIGxlZ2FjeS10cnVuaworNDE0NSA3N2JiZTU4YWZlYWI1MjUzMmJhYTE3MGVmNTljNDM2ODkzNmY5ZmE2IGFscGhhMTAwCis0MTQ2IDAxNWFmMWM0NzcyNjQyN2ZlZmJhNmFjMDRjZDZlNGI1NzhlNWQ2NDIgbGVnYWN5LXRydW5rCis0MTQ3IDE5MDFlMDgwODZmOWZkNjRlNzBmMWUxMmI5Mjc2NDBjYjc2NmRlYmQgYWxwaGExMDAKKzQxNDggZjFiMDQwYmNhM2UxMmVhZDRiZTU5Y2VjNDgwNThlOWNiNzU0ZDVlNSBsZWdhY3ktdHJ1bmsKKzQxNDkgMGZiM2FhNWNhNGMwMmVjZTEwMWMzYmQwY2VkNTg0ZGU0YmJlOTliZiBsZWdhY3ktdHJ1bmsKKzQxNTAgYmE5NTdhYTQyMjQxYTljZTkwYjU4Nzc1Nzc5OTA0N2I3MTZlNTZkMSBsZWdhY3ktdHJ1bmsKKzQxNTEgMjIyODAyZjBkOTc4Mjk1NDVmNDEwZDc1MDFmYWU2ZTQzYmZmNGNlNSBsZWdhY3ktdHJ1bmsKKzQxNTIgNGJiYTNjOTA3ZmZhZTQ3NWNhMGIyMzUxZGIzNWRlMzFkOTBmOTNjNSBsZWdhY3ktdHJ1bmsKKzQxNTMgMTkyZDg2OWJlYjk3MzZhMTgxNzY5MDc0MzZhMDU0YjkwZjQ5OGY5YiBsZWdhY3ktdHJ1bmsKKzQxNTQgNmY4MWIxM2ZkNmFjMDhkNDJlNjE4OGVmYmI5YjM2NGZhZmQ1NGZmYSBsZWdhY3ktdHJ1bmsKKzQxNTUgZGUyZGMxYmM0YmFlMWNjM2M4YzllOTM4MzcwZGY3YzQ3NzMzNGU2MSBsZWdhY3ktdHJ1bmsKKzQxNTYgMzc1YjhiODYzMTI2ZmFlZGZlOGM2MDliMDljYjFlNzRjMWFhNGUxMSBsZWdhY3ktdHJ1bmsKKzQxNTcgNTY1NmY4ODdmZmYzN2VmZDkzOWU4N2Y2YTNhYjVkOTg4NzNlNjExNSBsZWdhY3ktdHJ1bmsKKzQxNTggMzY2YTAyOTJiNjE0MmU2NDUwZGMzNWViYTZjZTdjNWIyYTcwMzkxMSBsZWdhY3ktdHJ1bmsKKzQxNTkgMmVmOWQ1MGFiNjU0YmE1MDAzYmU0ODhiOWU4Mjk1YjA4MzFjMzBhMyBsZWdhY3ktdHJ1bmsKKzQxNjAgYmI1NjZkMjhjYWEwZDNhZmU5MWJlNjY4ZTE1OWYxY2IzZDk2OGJhYyBsZWdhY3ktdHJ1bmsKKzQxNjEgNTg0MGU1NTNlYjhkODlmYzc1OWRlMzI2MGJkMWJiOWQ1MWZmOWY0ZCBhbHBoYTEwMAorNDE2MiBkYjBlYWVmNDJjYjk0ZTkyMTlhZTg5NmE3ODc0M2FiODk1NmIxYTlkIGxlZ2FjeS10cnVuaworNDE2MyA5OTI4ZDMzMzgyMWRlMGJiYjhiOGE1NGMxMWExMWRkNTZmMzQ3ZmY2IGxlZ2FjeS10cnVuaworNDE2NCA1MDRiZmE1OWI5NTRlZjk3ZWMxZjQ2Y2I4MjFiY2M0YmExNTI5ZGI3IGxlZ2FjeS10cnVuaworNDE2NSBiYTliNzU1ZTE3ZmUwYjJkZDIwNjI3YTA3MGJhY2FkMjlhOTA3NjFkIGxlZ2FjeS10cnVuaworNDE2NiAwZDYxMzNhYmI2ZTVmY2JmODgzZjhhMGJhYzE2OTE4NGQ3MmE4Njc4IGxlZ2FjeS10cnVuaworNDE2NyBhMTYwMWZjMmIzZTQ0MTRiYTMyOGEwYmUzMzM3NTdkZDVjMmEyNmFhIGxlZ2FjeS10cnVuaworNDE2OCAyZjliYTJlYmNiMTA3M2JmZTE3Y2I3ZTc0MGU0ZWE2YTAyN2U4MzMwIGxlZ2FjeS10cnVuaworNDE2OSA0MjEwYjBkZWYzZDc4MTUwNTNhNzFiYTIxY2NhNzc2N2JhZDk2NjY5IGxlZ2FjeS10cnVuaworNDE3MCAxZGQzMTE1MzcwOWRkNWM2Mjc4ZjZlYmJhYmNmNDJmMTBmMDY0MzVlIGxlZ2FjeS10cnVuaworNDE3MSA0NzBhNTE1NDVkNmM0ZGNlY2M4YTEyNWY3ZWZhZmUzMGRiOTRjN2FiIGxlZ2FjeS10cnVuaworNDE3MiBlNWE4ZjY0NzkyMTY5MWQ5ZTI4NzExNDA2MzRmYjAwNjAxZjE0M2I1IGxlZ2FjeS10cnVuaworNDE3MyBlMTY3NjljZDdhOTAxZWQ3NDNmZDMyZjgyNzc5NTBiZmUxZDYwM2Q0IGxlZ2FjeS10cnVuaworNDE3NCBjZGY0NGMxNGMyNzA4OTBjYjBkNzU0MGRmOTYyOWE1NGRjZTY1NzgyIGxlZ2FjeS10cnVuaworNDE3NSBlODBjNzEzOWY1MzNlNGUzOWFiMTRlZmEzODBkNWNmYTc0ZmRiYzE3IGxlZ2FjeS10cnVuaworNDE3NiA2YjBmMGVmMmMxMzJjNzU5NzE5NmY1NjVlYzQ0NGQzZjg4YzYxYjQyIGxlZ2FjeS10cnVuaworNDE3NyBiZDFkMGJhNDBmOTBjZTQyNmI1MTU2YmI3YWQzZDhhNjk2ZTRlMjEyIGxlZ2FjeS10cnVuaworNDE3OCA3ZjIwZjRiOTMzNWZhMDc4NjUzNDNjMWJjMmM4MjdiYmJkZjkyOGEwIGxlZ2FjeS10cnVuaworNDE3OSBlODY1MWQwZTRhM2M3MTg2MzVlNDQwMTEwY2QxMjNlNmM4ZGJkNTA1IGxlZ2FjeS10cnVuaworNDE4MCA1ODFmZTZiZmM5MDI0YTJlYTA1NDc3NGNkMWEwOWI2NTdiY2E2ZDk0IGxlZ2FjeS10cnVuaworNDE4MSBhZmM1NzQwNjRlNjJjYWU4Mjk0ODZkNzc4ZjYxYjM2Y2ZhYWI3NzI5IGxlZ2FjeS10cnVuaworNDE4MiAxNzUwMGNmOTUzOGYxYTlmZWFmNjg3MmVkNjIwZTQ5NmFkOGVhNGUzIGxlZ2FjeS10cnVuaworNDE4MyAyNTQzMjZmMjQxNWY0NmJkMDJhMjU3OWExZWE3ZDUwODQ4NDcxZmQ2IGxlZ2FjeS10cnVuaworNDE4NCA4NmVkNTM4NDRiMDdjZjY0N2IyZDc0ZTRmMjMzYWRmY2YxYmViMWIwIGxlZ2FjeS10cnVuaworNDE4NCA5MDdkOWU3YmY0YjU4OWZjMmYwMmE5YjkwMGM1OGY0MWNlNTU0ZDg1IGFscGhhMTAwCis0MTg1IDk2MDBkM2Q1Y2NlN2JkZDk0MzA5Mjc3NDdkZTZkOTNiOGRjYzc2YzUgYWxwaGExMDAKKzQxODYgZWUyZjg4YTRmOWUyYmNlNjM5ZmJkYzI1YmQ4ZGM4YWQ5ZDg5ZjVmMCBsZWdhY3ktdHJ1bmsKKzQxODYgMjg1ZmU4OTc5OTc5OTU3NjU1ZTc2ZGMwMmJkYjAwNDA4YjhiYTY0ZSBhbHBoYTEwMAorNDE4NyA0NThkOGYzZWYzMDc1ODI3ZTFmZmU0YmU0Mjg1YjQzYWE5MjA5ZTA3IGxlZ2FjeS10cnVuaworNDE4OCAyOWM3ODUxNmVlMzMzM2MwOTViZThmYmRlMmIyYjk5ZWQ1N2FlYjZmIGFscGhhMTAwCis0MTg5IDc4MzFmZmRiNzg3YjgzZjJkMDZmZTE3YTliM2M2YzU5MTMyMzkzZDEgbGVnYWN5LXRydW5rCis0MTg5IDIxZDdmOTMyODE5YjRkYThlZTdkYWM5YmVjYmRkYmVkY2M0MDBkNjcgYWxwaGExMDAKKzQxOTAgZTk1YjA3MDFjOGI1NGYyNGRmOGM5MGI4MzA3NDM1NzVlZmQ3YmY2MiBsZWdhY3ktdHJ1bmsKKzQxOTEgOTYwMDlkYWU5ZDYyNjI2YWE0ZDIzN2ZlNWRkNDVmZTgxZWQ3YjEzNCBsZWdhY3ktdHJ1bmsKKzQxOTIgYmVkZTM4YzRhOWY1ZWNkNDIxMDczOGU5ZGQ5NTY3OWMyOGZhMzcxNCBsZWdhY3ktdHJ1bmsKKzQxOTMgYmMxMWMxZmY2Y2FjMDMxZjkyNzk4NmIzNGIwYTRiOGQ5MmY1OWIzMyBsZWdhY3ktdHJ1bmsKKzQxOTQgNTk1MjY0YzJmMDZkNGE2MDk2NjE2MmFmNWY0MTE0MWM5M2Y3MmI4ZSBhbHBoYTEwMAorNDE5NSA2YzBlMTFiOTQwMDlhMjUyMzk5MzhmNTIzYTcyZWNkZTc2MzZhZDAyIGxlZ2FjeS10cnVuaworNDE5NiBkNWI2N2QyZWM3ZWUwMzEwMGE2NjgzNzQwZmRkMGY3ZmY3MTIyNjFlIGxlZ2FjeS10cnVuaworNDE5NyAzNzI5MDNiNjM3MTFhOWJkZDhhZmMzNzczNGVlYzQ1ODMyOWQzNThlIGFscGhhMTAwCis0MTk4IDE5NDA4OTJkMmZlM2E4Y2YzYjc0Y2MxMmQ2NzAzOThjM2U0ODAzNjMgbGVnYWN5LXRydW5rCis0MTk5IGUzYTlkODFkZjE4NTNjOGIzNzU3NjI2YjE3YTg1YWE4M2FjYjRjZjYgYWxwaGExMDAKKzQyMDAgM2Y3ZGRiOGJiMmY2M2I3M2FiMDcxZmNiN2UxZjhhNjIyYzY1MjA2MyBsZWdhY3ktdHJ1bmsKKzQyMDAgZTdiNWZlNzZlNWVhY2FlNGM2NjI4YThlM2UyOWZlOGNkNGM4MTRlYiBhbHBoYTEwMAorNDIwMSA4Mjg2YTY2MjUwMmJiNmI1YjBhZTJiMWIyYTY1YmExYzhkZTdiYWRjIGxlZ2FjeS10cnVuaworNDIwMiBiY2ViNzIwZWUzNjJiMDk0N2UwYThjMTI1YTNhNzFmOGM0NmQ3NmJjIGxlZ2FjeS10cnVuaworNDIwMyAwYjY0NTcyNjk1N2UyMzI5YjljODNhZjA4ZGE3MTRiZWRiYWQ2YWMwIGxlZ2FjeS10cnVuaworNDIwMyA0NjM5YzNhZDgzNGI3Y2MwODFkODBkOGZmZGZmZWYwZWU1M2Y3YmFmIGFscGhhMTAwCis0MjA0IGVjMjVhYWQ0MzcyNGYwNTVhM2Y4MjZlMzlkZjcyNTVkYTkxNGNkZmEgbGVnYWN5LXRydW5rCis0MjA1IGNiYjYyZWU4ODU0YTY0M2VjOTY2OWZlM2M2NTdlYWRjNjFlNmEwNjkgbGVnYWN5LXRydW5rCis0MjA2IGI1NDY4ZDg4NmNiNTRhMjAzNGJkMDY1NjQ2ZTRiZDhkZTUwN2Q0ZTUgbGVnYWN5LXRydW5rCis0MjA3IGJiZTllYTU1ODI2MWVlNmRlYmRhM2Y4MDIxOTQ0M2VmYzMwM2NkZmEgbGVnYWN5LXRydW5rCis0MjA4IDc4YTM2NTQwNmM0Y2ViZjg1ZGRjN2IwMDFjNmNhMzQ0Yjc5N2FhZTEgbGVnYWN5LXRydW5rCis0MjA5IGY1MzM3OTFhY2M3Nzk3ZWYzM2E2ZmFmZmZkM2MwZWIyOGUzNTlkZjggbGVnYWN5LXRydW5rCis0MjEwIDY5N2VlODlhZGRmZTFlNjU1YzcyZGFhYTYxMGVlYmU0MzEzYzFhMDYgbGVnYWN5LXRydW5rCis0MjExIGI5OTU3OGI4NzhjZTZjNGM2ZmJlMTEwYWU0MDRhZDQxMWY1MWMzOTEgbGVnYWN5LXRydW5rCis0MjEyIDRkNDIxZjllODM3M2NjMGEzMTA0ZTFiZWI3ZDY2YjlmMmQxOTg1MDMgbGVnYWN5LXRydW5rCis0MjEzIDQ4ZTZiMzE5ZjNlNDgwZDk5YmY0MDM1ZWJhODc2ZWZlMDdmOWY0MmQgbGVnYWN5LXRydW5rCis0MjE0IDdhMmU3NmVjYjllZjkxZGY3M2IwYjNkMjEzOTM3ZWY2MTc2NjBmZmIgbGVnYWN5LXRydW5rCis0MjE1IDliYzNkYmYwODcxZDI2ZTA1MWFmMjU2YTY0ZTQ1ZjNlYTk3NTIwMzggbGVnYWN5LXRydW5rCis0MjE2IGQzNTM1ZDA2MjZiNDY4MDJiNzQ4NWJkZThmZTYzMzFhZWFiMDliNWYgbGVnYWN5LXRydW5rCis0MjE3IDk0MmM0ZDA5NGEwYzQxOWM1NWE0M2Y0OWJmM2JhNTJkY2U1MWRhOGYgbGVnYWN5LXRydW5rCis0MjE4IGEwNDY4OWY5OTgzZTdhZDdiMTZmZTYyZmVkZWJkNTg1MTI3NzY1ZjggbGVnYWN5LXRydW5rCis0MjE5IDZlOTEzMDQ2MDI4ODY3YTBlZWI0OWQ2Mjc3NGFiY2M4NzNkYzk4YTggbGVnYWN5LXRydW5rCis0MjIwIDkwNzYwNTMyMGE1ZmQ3YTRhNTJiOTc1OGU5N2ZmNzA4OTc4NDk3ZDkgbGVnYWN5LXRydW5rCis0MjIxIDY4ODEyYjc2M2UwZTJiYWQyYjc5NGM3MzM2ZjE3NmQyNzNkYjQxOGQgbGVnYWN5LXRydW5rCis0MjIyIDZjYjc1OWM2ZDE3OTBkMDZlMmMxZGE4M2M4OTA0MTZjZWRkOWIzOGMgbGVnYWN5LXRydW5rCis0MjIzIGIwZGNhMjk3MmIyYjE4ZDkzZTZhZDhkZjBjZTU3NjNjMWZhODU3MTUgbGVnYWN5LXRydW5rCis0MjI0IDUxYzJlNWE5ZjM5Y2QxOTFmMmM0ZGIwZmVlYzI2NDhiMGVlNzI2MzUgbGVnYWN5LXRydW5rCis0MjI1IDdiM2E3Njc5MjRhMWE5ZTMyYjU1MDcxZjE1OTc2YjJkMDU2OThkZjMgbGVnYWN5LXRydW5rCis0MjI2IGRmN2FhNTRhZGNkMjliYzAxYjQ1OTFlYjQyM2U0MWFiOWNiYzcwYjEgbGVnYWN5LXRydW5rCis0MjI3IDlkMzYyZTVlNGU3ODk5MGZhYWQ4YjU5MTc0ZjZiZDc4YzA1MThjOGMgbGVnYWN5LXRydW5rCis0MjI4IDE3YzgwYTk1MjkxNDM5MzZlOTNjMzM5ODMxMTQ4NmUyOTM2NTEzYWIgbGVnYWN5LXRydW5rCis0MjI5IDUyNTdhZjgwZTE2MTA4N2M2OTU3MGVjMjM1N2MwYmJkNjM0OGU1NjYgbGVnYWN5LXRydW5rCis0MjMwIDdlMDAxYzQ4MTBiYmM3NjJiMGYwNWE3NzliOTY3NzE0ZGFkZDBjZjkgbGVnYWN5LXRydW5rCis0MjMxIGZmZGZhZjFiMjRkNTQwY2NkMjk2OWYzNTk2NWM0NTYzOGQzNDUxMjIgbGVnYWN5LXRydW5rCis0MjMyIDk4YTIwYTQwZjYxM2IxM2RmYTdhNTRhZTQwYzMwOWY1ZDIzZjNkZTYgbGVnYWN5LXRydW5rCis0MjMzIDc2Y2M4NThlMzM5MTU4MGQxNTVhNTkxN2RhMzkzMGUyYzMxMzZjZTMgbGVnYWN5LXRydW5rCis0MjM0IDkyZGYzMGRmNWQ3NzllODIyYzAwY2RhYzJiNDU2NzRlOTA3NTMzYTUgbGVnYWN5LXRydW5rCis0MjM1IDIwODk3ODE2YTRiNmM4ZGQ2NDE4YTY0ZWI5ZWE1NGEwYWIwZDg2MmQgbGVnYWN5LXRydW5rCis0MjM2IDFjMjhmMTkzNGExMWVlYTRiNjgyOGQ1ZDNlOGVhOTY3NTJlMTY2NGEgbGVnYWN5LXRydW5rCis0MjM3IGEzZjE5OWU4YmFjNmYwMDMyMTRiMDBkNjBjZGNiYjBkMjFlYTgxYTcgbGVnYWN5LXRydW5rCis0MjM4IGRkMTY3YmZkN2EwODZhOWVlNjYxYWZhYjA4MDVhNDNmNDJlYzg3YzIgbGVnYWN5LXRydW5rCis0MjM5IDc3MDdiOTcwOGY2Y2M3YzNmOWViZDdkNDY5MmJhMDZhMzAzNjRiMTkgbGVnYWN5LXRydW5rCis0MjQwIGNiODRkZDUxYzJhYTMxMGU1YmFlNzFkOWRiNGU3NDFjYTBlZTViZmYgbGVnYWN5LXRydW5rCis0MjQxIDU2YTk4NmU0OWY1NjdjZDY4NDg3ODRiYzViNjQ1MGYwMGVlZTJjMjIgbGVnYWN5LXRydW5rCis0MjQyIDQzYWU3ZmNkNzgzNTJhMmY3Y2UyOTVhYWRhNzRkZWVkMTg1MTc1MzggbGVnYWN5LXRydW5rCis0MjQzIDM2MjE0Yzg2MTE0NGRkNjJhMjBhZDRkM2IyN2I5YzgyOTNmNjA0MGYgbGVnYWN5LXRydW5rCis0MjQ0IDUzNWFjYTZmZjdlOTEzNDcxOGEwMmI0ZjRhZmIyMmJiZTk3NjNiMTUgbGVnYWN5LXRydW5rCis0MjQ1IGE1ODRiNGJiYmM1OTM0YzFhZTQxZWQ1MjhhZTc5MmMxMDRkZjUyYTUgbGVnYWN5LXRydW5rCis0MjQ2IDY2ODUwNDg0M2QwZjQxODljODQ1MzgyZDBiZDRiY2RjNTc4MzJiNGIgbGVnYWN5LXRydW5rCis0MjQ3IDliNTMwYmI1NDY0MmJhMTg2YmI1NzRiNTg5NjAxMmIyMDA5Mzc0ZGUgbGVnYWN5LXRydW5rCis0MjQ4IGZhOGJiZDA5ZjJlNmI2YzZlOTc0NzE5N2EyODM4Y2U4NzdjNDQ2YTEgbGVnYWN5LXRydW5rCis0MjQ5IGI3MTFjOTAxMDIzMjkzMjY5YjFkZTE2NzgxZmJiZTA1ZTc4OWEwMGQgbGVnYWN5LXRydW5rCis0MjUwIGIxNjdlMzM1MDQ5MTIwZWM3YjBmYzVlNjg3NDRjNWU3NmY2MGE4NGEgbGVnYWN5LXRydW5rCis0MjUxIGYwN2M0ZmYwZjc5NDY4NjcyMGYwZTE5YmU3MzU1ZjRmYjQzZTg5MWUgbGVnYWN5LXRydW5rCis0MjUyIDYwNjYwMzQxZWUxMDcxYjQwZmVmOTM1YTNjMTY2MTBlNTZlODJlZDkgbGVnYWN5LXRydW5rCis0MjUzIGFkM2YxZDM2MmMxNDA2Y2ZjMDIyYTQwYTcwZWE5ODA3ZWIzYTYwY2EgbGVnYWN5LXRydW5rCis0MjU0IDE0OGVlMmFhNjNlNmRlYzU5MWFjNzQ1MjBmYWVjMWQxYjEyY2U3ZDkgbGVnYWN5LXRydW5rCis0MjU1IGI4NDAyOTZiOWUwNThkMjc0YTg5MDA0NGQ4Y2FkNTNjZGVlMDcyNTUgbGVnYWN5LXRydW5rCis0MjU2IGZhZmE1ZGM4MTAwZjg0OWJmZTcxZTRmMDY4MjBmOGIzNTQ5OTJmMDQgbGVnYWN5LXRydW5rCis0MjU3IGI0MDhkNmE2MzgxOTUyMzllNjI3ZTdhMDU4MThlZGI0ODZkN2Y3ZGEgbGVnYWN5LXRydW5rCis0MjU4IDViOTJhMDgzOTM0ZGJmYjM5NDc3Zjc0YzA2NGM1NjBjYzUxN2UwMTQgbGVnYWN5LXRydW5rCis0MjU5IGYyY2UzMTkxZmM5ZGUzOGI0NjFiZjViYjQ0ZTkzYzhmMmEyYTZhZTUgbGVnYWN5LXRydW5rCis0MjYwIDc4MjUwOTgxM2Q1NzJiODZmOTBjYzRjZDI3Y2JhNWMwNzkzZWM0ZWIgbGVnYWN5LXRydW5rCis0MjYxIDZjZmQ0M2Q1YzA3NDZiMGVjODBlMzRlNGRhNTlmMjhlNzcwYzcxYWMgbGVnYWN5LXRydW5rCis0MjYyIGQ4ZDk0MWZhZjUxMTBiMjMxNmQyMzdmOTM4MWEyNGFjZmZjM2Q4YzggbGVnYWN5LXRydW5rCis0MjYzIGQ4OTJhYzRiNGZiOTllMTQ5MWEyNzA1MjI0MTBmMGM1NmJlOWI3NzUgbGVnYWN5LXRydW5rCis0MjY0IGVhNWIxM2QxMWExMzA1YmI0MDRlZDBjYThhMjhjMWRmODJjY2VjYzAgbGVnYWN5LXRydW5rCis0MjY1IDJkNWIzNmE0MzhhYjljZjM4NThiN2Q3MGJkNTk2MjI0OWVmY2EzODEgbGVnYWN5LXRydW5rCis0MjY2IGM0N2Q1MjZhOTRkOTJlMzhlNjY2ZThjZjNlMjEzMjY3MTVjMDQxODAgbGVnYWN5LXRydW5rCis0MjY3IDA0MDZhMjA4Y2E1ZDNjMTM3Yjk1ZDZkYmJhNmVjM2VjY2Y0MmFmNDggbGVnYWN5LXRydW5rCis0MjY4IDYzNTNmZTI1Y2RjZTRiZTUzYzk1NzhlZmMwNmNkYWY1YTUyY2Y4N2UgbGVnYWN5LXRydW5rCis0MjY5IDNiNDcwMzE3M2NhZjg2NjRmZTE0ZjAwNmRhMmU5ZTUyZTk0NGRhOTggbGVnYWN5LXRydW5rCis0MjcwIDIwZTFkMjk2ZmRjYzg2YmNlYjgyZDYzODdmMTY0MDk0NDMwODEzYjYgbGVnYWN5LXRydW5rCis0MjcxIGE3MTBmYjAwMWEzZmI0NTEzYzIxZmIxMzRjODgwNGI3NjQ2MTI0OTUgbGVnYWN5LXRydW5rCis0MjcyIGEyNmIzMWUxNTliZWM0MWQ3OGI5NmZmM2Y1YmE3ZjAyNGYzOTAyMDcgbGVnYWN5LXRydW5rCis0MjczIGNlNTQ0N2RiOGY1MzdlMmEwNGJiYTM1MGVmNDllM2U0NTQ0NTBmNWEgbGVnYWN5LXRydW5rCis0Mjc0IDQwNTk0ZjgwYWIzYzJmMjg5ZTIwOWY2OTU0ZjkwZTRiMWJlZTdlZTEgbGVnYWN5LXRydW5rCis0Mjc1IDc2ZDBmMmIzYjllZTcxMTc5ZTBhY2Q1MjE0OTA0MTFmYmFlMmU5NjEgbGVnYWN5LXRydW5rCis0Mjc2IGE2ZWYyYzk3Yzc3NjFlZDIxMjcwYmE3YWM1ZGVlM2FlZjYzZTExMzkgbGVnYWN5LXRydW5rCis0Mjc3IGIxMWEwNjY4YjE4MWNjYmI0NTZkYjc4NDgyMmI5OGJkODM0YzkyNzEgbGVnYWN5LXRydW5rCis0Mjc4IDc5MzFkZTAxZTY5MzdkZTVhNGQzMzFkNDM1NTViMGYyYjNlNjI3YTAgbGVnYWN5LXRydW5rCis0Mjc5IGNlODk3ZTc1MmNhNGFjNTUxNTMxYTIwMjJkMjlmNzE0MDM4ZDQ5ZDkgbGVnYWN5LXRydW5rCis0MjgwIGY1ZjNkZGZlYzNjN2IxNWNjOWRjY2JhZjExYTFjNTE3ZTk3NmViMTMgbGVnYWN5LXRydW5rCis0MjgxIGI0NjRlMWQwYjJmYjQzNGM4ZjZiODhiMjQyNThjMjM2ZmZhYTc1NjIgbGVnYWN5LXRydW5rCis0MjgyIGMxYjBkN2VlZDlmZGZhYzZjMGI0ZDA5NzU3ZDI1ODJkNzFiMWI4ZjQgbGVnYWN5LXRydW5rCis0MjgzIGM0NTM2ZDhhZjdiNWQ0ZTgwNWY5ZjVkZmFkMDY5MDg2MWVkMjA4YzEgbGVnYWN5LXRydW5rCis0Mjg0IDIxNmI3NTU1MTVlNjVkMDFlZDI0MTdjZWE5ZTcwYWM0YTY4YzlkZGIgbGVnYWN5LXRydW5rCis0Mjg1IDc5ZTQyMDgwNWM2NzIyN2IzODk0MGRiNTk0MDFjNDIxODVlMGE1YzggbGVnYWN5LXRydW5rCis0Mjg2IDM5YTRjMTVhY2IzMmRiZTIxMGNlOGJhMWYwM2ZjYjU4YTUxZmI5NzEgbGVnYWN5LXRydW5rCis0Mjg3IGY4YmFhYjVjMDE2NTI4NTA1ZDgxN2E2YTk3ZGZiN2FmOTQ4NGU2ZTggbGVnYWN5LXRydW5rCis0Mjg4IGQ3OTk4ODljMDFlMzViOTNlODg0ZDk3MmM2ZWE3MjYxYmY3NDE0NjYgbGVnYWN5LXRydW5rCis0Mjg5IDEyMDNmMDYyOTUyNzUzMWM4MGI1OTc0MTk2Njg2ZGZhYTgwZWI4ZjIgbGVnYWN5LXRydW5rCis0MjkwIDg3MzY0ZDllMzQ0NGU5NWY0N2E0MDdhODI1NDA2NTYyNzE5ZDM4ZDYgbGVnYWN5LXRydW5rCis0MjkxIDVmNmFjZDFhYjVjNTAzZmQzZmU5MDhiMTA3NTQ1Y2M4YzJjOGI5MTIgbGVnYWN5LXRydW5rCis0MjkyIDFmNGE4NmRiY2Q3OTA2NDE3ZTlhODAzNDEzOTgwZThmNDgxMmVmMTUgbGVnYWN5LXRydW5rCis0MjkzIGJmZDExNjIwYTJkODFlODMwNGY0OGY2NTUyMmJiNzI5NDg5MDEwNGUgbGVnYWN5LXRydW5rCis0Mjk0IDIzZjAzZWYwMDM2MWJjNzcxNzc5NWIzMWRkYzkzMTUwYTU0NDJiNTUgbGVnYWN5LXRydW5rCis0Mjk1IDY1Y2M3MjdmMTQzNmMwNzk3MjdmZmRkNzA5MTZjYjQ1N2I1ZGE4YTggbGVnYWN5LXRydW5rCis0Mjk2IDgyOTRiYmQ5NDUzNTBkNDFkNGVhZTM2ZTUxMjU4NjNkYjM0MzZmYjYgbGVnYWN5LXRydW5rCis0Mjk3IGQxZTZjOWE2NGE1NjM4NDFmNjAxNzdhYzkwNzczOWY5NTNmMTU2MzAgbGVnYWN5LXRydW5rCis0Mjk4IDA5NWMxY2M3ZjJiYmIyMmZmMTE2YjAzMzdhYzNiZDJkMmZlMzdjZDYgbGVnYWN5LXRydW5rCis0Mjk5IDUyNDNmYjE4N2QzNmM2MGIwMTIxMzNhMWE1YzY2MGQ3YTM1YTEyNjQgbGVnYWN5LXRydW5rCis0MzAwIDBkMzE4NDc1ZjllMzcxOThiNWEzMjBjOGUxMGU2OWE3NTIyM2IxNGMgbGVnYWN5LXRydW5rCis0MzAxIGI3MjQ1OTk0MDFmZjczZmJiOGQ1OTViOWIzZDYzMDkzNjM0YjQ5OTQgbGVnYWN5LXRydW5rCis0MzAyIDZlMjNhZjY0NWI0MGJkZDhlMzFlYTBjYzRjNzJkMzBlZjc3OGYzMTUgbGVnYWN5LXRydW5rCis0MzAzIDFmYzRkYjc5MTQ2YWU1ZWY1NzdjMDZmYmE1Y2RmN2M1OGQyZWU0N2UgbGVnYWN5LXRydW5rCis0MzA0IDE0NTM5MWRmMjY1NzllMWM2ZmM0NDEwODA4ZWE2ZmI5MTQ5NDVlNTcgbGVnYWN5LXRydW5rCis0MzA1IDA5ZGU3MjNiMjU5NjgyNjY1YzQ2NjAyMmMwMjIwMmMxZmMxZmUxYWYgbGVnYWN5LXRydW5rCis0MzA2IDlkNGFkZDQyZWUyMmZmNDI4OTNlYWYzNzcwMjgwOGEyNzUxNTdmNzEgbGVnYWN5LXRydW5rCis0MzA3IDI3ODZhY2JhNmNlYzFjZmI5YTU5NzExZjRjZTYxM2QwMjUzNmNjYTkgbGVnYWN5LXRydW5rCis0MzA4IDlkYmRiODNkNDE3OGYzOTI3NThlYzhhZjhkNDNiYzEzYzI0NGYzNDEgbGVnYWN5LXRydW5rCis0MzA5IDE4MjI0NjVhMzViODBjZmNlNDI4MzgyZTc1N2FiYjRiMjc3NDI0NjMgbGVnYWN5LXRydW5rCis0MzEwIGUxNWY5NzYxY2IwMzViY2I2MWQ2MjRmY2VhYTUzMTlkYTUwZWY4M2YgbGVnYWN5LXRydW5rCis0MzExIDBiMDgxOTZlOWZmNjE2ZWMzNzQ2M2RmMzM2MjIxMzc3NzhkMDNiMjIgbGVnYWN5LXRydW5rCis0MzEyIDU0ZmRjOWE5NWY0ODkwOTNmZjVlZTMwODg5Yjk2ZWY2NzM2ZTY4NzIgbGVnYWN5LXRydW5rCis0MzEzIDc4ODk4YjA0YTY1YmVmMWU2MjFmZmY5NTE3NTNmNTczMDQ5NTc0ZDcgbGVnYWN5LXRydW5rCis0MzE0IGQ0MDVlM2U4ZmZkMzQ5YWU3NjNlYjdiOGNmZGNmNGZiNGFkMjVkMGYgbGVnYWN5LXRydW5rCis0MzE1IGVmMDk0NjU2MDYyMGFjYjU4Nzk4OTJmZmE2MWQ0YjUxMzNkMjhkODggbGVnYWN5LXRydW5rCis0MzE2IDg1NWNlZmJiMjcxODYzMTI5YWQxZWQ5OWEwNDRmYzhmNDJhMzhmNzIgbGVnYWN5LXRydW5rCis0MzE3IGFhZjFlMDVlNjg0MmQ4ZWQ4MzU1OThlNWM3YjU5YzgyOTQyZDY5YTcgbGVnYWN5LXRydW5rCis0MzE4IDIwZTYwNzE0Nzg4YzVkYTdhNzc5OTJmN2QyNTllM2I4ZTMzOTg5NTUgbGVnYWN5LXRydW5rCis0MzE5IDljNWQzMzNkMzMwMGU5MzI0MGUxNWZlMjNhNTAyNjg2ZGE2N2MwNDggbGVnYWN5LXRydW5rCis0MzIwIDc1OGMxMzc0ZjMwMzQ4MmZjZmM2ZjNmZGIzYjM0MTAwN2VhMjdkZTAgbGVnYWN5LXRydW5rCis0MzIxIDYzYWQyODkzOTc4MWFhOGQ3NTc5ZTA4NmFjYzJkNTc2NTY2YWM4NDkgbGVnYWN5LXRydW5rCis0MzIyIDJjZWRlNjFlOWIxYmE0ZWI4YmE0ODlmYjU0MDFkMzJjMzAyNTY1OTIgbGVnYWN5LXRydW5rCis0MzIzIDYxNzM4ZWQ2Y2MxMGM0Mjk1MmJhOTJmZTEyMTc0YzNhNjNkNGJkZmIgbGVnYWN5LXRydW5rCis0MzI0IDEwYTEyNDczZWU5MzFjYWQyNGM3M2Q1ZmY3MjdmMTQ0ZTFkZjU2OTAgbGVnYWN5LXRydW5rCis0MzI1IDMyZTZjM2E2NzFkMDBmN2YwYjE2YWQ5ZTExM2Q0MTcxM2RmMDM2ZjAgbGVnYWN5LXRydW5rCis0MzI2IDkwODFiYjdhY2Q1MjhhZTkzNGM1ODJjMjk4MDE2M2M3MWVjYjE3MDkgbGVnYWN5LXRydW5rCis0MzI3IDA3NGFhMjYzODI2YjQ2NjlkMGUyNDRlYTIwNWQ0MjNlMTJiYWU3ZTkgbGVnYWN5LXRydW5rCis0MzI4IDhjOWNjMDU0YzVlZGNlNmRlYWU4YzQxZjdkNzMyYmQ5NjEyMWY3ZGQgbGVnYWN5LXRydW5rCis0MzI5IGNjNWJmNmJlODFhNWQyNmY4M2QyOTY4YWJkOTZhNDQwYjI4ZmEwMGIgbGVnYWN5LXRydW5rCis0MzMwIDMyZDAwNWZhZjVmY2QwYmU3NDBhMzU5NDNhMjkzNWYyNjAwNDY1MmUgbGVnYWN5LXRydW5rCis0MzMxIDI3ZDRmMWY5MzQ2YzU3NDc3Njc0NzI4MjY4NmYyM2Y4MTFlMzZjMTUgbGVnYWN5LXRydW5rCis0MzMyIDkxYmZiMjc3MTU1NGU4MTdhZTA5M2U3ZDFjODVlMjlmOTNiMTdlNmQgbGVnYWN5LXRydW5rCis0MzMzIDA1ZmI5ZGVjMmM5Y2YxYzRmOGU2ZjQ1ZTAxZTJiZDViY2U2NzhkNTEgbGVnYWN5LXRydW5rCis0MzM0IDNhNzBlOWMwZDlmNTExYTU3YWU0NGVmMDRlN2I0ODRjNTU5NGI2OGYgbGVnYWN5LXRydW5rCis0MzM1IGY4NGI2NGRmMDljM2U2Mjk1NWFlOWU2ZGExN2MxN2Y4NDEyM2ZhNGMgbGVnYWN5LXRydW5rCis0MzM2IDQyMTRhNzU4M2YyYmE4OGI4MGU0Y2ViMjAyYjEyZjJhM2NiYjQ0MTUgbGVnYWN5LXRydW5rCis0MzM3IGFmYmYxMTg2Yzg5NzRhMGRlYmY2YmY3YjA0Y2NlMmRjNTU5MTE3NGYgbGVnYWN5LXRydW5rCis0MzM4IGQzZGUyY2FkMmM2ODRjMTYwMzVhNDk4NzBkMzgwZGM4MmZkOTA4OWMgbGVnYWN5LXRydW5rCis0MzM5IGFjNmE5ZjkwZjZmZDQ4ZDdjMjU0MDhkYTA2NjBhZGQ2MzA1ODM4NjUgbGVnYWN5LXRydW5rCis0MzQwIGU3YzZhMTgzODFkOWU3YTMwNWM4NDg4MGMxZmM0NzEyYWNhNzIyODkgbGVnYWN5LXRydW5rCis0MzQxIGJlOTU2YjFlZmI5N2NjYWE3NWUxYWE5N2JjNWQ3OWMxZTFlZGRiNGIgbGVnYWN5LXRydW5rCis0MzQyIDRlMWNlYWVlMjk2MzI3ZGVmY2U0YWI0NTA5MjgzMmNlNzBiYjdlOWQgbGVnYWN5LXRydW5rCis0MzQzIGI3ZGU2Nzg1YzhhYzdkOTcyNDIwMjI0NmE0NjljNzc2M2MyMzczYWQgbGVnYWN5LXRydW5rCis0MzQ0IDI0YWU3YWY0MGEwOTYwZGVjZGUxNjc4M2Y2MzQxOGQyY2RmYzdhYTIgbGVnYWN5LXRydW5rCis0MzQ1IGVlYzBkYzVhYmE2MDExYmFiYTUwOGZjYjU2MzEzZDc4NjAyMjUwODYgbGVnYWN5LXRydW5rCis0MzQ2IGFiYTUxNjIxMjQ0ZTdiMDEyMzk4YWFhMzc2NmQ3YmMxNmNhYTc3NzQgbGVnYWN5LXRydW5rCis0MzQ3IDJjOGI0ZGYyMmJjMmYwNDVjMTFkNTY5ZTlmZDI5YTM2NDM5N2UwYjYgbGVnYWN5LXRydW5rCis0MzQ4IGMyMzUwYzg3YmUzZmNjNzllOTc1MWJkNzE5MTVkNWQxOTBkOTdiNjkgbGVnYWN5LXRydW5rCis0MzQ5IDY1NGFhOTY0ZGMyNjNmOWRiYmUwNTg0NjUzZDI5ZWUzZTM4ZTU2NGEgbGVnYWN5LXRydW5rCis0MzUwIDNmYmRhODc2ODg1NTI4NjJjYmI2OWEyYjVjZmUxODZhMzhiZTQ4ZjIgbGVnYWN5LXRydW5rCis0MzUxIDIwZjE3YjVhY2NiZjgyMDBiODcyYTkwY2MwMjM1MDU2MTVlYjNhOWYgbGVnYWN5LXRydW5rCis0MzUyIGE2Nzc2YTc4OGY3NDlhZTFkOTliYTUyNDIxZjU1YzViNmUwODU0NDUgbGVnYWN5LXRydW5rCis0MzUzIDViYWYxMTM1YTEzZDNmNWE2MzJiN2M3MDJjMDNmM2MwNWJlNDRjNjUgbGVnYWN5LXRydW5rCis0MzU0IDI1OWU2OWFhMGYxNTk4ODczMDAxYjBhOTBkNTI0MGI1ZTgxZGVkOTggbGVnYWN5LXRydW5rCis0MzU1IDUzZDE3YzA0YjQyZmIwZjM0NDliNGI4NTYyY2RiZjg1NTY3NGNhMzAgbGVnYWN5LXRydW5rCis0MzU3IGU0NTBiZDQzNjMxYTk4NDI4NmViNTQwM2RlNjkxZWJlZGQ0MmE3YWYgbGVnYWN5LXRydW5rCis0MzU4IDYxMDkwNjlkNTYxMmYwMzg4ZTQwMjA4ZGQ4ODJlZDU0NTdjZjhkM2IgbGVnYWN5LXRydW5rCis0MzU5IDYxYzNjMWEyZmRiNDQzZjJhZTFlMGU2Nzc2MmYxYWVmN2IxODUyOTMgbGVnYWN5LXRydW5rCis0MzYwIDlkOTgxMmYyNzk4YjczYTY1MGZhMWNjMTIxMTQyZjUxZGFmY2Q0NmQgbGVnYWN5LXRydW5rCis0MzYxIGJkOTQwNjhmMGZkMDM3NTQwYWM1MDRmZTgxNzQyMzJjYThmMjNjNGQgbGVnYWN5LXRydW5rCis0MzYyIDA0Mzc3MzgyNzlhOGQ2ODA3OTNmZGRmOWQ1YWJhZDFhZDcyMjIzY2YgbGVnYWN5LXRydW5rCis0MzYzIDBjMjMyMTk0YTY0ZjEwYzcxYzYxN2E3MmM2OWE0YzhkZWRhYzExOTIgbGVnYWN5LXRydW5rCis0MzY0IDM1OTQ3ZjYwNTI4ZWQwMTU3ZTIxNTE0ZjU1NDAzOGJlMjZkZDBlMjAgbGVnYWN5LXRydW5rCis0MzY1IGE3ZjI2OTYxMGVjMmQ3OWY3ZmQ0OWQ1NDhmNDYyMzg4NzJkOTZiYWYgbGVnYWN5LXRydW5rCis0MzY2IGFkYTE5YWFhZjhjMGM4ZTUwNzFiNTdhNGJhNjk1ZGY0MzA4YjZmYzggbGVnYWN5LXRydW5rCis0MzY3IDg2MjNhYTM5MTVkYjcwMmIxMDJjYzc3MmNiMzM2NmVhYzI5NzAzNDAgbGVnYWN5LXRydW5rCis0MzY4IDg5MzQxMjEwMTI5NjlmMDNkMGU4YzdlMmIwNDMyZWRkZDg1YTkxZWUgbGVnYWN5LXRydW5rCis0MzY5IDgwODE4YzEwNmUzZTZmNDg3N2E4NGU0MjZjMDYxYzdhN2ZiYjUxYjMgbGVnYWN5LXRydW5rCis0MzcwIGUxMjVmNTAyMWU2NzNkMTQ1ZTNlY2Q4YzZkZWM5OGQzZjZjODdhZjggbGVnYWN5LXRydW5rCis0MzcxIDAxNGExZmI5YzY0NjM0MjlhYzU4YWE0N2E2MzhkMTYyY2ZmNmJiNmEgbGVnYWN5LXRydW5rCis0MzcyIGYzOWQ0MzcyODc3MjRlNTYyNzk2YWI2NTExNTBmZjgxZDIzMGY0YzYgbGVnYWN5LXRydW5rCis0MzczIGUwYWU2Zjk1YmNmYjQxOWNlMjczODlmOWZmMjkzZWEyZjI0OGFhM2IgbGVnYWN5LXRydW5rCis0Mzc0IDVmMzNjYTUyMTQ1MjEyNTllMzVmZWIwM2FmOTU2YWUwZmVhN2Q5MGEgbGVnYWN5LXRydW5rCis0Mzc1IDI3NTk1MWIwODYwOGM5Y2M0ZDdiZWRhNDc0NTkzMDZjZWZlYjY0MDAgbGVnYWN5LXRydW5rCis0Mzc2IDM4NTA3MTNmNmFlYWU2OTA4ZDY0ZmNiMzgxNTYyOTY2MGQxYjFhZDEgbGVnYWN5LXRydW5rCis0Mzc3IGMxMDg4ZDBiYjU2MjMwNjZjZTUxMWUwODcwYTIwZTE3Zjc1NTQ4MjEgbGVnYWN5LXRydW5rCis0Mzc4IDU4YjA0Njc5NTBkODIyMzY4ZDBlYmIwNWFjNDA1M2NiMjJjYTA2NGQgbGVnYWN5LXRydW5rCis0Mzc5IGExYWJhNGQ0NTg5M2IwYWRhOTYyNTMzMTY2Mzc1NGE4YzBiMjgwZDAgbGVnYWN5LXRydW5rCis0MzgwIGVhOWU4NTMzZDZjMzJhOTNmMGU0YTMxODE5MWVkYzQzMjg0Nzk0M2MgbGVnYWN5LXRydW5rCis0MzgxIGU1NmFmZDAzY2E3ZmM5NDYwNmQyZGFlYjQwNGUxODFjNGI2YTk5M2QgbGVnYWN5LXRydW5rCis0MzgyIGE4YjdlZTBlNTcyZGE3ZGUwMDBlMzRlMzhjN2VkNGQ0OGYzMGNmYmEgbGVnYWN5LXRydW5rCis0MzgzIGYwN2Q2NmMxNjJjYmZmYjYwM2FjYzJmODM4OTk5YzkxM2ZmMzAzNmYgbGVnYWN5LXRydW5rCis0Mzg0IGZhY2E3ZTMyOGJhNzQ5YzEzZWY1NmMwNzM2MTQxNjMzZjU2MGM1ZDkgbGVnYWN5LXRydW5rCis0Mzg1IGUzZmY5ZTJhM2ViN2FmNWYxNmYwZmU4ZDM5NmE3YTNjNjc5MGJlZmQgbGVnYWN5LXRydW5rCis0Mzg2IDViY2FhZWQ5MDJmNTUwZGFmMmViOThhYjYwNTU3ZjI4NDE3NmE4ZmMgbGVnYWN5LXRydW5rCis0Mzg3IDIzNDgxNzY1MmRiMDZjMmQ0ZjE1OWFhMTc1ZjZhNWViNTY3NWJiMWEgbGVnYWN5LXRydW5rCis0Mzg4IGYzYWU3YzE3YWMwODdkOWEwMGZiMDFjMDg3YzllOGZmOTI4YTFiNmQgbGVnYWN5LXRydW5rCis0Mzg5IGQ5YTNlMzBiMmU0NzNjOGNjYWI2MDA1YjZiMzMzMjc3N2E4ODA3NDMgbGVnYWN5LXRydW5rCis0MzkwIDQ1YzczMDE4ZGQwMWQ3MWNmMzgzYTNhMjRkNWQ4NDRlYWU1OTY2MjggbGVnYWN5LXRydW5rCis0MzkxIDMyMGJhZWFiNzg3YWM5ZDcwNTRjZjA5ZDBkMWUwZjI4M2IzYzdmNjcgbGVnYWN5LXRydW5rCis0MzkyIDJiNTgxY2U0M2Y0YTM3MzM5ODI5ZWY2ZWJhNTRhY2ZjYTM1NzcyMjAgbGVnYWN5LXRydW5rCis0MzkzIDkzZGU1Nzc1OTY2ZTU1OWVmNmMyY2JiNzc2NmMzMDQwNzljYTcyNzEgbGVnYWN5LXRydW5rCis0Mzk0IDhiODk3YjdmM2FkZThmYzRkOTY1NDNjYmZjNTk3MDMwZmJkMjFiMjcgbGVnYWN5LXRydW5rCis0Mzk1IDBhOTE1MmY4NzExMTYwMjM4MjJhZjBkNmU3ZWVmZTY3OGJkOWZmMTQgbGVnYWN5LXRydW5rCis0Mzk2IDg1ZjFkMmJlYzYzMmNhMzg5YWQwOGM0MTQxMWI5MGUwY2IzZTFmMzAgbGVnYWN5LXRydW5rCis0Mzk3IDMxODczYmQ2ZjRhODcxNjhlNDY4YjlhNWU1ZTQ1OWNiYjBhNDhkZjAgbGVnYWN5LXRydW5rCis0Mzk4IDhlOGZkZGNiZGZkMmIyNWU0ZTEzNzYxYTU4YTY0YjgzOTBlMWRkNDAgbGVnYWN5LXRydW5rCis0Mzk5IDRiZTZlZjFjMmMxZGY1ZTFkODM0ZjVhZGZlMTZiODY5MjgxYTlhNzcgbGVnYWN5LXRydW5rCis0NDAwIGJiZjgyZWI0YTZkOWQzM2YwMTA4MDBlMWM3MzRiYjVkNDEzOWVkZDYgbGVnYWN5LXRydW5rCis0NDAxIGJhMDlkOTBmNDJiYjI2MzE3NGE2ZDBhNTNlMzEwNGQ0NmZlZjNlM2UgbGVnYWN5LXRydW5rCis0NDAyIDliY2FjOGRhMDI2MjQ0NWM1YWMwODU5NWE4YzQzYWM0MWIwM2VhYjAgbGVnYWN5LXRydW5rCis0NDAzIDMxNWQ5YzgyODE3NzRkMTMxNGUwOWY5ZDFiMzJmYTVmM2FlOGFmNDIgbGVnYWN5LXRydW5rCis0NDA0IGY2YjRlN2FjYzdhMzc0ZmEzMGM1OTk4NTFiMzM4NGE5NmNjNjQ1NDkgbGVnYWN5LXRydW5rCis0NDA1IGUxNTdjODFkMDM1ODlkNjk0OTc2ZTE0ZjY3OGYzNjYyMTA3OThkZWYgbGVnYWN5LXRydW5rCis0NDA2IGIyYzU2ZTA0Y2I4MjkwNWU0NmU1ODNlNTY3OGFlNzdlOTcyMDhkZDkgbGVnYWN5LXRydW5rCis0NDA3IDRjNTcxZDhjM2NlMTNiZmY3ZmU1MDE4NjBjYWFmMjhmOWYyMGQ2ODEgbGVnYWN5LXRydW5rCis0NDA4IDQ0ZTk0MTUyNDVmYjA5Y2VmNWYyYTFmYmRmYTFhNWM1MmYzNTAyMWEgbGVnYWN5LXRydW5rCis0NDA5IDg4M2EyMjgxNzQ3MmFlZDA1ODM2YTA1YjRiMDliNjRjNGNmZjk4M2YgbGVnYWN5LXRydW5rCis0NDEwIDc2MTA1MWFhNDM0ZGIxZjA5ZGI4NTRjZTdmMjBiYjJkMWE1ZWFmNzkgbGVnYWN5LXRydW5rCis0NDExIDM4ZGNiMDkwZjQ4YjA2Mzg1N2Y4OTMwZWI4ZjE3NGYyZjZlOTU3MmYgbGVnYWN5LXRydW5rCis0NDEyIDU0NWUyMzU4MzFiN2JiNDlmYmNkNzlhZDZhYmY2YzVjYzE4Zjg3YjcgbGVnYWN5LXRydW5rCis0NDEzIDcxMDBhY2IwZDM2M2Q3ZWI3ODgwN2NmNzkyYmQ5YmQ4YWRhYTQyMDcgbGVnYWN5LXRydW5rCis0NDE0IDQyN2M2MTljYTVkMDczMTliNjgxYTcxMDJjY2M3ZjcxYmJmOTg2ZWUgbGVnYWN5LXRydW5rCis0NDE1IDA1OGE0NmQ4ZmFmNzY1OGVhMWEyOWU1NjdhOTEyMmVjMzVjODhhODAgbGVnYWN5LXRydW5rCis0NDE2IDY0MWY2YmJmODA3YjljYzk3OTJlNzNiNGUwOWZhNTBjZjg3MjJkYWMgbGVnYWN5LXRydW5rCis0NDE3IGExMGQzMWZmMzUyN2RhN2QzMmY4OGIxYjA2ZjI2ODY3M2YzYmUyNTQgbGVnYWN5LXRydW5rCis0NDE4IDc4YmY2NzVkZjVlNWRmZmE5NjRkZWMwMDhkNjUzMDM2MmQ5MWFlYTAgbGVnYWN5LXRydW5rCis0NDE5IDNiYTE3MzA1ZjA0N2YxOTAyNGQzZjk5OWQ0ZDM0ZmJjMWY3N2M4NDMgbGVnYWN5LXRydW5rCis0NDIwIGRkN2JlODEyODQxMDcxNGIxOTQ2ZTM5OTYxMTNiNjU5YzEzZDA3NzUgbGVnYWN5LXRydW5rCis0NDIxIGRjMWRiZjZiNTIxMTAwNWJkYmNhYjk4ZjcxY2M1NmNiZjkzMzI1NTkgbGVnYWN5LXRydW5rCis0NDIyIDRmYjBhMDgwN2IwNTY3NDAyYTI2YjE1OGFiY2JmNDU1OTA3OGE1ZDkgbGVnYWN5LXRydW5rCis0NDIzIDNkZTVhNzU0OTRkZmNhMmE1ODQ4NWQxNjFlNGI3YjhiYjRiZmZlMGIgbGVnYWN5LXRydW5rCis0NDI0IDg0NjM3Y2ZkYmMwNzQyYTk3NTk1ZTQ0ZDY2OTI0N2RjNGY5MDNiMTUgbGVnYWN5LXRydW5rCis0NDI1IDg3YTYyMGQ4NDc2NjMzZGI4YjM1YjE5ZDllNGQzNGQ4YmYzZjgxZDQgbGVnYWN5LXRydW5rCis0NDI2IDQ0NTQ0MjE3ODRkODRhYzk0ZDM5ZDllZmZjNjI1NGRmZjA1MmJhODEgbGVnYWN5LXRydW5rCis0NDI3IGYyMmNiNWZlZTljOGI3ZDgyNjViMzc5YjhmMzUxZjMwMWQ2ZjIwOGMgbGVnYWN5LXRydW5rCis0NDI4IGY5NWMxOTNiZmU2NTM0ZmExZjNjZjgyMDg2NTZjMDFjYzFhNWQ1M2QgbGVnYWN5LXRydW5rCis0NDI5IGRjZmU3ZmQxYWNiYzU2NDRmZGRlNzIxN2Y1MjAyNDQxYTkyMTc3MjQgbGVnYWN5LXRydW5rCis0NDMwIGUyMzYzOTg3OWNkMDViOTZhNWYyNzNhZTA3ODdkMTYzZGQyZmJjZjQgbGVnYWN5LXRydW5rCis0NDMxIGFkMjVjNTIzNzZiNDViODA5ZmJkMmE2YzA0OGQzZGI2MDEyMGUyZTMgbGVnYWN5LXRydW5rCis0NDMyIDQyZjk1ZWE3NTg2NzM0N2U4MjQwMTY5ZWQ5ZDkwMjZiZjYyNzAxMzQgbGVnYWN5LXRydW5rCis0NDMyIDgzMjYxNWVjMDc2NDZlMzEwYzg1MzE2YjhiYTZiYzliMTdhZDM1NDcgbGVnYWN5LXRydW5rCis0NDM0IDIzNDdiMWZlODEyZGQ1Y2U2NTNjMTAxYTA3YjEyMDdjYmE3ZWFkMTQgbGVnYWN5LXRydW5rCis0NDM1IDRlNjMxMDMyZWFjZjJiOWM2Zjk3NmI2NThjODQxYjAzOTZmMGYzM2UgbGVnYWN5LXRydW5rCis0NDM2IDMzNTE1NDg1ZWFkMGQ2ZGUzM2YyODIzMjNhOGIxMjMzZDYzZmVhYTAgbGVnYWN5LXRydW5rCis0NDM3IDgwYmQ3YWY3MzIwMTkwN2QyNTcxMWYxZjY4MjhhMGVjNmQxYmQzNmIgbGVnYWN5LXRydW5rCis0NDM4IDQwNjExY2FjZDViZDdhMjZhYzFmMDE0ODBiNGM5MDA5ODVjMmEwYzIgbGVnYWN5LXRydW5rCis0NDM5IDE1YTFlYjExM2E0MzA4MzU2ODYwYzE5ZWRmODgyYTk2NjMyOTE0YzAgbGVnYWN5LXRydW5rCis0NDQwIDU4ZWVmNTFlMzA4NDljNmE3ODM0ZWQ5ZjY4ZDIzNWM0Mzk1ZGNhZDAgbGVnYWN5LXRydW5rCis0NDQxIDU1OGQ5Zjk1YTYwMjBhZDYzM2Y2ZmE4ZWRjNzE5M2YyYTYxZWZiNGYgbGVnYWN5LXRydW5rCis0NDQyIGRjNmVhYTFhOGZkZGZlZDVlNzM2YjAxOTdlNzU3ZGU0NDAyNTE4ZGIgbGVnYWN5LXRydW5rCis0NDQzIDc3ZDFjYWJmOTcxY2NjY2EyMDgyNjdhNTFiMzg0ZDg0OTM1MTEwOGYgbGVnYWN5LXRydW5rCis0NDQ0IDRlNjA1NmQ5ODBlMWExYzA3MzMwOTcyMWJkMTkxMWNiY2Q4NWY5NTMgbGVnYWN5LXRydW5rCis0NDQ1IDc0NDI2NTM3NDQ1MDgwMWYwZjFmYWUwMjlkODA5YTg4NmMxMDZiMzEgbGVnYWN5LXRydW5rCis0NDQ2IGY0OTUyN2VjZGIzYWQ1Y2Q2YTk3Yjc5ZWZlMDM1Yzg2NDAwYzkwNDMgbGVnYWN5LXRydW5rCis0NDQ3IGFmMjZkNGQ1YzFkNDNhMmJmMzY0YzQ5MmU1NWU2MzQzODYyNjhlMzUgbGVnYWN5LXRydW5rCis0NDQ4IGZiMTk4ZTEzMTZiOWJkYzJjODk3OGY2M2VlNjViZWJiYjlmZjI0OTEgbGVnYWN5LXRydW5rCis0NDQ5IDFkYWI5OWI4NmZhOGMzZjZhN2M0NDAwNGQyNjRlZjFlMzYxMzdhZDUgbGVnYWN5LXRydW5rCis0NDUwIGY5MDBjMDk5OTVkZmM0MmYyNTY2ODZjMmViZjgxMGMzZjkzMDEzNGEgbGVnYWN5LXRydW5rCis0NDUxIDYzZjg3NTg0OWJkODMxOTE0NDEyOWExMDhjOWQ3NjRiZGE3MDE3YjMgbGVnYWN5LXRydW5rCis0NDUyIGNmNGQ4ODYyZjE5YmY0NTc0MGY5ZGZjMDFkNWRmZjNmZGRmNzBjYzkgbGVnYWN5LXRydW5rCis0NDUzIGM1YTUxNGY4ZjNlM2RhYzVhYzdjMWFjY2I1ZjFlZDkxNzFkYjFhMjIgbGVnYWN5LXRydW5rCis0NDU0IGQ1ZjRkMDEzZGNjMTQ0M2UzY2NiNDQwOWU3OGZkOTViMzZkOTFhZGYgbGVnYWN5LXRydW5rCis0NDU1IGYwNWI1Y2Q3OWZiZWRiNzNhNDkyZWNiOTZjOWIxYTA0YjY4MmNjNDcgbGVnYWN5LXRydW5rCis0NDU2IGU4OTUyYjhkZmVmZmNkYWNmNDQ1MTgzZjllYWQwOWVhYzc3M2ZjNDcgbGVnYWN5LXRydW5rCis0NDU3IGE3MDg4MzgwMzMzOGEwMDU3MTg0ZTk0OGNmOWY1MjFkNTRmYWRkZWYgbGVnYWN5LXRydW5rCis0NDU4IDdmODcxOWEzNjY2MjAzYjc0MzdkYjZkZDc0YmIxNTg3OTM2MGI0NTMgbGVnYWN5LXRydW5rCis0NDU5IGVkNWQwYWQ1ZWEyZjFmZGU4MzZkNDQ0MzA0MTNmYTk1MTFhYTY4MzkgbGVnYWN5LXRydW5rCis0NDYwIDNhYTkxODRjZmY4YjZjOWJlYTA3YTlhNjA4MDNhMTMyOWUzNTU5OGYgbGVnYWN5LXRydW5rCis0NDYxIDdjNTNlNjFiYzRiYTU3OGUwNGE2ODE4ODFiNTFiODMyZDAwODBmNDggbGVnYWN5LXRydW5rCis0NDYyIDgxMWM0ZTQ2MjJhYWJmNTZiY2EyODdjMjQxN2Y2NTUzZjk4M2VhNTUgbGVnYWN5LXRydW5rCis0NDYzIDM5MmRiMTg4MTE5MDhjN2FjNzIxODVhMThhNjkxMWExNDUxMjFlMjEgbGVnYWN5LXRydW5rCis0NDY0IGY2NWVjM2RjYzU2MzFmZDU1YmE4YmRjYTMxZThjZjViZjBjZmZiNmEgbGVnYWN5LXRydW5rCis0NDY1IGYyNzgwMDk2NWZmN2NlZGIwN2Q2ZGJhOTJhOWVhZDRkNjI1YjJkZjQgbGVnYWN5LXRydW5rCis0NDY2IDBiYWU2YWI5YzllMGU3NjVlODg5MDI0ODQyNmUyOWM2ZWVmNDFkZTUgbGVnYWN5LXRydW5rCis0NDY3IGRjOWI2MzE2YjliMzU0ZjIxZjBhMzNjMjg4ODRjZWVjYWE0ZWQ3NzYgbGVnYWN5LXRydW5rCis0NDY4IDY5ZDQ4Y2JkYzJkOWEzOTM3NDI3NjY2YjE0NjdiNjJkNzkyN2FjYWMgbGVnYWN5LXRydW5rCis0NDY5IGVjMDVkOTAyMWJjY2Q4MjMwMTUzOGMwMGY2MjUyNDQ4MWFhZmMwZDEgbGVnYWN5LXRydW5rCis0NDY5IDk4OTU0NzVkMThjN2I1ZjMyYWRhZjc4ZjcxODg2YWUwNDFlNGQxMGMgbGVnYWN5LXRydW5rCis0NDcxIGE0YTg1NDUwZWJhZmUzMjRjZDM0ZmVmMjc1YmRkODY0MGE5NmI2ZjAgbGVnYWN5LXRydW5rCis0NDcyIDVhMDc3NWNlN2IzMTFlYjk2YTc2MGRlMmE4ZjdiZTljMGJjMDE4ZDAgbGVnYWN5LXRydW5rCis0NDczIDllMzQ2OWMwZWQ3NWNjMjRhMTVkZjNiNmRjZDdhNThlNmVjZTUyYTggbGVnYWN5LXRydW5rCis0NDc0IDdiZGEwZjJjMTcwY2RlYTI5NjZlNTdkZDlkZGVjMzAxNzlkNGZmNTggbGVnYWN5LXRydW5rCis0NDc1IGVlMTJlZGZjMjA5NTk5YmExYzM2Y2I0ZmZkOWE1ZmVlMTViNDFkMDkgbGVnYWN5LXRydW5rCis0NDc2IGVlZTNkNzE1ZjBjZmJmMWVhMmY0YzQyOTdmNzJiYmQzNzM3Y2NiMGMgbGVnYWN5LXRydW5rCis0NDc3IDNkNDMxYTUyMTEzMmYyM2EwOGJkNmRjMzU0MjIxNWViMDIxZjk3M2UgbGVnYWN5LXRydW5rCis0NDc4IDcyYjJhYjU2ZTQwMzUyZTNlZGI2NzJlZDQxYzVhZDYwMDMwNDdkZmIgbGVnYWN5LXRydW5rCis0NDc5IGZhN2JjNTI4MzE0YmM0NjFkYWE0Mjk1NWNkZDZhMzg1OTFjOWEzZDMgbGVnYWN5LXRydW5rCis0NDgwIDk3ZDYxNGIyNGMwOGNiNTQ2MzYxY2UxZmM3NTI1MWU4ZjgyOGIxZTcgbGVnYWN5LXRydW5rCis0NDgxIDVjNzRjM2FlZGE3NGFmNmFjNzIzMjAyODBiYjllYmYzYTkzZmIzZTUgbGVnYWN5LXRydW5rCis0NDgyIGQ0YTA2ZTgwNTZiODdmOWEzMTYzYjYxMjJkYzQ1MzUxNTY5NDkwYTUgbGVnYWN5LXRydW5rCis0NDgzIDJhM2M4YmViZjE1NjhhZjI4OTU5Mjc1MGE2OWZiYjY3ZTkyNGU2YWIgbGVnYWN5LXRydW5rCis0NDg0IDY3MWNmMWY4YjBjMzNiYjcxODM5MGVmMzgzZWM2NzU2Y2QyMTBhZjUgbGVnYWN5LXRydW5rCis0NDg1IDE3MzlmMDBmZmM4NjMxZTMwYTY3ZjhhNjUzNjkxYzhiYTMzZWVjMDUgbGVnYWN5LXRydW5rCis0NDg2IDYwOWJmYjhhZTdmNTRhZWU3NTcwMzE4MTY5MTQzNzNhMjMzYTViY2MgbGVnYWN5LXRydW5rCis0NDg3IGU0M2ExOTQyZTU4ODA2YTEyNGY3MDQxZTc4YmUwMWNiYjFiNzJiM2YgbGVnYWN5LXRydW5rCis0NDg4IGYyMzZhZGMyOGU3NzcwOTIyZTBjNjcxZDBiZmZhYzIyY2U5NzA1NzggbGVnYWN5LXRydW5rCis0NDg5IGNlNjk3NDJmMmU3Nzc5NWQxNzQyZWRhYmE3NTgyYTA1MmU5NTgyNjAgbGVnYWN5LXRydW5rCis0NDkwIDgzZmNiOWRiNGNhOGVjNGU5Zjc0YjQ4ZTI3NDBlMzNiZGRhNzE4NTYgbGVnYWN5LXRydW5rCis0NDkxIDM3MGY4Y2JkN2MzMjNlODg1YTMzMDI0ZWE3ZjY2MjU1M2ExY2M4ODYgbGVnYWN5LXRydW5rCis0NDkyIDU5ODNkMmRiNTkwNDU3YWIwNmRiNmFiZDZmNzQ0ODVlZWZiZDgzOGYgbGVnYWN5LXRydW5rCis0NDkzIDA3MDE3NjkwOTBmNDliZjFhMzE0YjNkNWM1MGViYTkwMzMzODNkYTUgbGVnYWN5LXRydW5rCis0NDk0IDNkODIyZTMyYzMyOTcwNDQwZTU3Nzk3NGFkMzI1ZDYwYzZjNjlkODEgbGVnYWN5LXRydW5rCis0NDk1IGUyOGUxMGU1ZGViMmMzMTMyNTEwZjJlNmQ2M2VlYmYyN2ZlMjIzYmMgbGVnYWN5LXRydW5rCis0NDk2IGVhNjk2ZjI0ODdmYzg2Mjg1YjhjM2UxMTFlMTFlNjZkNjg4MDdiZGEgbGVnYWN5LXRydW5rCis0NDk3IDRlYmVlOTA0OTI0ZTZhYTc3OGU5ZTQxMGE4YmMyNDk3MjA4Zjk5NmEgbGVnYWN5LXRydW5rCis0NDk4IDI4MWU0MDY1MmUyMzQ1Mzg0NTUwMDcyODBkNDdjMjY5OTdkZTY4YTIgbGVnYWN5LXRydW5rCis0NDk5IDYyYmJiZmU2YmJmNjgyODY4ODY4NDNhNzZlMzczY2UyYjZmYzI4MjggbGVnYWN5LXRydW5rCis0NTAwIDFjZTNkYmVlYjg5MDkzODBlM2IxYjc4YzhlMjkxOTgzMzRmYjgzMzIgbGVnYWN5LXRydW5rCis0NTAxIGYxOGMxOTE1YzcyMmQxNzUxOThhMzZiNDc5Yzk2YzNkMzlkYjRhMjYgbGVnYWN5LXRydW5rCis0NTAyIGM4NWFiY2M3NTJiMTg0NjQzMDY5MGZjZjdjYTFlY2M5OTQ5MjhiMmMgbGVnYWN5LXRydW5rCis0NTAzIDA3Y2YzYjNiYWYxNmZjMzM3MGFjOTU4ZWI2Y2M5OTI3MjU1MWNkZmIgbGVnYWN5LXRydW5rCis0NTA0IDE5MzYzZjg1NzBhMmZjZmZkMmRhMjYwYTQ1ZDRhMjA3NTg0MDgyYmUgbGVnYWN5LXRydW5rCis0NTA1IDIzZGZjYThhYTczYjA0MDU2ZGU3NTBkZjg0YmQzZDM3Y2RmZmM5OTkgbGVnYWN5LXRydW5rCis0NTA2IGQ3ZTkxNDM3ZjBhMjdlMjc0N2NlMDJhYjFiYTUwOGY0ZTVkOGVjM2MgbGVnYWN5LXRydW5rCis0NTA3IGRlNDlkNDkwNDRkNzUzZGYxMTMwNDNiNGI3OTM2MjUwM2Y3OGRjNDkgbGVnYWN5LXRydW5rCis0NTA4IDAzMTliMTIzMjFkN2RkYmYyMGEwZGZkNmZlNWEyOTAzMzk2ZDZhZGEgbGVnYWN5LXRydW5rCis0NTA5IGNmMzFlYWI2YWI1YWUyZTAxZjRjNjZiY2M5ZDVmZTJjYWUwYzBhMTQgbGVnYWN5LXRydW5rCis0NTEwIGFmZjVkN2QwNjczNWM4ZmEwYWY5NWRkYWE4YTI2NzFhY2Q4ZGU1MGIgbGVnYWN5LXRydW5rCis0NTExIDc5YzE3MWY1ODFmY2RlZTMwOTkzZmEzZDJjY2UyNDkxMDI1YjUxYmUgbGVnYWN5LXRydW5rCis0NTEyIDUwODAzNmRiYmEzYjRmMmY2ZjEyODM0ZGMwNjAwYTA0ODkxZDY3MjIgbGVnYWN5LXRydW5rCis0NTEzIDg2NmM4MTA2OGRiZGEyNzFlZTIyYjhjMDg1YzMwYzI0YTcxOGNiMDUgbGVnYWN5LXRydW5rCis0NTE0IDE0Njg5MDY1M2E1N2VhMTNiMjhmZjQ2ZDQ2ZTkyZmQ0YzYzOGVhYjIgbGVnYWN5LXRydW5rCis0NTE1IDE3MmJhMDRhNTE5MTZjYjc1MDQxMzU0MGUwM2Y2ZjQyODFhZjQxZDUgbGVnYWN5LXRydW5rCis0NTE2IGQwZDBhNjliNWNhMzRiNzVlYzc3ZGJmYzg5YTVhZmZmZjYyMDQzMWEgbGVnYWN5LXRydW5rCis0NTE3IDVlZDA2NTk0MzUyNjIxNTQ3ZjUzNjgxNmM3NDkwNTgwNzJmZjg2NTYgbGVnYWN5LXRydW5rCis0NTE4IDI4MGYzMWU2YzY1M2JlNDBmYzNkNTVkZWZhZjFjZGQ4Y2M5ZmVlZTEgbGVnYWN5LXRydW5rCis0NTE5IDI2Y2Q0ZDZjMmQxMmJlM2ViNmVjN2FkMzM1MmRmODJmYjFlNTdhMmYgbGVnYWN5LXRydW5rCis0NTIwIDAwMGFlNjQyZjliODg5YTFhZGY5ODI0OTRmMDcyMjhkZTk0NzQ2Y2QgbGVnYWN5LXRydW5rCis0NTIxIDFiOTk0NTFmYTE0MzZjYWQ3ODQyZmVjNWM1OWFhMmMwNGQ2MmFiMDggbGVnYWN5LXRydW5rCis0NTIyIDUyMjczMjRkNjRlNDI5ODdjYjg2Y2Y4Yjk3ZmE0OTZkNDRhZDIxZjMgbGVnYWN5LXRydW5rCis0NTIzIDNhYTdhNzc4NDQ1NTlhYzQ3NGI1ZjYyOWU3NTlmMTZhOGVkZmM3NDkgbGVnYWN5LXRydW5rCis0NTI0IGJlNWFiOGU4OWM0OTg2ZTgyMjk4YWNhNGJjNjUzYmU4Mzg5MmJkNDkgbGVnYWN5LXRydW5rCis0NTI1IDA0OGU5MWE1OWM3NWU4Y2U2MGEzNTMyMWZhZDBjYWM2MDcyYWIzZjAgbGVnYWN5LXRydW5rCis0NTI2IGNmNjVhMTI0ZmE0Yjc2OWM2OTIxYjZhOWY2NWMyOTM0YjBmYTdhYzIgbGVnYWN5LXRydW5rCis0NTI3IDY4YTM4Y2ZmY2Y1ODNjMjkxOGE1Mzg4OTA1YzE5YmRlYmExOTEyODIgbGVnYWN5LXRydW5rCis0NTI4IGEzNmNhYzc5YzVhZjdjMWMxOTI1YTQxYzUyZWMyOTE3ZWI5MWJkMjYgbGVnYWN5LXRydW5rCis0NTI5IDRjMzQ3ZTRkMTNmMWYxMTY1YzgwZGQ5YmE0MThlZmZkYWYxZDgwNTAgbGVnYWN5LXRydW5rCis0NTMwIGFkYzAyOGI5NzdiZGY2YmI3ZjVhYzFjZGU2MDJlNzg2ZmE4ZWJmNTcgbGVnYWN5LXRydW5rCis0NTMxIDM4NDgwOTRmMjU5Y2E3YmFjNjk0NDZiZTdmMjg3OTE5ZDdlYTM0MTkgbGVnYWN5LXRydW5rCis0NTMyIGRmNmZlODI5NmJjMzFkNTNjMzQ5NDI2NWU3NWFhZTNmZGJhNzAwY2UgbGVnYWN5LXRydW5rCis0NTMzIDViYmYwYTljOWE0MjhhYzc4NjRkMzAwMDk5NjNjNjE0ZTBiZTI3ZjYgbGVnYWN5LXRydW5rCis0NTM0IGMyMWNjN2IzY2UyODMzNzNjZjdkMmU3MTM2NTg5NTcwM2RiM2M3MWMgbGVnYWN5LXRydW5rCis0NTM1IGFmZWNkZWM5OTZmZjUwMDMzNjI1YjVmNWNjNmI3ZmM3MmY5NWE0OTQgbGVnYWN5LXRydW5rCis0NTM2IDRhZmE3ZWI0NzM0YmNmYWY2NTJmZGJmZGM4NzdiMjg0ZmJmNzNkYmMgbGVnYWN5LXRydW5rCis0NTM3IGYyZDI2N2VkYmZkNjg3NjcwOTM5MTVmYTEzN2RkZTcwZGUxMmVhODMgbGVnYWN5LXRydW5rCis0NTM4IGFiYmYyYTRiNDg4YjM3MWEyZTY0NTk5NWFhM2NlMTYxZTQ3NTc0N2MgbGVnYWN5LXRydW5rCis0NTM5IDg5MjFhMjg4MWZjN2YyNjQ2OGNkODYyNjI1MGJhNGFmMDQzNGVkZDYgbGVnYWN5LXRydW5rCis0NTQwIDI2MDRkMTFjOGI0MDQ1OWMwYWNiMjA1ZmU3NWFiMmJkNjA5OWM3MzEgbGVnYWN5LXRydW5rCis0NTQxIDY1MTQ2YjUyZjE2YjkzNGRkZDBkNDk1YWNhMmQ3YjcxYzJjMDljMmYgbGVnYWN5LXRydW5rCis0NTQyIDE5NDBlMWUwY2VkZjVkNTVlNzNjMGZkZTBmNTM2YWRjMjhjNzgwMzMgbGVnYWN5LXRydW5rCis0NTQzIDUzYWE1MTQzM2Y3ZmQ1ZDUzYzI3MGJiY2QwMTM0YjQ0NzEyNzBiODcgbGVnYWN5LXRydW5rCis0NTQ0IGY3OGIzODdiNTRlMGEzOTk1YTBkMjc1ZDliZTQ2YTgyZGY5MTI3MGYgbGVnYWN5LXRydW5rCis0NTQ1IGI0ZDk4MmM2NDhiYjNlNzYwMmE5NTlmNDE1MzA1ODcxNWE0OGExODIgbGVnYWN5LXRydW5rCis0NTQ2IGIwM2I0M2JlZTFhYjNlY2ZmNmE1MjNjYWE1MDE2NmMwOTE4Y2Q3OGUgbGVnYWN5LXRydW5rCis0NTQ3IGU4Y2FmYjJiNzQzYTdlNGMwM2Q4NjlhMzQyYTBjZjZjZWUxMjkxODggbGVnYWN5LXRydW5rCis0NTQ4IGQzNTZjNDczZGI5OTNmZTc0ZmJmZmJiZDczODViNmJmOTMwM2E3YzcgbGVnYWN5LXRydW5rCis0NTQ5IDBkN2U0YWE1OTVmN2FhNWI0ZDliODBlNWRhYTAwYjc1MDc1NGMwZGUgbGVnYWN5LXRydW5rCis0NTUwIGQ1YzkzNWI5YTdiNTBjZTU0YThmZDJhNWEzNTYyYzA0ZmIyZGMzNDAgbGVnYWN5LXRydW5rCis0NTUxIGU0NTg4NDA0ZmRmZjI1NDAwYzA1ODJhNTUzMDZiOTAxNjM0MzllNDkgbGVnYWN5LXRydW5rCis0NTUyIGI3YmUwMzgyZjllZTY5ZDE2YTFiOGNmZjcyZDlmZDhlZDg1NTkzNWYgbGVnYWN5LXRydW5rCis0NTUzIGJhMmUyMWE1NGFlMzk5MWE0YmVhM2I4ZWJhY2M4ZjM0Njg0ZGRjZmQgbGVnYWN5LXRydW5rCis0NTU0IDQ1NzRlZDY1N2NjOWY5YTU1Y2FlNDQ1NDE1ZTZhNzhkOTg3NGE4OWEgbGVnYWN5LXRydW5rCis0NTU1IGZkY2NjMzIyMmQwYWU3OTQxY2M0NWFhNmQ5MzMwODkwOWZiYzM0ODcgbGVnYWN5LXRydW5rCis0NTU2IDMwODIxYmMyZGNiNzQ0ZmIwYWYxNzVkN2JkMjhkMjk1ZGFiNjI1ZWEgbGVnYWN5LXRydW5rCis0NTU3IGJiZmFjM2UyNTcwZDlhYjIyMGRmZjdmNjFkOTEyMjJiYjk1YTdhZWEgbGVnYWN5LXRydW5rCis0NTU4IDc0OTNjNjgwNWRjNmU1Y2I5MzQ3YmViNjY4ZWIxMTFlMmFjMTExY2UgbGVnYWN5LXRydW5rCis0NTU5IGVhN2IyYmYwYjUyMTYxZjk2YTVhOTdjMmNhOGJlNmQzMDBkYzUxZmQgbGVnYWN5LXRydW5rCis0NTYwIDJlYmIyMTI4NGYzNDUxYTc2OWJmNTc4ZjZiZmU0NGNkZThlNDk2YmQgbGVnYWN5LXRydW5rCis0NTYxIDAxODMwZGM4ZDZlNWQzNmJmZDAxZjIyZjU2NzEyZWYyMjM5ZWYxZDAgbGVnYWN5LXRydW5rCis0NTYyIGFmNDFmNGEyMTY4MmVhODIxMzYyN2FkZDQ1MzIxMmU2MGMzZTdjZjIgbGVnYWN5LXRydW5rCis0NTYzIDA3MDgwYTI5NjA3MDdiYmI5ZjAxZWY2NjMwYTlmZWMwNDk1YmMyMzMgbGVnYWN5LXRydW5rCis0NTY0IDZjNDkwNWZmZmYwMWU5Yjg5MjBlNDgyOWE5MjhiNjVmZmNkNzkxOTAgbGVnYWN5LXRydW5rCis0NTY1IDMwY2JlMDI0ZGY0MDllYzBkN2UzMmE0Mzc0NmQ3ODM2NGQ1NDIzZmEgbGVnYWN5LXRydW5rCis0NTY2IDI2NjllZjE0YzIwNTQxOTkwZDZkYmNlZTk5ZTFiYzJmNDM2NzZmZGIgbGVnYWN5LXRydW5rCis0NTY3IDc2Yzg2MGExOGQ4MjM0M2ZiNGUwNzZkYWRjZTRmYmJjNTA4MGU3MzggbGVnYWN5LXRydW5rCis0NTY4IDc5NDdjMGQxNmNhMDQxZTY5MTRlYzg5MjE4NTBjMzhiNDEyNTI1OWQgbGVnYWN5LXRydW5rCis0NTY5IDdlYTM2OWQwNWMyZWUxOTVlMTIyZDRkN2NmZDBkODUxMjMwODg0MDAgbGVnYWN5LXRydW5rCis0NTcwIGQ3M2VlZDM1MzAwMTBjNGZkNGM4MDJhMDkwOTNhZTBlZjRkM2Y2MTYgbGVnYWN5LXRydW5rCis0NTcxIDVkZjY5ZjI5NGNjYzZmNmQ0NjYxZTg0ZTM5ZTA2MTMyYjA3MGE3NTQgbGVnYWN5LXRydW5rCis0NTcyIGFlZGE4NjRjMTFjNDQ2MzkyNWVkZDIwYTE4NmFkMWQ0OGU3ZWJkYjMgbGVnYWN5LXRydW5rCis0NTczIDFkYWUwZDMwNjJkMjYzYmI2Y2M2ODUxZTcyODlhMDVjNzY2YTJlNzUgbGVnYWN5LXRydW5rCis0NTc0IDg0YjYxZmU0NDU3MzA0ODQwMGNkYjFlNzExZjA2ZGFjZGY0YjMyYWEgbGVnYWN5LXRydW5rCis0NTc1IDg2ZDllOTE0MDVjODU1Mzg5N2M4ODcwYzQwZWNlZjJiOGNhZjY1ZDAgbGVnYWN5LXRydW5rCis0NTc2IGJhM2ZkOTZmMDU1ZWY5MTliNGQ4MDMyNmIxNjc1YmMzNTI4Mzg2NjcgbGVnYWN5LXRydW5rCis0NTc3IGZkNWFiN2U4MjhmY2NjMDE0MTU5NjgyNGY4YTc1Y2FhYTI2YTdhYTUgbGVnYWN5LXRydW5rCis0NTc4IDM2ODQ3YjhiNTc1ZGY2NTFmNThhZWQ1ODEzNjk2ZWI3NmRmNjUyNGYgbGVnYWN5LXRydW5rCis0NTc5IGJkMDYxZGMzMDg0MmU3NTA0ZWRlNGQ3YzM3ZjNlOGUxNzk3OTA1ZDUgbGVnYWN5LXRydW5rCis0NTgwIGFmMzZiYWUzNDNmY2Y4ZGFlZjQ4YTk4NTQxZTM3YzM5NmYyNDA4ZTkgbGVnYWN5LXRydW5rCis0NTgxIDY5NTQwMTY5MmM0NmZiNjJjNGU4YzhkYmQ3Y2Y5MTFjMGRjZjU1ZGYgbGVnYWN5LXRydW5rCis0NTgyIDkyZGE4OTAxNTE3ZTNmMTVjOThjOTE4YjJkZjI0MGEwOTFhNGNlYTQgbGVnYWN5LXRydW5rCis0NTgzIDA1MzYwY2Q2MTZhZTM4ODY3NTEwNTQ1ZTY5NGRkYWIyNDllNmM3NGIgbGVnYWN5LXRydW5rCis0NTg0IGNhMjdjMmZlMGI4ZDRjNmI1NmU0ZjA2YjYzMWE1YTZkOGM0NzI2M2IgbGVnYWN5LXRydW5rCis0NTg1IGZlOTIyZmVkNmIzMWQ4Yzg0ZmY2MGFlOGViNjQ1MzI1MzAxZWM1MjkgbGVnYWN5LXRydW5rCis0NTg2IDRkZGY1NTQ0NTdhZDVkMWIyMDFjYzljNmFmMzIzMTFkNjFiZjk0MmMgbGVnYWN5LXRydW5rCis0NTg3IGMxNmQ2OTNiZmU3M2Y1MmY0M2Y4MDc4MGE4ZjVhMWY1MTI2ZTU5MGEgbGVnYWN5LXRydW5rCis0NTg4IDlkNjFjNTc0OWJmODI3ODFhN2EwNjAzOTQ2OWRjODEzYWUyODQ5NzMgbGVnYWN5LXRydW5rCis0NTg5IDRmOTBiNDc0YmVlYzM0MGYwNTlmMDU5NjhhZDBhYTk5N2ViNjZjYzMgbGVnYWN5LXRydW5rCis0NTkwIGM1N2I1YzUwYTJkMjk1NGY2YTBjMWNkOGExYjUxZjhjYjAwMjNiZWYgbGVnYWN5LXRydW5rCis0NTkxIGM5MDg1ZjFlOTc3ZjMzODAzNDBiYmZiYzE5MWMxYjJmMTU2MzE5ZWUgbGVnYWN5LXRydW5rCis0NTkyIDIzZjA0MDMxNzgyODBhZTA3Y2ZiMzA4NGZhZmQ4Y2M1N2NlYWM2NTIgbGVnYWN5LXRydW5rCis0NTkzIDk0ZTJjYTg2NTkwYTU2ZDM4NzRkYzI0YmU1ZGViNzNmOTUzYjc4MWYgbGVnYWN5LXRydW5rCis0NTk0IDE3M2RkMDA4NzlhYjYwMDBjODJkYzY0OThmYzhmNzJmZGY3YThkNGEgbGVnYWN5LXRydW5rCis0NTk1IDg0OTIzZDkyYjUzZTdhYzFhNjMyMmEzMjgwZTM0MWFlN2QzNjEyYmMgbGVnYWN5LXRydW5rCis0NTk1IDE2ZWI0YzUxZWU5NzE2OTA0NjM0MDk5OGU4NTBhNjNjNjUyMjViMGEgbGVnYWN5LXRydW5rCis0NTk3IDdhZTg0N2IxYjI2OTIyOGI5Y2MzODRlMGJhZmQwNGEzNjc5M2JlMWIgbGVnYWN5LXRydW5rCis0NTk4IDBlNjBjZDIwN2FkYmIyNGJkNWIzYzJiODQ0YjdjMDg2NzNlMDQ0YTUgbGVnYWN5LXRydW5rCis0NTk5IGU5ZTkzZTA3MzU0YjhiYzBiMzk0MDE0NjJhNzBhNmI5YjlkYmEwZjkgbGVnYWN5LXRydW5rCis0NjAwIDlhZmRiZjk0NGMyYTAzYTY0OWE1N2ZlMGEzMjNjZDEyMjUxYzU2MGQgbGVnYWN5LXRydW5rCis0NjAxIDgzOGVmOTc2ODgyMTAzMDE2Nzg1Yjk3ZDQwZWI5MmNkOWQzMDFmOWMgbGVnYWN5LXRydW5rCis0NjAyIGY5OWEyMzk5ODc3MGJhYjdlMmYyNTY1NmY3ZDAwNGE2NWI5MzhiNTIgbGVnYWN5LXRydW5rCis0NjAzIDYwNjBkN2ZiMDdlMzQyNDVlOTczMGJmZmQ4NjIxMDdlODg0ZjRhMzQgbGVnYWN5LXRydW5rCis0NjA0IDQ0ODQzNWJmZWFkYzBkNDZjZjU1YzY4YzkyZjUwM2Y2ZDljZjY4MTEgbGVnYWN5LXRydW5rCis0NjA1IDVmZDg1MjRkZDAzYTIxMGE5Mzc4YjZiMzJhY2UxNzNiOGYwMDFjODcgbGVnYWN5LXRydW5rCis0NjA2IDFhNTIzNTFhMDBiMjZjZDA1OWE2YmM5ZTJkOTUxOGU3NjlhMWYxZGEgbGVnYWN5LXRydW5rCis0NjA3IGU1NGI4NjU0ZjkzODRmMTIyN2JhMjE5N2ZlYjVmZTE2MTFhZGRlYzggbGVnYWN5LXRydW5rCis0NjA4IDA3MjhmZWIxZDAzMWI0ODg0MmI3MTk4MzcwYWYyYzc4Njg4YWY1NDIgbGVnYWN5LXRydW5rCis0NjA5IDg0OTcxZDAxNTk2NWU4ZThmMmY0MWY0NDU5M2YyMzJmNjhkNmE1NDcgbGVnYWN5LXRydW5rCis0NjEwIGNmYmFiNzlhNzk5ZjQ2NTM1NTIyNzFkYTUwMjBiZTIyMjA1MTYzODcgbGVnYWN5LXRydW5rCis0NjExIDFlMDgzOGJiOGYyMjA4ZTI5MmIzMDAzNDE2MjNlZjgzMmJjMjA5ZjggbGVnYWN5LXRydW5rCis0NjEyIDI5NzIwYzVkOWU3ZWM0MjIxZmM4N2YxYjIyMmY4MDUzMTliZmQ3MDQgbGVnYWN5LXRydW5rCis0NjEzIGE2MTlhNjFhYWQxZWJiOGM4ODAyNDFmYzJjZWQwZjFlMDYyYzAyMmQgbGVnYWN5LXRydW5rCis0NjE0IDg5OWI0ZTNkZmQ0Y2ZmOTljYTQwZWQ3MmMwNzUzODQ1MDI0MTZlMWYgbGVnYWN5LXRydW5rCis0NjE1IGYwNjIyMmUwN2NhNzU1Mzc5NTgzNmY3ZTk0NDQ3MTg1YTY5MTU4N2EgbGVnYWN5LXRydW5rCis0NjE2IGM5YWVhMzRhZTRiNjk5NzE0YWU4MTNlNDc1ZjQ4NzRlMmMxZGJiYzIgbGVnYWN5LXRydW5rCis0NjE3IGVlMGIzY2IzN2FmODhjYzRjOTM2NzBhMTZkMTlhOGUzYzM4Yjk4MmEgbGVnYWN5LXRydW5rCis0NjE4IDQ1OWJmN2QwNGUwNWJlYjgyOWUyZDRkMDI1YjdkYWY4M2M5NmIwM2MgbGVnYWN5LXRydW5rCis0NjE5IGY0OWI2MzcyNDkyZjI4YmI3M2I0MTUzNzZkN2UzYjRkMjFiODQwMGQgbGVnYWN5LXRydW5rCis0NjIwIDdhNmI1N2ZlYmFjNDZjMTA2MjFjZGNkZDczMzkyMThkNGM5YmJiZmUgbGVnYWN5LXRydW5rCis0NjIxIGQ5MGM5MTRjNTc3ZDIwYjQyMWYxMGU3MmE5MDczOTVlNThiMzk2ZGUgbGVnYWN5LXRydW5rCis0NjIyIDlhOWYzZjVkNmY4NjAzMjIxMmYwMDczYTUyOTkwZDlmMWUxODA0MGMgbGVnYWN5LXRydW5rCis0NjIzIDkyY2Q4NTQ3MGE3NjlkZjU3N2Q4MGNhNjI0ZTZhMDc1OGRlZDEwNTkgbGVnYWN5LXRydW5rCis0NjIzIGI0NWM2ODg3NTZkMDRmYjg0ZDRhMGQ1MThmYzNkN2UzY2IyNWZhOGQgbGVnYWN5LXRydW5rCis0NjI1IDdmZjZkOTk5ZjA1OWEwOGM4YzgyYjgzYzA1MmQ1MTRmNmNiZTY1MTggbGVnYWN5LXRydW5rCis0NjI2IDhhZGNiODA4ZDhkZGQ4NDI5NTU0ODFmZGMyN2ZmNjIyMWVlZjJkNjEgbGVnYWN5LXRydW5rCis0NjI3IDZmMzVhMWFkMWFjYzgzMzU5MGY5ODI1NzdjNTBlYmQ2MGJhZTlkYjYgbGVnYWN5LXRydW5rCis0NjI4IDVlZWQ4MzIxNmU2YzU1Yjg1NjhhOTlmNTY0N2NhYzkwZTFkOTEyMTAgbGVnYWN5LXRydW5rCis0NjI5IDA0NDU3MjVmZTVkZTRjYWVhYmY0OTM4ZDU0ZmZjMDZmMDEwZDY3OGMgbGVnYWN5LXRydW5rCis0NjMwIDFlOWU3NDk0NGJiNTFmNDhmODYyOTE5YmE2ODkwYzEyNzFiY2Q2NjAgbGVnYWN5LXRydW5rCis0NjMxIDlmNTAwYTM0YzM1NTQxODExYzU2NGE4OTJlZDI2Zjc4NmRkZjQ3Y2YgbGVnYWN5LXRydW5rCis0NjMyIDY1ZDg3ZjA2ZjA4ZmMzMGI4M2FjMGEzNzEwNGQ2NmIwYzQwNDY5NDggbGVnYWN5LXRydW5rCis0NjMzIDhkYTAzZGVjZWY1OTNkZGUwZTQ0YWIxMjdhNmMzYTRjY2RjMGI5NDggbGVnYWN5LXRydW5rCis0NjM0IDliNDUxYzg0YTdiZjkzMDExMDEyNjI4NTk0ZjJhN2I0NGE2ZjIwNzkgbGVnYWN5LXRydW5rCis0NjM1IDAwNDgwMjRiN2VmODRjZDljMDBlNTc4ZDk3NjIwYzE1MTU5ZWMyNWQgbGVnYWN5LXRydW5rCis0NjM2IGRmYWJiMTNiY2U3MGZjMTgxYjI2YzAyYjQxOWNmYTA1NTA5OTE4ODIgbGVnYWN5LXRydW5rCis0NjM3IDYyYmRkZWQ1ZjAwYTIzMTUxYzQ4Mzk2ZjIwNzFkNTIxNWI3YWM0YzUgbGVnYWN5LXRydW5rCis0NjM4IDg3ZjRkNmQyZTljODlhODRlOTkwMjE2Y2E2NTc1Yjg4MTVmOTI3M2UgbGVnYWN5LXRydW5rCis0NjM5IDljOGI0MzIzODA4YmMwZjk5MTMzZDliMjdlMmIxNDVlOTc5Y2QxMjMgbGVnYWN5LXRydW5rCis0NjQwIDk1Y2I1MmI4NWY3ODY3ZmI0N2M2ODc5OTQyNDViYzdjNWQ1YjlhNTIgbGVnYWN5LXRydW5rCis0NjQxIDk2OGUyNDg0ZDk0ZGEzODJkNDljNzMzYzAzYzRlMjk5M2QxMTc0NDUgbGVnYWN5LXRydW5rCis0NjQyIDY0NjFmZjBjNGJlZTZmMzA1NjJhMTU0ODMzODdjNWRlMTc2YzVmMTkgbGVnYWN5LXRydW5rCis0NjQzIGQ1OTU2ODM4MTQ0N2QwZTMyOTk1Zjc1YTczZDIwYTI4NTg4ZDgzNGIgbGVnYWN5LXRydW5rCis0NjQ0IGI0MGUxMGJkYTIzMTkxZDJkNzZiNzg4MzQ2ZDRkMTIyYTQ4NmIwNjIgbGVnYWN5LXRydW5rCis0NjQ1IGY0ODk1MWRhYmE0ZmZjM2U3NTYyNWYzNGE0ZGYzZTYzYWFmZWViZWEgbGVnYWN5LXRydW5rCis0NjQ2IGY3OGZiY2NhZjU4Y2M2NmQxYjgwNjYzNTE5MmI1MWViMjYwNzJlZTEgbGVnYWN5LXRydW5rCis0NjQ3IDFjMDEyZDgyYTk3NThjMjJiMzc0NTc5N2I3NGVmZGE5NmU4YjEzMjQgbGVnYWN5LXRydW5rCis0NjQ4IDhlNDc2Y2EzYTdhM2YyZmFmNmYxZjY1MTdkNmJiYjg4NzQwNjk2NDcgbGVnYWN5LXRydW5rCis0NjQ5IGNjYzI3OWZmOTM1ZDBmNTRhNmJjOTgxNWZlMTUxMmQ1MDUyNTJiZTcgbGVnYWN5LXRydW5rCis0NjUwIDVlNTY4YmFjZmJlOTliYTYyYTgyYTM4YWM1Mjc0MjViY2Y3ODJkZmMgbGVnYWN5LXRydW5rCis0NjUxIDkxYTQzZWExMWJhMzU5NGM5MDJjMWViZTY1NjRiMTAyNjEwYWU5OGMgbGVnYWN5LXRydW5rCis0NjUyIDI3NTU3ZTcwYThmMDI5YmNkNzkzYjcyYzZhYTA5N2QzMmUwODIzMjEgbGVnYWN5LXRydW5rCis0NjUzIGY0NjcxYjY4MWFiOThlNzYyMGZkOTcyOWM0MzYxODBlNzA5YzQ2MDggbGVnYWN5LXRydW5rCis0NjU0IDVhZTkyMmNmZTQwNDkzNDdiYjA3NDAzZDAwZTU2ZGJlYWJkZmQxOGUgbGVnYWN5LXRydW5rCis0NjU1IDhmMWRhZmZlNzk5YmNmMzRlMDdhZmJjOThkMTM3NzA4ODM0NmY0Y2IgbGVnYWN5LXRydW5rCis0NjU2IDk4OTRlNTU0NjhlYzYwZjc1YTJhZjAwNjMzZGY4MzQwMDM0OTQ1OGQgbGVnYWN5LXRydW5rCis0NjU3IGNkYjM3M2Y2NWJmMzgwZGJkMjk0NzJkNzg4MTRiMmUwMGUwMGNiNGUgbGVnYWN5LXRydW5rCis0NjU4IDAyZGQ2M2QzZmU5YjMxMzcwZWU1NzM2NjRiZTJhMjExOTVhNDQ0NWYgbGVnYWN5LXRydW5rCis0NjU5IDUyNzg4OWFlODQ1MDM5MDk3N2QzZTg5NTIxYjRjMmRjZWI5MTM0MTUgbGVnYWN5LXRydW5rCis0NjYwIDBlMzAyNzcxZWU1YTJiZmM3YmVlMTljMjg3ZmNmOWIzZjgzNjI1YmYgbGVnYWN5LXRydW5rCis0NjYxIDMzZWE5Y2M3ZDdiYWU3MjNjODdhMjcyMjZkODIzNDAzYzQ4NGE4OTEgbGVnYWN5LXRydW5rCis0NjYyIGM2OGEwMTEzYjc1YTI3ZmVhMzNiZDM2NDBjZmM1MjBmMWE1MmFkN2YgbGVnYWN5LXRydW5rCis0NjYzIDQwNTNkNGNiNTBlMGQ3MDE3NDZhNzU3NDlhNjdjYTA4YjdjZjAyODggbGVnYWN5LXRydW5rCis0NjY0IGU3MzRjNzIzNTcyN2U3NGI1NGFkNzliMzBjZmNlZjJkMzVjMjQxMGMgbGVnYWN5LXRydW5rCis0NjY1IGViM2U2MWRiMGRkYTljNWFmNDU1ODljYTIyMWUzODFlNmIxNWYzYzcgbGVnYWN5LXRydW5rCis0NjY2IDY0ZWI0ODdjYTQ2NWQ2YjZhMjg2MDVlOTk4Yzg3NTFjYWExNzcxZGYgbGVnYWN5LXRydW5rCis0NjY3IDkzOTc5MWYyMTlhNjNlZDg1NjFlYzZiYjc1NmM0ZTc3ZjRlOWFmNTkgbGVnYWN5LXRydW5rCis0NjY4IDI3MjIyOTM0OGZlMmI3N2ExNWM0ZTMxNzVhNzU2OTE0MWVlZDgxNWEgbGVnYWN5LXRydW5rCis0NjY5IGEzYmQ2MTYzMmYxNDVlZDk4OGExYzJhYjdkNTlhMGM1MDRjNzk3NWQgbGVnYWN5LXRydW5rCis0NjcwIGFiZWQzNjhkNjhlZjE4OTBjNjcyNWNkOTFlYjlmMWYyZDJlZWZmMTkgbGVnYWN5LXRydW5rCis0NjcxIDc2ZDQzYzAzMzg0ODEwYjUyNzEyYWJlZGM2YjU5ZWE3MWY5Y2QxOTcgbGVnYWN5LXRydW5rCis0NjcyIGNmZWFhNTA4MmJhODMxYjYyMWEwMzRiNzcyOTNiODRlYjdjMzIyOGYgbGVnYWN5LXRydW5rCis0NjczIDA2MTIxMzJlMDAxODU3ZWU0YThjNGVhMGY5MWYzNTZjNGMzMTZlYzUgbGVnYWN5LXRydW5rCis0Njc0IDliYzNhNWJhYTY4MGUzOGQ0MDVjY2M3MTk4ZThkNDgyZTZkMDU5MzYgbGVnYWN5LXRydW5rCis0Njc1IDc0YTBhNjEyMWFmNzFiNmFjNzM0OTY1YWRjYmRhNzA1YzhmOGExOGUgbGVnYWN5LXRydW5rCis0Njc2IGJiYjU2ZGMzYjUyNmI1NTJiNTNmNjllNzJjYjJkYzAzYzcwZmZiZDggbGVnYWN5LXRydW5rCis0Njc3IGFhMzM2NTgxNWMyMGQ3NWIyMDEzMjNlZTY0ZTIxMDczNGZmNWQ3YjQgbGVnYWN5LXRydW5rCis0Njc4IDMyNDM1ZDMzZjM0YTZmNDRjOGVjZmI1NDA4ZDRhMjM4ZDY4NjdlOWIgbGVnYWN5LXRydW5rCis0Njc5IDQ5NzE5N2YzNTczYzEwYjk0ZTNlMTA4YzZlOWNjZGZlMjUxODczZGUgbGVnYWN5LXRydW5rCis0NjgwIGMyZDE4YjU4MjMyZWRlZjE2NWIzMTUwZTYyMDM0MDk5NTkwMjYyYTMgbGVnYWN5LXRydW5rCis0NjgxIGU1M2QwMTllN2Q0NzYxMmQyZTY0NmZmNzgzZjU4OThiZDRmYjY0Y2UgbGVnYWN5LXRydW5rCis0NjgyIDk1ODhjMjM4ZTY2MDljMTMxMjQxMmI1YjIxM2RhZmE2M2ZjYTBiYTAgbGVnYWN5LXRydW5rCis0NjgzIDRiY2YxYjk2ZWZlYzRmMTE2YjMzMDk0MGYzNzEzYTJmYzk3NjI4ODIgbGVnYWN5LXRydW5rCis0Njg0IDkyZTZmNWQ4YmU4MmFiOTE0NDhiYzY3M2ZkNGU4ZmY0ZDc1NmM1OGQgbGVnYWN5LXRydW5rCis0Njg1IDFlOGIzNDdhMDU2Y2YzNjY2ZWZlNTMxNDZhZTM3MjgzZGM4NzI0YWYgbGVnYWN5LXRydW5rCis0Njg2IDhkNWUzNmIzN2E0MTMyMjlmYTkxZTExN2Q3OGExZjVlNDc4YTk3MjUgbGVnYWN5LXRydW5rCis0Njg3IDAxMDM3NTMyYzA4NjBhMWJjOTk0MTEzN2EyNGQ5ZDdjZmUzYmIyYjggbGVnYWN5LXRydW5rCis0Njg4IDdiNjU0MDQ5NmY1NTRiYjZlNTc0ZjFhMzJlNjUwMGZiNmVkYzBiMzMgbGVnYWN5LXRydW5rCis0Njg5IDAxZWQ0Y2QyMTU3NmNiYjQ1MGM4YjgxNmVmNzEwY2VhN2Q0NGZjYjYgbGVnYWN5LXRydW5rCis0NjkwIDFiNjYyNDk3NDI2YjUzYTEwZTJlODhmMDA4Mzg4NjljZGQ2NTNjZjMgbGVnYWN5LXRydW5rCis0NjkxIDBiMGIxOGQ2NTVkMmU5YzA1ZTRlNTdmZTJjZmY4ZDZhODFlMjFjNTYgbGVnYWN5LXRydW5rCis0NjkyIGI1ZGNiYTdiNzMyZDAzYjBkYmRjMDAwNTFjYjgwMWU3N2YxM2U3MDUgbGVnYWN5LXRydW5rCis0NjkzIDQ0MmJhZThmY2ZkYzY1MTRmMTlkMWFjZmY4YmE2MTExNWRmMmZiMDggbGVnYWN5LXRydW5rCis0Njk0IDk0Yjg0NTM1YzM0ZTExZDhlYTI1YmFiZGJjMGJjYmJlMTQ2MWM1ODcgbGVnYWN5LXRydW5rCis0Njk1IGZlZmFlMzdjMDUzY2ZkM2JjZWYzZDkzOWE4ZjNmZDc1NmI3OGE4YjggbGVnYWN5LXRydW5rCis0Njk2IGQzYjViZTBjODcyZjMzYjFlZTkxMDg2MzQ0YWQyYzcwYzYyMDIxYWIgbGVnYWN5LXRydW5rCis0Njk3IDI4M2E4ZWIyZTMxN2NiN2Q3YjExNWFjOGIwNGEyZmZlOWY2MzRiZWYgbGVnYWN5LXRydW5rCis0Njk4IDcyZTA1YzYxYzJmZTU5MzM3N2VhNzNjYjhlYjRiNWM4N2IyMDYyNTYgbGVnYWN5LXRydW5rCis0Njk5IDdmYTQ4YWI0YmUwZjRiYzNmNTEzYTUwODRjMTliNmZmM2EwMmY2MDAgbGVnYWN5LXRydW5rCis0NzAwIDFhYjM1YjZmNjM4YTI2NmI3MTc2Nzc1ZjQ0MDhjZDNlOWRiNmFiYzUgbGVnYWN5LXRydW5rCis0NzAxIDhhZDEzNjMyODdhYThiYzk4MzVkMmI0NTEyOTk1NjZmNDUyYjEzYzMgbGVnYWN5LXRydW5rCis0NzAyIDQzOGY1M2U3Y2ZkMTRlOTVlYTcyZDg5ZDBjN2JjNDlmNWE1OWMyMDggbGVnYWN5LXRydW5rCis0NzAzIGE3NmE3OWY4OTZjZjVmZTIxMTNiYjlmNjZhYzRkZDYwMjJkNTNkNzEgbGVnYWN5LXRydW5rCis0NzA0IDNiZWYxYWZmODcxYmMzNDkyMDcwODU5NzQ1MTVhMzU2ZDFkNTdjMDUgbGVnYWN5LXRydW5rCis0NzA1IGUwYTMyNDJkNWFlNzlkMTYyMGEyMjYyNDJhOGIzY2FhMTM5NGViOTMgbGVnYWN5LXRydW5rCis0NzA2IGU5ZDExZjliODJlMmI1ODFhOTZiNzMyNWUyM2NmZDA3N2EzODk0OTMgbGVnYWN5LXRydW5rCis0NzA3IGMyM2QwOTIyMTVkMmMzZTVmODAzMjIyMjI1ZGY3MWE2YzNhNzY2NzQgbGVnYWN5LXRydW5rCis0NzA4IDY3ZThlZjY5OGE0MmZmMjcyMGFmNzgxNTBlY2Q5N2QwYzMzNDhkMjAgbGVnYWN5LXRydW5rCis0NzA5IDM4MmVkZWYyZDZkNzBkMzdjMzQyODllOGI3NDExMzgyN2YyNmI4ZTggbGVnYWN5LXRydW5rCis0NzEwIGQwOTFiMjQ2YTNhN2E1YmIyYzE0MTVkZmEyMTNjZjE5ZmU2NGY2NWIgbGVnYWN5LXRydW5rCis0NzExIGVlNGM5NTRjZDVkZjUyZTljNDA3Mzk3ZDRkYmNkMWNhMTA0MjQ0MzUgbGVnYWN5LXRydW5rCis0NzEyIGIxYTZhODFhZjFjZmY0N2QzOWE1MDQ4YTE4Y2E5ODE1NThmNTcyNzQgbGVnYWN5LXRydW5rCis0NzEzIDgzZDA2NDA0ZjZlMTE0NDJjZDMxMGU2OWNhYmFmZTdhN2YyNjBhYmEgbGVnYWN5LXRydW5rCis0NzE0IGE4MWI2ZGI2ZDMzYzk0ZThkMDk0ODY5YTIxMTFiODcwODk4YjcyMDAgbGVnYWN5LXRydW5rCis0NzE1IDY0NWU5NjM0M2Y4OWZlZjhkYjk4ZjUzZDZhODhmMzc0ZmYwZDVjN2MgbGVnYWN5LXRydW5rCis0NzE2IDAzYmQ3OTQzMmYwNjljNjMyYWU1YWU4NDIxZjcyNGMxM2VmNzFkYTAgbGVnYWN5LXRydW5rCis0NzE3IDc4OTVhOTczMTNlNWY0Y2ZhZDI0YzVhNmJhNTZlODQ2NDUzOWUyMGUgbGVnYWN5LXRydW5rCis0NzE4IDg1YWEyZTRkMDEyM2M1M2M1ZTY4ZTgzNGE0NmZjNzBiODUxOTVhY2EgbGVnYWN5LXRydW5rCis0NzE5IDRiY2M5MjkxNmZhYmIyZjZjNTFlNGUxMTUxOGY2NjdlZGFmN2VjZjkgbGVnYWN5LXRydW5rCis0NzIwIDNhODNjM2NlZjRiMmI1Yzg0YTkzNjdmZTJmYjAwZDM2Yjk0MzFlYTUgbGVnYWN5LXRydW5rCis0NzIxIDc0MTFiNmEwNjkyMGNkNmQ0YmUyMTA2ZGFmMTRmYzIzODVkM2JjODAgbGVnYWN5LXRydW5rCis0NzIyIGFjNmY2OWIxZTk5MzA3MTYyMDNhN2E1NGExMjZmYjhlNzg2MjA1ZWIgbGVnYWN5LXRydW5rCis0NzIzIGE4YzZkYTNiZDMwNTZkZDU2ZjlmZTAzOGNjYzE0YjM4ZDVhYjE5YjQgbGVnYWN5LXRydW5rCis0NzI0IDNhNjU4ZWVjMWYwMmUxNDg1ZTY4MzNkNmYwZWJkMWM4YjdkYWE2ZTEgbGVnYWN5LXRydW5rCis0NzI1IDhhMTI0NGU3Y2IzYmQyYTQ4M2NmM2Y2OWE1MGYwZWMzYjg0NzMzMjMgbGVnYWN5LXRydW5rCis0NzI2IDU4YWE3ZjNiMTY5MmJmNTc5OGNlYTE2NmRlMzIwMTlkYWY4YzNiYWMgbGVnYWN5LXRydW5rCis0NzI3IDA3NjVkMGJkODhkNmRhNWFmZjA0MTg2NzI0MjQwZjMzNjQ4ODQ0NTIgbGVnYWN5LXRydW5rCis0NzI4IDkwODgwYmQwOTIyMWRlY2QzYWJjOGZmNTNlN2NmZmY2Mzk4NzJmODggbGVnYWN5LXRydW5rCis0NzI5IGU1YjlmNjQ0MDUzZTllMGM0Y2QxYmRkOTEwMzllZTk2OTk3MTk0MTkgbGVnYWN5LXRydW5rCis0NzMwIDY2ZDZkMTNkZjRmOGE5ODIwNGVjNGJhNDNiZGI0YjMzNzMyZWU3NTcgbGVnYWN5LXRydW5rCis0NzMxIGRmN2UyNmI1YzkxODliYTQzYTBhMGRmNDJkODIzYjRhOTBlZDliZjkgbGVnYWN5LXRydW5rCis0NzMyIDY1NjQ0NzY2MTU4YWU4ZTRjYTk3MzJhNTczMjY5NmY1M2I1YjZmMmEgbGVnYWN5LXRydW5rCis0NzMzIDYxODcwMWNkZjYwMDAxMDYwMmQ5ZGJhNjk0MjY3YTNkMjViYTU2ZjIgbGVnYWN5LXRydW5rCis0NzM0IDY1MGNiNjdkNzY1OTg0MmRlZThkY2E5OWJjNTU1ZmZhOTU3MjVlYmEgbGVnYWN5LXRydW5rCis0NzM1IGVlYWFmODc1ZjdiNjgxMzk3M2VlN2RjMGYxZGY3NTM2M2YyZDg2YjIgbGVnYWN5LXRydW5rCis0NzM2IGIwMzRiNGVhMmIzOTkwMjZlYmNlYjU0ZGI5OTJiYjFkZjA4YWEwY2MgbGVnYWN5LXRydW5rCis0NzM3IDc4NTlkM2FhYjFiNDA1MTlkODkxM2FiMjIyNzUyZjFkNTRlNmMyZGQgbGVnYWN5LXRydW5rCis0NzM4IDcxYzExYTZlNGJjMDBmMmI3OWMyMTlhMTA2YjIxNDgwNTQ3MTgwNDggbGVnYWN5LXRydW5rCis0NzM5IDVlNmMwY2RhYTdjMWJiY2NkYzJkNmQ2MTAyZTkwZjI4OTFjMGYyYmYgbGVnYWN5LXRydW5rCis0NzQwIDU1NDZmNGE2ZTNjMzRmZDJlMzE5N2Y1N2JjZjIyZTI2MDI4MTI0YTEgbGVnYWN5LXRydW5rCis0NzQxIDU0MGY4NDQ0ZWY4YTg3MzAwOTM0MTdjZGVhZjNjMmFmODc5NTZkNDggbGVnYWN5LXRydW5rCis0NzQyIGI0Y2FhYzE0MjhkMGRhN2VmMDk5OTAyMGE3MDBlZWRlMjllNWNmZWYgbGVnYWN5LXRydW5rCis0NzQzIDMxOTVkYjY2ODlmZDYxM2VlYWIxNmI2OGI2ZWQwODFkMTg0NjhkMWEgbGVnYWN5LXRydW5rCis0NzQ0IGY1YTZlNmVlNTI5YzA3YmE3NWM1Njg0ZDA1NWMzNmY1Y2ZkZGJkOTggbGVnYWN5LXRydW5rCis0NzQ1IGFjOGEyMjViMDUxYjc1NzcyMjE3YjRmMGU0OTMxZTAzNTg2ZjdiMmEgbGVnYWN5LXRydW5rCis0NzQ2IDAxYTk1NDEyNDU3NzI0ZmJkMjFhYTcwMTY4Njk4ZjAxNjM2MTIxODUgbGVnYWN5LXRydW5rCis0NzQ3IGEyNDE0NjI0MTk5MTNiNzg1MWEwN2VhNTc4YjEzYTlmODVkYTNiYjIgbGVnYWN5LXRydW5rCis0NzQ4IDYyNjNlMmZkOTM5ODg4MTM5ODgxNTRmM2JiMTRmZTdiZjhmMmFhMzEgbGVnYWN5LXRydW5rCis0NzQ5IDNkNmM5YTQ3ZWE0NDVhNTNmYjIzNzFiNmRiMDBmOTVkMmY5MzE1ZjYgbGVnYWN5LXRydW5rCis0NzUwIGYxN2Q2ZTZiNDBkYWIxNGM1YWNiMTUyOTNmNjk4MjU0NzRhYThmNWEgbGVnYWN5LXRydW5rCis0NzUxIDk3MTdmNmE4ZjVmYWZlOWViY2YyZjY4ZGU3NDI3OGZmMmUwODZlMTkgbGVnYWN5LXRydW5rCis0NzUyIGZlOGRiNzhmMzExYzk2Y2VkNjhjZDg3OTUzZjg2Y2UzNGU1NTBiYjkgbGVnYWN5LXRydW5rCis0NzUzIDk5MDA5OWVkNzgxMDUxZDU1ZTRjMDJmMTMzMWFmNGEwMmM3NjVlNDcgbGVnYWN5LXRydW5rCis0NzU0IGQyMDQ5YTFkM2NjNWNmMWNkMmFlNjU4YzFkZTQzOTJhMmUzMzdkYWMgbGVnYWN5LXRydW5rCis0NzU1IGFkYWI2NmZhYzMwZTk3ZWM3ODY2ZmZlMDNlMzcwMzM1OGVmZWFmNmEgbGVnYWN5LXRydW5rCis0NzU2IDZhMDQyNTZlYTA4NzdjMDc0ZDJhOTM4OGM0NjNmZjNjOTJlZjI4ZGEgbGVnYWN5LXRydW5rCis0NzU3IDUwNWZjNDc4ZmYwODUxNGU1MjNkYTYxOGQ0ZjU1M2UxOTc2ODFkYjEgbGVnYWN5LXRydW5rCis0NzU4IDE3MGI5OTg2MmQwOTVkOTYzODU5MzFhMWJiM2RmYzE0NTliODRmZWQgbGVnYWN5LXRydW5rCis0NzU5IDY1YTY4YzUxZTlmMmE3MGZmMzZmZmNkMDk2ZTNkOTAzYWVjYWZkMzcgbGVnYWN5LXRydW5rCis0NzYwIDA4YjQ1N2Q2YjUxNmVkZjQ1NmZmNzYzNjA3YTIwNDg1YTBhN2U0Y2QgbGVnYWN5LXRydW5rCis0NzYxIDVhZWUyYzVkOGRmZmNhZWEzZTg2YTc3OGQwN2JmYWE0YTZiYzY5YWMgbGVnYWN5LXRydW5rCis0NzYyIDE0YjEyNmQwYjViZTM0YmM5N2IxMmQ2MjI5ODA5ZWRlZmFkZjAzNzQgbGVnYWN5LXRydW5rCis0NzYzIDU2Y2E2N2RkZWM4NThiNTZkMGYwMDE3ZmYyYmMxZjZhNDgxOTg3ZDcgbGVnYWN5LXRydW5rCis0NzY0IDA3OTEzZmI4ZjkyZjA0OTkzOTBiN2FiMTI5MzdkMjA1ZDUzNTljODQgbGVnYWN5LXRydW5rCis0NzY1IGZjNmU5NjIyMTA4OGIwODIzNTdhZDA4Yjg3ODJjNDY3N2MwNmI5ZTIgbGVnYWN5LXRydW5rCis0NzY2IDQwYWVjNDhjZDFlMjE0N2Q4ZjlhZjA2YjFjYjBkZDAwZmFjZTQzYjMgbGVnYWN5LXRydW5rCis0NzY3IGZmNzJhNWY5YTRlZTEyNGFhMGQ4OGE5MTMwYmRiODY1NDk2ZTgxZmMgbGVnYWN5LXRydW5rCis0NzY4IDUxNWUxZDAzMzk0YWQ4NjY5ZWM0ZDk5ODM4NGRmMDc5MjYwOTQ3NzMgbGVnYWN5LXRydW5rCis0NzY5IDE0MjU2MTc1MTRhY2NmOGFhMzBjMTVjNTUzMDUwNmZlODgyMWZlMGQgbGVnYWN5LXRydW5rCis0NzcwIGVkODIxYTk5YmEzOTIzOTUwN2MwMGNhNWQ3ZGU3MzU4OGMwYzUxMzAgbGVnYWN5LXRydW5rCis0NzcxIDFjZTA3ZjY0ODYyZTlmNWY4MGM2NTZlNjhmMDE1N2M2M2U4NmVkOTUgbGVnYWN5LXRydW5rCis0NzcyIDk5ZTdhYzIyYmQyZTJkNTE4OGMwZGRjMjI4MjBkNjE3YWFjNmYwODIgbGVnYWN5LXRydW5rCis0NzczIDFlNzIwNzEyODE2Nzg4YzZjZWQ4ZTk1OGY5Nzc3NjRlNDVhOGEzYmEgbGVnYWN5LXRydW5rCis0Nzc0IDVmNzA1OGQ4MTZjZjkxZjI1MzM0MGQ0ZGNkMGJmNmI5ZGY2YzdmM2QgbGVnYWN5LXRydW5rCis0Nzc1IDMxNjFlN2NmMjA1NGY3MzZmOGMyOGMxNmNkM2I5YWMxZGZkN2Q5YjggbGVnYWN5LXRydW5rCis0Nzc2IGQzZTJmOTg4ZjFhZjBlMTQ4MDVjNTYxNWZiMzhjNDQwMTU3OWVkMGIgbGVnYWN5LXRydW5rCis0Nzc3IDNkZmVmNjdlMGRlZDkwZTdkMTEyOGEzZmMyYTAyNDIwYTVhYTJmMzAgbGVnYWN5LXRydW5rCis0Nzc4IGZhYWVjZTdjY2Q2ZTcxYjE1ZDQ4MDM3MjAyNTIzOGRiNjBhNGFjYzEgbGVnYWN5LXRydW5rCis0Nzc5IDdiZGU0YjFkZjQ5NDA5N2Y3YWExOTk2NTc0YjYzZWZmODg3ZWJlZDAgbGVnYWN5LXRydW5rCis0NzgwIGU4ZDIwNzY1OGEwNDUyYjFkNTkyNzczZDNlZTg0YjVjMDhhZGI2ZjkgbGVnYWN5LXRydW5rCis0NzgxIDQzZjllNzU0OWM3MGU2ZTgzN2QwZTBhNjY2YWQyNDA2ZjRlMzZiM2IgbGVnYWN5LXRydW5rCis0NzgyIDNlZGVjODIxMWEzNmFkNTcxOTNlOWQ4ODE5Zjc1OTAwMGYyZTI5ZmYgbGVnYWN5LXRydW5rCis0NzgzIDFiMjYyZDE5MGE0YTQ4MTA5ODNjYzNkNjY1YjU1OTQ0OTMzOTljMTkgbGVnYWN5LXRydW5rCis0Nzg0IDg0NTYwZjRiMjllZjA5YTIwOWNkY2M3ODhkNGY5NjVmM2VhZTM3MjEgbGVnYWN5LXRydW5rCis0Nzg1IDI0MmRkNWVkM2IwODVlZWUyZjQyNjcyYmE2NTA0OTUyMjI2YTI5OWUgbGVnYWN5LXRydW5rCis0Nzg2IDMyZTdkMjY5NmQ3OTFjNjllYzk5YWIxMTI1NjE3ZThmNGM3OGFlMjYgbGVnYWN5LXRydW5rCis0Nzg3IDY0NjhmZDAyNTFkMjk2OGU2MzExODZmYTk0NmE1MDRhNjBhZmQzNmEgbGVnYWN5LXRydW5rCis0Nzg4IGQ4YjRjN2RiNzdhZTZiZmY4YjI1ZWEyNzk4M2FhMjUwNDY5NTUyMmQgbGVnYWN5LXRydW5rCis0Nzg5IGUxMWU2YjM1ODUzMTNhYTkxOWQ3YTRlMmY4MTM0NTc5N2ZmZjYzMzUgbGVnYWN5LXRydW5rCis0NzkwIGIyMjQxMTc3YmNjYzYyNzczMzJlOGE1ZTk1N2Y4Y2I4NzZiZjM0MDMgamFyCis0Nzg5IDllODJkYWY3NjA1YmFkNzk3NmE5YWJjOTk3Y2I1ZTBhYmU0MzQwNzggbGVnYWN5LXRydW5rCis0NzkyIDcxZTYwODcxYzY4MWNlOTE0MTk3NGVmYWMzZTBiMzNjOWZlMzI4OGEgbGVnYWN5LXRydW5rCis0NzkzIDRjMmYxNDUyMTI1ZDU5ZDA3NWM2ZmU3ZGFmOTAxNGNiZGYxNzhmMzYgbGVnYWN5LXRydW5rCis0Nzk0IDQxMjc4OTNhODdhZDA1YTAyMmVlNzBiNThhZDgxYzYzN2ZiZjllNjUgbGVnYWN5LXRydW5rCis0Nzk1IDIxZjBkNWYxOGNkYWU2MTA4ZjVmYzVmZDI1NDUxOTgyZDYwMTlmOWYgbGVnYWN5LXRydW5rCis0Nzk2IDYzZmEzODdjMDJmZWJjYjA4YjA1NGEwZWUyMDMzZWIwM2E4NzcwNjUgbGVnYWN5LXRydW5rCis0Nzk3IDY3MGU1MGFlMzg5ZDU0Y2MzMjEwMWNmYjRkNWFkNjhmNjA4ZjA1NTYgbGVnYWN5LXRydW5rCis0Nzk4IDRiNjE3ZmVlNDI3ZDM2MzhjODdjMGQ2MmQ4YzlmNTMzYjM4YjliNzcgbGVnYWN5LXRydW5rCis0Nzk5IGVkMGFhNGE1ZDEwNmI5YzJiN2IyZWQzZDg1MGU0ODRiZDcwNjg0NjMgamFyCis0ODAwIDI3OWQ1MWExOGFlNGI0ZThkY2YwMDc3NjBhOTc3OGQ4YmZlZjg4YjMgbGVnYWN5LXRydW5rCis0ODAxIDk1NTJlZGI0ZWFiZmFjMzQxYTZkM2U0ZjEwMTNmYTk0OGMwMTc3MGYgbGVnYWN5LXRydW5rCis0ODAyIGYwOWQzMjUyYTM4YjIxM2VlZWQyYzc3NmExOGJmMjdhMjI2MzgzZjggbGVnYWN5LXRydW5rCis0ODAzIGQwNTY4NTk5MzQ3NmQ0Y2I3MGY1YjM0YWRkZjExMTgwMTBmMzlmMDYgbGVnYWN5LXRydW5rCis0ODA0IGVkNDg2NDYxZGVmNjc2ZjA2MTk5YWNhZmJhZGJmY2MxZGVhMWFlNzMgbGVnYWN5LXRydW5rCis0ODA1IGQ2NWM0ODVlMGFkODIzNjAwMzdmOGFiNTZjNDM4OTkxZTVkZGFkODYgbGVnYWN5LXRydW5rCis0ODA2IGEyMDU0OTMzNzc1YjAwMTRkNjA1ZmRlM2Y3ZjE0YTg1ZWUzODEzZmUgbGVnYWN5LXRydW5rCis0ODA3IDg1ZmEwMmI4NWQ3ZDEzMGExNGE5MWQ2YmMyZTVmNWM0ZTU2MDFlMDAgbGVnYWN5LXRydW5rCis0ODA4IDI2YjFiMTVmYzhlYzM3NTZhNTYzZTRlNzFlN2JiYzdhODFlYTRmYmMgbGVnYWN5LXRydW5rCis0ODA5IDhhODc2NTM0M2NjMGQ0NTVhMDYxODgyZTU3Y2E4YTE0MmQ5ZmIyMmMgbGVnYWN5LXRydW5rCis0ODEwIGZiYWY1NDE2OTcxMTczYjM2NjA2ZGU0ZTVjNTlhNzViZjU2OTAyZWUgbGVnYWN5LXRydW5rCis0ODExIGRmNWI3MjhiOGViNjJlZTc5ODYwN2JhMzg2NTBhNjEzZDhjZWE1ODEgbGVnYWN5LXRydW5rCis0ODEyIDZhOTQxMTk4NDRlYjM4MjBlNDRmYzMzNjk0MDlmY2M5YmFjNzM5OTcgbGVnYWN5LXRydW5rCis0ODEzIDE3NDBmZDc2ZmMzMzJmYmM0Nzk1ZTFmYzgzZmRkZDA3M2Q1NDkxNmUgbGVnYWN5LXRydW5rCis0ODE0IDRjNDNjYmRjZDUyNDNkOTljYzI1MTFlMjk0ZmI5ZGZjYmMyNTVkMDMgbGVnYWN5LXRydW5rCis0ODE1IDkxNmE4ZmYzNmE4NTQ3MGJmYTZhMGM3YTAxNTYzYzA2MGY5ZTY0NzIgbGVnYWN5LXRydW5rCis0ODE2IDdmZDc0MTJlNzE4ODQ4ZTBmMzMzM2MyYjQ2ZDYxODI0OWI5N2UwNmUgbGVnYWN5LXRydW5rCis0ODE3IGU4MGFjZmExM2FjMDAwNDQ5N2Q2YjMxZTRhNWRhNTgyMGQyZDg2YzEgbGVnYWN5LXRydW5rCis0ODE4IDc0N2YwYjdjYjdiZTQzNGNiOTY1ZWNkMTRmNTJjNGY5NzVmMzYxMzQgbGVnYWN5LXRydW5rCis0ODE5IDIxYTIzY2ZjNDg0MzFhZTkxY2EwMTNlMDBlYTExYzAxMjMzNTAzYmUgbGVnYWN5LXRydW5rCis0ODIwIDk2NzQ3Yzc4N2E4MzNjMzE5MGQzZDNjMjAxOTRhYjMyYmE4ZWViMWIgbGVnYWN5LXRydW5rCis0ODIxIDhjZjYzYzMwZmZjODc3ZWMwYWQ5NDYwMGNjMTQyMTkyNTY2M2E4NjEgbGVnYWN5LXRydW5rCis0ODIyIDk0YmYyZjA1ZGEzMTllNmNlMzVlMzNmN2FhOTdhMzdjZjI4NGIzYjIgbGVnYWN5LXRydW5rCis0ODIzIDkxNWZhYmVjNjRhMzBhZDczM2IxMjkwMjNhMmYwNzI3ZDYzY2YyOWYgbGVnYWN5LXRydW5rCis0ODI0IDY2M2FhMDU5ZTI5ZmVjNjZmMDMzODE5OGZjMzI2ZDliYjEwMzIwZTggbGVnYWN5LXRydW5rCis0ODI1IGJhMWI3NmMwOTA0MTRhM2VjODA2OGI1NzE1ZDk0NmVhMTMyZTZjYzMgbGVnYWN5LXRydW5rCis0ODI2IGUzODYwMzVmODk3ZGZkOTFhYzYzNTk2MjY1NGNkZjNjYjg2MTY1NDYgbGVnYWN5LXRydW5rCis0ODI3IDA0ZjYxYTVhNzY1NDA5YzRkNTBhZjc0MjBiOTM1NzRhYjBjNzJiY2YgbGVnYWN5LXRydW5rCis0ODI4IDBjODM1YzgwNDMyMjRjZjU5MDU1MzI3NDcxN2VlNGYyODE3MDBjM2IgbGVnYWN5LXRydW5rCis0ODI5IDU4MmIwMGZiYWIxNjE0NTIzZjhkNGY0MzIzMjcwNjBiZWY0MzUyOTkgbGVnYWN5LXRydW5rCis0ODMwIDM5NzQ3OGJjYTBjNGRhYzFkYzAzZTAyZDRkM2I0NjllMjBlN2M4ZTkgbGVnYWN5LXRydW5rCis0ODMxIDUxYzg4MjQ5ODVmOGE1MDg1MGFkMGVlYjZlYWRlMWE3M2JkOTY3NWQgbGVnYWN5LXRydW5rCis0ODMyIGMzMWVhZWQ3Nzk4YmJhNDFmMzE0ZDM4ZTY5M2E3NGY5ZTY4YTM1ZjQgbGVnYWN5LXRydW5rCis0ODMzIGRhYjM0Y2JmOGQ3ZmEzZjQyYTk5NzlmODdlOTIwMmI3ZThiYzViZmUgbGVnYWN5LXRydW5rCis0ODM0IDRlODdmM2EzZjMzYTg3YWJmYjA4ZDhkNzNhZTk3ZjgwMjU3YTY0MWQgbGVnYWN5LXRydW5rCis0ODM1IDFhMjBkNTA1ODc0NDQ4YmM3MDFhYmVhMTYxNTkyY2Q1NDI4ZDhiM2YgbGVnYWN5LXRydW5rCis0ODM2IGM4YTgzMjE4YmE2MTg3MGE2YzcxNzgwMWZiN2VhNWI2NGJmZWZlYzAgbGVnYWN5LXRydW5rCis0ODM3IGZmM2ZjMzBlZDc2MDY5YTFiM2RkZWVmMGYxZjRkM2IzMWYwN2U1NzYgbGVnYWN5LXRydW5rCis0ODM4IDY0NTBkODgyOGQyYjk4OGQ0MTQwMjAyNzE2ZDdlOTE1NGRiZGM0ZTQgbGVnYWN5LXRydW5rCis0ODM5IDRjYzgxMzdjY2I1NmNmZmYzOTJmNjljNmJkNTgzNjIzY2FlNzM2Y2IgbGVnYWN5LXRydW5rCis0ODQwIGY4YWI5MjVlZmRhODhhZTBkYTBhMGUzZTVlNzE3ODBhYzlkNDAzYTMgbGVnYWN5LXRydW5rCis0ODQxIGM2NTMzYjg5NjI4ODg3YTMxMWU5Y2YzOGI5YjFkOGVkOGQ5NmQwZGUgbGVnYWN5LXRydW5rCis0ODQyIGMwOWRhYmY3MDk5NmZiOWE5Zjc4NjZmMjdiMTM4NTM1Njg5OTIyMjcgbGVnYWN5LXRydW5rCis0ODQzIDUzMTNhYzZmMzRmZGNiMDNlNjczYzE3NjE0MGY4MDc3YzFkZDgwYjUgbGVnYWN5LXRydW5rCis0ODQ0IGY5NzllNWJkNmEyMjMwZTc4YzUyM2JmMGY5ZTk4ZWEwZDA5MWVhMGEgbGVnYWN5LXRydW5rCis0ODQ1IDQ5YmZlZjE3YjEyYjY1ZmE3NmJmYjA5Y2YzNGFkYTVhNWE2OGI4Y2IgbGVnYWN5LXRydW5rCis0ODQ2IGRkYjEzODYyZmJiMmJlYTc0N2E2ODE3YjlhOGRkZWNhM2RkMWE1ZDAgbGVnYWN5LXRydW5rCis0ODQ3IGVjYmJhYTU4NGYzYzE2NzM5OGUwNmI0NzEyNWYyM2QzMWMzNjMwODkgbGVnYWN5LXRydW5rCis0ODQ4IDlkYzg3NWFkMDUwYzg5OTQwZTNhNTkzYWNkNjgyODdlNGM3MDkwYjQgbGVnYWN5LXRydW5rCis0ODQ5IGIxNTZiZjRiZTYyZjFiNmE5YzU3MTM1MmEyZDYxOWVkNzZjZTQyZmEgbGVnYWN5LXRydW5rCis0ODUwIGZhOGNkZDNjYzU0NTQwNTUxOTQzYzAzMjA5ZDViZjRmZGVhYTU0ZGQgbGVnYWN5LXRydW5rCis0ODUxIDQyYjU2ODlhNzQwOTVkZDgwOTAyNjVjYWViNjBlMDIzNmU4ZDdhMTggbGVnYWN5LXRydW5rCis0ODUyIDI5Y2E0NWViM2FiNzUyM2JhNzU1Nzk5OTc3NDNhOTcwOGU3YjI2MGIgbGVnYWN5LXRydW5rCis0ODUzIDA3MzZhN2VjMmYyODllNWRlZTkxZDBjZThhMmY3Zjk1YmIzOTI2OWUgbGVnYWN5LXRydW5rCis0ODU0IGNhYmI3YzU3MzJlZjFhMzhkOWY0MTQ2YWM1ODI2MTgyNDBjNzNkZDYgbGVnYWN5LXRydW5rCis0ODU1IDQzOGE4YzI2NWViOWY1NGM4NjdjZWZmN2FjZDJiOTJiYzk0YjEzYzcgbGVnYWN5LXRydW5rCis0ODU2IGQzMWY2OTRjMTFhODliNzExMTcwNjI5NzYzMjE2OGRmYWYzMTgwNjYgbGVnYWN5LXRydW5rCis0ODU3IDEzMjViM2U4ZTNkM2NlMWY2NWYwNzY4MDJhMzg0ZWFlY2E0OWJkMTcgbGVnYWN5LXRydW5rCis0ODU4IGNhYjY5OTQ1Mzc3NWMxOTA5YmJhYzg2MGExOTI4MjYzZTA4MmU4ODkgbGVnYWN5LXRydW5rCis0ODU5IDcyYzcxNWMwMDRjODk4NjFkNTA0YmU3ZWY0Y2I1MGI0NjZjNDcyOTMgbGVnYWN5LXRydW5rCis0ODYwIDcyNDZiOTlkMjk2NmEyYzJiMjU2ZWU2YzFmMDM0NWRhZmVhYTMwOTAgbGVnYWN5LXRydW5rCis0ODYxIDBiNjJiNTNkNDNmODc4NmI2NTQxYTNhODNhNzQzMmYzZTc5NWE3NGQgbGVnYWN5LXRydW5rCis0ODYyIGUxNDk3NWM5MTBmMGNhMWE3ZDY0ODJkYmEwYTIzMDY5ZmNlNzcwZGEgbGVnYWN5LXRydW5rCis0ODYzIDlhOTQyOTJhYTRjMTViYmRkMDU5Y2UyNjQyNjg0ZDkyZWRkMjY2ODIgbGVnYWN5LXRydW5rCis0ODY0IDc3ZWI2MzcxNmI0Zjk4ZDNhNTQ2MGMwYmE4ZmM1MWIyYzZkODcwZGYgbGVnYWN5LXRydW5rCis0ODY1IDRmYzAzM2NiNTU0NDViYTZlMWFiYjI0NmE4NmI2NzdjNzk1ZTkyNWYgbGVnYWN5LXRydW5rCis0ODY2IDQwM2E1NjMxMjE0YjAyNDUxMDJjNTMwYmRkZGQ4NWNkNGIyYzg5MzYgbGVnYWN5LXRydW5rCis0ODY3IGRkMWFiMjBmODIyM2IzOTg2NDM0ZGI1YzU4YjYxYTA3NzZhZmJlN2UgbGVnYWN5LXRydW5rCis0ODY4IDc1YWUxMDRmN2U2YzUxZWEyZjA0NTZjNzJmZWEyNDkxZjQ5NzNjYTggbGVnYWN5LXRydW5rCis0ODY5IDgxMGJjMTVlMThmOTgzYmVmMjM1YmUxNmEzYjM1ZjZmMTIwNTdhNjEgbGVnYWN5LXRydW5rCis0ODcwIDYxNDI1MTgzNmNlYjIyNzMwOTYyNjU5OTViODJiNWZhMzNmZjI2MDMgbGVnYWN5LXRydW5rCis0ODcxIGVlOGU5MWExNzc0NWFiYjdjZmExNDIzYzc1ZjI4NjZjN2M5MTI5OWUgbGVnYWN5LXRydW5rCis0ODcyIDc1YWE1MjQ2YjJmNmYzZDFkMmZiMDc1ZGQxMjM5OWFlODQzMjY3MzggbGVnYWN5LXRydW5rCis0ODczIDk3ZTU3MDUwZTI3NjBjZmEyNzJmNTJkYzBiMmQwODZlYjU4OGRkOTggbGVnYWN5LXRydW5rCis0ODc0IDIyYjFhYjBlNjQ3MzVkYjdmODg4MzRhMWVkNGI5OTRhZGNlZDA2Y2UgbGVnYWN5LXRydW5rCis0ODc1IDRhNDYyYWFjYzFlOTkxNDViODAzY2JmOGIzMGE4NTU2NTcxZjcyYjIgbGVnYWN5LXRydW5rCis0ODc2IDZiZWVmMTc4NzFmOTgyZDNjZmI1NGMwYmIzOWQ3YTFlMzdiMTVlYWUgbGVnYWN5LXRydW5rCis0ODc3IDZlZGE2NDJmMTlkMDM3ODBiZjAyOTA3MmZhN2U5MThiODUyMjk0NGMgbGVnYWN5LXRydW5rCis0ODc4IGY0ZjcxZWJlYTUzZjE0NTQyM2UxMGEzNWZmYjRhNDM5NmEwMTgzYTAgbGVnYWN5LXRydW5rCis0ODc5IDczZWVmZjRkNDNmODRhZDc2ZDJiYjJmMGUwYzRmYjk0MDcwY2JiMTkgbGVnYWN5LXRydW5rCis0ODgwIDAwZjRlNDAwNTc1YTk3MzQwZTYwOTEyMTY3NjhkMWRiYTU0ZTVmZDIgbGVnYWN5LXRydW5rCis0ODgxIGVjY2Y0OTM3ZjFkYzlhZDM1YWVmZWU1MGQ0N2YzYTRiYTJmZGY2ZTkgbGVnYWN5LXRydW5rCis0ODgyIDliZjE4OTk2ZWVkOGM5ZGY2YjNmNGVhZDAwZDViNDJkZWQ0OTlhMTkgbGVnYWN5LXRydW5rCis0ODgzIGJkM2FkNjYzNGU3NjQ4MjA2MWY5ZmQ0ZmNlNTkxMTQ1MThmOWI3MmIgbGVnYWN5LXRydW5rCis0ODg0IDc5MjRiNzgxOWQ4Zjk2YzcyYTE4YWU4Zjk5MTdhNTdlYzY1YmNkMTQgbGVnYWN5LXRydW5rCis0ODg1IGVmYjA2ODVhNmM5MWNiZTY1ODlhOTM2NGMwYzlhZjE1NmUyNjJjZTIgbGVnYWN5LXRydW5rCis0ODg2IGQzOWFhYjZjMTMwZDQ1ZGI4OTQ4ODg1ZjNkNmYyOWM2MGQxZTcwM2UgbGVnYWN5LXRydW5rCis0ODg3IGNiYjQwNzJkNTM4YmU3ZjA0MmFlZjg1YWZlMDA2YmViOTJhYmY2NjkgbGVnYWN5LXRydW5rCis0ODg4IDQ0NWJlYThjZWFiMWQwNzA4M2QzZTRhNjhkOGIzY2QxNWYzYTZjOGQgbGVnYWN5LXRydW5rCis0ODg5IDZjYmQyODMwYjVhMjM4Y2Y1ODI4NDA4NTc2NjY0NjIxYWJmYmRiNGUgbGVnYWN5LXRydW5rCis0ODkwIDViYzM0MWM0MDcxY2QwOTM5NzZkYTgwNDdlYjI4YzE0MzMwY2Y3YjUgbGVnYWN5LXRydW5rCis0ODkxIDFlOGFlYmFiODc0YWUxMjVlN2ZkNDViODZkMGQ2NTM3YTcwYTBlMDAgbGVnYWN5LXRydW5rCis0ODkyIGZhOThkZGEwNzg3N2YwODhmYjFlZDc1NjRiZmFjMjYwZWJlOTBhNzMgbGVnYWN5LXRydW5rCis0ODkzIDYyZWJiY2ZlYTgyNzJiODRkNjM1OThkNzZmNzY1Y2RmNzhiN2JlMWQgbGVnYWN5LXRydW5rCis0ODk0IDFmNTlmMmExMzMxMjk2ZWRmMDEyMTA1OTcwMTQyNjE5ZWMzMzYyZmYgbGVnYWN5LXRydW5rCis0ODk1IGMxZDI3MDQzYzIyZjQ1YjY0MThmNjQ3ZGFjYjVhNjQwMjU3ODMxMmYgbGVnYWN5LXRydW5rCis0ODk2IGQ1NzdkNzQ5OTE4ZDE4M2RkNjMyZDE3MzcwOWU2MDMwYzIyOTkzODUgbGVnYWN5LXRydW5rCis0ODk3IDJmODllYzFhOWMzOGM3ZDcyMTkyYzc0ZjA1MDA4OWM4NWEyMDhhMzMgbGVnYWN5LXRydW5rCis0ODk4IGE1ZTk1ZjlkZTkwMDBlNTc4ODJjYmIzYWI4N2M4NmNkN2U3ZDAyMTkgbGVnYWN5LXRydW5rCis0ODk5IDJkY2Y3NTM4MzQ3YTlkNjhmMmU4Yzk1OThhZGNhNzI0MzE1OWFiZGMgbGVnYWN5LXRydW5rCis0OTAwIDk4YzFkODQxMDFhNTA4MTNiNDVhMWYwMWQxMDA1ZTM2YjZhNDdjNTcgbGVnYWN5LXRydW5rCis0OTAxIGY2MTcxNmFkMGI3ZjUxZjMxYzAyM2YzNGU1YWU0MmE4M2Q5NzMxMjggbGVnYWN5LXRydW5rCis0OTAyIDZmMTIxMWIyZTA3NzliMTEwNjJiOWIyY2NlNjkwZjI0NDUwNzUzZmUgbGVnYWN5LXRydW5rCis0OTAzIDczNDk5YTY2N2U3ODRlZGE3NDgxMzY4NjFmZDRiMGY3N2E4MTNmMTYgbGVnYWN5LXRydW5rCis0OTA0IDJjNjU2NWYxYjdmODY0NDU4ZGQ1M2EyOWZiMTg4YmVkMjVjMGZlYWYgbGVnYWN5LXRydW5rCis0OTA1IDhlZWVjZDIzM2Q1NjliYmE5ZjhjMjMwOTdkZGMyNTY5N2YzMjhlZWMgbGVnYWN5LXRydW5rCis0OTA2IDk0YTY0MzY2NTVlMDNmYjk3NTM4MTQzZWE4NmZlN2VjNzA0NDA2N2IgbGVnYWN5LXRydW5rCis0OTA3IDQ4MGIyNTFhMDQ2ODM1YjFjYjQ1ODkzMWU1MWI0YWEyZDBkNjU3YmIgbGVnYWN5LXRydW5rCis0OTA4IDllZmQ0MDhmYzlmNmJiNzI5MzZiZGE2YjZjY2M2NDEwZTZjZGFjMDUgbGVnYWN5LXRydW5rCis0OTA5IGNkZDNhNzIxYjQwZTNlOGU5NTc3NTM5ZDY0ODhlOGNiZTM2NTUyNWMgbGVnYWN5LXRydW5rCis0OTEwIDg5OWQyMDg3NDU2NmI5ODZkMjE2ZDE0ZmUzNjA5MjExMDRjNGJmMjMgbGVnYWN5LXRydW5rCis0OTExIGI0MmFiNzdmMjIyNjAzMTY2M2MzMTI5MGE1YWFkMzVhYmFiZTkzNzQgbGVnYWN5LXRydW5rCis0OTEyIGJjMDMyMjVhNDQ5M2Y1ZGJhNmIzZjZlNmE0ZmE5MWIwZGNjZDZhZjcgbGVnYWN5LXRydW5rCis0OTEzIGUxYTdiZGZhZmVjOTMyMzg4NTI3ODg5ZGJmMTFjY2NmOWVmZmE2MWIgbGVnYWN5LXRydW5rCis0OTE0IDY1YmNiNDE4MmMxYTMyMDc5NzllZWJhMjlmNDBmNGU0MWUxZDljNzAgbGVnYWN5LXRydW5rCis0OTE1IGJhYzk2ZDVjNDYzZjQ1MmZmYTdhNDRmN2FkNWJkZjAxM2IwZGVjMmMgbGVnYWN5LXRydW5rCis0OTE2IDFjMjlmNmJkZDg5OGY2ZTI0ZTdiZjU1MzNjNmJmMzQ1NDllYmI4OGIgbGVnYWN5LXRydW5rCis0OTE3IGQ5NDA0NWJkNGEwNDEyYjlhNjkwMGE0MGQ3OTY2ZDk3MmM1MmE0ODggbGVnYWN5LXRydW5rCis0OTE4IGU5ZTg2YWU1ZjVhNGE4N2YxYTRkZGIwNjI1ODE2MDQxMzdkMDIxZGQgbGVnYWN5LXRydW5rCis0OTE5IGU3NjRiNzhhNzA0ZjUxOGYxYTgzNDJmZGExYjhmMmM0MzViZmNiMjIgbGVnYWN5LXRydW5rCis0OTIwIGU3MjZmOTBkMmE5ZmYyNDk1OWRhMTE5ZjIyNTg1OTI1NTU1N2Q2YWYgbGVnYWN5LXRydW5rCis0OTIxIDFmNDE0MWFhZmUzNjE5NzY5YTdiZTRlYWYyNTNmYzRkYzZhMjZjNmQgbGVnYWN5LXRydW5rCis0OTIzIDMyMmZjNTk2ZjFjNDM3OTEzMDBlODBjYWZkYWE5YTE0NTU2MTZhYzkgbGVnYWN5LXRydW5rCis0OTI0IDRmN2M2NzNkYTkxOGI1NmFkMWJhNTVlNmY0ZmNkODQzZjNlYTI1N2IgbGVnYWN5LXRydW5rCis0OTI1IDNkNjczNGFiNmNkNDAyZGQwMjFlNmQ0YTNkODc5ZWMxZjM3ZTgzYjggbGVnYWN5LXRydW5rCis0OTI2IDhlMzhjZDBhM2EzMTVmZTFiZDdhOGUzYzljMTZmNTAyMGUyNzI4NjQgbGVnYWN5LXRydW5rCis0OTI3IDBlMWY5YTE0ZmJkNDk1YTkzYWI1ZjMxMmUyMWJlNjAwMzYzOTJlM2YgbGVnYWN5LXRydW5rCis0OTI4IDViYjM5YTQyYzcyOTEyMjc0ZWZhOTExYThmMmJhYjBiY2ZjY2MyYWEgbGVnYWN5LXRydW5rCis0OTI5IGRkMjg0NWQwNmViMzdhZTI5NDA4ZmU4YmZlMDc4MDVkMGIyZTY2YjUgbGVnYWN5LXRydW5rCis0OTMwIDUzZjkyYTQ3M2M2ZjEwYTZmMWMwNjA3YzYxZDY0MjgxMGNkMmI2OTUgbGVnYWN5LXRydW5rCis0OTMxIGRlNGRjMTY1YmZiNmExMTUyOTljOWFhMWM5YjliMWUyNGQxOWYyOWUgbGVnYWN5LXRydW5rCis0OTMyIDMwMjA1ZDYzNGExNWI1MjgxMjZhZWJkYWNhY2Y1NmEzNmVmMTYyZWIgbGVnYWN5LXRydW5rCis0OTMzIDcwODlkNDg0MzQwNzJlY2RmNDc5YjA2ZTkzYzI3YzA1N2M3MjFhNDcgbGVnYWN5LXRydW5rCis0OTM0IDExYjkzN2VhMDAyNjRhNWIxZjkzZDUxN2I1YTVkNzhiZDIzMTUxN2MgbGVnYWN5LXRydW5rCis0OTM1IDY0ODQyZTIwNmI3NmNiMTVhOWEwMDMyNjkwNzE4MDBmZjY1NjU2ODQgbGVnYWN5LXRydW5rCis0OTM2IGExN2RhMTMyMmM1NmQ1MTBiNDJkNjA3YWMzNzM3ZDExNWRhOTk4OTAgbGVnYWN5LXRydW5rCis0OTM3IGJkNDc2NTU1YmU0MmE3YWQ3OTlmYTZlMjUyNTY5ZGZlNjU1ZDY3NDQgbGVnYWN5LXRydW5rCis0OTM4IDIyY2QyMmJmNDM4NGU0ZDQ2YmIwNTdlMzc0Y2Q0ZDZjN2VlMTBlZWIgbGVnYWN5LXRydW5rCis0OTM5IDA1MTBiOTQ4MTc4ZTBiYTcwNmI1YTRlNTk1YzE0ZDU5MzU0YmVmODQgbGVnYWN5LXRydW5rCis0OTQwIDUxN2JjZDQ4MjNhYjc4NmM3NGIyZmIxMzcxMGFmZGY1ZmY4NTBjNmIgbGVnYWN5LXRydW5rCis0OTQxIDJhNTc0ZDRiMGQ1OGMyZjBlMzgyYWRhNDZhNDAzNDRiNjU1NWEyNmMgbGVnYWN5LXRydW5rCis0OTQyIGQ2MzBjNmQzNjgzOWFkODg0MjZhZTY3YjBmYWM1YmQzMzExZTVmZTEgbGVnYWN5LXRydW5rCis0OTQzIGZlMzdlZDJjZjdhNWM1NzNiZmZiODIxNGYwMzBkNDg2NDM2Y2IxN2YgbGVnYWN5LXRydW5rCis0OTQ0IGViMTRmMzJhOTdjZGM1YzU0OWU3MmViMWQ5YTM0OTg4YzAyMDljNmQgbGVnYWN5LXRydW5rCis0OTQ1IDgwNzI5YWZmOTA1N2MwZmYxN2ZhYTVhYzcwZGMzYWU2NzkxOWUxYWQgbGVnYWN5LXRydW5rCis0OTQ2IGNkNjRhMzJhYjgwMzJjZjc2YmNiNmZlMWJjYzQ4NmU5ODBjODlhODkgbGVnYWN5LXRydW5rCis0OTQ3IDQ0MThlODU0N2VmY2YxNTBmNzAxYmFjOTQ5ODgwY2YwMWU3ZDYwYTEgbGVnYWN5LXRydW5rCis0OTQ4IGZiOGUwOGVjODhkZDU2MDYyYzFhOTM1NjAyMWFlODE1YWJkMTU2YjYgbGVnYWN5LXRydW5rCis0OTQ5IDRiNTc0ZGI1ZGIxM2YxNzU3NGI2NWM0NjkwYjBiYzBhM2IyYzI5Y2IgbGVnYWN5LXRydW5rCis0OTUwIGQ5NDgxMzU0ZmRjMzYxOTliZTFiYTNiZTgzMmZlODM2OTEwNTQwZGQgbGVnYWN5LXRydW5rCis0OTUxIDVmYzYyNTYyZTZlY2UxNzA5ZGYzYzc5NDYxNTRmNzdlMWVkNzJkNTcgbGVnYWN5LXRydW5rCis0OTUyIDcxOGM2NWQwZTEyZGI0ODY2MWFmNzdiNTc2Y2NkMWMzNjkyMmM2ZjMgbGVnYWN5LXRydW5rCis0OTUzIDYwZTVhYWNlYjNlYjM2Y2EwNGQyNGIxMzAzZDkyMzYwYTE4ZjUwM2UgbGVnYWN5LXRydW5rCis0OTU0IDE1YTg2Njg3ZjgzODA3MTE0NTdiMzJiNjBiNmM5MjRiM2IzMTgxMmEgbGVnYWN5LXRydW5rCis0OTU1IGRkZjYwYmM3ZWQzMDE1ZjczNzg5MmFkOTQ0YzA2OTM3NDZiYmE4YzYgbGVnYWN5LXRydW5rCis0OTU2IGMyMjE5NTdhNjI2ZDdlYzVmZTI2M2VmODc4YWM1OTdlNTZmMTgxYTYgbGVnYWN5LXRydW5rCis0OTU3IGYyMTdjMWIyN2Y4Njc2YTVkNGI2NTNhN2NjYmMyNzRiOTkzMTVlMzYgbGVnYWN5LXRydW5rCis0OTU4IGI1Y2U4MDExNDQxNjE1ODc1YzQ5NDM4ZTc5ZDBkNmQwMDg0Y2EyZDIgbGVnYWN5LXRydW5rCis0OTU5IGQ1OTc4MjM4ZTNiYTZmN2NjNzczMjAyZjIxM2E3Mzk1YmI2M2Q0MDAgbGVnYWN5LXRydW5rCis0OTYwIDRkZDFhZjBkZGVmMDhkYjI2ZTI2Mjg0YzMxNjk1YzRlNDczZjdjMTUgbGVnYWN5LXRydW5rCis0OTYxIDQyNTgzNWI4ODA5OWU4MjJiOThmMDkyYWFiZTUxYmE0NWM5ZWNjZWIgbGVnYWN5LXRydW5rCis0OTYyIGU5MjBlNmMyNzIwODIxYzFjMjZlYWY4NjAyODZkZTdmNzEwZDQwZjIgbGVnYWN5LXRydW5rCis0OTYzIDlkNmU5N2Q2NjY3MDhkNDM3YWJlMjg1YzkxZjQ4MjY1OTY5N2ExZTcgbGVnYWN5LXRydW5rCis0OTY0IDhhYzRjMGUxY2UxN2FkMjliZjdhYzlhMjkxZDZkNjY3ZGEzMWJjYjUgbGVnYWN5LXRydW5rCis0OTY1IDQ3Y2M1M2ExZmQ0N2IzZDRlZWM0OGUzOTJhODkyNzY2YTUwMjg3NGEgbGVnYWN5LXRydW5rCis0OTY2IGM2ZTQ4Mjg3MGVjMzBhZDBjNDNjMzk4M2UxMGYzOTk2ZGJjZDI0YWMgbGVnYWN5LXRydW5rCis0OTY3IGMyOWFkYjMzODk2NGNiN2ZhYzA5NGVlNjA5NmQ5OTVhMzBjNDk0Y2UgbGVnYWN5LXRydW5rCis0OTY4IGM2YTZlMmIyMGJkODNkZDM4YThlMjJlNzE2NTRmNWU3Yjg1MDZmNTYgbGVnYWN5LXRydW5rCis0OTY5IGM2ZjJkNTEyNTFkMDc1ZDc4ZGVhMzc5YjU0YmUyZTFhM2M2ZmIyOWMgbGVnYWN5LXRydW5rCis0OTcwIDU2ZTI1MTE0ZDQzODQ0MzU5YWUwNjRjOTMzZTc4NjgzYjgxMWVkZjEgbGVnYWN5LXRydW5rCis0OTcxIGY0ZGM1MWY3OGE1NmRjM2ZiYjE0MWQ2ZGJkZWI1Y2NiMDQzNjE3Y2QgbGVnYWN5LXRydW5rCis0OTcyIDFjZTllNjdjNjg1NmU4ZmM3OGJhMTc1NTY1MWViNDk5ZTVhM2MwYjkgbGVnYWN5LXRydW5rCis0OTczIGQwYjk4MTJjZDljZjQwNTEzYWM4ZjczOWZiN2ZiMmZiMGRmOTljNWEgbGVnYWN5LXRydW5rCis0OTc0IDJmNDU1NjI3YzFmMGVkNWFmYjI4Nzc2ZDQ5YjViN2I3YmZmZGRlNzIgbGVnYWN5LXRydW5rCis0OTc1IDU1NjIxOTcwOWU5OTg1YmNmZTEyMGVhYTYwNjc0MzMyM2I1ZmQ5NDkgbGVnYWN5LXRydW5rCis0OTc2IDQ5NWFmYzhhZDdiOTY5ZjE0ZTZjMGMyNWIyNGY1YmZlZTgxNzhmODEgbGVnYWN5LXRydW5rCis0OTc3IDg0N2QyNDg0MWM4NTY5OWQxNTE4MmM1MzM5ZGI1NWQzZDZkYjEzMjIgbGVnYWN5LXRydW5rCis0OTc4IGU3ZDQ4MGNmMTZiYTZkZjgxMGFlNjkxMDY5NzYwMGI3ZjY2Y2MyNzcgbGVnYWN5LXRydW5rCis0OTc5IDllNDAxMmIxNzU3ZWI0YjZhNmNiZDkzYTMyYjFmNzc1NzVlNDQ1MTUgbGVnYWN5LXRydW5rCis0OTgwIDhiOGEzN2I3Y2JhNDM5OWI5ODljMDUyOWFjMGQ0MjQxNjFhMGQxZGUgbGVnYWN5LXRydW5rCis0OTgxIDYwMDE0NDhmYWI4OTAzNTBiZWE4M2M2MmFhMjM4NjUxZDVkMWVlZmMgbGVnYWN5LXRydW5rCis0OTgyIDE2ZWExNTFhZWVjM2E0YjA4NmI5M2U5NDdkNjMwNWIxMWQwYTU3ZGEgbGVnYWN5LXRydW5rCis0OTgzIGQxMTIzYjEwY2YyMzcyY2M0ZTNlNWE1NmZlOWMwY2Y2MjhjN2ZkZTQgbGVnYWN5LXRydW5rCis0OTg0IDgxNWRmYWE2YTc3ODc3NzIwNjMzNGE3ZDdjYTdiMTg2NDFjYjFjMjUgbGVnYWN5LXRydW5rCis0OTg1IGFlMmIwMzI0NDVmOTljMzNiMWY3N2IyYjIyMzY4ZDM1YjJiNDMwNjQgbGVnYWN5LXRydW5rCis0OTg2IDE2ZWE1N2MzOGM0Zjc0MWYzMTY5NmEzYzkzZDM1NmFiNmE5ZTBjOGQgbGVnYWN5LXRydW5rCis0OTg3IDFhNWU3ZGE0MDRjM2RhM2IzY2M1ZjVmYWE1Njc3NjgzMTQwYTU5NmIgbGVnYWN5LXRydW5rCis0OTg4IGUzOWJiMjQwYjFiM2E3YTg0NDVkMDAxZWJiYmQ0NjE2ZTFjMGVmOWEgbGVnYWN5LXRydW5rCis0OTg5IDllNWEwOTg0MTc4MTk1OGMyODgzZGJmY2NhNjVlZTY4ZmNjOTkzNjggbGVnYWN5LXRydW5rCis0OTkwIGU1MDZlYzRmYjJiMTBkNDAwZWU3ZjYzOGY2OWY3OWI1MmM2ZmEzYmYgbGVnYWN5LXRydW5rCis0OTkxIDczZDE5M2VhYTkwMGVhNDM4ZTg0NTI5OGZkNzc2ODRiNmE0NzQ1MjQgbGVnYWN5LXRydW5rCis0OTkyIDg3NTE3M2YzZjMxY2JkMjM0NmNiNDc3OTEzYWVlNzVlOTI1ODg5ZWYgbGVnYWN5LXRydW5rCis0OTkzIGExNGZjMmQwNGMwNjI1YTg2NWZmYjQzYmQ4YzU0NDk0NWM5NTA5ZTEgbGVnYWN5LXRydW5rCis0OTk0IDZmY2QwYjAyMmZhNzdiYmU2MmRmN2Y3OTUxNDc3YmZlZDJhMmJmMmMgbGVnYWN5LXRydW5rCis0OTk1IDRkZjAwYjI5NDc3YjdmN2IyNjk3OWI5ZWQzYTFiZjc3ZmI4MTJiN2QgbGVnYWN5LXRydW5rCis0OTk2IDUzNGE5N2M0MDBjYzdkNjBjNTM1Y2ZkMjRlNTQ4NDAxZjMxYWU2YzggbGVnYWN5LXRydW5rCis0OTk3IGQ3YWU1ZmIxZDI1NTA5ODE0OTc4MWMwMWY0OGZlOTU5NzUwNjRjYjYgbGVnYWN5LXRydW5rCis0OTk4IGI3MmNjZjViN2RiYzQ3ZmM4ZDExNjlkYTNkZGEyY2E3MzExZjc5YmEgbGVnYWN5LXRydW5rCis0OTk5IDQ5ZGYxNTc2ZmI1NGU5MmZmMWNiYTEwYTUyY2U1MThkM2Y1NmQ5NmYgbGVnYWN5LXRydW5rCis1MDAwIDFhNDQ4ZGQ4NGVkYzJlOWYzZDIxNDhjYTM5ZGU2Y2E4MjVlYjg2YTcgbGVnYWN5LXRydW5rCis1MDAyIGFhYmJmYjYxZTM4ODg0YjZhMGM0YzMxOWVmYTYyN2Q0ZWFiYWY2ZGMgbGVnYWN5LXRydW5rCis1MDA0IDljYzc3NWZkNmU4NGM1ZjMzODViZWE5MGEyNDdlNzk4MWJhYjkwZmEgbGVnYWN5LXRydW5rCis1MDA1IDU1MzZmY2JhZTgwYWQ3YjAxN2QzMzhhOGZlMjBhMTU0MDBiMjI1ZDMgbGVnYWN5LXRydW5rCis1MDA2IDMyODFhOTMxYTFkOWRjOTc3YmExM2M1MDFhZjQwZDkyYWU0YTVhZTcgbGVnYWN5LXRydW5rCis1MDA4IDJjYWM2YzUwNjZkYTUwOTU5OGFiMDZlZTI5ZTkwZGY2OWJmZmE3MzkgbGVnYWN5LXRydW5rCis1MDA5IDQxOTYwMDA3ODliYzVlMjQyNmUwMzhhNzRlNTIxMjBiNTZmNTkwYmQgbGVnYWN5LXRydW5rCis1MDEwIDBmNmZmNDViZDgxNjc4NzZiN2MzZTQ1M2I2ZTI1NjFlNzY4NjNlMWEgbGVnYWN5LXRydW5rCis1MDExIGM1NWRkZGJmY2Y3Y2U4ZWI2YWZiZjk3Y2Y0ZmQ1OTg4OTUxZjQ5ZjMgbGVnYWN5LXRydW5rCis1MDEyIDdkNzAyMDlmMzU1ZDIwZWMwMWRiYzczYTAyZmIyOWNlOTIzZjIxOTggbGVnYWN5LXRydW5rCis1MDEzIGYzMGJjNDhjNDE3YTIxZDFjYzNiNmU2NmY5NzM5Yzk1ZjM4MDI4M2MgbGVnYWN5LXRydW5rCis1MDE0IGY0ZDI2YTBlMjk3NTE1MWE2ZmVlZDAwZGJhZWQzYzIzNTBmMDQ1MjUgbGVnYWN5LXRydW5rCis1MDE1IGIxODFkZmYyMWIwYjhlOTljZjJjOTQ1Nzk4OTBkNjgxM2E1MWJlNWIgbGVnYWN5LXRydW5rCis1MDE2IGY5YjA3OTE1YTA2MTdkYTBhZTRmYjBlOWJhNTkzNjFjMmNjNDJkYWMgbGVnYWN5LXRydW5rCis1MDE4IDJhYTZiNWFkNDUyMDRlMDcxZGIxZDRmN2MxZTI4MmFiYWJlNTllM2EgbGVnYWN5LXRydW5rCis1MDE5IDM4ZjMyMjVlZmYzMWJkZDM1YmM2MjcwODhmZTcyYmEwZmNmNTBkMGIgbGVnYWN5LXRydW5rCis1MDIxIDNmOGM4YjkwMTU4ZGZkMzJmYmM0OGNhYjQyOTFmNjNiMzZkZmRlMjQgbGVnYWN5LXRydW5rCis1MDIyIDc4N2I0ZGQ2ZjVmM2U2YzIwZTEyZDE3OTRjMTA2OWViYjQ0ZGE2NzkgbGVnYWN5LXRydW5rCis1MDIzIGIwOTJkOTM2Yzg3NWU2NmYxNzRkZDFhY2E3NjEwMWUyZDY5OWJhNmQgbGVnYWN5LXRydW5rCis1MDI0IDM4MjgyMDZjMmRjMGM2MDllNjRhYjZjMjk4M2Q3OWQ5OTc0NTFlY2EgbGVnYWN5LXRydW5rCis1MDI1IDg1YzA4MTk2NjJiN2I0OWJkZGNlNDQ1OTcxYzY4MjBhZjI4YTNiNDggbGVnYWN5LXRydW5rCis1MDI2IDdmYmZmNTJkYjA4Nzc0ZGY5NGQxNDk2YTRlZWZkMGYzMDBiNjJiOTUgbGVnYWN5LXRydW5rCis1MDI3IDkxMjgxM2Q1NzNiNDJmZmEyMjNhOTU3NjZjOGYzNzFkNDQ5YWRhNzQgbGVnYWN5LXRydW5rCis1MDI4IDkxOWM1M2EzNWVmYWVhZDNlOWRmOGUwOTNjYjVkMTI3NmM3M2EzNmQgbGVnYWN5LXRydW5rCis1MDI5IGI1OTYzYzRiNjM5YWQxNDk3MTcxMzZiNmYzNzdhZDMwZTcyNDFlMmUgbGVnYWN5LXRydW5rCis1MDMwIDJjNjE3ODYzMjdjZmYwNTRkMzdkOGI5ODg3ZTBlOGE0MGY2NzFmZjcgbGVnYWN5LXRydW5rCis1MDMxIDdhMzczMzczMjkwMWMxMTllNWY1YTY5MDk4ZmYxNjEyNjNjNjRlZGQgbGVnYWN5LXRydW5rCis1MDMyIDhiZTQwMDJiNTA4NjdjMTg3ZjNiZDBlN2ZjZTI5ZGU1MjI1ZWVjMGIgbGVnYWN5LXRydW5rCis1MDMzIDE4MDc4NjRhNzVmNDcxNDNjYjMwYzQ4NzU4ZGRiNjUwZGViMTNkZTQgbGVnYWN5LXRydW5rCis1MDM0IGFjMTNjYWE3OWUzY2E2MzQyODU1ZTEwM2JkN2U0OWU0YWYwZmYzYzggbGVnYWN5LXRydW5rCis1MDM1IDBiYWViNzQ2YTg1NDAzMjljNzQxMjUxZTM3MDRjMDEyYzA1NjMwNGUgbGVnYWN5LXRydW5rCis1MDM2IGYwYjc4NzJkYTY4OTFjMDVkNjdiYThmYmQ0NGNhYzRlOTBlZTdjYzMgbGVnYWN5LXRydW5rCis1MDM3IDk2NzdlYjEwNWZhZTgyNGRiNmMwODdjZTYwNDcwZTIzNGVlMzIyMWMgbGVnYWN5LXRydW5rCis1MDM4IGY0N2JjNTU1NDQxODVhNWMwOWI2MzM3NDM0NTE5YzE3MDMwMzY0MDYgbGVnYWN5LXRydW5rCis1MDM5IDQ5OGRhZDgwNDVkMzRjODZiZDY1ZWRiNjNiN2VhNTZjYjM5NDcxNWIgbGVnYWN5LXRydW5rCis1MDQwIDBhYzI3ZmZkMDU3OTljM2YxZGQ4NjdiZWNkNTE4MWI4OWE2MWM3OWEgbGVnYWN5LXRydW5rCis1MDQyIGJjNGIzZmRhNmE4MDc4ZGM2Mzc3ZmFhYzlmZDBiMDJlOGEzYjQ1NTggbGVnYWN5LXRydW5rCis1MDQzIDkxYmM5MDdiMWU2M2NmMDgyZjQzNDcxMGVmZDI4ZDdlNzgzMjEzMzAgbGVnYWN5LXRydW5rCis1MDQ0IDRkMjhiNjU1YjcyODcxNWU0MmIzYTBiYTgxZGNmODVlOTE1NGQzY2IgbGVnYWN5LXRydW5rCis1MDQ1IDM3NzBlNDM0NzgwMzg1ZWY5MjY4NTQ2ZDhkODY3YzZkMTRkZWE3NTggbGVnYWN5LXRydW5rCis1MDQ2IDc5MTQ5MTU3MjllM2Q1MjFiNzEzZjgyMGFmYWU2MDQ1ZTY2ZWFhNzQgbGVnYWN5LXRydW5rCis1MDQ3IDRiNmMwNzYyZDY1OWI0ZDYxZTdjMjlkYzViYzMxMzM4MTU2OTg2YjkgbGVnYWN5LXRydW5rCis1MDQ4IDcwNDJhZWU2NDA5ZWZjNzgyMGZkM2QxOGZhNjA2YmIwZGU0NzkzNDUgbGVnYWN5LXRydW5rCis1MDQ5IGFlMTMxYjhiNGUzMTlkYmZjMTNkODczOWI5M2Y1MmVjZTI5MDFkZDEgbGVnYWN5LXRydW5rCis1MDUwIGQ2OTk1NGUxZjVkNDE4ZjRmZGYwZWQyM2Y1MTJiNWZiNTk4YWRiNGUgbGVnYWN5LXRydW5rCis1MDUzIGJiYmYxNzY0MGM2ZmExNWNiYzU5NjNjNzU4MTkwMjVhZjNlZjNkMTYgbGVnYWN5LXRydW5rCis1MDU0IGQ1ZDI3ZGFkN2ZlYWY1ZDZmNTM5YWJlMzAzYTA5NTA5NDZlOTRkZTkgbGVnYWN5LXRydW5rCis1MDU1IDVkMDkzODM1MGFlOGU4ZDg3Y2M4NzYxZmU4YWJkMzdmNjRiMzE0NzcgbGVnYWN5LXRydW5rCis1MDU2IDJhM2U0ODk3MjI2MTJmOTMwNWMxOWU1OWJiNzU4Mjc5Zjg1N2M3N2IgbGVnYWN5LXRydW5rCis1MDU3IDc2M2ViNDc5NzVkZDM5N2U5MzZlNDcyZjdiMDlmNTNjYzllMTdhNzggbGVnYWN5LXRydW5rCis1MDU4IDhkZjU3NGE2NTVhZDZjM2NkNWI4M2UzNDhkODlhMzM5ZTg2MGYyMmUgbGVnYWN5LXRydW5rCis1MDU5IGNlOWE3NTA3ZTFlZmViNzEwMzU2Y2E4ZTU1ZjhlY2JjMWM2NDQ4MmYgbGVnYWN5LXRydW5rCis1MDU5IDA2NWUzMWNmNTg2MmUyNzUyMWNmNTcyNWIwMDNhZWQyMTFmMDkxYjIgbGVnYWN5LXRydW5rCis1MDYxIDMxNzc3NjIyYWU5MzE1N2EyMDEwODEyOTE0OWFlZmNlZmUyYzhlZGIgbGVnYWN5LXRydW5rCis1MDYyIGNkNWE5NmY2MjM5YmRlNDUyYTIwZjc3MTBiZjdhNGJhY2Q5NjJjMWQgbGVnYWN5LXRydW5rCis1MDYzIGIyODFjM2M4NjNjY2FlNGVkYmQxYzY5NThmOWQzM2FhNzAzZGY3MzAgbGVnYWN5LXRydW5rCis1MDY0IGJkYjYzYTc5NzU1NTU0Nzg0MTkyNDAyYWZmY2JjZTQzN2E3MTE0YmEgbGVnYWN5LXRydW5rCis1MDY1IDU4OGNkNDM0M2VlZDFmYzI3MzYwOWY3MDQxMWEwM2M4NGM2NTVmYjggbGVnYWN5LXRydW5rCis1MDY2IDM1MjMzNjQwNDc5YjJlYmM4YmIyZDgzZGQ3YzU0MzQ5MmY3NzZlNTQgbGVnYWN5LXRydW5rCis1MDY3IGJlZTJhZWQ0MTZkNjI0NDI3YWQwYWY4Y2EzYzM2ZjIxZGExY2Y1MWEgbGVnYWN5LXRydW5rCis1MDY4IDQwODRlY2YyNzZjZjBmNWU0NmM4ODIyZjA2YWU0MDM2YjYyYzE1NTIgbGVnYWN5LXRydW5rCis1MDY5IGM1MmI1YzliZTdlMjE3ZjQyNDIyMWY4ZTI1OWM5MGM5ZjU3YTE5MzggbGVnYWN5LXRydW5rCis1MDcwIDI5YjkwYTg2YWM5NmQ4Yzg4YzMzZjJjZGUyNTUwN2FjYmMyZGMxODkgbGVnYWN5LXRydW5rCis1MDcxIDE3YzkyNWYwMDYwYjhjNzE5NjU5ZWI2MGJkMGU4NzYwY2Y4ZTFiZDMgbGVnYWN5LXRydW5rCis1MDcyIDFjODE0NzgzZWZjMTg1MDBhMzAyMmZmNTdhMzdlZjdlNWE2NDRiODQgbGVnYWN5LXRydW5rCis1MDczIGVlYWMxNzBmNWYyZmY4MjU4YzY5ZDg4MjM3YTVhN2ZjOGM2ZTk4MWUgbGVnYWN5LXRydW5rCis1MDc0IDdlZjcyODczZTRkNjg3NDdmNTI2Yzc4ODk4YTg5ZWVkMzk4Y2JmY2QgbGVnYWN5LXRydW5rCis1MDc1IGIwMjU3M2VlYjE4MjhjNjgyMmRiMjhhMzUxY2VhYzU3ZTZjYjFjYmIgbGVnYWN5LXRydW5rCis1MDc3IDAxNjg3Y2U0MzcwODJhNTViN2VjZjAwNjQzMjgwMGZlZjU1NzRjZWMgbGVnYWN5LXRydW5rCis1MDc4IGNhNmI2MGQ0ZWE5MDYzN2M2NzZiMTAzMDAwODBhN2NlOTRhY2QzY2QgbGVnYWN5LXRydW5rCis1MDc5IGIzNjhiZTdiMDYyYTUzMDJhMmQwNmI5M2U0NjdmNzJmMGJhOGM5N2EgbGVnYWN5LXRydW5rCis1MDgwIGY3MDQ5ZDQ2NTM2NTc2OThkOThkMTIwZWZmYjFhZTVhZjYyZDAzNzQgbGVnYWN5LXRydW5rCis1MDgxIGJjMzI2MDc0Zjg2MTRlODFiNWJkZjM5ZjA5ZjQ0YTI5YzljYTgzMzIgbGVnYWN5LXRydW5rCis1MDgyIGE5MmRkZWQ0YTdjNGRjYzYyNGE2ODBjMDA4ZGViNjhjOTdhYmQ0ZjMgbGVnYWN5LXRydW5rCis1MDgzIGVkMzBiY2ExODRiYjgxZTIzYThmYWE5ZDliZDgwYmNkZGRhMDQ2YzEgbGVnYWN5LXRydW5rCis1MDg0IDZjYzYzN2M2MGNlNjYyYWZlY2EyMjgyM2Y5NmE2YTJmZTBmYWFkN2IgbGVnYWN5LXRydW5rCis1MDg1IGRhNDdiNDE0NmE3Yzg3Y2VkNGNhNDg0ZDZmNTM2Y2ZjMmY5Njk5MjggbGVnYWN5LXRydW5rCis1MDg2IGJkMDVkY2VhN2IwOWNkNzQ3NDk3Y2VjM2JlZTYwNzIzMjQwOTUyZGYgbGVnYWN5LXRydW5rCis1MDg3IDJmOTEwMmY1NzE0M2YxZDZmZDQ2MmJkOTU4ZTVjNWYxNGMwOTI3NTQgbGVnYWN5LXRydW5rCis1MDg4IDYxZTNiNjBhZWM0NDE5ZGFlZDFlODFmM2YyNjdiNmJmNjJkYTk2NTggbGVnYWN5LXRydW5rCis1MDg5IDgzMDE4YWE5YjE3Yzk1NmM1NDg2OGIzMzY0YTdjMTRhYzQ2MzRkODkgbGVnYWN5LXRydW5rCis1MDkwIDYzNDFhNGMwMDgyYjM0OTM3NTE3MWQ1YmYwOTljZGE2ZWIwMGQyMDYgbGVnYWN5LXRydW5rCis1MDkxIDVhMzM3MTMyMDk3NTQ1ZWFmMmVkMmY1ZmI0OTQ3OWIzNGZkODhhZWIgbGVnYWN5LXRydW5rCis1MDkyIGRiYjQxNzEyMTY1YmU0ZmE0MmYwZGU3ODcxMTJkY2IwMjEyMDJiZmEgbGVnYWN5LXRydW5rCis1MDkzIGU5ZWEwNTcwMjY3NmU3YmM4MWRhNjU5OWMxM2YzMjBiOGU1NmMwZjggbGVnYWN5LXRydW5rCis1MDk0IDdjOTJkNDRmYTZmY2E1MTBlZTFhOTk0ZTk4NjY1ZTQ0MjYwMjEwZTUgbGVnYWN5LXRydW5rCis1MDk1IDE3NTY3MWNjMjFkOGM2NDRjZWQxN2RiN2NhNzI1NDgxYTRlY2I5YTQgbGVnYWN5LXRydW5rCis1MDk2IDZjODlkZjU3NmQ5MWFmYWRjNzM3MWNjOTNkMzk2OWZjNzMzYzcxZTkgbGVnYWN5LXRydW5rCis1MDk3IDkxMjMxN2EzN2UyYjM4NTYxN2ViYWZkZGY2OWNmM2EyYTEzMjcyZWEgbGVnYWN5LXRydW5rCis1MDk4IDc1ZTllNTZiNWY5YjFhMGRlM2UwMjRlZmI0NmQwOTNlZjJkZWViZGUgbGVnYWN5LXRydW5rCis1MDk5IDIyOTEyZjNhODg5ZjEyZmY2MDc4NjA0MzdkOGE0MDJmZDFlMjE0ZGEgbGVnYWN5LXRydW5rCis1MTAwIGY0ZWYzYjIxMjZlYmNiZGQ2NWI2Yzk2NTE0NGZiMzBmMmE0NjExYzUgbGVnYWN5LXRydW5rCis1MTAxIDZmMzk2Y2U1MjU1ZDA4ZjFhNmUzOTBkYmY4YzNkZGI0NmE0NDU2YWIgbGVnYWN5LXRydW5rCis1MTAyIDY3ZmY5ZjQ3YWIzNmZlOWI5ODAxZjc2YzlmNDAxZDAyZTc5MjlhYjkgbGVnYWN5LXRydW5rCis1MTAzIDQ0MDg3ODE5MTQ4ZTI3NzY3ODhjZThiNjZiOTUwMjllM2VkMDY1ZTggbGVnYWN5LXRydW5rCis1MTA0IDY4YzdhMGE2MWZkNTgxYzA3NmNmOGZmOGQxZWQ4ZjhlMjM3MTczZDkgbGVnYWN5LXRydW5rCis1MTA1IGYxMWJhOWNjMzQyZjI4MGNhYTg3ZmMxYzE5OGFhM2NlYjE1OWEwZTAgbGVnYWN5LXRydW5rCis1MTA2IGY1YzQwODY5ZGExMDY1OGVjMTAzMTcwYzdjMzk2MjQxODAwMzQ1MDEgbGVnYWN5LXRydW5rCis1MTA3IGY5OGEyMjMzYjMzN2I0OTUzNDU4YjdkY2RjZDU2NGE1ZDIzZTQ1ZjcgbGVnYWN5LXRydW5rCis1MTA4IDUxMzRjMDA5ZTFhNGZlNTgzZGQ5ZTBlZTdhNzE4NjhkODcwMTRiNmMgbGVnYWN5LXRydW5rCis1MTA5IGQ5ZTRjYmJhOTU4YzA2OTE4ZmUxNmZhNmFjYmZkZGQxNjhjMzRhMDEgbGVnYWN5LXRydW5rCis1MTEwIDdjNjljNGFlY2IzOGNiNDU1ZTczOWJmMTkwNmUyYjI3NzE2N2YwZjYgbGVnYWN5LXRydW5rCis1MTExIGY4NzZjZDVjNDQxN2Q3NTAwOTVkODAwOWY3YzJkYzhmMTVlMjVlYjAgbGVnYWN5LXRydW5rCis1MTEyIGRlMjk3Y2RlYTM0ZWU2NTBlMjFlMmJlZDJlMGFjYmI0Y2Y2ZmNjM2EgbGVnYWN5LXRydW5rCis1MTEzIDliN2U2ZDlhNTI4ZGE3Yzg4ZjNmODg4YTY0YjBiODU4YTA0ZjRiZGIgbGVnYWN5LXRydW5rCis1MTE0IGI3ZThiYzAwMmEyNDMwY2JjZjQ1NmY2ZTc2MTgyOGZhYTNlYjkzZTkgbGVnYWN5LXRydW5rCis1MTE1IDA2M2E5NmI0OWIzZTYyYTk0ODIxYmYzNjc0NGRlNzFiOTkxZTZlMTAgbGVnYWN5LXRydW5rCis1MTE2IDYwNmEwOTdkZmQwMDJjNGEwODZiMTUxZThiMjI3MDFiNzQwNmFjNzMgbGVnYWN5LXRydW5rCis1MTE3IDg0ZTIyNjBkYjE3OTliMzUwYmIyODk2NjgzNGY5Yjc2NGIxN2UxZmEgbGVnYWN5LXRydW5rCis1MTE4IGQ2MzUwYTMxODk5Nzg4MmM2OWZjNzZiOGM4NTk4YTY1M2Y2OTZmMWQgbGVnYWN5LXRydW5rCis1MTE5IGUzZWNjNDAxODk4OWFlMzgxMWI3MmFkMWIzY2QxZjUwZTRjYzVlNDUgbGVnYWN5LXRydW5rCis1MTIwIGY0YjNkNjhjNzEyNDQyY2M3NGI4NTU4MmU1NWIzMTM1NWFjNGNkYTMgbGVnYWN5LXRydW5rCis1MTIxIGRiM2RhY2UyNzhhYzAxODhkZWVhYzAwYTE5YzQ2NmE1YzdiMWFhODYgbGVnYWN5LXRydW5rCis1MTIyIDljZjYwNGEzNDExZTk0NWI5ZjRlNWQ2MjNmYmJiYjZiNDFlMzc0MDQgbGVnYWN5LXRydW5rCis1MTIzIDg0MWY3MmRjNTQ0MjRiM2RlZjM2NjBiNWQxZThmMjM0MjM2MDY1YTIgbGVnYWN5LXRydW5rCis1MTI0IDNhM2RmMjMxMzI3YzFkMDY3MTQ0MDgzNTYwMWM4YTRkZTEwY2YyNTUgbGVnYWN5LXRydW5rCis1MTI1IDI2NmFkMTMyODdhNGUwY2E1OThjZjIyODE1ZWIxM2RmY2ZjODY5YmUgbGVnYWN5LXRydW5rCis1MTI2IDRlYjZkZGI5ZTk2MWM5YWI1YmEyNmExMWQzZDEzYTllNDZkZGE1ODEgbGVnYWN5LXRydW5rCis1MTI3IGI0ZmQ0OGUzYTNiODliMmFkOTRmZTc5NTViZjZjYzkxYTYyNDk5YjMgbGVnYWN5LXRydW5rCis1MTI4IGRmM2UxZTUyMWZlNjVkZTNmMGQ3Y2IzMDZkZGU3MGMyNWYyZTNiYTUgbGVnYWN5LXRydW5rCis1MTI4IGU3MjI1N2U2NTU0NTRkNTY5NDY4ZGE4YjExODllMGVjMzM2ZjM1MzYgbGVnYWN5LXRydW5rCis1MTMwIDUxM2YxY2I3MGNlNmE5ZWNmNDI4YTdlOWE1MzI0M2MyOWMzZWFhZTAgbGVnYWN5LXRydW5rCis1MTMxIDJmOGU4YjYxMjlmNzNhYzdhMjYzM2ZkMjg0M2FkZDdiNTIxMDFlZDMgbGVnYWN5LXRydW5rCis1MTMyIDQ5MTgzOTM4ZDA3ZTk3YjRjM2NlMmQ2NTU0OTE1ZmJjNjdmYjhkN2MgbGVnYWN5LXRydW5rCis1MTMzIDBiN2UxNGJiNTRhZTBlZWYxMDdiOTgzMmM5ZTQ4ODkwMjU2OWYwNjAgbGVnYWN5LXRydW5rCis1MTM0IGUyZGQ3ODE5NzU5NmJmZDE4YmYzY2RiODlmNDFiZGQwZDRjNzYyZGQgbGVnYWN5LXRydW5rCis1MTM1IDM0ZWVmYTIyNjcwOWFhOGVkYWFjNmRmNGJkNGQzZjZmY2Y5NzhlNTggbGVnYWN5LXRydW5rCis1MTM2IGM5NDU3MzVhNGFkNzBmNDIwMjE4NWMwMmJkYzcwNThhMGVlNTQzMjggbGVnYWN5LXRydW5rCis1MTM3IGQyNDE5MGM2NWI1MWYwMzQxZDc5MjVlZWM5ZWRkNzNlZmZmZTI4N2YgbGVnYWN5LXRydW5rCis1MTM4IDBmYjY1NTIwZmNkMDEyYTc1MDUxZTVjMWRjYTBkOTMwZWM1YjY1YzEgbGVnYWN5LXRydW5rCis1MTM5IDRjODBjZjAyZDE1NDBjNzg5NTA0MWRlNjY4MDBlOWE3Y2ViYmQxZjMgbGVnYWN5LXRydW5rCis1MTQwIDQ5M2I4NzFmMzc3NTQ3YzZjZTNlYmM3Nzc1YjY5YzlkZGViZjYzYWUgbGVnYWN5LXRydW5rCis1MTQxIDMxODE3MmZmMmYxNGM2OTc5YzA5NjZiOWZlMzlkZjFhZTA1YzAxNmQgbGVnYWN5LXRydW5rCis1MTQyIDEwN2MxODAwOTM3ZTNmNDcxZTM5MzJlM2YyNDY0YmNjMGNkY2VjODUgbGVnYWN5LXRydW5rCis1MTQzIDBiNmM4YTdlOTMzYTY2ZWVhZmI2NWE3ZWRjYjY2ZmUyZWVjMDZmZTEgbGVnYWN5LXRydW5rCis1MTQ0IDBlOWNhZTBiNTA3MmQ2ODgyMGRkMDlmNDk3YWMyMWJlZDMyYmVjNDkgbGVnYWN5LXRydW5rCis1MTQ1IDllOWYyMmRiZWQxYWYwNGUwOTc2MTBkYTYzOWMzYzI2OTAyYWI2ZmMgbGVnYWN5LXRydW5rCis1MTQ2IGQ0NjQ0ZDM5MmE4ZmU2OGM0M2IzYzQxYjRjNDA4ZjliMzg1NGJkOTQgbGVnYWN5LXRydW5rCis1MTQ3IDJkOWIxNjUyNzI0N2RjYjNhMzU3YjBjMGUxOGQwMjZkYjVmYWJhMzQgbGVnYWN5LXRydW5rCis1MTQ4IDY5MGU0NmYwYmY1OTg1NWZjYzg5OTI2NjllZmMxMDY1YzQ1ZmU1NzIgbGVnYWN5LXRydW5rCis1MTQ5IDFhNDgxYTc1YWY0NWYxMjkyODYzM2EyMDA3ZjIzODVhZmM3NmYyMDggbGVnYWN5LXRydW5rCis1MTUwIDg5MjkyZjZhMjU4ZGNjZmU3YzI2OTRhZTY4Y2ExMmQwOWY1MjJmYjMgbGVnYWN5LXRydW5rCis1MTUxIDIxMDgyMWZkNTY1MDk0N2FkMDA4YzY0ZmJhOTBlZDBhNTZiZGVjNmQgbGVnYWN5LXRydW5rCis1MTUyIDRiNTdhZjFiYTI5NzEwNmNkN2VjNThiNDAxOGQwZGM0ZmQ4ZjE5YzkgbGVnYWN5LXRydW5rCis1MTUzIDliZGMyN2QxNTFiYWE2YjVkNGJiMGI5NjU2MTc2ZTk5MzNkOThiZGYgbGVnYWN5LXRydW5rCis1MTU0IDM0N2NmMGU0OTJkODExZDUwYzVjMjgwYzdmNjUwMTMzOWQ2YjhhNWQgbGVnYWN5LXRydW5rCis1MTU1IDczMzVjNWIzYjQzYmQyNDRiMjkxYTVhYjhiYjlmNTQxMzA3Njc5ZDQgbGVnYWN5LXRydW5rCis1MTU2IGMxZjQ4ODU4ZjE4NjBmYWMzMGU2NTU4NTVjYjA5ZTYyZTA0MzI1YTIgbGVnYWN5LXRydW5rCis1MTU3IDkyNWQxYmZjZDkyNTkzZDBhYWE0NjA5ZTYyMTM5ODIzN2Y3OTkwZWQgbGVnYWN5LXRydW5rCis1MTU4IGUxZDIzYTZiOTMwYjgwN2E0N2VkMGJmMzkxZDlhMGE0M2I1Yjg4NWYgbGVnYWN5LXRydW5rCis1MTU5IDFhZjkyMjBjNmQxOWQ5NDZmMTdjYjliOTliMjhlMDRhNGY1YmI5MGUgbGVnYWN5LXRydW5rCis1MTYwIDExNTdlMTQyNzBkNjg3NjlkNzg5NTliNzEyZjViNTEzM2JjYTUzYmIgbGVnYWN5LXRydW5rCis1MTYxIGUwMzkzNjU3ZmZhNDc3MWRkM2FlZjRkNzgwZmQ1MjE0MWU1YjE5NDMgbGVnYWN5LXRydW5rCis1MTYyIDA2MjM1ZmRjMWFhZjNiZGM3NTY2NzBlZmVmYjY5YTE0ZTBmMjAwMDkgbGVnYWN5LXRydW5rCis1MTYzIDNmZmIzMWNjOGE5YjNhMGZhYzNhZTQ4OGQzNDQxMzM2MDVjMjQ3ZmQgbGVnYWN5LXRydW5rCis1MTY0IDUzOGFiODJmOTFhNzI3NTQxNjQ4MDRjYjNlODM5ZDU0OWYwNzdhNDAgbGVnYWN5LXRydW5rCis1MTY1IDZkOTNiNGEwZjRjZTdjN2U4YzQ2NzgwYjJhOTUzODg5YTc5YzQxMGEgbGVnYWN5LXRydW5rCis1MTY2IDJmNDJlMjczODJlOWQyMzY4YTNmNWYzZDgwMGQ5MjZlMTgzMjE1NTAgbGVnYWN5LXRydW5rCis1MTY3IDEyZDhjODM4NTczNWZjYWIzZmI1OWI2ODMzZWU0MDRkYWQ3MzM3NzIgbGVnYWN5LXRydW5rCis1MTY4IDE5ODZiODY5ZTNhMTMxMjJiMDdhOWQ1NTA2NDJhMWUwNWEwYjgzYTQgbGVnYWN5LXRydW5rCis1MTY5IGYxMmZmMTMwZTBiNWY0MjU0NTlmMGU3MGI2NjE1YzBkZTQ0OTI0ZGEgbGVnYWN5LXRydW5rCis1MTcwIDc5NzNmNTM4NzI2Y2FhY2ZlNjc2NzRlOTljN2E0MGExZGZkNjc3MjMgbGVnYWN5LXRydW5rCis1MTcxIDllZDQ1ZGJmMjc2NThhMGFmODliYzVjMmI0ZjYwNGJmZWVlMjcyZTMgbGVnYWN5LXRydW5rCis1MTcyIDRlMDc2OTQ0NDg4YWFiODRlYjNiOGIwMmE3OWY4YjEzNjBiM2M4MDAgbGVnYWN5LXRydW5rCis1MTczIDEzMDZlNzYxYTYyMzgzNzQwYTU5ZjYzOWYxODc3OWRiYjhiNjgwNGIgbGVnYWN5LXRydW5rCis1MTc0IDM3M2MxNjM3ZDMwMTA0ZTdjYWZlZTFkMjFmNTYyMGVkMzQyMDRiMjcgbGVnYWN5LXRydW5rCis1MTc1IDUwMDMyMzQzOWViMzliM2Y3MDBhNDg5MzcxZDIwMWIxNTQ0YTgzMTEgbGVnYWN5LXRydW5rCis1MTc2IGI2ODllNmY5MmYxN2ExMTEwMDExMmUzM2MxMDQ5ZThkNjdkNWNiODIgbGVnYWN5LXRydW5rCis1MTc3IDlmZWIwYjBiNTBiNjBjNDBmZTc1MjUyNDMzN2M0NmJkNDVjYjI3MmMgbGVnYWN5LXRydW5rCis1MTc4IDc0NzQ3YmZmYjZhNGQyN2M4NjQ5MGEwZGE5NjI4ZWY1NDg4MmIwYWUgbGVnYWN5LXRydW5rCis1MTc5IGNkOWQ4NmVjYzE3NTI5NGM2YzE5ZDg5M2QxNGIwZTRlY2I0ZmMwMDYgbGVnYWN5LXRydW5rCis1MTgwIDc1YWZhYWM4NTU2NzA3Y2YwM2Q1N2Y5OWM1NTY3MWI0YWQ0NDZmNGYgbGVnYWN5LXRydW5rCis1MTgxIDJhMzE4NzZmNzEwMjk5MDU2ZjAyYjEzYzg3MDg1YWU2YjgwOTEzYmEgbGVnYWN5LXRydW5rCis1MTgyIDE5YjExOTVhM2FmODQ3ZTFhOTZkNjQ1MjlmMzhlM2U1ODUzMmI4NzkgbGVnYWN5LXRydW5rCis1MTgzIDZjODY0YWQ1MTlhMzY4NGFmYTNiYzcxOTdkYjVhNDQyZTJiMjEzNGEgbGVnYWN5LXRydW5rCis1MTg0IDg4OWM2ZGE3YjRjYTUxMTlkZjdkYWYzMDI0MzZmNmI0NDJiMjRkMGYgbGVnYWN5LXRydW5rCis1MTg1IDYyNjdhNWYyMjJiZmRlZDVlMzkzZTlhOGJkMWZhZGRkOTNlYjM1MjUgbGVnYWN5LXRydW5rCis1MTg2IGFiZjExNmRiNTIzZmU0ZGI5YjhmYWYwMjM2NDA5NTBiMTQ3OTI5YWIgbGVnYWN5LXRydW5rCis1MTg3IDM2NGQ0YTUyNGNlYzgyMWRiY2U3M2U2OTFjNDllYTJlY2M3YzgyYWUgbGVnYWN5LXRydW5rCis1MTg4IGE1Y2ViM2U5M2ZhMTI3MzVlZjFhMTBjZjI4NWZjMzc4ZTY1NjU4NzUgbGVnYWN5LXRydW5rCis1MTg5IGEwZmM5NGIzYmIyMTI3MDQyYTFkMGM2YzVhMzhhZDhmZmRiODE1ODAgbGVnYWN5LXRydW5rCis1MTkwIDZhOWVjYjA1YzY3OWVkOGM0YmM1NzBkN2JmYTlkZTU4NzJiZmFjNjIgbGVnYWN5LXRydW5rCis1MTkxIDgyMjIwNDFmNWE5MWQ1NDM4NDg5OGE1MmQ0N2MwODNkMjdkYWUyZGUgbGVnYWN5LXRydW5rCis1MTkyIGQwM2NjYWUxNzBlYWYyODI5Y2Y4M2JkNDllNjdiMzM1NGMxYzViMjMgbGVnYWN5LXRydW5rCis1MTkzIGU4ODBjMDE2NGFlY2UyMjZiNjRkNjY3MzJhM2M4MTQ0NzhjN2Y5NDYgbGVnYWN5LXRydW5rCis1MTk0IGMyNjdlMzMxMjAzMDhhMmFlMjE5YzU3N2NjNTZlZmNhMjA5MjNhNTcgbGVnYWN5LXRydW5rCis1MTk1IDVhZjZkYjFmNmMwY2RjNDJhZGNiNTA1MWYyZWQwOGY1NzJmNmY3M2EgbGVnYWN5LXRydW5rCis1MTk2IDEwZTEwNWU0Y2Y5YzNiOGYwNDUwYWRiNzhhNDc4MGYwZWYzODg4ZGUgbGVnYWN5LXRydW5rCis1MTk3IDlmODJhNmJiMDAxMGRiNjJjYjg4NTA4ZTllNzcyOGE1ODEwYTQ1ODIgbGVnYWN5LXRydW5rCis1MTk4IGRhYTE1MGIzYTZlNDNlMTJiM2UxNTliNGU1MGM5NWY5NWFkNGRhYzYgbGVnYWN5LXRydW5rCis1MTk5IGRjNjRkZjdmMWFkNjkwMGY1NjFkNDJmMmUzMDkxZTk5ZDg1YzIyMjAgbGVnYWN5LXRydW5rCis1MjAwIDY4NmY0YmZiNGRhNjIyODljMDdkZTJkMGExMTRiNzVjYjM4OWZlNmMgbGVnYWN5LXRydW5rCis1MjAxIDkwMjQwZTgxOWJlY2I5OTFjMjY4ZTMzYTg3MzczNTliNDJmY2VjMGEgbGVnYWN5LXRydW5rCis1MjAyIDM3YzQ4ZmRlNjFiOGVkODU2MmU2MzUwOGE1YWQ4MDI0M2JkMGJkYWEgbGVnYWN5LXRydW5rCis1MjAzIDNjZjg5NmQyNGU1MGRiYjRmNzQwMmExMzVlMDVmOGNmYjU3NDY2YmQgbGVnYWN5LXRydW5rCis1MjA0IDdkZjZmY2I0MjZmNTE0NzliOWUwNTc0ZTZlNWRkZjhiY2RlYzM0MGMgbGVnYWN5LXRydW5rCis1MjA1IDgwYjVjODIyNzJhMjVjMWVmODUxMzE0ZTFiZjkyZDI4NTk0NDZhZWEgbGVnYWN5LXRydW5rCis1MjA2IDNlMzcwYTRiMTAzYmUyMDc5YzdlMmI4YmRiNTU1MGY4YWVhNzk3MzUgbGVnYWN5LXRydW5rCis1MjA3IDk4MmE1YmQ2ZDQ2ZDA3NjcwZjIwOGI4YzNmMzVkMDgwZTdmZTJlZDEgbGVnYWN5LXRydW5rCis1MjA4IGE4Mjc4MDFlZDk2MzM4NGVhYjE2ZmRmZTBlZTNhM2MxOWMxZmJlOTggbGVnYWN5LXRydW5rCis1MjA5IGYxODc5YjFhMmMyYWU4ZGI3ZjM5NTA4Y2JkMDA5NWI5NGE4MDlkZGQgbGVnYWN5LXRydW5rCis1MjEwIDRmMWIwY2M3MzUwN2Q2NzI5NTk5NWM1OTBlNjA1NGEwMTg0YmVhZmQgbGVnYWN5LXRydW5rCis1MjExIDNkNWVjMWMyMjA1NTAyMjE1NmU4ZmVlOTMwNjM1ZGRlNjMwOGIxNDQgbGVnYWN5LXRydW5rCis1MjEyIDg1M2M0ODY4OTNiODJjZTk1Y2VjMTBiZTRmOGZlYTdkNGU0MTQ5MGEgbGVnYWN5LXRydW5rCis1MjEzIGU0MTY2OWExZGVhMDI0ZDliZGUwMjJjN2YzYjU5YjNjMjUwZTMzNzUgbGVnYWN5LXRydW5rCis1MjE0IDM5Y2QyNTY3OGI0MWFjZDQxNjQzNmUxOTBhZWZkMGE1ZTQ3NzIzYmQgbGVnYWN5LXRydW5rCis1MjE1IDk1MTZiYWQ5Nzk2MTMxMjllZDYwZjA3MWIzNjk3MDI4NjI2MTM2MTggbGVnYWN5LXRydW5rCis1MjE2IDBhZjAxZjNlMDZjYzllNGEzMzU1Zjk1NTUzMWVjMmRmOTJkZjZkYjEgbGVnYWN5LXRydW5rCis1MjE3IGFlNjQwMDNiMmE3NTY1MWM0ZGU3YWJhMGYwZWE1NjdiMDJjOTI1NDkgbGVnYWN5LXRydW5rCis1MjE4IDM1NGViZGRkMzYyYjA0Yzc2Y2UzNzUyMTg5OGZmZGUwYmZlNjgyNDMgbGVnYWN5LXRydW5rCis1MjE5IDRiNzRiM2I0MzI2OWI3MWY0YjY2MGY4NWJiZWMyZDMzNmFkZGY1ZmQgbGVnYWN5LXRydW5rCis1MjIwIGExMDg3YWE2NDFjZDk1ZjBmMDgwM2YwMTQxNmViMDJlN2MwOWM2MTkgbGVnYWN5LXRydW5rCis1MjIxIDQzODlhNjBmZWRjZTY2MWZkYWI3NzAwNzFmOGE4ZTQ0ZjljYjI2OGIgbGVnYWN5LXRydW5rCis1MjIyIDUyMTU2MzUyZmRkNmQzNWNkZjlmMzI0YThkYzg1YzlkODUzOTIwZTggbGVnYWN5LXRydW5rCis1MjIzIDZjZmQ2OTU4NTYzNmYwMmVmZWMzOWFjZTM1ZmMxNGJkOGI4MTIyZDIgbGVnYWN5LXRydW5rCis1MjI0IDY5YWJhNmQ5ZDM3ODM1MjZlMzRhY2Y3NGQwMjBkMjhlNmVmODZhZTUgbGVnYWN5LXRydW5rCis1MjI1IGFhZjkwMmNkZmRjNGEyYTJkN2JhNWIzMWVkY2NhOTkzNWUwNDQ5MGIgbGVnYWN5LXRydW5rCis1MjI2IDFiOWU5MDM1MzUyOTExOTIxNjEzM2JmMTJmYzA0YjczNTg0NzU5YzYgbGVnYWN5LXRydW5rCis1MjI3IGI0MGNhYmZkYzkxZGUyNWJjZWZlY2YyNmQ4YTc5ODJmYTQ2YjE2MjcgbGVnYWN5LXRydW5rCis1MjI4IGJlMjFjM2UwY2MwM2Y0OGViNmFhNGEyMGFkNGM1YzQxMDE2MmVhMTMgbGVnYWN5LXRydW5rCis1MjI5IGI5NTQ4OTYwZjk0NTBjOWFkMDliZDdiZDNjYWI5Y2ViOWYzOTFiMzcgbGVnYWN5LXRydW5rCis1MjMwIGFjNmM4YjEyMTllNjcxY2Q0NTVmOTc4NWE1NTQ0NjBhZTJkNmU0MWQgbGVnYWN5LXRydW5rCis1MjMxIDZkOGQ5ODFlZjZjNDE1MWMzNjY4NjVkNjFiNDVkNGM2MDQxOWU5ZWUgbGVnYWN5LXRydW5rCis1MjMyIGZlY2M5MzlmNGQ1OTU3Y2ZiN2IxZTYwYjVkNTQxYzVjOTk3ODFmMjggbGVnYWN5LXRydW5rCis1MjMzIDhlY2U5MjI3ZmRlMTA0ZDlmZWQyYWEyN2MzMDhlYjJkMjlmMDk3NjIgbGVnYWN5LXRydW5rCis1MjM0IGEwYTRhZmEzOWQ3YTAxY2Q0ZjM2NWE0YjhiZWJkMTVlOTg4Y2U2OGEgbGVnYWN5LXRydW5rCis1MjM1IDZhMTY1NmRiN2RkZWVjYjU5ZjlmZmYyY2VkNmE2MjYyYjk1NDM0MTAgbGVnYWN5LXRydW5rCis1MjM2IGRjMmFkZjc5ZTUyM2UxMDJlYzU3MmZlOGM0NzQ3OTQ1NWY2NDE0YjcgbGVnYWN5LXRydW5rCis1MjM3IDBlNWRhZmI4NWZiZDJiYjYzYjcyZDI5ZmViOTdlOWE2NTk4OWFjZTAgbGVnYWN5LXRydW5rCis1MjM4IDM1NDMyYzlhODc0ZTJjMGQxYzZmZWU5NmNlNGI1ZTdkZWYxMjYxNWYgbGVnYWN5LXRydW5rCis1MjM5IDFhM2ZmMDE0OGRlY2Q4ZmY2NDY3OTNlNGE2NTVhMTY0Mzg3NTY5MDkgbGVnYWN5LXRydW5rCis1MjQwIGI3MzVkMzM4NjY1MWEwNTdkN2IwYjhjOWRkNTZiMjMwMjQ5ZThlYmEgbGVnYWN5LXRydW5rCis1MjQxIGZkNzc3YWY2N2MyMzEwZDNjY2E5MTgzMmU0OWVlY2FmMDAyMzU1ZWYgbGVnYWN5LXRydW5rCis1MjQyIDViYzBlZGQ1YjNmOTMyYjQ3ZDQ4ZjYwMmRhZmZiMjY2N2Y4YjM2ZWYgbGVnYWN5LXRydW5rCis1MjQzIGJmMWRlZDc1OTYyZDYyMDYxNTU3NWRmMTE2NGU3OTc1YWE5Zjg1NjAgbGVnYWN5LXRydW5rCis1MjQ0IDE3ZmRlYzJmYjMwOWE5MWViMWFlZWNmMTU5NTgwMjM4YjgxNDdkYWQgbGVnYWN5LXRydW5rCis1MjQ1IGFmN2QwZmVhM2ZiMmEyYzJhZTFlMjA0ODc1ZWVkY2ZhNmRlZTM5NmUgbGVnYWN5LXRydW5rCis1MjQ2IDQxMTNmNGZiYWFlNTM3MjAyZDA5YTE2ZTI5NGRiOWQ3ZmFkM2NiOGIgbGVnYWN5LXRydW5rCis1MjQ3IDEyMDNlNTg0MjI1NWNlNjRlZjJmM2JhOWZhMjc2MTQxZTI5NDM4YjcgbGVnYWN5LXRydW5rCis1MjQ4IGE1ZDM2MWUyYjJlMjBjNmQwYmNkNTA1OTNmYzgxNGI4OGE0NjJjNGMgbGVnYWN5LXRydW5rCis1MjQ5IDllYzQ0ZTM3ZjZiMTMzYzM2YWM4NjdiZTMwNDQ1YTJhMmMzYjE1OTQgbGVnYWN5LXRydW5rCis1MjUwIDNiN2ZhNTZhM2I5YmNiZmI2MzIwMTczOWQwODc0NmNmODVkMDRlNTkgbGVnYWN5LXRydW5rCis1MjUxIDUwYjJmODJlNmYwZWE0N2FkYjk3MjEzMzE4NmUwMDhjNjMwOWM3MTUgbGVnYWN5LXRydW5rCis1MjUyIDA2ZjIyOGQ2MjM2ZTRjZjlhZGY2OGJlODI2NGY1NDg2YmJmMDdmOWEgbGVnYWN5LXRydW5rCis1MjUzIDdjM2U0ZjNlZTE1MmY4OGM0OTE2NTNlOWQ3MDI1ZjE0MjAxNThhM2MgbGVnYWN5LXRydW5rCis1MjU0IDlhYWI0ZWIyYjNmOTgzN2I4ZGQ0ODhjNjhkYmU5MDFiN2Q4Mjg5ZWQgbGVnYWN5LXRydW5rCis1MjU1IDQxNTY1NDU2YmMyMjFjY2M1OWFkYjRhYmFiODBkYTU1YTA5NzI2YTggbGVnYWN5LXRydW5rCis1MjU2IDI0ZmMwNjE2YTY5NmM4Mjk5NDlmMGZlMjk2N2RhMDVhYTljOWVhNjYgbGVnYWN5LXRydW5rCis1MjU3IGJhZjBiOWI3YzJhNWFhNjkzOGNkNmE5NThiNWE4MDIzMzg4N2VkMjMgbGVnYWN5LXRydW5rCis1MjU4IGFmM2FhYjZiMDdjNDNhOTU0ZTcyYmI1MTQ4MTNjNTQyYzA1NDQxYTIgbGVnYWN5LXRydW5rCis1MjU5IGI4OTM3ZTc0ZmRmNTUxYzAzMjEyMzJmYjM0YTMwYTY1OTkwZDRlZmUgbGVnYWN5LXRydW5rCis1MjYwIDgyM2YzYThlY2ZlNDE5MzQ3MDFiY2YzOGI0N2MxMmNmOGNjODlhNjcgbGVnYWN5LXRydW5rCis1MjYxIGVhMzhjMzYzZGU1OGI3NWI0OWUwMzZkYzAyN2YxMWVjZTVhNzZlYjUgbGVnYWN5LXRydW5rCis1MjYyIGViYzE3MTRkYzczOGJkZGMyNDQ0MzE0ODU3MjgyNTA5YTU0NGE5NGEgbGVnYWN5LXRydW5rCis1MjYzIDdmMmMwZTdlZjg0MjYyYzU5NTg2NDYzNDJmODY4ZjMzMzhjYWIwYmYgbGVnYWN5LXRydW5rCis1MjY0IDU5YzJhY2IzZTcwMjU0NjNmOTlkZmUzYWE3ZTM1ZWMzOTZiMGU1ODQgbGVnYWN5LXRydW5rCis1MjY1IDRhOTk4YjFhMzMxZjBhZTlmMGYzMGM3YjFlMzg3NWEwNTVjYTQ4N2YgbGVnYWN5LXRydW5rCis1MjY3IGFiM2RjYTk3ZmZiZWI2MzVhMTZlYzVlZDM4ZmY0NWY2MmY4ODgwOGYgbGVnYWN5LXRydW5rCis1MjY4IGU5MTFmMmZiMTc5YzJjMzJjYWY5MjM2YmJlMjJjZGMyM2FkNWExYTAgbGVnYWN5LXRydW5rCis1MjY5IDc1MGEyZGQ4YTQzN2JmYzhiZDMxOTljOGQ3MDAzYzJiNDU0OWNkMTEgbGVnYWN5LXRydW5rCis1MjcwIGEyMzYzYjZlOWM4NmU5YWJjNTM2OTNiNmI1OTg3MDc5ZGVhMmQ1NjIgbGVnYWN5LXRydW5rCis1MjcxIDYwYzU3Nzc3MzY2Zjc1NWE5NzE0OGZiNTBjM2FiYjBkOWQ4ZGI4ZTkgbGVnYWN5LXRydW5rCis1MjcyIGI3YTA2ZGI4NWNhZmNlNDEzZDBjNTVkY2Q5MjVhZjFkNmNmMjc4MWIgbGVnYWN5LXRydW5rCis1MjczIGQ3NmE3MTRkMWNlYWFhZGUwMDc4MDgxNGMzYzcyYmI5MzBkNTQ2YTcgbGVnYWN5LXRydW5rCis1Mjc0IDVjYTVkNzdhZmQyOGJhYzczN2ViMGFhYjk3ODVlNDMxZWRkYmNiNGQgbGVnYWN5LXRydW5rCis1Mjc1IDkzMThhYzUxNjkxZTZkODYzODRmZmQ0NDMwZDIxNjRhMjYxMGQzNDQgbGVnYWN5LXRydW5rCis1Mjc2IDZmZmNiZTBmZTlkM2NkMDBmMmZlMzI5ODM2ODc2MzkxMTljMmY5YjggbGVnYWN5LXRydW5rCis1Mjc3IGZjMjE5MGVjMWJlYWQyODdiYzA2ZTE4MTEzMjQ2YjA2ZjlkNjlmMTYgbGVnYWN5LXRydW5rCis1Mjc4IDA3ZmM0ZmVmYjY4Mzc1OTUxZWU3NjBjOGE1MTUzYzIzNDY3MTRkZWMgbGVnYWN5LXRydW5rCis1Mjc5IGZiM2RhZjliMjQ1NmRjMWEzZDk5ZjU2Zjc4YzVlNjI3MGVlYWYxZTggbGVnYWN5LXRydW5rCis1MjgwIDk5OWI1YmRjMThjZTk5NmIwMmEwNzZhYTdjMGJmMGE5NTNhYjE0NTEgbGVnYWN5LXRydW5rCis1MjgxIGM2ZmU4MGNlN2MyMDkzYTFhY2E1NWRmMGFhMmNjZTA1ZGQ5Mzk5YjIgbGVnYWN5LXRydW5rCis1MjgyIDFlODJkZDZkZmUyZWY0MTZmNGI4YTI4YWY4NGZmOTg0M2JjYmEwMmYgbGVnYWN5LXRydW5rCis1MjgzIGM0YzM5ZDE3MWVjM2IwNjNkNmRiZGEyNjhjMmIxZjU1Zjk1N2UyODIgbGVnYWN5LXRydW5rCis1Mjg0IDhiOGZiMjRkNDgzNzk0ZjJlOTMwMzEzOTJlOTMyMDgzMTFkOTMzN2QgbGVnYWN5LXRydW5rCis1Mjg1IGM5YjcyOTdhMDc1ODcyMGI3Y2E0MzI1ZTBlNDIxN2FiMTI5YzA3OTkgbGVnYWN5LXRydW5rCis1Mjg2IDgyMjVjNjU4MWIzZDM2ZTI1ZWExMDZkMjQ1NDlmOThiMjk5NDRiODYgbGVnYWN5LXRydW5rCis1Mjg3IDY4ZDdlYWU2Y2JkNmM1Njc1MTA0OTg3OTYxOGJhYmE1MjQ5NTJiM2UgbGVnYWN5LXRydW5rCis1Mjg4IDQzY2NmY2Q5OGU4MDZlZGFkM2ZhYWE2YjRmOTVjNGE3YmIzMjdiOTMgbGVnYWN5LXRydW5rCis1Mjg5IDQwN2M3ODQ2Yjg4NmI4NThiZjg4MDM4NGEyZjJiMzg2ZWE2ZDIyYTQgbGVnYWN5LXRydW5rCis1MjkwIDI4MmIwYjRjMWVlYTU5MGI5MGE1ZmYxMDlmMzZjMWQ2MWVjZTUzNzUgbGVnYWN5LXRydW5rCis1MjkxIDY1YzcxMDU4NjhmODg5OTY0ZThlNDdlMzgxMmU2NzJiMzIxZTI5M2UgbGVnYWN5LXRydW5rCis1MjkyIGJlYmIwZWE3ZGUyMDBjZWMzYmZhMmRmZWEzYzU4MzYwYmY4NTdmYTggbGVnYWN5LXRydW5rCis1MjkzIGNkOWU2MTM1MjQ0YTU3MDkwYTY3MjlmMWI1MjM4ODM2NDVkMDk1MWUgbGVnYWN5LXRydW5rCis1Mjk0IGZmMWZhYTRjYzFkZmJjODliN2FmZjg5MzkwZWEzNjRiYWYwMjA3NmEgbGVnYWN5LXRydW5rCis1Mjk1IDU5YTk2ODljMTFhOGIwMTQ1MThjYzQzMGFjMjVlNmE3ZjIxYjE1N2UgbGVnYWN5LXRydW5rCis1Mjk2IDk0M2UxYzQ4MDRkODAwNjM1YWM5NzY1M2UxZmJjM2JhOTA1MjAzMGUgbGVnYWN5LXRydW5rCis1Mjk3IGJkNzljZDc2OGZmODgwZTcxZGU4NjE2MDc5ZjMyMGM5YTZmODQ1MzQgbGVnYWN5LXRydW5rCis1Mjk4IGVlZGQ2YzFmM2FlN2U0Y2JkMzZjOTZmOGQxOTlhMTBiMmM1OWViZjYgbGVnYWN5LXRydW5rCis1Mjk5IDFmZDhmMzE2Y2JlOTBmODk0MDBjODg1M2I5MTg3MjMyYzAwZjc3MGYgbGVnYWN5LXRydW5rCis1MzAwIDE2NDM5OTdmMTcxOGFhNjRmNTMyMGU0Y2M3N2VmMjUyMzlmOTYxMjMgbGVnYWN5LXRydW5rCis1MzAxIDRkZWEzZjU1NDVjZjNkOTM1MmZlNDE5OTA5ZDczNDQwNWM2ZmVkM2IgbGVnYWN5LXRydW5rCis1MzAyIDdjN2IzNzA0YTY4ZmEyMTEwYzA3MTNhMjg1MzVjMTE3ZWJlOGM5YjggbGVnYWN5LXRydW5rCis1MzAzIGQ5MmVmOTRhZmVmYmVjZWU2NmI4MTExMzkxODQ4ZWIyNjBmMTcwNjUgbGVnYWN5LXRydW5rCis1MzA0IGI5ODhhNGFjYTZmOTYwYTI4YjI5NWNjOGJhMTllNTYyZDg5MDkwNTAgbGVnYWN5LXRydW5rCis1MzA1IDliMWEzMjY3MjdkZmQ3NzBhYWVhMDdkMDRiOWY0YzFlNmY4ZjM4ZWIgbGVnYWN5LXRydW5rCis1MzA2IDJjNzNjOGFiOGI4MmFlODJkNDVmODFlODMwNDM4YTU4MGI4NmVjODEgbGVnYWN5LXRydW5rCis1MzA3IGQ1Mzk4YWNhZmEyY2NjOTNlZWIxNTYzYTVkNGEwYWUxZThiMTMyODEgbGVnYWN5LXRydW5rCis1MzA4IDY0OTI4ZjZhOGU4MGUwNmNlMjQwMTliN2RkN2E2MWJlODA0MGFiZWYgbGVnYWN5LXRydW5rCis1MzA5IDQyMDg3NGY3ZDhiZDFmZjA0ODliNDZhMmUxOTRmZWEzODBhZjYyMjEgbGVnYWN5LXRydW5rCis1MzEwIDhkOTJhM2JiOWMxZmZhZGNiN2MyMWExZTVhM2RlZTI0OWM5OGI3N2MgbGVnYWN5LXRydW5rCis1MzExIDAyNjFiZjViMzgxOWIwM2Q4M2YyNTQ1NjI5NDcyNDQ2MzQ2MDQwMjYgbGVnYWN5LXRydW5rCis1MzEyIDA1MWJhY2FiNTlhZmUyNWUzMDY5ODNmZTQwYjYxZGMxNTJmOGZiYTUgbGVnYWN5LXRydW5rCis1MzEzIGVhZTRiMmJhNzIyZWI0Yzg0YzNkZWU5ZTMxNGQxNTg5YWRhNTgzYTEgbGVnYWN5LXRydW5rCis1MzE0IDU2MGFjYzI1Zjg5NjYwMzMyYTJkYjA2NjkzMWE3ZjA0ZWEwODY5YmYgbGVnYWN5LXRydW5rCis1MzE1IDRmNmQ1ZmUxOTgxMjJmM2Q2MmRkNjZhYzk2YTc5NmUxNmY0ZDIzMWQgbGVnYWN5LXRydW5rCis1MzE2IDk3Y2ZjNDZlMzMwMmMxNjZkNTdiZDM1YTliOTNjY2FiMmQ0MTllY2QgbGVnYWN5LXRydW5rCis1MzE3IGUzNzk1ZGI0YWRmODk4ZmMyM2U4NWUyYTVmMmNhNmYxNDRmYmEwOGMgbGVnYWN5LXRydW5rCis1MzE4IGJlZWVmZmYxYzQ0MjY1MzM2NDIxZjBkYWZjN2Q0Yjk4ZmU4YTczYjQgbGVnYWN5LXRydW5rCis1MzE5IDFlZWViYTA5YTMwNjQ5NzFhYTZkM2UxY2NiNTRiOTMzODgyZGZlYzMgbGVnYWN5LXRydW5rCis1MzIwIGQ0Mjk0MWQzYTk1ZjQ1ZjY2MmI0NzdiNzYzYzU4M2FiOWRjMmU3MzIgbGVnYWN5LXRydW5rCis1MzIxIGRkOGEzMGU1Zjc0NDM0YzI4OWU2NTExY2E2ODMxZjA0NTgyMjYwZDUgbGVnYWN5LXRydW5rCis1MzIyIGU2YmVjMTQ5YThkNzIzOTdlZjVlM2I5ZGViNTFjOTBjNGMwZWYyMDMgbGVnYWN5LXRydW5rCis1MzIzIGE3YWY5NzBhOTRhNDI3MmJjYzFmNDgwZDU0NDRjOGYxYzE0ZWI4MjUgbGVnYWN5LXRydW5rCis1MzI0IGVlYmJkYmVlNTRmOTAyMDdkNmYzOWYyZDRmNzMzNGRjODMxYTI1NzAgbGVnYWN5LXRydW5rCis1MzI1IGViMWVkNGQ4NDYyOTBkNTI5Y2ExODdhY2U5YzhjNGFiZDkxYjNjNmQgbGVnYWN5LXRydW5rCis1MzI2IGJhMmIzMDk3MmZmZWE3MzVlNDc5NWI5Y2Q2Y2EyNjJkNGU3NWQ5OGYgbGVnYWN5LXRydW5rCis1MzI3IDZhZTliMzc3ZTUyMmE0ZWQwMjBhMThiNTY4ODllNTMxMmYwYjEzMGUgbGVnYWN5LXRydW5rCis1MzI4IGRjNmIzZTc2Y2NlNjY0Mjc3N2UwNTgxZDQ5NjM5Y2MxZDAwYWIwZTMgbGVnYWN5LXRydW5rCis1MzI5IGRmOGNlZGE4NDU0NWU3NTAzYzA4Y2ZhZWRhNWYzZWFjNzU1ZTU3MGEgbGVnYWN5LXRydW5rCis1MzMwIDEwZTAwN2FlZjFjZmYxMzBhN2ZhZTRjMDYxZmM2NWZmYTg0NzM5ZWEgbGVnYWN5LXRydW5rCis1MzMxIDVmOTUxOTEyZTk5NTkwY2I0ZjFmMDljZTIyZWY0ZWY1ODUxZGRmMTQgbGVnYWN5LXRydW5rCis1MzMyIGQ0MDI5MGU0MjQ1NTU2ZTk1NzQzYTA2ZDRhNTQxYTc5Y2VlYjA3ODYgbGVnYWN5LXRydW5rCis1MzMzIDE0MTExZDY2NTc3ZGQ1NDY0YWY3ZTg5OTIzMTQ2NDYzOTBkYTFiNzIgbGVnYWN5LXRydW5rCis1MzM0IGExNjllNjg3MzRmZjEwZWIxNGY3NjRlOWQ2ZDdkZGU3N2JiOGRmNDEgbGVnYWN5LXRydW5rCis1MzM1IGY2NTdkNjc4MTJhZmFlOGQwMjU4ZGE0MTYwN2RkM2ZjZmY1OWM0YzggbGVnYWN5LXRydW5rCis1MzM2IGI5YTYyNTAxZTc2ZGM4OWU5OWViZmIyZDY4NjAyMWM0MTUyNzExYTggbGVnYWN5LXRydW5rCis1MzM3IDUyMGUxODU1YTI0ZDkwYjIxZDVjZGMyYzY2MDgzOWE5YWZmYjMxNmUgbGVnYWN5LXRydW5rCis1MzM4IDA1MzQwMjVjZWZlNTU2ZmFjN2VjMzRkNDc5MDM5ZWNiYmJmNTJjNzYgbGVnYWN5LXRydW5rCis1MzM5IGQzYjA3YmEzZTEyZGYzYjgyNzYxNDUxYjMwYzM4N2E2Yzk2ZGJkNDAgbGVnYWN5LXRydW5rCis1MzQwIDMxNTc2MGJhMDA0MWQwNGNiYmI3NWUzMjFkMjg2ZDRhMzdmZmU5MjUgbGVnYWN5LXRydW5rCis1MzQxIDkyN2Y0ODM5ZmJmYTE0OGM1NzU3ODAwMzk2OWM3M2RiYzg3M2JiOTIgbGVnYWN5LXRydW5rCis1MzQyIDcxNTg0ZmU3NzQ5YzM1ZmQ4ZWFmNTc3ZWU1NmFiY2IzNTc1YzFhZTcgbGVnYWN5LXRydW5rCis1MzQzIDg1MTQwYjM1NDg5MDFmODc3OTM1OThkOWYyMDk0YmRiZGZiYWVkN2EgbGVnYWN5LXRydW5rCis1MzQ0IGJlZWVhOTc1Nzg3OTg5Nzg5OWJmMjQ3OGRiMWUyZDRhYjE4MjAyNmEgbGVnYWN5LXRydW5rCis1MzQ1IDVhNTIxOWM4YzJlNjc0ZmM0MGZiZmNiYzA3MWIwNzZlYzFiYTMyNDkgbGVnYWN5LXRydW5rCis1MzQ2IDM2MzdkYTRjOThjYjMxMDE0N2YwNThlYWUzNjBkZTk4ODMyZmQzMDkgbGVnYWN5LXRydW5rCis1MzQ3IDZmMWRkZjExMzk4MmFkYTE4YTZiMzhiOWU3ZmZlNzYyMTY4NGYzYjAgbGVnYWN5LXRydW5rCis1MzQ4IGEwZTgyNDZkNTIzNzhkNTE4OTFlNjBhMDY5ZmNlYmM2YWEyNzE5ZGYgbGVnYWN5LXRydW5rCis1MzQ5IGY4OGJjY2I1NDhlZjRjMTU1NGE0Yjg0MTE3MDEyN2EwNjhlNjE2N2IgbGVnYWN5LXRydW5rCis1MzUwIDUxYzljZmZmMzFmM2UxN2VhMzQ3MjFiMDAwYmY2YWM4MzE1N2RhMmMgbGVnYWN5LXRydW5rCis1MzUxIGUwMDZlZDg4YjRhYTQ2N2RlZDdiYWEwNjAxOWQ1OTgyZDMyZDgyZjEgbGVnYWN5LXRydW5rCis1MzUyIDM2M2FmN2UzZWQyZDIzY2I3OWI1OTcyYmU3N2JhMmZjZDU4MmZkNDEgbGVnYWN5LXRydW5rCis1MzUzIDIxZTEwNTQ2MGE0OTk5ZThiZjE3YWIxMjFmNmYwZWZmYjc0NWU1NDAgbGVnYWN5LXRydW5rCis1MzU0IGVjMGI0Mjg4OTI0M2E3ZjllNmJjNzU2ODIwMjNiYzM4NzkxZWMxYzcgbGVnYWN5LXRydW5rCis1MzU1IDZhYmQxNDQ4NTg4NGY2MWI4ZDExOGI2ZjMxNDA1ZjNkMWYxMTY4ODIgbGVnYWN5LXRydW5rCis1MzU2IGU1MTNmMGQ2NTM2OGMxZTU4MWFkNjE2YWZkNGU5MGM5NTMwMzJiZjIgbGVnYWN5LXRydW5rCis1MzU3IDA0ZTE2OTBmYjRkMTE3NDk2MmIzN2E2MWRjODMzNDhmYTQzZjNkZWQgbGVnYWN5LXRydW5rCis1MzU4IDk2NGQ3NmY0OWE1ZWNhOTVlOGVkMjM1NTk3ZTc3ZTRlYmFkMzkxOTMgbGVnYWN5LXRydW5rCis1MzU5IDMzYjE1NGI2YzYxYmI5ZmU5ZTQ4YjMwNTc1NDE1MWQ2ODJjMDgxZTQgbGVnYWN5LXRydW5rCis1MzYwIDQ1MGFkNTQ5NjQwNzcwMWRlZmM4MDg1MTVkZWJhYjAzMTBiY2MyNDkgbGVnYWN5LXRydW5rCis1MzYxIDQwOTU3ODJjOTQwZWFjNDBlOGNhNTgxNDBiMDZkNDk5OWNjYWFiMDMgbGVnYWN5LXRydW5rCis1MzYyIDgxYjQxMzI0ZDI2ZWI4ZTQ2YzE2NDkzZDEwNzFhNDQzZmIwNzA3ZDAgbGVnYWN5LXRydW5rCis1MzYzIGYwZDlmODAwYTRhYWM3YWRhMWViNGJlMWY3YTk1YmQwOGQ0ODEwYjcgbGVnYWN5LXRydW5rCis1MzY0IDRkNjlmZGVlOWY1ZDQyOWE4NDBhMWMxNjEyNzIwMzBhMjE5Njk3ZTIgbGVnYWN5LXRydW5rCis1MzY1IDU2ZTYyOGE3N2M4ZDU4YTMwMDkzM2RmNGJjNGQ0ZjNjMzc0NDc5NTYgbGVnYWN5LXRydW5rCis1MzY2IDY1ZjA2ZmMzOTk2MDBiMDVkYTRmMWJmYTE5NmQ5NjVjY2NiMTQ4YmYgbGVnYWN5LXRydW5rCis1MzY3IDBhY2JkODViY2RiYTM2NTM4ODFhNGIwMDlhYTY0NmVhNWIwZDQzYWEgbGVnYWN5LXRydW5rCis1MzY4IDU3ZWMyNGUwZjM1YTgwZjAyNjVmZTk3ODM0ZTJlNmMwZWNiZjAzN2EgbGVnYWN5LXRydW5rCis1MzY5IDEzNTgxYjQxNzgzN2I4NDViY2I5MDkwNjA5ZGI5YTczM2E5YTZkZjggbGVnYWN5LXRydW5rCis1MzcwIDczOGM3NDYxNWFjNDg5OGFjZGNmMDNkZjdlYmNmOTJiMGIzMDFhYTYgbGVnYWN5LXRydW5rCis1MzcxIDAyNGZkZDljY2RmMjQwYmQ1NGZlYmVhZTEyZjQ1NDUxMmNlMDc3NTAgbGVnYWN5LXRydW5rCis1MzcyIDBhZmQ0Mjk2MGExZmQzNjBiMGY5NjgxYTEzNmQ2NmU4ODY5YWIzYzEgbGVnYWN5LXRydW5rCis1MzczIDIxNDM1YTBiOWIxMTZhNDk4M2Y4ZjM1ZWUzYmE2YTBmM2IyYmFlNzYgbGVnYWN5LXRydW5rCis1Mzc0IDg5NTdiY2ViZjEyYzRmYjI5NmFmZTI0MzVlMTAyZWVhZjkwZmFhNDMgbGVnYWN5LXRydW5rCis1Mzc1IDYxOWYzMTY1OGIzYmE3YjFhYTBmMzAxYzQ5YTM1ODdiY2Q4YzY0MjkgbGVnYWN5LXRydW5rCis1Mzc2IGY5YjEwNjlhM2UyNjVkOTBkZWZiYzgwMzc2M2RmODFlYjg3ZWE0MDAgbGVnYWN5LXRydW5rCis1Mzc3IDVhMjYxMmZiNmMwZTMxYjA3ZTYyM2I1ZDQ2YjVhMDNkMjI3ZDBhZjggbGVnYWN5LXRydW5rCis1Mzc4IDQyOWQ3ZTFiMWYyYjhjMzY4MmNiNDhmZGJiMWQ3ZTBlMDBiZjMyMmMgbGVnYWN5LXRydW5rCis1Mzc5IGRmN2IxNWMxZThiNzk2ZmY0YmMyNzFjZTlkMzU1MmRhMzE1NzI4ODggbGVnYWN5LXRydW5rCis1MzgwIDUxZGQwNjVhOTdhNjE0ZWMyMGIwODE5YTg2MDNmZTQ0MDMxYjNkM2YgbGVnYWN5LXRydW5rCis1MzgxIGUxNmUxOGI5NjI2YzhmMmVlZTFhYTZiNzhmNzhjMDk4MmQ4ZWU3ZTcgbGVnYWN5LXRydW5rCis1MzgyIDQ1MDlkZmUxOWI2ODYwZGYxYTUyODBkNDg5ZjRhNDE2NjNkYWQxNzcgbGVnYWN5LXRydW5rCis1MzgzIDc2NGIwZmM4NjdhNDc1YzdiNzQ4ODE3MmUwMWE4MzNlODAxZWUxYjYgbGVnYWN5LXRydW5rCis1Mzg0IDlmYWQwMjlmODM4ZmQxYjkyZjMzNmU5YWI0MzZjNmIwYjk1MDJmY2UgbGVnYWN5LXRydW5rCis1Mzg1IGNmYTliM2E4NDg3MmVhZjlkOWIyNjcxYzAxNDRlMmNmZDEyZjY3YTQgbGVnYWN5LXRydW5rCis1Mzg2IDgxMWQ5YTk4ZTE4YWI0MTYyN2UzOGMxZTkzYmM1ZTMyZjUxMjFhMjkgbGVnYWN5LXRydW5rCis1Mzg3IDE3N2Y1NzU3MDhiYjA5MGIxOGQxOTYxNDUxMTY0YzQ1YzA5ZDYzYzMgbGVnYWN5LXRydW5rCis1Mzg4IDBjNTBlYzhlODM1OGU4ZDRhMDc2OWYyMmI3NGE0ZTU3MGQ4NTdjNjEgbGVnYWN5LXRydW5rCis1Mzg5IDRmMDgyYmU1OTAyYWUxNTM4NmUxNjc4NTQ4YjM5ZTEzN2RmMWU0ZjkgbGVnYWN5LXRydW5rCis1MzkwIDE3NjM1NjA0YmRjZTE1YTRjYjJjYzYxNTlkMDY2MWZkMzhmYjYwMGIgbGVnYWN5LXRydW5rCis1MzkxIDQ0MTQ1ZWViNjEwMGM5YzI1ZWFlMTY4NzkzOTIzYTY0MTYyODAzZTYgbGVnYWN5LXRydW5rCis1MzkyIDVlYjhiZGUzMDBiN2VkZTE0M2JhMjk2NGYzYWFhNjhmYWUwMTM5YjYgbGVnYWN5LXRydW5rCis1MzkzIDRhNTM0ODM5MzljMWViOTkyOTE4OTZiOTdhMjhjM2QxZTgzMjIzNjAgbGVnYWN5LXRydW5rCis1Mzk0IDBhZDlkMTIzZmY1NWRmMzQ5NTI0YmMyNDIzMmM1YTk2NzUyOWIyMWQgbGVnYWN5LXRydW5rCis1Mzk1IDc5MmUzOWRmZTIxNjE2YTY0MmM1NDE0ZDU5YjJiYzVmNGM5YzE0MWUgbGVnYWN5LXRydW5rCis1Mzk2IDdkMWVjZWMyNWMwNmVkZmE0OTg3OTcxMjE5NTI3ZDk5NzVmOGM2NGIgbGVnYWN5LXRydW5rCis1Mzk3IDczOTI3OTAzMjhiYmYzZmQ3ZmIzMDA2MmMzN2U3MjdiZWVlNDUxMzggbGVnYWN5LXRydW5rCis1Mzk4IGRjZTkxNTViMDQwMWVkODdmYTQ0OTg1YzdhMDMzNzI5YTJkMDIzYzQgbGVnYWN5LXRydW5rCis1Mzk5IGVmYmRjNTBlN2Y1NGM1M2I3Mjc0ZWQzM2UzNWJhNGVhNWY5NTFkYTYgbGVnYWN5LXRydW5rCis1NDAwIDdlMTI2NTMxMmRkNDI3NTNjODZlZTA2M2FlNGE2YmE3M2Y2NTc2MDYgbGVnYWN5LXRydW5rCis1NDAxIGNiNWNjYmJhMTg1NjhlYjM4ODIzMDRlMmExM2U4OTE3MmI2OTIyZjEgbGVnYWN5LXRydW5rCis1NDAyIDhhYWI4M2NjNjBhMDQxYzA3NjY3YzYzMzZkMDhiYjhjMGMzZjM1ZjMgbGVnYWN5LXRydW5rCis1NDAzIDA5NzBlYmQzMTUzNjc0NGUzODlmMzcxMmI0ODI3MmQ4YWM1ZDA5MDQgbGVnYWN5LXRydW5rCis1NDA0IDFkODYyNmJjOTljNzEwMjkxYjUwMDU1MjQ3MzUzNDJiNzU5YmI4MGYgbGVnYWN5LXRydW5rCis1NDA1IGYwMTdmNWNkYjRiZGIyODU0OWU4OTI0ZjYyNDg0NzM3MTZlMzQ2NDggbGVnYWN5LXRydW5rCis1NDA2IDRkZmRmMjM0Y2RhOGY1MDMzMjM5YTZjMmRlYzhkNGJiNGU3NGFlMzcgbGVnYWN5LXRydW5rCis1NDA3IDcwODJjMWExZjlhYjk4NmZjMTI0YzhmZDY2YWMxY2M2NTBlMzdmOWUgbGVnYWN5LXRydW5rCis1NDA4IDk3ZjdjZmFiZTA3ZTdhOTQwZGNhNWY5MWNkODJiZDk2NzA3ZTAyNmYgbGVnYWN5LXRydW5rCis1NDA5IDM3MTUyMDYzOTdmZTkwNjBiZDQ4MjcyZDJlYjQzZmRhZDZlZjBiZTIgbGVnYWN5LXRydW5rCis1NDEwIDhlZGJlYWEyYmJmN2E3MDJlZWIzODQ3ZWMwZTIwOWU4YmVmMmVjNjMgbGVnYWN5LXRydW5rCis1NDExIGMwOTk3YjQ2MjM0NGI0MDY2MjkwZTEwODllMjEwYzFlM2Q3YWNmNGMgbGVnYWN5LXRydW5rCis1NDEyIGYxN2I3ZDBhNzQ4MjQ0ZTk3NGY3YzEwNjhjZTBhMjMxNjA2NDdhMzcgbGVnYWN5LXRydW5rCis1NDEzIDEwYzEwMzBiNzBhZGU4ZjAxM2Y1MTM5MDlhMDEyYzEwNTA1M2RkYjkgbGVnYWN5LXRydW5rCis1NDE0IGE5ODBkMDc2MDUyZGFiZGMxOTcyZTE4NjhlNmMwODViYTMzMGNlNWIgbGVnYWN5LXRydW5rCis1NDE1IDMwMjllODFlZGJjNzc1Yjk2NzExMDI0NTk3MmVhN2M5ZjFhZjg5OWIgbGVnYWN5LXRydW5rCis1NDE2IGJjMDgwMzA4NGU2MGE5NWJkN2VhMzdhMDEwNThlZjdlMGZiNzEzODcgbGVnYWN5LXRydW5rCis1NDE3IGExYTliNzM2NGJjMzQ4NjZjZmJiOTQ2NzlmY2Y3MmJmMjY0NDNkMmMgbGVnYWN5LXRydW5rCis1NDE4IDExZDg5OTE0YzdiOWIxZjNmNWY5Y2IzMGU1Mjk2OWU3YWNmZjQ5MDcgbGVnYWN5LXRydW5rCis1NDE5IDIxZGY0MjFmMDNmZTBkOTY4ZTUyMDdmNTg4ZTZjMDg0N2MwYmU2NDIgbGVnYWN5LXRydW5rCis1NDIwIDQ1YWQxYTkzOTg2YTBlYmQyYzk5MDY0MzQ5YjMyYzRlNWNhYWMwNjMgbGVnYWN5LXRydW5rCis1NDIxIGM1Y2IzYTUzOTMzYzM1MWEzYzQzZjEwMjMxNDNlNTMxNWQxNjExMzYgbGVnYWN5LXRydW5rCis1NDIyIDUyN2QxYjI5MjUyNTA2MjhlYmNkYWI1OGRhOTliMWJmNDNkODNlNWQgbGVnYWN5LXRydW5rCis1NDIzIDRkN2ZkOWZmNzk4ZDU1MTk5NWRmZDQyYWU0ZjY3NTgwMzhjM2MzYjUgbGVnYWN5LXRydW5rCis1NDI0IGNjOTIyMmI5NDdlZTBhMTQ3NWU0ZmFhNGQ2MzZmZjFjMWU2Y2YxMDUgbGVnYWN5LXRydW5rCis1NDI1IDRmOWQ0ZTczMDU3Yzc2MzIzOTBkNmRlODE5ODUyYmJmOTUwY2NhYmYgbGVnYWN5LXRydW5rCis1NDI2IGViNmViNjFiNjA2ZmZkMzI1Njk5NmVjYWM2ZGYxMmQyYzc3OWUxOTAgbGVnYWN5LXRydW5rCis1NDI3IGYzZjdjMDFiYzk2NmNkMjc4MWZmMjY2MmZjNDc2NjA2YjZiZDJlMjEgbGVnYWN5LXRydW5rCis1NDI4IDFjOTE5ZDAyYTY0NTk3NTQ4NGJjNzgyY2FjMzYxZGVmZDI1YTFhNzAgbGVnYWN5LXRydW5rCis1NDI5IGY3MmFiZDYyZDUwODNmNTdkNWZhYTA2NjJhZDg4NDcwZDA5OTA2MjIgbGVnYWN5LXRydW5rCis1NDMwIDAyMzUyNzM0MjU5OTZhMzYyZDU5YTBiYWVlM2NhYjRhNGZmNTY5OTIgbGVnYWN5LXRydW5rCis1NDMxIDEyMmQxNDlmYTgwMTY0NjA3NTY4NDcyMDU0NjA5MmUyZDdlYzNlNTIgbGVnYWN5LXRydW5rCis1NDMyIGQwMDcyZDFkZjgyYzJiN2Y5ZGUwMTllZmVjMDk0YjI4MWVkOTNlMzQgbGVnYWN5LXRydW5rCis1NDMzIGY5ZmJmZDkwMzE1MzAyZGUzZjkxY2JlNjdiZTQ0YzdjNDczZjFhNDUgbGVnYWN5LXRydW5rCis1NDM0IDc0OTUzYTQxNjA3YzFhNjNlMGE1OTMxOTU4M2MwNWEzNzBjNjg5ODAgbGVnYWN5LXRydW5rCis1NDM1IDUyMTMwNjY3OWUzNDllZmMyZmJlMTBiZmJiMjA2MGQwMWEzZGE4NGYgbGVnYWN5LXRydW5rCis1NDM2IGMwMGZhZTM4MGRjNzhkMmE5ZjYwZjUzY2Y1ZTc2NzEzZTEwMDFiMzYgbGVnYWN5LXRydW5rCis1NDM3IGNmYzY2YjhjYTIwMjcwMDFmZmVjYjQzODdiZWQyODEwNzcwY2NlZTYgbGVnYWN5LXRydW5rCis1NDM4IGQyM2Q3M2I0ZTU4YTlmZmIwYzcwM2EyZDJmNDM4OTc2ZTI3MTUyODYgbGVnYWN5LXRydW5rCis1NDM5IDk5OTQ1ZmRhNzE5ZGIyMjIxYjQ2MTM0MDhjMTAyYjlmOWQ5ZWI0NmYgbGVnYWN5LXRydW5rCis1NDQwIDk4NjRmZTA1OWUwZGM0YzUwNWE4YzEyMDI2ZDdkYWUxODBkMzkzZmIgbGVnYWN5LXRydW5rCis1NDQxIGQxYzQ1OGM4N2Y0YTZiMGVkZmFjNmI0NmZiNDYxYjYwNTRmMzc0N2EgbGVnYWN5LXRydW5rCis1NDQyIDgyMzU2YmRkZjcxMmNlYmJlNmUzMTdmNWM3MzFlZjM4MzEyMGQwNzIgbGVnYWN5LXRydW5rCis1NDQzIDRkZTc3OTIzMmFhNGMwYTQ5ZDYxMjhiNjdmM2ZhOGZiZmNjMDAwNDMgbGVnYWN5LXRydW5rCis1NDQ0IDQ0MTg2NmJlMmVjOTkxNmEyMGFkNzg3OTE5YzRhM2RkMGFmOGM0OTQgbGVnYWN5LXRydW5rCis1NDQ1IDdhNjdkYmNiNmQ4M2NmMmIwYWJmMTIzZDhkZjQ4YWE5ZmJiNTc5OTEgbGVnYWN5LXRydW5rCis1NDQ2IDdlZWE5YjQyNjgwMjRiNTBkOTlkNDMyYmI0ZjFiYjQ5ZjUxYmI2MDUgbGVnYWN5LXRydW5rCis1NDQ3IGI2Y2ZhMDYzYjg5YmIwYmIxM2U3YWYyOGY5Y2QyMTNhZmZmMjdiNWQgbGVnYWN5LXRydW5rCis1NDQ4IDU2YWQyNDdjYmZjYmVkMDNjM2MzM2Y3YTQyODkwMmYxNzNiMGQ0MjIgbGVnYWN5LXRydW5rCis1NDQ5IDhkMjkwNzg1NmIzNzg0NzAxMzljMWZkNjUyYzNkM2FhZDI5ZTFiZDEgbGVnYWN5LXRydW5rCis1NDUwIDdiMzkxMTk2MDU2NDE1ZjUyNmQ0ZTFhMTNlYmY3YzRhZTk3N2I0ZjAgbGVnYWN5LXRydW5rCis1NDUxIDRjMWQ4MDk1Mzk1MDliOGU2YmU3MjRjZDAzMDliNmJlNGExYzA4YmEgbGVnYWN5LXRydW5rCis1NDUyIDBkNzEwMGZmYjYxYTdlNzM4YWZiMTBmOTE5YzVjYzU1MTQ0OGNmM2QgbGVnYWN5LXRydW5rCis1NDUzIDdkMjY4MzQyZGMzYTNhYzlhNDdhMDM0YzJkNjkwOGI5ZGI0NWM2NzkgbGVnYWN5LXRydW5rCis1NDU0IGY5MzNhNTMwYzM4ZjE3MDcyNjU5ZGMwM2E0ZGE2ZGNkYmYzYzg4ZDIgbGVnYWN5LXRydW5rCis1NDU1IDJmZTlkMDM3MWVjZDA2NzFiYjk1YTMxYjMyZWExNDYzOGYyZDg0NzkgbGVnYWN5LXRydW5rCis1NDU2IDA0YmFkYThkNjVkZTQzNWQ1Mzg2ZDhlNWZkZDBkN2JmNmE4N2NjZjEgbGVnYWN5LXRydW5rCis1NDU3IDk0NzdhNDQ1N2U1NjQzMzE1YzIyZmRlNWE4ZDFiNzk2NGIyZTNmYzMgbGVnYWN5LXRydW5rCis1NDU4IDQ0OGVkYzkyM2NhZDQwZDcwNzJhYzZjOWY3Mzg2ZWVhYmJhMThhZGYgbGVnYWN5LXRydW5rCis1NDU5IGQyOTdjNzIyMDYxMzU4NDI3N2Q3NGMzNDA3ZDRiYjI0NzQyNDI5MTkgbGVnYWN5LXRydW5rCis1NDYwIDVkNDc0OWE0NzBiNGQwMjAwYjljZWE4N2I4NjAxZWE0ZDVjMDg0MzYgbGVnYWN5LXRydW5rCis1NDYxIGFjMDE1MmY2M2JkZGZiNzk4YjExNjVlN2U0NWRlZjFjOGRmMzdkYWUgbGVnYWN5LXRydW5rCis1NDYyIDFhOGQ2YzdkZDU2MGYxOTUwZTRjYjZhNzU1MWFkMzY0YTQ0MTJjNzAgbGVnYWN5LXRydW5rCis1NDYzIDUxM2E5NmE1NzUwZmJhNzUxNzRjZTNhZTAyZDkwNzk1MDdlMGU5M2EgbGVnYWN5LXRydW5rCis1NDY0IGQ0ZmY0N2RmNTkyMGRmZDIxNDY4MzQ5ZWQ0ZTM1MTRjYWQyMDM1MDUgbGVnYWN5LXRydW5rCis1NDY1IDliY2E5NGEzNmEwODEwYWYyMDRkNjhjMDY5Njc4ODk5ZjJmZmExZDMgbGVnYWN5LXRydW5rCis1NDY2IGJhMmZlNWY4MzZhODNkZTJkNzhlNWFhZDY1ZTVmMzRkMmFiZTBlNGMgbGVnYWN5LXRydW5rCis1NDY3IDU1ODk1YjVhMzAwN2I0YmM5MWYzMGJhYWRmOTdiZThmMmIzMGNjNmQgbGVnYWN5LXRydW5rCis1NDY4IGQ0NmQ4MzFiYzVmMzAxMjNkODU3YzgwNzY1OTY3YmZmOTBmNjgyNDMgbGVnYWN5LXRydW5rCis1NDY5IDU5MTFmMjRiY2MyZGUwMzcwZWE5MDlhZGRkOWQ5ZmE4NTdhYzU1OTEgbGVnYWN5LXRydW5rCis1NDcwIDg5ODdjZmE3NThiYmQ1YjdkNDk4MDBjZDE4NzcxNTU4NzgxNTE3NDggbGVnYWN5LXRydW5rCis1NDcxIGJlY2Q1ODE2MDkxMTBiZWJiZWZkZGE5MWNmN2ZjZjQxODRlMGZjMjAgbGVnYWN5LXRydW5rCis1NDcyIGFkNmYwMzlhNWM0OTIyZjg5MGZjYzA0MDFhYTAwZjg1MDZhY2Q4NDcgbGVnYWN5LXRydW5rCis1NDczIDIwY2E1OGVkYzg1NTQ4YzgwYjUxMWEwMDhjM2Q3YTIwMDAzYTQ2MDkgbGVnYWN5LXRydW5rCis1NDc0IDAyZjJjNTE4YWE0NmI5NDM2NmVjYjMwMWQ4ZmI4YWZiZDU4NDAyOGIgbGVnYWN5LXRydW5rCis1NDc1IGE1MTAyMmYxOTgwZmQ1YTE1ZDY4YTBlOWIzMGVjMTg2MDQwMGUwOWUgbGVnYWN5LXRydW5rCis1NDc2IDdmYjZmMjBlMmJhMjk0NDRlMjk0MmE5N2EzYmJiZDU4Y2M3MGQ0NGQgbGVnYWN5LXRydW5rCis1NDc3IDZhYTRlOTIwOWZiZDhlZGI3MDViNzI3ZjFkYjA4NDNiZmE4MWMzODMgbGVnYWN5LXRydW5rCis1NDc4IDcyYTYxYTE0OWU0ZTZjNzAxOWIzMTAzMmM1OGRlMDMwZjU1NDY1ZjAgbGVnYWN5LXRydW5rCis1NDc5IDZiOWNiNjYzNDg5NzVkMjQzMjNiZTRjYzMyYzljZWFhNzQyNzNjYjcgbGVnYWN5LXRydW5rCis1NDgwIDIxMDczODg2NjE2NjEyMjg1MGRkZDVkYzNmZThlMTIwMWM3Y2M2MmIgbGVnYWN5LXRydW5rCis1NDgxIDVkM2QyOTcwNDZkMmM3MDMxOWMyYjMwYzY2ZjY4MGU0NWU4NGM0YjYgbGVnYWN5LXRydW5rCis1NDgyIDI2NzE4NDJjNzJjZmM0ZGM0ZjRhMWVkYmE4Y2VjZjZkODQwNjJiOTQgbGVnYWN5LXRydW5rCis1NDgzIDdhZTMzMjQ3MjYyOWM0YWY5MTVjMmJhODVmZTk4YTEyODFkN2ExYzAgbGVnYWN5LXRydW5rCis1NDg0IDc3NzQ0MDAzNTgxMzM5ODJlNzc2YTU5ZDU5MDQ0YjIxMGEzNWUyY2YgbGVnYWN5LXRydW5rCis1NDg1IDI3MzkwYjUzNjY0MGM1MWI0NTQwYWZhYTk0NWFhYjVkMGNiNDM0OTggbGVnYWN5LXRydW5rCis1NDg2IGQyOTVmNGM5OGM4YTY0NjBlM2RhZjYwMmU4MWJhMWI0ZDk2NWI3ZmUgbGVnYWN5LXRydW5rCis1NDg3IGM3NjcxYzM2YzcyNWU2ODViMTBiYTNlNzM5NzI1Yzc3NzNhNjk0MTQgbGVnYWN5LXRydW5rCis1NDg3IGU2M2Q4M2Y4Mjc1ODUzYWFhYTNkMTk3MmNiODY1NjQ1MDVlNjU1ODMgbGVnYWN5LXRydW5rCis1NDg5IGM1ZDg1MjczNWU3ZjdiNDkwZWNiY2NiYzYwZmI2M2E5N2ExNGI3YzMgbGVnYWN5LXRydW5rCis1NDkwIDg3ODQ3MjI4YjE1OGQ5OTcxZmE5YWIzYTI1ZmUzYzIyNjcyMzFkZDggbGVnYWN5LXRydW5rCis1NDkxIDU0YWE4N2IxY2NlZTQ1OWRkMWUxMjllZGQ0OTliMzNiZGQ5ZWZjNGQgbGVnYWN5LXRydW5rCis1NDkyIDM5MTFkNGE4OWFiMGNhZDM2ODkyZDM2Yjc0MjVjZTNiZGJlZmU1OGEgbGVnYWN5LXRydW5rCis1NDkzIDc0YzhmY2RjOTdkYWE2MWFhYjM0YjRiN2M5NDA3MzgzMGIxOGJhNWIgbGVnYWN5LXRydW5rCis1NDk0IGRjNGJlYzAzNjc4M2U2NzAyZmQ5MDI2OTJkZTJjNmExZWY0ZmEwYTkgbGVnYWN5LXRydW5rCis1NDk1IDdjZDFkYTQwNjRkNzg0MTY5MzIyZmU0OGYxY2NmYWU3MGUwMzc3N2EgbGVnYWN5LXRydW5rCis1NDk2IDE0NzUzYzMyZThiNDJhMTMyZWIxNzNmNzU5OTMyZDMxNzAyODFjMTMgbGVnYWN5LXRydW5rCis1NDk3IDQwNWI0NzNhYTRhMTM1YzUwZjJlZmU4MTk2NWI4Nzc5YWJhODRhNTIgbGVnYWN5LXRydW5rCis1NDk4IDljNDlhY2U2YjFlNzhmMTkxMDY1MzE0ZmFkODE2ODIyNGNlNmQ0ZTYgbGVnYWN5LXRydW5rCis1NDk5IDNiM2U2ODA3NTgzMzJiODA5N2E4MjJkZWYxNzVkNTA2OGM2NTI2NzUgbGVnYWN5LXRydW5rCis1NTAwIDQ3ZDhiY2FiZDE3NmY0MjNlYTJkMmE3ZDZlNDk4ZWI0ZmQyOWYyNzggbGVnYWN5LXRydW5rCis1NTAxIGI4MzhkMmI5NTIwMTJmZjFjZmI2ZjY1NDgxYzhjNjAyYjQxZGJjNjkgbGVnYWN5LXRydW5rCis1NTAyIGNlNWYwYjgzZjdlOWY0ZTBlNjY3MGYzODhhZDUwYTYyZjkwYjI2OTcgbGVnYWN5LXRydW5rCis1NTAzIGJjOGVlZmZkNGQwNjg3NmQyYjcyOGZlMDMxYzg5NzdhM2U1ZGUxNjggbGVnYWN5LXRydW5rCis1NTA0IGY4YWJjMDM3Yjk0ZjhjZGU0OTFmYjU5ZTRhY2I3NDA3YTllNmRiMDcgbGVnYWN5LXRydW5rCis1NTA1IDQzZWEyYzhiMzI4NmU4ODc4MjQ4MjcwZTEwZjMyZTVhNDJjNDRkMGIgbGVnYWN5LXRydW5rCis1NTA2IDAxNmYzNjYyZWY5ODM4YmJjODBiYmI2NWViZDRjMDhjMzM1YzE0MjcgbGVnYWN5LXRydW5rCis1NTA3IGRhNmRiZGZkNTFkYjFiY2NlNzFlNDIwYzA2YTExOThjODlmN2MwNGIgbGVnYWN5LXRydW5rCis1NTA4IDZiOWM1NzVjMGNiYTAzODI0ZDM0MTZkMjVjZDY1ZDYyYzg5ZGU4YzggbGVnYWN5LXRydW5rCis1NTA5IDZhZjBmYmM4NTUzYWI2YjA1NjQ4MGRjNzBiNWY2ZTBjZGM0MTY0ZjAgbGVnYWN5LXRydW5rCis1NTEwIDQ1ODFhMGYwMzUzZWFmMzBmODg1ZDU5ODk2MDgxZjJkZjhhMGZiNjAgbGVnYWN5LXRydW5rCis1NTExIDdlN2JiMDBhMGEyZTI1ZDk1YWZmMjBkMzE1MWRhYjQyYjMzNDFkNTcgbGVnYWN5LXRydW5rCis1NTEyIGJkYTU0ZWEyM2E4MGNjMmU4MGMxOTBiYjVjZDk4OGJlNTYzMTljZmMgbGVnYWN5LXRydW5rCis1NTEzIDk0ODM1YjNlZGYzZTA1OWQxN2VkNjdkNzVhNzllOWExZTAzYjRjOGIgbGVnYWN5LXRydW5rCis1NTE0IDY1ZWE3ODg3NWJjODEyOTA1ZjliOTJkN2M5ZDA0NjcxYzA4MzE0M2EgbGVnYWN5LXRydW5rCis1NTE1IDAxYmMwNmMyZTQ3ZDNiZmNhOGFiMTA4ZTU2YTcxZjlkMjlmZTEwYmEgbGVnYWN5LXRydW5rCis1NTE2IDZjNjk0ZWFkMTY2ODc1Mzk4M2UyNGVmMjE0YzIwYzZhODk5ZmU0NTAgbGVnYWN5LXRydW5rCis1NTE3IDJjZDRjYzA2NWMxZjYzNjZkZTMxMDBjMTBlYmNjNDk4ODU3YzQ4N2IgbGVnYWN5LXRydW5rCis1NTE4IGE5NDZlNGNjNmQ1YjAxNzBjMGY1M2ZlY2JlOTJmMDRiYjIzNTc0ZGUgbGVnYWN5LXRydW5rCis1NTE5IGZkNTA5ODZmMzVlNWNjZGEzODYyZDVmN2Y0ODA1ZTBkZjAwMDU5YzcgbGVnYWN5LXRydW5rCis1NTIwIDViOTI4YjY5NWZhNGY3NzU5ZGNkOWQ2ZTA5OTQwZTNkMzdkZjc3YWIgbGVnYWN5LXRydW5rCis1NTIxIDJjYjE0MTYwMTBiMzM2MTYzMWIzOGU3ZmE1MGVhNmE1OTg0YjJkMzAgbGVnYWN5LXRydW5rCis1NTIyIGVkMDg3NDM5ODQzM2RhOGY5NGI0YWE2ZmIzNDAxOTI3OTZkMWQ5MGUgbGVnYWN5LXRydW5rCis1NTIzIDdlMmMwNGU2ZjdlNzE3MGJhN2UxMmI2NGJhNGZjNjQzMmYzNjA3OWEgbGVnYWN5LXRydW5rCis1NTI0IDI0YWY4ZWFiN2I3NjNiYjQ5ZDI3NDAzOGZhZWNmZjMzZTAwMGM1NzMgbGVnYWN5LXRydW5rCis1NTI1IGQ5NGI1MDBjYjk4NjMwNjgzMTc2ZTNiMjdlZTc0ZTcwZjUxOGIwMmYgbGVnYWN5LXRydW5rCis1NTI2IGMxMjAzMGZiYjViNjBmYjViOTc1NjhkOTBkZmJmYTQ2MTRkNmU0NTQgbGVnYWN5LXRydW5rCis1NTI3IDY2MGU2ZjM1OTkxY2JhNDdlZDk3M2NmZjk5MjQ0MTZhOTVjZTMyZGMgbGVnYWN5LXRydW5rCis1NTI4IGRkNTRlZWZkYzJjOTdmMDVkNDllYjc0M2Q0NjdkODBhM2FjNDkzNzEgbGVnYWN5LXRydW5rCis1NTI5IDhkNTE3OTI3Nzg1OGJlOTkwN2EwNDMyZTZiMDQwZTYzNmMwYjdmYjIgbGVnYWN5LXRydW5rCis1NTMwIGIzMzNmMTZmYjQxOTZlOTNkZWVmNGY5YThjMDU2ZjA4YzJhMDVhOTMgbGVnYWN5LXRydW5rCis1NTMxIGRmN2RmYWMzMGMzZTNhOTE4Y2U3MmIyYmNkZjI2YjU3MzIzN2JmYTAgbGVnYWN5LXRydW5rCis1NTMyIGE1NzY4ZTRlZTA0NTMyNDBjZGZiMWIwNDMyMjUyZjU2YTQ1ZDBjYzYgbGVnYWN5LXRydW5rCis1NTMzIDEzNGM2YzJkMWFiZjljOTVkOTBhYWY1ZWU4YzE2NTMzY2ViZDM4NGEgbGVnYWN5LXRydW5rCis1NTM0IDZlYzgyMGRiMmZmYWY2NmFhYzE1NmJlZmMzZTE2Njk5NWQyZWExZjAgbGVnYWN5LXRydW5rCis1NTM1IDMxYzUyYTBhMzcyYzBlZWM3NWNjNGI3MjI0YTU0NGQxZjk3ODEyZGUgbGVnYWN5LXRydW5rCis1NTM2IDMyOGFjNzRmNmNhNjk4MzRlOWU2NTk3OTg5YjJhZTgzYWVlYzZmYTggbGVnYWN5LXRydW5rCis1NTM3IDI0NmQ1NDIyMTI0Zjk5OWNkMThjZTE5YjkxYjZlOGNmYmYwNWUzZTUgbGVnYWN5LXRydW5rCis1NTM4IGZiYjhlZGRjOTMwOWZiMWU4ODIwNmU5MjhiNTNlYWVmNWYwMjc1MTkgbGVnYWN5LXRydW5rCis1NTM5IGQxNGNlZjE0ZmJmMjdlNzBiODJhZjE4YjJiNDQ2NDMyOTVhNWJiZDEgbGVnYWN5LXRydW5rCis1NTQwIGQ2YjEzMGZhOTFiNjVkMzlmMDNlZTIxYWEwZDcxNThjYjc0ZWUzYjcgbGVnYWN5LXRydW5rCis1NTQxIDk3MWU1Y2ExOGJkMWQ4NGFlMzZlOTZiZTkzODUxMGU2YzQ0NzVmNjAgbGVnYWN5LXRydW5rCis1NTQyIGU0MjlhN2U3MWUwY2NkMjJkMTExZjZiOWI3Mzk1YTJhODE0Y2QyZWEgbGVnYWN5LXRydW5rCis1NTQzIDY5OWNmOGI5NGY4MDJlODdmZTgzZjcwZmM2MWMzNTUwZWYyOTA0YzcgbGVnYWN5LXRydW5rCis1NTQ0IDcyMjZkZDMxNzU1YzcwM2IwMGQwYjAwOGNmOGI1MmEwN2U2NWY4OWYgbGVnYWN5LXRydW5rCis1NTQ1IGUzZmJjZWQxYmMwOWIzMThlNTYyYzkzNjRmM2ZkMjE0MzhhOTE2N2EgbGVnYWN5LXRydW5rCis1NTQ2IGJmYTQyN2RhNTgwZWNkZjM0YjQ0YmZiMWU2MDEyYmI5NGY1ZWFiNjAgbGVnYWN5LXRydW5rCis1NTQ3IGRiODlhYWI0MTVhMWI3YmJlNmMzNDU1NTc0OTQ3ZWM4NDI4NzMzZWYgbGVnYWN5LXRydW5rCis1NTQ4IGVhZGEyNDg2NzZkZWY2M2I4MDdmNjA2YzgyMGUyMzQ0NTIzZGMzYjggbGVnYWN5LXRydW5rCis1NTQ5IDg3ZmVhMjYxYTI2M2U3Y2YxZjllYjQ1YzhiNDZmMTViNjc0M2Q1MTIgbGVnYWN5LXRydW5rCis1NTUwIDA3Y2I1MDE0MWQwNzA3MmFhNTdhYWU0ZWNjNWRiMDA5ZmVmMzUzNjUgbGVnYWN5LXRydW5rCis1NTUxIDkxYzFiYjc1ZTk0NWNmOGNjOTZiMjcwOTgxN2IxYjk4MTUzMjc2MDQgbGVnYWN5LXRydW5rCis1NTUyIGE3Yzk3YzQzNzE5MWQ0NGNjZDEzMGY3Yjg3OWIyNDY5ZDRjNzQ5ZjUgbGVnYWN5LXRydW5rCis1NTUzIGQ3ZWVhOTAxM2U3MzYyODhiM2RmYTdjNDc5MDkzMThmMzQ2NWQ0MmQgbGVnYWN5LXRydW5rCis1NTU0IDMxNjg0YzViYjE3MjdjY2I0ODY2MzI2OGJkM2EzMWM1MWQ2ZDAwODYgbGVnYWN5LXRydW5rCis1NTU1IDc1OTM2OTkwYTMzMGMwYTQ0ZWNjOGQ1ZjQ3MzM1M2NhYTIzMTI5ZmIgbGVnYWN5LXRydW5rCis1NTU2IGVmOWFjNmRlZjcxZDNiNmVjOTM4OWUyNTE2ZjdlMDQ4MDc4ZWZkYzEgbGVnYWN5LXRydW5rCis1NTU3IGZiZmEzZDNjYTRlMDk1NjZkMzRmNmJlYmExMDBiOGQ0ZjIwYmZiNGIgbGVnYWN5LXRydW5rCis1NTU4IDdkZGZiNjI5YWMzZmU5MDM4NWE0NWVjMGFhYTA4YjRhYzA2Y2M0M2UgbGVnYWN5LXRydW5rCis1NTU5IDFmZjEyNjE5YTE0YzdkY2ZkZDIzZTEzNzA4NTMzZmE0OWI1ZTI4ZTQgbGVnYWN5LXRydW5rCis1NTYwIGIzYTgwMTNjYjRmYTM2NzU1MzJlNjU1MTg1Mzk0YzliMGU0MWE3YWIgbGVnYWN5LXRydW5rCis1NTYxIDVhMWZiZDIxZmMyYTVhNWY4NDYxZDIxZDExZmM1YjE3ZGI1Y2Y0OWMgbGVnYWN5LXRydW5rCis1NTYyIGMxZDc3ZDc0ZmUzNTA2OGZkYmMzNmY0YzdmOGNlZjdiZTQyYWQzZjkgbGVnYWN5LXRydW5rCis1NTYzIDg0MTA0ZDZiNGFlN2VkZjAwNTRiYzY0MTZiYTliNzkxYzBlNmRiODAgbGVnYWN5LXRydW5rCis1NTY0IDhhYTY5MThhODhjNmIxNTQxYzdkMGNkNmY0OTYwYzQ0Nzg4ZmUyOTQgbGVnYWN5LXRydW5rCis1NTY1IDRjODNmNTY5YjQzNDU5M2IzODU1MzI0MGY1MTc2NGJlNjI5YWY2ZDIgbGVnYWN5LXRydW5rCis1NTY2IGQyNDkxMTFkNGNjY2ZmNjg0MWZlODgwYmZhZjQzYmI0Mzk5NWI2ZDkgbGVnYWN5LXRydW5rCis1NTY3IDE3MWVlZjY5YTJjZDA4N2Y2MzEyNWIyOGIzM2I2Yjk1ZjU5Yzc3ZjMgbGVnYWN5LXRydW5rCis1NTY4IDIzN2MzYjJhNjE4NzFiMDc1N2I1OGU4MmRhODRkZDM0Y2RjYjVmYTQgbGVnYWN5LXRydW5rCis1NTY5IDY5MjcxNWFiYmQwYmJlZWY2ZjFjM2E0NzJjNzZjOTBhNTcwOTJiOTggbGVnYWN5LXRydW5rCis1NTcwIGU1MWUxN2IyZDg4YjE1ZDlhOTU5ODZlYjEzYWY4YTYyZDZkMTc5OGEgbGVnYWN5LXRydW5rCis1NTcxIDU2ZGJhMDM3YjhkNmM2NTY0NWMxZjg5YmM3OGUyMWIxY2QwZGQxNDEgbGVnYWN5LXRydW5rCis1NTcyIDQzOGY4OGI1NTE1NGFkNGM0MmM2MDUxNjc0OTgyNDMxOTNmNTQ1Y2QgbGVnYWN5LXRydW5rCis1NTczIGM0MWE4ZTUwMTk3MzQzYzk3NzE4ZjYzNmE3MDUxNmE2YTdmY2RhMmIgbGVnYWN5LXRydW5rCis1NTc0IDNkYzlmZjNhYmYzNjE2MzJkZWNkYTE5YTYxNzY0ZWQxYjhmNWIxOTggbGVnYWN5LXRydW5rCis1NTc1IGE4ZmNjNTExYTg5YThmMzdhOTMzMmM3N2Q5Mjc4ZTVhMWIxMWQxYzQgbGVnYWN5LXRydW5rCis1NTc2IDE0MTIzZTA4ZTg4N2U0MjgzYWQ2NDg4YTc4NDY0YTA1ZDcwZmEyZDUgbGVnYWN5LXRydW5rCis1NTc3IDVjMGE3Zjc4MzZmYjFkYmQ0MDViZDExYTA3NDg0ZmFkMWZmOTg1MTEgbGVnYWN5LXRydW5rCis1NTc4IDlmNzYxODVjOTY5MzdjZjU1Y2RhOGZlYjdlNjU1ZjgyMjU0M2E1M2MgbGVnYWN5LXRydW5rCis1NTc5IDM2ZjRkNTQ2OTkxNTMzYzk0YTQwMjZhMDM1NTc4MjI3MWJlMDZiZmUgbGVnYWN5LXRydW5rCis1NTgwIGFmODIyOTExMzViZDA2YzBmODM1YjU3ZjQwYzQ1ZDdjZjEwMTVhNjcgbGVnYWN5LXRydW5rCis1NTgxIDNhYWI5MjVlYmZiMDM0ZTA1Y2I3OWMwMWY1NzQ1NTVmN2Y2YWY4YjcgbGVnYWN5LXRydW5rCis1NTgyIDk0OTdjZGNkYjZhYTUxYjRmMWFmZTViZWE4ODY4M2U2MzAxZDBhMjAgbGVnYWN5LXRydW5rCis1NTgzIGRiMTM5YTQxMTJmMzJmNTM4YzM1MGQ5ZGFjYzY1Zjk0MzQwNDA2NTcgbGVnYWN5LXRydW5rCis1NTg0IDA3NzM5OWNjODJlOGNlYjI4OGIwMDU1NzI1OGI3YTIzMGRmNGY3ODcgbGVnYWN5LXRydW5rCis1NTg1IGU0NzcwOTRhOGNhMTA4ODIwZjhmNDM5MDJiNmMzNzBkYzQ3ZjQ2YmQgbGVnYWN5LXRydW5rCis1NTg2IDEwNzFkMTZjOTMwYzFkODY5Y2UxOGRkMGViYWE0MTM2ZjQyYjQ4YTMgbGVnYWN5LXRydW5rCis1NTg3IDRhMTJhNTQzMTc1ZDBiYTlhOTMwNjBjYWIzODA1MTAzNTg0YzM3ZjUgbGVnYWN5LXRydW5rCis1NTg4IGMxMGY1NWI0NmExMTUxYjFiOWJmNjBhYTUxODA5ZmQ2MzYyZjBkMzMgbGVnYWN5LXRydW5rCis1NTg5IDJjYWEzZTI4MzU2OGQwNzVhNGNkMjA2Njk3NGU2MDQ0MTI5ZjNhMTMgbGVnYWN5LXRydW5rCis1NTkwIDkzNTYyZGRlMjI0YWI3ZDA5NGU1Yzc2NTg0NmFlOGJlZTU3MGEyZDcgbGVnYWN5LXRydW5rCis1NTkxIDE3ZjMxMWVhMGM5YTA3YzU1YmQyMGUwYjMwZDlmMTliNjYyZTE3YWUgbGVnYWN5LXRydW5rCis1NTkyIDkwNTY2YzljMTg5ZjMyZDFiNzk0N2M5ODNlYTU4NmJmZmFiMjUwOWEgbGVnYWN5LXRydW5rCis1NTkzIGU5MDY0M2YzM2M2NGMxMmE2MjgxY2ZjZGQ5YTVlYTMxMjg5ZTdmNTUgbGVnYWN5LXRydW5rCis1NTk0IDg3MTBkNzE0OWM2ZjFiYmVlMTViMjc5NDFlZWEzMjE0ZTNjYzAxN2YgbGVnYWN5LXRydW5rCis1NTk1IDI3YTA3NjlkYjkyMTkzMzQwZTY3N2FlY2Y5MGJiZWFiNmQ5MjAyZjkgbGVnYWN5LXRydW5rCis1NTk2IGU4MzVhMjJiMGJkZGU5NGZlYmMwMWFjMDY3MzVlNjFlMjA4OWI4YTggbGVnYWN5LXRydW5rCis1NTk3IGRjZjJhMzdlNzNkOWQzNmYxODFhNzRhYTdjYmEwOGFjZjVhM2Q1NTggbGVnYWN5LXRydW5rCis1NTk4IDcxYmI3MWUzMDZmZTJkY2I2NmU5NjVlMGRkOGU3NDU5MzgwMDc1M2MgbGVnYWN5LXRydW5rCis1NTk5IDcwZWU0ZTNjYjNkODM4MjY0Y2UxNGE3MDBhOWQwODIxNjNkYTA1YjYgbGVnYWN5LXRydW5rCis1NjAwIDU5MTI4N2EyMmVlNTk2ZGVjMWIxZDZiZTBiYmY4ZTc2ZWY2M2E0MGUgbGVnYWN5LXRydW5rCis1NjAxIDI2NzdmYmIxMTdkNjJiNDUxYWZjYzQ5NzY2NmYyOGRlMTA1NDA0YjUgbGVnYWN5LXRydW5rCis1NjAyIDk5OWZjY2U0OTZmODQ5NTQ4OTgyYzRhNTQ1YzA1ZjZkYjY0YmVkZDkgbGVnYWN5LXRydW5rCis1NjAzIDFiNGI4YTRmYjQ2MzM0MDE3MTA4NzczY2NiNTBkMjc4NGM5NDkxOTIgbGVnYWN5LXRydW5rCis1NjA0IGFkY2M5MTZiNzYxNmQ4MDc0NmMxYzEyZjBlOWFjMmJhYjM1MWZlYmEgbGVnYWN5LXRydW5rCis1NjA1IGYxZjE4YzU1ZDEzNjQyNDU0MjY5NjJiOTBmNzllYTkwMThjMmMzZTQgbGVnYWN5LXRydW5rCis1NjA2IGRmMDdmMjg3MTFmZGYzMjg5OWZiYWZkNzM1MjhhYTk2ZTNhNTQyNGUgbGVnYWN5LXRydW5rCis1NjA3IGNkMzg4Y2M5YmE5OGRjYjg5ZmE4MDJlM2ExZTk5ZDRjMDc2OWFiZjYgbGVnYWN5LXRydW5rCis1NjA4IDNmOGE3MzM4MGM0YmNjZDE4OTA4NGFlNDAzYzFiMDdhYTk2NmJmMGEgbGVnYWN5LXRydW5rCis1NjA5IDM5M2I2ZDgxYjEyNmIyNzRkNjdkZDlkNjFlZmI1MDk5YTA5OTMwYjEgbGVnYWN5LXRydW5rCis1NjEwIDdjNWY5NGY1NmY3OTM1ODY5ZWNkYmZmNjU0ZWFlMmZlZDk1MTI4MzMgbGVnYWN5LXRydW5rCis1NjExIGZiZjU4ZDI3OGQ2NDVkMGE1MjdiZTk4ZTY1NmU0YzRhNGQ4ZDJlZTEgbGVnYWN5LXRydW5rCis1NjEyIDQzZjhkYjIzZWYxNWUyMGNiNTY1OWRhMGYwMjM2M2I1ZjNmM2NhNmYgbGVnYWN5LXRydW5rCis1NjEzIGE5NWZmODY3NTcxODEwZTZlMjU0YWNmNjZkZmJkZDJmYjRhYjFkMjAgbGVnYWN5LXRydW5rCis1NjE0IDcwYTkzMjdmNmM0YzZiMmIzNTk4YjVhZDVmYzEyNjdmYzJkZjViYTMgbGVnYWN5LXRydW5rCis1NjE1IDQ4ZGI1ZDlhMjc5NDFjMmUxODc5NDEwYzdhZmM1OTBlZGUyOTM3ZjMgbGVnYWN5LXRydW5rCis1NjE2IGJhZDk3YjQwNTE2NjZhMmRmMmY2MWFkZTMxZWEyMDUzNjAxZjYxNWEgbGVnYWN5LXRydW5rCis1NjE3IDQ5MGJlODY1YWEwZDU3OWVlZDQ0YTZhZTg2OWEzZTU4MWU4MTllOWQgbGVnYWN5LXRydW5rCis1NjE4IGFjZmY3OWRkMTRiNzUwN2Y2ZGNiYTQzMDc1OTNiNTc1NjcyYWVlMjYgbGVnYWN5LXRydW5rCis1NjE5IGEzNmUzMDI0MGQwNmY0ZGYyNjdhOWEzNTI0ZjBiMzI2Y2M1ZmM3MmMgbGVnYWN5LXRydW5rCis1NjIwIDlhODk2MDg2ZDNjMzcwNDE0MGRjYzViMDA3MDFiMmY5MDMzN2MyYTQgbGVnYWN5LXRydW5rCis1NjIxIGNkN2VhYTYyY2MzMWI3ZjY2MzY0M2NjMzNlYTUzN2EwNTBmZDhlNWYgbGVnYWN5LXRydW5rCis1NjIyIGQ2ZGQ1MGZlMWVjYWI3NTQ3MmMzNGQxNTA0ZWVlMmI2M2VjZGM1NjggbGVnYWN5LXRydW5rCis1NjIzIDkzMTUzZDVjMzMzZDA3ZDExYjUxNDUyOTkyNmFjNWU2OWRhNDdiMGMgbGVnYWN5LXRydW5rCis1NjI0IDQ2OTM2OWFkMmYyZmJhNGM4ZTA2Y2IzOWRjM2IyYWEyMjI0YTM2ZjYgbGVnYWN5LXRydW5rCis1NjI1IDU5NjFiNzZkNzg5OTZlMzVmNWQ0Y2IxZmYzNzkzNzdmNGE2ZjMwYTEgbGVnYWN5LXRydW5rCis1NjI2IDRjYjEyNjA0ZGE5ZDllYThhNGU2YzlhMDU5ZjA5NmU1MDk5ODA3ZDEgbGVnYWN5LXRydW5rCis1NjI3IGZkNGYwMDhkNzc0M2I1MWVmOTdkNTA2YzdmYTA3NjY3YmVmNDk5ZjQgbGVnYWN5LXRydW5rCis1NjI4IDIyMDVkYzQ5OGFkZmJlYjBlZjVhOWE4YzQzMDZiMjhjMTdhNzE2N2UgbGVnYWN5LXRydW5rCis1NjI5IDQwYzY4ZWJkNTg5MWQ5YjRmNzJiZTMxNDY4Y2I0YWEzZGM0NjRmYzkgbGVnYWN5LXRydW5rCis1NjMwIDMxNzJjMzljZGFkODA4N2Q1YTcxMThhNzliYzliYmYwOGM4YTY0MjYgbGVnYWN5LXRydW5rCis1NjMxIDk1ZTgwYjZiOGYyZTQ0Y2ZiYTFkZGM3MjY3YTYzMjliMjQ2OTQ2ZTEgbGVnYWN5LXRydW5rCis1NjMyIDkyZTE0NWY4NDE0ZTk2MTY1MTI5YzM1NTgxZTMyY2E3M2IzOWRlZjggbGVnYWN5LXRydW5rCis1NjMzIDkzOGM0MzNjODc2YTNkNjk1YjFkMDdkNzgzZDY4MTFiZjdlODQwZGEgbGVnYWN5LXRydW5rCis1NjM0IGZlOWY5NWIwNDJmYzhjZjA2MTk1MzEwZGM0NGViYTcxMmZiYWI5YjcgbGVnYWN5LXRydW5rCis1NjM1IDk0ODlhMzcyYzY4NjJhMTkyMDU0MmUyMjkxMjU0NDAyNzYwNzU0MGQgbGVnYWN5LXRydW5rCis1NjM2IGZmZjhhNzUwZTdmNjNkYzBhMDFiYjM5M2YyNWIwNGQwYWEzMDk2MGMgbGVnYWN5LXRydW5rCis1NjM3IGI5YjllNjYyOGIzNTM1MzAxYzVjNDgyMGZiOWNhZDY0NTNhZmFhYTQgbGVnYWN5LXRydW5rCis1NjM4IDEzMTQ2Y2I2ZjY3YzYxZGUyNTJjYjZhMjIzODY1ZDZkNzRjYzZmMWIgbGVnYWN5LXRydW5rCis1NjM5IDZiY2NmYzBlZDY5NTk0Mzk0ODUwZDFmZDA4ODE1MjQwNTkxNThkYjEgbGVnYWN5LXRydW5rCis1NjQwIDZkMzRhZGUyZTlkNDUyNzFiMGZjNjVmYjYwZjNmNGUxMmFmMGYzNzggbGVnYWN5LXRydW5rCis1NjQxIGY3Nzg5OTQ1YjhkZWU2Y2Q3N2U0MWUxOGM3MDU1MjdlOWM5ZTFmZTQgbGVnYWN5LXRydW5rCis1NjQyIDQ5Yjc4N2I5YmZhZTI2Y2RhNTZlNjQzYWRkNGRkMmNmYWVmZTRiOWMgbGVnYWN5LXRydW5rCis1NjQzIDA2ZTM0MGY4NTk2MWQxZGYyMDVlNWY0NWQ4OGNjYjc0YTcwMzVkYzcgbGVnYWN5LXRydW5rCis1NjQ0IGNmNmMwYzVkYzczZjc4NjNmMDc3YzBkYzA0ODMzOTM1MWE0MGZiMTggbGVnYWN5LXRydW5rCis1NjQ1IDNlMWU1ZjY4ZmQxY2NhMjFhMTVjZTEwY2I1MDFiY2Q0YTE2NmMxMGMgbGVnYWN5LXRydW5rCis1NjQ2IDJhNGQxMzAzNzNkYjIxOTg4NmVkYzk4Mzc2YzIyNTQzZGE3NTNlNDEgbGVnYWN5LXRydW5rCis1NjQ3IGE0MjAxMmMxODhmZDM4NzliNjZiYjk0YzQ5MjRkOWYzYTlhYzdiZjUgbGVnYWN5LXRydW5rCis1NjQ4IDI0YjUzY2IzMTY4MDk0NTEwZGNmY2MzMDc1YjRmMWE1MjMxODE2YmYgbGVnYWN5LXRydW5rCis1NjQ5IDhmM2YyNWE4MzdiMzgxN2RiYTlkM2EyN2JhMWE5MzFmN2U0NTVmMjYgbGVnYWN5LXRydW5rCis1NjUwIDYxY2ExOWEzMDAwZmVjMTI4OGFmYjU5NmZiM2YyY2I0OWRiNjMyYTcgbGVnYWN5LXRydW5rCis1NjUxIDdiMmY2OTU0MDViYWZiZmJmZDhhY2U5ZTAzNzVmNWU0MGQ0MzZiNjAgbGVnYWN5LXRydW5rCis1NjUyIGMwNTZmNjg1YzA4MTNjOGU0NTNhNWM5NzQ1NDQ3N2NjNDY5NDg4ZGQgbGVnYWN5LXRydW5rCis1NjUzIDgzMDFkNTVlYjY0YmUyNjhkYzU3ZTkxNDgwYzViOGNkYjMxNWFkZDQgbGVnYWN5LXRydW5rCis1NjU0IGNjMzlkNjJiMjdmZDExNTkwMmM1NjQwYjYyZDExZTM0NmU2NzlkZDIgbGVnYWN5LXRydW5rCis1NjU1IGY0NzJiN2VjMjVjNTgzYzYyYjg4OTFkZTI2ZTkyM2JkODU2YmU3ZGMgbGVnYWN5LXRydW5rCis1NjU2IDAyYzhmNzRkMDhkY2Q4NGQzNjIwZjNiZTIwMTUwYmY1YmE1MjNhOWYgbGVnYWN5LXRydW5rCis1NjU3IDI4ZGZjNDY3MTg1ZmM0MjU4MzhmOGRiNTk3NWI5NTllN2RkYzBjZDAgbGVnYWN5LXRydW5rCis1NjU4IGY5ZmQ1MTIyNjgwZjMzM2QzYzk3MzllYThlZmVkMzMwOTE3NGY3YzMgbGVnYWN5LXRydW5rCis1NjU5IDJhYTc5ODM3YWVlNTZlZWE3NjhmMTVjYjU1OTc0MjU0YTgwMzlmMGEgbGVnYWN5LXRydW5rCis1NjYwIDgyMjRmMGJjNWNkYTQ5NDJlYWNhYmEwNDEwOTJkN2U4MDc4NWJkYTkgbGVnYWN5LXRydW5rCis1NjYxIDA1YWViOTFlM2I5MGQwZDM2MWYzODVhMzgzNDg0ZjMyNGNkZWUwZjMgbGVnYWN5LXRydW5rCis1NjYyIDYxMTkzYzYzMmY1MWUxOTExYTg3MmViNTQxMzJkZWE3YWVjOTI1MzcgbGVnYWN5LXRydW5rCis1NjYzIDE5NWFkOWZiNDU4MzJjNzlhMzJjMDlkMzU3ODk1NDBkNTY3YjNjYTIgbGVnYWN5LXRydW5rCis1NjY0IDVkMTZlY2FlOGVlNzExMTgxZGE2OGExNjMwYzg0ZGNlYjBjNWJhYTAgbGVnYWN5LXRydW5rCis1NjY1IDIxY2Q1MGE0YTNmNzY3YTkzZjA4ZDlhNGI3ODlhOTNhYjU5YTUyODcgbGVnYWN5LXRydW5rCis1NjY2IDg4NDFhNGQ1Y2Q0YmViOGZjYTNkODZhNzUyNDZmY2RlMTVmNWJmZjQgbGVnYWN5LXRydW5rCis1NjY3IDhmNWFiMWE2YzkxNDJlYmE0OWQwODM2M2M5ZjhlNGNhMmM3MGJmMjUgbGVnYWN5LXRydW5rCis1NjY4IDE5YjU4Y2U3OTRjOTAyNjc3Njg3YjdlNjkwNTBmMmJmYzFjNzA3ZDkgbGVnYWN5LXRydW5rCis1NjY5IDY0OTFiZDJiYmRlZmY2ODU5ZTI1NDgxZmQxMzc0Mzk0NmJkNmQwMGQgbGVnYWN5LXRydW5rCis1NjcwIDQ2ZGY2NzJjN2MyNzBkYTM2MGI1N2YwMDcyMGU0Y2I1NWQwYjFmMmUgbGVnYWN5LXRydW5rCis1NjcxIGQ1ZTc2YTk1YjU2NjVjOTA5MWI1NWNhYmUwZGYyYTU1ZGE1NmI3NTUgbGVnYWN5LXRydW5rCis1NjcyIDNkMTIyZjAyZTY0OTg3MjY5NmJmODQ5MTI4OTNlZDkwNjExMGNjZDUgbGVnYWN5LXRydW5rCis1NjczIGRmMmYyNTJkY2QyOWRkZTdmZjI0YWVjYWJkMzM3YjFlMDUzMThmNmMgbGVnYWN5LXRydW5rCis1Njc0IDBlZDVjZDhkZjUxZjk4MTYxOTE0ZGEwOWZlOWFiYzA1M2FmMmEyYjIgbGVnYWN5LXRydW5rCis1Njc1IGEyMjdkY2U0ODQ1MTdkYTYxNTBhMGE5NGE3NzA0NzAzYTY5ZjlhYzQgbGVnYWN5LXRydW5rCis1Njc2IDJiNWM4NzM4MTMwY2Y5NTIyZjFmYmY0YWRiYTgyNTBhZmYwOWM2ZmUgbGVnYWN5LXRydW5rCis1Njc3IGNkZWJlZTRhM2UzZTg3MWE3ZTZmNWZlNmMxMTk0ZWQ4ZGRjY2EwMzUgbGVnYWN5LXRydW5rCis1Njc4IDk4ZTJjYWQ0ODU3ZjFkMmJkNTM5OWRhMzdiOGQyZjhhZDIwOWU5NzQgbGVnYWN5LXRydW5rCis1Njc5IGM3Y2RkMjJhNDg1M2FkOGJhMDA5YTFmZGY3NWZjNTJmMjE3NzlkMmEgbGVnYWN5LXRydW5rCis1NjgwIDIxZDRhMDdiMTg3NWIxYWRiYzcwYmE2ZDBjZGY1NTU3YTRjMGQ1NjEgbGVnYWN5LXRydW5rCis1NjgxIGZmZTAzMjgzNjkzNzM3MzUwNjliNDQ2ZmJjODhjYzM4NzJjZjgzMDggbGVnYWN5LXRydW5rCis1NjgyIDNiMmJlODExYTY2YWFhNmJmZGY4NWRjMzdmYzYyZTgwYjZmMDg5ZTkgbGVnYWN5LXRydW5rCis1NjgzIGQwMGE3OWViYjAyNzM0OGNkZGY1ZTI1NDliNGVkYzZjNzNjN2QzMTcgbGVnYWN5LXRydW5rCis1Njg0IDgwMTI2NWI4NjE2NDAyNDQ0YWQ3NzlmYmViNTY2M2M5MWRjMmUxN2UgbGVnYWN5LXRydW5rCis1Njg0IDdkNzQzYzg2NWE5YWE2YmRlOGI2MDNlMzJlMDU0MjAzMWJiYTNjMzMgbGVnYWN5LXRydW5rCis1Njg2IGU0NWYzZDI2MmFlNGE5MjNlZDhjNDBmMGRmOTlkZjk2Y2UwZjQzZjggbGVnYWN5LXRydW5rCis1Njg3IGYxY2MyNDdmZmYxMzdkOTRkYjgxMmU5ZWNjYzZiYmM4YWU2ODY5NGQgbGVnYWN5LXRydW5rCis1Njg4IDc4ZTE5NTNmYzliMmYzMzQ1MzYwMmJiMmRlODdiMDVjY2M0NjU3NmMgbGVnYWN5LXRydW5rCis1Njg5IDBmMzhjZWM1NjUzOTFlNTMwZWE0Zjg5MjAzZDhlOWUwNzk2ZjlmOGQgbGVnYWN5LXRydW5rCis1NjkwIGU3NDE3YTU2ODU4NmFiMzkyZDFhNjQ5NzMzZmEzNmY1ZWMxMDQ5MDMgbGVnYWN5LXRydW5rCis1NjkxIDJmYjM5OGFiM2U2YWIwMjgzZDllMGQ3M2ZiM2FkNWY3MDkxMzI5NmIgbGVnYWN5LXRydW5rCis1NjkyIGU1NTRhNjFhODQ2OTRmYjE3NzA4ODEwZDdjZDU4NjlkZWExNTU0NDAgbGVnYWN5LXRydW5rCis1NjkzIDhjMGE1MTgwZmEzNmVhZjI0ZWNlYzU0M2UwOTFkOTdjYjBkNmJlMmMgbGVnYWN5LXRydW5rCis1Njk0IGVmYjk3MTQyOTkyZTQ4OTc4OTY4ZmJhYmUwYzFjYTcxOGZlYzlhZDQgbGVnYWN5LXRydW5rCis1Njk1IGY0YTU5ZmZlMWE1ZjVjMWM4MjM1MjhjY2JiOGMwMWQ2ZTMyOGVjMTIgbGVnYWN5LXRydW5rCis1Njk2IGUzMzdiZjNjYjQzYWVhMzg2ZTYyNTk3MjRjNWZhODQzNjNmNDIxMzEgbGVnYWN5LXRydW5rCis1Njk3IDExOGMwNjNkZjQ1M2MyYzJmM2Q2NzYwMTczNTM4MDYwNWRmMzc3Y2MgbGVnYWN5LXRydW5rCis1Njk4IDFhY2MwNDQ3OGRjMzEwZThjNDA1MWYzMjM3ZTZlNmZhOTQ2MzE0MTQgbGVnYWN5LXRydW5rCis1Njk5IGVhN2VjNGE0YzhkMmY1MzBhNjcxMGY4N2YyN2EzNDczMDYwZWM4MDIgbGVnYWN5LXRydW5rCis1NzAwIGZkNTczYWM3NTk0NzQwMzU1ZjA1YzQxYzkxMjliNzhiNjY5NGMxZTEgbGVnYWN5LXRydW5rCis1NzAxIGFhZmU3ZDYzNDk4NTI3ZWRmN2Q5NjE0YjcxZmFiODQ5NGU5MTc5MDYgbGVnYWN5LXRydW5rCis1NzAyIDNkZjlhYjAzYmFkZmZiMmVjMmNmNGY4NjllZjJhYjdhM2QyNzIwOWEgbGVnYWN5LXRydW5rCis1NzAzIDQ2M2IyNmZhNGQ3Yjc1Njc4NTBjMWI0NTA2YWNhODZhNGQ3MTMzZWEgbGVnYWN5LXRydW5rCis1NzA0IDYyYmJmZGU0MWIxNDQzYmE2NzY5ZmI4NTYxMGUxZDYxNDBiYTUyMDAgbGVnYWN5LXRydW5rCis1NzA1IGQzNTEwZjExMThiNmI3NzJhOTRlMWZiMDQwM2ExOTQ5N2M4MzA5ZTQgbGVnYWN5LXRydW5rCis1NzA2IDI4NWRiYTRlMGU1MTZjNTA3N2MwYzE0ZWI5ZmNkZTMyMTU1NDBkNjUgbGVnYWN5LXRydW5rCis1NzA3IGY3ZmQ4NWIzMmE3ZDg1ZTQ5NmNlNzg5YWM0NDU3MmUyOTdmNmJiNjAgbGVnYWN5LXRydW5rCis1NzA4IGU5Mjc4OWE5NjBhMDI3MmIyZDE0MGMyNTZmZjJjOTJmZGU0ZjM5ZTEgbGVnYWN5LXRydW5rCis1NzA5IDMxMzYzN2M3N2RhYTAzYTI5NWNiMzE3NzNlNDBlZjY4MGVlNzhiY2EgbGVnYWN5LXRydW5rCis1NzEwIDQwNWRhNTU2NjYxZDY2YWE0NzllYWU2OGVlMjM1NmZhZGI1YmQxZmUgbGVnYWN5LXRydW5rCis1NzExIDI4NDJmZmE1MjEyNjBkZDc1NTQzNTA2ZmI2ZTY5YmNjMDRlZTViNzEgbGVnYWN5LXRydW5rCis1NzEyIDE4YjYwZDhkOWUzNWEyNjRiNDZlYThlYTczNDUyY2I3MTVkYTE1ZDUgbGVnYWN5LXRydW5rCis1NzEzIDdiMWE2YmJhMjU4MDViMzlhM2FkYjRhODA1Nzg0YTA5MDFmNTUwMjcgbGVnYWN5LXRydW5rCis1NzE0IDIwZDc0ZmEzYjUwYjFiZjA3MmFkMThiZjdhMmViMTcwYjA4ZjlkYTEgbGVnYWN5LXRydW5rCis1NzE1IDVlMTAxZWFkMWU2OTkwOTUyNGZiNTBkNzQ1YTk0Mzk3N2NlM2JhMTUgbGVnYWN5LXRydW5rCis1NzE2IDFjZjZlMTA1MjJlMDkxNTYwMWUwNjA0OGRhODViODI4MDUxYTJkY2QgbGVnYWN5LXRydW5rCis1NzE3IGVkMGQxNDhmYzA1Yzg3OTc4NmFjNGQ2YjdkZGMyOTc0MTY1MGQ0YzkgbGVnYWN5LXRydW5rCis1NzE4IDFhMzlkNDA3YjRkMzkwMjlkMzEwZWY3OTgyNDAzNTkzNDM0NzliNjEgbGVnYWN5LXRydW5rCis1NzE5IDQ2N2UwZjJkNjc4YTExZjQzMWIzZTZjNzNmZmU3OTE4YzRjYTRkYzQgbGVnYWN5LXRydW5rCis1NzIwIGY4OWNkZGE3NDA1YWM0YzcxZGYyMmFkNmU3MzE1NDBjOGEzNDczZTggbGVnYWN5LXRydW5rCis1NzIxIGNjNTQ3NDIyMWM4Y2IxYTYwMjFjMmJkYjEzZDliMTdmMTQ0ZDUzZTAgbGVnYWN5LXRydW5rCis1NzIyIDMzMzEwY2I2YTVkNzY4MzQyMDk4YTFmNTYxNDM4OThkY2Q1MGYzODAgbGVnYWN5LXRydW5rCis1NzIzIGE2YjA3MDQxMDZjOGNmZDY1MThkMmRlOTE3ZGJjYWQ0NDM5NjMzM2UgbGVnYWN5LXRydW5rCis1NzI0IGJhZDdmNTZjODNiMmI2MmExOGVlZDExNmI4NWY4NjYyYzhmOTZkOGUgbGVnYWN5LXRydW5rCis1NzI1IDZlNDhmYWI2OTkwZjMxNGZiNzYxNDU1YjNmZjI1MjYxYzA2ZDY4ODUgbGVnYWN5LXRydW5rCis1NzI2IGRiMTFhMmJmZWE2NmRhNDNiMDYzNmEyMGU2MWY4NmJhZmJlYTc0NGIgbGVnYWN5LXRydW5rCis1NzI3IGIxY2E2NTk3MWUzNmZhYTY2ODVlZDYxM2FkMjEzZmExNWFhYzg4YmYgbGVnYWN5LXRydW5rCis1NzI4IDRmNDA4M2EyNmJmMjIzMzkwMTU1NzE3ZmQ5MzgxMDQ3NDYwOTZhNWMgbGVnYWN5LXRydW5rCis1NzI5IGJmYjYzYjQ1ZmYwZjY3N2FjMTdhMDYzOTZkZGFhYjc4NGM2MDZkYjEgbGVnYWN5LXRydW5rCis1NzMwIDhjNThhYjdhYTcxZWYxMDFmMzMzZjVkMzgyOTg4ZjMyNzQ1Mjk3ZjAgbGVnYWN5LXRydW5rCis1NzMxIDJjMWUzZTg3NTEwOTk2ZmIwM2JmNjNlNzYyZTFlZTBkYWM1YWU0MzMgbGVnYWN5LXRydW5rCis1NzMyIDJmODM3ZDgyNDEyMGQ4OTJjZGY4OGI4MTJlODg5M2MxOTM2NzMxZmIgbGVnYWN5LXRydW5rCis1NzMzIDE1OTc3NGFmMmVkZTY2YzBjMDkyMjhiMzU3NjZhOWFlMWJiMGE2ZjQgbGVnYWN5LXRydW5rCis1NzM0IDhlNzMzZjkyZWRjMDkzNGY4MzdlZjRjZWQzZWY5MzI4NTEwYzk3NzAgbGVnYWN5LXRydW5rCis1NzM1IDdlYWMwMmE2MTc2ZWRmMjgxYzVmNDUwNzVjMDY3ZTYyNzNhZmZmYTcgbGVnYWN5LXRydW5rCis1NzM2IDExNzYxOGRkMGU3ZjUzMzA0MGY4ODkzZmFkMzJlYzVlMTgyZDc2NjAgbGVnYWN5LXRydW5rCis1NzM3IGIxNmZjZDEyNmIxYzI0ZTZlOTk3MDg4MTYyMTBkYmNiNjEwNThiZmEgbGVnYWN5LXRydW5rCis1NzM4IDAzMTdhYzUyMjYwNTgxN2M2ZmUxNzUzNmFjMjUzOWRlNzExODViYjUgbGVnYWN5LXRydW5rCis1NzM5IDYxMjI3MzBiNzk4ODUxNmY0NmFlNTM4ODdkOWQyYjBjNTMwZDNjN2MgbGVnYWN5LXRydW5rCis1NzQwIGY5NDc4M2I5YmZiYWI3ZTE2MDk2YTgwMTI3NDI3MWI5MWM4YTgzMzYgbGVnYWN5LXRydW5rCis1NzQxIDk3NWNjZmE3MjFmNmJlYWY0NTM5NzUxOGRmNDkyOTVjMTA5ZDc2OTcgbGVnYWN5LXRydW5rCis1NzQyIDNhODNjMDE3ZGYxZWNhOTU1ZWEzMWI0OTIwNTAyMWMzODYzZWU1NmMgbGVnYWN5LXRydW5rCis1NzQzIGYxZmIzMjZjN2UyZmUxYTA4ZWM5MzQ1MDZkYjQ3Y2JmYjYyYWQ4N2UgbGVnYWN5LXRydW5rCis1NzQ0IDM2YTE4NDg5NWViOTgwYTZkOGVjM2MxYWI4ZWExNjk2N2EyZWMyMWIgbGVnYWN5LXRydW5rCis1NzQ1IDQzYzVlN2EzZmMxZmI2MmFlMzY3ZTk2ZjVjM2FjNTE3NWI5MTEzOWMgbGVnYWN5LXRydW5rCis1NzQ2IGE4MDY1NzYyYTM4ZWEwMWM1NTZmZjRiM2E5MjEyNjcxMTkxM2M4MGMgbGVnYWN5LXRydW5rCis1NzQ3IGY4YTA3MTcwMjRmZTRiZjdjMzdiOTg5YmM3YzU2MThmYjcxODgzZjggbGVnYWN5LXRydW5rCis1NzQ4IDg3MWM3NjhkMGRhMjIwNzcyMzJkYmVlMTI1N2ZjODIxMWQ0NzdhMjggbGVnYWN5LXRydW5rCis1NzQ5IDZhMThjNGNiNjhkODQ0YzZlYTdiNmZjYzljZjNlNjhjNmEwY2M0ZTEgbGVnYWN5LXRydW5rCis1NzUwIDlmYTJlMjE4ZTJhODRjNjhhYmY2Y2JhM2U5NTJmMDY4NzgxMTAyNmUgbGVnYWN5LXRydW5rCis1NzUxIDNhMGY4NGM2OTA1MGEzYWIyZjhkMzc1MmVhMDA2NzE3OWQ3MmM4ZGUgbGVnYWN5LXRydW5rCis1NzUyIDIxMmVhZTViOTY2MGI1OGUzMWNmZGIzNTUxZGYxNmQyZjFiNmE4ZDggbGVnYWN5LXRydW5rCis1NzUzIDZkNGY3MTQzMDcyMmI1ZWRhZDc2YmQxNjE5MTJiNmU1NmI0YTk1ZjAgbGVnYWN5LXRydW5rCis1NzU0IGUzOGMwOWQwMDgwNjhjZmY4ZmZjMGExYTMxNzQ0MjJlYzliNmYxNjYgbGVnYWN5LXRydW5rCis1NzU1IDI4OGUzMzdmNzNlN2U0MzY4YzcwOGVjNTczZWMxZTY2YTdlZDBhYzUgbGVnYWN5LXRydW5rCis1NzU2IDY2ZjRiZjk0NjI3ZmVlMDg4OTUwODc1OGQ0YzI1YzMzYWE5NzI4ZWIgbGVnYWN5LXRydW5rCis1NzU3IDNmNDU1Nzc3ZmYyODQxYWQ1ZjNhMjIxZjZmZDQzY2IzYjc5ZDNlMjYgbGVnYWN5LXRydW5rCis1NzU4IDQ1ZTQ0NDU0N2U1YTM1ZThmZjAwMzNhMTFmMjM1NWVlYmJiZmFiZDIgbGVnYWN5LXRydW5rCis1NzU5IDcyMzU3OTc4ZmZkMjJhMTg1NjM5NTYzZGFlYjA3YTU5OGU5MDdkNjIgbGVnYWN5LXRydW5rCis1NzYwIGJhZmMxMDViYzdjZDk5YTUyYWQ5YTUyY2RkMThkZmNhNjJkMzUzZGMgbGVnYWN5LXRydW5rCis1NzYxIDJiZGRmYjNjZmNmMWFhOGQ4MTFmZGY0MWM1NjM1ODI3MzA1ZWE5YzcgbGVnYWN5LXRydW5rCis1NzYyIDNjYTExMWUwYjFhNzY4NzdlNGRlNjg3Nzc4YmZlZDI1MjY3ZTBiZmUgbGVnYWN5LXRydW5rCis1NzYzIDBkNmI2MGI3NDgzODRjYWYyMTNjODVkYjhiZDEzMDU4MTBlM2YzNTcgbGVnYWN5LXRydW5rCis1NzY0IDU4ZWY0YzQ5NWRlNzYyYzk0NmI4NDIxNDFjNzI0MzYzNmMwMTEzMmEgbGVnYWN5LXRydW5rCis1NzY1IDlhNDA4MTQ0MDc4MzAxOGZlZjJmNTZmNmY2YzI0NWEwMmZiYjY3YmMgbGVnYWN5LXRydW5rCis1NzY2IDQ3NzYzYWM0NGM0ODZiNzI1YjRkYzMxZGZkYzQ0ZDkxZDA2MjE4M2EgbGVnYWN5LXRydW5rCis1NzY3IDk3Y2Q1NzcxYzIzZTI1N2QyZTU3MzlhOWE0NTIwNTI2ZmViYzZiNjYgbGVnYWN5LXRydW5rCis1NzY4IDdmNWI0MzJiODdjNDhjNjM1ZjI5NGQxNjBlYTcwZDkwMjUwZjU4OWMgbGVnYWN5LXRydW5rCis1NzY5IDU0ZjA2Nzg3NTdiMDBmNmUzMmM3ODc5MGFhNjJlNzljNmMzMjAwZDcgbGVnYWN5LXRydW5rCis1NzcwIGQ0ZDVjOWZhNzg1OTJhMTZiMzU2MTBmNjA5OTk2OTNhYmMyZGIyZTAgbGVnYWN5LXRydW5rCis1NzcxIDhhNTA5N2U5ZDdlZTJmMzZjNjc3ZWEwZDMwNzk1ZTkzZjUxZjE5NDAgbGVnYWN5LXRydW5rCis1NzcyIDgzZGFhNTRjMTgxZGQwYmNjMDE4MjE3ZjY1Njg1ZDdhNTMyODQ1ZDMgbGVnYWN5LXRydW5rCis1NzczIDE0MGQ4MjM5YTQ0NmU4ZjMxYzRkYzBhYjk3NmZmYjY2MWQ1ODdjMDQgbGVnYWN5LXRydW5rCis1Nzc0IDEzYjI0ZDEwMzRiZDNiY2M3MGNmNTA3ZmVkZjNkOTM5M2E0YTU5YTUgbGVnYWN5LXRydW5rCis1Nzc1IGU1MjQ2NTcxZjBmZGNhYzdkODQxNmVhN2M4MDNiNzMzMGI4OTRiMTggbGVnYWN5LXRydW5rCis1Nzc2IGI4MjhiY2NkYTE4OTgzNWNmNzhkMGI4MmM0MTJhMzVkZGMwOTEyYWEgbGVnYWN5LXRydW5rCis1Nzc3IDYwNGIxZmMyNmQ2MzNhODhlMDI3ZDBhZWI5MjU4MDA2ZDgzOTdmYjcgbGVnYWN5LXRydW5rCis1Nzc4IGRmMGQwMDkxNjJiNjc1MTg3MWJmMDU4YjMxZmI2NWJhMWJjNzMxZjIgbGVnYWN5LXRydW5rCis1Nzc5IGMwNjY0YmU3ZjY2MjRiNmNhMGY4NWU2NThlNDk0ZjgwODY1MDc1M2YgbGVnYWN5LXRydW5rCis1NzgwIDY4ZmRjNDBhZGQyY2IzZjU1ZDFhZmIyNTliMDllMTQwMzRmNzE1NjUgbGVnYWN5LXRydW5rCis1NzgxIDU4YTY3MzIyYzg5NjBjZDMzOTVhNTVkMjE5NDlkMjNjYzgwNWYxYzcgbGVnYWN5LXRydW5rCis1NzgyIDQ0ZjQ4YWFjYThiZmY0NTliYzIyZjM0Yjg0ODM2NTg4Y2I1NzNlMDEgbGVnYWN5LXRydW5rCis1NzgzIGU1ZDFmMjQyZGFmOWMxNjA1MWRmNDM3NTBiODdjMjRhYjNhNmQ2OGYgbGVnYWN5LXRydW5rCis1Nzg0IGU0ZjU3ZGQzZDI0NjUzOTU4MzRiNGZiOWNhNDc3ZGIyZDgyN2VhMWUgbGVnYWN5LXRydW5rCis1Nzg1IDhiOGQ2MGZiZTNiZjk1YmUzMjQ4M2FjZjQwMzdlMWY2ZThjNTYxM2QgbGVnYWN5LXRydW5rCis1Nzg2IDMyYjRlOGFkZWJlYjg0Zjc2Y2ZmNDQxNDgxYzk5MmQ0YzljZTQzMjIgbGVnYWN5LXRydW5rCis1Nzg3IDRlNmQwYjI2ZWZhZjMyZWI3NzdiODVhODA3NDFhMmYyMGUzNmQyN2EgbGVnYWN5LXRydW5rCis1Nzg4IDhkZGRhNjZkYmYyYzg5MjZmOWU0MTg5M2VhNzA2N2UwNGEzM2I2MjYgbGVnYWN5LXRydW5rCis1Nzg5IDU5NjM0N2RiNmE2OGY3OTc2NmIzNjA0ODg3NjYwYjUwYzVlNGY2MzEgbGVnYWN5LXRydW5rCis1NzkwIDYwOThhYWE4YWU3ZmJjZDkyNjI4YTU5OGI5ODQ1NjQ2ZDM4MTY5YjEgbGVnYWN5LXRydW5rCis1NzkxIDM2OTIwYmJkODFhODM0NDE5NDNmOWUwOWZhY2YyZjRmZTM0MGI1NzAgbGVnYWN5LXRydW5rCis1NzkyIDg5NTE0NDI2YjliOGU0YTIwODUzOTdiOTIwMmExNjI0NGQxOWQ0NDEgbGVnYWN5LXRydW5rCis1NzkzIDFlYWI4NDk1NDYyZmI0MDJiOTE0MDIxNDhlNzg5NGU1ZWU2MzJlMzYgbGVnYWN5LXRydW5rCis1Nzk0IDQ5ZjdhNGExZjBmNmNlNzdjNWFmYmU4MDk3NzdjZWNmMzllMmE4YzMgbGVnYWN5LXRydW5rCis1Nzk1IDRjNjU1MTE1ZGZjZTdkZmU0MWE4YmRhZjI4YTBmYTRkOGQ3ZDQ2ZDYgbGVnYWN5LXRydW5rCis1Nzk2IDY3ZDM0N2MzMmZmZmI4Yzk2MzYxNWY3OWQ1MTQ5MTkzZWM2ODgxNGUgbGVnYWN5LXRydW5rCis1Nzk3IDlmMWI2ZTJkYjhlMDEyYzM3ODIzYTQ1NWI5Y2ZlMmQwYTJkNTgyYmUgbGVnYWN5LXRydW5rCis1Nzk4IDBkYTI0ZjFjM2RkZTZkYTRmZGM3Y2QzMzcxOTdkZDcwY2Y2YmVjNTggbGVnYWN5LXRydW5rCis1Nzk5IDk1NjQzYzBiMGMwZWIwODJiMTZlOWNlYTU2MzRiZjZmYmViODkwOGIgbGVnYWN5LXRydW5rCis1ODAwIDRiNWJmZjk1ODA0ZTcyYjc3OWNhYTRlYWE0ZjU3MDFkM2JlMmRkYWQgbGVnYWN5LXRydW5rCis1ODAxIDk2OWJkOTExZTExNGZjZjMyZWE0ZDM5ZTNjNTdlOTgyYjM0MTRmNmUgbGVnYWN5LXRydW5rCis1ODAyIDliZDFlNDFkNmIxMTZhNTVhZDczZDU4ZmU5NjNlYTgwYzFhZTlhNjkgbGVnYWN5LXRydW5rCis1ODAzIDI0OTdjNDNmNDk4M2RiY2M1NmY3MmIxNzUzOTIxZGJhYzY3YWMzMzUgbGVnYWN5LXRydW5rCis1ODA0IDIwMWRlODQ1NWMyYmM5ZDFhMjcyNmQ0ZTJmZWIxNGQxNWQzOGIzZjQgbGVnYWN5LXRydW5rCis1ODA1IDJkYjU4NWVhMjE4YmZkYWNjODIyNzAwNzRiNjRiYTNjOWY0YmUwZTUgbGVnYWN5LXRydW5rCis1ODA2IDE2Y2IwNDczMjI0Y2Q1MTdhM2I2YzlmZjU1ZmUzN2E3MWZjYjkyMmIgbGVnYWN5LXRydW5rCis1ODA3IDkxYzNlOTgyMWQwYTBkOTQxZDQ3OTUzZTQ1YTAzZjdmZWY3ZjQyNzYgbGVnYWN5LXRydW5rCis1ODA4IDM2NDE2MTQwMTA1YTI5NDNiZDQwYTUyZWFhY2U1NzY0NzY3ZjU4MDEgbGVnYWN5LXRydW5rCis1ODA5IDAwNDUzNjEzY2Q0Yzc3NDkyYzRhOTJhYzlmYzgxMDYzMDJlN2JlNGUgbGVnYWN5LXRydW5rCis1ODEwIDAxMjM3NmQzYWExNDdiMDJkMjYzZTA1ODI4NjQ4YTZmMTRmMmQyYTMgbGVnYWN5LXRydW5rCis1ODExIDNiNDg0ODEyYWNmNmUyZTE5N2ZmZDgwZTIzZjY2MzVjYmY3OTRjMDIgbGVnYWN5LXRydW5rCis1ODEyIDE3MDlkNWZlZDUyOGU2YWViMWVkNTIwMDRkYTIzNDNmZjk3NzAxOWQgbGVnYWN5LXRydW5rCis1ODEzIDU2ODk3NzYwZTk1ODcyNTc0ZTYxMmFiODQyY2Y1Y2Q2ZDM5YjY3ZTQgbGVnYWN5LXRydW5rCis1ODE0IGZhYTIxY2UxZmYwMWRjNzkzYWQ3YTcyOTUyNWEwNjgzYTIzMmVlNTUgbGVnYWN5LXRydW5rCis1ODE1IGVmZGRlMWQ3NDI0YjkwNDZhZThmODgzYTE0ZGU4YmM4ZTAzNGUxNzkgbGVnYWN5LXRydW5rCis1ODE2IDgyMDk5OThkNjY5ZTE2YTA4ZmNhNDljYmU3YWEyODlmMTQ2ZDgwNGEgbGVnYWN5LXRydW5rCis1ODE3IDJiZTBiZGUzYTA3MThlMDM3NDgwODk4OTg2OTUzNDkyZjgxODBjZGIgbGVnYWN5LXRydW5rCis1ODE4IGFlMDA0YTQ1MDUwZmRhNDQ3MjdkYmQ3MzhiZTYwMzUzMGM0OTI2ZDggbGVnYWN5LXRydW5rCis1ODE5IDgxZjQ1ZjY5Mzg4ZTJkZTdiZTRmMjU1ZWNiNmQ4NzE4YmQ1M2FkMGEgbGVnYWN5LXRydW5rCis1ODIwIGY2YTg0MGU4M2QyYTUyYjhmNDhmYzYwZThlNTE4ODliNzUyMjllODYgbGVnYWN5LXRydW5rCis1ODIxIDBiMDIxY2Y0MWRkYWMwYmIwYzJhYTBiNzU0ZThjY2JiYzE5ZTU1ZGEgbGVnYWN5LXRydW5rCis1ODIyIGRkYjQ1MTBlZWI0NjgzNTFmYjhkMGY2ODZkZGFmMTkzM2ZmNjg1NjIgbGVnYWN5LXRydW5rCis1ODIzIDZkNzYyYTJmOWI2OWQ2ODAzMzU0NjNkNjgxNDA2MWIxMmFmMmQyMGQgbGVnYWN5LXRydW5rCis1ODI0IDFhMTdiYTUwYmQ2ODE5MTc3MjY1NDNkYTg4MzgzYWY3MWU4MDUzZmUgbGVnYWN5LXRydW5rCis1ODI1IDIxZDg5Njk4MzI5YzZiMmIyZmU3ZWQ4Njk0NTA2MzUxZjE1YjVmMWEgbGVnYWN5LXRydW5rCis1ODI2IDA4OTg1NDMxNTAwYjcxNmVkMzAwOTkyOWI4Yjk4N2E3YTQ4MGMxMzUgbGVnYWN5LXRydW5rCis1ODI3IGUwZWYwMDliMjcwMjIzZjIyNzI1NjBkZTEwODMzZjFhODAxMjRhYmQgbGVnYWN5LXRydW5rCis1ODI4IGUyODEyNGJiN2ZhYjMxOGIxZmZmOGRmNTgzZTQwNDcyNTA4NTA4OTEgbGVnYWN5LXRydW5rCis1ODI5IDZjYTk3ODdjZDNhYWEwZjU2YTNlNWFlZmQ5YWE3NWY2NTdlNjEwYTUgbGVnYWN5LXRydW5rCis1ODMwIDM2OWIzMGY3OGQ2M2ZjZTVhNzBmMDIyNjU1ZjBjZmRlNTM5YTViOWEgbGVnYWN5LXRydW5rCis1ODMxIGJjMTdlODMxM2VhMDZiYjRiMTRlNGI3NjU2N2EzY2YyMmI1Nzg0MzUgbGVnYWN5LXRydW5rCis1ODMyIGY4ZmYyODMyOTk3MTYyZDVmYzJlOTY2YjY1YWIxMThlOGFhNTZjMzIgbGVnYWN5LXRydW5rCis1ODMzIGMyNTg2NTg4NDY0OTU4ZDQ4NGU2ZjQwM2EyMDM3NjM2MjRhYjg0MmMgbGVnYWN5LXRydW5rCis1ODM0IDRlMWFkMjQ0MTBhNzExNmZjZjRiNzk0MTYxZTkzYjgwOTRlZDgzZTQgbGVnYWN5LXRydW5rCis1ODM1IGFmMWMyZjM2ZGMzNDg2OWU1MGNhMTlkNGRjZjQ2NTI3M2E4YzE5ZWIgbGVnYWN5LXRydW5rCis1ODM2IDNjZjJkOGEyZDc0YjEzZDc3NWQ1YzBkNjE3M2IxZTdiMjVkMDk5N2MgbGVnYWN5LXRydW5rCis1ODM3IDA1MDg0ZWU1NGU1NDhlMmNiODQ0NzdjN2YyZjE0ZGJmZGYxYjliOTQgbGVnYWN5LXRydW5rCis1ODM4IDZiMGFmNzhhOTBlNWYxMTE4NzIzYTk4Y2Y3N2EzNWQzNmZkNTIwYjIgbGVnYWN5LXRydW5rCis1ODM5IDM1OTA4ZTM3NWQxYTZmOTlmYTIyMTk4NWNiMTZkMzg5ZjVmOTA5ODcgbGVnYWN5LXRydW5rCis1ODQwIGZlMTk4ZGVlMDY0MDg2MjdlNzNjNjZmNzJiMTM5OTI5NWZlN2Q0MDkgbGVnYWN5LXRydW5rCis1ODQxIDBjODgyMWJmNmRiNTY2YWJkNzMxNDlkODBhZTkyYzIzNGU1Y2IwNTAgbGVnYWN5LXRydW5rCis1ODQyIDI4ZjQxZWM3YzVjYzQyMzU1OWY1YWY1YjQ3OGE1MmRhMjU1MzAzZGMgbGVnYWN5LXRydW5rCis1ODQzIGUwODYyZjA1ZTE4NTA3N2VhZjAzMTQ0NTRhMjcxNDNmMmRmYjBhMDIgbGVnYWN5LXRydW5rCis1ODQ0IDgyNzMzODY5OTA5NDQ0ZDQ5ZWE2N2QwOWYyNWU4M2E2Zjg2YzNhYmEgbGVnYWN5LXRydW5rCis1ODQ1IDZhM2ZmYzFkYmI5NWQ4OTcxNzAyMzFhYzNhZTQ1NjVkMTVkODAwZWEgbGVnYWN5LXRydW5rCis1ODQ2IDA0Njg4OGRhMWY0NGE2ZjUxMTNjZGYyYTVlOTg1YjRiODlmODg0NjggbGVnYWN5LXRydW5rCis1ODQ3IDJlZTFmOTIzY2IxOTMyMTZjYzJlZDEwMjY0YmUzOWRjOTNkMmIxZjkgbGVnYWN5LXRydW5rCis1ODQ4IGI3YjJjMTNiNWUzMzI4NjBjZmJhMWJjNmRkZmViYmIxMzllYTVmZTQgbGVnYWN5LXRydW5rCis1ODQ5IGE0NDIzNWU5OTRmMzdmNDk3YzdiNmIyMmQxNTM5OTNkYjEzOTIxODUgbGVnYWN5LXRydW5rCis1ODUwIDkyZjExYWVmYjVjYTM1ZjQ0MWRjYjM4YTk1NTBlMGM5ZDE2MmE4NWUgbGVnYWN5LXRydW5rCis1ODUxIGM3MWE3YTRmNWY4ZWE1ODI1YTA3OGFjYjNkZjVmMDcwYmRhZmQ4ZDYgbGVnYWN5LXRydW5rCis1ODUyIGQ1NTMyYTcxYjQ1NGI2YzMyNDllODFlYTIwMDIzZjEwOTU3MTI3NTggbGVnYWN5LXRydW5rCis1ODUzIDZmNWZlYjNiNDgyOWY5OGMwN2Q0YTU3MjI3OTVlMzk5NmQwMzA0ZTkgbGVnYWN5LXRydW5rCis1ODU0IDlmYTIyMjhiYjA5NjIwZWJkM2RkODIwNmQ4YjRiYWY4YWYxOGFmN2EgbGVnYWN5LXRydW5rCis1ODU1IDE2OTZmYmYzMDJiNjNmZDFkNjFiNzI0Yzk1NTAzYmIwZDU0NTQ1ZmYgbGVnYWN5LXRydW5rCis1ODU2IGQxNWQyOWJiYzFjZTExZmNkYzhmNTU2YmEwMzViYTUzYWYwOTdhYzEgbGVnYWN5LXRydW5rCis1ODU3IDgzMmYyNmQwZTA2OWY2ZDU5ZWNjZjMwNWM5ZWJhZjEyODNmZTY5NTMgbGVnYWN5LXRydW5rCis1ODU4IDFjMDBkMjg0NmU4NDlmNjk2MjVjYzZiNzIyNzlhYzA1M2FlMzk0YjQgbGVnYWN5LXRydW5rCis1ODU5IGFkYTIyMjU4NTM2NmU2ZjU5MzRhOTljMjNhNzZkNGRjYmIxNGNiODEgbGVnYWN5LXRydW5rCis1ODYwIGQ5YTc5OTc3YjM4ZDQzOWVhM2YxMzk0OTViNWQyN2E4YmY4YjM4YTkgbGVnYWN5LXRydW5rCis1ODYxIDRmZWE2Y2Q5NGRmYTRkNTkyMjNkZWI1ZjhkZmUwMTI1NDg5MWVhNGIgbGVnYWN5LXRydW5rCis1ODYyIGY1OTg2MjMwNTBhMzk4Y2EzYjIyODJjZGEwYjI5MjNhMjIzZTE3OGIgbGVnYWN5LXRydW5rCis1ODYzIDU0NjRmYjJkMTI5ZTUwODE5MjE5OThiMTg5M2Y1MWMzMTdjYTE4OGUgbGVnYWN5LXRydW5rCis1ODY0IDVkN2ExNWRmNzE1NTUyNTY5NmVmZmMzMDNiYWE5NGQ3NTU1NjdkYzggbGVnYWN5LXRydW5rCis1ODY1IDQwOWE4OWM1ZjY2ZDUyYjIyYjRlN2Y3MWE5MDlmOWRmODJkYzBmOWMgbGVnYWN5LXRydW5rCis1ODY2IDAyNDM1ZmQ5NTI3N2M2MmQyYmY0ZDcyOWEzYjU1NzZkOWRmNjFlNGMgbGVnYWN5LXRydW5rCis1ODY4IDExNmRiNzM0N2QwMWM0YzZlNWVlMjFlNGMyOWE1M2RjOWZjYmM0ZmIgbGVnYWN5LXRydW5rCis1ODY5IDFkZjhmNWE4YjIxNmQxMTE1NTdlZGY4MGJkZTg2ZWExOGJkODg4NDcgbGVnYWN5LXRydW5rCis1ODcwIDUyZGNlNGNkYzkzMGUwMWE4ZTI4OTdlYWM5NjhmYmM0NTljNzI3MmYgbGVnYWN5LXRydW5rCis1ODcxIGJhODNkZDQ1ODUzMzExODU1MWE5ZjNmMmM0NDg0NTRjMzZkNDc2NTEgbGVnYWN5LXRydW5rCis1ODcyIGU5OTRlNjdiY2I5NTAwMWRmZDllNDg1OWI3OGEyNjhmMTI0MDFlMDIgbGVnYWN5LXRydW5rCis1ODczIGMyODM0NDdiOTg1ZjUyZWE0N2ViMDA0MWU5NDczOTk5MGU0MTJmNTIgbGVnYWN5LXRydW5rCis1ODc0IDgxMGU2OTBhYTYwMmIwMzI0NjcxZDViMWVjMmY5MmU5NTg1NzQxYmIgbGVnYWN5LXRydW5rCis1ODc1IGYyNjE0YWM3MzVkMGMyNmM2MWE4ZDc4OGZmM2Y3OGQ5MDZjY2JjZjEgbGVnYWN5LXRydW5rCis1ODc2IDM5N2U2ZDUzYTdhZGU1OGJiOGM5MGZhYjNiNmNmYWYyYWJkMzhiYzEgbGVnYWN5LXRydW5rCis1ODc3IDI3NDA2YzM2ZThiZDQ0OWU3ODhkYjc1MTMwMTE0NTQ3OGNhN2U4MmIgbGVnYWN5LXRydW5rCis1ODc4IDAyMjQ3NGFjMjQ1MWU0OTAwNmZmZTA1NWJkM2U0NWJkYzRiMzBiMmUgbGVnYWN5LXRydW5rCis1ODc5IDE0OTkxYzQzMzFkZjA4NGRiMTQ0YmZlZGM1OTQyMmM1MWE5YTNiMzcgbGVnYWN5LXRydW5rCis1ODgwIGY2YmRkYTM3MGNiNzRiMGZkMjNlNjc1ZDc2MmE2YzdkZDM3OWYwM2IgbGVnYWN5LXRydW5rCis1ODgxIDJmZTdkNDg5NjU0ZThhZDVjNTczMWMwMGM1YzBmZGExOTRlZTYwOTYgbGVnYWN5LXRydW5rCis1ODgyIDA5OGNiZDZkMTk2ZTRmN2ZkYzlmYTg4MWJmYjU2N2E0MTM3OTVjNzIgbGVnYWN5LXRydW5rCis1ODgzIGY2YTZhNjk5MjdmZmVmMjE1M2YyMGVmNjJkZWZjYWFiNWU0OGE3OWQgbGVnYWN5LXRydW5rCis1ODg0IGI2YzBhNDFlNGE0NjU4MGMyZDAzM2Y2OTQzMmVhYzkxNTIxZjA2MTEgbGVnYWN5LXRydW5rCis1ODg1IGUxZGY5MDIwNWEzMzM5MzZkOTY2OTFlYjc0NDQ0NmIwNDNiYjg4NjEgbGVnYWN5LXRydW5rCis1ODg2IDBhYzVmYmFmOGFlZjhiYWFjZjQ5MTZlMzYzZTI0NTM4NDFiOWQ0MjUgbGVnYWN5LXRydW5rCis1ODg3IGUwNDVmOTEzMmIwN2JjYmRhZTkwMzZjOWFmZTRhOTBjNDk1OTRkNzAgbGVnYWN5LXRydW5rCis1ODg4IDAxM2JiZTRlZjk0MzdhYzU4MDkwZTAxMTMzMWQ1ZjFkYjE5YzU4NTggbGVnYWN5LXRydW5rCis1ODg5IDkwYjU0MzEyNjYxYTM1MDM0ZTc2NGQxODM2NTRmYmY1MTJkY2Q1ZDIgbGVnYWN5LXRydW5rCis1ODkwIDY3ZjVkMjlkNDA1YjJhOTBmNzAxN2YyZmE1ZGQ0YzYyOGRlNGRhOGEgbGVnYWN5LXRydW5rCis1ODkxIDAyYzlkYTIwYjQxZTY5MzY2ZWUyY2JiNjQ2YTY2MDVjY2Y0YjhkNTMgbGVnYWN5LXRydW5rCis1ODkyIDI0YmVlMzc4M2IzNWYzZjRjOTBmZTA2MzM0YjYxZDI0MWUzMzAyNGMgbGVnYWN5LXRydW5rCis1ODkzIDIzMjU0ZGFhMjQ3Yjg3NTMyMmM4MmMxMDZkZDJjMzliODBhZGViZjQgbGVnYWN5LXRydW5rCis1ODk1IDY0MDJiZTI2ODljNTc5ZDJkY2JiZWFjMjRhY2RlNDc5ZDVjYjM1YjUgbGVnYWN5LXRydW5rCis1ODk2IGFmNWZmNTIzMWQ0YTFkNGFiZjcwYjRmYTUxMGY2ZTYwNWVhYTZhYzQgbGVnYWN5LXRydW5rCis1ODk3IGJhOTgzMTQwNzE4YWE0N2NlODBhODRiNDE2YjExMWZhMmMyNWRiMzcgbGVnYWN5LXRydW5rCis1ODk4IGRhODZiM2I1NDM2M2NjZDQzZDkwZWE4ZmRiOTQwZjQ4NjVjNDkyYjAgbGVnYWN5LXRydW5rCis1ODk5IDU3ODQ2NjhkMDU3NmJmMTJjYTkzNzMwM2JjZTIyOTk1ZDY2MmI4NDkgbGVnYWN5LXRydW5rCis1OTAwIDI2YmVjOWUyMmU1ZDBmNTY1NDFmZDY5MTkyYzIzNzMyZDA3MDhkZjEgbGVnYWN5LXRydW5rCis1OTAxIDZhYmM3NWVjNmQyOTgyNTBjNjA3MWQxZWFjNmY3NDNiZWQyODE0YjcgbGVnYWN5LXRydW5rCis1OTAyIDU3OGNhMzAyYTU5OGMzNjZmODAwNDNlZmJjYzJmYzI0NWZiZDFmM2QgbGVnYWN5LXRydW5rCis1OTAzIDUyOWY0ZDljYmUzZDhlNzIxM2VkZDNhZGQ0OGFmNDdjZjFlMjRjMmYgbGVnYWN5LXRydW5rCis1OTA0IGY3MjA1MGRkNjFhOWMzZjdjZGQ5YjUxZTBmZjRhNGRmMzZiYjkwNmQgbGVnYWN5LXRydW5rCis1OTA1IGRiOWY2ZWRlNThhNzY2YzA5YmZkMTg3NTU4NGIxZGNiZGMyOTc1ZTEgbGVnYWN5LXRydW5rCis1OTA2IGQ3MDE0OTIwMmM5M2RjNjMyZTQxOTRlZGM3OGNhYTY2NGY2ZTcxMzMgbGVnYWN5LXRydW5rCis1OTA3IGQwZDFhMjFkNDhiMGFkM2NmN2NmYjgxNTkwNTBjNmVjMDBiZmI3MTQgbGVnYWN5LXRydW5rCis1OTA4IDFhZjFhZGNhODI0Mjc0OGE3Y2FiNTgxMzRkMzk4MDRjN2VmYmQ0YjMgbGVnYWN5LXRydW5rCis1OTA5IDNiZGU0YjU5YTVkMmUwY2JiZjM2MmVmNzdkODdlNDk4ZWVmNTkwODAgbGVnYWN5LXRydW5rCis1OTEwIDU1ODA4ZjYwMDljZGQwMjM3NWUzYjEzOWYwYmRjNGQ2NThiMDA1MTEgbGVnYWN5LXRydW5rCis1OTExIDA2NmE4YWU0ZDQwNjNhYjk5OThhN2YyNzFiNjIwMGM1MjBmZjBkOGYgbGVnYWN5LXRydW5rCis1OTEyIDFmZjEyODA0ZmYyYTc0NWVhOWJmMWQ5YWNlNTFmMzZjZTNkOTIzODMgbGVnYWN5LXRydW5rCis1OTEzIGU3NmNhMzRkNDhmM2VlZjMxNTUyOTA2YjEyODJjNzExZWFlNzMyMTEgbGVnYWN5LXRydW5rCis1OTE0IDA3OTc3YmYwZDk5NzBiN2MxYjlkMjZiYjJlMWVhMGVlODQ4OTc3NTkgbGVnYWN5LXRydW5rCis1OTE1IDYyM2JhOWJkZWIyMjE1MWM5MGQ0NTZiZDEzZjliYjYyNDM0YzM5MWIgbGVnYWN5LXRydW5rCis1OTE2IGRiNzZmZDM5MGY3NDlhMWZkMDU1ODJkYjA5OGJiMzQzNzJhZmExNjggbGVnYWN5LXRydW5rCis1OTE3IGY5MWY2MTk4YjI3NjhmNmE1MGRhNmU3YTIwYzM0Nzg2NmNmNjdkNmIgbGVnYWN5LXRydW5rCis1OTE4IGMzZTUxZWIxYzE0ZmRmYmNmOTNiMWJhYTEwZmMwNDgwZWJkMmJlODYgbGVnYWN5LXRydW5rCis1OTE5IDcxM2JkODM3NzM4MjBmYmVhM2Q3YWI2MTNmMGRiNjM3Y2JkODdmMzEgbGVnYWN5LXRydW5rCis1OTIwIDVhYmJjOWI1ZmRmMGIyN2FhMmYyMWI0N2UyMTY4ZDFkYWNlMWY5MWUgbGVnYWN5LXRydW5rCis1OTIxIGVjODQ5NDlmODFlZWRmOTNhMTI0NzMzMWEzZjhmZTczZjc3MmViMTAgbGVnYWN5LXRydW5rCis1OTIyIGE3YzI3Mzc2ODdjMjEyZTU1ZmFlNjFkNjdiY2U4MGM2M2U4ZjljNmIgbGVnYWN5LXRydW5rCis1OTIzIGU2NDZhZmM1MGFjNzNhOWEzY2ZjODc0NGQzNTZhMjc2YTU3MTQxOTkgbGVnYWN5LXRydW5rCis1OTI0IDE0NDRhMzUyNGVkZTA5YjA0MDdhMDlhYmJiMmMwYjUwYTY5OTJhOWEgbGVnYWN5LXRydW5rCis1OTI1IGRjYzU5NDkzNDk5YWU3MGJkMmRhMGM2MGRkMTU3NDAyZjc5ZGUxMDIgbGVnYWN5LXRydW5rCis1OTI2IGE3MWQyZmQ5MGZhODdiODRmOWIxNGNhNTNjMzA2MWEwMWQzMTgyNTEgbGVnYWN5LXRydW5rCis1OTI3IDQwOGRmYzcxODk1MThmMWQ0ZmE5NjAwMzg3MGQ4ZDc1ODRkNDg3YzYgbGVnYWN5LXRydW5rCis1OTI4IDcwNTIyZGIxMTAxOWE4Y2I3YzIxYjgxNjFjYWU0YTdlNmRlNjBlMWQgbGVnYWN5LXRydW5rCis1OTI5IDk3YjBlOTYyNWViMWQ1ZjgwZWJiNmY3MDRmYjU2NTE4YTI2NmNiY2QgbGVnYWN5LXRydW5rCis1OTMwIDgwM2ZiY2RjZmM5Zjg3Zjc0N2NkNDBmZjEzODkzMWRkNDdlZmYzZGQgbGVnYWN5LXRydW5rCis1OTMxIDhiM2YyYTg2MjBmNTRmYjhiNDU0Y2E1ZThkYTVhZjQ3YjliZjcxMTggbGVnYWN5LXRydW5rCis1OTMyIGQxOTY4YTdjYzYyMGMxNjEwMWNmNmNhZDE2M2ZlMWViMDEwNTM4MzggbGVnYWN5LXRydW5rCis1OTMzIDhkZDAxODhlNTJhN2M4YzU5YjhjZmUwMzI1YzFiMjFmODhlODI1MTYgbGVnYWN5LXRydW5rCis1OTM0IGYwYmFhZGJmY2FiZGI1MmRjYjZmMjBjYWJiMTA5Nzc4NGQwZGZiYTQgbGVnYWN5LXRydW5rCis1OTM1IDE0MjVmYzY0OTFlYmJmY2Q5YjJmYmM0NzI1OWRjNzQwN2Y3MDM1MjIgbGVnYWN5LXRydW5rCis1OTM2IDQ1MGY0ZDQ2ZDlkYmYwMTM2ZTk4YzczZTI4ZWJhZTI0NzhhZTNlYTkgbGVnYWN5LXRydW5rCis1OTM3IDYyMGFiM2RiMDc5MzRjNDE4MWJlMmU3ZGI5YjU1OTc0ZGQ1YmJlYmIgbGVnYWN5LXRydW5rCis1OTM4IGU5MDQzMjIzOTM1YWQzNGNjY2Y5MTRkNGEwYjBjOTFmZTNmNTk1ZjAgbGVnYWN5LXRydW5rCis1OTM5IGIzOGZkYjAwOGYxZGMzMWE5NThkYmMwNDE3MDA5ODk3YTY5NjY2YmYgbGVnYWN5LXRydW5rCis1OTQwIGFhOGFkZmRkM2FhMWUxZTlhZTViMmNlMmMyNTI4YmRkNzEyNmUwZDQgbGVnYWN5LXRydW5rCis1OTQxIDUwYWExNmY4MDlkNzYwMDMyYzA0MWZkNWQ0NjQxN2JlNjM2ODNhM2MgbGVnYWN5LXRydW5rCis1OTQyIGEyOTJiNzU4M2MwMTVhMjgyYTFlZjk2NjJjN2FmN2QwYzg0M2FhNTEgbGVnYWN5LXRydW5rCis1OTQzIDExMjk5ZTk1Y2FlODQwZDcwMTNiMDM2MGFjMTkyZmNjOTY3ZWZhMTIgbGVnYWN5LXRydW5rCis1OTQ0IDA3MzU1MGUzMTI3MzA3NDdmNTYzNDIxNDE1MzJiOTBjNzkwZmM4ZWEgbGVnYWN5LXRydW5rCis1OTQ1IDM1YzRhNDhkOWRhMTY5NGM1MGU2Zjg4M2E1MDkzN2U2YzE2MTIzNjMgbGVnYWN5LXRydW5rCis1OTQ2IGE0ZjAxZDQzZGFkNjk5MDE1ZDE2MDZhNGJhNWI3MzhlZDMwMzA4ZGEgbGVnYWN5LXRydW5rCis1OTQ3IDg5Y2FmZmQyYzA2MTQ4ODM1YzI4ZDQ2NDZlOWM2MzNjYjY4NzM3M2EgbGVnYWN5LXRydW5rCis1OTQ4IGFlYzhiYmNmOGIwZTVmMDJhZjgyN2RjNDkzZGVkYjQwYzNlZjYxZjQgbGVnYWN5LXRydW5rCis1OTQ5IDgyN2YxMWFkNjVkZjYzZGQ4N2Q5ZGE5ZmJhMjQ0YjUxM2Q5N2MxNmUgbGVnYWN5LXRydW5rCis1OTUwIGUyOTBmYWViOTJjODVmNzgzYjQzMjNkMDdjYWFjZDhmZDk2OTFmZDUgbGVnYWN5LXRydW5rCis1OTUxIDAwY2E5MDBjNzc0MmM1ZTA3MzQyNzY0MGJiMzM1ZmRlZTA2NmVkNWQgbGVnYWN5LXRydW5rCis1OTUyIGZlZDkzZDJkODhmYzQ2ZjljYjdlNjA1ZTU0MzJmYThjYzJiODg5ZjQgbGVnYWN5LXRydW5rCis1OTUzIGNlMjdlMDMyODQ2MmVkOTZmMzkwYzI4NmYyMjI0NWIxOTczYzEyOWMgbGVnYWN5LXRydW5rCis1OTU0IDYxZjE5YTdiMWZmMTA2YzY3ZTk1MzI5NjIxMDVlODVmNDlkYzNlYTYgbGVnYWN5LXRydW5rCis1OTU1IDAyYTIzZTZlNDE0YWZmZTk0NzlhOGRlZmM1ODE3OGYyZDk0NjY1M2QgbGVnYWN5LXRydW5rCis1OTU2IDgzNTU3MTUzZjU0NDc0MDEzMzNlYzVkMWJjYmYwMmIzN2FhYTQxYWQgbGVnYWN5LXRydW5rCis1OTU3IDJjMTc4YmY3MGY3ZWYzOWMxNzQ0YWY0YmE4NDMxOGM2ZTk4ZGE2ZDggbGVnYWN5LXRydW5rCis1OTU4IDNiNmViZjhkMmE1OWU2NjkwYzkyNmFkZDQ2NGNhOTliYWI4OTZmNzIgbGVnYWN5LXRydW5rCis1OTU5IDFkZmM1MTllYTNjYmU0NWZkN2YwMDRjM2NkMWI2Mzg1OGExZDRmNmIgbGVnYWN5LXRydW5rCis1OTYwIDE2YTVmNjA0ODQ2MWY4MzljY2UzNjk4NDk4ZjkyZDg2YjAyNTFlNzIgbGVnYWN5LXRydW5rCis1OTYxIDA4MTMwZjAwYzE4ZGI1MDNmNGUzOTVjYTJlNTVkMWM3NzkxMTlhOTkgbGVnYWN5LXRydW5rCis1OTYyIDAzYzZjMTgzMjVlYWNhOTYyYzMxODU3NTY0MjFjNjdlZTkzNzJmNDggbGVnYWN5LXRydW5rCis1OTYzIDE0MmNiYWJkZDk0NTU2YTMzYjU0ZmUwZWEyNDc0OGEwN2EyZTNiMzQgbGVnYWN5LXRydW5rCis1OTY0IGY3MGRiZTYwOGYwMzFmN2JhZDhhMWVlYzIwMWYxNThmODJhNGUxZWMgbGVnYWN5LXRydW5rCis1OTY1IDhkNDNiODMwMzQxYmI1NmFlZjFhZmIzZjA2YmI1ZmY1YTEzM2ZhOTYgbGVnYWN5LXRydW5rCis1OTY2IGQ2MjQ2YWViNGEzZjI3NDJlMmNiNWMyNTY0NzA3M2NmYzAyZDhmMWMgbGVnYWN5LXRydW5rCis1OTY3IGNkZWEzZjI3Y2Y3YzcwYjgyMDk0ZTY2NTJjNmMxYjUyZWNlZjkyMDkgbGVnYWN5LXRydW5rCis1OTY4IDVmMjUwNDBmZDYzZTZmNDBkMWU2N2M2YjZkNzQ3MTUyYTIwNGI3ZGUgbGVnYWN5LXRydW5rCis1OTY5IGVhZTcwZDdmMmVjN2M4ZTBhNWUxMWVjNTc3Y2RiZmI5MmE0Mzk3MjAgbGVnYWN5LXRydW5rCis1OTcwIGViNWI4ZDNkOGFjZjQyN2IzYmMzZWZlMTY2NTE4YWZmMjVkMTdkYjMgbGVnYWN5LXRydW5rCis1OTcxIDYxODk0YmE1NzFmNWE4M2Y1M2FjMjViMTA5OWM5Mzk1M2U1ODkxOTUgbGVnYWN5LXRydW5rCis1OTcyIDg5OWFlZmVhODAxYzk5YWUzNGI3NzU2YjAwNWRmNmU4ZTg4ZjZkZDIgbGVnYWN5LXRydW5rCis1OTczIGU4ZDUwMWM4OGEzZTNlOWJkY2Q2ZmVmODRmMWQwNGQ2OTgxMGNmYjMgbGVnYWN5LXRydW5rCis1OTc0IGY2YmQ1N2RiZDUyNGRlZWI3NTk5Yjc4YjM2YWI4YjJlMTY2NmFlM2QgbGVnYWN5LXRydW5rCis1OTc1IGQyNGY4ZDc5ZWNhMDc0YzAyMDM1Y2YxODJlY2JhMmQyYTEwOWFiZjMgbGVnYWN5LXRydW5rCis1OTc2IDQzMWU4ZDAxMDU0N2EyM2FjOGY3ODQ2YzJiYmZlYzZlYjc2N2RmMzIgbGVnYWN5LXRydW5rCis1OTc3IDZmMzYzYTQxNzY2MTE3MmZiMjQ4YmJkZTAwNGU3ZjdmZjcyNTExMWEgbGVnYWN5LXRydW5rCis1OTc4IDU1OGRjZTY1NTNkOTA1YmIwNjUwMTYyMjk5NjQwMWIzOTYxOThiZDcgbGVnYWN5LXRydW5rCis1OTc5IGExYzBjMmEzODg4M2ZhYmY3OWY0NjlhNzgzYzk3MDdiY2M1ZTQwODggbGVnYWN5LXRydW5rCis1OTgwIGM1ZDMwYTU2NDNiZWFlZWRmNTg2ZTdlOTVhYzNiMDE1YTJiYzkyOWQgbGVnYWN5LXRydW5rCis1OTgxIDJhMDk5ZmI3NjgyM2IzMmVjM2Q5ZjY2NzlkZDE4NTM3YmU1YWZmNWMgbGVnYWN5LXRydW5rCis1OTgyIDQzNjFhNWZmYjYzODI2MDJkZTNhMWNhMDZiYjRhYzZmYmU2ZGVmY2QgbGVnYWN5LXRydW5rCis1OTgzIDA1YWYyOWU4ZGYwZTc1NmY2ZTlhYmQ2NTRlNzliOWJiZWMwMjUxOWQgbGVnYWN5LXRydW5rCis1OTg0IDU2NmY0NmI5ZDcxMjZjOTkzOTk2ZDU1OWRiZWE0NGY2ZGM2N2M5MDYgbGVnYWN5LXRydW5rCis1OTg1IDc4NzlmM2IzOTYwNmVjZmJjM2M1N2YzNTQ0MmYzNDhlZmI2MDJmMmUgbGVnYWN5LXRydW5rCis1OTg2IDU0MmM4MGU2MjExMTRmZjJjOWY5ZjJhYzc5OWQ5ZTlhMGIzNDVhM2UgbGVnYWN5LXRydW5rCis1OTg3IDdmMjMwZDRmMzY1NWQ2NmUzNTM0OGQ5MmFlYTY5MGI5NjEzOGRlNGQgbGVnYWN5LXRydW5rCis1OTg4IDA1ZTg1MDU1NTgyY2I0YTMyZWUzZTE4NDk5ZDI2ODhmM2U3YjY4NDkgbGVnYWN5LXRydW5rCis1OTg5IDJiMmZjOWEwYjRlYzE2OTY4NjA2NWEyN2EyODNiZTAyZjk0ZGZkMWMgbGVnYWN5LXRydW5rCis1OTkwIGQ3ODAxYTc3ZmNkNTdiZjA0OWRlN2I0NTMzMjE1OTMyMzBjNzFkMGIgbGVnYWN5LXRydW5rCis1OTkxIDAxNDViOGFlMmQ1ZmI5ZmQwOGYyYTIzNjE5ZDBiNTIyYWMyMmFiN2QgbGVnYWN5LXRydW5rCis1OTkyIDkzOTk0NTE5MjAwMDM4ZWU3MjIzZTY3Mjc1Y2YxY2NlNzA3ZWQ3ZDUgbGVnYWN5LXRydW5rCis1OTkzIDQzYWY1MjNhMDBjYWZkNzA2ODY2MWJkYjcwMjViOGJiNzJkZTNiZjggbGVnYWN5LXRydW5rCis1OTk0IDczYmM0MWJlNzA3NGRlMzNhZTQxZjVhMTM2OTQ2YjFlMTY5ODA1MDkgbGVnYWN5LXRydW5rCis1OTk1IDg1NTJlMTdhZGE2OGExOGU4OGM3NDM5OGVmODA0ZTI3MzA3NDhlMDMgbGVnYWN5LXRydW5rCis1OTk2IDUxMGRiZmE4YzU5OTg3Y2ZmY2I0ZDBlNDgyNmM2ZWYzOWUyNzBmMTIgbGVnYWN5LXRydW5rCis1OTk3IGViODNlNGIwYzczMzc4MDRkMTAwNDFmN2M2MmZiMTJkNmE0OTU3OGQgbGVnYWN5LXRydW5rCis1OTk4IDUwZTViNGM1ODk1ZmM1MmY1N2FlMzQzMDM1YTVkMzkwMmEzYjFiNTQgbGVnYWN5LXRydW5rCis1OTk5IDI0ZmI5ZjRmODk4NGI0N2QxZmQ0NDU1ODIxMjQwYjJhY2FkZDhlZjYgbGVnYWN5LXRydW5rCis2MDAwIDM4ZTE0ODBlN2Y4OWRiZDY4ZTY3NzYzMDUwOTMwNmUyYWM2MzU5OTggbGVnYWN5LXRydW5rCis2MDAxIDcyOGQ1NzQ1YWU3Yjg2MmNkOTIyYTgzMjU2MWEzMmI5ZWEzODkzYzQgbGVnYWN5LXRydW5rCis2MDAyIGU2N2FkYzhiMmYxNjY3MjI1YjFkZTdlMTcyMWQwZDhmODZjMGVmNjcgbGVnYWN5LXRydW5rCis2MDAzIDIwYTEzZmNkYWU1NGY5MzAwYWY5NDYzOGM0YTVkMmNkNjc5MDljNDcgbGVnYWN5LXRydW5rCis2MDA0IGFjOGQyNGYxZGYwODI5OGE5MDdjYmQyMzJjZGY1NmFhMDJkM2VmMjkgbGVnYWN5LXRydW5rCis2MDA1IDgyMzA3MDcxYzY2NWU3YzRlMWNmNzIzYjE5YzdjZDlkMWM1Mjc4MTUgbGVnYWN5LXRydW5rCis2MDA2IDM1YmVjODhkOTczNDJhZjI3MTdjZWI1MTE5ZDI5ZDFlMmVkNTNkMGQgbGVnYWN5LXRydW5rCis2MDA3IDZjNTQxYzYzYzQzYTExMmY0OWFjZjFiNDQyNzkwODMwNGFjZWM3ZTYgbGVnYWN5LXRydW5rCis2MDA4IDVhZWM0OTExMTc3MjZhN2ZiYzRkMjI5MmNmMDQzZTBkMDAxYmFiZDQgbGVnYWN5LXRydW5rCis2MDA5IDJiMTY2YjIyMGMxMTNkYTc5OGM2ODljY2ExMGFlNTIxNWI0NjkxZjIgbGVnYWN5LXRydW5rCis2MDEwIDZjMjU4MDQzY2ZhYTVhODM1NGYwOGRjNTAxYWFiMDMzM2VhNDMwNzUgbGVnYWN5LXRydW5rCis2MDExIDVkZjJhY2JhMGZjNTAxOTYyYWEyN2M5ZTdmZjgyZjkyOWEwNmVlMzkgbGVnYWN5LXRydW5rCis2MDEyIDIyZDdmNTRjNTc5MjdlMzNiZjg2MmM1MjdjZmE5ZmY0ZmEyNzYzNmIgbGVnYWN5LXRydW5rCis2MDEzIDJjOTAwZGFlODc5OTM1YmNiZjA4N2FlM2Y2Njc1ZjFkYmRhNDQ3YTYgbGVnYWN5LXRydW5rCis2MDE0IDZmNTIzYmQwYTNhYmZmMjlhOTlkYTRhMzQyNjYzMTBkM2M2NzJmNDAgbGVnYWN5LXRydW5rCis2MDE1IDNmN2NkZjE2NjNmN2FmZjM0MTc2MzY2YWUwN2QwYzYxYzM4NjU0ZjYgbGVnYWN5LXRydW5rCis2MDE2IDljYThhZTcxYmJiMDhkMDNjYjUxZWQ0YmJhNDA1OGViMTQwNmY3ODEgbGVnYWN5LXRydW5rCis2MDE3IDA0ZWRmY2JiNzEyMTMwYTczYjU5NThkMmY2NmFkNDA5ODllZWExOWEgbGVnYWN5LXRydW5rCis2MDE4IGY2NjMwNmJjMDY2M2U0ZDI3YzE1NzRhZThiZmRjY2Q3Y2U4MTJkZjQgbGVnYWN5LXRydW5rCis2MDE5IGE5NWIzNTBhNDRkYWU3YWM3NmMxZDRlZjBkNmJlNjI4NDY0YTIxN2QgbGVnYWN5LXRydW5rCis2MDIwIGU4YTJhNWU0YzdiMDQ2MGI4NTdjZGYwOThmMTM2YTNjMjBhODlkNmUgbGVnYWN5LXRydW5rCis2MDIxIGM3ZTgwODU5NmQxNDFjMDIyNWE3M2QzNDM3MmFmZjNmMmY5ZTAzMDIgbGVnYWN5LXRydW5rCis2MDIyIDFkMDM1ZTIxMTIwOTY5MThhZDFjMDEwMmJkMWJhYzc2MjY1OGMzZjAgbGVnYWN5LXRydW5rCis2MDIzIDI0Mjc5YmFmYTgyODQyOTI3MmJhODI5NjAxMGEzYzhmN2QxOWNiNGQgbGVnYWN5LXRydW5rCis2MDI0IDI5YzE4ZmIxM2Q4ZjQxMmQxYzllMGUxODY2MTU0MzZjZTk5OWY2OTQgbGVnYWN5LXRydW5rCis2MDI1IDUzYzY2ZDE5ZDEyN2EzMzBmYTIxMTZiZDY4YTNmMWUzNWJjYTFiZmIgbGVnYWN5LXRydW5rCis2MDI2IGNlZTRhNmQ4NDE1ZWMxYmFmMmEyZjljYjhiODEyYzUwOGEwODE1NDUgbGVnYWN5LXRydW5rCis2MDI3IDA5OGI4OGQyNjBkMTJmYjA2NjY3N2QwMTU3OThkNWZmOTI3ODQ4ZGQgbGVnYWN5LXRydW5rCis2MDI4IDE4YTljNjI4MDU0M2I1MjI5Yjc3MWY2Njc1OTRhYTM1MTEyYzE3NjcgbGVnYWN5LXRydW5rCis2MDI5IGI4YjFiNmI5NzQzMzg3YzQ3ZTQ4YjMzMmQwMWFhY2I1NzQyZGYzMTMgbGVnYWN5LXRydW5rCis2MDMwIDkxODkzODcxYmEwNzQyMzQ2NjMyNTM3ZjQ5N2NlNmM2NzE0ODU0MmMgbGVnYWN5LXRydW5rCis2MDMxIDUyMjc4NDFjZmExZmI3MDRlOWMxZGY4MGRkOTUzNTFhYWFmODVlMWIgbGVnYWN5LXRydW5rCis2MDMyIDM1YjM1MzZmYjc2M2I5Y2Y1OWFlZTg3N2YyZjE2NGNiMTEzYzg0M2MgbGVnYWN5LXRydW5rCis2MDMzIDkxYzEwODIwNjlkODEzMjJkNGI4ZmQxNDgyZjA1ZTkyNTVmMzU3OTMgbGVnYWN5LXRydW5rCis2MDM0IDRjMGE1Y2EzMGY5NGE2NzRkZjk3YWNkYTVjNTkxY2E4MzAxZjZiY2IgbGVnYWN5LXRydW5rCis2MDM1IGFhMTExMmQ1NjY2ODNhZmRhNzRjYzg0MTkyYzlhOGZlNjJmMmY5NGEgbGVnYWN5LXRydW5rCis2MDM2IDZmNzE1YmZmMTdlNDgyMjk5ODc5NjI4MTdjZjNmMWU0ZWJkN2ViYWEgbGVnYWN5LXRydW5rCis2MDM3IDZkZTQ0ZDk2NjI5MjY1OWFlOTRjYTAxYmJhYjNmOTNkOGFjYmYxMjkgbGVnYWN5LXRydW5rCis2MDM4IDkyMmMwMDE2NWY3NjEyZmFkNzcxMDY0ZjE0YjA1N2U2OWViYjQ0NTEgbGVnYWN5LXRydW5rCis2MDM5IDk3N2ZmMWFjZTA3MDFlOTkzMTI1NzgyZDkzZWU1MTdlZWNlN2M2MjcgbGVnYWN5LXRydW5rCis2MDQwIGY2YjIxOGNlYzZiZWY2NDljZmVjYzZkNjc0NzdjYjI4ZTc4NzFmOTggbGVnYWN5LXRydW5rCis2MDQxIDZiZTM2NWE2NzNiMTRjMDNmNGQ1OGVhMWU4MGU4NmNhMWVmZWMwYTIgbGVnYWN5LXRydW5rCis2MDQyIDRjN2JhYjRjZGNhNmU4Y2MyZTA5N2RkYTNmYWNjM2IwYjM4MmQ1YTQgbGVnYWN5LXRydW5rCis2MDQzIDFlYzE1NDI0MTc0NzU3ZjBiNTdlOTgwMWM2Y2E3ZjZiMTdiMDFlY2EgbGVnYWN5LXRydW5rCis2MDQ0IGUyYjNhNjk2ZDY5Yzc1N2M1ZTM3YjA3MTY3N2I5OWZiZGYzZjRhNmQgbGVnYWN5LXRydW5rCis2MDQ1IDRlYzFjYWMzNDJkZGM3ZmUyNDVhMjIzZWNjZTdhMzJhYjEzMmFhNWQgbGVnYWN5LXRydW5rCis2MDQ2IDZlYzdkZjIwNjk3ZDA4NjVlOGU0NDBlOWNlYWJmMWZkNzc1NTBlNGYgbGVnYWN5LXRydW5rCis2MDQ3IDI2NGQxOTZiYzRjNmRlOGZmODk5NjJlYTY3M2IyYThkNDhhNDU0ZDIgbGVnYWN5LXRydW5rCis2MDQ4IGZkMTY2OWY4ZDg3NDNiYTY2MTYyODRlNWJlODI2NTk0ZjA2OTE3ZGEgbGVnYWN5LXRydW5rCis2MDQ5IDhlNjYzOTQ1ZTE3NDQ1YzU5MjQ5N2RjYjVjNzc1YzIxYzU5Yzg1OGYgbGVnYWN5LXRydW5rCis2MDUwIGVjOGY1Yjc1ZGY2NGRhY2FmMzAxNmFlOTRkZTg1NDExOTJjZDExMDAgbGVnYWN5LXRydW5rCis2MDUxIDZmNDViZWVkMzg3M2Y3MWNkYzBiM2U4OTY2MGNjMTNlMmE2YjQzOTggbGVnYWN5LXRydW5rCis2MDUyIDZhYjRjYmNlZGVjMjAzYjgyNzhhMDIyNDBmNDhmNTYyNGEyZDUwNTMgbGVnYWN5LXRydW5rCis2MDUzIDcyYWQyZjFlOTkxOWFmZWMxY2M3YmVhYjhkODk4NDFhYWY1NWFiMTYgbGVnYWN5LXRydW5rCis2MDU0IDRlZDA5YTNjMzIwMThlMjE5ZGE5Yjc2MjExNTNiZDVmOGNmOGZkMTIgbGVnYWN5LXRydW5rCis2MDU1IDM2Y2MzZWU1NGYyOGI4ODAwZWYzZmMxMGYyMDU1MzVjMDVlNGI4OGMgbGVnYWN5LXRydW5rCis2MDU2IGI1Y2NjZjFjOGYzODY2YmVhZGMzOTQ2NGJiMjdkNmQxMzE1NjhlNDMgbGVnYWN5LXRydW5rCis2MDU3IGRhZmM4YTEwYjE4NjgwNDYwZGY3ZTE5ZDBmMjM0YTE2MzQyNGFjZTQgbGVnYWN5LXRydW5rCis2MDU4IGJkMjBjMDQyNzRmZmE2ZTY5ZTFjOTRhMmM4MjM4YjcyNTdkNjE4ZDkgbGVnYWN5LXRydW5rCis2MDU5IDczNjY0ZWEyMDMwZTBiZmZmYmRmMGEwNjYxYTZlY2YzYzAzYjk4ZDMgbGVnYWN5LXRydW5rCis2MDYwIDFjMThmOTA2MzZmYmJlMDgxNjEyNmExZTY4ZTAxNGViMjczOGExZDIgbGVnYWN5LXRydW5rCis2MDYxIDI0MDM2MjBjYTkzMWFlZmNlZTA3ODkyZGQyNzI2NDBkYTlkM2Y0ZDYgbGVnYWN5LXRydW5rCis2MDYyIGRlOTg3ZmQ2N2M5NDM1MDJkNWJjYWViZjIxODNjN2I2ZGM5ZmEwODkgbGVnYWN5LXRydW5rCis2MDYzIDU2NDkxMjI2NzI5MGY0NDllMWYyNGVlYzk3YjFiNDBmMjhhYjNiYzQgbGVnYWN5LXRydW5rCis2MDY0IDYyOTM3MjMyMDVhNmE4Mjk0ZWU5MGFlMTQyOTk4NTFiNjQ5MzM1MDcgbGVnYWN5LXRydW5rCis2MDY1IDg4MDBkZjM2NmIxMzFkMmEyNjUyZTAwYjE4ZTU2MmI0ZGE3N2ZlMGYgbGVnYWN5LXRydW5rCis2MDY2IGUwNzU5NzM4OWQ2NGJiZmI1OGI2OGMzNDU2MTg3MWQyNTM3NmZkODIgbGVnYWN5LXRydW5rCis2MDY3IDZjOTI2MGFlMGQxNjM2YTk1ZDAxMGMzNmMwYjc2YjFkODcwMmFhZWYgbGVnYWN5LXRydW5rCis2MDY4IDg3MzhiMGRkNzdmZDg3MDA5Y2JlOGNhMWVmMWQxMjA3YTA1YjViNDcgbGVnYWN5LXRydW5rCis2MDY5IDdjNTcxMWE2YTQ3NTk3ZDkzMWJlNGVlODMyNTRhMzJjMTY1Njc3ZGIgbGVnYWN5LXRydW5rCis2MDcwIDVhN2E3NjE2NmU3ZTM5OTgxOTRlMTAxMjIxYzM5OGU1M2I0MmQzZmYgbGVnYWN5LXRydW5rCis2MDcxIDQwNDk2ZGI4Y2YxZmNjOThkNjI4ZTc5OGIwMjZlMGQyMmY2ODc3NzYgbGVnYWN5LXRydW5rCis2MDcyIGQ5MDY3YzVmNTBhZGQ0OWUzOWE0MmU0YjgzZmIxNzFkYWUzOWZlYmQgbGVnYWN5LXRydW5rCis2MDczIGViNmVmN2VjYTIwN2QyOTg5Yjk4YjBhNzAwN2IxZjljNTVkNzBlMGEgbGVnYWN5LXRydW5rCis2MDc0IGFhNWYzZWNiZjU2ZjMyZDhmY2NiNGM3MmQ2YTUyOTlmNGQ4OWNmOTYgbGVnYWN5LXRydW5rCis2MDc1IDFkNGYyZjIwYTI3Y2NiNjEwOTZhMjUxZGRmMGQ4OTE1Y2RlOTY5YmUgbGVnYWN5LXRydW5rCis2MDc2IGRkNzRhMDYwMDZlMDQwMjE3MjYzYjgwNTc3ZTg0NjgyZGQzMWQ0ZDMgbGVnYWN5LXRydW5rCis2MDc3IDg1NzNlNjVmYTk0ODRmMjZiYjNkYWZiN2Y0ZjQ0ZjY1YTdhYzQ5ZjIgbGVnYWN5LXRydW5rCis2MDc4IDBiMGM0ZWQxOTM2YWMyZDI4NTJjMzk1ODdiOWNlNjgzNzg2MDQ1OGIgbGVnYWN5LXRydW5rCis2MDc5IGQwYTk3YWMyNWRhYjQ3MzY1OGE0MGQ4NjdkYzczZDhhZDYxNDQzYmYgbGVnYWN5LXRydW5rCis2MDgwIDQ1M2E5ZjZlOTYxODlkZTY5YjYzM2ZmNzM1YmI4NDhhMjA5YzVlMTAgbGVnYWN5LXRydW5rCis2MDgxIDQ4NjZhMGZjMmJiZDRlNjU1MzY2ZmU1ODk4YWJkNTZmODBmMThjZjkgbGVnYWN5LXRydW5rCis2MDgyIDJmMzE0Y2EwY2QzMzhkNmVjNDYxOGU2NDhjOTE4ZWUwZGMxZDA4MGEgbGVnYWN5LXRydW5rCis2MDgzIDMyMzE2NWNiMWZhNWQ3NGFlZmY4YWE3ZmMzMzU0ZTQ3OGQzNGYwZTcgbGVnYWN5LXRydW5rCis2MDg0IGZkYTNjMDk4Yzg5OTU4ZjUyOTM2NjNmOTU5MzBhMjU3YjBjNjgxYmMgbGVnYWN5LXRydW5rCis2MDg1IDBlNWE3YjIyMDE2Y2RlZTAzYWIyMjQxM2VlNjBmM2ExNTUwNjYwNjkgbGVnYWN5LXRydW5rCis2MDg2IDZlNzM1ODRjZjU3NWVlZGE3NTY3Zjk2YTI0ZTA4ZTZjMWEyNGIwOWQgbGVnYWN5LXRydW5rCis2MDg3IGEzYzk3ZTIwNTg0NzkzNDJhOGQ5NTU3Y2RlYmY2ZmRiOTQ1OWQ4ODQgbGVnYWN5LXRydW5rCis2MDg4IGVmNzU5NjY5YWEwNDI2MjkwMzI0ZWJiODNkNjVkMTY0ZGI2NmRhMTAgbGVnYWN5LXRydW5rCis2MDg5IDI4YzBkZjFjZTI4NDQ5ODIzNDQ4MjM4OGY3MTUyZDE1M2Q2OGYzMDYgbGVnYWN5LXRydW5rCis2MDkwIGYxNThlZGNjYzcyY2NiNjNmZmU4YjFhNTk1OTYwMmY5ZGQzZGU4MDggbGVnYWN5LXRydW5rCis2MDkxIGI3NWVkYzBlNjMzM2VlNjBjNTYyZDFiYTgwZDI2YzJlNjY2ZjczY2QgbGVnYWN5LXRydW5rCis2MDkyIGQ0MWQ4OWViNDNlNTBjZDliZjhiOWY5NWZjNzlmMDBhMjJlOTJmOWQgbGVnYWN5LXRydW5rCis2MDkzIDVhOThhNGZkNThiODQyMTAxMjEyZWI4Mzg1MWZiMjI2OWUwZDYwMGEgbGVnYWN5LXRydW5rCis2MDk0IDllNDY2NTdiYjllODQ3OWM4YWM5ODZjOWRjYjk3ZDBjNWFlNDIzNWEgbGVnYWN5LXRydW5rCis2MDk1IGJkNmVhYTJiNDFhYzM2MDcwZTRhZWJlMjVlNTk1NTY2Mzc5YzEyZmIgbGVnYWN5LXRydW5rCis2MDk2IGQxOTViODcxZTcwNDRlMTlkNTliZjE5YTY1MDI2Zjc0YTcyOWYyMjggbGVnYWN5LXRydW5rCis2MDk3IDM0NDA3NzdmMGU2NTZhY2UzZWQzODA0YmMzNjg0MTNiZDA0MzQ1ZDEgbGVnYWN5LXRydW5rCis2MDk4IGU1NGQzOTEwNzI0OTU2ZjJhMDY4OTBjZTVhZDJlZTVjMDhhZGVkOWUgbGVnYWN5LXRydW5rCis2MDk5IDJlYjdlOWUyMzZiZjU3Y2YwOWQzZDk5MDJlMjgyYzRjMGU5NTY1ZGUgbGVnYWN5LXRydW5rCis2MTAwIDk4NTEzNDM3NTY3MjM2ZDgyZDRhODdhYzlhOGZiZWVhNTRjOWFlMjQgbGVnYWN5LXRydW5rCis2MTAxIDQ0MTYxZmIwNGI3ZTgzNGJmYzc3MDliZGRkNjk3OTFkMDEzMDI2ZTYgbGVnYWN5LXRydW5rCis2MTAyIGE3ZTNiYzJhN2NhYzQ3OWQ0MDg5MzM0OWNkNGMyZjBiYTAzZmFlMmEgbGVnYWN5LXRydW5rCis2MTAzIDNhYmNmNzI1YzVmNDA5Nzc2MjY3M2IwMmQ5MjdhZDFmYTQzZmE4MzQgbGVnYWN5LXRydW5rCis2MTA0IDg5NDE3ODk1ZDk2M2NlZGMyNTAxZGEyMmQyMmU1MDU1ZjcxOGMwNGUgbGVnYWN5LXRydW5rCis2MTA1IDY3NjhiYmQxOGUwOTk4MGE3MDdiOTg1YjVlNjJkZDBiMmI4OTA0NWEgbGVnYWN5LXRydW5rCis2MTA2IDZjMDA4NmY5MjcwY2Y5NTEzY2M0MmI5Yjg1ODU3OWRkZDQ5NGU3YzMgbGVnYWN5LXRydW5rCis2MTA3IGMyODNiN2JiZGEwOTUyYjI3MmQ3YjdhODU5YTBkOTVlZTVhNjc5OWYgbGVnYWN5LXRydW5rCis2MTA4IDcwMTgzNTkyMzcwZTc0ZWE2M2ZlZDYzMTRkNTA3NDNhNDM1Y2EyZWEgbGVnYWN5LXRydW5rCis2MTA5IDhkNTBhOTZmODY4MGVhODExZTUwMjAwYmE1NDBhNjY2OTcxNGYxOTggbGVnYWN5LXRydW5rCis2MTEwIGU0ZmFhZGI0YWJlMmVkYjRlMTgxZGMzOTc1NmFlYzdiOTY3NTg5MmIgbGVnYWN5LXRydW5rCis2MTExIGQwNDk3NWRiNTJkY2YzYjQ3MDI4ZWQ4MjJhMzc4ZmZjZDdiZTFiM2IgbGVnYWN5LXRydW5rCis2MTEyIDBkMTQ2M2E0NWI2ZjU1YzY4NTc3MDBlNjYyZGVlZDM4YmI4ZTVkODQgbGVnYWN5LXRydW5rCis2MTEzIDAxN2QzMzU2YTVlZDA0MzBmZDEzNTk1YTFiMDdiNmU5NGQwNzE0NmEgbGVnYWN5LXRydW5rCis2MTE0IDQ5ZWU4OWUwMTdhYmU1MjZjNjBmM2IyZWM5Yjc5Mzc1ZTQ2NzIwYjcgbGVnYWN5LXRydW5rCis2MTE1IDU2NGZhNmYxODVhN2Q3Y2Q2ZmU2N2MzNjJlMWI1M2QxZTc0MDI1MzMgbGVnYWN5LXRydW5rCis2MTE2IDE2Y2E4ZjBmM2YxMTI0MDFhMGZjNjVmMzY2ZjI3MDI4YmYzOGI0YjUgbGVnYWN5LXRydW5rCis2MTE3IGE5ZmI1YTg5NWZhMWMzMmU2ZmJhYWFiYzVmNmQ0MGJmMDY4MjY1M2QgbGVnYWN5LXRydW5rCis2MTE4IDYzY2RmYmI0YTJiYjk5YzQxMzZiMjk0Mzg0YWQ4ZDdiOGJlZjAyOWIgbGVnYWN5LXRydW5rCis2MTE5IDVkNmZlMTQ1Zjc3M2EyMTRhYWMyMzhmMWVmYmUxNzQyMWQzZjM4OWIgbGVnYWN5LXRydW5rCis2MTIwIDA2MDJkYjFkMWRmZjdhNWY3ZTVjN2FlZGVmNTE1NjhhZTcwMjNlYzIgbGVnYWN5LXRydW5rCis2MTIxIDcyOGEzOWEzZTBkNTUwODRlNWFiYmNjM2YzZjg3ZTdlMjMxNzM1ZTggbGVnYWN5LXRydW5rCis2MTIyIDUzMDljZWY4YzE2OTJjYzI1ZjVlNjEwNDg5ZDFmMzBiYWFhZjBhNDUgbGVnYWN5LXRydW5rCis2MTI0IDY2ZWVhYjVhNzU4YzY3MzJmMjI0NjcwZDEyNWYxODZjZmI2N2IzOGUgbGVnYWN5LXRydW5rCis2MTI1IGY4OWZhN2U5NWI4NDA5NWY0MmExODI4NTRkMzRhMWYxYzZjNDM4YWUgbGVnYWN5LXRydW5rCis2MTI2IGFkZTlmOTk2NTkwYTVlNzhmNWE4YmIwNzkyZjA3MDM1OTk1MDRiNWEgbGVnYWN5LXRydW5rCis2MTI3IDlhYzFlMGQ1NjY3NDEzY2ZkN2U2ODk5ODBhNThiZmJiMDkwYzZhNmUgbGVnYWN5LXRydW5rCis2MTI5IDM1YmU1ZGY2ZWY3NzIyYjhmNTBhMjM1ZWIxZjJjZjYxOTExYzc3NTUgbGVnYWN5LXRydW5rCis2MTMwIDgyNWJkOGMxMWIxYzFhYzVjNDk2YmM3YWNmYzJkOWY4YzQ2YWRhNjkgbGVnYWN5LXRydW5rCis2MTMxIDA1OGQ4MWQxZDU2ZDkzMjZlMzc3ZGU1MzAwZjUwOTYwNjcwZGUyNjYgbGVnYWN5LXRydW5rCis2MTMyIGJkNmQwMjhkOThmY2VmNDI0NTI1YjMyNDM3MjYwZDUzMmRkOTkzZGYgbGVnYWN5LXRydW5rCis2MTMzIDM5OTQ3MGE5NThjMjJkOTdjY2I4NjNlNjc5NGMzZjg5N2U4NWQ3OGMgbGVnYWN5LXRydW5rCis2MTM0IDA3MTY0ZDMwNDI5ZGM2ZGQwNzM2MmVjMjBiYzJhOTFmMjVkZGNiNTMgbGVnYWN5LXRydW5rCis2MTM1IGFkMDNlMjFmZGE1NGJjYTVjMTJlZTc3OGY4ZDdiODE4MDI1OGFkOTIgbGVnYWN5LXRydW5rCis2MTM2IDUxODgzNzQzNzdhZTk5NjI1ZmQyNWJlYWU0NWNkNjc4NDUzNmFlMmUgbGVnYWN5LXRydW5rCis2MTM3IDU1NmVjODJmNGQ5MzllMTVmMmM2YmQ1Mjk1Nzc0YmRkODI3OWRhMmUgbGVnYWN5LXRydW5rCis2MTM4IGVhYmJiM2MxODE4ZmU0Mjk2MmIxYzE1YTk4YTY5Y2QwODZhODNhODcgbGVnYWN5LXRydW5rCis2MTM5IGFiOTI0ODBmYTRlY2IzYzliMzBkMzQzNTU1MThmNzc3OGJiYjI5YmIgbGVnYWN5LXRydW5rCis2MTQwIDFkMTM0ZWNkYTA5NGVlMTc3YzgwYmZjN2QxMDE0YWMzODc0YzE0NDUgbGVnYWN5LXRydW5rCis2MTQxIDE2NDEzZWU1ODk2Nzc0NTY4NDc1MTQ5N2EzY2ZlYmEwYWQwYzUzN2QgbGVnYWN5LXRydW5rCis2MTQyIDlhOGE0MGYyMjE4YzljYjI2MjY1ODhlMWZjMTU4NTBhZDlmNjQ1NDggbGVnYWN5LXRydW5rCis2MTQzIGNlYzI3YzkzYjVjYjgzNGMxMDE3MzdkZDUxM2U2MDgxNGFhY2ZjZTggbGVnYWN5LXRydW5rCis2MTQ0IGY2YWNlNjFjM2RmZTY0ZWEzN2VmOTgwYWVlMDAxZWIzNDk0MGQyYzcgbGVnYWN5LXRydW5rCis2MTQ1IDNlYWYyYzY3M2ExMWE3ODhmYjYyNDRhZjIyMjNiM2NiZTJiZDEwODIgbGVnYWN5LXRydW5rCis2MTQ2IGQ2MTdkZTE1Nzc0YjJlN2I3NWEyYjc2NDdhZWE3YzkwNjBhYWMyMTMgbGVnYWN5LXRydW5rCis2MTQ3IDc0NzY0YjNlYzFiZGI3NGE1ZTY1OTI3NTYyNDZmOWFmN2RmYWFkZjMgbGVnYWN5LXRydW5rCis2MTQ4IGIwNTMxNTgxNjU3OTgzMDQ1MmMwNGUyOWQ5YTJkMzdmMjM4NGY2ZTEgbGVnYWN5LXRydW5rCis2MTQ5IGJkZGJhYTUxYWE1YTkzMzE4YWZlYjkyZGFiMmU0ZTYzYWU1ZWQ3ZjQgbGVnYWN5LXRydW5rCis2MTUwIGI4OTgwNzM1ZDAzYjNlMTQwOTM4YTY0MjQ2M2ZhOTQ0M2Q3M2Q4ZmUgbGVnYWN5LXRydW5rCis2MTUxIDg3MjFmYWZkYjY3YWE5YjVhOTIyZDIzY2Y4N2M4ZjIzMmVmYzA1ZDggbGVnYWN5LXRydW5rCis2MTUyIGE1MjdmNDQ5Y2EyNjY2MWY1ZDI5MGQzNjdkMTAzMjc2YWFkMzkyYWUgbGVnYWN5LXRydW5rCis2MTUzIDk0NjZlYWJiNjY5YTZjZjI2NmZlYzY1NWMxYzcyNmQ3M2UwMjY4YTcgbGVnYWN5LXRydW5rCis2MTU0IGVjMzkyNjQzMTFmZjI0MTRmYWUwMWFlZDc0NzkyNmM5MTBiOTBiN2YgbGVnYWN5LXRydW5rCis2MTU1IDYwNmMzODUzNWYzMDQ1MTM0N2QxOTQ2NjkwZmFlYmZlNmUxN2ZiOGEgbGVnYWN5LXRydW5rCis2MTU2IGExMzYyYTA2MzEyMjUyMmZjY2MxODgwMWQ3NjUzNjg2ZTAyMTQzNzMgbGVnYWN5LXRydW5rCis2MTU3IGJkYmRhOTM5Yjk5OThmOGFlOGI2ZDUxZTU1M2JjYjEzNmJhN2I1YjYgbGVnYWN5LXRydW5rCis2MTU4IGQ4ZjlkZmM3NmJiZmM4ZGY5NmZmMWFkOGFiNmNkNzRjOGFlZjlmY2UgbGVnYWN5LXRydW5rCis2MTU5IGE3OWI4ZDgxOTk3ZmVhYWQ5Y2VkMmMxNGI0YjA5M2I5MGQyYmI2NjcgbGVnYWN5LXRydW5rCis2MTYwIDZkZmQ3OTk0NDg3MmZjMDNjNTQ5NzQ5M2JhOWIxMDkyNmQ5ZWJjMDMgbGVnYWN5LXRydW5rCis2MTYxIDRhMDdmZTFlMGI1MDNjYjViY2FjNDhkNjY3NjhmNDI2M2E0YWQzMGEgbGVnYWN5LXRydW5rCis2MTYyIGI1ZDE3NDFkZWQ0YTVhNDhlYWYwOGEwNWJjYWE2ZDVhY2EzMzE2OGUgbGVnYWN5LXRydW5rCis2MTYzIDhkYzFlNzRjMTY5NTZlYjIwMGVjNjgzYWFmNWQ4ODkxNGFhNWM3ZmUgbGVnYWN5LXRydW5rCis2MTY0IDgxOGVlMTE1MDU0YTNiOWNlOTYwMTIyYzExN2E4MWExNWEwNzUxN2IgbGVnYWN5LXRydW5rCis2MTY1IDU4MWYwNzNmMDcxZDdkNzcwZjQ3MmY3MTljYmI1MDJjMzRmYTMwMjIgbGVnYWN5LXRydW5rCis2MTY2IDE0NTQxMzhjNmYyZDQwYzVhMGI1NjA2OGRhOGJmZDcwNmVmMDQwNjEgbGVnYWN5LXRydW5rCis2MTY3IDY3MzkwYzFkYWViZWRkY2VlY2Y0MWNkZjExYjQ1Y2MwOTMxODBjYTYgbGVnYWN5LXRydW5rCis2MTY4IDgxZjUzNWNhMWQ5OGNkNDZhNjk1ODlhNjVmZTBkMmZkN2FjMmRiM2YgbGVnYWN5LXRydW5rCis2MTY5IDk3YjFjMmE3MGVhZTExZmI3Y2Q0Mzk5YzBlOWQyZWNiZWI4NzRlZTggbGVnYWN5LXRydW5rCis2MTcwIGUyM2FmYmY3N2VmZGY5NTRiM2Y5Y2JhZjliMWFkNjVmZjlhYzk5ODAgbGVnYWN5LXRydW5rCis2MTcxIDkzMTA4NmNiODUyOTUwMzM3YTg4Njc5NWZlZTE4ZjU2YzAyNGM3YmUgbGVnYWN5LXRydW5rCis2MTcyIGYwNGJlYjgwZjgxNjc3YWYwZmRmNjE4ZDRhNjdhM2I1M2UyNGU0MzEgbGVnYWN5LXRydW5rCis2MTczIDM0MDg3NTZlYzYwMTg5MDE3ZDE0NmQwZWRkYjZmMjQ3NGFlOWYzNGQgbGVnYWN5LXRydW5rCis2MTc0IGZmN2ZhNTlmNjJlODkzNGFiN2I4NDU3NGNiN2QxZTQzNGM2NGNkMmUgbGVnYWN5LXRydW5rCis2MTc1IDE3MDMwNTE1ZjYyMzI3NTRkMzUxMTJhNTlkOGNmMjMwZmRjYjE1MTIgbGVnYWN5LXRydW5rCis2MTc2IGM4NjdjMjk0YjE2YzA4M2FhOTY2N2VkMTgxOWU2MjI4N2YwNGI0OTMgbGVnYWN5LXRydW5rCis2MTc3IGRiNTc3MDk0ZjY4NTNlMTU3NTNiZTljYmQ0YjAxNjZhMzZiOTBhMjQgbGVnYWN5LXRydW5rCis2MTc4IDBlOTc5NTAwNGNkMjY3NmZjZDE4ZWQzNjc1NWYxNGE4NGYxNDNlMGEgbGVnYWN5LXRydW5rCis2MTc5IDBmNmYwZTk4ZTNiNjRiNGU1MzgxZmZlMGI2OTYwZTFkNDljN2NmNzEgbGVnYWN5LXRydW5rCis2MTgwIGRhZDRkNDMzNjNkOGZlMWZiYjg4ODAwNTYxNjcwMGY5MGE5ZDhhMjggbGVnYWN5LXRydW5rCis2MTgxIDc4NzdkZWY5NDA2M2Q0NzE0OWNmZjViOWEzMGU5ZmMxNGVhNGU4YmEgbGVnYWN5LXRydW5rCis2MTgyIGMwNDUzMWZjMjcwOTY5MzljMzE0NDhlZWFiNGZjYjVjODY5NjdkMmEgbGVnYWN5LXRydW5rCis2MTgzIDhlNDc5OGQyMTkxNWVmY2FiM2NhYzg3YWU0YmQ1OTRkOGQ0OGU4MTkgbGVnYWN5LXRydW5rCis2MTg0IGFkYzg2NzA3ZmE5NjM4OTliNTllMjkyOTdlMmY0YzNlYzc3MThhNTEgbGVnYWN5LXRydW5rCis2MTg1IGMxMjBhNDgzZDU5MDk4ZDY2OTFmY2E1MzU0NWMyZjgxZjc5NDYyMDEgbGVnYWN5LXRydW5rCis2MTg2IDVjMjU4ZWZmZTgxYzRkOTViYzYwNDRmNjZhNjBlMTNhMDFmNzcxNzMgbGVnYWN5LXRydW5rCis2MTg3IGRlNTI3OTQwMmI5NDM4Y2RmNjQzM2MzNzMzODE2MTdhZGE3ZDQ1MDIgbGVnYWN5LXRydW5rCis2MTg4IDUwMTIxOTFlYzJkYWIxNGJiZWI0Nzg4ODc4MTgwNThjYWNmMWYzNTIgbGVnYWN5LXRydW5rCis2MTg5IDllNTQ0YTJjMTlhMmRhNzA4OTA5NzRiNmIxMjEzZDQ4OGE2OGQ1NmQgbGVnYWN5LXRydW5rCis2MTkwIDc2ZTVmMzU5OGU2OWI0YTI5OTE5MTg1MzVmMTQ4MGM1YjNhNmZmZGEgbGVnYWN5LXRydW5rCis2MTkxIGIzNDFkZWY0ZWVmOGNiYzYyYTA3MzU2NDI3ODk1Njk0NDgwNGNkMTMgbGVnYWN5LXRydW5rCis2MTkyIDMyMmY2MWU0YzM4NzVhYTQ4MTU2NzE2MGMzYjg4MzUzMjZhOTBlMTQgbGVnYWN5LXRydW5rCis2MTkzIGIyYjA2M2FhMjc1NTEwZDZiY2M0ODQ5NzFiNTAwZjNmNjhmNGM5OGMgbGVnYWN5LXRydW5rCis2MTk0IDQzYTM3ZTZiNjQ2OWE0ZDIxYWIwZmMzYzI2NWMwNTczZDIzNWU5OTYgbGVnYWN5LXRydW5rCis2MTk1IDI2NDQyYjVmOWNmZDg0N2I2M2JlMjc4MWQ0ZmIzY2NiNDA5YmJjY2EgbGVnYWN5LXRydW5rCis2MTk2IDBmZjViZDhlYmIwMWE2MGI3MTlhNzY2M2EwOWM3MTg4ZTRjMmVmYjUgbGVnYWN5LXRydW5rCis2MTk3IDY1Nzc5MGRiMDZlM2M1OTQ1ZDllN2FkOWNmYzFjYmVjMWY2NWQyODcgbGVnYWN5LXRydW5rCis2MTk4IGExMGEwZjYwMTRjNDlhNWZiZDFhNGMzNDM5NWUyODgyZjg1NWZmNWQgbGVnYWN5LXRydW5rCis2MTk5IDZmM2M3YjJmMmI4ZGU4MjhiMjY2ODJkMzk5NWYzZmJhMjc4MGY5ZDUgbGVnYWN5LXRydW5rCis2MjAwIDA2ODU1NjM4MGNiMDg2MWM1ZjhjMDI0NDMwZGExNjE3ZGM4MGZlZWEgbGVnYWN5LXRydW5rCis2MjAxIGJhODRkN2U4NTU0YjVlY2Q0ZmNkNjlkNTc2OTc2NGI2ZWFkMzNmMGIgbGVnYWN5LXRydW5rCis2MjAyIGRlMWNiMzMyMTllMzExOGEzZjllYTIwOTIxZWExODFhNjllNzdlNTcgbGVnYWN5LXRydW5rCis2MjAzIDUyM2Y0OWExZTQyYTU3MDk4ODgyNWZhYWY2ZDY5NjVkYjk0MWJmMDAgbGVnYWN5LXRydW5rCis2MjA0IGIyNTBiMjcwZGJkNGQwZWIwNDAxMzVkZTY2OGM4ZWZhMzY2ZmJiMTcgbGVnYWN5LXRydW5rCis2MjA1IDA0YzA3NTM4Y2FjNGRiNzcyY2QxNjEyNzk1YzIzNzY0NmI5YTg5YTcgbGVnYWN5LXRydW5rCis2MjA2IDQ2OTJjYjQ2MDA4ZWUwYzllOTMzZjZkNjg3OGFhNDA1YzNiZThmNzUgbGVnYWN5LXRydW5rCis2MjA3IDZjOWMyYWMxNWU0YjAxN2Y3NDg2YmJiZDhjMTE3YjRkMGMyMzEzNzQgbGVnYWN5LXRydW5rCis2MjA4IDZiMWI2NjQ4NjNmNDA5NDAyNWU3ZTBiNWRhZTBjNTRjZDViMzdhZmEgbGVnYWN5LXRydW5rCis2MjA5IGNlNzRiYmE4YTZhNmQxOGJjZTc3Y2U2YmM3MjQxYzc5OTI3NDdiY2QgbGVnYWN5LXRydW5rCis2MjEwIDc5NTI0ODI5YTczMDY2NmRjYjFiNDg0NDIxMjUxNGJhNTIzZjkyNGEgbGVnYWN5LXRydW5rCis2MjExIGU0ODA3YTBjMTA5MmRlMmVjZDQwNjg1NTk3YTQyODljNmEyNjM2ODggbGVnYWN5LXRydW5rCis2MjEyIGVmNTliNGQwMDEzNDkwN2FkMzkyODZkOWU0ODY1MzZhYzliMDQyYjkgbGVnYWN5LXRydW5rCis2MjEyIDRmYzg1YzgyY2MyMjI1NTRhZTZiOWMwYjg3Nzc2ZWQ1ZjJiNzBjNmUgbGVnYWN5LXRydW5rCis2MjE0IGIyMDc4NzZkZjI5YWNhYzA3MjIxYWEyNjA0ZTBlYzAxNzhhYzQyY2UgbGVnYWN5LXRydW5rCis2MjE1IGZmZGYxZjA2Y2Y4YjVjMzYzZjljNTQ3NjM3OWZmNWY5NWY3ZTRiZjkgbGVnYWN5LXRydW5rCis2MjE2IDYwODBiMmViYzFmMTRhNWM0NWMyMTA3NjYwYTc1ZGFjYWQ5MTI4NTkgbGVnYWN5LXRydW5rCis2MjE3IDc1MDQ4ODRlOGE3NGZjNjA3YTg4NmEyMWVmNTI2ZmEyZDU0NDc1NTIgbGVnYWN5LXRydW5rCis2MjE5IGFjNzAxOGI1Nzc0NTZjZWJiMTE2YTc1MGZlMjJjZTY0YjlkZTczMGIgbGVnYWN5LXRydW5rCis2MjIwIDU2ZDMzNTBjYTFmMTcyZDYyZWRmOTMxYjUzMmIzMGIxMTE1Yzk2NzEgbGVnYWN5LXRydW5rCis2MjIxIDExZTAzZDdhNzI5ODA1ZGZlZWY3NDRhNTVjNTBlOTMzNTdiYjQwODkgbGVnYWN5LXRydW5rCis2MjIyIGEyMjQzOGU5NGZlOTc0YjUxOTEzNDgzYTUyNTI5YTMxNTJjMTVlN2YgbGVnYWN5LXRydW5rCis2MjIzIDJkYjYzNjM0NTljYWYxZDY5ZGUyYThiYWFjMTZmZDAzNWMxNDE5NDAgbGVnYWN5LXRydW5rCis2MjI0IDM1MzdjMDhjMWVmZmJhYjQ0NzIzNmI4YzEyYWMzZjMyODY5OGQ3MWEgbGVnYWN5LXRydW5rCis2MjI1IDk3ZDIyNzhhMzMxYjk0NWQ0MTMxYmUzM2Q1OTI4MGVjNmFkMGZiZjAgbGVnYWN5LXRydW5rCis2MjI2IGQyM2ZlYTI0OGExZWMyNWIxY2MxNzdlYjVkZjQ4NTZjMTRlZWIxYTggbGVnYWN5LXRydW5rCis2MjI3IDY1OThhNTE4NjY4Zjc3YWYyNThhYmE1YWYyN2Q5Y2Q3MzAxZmE5ZjYgbGVnYWN5LXRydW5rCis2MjI4IDgyYmI3ZDJhNmIzMWU2ZjUwZWY0NDQ5ZWY3MGYxN2FiMzk4OTU3NTAgbGVnYWN5LXRydW5rCis2MjI5IDE1YjFiMDNhZGU5M2Q3MmNkZTUwMTc1MGI0ZTNjMWI2ZTE3OTdmYzMgbGVnYWN5LXRydW5rCis2MjMwIGI5MTZkNjE0ZTM2MzQ2ODVhZTY1NWQ1Yjg2MmJjY2FkNjA3NDhhODYgbGVnYWN5LXRydW5rCis2MjMxIDU2NzQ2ZWVkZmUwMzc4OTc0YjhjMzQwM2I1ZTNhODFjMjk4NDQ2NGQgbGVnYWN5LXRydW5rCis2MjMyIGJmOGMyMzBkZjVlOGRkMzIwZTJjMTRmZjQ0NTUyYjBkZTI5NDBmNWMgbGVnYWN5LXRydW5rCis2MjMzIGU2MDM2MDFjNjhjZjQ0NjhlNTNmMDY2NTMzMmIzZjg1MWFmNGFjYmMgbGVnYWN5LXRydW5rCis2MjM0IGM1N2IzOGU0MGIyZGE1MGM3NWVjZWFhMjUyZDc4ZDdkNTYwZTA4NjUgbGVnYWN5LXRydW5rCis2MjM1IGJiNGNjM2ZhNjAwMGIwOWJkYWY3YzM4ZGNlNjlmNWY1ZTAwZDY4YzEgbGVnYWN5LXRydW5rCis2MjM2IDI5ZmU2YTBkZTM2NjNiOGQ0NWMyYzc0OTNlYjViNDg0MGFjZjg0ZmYgbGVnYWN5LXRydW5rCis2MjM3IGRiNTQ4OGZlNDk1YjJhMDA1OTNiYjkxMzA5NWY4OTQxMzlhNWVmM2IgbGVnYWN5LXRydW5rCis2MjM4IDUxNjQ5MGM4MTkyY2RmYjAxNmZhMTg1YjkyN2MyMDhiNzBmZGQ2ODggbGVnYWN5LXRydW5rCis2MjM5IDRiNWRlZjQwNzczY2VhZmE1NzVmY2U1YjIwOGFlZTMzYjBjNzhkYjAgbGVnYWN5LXRydW5rCis2MjQwIGQxYWUwZWE5YTU4NWY5MTJkN2FhM2QwMDRmZjgxN2QwZGVhMTEyZjggbGVnYWN5LXRydW5rCis2MjQxIDJiODEwYTNjN2U0MTRjYTQyZTZjODliNGExMzdiNGNiZDBlNDZlYzIgbGVnYWN5LXRydW5rCis2MjQyIDdjZGMwYzcxNDZkNTBhYzIxOTczZjUwNjBkOGNlYzY3MWRiODkxOGYgbGVnYWN5LXRydW5rCis2MjQzIGQwOTg4MzE4Yjc1NjhjNmE1M2ViZGJlMmZjZDc5Yjg3MWVkYzQzNmUgbGVnYWN5LXRydW5rCis2MjQ0IGM4ZDBmNzgyMjFjYzM2ZTgxNzg2ZDY0NzUwOTg5ZTg3YWYwYzQ3MGIgbGVnYWN5LXRydW5rCis2MjQ1IDZlNDBhMmEzZTZlZjBjNGEzOTg2MzM2MDlhMjQxM2VhMDZmOGUzNDUgbGVnYWN5LXRydW5rCis2MjQ2IDRjNzhkNzNjNTY2NzU3MjNjYjc3M2YyM2QwYTJhY2Y0MjZiNWNjMjAgbGVnYWN5LXRydW5rCis2MjQ3IGFiMTEwYjFlOTJmZmExODJlYWM0ZDY5M2UwMjdlNDM0Y2IzYjY4ZGIgbGVnYWN5LXRydW5rCis2MjQ4IGVjY2ZhZGE0N2YyODVhYjRhOWJmYWE1NDVlZTRiMjFlY2Q3N2FkZGUgbGVnYWN5LXRydW5rCis2MjQ5IGYzNWRkZTdmNDE0M2U1ZjYxMGJhY2VkOTZjYTIwZjM5OWMzMDAyMTMgbGVnYWN5LXRydW5rCis2MjUwIGY5OTA3ZjU3MzI3ZWM1NzYzOGQ3YTkyMDFlYTQ3YTNjZGNjN2I2ODkgbGVnYWN5LXRydW5rCis2MjUxIDEwYjUwNjFmNmNiY2Y4NTRjN2U4MWE1MmRjNDkwOTRkMDlhMjNlMzcgbGVnYWN5LXRydW5rCis2MjUyIGFjMTE0YTVmYzhmZjg0NmU3OTgyMTgzODNjZjRiYjQxYWY3YzY2ZGEgbGVnYWN5LXRydW5rCis2MjUzIDI3YzM3NzU3NWY0YWM0ZGQ5ZjRmYjJiMDhhYTk5ODA2YjQxYzU0YjcgbGVnYWN5LXRydW5rCis2MjU0IDNlYjE2OTRlZGNlNmIwNDI5ZGM1Y2U4NWY5OGFhMGE2OGQ2Mzc3NDEgbGVnYWN5LXRydW5rCis2MjU1IGE2MjAzZDE3MTU4YmE1MmUwZmQzM2Q4YzI4YjFjNDU5ZmFmZjVjMzQgbGVnYWN5LXRydW5rCis2MjU2IGI0MTAxOTU1N2I2ZTdjZmY4OGYyYWUwODg4MTZkODFjZThjMzE5OGUgbGVnYWN5LXRydW5rCis2MjU3IDBkNzQwMTEzMTBjZDFiNWJlYWNkY2FlYTgyODQ5ZGRhNDFkMmNkNzUgbGVnYWN5LXRydW5rCis2MjU4IDcxOGM4YWY3YmUyYTlmY2U5MjE3YjVlYmYyNDYyZWM0OTIzMDc4ZmUgbGVnYWN5LXRydW5rCis2MjU5IDc3NjYzNjBiODViODkxZWE5ZGI3ODVlZGZlYjg1YjNkYzg3YWZiYTMgbGVnYWN5LXRydW5rCis2MjYwIGI2NTM2OGVkODZiZTg5ZDE3ZmI5YjFhOTU4OWFkY2JiZTY1NzNjNDUgbGVnYWN5LXRydW5rCis2MjYxIDQ2ODgzN2FkNDVmMzgyM2FjODkyMDg0ODk4NGE1MWU5NTZhZjgxODggbGVnYWN5LXRydW5rCis2MjYyIDdlNjUzNjczMGQwZWVlZDJiYjg5ZGUyOTE0Y2Y1MTYxODE2MDY1YzcgbGVnYWN5LXRydW5rCis2MjYzIDJmNTczOTJiMmZkZTEyOWJjNmUzMDk5NDY3MTY0MzI3MjljMzgzMGIgbGVnYWN5LXRydW5rCis2MjY0IGU5ZWU0YzkwNWFiZDI4ZjcyZTg3MmVkZmNiNTlhMThiOTExZDZlY2UgbGVnYWN5LXRydW5rCis2MjY1IGNhMDJkOTI3ODE4MDExYjdmMDk2OGUyODE3NjRmOTQ1YTU4OWJhOTggbGVnYWN5LXRydW5rCis2MjY2IGQxYzQ3ZjRmMTU0MTUwMjNmOTY5MGZhZjM3YjRlYzI5ZDk2NzNhOTcgbGVnYWN5LXRydW5rCis2MjY3IDFmMjBmNTFiNzAwZTQ1YjhjMzY1MmFiMjZmZmY1OGNhOTI2NWRkYTIgbGVnYWN5LXRydW5rCis2MjY4IGVjNjk2M2MzNzQxYzE2NzQwNzI2NmZjZjU1NDhjYzQ2NzAyZGU1ZTggbGVnYWN5LXRydW5rCis2MjY5IDUxYTdjOGZlN2M3YjI5MjZkOGFjMDRmMTg3OGMwZWFjNmI2OTk4NzAgbGVnYWN5LXRydW5rCis2MjcwIGE4MTZhYmU4NmY5MDQ0ZDdhYzY1YWFkM2MwZjcwN2FkYzA3NTRmODIgbGVnYWN5LXRydW5rCis2MjcxIDJmMjc1MDFkYjNjM2U0MjdlMTEzNmI5NWE5NjJhNzI3YzBlMWM2NWEgbGVnYWN5LXRydW5rCis2MjcyIGFjZjM1ZWQwZjAyNjQ3NTFlYWQwMTM3NWQzNDVlODgxNDUyODc0OGYgbGVnYWN5LXRydW5rCis2MjczIDg0MzEyMWEyMjZjYTk0NjFiODZkZWY2YjVjMmExNGI3MTA4ZTM3YjAgbGVnYWN5LXRydW5rCis2Mjc0IDQ4ZTg1OWYzMjhjYmMwMTFmNmM3NmVhNGVhYjUyOWZiNTc1ZDgyYWEgbGVnYWN5LXRydW5rCis2Mjc1IDJlYWEwMDg2MGVkYzQ2MGIyYzk5MjU3OWVlZWE3OTZkNTdlOWM4ZjUgbGVnYWN5LXRydW5rCis2Mjc2IDQ4Nzc2YmY0YmQ0OTNjNmMzMTE3M2I1MDI1ZjdkNWE5NjQ4OTM4YjIgbGVnYWN5LXRydW5rCis2Mjc3IDRmNzM5NjJhYWJhNmJhYzg2NDc4NWIyZTIwNjk3NmFiYTdjZTg1NjAgbGVnYWN5LXRydW5rCis2Mjc4IDkzODY4YzdhMTVjOTBiZWViODk0NDE5ODYyMzNhYmU2ZmRiNjg0YTMgbGVnYWN5LXRydW5rCis2Mjc5IDQyNmU3OTZmNjExNTIxNzllYTRkYjllOGExNmRjMDdiMTZkMmY1MGYgbGVnYWN5LXRydW5rCis2MjgwIDE3YTI4OTFlNjI3ZmI4OWU1MjNmNzEyZmU2NTFkZjEwMGMyYzk5ZGYgbGVnYWN5LXRydW5rCis2MjgxIGJmM2Y4MDk0MWVjMTFjOGEzNzFjNTgzZmMzNDliYTBlZTZjOTNkNjUgbGVnYWN5LXRydW5rCis2MjgyIDJkYmQ1MDgxYzcxZTdiZmJhMDU2MGU4ZGFmZjQxZjk2OGRjNWQ2NmIgbGVnYWN5LXRydW5rCis2MjgzIGI5YTA0MzRkMmNiNmYxMjAyZDY0ZjQ2NDg5MzJjY2E0N2VjZjAyYmYgbGVnYWN5LXRydW5rCis2Mjg0IDZkMzI0ZmJhZmFkYzJmOWEzNjU5MzJhOTI3MzMyMDZjMTdkNjM5NmMgbGVnYWN5LXRydW5rCis2Mjg1IGNhMzZlMzA4ZTMzZDlkZTI3M2YxYTY5Nzc5NmQ0OWEyMmVlN2Q2MGIgbGVnYWN5LXRydW5rCis2Mjg2IDMxZTEwMGQ5ZDkyOWM4YjBkOGJhYTc2MTYxNGNkZWQxNWFhYTcwNGEgbGVnYWN5LXRydW5rCis2Mjg3IGNjOTJmYTJjZDg2YmQ4ZWU2ZGY3NjZkODRhMjRjMjZmOTM5MTVmMmUgbGVnYWN5LXRydW5rCis2Mjg4IDg5ZDRmNWRlZDY3MDM3NzYwOTk5N2VlZTFiM2YzYjMzMzY0NTdjYmUgbGVnYWN5LXRydW5rCis2Mjg5IGYzMjY3NmFiM2YzYTA2MTFkMTcxZjg0OTkwZmFmNGQ5NmU1OTdkMzcgbGVnYWN5LXRydW5rCis2MjkwIDNjNWNhNzcyNzk4ODNhNDMxMmU2NzA1OTIyNDY4ZDkyNzIxZDc2ODAgbGVnYWN5LXRydW5rCis2MjkxIDViNmE3OTFhYzZlN2RlNGVhZGEyNDljODgwY2I5MDQ5OTJlMzhmMDcgbGVnYWN5LXRydW5rCis2MjkyIGY3ZjNlNGI1NjkzYzE0YmVkMzlkZWY2M2U2YmJkYmY5YzE1MWM1Y2QgbGVnYWN5LXRydW5rCis2MjkzIDI0MGY4MzRhZWU4YmJiNDg0NTgzMzk0MzQ2YTk1NTg3MjI0ZmEyMzAgbGVnYWN5LXRydW5rCis2Mjk0IGRiNGVhM2FiZjg5MTJjNDcyMDk1MDNlOWM3MjA1NjNjMjgxNWNmMzUgbGVnYWN5LXRydW5rCis2Mjk1IDlhYWMzNzg5MmU4ODhmZWQ4NDhiYTFkYWQ0YjY3YWE0YjY5ZjMyNDQgbGVnYWN5LXRydW5rCis2Mjk2IDgyMGFiYTEwNDZjMzlhZmRmMzkxNjlmMjBmNzMwMDM0OTlhN2Y4YjIgbGVnYWN5LXRydW5rCis2Mjk3IGMzZWM2OWIxZmUzNjA5MzNkZGM2NWZmMjEzYzVjZGY3OGU0MjI0YTEgbGVnYWN5LXRydW5rCis2Mjk4IDk4MzFlMGZjMDFkZTA0NzI4ZTliODFmZWEyY2RkNTM4NmMwM2EzNDYgbGVnYWN5LXRydW5rCis2Mjk5IGJjMjJlYjVkNGEwYTExYmE2NWNkNDIwYTYwNWMyMzM3MmM0MTU0YzIgbGVnYWN5LXRydW5rCis2MzAwIGMzNWQ5ZTJhNjg2MDgzMjdlNTI4MjRkMDRjMjQwOWZjYTBlMWI5ZGUgbGVnYWN5LXRydW5rCis2MzAxIDA5YmViYTk0MDlkZGQ0YWY1MzI4NzQwMWMyOTY0MjgxMmQwYTJlMTkgbGVnYWN5LXRydW5rCis2MzAyIDNlM2U5NWRkY2UyMmZiMzQ4OWY0NDZhYWI1ZDVkMzI3ZmNmMDI2YjEgbGVnYWN5LXRydW5rCis2MzAzIDk2ODUxZjUxYWQ2YmY5ZmVkYWU1ZjZhNGVmNmJjMWQ4ZDgzNjhlOTYgbGVnYWN5LXRydW5rCis2MzA0IDAzOWJjM2U0ZTY0ZWExMjA4ZmNjMzkwMDIyMjEyZjZlNjk4MGI5NGEgbGVnYWN5LXRydW5rCis2MzA1IGYwZWZmZjI4YTI0ZGQxZDA1NWMzNmFjNTkzYzBiNmQ0ZmFiNjEwOTMgbGVnYWN5LXRydW5rCis2MzA2IDc3ZDkxMmYyYWJjYjRmMzMwNDBmMGNiOTNkOWY4NzVlN2I0ODA0NWQgbGVnYWN5LXRydW5rCis2MzA3IDM0MzIzMmMxZGM5YTA3NDkzOTk3MGU2ZDE1MWM0MGE4YjNlOWFiYmMgbGVnYWN5LXRydW5rCis2MzA4IGZhMTQ4MGU2MGVkNmI0ODg4Y2ZlY2Y2NDE4YjJjMmM5NzZjOWRlM2UgbGVnYWN5LXRydW5rCis2MzA5IDJiMmVmYTQ4ZjI4ZDI2Yjk3M2NjY2RkYTAzZDBkNWNiM2FmNzZiZmIgbGVnYWN5LXRydW5rCis2MzEwIDVhYWIzZjY2OGU4NDY5NmQyNWQxNjVhZWE3MzYyNzQwYWY3Mjg2YmUgbGVnYWN5LXRydW5rCis2MzExIDIyZTI5YjE3NDdlMTM5ZDk1OThlYWE1MTI2YzU5MzEzYWYzOTk0OWQgbGVnYWN5LXRydW5rCis2MzEyIDI2YzIwMDI2NjYxMTk4MDZlMDA3YWQzNjdjYjg1Mzg1ZjcyMjFkYTUgbGVnYWN5LXRydW5rCis2MzEzIGY2NjY3OWFhOGRlMGFjZTM2ZjM2ZGJiM2Q3Yjk1YjMyOTc5NmUxODggbGVnYWN5LXRydW5rCis2MzE0IDIxMDgxNmQzNDhiYTQ1ZWU4OTE0NjkwNzhiY2JhNjJkYTA1ODNkYWIgbGVnYWN5LXRydW5rCis2MzE1IGRlMGFkNzUyN2RlN2ZjZTg0NzFlODYwOTRmMjhiNzdlMWNiMGY1ZmIgbGVnYWN5LXRydW5rCis2MzE2IDBkNTRhMTRlZjBiOGM3NGJmYjYyZDUzMzJmMjMzZTU3ZWM3ODY4MjkgbGVnYWN5LXRydW5rCis2MzE3IGQxOTMzOGZkMzhlYjY5ZTg1NDA1Y2VlMWEwOWEwNzM2NGYxZWU2ZjQgbGVnYWN5LXRydW5rCis2MzE4IGZjZDgyYTAxNTA3ZDI2MjI5NTU1YjdiMDkxNGJjYWVjZDc3NTVkYTMgbGVnYWN5LXRydW5rCis2MzE5IDhkYWIzYWQ5NjQwMDZiZWRmZWY4ZjU5NDM0MGYzMGQ3MzYyY2NhMjMgbGVnYWN5LXRydW5rCis2MzIwIDk3ZDI0YWYzNDhjZmU4MjliNDFjN2QyZjJkYTlkODlmZjBhMThjNzAgbGVnYWN5LXRydW5rCis2MzIxIDY5ZGNjMDJlMzEzNWZhYmM3MzRlNTBlYjExMjgxMzNkOWUzNzIxYzUgbGVnYWN5LXRydW5rCis2MzIyIGQxY2ZmNDllM2NjOGQyODBhNDZkM2NhMjU1Nzg3ZDE0YzFjZGExNTcgbGVnYWN5LXRydW5rCis2MzIzIDBmZmMwYjM2MmZjYmI5M2ZhYmJiYjVjNTc4YTYxZGM2MmI3ZWQzOWIgbGVnYWN5LXRydW5rCis2MzI0IDk3NTE5ZGZjNjNhZWI3OWRmZThhMDFmZTkyMmYwODVhMDlhODVhMTYgbGVnYWN5LXRydW5rCis2MzI1IDNiMTE0ZjAzMTVjMTQ1NjE0OTIxNjJhZDc4NWJkZGI4ZDllNDgwODUgbGVnYWN5LXRydW5rCis2MzI2IDIzMTI2ZTgwNDBhMGMxMjYyZWExOGQwZmFlNzJhZDRkNjY0ZjU1ZDkgbGVnYWN5LXRydW5rCis2MzI3IDA0NTdlYTk0ZWY3OWZhZjliYzc5YmVmMWYyNGE4YWZhMmY1NDZlMGMgbGVnYWN5LXRydW5rCis2MzI4IDU4MzBlZGU0MDg2Yzc0NDA0ZDQxN2RlMzI1MWRjY2UzMTZlMTlkOTIgbGVnYWN5LXRydW5rCis2MzI5IDgzYTk1YmY3MDg2N2RiZjM3NGQ3ZGU4NTk5NzQ0ZmEwOGI1ZTFmYjQgbGVnYWN5LXRydW5rCis2MzMwIDhiNzFlYTVkYWNjODMxNTUwMjM5ZDczNzk0ZmFhYmE2ZWQwMTM1MjcgbGVnYWN5LXRydW5rCis2MzMxIDA4NTMxNjZmMGQ2OTY2MGQ2YzQzMmViMzhkMjU3MGFmZDRiN2I3ZmEgbGVnYWN5LXRydW5rCis2MzMyIGI2MTkzOTUyNGMzY2VmY2I0YWUwZTIxNTA0OGMwMDY0ZDE2ZTA2NTAgbGVnYWN5LXRydW5rCis2MzMzIDhiNTkwMTM5OWFkZGI0ZWEyMTY4YmViN2M5MmY1NDM1NGIxYTBjOTQgbGVnYWN5LXRydW5rCis2MzM0IGQ1NWNkZjQzYzI0MDE5YzY0MDg5ZWZhMmM2Zjg3MjcwN2ZmZmE0NjAgbGVnYWN5LXRydW5rCis2MzM1IDQ1NjZhMTljMzQzOGQxNGUwMTZhYTM3MGYyMGMzOGU3ZjExOGRkMDIgbGVnYWN5LXRydW5rCis2MzM2IDc4MTk1NjgzMjNjMzc1M2YzMmQyM2I1NzAyMTgwNGM2NzcyNzM2ZGIgbGVnYWN5LXRydW5rCis2MzM3IDQ1OTEwMzUyMjhhNzczYTUxNmFhNDBlODU3M2Y0YTU5ZGZiY2RlNTEgbGVnYWN5LXRydW5rCis2MzM4IGEzYjA5YTcxMTYyYmMyMmJjNGM0YmEzNzYzNzZmMjYwNmY2MzhkNzEgbGVnYWN5LXRydW5rCis2MzM5IGU5YjM1Y2M4OGI1MGU5NDBkMjdiY2RjYjA0NTc3MmE5ZWM3ZjdhNmMgbGVnYWN5LXRydW5rCis2MzQwIDJhYzJhNjAxMjA1YjMzNWJjODZiMDkxNzNlNmQ1OWQxNGY1MDk3MDEgbGVnYWN5LXRydW5rCis2MzQxIDRkZGU4YzA0MGY5ZWM1MTY1YmUwMzdmYmVjYzAzYTVjYTVkOTU2NmIgbGVnYWN5LXRydW5rCis2MzQyIDViMTQ3MTA5NWEzYTI2NzIxZmI2NDFmNDI1NTY2YTYzYjQyNDI2ODcgbGVnYWN5LXRydW5rCis2MzQzIDliMTk1Mjg1ZmUxNzdiMTVmNGRlNTVhM2U0YTY1OTU4NWZiNzEzYzUgbGVnYWN5LXRydW5rCis2MzQ0IDRlOTc5MTYxNjcxZjQzOWFlODVlMjBiYmRkNTAyOTU3ZmU5ZjMwYzggbGVnYWN5LXRydW5rCis2MzQ1IGJjMGVkYzU4OWFkNDlkOWI1ZDQ5MGNhYjUyNTNhZDI0YTRlYmM3OTkgbGVnYWN5LXRydW5rCis2MzQ2IGRjNWMxMTE3NzMzOTgwZThkODc1NDFlNjI3MDM3YjRhN2U1MGFmZTggbGVnYWN5LXRydW5rCis2MzQ3IDI4MzhkYjgzZDBlZDM4NjA0ZWY2MjhhNDdkMTBjNDMyMGEzOTUwYjMgbGVnYWN5LXRydW5rCis2MzQ4IDA2MzhmZGMyM2VlYzRiYTZlNmIzZTI0ODE4OGY5ZTYxN2JkMGM4MDEgbGVnYWN5LXRydW5rCis2MzQ5IDQwOGUzNzQ5MzRlNWE0MjRkMzA0M2JmZDY0Yjg5NWFhMjE3NTk3OGMgbGVnYWN5LXRydW5rCis2MzUwIDQyODY5MTAwODBhOWZlYWFmZGUzZjgxMzA3OWI4YmRiZDM3NDhkMGEgbGVnYWN5LXRydW5rCis2MzUxIGZlZTkyOGYxNjYxZTc3NTJmNTcyNmZmMzg4MmFkZGYwM2I5ODI5YzkgbGVnYWN5LXRydW5rCis2MzUyIGQwYjQ1NjZlMjEwN2E1Mzc0MTgxMzdlZTEwNzg5ZWFiZTgyNWRjYTUgbGVnYWN5LXRydW5rCis2MzUzIDJkYTEyYzlkNzE0ZjQ3MzJiYmQ0MDllNTg1NjYxODZiYjJmZTMxMTQgbGVnYWN5LXRydW5rCis2MzU0IDM1N2Q3Mzk1Yzk5OGNkZjY2ZWJmNjQ2YmU1NDNmODM0NjVjZmM0ODMgbGVnYWN5LXRydW5rCis2MzU1IGM4ODNkNWUyNGFkOGYzMzVjOTJlYWY2ZDAyYWM5YTg0NTRhNDRlYzEgbGVnYWN5LXRydW5rCis2MzU2IDZkYzdlZDhhNDM0YjFmZjM2OTBmYjlhNTk4MTFhMjI0OWMxMzM0ZTEgbGVnYWN5LXRydW5rCis2MzU3IGZjOWIxNjVhOGEwOWQzMTI4NmJlMDg2MGE5ODQzNzUwYjM5NDY5NjAgbGVnYWN5LXRydW5rCis2MzU4IDgxZjYwZjUyYjg3MzI1ODVhZjRlOGMzN2E5Y2Y0NzcxOWNkYWUwNGUgbGVnYWN5LXRydW5rCis2MzU5IDk1N2Y0MmVhMGY4NDQ0NDg2YTIzN2NiNzkyYjMwNTdlZDdjMzIzYTAgbGVnYWN5LXRydW5rCis2MzYwIDNjNzUzMDZhNjVjZWQ0MTY2MzM3OGM2OTBjYTVhMzQ1NGU5ZGM3YTkgbGVnYWN5LXRydW5rCis2MzYxIDU3MTY4MjVmNmU5YjEzN2ZmODY3ZTNkOWJhYmI0M2Y4ZTMxMzVhNTkgbGVnYWN5LXRydW5rCis2MzYyIGY5MDMwMTU0NGZhOWJlODlhNmI4ZjJhODljODViN2FhNGQxNmViMTIgbGVnYWN5LXRydW5rCis2MzYzIGQ5ZTdmMTA4OGMzYjM2M2JhNDg1MmNkOGVhNzFjODI3NDFlNzZlODAgbGVnYWN5LXRydW5rCis2MzY0IGFiMDg4OWU0MjFlZDQ3YTJiMmE1NDA0MmI5NjQ0NmI2NDQ4MDU3YTQgbGVnYWN5LXRydW5rCis2MzY1IDk1OGQ0YzY3NTI2YjA5Y2RkZDJlMjYyMjU0MjMxNDNlMGIyZGU0NjQgbGVnYWN5LXRydW5rCis2MzY2IGE1MGFlODM5M2QzNzgwY2M3NDNiZjliODM3MDRjMWI5OTA1MDJlZjggbGVnYWN5LXRydW5rCis2MzY3IDMzZTVkMWQ0MmNjMjYyZjk4MjA0YWJkOTM1M2MxOTJlYTdjZDc1MzMgbGVnYWN5LXRydW5rCis2MzY4IGY0YTNiMTZlOTVmMDdmYWFmNGVmMWQwYTFjMmRiYWFlOTkyNmM0MWMgbGVnYWN5LXRydW5rCis2MzY5IDMxOGU2ODljMjIwZjkyMTk3ZDllYzc2NWJlNjllY2FmMzI0NzVkNDYgbGVnYWN5LXRydW5rCis2MzcwIDk0YzZiZjZmZDdmNGZhMDk1MDI0YzdkYWY4OGFiNGI0OTIxZGM1M2EgbGVnYWN5LXRydW5rCis2MzcxIDU4NDkzNjg5MGY4NjY5MTVkMjE1NGJkNTI1ZTUwZjNmNDVmMmQxNzcgbGVnYWN5LXRydW5rCis2MzcyIGNiYTRjZTE1YTBkNWM5OWFhNjVhOWM4NTk2ODRkZGU1Y2RkN2M2YmYgbGVnYWN5LXRydW5rCis2MzczIGNlMmQ5MjM5YmE4MTE0NWQ4YzYwYzJjNjFmOTA1ZGViN2I4NmQ4MzggbGVnYWN5LXRydW5rCis2Mzc0IDA4NjRhNjNhMTBhOTJjMTdjNTFjZDMwNDEzZTJiZDAzZmZjYjFjYjMgbGVnYWN5LXRydW5rCis2Mzc1IGEzZjY3YmI5NmFkYzhjMzI2ZGZmZDg1MmIwZTcxZmM5YmU3MzNhYTYgbGVnYWN5LXRydW5rCis2Mzc2IGZlNDExNjNjMDBjM2ZmMjlkZTVmNTZlNjNjMzIyOGQ0NDg3ZjAxMDUgbGVnYWN5LXRydW5rCis2Mzc3IDk3ZTcwMTFmYjFiMTkxYTMwNGY2NWJmNDNhMTU2YzNmYzM3MDMyMGEgbGVnYWN5LXRydW5rCis2Mzc4IGEwZmQ4MTY4OGJlNTJmNWQ1NzI5NThjOWMyNGNjMDQ5MWI2ZWIzMTggbGVnYWN5LXRydW5rCis2Mzc5IGFjMWQ1YWJmZDc4ZWU0OTEwZDdlNTgzMmE3OGM1NDUyNWQyYTMyMWUgbGVnYWN5LXRydW5rCis2MzgwIDg2NzE2NDJlMTRhMzc4Zjk5OGI5MWU4MjA2YTU3ODU1YjhhNDA4NmQgbGVnYWN5LXRydW5rCis2MzgxIDZkNTA5NmI3MDM4ZDhhMTY5YTc0MWIwOWUxYWVmYjE1MzkzZGQ0YzIgbGVnYWN5LXRydW5rCis2MzgyIDljZjExYWYzNjI4Yzg5ODU5YzUzMWQ1MzVmYzRjNzg5M2MyMWM4MzAgbGVnYWN5LXRydW5rCis2MzgzIGE5YTkyZGMyYjM3NDk0NmMyODY0MTYxMjIzZWMxN2ZhNzY5ZDE3ZmUgbGVnYWN5LXRydW5rCis2Mzg0IDViYmUwZGNlMmUyNjcxY2FmYjhhMDQyNzQ2ZDRlNWNjMzg3MWM2MGMgbGVnYWN5LXRydW5rCis2Mzg1IGYyOGQzZDg5ODJhMjVhNzM3NWExYTUxZmZkMzZlMTIyNDFhMWZmNGIgbGVnYWN5LXRydW5rCis2Mzg2IDUyNGNmNTAxYzg1MWZkODVhMzllNzJlNTY5Y2FlODA2Nzg3ZTNjYTMgbGVnYWN5LXRydW5rCis2Mzg3IDM0MTE0NjEwMGYzOGNhOThmYTY3ZTcwZmE4ZWEwMDlmOWJkY2M0MmQgbGVnYWN5LXRydW5rCis2Mzg4IDg0ZTE2Y2Y5MjE5OTI1YjVjZTM4YTQ5ODkwZDAyNTk5YWVmYzIyNjcgbGVnYWN5LXRydW5rCis2Mzg5IDQ0NDEyZTQ2ZjI2ODc3ZTk0NzMwZjU5MjU3Zjc4YjM4ZWEzOWFlNDkgbGVnYWN5LXRydW5rCis2MzkwIDdkZTVlMTE1M2IzOTJjYjZkNTZmYWU1YzNkNmEzNzE1OTRlYTQ4ZGYgbGVnYWN5LXRydW5rCis2MzkxIGY0ODc3OTNkNjAxODQ2ZDBmOTY2MjEzNzU5N2JlZDg5YjMxZjM0NzMgbGVnYWN5LXRydW5rCis2MzkyIDkzNjYxNjRmNWM0YTkzZDcyOTdjYThkNzQ5ODEyNWFjYTAxNzYxM2YgbGVnYWN5LXRydW5rCis2MzkzIGMyYWUwNDQwYzQyNGE3MjI4NGE1N2VjODQyMWU5NzUzNTk1OTY5Y2IgbGVnYWN5LXRydW5rCis2Mzk0IGU4YmQ0MzBjZDM1N2U4NmNmOTk4ZDdkODk4Zjk1MDU0MmNmMjVmOTEgbGVnYWN5LXRydW5rCis2Mzk1IGEzOWQwNjQ5NzUyMDM1YjdkOWE1NmIyYzQ2ZWE1MWRhZDExOGE2MTcgbGVnYWN5LXRydW5rCis2Mzk2IDA2M2Q4Njc0MTQxMGUyZWQ4N2QxYzI5NmY5YWUxN2UyM2M0ZmY0Y2QgbGVnYWN5LXRydW5rCis2Mzk3IDRiY2VlNjNkNWJiMTdkYjAzODM3NjZmYTczNDAwZDNhNGMzM2FlZjkgbGVnYWN5LXRydW5rCis2Mzk4IDFkYTE2ODE4NWU0ZTA1Yjg5YTUwODZhMThkZGM2ZTkzMTg3Y2NmYmEgbGVnYWN5LXRydW5rCis2Mzk5IDUzZTc1N2JiNjdkNWQ2MzFlNmJhOTgxYjVmODRjN2M4MTJkNDc3YjkgbGVnYWN5LXRydW5rCis2NDAwIDE2NDBlMzU1OWI4NjY3OTlkOWMzZWEwOWIyMjU5OTliYjhkYzExNWEgbGVnYWN5LXRydW5rCis2NDAxIGZmNjhhMmVjMWZmMTJjYjYxNWNjYmM4NzJhNTZjNTI3MDRmNDk3OTkgbGVnYWN5LXRydW5rCis2NDAyIDUyYzE5ZWU4M2E2YjBmNzFjODkwMDdhNWQyMmE4ZGRiZWZhMTkyNGYgbGVnYWN5LXRydW5rCis2NDAzIDg4MmEzMWI3Zjg3MzExZjhlMDhmMDA4MmRhM2FjYjQ0YjkyYmU4MTcgbGVnYWN5LXRydW5rCis2NDA0IGZlMTE5Njk5NTM0NDZkNzBhYTkyMTEzNGY4ZDM4NzEwNzBjMTQ1ZGMgbGVnYWN5LXRydW5rCis2NDA1IDYwYmI3NDNiOGE1YzIwMDBkM2IwNTVmNzIyNDc4ZTU5NGJiZGUzODQgbGVnYWN5LXRydW5rCis2NDA2IGY5YWQ5OGI1ODQ3MmIwOGU3ZTU5NTAyZTYzMzAzZTI4ZjU4M2U4MjkgbGVnYWN5LXRydW5rCis2NDA3IGQ3ZDg3MDViYTY0NDRkZDBkN2ExZDVhMjE4NDhiMjU3MTRiNmM5YzggbGVnYWN5LXRydW5rCis2NDA4IDZlMGJiYTkzYTBlYjMzODYwOTRkYzNhOTg0OTc4MzI4N2ZlYWQ4MTggbGVnYWN5LXRydW5rCis2NDA5IGRlY2QxM2Y2NjI5ZDVhNDMyNDBmNWU1ZTVkOGNkZWUzMmI3ODcxMmIgbGVnYWN5LXRydW5rCis2NDEwIDYxYjRjYWU3N2Y3ZTg3MzVhYjA2NjZkZTgyODVhYzU0Yjg2YTRjY2QgbGVnYWN5LXRydW5rCis2NDExIDY3NTMyOGIwODEyMmI5Y2M5NDRlZDEyMmZkMmZjYzdmYjQzN2YyZmEgbGVnYWN5LXRydW5rCis2NDEzIDQ2YjMzY2Y4YjkxM2U1ZDA3MjJkYTFhNTVlODZjNTVjOTIzZTdlMmEgbGVnYWN5LXRydW5rCis2NDE0IDBkNDQzN2QxYzJiNTdlYmJiYWZhZTIwMGUyYjU5MjFjYWIwZmJmNmEgbGVnYWN5LXRydW5rCis2NDE1IDM4Njg0ODUyMzc2ZjU0MjI2MTM5NTNjMmQwZDJiMGQ2N2QyZTE0NmIgbGVnYWN5LXRydW5rCis2NDE2IDZlNjA5ZTI2NmJlOWQxMGE5YjFhMjM2MmRkNTY0ZjY5ZjRlM2U3YzggbGVnYWN5LXRydW5rCis2NDE3IGZiYWZiMGNkMGEyYTU1ZmYzMTNhZDRlNzA5MGQxMzc0ZjgwNGY4MTUgbGVnYWN5LXRydW5rCis2NDE4IDczY2Y3MDgyYjllOGQ3NDE0NzJjNGNmYmU4YzY2ZGQyNzE1MzQ5MzIgbGVnYWN5LXRydW5rCis2NDE5IDZmNzhkMzE2NDM3NmFlMjQyMWY1MDA0MTdmZjJjZDc5MDIwNTM0OTMgbGVnYWN5LXRydW5rCis2NDIwIDEwNzUzZTRkNzZlNzFkYzZhMDg1ZTUyNjIyZGY5MTRhNzRjMDdjYWQgbGVnYWN5LXRydW5rCis2NDIxIGRlYWRlYTQzYmI1MzY0NTM1ZTVkZDE3MGYyOGFlZjBkMTdjZmY5NTUgbGVnYWN5LXRydW5rCis2NDIyIDNhY2FmN2FmNDljYzEwMTM2NjMwZjM0NTdhMDAyNWVhMDZhZDJmMzkgbGVnYWN5LXRydW5rCis2NDIzIDc1ZDAxNmM5N2QxYzJjZWVmNDc4ZmU4NzVjMzJiZDA4NWQxYzAzMGMgbGVnYWN5LXRydW5rCis2NDI0IDkwODE4MTlhYmJmNTU2NzQyYTlmOWY0MjBiMzU2NTllYWY0MGFkZjAgbGVnYWN5LXRydW5rCis2NDI1IDdlZTFiMTAwZWQyOWE0ZmYxZjIzMTU3YmU4YzBjZmI0OTJhNDNkMGMgbGVnYWN5LXRydW5rCis2NDI2IGYwZjhiNTBiNWI2Y2Q2ODZlYzBlNmJiNDljY2YwMWRmZWRhYjNjOTAgbGVnYWN5LXRydW5rCis2NDI3IDlkOGE5NjVkZTdlYzhhYzlmNTM2ZGM1NTY1NDE0OTZlNGE4MTY1MjkgbGVnYWN5LXRydW5rCis2NDI4IDI5MDE1YjU4ZTkyMjAyMzQ1Mjk4ZWZiOTgxMGY5NDM4Nzc5OTc4YTYgbGVnYWN5LXRydW5rCis2NDI5IDhlMzA5YmU4OWVlNDU0ZjE3ZGQwNjBlMWU1OWFlZDI3Yjc5MmQwZTkgbGVnYWN5LXRydW5rCis2NDMwIGYwMWU3YWYxZGQ2MDY4M2IxZjMwMmU5MzI1N2FjNDczODU4NmVkMTMgbGVnYWN5LXRydW5rCis2NDMxIGI4NmM4MDQ0OGQzNTVlN2U4OWNiYzc2YzIyNDM1NGJjYWIzMTJjYjMgbGVnYWN5LXRydW5rCis2NDMyIDZhZjdhNzAzYWRhZWRhMWM2ZjVlNWQ1ZDJiNWMyOTQ4NDIyYTI2NGEgbGVnYWN5LXRydW5rCis2NDMzIDkwZjUwNTU1NTBkOWEwNGU1MmE2Y2Y2ZDUwMDIxNTFjN2VjODEyY2MgbGVnYWN5LXRydW5rCis2NDM0IGJmZDliYWYzYTljMjlmZTVlZDYzZTJhNmE4MWEyMTBjNGY1YWE4ODkgbGVnYWN5LXRydW5rCis2NDM1IGYwOGQ3ZjM2OGViZmExOGU5OWQwM2E2YThkNGRmMDdkNTA0ZTRmZTkgbGVnYWN5LXRydW5rCis2NDM2IDAwNzIyOTkwYjgwYzMxZjJlZDlkZGYyNWY1ZGE0ODNmMTg2NjY0YjEgbGVnYWN5LXRydW5rCis2NDM3IGZjZmVjNmE4MTBiYTU0M2U2N2IyMGY5MmIxOTQ5Nzg4ZDZmYjVhOTcgbGVnYWN5LXRydW5rCis2NDM4IDljMDVmZjZmYjBhNGU0YmI3NWU1YmQwNjNmZTk3YTIxYjcxMjYxNDcgbGVnYWN5LXRydW5rCis2NDM5IDI4OTdkYWZlZDk1YTcyODRlY2Y5YWE0Y2EyN2JmMGQyZTkxMTY3MDMgbGVnYWN5LXRydW5rCis2NDQwIDUzMDE5ZTNhNmQ1YTM0MDU5MjgyZTVmNzc4ZjM3YWYyZjFkM2UyNzMgbGVnYWN5LXRydW5rCis2NDQwIDEyOWYxMjk5ZDRlOTdlODg0YmJiYmRkMDBiYWYxMDFkMTc4OTczZTYgbGVnYWN5LXRydW5rCis2NDQyIGFkODhhMDAwNTIxZjdiM2YzZWRiNTU0ZWJhZGQ4NzcwZThmMDA4ZDMgbGVnYWN5LXRydW5rCis2NDQzIGRjMTQ0MjU5NDk4ZmNlOWFhNjg5YjI4ZmJjOTc2MDJjYTNhZjMwZDEgbGVnYWN5LXRydW5rCis2NDQ0IDE0ODE1MjUyYzdhM2E1YWU0MWQzZjg5MWI1ZjhiMTJiYjgzODE5MDQgbGVnYWN5LXRydW5rCis2NDQ1IGJiMGNlNjUzYzJiYTAyN2JiNDEyOTk3ZDBiMThiNGE3MTZkYmY2YjMgbGVnYWN5LXRydW5rCis2NDQ2IDNkMWU0Yjc2Zjc0NWE5MmM5MTVhODZkYjNiZmQxOGYzNzdlNmQ4OWQgbGVnYWN5LXRydW5rCis2NDQ3IGZjNTA1ZjAyYWQ4YTI4MDc1OWViMDc0ZTUyYjliMDgwMjAwNTQ2OWQgbGVnYWN5LXRydW5rCis2NDQ4IGI3NmZlNjdlZWQ0NGVhNzA5MzAyMGQ3OTU2MTcwYjZhNzFmNWJlMjQgbGVnYWN5LXRydW5rCis2NDQ5IGEzNDk5N2I2ZWRmNDJiZDdkZTE1MjAzMGYyMGFlMjI1NDdjMmNjMjcgbGVnYWN5LXRydW5rCis2NDUwIGVhZWM0ZjZhOGJlOGNmZjdmZTEzYmIwOTcwMjMwNGFiZmVkMDk1MzUgbGVnYWN5LXRydW5rCis2NDUxIGI5M2M0Y2ZjMmNmZWE0YjRjM2Y0NjNhNGNhZTUzNTg4ODAwM2VlNzMgbGVnYWN5LXRydW5rCis2NDUyIDg3ZTUzYzYyY2FjODIxNjBjN2NkOTI2OGYwOWM3ZjEzZTE4MDU4NzEgbGVnYWN5LXRydW5rCis2NDUzIDRiNTA5OGIxZmNlZjI4MDYwYWI4OTBjZTlhMDJmY2U5MjM2YWJhMjIgbGVnYWN5LXRydW5rCis2NDU0IGZiNWZjMDMyMGU2ZTVkNTJkYWFjOTc1NDUzNjhjYzhiYTljNmIxYWEgbGVnYWN5LXRydW5rCis2NDU1IGNhZjExMDcyNGNjMTc3ZTQ1MDNiZjYwNzhkYjcyMjk2YTUxMjk3YTIgbGVnYWN5LXRydW5rCis2NDU2IDQ0OTAyNTE2NjE0YTkwMWZjOWVkOWZjYzY4ZGE5MWQwMGY0YWIxNTggbGVnYWN5LXRydW5rCis2NDU3IDA2MTNmMTdkY2ZkODY1M2EzMDQ3NDQ3MTNkMDJmN2IxNmE2N2E1NjMgbGVnYWN5LXRydW5rCis2NDU4IDAxMWNmZTc0OTBlYjVmOTZmNDgzNWI0YzY1ZTg2Y2RjNjlmZGUyYzEgbGVnYWN5LXRydW5rCis2NDU5IDljMmNiZjMwNjg2NGQyZmI5YjA1M2MzZDhiMmJjNDFlNDQ4YTkyYjAgbGVnYWN5LXRydW5rCis2NDYwIDZmYmM1YzY2NTgxMjFlNWE0MDg1MDIwZGRjYzA2ZjdmYjE2NmFlMzQgbGVnYWN5LXRydW5rCis2NDYxIGVmYjNhNWEyY2RlYWNiZmIxZjMwZTM5MzRlN2ZhYjNhM2RlNzg4OGMgbGVnYWN5LXRydW5rCis2NDYyIGE4MTU3NjViNDY5NTJjMWYzYTg4MTYxODI0MDVlMTA4ZTE3ZjUwMzIgbGVnYWN5LXRydW5rCis2NDYzIGFlOGQxYjQ2OTgxM2E3MWZhNzUzY2I0MGQxMDNhZmRkN2NkOTJkYjQgbGVnYWN5LXRydW5rCis2NDY0IGNmYjhiN2JjMDIzM2E1ZjEyY2UxN2Y1YWQxMDkxZWQ2ZGRlNWRkMjMgbGVnYWN5LXRydW5rCis2NDY1IGE0YWFjNzY2Y2JmMDA1ODI4ZWE5ZDJiYTU0YmM5NzU2MWU3YTdhZGMgbGVnYWN5LXRydW5rCis2NDY2IDY0MTRmZmI3ZjI4NWQzNjJlMzIzYzU2ODk3NTUwOTY1MDAyZTczNWYgbGVnYWN5LXRydW5rCis2NDY3IDNmNTdhYjMyYjc0MTJiMzM1YzBlOGEzODFhNDEyNDIzY2FhYWJkZTUgbGVnYWN5LXRydW5rCis2NDY4IGNhMGUwNWVjODViOWFhZDMwZDE4ZGE5MGE0ZGMzYTgxMWU1YTYxYzEgbGVnYWN5LXRydW5rCis2NDY5IDBlYzJjZTk3YjhlM2NiZDBhYWRlZTAzMTgxMzVhMWUyZjg4YzAzMjYgbGVnYWN5LXRydW5rCis2NDcwIDgwNjk3OTBiMzk3NDAwOTE5ZWU5OTBjZDM5MjQ0ZjRkNDBjMjQ2N2IgbGVnYWN5LXRydW5rCis2NDcxIGY2MzBhMDY3YWU4Y2IyMjEwYjY4Y2M3ODJmODVlMTVlZTg5YjE5MzkgbGVnYWN5LXRydW5rCis2NDcyIGIwOTc2Y2RiZDU5ODAzYjMwM2U2Y2EwMTM2OTA1NmM3YjBhYTU1N2MgbGVnYWN5LXRydW5rCis2NDczIGJmZmZkMzhkNjAwYjVkOTY1YTVjZmJlNjFhNDY4ZWRhNTgyZDIzNTYgbGVnYWN5LXRydW5rCis2NDc0IDFlZDc3M2UxNTkzNjkzNDVjMzllMjg2NzQ0OWYxOWUzZTFiZGExZmQgbGVnYWN5LXRydW5rCis2NDc1IDQyNDE1ODI2MzZhZGIzOGVjYzE0MzgyZGNkMGEzZmE1Yzg2OGQxZDIgbGVnYWN5LXRydW5rCis2NDc2IDEzOGZhMTVhMTAzMmVjMWIxOGM2OTFlNjgxY2U4Mzk3YmY4YzhlYzQgbGVnYWN5LXRydW5rCis2NDc3IGQzYTFmNjA4OGMyOGYxMzE5OWYwYzI0NjAwZmYxYjliODdlY2Q4NzcgbGVnYWN5LXRydW5rCis2NDc4IDc0OTUzMjI0MjdjNzZhYzZlM2Y3OTUzNjc2M2Q5NWQ3MTFmMmMyN2YgbGVnYWN5LXRydW5rCis2NDc5IGMyYTYxMWFlMGZlY2Y0OTY5MDAzYzJlOWY1MWJiOWYxNDJhNGQ4NGIgbGVnYWN5LXRydW5rCis2NDgwIDFhMGFhOTg2ZjZmYTY0NTViN2IxM2Y3ZWI0MmE1YTJlNWQ3YzExNzQgbGVnYWN5LXRydW5rCis2NDgxIDE4YzMyNzE0ZjhiYTU1ZDE1NWVhNmE4OTYyY2UwOTI5MDFjNTM2MTcgbGVnYWN5LXRydW5rCis2NDgyIDYxMTA2OTg2YTFhNGM5YmQ1MzVjNjExMWM0YWM5ZGY0MDlhMGNlZWYgbGVnYWN5LXRydW5rCis2NDgzIGNjY2Y5ZjI3MzJjZjNlZDRmZTk3ZjdlNTFmMjUyODg3MGE0N2RkM2YgbGVnYWN5LXRydW5rCis2NDg0IDkyOTQxMWRiMjBhODU4N2Y2MTU0OTcyMGQ4MGI4NzYzNTgwNmE4N2UgbGVnYWN5LXRydW5rCis2NDg1IDIyYTAzM2JiZTY1NWYxNWI0MDNmNDYxZGI0MGI0ZGZlNmE1NmY1MjIgbGVnYWN5LXRydW5rCis2NDg2IGFhOTU0ODg4NWIzZjgwYTMyM2E4NzEyNzQ0YWE1ZmM3YzU3NmNmYzkgbGVnYWN5LXRydW5rCis2NDg3IDQ5MDllZjM5ZWFmMWRiODI0MTQ2ODQ1MDIxYzhlZjM0NTE5MDczNjUgbGVnYWN5LXRydW5rCis2NDg4IDIxMTIxNWMxYzUwZDRiMjRhM2Q3NDg0YjMyMTk2MzZlYTVmMTY3NDUgbGVnYWN5LXRydW5rCis2NDg5IDkzODkxOGZmMzUzNzk1MGU2OTI0OGU0ZWIyZmJmNmFlMzU3YzY2NjcgbGVnYWN5LXRydW5rCis2NDkwIDVkYzhjMDQyOTA1YjVjMWViMjI2ZDU4N2FhNjVkYjNhYTY3MDRhNDEgbGVnYWN5LXRydW5rCis2NDkxIDQwYzkyOTMzNWQ3ZjI0NDQyMjZjNGY3Yjc3MTVlNjY3YThkNTIzMGUgbGVnYWN5LXRydW5rCis2NDkyIDFkZWUzZTRmNjdkZjAyMjI0ZTg1ZDMzZjg0YjZiMDIzMGUzNjA4NzUgbGVnYWN5LXRydW5rCis2NDkzIGY0OWU0MDU3ZWI2ODMwMmYyOTliMzdhZmNmNzYxMjI5Mzg5ZTI1MTQgbGVnYWN5LXRydW5rCis2NDk0IGNmMjYzMGE0MWY4NzUyZTZmZjUzNzU4YzE2ZWNlNWFjYWI5MTM2MzMgbGVnYWN5LXRydW5rCis2NDk1IDRmY2NkOWVlZTY3OWMyMGNjNzFlYTE1ODAyZDhlYjAwMGM1ODU3ZGIgbGVnYWN5LXRydW5rCis2NDk2IDg5MmY0NTYxNjQ4YTA5NTBlMWM1YTdiYjE1MWI1Njk4NDc2MTk4MjIgbGVnYWN5LXRydW5rCis2NDk3IDUzZDUxMWMwMDI5ZjU0MTMxODU3ZjJjZDdkZGU0ZTBiMjgxZjk0MWQgbGVnYWN5LXRydW5rCis2NDk4IDg1NGYyNWZkZThmNDJjMGEyN2Y4MTVjYjg2NTc2N2JmNDg5MWVkNjYgbGVnYWN5LXRydW5rCis2NDk5IDZiYmMxM2I3ZGNhODhiODM5NjA4MTU1NDg1YzZhOGZlOWUwN2JkNGYgbGVnYWN5LXRydW5rCis2NTAwIDJjZGI4ZjVhYzM2NWY4ZGNmZDc4NDc3MWJjZGExNGFiMzk2Mzc0ZjQgbGVnYWN5LXRydW5rCis2NTAxIGRhMmI5YWU5MWQ5NTNlYzYwYjkxNmJmNDg3MzBhOTA3NTZlOWIyMTAgbGVnYWN5LXRydW5rCis2NTAyIDgyYzlkZWUwNTNiYzZkNDQxZWU0YTk5NjdhOGIzNzUwODZmOTI4NTUgbGVnYWN5LXRydW5rCis2NTAzIGU3N2ZhZjU1Njk3YjhmM2RjNTJlYTA0ZTcwNmM4ZGEzZGRhNDk0MDggbGVnYWN5LXRydW5rCis2NTA0IDNhMjAwMDAyZDgwYTg4MGVhMzUwODFmYTY2YWIwZDhmODY2MmI1NTAgbGVnYWN5LXRydW5rCis2NTA1IDg5Mzk0OWQxZDI4ZWFhN2UyZjdkNTI4N2VkZTE0MjI1YzcwNmQ5OTQgbGVnYWN5LXRydW5rCis2NTA2IDU1OTJkZTk2NTZkZTRhOTIwMDQ5ZTA1ZDFlYjM0YjViOGY2NWFjMWUgbGVnYWN5LXRydW5rCis2NTA3IGI0MzMzOGM1MjMxZTEwNTMxNjE0ZDIwMzcyNTQxYTVjZTE5ZWVlY2QgbGVnYWN5LXRydW5rCis2NTA4IGQxYmFlYzU3MTg1MjRjMzMzNDk4NTY5YmY4YWRmNDhkNGRiMDExNTYgbGVnYWN5LXRydW5rCis2NTA5IGY3YzI0M2QwMTg0NDY5ZGNjZmEyMDE1ZTY3ODQzNTZmYTU3NWQzOTkgbGVnYWN5LXRydW5rCis2NTEwIGNhMzkzNTViZTU1YTJiYWVjOTkwMzk1ZjBlYThlYzQxM2JjMjExM2IgbGVnYWN5LXRydW5rCis2NTExIDI2MTQ3MmZhOTcyYTc1ODBmMzQzMGRiODA3M2RlZWRiYThjMGI1ZTEgbGVnYWN5LXRydW5rCis2NTEyIDIzZjI4MGFiNTQwOWI3OWU2MTczZDRlMWY4NTFkYmI2NzU1OTRkMzMgbGVnYWN5LXRydW5rCis2NTEzIGY0MWYwY2FmMWNmY2UyZjU0MjQwYjYxMzA1OTQzODk0ZTY0NjgyYjEgbGVnYWN5LXRydW5rCis2NTE0IDhhMDEwZGQ0NzM2ZWI4M2UwZTYzNTZmNzdmNDk1OGE1NmM1NzhjMWEgbGVnYWN5LXRydW5rCis2NTE1IDZiNGQwZjFhMGFlOWM5YmI1NWMxOGQwZGMwYzJhZWFhMGE4YWMyMjYgbGVnYWN5LXRydW5rCis2NTE2IGQ2YzdlNDBjYmZkZjBhMzkzZjZiNDIyMzQzNTUwNDgzYTg5NDQ5OWUgbGVnYWN5LXRydW5rCis2NTE3IGVmN2UzYzQ5OWE0ZGEwMWNkMmUxMmQzNTY1MTA3MzViZDlkOWY4MDcgbGVnYWN5LXRydW5rCis2NTE4IDk2ZTBhNzIwNGUzMWQ4MGZmN2ExODRmMGEyMzU3MDliYTRlZjFiYzkgbGVnYWN5LXRydW5rCis2NTE5IGViOWZjNDA0YzA2NjMxM2U0ZTlhZTc2YmQzZTA3YzVkNzkzMzFkMWEgbGVnYWN5LXRydW5rCis2NTIwIDNlNjg2M2NlYTM4MzI2M2M1OTgyYzczYTg0NTI1ZDFhNzcxNjhiMGUgbGVnYWN5LXRydW5rCis2NTIxIGY3YjEzZDQxODJiM2RhZThiMzczZTIyZGE3OTJiYzQ0OGRmNjIwZDUgbGVnYWN5LXRydW5rCis2NTIyIGEyZGM3Y2U0ZGZiZTdiZDZmYzNjYzMyNzVkYjlkNjBjZTg4YWQzYmEgbGVnYWN5LXRydW5rCis2NTIzIGJjMDY1ZGYwM2VlNGVmODhjMmM0ODZkYWZhYTUwM2M0OTc5MTg2NjUgbGVnYWN5LXRydW5rCis2NTI0IGQ2Y2E2ZTIwNzk5NDc3MjI5MDViMDI4OTA4YzIxNjIyNWIzNTc2NWEgbGVnYWN5LXRydW5rCis2NTI1IGVmNmM4OWZlMjFlZGVhMWFkYzE4ZmI1NWUwMTE1MTI2ZDUwNGI1OGIgbGVnYWN5LXRydW5rCis2NTI2IGFjOTI1YjlhMWQ2NzcyMTM3ZTVjNmJmOTNhMGQ2YTBiZTQzNjZhODUgbGVnYWN5LXRydW5rCis2NTI3IDY2OWNjZDllNzE3ZThlYzllMmNlZWI4OGE2ZjlmM2FmM2U0YmQ5OTQgbGVnYWN5LXRydW5rCis2NTI4IGYwMTEwYzVjNjIyNzkyYjQ2NWIzYjU3YmIxYzFkZTFmOTNhOWE0MTYgbGVnYWN5LXRydW5rCis2NTI5IDZkZWVlM2IyMDZiOTk0N2U0NGU4MjY5MGJjZmUwZmI5MTQyZDJmMjggbGVnYWN5LXRydW5rCis2NTMwIDgxODU5OWUzOTEyM2NjYjgxYjM5Mzc2YjA4NTk2MjI0ODMzNDJjN2QgbGVnYWN5LXRydW5rCis2NTMxIDIxYjI4ZGNmYTg2NTQzZDc1ZDc0MmYwN2JiMzgxMjgyNDc5YjQ1MDYgbGVnYWN5LXRydW5rCis2NTMyIGQ2ODk3Mzg1YzMxODVmY2JkZGQ5YjEyODAyM2EzODdkZGU1N2NiNjQgbGVnYWN5LXRydW5rCis2NTMzIDY0YTU4YjBmYjE2NzEwZGNiNzM3OTQ3Y2E2NTU5NGM1MGM0Nzk1Y2IgbGVnYWN5LXRydW5rCis2NTM0IDRiZjAxYzY2Y2I2ODZjYTk4NTAzZDYxNWFhZDUwNmI4YzhlMGJlZDIgbGVnYWN5LXRydW5rCis2NTM1IGQ2ZGUyYzE0ODgxOWFjN2MzY2ZiODIyZjY3NDNkNTliNDAyN2QyMWIgbGVnYWN5LXRydW5rCis2NTM2IGE1ODljZWRjYmVmNTQ2NTQ1MTRhZDE1YjI0MTFlODVlY2QxOGU0YTIgbGVnYWN5LXRydW5rCis2NTM3IDc4ODQzNDcyZmI2ZmEyM2Q5NjgwZGZlODVhNGYxMzdlNjVjOTgxZjcgbGVnYWN5LXRydW5rCis2NTM4IGJkZTE5YWNmMTA0NWQ0N2U1OTgyOTI2ZWU5ZDU1MjVlZjVjZjdkMzYgbGVnYWN5LXRydW5rCis2NTM5IDJjODliZjA0ZjgzNGVhYWVhY2YxNTUzZGQzODBlOTE4NWFmOWVkMjUgbGVnYWN5LXRydW5rCis2NTQxIDIzMWE0MjA5MTgzMDJlOTdkYzg5OWU4MTA3OWZiZDc5NDkwZmI3MDkgbGVnYWN5LXRydW5rCis2NTQyIDRjNTRlY2ZhZGNlNWU0ODZiMDY4ZmIyZTgwODMxNmI0YTkwZjliMTYgbGVnYWN5LXRydW5rCis2NTQzIGVmZTg2ODkxZjQxMWI4NTdiOWFlZWVjZjkzMWFkNDg1YmYzNjY4YzcgbGVnYWN5LXRydW5rCis2NTQ0IDE5NDEyMzA1ZDMzNWE2OWNiMWNmYzE5MWM4ZTIyM2Q2ZWJmZmNhZDEgbGVnYWN5LXRydW5rCis2NTQ1IGM1NzVhOTIwZTRhMWYzNWE0ZjkzYTE2MWViNmJlYjFmODE3ZWVkNGUgbGVnYWN5LXRydW5rCis2NTQ2IGY2NjU2MjUzNmYxMWIzZDVjNzJiYmNiZGNkNGUwYjcxZGQ5MDAwMWEgbGVnYWN5LXRydW5rCis2NTQ3IDU4NTA0YzlhMzdkYzRhODNlM2ZkYzI0NThhZDI3ZGUyNThlZTA1MmUgbGVnYWN5LXRydW5rCis2NTQ4IDdiNmVlZmFjNmU0OTM3NjA5NzM2ODgwMmFhNmE2NTZkMTJmN2FjMzEgbGVnYWN5LXRydW5rCis2NTQ5IDRhNzAzOGU3YTMxMzljMDlmNDlmNTQ4NjAzZjkyMjU4YzA1YjE2NjAgbGVnYWN5LXRydW5rCis2NTUwIGVkYTI5YmVmODgwYzlhNWRlYzI3ZDFhMjU2N2Y1MWE2NTZjZTdlNDUgbGVnYWN5LXRydW5rCis2NTUxIDEwYzA4NDk0MmNmMTJkZDBmZWVmM2JhMmIyMjk1MTFhMGIwYzc2MGMgbGVnYWN5LXRydW5rCis2NTUyIDE4NDUxZGNhOTQ2OWEwNGUyYjMwODdkNWU3NDU4MTIyMjY5M2Y5ZTYgbGVnYWN5LXRydW5rCis2NTUzIGE2ZTYyYzIxYjBlM2IwMWNlZGYzZDdlMmJkZjVhYTM3MTIyMWRlNWUgbGVnYWN5LXRydW5rCis2NTU0IDc1MmI4NmJhMTZmYzZlOTM4NDk2Yjc2Yjg4OGFmZmY0OWRjNTUyNWEgbGVnYWN5LXRydW5rCis2NTU1IDVmNjg2OWEzOGQ4NTFmMDY5NjU4MDU0MWNhNWE4YmQ4YzBiZDhhMjYgbGVnYWN5LXRydW5rCis2NTU2IDM5MDY4MzgxOGY3MzQxN2RiOTE0ZmExYjAxMDg2MGVkNmQ2YzE3NGYgbGVnYWN5LXRydW5rCis2NTU3IDQ2NjE3ZDI5YzVkMDYzOWE3ZDY1MzE3YWE2ZDc4MzY0Y2UzMWZhOTMgbGVnYWN5LXRydW5rCis2NTU4IDdmODNlMjRkMWQ4NjliNjc0NzEwMzFlNDAxYWY5YjFjNTllZTllNjMgbGVnYWN5LXRydW5rCis2NTU5IGUwZjY0MmVlNDViYmRhMDFhMmYxZDEwODFkZDYyNTkyMzBjMmE2NmUgbGVnYWN5LXRydW5rCis2NTYwIDgzMWI0MjBlNDExZTQyMWQzMzdjMmM0ZTZlNTY2OTllOWFhODU0NDcgbGVnYWN5LXRydW5rCis2NTYxIDc0MGRlZjY5N2Q4YjhlM2JjZGE0ZGU2YzljZjJhNzk2NWM4NzQ4ZmUgbGVnYWN5LXRydW5rCis2NTYyIGY4MWQ3ODU0N2YyODkyOTFhZmIyMzUzYzNmNWM3YzRiNTQ3OTZiMDkgbGVnYWN5LXRydW5rCis2NTYzIDlmNzBkOTk1ZDAyNzkyOTljZDkyZjM2ZTgzN2M4ODRiZGNhMTBiN2EgbGVnYWN5LXRydW5rCis2NTY0IDBiNDBjOGQ1YjIxZDIyNTk1NTk3MGNjZGFjMzVlYWM5YTFkNjBkYTMgbGVnYWN5LXRydW5rCis2NTY1IGRjOTQ2Y2FiN2I5YmJiYWYzOWZhZTY5MDlkNzMzZmQ2N2U1ZjI1MjcgbGVnYWN5LXRydW5rCis2NTY2IDg1OTJmYTRhMTE5YjA4YTg4YTFjYTQ3NjIzYjM4ZDBiMTUzN2FjNWMgbGVnYWN5LXRydW5rCis2NTY3IGYyOWZlNzFmMTFlNjRmMTM4MWVmYjdmODZlMjgxOTBjODcxMWRjMmEgbGVnYWN5LXRydW5rCis2NTY4IDg0MzgxODRlNDQ4ZTAzNzgyOWJhNzA3NTBmOTQzMjQwOWU3YzEzMDggbGVnYWN5LXRydW5rCis2NTY5IDBhNTljOThkYzAwNTM1ZmE3M2I5NWZlNTNmMjliMGJjMTBmNGE0NWUgbGVnYWN5LXRydW5rCis2NTcwIDg0NjVkOGZiYzdhYzE3YmU5N2RjODEzY2NlZWEwYTA5YWJkZDFiNGUgbGVnYWN5LXRydW5rCis2NTcxIGU1Mzg2MzhlZGM3MTMzNzIyNTNlNzhiNWE1MjI3NDUwOWIxOTI4NzcgbGVnYWN5LXRydW5rCis2NTcyIDZmNmJhN2MwMDgyM2VhZDhkNWU1YWE5YWQ2NmY4MTJmYjk5ZGU1OTYgbGVnYWN5LXRydW5rCis2NTczIDNhM2IzNjcxNjY4OWM1Zjg3MTNkODBjYjM3ZGFhMmRiZGMwOTE1MjggbGVnYWN5LXRydW5rCis2NTc0IDUzMzZjMDNhMTMxZmI1YmYwMmE4NDM2MGM1NGQwNDk3YjZlZjM5MjcgbGVnYWN5LXRydW5rCis2NTc1IDJmY2VhNWRkMWQxOGEyNWFkNjFlNDUyNmQ2ODc0MWQzNDYyYThjYmMgbGVnYWN5LXRydW5rCis2NTc2IDk1Njk2NjRhYzM0NzUzZjlkNWQxYTRjMzdkNjMxOGU0MDk3YjNlZWIgbGVnYWN5LXRydW5rCis2NTc3IGE1YTgyNjY2OTc3YjVlMjljNzg4ZDIzZDkyMGRjN2FkN2UzNjk3MjggbGVnYWN5LXRydW5rCis2NTc4IDg2OWE5NDgwODVjMTBmY2U4MzlkYTZkNWU3NGIxODQ2NzNmNzI1ZTUgbGVnYWN5LXRydW5rCis2NTc5IDljMWY5YjA5YzQ0Mjc1NzYyYjgzNDg0MmFlYzdiZjUwODRlOGQ0MzQgbGVnYWN5LXRydW5rCis2NTgwIGYzOTUxNjNjYTlkMjU1Y2E0ZjZjMDhjYzFhNzUxYzJlYTVlNGVkNmQgbGVnYWN5LXRydW5rCis2NTgxIDNhYzAzMGNjMzNmMDY4ODdiYjg3YTExYzA5NjJkZTNhYzUxMmUxMTMgbGVnYWN5LXRydW5rCis2NTgyIDZkOWQ1ZTdlNTg4YzQ5ZmNkMmRiZGExOGIzZGUxNmE1MjdjNWYzNjEgbGVnYWN5LXRydW5rCis2NTgzIDhjN2I3ZTk0ZjRkZDM5ZWJiZGQwOTUzM2Y3ZDMxODViMTdmMDU3MjUgbGVnYWN5LXRydW5rCis2NTg0IDA3YTM1ZmQyZTBhMTNlZTk0NTcwYWJiODk5ZDg2N2U3M2VkNTljODUgbGVnYWN5LXRydW5rCis2NTg1IDkwMjE2ZTkwNzM0NWViMjBiMzU5ZGRkODQ5ZTM4OGY4ZThjYzM3M2UgbGVnYWN5LXRydW5rCis2NTg2IDU3MjZiZThlZTU5ZjMwYmIzMDgyMTc1NDg5YTNlYmZiNTM4OTFjODAgbGVnYWN5LXRydW5rCis2NTg3IGIzYWYzMjVkNzEyZGUzZTk3YWUwODk0MTFiMDFhNmYzYTkwYTY1OTcgbGVnYWN5LXRydW5rCis2NTg4IDVkNTIzOTVmNDBiMGM5YTJiNWY1YjkzZGMzMjAzYjgzNjFlNjMwNGUgbGVnYWN5LXRydW5rCis2NTg5IDIzNTg5YzAxNmNiOWI4YzUxNDQwNmU0Y2VmZjI3MzEwOGQ4ODFjODEgbGVnYWN5LXRydW5rCis2NTkwIDMxOTAzOThhZTUzM2MyNmExMjI2ZmNiYjcxNGJhZTMyMmRmZGZjNGIgbGVnYWN5LXRydW5rCis2NTkxIDNkMTE3NTg3MDA1YTFkZTE3YWIxOTE5NzE2NTg4ODMxMWU3NjQzMjggbGVnYWN5LXRydW5rCis2NTkyIGE4NjQwN2IzYzNhYzUzOTdkZTA2ZWEwNzBkOWRiYWViYTJmMGRkNmYgbGVnYWN5LXRydW5rCis2NTkzIDRmODRjZWU2NWI4YzllNGUyYjA1YTRmMDUwNTgyMzE4ZDQ3MGNkNmEgbGVnYWN5LXRydW5rCis2NTk0IDY1MDAzMWUxZTQxOTBiZjZmZGFmNDcyNGQ0NzE3YzMyYjZiNTUwMTUgbGVnYWN5LXRydW5rCis2NTk1IDA4M2E3Y2Q4MzU0NTUyNmY0Nzc4MjRiZTQ5NjY5NGQ0MzNmMTRlNmEgbGVnYWN5LXRydW5rCis2NTk2IGQzMGY1ZjBmZDBlMmQyOWQ1ZWEyMTQ0YTEyZGQ1MTVhMTU2NGVmOTcgbGVnYWN5LXRydW5rCis2NTk3IDcxYjQzZDRiN2NkMGQzNjc5ZWE2YWVlZWM0ZjhjM2VjYzhmMzc1YWQgbGVnYWN5LXRydW5rCis2NTk4IDllNjUwNDQ5NGFjNzM5MTk4ZTgzYzllMmRjYWE3NTE1YWQ3MjExMzQgbGVnYWN5LXRydW5rCis2NTk5IDBiNzNjMzFiYWI5MDk3ZWMyYjNlMGYwZGZmMmEwYzU5YjIzM2Y3MzggbGVnYWN5LXRydW5rCis2NjAwIGM4MGM1MTU5OTliOTgzMGRkZjRkMjg1MThlZWE1OTFiMmQyMDk3YmYgbGVnYWN5LXRydW5rCis2NjAxIGE3YTlkODM1MDVjNDdkZmMwYjEwZDg3NzdmMjAzOTU1ZGVjMjI2ZDYgbGVnYWN5LXRydW5rCis2NjAyIDVhZGU0MDk2ZmI2Yjg5ZTMyOTE2ZTVmODdkZGU2ODU2ZjFmNjY0MzAgbGVnYWN5LXRydW5rCis2NjAzIGVlZGFhNTkzNDFiOTVkMzEzYjIyNjNjOGViOWE3OWYzMTQ4ZmFkZWUgbGVnYWN5LXRydW5rCis2NjA0IDdiODRkYWU5N2VlOGE5ODg4YmIzNGVjOGY2YzVlMjk0M2Q1YTBhYjEgbGVnYWN5LXRydW5rCis2NjA1IDZiNTg5MzM0ZTBlOWU2YTgzOTlkZjIzNDI5NmVmMjdiOWU4M2U1MWEgbGVnYWN5LXRydW5rCis2NjA2IGMxOGQ1MmUwNjIzODcwM2M1MjQ2MmJmMzBjODY0MjgwMTRmNzlmNTAgbGVnYWN5LXRydW5rCis2NjA3IGEyYmM5NDE1NjRhMTlmYmE2YjNjMTQ1YjJjYmMwNGU1ZTU3NjZkN2IgbGVnYWN5LXRydW5rCis2NjA4IDY5ZWRjNjdlNWE2OGYyMGVhZDFkOWQ5NGJkMjkwNmE1ZDZhZTlhMjIgbGVnYWN5LXRydW5rCis2NjA5IDE4OTliOTE1NTNkMWVmMzI3NzcwZTYwZmZhZWE2ZGVjMzM1MDcwZDUgbGVnYWN5LXRydW5rCis2NjEwIDI2MmZkNTgyZTQ0YjM0ZTgzNTNiMDE0OTFlZjI1YWJlN2YzMWIxMzAgbGVnYWN5LXRydW5rCis2NjExIDhiNzVkNWVhMjA3YmQ3OWUzYmM2MGM5NWQ2NTg3N2JhOWU2YTViM2EgbGVnYWN5LXRydW5rCis2NjEyIDdkM2QyZWU1NGEyY2IyNWJjNGU4YjAyODY5ZWU0YjE5YTZhOWE5MjEgbGVnYWN5LXRydW5rCis2NjEzIDAxMDM0NGI0YTYxNjI1M2VhZDBkZGYyMWM1NTAzYTlkM2JhMmU0ODMgbGVnYWN5LXRydW5rCis2NjE0IDViYWEwMDNiZjM5ZTBiNGUyNzY2NzkzOThkNTVkMmI1NzE4ZTBmMjAgbGVnYWN5LXRydW5rCis2NjE1IDZmYjEzMTUwMWJiNDZkNjM4MGYxMjZiNGYwMzc1YmQ1MDNkYjEyMTMgbGVnYWN5LXRydW5rCis2NjE2IDQ0ODcyZjI1NWY5MzQ3NDdiNDQxY2VlOGMzODY1MWFjZjAwMzc5OWMgbGVnYWN5LXRydW5rCis2NjE3IDMzYmYzODJjMmIxZDliNWI0MGMxNDlkM2Q0OGFhMjFmYjFkM2RlZDUgbGVnYWN5LXRydW5rCis2NjE4IGVmZWJmMWM0ZWRhMjk2NTQwNDgwZjY4N2ZlZjlhYzY5MjAxYjkyMTEgbGVnYWN5LXRydW5rCis2NjE5IDk1MWVkOWE4M2Y1N2E1MGRkYTVmNjE2ZjI1YmEwZTBkNTJmZDhlNDggbGVnYWN5LXRydW5rCis2NjIwIGM0ZDY2YzQxMGM4M2NkMDJhZTdjYjIzZDlmMTg4NDI4ZTFlMmE5YzUgbGVnYWN5LXRydW5rCis2NjIxIDMwZjFjMDFmMzg2NTBiNjhjYzVlY2M3MjNlZjJmOTQwMjM4ZGM0YjEgbGVnYWN5LXRydW5rCis2NjIyIGFiNDM3MTVlZjRlZTI0Zjk2ZTA5NTNmNGEyNjQzYmNiYTI2Y2ExOWMgbGVnYWN5LXRydW5rCis2NjIzIDQyOThmZjIyMmQ3NjNkYjdmNDkzYTAzYmI0YjgyMWY0N2Q0MjMzMWMgbGVnYWN5LXRydW5rCis2NjI0IDhhMGQ0M2IxMzEyNTFkMmY2YjViNmZkZWMxOGExYjhjN2Y1NGJjNzAgbGVnYWN5LXRydW5rCis2NjI1IDY5YTMzZmEzZGJiODgxMTUwNWNkMDMxMzJkZGFkNzdhNTg0NDQ3ODEgbGVnYWN5LXRydW5rCis2NjI2IDk4ODFhNTIxNGZkMmM1MDE5OTIwMjAzMjIzOGNjNmJhNzk3MGZjZDggbGVnYWN5LXRydW5rCis2NjI3IGNjMDZlNzAxMjdmYzBiYzhjNGU3ZDY1ZjRhODUyZWY3NDU0ZDc5MjkgbGVnYWN5LXRydW5rCis2NjI4IDAyNjIxYjg3N2VlNWRmMDExY2U1YjgzYzhjZTA3MmI5NDVjYTkwNmIgbGVnYWN5LXRydW5rCis2NjI5IDg2YTYyY2EzYTM3YjdhYmY1NTk0MTRlYjBkYThkNTQ2MjFkN2E4ODUgbGVnYWN5LXRydW5rCis2NjMwIDE0MDUwOGM5YzYwMzE4MjVlZjg3MjAwMDcwNjI2ZmJiZTM2OThkZmMgbGVnYWN5LXRydW5rCis2NjMwIDQ0YTgyYWM2NTRhNDE3NTU2OWRlZWQ4ZThhOTRiMGNjOGVkZWUwOGQgbGVnYWN5LXRydW5rCis2NjMyIGYzYTBkNTAyNDZkMjcxM2ZkOWJkYmU2MjUwNGQwNTQ2YWM4MjFhZmUgbGVnYWN5LXRydW5rCis2NjMzIGRmNjM5ODVjMWNhOTYwZjBlMzBmM2NkOWRhNTAyNGViMzdiYWUyYmIgbGVnYWN5LXRydW5rCis2NjM0IDgxMWE3ZmY3ODNiNzcyOTZhZTBiMzhkYTNiMjIwMGVlMTQzODAwODEgbGVnYWN5LXRydW5rCis2NjM1IGE4MWMzZGUzYWFkOTVjOTU3ZDg4OTRjZGNmOWU2OGI5ZmQ0NGIyMDUgbGVnYWN5LXRydW5rCis2NjM2IDk5MjUwMTgyYzQ4YWZmZDU3OGE1Y2YzNmFiZThhYTIwNzMzOTdmYmIgbGVnYWN5LXRydW5rCis2NjM3IDU4MmQ0OTM3ZDQ5OTcxZTVjOGQwODRhZmZjODQ4MjE5N2NjOWM2YWQgbGVnYWN5LXRydW5rCis2NjM4IDFjMDc5ZTIzZmQzYjg5OTQwZmQ5NWVhYjAyOWZiNjdkOTE3ZGE3YWIgbGVnYWN5LXRydW5rCis2NjM5IGIzZmRlNTI5NDQwZmQ2NGRlN2RmMmJmNjRjNzQ0MzIxOGQxZjQzMDcgbGVnYWN5LXRydW5rCis2NjQwIGE3MWE0M2QyNDdiMDljMjA3YzAyYjM3NTJmMjljNTdlZTQ3NDhlNDEgbGVnYWN5LXRydW5rCis2NjQxIGE5NDAwZWVlMDQwYjE4ZWIxMDc0YmI0ODlkNGQ5Y2QyOGZhZDViNjkgbGVnYWN5LXRydW5rCis2NjQyIDc0YjhhYTdmMTExNGZiZjNmMmUyNGQ0NzlmZTFlNmVkMjkwYTdkYzMgbGVnYWN5LXRydW5rCis2NjQzIDY4Nzg5OWM1NjNlM2RlMzg3YzQzZDFmMmU0YjQxMmQxZTU5MzhhMzUgbGVnYWN5LXRydW5rCis2NjQ0IDNkYzJlNjc1ZjE3ODE3MDc4NGJmOTQzZDA3NzFlOWYzNGVlYjA1MDcgbGVnYWN5LXRydW5rCis2NjQ1IDE4NTVlN2M3OTFlMjNkY2QyMjM1NzMyMDFlZjU3ODhkNTRmMGY4MzYgbGVnYWN5LXRydW5rCis2NjQ2IDg4OTk3ODAyZmI5YmIwYTE4OWNkNDI1ZjhmMzFjZTlkNDA2Y2MzMmYgbGVnYWN5LXRydW5rCis2NjQ3IDIzNmFkZWE5NzYwYjAwZjI3NGM4MGRkOGVjYjNkNjVjM2Y4MDc5MDcgbGVnYWN5LXRydW5rCis2NjQ4IGQyNDFiZmRhN2I3NDZhZjQyZTNkOGQxYmE5NTU2NzE1OWZiNmIwYzggbGVnYWN5LXRydW5rCis2NjQ5IGJiNWI5ZmY3MmRlMTk1MThjNjAwZmU2NDY0MDE1YzdmMDU2MGU4Y2IgbGVnYWN5LXRydW5rCis2NjUwIDM3ZDAwOWIxYmY0NWRhOTY3Yzk5OTZjOWUyZTNlNDhmOGFlZTIwNjcgbGVnYWN5LXRydW5rCis2NjUxIDMxNWE1MGNiMTVlMzhkODk3OGExNmU3Yjc1YWIyNDFiYWVjMDcwYTcgbGVnYWN5LXRydW5rCis2NjUyIDI4MTc0YWEzOGM3NjI3N2EwMDhkNTRiMzU2YTU4M2JlZjRlYmE4ZDcgbGVnYWN5LXRydW5rCis2NjUzIDMzZjRhOTFmODcxYmRiYjlkNjM1NDhjNjkzNjcxYjg3NDQ4ZjZkY2YgbGVnYWN5LXRydW5rCis2NjU0IDdlZGUwMTJhMzVjNWVmMzQ2YmY3NTU5YzBjMWNiNzRjNTgxNDNjMmMgbGVnYWN5LXRydW5rCis2NjU1IDNkNTNjZmFiODgyMTg4YzM4OWQ4NGI5ZDZhZjljZDA0OThjMDhjNTQgbGVnYWN5LXRydW5rCis2NjU2IGEzOTI2NDg0YTY1ODNjMzA3YzNkNTQ5NTg2OGY5NmE0ZTUxYWZkZWIgbGVnYWN5LXRydW5rCis2NjU3IGMzNjM2NDViN2VkZDI3YjQ5YmQxNjMxMTJlNzFkYTg3MzgxYjFlNTggbGVnYWN5LXRydW5rCis2NjU4IDJjY2I5OWM5Mjg1NDQ2YmJhYmNjZmU5NDYzMGZlMjYwNzI1YjM3YjggbGVnYWN5LXRydW5rCis2NjU5IGEyM2Y0ZjQ2NzI3YjliZmE1NDZkYjcwOWEwMGUzNWMxMjVjMmRjZDEgbGVnYWN5LXRydW5rCis2NjYwIDVlMTJlOWIyOGVhZmYxMTIxZGFjODAxNzQwYzdkNGQ5MzhjZmJlZjYgbGVnYWN5LXRydW5rCis2NjYxIDhiYmVjZjY4M2E1MDQwZjZhZGQzZDM4OTIzNjU1M2VlMGRhM2Q1NzEgbGVnYWN5LXRydW5rCis2NjYyIGM3OTZhZTExNTc4MzJkMmNjYjVjZjI0OGJkMmJiN2MxZTNlZWQyMTkgbGVnYWN5LXRydW5rCis2NjYzIDAzZjJjMjFhZWNhZjI2YTAzNzliZDNmZWU0MWUxNjIxMTRhNGRjYzAgbGVnYWN5LXRydW5rCis2NjY0IDk0ZGE1ODIxNGQ2Yzc1ZmQ4MDk4MzQwMWM5NjMzZGQ5Yzg5ZTdlM2YgbGVnYWN5LXRydW5rCis2NjY1IGU2MTMxOGMzYWQxZTg3ZTE2NDIyOTQwNmYwOGQyYzExNzYyZTgzYzEgbGVnYWN5LXRydW5rCis2NjY2IGQyM2Y3ODczMGUwMGQxM2RmZjFjYWY3MGIxYjdkMTY1MzU4NWMzYzMgbGVnYWN5LXRydW5rCis2NjY3IGYwMjVkOGEzNzdiNTcwMDE4ZDgxOWRlNDcxNTM2NWRlYTU2NzY3MjYgbGVnYWN5LXRydW5rCis2NjY4IGRmYmQ2ZTAwZGQzODNkMmYzYjBlYzVmODRkMmVkNmM3ZDk3YjUwZTYgbGVnYWN5LXRydW5rCis2NjY5IGUzZjZhZGEyOGVkMDk1ZTdkMDBkOWNiZGM1MTAyNTgyYzhlNWM2MjggbGVnYWN5LXRydW5rCis2NjcwIDY3MjA2YmJkNWJiNTQ4YmQ2MGRiNjlhMmI0OTRhMWE5MzczNTFkNTcgbGVnYWN5LXRydW5rCis2NjcxIGI3MGJhYmExYzc4OTMyYzI3OTY5MzQ4ODk0NmE4ODdjZjgzMWRlMzYgbGVnYWN5LXRydW5rCis2NjcyIDM4MzgzYjYzZjQxNThmOTQ0ZTc2OGEzMmRiOGUxZGQ1MTA5MDRhNzIgbGVnYWN5LXRydW5rCis2NjczIDZmYjZlMDFlMmJhMTQ0MzZkZTBkODZkMWE4YTVjM2NkODBmMWRiOGUgbGVnYWN5LXRydW5rCis2Njc0IDIyYWFjODFjNzU2MGMxYTg5NjAzMzNmMWIxMTQ4MDkyZmYwZTQ5NTAgbGVnYWN5LXRydW5rCis2Njc1IGM2MjU5Y2YyYzU4MTQzZGI2MTAyMzA1ZDUyMTdkZTRhY2Q3NTFlZjYgbGVnYWN5LXRydW5rCis2Njc2IDM1MGQwZGUwNzczOWMzNzQ3MWZlOTI5Zjk2OTg5MzkxZGFiODBiNTAgbGVnYWN5LXRydW5rCis2Njc3IGQxYjQ3NDNhOWE2MDUzZTk4YjQwNTcwOWJjYWY5ODY0NWU0OGY3MDYgbGVnYWN5LXRydW5rCis2Njc4IDMxMjZmOGExNDZhNjZmNGE3NmNiMDRkMzg4ZGU1Zjc5YjBiYmFhY2MgbGVnYWN5LXRydW5rCis2Njc5IGM3OTk0MDA4Mzc4ZDlkZTVhMGJmMDRhMzc2ZDM0OWRlYTNlZTFhNTIgbGVnYWN5LXRydW5rCis2NjgwIDQyZWMyM2M1MDAxODZkNWFiZTJkYmNjMjYxY2I1NzNkNDU1OGIyMmUgbGVnYWN5LXRydW5rCis2NjgxIDYzYWYyNTc0ZjcxZjZjNDE3MmI2N2JkNTg5YmFjYjg5Y2Y0NmFiZjEgbGVnYWN5LXRydW5rCis2NjgyIDFjMDA2NDAwNjlmOGE1NDE0NTZmMzFlOWNiM2ZiYjg1ZDkzNjIyMDEgbGVnYWN5LXRydW5rCis2NjgzIDNmZGU5ZDJhMzliMGM5YTIxMWNiY2E4NGJmMzg0NjYwNjY5MmEzZTEgbGVnYWN5LXRydW5rCis2Njg0IDYwZmMwMWQ2ZjcyNzBjYzMzNjhkYmYxYTYxMjIwZmViNTg0N2E4NTIgbGVnYWN5LXRydW5rCis2Njg1IDRhOTNjYzdlN2ZiNmYzZTViNzBmZjA4OGNkMjFmYjQ4M2IxZWU5YmYgbGVnYWN5LXRydW5rCis2Njg2IGQ3MDE4YmM1NTg0ZTBhOWM4ODdiZTEwOWIwYTQyNDU1OTFjNmQ1NzIgbGVnYWN5LXRydW5rCis2Njg3IGUzMWI0ZGVmYWQ1YjQ1Y2RmNGM2MDA0OTNkNzA2N2EwMjI2MWExZTEgbGVnYWN5LXRydW5rCis2Njg4IDY4OGQ1NjZjYjE1YjA3OWRhOWQ5YTY3YjZlMGNiY2U1NjdlZWMzMzUgbGVnYWN5LXRydW5rCis2Njg5IDA0MTBlZDM4MDhlZWI4YzI1NDFhYTk1NTQxMzM4N2Q2MGE3MTRhOWYgbGVnYWN5LXRydW5rCis2NjkwIDBhNWYwMWQ0NzAxYzA5OTNiMjkyY2Q1YTIxYzkxYjI5MTg0M2Q2MjAgbGVnYWN5LXRydW5rCis2NjkxIGM2Njc5YjFjNmNmYzFiNGY1YzQ2YzUyNDFhODM2MmI0NDkxMWIzOWIgbGVnYWN5LXRydW5rCis2NjkyIDllMGU4NDE3YTk4YWVhZGFiOWMyZmViODY4NmU0MmUzZWM1Y2NmNzcgbGVnYWN5LXRydW5rCis2NjkzIDliY2ZiMDM0Yjk2M2QyYzdjYjUyMTM3NDFmOTQ5ZmYzZTRhNDQ1MjkgbGVnYWN5LXRydW5rCis2Njk0IDQ4YjJkN2E0NTMxZGY4YjgyNzgwZjMwYzc4NTZkYjI2M2JlZjEzOTkgbGVnYWN5LXRydW5rCis2Njk1IDY2OTEzY2E3ZWM0NzBhZWM5NTMzZmYyZDE2OWJkOGI4ZjY1YTQyMjggbGVnYWN5LXRydW5rCis2Njk2IDFkMWYwYzY0N2U3N2IxMjBmNGZmOGNiMjEyNGVjOTk0MTRiNmU1NzIgbGVnYWN5LXRydW5rCis2Njk3IDE4MGMxZDNkYWM0MTExMWY3MzM5YzlmMGUyMTExODkzY2YwYmY1ZDcgbGVnYWN5LXRydW5rCis2Njk4IDNmZWVjYWQyOTZmNDBmNGVkOGQ5MDA0NGU4NmU0MGE5YTEzYTVjYmUgbGVnYWN5LXRydW5rCis2Njk5IGIzYWUwY2YyYTA2ZDcxMzI0ZmE4OTk4Mjc4NzQwYTE4ZWJkZGVjMGMgbGVnYWN5LXRydW5rCis2NzAwIDRmYWNhZTAwYmRkNjEyNDA2NDJlZTBlZGZiZjFhOGU4YTg2YzIzZGMgbGVnYWN5LXRydW5rCis2NzAxIDU3M2VkNWUzODc5YjY5OTk5OGFlZDg4MTE0MmY0YzM0NDgzYjhmYjkgbGVnYWN5LXRydW5rCis2NzAyIDg0NDQ0ZWEzZjVmNjlkNjBmNmQ4NDdhYWE5NjRjZmM2MmIyNGNjYjcgbGVnYWN5LXRydW5rCis2NzAzIDFmNjkyYzNmMWQzMmQ0MzlmMjkyZDIwYWEzZWZlZDY2NWNmMWEzMTAgbGVnYWN5LXRydW5rCis2NzA0IDQxYTUyYWIyNjNkYWEyNTA3ZmUzMzE1MTkyMmNlOTUwMDEwOGY1YmUgbGVnYWN5LXRydW5rCis2NzA1IDVjMzg3YWEwMzcwODczMzdmYjIyOWE3ZTU0YWI1YzQ1Yjk1MmJkZTUgbGVnYWN5LXRydW5rCis2NzA2IDg4NmMwZjc3NWM5NzZlMmNjZGI5ZmY0NmQ3NGI2NmE1OTA1NmNmOTEgbGVnYWN5LXRydW5rCis2NzA3IDEwOTkxNTllYzgyMTllMGY5NmQ1NjhkMjAyZDExNjhkMjFiZDU4ZDAgbGVnYWN5LXRydW5rCis2NzA4IDdiZjcxYTgzOTY2MWJjMjYwMDZhYzgzMDM4ZWQxMWQzNjIwZDBlZTkgbGVnYWN5LXRydW5rCis2NzA5IDhmMjkxZGM4ZmE5YjQ2OWU2MGYyNTYxNzkyMGJlMzQyNDZmMWU2OGIgbGVnYWN5LXRydW5rCis2NzEwIDc4MGZjMmIxNjc0ZDc3MmI4ODk4MTVmNmNiNzJkM2RiY2I0ZjYzOGMgbGVnYWN5LXRydW5rCis2NzExIGNiNDkwMGZhYjc2NDI4YWY4YWU1NWUzMTk5ZTk0Njk1MjVkZWMxYzQgbGVnYWN5LXRydW5rCis2NzEyIDZjODZkOTEzNmMwOTBkNGZkMzQ1M2ZlOTIyNjBhM2UxMmZlNzBmMjcgbGVnYWN5LXRydW5rCis2NzEzIDY3MDA1NThhMzJmYjEzM2M5MzkxZDQwNzllYWYxOWI3NDc2ZTQ3ZDQgbGVnYWN5LXRydW5rCis2NzE0IDIxZTViOTRiOTliODBiZGY4ZTZjY2VjYjIyOTk3ZmEzY2M5MTNjMjUgbGVnYWN5LXRydW5rCis2NzE1IGM2MmQzMmM1ZmYzZGVjZWUzZmVhYTU0YzYyNDgwZTc5NTEwMDk0ZTMgbGVnYWN5LXRydW5rCis2NzE2IDM1NDVhYjQzYTcyYTIxOWYwZmJjZTMyNWUyZGYxODc3NjdhM2UyYTggbGVnYWN5LXRydW5rCis2NzE3IDFjZTAwY2RjMDAzZDI1NWU4YjA4YjU5OGJjNzA5MmI1MjNjZDA3OTAgbGVnYWN5LXRydW5rCis2NzE4IDBmYWUzNTNiMDRjYTJkMWE1MzQxNjc4YTZlZGIxOWJlMmUyOTA3YzYgbGVnYWN5LXRydW5rCis2NzE5IDQzZTJlNTkyYTAwMTk4NTEyMGRhNTA4OWVkZTE0YTA2ZmZmMjA4YzMgbGVnYWN5LXRydW5rCis2NzIwIGM2ZWY4YjdiMjZlYmMxMjA1MjNmODgxMDVjZTI5MzM1YWRmMjI1NmIgbGVnYWN5LXRydW5rCis2NzIxIGRhMzhjZDYxNjQxMjdjY2RiYTc5NjA5NDQ2MWE5NTRlOTZiNDA5YjIgbGVnYWN5LXRydW5rCis2NzIyIDVmNjcyYTUxMmRjNDFmZGI4MDc5MTc2MTJhMWE4YWYwMzk5NzhlMmEgbGVnYWN5LXRydW5rCis2NzIzIDBjZjY3MTQ1MmZjNTQzZDQyNmQ1M2Q2YzgzYzQzN2QzYjQ5OTI4ZmUgbGVnYWN5LXRydW5rCis2NzI0IDQ0NzBmN2ZmMGMyMzljODk0Y2I5YjUxODgxMjk4MmY0N2JkMGZkODYgbGVnYWN5LXRydW5rCis2NzI1IGFjM2ZiYjY3NzFmNWMyZGIzOWJiNjNhMmI2YTIwMjk2MWQ3YTFhNzIgbGVnYWN5LXRydW5rCis2NzI2IDZiNmM1ZDEyMTMwY2Q5OTBlZGE4MDY1NjBkZjZkNGI0ODk1YmE2MzUgbGVnYWN5LXRydW5rCis2NzI3IDAyYTAzMjFmOTQ2OGJlYWM3YWRkZWE5NjZjNWIwZmVlMDI4Y2ZjMmEgbGVnYWN5LXRydW5rCis2NzI4IDA1YWU1NzJjMWFjNTY2YzNlODM1MDk2MzFlNGNiMDdjZWQwOTlmMzUgbGVnYWN5LXRydW5rCis2NzI5IDY0NzA0ZDM2YjE5ODFlODIzZmNmMGZhNWU4ODU3MmZiMDYwMzQwOTkgbGVnYWN5LXRydW5rCis2NzMwIGUyMjVlNzBmZDY1NzFmYTY0N2Q0M2IwYmM0MjNjZGFjZmU4ZGU4MDYgbGVnYWN5LXRydW5rCis2NzMxIDIzOWIxMDA4MTE3NjNkMzQxOThkMTAxOTVkZDliMTM0YWYwYWZlYmQgbGVnYWN5LXRydW5rCis2NzMyIGI3ZTdlYjVlZjgyMGFhODc3OTdhMTQ4OTA1YWQ1YzBlOTFmYTMzMWQgbGVnYWN5LXRydW5rCis2NzMzIGRiYjc2MDk1YWRlZTA5NTk5MDMzN2JlZTZiZDhkY2JiYWE3N2E5MzQgbGVnYWN5LXRydW5rCis2NzM0IDUxNmRkZjUwMTk0ZDM2ODA2ZWU5ZmM5ZWRmYmI1ZmZhZjE1ZDVkMzUgbGVnYWN5LXRydW5rCis2NzM1IDU0NDIxN2Q1NDhhNWYxZDU5NDk2ZWRkMDI5NGY1NTM1MjczMGYxYWMgbGVnYWN5LXRydW5rCis2NzM2IDY3ZDI1OGVkZDNkOTliY2I2ZmExM2VjODg2YjRlZTdjMjM4NmU5NzAgbGVnYWN5LXRydW5rCis2NzM3IDdiNTRhM2NlZGJlMGM2NDRjNzA1Y2FjYjY2NmY2ZjgwOGViN2JhNzQgbGVnYWN5LXRydW5rCis2NzM4IDI1MzAxYjllYTBjY2RlOWQ2ZjI3YTI3YmQ3YzkwMmI0ZWNkODU0YzQgbGVnYWN5LXRydW5rCis2NzM5IDg4OTJkYTk1NTRhNWJkMTFmZThiYzdkNjA0ZTRmYjI2N2Y3Yzg0N2MgbGVnYWN5LXRydW5rCis2NzQwIGYwZTgyMTI5YmQzZWEzNjE3YTJmMWY1YTc2MTZjOTJlNDc0ZDgzYTggbGVnYWN5LXRydW5rCis2NzQxIDYwODI1MDFlY2IyZTU4NmMyMDA1MGJiMzkzYzRlNjViMGYxNTgxZTMgbGVnYWN5LXRydW5rCis2NzQyIDJlODdiODExNzZmOWQzMjVhNTY5MzgzMzA0ZTM0NzFlNTRlZDk5MjQgbGVnYWN5LXRydW5rCis2NzQzIDM4YzhhMWNjYzE2YzYwZTAzN2FlOGQwZWFiN2M1ZGU0ZmE3NDU5ZDcgbGVnYWN5LXRydW5rCis2NzQ0IGVmNTFlNGEyZTc5OTQ0OWYzZjVkOWNkZmJmYTM3NDY1OWQ1YTlkNDggbGVnYWN5LXRydW5rCis2NzQ1IDY1MTIwZTkxYjA2MWVhN2RmMWE2ZjY4MWMzNjdhNDg0ZTBmZGY4YTQgbGVnYWN5LXRydW5rCis2NzQ2IGU3ODkwMzM2ZjEwNzA0ZjMzNDBiODhhNjA5ZDUwY2ViYzFiMThjNmEgbGVnYWN5LXRydW5rCis2NzQ3IGM0ODc2NGJmNjJkMWVkMDZhNzNjMTBmMzBkZDY0MTQyZmY3MThiZmQgbGVnYWN5LXRydW5rCis2NzQ4IDM3OTliNzExNjMxYjI1ZWM2NDZlZTg3NzgzYzBiMzVkYTRjNjI1NWYgbGVnYWN5LXRydW5rCis2NzQ5IGNiODQxZjFiMDIyZWEyMjRjYzdjNmY1Y2NkOTY2NjA3YWZiNjU1ZjEgbGVnYWN5LXRydW5rCis2NzUwIGFlMTc4ZjE1MDQwMzAwYzY5MGE1NmQyMzkzYTc3YTY2NTBhZjg1NDUgbGVnYWN5LXRydW5rCis2NzUxIGJlZmRmMGRjMDk2YjA4ZWVjNTJmM2U4YmY2MGJiYmFmNGRhYzUyYWEgbGVnYWN5LXRydW5rCis2NzUyIGY2ZTgyNGIyNzAzMjM1ZDhjMzU5YjMyMTYwMDkyZmQyM2Q3OGIxZjQgbGVnYWN5LXRydW5rCis2NzUzIDk0Yjc2MWZhYzRkN2JiM2M4YWNjM2M5YmU5ZTEwZWUxY2I4MGZjODAgbGVnYWN5LXRydW5rCis2NzU0IDU2OTA5NzgxYTc0MWIxMDUwNTI2YjUyMjZlMmY2NGQ5ZGRlZTQ5M2UgbGVnYWN5LXRydW5rCis2NzU1IDRiZGFmYTcwM2EwNGI1YzdiNmJlNjQ5ZDdlNWZmZTVlZDRhZTA1NTEgbGVnYWN5LXRydW5rCis2NzU2IGRhZjEyZjY0ZDVhYTNkNTE4NTIwMDRlM2I0NTkwMWFkZWFhNzQ3OTQgbGVnYWN5LXRydW5rCis2NzU3IDgzOWY3MjYxMGFlMWY4YmUxYmEyZTMxNzIzYjM2N2U4NzdkM2ZiM2YgbGVnYWN5LXRydW5rCis2NzU4IGUyMWQzZTdhZWE4NzE5NmM0MzE5NjVmZjMzYzEyMDI4ZTcyMzg2NTUgbGVnYWN5LXRydW5rCis2NzU5IGI2OWY0YjgzODkyZTY4ODViNjA4OWRjYTBjZTc2MGNjZjRiNTE2ODYgbGVnYWN5LXRydW5rCis2NzYwIGRiMzVkMmI5M2ViYTBmOTk2OWYwYjMyYTg1ZjEyYWQxODM3N2JlYjQgbGVnYWN5LXRydW5rCis2NzYxIGYyZjVjZDdjYjViNTZiM2E2ZWJhMzNhMjNkNTA4ZGUxNDU4MThmODcgbGVnYWN5LXRydW5rCis2NzYyIDQzYWUwNDVhYTEwZTEwN2M0OWI1YWQ1MGNiMmE3YzhkNmQ5YWQ5OWEgbGVnYWN5LXRydW5rCis2NzYzIDAwMzZkY2YyODQwMjNhOWJkODYzMjMyNmZjY2M4NDJhMDEwY2ExODEgbGVnYWN5LXRydW5rCis2NzY0IDljNmVhYjBjZjU0MmRlMWIxNDA1YzEwNWVlM2JiZWFlYjc5NGQ3MjkgbGVnYWN5LXRydW5rCis2NzY1IDE0MjdkNjFmMTMwNzI5OWY4MjQzYTQxYzEyOWE1YmM2NTlmNmNjZTcgbGVnYWN5LXRydW5rCis2NzY2IGFiZDBiOWZmNjc1OTJkMTA0NzczNmE3ZWVmNWNkOWViYzkyYmE2YzcgbGVnYWN5LXRydW5rCis2NzY3IDY5YmJjMjFmNTVjZjJlMzRlNDczOGFhNTMyNGQyMzYzNzAwZWM0ZGYgbGVnYWN5LXRydW5rCis2NzY4IDUyMGRkY2IzZDVkNjhlMjdiMDY3NDEyOGFmYTg2NTFhODgwNTQ0NDcgbGVnYWN5LXRydW5rCis2NzY5IDAwOGI5ZmM1NjViZmRjMjcyODRhYTYzMzU1MzBiZTBlMjM1N2ZjNTMgbGVnYWN5LXRydW5rCis2NzcwIDc1ZDc1NzMyYTllNGJlOGQ1YjViMTJjMTkyOGFmOGEzYjFiYzU0NGMgbGVnYWN5LXRydW5rCis2NzcxIGNmOWE5N2JmYzAyMzM5ZTAzZTRiNDA2MGI5OGU2ZjRkMzdlNDg5ZTEgbGVnYWN5LXRydW5rCis2NzcyIDZmNzA5MGE4MjY0NTlkMWI1M2RmYmZkZWExYTc5MjcyNDgyMjdlYjAgbGVnYWN5LXRydW5rCis2NzczIGViMWVkNzQzOTcyYzQyNmE4Y2RkM2Q4MDNiZjZjYmE3MGE2Mjg0NTUgbGVnYWN5LXRydW5rCis2Nzc0IGUwNWRhODA0M2I1MDBiNDE1MzRkZWJjNzI1ZTJmY2RiYzJiOTVmZjYgbGVnYWN5LXRydW5rCis2Nzc1IDg2ODA2MzE2MTY2NThlNWVkNWVhNDNiNzJiOTUyMjA3YTNhOTdlY2YgbGVnYWN5LXRydW5rCis2Nzc2IGZjNGYxMjg5ZmU2Y2Y2ZmQ5NDU2ZDE0NjcwMGZjMjRiMmJkMmU1NTAgbGVnYWN5LXRydW5rCis2Nzc3IDM4OGY5YzIyMjBjZTRmNjJjMmEzYTdjNmM0MTc3MzgxNTM5MDNmNjggbGVnYWN5LXRydW5rCis2Nzc4IDk1YzMxOTMxYjc2YWY3MDgzN2EzYTQxNGYxOGRiNDBiMDBhMWZjZjUgbGVnYWN5LXRydW5rCis2Nzc5IDc4MDliNmI0ZmZkOTM1Mzg2NjZiMTNmN2Y0MzQ5ZTA0OGRiZDg4ZDIgbGVnYWN5LXRydW5rCis2NzgwIGU5ZjQ4ZDdlNzNiMWNhYzlhM2UxNWNkMWNmZjBhY2UxYjg2MmQ5NTQgbGVnYWN5LXRydW5rCis2NzgxIDJlZWMzNWUyYWZmZjczZjI5ZTVkNGVmZTk0OGE4M2Y3MTU3NmE5OWMgbGVnYWN5LXRydW5rCis2NzgyIDFhMGYzNGMxODE2M2NjMDQ5NWNiZWExMzQxNDQ3NGFmNmFmZWM1M2UgbGVnYWN5LXRydW5rCis2NzgzIGVjYmViNDQ1ZjYyZTUwNmY4Zjc1NGYxM2MzNjQwMzBmMjVlM2Y3OGEgbGVnYWN5LXRydW5rCis2Nzg0IDNmNmQyNjE2NTRjYTJlOWRiOTM5MTU2MjhhYzRhMTQzZmJkMmJmNmIgbGVnYWN5LXRydW5rCis2Nzg1IGM5N2ZmZDJlYmQ1Mzk2NDEwZGU5YTczZmE2NzdhOTM1YWUzNjFmNmIgbGVnYWN5LXRydW5rCis2Nzg2IDkzN2Y2OWZkNDNmZWE1ZTc4YjE2MjEyYjc5NDJhOThjYmU3MGRhMjMgbGVnYWN5LXRydW5rCis2Nzg3IDk4NDdkZTk0MDc5MDI5OWZjZWNmMmQxYjkwMWM2OTkxNTkwMDYyZGQgbGVnYWN5LXRydW5rCis2Nzg4IDNiMzg3MGI5YWNmMjQzOTc2N2FmODU1ZTI5OWY5ZjkwNGEwMGNjZjggbGVnYWN5LXRydW5rCis2Nzg5IDQ2ZDczNmZiOWRhMzIyODJkNTI4YWFlY2E1OWIwZTVkMGU0ZDEyMTMgbGVnYWN5LXRydW5rCis2NzkwIDc3MjgyOGMxYjFmNjg3NDE5YTUyMTdhY2QxNTVhZjFjZjEwZmQ0ZmQgbGVnYWN5LXRydW5rCis2NzkxIDBmNTFmMWQ3MGQ0NTI2ZmNhYTk5ZWVlNjNiNjNiY2U1MDQ3MjYwYzQgbGVnYWN5LXRydW5rCis2NzkyIDk3ZDM2NTJlNTdkMzVjMjNhMWRmMmQ1MDM0ZDYzMTQzNmZmZTc3MjcgbGVnYWN5LXRydW5rCis2NzkzIDk3MTMzOTk2ZTIyZjBmMmEyMDVhMTVjOWRhMzlhMjJjYzQxOTVhY2IgbGVnYWN5LXRydW5rCis2Nzk0IGQ1ODcxOTZmOWJlZmE1ZWE2ZWVlZWEyMWE0YzdmOGM3YzMwMmFhMTMgbGVnYWN5LXRydW5rCis2Nzk1IDlkNDQ1MDM1MDQ1MWYxZWJkZTdkNmI2YzAxOGNmYjMzODA1ZmUxZGUgbGVnYWN5LXRydW5rCis2Nzk2IDc3Mzk3ZDUxZjg5MjA0ZGVhYWU0ZDc4YTBlNWVkMWQ0ZTdlODZiNTMgbGVnYWN5LXRydW5rCis2Nzk3IDMxNGMxMzQ0NWEwMmRmMDAxNGNmMWQzOGI1OWEyMTFjOTM5OWVjZTAgbGVnYWN5LXRydW5rCis2Nzk4IDFhZmNkMWNkMzMzYjU3YzNmZjEwNDdiOWQ1N2YxNzEwYzk2Y2RmN2YgbGVnYWN5LXRydW5rCis2Nzk5IDEyYzM4NjVhZWFhMDM2MzUwNjk5NGU0OTk4Yjc2NThmZjZjODJjOWMgbGVnYWN5LXRydW5rCis2ODAwIDAyN2ZmMTU1NGU2NjJiZmYyY2IzZGI5YTJkOGQzMjViYjA4MDI2N2UgbGVnYWN5LXRydW5rCis2ODAxIGZiNzMwZmIxM2ZhYjVjYWU2NzQ5NWY2N2M0YzAwMjNjOTliZjk0MDIgbGVnYWN5LXRydW5rCis2ODAyIGIwM2FiMzVkNTJkZjk3N2M5YmQ3M2FlYTJiNTRmMjBhZmY3YTc0MzkgbGVnYWN5LXRydW5rCis2ODAzIGEyNDBiZTViZTZiNGM0NjNhNDcyMTViODk0MDI2YmVjZGM1MGI3ZTUgbGVnYWN5LXRydW5rCis2ODA0IDkwNWY3YjRiMTMyMzg3MDdmZTdiYjk1NTlkMGRhMWQxNmQyNWU3MDQgbGVnYWN5LXRydW5rCis2ODA1IGMyZWIzOGI2NzRmMzA5ODkyNDhjNjU0ZGFkODc4ZjYzNTA5ZWQ0MjQgbGVnYWN5LXRydW5rCis2ODA2IGQwNDQ2OWQwMjU2Y2U4ZWYxYmIwNDFhZWU2NGNjYWUwZmM5MTc5NjIgbGVnYWN5LXRydW5rCis2ODA3IGVlMjAyNjIxNzM0OTljNGU1YzRmMTI1NWMxOGVjYzkxZDE2YTJmNGEgbGVnYWN5LXRydW5rCis2ODA4IGYzN2NiZmFhNzMyODEyOWEwZDhkZjI5MjQ4MjA5MGQ3NTJkNThkYjIgbGVnYWN5LXRydW5rCis2ODA5IDM2NmQ3MmYxMjc5NGM1Njk1N2JjNzVlNDM4YzlmNzI1YWMzZDE1NDUgbGVnYWN5LXRydW5rCis2ODEwIDRkYmZkNGRmZTI4MWM5MTI1NTJjYjNhZTczZGYwNDA5OThlYzhkNWQgbGVnYWN5LXRydW5rCis2ODExIDM3NjgyMmM2NTgxMDg0M2VmODYxMmRkZDIzYmMwNjI0YzUyMjMyNjggbGVnYWN5LXRydW5rCis2ODEyIGFmMTY4NGZjOWM2MzI0ZDhkMjQxZTIyYjc4MWJlNjZmYWE5NDNjMmYgbGVnYWN5LXRydW5rCis2ODEzIGU3YmEwOTJjM2NmM2M3MTUzYjVkOWI0MmQ3YTIzN2IxZTRmYWVmYWMgbGVnYWN5LXRydW5rCis2ODE0IDJkZjYyZGIzNjZiNzY4MzAyYWIzNDQ4N2QyYjQ2M2Q4ZjE2ZjA2NWIgbGVnYWN5LXRydW5rCis2ODE1IDVhNzU1MTIzNjA2MzVhZTMzNjcxOTBmZTBlZGRlZWE0MzRiZmM0MzggbGVnYWN5LXRydW5rCis2ODE2IDg5NzI5N2FiZTViNDA1YzE2MmIxZDE4ZTNhZmE2ZTJjMjNjNTkxYWQgbGVnYWN5LXRydW5rCis2ODE3IDRiYmRlODA0YjY5Nzg0YjRiMGYwYzU4YzcwNTA1M2ZkODYxM2Q2MDMgbGVnYWN5LXRydW5rCis2ODE4IDVjYmRiYTRkMmUxNTI1ZDk0MjBhZWE5NzlhMTM0Y2YwYWMwODcyNWQgbGVnYWN5LXRydW5rCis2ODE5IDRmYjg4NGJmMTQ3Y2MxYzFiNjNjNTUwZDUwYmE5ZWRjMjgyN2E0YzkgbGVnYWN5LXRydW5rCis2ODIwIDdiNjAwZTczZmQyYThhMGZmZDE4MjgwOTNmNmI0Y2E5YTA0MTMzYWMgbGVnYWN5LXRydW5rCis2ODIxIGE1YzI5YWNjYzQzOGU4MGJlMjAxNDgxMDI1YWRmYzBjMDlhNDcwYTEgbGVnYWN5LXRydW5rCis2ODIyIDg1MmNhMjNjODBjY2UwMGY1MTJhNzk3Mzc4ZjFiZDViZmRmNWEwNmYgbGVnYWN5LXRydW5rCis2ODIzIDk4M2RmNDM2NDU5NTcwZmQ4NTYxYmFlZjc2YTBhYTI1ODY0NTViYzQgbGVnYWN5LXRydW5rCis2ODI0IGEyMDk5MTk0NjI4NTAzYWJlNzZkNzBjNDdiYTIzMDk1OGJjMDY2ZTUgbGVnYWN5LXRydW5rCis2ODI1IDAyYTI0ZTQ4YjM3NmU1NmI0OWJjZThmZjE5OGQ3MzIwNzFjZTA3ZGEgbGVnYWN5LXRydW5rCis2ODI2IDZlYzBjYWVhZjgyMzBkOGVmYjYxMDdiNGM0YmQ4MDUyNTFkY2Q4MDcgbGVnYWN5LXRydW5rCis2ODI3IGFhYzhhOTlhMWY5YzRmYTMwNWQwYjJjZTYzNDBjMTE2ZjI0ODI4ZGEgbGVnYWN5LXRydW5rCis2ODI4IDY5MjUwNzAzOTUzYTJhNzEwNzJmMDk2YmM4NjJmOTY1ZTllZGY5MjcgbGVnYWN5LXRydW5rCis2ODI5IGViNDU1ZDk5YmE5ODIyNmZiOGFjNGRhZDBhYjNmYmQ5Y2ZmYTI5ZmEgbGVnYWN5LXRydW5rCis2ODMwIDk1ZmY4OWQ4M2Q2Mzk3YTg0ZWQ4MWMxMDI1MDBiZTNlOWQ0YTU2ZWIgbGVnYWN5LXRydW5rCis2ODMxIDI5MTM1OTc0NDNiOTAwZTAwYjVlMTU5MTBkZjQ3NjI1ODAxZDMzMzEgbGVnYWN5LXRydW5rCis2ODMyIDAyMTJiNDgwOTQ0YmMyMDM5N2Q2ODlkOTgxODg1YzIxNTAxMGUyMTAgbGVnYWN5LXRydW5rCis2ODMzIDRlMDBlNWRhYTYxMjhkMjhiMDc1MmZjYTEyOGUzOTNlZGEzMWViNGIgbGVnYWN5LXRydW5rCis2ODM0IGRiZjI3MzdkMmM4MWNhM2UzY2YzOWRiMzQ4YWQzODY0NzhhOGQwYWUgbGVnYWN5LXRydW5rCis2ODM1IGFmNzU0OTYxYWNjNTI0YzkxMDA1MDNkOWI3M2U3MGE0MjZhYjQ1ZDQgbGVnYWN5LXRydW5rCis2ODM2IDM4MzYxMWJkYTllNmRlZTg5YWJkYTU1NDE4YjYzNTJmMGE5MzNlMTIgbGVnYWN5LXRydW5rCis2ODM3IDdiMWY2ZTVlOTI5NDYzMGM0YjBjNGJkMjY4M2E1NTExNzEzMjdlYjkgbGVnYWN5LXRydW5rCis2ODM4IDM0MTgyYTY0MDhlMDRmOTViMDFkMmIyYjlmOGIyZjBhYWNmOTVhNWIgbGVnYWN5LXRydW5rCis2ODM5IDkxM2ZjOWZmNDNhYzEyMWE5NzIwOWE4YzY0MjBkZTBjMjhlYmI5NzAgbGVnYWN5LXRydW5rCis2ODQwIDNlYjc0ZGY2NzJhMzk5NzMwMWVhZmIwMTYyMzE0ZDgxYzI1M2FjYWIgbGVnYWN5LXRydW5rCis2ODQxIDMxNWE3OTE5OWZjOGVkN2NmZDlhYzRhZTkxZjFhY2FjOWZhMzg5ZWMgbGVnYWN5LXRydW5rCis2ODQyIGEwNWY4ZDhjNjc2OGY4MWNmMjI1YjMwZTJkMmFhMDM0YzUyODdlM2QgbGVnYWN5LXRydW5rCis2ODQzIDNlNzdkNjYzN2EyYjkwZDMyYTY5NzQwZWQwOTIxNzI4MjNmMmYyNmYgbGVnYWN5LXRydW5rCis2ODQ0IGE3MDY5MmE2ZDhjY2Y1ODgwZjJlODQ2YzkxYTkzNjFmMWRjYzkyMGEgbGVnYWN5LXRydW5rCis2ODQ1IGMyNzdlZThjNjY5Y2RiODIwYTlkM2JiZTIzZDYwMzVkNTI2ZGZhZWIgbGVnYWN5LXRydW5rCis2ODQ2IGNiZDQzNGI0NmMxYTYzZjMyMjRmOGE4MTMyYTBjYWJmYTkwN2Q2YzUgbGVnYWN5LXRydW5rCis2ODQ3IDk4ZWE4MDA1MWRiYzkxZDA5NzAyYjVkYzI0YjIzNzAwNDg1YzcwMjMgbGVnYWN5LXRydW5rCis2ODQ4IDQ2MTQwZjU4NTZkOTBhMGVhODQ2Y2U5OGUxYTdiZmUyMDBhMWE3YjAgbGVnYWN5LXRydW5rCis2ODQ5IDMxYzdkOGY0NWFlYjA4NTU3ODgzYmZlN2NmNjcxOTA1ZDBkMmE1MDQgbGVnYWN5LXRydW5rCis2ODUwIGQ0ZjY0ZmM0MmQ4NDQ5MDU0ZjMzMTdlZDc0OTIwNjlhMzQ0NjNmNWEgbGVnYWN5LXRydW5rCis2ODUxIDVmOGE2NTNiMTc3OWE1MGRlN2VjY2NlYzA0OGQ5MTliNmE0ODE3OTEgbGVnYWN5LXRydW5rCis2ODUyIDk2Njk5YWY0ODFiYTllOTgyZDQxYWZkYWViNDFiYWZjYWNjMmY1ZDEgbGVnYWN5LXRydW5rCis2ODUzIDMwNjE2NzZhNjU5YWUzZThlNzk2YTA4OTcwYWQ5YmRlYmQyNjEzNTkgbGVnYWN5LXRydW5rCis2ODU0IGFmMWJmMGY2ZTJkYjExMDBmNGZhMmUyOWExMGY2MWU3OTg4YTI0NDggbGVnYWN5LXRydW5rCis2ODU1IDc5ODczMmU2OWIzYmExYTYyNGQ4Y2I5OTdkOGI2ZTIyMmM2MWVlNDcgbGVnYWN5LXRydW5rCis2ODU2IGFkNDFkZWNjNWZhOTNmOWM4OGI1YThlNjliY2UyODQzMjhiODA1YTQgbGVnYWN5LXRydW5rCis2ODU3IGUwMzNjNzg2ZjI5NzFjNzY0NzQ5ZjlmMzk1MjQwYzBlNWMzOGNiMWYgbGVnYWN5LXRydW5rCis2ODU4IDBkZTljNTU0YmEwMGMwZDZlZjVkYTM1ODEwNGQxMWNjNmZiZjE3NDUgbGVnYWN5LXRydW5rCis2ODU5IDcwY2MyMzhkNTYzZTYyMjc5MmRlN2ZmODI4MWMzNjJmZTQzMWYxMDAgbGVnYWN5LXRydW5rCis2ODYwIDNjN2VmZWI2MDdhMDcwY2I0NDU5MmFjOTljZjJmZjdhY2IzYzdjNDEgbGVnYWN5LXRydW5rCis2ODYxIDJlMjcyYmY1YTQzZTg0NDdiZTA4YjVlNmJiNzBhZWRmMTJiOGJiYWEgbGVnYWN5LXRydW5rCis2ODYyIGE3N2Y0YzIyNjk3ZmY5YWVmN2Y1N2I3Y2I1NGNiMDBmZmEyZDk0NjQgbGVnYWN5LXRydW5rCis2ODYzIGFkYmU2MzMxN2NjYjNkY2M2N2E0ZjViNDUyZjZiNTdjNDZlZmJmNzggbGVnYWN5LXRydW5rCis2ODY0IDc3OTU0ZmU0Mzc2Y2I0OTFlMjdiNWE0ODQzYTVmNTAwNmE4MjIyOWIgbGVnYWN5LXRydW5rCis2ODY1IDYyYjY1YmUyYjc3ZjFiMWE5ZDcxNzZhMmI1ZWU2YjMyNDUwYWQ3ZmIgbGVnYWN5LXRydW5rCis2ODY2IDcyYTBjZmRhMjAwNDQ3NDU5MDhjZDhkNTE5YTY1MTNkODU0NzkwODEgbGVnYWN5LXRydW5rCis2ODY3IDc5ODA4NjMyMzQ2NDVjODU4Yjc1M2ZlYWYwNTIzMWU4OTZhMTU3MjIgbGVnYWN5LXRydW5rCis2ODY4IDVjODZmNjA1MzlmNzQyN2UwYWQxM2NmMDQxY2EwNjE0ZTg3YmJmMjkgbGVnYWN5LXRydW5rCis2ODY5IDQ4ZDFmNWJlYjE2YmE2NDlhZDQyZDZlYTEyYzQ3YWI4OGU1Nzg2MDQgbGVnYWN5LXRydW5rCis2ODcwIGQ1OGE4NDkxNWZhZGUxOWFlMmQ4MmYwZDhhNTkxNjFiNDQ5M2IxMjcgbGVnYWN5LXRydW5rCis2ODcxIDg5MDQzNGQ1YmVjMmY5YzM5YWE2ZWE2ZDExMTZlNDQxODIwZGYwYjQgbGVnYWN5LXRydW5rCis2ODcyIGVjNGM0MmJlYTY5ZDZjZmIxMzljNGM0NGRjZTExOGJlOGI5ZGE1MGQgbGVnYWN5LXRydW5rCis2ODczIGZkZDEyOWYwNTc0ZWRjYzYxN2I5ZWEwMDZlYzY1OTdmZmIxYWE0YjMgbGVnYWN5LXRydW5rCis2ODc0IDA5MTc3NWE1ZTE5YjM1ZTk0NDUxYjA0NzE3NjFiZTYzNGU3YjE5N2EgbGVnYWN5LXRydW5rCis2ODc1IGQxNmI4NjIxYTNmMGVhZGEzOTA0YjA2YzVkNjM3YTk5ZTBiZTVhOTcgbGVnYWN5LXRydW5rCis2ODc2IDFkMjc1Y2Q0MmM5YjE4N2M2MzI5YWM4YWQyMjViNmY3MTJiOGY3ODEgbGVnYWN5LXRydW5rCis2ODc3IDNiM2Y3YzNmNmRhMmY4ZjBkNWU4NGViNmY2MTc0NWJkNjczZWU4ZGIgbGVnYWN5LXRydW5rCis2ODc4IDFlMmQyODA2MDZkMWVmZjhkMjMzZDczOGZhOThmNzViYzA1ODZhODkgbGVnYWN5LXRydW5rCis2ODc5IGU1MjhjMGFjZTRlNWRhOWQyMWNjM2UyODdhNTM0YjI4NWQxNTBjYTcgbGVnYWN5LXRydW5rCis2ODgwIDZmMDMyZWEyNjY0MmY2ZGNlMDBjZWZhZTYxNzhkNTAyZmJjYTI3MWUgbGVnYWN5LXRydW5rCis2ODgxIDdkZGQ4YjNmNjgwMmYwZTJlOTMzOWU3ODZmODk4NDU0MWEyYmVkMTggbGVnYWN5LXRydW5rCis2ODgyIDZjNzcxZWEzOGVlZTg3MjlhMTMxZWNjNDk2Mjc3ZjZmMGE1ZDgzYTggbGVnYWN5LXRydW5rCis2ODgzIGE5ODAxMWYwZjljYTViNGFiMWIzY2U4ZDFiODE1ZDZkMjE2NjlkNzkgbGVnYWN5LXRydW5rCis2ODg0IDRjZWYyM2UxZGNjYTg3ZmYxODcwOGQ3YmQ1N2Y2OTBmOTgzMzdiNjUgbGVnYWN5LXRydW5rCis2ODg1IGQ3Mzg0OTBjOGRhMTkzYzJmY2VjMGMxODVhODRjZTRiNTM1MWFiZjkgbGVnYWN5LXRydW5rCis2ODg2IGFjMzMyNGU2MzhlOTZjMjQzOGUxNTVhMjg2OWM0ZmE2Y2ZlMTBmZGUgbGVnYWN5LXRydW5rCis2ODg3IDc3ZDNkMzAxMzY5MmZkYzNiNDQ0MTBiMWEzOTYwZDE5NDAwN2IxMzkgbGVnYWN5LXRydW5rCis2ODg4IDAyYTY4ZDYyMzgwNWMwMTIxNWUxNTE5MjdlMzJjNDY0YjUxNTgyNWEgbGVnYWN5LXRydW5rCis2ODg5IDNkYmVkMGZmOWNmMjMzNGQ3NjI3ZmI0OTdkZTVjM2ZhN2Q0ZWY1NmYgbGVnYWN5LXRydW5rCis2ODkwIGZjZTRmODdlNTk3NDk0N2I4MTNlNTA1MjA1ZmRkZjJlODdlNzY1YmMgbGVnYWN5LXRydW5rCis2ODkxIGMxNDM1YzVkYTI4MTdiMzA2NDU4ZWVkMjBiMjc4ZDk5Y2M0ZGMwMmIgbGVnYWN5LXRydW5rCis2ODkyIGY0MWFiNzEzZjdlYWJlOTM4MWI3YWYxMDc2ZTkzZTQ3NjUyMDJlNjUgbGVnYWN5LXRydW5rCis2ODkzIDJlYWNkMmM4ZWFiZmY0MzU1NDY3MGVhNzhlMzgzOWY3OWQ2YjljZWUgbGVnYWN5LXRydW5rCis2ODk0IDdmZmZmNjk1ZjIxZGE3NzE5NGJjNWY0N2YwMDE2OGEyZWQwYzFkZDEgbGVnYWN5LXRydW5rCis2ODk1IDkzZDA1ZTE3ODIxNjRkZjdiMGU3YzJmYmU2NDMwOWFkZWEyNmZlZmIgbGVnYWN5LXRydW5rCis2ODk2IGRkNWU5ZTg1NzE4NjU5ZDY1YzQxYTE4NTI4N2QzYWNiMTMzNTc3Y2IgbGVnYWN5LXRydW5rCis2ODk3IGVmNzYwNGMwNzg3NzgxYjkxM2U3MGU2ZmUwMTY5YjkxNzY4MGRlMGEgbGVnYWN5LXRydW5rCis2ODk4IDRmNmM1NjI5MmQzNGY2YmRlNThjZWQxNjZjODk0N2QxMzc1OGM4YWUgbGVnYWN5LXRydW5rCis2ODk5IDVlMDM4ODU2ZmE1Njg4NmZiNmJmODIwZWEwZDI2MTU5ODYwZGQ5OGMgbGVnYWN5LXRydW5rCis2OTAwIDc1YWJlNzM3ZTcwYjYxNzE5ZDExMWY3MDk3ZDNmNGE1NzMwYzNkOTMgbGVnYWN5LXRydW5rCis2OTAxIDljN2VmMDMwYmVjODAxMWEzYjI0ZjYxMzAwZTA0YWYwZTU2NzNlODAgbGVnYWN5LXRydW5rCis2OTAyIDkzOGJlN2EzMTA2ZjI4NWJkNzJiNTA0NDlmNzdkNzY3Zjg5YTcwOGUgbGVnYWN5LXRydW5rCis2OTAzIDM0ZWViNjFmMTAyODM4NmQ4YTUyNDAzMDM1YmVhYWJiZDc4NzRkMTcgbGVnYWN5LXRydW5rCis2OTA0IDkyNzUzMjA3MTQ5MDQ0MTMxZWUyYTc2ZTE3N2M1YmQxMjUyN2U4NzYgbGVnYWN5LXRydW5rCis2OTA1IGYyZjk0NmJkN2Y0N2M1YzlhNjM1YTk2OGFmNDY1ZGM3OTA4ZjFiMjggbGVnYWN5LXRydW5rCis2OTA2IDFjY2NlNWU0ZjgwNmQ1NDljMWFhM2ZhYjljNDhhNzA4YTRjNDk4NjAgbGVnYWN5LXRydW5rCis2OTA3IDM0MGFkZmFhOTg1NDNmMDE5ZWIwZmVlODY3YWQ5ZjJmZmYwZDdmYmIgbGVnYWN5LXRydW5rCis2OTA4IGFjMmE2MjdjZTNhN2VmNzgwMzdlOTNhM2RkMzg5N2E5YjI3MzE2ODEgbGVnYWN5LXRydW5rCis2OTA5IDI1YzUzMjg2NzYzZDAzNTllYjMyMzgyZjBkYzQwMjc1YjVmYTE5ZWQgbGVnYWN5LXRydW5rCis2OTEwIGEzNjIzNTYzMTI3MzdiNzdjOTliMjQ4MDc5Yzg1MGY2Y2VmN2M2MjggbGVnYWN5LXRydW5rCis2OTExIDdkZTQ1N2JkYzk0NjY3OTM4NjYxNGZlMjNiZjIyZTg4NWFhYTYwYTAgbGVnYWN5LXRydW5rCis2OTEyIGU4OGIzMjE1ZTk0YTU5MDE4Yjg0ZjFhOTY1NzdiZmQzMWM5NzFiNTcgbGVnYWN5LXRydW5rCis2OTEzIGZiMTIzN2JmNzAyMmJiNzc3Mzk3OGRiMzIxMGEyYWVlOTgwNzdhN2MgbGVnYWN5LXRydW5rCis2OTE0IGZjZTI5NmRiYjAzZTE2OTk4MTAzYjdhMDNlYmY1MjI5MTg1MjQwZTUgbGVnYWN5LXRydW5rCis2OTE1IDc4MDEwY2NiOGE0NjE4ODFlYmNiNTU0MzZjODMzMDRmZmZhMzNjNjMgbGVnYWN5LXRydW5rCis2OTE2IDA1NDllMzQyOGQ1NzgzNWRkNWFjYWQ3YTkwZTdkYzlhZjBmM2FkMTIgbGVnYWN5LXRydW5rCis2OTE3IDFjMjc0NDkxMzBiYTQ0NWMyMTEwMTkzMTFiMjI5MzhiYzgxNTJkMTAgbGVnYWN5LXRydW5rCis2OTE4IGZhOWFiZjlhODYyNGU2ZjZlNzQ1YWUxNWVjZjQzNzdlYzMyMmI5OTMgbGVnYWN5LXRydW5rCis2OTE5IDAyYjFmMDhlMzBhMDNjYWU5NGZiZjcyNTk5Y2Q2MjdmNzI1Y2MxOTQgbGVnYWN5LXRydW5rCis2OTIwIDk0NTIxODgwODcxZDE2MmJkY2Y5ZmMzNWI4OWEwNGZkM2VkZWU3NGMgbGVnYWN5LXRydW5rCis2OTIxIDFiYTIyZjc0OTQ4OWE0MzU0YTdiYzM2MTI5ZDA0MDQzMmZmYTEzZTMgbGVnYWN5LXRydW5rCis2OTIyIDg1ZDM4NDU2YWRmMDk0ODViNDA0MmIwMGFiM2Y5YThlZTc2NDdjYzAgbGVnYWN5LXRydW5rCis2OTIzIDFmYjlhNTRlNGE5YzE1N2JkYTRhZjM1Mjk1NzgyYjBjMzQxZmIwYmYgbGVnYWN5LXRydW5rCis2OTI0IDkxYzY5NjQ1N2ZkNGVkMmNkMzE0YjBiNmEwZWYwNTAzOGYyOGJjNzkgbGVnYWN5LXRydW5rCis2OTI1IGM2ZmZiNGZjNGRhNDA2NjI0NzMyMTM3MDU3N2ZmYTFmY2MzMmJkN2YgbGVnYWN5LXRydW5rCis2OTI2IGVkYWIwOTc4ODJkODBlNDFiZDZiOTk0NjgzODRhOTdjYjY2NTNmMmEgbGVnYWN5LXRydW5rCis2OTI3IGRjYzRjZjlmYTYyYTg2Y2I2OTRkMTIzNTUyOTUwZDNjNmY3YmI1YjYgbGVnYWN5LXRydW5rCis2OTI4IDRjMTYxNTRmZmZiOTdiNDZmMjVkYzUyMGRjYzQ3MTcyYWE4MjQ3MTMgbGVnYWN5LXRydW5rCis2OTI5IDdlZWVmZDMyNjdkNDUwYTcyODk3MGUxOTg3ZjkzOGM3YjQ5N2Q5YTcgbGVnYWN5LXRydW5rCis2OTMwIGFjYjE5ODhiODg1MmZiODk3NmEwNzlmOTlmNGVlZTE2MDI0OTA0ODQgbGVnYWN5LXRydW5rCis2OTMxIGFiNjBjNTU4NWQxYjAwNWNkYzU0YmFkZmQ2ZWIzNDNmNmQ4ZjU4ODYgbGVnYWN5LXRydW5rCis2OTMyIGQ4NzU5ZDBiNWE2N2NiYmQwYTNjMGVjNmJiYTVlNTdiZjlhNjQxMDQgbGVnYWN5LXRydW5rCis2OTMzIGM5MWFhY2JmOGVkNDY1Mjg5NDBiYjA2ZTg2Y2NjZDJjZTljMDE0YTEgbGVnYWN5LXRydW5rCis2OTM0IDUxOTdlMGYzZjBmZmNlZDBjOWViYjg2NjRhMjMxNDA5OThlN2JkYWEgbGVnYWN5LXRydW5rCis2OTM1IGE4MjY0ZDcwZjI4MWM2MDk4YmYwMmI1YzNkNzMxNWY5ZDE1YWIwZWYgbGVnYWN5LXRydW5rCis2OTM2IDZmODlhNDRhODYxYzdiZDlhMmE2ODI2MjQxNzU0OGQ1ZTE4YzJmZGEgbGVnYWN5LXRydW5rCis2OTM3IGM2YTQ3ODZlN2Y4ZWE4MzAxYmFjMTRhNzU5NWJhZThkZmQ0Zjc4MTMgbGVnYWN5LXRydW5rCis2OTM4IGJhYWJmYjVkNjJhODhjZTQxYTQ4OTFmZWFhZGFjYWZjY2VhNmM4ZTQgbGVnYWN5LXRydW5rCis2OTM5IGI1MWRjMmZiNDhlMTgwNGFkZDU3OTkxNzhmNWI2MmM1ZGJkOTc1M2QgbGVnYWN5LXRydW5rCis2OTQwIDhkMDU2ZjUzYTdmNjMyNWE5MDdlYzM1YmNkNmNmYTViNDNkYjMzOTAgbGVnYWN5LXRydW5rCis2OTQxIDBkNjFmNmMzOGIzN2UyNTc4YTQ5ZmE5NzY3YTQzYjU0NGMwZDk5ODEgbGVnYWN5LXRydW5rCis2OTQyIDYwMGY1YjhhMTZjYjFjNDc1YmRjMjljNTM4ZThlZWZlNTNkZmI3YjEgbGVnYWN5LXRydW5rCis2OTQzIDVkN2ZhM2YyY2VjM2Q1NjExNmI2YTY4YTkyMmMzYjQyNDRhNTRjNzEgbGVnYWN5LXRydW5rCis2OTQ0IGQ5YzUxNTViZGE1MDAyZjJjZTg4YzU0OWU4ODczOTdmY2VlODkxNzIgbGVnYWN5LXRydW5rCis2OTQ1IDEyMmM4ZmRmZTRlZjkxYWE3NWJkZDAwMjlkM2EwYjk1Y2FiNTgzMWIgbGVnYWN5LXRydW5rCis2OTQ2IGY2MzQ2MDlmNDAyOGE1ZTJjNzkxZTBkMjNlN2E5N2I0NDRkMWUyZmEgbGVnYWN5LXRydW5rCis2OTQ3IDU1ZmU2NGMyMTE0NWNkODkzMjczOTFjZWE3ZTFkZGVjNDc1NmU5NjggbGVnYWN5LXRydW5rCis2OTQ4IDRkNmJhYmYyZTRlMTkxM2FkOTZhYjhkZGRhMmZiM2FkNTI1YjVlNjcgbGVnYWN5LXRydW5rCis2OTQ5IGZiMmQxZDVlMTQxYWE0NmNkYmFjYTQ1ODBkZjk1ODk1MzIwMjY5ZDQgbGVnYWN5LXRydW5rCis2OTUwIDdlNWYwMzk1MzExMDU5YmQ0NGY2ZTJlM2NjYTBjMjNiZDgyMGZjNGQgbGVnYWN5LXRydW5rCis2OTUxIDJmZGJhMTI2NzYxMzllZjVmZDFhZjY0Zjc4YjFlNjA5MDRhNDk1YTAgbGVnYWN5LXRydW5rCis2OTUyIDI2N2FlNTgyMzJkOWE4NmE5ZWFjNTUxNDMzMmYwOWM5Y2ZjYjkxZDYgbGVnYWN5LXRydW5rCis2OTUzIDIzNDM4MDMzMThlNGY2ZjU2MzIxNGEwYzA4MWY0ODYyYTY5MjgzYjAgbGVnYWN5LXRydW5rCis2OTU1IDllODUzYTVmMDRmZjllYzE5MjJlYWNhNzAwYTQ0MTZjMjE4NDkyYTYgbGVnYWN5LXRydW5rCis2OTU2IGRkNzA5ZWQ4MjI2MjcwZGVmZTAxZGI5Y2ZlOTczNDYyY2UyM2MzZTAgbGVnYWN5LXRydW5rCis2OTU3IDMyNGUxZTM2ZTY1MmJjMjFhMzU4NDE2NWUwMWExZmNmZDk5ZGJjZjggbGVnYWN5LXRydW5rCis2OTU4IDFmZWM4OGIyMmU4N2Y4MjRjNDQxZWMwNGFkZWUyYjViMGU5ZWJjMGMgbGVnYWN5LXRydW5rCis2OTU5IGE2MGQ4NTIzN2ZkYjgxZWE1NzBkMDg3M2IxOGYxMzQ1YzJjYjE3NmQgbGVnYWN5LXRydW5rCis2OTYwIGQ5MDRmNTM5ZmZkOWNlOGVmZWUxMGIwMTI3ODQ0YmFlZWIzZDNiYzcgbGVnYWN5LXRydW5rCis2OTYxIDNkNDM1MTBiNWUxOWRhNWE2NDU5YzBkNzNhYTYzNWEwZjVkZmEzNDMgbGVnYWN5LXRydW5rCis2OTYyIGUwYzFiZDBhNzRhOTEyNzQ0Y2NmYjYyNWJlYjYzMTJjZGNkZTllNzggbGVnYWN5LXRydW5rCis2OTYzIDhjZTE4NTM4ZTNiYmZiMWU0Mjk5NjEzNjg3MGM1MjMyYWY5NTE2OTUgbGVnYWN5LXRydW5rCis2OTY0IDBlNjIzZTgyMzAxZjFmYjE0NmYwNTMzYWNiZTdmZTRlMzk2NDM1MjAgbGVnYWN5LXRydW5rCis2OTY1IDk3NGRjMzZmZWNkNjJjMTZmNmUyY2VjOWU0YzcxMDliYzZlYTFjZWIgbGVnYWN5LXRydW5rCis2OTY2IDZhNzViM2NmMDIzY2ZjN2FjM2IxODA3ZTcxMzFmZjlkYTg0NzBjYmUgbGVnYWN5LXRydW5rCis2OTY3IGFlNzVkNGExZjVkZGIzNTc3NWM2OWZjYmMwMGRlN2FmNTMwNjlhMDQgbGVnYWN5LXRydW5rCis2OTY4IDk5ZTcwYzQ3MmEyMDJkYTUxMjY2NGJmNmMxOTkwYzgzMDI3MjFjNTUgbGVnYWN5LXRydW5rCis2OTY5IGE5NTU0OTI2OWRlMmIwMzAyNDk4ZjU2ZWFiYzYwZWViYWNkMTU3YmQgbGVnYWN5LXRydW5rCis2OTcwIDU2OWUzYWY1MjE4NzVkZWZmNjc0NmMzY2M4YmYxNTIyNzNlNmJjYmEgbGVnYWN5LXRydW5rCis2OTcxIGVhZThhYjNkMjRlMDMwMDkyZTI3NGU0MWRiYmQ4MTdkZWIzZGVjMTggbGVnYWN5LXRydW5rCis2OTcyIDkzMzUzZTFkMWM3NjA0ZjA3NTc1MjQ1N2JlMzFlMjYyYzIzYWE4MDkgbGVnYWN5LXRydW5rCis2OTczIGQ4MDEyNWQ3ZGM3MzRhMWY5ZTE0NTllZmY4NjQ3Y2U4MGJlNTQwOGMgbGVnYWN5LXRydW5rCis2OTc0IDIwZmQ5NjY0ODUxMDhkYzJlMDhhN2M0ZTFlMjJjNjc3M2JiOTE4MWEgbGVnYWN5LXRydW5rCis2OTc1IDRiYTIwZjQ0NjU0YmJlN2UwY2M0OTM4NjlhMjFmZTI2OTEzZmFlYzYgbGVnYWN5LXRydW5rCis2OTc2IDU1OWFhNDdiMmUyY2ZjZmVlNjRiMThmOWZjMmM3OTU5YWZlNDFlMDEgbGVnYWN5LXRydW5rCis2OTc3IDk0MWIwNTFhZjY3NWUyYjdlZTc2NTgzODM4YmI2Yzk0MzA3NDRiNjIgbGVnYWN5LXRydW5rCis2OTc4IDY1ZDJkOGU2N2RhMzIzYjc0YjcyZTRkODA1NTM2ZmFhNmZkMjRjMWUgbGVnYWN5LXRydW5rCis2OTc5IDg1OGZiMmU5YmMxNzIzYzg4YjllZTc4MTViMTE4NTY0MjNiZjhhNGEgbGVnYWN5LXRydW5rCis2OTc5IGRiNDk0OTRjOTNkYzczZGUwNmQ1NzIxYzc0ZWFiNTMzYTk0N2E5MmMgbGVnYWN5LXRydW5rCis2OTgxIDJiMjFlYTJmMzliNDQzMjZjYjIwYzE1ZjkwOGYwM2Y3ZDBjZmU4MTEgbGVnYWN5LXRydW5rCis2OTgyIDE4OTI3YWJkYzI2MjgxOTQ4YmNiOTU0NjQyYTZmOGE3NDUzNDRmZjAgbGVnYWN5LXRydW5rCis2OTgzIDcxODdjNzA5ZWJmZGVhNDE0N2FmOWQyNTk3MDc3MTI3ZTI4MmM4ZGMgbGVnYWN5LXRydW5rCis2OTg0IDljYTU5NDI0MDIwZTAwZjZiYzZkMTE1MTk3NzZlYzk2OTEwN2M3MzAgbGVnYWN5LXRydW5rCis2OTg1IDExZTBjMjIwODk5OTc5ODZkMzg3ZjAxYTVlMmU3MmQwNjY4NzVlOTUgbGVnYWN5LXRydW5rCis2OTg2IGRmMmMyMTJlNGVhM2ViY2FiZWVmNjBlYjhiNDM2MWFhZTdkYmYxNmMgbGVnYWN5LXRydW5rCis2OTg3IDIzYTEwNGQzYmNlZGM3NWNjNzc3YzQ2MzFlMmVmNGUyNzM3OWFjOGEgbGVnYWN5LXRydW5rCis2OTg4IDg0NzQ0NWFlYWIyZDE5MGE2YzZiNTcyNjZkZmJjZmRhNTQxNDdkMDcgbGVnYWN5LXRydW5rCis2OTg5IGY2OTc2YjlhODVhNDNlZjliNDc4NWFlNTUyMjMxYTEwNThiMmU4MzEgbGVnYWN5LXRydW5rCis2OTkwIGE3NTg1OGZlZjU1MDdlZTdhZmZiOTdjMzA5ZTRjYzkxMDY2ZThiZmIgbGVnYWN5LXRydW5rCis2OTkxIDRhN2M3ZGQ3YjFmMDU2MzM5MzYxNzM2YmRiMTA1MGE1YjA4YzgwYzIgbGVnYWN5LXRydW5rCis2OTkyIGE0ZDJhYWU3NTdhOGQ1MTc0YTlmMjJmMmQ2MWE2YjQwMTA2OGU1MmYgbGVnYWN5LXRydW5rCis2OTkzIDY5MWUzOTJjYWQzNDBiZGJmODk5OTg5YzExMDhjM2Q4YjUwMTRhNmEgbGVnYWN5LXRydW5rCis2OTk0IGZkNTI0YTAwMWNlOWZlZTI5ZjgxN2NhZTU3Y2IyNjkyYjVmMmIxY2UgbGVnYWN5LXRydW5rCis2OTk1IGI0MDYzYzEwMWMyY2NlMzI0OTM5ZjcyYmEzMjk3Nzk4MTFmNTYzZDAgbGVnYWN5LXRydW5rCis2OTk2IDk3YTYxNzk1YTE2OWFmZjdlMWVhN2FjZGZkOGYwOGQzYjE0MDM4ODYgbGVnYWN5LXRydW5rCis2OTk3IGQyNWEwY2NiZmQ2YjhhOGEwODlhNTVhOWQxOTkyNzI5M2FhZWE0N2EgbGVnYWN5LXRydW5rCis2OTk4IDRkMDY4MWY3Y2Y2YjZiNGI1ZTRmMTE5OTAxNWI3NmRjMmFkZTUwMTUgbGVnYWN5LXRydW5rCis2OTk5IGQwYzAzYzMyZThkOTQzMGRmY2E0NzBkMjNmZGQ3Zjc2NTk4MGYzZGEgbGVnYWN5LXRydW5rCis3MDAwIGZmZWYyYzMwZGM0OGZkMDdkYTgyY2NhMjg4ZWQ2NTczMTRmMGYyYjMgbGVnYWN5LXRydW5rCis3MDAxIGRiNTViODBhYWYxMDM5NGE2ZTU4OThhOGI0NTk3YTlhNWI5ZGJmMWMgbGVnYWN5LXRydW5rCis3MDAyIDc4OTRhMGNkOGM3NTRiODVjNWQ3OGZkMTg4NTY2YzI3YTU3NzI1NTkgbGVnYWN5LXRydW5rCis3MDAzIDI4MjRjYmRiZTEyYzViZDY3YTQzYWZlOGZlMTZiZTY5NGMzOTVjMzggbGVnYWN5LXRydW5rCis3MDA0IDMzNzU2MjMzMGZkMGZkNTkwM2ZkNDEyZWFkZTA5OGMzNzJlMWE2ZmYgbGVnYWN5LXRydW5rCis3MDA1IDgwYmNiMDJlYmY0ZWYwYWY1NDg2MTljOTE4MTIxMTNhOWZkZjg5MjkgbGVnYWN5LXRydW5rCis3MDA2IDk2MDNhNjBjODY5YmUyOTIyZWU5ODQwYTQ4Y2RiZWY4YmRmMGMwNjIgbGVnYWN5LXRydW5rCis3MDA3IDMwY2VjYTNmMTA1YjBkYTgxMDU0MzIxOGQ2YWE3MDQwMzQyZjkwZjYgbGVnYWN5LXRydW5rCis3MDA4IDYyY2VmN2U4OTZiNmVjYWIyNzA0ZjMyOTAyN2QwOThkNzNjMGQ5MzIgbGVnYWN5LXRydW5rCis3MDA5IGQ5MGQ3YjU0MWFkYWIyZjZkYTE3ZGQ2ODBkMjU4YjcwNDljNDA0ZGQgbGVnYWN5LXRydW5rCis3MDEwIDk0MjFkMmY2MzA3N2E5NTJmNjY2YTBiMDAzMzNjODkyNjgxMTg2ZTkgbGVnYWN5LXRydW5rCis3MDExIDA1NzUwODM4Zjg0MDNmODg2MzVmZjc3ZGNhYjg0NGQ5MjM4NjFlMzggbGVnYWN5LXRydW5rCis3MDEyIGJmMzc2OGJkMzFmMmM5NmQ1NzRhNjU3NTk3N2RhNTc0NjlhODVmNTcgbGVnYWN5LXRydW5rCis3MDEzIDY1MTcwZGExZDJjYTViYzRiMzBjZjY5Y2ZiMTA0MWM1YjUyMzI3OTQgbGVnYWN5LXRydW5rCis3MDE0IDQ3ZTdjNDJiOWRjNjM1M2ZkZmQ4ODNkZTY0OTVlZGE3NGMwZWU4ZWQgbGVnYWN5LXRydW5rCis3MDE1IDFmNGYxYmU4YTMzOWI4Y2U3ZWU1MTdlMDhkMDkxMzE4MjQ4OWI2NTkgbGVnYWN5LXRydW5rCis3MDE2IDU3NDhkNWVlMTllZDNjYzA5OTQ1NzQxYzFlMTdjNzBjZTljMGI3ZjcgbGVnYWN5LXRydW5rCis3MDE3IDY1MjMwM2VmOTI2YjFmNjJkMmI1ZTgwY2ViZTQwY2I5N2VhMDIxMGQgbGVnYWN5LXRydW5rCis3MDE4IGU1MjA1NDQ0MGVmYzViMDJmYTlmZDM0NjAzMjE0MzBjYmI1YWU5OWEgbGVnYWN5LXRydW5rCis3MDE5IDhkMGIwMGVkOGMyYjU2ZTY3YjNiOGM4MWZlMmE2M2U3OWFjZDZmODggbGVnYWN5LXRydW5rCis3MDIwIDgyMGJmMWFlN2UyNTgyZGQ1ZjI1NDEwMjU3MmIxZDAwOThlZjhmY2IgbGVnYWN5LXRydW5rCis3MDIxIGNjNjUyMWEyY2UyMWVlODVmZjYxZmY4ODU4MTIyNjkyN2NmN2RmODIgbGVnYWN5LXRydW5rCis3MDIyIDU0YzgwMDhkZTg3YmJiNTM4NDBmMmE4N2M5ZWNjZDBjNTc2NGNmZmUgbGVnYWN5LXRydW5rCis3MDIzIGJkNTUxZmJiOTU5NjU4N2I5N2YxNjk2MzU1M2FmMzMyMDcyYjRkODEgbGVnYWN5LXRydW5rCis3MDI0IGRiYzk4ODM0ZWZmMmVhNTY4OTRiYzQwOGI1MGViZTdjNzBmNzE2NDAgbGVnYWN5LXRydW5rCis3MDI1IGYxMjQ0MDM2ZWJhYjZlMzcxMTg5MmM5YzBlN2I0ZTE2MzNmZDBmNjQgbGVnYWN5LXRydW5rCis3MDI2IGNlYTMxOGJiOWQyZjRkOGU0NzI1NGVlZTlhNDNhZDU4ZDIyN2U5M2EgbGVnYWN5LXRydW5rCis3MDI3IGVmYjI5MzhjZTY3NjNmY2YxNTY0OTlkNWExOWQxMjM4NjBkNGIxNmUgbGVnYWN5LXRydW5rCis3MDI4IDg5MDAyMTM3NjRiYTE5ZDIzNzM5ZGU3NGE4ZDQyY2UzMWM4YmVmNGQgbGVnYWN5LXRydW5rCis3MDI5IGYwMzE0NjY1MzBhZjY3MjgzMDg0YWVjNzAwN2RiMGRmNTY5YzUzOGYgbGVnYWN5LXRydW5rCis3MDMwIDA0NTA3NDJmMzZmNGZmZDEwZjlhZmQ0NDFiNTQzZmViNDNjOTNiMTkgbGVnYWN5LXRydW5rCis3MDMxIGIyMTNkMjU4ZmYzMjdkZWQ2MzZkZDkwZTFlNGRlNDQ5ZTc5MjJmZGMgbGVnYWN5LXRydW5rCis3MDMyIDJjMGM2ODA0MDdiMmVjNGM0MmIwODhjM2NiNDg5ZWEyMzNmYmI2ZjMgbGVnYWN5LXRydW5rCis3MDMzIGRmOWQxZWJjZjdmMzBiYTE4MWNlYmFkZjkxNmRkMDE2ZTZmOTQ1OTQgbGVnYWN5LXRydW5rCis3MDM0IGFkYmNjMGFiOWViNmFmNDAxYTUyYmZkMTkyMDhmNzdkZGIyOTUxMWEgbGVnYWN5LXRydW5rCis3MDM1IGIyMTdkYTNmOWI1NGM2MzY0MjBlOTExNTE0ZDA5NTAyMGJkNTJkY2MgbGVnYWN5LXRydW5rCis3MDM2IGM3MTNkZTcyZTc2ZWM0MzI5YTkwNWRhYjQyNWFiNGY4OTYwOTNhZTUgbGVnYWN5LXRydW5rCis3MDM3IGQwMzBlYTUzM2U2M2FmYWU4NzBkYjQyOGE3ZWExNTQ1ZmY3Y2Y4NzcgbGVnYWN5LXRydW5rCis3MDM4IGVhNDU4OTMzZmMyYWY2YjM5ZGQxZGY3ODQ0N2UxZDllNzVjNGFhOGEgbGVnYWN5LXRydW5rCis3MDM5IDc0NWM3YzcwYmUzMTA4YjE3NzRmNDNkMGIxYTg0YTA1YTZjNmJiYzYgbGVnYWN5LXRydW5rCis3MDQwIDdmNDdlMmI2YzRhNDk5ZjJiMGQ3OTg3YmQxNzlmZDA2MTNlZjAyOWYgbGVnYWN5LXRydW5rCis3MDQxIDY0MDNjOTRkZTUwZGMzYzFmZTg0ODk5OTE5MDAzM2ViNzIxMTdkNmYgbGVnYWN5LXRydW5rCis3MDQyIGEzNjBkYzFmYTU1ODI5N2U3YjI2ZjI2NDc2MjM0MzY4MTI5YTNkZjAgbGVnYWN5LXRydW5rCis3MDQzIDQzNDE1NzRlMTYzYjNmNDkxNTI2NTkxN2U3M2Q0NTBjZjdiNzQ3YzUgbGVnYWN5LXRydW5rCis3MDQ0IGU3MDhmNTY4YjhiNzNkMzBmNDljYzYxNWEzNWIwZGQwZmVhNWU0MDcgbGVnYWN5LXRydW5rCis3MDQ1IDdiYjg0YTIyMDU0MzUxZTgzMjM2NzdmYzZhNjFkZGZmMjY4NzZhYzggbGVnYWN5LXRydW5rCis3MDQ2IGEwZWM4YTlkYjk2MDU0YzllZWY2YWRhYzBkNjJiNDExMzQwYzY5OTUgbGVnYWN5LXRydW5rCis3MDQ3IDI2MjZkMDZiM2IwMWY3ZTE2ZWM2YjUyN2NmMTg5MTQzNzE1YWU0ZjkgbGVnYWN5LXRydW5rCis3MDQ4IDczNzU4ZGIyZjQ2NDY4OTQ3NTA3MjA3OWU1NWY1Mjk4ZDQ0OWFhNGYgbGVnYWN5LXRydW5rCis3MDQ5IDgxODYwMzkwNTVlZGEzZDNkOWIzYTM3NWIzYjAzM2FjOTQ5ZDQ2NzIgbGVnYWN5LXRydW5rCis3MDUwIGFhOTY1MDhhNjU4NzkwZmIzYTA1MmQ1YTFjYTZmMDM2ZGU5OTAyNmQgbGVnYWN5LXRydW5rCis3MDUxIGMzYjA4OTVjOTBmYmYwODdkODY5MzM3MGNmMDc0NTZiZDRkMDViZWMgbGVnYWN5LXRydW5rCis3MDUyIGZhZTc4Y2Y4NTQxZDRiYjdlY2E4ZGZmZDk3N2ZjYzM4ZjE2MmMwYTIgbGVnYWN5LXRydW5rCis3MDUzIDZmMWExMjBhZTljMDYxNjE0YTllZGIyOTQ1OGFkMzMyODJjMmEzMWMgbGVnYWN5LXRydW5rCis3MDU0IGUzZjcxY2U4ZTZiYmI1ZjM4ZTE4NTY5N2M2Y2Y0MDQxOGE0YTU5NDggbGVnYWN5LXRydW5rCis3MDU1IDExYmQ0ZjQ5Nzc0MmQ4MjdiNzM3YzI2OWI4OGI4YWU0ZTMzNWRmZDkgbGVnYWN5LXRydW5rCis3MDU2IGM4MzdmMjVjN2U0Nzc0NzI0MWMzZGEwNjViMDcxMzlmODI0NmIxYTIgbGVnYWN5LXRydW5rCis3MDU3IDJmOGQ5YzIyZGU2MmUxNzE4YzA4YzE4NzEwYjYxYzI5ZTA3YjZhZGMgbGVnYWN5LXRydW5rCis3MDU4IDRmNjQ0ZWNjNWJhYzRhYWEyODkyMzMxMjJkODY4MDE3YzExZTJhNDEgbGVnYWN5LXRydW5rCis3MDU5IDM4NzFlYmQxOTYzYzdhZDgxYjdlNWU1NzhiNjJjYTJhYmFlODU3YTcgbGVnYWN5LXRydW5rCis3MDYwIDRhODE2NWIzYjY2MDNkOWIzMThhOGVlMTZmNzMzM2Q1MzE1ODkzMTkgbGVnYWN5LXRydW5rCis3MDYxIGIzZDI5OTBkOGE0YWZiNjhiMDI5ZmNjNmY5ZTJlYzAyMjQ4NGJlZTAgbGVnYWN5LXRydW5rCis3MDYyIDA5ZDk0ZTllYjEwMTAwMTlkMWIzZDI3ZDUyNjJjOWM1ZjU2ODBlYzUgbGVnYWN5LXRydW5rCis3MDYzIDRkYzY3ZmRkOWUwYjVlMGVkYzEzNTJlNTcyM2U4YzAyZDRlY2YzMzMgbGVnYWN5LXRydW5rCis3MDY0IDk2MWJmOWEyMDBkZDE4NDQ4YTFmOWJlMjI4ZTU1MGQwMjMzMTdhOTcgbGVnYWN5LXRydW5rCis3MDY1IDIxMjRmNGI5N2JkZDJiYjk3YWQ1YmY0OTg0YWFmYTUwZTczYjI3YWIgbGVnYWN5LXRydW5rCis3MDY2IDhjZGQ5NGEzZDAyZDk5NmNlYmVlMzhjNGQyMmU2OGViNjZhYzZiOGQgbGVnYWN5LXRydW5rCis3MDY3IDNiZjllMmJlYWY4YzAxOTczOGY1NWM5YWJhNjBiMzVkN2Y4NDMyYjQgbGVnYWN5LXRydW5rCis3MDY4IDcyZDBkZmI5MTlmZTI4YTIyZWU4YTJkNjQwYzVjYWVlOWExMDg0MDkgbGVnYWN5LXRydW5rCis3MDY5IDQxODU3MDc1ZDQ1YmFjODAwN2M4MmEwNDJhNjk4ODY1YjNmNjhjMDYgbGVnYWN5LXRydW5rCis3MDcwIGY4ZjNkYTNmZGFlZDU4MjY4NWJiZDA4NjBiMjE3MDAyZTMxMmI3NTAgbGVnYWN5LXRydW5rCis3MDcxIDRmYTE5NjU5NTkxZWZhM2VkOGNlODIzODY3ZDg5Y2VhZDRiYzBmODUgbGVnYWN5LXRydW5rCis3MDcyIGU3NGI2MDdhNTk5NmZhOTkyMjEzYmI5NTNkYWNiNTM3NzQ5ZTE4NmUgbGVnYWN5LXRydW5rCis3MDczIDhmZGIwNTM5Y2ZiMTUwYTEwNzQ3Y2QwMTFiNTg5ZDQ3ZjMyMDExMGUgbGVnYWN5LXRydW5rCis3MDc0IGIyYTFjOTljYTY0MmI5OTNhOGQzYzUxMzU2Yzk5OTI4ZjM2NGU4MWEgbGVnYWN5LXRydW5rCis3MDc1IGQzNjI1MGFlZmI4MjUyNjc0YzJiZmIyMGUzNjdkODBlODBhNjhkNjEgbGVnYWN5LXRydW5rCis3MDc2IDdkNTZiNDk2YzdkYzIxY2RkMWQxNzk2NDAzZDIwZGNhYmIzMDM2NTkgbGVnYWN5LXRydW5rCis3MDc3IDdjNjgwMmQ4NjIwZjQyZTdhNTI2MWRiZjA4NDM4MzBiNTM0MjU5NTMgbGVnYWN5LXRydW5rCis3MDc4IDVjNzQxZDJkOTdmNWIxNDU0OTQ3ZjhmOTQ5MDY5ZjNlZmQwNjRlMDIgbGVnYWN5LXRydW5rCis3MDc5IDIzNjgzNTNkOTg4NzUzMDE5N2UzYWEyYTMyYWFlNzM0YTJhMWNiZDIgbGVnYWN5LXRydW5rCis3MDgwIGI5OGI0NmRkNDM2N2UyNzk2MDE5NzhhMTk1OWI3NzdlNzY0YzE5YzYgbGVnYWN5LXRydW5rCis3MDgxIDczOWI4NDgwZjFhYzI3MDZhNmIyZTI1ZGE4MGRmYWRhMDhlMzc1ODYgbGVnYWN5LXRydW5rCis3MDgyIDMzYThlNjVlZWYyMzA5MDAwMTA1NDU3OTE2NDI3ZDg1NTc0YjBkYTUgbGVnYWN5LXRydW5rCis3MDgzIDNlZTg3ZDA4MjE0N2MxNjQzYmJlZjA0M2FlOWMzYzk0ZTY5M2MzMzMgbGVnYWN5LXRydW5rCis3MDg0IDUzZWY1YjUxYTQ4YjRlMGU3MDJmNmQyYzRiOGJiOTc0ZmU0ODY1ZmYgbGVnYWN5LXRydW5rCis3MDg1IGJiNDA5NGZmN2JkZmVkNGNjYzNjNTFkNDdmNTgzYmI1MmNkMGEzYzkgbGVnYWN5LXRydW5rCis3MDg2IGNiYzY2OWZlMzcwYWIwNWI1ZTQ2ZmE0MmJhMWMyZTllYTM3YmYwYTcgbGVnYWN5LXRydW5rCis3MDg3IDRkZTA1Y2JmNWFkMTk4N2Y3YTNhNDIyZGQ1MTI4ZjUxOGQxOTkwYzYgbGVnYWN5LXRydW5rCis3MDg4IDEzMjExMTJlOWUzYTRjZTgzYzQxZTM1NmE2ODMwNWEzZjU3MmFkZjIgbGVnYWN5LXRydW5rCis3MDg5IDY4MzA3NjQzMmI3ZjlkYWU2ZGE4NDVjZDM1YmVhNWQxMDU0ZjYzMTAgbGVnYWN5LXRydW5rCis3MDkwIDg3NjE3NzAxZDcyMWU3MmQ3NzFiYzJlZTg5MGJmZjAzNjliNzdlYmQgbGVnYWN5LXRydW5rCis3MDkxIDljZWY5NjljNDVlNDUwNjFiM2I4MjM1MGZkNTM4OTk4NDkwZWNlODUgbGVnYWN5LXRydW5rCis3MDkyIDg3OTk5ZGM0ZDc5ODAwMTljMjMwNWE4OWEwM2E5Y2NiMTllYmQzMDQgbGVnYWN5LXRydW5rCis3MDkzIDA2YzdjN2RlNjk3Njg5N2IzZDFhNGNmYmMxMzc2NTNjYWEzNDQyNmEgbGVnYWN5LXRydW5rCis3MDk0IGMzY2EwMDY1NTRkNDQ0YWM2NjQ5MjFmYzgzNDY4MWE2YzdmMDI5YTggbGVnYWN5LXRydW5rCis3MDk1IDk4YzA4ZjBjNGEyZWQ2YmM5ZTI1MzcwM2QzZGM1YTcwNDBhNTVkZDQgbGVnYWN5LXRydW5rCis3MDk2IGEyZjE3MWNlMjVmODEwNWZlYjA2YjRhNDhmZmE2ZDE4ZDQxYjVmODkgbGVnYWN5LXRydW5rCis3MDk3IDY4YjI4YjhjYTA3NzBlNGE1NmIyZWFiMTYyNmM4NjA3NTEwNjEyYTggbGVnYWN5LXRydW5rCis3MDk4IDFmYWI5ODE0NjVjOGJlZDRmNDM0YTI5OTQ5MTM1YTM0NzE3MzVjYzkgbGVnYWN5LXRydW5rCis3MDk5IGIxMWQ5NmM4MDc1YzU3NDJkY2JmNzZkNDY0N2U0ZDM5NTgzMDQ0OWYgbGVnYWN5LXRydW5rCis3MTAwIDIwMjYwMmZhZWZjNzgzMmVlYmNkMTI5MjEyOTIwYzAyMjcwZjBhOTggbGVnYWN5LXRydW5rCis3MTAxIDk0Y2UzZTAxYzMwY2MzMDBkYjg3YWJhNzE0YWRiYTRmMWJlOGQzYTUgbGVnYWN5LXRydW5rCis3MTAyIDZiNzY1NDUzYjA0MTBlMTFiMmE3NTE3NGYxN2ZlNTBhMzdkNWVlNzAgbGVnYWN5LXRydW5rCis3MTAzIDdkZjVkNGNmODI3NzhhNDI3NjgwNjZkOTdjNDMzMGI3NDdlNDRmY2MgbGVnYWN5LXRydW5rCis3MTA0IGZmMjY4NzMyNjhhODQyY2RiNjAzMzI2MmMyOGExOGI2NGZmYmM3YzcgbGVnYWN5LXRydW5rCis3MTA1IDA0NWVkODMwYzAzNWEwZDUzYWVkZDk3YjVjYmRiOWQzMDIxNGY0ODYgbGVnYWN5LXRydW5rCis3MTA2IDI2NDJmZmNhYzJiNGRjYzBiMTE0YjRkOGNmYTczNmIzODY2ZWVkMGUgbGVnYWN5LXRydW5rCis3MTA3IGM4ZDI0N2ZmOGQyZjgzYjQyODRiZmMwNmViODM0MDg5ZDVjMmUyZmUgbGVnYWN5LXRydW5rCis3MTA4IDNmMTBmOTk4YTU4NzFkY2M4NWU0M2Q5ZDc1Y2QxNjllODdlYmQ5YzggbGVnYWN5LXRydW5rCis3MTA5IDlmYWNiYWIxNTJjZGFiMGVjYWJiODE4MmE0ZjE1NjEyNDM5YjE0ZWQgbGVnYWN5LXRydW5rCis3MTEwIDQ5NzQ1ZGRiNGY2OThiNWJmOWUzYjg4NDAyZTI1NWM4ZGMyMGQxMzMgbGVnYWN5LXRydW5rCis3MTExIGJkMjg5NDVmNzUyYmI2NDBjMTYzMDA2NmRlMmNiNDQ5YmQ3OTUxYzEgbGVnYWN5LXRydW5rCis3MTEyIGY1MmMyYWEwNjFmOGM2MTNkNWI3OTQ2NGY2YmQyYWVmNGNjNmQ1OWMgbGVnYWN5LXRydW5rCis3MTEzIDVmN2QyNDZiYmViN2I2ZWIwYjI5ZmU1OTc3ODIwNmQ0MGMwOTk4MWEgbGVnYWN5LXRydW5rCis3MTE0IDk3ZWM5ZGZiYjJiNmU0YWU4MGU1NTY0NDdmZDg5MTEwNTA0Zjc2MWIgbGVnYWN5LXRydW5rCis3MTE1IDM0ZGI5YTIxYmZiMWQ0ODJjYWYxOTZiZWZlYTk0NjdlODc3NTkzYzcgbGVnYWN5LXRydW5rCis3MTE2IDVmOGY2MDVhZjMzODRkNTM3MDZiNzIwY2EyNmMwNDhjNzdiNDZmZjUgbGVnYWN5LXRydW5rCis3MTE3IDQzNTllOGQzODllNmZkODZjNDNlZjdiMWNjNGYxOGJkNzc4YzI5NjEgbGVnYWN5LXRydW5rCis3MTE4IDhkOTA5YWUxZjA5OTY0ZWNiNGJkODcxZmFlMDU3NTY4YzZmNDE2ZDQgbGVnYWN5LXRydW5rCis3MTE5IGY0YmE5ZTA3ZDliZjJmNDA1ZTZlM2YzYjZlNTJmZThkOTU2ZDBjYTUgbGVnYWN5LXRydW5rCis3MTIwIDY4YzRiMDZjZmZmNzA5NTZiNDRiYTc4NTI5YTU1MjU2NjkyYTY0MmYgbGVnYWN5LXRydW5rCis3MTIxIGY0YTYwZjI2MWZiYjY2ZTQ1Mzc3ODQ4MTkwNDdhYTRmYmYyNWNkZGIgbGVnYWN5LXRydW5rCis3MTIyIGFiNjM3NDI2OGNhYTkyNDZmZDRjODZlNzg4MDlhYjIwYmRiYWQyMzQgbGVnYWN5LXRydW5rCis3MTIzIDZkZDg1MTQ0NWM3ZGMwYjFjOGJmOWQwYmJiY2FkMWZhZWMxOGY1ZmIgbGVnYWN5LXRydW5rCis3MTI0IGRhYjAxYjg0YWZlNjY0ZDBkNDNiMWFjMTQzMzBmNWQ2NGE1ZDBmYTMgbGVnYWN5LXRydW5rCis3MTI1IDI3NDM3NTllMzk3OTdmYTdhYjAzNWI3M2I4OTdmMGMzYzViMmZkMTEgbGVnYWN5LXRydW5rCis3MTI2IDZlZmZkMTBlNzIzM2E2ODU5Yzg1ZDM4ZTFlODA4YjhiZTZiZjcxODAgbGVnYWN5LXRydW5rCis3MTI3IDNkODdjYjFiM2QxN2FkNzE4YTNmNmVjOTM4ZWQxNjUyZDBmZWVjNzQgbGVnYWN5LXRydW5rCis3MTI4IDNiN2NkODNiNjAyZDZmZDgzODBhMTQ1ZDViMTE3NzE5YmFhN2QwOGEgbGVnYWN5LXRydW5rCis3MTI5IGRmODE4NTZkYjU4YzU0MzdkMjc2OTc0N2RkOTRiNTFlZGY5YWU3ZjcgbGVnYWN5LXRydW5rCis3MTMwIGM3NWEyZjJkYzIyMGE1Nzc2ODhlNjFiMTBkNzc2MTQ1ODM0ZTdkNGQgbGVnYWN5LXRydW5rCis3MTMxIDE4NmMyYWQ0YWJmMzNjOTBmNmU2NmY4YzcwYjY5M2U5ZGM3NTkyMTcgbGVnYWN5LXRydW5rCis3MTMyIGRkYmNjMDM4OTE2YjJjZjUzYWFlZjM2ZDJhM2U2YTkyNjRiOGNhMTEgbGVnYWN5LXRydW5rCis3MTMzIDBkZGRmNDllYTQxNmYzYmViYzA2MDhlNDkzZmE1YjQyMWMyZTg4NjkgbGVnYWN5LXRydW5rCis3MTM0IGU5NzUyODQ4MmJjNjc0Mjk5MDgxNTI5NTMzNTg4M2Q0NTYwZjAwN2EgbGVnYWN5LXRydW5rCis3MTM1IDhmYjU3MmUxYjFiYTE3MWUxNzQzYjE1Y2U2YmMwOTRhN2ZlM2IyZWIgbGVnYWN5LXRydW5rCis3MTM2IGQ1MDIzZDBjNTUwMjM3MzY0OGJhNWU4NGVlMzRlYjUxNTVmNWNhZTUgbGVnYWN5LXRydW5rCis3MTM3IDIyNzg1MTA4ZjFlYTEzZDc0Zjc1NjkzMzMzYjc4MmZhMDlkZjVjMjAgbGVnYWN5LXRydW5rCis3MTM4IDRlZTRiOGJiNjdjNzQ0MjcwY2VkNDRiNWJhNGYzYWY1NzFjNThiMmYgbGVnYWN5LXRydW5rCis3MTM5IGRjYjJmNWQzNGFlODAyNjNmZTM0MTg4YzJlM2Y5YTY2MTE3M2UzZTYgbGVnYWN5LXRydW5rCis3MTQwIGVkMzUwNjdlMzc5M2UwZmMzYTgwNWEzMTdlMjZmZDliMjQyNWMwMzAgbGVnYWN5LXRydW5rCis3MTQxIDI5YmMyOGVjYTNlOWVkNTU1M2Q0OWE1N2NkM2M3NTNlZWM0OTZjZWEgbGVnYWN5LXRydW5rCis3MTQyIGM0MjM3OWU0NjUzYmE4Y2VlOTIxYTNjNDc5ZDRhNWRlNjE4NWM3ZjIgbGVnYWN5LXRydW5rCis3MTQzIDk1MjA0YWEyZjQ1MjJhNWNjOGNkNzg1NjgxNzFkOTcwNzk1N2NiOGQgbGVnYWN5LXRydW5rCis3MTQ0IGQ1MDFkYWYwYTJmNjU1ZmZkYjI5OTU5OTU0Mjg3NDAzYTY0MDA3MDIgbGVnYWN5LXRydW5rCis3MTQ1IDc5MDFmZTc5ZjZhYThhMjQ5MmEwNjFiZjdjZjVmMjQzYzYwZTVlZjQgbGVnYWN5LXRydW5rCis3MTQ2IDgyZGYxMDQwZGYwZjhhNmNjMDgxNDdhYmI5ZjMwZjYwNzg3MjU4NDQgbGVnYWN5LXRydW5rCis3MTQ3IDViNTMyNjhmNTQ3YTM5ZGIxNzc2OTEwOWE4NTAzNTE2OTQzNWY5ZTQgbGVnYWN5LXRydW5rCis3MTQ4IGEzY2RjODE2NDk5MGUzNGUzNDNiOGZmYTkyMDE2NTUwZGJjODI0ZjkgbGVnYWN5LXRydW5rCis3MTQ5IGI0M2ZmODlmYzUwZDk1YzIyN2I1NmFkYzg5ODNmNDgzOGMzN2Q4Y2MgbGVnYWN5LXRydW5rCis3MTUwIDBjMDFhMjNjN2RjZGJhYjgxMjk3MjNmODc4ODhjYzdjN2JhOWVjZjAgbGVnYWN5LXRydW5rCis3MTUxIDE5Mzk1MGJjOWQ4ZjdmNGE1ZjY1ZjA3NWFmZTA4MWZkMmM0OWJiZmEgbGVnYWN5LXRydW5rCis3MTUyIGI4MjhlYjUwZGJkNTA2MzhlNmZjMjk5OWVmNjcyOWUzMTNkOTMyZjkgbGVnYWN5LXRydW5rCis3MTUzIDE1OTI5NzBjNzg5YjA5MmM1OWRhOGVhMDgyYzRiN2I5Yjg4M2VhMjEgbGVnYWN5LXRydW5rCis3MTU0IDg5YjE2MTI2ZDRlMjJkMWYxMjYyODhmYWM0MzQ2NzIzMTBkZGEzOTcgbGVnYWN5LXRydW5rCis3MTU1IDEwYzFiOGYzOTAyZmNiMjhhY2VmN2JkODExNmJlZTY3MGZmYWQ4MjIgbGVnYWN5LXRydW5rCis3MTU2IGY5YzVhMzEzYWZkOTMyNTAyZmNkMGNmZGUzMzBhOTFjMmQ0MjNmMDMgbGVnYWN5LXRydW5rCis3MTU3IDE5YzhlNjFjYWQyZDgzNWFlOWUyZmZmYjgyYWJhMzViZDNkMzUzMWIgbGVnYWN5LXRydW5rCis3MTU4IDMxYmQwYWQwMjcyZDVhMDk1NDU4NDU2ZmFkNTMzYjVjOTYxMDM4MDUgbGVnYWN5LXRydW5rCis3MTU5IGQ4MDA4NDFiNTdhOGM3ZWY4OTA4YzUxNzI0ZTlkMDMxZmQ0MmM1MjQgbGVnYWN5LXRydW5rCis3MTYwIGQ3ZDA1ZTIzNDRkNzM2ZDg5NmM5OTliY2UxODkzYWU3NjQ1ZTAwNTQgbGVnYWN5LXRydW5rCis3MTYxIGMwNDZlZmFmMWJkMmM0NmU2MzE4ODZjNWQwYjNjZjc0M2ZkMTAxNGIgbGVnYWN5LXRydW5rCis3MTYyIGQxMjI3NTNlNWI5ZjYwM2M4NjI2YzM2M2U2NzIxZjhjMWNmYTAwMTYgbGVnYWN5LXRydW5rCis3MTYzIDAxZjRlYTA1YTc2NjNlYzEyYjAzODIxOGE2NDBlMGVmMDE5ZWMwNzYgbGVnYWN5LXRydW5rCis3MTY0IDhmNTBiZWM1MDY4ZTZlZmZjODA1YzkzZWJjYmRhMDI4ODhkZjc2NTEgbGVnYWN5LXRydW5rCis3MTY1IGMyYjgzMWY5MjNjMmYwM2ZkOGQ1YjQ0ZTM0MGE3ZDg5MWUzYmUyODcgbGVnYWN5LXRydW5rCis3MTY2IDgwMTVjNTU0OTMwOTg0ZWFiOWY0ZDNjYTEzMmNkMGJmOTMyOTYwMDcgbGVnYWN5LXRydW5rCis3MTY3IGNiNDA1Yjk2OTZkNDgzNjU3MmYzM2M5YmI4NzY4MmM5MDg2NDJiNTMgbGVnYWN5LXRydW5rCis3MTY4IGZhZGRmNmQ1NWFmMGE0ZDQwMjBmZjQ3YjJmYTY1ZTI4ODhjOWQwYzYgbGVnYWN5LXRydW5rCis3MTY5IDJjMTAzOTU5MjFlMWQwYmJiMWI4ODZmZTk1YTMzMjMwOTY0NWNkODcgbGVnYWN5LXRydW5rCis3MTcwIGYxMmIxZDRkNmE5YmI4ODJmNDZlODY0Mjk3ZWM4Y2JkNjgwYTUxZWEgbGVnYWN5LXRydW5rCis3MTcxIGRlMjdkYTVmMjJmMTc1MzVmN2Q2OGNlODA1ZWY0Zjg1YmIwZWY2NDkgbGVnYWN5LXRydW5rCis3MTcyIDFmMzY4ZmIzZTFmNzg2YjQ0NmQ1ZjdjMTNmNzBmMjZmZDUxYTgxZTUgbGVnYWN5LXRydW5rCis3MTczIGVlOThlNDRkNGY4NTUxZDVlMmM3YTBhZTgxM2NmZDQzNDVkOTAyNjAgbGVnYWN5LXRydW5rCis3MTc0IGExNjk0ZTk1YmNiYTc5MjBlNzlmMDM5NzdjOGRhZjk4MTc3MTljZjIgbGVnYWN5LXRydW5rCis3MTc1IDgyNTAzOGQ5OGFiNjIyYmQwNzY5NTJhYzk5M2U3NDlmNzM1NDVlOWUgbGVnYWN5LXRydW5rCis3MTc2IDhhNzViOGJmMTUyMTg3NTRmYmNhODNjMzA3OWI3YzAyZTE3YWQwNTcgbGVnYWN5LXRydW5rCis3MTc3IGU1ZTU4Nzk0MDQwZjQ1NDM0MDE5NzIzZWJiZWM1NTA3NDg5NTE4ZDcgbGVnYWN5LXRydW5rCis3MTc4IGUwYmIxZGFjMmRiZjU1NjI5NzU0ZDg3ZWFmYzU1OWZhMGIwYWExYTcgbGVnYWN5LXRydW5rCis3MTc5IDZjMGUzNWNmMGY4NWJkNjIzYWUwNWY3NmU0ZTBkMDc3N2U5NGFiZjIgbGVnYWN5LXRydW5rCis3MTgwIGNjNTI1MTgyYmJiMWYzNmVlYzFjMjA5MWJkYWEzY2ZjOTIxMTJmNWUgbGVnYWN5LXRydW5rCis3MTgxIDk3ODUxMTQzMjZhYjc1MjUyZDU0YWUyY2U4NmE5MDgzZDQ1N2RjYzIgbGVnYWN5LXRydW5rCis3MTgyIDJkZDI4NTc5NGQ2NzQzMzA4MzZhNTkzNzllNGRlZWI3YjM5ZTE0ZGEgbGVnYWN5LXRydW5rCis3MTgzIDc3NWE3ZDBjMjk2MDlmYWZkODUxNjQ5ODY1ZDdkNzE1YTNjNzQyYTYgbGVnYWN5LXRydW5rCis3MTg0IDQzODk0OWJiNDUwODA1MDYzYzIzNThkNzMzZjljNmE2OGE2ZGUwMDQgbGVnYWN5LXRydW5rCis3MTg1IDdiOWE2MTY2MjgxYTEyYzNhZDNhMjdhOTUyN2UyYTIxZGMwMGZjZmMgbGVnYWN5LXRydW5rCis3MTg2IGQ5ZmY2ZjgzYTE2YWQwYTE1MzFiNjMxMGUzYzY4YmIxODRkZTI3MTcgbGVnYWN5LXRydW5rCis3MTg3IDAyNTNlZjI2N2I2OGM2Y2E3ODg4ZjU0MTNjOGIyYTliYzVhY2EzMWYgbGVnYWN5LXRydW5rCis3MTg4IDZjY2Y1ZGJhOGIwYmI2Yjc3MjdjZDcxOWNlOTA2ZjRjOTlhNzc0MDggbGVnYWN5LXRydW5rCis3MTg5IDBjNmM2OWIwZDNlOWM2OWZhNDk4MmQxZmNhZmJhZjIwNDhmOWEyZDIgbGVnYWN5LXRydW5rCis3MTkwIDY3NzU5ZGZlNmVlOGM3ZGE2ZjIxZmU2MGNkY2MwZDgyNWIzYWRmMjUgbGVnYWN5LXRydW5rCis3MTkxIGE4YTU0NzQ5MGExMjdjZGVkM2Y3ZDQxMjRjZDRkOTM1OGEyYTA1MjIgbGVnYWN5LXRydW5rCis3MTkyIDEyMTU0ZDA5MTMxNjc0ZmU5ZGVhYzc5NTc2ZjQ5OTNkY2U3MGFkMjYgbGVnYWN5LXRydW5rCis3MTkzIDE4MzQ2NTRiZWJlMzIxMmU1Njg0ZTlhZTc0YjM4YWRlNWQwNTdmODcgbGVnYWN5LXRydW5rCis3MTk0IDc2YmIyMDk5ZDYxODI5ZjY4NzBkNGEyNTdhMjQ1YmZkNWVjMmY2MzQgbGVnYWN5LXRydW5rCis3MTk1IDkwODU3ZmI1NzM5NzA2ZTBjMDBhNTYwYjY3NGQwNGRlMzI5N2MxZGQgbGVnYWN5LXRydW5rCis3MTk2IGIyMDA5ZWQxNTJmYTViM2JmZjc1NGY1NGI4YzE2MzllNWZhNjc3ZTIgbGVnYWN5LXRydW5rCis3MTk3IGMwN2U1YzQ1NTU3NmRhYWQxOWE5ZGIxYTNmYzhkYTIxZjE3OWJjYzggbGVnYWN5LXRydW5rCis3MTk4IDQzNzQ0YmUyNDMzZjU4ZjAzYjdhMzcxOWEyYThmOTUxZGNmZTM3ZDMgbGVnYWN5LXRydW5rCis3MTk5IGRlMDFjNjZmNWZhNThiZjI4NWQzZTkzZjgyMDQzZTc1NDg2OGE3OTcgbGVnYWN5LXRydW5rCis3MjAwIDg2NjllZGIxZDljNTY1ODdiNTQyM2I1ZjQwMmY0ZmQ4MGJhZThlYzIgbGVnYWN5LXRydW5rCis3MjAxIGY3YTk5MTYxZGY5MmFhMWFhNDljMzkxMzk4MjhmZWIxZTFmOWJlNDIgbGVnYWN5LXRydW5rCis3MjAyIDlhYzllYTg0OGQ3ZGE3NzhjYjIxYTc0NjVjNDMwZDU5ZWNkNmYyODYgbGVnYWN5LXRydW5rCis3MjAzIGIyMThmMjk0YjcyNmFiYzAzMjM5Mjg5ZWRlMDRiYTdkZDUxYzkyNTQgbGVnYWN5LXRydW5rCis3MjA0IGUyN2ZhMmEzZjUyNjUwMTkyMDlhMGUzYjliM2NlMzc0OGQ3M2Y0Y2MgbGVnYWN5LXRydW5rCis3MjA1IDYyY2Y3ZDU4OTMwMGVmOWZjNTVhMmNjMmYzYmU3MmViMjI5ZjZjZDQgbGVnYWN5LXRydW5rCis3MjA2IDA3ZjBmMjEzNjNlNjQ4MjE5ZjhlMjZkZWI4Y2FmYzY3NzRlYTUyY2MgbGVnYWN5LXRydW5rCis3MjA3IGQzNjcwMTQyMDBiYjViODAxMTdhYmNmNWI5OGUxZTBjOGMzMGVkM2EgbGVnYWN5LXRydW5rCis3MjA4IDNjNzgxMmJmYTFhNGFhYWI4Njc2MGRiY2RiMGI3ZTJkODA2MTI5YTIgbGVnYWN5LXRydW5rCis3MjA5IDNkYjQyMzUxNTYyNmMyZmJhNzEzMmE3MDQ1Y2MyODBlZmRjODIxMjggbGVnYWN5LXRydW5rCis3MjEwIDRhM2Y0NWIzNDcxYWM1NGU1ZDUzMDVjODk2ODFhYTBiYmYzNjQ3MjMgbGVnYWN5LXRydW5rCis3MjExIDk0YWQ1NmVmNTA3MzM1OTg0N2UzNjYyZjY4ZDhmYjJlM2Q0NjM0YzIgbGVnYWN5LXRydW5rCis3MjEyIDQyNmY4N2M0NjVhMDI2NmYzMTQ1NDRkMjRhYjVlN2QwOGRlOGNmNzkgbGVnYWN5LXRydW5rCis3MjEzIDhlZGI1N2MzMzQ4N2JhZWQ5M2I5MDU3ZWQ3YWM4ODA1MzIxNjI3ZmEgbGVnYWN5LXRydW5rCis3MjE0IGIwMTY4Mjg1MWE2MzM2NzdhZjdhODQxM2NjOGJlNGRhZTc5MGU3NDIgbGVnYWN5LXRydW5rCis3MjE1IDA2MmU4ODYwOGI1NTU5ZTYwMWNkY2QxYzQ1NTI4MzNiZTI2ZDkwMzUgbGVnYWN5LXRydW5rCis3MjE2IGE0NDAyMDA4YzU2OWRkOGVmNzg4YTU2ZDlhODE3OGVlMzE2ZWJhNzcgbGVnYWN5LXRydW5rCis3MjE3IGVkMDFlYzQzZWIzMGZmNDNmOGJlNjdmODdhNjhlZmE0YmMxOTY1ZDYgbGVnYWN5LXRydW5rCis3MjE4IDM1N2Q0NTQ0MDg1YTJhNmQxZDMzOGJiZjYyYWQ4YzA1ZThlNzkzNGMgbGVnYWN5LXRydW5rCis3MjE5IGUwNTIzZjJkNDE2MzljOTA0YWExMjlhNGViOGVhYjQ1MjYzZWVjZGYgbGVnYWN5LXRydW5rCis3MjIwIDdhY2RmNTlmMzFjNWVjMWNmZmI3ZDhjZTZjYzZhMWZiODAwZjRkNzEgbGVnYWN5LXRydW5rCis3MjIxIDJjYmRlNWZjNGIxOWJlMTkwMDkxMWZkMDQ3ZGVhNDY2MDM5YTE2MzIgbGVnYWN5LXRydW5rCis3MjIyIDViMDViY2JkNDU0MmM2NDE3ZGI4MWRiMDBhMzg1ZDU0ODc3MGE1YzkgbGVnYWN5LXRydW5rCis3MjIzIGVhMTI2NWYyNmIzMzI3NDA5NWRkMmNjMzdmNWQyOTY0OTgyYWE3OTQgbGVnYWN5LXRydW5rCis3MjI0IGRkZWE2OWY5MDcxYmE4MmQ5Yjk4OTRlOTI0NzU3MWNhZmU2ZjY1MzEgbGVnYWN5LXRydW5rCis3MjI1IGZmZmNjNTJjZGMxZTg2ZmUzYTlhM2ZmNzE4YjY5ZjZiZDFkYWNiYTcgbGVnYWN5LXRydW5rCis3MjI2IDdhYjgzNWY4N2Y4NmQyMWNkYmM3Yjc0MGJmNGZjNjJiNzBkZTY4MDYgbGVnYWN5LXRydW5rCis3MjI3IDczNjdmYjEwNzEwODNlZTMzNmIwNTIyZjljY2IyMzFhYzhmNjU5YzQgbGVnYWN5LXRydW5rCis3MjI4IDdiMWU3ODRlMjBhMGVjZDUwZWY1NTBkMGQ5ZTYxODdlYjQ3ODZlYmYgbGVnYWN5LXRydW5rCis3MjI5IDMwNzAzYTY1NmQxMzQ1Y2RmZmY0OGNkYWM2MTQ4OTBmMmQ4MWI4ZWYgbGVnYWN5LXRydW5rCis3MjMwIDFkZTk2YzU3MmIwMmJjNGFiZTgyZDRhMThkMmQxNGZmMWNjNDg3MzUgbGVnYWN5LXRydW5rCis3MjMxIDMwMWQ3ZjZhY2YwYTZkMDFlZDg2NTcyMWRlNGY1YzJmNzQwNGE5ZDIgbGVnYWN5LXRydW5rCis3MjMyIGUxZjE3MjVjYWU2ZGE4MzAwMWEzYmEwYTQzMzA5Y2E4ZDkyOGYzOTMgbGVnYWN5LXRydW5rCis3MjMzIDYwNWZiYTAyZTE5NTA3NzYyNDM3YTE0NmY3ODkxNjIwMmVlMjhhNDQgbGVnYWN5LXRydW5rCis3MjM0IDNmYzYwNDJhMmFjYjg3NGEyZGRkMjI1NTU3YmQwMzI2MDczMzdiOGQgbGVnYWN5LXRydW5rCis3MjM1IDViMjJlMzJlYWExNzY0ZTNmNjkxNjM1ZWY1MzJkNDM3ZTFiODA3NDAgbGVnYWN5LXRydW5rCis3MjM2IGQ3ZWVhNjk0Y2QzYTA0ZTZlNjUwZjAxMTVjOGMyYmZkZmY0NWFjNmQgbGVnYWN5LXRydW5rCis3MjM3IGY5MjYyNjNmYjY1NGMyOWI4NzhmOWE4MmRhOGI4MDg2NDEyZDkxNGMgbGVnYWN5LXRydW5rCis3MjM4IDM4Njg5YWNlYWU3YjYwYzViOGFjNmJmZDQwZjQ3ZTNkM2NmZjgyNGEgbGVnYWN5LXRydW5rCis3MjM5IDg4NzE0ZmJmOWEwNjI2YWE2MGNkMzQyZGE4MzVkMGJjZTc3ZjFkOWYgbGVnYWN5LXRydW5rCis3MjQwIGY4YjM2YzBlYzExNGFlZGRiMzNkMzdiOTRjZGQyMmU0ZTIwMjY1YTggbGVnYWN5LXRydW5rCis3MjQxIDk2MDRkNjc4NDY3NWMyZGQ4ZTUwMmU0ZTFlNGEwMDFkZThhMjM0ZjMgbGVnYWN5LXRydW5rCis3MjQyIDYzZGFlMjczYjA3ZDg1OTMxNTQ0ZDhmNDZkZDFmNWQxOGVkYWEyZmEgbGVnYWN5LXRydW5rCis3MjQzIGY3YTYxYzZhNjVjMzc5NzQ3MWU2OTQ2Y2IxZTJjNjVkMjkzMjc0MjQgbGVnYWN5LXRydW5rCis3MjQ0IGVlY2JjYzQ4YjBlOTc2YzJiZjYxMjNjMTJmYjY4MTdlYjg4YjQxNDAgbGVnYWN5LXRydW5rCis3MjQ1IDcyMTA4ZmFhNTZiZjE0ODcwZDdhN2U2NThkNTNmMzFhNDE2NTIwOTQgbGVnYWN5LXRydW5rCis3MjQ2IDQ3MTA3MDE2OTBjMWM2YmRiNDM0MzM4NDc2ZTE0MmRkYjA0NWQxZWQgbGVnYWN5LXRydW5rCis3MjQ3IGI4NWYxMGFlNDg1N2YxMTUxY2VmY2VhNTM3OTVjYmEwNDE1Mjc1MzMgbGVnYWN5LXRydW5rCis3MjQ4IGQ1NWYzMTMzOGZkY2Y4NTNjYzgyNWU1MWQ4ZjllZjI2NzZhZWM0ODIgbGVnYWN5LXRydW5rCis3MjQ5IDllNDhhYmJlZTZjNWMwNTQxOTFmYjIwMzJmYTdkOTRhMmY3MWUzN2YgbGVnYWN5LXRydW5rCis3MjUwIDBkMGM0MTNiNmYyNTM5NzU2ODg2YzA1ZWU5ZmY1NmFlMTAyMWI4NjYgbGVnYWN5LXRydW5rCis3MjUxIDRkZThiODZiYTI1NTkxYTQwNTk4YWRkZmU1ZDQzNjEzODY3MDMzMzIgbGVnYWN5LXRydW5rCis3MjUyIDUwZDZkYzQ1OGFhMmZiYmZmNmYyODQyZGNjYzM3NzgyMWE0YjhmZmUgbGVnYWN5LXRydW5rCis3MjUzIDFjY2FhNDQxZDA4M2YwMDQyYzE4MWMwZmYzNTNhOWYzMDQyMjVjYWMgbGVnYWN5LXRydW5rCis3MjU0IGE1NzFjN2YwODk5MTZkY2JjNzVjYTNhNGQ2NTM5YTgxOWNkNDkwN2YgbGVnYWN5LXRydW5rCis3MjU1IGFiZWY1MDA2Zjg0YmRjNzA2YjczMzI2Y2MxMmQ1YmFmMzUzN2VmYzYgbGVnYWN5LXRydW5rCis3MjU2IDc1NjJhNmRmOTFmYjRiZWJjNjQ1YWRhNTcxZTc2N2RkZmNiMWIwNWUgbGVnYWN5LXRydW5rCis3MjU3IDI0MjZhMjIwNjY0YjE4YjNkZTQ2MTMxOGUxY2Q0MTAyMWM1YzhlNzggbGVnYWN5LXRydW5rCis3MjU4IGZlYmE2ZDU4ZDIwNDg5ZjAxNjM4YzFhNWNkZTg3NjhlZWQ5OTk4ZWMgbGVnYWN5LXRydW5rCis3MjU5IGU0MzM2MjkxMGE1ZTNlM2M3ZDU1OWFmYjE5NjIwOTZhMmViNzMwNDAgbGVnYWN5LXRydW5rCis3MjYwIDlmYzM4MGIxYTQ0NWFhMTRhMTJmNjVkYjU3NDI3NGMwNTg3YjljYTIgbGVnYWN5LXRydW5rCis3MjYxIDA5NDhmMzllZTk2MGU0N2ViOTcyZDNmZGQzM2VhODI5MWQwMGExZjYgbGVnYWN5LXRydW5rCis3MjYyIGQ3ZTY2NTNkMDg0ZjZmYmMwZTc1OTE0MmE3ZTIyNjM1MTAyYmIwNDkgbGVnYWN5LXRydW5rCis3MjYzIGYyMzIxZTQyMzA3MTdlNWM1OTc3ZTg5YTJiZGM3MDczY2I0NzQ5NzAgbGVnYWN5LXRydW5rCis3MjY0IGQ0NWJhNjRiODJmZDZiZWYyOTQzNDgyNGM4OWVlZjkxZDA4NTJkYzQgbGVnYWN5LXRydW5rCis3MjY1IGYzNzU4MjMxNDEyMzE4NWEwNWQ0ZTBhMmI0Zjk5ZGQzYTczZGI3ZjAgbGVnYWN5LXRydW5rCis3MjY2IGEyZmQ4MGVlZDI3ZmExNzJiNjFmZjg1ZjBmZjIxMjM3NTQ2M2E1NDYgbGVnYWN5LXRydW5rCis3MjY3IDBiNmIxYjg4Mjg2NmI2MGExOGFjYmNkZWU0NDUyOWI0YzU0MTI2OTYgbGVnYWN5LXRydW5rCis3MjY4IGFhYmY0YTAzYTRiMGJiZjFiYmFmNGVkYTgyNmNjMzE4MWU2YTAzMzggbGVnYWN5LXRydW5rCis3MjY5IDgwYzBjYTQyNDUxMGU3OWNjNDYyNmIyODgwNGVkZWM3NTYwYjQ1NzIgbGVnYWN5LXRydW5rCis3MjcwIGI2NTIwYzQ1ZWIwNTRlNzcwNTNjNDc1OWViOTQ1MWFhM2Q5ODE1MWYgbGVnYWN5LXRydW5rCis3MjcxIGJmNzJhOTRlZTk2YjliM2NjY2FkMDVjYWNjMzdlMGM1MmQ1ZjVkMWMgbGVnYWN5LXRydW5rCis3MjcyIDUyMjU4YjAyM2FhMzE3ODFiZmU5YmIyMzFjYjY4ZWFmMmFhMzkxNzIgbGVnYWN5LXRydW5rCis3MjczIDVkYjlhZDYwMzI2ZGM4YzFkOTg3NWMwYzVhMzliNTRmMmVlYWVjYzYgbGVnYWN5LXRydW5rCis3Mjc0IGU3MmIyZWQzODNhOThiNGZiYzBmYTBjNjIzNDVkZjBmNTg1YTYxZDggbGVnYWN5LXRydW5rCis3Mjc1IGUyYTdmZjZmNDE4ODcxOGYzMDNjZjZlZTdmNjU3YmY5MzQ2MjhlNWUgbGVnYWN5LXRydW5rCis3Mjc2IDJkNWVlMzc0YTczYjg1ZDczM2MyMDUzYjMxZjBjZjM4NTQ3OTY2YzAgbGVnYWN5LXRydW5rCis3Mjc3IDg2N2ZlZGEwMDg0MDdmMGQ3MTdhNDczYzVkOTdkMTVhMjk3ZjE1ZDcgbGVnYWN5LXRydW5rCis3Mjc4IDk5NjVkZjc4MmFmY2Y0MmJhN2ZjYmUyMDA3NWU1OTM3YmExMGRkYmEgbGVnYWN5LXRydW5rCis3Mjc5IGEyYzQyN2Y5ZGIwMmI5YmYxYjlhZDgwOTRjZmRjMmJlY2VlNjI2YTkgbGVnYWN5LXRydW5rCis3MjgwIGM3MWNhMTVjOGI1NTVjZDhmNGM0ZjFkYjU3OGQxNmM5MzA5NjBiMDYgbGVnYWN5LXRydW5rCis3MjgxIGEzYzQ3NzI1OTUwNTQ0MzA4YmRmODJjM2JjMzRhZDNhZjA3OTQyZjcgbGVnYWN5LXRydW5rCis3MjgyIDhkMmM4YjA4MDQwMTdkNDEzMTY1N2NmNGYwYmM4YjBkZjI4MGRmNGMgbGVnYWN5LXRydW5rCis3MjgzIDA5ZDZjNTcwODk5OWU2MzI3ODUxMmU0OGQyMDI0MGJlZTFiNzgwOTIgbGVnYWN5LXRydW5rCis3Mjg0IDZmOGI1YzNjZDZjYjJlNWYyYTZmZWZhYTE5Y2FjMmU5ODU4ZGY4YzQgbGVnYWN5LXRydW5rCis3Mjg1IDJjYjQ2OWE0MjFhOTc4MzdmZDI1ZmU4N2Y0NTQyMWUzNWIxODVkOWIgbGVnYWN5LXRydW5rCis3Mjg2IDlhZTNjY2NmYTdjZGUxMjliZGE1OTMwMzYzMzYyZGM3MTcyZDIzYjIgbGVnYWN5LXRydW5rCis3Mjg3IGRiMjMwZmVmYTcwMjM5OGI2MDY4YjEzODkyYmQ4ODk5OTZlNDFiNGEgbGVnYWN5LXRydW5rCis3Mjg4IGI2ZmFkZjAyMzFhZjliMjYzOWY5MjVlMDA0MmY1Y2YwMDA3NzgxNTQgbGVnYWN5LXRydW5rCis3Mjg5IDk4MjEzNjA0Zjk0MTRmZDQ1Y2ZhZTI4ZDg3OGJlNTJkNmZiMzcwYWIgbGVnYWN5LXRydW5rCis3MjkwIGZiMThjZThjMGNmNmFiYjA2M2U0YWY0M2YyNzA4NDI2NTlmYTUxYTMgbGVnYWN5LXRydW5rCis3MjkxIGM0NDU0MGQ1MmQxMzY5OTEwNzZhZWQwOGM4MDJlYWE2OTdmOWZlM2IgbGVnYWN5LXRydW5rCis3MjkyIDBmNzUxNWViZTNiZjRlYWQyZGYwOWIzOTg2YThiNGZlMWM5N2MwOGYgbGVnYWN5LXRydW5rCis3MjkzIDY3YTUyMjFhMmY2MGY5MzljYzNiNGZjZGFhYzM0MTZkZjkyNTU1MjQgbGVnYWN5LXRydW5rCis3Mjk0IDliZGEzOGM2N2Y0ZWMyNWMwZmY1ZjIxOGE3NzMzOGZiZDc4MTdlYjkgbGVnYWN5LXRydW5rCis3Mjk1IGU3MmFjMWRjNjE0ZjJhMDg2MDQyODQ0NjExNWQzOTJlNmY4N2VlYTMgbGVnYWN5LXRydW5rCis3Mjk2IDM5MWYwOGE5NzQ2Yjk2ZDJiZjQwNTVlZmM5NWUzYmVlNWEyZjlmYmYgbGVnYWN5LXRydW5rCis3Mjk3IDQ0ZTg2ZGFkZWM5NDRiYzE0OThiM2FhZjg5Y2M0NWM1MzhjY2MxYzkgbGVnYWN5LXRydW5rCis3Mjk4IGY0MmJjYTNkN2JlMjFkMzBjMTc3YmI5MTUzMzc1MWFlN2IxYjIxOTMgbGVnYWN5LXRydW5rCis3Mjk5IDg3ODNjZmRjN2M2Zjk5M2NiYTQ4MTE2YWY4NWMzMmQ4M2MwMzI0NmEgbGVnYWN5LXRydW5rCis3MzAwIGI4YTk3YWQ1ZjdjZWQzYTU0NTA3NDNiMTEwYzliNDhhZWJlMDg4MzMgbGVnYWN5LXRydW5rCis3MzAxIGYzYjkyYzk1ZTg1YjM2MjZhMGVlYjhjMzQ5ZmIwMjRhMDZmMzZkMWIgbGVnYWN5LXRydW5rCis3MzAyIGJlNDgxZjNhZGEwYmRhYTMwOGM4NTU4MjMwOWFjNTg0OWNmYWYzZmUgbGVnYWN5LXRydW5rCis3MzAzIDk3YWU4NDY2ZDFjNDIwNzRlMjE5ZDVlM2FkYzE4MmY5MGUyNzcxY2MgbGVnYWN5LXRydW5rCis3MzA0IDVhMmU3MjUyYzg5MDJkNGQ2ZDE4NjY0ZDY0MGFhNjFlYzZjMTg3ZDggbGVnYWN5LXRydW5rCis3MzA1IDQzNDFmZjVjNjk3Y2ZlZTJhNWQwM2FlMTcxZjEyYjg4ZTZmZjIzYmYgbGVnYWN5LXRydW5rCis3MzA2IGQ4N2U4Nzg1Mzk1OGYzZTllOTNlZjc2NzU4NDg4YjMyYjJiYWRmNTkgbGVnYWN5LXRydW5rCis3MzA3IDUwZjQ5ODNiNmI3OWQxOTIyMjE5Mzg5YWNiZGYyMWUwNjdkMzljNDAgbGVnYWN5LXRydW5rCis3MzA4IDMzOWQwYzQ5ZjBiNTczOGFmNDIyOTM2Njc2NGI5Y2JkMDg4NzI4ZTEgbGVnYWN5LXRydW5rCis3MzA5IGM3ZTk5YWI2MjdmM2I3NDAyOTY5YmI4MTRjMzMwMmI1MzM3MWYxMDcgbGVnYWN5LXRydW5rCis3MzEwIGUwNTQ4MGRiNzFhYjExMzhkZTM1YjM0Y2QyZjhlZDVkNTBiNGRmOWYgbGVnYWN5LXRydW5rCis3MzExIGFjYjA1MDFkOTNlZjlkMzBiZjA1M2ZkMWE4MmJlN2Y3OGY4ZjdhZWYgbGVnYWN5LXRydW5rCis3MzEyIDllMWFjOWViZTc5ZjUxZGNkMjQzYjUzM2ZjZDBjZWE2ZDkwYmY1YzYgbGVnYWN5LXRydW5rCis3MzEzIDVjMTk1MWQ1NzNiMWQ5YmYzMWZmMzc4NjAwMWJjZjdkZmE3ZTY0NzYgbGVnYWN5LXRydW5rCis3MzE0IDQ1NjdlMTU4ZDIwYzUxMjkyYjJjZjg3NjcxYWY1MzVkOTZiMDFmYjUgbGVnYWN5LXRydW5rCis3MzE1IDM1YzY0M2U5MDIzZTcyZGNkZGJlZjU2YTQ4M2FlMTQxNTM2NGE5NTEgbGVnYWN5LXRydW5rCis3MzE2IGE3YjljN2M4MTMzNzYzMjFhODI0MjExMjc3MTU5OTUwMjUzZDRjYTggbGVnYWN5LXRydW5rCis3MzE3IDg0Njc5ZjdiYmU2ZDU4NDhhNjA1YzE0MGJkOGEwMGQwYWI1YWE1Y2MgbGVnYWN5LXRydW5rCis3MzE4IDM4YWUyYTBmYzRmMzNjNmU2YWQwYzdmMDZmZmVlOGMwOWYyY2Y5ODkgbGVnYWN5LXRydW5rCis3MzE5IDU1NWY2ZTc2ZDIwN2RjY2QzZGJiY2E0OTVkZWVmZGMzN2FmZTY2MzAgbGVnYWN5LXRydW5rCis3MzIwIDBiZGQzMTUzOGQ4ZmQ2NjY3MGIxYjg3YzI3MDc3MGU3NzIxNmFmZGQgbGVnYWN5LXRydW5rCis3MzIxIDk3MjAyNmQ0NzI3NGFlYTVhZDZmM2FiZTc3ZDUzMjRjYjNkYzI0ZGUgbGVnYWN5LXRydW5rCis3MzIyIGQ1MzgxMmQ2ODQwOGM2MjRmYzg4MmI3Yzk2Y2I2OTMwMDU2NDVhZWUgbGVnYWN5LXRydW5rCis3MzIzIDUyNjk1ZWZkZjIyYzJhODVlOGI4OWE1ODA0ZWM5OGFjY2RiNzg1OGQgbGVnYWN5LXRydW5rCis3MzI0IDBhNDlkMTkyNTA2ZGNiYTYyZjc0MjEzYWE2OWU4ZTk1MWJiNjFkNjggbGVnYWN5LXRydW5rCis3MzI1IDBlMTg5N2ExZjBkNTJjYjA5ZjlhYmU1Mjk4NTMxNGQyOTIwZWQzNmMgbGVnYWN5LXRydW5rCis3MzI2IGY4MDgwMDFhM2UwMTM3YWNiZmYxMmQ4YjU0MTM5MTEyNDY1ZWMzOTcgbGVnYWN5LXRydW5rCis3MzI3IDI5Y2VkNDg1YWNhMDk4MzU2YTJiZDM3YWU4ZGE1MzQxMzg0MTRjODEgbGVnYWN5LXRydW5rCis3MzI4IGNmOTA3NDUzODFiZmZkMGE2NjMzNWVjNTA1NjEyYzVhYzZhYTA0OTcgbGVnYWN5LXRydW5rCis3MzI5IDE2N2FkMzk0NDg4Y2NhYjFhNTNlYjg5MjgyNDhkODRhYTAzZmNjYzAgbGVnYWN5LXRydW5rCis3MzMwIDQzYWIwZmVmZTRhMTU2YWY3ZjQ0ZTI4MTQ2MTZhZWRiNDc1YTM4ZmYgbGVnYWN5LXRydW5rCis3MzMxIDg4ZGJmYTJiYjlkY2VmZmMwZTM4YjQ5NTI0MTVmYTU2ZjA2NmM1YmUgbGVnYWN5LXRydW5rCis3MzMyIGUwYWFlZTdmZDFmZDQ1NGU2ZTQ2MGIyNmYyNWVlOWVhYzM4OWU2NzkgbGVnYWN5LXRydW5rCis3MzMzIDE5ODk4OWVlMzZkNTZhNWQzZTU1ZTU4MWI4YTMzN2QyN2JhMGJlYWQgbGVnYWN5LXRydW5rCis3MzM0IGFiNDYxYzc2MjU1OWE0MzFiYzQwODlmNDUxZGQ0YjUwN2RhNzRjNjUgbGVnYWN5LXRydW5rCis3MzM1IDVjNmZiZGM1MGUxZDY0Mzk4ZGY5MDY5OGY2MzE0MDM2YmQ3ODJkZWMgbGVnYWN5LXRydW5rCis3MzM2IDY5Y2E1ZTNjY2M2ZGE4MjUxNjJjNWFlOWMzNzA4NzJjN2U5NTJhM2EgbGVnYWN5LXRydW5rCis3MzM3IDdkNzMxOTgxMWZmMGFlMTM3MWUxYzBlN2M2OTI5NDlhZTBmYjkxNmUgbGVnYWN5LXRydW5rCis3MzM4IGIxNzA3YmNkYzI2NTI2Y2M3NTlkNWYwNjdiMDI3NmVhZjdhOGRhYjcgbGVnYWN5LXRydW5rCis3MzM5IGE1MzkwOGQwOWEwNGMwMTAzMDIxZTM5ODZlNzgwMTQ2YTUzZjM2MzggbGVnYWN5LXRydW5rCis3MzQwIGY1MDczZTI0MTQ3YzA3ODgxNWY1MDFmODhmZjQxZWI4NmRjYjJlM2YgbGVnYWN5LXRydW5rCis3MzQxIDM5NjAzNDBhMzI1MjA4YzRlNWQ3OTBmMTJmYzNkNDU1ZGFjODM0NjggbGVnYWN5LXRydW5rCis3MzQyIGUzZjJhYjBiMGFhMTZkMjAwMzIyZjY3MGIwZTc3Nzc0OTdkYThlMDYgbGVnYWN5LXRydW5rCis3MzQzIGJmNGRiMmE0YmI1NDA3OWVkMDdiMGFhNmYxNzhlYjg3NGU1MDFlNTcgbGVnYWN5LXRydW5rCis3MzQ0IDBlYTBmYWM2OGMxYzlkOGY3NmQ1ZjdkN2FlYzNmMmYyN2U2MzJjYTggbGVnYWN5LXRydW5rCis3MzQ1IDY4ZjQxMzQ4NjlkYjAzYjc3Y2FkMmZiY2NkMDYzYjAyNDg2ODllYjIgbGVnYWN5LXRydW5rCis3MzQ2IGE3MTU5YmEwZTQ1ZDFkNzQ5NDQ2NjFmOGEzYjg4OWZhYjJkMWJhNjMgbGVnYWN5LXRydW5rCis3MzQ3IGRhNTNlNDhlZmVhODYwYTJkYjMzZGUzYzViYWNlYzJhZTk2NDYyMmEgbGVnYWN5LXRydW5rCis3MzQ4IDMyZjZiMGQzYTY2ZmJmMDg4YmNjNmYzZGFlMjg0NmRjOGEzNDljN2YgbGVnYWN5LXRydW5rCis3MzQ5IDAzYmNkZDIyZjZhNGMyYTI3ZTdkN2M4NGQxMTAyMDYzZGRlYmU5ZDQgbGVnYWN5LXRydW5rCis3MzUwIDkxMTA0MGUxYmIxMTkxODRiYjU5MzQyNDc4ZjU0MDI4NGRkODdjZDAgbGVnYWN5LXRydW5rCis3MzUxIDBmMTBmYTc1MmNhOTI1NmYzYzdiY2Y4OTM3NzA0MDdlODExYTVkMDkgbGVnYWN5LXRydW5rCis3MzUyIGU1N2E4ZGU1YWViMzliMzAxZGNjZGQ2OThkMWJjNWY1NmI0YWQxYWIgbGVnYWN5LXRydW5rCis3MzUzIGE5ZTdlMGNjYWE0YWMwYzEwNWY2M2Q3MzI3ODZmZTE2ZmZjMTM0ODggbGVnYWN5LXRydW5rCis3MzU0IDQ1MTQwMjMxNjBiNDVkMWUyY2MwZDVmZDQwYTlmNDZiMmIzZWVlMDEgbGVnYWN5LXRydW5rCis3MzU1IDlhN2U5ZjEwYWVkNjIwOGViZmQ4Mzk4OTliZjI4OGQ3ZGY1ODY0ZTkgbGVnYWN5LXRydW5rCis3MzU2IDIyNDFkMzEyNjU4YWU3NzNkMjQ2NmI5OTI1MjFhNDYzMzgwNDM2NDIgbGVnYWN5LXRydW5rCis3MzU3IDhkMTdkNTUyZDBlYzA1ZGFjNmFkODFlZDYzMTQzMzJjZDE3M2ZiYTMgbGVnYWN5LXRydW5rCis3MzU4IGU3NDJiNTkzYzA5MjYzY2RlZGJiY2E1NWVjNzg2YmViNzg2YTU3ZjEgbGVnYWN5LXRydW5rCis3MzU5IDY1Y2IyNjFmNzczNmM5YTQzZGY4MWRmYzVmNzYyZjlkNTMzZTYxMWQgbGVnYWN5LXRydW5rCis3MzYwIDM4M2M2NDg2MzQ2ZjY2MzNhOGUyOWM4NTVjMWYzOTk0MGMzZjM3MjMgbGVnYWN5LXRydW5rCis3MzYxIDIxYzQxZDNjMjZiNjUxMWE3MjM5ZTZlOGU0NzU3MTY1NzA2OGI2ZjYgbGVnYWN5LXRydW5rCis3MzYyIDM0MmQyZWVkNTczYTU3OGIyZTY1NjlhM2VkZjFlMjU5ODZkY2ViODEgbGVnYWN5LXRydW5rCis3MzYzIGYxMjYxMTg2NzIyY2QyMDlkNGU1ZmIzYmZjYzgwNmM5MmQyYmNiYTggbGVnYWN5LXRydW5rCis3MzY0IDljNmI1YTY1Y2U2MzAwZDhkMGM2ZTliZjdhNjE5MDJiNzMxYmJjYTkgbGVnYWN5LXRydW5rCis3MzY1IDhhNjhmODFiYWFkNmIxNjkxMTMxNmFkZjM5MDYwNmI4NmViNDRmNmIgbGVnYWN5LXRydW5rCis3MzY2IGQzOTlhNDUzN2Y2ZGUwZjIwNGM5Y2E2ZWQzZGZkNGE3YzNlOGJlNjYgbGVnYWN5LXRydW5rCis3MzY3IDFjMDg5YzViNjZlOTkwOTU0ZWQ1N2M5ZDdiYzgzYTg0NDhjMGZkMmQgbGVnYWN5LXRydW5rCis3MzY4IGMyZWFjMTI2ZThmZmMwODc4YzY0OTlmOGY0MWVhM2JhNGY1NTI3M2EgbGVnYWN5LXRydW5rCis3MzY5IGYzMWY0N2ZmMWZkZDNmNDliMjcxYjhiZDU1NWJjMWEzMTQwNjNkNTEgbGVnYWN5LXRydW5rCis3MzcwIDU1NjgzMjBkYTliNTlhZWJmZWYyOTE3NWU1MWVhOTg3ZjMwZjhhMWUgbGVnYWN5LXRydW5rCis3MzcxIDUwYWJiMDg1MDc0MDQ2OWVkOGJmMmQxMDMzMjlmNGNhY2NkZTM5MzggbGVnYWN5LXRydW5rCis3MzcyIDkwYzIxZGRlNDI4NDNmYjA0YzU0ZDg4ZjMyOTVlOTc4NDRjNjY2NzggbGVnYWN5LXRydW5rCis3MzczIDRmODdmZDJkMDU2MmVhYjE4NGE1NzY4NDhlYmU0MGQ1MDJiMzE5NjIgbGVnYWN5LXRydW5rCis3Mzc0IDllZmY3ODgwZTY4NDQ4MDViOTNiNjA4OGMyNWMzY2UxYzBkMTIwN2QgbGVnYWN5LXRydW5rCis3Mzc1IDM3ZTk3YTMxMDI0MTFkMjBkMTcyNTY1YjljOWI5ZmVmYWQyMTM2ZjEgbGVnYWN5LXRydW5rCis3Mzc2IDc3MDEwNGM4Zjg0YTBhZmEzMDM0OTkyNGViM2E0NzQwZmU5YjM1YzcgbGVnYWN5LXRydW5rCis3Mzc3IGQ0NmU0NzhiNTc2N2MzODlmM2U3NzQzM2Q2NmZhYzEwOWI3Yjg3MzIgbGVnYWN5LXRydW5rCis3Mzc4IDZhNjI5ZDI3OGExOGI5MjJmMmIzOGM2YzMxNTU5OWEzZmE1OGZhYTYgbGVnYWN5LXRydW5rCis3Mzc5IDVkYzIwYTllMDUwNjdiYTE3MDM2N2U5ODAzZTM5Njc0YjFjMzFjZTQgbGVnYWN5LXRydW5rCis3MzgwIDMyMjIwYzU3MjhmNTE0ODZlMGQzMTk5NmQ2NzAzNDAyZTc0NDJlODMgbGVnYWN5LXRydW5rCis3MzgxIGZjZTc4MWIxMjdiOTJmMzlkM2Y3M2U1MWJhMzhiYTEzMGE1OTc0YTYgbGVnYWN5LXRydW5rCis3MzgyIGZkMzYyNjUxMWRhZGZjY2I0ZTUzZTY3NGEwZjM4YzUxMzJmNTE0MjYgbGVnYWN5LXRydW5rCis3MzgzIGNmYTEyODI5MDJkYWNkYTJlYWFhZThiM2NkYzA0YmZkOTc1ZDU2YjcgbGVnYWN5LXRydW5rCis3Mzg0IDA4MzRhYWRkYmYxZmU0NGUyMTNiYjQxNjI2ZWRhMWYyNmY5MWEyMmMgbGVnYWN5LXRydW5rCis3Mzg1IGZjYWY5ZDExOWFiZmRjMDkwZWY4MTA2NDhkODI5NjA5MzI5OTk4MWUgbGVnYWN5LXRydW5rCis3Mzg2IDIxODc4Yzg0OTYyNmFlMWI3NDJmOGFhZjFhYmEzMmZhMjc5YTM0OWEgbGVnYWN5LXRydW5rCis3Mzg3IDRiNTkwZjU4YzZhN2EzOTNmM2ExZDZlYTE5MjI2ZWI4YjVmOWE5M2QgbGVnYWN5LXRydW5rCis3Mzg4IDllMmMzYzZkNGZhMTVjOGZiODQzNjBiODUyZWYzZGI3YzIzODg4ZmIgbGVnYWN5LXRydW5rCis3Mzg5IDI1MGJkZGIyZWNjZjJkYmNkMDQ1MTk0NjgxNWQ4ZWU1NGQxNGY1YjUgbGVnYWN5LXRydW5rCis3MzkwIDE0ZWQ5MDlhOWM4MDlmN2VhYmFmYjc4Zjg3ZWM3ZWQyMDE1MmQwMmUgbGVnYWN5LXRydW5rCis3MzkxIDA3OWViNjk0NzFlNTgzMzljMWViYWNkMGJjN2EzOGZjNjM2OTQ0YzcgbGVnYWN5LXRydW5rCis3MzkyIDFiY2Q0OTcyZGE3ZTg2ZTQ0YmQ5YTJlNzAxYjA1YWZkM2RjZTlmNWUgbGVnYWN5LXRydW5rCis3MzkzIDJhNGQzZDk5YjhhNDVhOGMyYzZmOTliZjUyYzE1MmJiMDY2OWVhYjUgbGVnYWN5LXRydW5rCis3Mzk0IGY4ZTViYzUzNTFhOTczYWU4NDg1MzBkNWFjNThhNzAzOWE5ZWFlZTggbGVnYWN5LXRydW5rCis3Mzk1IGU3NzU4NWFmMmEyMTY1NTgyODY0ZWU4NjA3YmI3MjA5NDRhOTI5NzUgbGVnYWN5LXRydW5rCis3Mzk2IDU1OGFiYWM3NTk4ZDI5MGVlOWQyZGViYzAxMmU4ZGE4ZWRmODA3NmYgbGVnYWN5LXRydW5rCis3Mzk3IDJkZWMzNjM0NTY2NTgzMjJhYTM4ZjZlYzE4ZTY1ODZmNjQwNmM5NWMgbGVnYWN5LXRydW5rCis3Mzk4IGFlNTczOTIyZmRjZGFjY2I2MWJiZTJhMzM0MjY0OTNhOWFkNGIzNmEgbGVnYWN5LXRydW5rCis3Mzk5IGYwN2UxOGRiMzY2YzQ5MWM0ZWJkZTA2ZWQwMzE1ODMwYjQzZmI4YmMgbGVnYWN5LXRydW5rCis3NDAwIDUwN2M0NjAyMDUyNjRkNThlMzQwOGFiMTYyNTc4N2I5MjlhNjNkMDIgbGVnYWN5LXRydW5rCis3NDAxIDcwNjlhMmJmNWJhZjZhOWE1NmE5YTJlN2U5MmNhZTBmOTgwODAyNmMgbGVnYWN5LXRydW5rCis3NDAyIDA0MDQ5M2RlODQ4ZDhkZDcyNzVkNTg1ODAzOTc0MGIzYjE5ZWEzNDggbGVnYWN5LXRydW5rCis3NDAzIDliZTY1ZTZjMzVjODI2ZDRmNzA5YWQ3ZjY1MTliNDYzMTMzMzQwYzcgbGVnYWN5LXRydW5rCis3NDA0IDUxMjZkNGI4MTllOWUxOWM1YWIyNTQzNjc1YjAxZDk4OWQxYWNmODEgbGVnYWN5LXRydW5rCis3NDA1IDUzNjkzNWMyOTQwMTczZDFiYzQ0MmFlYWQ0YTEzYTUxYjFiMGIzNDkgbGVnYWN5LXRydW5rCis3NDA2IDE4MDIzZTdjMzg2MmZjYzhjOThkYmE2MzJlODVlYjU0MWRhNThiNmIgbGVnYWN5LXRydW5rCis3NDA3IGIzNzg3NTM4MjVhMDkxZmVjYjk0ZTRjODdiZmFkMDA0MTViNTM5M2UgbGVnYWN5LXRydW5rCis3NDA4IGI1NmJjMjVhZWM4NTJhZDI5ZmRiZjUxNzZjNzhjOTEyM2EwYzI4MTQgbGVnYWN5LXRydW5rCis3NDA5IDZiNjE5MTJkNWYzNTliMDg0MTc5ZDU5NDgzMTJhYTdhNWY4MWRjZjIgbGVnYWN5LXRydW5rCis3NDEwIDA5NWM5ZWUyM2I1NzZjMDEzOTE4NWI1ZTFmYzgxNTUzMzA2MDQ0ZTYgbGVnYWN5LXRydW5rCis3NDExIDdkMGJmYjQ2ODJmOWFmNTIwNTA1MTBlZDgwMGQxNzc1Y2I0NjI0YjggbGVnYWN5LXRydW5rCis3NDEyIDc4OWRlN2M2NjcxMjk2NjJmMGJhNDg1NWZiNGIwYjBlMDdjOGJlZDQgbGVnYWN5LXRydW5rCis3NDEzIDcwZGI0YmUxZGQ0YjI1YzEyNWViMmU5OGVhNTc4YjcyMDA0ZDJkYmIgbGVnYWN5LXRydW5rCis3NDE0IDIxN2NmYjYxOTliZTExOTYxMGMyMjRjY2IyYTgzYzhhZWNmMzYzMmUgbGVnYWN5LXRydW5rCis3NDE1IDVlZWQ1MTc1MDI4NDE2MzA0M2JlMjk3NzllYWNjYjU5MDFkZmZlNzkgbGVnYWN5LXRydW5rCis3NDE2IDMzZTMzYmE3ZjQyMWFlN2Y5NmFjMDEwMzQ4MTYxMDFlMGE4NTUyMjkgbGVnYWN5LXRydW5rCis3NDE3IGE1MjBjNjg0Y2U4ZGMwMGNiOTMxMWUzMDE3MzQ5MjFiZjkyMDg1NGYgbGVnYWN5LXRydW5rCis3NDE4IDU3YWVkMTZlMjE2NWM4YjJjZjg3NTE2ZWNjMWQ2YjVmMGY2YjEzMGMgbGVnYWN5LXRydW5rCis3NDE5IDUyOGMzMTljNmU3ZmYwZGYxYjkxNzNhYmM4ODg5YmJlNjAzZmRjODcgbGVnYWN5LXRydW5rCis3NDIwIDYxMThjYTUxNDA0ZDg2MDJmZjkwOGJmZTlkZDNkMmExNjJjODY3NzkgbGVnYWN5LXRydW5rCis3NDIxIGJhMTFiNThiMmIwYTM4YzBjN2U5ZDIwMjQ3ODQ5Mjk3NjY2N2RlZmEgbGVnYWN5LXRydW5rCis3NDIyIDc4ZDg4MDA0MzEyOWUwNzQ1ZjI1MmUzNDU1ZDlmYjBiOTNmMDM0OWIgbGVnYWN5LXRydW5rCis3NDIzIDU2OTM0MzRlYTUzOGM4OWZkNTM1Y2IxOGRlOTk2NTM4MmJlZjQzZDUgbGVnYWN5LXRydW5rCis3NDI0IGNhOWFhNDc0MTFkZTRiYTI5MDk4NzYxNjFhYjAxNzI4ZmQ4Njk3YzEgbGVnYWN5LXRydW5rCis3NDI1IDE5ZDgxOWIxNmI4MjUyYTAyMTI5M2IzYzRhMzMwMGVlNmFhNjE2N2YgbGVnYWN5LXRydW5rCis3NDI2IGRhMmFiYmY5Mzg3YzYxZWJjYTE1YzljOGRlNThiMDJiMzIxMjFjZGIgbGVnYWN5LXRydW5rCis3NDI3IDA1ZmQ0MzJkOWUyYjY4ZDhlOTJlMzQyMTM0N2YwNjgxMDU3M2JhMjcgbGVnYWN5LXRydW5rCis3NDI4IGRhNGE0OTdiZWEzYTk0ODM5Zjg4NWYzMzcwNGVlNzg0YmZhYzA3NzQgbGVnYWN5LXRydW5rCis3NDI5IGIxZWNkYjJkYTI0MDA1NTE5ZTE5Njk5YTRlMjM0NThhODZhMWMwOWYgbGVnYWN5LXRydW5rCis3NDMwIGU2Yjc5N2FhYTY5ZjdkMjA1YjUwZTg0OTE2Yzc5M2E1YTIzNmZiMWQgbGVnYWN5LXRydW5rCis3NDMxIDczMzI1MDE5YWQzOWZmNWJmMWRlNTFjMTNjZjNhMTE1NWIyMjY5NDUgbGVnYWN5LXRydW5rCis3NDMyIDlkNThkMGU5ODc3ZTZlN2FmMmEyYjk3YjA1ZWFmMjEzMjM3MmQyN2UgbGVnYWN5LXRydW5rCis3NDMzIGNlNDM4ZDM2ZDRmYmYxMWQ0ZDdmNDU3YWFkY2FkYWRjNDdhNDY1ZGYgbGVnYWN5LXRydW5rCis3NDM0IDg5ZDA3Nzk1ZmQ2OTRmZTQyNTI3ZjJmNmM0YWYwZDcyZjI0NDBmZTEgbGVnYWN5LXRydW5rCis3NDM1IDM4ZjllNDZkMjMxN2I1MTA3M2I2NWI3NmViYzhjNWE3MTNkZGJmODAgbGVnYWN5LXRydW5rCis3NDM2IDVlNjMzMjJmNGMwNjEzYjgyZDMxODQwOWY4NDc0YTU1NzQyYjJkMjggbGVnYWN5LXRydW5rCis3NDM3IDc2NWQ5NjJmNDQ0OTgyNTY2ZmFlMmM1YTllODE5MDdlZjAxMTljMjcgbGVnYWN5LXRydW5rCis3NDM4IDVkZWQyYmMxOTA4YjM2NTcxYjEyOGE0YTk5YTk0NmViMDhkY2E4MmYgbGVnYWN5LXRydW5rCis3NDM5IDZjZTYxZjIxMmMzZTdmMDAxZjEzZjU5N2FkYzY4MThjZDk5ODIwMWYgbGVnYWN5LXRydW5rCis3NDQwIGQ4NGNhMTk3ODY4YjM1NDcxYzNhNTdiYjEyZTYzMDg3NzgzYzIwMmYgbGVnYWN5LXRydW5rCis3NDQxIDliYmQ1N2QzNjA5ZmJiNDEzM2NhMGI0MjIwNTFlN2E4ZjMwNjNhZTEgbGVnYWN5LXRydW5rCis3NDQyIDM3MDVmNzVhODM1NWUyMzY1NDRkY2U3MGI2ZjM0YzQyNDYwZWQ5NjggbGVnYWN5LXRydW5rCis3NDQzIDNkMzJkYTM3ZDYyN2Q4YmEwMjIxNjBhYjRiMzg0MWM3MzFhMWU1YWQgbGVnYWN5LXRydW5rCis3NDQ0IDBmMWFlNjJkZDNiODdlMGExNzE4MGZkZDNiZTA0YzAwNDkxY2UzNTkgbGVnYWN5LXRydW5rCis3NDQ1IDgwNTQ4N2Q1MDYyMGI0ZjU0NmUxYjhkMTMwOTc1NzIyOWYwN2VlMTkgbGVnYWN5LXRydW5rCis3NDQ2IDhkOGM3NmExZDI1MDQwNjJlMWZmNzIxOTU0NmU4ZTkwN2Q4ODA1M2QgbGVnYWN5LXRydW5rCis3NDQ3IDZlY2U1Y2ZiNDlmZmRiM2ZkYjQzZDM3N2I3ZTRkZjliY2I5YzAzM2MgbGVnYWN5LXRydW5rCis3NDQ4IDdkNzNjZGMwMTE5ODJhNWU3MWNjZGJjMmUwZGRkZmMyMmFlNDc3ZDEgbGVnYWN5LXRydW5rCis3NDQ5IDM5NzQ1NTc0YmYwN2FmYzZmMThiMWU0ODhmOThlYzgyNDViODYwOWQgbGVnYWN5LXRydW5rCis3NDUwIGI0YTQwMGIzNTk1ZTI0Y2U5NDhjODQxYmFlMjhmZGYxNzY3ZmJhMDMgbGVnYWN5LXRydW5rCis3NDUxIDJlMjk0NWQ4MTYzYzY3MTcyODM4ODc1ZjE5MjM3ZDAxM2MzZDAwNjEgbGVnYWN5LXRydW5rCis3NDUyIDliMTY5NDM5MDgyMGRkMDQ0MmFkY2ZlNWRjYmRmYjA2OGM3MzhlNTkgbGVnYWN5LXRydW5rCis3NDUzIDQ3ZWUzYjRlMmQ4MDMzY2FjZDk5ZDYzNTI4YjRkNjQzYzI2YTYxMmQgbGVnYWN5LXRydW5rCis3NDU0IGI4NjRiNDE0YzQ1N2NkOWU0NDU2MDVlNWEwODI3NmY0MmY3ODliOWMgbGVnYWN5LXRydW5rCis3NDU1IGE4ZDdiZmVjN2M5MmI3YzE4YWM5ZWM4NmM4ZDI0ODBkOGE5YmNkYmQgbGVnYWN5LXRydW5rCis3NDU2IDk5NDM3NmFmOTA2NGQzMGYxZTgyZmE5OWIxMTQ0NTZjMDNlNTA5NzcgbGVnYWN5LXRydW5rCis3NDU3IGI1ZTdmYzhiZjkxOTYzNjhkYzMwZjI3ZjJjZTg0ODdiYTgyZWRkZDEgbGVnYWN5LXRydW5rCis3NDU4IDY2Y2JiMzdiNGMwYmQ2MDA1MzE5NDgxOTQwZjc2OWE2MzQwMzhjMWYgbGVnYWN5LXRydW5rCis3NDU5IDc3Zjk3MDA3NjgzMTQwMjc2MDNhMzJjZjA5MGRlZGMxNGVjZWJhNjIgbGVnYWN5LXRydW5rCis3NDYwIDQzMDliYzk3ZWNjNmE4NzY5ZThhNmRkYzBhYWM2MzlhMTc1MjlkZTYgbGVnYWN5LXRydW5rCis3NDYxIGQ4ZDU2M2JhZjg3NDc4NjdjMDcwNDljZWExZDA3M2IzZDQwYTVhNDEgbGVnYWN5LXRydW5rCis3NDYyIDFkZWQ5NDM4ZmE1MTVkNzczOGEwMDJjYzBhMDJmNzNkNzMwOTg5NzEgbGVnYWN5LXRydW5rCis3NDYzIGRmMzg1Y2MwZDJlMzg3MGVmZDg2MmQ3ZDdmNDlmNTczYTI3YjcyZjQgbGVnYWN5LXRydW5rCis3NDY0IDY1MTQ4ZGVkNTEwODRkYWZkNmNiZDQzYmI1MDM2MDAwNGVmNTE2ZTkgbGVnYWN5LXRydW5rCis3NDY1IDZlMTdlZjVhMjZjODk0NGE4NGIzZTM2YWMwNDg4OGZjYjhkMmJhNzggbGVnYWN5LXRydW5rCis3NDY2IDgyNzY5MTZlMWVhOGRjZGU1NTg3YzM4OGE1YzgzYzM1YmI3NmNmYmIgbGVnYWN5LXRydW5rCis3NDY3IDExYmFjYjhkNzMxYWQ2Y2FkZGNkMGQ4OWM1ZTAxZDBiNTllMzZkYTEgbGVnYWN5LXRydW5rCis3NDY4IGI4MmQ4NDdiM2RjYmNjZDYzZGUwNzVlMzg3OWE5MzY5ZGZiMzRlMGQgbGVnYWN5LXRydW5rCis3NDY5IDliYzY1MmU5ZjJiNDZkMjkyOGIwMzAwM2YwOGM3NWI4ODE0NzkwNTcgbGVnYWN5LXRydW5rCis3NDcwIDI2N2VkNDgwZWMxYjg0YzFkZTA3ZmE4NjdmMGRiMjZiNGM3MTUyZGEgbGVnYWN5LXRydW5rCis3NDcxIDhkZTFmNmIwN2RmOWNkN2RjMGZjMGI0NmU3MmQ3ZGMwZDA2YzNmMDYgbGVnYWN5LXRydW5rCis3NDcyIDU4YmJhZjI4NGFkNjZlZjBjZTdmNDgxOGQwNDA1YjMwYWI2Y2U4YTggbGVnYWN5LXRydW5rCis3NDczIGNjNGJhNzIxNGIxOGY5OTdlOTlkMDcwMzEwMGM4ZDE0YmM5ZTU4N2UgbGVnYWN5LXRydW5rCis3NDc0IDQ2ODEyNGExNTYwYTJkMmViYTNmNDRhNjA1MjE0ZWMzYWUzZGViNGMgbGVnYWN5LXRydW5rCis3NDc1IDdjN2ExODZiNmQ4NmIyYjIwMzA1MDczMTVkZmUwOTk0ZWU2NjViMTkgbGVnYWN5LXRydW5rCis3NDc2IDE3YzdhMTMzY2NmNzExMjVmZDI0NThkNGE0ZTU2NzU3MGM3MmI3ZWEgbGVnYWN5LXRydW5rCis3NDc3IGFlM2I0NmE3Mzc2NTdiM2Y0NDBhYjc1NmRjYzE2NWI3MGRiZWU4ZWUgbGVnYWN5LXRydW5rCis3NDc4IDY1YWFjZTIwMTJlNTJjM2YxOTQ5MWU4OWMxODQyMjkwZGRkMWIxZjEgbGVnYWN5LXRydW5rCis3NDc5IDRjOGU0ZTkzMTFlNGUwZTUyZTUwOTJlY2JhZDFiYTI2NGZhNDlmZjUgbGVnYWN5LXRydW5rCis3NDgwIGYxN2JhY2U0OGRkNjhhMmM4MGY0NGMwMTE1ZDNhYmE3ZDI4Y2EwOTcgbGVnYWN5LXRydW5rCis3NDgxIDVmNGIyM2UzZDk3Y2IzOGQwYTkzZGFlNDE4Yzg4Mjk1NDM1YzVlNmEgbGVnYWN5LXRydW5rCis3NDgyIGU0ZjdjMzMxYmIxYTJmZmYzZTM1OGZiZTk2ZmJiOTg0ZTdlM2ZkNGEgbGVnYWN5LXRydW5rCis3NDgzIGY1NWU4MmUxZTU2NThjMGZlNDYxZjQ4Mzc1NTBjODMyMTc0YjJiMGIgbGVnYWN5LXRydW5rCis3NDg0IDQwMmUzNmM4M2QyMDI5MDBhMDIzZTE2MDVlYmRhZGJkYTM2YjdlMjIgbGVnYWN5LXRydW5rCis3NDg1IGYwY2Y4ZDI3NWZiYzE3NTE0MjhkMGEzM2VmMWUzNjM3NDg5MWJhMDAgbGVnYWN5LXRydW5rCis3NDg2IDY4NDBmZjg5ZDI0YTFmMTlmYzMyOGU1MWEwMTY1N2NmZTJjZDk3NTUgbGVnYWN5LXRydW5rCis3NDg3IDc3ZjljMjVlMWYxZmNhY2M5M2YyZTYzYjBjYmJjMmI3MGE0NzY1ZmYgbGVnYWN5LXRydW5rCis3NDg4IDRjYTRlNTRjOWNkODM3NmRmMTQxN2VlMjljNjNiZmI3OWRhMjVjZjkgbGVnYWN5LXRydW5rCis3NDg5IDBiZmFjODlhZmM4M2ZkNmIwYTkyOWI4MmI3NzJiODE4NTIyZTI0NGMgbGVnYWN5LXRydW5rCis3NDkwIGIxZTJlZWE2NmNiNmNmZGMyYTVlNjQ2OWU1NTMxNDdjZDFlZTQ3ODQgbGVnYWN5LXRydW5rCis3NDkxIGYxYWYwOTdhNWU1ZDc5MGMyYTZiMDZjYWQwMDA2NGM0ZDI2MTNlMDIgbGVnYWN5LXRydW5rCis3NDkyIDEzZDM4ZWI3ZTIyNWQxODM1NGNhNGE2N2E4NGE4ODA4MjZhNTExNjggbGVnYWN5LXRydW5rCis3NDkzIDAwMWE1MDQyYjE4MWE3ZGFiNTRiNmNkMTBlZDEyNzJiYjYyZDZiNzAgbGVnYWN5LXRydW5rCis3NDk0IDI4OTM1NjA5ZGZhZWE2NGFhMDZiOTZjNWU2MDQ1Njc5MDJkNzQ0ZTAgbGVnYWN5LXRydW5rCis3NDk1IDBlY2E5ZDVmN2IyZDRiMWEwN2NiNjQzNDUyNWE4YjliYzczZGQ1ZjggbGVnYWN5LXRydW5rCis3NDk2IGMyMmFkZDM2NDM1MThmNmM0ODBhNmY0NjcxNmZkYTBkN2UyYjVjMDUgbGVnYWN5LXRydW5rCis3NDk3IDYyNjQ1Nzg3ZmJjOGQ5MmNjMjljMmE3NzE3OGM4OTdhYTMzMDVjMDkgbGVnYWN5LXRydW5rCis3NDk4IDc1YzFlZTg4MmE0YWQ0OGFkNmY0NWViOTY4MmY0N2QwMjFhMDYwZTYgbGVnYWN5LXRydW5rCis3NDk5IDdlNTE5MDk5OTYzMzJkYWIwNzYyOWU2MjgwZWViMDFlZDU3ZGM4MjggbGVnYWN5LXRydW5rCis3NTAwIGJmZjhmNWFmYzY3ZmVjNjQxZThmZTMwZjJmNWUxMTc3NWM4OGM5NWMgbGVnYWN5LXRydW5rCis3NTAxIGI1YTFiYjJkMTdmYWQ0MzYxMzM2Zjk1OTRhN2RjMTIwZWNkNTFlMmQgbGVnYWN5LXRydW5rCis3NTAyIDBlYTRlYTViMmViNzNmZWE4ZWVhMjhkMTA1YjZkODJjZDNlYjYzNjIgbGVnYWN5LXRydW5rCis3NTAzIDA2NzdjNzdhYTcwZGYxOWViNDk2YzMxY2MzZGVjY2I1NGQ1ODM3MGUgbGVnYWN5LXRydW5rCis3NTA0IDNmMDM3ZWU3NzMxYmUzMjM4NTZlYzQ2Nzk5MmVjMTVkODk3ZDFiYTcgbGVnYWN5LXRydW5rCis3NTA1IDAwYzNjYjEwN2U1ZjI3ODgwNmM0ZDJjMjY5ZWQ4ODdmMzEwOTMxYjkgbGVnYWN5LXRydW5rCis3NTA2IDAxN2Q3MjU0NGRmMmJlYzUzZmQ5OWMyNDBiYWZiNWViYWM2YmI0YWMgbGVnYWN5LXRydW5rCis3NTA3IGJlMzFlN2UxOTI0MWIxZDVlNWVjZmQxYTRmNjQxMTE3N2ExYmUyYWMgbGVnYWN5LXRydW5rCis3NTA4IDViN2I3MDNkYWJmYTA3ODNiOTFmMDE0ZWIwMzFjMTkyY2NkYjk2MDMgbGVnYWN5LXRydW5rCis3NTA5IGRlMmE3NWM3ZWE5ZmY0Njc3NzdiNjBmOWQ5NzhiNjEyNDA3ZWYxNTMgbGVnYWN5LXRydW5rCis3NTEwIGEwZTYyZDg1ZGU3N2ExNTBlMjc5N2IxZGQ4ZDgyNjk2ODYzZmYyNDIgbGVnYWN5LXRydW5rCis3NTExIDY5NzY1ZDY0MzFlMWM0YTkzOGFiYzEzOTE4MzE0Y2VkMzIzYTYxZmUgbGVnYWN5LXRydW5rCis3NTEyIDlhZDdiOGMzNmM3OTQwNTIzMWQwYWJiZjcxY2RmMTgyMjFiNzc2NTIgbGVnYWN5LXRydW5rCis3NTEzIGE4MjBkZWFkMDZlNjc2MmZjNzhiNmIxMmI2MDdhNjM4MWExZWUxYjQgbGVnYWN5LXRydW5rCis3NTE0IDM4MDMyMjY3OTY4YzAxNzJiYTZmOTRhZmEwOWU2YzRhNzQyMmMwMGQgbGVnYWN5LXRydW5rCis3NTE1IDg3NmU1NzM2NGM2MjM5OTVjZmE1ZjQ1NTUyMDYwZTQ5MmNmNDQ3NmIgbGVnYWN5LXRydW5rCis3NTE2IGM0OTc5MjliMjM3MTE1YTJjMWQ3M2UwNjI1YTM2N2UzMzdjMTRmYzYgbGVnYWN5LXRydW5rCis3NTE3IDliN2UwY2Y1MTk5MDVhYzQ5MTk5ODExZjEyZmU3MmVkZTFkNGMwZGIgbGVnYWN5LXRydW5rCis3NTE4IDEwNGE2NDZmYzdhNjdmMjdkZjI1ZDRlOTQxYjIwMDM1ZTU4NzZmOWYgbGVnYWN5LXRydW5rCis3NTE5IGVlM2FjOWUwYTAzMjI5ODYyZDE5MDU2YTY3NDNiMTkzNGEyNTBiNjkgbGVnYWN5LXRydW5rCis3NTIwIGIxZDgyNjk3YzBiMjM2Njc0ZDBlNjFjMGVmY2IwYTkxMWU5YzcyZGQgbGVnYWN5LXRydW5rCis3NTIxIDY1ODgxNTIzMDU0NmE0ODkyYzJhZTUxOTQ2OGVkYjQ4MjcwODc4ZmUgbGVnYWN5LXRydW5rCis3NTIyIDdhOWNhYzdjYjkxMDlmNDczYWNkZGQxYTlkMjNlMjY4YWQ5NWUwY2MgbGVnYWN5LXRydW5rCis3NTIzIGZkZTczNDY3YjU4NDdiZjVkNTIyNGU2ZDg1NDIzMjNkOWE2OGQ3NjUgbGVnYWN5LXRydW5rCis3NTI0IDk0NmIyYjJhNzYyMmZhMTdhZDQyNDgyODM3NmE1ZTg4YTdhMDEzYWYgbGVnYWN5LXRydW5rCis3NTI1IDg1NzllMzQ0MWQ5YmM5OTk1ZDk4ZThiZjI0ODUzZmVlNTViNzU0NTIgbGVnYWN5LXRydW5rCis3NTI2IDdmNmQxOWZjNWFjYWNmYzg1NGE3M2JjY2RmMmEyODlkYTZjMTM4N2QgbGVnYWN5LXRydW5rCis3NTI3IDc4NDFjNDhjZGI1YjQ5NjdkZGE2M2MwMGFmYWFkZjg1M2MzYTM1NmUgbGVnYWN5LXRydW5rCis3NTI4IDIxOWJkZDhhZmIzOGVmMDVhYzQxN2U3MjhiNTkyMjhjNzQ0NTg5NWEgbGVnYWN5LXRydW5rCis3NTI5IGU5YzQ0MmQwOTM2ZmI1YzNiOTIyYzdhNTk0NGM1ZTlmZjZkOTI2OWEgbGVnYWN5LXRydW5rCis3NTMwIGY1N2UxODFmZjYzOGZkYjFjOWEzNjk2N2EzMGI0YzhkY2IxOTdkNDggbGVnYWN5LXRydW5rCis3NTMxIGU2MjljODhmM2RkODA3NzNiZmVjMTMyZDMxNzYyNTBmYjhhMTY4YTIgbGVnYWN5LXRydW5rCis3NTMyIDZjN2E3NmZkNWRjMWU5MzIwZTIxNzZmZDA3MTc5NWE0MTliMGE5MzkgbGVnYWN5LXRydW5rCis3NTMzIDM3MTQ2NGY2NjY2YjY2ZDdmMWRkNWY0NmRmYTE2MTkxM2U0NzM5OGUgbGVnYWN5LXRydW5rCis3NTM0IDE5MmQ1NzFjYzQ2MTVjZTY4NGFmNDE4MjNhZmMxODA3YzE1NzlhODkgbGVnYWN5LXRydW5rCis3NTM1IDVhMjMyODcwY2NlYWI1ZjNjNGY1YzliMWU3OGNlMTVlMWZiMmFkODEgbGVnYWN5LXRydW5rCis3NTM2IDM0NmZmOWJhOWQzNjM3MDRjYWMwY2NhMGMzYzEwM2I4NjcxNDE1Y2MgbGVnYWN5LXRydW5rCis3NTM3IGQ2ODE2MzFkOTkyZjIwMWI0NDE1MThhZjIyYzAwNTQ1NGQ2YjYwZTUgbGVnYWN5LXRydW5rCis3NTM4IGYwNzMxZmE0NDQ3ZjUyNjJmNTUxNzgzYzZhOGNkY2FkMDQ4OWIwM2UgbGVnYWN5LXRydW5rCis3NTM5IDdkZGVkNzg1MWZjYThjNGI0NjY3Nzg0YWE5NzI5NGEyOTc1YTBhNmEgbGVnYWN5LXRydW5rCis3NTQwIGI2ZmNlNzI0M2JhMGJhODk2ZjA3ODIyNzI4YzU1MDIwNmQ3MmU5ZGIgbGVnYWN5LXRydW5rCis3NTQxIDc3NjE2YjMwMDFlZjhmN2UwOWM0NjM5YzM2YzI4NGRkOTcxZGVlM2EgbGVnYWN5LXRydW5rCis3NTQyIDRhYWNhNDJhMmExNmM5NTE3NGIyZmZmN2E1YzNkNmNhZWY4NWI4NzkgbGVnYWN5LXRydW5rCis3NTQzIDhlY2YyZDdjOWZiMWFkYjQzODVjZjdkMGZkYWY0NDMxMmJkMTI0MWIgbGVnYWN5LXRydW5rCis3NTQ0IGZhMzE0NzZhMjc4NmVlOGY1NGQwZTVjMDllNWVkMDE3ZmViMTE2ZTcgbGVnYWN5LXRydW5rCis3NTQ1IGViMTJmNDA0NmQwYmUwZjBkZjY0ZjZmODBjNmJlNTEwMjE2MjkzMTAgbGVnYWN5LXRydW5rCis3NTQ2IDQ0YmRmMGI1NmMwYmQ4MzQxNDM0Y2NmOGI5YTIzNzA4YTIyYTBlMWUgbGVnYWN5LXRydW5rCis3NTQ3IGQyNDgzYzI3NzQyYzE1NGNjNDYyMGRmNTNlNjg5OWU5YTE3ZTc2NzIgbGVnYWN5LXRydW5rCis3NTQ4IGUyMWYxZDI1OTVkZThiOTliODBhZGRhNjg3MmVkZmRmY2UwODQ0Y2EgbGVnYWN5LXRydW5rCis3NTQ5IDMyNzNhY2JlNDc2ZmRhYTVmYWI4OWY2YTIyM2E5MmQxMzE5ZmNjZmUgbGVnYWN5LXRydW5rCis3NTUwIDViOWQ0MWY0YzA4YzExNWY4MzgzNWJhMThhMTc5ODVkNzg5YTdjYzQgbGVnYWN5LXRydW5rCis3NTUxIDRlZGFiNDc0OTc0Y2UwNzc2NzA2NDcyYTIzZTc5YzNlOTRmNGU0M2EgbGVnYWN5LXRydW5rCis3NTUyIDIzYzRjNzgzOGFjMmFiM2E2Njc1YzFjYWNiNzFjMDBmMTI3MDFhMzAgbGVnYWN5LXRydW5rCis3NTUzIDdmNGIzMmU4NjU0NTU3MjUyYjY3YWZlMmRjOWViZjMxZTE0NDM4YjcgbGVnYWN5LXRydW5rCis3NTU0IGQ2YjI5MmEzM2NmZWY1M2M3NWVhNDlmYzI3Y2JiZDhjOTk1M2MwNDUgbGVnYWN5LXRydW5rCis3NTU1IDlhOGFkYWY1OGNlODYwNzZiNjg5MzU1Y2QwZGI1MGI3MmQ2ZDE5NjcgbGVnYWN5LXRydW5rCis3NTU2IDFiNjE5YjgxMWMxMDM1YTgxNTIzYjYwYjM0OGQ3MDc1ODdhNDc3ZmEgbGVnYWN5LXRydW5rCis3NTU3IDJjODgxMmVlYTYzNzk0MTU1NGE0YjY1NmQ0YTllMTVhY2MwMjIwMGIgbGVnYWN5LXRydW5rCis3NTU4IDdhYjFhYTA4ZDM0OGRiMGNmYTdhMzUyZGQ5ZWE0MzU5YjM4ZDFmMTEgbGVnYWN5LXRydW5rCis3NTU5IGFmYzNlNGUwODc0MGI2MzhhY2M1NDAzM2ExNmEzM2JjMTU2YWZhMDQgbGVnYWN5LXRydW5rCis3NTYwIGQzNzA2NTc5NDY4ZTUwZDZhMWExMTEyNTcxODFmNjE0NTEyMzQ3YzIgbGVnYWN5LXRydW5rCis3NTYxIGFhNzNkYTY2MWNkZmZhZTA5YWY5MzNlMmVjMjE0NzM0MTkyYzkwNDIgbGVnYWN5LXRydW5rCis3NTYyIDZlZDhlYjRiNjY0YjMxYmUxODg4M2NlMzVlMTMyZTMxNmNlZDczZmEgbGVnYWN5LXRydW5rCis3NTYzIGU0MjhkMmNmZWQ0MGIzYTljZjY5OWE2MWQwMDk4OTgwZWVhNjRkNmMgbGVnYWN5LXRydW5rCis3NTY0IDkxZjg2MzA2YjA3Yjg1ZmFiZGY4ZjU0NmFiOGE4MjVhOWVhMGU4MzcgbGVnYWN5LXRydW5rCis3NTY1IGI2N2MwMmJkNWUyMzYwZTQ4ODk5MzY3NDhkZTYxN2IzMTNiNzAyMDEgbGVnYWN5LXRydW5rCis3NTY2IDNmZWVjODViYmE5YjYzOTlmNDQ1ZWQ1MjNiM2I1N2M0MDRlMWQyYjggbGVnYWN5LXRydW5rCis3NTY3IGNiN2FhZGQ5ZDlmMjkyNDg0YWVlNGUwNjRlZGYwYWUxNzlkYWRkODEgbGVnYWN5LXRydW5rCis3NTY4IGQ5OTZkYzQyZmU2NDE1YWQ4MjA5NjcyYThjNjczNDZmYzQ4NGI3NDYgbGVnYWN5LXRydW5rCis3NTY5IDM4YWRiYjM5ZjE1Y2Y1Nzc5NTkwODQ5OGYwMmFjNDQ1N2VhZDBjNzggbGVnYWN5LXRydW5rCis3NTcwIDExOTIyYTJlY2FjZGU0ZDgxOGM0NjIxYTZlMjY4MzFlMzhhZjM4YjggbGVnYWN5LXRydW5rCis3NTcxIDMwYzEwYjIyMjk1MzE4ZWE5ZTY4N2JhYjViZWI0N2Y2MmNlNDE4MDAgbGVnYWN5LXRydW5rCis3NTcyIDU3YjdhMDNhMzI1MmMwZTUzYmE3ZGYyOGI5ZjI0MjZmYjkyMDZmZmIgbGVnYWN5LXRydW5rCis3NTczIGE0NDU4NmJkOWZhYjNmNzA5NWE0ODM3MGQ5MTZlN2VmYmNiYzJhYjEgbGVnYWN5LXRydW5rCis3NTc0IGI0MjMxZDU5MjI4MWYyNWIwYTU5MWI2MzMwYjg5OTM3OTQxN2VmNDYgbGVnYWN5LXRydW5rCis3NTc1IDMyMzEwMjUxZDc2NzQwODY0OThlMGI2NWNmOGRjMDNkYTI5OTYxYTAgbGVnYWN5LXRydW5rCis3NTc2IDI0OTdjOGIwNDEwMTdjOTY2ODZhZDEzMjBiZGIxZTc5NDJmOWEwNTAgbGVnYWN5LXRydW5rCis3NTc3IGVlNzBiNGM3MTg5OTNiNjBmZGFiNDNkMTllMzgxNWY3NWE1OGM5MGEgbGVnYWN5LXRydW5rCis3NTc4IDQ5MmMwY2FlMWYwNTIyOWIxMTZiYTdiZDEwYzkyYzZlYjI0Zjk4ZDAgbGVnYWN5LXRydW5rCis3NTc5IDQxMDlhMTcxYzkwMWE0MWY4YjM5MWRlZjNiMDFlNDI5MTk4OTFmMWEgbGVnYWN5LXRydW5rCis3NTgwIDAwZmQ2ODU3Zjc2YjkzOWM1YjllYTAwMGQxY2Y4M2Q2YTNlNjFmNTAgbGVnYWN5LXRydW5rCis3NTgxIDk0MDgxMzExNWY3NzViODYyODhjZmNkYjA4MDczMDZkMWUzYTgxOGMgbGVnYWN5LXRydW5rCis3NTgyIGY5YjQ2YjUwMzc1MTlmNDQzMzM3NDJhMTdiZTc0ZmUzODYyNGExMzEgbGVnYWN5LXRydW5rCis3NTgzIGE5YTZkNDE2Yjk0NWI3OTg5MjE3YmM4NDkwZDU4MGRkYjQzNDk4MjMgbGVnYWN5LXRydW5rCis3NTg0IDBiYmY5Nzg2MWNkOWExNjA0MDY1MDAxZTFkMjJiNjJlNjE0MmI4NjYgbGVnYWN5LXRydW5rCis3NTg1IDA3M2YxYjNhZDlkMmJhZjQwYjRjYmYwMmI2ZDAyNTgxMjgyYWRjOTcgbGVnYWN5LXRydW5rCis3NTg2IDIxYjg3MTMyNWM4NTM0ZDFiMjg3YmE5MDc3ZmM3NjY0ZWM5ZmRlYzEgbGVnYWN5LXRydW5rCis3NTg3IGNhNjM4OGJjYzA1YTVkOTI4YTYyNjM3NzIwNDNjZWFlMGRkYWRlZGUgbGVnYWN5LXRydW5rCis3NTg4IGZiOGNlZmNlZmQ4MWVhMzY5MGEwMTM2MzllZDExODlmOTQwNmRkMTIgbGVnYWN5LXRydW5rCis3NTg5IGI5Y2UzY2M1MDA3NjcxYTg3NDFjZTY1YTM0NjI1MjI5MWQxMzMxNjMgbGVnYWN5LXRydW5rCis3NTkwIGUzYWI0ODk4OGM3Nzk4NTNjMTFiNWRiZWJhOWE4ODdlZGM3MTZlZTQgbGVnYWN5LXRydW5rCis3NTkxIDUwNjY2NDc2NzczNmVmYjQwMjBlN2NlY2RmNmIyYzk3NmYyZDE4YTkgbGVnYWN5LXRydW5rCis3NTkyIDJiYjBiZGExNTg1YzdmYTU0OTczNWEwOWU1MDJkMDhkZTVhZWRlMzIgbGVnYWN5LXRydW5rCis3NTkzIDAwMjg2NWFmNTVlNWI1OGM4YzMxMWY5MDZhNmZlNDAzNTEwNDViNTMgbGVnYWN5LXRydW5rCis3NTk0IGJkYTAxYTM3NDc2MjI1YmFmODAxY2YwODExNDc1M2Q1ODBhODE0ZWYgbGVnYWN5LXRydW5rCis3NTk1IGE0OGYzNjc4ZjllMWE4ZGU5Mzk0ZmRiMzBmNDI2ZGEyNzg0MDE2ZWUgbGVnYWN5LXRydW5rCis3NTk2IDJlNmViMWM3MTVjZTVhYzFlNzk0MzUwZjMzYmY3YTEyNWFhYmU3MjUgbGVnYWN5LXRydW5rCis3NTk3IDU3YjBmMTYxOWUyODI0MDQyYTdjMWE1ZjM2NzY4Mjk4ZTRiMjhmOGMgbGVnYWN5LXRydW5rCis3NTk4IDA1ZmZmZDU1YjAxNGMwMTUwYjAyYzllMTA1YTExODIyMmIzMjZlYWIgbGVnYWN5LXRydW5rCis3NTk5IDE3MTU5MWIzOWY2MzJlZDBiNDViYmFjMTZkY2M4OWUxMDc3MDcyN2IgbGVnYWN5LXRydW5rCis3NjAwIDU0YTlhZGNhMjE1YzZlMGIxYTc0NWJiY2E3NWQ3NWJkM2IxMDJjYWMgbGVnYWN5LXRydW5rCis3NjAxIDdiOTQwZjI5NjIxYjg1ZmI5YmRlNWE3YTU1MDNhZDNkNmJiY2ZlMjUgbGVnYWN5LXRydW5rCis3NjAyIGYyMjIxMzE5MjUzMTYxMGM3YTQ2YjQ3NjNlYWM3ODdkNDg0ZDkwNjkgbGVnYWN5LXRydW5rCis3NjAzIGJmMWJkNjRmODVlMDFmMjllYWE0ZWMyN2I1NDdmYWZhYjU3Y2M0YzIgbGVnYWN5LXRydW5rCis3NjA0IDEwMmUyOTEyZDBkMTc3NmE3NjJmMmZkM2Q4ZGQyOGFjNDlmOGIyMDMgbGVnYWN5LXRydW5rCis3NjA1IDBiZjczOTRkYmEyMjA1YjAxNTQyMzIxN2M2NWMwNTczYzk3ZGVmMjIgbGVnYWN5LXRydW5rCis3NjA2IGVjNDUyNzZhNmRhZGI5YmUxM2RiY2E1YTUyMGMzMDY0ZGQ5Y2I4YWEgbGVnYWN5LXRydW5rCis3NjA3IDBmYzFkYWNkYWZkNzM4YmRlMzc1MjJmODlhZDhlZWZlOWJiOTA2NDYgbGVnYWN5LXRydW5rCis3NjA4IDY2NjE1MmI3NzAyNzEwOWYzM2M3MDI4ZDM4NWM3ZmE0OWI4YzBmNGMgbGVnYWN5LXRydW5rCis3NjA5IGRlZjAzZDNiOGRkYmY4YmQyMWY5MmIxZDhlYjgyMzljNzM3MDhmOTggbGVnYWN5LXRydW5rCis3NjEwIDdmYTlhNjQ0NDgzZTgyZTliMzFkZWI1N2FmYjY4OWM5MWIzOTc5MjYgbGVnYWN5LXRydW5rCis3NjExIGE1MTNkODNjMDZjYjAwMWYwZDNhZmY0ZmQ1ZDk2N2FjOWY4MDVmZDYgbGVnYWN5LXRydW5rCis3NjEyIDQwZWI4YjBlZTE5MjYxYjVjMmM5MjI0YzU1MGMxYjIxMjEyN2UxZTMgbGVnYWN5LXRydW5rCis3NjEzIGY5M2VjMWFjMTdhYTcxOTBmNjA4MGI1MDQwOThmMDBmYTgxZmEyNGMgbGVnYWN5LXRydW5rCis3NjE0IDkyMTZmNWMyNWU0ZWY3OGU2NzcwYmJlY2Y4NjFjY2NlNjI1OGQ2OTUgbGVnYWN5LXRydW5rCis3NjE1IDhmYmVkNzhlODFlNzEyMTI4ODdiOWFiNzc5Y2JjMGFmNDFkZDVmOTUgbGVnYWN5LXRydW5rCis3NjE2IGE0YzhiODg3MTM3NjFmZDY2NGIwY2FlNjdmODY1YmVkOTJlMzc5NGQgbGVnYWN5LXRydW5rCis3NjE3IDhhOWYxNTc5MzIzODJlZmZmMmVmNzMzOTQ1MzdiNmY0NGQyMDg4MjIgbGVnYWN5LXRydW5rCis3NjE4IDY5NTJlYjljM2E2ZjdmMTU5OTQ2MmJlY2E3MzVkNWQwMWQ1YzMwM2UgbGVnYWN5LXRydW5rCis3NjE5IDZiMzM3ZWM5MmJkMGQwYTU2MTQyZTgwMDk3OWRkYjBmYzNiYzZlNzIgbGVnYWN5LXRydW5rCis3NjIwIDFlOTVmYWM4NGFiMzJmNjQ2NGJiYzMyY2I1ZWQ1MWVjMmNmYzY3M2MgbGVnYWN5LXRydW5rCis3NjIxIDljZWZkMDRlZTUzYTUyYjhmNjE3YWQ3NjM5YjVjMzA3N2NjN2I1NDUgbGVnYWN5LXRydW5rCis3NjIyIGIyMjdiOWFmNWY1M2RiYTA0MmZkNDM1Zjc0NzA5OGQxZDJmODc1ZTEgbGVnYWN5LXRydW5rCis3NjIzIDg5ZWRhYThlZDUwZmU3YzdjMGUwYTBmNGJjZmRiM2EyNTY1MTk4Y2MgbGVnYWN5LXRydW5rCis3NjI0IDc4MDYzYmFlM2ZkNzRiYjRmNjNhY2E1ZWQyYzZhZmU3OGRhOGE1OGQgbGVnYWN5LXRydW5rCis3NjI1IDQ2NjVlMjg0OWE0YWM3YmVjZGM5OTRjZTNjZWM4M2MyNGVmZmQyZjkgbGVnYWN5LXRydW5rCis3NjI2IDI4MjY5MjVhODQyZTI5ODZjOGIxNzA2YjNkZmJiNjNiZWE5ZjM4MDcgbGVnYWN5LXRydW5rCis3NjI3IGJkNzA4ZmUxOTM0YjNiOGNiNmE4OWE5MDBjMjU1ZjBmMmNkZDRkMDUgbGVnYWN5LXRydW5rCis3NjI4IDFhZTdlMmViYzJmMzMxYjI4OWY5N2VkOThkYTI4NGIyNjM1NzYyYzQgbGVnYWN5LXRydW5rCis3NjI5IGY2MjE5ZDc3NTQ4MWJhMTc1MDE2ZTdmM2QxZDM1M2I0YTZkYzUwNmEgbGVnYWN5LXRydW5rCis3NjMwIGI1NjZlNzcyODFjYzE0ZDU5MDFkZThmNTZiZDBiNThiMzRlNjRhNTkgbGVnYWN5LXRydW5rCis3NjMxIDQxNzQ2MmFiOGIwMDI3ZmIwZDQ0ZDEyM2M0NTI5NDc3NDRmYzRjNzcgbGVnYWN5LXRydW5rCis3NjMyIDgyOWM0Mjg5MzE4MTA0ZjBiODAyNGMwZWFiYjhhMWM4YzhhNzRkMDQgbGVnYWN5LXRydW5rCis3NjMzIDM1MWU5NWM1MWRkYjFhY2RmNTExNWI5ZGI3M2QwZDYwMTA5ZTFlOGMgbGVnYWN5LXRydW5rCis3NjM0IGVmODM1MWVhNzJjMWM2MzIzZjIzMWMwZDA4NDU2ZTVkZDQyOGI2MDYgbGVnYWN5LXRydW5rCis3NjM1IGRjMzNlMTFhMWMyOGRmNWQ2YTMzZTI4Mjk4NjAzNmUwNmZkMjgwNGUgbGVnYWN5LXRydW5rCis3NjM2IDViYjcwZDJlOWFkYWRkMThlYmExYWFhYWU5ZmJmZjQ1NzNmZDFhNjkgbGVnYWN5LXRydW5rCis3NjM3IDcxMjRlNGVlNDk5NTU3NjQ1YjA3MWI2Njc2MGNkODUwMzk2MWJkZDAgbGVnYWN5LXRydW5rCis3NjM4IDkwNjNmNjBlYTI4ZDQxOTJmOTlkNzE2M2RhNWMwODBkYjcxOWVhZmQgbGVnYWN5LXRydW5rCis3NjM5IDhjMjc3ZjI5YjUzNWUwYjIxMjUyOWZkNzEwOWI5ZTRiYjEzYmM3NDQgbGVnYWN5LXRydW5rCis3NjQwIDRkMTViZGYxZGI5YzAwNzI3MzVlNTY4ZGQ4MGVhMTczNjMwYTI3NzYgbGVnYWN5LXRydW5rCis3NjQxIDcxNTFiYjcyNzc3NjdlZDFlODdkODRiNTRiYjhjODdiNjZlMTc5NzUgbGVnYWN5LXRydW5rCis3NjQyIDYxZjg5YmViYTFhYTNjNGJmMGZkYmYxMjI5MTQ3NzllZTg4MDgwNDggbGVnYWN5LXRydW5rCis3NjQzIGRmZjNlNTA2YzllOGQ0MWY2ZmUxZGVjZjQ0NTRkOWI3MmUxOGU5OTIgbGVnYWN5LXRydW5rCis3NjQ0IDJlYTljNDI1YTc2NzdmMjI5NmFjOWY0NjYyODM5YTI2ZTMzZDAxMDQgbGVnYWN5LXRydW5rCis3NjQ1IGY1ZDcwN2NlNDIyM2MxNzNlZGY4ZTc4ZDMzNjFmNzg0ZmI5NWFkNTQgbGVnYWN5LXRydW5rCis3NjQ2IGIxZmM0ZWIyYWM1YTk0OGZiMTlhODg5ZmMwZDZlODQ2NjllOWVhMGIgbGVnYWN5LXRydW5rCis3NjQ3IDMxYjBlNWYwYmFkZjE5NjYyODcyNGQ2YTBmYjBkMWYwODUzYmUxYzUgbGVnYWN5LXRydW5rCis3NjQ4IGZmNGY4ZmE4YTI3M2EwMjkwZjJmOGIxZjk0YzA5YjQ2NDA4NTFlMjEgbGVnYWN5LXRydW5rCis3NjQ5IGM0ZTVlZjliYzM2MTI0NjE4NTYzMGQyMjE2ZWQyNWRmMjZiY2MxZjYgbGVnYWN5LXRydW5rCis3NjUwIDE5N2UzMjA2ZTNmMzA3NDdlNWFjNjVkMDAyZDg5YjI0NWFkMWY4ZTYgbGVnYWN5LXRydW5rCis3NjUxIDJiZDkyMGU3ZTVjNzg4NTg1ZTIzOWI0N2IyMDhmNGVmMTcyMGU5NGEgbGVnYWN5LXRydW5rCis3NjUyIGIxOGUwM2JhNDgxNzdmMWZhNDM2NjQ1YzZjZWEwYTRhZDZmNjk0NjEgbGVnYWN5LXRydW5rCis3NjUzIGY5NzQzNjRmM2E4N2ExN2VhMjE4Yzg3OGQ5YzliOGMwYTk3YmZlNGQgbGVnYWN5LXRydW5rCis3NjU0IDg2M2ZmYzJhYjc2YTk5NTM2Zjg3YzdhYzVkMWZmYzAyYjk4MmM5MzUgbGVnYWN5LXRydW5rCis3NjU1IDZiYzU2MjU5Y2M0Y2MyN2Y3OWJmOGFkN2NhOGQ1YTY1MjVkNWFmMGMgbGVnYWN5LXRydW5rCis3NjU2IDhhMGI4MGRjNmU3MTE0ODY5MzcyZDE1NTJiZjdhYzI3YjM2ZDExM2YgbGVnYWN5LXRydW5rCis3NjU3IGUwMzYxZDU0MjFmZjBiNDUxNGRkNTU3N2JjYjBiNDg4ZGY4YTNiYWYgbGVnYWN5LXRydW5rCis3NjU4IDYzNjc1N2U4MTJhNGM0YmZhNGJkYWNhZDBhNzA2YWRjNmYzZTNiYTYgbGVnYWN5LXRydW5rCis3NjU5IDVjZjgzYWQzMjUxZTVmNWIxZGZmMDZiN2I5Nzg5Nzc4YmEwOTEzZTEgbGVnYWN5LXRydW5rCis3NjYwIGMxNzI5ZTE0ODkxNmIzMzU1YjU3NDQwYjYxYWUzMWQ2Y2RkMTBlNzUgbGVnYWN5LXRydW5rCis3NjYxIGExNmRlY2JiOTcxNjU4NWE1ODc0OGI4ZDJhMTE3YmIyZDc3YzU1NjEgbGVnYWN5LXRydW5rCis3NjYyIGMxYTFjMzA2YTQyOWI1ZmNmYjg2MWRjNjMwN2VkYjhlYjM0NTU5OWIgbGVnYWN5LXRydW5rCis3NjYzIDNlYzNkODgwN2Y5ZTg4OTY2MmQyMTUwZjdmYWU3ZTg5NTM5MDk2OGUgbGVnYWN5LXRydW5rCis3NjY0IGJhYjkxOTZhOGYzMGM2MjQxNTc2OTYzMWE2MzIyMTYwYWM0YjZjMjggbGVnYWN5LXRydW5rCis3NjY1IGE3OWVjZDVhZjdlNWI0MTliNTE1YjllMDQwNzYxN2FjZDVhZDA1NGEgbGVnYWN5LXRydW5rCis3NjY2IGZhMGZjMjg4YjJjOTBiOTYxMGVlZjZiNDY1NDdmMzM0NGE5MGY3MGMgbGVnYWN5LXRydW5rCis3NjY3IGI3YWM3YjQ2YjEwYzAxMDViNDViNTg0YjMyZWY3ZDJjNDUwOWE4Y2MgbGVnYWN5LXRydW5rCis3NjY4IGYwZmQxMmQ3NmUwNzhmZjViYjNiZjRhOGE2ZjE3OTRhMDY5MDgwZDggbGVnYWN5LXRydW5rCis3NjY5IDUyZjNkYzQxZjZjNGZjZWJiZGY5N2ViNTc1MWIwZmU4MDFiYWQ0NmUgbGVnYWN5LXRydW5rCis3NjcwIGE4NzRmNWQzMDM4ZWRiZDRmMTkyYTQwYzM2ZmI0M2I2ZmZmN2E4YWYgbGVnYWN5LXRydW5rCis3NjcxIDhlZTgxZWY0ZTk4MmY0ZGQ2OGYwODFiNTY1NTQxOTg5MTcwMTNmOGQgbGVnYWN5LXRydW5rCis3NjcyIDc0YzEyNzA0YTBiZDBjNDllODcxYWYwNGY4ZWExYjNjMzY0M2ZlOTkgbGVnYWN5LXRydW5rCis3NjczIGUwYTYwNWU2NmJlZGFhZDhmOTVhZjE1ZGRiOGRkZGY5MTVhMTUyZjcgbGVnYWN5LXRydW5rCis3Njc0IDdlMzgwZGYwMGQwMGZhMWMzOGMwZTYyYjkyY2E5YzQ4M2RkYjQ2M2UgbGVnYWN5LXRydW5rCis3Njc1IDAyNGU3Mzg2NzRhNWNkYTc4ZjdiZGQ3YjI4YWM3NWZkNGE0MjlmNTEgbGVnYWN5LXRydW5rCis3Njc2IDU4NzhhNWFmMzE0OGQ1YmZhZmEwYzJhYWZlNjhhZDNmN2NhY2RmNDkgbGVnYWN5LXRydW5rCis3Njc3IGFmOTJkNzc5MTUyYWMyNGZmYmU3NjQ0YWExMjNiOTAwZjEyYzFjMTUgbGVnYWN5LXRydW5rCis3Njc4IDA1YzdkOGI0ZmZkNmU0ZGQ5YjNkMDBjMjYzNzE3MzE4NmI3YjgyNDcgbGVnYWN5LXRydW5rCis3Njc5IGMyNDhhMDdlNTM0MTY0YjI2MDgwYWJiOWUxMDY5YzY2ZDA2YThmODEgbGVnYWN5LXRydW5rCis3NjgwIGIzOTIwMzk4M2RlNjYxMTFkZjkzYWFjYjI5ZGNmNmM0MzM3NDQ1YTAgbGVnYWN5LXRydW5rCis3NjgxIGJkNWUyYzJjMWUwODcyYjExYTZjMDNlODU3ZjgzYjc5ZDIyZjhlYTEgbGVnYWN5LXRydW5rCis3NjgyIDAwZWJmYTMzY2MwNzYzMGVlZGE3M2EwZDc1ZDdmNTU3NTBiYTBmYmEgbGVnYWN5LXRydW5rCis3NjgzIDkzZTg3Y2FjNDgzZTViZmZkNjczODQyN2M5Yjk5NWJkMDE0NDM3NGYgbGVnYWN5LXRydW5rCis3Njg0IDJlYzljOTMzYWZiODc0NmE0MDI0MzljMzQxNmI4NjhjMjQ1ZTJkNWMgbGVnYWN5LXRydW5rCis3Njg1IGQ0YzZiNGIwNTQ4YzFiNjA0MzgwNjQzZWI3Nzg4ODljMDhlM2M1NWUgbGVnYWN5LXRydW5rCis3Njg2IDMxNGQwZDYwM2YwNmVlNGUyNzM5NmY4YmI0ZDg5ZjQ0ZDljNDJiYTcgbGVnYWN5LXRydW5rCis3Njg3IDFmMzhkNWZiM2QyMzg4MWM5OThlOWY4Y2ExODBkOTYyMGJlMTRhOWYgbGVnYWN5LXRydW5rCis3Njg4IDViNDA3ZTBjYmM3MTVlYTY2NzMxMDFhY2U1ZTNlMTU0M2Q3Njk0ODYgbGVnYWN5LXRydW5rCis3Njg5IDljMTZiZGYxNjBmZjY4ZmJiNmNkNzQxZjU1NWI5MDNlYzA4YjMwMjMgbGVnYWN5LXRydW5rCis3NjkwIGY3MDA0MmMxOWM1N2EzYjc2ZWU4NDk2Y2I0OTExODFkZjA4MzhlYTMgbGVnYWN5LXRydW5rCis3NjkxIDliZjY1MGYyM2RhNTcxMzBiNWIyOGNjMTY3ZDAyMWRiYjYxZWNjNzIgbGVnYWN5LXRydW5rCis3NjkyIDNhYjdkNThjMjk2MzFhNmE5NWEwZjFjNjNhOWY2NjEyYmNhMmMwZGEgbGVnYWN5LXRydW5rCis3NjkzIGY1YmZiOWM0YzM2NDEzYWY0MmJhN2RiZjQwODhmZjgwOTEzOWY4NDIgbGVnYWN5LXRydW5rCis3Njk0IDMzNGQ1MmQ2ZGY1ZGFiNGQyZTliNmRlNzQ5NjE4NWU2MjU4OTE0M2QgbGVnYWN5LXRydW5rCis3Njk1IGUxZjYxMzMyMmIyM2MyN2Y2OTYwZTAxYzRkMDA4NjAxNDcyZTZmYzYgbGVnYWN5LXRydW5rCis3Njk2IGQ5NzMzYjRmODExZjQ3NWE2NGI2MDgzYzc4OTFmODc0MWFmMGQ2ZTQgbGVnYWN5LXRydW5rCis3Njk3IDRkOGI3ZGQ1ZGUyYTI4MGFmNTI0NGVmOWE2ZjVmODdlMjU0Y2VjMWEgbGVnYWN5LXRydW5rCis3Njk4IGJjODgzMmI1MmI1MGI4Y2IxOTZkMjhhYmJjOTY5NjViMDgxNTZlZDYgbGVnYWN5LXRydW5rCis3Njk5IDA1Nzc0ZWMzOWFkMjA1YmRiZGY0NzU4OTA5NTVjMjk5MWY1ZGU2NzMgbGVnYWN5LXRydW5rCis3NzAwIDFiMTRjNWMxYmUyYTUyODU3MmEyNmVmMTgxMTYyYmJiYjBmYWU3MDAgbGVnYWN5LXRydW5rCis3NzAxIDg0YzkzZjYwMTcxOTRlYTg1MDBiNzJhYTg3ZGZmMWM4M2IzZGZhNWQgbGVnYWN5LXRydW5rCis3NzAyIDk3ODUyZjRlYmRlNmIwNDQxZWFkOTdmYmQ1ZGJlMGM1MGIxNGE2MDYgbGVnYWN5LXRydW5rCis3NzAzIDU5ZThhMDJhNDc3NGQ4NmE1NWUzYzQwMDMyZGM0MGY1ODFmZDYwOTAgbGVnYWN5LXRydW5rCis3NzA0IDc0Y2FkZGY0YjI4YTRlMjg0MDc1ZGY5ZjNhN2M0N2I4MWY2ZTk0NDMgbGVnYWN5LXRydW5rCis3NzA1IDBlNjBkZTJhNDJhZjc1MGM1ZGNmODBjYTk1NTBjNTc1YzcwMDgyZDUgbGVnYWN5LXRydW5rCis3NzA2IDkzMzQ0Y2JkZjU0MjJhMzY4YWRlMmJiMThiZDU5MGQ4NDk2YTE5MWQgbGVnYWN5LXRydW5rCis3NzA3IDBhNWNlYTQyN2E5ZmJiYWUwMzc2MWNiODllMjY3MzAwMGMzMGZlYzQgbGVnYWN5LXRydW5rCis3NzA4IGI3NDlkMmRkNzU4Mjg4MWUwMWFjZGNhNGY0ZjEzNmU4ZTQ2YmI5ZWYgbGVnYWN5LXRydW5rCis3NzA5IDA3ZWQ1MmUyMDBkYjY5Njk5NTYyZmZmMzM1ODFjMDE3M2E0MGVhYWMgbGVnYWN5LXRydW5rCis3NzEwIDRmMWZhN2I2OWJhNzc5MzM2ZTk5NjY1ZGFhYTkxNGY2OTJlMzZiOTMgbGVnYWN5LXRydW5rCis3NzExIGI0ZTY3MWJjMTMzMTFhYTA4ZDBlYjFlMzg5ZGY4NzAyMzU1NDkxOWEgbGVnYWN5LXRydW5rCis3NzEyIDEyMzczYmEyNGU1ZDM3MmM2YTU1Y2I4YzVkZjhkZGE3N2FhNzk2NWYgbGVnYWN5LXRydW5rCis3NzEzIDE1Mjg4YzgzNDNhNWE2MDg4NmNlYzE0ZTExYzBiMDFkNDQwYTk5ZTAgbGVnYWN5LXRydW5rCis3NzE0IDI3NjM1NDM3ZmE3YTJkN2QwNGRjZTk5OTNmN2NlZmQ1NWIxZDkyZTMgbGVnYWN5LXRydW5rCis3NzE1IGEzMjMzODY0Y2EzODVmZWVlMDdjYjdlNGNjYjlkMzlkNTk2YjRlODAgbGVnYWN5LXRydW5rCis3NzE2IGI4OWY1MjgyMWM1MmU4OGE1NjliNjA1ZWE4Y2Q5YzBhMjU1NzNhMDUgbGVnYWN5LXRydW5rCis3NzE3IGE1MGRmN2YzYTEwYTMzZDJhNzkzODZkODJlMWQ4YTQxZGMyZjc0NmEgbGVnYWN5LXRydW5rCis3NzE4IDRmMjUxYjhlMzI4ZjViNWY5YTc3Y2M3OTE3NzcwMmE0NWQ2OTAzMzMgbGVnYWN5LXRydW5rCis3NzE5IDI0NzEzOWQyMDBlOGM3OGNjMTE2N2RjZDRmY2ExNWNiYTg3ZjE2YWYgbGVnYWN5LXRydW5rCis3NzIwIGM1ZmQzMjcwNTdjNmMzNTRhN2EyNmZhZGMzYWFhZjE5YmVkZGEzYWYgbGVnYWN5LXRydW5rCis3NzIxIDIzMzMwYTFiOTU5NGQ5MjhmNWU5ZTZjNTJjMmNiNjc4YjI0N2I3MmUgbGVnYWN5LXRydW5rCis3NzIyIDZkYjhhZGU4ZDhhOTgwZDU2OGMyMDFmMGI2OTAzYzEyZmFmODFiYmEgbGVnYWN5LXRydW5rCis3NzIzIGE1NDcyMGY4ZGQzNmNmZmJmOWVkNDM2ODgyZTk1MzcwYWRiNGNjYmQgbGVnYWN5LXRydW5rCis3NzI0IDEzMDA1ODcyZDA1MzQ2ZmIwMWM3OGQ4ZjYwNTEzNjRlNTg4MWI0OGMgbGVnYWN5LXRydW5rCis3NzI1IDUyZTNiNjNmMmRjYTAwZWQ2MzdmMzhiNDk0NDRlNDM4NGFhYzZkMDQgbGVnYWN5LXRydW5rCis3NzI2IDFiZGRiYTJmMTAwZTQ4ZGEwNWNkNTJhYjgyNzJiYjZhMjVjYjU1MTUgbGVnYWN5LXRydW5rCis3NzI3IDJmZDkyNDZiMGVlODIxMzI4ZGEzMzlkNThiYTE1NjI4MmU3NmE3ZTAgbGVnYWN5LXRydW5rCis3NzI4IDZmY2YyMDc0OThkOGFiZTE3MWYzODA2YTUwMjMwNWFkYjI2NmUwNjMgbGVnYWN5LXRydW5rCis3NzI5IGZlMWNjYjRlNGMxYzczMjAwMjc2MmMyZjQ2YzAzMjhiOTkyZWQzZjcgbGVnYWN5LXRydW5rCis3NzMwIGQwODdjZDA2MGJhZGRhNzZlN2VjNTE5NGE3MmQwY2M5NDNjNjFkM2EgbGVnYWN5LXRydW5rCis3NzMxIDcxNjk0YTE3MTMyNGZmNWU4MmIzY2ZkNTNlM2JjZTJmYzE3YjAzZDAgbGVnYWN5LXRydW5rCis3NzMyIDgxMjgzNzk1ZjE2YThhMzhlMjg2MWRhYTA3ZTk3ZjY1MjRiZDgwMjQgbGVnYWN5LXRydW5rCis3NzMzIDQwZDJmZDQ3MjI4NGE0ZTRjZjBlZjYwMzEwZjhmMWRjYzliMzE5N2UgbGVnYWN5LXRydW5rCis3NzM0IDcxZGYyMWMwYTM0ZWQ0YmM0NGQ3ZjM5NGRjOTA2OTdmMTYyNTgzMmEgbGVnYWN5LXRydW5rCis3NzM1IDFlNWQ2MjkzYzUyNGUzZTViOTQyNDdhNDI4OTIwMDk1ZTk4MjkyNTMgbGVnYWN5LXRydW5rCis3NzM2IDcyOTg2YjcxNjgyNDYyYTdmMzQ0ZWMxYzg5YWMwMWE5ODYzM2IyNjcgbGVnYWN5LXRydW5rCis3NzM3IDVhYmMxYTM2YmVkZGM3Mzk2MmNjOTUxYjAxN2Q0YmMxOTI4NzVkNjEgbGVnYWN5LXRydW5rCis3NzM4IDg2ZDYwYzM0ZWJkZTc3ODU3OGYxZTM1ZDFlOTQ3MTIyYTQ1MjQ4MDQgbGVnYWN5LXRydW5rCis3NzM5IDM4ODc4ZjFjZDRmMWZlYzk5OTdiNDNiMTlmNTg4NzNhM2QzY2EzNTcgbGVnYWN5LXRydW5rCis3NzQwIDNjMTc4OGFiOTc2MTA2ZjMwMTYwNzcwODRjMjIzMjFkOWJlNzA0YjcgbGVnYWN5LXRydW5rCis3NzQxIDFlZmM0MjczZmRiN2UzNDkwZjk4ZDc0N2E4NGI2ZTIyZjdmN2RmOTIgbGVnYWN5LXRydW5rCis3NzQyIGQ0MWVlZTZkMmZmNzY5M2JhZjRkYzAwZjVkNDkyYWZkODYxZTQ2NTEgbGVnYWN5LXRydW5rCis3NzQzIDRmMzMxZjViYjVmMmE0YjkyMTk5NDlkN2E2OTM0Y2FlNWRiZWNiZDYgbGVnYWN5LXRydW5rCis3NzQ0IDRlNTM3NDZlNTFhZjkwYTE3MmJlNDcxNmEzMDA4MWFkZThjOTQzODcgbGVnYWN5LXRydW5rCis3NzQ1IGRlOWQwYzUyNDliMGUyYTdkNDYxZWNmZGYxZmIzNTA4OWRiZWQxZTYgbGVnYWN5LXRydW5rCis3NzQ2IGFmZjcwNjMzNzhhOGE2MzljOTRkMzUwNjQ0ODY4Yzg5N2U2Njk0NmQgbGVnYWN5LXRydW5rCis3NzQ3IGIxNTlmOThjYmZlZmJkNjUxODQ0MTA3MmM0NjI5MmFkMjc5NDA2NmQgbGVnYWN5LXRydW5rCis3NzQ4IDExNDhlN2ViY2EzNTRiMjNlZjM4MGNjOWEyMjQ1N2ZlNTk2MmEwNjEgbGVnYWN5LXRydW5rCis3NzQ5IDBkNmU3MGE1YWI0YmQxZDcyYWZmYzMwZTZjMTFjODRiZWJmYjFhOWQgbGVnYWN5LXRydW5rCis3NzUwIDA5OWRiYzY4NGM3YmU0MGNmNjlmOTZkMjgzNDJiNGI3MGQ2MjcxNGIgbGVnYWN5LXRydW5rCis3NzUxIGI3Y2I2OTc2ODkzZDg1Zjg5MjFjZDJlYzBlNDQwNjc1MzljM2FmNDYgbGVnYWN5LXRydW5rCis3NzUyIDdkZjVhMGQxZjUyMzBiZGYxYTM0YzBlZGM2MDQ1NzAwZGRmNzRlZGMgbGVnYWN5LXRydW5rCis3NzUzIDAxYzNlNjRiYzgyNGFhYjBhYmQxOTZlNGZhNDFlNjExZDM4Yzc5OWEgbGVnYWN5LXRydW5rCis3NzU0IDE2MzcyYTRjNGMxNDVjNjljZDUxYTg3MGY4Y2IxY2NmYWY5NmRjM2MgbGVnYWN5LXRydW5rCis3NzU1IGU4ZjhjZjM1ODA1NGVkNmI2ZDg5YzQ4YjM2ZmMyODVlMTkzZjVlMGMgbGVnYWN5LXRydW5rCis3NzU2IDYwN2ZhMzJmYzA0YTFkYTNjYjlhMGQyZDA3NWU1MzI2OWY1MDhkZmIgbGVnYWN5LXRydW5rCis3NzU3IDUyNTBmNDA5ZDU1ODcyMzFlMmQ4NmU2OTc2MzdiNWRlYjRjOTM4NmIgbGVnYWN5LXRydW5rCis3NzU4IDgyYTNmYmRhMzM2MzUwYjNhNGMzNWE2MTdkYjg5NTE3Mjg0MmJhYzEgbGVnYWN5LXRydW5rCis3NzU5IDAyYjJlZGY1NWJhZjM5ZGY5NDY1YWQ4YzY0YmRlNzEwNjAzYmJmNWQgbGVnYWN5LXRydW5rCis3NzYwIGQyYzk5NWVjNDI5MDEwMDhkYzFlZjlkMzRjOTBiYTA2Yzc0NGQ2MzYgbGVnYWN5LXRydW5rCis3NzYxIGZiZWRhNmY0NmViYjM4YWI3YmE1MjY0Y2Q0YWQzOTg4NmNkMjJjMjkgbGVnYWN5LXRydW5rCis3NzYyIDVhZjc2NmExYjUzMTI1MGZiNjQ4ODc4MTYwODU4Zjg5NzkzZGUzMTIgbGVnYWN5LXRydW5rCis3NzYzIDBmMTcxMWI3ZDM2N2RmZmJiOWM1MTQyOGY0NDE2OGFhYTk1OTQ0ZTkgbGVnYWN5LXRydW5rCis3NzY0IDQ3ZDNkMzk2ZDRlZjhhMjFhNjFkOWM5ZDRlZWVkYzgzYjFkMGU0MmUgbGVnYWN5LXRydW5rCis3NzY1IGQzMmI4ZjRkOWQzMDkyMGNlODFjMGFjZTFlMTI3YTQwMzc3Y2VjNDUgbGVnYWN5LXRydW5rCis3NzY2IGE3NmEzYTM5ZjZiY2ZiNzdlZWMyOGFjMGFlOWYzNDBiZDM3MWQ0MGMgbGVnYWN5LXRydW5rCis3NzY3IGNhNTY4ZTVlYmQxOWEzODA1NWZjY2U3MmM1NGFiODkwMWY4ZDFmYTEgbGVnYWN5LXRydW5rCis3NzY4IGIwZDlkZTM3ODZlYzMyOWMwZDY5YzA0ZDE0YjI2NTY2MTZiZjFiNDMgbGVnYWN5LXRydW5rCis3NzY5IDU3YTJlZDA2MzBjZDg1OWU4YTU4OGNjYWJiNTdhZGE3Mjk0ODk4ODggbGVnYWN5LXRydW5rCis3NzcwIDJmMjc2MGMzZGQ5MDVkNDNmZGQ1MmMzNjM4YTA0YmMwYzRmZWViMjYgbGVnYWN5LXRydW5rCis3NzcxIDdhYTQ1NjYwMTRjNmFjMDQ5MmI5OGU5ZTJlZmRiZWQ1MzkyYjM2M2UgbGVnYWN5LXRydW5rCis3NzcyIDdlYzczM2Y5YzMwNTc0YmVkMmJlZDg0ZDgxYzk1MTkyYTY5M2E1MmUgbGVnYWN5LXRydW5rCis3NzczIDlhMzJiZDhmNGFjOGExY2U1MGIwNjhiNTFiMTk3ZjQwY2I4OWU4YmIgbGVnYWN5LXRydW5rCis3Nzc0IGI1MjNlNmU3YWM2MTJhZGUxZTIyMTA0NTViMTM0ZDY1MmQxMTczOTkgbGVnYWN5LXRydW5rCis3Nzc1IGU3Nzk0MjU2MmRkMzhlNTM1ZTY2YjhjOWM1NDk0ZDE2NTQ5Nzg1MzQgbGVnYWN5LXRydW5rCis3Nzc2IGZiODE2NTMwNDkzOTM0NWRhM2VlNzVlY2RjOWJkYWRlZjg4NDkxNTQgbGVnYWN5LXRydW5rCis3Nzc3IDVlM2JjZjRlYmYyOWY0OGNjY2NhNWM4NjZjNjU4MmQ0Y2JmNTZhM2IgbGVnYWN5LXRydW5rCis3Nzc4IDk2NDU2MmJkNzVjYzM3NmZhOWEzMjk0NGIxMGRlMjAxMGE3M2Y5ZDMgbGVnYWN5LXRydW5rCis3Nzc5IDQ0NTkxNzJmNDBiYjE0NDg5ZDNhZTY2ZmM4OTE1MjljZDMyNDVkOWIgbGVnYWN5LXRydW5rCis3NzgwIDMzMmZlMDJiZjAyZGM0N2FmOTAzODI4YzQyMmI2MzI1ZGE5NDk2ZDMgbGVnYWN5LXRydW5rCis3NzgxIGU2MTRiY2QzNGUzNGZjNGY1NzVlYmUwMGEzZTgzMWMwYTY3MzNkY2IgbGVnYWN5LXRydW5rCis3NzgyIGMzZWQyOTlkNTkzZTZjZjQ0ZmVjM2EwZWM5NjExY2ZlMzA3OGFkMTAgbGVnYWN5LXRydW5rCis3NzgzIGRmODdkNWQxYmJkZjE3Zjk3M2RjN2RjODRkYmQzMGNkNTY2NmI0YzggbGVnYWN5LXRydW5rCis3Nzg0IGU3NTZiOGU1NGM3YzFjNjJjYTY2NTFhZjVlNDEwNzRmNThmMzE3YmUgbGVnYWN5LXRydW5rCis3Nzg1IDE5MmUyZTBjYmNlNTA2NDhkMzI2OWVjMzE3YTQ5NjdkYmRkMzM4YzEgbGVnYWN5LXRydW5rCis3Nzg2IDc4MjU5N2NmNjE1MWQ5ZGVhMWY4YjU5NDkyY2U1YWUzZmI5MzViZTIgbGVnYWN5LXRydW5rCis3Nzg3IGQwZWIxODMwOTJiMGNkYzY4YjVkMDE1ZTU4MzVlOTgyMGM4OTFiZDUgbGVnYWN5LXRydW5rCis3Nzg4IGU4OTk2ODg0ZThlMTdlNmI3YjQwMDM5Mjg3YjM2ZjBjZDVmYjlhMGUgbGVnYWN5LXRydW5rCis3Nzg5IDhmYzIxN2QzMzI2NzU0NTk3YjE2NjgxZDVkNzI2ZWViZWQ3N2U2YTMgbGVnYWN5LXRydW5rCis3NzkwIDY1YzllOTBkODE0MjY5MmRmMmI4ODkyNjEyZDg2YWMzYzUzNmVkYmQgbGVnYWN5LXRydW5rCis3NzkxIGM4ZTI0YzRiOGJmYmNjYTgzOTlmNjE0MTdkMjdhYTM1NzU1NzZjNjQgbGVnYWN5LXRydW5rCis3NzkyIGM3MmM3ZTE5MzBiM2YyY2IwN2ZjNGJhYzhiZGNlY2FlZGE4ODYzYWYgbGVnYWN5LXRydW5rCis3NzkzIDJjNGI4MDJhM2I1ZDhiNTVlZTA1ZDRiNmVlMWM1MTEzY2M1NDFkMmQgbGVnYWN5LXRydW5rCis3Nzk0IDc0YTFiYzA5OTgyNzZlNzI3ZjExYmQ0MTIxNmM2NzNlYTVhMGE1NzAgbGVnYWN5LXRydW5rCis3Nzk1IGMzZGRiODRhNzc2MWZkZTNjNTU0MTg5M2E1MzM4OWIzYjA1NTZjNGMgbGVnYWN5LXRydW5rCis3Nzk2IGUyYWMwOTgyY2MzMmYwY2YxMTZiYzlkOWI0YjQyNzU4MjAxNGIyZTcgbGVnYWN5LXRydW5rCis3Nzk3IDM4ODE4NTM4Yjg5YzBhZTg3MGFjY2U4NzAwNWNlNjcwYzk0NDcyYWMgbGVnYWN5LXRydW5rCis3Nzk4IDkxZjk5MTgxMjcxODU1NzkzYTMyMmJlZTcxYjY3ZjRiYTQ3YjYwNDcgbGVnYWN5LXRydW5rCis3Nzk5IDQ4OWRjYTNiNTRjY2I2MGZhYjYxNGM5NGI2YjBjY2NkNzExZTU2ZjMgbGVnYWN5LXRydW5rCis3ODAwIDNhMDc3OTlkZWJhMWY2ZGNiY2MzYWE5N2QyZGVjZGQ1MjlkYWQwMTIgbGVnYWN5LXRydW5rCis3ODAxIGI2ODkzMTMzOTQwZmVlYjEzMTQxNTQyYjEzOTdiZTZiNjg0YzEzZjAgbGVnYWN5LXRydW5rCis3ODAyIDE1MmIyODI3YTFhMDg3M2EzNWIyYmM0MmMzMTIzYTMzNDczMjNjNzcgbGVnYWN5LXRydW5rCis3ODAzIDM1OWU4ZjgxNWEzYWNiNDkyNzcxNTc5NzAyZTk2YWM1ZWFlYjE3ZmMgbGVnYWN5LXRydW5rCis3ODA0IDQzNzUyZTIwOTQ3M2MzOGUxYTg0ODU0YTlkOWIxYTJmMWZlZDU4NWEgbGVnYWN5LXRydW5rCis3ODA1IDVhMjJmOWIzOGFhYzIyNjhhYjA4Njg0ODNhN2Y1ZDI3Nzk0YTk1NjMgbGVnYWN5LXRydW5rCis3ODA2IDYyMzJhY2JhN2ViMjBhMGM3NTdmZmNiODI0M2IzN2M1ZjYyMWE5MjYgbGVnYWN5LXRydW5rCis3ODA3IDhkZmMyNTI5NjNjNzE5OWUzYmJhNTg5NmZhOTUwZmVmMjQzZGFjZDcgbGVnYWN5LXRydW5rCis3ODA4IDYyNzMxNmMwMDFmYmQ0NTE3NzNjYzFiMmIzNDdiOGY2YjNmYzUzM2QgbGVnYWN5LXRydW5rCis3ODA5IGQxYWM1MWI4NzBlMjE4YzA0NzY2MjNhMWVjOTE5ZmU4ZWVlZGU5ZWYgbGVnYWN5LXRydW5rCis3ODEwIGVlOTI3NWIwZjVjODBhZjlmZWNkN2NkMDM4MzIxZDkyZGViNTBmY2UgbGVnYWN5LXRydW5rCis3ODExIDc0NmY2ODdhY2ZjMWFmNTIzMWQ5NWY0MGY1NDliOTFmMjc1YjAyMmIgbGVnYWN5LXRydW5rCis3ODEyIDE2NmMyMjMyOTIxYWJmY2U4YmFjY2Q1M2JmNzM2Njg2MWQ5MDE0MjkgbGVnYWN5LXRydW5rCis3ODEzIDY3OTk1YmMxN2Y2MjViYzBiY2I2MzJhMzg3MTY5MTU4ZmMyZTZlMzkgbGVnYWN5LXRydW5rCis3ODE0IGIwYTMxNDBjYzliMWFkYjA3YmYyM2FiYWJkYzk5MTU1YmQzMmRmOGIgbGVnYWN5LXRydW5rCis3ODE1IGRiNjczZTk4ZjI4ZGFlZWIyZjcxMjEzY2FjZmVjNTIxNDg3YWU2NzIgbGVnYWN5LXRydW5rCis3ODE3IDY3ZTUyMzdjZTE0MThiMzg3ZGEyMjNlZTMyNDUxNjMxNWQ1MjE1YzggbGVnYWN5LXRydW5rCis3ODE5IDY3YTBiNWFhYWU0MzNiYTk4MGVmYWJiYjc1MTExYjQyODI0MWRmMzEgbGVnYWN5LXRydW5rCis3ODIwIDRhNTQxYmIwYzUzNDMzYzdhYTA5YjhjYmIzYjY1NTVlYjE2MjMzNzggbGVnYWN5LXRydW5rCis3ODIxIDljYTI3MTg4ZGEyMzIzMjJmNjcwMTFiMzVjMjIyYTRmMDBlM2U1NDggbGVnYWN5LXRydW5rCis3ODIyIDViMmVkNjA4MWViOTRhZTE5ZjYzNmQ4NTJjMDIxNzMyYjdhZTU2MzUgbGVnYWN5LXRydW5rCis3ODIzIDMzOWRjYjlhMjgyNTcwYzkzMWZhNjVlYzFlZGUxNTg2MGY0MGU1YTUgbGVnYWN5LXRydW5rCis3ODI0IDAwNjFmNGVhOTdiZThlYzM1MjFkYzljZDE0NjNhNmM1MDEyODA5NjEgbGVnYWN5LXRydW5rCis3ODI1IGFlMDJlZDJhYWMzZjZjNmE1MTFiNTIzZTE4YjUwY2Y5ZjhmNmJkMTEgbGVnYWN5LXRydW5rCis3ODI2IDZhYjM5MmQ3YTUyZmNkNjA3Mzc0ZWZjZjJjZmM2ZmQ5MmZkOTlkMzQgbGVnYWN5LXRydW5rCis3ODI3IDY4OGMzZmQ0MmNhNjJkNTYyMTExMDZkMTUzMDFlODliOTZjZDEyMDUgbGVnYWN5LXRydW5rCis3ODI4IDk5OWMxOTdkYTU3Y2MxNmJmNTk2ZjFlZjcwMmUwYzI1MzliMjU4MGUgbGVnYWN5LXRydW5rCis3ODI5IGQ1NzU3YWFkMWE0ZmVhNzc4ZTI0YzFiYTU2NzVkYWVmZWRjMzg3MjkgbGVnYWN5LXRydW5rCis3ODMwIGQ0MGNkOTEwZDY4NGYwZWI3N2JlM2UwNzU2ZDRjNGY0NTQzZWY1N2MgbGVnYWN5LXRydW5rCis3ODMxIDJjMGIxMDE2NWY3ZWNhNDE5NmFlMTQ0YjFkNjgzYmQyNmMwNGYxNWUgbGVnYWN5LXRydW5rCis3ODMyIDE3OTE2OGUxN2JmZTI1YzU3NzI0ZDllMmRiZTIwMzIxNzI4MDk0NjIgbGVnYWN5LXRydW5rCis3ODMzIDQ3MzYyZmQ5MDcxYmM3OTA5YjcwMWU5NzU3ODQxYTM4NDVlZmMxM2YgbGVnYWN5LXRydW5rCis3ODM0IGJjMmUzMzM0MDQ4ZTEzYTFhYzM1NmY4ODA4YmFmNzBhZWZmNmU5OTQgbGVnYWN5LXRydW5rCis3ODM1IGRiNDBkYmEzZjc5YTdkNTMwMzE0NDgwNmNjMzJhNmI4YTNjY2E4MTUgbGVnYWN5LXRydW5rCis3ODM2IGVkZWE0ZjFkNjNmZDAxNTU0M2MxYmM2Y2M0YzU1MWI1OThkM2VmMDQgbGVnYWN5LXRydW5rCis3ODM3IGY4NTgwMzhiNjRjMjYwNjUzOWMyZmI4Y2I0MDcyNDljNzNmOTk4N2EgbGVnYWN5LXRydW5rCis3ODM4IGIxYzJiNzlhYTUxZjg1YzQ5MGQxMTI1NDA1ZmVlYjEzNDAwOGU0NTAgbGVnYWN5LXRydW5rCis3ODM5IDYxZTQxYjJiMWI2OWQ0ODhiMGI4ZGI0MjMwMGE3MzBhZmMxNTU1YzEgbGVnYWN5LXRydW5rCis3ODQwIGNjNTg2YmRhNjI3NTUyNWQ2NzU4ZTMzMThhY2EyNmM1ZWJmNzhjMTQgbGVnYWN5LXRydW5rCis3ODQxIGU0YWY0MTRmNWY4OTNiNWQ4YzZhZTA4ZWEwMTFkZWZiZDk1ZDE0ODAgbGVnYWN5LXRydW5rCis3ODQyIGI3Y2E5OGM2ZGJiZDY4YTdiYTM3YzM4NGY1NTE3NmI3NzY4OGVjMTkgbGVnYWN5LXRydW5rCis3ODQzIDg3MzEzMzMzYWUzZmMzNzNiZTRlYzg4MTYwZGIzNDE3ZDRlZTBmMWUgbGVnYWN5LXRydW5rCis3ODQ0IDg5ODE1MzNlNmNjMWExMjdhYWI4MDM1MjBlNTE0MDlhYjcwMjEyMDggbGVnYWN5LXRydW5rCis3ODQ1IGYyMTMyZDFmNjZhNjI4ZjU5YzVlZmNlZDgxNTBlNmExYTkzOTk1ZjIgbGVnYWN5LXRydW5rCis3ODQ2IDNjYTE0NTAzMTcwY2M5ZjliOTJmYzA4NzU4NjAyYmIyNzE2MWZhZTkgbGVnYWN5LXRydW5rCis3ODQ3IDFlYTFmMDE5MjY4ZDlmMjcwNzQ1NzlkNzE1ZmNiMjk2NjE2NmY4MGUgbGVnYWN5LXRydW5rCis3ODQ4IDQ5M2EzNGRjYTUzZWRkNzI1NDYyOTk4NTY4YTc1MjU1MjJkMzBkYjcgbGVnYWN5LXRydW5rCis3ODQ5IDQyNDkyMmFmYzFiYjQwZTlmNTIwMjA5ZjViOTQzZDQ2YTg5MzEwYzggbGVnYWN5LXRydW5rCis3ODUwIDU4ODAzODRkN2M3MTQ4YjhjNDU1MTAxZjc0ZDgwNTdhNjMwYTExMmIgbGVnYWN5LXRydW5rCis3ODUxIDExOGJlZWY5MTg3MzZkNWY4NjJkYTMwOTJiMTA4MWYxMGJiODc1YWIgbGVnYWN5LXRydW5rCis3ODUyIDdmOTBhNjcxY2MxZGI4YTgxMThmYWY2YmEzYzRiYjk0NmZkMjEyNzggbGVnYWN5LXRydW5rCis3ODUzIDk5ODBmYWVlYjdhNTEzZGQ4MjUzMjJkYzFjZWNkYWQ4YjRiYzkzNGYgbGVnYWN5LXRydW5rCis3ODU0IDA5NTk3YTQyMzIyN2NlMzA2NmVkMjczYTZmZmQ2MWZhZTViY2Y2NzggbGVnYWN5LXRydW5rCis3ODU1IDMxOWUzZWFlY2RmNGZiNzkwNGMxNWE1MDMyOTg2Nzk4MDdkMjVhMGIgbGVnYWN5LXRydW5rCis3ODU2IDFjOWE4NGUwOTgxZDM1OGJhOWYwMzgwYzgyZTcxMDY3N2ViMTU2NDMgbGVnYWN5LXRydW5rCis3ODU3IDJkNGM2Y2JhMDFiZjAwNWU0YmZkYzBiZTJhMWNhYTNlYzMzYmUxMWUgbGVnYWN5LXRydW5rCis3ODU4IDMzOWQ0MTI5ZDNmN2YxNWE0ODllMTY5ODVlYjAxMGVmNDQzMDRiZmEgbGVnYWN5LXRydW5rCis3ODU5IDNmNTU4YTMyYzQ5ODAwMDM1MjQwZWE5YzM5MGE3ZmQ0OWNiY2VlNGYgbGVnYWN5LXRydW5rCis3ODYwIDNjNWZjZjhiZjUxODk2MWJjNGJhODVmYjJlMDBlMGNjOGY5ZjBlZWEgbGVnYWN5LXRydW5rCis3ODYxIDM3MTRiMzI1ODI2ZDg5N2NkMTZlNzkzNGYyNDlhOTE5NTBhMzEyYmUgbGVnYWN5LXRydW5rCis3ODYyIDEwZTdkYmEwMWQwNTEyMWZkYTFhZGE1NGRhZmJmMzBmNzdkYzZlYjcgbGVnYWN5LXRydW5rCis3ODYzIDQzYzVlMWY5MTU0ZTZkN2E5YjMyZWJiNmIzNGQ5NzhlMzYwY2Q0OWIgbGVnYWN5LXRydW5rCis3ODY0IDA5YzU4YjE3NDk4OTkxMDI3MDlmZDE2OTFlNDU1ZDI1Y2ViMjVhNmYgbGVnYWN5LXRydW5rCis3ODY1IDEzYTMwY2VhOGRiZjdkMjg1ZmM3Y2UxZjM0MDBmZTQ4ZjcwNWIwYmIgbGVnYWN5LXRydW5rCis3ODY2IDVhOTcwNjk2NWE0ZWMzZmMxMzkwY2JiNmViZmIzZjI2MGE4NDgwOTEgbGVnYWN5LXRydW5rCis3ODY3IGIyNGU4NGEwZjMwYjMyYWNjMzQxYmU1YjMwMjBjZTgzZWZhOWE5MTEgbGVnYWN5LXRydW5rCis3ODY4IGU5MmYxODJkNzcyNjhjODZiNzk0OTI2MTY3MDhhNzNkMzcxYzk1NjggbGVnYWN5LXRydW5rCis3ODY5IDE5NGQyNmRmNmM1MDBjZmZkMmZjMTlmYjA0NTA3ZDQxZjE4ZGFiNGUgbGVnYWN5LXRydW5rCis3ODcwIDMxZTM5OTYzNjY3NWZkNDE0MTBjNDc1MjBkOTc1YTM3NWIwZmExZTggbGVnYWN5LXRydW5rCis3ODcxIGMyZmI5NzZiZWNlYjM5ZGFkMjAxNDJjNWNjZWRiZTlhNzljYmMyMDAgbGVnYWN5LXRydW5rCis3ODcyIDJjODFkN2Q2OGVkM2FhZDNjNjdlNzc1OWZkMTRhMTFkMzk0M2FlMTAgbGVnYWN5LXRydW5rCis3ODczIGQxNDQ3OTUwZmEwNDU2NTJmZjU1YmUzYTJhYzI3NWRhMDcwNjc2YzYgbGVnYWN5LXRydW5rCis3ODc0IGZkN2ViMDU4Y2U1ZGIzMDQxOGM1MWRmYjQ2YzQzMDZjYTNlMjFlMDkgbGVnYWN5LXRydW5rCis3ODc1IDcyYjIzMWVkZmIyNTIzOTU1Mjk5YTg5ODI0MjU5NDAzZmY0NTMxZjUgbGVnYWN5LXRydW5rCis3ODc2IDBhNTk5NzczYTljY2E0ZmVkZGU3ZDA0M2Q3NzMwOTY1ZTFjNDJlOTYgbGVnYWN5LXRydW5rCis3ODc3IDc5MThlODczOTE0OGE0YzYwYWI2NTc5NGI3NmNlYWE4OGY2ZGI5ZTkgbGVnYWN5LXRydW5rCis3ODc4IDQ4N2FkMDMyN2FlMTgyOGIyN2RmYmZiM2JiZWM3NWI3ZTQxNGYwY2UgbGVnYWN5LXRydW5rCis3ODc5IDhmMGE3OTNiYjBlMjY5NTcxYzhiYzBlYTJlZjNhNmJlMTc3YTU3NjAgbGVnYWN5LXRydW5rCis3ODgwIDUwYTljMTQwOTQ2YzQ4OWZmMjNhMmRiM2UxMzNjNDQxOWM0ZjZkOGQgbGVnYWN5LXRydW5rCis3ODgxIDM3ODBjY2UxNGY3ZDAyY2RkYzFmY2QxYjk1Mjk3NjhkZTE3YTYzYjUgbGVnYWN5LXRydW5rCis3ODgyIGI3ODcxY2E5MzBhZDViYzUxYTkwOWVlNzVlYzJlNWRhMTNlMDdmNGQgbGVnYWN5LXRydW5rCis3ODgzIGMyMjU0NzU0MTkyYzJlYWYxNWRkMmFlNDAyNWVmOGUzMzczYjdiYjAgbGVnYWN5LXRydW5rCis3ODg0IGI3YTIzZGJlMDA2NWVjZjdmODEwYjk3NDBhNzM4YTUzOTJiZGUxOGMgbGVnYWN5LXRydW5rCis3ODg1IDY0ODEyNGE1ODgwYTMzMjk3YTQ1ZWNiODg0MWM0N2UwODdhMzZhZDggbGVnYWN5LXRydW5rCis3ODg2IDE4ZDZhNWFiZDNmODMyMjczNmM1ZmM4NTExNGUwYzAyODg0YTc5ZjIgbGVnYWN5LXRydW5rCis3ODg3IDNiMmZkYTMxYmYxYmE4ZWRjNTA1NzcwZWFmZDk3MjZkNDQ0YjZjYTQgbGVnYWN5LXRydW5rCis3ODg4IDY3MTcwNzNkZTU4NjVhNzA2MWRlMGQwM2VkMzZiZmRjZDNkMTA4ZmIgbGVnYWN5LXRydW5rCis3ODg5IDc4ZDM5ODAwNWJhYjAyYTU0Mjg2ZjkwYmM5ZmYwNWJjMzI0YWY3ZGMgbGVnYWN5LXRydW5rCis3ODkwIDEwMjY3ZmRjNzUzMTE2YzFkM2UyNTk4ODIwMzM1ZjBiNzgxNzBmNjQgbGVnYWN5LXRydW5rCis3ODkxIDAxM2ZmNjk1MTkwOWYwZWI1NWI0ZTc3MTllMzk1YjAwMTdkOTMwYzAgbGVnYWN5LXRydW5rCis3ODkyIDU5NjM4MGE1NjdkMjIzOTRjYTAxZWZmMDkwNTkzNGMzNGI1MmNmZWQgbGVnYWN5LXRydW5rCis3ODkzIDE3MjI1NGQ0MWE1MWRhZmI3NDZkMjE1OTY5OGFiZDI2ZjI2YmMyMjUgbGVnYWN5LXRydW5rCis3ODk0IGFiZjMzYjg4MmNmZGNlODM4NzRjYTE2NDMwM2QzMzQyYmJmYzkwYWUgbGVnYWN5LXRydW5rCis3ODk1IGExYjYzYzczYWQxZGM1MTRjYjM2YzQwMGNhYTI2NzY2NDU5MTU1YzAgbGVnYWN5LXRydW5rCis3ODk2IGQ5OTQxYTg5NWMwMjA5NDExNTY0ZjJkNGYwNDE3MmZlYWVhZGIwNWUgbGVnYWN5LXRydW5rCis3ODk3IDAxNGVhOWQ3MmQwM2NmZTRmOTc4OTcxYjcxZTNkMTU0MmVkMDAzNGMgbGVnYWN5LXRydW5rCis3ODk4IGRhY2JmYWEwN2M0MDdjMjZhYWI5ODQyY2U0ZjBlZTEzMjRiMzhmZjYgbGVnYWN5LXRydW5rCis3ODk5IDM3MzMyYjZmNjI4MGJlZDQ3MmJkMjlkOTM5Y2ZlNWE1Y2E0YTFiNWEgbGVnYWN5LXRydW5rCis3OTAwIGJjY2I4ZDc0Mjk2NDdiOTQxZTVlN2U2Zjg3YjUwNDM2OThmNWQzZGYgbGVnYWN5LXRydW5rCis3OTAxIDYzOGE5OWJjOGYyY2NmN2I5YmE0MGEyNDlkMDYyNDcyZTJhZjZiODMgbGVnYWN5LXRydW5rCis3OTAyIGE3ZTMwOWIxNzRiMjcyNWViZDUzMjk4ZGU5NTE5YTI0MjgxODgzMGQgbGVnYWN5LXRydW5rCis3OTAzIGRhYjg2M2I3OWRlYmFjMzM4OWViNGVjN2UzMzI5YmNiYzllNGQ2NGYgbGVnYWN5LXRydW5rCis3OTA0IGIwMDIzMzM1NTg4Y2VmN2Y5N2E5MmE3MjllMDlhNGRhZDUzZGQ3OTMgbGVnYWN5LXRydW5rCis3OTA1IDVlMmMxN2IzNzRmYjBlYWEyNzAxZGZmOGE1MTk3ZDIzNzkwZWVkMTMgbGVnYWN5LXRydW5rCis3OTA2IGFjMjM1YzllNjg4MWYzMzhjYTYwOWZlY2E0ODA0ZmUyZDJkNTljZjIgbGVnYWN5LXRydW5rCis3OTA3IDIzMjljY2YwZTU4MTExY2YxNjg5MWQ1NmJhZDFiZTMyMzMxYWI1NzkgbGVnYWN5LXRydW5rCis3OTA4IGE1NmI0NGIzNTUwNTcyZmQzNTI5OTkwMDc0ODU2MWU5MWZjYzg1MzAgbGVnYWN5LXRydW5rCis3OTA5IGNlZTRjNDVjNTY4Zjc2MGZhYmExOTY5ZGVmZmFmYjZkZmM2MjM4NzQgbGVnYWN5LXRydW5rCis3OTEwIGFkNDc0MWQ1NDMxY2MxYmQwYmNlZDFjYjMxYTAxODBhMjM2NDY2NjYgbGVnYWN5LXRydW5rCis3OTExIDNkNzg5MDIzNmE0ZTU5MWIzOGMxMzM4ZWYzNzY4MjQwNjBkMjRiYzEgbGVnYWN5LXRydW5rCis3OTEyIDU5MWM2NDIwZjExZDAyNWRjZDJjOTMxYjBiZTE3NGUyNTkyYTM3OGUgbGVnYWN5LXRydW5rCis3OTEzIGNmODE4YjcwZGEzZTY1ZDY0MWZiZjliMjQ5YzIwNTg2OWNjZWExODggbGVnYWN5LXRydW5rCis3OTE0IGMyZGFlMmIxYTEyMzVkMWQyMmQ1NzIxZGJhMjE1Y2E2NzQ4Y2JlM2QgbGVnYWN5LXRydW5rCis3OTE1IGU5MjZjMzMxZWJiZjFkMzE3ZDdlNzE5NTJjZjAzNTcxMTBkNWMxMjIgbGVnYWN5LXRydW5rCis3OTE2IDFkYWU1YjFjOGRiYTEyYTUzOGY2YTgwZGYwZWJhYzE0MzE5NzFlMWMgbGVnYWN5LXRydW5rCis3OTE3IDllYWEyY2FlZDFjM2I4NDVhMGY4OThmMDVlNGQ2MTQyMjhhNjA3NmEgbGVnYWN5LXRydW5rCis3OTE4IDNjNmRiNzE2NWJjM2Q2MDRkY2E0Zjg2OWZmYWY5NGRlYjk2NjYzZjUgbGVnYWN5LXRydW5rCis3OTE5IDQ1NzlhNzcwMTk0OWRhYmRjNDVmZjlkMDQwMjZmNzE0MzVkYTg4ZWEgbGVnYWN5LXRydW5rCis3OTIwIDg4NjhlOWYxMzY1N2QzMGM5YzIzNzEwZjJlYTRhNWRkMGZkNzgwZTEgbGVnYWN5LXRydW5rCis3OTIxIDg3YzRmMDVhMTdlNTFmYzYwNzI0YTZlOTY3Yzc4OTk2NDUwNGRiY2IgbGVnYWN5LXRydW5rCis3OTIyIDhmM2UxNjEyMzYwMDQ5ZTE0NmI3MTg0MDdkNzg0ZGNlNzFiMDlkNDEgbGVnYWN5LXRydW5rCis3OTIzIDUxNWVkNzNkYTViMTRiN2I1YWVlODhhMTE5NjllNTcxOTQ5MmZhOGQgbGVnYWN5LXRydW5rCis3OTI0IDBiMWU2OTUwODkwNzM2ZDI0OTQxMzAxYmNhZWE2YTI3NGJmYWJjMDAgbGVnYWN5LXRydW5rCis3OTI1IGU5ZjYxNTg4NDZiMTZiN2MzODA4MzNlNDVlOWI4MzQ4MTdhMDZmODUgbGVnYWN5LXRydW5rCis3OTI2IDAxZjAyYmYyYjQ0MTY3YjY4NDZhYTM0MzM4NTFhMjZhYmMwNzA0Y2YgbGVnYWN5LXRydW5rCis3OTI3IDRhODBlNmNhN2NkMzVlZjQ3ZTMwMmU3YTNjMzI2ODMxMmYxNGZlOTYgbGVnYWN5LXRydW5rCis3OTI4IDVhYmRkZTk5YzllYWRhYTlkODA2YmZhZTg5ZTFiYzM5ZjY4Nzg3YTAgbGVnYWN5LXRydW5rCis3OTI5IDJhODc1MTk5YTcxZTg2MDIyYTNlYmMwODhhM2ZhOGUzYzE2OTBiMGIgbGVnYWN5LXRydW5rCis3OTMwIDljNmMwN2Q0NDlkZjU0MDM2MjI5NDliNzk4OGMyYTY2ZGIzY2Y0ZmQgbGVnYWN5LXRydW5rCis3OTMxIDBmNmM5NmY0OGUxYmE0NzZlNTY3OTI2ODNiNzllZTlhODI1OGRiN2IgbGVnYWN5LXRydW5rCis3OTMyIDY2MzU3OWEzYzdmZWI1NDBlN2ZhYzIwNDRiYzExMDliNDgwMzAxNGIgbGVnYWN5LXRydW5rCis3OTMzIDczMTZlZWNiMWU2YjMyZTYxOGNiMzA0M2Y5MWViYWI5ZWMzNTQ3NWIgbGVnYWN5LXRydW5rCis3OTM0IDUzNDQwMDk3MTExZmVmOGUzOWUwZTllNWM1Zjg3MjEwN2VhN2Q3NDMgbGVnYWN5LXRydW5rCis3OTM1IDEzMDUyZGMyZDVmNmU2ZTRiOTI0NmMxMmQwYTNmM2YzNzFjMzg1MDcgbGVnYWN5LXRydW5rCis3OTM2IGM1ZDdiNmZjZWUwM2QyMjVlY2QzN2Q0MzE1ZjFhZGEyZDdmYWFiYmQgbGVnYWN5LXRydW5rCis3OTM3IGFkNmM0MjdkY2JkOWU0ZDU3NGQ5YjA4MDkwNGU4OTY0ZmUwMTFiYWMgbGVnYWN5LXRydW5rCis3OTM4IDBkZWQ2M2JjZjVkZTI5ZWRkOTY5ZWRmMTM2YzZhZmEwNWI3YWEyMTYgbGVnYWN5LXRydW5rCis3OTM5IDYwZjY2NDlmZDIzMTBkZWJhM2MyMzZkY2M2ZmYzZWJjODdiZmVkZDYgbGVnYWN5LXRydW5rCis3OTQwIDk1Mjg1MWQ5Y2NlMjBmOGRjMWUzODQ5YWUwYzk0YzM0NjEwZGM5MzIgbGVnYWN5LXRydW5rCis3OTQxIGIwNTg0YmY3YjRmNTI5OTYyZDQ5MzgyMDYxM2QyOGE1MjQyMzVlMWMgbGVnYWN5LXRydW5rCis3OTQyIDA5ZTZiNGUzNDUyM2JhZTIwZTU4MjY2MDhhMTMzOGJlMDNjZmI4MDIgbGVnYWN5LXRydW5rCis3OTQzIDQzYzg2YzgxODFkNDU3NjYxZDU4MGU5Mjk4YTk2MmVjM2I4OWQ3MWEgbGVnYWN5LXRydW5rCis3OTQ0IDY0YjY5MzE1MTk1NmQyMWFkNWE4M2Y4NWEyZDhmYTI1OTAxMzIzMTMgbGVnYWN5LXRydW5rCis3OTQ1IDA4ZTg2ZDQzOTI4MWRmMDU2ODc0ZTZiYWRiYTA0NTNhYzdhMGQ3M2MgbGVnYWN5LXRydW5rCis3OTQ2IDQ3ZTgxYjIxNjllOTU0ZWMyNWFmNGM1MTdhYjVkNmUxYjFkZjM4MjcgbGVnYWN5LXRydW5rCis3OTQ3IGQ5MDI5YTRlMGYyYWM3N2M2ZmM4MTI5MTkxYzYwYzVmMzA0NTlhN2IgbGVnYWN5LXRydW5rCis3OTQ4IDhlNWQ2ZDMxMDNhZWY4M2U5NzJmYzIyNDliODIzODgxN2I0ZmNhOTcgbGVnYWN5LXRydW5rCis3OTQ5IDg0ZGIxNTRkNWI5M2U4ZDBiZTA1NjI1NTgwYmViZTgxYTJhNmY1OTkgbGVnYWN5LXRydW5rCis3OTUwIGMzZDRiZmI4Y2NkZjAxZDZhMzViZDMyOWNiNGI0NzY0M2I5MTllNzMgbGVnYWN5LXRydW5rCis3OTUxIDI2NjZlOTA0ZTQwYjBjY2Q0OGU5MmMyMTMyNjY3Y2MwYTQ5ZTdhZTcgbGVnYWN5LXRydW5rCis3OTUyIGE4NmVhMmNjZWFlY2RkNWIyZTc1NjhjNzUxZDZlY2FkMTg1YzMyOWIgbGVnYWN5LXRydW5rCis3OTUyIDA2MmFlZDhhNGNlMmM5MWM4MWI4MGUyOWYwMmZhZmYxY2Y1YTc2MWIgbGVnYWN5LXRydW5rCis3OTU0IGY0NGE1NmU2OTdmYjE3Y2U1NmI4NmNmNDE5YjYwNzZjMjY4Y2MzNDYgbGVnYWN5LXRydW5rCis3OTU1IDI2NmM5YWE4YzEyNzc2MTQ5MWJlODg4MWEwMzFlZDE2ZDQ5M2RkZWUgbGVnYWN5LXRydW5rCis3OTU2IDZkNTNlYmFlYzAyMTU5MWIzMzUwOTYwYjE4OGE1M2I2ZDNmYzRkYzIgbGVnYWN5LXRydW5rCis3OTU3IGI5NjE3NmM5YTg1M2I2OWQyMDFmMGI1MDIwZmE2ODM5YTRlNTA1NzQgbGVnYWN5LXRydW5rCis3OTU4IGYxYWZjNTY5MGIyYWI1ZjIwMWUzMDRmNTEzZGY5OTk0YmI0NzY4MjUgbGVnYWN5LXRydW5rCis3OTU5IDZmYTI5NzU2ZWM2YTI5NDI3NDdhZDhhNTM4YWQwZGZkOWVkMjVlYTUgbGVnYWN5LXRydW5rCis3OTYwIDczNTA5ZWZhNzI0YmNjZWNmOTg1ODc4NDY2NzNiNzNjNzUwMTIxMzUgbGVnYWN5LXRydW5rCis3OTYxIDU5NWE1ZmUxNDBkNDBjMjc2MzEwYWU1ZGVhOTAzNTYxMGRiNjhiZjMgbGVnYWN5LXRydW5rCis3OTYyIDQ3OGM2OGVhOTgyNzUxYTI1MmMyNmI4YWE5ZmYxN2JkYTZhODk0MjAgbGVnYWN5LXRydW5rCis3OTYzIDE5NWQ1YWExOTUxZTAzYzIzOWQ4ZjQwNThlNWU5OTdmY2RmOTc3YWEgbGVnYWN5LXRydW5rCis3OTY0IGVkMDM5NDQ4NDA4MmI2MmM5MDRmNmM2MDEzYTFiYTMxOTc0ZWNlMjUgbGVnYWN5LXRydW5rCis3OTY1IDJlODljNTVkOWEyOTVhMmVmYmM0NzhiMzA4MDJmNTlkMjhhZDA0MDUgbGVnYWN5LXRydW5rCis3OTY2IDJkMTMzMjgwMTI5ZjcyYzk3NWU4MzMyZGQwODcxZTY1MmVmZjcwYzcgbGVnYWN5LXRydW5rCis3OTY3IGMxYjQwYjA1NzdkMTk0ZjFlMWFlZDMzMDc3NGM1ODYwMWRmNGFkNWUgbGVnYWN5LXRydW5rCis3OTY4IDUwNmJhN2RmNDJmMDQ2MzFiNTE0Yjk2NWQ2NmY2NTZhMTRlODhiN2IgbGVnYWN5LXRydW5rCis3OTY5IGFmMWFlYTZiOTY4ZmQ2ZGFjYzEzMDNhNTVmZGIwMmRhNWUyNTdlNTQgbGVnYWN5LXRydW5rCis3OTcwIGVmOTNkNTFkYWIzNjJkZDU5YmI1MzU4MDdjNDg3NjBhNjg4ZjNlMjYgbGVnYWN5LXRydW5rCis3OTcxIGJmZDAzMTU0MDg4YjZhYzExMGYwZTBjNjU5OGZiYThiM2YyODQ0MmQgbGVnYWN5LXRydW5rCis3OTcyIGU2NTJhNzkzZjRlNzEyZjQ1N2JmNTU2MThhY2JmNmNmZWE1MjU5NjQgbGVnYWN5LXRydW5rCis3OTczIDBiMTk0NjYwMGJkZGVkOGYxZDBjODUxYWEwOWU0Y2FiNGM4OTdiOWMgbGVnYWN5LXRydW5rCis3OTc0IDM3N2Y4Njk1YTlmYmIyMDFkMDY3ZjMzN2EwY2Q5MzRhZWU4YmUwNjcgbGVnYWN5LXRydW5rCis3OTc1IDlhMTIyNTkyMzkxODFmOGEzNDI4YWNhZWVhMmRjNmYyYzQ2NjkxNWYgbGVnYWN5LXRydW5rCis3OTc2IGI5MDUzNzJlZGQ0ZmI0N2E3ZTA4NzI3YjZkOTZjMGM0ZGEwMDQxYTYgbGVnYWN5LXRydW5rCis3OTc3IDgyMTkxMmZkOTY1YTFkMGE0YTZlZDA5NWFmNGEwNTg4N2I2MTQ1MTYgbGVnYWN5LXRydW5rCis3OTc4IDQ2NjBmZmI5ZTQ4M2M3NTg3OWUzNDVjMTk1NWJhNzRmOGZjNzNjNzYgbGVnYWN5LXRydW5rCis3OTc5IDUwNTgxNjY2Yzg1NGZiMTA5MDY4MWYxZjQ5NjQzOTc2YzQ1YWY3ZjkgbGVnYWN5LXRydW5rCis3OTgwIGJhMDA1ZTRkYjRjNTM0MzZmMjM3MDZhODJiNjk4YjFhNDg1YzQxYWIgbGVnYWN5LXRydW5rCis3OTgxIGM4OGI5Yjg2ODk5NTMxNDczOGExMTRiNjBjYTUwNGE5MzBmYzM3MTYgbGVnYWN5LXRydW5rCis3OTgyIDQ3ZmEwMDg3NzkyNDJhMjc4YWMyZDQ3NThlNDk3NDQzOTdkODkyY2UgbGVnYWN5LXRydW5rCis3OTgzIDU5NDM4ZDE5ZDYwMzY3NWZmNzUwOGNlY2ZkZGE4MzY3ODQ0ZGRiYjAgbGVnYWN5LXRydW5rCis3OTg0IDU2YjQzYTQwYTUyODU1NzE3NTIyMzVjODdiYmQ3ZjEwNWU3YzJlMmMgbGVnYWN5LXRydW5rCis3OTg1IDM2NDNmMTlkNWNhMWE0MDA2OWYzMzhjODNiYWM5NGFjYzY2MWFhODggbGVnYWN5LXRydW5rCis3OTg2IGRkZWRmYTU1Njg0YTYwYTExYzM1OWZjYjIyODJkMzg3ZWRjYmY1OGMgbGVnYWN5LXRydW5rCis3OTg3IDcyOTBhOTMwYjRjOTU3YzViNTY0MTk5OWY3ZDdlMTBlNTE4MDc3MGUgbGVnYWN5LXRydW5rCis3OTg4IGZiMzlkMjg4NjY0YjUzOWViNGZhMGQxMTRmOGYxNTI3MzBkMjQ1NGMgbGVnYWN5LXRydW5rCis3OTg5IDE0OWQ3NDJiMDk3MWNlMWM1YzE4NDg1NDlkNzc5YWZlODAyYjZhOWYgbGVnYWN5LXRydW5rCis3OTkwIDRkZDUwOTVjM2I2N2U5Zjc3ZDg5Y2NhNjAyZTFjM2E5OTkyMzhkYWMgbGVnYWN5LXRydW5rCis3OTkxIDY0ZTJmZDhmMWQ2ODQ5MGRmYjU0Y2ExYTk3NmFlY2U4YzU3M2IxZGUgbGVnYWN5LXRydW5rCis3OTkyIDA2NGM4NjcxOWNhN2JkZmM2MTdiY2NmNzMyMGNhMDYyYjkwN2FlM2UgbGVnYWN5LXRydW5rCis3OTkzIDI0NTZkOGZmOWZhODIzZTI2NDY4ZTBiYjM1MmZiMTcyNzA0ZjQ3ODIgbGVnYWN5LXRydW5rCis3OTk0IGNhMTIzZjI0MGJhOWMzNjgwYmE0ODlmNjcxZmQ4M2NkYjlkMzhhZWUgbGVnYWN5LXRydW5rCis3OTk1IDU3NmI3ZDkyN2FmYjkwOWM4ZDRiMzJjZmE5MDBiOTg1NjRkNTc5ZWMgbGVnYWN5LXRydW5rCis3OTk2IDEzODE1MjczZTE3MWJiYTEzNTRmMzM2M2Q4NTUxYzgyZDYxZTMyMjAgbGVnYWN5LXRydW5rCis3OTk3IDMxZDY2MTk0YTc3YzlmZmNiODQ2NjgwOWVhNmY5YWM4MmQ3NzA5ZTQgbGVnYWN5LXRydW5rCis3OTk4IDg4MDNiZjQwNGI2OTQ2NjU1NjBjMTU3Y2ViYTFjNTJjYTU1Zjk1ODQgbGVnYWN5LXRydW5rCis3OTk5IDk4NmMzMDg3NjVhZTk2N2FhZDc1Zjg1MDIxMDdjZjUyM2ExNTgzZmYgbGVnYWN5LXRydW5rCis4MDAwIDBiYTlmOTE0YTcwODg3NmVlMDJlMTEzMTA0ZGYwZmQ4NzBhODFhZTAgbGVnYWN5LXRydW5rCis4MDAxIDlhMjM3YTRjZjNhMWY2Zjg3NmQ2NTA5ZmE3YTQ0ZWVjNmM2ODhkZmIgbGVnYWN5LXRydW5rCis4MDAyIDg1ODJmNzRhMWQyMzVkM2QzMzc2YTAyYmRhZWJlNDVlZDBiMzdhYTYgbGVnYWN5LXRydW5rCis4MDAzIGJjOWQ1NDUyMzg2MjgwMmI3ZTk5MTViOGZiM2MwNjM2MTY0OTllYmQgbGVnYWN5LXRydW5rCis4MDA0IDI2ZWZmNjllZDU1MjNjYmE0N2Y3ODJiOGE3MWZkMjE5OGM3OWNkY2UgbGVnYWN5LXRydW5rCis4MDA1IDMyNTg0NjNmMWNhMjc1ZTI2NmI5ZDY3NGIxNDk0MTYyZTE1NmFhNmUgbGVnYWN5LXRydW5rCis4MDA2IGY1ZGVjYzVkNzA3M2VmOWYyNTk4ZDI4NjllMjM0NTJkZmJmODBhMzYgbGVnYWN5LXRydW5rCis4MDA2IGM5NDk4YWM5ODgzNzI1NzVjZjcwMjhiODYzOTViOTAwYzliMGE4NDAgbGVnYWN5LXRydW5rCis4MDA4IDU0NTRmZTQ5MjVkMzY1NjViMmI2OGJmNDJkY2FmOTBhZWIzNTI5ZWQgbGVnYWN5LXRydW5rCis4MDA5IDMwZDU1OTgyNzA0Nzk2ZTFhYzYxNjM5MWQ3M2RmMWU0NzljZWQ1NGEgbGVnYWN5LXRydW5rCis4MDEwIDgyNmYyODk4NWJlYWRmNTkxMDVhNDI1NmM3M2ZkN2IzODMyNTA4MzIgbGVnYWN5LXRydW5rCis4MDExIDg0ZDNjY2E4MTRmYmQwZDY1MzQ5MjExMzk2ODI2YTFmZGRlZGI0YzQgbGVnYWN5LXRydW5rCis4MDEyIDIwYzJiNzE1MTg4ZWE5NzViZWM0ODJjMjBlMWZhM2MzZjBlNDRmNDMgbGVnYWN5LXRydW5rCis4MDEzIGM2ZjA0ZTk2NTUwODE4MTc3NzVkYjRjMTA0N2IwYjA4NjQ1YzhlOTggbGVnYWN5LXRydW5rCis4MDE0IGIxZGY5Mzg2NTVlMTVkNTM5MGI1NjVmZTJjMzJiM2VkYzAwMTBiODQgbGVnYWN5LXRydW5rCis4MDE1IDQ3MmM4ZTRjYzk3NDFmYmViZmZhYjI3NWM2M2FlYjA3NzFiYjQ5ZmUgbGVnYWN5LXRydW5rCis4MDE2IDhmODcxYTAzMGI4ZDE0MDI5ODU5MDIzYjk2NmVhMzU3OWYxYTdiMmIgbGVnYWN5LXRydW5rCis4MDE3IGEwY2MwMDVlY2NkNzg3YjRiMTk1NjZiODA3MTZmNDA5MmZiYmUwMjYgbGVnYWN5LXRydW5rCis4MDE4IGI1NzljNTkxOGYyY2IzNWIwYTE5ZjQ1M2UwZjAyMTdhYjIyZmRhYjcgbGVnYWN5LXRydW5rCis4MDE5IGNmYzEzZjNmMzg3Njk5ZGZhNGJmNzU5MzQ5MDQ2MDdhYzI0NWY4NDMgbGVnYWN5LXRydW5rCis4MDIwIDM3YzkzOWY3MGZhYzAxZDAyNjJlNDg3NjRmYzc5NThhNWI5MGUwYTggbGVnYWN5LXRydW5rCis4MDIxIDBiYmE5MTRiZjdiMmFjYTUxYWEzN2IzMWE5NjFmNzNkNzAyNzc0YmEgbGVnYWN5LXRydW5rCis4MDIyIDdlNDIyODc4MGZmOGMxYTM0YzdhOGQxY2M4YzdmMjU0YjBiNGM5MDYgbGVnYWN5LXRydW5rCis4MDIzIDZjMDdkNDRhNzA4MTA4Y2M1ZGI0NDBkNGRlZDc1NDY3MDE3NmIwOWQgbGVnYWN5LXRydW5rCis4MDI0IDk4ZDRlOTdkYWFjMDU0NmQ3ZmU2MGRhYjBkZDdmMDQwY2I4Zjg3MTEgbGVnYWN5LXRydW5rCis4MDI1IGEyMmNhZjEyOTM0NTM4ZTQ0NzBjYTg3OWJmZjQxYjVjOWRlNWM0NTggbGVnYWN5LXRydW5rCis4MDI2IDUyNjEwZWNlZTM2N2E3OTM4YTBiNDE4Mzk5YjdhMzczYWRmN2I5MGIgbGVnYWN5LXRydW5rCis4MDI3IDQzODIyZTRmYzI3ZDQ3NjQxYTRhZGMzZDVlZjY4ZmI0Nzc2ZTkxM2IgbGVnYWN5LXRydW5rCis4MDI4IDM0NTA5YzA1MjY2ZjIyOTg0MThlZjM4ZDBlZDA0YTdjOGNlZmRiNzcgbGVnYWN5LXRydW5rCis4MDI5IDJkZmM3MDdkNmU2ODUxOTViZTg2NmU4OGNiN2Q5OGQ2NjA4M2RhM2YgbGVnYWN5LXRydW5rCis4MDMwIDE4ZmQwNzg2OWIxM2M0OGI4YjUyN2ZiOTE1NThiM2QzMGZmZWQwZmIgbGVnYWN5LXRydW5rCis4MDMxIGI1ZTY0OGZkZTA5OWM5NmZlYzNjYzU5ZjZiMTZkMDEyMDM4MTQwYzMgbGVnYWN5LXRydW5rCis4MDMyIDk4OWY0ZmY3MzQyOTE1YWEwZjhlYWM2ZmRiMzY1MWJlNTkyY2ExNDYgbGVnYWN5LXRydW5rCis4MDMzIGZhOWZhZGE5MTZiNDUzMDM5Zjk5MjcwYmUxYjY4ZDc2NzNjMGFhMzMgbGVnYWN5LXRydW5rCis4MDM0IDQzMjllNDA3N2NmMzkxNTFjZjJiYzYyYmVkMGMzYjIyN2FkNjIzODcgbGVnYWN5LXRydW5rCis4MDM1IGVmM2JhOGI5OWRhMmVmZmZiYTNjZmZiNjA5OTIyMmJjZDllM2ViOWYgbGVnYWN5LXRydW5rCis4MDM2IDFlY2VkMWFhYWQ1YThhNjVlNjMzMGQwYjViYWVjMjUyNzhjNTlhZTYgbGVnYWN5LXRydW5rCis4MDM3IDhlYzI5OGIyNTVhMjBiNjcwYTNmYWQ4MmQ3ODMzZThhNWEyOTcxNjUgbGVnYWN5LXRydW5rCis4MDM4IDRkY2YyNmZlNGRhNTk1MWIwOTlmNWYwZGJlYmYyOGUwYWViMmJlOWMgbGVnYWN5LXRydW5rCis4MDM5IDNmM2QyZDQ3NGFjYTBmNWNhMTNhNDRmNzFhMjYwY2JlNDg0NjcwZTUgbGVnYWN5LXRydW5rCis4MDQwIGYxYjAzODc1OGJkYTkzYjMzZTVjOGNmYTgzOTEzYmFjNTFlOWUzMzAgbGVnYWN5LXRydW5rCis4MDQxIDZlOTQ0Mjc5YTMxNGYzMDA0MDZkZjBiZDJlZmYzY2UyNzA2NjZmZDUgbGVnYWN5LXRydW5rCis4MDQyIDVmZmFiNjVmOGQwNTA5ODhiOTA2ODc0NjUzNWYyZTRmNWY2ODU5MjggbGVnYWN5LXRydW5rCis4MDQzIDE5ZDRhMjg3NDY0NTRjMzQxMWMwZjY1YjNkZDI1YjM4YmZhODU3MTAgbGVnYWN5LXRydW5rCis4MDQ0IDkzMmNmYzVmYzEwNGIyNGQxMTg4OGI5ZWE5NDZjMzk3ZGRhNjhkODIgbGVnYWN5LXRydW5rCis4MDQ1IDEzOWFiMjFkMjYyOWJlNDk4ZjE4OGNjZjg1MzAzOTNiNzNjY2FlMDIgbGVnYWN5LXRydW5rCis4MDQ2IDgxOGNmZmYzYWE1ZDhiY2MxYjUwNjAyYWNkNmNhM2U3NTNlMzFjODcgbGVnYWN5LXRydW5rCis4MDQ3IDExZTJlM2ZmOWZjN2IxOWViYzQwYjk0MDg1OTllZDU1MjIzOGQ1ZDggbGVnYWN5LXRydW5rCis4MDQ4IDNlNjc5NTMwYWZjOWVjNjRhY2VjYmUwZTcyNmM2NmYwOWM5NmE2MTEgbGVnYWN5LXRydW5rCis4MDQ5IGIyMzE4NTVhOTQ3NDRkYmRlMjM4NDJkYjQ3NzdmNjViNjVlMDhjOGUgbGVnYWN5LXRydW5rCis4MDUwIGJmOWYxMDRhYmU3OGE1NWE5ZGU2ZGYxNTk3NTM5MmIzNjE2OGUwODkgbGVnYWN5LXRydW5rCis4MDUxIDg0ZDdjYzVlNjNjZGI3NjVjZGUwYTE5YThmNzMyZmQ1MTg1ZjRlYWYgbGVnYWN5LXRydW5rCis4MDUyIDZhOWYyNjNlMmI0OGNhY2M4Yjg3ZTkzNjc3OWYxYTgyOGI3MDY1MWYgbGVnYWN5LXRydW5rCis4MDUzIGM3ZDgxMmU0YWYwZDNkOTNlMzg0MjBjMzA0ZGU1ZjFiZWY2ZDQ4ZWMgbGVnYWN5LXRydW5rCis4MDU0IDZjNzJiOTFjOGI4M2QxYWMzYjQ1MWY1NWUxNTc5MDI4MTExNWUyMDcgbGVnYWN5LXRydW5rCis4MDU1IDkzN2Q5ZWMyYjU2MDUxN2EyZGEyZjQyYzJlMGFhOTE4NWMzYjFjODQgbGVnYWN5LXRydW5rCis4MDU2IDQ4NmQ1ZTk4OTM4YmJhNGQ0YmZlMTQ0NjM4OTgxNDcwNzNmN2U1YmUgbGVnYWN5LXRydW5rCis4MDU3IGNlNTk5NzNhY2NkZTdlMDdkMjlhY2Y0Zjc0NTYzYzNjNmUwOGNlNTQgbGVnYWN5LXRydW5rCis4MDU4IDdlMmFkOWUzMmUwZDVkZDUzYjhkZjcyM2MwZDVkNjljNTcyMmY2YWQgbGVnYWN5LXRydW5rCis4MDU5IDg3ZDVkN2ZhOGQwN2U2Yjk5NjY0NWZmOTJiNjY2ZGEwNmVjMWNkMWQgbGVnYWN5LXRydW5rCis4MDYwIGVkYmNmZWQ3ZmM3YmZjODllNWU5Y2ExYWVhZTEwNDdlMmY0NzE0ZjMgbGVnYWN5LXRydW5rCis4MDYxIDg1YzUwNDNjOTMxNjc3ZWNhYmU1ODZlODRmMGM1NjQxNTJmZDc1YWMgbGVnYWN5LXRydW5rCis4MDYyIDU3ZGJkYzJiMzAyMjZmMTAzYTAxYWY3YTNlNTg5ZDI4NTQxNTM2YmYgbGVnYWN5LXRydW5rCis4MDYzIDc4NGJhZmI0N2UxZjZkYmY3NGJlMGI2OGZhODhhYzExMmZlYzVjMjYgbGVnYWN5LXRydW5rCis4MDY0IDZhNDhhN2U3MTFkODZjYTIyYWFlYjUwNjEyNzFhYmUwMjliYjE3ZDAgbGVnYWN5LXRydW5rCis4MDY1IDUzY2RmOTRiNjUyYjgzZTU2NTJmNWM3MTBlOWViMzRmZGQzOTgyOGQgbGVnYWN5LXRydW5rCis4MDY2IDc5NWNhOTc1ZDk2Zjg4ZTI4M2NiZGY2NmJjNTljMzEwMjExYThiZjQgbGVnYWN5LXRydW5rCis4MDY3IGYzZjY1Njg3ZTQyNjBkYWRmN2RkYzA5ZDFlNjgxMTA3NjM3YWFiOGQgbGVnYWN5LXRydW5rCis4MDY4IGRhNDc1ZTEwN2E2OGY3NjhkYzRkYTMxYTBiZTgxNzUwYTkzZjU4ODIgbGVnYWN5LXRydW5rCis4MDY5IGUzZDUyNTgyZDM2MDc4MTBkNWUzZDkyYWZjNDA0OWRkZDc3OGQ4MzIgbGVnYWN5LXRydW5rCis4MDcwIDQ1MWM3Y2NmMzZiNjdmMmQxYWY4ZjQ0YzAwNjYzZWM2MTUzYTMwNjQgbGVnYWN5LXRydW5rCis4MDcxIDRjNDYyMWFhOWU3Njc3ZTYxMDk2M2MzY2QzMDIwMWIyMzZkODZhMTQgbGVnYWN5LXRydW5rCis4MDcyIGM1YTU2N2FmMTNlZTdjZjNjYTkwOGRkZGFmOGNiNzNhNzAxMTViZjUgbGVnYWN5LXRydW5rCis4MDczIDJlMmJiZTk4NTYyMDIyMzU0ZGJkNTlkNTEwYmNlNjYxZDExNWIxOGMgbGVnYWN5LXRydW5rCis4MDc0IDU1MTY5MTVmZmVlN2Q3ODI3NzFiMmYzMzc3NjhkMzAyMzdlMjE4ZDggbGVnYWN5LXRydW5rCis4MDc1IDFmMjA2YzkxZGFlZTE4MDBmOTNjOWVhYzM1OTM1MmUzYjliODUyZTggbGVnYWN5LXRydW5rCis4MDc2IGI1ZTUxYWU5ZjgzMmU1YTM5ODYwZTg0MmQ4NDE4YTlhMDdjMjBiNzYgbGVnYWN5LXRydW5rCis4MDc3IGQ5NTRkYzI0M2ViMDdhYWM1M2Y5NjUxYzcxYjA4ODMwY2IzMDUwYmMgbGVnYWN5LXRydW5rCis4MDc4IGE2MTAyM2JjYTBhOTc0Mzc5ZGE3MTU0YTMzMGExNDU4NzkzNmQwNWUgbGVnYWN5LXRydW5rCis4MDc5IDAyOTRhNjdiZmJkYjQzN2ZhY2FjNDIzOGZkZTUyMjg5ZTFjZmZmZWEgbGVnYWN5LXRydW5rCis4MDgwIGY0MzU1OWQyM2IzZDY4ZTk1ZWI2MWJhMzdhMTcxZWJkMGZlY2RjMGIgbGVnYWN5LXRydW5rCis4MDgxIDg1OTgwZWE1ZTgwNWNmOTkwZDI4M2RlOGRmNTI4Y2UyNWZmZTQ0ODQgbGVnYWN5LXRydW5rCis4MDgyIDg5YWY1YmY4Zjg3MzIwNDdjZDZiOWYyNjFhNzk3ZTlhMjYwNWFhNWIgbGVnYWN5LXRydW5rCis4MDgzIDQ5NWZiZGU2NGE3M2I1ZGI2YjlkMmM0YmMzYjkwOTI1ZDBiZWY5Y2EgbGVnYWN5LXRydW5rCis4MDg0IGNiYjRlM2NmMDg2ZTIyMWFkM2RmYjU0NGMyMjE5MTIwMjM2MzlhYTUgbGVnYWN5LXRydW5rCis4MDg1IDc5ZTQ5Y2JjZTJlZmQyZjBjNmI5YzM4NzA5ZjBjZTBiMzIwMjczZWQgbGVnYWN5LXRydW5rCis4MDg2IGYyOGVlYTAyY2Y5NDQ2MmJiOTk1ZmFiMjQ5MzE4OTY0ODA4MmQ4MWEgbGVnYWN5LXRydW5rCis4MDg3IDEwZTljZmEwMTBmMDg5NzYxZmU3OWM5NWNkN2NjMTNmNjcwZTY1NTQgbGVnYWN5LXRydW5rCis4MDg4IDVlZDNhMjFjYzEyMjljMTc5ODg1MjQ1M2MxZTdmZDRkOTFiNTMxYTMgbGVnYWN5LXRydW5rCis4MDg5IDhkNDA1ZjcxMjgyZjk2ZTAxNjhkODYwZGYxMjdhNTAxMjViYjBlODUgbGVnYWN5LXRydW5rCis4MDkwIDE5MGUzNWJiYzE1YWUyMzI3ODdkZTdiMjA5NTMxZmQyMDBjNmIyNDcgbGVnYWN5LXRydW5rCis4MDkxIDcyNTRlZTJhOGFiZGE3MDg5YWQxNDBjZWVmMmNlNjg0OGZjMWZhMTQgbGVnYWN5LXRydW5rCis4MDkyIDNiYTA4ZDZlOWI3ZjI4NDFiMjgzNTRlMDM2OGMwODYyZWJiMzcwYzIgbGVnYWN5LXRydW5rCis4MDkzIGJhZTJjMDE4OWY4NTk0YThhMzY2NjIzNzM2NjcwZDA3ZjU1NzQ4OTggbGVnYWN5LXRydW5rCis4MDk0IDcwODU1NTc0NTE2Yjg2Yjk4YzUxNThkZWExZDExNDI2YzJhZDBhZDMgbGVnYWN5LXRydW5rCis4MDk1IGZkZDFlMWE1MzBhZjhjMDdkNWMyNzIyZWVhZjJiMjYxOTA3NjNjNDkgbGVnYWN5LXRydW5rCis4MDk2IDdmZGE3ODQxZGI5MTgyZjhlNzg0N2FkMjA0MjE1MjRlNzFhNTRhYjcgbGVnYWN5LXRydW5rCis4MDk3IDA1NTZlYTY4N2E5N2Q4MTgxMDU5NDBhY2RlODZmZWFhN2MxZDFmM2UgbGVnYWN5LXRydW5rCis4MDk4IGUxNDEzZmE2NGI4MzFiNzQ1ZGZhNDVjOTc5NzIzYzI2YzNjMTY0YjggbGVnYWN5LXRydW5rCis4MDk5IGY4ZTQ1MmExZjY0NDgzYmNmNmVkMGIzY2QzNGIwNWNhNTJmMWJiNWUgbGVnYWN5LXRydW5rCis4MTAwIGZhNmM5MWE1ZjQxYjc4Mzg3NTVlMzM3OGY2NTY0NjllZDI2ZDlkZjIgbGVnYWN5LXRydW5rCis4MTAxIDMyYmFmYzllOWM0ZmMzNmM4MDlhZjYzMGYyNzBhYjQ4MGJkMjc0NGQgbGVnYWN5LXRydW5rCis4MTAyIGFjZmNlMDE1ZGZkZDM2ZGVlMGFhYTFiNWExYzBjYjllZjc2MDQ4MGMgbGVnYWN5LXRydW5rCis4MTAzIDY5NmU3NTQwNjRjMzdmMGI2OTMxYmIxYTUwYjM5NWQ4NTBmYzFkYjIgbGVnYWN5LXRydW5rCis4MTA0IDRkMTJlNmU5YzI3ZDFlNTM2OGE3NDUwYjkzMTlkYjM1Njc1ZmIzMGQgbGVnYWN5LXRydW5rCis4MTA1IDk5MjQ4MjVkYTRiM2E2ODUwMmUwMTA3MmU3OTIwMzFiNmJhYjJlZDMgbGVnYWN5LXRydW5rCis4MTA2IGU2YTIzM2ZjOGI5YjQxNGFkMjY4Mzg0NmYxMjY1YTUyY2ZiZDdjNWMgbGVnYWN5LXRydW5rCis4MTA3IDhhZjhlZTc5N2MwOTUyY2Y3MTJmODM2ODY0OWRiYjQwMjFkNTYyNGIgbGVnYWN5LXRydW5rCis4MTA4IDhjNTRjNzc3Njc0NDkwZTgzYmMzYmMwN2RiODIxZGFkYmZiNTNjZmYgbGVnYWN5LXRydW5rCis4MTA5IDAwZmM0MTNhM2I4YmM3NmViMjhlNTQ3MTkyNDQ5YjMyZjNiN2JhODUgbGVnYWN5LXRydW5rCis4MTEwIGM2OWM3NTlmNDM2NmM1NjA1NWQwNGFiOGRiMmRhZTgwMTVhYTdjMzIgbGVnYWN5LXRydW5rCis4MTExIGVjOTdmNDFjN2EwNGViNDNkODk0ZTc1ZDQxMGIxODRjZGE0OGMyY2QgbGVnYWN5LXRydW5rCis4MTEyIGFjYzU1ZDcwNDY3NDc4ZTBlZWU4NGFjNTk0MjQ4OGQ5NDU1OTYwMGQgbGVnYWN5LXRydW5rCis4MTEzIDc1YmE2NGM1NWYyZTEyYzk1MDRjZGVhYjU2MWRlZGQzODg0NGI0MDAgbGVnYWN5LXRydW5rCis4MTE0IDE3Y2E3ZTRlOGZkNmU4MWZkOWY0OGVjMDVjNzg3ZWU2OGIwZmQ3OGEgbGVnYWN5LXRydW5rCis4MTE1IGY5MTQzOWQ4ZjY2ZTQ3MjZmZjFmMjEwMTk4NzhhODBkODY3YWM2NmUgbGVnYWN5LXRydW5rCis4MTE2IDQzNzA1NjQ3ZmViOTI5N2Q1ZWUyZmE1MmFhYzYzN2Q5NjRmZmQ1NjQgbGVnYWN5LXRydW5rCis4MTE3IDU3YTI2MWZhNTk2YzZmMjY0YmM3ZGQ3OTAyYTQ1MzllNzYyOTVkZjQgbGVnYWN5LXRydW5rCis4MTE4IDY1ZWE0MWYyZDM0ZDgwZjc3NWU5MWZjZmUwNzJhOWY1MjE0NmY1N2QgbGVnYWN5LXRydW5rCis4MTE5IDBlZjcwMmI4MDQ2YmE2ZmEzOTkxODU3ZDQ3NGNlZjViNTJiMGI4MDcgbGVnYWN5LXRydW5rCis4MTIwIDk2OTQ5YjlmNDJjYjkwMjRkNTM4OWIyOThkNTVhZTc4NjJkY2Q1MmEgbGVnYWN5LXRydW5rCis4MTIxIDdjMjA5ZGFiZDhjODAwMDJjZjZlZWZlZDA0NjFmMTQ0ODA4MjkzYmYgbGVnYWN5LXRydW5rCis4MTIyIGU1OTM3NGUyM2ZkZjZlNDY1NmJjNzVkMWE5MTMxYjIwMjY1Zjc3NmUgbGVnYWN5LXRydW5rCis4MTIzIGM2M2UyODNiYjJlNDY2MTQ4ZjdjMWFmNTRkMDZjMGM0OWQwYmVmZDcgbGVnYWN5LXRydW5rCis4MTI0IGI0OWQ4MDM3YTVjYmFlM2Y0MDRjNDdmNDZmNDMwOTkyNmJjMDRkYWIgbGVnYWN5LXRydW5rCis4MTI1IDBjYzk3ZTc1YTM2MTM5MjlmNGM2MDk1NjA1ZDgxZDU5MjAzNzQxMjQgbGVnYWN5LXRydW5rCis4MTI2IDA3ZTFhYWIyMzExNTM0MjNlZWZkNTUwMzU2NWI2YmI4ZTNkMThiM2QgbGVnYWN5LXRydW5rCis4MTI3IGQ0NWRjN2ZlNDJhZjllM2U5ODYxNzhmN2QwZmFjOTdlYmU0YTNhZTYgbGVnYWN5LXRydW5rCis4MTI4IDk1ZDZlMTc5NTVlZmM4YmJkOTI0YTQ2NDU1MmU5ZmM1M2VhMGJhNmUgbGVnYWN5LXRydW5rCis4MTI5IDYwMDlkNTM5MDU4NDhjZWY5MzkxZDVkMmUwZjc4NDAzOWY2YjMwMDQgbGVnYWN5LXRydW5rCis4MTMwIDMwOTYwMmM4NzkyOTI0MTY5Y2YwNzljOTE5MzQxYjEyMDc1NGU0YTcgbGVnYWN5LXRydW5rCis4MTMxIDhlMTRkNTRhNjQxOWQyOWM5ZjNhM2ZmMDJiMmYyN2UzMTgzMWE1MzMgbGVnYWN5LXRydW5rCis4MTMyIDBiNTc0MmQzMTg5YTI0MGVlNGUzOTczOWFlZWNiNzA3ZGFhMzRhYWEgbGVnYWN5LXRydW5rCis4MTMzIGQxNzVjYWM1NTBiOThhNjE4ZTQzNTU3MmFlZjU1MzliODZlYzkxMzcgbGVnYWN5LXRydW5rCis4MTM0IGRkZWQ0MzliN2I4YWIxNjEyMTliNzdjNzFlNzA4ZWE3OGU2NjkyMDEgbGVnYWN5LXRydW5rCis4MTM1IDEyNjVjYTQ0ZjA0YjliY2M5ZmY5OWRkYjljZTI4NmQwOTJkYjc1YjUgbGVnYWN5LXRydW5rCis4MTM2IDZmOWEyYzg3NDAxOGVkOGJmZGFlMDQyZGJmYmI1ZTQ5ODJmMDQwNzUgbGVnYWN5LXRydW5rCis4MTM3IGVmZGVlN2Q0MzI3MDRkMDdhMzc1NDVkZTBjMDVkNGJlZWY1ZjRhMDIgbGVnYWN5LXRydW5rCis4MTM4IDNkYjc1NGFiZmYzNjJmMDkzZWQ4YjgxZjMzODRmY2U3YzkxMmRjYTAgbGVnYWN5LXRydW5rCis4MTM5IDZiZDNhMmNlYzM1MzBmZTdhMTFkMTJiZTY1NTc0MDc4OGY3YmNjN2YgbGVnYWN5LXRydW5rCis4MTQwIDE4MTQ5OTgwZWNlOTgzNjllNzM3NGJlNjJhZTU4YTUwYjFlN2UyMDYgbGVnYWN5LXRydW5rCis4MTQxIDFkZmE0ZjE3ZDhmZmY2MzFkZTBkNzkwMjYwZDQ3YzEwNTA4NTg0NTMgbGVnYWN5LXRydW5rCis4MTQyIGI1YmJlNTIyMGY2YmFhOTYxMzFjOTA2NjRmZjgwY2JmNzUzZTViZGIgbGVnYWN5LXRydW5rCis4MTQzIDM0NzA2ODlhOTdkNzJhMGFlYWMwMTczOTBkODQzODEzNzljMGUzMzYgbGVnYWN5LXRydW5rCis4MTQ0IDRhNTg0OTdjMTRhODE2N2IzMWNkOWQ1ODBmMTdhMjNhZDFiMjI5NGUgbGVnYWN5LXRydW5rCis4MTQ1IDY3Njc5ZjJlZDIxNzYzYjE0NmY4NDEyOTk5NjE3ODAwZTQ1OWEwNjAgbGVnYWN5LXRydW5rCis4MTQ2IDg1MTM0Yjk3YWU0ZDU0MDcwNmMzNmU3ZGZkZDIwOTkyMGFiYWM4N2MgbGVnYWN5LXRydW5rCis4MTQ3IGMzNTAxYTlkM2MyMDU5ZjFlYThmOWExNDVjMTQ1YzIzNjQyNjdiMDUgbGVnYWN5LXRydW5rCis4MTQ4IGQ2NjMwNDk2M2NhN2ZlOTE2ODBjZWQ2N2ZlYTc1ZjU4YzllZDUwNmMgbGVnYWN5LXRydW5rCis4MTQ5IDE5MjZlNjQ5MmQzZjc4ZDU1MGI1Y2JmODEyMzU4NDhmMjFiNmE0YjkgbGVnYWN5LXRydW5rCis4MTUwIGE5ZmZkZmYwNTU3Zjk1ZWY2NTlkMzY5NWYxZmUzN2ZkYjMyODA1NTUgbGVnYWN5LXRydW5rCis4MTUxIGU1ZGU3MDczMDBlMTdmMDc1NDczZTk3OTM3NjE5ZDFjMGZjYWYwZWYgbGVnYWN5LXRydW5rCis4MTUyIGZkNmFjYWQ3Y2M3YTk3YTRkZDQxYjU2ZDc5N2I0YWZjNDYyZWNhNzUgbGVnYWN5LXRydW5rCis4MTUzIGVmOGExNTkwMmE0ODdhYzE4YzMxYzljOTk3MjE0ODE2YTRhY2ZiMDQgbGVnYWN5LXRydW5rCis4MTU0IDZmZGExZTZlMjYxNmNiNTdiMmEwYTAxYzUzMTg2YTE3M2UwNGZhMmEgbGVnYWN5LXRydW5rCis4MTU1IDY0ZTYxMTY1NTg5YTc5MzE5YWQ4OTZhY2Y0NGM3YTI5MzJiNDRlNDYgbGVnYWN5LXRydW5rCis4MTU2IGQ1OTExY2E4ZDRlYjNhZjRjZmMzNGY2ZDdjOTQ5MDM1ZjQ2MmIxMjIgbGVnYWN5LXRydW5rCis4MTU3IDEyZDY0Y2RiYWFhMjNlMmMzNzQyYTU1MDllMzI3MDkzNjBiYzBhMDUgbGVnYWN5LXRydW5rCis4MTU4IGQ4OGNiNGQyNmYxM2VkMzgyNTljOWZkNmI2NzBlZDliZjQ2OGIzMjYgbGVnYWN5LXRydW5rCis4MTU5IGVhNzJiZmUzOTViYTIxNjFlZTlhNWQ1NzAzM2Y2ZDY0MzE3ZGE4NzIgbGVnYWN5LXRydW5rCis4MTYwIGNkMWFlNjJlZDJjZmZjM2I4YWJlMGFmZmM0ODJjNTNiMzRmMmZkZTggbGVnYWN5LXRydW5rCis4MTYxIGEwODMxZGUyMzU4YzMwZTIyODI0MjUwZGQ0YjAzYjA1Mjk1OGJjNzcgbGVnYWN5LXRydW5rCis4MTYyIDA5ZDg3YWQ3NTI3ODk4N2E5ZjU1Y2I5ZTZiM2E2YWQwNWVhMTE2Y2QgbGVnYWN5LXRydW5rCis4MTYzIDIwNzdhMzJkODU4ZWY2NTI1Y2YyZDYwMzM4MTViOTM2ZTA0ZmQyNDMgbGVnYWN5LXRydW5rCis4MTY0IDhiN2ZhY2U5YjFhNzgyYTY5OTkxYTQwZTkxMjJkZjJlMTFiMGRkYjAgbGVnYWN5LXRydW5rCis4MTY1IGU3OGQxZTBlY2M1OTg3YzIzYzQ3NWYzZTYyNzRjMzMwNTllNDZlMTEgbGVnYWN5LXRydW5rCis4MTY2IDUyYzEzZjEzODllZmFkNDg5OWIxOTkwY2UwZGU0ZTI2YzBlNzQzZGEgbGVnYWN5LXRydW5rCis4MTY3IDRlODE3YjJhZDk5MTBiYzk2MDM2ZjI5NTViNjI2NzcxYTdhNDJjOWMgbGVnYWN5LXRydW5rCis4MTY4IDM4MzgzYWRhMzg4ZTlhMDI0OTFmOWY3ZTVhMjJlZWViNGQ4NjlhY2UgbGVnYWN5LXRydW5rCis4MTY5IDQ0MjhmMTA4NGI2YzY3MDM4ZWFmOTQzZThjMGE2ZGE3ODY5ZWVlMjYgbGVnYWN5LXRydW5rCis4MTcwIGE5N2ZkZTI4MThmYmU0MGYzMWQ3NzBiMGNmYjZiOTIyYzFhMDI4MDAgbGVnYWN5LXRydW5rCis4MTcxIDAxMDkwOWRmYzMzZTJlMDZjMmY2Y2QwYjg2MTY0M2I1MDM2OGEzM2QgbGVnYWN5LXRydW5rCis4MTcyIDAyZWE5ZDAyMTQyNzQ3NjFmZWRiMjk4ZTM0M2NjNzMzYzNlMGJiMTUgbGVnYWN5LXRydW5rCis4MTczIDliNjIxYWMwOTIxMjFjMjU2Y2ZmMzQ1NDE3YTE4N2UxOGMwZTkwZmUgbGVnYWN5LXRydW5rCis4MTc0IDg4YjBiMmEzYWFiNTZhNWE5OTcyZWEwMjVmZmRiYTllZTczNjdmMWYgbGVnYWN5LXRydW5rCis4MTc1IGJhODYwZGMwYTU4NTE0ZjE2OWM4MGUxMmU3NGUyNTI0ZGVhYWUzNTkgbGVnYWN5LXRydW5rCis4MTc2IDc2ZmQ1MjgxZjk4YTdiOGY4MzhkMzg5Zjg5NjAyYTA1NDZiZDBmN2YgbGVnYWN5LXRydW5rCis4MTc3IDYwZmNhNDc4Mzc5MzU2ZjhkOTNkYzRmMmExY2UyMjUxZWJjZGU3ODcgbGVnYWN5LXRydW5rCis4MTc4IDNhMWJiMWM5OGMxNDBlOGI0ODI0MjkxZjFjMTcyZGUxZjI2ZDUzMjYgbGVnYWN5LXRydW5rCis4MTc5IDU3NjY1NzAzODFmMjRhZTk3OTMyODBjZTUxNGZlODQ1MTE1ZGI1YWEgbGVnYWN5LXRydW5rCis4MTgwIDAzZGQxZGVkNWNiM2U4NjRlNGZlMzAwYzVkNzA3YTlhZmJjYmNjNjMgbGVnYWN5LXRydW5rCis4MTgxIGM2NjIzNmI3Y2M2Y2E0YjRjMmM0YmFiMThhYWUxY2QyNjdlMGZiYTEgbGVnYWN5LXRydW5rCis4MTgyIGJhMDliNDA3YTBiYjkzZjY0YTU1NjUwZDFhY2M5ODc2ODNhYzk5OTMgbGVnYWN5LXRydW5rCis4MTgzIGY4YmJkNzFmYjgxOWE1NDM5YmQ3MjFiOTgwM2I3MDRmNTkyNzJhMTIgbGVnYWN5LXRydW5rCis4MTg0IDQwNGJhMDE3YWQ0MjdiODAwMjIyMjVlOTA1OWFjYTc4NGY0MzQwMzEgbGVnYWN5LXRydW5rCis4MTg1IDk5Y2QzOWY2YTUyZGIxMzBkZjI4MmMxYjcyZjkyYTllYWI3ZmQwYTQgbGVnYWN5LXRydW5rCis4MTg2IDY3MTgzMjQ3MGFhMTEzNDc2ZWQ1NDBmMmFmMWFlNGUzODU4YjU5MzYgbGVnYWN5LXRydW5rCis4MTg3IGYxZGEyOTQ3NzJjZjJiNWZkOWZlMzE2ZWM4ZWNiN2VmOGJjZTc0YjUgbGVnYWN5LXRydW5rCis4MTg4IGZiMTcwY2U4Mjk1MTI5Mzc0ZDQzYzI4OWI1YzZlYjcxZWRiYTRhNGMgbGVnYWN5LXRydW5rCis4MTg5IDQzM2M5ZTdlZGI2MDg5MDdmYmQ5Mzk3NmQ1NzFlMGNhOGVjZmZiYTggbGVnYWN5LXRydW5rCis4MTkwIGVjZWU1NWJhYWNlMzA4OTZmMWIyZWIxZDNkMzdhYmFjNDlmM2MwZDEgbGVnYWN5LXRydW5rCis4MTkxIGRlZTBhNThhOTEzMjIyNjgwOGEzNGRhODVkZGViNDFmMTM2ZTAzODAgbGVnYWN5LXRydW5rCis4MTkyIDM3NjM1ZWVhM2JjYzgzOTdkZTQxOGE0MmFmMzg3YWNmOGQ4M2UxYjEgbGVnYWN5LXRydW5rCis4MTkzIGNlNjRhODEzOTIxNjY2MDU1YTkzMGI1MjQ5NGIxMTExYjRkNTNlYWEgbGVnYWN5LXRydW5rCis4MTk0IDNjNjc0MzZhMjhlNjFiMDBjNWJkNTA2NDNmMzU4ZTQ4ZTcyNjg0ZjMgbGVnYWN5LXRydW5rCis4MTk1IDU1ZGZmODE2OWNmNTRjMDMxYThkODQ2MTE4OThjYTMzOGMyOWNkODQgbGVnYWN5LXRydW5rCis4MTk2IDNiMzhlOGRiNWYyMWZkZmVjZDY0NzQwZTU4NzJmNmVkM2RmZDM5OTkgbGVnYWN5LXRydW5rCis4MTk3IDYxM2JkMjM3Y2Q1NWM1MjExNGM5YzYwNWE0YWJmODNkZjJhNzhlMGIgbGVnYWN5LXRydW5rCis4MTk4IDEzOGIxNzZlYzQwZjQzYzRjMGE1Y2M0NDdkNjU1MjI2OGE3NmU5MDggbGVnYWN5LXRydW5rCis4MTk5IDZjOTczNjg2NTYwODkwNTVkOGJiZjU1YTM2NWQyZDVlZmQyYWFhMWYgbGVnYWN5LXRydW5rCis4MjAwIGJlZWUzNTFmMWY3MmFlZmY1NjFlZGZmODY2YTkyODFmYjlkYTYxN2IgbGVnYWN5LXRydW5rCis4MjAxIGY5YWVhNzM4ZDQzNTFlZDE0MDE4NTA0ZjA2MThlZTljMWExNzU2Y2YgbGVnYWN5LXRydW5rCis4MjAyIDlhM2IxMTVhYTQ5MTkwZWZmZGMwYjdlOWM5ZWJlMzc1NWRiMGJmNjggbGVnYWN5LXRydW5rCis4MjAzIDU3YTdiYTE0MTJlMjY1ZWJiMzAyMTc0YzQwOTE2ZTY3M2Y5OTAyZDIgbGVnYWN5LXRydW5rCis4MjA0IGUwZGEzZDg5ZDRiNjVmYmFiNWQ3Y2IzM2VhZDA5MTA4MTFhZjBhY2QgbGVnYWN5LXRydW5rCis4MjA1IDA0YzI4Mjc0YzI4MTgxMjA5ODA0MDg3NGZiM2RiMjk5NTlmOTZjMWEgbGVnYWN5LXRydW5rCis4MjA2IDYxN2YyMDMzOTRlNzNmODVlYjMwNTg0OGI1OWM0ODliNjFhNzU1NTYgbGVnYWN5LXRydW5rCis4MjA3IDk5NjA3OTc0NDU2NjVkNjJiYzg5ZDVjMjY0ODQxNzMwZjYzMmUxMzQgbGVnYWN5LXRydW5rCis4MjA4IDc1NzYyYzY3MjAwY2FmNzcxNDE2ZWM0MjI5Yzg1YmNkODFkNzJjODkgbGVnYWN5LXRydW5rCis4MjA5IGYwMjdkZDBhODVlNGU1ZWRjYjBhMWRkMDQ5ZDIzN2U2YjM5MWE1ZGYgbGVnYWN5LXRydW5rCis4MjEwIDhmNmNjNzE3ZDgxN2MwN2JmYTdjNzM2NGY2YjYwY2Y5OWFkYjdlYjcgbGVnYWN5LXRydW5rCis4MjExIGE5NGIwYTEyMmM5ODY5Mzg2ZDNiZjVmODg4YWY2NjcyMGIxYWY1MTIgbGVnYWN5LXRydW5rCis4MjEyIDYzNDcyOGQ4YmM5OGNlYmI1N2U1MGM5MWJiZTAxN2MyZTNmOWEwZWQgbGVnYWN5LXRydW5rCis4MjEzIDRkY2E1MzI5ZThmYzZkZDM1NmU3ZmE1ODE1ZDIwNTJiMmY5NGNhM2UgbGVnYWN5LXRydW5rCis4MjE0IGQwYzZiNDlkNzEwMThlMzc0NWIwNjA2ZWQxYzQyMzRmYTg1MGI3OTkgbGVnYWN5LXRydW5rCis4MjE1IGMyOWZjMTdkOGU0ZmQ0OTc4M2I5OWU3YjZlZmMxM2YxMzQ5ZGMzYmQgbGVnYWN5LXRydW5rCis4MjE2IDcxZTExMDgyZDczMjM1NDczZjE1ODJhNWYxMmM2OTRiYjFlMDhmZjggbGVnYWN5LXRydW5rCis4MjE3IDZhMjE4ZmE4YmE5Yjk4NzRkMGVkY2U0YmRjY2Y4Nzg4MmFiYThhY2IgbGVnYWN5LXRydW5rCis4MjE4IDEzODQ2Mzc5MzQ3ZGE1MGU4MWQ3OWE1N2UzYjMwZjg3MmI0ZDNjY2QgbGVnYWN5LXRydW5rCis4MjE5IDgyN2EyZjNlNjQ4MzJhYTAwN2YyZmJmMGZmOGUyNmY5NmE3OTBlNWIgbGVnYWN5LXRydW5rCis4MjIwIGM2MDZkZDYxNTQ0YWUwN2IxOTc3NWM1MWQ5ZTIyZjI5NmRhOGJkNDkgbGVnYWN5LXRydW5rCis4MjIxIGVhOGEwYjA5MDkwOGJkNGQ2OGFmOTE0YWVjYmRlMjExMTc4M2UwODQgbGVnYWN5LXRydW5rCis4MjIyIGUyMmVlYTVkMTI2ZDliNDA4ODhiNjQzMDM3ZjNmZjNmNDRiMjBjNjggbGVnYWN5LXRydW5rCis4MjIzIGFiZTg2MzQ0NjZiMjM2YzE1ZjM4YjMzNDY5MDhiNGU2OTQ4YmM1OTEgbGVnYWN5LXRydW5rCis4MjI0IDQ5ZTBlMDcyZDljYWI1OTdjOWZmYWE4ZTc4MjViNjBjNWQxNjYwNWUgbGVnYWN5LXRydW5rCis4MjI1IDFjMzRhMGNlNzg1ODU3M2IyZTMwNzA4YmNjZjc2YTI5ZDhiNjJlOWUgbGVnYWN5LXRydW5rCis4MjI2IDIwZTYzOTk4NmZiOWJiMmQzYWRiZmE3MWMxODBjYjBkNGZlODE4MDcgbGVnYWN5LXRydW5rCis4MjI3IDVhNzQyOWFjOTBjODNiMWJiMTQzZTljNWIzNjExMzhlNzg5MGM3NDEgbGVnYWN5LXRydW5rCis4MjI4IDg3ZDY1OGExMjhmOTFiNWM2ODJjMTZlMmE2NTBhN2U5MDRiYjNkNzIgbGVnYWN5LXRydW5rCis4MjI5IGZhNmQwMTNjOTQyYjA3NzVhN2JhZTI0MDFmODJmYjljMzQ2NWNmODMgbGVnYWN5LXRydW5rCis4MjMwIDY0YmM3ODJhNDJlYzczMTU5YWVhZjA3YjQzZDA4YzVjODVhMDA1NTUgbGVnYWN5LXRydW5rCis4MjMxIDllZDI2YWZlZWFhNTJmY2IxNjU4YWQwMjM2ZTk0MDZlNTkyY2MyNWIgbGVnYWN5LXRydW5rCis4MjMyIDE4YTYzOWRiMDQ4Yzc5OTBhZDc1YTQ1NjIyNTBkNzRmNWM1N2NlOTUgbGVnYWN5LXRydW5rCis4MjMzIDRiNDJlZWExMGEwMjllNjMzZmI4ZTM2NzgxOWMzZDY3YTEyYzhjYjkgbGVnYWN5LXRydW5rCis4MjM0IDhjMGY3NDdmMTE0MTlhY2ZkYWRmZmIyNDE2Y2ZiNjM2YjQxMGZlNDcgbGVnYWN5LXRydW5rCis4MjM1IGJmZTliYTc0YzE5ZWQ3NmVkNzhhMzAyN2VmMmJmM2NmY2M2NjljNjggbGVnYWN5LXRydW5rCis4MjM2IDkxOTM4NmZiM2U1MDQzMzIyNzU3YmFiOTAzNTI3MjY1MWVmNzc0MmUgbGVnYWN5LXRydW5rCis4MjM3IDIwMWM4ZDA2ZTNiNzg2NzUxOWZiMzdmZDgxNzZiYmVlZDYwOTIwMjggbGVnYWN5LXRydW5rCis4MjM4IGE4ZTMxZDkwNWQyYzBmZTk3NmYwMmQzNWUzNDczMjkzYTVlNDA5YmEgbGVnYWN5LXRydW5rCis4MjM5IDc5YmI5OTk3Y2U1ZmFhMGI3ODZkNDYzZTgzYTFlZDllNGZhOTAwMDMgbGVnYWN5LXRydW5rCis4MjQwIGZkNGU5ZjI5M2M3N2E4YTg0ZTRmYjg0MzJiZjM1NjM2ZDZiZmI0YjMgbGVnYWN5LXRydW5rCis4MjQxIDYyZmU4MDBkMTcxYTc4MGMwZTA1MTk5ZDZkMmNkOWQ5NWMzMTNiODEgbGVnYWN5LXRydW5rCis4MjQyIGQ2NDIxYjNlZDFkYTY1YjQ4OTAxYTM2MDFhYmIwMjU5NzZhM2Q3NzYgbGVnYWN5LXRydW5rCis4MjQzIDMwOWFhYjRjMGI5OGU1NzQ0NWFkOTc3ZWJiYTdmMmZmYmViNDAxOTcgbGVnYWN5LXRydW5rCis4MjQ0IDAzYTU3YWY3MjIxODljYmZhN2RmYzkwOTdiYTZmZDRmZmYzOTNkMmEgbGVnYWN5LXRydW5rCis4MjQ1IDdkZTU5ZjQ3ZTg1YjljYWRmMTc3OTlkZWRkMTQxYjA4MDQ0ZjE1MjUgbGVnYWN5LXRydW5rCis4MjQ2IGI3NjQ5NDkxYWU5MjQ2YTRkZWNmMzk1NjFkMzYzNWQ2ZjQwMjBiZDggbGVnYWN5LXRydW5rCis4MjQ3IDM4ZWYwOTE5NjRmMDIyZmEzZWI5NWVlNDU4ZjE5ODMxMWNjNDhkZTYgbGVnYWN5LXRydW5rCis4MjQ4IGZiOGYwNzllNGVmZjg2ZjY1OTVjOGRkZjczYTgyNDRjYjFhYjQ0MDIgbGVnYWN5LXRydW5rCis4MjQ5IDVmN2RkYjdjYTM0N2NmOGYwNWUwYjk0NWU1Y2U2YzVkYzhjNzAwMTEgbGVnYWN5LXRydW5rCis4MjUwIDc4MzE5MjIxZWRiMmYyOGNkYWRkMWJjZDJmMThkOGU2ZjY0YmRiNTEgbGVnYWN5LXRydW5rCis4MjUxIDNlZjI1NjNlODNlZTM5MDkwYWNkNjEyYjE3YjdmODYyMjdkODE2ZWIgbGVnYWN5LXRydW5rCis4MjUyIGM2MGJlYjU2MjVlNzAxNjVmOTc4ZGFkM2MxYjMwMDk4YjI4ODRhY2IgbGVnYWN5LXRydW5rCis4MjUzIGY2ZGUwNTAwNTU3Njk1YWE3MThmZGYwZTczMjM5ZDM4NWU2YzgzZTggbGVnYWN5LXRydW5rCis4MjU0IGI0NDljZDg1ZDUxOTcxOTkzZjBmMGQwZjdjMzY2YTc0MGUxMTljY2YgbGVnYWN5LXRydW5rCis4MjU1IDA0OWQ5NGZmYzA2YTAxMjY3YmUyMTU3ZmUzZTI5NGZjNGJkMTEwMTIgbGVnYWN5LXRydW5rCis4MjU2IDM0Mjg0ODdiMjlhMzg1Yzk2MjYxMGExMmExZmQ4ZTA3YzQzZjAxYzAgbGVnYWN5LXRydW5rCis4MjU3IGJiMGFjZmQ0YjcyMGFmZDdhMDUxZjBmNDg0MDU4YjYyZTk1ZWE1NWYgbGVnYWN5LXRydW5rCis4MjU4IDNiOGQwMDQwM2RiODVkYzM3NzMzZWFhNzNlMDI4NTczMGUzY2I2NzggbGVnYWN5LXRydW5rCis4MjU5IGI4M2VjZjZmODczMDBjMWI0NzcyMTNjMmJjOTM2NDE2MjRiMzY1YzcgbGVnYWN5LXRydW5rCis4MjYwIDljZmJjOWJiNjQyM2IwOGJiOGFmNDViYmYxZGM4ZWU2Y2I4MTY1MDEgbGVnYWN5LXRydW5rCis4MjYxIGMwNDM5MDFmYTFmZWJjYmZhMjRjYzdkMDNkNTZiZWU5OWRkY2ZhOGYgbGVnYWN5LXRydW5rCis4MjYyIGIyNDcyOTdiZTlhMDI1ZWM2NGI1NTAyNmM4MTEyM2UxMGEzNTlhZTcgbGVnYWN5LXRydW5rCis4MjYzIGM1Njk4NzNlZWIxNWQ4MmYxYmViNDg3N2ZkOGM3NzI4NjM5NmNmYTMgbGVnYWN5LXRydW5rCis4MjY0IGI0MjBiNjRhNDA5NjdiZjc1NWY3MzA0ZDA4NWU4ZTI2OWJkZDM3NGIgbGVnYWN5LXRydW5rCis4MjY1IDMxY2FlMzc0Zjc4NjU2NzczMWNmYmFkZmY3MDc5ZTllMzVkZDVlYTUgbGVnYWN5LXRydW5rCis4MjY2IDg4ZTZhZTEwNWFiNTgxMGVmOGMyOTE3ODhjNmYwYzlmMjcwYjQ3YTQgbGVnYWN5LXRydW5rCis4MjY3IDFkNDE3ZTljNzJjZmFjN2I2M2M2ZTliZGFkMTJhMDNhMTlkYmY2YTIgbGVnYWN5LXRydW5rCis4MjY4IDJiNzM3MmVjZDUwNzJiMGE0YmIxYWY1YmNjY2IyYjA1MGMwYzA4ZmMgbGVnYWN5LXRydW5rCis4MjY5IGRmZmFiYzYyMGU0ZTQ2ZDAxOGRiNWQzNmI3MDgyN2IxZDZhNTU4OWYgbGVnYWN5LXRydW5rCis4MjcwIDRjZTc4MjdhMzYyMTdiNjQ4ZjcxNDQyM2E5ZjA0Yjg1NzQwYTE2YjYgbGVnYWN5LXRydW5rCis4MjcxIGQ3OWM0ZmJiMTk4MmExZTMzNjJkOTM1OGZiY2U3MzhhYjA1YjE0YTUgbGVnYWN5LXRydW5rCis4MjcyIDNkMWQ4MDU1MDg3ZmI3ODNkM2I4Yjg2MzUwZDk1ZmMwYjY5MDgwMDggbGVnYWN5LXRydW5rCis4MjczIDczY2Y1ODI2MWI4MjM0ODEzMzMyZmQwZjk0MWEzNGQzOTk1ODQ2ZmMgbGVnYWN5LXRydW5rCis4Mjc0IGQ2ODlkMmM0Zjg0MjBiMDE5NTk1Y2Y1YzMyOTFjM2QzYTU0ODJkMTIgbGVnYWN5LXRydW5rCis4Mjc1IDI0YThjNTZkZTIxNDQ0ZWJmMmFlZDk0Y2Y3OGYxNDA2ZDgwYjJiOTggbGVnYWN5LXRydW5rCis4Mjc2IGU4NjJkOWIwMDI0NmFiZDdjNmM0NDkwODRiMWFkMWZjMzM0NmE0NzQgbGVnYWN5LXRydW5rCis4Mjc3IDdlOGVkOTY1MGZjYzExOGM3Mzc4MGNlMjQ4Nzc4NjhlZDQzYjI0MGEgbGVnYWN5LXRydW5rCis4Mjc4IGZlM2U3YTA1NTgzNDM2OTAxYWIxMDU0NjhmYmNmZjk0NDliYTMyNjEgbGVnYWN5LXRydW5rCis4Mjc5IGU0MjM5MWQ2NzZkMTJkMDZlYjkyNGJlZTcxMmI4NGIwMGRlNjI5MDMgbGVnYWN5LXRydW5rCis4MjgwIGI1NmQ1MjdhNDMzZjVhNTA1NzkyODU1YzA5Y2RhNmQ3Zjg4ZTRhMjMgbGVnYWN5LXRydW5rCis4MjgxIGI3YzYwMGVjYzI3ZDQyMDBlMzFhZDhiYjlkZmFjMzBhZjRiY2RlNWUgbGVnYWN5LXRydW5rCis4MjgyIDUxOGQ0ZjBjOGZjYzQ5ODAyNzYwMTgyYTkwM2E0YTg3M2NjZWY5Y2MgbGVnYWN5LXRydW5rCis4MjgzIDVhOWYzYzIwNzMzNjY5ZjVjMGI0YWU5ZTQ3ZmMyMDhiOTBlZTIzZWQgbGVnYWN5LXRydW5rCis4Mjg0IDUwODAzY2E1OGIxZjkxZTI1YzljNzJhNjhjMjc2MGE0ZjJjN2U1NzcgbGVnYWN5LXRydW5rCis4Mjg1IGRmZmQyMjE0NmFhYjhjY2NmOGEzNmMxNDlkNmIzMDdkOGI2ODYzMTcgbGVnYWN5LXRydW5rCis4Mjg2IDUxMjBlYTg2YjI1ZDZkMTFhZWVjODU0YzY0ODgxNmM2NjU1ZWMyZjEgbGVnYWN5LXRydW5rCis4Mjg3IDZkNDBlYmQ5MjIyNzkzMDIyMDk5YjkyZjAxNDA3ZjQzNThkZmNmMmIgbGVnYWN5LXRydW5rCis4Mjg4IDU4YWViODcyZDkxNTBkMDAyMTg1M2U5NGNjMmI4MTg2NTg1MDMzZDIgbGVnYWN5LXRydW5rCis4Mjg5IGY1M2QzNjNlZjY3YTllYTI4YjM5OWQ1YzYyMjkyYjI5ZWUxZjEzMjQgbGVnYWN5LXRydW5rCis4MjkwIGQzMjBjYTg0MzUxMjIyNDAyN2I3MzNjMjcxOGQwNTIyNWEyNWFiZDEgbGVnYWN5LXRydW5rCis4MjkxIDU1ZWE1NmVlMjBmNmJkNTY2NDM3MTJkN2E4MDQwMmY4Y2M0YTIyYTEgbGVnYWN5LXRydW5rCis4MjkyIGQ4YTRmMGQ5MjIxZjA3NWIxNjAxZjUzMTNhMzFmNGZhZGQyNTY4MzQgbGVnYWN5LXRydW5rCis4MjkzIDZhMGQ3Y2YxOWQzOGZhYzU3YjliOTRiNjc5NzgyMWMxOTc2ODhhMTAgbGVnYWN5LXRydW5rCis4Mjk0IDQ4Yjk0ZGU4NWJmMzVmMjQ0MmVhNTQ4YTdiNGUzNTQ1ZmQ2ODZhYzcgbGVnYWN5LXRydW5rCis4Mjk1IDM0NjhlYTg2NDVjYTQyMzhjMmI0NTAyNDM1MWU1ZTBmYWU1ZDFiYzQgbGVnYWN5LXRydW5rCis4Mjk2IDBhZThjN2QzMzQ2NGVlMGM3YTNjMzBiMTg5MTQ3NzlkMDUxMjM1MzggbGVnYWN5LXRydW5rCis4Mjk3IDkxZGQ5ZDc0ZjNiM2NiMDZhZTBiMTc2MGM3MTNmMWVjMDhmYTgyOTIgbGVnYWN5LXRydW5rCis4Mjk4IDc4MzIxYTg0ZDczZTVjZDM3ZDE3NWY5OTVkZjI2YWE3YzY4ZDE0OGUgbGVnYWN5LXRydW5rCis4Mjk5IGQzZjJkZjhjMjI4NmMwNWViODUxZGFjMzBkOWRjMzZkMTBhYTc0NzggbGVnYWN5LXRydW5rCis4MzAwIGFkMDRkMzg3YWNlZWVlODFjZWVjMjZjMjllMDA5OGRlZmU2OTg3MWYgbGVnYWN5LXRydW5rCis4MzAxIDNjMTVhZTBmYjZhZDc4NTViMDQwNjRiZWJjN2VmN2I4OWZiNWFhY2EgbGVnYWN5LXRydW5rCis4MzAyIDBjMzM2MTJmMTFkNmIxNjI3OGYzOWI1YWIyOGFhYWUwNTIxYmE3OWEgbGVnYWN5LXRydW5rCis4MzAzIDA5NjVkOWZkMTg2MmRkMjMzN2VmODRmY2FhZTk1YTY1MjU4OTY5OGQgbGVnYWN5LXRydW5rCis4MzA0IGE3OWQwY2VmMTBhMTlmZGQwNGRkYzk2NzM2ZmI0Yzg5MjliYjlmYzggbGVnYWN5LXRydW5rCis4MzA1IDlmYTJiZDhhMmI3OGE1MjZkODAyOWI1NTA0YzIyMWM1NDRiYmZkZWEgbGVnYWN5LXRydW5rCis4MzA2IGYxMTI3ZDZmY2Q3NDI0NTQyMDUzMTEwZWIyNGIzMWExMTIyMTBhMmMgbGVnYWN5LXRydW5rCis4MzA3IDIyNmJjYTg1ODQ2ZjQxOGY5NTk5MzEyZTY0YjNlN2I0YjZhMjJlNTMgbGVnYWN5LXRydW5rCis4MzA4IDk4NWI3YmY0NzU1YjZjZmU5MWE0MTI5MmZhMWYzY2EwNWYzODBlZjIgbGVnYWN5LXRydW5rCis4MzA5IDI4NWZiNmE5OWU1Zjg1ZjU3N2JkMTFhZjY1MjA4NjIzNjUxNThkYzcgbGVnYWN5LXRydW5rCis4MzEwIDg2YzI3OWE4NDhlYjJkNTAxNjEzOTRkMTM3ZTE3YTYzNWFhZGUyNjUgbGVnYWN5LXRydW5rCis4MzExIDkxYWVhMWFmNjU0ZmYxNThmMTEwODllZjFhYjI0NjcxMDIyM2E1MWEgbGVnYWN5LXRydW5rCis4MzEyIGI5MDYzZjZmODExY2JmYjk4ZTQ4NGY5MGQ1NWQzNDMzM2E5MmJiNWQgbGVnYWN5LXRydW5rCis4MzEzIDNhNzk4Njc3NTA2Y2YwNjc1ODZmYjkxZWNlZGMwMGM3YmI4ZWQ1NWQgbGVnYWN5LXRydW5rCis4MzE0IDJlOTE3ZjkzNzJlMDNhNTRkNzA4ODdhNzFmNzE0MzdhOTI3NTkyNjggbGVnYWN5LXRydW5rCis4MzE1IGVkNWRiMGMyYTNmMzQ0MTcxOTZjMTI4ZTBhMjMzZWFmYmJjNjFiZTQgbGVnYWN5LXRydW5rCis4MzE2IDE3ODZjYzQxOTg4NmVhNjZhMTZjM2M0MGYzZTZmNzYyMzAzY2VjMTYgbGVnYWN5LXRydW5rCis4MzE3IDlmOGZmMDJlZGU2ZGVlYjVkNjc3MDY0MWY4OGU4NmZjYjkyYTg5YTEgbGVnYWN5LXRydW5rCis4MzE4IGUxNjk5NGYzZDEwMmFjNmFmZDk3MGNkMjgwZjQ3NGM0NTk0YzZmNWMgbGVnYWN5LXRydW5rCis4MzE5IDM1YjE0ZDc4YzYxZDk0MzJkNzU1MzBkMTJkZDQ5MzA0YzcwNjBhNGMgbGVnYWN5LXRydW5rCis4MzIwIDVhOGE1YTFhMDQ3NTdmNjBkYjZiMGJiNjBiNTY5NjlhNzVjMzFiZDkgbGVnYWN5LXRydW5rCis4MzIxIDU5NjFmMTJhZTQyNjU4NmEwMGE2ODc0ZTVmZTdkYTViMDE4MDE5Y2UgbGVnYWN5LXRydW5rCis4MzIyIDZlOTk2ODZiNzZkYTBjZTJmNWQ4ZjBkZWJjNzJmNWFjZWFmM2U2MzkgbGVnYWN5LXRydW5rCis4MzIzIDg1MmExZmE2MmE3YzRmNmUxZmQ1MTU4ZDAzMzZjMTM3Njc1MzJmM2IgbGVnYWN5LXRydW5rCis4MzI0IGZmOWMwMTEwMDc5YjdlNDYyMTA0MGUxNDU2N2Q2N2M0ZTRjNGQ2YmEgbGVnYWN5LXRydW5rCis4MzI1IGY2NGE1Zjc1MDY5NjYwMzk4MTE1NzVhMTBlOTZhMzU1NGZiNjUwNGQgbGVnYWN5LXRydW5rCis4MzI2IDBkNzg1MWIzN2FkMmQxMzBiOTcxMTYwZmQyMjc5OGQyMzg5Y2I3MmMgbGVnYWN5LXRydW5rCis4MzI3IDZmNjdhMWJkYTE1YTIxOGIxZWI1MDYyN2MyYmU0NjNhYmM5YjgwNGYgbGVnYWN5LXRydW5rCis4MzI4IGVkYWYxY2I2M2RjMGM4OWYzMmY1ZWYxMDhiMzBmM2MxNDM0NDI0MmEgbGVnYWN5LXRydW5rCis4MzI5IDRhNDc3OGU2MWMxNGViMTliNDc5YjczYWUyZDk4NDVhNDI0ZWM3YTAgbGVnYWN5LXRydW5rCis4MzMwIDkyYmNmNGNjOTQyMTE5YWU5YzdhNzJlYzk5YzlhOWQ4N2RmYmNkMDUgbGVnYWN5LXRydW5rCis4MzMxIDM1OGQ3MDg4MmFmNjI5YTcwN2NlZDQxM2RhNGRmZTMxNTZkNTYzYWQgbGVnYWN5LXRydW5rCis4MzMyIGZkZDhjZWExODFjMDk5NGNmODY3ZWVhZDQ2YzA4NWFmZGM0OTBmYjYgbGVnYWN5LXRydW5rCis4MzMzIGM0ZGQzMzI5ZmQ3ZDA0NGFkNjBhNWViOTRmYjE2YTcyOTY4N2I3NGYgbGVnYWN5LXRydW5rCis4MzM0IGE2NjdkNDhlNjhiODU2OTcyMjJmYzg1NTljNGE3OGI2ZDZjYzRmMmMgbGVnYWN5LXRydW5rCis4MzM1IGY1ZjdjNzM5NTY4NzYwZWJhNTFkZGZiMzA4NDBlNmRhMjE1NjEzOWEgbGVnYWN5LXRydW5rCis4MzM2IDY0ZjljZTk5OTQzN2JkOTI4MmMzODk3MzNkZmRlYmY5ZjFiMDE4ZGUgbGVnYWN5LXRydW5rCis4MzM3IDcyOGEwODMyNDJhMmE2ZTcwOGVhMmJkNjRmOTU4NTQ3MTk1NzdkMDIgbGVnYWN5LXRydW5rCis4MzM4IDMyM2Y2YTE2YTc2NDJjZjE2MmIwNDllZjFiYmE1NWYyZDYyZGRiMDYgbGVnYWN5LXRydW5rCis4MzM5IDRkYmI0ZWM0NGQxNTBlNjIyOWFjOGNmN2VkM2UzNGQxMTFjOWQ4NzIgbGVnYWN5LXRydW5rCis4MzQwIDBhYzJjNzQ3MDUzZmRiNzRmODhiNGE0ODE2NDAxZTU0MGE3NjMyNzkgbGVnYWN5LXRydW5rCis4MzQxIDg3NTE3ZThlYTUxOTFiNWJkMjcwMDFmOWFkOWUxNTg1MjcwNDAyY2QgbGVnYWN5LXRydW5rCis4MzQyIDk4NDFiY2UzN2M0ZDYzOWI5NTc0OWQ3ZDdhNjk4NjZkMWY0ZmM5MmIgbGVnYWN5LXRydW5rCis4MzQzIGYxYzAzMjc2ODczYTYwYjQ1MjEyZDc1NWM5NDk1N2ViNThmM2E0ZGYgbGVnYWN5LXRydW5rCis4MzQ0IDk3ODM3ZTY0YzU4YzUyYzI5N2RmMmU5ZWIzNDdiZmJkNmQ2NGZmMzYgbGVnYWN5LXRydW5rCis4MzQ1IGU3NDJlNDFhNGIxMWJlZmM2N2QwODljMDg4NzU4ZmZhYTRiNmY3NjMgbGVnYWN5LXRydW5rCis4MzQ2IGYyYmY3YmNmOGI4YjY3ZWNkMTg2ODliMjg0N2I3MDc4YzkzNmUxZDMgbGVnYWN5LXRydW5rCis4MzQ3IGZlNGYxZWIxNGQ1M2YwYjRmMDY5ZmZhNjRkMjIzODNkZGUzOTc4MzUgbGVnYWN5LXRydW5rCis4MzQ4IGVkOTFjYjdkMzg3NjE5MjhiYmM2ZGNlZGMyMmFiYWZkMDQ5MWRkODUgbGVnYWN5LXRydW5rCis4MzQ5IGRkMGU5YjY0NjYxNjg1NTI4YTljMjdlZGRkNThhNjBhMjcwODBhY2UgbGVnYWN5LXRydW5rCis4MzUwIGM4YThjZjk1ODExYzM4Y2YyNzY0M2NjNzUzNTJmNjc2OWJjY2Q5ZmIgbGVnYWN5LXRydW5rCis4MzUxIGM2N2FkNWJjZDRiMjAyM2UzZjA4MWUyMDE3MjA5OThlZTIyYjE0Y2IgbGVnYWN5LXRydW5rCis4MzUyIGQyNDA4NTFjYzhjNTc3NWZiNTI4ZjI5MDA4Yzg5NzA2ZTNjNzIyNzQgbGVnYWN5LXRydW5rCis4MzUzIGEyZDNjMmE2MmEzMGEzMThiMTQ3MTQ4YjU0YmMwZTdiZmMzNjY0YTQgbGVnYWN5LXRydW5rCis4MzU0IDA1MzRlNTRlODEwNjJjODA1NjkzZTVjYWRkNzMwOGVmNDRlZDhlNzAgbGVnYWN5LXRydW5rCis4MzU1IDY4ZjczMTJhMzFmNjI5YWQ5OTA3NzM3YTcwMzBiYzg4NzdiZTM5MGEgbGVnYWN5LXRydW5rCis4MzU2IGE3NzVhNDQxMjRkOGIwYzJhNThhMGQyYTBmNjE2ZDJiYTM5YjhiZmEgbGVnYWN5LXRydW5rCis4MzU3IDUzMGRkYjcwNzY5NWU3ZmMxNzNkMDc0ZjA1MjAyZmQ4Mzc2ZWQzZjMgbGVnYWN5LXRydW5rCis4MzU4IGExMDFhMTdiOGI3YjhjN2NiNjE4OGEzNjI3MjllNDlmOGIyZTBiZDQgbGVnYWN5LXRydW5rCis4MzU5IGQ2NTEzZGE5MjQ5ZDM5N2QwNGM3NzJhODZhM2M3MDMyNGYzOWU4YTIgbGVnYWN5LXRydW5rCis4MzYwIDc5ZDE5MzFmMTcyMjllZWNmN2Q4MzkzMzY2NGFmNDU5ZDc0ZTAxY2EgbGVnYWN5LXRydW5rCis4MzYxIGI1NzFiNmVlN2YxN2UzNzhkMTYyYjJiM2RiZWI0YTRlZjExMjg4YzMgbGVnYWN5LXRydW5rCis4MzYyIDc2YjFkYTIxZjNhODk4MWQwMmIyZjVlZDFjZjA2YTMwYmI1NjI4YjYgbGVnYWN5LXRydW5rCis4MzYzIDRjNTJhMWI2YTU0ZDYyYTYzM2U1ODBiYmY1YjAxMDEwNTJjODlmNTQgbGVnYWN5LXRydW5rCis4MzY0IDJhMTcyYjQ5NTBiNmE2YzAyMjkxN2IxODczNjU1MGYzZDY1OGEyNjIgbGVnYWN5LXRydW5rCis4MzY1IDBjZDc0ZjkxODljNmE3YzlmZDE0MDdmNzVlZGIyMGUzOThhOWZjMGIgbGVnYWN5LXRydW5rCis4MzY2IGNkZDEyNWRlNzViZjZmNjIwMjFiYjhiNmExMjQ3ZjFiMTJiZmE1Y2QgbGVnYWN5LXRydW5rCis4MzY3IGYzMzQyYjM4MTkzNWE0NjQ5OWI2MGU3NzFiNTQ0ZjY1OTU4ZDQyOTAgbGVnYWN5LXRydW5rCis4MzY4IGM0ZDU0N2MwMWU5MzRlZDg1ZDUyZjA1N2ZmZTYxYzVjZDQ5ODM4NDggbGVnYWN5LXRydW5rCis4MzY5IGI5NmNjYzc4MTJmMmYwODNiYThjM2IyNjM5MzM3MzZlNmE4YzIzZGIgbGVnYWN5LXRydW5rCis4MzcwIGM1NzliOWY5OGE1YTcxNTYwNTI2ODkxMWJjMTBiYzA1NjhkZTVjMzEgbGVnYWN5LXRydW5rCis4MzcxIGUyZGY5NWI3YmU3ODlhMjRlZmNjMGY4N2UyMzAyNjQwNGNiYWViZWIgbGVnYWN5LXRydW5rCis4MzcyIDQ2Y2QzNTJjNzYzODlmZDIyOTJjNGNmMGI5ZTI2ZjRhMzQyZTc4MDUgbGVnYWN5LXRydW5rCis4MzczIDY3MDIyZDI4YTY1ZDJkZmU4YTlmYTIyYzczZTJjMDQ2ODQ4NDE1YTEgbGVnYWN5LXRydW5rCis4Mzc0IDdkMzVhMDU4MDM1NmViZGNkNjBlYjQzZmU1YjA1NDhhYzcyMWVmYmYgbGVnYWN5LXRydW5rCis4Mzc1IDI1MzM3N2E0MDY0NDg0NzU1OTljZTAyNzBhOGRjNTAwOTI3YzBiZGIgbGVnYWN5LXRydW5rCis4Mzc2IGY4MmI2MDhhZmI1NjhkZjZiMDQ4NmI3NDQyNGEwOTkxMjkyZDczMTIgbGVnYWN5LXRydW5rCis4Mzc3IDQ2NjY2NGFkMzhlNGNlZjE5MWY4NGExYzJjNzM4YzFlZjQ4NTAxOWYgbGVnYWN5LXRydW5rCis4Mzc4IGJhNDlhNmVmNzIxNGY3ZjA0YTE0MzVjNTcyNzRiYzJkYTE3NmJmYTAgbGVnYWN5LXRydW5rCis4Mzc5IDQxMDJmNDQ3MjAzMjliMDZkMjNhZWZhZmI1Mzc4MDBjNGU0MzBjMTEgbGVnYWN5LXRydW5rCis4MzgwIGI2ZTQ4YTRjZGQxZTY4YjI5ODJlNmExYTIyMTZiOTBjNTQ3YWY3YjggbGVnYWN5LXRydW5rCis4MzgxIGM1MGNjMjhhZjdjNzlmOTA0ZjRjZmExZTJkZjBjNzE5NjEwYTdiOTIgbGVnYWN5LXRydW5rCis4MzgyIGMyNDIzODQzYTI2ZjcxNWVjMjRiN2ZjNDA3ODZkNDNhZTRiYWY2ODAgbGVnYWN5LXRydW5rCis4MzgzIGYzNDQ2MDlhNDhlNGVhOTZkMzQwY2M3YTc1YjljNzhjZjEyNjdiY2UgbGVnYWN5LXRydW5rCis4Mzg0IGFmOTJjZmZkMDYzZjUzYzA5OTQwYWJkNDQxZWU1YjQyNWQzYzFlMmEgbGVnYWN5LXRydW5rCis4Mzg1IDRkZDllYTFlOTRhODgwMWM5NWVjZDg0ZTY3N2M1MTU4Y2FiZDJjMzggbGVnYWN5LXRydW5rCis4Mzg2IGY4MjU5Y2E5ZWVkMzdjOTllM2E2YTFlMjZkZGQ1MDI1ODM5YWQwYTcgbGVnYWN5LXRydW5rCis4Mzg3IDg5NzcxYTQ2Y2EzNTRkNTE3YjZiYjI2MzlkYjczZGEyNDc5Y2I0MGMgbGVnYWN5LXRydW5rCis4Mzg4IDY5ODY3ODFhMDdlZjBkYzE0MzgwZjFhZDA2ZGJhZDAzYTY3ZTU0NWQgbGVnYWN5LXRydW5rCis4Mzg5IGY1MjdjMTJmMmU1NTI4ZTVhZjRjYjM1MGRkNjRkZDA2OThlOGZlOTYgbGVnYWN5LXRydW5rCis4MzkwIDZiMzlmODYzM2NhNTQ3YTFkODcyNDc0NzdhZjRlYjYyMzMzZWIwZWIgbGVnYWN5LXRydW5rCis4MzkxIDUxNTViMmMzNWUxNTlmNTlkZDE3NTEzNGJkMDQyMzgyYTgxYzJlMzUgbGVnYWN5LXRydW5rCis4MzkyIGRiOWNmYjEwODYyM2MyNWFkZTUxODg3MTQxY2VjYzNhNmE4ZjRiNjAgbGVnYWN5LXRydW5rCis4MzkzIGQyYzgwMzgwYWQwZGU3NDIzZGM2ZmU1ZDQxZGJjNzlkNmY1YTNkMzEgbGVnYWN5LXRydW5rCis4Mzk0IDA0YTFiODJjODMyYjFhN2UxN2Y5M2UzMWE5YWI1NTY2YmVhODRkZTcgbGVnYWN5LXRydW5rCis4Mzk1IDc4MGI2OGRmNDU2MDc3NGY1YjhmZjU2NmJkYWQyNTI1YmI4MjQ0MmQgbGVnYWN5LXRydW5rCis4Mzk2IDVkYTE4ZTAwMmIxYThmZTg1YmE1YTk1NThjMWMxOGY4NGE4Y2I3NGYgbGVnYWN5LXRydW5rCis4Mzk3IDVmYjMwNDEzYjkzYjIxOWY4MDE1OTMwZGMyZGVjNjkyOTYxNWIwMDkgbGVnYWN5LXRydW5rCis4Mzk4IDgwMGE1MjE3ZTY3ZTc4NjliZGFlNWQ1ZTExNTZkYmU4ZDljNjAxMDggbGVnYWN5LXRydW5rCis4Mzk5IDQ0ZGRjNzExZWUyZGM4YzEyZDRhNzVhOGQyZGNhNWY0NGRjYzBhMTEgbGVnYWN5LXRydW5rCis4NDAwIDNlMTU4ZTY5YWM1ZDkxYzFjYTM0YWQwMGQwMGMzYWVmNDJhN2YxY2IgbGVnYWN5LXRydW5rCis4NDAxIDA4YjFlOWQ4NDdlNmI1OTk1OWEyZGZjOWNlYjZjMWNiZWFiMjEyNzMgbGVnYWN5LXRydW5rCis4NDAyIDkzMzA0YjJlMTRjYjM2ODc5Y2Y2MzE0YmFkZmU0NzRlMWFmMGZmZjIgbGVnYWN5LXRydW5rCis4NDAzIDhkMjE5NGUyMmU2NzM5Y2Q5NjYyNTRhNGZlODJhMGJhNjQ5YTY2MjEgbGVnYWN5LXRydW5rCis4NDA0IDYzYmM5Mjg5YWIyODI5Mzk4NWQwNGFkNjIzOTZkOTFmZWI4ZGFhYmUgbGVnYWN5LXRydW5rCis4NDA1IGNhMjQ1YzM2YzZmNmY4NDgyODYzMjkxNDhiZTlmNGIwMGFhNDBmNTQgbGVnYWN5LXRydW5rCis4NDA2IGIzYzkxMzc0NjkwMGUxNjFjYWEzNzQ2YjFhOGRlNGJiNzE4MTFhMjUgbGVnYWN5LXRydW5rCis4NDA3IGUyY2NlNGFkZjJhNzAyOWViZTgwZDdkOTcyZWY0MDdkYmEwZGFkM2YgbGVnYWN5LXRydW5rCis4NDA4IDEyZmU1Y2MxNTE2ZDA4MmQwZDI3YTZjODFiYzAzN2RkYzJkNTcxMGIgbGVnYWN5LXRydW5rCis4NDA5IDQwY2ZjOTA1Yzc3Njk2YWM4YjFlMTJjNmVlYzgzYWEzYTM2OTgwMDggbGVnYWN5LXRydW5rCis4NDEwIGIyMTBkMjA1OTgxMjE2ZGVkZDQ1ZDNhOGEzMWYyMTkxM2NlODE1YjMgbGVnYWN5LXRydW5rCis4NDExIDAzNjlkNjNiMTAwYjFmNGJiODA3NmRiOTFkZjE5MGQ4OTYyNzVkOTcgbGVnYWN5LXRydW5rCis4NDEyIGQ3N2QzYjhlODZiMjVhODkyMDdhN2QyNGVkMzNhMGU1ZjY3NDI1N2EgbGVnYWN5LXRydW5rCis4NDEzIDgwZDI0MzY0YjkzMjVlYjYyNmExYzRlMzY4YjUwYTBkMDdlNzc0N2YgbGVnYWN5LXRydW5rCis4NDE0IDVhNGQxODFmZmZmZGY1NzMwY2JiMmEyODMxN2MzODEzYTk0ZTMwOWEgbGVnYWN5LXRydW5rCis4NDE1IDIyMmZhZWI0M2QwMjBjOTQ2YWM3OGNkOWQ3NTllYTZhYWVjMzczYjkgbGVnYWN5LXRydW5rCis4NDE2IDJjNjViYjZhYjg3Y2Q5YmI2OWYzZTNlNDljNjIzYjRlMjM2MjI1YzcgbGVnYWN5LXRydW5rCis4NDE3IGVlZjc2YjNjZDlhZWYzYzIyNzIyZDdmYjMwZDgzMDVjNDQ4MjAzNjMgbGVnYWN5LXRydW5rCis4NDE4IGY3ZmM4OGZjZmZhMjQ2YjNiMjQ2MzE2Y2Q0MjZkMzRiMDM2ZjFjZTkgbGVnYWN5LXRydW5rCis4NDE5IGMxMTkyOGQyNTk3YmRkYzZkMjMxMmZmMTU2NWM2ZDUwNDczN2I3MmQgbGVnYWN5LXRydW5rCis4NDIwIGFjODc3YzQ3NjhlMWNhYmY5YTI0MTQwMDk2NTU1M2FiMGFmYmM5Y2QgbGVnYWN5LXRydW5rCis4NDIxIDFiZDY4ZTQ0NjRjZTJmYzU0MWU5MmM3ZTVjZTNiZDAwMDE2YTk5MTMgbGVnYWN5LXRydW5rCis4NDIyIDc1YjNhYWJjYjdjMTAwOTE5NzY4YzQ5YzgyNDM4YjI4YjI1YWZlZDUgbGVnYWN5LXRydW5rCis4NDIzIDlhNTY0NTJjN2U4ZTkyMzEzZjc5ZDg0NTc5MWU2MDlmYjRmOGM4OTAgbGVnYWN5LXRydW5rCis4NDI0IDdjYTZhOTEyZDQ1NWI5YmIyZjI2NTc3MzA5YWNmNGZmYjcyYTNmMDIgbGVnYWN5LXRydW5rCis4NDI1IDZjMDYwYmMzYmYzZDliNTgwYTNiZDg5N2FjZjRmZDEwZTk5OTk5N2IgbGVnYWN5LXRydW5rCis4NDI2IDBiNGE5ZGQwOWUwZGIwY2RkOWY2ZTJhZDAzZTBmMmM2NThhYmQ2NDIgbGVnYWN5LXRydW5rCis4NDI3IDNmYmNkYTc0MTY5NjVhNDQyMDcwOWVhYzY4OTQ0MmE4YmU0MDcwYjUgbGVnYWN5LXRydW5rCis4NDI4IDhkN2RjNjY5NjhjYmM2ZWM0ZWEzZGIzYzM0OWM0NThlM2ZmMDRmMGYgbGVnYWN5LXRydW5rCis4NDI5IGIyZTAxOGZiMmJhOTE1YzIwN2Q4N2RiYjJhMGI3ZTVmNGZlNzhiZWMgbGVnYWN5LXRydW5rCis4NDMwIDFhOTk2OTVhNDFjY2Y2OTE0Njg0Y2JjYjA3OWQ0NDM2YjY4ZjhjNjAgbGVnYWN5LXRydW5rCis4NDMxIGQzODM1YTZhMThjOTU3ODVjOGQxYjEwMDI2M2Y5ZmM4OWI0ZGZiNzAgbGVnYWN5LXRydW5rCis4NDMyIDFmMmRmY2E1MjIwNzJkMTM5Yzg4NjI2ZjY4OGMyNDVkMjFkNTVhYzkgbGVnYWN5LXRydW5rCis4NDMzIDNkNmYzZjBhZTAwNTA2NTYxNDJiMTk3MTlhOGRlZmU1YTg2MzI1N2MgbGVnYWN5LXRydW5rCis4NDM0IDI0ZWM0NjI0ZWE5ZTMwOTkyYjlkYWY3OWQ0ODBlN2ExZmU3ZTFiMzggbGVnYWN5LXRydW5rCis4NDM1IDgzNDQ2MWE4Y2E3NjcxNDYwOGRkYTMzZmJjNGMyOTg1ZDY5OWY3Y2YgbGVnYWN5LXRydW5rCis4NDM2IDFhNGZiNmYxMmZmZDU0YjEyM2QyM2RlOTgwMmEwNTI3NDg0ZGNhYWQgbGVnYWN5LXRydW5rCis4NDM3IDc2YmI0MGExZWIwNDUzMjM4OThkNmIwMGExMjIwZThjZWJmZWVhNGMgbGVnYWN5LXRydW5rCis4NDM4IDM1ZTVhY2M2NTMyYzdlNTRhNjlkNzBiZTI1NTVkY2I0M2E3NDY5OWEgbGVnYWN5LXRydW5rCis4NDM5IDIzZTAxNDgzOWFiMDU3ZDE1OTc3NzcyM2ZjOTBmMjVlODAyZTFkNjYgbGVnYWN5LXRydW5rCis4NDQwIDgzZGU1NTM5ZjhlNDMyMjBhZDlkZjcwNmRkODM4MDU2OWNiYTIxOTcgbGVnYWN5LXRydW5rCis4NDQxIDQzMDU0MDIxYmI1NzUxMDYxN2E4OGRmZGYxMzhjZWVhMjdiNTE1ZjkgbGVnYWN5LXRydW5rCis4NDQyIDhhZTgzYjljMzRhMDI0NTA4N2NmMmQ3MTYxOTlkNzMyZDU2ODhiZWEgbGVnYWN5LXRydW5rCis4NDQzIDk2YTk3YjJiNzIzZTlmNTNlMDRmMGIzZjlmOGM0MzI2YTg4YjZhMDMgbGVnYWN5LXRydW5rCis4NDQ0IDllNGRkYjQ1OWIxMGQzYjBjZjk0YjI0NWE2N2UzNDc1MzgwZmJmZGIgbGVnYWN5LXRydW5rCis4NDQ1IGI3MDQ4ZjViZTlhMThkMzlhYWM0YWY5YTU3MWUzNDAzODlhNzE2NjggbGVnYWN5LXRydW5rCis4NDQ2IDVmNmEyZWFkYWI5NzgzNWYyNmU2Yjk1MzE2NTA4NDk1Nzk5NjkyZmUgbGVnYWN5LXRydW5rCis4NDQ3IDcwMWQ4NTRkMTkzMGJiNmExYTI0ZjI3M2ZlOWRkZjFlYWI3M2RkOTUgbGVnYWN5LXRydW5rCis4NDQ4IDNmMmJmYzE1OTg5ZGNhZTc1NjE3MTc5Y2RiYmY1NWQ2OTI0MGUyNzYgbGVnYWN5LXRydW5rCis4NDQ5IDhhYmI0ZDhjMzEzNDQ5ZGE5OTJhMzQ1YzZhNWFlYTY1ZDBiMGQ2YzAgbGVnYWN5LXRydW5rCis4NDUwIGU3Nzg0N2UxMTU4ZTIxMzg4NGQ0ZmMzNTg0MzYxNmUyNjI3YWE0ODUgbGVnYWN5LXRydW5rCis4NDUxIDdhMDg4MGY4YjhlYzA4ZWExMjUyMTMxNjhkYzY5MmZhNjY0ZjM4ZjcgbGVnYWN5LXRydW5rCis4NDUyIDhiYmE5YmI4NjRhZTIzOGM0YWY5M2E3NzVlNDc5OGZlZWJjNzJkYjAgbGVnYWN5LXRydW5rCis4NDUzIDViMmM1OTU0MjhmYTkxZjk5MTkzNmFjYjcxOTMyYjg3YmFlY2IzYzcgbGVnYWN5LXRydW5rCis4NDU0IGI3NzA3OTY1MTlmNjAzZmVhNWU3OGQzZjY5ZTU5MGY3MjUwYWI2ZmUgbGVnYWN5LXRydW5rCis4NDU1IDc4MWViNDlkMmQ2NmZkMGEwNjQyZDgyZjRhN2JkMWE4MWQzZTlhNTQgbGVnYWN5LXRydW5rCis4NDU2IDQyMjk2MDUyMzI4NjUyMTUyOWNiNjhhNzM0MGY2Zjk4ZjVkNzJjYTEgbGVnYWN5LXRydW5rCis4NDU3IDI4OTRiYjQ5ZTJlZWU2ODk5NGQxN2RjNmY0MGJkMTBjZDUyMjczZTUgbGVnYWN5LXRydW5rCis4NDU4IDE3MGM0NmE2NTAyMjBlNjJiNmY5NjMyYTg4YWM1NmRlOGNkYTA4NWMgbGVnYWN5LXRydW5rCis4NDU5IDZhZWJkOTcwYjdhOTllODRjZmE1ZjQ3ZDkwN2E3YTI2Yjg1ZjdkMTAgbGVnYWN5LXRydW5rCis4NDYwIDMzMzg1Zjk0Y2E4YWM0MmExMjc0NzZlMWRhZDBjNDg1ODRmMWNkZWQgbGVnYWN5LXRydW5rCis4NDYxIGI0YmJiYTNhZjRlOGM4YTJlNzY1ZDU5MzBhNThhMTA1Y2EwNjdlZmQgbGVnYWN5LXRydW5rCis4NDYyIDAzYTg4MzNiNGI3M2Q5OTk1ZDUxY2JjNjVlOGJhNjQ2ZmQ1MmNkMDQgbGVnYWN5LXRydW5rCis4NDYzIDMyMTI3NTkzYzEzNGQxYTFlM2QyMzZhNWVlNTcyMWVlNzQ0YTY0MTcgbGVnYWN5LXRydW5rCis4NDY0IDBhMmMzMzEyMDBmNWZmMDgyN2JmMDg5OTNiYTFhYTU5NDEzMTFjNmQgbGVnYWN5LXRydW5rCis4NDY1IDU5OTNhMDk5ZDliMDM2NjMwZWRmMGE3YmI0ZWQwYzc2ZDI4NjQ4YmQgbGVnYWN5LXRydW5rCis4NDY2IDViOTBkYThhOWRjYzE3Njg0NmFmMTZhYTAxNjdkMWE5ZmIxOGZiNzIgbGVnYWN5LXRydW5rCis4NDY3IDUwMzUwMDY1MmJhYzQ4ZmY0MDJkZTJiYjBjYTdjYTc1YTY2NDAxN2IgbGVnYWN5LXRydW5rCis4NDY4IGE1NzM3ZGQ5Njk3OTAwOWViZjk5MWI5Y2M5NjRhNWVkYzcwNmQyYzMgbGVnYWN5LXRydW5rCis4NDY5IDZlNWQ0ZWMwMzc5MWM5NmNjNzlkOTViZmQwODFmNjRmMzYzZmUzNWIgbGVnYWN5LXRydW5rCis4NDcwIDJkYjNiNzM2MTg1M2M1NTYxZmVhMzNhZjE1NTE5NGIyN2Q4YTlhODQgbGVnYWN5LXRydW5rCis4NDcxIDNiYWM1MjM1MmMwYmM3YTZkYzFlYWU2MzUyNzEyZGNiYzBjYTQ4NGEgbGVnYWN5LXRydW5rCis4NDcyIGI4YjZhODhmN2Y0NDJkZjQwYjQ3MDZjMDY0OGQ2YWI1ZjhmN2ExMjcgbGVnYWN5LXRydW5rCis4NDczIDllN2Q1OTgyYWIzZGU5NmU5YTQ1ZGNjODU5NjUxYmQyZDg4NzgzNDMgbGVnYWN5LXRydW5rCis4NDc0IGZjZWE1N2MzNDZhNTliNjFlM2YzNzM2NGU5ZDUzNWRjNWNhMjM5Y2QgbGVnYWN5LXRydW5rCis4NDc1IGMyNGI1NGMxOTU3MTQyZDFkM2FmNjBkZGNkYzA0NGRkNmUyYzc4YjIgbGVnYWN5LXRydW5rCis4NDc2IGYyZDEzNGJmNjk3M2JhMjY1NDlkYzQyOTFkMzk1ODdlZTZjODA0YjggbGVnYWN5LXRydW5rCis4NDc3IGQ1MjBkNWQwMTExNWI3MDJiY2ZjY2ExYTBlYjdhNTU2NTAxZDA2YWYgbGVnYWN5LXRydW5rCis4NDc4IDgwNTYxNjllYzQ0OGUyMzNkMGI0NTNiYzJmZWU5NzI4YTNkYjVmNTUgbGVnYWN5LXRydW5rCis4NDc5IGQ0MzljMzJjZTk2MzdmZmNhNjJiNjM5YzcyNzg5ODkzNzliOGVkZjYgbGVnYWN5LXRydW5rCis4NDgwIDUwODkyMTk1MGYyYzQwYjJjMGM2ZjlkMzA2YmUxYjBiOGRjOWIzZGUgbGVnYWN5LXRydW5rCis4NDgxIDNmNTliMzRlYjkwZjk2YTMxMTY4YWMxZTgwMmJmNDg4ODFjODc1MGIgbGVnYWN5LXRydW5rCis4NDgyIDBjZGE5ZjI0N2Q3YWNiOWIyZjI0ZTJkY2YyODUwODcyYmNkNzRlOGUgbGVnYWN5LXRydW5rCis4NDgzIDczNjFmMmYxODZhZGEwMDVkYjM5MTQ2NzBlYTBkMDk1ZWE0NDRiMDcgbGVnYWN5LXRydW5rCis4NDg0IDliYTcyZmM0ZjUwMzY0YzcyMzQwNzYwOTUyYWFlY2YyYjc0Y2M2MDUgbGVnYWN5LXRydW5rCis4NDg1IDVkYzI2N2NmNDg5NTJjYzFiZWEyYmExZGQzNTcyMDk1NWNhZmRmYzggbGVnYWN5LXRydW5rCis4NDg2IDg4NzQwOGVlYWU5OTM5YjUxOTUxYWZlMWM1Y2ZiNWRhZDJkNzYzNWIgbGVnYWN5LXRydW5rCis4NDg3IDg3MWYxMzVkZDYxMjliMzcyYTBmMTIyM2QyNGM5ZjAxODg4ZDk0MjUgbGVnYWN5LXRydW5rCis4NDg4IGNjNTc3MDAxZjdlY2VlZDNmM2JjNzBiMjM3MjgwMzhmZjhjM2JlOGEgbGVnYWN5LXRydW5rCis4NDg5IGQwMmFjNjFjZDUwZjFmYWU1NzY1MTg4MTA4Y2UzNDI5OTQyNTAzN2MgbGVnYWN5LXRydW5rCis4NDkwIDBiNWEyM2VhNzUxNTZmMjczZTRhZmIyZjM4MmQ0MGY4YTk2ODk4OWQgbGVnYWN5LXRydW5rCis4NDkxIDJmMzZlMGJiMzdjMzc4YTljZmM0MGVmMjYyZTk2NDRmOTliZmNkNWQgbGVnYWN5LXRydW5rCis4NDkyIDE4YWQxMTA2ZjY1MWFiOGZjZmZkNWU0OGQ2NDg5NTJmNzlkYzMzMjAgbGVnYWN5LXRydW5rCis4NDkzIGRmZjIwMjRhYjAyMWZlMjg4NmYxYWEwNDRlMzJmYzVkZTRlMDhlNDYgbGVnYWN5LXRydW5rCis4NDk0IDUwYTQxODYzYzM0YTYwMTI3OTkyMzc3Yzg1MzQ4MGE1NWU4ZmYxNGIgbGVnYWN5LXRydW5rCis4NDk1IGYwNTU0Njc0MzQwNjEwNDY1YzdkOWM4YjQ5MzBlMGYwMDVkNDIyMDkgbGVnYWN5LXRydW5rCis4NDk2IGEyZjk4ZDdjYWRlZDFkZDIyZDU4ZWQzMTRjNjEwMzFlMTZjZDI0ZmMgbGVnYWN5LXRydW5rCis4NDk3IDU5YzM0OWExNGEzYWRlMzdkNTdlZTljNTVkYzQ5M2M4ODExMDk1ZmYgbGVnYWN5LXRydW5rCis4NDk4IDYwMWM0ZWNhM2RlMzQxZTc3YzJiMjM3N2Q3ZDU2MjAxN2YzMTUzNmIgbGVnYWN5LXRydW5rCis4NDk5IDgwMjQ3MGM3YTUwZjA0ODRmOTEyNTcyZWRkMTNhMjYyYzE5ZWI1MjIgbGVnYWN5LXRydW5rCis4NTAwIDZhMjVkODExMGIwMDk0NTJhNmIwMDA2OWFjNDliOTRiMjllODhkMGYgbGVnYWN5LXRydW5rCis4NTAxIGQ1Zjg3NDFhODEyY2Y1NTUwNzMyMTZjN2M0NjVhZGQ2NDNlOTEwOTcgbGVnYWN5LXRydW5rCis4NTAyIDBhZDE1ZjMwYzhkNDEwOGNiNjExOGNmOWI4NjFhODIwZDhhYjE1N2YgbGVnYWN5LXRydW5rCis4NTAzIGI1ODA0MTU0YWY0ZGYxMmQyY2U2MmM2NTA4YTdlNjg2ZGI2MmFiNDQgbGVnYWN5LXRydW5rCis4NTA0IDQ5NGU1NTBjYjE4ZDE1YzJjZTEwZDBkZWU5NGQ0MjRkNGY0MDQxZDAgbGVnYWN5LXRydW5rCis4NTA1IDI5MjE5MzE3MGRhMTU5ZmNmZmFhMTM4OWI3NzRlY2FjZDNhNjJlYzAgbGVnYWN5LXRydW5rCis4NTA2IDY4ZjJkNzcwNDE4MGE3MmI0ZDEyNzg4ZTAwY2EwNWQ3NGQ0YzQ1ZmQgbGVnYWN5LXRydW5rCis4NTA3IGJmODAzZGZkNDQyOGYyNzYxNTYwZWViMDZjODBkZThlMDFmNTU2MzggbGVnYWN5LXRydW5rCis4NTA4IDZjNDQ5ZGZmMmZiODljZjA1NGZkOGFmNjhlYmYxMjBkMDNjZDA2ODEgbGVnYWN5LXRydW5rCis4NTA5IDlhNTdjYTIyOTY4MWI2ODJjZjNhYzU4YjcyMjBkZDg4ZThjOGJhMzMgbGVnYWN5LXRydW5rCis4NTEwIGFjNzU1NGYyOTMxMzY5ZTM1YmY5OTVhOTNiYjI4NTA3ZmVmYjhhYTMgbGVnYWN5LXRydW5rCis4NTExIDFjZjc5ZWE4ZmZhMmE1OGE5MGQ4ZDEwNjI5NTE3NjI4MmNkZGVlYzcgbGVnYWN5LXRydW5rCis4NTEyIDYxNDExOGExMzQ4Yzk0MjFiN2IzZmYyZjFjZTRkMDQ4ODY2MTllYTkgbGVnYWN5LXRydW5rCis4NTEzIGJlMWI3OGU3MDcyODcyODNkMzVmMjJjNzAzZGUyMjExNzJkMzU4YjkgbGVnYWN5LXRydW5rCis4NTE0IDRjMjI5MmU3MDliMmQyN2Q1MzdmN2NjYWY2YjYwMzE1ODVjY2Y2YmEgbGVnYWN5LXRydW5rCis4NTE1IDQ3YWRmMThkMDFhZGQ3ODYzZTA2YmQzMzJiMzVjMTI3ZDM5ZWY5OGUgbGVnYWN5LXRydW5rCis4NTE2IDYxOTIzMjIzNmRkYjhhNTg2ZjMzMDQ1MGMwNGY3NWFiOWZlM2E4ZGEgbGVnYWN5LXRydW5rCis4NTE3IDFhNDM2OTkxMDhhNjM3NTY1NjBiNGIzMjc2NjhkMmQyYzg3M2M5ZTIgbGVnYWN5LXRydW5rCis4NTE4IGE5ZTFlYTgwZWEzZjRhYTU5ZjUzZjMyNTcyNTI3ZWRkZjhlZjk0MjIgbGVnYWN5LXRydW5rCis4NTE5IDZkYjNkNTJkNGE3OGFmMDdlZmEyMzJjNzViM2EzMjIxZWJkZWNhNDUgbGVnYWN5LXRydW5rCis4NTIwIGMwNzllOTI0YzkyNzE4OTYxYjNiOWZlMjVkNWFhMGY4MTVjNGVmNzIgbGVnYWN5LXRydW5rCis4NTIxIDBiOWVjMWIzNGE3YTQwODgwY2QyOWMyYjQ3ZWNjMTNhYTJiNDFjYjAgbGVnYWN5LXRydW5rCis4NTIyIDZlYjFlMzU0OWUyZGJiYTYyNmVkM2U1ZjI1OGNjNWE5MDIxNGRkMjQgbGVnYWN5LXRydW5rCis4NTIzIDhiYTQ2YjA3NzhkYWQyODg3MmM5MzAwNzgwZTM0ZmU1MmYxNjhhOTkgbGVnYWN5LXRydW5rCis4NTI0IDk2ZmVjYzgwYTI4ZjdjOWYxNTAyNDk0ZGMzMTkwNDkwNmNiY2ZmNmMgbGVnYWN5LXRydW5rCis4NTI1IGU5MzY2MzExNzZiNjFkNmQxOTk3Mjk0OTYwNTA0ZjJmYTU1MjU4MjkgbGVnYWN5LXRydW5rCis4NTI2IDRmMTJjMjFmODc0Nzk2OGJjNDA3ZDIyMWNjNjUyZThlZGZiNTY0ZjQgbGVnYWN5LXRydW5rCis4NTI3IDYwNzMxYjE5ZmUzNGQ1N2U5M2YyMzQ5MGRlMzIwYTdjMTRmNTcwZjEgbGVnYWN5LXRydW5rCis4NTI4IDZiMGFmYmJmZTBiNzgxOWRkMzg3MmE2NWViMjE4NTYxNThmNGNkMmUgbGVnYWN5LXRydW5rCis4NTI5IDFkYTEyMjcxODU5OGU3NTAxMzM2Y2ViZDUwZWQwOWQ5MmIwMjEyM2UgbGVnYWN5LXRydW5rCis4NTMwIGRhM2M3ZDQ3ZjIxMGE2ZTVkNWEwMTBiYzJmMjQ2NWQyZDkxNDM0ZTcgbGVnYWN5LXRydW5rCis4NTMxIGNhYjllYTVlNGVlZDM3ZDcxMTFmMjU2NzdkZmUwNTNiOTAzMjViZTEgbGVnYWN5LXRydW5rCis4NTMyIDcyZDAwNDk3MWIyNjc5N2UwMDc1OWQwMmRmNDQ1MDljYmM2NjY3NTMgbGVnYWN5LXRydW5rCis4NTMzIDhlYzAyMTI3YzQ0YmI0MzU5ZTcxMTEyYzBiYjQ4NjYzYWFiM2ViOTQgbGVnYWN5LXRydW5rCis4NTM0IDU2NmQwY2FlOTE5MTVhYjEyMmJkZDE1ZWQ3MGZiOWI2NTY2NDg1NjIgbGVnYWN5LXRydW5rCis4NTM1IDg3N2RiYmEzYjVhODA0MDJjNTY1OWMxZWZiYWIxMmRlOTI3MzE2ZWUgbGVnYWN5LXRydW5rCis4NTM2IDM4Nzg0Yjg1M2QyMzFkMmFmZWVlNjg3NmZkNmZkMzIzN2UzNTA3NmEgbGVnYWN5LXRydW5rCis4NTM3IDExNDI5OTY4ZTI5ZDIyZWU0YTRhNDgwMTViOGJmN2MwZGJlZTZkYzQgbGVnYWN5LXRydW5rCis4NTM4IDM2ZGY0NDM0YjNiMzAzYTE0ZjU4NmEzNTA4NTA3MDgzMTY3MDc5NjcgbGVnYWN5LXRydW5rCis4NTM5IDc0YTc4NjY2ZGRjOGFmYmQzMGYzMDJjN2NlYzQxM2Y1OTJlMWIwM2MgbGVnYWN5LXRydW5rCis4NTQwIGE1ZDUwM2VjYTc0NzhkZDQ4ZTVmNGYzYWU1ZGU3YjgyZTk4YWIxMGIgbGVnYWN5LXRydW5rCis4NTQxIGU4OGQyZTMyMmM1ZWJlODJjYmNlYzBmZDI3YmY5Y2NiOTgwZjdlNDUgbGVnYWN5LXRydW5rCis4NTQyIDBmNDE5M2JkMDhkMGJjYmFlZDYyNTI3NGIxOGI2NDA0YjA5NDJhZjIgbGVnYWN5LXRydW5rCis4NTQzIGU0Y2QwOTJmNDNkNjZhYWE4NjVmZWRiMjA3Mjk2YmNjODQ0YWE4YzkgbGVnYWN5LXRydW5rCis4NTQ0IDNkM2ZhODc3Mzg3YWVkMzE2NGRjMjJlOTM4ZjJkYTM3OTMxNmRjMzMgbGVnYWN5LXRydW5rCis4NTQ1IDkyNWY5MGI0OGQ3MzcyNDUzN2QwNzc1ZGQwMjE5NTBhYzBjMGU3NGIgbGVnYWN5LXRydW5rCis4NTQ2IGUwZjI0OTk5M2E0ZjdmNTljOTI2MTgxOTk4YTgxMzZhYTAzYWVmMDAgbGVnYWN5LXRydW5rCis4NTQ3IDY0M2ZhNTRmMjEyNDU4MWQ1YTYzZjM4ZTM5YjRlMjcxNjg4YzViYTYgbGVnYWN5LXRydW5rCis4NTQ4IGQ5MWNjMGE1N2RhYTNhNDMyZDc2ZDlkZGYxZDNmOGY5ZjNkMGQyYjQgbGVnYWN5LXRydW5rCis4NTQ5IGM3YjVhNzIyZDkyNjQ5NGU2NmUxY2EyNGI3YzlmMzFkNDZiMDFkNDcgbGVnYWN5LXRydW5rCis4NTUwIGVjYzk0OTBlYzcxOTI3ODM4YjI5NzgxMWYwOGE3NWIyMjkyOGJjODQgbGVnYWN5LXRydW5rCis4NTUxIDVlNWU1NGE2ZGJhNmZhYjkyYThlZGExNDViMGU3ZmU5NmViNmFkODIgbGVnYWN5LXRydW5rCis4NTUyIGJmM2Y0ODdmY2Q4YjU3Zjk5MDllYWEyN2VhZWEyMGUzNzhhZmI1MGYgbGVnYWN5LXRydW5rCis4NTUzIDY1NDBlYjE3ZTViNjQ1N2I1Y2E1Zjk4ZGUxMzk3MmJhNjljYjE5MzcgbGVnYWN5LXRydW5rCis4NTU0IDg4MTRjY2YyZDFjZGI2NTgyODU0NjRhYWI1YjIzNTVjMGExMGQyYmIgbGVnYWN5LXRydW5rCis4NTU0IGRjNWM5NjhlYzk5MmFhYjNkNDBhNzE4OWRmMGM0NDNkMWM3YTFhNjggbGVnYWN5LXRydW5rCis4NTU2IDJmMWE1Y2FkMjdiN2EyMzAxYmMwODg0YWRkMjM2NTU0NTg2MjUyNTAgbGVnYWN5LXRydW5rCis4NTU3IGQzYzYwMzVhYzNjYmNhYjc1ZmJmZjNlOTNhYmVjZjY1M2IxY2VjNmYgbGVnYWN5LXRydW5rCis4NTU4IDBlYjE0YTY0ODRmM2Y4ZjdkMmYzYTg0ZTc1YWI0ZmQzMTJjNDYxYzEgbGVnYWN5LXRydW5rCis4NTU5IGQ3Y2EwNTU0Nzk1ZWVmM2ZiNDFmYmYxOTdkMWMwZDA4ZThjY2EwZWQgbGVnYWN5LXRydW5rCis4NTYwIGYxNTkwNDQ1MzBiMTgyNzA0NjcyNmZiMzYwMjZlZDcxMGJjMWY5ZmYgbGVnYWN5LXRydW5rCis4NTYxIDBhYTYyY2JlZDlmODJlOTE3MjlkMzk5Mzg5YjU4YjFlNzFiOWJjZDAgbGVnYWN5LXRydW5rCis4NTYyIGY5ZjAyNjJjNGM1NzZlN2I3ZDUwYmJlNDRlMzhjMWZkZGNiYjY5YjggbGVnYWN5LXRydW5rCis4NTYzIGQ4OWEyMTliNDlhNzIxM2MxYjJjODUwZDVlYWYxZDdlOTI1MjY1NDcgbGVnYWN5LXRydW5rCis4NTY0IDYyMmM4ZDk4MWE2OTU1ZmE2MWNiMDUyZmI1ZGIyNDI1YzIwYTIyOTIgbGVnYWN5LXRydW5rCis4NTY1IGIwNDRjNDc5Y2JjODMwNTE4M2U1M2ZhM2QyYjYxZTc2OTAyNGJhMjcgbGVnYWN5LXRydW5rCis4NTY2IGVkYWVlNTM3ODAyMTMzYjZiZTAyMDllZDRkMGNlMDU1NzkxMjFjZjkgbGVnYWN5LXRydW5rCis4NTY3IGYxMzA0OWVkMzFmZGI5MzQzMTdhZWQ1YzIyMWQ2NmU5OWFmNzI3NzEgbGVnYWN5LXRydW5rCis4NTY4IGRjOTE2ZDhiYmI1NWQ4ODI0MDVmZDhiZjMyYWFlY2Q4OTQ2NjU4ZjEgbGVnYWN5LXRydW5rCis4NTY5IDI5NDljMGE0MGI3YmQwOGNhZGM4YWFkNjE0NWNlN2JjMmU4NjNlOTAgbGVnYWN5LXRydW5rCis4NTcwIGQxMDkzZjM0MjFiNmY1MjgwYmViMjJjN2RmOGRhYmM5YzdjYzRhMjYgbGVnYWN5LXRydW5rCis4NTcxIGEyMmZjYTdhNWM1YTdkMTI3MDdmZjhhZTFkZWY3MGM1NDMwMWYyNjIgbGVnYWN5LXRydW5rCis4NTcyIDI3NDIyNjRlZmRkZWRkNWQ5NTkyZmZjODA3OTQzMzA3ZTA4Mjc1NTcgbGVnYWN5LXRydW5rCis4NTczIDQ0YjhjZmJkYTQ0MTI0MDMyMjZmYmRiMzhlMjM0MTE3N2E5YWJiMWIgbGVnYWN5LXRydW5rCis4NTc0IGQxMzdlNjI0Y2U0MmIyMzkxYWZiOWE0YzMwNTNmM2MyY2FmMTJlNjkgbGVnYWN5LXRydW5rCis4NTc1IDE3OWJmZDBmZWUyNGEyNzM4OGQ1ZTU5OTk1MDlhNzU3YzUwMGM2MGMgbGVnYWN5LXRydW5rCis4NTc2IDhmN2Y0NzcwMDdiMzg4NjUyYzU2N2MyODUxODZlNGM0YzM4NTkyNjcgbGVnYWN5LXRydW5rCis4NTc3IDhiYjEyODIxNWRjNThjMWU4OWY4ZmNkMGQ2NTBhNzQyOTA5MTg5ODEgbGVnYWN5LXRydW5rCis4NTc4IGE2NGQxNGM0OTE0ZjIxNWU1MDE4MjE2YWU4MzFjYmZiYzE5M2VhMDkgbGVnYWN5LXRydW5rCis4NTc5IDRkOGViZjdhZmZhYjRiZGFkYjcwYWJlZDVlNjZlYjg1YWMxYmY0MWUgbGVnYWN5LXRydW5rCis4NTgwIDNiYjg5NzBmYjkxODMwYTU5MDEzYzcwNGI1YTY3MjM3NTcxZjkxYjggbGVnYWN5LXRydW5rCis4NTgxIGYzYzBjMTdiOTcwOGJmODJjOWRhMGFkYjg4MzhhOTY2MmVhZTJmOTQgbGVnYWN5LXRydW5rCis4NTgyIDc3ZmI4ODBlY2E0OTFmZTEzNTk0ZTZkYTRlZjY0YWQ4MDkyOTJiYjEgbGVnYWN5LXRydW5rCis4NTgzIDM2YjNiMzM3YzU2NjM4NDIxY2ZhM2JkYzk1NWRlYTdmMGYzN2MwNWEgbGVnYWN5LXRydW5rCis4NTg0IDdiZDU2NWU0ZmJiNWFhMDQ1NTcwYzdhNWM2N2VkOTc1YTBmZGE4MmMgbGVnYWN5LXRydW5rCis4NTg1IDE2NzZmNTc5NTE4MGJjYjc2ZjRhZWExZjQ0ODE4ZGUxZGYyZDY1M2IgbGVnYWN5LXRydW5rCis4NTg2IDhjYjJhZmQxMDExOTUwMGViMGUwYjMzODZlOWEzYjExZmYzYTQ1YWYgbGVnYWN5LXRydW5rCis4NTg3IDI2MGIyMTc2OTA2MWFhOTA2YTFjYzJhNTJmZjM0ZmE5MzFlMmUzYjEgbGVnYWN5LXRydW5rCis4NTg4IDk3M2VmMzVlZjQ4MjU2OGYzOTU2MmMzMTE1ZjY5YTZhY2Q3MWY5ZTggbGVnYWN5LXRydW5rCis4NTg5IDVkMWYzMzdjZWUyNjlmOTExYWM2ZmUyNmE3YjlmNjdhNmJjMjlkNTUgbGVnYWN5LXRydW5rCis4NTkwIGQ5MWZkN2NkOGJlN2IyZjZiZDQyNmUxNTA0ODY2Yjk2MzI2MGQzYjEgbGVnYWN5LXRydW5rCis4NTkxIDczN2VkNjY1Mjg5OGU5NDE2YzgwODk5YzMyOTMwYzdlYTBiOWI4YzUgbGVnYWN5LXRydW5rCis4NTkyIDY1YzliYTgwMDAzMDJjMmY0NmE1YWI4MGE1OWQxZmY3MmQzOGUyNDMgbGVnYWN5LXRydW5rCis4NTkzIDA3YjdkNDMyMGIxNGFkYWE1MmJhODQ5ZmU3OTIwNjMwMGQwNjUyYmYgbGVnYWN5LXRydW5rCis4NTk0IDk4YTI4MmNmYjAxM2U3ODIyODdhYzM0MjFiMTllYTBlMTlkZTY5M2YgbGVnYWN5LXRydW5rCis4NTk1IGQxM2QzYzJjOTg2MGE5MzQyZjEyMGUzODMzNmY0YmQ4MDRiZGYzOTUgbGVnYWN5LXRydW5rCis4NTk2IGMyMGI2OTgwYTg3MGZjZDYxYzhmZTcwNWViZWNlODBlOWM0MDFkMDIgbGVnYWN5LXRydW5rCis4NTk3IGRmMjllODNjMzA0ZmFhNGVkMmI0ODNhMjE1YmM1OTEyMjk1MzRlODUgbGVnYWN5LXRydW5rCis4NTk4IGRmMDI4YmM1NGU2ZjMyYTVmMGY4YzBhMTdhYjViZTQwYzJjZjI0MzMgbGVnYWN5LXRydW5rCis4NTk5IGRiOGFjNmUxMDliNGRjMGI5MjhkMDZhOWNjZWQ3YmQ3NTM4N2U2YmMgbGVnYWN5LXRydW5rCis4NjAwIDc0OGZiNWEwMDlhN2MwYzMwMTZhODVjYjNkMTkzNWZhZjFiZjMzYjggbGVnYWN5LXRydW5rCis4NjAxIGNjMmM4NDc2OTYzNmE0MjU5ZjdmZTkwNWVhMDljZTc5ZGY2MmU4YmMgbGVnYWN5LXRydW5rCis4NjAyIGQ0ZTg3YWE3YmZmMDU2NzkxNTI2ZjNlZmI0ZjRkNjA0YmMxYTE1NDAgbGVnYWN5LXRydW5rCis4NjAzIGI0NDkzNGMyMDEyNWVmZDhhMzIyMmM3MGEzYThjMzY0ZTAzNjRjMzcgbGVnYWN5LXRydW5rCis4NjA0IDQyNTQwOTVhNTAyOTgwMWMwZjkyNjM0N2YwNTIyOTRiZGY1NmNjNDQgbGVnYWN5LXRydW5rCis4NjA1IDA2MGY4MzkzMmU5MWE2ZjU4MjNlODIwMTZjOGRmYTJiOGVmMzZmYTUgbGVnYWN5LXRydW5rCis4NjA2IDVkYzA3OGIyMTNlNTgyZDcxZWE4MWNkMGMwMDZjNGRmYzMzYWYyYzMgbGVnYWN5LXRydW5rCis4NjA3IDJkOTU4MmVlZTExMmU2ZThjYWRmZDY0ZjFjMjRlNDkzZDEzZTg2MGQgbGVnYWN5LXRydW5rCis4NjA4IDg1NDJiODkwMzk4OTk1ZjljMDMyOWFjMjc4YjcxODI3MDkxNDRhNGMgbGVnYWN5LXRydW5rCis4NjA5IDk0NjA1YjAwMjZlN2Y2YmYzNzcyYTdjMDUxZThhNjI2NjY5YjMzNjUgbGVnYWN5LXRydW5rCis4NjEwIGI0YTBiZTVjNDJiZjc1OWI1YzJmMGYyODliMjE4MWI5NDNmNzhlM2IgbGVnYWN5LXRydW5rCis4NjExIDU1MjgzZjY4MWExYzIxMDFkMTllN2YzNzBlMWNmMzk2OTYxMmNmYmEgbGVnYWN5LXRydW5rCis4NjEyIDMyZjY1NzQxNzQzYmQ3YWM2YmQxODgzNjY4NjJhM2ZhZjBkNGIwMWIgbGVnYWN5LXRydW5rCis4NjEzIDU3MDQ1ZjUxZGQxMmIwNGQyNTg2NTU3ZjkyOGEyMmYxMmMwZGI0NjIgbGVnYWN5LXRydW5rCis4NjE0IDQwYWJmMjNlMTY4YmZjM2JhY2QxZDU5M2JmNmY2MWFhZGIzNTMyOWMgbGVnYWN5LXRydW5rCis4NjE1IGY4MGU3NjNjMTcxN2RlNzkxMTA4MmUyNTA4MWI1MjQ5MzEzM2UxMGUgbGVnYWN5LXRydW5rCis4NjE2IGEyODdjNTAxNGU2NmE4MTg4YmFlMjkxMDFlMjZjYTFmNmJlODAxZmQgbGVnYWN5LXRydW5rCis4NjE3IDNjOTUxMjQwMWY2ZDZiNzZmOWIxMDliM2U2Y2NhZmEyYWM3YWQ0MzIgbGVnYWN5LXRydW5rCis4NjE4IDlmNjE2YTQ5MjE5NjYxOTEwMDc5ZjVjZjMzZDI0ODJjNTZmNDVkZjggbGVnYWN5LXRydW5rCis4NjE5IDE0NGRiNjM1YjQ5ZDMzZTk5YjZmZDFlNWI3Mzc3NDVjZDE3NTdhZTIgbGVnYWN5LXRydW5rCis4NjIwIGMyMzM0ZDk3Y2UxNGNhNDE2OTVlN2E5OTM2YjY2NzBmMDQ1N2U4MGYgbGVnYWN5LXRydW5rCis4NjIxIDE0MTgyMDI0MDExMTA5ZGNlNWUzNTdiNDg4OWFmNTEzNjE2OThjYjUgbGVnYWN5LXRydW5rCis4NjIyIDM0MWZjYjdiYWQ5MDNiYTI5MGU4YjJiYTA5ZWY0N2ExNmM0NWFmOGMgbGVnYWN5LXRydW5rCis4NjIzIGEyYTFkZjBjYTgwOGY2MjMzNDkyMzIyYTM3NzE1M2I4ZTdhYWMzNWMgbGVnYWN5LXRydW5rCis4NjI0IGI3NmE0NDE2M2UwZjYwM2I2ZGM0YzhhZWVlMmE2YWNlYzM5ODE4YzEgbGVnYWN5LXRydW5rCis4NjI1IDQ1ODRmMDg5MzBhYzkxYjQwMzc5NzQ5OGMzZmU1Y2E5OGQ0ZmExOWEgbGVnYWN5LXRydW5rCis4NjI2IGJiMDExMTMwODdlYmM1MGEzNzE1OGMwN2NlNmE5OWIzODVkYWU0ZmUgbGVnYWN5LXRydW5rCis4NjI3IDlhNzhjZTFkYjhmNjhlZjE5ODlhNGMwZTRiNzRhMDdhZDk3OGU0YmUgbGVnYWN5LXRydW5rCis4NjI4IDlmZDYwZTY0MGFlNWQwOTc3MTBhZTM0MWY1YzRiMzk1ZjZkYTE3M2EgbGVnYWN5LXRydW5rCis4NjI5IGQ3Y2JkMjY1MWU1NTliYmRmYjcyZjk4NGY4YTYwNmFjNWJkZDBiOGYgbGVnYWN5LXRydW5rCis4NjMwIDE3YTI2Zjk4NjAwNzg4NDIzMTc3NWI4MTlhZDRlMzNiMTczMThkMTggbGVnYWN5LXRydW5rCis4NjMxIDJlZTk4MTFjOTJmZDRiMmVjZWE2NjIwYzllYWY3MjdiMzc3YmI4YzYgbGVnYWN5LXRydW5rCis4NjMyIDQ3ODY3MDA2ZjA3NmFlODU1NzZhZDJkODMyOWNiMDY4MDlmNjdiY2EgbGVnYWN5LXRydW5rCis4NjMzIDFhMmJmYTlhMDNmNzQyZjg2NDk4ZDllYzIwN2FhY2EyYTBjNjQ1NmYgbGVnYWN5LXRydW5rCis4NjM0IDY0N2U2MGZiM2JhYzNmN2MwNGIzMTBmNjQzMGFiMzcwMzY3MGZhMjEgbGVnYWN5LXRydW5rCis4NjM1IDJlMGFhOGQ4MTM5NjRiYjZiYWRkOWE4MGQzMTNhYzk1NDBlZjQxY2EgbGVnYWN5LXRydW5rCis4NjM2IDJiMDNhMWRmZGJkM2ZlNmM4NDUzMWYwZTFmNDk4YTk3NTI0Y2IxNDUgbGVnYWN5LXRydW5rCis4NjM3IDc5NTkyNzYxYjMzMWEwNjNmM2E1OGFjMjVkYTVhZmY1NjM2N2ViODEgbGVnYWN5LXRydW5rCis4NjM4IGQzZDVhMjVmM2I3MDVjYTI1NjNlMWFhOGUxYzc4YzRiYjIxMzQ5ZGMgbGVnYWN5LXRydW5rCis4NjM5IDkxODNhM2M2Yjg1ZmNhMzYyYmNkODViYTRmY2U1M2FiNTRmYzYwNjQgbGVnYWN5LXRydW5rCis4NjQwIDExOWQxODRiYjVlZDg5MGU4MTc3MjQ3ZmM0ZWY2YTY5OTZiODY5YjkgbGVnYWN5LXRydW5rCis4NjQxIDNlYzVjYThhZjkxZDFjNjM1OGU1YWVlMzU2ZmRiMzhmNTBmZWY2NjcgbGVnYWN5LXRydW5rCis4NjQyIDI5ZGRmMTA0OTg0Mjc0YWZmMmI1OWMzMmM4ZTRkNDIwNTlhZDU1ZjcgbGVnYWN5LXRydW5rCis4NjQzIGExOGUxY2ViZDI5ZmM4Y2ZmNDgzZDAwNTdmZmVkMDg4NTg5MDViMzcgbGVnYWN5LXRydW5rCis4NjQ0IDllNDMyNDY4Zjc1NjA1ZDZiMDQ0NWZiYWE5MmZlMGU3YWNhYzY3OTAgbGVnYWN5LXRydW5rCis4NjQ1IDI1MTRlOWZlMjlmNmQ3MzlhM2YxNGY1OGI4NDdiYmNjYjgyZGQ3YjIgbGVnYWN5LXRydW5rCis4NjQ2IDQzM2QzZTFjMDJmN2QwNjlmYWNmMzM0MDM3YmNiMzk1YzhkNzkyZDcgbGVnYWN5LXRydW5rCis4NjQ3IDNlNmQ2ODhiMGQyYTI3MmJmMjUxYTJjYTIzYTJjNjNmZTU1ZWUwMjMgbGVnYWN5LXRydW5rCis4NjQ4IDlhM2U2ZjBkNmI1YTk3NzUyNDBmM2MyY2FiNTBlYzIxOGJhMDkyNTkgbGVnYWN5LXRydW5rCis4NjQ5IDJmNjA4MzRlZWFmNWQ2M2E5NmNhOWM4NDBkNzdjYjcxOTlkYWUwZDAgbGVnYWN5LXRydW5rCis4NjUwIDI1M2UxMWI2MTEwNmQ4ZWRlZGQzZmIxNTlhZDg0NGMwNjY1MWE3NDcgbGVnYWN5LXRydW5rCis4NjUxIDc3MTM1ZGE5ZjM2Y2RjZWFhMGM4YmQ5Y2JkMjVhM2VlMTlhNmNkOWYgbGVnYWN5LXRydW5rCis4NjUyIDE5ZmU4ODBjYTkxOWZhNzU1NTNkNmM3NzcyNTM3MzFhNmVjOWFiYmQgbGVnYWN5LXRydW5rCis4NjUzIDE4ZjgyNGU1YjllYWU5YmI1MTY5YWFlNWE0NWI3OTAxNjgyZjExN2IgbGVnYWN5LXRydW5rCis4NjU0IGFhY2U1MDJiOGU4YjEzNDQ5YmZhYzA5YmI0ODU2NDA3NjY0NTQ4OGEgbGVnYWN5LXRydW5rCis4NjU1IGI1NWIyMTdmMmUwZDc5YzNmMzg0MjZkNmIzNDFjNmRlNGQ2Yzg3OGQgbGVnYWN5LXRydW5rCis4NjU2IDZjYjY2ZjBjYThkNTQwOGY0YWE4OGZjYzJmYjY1NDk4OGUwYjVlNWEgbGVnYWN5LXRydW5rCis4NjU3IDJmZjc2ZTliYzg1ZDdmZDI0ODg4ODE3NWUxMWI2ZjFiNThhZjllMmMgbGVnYWN5LXRydW5rCis4NjU4IGVmOWEyOTUzZjkzMzQzOWVlYTQ0ZDEzMzFhMTA3YzA3ZjU0NzYzOTcgbGVnYWN5LXRydW5rCis4NjU5IDQzYjhjNGE2OTZkMTE0Y2QwZDFjM2U1YjE5OTcwODliYjczMjUwODQgbGVnYWN5LXRydW5rCis4NjYwIDY0ZTE5NGM1Zjg1NGQwNzUyNGIwM2M2NGFjMDcyMTY2MmRkNDdlZGEgbGVnYWN5LXRydW5rCis4NjYxIDExMjQ5ZDQzOTg0MDQ5YzA2MjEyMmU0MDc0MDhmNmUwZTE2Nzk2YzggbGVnYWN5LXRydW5rCis4NjYyIDMyYWFjZDc1M2YzNDNhYTM4YmQ4OGVhYWY2MzljNzA4Mzg3MDU3ZWIgbGVnYWN5LXRydW5rCis4NjYzIDJlNzU1ZDFmZjY2MWYxNTBhODgxZGUyYzgyNWUyMTBmYzAzZmJmYTkgbGVnYWN5LXRydW5rCis4NjY0IDNlYWJhMjUxYTMyOTk4YTg1MmFkYWIwZjQ5ZjRlNTBlMjQ4ZGFjODUgbGVnYWN5LXRydW5rCis4NjY1IGI3YzJmZjMwNzAzOTlhMmEwOTI0YzZiYjFhZmU5Y2E5YTQxMzk5MGQgbGVnYWN5LXRydW5rCis4NjY2IGU0NzEwMTE5YjQxY2Q2MTI0OTA0Y2QxZWRkOTc3MTRiYTEyMjQ3Y2QgbGVnYWN5LXRydW5rCis4NjY3IGI1NzU3ZTg3ZWIzMmVhMjg4YjAzNDI1ZmQ5MjE2NDI3YjE0MGIyZDMgbGVnYWN5LXRydW5rCis4NjY4IDNhNmI3YTM3N2RjM2E5NjNmMzliNDNlNGM0NTMzM2Q2MTFmYjk1YjEgbGVnYWN5LXRydW5rCis4NjY5IDEyYjhhNDM1OTlkMzM3MzQ4MWNkZmNiM2E0YzYxZWUwZTQzZGYzNzUgbGVnYWN5LXRydW5rCis4NjcwIGJmN2Q3NzA1ZGNlNWRjYWMyNmUzYzAwNjVjNDcyMWNlOGYyNWRlM2QgbGVnYWN5LXRydW5rCis4NjcxIGNmZjEwNWEzYTM4NGE3ZTcyZjQ5N2Q2MzcyYmNkYzk5YzVmN2VmNDIgbGVnYWN5LXRydW5rCis4NjcyIGQ5Nzk4MGU3YzA1ZjMwNWQ0ZThkZTMwNDJiNDg3ZGFhMTY0ODU5NzUgbGVnYWN5LXRydW5rCis4NjczIGFiMDQ1ZWQxMWJjOTY3ODk4MGQ5ODIyZmNkZmU0MmRhMjc2Mzc1OTAgbGVnYWN5LXRydW5rCis4Njc0IDdkYTdiYTVjNjUyNTg0ZjdmMTQ3MTgwMDY5YWMxMzRlNzBhMzc2MTAgbGVnYWN5LXRydW5rCis4Njc1IGM0M2NhOGRkMDA4MTg3NjljNzk4YjFjNjliYmNlYjExOTE3MTk4ZjIgbGVnYWN5LXRydW5rCis4Njc2IGZlODk3MDljMmVhYzBiZjc3ZTAxZTA3ZmUwNTgwMjlmMTA0YmJlNWEgbGVnYWN5LXRydW5rCis4Njc3IGM1N2NlZGUzYzdjMDAyMmZmMWIwZWRlNmQ3MTYzOWVhZGM3NGJjZjAgbGVnYWN5LXRydW5rCis4Njc4IGRjOTc0YjNhNmNmNGY3MjJmNmM4ZTcwMTk2MzM4ZTVmMmU2MGRjNmIgbGVnYWN5LXRydW5rCis4Njc5IGJhMmYxMWE4MmYyNzdjNWZkNWRiOWY2MGJhYTk2YTc5MmMzYmJiMTkgbGVnYWN5LXRydW5rCis4NjgwIGY1N2FlNjhhYTNhZTUyNmVkNjc4ZGZjNDBmOWQxOTQwYmFiMTIzOGEgbGVnYWN5LXRydW5rCis4NjgxIDI0ZDY2ODQ1NGNiMDAwMjMxOWNhMDFjZDU5MjBiNjA0OTRkZWJlMTEgbGVnYWN5LXRydW5rCis4NjgyIGU1NTRiOWY0YTNhYTkyOWUyYmQ3MWM5NmQ5MjI4MWJmNmIxZTk3MTggbGVnYWN5LXRydW5rCis4NjgzIDc3ZjViNmNiZWE2NjI0MDg4Yjc1ZGFlMTA2N2E0Njk5NDllNmJiZGMgbGVnYWN5LXRydW5rCis4Njg0IDljMmVlNmJiZGJiMzIzN2Y2MTZlMjI3ZGI5ZjU5M2VhMTk1ZWIzMTQgbGVnYWN5LXRydW5rCis4Njg1IDdiNDVkOTJlMzg2MWUzNzYwZDg4OGViMjY5N2IwZjM3ZjY5NWVhMGIgbGVnYWN5LXRydW5rCis4Njg2IGZlM2ZhYzFhM2U1MTc4NDZiYmI3YTllM2U0Y2Y4ODcwYjgxMGEwZWIgbGVnYWN5LXRydW5rCis4Njg3IDZhMGJmNmIyNjM5NjRmYWJhNzExNDU1Zjk3ODIxNzIzZDI0MWVhNzYgbGVnYWN5LXRydW5rCis4Njg4IGExMmVlMjdjYWQ5MzIyYjIxMzNjMWNiM2FiZDIwYjkwZjIyMDYzZjQgbGVnYWN5LXRydW5rCis4Njg5IDUwODhlYzVhMTJhNmIyZTMwNTAzNDA1NzhkNGIxNTc3NTkyMzMxODAgbGVnYWN5LXRydW5rCis4NjkwIDM2ZGZjOGNjMWQwMTNhMzMxODcyNGI3NmI2YzhhODM4Yjc0MDU2MzQgbGVnYWN5LXRydW5rCis4NjkxIDRlMWY4OWExMmY5OTI5MzM3MTQ2NzBjMDAxZTFkNzA5M2FlNGZjYWIgbGVnYWN5LXRydW5rCis4NjkyIGViN2EwMWI4NmY5MzE2Yjc3ZTllNjJhN2MxMGMzZGFkM2ZjMmMxYTUgbGVnYWN5LXRydW5rCis4NjkzIDMzY2VmMDE5NjFhNzExMGIwMjcyZGNmZDAxZjkxMDY5OGVmMjY5M2MgbGVnYWN5LXRydW5rCis4Njk0IGI3MDFkZjg1YzA0NzQ3NjVjNjU2MDg1NjYzMmZiZGViMGU4NjM0MGMgbGVnYWN5LXRydW5rCis4Njk1IDhiNTljMDA0YTQ5OWMxMjYxZTBkOTc0YWUxN2UyMWRiNTQwNThiZTggbGVnYWN5LXRydW5rCis4Njk2IDQxOGQzODVhOWU0MjRjNGZjNmI3NTMzMzIwYTdlMTU1NDJlZjNjYzAgbGVnYWN5LXRydW5rCis4Njk3IGVkNDkyNGYzYjJhNTYxYzBjNzU0N2EyYzYyNDZkYTA5ZjhjYTdkMmIgbGVnYWN5LXRydW5rCis4Njk4IGVlNWJkMDg1MTdlODYyYTQ3MzY1Njc3M2RhYmEwYmVmYTAyZDhmNjQgbGVnYWN5LXRydW5rCis4Njk5IDc4YTRhNTYzMmE5MWM1NTlhNzk0M2I2MGEyNmExMTRkOGM3MjNjMmQgbGVnYWN5LXRydW5rCis4NzAwIDgwYmRiYzQ5YjRjNDBiNTkyODcyYzUxY2Q2NDk4NDhlMGU5MmI5Y2IgbGVnYWN5LXRydW5rCis4NzAxIDg1NmQ4N2QyODJhYzZiYTNhMjhhZTAzYmEyNDM4NGMzN2I4OWRiNTMgbGVnYWN5LXRydW5rCis4NzAyIGE4NWNkZjBiZWZjNWNiZmQ0MmM2YTc4MGFlZDc3YTRjZjA0YTkzMzMgbGVnYWN5LXRydW5rCis4NzAzIDk5ODU1MjE5YjM3ZjY4MDcwMmQ2MTVjYmU2N2Q4OGY1YjU2N2IzZTMgbGVnYWN5LXRydW5rCis4NzA0IDYxM2Y5NzZhNTdiNDkyZDg2ZWU2ZjRhY2U3NmFkZTFlYzRmMTY2YzcgbGVnYWN5LXRydW5rCis4NzA1IGI1MzM0N2M4MjYwZWYxNTI2ZGMwMzk1MDA0ZDdkZmFmYjAzNzdjZjggbGVnYWN5LXRydW5rCis4NzA2IDRkYTQ4MDg3MDljOTU5Nzc1N2U1ZTUzZTQ1YjVmMTE1MzQ4NTg2MzAgbGVnYWN5LXRydW5rCis4NzA3IDBlZjBlMDUxYjFmOGQyMmMxM2UyZDQ1YWJjZGY1MjIzMDgzNmUyMTcgbGVnYWN5LXRydW5rCis4NzA4IGM4OTM5MGU1NmI5MTQyZWM4NDljY2Q3OGEzZWVlOGQ5NjBlZjJiZTQgbGVnYWN5LXRydW5rCis4NzA5IGZjNWUxZTAwNDk5NDBhZTc0MDhkMzNmYWQ5NjNlM2NkNDUxMzk3YWMgbGVnYWN5LXRydW5rCis4NzEwIGVmY2VkODMyNmUzZjI1MGE2YTY1MzljZjcyNTViMDNjOTkzZjgxZTggbGVnYWN5LXRydW5rCis4NzExIDRlNWZiOGQ5YWNiMWM2M2M5NTcwMjA2MzkxOTI1YjMyZjFhNzM0YWIgbGVnYWN5LXRydW5rCis4NzEyIDI0ODQ1OTY4MzIzZjkxMDJkNDAyYjM2MmFjYWE2ZTYxYjRhZjYyYjIgbGVnYWN5LXRydW5rCis4NzEzIDZkZmVjMzIwZjkxMDllMTRhMjM2NzhkN2E3NTY2MGVhMjU2NzNmMzQgbGVnYWN5LXRydW5rCis4NzE0IDAzYjg3OTNmNzZjMmNiY2VkNTg2MzAzNTMwOWEyODU0MDAxNzI2YWQgbGVnYWN5LXRydW5rCis4NzE1IDQ0NjJkM2M2MDBiZjk3MmFjNmFmNjIxYjM3MTYxNTRjZTEwNjBlNjggbGVnYWN5LXRydW5rCis4NzE2IGY2MDg3NjgzNWE3NTljMjFlZTQ0N2FhMGY0YmVhMWMwNjgyZTk3NjkgbGVnYWN5LXRydW5rCis4NzE3IDNiNWJiY2FmOTE3Zjg3YzdlYzFiNzVjZmY4MDYxZmNlODU4YTk3NzkgbGVnYWN5LXRydW5rCis4NzE4IGFiNjQzNDRlODdkYmRiNWIyNzY5NDZlNDQ4MmI5YjY4YjdlZWIxMTIgbGVnYWN5LXRydW5rCis4NzE5IDIxYTI4NDkwYmQ5NjFjZThjMWRmOGNkN2RlMTAzYzQ5N2YyZDFhZmEgbGVnYWN5LXRydW5rCis4NzIwIDQyNzlmNGViMjEwYTIxNGYwZmYwZjQ5NzI3MmQ3NzQ0ZjRkYzczNTcgbGVnYWN5LXRydW5rCis4NzIxIDVhYjIxZDFiNjFkODZiZjMzYjAyZTMzOTNkYWI2MzNlNGVmMDIyY2EgbGVnYWN5LXRydW5rCis4NzIyIDE1YmNlYzNkMzI1OTllNjQ5OGQxYTEzZTc2ZDgzODlkNzFiYjY4OTMgbGVnYWN5LXRydW5rCis4NzIzIDRjZjIwZmE4ODNhOTJlMWU3NGE5MTc4NWZhZjA4Mzc3NmNiMmNhNTMgbGVnYWN5LXRydW5rCis4NzI0IDE0OTY0NDRlOGM4YjgzMDQ3ZDI0YWFlZmUyZWFjYjU2MDMzOTVkYjQgbGVnYWN5LXRydW5rCis4NzI1IGFmMTE0ZWQ5ZTYxZGVkNjBhN2JlOTdkOTRlOTMyMDhmNTFlYTY1MmMgbGVnYWN5LXRydW5rCis4NzI2IGYxMGFhZDczZTAyOTMxMTAyNTdhNGYzMGM2NDk0Mjk1ZjBiMjY1NmEgbGVnYWN5LXRydW5rCis4NzI3IDNmYTRiN2FlMGU2YmMxZjBhYWFlNDAxZjA1Y2M5YmM4MGY2ZmNhMGEgbGVnYWN5LXRydW5rCis4NzI4IDNlMGFhNzE2MmM4ODFmNjNkN2ZiZWZiODU3ZjFjNmRjYjZlZmY1NzAgbGVnYWN5LXRydW5rCis4NzI5IDY0MjlkYjVkMGFmNzJkMDA5MWViMDkxZTQ0NTA5ZmE2N2MyMDMxMzQgbGVnYWN5LXRydW5rCis4NzMwIDUyMjRlZDg3N2JhZTdkNTZiNGRlODQ1NmIyMzk3NTdmNGIzZmJhYzEgbGVnYWN5LXRydW5rCis4NzMxIDRjNzZlZTAxZGYwOGRiM2M0Y2E0MWQwMDI1M2QyNjY3N2Q5MjY3OTcgbGVnYWN5LXRydW5rCis4NzMyIGY0NDZlMDhhYzMwMjdiODZmMjdiM2FkNjZhNzc0YmM5ODVkYzc5ZmYgbGVnYWN5LXRydW5rCis4NzMzIGNlMjA5MjcxNDQ4NDM2OWU4OGNhZTI2MmIyNjU0NDg1MmUwMmE5YTEgbGVnYWN5LXRydW5rCis4NzM0IGRkZDI1NTEwZjNmYjZmMzFiZmZmMWFmNDgxZTk1NzUzNjc1NjIxZTQgbGVnYWN5LXRydW5rCis4NzM1IDdjMWVhODVlMjY4NDJhYmQ0MmRiZWFlMjYzMmMwOWViMGQ1OWY4MzAgbGVnYWN5LXRydW5rCis4NzM2IDRmYmNjNDI4OTAxMjZjMmI2Yzk5Y2E2NDllMzk3YzM2YWQyMzZjNzEgbGVnYWN5LXRydW5rCis4NzM3IGMwY2QyM2U3MDhiNTg2ZWQyODhkMmVkMzFmMmU2MGMwZmM5NjJjNGQgbGVnYWN5LXRydW5rCis4NzM4IGQ5Nzk0MWVjNWVlZDAxMTU0YWE3YTZiMzE2OTRmNjQwNmQ5ZGZmNGQgbGVnYWN5LXRydW5rCis4NzM5IDUwNzRmYWIyOTI1ZDhhYzBhODUzYWE1YzgxODZkYmI3YTlhNDEyZmIgbGVnYWN5LXRydW5rCis4NzQwIGFhNmUwNTA0ZTBmMmFiNjg3MzUwYmMwYTY3OThiMWYxYzQ5MTUwODAgbGVnYWN5LXRydW5rCis4NzQxIDNkZjIyZWRjZWNhZDg2OTcxMmQ5NWNhNmM3MjY4YjMzZGNmNzdhMDMgbGVnYWN5LXRydW5rCis4NzQyIDhhNTAyNDlhYTcyZjMzZDJhOTJhNjZkZTk4YjAwZTBmZDNmNjRjOWUgbGVnYWN5LXRydW5rCis4NzQzIDhjMWUwMjA4OTM3OThlMGYzZjkzYTFlMjcyNzA3ZjM5MzJkYTAwNWYgbGVnYWN5LXRydW5rCis4NzQ0IGViOGQxYTA5OGI5ZGVjYjE0NmNmMWYyNjBhODc5ODE5OTVjYWYzMWUgbGVnYWN5LXRydW5rCis4NzQ1IDAyMGEzYzhhYjA3MGJhMzY2NDVlMDA5Yzg3OGNlMmFjMDdmYzE1MDQgbGVnYWN5LXRydW5rCis4NzQ2IDEzYzUzMjlkMmMyZTkxMmZhYTFjZmIzZmUwOWY2OTM4MWM1OGE5YzAgbGVnYWN5LXRydW5rCis4NzQ3IGRlYThkYzRiOGUyMjVkZmJhZDUxZDgwMjQxYjFjOTI0ZGM4YjE5YjEgbGVnYWN5LXRydW5rCis4NzQ4IGU5OTI2MjQxZmFhNDAzMmZiZjJkMTBlMjE0YTRlYWQ1YzA5YmYzNTggbGVnYWN5LXRydW5rCis4NzQ5IDc3NTg5OTU4M2RhNjlkMTA0YTM2MThhOWNmYzVlOGFlYmQ3MmM2ODUgbGVnYWN5LXRydW5rCis4NzUwIDQzMzM3NzViNTVmZGRlZjZhZTViNGM2YjQ0ZTAzZjc5ODM2ZTlmMGYgbGVnYWN5LXRydW5rCis4NzUxIDdhMzgwOGVkYzUzOTA0MzUxMDdhMTFlYjllNDljNWJkNWRiZmZiOTIgbGVnYWN5LXRydW5rCis4NzUyIGY5ZmJkZTc1YzUzNjVhNWY1ODA4OTY3MDQ4MTRiMWI0NGRkOTI0OGYgbGVnYWN5LXRydW5rCis4NzUzIGVkNzRjYzU5YzhhMmM1MDRkMjkzOWVkNGY2OWZiYzBhNjRjN2QzZmUgbGVnYWN5LXRydW5rCis4NzU0IGJiNTQ3MmZiNDg4NWI5NTAyY2EyYzczYmRkN2NmOWE3MWQyZjBjYzAgbGVnYWN5LXRydW5rCis4NzU1IDI5ODQ0MTZhMWIyYjIzOGM2ZmM1ZmNiYmE4MGM0YzQ2Y2MyMGVhMGIgbGVnYWN5LXRydW5rCis4NzU2IDA3ODYwMDQ5ZjFjNDUxNWZmOTI1Y2NhNWM5MTQxZmE5MzE4OGQ0NDEgbGVnYWN5LXRydW5rCis4NzU3IGEyNjZlOTRjYTVlMWNkOTQyODNlYWQ2NzJmMTFlMTMzYzRmZWM1NmMgbGVnYWN5LXRydW5rCis4NzU4IDMzZWY3YmE2ZTc0YmE1MTM2YmQ4YmMwOGQwZWFlYTYzNGZhNjVhNDYgbGVnYWN5LXRydW5rCis4NzU5IGY2ODM5ZTUzMmJlMmI0ZWE1MTI1MjEyODE0MGRiODM4NmFjNzI1NWUgbGVnYWN5LXRydW5rCis4NzYwIGViZGM0OGQwNmNmODVlZDAyOTVkYTYyYzdlNzMwMmVhZGNmZWFmMGUgbGVnYWN5LXRydW5rCis4NzYxIGRhYTYyYzIyNjRiNTI1OTk1Njk3MWVjZTgxNTA1YzRmMDYyNmRhMTYgbGVnYWN5LXRydW5rCis4NzYyIDMzNzA1NGU5ZDRmYTQzNzU2NWM0ZjgxNzI1MjM0ZjI1ZWRkNWM0ZGYgbGVnYWN5LXRydW5rCis4NzYzIDgyY2QyYmFhNDEzNjQ2ZjZjYzgwZDViYTViOWU4MGU4N2EyOWI1MjggbGVnYWN5LXRydW5rCis4NzY0IDQ4OWRiMzYyY2Q0OGQwODMzYThiYTg5MDI5YTc0YTgzYzljMTQwMzUgbGVnYWN5LXRydW5rCis4NzY1IDVmYTRiMTAzM2IwNmZjMTk1MWViNThjZjA4YTUzNmY1MmJiY2JiNjQgbGVnYWN5LXRydW5rCis4NzY2IDY1NDQ2MDQ0ZmI4ZjcxMjliZDZlYjQwZmFhODJmNjVmNmY1ZDdkNWYgbGVnYWN5LXRydW5rCis4NzY3IDQ3ZmEzZGRmYjA5MGM5NWJlZmNiMjc2MDNjNjJmODIyNDBkMTk2MjIgbGVnYWN5LXRydW5rCis4NzY4IDNkNjE0NzRhMTU1MGQ4NjU0NTczMTljOTgwN2ZiMWQ1M2YwNmRiNTQgbGVnYWN5LXRydW5rCis4NzY5IDhlMzFmMWMwN2RjNWIyZWYwMTEwNGVhOWFiYjAzNjYzMjlkOGM4NGYgbGVnYWN5LXRydW5rCis4NzcwIDZjMGEyNjU4YTE1NjEwOGEwNGU5ZTBiMzJiYjVjOWY5N2QxODEzNzggbGVnYWN5LXRydW5rCis4NzcxIGE4NGVmMGE3MTFiYTA5MmI3MDgyN2YwMTNhMTA2NzUwNmM1MDI1OTIgbGVnYWN5LXRydW5rCis4NzcyIGVhYmRlODZkOTdmMDY5N2YyNThjOWI3YmM4Y2YyNGNlOWViM2I5M2IgbGVnYWN5LXRydW5rCis4NzczIGMwZDQzZDZmNTI0MGRlN2U5OTA2NmU4MWQ5NjUyN2JlYjlmMGJiMmIgbGVnYWN5LXRydW5rCis4Nzc0IDUwOTQ3NGI4OGIwMWM0MTdjMzM4YzM4OGRhMTQ4Yjc2YmY5NDNjOGMgbGVnYWN5LXRydW5rCis4Nzc1IGViZDA5OTg4OTcyMWM0ODA5YWYwZmU1OGVkODhlMDhmYzM1OGUzMWQgbGVnYWN5LXRydW5rCis4Nzc2IDAwNTRhMzg0MGE3NTJhNTM3MDNkMmMxZGExNDIzMjNhYTZkMmYzMTIgbGVnYWN5LXRydW5rCis4Nzc3IDQ5MTA1YjllOTk0NzQ0Nzg4MzBiNTc5ODczMDJkNTZlYjlhY2FjMzIgbGVnYWN5LXRydW5rCis4Nzc4IGE0MzM1MmYwZTFlZTZiYWFhZmJhODc3YjI2OTBmZDIzODY2NGFkZGMgbGVnYWN5LXRydW5rCis4Nzc5IGE2MmQ2ZDA2M2MwZjA4OTgzYTI2ZTcxMTc0NmQzZjNmNDFiMDFlMGQgbGVnYWN5LXRydW5rCis4NzgwIGNmMGVmZmMzZjU4NWM3ODhjOGNhMDczNDU2N2JhMDIxMWI5NzcxZDYgbGVnYWN5LXRydW5rCis4NzgxIGIzNzhhMDg4NjYyMDE1MWVkYzM4ODk3ZjdlN2JjNGQyMzE0OGY5MzMgbGVnYWN5LXRydW5rCis4NzgyIDZlMWZhNzZlNzk0MDdkMjQzYWJmZDA3OWIzN2NhNzY4MzkyZmIyZWMgbGVnYWN5LXRydW5rCis4NzgzIDU5YTlmYmY1OTEyODYzZmFhMGQxNzg0OTA3MWRmMjc4OGZlNmFmOTQgbGVnYWN5LXRydW5rCis4Nzg0IGUxZWE0YWQ0NjFmOTIzYjk5OTllMGU4Mjg5ZTM5MDhlYmUyZGVmMDcgbGVnYWN5LXRydW5rCis4Nzg1IGVhNmU1ODcxMzZiNmUzYmJkMDA4MWE4ODRjZTE5MmI2OGRlMDY2N2QgbGVnYWN5LXRydW5rCis4Nzg2IDkwNGE0ZDc4M2EzMzcyYjNmMjFmZDUwYzRlYjUyYTk2NTE4ODFkMWQgbGVnYWN5LXRydW5rCis4Nzg3IGViNTEyOGU4YThlOGUzZDcyOTZlODc2MTZiYmY1ZDJkZTY5NjRiZGEgbGVnYWN5LXRydW5rCis4Nzg4IDEzZmJkOThkODFjYzA2MWM3Mzk1YjFiNzFlOGIzNmQ0Y2VmMmY4N2YgbGVnYWN5LXRydW5rCis4Nzg5IDdiYTc5Yzk0OWIzYTcyNzhmYWZiZTBiZThlZTIxOGJiOWU3MTg2N2IgbGVnYWN5LXRydW5rCis4NzkwIGI5NDU4ZGM5OWQ1MGEwZjEzOTQwODZmODM5YThhMDZmMjcxOWJlOWIgbGVnYWN5LXRydW5rCis4NzkxIDRiNzg1ZTU5ZTgzMTIyMDA1NTFlYjdjODM1NDhkYmVhZTkyZjJlODEgbGVnYWN5LXRydW5rCis4NzkyIGQyNTQ4OWM1YTIyZjRmZmFmZGIwN2FjZjhkZTRjMTdkYWE5ZDQ3NDMgbGVnYWN5LXRydW5rCis4NzkzIGMyMzU5NjY1YmU4MDczMGNlMTJhN2VmNmQzMjg3M2UzNzlmNDE5ZjcgbGVnYWN5LXRydW5rCis4Nzk0IDcxYjQwY2M0Y2MwMzcyZjNjZGViZTI5OTRmYjBiZGUxNTBmODg4N2QgbGVnYWN5LXRydW5rCis4Nzk1IGNkYzVhNDBmY2Y5NzRlOTQyZWU2Zjc5OTQxZjI0NjIwNWFiNTQwMzAgbGVnYWN5LXRydW5rCis4Nzk2IGI3ZjBiOThmNTMyNTE3Zjc1Mzg0YTc3MmFjNjU3ZWY3OWNhMGE5ZDggbGVnYWN5LXRydW5rCis4Nzk3IGE3NWNhNzRkZWVjYWNjODhhYjkzZTNkMDBhZjk5YWEzYjIzYjc5MjUgbGVnYWN5LXRydW5rCis4Nzk4IDkxM2NkMWYzNzNiZTQ3YjZlOTMwNWZlY2JlMmQ2MzNkY2NkNTgzN2QgbGVnYWN5LXRydW5rCis4Nzk5IDA1ZDk0M2M0NTk3YzJkYzNlZWY4OGQ4ZWVkNDUxNTgzNTg1MjQ1Y2QgbGVnYWN5LXRydW5rCis4ODAwIDNmOGQ3Zjc0ZjFiYzU0OWEzNDZiYzJkMGRkYmFiNTY1YmE5ODdiMzAgbGVnYWN5LXRydW5rCis4ODAxIDIwYjU2NDdhMDY3ZWJmZWZmZjU4OGJiNThiNzI3MzlkMDg2ZGI2MTUgbGVnYWN5LXRydW5rCis4ODAyIDVjZGMzY2EwNTNkNmU4MTBhNTY1NTUwZmMxMjQwMmQ3YTRmYmY3MGIgbGVnYWN5LXRydW5rCis4ODAzIGIwMTgzOTk0MDIxYjM3MmZjZjUxM2EyODgzMTA3MzgxYTRlODc2M2MgbGVnYWN5LXRydW5rCis4ODA0IDRiNDc3NWI0OWJmYWM0NGI2MTdhNjRjZjkyZmE0MGU2MWFiNjhhZjMgbGVnYWN5LXRydW5rCis4ODA1IGRmZWFmOTY1ZjQ4YWQzMmYwYmIwZTllNmM1MjBhYTlmMjVjODIxNzUgbGVnYWN5LXRydW5rCis4ODA2IGZiZGNhMTcyODNjMjNiZjAwNGNlZmYyNzk5NzIzMjFjMTc1ZDgyZGYgbGVnYWN5LXRydW5rCis4ODA3IDE3MmM3ZmViZDc1NTdhNTAwZTM2OTc3MmFmYWUyYzA1MTNlMDAwM2MgbGVnYWN5LXRydW5rCis4ODA4IDk3OWM3MTIzOGU1YmIyYzNjMjQ4YTlmZjA5YWMyOGE1MjVmNDEzZmEgbGVnYWN5LXRydW5rCis4ODA5IDJmNGE5MjVlOGI0YjI0MTQzZDMyOGMyMDYzYmJlMzQxZjhkZmY0ZDggbGVnYWN5LXRydW5rCis4ODEwIGRkMTAyNzY2ZWE1MTIxYmNiMzAzMjAzZDgwZWM2ZWVjODMxODAyMjkgbGVnYWN5LXRydW5rCis4ODExIGZjMWMwYTI3YmI5NjM4YTZlMGQxNjA1OTljMDdhMWFhZTVkZjk0Y2QgbGVnYWN5LXRydW5rCis4ODEyIDU3NWY2YjkxMGY4OGI0MTZhNzZlM2MzMjMwMjYzYjUwY2MxNTkyNTkgbGVnYWN5LXRydW5rCis4ODEzIGE0MmIzMWZlOTc2ZjU1NDQxYTI5Y2Q0NTljZDUwYmVlYTUyZmJmMmMgbGVnYWN5LXRydW5rCis4ODE0IDllNDI5NTE4Y2IyMDE3NDUwZGQyZGRhYzUyMGZhMmM0OWVkOTExYTEgbGVnYWN5LXRydW5rCis4ODE1IDRiMDc2ZmM1YmE0MDNlYWFkNWQwMGY0ODk4MTE2ODU3M2QxY2U2ZDggbGVnYWN5LXRydW5rCis4ODE2IDZmOGViNGExZmEwN2ViNzk5MTgxZDJmMGMwMTQyZTM3YjI2YWVjZDMgbGVnYWN5LXRydW5rCis4ODE3IDU5M2Y1NDEyOTY2MTZhMzljOGQzOTBhZGM0MjQ3Nzg2YzVhODZmYTEgbGVnYWN5LXRydW5rCis4ODE4IDFlZDkxNGY4YmYwYTBmZWM4Yzk5ZjJlZmJhM2Y4OTJkZDU3YTMxNWQgbGVnYWN5LXRydW5rCis4ODE5IGU5ZWQwNjRmMzlmNTA1Y2Y3YjUwOWRmNzYyNTNiMTVkMWZmMmFkM2UgbGVnYWN5LXRydW5rCis4ODIwIDY4OWRlNjEzZWExY2NhMjcxNzc5YjNkZjBhMjJlNzhkYzhjZmZhMjYgbGVnYWN5LXRydW5rCis4ODIxIGU0MDg3Y2Q0MGM4NWQ4MDBkYmVkMzZkYmNmMWZkNjg4ZDYxM2Q4MmUgbGVnYWN5LXRydW5rCis4ODIyIDk4ZGFjYzg5NzNhMTIwMmY2NDI4YWVjMmY0NjlhYjU0NTkyZTgyMWMgbGVnYWN5LXRydW5rCis4ODIzIGE1ZjI5YTU2MGMwOWEzMzg4NDFhN2E3ZDMxOGU1NjhlZGI2NzE1MjkgbGVnYWN5LXRydW5rCis4ODI0IDI2NTZkMWVlYTc5MjJkYjlmMmQ1MGRlOGVhZmE2NGIyOGQ2MjMwMzYgbGVnYWN5LXRydW5rCis4ODI1IDZhM2I5ZTdkNDNjMTM3N2QyMzNmMzk4ZDcwMmViMzViMDJjZjUzZjcgbGVnYWN5LXRydW5rCis4ODI2IGI3MzMxYmQwY2NmNTc3Y2I5YTlhNjFhODMwOTEzNGIwNjJjZTZkYjIgbGVnYWN5LXRydW5rCis4ODI3IDlhMTIxYjNmYmViYmJhZjFhNWE1MTUxZDQ1YzA0MWIxNjEwNGI1YzQgbGVnYWN5LXRydW5rCis4ODI4IDM4NjRkZjI5NDk3OWEwNjk2MWYzY2I5N2RhY2VjNWUwYWU3N2ZlY2MgbGVnYWN5LXRydW5rCis4ODI5IGI2MmE3YTU5NDE0ZTdmM2UwZjc4NTU5N2VkYzU5NGY5NjRkNThmODkgbGVnYWN5LXRydW5rCis4ODMwIDY2NmFjY2Q2Njg3OGI3NjgxMDNiYzgwMWYwYThiZWU3OTM4NGVlYzIgbGVnYWN5LXRydW5rCis4ODMxIGY0ZGNiYzAyN2NkMjJlZTdlYTQxYjc2MjYzYWRmN2Q1NWEwY2FjZTQgbGVnYWN5LXRydW5rCis4ODMyIDJlNDBlMjdmOGIyNjBmYzQ3NjBiNDcxM2QxOTc0YmZlNDQ5NmI4ZmEgbGVnYWN5LXRydW5rCis4ODMzIGE4NTdkMmY4NzMzNjRjMGYzZThjZGMyYTk5MDBiNWY0MjU1NTI0MjAgbGVnYWN5LXRydW5rCis4ODM0IDE3NGMxYmNjOGUyZDBkODI4ZWY5NmM4Mjg2NzNlNzdlYzI5YmQyNzEgbGVnYWN5LXRydW5rCis4ODM1IDllODJkZDc2Mjg4ZThmMTkzMGE0OWJmYzNmOGZiMmRmNzNkNDY2ZGEgbGVnYWN5LXRydW5rCis4ODM2IDdkZjc4ZjlkNmQzNDc3NzdhYTEzYTZiYjY4OWUzM2NkMTNlMGVmNmUgbGVnYWN5LXRydW5rCis4ODM3IGQ2NGU4NWVkN2I0NDFkYWQ3ZGYyMDY4YzU2MGMyZjI3NWY3MGQ2M2YgbGVnYWN5LXRydW5rCis4ODM4IDBlN2UyMDA0OTYzNzI4YTM2NTJlZWVmZjBkNDdjZmU0YWI3NDM1NzggbGVnYWN5LXRydW5rCis4ODM5IDMyNjYzMjY3ZWI0MDYxOTYwYzA1ODllMGNiZjgyMWE0YjM4Y2NmNTkgbGVnYWN5LXRydW5rCis4ODQwIDBjNzQ2ODhiYzFmZmE0OTM2MGI5ZjgzYTU4YmRlZWQwNDIxZTBkM2MgbGVnYWN5LXRydW5rCis4ODQxIGYzOWJlZTNmZjIyYmRhYzJmMWUyMmFkOWIwMmQyOTgxYTg3YzM4NzcgbGVnYWN5LXRydW5rCis4ODQyIDIxYjkzZDk4OTI2YjgxNWFjOWVjZTI4NGQ0YjdjNjQ4MmVjYTc2ZGUgbGVnYWN5LXRydW5rCis4ODQzIDcxYzNiZWIyOTQ5OTlkYWFhYTgyZjg0NzU2N2IwOWM1MDBlZWRkZjUgbGVnYWN5LXRydW5rCis4ODQ1IDJjMjliODk4MjY0MzM3ZDAyYTAwZjZkZDVkOTRlZTU4YTUwZGNhNjggbGVnYWN5LXRydW5rCis4ODQ2IDk0ZTBiMzFmZGY1ZjI4MzMxNTg4ODcxZmYxZGFhMjU0YzY4MWQ5N2QgbGVnYWN5LXRydW5rCis4ODQ3IGY4MjI0MDQ2Y2NmOGNiMzM2MjUxNGE4NmNlMzlmOWQ3YTdiNWViMTkgbGVnYWN5LXRydW5rCis4ODQ4IDM2NDA1MzA5Mzk3ZmMyNjQ5MDY3YjkyOGUwMmU2YmQxMWYwMzI3MzIgbGVnYWN5LXRydW5rCis4ODQ5IDY3OGEzZjFkMGM4MDljNzAwYmQyZjRmNjQ5M2Q5Mzc4Yjk5NWJlZTMgbGVnYWN5LXRydW5rCis4ODUwIGM3MTM5YjZmNzM0MDZlMWJiMjhmMTBmNDFiY2M4MTM1MGU3N2UxMzIgbGVnYWN5LXRydW5rCis4ODUxIDQ3YTlhNmRlMjNmZmMyM2FmMjhjMjNjMzg2NzQ1NTRhYWM3NDA2MmQgbGVnYWN5LXRydW5rCis4ODUyIGY2ZWY5YWY0YzhiOTU0YTU1YTdiNGY4ZWJhZWNkMTY0YzY1OGRjOGUgbGVnYWN5LXRydW5rCis4ODUzIGI2ODE4NWQ5NDc3N2MwZDFhZTJhNDliYjQ5NTBkYjQ5NDlkZDA5ZGEgbGVnYWN5LXRydW5rCis4ODU0IDFhZmNhYzc2NThlNTc0NmU0MTNkNGIyMGMzMWU2MzQxOTZjZTYzYzcgbGVnYWN5LXRydW5rCis4ODU1IDRjYjIyM2YyOTMzNzZmYTdmZjA2ZDYwZTM5NjM2YmQ3NzJlMTE4YWQgbGVnYWN5LXRydW5rCis4ODU2IDg5MjJjN2YzYTI4NTUxMTg5NzIxMzAyYzgyMmJmNjJmMWQwNTM4ZjQgbGVnYWN5LXRydW5rCis4ODU3IGI4M2VhMmZlZjMzMmIxYWFlOGFkMWIzYWIwZjIyMWNiMjEzMTZkZTIgbGVnYWN5LXRydW5rCis4ODU4IDM3ZmY3MWNkOTQxZWIwNGU3NDNiYWU1ZTY1YjRiYmRkZWM5MTU0NDYgbGVnYWN5LXRydW5rCis4ODU5IDQ0OTA0NzY0ZGFmYThjNzRkMzJjZjk2ZDU5NDU1YzBkOWRiOGFmYzAgbGVnYWN5LXRydW5rCis4ODYwIDE2Y2QzOTgwNWZkNTE4N2FiNmY4MmZmYWJkMWY5MzFiOWVjZTQwNjggbGVnYWN5LXRydW5rCis4ODYxIDNmMTk1MjUzNDM2N2I5OTE1NDUyNDU2OGY3NzBlOTVmMzkxNzE0NTMgbGVnYWN5LXRydW5rCis4ODYyIDIzOGE4YjYwOTZlMWJiMWYyN2M1NDI1OTM5YTFkMmZmMjczYzZiN2YgbGVnYWN5LXRydW5rCis4ODYzIDE0ZDU4YjVhMjFjNDA4NjhiYzFiOTBhYzg4OTU1ZDQ3ZTU1NjhlZmYgbGVnYWN5LXRydW5rCis4ODY0IDUwNWY1MjAxMGYyYWY5ZGY0OTZmNWFmNmM1YTc2NjMzZTU4ODFkZDMgbGVnYWN5LXRydW5rCis4ODY1IDgzM2ZiMDE0MDlmMzQ5YTRiOTVjN2JiYjk2MTE0MzhkZDQyZGVlZTMgbGVnYWN5LXRydW5rCis4ODY2IDM3ZTY4YjRhNTM5NzMzNjMyMGM2ZWIxMzEyMDM3ZmEyZWU1MmU2ZTcgbGVnYWN5LXRydW5rCis4ODY3IGJkZjRlMjdmNWI5ZTNkMTMzZWNjMmQ2OTcxZjBhNDQ5OWQ4OWUyOTggbGVnYWN5LXRydW5rCis4ODY4IGEyZGYzYzllNWY0M2FjZmJmNDI2NmFiY2YxZTFmNDMyOWU0ZjlkYTggbGVnYWN5LXRydW5rCis4ODY5IDdjYmVmMGQ3NGVhMzQxYWIxODAyMzQzMWQ0N2Q3Yjc3Yzk4NGQwMjMgbGVnYWN5LXRydW5rCis4ODcwIDI0ZjI5NTg2ZGU5NjkwMzY3ZmIwZDkyOGQxZDYyMmFiNTc3ZTkwN2UgbGVnYWN5LXRydW5rCis4ODcxIGY2ZjI1MTFiYjZiYWEyZjgwYzRhOGM1ZjQyMzM4YmFiZTQ3NmM1YTAgbGVnYWN5LXRydW5rCis4ODcyIDc4NGExNmY1NjY0MzQ3NDg4ODg2N2VmZDgxYTZmYmQ0ODQyZjM4ZTkgbGVnYWN5LXRydW5rCis4ODczIDIyZGFlMjYzN2UwODJlZDA2ODc5ZTRhY2FmOGEzNWE2NmQyMzI0NGYgbGVnYWN5LXRydW5rCis4ODc0IDZlYTkyNmI0NmY4YWViYmZmMGU5ZDBjOGEzODNiYzk0Y2FlMzE4OTggbGVnYWN5LXRydW5rCis4ODc1IDRkNTViZmUxZmViYmVjNjM2MjE2NjEyY2RkMWE5YWVmYzA0MjY4ZDMgbGVnYWN5LXRydW5rCis4ODc2IDllZDllYjRhN2YyM2E0ZmY4MTUyOTc2MTUyMWRjMmRmNzQ1M2NjZWYgbGVnYWN5LXRydW5rCis4ODc3IGM3ZmUzODkwZjEwM2U2NjRmMDhkOTMwNjc3NzVlY2M1MGJkZDJmZDAgbGVnYWN5LXRydW5rCis4ODc4IDA0OTBmNmE4NGQzNDc1MTY5OGUzOWNmYzNiODlmMGM4YzkzYTNkNDAgbGVnYWN5LXRydW5rCis4ODc5IDMyMjQ4NzhiZDhiM2E4ZTAxOTBkZTg3NWM4N2FhMTFiZWY0MGQxZjMgbGVnYWN5LXRydW5rCis4ODgwIDlmODEzNGU5NTU2NWI0YTZlNDFlOGEwODlkMmJmODhiNGE4MzM2YTkgbGVnYWN5LXRydW5rCis4ODgxIDk0NTJiNzdkNjdlYzlmYTBlNmYzMzAyYzMwOTJkYTU4MDhhZWYwZjYgbGVnYWN5LXRydW5rCis4ODgyIGVkNmY2ZjAzMjIxNzE5YjJmNjYwZTgwZjE5YTkwMmI1N2VlZDYyYzcgbGVnYWN5LXRydW5rCis4ODgzIDY1MTc3YWI2YTY5NmM1MTk5YTBjZmJiZGNlMGY0MGQ2ZDdiYzhlMWIgbGVnYWN5LXRydW5rCis4ODg0IDgxMTU0YTUxYzE2ZWQyYTZkZWZlMTkyYmExZTJjNWZkZDI3MTQzMzMgbGVnYWN5LXRydW5rCis4ODg1IDU3NDg0ZTIxZTMyNzFkYjJkOWM0YmUzMTJlOWY3ZTlhZmJiMjBkMTUgbGVnYWN5LXRydW5rCis4ODg2IDE4NDA5M2Q5NmQyYTJiYjhkY2ZhYTBmY2ViODQ0OTBhOGVkMmZiOTIgbGVnYWN5LXRydW5rCis4ODg3IDRhZGM3ZTk2YWJhMjUyOGQ2NzFjNGY0OTg0ZjliY2UwZDYxODU3ZTEgbGVnYWN5LXRydW5rCis4ODg4IDQzOTM4MDBmOTI2MTU5ODEyMmI2ZDhmMWU5YmNmMGUyNDNmNjY0NWMgbGVnYWN5LXRydW5rCis4ODg5IDM4NjU1ZTNhZDE5MjU3ZTM1ZjE4NGJiM2E3MDNlOGMzOTMxZmU1MWEgbGVnYWN5LXRydW5rCis4ODkwIDA0ZjNkMjU5ZjllOTlhYzdlODY3YWIzYTRhMjJiMzdlNmFlYTc3YjQgbGVnYWN5LXRydW5rCis4ODkxIGMzNzhlN2EwMjM0YTJhMTAzN2I5YWVlYWMxZjQ3ZDBjOTRiODNjZmEgbGVnYWN5LXRydW5rCis4ODkyIGVjYzUzZWE4ZDRlYjY1YzA2MjRjNDdmMTVhY2ZhOGI5OWU4Njg5ZTcgbGVnYWN5LXRydW5rCis4ODkzIDIzMDgzYmQ4YzI2MTg5ODc5Y2ZjNDFiN2EyNGQ2OWIwOGMwOTE4ZjIgbGVnYWN5LXRydW5rCis4ODk0IDdmNzc3MTBhMjJkMGE2NzFlZWRmZjFlMzk5OWQ5MDVhZGNjNTcwNTYgbGVnYWN5LXRydW5rCis4ODk1IDQ0OTFmODRhYzIyM2ExNmU5MTJmYzcwNGMxNjA2YThkYmYzYjljMjAgbGVnYWN5LXRydW5rCis4ODk2IDQ4ZGYwMWVhYTA5YTI0NWU4MjU0MDUwNWEzZjM4ODBkZjNlZTRlODkgbGVnYWN5LXRydW5rCis4ODk3IDZmMDY0MTBlMzA3YWY0NTM3NWQ5Y2Q3YmYzMDM0YjgzY2NkYzE1YzEgbGVnYWN5LXRydW5rCis4ODk4IGFiZWQ3NTRjN2I3ZjViMTMwOWNiNzBiMWQwNDhkN2Y2Mzc1OWZhMTAgbGVnYWN5LXRydW5rCis4ODk5IGM2MmUzNGVhNDY0YjJkNDBlN2VkNjY0OTBjZjI2NmMyODdjOTI2YjQgbGVnYWN5LXRydW5rCis4OTAwIGZiOWIwZDI0NmVmMzRlYmY2MThmNjIwMGViNzVmYjEzYjhjNDIxYzMgbGVnYWN5LXRydW5rCis4OTAxIDY0NDQ4NGUxYTM3YjdlZTJiZDQzNWRhOWMwYjZlZmE2NjY0MTc1ZmMgbGVnYWN5LXRydW5rCis4OTAyIGFhY2E0N2VmNTVhOGQ0ODNlOTI5NWJkYzg1ZTFiODZlYWJjYzFmY2EgbGVnYWN5LXRydW5rCis4OTAzIDVmMDIxNjMwMmNkOGY0YzgzNzVjNzZkNDE0MzJlYmQ2MzI0NDFkYjkgbGVnYWN5LXRydW5rCis4OTA0IDA2ODI1NGZlNTYxN2U0YmFmYjMyMzY5MGE5NWU5ZDc2ZGI2ZjI5ZmMgbGVnYWN5LXRydW5rCis4OTA1IGFlZTU2ZTlkMTBmYzkzNTkyYTFiMzhiNWEwZDVlMTEyM2I3N2ViOGYgbGVnYWN5LXRydW5rCis4OTA2IGUzNTZhMzQ0ODE5ZDdhMjI2MGRiNjkxY2U0Zjg4ZDU3MTI1YWE2ZTQgbGVnYWN5LXRydW5rCis4OTA3IDE0YTcxMTI2OGM1MWJiNjkzN2IxNzA4OTIzZWIwOWYwYTI2MWQ5ZDIgbGVnYWN5LXRydW5rCis4OTA4IGU3OGI2MTc0YmVjOTIzZTBhM2ViOGE3OTI5Zjg1NWRiOTM2YjJlOWIgbGVnYWN5LXRydW5rCis4OTA5IDBkZjAxNTkwNTEwMDhlYjUxYmJkOThiNTM4YzNkMDE4YTM2NjA0NjYgbGVnYWN5LXRydW5rCis4OTEwIGNlNTZhN2NmZTk2Y2ZkMTAxYzZkYjMxZTY2OTZmNjY3NDIxMmI0NTAgbGVnYWN5LXRydW5rCis4OTExIDQzNTYwNmIyMTVjNTJiYWVjZmUxYTQ0ZDA5N2IyZDJhYmFmZTQ3ZjUgbGVnYWN5LXRydW5rCis4OTEyIGM4M2ExYjIxYzQyZDJhMDg2MGUyMjlmYzBmYmNhZDlmMGMzOTE1Y2IgbGVnYWN5LXRydW5rCis4OTEzIDA1M2JiYWIwZWM1M2UyMTEyMjgzZTE4OTM2NzgxMDczZWU5NTg0MzggbGVnYWN5LXRydW5rCis4OTE0IGU1N2M3MmEyYjA2NTZkMWZhMGIxMWUyMDE3YzczZTdiMjgxODYzOTMgbGVnYWN5LXRydW5rCis4OTE1IGYzODRjYzExYjc1YmYwNjEzMjVkOGVlMzBkMTQzNmZlMTRmNjA2YWQgbGVnYWN5LXRydW5rCis4OTE2IDllNDZlY2YwM2MzZTgzMzBlOTNhMWUyNzVlNGNiNjNlMjA1ZjUxZDMgbGVnYWN5LXRydW5rCis4OTE3IGQ3NzYwYTFiYTRjYTc2OWU2MjQ3YTVjMWZjM2NkOGVjZDFlN2ZlYTkgbGVnYWN5LXRydW5rCis4OTE4IDQyYmM3OTJhYzY5ZmFlNTVmZjIzMDRmNDJlZTU0N2M3OTI3OGZlMzEgbGVnYWN5LXRydW5rCis4OTE5IGQ5ZTUxNDUxZWJkZjkzMDJjNGM2MmZkMGUzYjg5ZmMyNTMzNWU2NDEgbGVnYWN5LXRydW5rCis4OTIwIGRkZmNlZmMwZDgyNjgwN2UxZTlhNThmZjYzYTNjMGZlNzRhMmQ5ZGUgbGVnYWN5LXRydW5rCis4OTIxIDEwOGZmZjI1NDYyZDU2MjJkZDZhNzVlNjQ0Nzk4M2Y4NjNmMGI2YTUgbGVnYWN5LXRydW5rCis4OTIyIDkzYzAxNWVjMmQ1N2NhYWY4NjBkMzk0ZmQ3MmYwNDE3N2IxMTQ1NDggbGVnYWN5LXRydW5rCis4OTIzIGJkZTVhYWYzZTU4OTc0NGIzNGNhYjJiYzYwMTkxZjlkZjM5YTE4OWEgbGVnYWN5LXRydW5rCis4OTI0IDU4MDM3ODJlNzNmZmI3MmRmZGQ4ZjkzYTVmYmFiYzE0ZDlkNmEwNTMgbGVnYWN5LXRydW5rCis4OTI1IDMxYTUwNDY4MzY2YmFlMzdjY2MxMTZmYTgwNDhiMmFlMTM4NTQ1NDMgbGVnYWN5LXRydW5rCis4OTI2IGI4NTRjYTQ2MDVlMTIyOTgxNDBiYjI3MGUzNWVjN2I2YzdjZDUwY2YgbGVnYWN5LXRydW5rCis4OTI3IDMzNTBjNzM1NTBlZTgzZDIzMDkyNmY3YjcxOTkwOTY2YjdjOGRhMWYgbGVnYWN5LXRydW5rCis4OTI4IDc3YTIyZDQ5ZGQ4NTg1ZGVlYzIxZmQ1NGRlZjU5YjJkZmJhZWM2YWUgbGVnYWN5LXRydW5rCis4OTI5IDEwNDEzMTc5YTcyYTU4OTAzZTQ1Yzg1Y2FmMGE3MTA1OWJhYmI0ZTAgbGVnYWN5LXRydW5rCis4OTMwIDdlYTQ2NTgzMGVmNDVkYmRkMzA5ZDdiNWZjZDg5NDM5NWMxMmExYTEgbGVnYWN5LXRydW5rCis4OTMxIGM5YjEzOWI5YzVmZmY1MDNjN2Y1YzBkM2MwYTMyZjYwYzlkN2Q1MjQgbGVnYWN5LXRydW5rCis4OTMyIGI1YjM1YTBjZjFhYTkyODI2MjZjYTkwOWVkYmE0MjllZmNlOTgzN2EgbGVnYWN5LXRydW5rCis4OTMzIDIxMzhjZjNiZGM1YWI4NThmYjI1YjQwYWJmNGY2MjRiOTU5MmY3ZWYgbGVnYWN5LXRydW5rCis4OTM0IDJjNWMzOTliNmVhNDYzMzkyZTIzNjMxM2E4NWZiN2UwMjk0YzRlODMgbGVnYWN5LXRydW5rCis4OTM1IDkwZWVkOWE1ZDA3YTgzNThkMTIxMDRhYmJjMmFiMDhjM2JkNDhiYmIgbGVnYWN5LXRydW5rCis4OTM2IDM5MzQ4OTc0YjIyZTg5MDA3ZmNkYmE5NDFmYzI4ZGM3ODBlOTlkYTEgbGVnYWN5LXRydW5rCis4OTM3IGI2NWViNDQ0MjJiYTkzMjJmNzkxYThlNDNhZjYzZTQwNTMyODVmODAgbGVnYWN5LXRydW5rCis4OTM4IDc3N2FlNTI2MGExMmY1YzgzYzdlYjcxNDFkOGJkYTdlMGM4NjE5OWQgbGVnYWN5LXRydW5rCis4OTM5IDk5ODYyNzJjZTI0YTE1YzRlZmFiZDZmMGQzNmVmODkwNWJlMmQ1ZDYgbGVnYWN5LXRydW5rCis4OTQwIDIyYmVkNTc5NDUxNGM2Mjc5MTA3NTEzNDcxOTI0NzI0NDMyZWJiODggbGVnYWN5LXRydW5rCis4OTQxIDBiMmJjZjA0MjRhMDUzYTU2ZWUwY2E2OGY3ZWMzZGIyYzU3NjE4ZGYgbGVnYWN5LXRydW5rCis4OTQyIDRkNTQ1Y2M2ZmE5OWM0YjBhY2Q3Y2FjMWE0ZDNmZDkwNTg3MmQyYzcgbGVnYWN5LXRydW5rCis4OTQzIGMxNDJlYjUzM2ZiOTBmOWIzMjEzNDFjNzE3NThiZjFmMjRiMDQ4YWIgbGVnYWN5LXRydW5rCis4OTQ0IDk0MTYzNzU5Y2IwMjFiZGE3NzljNjJkMTA0YzM4NzNmMzdhMTQ2Y2YgbGVnYWN5LXRydW5rCis4OTQ1IDZhOTFhMGY2NDJmZTdiMGFjMzZiNzQ0MzJjNjAyYjViOWRjOGY2N2UgbGVnYWN5LXRydW5rCis4OTQ2IDEwM2M2Mzk4M2NkZmE0ZGJjYTMwOGQ1YmIyZjg2MDJhYjg5YWFiOGMgbGVnYWN5LXRydW5rCis4OTQ3IGRjYTliZGY1ZWEwOGE4MGMxZjNhNmMxYmIzY2I2MzM1Njc0NmI0M2UgbGVnYWN5LXRydW5rCis4OTQ4IGVlNGYyYjFjZWVkYTRhYWMyNmQ0NDQzNzYzMDUzZjBkZTdjZWFkOTUgbGVnYWN5LXRydW5rCis4OTQ5IGRmNjU5ZTIzOWU5MDZkOWI2MTY3Y2Y3MTcyNWU2MmIwM2FmMDlmYmQgbGVnYWN5LXRydW5rCis4OTQ5IDc0NjY1NGEwYWY2ODBjN2Q5YjgxNGIyMTBhMDI2ZWI5MWJlYzk1MzMgbGVnYWN5LXRydW5rCis4OTUxIDJlZGU3YzJhYzkyY2YxZWU4OWU4ZTUyNDE5Yzg5MDFiMDM0Yjc1ODYgbGVnYWN5LXRydW5rCis4OTUyIGQxNTMyNDJhYTZiYjJkYzNiMWZiZWM4YzlhZTJhZTc4NTk0ZjY4MWIgbGVnYWN5LXRydW5rCis4OTUzIGY1Zjc0NGVkODEzN2M3Y2MzNGJmZDExOGQ2NWM2MjNlNmU0MTQxNjMgbGVnYWN5LXRydW5rCis4OTU0IDdhYjBiMDUyOTNhYTQyNzIwZDE1MWNhODNjN2UzYmRlYjlhNTUxMWUgbGVnYWN5LXRydW5rCis4OTU1IGM2N2Q4NDIxZmEyMTY2NjgwOGEyNGM2MjM4NzdlMzMyZDdlNGM1M2MgbGVnYWN5LXRydW5rCis4OTU2IDI5N2E1NDFlYjg2NTc0YzIzMjdiMmMwMjE4ZDY5MTM0YTFmMGE5NzEgbGVnYWN5LXRydW5rCis4OTU3IDU4YjRkOWVhOGU1MTM4NDJmMzQ3ZTNkNWE0MzJmM2ViZmMxNjcyNDIgbGVnYWN5LXRydW5rCis4OTU4IDcyN2I1MjAzMTIxMjU3N2Q5ZWQ1MTk1Zjk0N2JmMGFmMDE0NzE0ZDEgbGVnYWN5LXRydW5rCis4OTU5IGNiMDVlYTJiNjNkOWQwMDAwNjdiNWMyZTE1NzJmZTE2M2M1MDg3MzcgbGVnYWN5LXRydW5rCis4OTYwIGQzMTFiNjg3NTRjMTg2ZThjZDNkZTcwMmJiNjM0MGFjZTlhOWIyYzcgbGVnYWN5LXRydW5rCis4OTYxIDU2M2FlMjFiMjA1NzgzNjM5ZDg2MThmOWM3YTlmYzBkMGRmODllYjYgbGVnYWN5LXRydW5rCis4OTYyIGI4ZTI2MDc4ZDhiMWFkMzhmNGEyYWQxMmIwYjhmNGE3NmY1ZGZlZDQgbGVnYWN5LXRydW5rCis4OTYzIDJmMjU4MTYyYWFlMmFjZGZlZDc2YzU2ZWJiYjJiZGUzNjkxOTVkYmQgbGVnYWN5LXRydW5rCis4OTY0IDE2MTgwNjA3MTZlNzgxOTUyM2JmMWM1MDIxNTEyYzhlMTM0NGZhNTYgbGVnYWN5LXRydW5rCis4OTY1IDYzMDcyNTgwNWM2NjIyZmZjNzI0ZTg4NDBlMjdmZmQwMTc2YzRjYjUgbGVnYWN5LXRydW5rCis4OTY2IDM3YzhkN2Y5NjdjNzFjMGRlNDE0YmFjYTkyYjcxZTlhYmU2OGY4ODMgbGVnYWN5LXRydW5rCis4OTY3IDRlMWEwZmUwYWNlMjRmNTYyODQ2MTAyNTgwNjUyZTQ0YTE5MTY2MmEgbGVnYWN5LXRydW5rCis4OTY4IDJmOWQ1OWRhNzJmYjg2ZjQwNGI3YTBlNDE1YzI3NGMwMDllYjQ4NWUgbGVnYWN5LXRydW5rCis4OTY5IGFlNzRiNmNjZWY1N2Q0MzdjZjc3OTY4MDNhZDVjZjBmYzBkMjNkNGIgbGVnYWN5LXRydW5rCis4OTcwIDIyMmRkNGQwNjU4MTI5NGYyMjk1NjVjNDQ3ZjljNDkxYTI4M2U5NmQgbGVnYWN5LXRydW5rCis4OTcxIGJiOGMzMDA0ZDc1OGVjMWJlOWVkNzMxNjg5YjUwZjBiYTUwMzI0YTQgbGVnYWN5LXRydW5rCis4OTcyIDE3ZTNkOWI2YjQyZTgyODU4MTM0YzJjNDNjMDdiNjZkZDRkNDA1YmEgbGVnYWN5LXRydW5rCis4OTczIDM5ZDJhNGRiN2MzYjgwYjgwMzZiMzZmZWJlNmI5MjI0MGI1NWZmMDIgbGVnYWN5LXRydW5rCis4OTc0IGNlNDVlZjRjNjVlOTFiZTdiMjliNWExMzViOTcxNGFmMTE2MWM3YzcgbGVnYWN5LXRydW5rCis4OTc1IGIzOGE3NTViOGRiMWM4N2FlZTMwY2IyMjlkYjM4NDE2MmQ1NTM1YjYgbGVnYWN5LXRydW5rCis4OTc2IDQ5ODFmZDJiMzIxMTQwNmFiYTVkMTZlNGM0ZWM0ZWJjYjljZTc3MTYgbGVnYWN5LXRydW5rCis4OTc3IDZhMDhiNjBkZTgyYzcyMzBiMTJmZmVkMDY1ZDhjNmFhNjE5YjU4ZGIgbGVnYWN5LXRydW5rCis4OTc4IDg3OTEzMGYxZmY1ZmNiMTIyYzcyODUwNzJhNDc4NmEwNDA4MWJmOTYgbGVnYWN5LXRydW5rCis4OTc5IDllZjljYWRkOTc4YzU0YTgxMmE5NjVjNWI1OTM3MDAwMWFjZWJjYmEgbGVnYWN5LXRydW5rCis4OTgwIDJhMmU1YjczMWQxYzc3NjMzOTk5YTEyYzk4NjIwMjFjZjY1MjIyNDkgbGVnYWN5LXRydW5rCis4OTgxIDk4YjJhMGEwOTNjOWQ0OWM5N2RkN2VhNWRkZjNmNTkyN2VmYzM4MGQgbGVnYWN5LXRydW5rCis4OTgyIDA3MWEwZDNhNDliOWY5MGY1YzBiZjBmYmFmMGVmZjk5Njg1YmYyNDkgbGVnYWN5LXRydW5rCis4OTgzIGIwNDk0YmI1MjAxOTk0ZjkxNDk2Njc0ZjVlNGM5YjQ0NDJlMmQ3OWUgbGVnYWN5LXRydW5rCis4OTg0IGRmNmRmYWFjMmQwYjUxYTJlZmQxMmRmY2RjMWQ1MDE1MzQ2Yjc0MGUgbGVnYWN5LXRydW5rCis4OTg1IGEwMDA3M2YyZTA4N2FiNGNlMTcyOWMxYjIwYjhhNDZkYjJhZmE0NzYgbGVnYWN5LXRydW5rCis4OTg2IDgwNzM1ZmNjMzVhZmZiNzI4MTQ0Zjc2NmVjMWM1NGU0YmE5NmE3NmMgbGVnYWN5LXRydW5rCis4OTg3IGYwMjJiYmQxMjMzODY4MDFkMWQ0NjVhMThiNzA5NDI4YTg5MzkzYzQgbGVnYWN5LXRydW5rCis4OTg4IDc0NTE4ZDg4MmVkMzFhZTk0MzVhMmJlMTE3ZTc0Yjk1YWViN2EzY2EgbGVnYWN5LXRydW5rCis4OTg5IGZkYjc3NjM2YzA3NDMwMmYwNmE1ODM0NDEzNTFkNzllMjI0NzM1MzEgbGVnYWN5LXRydW5rCis4OTkwIGEzZGQ1OTEwODExOTZhMmJjYWNjM2Y2NGJlMjA4Yjk4NjM4YzkwZTcgbGVnYWN5LXRydW5rCis4OTkxIDZjNWY3ZTc0ZmE4ODAxZmU4Y2U4MTIyNjQwYzU0NGI3NjUxY2E1MzAgbGVnYWN5LXRydW5rCis4OTkyIDZkOWNmYjUzYzdlZDJjMmNkZjQyOTBkODFjMzkzZjgzMzhiM2QzMzkgbGVnYWN5LXRydW5rCis4OTkzIGVjY2RmZDE3Mjc0MDYxMWViMTViNWYwNTQxNGRkNmE4ZDk1MDU0ODcgbGVnYWN5LXRydW5rCis4OTk0IDdlNTE3MjdkM2I3ZWYzZTQyMzA0NTFkYjNhOWE0ZDkwN2ViZWQwN2IgbGVnYWN5LXRydW5rCis4OTk1IDFkMzBlNTJkYzM0ZDliNDM1NzFjZTJiMjcwMjFjYTg4ZTQ2MzQ5NDkgbGVnYWN5LXRydW5rCis4OTk2IDFhZmYxOTc4M2Q3NDZmMWI3M2U5NjdlYzFiNWVjOWM4ZTVhMDg5ZWUgbGVnYWN5LXRydW5rCis4OTk3IDI0ZGEwMzVjZWI2ZWJkMWM4NWM4MmFiMTE0MzM5ZTE1NGU4NzViYTYgbGVnYWN5LXRydW5rCis4OTk4IGYxYjE3Mjg0NTJjMTMwYjJiNTQ1Y2YwNzhiZWU1YTViZWFkYzM3OTUgbGVnYWN5LXRydW5rCis4OTk5IDNmODQ1NThhMjRkZDg0ZmYyZjM0ODEyZWI3YmUzNTE0NWRkNjE4OGIgbGVnYWN5LXRydW5rCis5MDAwIDk2MTRmZGQ4MTM5MzZlY2I4OGIxNDUzOGRkNjc4NzA0NTUxZjM0NWMgbGVnYWN5LXRydW5rCis5MDAxIGVlNDk2ZWYxY2E4Mzk5YjcyZjNlZjRlMGY1NTU0MmI2NWIwOTNlNjAgbGVnYWN5LXRydW5rCis5MDAyIGU5YzY3YzE5MmNkYjY2NzQyZDEzOTBmMjU5YTQwZTkzODViYTdlYmQgbGVnYWN5LXRydW5rCis5MDAzIDVjY2IxMmFmZmI1NGMwYzcxNjkxOThiMTRlYzM5MTMxOTcwMWMxNTUgbGVnYWN5LXRydW5rCis5MDA0IDQ2ZmE0NzE3Y2YyNGFjYjdmY2M1N2I5OGViYmU4NTRkZGEzNjRhMzkgbGVnYWN5LXRydW5rCis5MDA1IGJjMTkwMDI0M2UzMzlhMGZkMmYwZTAyZDUzYjc5Njg1NTdhYjAzNGYgbGVnYWN5LXRydW5rCis5MDA2IDcyM2M4OTg4MzE4ODFkMDc1ZDA4MjllZTkxNjU4NGRiNTA3Y2E2MDMgbGVnYWN5LXRydW5rCis5MDA3IDg5ZTJlYWFjZmQ5MDAwYWRkNzFiOGYxYWM3Nzc3ZDk3Zjk4ZjM2MWYgbGVnYWN5LXRydW5rCis5MDA4IDBjZDFmMmYxZDgyZDFjOTU4Mzc1ZGNjZDZkNjU5ZDRmOGVlNjhmMjcgbGVnYWN5LXRydW5rCis5MDA5IGU0OTdhN2ZjMGFhODU2Yzg1ODQ1ZmIwMTcwNjA4Mjg4ZDY5M2IwY2UgbGVnYWN5LXRydW5rCis5MDEwIGQzNjk2MjllOGMyN2MwYTNkZDBiOGZlMDNmZDlhMTI5YmY1YzA4ZmUgbGVnYWN5LXRydW5rCis5MDExIGJhNjUzNzI0MDhkZGM2YmJkZTFhMmRmMzU4M2FiODAxMGZiNTdiYzAgbGVnYWN5LXRydW5rCis5MDEyIDA4NjRhNTU2NmQ4OWFiZGRkNWFlYWUxZjYxMDliODNjYzdhMGE4NmMgbGVnYWN5LXRydW5rCis5MDEzIDY0YzVlZmE5ZDJjNGU0YzAwZmVlOTI0Njg5ZWNjYzY5OWNiNzNiMDkgbGVnYWN5LXRydW5rCis5MDE0IDE4NzAzNTM4YWY0ODE4MTcxODE5NDcyM2U0NTdlMDJmN2NiYTM2M2UgbGVnYWN5LXRydW5rCis5MDE1IDI1NTA1ZTU2M2IzN2I3MmZlOTdiYWMyMzE0NzU3NjNhMDkzMzM0MTAgbGVnYWN5LXRydW5rCis5MDE2IGExYTJiNzExNTk4Y2Q3YWFlMWIyNTU3ZTdmYmM4NTNjOGYwMjg2ZWUgbGVnYWN5LXRydW5rCis5MDE3IGQxZjQ2YTA4ZDc4YTg2ZDJjNTkxMWY2ODA2OGExODdhZWU1ZjZiZTMgbGVnYWN5LXRydW5rCis5MDE4IDgwZmMwYTkwNjg4NTJlYWVmOGVmMmIwMmFhOGEyN2UwY2E5OGQ4OGMgbGVnYWN5LXRydW5rCis5MDE5IGIyZGZmZjA2Nzg5YzZkZjc3MjY3MmRmMzhlZmJkYTgxOGFhMTUzYTAgbGVnYWN5LXRydW5rCis5MDIwIDYyYmRiMWNiZTBmNTVmOTc1YjY3NzgwZDQxOTcwMGIzY2Q0NjU3NWUgbGVnYWN5LXRydW5rCis5MDIxIGZjMzI3ZWMxNWM3ZWRlMmRmN2ZiNmRlMzI4YmNlMDFhNzk3ZTExYzMgbGVnYWN5LXRydW5rCis5MDIyIGQyODkzMmQ2NzZjOGI5ZTRjNTg1ZGZjYWI5OTFmYzRjNWQ2YTM5MGQgbGVnYWN5LXRydW5rCis5MDIzIGI0NTAzMjI4NTgzYzRiNDY3YjNjNTA1YTRmYmQzZjk1Y2I0OTYyNzUgbGVnYWN5LXRydW5rCis5MDI0IGM5MTVjOTRlYmI2YmYzYThhMDIzZmQwNDVjMmI1ZmE3YmI5OTY4YWEgbGVnYWN5LXRydW5rCis5MDI1IDcyNDM4MmFmNTMzOWI4ZTNkMGEwNjUxNGJkN2YxZjg2OTYwNmI0NDggbGVnYWN5LXRydW5rCis5MDI2IGRkMWU4MzMyM2M0NWZkZTE3MDgxNjk3NTZiN2Q3NTQ5OTc1NzZhMmYgbGVnYWN5LXRydW5rCis5MDI3IGE4ZTNiMmU5ZjVkMjI4MGMyMTRjZDJhNWY4YTVhY2Q1OTE1ZDVkNGYgbGVnYWN5LXRydW5rCis5MDI4IGY0MDZlYzM1YmZjYTY5NzdjYTUyZWZhZmFhZjA1MTVlNjZkN2U4NzggbGVnYWN5LXRydW5rCis5MDI5IGJkZDRjYjJhODNiNTc1MDE3ZTU0M2I4M2Q0ZDY0NGI5YmIyZGQ5NTEgbGVnYWN5LXRydW5rCis5MDMwIDVkYmZmYzc4NDRmNTVhOWVjMDE5NzBhMGRiZmU0M2Y0NjNjODllMGMgbGVnYWN5LXRydW5rCis5MDMxIDJjNmYyZDkyYjMxNTA4ODgyYTE3YzQwMTAzMWNjODI2YjY2ZGFkOWIgbGVnYWN5LXRydW5rCis5MDMyIDdjOWM0ZjgyMjRjOGIyMDc0YmQyYWQ4YTA0OWI5ZmY3MDVmYmMzODQgbGVnYWN5LXRydW5rCis5MDMzIGE1ZjdlYjg2OWYyMWMzMzI5MjkzNTJmMzQzNmY0OGY2NTlkYzVjZTkgbGVnYWN5LXRydW5rCis5MDM0IDQyODBiMjcyOWNjZWNiMDk5YjFjOWM0NWZiZTE2ZTk3Zjg3ZTQ0ZWEgbGVnYWN5LXRydW5rCis5MDM1IGIzMzFjZDQ3ZTBiYzcxMTcwMGVlZDhlYTg5ZjE0NmE0MWRmYjY4MzUgbGVnYWN5LXRydW5rCis5MDM2IGVlMzA3Zjk4NDVhMzI2Y2I1MzUwMjYxMmU2NzU4NGE5YmYxODA0ZDMgbGVnYWN5LXRydW5rCis5MDM3IDFhMjMzYmU1ZmMxN2E2ODY4MDY1NDZhZjRkNjdhZjMyYTc3YWRmZjkgbGVnYWN5LXRydW5rCis5MDM4IDZlOWFhOTJmYWI2OTI3OGZhMjEzODY2YjE5NGUwYTA5MDFlZTA2NjkgbGVnYWN5LXRydW5rCis5MDM5IGZkMmQ0YzBhZTY0NjcyYjk3Nzg0YzM4NjZlN2UzNWE1ZGMwMDIzMTEgbGVnYWN5LXRydW5rCis5MDQwIDUzODM1MDQzNTI4YzhiNmYxMDcwMzc0YTgwYTg0YTA0NTlkZGIwYmUgbGVnYWN5LXRydW5rCis5MDQxIDJhYTEzYzBjOGYyZjY2MDllN2Q1YTA2Y2M3ZTk2ZjRmNWYxNmE2NmIgbGVnYWN5LXRydW5rCis5MDQyIDgxMmFhZDhjMDVjMjkxNDE2ZjdlMGVjYzNjYjdjOTU3NzRmZGFkOGIgbGVnYWN5LXRydW5rCis5MDQzIGUxYzhkNzE4MmQ2NjdkMmM1YWE2MmE5NWFlOTkzODcwOTEwYTBlNWYgbGVnYWN5LXRydW5rCis5MDQ0IGJlMmEwMjM1YWU4NGE0ZTQ5YzdmNjgxODA1ZGM1MDdkN2YyNWE0ZWIgbGVnYWN5LXRydW5rCis5MDQ1IDNmZGQ3MTVlNmVmOTA2MWViNDAwYzVkYjZiYTI3ZTQ5N2QxMGJiZDQgbGVnYWN5LXRydW5rCis5MDQ2IGEwYjgzOTY2N2QyZTNmYzc0MzM3ZDI0YzgzNTYwOGZmOGI4YmI5ODkgbGVnYWN5LXRydW5rCis5MDQ3IGMxYmFjNTM2MDQ1ZmNkYjk0ZmFlM2FiODk5MTRkN2ZmZWE0YzYzYTAgbGVnYWN5LXRydW5rCis5MDQ4IGIxMTc0MDQ1YmM0YWI2NzZhNzgyNGYzZTZhZTNhMzUyYWM1N2Y5NzMgbGVnYWN5LXRydW5rCis5MDQ5IDhiMTQzMTJhMDI5MDM1OWRkZDk3MmFkNDA0ZDNlYjdkYzZkZjUyOWEgbGVnYWN5LXRydW5rCis5MDUwIDNiNzI4Nzg2NzJjZDJlMmMzMjM1ZDczMTE2MjgxNzRkMDliMzcyMDAgbGVnYWN5LXRydW5rCis5MDUxIDY3YTJhZmNkZDIxYzEwMmQ1MDNiODE4MmJjMWQ1MWU3OTgxN2UwMWUgbGVnYWN5LXRydW5rCis5MDUyIDZmZmE5Y2I2NTRlMmI0ZmNjMmNmZTU1MDQyZDc1NTEzMDI1MTU3ZWIgbGVnYWN5LXRydW5rCis5MDUzIDAwZGFiNzViOWVmMTJlMTgwYjc3M2VmMzgxOGJhYzQ0MDAxYTkzMDYgbGVnYWN5LXRydW5rCis5MDU0IGQyOWM0YjJmNDlhZTI3MjJiMDY0YjVjZmQzYzhkNmMwNzcyNDQxOGQgbGVnYWN5LXRydW5rCis5MDU1IDg1NTk2OTkwZGI0M2Y5OWEzOWU2YzZmZWRmMDE0NGRiODIxNjk4YTggbGVnYWN5LXRydW5rCis5MDU2IDAxZWU1NjA3YmIzNWY0NTgyNDZiM2M1YzEwNTdlNzE0ZjI3OTBlYTMgbGVnYWN5LXRydW5rCis5MDU3IDkyMWQxN2NjMjY5MmIyOTNmZjFjYmFjNTRhYzQzZWNhYjEyNDEyYjEgbGVnYWN5LXRydW5rCis5MDU4IGExZDg1YzBjYWU1YTZlZGI1NWY0YjFiZWYxZGM0ZGNhZjg4MzAwNjUgbGVnYWN5LXRydW5rCis5MDU5IDllMDdkNWI2OWViYWU2YTg4MjlkZjNhOTZjNjAyY2VjNTllZTc1MzQgbGVnYWN5LXRydW5rCis5MDYwIGY5NmU1N2U2OTg0NmYwNzhlZDY0OTUyZjc3YTVjOWNkNDg4OTk3OWUgbGVnYWN5LXRydW5rCis5MDYxIDA4ZGRlNWU1Y2MyNzRhYmY0Y2RlMzhkMWIwNjYxZjI5MTNkNjMyZDAgbGVnYWN5LXRydW5rCis5MDYyIGMyNjcyZTVhYmE4Yjc5ZjQ3MGU0NjQ4ZGE4MDVjMjk1ZDdiOTBmMTQgbGVnYWN5LXRydW5rCis5MDYzIGM1NjUyNzJlZDJjNzQwN2Y4MGFhMjI4MWI4Y2M3Njk0YjUyNmRhNTYgbGVnYWN5LXRydW5rCis5MDY0IDc1MzA3N2Y5ZWIyYzhhMjYwNTE2MjY5YTFhZDU4ZmZjNzAxNDMzZjkgbGVnYWN5LXRydW5rCis5MDY1IGUwZTY2N2JiYzk3MWE0ZmY0NTNiMjBmNzBjYzc3MWFiZGQ3ZTdiYTYgbGVnYWN5LXRydW5rCis5MDY2IGRhMDBiYjQ5NzFkOGY2ZjMxMzNmOTE4YTM3MjQ2MGJjOTlmMDYyZDYgbGVnYWN5LXRydW5rCis5MDY3IDIxOTJiOTNkNTMzN2U1OGIxYjIyN2Y5MmQ5YTRiNjMxMmVkZGVlOTUgbGVnYWN5LXRydW5rCis5MDY4IDUxNjI0MGVmMGUxNTFkYzEzNzllYjUwOGYxNGY5MDRhNDFhNTA1M2QgbGVnYWN5LXRydW5rCis5MDY5IDg2YjY3NzA5YzJiNDAyY2YyZDU5ZWM4NzJkOTUwNjg3YzEzYzNlYjAgbGVnYWN5LXRydW5rCis5MDcwIDE0MDI1YTRmNzkzZWM1ZWQxNDNlNjc5OTAwMGFiYTY2YzZjNGE5OTMgbGVnYWN5LXRydW5rCis5MDcxIGZjZDhlMzhiOWIyYWY5ZjEzOWRiYmEwNDdjYzViNDQ5MTc3ZjA0YTIgbGVnYWN5LXRydW5rCis5MDcyIDQ1ZTg0YmU2ZDY0MDViZGMxOGM2NDgxNjBiZDc5YTlhZjczZWZhZTcgbGVnYWN5LXRydW5rCis5MDczIDVlMGIxNTJiZjFlNjViMWE5NDkxN2UwODVkZDk3NTc2ZjY4ZDFjNGIgbGVnYWN5LXRydW5rCis5MDc0IGYxNWYwZmMzOGNiMTlkNzdjMmRiMzNlMTMyMzNjZGVjNGNiYTM4ZjMgbGVnYWN5LXRydW5rCis5MDc1IGI4OGZkMzg5NGQ1YTRkMzliNTRkMzNlZTU5MmNjZmZhNGQyNzA0OWIgbGVnYWN5LXRydW5rCis5MDc2IGNlZWVjOGNiMGExZTdmNWM2OTU0NGE3M2UzMTJjN2NkZTVmODc0MzMgbGVnYWN5LXRydW5rCis5MDc3IDZkNmZlYzJlZWVmNmE4MDNhMjZiYzkxMDA2Y2ZhZjZkMjMwZmRjMDUgbGVnYWN5LXRydW5rCis5MDc4IDgzY2NmNDRiZjE5NTNmOTQ0YTUwZGRmYzNhMGMwOTE0OTRkODA2MjggbGVnYWN5LXRydW5rCis5MDc5IDFlNDI4ZjUxZWQ0ZTEzYzk0MWRhMmJmMTg5ZjMzMzQxMmM5YTQ2NjkgbGVnYWN5LXRydW5rCis5MDgwIDQ1MTRhNWVhM2VjNDY0NDI1NmVlZmI2NTU4OWJlMzYzMjc1NDJhMTggbGVnYWN5LXRydW5rCis5MDgxIDdhMGE0OGQ3MzA3NmE4MTQ1OWE3MjM1MzlmNTRjZGY4MzdiYzA2OWYgbGVnYWN5LXRydW5rCis5MDgyIGY2N2E2MzM5ZWRlNzZlZDhlN2Y3MTFjNWM0MmRiM2U4MTkxNzczYmIgbGVnYWN5LXRydW5rCis5MDgzIGRiYjQ2MWUyNzNhZGFhNTk3ZGFhMzhiZGU2MDEwZmQ0ZDE4Y2JiMGYgbGVnYWN5LXRydW5rCis5MDg0IGY1YjU1MzExZTc5ZGFlODU5NGU1NTM2ZmFjM2VkNDJiOTRkMTJjMmEgbGVnYWN5LXRydW5rCis5MDg1IDJmNDU5ZWIyM2EwZWYxOWZmNmFhNWFhZTE2OWY1ZjIzMjZjNWUzMjAgbGVnYWN5LXRydW5rCis5MDg2IGYxZTNhM2Y4YTQ2Y2RmMmUxZGEwYjdiNzgzMmU1MGQ1OWRkNmU4NDQgbGVnYWN5LXRydW5rCis5MDg3IDAyM2U1YWIwZjg3ZDhiOThmZWFkN2RiNzU1MjdjNTU0ZTNkYmQ1NjcgbGVnYWN5LXRydW5rCis5MDg4IDIzNWJjNmY5ZTIzN2E2ODA1ZmI1ZmUyYTcyMGRmMjg2ZGRmYWEzNzUgbGVnYWN5LXRydW5rCis5MDg5IGU2YjlkMjFjOGUwYzA2OGNmZDU4Y2U4ZTI4NDFmN2Y3N2FiOTY1ZDkgbGVnYWN5LXRydW5rCis5MDkwIDRiMmQ4ZGM5MmRiNGNhYzBjMTdjMjQ2MDU1YjVlOGVhM2I2YmFlYTYgbGVnYWN5LXRydW5rCis5MDkxIDJlODc0YTVhOTEyZjJlMWFlOTcxOTcwNTg1ZjdhZTVlODBjNzc1YTQgbGVnYWN5LXRydW5rCis5MDkyIGUyYmNhYTk2Yzk0MDg0MWNkY2JjMjhkM2U1MWY3ZDljNGIzMzBjY2YgbGVnYWN5LXRydW5rCis5MDkzIGU1NGQ1MTcxOTAyZTZhMDFiOGExZTlkNzQyYTk2MWIzMTA5YjVjYWQgbGVnYWN5LXRydW5rCis5MDk0IDZmZTVhNTFmZWEzMDNkZDYwOGQzMDkxYjlkNTIyOGY0NzM3OTBmMzcgbGVnYWN5LXRydW5rCis5MDk1IDJmMGI3YmFjMjAxYzVhMmFkNDk1NTdkNWViMDc1ZTQyN2ExZjViYWMgbGVnYWN5LXRydW5rCis5MDk2IDA0MzEzZDRmOTNmZjczMzBiYWJhYmMzNmIwM2ZlZjYzNThjYjdhODkgbGVnYWN5LXRydW5rCis5MDk3IDNjNGQ2Mjc1NDY1ZThmMzkwYTdiYzJmYzJmYTcyMTAxOWNmZDE2Y2QgbGVnYWN5LXRydW5rCis5MDk4IDAwYjFiNzdjNDE3N2NhMGViMjZiYjIzYTVkZWFlYmNjYmIxMzk5YWYgbGVnYWN5LXRydW5rCis5MDk5IGI5NmFhZDEyYTE1MGJiNmMzMDA0YjQ4NWQ5Y2NmMDI4ZmQyYmU4YjUgbGVnYWN5LXRydW5rCis5MTAwIGYxNDM0OGY3NTdjNzY5OTg5ODEyMGRkYTI2ZWE4YTFhMTQ2YjE4YWUgbGVnYWN5LXRydW5rCis5MTAxIDgyZDY3NzRkYTBjNjk3MWVlYTY0Y2ZhYTM3NjA2NjM1ZjBkODlmZWUgbGVnYWN5LXRydW5rCis5MTAyIGJlMDc5MjFkOTcxMzFlNzA2YmIxYjI1ZDI0MDkxNzVmOGM1NGQwYmUgbGVnYWN5LXRydW5rCis5MTAzIGY4OGIwYzI2MDhkODJlYzFiYjc5YzRkYzJlOWU5NmI1MzlhMjQ2M2YgbGVnYWN5LXRydW5rCis5MTA0IDVlMzFkMzgxZmE0N2QyNWMwYjM3NWE5MDMyNjg4MDg0ZDM5ZDhkOTggbGVnYWN5LXRydW5rCis5MTA1IGE4MzlkM2VmYWJjZTZkNjM3OTAyZTE5NmU4NTg0YWY3YzBmMWVjN2YgbGVnYWN5LXRydW5rCis5MTA2IGU5NmE4MTY0N2Y5YzdmMzRjYzEzN2Q0OTk1M2FlZDIyMTc3NDE1ZjIgbGVnYWN5LXRydW5rCis5MTA3IGNkZmUzYjdkNzE4N2Q4M2JiNDM3Y2FhMDJmNDM3YjdjOTcwNTE1MjggbGVnYWN5LXRydW5rCis5MTA4IDhmNGQ4OWYwZjMzNmM4MzNkNTc1YmQxNjZlNDRmYTFmMGI3ZDc0ZjUgbGVnYWN5LXRydW5rCis5MTA5IGQ1MTUxYjdiOWRiY2ZlOWU0YmYxM2M3MTczYzIzOGFjZmI3OWY3NzEgbGVnYWN5LXRydW5rCis5MTEwIDUyZDQwY2M1ZmEwOGNjNWI5ZGUyMTBhZTg2Njc5MDA5ZDNhNWMwNzMgbGVnYWN5LXRydW5rCis5MTExIGRmMmEyZTQzYmUxOGNlYjNmMDFjN2FlNzMwZGQ0OWMxYmU5MTQ4OGUgbGVnYWN5LXRydW5rCis5MTEyIGVjZmJhZDkwNjIzMTQyMGE0YTljNWI5YmFjZWUxZDFlNjdmOTdiNzIgbGVnYWN5LXRydW5rCis5MTEzIDAyZjU5Y2IyODZmYWEzYWRkNGFjZTQ0ZWZhZjlmNzI4OWM2ZmEzNTQgbGVnYWN5LXRydW5rCis5MTE0IGY0MDgyN2JhYWI4MTEyYThlMTUyNGU2MTI4MTI4M2VkMDc1ODU1MWIgbGVnYWN5LXRydW5rCis5MTE1IDAzMzkyYzI3YmY5NjhiZmRlZGMzOGMxYzU1NTdlNDQxMWU0NGEzMjAgbGVnYWN5LXRydW5rCis5MTE2IGU2ZDc4Njk1OGZiMzA3ZmY1YTc1MjA2MDZmOTc2MDQzMzVkODQzMzAgbGVnYWN5LXRydW5rCis5MTE3IGRhNjYyYjM0NWM4NzYwMmY2NmFmNjNlZTcyYWQzYjRlOGZkN2ExOGQgbGVnYWN5LXRydW5rCis5MTE4IGY5MDM1MWIxNTgxYjJkZjE4NDJiYjViN2ZmOTFmMTY3MzQ5NWQyZGMgbGVnYWN5LXRydW5rCis5MTE5IGFjNGI0NDQ3Mzg2OTQzZjQ2MzBkYTRiYjBmN2E4NDQ2NzgzNzE1ODYgbGVnYWN5LXRydW5rCis5MTIwIDI1MThhYzkyNTFmMGZjMmUyNjUwMjZiNDljNDFkMmEzMmU4MjE5YjIgbGVnYWN5LXRydW5rCis5MTIxIDQxMjE3MDQ1MTA2MzBlMDM1ZGM5NzVmNjMwYWVlYmI0MzA0N2M0NjMgbGVnYWN5LXRydW5rCis5MTIyIGUxZDM1NjVkMmI3YTQ5MjUxZTZlMTIwNzdmNjE0M2IwNWQ3Mzk3ZDkgbGVnYWN5LXRydW5rCis5MTIzIGU4NjgxZWRhMDg1NDk1ZDQxODFmZDQ2YjcxNTdkZDdjZGFkZmE0ZDIgbGVnYWN5LXRydW5rCis5MTI0IDFkYTlmNjAyNzljOTMzMDIxMDFlMzIxNDg4YjBkODVkMWE1OTM5YmUgbGVnYWN5LXRydW5rCis5MTI1IGE3ZWE3NGEyNzk5MzY5MzgxNWI4ZDcyMDEyN2VkYmM0Y2Q0OGYzMjcgbGVnYWN5LXRydW5rCis5MTI2IDBmMjQ5OGI4NDdiZmNjNDk2YTdlZjA0YmMyMDEwNjcxMDUxYzFlMjIgbGVnYWN5LXRydW5rCis5MTI3IDIwNTg5ZWQzZThiZGU1ZmY1YzgyYTE0ZDAzZjM0MmNhMmM1MmE5MmQgbGVnYWN5LXRydW5rCis5MTI4IGY2YmU5YjVhZGJkYjdkNjY3NzI5ZWExZDI0MGRiMjIwYzI4MTYyYzcgbGVnYWN5LXRydW5rCis5MTI5IGNlNTI4OGVjMzZkMDI1NWU1YzI1MTRiMDNiNTEwZDc1NzdlMzczNDYgbGVnYWN5LXRydW5rCis5MTMwIDVlYWMxYzhkYjA0ZjY0MTg3ZTExZTQ1M2M1ZTk5YjQ2YzMyM2RjOGEgbGVnYWN5LXRydW5rCis5MTMxIGM2YzFkMTMzNjc3YTc4NTU1ZDk3MDc2YjI4NTI3ZjlmNmNjMzdmYmYgbGVnYWN5LXRydW5rCis5MTMyIDZkOThiOTY5ZTFmNjcwOTcyZGQ4NGE3M2MzMTNiOWIxYTVlMzk5MjIgbGVnYWN5LXRydW5rCis5MTMzIDQ2NmU4N2IxNDc2NzFmOWMzMDI2MDAxMmZmMzc2MGRhY2MzMGZhZGQgbGVnYWN5LXRydW5rCis5MTM0IDUyMzI5YTExM2UwZmEzZWYwZjk3NjM2MzM2NmUyYzZjYTk0NTNjMTkgbGVnYWN5LXRydW5rCis5MTM1IGU0OTljN2RiZmRmMzU5YTRlODJjNWVlMDUwYjAzYmIzYTYxODQyYmEgbGVnYWN5LXRydW5rCis5MTM2IGRlYWQ2ZTc3ZjQ2NDI4ZWVhNGUxZTIzMjkxYjUzYWUwM2Y1ZWJhNjggbGVnYWN5LXRydW5rCis5MTM3IDMzNGNiZmQ1MWRiM2FlY2UwZGYxNDYzNTUyZDE4MmY4MmVlZWZjOGIgbGVnYWN5LXRydW5rCis5MTM4IGJiODZiYjc2ZDYxZGEzYzBmMDYzMGNlYTQyMWFiNWRmZjYyYzU3YWQgbGVnYWN5LXRydW5rCis5MTM5IDk5OTU1YjY1NDA4ZGFhMjdjYjU3NTg3MGVkYmZiYmNmNzA4YTExOWEgbGVnYWN5LXRydW5rCis5MTQwIGZiZmNmMzhkMmIzOTVmYmZiNzc3NmNhZjU2Y2ZkZTAwYzgyZTc1NWYgbGVnYWN5LXRydW5rCis5MTQxIDlmMDJlYjM2YjU3MzlhNDdmZDY1MjA3MTVlYjc0YjFhMTYxMjY4YjMgbGVnYWN5LXRydW5rCis5MTQyIDczMTRiZTY0NTBhYTA4Y2I0OWY2NDBlODRiMDU2NWYzZDI5MWYxMWEgbGVnYWN5LXRydW5rCis5MTQzIGQ2ZDNlN2NmODk3ZTBiMTg4ZGE1OTlhZGY0MGRlMjAxNWU4MDk3MmEgbGVnYWN5LXRydW5rCis5MTQ0IGIyZjFmZWM2YTcwMjNlMzVjNmZhYzkwZDkzMTI5ZmJmMDYyMTdkNGYgbGVnYWN5LXRydW5rCis5MTQ1IDA4OWMwNGQ4OTE1MWViMGNmZTdhN2NlYzhiZTQ5ZWMyZmRjNWZjMzUgbGVnYWN5LXRydW5rCis5MTQ2IDk4NTUyNzA0Yjg4ZjI3YTQ3NmIwMzQ5NzQ4NTE0YTdhYzExZjk1M2IgbGVnYWN5LXRydW5rCis5MTQ3IDJmNWM4Mzc0ODI1Yzg1MzcxMTk4ZjVhN2JiMmI5MzgwNDg4YjJiMmQgbGVnYWN5LXRydW5rCis5MTQ4IDhlM2VlMzU3N2Q0ZTk1MTZkYmMxNjI1Njc5YjZiMDE5YWQ3ZjdjNGEgbGVnYWN5LXRydW5rCis5MTQ5IDE0MTA1ZGYzM2MxMmEyMWYyMzBmMmI3ZGQ5NTNlZTViNGFiN2MxM2EgbGVnYWN5LXRydW5rCis5MTUwIDk4ZDU1NzkzYjY3ZmJhZTNhYWVlMTc5Y2NkNzZhM2EzMzJmOGEwYzYgbGVnYWN5LXRydW5rCis5MTUxIDk3MzE4N2YxYmQxZDNkYzIwYWNhMDliNzlkMDExMDQ5NTdlOWFmZDcgbGVnYWN5LXRydW5rCis5MTUyIDQzMmQxYmUwMTYzYzc1YzMwZTgzYmUzNGI1NmNiYjBmNjI2YWQ0OTIgbGVnYWN5LXRydW5rCis5MTUzIGNkYjMyNzliMDZlNzlkMjhiODU5NDJjODkyYmVjNDcxM2Y4ZTM3ODUgbGVnYWN5LXRydW5rCis5MTU0IDFiYjhiN2ZlNDVlYzNlZDBhMjc4YTBjYzc4NWEzY2RjNGFiNzQ4YWQgbGVnYWN5LXRydW5rCis5MTU1IGU0NWI4MzcwOGQ5ZTliYmRkMzg0MzU0ZTc5MWFiZDdkMWNmZDgyOTMgbGVnYWN5LXRydW5rCis5MTU2IGRlMmY4ZjQ5NGFlMzczN2VmOTJiOGE0ZWQwNzA2Y2UzNzY4MGZlNTkgbGVnYWN5LXRydW5rCis5MTU3IGY5NWM5YWUyYWFlZmVlOTVhNzBjYWExNzFlNmZiNmIyNmM4OTQxNmIgbGVnYWN5LXRydW5rCis5MTU4IGI4YTNiYTZlN2JjOWRlZjZhOTljNDI5NTljNzJjOTQzZmM0ODVlMzEgbGVnYWN5LXRydW5rCis5MTU4IDhmZjU4YjU3MzBmMDZiZTA4ZmJiZGMyYmY1OTIyMjZmN2E3MzYyMDEgbGVnYWN5LXRydW5rCis5MTYwIGVmZmE2MmIwMDYyYjdkMmNhNWFiYzE2YjQ5ZjVlNDYyYTgzMWJmNGEgbGVnYWN5LXRydW5rCis5MTYxIGNiODg5YjY3ODA1M2IwMTM1YWViOTU3ZmI5YjMxN2RhNjZmYTI3OTUgbGVnYWN5LXRydW5rCis5MTYyIDAxNzQ2N2RlNzkzM2U4YzczYjU3NDcyZDE0MjNiNTY0YmRiZmQwODIgbGVnYWN5LXRydW5rCis5MTYzIDgzMTQ3ZTAyZTgwZDhlMzIzZDQ5MGJhYWRlNzYyYzk5ZDIyMDBlMjYgbGVnYWN5LXRydW5rCis5MTY0IDJiN2ZiZDc2Y2VmODcwNTRjYjRiM2IxMGYzNjI2YTY1ZDAxNDZmNTIgbGVnYWN5LXRydW5rCis5MTY1IGE1OTNjMjIwZWRjYzY1OTNkNTBmNmI4NDRiOGQyZjYwYmFkMmI0NWEgbGVnYWN5LXRydW5rCis5MTY2IDUzYTA3YWRhNDk5YWY3ODg2OGU1YzZmM2VlNjM3MjQ5ZmFiNmRhZDAgbGVnYWN5LXRydW5rCis5MTY3IDg0YjQzZmY0MmZhODBlMWFlYjM3NzlmMGJhYzEwNDFlMzZkNmJiYzYgbGVnYWN5LXRydW5rCis5MTY4IGMwNzk4NDg3YjcyOGI4N2ExMTYyYmNhYmIyODQ3NzMxM2QyNzIzYzcgbGVnYWN5LXRydW5rCis5MTY5IGQ3OTBmZTI1ZTE0OGVmOTJlYmQ4M2NiYTZhMzI1OGI3MGQ4MWNmNTQgbGVnYWN5LXRydW5rCis5MTcwIDRiY2JiZWI2M2I4OThlNTQzMjM0MmVmYTY5ZGEyNDdhMzgwNjQxOGIgbGVnYWN5LXRydW5rCis5MTcxIDQwYTg0MjBiNGFiMzZlNGVlMzI3NjRmZGNkMmE3MmIxYzYyZTM0NTIgbGVnYWN5LXRydW5rCis5MTcyIGE3MmJmNDNhODg3MGIxZTBkMzM0MzdkMzY3NjY0MzIyY2I3OGJmMTcgbGVnYWN5LXRydW5rCis5MTczIGI5ZmNiOWEzNDMzMjgyMmY2OGM2NjlmODdiNWVkOWIzNjEwMDBhOGYgbGVnYWN5LXRydW5rCis5MTc0IGU5MjE1NDAyMmI0OGVlNmNmYTcxOTU1ZDA3NWYzNWMxMzlkZjdmZTkgbGVnYWN5LXRydW5rCis5MTc1IDJlNzViMzFkOTRjODRmMzFhOTE5ZjRhOTRkMmVjMDEwODFiOWE1MTYgbGVnYWN5LXRydW5rCis5MTc2IGI3M2ViNGU2ZmFjZWNmZWY5ZjkyM2FlODVlZThmNjM0OGM3NDFjNTcgbGVnYWN5LXRydW5rCis5MTc3IDkwMDFjMGE3YmU5ODYzMzk2OTdhMTFiMzMwMTE2ZDJjOTUxMDc5OGYgbGVnYWN5LXRydW5rCis5MTc4IGM2OTAzNGE4YjNmNDM0ZjdhNGYxOTBkMWM1OGZiMzEwNTZhYjcxMWYgbGVnYWN5LXRydW5rCis5MTc5IDRkNjNhMDAxYzI1ZWE5YzEyYmE4NTZmYWNiN2Q0NmQwMTU1MjQxZDMgbGVnYWN5LXRydW5rCis5MTgwIDE1MTYwMTljOTBiZTg4ZjUwMzhkYjQ3MTNmZWNmNjgzNDI3YTQ4Y2YgbGVnYWN5LXRydW5rCis5MTgxIGI5MzZjY2Y0MmVhMmQ1MWMxM2FkNjZmMzhjODVlOTMwNTMwYmUzM2EgbGVnYWN5LXRydW5rCis5MTgyIDlkOGU0OGYzYjQ5ODVmMDZjNTZlMTg3YzkxNGI1NWZjMjI2NGEyZTAgbGVnYWN5LXRydW5rCis5MTgzIDA2MTU3OTM5NTA0NjUwMWQ3MTE2OWI5OTNkZmJiNGJiMWZlNTMxM2YgbGVnYWN5LXRydW5rCis5MTg0IGNiYzVlN2Q2YWQyMzVmYmE5MGY5YjY2NzcxYmY4YWJkMmI4YzhmZjIgbGVnYWN5LXRydW5rCis5MTg1IDM5ZDk2ZDlkM2NjYjU2YTYxZmNlNTIxM2IzYzNjZDc5Y2Q3NjNjODcgbGVnYWN5LXRydW5rCis5MTg2IDQ3YTNmM2I2MDUwMjYzYWFjOWFlY2QwNjkyYTJkODIyOWRmZWEyYzMgbGVnYWN5LXRydW5rCis5MTg3IDEyYTFjOTg0NTA3NDQwNzZkOGVhYzY2ZDMyYmNjZDM0ZmIxYzU0ODggbGVnYWN5LXRydW5rCis5MTg4IDkwYzYzOTBiNDk0MTczZWRkZTg0MmE0MjY3YTVmMzllY2E4ODc0YWIgbGVnYWN5LXRydW5rCis5MTg5IDk4YWE5MjdmOTA3Y2MwM2Q1NDU5MDViMzIxNjY5OTQ2NmY3NGZlNGEgbGVnYWN5LXRydW5rCis5MTkwIGZmMTY0NDhlOGYyNDE3MDgwY2JlM2U2N2I2MTUwYjQ4ODY4MTkwYzggbGVnYWN5LXRydW5rCis5MTkxIDhhNWEwMTIzMDdiZGQxMGY5NjliYzdlYTZmNWE5ZjcxNTgxMWIwMjMgbGVnYWN5LXRydW5rCis5MTkyIGE1YmIwYjhkYzMyMDQyYmZjNTVhNDgxMjM2NDc4YjFlNzA2YzNlMjAgbGVnYWN5LXRydW5rCis5MTkzIDM5YjQxM2FjMmNjOTFjMWI1OWQyYzZiOWU1NDY0M2M0YTZiOWQyODYgbGVnYWN5LXRydW5rCis5MTk0IGQ4NTRhMWM3ZTc0ZDMzMWE3NTI5M2ViZjVkZDFhN2JlYjQ1N2VmMTMgbGVnYWN5LXRydW5rCis5MTk1IDY0YTc1MjExY2Y3MjljZjRhYzA2ZWQ3MjU0ZGVlOWMyODM2NDlkYTIgbGVnYWN5LXRydW5rCis5MTk2IDMyZjJlZGEyOTQ2Y2FkNzAxYjQzZTZjOGE3ZWM2MmQ0YmU5MzIxNzYgbGVnYWN5LXRydW5rCis5MTk3IGZhZWJjMTk0MDQzMjhiMTJiYzJiYzMxMjM0MDJhNTZjNWQyOTUxNTggbGVnYWN5LXRydW5rCis5MTk4IDk2MDg1MzkwMmViZTQxOTJlMTRjYjNmODRiYTRkYmQ1Mjk5ZGIzMWYgbGVnYWN5LXRydW5rCis5MTk5IGJiZjllNGIzMWQ4NGM0YzIxMmQzZjVmMmQ1OTQxNTBjMDE5MGY5N2UgbGVnYWN5LXRydW5rCis5MjAwIDIxZGNlMzMyNTMyMTk2MjIxYmMwYjFhYWRlMWVhYmIwMzEyNzIyODkgbGVnYWN5LXRydW5rCis5MjAxIGMzZjg1YmNiMDQ1YWQ3M2Y2Mzc1MjE4Y2EzMTgzNDZlY2M4YjhlOGEgbGVnYWN5LXRydW5rCis5MjAyIDJlM2FjYjIxNDBiZjNhNWZmODBjOGNmYzMzZDZhMTE4OTU3MmFlMjkgbGVnYWN5LXRydW5rCis5MjAzIDI4M2QxY2E1ODVkOTRmMjY2M2YxMWNiNTNhZmYzMGJkY2JmZTEyNjEgbGVnYWN5LXRydW5rCis5MjA0IDRmMzY0MmEyMDEzNzJlNjgyNDNjZDc5YTg1ODVlNGUwYjJlNGU0ZTYgbGVnYWN5LXRydW5rCis5MjA1IDI2NjJjOWZlMWIzZTAzY2FhMjdmZGY1NjE2NDg5MjM1YjQxMmI0MWQgbGVnYWN5LXRydW5rCis5MjA2IDdjY2U0NjkxNjBjNmViODUzYjNhOGJmNDRhYTQxMGNlMWQyOGQwZWYgbGVnYWN5LXRydW5rCis5MjA3IDExYTc1MTcwNTRhNThlYTgwMTZhNjQ1M2E1YWFjMzdlNDJhNjJmZTYgbGVnYWN5LXRydW5rCis5MjA4IDljOWE4N2I1YmIxN2VjMDFlYTNiM2UyNTAzZmIwNGYwMWUyM2Y5MzYgbGVnYWN5LXRydW5rCis5MjA5IDIxNjU2MjA0ZGQ0ZmJkOWE2NzFjNjQ4N2U4ZTI3MjY3ZjY3NDdhODAgbGVnYWN5LXRydW5rCis5MjEwIDA5ZjZhNDlhY2ExMmVmNzA2ZDI0ODY1NGYyZGU3ZmNjZmZmOWQyZTUgbGVnYWN5LXRydW5rCis5MjExIDY1YWU3MTFkYjAwY2I1ZDU1OGJiNTRjODM3ZDU0YzE5Yjg3NDFiZjcgbGVnYWN5LXRydW5rCis5MjEyIDRjOWIyNTZhM2JlZTBjOTEyOGExZWM4YTI3ZGRlYTFmOTZjNGU3ZDkgbGVnYWN5LXRydW5rCis5MjEzIGZhYjhhYjVkYzVmODRlOGY2ZTk2YWQ5OGQyY2MwYmI3YTViMjUzYzQgbGVnYWN5LXRydW5rCis5MjE0IDUzZmQ0MmFhM2JiZmNhY2EwZTE1NDZiMGQ2NGU1MWMzMjEyODBmYmIgbGVnYWN5LXRydW5rCis5MjE1IGFiM2Q3YTI4ZTA3ZDI1ODJhZGYwNWQ5ZWQ0MTg4YjRkMTkyZTFkZGYgbGVnYWN5LXRydW5rCis5MjE2IDNiZWY1NWNiNzQ0YjZlNmRlOWNkZWIwOGQwNmIyYzdhYTE4N2I4ZmYgbGVnYWN5LXRydW5rCis5MjE3IDFkNDE3NWVkNmE5Y2VlZTMxNTU4MGYwODJhNTVjNWVmZWQ0MmRhYzcgbGVnYWN5LXRydW5rCis5MjE4IDE4NTNiNWJjMDU0OGJhMDYyYzM1NDAzM2U4MGUzOWUyYjg0MTU4ODMgbGVnYWN5LXRydW5rCis5MjE5IDRjZjBkYTA3MWUyYmVhM2U5YjRiMDc1YzBjYjJiNjUzMDAxMjcwMGQgbGVnYWN5LXRydW5rCis5MjIwIDQ4ODdkNzU0NjkyYWVmYjEwMGJjYWI0NTQyYjNjNDA0ZTQwNTVjNTMgbGVnYWN5LXRydW5rCis5MjIxIDRmNjhjN2FjNTExNTRkY2RjZTBmNDU4MDQyY2U0MjA3MzY0NDMzNWEgbGVnYWN5LXRydW5rCis5MjIyIDgwODQ4ZTkxOGJjYzE4NDE0M2E5ZTZiNGQ0NGI1ZjcwZmE2YWVkYjggbGVnYWN5LXRydW5rCis5MjIzIDFkYjQxY2E0NWM3ZmM4ODU0NDg3OTcyOGQ0NjQ0NTY2YTM1YWI0MjYgbGVnYWN5LXRydW5rCis5MjI0IGFiZTNhYWQ5ZTAzODVlN2U2NWY3NTQyZGQyYjJjNjVkZGI5NzM1YjQgbGVnYWN5LXRydW5rCis5MjI1IGZjZmY1MzE2MzRlMTRmNDEzZDc2MTUzNmUyMjJhNzFkNWIwMTg4MGYgbGVnYWN5LXRydW5rCis5MjI2IDc0ZWEyMDhkNDZjZTgxYWEzZDlkNzQ4MmJkNTc0YzU0ZDcyNDg4ZWEgbGVnYWN5LXRydW5rCis5MjI3IDc5M2NhZjUxNzY0NzllNGU0YThlNDdhMWUzNmIzMmIzYTZmYzEzNDggbGVnYWN5LXRydW5rCis5MjI4IDVlN2M5MTM1OGVkMmNkZWE5MWM4N2M2MDBhZTU1ODNlNzFlMzNjNWEgbGVnYWN5LXRydW5rCis5MjI5IDRkYWYwOTBmZjE2MjI2NTE5NTQzNDNmN2ZiNDY2NWI4ZjMxOWI1M2MgbGVnYWN5LXRydW5rCis5MjMwIGViYTZhZGYzZjg0NGVmNjQ3ZmFiODk2YTIzNzY3ODc3MjQ1YWRiZjUgbGVnYWN5LXRydW5rCis5MjMxIGUyZTViYmZhZDFjODFmNzNhYjMyNDEzZmM1ZTBmNTA5ODVjYWVmMDMgbGVnYWN5LXRydW5rCis5MjMyIDA3ZTk1ZWY1NWY2NThlN2U2Nzk1ZmIwZjMzNjMwYTBmYWU5MTZiMTQgbGVnYWN5LXRydW5rCis5MjMzIGZkMjljZWJlODhkYzhiNDU2MmM0NGFjYjUyZmE4NDhiNjZmNjdkNmQgbGVnYWN5LXRydW5rCis5MjM0IGU0MDcwZGM2YWMzNWQ1ZDJmM2YyMWUxOWQ4MTNlNGQ4MzA3NTNhYjQgbGVnYWN5LXRydW5rCis5MjM1IGFmZjZmZjUyZDVlN2VkMzEyYmQ4NTM0YjhmZTNmNmQzMTAxNWM0OWQgbGVnYWN5LXRydW5rCis5MjM2IDBiNWViMzJiNTUxZDI4MmEyYTY2OWVlNGE4ZTU0YjMwY2QzNDkwMTAgbGVnYWN5LXRydW5rCis5MjM3IGNhZThhYTQ0MWZiZDRkN2I2NWU3ZTNkOWIyYmMxMWI2ZDczMGUxOTYgbGVnYWN5LXRydW5rCis5MjM4IDAyMDRkNDYxZDIxOTY3ODhlYzM0MGI5MDMzMDczZTVhMjcxZmQ1ZTAgbGVnYWN5LXRydW5rCis5MjM5IDc0OGFiYzdmODgwOGY0ODQzOTE0ZjI1NTNkZTRhNjM1MThkMWVhODMgbGVnYWN5LXRydW5rCis5MjQwIDBhM2M3NDAyZDM5NTNkMDdmMDAwYmMyZGFlMzljZjE1NTJhOGNlNTggbGVnYWN5LXRydW5rCis5MjQxIDEyODI0ZmUwNGEwODg1MjFkYzU0ZmE2MmViMzVjNDY3ODY1OGIxODggbGVnYWN5LXRydW5rCis5MjQyIDA3NTJiYmY3N2Q4MTNhMWY1N2RmN2UzYjdiM2Y0NmE4M2MyNTRhYmQgbGVnYWN5LXRydW5rCis5MjQzIGU2YzAzM2U5Yjc2OTI3YjllYjUxZjI3YzZjMWE1NGYzNjhjMTdiYmMgbGVnYWN5LXRydW5rCis5MjQ0IDg5MDkyYWQxZTY2MDcwZDE4NjVmODEyMGU5YmVlZmYyZWM4NDIyODYgbGVnYWN5LXRydW5rCis5MjQ1IGU5N2I4MjM3NTkxYzU4MTUxNTVkNjA5ZDM3ODcyODg4NzdjNzRkNDggbGVnYWN5LXRydW5rCis5MjQ2IGEyOWE2YmYwM2FmMzMyM2FlZjhhMzk4MmQxMGVhZGZmMTI4ZTJkNTEgbGVnYWN5LXRydW5rCis5MjQ3IDIyZmRmZDI4M2M5Y2VkNmQ1NTg0Y2U1Yzk3YTIyMDllZWQyODBmMmIgbGVnYWN5LXRydW5rCis5MjQ4IGI1Y2Q3Njg4MTJjYjMyNDEwODIxMTA3NzRjN2RkNGNiYmE2YWQ5NmEgbGVnYWN5LXRydW5rCis5MjQ5IDMzZTIxNDUyNTBhZmVlODJjZTVjYjljODc2M2Y0YzA4MjBlYjJmNTkgbGVnYWN5LXRydW5rCis5MjUwIDgzMmE4MDdkMDA5ODhlYWQ4YzYyYmI0MGVhNGVkZTdkNjM1YjY2NjMgbGVnYWN5LXRydW5rCis5MjUxIDE0ZDZiN2E0MjkxOTQyMTU0ZTBhNjllZTJhNGEzOWMxMGJjOGZkMDQgbGVnYWN5LXRydW5rCis5MjUyIDBlZjIzZjUxM2E2NTk1OTc3M2ExNWE5OGI1OTJjNDM4ZDAwMzQ5MGMgbGVnYWN5LXRydW5rCis5MjUzIDMxMTdhZjlkYmZjZTc5MzQ2ZWVlMWVkMGZiY2VjYTQ1ZmU1MTBkMTcgbGVnYWN5LXRydW5rCis5MjU0IDNkZmUwNTExYmMzYjMyNjMxNTAzY2U1MThiYzJlYThjZWE3MjE3ZjUgbGVnYWN5LXRydW5rCis5MjU1IGRhYTc3ZDlhZjM0YzkwMzM5ZjljM2Y5YjhiMDM5YTYwZTFjN2ZjNWIgbGVnYWN5LXRydW5rCis5MjU2IGJmNmRlODJhYWIwZDg4MWFiNzg3MzllMTJkNDdhMjc2MTMwMmEzZDIgbGVnYWN5LXRydW5rCis5MjU3IDRkYmZmZmMzYzIzYmUzOTQ1ZGE0NGY3NDRhYWRhMWQwZmM0YmJiM2UgbGVnYWN5LXRydW5rCis5MjU4IDljZjhkMTRmMzU2NTJjZDkzZWJmMzZmYzAwYzlhMzdhMWZiY2QyMjIgbGVnYWN5LXRydW5rCis5MjU5IGI5NmQ5ZmJiMjRlNTYxNGZiZWZjZTg2ZGVhM2YxMTk5MTAzYjQ5NGQgbGVnYWN5LXRydW5rCis5MjYwIDg5ODAyMDg3ZjgwNjY5Y2Y3OWJlZmVjMTQ0MmFlMjcxOWQ3YjgwMjggbGVnYWN5LXRydW5rCis5MjYxIGMxODUwMTc3MDg5NTQ1M2U3Mzk2Mzc4YzBlZGVmYjBlN2NjNzE4N2IgbGVnYWN5LXRydW5rCis5MjYyIDA4NDgwMDUwMmE0MjA4NDIzNmY4YmQ0NzU4M2NkNzY3ZjJlN2E0YzAgbGVnYWN5LXRydW5rCis5MjYzIGY0ZTNhN2FlYjk0OWZmM2VkNjVlMWRlMTMwYjExZTExMmMyMTgxMmIgbGVnYWN5LXRydW5rCis5MjY0IGJjMDA3Y2YxZDZiYTNhMTk3ZWMwZDk2MTk5ZTNiMjk0YjExZTAwMjMgbGVnYWN5LXRydW5rCis5MjY1IGY2OTU0Mjc0ZTFjYTQ4Zjg4NDUyM2JlMGIwYjcyNDNhMWE2N2U2MzIgbGVnYWN5LXRydW5rCis5MjY2IGNlYWJkNTAzMTdlMzBlZDIxMWUwNjNkZDc1MmI4YzZiMDg5NjdhMDUgbGVnYWN5LXRydW5rCis5MjY3IGJiNDQwYTI5NzVhYjk5MTVjZDg5NjJhMGJmYzhhYTIwYjg5MzFjYjMgbGVnYWN5LXRydW5rCis5MjY4IGIxZTZjM2ZlNWRlODU0NWQ0ZjFkZDVmNzRhODEyZWY5YzI2MDgxMGEgbGVnYWN5LXRydW5rCis5MjY5IDllNzVkOTQyNTZlMGU2YTUyYjZhY2UzMGEwNzVkZGY4Mjk3ZDY2MWMgbGVnYWN5LXRydW5rCis5MjcwIGY1MzNjMzA3OTc4MGJmZTlhNTY3MTRlY2Y5ZjhlNzI1MzI5YjhiMTcgbGVnYWN5LXRydW5rCis5MjcxIDg1N2Y5MDY1MDQxZDUyMGI1MjNhM2RiNTU5ODUxMDlkZjVkZWVjMmQgbGVnYWN5LXRydW5rCis5MjcyIGIwOTJlZTE5YWU0ZmVjMGJhNWIzMjJmODgzOTE1NzdhODQ0ZmQyNjAgbGVnYWN5LXRydW5rCis5MjczIDViMjRjYmIxZjk5YmEyNWFmNTIyMTczNmNlZDBjYWI0OTFiYzYyMjMgbGVnYWN5LXRydW5rCis5Mjc0IGQxMDBkMDI1MmNiMWM1ZGNmZGYxZjZlYjc0MGNhZDUwMzdjM2RiMmIgbGVnYWN5LXRydW5rCis5Mjc1IDk1NDQxNzE5MWZiZmM3ODFlY2U4ZjZmYWE4OGE1Mzc1MjZjZGFjNGYgbGVnYWN5LXRydW5rCis5Mjc2IDBiYTUwYzc0MjllNTEwMzRiMGZhMjk4YTI2ODc2NDMzYTcwN2Y5MWMgbGVnYWN5LXRydW5rCis5Mjc3IDM0MWE2ZTQ3YThmZjY0NWZlYWNjNmUzZGJhZjc2YmY4MDNkY2M5N2IgbGVnYWN5LXRydW5rCis5Mjc4IDVlZGZlYjdhYTZlYWUzZDcwNDg4NjIyY2U1YWMzOTJiOWY2YzQ1NjYgbGVnYWN5LXRydW5rCis5Mjc5IGJjYTk0ODE5NGRlYWY0ODI5NGYwZGI2MjFmM2FjZDRjMDMxZjlhMzQgbGVnYWN5LXRydW5rCis5MjgwIDk4NWJlNmRjODk0ZjM1ZmFiMDViYjQ4NDg4ZWIxZTcwNzUxOGQyZTggbGVnYWN5LXRydW5rCis5MjgxIGFmYmMxMWRkMmM2NWU1ZmI4M2M2Zjc3ZTNhM2I2YmI5NjJiZWQ4N2IgbGVnYWN5LXRydW5rCis5MjgyIGUyMjRjNDFiZGFjNjUwOGYwNzRmZWJkYzI4NzAyM2RiZTJmNjg4N2QgbGVnYWN5LXRydW5rCis5MjgzIDkzZTQ4MGRlZGNmMDk0MDcxZjg0ODdlOWQ1M2YxNWU1YjRlMjM1M2EgbGVnYWN5LXRydW5rCis5Mjg0IGFjMWIyNjFmMTY5MDRhNjY1OWZjZDYyNzg4OGQyODBkZjcwYmY3YWQgbGVnYWN5LXRydW5rCis5Mjg1IDdmOTE5ZDQ3MDEyOTNmYzVkZDYwYjZlNmViYzA5ZTA5ODIyZWE1MWYgbGVnYWN5LXRydW5rCis5Mjg2IGE4N2JjNTNmYzFhZDZlZTc1YmFlYWUyYjA5MjM5YTA1MTNjODQ2YjcgbGVnYWN5LXRydW5rCis5Mjg3IDE0MGU2NWY4Mzk1MzNmYTlmYmU5NzE5NzAxOTdlMjUyOTk2ZTYxNmEgbGVnYWN5LXRydW5rCis5Mjg4IGNhNzU1ZmIxZWZiOGFmNDNiNTAxMDkyOThiOTY1NjEwODg5YWI2NDYgbGVnYWN5LXRydW5rCis5Mjg5IDliNDA2YzkyNTE0MDgyNTgyOWVmMTQyZjMxYjE0MzUzZGE4NjVkOWIgbGVnYWN5LXRydW5rCis5MjkwIGQ4NTE0N2RjZTE4NWQyNjJmMmMwNzhkYWQ1MjA1NmMxNzRjMjJmOWYgbGVnYWN5LXRydW5rCis5MjkxIDY2N2E4NWViZmMzZWQwYWJhZjYwMDNjODNmY2E2ZjYxNjk5NmYxZjUgbGVnYWN5LXRydW5rCis5MjkyIDBmZTNkYzI4YjkyYzBjOTZjMjk1ZTU5YzUzODM4MWQ2NTExZWJmNWMgbGVnYWN5LXRydW5rCis5MjkzIDYxMzFkM2Y5YWYyZDYwOTI5ZDAwMjNhNTVhMTI2NDA1ODdhMWVkYmMgbGVnYWN5LXRydW5rCis5Mjk0IDJlM2YyNDRmMTA1ZjM1NzM5OGY5Mjc3NTk1ZWU0MGJmNjVmY2QzYTIgbGVnYWN5LXRydW5rCis5Mjk1IDdkYmEyZjNiNmM4MTM1YzNlNzdhMDAxNmRjYzdlYzAyMDNiNDA4YTAgbGVnYWN5LXRydW5rCis5Mjk2IDc3M2ZiYzhlZmJkNzdlMDcyZDhkYzFmNmI3YmMxMDJhZDQ2MmQ5NDQgbGVnYWN5LXRydW5rCis5Mjk3IDk1OTI5YjAxYTI2MjRhYTI2ZjNjMWUzY2FkZDA0NTQ0NTQ5ZWI1NDEgbGVnYWN5LXRydW5rCis5Mjk4IDhlZjQ4MWM3YzNhZmM2NDMwMDdmM2Y5ZWQ3MmI3MmVkYzczOGQwZDkgbGVnYWN5LXRydW5rCis5Mjk5IGIxOWNkNDMxMzEyNjYzZWY0NTVkOGI0NjFiNTA1N2I0ZWQxZTc5NjUgbGVnYWN5LXRydW5rCis5MzAwIGZjMTFmZjJjNzViMDQ5NWRkNWFjZGYwZTk4NDE5MDAwN2Y4MjFiNjAgbGVnYWN5LXRydW5rCis5MzAxIDY2M2E0OWU0YmVkMzI2ODI3OGM3MzhlNmM0NTFjODFjNTRjNGY0OGMgbGVnYWN5LXRydW5rCis5MzAyIGUzOWMzYjc3NzA0MTcyYzg1YWYwMzQ0MTkxNzdhYjBlMWIzNGRhZjUgbGVnYWN5LXRydW5rCis5MzAzIGVjYWE0MzFjNTk2OWQ5YjNhMzQyNTQ0ZTEwNTM1ZDdiMzdlZjBlYTIgbGVnYWN5LXRydW5rCis5MzA0IGExNTQ1Y2JmMGFkZjdmNDZjNDkwMGM3MWU4ODk1MzBjYmMwODZkZWIgbGVnYWN5LXRydW5rCis5MzA1IDlmZTk3Yjc2MzA2OGI2NjljYjk1ODlkNjllOTVhNTY3ZmE4MDRhYjIgbGVnYWN5LXRydW5rCis5MzA2IGVlODhjNWFiYzM0MWVjZTkzOGJiMWUxNDVjMzJkYzI4OWUxMTgxYWMgbGVnYWN5LXRydW5rCis5MzA3IDM1MWM3MGI4ZTczMTNmZGI0YThjOWVhYmQ1ZmZkZDE3OTQ1ZWE3NjMgbGVnYWN5LXRydW5rCis5MzA4IDk5MjA5ZGNmMjk0NjhjZTczMDhjMjg0ZDk3MzExZmQwYjg3NWFhZjAgbGVnYWN5LXRydW5rCis5MzA5IGFjZjI0NzQ2NWZlYmZkZTFiZDQxZGNlNDI1YWE2YjRhMTcxZWNiNmQgbGVnYWN5LXRydW5rCis5MzEwIDlhNTdiNDEwNzQ4ZDUxNWU4NGM3ZWIwMzQ0MGZiMWJlZDk4MWRjYTEgbGVnYWN5LXRydW5rCis5MzExIGNiZmM1ZjMzMmQ5ZDRmMTlmM2E0Njk2M2FhYjVhMTExY2VmNTE5YjAgbGVnYWN5LXRydW5rCis5MzEyIGFhYjA4MmJmZTY1NGU1M2VlOTdjMTZkM2E3NTJiNmJjN2FmMGU5NzMgbGVnYWN5LXRydW5rCis5MzEzIGRiMTkxYWNmOGUwNjhlNmFhYzUzZjg3NmQ1NjU0YWFkZjA5YTYwMzggbGVnYWN5LXRydW5rCis5MzE0IDAyNTViNWVjZGUxMDY1NDI5OWYwMzE2ODFiYzM4Y2VlOTQyZjk4ZjcgbGVnYWN5LXRydW5rCis5MzE1IDk2MTgxYTRhNTQ4MjQ5YmQ2YWE4YWU5MWQ2ZjEyNmE1N2U0Mzg4NjAgbGVnYWN5LXRydW5rCis5MzE2IGI3NTUwMGVlZWQ5YjEyZDI3OTFlYzAyMTRhNjk1M2I1MWM3Yjk4YTIgbGVnYWN5LXRydW5rCis5MzE3IDYyMzMzODM1MTJiYTk5YTE4MmViZGY1ZTJhMzhjZWY0ZjE5ZmVjODYgbGVnYWN5LXRydW5rCis5MzE4IDU4YmZlY2UwMTk2OGNjMDljMTZmMTFkNzM5MjQ1YTQ4ZDk2M2Q0NDcgbGVnYWN5LXRydW5rCis5MzE5IGQ3MTM5YmFjOWI5OTc4NWViZDZjY2IxMjliZTU5NmFmNmJhNjg3NDcgbGVnYWN5LXRydW5rCis5MzIwIDQxNmM3OTU3MmYxMTg3MWI2ZWFkMTc3ODg4MDRkZjg4ZWI3YzM5MzAgbGVnYWN5LXRydW5rCis5MzIxIGFjNjVkYjIwNTRjOWM2NzhjYzRjMmJlOWVjYjRiMWJiN2E2MWExZWUgbGVnYWN5LXRydW5rCis5MzIxIGViNzg2NThkODE5ZmIwYWYwOWE4ZTZmOWJlZGNiNjcwODA1ZWQ1ZjYgbGVnYWN5LXRydW5rCis5MzIzIDNmZmYzNGVhOTFhYjY0MThkOTJjNzUwNTJkNjFiZjEzMWMzMjNhOGUgbGVnYWN5LXRydW5rCis5MzI0IDU5OWVlYTkzMDg0M2MxNGNmMmJiZDkzNDg4NzE0ODQ0ODM3MDRmM2UgbGVnYWN5LXRydW5rCis5MzI1IDlkZWQ0ZjllMDE5ZWQwYTFlNWM2ZWFmMTc0MmMxYTMwNjE1ZGIzMjUgbGVnYWN5LXRydW5rCis5MzI2IDhhZGIzNTMyOWFmMDI0ZDk1MzdiMzFlZDA3YjIzY2U2MGY4NjA5ZjEgbGVnYWN5LXRydW5rCis5MzI3IDUxZjhkNGRhODFlNGIwNzc5ODYxOGVlY2Q2NDY1ZThkY2JmYzUwNWEgbGVnYWN5LXRydW5rCis5MzI4IDUyZmQ4MjgxNjU2MTQ1YjVlNzM0OGM5NTE0NGM0NzUxOGMwN2FhZDcgbGVnYWN5LXRydW5rCis5MzI5IGQzZTUxNmVmOWNkMTEyMmZkMzI3MWRmZWM4ZTg1NGQ5NTkzOWQ2NjIgbGVnYWN5LXRydW5rCis5MzMwIGE0MjNlM2UwZGE0MDEwY2JkMjU2NjViMWIyY2E0OTlkNjExM2U5NjggbGVnYWN5LXRydW5rCis5MzMxIDY3MmE2NTdhYmJhODdjOTBjNTVmMGU3YWM0MzYzODE0ZDEzYmQzZGMgbGVnYWN5LXRydW5rCis5MzMyIGZkMDdkNTAzYTMzYzVlNTZlMWNiZmMxOTA3M2FhZGU0ZDkwYWNiNGEgbGVnYWN5LXRydW5rCis5MzMzIDFhYjMwNzk1MWY0ZWQwODgxNTYyNTBhZDFiZjczYWZiYTA0OGI0ZjkgbGVnYWN5LXRydW5rCis5MzM0IDkyNzRmYWIyYzVmMjBmNWI3MjA1ZTNmY2E5MzQzMGJjMTk5NzI1MTkgbGVnYWN5LXRydW5rCis5MzM1IDY3YzEwZDk4OTA4ZDJiZWI3NzE0ZWY0MWI4ZGEwNTljMmE3MDE1YWUgbGVnYWN5LXRydW5rCis5MzM2IDYxZDk3M2ViNDEwMmNiZmQxOTdhMDVjNzAyMjZkYWVmNzYwMzNkMDAgbGVnYWN5LXRydW5rCis5MzM3IDUxYzkzMDA3OTUxNDc1MDA0NDk2N2UxNDUyOTkxMGEyMTFkMTlhNDEgbGVnYWN5LXRydW5rCis5MzM4IDlmMWQzZWViNzg0YjkzMjU5MmQ5ZGEwMzM0MWU0N2JhNGJiMDExMWYgbGVnYWN5LXRydW5rCis5MzM5IDc0NGI4OTk0MTQ4YWUzMmMwZWI3NzBhMmFhODliOWRjMTJiNjk0ODIgbGVnYWN5LXRydW5rCis5MzQwIGM1YmZiMWRlNjFhNWI3MDQxOWRjZDM0ZjdkZmMyMGE0YjJmYjg1N2UgbGVnYWN5LXRydW5rCis5MzQxIDMyMDIwMDVhNzIwYjQ5NzU3MGFhODBlMmRmZmMxODlhZGZiNTYxZWEgbGVnYWN5LXRydW5rCis5MzQyIDJkZTM5OGYzNzBlODZlMTZkZDUxNDQ4ZTVlMTQ0NjJkN2Q1MWEzYTAgbGVnYWN5LXRydW5rCis5MzQzIGM4Y2RlMTVkZDhjZTRjNjUyN2MyZjAzYzZmODVjMWRhNTQ3NDk1OTUgbGVnYWN5LXRydW5rCis5MzQ0IDBjM2VmZGYyODEzMzBiZWEzZGJjZjdkM2I4NGI1YTUxMDk1OTJiOTIgbGVnYWN5LXRydW5rCis5MzQ1IDgxZGZkZjY1ODlmOGNlNzkzMmNiY2FiNTYyYTA3MDE5MzcxNTA2NTkgbGVnYWN5LXRydW5rCis5MzQ2IDJmNzUzZjU0MGY0NWY0OTkwMWU0ZTFjODIyNzIzYzEzM2I4NGQyNzkgbGVnYWN5LXRydW5rCis5MzQ3IDI3OGFhY2YwMTcwNzEzMDQ4ZGYwZWZkOWU2Yjc0NDc1MzQyYzdjMTMgbGVnYWN5LXRydW5rCis5MzQ4IDE5MDI5MzhlNDJjNjIwNjQ1MDgyNGJmM2FhMzkzNTg5NTNlYzE4YjYgbGVnYWN5LXRydW5rCis5MzQ5IDc5Mzc1ZjcxZDZjODM4MjI2YzAyZTRiZWMxODc2NDAzYTM1NjUxZTEgbGVnYWN5LXRydW5rCis5MzUwIDJkOTdmYjFkMDZjYTE0NGM3OGFmY2ZlZDBlNzc0YzJhYjliOTVjNGIgbGVnYWN5LXRydW5rCis5MzUxIDliZTdmMWUzNzUzNTk0NTk3MmUzOTNjMGRkM2U5ZDkzZjBlY2VhZTMgbGVnYWN5LXRydW5rCis5MzUyIDZhZTNjOTFmMmQ5MzgzNDFmODEyNTllODRlZTkxMTg4YzUwZTNhOTIgbGVnYWN5LXRydW5rCis5MzUzIGQwM2YyZTJmYmYzNjY2ZGFjMjZiZWU2M2EzNTQ0NGI0ZTNmODZkOGUgbGVnYWN5LXRydW5rCis5MzU0IDRlMmNjNTA0NGZhNTEzZjFhMThmZWNkNGUwNWJjOWI1MjQ3NzgxZTAgbGVnYWN5LXRydW5rCis5MzU1IDU4MDllZjE1N2NkZGI0ZThmYmYxYzdiNDUzNWU1MDY1NjMyMTg2OTggbGVnYWN5LXRydW5rCis5MzU2IGUyODVhMTVmM2E5MmVhMGE3ZmFlNTU5NzFlNDZkOTEzYTFhOWNjN2UgbGVnYWN5LXRydW5rCis5MzU3IGVhMjE4ZGNmNzI3ZGQxNTFlOTU1NmNjNjhiZTRlZDViMGZkZTAyYTIgbGVnYWN5LXRydW5rCis5MzU4IGM0NmQ4NzkyMzMxN2MzOWM0YzExNTA5ZTRhNDUyYjZjMTIyNDQwMTkgbGVnYWN5LXRydW5rCis5MzU5IDM4ZjhhODI4YWM1OGQzZTMwYTJhYmJhZDFkOTk2MmRmMzBjNzE3MGMgbGVnYWN5LXRydW5rCis5MzYwIDNjMTJjMGQ2OWUxMjMwMmU0ZWViYWI5M2VkYTQ0MTAzOTMwYTIzNmIgbGVnYWN5LXRydW5rCis5MzYxIGJhZjY4NmJmOGNhMGI2NDE0YzQxMmYxODkzZTgzNmEyZjZlOTUwZTUgbGVnYWN5LXRydW5rCis5MzYyIDU5OGQyZmZiZmQ4YjU2MjIyYTBjYzA5YzA1MGRjNDYwODcyNDNlNDAgbGVnYWN5LXRydW5rCis5MzYzIGU4ZDMyMjA5MjE3YTlkMjU5NDlmODg3MGI1M2M5OTFhNDI3YTFiYmQgbGVnYWN5LXRydW5rCis5MzY0IGI3ZDhjY2I0NTc0NjMzMjVjOWMwOTU3OWMyZTI1YzNlODUwMGZiNmEgbGVnYWN5LXRydW5rCis5MzY1IDkxMzM0NWQ1NGYzMDZjNWMzYmM2YzQxOGE3NjdjYjQxY2JhOGI2MzMgbGVnYWN5LXRydW5rCis5MzY2IGU4Zjk5Nzg4N2MyZDVlMzIxYmYxMzY5YTAzZTE3NzQ5MGQwODFjM2MgbGVnYWN5LXRydW5rCis5MzY3IGM3YmFiNzNlNjNjNmU3NDE4OTc2NWZmMzBiZmQ0NWE0MTdmMTFjNWMgbGVnYWN5LXRydW5rCis5MzY4IDFmZjlhMzBmODI2YTQ1YWQ4MTBjMTQ5NWUwYjMzN2MzYmE0MjE4NzEgbGVnYWN5LXRydW5rCis5MzY5IDA0N2FiY2JmM2Y0MzI1NTdjNWEzNzk1NjJjY2QyOTIyZGI1MDllNjIgbGVnYWN5LXRydW5rCis5MzcwIDVkMjA1ZjIyYWI2MTg2M2FhNzhhOGQ4OWRmMGQwN2Y4NWYxNDFiODggbGVnYWN5LXRydW5rCis5MzcxIGQyZWY3OTRkOWMxMTZkZGYwOGQ2MTE2YjNmNTg1NGYzNzEzN2QxNTcgbGVnYWN5LXRydW5rCis5MzcyIDA1ZTI2N2FlZDg2ZWJiNTEwNzc1ODg1NjdhODk2MWEzMTdmNjViY2UgbGVnYWN5LXRydW5rCis5MzczIGQ5NDlhMzVjYWUyMGM4M2EyZjNmMGVkNjE3YzBkYzgzYzhkMjVjYzcgbGVnYWN5LXRydW5rCis5Mzc0IGU3MGM0YWYxNTdkNTQzNTRkMjg4YjI4MDAyNzViOTgxY2EyNjk4N2QgbGVnYWN5LXRydW5rCis5Mzc1IDZmZTZhOWMxNDQ5OTJmMTEzZjMzZjM4ZTQ3MjQ1Njg3MjMyZDQ0OTYgbGVnYWN5LXRydW5rCis5Mzc2IDM3ZWUxODcxMWMzYzM4MTg0MTE4OTlhMTlhMGYxZWQ2YzBjYmMzYTkgbGVnYWN5LXRydW5rCis5Mzc3IDIxNGYzYzRmNTQ4OTJlYzdjOGQ1Y2E1NmM5NzY1MjJmYTAxMzIxMDIgbGVnYWN5LXRydW5rCis5Mzc4IDI0NDM3ZDhkMGRkYzNiNDViMzBkNDM3NjIyMmIxNjQ2OTQyNmU2MzQgbGVnYWN5LXRydW5rCis5Mzc5IGFkYjMwMGNiZDU2NjgwZDAxMjI0MmZhOTkzOTc2Y2UxMmZiNDRhNjMgbGVnYWN5LXRydW5rCis5MzgwIDI1MjJjOGY4NjE1YmQ1MzI5Y2M2Zjk4NDdlZjc4YmY5Y2NjMWNjNmMgbGVnYWN5LXRydW5rCis5MzgxIGUyMDdiZWI1YTM2MjliZDBjZDk1M2M4MWFjNDliYmY1MmQzZmJmYzggbGVnYWN5LXRydW5rCis5MzgyIDljYjJmMTBiMDQyOThlZmEwZTE0ZjJiYjBkMGQ3YTc2NDE2MWUzYWMgbGVnYWN5LXRydW5rCis5MzgzIDdiNTRmOTZhZjNiZWZhMDNjMmE5OTI0MmE5YmU2NWYwZWRjNzkxZmUgbGVnYWN5LXRydW5rCis5Mzg0IDgwYWI2MDMwYjkwNGRjOTI5ZWE2OGE1Yzg4NTI4MjdmMTk2ZGQzM2MgbGVnYWN5LXRydW5rCis5Mzg1IDllYzZlMGE4ZjM1M2ZkMmJlNmFjNWE2ZWEwYjg2OGE2ZDg0ZjVlOWUgbGVnYWN5LXRydW5rCis5Mzg2IGU0Y2QzMGU0NTM3MWNlMGE5YzZhMWI3ZTRjNmI4MjZkMjBiYTUyZGYgbGVnYWN5LXRydW5rCis5Mzg3IDM1NDdmZGVhYjRkZmFjOGFmOTI3MTk5MDkyODYwMjE3YjQ1Zjc0ODUgbGVnYWN5LXRydW5rCis5Mzg4IGY1OTVlN2ZjMmJkOWVhNTJjZWMzM2I0NDBkYTM3NjZiZmM4NWRlODIgbGVnYWN5LXRydW5rCis5Mzg5IDJjNDljMDJjZjc0NzRhYjM5YThlMzFlODZmYmNhYmI1MDcxYWM2NTMgbGVnYWN5LXRydW5rCis5MzkwIGYyNjZhYjkxYTk5MGQwMGEzMmUwYmUxMzMzYzU2OGFkY2M5ODdkNzggbGVnYWN5LXRydW5rCis5MzkxIDNjZmY0NDViZDEwZmZhOTcxMTViNjFkY2ZjYjc3YTUyMzc5ZGJiYmEgbGVnYWN5LXRydW5rCis5MzkyIDAzNWU3OTZiODkwZWQ2MjYzOTUwMzAxZTAyNmFiM2E2YzQ5NmZjYWQgbGVnYWN5LXRydW5rCis5MzkzIDBkNTFiM2I2NjBkMTI5M2VkYmU4MzM2NjliNjliMmIxZWY1ZmM0MzAgbGVnYWN5LXRydW5rCis5Mzk0IGI5YTM5NTAxMTJhZWE1OTIwYWU2Njc5MTYzODExM2QzMzQwMDM0NDUgbGVnYWN5LXRydW5rCis5Mzk1IDhkZmJlZWNjMjQyMmI3OTkxNzUzYmM5MzAyNjMwOTY5NzYxMTkxOGEgbGVnYWN5LXRydW5rCis5Mzk2IDk1MGQwNTE5YjVmZTllOTlhMTNmMDk1YWRmMWM2ZTBhMjdhMDFhZTkgbGVnYWN5LXRydW5rCis5Mzk3IDEwMDI5YzhjNDBlMGRjNTVjMjVlNDQwYzYyODZmYzdkOTY5NmI0MjQgbGVnYWN5LXRydW5rCis5Mzk4IGFmYjFlOGFmN2U0ZjhhYmMyZmQ2NGE4OGM1ZGVhMDhjNjVkYTFlYjUgbGVnYWN5LXRydW5rCis5Mzk5IDIzNmVhOTNjNTZmZjc4Yjc1Yjg4ZDg1ZDdkMDJiODk4MzMyZTQwYmMgbGVnYWN5LXRydW5rCis5NDAwIDc2MjljNGQ5ODViYzNlZGUzZTFmZDgwZTVmYjIwNzJlZTQzOGRiZmMgbGVnYWN5LXRydW5rCis5NDAxIDc0YWQyNjgyNTA2MDhhOTNkYWRjZjRjYTVkMmU4ZjgxYWM0MDQ4NmQgbGVnYWN5LXRydW5rCis5NDAyIGNmMzE3YTljNDk5YmJmZjYxNTUyNTViMWI0MjRmMzhkZWNkMzljMzMgbGVnYWN5LXRydW5rCis5NDAzIDNkYjI0YjRkOWM0MjI3NWJkOWQzMGQ5N2ViMzhkNzNlYzg4YjY2ZDUgbGVnYWN5LXRydW5rCis5NDA0IDhjOTJlYzhmNjAzOGE3NTA3MGUyZWEyOTdjMWNhMDU0OGM1ZGQ2YzEgbGVnYWN5LXRydW5rCis5NDA1IDUyMTI1Y2UzNzZhNDJlNDIxMjgxMmRjOWYzOWUyZjM1YzYxY2U0NGEgbGVnYWN5LXRydW5rCis5NDA2IGI5ZDljNTNmMWUxZGY1MTIzMGJiODZjNGVmN2ZiNDA0MGVmZTFjNTggbGVnYWN5LXRydW5rCis5NDA3IDc0MDI0ZTkwN2M2MGQ2MDU0NmE2NmI5MWRiMTNlZTgyN2ZkNDMyYTIgbGVnYWN5LXRydW5rCis5NDA4IDc3NDRiZjFlNDg1YjY1ZjFjNWM2NWE1MjM3ZjM5ZDNiNWFhNzBiNTAgbGVnYWN5LXRydW5rCis5NDA5IDQwOTFiMDRmOTNhZGYwMTg3NTYzZTRmODY0NGRiMzAzYWY0MmNhMDMgbGVnYWN5LXRydW5rCis5NDEwIGM1YjkzOWI1YTllMDJkNmQ4MzNlM2QyOTUzMDQ5MjVkOWUxOWEyYjIgbGVnYWN5LXRydW5rCis5NDExIGE3MmRjNTJiOTdhZGQ0NjFjMzllN2IzOGUzYjQ3M2YyNjFjZjE4NjggbGVnYWN5LXRydW5rCis5NDEyIDY4M2JjMzVhYjc1M2FmNzhiN2JiMDkwZTgwM2ZlNTdjM2M4MGNkM2IgbGVnYWN5LXRydW5rCis5NDEzIDZiNmVmOTA5MjM4ZTA1Y2QwZDcwNzhjOWNmOWI5YWY0NGQ5MmM3MWYgbGVnYWN5LXRydW5rCis5NDE0IDQ1NWNiYWI0YTliZTdkNjU0NjNkN2YxMDJjZmZiMjUzMjEzMmM1MDQgbGVnYWN5LXRydW5rCis5NDE1IGUzYzhjMzQwYTk5MGM4Y2RmYWUwMDJmMzgwM2M5MzdlYmJkMDAzZTggbGVnYWN5LXRydW5rCis5NDE2IGIzYjBhZDQ3MTJhZDBmODRhMzJmZWZlZTIxOTJhNWJhYjAzMGJjZTEgbGVnYWN5LXRydW5rCis5NDE3IGRjM2M5YzA0ZWYwN2I5MzNhNDAzYTFmZDNjYTNkZDQ5NmNmYTE2OTEgbGVnYWN5LXRydW5rCis5NDE4IDFkYWZhZDMwNzAwNjZiOTkxYTc2ZTM3NTdkZjUxMmM3YTA4ZTQ5ZWUgbGVnYWN5LXRydW5rCis5NDE5IDkxMDQ3ODRhZjE1OTA4YWNkNzIwNWEyOTIxOTA5Mjk0MjFhMjE2ZGMgbGVnYWN5LXRydW5rCis5NDIwIDA2MjkxZjA0YmE5YzM4Y2E5ZTIwMjRmYjNiNjJmOWNiYTc4NTBhOWQgbGVnYWN5LXRydW5rCis5NDIxIDBjMWNjMmQ2YzRmMDFkYzRlMTQwZGQ2ZmQzMDQwYzE2YTBlN2EwYmIgbGVnYWN5LXRydW5rCis5NDIyIGZlYmEzZDlhMzBjNzIwMGE4YTIwY2MxNjFiMjFhZDMwYWQ5NWQ2NGYgbGVnYWN5LXRydW5rCis5NDIzIGYxNGU0NDU5ZmI5NGRiYzdkOWQzZjUxZmE2ZDZlODFlMWI0NTBhMWMgbGVnYWN5LXRydW5rCis5NDI0IDVlZjQ3MDA3MTlkZTlhMjI2YjFkNjExMjIyN2VhMWQ4MGUwMTk2NGUgbGVnYWN5LXRydW5rCis5NDI1IGU3YmY1NDUzYTZmZjRmZjc2NDgyZjI0MWU4ZTI0NGNlNTQwMWU3YmUgbGVnYWN5LXRydW5rCis5NDI2IDgwMGNiMjM0ZjY3NmYxYWIwM2U2ODY3MmQ3NTA5NTk1ZjA1ODc2ZjEgbGVnYWN5LXRydW5rCis5NDI3IDZlMGVkZGZhNDA0YTcxNzA5MWZjZjlkNWQzMWQ2ZTRmMjczZWVlYzQgbGVnYWN5LXRydW5rCis5NDI4IDM5MTJlZmE1YmZjYTI2NjNlNjU4ZmJjMjYyNmMwY2UxNWJhMWUyZTYgbGVnYWN5LXRydW5rCis5NDI5IGM4YWQ5ZGM4YWUxZWJmNjljMjEzMDhmNmNjZjRkZDgyMThkNmEzZmUgbGVnYWN5LXRydW5rCis5NDMwIDExNDRhOWVkOThkNmFiMzgyZDljNGM4YjlkMjgyNzAwNjc1NDgyMzAgbGVnYWN5LXRydW5rCis5NDMxIGRjMDczOTM3OTcxNDk4ODExNWU5Yzk5NDc1Mjc4YTBiNWJmY2I1ZDkgbGVnYWN5LXRydW5rCis5NDMyIDk2NDJhMjhkZjJiMTRiNzc4NzhkZGVkZTEyNmM0MTZjZDViNDIwMGIgbGVnYWN5LXRydW5rCis5NDMzIDM4NDkzYjkzNzZlYWUxODFiM2EwNjI5NDZkMDY0ZWE1MjUyNWY4ODMgbGVnYWN5LXRydW5rCis5NDM0IDk3NTRiMjIzMzU4MDkxY2M2N2JlNDVhNTUwYWMxMDFkMjE5Njc3MTMgbGVnYWN5LXRydW5rCis5NDM1IGRmNWI1NmE1YWZjZmQ2MzI0ZmVkMmM0NWE4ZDNmYTZmZThkM2MxZTMgbGVnYWN5LXRydW5rCis5NDM2IDEzOWFkMzFmZjhmZDViOTg2YjhjMDgzZjlhNmIzNWY3ZjY0MTA2OWYgbGVnYWN5LXRydW5rCis5NDM3IGZlZGJmOTMyNTE5MGI4YTZhNjAzMDZiOTIxODRlMTRmZDQ0MTRjMWMgbGVnYWN5LXRydW5rCis5NDM4IDMxOWE1MWMzODFjZWU0ZjhhNGZkOWRjMTRhNTVjNmNhYzY2ZjgzNTkgbGVnYWN5LXRydW5rCis5NDM5IGM1ODc0ZjZmNTQzMWYyOTRiOWZjNWFmYTNiOTNkOGU3NGEyNzlmNzUgbGVnYWN5LXRydW5rCis5NDQwIDQ4NGExYzY4YzU1ODk1NmFlYWYxYWM5N2FhNWY4ZDQ5N2IwYmNkMzEgbGVnYWN5LXRydW5rCis5NDQxIDEwZjI5MjFhMDkxZTcxNGFjNzdmY2YyYjFmYjFlYjNjYzE5ZDkzYjEgbGVnYWN5LXRydW5rCis5NDQyIDMzYmU3ZDVkNDk4YjYwNzJiNzJhYjBhNzAxMjE0YjA2MjFmYjJlZTAgbGVnYWN5LXRydW5rCis5NDQzIGRjZTgzOGNkNDJjMTgwOWQ3MTM1Mjc4NmFlMmRiYzUxMTBlZDNkOTQgbGVnYWN5LXRydW5rCis5NDQ0IGVlZDYzMDQ5ZGY5NTk1NWE5OTU3Y2I2NWVkNGRjZjVhOWNhN2IwM2EgbGVnYWN5LXRydW5rCis5NDQ1IDc0NGUyYjY4ZjNiNmQ5NDBiYmYyNTExMTg1YzE5NzRjZjk5YTJkYTAgbGVnYWN5LXRydW5rCis5NDQ2IDMxZWNhNjQ4ZjdmZmVhZjFkMmM2NDEzNGZmMzdlZjAxOWZiZjNlZWEgbGVnYWN5LXRydW5rCis5NDQ3IDQ5MmM2ZGIxNjBhYzk5ZTNlOGZmMjU3MmViYTkyYjg5NzA4MTllNzcgbGVnYWN5LXRydW5rCis5NDQ4IGU1YWZmNDEwMzZmM2Q2NTkwNjBlMmZmYmYxZmQ5YTY0ZjFkN2E2NzIgbGVnYWN5LXRydW5rCis5NDQ5IGJjMTI1ZjBkMmM1ZDBmMTQxNGQwNDg4MzU5NjdlMGRlMWQ2NWU4ZjcgbGVnYWN5LXRydW5rCis5NDUwIGE2OTI5ZTc0MTdkZDYyYzc3NDE1ODgxNWI1OGIwZmVlZjZhZmU0NmYgbGVnYWN5LXRydW5rCis5NDUxIGJiYWQyYzY4NGFkNzJiY2U1ZjEzNDRkZmM0YjJkNjdhODY3ZGJjY2IgbGVnYWN5LXRydW5rCis5NDUyIDIzYjI3YjBiMjM1YjMxNTUyZDU3ZWY4ZTMzYmNhZTQ4NzY5NmFlYzkgbGVnYWN5LXRydW5rCis5NDUzIDgwYjFlMjdmMjBkNDljZTExOTU4ODUzNTIzZjViZTZiOWJmMTJlNDIgbGVnYWN5LXRydW5rCis5NDU0IGNkYTcyMGIxOTE5ZGZlNTIyYWNiOTBiYWNhYjNmYzVlYzg3NzczNTkgbGVnYWN5LXRydW5rCis5NDU1IGE1Njg2ZTc1Njg1ZjJkM2RlYjU2ZDU1NzEyZWMzOGJlYjFjNjIwMjIgbGVnYWN5LXRydW5rCis5NDU2IDJmMmVmYjhmYTU0ZmYzYzYzYTJjZTFhMTY3YTNmOTFiYzU4ZTNiNWQgbGVnYWN5LXRydW5rCis5NDU3IDc2ODhmMzEwNmFlNDQxYzJjYjc4NzMyZDJkNmQ1YTAzMzNhZGY5NDkgbGVnYWN5LXRydW5rCis5NDU4IGNmYWQ0YjAyOTY0NWU5YTdjYjNkYWRlYjhlZDMwNDkyZjIwZGFmNGQgbGVnYWN5LXRydW5rCis5NDU5IGI3MGJhNGRiNzY3ZTA5NzQwZjVkMWNhN2MwN2ViODkyZjFhOGUxNDkgbGVnYWN5LXRydW5rCis5NDYwIGYzMzY0NzA4YzA5ZTA3OTAxMGI2YTE3ZTZkMDIwODYyNDJjZDc4MjcgbGVnYWN5LXRydW5rCis5NDYxIGZmY2FmN2FmZDVkOWUzZTkwMWZkOGRiZDViY2VmNGUxNDkzYzNhNDQgbGVnYWN5LXRydW5rCis5NDYyIGY1ZmQyMzliMTc4YWQwMDhhNjgxYjQxZGJmNTA2ZDM3NDYxYzdiNjggbGVnYWN5LXRydW5rCis5NDYzIGQ0ZTlhYzc1N2U1YzA3ZmY1OWM2YjM4N2NkMmM0MjVkMWE2MzZjMzcgbGVnYWN5LXRydW5rCis5NDY0IDYzOGQ4NzdlYTk5NTgzNTMzNmMwODg4YjEzYTMyMjYwMzI2NDlmYzAgbGVnYWN5LXRydW5rCis5NDY1IDFhNDE0MTU4ZWI2NjViMTEwY2Q0YTY4NzJlZDNiYWI1YTA0MzBlZDEgbGVnYWN5LXRydW5rCis5NDY2IDJlOTFmYzcxY2JiNTAxOTgzNDcyOTFiYjczNGQ3OTgzZjQ1Y2M4M2IgbGVnYWN5LXRydW5rCis5NDY3IGZlMTA4YTRiYjhkNThkYWFjZjg3YzdkYjNmMWNiOTJjNTI3MDUxNDYgbGVnYWN5LXRydW5rCis5NDY4IGIyNDQ1YzkzZjAzYjg5YzBhMDY4Nzg4Mjg0YmVjOWFjYmM2NjBhMDYgbGVnYWN5LXRydW5rCis5NDY5IGYzNDliZjBlOTMyMjc2ZmI2NGMxNzQ3MzdhYWNhYzJiMjhkYWQyMTYgbGVnYWN5LXRydW5rCis5NDcwIGQwMDUxNWY5MmI1MzRkMTRlNWQwNDY3MzE0YjgxMjRhZWRjYjgyNTIgbGVnYWN5LXRydW5rCis5NDcxIDk4N2E4MzFhYWYyMzZhZGY1NjExYzc5NjllN2Y4ODFiY2QzODI2NGIgbGVnYWN5LXRydW5rCis5NDcyIDYwY2NmYTk2NTZhY2YwYjUyMzU0YTFjMTVkN2MzZjRiODY5ZWJiMzAgbGVnYWN5LXRydW5rCis5NDczIGViY2Y2MDRjY2VlMDUxMTI5ZmJhYWU2ZjI2MjBkYmM0YWEwZGVlMDUgbGVnYWN5LXRydW5rCis5NDc0IDY5MTEyOTkwZDhlMjQ4YjlmM2JiODBmNWRlZjAwMjdlOWY4ZjJlNTMgbGVnYWN5LXRydW5rCis5NDc1IGZhMTk0MzBmZWM0ZTQ5ZmEzMWU1MDBmYmMyOTdjMTFhZjFkZGQxN2YgbGVnYWN5LXRydW5rCis5NDc2IDhhZDE3ZTRjY2Q5YmE4OTkzZmI3ZWI1MTE3MzVjZjBkYzdkYzYzZmQgbGVnYWN5LXRydW5rCis5NDc3IDdjZTlkYTAyOTYxOWY1NWJjNTMxNWY3YmQ3YjZmMWE4Yzk5MGJjNGYgbGVnYWN5LXRydW5rCis5NDc4IGYyYWYzYzY0NTcxMDI0Y2Y3OTAxMWMwNTZjZGZmMmI5MDM5OWFlYWYgbGVnYWN5LXRydW5rCis5NDc5IGZlYjgwZWE1NDg4ODg3Y2VlODU1MjhiMTk3ODA4MGNmZTZlNTc4NmYgbGVnYWN5LXRydW5rCis5NDgwIGYwZjliMmU0ZjRjYzBjNTA5Zjg4NGQ4YjNmZDM2N2VmMDljMmFhNTEgbGVnYWN5LXRydW5rCis5NDgxIDIyNDQ0MzlmYWZjZjA2YzFkZjY2ZjRmYTM0NjY2YzZmMDY5NzE5NjkgbGVnYWN5LXRydW5rCis5NDgyIGExMGM0NTM5MTI3YTFjZjBjMTIyMGY5ZjAzYzZkZGQ0ZTQ4NWU1YmEgbGVnYWN5LXRydW5rCis5NDgzIGNkZWVmZjRkNmNiNGNmNzI5YTg4M2JiMDdiNTAxYzFmOGYyYjE3OTEgbGVnYWN5LXRydW5rCis5NDg0IDk3NzNkMzk0MWM5NmUyZDNiZTI2M2I4ZTBkNGE3NWQ0YWQ4NTRhZTMgbGVnYWN5LXRydW5rCis5NDg1IDZmMmFiNGFmYThmOTQ3ODdjMDZmY2YwYmQwYWQ4ZjM3YjY0ZDhhZDkgbGVnYWN5LXRydW5rCis5NDg2IDRiODg3MTE5ODVhMjU4OWMzMjE4ZmU1NjA1MzlmNGM1ZjIzMjE4MjQgbGVnYWN5LXRydW5rCis5NDg3IDQ0NGE2YjA3ZGE0NjUxNjhhYTI4ZGI3MWE4MmM5OGU4MzFhMWJlZDUgbGVnYWN5LXRydW5rCis5NDg4IDBhYmE2NDliZDliYjNhY2QyY2Y2YmEzYjNmMjQzODRhMDgzMWQ5NzQgbGVnYWN5LXRydW5rCis5NDg5IDdhOGMzMDgxOTZkMTQ2NTVjNDJmMzFiN2U1MjQ3NWEyODMyMDkwYjYgbGVnYWN5LXRydW5rCis5NDkwIDJkYjE2ZDFkYmQ4N2NiYTA2ODMyMzY4MGEyZThjMjVjYjM1NjRkZTcgbGVnYWN5LXRydW5rCis5NDkxIGE1ZGYwMmI2YzdhODMwODJiNDcyYjhmZjBiNDg3MzFhMGY4OTkzZWEgbGVnYWN5LXRydW5rCis5NDkyIGM3NWQ4OTllNjY2ZjE2OGQ3ZTQ3YjAwNWMxNDVkNmZjMjZkMzYzZjIgbGVnYWN5LXRydW5rCis5NDkyIDg0NDYxMDExYTFhMGFiNDAyZTM1MmYwNjc0OGYyOWZiNWI1NTU5ZTUgbGVnYWN5LXRydW5rCis5NDk0IGRjODVhZDFiYTBlMTU2M2EzZmViZjBhOTE0ZTJjZGFmZGFjMmY4MDYgbGVnYWN5LXRydW5rCis5NDk1IDU5YWEzZTFjMTNkYzU4MjFiMTgyOTc5NjYxYjM3MzEwYzIzMWMzNTUgbGVnYWN5LXRydW5rCis5NDk2IDBhOTUxNDcwYjFiZjMwZmZiOWNmMWY5NWUxYWM0NzdhM2M2OTUzMmUgbGVnYWN5LXRydW5rCis5NDk3IGFkYTEzMTFkYTI4NmVkNjQwMDdmOGM4MWQyODc3YjBmYTNjMjM3MTYgbGVnYWN5LXRydW5rCis5NDk4IDI2MWIxMWIwY2NkNjRkZjA0ZjdkZTA4MTYwN2NmODkwOGUxMWQ2MTAgbGVnYWN5LXRydW5rCis5NDk5IDM4NDRkZTJhNzA5ZjUwY2Q3MTI0NGIxZDhmMjcyMTFkNjI3ZTkzYzEgbGVnYWN5LXRydW5rCis5NTAwIGE2NmRmNTU1ZjAyNWYyYjhhNjIxYzRkYjkyZTAyNjU0MmViMjJmOGYgbGVnYWN5LXRydW5rCis5NTAxIGNjZDQ3MWM3Yjg2M2NkZTIyZTRkMzI1YTNhYTMxZDlhYzllZmQwMDcgbGVnYWN5LXRydW5rCis5NTAyIGUxN2ZlNzkzMDVjNzQwNmI4YzdiOWNjMjllZmU0MGY5MjgyMGUyMmIgbGVnYWN5LXRydW5rCis5NTAzIGM1YTE4ZmM0Zjk2NjE0YmIxMmRmMzRhM2I3NDZiM2MxNjRlNzkxYWYgbGVnYWN5LXRydW5rCis5NTA0IDRkNjQ1OTA5YjgzNDU1ZDIxYmFkZjNlZTE0YjNhZmRkZDU3MWFhMjkgbGVnYWN5LXRydW5rCis5NTA1IDhkYTM1ZjFjNzM5MDEwYmI4YmY0ZDNjYzE3YmEyZDA1MGNhMDA4NTAgbGVnYWN5LXRydW5rCis5NTA2IDM3OWQxZmQ0MmRiZjFmOTFmOTEyMWVlZDkxZjU4MGMwNTFhNjY3MGMgbGVnYWN5LXRydW5rCis5NTA3IGEzNjdhYWE2NTAzY2JkZTJjYWUwZDNhZjczMThhN2M1NWU1YWFhNzcgbGVnYWN5LXRydW5rCis5NTA4IDA1ZTBlNDk5MDE0ZjI5NGVkNjIzY2RlZjM1MzNlZTM4NDM5MmM0ZWYgbGVnYWN5LXRydW5rCis5NTA5IDhkMTFlY2MxNzdiMmI4YzUwMzRlNDMzNGIxYmRmZjRkN2Y5M2ZjMzQgbGVnYWN5LXRydW5rCis5NTEwIGZhODVhN2ZkNzQwYmM2MWJiMzk5MWFlZGY2NDJlNGZmMjZmZWNhYWUgbGVnYWN5LXRydW5rCis5NTExIDYxNDc0NTliZmNmYjlhMGU2N2NmYTcyYTFjOGRiOGY5NmViZDUyMDggbGVnYWN5LXRydW5rCis5NTEyIGRkZjUyZjAxYmMwYTc2ZDZkN2M5ODI2ZWY2Njg3MDE4NTE2ZDJhMjYgbGVnYWN5LXRydW5rCis5NTEzIDMxNjE2NzQ5OTAwNTk5NjgyNTljMTgzZDlmMjY0OTc0ZWZiNjExNDkgbGVnYWN5LXRydW5rCis5NTE0IGQwYTk3MDE0ZWQ0MmYwMWY2MjYxMzNlZTNhODcxMjJlNDA4MDA0M2MgbGVnYWN5LXRydW5rCis5NTE1IDI2MTJmOWFjMzFlZGExNzc2Mjc4MzRiMzEzY2Y0OGY0YjdiMWI4Y2QgbGVnYWN5LXRydW5rCis5NTE2IDQ5Y2UxOGExNjk5ZjRjNjIwODg4NzZkMTZjMmI1YmFmNmI1YTJkMDMgbGVnYWN5LXRydW5rCis5NTE3IGFiNGQ2MDQ4MjJkMGFjZjI1N2Y2YWYxYTVjMzM0N2QyZDI5MmI4NzMgbGVnYWN5LXRydW5rCis5NTE4IDFjOTI3ZWNmY2JiM2IxODgwZDkzYzkwMTM1ZWViMDdlMGU0NGFhMTkgbGVnYWN5LXRydW5rCis5NTE5IGE1MmEzZTI2ZWRjNGNlOTQxNGVlMTI1ZmJmMzQ3MGQ1MjVlMDk4MzAgbGVnYWN5LXRydW5rCis5NTIwIDg0ZTg3MWUyMDA4N2FlY2Y4NDYyMmNkZjY0MzgzNDc1N2RmYWZjYWEgbGVnYWN5LXRydW5rCis5NTIxIDc2ZWFmMzYwNDBiZTU1Y2FlMmJiMWRiMzAwNGViZTI2ODlhZGRlYzkgbGVnYWN5LXRydW5rCis5NTIyIDI5N2VhNjc5MjZlYjk0YWE0OTU2N2RkYTkwMDg2ODRiMzdkNTdmNDIgbGVnYWN5LXRydW5rCis5NTIzIGFlNjNmYTNjYjFjNmY5MWY2MzYyN2RlZjA0YTM2OTkzZWY5MjdmYTggbGVnYWN5LXRydW5rCis5NTI0IGM0YTc4YjkyNGRkOWFjODg2ODNhOGRmNzA0YTk3ZDlkMWQ3ZDE3YTEgbGVnYWN5LXRydW5rCis5NTI1IDlmZTMzNWQ0NTU5NTZjY2I4OTgxNGZhYTZjNmE2NjJhOGI5ZTM2ODUgbGVnYWN5LXRydW5rCis5NTI2IDNlY2E1ZjM3NTAxYTc5YzEwMTMzM2Y1OTkxZDM5YWY0MDhlMTdmZWYgbGVnYWN5LXRydW5rCis5NTI3IGFlY2U1MTM2MmFkYWM1YzFhYTBlMmM3Njg3NjI2NjNhMDk2ZjY4ZTYgbGVnYWN5LXRydW5rCis5NTI4IDkwZWRjYjM4ZmIwMDNmMjQzZDU3NmVmYmIxNjk0YjU4Y2QxODExMjYgbGVnYWN5LXRydW5rCis5NTI5IDFmMmY1NTk3NzM5YmExZWI3MWQwZjZmMTkxZTRlMTE2MGRiMTk3NGEgbGVnYWN5LXRydW5rCis5NTMwIDUwMjg4MGFmNDY1NGUzNzlkOWY3ZTUxNzAwMmFhNTYxOWEzYzI3MjEgbGVnYWN5LXRydW5rCis5NTMxIGRiMGRkMTE3NTQxZDQ2ZTgyYTNjYzBjNjgzOGFiN2E1ZGRhMWNjZDIgbGVnYWN5LXRydW5rCis5NTMyIDQyNTM0NDA5NzUwYTA0ZWExMTliZjZlMmIxZDg0Yjk0YTQ4YWM3MzEgbGVnYWN5LXRydW5rCis5NTMzIGRmMDViOWM0YmU3ZjM3NzA1MTY4MTRkYjQyMGE5ZmRmOTMwNmMyYzggbGVnYWN5LXRydW5rCis5NTM0IDUzZTU0YTE0ZjQzMjMzOWQ4MTZiNDk5ZTBkMGNhY2I2YjIyNDI3ODQgbGVnYWN5LXRydW5rCis5NTM1IDA4OTZkMzJiNjBhNGIxY2M4MDJjZjI2N2E1YWQxMmIxNjFkMjEwY2EgbGVnYWN5LXRydW5rCis5NTM2IGYyYjJhN2VhMmExZTM1NWM5ZjQxOWZjNmQ4NjBhYzcxYTIxMWNiNjQgbGVnYWN5LXRydW5rCis5NTM3IDZlM2I0Njk1ZmZhZTFjYWUwMDdmYzQ3ZmViODgwMjhmN2Y5ZTAzMmQgbGVnYWN5LXRydW5rCis5NTM4IGM5NWU2MGVhZDVlMDZhMWU1ZTNlOTk2ZjJkNDBkYWNiNjdkNDJlMzkgbGVnYWN5LXRydW5rCis5NTM5IDFkMGI5MDI4NTIzYzZlYmIzMWI4Y2FhZjQzZDM1MDE2OGI4MTk5ZjIgbGVnYWN5LXRydW5rCis5NTQwIDZiNGY4YTk2ZTFkNDQ0ZjRmZDZhNzY0NzJhNjdkMTk2MzA3NGVhYmYgbGVnYWN5LXRydW5rCis5NTQxIGU2OGVlYjM1ZDA0ZDFkYjdlN2NiYjFiZTcyZDBhODg4NzliM2E3MWMgbGVnYWN5LXRydW5rCis5NTQyIDBjNzAyNjQ1NzNkYjNkMzUyMTM2MTBiZWNjNTU0Y2Q0YTA4ZTk4NWUgbGVnYWN5LXRydW5rCis5NTQzIDg4NjZjNjliMGFmYzhkYzc5MzFiNGE1MTlmNDEwNTY1ZDRjODA4ZmUgbGVnYWN5LXRydW5rCis5NTQ0IGZhNDIzMDY4NTc1NzJmZjg1M2FhMDI5OTZiYTcwZDhkYmY0YTNlYTQgbGVnYWN5LXRydW5rCis5NTQ1IDkwNjUwYmJkOWRiYjZhYzU5ZjMwN2I2MjBhZDI0N2E1NzE5ZGU3NzIgbGVnYWN5LXRydW5rCis5NTQ2IDJjZGYxMWIyZWQ5YjQ0MTBmYWJkZTE2MDQ3ZDJhZDYyZDdkMWJhYzYgbGVnYWN5LXRydW5rCis5NTQ3IDAwZTYxMjU2MDQ5MmM2YWEzNWFlNDA1YmRkMmRlNzAwN2M3ODY3ODggbGVnYWN5LXRydW5rCis5NTQ4IDc1YTFhZWM2ZDliMmNkMjQzOGQ2OTdkNGRkZDhhMjg3NWM4MzYxYmYgbGVnYWN5LXRydW5rCis5NTQ5IDAzMTRlY2JjNWY1ZDRlMjViZTZlYWM3OTI0NDIxMjU1NjJmMTFiNDIgbGVnYWN5LXRydW5rCis5NTUwIDVjMzUzYzUyMmE0ODI3ODE0OGI1ZWZkNGJjN2M4MmNiNzc4Y2MwYTEgbGVnYWN5LXRydW5rCis5NTUxIDNiNTE5YTZkMjdiYjViZTJmZTgwZGUzNjY5OGFhOGMyNTY0MzAxMDAgbGVnYWN5LXRydW5rCis5NTUyIDhjZDU3M2I3MmQ0YjYxM2NhYjBlMGUzZGRjN2JhZGYxNjY4YTI1ZDcgbGVnYWN5LXRydW5rCis5NTUzIDNkOGMxYjhmNjA5OTBlODRjMjE1ZDExOTJjZDE1MzFiZGY1M2ExNmEgbGVnYWN5LXRydW5rCis5NTU0IDJhZTQ0MTdhYzMzMDllZTY4MjU4N2QwZmZhZjJjYzg3OTkxYTEzOWEgbGVnYWN5LXRydW5rCis5NTU1IGMxYWQzNGIzYzA2OTk1MGQ0NzRkYTg5MzBhNDc1NmZmNTQyZmM5NjUgbGVnYWN5LXRydW5rCis5NTU2IDAzMTQ1NTM0ODJhMjllNzQ0MzhhMjUxYmMzNmJjNjIzYmZhNjY3MWMgbGVnYWN5LXRydW5rCis5NTU3IDMyMmRjYTVlZTE0NWJkY2I0N2RiZDQyNGEwYjUwMTA5OGFkOWY1MTMgbGVnYWN5LXRydW5rCis5NTU4IDkyNGY4YTAxMTdkNWZiMDExZDVmM2U1YWQzMTcxOWUzNDNmOTYzMjkgbGVnYWN5LXRydW5rCis5NTU5IDBiYWEyYWI0MmVlOTBjZGRhYzY2ZjMzMTAyZjZiYjgyN2FhZDU2OWYgbGVnYWN5LXRydW5rCis5NTYwIDQxOWI4NmIwNGFlNGQ5OGIzZTZlNjhmOWRhMzU4ZmU5NTg5OTk1NWYgbGVnYWN5LXRydW5rCis5NTYxIDkxM2U0OGFhYWM3NjFlYWM0NTQxNDJkZGEwNmU4OGMwZDk3OWU0OWMgbGVnYWN5LXRydW5rCis5NTYyIDBjNjg4Nzc2NTkzOTUyNGU0MzgxY2RkMjQ3MmE0ZmYxODFjYzRlNjAgbGVnYWN5LXRydW5rCis5NTYzIDliMDVjMjBjNTc3NmE0ZjI1YzMyOTE3MTRjNzQ4ZWZmYjIyMzYyMzIgbGVnYWN5LXRydW5rCis5NTY0IGZjYjJlM2VlODk5NTk1NmI4MDU3NmI1NWU5MGEzMzk1NzA5NTc0MTUgbGVnYWN5LXRydW5rCis5NTY1IGFiNTFkYTM0NzMxNmQ0YmZhYjc0YjA1ZTExMzA0NTAyZGI3NGViNmMgbGVnYWN5LXRydW5rCis5NTY2IGEyZTA1NDAzMjg5OWM2MjU4NmMwNDM2YWE5ZDJhMWMyNDFlMTIwM2EgbGVnYWN5LXRydW5rCis5NTY3IDI5YjE2ODY4NzVkYWE1MTUxM2M0MWRiNjI4NWEyMjM2OThiYzA2ZWYgbGVnYWN5LXRydW5rCis5NTY4IDk2NDYwZWYzM2ZkZWQ3ZWQxMmZkNzVhOGE3YjU1NmY0ZTJmZTYxZTMgbGVnYWN5LXRydW5rCis5NTY5IDJlOGJjZGU0YzI0OGZmYmU2OTk2N2Q3NzIzNzQ3ZWIxY2Q4NDZhNTMgbGVnYWN5LXRydW5rCis5NTcwIDhhNTU2NDNlNjY3ZmExNzJkZGQwNWQyNzYxM2YzOTkyYTkwMDNiMmUgbGVnYWN5LXRydW5rCis5NTcxIGFmODI2YjIzZjAwNjQzMDgzNWUwYTcyYzliNjEwOWEyOGY1MzYyZDIgbGVnYWN5LXRydW5rCis5NTcyIGU1NTQ4MDk2YjQyYTVmYjkxMjZlOGViNjA2NWY1ZTliOGVmNTc4OTcgbGVnYWN5LXRydW5rCis5NTczIGJjMTk3NmZmNmZmZDMwZmIzNTM0NzQ5ZTg5Nzg1OWEyNzk4N2NhYTQgbGVnYWN5LXRydW5rCis5NTc0IDViYjg4NDUyNzQ0NmY5NjVkMWUyMTlhYWQ2MmJjYjQxMDFjM2FkNDAgbGVnYWN5LXRydW5rCis5NTc1IDAwYTg1YWIwMzM3ZjdmODdjZGY2MjZkM2JkZWQ1MDg1Yzg0NDViZjAgbGVnYWN5LXRydW5rCis5NTc2IDE2NzZmYWQ3YjYzZTc1MjlkMmYxOGI1MTk5ZWY1YWIwOTMyYjFkOGMgbGVnYWN5LXRydW5rCis5NTc3IGY3ZjU1YmI2YTNiMzA4MGYyZTA4YmIyNTAxM2FiYTk5ZjNkY2VkMzEgbGVnYWN5LXRydW5rCis5NTc4IDgwODQ3OWY4NWEyOWEzYjExOWVhZjViNWRjZTdhZDhkYWQ5ZTMyMTEgbGVnYWN5LXRydW5rCis5NTc5IDBkYzJmY2IwNzZhY2E1YjdiNGEyZmQxNWRkMDNjNGMwNDQ3OGU1OTQgbGVnYWN5LXRydW5rCis5NTgwIGVmYWEwMWRlZmZkMmRiMDQyMGUzYzlhYjc4ZmY2ZTYzZDM2NDk0YjIgbGVnYWN5LXRydW5rCis5NTgxIDJlNWExMTZlNTRlY2Q1Y2NlMWU0NzA0Yzk3ZTMxZmU1OGY0MDRhMTYgbGVnYWN5LXRydW5rCis5NTgyIGU3MDYxYWIyNDg1MjE1ZTQ0YmI0N2FiZTkyOGU2MjdhMjk1NmY3Y2MgbGVnYWN5LXRydW5rCis5NTgzIDI4YzdkNWZjZDNhYzlkYTMxZjZhOTFmOGE4ZDJlNzFjMTY4MTFhNjMgbGVnYWN5LXRydW5rCis5NTg0IDMxNzZkZWFjYjZkMWYwZWFhNjUwMTA2OWUyOTM2ZDc5ZWFhN2I4ODkgbGVnYWN5LXRydW5rCis5NTg1IDZjOTAwYWRiMWVjM2IxNWExMDNjM2M4YTJiNmE2OTE4Y2M5NWRiNDQgbGVnYWN5LXRydW5rCis5NTg2IGVkNjI1NDgwNDU2MzVlNTliZWFmMjdlZTc2NWU4ZGViZTBhZWIwOGMgbGVnYWN5LXRydW5rCis5NTg3IGY0MzY2Nzg2NmQ1ZTVlNjIxZmFkNWE1MDc5N2U4NDFmODg0YjEyNjkgbGVnYWN5LXRydW5rCis5NTg4IDI4MjIzNjhjMjY2YTNmMDk5NmQwNmViZTBkZjkwMDRmNTdhNDhmMWMgbGVnYWN5LXRydW5rCis5NTg5IGYwNjNmMWViMjk2NGJjNDMxYTcwYzIyMDZkODRkYWI2MDlkODgwMjggbGVnYWN5LXRydW5rCis5NTkwIGVjZTQxMjNlMzZlYTJjYzk5YjVkZTMyYzkyMWJlN2M3NTMxMWJjNDEgbGVnYWN5LXRydW5rCis5NTkxIGY1ZjMwNWQ3YTYxNzU3NDRlMmMzZGM3MWE0ZmFkZGY5MDcyNjY1MDUgbGVnYWN5LXRydW5rCis5NTkyIGZhMDkzNzJmNzg3MmRiYWM0MTFiZDc1YjI1NzdjMzY4YjhhZjJhYzYgbGVnYWN5LXRydW5rCis5NTkzIGVhN2RjNTEwZTJkZjU2OWU4NWIwNzBjYmIxMTdlMDYyYzc2ZmMwMDAgbGVnYWN5LXRydW5rCis5NTk0IDQxNTE0ZDFlZDY2NGUyYWZhYzFiZGY1ZDMxNWEwZWZmY2RkM2JmODkgbGVnYWN5LXRydW5rCis5NTk1IDQxOWRjYTJiM2E2MTc5MGI0M2VjNTlkYzFmYTMxYTFhM2Q5Y2RhNTEgbGVnYWN5LXRydW5rCis5NTk2IGU5MTA4ZTk3YTVhMDE3ZTAyN2RmMzNjZGJmYTU1NDNlOTE0ODIzOGQgbGVnYWN5LXRydW5rCis5NTk3IDUxNjE4OTk4NGIwY2EzOTRjZTJmNGJmYjVhZWJjYmVjNTgzZGNlZDYgbGVnYWN5LXRydW5rCis5NTk4IDBlZmVkNGQzMzIzYjEzMDJhY2NhMDM5YmQ3MTZlNWNjZjhkMmUzNjMgbGVnYWN5LXRydW5rCis5NTk5IGM4NzQ1ZDIwNTEyMjcxNmM5ZTEwZGI3OTlmYjZmMTJmOWU2ODY0ODQgbGVnYWN5LXRydW5rCis5NjAwIDQxZDZkYjhlMjZkYzAzMzkzZGY4N2I0OTI3MmM1YjI0OWJiMzI1NjkgbGVnYWN5LXRydW5rCis5NjAxIDVkNTE3ZGRjYmQyZWY1MTkzM2U4ZjFmZTRjYzFjNWQzMjMzZTUwMzcgbGVnYWN5LXRydW5rCis5NjAyIGMwMzdkMDBiMWUyY2JhODk4NWNiNjM5YzEwNjdiM2Y2NDU1N2YxNzAgbGVnYWN5LXRydW5rCis5NjAzIGRlNGM4MWMwNjk5NDI5YmVlNDk3ZmQ4YjFhZDc0NGY4YzY5M2Q1ZjkgbGVnYWN5LXRydW5rCis5NjA0IGQyYzExMGFjYzYwYzE2NjI2Mjk1NTcwZjdmNmE1OTMwM2YyYzM5OTAgbGVnYWN5LXRydW5rCis5NjA1IDFjNGJhYWRhNTU5ZTIzMGQzNDIxNjE2YTJhMWY2YTk5YzllN2I2YmEgbGVnYWN5LXRydW5rCis5NjA2IGRlNGRjYTllNDc3OGNmZWY5N2E5YThjZjE3NzlkNzY5MGFlMzRiYjggbGVnYWN5LXRydW5rCis5NjA3IDk3MzE1YmYwOGZhZDYyM2Q2MjA0ZDA1ZTA3Yjc2ZDM3NjY5OTAwMWQgbGVnYWN5LXRydW5rCis5NjA4IGU0YzMxZGMzMDYyM2M2ZDhhODE2MDc1MDgxMDg1NmUzY2ZmMTRhMjAgbGVnYWN5LXRydW5rCis5NjA5IGRmZGVhYzVlMThjNjI1YWFkOTk4YTBhYzdlNjA0YmY1ZDVmMDc0ZTIgbGVnYWN5LXRydW5rCis5NjEwIDk2ZmE2NzUzZTk1NjI3OWI1YjY5ZTUzYzg2ZjE2MzRmYTUyODY0M2QgbGVnYWN5LXRydW5rCis5NjExIGJhODQ5ZTQ4ZjljYWUyMzhjOTMzYWJhYjJjOTRhOTM5NmYwZTViNzAgbGVnYWN5LXRydW5rCis5NjEyIDM5MzlmOWZmNjY1ZjhmYmVhMzVkY2E1NzcxZTk5NjQzMTg1ZDAwNDkgbGVnYWN5LXRydW5rCis5NjEzIGVmYTIyNDMzZTg1NWRhNGY0NTViMWU1YzBjNTUzNjg3MjQ1ZjY3ZDUgbGVnYWN5LXRydW5rCis5NjE0IDkzZmZlNjQxYTUxMjc2ZmY0ZGExN2MyZjU0YWM5ZDFkOGQwOTJjOGUgbGVnYWN5LXRydW5rCis5NjE1IDE2YTNjZGQyZjFkMTNiODIwMDk4ZjMwZjNmNTE0ZDE0NDE3MmM2MTggbGVnYWN5LXRydW5rCis5NjE2IGJmOTFjMGUxNjVhYWRjZjVlZmIxMDYwMWIwM2VmYjdhNmQ1MjVkM2YgbGVnYWN5LXRydW5rCis5NjE3IGRjODY4N2I1M2RkMGYxNzY4YTAxYjk2OGVkOTI1Mzg0M2E3NDRhZDcgbGVnYWN5LXRydW5rCis5NjE4IGU3YmZlYTQxZjYxN2U4OGU4NzU2ZmMxNWE0ODcwZmVlM2E2MDJjNTMgbGVnYWN5LXRydW5rCis5NjE5IGI4MWZiNjdkOTA4ZDdhOTczY2UxMDIyZDZmZjAzNGU4MDA5NDdiMWMgbGVnYWN5LXRydW5rCis5NjIwIGFmZjFlN2IxZjUyM2Q3MzA1YmMzZTExZDMyY2E3MDI1NDE4ODUwMGQgbGVnYWN5LXRydW5rCis5NjIxIDNmMGJlN2RlN2NhNWNhNTRhY2ZjYTNlMTkzNGMzZDMxODk3YTE4NDMgbGVnYWN5LXRydW5rCis5NjIyIDRlZjZhODNiMmU2MjVlMTYzNTljZWZhMTU4OTdmOGVhYTEwYWNmYTcgbGVnYWN5LXRydW5rCis5NjIzIDYwNzQ4NDdmYWQxZGU0OTcwMjhlYTkyZDRmZDBlY2YzYThiMmM2NDIgbGVnYWN5LXRydW5rCis5NjI0IDQ5ZTRlM2YzMGU1ODgwMmJhNmRhYjBlZDI1M2U4ZmNjMDdhYWM4M2UgbGVnYWN5LXRydW5rCis5NjI1IDUxMjhjNjA3MmFhNTFiYTcxNmJjN2ZiM2JkZDAwMmE1ODljZGQ4NjAgbGVnYWN5LXRydW5rCis5NjI2IGQ0OGI5OWQ4NTYxNzQyZDVkNzdjODVkZjU1ODEyN2U4ZDZiZWQ5YjggbGVnYWN5LXRydW5rCis5NjI3IDdlZGMzMGRmNzNmNmEyY2IyMGU1YWNiMmU2ZTNhMGM2Yzg1OGU3ZmYgbGVnYWN5LXRydW5rCis5NjI4IGI4NjQwMjlhNWJjNWM1ZDAzYTAxMzU5M2Y4YzI1MDMwYjE1NjczMmQgbGVnYWN5LXRydW5rCis5NjI5IGQzMzk5NTRlYTU3ZDg5ODc5MzFjNDY3OGNiOWMxNTQ1NTRiZTg5MGIgbGVnYWN5LXRydW5rCis5NjMwIGQzOWE4MDU4NTJjMjBhZTljN2VmOGRmN2JiYjhkZWZlYmM5MjcxNzcgbGVnYWN5LXRydW5rCis5NjMxIGE3NjkwZWY1ZTE1OTM3ZTEwMjgwZTk1MzRjNGVmMWEyOWMzMTRjMjQgbGVnYWN5LXRydW5rCis5NjMyIDc0OTE2Yzk2ZGRiOTY1MTRmNDUyYmY0NGZmYTlhMDM4MjIyZTlmZWEgbGVnYWN5LXRydW5rCis5NjMzIDMwYWIzOWMyYjE4NjJlNGYwZGVjM2I4ZDRlZTZlYWFhZGRiNzA3NzIgbGVnYWN5LXRydW5rCis5NjM0IGNlNmFkMTcwYzBjZTcyZTkwNmZlOTdiMmZjZmVkYzY5YTkxYzkzMTEgbGVnYWN5LXRydW5rCis5NjM1IGE2ZmE5ZjNjYWQxMzdjYWE1ZjdjNWUyYzc5YTliNjRiN2FkMWZhZWQgbGVnYWN5LXRydW5rCis5NjM2IGZiNzFiOTJkMTQzYWExZTE2YjViMDI0Y2EwYTFjMThjZDkyMWM5MGQgbGVnYWN5LXRydW5rCis5NjM3IDQ5YTIwZDAwZTM0Y2U1ZjVjNmRmNzU5YzBmYjYxNjUxYTYyOTk0NGUgbGVnYWN5LXRydW5rCis5NjM4IGE2NGE0MjNkNmI1NDBhYTY0NDcxMTc2ZmM2Y2RjNjFmMDcxOTRhMWIgbGVnYWN5LXRydW5rCis5NjM5IDVhYjcwODE4MWZhNjIyMzJmMDY1NDZmYWRmZjJlMDI4YTExZjJmZDIgbGVnYWN5LXRydW5rCis5NjQwIDhmYjVmZDA3NWIyYWIxMzIwMzg0YmNmYWIwM2Y1MGRlNzcyNjg4ZTkgbGVnYWN5LXRydW5rCis5NjQxIGU1NjQ2ZWVjZWFlODg3OWZjMGEzZGM1M2RkYzc3MDk1MzU4MDNiYjQgbGVnYWN5LXRydW5rCis5NjQyIGMzYjViMWMyNWM1MWM3ZjE2Y2M3YThiYTAzZWM2YmY3NWY3NzJlZDMgbGVnYWN5LXRydW5rCis5NjQzIDBkNWE5YTBlN2Q2NGExMmUwMmJlNzA3MzU3MjU4MmQzZGQyYjY2M2IgbGVnYWN5LXRydW5rCis5NjQ0IDY2Y2IwMDMxN2FjZWJiNmY1ODAzMTlhMGYzZmY1ODBiM2RmNjFkN2UgbGVnYWN5LXRydW5rCis5NjQ1IGU1OGM3YjUwZTliOWM2Yjk2ZDg5MzNjNWYzZDI3NmI1NjkyNThlZDAgbGVnYWN5LXRydW5rCis5NjQ2IDIxMjU5N2FmODI5YmJjYWJjMTc5NzdkYzU4M2U4ZDJiODQ1MWU1MzIgbGVnYWN5LXRydW5rCis5NjQ3IDM3M2Q3ODExODExM2I4Y2Y0Zjg5MDg2NjJlMzAzZGI1NzdmMmRjMDYgbGVnYWN5LXRydW5rCis5NjQ4IGM1ZTc2N2UyMmJkMWMzZTY1ZDM2YjYyM2ZhODllNDkxY2Q1ODhhZWUgbGVnYWN5LXRydW5rCis5NjQ5IGNlNDc2NmZiM2Y1NjNkMTc2MzhjOTFhMWM0MjRiMjU1NmJiNjY1OTIgbGVnYWN5LXRydW5rCis5NjUwIGI1YjBjMzI0Y2U1OTg3OGZjYWVlYWExNTNlZmExZDA4YjdjMzdiMDAgbGVnYWN5LXRydW5rCis5NjUxIDBhNGUyOWEyODY1NWU0MDQzMGVjZjI0YTgzOWE3MThkZDJmN2E3MmYgbGVnYWN5LXRydW5rCis5NjUyIGRjOWJiNDdiMzU1MjhkN2RmMjY3Y2NhM2Q2MDFmNjEzMDQzY2Y0NTEgbGVnYWN5LXRydW5rCis5NjUzIGEyOGJmNjJhYzMzNWI1ZjMwNmEzZWU1N2VjOTJkYTIxN2Y4YTYxYjIgbGVnYWN5LXRydW5rCis5NjU0IDBiZDE4NWMyZTU4MTAzZTFlODBkMDkzZmMzODhlMjJkNzM0YWQ3YTMgbGVnYWN5LXRydW5rCis5NjU1IDdjMDA0ZmMxMDk4NzM3YWNmMDE1OTQyZTg3YmM2NjYzYWZmZDgxNGUgbGVnYWN5LXRydW5rCis5NjU2IDQwOTg3Yjg2YTFjNzRmYjg1Yzk2ZmQ3OTcyZTM0NmEwN2FjZTU1OTAgbGVnYWN5LXRydW5rCis5NjU3IDdkNjFmYTliNTdhOGM1NDJhOTU2YWZhYjJhMWIzMGMzYjM5Y2QyYzIgbGVnYWN5LXRydW5rCis5NjU4IDNhOTYwYjJlMjY2NzdjMWJjNWJlNGI0YTUxODliMGRkMTZlZDllZDIgbGVnYWN5LXRydW5rCis5NjU5IDRmMTBkMjMzZjFkYzZkM2QwYjQxNmJmOWFiYzY3YTE0NjczMTZkNzYgbGVnYWN5LXRydW5rCis5NjYwIDU5MzYyZWE3ZTBmOGI0MTA2NGQxOTUwMDlmYmViOWZkMjY3MDc1NjkgbGVnYWN5LXRydW5rCis5NjYxIGRlNWNiNzg5ZTlmMGYyZjg3Yjk5MWE3YmQ4YWU5NzU3Yzk4NjljYjUgbGVnYWN5LXRydW5rCis5NjYyIDZmNzgxOTViZjhmNjg3ZjcwZWM1ODY4YTlkZjYyMTFkYTlkM2E2MjEgbGVnYWN5LXRydW5rCis5NjYzIGE1OTZiYmU3MjU3OWQ4YjVlMzRjZjQxMzE3OWYzNmY5ZmY1ZDc4NDkgbGVnYWN5LXRydW5rCis5NjY0IDZlNWViODQ1MjQ2YzA5YmQ5YjQ1NDNkZjBkNjE1NzY0ZWFjZGE3NWMgbGVnYWN5LXRydW5rCis5NjY1IDJhOWJhNTlhYmMzODJiNzlmMTgyOGQ4NDM1MzI2NWEwZjA1NTRhY2EgbGVnYWN5LXRydW5rCis5NjY2IGVlNGExYTMwZDdjZTkyN2E3OTZhNDYzMWZhYjViYjM3NDdlNGUzY2EgbGVnYWN5LXRydW5rCis5NjY3IGYzY2M4ZDUzYWM4MDNkZjJhYTMwZDFiMWQzNzY3YjA4NTdmZGM4YzQgbGVnYWN5LXRydW5rCis5NjY4IDFmOWQ5NDJmMTU2Y2M5MzJmZGVmOTEzMzQ1NWIyZjgwNGQwZDFmYzAgbGVnYWN5LXRydW5rCis5NjY5IDcwNTRiZTVhZDdmNjc0MWFmOWJiMDY1NDdmMzk5ZmRjNjlmNGRhNDEgbGVnYWN5LXRydW5rCis5NjcwIGFmOThiNDIxNDI0Y2MzOWI4YzZhOGI3NGFjNmY2ZTk0ZGU0NmQ5ZDEgbGVnYWN5LXRydW5rCis5NjcxIGUyNzk1NzJlMmRhMjU1MTY2NzE4MmVkYTI2YTdmZTUwNzNmODU2YjIgbGVnYWN5LXRydW5rCis5NjcyIGIwMDlhNGMyNDE4OGQ1MjgzZmJlYjAyYzMzNTM2YWQ1ZjhjM2FkYzUgbGVnYWN5LXRydW5rCis5NjczIGMxMjNhNWE1OWNkZTIxZDBjMTI4YWEzZGEyZWRlOWE0MDY2ZmEyN2YgbGVnYWN5LXRydW5rCis5Njc0IDMwOWZmZmU3NjhhNjI0MjE4NTUyOTAwNTA3ZDZkN2U0NTZjZjcxNjMgbGVnYWN5LXRydW5rCis5Njc1IDI2ZDA3NzM1YmE0YTViMjY3YWJmYzg3MGU2M2RmNjg5OWZjNTFhYWEgbGVnYWN5LXRydW5rCis5Njc2IDVjZDJmNjk5YmY2OTE2NmFkN2E1ZDU5ZjFlYTY1ZmI1MTliYzdkNjggbGVnYWN5LXRydW5rCis5Njc3IGRiMDA3YTJjYTdiNjM2NzczNTIxYjViZWUzZGQ3MjkyZTU0YTllZDQgbGVnYWN5LXRydW5rCis5Njc4IDk4YTlkYTUyMGYxZDhjMTlhYjViZDRlMjAzMzI3ZjRlOGNjYzUyMTMgbGVnYWN5LXRydW5rCis5Njc5IDcyMGU5MTgzOTYxZWU4YWRkNzQwMTMyM2I5YzVjMDE1M2RkZjU0NDkgbGVnYWN5LXRydW5rCis5NjgwIGZlZDNkMjAwZmI1NjVkMmFjZTgwMWJjNjExMzZhOGIzN2ZjYmM4MWUgbGVnYWN5LXRydW5rCis5NjgxIDhjMTI5YTU2Nzg2Nzc5NTJhMzAyOGM5YTBjZDBiOGE0YjlkOWJlN2UgbGVnYWN5LXRydW5rCis5NjgyIDQ4YWI2Njg3NGIxMTkxY2RkNDQzYTBlMzEzMGYwMzk5YWQwOWU5MjIgbGVnYWN5LXRydW5rCis5NjgzIDA5ZmZhYjI3M2VlYjU2NWE3NjE5NTk0ZDkwNTk2ODUyZmY0ZDhlMWUgbGVnYWN5LXRydW5rCis5Njg0IDNmMjU1YWVkZjYyMWU5NWUyNjcyOWYzZmJkMDkwMjRkYjc0YTI0YTEgbGVnYWN5LXRydW5rCis5Njg1IDA2ZGIxMGM3NmRjOTUyZTNmYTAxOTRkODNiNDBjNDczOTc2YmNkYjkgbGVnYWN5LXRydW5rCis5Njg2IGNlMjcxZTVmOWJjNWFjODk3YzBiOWE0ZDgyYzNkYTcwZTU4NjE2YjUgbGVnYWN5LXRydW5rCis5Njg3IGM5ZmUzNWE4Mjk4YWQ4NTk2YTYzMTFhNzBkYTI5ZGRlYjY3YmIzM2EgbGVnYWN5LXRydW5rCis5Njg4IGJjY2RlY2E4MTY2OWNlM2JkMzAxNGEzMDMxMGNmNzFmNTJmYTUyMGUgbGVnYWN5LXRydW5rCis5Njg5IGM3NjQyMTdhZTZlYjkyZDMxZDkwMDVjZjdlYjI5YzhhYzVjMzE3MTQgbGVnYWN5LXRydW5rCis5NjkwIGI5YmJmYTE2OTkyMGU0NTViMTI3MTNkODMyYTg4N2Q5ZjkyMWIzMDAgbGVnYWN5LXRydW5rCis5NjkxIGZmNTI0YjY5YjY2NGEzZmM2NTFmOWZlOTM3ZTg4NzQ5OTBiNWNhYjQgbGVnYWN5LXRydW5rCis5NjkyIDYyMjJkMzM3MWZiODBlYjg0MGVlNTJkODEyMzZjMWYzYjg5Njk3OWEgbGVnYWN5LXRydW5rCis5NjkzIDVhN2YyNjhhMDc4MWE5NGFkYzVjOWQ3NTM1ZDhiMTllZThjNDZjZTkgbGVnYWN5LXRydW5rCis5Njk0IDE2ZWNmMTU1NGE4MzU3OTM4MGU3Mzc2ZWVlYmYxMWZkMzE5NWYxMmQgbGVnYWN5LXRydW5rCis5Njk1IGJjMDA4NjQwNGE5YTU1MjkyMWJjMzJhYTExODJiZWUzNWJmMGNiODkgbGVnYWN5LXRydW5rCis5Njk2IDkwYTM1ZjFiOTAwODVmYTE5ZjM0MDg0NGUxMDUyNmE2ZmFjMjM5MDQgbGVnYWN5LXRydW5rCis5Njk3IDY0MGI5N2QxMDVkZjcxMTUyZjk3MzJhZDUzM2RmYmQzNTNlZDMzNWYgbGVnYWN5LXRydW5rCis5Njk4IGQwY2E4MTVjODA3MjU0ODEzZTIzYzg4YzlkY2QwMmZjMWFiMWM5ODcgbGVnYWN5LXRydW5rCis5Njk5IDk1YzEwMTk2NDQxNDk4NTczMGE4OTFmZDMwNjk5NmJjYjBiNGE2MTkgbGVnYWN5LXRydW5rCis5NzAwIDEwZmRmMTZmNGRlOWMxZjk0ZjZiODUyMzhiYzY0MGIwYzM1NDE1OTUgbGVnYWN5LXRydW5rCis5NzAxIDlkZGUwN2E1OTNkODNmYzIzMmM3MGRiMDEyOTEzMzMwMmMyN2E2YjUgbGVnYWN5LXRydW5rCis5NzAyIGQzM2Q0NTYyMmU2NzExZDhiMWM5NzljZDUwMGZhYTM3MjcwNTA4ZGQgbGVnYWN5LXRydW5rCis5NzAzIDExZjM0YmUwYmUxMWZmNDI3N2Q1MGEyYTQ3OWY2OWQ0NzlhMDRhM2MgbGVnYWN5LXRydW5rCis5NzA0IDQ3ODAyZTJmNWJlZGI0ZjIyYmJjNTRkMzE2ZjgxMThjZjAzODFiZDAgbGVnYWN5LXRydW5rCis5NzA1IDA0NWZmYTRjNTZmNzg1NmEyMzRhOTU5NGRkZGQ3NmU1MDI2YjFjZmMgbGVnYWN5LXRydW5rCis5NzA2IGJjNjQ4MmY3ZTc4ZmEzNDY2YjhiOTQxZWM5MWI5N2FkOWRkMGFlNDAgbGVnYWN5LXRydW5rCis5NzA3IGJjMjhhMGVhNjY0MGY3N2I0YmRiNDA4NGYyNjA2MGY0OWViYTQ4OGEgbGVnYWN5LXRydW5rCis5NzA4IDM3NTcyM2E3NTU5YzcxNWUwOTRiZWJjMjUzZjE1YmYwMWU4ODUxMmYgbGVnYWN5LXRydW5rCis5NzA5IDE3N2FkNzNiZjFhOTI1ZjAwOTMzNWQ3ZDdmZGUxYThkOTIyNTBiYjQgbGVnYWN5LXRydW5rCis5NzEwIDc0YzU3Mjg4YTAyYjk5NjdiYTY0OGY0Y2I1ZmJlMzNiMzNkNGMyOTkgbGVnYWN5LXRydW5rCis5NzExIDA4YzViYmZhZTUyYzBkZmUwNjNlZmU4MDIzMWU3MzZiMDA2NjY2OTIgbGVnYWN5LXRydW5rCis5NzEyIDIzYzUwOWFhM2YwZDk0NzNjZTUyYTE1YTc2MDAyNDcwNmM3NzY3NzYgbGVnYWN5LXRydW5rCis5NzEzIGRlYmU4ZTA4MTI2MDg1ZjQwMGIzZGE2M2IwZDIzZDc2NDI0ZGNlNmQgbGVnYWN5LXRydW5rCis5NzE0IGZkN2E1OTkzZDA2ZGFhMjg0OGZjMTBjMTdiMmRhNzE1ODFiNDhiMTcgbGVnYWN5LXRydW5rCis5NzE1IGNkYjRhODEzNzlhZDdlNTk3M2YxNWJlZTU5YjE2ZjU2ZTQyNjQwYmEgbGVnYWN5LXRydW5rCis5NzE2IGFhNTRkN2MzZGFmOTAxNjdhOTVmYTZiZGI0M2ZmNzNkODczYmE0N2QgbGVnYWN5LXRydW5rCis5NzE3IDMwNmY3MzdiYWI1NzZhODM4OTMyYjU5ODRhNDY2ZGNmNzY1ZDU2ZmMgbGVnYWN5LXRydW5rCis5NzE4IDJiODIyMzFhOTdjYzZhYmY3NjVkODNhNGEyMDk2ZGFiMTEzZjQxMTcgbGVnYWN5LXRydW5rCis5NzE5IGI1OTg1NTQyYmFlMWU2OWY2NTNhNDc3NzAxZmI2N2RhMGYxYmVlODYgbGVnYWN5LXRydW5rCis5NzIwIGU3NTAwNjA2OTM2N2ZjNmYxMTUzMGQ2ZWNiNWRkZTlkYTVmZWRkODAgbGVnYWN5LXRydW5rCis5NzIxIDVmNWI5ZTg3MTg4NmNkOGI5ZWM0MTUxOWU2ZTI1MzA0Y2UxNTk1NDkgbGVnYWN5LXRydW5rCis5NzIyIDBiNTNjMDM5M2M4ODI2M2Q3ZTQxYjhmMTlhM2JiMWRiMmZkNGI5NzkgbGVnYWN5LXRydW5rCis5NzIzIGE3MTE2ODY0OWRjNTFlZjgzYjM1NWYyNmQ5OTI3ZWI4N2Q0YzNkZjggbGVnYWN5LXRydW5rCis5NzI0IDE5M2Q3MDRjYmNjODUxYWU3MzhjMWZiOGExNWE0NGNjMmMwY2VjZTUgbGVnYWN5LXRydW5rCis5NzI1IDEyNzJiNThlODRhZWI2YzJkZjdhMzljMGYyN2JkMDBiYWZhZjk0NjQgbGVnYWN5LXRydW5rCis5NzI2IDI4NzYyM2NjZTI4OTQ1M2UyNmNjODliZGM5ZWE5YWNiNDM2OTc1MDMgbGVnYWN5LXRydW5rCis5NzI3IGYwYmIzYmNmMzk3YjI1NDk2YzBkN2JlNGM5ZjE4MGE0ZGM0YTMxYzggbGVnYWN5LXRydW5rCis5NzI4IGM2OTg2OTBhMjdiMjU5MTM0MDA1MWMwY2MzYzBiODg3NjI2NTk0MGYgbGVnYWN5LXRydW5rCis5NzI5IDhhMDgwMjVlZjkzZDhmOTU0MzY2OWZmN2UzNjBjY2ExOTg5MjgxZGMgbGVnYWN5LXRydW5rCis5NzMwIGQzZmQyMTgyY2ZiOGVkMDJkNDI0MDE2YjRlNmI4Yzk5ZDFiMzYxNzAgbGVnYWN5LXRydW5rCis5NzMxIDRlNzQwMmM4ZTQ2MGJmYmY4YTNiMzhiMTFmNzQ3ZTJlZDI5ZjEwYjggbGVnYWN5LXRydW5rCis5NzMyIDgxMjYxNWU1NDU1MGU2OWFkYWQ3MGMxZjM4NjliMmRiZDk4ODhiM2MgbGVnYWN5LXRydW5rCis5NzMzIGNhNzhiMDk1ZWNmMDE0NjNlM2U2OTU3NWNhYjkxZDhhYzEyZjhhY2YgbGVnYWN5LXRydW5rCis5NzM0IDhjNzQ5ZGZjNDliZmEzOGVkNmRmMDJiNjRjYjg3ZTRkYWYyYWI2Y2UgbGVnYWN5LXRydW5rCis5NzM1IDhiMGQ2YjY0YTBlYTM5Y2UzM2U5NmVkOTVjYjI2YmMwYTVhYTlmNzQgbGVnYWN5LXRydW5rCis5NzM2IDYxNGQ4YTkwODRlYWQ0NzU4MDBkMWYzZDlkOWJmNDQ3NzNlNzBiYmMgbGVnYWN5LXRydW5rCis5NzM3IDdjZGFhNDQ5NTUzMDc5M2JhZWNlNzBlM2U3YjM2Zjc5MzdiMzRkZDQgbGVnYWN5LXRydW5rCis5NzM4IGE3ZTk1MjRhMmE1MmM2NGFhMjg2M2UwNjUxZTNlOGRiNzY1ZWJmNjAgbGVnYWN5LXRydW5rCis5NzM5IGJiZjM1MDdlZjNmZWYyODQwYTFkNTI0ZTBhOTZiNDIzZjkwMjE0MTMgbGVnYWN5LXRydW5rCis5NzQwIGMwOTkwNzEwNDA5MmE1OTI1MGY3YTdmNWM3MmFhYmI5MGM0ZDIwZjUgbGVnYWN5LXRydW5rCis5NzQxIDQxYTkyOGNiY2M1ZWViOGUwYTZiODg3ODM3MTczMDI2ZDAzZDA2YmYgbGVnYWN5LXRydW5rCis5NzQyIGI4ZDQ4NDEyNWM5MmRkNjI1MGU0OGZhNzM5OGU5YzNmYjAxMTQ4YjEgbGVnYWN5LXRydW5rCis5NzQzIGMwMDJmZmQxZmJiZmU3YmE0Y2FlZmMwNTVkNGZhMDI3NGFhYzA0Y2IgbGVnYWN5LXRydW5rCis5NzQ0IDgzYzBlOWRkNDIyMWY4NmFlNzNiNDZkMjI4N2FjM2FiMmJlYjc0ZGEgbGVnYWN5LXRydW5rCis5NzQ1IGNhMTRmZGI5NTVlZjgyN2JiNDdjNjhmNTBmZTk0MTlhZjVkOTcxYTUgbGVnYWN5LXRydW5rCis5NzQ2IGEyZjRjOTQ0Y2I4NzIxYmZjNjZlYjJmOWQ2N2M1YmIzODc5OWVlY2MgbGVnYWN5LXRydW5rCis5NzQ3IDY4MmQzZTViMjY3ZjQ3MGIzYzEwMTRiMzAyNTM1MmM0ZDhiM2RlZDEgbGVnYWN5LXRydW5rCis5NzQ4IGY1NTk2OWMxYzNkNTQxOTY5ODJkOWNhMmZmZWJjNDcxZjM1N2U5ZDIgbGVnYWN5LXRydW5rCis5NzQ5IDAwNjFkMzkxNmFlNGIxNWU5ZTA2MTlhZjczNDgxNTVlZTJlZGY4NzYgbGVnYWN5LXRydW5rCis5NzUwIGM4MTdmODZjZTdkYjY3MTkzYTc0NzRjNDJhNDhjNWRiZDRiNzRkYWQgbGVnYWN5LXRydW5rCis5NzUxIDE1YmE2OGMzM2VkMWNlZGEzMDMyNDIwM2ZhZTY5ZjVlMWM3YjU5OTkgbGVnYWN5LXRydW5rCis5NzUyIGY1ZWExYjMwY2IzZjc0OWU1Yjk4ZDMwMDBkMzNkNGI5NGFjZjljMTUgbGVnYWN5LXRydW5rCis5NzUzIDAwY2Q5ZmU0ZjZmMmIwODlkYjViNDVkYTE0ZmQ5MTNmM2YxYmI4YzIgbGVnYWN5LXRydW5rCis5NzU0IDM5ZGU0OTQzNGRmNDI2MTFjNDdiNjlhZjY4OTI0MzEyNjZmNDgzZGQgbGVnYWN5LXRydW5rCis5NzU1IGJmNGU3OTBiZDYxYTRiOWIxMzk1NTgxODUxNDcwOTNjNTExYWExNzcgbGVnYWN5LXRydW5rCis5NzU2IDU5ZDI3NjFiYTFjZmNhYTBjMmYwNDhhNDAxYWUzMTFhNzEzYjhkNzggbGVnYWN5LXRydW5rCis5NzU3IDUyZmJiNzMxMjEwMzQ1YjAxMzU0ZTY0MGI0NDcwNWNhMmE3MWU3ODMgbGVnYWN5LXRydW5rCis5NzU4IGYyMTRlZTg4MzhkZTY4MjZmMzYwYzQxZDcwYjg5MDNmNmFmMDFjNjEgbGVnYWN5LXRydW5rCis5NzU5IDFmZDc4NzM4NzlhZjgyYzliOTM4YjU1ZGFmM2JjMWQ3ZWMwYjEwZGUgbGVnYWN5LXRydW5rCis5NzYwIDZkMGM0ODViYTVlNDE5M2MyNmIzNDQzMzViMmY2Mjk5YWUxYzMyODQgbGVnYWN5LXRydW5rCis5NzYxIDNhM2VlMDc1ZGZiNjk4MWRjNjk0NWYxMGU5OTI1NWQ2MzZlNTI2YzAgbGVnYWN5LXRydW5rCis5NzYyIDJmMGNlNGZiODEwYmEzMDFiZGUyZDFmNWU2YThiZjJjM2FmYmM1YzUgbGVnYWN5LXRydW5rCis5NzYzIGVmMjY5YWI3NzBiY2M1YmU2ZWIyYTZjNDc3NjE0ZjU4MDg1Y2JmOTQgbGVnYWN5LXRydW5rCis5NzY0IDFkNTExNzljZjdjN2ZlNDU0OTYyNGU4OTZiYmI4MTk2YzBkZDhjODcgbGVnYWN5LXRydW5rCis5NzY1IGFmMmJjNWY0NTkxOGE3MDEyMDg4YmU1NTdkYTFjOTJkMGI0MDlkYjcgbGVnYWN5LXRydW5rCis5NzY2IDQxNDhlNGJjOGIyODVmOWIxMGQ5YzU0NDU5Y2IxZWNiZTYwMDhlM2MgbGVnYWN5LXRydW5rCis5NzY3IDZmZWYwMzBhOTVkNDljNjU5NDJlMThjY2U3OTA1ZTgyOTZkZDc1MTkgbGVnYWN5LXRydW5rCis5NzY4IDcyZDUzMWQ1NDU3MjliMDAzNjg5MDI1OWZmNjA3MTVhMWJmMGZmMmEgbGVnYWN5LXRydW5rCis5NzY5IGI3Zjg0ZDE3OWU1MWEwM2Q1ZjViMWQ2MjI5ZjRmMTc4ZTJhMmY1YjUgbGVnYWN5LXRydW5rCis5NzcwIDZhZDIzNGFkOGRlNWM2ZDU5ZjZmNzA1MzRkOGNiMGNhNDc2NGEyODkgbGVnYWN5LXRydW5rCis5NzcxIDBkYmVjOThhY2ZjOTY3NDY0OWE3YTVjZjE2YWQxZmVlOGVhMjM1OTcgbGVnYWN5LXRydW5rCis5NzcyIDhlNjRjNWQ1NTQ4YTJhNDBiNDU1Y2FhMTc1NDliMjZhMWMyY2Q5ZGUgbGVnYWN5LXRydW5rCis5NzczIDI4NTQ0OTI2OGMzN2YwOGZiMGI4YzE5ZWEwNGRmNDYwMmVmYjg3ZGIgbGVnYWN5LXRydW5rCis5Nzc0IGIwMjQ5OTBkNjFlYzhlMjNkNmRhODY1YzU5MzY1ZjM2MTU3ZGVmMWEgbGVnYWN5LXRydW5rCis5Nzc1IGZiMGM1YjMwNzQ3NmRlYWIyMWY4NTkyODQ2NDM2OWIwZGZjOGQyYWUgbGVnYWN5LXRydW5rCis5Nzc2IDM3MDM0OTUzMTVlOWE2NDMzMjkxOTRlMWJiNTM0MWZhMDIxOWMyMWEgbGVnYWN5LXRydW5rCis5Nzc3IDA4ZjliOTAxNjY5YmExY2EyY2ZmZDQ2MTEwZWFlY2Y4NTQyYWZiNDMgbGVnYWN5LXRydW5rCis5Nzc4IDQ0MWFlNGY0Y2ZjZjkxNWYzY2E3NzA4ZjI5M2RhZjI0ZDgxMGVhMWYgbGVnYWN5LXRydW5rCis5Nzc5IDRmODQyMDJjMzc3YWNkMWU4NThhNGIyYjQ4MzJmOWJhNzMzY2Y4NzIgbGVnYWN5LXRydW5rCis5NzgwIDY0MGYyZWY0ZGEyMTI0ZTUzYmNjYmRjYjk3MmFmYWE2Nzg2MTA1ODYgbGVnYWN5LXRydW5rCis5NzgxIDY1OGI3NDJlNDM1MDM1Y2M2ODllMWZiODYwODA2ODczOTJlODljODIgbGVnYWN5LXRydW5rCis5NzgyIDI2YThlOWU4Y2I4NDExZDY4YTEzN2E4YTQzOWQ2YzU2ODMwYTc1ZTAgbGVnYWN5LXRydW5rCis5NzgzIDA2N2U0ODEzYzZkNjdhMDgwY2RhMTdhZjc5MWE1NTI2OGVjMWZlMjcgbGVnYWN5LXRydW5rCis5Nzg0IGY4OWU5Y2RkYzA5NjEzMDU1N2U2ZDllN2Y0MmMwZjUxZjc5ZDczMWEgbGVnYWN5LXRydW5rCis5Nzg1IGM5OGZlZjkyMmQ1MTQ2OGNmMjA0OTUwODBkYTBjZDg1M2FhMmYyYmIgbGVnYWN5LXRydW5rCis5Nzg2IDgwOTZmZWM3MjJiYTc5NmFmMzdhMjk3Y2VmMTQ2Mzk2ZmYzNzg0YzAgbGVnYWN5LXRydW5rCis5Nzg3IGQ3MjY2MzcyZGQzNzFjOWQxYTcyMzhkNjEzYzJiOTRmNmYzZWI4ZGEgbGVnYWN5LXRydW5rCis5Nzg4IDYwOTVhNDcyZjU3NDVjM2FjYTc0MTk1OTViNzE5NjUzNWI2MzMxOTQgbGVnYWN5LXRydW5rCis5Nzg5IGRmNzY0ZTQyYjI1OGY1NzdlZDUzYWViMWNmYTYzM2IxNWFiZmVlMjQgbGVnYWN5LXRydW5rCis5NzkwIDQ4ZGYyMDgwZDdkNDgyOWMxMjk4YThjMWFkYTMxNjBjZTIwMDllZGMgbGVnYWN5LXRydW5rCis5NzkxIDVhZTg3YTdmOWEzMjNmZDY1MmIyOWJkYjkxNDExMWEzZDY4MTJhNGIgbGVnYWN5LXRydW5rCis5NzkyIGQyM2JiOTY5ZTYzYTAzNzNjNmZkMmNiZDQzZWEwZmMzY2E5NzY0ZWQgbGVnYWN5LXRydW5rCis5NzkzIDNhNTVmYmI5OWYyMDQ3N2Q0MGI0ZTdiYmQzNTA2MWViOTFkMDI0OWEgbGVnYWN5LXRydW5rCis5Nzk0IGY2YzZkNGQ5N2RjNjUxYTUzMTBmNzQzMzE1NTdiMjBkMWU4ZTBmMTUgbGVnYWN5LXRydW5rCis5Nzk1IDkyNzg0ODI0ODAwYzNkZDM3M2QxNGU1OTY1ZTQ1MjdhN2M1ZDUxZjggbGVnYWN5LXRydW5rCis5Nzk2IDgzMDAwOWI1NzNlYTA5NGI3NGZiNDRkMDMyZDJmMTc2MjJkMDI2NzYgbGVnYWN5LXRydW5rCis5Nzk3IDA5ODkyYmY2YTUwZGZmMTU3NzI0NDBjZWQ5ODM5ODM1ODRjODU4NzkgbGVnYWN5LXRydW5rCis5Nzk4IDE5MjhmMDViYTQwMGNhMmViNjMzZTYzYzM0Zjg2YzNlNTc3MWI3ODMgbGVnYWN5LXRydW5rCis5Nzk5IDk4ZWZkNWQ5MWZjYTRmZmRkNmE1ZTgwNzNmNzA4NmIzMWUyZWU5ZWIgbGVnYWN5LXRydW5rCis5ODAwIDcyNGY4MDcyNjA1NTBkZTgyYWVhNjA0ZTVhY2NkNTdmMmQ4MmJhZGEgbGVnYWN5LXRydW5rCis5ODAxIDQ3ZWNmMDJhYWY5N2IxNGUxYzFjODYxYjM3NDYyZmVhYTc3ZmYxYjYgbGVnYWN5LXRydW5rCis5ODAyIDU1MTI1YjExNDRmYTNhNmE1ZTE2OTFhMjgzZDViODFhZDkzNGViYzkgbGVnYWN5LXRydW5rCis5ODAzIDZlMDBmYjcyM2Y2OWRiZGQ2M2UyZTg2NzQ1M2QxNTkyYTFlZmY0NjcgbGVnYWN5LXRydW5rCis5ODA0IGZlYzhlMDg0YjA3NGY1NzAyN2FlM2UzNjNmNzUzODRjZTc0YzE1N2EgbGVnYWN5LXRydW5rCis5ODA1IDQ1YjY2ZTlhYjVlZmEwMDgxYmUzOTVkYjE5MTJlNTVhNGJjYzhkNGQgbGVnYWN5LXRydW5rCis5ODA2IGMyYTA4Njk4NTJlYjg0NWI5OGE5ZmQ2NzUwMWEyODI0NjVmNDI1YjMgbGVnYWN5LXRydW5rCis5ODA3IGU0Yzc0ZjdmM2U0NjU5NGE0ZGI4ZTE4NDgzNjQ4MmRjNTY4Y2Q2YWIgbGVnYWN5LXRydW5rCis5ODA4IDlhZTIxNWNhMjBkYjRiODc3NDc4MTQ0ZWQ4ODhmMjczMzFlNmY4ZTAgbGVnYWN5LXRydW5rCis5ODA5IDgzYTMwYTM1ODNkM2YzNmEzOTRiN2RiYmI2ZjJiYTRhY2YyNDZlYzYgbGVnYWN5LXRydW5rCis5ODEwIDI1MjUzOTg3MTg3M2MyMWFhMDU5NTcxZjIxMGJhYWM5MDk2MTEwYTQgbGVnYWN5LXRydW5rCis5ODExIDZlOTY4OGNlN2M1NzYxMDI3OWZjOWQwZWQ4MmZiN2YzYzk2ZDRhZTQgbGVnYWN5LXRydW5rCis5ODEyIDM5NjViNjlkNTExNmU1OTkwZmM0NjNmYjA2Y2MwZmUzODJmNmNlYjkgbGVnYWN5LXRydW5rCis5ODEzIGMzN2EyOGEzYmI4NWIyNjdhODQ1NDNiMGRhMDRiYzdlNmE4NTZhMmQgbGVnYWN5LXRydW5rCis5ODE0IGUxNDhjZTE4YzNjZTRiM2M5ZGNlNDE1YzcxMzQ1Nzc1ZWE5MWI5ZTkgbGVnYWN5LXRydW5rCis5ODE1IDEyOTM5YzhiNGUzMGE1NDRkZDllZjVjNzc5OTY1NmFhZmMzMTNhNmUgbGVnYWN5LXRydW5rCis5ODE2IGY5MDQ4NjAwOTA1ZThjZDQzNDhjNTNlMWFiZTNjOTk0YmRkNDNjNDQgbGVnYWN5LXRydW5rCis5ODE3IGU4YjhiYTE2OWI2ZGQwZTZhNTM5MWY0MTNjNWYzY2I1NDc3OWIwYjEgbGVnYWN5LXRydW5rCis5ODE4IDZkY2NhZTc1YjI2ZjZiMmEwYzYzNWMxZjY5YTI4NGY2YWM1MTQ3YTYgbGVnYWN5LXRydW5rCis5ODE5IDAwNjlmM2ViYTlhMjUwMmM5ZmMxNmNhZTRhNDBhZGZjZjc0YzI0MDkgbGVnYWN5LXRydW5rCis5ODIwIDlmNzRmOTIyM2I0MzU1NzgwNzU0NDJiMDNjNTk5OGQxZTRhNmFjYzYgbGVnYWN5LXRydW5rCis5ODIxIDRmZmNiY2M1ZThmZTM5MzMzNjlhMjM2ZDdjMGIyNTA5ZWM1Yjg1MzkgbGVnYWN5LXRydW5rCis5ODIyIGJiYTJiMjA1ZjhlZGQ0OWZmNGFkZTZkNzNiNmQwMzRjOTg0Y2JmNzggbGVnYWN5LXRydW5rCis5ODIzIDA4MDk2OWRiZmM3YzUxODkwNWYwNzBjMGQyY2JlNjk3YjgzZDk3MWIgbGVnYWN5LXRydW5rCis5ODI0IDVhOTI1NmI4YzMzODJhM2ViODgzYmU5YTI4NGRlMzU1ZTI2MTA4NGQgbGVnYWN5LXRydW5rCis5ODI1IGQ3NmE0ZWZhMWY1MWRmOTQ1MDY0Mzg3YjlmZTg2MWE1ZWNhY2YzMTkgbGVnYWN5LXRydW5rCis5ODI2IDdiYTljZjRlMGM0MDQwNGRjYTMyMjMxODBhZjI5YTEyZDQxMjE5ZjAgbGVnYWN5LXRydW5rCis5ODI3IDJiZDVmYmQ2MDg3MDk5YTg1NGNjNDliYTk5M2JkYmI3YWM3YTY4NWIgbGVnYWN5LXRydW5rCis5ODI4IDRmZjVjMTQ5OGRjOGRiOWM2ZjhmZDgxMGQ2YTFiZmM5OTA1YWRiNWUgbGVnYWN5LXRydW5rCis5ODI5IDFiYWNhNWQyYmE1N2E0ZTViMGNiMmM2YTc5YThhOGQ4MjY2YWExOTAgbGVnYWN5LXRydW5rCis5ODMwIDBkMzFjN2Q5Njk3ZDdjNWVjNzliN2E2M2UwNDBlZWE2ODI2NzBkMjAgbGVnYWN5LXRydW5rCis5ODMxIGE0ZDdiYmZmOTVhNGI1ZjU2NDVlMWQ1OGQ4MjEzYjNjNTk3NWI2ZjIgbGVnYWN5LXRydW5rCis5ODMyIGU0MzY3ZDIwNmE1NWY3NjMwMmIzZmIwNGEzYTJkOTFlODU4MTQzNTMgbGVnYWN5LXRydW5rCis5ODMzIGIyODVmYmMyNjQ2YTQ5ODZhNWM1ZWE5M2UxZjlkMTVkODAzY2VhMDEgbGVnYWN5LXRydW5rCis5ODM0IGM2MzI1MDI5ZjdkYzg4YzZkZmViZTJiY2E0MGM1OTMxMjUzNDM2MzMgbGVnYWN5LXRydW5rCis5ODM1IDNlMjdmOWZjNzVhMjkwZjUxZmEyMjc1Y2MxZmY0MGZlOWEwOGZmYjEgbGVnYWN5LXRydW5rCis5ODM2IDE0MjFhY2VhZTM0NjUwNDVhNTc4N2RlNzUxMTE3OGY3YWI3OGQ1ZDQgbGVnYWN5LXRydW5rCis5ODM3IGQ3MDA4NmIwOGEwZmFmMDFhNjg5Yzk4YzExNjJiOTAxZTFmMGI3MDAgbGVnYWN5LXRydW5rCis5ODM4IDJhMDcyNThiMWY0ZTA4NmNmN2IzMTliNjExNDU1ZDA0ZmRmMGQ3OWIgbGVnYWN5LXRydW5rCis5ODM5IDYyMTQ0MGJiOThiOWMyNjA4OGM5OGMxMzEzNTM5ZDdlYjgzNWUxMzMgbGVnYWN5LXRydW5rCis5ODQwIDg1ZmYyMDQ2ZTM3ZjgxY2Q4NGUwMDEwYWVhMDkxODU5YTJjYzM0OTIgbGVnYWN5LXRydW5rCis5ODQxIGY0YTQ3MjNiOTU1MzJhYjkwNGFmNjYwMzg0YmM3MDQ4MThlZjI4MjIgbGVnYWN5LXRydW5rCis5ODQyIGYxYzg4ZDJkMTI1YmZkNDMwNmRkMDY1OGNmZmI4OTlkNDUwMzQ5NmIgbGVnYWN5LXRydW5rCis5ODQzIDE4N2I4OTY3NWRkYWU0MGM0MDUwNmI4NjczNTQ5ZWI3MTk0OWEzYTcgbGVnYWN5LXRydW5rCis5ODQ0IDcxN2MzZGFjYTA4ZTk1MzkzNzg4OTk4MmQ5MmMxNWFiNWRmNjFmYjcgbGVnYWN5LXRydW5rCis5ODQ1IDBjNzljYWZlYzRiYzU1MDhjNmU2ZTMwNzIxZDdiMjI5NGI1NjYwNjQgbGVnYWN5LXRydW5rCis5ODQ2IDIxNjU3YmIwYmUzNWI0YzcxZGNjODM0NDlmMmYzNmQyM2EyZWJjMGIgbGVnYWN5LXRydW5rCis5ODQ3IGZlZDNjZjcyNjgzZGMxNzQ3ZWMzYzJjNGI5NjE1NzYyMDU0NjU3YmMgbGVnYWN5LXRydW5rCis5ODQ4IDFmNDYyNWZlNjZlMmNhOGNlMGJhOGJmMjM5NGQyNjcwNTE3YzYxMTkgbGVnYWN5LXRydW5rCis5ODQ5IGY1YTE4OWFmYmNmOTk0ZGQ5YTE0NWRiOGYyNDA1OGNjZDFiMjE3MGQgbGVnYWN5LXRydW5rCis5ODUwIDFlNjZjNGUzMWQxNTBhZmQ4YjBiOWU1YmYyMmU1NmU5ZGJmMWE3YzEgbGVnYWN5LXRydW5rCis5ODUxIDg5NTU5ZWU4NWU1NDBkMmVlNGYwODVlNmE5YWJiZmMwOWRhMmJmMjcgbGVnYWN5LXRydW5rCis5ODUyIDhkMTFiMzY3MWU1ZDYxODdkOTM3ZTY4ODM4Yjg1YmM1ZDEyN2ZmZmIgbGVnYWN5LXRydW5rCis5ODUzIDAwMzM4YTgxM2RjYjhiYmUxYzI3ZjU5NDRlYWU0Njk5NDJiN2QwYjMgbGVnYWN5LXRydW5rCis5ODU0IGZjNmJlN2FlMDEyZjQ0Y2Q4ZDI0MDc1MmQ2ODJlOWZhYjE4MjI5ZjIgbGVnYWN5LXRydW5rCis5ODU1IGY3OGFmNWJjNzhlZGRlNjZiODM3NWVkNjc2MDIzMmUxNDUyZTU2ZGIgbGVnYWN5LXRydW5rCis5ODU2IDBlMGU4OGY4ZTFhZDUxZmFmZDM2MWIwZDQ5Y2RiOGU2NDBkZWY5MmEgbGVnYWN5LXRydW5rCis5ODU3IGU2M2YyYWRmYTdjYzg0NWU5OTE5MDJkOWM1MTRiMjlkNDNlMTIwNjMgbGVnYWN5LXRydW5rCis5ODU4IDYyYWM1N2RlN2FkYmU0NmNkZThlZjA4NTk2NmNlZjJhY2ViMGU5ZDAgbGVnYWN5LXRydW5rCis5ODU5IDEwODQwYzM3MzdhN2RkMTA5M2QyYWI4NjAwNDNmZTI4OTU4NzEwNjggbGVnYWN5LXRydW5rCis5ODYwIDY5YWRkNGQ3NzM2ZjEwNjU2OTAxNGVjZTk5ODcyZjRlNDQ2YjA2MTcgbGVnYWN5LXRydW5rCis5ODYxIGY4YTc3MjI0ZWJjYWY1MTM0YmZjYzFmOTM4Yzk1NzY4NDIxM2Y5YmMgbGVnYWN5LXRydW5rCis5ODYyIGI1OGIyZWU2NWY3NWY1MTkyYTNkOTBmNDA4NWFmNzRiYjE1N2MwYjggbGVnYWN5LXRydW5rCis5ODYzIDZkZDY1MWNhZjllMDY2ZTNlYzkxZTg4ZWRmZDZjNzM3ODA3ZTk4OTIgbGVnYWN5LXRydW5rCis5ODY0IGY0MDQwZjNiZGNjNzM3YjY2NWY5YzI5YmEwYTZkNTIzZmVjNzY0NzUgbGVnYWN5LXRydW5rCis5ODY1IDQ2MTE5ZDFlOTQxM2Y3YTBjY2U3OGZlZmRkMjU1MmI4ZGU5MGIyMTMgbGVnYWN5LXRydW5rCis5ODY2IGVkYzBkMDIxZTQyNzZkZmI1ZjdlZmYyOWNmNTgyNTlhY2Q0MWY1MDcgbGVnYWN5LXRydW5rCis5ODY3IDU0M2IyYjRhZjUzMjU5MTE3NjQxZDRjNDFlMTZjNWYxNzcxY2IxZmMgbGVnYWN5LXRydW5rCis5ODY4IDIyMzQzMzAzOGE0N2U3ODQ4NThmNDRhY2Q4MWUyOTYwZTA3ZWRiOTAgbGVnYWN5LXRydW5rCis5ODY5IGI2NGE4Y2VjOGQ3NWM1YWE5MzI1YTg3MWRhMjU3YmVjZmQ4YjlkYTkgbGVnYWN5LXRydW5rCis5ODcwIDAzMzNlNGE5NTJmOTNkYmRjOGMzMWVjNWIxMmI5ZWMwNzMwODk1ODEgbGVnYWN5LXRydW5rCis5ODcxIDAyOGY3MGQ1MDhjMGI2MTVmNjJmODM0MDg2NTBiNTZhNGEwNDgxMDAgbGVnYWN5LXRydW5rCis5ODcyIDc2N2JmODAwNGNmZmRmZWQyMjM1YzA0ZjczZjIyNDExYTg5Y2JjM2UgbGVnYWN5LXRydW5rCis5ODczIDc4Njg3NWM0YzYyYzUwZDdjMWUwNDEwNzgwZDMwNWRkZTg5ZTE3OTEgbGVnYWN5LXRydW5rCis5ODc0IGZiYzc1NTM1ZWE5M2NiM2YyYjU0ODZiMTBiMzNkNDY1YjhjNTZmY2EgbGVnYWN5LXRydW5rCis5ODc1IDQ1ZDY1YmM4YTU1MGYzMzc5YWVkYjkzMTU1ZmE3MjNmZTgzMmMzYmMgbGVnYWN5LXRydW5rCis5ODc2IDdhZmMxNWYwOGQ4MmNhYzM3MjM5YzUwMWVkMTJmYTg5NWNkNTMyODkgbGVnYWN5LXRydW5rCis5ODc3IGI4ZDc4NjUwZjhkZjFkNWJjNWE3MWM3YTJmNDcyNmYyZmYyMzc2NTQgbGVnYWN5LXRydW5rCis5ODc4IDY4NWM1MTBlMTRjZWViNWQ0ZTJmYzY3ZTQyNGU0MWFjMWU3NjZlMjggbGVnYWN5LXRydW5rCis5ODc5IDhjMDFjZmVlMTRiYTE5MjY3YjFhMmIwYzMyN2RlNjlhMzM5OTQ5MjUgbGVnYWN5LXRydW5rCis5ODgwIGM3NDU0Y2E3ZDNhY2MxNDNlMDJhMGI2ZjliZWUwNTIwMDYwYjlhZjIgbGVnYWN5LXRydW5rCis5ODgxIDE4NWMxZDQ3Y2U3YTA4NzQ5YWM3M2E5ODhjZjY3MTFlMzM4ZjAyMjkgbGVnYWN5LXRydW5rCis5ODgyIDNhNzdiY2EyMjZiOTM3N2ZmMmE4ZGEyMzM3NDViYWM5NDAwYmU4OTcgbGVnYWN5LXRydW5rCis5ODgzIGM1MWY3YjZkMjU1NmU0Njk1MDk4ZGUyZjdjZTdhZWM4MTk4ZGVlMGMgbGVnYWN5LXRydW5rCis5ODg0IDNhNDlmNTg4NmFjYWViMDllNjNiYjg0ZGZiZDkxYzhkMzJhMWZkN2MgbGVnYWN5LXRydW5rCis5ODg1IDJjNTQ5MDE0NzFmNWQ5MDRkMGJjYWY2YjM4NDVkMmFkMzAwYjk3ZTQgbGVnYWN5LXRydW5rCis5ODg2IGQ4OGJmNzY3MTQ1ODI1YWI0YzRhNmRiOWQwYzhmZGViN2FiZjU5MzEgbGVnYWN5LXRydW5rCis5ODg3IGRmYTI0Nzc2NDMyMzcwMjQ1OGFiMDk5OWYxNmY2Y2I2NjMyNGNjMTggbGVnYWN5LXRydW5rCis5ODg4IGQ3NTg4NDFhNzY2MWJjN2YzYzgwOGNiZTczMTQwYzQ3M2ZiOTViOTEgbGVnYWN5LXRydW5rCis5ODg5IGFkODkxZjZhMTllZWJhNGQzMjUxODcyMGQ3OWM1ODQyMjdlZTY0ZmMgbGVnYWN5LXRydW5rCis5ODkwIDI5N2JlYTIzM2UwMzJmYmRmNzkzN2FiNmQ4NDkzNDE2N2VkYjA4NzYgbGVnYWN5LXRydW5rCis5ODkxIGRlZGNlOWI2ODc0MjQwNTE4ODQwMjcwZjc4ZDkyNDAwYTFhYmVkOTMgbGVnYWN5LXRydW5rCis5ODkyIDY1ODQ4YTdjNzdiOTgyNTMxYTZlN2RjOTcwZjExYmY2OWI5ZTU5NTggbGVnYWN5LXRydW5rCis5ODkzIGExNDM1YzdkMzM5YjdmYzIxMzc2M2IzYmNlMTBmNDYxOGMyNWQwNGQgbGVnYWN5LXRydW5rCis5ODk0IDEzZjI5YjYyYTIwOTUzOGZkNTYyOGFjMzY2NDBlYTQyNjc5MzMzY2IgbGVnYWN5LXRydW5rCis5ODk1IDYyNTVkYzg2MWZjZjEzNTNmZTJhZDI2MjU2OGMxYThhZDJjYjA2NDYgbGVnYWN5LXRydW5rCis5ODk2IGIxZjE5NWM5N2VmOTlhNGZjNmYyNDllZWQxYTZjZDc4NDVjNGFhMzAgbGVnYWN5LXRydW5rCis5ODk3IDdjYTJjM2Q4NzY2MjA2YWUyNWY1NDc4YjQwMzljMmZjNTYxZDUwNjMgbGVnYWN5LXRydW5rCis5ODk4IDNkOWY1MTA1MGFiY2E0NWI3MmU5Njc0ZDc2Mjc0OTRhYzY5YzBiZDQgbGVnYWN5LXRydW5rCis5ODk5IDQzOTM4OTc4NTJiMjQ0ODZiMjM5MjFkMGQ0YzE5NTQyM2QyNDllMmYgbGVnYWN5LXRydW5rCis5OTAwIDJkNTA4ODIyZTdmNjg4NWE4M2UzOTNlOGYxYWRhYTVjNjU5YjY5ODYgbGVnYWN5LXRydW5rCis5OTAxIDZlNzNmNDE2OGIwNjJlY2E1Zjc3YTA3YjU1OGYyM2ExNzMxMzA5OTEgbGVnYWN5LXRydW5rCis5OTAyIDExZTkzMzdjZGEzZDE0N2VlNmQ0ZTAyYTdkZDJkNjU4M2UyYzZiMzggbGVnYWN5LXRydW5rCis5OTAzIDI5YmRiZTAzOWUwNWVjODVhZDc5NDViMDJmNmNkNDIxMjU1ODUyYWMgbGVnYWN5LXRydW5rCis5OTA0IGIzZTNkYWU5YjYxMjI0NDJkMTQ2MjIxYjA0YjMzMjlhZWY1ZTkxNjkgbGVnYWN5LXRydW5rCis5OTA1IDVhZjdkM2RhODdjZjZhY2I3OTIyNjAyYzgwNzJmYTI5YTJkZjJlNzIgbGVnYWN5LXRydW5rCis5OTA2IDNmMjI4NDM0NGE0MWJhMjRmNzVkMDU2ZmQwM2NjODg2Zjg2MWE1MjIgbGVnYWN5LXRydW5rCis5OTA3IDgzZTc3NTllNzI5Nzg2OWRkZGExY2QxNzc0MmQxZTU2NDVjZjZlYjQgbGVnYWN5LXRydW5rCis5OTA4IDdkZjZmMDQ1MzQ2OTE3N2NkMDhmY2E1OGE3ZWIyOGE5MDMwMDAyZDEgbGVnYWN5LXRydW5rCis5OTA5IGE5ZmJmMjFhYjdjZTljZTc5MzZlOGEzY2M1OTk0NWNkZTA4NGZiOGYgbGVnYWN5LXRydW5rCis5OTEwIDM2NTUyNmM0Y2Y4YmIzMjM4NDY2NTk0ZDA3MzIzZGNlMjA1ODJlYWYgbGVnYWN5LXRydW5rCis5OTExIDRmNDVkY2NkYTk2YjI4NzQ3ZTMzZDQxZTE1NGQ1YmQxY2E0YjQzYjUgbGVnYWN5LXRydW5rCis5OTEyIDNkZTBjYjgyZTYxYWU2NTFiZTA4MDhlNjIwMTg5MDk1ZWRlY2Q3NjkgbGVnYWN5LXRydW5rCis5OTEzIGNiYWNkMWJlNzI3NWMwMGYzYzYzYjk1ZWI1YTM4NGNmMmViMDAwYjIgbGVnYWN5LXRydW5rCis5OTE0IGQxNDY1YjVjMGEwODk0ZTE1NTExZGMxN2JhYmMzYjQxNzJmNDIwZWUgbGVnYWN5LXRydW5rCis5OTE1IDM3NDBmZjJlZTA1M2NhOTNkODkwNWJlYzU1MGFhNDY2YjlhMjg5ZTMgbGVnYWN5LXRydW5rCis5OTE2IGNkMTE2OTBjYjE0YjA3MmU3MGYyNWU4YzNmZGE3NDhhMTFiOWQxODEgbGVnYWN5LXRydW5rCis5OTE3IGE2NGM4OWRhZTE4ZDYwZTU0YTgyZWVhZGUzMjg2YTc0ZjZiMzA0MTggbGVnYWN5LXRydW5rCis5OTE4IDU5MGY2MjU0ZjlhOWFlYWE0MjAyM2VkYjU2OGJlOGViMDcyNWRhN2EgbGVnYWN5LXRydW5rCis5OTE5IGE4MDU5Yjk2YmMzNTVhYThiNjJmZTE2NTM3Y2ZjMjBlOTM0Y2QzMTYgbGVnYWN5LXRydW5rCis5OTIwIDA1MTg5ZjdjZGJlYjE4NDExOGQ2MTY4YWQzMzFmOTUwYzFhOWYwNjggbGVnYWN5LXRydW5rCis5OTIxIDk4MTViMThiMjNlM2I2ODVhOWFmMjM1NDJiNTNjYjk4ZDFiMzY3OTEgbGVnYWN5LXRydW5rCis5OTIyIDM3MjBlOTk2ZTU1MTI3MzkxNDBkYmEyOThjOWQxY2IyNTUwMzkyNzMgbGVnYWN5LXRydW5rCis5OTIzIDE2Njg0OTkyMDZkY2ZiYjU4MmU3ZTUyYTYzNDhhNTRkNDBmNTQzOWEgbGVnYWN5LXRydW5rCis5OTI0IDI5MzNmYjM0ZjMzM2ZkNTJjMTczOTIwZmE5NGYwNTQwZTE4OTBiNjIgbGVnYWN5LXRydW5rCis5OTI1IDgyNmM3MTgwMTkxMWNiMGM2Mzk3ZDg5NjRhZDY2MTQ4ZmY4ZTQ2MzggbGVnYWN5LXRydW5rCis5OTI2IGM5YjY4NTBjNDMzNmE0Y2RhZmEyYTNmNTAwMmVkZWJhYzRiNGYxNzkgbGVnYWN5LXRydW5rCis5OTI3IDVlZGNlYjhmMWZhYjdhYzY4MGIxOWE5Y2Q0OWJkNTViYzMwMmYyZjIgbGVnYWN5LXRydW5rCis5OTI4IDBkNzY3NjE0Yzk0MWViMTBmNWVjMjkzMmM0M2FjNzFiYTlhZGJhMTkgbGVnYWN5LXRydW5rCis5OTI5IDBhOTU0MWE4NjY4OTA5NGRlNDEzZjRlYzZjMDBjZGUyZDhlYjU5ZjMgbGVnYWN5LXRydW5rCis5OTMwIDIzY2MzNDJlZTE1MGJhODQwMWZiYzNjMzliYWZlMzQwYTM1YTAwY2EgbGVnYWN5LXRydW5rCis5OTMxIDNjMzhjOGFkNTYyM2ZiNDBkNGFmZGEyNjEzMzI1YzM3N2JlOWIwMDQgbGVnYWN5LXRydW5rCis5OTMyIDFiNGEyZTM4YWI1ZWM2N2FlM2U1MTkwZTdmOGVkMGIyNTM3Njg2MzAgbGVnYWN5LXRydW5rCis5OTMzIDQ4MzI4NmUyMTllMWY2NDQ0NjNiNGQyYmQ3YjJmMTI2YTVmMTFhZTQgbGVnYWN5LXRydW5rCis5OTM0IGJkMDVhYjQ3MzFmNzZiM2NlNDRkNDMwYzUzZTc3MGQ0YjY5NDY4ODggbGVnYWN5LXRydW5rCis5OTM1IDFhOWIwOWIzY2FmOGFlNWUyODViNzA0ZDJkOWFiN2I0YTRkYWFlYjQgbGVnYWN5LXRydW5rCis5OTM2IGVjOTVlOGRhZTUwNDE0MjVhZTU3Y2E1N2MxOTZmMGU0ZTQ0ODBlNzkgbGVnYWN5LXRydW5rCis5OTM3IDRhYTQ3MTBkODk0YzgyNjhmNDJlNmE0MDgxNjk1NmI2ZDViNmNkNTkgbGVnYWN5LXRydW5rCis5OTM4IGJkODE1MzhkNGRkZmQ0NzYxN2ZkYjQ1YmEzOTg1OGE5ZmRhNjRjZjIgbGVnYWN5LXRydW5rCis5OTM5IDAzMWRlODU0MGE3ZWEwNWRiNTRkMDFmYWNmNTJmOGY0MjNmY2UwY2UgbGVnYWN5LXRydW5rCis5OTQwIDk1NDFiOWIwOTM3ZGRmMTRjMGI2NDhiMWNiZWMyMzA0NzJiYTVmNWYgbGVnYWN5LXRydW5rCis5OTQxIDgyOTQ3YTE5MjZmNzgyZGVmYmUwY2Q3NTM5N2M1NzYwOTllNTZjMTMgbGVnYWN5LXRydW5rCis5OTQyIDAyMTIzN2JhNTAwNzQyNWUwMjBlN2NlOTY4ZDg5MDM5NTU4NjBhMmMgbGVnYWN5LXRydW5rCis5OTQzIDdiMmZkNDg2ZWZlZTFjZDhmZGUyMGFmY2MxNmI4ODM3NWJkNjgwMjMgbGVnYWN5LXRydW5rCis5OTQ0IGNiMWE1NzdjMDIzOWNiYjBkOTY4NzliYzA0ZmUyOWUzNTZmMzBiZTEgbGVnYWN5LXRydW5rCis5OTQ1IDAzNjBlM2UzMGEyZTQwYzQ5MjJmNzhkNWQ3MTgxODJmYTU1OTk3ZjEgbGVnYWN5LXRydW5rCis5OTQ2IDE0OWE1NDc5ODg5NjFiN2FjZTYyOGFlZWMxNmVlM2FiZGNjNjE2ZjUgbGVnYWN5LXRydW5rCis5OTQ3IGFkM2U0ZWIzNWRhNzcyMzkwYzUwYzAyOTM3ODZiODZmYzlhMDZlMTkgbGVnYWN5LXRydW5rCis5OTQ4IDZmODY5ZTVkMzNjY2JmNzYzNGI3YTBiZTVlYWE0MTJhZjgyZWZlMjYgbGVnYWN5LXRydW5rCis5OTQ5IDg4MWE1ZTY3MTRkY2I3MGE1Y2UwNzlmNTIxZmRiZTA3MWQzMGYwZTggbGVnYWN5LXRydW5rCis5OTUwIDZiYjUwNmFkOTY4NDhhYzJhMjhjZjUxNzBiN2Y1N2M5YmZkZmEyZmYgbGVnYWN5LXRydW5rCis5OTUxIDJjZjFjYWU5YjQ2ZWYzN2YwMmQ1Yzc4NjRkYzE4ODUwZDBhY2NiYmIgbGVnYWN5LXRydW5rCis5OTUyIDA3NmI4MmUwNDBhNWM5MzU0ZTRiODVkY2NiMjFlMjM5NTZjZGZmYWQgbGVnYWN5LXRydW5rCis5OTUzIDc4NGZlZjgzN2I1MmRjOGQ2MDE4MWRjYWY1MGM4YzAwMmZmMzQ3N2EgbGVnYWN5LXRydW5rCis5OTU0IGNhNjZhMjUzNmNkNTQ5YTU5N2Q5NmIxODI1NGUwM2Y0N2Y0OTQ5ODMgbGVnYWN5LXRydW5rCis5OTU1IGI5NDIxZTE3ZGRmNzYzMWQwN2ZkMjNmMGFmZDYxYWM1YjZjNGNmN2EgbGVnYWN5LXRydW5rCis5OTU2IDgwNzM5YjBiYzMwMjZjOTJhOGQyM2Q2YTRiYTgzZWY4ZjZkODk1NzEgbGVnYWN5LXRydW5rCis5OTU3IGJmZTU3ZWZhZDc1MWZhZGZiZTliMjY1Y2Y1NmUzODc2YjBkYjk2NTAgbGVnYWN5LXRydW5rCis5OTU4IDU1YzNmZDE4NTNjZWJiMmY0Y2U3YjlmYmEzYTA2ODM0NmM3ZjQ2OGUgbGVnYWN5LXRydW5rCis5OTU5IGNjYTM5ZDcxOWFiYTZlNWMwNDU5NmQzOTU0NjA3NTI4ZDBkMzI2MTUgbGVnYWN5LXRydW5rCis5OTYwIGYwMWZmMjZmYWNhZWI4NzM4MmEwMTQ1ZGE5ZmQ3ZWM2ZWEzOWFjYTkgbGVnYWN5LXRydW5rCis5OTYxIGJhNGEwMmMwZTkwYzc5MmFmYTdlMWE3YzkxZDMzNDVlNGMxMGI4MTMgbGVnYWN5LXRydW5rCis5OTYyIDU4MGY2YzkyMjcwYmI4NzAxNjlhMGFlZjg3N2VlNmY0YTNhNTViMjIgbGVnYWN5LXRydW5rCis5OTYzIDFkZmMxNWUzMTEzMDQzZDYwMDhlZmVlOGMyOWZhZGVmMWQ3MGM0NWIgbGVnYWN5LXRydW5rCis5OTY0IDRjYWUyZGUzMGI1N2ZjNWUwYmIzZDVjY2Q2ZmMzNzgzMTdkMzBlZTMgbGVnYWN5LXRydW5rCis5OTY1IDA1ZDBiNmZiZWE5YjVkYzY3Y2VlYWQzNjUyZmRjNDgyNjcyOTJjNGIgbGVnYWN5LXRydW5rCis5OTY2IDk4MzQ1YWExZDVmZWQzMTYzM2ZjODJlZWQxOWQ5Mjc5MjE0NjBiNzcgbGVnYWN5LXRydW5rCis5OTY3IDQyN2I4MWMyNDUyZmUxZDcyZmExMDBhNGI3MjUwYmQ0MGI0YjFiYWUgbGVnYWN5LXRydW5rCis5OTY4IDNkZmMzNzZlNmYxYThiZTRjZTlhMDEzMWZjOTUwZTZhOGE3MTRiMTIgbGVnYWN5LXRydW5rCis5OTY5IDdmMjg5OTdiMmMxMDZmY2UyM2JlZTJiYzFlZGYyNmZhMjM3ODk0ZTMgbGVnYWN5LXRydW5rCis5OTcwIDU0NDU2ZjA4ZWJhZDc1NTEyZDQzMWFlYTFhMThhZGNhNzFhNmVhYTkgbGVnYWN5LXRydW5rCis5OTcxIDY4NTdhY2JlMmU3NGIwMGFmODYwYWYyYmE4NzFmNTEyOTc1YjM5YWUgbGVnYWN5LXRydW5rCis5OTcyIGM0ZDU2ZmM2M2Q4ZjAzOGI0YWI0MTZjMTQ3OTliZTNiNmU1OGE2YTggbGVnYWN5LXRydW5rCis5OTczIDZiMDI2NjY3OWY5Njk1MjU4ZDdmYTQxMzljNzA5YTlmODY0NTdlMjQgbGVnYWN5LXRydW5rCis5OTc0IGVjNzk3NmQyZDVlOWU0MTNlMjE4ODkyZTk2ZDdlNzljMmFjODY4MTYgbGVnYWN5LXRydW5rCis5OTc1IDVlMzkwMDc4NDYwYWU4ZTQyYjNmOTVkMzY2ODdjMTM2NGY5Yjg3MWQgbGVnYWN5LXRydW5rCis5OTc2IDE5MDZhN2ZjNzUwOTRkNjgyNmEzZmNhNWIyY2IyYTVhODlkNjEzYWQgbGVnYWN5LXRydW5rCis5OTc3IGQ5NTkxYzliMmM1ZmE0ZDE1YTViZTkyNmE2MDQ5MjZiYmIyNzdmOTcgbGVnYWN5LXRydW5rCis5OTc4IDlkZTNjYWQ1MDkwNTBjMmFjNmM0NmJlYmI5MTNkYTNlMTI0OTQyMDMgbGVnYWN5LXRydW5rCis5OTc5IGQxN2RiM2ViZmJjMjA1ZGMxODU3NjRjMzI5NTgzZmEyMmM1NTI0ZDQgbGVnYWN5LXRydW5rCis5OTgwIGYyM2RiM2I2NWM4MzgxZmJlZDdlZDc0NDRmNjA2YmZkODlhOTU5OGEgbGVnYWN5LXRydW5rCis5OTgxIDc1NDU4NjAzOWMxMWIxZjljZmE0MTBmZDI3ZjI0MTkyZjFlNjQ2NmQgbGVnYWN5LXRydW5rCis5OTgyIDg5NGNmZmViODliYTUzNTE3ZDZhY2U2ZmE2YzA2Mjc3M2FmMjAyNDUgbGVnYWN5LXRydW5rCis5OTgzIGVmOTgwZTE3YjU5MzljYWJhZjYyMTgwNGE4MDM0Nzk4ZDIzNjFhNTYgbGVnYWN5LXRydW5rCis5OTg0IDY3YTJiOTZmMDE4OTczNDk0NmFkYzNlMDI1YzM3MDRlODYzNjgxNTQgbGVnYWN5LXRydW5rCis5OTg1IDUxMGU1MjQ0NjdjZTYyNzNkZWMyYmY0NDM4MDNjNjk4MTQ3NDEzNTEgbGVnYWN5LXRydW5rCis5OTg2IGVkYTBjYTEzOGIzZDg0YmE5MTE5NjMzOGQwZTVlYTllMGFjMmE0NDggbGVnYWN5LXRydW5rCis5OTg3IGI1ZDUyYzQxNWIxNWU5ZTRjZjBkZGY4YzVjNzgyNDcyN2UyNGQzYmEgbGVnYWN5LXRydW5rCis5OTg4IGVjNDczNWNlMTM2MDg0M2RjYzZlNzdhMzBmN2YzMDFkNzhiYTUwMzIgbGVnYWN5LXRydW5rCis5OTg5IDM1YTNjYzI0ZWYwNDMyN2E2YmE2ZGI2MGUwNDFhYzQ5ZWVhMDFkZTggbGVnYWN5LXRydW5rCis5OTkwIGUzZjM3YTI2MDJkNTA0OTA1YmI5MjU4ODFiNjM3NjM5NjgzNjk2Y2QgbGVnYWN5LXRydW5rCis5OTkxIDQ4ODhmNDQ4NDUwZjIzZGEwMmUyZDY4MjU1ZDY3OTI5YWNkYjRiYjggbGVnYWN5LXRydW5rCis5OTkyIDk3MGU5ZTA1OGI3NjFjNGM4NDdjMWI0NDdjZDIyZGZjYTAyOThmN2QgbGVnYWN5LXRydW5rCis5OTkzIGVjMGY5OWYxYTJmZGIwYWI5ZjY5ZDMwZjkwYjg0ZDQ0NGVjMDk4ZWYgbGVnYWN5LXRydW5rCis5OTk0IGI2MDQyNGE1NmY3NDRlNWVlNDJiZmQ0ZmUxOWFjMmNhNDEyNzNhMDIgbGVnYWN5LXRydW5rCis5OTk1IDgzYzJhNWE0NWE0MWIyZmFkYjkzOWEzYzNiNmEwZmRiMjUzNThjZmEgbGVnYWN5LXRydW5rCis5OTk2IDMxMmNhOWZkYWNmZjI3NWJlOTIwNzA0NDk2YTk1YzI1YjY2MmM2ZDAgbGVnYWN5LXRydW5rCis5OTk3IGNjZTg5OTRkNTJjZjBlOGE4MzAwNDMxZmU3Njk2ZTdkYjg4MmYyNzIgbGVnYWN5LXRydW5rCis5OTk4IGY5ZGEzNGY3MjY4YjUxYzg3MWYyZjE0M2RhODAwNjQyMmQ0YzM3OTUgbGVnYWN5LXRydW5rCis5OTk5IGZiYzg5MjI0MzQ3N2Y2Y2NiNmVhMjNhZTNiY2RlNTRhMDY0Zjk3OTcgbGVnYWN5LXRydW5rCisxMDAwMCBkYzM3NDcxMWM4NDhjZDY2MTM3ZTliNmE2ZTZlYjRjMTdjMDRmYWUxIGxlZ2FjeS10cnVuaworMTAwMDEgNWU0YzI4OTdlNjI1NzVlOWU0NjlhMGFmMDA1OWY3ZjdjZmRiNTZlNiBsZWdhY3ktdHJ1bmsKKzEwMDAyIGVlYWMzNmJmZTAxYWEzZjFmYzhkMWQxZmQ1ZmUwZWE4NzM4NDVkMDQgbGVnYWN5LXRydW5rCisxMDAwMyA4ODk5MjY5NmI5ZThkMTdkNTVhODRkZTMzMmI1OWI5YzdkN2Q1NzY4IGxlZ2FjeS10cnVuaworMTAwMDQgNjBlN2IwMDBmMjczODQ2MjNkYzE0N2Q1MmFhY2MzMzk5YmM1ZDM5YSBsZWdhY3ktdHJ1bmsKKzEwMDA1IDI2YTg3NzFhNGNmZDAwOWI5NmQ3M2E1OGViNTVlMDA3MmU4YzllYjQgbGVnYWN5LXRydW5rCisxMDAwNiAzY2FmMjM5N2M1MDgxNTUzYjMzY2ZiN2U5YmZiNWE5ZTJlOGU5MDllIGxlZ2FjeS10cnVuaworMTAwMDcgMDM0Mzk4NzM2ZTY0YzQxOGNiZDMzNzc4NzU1ZGZkYmRlMTFlNDU5ZSBsZWdhY3ktdHJ1bmsKKzEwMDA4IDg5MTEwNWRhYzliNDE4NzE0NDg4MTc5YmUyODE5ZWQxY2EzNWM0ZTIgbGVnYWN5LXRydW5rCisxMDAwOSBiNDY2MGFkN2RjNDFlYTE3NGY4OTU5NjNlZTUyODRhYzAzMmRjZjFmIGxlZ2FjeS10cnVuaworMTAwMTAgYmYyMzZmYmYxMWRhYWUzYTIyYzExNDY3ZTBjYjRiNzNhMjE2NDNiOSBsZWdhY3ktdHJ1bmsKKzEwMDExIGVhODE4NGJmZjEyZGE1YzBkMWVhNTRiYzgxNjIzNmI2MzcxM2IwZjAgbGVnYWN5LXRydW5rCisxMDAxMiBmOTFkNWEwMzM5YmYzYWEzOGVhOTA0ZjcyODU2NDc5NTQxOGFhZDhiIGxlZ2FjeS10cnVuaworMTAwMTMgMTNiNjBhYmRiNzBkMTllYTA2NmYyMjAzYzExNjNjZWU0YjczNjg1MSBsZWdhY3ktdHJ1bmsKKzEwMDE0IGVlZGFjNTBkNzc0NDNiMGJiZGNjZjljNmQ1Mjg3MjBmY2ZlMTFmYmQgbGVnYWN5LXRydW5rCisxMDAxNSAzZmY2YjNkM2M0ZDVlMmYzZjVkYjdiY2ZhOWY0MWIxZGM1NzAzNjI1IGxlZ2FjeS10cnVuaworMTAwMTYgMDFhOWY4NGEyNjljOWRhMGE5YmUwMWYwYWJjMjc4YWE2ZTQ5ZmQ0ZSBsZWdhY3ktdHJ1bmsKKzEwMDE3IDc4MzBlMWRlOTgxNzQ1N2ViMWZjNDJkYjc1M2JmM2JkOTBlOTQ2ZTcgbGVnYWN5LXRydW5rCisxMDAxOCA5ZGFlMGFiMzgzYTQ5OGUxYjU3MjY2ODQwMTg2OThhN2I3ZTlhNTc3IGxlZ2FjeS10cnVuaworMTAwMTkgYzlmNGFhMmM0NWVkZDY3ZmQwYzRjNDViNDQwZTNhYTQ4NDQxODUyZCBsZWdhY3ktdHJ1bmsKKzEwMDIwIGNhMTcwZDc2MWYwODZlMzA1YzhiNWRiNmM3MDc1NzFmMTIxZmIzMDQgbGVnYWN5LXRydW5rCisxMDAyMSA0OGY3YWM0NTJkOTljOTRiOTMzMDMxZDdiN2U5ZDk2YzRhNjk3ZDQxIGxlZ2FjeS10cnVuaworMTAwMjIgZDIwMmM4MmQzYzU3MTYyNmQzNmYxYzQ0MGY5YzVmNTFmYzFjOWYwYSBsZWdhY3ktdHJ1bmsKKzEwMDIzIGMwMTMxZmFlMDZlOWUwNzIxMWM4NDRhOTBkZWE0ZDcyZWM4NjE3ZWEgbGVnYWN5LXRydW5rCisxMDAyNCA2NDIxZWExZGUyODI4N2IyNGRkNjRjYzdiMjY0N2JmZmFjOTUzMWJjIGxlZ2FjeS10cnVuaworMTAwMjUgZDRkODRiNTRjNDRkODE4OWUyMDNhMTQwM2QzOGQ3ODk5ZDA5YmE0OCBsZWdhY3ktdHJ1bmsKKzEwMDI2IDdlYjE5YjFjZTg0ZDc0ZjJlMmM5NTVhNjMwYzY5YTU5N2FjYzQ4ZDUgbGVnYWN5LXRydW5rCisxMDAyNyA0YjExY2I5NjEwNDZhMGM0ZDg3MmQ1ZjYyY2NhNTMwOTliNDMxNGY3IGxlZ2FjeS10cnVuaworMTAwMjggNjk4NjA4MjFjYTFkNWRhNjY1MWRkNDY2ZjliMjRmMzY3ZGRjYWU1NSBsZWdhY3ktdHJ1bmsKKzEwMDI5IGQzNGZlMzBiOTVlODU2ODIxMzg5M2NkZjA3Y2YzYzAzOWU4ZDM4N2IgbGVnYWN5LXRydW5rCisxMDAzMCBjOGU1ZjcwNDYyM2Q4OTAxMWY4NmZmZmMyOTRiMDllMDU0MDU1MjMxIGxlZ2FjeS10cnVuaworMTAwMzEgODJlYjhiM2RmNmY4MjY1NDNiYmY5NjFmNzBlNTI1NGMxZThjMWViMCBsZWdhY3ktdHJ1bmsKKzEwMDMyIDVkZjY1NmNkMTBhZGUxZDM1YjU3NmMzNjNhZDJjMTI4MTJjYTkwODggbGVnYWN5LXRydW5rCisxMDAzMyA1YWVjYzI1MDllNDZkOWY0YmJjODRlYWIwYTdlYzEyYzI0OGMxOTMwIGxlZ2FjeS10cnVuaworMTAwMzQgNzMzOTUwODA0YTBiNDJhZmZhMGJmYjdmYjNiNzBlOGFkNjE2YTI2NyBsZWdhY3ktdHJ1bmsKKzEwMDM1IDY1OTgzODRkNWY0Y2JlZDljNmZkYTAyZTQyNDI3NjdhZDVjODYwMjMgbGVnYWN5LXRydW5rCisxMDAzNiAyMmRlNTExNjgzMmZkNjVlMTliOTU3MmMzYjE3NGU4ZmNhOGIyZjIwIGxlZ2FjeS10cnVuaworMTAwMzcgYzAyYWYxZTcxM2VkYzhhNDU2NDczYmVhZTE0NDcyMWJlNWM3OTUwMyBsZWdhY3ktdHJ1bmsKKzEwMDM4IGE0NDdiMjY4Yzc3MzJiZDkwODY4MmMxMTUyN2ZkMDYwNTE5MDFhZjIgbGVnYWN5LXRydW5rCisxMDAzOSBjYzdlMTI2ZjAwOWQzODlkODNiMjU0ZTRkOTNhMDkxN2YwYzJkOGZiIGxlZ2FjeS10cnVuaworMTAwNDAgNDNmNDdiOGUzOThkYTUzZGE5OWE4NjRmYjMxZWQ5MmY3MDQ5NTIwYiBsZWdhY3ktdHJ1bmsKKzEwMDQxIDU5YjFhYjAxYzI4NmVmMzE3YTU4ZTY3ZWZiMjlhYzUzNjhhMWJkZmQgbGVnYWN5LXRydW5rCisxMDA0MiAxYTlmOWE1ZGYwNGIxNmYwYmM1N2VlMWU0YjRlMjUwNTEzNDZlZGI2IGxlZ2FjeS10cnVuaworMTAwNDMgYmExMGM0Mjk5OWI4YmNhMjY5Y2IyMGFhZTZkZmIxNmYxMjBhOTI3NiBsZWdhY3ktdHJ1bmsKKzEwMDQ0IDJmZjJlNDU3YWI4N2FjN2FhZTJiYjliMDczMzNiM2JmMjAxYTI3NzAgbGVnYWN5LXRydW5rCisxMDA0NSAwMGFlZTQ3NDNkN2JhNjllYWE5ZTg1MjA5ODAyNDA0NjRhOGRmZjg5IGxlZ2FjeS10cnVuaworMTAwNDYgZTE1ZTg1ZDk4N2FmODllNjY2MGE5YmY5ZTIwYTUzZThiNjg5ZmQ3MyBsZWdhY3ktdHJ1bmsKKzEwMDQ3IGI5Y2JmMTc0YzcyMzg5MjA4NjdjZmNmYTU4MmU0Y2Q2ZDliNDExYjEgbGVnYWN5LXRydW5rCisxMDA0OCA4YWVlNTBhOWExYjFmYTRjNzRjOTVmMTdmNDhiOGZlZjExNjc1MTcxIGxlZ2FjeS10cnVuaworMTAwNDkgOTY4YWFiYTI4MWM1M2YwMmIzZjQ1YzE5MTQ5NWZlOWRmZmFhYmZiOCBsZWdhY3ktdHJ1bmsKKzEwMDUwIGM5ZjQxNzEyNGUwZjc2NjU0Yjg4YTZmMjRiOGRlYzM2NTdmYzg2N2UgbGVnYWN5LXRydW5rCisxMDA1MSBhYTBlODE5OWNjMzE4M2IzZDg4MTc3ODZhN2VmOTdkZDg3YTQyZmVjIGxlZ2FjeS10cnVuaworMTAwNTIgN2U3ZDZiMWI4YTRiMmJkZDZhNjQ3MDViMDNhNmFmZTljMGFmMTk2MiBsZWdhY3ktdHJ1bmsKKzEwMDUzIGU2NzExNDVhYjUwN2UxZDY4MTc1MmE2NjM4Mzk4NDc5MjA4MzRhMzEgbGVnYWN5LXRydW5rCisxMDA1NCAyYTA1NmQxOTNkZDM3YTdiZDQ5MTUwMjIzNzMyZTQ1OTAxZDE4MWI3IGxlZ2FjeS10cnVuaworMTAwNTUgODI3YWVhNWY1NjIxOTBkMDUwMTM1OGUyZmI0MjhkMzQzNTAzNDYyOSBsZWdhY3ktdHJ1bmsKKzEwMDU2IDIwNDNjNjlmZjFkNDU1ZDgzOTJiYzY0ZjViYjY4MWVlZjIzMWU1MzQgbGVnYWN5LXRydW5rCisxMDA1NyA0MmEyMTgwNmIzZDJmZWU1YWM1ZjQ2YWM5NTY4YTc5Y2ZmNGIyNGI2IGxlZ2FjeS10cnVuaworMTAwNTggZDVmODk1NjdiNWE5ZjY3ZDBiMzIzMDVhMzE3NTJjN2JlMzYxZDJhNSBsZWdhY3ktdHJ1bmsKKzEwMDU5IDBmNTY1YzdmZTRiYmZlOWI0N2NlOWE1ZDU5MjE1NzFiMmY2ODM3NjAgbGVnYWN5LXRydW5rCisxMDA2MCAwYTRiNDUzMzhhYzI4NTI1NmRkYmJlMjMyMzVmOWE0ZTAyMmM1NmVmIGxlZ2FjeS10cnVuaworMTAwNjEgOWRlMGQ1MDQ5Y2ExYjY1Zjc5OGE0NjIxOGU4YmQ0ZjZiNzFhYTMxOSBsZWdhY3ktdHJ1bmsKKzEwMDYyIGQyYjVkOTMyNmYwOTE1NDcwZjZmYmFkOThkYmQyOThjMjZmY2MxZTAgbGVnYWN5LXRydW5rCisxMDA2MyAyZWYwYWNhOTZmMmQzM2E1NWZmNGFlNzVjYmIzMzcyOTc0ZjdjODhmIGxlZ2FjeS10cnVuaworMTAwNjQgMDc2NWI5NThjYzY3YTE5YmUyYWE4Zjc0NmU4ZDZiYTBiZGU1ZmFiYSBsZWdhY3ktdHJ1bmsKKzEwMDY1IGZjNzYwYzYyNjk1MGRlOTc3ODZiNTI3NjM0ZGExODYzN2VkYTQzODkgbGVnYWN5LXRydW5rCisxMDA2NiA0YjYzNGYwMjQzZjk3ZDAzMmMxMGJiZTQ2Y2FkMjNlNjM4MmIyNzBjIGxlZ2FjeS10cnVuaworMTAwNjcgYmQwODg2ZTc4ZjNiN2UyYjRlMTViN2M4Y2NlMzNmYzg2MmYzNDg4OCBsZWdhY3ktdHJ1bmsKKzEwMDY4IGI2ZDZhODM0ZGI0OWFmMTVlNDc2MjcyZGE2ZmM0YjllNzUxMWM4YmUgbGVnYWN5LXRydW5rCisxMDA2OSAyZjMyMzIzODExYzUzNTdjYTljYzZlOGI2N2Y1MDE0ZDljZDc1ZTE4IGxlZ2FjeS10cnVuaworMTAwNzAgMDk0NDA2MDZhYWM1ODhmNDljNjljMDNiYWJlOGQ2N2Y0NGJmMDkxNSBsZWdhY3ktdHJ1bmsKKzEwMDcxIGExOTAyOWNkNzZjNTE1OWVmNTAwYWFjZWM3NDVmMDQ4ZGI3YTlhM2YgbGVnYWN5LXRydW5rCisxMDA3MiA5OWNlZmFhOWM1MDk3MmM1YjNiMjVhNjg1MmI3MDczYThjNTdkMWIwIGxlZ2FjeS10cnVuaworMTAwNzMgYzQ1NmViZTM1MzM3NGRlMWU1NTdmYjUwYWEzMWI3NDRkODdiOTIxYiBsZWdhY3ktdHJ1bmsKKzEwMDc0IGFhYjc2MjIwNTA1ZWZkYzY5MmRmNGEzOTI5ZWQ1YmVhNGMwODAyMmMgbGVnYWN5LXRydW5rCisxMDA3NSAzOWI4NGEzZGNlYWE1MDM0MGIxMDBlY2RkN2FkNzMzZGFlMzViNDhmIGxlZ2FjeS10cnVuaworMTAwNzYgNzJjYWI5NWQzNWU1NzA5ZWU5OTA2YzE0ODVmN2M0MzJmYTY0ZTg1NCBsZWdhY3ktdHJ1bmsKKzEwMDc3IDA5NDE1NjgwYmQ0ZjZjNDgxNDJiOWQwMWFjMjljNTEyNThlYjRjMTkgbGVnYWN5LXRydW5rCisxMDA3OCA2YTQ1MzU5NWU2MTllOTgwNzY1ZTdmN2M3ODQzNGE2OTZiNTg4NzUzIGxlZ2FjeS10cnVuaworMTAwNzkgZWNhZDIzNGM4N2U0NGQ4ZWFjMGMwNDI3OGE3M2FlNjlmYjkxZDQ3NSBsZWdhY3ktdHJ1bmsKKzEwMDgwIDdmNGE1MDNjZTU4YjI2ZjhhYzJiOWYzMjU5YThhMWRkYzg1MTY0YzYgbGVnYWN5LXRydW5rCisxMDA4MSBjMGJmOWI2MGMyOTgwYjIzOGI0ZWE4YjcxZTkyMDJmYmUyMWE5MGM2IGxlZ2FjeS10cnVuaworMTAwODIgYTYzZDU1M2ViNjU4MjkyYjlkMDQ4Y2I5MWRiYTkzZDdiYjYyOWU0MCBsZWdhY3ktdHJ1bmsKKzEwMDgzIDU5NDA3ZDQ0OGI2YWNkOTIwZTNkMWEzNzA0MjhmZWFmMGZiNTA4ZDggbGVnYWN5LXRydW5rCisxMDA4NCBjMGMwMmU5MjY5ZjNjYzk1NjkzNGQwMjc2ZTA4YmNmN2RhZWIwYmVkIGxlZ2FjeS10cnVuaworMTAwODUgMDBhZDMwOWJkNTA4MTBkOGJkZjlmOTBkMTgyZDgxNDAyOWFmY2NjZiBsZWdhY3ktdHJ1bmsKKzEwMDg2IDg5M2EzMjA5NTIyMjU0MWZkZjY5MThjZWQ5YjVmM2UyZGQzMGM5ZGQgbGVnYWN5LXRydW5rCisxMDA4NyBhZmJiZmU4ZjU0OTY3MDRhN2JhMTk2ZDVlYjcwODZhOTE4YzQ3ZmQ4IGxlZ2FjeS10cnVuaworMTAwODggNzBiY2JjZGRhNzRmNjFhNmYzNTE1ZTgyYTQwZWMzMjc3NjU3MWIwOSBsZWdhY3ktdHJ1bmsKKzEwMDg5IGNkZjgwZjc0NThjYTFhNzNkNjBlMmViYmRkY2NmZDMxYzZlZTIwMDQgbGVnYWN5LXRydW5rCisxMDA5MCA0NmYyYzRmYzllMzgxYWJhMjY5OWIyYTg4OGFhYzZiMzFiMmU0N2I5IGxlZ2FjeS10cnVuaworMTAwOTEgMTkyZWE5ODg0ZWI2N2RmY2E2NTRiMDg3MGUwN2U4Mjc5OGFkMDQ4MiBsZWdhY3ktdHJ1bmsKKzEwMDkyIGYzNWIyOWViNTJkMTk3ZTliNmU2OTc1MWFiZTVhZjA1YzgwYjc1YWYgbGVnYWN5LXRydW5rCisxMDA5MyBkZWM2NWZjZWEyMWViOTFlNjQwZjg2MmM2ZjE2M2Y1OWRkNzRiYTgzIGxlZ2FjeS10cnVuaworMTAwOTQgMGUxZTRiNGEwODIxMDI5ZjU5MzU0MzdiN2U3MWQ2ZDYxZWJhNzU0NSBsZWdhY3ktdHJ1bmsKKzEwMDk1IDA2OGE2OTQyZmUxYTEyZWE1NGM5ZjZkNDk4NDJmNDVjZWZhYjlhZDggbGVnYWN5LXRydW5rCisxMDA5NiBhM2E2ZWMyNTk5ODYwNTNhNjVjOGZiZjZjOGU5ODg3YzQxNDgzYTNlIGxlZ2FjeS10cnVuaworMTAwOTcgMjkzYjBjYjM0NzA0MDRjMjlhMjdlNDAwYzViYjgyZmZiNjc1YmU2OSBsZWdhY3ktdHJ1bmsKKzEwMDk4IGVjZTYwNGVkNjIyODE4M2E4YzkxY2M5NDFkMzIwNjE2NjgzMDFiOTAgbGVnYWN5LXRydW5rCisxMDA5OSA5Y2Y2Zjk0MDk1OTY1MDkwYTc1NzUwYTZjYjMyZGZjNjA2YzViNWVmIGxlZ2FjeS10cnVuaworMTAxMDAgMGEyMGNjZTE3MzcxNDk4ZDQ3M2I0NGMwZjAzM2ZhMGVjYTQ0ZTMxOSBsZWdhY3ktdHJ1bmsKKzEwMTAxIGM1NGYxY2NkZTZhOWRlYjYyOTg4NzNiYjZmNDgwZDNhM2M4N2FjN2QgbGVnYWN5LXRydW5rCisxMDEwMiBhNzg3NDI5ZTg0MGFlYjBiYTZjYWNjOWE1YTgwN2NkNGZlNGQ4ZTcwIGxlZ2FjeS10cnVuaworMTAxMDMgMGNlNjU5MDQ3YmJmMzIyN2NiMmExYWE0ODBlYzM2ZmFiZjkyM2Y5NiBsZWdhY3ktdHJ1bmsKKzEwMTA0IDVhYTcwMzdhMWUzZmI1MGQ5MzIyNGQ2YmUwMjFjM2JkYmFjZjI3ZDYgbGVnYWN5LXRydW5rCisxMDEwNSBhMGM3YWEwNTIyZGUxMGQ5ZDdiYzAyM2NmM2FkOGQ5NTQ0MjU1OGNkIGxlZ2FjeS10cnVuaworMTAxMDYgMTY1NDU2MjgyNDEyMGRjZjk5YjhmODI2YjE0ZmZmMGY3N2I0MDI0YyBsZWdhY3ktdHJ1bmsKKzEwMTA3IDc5NjBkYTA1NDljNDc0M2UyOTY0Yjk5NmQ4YzZjNjgyYjJiMDY4NjUgbGVnYWN5LXRydW5rCisxMDEwOCBkYjFlNTE0ZjE2Mjk3MzAyZDQ1OGM5ZGE4NGQ1ZjI0MjQ5MWNmODVjIGxlZ2FjeS10cnVuaworMTAxMDkgNDIyYmJlODg1Y2JmNzFhNjEyZmNmZWNlMGE1ZGJmODM3YjBlYjRjMiBsZWdhY3ktdHJ1bmsKKzEwMTEwIGQyMmNmNjY2ZmEyYzg4YzUwODdhMmRjODJjYWIwMjRiYzdmNGJjNWUgbGVnYWN5LXRydW5rCisxMDExMSA1NTM0NWQ2ZDJjMTQxYzAyZTIwZTJhMjNmYzVmNjE5MzdkZGRjNjRlIGxlZ2FjeS10cnVuaworMTAxMTIgM2QxNTkwYjVlM2RkZmRlZTJiMjc4MjdmNmI0ZGY5M2IyYmRkYmJhNSBsZWdhY3ktdHJ1bmsKKzEwMTEzIGJiZGQyOGQzNmY0Mjk3N2ZiNmY0OTcyYjI0NTE0NjkwMjNkYThlM2QgbGVnYWN5LXRydW5rCisxMDExNCA1NDcyYWI2MTBmZTllNDk5NmY1YjE2NjllZmUwZDI5MjE5ZjY1OGU4IGxlZ2FjeS10cnVuaworMTAxMTUgYzExMjQ0M2NhYmUxMTZlMjI1MWUwMGYzOTg0OGE5Y2U0ZDdlZjQ0YyBsZWdhY3ktdHJ1bmsKKzEwMTE2IDFjMGY1OGI3NjA4MWE4NzAyNzA5Zjk0MDFkZGNhMzIzZDVkNmI0NGIgbGVnYWN5LXRydW5rCisxMDExNyBjNjM4N2UyNDJiNzgwYWZjNjg4YzA2Y2Y3Y2Q5MzYwMzQzOTJjNTQ5IGxlZ2FjeS10cnVuaworMTAxMTggMDk1MDEyNzE4NWVhYjY0ZDY5YjgwZTA4YTBmMzRkYjJmZWIzZTY0YSBsZWdhY3ktdHJ1bmsKKzEwMTE5IDJiYmVmZWMxNjU0MjA0YmE1YWNjN2E5OThiYjg4NWE5Y2Y0MjBkNjAgbGVnYWN5LXRydW5rCisxMDEyMCBmNzc5MTYxN2MyYjI1ZDk2ZDdlYmQ1NDRlMzNhZjQ4YzE4MmQwZWZlIGxlZ2FjeS10cnVuaworMTAxMjEgYjk1ZTUyM2RjZTZjY2UxMGIxODY3MjA5NWEzN2JjYmY5NzU0NmUwOCBsZWdhY3ktdHJ1bmsKKzEwMTIyIGQ4ZDg4NDQ3ZjNjMTMxNGM3MjI2YTY0ZjhhYzIzNGYzYzYzNDdiYzcgbGVnYWN5LXRydW5rCisxMDEyMyA3YWQ1MjJhNGM3NTNhMTA0YTFkYzRmNzE1OWQ1MWI1YTVmNjU3NWE2IGxlZ2FjeS10cnVuaworMTAxMjQgZDkyZjEwYzQ1MWExMzhkYTQzNDUxYWYzZTU1NWMwN2E0OGFhODRmNSBsZWdhY3ktdHJ1bmsKKzEwMTI1IGRlZTU2MDI1ZDM5MGI0MWYzZDBmYjUwY2Q4ODI5MWI4MDFjMjYyNGEgbGVnYWN5LXRydW5rCisxMDEyNiAwMmM2NjQyOGYwNDg0MWRmNzIzNzY3NWFkNTJkZDE2YzA4ZTU0NTY4IGxlZ2FjeS10cnVuaworMTAxMjcgOTMyZGQ2YjkwZTEzYTc5MjMwZmI1OGFmNTA1YTg0YTk1Mjc4ZjgyYyBsZWdhY3ktdHJ1bmsKKzEwMTI4IGVhNjg2MTlmYjU2ZDRkNTQxZDNhNmE0NzhlMGRkMjUwOGI0Zjg2NDYgbGVnYWN5LXRydW5rCisxMDEyOSA5NTUyZDRiM2Q5Yjc4MTQyNWUzOGIyZDgwZGMyZDQ0ZDI3OTY5ZTU0IGxlZ2FjeS10cnVuaworMTAxMzAgZDY0ZGJkMWNkMzJlYjQzNzkxODE2MDU3MjQwNmRlMDVhMzU1OWI2NyBsZWdhY3ktdHJ1bmsKKzEwMTMxIGI4Njc3MWIwZDdmOTE4N2NiMTIxYWE5NTU1OWRmOGRlMjFiZjZjMjYgbGVnYWN5LXRydW5rCisxMDEzMyA3NWQwMDQ4Yzg2NDNkYjVlNGI2ZTI1MjYxZmEwNTRjNGFlOTg4NGVkIGxlZ2FjeS10cnVuaworMTAxMzQgNzNlZWJkYWNmYjc3NjIzZjgzMDVjZDU4MDRjZGZhMTViZGI2ZmFjNSBsZWdhY3ktdHJ1bmsKKzEwMTM1IDZiM2QzYTI4NTgxZjRjMGZkZDRlZWNhMWFkYzc4NWU3OTA4OGM0MDQgbGVnYWN5LXRydW5rCisxMDEzNiBmMDE3YzQ4NThiYThjMzZhYmY4MTllN2I3MTRmNGM4ZWEwMDhmN2Q0IGxlZ2FjeS10cnVuaworMTAxMzcgZjc1ZmY4ZDQ0MzRkODdiNTM1M2I2ZWViNGM2ZjBiMGFiNDQ4MzY0ZiBsZWdhY3ktdHJ1bmsKKzEwMTM4IDg2OTM3M2ZhMGJmOGI4NjRkNGNiNzlkZjdkMmEzNzE5MjU2YTUwZjUgbGVnYWN5LXRydW5rCisxMDEzOSBmMDNlNjY1ZDlmNzI4ODlkYmRjZmE2MmM0MDgyZjA3NGUyNTVkNDdjIGxlZ2FjeS10cnVuaworMTAxNDAgNDdkZGViMDc5NTc1NDZiMzIwNzMyMDZkZmMyNzY2MzVlMDQ1ZjQyOSBsZWdhY3ktdHJ1bmsKKzEwMTQxIGVhMmQzMjE3ZDBjNzIxMzgxZTA5MWI2MDM0MDY5OGMzNmRmOWY0MDAgbGVnYWN5LXRydW5rCisxMDE0MiBhY2QzOTNhOTNlZDA0NGE1MjU1OGUxMWEyNTY3M2I2YTc4ZDIwZThkIGxlZ2FjeS10cnVuaworMTAxNDMgZjI4NTVkMmFjYmQzOTk0NGYzOTI0YmYyNjIzOWM4NDgzNTU1MzZiYiBsZWdhY3ktdHJ1bmsKKzEwMTQ0IGFiYWU2OGFmMzM0ZjY1MmEzMjRhNGY5Zjk0NGI4ZmRhNDg4N2IxYTQgbGVnYWN5LXRydW5rCisxMDE0NSBjOTM5NGFlYWFjNmFkYzI3Y2ZkMmIzNjU3YWExYjgyMzkzODhhNjhiIGxlZ2FjeS10cnVuaworMTAxNDYgMzVmMjliN2RhY2Y1MThjNTJhYjRiNjc1ODZmM2M3YzAyNmY5NmNiMyBsZWdhY3ktdHJ1bmsKKzEwMTQ3IGFkMzQ2NzFjZDRjOTYyOWU0NmZkZjAyNDYxYTJhYzZhMzRmMTI1ZTMgbGVnYWN5LXRydW5rCisxMDE0OCAxZjhjOGUwYmI1ZWY2MDBkNTdiZTM2N2JhNjI1OTMzNjk5YzA2OWIzIGxlZ2FjeS10cnVuaworMTAxNDkgOGU2YTU4MDE5ODg3M2U2MGEwYjAzMGRlZWMxMGI0MjEwNmU4ODJjNiBsZWdhY3ktdHJ1bmsKKzEwMTUwIDBjZjJmZmFmNGJkN2M1MGVkYmI0NTRlMjQ4ODMyOTAwOTE2OTNmNGUgbGVnYWN5LXRydW5rCisxMDE1MSAxZmI4NjhmMjU0NTlmZTM2ZTIzMDQ4MDY0OGJiOWJiNzc4ZGI1YWIxIGxlZ2FjeS10cnVuaworMTAxNTIgNTI4ZTJiOTRlOGI5ODczYTc2M2QyMzdkYjg3OTY3YzRkNmVlOTVkYyBsZWdhY3ktdHJ1bmsKKzEwMTUzIDM1N2I3N2UzNDVmMzY1NjBmMmViNjg1ZTg0ZjE5YzUxN2I0ZWM4MDYgbGVnYWN5LXRydW5rCisxMDE1NSA3MTIyZmY0YzRhYmU2OWNhMmZhMzJlMzBhNDUxYTc5OWJhNTlhNzlmIGxlZ2FjeS10cnVuaworMTAxNTYgYmRjZjcwOGFlNGRhZThjYzk4N2FiNTA2MzJmZTIxNzkwMjkyMjY1NSBsZWdhY3ktdHJ1bmsKKzEwMTU3IDcyZjJhYmFjZjE1MWU0MTg0OGVlOTE4YTI1MzU5YWIyNDJjNjJlMTUgbGVnYWN5LXRydW5rCisxMDE1OCA0MDMwMDU5Y2Y5N2MxMzQxMGEzMGE1ZmM3NWU2Mzg4YmMzM2IwYmQ1IGxlZ2FjeS10cnVuaworMTAxNTkgYTYxMDE4YTJhNTAyYTQyZmQ5NGEzOTQzNjczMDQwYzc5NzkyZTcwNiBsZWdhY3ktdHJ1bmsKKzEwMTYwIDJjOWMyNDg1ODFhMjAyM2RlYzJhMTQ1Y2JhODgwYjIyNzVlZjNkZGEgbGVnYWN5LXRydW5rCisxMDE2MSBlMWU3Njc2NmQ4Y2FlMTU2MDIwODAyMzYwZWVkNTYxNWY4ZDhhNTMyIGxlZ2FjeS10cnVuaworMTAxNjIgNTMzNGVlZjE5NzRjMDU1Y2U5MWZkNTA5MGFkMDIzNjViM2MzNjhjNyBsZWdhY3ktdHJ1bmsKKzEwMTYzIDZiZjc0MjY0YjljMGMzMTU0NWY3MTc3NTVlMjc3YTUzYTIwNzZiOTQgbGVnYWN5LXRydW5rCisxMDE2NCBmMGQzM2ZkYjM5MjE5M2Y3ZWJhZTdhODMxOGYxOTllNWQ3NDI1MmE2IGxlZ2FjeS10cnVuaworMTAxNjUgYWZkY2JlZjE3ZWMwZmQwNjk0MzUyOTE0NjU3MTg1ZjQyZDY3OWY1YyBsZWdhY3ktdHJ1bmsKKzEwMTY2IDQ4Mzk3MDA2MjkxNTExNWFhYzA0OGZlNzNkZDQzZjE3NzlhZGRjNTQgbGVnYWN5LXRydW5rCisxMDE2NyBjMmUxZGIxZTFiYjhmYmQxY2FiZTE0ODM1ZjY2OTZlOTY4OTAyODRjIGxlZ2FjeS10cnVuaworMTAxNjggMDRkNzM5Nzk3MGMyMDY3YTdmZTRlNWI1Mzc4NjA3ZDM1ZDdhNzc3ZCBsZWdhY3ktdHJ1bmsKKzEwMTY5IDU1NGYyYjg3OWZiYjExY2IyMGYyZjA5N2NhZDNjM2M4MTMwZTZkMDUgbGVnYWN5LXRydW5rCisxMDE3MCBmOTI0NzI3Y2QwMGI2YWQ5OWE2YWY1ZTU5ZjA4MmQ2MTcxNTlmYzAxIGxlZ2FjeS10cnVuaworMTAxNzEgOWJmODFkOTNiOTk1YjRjMTVhNTZlZDkyZDZkMjc5ZThjZjJhZDIyMSBsZWdhY3ktdHJ1bmsKKzEwMTcyIDU3YTQyMTgzODk3ZGNhODUyNTIyN2U4MGEyM2U4ZmMxOTFhZTlkZDUgbGVnYWN5LXRydW5rCisxMDE3MyBmZmNkY2Y5ZmYwZWJjNjZhYTc4MjExMzRkNWFmNmUwMDZlMTBlMDk4IGxlZ2FjeS10cnVuaworMTAxNzQgNWUzYzlkNTMwYmMxZDNiYjQwMmQ0ZjYyZTcyMDFlZTdlMDkwYTQxZiBsZWdhY3ktdHJ1bmsKKzEwMTc1IDFjZWQwMzY3MTU3NDllZDg4MDdjYzQ3ZDM1YTg1NDg4OTMwZWMzZDQgbGVnYWN5LXRydW5rCisxMDE3NiBkMjNiZmUwNjE3NWVlZTdhOWQ2M2NiNjYzYzYzYTg0N2Q3YjYyYzNhIGxlZ2FjeS10cnVuaworMTAxNzcgZTQwZjJhNmU1MjZkZDJkYzBkMzc1YzQ5NmIwZTk5YTg0M2I2YWM3NiBsZWdhY3ktdHJ1bmsKKzEwMTc4IGFiZTdmMWY0NzY4YjAxYzBmZWViNDkwOWE1MmNiNGRjOWRkZmE1Y2EgbGVnYWN5LXRydW5rCisxMDE3OSA5NmI3YzEzMjNkMzBhZWM5YzU5MzRiYmM3ZmY5ZDhmMmU2ZmU4ZjhmIGxlZ2FjeS10cnVuaworMTAxODAgYWM4Nzc5Njg1NjJjY2RkMWNiN2M2OTkxODRhZDU3NWM1M2E1N2MzNiBsZWdhY3ktdHJ1bmsKKzEwMTgxIDJjYzRiYzBjZDAzNjc1OGVkMDA1ZjJkZGQ3Mzk3YzRiZDM0N2RiNTIgbGVnYWN5LXRydW5rCisxMDE4MiA0YjgyOWU2YzBkYzU1NWE1MDBhYzY5MzBlYTJkMDM2ZTM5NjcxMjk3IGxlZ2FjeS10cnVuaworMTAxODMgMmNkMTQ2ZTJhM2EwZGIyMDY2MzViMTE5OTUyNWRiMWQ3YmEyMzA5ZiBsZWdhY3ktdHJ1bmsKKzEwMTg0IGM5ZDU0NjgwOWU0ZjhlMzcwYTUyYmNmZTA2ODUxNmQyNTE1MDc4MjMgbGVnYWN5LXRydW5rCisxMDE4NSBhMDAzZTE0ZmVkODc3MjM5MzI1NDlmMWMyYzNiNGFlYzBlMWQxZTk3IGxlZ2FjeS10cnVuaworMTAxODYgNTVlM2Y4OTFkYmI1ZDdkZjJjZjkyYzI5YWJjYjdmZDY1YjBhYTU2NCBsZWdhY3ktdHJ1bmsKKzEwMTg3IDIzNjE0NjUwZTI5YjFkZWVlY2MyZjdlMTg5YjZlOGU0ODQyODVmNmUgbGVnYWN5LXRydW5rCisxMDE4OCA0OTkxYWFhYjE3YmRlZjU1MTJlYmUzZjE0YmVkYzA0NjJiZjlkNGRkIGxlZ2FjeS10cnVuaworMTAxODkgYWJiODAyYzIxNmFkMjQzNjY1MWFjNmEyY2EzMTIzNTQxNmU4N2IzNCBsZWdhY3ktdHJ1bmsKKzEwMTkwIDcwNmU0Yjk1NDg2MjQ4YTdmOTUxNWU3YWJkMWJjMDc0YjZhMzcxMWMgbGVnYWN5LXRydW5rCisxMDE5MSA1NmRjZmMyNzcxMGFiNmVmM2IzZTYyOTllNTVmZDk5OTY4OGUxYWU2IGxlZ2FjeS10cnVuaworMTAxOTIgMGNiYzlkZjg4MmI2YmRkZjRkYTQ1MTVlOWE0ZTc5ZmEyOGM5NGQ0MSBsZWdhY3ktdHJ1bmsKKzEwMTkzIDI0ZmY2OWFkNGRhMjIzOWZlMmRmNmZiNDlmYmY4NWZiZTk3OWMzNTcgbGVnYWN5LXRydW5rCisxMDE5NCA4ZGE3MWM1MTU3MTZhZGNkNjNjYTc0OGRiMTQ4NGQ5NTU4MDgzNzE4IGxlZ2FjeS10cnVuaworMTAxOTUgMzg4YjA5N2JkZGI5NTUxYWM3NjhjMWI5NzZiMGVkOTA3YTUyNDRiYiBsZWdhY3ktdHJ1bmsKKzEwMTk2IDkyNzEzNDBjN2UwY2M5ODk0MDliOGU3OTQzMWVmNjIwMDAzNDAxYTMgbGVnYWN5LXRydW5rCisxMDE5NyA5OTVhZWEwOTI5MTczM2E2NTgyZDM4N2M5YWFkMjc3NzQzODIyZWI1IGxlZ2FjeS10cnVuaworMTAxOTggZjgzNDI1Y2M3ZTk2NzVlMTg0MDgxNTUzYWQzYmQwYjVjMjYwZTBhYyBsZWdhY3ktdHJ1bmsKKzEwMTk5IGQyMWRjNTljODZkNzRkMGIwMWI0MGFiZDk3NjczZTUwN2Y4MzAyYzkgbGVnYWN5LXRydW5rCisxMDIwMCA1YzdiY2UwNTNkMDM4ODZlZmQ5MmZlNTVlNzY1ZWRiYWRhMTQ3ZDVmIGxlZ2FjeS10cnVuaworMTAyMDEgZjA5M2ZjZmQ1NjI1ZTFkYjk0OGM0MjVlNmNiMjc2YmM1ODEwMWU2NSBsZWdhY3ktdHJ1bmsKKzEwMjAyIDY3MzE4ZDNmYTZkY2Q2NGEzOWUzMGRlMDlmZWJkNTFlNDllMDMxMWQgbGVnYWN5LXRydW5rCisxMDIwMyBkMTAzYzAxODBiMmRlMDZlNTVlNDRkMTA3NTk3Y2M0MTU3NmRjYTdkIGxlZ2FjeS10cnVuaworMTAyMDQgMWJiOTQzY2QyYzIzZGM3ZDMzZmE3NjA2NTQyNGZhMjA2OTZlMWMxZiBsZWdhY3ktdHJ1bmsKKzEwMjA1IDY2MzM2N2NhMTNmODE2NDAxZmNmZjhhMmJiMmY0MDI1YzlmYjlhOGUgbGVnYWN5LXRydW5rCisxMDIwNiAwOTU2MzZiOGZhYjdlODExZTc3MjdjMmRlZjkwMDcxZmJmZWQyMzcxIGxlZ2FjeS10cnVuaworMTAyMDcgY2IyNTY3OTgzNDdlYjk1YzYxOTJjNmNkYTgxNjFiMTcwNzQwZjAyYiBsZWdhY3ktdHJ1bmsKKzEwMjA4IDUyZGFhNzBiYjA4NDkzNDUyMDUzN2I1ZjlhZTIyZDFhNGIxMzUzYzMgbGVnYWN5LXRydW5rCisxMDIwOSA4OTU4MmZhMTgyNGZiYTk5NTU3YjAyZTljN2RmMDE2MGExOTQ0MDJiIGxlZ2FjeS10cnVuaworMTAyMTAgYzEwOWQ1Y2FkMTAwNzU2ZjUwNTk1OTYxMWMwYjRmNDRlODNjNTEyYSBsZWdhY3ktdHJ1bmsKKzEwMjExIDljMzdlZDg4NjhiOWVmYmJjOTY4ZjllYTU0ZjhkMmUyMzJmMjA0NzQgbGVnYWN5LXRydW5rCisxMDIxMiBiOGUxZTEwNTU2NDlkNjM3Nzg1NmZkNjIzNjRhOWEwY2I1YTkxNTBjIGxlZ2FjeS10cnVuaworMTAyMTMgMzBlMzMxNDk2OTMwYjViYWE5NTNiY2ZhMmExMDE2MjU0ZmY1OGQ0YiBsZWdhY3ktdHJ1bmsKKzEwMjE0IDcyNWIzNzBlODUzZjBlMWYwY2ZhZjM1NTEwNzA3YTFhOTYzNDQ0MmEgbGVnYWN5LXRydW5rCisxMDIxNSA3YTlhZmFiYTg4ZDg0MmNjMzllNmI5MGE3YzA2Njg4Mzg1ZjAxNjI1IGxlZ2FjeS10cnVuaworMTAyMTYgZWQzMjAwMDFjMjlhODc3MWU3MDVmMjQyMDlhMDZkZTU4MzY5OWUxMCBsZWdhY3ktdHJ1bmsKKzEwMjE3IDVkN2U0ZDIwYzg5ZWRkOTk4YjgwYjA1MGM3ZDMxMWQzNTA3MjljZmIgbGVnYWN5LXRydW5rCisxMDIxOCBiYmZkOTQ2YjBiMzhjOGYxNmU1ZTg3YzNlMDY5YTk1NDA5NTI3NGRlIGxlZ2FjeS10cnVuaworMTAyMTkgMTA5MWJhMmJhZWE0YTI5Y2E3OTdiMzMxMjY2NGI3OGUyZDM0Y2VlNCBsZWdhY3ktdHJ1bmsKKzEwMjIwIDQyM2JlN2NkMDQ3OTUyMmIwYzNjNWNiNWZlZGYzY2QxZDM2Nzk4OTMgbGVnYWN5LXRydW5rCisxMDIyMSBlMjkwMjkwMjk0MTRiMmE5YzVlNjgwYzU1YzY2NWIyNzg1ZjY1ZDEyIGxlZ2FjeS10cnVuaworMTAyMjIgNWJmNjZhYjRkZmI2ZjY5YzUyMTNiMTUzYzdiNjI5NmI2ZmY2MDIxMiBsZWdhY3ktdHJ1bmsKKzEwMjIzIDI2OWEzMjdkNjMwNWYyN2Q1MGZmNDcxZDI4MDMzZWFmNWI4MjczODYgbGVnYWN5LXRydW5rCisxMDIyNSBjNDk4NDUxYzVmNTY0MTYzYzI0MTgzZTdlNzk5NjhlZDBiMWE4ZjZjIGxlZ2FjeS10cnVuaworMTAyMjYgNDVhM2RhYmYwZmE4M2M5MDJlZjEzYzYwNDk5NmNhZTFhMjRmZWIxZSBsZWdhY3ktdHJ1bmsKKzEwMjI3IDc5MmJmZDQ3M2Y1MTY4OGRkMjRmYjkzNDJkZjAyMDMwYmRjZDM4M2UgbGVnYWN5LXRydW5rCisxMDIyOCBhZWRkMmQwZGNiMzE1NDNiYzUzZTgyYzZjYzA2ZmNmNjAyY2U5Njk0IGxlZ2FjeS10cnVuaworMTAyMjkgYTczZWY3MjBmYjU2NjM2ZjczNjBjODdlYjRjY2Y2NDQ4YjQ3YWM4ZSBsZWdhY3ktdHJ1bmsKKzEwMjMwIDNjMDhmYjllMTM0ZjgyY2M4ODg4ZWJmM2FlOWQ0NGViZTliNzZmYjAgbGVnYWN5LXRydW5rCisxMDIzMSA2OTcyZTUwZjM0ODNlNTEzNTI4NmMwM2QzYzY5MDQ4MmMzNjZkMDM5IGxlZ2FjeS10cnVuaworMTAyMzIgMGM4MzdkYWI1YjllYWM1ZGU0ODU4MTcyMDdkMWUwNmFhNzMxYmRmNSBsZWdhY3ktdHJ1bmsKKzEwMjMzIGI0YjBlNGU3NTljNTgxZjA4MTVkZWVkNWM2MGY0OWM3NGIzOGU3OWIgbGVnYWN5LXRydW5rCisxMDIzNCA4ZWYwNjc1NTlkNWEzODJmNmI3MDBlYzUwYTcwNjRhNmZhMGI3Nzk3IGxlZ2FjeS10cnVuaworMTAyMzUgMDMzZGJlOTA5MjE4MTU0MWRhNWExYTU4N2NhZGQzYjRiZjRiOTc5MyBsZWdhY3ktdHJ1bmsKKzEwMjM2IGZiNGI0ZDA2OWNjN2NkYjRiNjY1MzJlYjQ5ZDc3YWQwNmQyN2JkZmYgbGVnYWN5LXRydW5rCisxMDIzNyBhNDE5MzM0ZjNiMzk3YjY0ZWEwYmJmODQ4MjgzNjEwZDQxMGZjYzY2IGxlZ2FjeS10cnVuaworMTAyMzggNzhjMjdlMzFhYzdjOTgwNmVjMzBjYzQ4NDhiM2ZmN2Q0MjFmMWE5NCBsZWdhY3ktdHJ1bmsKKzEwMjM5IGMzMTI1N2I5MjQ0N2VjZTVkNzQ3NjhkYThiYTIyZTNhYzg2ZGRmNTAgbGVnYWN5LXRydW5rCisxMDI0MCBhNWUyYmViZTE3OWFlNzZmYjZhMmI3MTI3M2RlOTkyNzY3OGQyNjM3IGxlZ2FjeS10cnVuaworMTAyNDEgNmJmYTY1MGYzMTFkZjQ2ZTY3MjI5NTFmZjU2YmFjYTNiM2I4MjY5MiBsZWdhY3ktdHJ1bmsKKzEwMjQyIDQ1OGEzM2FiYjM5YzFhZWEzYWQ0OTYwMDEyMGQ5NDgyNDFlZDU3YzYgbGVnYWN5LXRydW5rCisxMDI0MyBhY2YzYjk1MGNiNDM3ZDFiN2VlZGQxMTYxOGZlM2I0MzY4MjA3ZmUxIGxlZ2FjeS10cnVuaworMTAyNDQgOWMwMmUwYTI2NTExYTRmZjJjODUzYjA3MjRmMGY4Yjk1YzEyMDVlNyBsZWdhY3ktdHJ1bmsKKzEwMjQ1IDlkMGRjMTE3NzVhNGU0N2FlNTRiOTc0NmY1NzIyZTQ5ZTc5N2UwNmUgbGVnYWN5LXRydW5rCisxMDI0NiA4Yjc4NjUzYmFmMWZkMTIyYjllNzliZDk4YmE4ZTM3NGIxOTYyOGE2IGxlZ2FjeS10cnVuaworMTAyNDcgNTg3ZDAxNzhmOGQzNjZmMDA5YzNjZjJlNGU2ZjRkNDZjOTM3Zjc3MiBsZWdhY3ktdHJ1bmsKKzEwMjQ4IDdmZDc5ZGRmYmI4Yjg4NGVmOTY0Y2E1YTA2NzBjMDZkYmQ2Y2NkZWIgbGVnYWN5LXRydW5rCisxMDI0OSA4ZjE3NzkzM2M0MWZhYjNjMzE5ZjU3YjhmYTQ3MzAyZTU1MGM3ZjQ4IGxlZ2FjeS10cnVuaworMTAyNTAgNDY5ZjY2OTE4ZGQ2Y2JiZTUyZmY2ZGU0NWQyODg2MTkyYTU4ZDczZiBsZWdhY3ktdHJ1bmsKKzEwMjUxIDlmNDZlNzBlYmZiYjJkMzY1YTY2NmNjZDc4YjUzOGNjNGFlYjE4ZjMgbGVnYWN5LXRydW5rCisxMDI1MiA3MDdkMDYyY2FlN2JmZjFlZDc4NTg1MTljMmI2YmM2NTVjZDMwZTFjIGxlZ2FjeS10cnVuaworMTAyNTMgOTE3MjkzMWZkODBhNDhhYzg3MTBhZGIxOGMwMjczZjYwZjczNGE3YyBsZWdhY3ktdHJ1bmsKKzEwMjU0IDhhNTY3NDEyYjIxYmJhZWY3M2FiZmU2MzU0NDFmNWQ0NmEwOThlZDcgbGVnYWN5LXRydW5rCisxMDI1NSA1ZmI2OWZmMjRjZGRjMTNjYjc0ZTJlN2ZiYWJhNWJkNmE4MmQyNDE0IGxlZ2FjeS10cnVuaworMTAyNTYgNTdmMTFhYjRlMjkyMWIxNDIwMjIwM2M0OTc3YzRiZTAxZTZlM2VlMSBsZWdhY3ktdHJ1bmsKKzEwMjU3IGRiOTRiMTViZDY0MDBiZTUzMGY2YzNmOTY3MjAwOWJjZTdiZDE1NGYgbGVnYWN5LXRydW5rCisxMDI1OCA1ZTIxNTg5NGM1NTVhMjcyODlhMGFkYzA5MmY3OTEwMzU0ZWFjODgxIGxlZ2FjeS10cnVuaworMTAyNTkgYjE3ZDIwMGVkZjYyN2JkZjUxZDUzYTg1ZTZhOWVkNWI5N2Y2ODIzMSBsZWdhY3ktdHJ1bmsKKzEwMjYwIDFjNDIwNjk5ZDU4YTNiYTJlMjJjNjY1N2Q0M2QxZjQ5OWRlZDk3YzEgbGVnYWN5LXRydW5rCisxMDI2MSAzZTExOThkMjBmOWNlMTMzNzU3YzQ0MzFlZjU4YjI3ZGZlOGNhNzg4IGxlZ2FjeS10cnVuaworMTAyNjIgMzZiM2I2ODc2YTU4MGViMGRmY2Y0MmM5OGQzNDEzOThmMWE4NWMyNSBsZWdhY3ktdHJ1bmsKKzEwMjYzIDdmYzMyYTY2MjU1YTc3YWNmNTBkMWVhNGVkMzU4NjJjZDE1MzA1MzIgbGVnYWN5LXRydW5rCisxMDI2NCBjZmU2ZjU4ZGQwZDhlZjkyMGUxYWQxOGU4Y2FiOWI0MWI2ZWQ5YWMwIGxlZ2FjeS10cnVuaworMTAyNjUgODBiMjY3NDgzODI4ZTU4MjAzZDIxM2EyZmI4ZTBiZTc1OTlmODAxMiBsZWdhY3ktdHJ1bmsKKzEwMjY2IDA1NjkyYzY2MTQzNGExNWQ5NWM4MTk0NDJlOTJmOTg3MDViODRmNWUgbGVnYWN5LXRydW5rCisxMDI2NyA2YWRmOTE3ZWU3NzMwZDczOWQwNjE2MGZmNmVkYmViZWE2NDFjMDBhIGxlZ2FjeS10cnVuaworMTAyNjggNDRmYzdmZmRmYzc3ZmJlYTdjMzNlNzhhZDQ4YjI2ODk4ZmFkYzE4NyBsZWdhY3ktdHJ1bmsKKzEwMjY5IGIxYzA5MTUwMTQxMTBmYmZjNmFkOWZmOGM2MjM2YWI4MDk5ODBiYWUgbGVnYWN5LXRydW5rCisxMDI3MCA4OGM1MzkyMWJmODgwOWU2NmM1ODA3ZGMyMThhMmRjYzE3Y2RlZDIxIGxlZ2FjeS10cnVuaworMTAyNzEgYjllMzExMjBhMGM0ZWFlOWU1YzZlNjU1MTY0MTAyZTMzOWY2ZjYwYiBsZWdhY3ktdHJ1bmsKKzEwMjcyIDIzZDA0OTAwMjU2ODk1MTdhYjE2ZDk2OGIyOWM3OGI2ZTQ3ODYyYjggbGVnYWN5LXRydW5rCisxMDI3MyA4ZDQxNDgyMTNjYzAyYTZkYzE5MzVmOWM4ZWU4YjU4ZjEyNGQwZWMwIGxlZ2FjeS10cnVuaworMTAyNzQgMDc0NTMxNDBhMDk1NTAwODhkMWRkYjdhNzU3ZjFkY2U4ODRkMGRmYSBsZWdhY3ktdHJ1bmsKKzEwMjc1IDM3NWE5MDEwNjVjMWI4NzdhNTg3OTdhZjJhNWQzNjhkMzAwNWUwNDEgbGVnYWN5LXRydW5rCisxMDI3NiA0MzNjMzgxYzM3MDBlM2IwMTY1OTg3MDZmNTJjOWM1NmJlNGQ3M2JiIGxlZ2FjeS10cnVuaworMTAyNzcgNjhlMmIwZGJiZWM4ZWI2MjBhMmI5YjBkZmVkNDQxYzQzZDIwMDdlZiBsZWdhY3ktdHJ1bmsKKzEwMjc4IDA2OGE3NzYyZTI4NjEzMTZjYmVkNjU5NTZlMzZkZmU5ZDIwYjdkNjggbGVnYWN5LXRydW5rCisxMDI3OSA0OWYxMWViNGViOWEzMzIyMzNhYWY3OWMwMzdmNGE3NTE5N2U1ODUwIGxlZ2FjeS10cnVuaworMTAyODAgY2Y3MjM5OTFkNzVmYWQxNmFiMmYzZThkMTA5ZWMzNTIwMTRmM2NjNCBsZWdhY3ktdHJ1bmsKKzEwMjgxIGNmNDIwMWVmNzNhYTJjNmFiNGY0OWViYWE3Mjk5OWFjNTE0ZTExYjcgbGVnYWN5LXRydW5rCisxMDI4MiAwNDc5OTY2NjZjODE4OThiMDM0MTg4YTJjMzBjMWI0ZmI1Y2NmYTRhIGxlZ2FjeS10cnVuaworMTAyODMgZGZmZTFlNDcwZTZjZjNjZjExNzI0OGI3MWVlMzRhY2ZjNTc3MGMyNCBsZWdhY3ktdHJ1bmsKKzEwMjg0IDA2NjBmMTdhZGU2MDNjYTJhNGZmZDE4YjM2NjZlMTVjZGNmMmRmNDggbGVnYWN5LXRydW5rCisxMDI4NSA2ZDA0ZThjODE3ZmJlZmE2MGE1ZGU5ZDFjMWU1MTEwMTZkMzVhMDdmIGxlZ2FjeS10cnVuaworMTAyODYgNGM2ZGMwN2YxYjZhNjBjY2JmYzBjMTFlODBjZDE1Y2RjNDIxODMyNiBsZWdhY3ktdHJ1bmsKKzEwMjg3IDgxZjk4MTg4MDEyZTQxOWQwODE5Njg0OTJjY2FiNTM3NGViZGU2M2MgbGVnYWN5LXRydW5rCisxMDI4OCA1ZDE1ZjRmZDZkNjlmZWVlNjMxNDZjNzQxMTRiMGRjYzhhMzg5OGFmIGxlZ2FjeS10cnVuaworMTAyODkgNzBjY2JiY2MxMGNjYWQ0MTg5MTc4MTVkZGMyYzhiMTRkY2UyY2Q5NiBsZWdhY3ktdHJ1bmsKKzEwMjkwIGU1ODBhZmExYzgzMzgwYjI0NDJkZTZmZTA4NWYxMjZjZTBjZmRiYjQgbGVnYWN5LXRydW5rCisxMDI5MSA5OTY3YmUxZjQwMmIxYTA2MTM0OWZlMzM4OGEzMThhYTJjYjI5MWMwIGxlZ2FjeS10cnVuaworMTAyOTIgNDEyZTZhYjAzYzZmZmFkOTkwODMxNzFlYWY2ZTMwMDBkNDEyYzUwYiBsZWdhY3ktdHJ1bmsKKzEwMjkzIGMwNDcwODQ0YzdiYzdjNmU1YjcwODBlOTgzZjRjMjM5NGVlMTYwZDIgbGVnYWN5LXRydW5rCisxMDI5NCA2NDMyY2JhZDgyOGRjOWM4YmYzYTQ1NTRiNTU1YTBjYjJlMzNmNTRkIGxlZ2FjeS10cnVuaworMTAyOTUgYTcyN2FlNmJmZTUwYzU4ODA1NGQwOTYxY2IxYTM2ZDA3ZDkwYjgxNCBsZWdhY3ktdHJ1bmsKKzEwMjk2IGNjNDk0MmYwZWM0Yzk0Y2JjOTdhOWUwYTRhOTQwOTkyZTRmZmE0MjMgbGVnYWN5LXRydW5rCisxMDI5NyA1MTMyMjU4ZGE3OGU4YWY3YmU4OTMzNTg3OTIyYTJjNTE1MDI2ZmVjIGxlZ2FjeS10cnVuaworMTAyOTggNDYxNzM4YWFhNTMzZDJjY2M4YmU5YWQ4NWZiNWE4NTQ1OGUzMmNhNiBsZWdhY3ktdHJ1bmsKKzEwMjk5IGEzNWI1NDE0ZmRkOWJiNmI5NzUxMzM0ZDlmMDZiYmYwMWM0NTgxYjcgbGVnYWN5LXRydW5rCisxMDMwMCBkN2FiYWQ3MGY2ODExNGQ0MjFjNjUxNDRmNDMzN2IyZDdmOTllZWNlIGxlZ2FjeS10cnVuaworMTAzMDEgMjA5MGY4ZjlkNWQyZDQ5NjM1YzYwZDdmMDY5NmYyM2FmNWY0NjI0ZSBsZWdhY3ktdHJ1bmsKKzEwMzAyIGVkODU2ZmNjZjYzOTdmZmU5NDdjYWMwMGY2NzViODM5Y2VhMWEzNmIgbGVnYWN5LXRydW5rCisxMDMwMyBkMWIyMzUwNGJkOTljM2IxNDM5NmM1ZDhkOWQzMDhkOWYwZGYyZDRkIGxlZ2FjeS10cnVuaworMTAzMDQgMDU3NWQ1YTE3MjE4NTZkMjAxYWI2YTI0YTU5OTA5ZDdkZGNkOTU3YSBsZWdhY3ktdHJ1bmsKKzEwMzA1IGI4NWE2NzViNjUwM2U1ODU5Nzk5YTg3YjA4NzA1MDVkOTRmYTI4NDQgbGVnYWN5LXRydW5rCisxMDMwNiAyOWRjNWQxOTI4YmZlMWEyMTRjMDRmNGJjZmE4YWE0MTI1NjM5NWEzIGxlZ2FjeS10cnVuaworMTAzMDcgYjcxZDFiZGQxODdkZWU2Yzk3M2FlY2Y0ZmQ3ZmRiZjUyNjZhODEyYyBsZWdhY3ktdHJ1bmsKKzEwMzA4IDk4NmE3NGMzYTIyY2EwZmE3ZTQzMjRjMDczZTU0MzU5OTk2ZmQ5MzQgbGVnYWN5LXRydW5rCisxMDMwOSA4ZjBlMjljZTU5ZWY0MTc4ZTdjYTE1MDhiZGIyMTE5YmVjZmVlN2MwIGxlZ2FjeS10cnVuaworMTAzMTAgZTJmYjI1Nzg0NTMwNDllMDk0NzcyYWQ2NjEzYWRmMThmNTc2OWU1YSBsZWdhY3ktdHJ1bmsKKzEwMzExIDM0Mjk5ZTA5NmUzNTM5MGEzNDJkYzc4ZDg2YjlmNDM2YTY0OGY2YTcgbGVnYWN5LXRydW5rCisxMDMxMiAxZjhmMjAwMmJmYjlmMDVhNTBhNTdhZWY3OWU0NjJmYjliOGZhNTZjIGxlZ2FjeS10cnVuaworMTAzMTMgZDE0YjcxMjBjNTUxOGQxZWRiZTMzNGM3MmVjZDNmNjRlNWQyZDc2ZSBsZWdhY3ktdHJ1bmsKKzEwMzE0IDY0M2U5NzI4YWE0OTJlODQ2ZTVhOTE2OTI1NjhkMzQwNmM5N2ZlOTQgbGVnYWN5LXRydW5rCisxMDMxNSAxNDdjMTA2N2NhMzNkMTRlYTliNTk1YTljYjczNzM3NmI2ZDlkYzUwIGxlZ2FjeS10cnVuaworMTAzMTYgY2E3MzViODRhOTM5YTVhMzRkMWUwMzI5NDQwZGE1YzkwYmY4YmUxNSBsZWdhY3ktdHJ1bmsKKzEwMzE3IDk4ZjZlZDEzMWI3NWNlZjQzZjg2NzE4NWRiM2Q0NWEzOTYxZjE0MjYgbGVnYWN5LXRydW5rCisxMDMxOCA1NGQ4ZTg1ZDNjMjg3ZGMyNTQwNzdlMWRiNzJhZDA3YTQ4NjJkNDAyIGxlZ2FjeS10cnVuaworMTAzMTkgZmM5NTA0MzNkMTU4ZTU2ZmQxNDVhNTQ3NzI5YWFiMzVkZWMxMWNiNSBsZWdhY3ktdHJ1bmsKKzEwMzIwIGQ0ZjUzMjFiOWQ5ZTg1NmZjMmM2ZjAwOTdhNzIyMzlhMDIxZTRjMmUgbGVnYWN5LXRydW5rCisxMDMyMSBhYWEyMDRhMDVmODQyMzI3MTUxZDI5M2M1MTQwODI5ZTlmZjQ3ZGQwIGxlZ2FjeS10cnVuaworMTAzMjIgY2ExODUwNDgxZTAyYTQxYTMyYjM4ODM2OWIzODllYWQ1NGFkMzQ0NiBsZWdhY3ktdHJ1bmsKKzEwMzIzIDQ5MWUzMDA1ZjU0YjU0Njg2Y2JmMjJmZjc0OTA5MWZlODExNzJiZDggbGVnYWN5LXRydW5rCisxMDMyNCBhYWM1ODVmZTk0NTJmYmRlZmM4NmY0YjA3MDkwYzJiZmM5NGY3YWFlIGxlZ2FjeS10cnVuaworMTAzMjUgNjcwOWEwMmY2NzE4MDM4ZGYxMzJkMWUxYzc1MTE3MWRhY2IwMjk2MiBsZWdhY3ktdHJ1bmsKKzEwMzI2IDk0OWI1OTgyMDE4NWFmOTExYjg3NGQ5MmI5MzY5ODc0NzA3NWMzZTYgbGVnYWN5LXRydW5rCisxMDMyNyA2YzZhNDhiYzU4MTczZTcwNGY1NmNmOGRlYWU4NTg0YmVkODc1ZmVmIGxlZ2FjeS10cnVuaworMTAzMjggM2M0ZjczNmQ1ZTAxMGNjZDYyN2M1MmM1ZGMzYmY1MzQ0ZWRiMzIzMiBsZWdhY3ktdHJ1bmsKKzEwMzI5IDRmYmU2YzljNWQ4MTFmZDRmM2VjY2M0NTY4NWMyN2FjODlkNGE1NzggbGVnYWN5LXRydW5rCisxMDMzMCA5ZDNiNDAxYmFjNmRlMmM3MDkzZGI4NzZkYzYyZmY3NTc1Yzc5YTgxIGxlZ2FjeS10cnVuaworMTAzMzEgZGIxZTQ5ZDUxZmUxMmMyNzU4Zjc5MTJhMGI3ODgwYTk4YTcyOTVhOCBsZWdhY3ktdHJ1bmsKKzEwMzMyIDZlNGVhMGVkYTIyZWNjOWJkMmY4MDNlZDA3OWVjNTFlY2QxNWIyNDEgbGVnYWN5LXRydW5rCisxMDMzMyBmMzRhNjU4ZTdjMTU2NWI2MTZlNGY5MTZjZDMyMzkzMjIzMWFiNmM0IGxlZ2FjeS10cnVuaworMTAzMzQgMjYxYzYzOWI5ODQ3MzI1NDg3NTI1NjBkY2I1NmMwZWYwMzI1NzdhNSBsZWdhY3ktdHJ1bmsKKzEwMzM1IDFmMWY5NDk1MDVhZjA0YTExOGVlZThjNzdiYWFkNzJlNmQxNzUyYmEgbGVnYWN5LXRydW5rCisxMDMzNiBiNzViMmY5ZDNjZTEzZTk2YTY4ZDMwNjhjNWFhNGRjOWMyZGQ3NDU2IGxlZ2FjeS10cnVuaworMTAzMzcgOTU2NzE5ZWE1ZjVhNmRiY2E0ZmZmOTMyZmJhMzY3MGVlMDRmMjAyZSBsZWdhY3ktdHJ1bmsKKzEwMzM4IGI4NDc4NTA0Yjc3OWJiMjc3ZmNkMzhlMmYyY2MwMGM3NjgyYzgzMDAgbGVnYWN5LXRydW5rCisxMDMzOSA4NDJlZDZiYmQwNjYwYTdhYTk1MjUyNTRkZWJjMGFiYTRjNWFjYTE2IGxlZ2FjeS10cnVuaworMTAzNDAgYjBiMzNhMzU3Yzc5ZWQ2NDAxNjJmYjc5ZGI1ZDdiZTQ4YTU0MGFkMyBsZWdhY3ktdHJ1bmsKKzEwMzQxIDllMTBjODYyYWJmYzFhMjgwYjhiYWFjNmVmYWE5Y2UxMzQxODljNTYgbGVnYWN5LXRydW5rCisxMDM0MiBlODVkNmRiN2JmOTc3NTBhNDBiNDRhODkyMjlhYWRhNjk5OWE2YzdhIGxlZ2FjeS10cnVuaworMTAzNDMgYTNhZGIxNmYwODk1ZjBiMjk5Y2I3MTEyNjI3MWE2OTcwZTg0NGFlNSBsZWdhY3ktdHJ1bmsKKzEwMzQ0IGQ3NzNkYjA2MzU1YzA2OThkMWFmZDc1YzcwYzA4M2YwMGRiNmFlOGYgbGVnYWN5LXRydW5rCisxMDM0NSAyMWE3ZTNjMzI0ZGY3ZmFjZTlmYTAwM2NhOTdjMDRjZDNiZWQ0OGQ2IGxlZ2FjeS10cnVuaworMTAzNDYgMTc2Yjk5ZTY5NjViZTkzMjY4NjMxZWFmNWU4YzNmZDQ2M2RkNDBjNiBsZWdhY3ktdHJ1bmsKKzEwMzQ3IGI2OWZhOWQxNDJjYTVhNzhjM2Q2ZmVmZjI0MDA4ODg1Nzk1ZGU0ZTEgbGVnYWN5LXRydW5rCisxMDM0OCBjNzZhZGFmNTEyZDY1NTNhZWJmMWY0MDc1MTc0OThiNDgxOTBkMDUzIGxlZ2FjeS10cnVuaworMTAzNDkgYTYxZmRiOGE0NDllZTFmMDM2M2JiZWMwZTgyOGYwMzJjMGRlNWMwMCBsZWdhY3ktdHJ1bmsKKzEwMzUwIDMxZmE4YTBmZDE3ODcyZTQyZmRhZDc3MDk0ZDIxOTA2NTViMjExMjYgbGVnYWN5LXRydW5rCisxMDM1MSA2YmM0ZjgwNzI1ZDZlMjhkYjRmNmQzMmY4NzU0OTFkODdiMThhNjkwIGxlZ2FjeS10cnVuaworMTAzNTIgZDE1MTgxYTBjZmJhYjg2MjVhMTI4OTJkZjQxZGE0NWE5YmFjMzY2MCBsZWdhY3ktdHJ1bmsKKzEwMzUzIGI1ZWRlMTMzZDkyMTZhZWZkNDI4Yzg1MTNhM2FiZDdlMTA0ZGUxMjMgbGVnYWN5LXRydW5rCisxMDM1NCBkMDdiOTdkMjlhOWUzMmExMmNkMTU4MzlhMzA4ZDRjNWE1ZGY3Y2M0IGxlZ2FjeS10cnVuaworMTAzNTUgMzkyMzg4YzUyZTIxNzE3ZWYyM2UzZTk4MGFjYjBjMDY4Y2VmNWVlYSBsZWdhY3ktdHJ1bmsKKzEwMzU2IDhmNDI1ZjhmNGJlMmRmNWRlMGNiNzdiNDc3NWM2YWYxZmNhNWJiMmEgbGVnYWN5LXRydW5rCisxMDM1NyAwYTg3M2YyYjY0ZjQxODJhM2I4MjA3YzU5N2FiOGZhMjQzYjhmMzY1IGxlZ2FjeS10cnVuaworMTAzNTggOGU1MjIzNjgwYTlkYTRjNjg5ZmJkYjJjYmM0MDUyYThlZWFlMGNiNSBsZWdhY3ktdHJ1bmsKKzEwMzU5IGFjMmQxYzFmMTk3MWYyYTkzZGVkMjE3ZmNjNzU0YTZkZjIwZjhkYWEgbGVnYWN5LXRydW5rCisxMDM2MCA0MjdhOWIxYzlhYmQ4ZTEyMGUyYmYwYmM5ZTdlZDZmN2E2ZjQwMWNkIGxlZ2FjeS10cnVuaworMTAzNjEgYmRlNjlkZmMyMjRmMGU3MzdiODY2ODA2M2RjZDU2YzZmZDFjOGRiMSBsZWdhY3ktdHJ1bmsKKzEwMzYyIDYzNzBmMTU5M2M3MjBiOTJhMTNkZjcyN2I5ZjMxY2Q1ZTJjYmI1ZjMgbGVnYWN5LXRydW5rCisxMDM2MyBiMGZiZTZiNmRjYmYxMWIxYTEwMjEyYzM5NzNhMzc4NDJkNjkyMjI0IGxlZ2FjeS10cnVuaworMTAzNjQgZTgzM2JlZTVkMDVmYjI0ZTc0MDA4MmRjZGQ2M2FhZDhkYjJjMWViNiBsZWdhY3ktdHJ1bmsKKzEwMzY1IGRmYzhkZThmMWVjM2U2OWIyODIzY2ZmZGZkYzYwOTllOGJhZTg3NDkgbGVnYWN5LXRydW5rCisxMDM2NiA0MmQzZjFmNzFjNTZjZmI5OWI5YmVhMDFhY2JkYmRjMGFjMDFjM2EwIGxlZ2FjeS10cnVuaworMTAzNjcgYWU5Nzc4YzRmZmNhZjYzNjhlNmUwZWE4ZWFmZTI4OTUyZjY0Y2YyYiBsZWdhY3ktdHJ1bmsKKzEwMzY4IGVmYmI3ZTU3ZTZmODZmYzBmNjEwMGU0NDg0MjJkODQ1NDI4NGMxOTQgbGVnYWN5LXRydW5rCisxMDM2OSBmOGY2NjNiNDMyYjQzNTZhOGJhZTIwNzBhNjY3YmIwZTg5ZWZmNzM1IGxlZ2FjeS10cnVuaworMTAzNzAgNDFjN2Q1MjQzYmU5MzFmODNmZWQ2MWI2Y2YyMzllZDFlOTk1MzI4NSBsZWdhY3ktdHJ1bmsKKzEwMzcxIDhhMzg5YzhmZTZlZmQyYTM1YmEzMjc5NmRlOWQ3ZjQyMzBlNmViYTkgbGVnYWN5LXRydW5rCisxMDM3MiAzNzIzNGUxYmI3NWZmZGRlYjg1MzFiNTRlNjhmY2M0ZmRlZjk1ZDgwIGxlZ2FjeS10cnVuaworMTAzNzMgZGJkMmRlMjZjOGQyMjVmZmVjMGZhYmZkOWU3OGVhOWRmMDlhZTBlMSBsZWdhY3ktdHJ1bmsKKzEwMzc0IDhjOTM1NDRiOTVlNGIzYzFjMTU2NzQ5ODZmMGI5ZDlhMjcwZDY4YTIgbGVnYWN5LXRydW5rCisxMDM3NSAyNjczODQ4NDM3YzM0ZDRlZDNhMTEwNGI2OGYyNmNjZGVmNGFhZjkzIGxlZ2FjeS10cnVuaworMTAzNzYgZTYwNjZiODEzYTcxNGQxNWU5NmU0MjE3NTMzMmY0OWYzYjBmM2Y5OSBsZWdhY3ktdHJ1bmsKKzEwMzc3IDI5YWIzZjYwMmQwMDIzYjVjMTkzNzMyNmE0NzhiOGRiNTFhMTc4YWUgbGVnYWN5LXRydW5rCisxMDM3OCBkZjYzNmRlZDJlNzAyYmRkZmRmODgyMmFhOGI4YzcyOTY0YWI4NmQ2IGxlZ2FjeS10cnVuaworMTAzNzkgNmEwMjk5ZWJjY2VmOTBkMDNkNGM4MDBmZTNhZTE3NGI1NGM2YTg5YSBsZWdhY3ktdHJ1bmsKKzEwMzgwIDhmM2JiMGIxOGE4MmJjZTQwNzE5Yzk0NGQxMzMwZmE4YjQyY2MxNzIgbGVnYWN5LXRydW5rCisxMDM4MSAxZWZlZTUwMzI1OWU1MWE0OGRkMDE2NjEwM2FmM2M5NTUyNjUwOTZmIGxlZ2FjeS10cnVuaworMTAzODIgOWEyNDZkNzRmY2I3NTJhMTQ2ZDM0YjlmOGExMTkxYzhhOWNiNzBhNiBsZWdhY3ktdHJ1bmsKKzEwMzgzIGExMTA0MjFkODZiNzMxNDAwMGZjMTg5ZmMwZTdjZWFmZTc0YmVmNWYgbGVnYWN5LXRydW5rCisxMDM4NCAxNzM2OGM5MmM3NjlhNTNiYzQzOWMwMzQxMTAxNWU5NTJjNjY0MGJiIGxlZ2FjeS10cnVuaworMTAzODUgM2JkNjY4ZGY2ZWZkYzJkNjM1MTNmOGVmNmVkMDI3OWQ3MGJjOTViNiBsZWdhY3ktdHJ1bmsKKzEwMzg2IDgwYjJhYzYxZmUwMzhhOGJiNjljYjBkMzk0NDA0NDlhNDk5MTc2OTQgbGVnYWN5LXRydW5rCisxMDM4NyA0YjU2NjZkZmY1ZTY3MjQ5NjdhNzUzOWI5MjUxYzY1MTE2Zjg4NWY5IGxlZ2FjeS10cnVuaworMTAzODggM2Y4YjU1NjRmMGM3YzI5ZTEwN2E1NDQxNDU3MzhkYjM4NzAzYjE1YSBsZWdhY3ktdHJ1bmsKKzEwMzg5IDFhMWQzMTQ3YjAyN2M0YjRmZTU3ODc3MjYxOTc2OTI1ZGVmNWNhNWQgbGVnYWN5LXRydW5rCisxMDM5MCA1ZWFmZDNlZGEwYWY0Y2FlZTBiNjIyNTI1MTNmYmJkN2UwNWE3MDYxIGxlZ2FjeS10cnVuaworMTAzOTEgYjcxYTEyNTc3NjRiMDMyNTkyZTYzNzAyNWVjZDY1NzAyNjgzZTkwNiBsZWdhY3ktdHJ1bmsKKzEwMzkyIDMxZjllMjY3NTE5OWUxOTU2MmRkOGYxNzEzYmNiMzJlZmRjNWVhMGEgbGVnYWN5LXRydW5rCisxMDM5MyA1NDE4YzA3MzBmMDA5NjE2MmE1YmRlNWUwMjFkM2RlOTJmMTE0NjdjIGxlZ2FjeS10cnVuaworMTAzOTQgNjRmM2U5ZWJmMjFhY2YzMjY4NDEyNTBlNWJjMTMyMzRmNTMyZjM2MCBsZWdhY3ktdHJ1bmsKKzEwMzk1IDFkYWVjZDY1YTdjNWVmYzllMGNkMTI1YzRjNDhiNmY4ZThhZDhlZjggbGVnYWN5LXRydW5rCisxMDM5NiBiYTliMWI0YWVhYjllZThhYWU1ZTdlYTc4NGJmZGQ2YTAyYmUxNDQzIGxlZ2FjeS10cnVuaworMTAzOTcgMTMxOGE0NzRiYWEwNmRkNjdmYTYxMmVkMWEzYjM3ZWYwNjIyMWY3NiBsZWdhY3ktdHJ1bmsKKzEwMzk4IDA5MDVmODY2NjgwN2YzMzg3NDNhNzZmNTM4MjE4YzIwYzlmZWMzYmEgbGVnYWN5LXRydW5rCisxMDM5OSA1ZmFiNTllYjRmYTVhMWNmNDcxOWY4NWJiYTcwNGQyNGM1Y2E4Mzg3IGxlZ2FjeS10cnVuaworMTA0MDAgNmJjMDUzNWRiZjUyNzc5MmY4ZGRhZmFkZjMzNzdkNDM0NDRkYTA5MiBsZWdhY3ktdHJ1bmsKKzEwNDAxIGRkZTBkZmZiMWEwOGFhZTQxODliYjM2MGUwZDQ5NWRiMjc2NGVlZGEgbGVnYWN5LXRydW5rCisxMDQwMiAwYmRjZWRjZDE1NDliNzU5NTFlYzNlYmVjMGYxMmY5MDQ3YzllMGM1IGxlZ2FjeS10cnVuaworMTA0MDMgNmJlN2FiMjQ2YTA1YjRjODFiMTI2M2E4YWE2ZDIwM2Q1MTg5NzJkYyBsZWdhY3ktdHJ1bmsKKzEwNDA0IDIzY2M2YWM1ZWJhNmMwNzYzMWM3Yzc2YzRlNThhODBhYTg0ZTgzY2YgbGVnYWN5LXRydW5rCisxMDQwNSBkZTkwYmJlODUwMTM3ZmUxZWZiNzRiNWI3MDhjYjlkZTAxOGUwYmQ3IGxlZ2FjeS10cnVuaworMTA0MDYgMzM0MDdjMGVmMTRmZmU1N2MxM2M1NWU1ZjAwNDBhMjZmNDkyYjY4NCBsZWdhY3ktdHJ1bmsKKzEwNDA3IGUyOWQ0MzVhYjE0MmYxZTg1ZGVjYzMxYzllOTNmODY3N2Y3ZTlhNDggbGVnYWN5LXRydW5rCisxMDQwOCAxMTI2ZTcyZTVlZTljOWE0OWExYjJkN2M4N2ZjMzViMzA1MWNlOWU1IGxlZ2FjeS10cnVuaworMTA0MDkgZWYzMDBlNmIwYzcxZGEwYmQ1YTgxZWNkMjA4YmNiNmQ3M2M5OWI2OSBsZWdhY3ktdHJ1bmsKKzEwNDEwIDlkOGMwNjY2YjBjYmJjMTRmNGJjODY5YTcwNTIxOTIwMmRkYTk3MDMgbGVnYWN5LXRydW5rCisxMDQxMSA4NjhkYzg0YmI1YjI5YWJlMmY3YTBkNjE3NjhjNjkwMDk1MmQwMzY0IGxlZ2FjeS10cnVuaworMTA0MTIgN2M3ZmYxYTM2NTIxN2I0NTNhZTE0NTNkNDA5NDVmMGFmOWI4MGZjMyBsZWdhY3ktdHJ1bmsKKzEwNDEzIDA1MjJhYjIxMGZjYmIwOGE3NjUxZmJjMGE1MGYyN2M2OGRhNmFiZTAgbGVnYWN5LXRydW5rCisxMDQxNCBiMmFkY2Q3M2MxNTBiODJjNTM5OTc3NGY4ODA0MWNjNWRkOWY2NTkwIGxlZ2FjeS10cnVuaworMTA0MTUgNzA4ZGU0Y2I5NmViMjFiZGFjOGJmNjVkYTQwOTU4ZTIwMGQzZDc1YSBsZWdhY3ktdHJ1bmsKKzEwNDE2IGFhN2Q2OWQ2N2M4MWQ3ZGEzOTMzYWUwODUwYzRmZTJjMWMxZmNhNDggbGVnYWN5LXRydW5rCisxMDQxNyAxZjM4YTJiNTQ4YmY5ZDA2YTZhMjUxZTg0YjA1YmU2MDdmYjc0NWQ0IGxlZ2FjeS10cnVuaworMTA0MTggZjIyM2JmNjFiNGVlMDNiOGVmNGVkZjM5ZTk5YjVlNjUyMTExZjRjMCBsZWdhY3ktdHJ1bmsKKzEwNDE5IGNhNGUyNWVmNjFmODA2OWJkNjlhNjI0M2NkY2Q0NWUzZGNiYjg0MTYgbGVnYWN5LXRydW5rCisxMDQyMCBkM2VjMmU1MWY2N2EyMWI4ZTU0MzFlMTRjM2ZlNzM2NTljZGEwYWE4IGxlZ2FjeS10cnVuaworMTA0MjEgMDU3ZTQyMmQyYzYxMDkwMDhlMjA5NTI3ZGIwZDQ2OGRiNTU5ZWExMyBsZWdhY3ktdHJ1bmsKKzEwNDIyIDkxZWNkYTlkNTI0NTFkZjczZWY2ZDA1MTAwY2NhOWEzNjNlODVjNTEgbGVnYWN5LXRydW5rCisxMDQyMyBlZTJhYWEyZjcyMmE4NDdjYzZkZmY5MTIyNmZlY2E5ZjkwMjc2YzA4IGxlZ2FjeS10cnVuaworMTA0MjQgYjMxYWJjMTMxYzNkZjk0M2YwMmY1NjQzYjU1NDViZTM2M2ZjY2FmYiBsZWdhY3ktdHJ1bmsKKzEwNDI1IDE2MmRiM2QwYzkxNjdlMDlkNmQ3NjliMDdiMTMzYmIyMTAyMDY2YjggbGVnYWN5LXRydW5rCisxMDQyNiBkYzEzMmNjMzk1NzNhMGVhNmRmMmQyNmM5OTkwOWVhZmI1OGM1ZjJlIGxlZ2FjeS10cnVuaworMTA0MjcgYWQxMTQ2MjBmOGMyNzgyZDU3N2RiMmQwNDNjMTQ3NTJkMTllNDhmNyBsZWdhY3ktdHJ1bmsKKzEwNDI4IGEyYzFiM2UxNzk1MjZkZDI0ZDAyYmRhNzc0YjUyZDQzYmQ1MTQ0NzQgbGVnYWN5LXRydW5rCisxMDQyOSBmMDY5MTM4MDhmZTFkYWNlNzVlMTIyMDliNzY1Y2FmZjFjMTc5Njg1IGxlZ2FjeS10cnVuaworMTA0MzAgNThkNjgxNWFmMDAyZTY3OGZlYjg3M2E5NWJlNzg2NjUwNzlhY2I0MCBsZWdhY3ktdHJ1bmsKKzEwNDMxIDljYmNiNTkzMWQ4MDNkNjg5NjAwMWVlZTU4OWNmZmM2NjMzOGQ3MGMgbGVnYWN5LXRydW5rCisxMDQzMiBmNDJiNzU3NzU1ZWIzMmFiZWI2ZDgyNDc4NzJiYzc0MmI1NjJkNDNhIGxlZ2FjeS10cnVuaworMTA0MzMgNzJkOTk2MTU0MGQ4NWIyMDAzNjk0OWYxNGI0YTQxYzI4NDYyZjY1ZSBsZWdhY3ktdHJ1bmsKKzEwNDM0IDkyZTM2MTE2YWY0MjFiY2ZlZWM5ZjkwNmJmYmRiYzc2ZDk5OGVkYWMgbGVnYWN5LXRydW5rCisxMDQzNSBlYmRkNDBlMjgxNjAyNWM5Zjk0MzJiYTlhMzliMDkzZTA4YjI3NmQ2IGxlZ2FjeS10cnVuaworMTA0MzYgY2Q5ZTY2NGExYTlmYTg0YmNjNjFkMmFkODFlMWUyZDI3ZmQ0YmZhOCBsZWdhY3ktdHJ1bmsKKzEwNDM3IGZjMDhkYTJjOWEwZmE3ZDk2ODJlMTFkMTBlNWNkMzlhYjU5NzBhMDMgbGVnYWN5LXRydW5rCisxMDQzOCA4ZjM2OGRmMTczZTY4OGM0NjRjOTA2MzY0N2RiYzUwYjE5MWJlM2Q2IGxlZ2FjeS10cnVuaworMTA0MzkgOWUxMTNhYTM3NThkYTEwNDhjN2FjZTMzMDdlZDI3N2NhYWE3ODRjZiBsZWdhY3ktdHJ1bmsKKzEwNDQwIGZlYzhlYjJhMzgwZGQ1MTcxYzY1NTA5Njc2NTU3MDdlNTQ3MTBhOTcgbGVnYWN5LXRydW5rCisxMDQ0MSA4Y2EwMTA4MzE0MGNiOTkyZDEyYjZjZWQ1MjNiMTZiZjEzNmIxNDUxIGxlZ2FjeS10cnVuaworMTA0NDIgY2NkMWM5NjNlNTA5NWRkZTc0NGVjNGRhMGM0OWUyMDkyYzI0ZWMyNSBsZWdhY3ktdHJ1bmsKKzEwNDQzIGQ2ZmNiZDM3MTg1NWUzNjQ3ZjE4NTk3MWEyMjcxMDRiN2NkYTM3YWIgbGVnYWN5LXRydW5rCisxMDQ0NCBhZmQ1NGY4OTVkYzMwMzBkZDMwZDgwOTdmZmJiNWVlNWE2MDliNWU0IGxlZ2FjeS10cnVuaworMTA0NDUgZDFlYTEzY2Y0NmY3YmM1YWNmZTRlM2JkMmIwMjVjZGJkN2NiNmNkYiBsZWdhY3ktdHJ1bmsKKzEwNDQ2IGU4ZDBiODdjOGQ2YjFmYjBhMjJmNTc4MjYzYWJkOThmOGExMWVhODAgbGVnYWN5LXRydW5rCisxMDQ0NyA4YzI2OGQwZTg4MjIwNTRjY2I1M2E4Y2UyOWFkNzAyNjQ5MjZiYWQ4IGxlZ2FjeS10cnVuaworMTA0NDggYmJkMmI1ZDhkMGI2YzIyYmNhNGY3ZTAyYjA0ZTFkZmFhZDk4NWQ2YyBsZWdhY3ktdHJ1bmsKKzEwNDQ5IDJlZjZlMDQyNDE3OWNhZmY5YTM2ZTc3NThkMGE3MTcyMmFjOWU1ZjQgbGVnYWN5LXRydW5rCisxMDQ1MCAzMzhmMWRlZjQzNzA5YmY0ZjMyZDViOGQwMWY3ZjZmNjQ2YjgzYmNlIGxlZ2FjeS10cnVuaworMTA0NTEgNGNlZWUxZWY5OWIwMzI4MTBmYmI2MjM3ZGViMDE4Nzc5ZGUwYjczMSBsZWdhY3ktdHJ1bmsKKzEwNDUyIDQ2OTI4ODQ5OWM5YmRlOWQ1M2JmMmRkNGI0MTMzNGZmMWI0ZTRiMzcgbGVnYWN5LXRydW5rCisxMDQ1MyBmZjEwYjAzMjhmZjM3NTBiYjMwMzMxMzVkMDYzMjY0ZjkzYTc5ZjkxIGxlZ2FjeS10cnVuaworMTA0NTQgMDkxNDgxZGJlMTNkN2M1MTI3OTgwN2IyZmZkYmNhOTIxYzFlMjQ1YSBsZWdhY3ktdHJ1bmsKKzEwNDU1IGMxMmM2NjFmZDE0ZWY0YjU3ZjUzMTdhOTRhMjNjMmJjNjg1ZjZiY2MgbGVnYWN5LXRydW5rCisxMDQ1NiAzZGM1ZDBmY2IxNjdhYzFjODM1YjRhMzQ5ZDExMWRhMzc4OTFhNmY3IGxlZ2FjeS10cnVuaworMTA0NTcgNzUyMjM1ODQ2MTgwNDE0ZGRkODZjMTU3ZTM3MDRmMjU0NzIxODI3ZCBsZWdhY3ktdHJ1bmsKKzEwNDU4IDUxZDMxZmNhZWVmM2EyMTAyNDgwODNkZjc5ZGJjNjU5ZGI4ZWJkZGUgbGVnYWN5LXRydW5rCisxMDQ1OSAxNDNjNTU2ZGViMmY4NTU5ZjU2NGRlMTQ3ZTBiZDJiYjY0NTFiMTFkIGxlZ2FjeS10cnVuaworMTA0NjAgY2M0NzczM2I0ZGQyMmM1NWQyNTg5ODdhZjFhMGI2MWM1MDY1ZTU3NSBsZWdhY3ktdHJ1bmsKKzEwNDYxIDg1ZTg4NmRiMTliMDU5OGI5MmNkMWI1ZDc3ZGEzY2RkNDM1YmMwNGMgbGVnYWN5LXRydW5rCisxMDQ2MiAwOTk2M2EyYTI0ZGIwODk4ZTQzYmYzMzFiMzE1YWFjNGQ3ODVkODE3IGxlZ2FjeS10cnVuaworMTA0NjMgYTkwOWEyODY5YWM1OWEwYmVjYzBmNjczYTQyNjFkNTEyZjYyMGMyZCBsZWdhY3ktdHJ1bmsKKzEwNDY0IDA2ODMwM2Y5MjVlYTg3MmJkMTFjYmU5MmY4MjdhNjlkMzQwNjAyYzIgbGVnYWN5LXRydW5rCisxMDQ2NSAxZDBlYjJlOTZkNzY3OWU5ZjdmNDZlMjBjNzk0OGI2MGViMWJmYzc3IGxlZ2FjeS10cnVuaworMTA0NjYgYWI0ZjY0NTYxZmJhMzI4ODEzNGE3NzVjMzRkNmRmOTkxYzk2ZDI1NyBsZWdhY3ktdHJ1bmsKKzEwNDY3IDk3MWI1YmJkOTJlYzAyMGVhYmMwYzczOGYxYmM3N2Q0YzVhY2UzOWMgbGVnYWN5LXRydW5rCisxMDQ2OCA2OTdkZjkzZTVkZGI0NzY0Y2I0MTVmNjcxYzFlMTU5MWNiYmUzYjZjIGxlZ2FjeS10cnVuaworMTA0NjkgMDI2M2QzMzI0ZjBiMmU5OGVmMWY2NWYyNzRjN2MyYWFiZjllNzg3MSBsZWdhY3ktdHJ1bmsKKzEwNDcwIGI5ZWI4MDU1NzliYTg2MzFiOTEyODZlMzFjYjczYzU5YWNlMTY0MjggbGVnYWN5LXRydW5rCisxMDQ3MSBkZTEwNTY2ZGVjNWNkMWMyODZlNWJkNzVlZDI4YmM4ZGY1ZTliNzYyIGxlZ2FjeS10cnVuaworMTA0NzIgNmU1MDc5ZThmYTZlMDUzM2Q5Mjk4YmU2NzUxMTJmNmY0ZWMzNjg1YiBsZWdhY3ktdHJ1bmsKKzEwNDczIGNmMGNmMjFiNDU0NTQ3NzFjN2VmNWNlNjg3ZDBjOWY4OTFiNDU4ZDUgbGVnYWN5LXRydW5rCisxMDQ3NCA2YjNmZDI0Y2MwNzc2ZjMyYTE4ZjRhZjFhMjE1NmIxOWMyNGExMzA4IGxlZ2FjeS10cnVuaworMTA0NzUgZThjNGIzZDM4NmU0ZjJkMzM3MmQ5NWMyMWNkZjkwOTg3ZDQ5ZmYyNiBsZWdhY3ktdHJ1bmsKKzEwNDc2IGRhZmZkZTdhNjg5MTc3ZjFiMTFhMjA4OWI2MTBhOWE0Yjk4NGFkYmIgbGVnYWN5LXRydW5rCisxMDQ3NyA4OTM1OWQwNzJlNzI3ZTcyYTZkNjQ1ZjFmOWRjNzhlN2JhODU1MDllIGxlZ2FjeS10cnVuaworMTA0NzggMWQ1MjY1MDdjZDllYzczZTAwOWJjNjk0MmE5M2YyOGEzMzRmZDBiNiBsZWdhY3ktdHJ1bmsKKzEwNDc5IDNkMWQ5ZTI1ZWIyMmM2MzI1N2Y3OWE5YWE2NWI5ZTI3Y2E2MjlmNTggbGVnYWN5LXRydW5rCisxMDQ4MCAwODM1YjhkZjU0ZjgwZDIzNTQ1MWUyZTZhNGI0NmI0NjZjODg1ODQ2IGxlZ2FjeS10cnVuaworMTA0ODEgYmRmNTdjODRkZjZhYjUxY2MzNGM4ZmNjNGNiNzNjMGQxZDI5NzM0OCBsZWdhY3ktdHJ1bmsKKzEwNDgyIGM4YTMxMTE0NDcyNjdhMTRjMzMwMThhMWIzMTc0ZjI5MGUwYjc3OTIgbGVnYWN5LXRydW5rCisxMDQ4MyBiNDIwYWU4NTIxM2M3OWYwNWNkYzM2OTU5YzcxYTFiMDQ3NzBmOGY5IGxlZ2FjeS10cnVuaworMTA0ODQgNWRiMzQ2ZTljOGY1NjBkY2ViMTZiYWFiZTRkYWIwZWM2NDI3MWY4NCBsZWdhY3ktdHJ1bmsKKzEwNDg1IDkwMDMyMDQ5MWI5MzZjOWZjYTNmNzIzODQ2NGQwMGZjZDZhYzYzYjkgbGVnYWN5LXRydW5rCisxMDQ4NiBlOTg2Njg2ODNiZWQ2MzU4ZjljNWE3MzM5ZTk0NDBiN2I0ZjAxMDc3IGxlZ2FjeS10cnVuaworMTA0ODcgYTg0MmM5ZTYzMjgwYTk2ZjczOTRjMzFiNzIxMDkyZjM4YWQ2ZjYwZCBsZWdhY3ktdHJ1bmsKKzEwNDg4IGRiYzExZGQwMmYwOTU5MjM1MGI5ZmFmZDMwNTE1OWRiOGExNGJiNWMgbGVnYWN5LXRydW5rCisxMDQ4OSA0ZjRlMmFhZDFlMGFiNWJhMGFiYzJjZTgyNmUwNDk3NmEyOWQ0ZmQ1IGxlZ2FjeS10cnVuaworMTA0OTAgYmY2ZTkyMGMwZTc5OWQxNjEyOTQ3YjhhYTFlZDA0NzQyMzdjZDMyMSBsZWdhY3ktdHJ1bmsKKzEwNDkxIGNhMGM3MjU5MTIxMWNkOTI5ZjNmODcxNDdhNGFiNjQ0ZWRmNTE4NDAgbGVnYWN5LXRydW5rCisxMDQ5MiA4M2JhNTMwOWZmMjI2ZTFjNGJiMjJkMjVkMzFmNWJjZGJhMTQ5ZDA5IGxlZ2FjeS10cnVuaworMTA0OTMgMmIwOWE1ZDI2MzY4OGQwNzc3ZjZiNmI4ZWNkOTJmMzMxNGEyZmNlMyBsZWdhY3ktdHJ1bmsKKzEwNDk0IDUzZGRlNDIzMjVmOGE5OTQxMzA2OTQ3NTYxYmVmOThkNDgxM2UzN2QgbGVnYWN5LXRydW5rCisxMDQ5NSA2ZThiZTYwOTZlNTYzMDJmYTU3OGM2ZDg0NTljNWM1M2ZhNTA1MDEzIGxlZ2FjeS10cnVuaworMTA0OTYgYmJiZDBiMTA1ZTI3MzVmZWU3N2M5OGY0YTg2YWMxZTQ2ZmFmZDIyNiBsZWdhY3ktdHJ1bmsKKzEwNDk3IDQ2OTk5ZGZjZmFlM2YwNTA2N2Y2Y2IxY2QzNTNmNTdjMGMwYjA4NjYgbGVnYWN5LXRydW5rCisxMDQ5OCA1MjY0Y2FjOGY5MDM1ZjJjNzRiNTQ1MWI1N2Y5ZTY0MzdiNDc0Zjk2IGxlZ2FjeS10cnVuaworMTA0OTkgMDExYWU3MWZlYTk2NDlhMTdhNDg3Zjc2YjgwN2NlYWM0MWQ4YWIyYyBsZWdhY3ktdHJ1bmsKKzEwNTAwIDliODkwMjMzOGUxNGI3MDlmMjM4NWFjZTE1MDcwMDdhMjVkMjVlN2UgbGVnYWN5LXRydW5rCisxMDUwMSA5MmJhN2E5ZTNiOWQ5NzE5ODIxOWVkZDQ2YzgwNjgzMjYzM2JjOWNjIGxlZ2FjeS10cnVuaworMTA1MDIgM2I5MWFmZmEzMzNlOTg0YTYwNjE3N2RjZjEyMmUzZDdlOTNhOWYwZCBsZWdhY3ktdHJ1bmsKKzEwNTAzIDVkMmJkNjczOGViNjJlNTUyNWE1ZTUyN2VmMzYwNzAwMDUyMTM3MWYgbGVnYWN5LXRydW5rCisxMDUwNCBkMTU3ZWU4MjE3NzVjMDk5MzQ1MmM3MjBjZGY0YjAyZjhiOGI5ZTMyIGxlZ2FjeS10cnVuaworMTA1MDUgNDlmMWNmNGIxNzRjYzYzZjNjMWQyZGIzMjBkMzFhODg5ZmVkOTQyMyBsZWdhY3ktdHJ1bmsKKzEwNTA2IGQxYzFiMjA3NTRhODE3ZmZmNTE0OWE5MWMxMGE3YTk5MGZhNjUwZDMgbGVnYWN5LXRydW5rCisxMDUwNyBkOTlhOTA1MjZhZTBiMTkyZWVjZmMyMWU4MThmMWVjMWExN2JkNDBhIGxlZ2FjeS10cnVuaworMTA1MDggZjUzMjZkMzU4NjYyYmIyMTBiOGYxNGJiZDU1NjJmZjZhOWJhN2FlNiBsZWdhY3ktdHJ1bmsKKzEwNTA5IDVkY2Y5YjVkMzNlNmU2ZjBhMGQwNDc2YWM1MDQ5YzcwY2JkMGFjMzEgbGVnYWN5LXRydW5rCisxMDUxMCA5NTE0MmM4YTA5Yzg2YTkwNzk0MmYwMTYzMThlM2VlMDk1NGQ0NzRjIGxlZ2FjeS10cnVuaworMTA1MTEgM2YwMzYwMzc2Y2EwMDE1MTY3NmQ5ZGZjMTlkZWFkYzU4ZWM1Y2Q3NSBsZWdhY3ktdHJ1bmsKKzEwNTEyIDcxMGYzYjc4MzUxNTNiYjc2ZTcwOTczMDdmZWJlYjRiMGZjN2VkYzkgbGVnYWN5LXRydW5rCisxMDUxMyA1Y2NlODFlMjMzNDk5NmM5OThkMGY2ZjJhMjYxMTUwYTQxY2Q1OGI0IGxlZ2FjeS10cnVuaworMTA1MTQgM2ZmZDQ1ZjA1ZTM5NThmNThlNWJjZmU1Y2EwNzg5NjY0ODFhNDMwZCBsZWdhY3ktdHJ1bmsKKzEwNTE1IGNkMzA5MjA2OWY1YTM5MzkxMmJjMWEyMDhjZDU2MjBjMTY4MjA4ZjMgbGVnYWN5LXRydW5rCisxMDUxNiA2YzU5NDk4ODU3MmE3ZGUyNzEzNjdlNDZhNTVjMTM0NTBlYzRhNzU4IGxlZ2FjeS10cnVuaworMTA1MTcgZTA5MWU5ZDQ5NWQ1YTlkMDY3YzdjNDNkNmJmZjA0ODc1NTQ2NjAyZCBsZWdhY3ktdHJ1bmsKKzEwNTE4IDVmMzVlMjc4MTAzMmUyMzBjZTA1MWRkODdjMGI0ZDI3MTI0MWY4NTAgbGVnYWN5LXRydW5rCisxMDUxOSA0M2JlMGI5MDI3MTcwODg3NGMwZGY2MmE2NjlkYmJiNjkxYzE5NWE1IGxlZ2FjeS10cnVuaworMTA1MjAgYTM4NTUwNjEzYWYzZDlkOGU5ZWRiYzRmOWJiNDlhZjE0MDZjZDY3ZCBsZWdhY3ktdHJ1bmsKKzEwNTIxIGRmMGZhNWRjNTk5YWUwNjU0ZDc5Y2MyOTBiOWUwN2VkNWRjYTNhOTYgbGVnYWN5LXRydW5rCisxMDUyMiBlMjMzMzk2OWEyY2FjYTNmNzg5OGQ4YjE0YTk0MjIwMTllMmFlY2IwIGxlZ2FjeS10cnVuaworMTA1MjMgNDkxOWRlZTE4NzgxYzEzNzcxZTVhZDNiMDdiYmQ2ZTAwODJhZjdhZSBsZWdhY3ktdHJ1bmsKKzEwNTI0IGI4ZThhY2U3OWNmMDJjY2RhNzI1N2UxZDU3NGEwZmJjZjk1ODhhZjMgbGVnYWN5LXRydW5rCisxMDUyNSBiZDMwYWM4MzEyMTcyMzQxODgxOTNiY2NiYWY0Y2UxZjA1Y2UyNDhhIGxlZ2FjeS10cnVuaworMTA1MjYgMjU0ZmM5MWI2YjBlNzM4MDk1ODA3NGZlYjQ0YjdlYzE2N2IzODY4YiBsZWdhY3ktdHJ1bmsKKzEwNTI3IDY2OGNlMGVkYjRmMWM1NDI5ZDNkMDAyYjYyOThhYWU1Y2Q4MmI0ZjYgbGVnYWN5LXRydW5rCisxMDUyOCAwNzczMGI4MmExNDNmMjhmNTJmY2E0NWVjOGQ2NWI0MTA4N2UzODVkIGxlZ2FjeS10cnVuaworMTA1MjkgYTkzMDUyYWUwZGViNWE0ZDE2MGQwOTY4YTcwMGFkNDIwZmJlNTA3MCBsZWdhY3ktdHJ1bmsKKzEwNTMwIDVkY2M1YzRhMThiZGE2NDg1ZDk4YjcwOTZkYTI3OTAzOThjNjdkNjIgbGVnYWN5LXRydW5rCisxMDUzMSA3MDk5ZGU4M2IxOTFiOTI0NmZjOTA5OTE0NzMzYjU1YmU3ZTI4MTBlIGxlZ2FjeS10cnVuaworMTA1MzIgOWI4YjU3NGVmMDA3MWUxZjkwOWZlNzUzOGYyYzM1OWYyOTEyNTk4ZiBsZWdhY3ktdHJ1bmsKKzEwNTMzIGNiOGQ3MzM4MjQ4Y2VmNzdjODc1ZmIzNmVhYTg0NmEwOWVmZDljOTMgbGVnYWN5LXRydW5rCisxMDUzNCBhM2Q5MTJhZmM5MDlhYmNkZDJhNTMxNjJlNGZmYTc0MDJjNmNiYjMwIGxlZ2FjeS10cnVuaworMTA1MzQgNDRhYmE0ZDI2YjAxZmJhZTA0MDNlZmU2NTRmOWZkMDM0NzYwNjczMiBsZWdhY3ktdHJ1bmsKKzEwNTM2IGJjYWY0OGI5NGJiMzM4M2M0Y2ExN2E5MTllZjgyZmVhYjNlMmQ0ZjQgbGVnYWN5LXRydW5rCisxMDUzNyA0M2U4MDJjMTZhNWIxYWZiYjg2MDBlNThkMzIyZGI2MWNkMmE3ZTJmIGxlZ2FjeS10cnVuaworMTA1MzggNWFhY2RkMDk3OTQxMzkzZDZkYTZlZDMyYTI1MjQxZjQzODc0OTE4ZSBsZWdhY3ktdHJ1bmsKKzEwNTM5IGQ5YWM5MjQ2MTgzMjljYzQwOTk3MjExYzM2MTI2Zjk0MjM3ODFlYWEgbGVnYWN5LXRydW5rCisxMDU0MCA3N2Q0ZTZmNjYyYzFiZWUwNzZiNjIwZjZlMDllYjc5YmNlMTNhNWU2IGxlZ2FjeS10cnVuaworMTA1NDEgNDI4NWY4YjdiYTBiMmZiMTc5OTQ3YmUyOWU2NWRjYjgxMmVhMTBjMSBsZWdhY3ktdHJ1bmsKKzEwNTQyIDA3NjZkZjUwM2VhNTNkZjQxNmQ4YTVlNWViMWFmYWEyOWNhYTlmNTIgbGVnYWN5LXRydW5rCisxMDU0MyBkOTcwNDhmODkxYmYwNmFkZDlhYTg3OTE4NzNiYmQ1NDQzNmI4YzQwIGxlZ2FjeS10cnVuaworMTA1NDQgOThlYzQyM2NhNmZhOTkxMmE4MjBlYWEwNTZmNmRjZmQ3NGM3Y2NkNyBsZWdhY3ktdHJ1bmsKKzEwNTQ1IDIyNGI1YzM2YWZlZjg1NmI4OTk2ZjBiMzA1MWM4OGM0ODMxMjE1ODMgbGVnYWN5LXRydW5rCisxMDU0NiBmMGJkOWVlNzhhNTIxNzYzMTExZWU0OWE2YTU3Mjk5ZTBlYmIzYTZkIGxlZ2FjeS10cnVuaworMTA1NDcgYTdkZDBmNTJmMmI2MDk0NmFjNDUyZDNiNmM4OGQ3MTc2NDAyYjhhYiBsZWdhY3ktdHJ1bmsKKzEwNTQ4IDQ4ZTIzNDlkMTFjNjA5MzcyYmU4ZWJmMGU5MGRiYTNmNmRkZWI5N2QgbGVnYWN5LXRydW5rCisxMDU0OSA5ZjE2ZmE3MGQwOTBlYWViZWUwMDQwM2I0ODc1OTU4ZDdhYWJkYTZkIGxlZ2FjeS10cnVuaworMTA1NTAgODZhNjE5MzA0OWE5NmY0MDRmOTk3YTc2OWJlMjI3MDI5MDZiYmM5OCBsZWdhY3ktdHJ1bmsKKzEwNTUxIDRhMmYxYzY5ZmRlODFlOTZhNTFhNGRmMjQ0MjNiNWNiYWQxOTJiZDEgbGVnYWN5LXRydW5rCisxMDU1MiAwNTJlNzc2NjQwMzJlMTgwNjBjMmExOTFiNDIzNDM3N2RiOGU5ZTRkIGxlZ2FjeS10cnVuaworMTA1NTMgYjgxNjJkMDg2ODUwMGU5MWZlOTlhYmI5OWNjMmMzZTY0ZmU4NjBmMSBsZWdhY3ktdHJ1bmsKKzEwNTU0IDVhNjdkOTA1MTAyNjJhMTdhZTVmNjdjY2NkNjQ4NTcyNDkxMzkyMmMgbGVnYWN5LXRydW5rCisxMDU1NSBkMGZmNDE3NDZhMjYwMGU0YmFmY2ZmOGNkNjcyOGM3ZGU3ODkzOWRmIGxlZ2FjeS10cnVuaworMTA1NTYgZTM5MTQ1YTEzMDk2ODAyZDRlNDgxYzExZDY5MjRiMGJjZjQ5NDY0NSBsZWdhY3ktdHJ1bmsKKzEwNTU3IGRlMDI5ZTZmOTgzODkxYzdlMGZiZDBhZmFmNDA4ZjIxN2UxMmMxYTQgbGVnYWN5LXRydW5rCisxMDU1OCA1YmZmMDQxNzE3OTg1OGUzMmQ4YzY2NGNmMzM3ZWFlZDI4YmIxMWY1IGxlZ2FjeS10cnVuaworMTA1NTkgMzMxN2Y3MjcyM2JiNjA5NmI4OWI3MTYwNDZjNTJlMDBlZjM1ZGRiZCBsZWdhY3ktdHJ1bmsKKzEwNTYwIGMxNTMzMGVlYjE5MmFkNjZkMWM0ZTE0MTRiZDM4NDM1NTUxMjVkMzUgbGVnYWN5LXRydW5rCisxMDU2MSA2NThkMTg0ZTkyMDQxYjljNjhkODcwNmIxNmQwOGUxMTcyZTE4OTM2IGxlZ2FjeS10cnVuaworMTA1NjIgMGIwYjY5YTg4YjdiOTViNjEzMmYzMGFmNWVhMTkzYTdkMGUwZWY3MSBsZWdhY3ktdHJ1bmsKKzEwNTYzIDZiNThiNzlhOTU4ZDc3YTU4ZjRlNTQ3NmE4OWU3MGQzNTY2MWU4NWMgbGVnYWN5LXRydW5rCisxMDU2NCA3YWNlMTcyYzI1MjFiMDJlYWExZmQ2ZGNlOGUzODEwMjgzYWY3Mjk3IGxlZ2FjeS10cnVuaworMTA1NjUgYmIzZWM4MTJlYzkwZjI0ODc4ODNlOGI5YTcwZTcwNGYzZTNlZTk4MCBsZWdhY3ktdHJ1bmsKKzEwNTY2IDVlM2JiNDE1NjAwNDI1ZmQ5ZmY4ZjEzYzM1NDQxMGE5ZDRlNjNkOTAgbGVnYWN5LXRydW5rCisxMDU2NyA2OTJiZTEyM2Y1NDdmMWQzNDc1MWI0ZTFhZDc5ZjNhNDkzNDQxNTZjIGxlZ2FjeS10cnVuaworMTA1NjggZTNkY2UzYjhjMjgyNTljNjE5OTdmMWE4Mzk1NWJiYjJkMzkzMzI3OCBsZWdhY3ktdHJ1bmsKKzEwNTY5IDA0OTMxMzdhODQxNDYxYWE1ODI4YTU4ZDQxNTQyYmI5ZmFhZjgyNzYgbGVnYWN5LXRydW5rCisxMDU3MCBjNWY5MmVlODQ5OGY1YzhiMmM0NmE1MGJjZGEwNTQ3Y2IwOTg1YzMxIGxlZ2FjeS10cnVuaworMTA1NzEgZGYzN2NhNDAzOGY2YzI2MTgxZTUxYTllM2MxYTY4ZWM4NzlkNmNmMyBsZWdhY3ktdHJ1bmsKKzEwNTcyIDk2YWE1ODcyNWMwZTQwNThiMzU4OGJjZTYyYThkZWNiZGFjMjQ5MmQgbGVnYWN5LXRydW5rCisxMDU3MyAwOGUxYmI4NDA3ZTY1MjA0NDIwZDg4ZTIzODE0MWI0NjU0YTRjN2QzIGxlZ2FjeS10cnVuaworMTA1NzQgYWQ5YWFkODEzYTYxYjFjYmY1MzhmNmE5NGRkNTc2MzM2NjRmNzU2NiBsZWdhY3ktdHJ1bmsKKzEwNTc1IDU3M2JjMDY0MjY0Y2I3ZTRhYWE5ZGYyNDdkMDIyYWM3OTkxMTQzYmIgbGVnYWN5LXRydW5rCisxMDU3NiA0N2JkZjQ1YWZiNjg2MDcwNTE0MzMzMmI1MGNjZDFkZmZmYzRhZjE0IGxlZ2FjeS10cnVuaworMTA1NzcgOGMxZjE2MWM2YzhjMDFlZDgwYjMzNTAzMThlNzFjM2ViZjM5MjFlNSBsZWdhY3ktdHJ1bmsKKzEwNTc4IGE2Y2UyZGZmMjczNWI3NzI1YjRkODNkMjFmZDMwYzllNDEyOGM5ODIgbGVnYWN5LXRydW5rCisxMDU3OSBiNTc2ODQ2Yzk0YjM4ZjU0NDZlYjkzM2M3ZjA3NDlhZDY0ZjcxMWFhIGxlZ2FjeS10cnVuaworMTA1ODAgYTU1Y2JhOTYzNzYxNjNlMGNmNmMxYWZlZmFmNzE5MGU4YmZlNGUyZSBsZWdhY3ktdHJ1bmsKKzEwNTgxIGYyZjkxMjgyM2VlNzg1NzFmZmZkYzhlMmFjYTczMDliM2MxMjUzZjQgbGVnYWN5LXRydW5rCisxMDU4MiAyNjVjMjc5Nzc4MWEwNjhmYTUyNDA1OTM4YzA2ZTAyMzM4NDQzMzQzIGxlZ2FjeS10cnVuaworMTA1ODMgNDI3ZjM0ODllNTJiNmFjMGRiNmRjNWZmMjJhYTM0ZjlhNTk3OGE2YyBsZWdhY3ktdHJ1bmsKKzEwNTg0IDExYTFiYWQ2ZGY2NzMzZTJjNjE5M2M5YmE4ZjZmZTQ3ODIzYmE3ZTUgbGVnYWN5LXRydW5rCisxMDU4NSA5MzM0OGU1YTg1YTI0MGQxOTYzYTQyZjY1NTRjMTA3OTBiMTY3MzQzIGxlZ2FjeS10cnVuaworMTA1ODYgNzkxZWRhNTJiM2Q5Y2JhZWFlZWI4MzlhY2E1ZjU5NWFjZGE3M2VjYyBsZWdhY3ktdHJ1bmsKKzEwNTg3IDliM2IwMTMyYzAyMWM3YzZjODhhYmNjN2E0NTEyYWY5YmE4ZDVjMGMgbGVnYWN5LXRydW5rCisxMDU4OCAyODEwZmM2MDlhZWQwNzIwNzU3ODI3YjE5NzdmMTExYTA1NDVkNWJkIGxlZ2FjeS10cnVuaworMTA1ODkgYTk5NzNmOWI1NDE3NzcyNGFmNWJlOWQzNmRlMDllMmJkMTQzMDMwYiBsZWdhY3ktdHJ1bmsKKzEwNTkwIDJlNDliYzg5ZmFmYTBkZDNmNmU1NmNhMDNiYTExNGUwYzYwN2IzZTEgbGVnYWN5LXRydW5rCisxMDU5MSBmMDcwN2FlMDA0MzM4NDlhZDdjYjA1ZDc3MDg0ZjNlNWIxZDg3OWQ2IGxlZ2FjeS10cnVuaworMTA1OTIgNWM5YmU5OGY1MzQ3Mzk0ZTFkZjllOTBiMzE5MjYwNzlkMDE1Y2JiNiBsZWdhY3ktdHJ1bmsKKzEwNTkzIGI2Y2UxNzE5MzIzYWM3ZGU5ZjIxYjdmZjYzMTlhYTQ2NmFmMjUzMjAgbGVnYWN5LXRydW5rCisxMDU5NCBlMmQzM2MwNzMyYmZiMTkxNzhjZmExODdlYzkyN2E0MDRlNmZlOTllIGxlZ2FjeS10cnVuaworMTA1OTUgNTMwZmYzYjk5NzIyYjZjMGRjNTdmZTQ0NmUzYWI2NGNiMjAwMWU3NyBsZWdhY3ktdHJ1bmsKKzEwNTk2IGQ5NjIyM2I3N2UyZjM3MDk0MmZhODBkZjdhYWI1MjE0N2JkZDE3ZTQgbGVnYWN5LXRydW5rCisxMDU5NyA1OTk5N2ZkYzgxZGY3ZjE4MzBhZGZlMmM2NzIxOGFhMDM2Yjg3ZjY0IGxlZ2FjeS10cnVuaworMTA1OTggOTVlZmVhNjhmMThkNzg3ODU3OWQxMGQwMTg4N2I4NDcyNjU3NDlhMCBsZWdhY3ktdHJ1bmsKKzEwNTk5IDdjZjUxNjU3YjA4Y2FhYjQ0NzNhNzA2YmVkZmZlN2ExNGJhNDJlYTYgbGVnYWN5LXRydW5rCisxMDYwMCA1YWVjYzI3N2U2Y2FhMDBjYTdmNTg0OWYyZmEzYzI3NDRjMDk0MWNmIGxlZ2FjeS10cnVuaworMTA2MDEgMDY4ZmVhMTVjYmNkODY0ZjM5MjkyNzE3ZTFlZjEwOWE2YTdmNTIyNiBsZWdhY3ktdHJ1bmsKKzEwNjAyIGU5MDRlNmRmZDcwYjI1MjVmZDJlY2IyYzdmNzAyMTUzZmY1MmVmOGUgbGVnYWN5LXRydW5rCisxMDYwMyA4YzU1MmVlZGIxYWZhZjFkMGUwOTRmYjc2ODkzZTk3NmFkZDM4MjRiIGxlZ2FjeS10cnVuaworMTA2MDQgMGRiNmY2OTMyYjczNWM3MWMwM2FkZTBjN2ViMDU4NWYyMTZjNjU5NCBsZWdhY3ktdHJ1bmsKKzEwNjA1IGJkNzQ0YWY2ODQ1ZjhiMWE1YzVjYjE5MzE1ZGY1YTUyZTA0MWE2ZjIgbGVnYWN5LXRydW5rCisxMDYwNiAzNjQwNGQ5Y2I1ZTE1Y2JmMmU3MWQ5YjhjMzUzNmJiMGNhYTkwMmMwIGxlZ2FjeS10cnVuaworMTA2MDcgZGFhNTQxMzE0NTNiNzdlMzlkNTk4MGM2N2M4OGQ5OTA0YjYxOGQxNCBsZWdhY3ktdHJ1bmsKKzEwNjA4IDA0NzUzMzc4OTM1OWY3OTk3YjRmNTFlMjI3Y2M4ZmJjYmIwMGM4MjIgbGVnYWN5LXRydW5rCisxMDYwOSBmZGJhNjM5N2I3MjllNDczYWMzZmY2M2Q0OThkOThjMDUyOTQ4ZTE1IGxlZ2FjeS10cnVuaworMTA2MTAgMTA5NGViYmQzYTQ1NzRkMjgyY2M4ZDMwNTkwNDJlMGVkZTgwMmUwOCBsZWdhY3ktdHJ1bmsKKzEwNjExIDFiYzY1Njg3NjI2Yjg3OTQ2NGY2OGFjZWQ2ZjBlY2NiY2M1MTQ3NjggbGVnYWN5LXRydW5rCisxMDYxMiA4YjQ5YzkxOGEyNWYzNjgxMGE1ZTAxMDFiY2JhOTFkNDY4YjU5NzM3IGxlZ2FjeS10cnVuaworMTA2MTMgNDMyM2IyNDMzNTgxZDhjOGM4OTMxMWRkNjA2MGUwMGY1ZWEzNjk3MSBsZWdhY3ktdHJ1bmsKKzEwNjE0IDYwODhkNjUyYjkzMjg0MWFiZGFjNWMzZWU3ZDJmNjZkOTdlODZjOGUgbGVnYWN5LXRydW5rCisxMDYxNSBjN2Q5OWY2ZDJlMmY4YzE3OWU3ZDA2MDdkNTIyYzgxY2Y1MTdlMmI3IGxlZ2FjeS10cnVuaworMTA2MTYgYWMyODhkYjViYzkxYzQ0MjU0MGUyYjM3YTg3MmI5NTNlYWI4YTJlNyBsZWdhY3ktdHJ1bmsKKzEwNjE3IGNkNmI5ZmMxMTRhNDE1ZmE0ZWI1NDM1MDY4YmQ0NmI0MTQ5MzhkMzAgbGVnYWN5LXRydW5rCisxMDYxOCA0NDM1NmVlN2U1NzkwNjM0MDRkYTFiMjM1ZDYyMGVjMTBhZThhNThlIGxlZ2FjeS10cnVuaworMTA2MTkgOWQwMzEwMTQzNjAwOGNlMDhkMmM2NDVmM2RhYWJiYzZlY2FiZWIyZCBsZWdhY3ktdHJ1bmsKKzEwNjIwIGFjM2NhNTY2Y2I0MTYxYzQwOWZhZTFiNGE3ZjM4M2M3MTMzNjlmMDQgbGVnYWN5LXRydW5rCisxMDYyMSAyM2E4Mzc3MjYyMjY0YjU3NjNjM2Y5YmVlMzhiMjk5NmNiZDgzYzIxIGxlZ2FjeS10cnVuaworMTA2MjIgYjE0OGZhMTUyNWRiOTk4ZWVjMzFiMDlhZjhjODVkNmMzZjJiZWU4NyBsZWdhY3ktdHJ1bmsKKzEwNjIzIGQ2MDFhZjgwNmE1NzMzYmYzNzU2ZTI5YjdjZTFhM2YwMzVmZjA1NTkgbGVnYWN5LXRydW5rCisxMDYyNCBhYTNiNDgwMDJmODg3ZTM2YWYyYjIwODc3MDlkZGY2MWM5OGE2YTNlIGxlZ2FjeS10cnVuaworMTA2MjUgZTAzM2VkNTBjYjM3NmNmNmE1Yzg1ZjAwMzNmMjcxZTM3MjkyYjg4OSBsZWdhY3ktdHJ1bmsKKzEwNjI2IGNjZDgzNzVkYjI3MzZkZTlkYTY1MGY3NTk5ZDBiMzU3ODBmYTBmYjEgbGVnYWN5LXRydW5rCisxMDYyNyBjMGUzOTQ0YjZhNjRmZTJlNzNmOGNkYzVhMDNiZjlmNWE0NjAwZDRkIGxlZ2FjeS10cnVuaworMTA2MjggYmRiZTA4MmVlMzgzZGE4YTAyYzYyZWEzYjBjYTkxOGNhZWRhZjgyYiBsZWdhY3ktdHJ1bmsKKzEwNjI5IDkyNzllZjY4NjhlYmEzYTU1MDk5MzkyZTVhNTA3MDhkOWY1ODU0NDkgbGVnYWN5LXRydW5rCisxMDYzMCA5MWFhZWVmNzVhNzM2MmY4N2I1MGM2MWY0ZTA5M2I2OTk0MTEwNmJiIGxlZ2FjeS10cnVuaworMTA2MzEgM2E1MjAyOGZlOTM2M2RhMmY2MWNlZGZlMzRjOThkZjk2ZjQzYTdiYSBsZWdhY3ktdHJ1bmsKKzEwNjMyIDQ2Njg2ZDQwYmRmZDZjMzExNzdiOTJiZjRhNDE1Zjk4MDZkOGU3YWUgbGVnYWN5LXRydW5rCisxMDYzMyAwNWZlYmY5MzFlOTFiNGJmOTYyZTk5MDMxYjg3NWY4N2U0Y2ZiNzQwIGxlZ2FjeS10cnVuaworMTA2MzQgOTk1ZmI1NWIzZTZhYmQyMWRkYTBjMmNmN2ZjNmViODllYTQxNmRkZCBsZWdhY3ktdHJ1bmsKKzEwNjM1IDI1NTIzM2U0MjkxOGYzNDlmMWUzMzQ2OGEwYmMyYWQxMTExNTMyYTMgbGVnYWN5LXRydW5rCisxMDYzNiBhZGE0MGU2OWZkMDkzNmUzNTE2YTBkMmI3MWExZmFiZTU3MThlYzMzIGxlZ2FjeS10cnVuaworMTA2MzcgZTQ5YjMwYzZhODBhYzBiN2Y4Yzc2YjhhMGFhNDJmYWU0MTc3NjNlNiBsZWdhY3ktdHJ1bmsKKzEwNjM4IGJiZmU5OWMyNzg1YzkzNzIzMmI3ZTNmN2IzZWI2NWY1MTQ4ZmVjYTQgbGVnYWN5LXRydW5rCisxMDYzOSBiMWIyNmUwZTBhMGFkYWQzYzcxZGFjOGQ5YmI4YzBjYmFiNTRiYTdjIGxlZ2FjeS10cnVuaworMTA2NDAgMDU2NTcyZTA3ODFhNmEyMzEzYjJkMzQ5N2Q1NjcxYjE2NGU4ZDA4ZCBsZWdhY3ktdHJ1bmsKKzEwNjQxIGNlOWZjNjQ1MjhhNzlkZDkxMGU1NDY2YzZlNTZiZTk0ZDY5NjFkNDUgbGVnYWN5LXRydW5rCisxMDY0MiAxMjViZmQ4OTY5NjcxNjMzM2NhZTRlOGMzNDdlZjdjNWZlZWI4YWQ2IGxlZ2FjeS10cnVuaworMTA2NDMgMWJiZGQ4NGM3YTQwOTk2NTYzOGZjMmZhY2Q0YjNhNDMzNzJiODdhNyBsZWdhY3ktdHJ1bmsKKzEwNjQ0IGEzMTM0YzY5NzBlYmJlOGM0YjVlYzdhNjk2Njg2MGIyMTYzMWFiZjMgbGVnYWN5LXRydW5rCisxMDY0NSBlYTU5YmI5MjEzODA1MTUxMDUxNzkxOWQxMmI4ODNiYzBmNGRjZmE4IGxlZ2FjeS10cnVuaworMTA2NDYgZjNjOGZiYzc5M2ZlYTVlN2NhODQ2ZWI4ZDgwZDEzYjAxODllY2U3YiBsZWdhY3ktdHJ1bmsKKzEwNjQ3IDZmNWM5MzZhZTJkMjIyODFkMWZhMjNkNWFmMjk0ZWEzODhlMGQzMmYgbGVnYWN5LXRydW5rCisxMDY0OCAxNTQ2ZmM3NmQwMGVjZDVlZmIwMjI3ZWJlZGVlZDc0N2RiMjVkNDk4IGxlZ2FjeS10cnVuaworMTA2NDkgYjlkOWMwZWViNDdjMjYwODM3M2JjOTQ4YTNlZjgwZDUwNmY3NGU3ZSBsZWdhY3ktdHJ1bmsKKzEwNjUwIGM5ZDBkNjMxYWJhYWUwZTAyNzJlMDJhNTJmN2I0NTg1MTE3NDkyMDcgbGVnYWN5LXRydW5rCisxMDY1MSAyODRhZGQ3NGZlMzcwNWVjMWQ1ZDcxZDZhZDkwZTE0OWI1MjNmZWFjIGxlZ2FjeS10cnVuaworMTA2NTIgNTM2ZTQzOWE2NWY5ZDBiNTIzZGY5MzNkNjJmNTY3MzRlYmZlZmFiZSBsZWdhY3ktdHJ1bmsKKzEwNjUzIDU3MzJlYzI0ODdjNTBjNmQzOWU3ZGYyNzc1MmYyMWI3MTcwZWVkOTEgbGVnYWN5LXRydW5rCisxMDY1NCA1YmM4Y2ExM2NmZTAxYzE4MTU1NTJkOTliMmE3OTJhNDIxZDRiNGU3IGxlZ2FjeS10cnVuaworMTA2NTUgMjZjNjIyZDM3MTdkMjJjNzFjN2EwOGI1NzliYjg1MWQ0ODMzM2RmNyBsZWdhY3ktdHJ1bmsKKzEwNjU2IGE4ZGYwOTBhMTJiYWY2OGY1NTI0NDQxZTIyZmJmYTkzZTcyODFjNTggbGVnYWN5LXRydW5rCisxMDY1NyBhMGEwYzE0MzM4YzA3NGZkOTZmMWU3MmNhMjVjMjQwNDZhNmJkOWFjIGxlZ2FjeS10cnVuaworMTA2NTggZWUyN2YzYTkxNjZmODAxMzMzYmYzODAxMTMzYjE2OTc0YWZhNDhhOSBsZWdhY3ktdHJ1bmsKKzEwNjU5IDMwZmJlMzAyYzUxOGZmODRlYTU5NTg4YTkxOGVlOTFjZDk0MWY3ZWUgbGVnYWN5LXRydW5rCisxMDY2MCA0YTdmZmNkZTQwZGM4ZjcwMTFlYTIxMGQ1ZDdhMmQxMTUzNmMzNzM3IGxlZ2FjeS10cnVuaworMTA2NjEgNjhlZThhYmQ5NzgyOGIwNTNkMDc4ZGFhMjdjOTA5Mjk3YTc5ZGZkNyBsZWdhY3ktdHJ1bmsKKzEwNjYyIGM2OWFkNTY2YWViMWU1MzFkYjgyYjI3NmNkMDRjYjk3ZmQzZWYwYjQgbGVnYWN5LXRydW5rCisxMDY2MyBkZTdmYzY2YzBiNGZkZmFkMTVhYWVjNDAwYWY3MWUyNWYzYTA0YWViIGxlZ2FjeS10cnVuaworMTA2NjQgNmYxZGI1MzRkZmFlNGFkZmQ0YjAzZmMxOTczYTkyMTJlYWViZWE1MSBsZWdhY3ktdHJ1bmsKKzEwNjY1IDE0MjE2NWVkODRkODBiYzA1NzA2NmQwZjQ1M2Y4Y2Q3ZTFlY2FiZTEgbGVnYWN5LXRydW5rCisxMDY2NiA5MjliN2U2ZTc1MjBjNWRiYzAyNTIyOTU1YzkyYjgwNDNkODVhM2RkIGxlZ2FjeS10cnVuaworMTA2NjcgNzc1ODA4YTA5ZTQ2Yjc3MzQxYzFhYjQ2NzIxOGFmMGY1ZjhmNTIwZiBsZWdhY3ktdHJ1bmsKKzEwNjY4IDY3MzVlZjY2MmYzOWQ4Y2NhM2ViODJkNmQ1Nzc5YzUxNzJjNmNkMjEgbGVnYWN5LXRydW5rCisxMDY2OSA5OTdkNWEyMDAwZTA0NTI2Y2Y1OWYxMzQ2YzY2ZmQ3M2M4N2E0NjkzIGxlZ2FjeS10cnVuaworMTA2NzAgY2UyZDEyMGMzOTAzZjI1NGE1ODNmNmNjNjAxOTRiMDdkYmJmNDcwYiBsZWdhY3ktdHJ1bmsKKzEwNjcxIDI1YzJhZWE2NDUwMTdjZmIxNDFjMWFhNDNjZjVlNTE5NzAxMTE3NDQgbGVnYWN5LXRydW5rCisxMDY3MiAzNWFhNjdmYzRlNjBmNmY2OTI3ZjM3MzM4YzU1Y2JkZTUwZTg0ZTE3IGxlZ2FjeS10cnVuaworMTA2NzMgYjgxYmY5Y2ExNzlkM2ViNmRjZDc3M2UwNGY0ZGFlODBiZWJjOThiNCBsZWdhY3ktdHJ1bmsKKzEwNjc0IDQ4OTRkZGQ0NTJlZWNjMTI2OTcxN2M2NTcyMDRhMjIyYTc3MTg5OWEgbGVnYWN5LXRydW5rCisxMDY3NSBiNjY4NmY3NTM3OThmODJmMTU3YjYwZWFhZWMwMmNhOWZkMmVmNjE1IGxlZ2FjeS10cnVuaworMTA2NzYgODIwZDUxMGQxZGQ2MGMwMTZlNWZhN2ZkYmJhZGQ1NzA1YWM4YzU5NCBsZWdhY3ktdHJ1bmsKKzEwNjc3IDg4NWRlNDliNDQ1YzUzYzU3ODcwYjIzYTEyYmQzMTI4ZWE5YWFhYmYgbGVnYWN5LXRydW5rCisxMDY3OCAzYTU1YjRjNWUzYzcxOTk1ZGIyZjM5NDlmZjA2YjY3YzhjNzJjOWQxIGxlZ2FjeS10cnVuaworMTA2NzkgODNhNjkzMDVjYjA2ZTEzOGEwOTdiNjhlYzdjNjJlN2UwNTAwNzc1NyBsZWdhY3ktdHJ1bmsKKzEwNjgwIGMzMWM1OWYxOTJhZjIyMDQxNWViYzQ1OGZlZjE2YTZmMzY4NWU3NjQgbGVnYWN5LXRydW5rCisxMDY4MSA0ODJlNGJhMzNjMDhmNmE2ODEyZWI4ZGE1ZjMyMzlkM2U4ZDVhMjE4IGxlZ2FjeS10cnVuaworMTA2ODIgMDUwOTYwNTJkODI1N2EwMzc4MDgyZGFkNTMyZGY5OTI2OTg1ZjcyNyBsZWdhY3ktdHJ1bmsKKzEwNjgzIDlmMGJiODdkZGU2MDBhYzliY2Q5M2E4M2JjYmI5MTA2ZmM5Mjk0YTYgbGVnYWN5LXRydW5rCisxMDY4NCBjMjhiMDUzOGE0NDY1NDdmZTc5MTg2Zjc4YmIzNWU5MWYzNWY0ZWVmIGxlZ2FjeS10cnVuaworMTA2ODUgZDZmNGMyYTUzMTJjNGUxZGQzZTJhOTBjMjMwYmMyOWZjOTViMWUwMCBsZWdhY3ktdHJ1bmsKKzEwNjg2IGM0Mjg5YjgxMzkyNGIyNzUzYzNiOWU5ODQzOTczMzE0N2U3ZGY2NjEgbGVnYWN5LXRydW5rCisxMDY4NyA3ZWQxMDdhZjlmZjQ5NTIyMGZkY2Q0ZGYwNGNhM2YxZmE0MGQwMGI5IGxlZ2FjeS10cnVuaworMTA2ODggYjU0OTQ5NjkwMDc3OTc0NDMzZGM0NzkwMmIxZmYzMWFlNmRlMzIyMCBsZWdhY3ktdHJ1bmsKKzEwNjg5IGUyNjU2OTNmMDc5MDIwNzcyNDEyMmIwODdkN2JmMzFlYWRhYzRjZGIgbGVnYWN5LXRydW5rCisxMDY5MCAzNGNjYTgzMmE0YWZlMzg5MTI2MGQ4YzA1YzdjMzY5YzhmOGE1MDkwIGxlZ2FjeS10cnVuaworMTA2OTEgMGI3ZjNhOTMyMDg1YzM0MjIwZTk5MzNkNDFkMDMxMDVkYTMzNzlhYSBsZWdhY3ktdHJ1bmsKKzEwNjkyIDIwM2UyYWI2MzkzNmEyNWZlMmIwYTFmNjlmMDVlNjdiYzE5ZjI5NjkgbGVnYWN5LXRydW5rCisxMDY5MyAxNWVhMTVlMGNhMmFiODU4ZWY0OTQ3NTk0NDAzZTY3YTBhY2E1MjFkIGxlZ2FjeS10cnVuaworMTA2OTQgYTQ0NGNkODM1YzBlMDQ2NTcxZWEwM2U3Nzc2ZjY5NWM3ZGU0MzllNSBsZWdhY3ktdHJ1bmsKKzEwNjk1IDMwYzIzODVjYTM4OTNhMGI5MmJhYWQ1MjMwMjcwYjQ2NTA2MzE1NWIgbGVnYWN5LXRydW5rCisxMDY5NiBiYzJlOWI0ZWI4ZGQ1ODQ3MjM2NTRiOTllYmIwMThkYjU5OTNkZDg3IGxlZ2FjeS10cnVuaworMTA2OTcgZjMyMDgwMGYwZmE1NWFmZTc4OWUwNDAyMWFlOGM4YjU4MjMyN2NlYSBsZWdhY3ktdHJ1bmsKKzEwNjk4IGExOTY2MTA3NjUyOWE4YWYxZmMzZmZhZDNmYjQzZTM5OWZjNzkyZTEgbGVnYWN5LXRydW5rCisxMDY5OSBmMWM5NjA5MzE0MTMxOTMzODE1ZGFjNDVkOTI5ZWQ2N2U0NDk3Mzg4IGxlZ2FjeS10cnVuaworMTA3MDAgMzI4ZDQ2YzQ3M2Y0ZWMwZTJjMGZkMGIzMmJkOWY1MDM4NTg5YmI0YSBsZWdhY3ktdHJ1bmsKKzEwNzAxIDlkNTRhYWYwMTYzZGIwZWI1MDViMjJhYWRjYTZlOGFkNDkyZDIzMWQgbGVnYWN5LXRydW5rCisxMDcwMiA2YTA4N2FlMTgwYmEzNThhMzFlYmQ3OTE3MGEzZGM4MzFlZWE1NzQ2IGxlZ2FjeS10cnVuaworMTA3MDQgZTgzNGFlNzNkZWRkZjJiYzBmNzZmOTBjMmEwNThmYzIzYzE2NWQwYSBsZWdhY3ktdHJ1bmsKKzEwNzA1IDEzNjJjOTFlZmNkMjdlMjY1MmFmZmU4ZWZhNDNkNWYyYmE5M2I4ODMgbGVnYWN5LXRydW5rCisxMDcwNiA1ZTM5NGEwN2EzYTRmMTAxZTlmNDA5ZmMyMWI5ZDRjZGQ0ODZkMjcxIGxlZ2FjeS10cnVuaworMTA3MDcgOWZjMmFmOWU1ODU5YTBiYTA3MDc4M2ZiMDdhYTlmMzVjMzk3YWNjOSBsZWdhY3ktdHJ1bmsKKzEwNzA4IDY5ZjJlMDVjYzM3OGVkMzViMWM0ZTA2OTE3YTczZDg5ODhhOTZkYzAgbGVnYWN5LXRydW5rCisxMDcwOSA0YTEzYTRkMjU4OGIzMGRiMDUxZjFjNDk4YTRlNDhmNGZhMGMxMDA3IGxlZ2FjeS10cnVuaworMTA3MTAgOWQ2NDJhNzM1YTEzMjdkMWZmYWQzNjJjZTkwN2U3ZDJiZjllZDBlZiBsZWdhY3ktdHJ1bmsKKzEwNzExIGRmNzUyYzA4YjQ2MjIwNDQyZmJiN2ZkYWZjZGE0Y2Q2ZDQ4NTUyNGEgbGVnYWN5LXRydW5rCisxMDcxMiA4NWE4YWU2ZGUyNzg1ODQxNzM0NGJhNGViNzA3ZmRjYjhjODk4NGM4IGxlZ2FjeS10cnVuaworMTA3MTMgYTEwM2NmNmQzODQ1YjU1OGFjN2VlYzM3ZWYyNzBkOWQ1YTQ4MWZlNyBsZWdhY3ktdHJ1bmsKKzEwNzE0IGVjZGU4YTQ1ZDQyNTEzMThkYjc0Mzc2YTlkMjY5MjkzOGNhMzg5MjkgbGVnYWN5LXRydW5rCisxMDcxNSAwZWM5ZGM5ZDIwMWYyZjE0NDU1Mjk5MjJkODJlYWYxY2YxZjBlZGE3IGxlZ2FjeS10cnVuaworMTA3MTYgNDA2ZGQyYjM2NzkzOTU5N2NkMWIxZTQxZDU3YjA0MTgyMDAyN2U1YiBsZWdhY3ktdHJ1bmsKKzEwNzE3IDkzMDZmNThjZGJhNWExZGEyNGMzMDViNTE2NzIwN2NhMmNjZGU4M2MgbGVnYWN5LXRydW5rCisxMDcxOCAxNDExOGI1NzY3MWVjNGFhOWI5NDRmMGQ5MDdjYjVmYTkyY2ZmNDNhIGxlZ2FjeS10cnVuaworMTA3MTkgMjQwM2U5MmE0YTZjMDhiOTUzMTc0NjRkZTBiZjg5Nzc5Zjc0MDg0OSBsZWdhY3ktdHJ1bmsKKzEwNzIwIDA3YzBhMzMxYzI2OTIyYmVmMjgxOWQzMDc2MTY1YWU4NWFlM2UwYmYgbGVnYWN5LXRydW5rCisxMDcyMSAzYmUxYWQ5YTg1ODdmMzZmYTNjY2U1OTkyMjYxOWY4NjllNmYzOTAyIGxlZ2FjeS10cnVuaworMTA3MjIgZGUyZmY4OWQ2ZDRiZWYyYjVmOWVlOGFkZWMwNGMxZDZkMWVjYzQxZSBsZWdhY3ktdHJ1bmsKKzEwNzIzIDQwMzNmZWIyNmRhODk5YTVlMjI3MGYyM2E0Y2QzZDc2ZGM0YmMzYTUgbGVnYWN5LXRydW5rCisxMDcyNCAwNzkyZGNkZThlMzExZDk2ZjE4YzExNjlmNWMwNjczNDA2MWZkYmM5IGxlZ2FjeS10cnVuaworMTA3MjUgNzRlZGQ1Y2RhOWZkOWM1NDkxZTRkOGFjODNjYjEyZDVkMmE2MWQ4ZSBsZWdhY3ktdHJ1bmsKKzEwNzI2IDEwNTJiMGIyYzZlYTBmNTA2OTBjZDQ0YTA5NTU3YjE2OTY0MTE3MzQgbGVnYWN5LXRydW5rCisxMDcyNyAyZmFlYjcyYmI2NGExOWM5MTZiZmY0ODlhYTVmNjk0MmMzN2QzMWVkIGxlZ2FjeS10cnVuaworMTA3MjggODUyM2VjYWY1OWM1NjlhOTIzOGRjMzMxNWVlZWQwNzJlMjEyN2RjMCBsZWdhY3ktdHJ1bmsKKzEwNzI5IDczNTZkNDg4OGE4YmNhOTM0NDBlMjlhNzlmYjU5NWFmY2VhMmRjMmMgbGVnYWN5LXRydW5rCisxMDczMCAyNDZhY2FkOWM4OTNkYmQ2ZTc5Y2UxMDk3MzBjODIzNDdiNTZmNjIxIGxlZ2FjeS10cnVuaworMTA3MzEgYWIwZDVmMjY1ZDU0ZTk4ZjA1ZDhjNzljMGZlMmFlYTI5ZWFiYWIzMiBsZWdhY3ktdHJ1bmsKKzEwNzMyIDUwZDM1YmRmMjA0MmRlMjBjNmU3YWEyMWYxYjg4ZjQyYzg3ZmE5NTcgbGVnYWN5LXRydW5rCisxMDczMyAzN2MzZWM0ZjNkM2Y5YTczZDc2OGVlYzA0NDNjNzZkZTk4NWM1ZDJhIGxlZ2FjeS10cnVuaworMTA3MzQgZmMzMzUwYWU1ZjJhOTU2NzFmNDg1NTViNDg2ZDc4OGMyOTBkOTQ1YSBsZWdhY3ktdHJ1bmsKKzEwNzM1IGJjNTBmNWMyMGJjOTYxNTlkOGQyNThiYWEwOTM4ZmE0MTc4ODMyMzEgbGVnYWN5LXRydW5rCisxMDczNiAxMDI2ZDAzM2MwZGQ5YTJhOGRjNzEyZTVhMzQ4NjhlZmU3ZDhkNThiIGxlZ2FjeS10cnVuaworMTA3MzcgMTBjNjA5ZmU3ZGViYzhiNzg0ZWQ5NzFhYmQ0YWJlZTEyYjI2MWQwZSBsZWdhY3ktdHJ1bmsKKzEwNzM4IGE4YzIxYWNjYmVjZGI5MjVkMWUyMzMyMzMyMTY2ZWJhYWEwN2JiZmYgbGVnYWN5LXRydW5rCisxMDczOSAxMDdhODUyNWJmNWViNWY2MGQ1MmY0M2QxYWRmNGMxMjRkOTJmYWI2IGxlZ2FjeS10cnVuaworMTA3NDAgZWI4MzVlZDFmNmZlODM3YTgwYzFiNWE1NTdiNGJhZDlkNWRjY2MzMSBsZWdhY3ktdHJ1bmsKKzEwNzQxIDliMDdkMjdhMzFiZDc5YTVkNGRjNTY3MDIxOWZkYzI2MDBmYTM1M2QgbGVnYWN5LXRydW5rCisxMDc0MiBkODNmMWJjYmIxNTA1YzZjOGI3Y2FiNmRmMGIwZTI5YTllMTQwNGJmIGxlZ2FjeS10cnVuaworMTA3NDMgYjhiYTg4ODdkNTlmN2Y2YmNiMGYxNTYzMGJmYmQ1MGYxMjQ2NzhmYSBsZWdhY3ktdHJ1bmsKKzEwNzQ0IDhiODIyMDgzNzI2YjFjNmIzNmQ2OTAwNzNhOTc4NzFiZjExNjNiNzMgbGVnYWN5LXRydW5rCisxMDc0NSBiNGQzZDFhMDhlNGRhZTYxOTM4NGFkZWM4YzVjMjdhYWY4ODJhMGUyIGxlZ2FjeS10cnVuaworMTA3NDYgY2UxZWQ3ZWI3NzUwNzc5NmUxODJiMDA0NmQ3YjA5YjA3NjgzZTBiZSBsZWdhY3ktdHJ1bmsKKzEwNzQ3IDBkM2I3M2Q5OTU4ODhlOWI5YzZjMjU4ZTBlMTBmOWQyZjdlZTVkMjkgbGVnYWN5LXRydW5rCisxMDc0OCBlYTRiN2E1NGZkOTJmYzRkYTQ0OWM1YTFmYTkzMmMyNWMyZTUzNjNhIGxlZ2FjeS10cnVuaworMTA3NDkgYzM0NTdmYjE4YTUxMDdmNmQwN2RkNTE5YjhjZmRlMjIyMGU4MzcwZCBsZWdhY3ktdHJ1bmsKKzEwNzUwIGUxODRmODNiYmI3OTdkNGMwN2Q1M2JmOTgyYzM5NDUxZTYzNWNlOTMgbGVnYWN5LXRydW5rCisxMDc1MSAzZDY1ZjYxNmY5M2U1ZTQ1MmMwNmUxNjgyYTJkOGZmNDNkZGVkYTVhIGxlZ2FjeS10cnVuaworMTA3NTIgYWFhMWM4YjUyOWY1MjU4MDE2NThiMGJlZWYyMGU5NjI0YTNkYTEyYiBsZWdhY3ktdHJ1bmsKKzEwNzUzIDY2YTJlYTYzYjRkODU3OGE4NGQ5MTZjZGJiMGQ0M2E3Y2MzNzQ4MjIgbGVnYWN5LXRydW5rCisxMDc1NCBlNDY5YThhZjA0YjIxZDRmZTE0ZmFkMDQwOGE4MTdhMjk5ODFkNWYyIGxlZ2FjeS10cnVuaworMTA3NTUgMmRkODkwYWYxODdlMTA0NDY5NzJlMGRkODI2NTQ0NTQwZDEwZjg3MyBsZWdhY3ktdHJ1bmsKKzEwNzU2IDFkYjQwOTlhNzJjZThiMDc5YzIxMDRkN2Y3YWM2OWM4MzI3ZjQ2NjcgbGVnYWN5LXRydW5rCisxMDc1NyA3YjI1MDA2NTc5ZjRjZmMyNWM2ZDEwOTk5MTcxYzM3MDVmODAzNjU4IGxlZ2FjeS10cnVuaworMTA3NTggNzA3NjUzMWVmYjhmZGIzM2NlNmNlZjQ1MGYzMzY5NzVjZWRiNjZiOSBsZWdhY3ktdHJ1bmsKKzEwNzU5IGQ4MWYzMTYxNTY3YjVmZjE3NWNhNjg5ZjAyOWU5MjUzNDhmMjk1YjQgbGVnYWN5LXRydW5rCisxMDc2MCBjN2QwYjk3MWUwZTM5MjVhMzQ1ZWRkOTgxODRiYTRkYmJkMGVjNzViIGxlZ2FjeS10cnVuaworMTA3NjEgMzVkMWNlZWQ2OWI5ZWFlZmE0ZTRmOWUzMDBjN2ZkMTBjODk2OWY2NSBsZWdhY3ktdHJ1bmsKKzEwNzYyIDYzMWExNTljZjA0MGIxYTliMzM1MGQ5OTNlYTA1MzhjZmIyNjUxM2QgbGVnYWN5LXRydW5rCisxMDc2MyAyYjJkMjFlZmM0ZDcxNWUxOWIwODBmMjhkNmFjZjM3OWNhOTAwNjI4IGxlZ2FjeS10cnVuaworMTA3NjQgNjU4OGFkZTBlZmI3NzRlOGJiOGRkMmRkZDk3YjM5YmE3MWE1NWEwNyBsZWdhY3ktdHJ1bmsKKzEwNzY1IDM4MThhMTlmNzQ3ZjBhODg0YzRlZjM5MDQ5N2EyYTYwNzA4YzkwYWUgbGVnYWN5LXRydW5rCisxMDc2NiBmODM0ZTE5N2JkMTQ2ZGE3MjhlOTY3ZGVhNWM5MjQxYjA0MjdjOTFlIGxlZ2FjeS10cnVuaworMTA3NjcgMzJiYzE3ZjdjNzdiY2U3YTM1NTU2YWY5NDUwZTEyY2E1ZDc0MDcwYSBsZWdhY3ktdHJ1bmsKKzEwNzY4IDRjODhjYzYyZTllOTBhODQzNGYwNzUwZTM3OWU2ZWQ0YTQ5NjVjYjUgbGVnYWN5LXRydW5rCisxMDc2OSBkM2JmM2MyYWQ3NWE5ZmU2ZTU5NTY3YmMwYThlZThjOGI5YzVlYmYwIGxlZ2FjeS10cnVuaworMTA3NzAgNmVkOGE3ZmZjNTk1MzcwNGFiOGY0NmJkZThkYTJkZWY0YWNhNDE4NSBsZWdhY3ktdHJ1bmsKKzEwNzcxIDkyODFiNWQzNTY0MWEwYzA1Y2Q4MGZlMDE0YmQyOTMwNDA2NzQ3N2EgbGVnYWN5LXRydW5rCisxMDc3MiA3NGE5MTBiODZiNDQzZDM1MjU5NWVmMDNmZjc3ZmEwNWZlODYzYTQ5IGxlZ2FjeS10cnVuaworMTA3NzMgZjhhMzg5YjEwNGYwOTFiMmY2M2ExNmIzYzg2NjgwZGU5MzBlZDk1MSBsZWdhY3ktdHJ1bmsKKzEwNzc0IGZmNjMxMDdjOWZhNWQ3OGZmYzg0Y2E0MmYyMTAyMTZmZDI1ZjU4MzEgbGVnYWN5LXRydW5rCisxMDc3NSBmMmJiOGQ1MTk1YjY2ODc0YTUyMzcyYjZmMmM3OGNjYzI5MjhjZjU2IGxlZ2FjeS10cnVuaworMTA3NzYgMzVlYTBjMDczZWEzZDMxMTU0ODdmNmI3M2IwODExOTE3N2U2NTVlZSBsZWdhY3ktdHJ1bmsKKzEwNzc3IGI0Mzg5ODZiM2MwOGQ4M2MxMzNkNmFlODQ2MWY3Mzg2ODgwN2ZhNzQgbGVnYWN5LXRydW5rCisxMDc3OCA1ZGQ2ZjFmZjY2YmMwNTA5OTUyMDYxZDMxN2NhY2QwZjI0YmE2M2YxIGxlZ2FjeS10cnVuaworMTA3NzkgYmY4ZTg2Yjk1YzkyMjZhNTcwOTYxMTFiMjcxMzc5Mzg2OTBhMDZhYSBsZWdhY3ktdHJ1bmsKKzEwNzgwIDlkZDc5ZDAxMDRkOTZmNGE1ODhlNmY4YjE1NThmZmZkMWU4ZDhkMjEgbGVnYWN5LXRydW5rCisxMDc4MSA0YzNjMTJlOTU2YTc1NTg1YjczNGQwNjY3MzFiMjc4NWIzZTNhMzIzIGxlZ2FjeS10cnVuaworMTA3ODIgZTNkMjFjNGNhMzYyZmQzMDkwNzZmYTMzZWU2YmFiNGM4OTI4MGU5NiBsZWdhY3ktdHJ1bmsKKzEwNzgzIDhiNTA3NTFmMjcyYzg0ZWU4NDY5NDY5N2NiNWRiNGI2MWI2OGI1MjMgbGVnYWN5LXRydW5rCisxMDc4NCBkM2YzYTA1NjhiZDZhMDhkMDgzZDdjNDM3MWY2NmRlNDRiOWJhYzA1IGxlZ2FjeS10cnVuaworMTA3ODUgYjU5Yjk5NDJiYWM5NjFlY2E1ZGIzN2JlNWVhZmIyOWFiZjBlMmRhZCBsZWdhY3ktdHJ1bmsKKzEwNzg2IDYyM2M0NTlmOGZiZWRlYjc2ZGYwZDQzNTdlZTZlOWQxMDIxNTE1NzEgbGVnYWN5LXRydW5rCisxMDc4NyAwZDJkNjFmNTJiOWM1MmQ2MWU5NWU4MjU5Y2YwMDI2NDg0N2I1ZjIzIGxlZ2FjeS10cnVuaworMTA3ODggNDY3NGNkMmY2ZjA3MmJjZThkZDdhZDNmNWFiMmU2NTRmOTI0MDcyNyBsZWdhY3ktdHJ1bmsKKzEwNzg5IDA4ZGY5Y2I1NzNhZGFjODE1NjkwMjI5NDRmNjBiYmYxYjg4NDQzOTIgbGVnYWN5LXRydW5rCisxMDc5MCBmZTFmZDU2Y2FkYTcwMjAwMmVjYTUwZTY4MjM2NzQxZjRjNTg3YTZhIGxlZ2FjeS10cnVuaworMTA3OTEgNDA3MDg1OWZlNjJlZWE0MDg0MWU1NzQ2NTliNWQ4ODBiMjA1YzI3NiBsZWdhY3ktdHJ1bmsKKzEwNzkyIDQxNDI0N2Q0ZmVkNzNhM2JkYjMyY2RiZGQyNzVmNGQ1ZmJjODg1ZWIgbGVnYWN5LXRydW5rCisxMDc5MyBmNGZjOWQxOGE1M2Q0NzMzODE0OGI5MTQ0OTI2NzFlY2E3ZGI4YmNjIGxlZ2FjeS10cnVuaworMTA3OTQgZDY3YmUxM2RhM2NjMThlNDk0NGRmYTg3NTdiMjJiMGNkMzM3ZTk5MyBsZWdhY3ktdHJ1bmsKKzEwNzk1IGM2MjM2MGFhNWVhNDBhYWI4YjlhZWU4N2ZhNGQ4YWQzMDE1OGFhNzIgbGVnYWN5LXRydW5rCisxMDc5NiBmOTRkNWFlNjQyYTliMWNkZThmZWIxMDcyZjlkZjVjMmRhYTJmZWQwIGxlZ2FjeS10cnVuaworMTA3OTcgZTQyYjk0Mjc1NjUyYjlkNTgxYmE0NjYwN2Q1ZWI4YzM1ODFmNzExNCBsZWdhY3ktdHJ1bmsKKzEwNzk4IDYzY2NlOWQ3Nzc5NzYyMmU1OTQ1NzNhOGM4ZDFjMjJhNjZiNTYxZGYgbGVnYWN5LXRydW5rCisxMDc5OSA4MTA1Nzk5NmZmMjFkMWM0YWYyYjEyOTkzMWI4NTU1NjRlMmM5N2M1IGxlZ2FjeS10cnVuaworMTA4MDAgZWM4N2I2MjQ2NmQzYWFkNGE1MTNmM2UyYTRjM2ZlYTFiYjBkMzZmYyBsZWdhY3ktdHJ1bmsKKzEwODAxIGRmNDAzZWQzNWJkZGUwMGEwZTI3YzdlNTZiZTlkNzUxNDVlZmVhYTkgbGVnYWN5LXRydW5rCisxMDgwMiBjMTRlNjhmNTkxY2UzMDViZDhkZGNmMzg0YzQ1ZmUyYTBhYjBlM2I5IGxlZ2FjeS10cnVuaworMTA4MDMgOWRkZDY3OTMxOWE5ZDgxMDE0YzUzOWJmY2EwZTgzY2M0Mzk5ZGVmMyBsZWdhY3ktdHJ1bmsKKzEwODA0IGU2ZWYwZTM5ZTM1Y2VkOGQ2OTYyZDM5YzEwOTU3ZDhiZjlhZDk0NmEgbGVnYWN5LXRydW5rCisxMDgwNSBlMTM5MjEwNTAzMjc4M2M1ODcyYjE0N2RiZWM5MjliMWY5MjliN2Q2IGxlZ2FjeS10cnVuaworMTA4MDYgYzQ5YzhmN2ZkZmYxODZjZTE0M2IyMjRjZjc2NGM0OWU4ZjMyOTcyOCBsZWdhY3ktdHJ1bmsKKzEwODA3IGFmMTFkYmYzNWVlNWU5ZmE5YWY0MTgwYTdlNzdiMmUyYzMyNzM2MzEgbGVnYWN5LXRydW5rCisxMDgwOCBhMjNiNzUxMzhiYjBmYjIzZmZhMzQyNDRiMGM0MTE1MmMwZmU3MzQ3IGxlZ2FjeS10cnVuaworMTA4MDkgMTg5Nzc0NzczOGY1OThmYTMxYWU3MThkNTI3YjE3MmJjZjFmNzIyZSBsZWdhY3ktdHJ1bmsKKzEwODEwIDQ4MjQwZjUyNWVjM2JlNTgzYzU5NWJhOWRkNmUzNDE5MjJhNjVkYTUgbGVnYWN5LXRydW5rCisxMDgxMSBjZDgyODQ2MmFjYmI4MmVjMDliMDA4ZGViYjRkMGE0MTk0MzU2MGI2IGxlZ2FjeS10cnVuaworMTA4MTIgN2ExZTdkYTkyMmY4NzA1NzJiOTg0MzJiNTgwYjBhNWRkMGVjYjVjZSBsZWdhY3ktdHJ1bmsKKzEwODEzIGM1OWI1NzM2ZjMwN2YzNTBlMWEwN2IzYzk1ZTc1YjZkZTRkMGVmZDQgbGVnYWN5LXRydW5rCisxMDgxNCA5Njc5ZTc3ZDQyZTNkNThlYWRiODE5MWM4NzJiNWYzMmY4MGNjNDNkIGxlZ2FjeS10cnVuaworMTA4MTUgYTRhZTc5MmI5YjY4MDJhZDIwZWZiMDM0ZGY3ZjhiYjFkYmYyNWE1OCBsZWdhY3ktdHJ1bmsKKzEwODE2IDViZmI1ZWRjMzEzY2I2NjIxMzAyNTNiN2RlZDY5NmVlZTQ2ZTg4ZTMgbGVnYWN5LXRydW5rCisxMDgxNyBiZjExMjYyMDI2YmRmNzUyNDRjNGNjNTg2YzczMTY2N2IwMzA4MjQwIGxlZ2FjeS10cnVuaworMTA4MTggNmI3MDk1Yjk4ZTU0Y2E1YjExYjc2ZTQ0NjBiMTZlYzFiZGFkZDM2OSBsZWdhY3ktdHJ1bmsKKzEwODE5IDhkOTBlNzgxYWRhOGJjMGE5YjBkZjkwMmJhZmQzNmUyNzE0ZmYyMTIgbGVnYWN5LXRydW5rCisxMDgyMCA3NjU4YzhhMTQ5ZDE4NWIzNGJhMGFhMDhiZjNlNmMyMTU5ZjYyZmI0IGxlZ2FjeS10cnVuaworMTA4MjEgMjhkYWU5MWM1ZDBjY2RmZmQzNDMyZGMwMDVlMDA3MDZkMjAwNmRlYiBsZWdhY3ktdHJ1bmsKKzEwODIyIGE4NGY2NThkNGJhNGNlY2IyMmM1MmU4NDNiZjA5ZDIxYmI3NWRiOTUgbGVnYWN5LXRydW5rCisxMDgyMyBlYmZkZTA2ZmRiOGQ4Y2Q5ZGY1ZTUzYmYwMzAzNmQwZmM2OGM3M2M5IGxlZ2FjeS10cnVuaworMTA4MjQgMjI4MTVhMGIxMjY3NTZlNDFkODE0MDNmNTU0ZmVjYmUwNjU5NTNkNiBsZWdhY3ktdHJ1bmsKKzEwODI1IDFiNGEzN2YzNzM0NTBhZGU5YjIxZTIwZmVkYmYwY2ZmYzk1YWMwMjcgbGVnYWN5LXRydW5rCisxMDgyNiBkMmQ4MmY3YjQxOWE2MDExZGZiM2Y3MjJmZTY2ZGRkYjk4MmE2ZWU4IGxlZ2FjeS10cnVuaworMTA4MjcgMDUxOTZhNGU1NDQ4YmY4Y2M1YmM1NWRkZmIwZmEyNWI5MTYwMWQ1ZiBsZWdhY3ktdHJ1bmsKKzEwODI4IDFiMzkzZGIwMGIxYWI4Y2IzZWNmMGJkYzg0NDEzN2FhOWZhNTI0ZDQgbGVnYWN5LXRydW5rCisxMDgyOSBlN2RkOTkxZmFhNGFmMTkwYzA5N2Y0NjBjZTgwYTJjMWYwMDkzMDMwIGxlZ2FjeS10cnVuaworMTA4MzAgOGQ5MzczYmQ4Mzg0ZGZjYzY3ZGI3YmI2YTVhYmU5MWY4OWM0YjZmMyBsZWdhY3ktdHJ1bmsKKzEwODMxIDQxNzJkYTkxNDQxYWEwZjU2NDJhZThmMWRjNjU2Mzc0ZjMyZDg2MWEgbGVnYWN5LXRydW5rCisxMDgzMiA1MmMzMzk1MjQ2MGE4ZjQ0N2EyZDlhNGExMDk2MDEwYmI4MmQxNTM3IGxlZ2FjeS10cnVuaworMTA4MzMgMjUzYmZjYjY1Yjc3MzQzYWExYTg2MDZkYjUyN2ZmM2FkYmQzMTAwYSBsZWdhY3ktdHJ1bmsKKzEwODM0IGM1NzE1NTQxMzRkMTUwNTE3MjY4YjE4MDdlMDU4NDMyNGQ4N2VmOWMgbGVnYWN5LXRydW5rCisxMDgzNSBjODkxOTFjMmU2M2YwMjA4ZjkwMWZjZTJiYmNhYjkyMWYzNDZlOWJmIGxlZ2FjeS10cnVuaworMTA4MzYgZjMwODk2MWIwM2Q3ZDUxZGVmOWY4OGZlMDM0NzliOWRmZDAyMDNmMSBsZWdhY3ktdHJ1bmsKKzEwODM3IDFiYzBkZjk2YjRkZGMzZTkwNmYxZDdiYzFhODI0YTBmMTQ3ZDMwYmUgbGVnYWN5LXRydW5rCisxMDgzOCBhNzQyM2U2OGNlZTk0NzQxZjZhNTk4OWJkNTdmM2IzNzc1MTc5MTE0IGxlZ2FjeS10cnVuaworMTA4MzkgODIwZjA2YmI0MWM3ZjU2ZjVmNTQ0YTVlNjljYTI2NGZmM2Y4ZWIzMCBsZWdhY3ktdHJ1bmsKKzEwODQwIGRhNGJkY2VlYWFkN2E3NjlkMzZjYTY3YTg1ZjE3ZWU0OTQ3N2I0OGMgbGVnYWN5LXRydW5rCisxMDg0MSA3MzlkNWZkYWZjMzJlYjJhNjA5N2U2YTVlM2MzNTUzNmYyNTlmYjkyIGxlZ2FjeS10cnVuaworMTA4NDIgZTA3NDZhMGRhNzM2MmIwMzJkZTk2NWZhN2M1MGRiMWY0ZWY5MDg3OCBsZWdhY3ktdHJ1bmsKKzEwODQzIGU4MGQ0YzNkYmI3ODdjOGU1Yzk0OWY5Zjk1M2IwOTVlYzA1YTNiMTQgbGVnYWN5LXRydW5rCisxMDg0NCBlNDEyMTFhN2FlZjNmYTUxMWU0YTg4MjY3MTNhNDZlNWNmY2NkNWVmIGxlZ2FjeS10cnVuaworMTA4NDUgNTJkN2E5ZTcxMjIxNTJhOWY3N2EzYjA3NGEyY2VjOWI1M2JkMmI2ZSBsZWdhY3ktdHJ1bmsKKzEwODQ2IDQ1NWIyMjk0NTQ4MmZmMGY0NjYxY2U1ZjlkZDhjODU0YmZmZDZhYmQgbGVnYWN5LXRydW5rCisxMDg0NyA1ZjgzZjk3YWFlYjhlMTkyMzkwYzE2NTE3ZWIwNmNlODQwZjVkNjdkIGxlZ2FjeS10cnVuaworMTA4NDggZTE3YTAxOWY5MzkwZjdmNTBkZmVhYmJlYjgxZTI2NTJlZDE5MDNmMyBsZWdhY3ktdHJ1bmsKKzEwODQ5IGE0NjRlOWM5ODVmOGU1YmY5ZGM1MWJlZGVlMmJlMzM2MjI1MmZkNjUgbGVnYWN5LXRydW5rCisxMDg1MCAxYzdhODJkNDY5ZTA2NzE2N2FlZmQ2YWEyOGE1NDJlODhhYWY2OGE1IGxlZ2FjeS10cnVuaworMTA4NTEgNjUwYmQxM2JlYzkyZDExM2ZmNDljOTIzYWMyOTU0NWE3N2IwNjQ4MyBsZWdhY3ktdHJ1bmsKKzEwODUyIGYyYjA4NTlmZWNlM2JiZTdmNTk3MDAyYjY2OGY1M2RlZTA0OWU1MTMgbGVnYWN5LXRydW5rCisxMDg1MyBhNjU5MzBmNWNkZGJjZGI1ZjcyZWIxMTRmYmI0MWVmMDIyN2ZjZjI5IGxlZ2FjeS10cnVuaworMTA4NTQgNmFkN2MxNjU2ZDE4YjY5MzQxOWZjMDlmMTUxYmU5ZDQxN2IzYTZhZSBsZWdhY3ktdHJ1bmsKKzEwODU1IDZjODI2ZWUzZTU1MzhlNDExNThjOGZiZmJhNzUzODZkYzEyMDY2YjcgbGVnYWN5LXRydW5rCisxMDg1NiBhMWJmZTViYzZkOGVhODFhNDQzOGMwNzUwZjJhYTFkOTc2YmIzNTIwIGxlZ2FjeS10cnVuaworMTA4NTcgMjQyYjNjOWM1YmVjMjczYmE4YWQ4ZTMzN2E0ZmIyNmE5ZDY4ZTExZCBsZWdhY3ktdHJ1bmsKKzEwODU4IDc3YzFmMTFkMGE4YWZjYWY3MDg5MDFkODZhZmFlYjQyYjIzYzllZjEgbGVnYWN5LXRydW5rCisxMDg1OSA5NWY3YzUyYjYzOTk0NzdjMjM0N2Y4MWU3NDkxMThlMDJiYmUwYmViIGxlZ2FjeS10cnVuaworMTA4NjAgN2FjMTVmMWU1MzAyMTA4ZjQ4MzE2NWI5Nzk4ODk2NzRjMDY4ZjllYyBsZWdhY3ktdHJ1bmsKKzEwODYxIGY1ZWJjYzdhNWFiMjZlMWY3MTA1NTkyOWYxNzU5NjdjYmVhNzIzYjMgbGVnYWN5LXRydW5rCisxMDg2MiBjZDJkZmVkMGM0NGI1M2E0OGMwZmE1MjFjYjExYWQ0MzI3ZmRiYjY2IGxlZ2FjeS10cnVuaworMTA4NjMgODIyZTA4MTJmMjBjMzU3MmQwZTU2NDkyZDY2YTY3YWM4YWE3ZGMwMiBsZWdhY3ktdHJ1bmsKKzEwODY0IDA1ODE5MGM5YTRmMTI2ZTg4ZjVhNDlhODBjMTI0Zjk3ZjE3ZmFiOWEgbGVnYWN5LXRydW5rCisxMDg2NSA5MWJiNWE4MDk0ODFhMmIxYzk2ZmY1YzA3MzJkZDYwYTUzY2RlMDg2IGxlZ2FjeS10cnVuaworMTA4NjYgNzUyYjlmNTU1Nzg4YzAyNzdjMTgxMDc3MjMzYzJlNDRiYWNhNzYxOSBsZWdhY3ktdHJ1bmsKKzEwODY3IDNhMzEwMDE4NDk0OThlMzc0YzAyNDM3ZjA2ODIzOTZmNTI4YTc1YjUgbGVnYWN5LXRydW5rCisxMDg2OCBkNmI4NjNkMWJlYjkyNDRhY2ZiNzVjMmZmNTJkNDM0MWVjMTgxNzIxIGxlZ2FjeS10cnVuaworMTA4NjkgOGU5ZDVlNTEwM2Y1ZGMxNzViMWE4NmJmOWZhNzJjMmIwZDgxMmUzYSBsZWdhY3ktdHJ1bmsKKzEwODcwIDczYTI1Nzc5ZTgzNzJlMTFlMDAwMDNmZjc1YjQ3ODE1NTNiYTFiNWMgbGVnYWN5LXRydW5rCisxMDg3MSBkZTY4ZjgzYzE2OWNhNjg4ZTUzODkyMmY3ZjQxNzQ5OTA1MDgxNmM5IGxlZ2FjeS10cnVuaworMTA4NzIgNzZjZDAzOTc5ZmNhNDIzYTg3MWYwNDk2NWNhZTVmNzlhYmVmYTJkMiBsZWdhY3ktdHJ1bmsKKzEwODczIGE1ODJkNzBlMzEyZmVlZDkwYTkwNzM0OTkwYWY3YWZlNzEwNTU4ZmIgbGVnYWN5LXRydW5rCisxMDg3NCBlZjliOTNiMmEwZmFhMzMwYjRmM2I3N2JlMDI0YWQ0MmJlZjY1YTY0IGxlZ2FjeS10cnVuaworMTA4NzUgNzY2OWRkZjBlN2Q0OTUwYTdjYThmM2U4M2Y2NTZkZWMwZDZhYjNiZSBsZWdhY3ktdHJ1bmsKKzEwODc2IDkzYWEwOGM3N2U2MGViMmJkZmVkZWFlMzliN2MyZDc3NzM5OTJkNjQgbGVnYWN5LXRydW5rCisxMDg3NyBkN2M1NjhlNzcwN2JmMTc5OGQ0NWQyNjEwNTMzNmEwNTNmMjgzZTA4IGxlZ2FjeS10cnVuaworMTA4NzggNzkwNzFhNGUwZWNhYjYzMTQzZTk4M2ZiYmVlYTRjN2Q5OTM5NWQ3NyBsZWdhY3ktdHJ1bmsKKzEwODc5IGM5YjdlOTI2ZmQ4Njk5NWYxODEwNjM1MjgyMmQwYmJiYjRiZTljNjEgbGVnYWN5LXRydW5rCisxMDg4MCBmZjMxZjI1MDE3NDI1MzUyYzMxZmQ4MjdjYmIwZDI4ODM2Yzc0NTIzIGxlZ2FjeS10cnVuaworMTA4ODEgNGVmN2QyNjBmZWFjOTMxZWMxOGI3OWQxZDM1MWZhYmY2ZTVhYTQzMyBsZWdhY3ktdHJ1bmsKKzEwODgyIDYyNzBjNmJhZDgxMTZmZTE3YTdlZDRjODFkNTI5ZjFkMGFiNDk3MGIgbGVnYWN5LXRydW5rCisxMDg4MyA3MGY5M2UwYzU4MGVlY2FmYmEyOTI5NzVhOTA2NzViNjI1ZDczZDRiIGxlZ2FjeS10cnVuaworMTA4ODQgMGNiMDM5NGMyZWRjZmUxODNjZDc3N2M4N2JlODY5OWI1OGE1OWUyMyBsZWdhY3ktdHJ1bmsKKzEwODg1IGM0ZGY4YjY2MzdiNjk0NWIyZjllODIzNjNiZjZkMTVjNzA3NjBhOWEgbGVnYWN5LXRydW5rCisxMDg4NiA2NGI4OGExNzgzMjg2OTFjZDRjMjVlNzhkZTdhNWRmZmIxNWM5OGY4IGxlZ2FjeS10cnVuaworMTA4ODcgM2M0MGFmMmQxZGU5ZTEzNGI1ZTdkYmQ1ZTNiMTA3MmZmYmE5NjJlYyBsZWdhY3ktdHJ1bmsKKzEwODg4IDRhMzNiYjdhZGY3ZDYxYmI4NDZkMjQ5YTNhMDM3ZTEwYTQ4MWY5ZTEgbGVnYWN5LXRydW5rCisxMDg4OSAwOTY4NTdiMGU0Yjg1ZGJkY2UwN2M3NjkwMmUxZjk5ODc2M2I5ODU0IGxlZ2FjeS10cnVuaworMTA4OTAgOGE0ZmUxOTliNDVkZWY3MjhjYzJkMzJjMWQ4MTMwMWVlZDg5NWVkMyBsZWdhY3ktdHJ1bmsKKzEwODkxIGYyMTg2N2Y4MDM1YmQzODk5NWMyZjFhYWUxYzM3ZjgwNWY3MzhiZDYgbGVnYWN5LXRydW5rCisxMDg5MiBjOWUzY2U4ZTc0YjVkN2Y1MWI0ZjA5M2EyYTI2N2NiZWNiZDZjOWNhIGxlZ2FjeS10cnVuaworMTA4OTMgZGI4YjEwYjdjY2YyMjQ5NzU0NzE4ODA2ZjUwNDEzYjAxYTZlN2FlNCBsZWdhY3ktdHJ1bmsKKzEwODk0IDQ1MDUxNjBhN2U1YzZjZTEzNmRmMTEyMDJlOTlhNjY2ZTk5ZDMxYWIgbGVnYWN5LXRydW5rCisxMDg5NSA1NWZjOGQ5MzMwODc2NmYxODljOWNmNjkxMDBlODA2NDYxNmNiOTZjIGxlZ2FjeS10cnVuaworMTA4OTYgNDA2NGI2NzI5NTM3ZjAzMWMwODc3OTk3OGVlNmJhNjMzMjMzMmVmOCBsZWdhY3ktdHJ1bmsKKzEwODk3IGVjZGQ0YjQ2ODYyNjg1OTJjODUzZTc0YjYyMDlhNzBhMGQzMjkxZmUgbGVnYWN5LXRydW5rCisxMDg5OCA5ZWE1MDAzMTE0OWMyMjA0ZTdiNTg4NmQ5YzJiZjYzMDA0MGE3NTY5IGxlZ2FjeS10cnVuaworMTA4OTkgZjM5ODQxOWQ1MGY5NzRjNTU1ZWI2ZjI5MjNkZjkzODUxNDkyZDdiYyBsZWdhY3ktdHJ1bmsKKzEwOTAwIGI1ZmY2NjNlZTc2ZDllYzMwNjMxNDM2YTZlMDBiODM0NjYzZmRjNGMgbGVnYWN5LXRydW5rCisxMDkwMSBjODVlMTQyOTNjMmVlMWNjNDUxNjNmODVkZWNmZTIxMTQ5NDZjZDA5IGxlZ2FjeS10cnVuaworMTA5MDIgMzA0ZDRlNDg4N2Y0Y2E2MGE3YzQ3ZjMzN2IyYmMyMmZhOGMyYzFiZSBsZWdhY3ktdHJ1bmsKKzEwOTAzIGQ5NmNiZGFjYmU3MjI0YzlmOThiNjIwMzBlOWQyOThlY2ZiZjhlOTggbGVnYWN5LXRydW5rCisxMDkwNCA0NzJlNDI1NDE0ZDgyNDdmZDkzNzU3YzliNTUzNTIxMTRjNjc0OGY2IGxlZ2FjeS10cnVuaworMTA5MDUgMGEwMGRkNTcxMWU2MjEzMTlmOWFhYWU4YWI2ZWFlMTZjYzk3NGNlOCBsZWdhY3ktdHJ1bmsKKzEwOTA2IDc1NmUyZWY1MWIxOWM2M2ZkMDRlODc5NDhmNTZhYmU4NjY0NGYxNDMgbGVnYWN5LXRydW5rCisxMDkwNyBlMmQ0MWJmMWEwZjA0Y2VkNzVkMzMwM2Q2ZWUxNTMwYWQyN2JkMTI3IGxlZ2FjeS10cnVuaworMTA5MDggMGIzZTU3N2E4ZGY0N2JmZmVmOWZhNTA1N2MzMmNhZDc4MTI1OGMwMSBsZWdhY3ktdHJ1bmsKKzEwOTA5IGU5NmUzZDM4NzYxMWYwM2EyN2NiYmI2YmJmMzk2NWJiMTMyMjAwMjMgbGVnYWN5LXRydW5rCisxMDkxMCAzZTY1M2UyMDRhZDdiYmZlOWE0NmI3MDE3YmY2MjMwMDljZDRlNTQ0IGxlZ2FjeS10cnVuaworMTA5MTEgZjdjNThlZDI5ODFkMWViMWJmNTM1M2U2OGRiNDI0Yzk5OTM5M2QwNSBsZWdhY3ktdHJ1bmsKKzEwOTEyIDEyZGRiOWJkMGQzMzkxZDU2MzE0YzA5YmQyNjAxNzA5MjhiZDQ5NDQgbGVnYWN5LXRydW5rCisxMDkxMyA4MmYwMjFlZWNlMmM3ODdlYmEwMjMzZjEyNmU2ODlmOTk4YmEwYzViIGxlZ2FjeS10cnVuaworMTA5MTQgOTJjMGM5OGI0MmM1MzY3NzhiNTIzYzg4OTkwNTZhYmE5MTUyZTQ0NCBsZWdhY3ktdHJ1bmsKKzEwOTE1IDdjZGZmOGFhODMxODNmN2Y1MWQzMWI2MTdjYmY4ZTc1NmRkZTQ5N2QgbGVnYWN5LXRydW5rCisxMDkxNiBhZTc0NmVhYjJhOTYwNTU0YTg1ZTllODg3NTU5MTUxMDcxZGI0ZjU1IGxlZ2FjeS10cnVuaworMTA5MTcgNzhlYjQwZjAzMjg0M2NiMWVhYTE0NDIwYjA4MDZmNDMxMDljODhhYyBsZWdhY3ktdHJ1bmsKKzEwOTE4IGE5YTc4OGM3NGQ2ZTdjMjUxNWUwM2MxZTlmNmFmZjRlNzZiNjNiNzQgbGVnYWN5LXRydW5rCisxMDkxOSBjN2IwNDMxMzZmZGJkODExYjMwODVjNDQ4NDIwMGY5NTZlYmEzZDU2IGxlZ2FjeS10cnVuaworMTA5MjAgYzA1OWJiZDE0YjIzMmQzZWZlMjRmMTI1ZTQ2M2I0MTJiMjBiNGY2YiBsZWdhY3ktdHJ1bmsKKzEwOTIxIDUzNDYwMjc0NjA3OWQxM2M5MjliZjkxNmI2NzBkM2VlNGY3Yzg1M2UgbGVnYWN5LXRydW5rCisxMDkyMiA3NzQ5YzNlMDMyNGFmMDY2YTdlOGI4NWNmNWVjNDYxOTBkNjE4ZTYzIGxlZ2FjeS10cnVuaworMTA5MjMgOWU0YWVhNWE2NTJkMjFhZDBiNTFjYTIzZDYwZTNkODgzZjlkOTgwYSBsZWdhY3ktdHJ1bmsKKzEwOTI0IGZkNWNlZmRkMWY2MWRjZjRiZTRiYjgwNGRhYWVjNjJiZjM0YWU4MTIgbGVnYWN5LXRydW5rCisxMDkyNSBjNTUwZWU0OTM1YjBjNzg2ZWZlZDc3NDBkOGQzN2NiNDJmZGFlZDE1IGxlZ2FjeS10cnVuaworMTA5MjYgNmY3MGNhN2M4NGU2NmNkMzJkNjNiOWY3NWFiYTg5ZjAyZWRiMDA2YiBsZWdhY3ktdHJ1bmsKKzEwOTI3IDAyNDcxNDU1ODYyMGViZDMzMmU2NzUwZDdhNGU3ZTU5ZmFhMzRhOTAgbGVnYWN5LXRydW5rCisxMDkyOCA1OWRmYTllYjdjMDcwZmY2NWViNGIxZDNlMjQxZTc1NTYwMThjZjFjIGxlZ2FjeS10cnVuaworMTA5MjkgNGU2NjhmMWE5ZGRkZWY1YTJhNGNhM2Y2MzRjN2NkYzdlZTBhOGM2MSBsZWdhY3ktdHJ1bmsKKzEwOTMwIGEzNDE2MDkxYzJhMjVhMzYxMzFhZTM4MTA2NjI1YjI4MzUyZjMxMTMgbGVnYWN5LXRydW5rCisxMDkzMSAzNmVhMTNiYTMxMzY0NDNmNzJiZTUyODM0NmIyYjA0ZmRjNWEyMDYzIGxlZ2FjeS10cnVuaworMTA5MzIgNjE5MTJkNGFkNTJmNjc4M2U5ZjliMDVlYzBjNTY2NTcyNjcyYjlmNiBsZWdhY3ktdHJ1bmsKKzEwOTMzIDc1NGRlNjIxZThiMzBjZThjZTJkNWIxOTFkZDhlN2NhOTA3ODIzMDQgbGVnYWN5LXRydW5rCisxMDkzNCA4NGQxYjdjZjgxNWE3OWU5MjNkZGUwNDMwODI2N2I5Yjg4NTUzNWNjIGxlZ2FjeS10cnVuaworMTA5MzUgNGU1OWQ4OTBhNGJkYWQ5OGJlZTIxMzMyMTc1MTRjMjUxOGFkN2NiYiBsZWdhY3ktdHJ1bmsKKzEwOTM2IDJiZDhkNTIwZmZhYzAxYTU3ZTE4Yjk1NDQ4NTM3MTk1ZWM2NjcyYzQgbGVnYWN5LXRydW5rCisxMDkzNyBhZjkyNzNiMTA3M2FhYWY4OTcyMWI0MjFmNGIyNzg0ZmY2NmQwNjliIGxlZ2FjeS10cnVuaworMTA5MzggOTJjODhjYTYyZGE3YjgxMzY5NmZlYjU3ZGVmYTZiMWY1ZDlkZGI0ZSBsZWdhY3ktdHJ1bmsKKzEwOTM5IGFmNDg4ODdjOTcxNzZiNmU4NTUzMDAxOTRlOWJkNGFmMDRjNzNlNWYgbGVnYWN5LXRydW5rCisxMDk0MCA1N2RhZTFjN2VhODQ3YmI5NTEwOTJkNTEyYmIxZDg0MmJhNjRkNWM5IGxlZ2FjeS10cnVuaworMTA5NDEgZjc1MGIxZmZlMzUyOTJlMmRiNzQ1ZmJjMGRhZjUyNWEyMDU3MWNmYiBsZWdhY3ktdHJ1bmsKKzEwOTQyIDIwOTVhZTY5MGFhY2EwNGQ3NDJiZmJhN2I5NGZhNTg1NmY0N2QzYzMgbGVnYWN5LXRydW5rCisxMDk0MyAxMDI2N2M3NTU1YWU2NTEwMTY2OGM2NDZlNjgzMDJmZTI2NDQzMjQzIGxlZ2FjeS10cnVuaworMTA5NDQgZGEwNzY2M2Y5ZmZmNDZmZDA4MTZkOWEwNjQxNjg3ODdiZTg1MGJjMiBsZWdhY3ktdHJ1bmsKKzEwOTQ1IDEzM2Y0NTU0YTI2ZDU3Y2U1OTM0ZDg5ZWZkNmE1Zjc5MjNlY2FiN2EgbGVnYWN5LXRydW5rCisxMDk0NiA3MTYwZTUyOWU5YTFlYjJhZTZiY2FiOTFhOTdmZmQ1ZDNlYzU1MmVhIGxlZ2FjeS10cnVuaworMTA5NDcgMGU2ZmJiZTNiNjNjMTQwZjc4YzY5NWYyYjcxOThmMTY0NzU4OTZkNiBsZWdhY3ktdHJ1bmsKKzEwOTQ4IDQxMjA5ZDVkMWQ2NDkwYzgwN2JlNmY5OGUzMGI0ZjQxZjc5MzYxNzQgbGVnYWN5LXRydW5rCisxMDk0OSA3NjM4ZTQ1OTQyMDY3NWI2YjA4MDU2NzgxNjhkZjA0YjUwOTA0YTY2IGxlZ2FjeS10cnVuaworMTA5NTAgYzI3Y2Q1ZmM0NmI1MzJmYWRkNDQxMWFlN2QyZWMxOGRiMTU0ZTc5NiBsZWdhY3ktdHJ1bmsKKzEwOTUxIDljMzJjYWM1NjI1MDVkM2NkZTIwZWQ5ZDRlOTQ2MWJiMzkzNTM3MGEgbGVnYWN5LXRydW5rCisxMDk1MiA5MzM4ODJjMGU5ZmJhMGEyZGZlZGQwNThkOTQwNTZlYTNkYWJjOGZkIGxlZ2FjeS10cnVuaworMTA5NTMgYzg5MTg5YjAyMzZlYzFmMTM5MzkwZDQ5YzgxMjI3NjE4ODkxNDdiMSBsZWdhY3ktdHJ1bmsKKzEwOTU0IGM1NTVjNzJmMDkwZGQwODcwNTBjNzRhZTBlNjk1YjU5MzAxNTdjYWIgbGVnYWN5LXRydW5rCisxMDk1NSBhOWQ4OGJmYTI0YWYzNzIzODUwM2FhYmU5Y2Y1OTE4ZTFjN2RmNzdmIGxlZ2FjeS10cnVuaworMTA5NTYgMDQ5YWEzYThhMTcyMGQxNGVkMzk4NDRlOGVkMTgzZDA0NDNkNTNhNSBsZWdhY3ktdHJ1bmsKKzEwOTU3IGY4YzZjZjVjZmE3ZDAxNmMyOWNlMDQ3NGVhN2JiYTE2ZjFmNGRmODEgbGVnYWN5LXRydW5rCisxMDk1OCA3Zjk1YmIyZjE3MDQ4OTQzN2I3NDIxNGJlZjFlZjMxYzc0NTMyMGRkIGxlZ2FjeS10cnVuaworMTA5NTkgM2E4NWFkNWU0MTE2Y2Q1MDZlNWM3NjVkMmE0Y2EyY2JjN2VlNDkyYiBsZWdhY3ktdHJ1bmsKKzEwOTYwIDRiYTU4N2FhOGE5OGM5YzhiODRkOTlmMWI3ZTMxZTlmZjRlZDUyZjggbGVnYWN5LXRydW5rCisxMDk2MSBlMjgxZDUwMzY3MjUyOTdmNTE1YzQ1MDlhOGZmZDZlNDQwMjBlNmM4IGxlZ2FjeS10cnVuaworMTA5NjIgZDkzYWUzNzRmYjk5OGFiZGJhNjVjNjY0NzE0NjQxNmE4Njk0NTllNCBsZWdhY3ktdHJ1bmsKKzEwOTYzIDYxNGE3ZmZlZTExMzNlNzExYzhjMmJjYzQzZDJmZmYzZTc1MzI0NjIgbGVnYWN5LXRydW5rCisxMDk2NCA3ZTNiNzJkOGFlOTQ2MjAyMDc4YzE2MDMyNDk0ZTVjZjI1YzE5YzYwIGxlZ2FjeS10cnVuaworMTA5NjUgZjZlOTAwZGEzN2RiNDU4Mjc0ZmQxOWZjZjYzY2IwMTJhZjBhYjU1YSBsZWdhY3ktdHJ1bmsKKzEwOTY2IDJlNGYxNzhkN2UxNzU5MzhjNjI3NzJiZjU2NjUxNzZhMWRmOTkyM2QgbGVnYWN5LXRydW5rCisxMDk2NyA3Zjk0YjQ5NTgwNTYyOWVlNmViOGM0YTJlMzY4NWM4ZTc2ZmFkY2Y2IGxlZ2FjeS10cnVuaworMTA5NjggNTNhZmNkMjgzMjVlZjkxNzM3NWU0Zjg2Mjk2Yjg5ZjIzYjg5ZTRlYyBsZWdhY3ktdHJ1bmsKKzEwOTY5IDUxNDU3NzQwZjVjYWU5ZDU3ZDI2NWE0NjYyOGY3M2RlNWE0YWYyYzUgbGVnYWN5LXRydW5rCisxMDk3MCAzNjA0MTMxZjk0MmQ2OGYzYTZmMzU4ZWEyMmY0ZjhjMTM3MzVkNzliIGxlZ2FjeS10cnVuaworMTA5NzEgYmJiN2UxZGE0Njg2MjM1MWQwZTUxZmMzOTBjNWY2ZDIzYTE2Y2I4YyBsZWdhY3ktdHJ1bmsKKzEwOTcyIDdkMWRmZTY2ZjY0YmM1NTFjMDNiOWI5NWU4ZTk4ODIyMDA0OWI5NGQgbGVnYWN5LXRydW5rCisxMDk3MyAwMzhhNWM0MzM1ODYxZmVkNzU2MmIyZjFjZTZhMWM1ODIyNjgzZmZkIGxlZ2FjeS10cnVuaworMTA5NzQgZWI2ZjY1OTY2ZmIyMmI4ZjM3MGIyNGMzOGM5OTdjZDBmZGE5Njc1OCBsZWdhY3ktdHJ1bmsKKzEwOTc1IDI4ZjZiMDNiYjY0ZjA1OGQ5YTVkN2Q4MGEzMWMwOThmNmQ5OTZjMjUgbGVnYWN5LXRydW5rCisxMDk3NiBmYzI5NjI1ZGY1MzI1OTJjNTQ4ZTA1Y2FkNWQwNWZkNDdkYjUyNWI4IGxlZ2FjeS10cnVuaworMTA5NzcgMDM2M2YxOTg4N2QxNWIyZTYwYWYzZjlmZWFhNmQzNDY3OWM3NGM4OSBsZWdhY3ktdHJ1bmsKKzEwOTc4IDFkOGRhYjVhYTdkMTBlMjkzOWM1ODRkNTliMjIzMjBlNDJjYTdlNTMgbGVnYWN5LXRydW5rCisxMDk3OSAwZjkxYzBiYmFjYzU3YzQ0MmJiNDA5MjdjZjZhMjBkOGZjMzNjNmI1IGxlZ2FjeS10cnVuaworMTA5ODAgNjljOWJiYjY5YWFiMjY3ZmVmNTk4ZmZiYzFiYTFjMGFkM2YwNzU3ZCBsZWdhY3ktdHJ1bmsKKzEwOTgxIDA0NDdlZjg0ODNjOGM3NTRlNzNkMTA0MDc1NGRhOWZjZTkxYmVjOTIgbGVnYWN5LXRydW5rCisxMDk4MiA5MmNmN2Y0Mjc3MjMwZTkwOTNmYjU3NzNkYTIyZWY4ODU3ZGNlZmY5IGxlZ2FjeS10cnVuaworMTA5ODMgYmEzMTJlNzkwYjJhMmNiNjM5ZGFmNmEyZDdhNmYwODg3YWI1ODBlOCBsZWdhY3ktdHJ1bmsKKzEwOTg0IGI4YmJjYzAwOWE2YWIzNWRmYmE3NzIxMTIxNjJmMTUzM2YzOGVhZWEgbGVnYWN5LXRydW5rCisxMDk4NSA4NWU2ODIwNDgyZmY4MzVjYjE5Y2IxMTgyNGZmODE0MDU2ZjQ5M2RjIGxlZ2FjeS10cnVuaworMTA5ODYgZGUxMWE4OGFjNDk4ZWI0ZjEyNmQ1ZDk2ZWIyOGIxNDFmNzRiOTg5ZSBsZWdhY3ktdHJ1bmsKKzEwOTg3IGU4MmQwMjc3ZTY1M2MwOTg1ZjUwZmYxOTMxMTE5M2VlYWJiZGQ2MjAgbGVnYWN5LXRydW5rCisxMDk4OCA2YmY1Yjg3YWYwMmY5YTYwYzg0ZTIyMWM1NWJjNWEyMDk4NDUyM2IyIGxlZ2FjeS10cnVuaworMTA5ODkgZjQ4MDlmZjFmNGRhNGU2YTUyYmNmNzlhZThjZDA4ZGQ0OWNjNzMzZiBsZWdhY3ktdHJ1bmsKKzEwOTkwIGRlZDY5ZDEyY2M2ODM1ZWIwNDcyMzFjMjk0NTEzNzVhM2QxNTI3MzMgbGVnYWN5LXRydW5rCisxMDk5MSA4ZTgyMDcxNmNmMTIzZTJjMjVmZTY2ZDI2OTkzMTEzZmEyYzE0ZGZlIGxlZ2FjeS10cnVuaworMTA5OTIgZGUwZjBjM2VkNDI0ZTZhNjUzNTIwOGY1YmFjNDY3OTU0YTEwYmZlYyBsZWdhY3ktdHJ1bmsKKzEwOTkzIDY5NjYyZjE2YTgzODk2NDM2NTBhNTZiOTI2YjkwNTBmMDc5OGI2NzcgbGVnYWN5LXRydW5rCisxMDk5NCA0ZGVkNDAxOGIwZWIzY2ZmMzJjMzRhNTVhZmI3ZDM4MWUwYjVlNmJiIGxlZ2FjeS10cnVuaworMTA5OTUgZGE5YmY5ZWVkMWZjNzIyMmFmNTdkNGIwNzZiMzU1OGEwMjYxNjQyMCBsZWdhY3ktdHJ1bmsKKzEwOTk2IDFlZjQwZDVhY2NlMjJiNzY2ZTQwYjNkZmZmNTE0NmU1YWFiY2IyZTQgbGVnYWN5LXRydW5rCisxMDk5NyAxNmIzYTEyMWZmNzcyZTI0ZGZkZjJiMjk2ZTZmMDY1NDFhZWExNjRkIGxlZ2FjeS10cnVuaworMTA5OTggODFlMjk0NzdkMmE0YzBjNzYyYTMzMmU0ZTgzODRjMzJjMDA1OTFlOCBsZWdhY3ktdHJ1bmsKKzEwOTk5IDUwZTg3YzA5YzIzNjZjMzMzOGJhM2JkMjNlNDc4ZmFlNmU2MjUxMTEgbGVnYWN5LXRydW5rCisxMTAwMCBiNTY5ODFjMGQ2MWViYjJiODFmZjM4OTM1MGJhMjZjY2Q0ZjFlNTZiIGxlZ2FjeS10cnVuaworMTEwMDEgNjFhOWM1Mjk0NTVhOTA4MmJkOWUyZGJkYjJmMTZmNGNkYzliZjc4NyBsZWdhY3ktdHJ1bmsKKzExMDAyIGI5NDAxNWMwYzgzN2FmZTZkMGU3NTVkNTkyNTFlMDc2MGEzN2IyNTQgbGVnYWN5LXRydW5rCisxMTAwMyAwNjRmODVlZTliZTViMDc5NWExOWY5MzEzYWFmMTQzNmZmOGI1M2MzIGxlZ2FjeS10cnVuaworMTEwMDQgNGU0ZmQ5NTRkZGEwZmJjY2M0OTAyMzdkYjI4N2Q4OTVhOTUwM2RhNSBsZWdhY3ktdHJ1bmsKKzExMDA1IGQ5OTkyMGMwYmZiMDE1ZTcxY2NkYjRlYTM5YjlmMDY5MWM0MzA1YjIgbGVnYWN5LXRydW5rCisxMTAwNiA0N2JmM2JiOTU1NmUyMWY4YzA2YThiZGE0M2JlMjJjYTk2NWUzYTdkIGxlZ2FjeS10cnVuaworMTEwMDcgZWMyNmQ1MTQyZWI0NDAyMTM0OGNkM2M3MzA3ODY4YjFlZTI0YWU5MCBsZWdhY3ktdHJ1bmsKKzExMDA4IGQ3ZTM5ZWVhNzZmNGNlMzg2ZDQ2NGY4OGJiNmU1N2UxZTBjNDQ0MmQgbGVnYWN5LXRydW5rCisxMTAwOSA1ZjFlNDMxYTBhODI2OGY3M2FhYjgxYTYzYmI0YWU5YjhmZThjYTI0IGxlZ2FjeS10cnVuaworMTEwMTAgM2M4YjE0OWI0MmZmM2E2NTZlNjhiMzkyMGJhM2Q1YzkyZWI5Y2IxNSBsZWdhY3ktdHJ1bmsKKzExMDExIDAzNjZkYWVmYTIzYzI2OTcwZDI0N2E1YjFjMzljOTVmY2ZiZTIyZTMgbGVnYWN5LXRydW5rCisxMTAxMiA0ODI5YjhmYWYyYjQyYjRjOGU4NGUzZmEzNTdiZmYzM2Y1M2E0ZDk3IGxlZ2FjeS10cnVuaworMTEwMTMgMThhOTI4OWRmOTlhMWY1ZDM4YzQ5MjI3OTEwZjdkYmYyOWFhYTE0NyBsZWdhY3ktdHJ1bmsKKzExMDE0IDIxNjY4NjZhZjkyYmIxNmM4NTRhMzQ4N2VhZjY5YzZiMTc1NjA3MjMgbGVnYWN5LXRydW5rCisxMTAxNSBlNWQwNmE2MDI0NjljZDlkZmJkMDZlN2JhNmJkYzM0Mjg2MDEyZjBkIGxlZ2FjeS10cnVuaworMTEwMTYgNWY1YjQ5MmQxODA0M2JhNjE0YmRjNzJjZDdkMGZiOGRmYzRjMTU3ZSBsZWdhY3ktdHJ1bmsKKzExMDE3IGYzMWNlNDYyMDFjOTU2MDE3OGZkMDAxMDRmOGQzNTQ5NDY1Y2I3MzMgbGVnYWN5LXRydW5rCisxMTAxOCAxOGE0ZTAzMWQ3Y2EwYTY4OWZhYTIyNDBiYjQ3N2QxNTA4YmEyNDFmIGxlZ2FjeS10cnVuaworMTEwMTkgM2M0MDYzZjBhNzhmYWYyNzY2NTM5NzJmNzYxN2Y5NzhiNzZjYzljMCBsZWdhY3ktdHJ1bmsKKzExMDIwIDIxMzU4N2IzYjlkMGFmNzBlNWVhMjg2MGVjMWMwNWMzYzA0YmI5YTIgbGVnYWN5LXRydW5rCisxMTAyMSA1MDk5ZjQ0YmFmMjU1YzE5NzM5NzMyY2YyYmUxODhlN2VmN2YzMjFlIGxlZ2FjeS10cnVuaworMTEwMjIgZjRiNjM2ZDE1YWJjZDk1Y2Q3YjhjY2Q4ZTQyZmM1YzNiOTU1NGNhYyBsZWdhY3ktdHJ1bmsKKzExMDIzIGNmMGZhYWYzYzA0YjZkZWJkMDYzOWIwMTExNmMzMDkwNjkwMTQ1NDEgbGVnYWN5LXRydW5rCisxMTAyNCA1YzJmMTlkMTk2NDNhMjg5YmM3NmRiODI4OTM4OTEwYmU1ZDRiZjI0IGxlZ2FjeS10cnVuaworMTEwMjUgZTk1MWJmMmQ3ZDkzYjIzYjAzMmRkZGFhYTQ4MDUzYzNhMDgxNTUxNSBsZWdhY3ktdHJ1bmsKKzExMDI2IDM1YTIxNTFmYjFjM2Y2MjQ3NWEyNWE1M2I3MDBlZjA2Mjg1YWM2YmUgbGVnYWN5LXRydW5rCisxMTAyNyBlNjMzOTNmNTM2NzAyMzQ4MzkyMzY3OTg1YTk0MTBkNDhhMTA5ZjkxIGxlZ2FjeS10cnVuaworMTEwMjggZGM4ZGFhNzQ4YzQwOTM0NTFhYzhhNTJiNmQwZGFlNjgwMDdiMzYxYSBsZWdhY3ktdHJ1bmsKKzExMDI5IGQ4NGYxMjA5Y2JhNTI5OTg0NjkzNjc3ZWZhMmQ0ODdiMzkyNjA3NWMgbGVnYWN5LXRydW5rCisxMTAzMCBmYWMzMzcxNmEyMTgzNGY5ZTZmNDk1ODU0NDUxYTBlMTE0OGQzOTEwIGxlZ2FjeS10cnVuaworMTEwMzEgMWVhMTk1YjE0MjQ1OTk4NGNmOTUwYTE3Mzg1MmRjYTNmM2Y3MzExYyBsZWdhY3ktdHJ1bmsKKzExMDMyIDFlOWQ2NWY5Y2E1M2NmMzc5YzQwMzMwOTVmM2Q2MzBmMjViNmQwOWEgbGVnYWN5LXRydW5rCisxMTAzMyA1ODliNjQxMzVlZTY1MTI3ZjlkNTM1ZTNlM2E4ZmY3ZTk1ZjBhOTNiIGxlZ2FjeS10cnVuaworMTEwMzQgMjJhMDcyNGM2YmFjNTFhMWFiM2RjMGIwMGMyNGFkYzczODQ4MmU4NyBsZWdhY3ktdHJ1bmsKKzExMDM1IDQzNTdiNGViNWMxOWE2NjEwMzQ0ZWZlOTk1Y2MxMTdjYTU5MzllNTIgbGVnYWN5LXRydW5rCisxMTAzNiBkN2NlOWFlMzYyYTkwNDE4MWZlMzQ1YjQ4MzNlODFkMTg2ZjMyMzcxIGxlZ2FjeS10cnVuaworMTEwMzcgZjZkODIzMzRjZWIxNTZjNjAzZTRiZDJmYjQzNGVhZmUxMzVmYWRmNCBsZWdhY3ktdHJ1bmsKKzExMDM4IGQwZWVjOTZiNGM1NjIzZDdhZTBjZjdmODE4NjlmMTRkNzQ0Yjg4ZDYgbGVnYWN5LXRydW5rCisxMTAzOSBiMDJjNDNhMjAxYWU1ZGVjMDMxYTkxOGM3OTBhNzcxNzRkZGY2ZTJjIGxlZ2FjeS10cnVuaworMTEwNDAgOGU2MGZmMDY0NjA5OTM0NmQzYWNkMTdjMTBlYTI0MmUxN2U3OWUxMiBsZWdhY3ktdHJ1bmsKKzExMDQxIDkyMjY3ODM4ZmViOWNhZTcyZmJlZTY5MWJjMzhkMzYyMGQ1M2RjZjkgbGVnYWN5LXRydW5rCisxMTA0MiA0NmZkNjMwZGNlNjMzMWNiNTgxZTNlNjAzNTJhYjE4NmVlM2U4NTI4IGxlZ2FjeS10cnVuaworMTEwNDMgODk3M2U3MDg1Y2Y0OWNkM2M4Njg4OTNiOGJmZmY1MDIyZjRiMTFiZiBsZWdhY3ktdHJ1bmsKKzExMDQ0IGZmOWFkYjU3YjhiNTFiMjk5MzhmZjI5NmViZjY1NWU0NWVkMzczNWIgbGVnYWN5LXRydW5rCisxMTA0NSA0MTllZTk1ZGYyZDg4ZjVkOTIwNjdhYjZkMmU0ZDRkZTQxZDNiYmIxIGxlZ2FjeS10cnVuaworMTEwNDYgZTg3ZDIyYzdkZTNjM2M5ODM4YjJjNjVlYmQ4YjkwODQzMjdlZGViMCBsZWdhY3ktdHJ1bmsKKzExMDQ3IDE5ZTgwMTZjZDM4Y2ZlNmNhYmVlZmRkMzY3NDI4ZDc2ZjFkMjI0YzcgbGVnYWN5LXRydW5rCisxMTA0OCA2ZThiMGU3NTRhN2YzNzA5YjJkNDRkZDEyMDRjYjI1YzMyNzJlMzgxIGxlZ2FjeS10cnVuaworMTEwNDkgYmM4NjE5YWYwOTIzYmUxNmY1MjVkZDhhMjg2MjIwY2U3ODc4NDE3OSBsZWdhY3ktdHJ1bmsKKzExMDUwIDg3MTY4MTZlMDg1OTRmNDA4OTYxYmRhNDc1NTY4MDdjOGE3ZWFkNTMgbGVnYWN5LXRydW5rCisxMTA1MSA0NTAwNzYwNjhiMjJhZWU0ZDRlNDNjY2EzN2Y2NDc1Y2ExYWRmZjY4IGxlZ2FjeS10cnVuaworMTEwNTIgYmQ2OTVkZTE4ZWNmMjNhZGNiYjViMmU5N2ZjMTQ3Yjk5NzgwOWQ1OSBsZWdhY3ktdHJ1bmsKKzExMDUzIDY3YWE5OTdmYmIwZTE0YjIxMzcyMzI0NTE1MWIyNTVlZDI2YTFhYmYgbGVnYWN5LXRydW5rCisxMTA1NCBlYThmMGY1YWIwMTU3ZTljYWU5Yjg3OGM0YzZjMGMxZmQ0MjdjMTNlIGxlZ2FjeS10cnVuaworMTEwNTUgNjA1MWYyZTQzNTE3Njk4ZjQ1NDJmZWFjOTRlNGU4NmZkMTJjYTcyMyBsZWdhY3ktdHJ1bmsKKzExMDU2IDExMGU5NzMzOTc0MGViNDVmNmY5YzlhYjYxOGExM2I3NzYyYzhiYzkgbGVnYWN5LXRydW5rCisxMTA1NyA5NGNlNzVmNDM0NTJmOWRiNTZmMzY2OGUxZDg1ZDE2ODZjZmQyZmQyIGxlZ2FjeS10cnVuaworMTEwNTggYTMzOTI1NDVkODY1MmM4YWNjMWVmNjFlZDk2ZGI5NjZkMWM1NzI3ZSBsZWdhY3ktdHJ1bmsKKzExMDU5IGYwZmFhZDhkNTkzN2NlM2Q5YTg1MzNhZGZkYzE2ZTE1NTczYzI1NmQgbGVnYWN5LXRydW5rCisxMTA2MCAyYjA0MTEwNTk2MzAyM2FmZTM1YWY1ZDU4YjM0ZTNmN2M4YWVhY2FjIGxlZ2FjeS10cnVuaworMTEwNjEgYjFiMzVmNTBmM2ZhNmE0MGRkNzE0YTYzYTRlMWViY2ZmNjE1OWQ4NiBsZWdhY3ktdHJ1bmsKKzExMDYyIDFjYTY4OTUwMjRkOWZlZWI4Y2NlZjdjYjU2MTkyZDBmNjIwYzNkMDUgbGVnYWN5LXRydW5rCisxMTA2MyAyMjE2NjdmODkwNjQ4NmMwOTVkYjk1MzJmODNjNzdhZTFmN2MzM2FjIGxlZ2FjeS10cnVuaworMTEwNjQgYzM0OTcwMjY1MjBkN2EwODdjZTVlNDhjOWVkYjAyZWQyMDZhNTU1ZiBsZWdhY3ktdHJ1bmsKKzExMDY1IGU4YWRlYjVjZDJmYjdiNzk3MGJlZjA0MjI4OWRkOTJhMmJjZTY4YWQgbGVnYWN5LXRydW5rCisxMTA2NiBjYjdmY2ZiNTYyNzU0YzdhMzZhOWEwYzY0ODgzNmZlZDVmMTIwZGUxIGxlZ2FjeS10cnVuaworMTEwNjcgMWU1ZTlkYzZmOTkzOTQ4NGM2ZWMxMjFiNDI0YjdkMTI2NmZkMGE4NyBsZWdhY3ktdHJ1bmsKKzExMDY4IGJkZmVmOGU3MzQ1NzIzMDk5ZDQ0MTBlMTcyNGMwMDdkOGVmZTFjNjEgbGVnYWN5LXRydW5rCisxMTA2OSAxNTgxYzkzMWNiMzVhNjU0OGI1NzVhN2UyMWM2MTI2MmY0NjA2NDg1IGxlZ2FjeS10cnVuaworMTEwNzAgNzRhMTAwY2I3YTY0M2I1MWM5MmI3ODcyZTIwMGFiMTMzNTdiMWMxOCBsZWdhY3ktdHJ1bmsKKzExMDcxIDk3ZGM2YWE1MzJlNzIxNGQ0ZTAyOWZmYzBlOWEzMDc2ODc3YjlhNWIgbGVnYWN5LXRydW5rCisxMTA3MiBlMWZlMzBmMzI1Yjk5MTVkMjBhNjg3NzVkZDFkMmYxMGE0ODUxNzBiIGxlZ2FjeS10cnVuaworMTEwNzMgMmY0M2I2MWE5OGRmNWFlMTlmMmVhN2EzNmY2OTUwM2RlMDU0ZTBkMCBsZWdhY3ktdHJ1bmsKKzExMDc0IGVjZjBkNTE1MjlhYzU5ZDUzNGMxZTI1MGU3NDAwNTRlNjk0OWZiODkgbGVnYWN5LXRydW5rCisxMTA3NSBmZDFmNGVlMWIzMmE2MTNkNWYzN2I1ODA2YzFiZjgzZDQxZmEwMDdlIGxlZ2FjeS10cnVuaworMTEwNzYgNWQ3NzdiZWE1NDM1MTdjZGRjZWNmMmJkMGIyZmM3MmY1ODAxNTkwOSBsZWdhY3ktdHJ1bmsKKzExMDc3IDYzNWMzZDk0YTk0ODIxNTk0NDU5MjAyODk5YzFiODhkODE4MGFkOWQgbGVnYWN5LXRydW5rCisxMTA3OCAxMjVmMjFmZGU4YzQwNjU1ZTE3YzgyYmEwNzExYTBhMzQzZmU2MzFjIGxlZ2FjeS10cnVuaworMTEwNzkgN2JjNzE0MTQ0Yjk4ZDg0ZmY4YmYyMzFjNzRmZTA0MTNmODM4YWRjOSBsZWdhY3ktdHJ1bmsKKzExMDgwIGVhYmI4MzgxYmZjNzRhZWQ4ZTA5NzIyMGMzNDU1MTk0ZmI5ZmE5OTkgbGVnYWN5LXRydW5rCisxMTA4MSBkNGE2ODhjY2I5MzcwMWMzMWIyMmJmMmFhODJmNTliYWE4ODUxNTE3IGxlZ2FjeS10cnVuaworMTEwODIgMjgzNjAyZjMwMDQzMjQxZDFjNGY1MTYxMGI1YzI4MDk3N2RlNzAyOCBsZWdhY3ktdHJ1bmsKKzExMDgzIDAxOThiMmY2YjFjODNiYjU2MjVkMWYxNzY5NzA0NDUyYzFlOTY4NTkgbGVnYWN5LXRydW5rCisxMTA4NCBjZTM2MmI5YmE4MzYxZmU3NWY1ZmQwNmQ5N2ZiZDA4MTBmMTk5ZjQ5IGxlZ2FjeS10cnVuaworMTEwODUgYzA0NDk3NzE0OGU5MDRkY2E0MWMxODRkOWY5MTk5NWJiNTQ5NmJhYiBsZWdhY3ktdHJ1bmsKKzExMDg2IGQxZjM5MmNkZmNlYTZkN2ZjMzVlMWM0N2Q5M2U3ZDJjNzA2MTFmNTYgbGVnYWN5LXRydW5rCisxMTA4NyAzYzk2ZmM4NDZiODhiYTNhMTk0NDVmZGEyY2NiNmNlM2Y5Njc4MjIyIGxlZ2FjeS10cnVuaworMTEwODggZTAxNzM3MWI3ZWQxYjMyZGM2NTc0NTRjMDgwMGViODJjZjMxOTIwOCBsZWdhY3ktdHJ1bmsKKzExMDg5IGNjMGZkZTRkZGY0NGVhZTVlYTJhZDZhYzhmOGE3MGU2Nzc5ZWJhZTkgbGVnYWN5LXRydW5rCisxMTA5MCA0NWY5ZGZmZGJhM2RjMDkzM2NlMmExZmZiMmY3ZjFhNzljNjk1ZjQ3IGxlZ2FjeS10cnVuaworMTEwOTEgY2UyOTViZmFjZWYzN2NhNjNkYTM4MmIzN2VhNDUxMWEzODk0MTVkMSBsZWdhY3ktdHJ1bmsKKzExMDkyIDY2ZjA1NDA2NTZhMGU0YTYxZjE1ZjFlM2U4Y2QwM2M3ZGUzYzYwMzEgbGVnYWN5LXRydW5rCisxMTA5MyAwNGQ1OTg3MzcwZGUyZWVlYzA4OTcwMThlZmE0MDI3NDVjMjRmMzJhIGxlZ2FjeS10cnVuaworMTEwOTQgMWJiZmI5MWY4ZTg4NmYyN2I3ZDAzZTg2OTgxMDZkNWFhMWJmNzg3NyBsZWdhY3ktdHJ1bmsKKzExMDk1IGUzZDNiYmJkOTNmMzRjM2MxOGUzNWZhNmY3MDhmN2Y3ZmFhZDg1OGYgbGVnYWN5LXRydW5rCisxMTA5NiA2NGYwYzMxODhlNzA3YWUxNWNhYWQ3M2E2MDMyOGQwNDkzOTAyNzEyIGxlZ2FjeS10cnVuaworMTEwOTcgZTc4MjJiNjRhMzNkM2QzZWNiZjMzMjk2YjM4MThkZGU1NzJhODMyNyBsZWdhY3ktdHJ1bmsKKzExMDk4IDI0MTdmMTdmYTNlNWZkMmM4MGQ1YmI3YWNjMThhY2MwN2I1YmY0MjggbGVnYWN5LXRydW5rCisxMTA5OSA0NmI0NzJlY2IwZjkwYTUxOGEwZWNmZGQwYzU3MzdhNmUwNTNlOWE5IGxlZ2FjeS10cnVuaworMTExMDAgYTgwNzU1MzFlMjBkNjBiYTEyZDMzNzY5YzFlYWMzM2NlMjRjMmJhZSBsZWdhY3ktdHJ1bmsKKzExMTAxIDZlZDUwM2Q5YzNkNTJjYTZiZGQwOTdiMmYxNDdiNDcxZGI1ODA0YTUgbGVnYWN5LXRydW5rCisxMTEwMiAwYTNjOGMyM2UxZGEyYTQ5MGVjNGRhODdmZDFmMzM4ZGUxM2Y5NWE2IGxlZ2FjeS10cnVuaworMTExMDMgOWY4NGI5MTk5NTJlNWRjNGZmNDBhOWY4MWRkNmQxZmM0NzdlYzE5ZSBsZWdhY3ktdHJ1bmsKKzExMTA0IGYwNTc3NTFjZWY2MTljNzM5NWJlN2YwZmFkNDk1MjcxNmY0NjMzODAgbGVnYWN5LXRydW5rCisxMTEwNSBiZGE1YWM5ZjY0ZTk0ZWJiZTM0YjBjNWZkNzc1NTEzYzgxM2Y5NDNiIGxlZ2FjeS10cnVuaworMTExMDYgMzcxYzMxMjc2N2NjOTYwODNiZjMxZjdlODlhZGEyNDM5MjBmYjZmMSBsZWdhY3ktdHJ1bmsKKzExMTA3IDUxZGNiZjhhMGI5MmFiNjBkZTA1YjhjYWVkMjI5YWRhOWViODYyNjkgbGVnYWN5LXRydW5rCisxMTEwOCAyNmY0ODJkMTYxNDBiZmQ0NmI4MjU2NjFiNTZjNzAxMjQ4NjU1NDNhIGxlZ2FjeS10cnVuaworMTExMDkgNmVkMmNjMjc5MzQ2ZmQ3MTA0ZjkxMjM2MjFmZGRkMjBjOTYwMzdlZCBsZWdhY3ktdHJ1bmsKKzExMTEwIGFlYTY4NDFhYjg5OGQwYmEyZTUxOTM1MGE4NmRjY2JmZTdiYWJmODggbGVnYWN5LXRydW5rCisxMTExMSAyMzk0OTJiMzRmNjgyZDVjY2FkZGFkOWJmY2VlMWI4ODYyMTk4YzRiIGxlZ2FjeS10cnVuaworMTExMTIgYTkzOWQ0ZTE0YThkMzI0NTBkZTY3ZGFjNWI2NGI4YTlmNjNkOTk3YSBsZWdhY3ktdHJ1bmsKKzExMTEzIGQ4NjczMzY3NjgxNTgxNTIzYzRhMmUxNGQ5NWMzOTdkNTkzNzkzMjIgbGVnYWN5LXRydW5rCisxMTExNCA2ZDc1YTQ0MzQ3YTIwMjE1MmJlZTMyZWJjMzZiOTNkOTNjNjZjZTFmIGxlZ2FjeS10cnVuaworMTExMTUgY2NkZWJiNWVkMzNhMzliMmIyNDBlNDNkMjM4ZDYzMTRmMzJmNWY2YiBsZWdhY3ktdHJ1bmsKKzExMTE2IDExNzEzODFmYTAxYzhhNzUwYzMyMzViZGRlOTkzYmE5Mzc3N2Y1NTYgbGVnYWN5LXRydW5rCisxMTExNyA1Nzk4Y2UzYmZmMzU0YTJlM2ViYzUxODY1NjAxNTQ3NDBjN2NjYzk2IGxlZ2FjeS10cnVuaworMTExMTggZGNlYzk4MzU3NmQ1MTRmYzNmYzJiMjE4ZjVmZjcxMmE2ODc0NjJhZiBsZWdhY3ktdHJ1bmsKKzExMTE5IDlmMWU5NWNkZmExNzMxNDVlZjljYWRhODU3ZTdiN2ZmODQwMDdmZTIgbGVnYWN5LXRydW5rCisxMTEyMCAxZTEyMGE1ZDJlOTM0NTQ1ZWRiYjYzNjBiYTY3MTlhMTZkODc4ZWY0IGxlZ2FjeS10cnVuaworMTExMjEgMDI3YTFkYWQxMzUzMmZiNjkwYmYyYzgyMWQ4NGJlNjgxY2I3MDI5NiBsZWdhY3ktdHJ1bmsKKzExMTIyIDhlODZhNzk3ZTU5NmM4YzliMTBhY2I5OWM1OTZlYWNlZWQ1YTUyYjcgbGVnYWN5LXRydW5rCisxMTEyMyBiNDgwZTZlZGJjMDdiZGY2OTM4NGU3YmE3NGM5YzM4NjU2MjRjZjFkIGxlZ2FjeS10cnVuaworMTExMjQgMmJmYjEyMzU1YjEwMmE5YjYyNDY5ZGU1YTliN2U0YWUyMTgxZGY5YSBsZWdhY3ktdHJ1bmsKKzExMTI1IGQ0OWNiZWM1OTM5NWMyOGRjZTJhMzhkNTNiZDMxMDEyMTNkZGY0ODkgbGVnYWN5LXRydW5rCisxMTEyNiA5YWU5MWU5MzA3ZTBhZWNjNTY4YzU5N2RmOWE1YTBjYWQ5ZDRlMzExIGxlZ2FjeS10cnVuaworMTExMjcgYWUwYjZjMWM5ZThkNmEzZGZiMjIzNDNhMWMyMTc0NjY1YmRiMDliOCBsZWdhY3ktdHJ1bmsKKzExMTI4IGU4M2IzNTNkMGExY2RhYWU4NDc3OWY0YTk5NjRkODVjMWI3YTI3N2QgbGVnYWN5LXRydW5rCisxMTEyOSBhMmJlYWVkZjBhZWVmMGI2OTQ1MjVlZGU5NDgwMzkzNTMzYTYyMmMxIGxlZ2FjeS10cnVuaworMTExMzAgNzc1MTg4MTQwZmUxZmFiZGM1ZjE2MTUzNTFjMzBmZWI2YjAxNTY4NCBsZWdhY3ktdHJ1bmsKKzExMTMxIDlhZjk1ZDcyNzBkZmVmNTVjYzZhZjc4YjE3YTZlN2Q0YmFjMjg0NDYgbGVnYWN5LXRydW5rCisxMTEzMiAzYmU5MDY0Njc3NDA5NWEzZjFiNjMyMTRlYTk3YjQyZjZjNjQ3ZWFmIGxlZ2FjeS10cnVuaworMTExMzMgNGJhOWI3MGNhNTZlMjRmNjNhNDlkNzZhNWMxMmNjMWI1ZjVkMzU4ZCBsZWdhY3ktdHJ1bmsKKzExMTM0IDk3YTExMDhiMGViMjgxNTkxMTE0NDQ2MjQ3NWE5YzlhMzBkNWIyNWQgbGVnYWN5LXRydW5rCisxMTEzNSAyZWI5YzIxYzIyZjdlOTUxNTVlZTdkZjI1MjFmMGZmZDVhOTZkYzEyIGxlZ2FjeS10cnVuaworMTExMzYgN2Q0YTM4NmJlZDNmYzUzOTJkZmFlODJlMDRhNWVjZWQ0YjBjMzM4YSBsZWdhY3ktdHJ1bmsKKzExMTM3IGVkMGEzOGNiYzNlNjNkNzI4ZjgwZWIzYzhhODgyMDZhZmI3NjdjZDQgbGVnYWN5LXRydW5rCisxMTEzOCA5ZTUzNmRkM2RjOTdmMzk5NTdhNDE5ZWNmNTBlMjkxMjE2NWJkMDEzIGxlZ2FjeS10cnVuaworMTExMzkgYWM0M2UyMjQ2Njk1YmVjN2VlYjU2M2Q1YTEyNzczYTQ5ZjdkMzg1OSBsZWdhY3ktdHJ1bmsKKzExMTQwIDFlOTNmYTAyMTQwNTRiOTVjZDMyMzQ0ZTllMDdiNjczZDNhYmU4MGUgbGVnYWN5LXRydW5rCisxMTE0MSBjZTU0YjU0NDhjODVkNzVhYTYxMWM1MjM4MTAwZTMyZjFhOWQyMjNhIGxlZ2FjeS10cnVuaworMTExNDIgZGU3NTlhY2ExMGIyNTI4OWJmZmQwYzUzNWZiZWY5NzhlZjk1MDZmOCBsZWdhY3ktdHJ1bmsKKzExMTQzIDMwZmJmMThhZjI5ZThhYzk1Y2Q3NTE5MzA2MjEwM2E3MWJkYTRmMWUgbGVnYWN5LXRydW5rCisxMTE0NCA3NGYzODVlZTQ0Y2JiZWY4MzE4ZGRhNjMxOWYwMTkzYWY1NGVhMTI1IGxlZ2FjeS10cnVuaworMTExNDUgMmZkZGU3ODRkODQ5YWUxMTEzYmNlMzkyN2RhZjQ5MzYzMmFlN2M1MiBsZWdhY3ktdHJ1bmsKKzExMTQ2IDg1NjhhYTQ5NDRhMDFmMWE5YTk5MDU5ZDQxY2FmYzg1YzQzZjNkYWMgbGVnYWN5LXRydW5rCisxMTE0NyBmNTk0Nzc4YTU2YWY5NTQ1ZjJkM2FiZDk0Y2E0NmQ5OTJjNzg2ZGI3IGxlZ2FjeS10cnVuaworMTExNDggNjI0NWI4MTliZGQ4NWMyMTViYzc0NjhlYjZlNTcxZGIxMTZiZjg0YSBsZWdhY3ktdHJ1bmsKKzExMTQ5IDNhZDFiZmZiZGFlYjQyMDU5MTYwMDQ0YjliNzBjZjAzYTgyNTBkNjYgbGVnYWN5LXRydW5rCisxMTE1MCA4MjgxMWM2Y2I1OGY1YmIyOThiZWU3ZjdmYjUxYzEyNjNiOTFhNjk3IGxlZ2FjeS10cnVuaworMTExNTEgMmIyZmY1YTgxMzkxYTI2NDAyMThjOGNkMzJlMzBjMTdkZjU2NDUwNCBsZWdhY3ktdHJ1bmsKKzExMTUyIDA3ZTQ3MzcwZmNiOGI5YmQ5MjE0MmQ3YmUzNWVhMGIzNDVhMzNmYzMgbGVnYWN5LXRydW5rCisxMTE1MyA3NDQ0ZmUzOGVhZGJkNGQ5NjVjMDI4OGM3MzA0MmViODU5MzI0YWRjIGxlZ2FjeS10cnVuaworMTExNTQgYjFmMWJhNDI5YjczZjAyYzIyMDg5NTE0MDE2MDIyZWI1YjFiNzIyOSBsZWdhY3ktdHJ1bmsKKzExMTU1IDVhOGQ5Y2U5MDYzMmI4ZDRiMDc2ZjJmYmY1NWY1NDM0Nzk5MjJhMDcgbGVnYWN5LXRydW5rCisxMTE1NiBkNmY0ZTQxYjJjNmFlODc3YjA5NzA3NWNjZmRiZWZlMTI2ZWI2MWNiIGxlZ2FjeS10cnVuaworMTExNTcgNDY5ZThmNDUzMzY1YTM5ZmNlYTIzZmViN2U4YzA2NjUyODU5ZTQ4NCBsZWdhY3ktdHJ1bmsKKzExMTU4IDdkOTY4NDIzODNiYmE5ZDExYTUwOTY3M2RiOGMwNTUwYTYyZGYwODAgbGVnYWN5LXRydW5rCisxMTE1OSA2MTcwNjgzZTk4ZTNiMjdmYzk2OGYzOWJjNjRjZmRjOTk5ODRhMzQ3IGxlZ2FjeS10cnVuaworMTExNjAgNDhiYzQ3MDM1ODgxNWExOGZmYmQ5OTYwYjQ5NzQ0OTA1MTdiM2YwNCBsZWdhY3ktdHJ1bmsKKzExMTYxIGJhNzQ0NDYyZTk1ODMxZDI4MTlhYTBmM2Q3ODJlMTA0Zjg2MGJlMTQgbGVnYWN5LXRydW5rCisxMTE2MiA0NjhkYjJiNzEwZmQ4MjMyMDA2Nzc1ZWI4YWQ4YmYxYjlmMDc3MTAzIGxlZ2FjeS10cnVuaworMTExNjMgY2UxZTU5MWIzMTI2Mzg0MGJhNWI1Y2JjOWE4ZDJjNzVmMzgxNTczNyBsZWdhY3ktdHJ1bmsKKzExMTY0IDZlZDcxNThmZjI3Y2NlNDc3ODFmMTM5ZWI0ZDBjODRlNjhiYTYwY2YgbGVnYWN5LXRydW5rCisxMTE2NSBhMDMyNGEzMDY4ZTk1MzliNWIxNDY5OTdmOTAwNDhlZDg4MjFmMTRkIGxlZ2FjeS10cnVuaworMTExNjYgMTAwNDQ1YWU0NWUzNmJkOTFhZTFhYTkxY2Q4NWVjN2ExZGM0MzAyNCBsZWdhY3ktdHJ1bmsKKzExMTY3IDc4MTczMThlY2QzYTJmNjk5NzBhZTBlYjAxODFmYjZmN2RjNTJhZGQgbGVnYWN5LXRydW5rCisxMTE2OCA1NTJlNDJlNDE3MGVlNzE4NGZhZTNmY2NmM2FiMmQ1ODkxYzljMzQzIGxlZ2FjeS10cnVuaworMTExNjkgZmQ0OWVkNjVjZDIwYjIwMmVhYTc2YWM4ZWZkYzY3Mzc1NjY0MmM2MCBsZWdhY3ktdHJ1bmsKKzExMTcwIGEzNzI2ZmUzNGQ1OGVjMDQ3NjY2ZTI5YWVjMTFkMWUwMjQyZmQxODUgbGVnYWN5LXRydW5rCisxMTE3MSBkZTU0MDE2NmQ3MzI4Y2Y1NDMxMGE4MjVjYTcyMzljYzg1OTMyYWM1IGxlZ2FjeS10cnVuaworMTExNzIgYTA0NzdiYzgyMGIyNzJkZjE3MjEyZTNjZTgyNjJlYTM0MDkyMGYyOSBsZWdhY3ktdHJ1bmsKKzExMTczIDM1ZTFhMTQwZmU0ZTIwMDZjNjAzNTMwZmU3NmFiYThjNTQ4ZGI5MTcgbGVnYWN5LXRydW5rCisxMTE3NCBjOTUxNGViMWZjMDYyN2FjMjk2M2NlZjcxN2YyMGJiNmQ0YTliY2UzIGxlZ2FjeS10cnVuaworMTExNzUgOGFhOWQxMjZlNDczMzA3MDA2OTZkNDc4ZTMzNGJlMDAzNGNkNDAyMyBsZWdhY3ktdHJ1bmsKKzExMTc2IGY0MTU4MGI0ZWVhMTU0MjdmZTI2Yjc4MTI5ZDk1ZjgzNzM3NmZhNmYgbGVnYWN5LXRydW5rCisxMTE3NyA2ZDIxNjhhOTY0MWZlNzUzNzdhNTI1NjUyNDA3MjE4ZTBhMGU0MzFhIGxlZ2FjeS10cnVuaworMTExNzggZjdiNGRiMGM1YjA4ZDU3ZTRkMzc4NjY5YjEzOWNiMTg3YTgwZmUwZSBsZWdhY3ktdHJ1bmsKKzExMTc5IGRjODU4MDRjMmM2NDU2ODllYmIwNTZmMGFkZWEzOTVlZmQ0Mzg4MDkgbGVnYWN5LXRydW5rCisxMTE4MCA3ZDE0NzdjZGE4M2QzN2VhZjc2MGRjNTdiMTVhYzYyNGVhMDdiY2JjIGxlZ2FjeS10cnVuaworMTExODEgZjEwYjQ2OWM5ODEwNTRlYTVjMzE3NDRjYzVjOGI1MmE2OWQxZGNlYSBsZWdhY3ktdHJ1bmsKKzExMTgyIDk1ZjMyNDI3MmY1NDk2YzEzOWU3ODFlYzgwMzc3ZDk4MDVjMTU0ZjIgbGVnYWN5LXRydW5rCisxMTE4MyA3ODIxNGU4YzllYjQ5MDhhNWEwN2UyZjUxYzNlMDllYzE4YmE1YWQwIGxlZ2FjeS10cnVuaworMTExODQgMmYyOTA1NjAyNjNmYjBkY2ZjNjc0YzdlYzc1ZDE2MTdiYmQ4NGRjZiBsZWdhY3ktdHJ1bmsKKzExMTg1IDUwNzU3NDY1ZmE3MGRlY2RlYTNhNzRjNDEyOGU3NmQ0YjFlZGJiYTUgbGVnYWN5LXRydW5rCisxMTE4NiA4M2M4YWRhYTA4NGY2ODE4ZmJiYTNjNjQyNzAzMWNmOWQyY2ZjZjA0IGxlZ2FjeS10cnVuaworMTExODcgODU3MWMxMjQ2ZjA5M2QzOTU5NmU1NzExZTUzNGIyNTE3M2Q3MmJkZiBsZWdhY3ktdHJ1bmsKKzExMTg4IGNhMWM2NjliYjA0MTY5Y2E2ZjQ4MzBkMTdhOWI5YTQ4NTZkNDNhOTggbGVnYWN5LXRydW5rCisxMTE4OSA0ZWRmMzQ5NWM2OTI3NmIxOGExOTEwNTVmZGRkZTdkNTFiOTFiODU3IGxlZ2FjeS10cnVuaworMTExOTAgYWNmNDljOWRlZjdkZGI1NDI1MWRjYjBiNDRjYThmNDgyZDhhYjkyMyBsZWdhY3ktdHJ1bmsKKzExMTkxIDBlMjU2M2MwZWIwZDRhNmI4ZmY2NzFhZjRkODY2N2YwYjA0N2VmMjMgbGVnYWN5LXRydW5rCisxMTE5MiAyMDg0MjdhYjc1NjQ1YjEzNTVhZmI1ZGI4NTFlZWEwYjRlMDk3Y2M1IGxlZ2FjeS10cnVuaworMTExOTMgYWU2YjQxZGM2NTIwMTZhYmE5ODRiOWM4YWExM2E4NDA4ZGI3MjA3NCBsZWdhY3ktdHJ1bmsKKzExMTk0IDc5ODNkODZiNDhhZjczMjYxNWVmYjkyZGQ1MDAwMzAzZmM5NTVhNTIgbGVnYWN5LXRydW5rCisxMTE5NSBlZDhmNGUyZWIxMWExYWE3OGE4YjJjOTRkZjlkNzE1ZTEwMzk3NjdkIGxlZ2FjeS10cnVuaworMTExOTYgOTczMWQ4YTZiNGYzZGY0OWZmNDdkYzNlNmQ3YjI5YmM4ZDNjNjU3NSBsZWdhY3ktdHJ1bmsKKzExMTk3IGM3NTBjN2EyMWUwMzc4ODRjZWY1NTQzMDMwNzI5YzY1ZjYwNjhkNjcgbGVnYWN5LXRydW5rCisxMTE5OCA3NjBkY2YxOTcwNDgxMjY4YjMzMWNhNjQ3MGE4ZWEzYWNjMTFlYjZlIGxlZ2FjeS10cnVuaworMTExOTkgOTQ2ZDYzOTc3ZmE0MTFkNWYwODAzOTIxZGMyN2Y4NGIyNjM1NDE0NyBsZWdhY3ktdHJ1bmsKKzExMjAwIDAyOGVhZmJjZThhYzcyMWQ0YTMyMDY5OTUzYWMyZTNkODc1MmY0YzEgbGVnYWN5LXRydW5rCisxMTIwMSA4MTc1YzZlMWU2MTMxYTk1NDVkNWI0MTBlM2ExZmJlYTA2ZjQzMjRlIGxlZ2FjeS10cnVuaworMTEyMDIgZTBkMDQ3NDg0OTgwMDk3OWYwOGI2ODU5Njg3MzYzN2YzMTE1Y2NkMyBsZWdhY3ktdHJ1bmsKKzExMjAzIGQ3Y2E0MjllZjFhYjVmYmE5MjM5NGUxNThlNjgxMzMyZDM1YmViMzcgbGVnYWN5LXRydW5rCisxMTIwNCA4YTI5NDc2YTU5YzU0Mzg4M2MzMTY2NzFiMjA0ZGQ5ZjAxY2MxYjNkIGxlZ2FjeS10cnVuaworMTEyMDUgNjc5NDI5NGViMDE0OWU5NmU2N2QxNDYwZWVjNDMzMThlOTI2MTNmMyBsZWdhY3ktdHJ1bmsKKzExMjA2IDVkNmJmNjBjYjczNmQxZTM1YzQ2MjY1NGE1NDNlYmE1ZWJhYTRmZDIgbGVnYWN5LXRydW5rCisxMTIwNyBmNzk3NmUwMmI4NzM0MzI3M2U0MmI0MDJkM2NiNjg2YmFmMzc2ZTkyIGxlZ2FjeS10cnVuaworMTEyMDggNzRlYTRkZmRhODJkMjQxZjZkMDk4ZmY2NTFhMTQzY2RiNTgyYjQwYSBsZWdhY3ktdHJ1bmsKKzExMjA5IDUzYjUyYTMzZDRiYTY0MGRjNTk3MTk5NjBlYWI3MjZiZWQyNGI2NmEgbGVnYWN5LXRydW5rCisxMTIxMCBkNWY0ODUxZTc2MTEzYmUyNTlhYTRmMjZmNjQ2NjU5ZDA4M2VmNDY0IGxlZ2FjeS10cnVuaworMTEyMTEgMTkwN2QxMGEyMzI4ZWUwOWY1ZjlhYThkMzEzOWFmY2Q0Nzc1M2M0MyBsZWdhY3ktdHJ1bmsKKzExMjEyIDhhMzA2ZGZkOWYzMzNlMDUyOTg1YWFhZDAzNGRhZTY0Njg3N2U3ZmQgbGVnYWN5LXRydW5rCisxMTIxMyA3NTEzN2NmZWQ5NTRmNzk2NDRiZTliZTkwNDI1NjRmNGE2ZDUyOTMyIGxlZ2FjeS10cnVuaworMTEyMTQgYTgwNDBiOTQxODY0OWQ5ZjNlY2IxYTkzM2ExYmIxYjA3YzFkMGQ0ZCBsZWdhY3ktdHJ1bmsKKzExMjE1IGFlYWZhZjM4MmE0YmVjNGRkNzFkMDM3Y2Y1OGFkMDU3NjI2YTgwMWIgbGVnYWN5LXRydW5rCisxMTIxNiBkZGFhYzA2ZWMzMjY2ZjUzOThhM2ViN2FmN2IyNzQ5MzM0MWM1ZGJjIGxlZ2FjeS10cnVuaworMTEyMTcgODA3NzZlYWJkMDA1ZmJiODE1ZDY0MjNjZjE1ODI4YWJjMDg5MmVjMyBsZWdhY3ktdHJ1bmsKKzExMjE4IDZjMjBjYTcyMzE4MDQ3ODdhZmU2ODY0ODc3YTExMGYyNjI3NmFkOTggbGVnYWN5LXRydW5rCisxMTIxOSA4ZDA1NDk1NDcwOGEyZjA1MGI5NGIyZjFlOGU5NWYxZDg3NDkyNmU2IGxlZ2FjeS10cnVuaworMTEyMjAgNzgxYWQzMmU3YjFmZjNjNWQ2ZjM5NGVhMzZlY2YxYTI5NzZlMmFhNCBsZWdhY3ktdHJ1bmsKKzExMjIxIDFmMDIwZjc5OTY3ZDk5NThkMDhjMWY2ZjY4MjE1M2ZhOTFkZTA2NTkgbGVnYWN5LXRydW5rCisxMTIyMiA3NGUwMzEzY2Q4MTBlMzQ1ZjA1ZTIzZmJlZTIwMDgzN2VmZDE0MGI2IGxlZ2FjeS10cnVuaworMTEyMjMgNDM0NjRiMWM4ODBlYTk2ZjJlNzgwOGJlZWFiMDUyNDgxZGI2ZDU1YyBsZWdhY3ktdHJ1bmsKKzExMjI0IDczYWZlNzdhMzk0N2JmMmVhMjIwMjJkN2ZjMGY0OTFjNzcyMjFmYWQgbGVnYWN5LXRydW5rCisxMTIyNSAyYTMwYTgxODk0YWUwY2M0OWFiMzJjMzdlNTAyZjc3ODU4MmY2N2I1IGxlZ2FjeS10cnVuaworMTEyMjYgMWQ1ODFhNmRmZWVlMTE2OTE1ODVlMzI4ZWRhMGJjYTQwNjJiMmNiNiBsZWdhY3ktdHJ1bmsKKzExMjI3IGUxYmNmMGJkMzRkNTkzMzk4ZjZmNTJhZTY2ODNkNGMzNWI3MjViZGEgbGVnYWN5LXRydW5rCisxMTIyOCBjYTFiOTA2MTQ5ZTYyMDljODUzNTk5M2Q0NzZhZmU0OWU2YWU3NTE3IGxlZ2FjeS10cnVuaworMTEyMjkgY2Q5OTUyMDMyMGEzMWZkMGJhNDViYjlkN2M3NWQ0MmM2MTgxM2JjMyBsZWdhY3ktdHJ1bmsKKzExMjMwIGVhYmU1NzRkYzkyMWE5MTBiOTA3ZmZjOGUwNTQyOWUxY2VhOTE3ZDIgbGVnYWN5LXRydW5rCisxMTIzMSBkODRjMTEzZWZlZGJmNWE0NDU0OGUyOTJlOTBjYmVkYTQ2OGVjMzU0IGxlZ2FjeS10cnVuaworMTEyMzIgNWVjODk3OWJmMTc2ODU0N2UzOGM2NjVkZDQwYzU3MGIyZDNlMDVjMiBsZWdhY3ktdHJ1bmsKKzExMjMzIDk5NzkzMzAyZDEwZDNlMWFlMmY5MTExNGQ4YWZjMDNlMDY2ODJlYzMgbGVnYWN5LXRydW5rCisxMTIzNCA0ZTA1ZTM4NDQ1Y2ViMzdiODQ2ZGY5ZDkzZTg4ODM3OWQ1ZTA2NmU3IGxlZ2FjeS10cnVuaworMTEyMzUgOWUwODkwNzBkNGM1ZDBlODI0YmFkODVmNTdkYTc5MjE3ODUyNjQ3ZCBsZWdhY3ktdHJ1bmsKKzExMjM2IGU4OGQ0ZTZlNDYyMmI0MzgxZjcyYzBmN2ZmNGVkMzQzOGQyYWNhODkgbGVnYWN5LXRydW5rCisxMTIzNyA3MDFhODViMDQ0YjM0NWY1MGVmYzY2NzgwNmQzOGFjY2I2NzZhYjQ0IGxlZ2FjeS10cnVuaworMTEyMzggZmJhODQ1NWRjYjU0YzQwZTBjYTIyMmQ1NjM0ODNhMzQyN2Y1ODQ0NSBsZWdhY3ktdHJ1bmsKKzExMjM5IGI4YTcxOWM4YTBhNjAxN2EwZTQwYzNmN2ZkMzdmYzg4MTAyZWY1YmQgbGVnYWN5LXRydW5rCisxMTI0MCA2OGZlNjM3NTBmODRmNTBmZWVkOWM1M2IxM2U1OGQ0OGI0MmM4OGU1IGxlZ2FjeS10cnVuaworMTEyNDEgNGFjMmQ0MzVjZTNiYjViZjViZWM5YmQzNDliMWM3NmEyNWE0YWI3NCBsZWdhY3ktdHJ1bmsKKzExMjQyIDJiMmVmODJlZGI1ZWI3MzRlMTE2NDYyMTE0Njk2MzY4ZWE1OGI4MDIgbGVnYWN5LXRydW5rCisxMTI0MyA4NjFjZDIyNzgzNDhhODMyOWE0OGE2MDRmMDdlZTVmYzM4MDM0MGJhIGxlZ2FjeS10cnVuaworMTEyNDQgNDE5MmE3M2NhNDMwZWJkZjJlMmEwNGU4MzUyODE5MzMzMWYxNGRlOCBsZWdhY3ktdHJ1bmsKKzExMjQ1IDU1Zjc5MGE1ZjY0YmZiNDU2MmIzYjg3MTcyYzJjZmNlOTY4ODczYTkgbGVnYWN5LXRydW5rCisxMTI0NiAwNzY2M2RkMGZlODY1NDg2ZGJhYzE0OTczZjhmY2FmMmFkOTAyODQ1IGxlZ2FjeS10cnVuaworMTEyNDcgNjJmYWJlMjQ3N2M0ZGY3YjQ0YzdkMWZkMGEwYTEwZGZmNmMxOWNiOSBsZWdhY3ktdHJ1bmsKKzExMjQ4IDA1ODQxNzA3MWIwZTUyNmJjMjNjMjJkZGZiYjQ5MmEyZTI3N2Y5ZWQgbGVnYWN5LXRydW5rCisxMTI0OSA4NDM0ZTlkMDBiNWE1ZTQ0ZTc1NjczMGYzM2RjMjc4MWE4YmJkMjM3IGxlZ2FjeS10cnVuaworMTEyNTAgZmMyYTcwMGIxMDA3YTUyZjUyMTdjZDllOWE4ZDMxZWUzYWVlYTlhMiBsZWdhY3ktdHJ1bmsKKzExMjUxIDA2ZjgwYmNjOTU2OTExZjM3OTYxOTcyNzkxNDg2MTdkZDEwMWMyNTQgbGVnYWN5LXRydW5rCisxMTI1MiAyNTZhODBmMzlhODhmZDc5NjIyYmYyN2UzYTY0ZTVjOGEzYjA5ZTgzIGxlZ2FjeS10cnVuaworMTEyNTMgMmY0NmY4N2FhODBhYWY1Y2QzY2JmMjA5NWQ2MzU4NDdmZjdiYjYyMSBsZWdhY3ktdHJ1bmsKKzExMjU0IDcwYjYzM2ZmMmZiNzVjNTYxNGI5NDM1MWYxM2IxZThlNDQzNGZhZDYgbGVnYWN5LXRydW5rCisxMTI1NSA0NWJlNDBlZmNiOTUwNDkyZWUzYzczMzYzZmM5M2ViNTg2MmUyNjRkIGxlZ2FjeS10cnVuaworMTEyNTYgZWRiZjYzMWZiN2U5ZTQxMjY5OWE0MmI4OTZiZjViMzhkOTFhZTQyMiBsZWdhY3ktdHJ1bmsKKzExMjU3IGQzOTY3OGQyMmI0YTMzZDAzYTU5ZjA3YWZhZDljNmMyNmIwZjc4MTIgbGVnYWN5LXRydW5rCisxMTI1OCAwNDg0MWVlZDk4ZWY5MTY0YjE1ZDZjOWZhYTU0N2FmODc1YTg3YTU1IGxlZ2FjeS10cnVuaworMTEyNTkgMDA1MjQ1NTVlZjE3NDI4Mzc2M2IxNzEwOWE2NzgzY2Q1ZjVkNDA5MyBsZWdhY3ktdHJ1bmsKKzExMjYwIDNhMWRkMDEzNzVlMDk0MTZjYWU1ZDVlZGZlOGM3ZWRmZTE5OTUyNDYgbGVnYWN5LXRydW5rCisxMTI2MSA5MTM4MjcyYzFmZTZlYzNiMWQ3MWY3ZDAwYjJkODkzNTgyZjgwY2RjIGxlZ2FjeS10cnVuaworMTEyNjIgNmQ2MWQ0ODlkNzI4ODkxNDNjOTgwMTI1OWIwYjliNDEzYTYzMzczMiBsZWdhY3ktdHJ1bmsKKzExMjYzIDllMzE0MTU0MzZmNjJjZDk0NzdjYjFmOWQ5MTU5NGQ5ZGM0NDFhYTQgbGVnYWN5LXRydW5rCisxMTI2NCBhZTNlMmVhZWY5Yjk1MjVmNjViYTYzMzIwNjU4NDU0MGE4MmNlMjUzIGxlZ2FjeS10cnVuaworMTEyNjUgOGU5NGNlOTM5NGJmMjQ2ZTJjYjg4M2VlMjY5YzRlOWM1NzJjNmNjOSBsZWdhY3ktdHJ1bmsKKzExMjY2IGM5OTA5MDQ2MjQ3NjZlZTg3YzFjNTYzYTEwZTRmNmY1YjIxNGIyMDQgbGVnYWN5LXRydW5rCisxMTI2NyBjODViMzhkNThhY2Q4Y2YwOGE1ZWQzODNkMzU0NGE0ZTUxZTQ3NTdiIGxlZ2FjeS10cnVuaworMTEyNjggN2QyMzJjMGU0ZGQ2YzkwYmYzMzliZWM3ZTY3M2Q0Yzc4Nzk1NzE3YSBsZWdhY3ktdHJ1bmsKKzExMjY5IGQyYmZjODY1NDI4MGE3OWMxN2RhMjZjNWFjYzAwNGM3MjA0OGQyZWMgbGVnYWN5LXRydW5rCisxMTI3MCBkNjQyZTY3NDhkMTJjM2FiZjM3N2Q4NTUwYWY5YzQyZTg4MjcwYzBiIGxlZ2FjeS10cnVuaworMTEyNzEgZDMyZGJjMjAyNjEzZTI5YmFiMzhjY2VmNmRmOTk3ZTUxYWY4ODkwNyBsZWdhY3ktdHJ1bmsKKzExMjcyIDEwNzZhMDI4MzY1YTJlZDViZGZjNTE5YzJmOTU3ZmViMWIyMWZkNWYgbGVnYWN5LXRydW5rCisxMTI3MyAzM2Q1OTMzNmU3ZTZmYmM1Njc3NGRiZDM0OWQyMDVkZmZkNWEyZDk3IGxlZ2FjeS10cnVuaworMTEyNzQgMGY1ZTBiNDA1YmMyZjJhYjc0NWY4MzY0MGNlNjRkOTI3ZTUzOGMwOSBsZWdhY3ktdHJ1bmsKKzExMjc1IDFmODA0ZmFjZjYzNTRmYTJmMmViODdhMTU4ZmU4MTlhZDVjN2FkMWYgbGVnYWN5LXRydW5rCisxMTI3NiAwZTMwYjM1YjhhM2ZmZTM1NjBhMDVkZTUyMTE4NjMzNzczZjBkYTFmIGxlZ2FjeS10cnVuaworMTEyNzcgYjhkMmJhNTk3MTFjMjI3MDA0MzY4YzlmOTFiZjllNDczMDA4Zjg4MCBsZWdhY3ktdHJ1bmsKKzExMjc4IDZmYmI1NjA3Y2RkNjA0YzQxNDIyN2MyM2QyNjBmMDY0MTU5ZTMxZTYgbGVnYWN5LXRydW5rCisxMTI3OSBkNTFkMWE2MWIxY2VmNDc3ODNlYTg3ZDY1MTVlNTU3Mzc2ODA2Nzg4IGxlZ2FjeS10cnVuaworMTEyODAgY2ExZTViYzUyMDlkODQ3MTI3M2U5M2Y1MmU0NDhhM2RiZGU0Y2VkNyBsZWdhY3ktdHJ1bmsKKzExMjgxIDQ0NzI2YjA1ODcwMGFkOTNmZjIwODNlOTFkNzIxY2M1M2VjMTEyZDEgbGVnYWN5LXRydW5rCisxMTI4MiBlOGI1NmIzODcwNDVhZTc0ZGQ5YzNmOThkOGQ0ZTkxY2NhYTVmYjZlIGxlZ2FjeS10cnVuaworMTEyODMgNjE0NjQwMzdkYTUzYzJkMDU1MjFmOTdmYWZjMmNlZTNmODQzYmNiOCBsZWdhY3ktdHJ1bmsKKzExMjg0IDgxY2I5NDAxYTIxYjdjODYyOWU4MjQ5YjJlMzA5ODMzZGUwNmRhMDcgbGVnYWN5LXRydW5rCisxMTI4NSA0ZDE4ZWJkNGNmNDIzZWY4N2JiYmE3OTY0ZGMzMmE0ZWQxZThmZTdhIGxlZ2FjeS10cnVuaworMTEyODYgNWQ1YTViYzhkZTVjYjYyODk0NWRhOTljNmYxMjg2YjQzNTJmYzQ2NSBsZWdhY3ktdHJ1bmsKKzExMjg3IGM5ZTQ1NzA1ZWM5ZTEyOTQwMDNiYjE5MmVhN2I2N2UzMzBiNDM5ODAgbGVnYWN5LXRydW5rCisxMTI4OCA4ZTlkMjE0NmFlOTMwMjE1YzExNjYxMzk1ZjM0NjY3NjdlOTk4MTliIGxlZ2FjeS10cnVuaworMTEyODkgNjQ1YTMyOGU3ZmQ0OTQ5Y2Y2ZTIzNDM4Nzc0M2IyNDNmZTRhMjBkZiBsZWdhY3ktdHJ1bmsKKzExMjkwIDc4Nzg1OTg1YTJhYjU4MWI0ZTU1NWY4YzVkZWVlMzcxZWQ1MWQzYmQgbGVnYWN5LXRydW5rCisxMTI5MSBjNWQ3MmJjZGE5MzJhOGQzNmNhMzYwMDViNDVhYmFiOGZiNzlkNzkxIGxlZ2FjeS10cnVuaworMTEyOTIgNGFhNzY0ODBkODEyNTg5MmM1MTVhZTFiYzMxNGY5MGQzZTA0NGY3YSBsZWdhY3ktdHJ1bmsKKzExMjkzIGU1OGE2MTRmYjhlNDBlYWE2NzIxMjEyOTYzMjFiOTlkMDhiYTZlMWIgbGVnYWN5LXRydW5rCisxMTI5NCAxNDA2OTM3NDRhM2M4NTNmN2I0NDY5NGY2YTM3NThiNDFhY2M2ZmY0IGxlZ2FjeS10cnVuaworMTEyOTUgZGQ2NDk4MzdlYmQ0ODk4NDI1NTcxZWFiMjQ2MWQ2MWZkMzFmOGNhYyBsZWdhY3ktdHJ1bmsKKzExMjk2IDY3MzhlNTM4Mzk3NzRmYWUyODZkN2U5MTEwYjg2MzNmMmRmNWFkNjQgbGVnYWN5LXRydW5rCisxMTI5NyA4NDYwYmRjM2RiZjdiN2U2ZDMzZDczOTA0M2RhOGNhMWY4ZmQxMDc1IGxlZ2FjeS10cnVuaworMTEyOTggZDhiNDYxOTg5MjM4ZDgyZjgzZGFlYmZmNTk5MzM1ZmY4NzBkZmU4ZCBsZWdhY3ktdHJ1bmsKKzExMjk5IDBlZGQzOGRiMjI4ODQ1OTVhYWNhMzExNGM3NDUxOTdjMjFhN2VhZGQgbGVnYWN5LXRydW5rCisxMTMwMCA3MWZjYzRjYTBlOGFlZGM5MTYxOGIyYjAxMzIwM2I1ZTA1MmViYWE5IGxlZ2FjeS10cnVuaworMTEzMDEgYzI4MDExMDAwZWQzNjkzZDYzYzIxNGQzMzBhNGY3YjEyNTQyMjVmNiBsZWdhY3ktdHJ1bmsKKzExMzAyIDliMGRkYTlhNTU4YmQ1ZWVjOTZlOTM0NjM2ZWI1ZTM0NTE5MDE0NzQgbGVnYWN5LXRydW5rCisxMTMwNCBhMWMxNmEzZmE3ZGI0MGEzNzU1ODdhMjIzNTdkMGQwMWRlYmNiZDg2IGxlZ2FjeS10cnVuaworMTEzMDUgYmQ0N2VlMDY4YjgzZmI5ZjJhOGI2YTk4OWFiNDBmM2Y4OGM0Zjk2OCBsZWdhY3ktdHJ1bmsKKzExMzA2IGYyYTRhMmI2MDg2MDdiMGFmYzg3YzZiZGJlYjBkYjE2MDFiYTljYmUgbGVnYWN5LXRydW5rCisxMTMwNyBiMDQwOThhMjU2ZDAwNDZkOWNlYTRjYzQ2Yzg4YTlkZGEwOTYyMWIzIGxlZ2FjeS10cnVuaworMTEzMDggMTI5ODcwZTIxNzlhOTFkMjc4YWRlZjdhYzdhNTk2OTk3ODBiZWYwYSBsZWdhY3ktdHJ1bmsKKzExMzA5IDRiZmE1M2JkOTdiYzA2NzYyZTdjM2IxMzEwODNjNGZiYWEyYzNjNTEgbGVnYWN5LXRydW5rCisxMTMxMCBkZjE2MDJiNmEyYTg2MjE2NjE4NmRhYjQwNzYwYWQ1ODY0ZDU3MzhjIGxlZ2FjeS10cnVuaworMTEzMTEgODUzMjE0MWNmZjRjMWY1ZGY2ZGQ1ZTY2M2ZlZWI1ZjIxNTAyZTZhZSBsZWdhY3ktdHJ1bmsKKzExMzEyIDNjYzJmYWQ0ZTAyMGUxN2Q4M2VhMGIwYTc1YzM2NmZiYTI4NGIwMWUgbGVnYWN5LXRydW5rCisxMTMxMyBlZWM0ZGNlYjQ0MzZhYWU2MDU4MGU3YTY5YWI0MDAwNjVkODA0N2ZiIGxlZ2FjeS10cnVuaworMTEzMTQgMDBhNmJiNjVmZjI5M2MwZTBhOGQ2MjNjNWUyNTQzYzliNWQxOWQyYiBsZWdhY3ktdHJ1bmsKKzExMzE1IDc0MWQ1MDYxOGVjMmNhYTdjNjU3OGVmMDlmNTk5ODA1Zjc4YjkwMDggbGVnYWN5LXRydW5rCisxMTMxNiAwNDVlOTAwYTQxOThlMDJhY2EyZDE4MTg4OTdjMWJiYWY1ZmM4ODA5IGxlZ2FjeS10cnVuaworMTEzMTcgMzM2Y2I1MDk4NzlhNDljMjdjMjU1MmQ3NzYxNmIxMGM1MzM0ZDE4MSBsZWdhY3ktdHJ1bmsKKzExMzE4IGIwNGY5NWZlZGQ1MGNhMWFkNWIzOTJkYWViYmY0N2MxZjgxZDc2ZDQgbGVnYWN5LXRydW5rCisxMTMxOSBmMWNhNDE5OTVlNjJlNTE3MjlmYTZiN2M3ODdiMTQ5MjdmYzJkZWQwIGxlZ2FjeS10cnVuaworMTEzMjAgOTI5ZGI4Mzg1YmE0YTUzZTBiYTNiMWVkNjg0ZjQzNmYxZGViNjAzNyBsZWdhY3ktdHJ1bmsKKzExMzIxIGU1YTgzMTE2ODRlNGJkYTM3MmJjZmY3NzA2NTA2NGY4ZGU0OTU4YjcgbGVnYWN5LXRydW5rCisxMTMyMiBjMmY5ZTUwNWY3NWExZGE5MWNhMjE3YjA3YzAzYjAzOTc0NTlmOTE1IGxlZ2FjeS10cnVuaworMTEzMjMgNDRiYWVmOGFiNWM4OWQzNGIxNGY5MDgzZWNkZTAxOTcyYmYwZmQyOCBsZWdhY3ktdHJ1bmsKKzExMzI0IGJkNmQ5N2Q2YjJhZTBiNzcwYmM4Mjk1MjlmNDM1MDRjZjdhZTVkMDIgbGVnYWN5LXRydW5rCisxMTMyNSA4YTM3MDUyNmRlMDZhZDNkYjBkMWMzMTQwNThmMDg2YzQ2NDhhZDNiIGxlZ2FjeS10cnVuaworMTEzMjYgMWM3ZDg2MDg3MWQ5ZDEwZWVkZWI5YWNjYjM2MTYzZjk2MTM5NWIxZCBsZWdhY3ktdHJ1bmsKKzExMzI3IGI2NWVhODEyNzc1MjVhOWU0ZGQyNzY3MDQ0NTQzZjlkMzEyZjdkNTYgbGVnYWN5LXRydW5rCisxMTMyOCBiOTMzZjU4NGEyNmQwMzEyNjQxZTZjMzhiMGU4NTE4NTczOWRmZWQ4IGxlZ2FjeS10cnVuaworMTEzMjkgNzQ1MzM0NTQ1ODk4MWJlODgwZDk2MDQzOWIxMzIwNjU2MDM2MzQ4OSBsZWdhY3ktdHJ1bmsKKzExMzMwIDA4NjcwMjI1MDE1MzRhMWYyNGQwMTNhOGQ4ZTJkZjU5YjZmZmI3MTEgbGVnYWN5LXRydW5rCisxMTMzMSAzN2M2OTE4ZWZkM2JjYTEyZmQzNTcyNjNhNjUxNTE4YmE5MmE1ODc2IGxlZ2FjeS10cnVuaworMTEzMzIgNjFlZjg4MTg2OTViZDQzNmRmMGM4ZGFmODI0ODBhNDU3ZDMwNzBiOSBsZWdhY3ktdHJ1bmsKKzExMzMzIGMzNTE1MjNlYmMwNWVlYmRjOWM0NDk3NDEwODZhZjBmNTZiM2M1YTkgbGVnYWN5LXRydW5rCisxMTMzNCA1MzRhMWE0MzdhZjNhOWI4ZWFmNzM1MzIzODYxZTI3Mjg5MGVkMDZmIGxlZ2FjeS10cnVuaworMTEzMzUgY2VmMjBlYzZmMjQ5Y2M0NjJkOWM0ZjJmZjc5ZGI0ZGRkZWUxOGQ4MSBsZWdhY3ktdHJ1bmsKKzExMzM2IGJiZTlkNzJiY2NkYTI3YTlkYWEzM2UwNTg4MjkwM2ZkOWYzYmViZWUgbGVnYWN5LXRydW5rCisxMTMzNyA1ZjlkZmY2ODE3OTdmZjk0MDc5NDg0MDNiMjhjMDY3NDgwNTJiOWQ0IGxlZ2FjeS10cnVuaworMTEzMzggMzU0Y2QyNGU1ZGZlNDJhMGY4MmYwMzAxZjc5YWEwMDg3NjkwNjA0MCBsZWdhY3ktdHJ1bmsKKzExMzM5IGQyODA0NjA4YmVjZDA4YTFhNGI1ZTI5ZWRhMGIzOTA1MGQ0ZmVmMmEgbGVnYWN5LXRydW5rCisxMTM0MCBmN2Q0YTU4NWRhMDE4NmMwYjViODhiODAxNGU3Y2E5NGYzMGY3NjMxIGxlZ2FjeS10cnVuaworMTEzNDEgNTY3NjA3MDc2ZDhmNGM3NmEyOTI3NjdiYjQ0MzhjM2MyYTk0ODA2YSBsZWdhY3ktdHJ1bmsKKzExMzQyIDg2NTNlMWYyMTlmMWJkMjI2MWUxMzdjOTZmNzBmZmUxM2JhNTBhMDIgbGVnYWN5LXRydW5rCisxMTM0MyBkODA4ZWJhNGIzYzY1MzA0ODgwZjBlMmU2ZDViMTIzNjYyYmRiY2E4IGxlZ2FjeS10cnVuaworMTEzNDQgZTE0NDU4ZjEzNmNjYWUzZDdhNmI0OWMxODE2MzgxYWU2MmVjMTE5OCBsZWdhY3ktdHJ1bmsKKzExMzQ1IGUwMjRjNjk2MjVlMTJmOGVkOTY2NjU2YTVmZjUzZDA1ZmMxZjM1MWMgbGVnYWN5LXRydW5rCisxMTM0NiA4MDExZjE0NjY5YTgxN2Q0YmU5Y2YxNTJkMzUzMGQ1NDRjMzJhYmQ3IGxlZ2FjeS10cnVuaworMTEzNDcgNWNkZWNhYWE5YmViMGQzN2RkMWU0NDlhODE5YmRlYTQxMjRlMWVkZSBsZWdhY3ktdHJ1bmsKKzExMzQ4IGY0NTZmNWFhNTcxODVhMmQzMWM5MjBhOWMzNjJjZTBiY2UzMDQ3NmIgbGVnYWN5LXRydW5rCisxMTM0OSBhMWVjM2VjMjYwMmVjYTU4MjZlYjgwZGY2MjE0OTA4NzU4OTNiNjA1IGxlZ2FjeS10cnVuaworMTEzNTAgYmI3OGNjMjc0NjlhYjRiZTg3MzhhMGVjMDZmYTExODgyNjMyYTk2NyBsZWdhY3ktdHJ1bmsKKzExMzUxIGY4ZTJhZDRjZDQ1YmMzYjFiZDExNjQ1MDhlMjEyYTBkNmFmYWUwNzMgbGVnYWN5LXRydW5rCisxMTM1MiA1NzA4OWFkNGQ3M2M2ZTIwYmFmODU5NmEyOTVhNjY5Y2NjZDk2NjBmIGxlZ2FjeS10cnVuaworMTEzNTMgM2JjM2Y5NGQ2MDYxZTRmMmFmMzU3OGQ1ZGUwMGM2ZTZjMDQ0YTM4MCBsZWdhY3ktdHJ1bmsKKzExMzU0IDA1YzExMDRlMDg0YjMxNDYzNzRjOTI4NzliNmRiMjQyNTQ2MDQ3OTggbGVnYWN5LXRydW5rCisxMTM1NSA4NjhhMjVjZjY1M2JmMDVlYjM5NzU5ZThhN2EwYWZlNzgxZGJkYmZmIGxlZ2FjeS10cnVuaworMTEzNTYgYWFjYmZkZjQ5NDNlNTI5ODdjYzM1YWFhOTQxOWM3MmY5ZGFmZDI0YyBsZWdhY3ktdHJ1bmsKKzExMzU3IDEwNzkwZjE0ZDEzYWJkMjZhYTIyOGYwYzE4ZjNiZGNkNTQ5NmEzZDAgbGVnYWN5LXRydW5rCisxMTM1OCA3MmI2OThjMzMyNGI5OTA1YTQzNzAzYjEyOGVlN2VjMzlmM2YxYjkxIGxlZ2FjeS10cnVuaworMTEzNTkgZDM0MmViNDRkN2JkZDU0Zjc1Mjk4MDA2NzgzM2U3YTQ5OTI1YWVmMSBsZWdhY3ktdHJ1bmsKKzExMzYwIGViMDU5YTMzZjdmZjMxYzk5Mjg2NTg3NzVmOGM0OTY4Yjk5OGYwOTYgbGVnYWN5LXRydW5rCisxMTM2MSA4MTNmNTI3ZjNiZWMwMWNkN2MyZGQ5OWMyYjRjZWIwZDM0M2FlOGNjIGxlZ2FjeS10cnVuaworMTEzNjIgMjdlZTMyMzFkZmE5YmVjODBhODJiNGU1NTNkNjJjODdmMTIzNDJkMyBsZWdhY3ktdHJ1bmsKKzExMzYzIGE5ZWIyNjVkMmY1NzBkZWJmZDRkOTZkNTQ1ZjBkMjI3YzYxNTMxNjIgbGVnYWN5LXRydW5rCisxMTM2NCBmZWJjYTZiMTgyN2RkZGRhM2EzZDI5YmY5NjgyNWNkNjM0MjExOTgyIGxlZ2FjeS10cnVuaworMTEzNjUgYjI4Yjg0ZTZhNDI5NDA1YTMxZGU3MmU5YTUxZmIzMzA1NzA2YzhmNSBsZWdhY3ktdHJ1bmsKKzExMzY2IGY4OGY0MDI0MTdmMjlmM2M0M2FhNmIzNzY0ZTJkMzI2ZWFiMzI2MjkgbGVnYWN5LXRydW5rCisxMTM2NyA4NWRjZTMyYWNmOWQ3OTc4OGE5Y2ZiOWI2YzRmYzAyMDdmMTMxNzZkIGxlZ2FjeS10cnVuaworMTEzNjggYzBhOWVkMjFkZmEwNTYwMmNmNzRhOTk0ODBiNTZhOTEyMDY5ZDJmNSBsZWdhY3ktdHJ1bmsKKzExMzY5IDA0YTQ5MmYxMTBkYmRjNzA2Y2I2ZjhkMDNjZmM2ZmRhOTg4Mzg1M2MgbGVnYWN5LXRydW5rCisxMTM3MCA4YzA1MjRhNzEyNDRmZDBlY2E4ZWI2ZWEwZmMyZDI4Y2ZkOTdiYjljIGxlZ2FjeS10cnVuaworMTEzNzEgOWEwNzVhMmVkYjFmNTQyZjg4OTFiOTYxNGQyOTZlNzMwMjM2ZmI0ZSBsZWdhY3ktdHJ1bmsKKzExMzcyIDM0MDEyMTJlNTRmYzM4MDVjYjY3Yzk5NzAxNDJiNTNjMDllM2IxZmQgbGVnYWN5LXRydW5rCisxMTM3MyAzMWMwNjM1MTdjMjJlYzM0YzdlMjBkMDMzNGE1YzgxOWJkMDRlZDRhIGxlZ2FjeS10cnVuaworMTEzNzQgNjBiNGE2MTBkY2ZjY2FhNzNiNzA2NmExZTcwMjA4YWNjMmNhNTQ1NCBsZWdhY3ktdHJ1bmsKKzExMzc1IGE3MDgzMjk1ZWIzOGVhYzAwYmQxZmU0OTlmYzEzZGM0M2UxZGYxMmUgbGVnYWN5LXRydW5rCisxMTM3NiAwOTA2M2VlZGEyYjcwM2RhODljMjJiNzZjNjA3ZjNiOGQzMjVmMTdkIGxlZ2FjeS10cnVuaworMTEzNzcgNzY0ZGU3MzFjODA2M2ZhNDNjNTYyNjk5N2FjZDkxZTMyNWEyZDEzNSBsZWdhY3ktdHJ1bmsKKzExMzc4IDliNGJjM2I4YjlkNGNkMDVlODAxY2ZmOGUxMzhlMzQxMDk1MTZkZWEgbGVnYWN5LXRydW5rCisxMTM3OSBkMjk1YTUxODc0YTZhZmEyYWYyMTdmYWI5YjBmMjI3YTM1NDcyZDY3IGxlZ2FjeS10cnVuaworMTEzODAgOWRiOGI1ZWE2YjIxMjIwNjlkN2M2NmJiMTA2OTAzOWNiNjY4ZTRhZSBsZWdhY3ktdHJ1bmsKKzExMzgxIDQ5MjM2M2Q2YmM5NDUxMTg0YzJlZjQ1MzM0MGYxZTFjZTdmZWQwOWUgbGVnYWN5LXRydW5rCisxMTM4MiAzODU0NGY4MjhkNzQwOGUyN2Y5ZTNkODhlMDI0Y2E0YzBmYTY1NGMzIGxlZ2FjeS10cnVuaworMTEzODMgNmRjMGE5ZGM1YmJiOTFhNTRjMzkxMjJiZDQ1N2NiOTUxNThiZDdmOSBsZWdhY3ktdHJ1bmsKKzExMzg0IGRkZjcxMGI3ZTZlYjZmZmI1MjA4ODEzYjQxNmVlNGM2ODNkNDBmZWIgbGVnYWN5LXRydW5rCisxMTM4NSA2ZjczYWUxY2Y5MzQ2YTcxNjk2YmRkNWZhNTkzYzFlMjAzNjJjNjViIGxlZ2FjeS10cnVuaworMTEzODYgNmQ4YjkyY2FmOGNkYjUyZTA2OGNjY2M3YWViNTU0NTJlMDAxN2M2YiBsZWdhY3ktdHJ1bmsKKzExMzg3IGQ0MWZmNWIxOTFkMWQxMTZiODdiZGQzMDdkYzU5YjEwMmYzZmQ1YWUgbGVnYWN5LXRydW5rCisxMTM4OCAyOWQ4NDdjNDI4ZjlkYTcxOTkwYzQ5MmFiZWU3Y2FmNDhlMzZiYzQ3IGxlZ2FjeS10cnVuaworMTEzODkgOTgwMzU1NmMxYWU3YzNmZWVlZGExYzBlZTRlYjg4OGVmNGVjZWM4OSBsZWdhY3ktdHJ1bmsKKzExMzkwIGE1YjcxYThhMWFiNTg2OTYyYzQ2NjBlYmFiZTgzZDdjYjI4NTg5N2IgbGVnYWN5LXRydW5rCisxMTM5MSA3ZDY4MTM1MjFmNjEzNTllYzc2YjI5MGJhNzM1MWViZDdmY2ViNjk3IGxlZ2FjeS10cnVuaworMTEzOTIgODllNjVhOTZhN2QzZmE4MDU1MzU1MzRmMGI3ZDllNTQ0YWU1ZmM4MCBsZWdhY3ktdHJ1bmsKKzExMzkzIGIxZDFkOGMwMDcxYmE3Y2Q3MzRiN2IxZDVmYzE0MDNmOTVlMmRiNjcgbGVnYWN5LXRydW5rCisxMTM5NCA5YTk4NDI3NmNjNTY1Y2EyZmQ2ZjY1YjZiMzRmMzUyMzE5NjRiNmJlIGxlZ2FjeS10cnVuaworMTEzOTUgNDU5YmRhOTQwZGFhMjc4MTRmNzk5N2JmYTU0NjEyM2YwNGI0MDE2NyBsZWdhY3ktdHJ1bmsKKzExMzk2IGQ2YjczOTYyNTI5YmI2NjE0ZjYzYzI1ZWNlZjNjYTc2MTJiZWM3YjkgbGVnYWN5LXRydW5rCisxMTM5NyA5YTQwNTRiODQ4NWZmNGVhZjY2YzRmMGI3MDA3ZDg5N2M0NDY4NDJiIGxlZ2FjeS10cnVuaworMTEzOTggNTUyYzZiM2FiYTNkZTUwNTRiYmY0NjllZTQ2ZjQ0ZjU2YjFiOTFkYiBsZWdhY3ktdHJ1bmsKKzExMzk5IDZiNjMzZGY0MWU1OTUxYWFjYzRmMGJmODc1Njk1Y2JhMDdjMjIzNDIgbGVnYWN5LXRydW5rCisxMTQwMCBlNTVhNzlmZjgyMjhmOTIyYThjY2M2ZThhYjk2YjY5MTM2YzRkMDc4IGxlZ2FjeS10cnVuaworMTE0MDEgYWNmZmZlMTQ2MjhlNDQ4YmZlYjA4YjVhOGQzOTIxMTQ5ZjQ4NmE0YyBsZWdhY3ktdHJ1bmsKKzExNDAyIDYxMDY4MGUzYjkyOTNmYjZjZDFkMzFkMWRhNjA1MDNlMzlhY2IwZmMgbGVnYWN5LXRydW5rCisxMTQwMyAwMjdmM2VlZjZlNWE3OWVlYzQ0Mjg2MTUwMDExMzhkOTZlNzEzYTJiIGxlZ2FjeS10cnVuaworMTE0MDQgZDBmOTNlYmE5YmFhZDBjNGJhYjU5ZjM3YWIyY2NmNDkyZGE1MmIzNCBsZWdhY3ktdHJ1bmsKKzExNDA1IDhlNDE5MDY4NjNiZTdiYjQ3ZDExM2ZlN2VhMGFiNDlmYjJkMTY0YzIgbGVnYWN5LXRydW5rCisxMTQwNiAyOGJjNWQ4ZThkY2EzNmIzM2YwMTRmMzI1MzJkMGRlMmU3YzcyYTNkIGxlZ2FjeS10cnVuaworMTE0MDcgMDk1NGFkNGFjZGZkZTVjOGNmNWQ1NjNiMGQwOWM1MDE2MjY3MzM0OSBsZWdhY3ktdHJ1bmsKKzExNDA4IGJlOTM1ODUxZGM1MGMzZGRhZmZmY2M4MDkwNmI0Yzk5MGEwMzkyMTkgbGVnYWN5LXRydW5rCisxMTQwOSBhZjliZjg0ZmJjNWVhNDJiOWE2MTM4N2FhZDkxYTc1MjEzOTFlNjA0IGxlZ2FjeS10cnVuaworMTE0MTAgNzNmOWExZThhZTUyYzA1YTU0ODdhNjExNWJlZTZkMTk1MGRjYzEyNCBsZWdhY3ktdHJ1bmsKKzExNDExIGE4MjQ5YTZiMWI1OGU0N2RkZTgzMzIzOTEzODMxNWI3OTNhZDg3NTMgbGVnYWN5LXRydW5rCisxMTQxMiBiYThkMWJjOThiMmQ4MTU5ZDlmZDBmN2EwN2I0NjU4ZTQxNjg1ODZhIGxlZ2FjeS10cnVuaworMTE0MTMgYzQ1YTJkOTExZjMxNTY2ZjMzZTNlMTY3ZWFiOGNkMjRkM2NlYmQzNCBsZWdhY3ktdHJ1bmsKKzExNDE0IGRhZTJmMmVmOTAxNWFhM2UzOGI3MTBjZWQ1MDQ4NGVkZjY1ODgwYzIgbGVnYWN5LXRydW5rCisxMTQxNSAwYmE4MWI5OTg4ZWVmZWQxZDYxMDEwN2UyZWRlZTc2MThhN2FhMGI3IGxlZ2FjeS10cnVuaworMTE0MTYgZGM2ZWRmZDRiYWU1YmZiMzNlNWRhMjcwOTYzNjg3ZTViYzRlMmQ1YyBsZWdhY3ktdHJ1bmsKKzExNDE3IDIwYjgzY2EwNmNlOGExODczNjNlNGNlZmYxMDUzODUxYTg5MWRhZDYgbGVnYWN5LXRydW5rCisxMTQxOCAyZjkzNmI3YTA5Zjk0ZjE4MDRjYWNhN2I3MTRlNDgzY2RkNDQ1ZGRhIGxlZ2FjeS10cnVuaworMTE0MTkgNWI3M2Q1YmFiYzc4ZTkxYWI1NTA1ZWI4NjY2YzExODEyMjU5NWU3MiBsZWdhY3ktdHJ1bmsKKzExNDIwIDE5N2FjNWFkMzBjZGYzNjA5Mzg3NTE5MzBhMTUxN2FiYmMwNzJlMmEgbGVnYWN5LXRydW5rCisxMTQyMSBiNGUyYjJjYjY1YjFiZDEwNWY3ZmNiMjk1YTJhY2U5OTI4ZjM2ZDA2IGxlZ2FjeS10cnVuaworMTE0MjIgMzQ3ODg0ZWM1MzE4MTM3Y2UyYjdhNGY4YmJiYTQxMTU1NWQ0MDdkNSBsZWdhY3ktdHJ1bmsKKzExNDIzIDJkNzc1MzA4NTM4NTkyZGVhOGRkYjkyOTY4OWEyMjEwZDhhZWI2MzcgbGVnYWN5LXRydW5rCisxMTQyNCA0MDA4OWU1NTgzMDkwY2FlYmMzMDllNDM2YTdkMGE4Y2QzYWIxYjdjIGxlZ2FjeS10cnVuaworMTE0MjUgZmRhNDYzYzNiMTc2Nzg5N2U4NTA3MWE0MTY2NGRhOTQ0OTY4M2IxMCBsZWdhY3ktdHJ1bmsKKzExNDI2IDBmMzMxODgzY2MxNWYwNTNlZTk3ZWQ5YzQ2YjUyMWFmMTYxNmU4YWQgbGVnYWN5LXRydW5rCisxMTQyNyAzYjAyOTE2NTVlMzE2MzEyYWJjZWViN2ViYWNjZDU1ZDk0OGYwMmExIGxlZ2FjeS10cnVuaworMTE0MjggNzYwMWE3ZTk1ODNkZTVkYjkwOTNhOGJiMzhmOTUwMDk4YmM2OWVmNyBsZWdhY3ktdHJ1bmsKKzExNDI5IDUwYWZhMjhhYTRiOTE5YzllNmMyZDZhNzVmZGQ2NmY0ZDJiMDdlODUgbGVnYWN5LXRydW5rCisxMTQzMCBjOTE4MDljZDY3ZTU0MWJlNjRhODBkYTIyZTQ1MDMyYjNlMTdmMDI4IGxlZ2FjeS10cnVuaworMTE0MzEgN2NkNDJjODc4ZjE2MTliMmRlNDg2ZDZiN2RhYTM5MTdiYzM3YzM2YSBsZWdhY3ktdHJ1bmsKKzExNDMyIDBhNjg5MmIxYTRhYzI4MjljZjliYWMyZjE3YmU3NThhNGExMjcwMDkgbGVnYWN5LXRydW5rCisxMTQzMyBjZjNjZWJhN2VmZGRlZDYyNTdhOTc2N2NlYmM2NWQ3YjhmN2Q4NTZiIGxlZ2FjeS10cnVuaworMTE0MzQgOGFjYzcyYTgxMzE5OThmODA1Njc4ZjNiMWI1ZTg4NWNiZjVlM2JkMSBsZWdhY3ktdHJ1bmsKKzExNDM1IGNiN2ExNTA2OTE5YWY0Zjc3YjcwNzNkOGYxNmJjMDg4ZjM0YjM0YmMgbGVnYWN5LXRydW5rCisxMTQzNiA5OTAxNTM4NTNlM2JiMWU3OTc5N2FmYzM5YzRlYTg3YTA3NTU3ZTk1IGxlZ2FjeS10cnVuaworMTE0MzcgMzg0ZmZlZDI1MmU5MWZkODQ4ODhlYmU1ZWRlZDQ4ZWQ5NmZlNTEyNSBsZWdhY3ktdHJ1bmsKKzExNDM4IGMyNjU5MGIxYzM5NmI1NzBlZjI5NmFmMzgyZTYwMmRlY2IzYmVkZTcgbGVnYWN5LXRydW5rCisxMTQzOSBhYzE4ODFjNGJhNmQ5ZDA2YTk2YjcxYzExNjM5N2IyMTQ2MDkwYWZhIGxlZ2FjeS10cnVuaworMTE0NDAgYzc5ZGVmYjVhMzljMWJkNzNjM2Q2MmFhN2EwYjJhMTFmODkyYTNiNyBsZWdhY3ktdHJ1bmsKKzExNDQxIDI0OWNkNDQzM2NmMDhlYmYyYjg2OTUyODMyMDE0N2M1YjQyZTdjZmUgbGVnYWN5LXRydW5rCisxMTQ0MiBhMWRlYWYwNDI3N2JiYjhhMGRhNmUzY2U3NWVhNjQzNTgzNTI4ZTEwIGxlZ2FjeS10cnVuaworMTE0NDMgOTYxOGE4Njg3OWNhZWZhYWE3Y2MwMzc2ZDEwOGY1NTBiYWQzZWUwZSBsZWdhY3ktdHJ1bmsKKzExNDQ0IGU3OTU4ZThjNzc3YTc4NGI5YzBjNjZlNjE5Yzk1MjdlYzY0NmVlYWIgbGVnYWN5LXRydW5rCisxMTQ0NSBlY2RkOTZkZGIwMDM1ZjdiYWE3MTNmY2I0MjY2NjY0OWRhNTkzNTY3IGxlZ2FjeS10cnVuaworMTE0NDYgNGI2NGYxMzFhYTRkODUzNDIzZjQzMTI3Njk5MmE3MWNlMDQ0OTViNCBsZWdhY3ktdHJ1bmsKKzExNDQ3IDk5ZmZlMGEzOGExY2FkMzhhYmY1OTU1YjdkNTA4NGFjOWUwMDI4YmUgbGVnYWN5LXRydW5rCisxMTQ0OCBiZTIxYWFkZjQ5MDhmN2Q5ZWYwZGY1MDg0YjJjMzg5YjIzNzlmOTFhIGxlZ2FjeS10cnVuaworMTE0NDkgYzRjMzI4YWFiZDgyNWFhZTlkZDQ3ZWRkMGM5ZTYwN2Y0YzZiZjljZiBsZWdhY3ktdHJ1bmsKKzExNDUwIGRlMTZlMTlmZjFkZDhiMGY4YTg4NTU2Y2U0NTYxMDIxNTA4MDRmMjYgbGVnYWN5LXRydW5rCisxMTQ1MSAxNTdlNGYyMGNkNzE2MDk0YTdmZDk1ZDY5ZDFlM2NkNDQ3ZGU4ZjgxIGxlZ2FjeS10cnVuaworMTE0NTIgNDU2MTRjZjllOTExYjBkNjQwNDMzMjdjZmVhZTVjZDZmOTIxZjkxZCBsZWdhY3ktdHJ1bmsKKzExNDUzIDU4ZDY5MGQ0ZTMxMjgzNzViNGM2NTE3ODk1YTJhNDE2NTQyOTVkNTQgbGVnYWN5LXRydW5rCisxMTQ1NCA3ODg1ZjE1ZGEwODAxYzlhMzU3OWI2YWE4NjE4ODI4ZTE3OWY5ZTc2IGxlZ2FjeS10cnVuaworMTE0NTUgNDY4Y2E4NGZiYzE0YTI1NWNhMzBmOTlkZjlkOTFlMWRkOWJiYjI3YyBsZWdhY3ktdHJ1bmsKKzExNDU1IGZlZDYzY2NiZTZkYzNhYzY2M2JmZTk3YTJmNzAwNmIxYjI4NTY4ZjkgbGVnYWN5LXRydW5rCisxMTQ1NyBkNjljZmMyM2FhNzY2NDMwYzFkNTMxODdkY2EyMGM5YWYyNjliZTVjIGxlZ2FjeS10cnVuaworMTE0NTggM2JjZDYyNzhlNjU4MTA3ZWRiYjQ2N2ExYzRiM2UxM2JiNzBjMjZkNSBsZWdhY3ktdHJ1bmsKKzExNDU5IDgyYTQzZTFiZmE0ZmRhMDYwMjM3YjAxZjM5NzRiNWQ4ZWJmZjg5YTIgbGVnYWN5LXRydW5rCisxMTQ2MCAwN2Q5N2QxNTQ2ZDRiM2M0NDc5NWJjY2Y0YzNkOWFmNmE4NTExOTVkIGxlZ2FjeS10cnVuaworMTE0NjEgMGFmYzM4Mjc5NzdlMTJiMGY3M2JiYjlhMDM3Y2JjZGM5NTJiZDg5ZiBsZWdhY3ktdHJ1bmsKKzExNDYyIDI2YzA0MWIxNDVjMTk1YjRkZmI4MmRmOGIyYzNlOWNhNTk2ZmUwMTkgbGVnYWN5LXRydW5rCisxMTQ2MyBmMWU0MWZjMjc4M2MxOWRkOTY1N2U1YzA3OGE5MGVlNjM5NTAxZTc2IGxlZ2FjeS10cnVuaworMTE0NjQgMDM5ODA1MWY4ZmZhZTE3NTEzN2NjYTY2NmE5YjNhM2Y2YzNmZjY5OCBsZWdhY3ktdHJ1bmsKKzExNDY1IDdjMmJjN2RiNDkzMzZjYzE2NGUyOGIzYTg4YzExNDFjMmYwMzQzMWUgbGVnYWN5LXRydW5rCisxMTQ2NiA0ZWY2NDBhY2YyMzY1YWE3MTUyNzlmMTc5ZjY5NDFlNThjMGUxNDAxIGxlZ2FjeS10cnVuaworMTE0NjcgNmQ0ZWEzN2Q3MGMyMmFmYTUwYWI3ZTBlMDY1ODM0YTZjZjQ3NDQ2NSBsZWdhY3ktdHJ1bmsKKzExNDY4IGQ3ODc4YjM4NmRhZmE4MTFhMTg5Y2U5ZDBjZWJjMmFjM2E3MWIyZTMgbGVnYWN5LXRydW5rCisxMTQ3MCBmZjY3ZjkzYzRhOWJjMGZmM2UzNWQ4YzVkODU3Mzc4NThhNDNlMjEwIGxlZ2FjeS10cnVuaworMTE0NzEgM2UxMjdiY2E4NGU3MmZiZDk0YTI0YWEzZTFmMzc1OGQwZTUzY2U4NyBsZWdhY3ktdHJ1bmsKKzExNDcyIDA3MGRlNGQzOWRkZDg2YWM5NmRiYTU2ZGU5ZGMzOThkMTQyMTQ0YjEgbGVnYWN5LXRydW5rCisxMTQ3MyA1ZmIzYzY4M2U4NjI2MjM1NjY2YzYxOTRkNDA2MmRlNTI0NTc5NzUwIGxlZ2FjeS10cnVuaworMTE0NzQgZDE3ODIyNzEyNDIxMGVjYTQ5NDk5ZTg5MjFiZDQzZTI4YzhiNDIxNCBsZWdhY3ktdHJ1bmsKKzExNDc1IGRiMTZjYTRkZTRjNDg3ODE5ZTYxMmU0ODhiMzY5Y2I1Zjg4MzZlZTMgbGVnYWN5LXRydW5rCisxMTQ3NiBlZTNhZjkxMWFkNTZiNmVkOWIxMTU4MmExNDc0ZTA0MGJhNjU3ZTI1IGxlZ2FjeS10cnVuaworMTE0NzcgMDkxODM5NDMxODJlYjMyYTg2ZTkzMzlkODI1OGFmMzBhYmVmZjA1MiBsZWdhY3ktdHJ1bmsKKzExNDc4IDljOWM0YzNlZGVjMmVkMDA3OTdlZWQ1YzY1YjEwYzgzZTc5YjI0YmYgbGVnYWN5LXRydW5rCisxMTQ3OSBmMTQ3MzkyNjFhMzRjMTgwY2JlNzM3MzkxM2MxMDFkZTQzNDk0NTczIGxlZ2FjeS10cnVuaworMTE0ODAgM2JkZDBlNzkwYmM5ODY5YzEyNjA4OGM2ZTZmMGY3MGQzYjNjZjY5MiBsZWdhY3ktdHJ1bmsKKzExNDgxIDI5ZTNiMWViNDZiMTkwZTdkMzhiZTMxN2E3ZDg2NjJhOWE3Yzk1NDEgbGVnYWN5LXRydW5rCisxMTQ4MiBmODY0YzlmNjU2MDk1MmI1MTk5Nzg2Yzc0YTZjN2VlZGJkNWM4ODYzIGxlZ2FjeS10cnVuaworMTE0ODMgZGZiN2Y0NjhiNzhkMzc3NTg5OTdmYmY2YzdmZmFmYTJhMDI4MDA4OSBsZWdhY3ktdHJ1bmsKKzExNDg0IGMyZGQ0ZjA4NmE0MmJmYTQxMWZhZjdkZmE2OWMxYmFhOTI3MDE4NTUgbGVnYWN5LXRydW5rCisxMTQ4NSA0NDUwNTA3NTU1ODZiNTkxMjJjNWZhNGFjZDhjZWRiMzhhNWVhODU4IGxlZ2FjeS10cnVuaworMTE0ODYgNzExNmNiOTcxMmJjYzcwOTk4ZGY5NGRlYTc1ZjU1YjIzNjMwOWIwNyBsZWdhY3ktdHJ1bmsKKzExNDg3IGYxNmE2ZTY0ODU5YmI4Y2Y2Yzk4NmI1NTQ4YTNhZDEzOGJlOTI1NzcgbGVnYWN5LXRydW5rCisxMTQ4OCA5M2JlYzZhOGRiMjFiMWYxMzUzMjBkYjJjZGRjZDY4NmVhZTY2MDQyIGxlZ2FjeS10cnVuaworMTE0ODkgZWMwMWZlOWMyODQxN2FiZWU4MzBjY2YwYThkZTI0ODVmMzc5MTBiYiBsZWdhY3ktdHJ1bmsKKzExNDkwIGE5ZjZmYjE0YWJkN2NhMjAxOGIwMDlhMTBlZmRhZjU5YjRiN2FlNTIgbGVnYWN5LXRydW5rCisxMTQ5MSBmZjFhOGEzOGY4YzExYWZiNWI5YTdjMzQ3ZTQzMjk5Y2QzZGFmMzA1IGxlZ2FjeS10cnVuaworMTE0OTIgZWFiYmUwZWQzNDY4Y2NlYzhiODBiMjEyNWM3NmNiY2RiOWQwYmYyMiBsZWdhY3ktdHJ1bmsKKzExNDkzIDU5OTE2NzI4ODVjYjFhYzRkZmNkODk0MWI2ZjRhOGExOTc0M2M2M2YgbGVnYWN5LXRydW5rCisxMTQ5NCA5ZTAxYjc0ZGFmNzdjNzFjNzc1ODFmZjNlNDRlMTlhZDAwMTA4OGU5IGxlZ2FjeS10cnVuaworMTE0OTUgYTExMGI2MDY5OWIxYjQxMjU1MTdhMTVmYTg3ZGRlNzUwNWZkZWNjYyBsZWdhY3ktdHJ1bmsKKzExNDk2IDM2YmZhZmRkYThkMTRmM2I5ZmNmMjk2NDYxOThjNjlkOWU3MDU5ZDcgQkJQWQorMTE0OTcgYmZkODQ3MmY2OTZiOWM4ZmM2OWEyYzczMTkwMmVjMTQxZDlhNDA0MSBPU0FNCisxMTQ5OCBkODVlODA3MGIxNjRmMzc2ZjdlNmM1MmQ0YmZiYWU0ZTNjZDEzNDk2IFBZVEhPTlNDUklQVAorMTE1MDAgYThkNDdhMzcxOGNlOWZkOGM0ZmY3ODM3NjlmMWFhNTk1M2Q5ZDlkMCBCQlBZCisxMTUwMiBiNGQzZjk4YmYyMjk3MmQ0YTEyMTFlNWJjM2Q5MmRjZTM3NTNkN2ExIFBZVEhPTlNDUklQVAorMTE1MDQgZTFmMzIzYWU5YzRiNTIzN2RkZGYwZTE4NTA5Y2NjNmUzMmU1MjA5NyBPU0FNCisxMTUwNSAxMWFiYWUyODRjMDcxZWRiZWU0ZTUxODQ3NWZhMGRjN2NmNmIxMmNkIGxlZ2FjeS10cnVuaworMTE1MDYgMTdjZDZlNWQyOTRiYjNhMDRiZDk5OGNkN2E1ZTYzNWRkYWFhMDI4NyBQWUlERQorMTE1MDggZTkyMWNkYmNjNWRkNjNhZmI2MzM0YWQ5M2M3NGU0NDU1ZWIxNzRhNiBQWUlERQorMTE1MDkgZGZmNjg4MTI0NjU3MmVjNzkxYTRiMTU5MzYyMjBhMDBkNzBjMjc2NCBsZWdhY3ktdHJ1bmsKKzExNTEwIDJjZTNkYTQxOWUxZDM5ZTc0ZTAwN2EwODg0OWEzZmQ1OGRiZWVjMDUgbGVnYWN5LXRydW5rCisxMTUxMSBkZDVmYTE3NTc1NTZkYjczZmM2MzA0ZDRjNDViYjdjYWMwOWRiMmMzIGxlZ2FjeS10cnVuaworMTE1MTIgYjlhMDcwNzM2ZWFjYjMxMWM3YzcyMTgwOGM2Y2FiNGM3YTIxMDgzYSBsZWdhY3ktdHJ1bmsKKzExNTEzIDg5N2NlMDk3NjY5NjUyMGE0YjFlM2ZiN2IyMDJmZmFkMjhkYThhYmIgbGVnYWN5LXRydW5rCisxMTUxNCBiMTUwZWJmN2IyYjcyYzQ4YTkwMGYyMjE1OTEzYmNlZDgxMmQzOGZiIGxlZ2FjeS10cnVuaworMTE1MTUgNjc0ZjQ1MWM0ODE1ZmY0YTA0MDYyZWFkNzc1OGI3Nzc2OTg5YWFhNiBsZWdhY3ktdHJ1bmsKKzExNTE2IDkyOGZlOGJjOWViNmQ2NzU2ZmU3MTRhN2UwZmU0NGIzMWFjZTgxNGEgbGVnYWN5LXRydW5rCisxMTUxNyBhOTcyNGM4ZTZlNmZkMmIwMzBjMjZhMWI0ZWY0MWYyMzVhYmEzMzcxIGxlZ2FjeS10cnVuaworMTE1MTggYjdlNzc0N2MxOTY5NjhmN2VhNTk3ZDUzMzU1OThhNmJhNWRkYmM5ZiBsZWdhY3ktdHJ1bmsKKzExNTE5IDZhMmU5MjYyMTU0MTFkZTIxZDhkOWFhYTVjZmUzM2FkNDA5NzdhY2EgbGVnYWN5LXRydW5rCisxMTUyMCBhODdiMjNkNDI4ODE0ZTM5MDVjMjgxYjZhMmUwYmRhNGZjYzlhOWE2IGxlZ2FjeS10cnVuaworMTE1MjEgM2RmNWI5ZDgzMzViNzc1YTk2NGRlZTRhNjFiYWFmMjRhMTUyNmQzYSBsZWdhY3ktdHJ1bmsKKzExNTIyIGZiNWE1ZWMyZWExYWIwMWJmNzQ5MTA4ZmRkZTUyZjk3YTJiNjliNzEgbGVnYWN5LXRydW5rCisxMTUyMyBkNTMyMzdiY2YxNWY3NzQyMTU0MThmNzNmOGJmYzJiNjBiNzg1ODJmIGxlZ2FjeS10cnVuaworMTE1MjQgNjUxMzk3MTliNjU2MDU5ZTUyYzc2OWIyYTVmYzg4MDg4NmRkZjcwMiBsZWdhY3ktdHJ1bmsKKzExNTI2IGIzZWVjZGUzNjc5ZWRjMTMzMDM0MDAzZDhmZTQ1NDM3NGYxM2I4MGQgbGVnYWN5LXRydW5rCisxMTUyNyBkM2MwNjc5MzRjNjNjYmY3NmVmNzk2MmNhNjg4M2JiNjZmOWNlMzA5IGxlZ2FjeS10cnVuaworMTE1MjggZDI3MjJhNGNiZDljNjEyOGI1MjE2ODY2OGY4ZjViOGVkYWNkMjY1MSBsZWdhY3ktdHJ1bmsKKzExNTI5IGJhZjlhNWE3MWQyZDZkZGY2ODgxNWM0ZDVhZDdmOTM0YjA0YmQ0ZmYgbGVnYWN5LXRydW5rCisxMTUzMCA5OTYyODMzZDQ5ZmRkYjkzMjYyMTk3YTE1YzBlZDhkM2VjNjViM2RlIGxlZ2FjeS10cnVuaworMTE1MzEgMTgyYzljYmRmMDUzZGUzYTgzMmQwODA1MTRiNDU5YTI4ZTU2YzExNiBsZWdhY3ktdHJ1bmsKKzExNTMyIDExYjZmMGM5ZWFjOTk4Y2E4ZjZjODNjZWQzZDQwZTdiNWNkNTVkYTAgbGVnYWN5LXRydW5rCisxMTUzMyAxODY5N2Y1OWZkNDhiNzdiZDU0NmVhOTFmOTZkZmI0MzBlNzllZjlmIGxlZ2FjeS10cnVuaworMTE1MzQgNjJiOTRjYzk4ZGU0NTllN2E4MDM5NzFkMTQ3NDJkYTVkNjE4NTFiYSBsZWdhY3ktdHJ1bmsKKzExNTM1IDI0ZDBhNTdhZTIzNGRjODM1NzY4M2UxZTFjNDMxZTU0Yjg5NWRkMDggbGVnYWN5LXRydW5rCisxMTUzNiBmMGM4YjhhMzNmMDhlYWUwOGQzZmYyOWQxNWUwZTIwODdkOGU5N2U4IGxlZ2FjeS10cnVuaworMTE1MzcgZWJjMGMxMmRiZDc4ZDYwZDhmZTA4ZDg5Mjk2YjA5YjJjMTM5NTViYiBsZWdhY3ktdHJ1bmsKKzExNTM4IDhkMThkNDk2YWY4NzA5ZmMzYWFiMGNlZTk2MmZkNmMwMTdlMmJiZTMgbGVnYWN5LXRydW5rCisxMTUzOSA5ZmQ5MTVkMjNjZmEwM2MwMGQzZTgwODJkMjJjMTVmMzQzYjYzYTk2IGxlZ2FjeS10cnVuaworMTE1NDAgZDhlZGUwMjBkZmViMjk0Yjc1YWU3ZGM2OTVhYmE5MjM3MGMyYWIzMCBsZWdhY3ktdHJ1bmsKKzExNTQxIGQ0MzdiNjY4M2UyNDE3NmVhYjc1YjNkYTA3ZGI4NTk5ZDJiNDM0ZjQgbGVnYWN5LXRydW5rCisxMTU0MiBhZDZiYzJjNWQzNTNlZWRjYjAyMzZlZGI2N2VjYWM5N2Q0ZWJjMzIxIGxlZ2FjeS10cnVuaworMTE1NDMgOTFkMDg2MDc0NmZjMjczM2JkMjBhMTQ4NmM5MDEzMDZmNDY2ZGMzMyBsZWdhY3ktdHJ1bmsKKzExNTQ0IDZkMmViNThmMDQxODY4MDg2ZDk4NzFjZDFjNGFmN2Q4ODczZjM2MDMgbGVnYWN5LXRydW5rCisxMTU0NSAxMThmOWY3M2FiZTkxOWU5MmViOWIzZGU2MmZmODU0N2MyMjQ5ZGIyIGxlZ2FjeS10cnVuaworMTE1NDYgY2JmNzJiMjIxMGFlYTllZTc4MzI2Mjg3OTliZDdkNDM3YTgyZjljNCBsZWdhY3ktdHJ1bmsKKzExNTQ3IGYzZWJkYjIyNzRlNGE4MjlmN2Y3Y2QyZmIwMTdkYTM1ZjgwMTAwYjYgbGVnYWN5LXRydW5rCisxMTU0OCA4MzljNjYyMmQxNWEwNzIxMGM3NmQ1OTdjNTNjMmFkMjQzMTZmZTEwIGxlZ2FjeS10cnVuaworMTE1NDkgOTA1YmZhYzBmYTMyZTA1Njk1N2RmYjdkMjBkYWY5YTUyNTNjY2JmNCBsZWdhY3ktdHJ1bmsKKzExNTUwIDE2ZjgzOTdkOGYwNDhkZTY0YTFiOGQwZTIwYWE5MWRiNDgwODY1MDUgbGVnYWN5LXRydW5rCisxMTU1MSBkYWJiMmI2YTNhODFlYjBmZThjNDRlNDU2MTdkZjI2MTdmMjY0MDViIGxlZ2FjeS10cnVuaworMTE1NTIgNWJjNjRlZmM2NWUwMjk4NDFjMzM1ZjcyNjc4ZDU1NmY2YTYxNDczOSBsZWdhY3ktdHJ1bmsKKzExNTUzIDA1MTgxZTEwNDQyMGFjMDNmNTA2MTc5MmVlNDgyZmMxZGNkZmU2MGMgbGVnYWN5LXRydW5rCisxMTU1NCAwMjZlMTIzNjI0M2U2Y2JhZTFjYjdiY2ZiMDU0YTI1Njg5YWEyY2Y1IGxlZ2FjeS10cnVuaworMTE1NTUgMTllYzUzNDY5NGFkZGViODRkZmVlMjE0ZGJiNWRkNmZiZDc5ZGI4YiBsZWdhY3ktdHJ1bmsKKzExNTU2IDg2OTUyYmRhYmIyMWUxMWZlYzkxYzMxYzE1Yzk0NWM2MTgyMmFlYTcgbGVnYWN5LXRydW5rCisxMTU1NyA1YzFlMWZiMzcyZGUwNmVlMjgxYTZjZjEwZmUyNGUzYjRkMjAzMDI3IGxlZ2FjeS10cnVuaworMTE1NTggMDg3NmI2YzI0MDA3ZDg2NjZkZWEyNzc2ZGIyNjdiMGUzNmE2ODM3OCBsZWdhY3ktdHJ1bmsKKzExNTU5IDAwODhhZDlkOTZjMzg2YWM0MmJjNTQ2MGZlMmNiYTAwOGI3ZWIwZTMgbGVnYWN5LXRydW5rCisxMTU2MCA1NDAxYzcxNDI4ZWVmYjBlNjJhNjgxNzM3Y2M3YTNkYTk3NDIxNTA5IGxlZ2FjeS10cnVuaworMTE1NjEgMDc4MWE0OTk5MDUxNWMxNjI5ODZmZGJjMjhmNzk2NThiZDM3ZGFiNyBsZWdhY3ktdHJ1bmsKKzExNTYyIDI1NzA2M2FhZTAwMGYzZjU5ODdjNjI2YWVjNGJhYzhjNGNiNTdjYjYgbGVnYWN5LXRydW5rCisxMTU2MyAzNDMzYTllYmRmNDM5ZTZkMThjOWYyMmZiYTJmZWU3OTU5ZGU5ZTk3IGxlZ2FjeS10cnVuaworMTE1NjQgYTVlM2M2OTVkMmZiZTM3N2ZlZjRhMjhhZGZhNDM1MGU1MTA4YTZjYSBsZWdhY3ktdHJ1bmsKKzExNTY1IGIyNWQ1YTYyZTM1NzYzZDU4ODNlOTBkMWNiOWUzYjE4MTI0OTAwM2UgbGVnYWN5LXRydW5rCisxMTU2NiBlYmM4Y2IwNzcwM2Y4OWQ0NjUyZDY5NDY3YjU4NDRlN2U0ZDc4ZmQxIGxlZ2FjeS10cnVuaworMTE1NjcgYzJjYmU5YWNmYzhlNTg4MzBjZDlhZjdiMjM5MzM0Yzc5ZGRlNTcyYiBsZWdhY3ktdHJ1bmsKKzExNTY4IDAxODhkNjI1OTY5YWIzMTNmZDZjMmI0M2RhODIyZjNjNjMwYzkzNWIgbGVnYWN5LXRydW5rCisxMTU2OSA5Y2VhNmI2MTc4MzhlNTQxMmY1M2FhNzA2NWMyYWJjMTMzOTE1ZjdlIGxlZ2FjeS10cnVuaworMTE1NzAgNjE4ZmI4MzBiZTY1OGNmYjQ0Mzc5OWQ4ZDExZGFlNDgwMjA5ZTk1OSBsZWdhY3ktdHJ1bmsKKzExNTcxIGE5ODJiMTdlOTM4ZjUyOWRmYTA0YzM0ZDgxNjVmMzQ2NGQxODJjMmEgbGVnYWN5LXRydW5rCisxMTU3MiA4NTBhY2YyOTllYTIzZGJiMWNhZDFlZmIxMDY5MTNhMzU0MGZiZDdlIGxlZ2FjeS10cnVuaworMTE1NzMgYzA2MjcyMzg0ZjExOGFmZTBkYzYyOTFlYWQwM2NmYzY2YTgzZDNiNiBsZWdhY3ktdHJ1bmsKKzExNTc0IGM0NDdkMWFkNzg1MTdkMzU4ZmZmN2JkNzQwYjkxNDI5M2IxNTliYzcgbGVnYWN5LXRydW5rCisxMTU3NSAxOGY4MWZhZjRiZDk3YjQxZjE3YWI4ZmYwNTFhODY3OGYzNGE2YmJjIGxlZ2FjeS10cnVuaworMTE1NzYgNGQyY2IyMTJjOGQxNTg1NDkzNzc1Yjg3MWY4YTNiYzcyYTk2MDgzZiBsZWdhY3ktdHJ1bmsKKzExNTc3IGU0OWI1ZmVkNzQ0YzRmZjc3MWM5OGI1ZWI3MmQ0OTc4ZGU1YWJhYjMgbGVnYWN5LXRydW5rCisxMTU3OCBlZGFjODYwYWQ3MTBiNWFhMjkyMTBlZTRjOWQ3MjQwZjA0ODBhNWNkIGxlZ2FjeS10cnVuaworMTE1NzkgNmI4NTQ5MzA1MmU4YTM2ZjgyZTU4MjQ1YzM4MmNiZmNmNjQ5MDQ0MSBsZWdhY3ktdHJ1bmsKKzExNTgwIGJjNDFlODZjOTM4Y2Y0YjllNzBhZTVhNDJjMDQyZGU1NzgyNDFhY2MgbGVnYWN5LXRydW5rCisxMTU4MSAzZjRiZTdlMjhkNWNlNzg1MTE0Y2RmMmI3ZDU5OTkwY2ZiNzQxZjAxIGxlZ2FjeS10cnVuaworMTE1ODIgZTk0M2Y5YzA5OTAxYWQ4MThiZTIzY2FiZWM4YzVkNzcxNmIwODM3NiBsZWdhY3ktdHJ1bmsKKzExNTgzIGQ0ZWIzNWM2ZTZlZmJlNzBhZmY1NGYyNjE1OTQxNDQ1MjVjZWVkZmQgbGVnYWN5LXRydW5rCisxMTU4NCBhY2ZiM2E2NDhkY2FhYmZhNjMyMmJhYTBhNzZlZmI5NjNkYjBjMTg4IGxlZ2FjeS10cnVuaworMTE1ODUgN2U2YzRmNTdhZjY5OTIwYTU4ZDRhY2NmZWYzYjllODRmYWUyZmFiMiBsZWdhY3ktdHJ1bmsKKzExNTg2IGU3MWY4MzkyMjM5MjA0YTQ1ZDUzOGNkNTcyNjdhODQzMjg1NmI4NjcgbGVnYWN5LXRydW5rCisxMTU4NyAyNmY1YmZkNzE1YTQ2NTZlODlhY2U3ZmJlN2UyNGQxMDFhZmQyNzZmIGxlZ2FjeS10cnVuaworMTE1ODggNTU2OTI3ZDg2OGQ4ZDg4ODJiNjUyM2NkNjllZmVjNTI4M2ZiNDcwNyBsZWdhY3ktdHJ1bmsKKzExNTg5IDJlMDdmMWIyOThlMTZkYjgxZjM1OWQxNWYzY2QwNzc3NWNkNzE4ZmQgbGVnYWN5LXRydW5rCisxMTU5MCA0NzFjNmMyMjE4Nzk5ZWUyNzAwYWQ2ZDIxZGIwNmZlYTM3MDAxZTEzIGxlZ2FjeS10cnVuaworMTE1OTEgMDMxMGVlMTY0OTdhODdkNzE5M2NjMTcxMDg5MTJkNmNiNWY0Y2NiZCBsZWdhY3ktdHJ1bmsKKzExNTkyIDYzN2ZlYzhhN2RkM2RhZmYxN2E3ZjZiNDc2MDAyYWM3ZDhlYWNhMjYgbGVnYWN5LXRydW5rCisxMTU5MyAyMDg4ZjgwMjUzZGIwNGYyMTRiNWYyYjA1ODNhZmE1YTc0YjQwNWZhIGxlZ2FjeS10cnVuaworMTE1OTQgNDI3ODU2MWJkNWU4N2Y1OWExMzg3NzdmZjQ2NDk1ZGU3YTY1ZDViNSBsZWdhY3ktdHJ1bmsKKzExNTk1IGI4MjZlNTBlOTU3M2Y0ZTA5NDBjODJjYmY2NGExMWJiYjY5ZDMyMzcgbGVnYWN5LXRydW5rCisxMTU5NiA3MjhiYmViOWU0Zjk2NTQ3MmY4OTJiMzBlM2ZmYTYwMTY1ODY2NjFkIGxlZ2FjeS10cnVuaworMTE1OTcgNjg3YjY2ZTY1M2Q2MTVhMDhmYzBhMGU5MjJjNjViMDQwMzdhODBkYiBsZWdhY3ktdHJ1bmsKKzExNTk4IDMxMzUzMTZjZDY3MGIwOGZhOGNhYTE0NDkzZTdiY2UzODFkNGNiMTggbGVnYWN5LXRydW5rCisxMTU5OSBmMjM5NmQ0MzA1NmI2YzZkMWNkOTc2NWEzNWM5NmVjMDdjNmY2YTVhIGxlZ2FjeS10cnVuaworMTE2MDAgNzdhOWI4NWY3NjJhNzY0OGE3OGMyNzNlZmZmZWJlOGY5MjE5NjAyNiBsZWdhY3ktdHJ1bmsKKzExNjAxIDJiYjdiNjYwZjAwN2JlZjc0MzljNjBhMTI5NzA0ODZhM2M2ODUwNjIgbGVnYWN5LXRydW5rCisxMTYwMiA5ZWIyZDZmNmZkM2Y0YzcxY2E2N2RhYWUxNzcwZGI5ODQ5ZWQwMzI0IGxlZ2FjeS10cnVuaworMTE2MDMgY2U1MmU5MjJmYmIyNmViYWI1MzliOTZmMzUyMDk0ZTkxYTY1MDQyOSBsZWdhY3ktdHJ1bmsKKzExNjA0IDI0Y2FkNGUwZGI4ZGQzOWMzMjU0OTBjNTVlMzcyMmU3MjE1Y2MwYTYgbGVnYWN5LXRydW5rCisxMTYwNSBiNTI4NjRjNWU5Yzk0MjNhNTNkMGIyZWNkMWU5MmZlNGI3ZTc0NmViIGxlZ2FjeS10cnVuaworMTE2MDYgOWUxNzQ1Njc5ZTcxNTAwM2IyY2NiYmMwOWFiNDczMmU5ZmU4ZTU5OCBsZWdhY3ktdHJ1bmsKKzExNjA3IDA0MjBmNTQzNGY0NDkzMmFhNjY3ZGZiYWM5ZmJlNDk3MzMxOGVjMmUgbGVnYWN5LXRydW5rCisxMTYwOCBiMDg0NWQwOWZlZGY2ZjgxNjUyMDg0NDQ3NTI0NGQ0Zjc3ZWRmOWIyIGxlZ2FjeS10cnVuaworMTE2MDkgODM2NjBjZGEzZTNmMzk3MDA1Zjg1Njk3MWFmYTJlNmI1OTQ1ODFkMCBsZWdhY3ktdHJ1bmsKKzExNjEwIGRiYTcxMTYyNmI0MzI0MWM1ZTgxZWMwYjM0YjkzZmY1YzQ1ZTc2ZWUgbGVnYWN5LXRydW5rCisxMTYxMSBkMjM3YzgwOGEwMWUxMTMxOGQyNTE2ZGQwOTIyODBhNTY0ZDMwYWFhIGxlZ2FjeS10cnVuaworMTE2MTIgMjkzODBhNGZhMjMwODkwMzE2M2FiNWZkMWNkYTg1Njk2ZDY2OTMzMCBsZWdhY3ktdHJ1bmsKKzExNjEzIGRiMTU0N2ZkNDBlNDY3NWI3MjhlNWI2Y2ExOWFkZmVmZmM2Y2ZlZmYgbGVnYWN5LXRydW5rCisxMTYxNCA0Y2MxMDkwOGU2ZjQ1ZjAwZmU4Mjg3Mzg4YTcwMTVkZWQ5ZGEzMjZmIGxlZ2FjeS10cnVuaworMTE2MTUgMTIxMzY1NDJlMTU1NDliMWUzZmRhMjNiYTQ0YWEzZGE4Y2UyZDdhYSBsZWdhY3ktdHJ1bmsKKzExNjE2IDQ0ODY4NjJkNWNiZGQwZmMwNWRlZjdiMWY0NTIxOTlmNDY3ZThkODQgbGVnYWN5LXRydW5rCisxMTYxNyA1NWMxODExYmI4ZWZiYTI5YjUzMjIzZDcyZDA4ZDZjNTk1MmE4YzEyIGxlZ2FjeS10cnVuaworMTE2MTggZmRlZWYxNzdmNTM2YWQ5NmNhMmI4MGFlNTc5YjU1MWZiNDE3MzMyYyBsZWdhY3ktdHJ1bmsKKzExNjE5IDg2YjcxMjlkOGQwOGJkOTc3ZjAyMDM2NmJmMmEyYTliZWUyMjE4ZDUgbGVnYWN5LXRydW5rCisxMTYyMCAxN2QwYzUxZTA4ODcwMTkyNjEyYTdhNDI4NGM5MWM5NzQzN2ZiM2I1IGxlZ2FjeS10cnVuaworMTE2MjEgYjE2NjMzYjIyZTZhZTE3MGI4Yjc2Y2JjNzY0YmI1MThiMjdhMGNlOSBsZWdhY3ktdHJ1bmsKKzExNjIyIDZjZDkzMzIyYjgxMGI2ZjUzZmExNDY4ZmUwYmUxMDM2ODYwZTViMDIgbGVnYWN5LXRydW5rCisxMTYyMyAzZDMwZGQ1NDQ0NTYyMWQwNzRlZDFjNjIzMjZiY2Y0ZDlmYTc4ZWUxIGxlZ2FjeS10cnVuaworMTE2MjQgZjQxMjlkNTJkZmM1YWRmM2Y5NWM2OGMzZjdiYWFhNTJlMDcxZTQ0ZCBsZWdhY3ktdHJ1bmsKKzExNjI1IGJhNDAwNjVlMzk5ZjA0MDQxMzlkZWFmMGMzZWQ1Zjc3MTNmNzNiZjIgbGVnYWN5LXRydW5rCisxMTYyNiA5ZjEwMjNjODhmNTcwNjUzYjA4OTQ1NWFmNjIwNmRiOWRmZWNhNWIwIGxlZ2FjeS10cnVuaworMTE2MjcgYjBmYTJmYzEyZGZiMjhjZDg1MjgyYzFjYjk0ZDZmMmIwMGZmMDUwZSBsZWdhY3ktdHJ1bmsKKzExNjI4IDZjYmYwNTY5NjEyMGQwOWIxNTE2ZGZkNWVjN2JjMzNkZmE4YmM1NWIgbGVnYWN5LXRydW5rCisxMTYyOSBlYmIwMTA4NTg3NzFhYWM3ZDI5NDRmZDI0ZTkyNjI3NmI4Zjg3NzYwIGxlZ2FjeS10cnVuaworMTE2MzAgMDY2MGJlNmU2NzkxNGI5Y2YxYTZlM2E4ZjRlNzc0ZDYwYTFjNmFlZCBsZWdhY3ktdHJ1bmsKKzExNjMxIDg4YjIyMTA5MDA3YzFjYjkxOGQ1ZWNiMmUzNTgyZDVlMzFiYmYxYWEgbGVnYWN5LXRydW5rCisxMTYzMiA1YWY0YjEwMjE0NGFlNWQ5MDRhNDk5NWZkOTJlNGQ3Njk0N2RiOWZhIGxlZ2FjeS10cnVuaworMTE2MzMgZTFiNzEwZTMwYWNmNzNjNWI1OWE4ZGIxMGRlOTM0MmI4MDFmMzdlYyBsZWdhY3ktdHJ1bmsKKzExNjM0IDAzMjlkNDE5ZTUwNjE4MmU5YTgwOGVjZTFjMzA3ZWVmNzE3ZGU1MjAgbGVnYWN5LXRydW5rCisxMTYzNSBkZWViM2NlMjBhY2YxYTg1YjEwYzg2MDcwYWNiMTFiNjI5Y2MxZjdjIGxlZ2FjeS10cnVuaworMTE2MzYgZjVkMjY1ZDVlOWRjMDJhZGJmY2ExNWY3NmMwNjQwNzE0MjdjZjkzOSBsZWdhY3ktdHJ1bmsKKzExNjM3IDhlM2I2ZDZhZmU0Y2MxYjU1MWMzOGJmZGU5ODM5Y2YyOTNkMTU1NzYgbGVnYWN5LXRydW5rCisxMTYzOCA4ODFiODYzOThjMjA0M2Y1YTIzMzZlNmRhN2MzYWNiMDc1YTU1ZjdlIGxlZ2FjeS10cnVuaworMTE2MzkgOThkYzY3NWQwOTEzYjZiMzNiYjg4MGZiMTg1OTM3ODc5MWVhYTY4MCBsZWdhY3ktdHJ1bmsKKzExNjQwIDdmYWJiYmI3YWQ5YTdhMWQ0Nzg3N2FkZTY5MDljMWRhMmUzNDI3YjIgbGVnYWN5LXRydW5rCisxMTY0MSA1MjA1ODNiZGYwYjAyOTBjZTk4YTI1MjlmMDhhYjBjZDk1NTJiNWFhIGxlZ2FjeS10cnVuaworMTE2NDIgZTU3ODQzOWI5ODFmODU2MTQ0YjQzMjM0YTJjMGU1OWU0YWJhMzg0MSBsZWdhY3ktdHJ1bmsKKzExNjQzIGM0NjAyMjM2NDA5ZThiOWUwNDk4NjEwMTAwZWMzMmMzYWZiNzUwZmMgbGVnYWN5LXRydW5rCisxMTY0NCA2ZWNiMjQ4ZTY3ZmYyYzBhNTQ3ZDEwZGQ4MmQ4NmZlZDk2MTFkMTdmIGxlZ2FjeS10cnVuaworMTE2NDUgZTYwMDU1MjE2YjhmOWZjOTAzZDk1OTg1ZjRiODA5YTcxNGIwYjZkNyBsZWdhY3ktdHJ1bmsKKzExNjQ2IDFjMjJjYmZiNGExZTIwNmE3Y2IwMTE5OWE1YmFjYWRhMjlhNjllZjggbGVnYWN5LXRydW5rCisxMTY0NyA0YWY4N2NlZDlmM2FhYjZkOWZkYzM4YWRkNjQzNDE0Y2YzZjI4OWM0IGxlZ2FjeS10cnVuaworMTE2NDggNGZiNGIwMDc1NWI1ZTA2ZDc3ZThiMDI2M2VmYzM0MGQyY2EyZWVlNyBsZWdhY3ktdHJ1bmsKKzExNjQ5IGEzMDc2NTZjNzc4ODk3NmM0NDRmZDFiNTBjNzVkYTQyYWY0YmI5MDAgbGVnYWN5LXRydW5rCisxMTY1MCA0NjgzMGU1YTAzNTFmYWQwZDQxMzdkZWEzZTQ1NWM2Mjg5YzE2N2RkIGxlZ2FjeS10cnVuaworMTE2NTEgMWU4ZjMxMDc0NTQ3NTEwMjcxN2EzNWVlMzljNjIyM2Y2ZjBiYTIwZSBsZWdhY3ktdHJ1bmsKKzExNjUyIDM1MjliYjRjYWVmZDZlMGE1ZTVkYjFjZjdjMWI2YjNjNGQ2Nzc3YzQgbGVnYWN5LXRydW5rCisxMTY1MyBkYWYxZDYxYjk2MTFkN2EyNzMxMjk3MDI0ZGNiYmUyNzg0MjY1Yzg2IGxlZ2FjeS10cnVuaworMTE2NTQgOWY3MjkxZjU1MDI2ZDRkNTVjNDI1YjkzZDExZGIyM2IwZWZmMzgwMCBsZWdhY3ktdHJ1bmsKKzExNjU1IGIyNjMwYTI5ZmVmZGI4YjdmNDVkOGM5ZTkwNDU1M2Q0Y2E1NzY3MjAgbGVnYWN5LXRydW5rCisxMTY1NiBmMmI5OGNiYzUwMzAxODhhYTJlNDVkYWQ4ZThmYTlkN2VlOWI4NmRhIGxlZ2FjeS10cnVuaworMTE2NTcgZjBhOTJjMGExMTVlY2ZjZGQ1NTVmMGYxOWJjMzk2NzM4ZWFlMTkwNyBsZWdhY3ktdHJ1bmsKKzExNjU4IDFlNDNkZjdkOGJlM2ZmZTU3ZTA3MzhiMzBkMTM4MTgyOGEwMGM4MmUgbGVnYWN5LXRydW5rCisxMTY1OSBlMmRhYTc4M2JkNDcyOGVhMGU4MzM4NjIwOTY1ZjMzMGNmZGIwYTIzIGxlZ2FjeS10cnVuaworMTE2NjAgMGEwODVkNzMxYzFjNzlhOGYzMjg1Njk0MGNjNTJmZmVjYjE0YzI4YyBsZWdhY3ktdHJ1bmsKKzExNjYxIGQwODY0MTRhZGU2ZWM0OWU5MzZhMzljMjlmNTAzZjFmMGNkODAxYWMgbGVnYWN5LXRydW5rCisxMTY2MiBkM2VmNGQxMGZiOTU0YzhlODUxMzM0MjUwZmFjNGNiMzViOWNiNDJkIGxlZ2FjeS10cnVuaworMTE2NjMgNmE1NTlkYzc4YzkxM2Y4ZDY2OTNlNzU0NWIwOTZlMjYwM2FhNjIzZCBsZWdhY3ktdHJ1bmsKKzExNjY0IGIwYmEzMTk2NzcxOTU4MjNkODUwZmQ3MDQwOTZiYzc2YzIzMWQ2YjAgbGVnYWN5LXRydW5rCisxMTY2NSA3NWE4MDQ3ZGZjMTEwM2FmYjAxZDdhY2NlZTUzMmQwOGU4MjBjNTUwIGxlZ2FjeS10cnVuaworMTE2NjYgNmJlMzQzZGEyOTE0NGEzOTIwODI3YjA3OTZiOTJmN2VhZTZhYTk2OCBsZWdhY3ktdHJ1bmsKKzExNjY3IGMwMGIyNzMwODViZWQ3MGFiYmEwNzI1Y2JiYmYzZmM2MjEyZjU0NTQgbGVnYWN5LXRydW5rCisxMTY2OCAzY2U1MTFiYTQyNDIyNjEzMjEwNzQyMGI3ZjA3MmVmYTdkOWU2MjAxIGxlZ2FjeS10cnVuaworMTE2NjkgOWZkMmJiZDQ0NTRlMzY3OGIxY2Q2ZjExMDU4MGQ5YThjODJhYzJmMiBsZWdhY3ktdHJ1bmsKKzExNjcwIDMyYjE5NDkxZTcwYjVhNzlkNTU4OTlmOTE2MGE2ZjY4N2Y5ZDE3MWIgbGVnYWN5LXRydW5rCisxMTY3MSA5YTg4ZmUyMDRkOTVjZDg1NjdhY2M5OTI4MjM4NGIxMDMwY2RmYTBiIGxlZ2FjeS10cnVuaworMTE2NzIgNjhhYWQ4ZWNmZDcwZWNhYWE5NDE1ZjRjMTZkOTBjMmI5YjRiNDNkNSBsZWdhY3ktdHJ1bmsKKzExNjczIDZmYzkyMGM5MDY0MDhjYzJlNjc1OTE5OTFjYzBkZTMwNGE0ODNhNzggbGVnYWN5LXRydW5rCisxMTY3NCA5NThlMWZhYTM4YTkxMDRmZDhiODg2NTMxNzk4NGY1MzU2NTkxMTA0IGxlZ2FjeS10cnVuaworMTE2NzUgMDYyNWI5OTU4YjIzYmY2MmFmMjg4MTg1MzIwZWUwZjMzZDU2NGEyOCBsZWdhY3ktdHJ1bmsKKzExNjc2IDUzZWQ2YmNkMDY0MWRmMzdlYjJmOGVlOGU2ZjM1MjcwNzU4YTMyNGEgbGVnYWN5LXRydW5rCisxMTY3NyAyNTNjOTkzZWY5MzZhZDVhMWY5M2M3ODU0MmUxMzFhNDY3MTZkNGIwIGxlZ2FjeS10cnVuaworMTE2NzggZmE4OTNkNTU3OTRlY2Q5ODY2Mzg0ODgxMDAyMzllOGQzMWM4Njk3NSBsZWdhY3ktdHJ1bmsKKzExNjc5IGU3NWUyMjhmODM5NWU3ZWM1MGY2ZDA1NmMxNWZmYWI4MTAxYWM5ZTcgbGVnYWN5LXRydW5rCisxMTY4MCA4ZTk1MmJkZDBmYTM3MDQ3NDhiMDg2NjJkMWIyOGRhZjBiNWVlYzQ0IGxlZ2FjeS10cnVuaworMTE2ODEgZjI2NGU1N2Q2NTdkZDM4MDYwMzU2MWQzZDFkZDgwMDEwZjJjOWUyMiBsZWdhY3ktdHJ1bmsKKzExNjgyIGE4NmE3MWJlYmQ2NDA3YTJjYjhiN2M5MzkyN2EyYTAzNDczNWUwZTUgbGVnYWN5LXRydW5rCisxMTY4MyBhYTczZGVlMjMwOTMwNzU3NzZlNGViM2RkYzhhNjM0OTUyOGI3ZWU5IGxlZ2FjeS10cnVuaworMTE2ODQgZTIxZDA3OThjMDJhYWFkZTIzZTIxZDU0NGMzMDliNjVkODg5MGQ1MiBsZWdhY3ktdHJ1bmsKKzExNjg1IGExNjcyZTc3NWYzMzFlY2MzNDY1NmI4NWNkOWRhYTNkZjY0YmEwYTcgbGVnYWN5LXRydW5rCisxMTY4NiA1ZmU0ZDU5NGEwZjIxOTI0NmJhZjI4ODU5YmEzMmM5YmU0NzA2ZjBiIGxlZ2FjeS10cnVuaworMTE2ODcgM2UwYzg3YmRiNTg4OTY5NDg2NWI0N2RhZDhiMWUxZTEzMGI2ZjBkZSBsZWdhY3ktdHJ1bmsKKzExNjg4IDRmZThhNzY3MGMwZDJhMzA4NzgyMjBiNDZjODkxYmFkNmNlNzU1YWQgbGVnYWN5LXRydW5rCisxMTY4OSBhYzZjMjlkMWYxMGM5YzJmOTAzZTA2NGE2YzUwZjFjMmJkM2E3OTU5IGxlZ2FjeS10cnVuaworMTE2OTAgMDJkOGY3MjE0MDlhYmY0ZmFiODQxMTUzYWMzOGM0ZjhiZWFlNTA4NyBsZWdhY3ktdHJ1bmsKKzExNjkxIDRjMjA0NTYxNTllYmRiYjI4MTI2N2Y0NGZjY2JmZGU4MmQ0N2RiMzIgbGVnYWN5LXRydW5rCisxMTY5MiAxOTVlNzQ4Y2Y2OTZhNjk2ZjlmZGFkNmU3ZDhiMjZhMjZjMjA4ZmZjIGxlZ2FjeS10cnVuaworMTE2OTMgMzM5ODQ4NDEyMTFkNWFjMTYwMjQ3MmNhNzE3YzBkNTMzZDAxMjg4NCBsZWdhY3ktdHJ1bmsKKzExNjk0IDQ3Y2NkYjdmYjYyM2FlOWFkZmJkMjgxNzRkNWQzNDQzZmY4Njg2ZDAgbGVnYWN5LXRydW5rCisxMTY5NSA1OGVjZWQ1MzA5YTA2Yjc3ZGVhNWMwMjY2ZmQ1MmYxMTg1YjhmNWZiIGxlZ2FjeS10cnVuaworMTE2OTYgYjI0MDQ2NzIwZDU2MDQ1ZTQ5MTMyM2M5NDY3NDAxZTgzNzE3OWIwZSBsZWdhY3ktdHJ1bmsKKzExNjk3IGQ1NzhjZDY0Nzk2ZDEyNjU4NWZhMGY5NTU5Zjk2YTU4NmExZGJkM2UgbGVnYWN5LXRydW5rCisxMTY5OCBlYjgwM2UxOTE4ODdlNmVkMjBkNDc0MGJiZGE5MDRhNTk5Njg1N2I3IGxlZ2FjeS10cnVuaworMTE2OTkgMTRhZDAyZDA2ZTMyZDg4NDI2MjFhMDEwMTBkMThlNjIwNjY2ZGNlOCBsZWdhY3ktdHJ1bmsKKzExNzAwIDA3ZGFlNmZkYWU3OTQxM2RmOTJiZjMyMzBmOTNlYzE3NzY5MGY0MzEgbGVnYWN5LXRydW5rCisxMTcwMSA4ODUwNTI2OWI0MDM3ZGVlYTI4M2Q3YjZjYzNmZjczNjU5YmVhZmEwIGxlZ2FjeS10cnVuaworMTE3MDIgMDg1OGYxMWM4OGQ3MjU4YzE2MzM5ZjE1YmNiOWE1YmIwZDRiNmRhZSBsZWdhY3ktdHJ1bmsKKzExNzAzIGMxZGMxOWY5YWQ2MDhlNmI0YjFhOGRhNjMxNzE4ZjRhMjE5ZTY1YjQgbGVnYWN5LXRydW5rCisxMTcwNCA2NzA5NjdiZTZkYjNjZWIzMGRmMjcxYWM4NDEyN2ZiMTYxYWZkYzZiIGxlZ2FjeS10cnVuaworMTE3MDUgODE0OGQ0NGY5OTAzZGUyZmQ4ZDIyYWU5YWMyYjdjZGMwYWNiNzYyZSBsZWdhY3ktdHJ1bmsKKzExNzA2IGQzYWYzMTBmMjMwY2IxNTZjOTYyYjgxOGRmMjg0YjVjNjQzYzYxZmQgbGVnYWN5LXRydW5rCisxMTcwNyA3MGU0OWY3MTU5NTcyZjEzNzk2YTljZDM1YjA5NjllODI2ZjZhYzc3IGxlZ2FjeS10cnVuaworMTE3MDggZjE3MmQ0NzRjNWE5MDRhOGQ1MzFiOGFkMDMxNTYyYmU0MDcyY2UyZiBsZWdhY3ktdHJ1bmsKKzExNzA5IGJlM2Q4NGZmMjlmOWE5NTNhZDA4Zjk3YTFkM2EwYjc2MjBhMzg2OWMgbGVnYWN5LXRydW5rCisxMTcxMCA4OWQ5MTZkZjQ3OWIxNWIxMWFjNjIzYWM3NGMzOTViZDYxNTRjMzlkIGxlZ2FjeS10cnVuaworMTE3MTEgYzI1OWMzYzRkMGNjZjliYzM5ZTYwOTlmYWNiNmRiNjk5YmM2NjcyNSBsZWdhY3ktdHJ1bmsKKzExNzEyIDE5OTVjZGJlMzM4NDZlNDc3MDI0ZTY5Njc5OTdjYWEzNjM0NjZiM2YgbGVnYWN5LXRydW5rCisxMTcxMyA5MzY5OTE3OWE1MGYyZjRhYzkyZWZmYTRkN2U1MzJjYmI2N2FjMzRjIGxlZ2FjeS10cnVuaworMTE3MTQgNDRmZjFhYzUyOTViMzdkNmQ1ZGQ2MmJjMWFhNzMwMzRkNWM4ZWIyNyBsZWdhY3ktdHJ1bmsKKzExNzE1IGE0ZTgyMzMxNTY5OTAyMTgzYzZhZGY0ZmM4MjEzOWM3Y2YwMTBmNWQgbGVnYWN5LXRydW5rCisxMTcxNiAyOTk5ZjFkOTA0Mjk5NjI4OWE2MGUyNWE0NWM5MGM2NGE4MDAwMzMyIGxlZ2FjeS10cnVuaworMTE3MTcgNTYyMWNmOWIwOWQ2MzIwYjM2ZjA1MjBlYzQzOTRmZmM0NThlN2NlYSBsZWdhY3ktdHJ1bmsKKzExNzE4IDNjOWZlYzU3Yjg1OGE2NGYwNzllZTU4NjJjY2M3NTZhN2EyNTY2MWUgbGVnYWN5LXRydW5rCisxMTcxOSA5ODQ4ZjQyMzQzYzk5OGY0YTkzZjE1YmE5ZjU5ZjQ2NGI2YWM0MGJmIGxlZ2FjeS10cnVuaworMTE3MjAgZGMxZDQ0NWYyMzcxODRkNWM2ZDEyMmI1ZWM2NzYzNmQ4ZDk2MzY3YyBsZWdhY3ktdHJ1bmsKKzExNzIxIDczZGYyNGY2YmNjZjMzYWRmNzQ4NDdjMDUzZmU1ZmVkYzJhNWRjNjggbGVnYWN5LXRydW5rCisxMTcyMiBjZThmM2NlZjZhZWQyYmZmNWM0NDFmZjQ1OTI4ODI5OTdkMjMyZmUyIGxlZ2FjeS10cnVuaworMTE3MjMgMjVkYTA5YjQyN2I0NzVmNDQ2NTQ2ZjFkMTAxZWQ5M2U5NzQ1YjdhZiBsZWdhY3ktdHJ1bmsKKzExNzI0IDc5NDAwZDA3OGYxYjAzZmM1ZjkwYTY1YjdhMzZjNGRlOTBjYTU5ZTQgbGVnYWN5LXRydW5rCisxMTcyNSBhMDNjNmZkODFkNGQ2ZDFhYjM0OWRlMzFkZWFlYTBhOGYxNzQ1NzI4IGxlZ2FjeS10cnVuaworMTE3MjYgMmUzNzEyZTg0NzgxZmIxMjQ2NjUxZjU1Y2ZkZjA1OTlhNmViYTFlMCBsZWdhY3ktdHJ1bmsKKzExNzI3IDM4YzA3YmE0YjhlNDExZjg2Y2MyZjRjYzZmMDE5ZjAyNDBkOTRhYjIgbGVnYWN5LXRydW5rCisxMTcyOCAwOGI4ZGE2ZDRjYTZhMDcyOTBlY2JhYmQxYmU5M2NlNWFmNWYwOTNlIGxlZ2FjeS10cnVuaworMTE3MjkgNGJmZDI5ZDUzYjk1MGMxN2E3YTJhNjgxNjA3ZTE4MTc2MjE0MDNiNCBsZWdhY3ktdHJ1bmsKKzExNzMwIGIxOGQxZjkxZDY2NDgzMjQ5NjdmNDVhNGJjNGUzNzI1ZTNlZTYwZWMgbGVnYWN5LXRydW5rCisxMTczMSA0MWY4M2M3MmUwOTg0YzkxNzg5N2QxZTY4MDVjM2IwOWEzMzcxNTI2IGxlZ2FjeS10cnVuaworMTE3MzIgZDcyNTJhNWI3ZTFlN2FkNWZhODI1ZmU2YTY5MmQxYjNkMDQyNWFhZCBsZWdhY3ktdHJ1bmsKKzExNzMzIDM5YzQxMjIwZjdlZDQ2ZjIzNjljNzFjNzBjZWY1ZDg1ZWI4YzQwMmMgbGVnYWN5LXRydW5rCisxMTczNCBkZDg0NDNiZDQ0NzQwYzdhOWY5MTJmY2JkZDNhZDY2ODI2MjUwMDg4IGxlZ2FjeS10cnVuaworMTE3MzUgNGM0Y2VjNTRiYTYzNGRlZjQxYjQ4YzUzNjU2NjFmOTdmYzM0NTAwMSBsZWdhY3ktdHJ1bmsKKzExNzM2IGI1NWRiMDhkZmY3YmYyNTkyN2EyZTc4Y2I1NTlmOGRjOWRjZWEzMDggbGVnYWN5LXRydW5rCisxMTczNyAyMjk0NzVkMjk1MWY3MDU5MWUxZjAxN2UwMmY3YTY1MmNhNmFiNjRkIGxlZ2FjeS10cnVuaworMTE3MzggZTIzZWMyNDAzMTU3MjQ3YjNkZDU5YjhlOWQyZjIxZjIwNGM4NmE3ZiBsZWdhY3ktdHJ1bmsKKzExNzM5IDcxMGRhMTBkZWU5ZGIzNGEwZTRkMTExODdhOGY5OTU5NTJmZTE5OWEgbGVnYWN5LXRydW5rCisxMTc0MCAwNDgwMDJmMjdjMWQ4YmNhNWE5M2MxZGFiZDkyNzY0NDAwZDY0YTE1IGxlZ2FjeS10cnVuaworMTE3NDEgMTU5ZjllNzQ2NzU0OTQ3MTA1ZTdiNzkxNDZiZDIzM2U3MjNjODZiOCBsZWdhY3ktdHJ1bmsKKzExNzQyIDhhODg1ZjNhNWY0NmFjZTU0NTZjNjRlNzA4YTMzNmQ3ZjRlNzU5YzAgbGVnYWN5LXRydW5rCisxMTc0MyAxYzRiYTBlMmY4ZTc0M2I2MTZiOWZkNzUwMmU3ZTY1M2IxNzZjMTBiIGxlZ2FjeS10cnVuaworMTE3NDQgYjQ4NzJiYzhkOWVmNzM4NjM0ZjBhMjY5YWJiOTJjZWRkMjU4YWIxMCBsZWdhY3ktdHJ1bmsKKzExNzQ1IGUxOTk1NGJhMWJjNDEzNzg4YjMzYjc1NmQ4YTFhMWQ2YjA3YjZmNTcgbGVnYWN5LXRydW5rCisxMTc0NiAwMjgzNzU5NDA3ZTE2MWRmMDE1MTkzODY1ZTIzZDYwOWZkNTI4YWYwIGxlZ2FjeS10cnVuaworMTE3NDcgY2E4NTg3ZDIxNWU2ZmVjYWUzOGE2MzJkNDdlZTM2ZDM1ODc2MmQ0NCBsZWdhY3ktdHJ1bmsKKzExNzQ4IDQzMDAzOGUxNjQzMzdhMzAwMTEyOTk2YmE3OWRhZDk5ZTFjYTg2NzQgbGVnYWN5LXRydW5rCisxMTc0OSA1OTBiZDliNDViZjYwZDE4NzliNDJiNjI1MjdmMWVkOTFhZDBhYTc1IGxlZ2FjeS10cnVuaworMTE3NTAgYmUxNDkzMzkxYzZkZDNiYzdiYWQzMTdlN2MwMGJiNDIxZjNmMDY2ZiBsZWdhY3ktdHJ1bmsKKzExNzUxIDlkMzkzYTBmNzI3Yzc1NDRhNGFkMWFiYTNmZTIyMWM5YThiOGZlMzggbGVnYWN5LXRydW5rCisxMTc1MiAwODA3OTlkMGNmMmIyYmQ5YTQ3NjBhZTUzNTc5YzcwOGFmNmIzYmE0IGxlZ2FjeS10cnVuaworMTE3NTMgOGQxNDkwNjI5MmM2NmNjMDA1ZjQ1NTVlMzFlOWM0MDZhYWQ3OTc0NCBsZWdhY3ktdHJ1bmsKKzExNzU0IDFlMzNhOGE1NmJjYTViN2M2MzA4N2Y1NjVlODZiYjMwYzUxNmM4ZDIgbGVnYWN5LXRydW5rCisxMTc1NSAyNTc3YzBjYzc0ODJhODg4NTRmMjFhNDAwNTQ3MTc3OTE2YzJmYjQ4IGxlZ2FjeS10cnVuaworMTE3NTYgNmI2YmQxNGQ3NTBiODFiODQ0ZmUyNzQ0MjNiNDZkOWY0NTcwNGNmNyBsZWdhY3ktdHJ1bmsKKzExNzU3IGE3M2NkN2Y5OWI5NWJkMTJkMGEwNzgxOWMxOGI0NGNjZmQ0NDFmNzkgbGVnYWN5LXRydW5rCisxMTc1OCBhY2Q4MWMzMjI3ZGViODk2ODk5MTc3ZTYwZDA2NTE5MGU3ZmI3MDg1IGxlZ2FjeS10cnVuaworMTE3NTkgOWQyYzEyZjI0MGU2MzYxMmVjYWE0Zjg3YzhkY2E0YmQ2ZTg5NDdiOCBsZWdhY3ktdHJ1bmsKKzExNzYwIDY1ZjA4Y2M1OTU1MzY0MDY0OTI0ZjliY2Q5NTNhZTRkNzVlYzljZDEgbGVnYWN5LXRydW5rCisxMTc2MSA4NmRlMWZhMGZiYjc2NzJjMDJjNTY5MmYzMDJkNjQ0ODBmZGZiNTRlIGxlZ2FjeS10cnVuaworMTE3NjIgYzExNmJiM2UyYWQxODhiMzEwMWQ0ZmFmYzRhZDQ5ZjJhNDE5MmE4YSBsZWdhY3ktdHJ1bmsKKzExNzYzIGEwZjMzMjVmZWRmMTkxZTdjNGVlYmJlNTVmNWI2Njk3MmI4ZDY4OWMgbGVnYWN5LXRydW5rCisxMTc2NCA1NTBhNDU2ZDhmNjE1ODc2YzgwZWUyYjk1M2IyYmRlNDJjOWVkMTQ0IGxlZ2FjeS10cnVuaworMTE3NjUgYWNlZTM1OTVlNjAzZWQyYjRiNDdmOTllZTQyYzEyOGNkMjM1ODMwZCBsZWdhY3ktdHJ1bmsKKzExNzY2IGZiYjQ1MDYwYmUwMzI0M2NkNTNjMTc4MWJiMmJlNTk4YjNmNWYxNTcgbGVnYWN5LXRydW5rCisxMTc2NyA3MjQ0MTExMzI0M2E4NWUwYWNhY2RlOTNmZDFmYTFhOTgzNmIxMTk0IGxlZ2FjeS10cnVuaworMTE3NjggNTBkOTg1MGNjOGMzYjE0YjM0MmQyYjAyOTBjZDk5YmM0MTY4ZGFmZiBsZWdhY3ktdHJ1bmsKKzExNzY5IDJjNmRkMGZhNGViOTg3YjZmZDk3NzQyNTczZWZhNWE4YzUyNGUzNjggbGVnYWN5LXRydW5rCisxMTc3MCA4ZmVkOGM4NWM2MWE5YTU3YTBlYzI3ZTAyNzc4ODEyNDUwOWEzMjRhIGxlZ2FjeS10cnVuaworMTE3NzEgODc5MTQ1NTQ4NWU1MmNjZGJkM2EwZjBlZjkxZGYzMjJmM2Y4MmFkZSBsZWdhY3ktdHJ1bmsKKzExNzcyIDJmODhkOGFhNzMxMDkzYTdlZGYyNDBjM2VjYjUxMjY3YTk0ZGNlN2MgbGVnYWN5LXRydW5rCisxMTc3MyBmMzdiZTBjODIyZGMyYWQ0MWFkZDBhZDQxZTE2NzhiNmU1N2UxNjIxIGxlZ2FjeS10cnVuaworMTE3NzQgMjg0YmY5NWRhYjgwYTFmODgwNGQxYzIxYzY1MDMzNmFhOTliMzM0YiBsZWdhY3ktdHJ1bmsKKzExNzc1IGMzOTIxOGE2OGRmMWYzNzZkOTE4NTFhOWQzODgzNjU3Y2E2ZWNmYTQgbGVnYWN5LXRydW5rCisxMTc3NiA1M2FiOGQwYjBkNjQ0ZTExZmQyMDkzOTBkZjRmNmZlNzkwYTRiN2Y0IGxlZ2FjeS10cnVuaworMTE3NzcgZmU3Y2JkMTMwODZjM2E0OTBlODNhYzUzOWMxNzEzNjUwY2RiOGIzNyBsZWdhY3ktdHJ1bmsKKzExNzc4IDgwOWRjYzFiYmMyMWRjZDM1M2Y4ODI3MTk0MjllZGQ3ZmNkYWJjYmEgbGVnYWN5LXRydW5rCisxMTc3OSA0YjljNGNlNTk5OWM5MmI3YjE1M2U0MDhiMDdjMDViMmU5N2Q0MGQyIGxlZ2FjeS10cnVuaworMTE3ODAgMGE2ZWQzODRhZjA2YTU3MjMwM2IxYTFmZTI3ZDEzNzIxMzc3MzRmOSBsZWdhY3ktdHJ1bmsKKzExNzgxIGZhYTMxYjFjMGI1NDA1NzI5YmEzZjAxN2MzYmFlMjk4MTQxZGQ0NzUgbGVnYWN5LXRydW5rCisxMTc4MiA1MTU2Y2Y4ZTQyNjkxYWU1ZmIxMWQyYWVmOGZmMmI0MzU0NGEyN2QxIGxlZ2FjeS10cnVuaworMTE3ODMgYmM1MTUwNjUyZWRjYWQ3MGU2ZDRkMDY2NzEzMWJlZTNmYmE0MmI3OCBsZWdhY3ktdHJ1bmsKKzExNzg0IGVjM2QyYjM3NTZkNzZkOTVhNDg4MWZiODU2YTJkNDQ4NDNhZThjZjkgbGVnYWN5LXRydW5rCisxMTc4NSBhNmNmZjljMjkwZTUyNjQ1YzEzMTEwYzc2ODMwZTYzNzc0ODczMTNlIGxlZ2FjeS10cnVuaworMTE3ODYgNWQzNDQ3MTBmY2MzZDZhMjM3NmRiNDZiYWFkYTk3NTMwOTZlZjU0MyBsZWdhY3ktdHJ1bmsKKzExNzg3IDIzNDBmNjE1ZGE4ZjQzOTcwNDZmZjZkMjdhMTNmMTZkMWYzNWUzOTggbGVnYWN5LXRydW5rCisxMTc4OCBiYzMxZDlmNmUwYTE0ZTM2MjMxNWIzZDI1NjljODkwNWUxYTM1MWFhIGxlZ2FjeS10cnVuaworMTE3ODkgMDJmMzUwNGIzOThkZjQ3NjZhNTA2NmE2ZTdhNjdkOWY3NGI3MWI2NiBsZWdhY3ktdHJ1bmsKKzExNzkwIDBhNjdkYjQ3ZTFkMGU0NmVkN2I4NjRiZTk4MTc4MTBhYjEyZjk4MDQgbGVnYWN5LXRydW5rCisxMTc5MSAwZGU2NjJjZWNhY2ZjYWFlOTg1MDExMTM1MDlmNDcxYjdmYWQ3NzkxIGxlZ2FjeS10cnVuaworMTE3OTIgYTFjYTA4NTE2OGZjODExNDBjYzExZGQ2N2ZlNzgzODZlZGU4MmY0YiBsZWdhY3ktdHJ1bmsKKzExNzkzIGQ2NGI0Y2M4MWJhNjJkMzM5ZmI1YzU2YWE4YmE0MGE4YzcyMjE1MWIgbGVnYWN5LXRydW5rCisxMTc5NCBkMjhiNDkxZjQ1NTU2YWEwNTM3ZDBlZWYwM2I2MmJhMTQ3YjdmYmI5IGxlZ2FjeS10cnVuaworMTE3OTUgYTIzOTcyNTVhNmQzM2Y1ZDI0ZDUyNWU0NmQ0OGJlZDFmYWQwMTMyOSBsZWdhY3ktdHJ1bmsKKzExNzk2IGQ2NDIwMDgzNGE2YjRhZjQ2YzkyYWU4MDBhOWQ3MTk3MjZjZTJlZjMgbGVnYWN5LXRydW5rCisxMTc5NyA2OTAzNDgyNDM4MDAxYzU4MzFkNzlkZWM0ZGM1MTI0ZGU5M2Q3N2NjIGxlZ2FjeS10cnVuaworMTE3OTggNDE0MTI4YTE1YmJkOWY0ZGU2ZmE2YjlkZWI0OGFjY2QzZjg1M2EzNiBsZWdhY3ktdHJ1bmsKKzExNzk5IDI0MWQwMTJlODJkY2U1ODgxOGMzMzAxODM4MDdjM2I2OTVjOGRjMzYgbGVnYWN5LXRydW5rCisxMTgwMCAzYjZjN2U3MGNhZmZmNmJkZmRmNmI3MGFhNTQ2OGI5MmE3ZTgyMWI0IGxlZ2FjeS10cnVuaworMTE4MDEgY2MzZTE0ODM3Mzc5OTYzZDVhOTg2ZTYzYmY2YzIwZDYxNDAzNTBhZCBsZWdhY3ktdHJ1bmsKKzExODAyIDA4M2VmYTA3NjM2NjEwZjg5ZDgzZGM0ODIzOWE5ODk2NTQwMzk2N2QgbGVnYWN5LXRydW5rCisxMTgwMyA3OTQzOWU0ZTk5NzY5NThhMGQ0Y2M4MzExNGZjYjRjZTQ1OTQ5ZDk4IGxlZ2FjeS10cnVuaworMTE4MDQgOTI4ZWE1YTQwOWU1MzUxZDQ2NDU2ZWJiZDNhOWJhN2E2YzI5YzA1MSBsZWdhY3ktdHJ1bmsKKzExODA1IDM0ZTQyMDJlZGUyMDFkN2Q5YzA0NGNkMzA3NGFjZWY3MWY0NDIwN2EgbGVnYWN5LXRydW5rCisxMTgwNiBiZDlkMzhkNjQzNjk0ZWM1MjM3YjU1OWI0YWRmMjdiYThkM2MyYTQxIGxlZ2FjeS10cnVuaworMTE4MDcgNWRiNjQ3ZmVkYmEwMzNjZWNlYTA0NDBhMjg3MmNjM2MzNjUwYjk0OCBsZWdhY3ktdHJ1bmsKKzExODA4IDQ4YzYxNWQ4NGRhNjZkYWI4NDI2MWQ0MTdjMDI0NzU1ZWFlYmMxODAgbGVnYWN5LXRydW5rCisxMTgwOSA1ZWE4ODM2ZDk2NzAwYjkyYWVlYWYxNmI2NzA2Y2QyNDUwYTg4OTVhIGxlZ2FjeS10cnVuaworMTE4MTAgNDY3ZGY2MWZmYmZhOTVmZWU2YzM5NzQwNTAxZDBhODNhODAyNWUyOSBsZWdhY3ktdHJ1bmsKKzExODExIDQxNmI3N2I4MTFjNWI4MzFiMzk1OWY3MjQ1MTdhMzc5ODkxMmI2NjQgbGVnYWN5LXRydW5rCisxMTgxMiA3ODQ4N2U3MDE2ODZkOTQxZDBiYzRiYTY2NjlhZTBiZmNjODc4NDZjIGxlZ2FjeS10cnVuaworMTE4MTMgZjMzYjM5NGU1ZDdmY2JjMzg1NDFlYjk1OGVmNDhkYWVhNTNhYmRlZiBsZWdhY3ktdHJ1bmsKKzExODE0IDAwM2I0MmM5ZjI0ZDIxMDgyN2ZkZmIwYjE5OGE5MDAzMTU4NjM3ZDEgbGVnYWN5LXRydW5rCisxMTgxNSA4YTI2ZTU1ZTE4YjgxMmRiYWVjNWYxMzhhYTdhNjRkZmIyZTY3MzNkIGxlZ2FjeS10cnVuaworMTE4MTYgODkxOGU0ZjU0ZWNhOGQxNjZhNDBhNDc5NzJhY2MyMTZkMTZkMWE4ZSBsZWdhY3ktdHJ1bmsKKzExODE3IDhlOWQ5NzlkZGY1NTBiMzAyMjU5OTQzYzcwNTcyZGZjMDNhYjkzOGQgbGVnYWN5LXRydW5rCisxMTgxOCA0MGQyMWE1Yjk5OTAxNTZiMDQ4Yzc5Mjk4Zjc3NDBkNzNhMGQ4ODdiIGxlZ2FjeS10cnVuaworMTE4MTkgODRlMjFhYzdkM2VhMzU4Y2Q4ZjZmYjQyMTJlNDkyOWRhNDJjODlmZiBsZWdhY3ktdHJ1bmsKKzExODIwIDE1MDkwN2MyYzJjMDgyNzk3MzAyY2VjNGFjM2Y0NzkyMTgxZjljNmEgbGVnYWN5LXRydW5rCisxMTgyMSA5NThlNDg4OWVjYWI1NmUzODNlOWQyMzFjMzZkN2I2YzQyZWZlY2Y3IGxlZ2FjeS10cnVuaworMTE4MjIgY2E2ZTIyNzNmYmY2Mjc1NDgwYTA0ZTU2NmRiMDAwOTg5YjA4NzY1MSBsZWdhY3ktdHJ1bmsKKzExODIzIDNiOTE0MzJiYTFhNDEzMTU2YjM3ZjI2YjAxZWQ0ZWQzOGE5ZDkzMzMgbGVnYWN5LXRydW5rCisxMTgyNCBjOTFlNGQ4N2Y2OTQ2OTcxNWFmNWUzODIyZjk3NWI0YzRkMzMyZTE5IGxlZ2FjeS10cnVuaworMTE4MjUgODE1NzRlNDY0NmI0M2NhZGYxODNjMDA4NmQ1NjJjODI0YzgwZjZkZSBsZWdhY3ktdHJ1bmsKKzExODI2IDdmMjQyZjI5YTQ1ZmE4YTAwMDdiODQ5NGJhMTQwZjkzNzUyOTc3ZWYgbGVnYWN5LXRydW5rCisxMTgyNyBmZDVhNDMwOWJmZGMyZDRhZjgyNTQ4NmFlZmY1ZmYxMDAyNjk2MmU2IGxlZ2FjeS10cnVuaworMTE4MjggNzUyMzdjYTU2YWZmMzc1NTJiNmRhZTgwM2E2N2U1OThjOWMyNThkYSBsZWdhY3ktdHJ1bmsKKzExODI5IDQ2MmNjZDBiYmU1MGFjNjkyZmQzZDhmYmI4NTQ3MGZiMDc0MWIyMTMgbGVnYWN5LXRydW5rCisxMTgzMCA5MzQwY2IyYWQzYTg4NzRmOWRmZWU4OWRkNWFjZWZiMTc4ZTQzZTg4IGxlZ2FjeS10cnVuaworMTE4MzEgYjYwNWYyMmEwOTlhYTljNjk2ZDhjOGYxZGYzNTExZGEwMDllMjAyNSBsZWdhY3ktdHJ1bmsKKzExODMyIGY0ZGNiOTBhYzQxOWY2OWVhMjBmZDlkNzk5MmY0MDdmMDNhOTA1NWMgbGVnYWN5LXRydW5rCisxMTgzMyBmYjJlN2YzOGUxYmJlNjhhYmE4OTk5ZDJlN2Q1M2NiZDk2MjI3ZDI3IGxlZ2FjeS10cnVuaworMTE4MzQgMDQxZjIyYTVhMzlkZDliMWUzMjczMGEzN2FiNzc2MGY4NWZjZDdlNyBsZWdhY3ktdHJ1bmsKKzExODM1IGJhMzI3N2NkMzA2ODVmNTJjYzk5ZDYzMThiNTZjOTk3NjUyMmMyZGMgbGVnYWN5LXRydW5rCisxMTgzNiBkNzQwYzk2MTNiYmE3YTFhZGRhMjY0YWI2NjU0ZTNjMjdkN2RhOGI4IGxlZ2FjeS10cnVuaworMTE4MzcgNzBiMzJmNDFhN2ZiZmIzOGVlNTcyOTQ2MjkxNjE4NDQwNDgzYTRkOSBsZWdhY3ktdHJ1bmsKKzExODM4IDVhM2QyMTMwMWEwNTE0NWFmMTAwMjkyM2I1YWViNjM2OTg3OTkxZDUgbGVnYWN5LXRydW5rCisxMTgzOSBlZjY4ZjBlNjA5ZTE5OGFiZTdhODhkN2NiNDEyN2Y3ZWZkMWUwYjFjIGxlZ2FjeS10cnVuaworMTE4NDAgNGY3ODUwNGE1ZjgxZGM3NmJmYjg1OGEwNzRkMjcyMmE5MGEyOWU2MiBsZWdhY3ktdHJ1bmsKKzExODQxIDUwYTJkNjQyNzZlNGIxMjZlZmUwODUyMTYxMTM0NDllZDQ1ZGIxZTkgbGVnYWN5LXRydW5rCisxMTg0MiAyMzM2M2JiOGJkOTBjZjE5ZmU3ZTQ0ZTlmYzhlYzc3M2E5ZmM1MDMzIGxlZ2FjeS10cnVuaworMTE4NDMgZTE2ZTM2M2UzOTFiNDMzYTM4NzEwN2EyZGNiOTYzMzk4YmY4MDkzMSBsZWdhY3ktdHJ1bmsKKzExODQ0IGJjOWFlYTcxOGU0ZTMyZTNkNzFiOWIzM2ZiNDU3MGU5Y2QyMzFjMGYgbGVnYWN5LXRydW5rCisxMTg0NSA2NjkwODM4YmE4ZGE2MGU0ZjVjNGYwMTg2ZWUyZmEyNDE2ZTQ3YjM1IGxlZ2FjeS10cnVuaworMTE4NDYgYmY4OWYxNDM1YjcyOGNkMGVlM2JkZTM4ZThkMDA4NmI2MmUwMGYyYiBsZWdhY3ktdHJ1bmsKKzExODQ3IDQ0MjJiYTM4OWU0MTU3MGI3MjgwZTk2Mzg2NTIwOWIzMTVhOTIyMGEgbGVnYWN5LXRydW5rCisxMTg0OCBmZGMzYzQ1OWVkMDBhZmMyODE0ZjA3OWRkNWI4NmUxZDU5NGVhMDVjIGxlZ2FjeS10cnVuaworMTE4NDkgY2QxOWE3ZGI4NzM1NmNmZGNjZDcwNjJlZWQ2YmJlYzlhMjQ5MDRkYiBsZWdhY3ktdHJ1bmsKKzExODUwIDY1YjA4ODJhNDRhYmNkOWFkNmM1YTJiMWY4ODU5MzUyOTgwYzJkYWUgbGVnYWN5LXRydW5rCisxMTg1MSA2MWY0NWRkN2M0M2E1MzA0Njg4YzM0NmZlZWMxODJhNTU4OTRhZGEzIGxlZ2FjeS10cnVuaworMTE4NTIgNmI1ZjdlOWEzMWNiOWU2ZTAzNzUzN2Y0ZDE2YTFhYTBlNDAxYzcwNSBsZWdhY3ktdHJ1bmsKKzExODUzIGYwYTNjMWZjN2I5MDI0ZWZmYzNkOTE5YTc5ZDUwZmZjYjgxNDc3N2EgbGVnYWN5LXRydW5rCisxMTg1NCA2Yjg4OWU0YzA3NTRlMDIwOTE0ZGJiNzdkNzA3MmZkM2VmYjA3Yzc4IGxlZ2FjeS10cnVuaworMTE4NTUgMmZlN2JiZTcxZGQ4YzBhMDJiMWVkZDE4NzBiZjU0NDlkMDE1NmM0NyBsZWdhY3ktdHJ1bmsKKzExODU2IGQxZWFkYTliYmMzYzdhMjdkODNjYjhmNjBhZmQyNTUxOTE1OGYyMTAgbGVnYWN5LXRydW5rCisxMTg1NyA0YzIzYWU2YzZlODJjNjFjZWM3YWE5ZDU4ZjEzZGI5OWE2NDk3MjYwIGxlZ2FjeS10cnVuaworMTE4NTggYjEwMDRiNDdiYWMwZTcyOTZmNWQxNWIyYWZlMTY1MWQxMjgwYTcyMCBsZWdhY3ktdHJ1bmsKKzExODU5IDUwZTA2MzFjZjExNzI5OGRkMGExMzhhZDNkNTRhYzFhMmVjZDkzZTcgbGVnYWN5LXRydW5rCisxMTg2MCBmMzUxYzY0YzgyZWRiODY0ODY1NTJhZjliMjk3ZTNlYWFmNDUzYWJhIGxlZ2FjeS10cnVuaworMTE4NjEgOWYxMzViM2Q5YTc4MzE1ZDliMzFlNmVkMzhiZDM3Mzc5ZWFmMzc4MSBsZWdhY3ktdHJ1bmsKKzExODYyIGM4MDMyMWMzMjhiNWQwZDliNDAxZDM0NWI3ZGZjMTdkYjNkZDU3MzEgbGVnYWN5LXRydW5rCisxMTg2MyA5ODFkZDIwYmM3MTE2MmJmMDNjODk2MDViZDgyYTlkMzQzMGRmYmIwIGxlZ2FjeS10cnVuaworMTE4NjQgZjY4MTliOTI2ZmIyYzY2MTMxYmU2ZjJhZjg5MWZiNmI5MGQxMDYxNiBsZWdhY3ktdHJ1bmsKKzExODY1IGYwNDI4OGNjZjc3YjdiMzJiY2M1M2RmMjlhMDg3NzI0ZGVhNDg4ZDEgbGVnYWN5LXRydW5rCisxMTg2NiBhNjgwOGJjZjhhYzI5YjRjYjViMTlmYjYxMWQzNTAzNWJiZGY4MDM0IGxlZ2FjeS10cnVuaworMTE4NjcgN2MzYmVhMDExODk1OGVhMzYzNDcxMjFhMTQ0NjJlOGE5NzFmYzgyOSBsZWdhY3ktdHJ1bmsKKzExODY4IDEwNmZhZjM2NmUzZjA3ZWZhMTFjOGE3OGM5ZTRiNTliZGZhNWUzZTUgbGVnYWN5LXRydW5rCisxMTg2OSA2ZmYwOTQ4ZmY5NTFjN2FiYzg1NDRhOGNjOGZiNGM1ZWVlYzY0OTkyIGxlZ2FjeS10cnVuaworMTE4NzAgMjI5ZjczZjJjODc4ZmUzZDIxNDlmMDNhM2Y3NWZjY2FiMGVmY2I1NSBsZWdhY3ktdHJ1bmsKKzExODcxIDQ4MDU2NzMxMDE5NGNhMDc2NTY5ODFhMjUxYmYzMGYzNGQ1NGI5OWEgbGVnYWN5LXRydW5rCisxMTg3MiA5YmY0MGVmMjI3YzkyYjZiNDRjOTZkYmY1MmIzNWM4MDUzN2JlOWEyIGxlZ2FjeS10cnVuaworMTE4NzMgNDJhMDdiZWY2MGUwMmM3M2E5MzAwNWUzNjgzNDA2ZmY4NjU5MWNhZCBsZWdhY3ktdHJ1bmsKKzExODc0IGE0YjRiYTVjNGFhMjExYjY3ZjYzYzdkNjQ0NDEzMWM2N2E1MTg0NDMgbGVnYWN5LXRydW5rCisxMTg3NSBlMTgwMjcxMzBiYmUyMGQzNGU2MmZlNmU3ZWUzZWJkNDRkNmVjMDUyIGxlZ2FjeS10cnVuaworMTE4NzYgYmZhN2VkMGIxYTZiZDIwZTQ0MjBlNTM0ZDBmZWFjYjQwZWUzZGY2ZSBsZWdhY3ktdHJ1bmsKKzExODc3IDA5YjVjYjQ3NTkyZDQ0YWJlNzg0ZmEyOTc1YTY2ZmFjZGYxMDZkZGUgbGVnYWN5LXRydW5rCisxMTg3OCBhZmU1MGI2NjE1NDhjOGQyNzczZDc1ZmU4NTM3OTc0ZjZjOGZiM2QwIGxlZ2FjeS10cnVuaworMTE4NzkgOGEzNDkzMDlmZGY0MzMxOTBkZDYwYzM2MTg4YmM2M2NmNzVhM2E0MyBsZWdhY3ktdHJ1bmsKKzExODgwIDJiMzQ0NjFiYTRhM2FjZWE2NjhiZGI1YzFjNzI3YTQzM2QzNzJlMGUgbGVnYWN5LXRydW5rCisxMTg4MSA2NGNhMTE1NmVkZjE5MDY3Njk0MzM2ZmY5ZDAzY2UwNmEzYmNmOGQ0IGxlZ2FjeS10cnVuaworMTE4ODIgMDBiMDZjYzViOWRhMTc4MTE0YzVmNDNjZWJiNGFmZGY1NjI4NDdlNyBsZWdhY3ktdHJ1bmsKKzExODgzIGY1ZDM5NzRkMjA5ZjMzYjkyZjEzM2VmNjVkMmU0MGQwMjRkZmY2ZDAgbGVnYWN5LXRydW5rCisxMTg4NCBmMTBjNmE3NDM4ZjVjZTEzOWMxYjEzNmJkMTUwOTg1N2U3NmRiNTBiIGxlZ2FjeS10cnVuaworMTE4ODUgOWRkNmY0Mjk2NDc5ZmJmN2NhNzQ1MTlhOGI1N2MzODkwNTJhNWM5YSBsZWdhY3ktdHJ1bmsKKzExODg2IDZjZTBjZTRlYTNjMTg0N2Q1ZWNhYzBmZGFmOTZlNDI3OTQ3ODViZGMgbGVnYWN5LXRydW5rCisxMTg4NyBhOWFlOTlmOTIxNTQwMTg3NjM5ZDZhOWRjYjFlZDdkYjVlMGQ5Y2FkIGxlZ2FjeS10cnVuaworMTE4ODggMjExYzllMjgzNDY2ZjZlNWIyYmM0OGViMjFmOTI2MWNjNDY5OTY5MSBsZWdhY3ktdHJ1bmsKKzExODg5IDNkOWEwYTNlNTk2YjI4YWJjOTNmOWU4MzlhOTc3MDk4NzZlNzRjYmEgbGVnYWN5LXRydW5rCisxMTg4OSAyMWQ3MWYyZTI3MjQ4YTBmNGUzOTNkMGZjMzIxZWNmOWI4OTMyMWQyIGxlZ2FjeS10cnVuaworMTE4OTEgMDk0YzM4NWI1NjI0MzEzNmI1OTMyZTUxMzI0ZDBlYjU0ZDNiMjYzMyBsZWdhY3ktdHJ1bmsKKzExODkyIDk3YTU0M2JmOWY5YTY0NDAxZTU4OWUzZTRhMTg5ZjkyMTliZTUxNWUgbGVnYWN5LXRydW5rCisxMTg5MyA4N2M4MjVlZjc4NzhkYTZlMzZkNWMzNjU1MmZmMGY5YzU3MzI5MDllIGxlZ2FjeS10cnVuaworMTE4OTQgOGNiMzg4ZTcxZGQ5MDUwNzVlNWQ1ZGY0ODQ0MjlmY2ExN2FmYmJmYiBsZWdhY3ktdHJ1bmsKKzExODk1IGIwNDY1YWViMGVmY2UzMDMwYTYxZTYwMTk4YTZiODgzMjVhN2JhNTAgbGVnYWN5LXRydW5rCisxMTg5NiBjMTllOWFjMmIwYzhjOTk3OGIzMzQzMjFiOGQ4YmMyZjY2Y2ZkZGEzIGxlZ2FjeS10cnVuaworMTE4OTcgM2JmZjY3MzY5YjExMDg1OWZlOTdlNGQ0NmM4MjBkMzE2N2Q0YTRjNCBsZWdhY3ktdHJ1bmsKKzExODk4IGYzNjcwOTI1YjA5OGM5NjY2NzRkMzllY2EzZTIyY2NiZjE0NzY0ZGMgbGVnYWN5LXRydW5rCisxMTg5OSA5Y2NhZWNkM2RlYTMyYmU2NjQ4NzJmZDQ5N2ZjZDQwZTM5MDU3M2U5IGxlZ2FjeS10cnVuaworMTE5MDAgNThhMzVlNWQxM2NjNjI3MTYyNDVmYTEwYTY1MjlhMWQ0NTE1ZGI2ZiBsZWdhY3ktdHJ1bmsKKzExOTAxIGY1MGI5Y2M3NmMxZTZkOTE3MzU5OTE3ZmI3NDMxNjQ0ZjFhYjJjNzQgbGVnYWN5LXRydW5rCisxMTkwMiAzODg2MTY1ZGJhNDI2NzhjNTJkZGVjMDI1MTc2ZjdmOWVjOTg2YzYzIGxlZ2FjeS10cnVuaworMTE5MDMgNjNlY2Y3YTRjMDcwZWM5YjMzMGNlYWQxZDM3MjRmNzRkNWRkNDI1OCBsZWdhY3ktdHJ1bmsKKzExOTA0IGVlOTkyYjMxMjBkM2FlY2U1ZmEzOTYxMGE0MmZlMjVkMjc0NWViYWYgbGVnYWN5LXRydW5rCisxMTkwNSA5ZjlkYTAxODliN2I0ZGVlMTM0MWVmMWVlZTQ0Mjc4YWYzZTFlNDVhIGxlZ2FjeS10cnVuaworMTE5MDYgNDRjNTQ2OGY4ZDM2NDUzNTYxN2MzYjViODIwYTYwMWQxMTgxNGYwMCBsZWdhY3ktdHJ1bmsKKzExOTA3IDYyMGUwMjI1MGM4MGJjNjA5MzM2MjViZjMyOTQwNTQ4NGM2OTY0NjEgbGVnYWN5LXRydW5rCisxMTkwOCBmYmNhNDg2MzI3Y2UxYzE0YjA5OGFlMTU1N2UwMTk3ZDkzZWJlMmU0IGxlZ2FjeS10cnVuaworMTE5MDkgMDM3OWViN2JlMzIzZThlNzliMTE0MTVjZTQyZDYwNWZkMDA3NzIzMyBsZWdhY3ktdHJ1bmsKKzExOTEwIGU3MjU0ZTJmMmRjMWNkMTFmMjc1YTE2M2IzYzgzMjI0ODQyNDI4ZmMgbGVnYWN5LXRydW5rCisxMTkxMSBjMDNmZmZmMzg3ZjhiZGQ0MjQ1M2IxZjk5ZDQwMjJhMDUwYmNjMjM0IGxlZ2FjeS10cnVuaworMTE5MTIgN2JhN2ZiZWI4OGVjM2FkZWYyNWRlYWM2YjM2ZDFjMmEzMTdhNjFmNyBsZWdhY3ktdHJ1bmsKKzExOTEzIDAxMjk5N2I5ZjFlYmQxMjY1NzZiYmUxMWRkMjk3Y2Q1NDZkMWNhYmQgbGVnYWN5LXRydW5rCisxMTkxNCBlNmVhMmJjOTc0ZTI2ZmJiZjM3NDE1MDU1NjE5MmNmNTQ5NGQ2YjVkIGxlZ2FjeS10cnVuaworMTE5MTUgZjZmODZiMzdmMWZjM2I5YTRlMGMxNTU4OWJiMmNiOWFiOTg4ODY5ZCBsZWdhY3ktdHJ1bmsKKzExOTE2IDNiOGIzMWQyYzljYTMxMWZlNzJmMzZkYjFlNmNiMTg1NjYyMGUyZGEgbGVnYWN5LXRydW5rCisxMTkxNyA4ZTRmZGIwYjBiYjhlNTk4ZTRhOWFlYzVjNGM2OTE3NmFmMjVmM2U0IGxlZ2FjeS10cnVuaworMTE5MTggMDJiMGI4NGRkNTQ1ZTdiYTVlYjY3YmU5MDhiYTVmYmY3NjUwNzE0OSBsZWdhY3ktdHJ1bmsKKzExOTE5IDFhNTlmMzY1NGJjMTEzYTM5OTYwMTc2YzU2Y2I1YWNiZDBlNTlkZTAgbGVnYWN5LXRydW5rCisxMTkyMCBlMTgwNmIyODBmNTM5M2NkZGFmM2M1MWE0NTY3ZGY5NDc2OGZmNDdjIGxlZ2FjeS10cnVuaworMTE5MjEgN2Y4ZjYwOGFjZGJjZDM3MGE3YzE0MjMzMGQzNzNkZjZhY2IyYmNhZSBsZWdhY3ktdHJ1bmsKKzExOTIyIDc5MmNkN2M1ZmQ4OGFkNjdkNDE0NDQ4ZDU2NzAzY2FlYjk0NjU1ZGYgbGVnYWN5LXRydW5rCisxMTkyMyA5MGZiZWM0MzQzZGVjNjJmZWJiZmY3N2M3NjZlNWI2NWNjNzc5ODMzIGxlZ2FjeS10cnVuaworMTE5MjQgNzU2N2VmNDBkZTc3Y2I3YmU5NWE5NjRkMTBmMzUwZDE1YzgxNDA2YyBsZWdhY3ktdHJ1bmsKKzExOTI1IDFjOTRmMzRiNDllM2Y3NGMzNWEwODU3NjRjNGE5ODdlYmIzNmMyYWEgbGVnYWN5LXRydW5rCisxMTkyNiAzMzdhZTEyZDgwNTAwN2FkMWM2ZGZhYzZhZDdkYWMyYjQ1NTE4NDRlIGxlZ2FjeS10cnVuaworMTE5MjcgMjJjMzJkZDYzZmY1ZDc3Y2Q3NDFkZDE3ZDkyMGVkMDc3MTU5ZDNhZSBsZWdhY3ktdHJ1bmsKKzExOTI4IDg3Yjk1NTRjNTFkNGJhNmVhNTc4MDkyMzA5NGRiYTM1YmQyZGQ4MTQgbGVnYWN5LXRydW5rCisxMTkyOSBlZGY3NTUzZmIyMGVmZWRlZjliOTAxOWQwNDM5NzRmZTcxYmQ1OWMxIGxlZ2FjeS10cnVuaworMTE5MzAgOWVhNWM0MmRjYmVkYjVjM2UxNjU2NGY2MDIxOTMwZjI4NDAzNGY2NSBsZWdhY3ktdHJ1bmsKKzExOTMxIDRmNmY3MzBkMjU1NmRiZTkzMWUwZWFiODcwYjY3MjA4MjZhMWFkYmQgbGVnYWN5LXRydW5rCisxMTkzMiA2M2ZlODU3MzViZGNkOTU0ZDFhMGY0NDViZDdhNDRjYTIxMjNmNGIzIGxlZ2FjeS10cnVuaworMTE5MzMgNDk2MjNkYTNjNjNmM2Y1MmUyZDU3NzlhYTJkNDNlZDJhY2VlNGI0NSBsZWdhY3ktdHJ1bmsKKzExOTM0IGM2MzY2ODkzY2VlMWQ5NzYwYjUzNjE2ZTM4YWI3NzIwZjc1ZWE3N2IgbGVnYWN5LXRydW5rCisxMTkzNSBjZWI4Nzg3OTYxMDgxNjkxMzlkNGQzNzFiMjhmNmJhZjk4Y2Q2ODM2IGxlZ2FjeS10cnVuaworMTE5MzYgZTFjMzMwOTQzMjIxZTVkOTlkZjIzYTQyYTA5NWQyY2JkNTA2ZTIwNSBsZWdhY3ktdHJ1bmsKKzExOTM3IGY4ZGRkMjM0MDM5ODg5ZDljZmZmOTVjN2QwYTIxYTBjYWFlMmYxNWYgbGVnYWN5LXRydW5rCisxMTkzOCA5MTNlYjMxYjAzMTcyMjEyNjUxZTdjYWE4NGQwOGM1ZjRiYmRlODBiIGxlZ2FjeS10cnVuaworMTE5MzkgMGZlYTVkNWM0ZmQ5ZGE4ZDc4MzE0NzY5MTUyMzRlMjRiODRhZjQxNSBsZWdhY3ktdHJ1bmsKKzExOTQwIDU2MjE3ZWFiYzA3YWI0ZDVjNTk4MzJhMzIwYTdjOTdlNGU1Mjg2NTIgbGVnYWN5LXRydW5rCisxMTk0MSA0YmQ1MTI4ZTVlZDQzNDRlZDFiMTc4NjBhNzZmYzYwYjQ3ZWE1MjlhIGxlZ2FjeS10cnVuaworMTE5NDIgMTg4MGVhZDMyMDBjZDQ1ZmUyYTkxZWRkOWVjYmI2Mjc3NmY4MTEwMyBsZWdhY3ktdHJ1bmsKKzExOTQzIDQxYzg4NGRmYWQ1ZWY0Yjk5N2Y2YzY1YWI3NGY0MTBjYmZkMzM5NzUgbGVnYWN5LXRydW5rCisxMTk0NCAyNWI2OTI5ZmZiMTNkZTAwNWE4ODYxOGYwYTc1M2I1MzVhZDNhYjE4IGxlZ2FjeS10cnVuaworMTE5NDUgZjI0MmNkMTBlMTZhMjQ4ZWVjZmYxNjc1NDA4ODk0ODBlMzI5YWQ5YyBsZWdhY3ktdHJ1bmsKKzExOTQ2IGQzOTM5YWQzODE3NjZhYTMwMTlkNmYwNjUzMzM2NGI1OGE4ODgzMTggbGVnYWN5LXRydW5rCisxMTk0NyBkYTcxYWExYmUxOTFjMDFjM2U4NWQ3OTQ4OWI1YjI5OGFlNDFjNDdlIGxlZ2FjeS10cnVuaworMTE5NDggYjM0ZjllN2UyNjkxNDY1NGQ0ODYzYzY3YmY0ODdlNjAwNmM5ODZjMSBsZWdhY3ktdHJ1bmsKKzExOTQ5IDRkM2UyZjFkMGFlNDdlZGI3NWVjMTMxNzJiZDEwNzZiYTUwZTUzMDYgbGVnYWN5LXRydW5rCisxMTk1MCA4YmMwYTMyZGRhYjVhMjJiYjk2ZTI3NzA4OGYyZDJjYTY2YjY1MjI2IGxlZ2FjeS10cnVuaworMTE5NTEgZTU5OTYyNzlmNThjN2IzMzFjYTA4MzMzNmUxZTE1NDY1ZWVmNDQ3NCBsZWdhY3ktdHJ1bmsKKzExOTUyIDE3YmNhNGIzZGE5MzU3Y2Y5ZGQ5ZGI5NTQwNTg5ODllOGRhYjFlNTMgbGVnYWN5LXRydW5rCisxMTk1MyAxYWZkYzU1ODAxNTc4Y2YxY2E1NjcyZDAzYzVlMGI2Yjg4NDlhMjAzIGxlZ2FjeS10cnVuaworMTE5NTQgNTQ0MjJiNDZmNmQxODAyY2M5M2M0NzlmMjI3ODM2N2ZmNGViODg5NCBsZWdhY3ktdHJ1bmsKKzExOTU1IGU3ZDk4NGYyNjZjYzYxZjZlNmFmZjk2Yzg0ZWI0ZTJjMjJkMTIzOWEgbGVnYWN5LXRydW5rCisxMTk1NiA2MmUxYmNjNjZhOTNlNDI1NTk1OWE3YzE4MmQ2MGNhNWRlMDk4Yzc1IGxlZ2FjeS10cnVuaworMTE5NTcgNGZhODgxMGU4NWNhY2Y1Y2YwZTJkZWEwNGJmYmZjYTNkMzFjZWRlMCBsZWdhY3ktdHJ1bmsKKzExOTU4IDlmZmQ2MDQ4MDdjMjE2NzNkYTMwYjE0MDk0ODI4ZGE0MzkxMWQ0YTEgbGVnYWN5LXRydW5rCisxMTk1OSA4ZGMwZTk3YTQ1ZWM3NTIwOGM1MmExZGMwNjY1NzRiOTJmZWE3NTc0IGxlZ2FjeS10cnVuaworMTE5NjAgNzk4YjEwNDFkMjYwNmYwOTQ2ZTljNTRmYjBjNDMxZmQ4YzQ3Yzg5MiBsZWdhY3ktdHJ1bmsKKzExOTYxIGExMTVjM2Q0OTJkYjA4MzQ3NGNjYjk5OWEwMDEzMjZiYTkyZmM2ODEgbGVnYWN5LXRydW5rCisxMTk2MiA0ZGUwOWVhMTBlZTA4ZTAyMGIwZTM2NGVkNzY5OTE1YjhmZTBhZjI1IGxlZ2FjeS10cnVuaworMTE5NjMgNmEyNDRlNjRiM2U2YjJlYzA3Njk0YmZlOWFjYWI0NDg1NDU2MWQ0MyBsZWdhY3ktdHJ1bmsKKzExOTY0IGZlYjZjMzg2YWI3NzI2NTgzZTRmMDgzM2FjMjdjNzU2MjgyZWY1YWEgbGVnYWN5LXRydW5rCisxMTk2NSBkMDdiYzhiZjJkODQ1OTNlZjc5MTAzZTgyMmVlMWUzY2Y3YWE1OGI3IGxlZ2FjeS10cnVuaworMTE5NjYgMWFiZDkxZjk3MDMzMjVjNzQzNDE1NGU5YjcyZjUxNmVmMDI5YTM4NCBsZWdhY3ktdHJ1bmsKKzExOTY3IGMyMTgxNWZhMDc3ODg2NjUwNjE2NzYyNDI5OGM2NDQ2YjE2NWEzMGMgbGVnYWN5LXRydW5rCisxMTk2OCBkZTAwOTMxNjk2NDliYjMwZjZmOGFlZmUzMDhlMjQzOGI4NzVkMDRkIGxlZ2FjeS10cnVuaworMTE5NjkgYWJmMmNkMjUxYjI0YTljNDkxZjM4OGJiOWQ5MWZiZDg0NmZiYTY3OCBsZWdhY3ktdHJ1bmsKKzExOTcwIDNmNzE3MzQyZjBhMzZkZTkxZDZkY2YzMmQxOTU3ZDIwMjYzMjZmNWEgbGVnYWN5LXRydW5rCisxMTk3MSBjMWZkODE0NmYyZTlhNzljNzdlNTg3N2FiYWNiMTYyMDUyOTE2MzU1IGxlZ2FjeS10cnVuaworMTE5NzIgZjg5ZWE5YmY5YTUyNWQ5ODMyZDhkMjFkMjc3MDgxNmVkMjc0NjllYSBsZWdhY3ktdHJ1bmsKKzExOTczIDFlYTZkMjM1NmU1MmRhNDBmOTQ3YmQyMjk2YmY3MWFjMDlkZjg5NzIgbGVnYWN5LXRydW5rCisxMTk3NCBhZmEwY2QyMTdmNGViYTcyZGI0MWMxNjVhMzJhYmUyY2Q2OWNmMjM2IGxlZ2FjeS10cnVuaworMTE5NzUgZjZhODRhMWM3ZTAyY2ZiMmFlZmMyMjMwOGJjYzRhODkyZmVjM2MxNSBsZWdhY3ktdHJ1bmsKKzExOTc2IDM5ZmZjNTk2N2I2YmFjYjI0NDdiMDY0MzQyNTczMTMzNGE2OWE4YTMgbGVnYWN5LXRydW5rCisxMTk3NyA0YWJjYjMyZjdlZjU0YTMzMmRjNGRlYjNiNDgwMzBkMTNiZTkwMmRhIGxlZ2FjeS10cnVuaworMTE5NzggZTFlOWM5ZGY0ZjEyYzhmNTAxZDZjMTA3YmJkOTE5OGM1M2IyNzdjMyBsZWdhY3ktdHJ1bmsKKzExOTc5IDYzODc2Y2Q5OTg0YzkyNjgxZGZhODM0YmE4ZWYzNjdkNTg0Njg2OTQgbGVnYWN5LXRydW5rCisxMTk4MCAyNWJlMDBmMzFkYTYxNWQ0MzZlZTU5M2YwYjhjM2UwZjYyN2M2MTgxIGxlZ2FjeS10cnVuaworMTE5ODIgZDg0NzE1NTIzMDk1YWMyN2Y3YjM5OTI5NjhiMWMxZjI2ZTlmZWExOCBsZWdhY3ktdHJ1bmsKKzExOTgzIDZlNmJlODk2ZWM0NjZlOTQ0YjM5ZDM2OTNjODhkMzliYTYxYzY4OTkgbGVnYWN5LXRydW5rCisxMTk4NCBkMzkyOGI5OGUyZTEzZTkyMzhjMzE1MzRlNjUxZjNiNzNiNWIwMzRlIGxlZ2FjeS10cnVuaworMTE5ODUgOGYzZTdmZTFkNGY3NjNjMGFmNTExNGYzYWU1Yzk2MjZhN2UzN2NkMSBsZWdhY3ktdHJ1bmsKKzExOTg2IGIwY2EyY2E1ODZiMTU4YjFkNGMxMDgyODY5YzUxMjlhYjNkYzc2MjAgbGVnYWN5LXRydW5rCisxMTk4NyBkYjdjY2EwOWJlYWZlN2I3YzIyMWU4MTNkYjJkZThkNDRjYWFmYjg0IGxlZ2FjeS10cnVuaworMTE5ODggYjc1ZDkzZWM4ZTVhNmY3ZjFiM2UxMTNjZjlmMmIwN2QzMTgxODY0MSBsZWdhY3ktdHJ1bmsKKzExOTg5IGEzYmNmMWIzNjU1MTdiNTRhOTlmZjdmZDI4MTBjNzAwYzY2ZGQ3YjggbGVnYWN5LXRydW5rCisxMTk5MCA5NjQ3YzZhZDZhNTA5OGNlODk1YWUyZDcyN2I5YWE4ZTI0NjNkZTFkIGxlZ2FjeS10cnVuaworMTE5OTEgMTgxNTA3Y2MxYTcyNTk1YTVmMDA1NTZhYTgyNzc4ODJiZGNlZmMyOCBsZWdhY3ktdHJ1bmsKKzExOTkyIDU0OTgzMTcyM2VmODU3OGExYWEyZjExY2ZkZTNhMTk1NzZmZmU5YWYgbGVnYWN5LXRydW5rCisxMTk5MyBlYWJlYmMxNjE1MTg2YjFlMmU0ZjZkYjMzMTdlNjUwMjJlY2YyMTAzIGxlZ2FjeS10cnVuaworMTE5OTQgNWQ4MWU0MmM2YmEyZThlMDU5ODgyODEwNDMyMmVjNzdkZDZiNWY5ZCBsZWdhY3ktdHJ1bmsKKzExOTk1IDk2YzczNGFjZjg0ZjU1Y2Y5MDNkNWVhNzk2YjJmZDhjYjk1NjRhNzYgbGVnYWN5LXRydW5rCisxMTk5NiA3NmU5MzU5MjRmYWUwYjQ4Yzc4NTFiMjlhNzFjZmM2Y2JjYTUyZWExIGxlZ2FjeS10cnVuaworMTE5OTcgNjNhMWE4NTEzYzFkY2U3MGZlZmU3Mzc3NDE2NTI0ZjRiZmVmYTM0ZiBsZWdhY3ktdHJ1bmsKKzExOTk4IDQ0MzFlN2EzMTk3NzViYjZlZGI0NmIxMmFkNTcwNzNiNWY5MjBlMTkgbGVnYWN5LXRydW5rCisxMTk5OSAzNzc3N2UwZjgwZTM3NTU0ZWQyYjA3ZGNlYTVjOTQwZjI1MGFiNWViIGxlZ2FjeS10cnVuaworMTIwMDAgNjBkZmEyMTFkZGU4YmFkNjQ4NGQ4YWUxNDQ1NDcxM2I0MDI1ZDE5NiBsZWdhY3ktdHJ1bmsKKzEyMDAxIGZlYzg2MjMwMWQ2ZTMzY2VhYTJkZDRiMTFjNDQyY2I1NTIzMDdjY2UgbGVnYWN5LXRydW5rCisxMjAwMiBmNTk2NTE4ZDA2OTFlMDI1YmNhZTZjZTc0N2M4MTcxNjFkYmNkY2Y1IGxlZ2FjeS10cnVuaworMTIwMDMgMjQ0OTc2NDNkY2M5MWQxNGRmNjUyYWVjODYxODhmY2YzNTk5ODg5YSBsZWdhY3ktdHJ1bmsKKzEyMDA0IDA0NDI2MjI0MzAyYWFkYWU0YTIzNzQ0YzUxY2QzOWE4YzUxOGI4MTAgbGVnYWN5LXRydW5rCisxMjAwNSBjZDc5MDMxMGJjNGYwNmYyYTMxMDU0MTIwNjRmYzEyZmQ2NmQ3MWE4IGxlZ2FjeS10cnVuaworMTIwMDYgNjBkOTkwZjdkN2FiNTZhZmM1OWM1NTI4ZDRjODdkZjM3M2NkNTY2MCBsZWdhY3ktdHJ1bmsKKzEyMDA3IDRhNzM0NGQ1NWFlMTg3OTUyOGQwYTg2M2MzNTE4ZWY2MGM3YTQyMDYgbGVnYWN5LXRydW5rCisxMjAwOCA4NTQ0NGFmMmJlOTVkMDU1YjEyMzM2MDVjZjJhZGNjM2I1MjRmZmZiIGxlZ2FjeS10cnVuaworMTIwMDkgYmJlOTI5MzJhMDA1ZTU3ZTIyOGNlYzE0MmRhNjFiYjlkZTVmYmY1MyBsZWdhY3ktdHJ1bmsKKzEyMDEwIGEyZTgzYmRjMWZlYWVmNzNiYTU5NmFlMWU0YzQ2MWNhZDY3MWM3YzYgbGVnYWN5LXRydW5rCisxMjAxMSAzNTBmMjQxODBkY2I0MjJhMTRkN2Y2ZWJhMDhiMGQ0ZWZhMGE0ZmQ4IGxlZ2FjeS10cnVuaworMTIwMTIgYTEyNjEwN2M0MzNhNmY5YTA3YzdkMzZhZDg5OWNmOTU1ZDRmMDI0ZSBsZWdhY3ktdHJ1bmsKKzEyMDEzIDk4M2Y1M2YyYjZmNjgzY2I0ZmFmOWEwYjdjZGI2YWE2MWZiYjVjNDIgbGVnYWN5LXRydW5rCisxMjAxNCA1OGY2ZGE3YzhiYjg5NDIxNGFmMzlmNGVlMTJjNjVlYTBhZjhkYmIwIGxlZ2FjeS10cnVuaworMTIwMTUgZmU3ODM5ODRmOTJlYTNhMjQ4ODlhZjU0ZjJjNGUwZmUwNWFhYWU3ZiBsZWdhY3ktdHJ1bmsKKzEyMDE2IDIzMDkyNWZlNWIyZGU5ZGQ2YjM2YjIxZWMwMGJhNzA1ODc4ZjNiM2YgbGVnYWN5LXRydW5rCisxMjAxNyA1YWUxYTIwYmJlNzFlYjU2OWU2MjExYzRkNGFjY2Q5ZDYyZDYyYmMxIGxlZ2FjeS10cnVuaworMTIwMTggMzE1Y2MwNmE4MTYxNTQ3ZGQ0OWRlOWYyYjEyYzMyYzg1OTI5OGUwYyBsZWdhY3ktdHJ1bmsKKzEyMDE5IDBmMjcyNTdmYjZjZjRmNDE1YmQ2YjNhNjQwNjcxYjJlZDkwOGQ4ODAgbGVnYWN5LXRydW5rCisxMjAyMCBhMWE4ZGY3M2JmZmY1MjNmZTdjN2Q4ZDM5OGNjYmM5MmNlYjE5YjU2IGxlZ2FjeS10cnVuaworMTIwMjEgZWQ2Y2FjZGRjNmM2OGU4N2I5MDYxYWNmZjQ1MzY5M2YyOTFkMTQ2YyBsZWdhY3ktdHJ1bmsKKzEyMDIyIGM2YTExMDNlZmE4YWYzMWU2ZTc5YTY5YzBlNWUxYTQ4NTkxNTBmNDkgbGVnYWN5LXRydW5rCisxMjAyMyA0OGM3MDA0MTA5MzYzYmIxNTE0OTU0M2VlNmM2ZjIwMDVmNTg5MzE3IGxlZ2FjeS10cnVuaworMTIwMjQgNzUwNGYyM2M5MjQ3ZDkxMDZlODlhNTZmYzdkMWQ4NDNmZTY2OTIxZCBsZWdhY3ktdHJ1bmsKKzEyMDI1IGY5MDJlY2M4NjdkMDhkMzRjOWEwYTM5ZjA5MDJmNDg0NDk0YzFhZDYgbGVnYWN5LXRydW5rCisxMjAyNiBlMDU5MDQ5YjFhNzYyMGM4ZTE1M2I0MTQ5ZjNjMjU2ZjY3ZmUxNDNhIGxlZ2FjeS10cnVuaworMTIwMjcgZDdkMzkyNjBmZTgyZDVmZmUxZDU3YjZjYTY2NjQ2YTk2YjRmZDU3MyBsZWdhY3ktdHJ1bmsKKzEyMDI4IDgzZjgzZjAwMmQyZWFlNTFmZmI4MjM2ODljZGIxMzk0MTE2NDc5OTcgbGVnYWN5LXRydW5rCisxMjAyOSA2ODg2M2Y1MTI3NmMwODUxMTA1YmM5MjVjMWFkYzc0ODEyZDBmYTY1IGxlZ2FjeS10cnVuaworMTIwMzAgZGYwNzc3YWI3YzYzODU0Zjg2MzMwYWU5YTM2ODk2NDgwM2IyNzZlZCBsZWdhY3ktdHJ1bmsKKzEyMDMxIDc5YThhMWE3NDY3YjEyMmY0MGUxODJkYWFmYjhlMWE3YTBiOGQzZmQgbGVnYWN5LXRydW5rCisxMjAzMiA1MzMyNWI4ZjhjZTliMWNkM2ViMjVmOGE3ODJkOWQzMjUxZGZmYWNlIGxlZ2FjeS10cnVuaworMTIwMzMgOTNlY2M1MWY1OWQxMmFmMzgzYjUzNGMyZjMxNzRkMTE3MzQxZjk2ZSBsZWdhY3ktdHJ1bmsKKzEyMDM0IDNlNTBjMWRkYWIzYTNiY2IxMWEyYzkwZTAwZjhmYjA4MTY3MzVmYzcgbGVnYWN5LXRydW5rCisxMjAzNSBmMTdjZWRhNmU2NjY5MjU3M2QzZWYxZTNhMDViNTQ3MGY1MjQwNTU5IGxlZ2FjeS10cnVuaworMTIwMzYgZmYzOTJkZDdiOTcwOTc0NGJjNGM0ODNhMWNmMDZjOWIwZTkxMzAzZiBsZWdhY3ktdHJ1bmsKKzEyMDM3IDg3YmJjNzIxYmEyYjk5ZGY1NzFmNzhjMmI0MDdhZDBmMGI4ZTQwNjIgbGVnYWN5LXRydW5rCisxMjAzOCBhYTJjMWE4ZmE4Y2UxMTI0OTQ5NGI5OTg0MDk4MDgzZWMzYjQxMjIwIGxlZ2FjeS10cnVuaworMTIwMzkgYjhlYzk3NGFmZDY5NTZkNjcyNTkyNTgxZjYyNzMwODlmMTA3NmU0MiBsZWdhY3ktdHJ1bmsKKzEyMDQwIDE0MzdjMjMzNWIzYjQ2YTVlOGM2YzA0NTM0NGU2OTA1YTFjZGQyZTYgbGVnYWN5LXRydW5rCisxMjA0MSA2YmFkNjlkMzgyMTYyNWY4MjkzODExNmEwZjUyMTkzOWU5MmVjZmJiIGxlZ2FjeS10cnVuaworMTIwNDIgMTZhZjI1ODJjOTY0Y2NjN2M1YTVlMDU1YjFjNmIzNzU4ZTE2NjY3MyBsZWdhY3ktdHJ1bmsKKzEyMDQzIGQ2NDE1YzI3YjNiMWI0YmYwYmVkMDBmZTkwZmY1ZWRlM2E1OTI0NTcgbGVnYWN5LXRydW5rCisxMjA0NCBhYTk2MWE0NmFlOWUwOTc2M2IzMTNhNzVkZDRkZGQ1ZGFlZDE0ZTRjIGxlZ2FjeS10cnVuaworMTIwNDUgNmUyNDliMTM1ZWQzYjIxZDY5ZjE0Y2MwNjNmODE1YTRhMmJmZjZhMiBsZWdhY3ktdHJ1bmsKKzEyMDQ2IDg4MTlkZWYxYjM5YzZhY2EwNDAxZGI2Zjg0NmNiMWU1NTgwNzhjYWEgbGVnYWN5LXRydW5rCisxMjA0NyA0ODVjMGJkZmU4YTBlMzllZmNlNTA5YjliNTA5N2RjZmFiZGExZWY4IGxlZ2FjeS10cnVuaworMTIwNDggZDU5NGU4MzJhNTZjYmMxOTIzM2M2ZDJhMzY4MWMxNzMwOWI4Njc1ZSBsZWdhY3ktdHJ1bmsKKzEyMDQ5IGRmMzk4NWViNTg3M2JjOGY3NjNhNDk0ZThhYjY1YjBlNjQ0NzRlODYgbGVnYWN5LXRydW5rCisxMjA1MCA5YTRmNWJhYTgyNGU3YWJiZDhiMDQ0NzdmZTNiOTI5NWY5YzFkNzY2IGxlZ2FjeS10cnVuaworMTIwNTEgMTY4NzhhNGMyNjBkMjBhNWRmZTQ4ZjRkNGI5OWEzOGU5NzNjZjhlOSBsZWdhY3ktdHJ1bmsKKzEyMDUyIDkxNzdjNDA5ZGM0NTEyYTA5YjJjYzA4MDYyMmZjZTZkNjMyNzI3YWUgbGVnYWN5LXRydW5rCisxMjA1MyAyMjAwOTA0YWJkZGM1MTM2NTQ0YjBkZDA4ZGQ2YTdiMTI0MmNlOGVlIGxlZ2FjeS10cnVuaworMTIwNTQgODNiYjYwNmEzMmU2ZjQ0OGY5ODA4Y2FiNjdhZDQzOWEyY2I0M2VkYiBsZWdhY3ktdHJ1bmsKKzEyMDU1IGYwMmM2NTQ5ZWQxYjU0MTdiNDYyMjM3ZmM1NWM0MjljNzk2YmZiZWUgbGVnYWN5LXRydW5rCisxMjA1NiBmYTg2N2Q4ZWU3ZWJjMDM5MGVkNDc5ZmNiMDFkMGQwMzRkNmRkYjkyIGxlZ2FjeS10cnVuaworMTIwNTcgZmViOGY4NzY5ZWY2MmRjNWZhYzEwOWM4ZDExZDhlZjFkOWQzYjg5YSBsZWdhY3ktdHJ1bmsKKzEyMDU4IDA2NzE3ZTUyMDY4ZmZlMzA4NTczZWI1MzAyYjA5YThkZWE3MGYzMzAgbGVnYWN5LXRydW5rCisxMjA1OSBhZThlMTQ5NDQ0MTQ3Y2FmMmRiNTVlNzBkNDFlZWVhM2NjNGJkNWJlIGxlZ2FjeS10cnVuaworMTIwNjAgYmM5ZTc3MjFjOTE2MjAzZjUzMWIwY2E1Y2Y2NTE0OWI2Yjc2YzNiNyBsZWdhY3ktdHJ1bmsKKzEyMDYxIGQ4NWQyZDk5NGYxZjc4OWY2ZmMzYmNmYmQyMzExNDU4MzE3MWRlNWQgbGVnYWN5LXRydW5rCisxMjA2MiBkMTNhNjBiNDRiNDU4N2M2NWI5MDk0YTBlNzdhNzdkNjY0ODlmZjA1IGxlZ2FjeS10cnVuaworMTIwNjMgYTA5MTE4NWNjZmI2YjQ1OGUwYmM1NDgzYWJkODIwNTNlNjFmZGVlZiBsZWdhY3ktdHJ1bmsKKzEyMDY0IGFjNzQyODYyY2EzNjI3Nzg4NDAwNGNiZGEyN2JhNjI2OWFhOGY2YzMgbGVnYWN5LXRydW5rCisxMjA2NSBiNzE1OGRiMzQ3ZDliOWZlZWRmODllNzkyYTJkYjkwMGRiMzAzMzUxIGxlZ2FjeS10cnVuaworMTIwNjYgNTU5OTExNzY4ZGNiYWRiMjg1M2JlZDc2NzE3MTdjNmNhNTE1NzFjNyBsZWdhY3ktdHJ1bmsKKzEyMDY3IGFiMjBmNWNkZDc5ZjZlNTRhNWRhYjRhYzNmYWVlNzExMWI5NzJiYWEgbGVnYWN5LXRydW5rCisxMjA2OCA1Y2RiZDhjMDQwMTZjYzY0NGZjNmUzZGE4MDI4ODY3ZTRjN2IxOWEwIGxlZ2FjeS10cnVuaworMTIwNjkgYjA5YTljNDEyYmEyOTk0YTk3OWZmZGE1YWExYjE0MWEwMzk3M2Q3MyBsZWdhY3ktdHJ1bmsKKzEyMDcwIGI2Nzc0MzY3NTNhODcyYjM0NGQ4MzhkYmI5NDZkNTI5MWI0ZDI1ZDUgbGVnYWN5LXRydW5rCisxMjA3MSA4ZTZlYTVmMDNlNzM0MGNiN2ZmY2NlMGY1OWVlZmQzMGEwZDBiMzg2IGxlZ2FjeS10cnVuaworMTIwNzIgYWExZTQ4Mjg1ZDdiY2UwMDdhOGU1MGM1YzU5M2M4MWI2ZTEzODQ0OSBsZWdhY3ktdHJ1bmsKKzEyMDczIGNkZjU2MTdjMjAyMmQyYjc3MTgwMDU4YWRjMmJjNzg4ZjE0YjcyOTYgbGVnYWN5LXRydW5rCisxMjA3NCA5OGFkNTdjMzlkMjBkYzFmMTA1YTVhNjQ4MjcyYTQ5YWIxMmEwNTQ2IGxlZ2FjeS10cnVuaworMTIwNzUgODFkZDdjNzNmN2IyMWY0OWIzODg3MjRjYWM3MWU2MmExMGQ0MzhlMyBsZWdhY3ktdHJ1bmsKKzEyMDc2IDI5OTI4NGVlNjY5ZGZmZmI3YTRmYzhiYzc0NDZjMDlhYmYzMWJmN2YgbGVnYWN5LXRydW5rCisxMjA3NyBmNGRhOTQ0OWYwMTEwMWUyZDU3NDY2NjRjZGE5ZTVlZDQ1YTQwMWFjIGxlZ2FjeS10cnVuaworMTIwNzggOWE4ZWNkNzU5ZTEzNDExYzJhZTJmMDUxYjk4Y2JjOWE4NWY3MzE0OCBsZWdhY3ktdHJ1bmsKKzEyMDc5IDQ1OTVlZjVhOTY4YWM1MzZlYjYyMGYxMjc0ZjhjM2JjZDM0YzY0YTIgbGVnYWN5LXRydW5rCisxMjA4MCA4OGQ1OTBjYzExMTZlNGY0ZmEwYTlhNDAwZTk1NTQwNDYzYjRmMTJiIGxlZ2FjeS10cnVuaworMTIwODIgNjQ4M2RiZTA5ZjA2MTg4Y2UzZmJlMTZlOGMzMWI0MjgyZDA0OTdkNiBsZWdhY3ktdHJ1bmsKKzEyMDgzIGU2NmU4OGY1MjYwNjQzZDM4MzdlZTgxMGE4Njc5NDM0ODc0ZTQwZDMgbGVnYWN5LXRydW5rCisxMjA4NCAzYzI5N2E2YWQ0ZThiZjk5YTljMWM3NGM2NGZjYTZiMDRmNDgyOWQwIGxlZ2FjeS10cnVuaworMTIwODUgNjBmZGIxZGIxMTc1NjY1YjlkNzU5ZjAyYjFkY2FiMTBkMDA0ZjUyYSBsZWdhY3ktdHJ1bmsKKzEyMDg2IDVhOWNhMmU5MzdiNWJkNzM0ZGZjZDJlOGE1MDVjMzc1YjYwZTg1YWYgbGVnYWN5LXRydW5rCisxMjA4NyAzODAyM2E0MjVlNDgzODBiZWQ3YjYyYjNiNzUzYjA0NWYzMzQ1NmNiIGxlZ2FjeS10cnVuaworMTIwODggMDFjOGZlNDQwNjRiMzJkZDJmNmU3MzA0ZjM1Mjk3ODA0Njk3OTQyMyBsZWdhY3ktdHJ1bmsKKzEyMDg5IDQ1YmQ2YzQwYzA1YWUwNTJmYTAwNTM2ZDA3MWEyMDEwMWM0M2E0ZWMgbGVnYWN5LXRydW5rCisxMjA5MCA3ZjkwNzM2NzAxYTM1MGUzMzk1NTMwMDNjMGVjNWEyNjAyNzRlMDU1IGxlZ2FjeS10cnVuaworMTIwOTEgMmFhZmNlZTIyMGJjMGI3Njg5ZjgyZjQ2ZTA5YzRmOWUwMGViZjdlNCBsZWdhY3ktdHJ1bmsKKzEyMDkyIGYyMmY3NjliZjNkOTQyMWM5YTlhYTE0ZTYwNjU0ZGU3NGM4ZWIwN2UgbGVnYWN5LXRydW5rCisxMjA5MyA4NmJmNzBhNTVlZmRlNGRlNzQyMmExNjhhYzg0NTYxMjZlMTUxMzllIGxlZ2FjeS10cnVuaworMTIwOTQgNjE2YjE3NGVlYjU0ODMwZGU4NGUwZGQyMzYwNjllNmYxM2ZhZjdlZCBsZWdhY3ktdHJ1bmsKKzEyMDk1IDM2MDljZGRjNzlkZjYxMDNlZTQ4NDU5NjA2ZDU0NTY5M2QxZTk3YmUgbGVnYWN5LXRydW5rCisxMjA5NiA1ODMxYmIzY2E0MmE0OWY4OGFkNjYyMTk1ZTBmMGExN2ViMmRjYjdmIGxlZ2FjeS10cnVuaworMTIwOTcgNTRhYWZlNDJjMGMzZjIwMWVjZjY4NWU3NzJiZjY0YzRmZDE2YjhkYyBsZWdhY3ktdHJ1bmsKKzEyMDk4IDMwNzZmZmYzMDUzNWYyZDBiNWFiOWY0ZjYwNjU1OGVjNjE4MTE0YmQgbGVnYWN5LXRydW5rCisxMjA5OSBmY2JmMjIyZTY4OTgxYWE2ZjQ2ZGVjZjM5NDRiNDEwNjNhZDUwNWNjIGxlZ2FjeS10cnVuaworMTIxMDAgMGYzZjllMzY2MzU2YzdiODExODg1YjIzM2I4ZDM3YzgxMTMzNWJmYSBsZWdhY3ktdHJ1bmsKKzEyMTAxIGQ3OTg2YjRiOTEwMDljMGEyMmMxNDIzMzljYjBjMWNhMjU5YzNlOTYgbGVnYWN5LXRydW5rCisxMjEwMiBjNGUyZGE0Nzc5NDkyOWNlMDVlMGFmYTM4YzQxODYyMmM4MjNkZmIxIGxlZ2FjeS10cnVuaworMTIxMDMgMWRjMGVmMjRiMTVkMzIwMmUyMjk5MWI0MTViOTYwMTY4YmE5ZDMwYSBsZWdhY3ktdHJ1bmsKKzEyMTA0IDZiNTlmOWFiNWRiMWE1MTM4NDE5MmI2MGI0ZWIwZjljYzU0ODI0OTIgbGVnYWN5LXRydW5rCisxMjEwNSBjYjllM2YwMGQ2YjY1NDc0ZGZlODAzYTcyMDc1ZTZhODc0ODljN2E4IGxlZ2FjeS10cnVuaworMTIxMDYgODQ4Mzk1M2E5MjQ4M2Q3ZWI5NTA0MzFlNWQ0MTQ1NTAxNjY0NzE4YiBsZWdhY3ktdHJ1bmsKKzEyMTA3IDVhMzZiYWQxZDI0ODliODdhYmQ3N2ExY2JjMjIxOTllY2RjNTlmZjYgbGVnYWN5LXRydW5rCisxMjEwOCBjMWY5ODg1N2NjNWJiN2Y2MDc5MDJkODM1NzJlZjVjMzk5ODI3MDYwIGxlZ2FjeS10cnVuaworMTIxMDkgMjY3OGRiZjRhZDY5YTMzMGQ2ZTRlYWUzYTFlZDQwZTJiNjMxMTJiOCBsZWdhY3ktdHJ1bmsKKzEyMTEwIDU3MGZlZDRhYjhkYWY2ZmM5N2I2NDUxNGEzZDllNDcxNmU5MDQ0YzQgbGVnYWN5LXRydW5rCisxMjExMSBhYTg4Y2ZmYzM1YWI5NGEzMmE4MWU5YTE5NDdlMjcwMTNmM2U5OGNiIGxlZ2FjeS10cnVuaworMTIxMTIgNTQyNmJlZjg5ZWMzMzhkMDRkOGZmZGQzNDYxODJiMjQ3MGZmMWMzZCBsZWdhY3ktdHJ1bmsKKzEyMTEzIGNlNzljMGU3NGY2ZmUxZjI5MGJlNDhmNmZmZTkyOGZlZWExNGNjYzUgbGVnYWN5LXRydW5rCisxMjExNCBjMDM3ODdlYzk4MTFjOTg2YjU4NmEwZmY2ZWY5ZjJlNGNmYzE5OGRlIGxlZ2FjeS10cnVuaworMTIxMTUgOWFiZWU2M2M2YmFiM2M0NmQ3ZjZiNmJlNDA4NmMyZTQ4ZWIyOGFhMiBsZWdhY3ktdHJ1bmsKKzEyMTE2IGMxMmZlZTRjZTM2M2Q4ZjMxYjBkZjNmMGJiNzdmYWQ4ZTM3ZDdkYTEgbGVnYWN5LXRydW5rCisxMjExNyA5OTFiZDM1M2NmZWJmYmQ3YWI2NDllMmY5M2IzNTUwNzM0YjcxODI0IGxlZ2FjeS10cnVuaworMTIxMTggOTBmZGIzNzc2NGEyMmIxMDZiNGY1MjczN2MzZTg0NjhmZTZhZGRiMyBsZWdhY3ktdHJ1bmsKKzEyMTE5IDE3OWZiNjNiMTU1NDc0NzNiYjNkYWEwOGJjMmM3MjE4MWEwYzllYjggbGVnYWN5LXRydW5rCisxMjEyMCAwN2VkMzhjMjk2ZWU4Zjg1Yjg5ZGY3YWI4NTAwYjA5MGYyMTMwNGZmIGxlZ2FjeS10cnVuaworMTIxMjEgNTY3MmY1ZjFkYjQ2ODRkMWE3NjliODJlZjI3OWRlOGIwY2M2NDRlNyBsZWdhY3ktdHJ1bmsKKzEyMTIyIGZhOGY5ZmUwYTMzZDk4NTE1YWNhNDQ4OGVmNzNlNTE4MjEyMTc4M2QgbGVnYWN5LXRydW5rCisxMjEyMyBiMmZkZDcxY2EwMDZjYjQ2M2UzN2YyOGRmYjAzOWM1ZjMwOTdjYzI2IGxlZ2FjeS10cnVuaworMTIxMjQgMWZlNDgwMDlkOGVhOGNhNWI3NjUxYzg5YmU3OGNkM2EyZWIxY2E4ZiBsZWdhY3ktdHJ1bmsKKzEyMTI1IDk4YTZmYzY4NzdhZWUyYzIxOTczYWMwMTU4YmE0YmNkMzFmMmZiNmYgbGVnYWN5LXRydW5rCisxMjEyNiA0ZjUwYzcwNDU0YTliMmQxMjBjYWQ2YzRkNjNhYjRmZWVmOTgzZDk1IGxlZ2FjeS10cnVuaworMTIxMjcgODIwMzBjYTBmYTJlYTAwYzU0ZjVjNGRlNzk1ZTY2NDdmY2E5NjNhNSBsZWdhY3ktdHJ1bmsKKzEyMTI4IGNhMjEyODRlODc1ZGNmNTdlMDdmNzkzYTQ4MjhlMTZmYTliYzkyMzMgbGVnYWN5LXRydW5rCisxMjEyOSBkNjY3MTA5MzlhMzI1NDg3ZjRiMjUyNTEzZTFkNmNiMDM3ZTI4YTlkIGxlZ2FjeS10cnVuaworMTIxMzAgMmIwMGJiNTA4ODAzNmE0MDU4OGUyMmYzNGFhZjc0MzMyNGM0MzE5YSBsZWdhY3ktdHJ1bmsKKzEyMTMxIGFjNTM0NTgxNGJhMDkzM2MzZDVhOTJmMmUzYmQ4MjU4Mjg2YTIzMzEgbGVnYWN5LXRydW5rCisxMjEzMiBlMmRjM2NiMDhjNjBhN2Y5NjA1YWQwNjliM2I5MmFiYmJiZTYyOTgyIGxlZ2FjeS10cnVuaworMTIxMzMgODU4NmQ5MTFmYjM5MDIzOGIyM2U3ZWRhZTdkMjkzYzc5MjhmYWQ0ZCBsZWdhY3ktdHJ1bmsKKzEyMTM0IDQ0MjY3Yjg4ZmI1OTQxMGVmNjhlNDcxNjY3OWM1M2I4NDM0OGM5ZGMgbGVnYWN5LXRydW5rCisxMjEzNSBlNTg5NTdmMDZhMTUzODRlMmQ3ZGMyNjVkMGU1OGQxN2QyNTY5NDAxIGxlZ2FjeS10cnVuaworMTIxMzYgZjVlNTg2YjVmNzkwMDA0NWFhNDNlNzM0YTJmNjdkNmE0NTMyMjQzNSBsZWdhY3ktdHJ1bmsKKzEyMTM3IGY5Y2M1MjM3NGM1MmMzZWNlZTJjODkyZTdjOTJjZGYwMDMwYmY5MmYgbGVnYWN5LXRydW5rCisxMjEzOCBkYTFkZDNlNTRiN2FlMjRhMjYyM2QwY2Q1ZmRmMDE5ZjljYmFmZWRhIGxlZ2FjeS10cnVuaworMTIxMzkgNzJhMmZiYjBlMWY5MDAzOGRjMDhmYzUxYmM4NGUyODEzNGVlMWU4ZSBsZWdhY3ktdHJ1bmsKKzEyMTQwIGQxNTJhZGYzZjA5NGNiMjJiOTI4MjVhOTA0NjMxNjZiMDZkMjQyY2YgbGVnYWN5LXRydW5rCisxMjE0MSAwODM3OWM3ZjVmYTliMzAxZjIxZWYwYWIyZmEzODM2NjYxNDhmNzE5IGxlZ2FjeS10cnVuaworMTIxNDIgYzJlYzIxYzY1ZDA1MDA1ZDYwNzZhNWM1NzU2YTY5Zjc0MDlhOTM1MiBsZWdhY3ktdHJ1bmsKKzEyMTQzIDJjZDU4YTYxYjA1MTYwNzNjNDhjOTMwNTY3YmZiYzlmOGFjNGIzNDAgbGVnYWN5LXRydW5rCisxMjE0NCA0ZTE1ZDE3NWVlZDBjOWJiNDkxZjM1YjY5NTdlODI3Zjg1ZmI3OTJkIGxlZ2FjeS10cnVuaworMTIxNDUgNDc0MmM1MjlkOWM4ZTFjOWQ2NjE3Y2UyOWNlMzcyMWNlZGFlNGMxZSBsZWdhY3ktdHJ1bmsKKzEyMTQ2IGM0ZWFlZjg5YTRhNzVkOTgwYWNkNTI1Zjg3OGFmZmNjYTM2OGE0NDQgbGVnYWN5LXRydW5rCisxMjE0NyBjNjZiMGQzOWE3MzZiZTYwZTdlZWJmNWU2YTY5ZmQ3MDg5YjM1M2ZhIGxlZ2FjeS10cnVuaworMTIxNDggNDcwMTJjMTNlZmU0N2I0ZGViYjk3MDgxMjk4YWVjNTdlY2NjOTZlYyBsZWdhY3ktdHJ1bmsKKzEyMTQ5IGI0Y2RhMzk0MGFjM2ZjOTdmNGY2YWViYTgxMzUxZGU3NWMwZDhkNTUgbGVnYWN5LXRydW5rCisxMjE1MCBiNzdkMzczOTkzNDM3YTk5Y2RlODlkMGQ3YzdiZWNiMGQ2ZjhkZGYyIGxlZ2FjeS10cnVuaworMTIxNTEgZTdlZTE4ODRmZDU0OTFjZmU4ZWRlNTljYmUyZGNlMDFhMjBkNTdkNyBsZWdhY3ktdHJ1bmsKKzEyMTUyIDY5NDFmNDNkM2JiODA5YzcwNjEwMjRhOWYzZjBkNjQ0YmNiYjIxNzAgbGVnYWN5LXRydW5rCisxMjE1MyA5MTczNTdjMTI1NTIyNmM5Zjg4YmRlZGI1NWUyZDZkY2U0M2E1MWM2IGxlZ2FjeS10cnVuaworMTIxNTQgYmZjZTczZDM1NzZjMzIwOGNkYzEyYzA4NjViODAxMTM5Y2U4YWU2YyBsZWdhY3ktdHJ1bmsKKzEyMTU1IGFkNDk3Y2I1ZDJkYzJmOTg5YTc0YzEzMWZmMTJiOTg5ODBlZThlNjcgbGVnYWN5LXRydW5rCisxMjE1NiA3ZGRlNDUwMWY1M2FkYTM0ZDExZTYyMDIxZGVkMjU3YWVhODkxYjliIGxlZ2FjeS10cnVuaworMTIxNTcgMjMyMzdiY2I3NzRiZjJlZjYzZjllMmM3YzNjYTdlZjI2OWQ5MmNmNiBsZWdhY3ktdHJ1bmsKKzEyMTU4IDA0YjBhMGYyOWY2NWYzMGFhNTVkYzRjMDU1NTI3M2FmMDY3N2IwM2EgbGVnYWN5LXRydW5rCisxMjE1OSBhMjA2YzYxYTg5NTA5ZTVkNDFjMWQ3MWE1ZjcwMWMxYzA4ZmM0ZjFhIGxlZ2FjeS10cnVuaworMTIxNjAgNDgwOGE4YjU3YWYzYWJiZTc3NzRhMDViYmJjMGYxNDVjOTE4OTc1ZCBsZWdhY3ktdHJ1bmsKKzEyMTYxIDliYTdmNTBiODI1YWQwODUxYzM3Mzg2MDBiYWJlYjAzNTFlM2EyZmQgbGVnYWN5LXRydW5rCisxMjE2MiA0NDQ5NzAyYTA5NmE0ZmQ3NDdjNjkyOGE1OTY5NjgxNGRlNzQ4MTBkIGxlZ2FjeS10cnVuaworMTIxNjMgNGVlZTA2MWRhYzQ0Y2JjYjQ1ZjUzM2E1MTFiOWI4ZjY0YmM4N2Y4OCBsZWdhY3ktdHJ1bmsKKzEyMTY0IGUxMWQ3NTAwNWE1YTk2NjJjZjJlNDc3YjM1NTEzNzkwYWU1OTdjMDIgbGVnYWN5LXRydW5rCisxMjE2NSA5ZGEwMWU1OGEwYjU1YmE5OGYzNjRiMjE4MWYyOGJkYjNmNGNlMDBlIGxlZ2FjeS10cnVuaworMTIxNjYgOTE0ZjgzZTdmYTBhMDI4OTlhMzdmMjQ4NjBiNjJhYjE3YWQxMThkMCBsZWdhY3ktdHJ1bmsKKzEyMTY3IDQwODU4YWIyMzU2ODIxMzlkYTQ3OWMxZTM3NTQ3MjgxZjhkYTQ0YTcgbGVnYWN5LXRydW5rCisxMjE2OCAyNzJlY2NjNTczZTI0MDZhZmViOWVlZmNiYmRiZTZhMDBkMTJmZTVjIGxlZ2FjeS10cnVuaworMTIxNjkgMjE0ZjMwNDRkMThjMTBjZjcxZTljMDBlM2NmMWI2ZjMxZjFlZGFmNyBsZWdhY3ktdHJ1bmsKKzEyMTcwIDFkNDBiYzI1NzAzYTU3YzlkNGFlYmM3ZTgxZTBlOWJmOTgyNGM4MTcgbGVnYWN5LXRydW5rCisxMjE3MSBiNDg0M2EwN2Q1NzkxYzEzMDM2YjJlZjBjMmYwMjkyYmRiNjYwZmNhIGxlZ2FjeS10cnVuaworMTIxNzIgOTkxNmZjODViMjhhNTlmYjI0Zjc4YTgyOTg0MmRiYzBlNWE1NDc0NiBsZWdhY3ktdHJ1bmsKKzEyMTczIDUzNzY2ZmVkOWY4Y2I4YWVhMDIyNDM3YTMzNzkxNTE0NzNkZjBmOWIgbGVnYWN5LXRydW5rCisxMjE3NCBiNzgwNDlmZWZjZWIyOTdjNjY3MjBiMTk2ZjNiNzgzYTZlNzAwM2FkIGxlZ2FjeS10cnVuaworMTIxNzUgNWQ0ZjEzNDcxNTBlZGVhNDY1MmZhNzNkNTAyMWYwZDAwNjdhMzNhMiBsZWdhY3ktdHJ1bmsKKzEyMTc2IDAwZmVkNzY5ODBiYzdmNzI3ZWNhMjRiOTdkMzgyZTY1YjA4ODkyOWUgbGVnYWN5LXRydW5rCisxMjE3NyBmMzlhMTlhMTIyOWFmNmUxZTVlNjZmNTFlMzMwYzk1Y2ZlNjlkNmM5IGxlZ2FjeS10cnVuaworMTIxNzggODc3ZDIzYmQ1YmRjMmQzMDRmYTIxYzM0NWM5OWJkY2UxZmJmMzExZSBsZWdhY3ktdHJ1bmsKKzEyMTc5IDhiNjFlMTI3M2I0YmRhMzRhN2ZiODhiMmE3OTI3MWJiOGI4NTM1OWUgbGVnYWN5LXRydW5rCisxMjE4MCA2MTU0ZDJlNjg2MDMyODY2OWI0ZjY0NzY1MGM2MWExMzUyMzhhOWRjIGxlZ2FjeS10cnVuaworMTIxODEgNTM0NWZkMTNkZTNkOWQ3YTRmZjU5OTY2Nzg2MGE4OTUwZjZkNDlkMiBsZWdhY3ktdHJ1bmsKKzEyMTgyIDVhNmJkNDNlMmQ1YTc1NTQ0MGE4Y2NmMDc4Njc0NjhkOTNmMTFiMDYgbGVnYWN5LXRydW5rCisxMjE4MyAxMDk1NWMzOWMwZTdiNmJlNjhkNjRjZThiMWVmOTExNDY1NDcwZGVhIGxlZ2FjeS10cnVuaworMTIxODQgOTNjYjFhYTI0ZjdkMTA2OTczOGJmZjkzZWU4NThkNmNiNDM4MmQ0MiBsZWdhY3ktdHJ1bmsKKzEyMTg1IGIwYjgxNWVlZWQyYzQ5MWE4ZTU4ZWEwOWJkZmMyYjIxMTJlMzk2N2QgbGVnYWN5LXRydW5rCisxMjE4NiBiODgzZWYzYjJkMTk2YjJkOWM4ZTBiNzg3MDRjOTUxMzIwOWQyMzFjIGxlZ2FjeS10cnVuaworMTIxODcgZWNkMTE1NDJlYWJlNTE5MzkwMzlkNzhjMjRiMjAzN2ExYTAzMjcxOSBsZWdhY3ktdHJ1bmsKKzEyMTg4IDBhMDQzNGVmZWJjZmViY2E5MGYwNTYwNTYyYmI4NjQ3NTgzNjk5MjUgbGVnYWN5LXRydW5rCisxMjE4OSAzMTQ4OTc5OWM4YzYwYTMwOTI1NTU4YmE0OWExNmM2NzgzMjM3ZWFlIGxlZ2FjeS10cnVuaworMTIxOTAgOGQzYzJhODA4MzRjYzEwYmYxMjE4N2Y1MDFjNWRmM2FiYjExZWQ3OCBsZWdhY3ktdHJ1bmsKKzEyMTkxIDUzODljNmUzMGU1NGIxMzA3NTBmMGY4MWY2OTMzMDM5NGMzYjVhYzEgbGVnYWN5LXRydW5rCisxMjE5MiAyNjM2NTVjNmI2NTY3MTgwZDdiOGUzYWExODRjZTBkY2YxNjA5NzkxIGxlZ2FjeS10cnVuaworMTIxOTMgNjM3MzI1MjlmNmRmN2U5NzVmNzE0N2Q4YWZiNWQ0YmE3MWJiMWY0MCBsZWdhY3ktdHJ1bmsKKzEyMTk0IDdhNGVlZWQ1NGIyNDUxNGUwYjExMDZlZWQ2MGZkMWZlNTdiNTFhMGIgbGVnYWN5LXRydW5rCisxMjE5NSAyMmYzYThkODAzYTUxN2VjMmQ5NjFlNTEyMzE4OTdjYzU4OGY3NjI5IGxlZ2FjeS10cnVuaworMTIxOTYgOTNjNjZhYzZhZjE4OTZkMjZhZDRhOWM2ZGQ5MDIyYzAyZGEwODdmYiBsZWdhY3ktdHJ1bmsKKzEyMTk3IGY3ZTg2Njg0Y2Q0YzJkMzY0MmZhNGI3OWU0MDcxMTY3YWNkYTFiMzkgbGVnYWN5LXRydW5rCisxMjE5OCA5NzNjMjFkZjJkNjAxYjlkZjE3ZjE5YjEyMjBmNWZkMWY1OTAxOTEyIGxlZ2FjeS10cnVuaworMTIxOTkgOTcwMWM1MGM2OTQ2MDczOGE0NzgzMDZhMGM4NmFjMWJkNTcyZWM3NCBsZWdhY3ktdHJ1bmsKKzEyMjAwIDU1NTkwMjUxY2Y1MjczYjY1YjEzY2JkZTU5Y2ZkNjZmN2E5OTA2NDEgbGVnYWN5LXRydW5rCisxMjIwMSA2YmE3YmQ1NjNlM2JmN2ZhNmFlZmJjN2FmY2ZmNjlhNjM3YTEwNWU1IGxlZ2FjeS10cnVuaworMTIyMDIgYjVkMWExNjI1Y2Q1ZGI0ZmZkYzBkMmZhY2FjZjgyODYzMTBjNzM3NSBsZWdhY3ktdHJ1bmsKKzEyMjAzIDQzOTQyMWNkYTg5ZWE3NmQ2NzNjMDBjZmZiY2NmNGY0OTNlOGMwMzQgbGVnYWN5LXRydW5rCisxMjIwNCBjMjJkYzMwMWIzNmE4MWUyYWRkYTczNDRhNTRjYTA0Y2Q1YTJjOGZjIGxlZ2FjeS10cnVuaworMTIyMDUgMTI3Nzk0NjA1NGU4YzZlMTYyYWVjZjFlYTMxNDY0ZGFkZWZjYjRlZSBsZWdhY3ktdHJ1bmsKKzEyMjA2IGUwYTRmYjBhYmI3NjlkZGUxODI1MjNhMzExZGMzOTZhZGZjNzExY2MgbGVnYWN5LXRydW5rCisxMjIwNyBmM2Y2MDIzZmViNzg4ZDkxYTgxOTU3NjE0OTU4ZDEzYzY3ZDFjNzczIGxlZ2FjeS10cnVuaworMTIyMDggZDdkZDcxZDBkMTgzMWE2OGYxM2FiMmFjOWNkMDE3MGJiZmY4Zjg5MyBsZWdhY3ktdHJ1bmsKKzEyMjA5IGU3OGJkY2NkMjI0ZmZjOTFlZGU4NWY4N2Y4ZGZjYjQ0OTRkNzM3ODAgbGVnYWN5LXRydW5rCisxMjIxMCAyYmNkZTM0NzQ2ZDFjZjBiZDQxYzQ5NjZmNzFiMTMzYzliNDAxNGFiIGxlZ2FjeS10cnVuaworMTIyMTEgYTNjOWNlMjk4NWRlZTk1MWM4YjIwZWI4ODRlNjk2Y2FiY2U1ZjQzMiBsZWdhY3ktdHJ1bmsKKzEyMjExIGYwOGM3YTJhNTZmODA3NDFmNWYxOTJmZDBlYmUwYjA5NjdhMjAzY2YgbGVnYWN5LXRydW5rCisxMjIxMyBjZjY1NGVkNThmZjE2YTA4ZGFkYWI4YjQ4NjY3NmY4YWIyN2IzZjgzIGxlZ2FjeS10cnVuaworMTIyMTQgZDFkYjdmNmFiNzUzYzlmMzQ1MjlkODQ5N2Q2MGU0MDIzOGRmNjQ2ZCBsZWdhY3ktdHJ1bmsKKzEyMjE1IDhiMjViYTI0OTQ0NjUyYTYwYmYyMjcyN2YwYmJmYzVlYTNiODYyOGYgbGVnYWN5LXRydW5rCisxMjIxNiAyYTg5NTQzZGQzY2FiMGU4NGM4ZGY2ZDhlNjA3MWRjMDFlODE1ZTc0IGxlZ2FjeS10cnVuaworMTIyMTcgNDgyZTYzZDc5YzlkZmVlNGE5ZWQzOTEzMzk0ZWQ3YTE2ODU1MjVjYyBsZWdhY3ktdHJ1bmsKKzEyMjE4IDM1MTlkZTQ0MGY4OTJjMmM3ZTE1OTY1YTNjZDVlNzc5YTI5NWY1M2EgbGVnYWN5LXRydW5rCisxMjIxOSAyNGNhNjQxMzQ1OTRhZDdmMzM2Y2VmMWM3MWY0ZWExYThmYWRiMDZlIGxlZ2FjeS10cnVuaworMTIyMjAgNzJiNzYxYjk0OGU3ZTlhYjc5MWNjMDNlODljMmVlNzc4ZGVmMWM4MiBsZWdhY3ktdHJ1bmsKKzEyMjIxIDM5NTVmNzg3ZTlhMTFjMTRiYzQ0YWU2ZTUzNDI5YTBlOThjMzU1MGIgbGVnYWN5LXRydW5rCisxMjIyMiAwNGU0NGM2MDc2ZThmMmYyZjM1MDkyMjk0NWY4NmRmMTdjZjY5NmFlIGxlZ2FjeS10cnVuaworMTIyMjMgNTZmMzhiZjNhZjlmMmQ2MzM4MjQwOWI2YjE2MmU5ZDYwMWI0YzIzMiBsZWdhY3ktdHJ1bmsKKzEyMjI0IDRiMWI5NDMyYjI2YmZkOGY2NzllZGI3NDEzZTgyYTllM2JiMzA3ZjYgbGVnYWN5LXRydW5rCisxMjIyNSA0MzM2YTE5MDUwNWI2NmUyNjMyY2RhNWExZWI0N2YzMzlkZGVjYWQ0IGxlZ2FjeS10cnVuaworMTIyMjYgZWFhYjhmZWI3ZmMwNzY0ZDg5Y2MyYzQ1ZjAzMWUwYzVjOGVkNGU3NyBsZWdhY3ktdHJ1bmsKKzEyMjI3IDJjY2YwNDVmNWEyMTFmMTAxNDAxNmMyMDgzZDljNjE2YWE3YmRiOTIgbGVnYWN5LXRydW5rCisxMjIyOCAyNjQ2ODkzY2I0OTkzNzVhYWQwMGNmOWVhNTY4ZjdiMWFmMGEwZTk5IGxlZ2FjeS10cnVuaworMTIyMjkgNmYxY2E5ZGM5NWRhYjE3NTFkNDViNmVkN2RjNTY2NDQ4MDY0YTkwNyBsZWdhY3ktdHJ1bmsKKzEyMjMwIDcyZjUwNjM2ZGZlYTFlNDU4M2RjY2UzN2I1ZGZmZDY5NDdjNTQ4MTggbGVnYWN5LXRydW5rCisxMjIzMSAxMGFiMmM1ZmJkOGVlN2MwZDdmOWFlMDE5NWM5ZjYwZThhNmE2N2VkIGxlZ2FjeS10cnVuaworMTIyMzIgODVkNWI1ZWNlZDllYTk5ODYzMzkwZTVhNTNmMTgyZTNkMDE4NjBjOSBsZWdhY3ktdHJ1bmsKKzEyMjMzIDQ3ZDJlNGY3MTE0NzhkZDVmMGUwNzU3ZmM0NDViN2Q0ZmVhNWUwNmUgbGVnYWN5LXRydW5rCisxMjIzNCAyZTk5MzFmNDRlZjRmNzg2MmNiMDg2NDM1YmVjMjI2YWIzZDdkNDBmIGxlZ2FjeS10cnVuaworMTIyMzUgNDdiYmQwYmE4ZThhMDU5ZjA5YTZhMTE2YjNkMWFiM2YxYmNhN2RhYSBsZWdhY3ktdHJ1bmsKKzEyMjM2IDM0MTVkMTNmOGJjOGMwM2QwOWFkNzM1NzlkOGIzZThjM2JlMWM5NTggbGVnYWN5LXRydW5rCisxMjIzNyA5ZmNjOTAyZDc0MGZhYWVhOTRmOTI1MDNkM2M3ODk5YWUwMGU5MDE0IGxlZ2FjeS10cnVuaworMTIyMzggZTZiNjYyYTliNzA5NjExODliNzRjNjdlNDk2NzIzMTM3OTE1Y2Y2MyBsZWdhY3ktdHJ1bmsKKzEyMjM5IGUwNmVmODdiMzRjYzRhODg1ODY0ZWQ3NjA2MGZjMThjM2E0YWM2OWEgbGVnYWN5LXRydW5rCisxMjI0MCAwNWZiNGQ5NjZjNzNmZmFiMGRhYWI2MDg5NzE5Njk3MmJjZWEwMzM2IGxlZ2FjeS10cnVuaworMTIyNDEgMjUwN2UxNWVjYTZiOTBjNmJlZjJhMmVkOTViMWQ5ZWUxYzQ2ZTk3YSBsZWdhY3ktdHJ1bmsKKzEyMjQyIDA5OTVhN2E2Mzc4MmJiZDBhNGZmMDY3NTkwMTJiOGJiZjFlYzQ0ZjEgbGVnYWN5LXRydW5rCisxMjI0MyA4NWFiMjg2NDQyMDE0MTQxMTM2YjY1MDI0MzE2YzkwMzhkMDg4YjNlIGxlZ2FjeS10cnVuaworMTIyNDQgNmZjNThkNzlkYWM1ZGM1ZDE2ZTJlMDhkOGI2MzEyMThmNDdlOWQxOCBsZWdhY3ktdHJ1bmsKKzEyMjQ1IDkzNDJjNjBlYWFjMDc1YWQyMzgwMzdkYjgzNjE4MzY5ZTc0OGQ4NTIgbGVnYWN5LXRydW5rCisxMjI0NiBkNjMyOGQ3NGI1ODBlZmQ5MDQ1Mjc2ZWQ2MDY0ZDM4ZjEwNGM0MTU3IGxlZ2FjeS10cnVuaworMTIyNDcgZmNlNmMxMWM4MGZhMWRlOWFiNDFkMmQ0OWUxNDk4MTBjMmQ0MDcwZSBsZWdhY3ktdHJ1bmsKKzEyMjQ4IDk2N2FjNWU4OTA3YWNhOTRjNDYyMDZkNTU3ZjE2MDQzMjAzZDM2MDQgbGVnYWN5LXRydW5rCisxMjI0OSA3Y2ViOTJiYTg2Zjc2NDllYzE1NWJkMjE3OGM4NjkxMjcxYjE2NTM5IGxlZ2FjeS10cnVuaworMTIyNTAgMDhhOTM3Mzg2MGU4MzZiMWZlNmM5YjRlMzRjZDcxMjBhZWMyMjJmOSBsZWdhY3ktdHJ1bmsKKzEyMjUxIGU0NWRmNmY0NTYwNGI5NTMwY2M3NDZkMmVjYzkwOTQxMzVkNzcyZmIgbGVnYWN5LXRydW5rCisxMjI1MiA4OGFmOGE0Mjg1N2QzMWYyYjZjMjBiMDUzZjk2NGQ4Y2U0YmRlNmExIGxlZ2FjeS10cnVuaworMTIyNTMgNzY2M2NmOTViZDBlYTg2MjY4MDI1ZGVhNmQ0ZTY2ZWZlNmI1NjM5ZSBsZWdhY3ktdHJ1bmsKKzEyMjU0IDMwZjM2MzBiNzdjYTk5NDVjZjM0MzVmZDk1OTI0ZjMzNjU0MjE1ODIgbGVnYWN5LXRydW5rCisxMjI1NSA1ODZkMWIwODYxNGUyNjE3ZGMzMGY4ZmM1OGFhYjU5MmYxNzg3ZTViIGxlZ2FjeS10cnVuaworMTIyNTYgYzcwOGQ3MGIxMzllMjE1ZTZjZmIwZGU2YWFlZmJkYjI1NWU0OWI4MSBsZWdhY3ktdHJ1bmsKKzEyMjU3IGNkMmUwNWRhZTRjMjk1ZmE0ZmFjN2JhMTVjMDU3YjZlZTRlMDQ5MDYgbGVnYWN5LXRydW5rCisxMjI1OCA5ZTZmNWJhYzE1YWMyNGEzYTE3MGRhNTRlZGIwNjM1N2M5MWNhMzI1IGxlZ2FjeS10cnVuaworMTIyNTkgM2U3YzQzNDUzZTVlOTk5YzcxMTE1YmZjMmRkNDExYWM1Mzg3ZmExYyBsZWdhY3ktdHJ1bmsKKzEyMjYwIGNmYjkwZGIzOTk1OGIyNGEzZGQ2OGE0YjVhNTk5MzMwODY1OWU1ZjUgbGVnYWN5LXRydW5rCisxMjI2MSBlZDUyM2VhMDczZGJhMDQ5ZjhhZmNmYzEwMTQ0NGE2YzE5YzczOGI5IGxlZ2FjeS10cnVuaworMTIyNjIgMTZjOWE3MTQ4ODBmYzAwZjA4YjYyNTdmZTcxNGRkZmQxZTA5MjdjYyBsZWdhY3ktdHJ1bmsKKzEyMjYzIGY3NTUyZGQyMzZiMGFkNjI3YmZmYjE4NjEzMTNjYzI3ZTVjZGZiM2QgbGVnYWN5LXRydW5rCisxMjI2NCA2MzFkOTZkM2NmNjYwZmVmMzAwYjdkMTA5MTRjMmIyN2QwYWM0NTdiIGxlZ2FjeS10cnVuaworMTIyNjUgMGQ4ODczMzQwODQ2MjI1NmVhNjUyMjQwZWM0ZmQzMjllNmExZmQ1MSBsZWdhY3ktdHJ1bmsKKzEyMjY2IDYxZGRlN2ViZmE5NTE2ODhhODRiMDU5MDBhMDU2MjNiZjk2YzNiZmQgbGVnYWN5LXRydW5rCisxMjI2NyA0YTA3ZDY5ODY0ZjU3NTEyMjIxZjI3NWZiYjFhNjFkYzE2OWVkMTU5IGxlZ2FjeS10cnVuaworMTIyNjggZTE1MDhmNzJjNjEwYmFkMjEwNWJkZmI4MzM4OWQ2YTBhNmFiYzljOCBsZWdhY3ktdHJ1bmsKKzEyMjY5IDg1NDdkMjc3YTIyZjk2MGM1ZGJjOThiYjY2MjljYTRjZjMxOTFiNGMgbGVnYWN5LXRydW5rCisxMjI3MCBlYWY5M2Q1YmI0NmNmNjViOTljZTg2NDJlNmM1MjQzZjJhOTExYjM0IGxlZ2FjeS10cnVuaworMTIyNzEgODgxMzYyN2FhYzQ2NmEwMWZkMTk2YzVhNTlhNjNkMWFjZjljZTQwYSBsZWdhY3ktdHJ1bmsKKzEyMjcyIGUyMDhiMjc0ZWI4MDhjNmJkM2UxNDI1ZTUyODRmNTc2OGYzZDYzNjMgbGVnYWN5LXRydW5rCisxMjI3MyA3NzBiNDBmZWQ1ZjdhYjEwNmM2NTFhN2JhZTBiYTkzOWNjYjkzMWZlIGxlZ2FjeS10cnVuaworMTIyNzQgYjExNmFmYjgxNzMyOGVjMmZkZDBkMDgzOGFkYmU2NGZjM2UwODE1MSBsZWdhY3ktdHJ1bmsKKzEyMjc1IDc3MGQ4OTRlMjBiZDhkMjNjOWU3M2Y1ZjA0ZWZkM2U0OWQ1N2ZjZjcgbGVnYWN5LXRydW5rCisxMjI3NiA4YjA4NjM0OWE0ODhjYjFhMWJlYWQ2NGZmN2M5MGU0YjAzMjhkMzk3IGxlZ2FjeS10cnVuaworMTIyNzcgZGE5NDQ2NzhiMDBlMGI4ZjMzMWJjOWNjYzM1MTEyY2EzNTQ5MmU2MSBsZWdhY3ktdHJ1bmsKKzEyMjc4IGM0NjkyMDQ2YjQ4MjAxYmZmOGNlYzMyMzI5YWNhMzMyZDhkYmRiMDMgbGVnYWN5LXRydW5rCisxMjI3OSA0YjE4ZjhlYWExNmIyYmY4YmIzODQ3NzAxMTRhZjQxY2NmMGNjMjNhIGxlZ2FjeS10cnVuaworMTIyODAgYzkxY2U0OWI0MDc1MDg5YWQxZGM3ZGUyYmUxZGMyODNlYzliM2U5ZiBsZWdhY3ktdHJ1bmsKKzEyMjgxIDY2ODBmYWNiNGQ1YjVlMjdiOWRlOTk5NmJjN2Q4ZGE5Y2I5YTUzMjAgbGVnYWN5LXRydW5rCisxMjI4MiBiZTI0YjViOTBkZWNkNjNkYTVjMDVhYjhjNTNkYmRlYzNlNGY4ZWJmIGxlZ2FjeS10cnVuaworMTIyODMgOGRiYTA4MjIzZGViYTE2NGYwNGE5OGZmNWZiYTg1ZTA4YjRiMTI1ZSBsZWdhY3ktdHJ1bmsKKzEyMjg0IGZhY2I0NTdiNGQzMmVkNmUyMjRmNzc3ODM2YTQzNTEwODE3MzY0MTkgbGVnYWN5LXRydW5rCisxMjI4NSA0MGY3MjNhYzI2ZTgyODA3Mzc0NzMzYjRjYjMxMjVmOTIwZDJiOGM3IGxlZ2FjeS10cnVuaworMTIyODYgMWJlYWY5MTc5MTI1YjI0YWY5OWIxMjQzYTkyN2VjYTBmNzgzN2NmNyBsZWdhY3ktdHJ1bmsKKzEyMjg3IGVjYjkxMmJlNDMxOGE2M2M1MjNlNDA5Zjc5YzllYmJmZDIxOTUzNWIgbGVnYWN5LXRydW5rCisxMjI4OCAwOGRmYmVlMGEzMmExMzk3ZmIxYjFlYTZkNWVkMzEyOTViNGIxYzI3IGxlZ2FjeS10cnVuaworMTIyODkgN2NkY2RmODY4NmIzYzkxYjdkMDNmOWU4NjEzNzVkNjA1NmZlMzRjMCBsZWdhY3ktdHJ1bmsKKzEyMjkwIDllNjExNjZlY2RkODFkNWIwODA5NzA1NzAwY2IxYmZmMzdjODY1MzUgbGVnYWN5LXRydW5rCisxMjI5MSBmZTcwMTk2OWJjMmNmNmI3OTE1ZDU5YWNhNzU0ZDIyNDRhNDk0NmJhIGxlZ2FjeS10cnVuaworMTIyOTIgNzM3ZDA1YTliYjVlOGE5YWY5NGNkODU2OWVjZDAyYjY5NzFiZTA0ZCBsZWdhY3ktdHJ1bmsKKzEyMjkzIDIwOWVlZDZhMmVmNjU4ZWQzOGNiZTJjMjFhZjZhZjBmNTFjNjI4MGUgbGVnYWN5LXRydW5rCisxMjI5NCA4MzZmOTQwOGM5NTY1YWE1OWM4MDE4ZDUyOWRmNWNjMjg5M2QzY2I1IGxlZ2FjeS10cnVuaworMTIyOTUgN2VmNWExNTIwYWU1M2QwMTE1ZWZjN2M4Y2RhMjQyYzIxZmQ2NjJiMSBsZWdhY3ktdHJ1bmsKKzEyMjk2IGRiMjk4MmZiNjNjMDRkNWQ5NDMzOTNmNGViZGJmODc2ZjJiYjRlNmIgbGVnYWN5LXRydW5rCisxMjI5NyA5Y2ZjNTNlNTk5NmUwYWEwYzhjNWE0NjlmYjg5ZjFhMGM2MDU5MzZlIGxlZ2FjeS10cnVuaworMTIyOTggOWQwMmFmYTAyMmM1MmZkNzRlOTQ0YTU3M2E3NDliMmZmZWViYmI3YSBsZWdhY3ktdHJ1bmsKKzEyMjk5IGMxZWFiMWRjNzUzNjNhMzQxMTkxYmQ1NjQ4NDEwMDYyZjQ3OTYzOWQgbGVnYWN5LXRydW5rCisxMjMwMCA5MjhjOTNkMmMxMDcxZGI5ZDBjNmRkZWJiMzA3NWQ1ZTExZWRjNjI4IGxlZ2FjeS10cnVuaworMTIzMDEgNTY2OGY4YTNhNDMwNGZiYzEwYTQ4ZTNkMTEyNjgxODIxYzVmY2U0ZCBsZWdhY3ktdHJ1bmsKKzEyMzAyIDgxYjNlNmNhNGEyOWFmYmIxMzhiNjI0YzcxOWEzZjE4MzliZGMxOGEgbGVnYWN5LXRydW5rCisxMjMwMyAxMDI3MDExNWNkNGI4MDVjZmYzN2UxMzY1MjM1OWM1YmEwOTYwOTc4IGxlZ2FjeS10cnVuaworMTIzMDQgOGQ2Zjg0YzU5NDhjMjg1MWEwMDBkZjUzMGY2NzNkNzVhZTFkYTllOSBsZWdhY3ktdHJ1bmsKKzEyMzA1IGE5YWFjMDAyZTg0MzViYTJiNjZhOWFkZDZiYjAzN2IyZjgwYWVjYmUgbGVnYWN5LXRydW5rCisxMjMwNiA0MTViOTg0MTE3MDdmMTIyMmZmMmFjMzI2MDJjNDk4ODA1MjdhYmU5IGxlZ2FjeS10cnVuaworMTIzMDcgMGJmYWZmMTFjNTczOTk3NmJmYWE0NzEyOTUyMDJjNTM2NDgzYjNlMSBsZWdhY3ktdHJ1bmsKKzEyMzA4IDkzZDcwMzA4YmUxNzFiYjU4YTQ4YTlkOWZkM2ZhY2Y1MzNjMDAzNWYgbGVnYWN5LXRydW5rCisxMjMwOSBmOTgxYzlkMzZjOGFmODU2NTM1NjU0OWZlMGFmYjNjZDc1OTI2YjA4IGxlZ2FjeS10cnVuaworMTIzMTAgMWVhZWJhZWFhMjJiOWEyYTE2MDk0YjdmYjViODRkNTBlYWQxMDVkMSBsZWdhY3ktdHJ1bmsKKzEyMzExIDMwZWU4NjE3MjE2OGEzMWMxM2I0NGQzZGM4ODkzZmU5NDQ0NDhkYjYgbGVnYWN5LXRydW5rCisxMjMxMiA4NzAxMDlhNDRlMGViZTE4YTBiYjZiN2VhNmY1MDA4ZGYyNzY1YzBjIGxlZ2FjeS10cnVuaworMTIzMTMgNGQwNDQwMDU2MTFlNDBmZWMzNjhhMzljYTM5YjAwNDEzZGVhOTVkMiBsZWdhY3ktdHJ1bmsKKzEyMzE0IDQwMTBlNWQyNDNkNjZiOGIyMWVhYjUxNDczMDMzYWNkYjc2ZjdhYjIgbGVnYWN5LXRydW5rCisxMjMxNSAxNDIwZjg0MDA5MjQ5Yjg2ZDExMzY4ZGU0ZTRjYmJkMjUzZDg3OGNlIGxlZ2FjeS10cnVuaworMTIzMTYgNjYzNzM3MjdmYWM4NWIyODBiZTViZWQ1ZGNlZWU5MzMyNjliOWJjYSBsZWdhY3ktdHJ1bmsKKzEyMzE3IGEzYjI1MjVjOTM3MDQwNDI5OTEzOTY4MWJkNTNmZWQwNTczOGM1NjAgbGVnYWN5LXRydW5rCisxMjMxOCBiZDFjZTQxMjBlNmY5NTQ2ZGVkZjg1Y2E5N2U4ZWNmMWE1YWMyMzg4IGxlZ2FjeS10cnVuaworMTIzMTkgNDU3Y2I4NjhjMjVlNDVhNDFiN2FkMmYzZWM0MzNmMDA4NTRkNDBlNiBsZWdhY3ktdHJ1bmsKKzEyMzIxIDI4ZDNhOWZjYjU3N2RmYzg1NjJmMTg0OWI0ZGRjNGU0YjYxODljYTUgbGVnYWN5LXRydW5rCisxMjMyMiAxN2U0ZDgxOTQ5YjlmMWVjMDM5NGM2MTA2YTdmOTI3NDllYjFjNDIyIGxlZ2FjeS10cnVuaworMTIzMjMgYmE2M2M2ZjYwMjViNGYyMzViMTBhMDIxYTc0ODZiZjkyZGY5YWVkYSBsZWdhY3ktdHJ1bmsKKzEyMzI0IDRlOTUwNjVhNzJhMWE2ZjJkNzNjOThlOTYwZjA0MmY1MmU4MzYwODUgbGVnYWN5LXRydW5rCisxMjMyNSA1YmRmOTE2NTEzNzcyNmViNzdiZWI2ZTQzYjM5MTlkMmQwOTFkODJiIGxlZ2FjeS10cnVuaworMTIzMjYgY2UwYzE3Y2M3N2NlNTBmZTgzNzE2YmU3YzFlNTg0YjI2YjQ4YjhhZCBsZWdhY3ktdHJ1bmsKKzEyMzI3IGVmOTdiNGY2ZDE4NzVmYzZlYjUwMGMzNTEzOGM1MjEzZjlmMjEyODQgbGVnYWN5LXRydW5rCisxMjMyOCA4MDE1MGY5YzhjNDFmY2U5ZGEyZmMxM2IzZjA3MTk5MDkwZmYzYmY3IGxlZ2FjeS10cnVuaworMTIzMjkgMTM5OWJlZjdhZjYxMzU1ZDZlZWJlZTM2YTYxNDg3NDBjY2IzZDkzMCBsZWdhY3ktdHJ1bmsKKzEyMzMwIGFiNTU2OThiZmYxY2E5YThhMGIxMTgwYmE2Mzk5MmQ4YzlhOTJjZGIgbGVnYWN5LXRydW5rCisxMjMzMSAxZGFiYzczYjdiMGJjYzgyYmRjZGM2YTk3YTExNTYxYTYwMmE1MzY0IGxlZ2FjeS10cnVuaworMTIzMzIgNjFjYWZhOTdlYjc3YWYwNjY5YjcyYjdmN2VmZjJlYTJlOTBkYTNkZSBsZWdhY3ktdHJ1bmsKKzEyMzMzIGU1Y2IxNTdmZjA5MzFmZjA1ZTM2YmYzZTliYzRlYmM0YWYzYzM5MjUgbGVnYWN5LXRydW5rCisxMjMzNCA4MjQzOWQ5OTg3YjJjZjY3YTkwMWM3MWZlYmM3YmU1ZmY2YTQ3ZjE5IGxlZ2FjeS10cnVuaworMTIzMzUgZGQzYzdmYzBhMzRkNGI5Y2ZmNDhmY2M1OWU2NDFkMGExOGJiZjFhMCBsZWdhY3ktdHJ1bmsKKzEyMzM2IGIwODIxYjBiY2NmMGZkNWU0NGQzNmVmMjgwZTFjMGIwODk1NjUyODUgbGVnYWN5LXRydW5rCisxMjMzNyBmNzRkZTc3ZjA1MTBlZjNhYTllMzYxZDBiOTc1YjlkNjE4MmJiYTYwIGxlZ2FjeS10cnVuaworMTIzMzggMTNkMGY2MjhjNTcyMjkwZjJjNGQ4ODExNDIwNTQ2YWE2ODdhYTE2ZSBsZWdhY3ktdHJ1bmsKKzEyMzM5IGI4ZmVkYjIyNmYwOWMxMDg0YmFiNmViYWZjYzAyMzYwMmRmODRlNWIgbGVnYWN5LXRydW5rCisxMjM0MCBhYWIwZjM0NjNhZjA2YmMwNWM3YjYxNWNmMTU2MDNhMzZhNzNiNTAyIGxlZ2FjeS10cnVuaworMTIzNDEgZGRmM2Q1NTIyMGI5MGQ4MjE1NWNiNTI0OWFkNzAzMmNiZWM0NjE5NCBsZWdhY3ktdHJ1bmsKKzEyMzQyIDg2Y2I3N2ZiMTllODhhZGY4ZDMwNmQ3MGU5MmE5ZWIyYjdlZTRhOTYgbGVnYWN5LXRydW5rCisxMjM0MyBmMzRiYjQ3YWFmYWNhY2FkNDMxN2I2NDhhYjkzMWQzN2FmNzY3NzhhIGxlZ2FjeS10cnVuaworMTIzNDQgNDk2NzAwMzc0ZmM0MzhjYjM0NzBmOTQwZjczODc2MjQ5OWNhMTZlMSBsZWdhY3ktdHJ1bmsKKzEyMzQ1IDlhMjkzZTc3YzU1NDZjZDdhMTlmMWRiMGQyNTFhZmYzNjViYTk5OGIgbGVnYWN5LXRydW5rCisxMjM0NiBkNjRjZTI5ODAxY2IxNzA5YWQwNmJhOGZmZDNlMGU1YzNmYzQzY2RjIGxlZ2FjeS10cnVuaworMTIzNDcgNWJhYzU2ZmZjY2E4ZjgwMTRiMTVjOTMzMjQzYmU1ZGU1NTVhYTJjNyBsZWdhY3ktdHJ1bmsKKzEyMzQ4IGUxOWNkOGVjMjBhMmU4ZmU3M2M2YTYwNTAyODQ0ZmNmODJiODNlNmIgbGVnYWN5LXRydW5rCisxMjM0OSA1ZTllZjlkODU3NWJiY2I1NzU0OWM3ZmNhMDUzMjRlN2Q3NjUwY2U4IGxlZ2FjeS10cnVuaworMTIzNTAgZWM4MGFkMjVjYTg2MTMyOGFmNTA2ODM5ZTk4NThmMWI2MTFhZDQ1MyBsZWdhY3ktdHJ1bmsKKzEyMzUxIDZjNmVlM2JiM2ZjYzIyZGNkZWIwNDc4MzYxMzY2MjIxNjNmNmIzZjcgbGVnYWN5LXRydW5rCisxMjM1MiAwMTQ3N2IxYTc0ZjljMWM1Njc0MTk4ZGI5ZGRkNTQ4ODI5M2U4ODAxIGxlZ2FjeS10cnVuaworMTIzNTMgYjUzMGJjNjJlM2I5OTFiODEzZDQwZmNiN2RmYTMxMTliMjA5ZDRjMyBsZWdhY3ktdHJ1bmsKKzEyMzU0IGU2Y2Q2ODNhMjJmODE4OTgxN2IwNzQwMTllMzYzYzNmYTE0ZDdjZDQgbGVnYWN5LXRydW5rCisxMjM1NSAzMGMxYzQwY2Q4MGZkMzY5ZmM1M2ZmODMwYjc0MmMyMjYzN2U4ZGI1IGxlZ2FjeS10cnVuaworMTIzNTYgMWU4ZmY4YTg3OTJlZjdjOThjYzI3MTdiNDZmM2Y5OWY1ZWJhODNjYyBsZWdhY3ktdHJ1bmsKKzEyMzU3IGNkYjc3MmFhYmJhMjVkNTAzYmZlOTg1NzQwNDdhODVjOGFhMGNiYTkgbGVnYWN5LXRydW5rCisxMjM1OSA2MDVlYWY4Y2M2ZDBlY2VkYTIxNzY4MjZjZjA4NDQ0YzM3MGZjNjJjIGxlZ2FjeS10cnVuaworMTIzNjAgYTE1ODVmNjkyNTVkYTAwZDBlMWU0NTliNmRhZmE3MDE4ZjQ4MzU1MyBsZWdhY3ktdHJ1bmsKKzEyMzYxIDUxZTg2OGVmM2IzMWU1YTE5OGRiZjJmNGJjMGY1Zjk1NDIyMzk4ZDIgbGVnYWN5LXRydW5rCisxMjM2MiBiOTNjMzkwZmQyNWQ1ZjE0ZGZlYjc1NDYzOWY5ODEzM2ZlNzdmN2ZlIGxlZ2FjeS10cnVuaworMTIzNjMgYTdkMWNmOTVkYWRjNTllNjQ5NDc5MThiYTI5YTQ0Y2VhOGVmZDdiNSBsZWdhY3ktdHJ1bmsKKzEyMzY0IDhhNjUzNmMxYTBhNDYyNjgwNjEyMzVhMWY0NDAzNjdjYWVjN2NiOWEgbGVnYWN5LXRydW5rCisxMjM2NSA2MGY0MjU4Njg2NmVhZjI1MzVmNWIyNGMxMDI5MGM4NWE4NTJiNTRlIGxlZ2FjeS10cnVuaworMTIzNjYgMGFhZWE0ODkwMmU0M2IyNzYwNzM0ODIxMThkNTkxOWY4MWE0MWE3OSBsZWdhY3ktdHJ1bmsKKzEyMzY3IGY3N2I5NDFhMGY5MzZkZTNiZDAxZmY3MzcxMzMzNjVhN2M3ZGZjZDIgbGVnYWN5LXRydW5rCisxMjM2OSBjOTVmZmY4ZjE4MGE4ZDdjYzg2ZTFjZmRlZTljZTNlMDg5MzNkYjgyIGxlZ2FjeS10cnVuaworMTIzNzAgYTU4ZjM2MzUyYzRmM2ZlZGNjMzE0YzcyZjBiYjNiNzIwOWQ0NjJhYSBsZWdhY3ktdHJ1bmsKKzEyMzcxIDMzYzRiYTc3N2EzYTdkMWNhMjIyNDMzNTI1MDg0OWUyZWY3MDE0MDQgbGVnYWN5LXRydW5rCisxMjM3MiBlZTM2ZTFmMTMwY2NiYjc5ZjdlYjkzZWY3ZWE1MmU0OTMzNTZhMTY0IGxlZ2FjeS10cnVuaworMTIzNzMgZTNhNzlmOTNkMWQzZTU4ZDkxNDI5ZTliMThhZDkwN2Y5ZWRmN2E1NCBsZWdhY3ktdHJ1bmsKKzEyMzc0IGYzNTJlZWE2ODM3MzQ5MzVjNmE3ZDQ2NzEyNTU2ZmIxNTJkNGYwYWMgbGVnYWN5LXRydW5rCisxMjM3NSA5ZGE0MjQ5MzVmNzg2NzM4Njg3MThlYjI2NzRjMmY3ZGQxZGE0OGZmIGxlZ2FjeS10cnVuaworMTIzNzYgMmFiMTg5NTg1ZDIzODY1OGM5M2Q2MzNkNGRjN2Q2ZWUyZjdjM2JiMSBsZWdhY3ktdHJ1bmsKKzEyMzc3IDc3ODYyOTc4NDdhY2EwYTYwYzNhODhiNjJjN2E0MjNhYjVhMWEwM2QgbGVnYWN5LXRydW5rCisxMjM3OCBmNzhmZDliNjcyODRhZGM0Y2FlZjRlMDU0OGQzMWY3ODdhODA5MWE1IGxlZ2FjeS10cnVuaworMTIzNzkgMWFjMzQ4NWY5ZTNlMzY3NmIyZmU4Y2Q4NzY1MzFmZGVkODgzOThmZSBsZWdhY3ktdHJ1bmsKKzEyMzgwIGUxNGZlZWU0YzQ1NmJjODZlM2UyOWJhNDhmNjExMGQwMTgwZGNkZDEgbGVnYWN5LXRydW5rCisxMjM4MSBiMGVkYzg5MmZjNzgyZTkwYjM3Yzg5Mzc2YjUzZjBkM2YzMDNhNDdiIGxlZ2FjeS10cnVuaworMTIzODIgNjU5MzdmZjcxOGRlZmM1ZGFlMjljNzYyZDdhMjI5NmZjY2QzOTI4NiBsZWdhY3ktdHJ1bmsKKzEyMzgzIGRlNDFlOGQ4MjExZGQzNWRiNmJmYTIzOTEwNGM3YzlhZDc1ZGQ4ODcgbGVnYWN5LXRydW5rCisxMjM4NCAzNTg5YzBlNTZlZjI1MTY2MWQzMjUwMjdjZTYwODhlN2E4YmE2Yjg5IGxlZ2FjeS10cnVuaworMTIzODUgNzE5NWVjMjk2YjNkOTQ0MDM0MmZiOGE3ODg4MTRkYmUxMGJlMjFkMCBsZWdhY3ktdHJ1bmsKKzEyMzg2IDE0ZGNiYjM0YjlkZDNhZTMxZjM3NDBiNTE1ZGZjZWEzZGZlYzNiYzkgbGVnYWN5LXRydW5rCisxMjM4NyAwMzBlZTUwYmQ4ZDFiNDg1ODA4ODY0MzJjNWFhMjU1OGQzNzBlY2UzIGxlZ2FjeS10cnVuaworMTIzODggZmFlNmQyNGI4OTdiY2U2NGFiZDk2Nzk4NjZjZWI0NDBiMzIzZDYyNiBsZWdhY3ktdHJ1bmsKKzEyMzg5IGFlOTA4ZWY5MWNmMGNjNTY5OGYxYThhYTE3M2RlODNlMDZmM2Y0MDkgbGVnYWN5LXRydW5rCisxMjM5MCBkZGI4M2IyNTIyNmViNzAzYmYwMDAwY2MyYjMyOTRjMGVhZDRhMDAyIGxlZ2FjeS10cnVuaworMTIzOTEgOWYxM2Q3MzgwYmY4OTgzMzIxOTRiZWYyMjJlYTdjNDI5M2JiMzJhMSBsZWdhY3ktdHJ1bmsKKzEyMzkyIDI5MWMyZDBhOTY4M2M0YzhlNGI4OTdhMTkzZWI3Y2VkZDcyMjU3MTAgbGVnYWN5LXRydW5rCisxMjM5MyA1YmQ2ZGNmMTZkNDFhYmZhYjAyOTdiMWNkMTNlMDVjODJiYWRlM2E0IGxlZ2FjeS10cnVuaworMTIzOTQgYjNmYjg0MTBmNmFlOTkyNWI5YjcyZjNjMDZiZWNkM2UwMGUwY2U0YyBsZWdhY3ktdHJ1bmsKKzEyMzk1IDdlMmU1M2U3NDhjODU4NWJiZWE5YWRmMzU1N2MxMzRjYTI4NGI4NGUgbGVnYWN5LXRydW5rCisxMjM5NiA0ZDg2YjVhNWJmOWUyNGE4OTIxM2IzMGNmZDkzYzkzMjA3MjI4ZjA5IGxlZ2FjeS10cnVuaworMTIzOTcgYTJkMzM3YjJlMjFiYTRiZjRkZTQxMzc1NjExOTYzOGJhZWU0N2YyZSBsZWdhY3ktdHJ1bmsKKzEyMzk4IGY4OGQxNGFkZWQ3NzA0MGFmZGVlYmNlZWZkMjllZGZjZDUzZWI1MzQgbGVnYWN5LXRydW5rCisxMjM5OSA3YmRlZjRiZWRkNWNlNjI4ODEyMTVhYWNhYzYzMDJiYTkwMDk1YjlmIGxlZ2FjeS10cnVuaworMTI0MDAgOTJhZTExNTU3M2FmMjliZWYwNDZmNjY5MTBjZWRlNTRmMTg1MmIyNSBsZWdhY3ktdHJ1bmsKKzEyNDAxIDVhZDFhMzVmNTQwYzY1OTBiZTIyZTkwMDhhOTExMDY1MTEzODEzYTkgbGVnYWN5LXRydW5rCisxMjQwMiBiYWM5NjU1NTJmN2U2YzRkZjk0ZTM2MjE0ODFkZGEyYjQ5ZDNhNmU1IGxlZ2FjeS10cnVuaworMTI0MDMgNjk1MTEzYzY1MGJiNTk2MmJhMjQ3ZWUzYjFmYTM0MDIzNzkzYjI0NiBsZWdhY3ktdHJ1bmsKKzEyNDA0IDdhYTUxNTMyMDA2YTllMzM4Y2QxNjk5ZWQ2ZmJkYTk4OTVkNWJhMjUgbGVnYWN5LXRydW5rCisxMjQwNSAxYzQ2OTcwODBkMDcxOWFkMGVkNGQ0Zjg0N2RmNWI2YmU1MjdjZjE4IGxlZ2FjeS10cnVuaworMTI0MDYgZDk1YWZlODdkYjRkY2FiNDI0MGMyM2RlNGMyODc2ZjMzMDFlYzM5MyBsZWdhY3ktdHJ1bmsKKzEyNDA3IDZjZjAxZWFiMDVhMzJhYWJjMDllZDIzY2YxMTlmOTgyYjJkNTZhZjUgbGVnYWN5LXRydW5rCisxMjQwOCA3ODA1OWNmMDY3ZGVmYmEwZWVlMGE1YmJlMTA5MmM2MjA0NmFhNDViIGxlZ2FjeS10cnVuaworMTI0MDkgMTE0MTRmMDIzYWQwYTEzMzMxMjRiNmM1OTViYmIxYWE5YjMyMDM3MSBsZWdhY3ktdHJ1bmsKKzEyNDEwIGE4YTA3MTk5NmE3M2Q5N2ZiMzA4YWE0N2I4MWMwZDk0NTkyMmM5ZjMgbGVnYWN5LXRydW5rCisxMjQxMSAzN2MzYWZmYjA1YmEyM2VmNjg5MDA3ZGQ5ZTY5OTkwZTBiOTBjODlhIGxlZ2FjeS10cnVuaworMTI0MTIgMThjMDZkMzljZTJjMmE4N2MxNWNkOTUyMDk5N2RjNmU0NGY4MmMyYyBsZWdhY3ktdHJ1bmsKKzEyNDEzIDIwZDk4Y2EzZDMyZmFiYWMwZmNmM2IzYjRmOGE2NzdhMTI1ZmYwMjkgbGVnYWN5LXRydW5rCisxMjQxNCA5MDM0NGMyNjFmMjQ1MGY1N2ZiMGYwYWUwMmZiMDIwZTBkOGRjMjcxIGxlZ2FjeS10cnVuaworMTI0MTUgYjc0ZjU1ZTdkMjA4ZjcwNzU0MGY0MjM2NWJmYjVmZGE4ZjIyY2IzYiBsZWdhY3ktdHJ1bmsKKzEyNDE2IDllMjU1NWVkYzk0ZjQ4ODdlMDM2NWFjMGMxMjcyNTgwYWNmYjYzMTkgbGVnYWN5LXRydW5rCisxMjQxNyAyNDg2MTZkM2VkMTJjZGM5ZTFjNWJmZWNmMzhlMmY3MmQ5NmY4NWM0IGxlZ2FjeS10cnVuaworMTI0MTggOWE3ZTc4ZThiZGZhMjkyMjM3MTY0NTExOWE4YjMwMjY4ODcyOWQ4MCBsZWdhY3ktdHJ1bmsKKzEyNDE5IDI4Njg1NDc3MWIxMTkxMWY4YTg1MjcxM2JkMDgzODdjMTM0N2MwYzYgbGVnYWN5LXRydW5rCisxMjQyMCAzN2FhODRkMjc4YzU1OTk4NGYzYmY2NTIxMGJhNjlmMmNjOTVmNjhjIGxlZ2FjeS10cnVuaworMTI0MjEgYTc4MTAwMzcwNTE1Y2QxM2ZhYmU0YzM1NmU0ZjBmODlhMTdmZmRjMiBsZWdhY3ktdHJ1bmsKKzEyNDIyIDYzMTI0OGM5YzYyZTE2MjFmZjk1ZDQzNjI4OWNiNDZjODdkZTVlZDkgbGVnYWN5LXRydW5rCisxMjQyMyAxYTc5OWQxZDRiNWE2ZTE5YzM4ZWQxNWRkZmQzODgxM2ZlZTYxMjkwIGxlZ2FjeS10cnVuaworMTI0MjQgNmMxMDc3Mjg0MDAxZDYxMWQ5MDU1NDYwMWQyNjYzNjM4ZjJhMmNkOSBsZWdhY3ktdHJ1bmsKKzEyNDI1IDc2YmRhZDIzZmNkYjhhNzVlZWIyNmZkMjJjYTg2N2M1ZTI5NDU5MWIgbGVnYWN5LXRydW5rCisxMjQyNiA1YjE3N2Q1MWJhMjc1ODEzYTkxMjMyY2ZiZjJiZjhhMWIyMTk5ZGIwIGxlZ2FjeS10cnVuaworMTI0MjcgYTU4ZDhlNDRjZTMyZmQ0Njc0MDUwNWRiN2JiMjhiNGM5OWQwYWEwZSBsZWdhY3ktdHJ1bmsKKzEyNDI4IDA0NTU0MDI2NzdhOGFkZjFjNzg0MzExNmZhOTc5ZmRhNzE0NDg1MDAgbGVnYWN5LXRydW5rCisxMjQyOSAzNWY1Njg0ODA3NjRhZmZiMzk2ZGE1MDY1YTY5OWFjOWYwMjA3MjcxIGxlZ2FjeS10cnVuaworMTI0MzAgNGJkZmU1ZDgwYTZmNWI5MjNiNWRiZmFlODU3Mjg5N2QxOThhZGY1YiBsZWdhY3ktdHJ1bmsKKzEyNDMxIDVmNGQzMmIxYTY1ODNmZmJmM2NkZjE5ODI5ZjM3YmQwOWZiZjJjYWEgbGVnYWN5LXRydW5rCisxMjQzMiBmODY3ZTEzZGE1NzRjZTdiZGVhMDQyNGFhZGY2NGE3MjM4ZDg3Y2MxIGxlZ2FjeS10cnVuaworMTI0MzMgMDBmYzE4YWM2YWViOGU3ZjMyNDc2MTRhZDZiZWFiMjFjYTlkYTg5MiBsZWdhY3ktdHJ1bmsKKzEyNDM0IDFkZTNkYmIyNmMyZmEyZWFhZTJmMzcxZGZlMTE5NzEyNmNjY2ViNTYgbGVnYWN5LXRydW5rCisxMjQzNSAxODlmMWVjNWM2OGYzZGQ2N2UyZGE0OGIyNjhlMzZmNmZjZWFhN2JlIGxlZ2FjeS10cnVuaworMTI0MzYgMTVlOTc2MWU1NGRlMWQ1N2FjNDg2NTk1NTM5MjVkYmFiYTkzY2QzNSBsZWdhY3ktdHJ1bmsKKzEyNDM3IGFkNzQ5ZmIwYmQ0YmQ0NWJhOTQ4OTcxYTI1NGEwMzY3YTRjNWNkMjMgbGVnYWN5LXRydW5rCisxMjQzOCBhNjRhNjE1YmI3NTYzMzBmN2I5ZDVhM2JmMGIwNDVmNzcxODk5ZTExIGxlZ2FjeS10cnVuaworMTI0MzkgYzU5MmMxNzcxZGZiNWU2M2ZlN2U5ZjRhOWRhMjUwYjU3NGIxMGQwNiBsZWdhY3ktdHJ1bmsKKzEyNDQwIDMzNzg0M2M2YTE4MzY5ZDU3NTBiZWI1MDkwNjBjNGUzNzAxMzU5ZDggbGVnYWN5LXRydW5rCisxMjQ0MSBmYWYzNTFlMzE1NzFkODhhZTc2OTAwOWY5ZjcwYTFhOWY2NWUzZDdkIGxlZ2FjeS10cnVuaworMTI0NDIgOTNiOWVhZmUxZjFkZTgyYTFhMjA3MWY4ODkwZGQ1YTgyMjY5ZjViNSBsZWdhY3ktdHJ1bmsKKzEyNDQzIDA2YzdmZmY1Mjc0YTdiZmQzYzljNjZjODkxMjAxMjMzMTY2MjgyNDEgbGVnYWN5LXRydW5rCisxMjQ0NCA2MjYzMjdhNzhhOGVlMzZhOWE0ZWIzNThmZDQ4MDY0N2U1NzA3ZjY4IGxlZ2FjeS10cnVuaworMTI0NDUgNGRhMWZhZjI5N2FiOGZhMzc0NjQ2MWFlNTU1MzA2Mjk0ZWZiZThjNSBsZWdhY3ktdHJ1bmsKKzEyNDQ2IDM5NmEzOGVhOWI4NGZhY2ViMjZhZDUzN2Q2MDY3NmI2ZDcxZDFmMTkgbGVnYWN5LXRydW5rCisxMjQ0NyBjMzljNGJjNDVkMzkxZTJkZjFkYjhhMWNmNTE5ZGQzOWRmZWNjM2U1IGxlZ2FjeS10cnVuaworMTI0NDggYzg3NjYyZWYzZjFkYjU4YTIzNDNjYTQzOTY1YzlkMDhhZTBiYWUxNyBsZWdhY3ktdHJ1bmsKKzEyNDQ5IDdjOTk2ZjM0MDQ3MjBhMjM3MGMyMzgzYzVhYjRlN2UzZjM1ODEzZWYgbGVnYWN5LXRydW5rCisxMjQ1MCA3NTM5ODU5ZTk4NWExNGE0YWM3YTQ0YjBjYzcxN2ZlZTI3Y2I1OWQ4IGxlZ2FjeS10cnVuaworMTI0NTEgOThlMzczNDczNzhiMDA2Y2U2ZmNjNDkyMDhlMjI0YWNjOGMzYzMxMSBsZWdhY3ktdHJ1bmsKKzEyNDUyIGFlODNmNjFkM2NkN2U3MTk5ZmQ1MWEzNDRiNWRhMTk4ZWFlMWYwZTAgbGVnYWN5LXRydW5rCisxMjQ1MyA0MDQ2M2Q1MTRmM2VhNGJhNDhhMmMyNjg0NTUzMDFlMWEwZWVlYmQ0IGxlZ2FjeS10cnVuaworMTI0NTQgZTVkMGRmODI0YmYzODI3NDhjMWUwZGJjNGZjMzZhMDU4NjY1ZDE5ZCBsZWdhY3ktdHJ1bmsKKzEyNDU1IGNhMjc0NTI3MTExMTY0MDFjMDIxNTI4MGFlNGNkOWMwOTc5NzcxN2IgbGVnYWN5LXRydW5rCisxMjQ1NiBjNDA0YTZiMGNkYjFlMjdhNTdhMDBjMGUzNGU2ZjUxZDFjMTVkYTA0IGxlZ2FjeS10cnVuaworMTI0NTcgOWE4NDJiODFkOWMzZTk0ZGU3MWE0MWZkZWRhMTUxZTA1Y2FmZTNiYiBsZWdhY3ktdHJ1bmsKKzEyNDU4IDcxNmRjMWQxZGJmZjg5MDFjMjU5MTAxYTg4YWYwYmI5MmVhYWNiNGQgbGVnYWN5LXRydW5rCisxMjQ1OSA1N2JjYzZlYzYzOGY2ZWI5Y2VkOTEyMjI4YjU5MTQyZWI5OWZmNjU2IGxlZ2FjeS10cnVuaworMTI0NjAgMjc1MGUxZGU2ODI5YWQxNzliZTI0N2YxY2IwOWFjMTc4M2NlYjE0MSBsZWdhY3ktdHJ1bmsKKzEyNDYxIDU3MmUxMzFhZTM2OTBmYjVkMjA0NzkwNDFiOGRjZTg0YzY4ODI4ODkgbGVnYWN5LXRydW5rCisxMjQ2MiA5MmEyNWQ1MWZmMjZjZTI1MTVkNDBlMWY4ZWRlZjliZGY3YzkyYzEwIGxlZ2FjeS10cnVuaworMTI0NjMgODc5ZTM0OTFiNjYxYjhlNWE1YmViYTg2MjNhN2U1NjkxOWRlNDI2YSBsZWdhY3ktdHJ1bmsKKzEyNDY0IDg5NDk2MGZhOTBiYzc1NTliN2E1ZTc5MzJlYWYzNThhZWY0ZmU0ODMgbGVnYWN5LXRydW5rCisxMjQ2NSAwZDI3OTFjNzIwNmRhZmJhYzlhZThhZDljNTY4N2VjMWZhMzk4N2NlIGxlZ2FjeS10cnVuaworMTI0NjYgZDQ0Y2I4N2U1MDBkYmJjN2ExODk1YjEzMDhjYTJkYmE2Y2VmY2RiYiBsZWdhY3ktdHJ1bmsKKzEyNDY3IGMxMDkxZTgyZTVhYWIwNmRkNGQyNTQ3MmExOWI1NTg3MjdmYWYzYzQgbGVnYWN5LXRydW5rCisxMjQ2OCAwN2QzMzM0ODVhNWUwOGIyNGY3MDc0OWQzMjNjNWFjYWNhNDU0NjcxIGxlZ2FjeS10cnVuaworMTI0NjkgNDQxNDZjMDZlN2VkM2M3ODdlYjAxMWNlNDc4MjdhYmMwMTI4ODVlZCBsZWdhY3ktdHJ1bmsKKzEyNDcwIDQ4NTUwMmM0MmQ4OWE1ZDY4ZTRmZmE5MGIwYmM1Nzg4ZWEzZWYyY2MgbGVnYWN5LXRydW5rCisxMjQ3MSBlZTg0ZjQ0NWU2ZDdhMWNmOGY4ZTY5YzU4OGVkYWI5ZTAxNjVjZmMzIGxlZ2FjeS10cnVuaworMTI0NzIgOGVmYTM3YTc3MGM2NDdiNjU4NWU2ZmRhMzM1OTAxNTRjMmY3Y2ZmMyBsZWdhY3ktdHJ1bmsKKzEyNDczIDAzOTBhZjZhY2Y3ZmE5ODk1Y2RiZmQ4NDY0MWFhYjZjYWYwNjgwZmEgbGVnYWN5LXRydW5rCisxMjQ3NCAxOWZkYWYzNjdkNDViNmRkMjQxZjExZDllZGExMTFjZTk2YTY3Y2MxIGxlZ2FjeS10cnVuaworMTI0NzUgNGVjM2IzY2IwN2M4YTFlYTAyNTJkNzE1NTZlMWJmYmU3YzJlZTM2MSBsZWdhY3ktdHJ1bmsKKzEyNDc2IDYyZmEwM2EzMzNhYWZlZGNlNzJjOGVlOWUzN2I5YzBmNmEyMzNlNTEgbGVnYWN5LXRydW5rCisxMjQ3NyBmMWE1MjBkMjYzMWE4ZWNkYmQyYzI0OWVjMzA3ZjFkMTZjYWVmMTA2IGxlZ2FjeS10cnVuaworMTI0NzggNGUyZWZmOTY4Y2Y1YzY3MWQxMmE1Y2ZlNDVkYzljYzgxNDM2Y2NhZCBsZWdhY3ktdHJ1bmsKKzEyNDc5IGY4ZmM5MWIwMTdhMTQzMTVhZmJkZTVjZjE0NjQzNjkzNDBmYzBlMzggbGVnYWN5LXRydW5rCisxMjQ4MCBmNmIyZjIwZGE1ODE2N2RjODY2NjE2ZTZiNzIzMDI4MTNkMTNhZTc5IGxlZ2FjeS10cnVuaworMTI0ODEgNDg5ZWY3ZjY0MDQxMGIyY2U3ZjNlOThmOGM5ZWM2NTAwYWQyOTNlOCBsZWdhY3ktdHJ1bmsKKzEyNDgyIGRjYmU3MmEwYjM5MjZiOTQyZTZhY2E4YTJhNWNkMmFhMjdkMjg4ODQgbGVnYWN5LXRydW5rCisxMjQ4MyA3NTkxMjFlM2Q5YjZkNjcyOTVkODhjMTdkYWEwOWMxZGU3NTI4ZGViIGxlZ2FjeS10cnVuaworMTI0ODQgYWRmYWNiY2JkOTM2MWM5MjllMmRmZTQ0NjM1OTI2NWNiYTkxM2Q3MyBsZWdhY3ktdHJ1bmsKKzEyNDg1IGM4NjZmMTY2MzMxYmI2NjU1ZjdmNzRhNzZiM2JmZGQ0MWE5OTgxYjMgbGVnYWN5LXRydW5rCisxMjQ4NiA0YWYzOGE0NWQyOWM4YzkyMGE4NmJkZTliZDYxZjAzMWUzNWY4ZDZjIGxlZ2FjeS10cnVuaworMTI0ODcgYTZjYjg4YjU4MTY1MjNmMzkzNjE1MjFiMmZmZmM5YTQ2ZTlhOGNlOCBsZWdhY3ktdHJ1bmsKKzEyNDg4IGQ0YjhkZGQ5YTRmZDBmZDdmMjA0MjJhNjdlYzNkMWNiOGUzYWQ0MjcgbGVnYWN5LXRydW5rCisxMjQ4OSBiN2JjYzJjZGExYjNiMjYxODJmMjhhZWQ5MDA1YjExMzc4M2Y3NzY0IGxlZ2FjeS10cnVuaworMTI0OTAgY2ZiY2FiODE1MGRhOTE3NDMwNDdiYTJhZWE2YTdhNTcxM2JlMjUyZCBsZWdhY3ktdHJ1bmsKKzEyNDkxIDc4ZmYyMDNlYWQyNDU0ZDRmMGY2NmRjYjRjNmZlYWQyNTc3ZDQ2YzQgbGVnYWN5LXRydW5rCisxMjQ5MiAxMjRlZjY5NGMyODQ0M2U0MjA2ZjE0ODg5YzRhZDIxZmY2Mzk1Zjc3IGxlZ2FjeS10cnVuaworMTI0OTMgZGRiYmVkOGNiODMwZWU0OWRhYzg3YzUyZWE5ZjcxNmEwOWFmMTI0MyBsZWdhY3ktdHJ1bmsKKzEyNDk0IDAwOWM5YmE5ZjY1OGIyNTljN2RjY2RlNDBkODZkNmFiMTI4NmQ5ODIgbGVnYWN5LXRydW5rCisxMjQ5NSAxNmJkMGZkZTA5YWVjYjcyMzY3ZjU1Y2U3ZTY4ZDUyMTA2NDI4YWU3IGxlZ2FjeS10cnVuaworMTI0OTYgYTc4ZDMwNTZhYjYxMDRiMzUwMmYyZDM1OWQ0Y2MyMzk0NGQ1MGFjYyBsZWdhY3ktdHJ1bmsKKzEyNDk3IGJkZGU4ZmJhZWE1OGM3ZGNlMmY2ZWI2YTU3ZGY3M2FkYjVhYTc4YmIgbGVnYWN5LXRydW5rCisxMjQ5OCBlZWQwY2FjZjRjNjRkOGZmMWVjYTM3ZjE1ZjM1ZWU3ZjNjMjQ0MmYyIGxlZ2FjeS10cnVuaworMTI0OTkgOGM2ZTcwNWI2Yjk3MWQ0MjEyNmJhMzAwNjE4MjA2MjgxM2Y1ZWY3NyBsZWdhY3ktdHJ1bmsKKzEyNTAwIGExYmNmM2YyOWY2NmRmNWQ0NjMzMjg2ODQxYmM1OTRmYTc1YzZhMjggbGVnYWN5LXRydW5rCisxMjUwMSBjMGRhZmZlNDAwMzQ2ODlmY2QyMjJmOGUyYzdhNTQ0MmE5MTcyNWJmIGxlZ2FjeS10cnVuaworMTI1MDIgNDQxNTAwMDE5ZDUwYWNjMjVjNWZlYjRkMTUxNmZkZWY0NzgzMGRlZCBsZWdhY3ktdHJ1bmsKKzEyNTAzIDJiMjM4ZDE5YWU4OGE3Y2JiMzczYzY1MDU3NTRjMGZkMWEyMGU3MzEgbGVnYWN5LXRydW5rCisxMjUwNCA0YWI1ZTlmODM5ZDk3NDZkOWYyZmY5NTMwODUxZmM3YWVlOTFiNmRmIGxlZ2FjeS10cnVuaworMTI1MDUgMGE1NmU1MDgyNjgwYjlmMjU0MTBjMTY5YzNiYTcwN2E1ZWZhNTY5MSBsZWdhY3ktdHJ1bmsKKzEyNTA2IDNhNDIwNzE3YmM4YTQyZTk1NzUwMWYwNTAwMGIzYjE5MjlmN2ZmYTMgbGVnYWN5LXRydW5rCisxMjUwNyA3N2E5NDUzMTUyOWVjMjEyYTc0ZThiYTg3NDUyZTY3OTVmNTVlYjdiIGxlZ2FjeS10cnVuaworMTI1MDggZmUwYjUyMmU0NmNiM2M4NjEzMzQ5M2I0MmQzNjVkYzkyODYwZTkyYyBsZWdhY3ktdHJ1bmsKKzEyNTA5IGVmNWNmMWE0ZTUyYTljNDg1NDBjOWZkMzljMzkyZWQ3NzUzNmQwYjIgbGVnYWN5LXRydW5rCisxMjUxMCA1NWY4YzcwMWM5ZGFkMTFhNTQxYzcwYjAwMzYxMDcxZDRkOTRiNWFhIGxlZ2FjeS10cnVuaworMTI1MTEgYWI2ZGQ3MGYyNTA3NmY2ODkyNGE4OTljZDBmZjc0OGI5MjM5YzBhMSBsZWdhY3ktdHJ1bmsKKzEyNTEyIDQ2NzFhZTEwMzViMzg5NTk5MDk4MzdhYmM2ZDhlMzY5NDU5ZjQ3MmQgbGVnYWN5LXRydW5rCisxMjUxMyA0MmIyMjhkNzhiZWFkMTJkMzNlN2QwMzBjNGIzNjg2Mzc5ZThjMjEyIGxlZ2FjeS10cnVuaworMTI1MTQgNGEyNWRkODVkZjYyMmE1Yzg2MGRiOTg3M2Q3ODY1NDY3NjVjMzBhYiBsZWdhY3ktdHJ1bmsKKzEyNTE1IDk4ZmE1MzViOWFmMWVmNjBhZjFmZThlNzlhMGRjODhjYTMwNGYwY2UgbGVnYWN5LXRydW5rCisxMjUxNiA2MzdlYjk2MWMxMWJmNTI2YjhjMzQwMmVlNzk3MzViOTFjNTJlMTM4IGxlZ2FjeS10cnVuaworMTI1MTcgMmEwY2Y5Njc3MTkzOTgzMzRjZmRlZTJlZTY2NzgwM2M2NGM0YjY1NiBsZWdhY3ktdHJ1bmsKKzEyNTE4IGM2OTEzYzczMjZmMDk2YzAyMzA0MmYxNTUwMzUwMzNkODAzYjY2NmQgbGVnYWN5LXRydW5rCisxMjUxOSBmMjQ1N2Q2OTdhMmEyOGUxM2U5MzliOTY1ZWZkMjA0Nzk5ZTQ3NTZmIGxlZ2FjeS10cnVuaworMTI1MjAgZDc5NzlmNGVkMmI2MTYzNTY1ZWViMjg0NzczNGJmMjQ3M2VlMmU2ZCBsZWdhY3ktdHJ1bmsKKzEyNTIxIDgzMjc2NjhjZmQxNzE0ZDEyZGRmZDg5OTYxMTVkOTIwODEwNTNjMzUgbGVnYWN5LXRydW5rCisxMjUyMiA5NDEyNWExMzQzZDgxOGRkZGJhMDI4NmQ4Y2Y3ODc2NTA2YjQxM2Y0IGxlZ2FjeS10cnVuaworMTI1MjMgMjE4M2Y1MDZhMDhlMWM4YmU2NmI1ZWY2YzA5OTNmNmQ0MjMyMTllOSBsZWdhY3ktdHJ1bmsKKzEyNTI0IDI4MTk0ZjUxZjdmZTU0YzQxY2Y3YmQwNzc1MjlmYzUyMDNkNWYwMjEgbGVnYWN5LXRydW5rCisxMjUyNSA4OWRjZWE2M2M0NmJlYTAyYjVjMzU4MDI0N2QzM2Y0YTk1YzVmYWFlIGxlZ2FjeS10cnVuaworMTI1MjYgY2FmMmM2NWE2YmNmMjVmOTY1MGMzNTMwMWNlOGUwNjAyOTRiZTEzOCBsZWdhY3ktdHJ1bmsKKzEyNTI3IGY1NzJhZTM2ZDViYWM5YjQ1NmEzOWQ3YWRhN2ViY2RiMDU2ZTY4OTcgbGVnYWN5LXRydW5rCisxMjUyOCA2MjA2ODVlNGM0NzdlMjA3YTllMTg3OTQ3ZjU2MmUzMzE0N2NiYzA3IGxlZ2FjeS10cnVuaworMTI1MjkgMDgwYmQ0NmYzODQ4Nzk5Y2RmNTAxMGU5N2Q4MjRiMjQ2YjJjMDE5ZSBsZWdhY3ktdHJ1bmsKKzEyNTMwIDE2N2FkZjMxNzg2ZDczNDYyYTdjYzZmYWU3YjQ2YzY1ZjBlNjc4MGUgbGVnYWN5LXRydW5rCisxMjUzMSAwMzRiNDJiYTY4YTY5OTNhOGExZjNhZTRmMTU3Njc1ZjAwYWRiOWEzIGxlZ2FjeS10cnVuaworMTI1MzIgNzRkMGQyZjNjYjFkYmE4ZmMxYTgxNjBjYTc4MDVlMjljNmIzOTNiOSBsZWdhY3ktdHJ1bmsKKzEyNTMzIGRlNTY4ZWEwZDA0MGViNjMwZGVkYzU5MmU2NTY4N2E2ODVhNTMwNmIgbGVnYWN5LXRydW5rCisxMjUzNCAyMGU4YTMzNDRhMGZmNjBjZDhjNGM2ZDEzNTVmZTljYTc5Nzg1NjJhIGxlZ2FjeS10cnVuaworMTI1MzUgMTA1MWVmOTk0MzFlNWZlZGNhZTFjMDRlNzllOTE1ZWE5NzMwMzk4MyBsZWdhY3ktdHJ1bmsKKzEyNTM2IGM5YjA3MDA3NGM4NWQzYmNmMmIzMTEwZDJlYzQ1OWJiMzE3MmM4MDUgbGVnYWN5LXRydW5rCisxMjUzNyBiNzJhOGM0OGYyZDAwNDNmM2ZmMDU4MDU4MzdiYTIwNjU4NzBlYzNmIGxlZ2FjeS10cnVuaworMTI1MzggZjVkZjIyZmRhZGE4ODU5YjgwMWQ2MGFmNWFkZTk4ZTAyMTY3NWVmYyBsZWdhY3ktdHJ1bmsKKzEyNTM5IGYxMzJlY2ZkYjI4NTU3NzdmNjA0MmNkNTFhNWFkNDdhZDc1NWZlM2YgbGVnYWN5LXRydW5rCisxMjU0MCBiYTAzZTY4ZGYwZmQ0ZjA5MGRkNzA2ZTFkODYzODQ0YjI4YWQ1ZGIwIGxlZ2FjeS10cnVuaworMTI1NDEgNmRmZjc2OTZlMzU4MTEyZTJhNTA4ZGVmMTVlNTJhMzdiNGNhNWU2MiBsZWdhY3ktdHJ1bmsKKzEyNTQyIDNhZDJiMmUzMWY1MzA4ZWEzZmIyMjNkNGI1ZTM2M2U2YTM0M2IxMjYgbGVnYWN5LXRydW5rCisxMjU0MyAzMjY1MmY2OTk2ZTM3NDNlMThjNmRiNjRmODRhYmQ5YjdkOWViYjJlIGxlZ2FjeS10cnVuaworMTI1NDQgZjJjMDcyYjA1NDY2NTRkNjIxNGEwM2I0ODU0OGQ1MDhiMDI2ZmM3MiBsZWdhY3ktdHJ1bmsKKzEyNTQ1IDBkYzUwZDQzZmI4NDYzNGRkOTc4ZWQzYjllODcxMGU3ZDJmMTA1OTIgbGVnYWN5LXRydW5rCisxMjU0NiA4Y2Y2NmIxZDQxNTVlY2QxZTkwYzM5MTkxZjNiZTliNDk1NGVhY2YxIGxlZ2FjeS10cnVuaworMTI1NDcgZWU5YThmZTBjZmNhNWYxMTBkNzhiODlmZjQ4MzY4NjUxMGVkM2E2ZSBsZWdhY3ktdHJ1bmsKKzEyNTQ4IGMwNzM5ZjY0MWJkMWQ1ODFhMjI5MjIyMDI1ZTRlOWJlZmM3YWZiN2IgbGVnYWN5LXRydW5rCisxMjU0OSBhMGIwNjg5MWQyODYwMDY2Y2VjOTdmNDQ2Yjg1NjM4NWQyMTY0ODBiIGxlZ2FjeS10cnVuaworMTI1NTAgN2I4OGMxMmI4NzAxY2RlNjYzMTUzNDRkNTI2NmZlODAwZDE5N2VlNSBsZWdhY3ktdHJ1bmsKKzEyNTUxIGRjZTEwNGUxYTczYmJkY2NhZTY0YWFlZTgxNWNiMDE1MTY5NjExZWUgbGVnYWN5LXRydW5rCisxMjU1MiA2Njg1OGZkZjQ2N2ViYTFjNTJkNjAzMjNmNzEyZGE0OThlODg3NzViIGxlZ2FjeS10cnVuaworMTI1NTMgZjA3MjAzY2MyNzQwYTkxOTcxMjc4OThmNTBjYmNkN2Y1NjYyZWMwMiBsZWdhY3ktdHJ1bmsKKzEyNTU0IDc5NGEyMWE1YWQzNWUxOTFhYzk2YTEyMWZmYjQ0ZDIyOTg3NTRiNDEgbGVnYWN5LXRydW5rCisxMjU1NSBmMzNlZDllMmE2MDdmYTRjOWNkNTgyYTU5NjMwZjdhOGRiZTVhMGE1IGxlZ2FjeS10cnVuaworMTI1NTYgMjdjYzdhMzE0NTAyNjYwYTc3MjNhNTBiOTE3MDk4NWNlMjlkOGUzNiBsZWdhY3ktdHJ1bmsKKzEyNTU3IDgwZTBhYWIxNzA1ZWJkNTQyMDJhYzEzNDAzNDg5ODlkODRkZjYwMjkgbGVnYWN5LXRydW5rCisxMjU1OCBiODJhNjFhODg0Y2YyODc2MDdhN2U3MmNlNDZjY2RkZjhlYzBlYmQxIGxlZ2FjeS10cnVuaworMTI1NTkgMDc1Zjg3MWQ4MGI1NWVlYWE1NDkzOTdkZmQ5ZmUxOGUxYjNmODcxOCBsZWdhY3ktdHJ1bmsKKzEyNTYwIGVlNjI1NjA4MTM2NmQyODE1YzhhZTFiMzYzMzQ4YTEzNTNjNTJiMjIgbGVnYWN5LXRydW5rCisxMjU2MSBjODhhYTk1OTNhMDhlZDExMDMwZDZmNjI3ZTI4ZTc5OTg1MGRhMDMxIGxlZ2FjeS10cnVuaworMTI1NjIgMDE1Y2I2MjMxZjNmOGU2NmVjYTFkZjA5NDZmZDhhNjVhZjVmZDc2ZSBsZWdhY3ktdHJ1bmsKKzEyNTYzIGRkZGE1ODU0ZTNlYWQ1MjIwZDZmYTBiOGY1Njc4ZDJhMDgyMzRmYzQgbGVnYWN5LXRydW5rCisxMjU2NCBkNWU2NGE2MTYzMjAwM2M2YzZhN2RmNmNlODJmZTM3N2M2N2ZkODJkIGxlZ2FjeS10cnVuaworMTI1NjUgOGZmZTQ1MDQyOGIxYjMzOTAxMDVjMGNjOTc4YmMwOGJiOWFlNDkzNSBsZWdhY3ktdHJ1bmsKKzEyNTY2IGQ5YjdhMjA4MDk3MWJhMzA5ZWIwZGU3ZmRjNTQ5ZWMzZGE1NTZhMmEgbGVnYWN5LXRydW5rCisxMjU2NyA2YWJkODRhYWIwOGE4ZTUyOTFhMDJiMjhiMDIzOThiMTRlY2ZhYzE5IGxlZ2FjeS10cnVuaworMTI1NjggZDdmNDM0ZDc4NGJmOWU2ODkyY2RmZTVjNmJjZTliYWZkMzUzYzJiMCBsZWdhY3ktdHJ1bmsKKzEyNTY5IDcxMDIyODkwNDJkNWU4ZTQ0OTBjNGEyNjYzNWZjZTYzOTgyZThhMzUgbGVnYWN5LXRydW5rCisxMjU3MCA2ZDZmNDI3YWI2ZWNiMTgzNjNiZjYyY2RhODQ1YjFhZDAxNGEyMzY5IGxlZ2FjeS10cnVuaworMTI1NzEgNWUwMTY0NWVlNDFiOGMyMGNkNmYwMDEzNTlhZGY2MmM0NmY2ZjQzYiBsZWdhY3ktdHJ1bmsKKzEyNTcyIDEzNzE3OTE4NjkyN2EwNDBjMGVhODJhYTczZmIzZTMxOTZhODQwYTcgbGVnYWN5LXRydW5rCisxMjU3MyA2N2VkMDVjZjE3MWQwOGY1MzVhMGFhYTNiYzBlOTMwODc0MzE4YmFmIGxlZ2FjeS10cnVuaworMTI1NzQgZWNlYmNkODRkZjM3YjJhZWYwZTIyNTA3NWVmOTA3OWExYjIzYTkyMiBsZWdhY3ktdHJ1bmsKKzEyNTc1IDFlMjFlMjI0NTNkYzNjNGM4NThkMjU4OGQ1OTgzNzcwMWQxODljZmQgbGVnYWN5LXRydW5rCisxMjU3NiBkNGU5NjMyNTAzZGZkYTMzMDRiZWNhZmIyNTM1YTVlYzQ4MDkxMmQ5IGxlZ2FjeS10cnVuaworMTI1NzcgZDZiYThlNWU1NWFkNGM4OWE0ODc2NGU3ZmFjYjQyYTE2MTQ4YTg0ZiBsZWdhY3ktdHJ1bmsKKzEyNTc4IGNiZjU1MDNiMzJkNTU5YjYzYjNjMTE5Y2E5NTE0OTQ3NmZkZDA0MjAgbGVnYWN5LXRydW5rCisxMjU3OSA4MGIyMTUyNDliMTdkNTFiMjY1MGY5YmEwZTg4Zjc1OTM0YmIxZmY5IGxlZ2FjeS10cnVuaworMTI1ODAgYzNkNTA2Nzk0OTY3ZGY4NDFjYzIxYjk4OWYzY2M2YTkyM2I2OTdmNSBsZWdhY3ktdHJ1bmsKKzEyNTgxIGJjMzYwMmE4M2FkMzI5NWIyZDYzZjhhOGI3Y2IzYTJlMWZkNWY4YTcgbGVnYWN5LXRydW5rCisxMjU4MiA2ZjQyYzhmZTg3NWI3ZGUyMjU4NDc1ZjI0NjViZGNmMWI2ODA3MGFiIGxlZ2FjeS10cnVuaworMTI1ODMgNDhhZjJjNmI3NDFlOWM4MGNkMzBjYWE2NGI3OTUxNjEwNzM4YjQyNiBsZWdhY3ktdHJ1bmsKKzEyNTg0IGI1NDU0ZGMyMmRjYjgxMWYzZjIxMjdjY2MwN2VhNWEyYjMyZmM5NWEgbGVnYWN5LXRydW5rCisxMjU4NSA0ODk0ZGNlYTEyNmI0MDc5ZGM2MGUyMDc5YWQ1ZDY1MjYyODRjNTYyIGxlZ2FjeS10cnVuaworMTI1ODYgNTgyM2I2MTVjMzAxZTNiYjY5ZmY5OTE3ZjQwODBiNjA0MDlhYTMxMyBsZWdhY3ktdHJ1bmsKKzEyNTg3IGQzZTQ0ZTYxMGVhMTRiMjI3ZDAwZjI1NTFlZjdmODhiNjc5MjI1YzYgbGVnYWN5LXRydW5rCisxMjU4OCBjNzE0NGU3ZTg0OTQyMDUwNGY0MjNmNzFkMjlkOWFmMTEwOWFjZmE1IGxlZ2FjeS10cnVuaworMTI1ODkgOWVmYTQyNDQ1ZWM5YWZlZWUzMmI5YjAxY2NjYmYzYTEyY2EyYjJjMyBsZWdhY3ktdHJ1bmsKKzEyNTkwIGY1YTU1ZDMyNzYwODNlYmM1MDFhNGM5N2I5MDQ1NGIyNTk1Y2U2OWEgbGVnYWN5LXRydW5rCisxMjU5MSAyYTllZjFlMGY1NDFkOWRlMTgxNTNkZjgyMTQ4ZjgxZWNhOWI0MzE1IGxlZ2FjeS10cnVuaworMTI1OTIgYWEwMzM2NTI3YzRlOTU2MzM5NGRiMDRhMjBhOGZkNDJkNDYxZTdiZiBsZWdhY3ktdHJ1bmsKKzEyNTkzIDk2NTg2ZGIzNzlmYmE5ZDk4NGM2MzY4NjRiNDBmN2I0NGE5ODk4N2YgbGVnYWN5LXRydW5rCisxMjU5NCA1NzQwNzVlOWEyNWY0ZGI3YjU0NjE5NTdmNWEzZDdjNmZhNjA5ZmJlIGxlZ2FjeS10cnVuaworMTI1OTUgZDhjNDM3OGViODdkYWJlOTQ4MzM3NTIwNTViYjAxNjdiYjFhZWYxYSBsZWdhY3ktdHJ1bmsKKzEyNTk2IDFkMjhjN2UxNjYzNjU3MzE1ZDhiYTFlMTJiM2RkODFmMjNmZWExNzQgbGVnYWN5LXRydW5rCisxMjU5NyA3ZWFkNGEwNDQyN2U4ODQwMmM3NTU2ZTNiZjRlOWUyNjFhNWU1MjNhIGxlZ2FjeS10cnVuaworMTI1OTggM2FlMDNiOWI2NWVkYzJhMDlkOGZiNGRkY2JkZDgwNDY1NThhOTE2MyBsZWdhY3ktdHJ1bmsKKzEyNTk5IGY1ZjFiNWU5ODE0YTQ4ZWEyZWNjYjFjMTQxOTc1Y2JkMDRiYmJhM2YgbGVnYWN5LXRydW5rCisxMjYwMCAzZjdkYzNkZTA2MTcwZDQ5OGMxNmNiMDAxYjUwNzU2YWViNjEyYTQ1IGxlZ2FjeS10cnVuaworMTI2MDEgOWEzYTQ2OTI4ZGJmZWI4ZmIyYzM5ZWZjYWIyYzI5OTJiZmUzODk4MyBsZWdhY3ktdHJ1bmsKKzEyNjAyIDkxODQ4NjJiZDhkMWU5MmRjMjNmN2E2ZjBhZjY3MzliZGUyMGY3MzQgbGVnYWN5LXRydW5rCisxMjYwMyA2YjI4YjVmMTk3Y2ZiMDQ4MmQwNGUzMDgxNWFjYTQ0MWY1YjA2NWNlIGxlZ2FjeS10cnVuaworMTI2MDQgYzdkZmQ2MTkzNTBiYzdmNGE5YzM3ODliYzY0YTcwN2YwYjhhZWZkNCBsZWdhY3ktdHJ1bmsKKzEyNjA1IGVmZjA4YmQ4MTY1ZDgyYWZmMmQ3MzM5NzY1NDQxMDViYTQ5ODhhMzEgbGVnYWN5LXRydW5rCisxMjYwNiA1OGU3Y2M1YTM4NDEzMDBjYTVhYjEyNmEwZjRkNGZmZjQ4NDgzMzExIGxlZ2FjeS10cnVuaworMTI2MDcgZTZiYmEwMmZmNjI0Njg0YmIwNzZjZjcxZDZmOGE1NGU4OTE4ZDZhYSBsZWdhY3ktdHJ1bmsKKzEyNjA4IDE2YWE3MzU4OGQ5M2I2OGY1MDIwM2QyMWE4YWQ5Njg3NWIwN2ZkNDEgbGVnYWN5LXRydW5rCisxMjYwOSA2OTdlMGM5ZDA5NDBlYzk1M2MwMzQ4ZThiZDlhZThhMDk5MzM5Y2JhIGxlZ2FjeS10cnVuaworMTI2MTAgNTJkNTdjYzAzZjQyOWU4MmU0N2VhMjViNzdjMDhmOGVhMjFlNzY1ZiBsZWdhY3ktdHJ1bmsKKzEyNjExIDNkNTg3ZTY1M2YyZDY1OGQ5OGUxMTYxNzg0OGMwOTA5MWU3Y2FmOWEgbGVnYWN5LXRydW5rCisxMjYxMiAzMWMxMTI1OTRhYjYzN2FlOGI0YzJmOWFiYmZhZDBmYzZjOWI4Njc1IGxlZ2FjeS10cnVuaworMTI2MTMgM2Y5Mzg1ODdmMmEzZjAyYTA5ZWU3MGNkZTAzYTZkYTU3NTdkNTMzNSBsZWdhY3ktdHJ1bmsKKzEyNjE0IGFiZjQ5MzA2NDdlMjgyMmI3ODBmN2Q0YzA2NTgyOTRmN2MxNGU4NjkgbGVnYWN5LXRydW5rCisxMjYxNSBlOWY1OTg1YjZlYTQ2NGY4MWNhZDNiMjQ5M2ExNWRlY2Y0MzA2YTU1IGxlZ2FjeS10cnVuaworMTI2MTYgNTA4YTYzOWQ4ZmViMzVhZjYyM2Q1MzUzYjMzZWFmNjQwNzU1ZDU1OCBsZWdhY3ktdHJ1bmsKKzEyNjE3IGE5OTg4NWFmMzlmODhjNGVlOGU1MTEzMzJlOTJjMDg3ZjM3NzNiMmMgbGVnYWN5LXRydW5rCisxMjYxOCA0OWU3ZTIxODQ5YjNjYzUxZmRiNjVjNWE0MWU4MTYyYjU3OTNhMzY1IGxlZ2FjeS10cnVuaworMTI2MTkgMzE0NWRlZjU4M2UyY2ExNGUzOTlhOWM3MjRmNDA2YmIxZWQ5ZDA5OSBsZWdhY3ktdHJ1bmsKKzEyNjIwIGE5ZmM3Mzk4Y2U3YmJmN2Y2NjdmZGZmMmYwMzIxNGVkOGEyZTE5NWUgbGVnYWN5LXRydW5rCisxMjYyMSBhNjNjOWMzZTllY2MwMWQ0Zjc1MzZiZTIyYzM2NTlhZDllYjk3ODc0IGxlZ2FjeS10cnVuaworMTI2MjIgNWIxNTY0MmU3YmRmNGEyOGQ3Nzc3OGU4NDk5MWJmYzFmZTlmZGY2OCBsZWdhY3ktdHJ1bmsKKzEyNjIzIGI3ZDgxMjVjMjQxN2Q4N2RjM2NiMDRjYmQ4YmM3M2M1Y2E3MDJhYTggbGVnYWN5LXRydW5rCisxMjYyNCBjYmIzYjJjNTU1ZDdhNzBhMTY5NjQxMmM4NzkxMGJhMTY1ZDZjODVjIGxlZ2FjeS10cnVuaworMTI2MjUgYmMyODdjNmNmYTIzMGYwNTY2ZTA0ZjY3M2Q0YmIxMGMyN2JlYzU1MCBsZWdhY3ktdHJ1bmsKKzEyNjI2IGZiOTY2NTYyZGIwZTYxZTYxMWVjYTI2NjgxM2UwN2E2Y2I3Y2E0NjAgbGVnYWN5LXRydW5rCisxMjYyNyA2NDcyOGE1MWNiNTUxZTg2YjQzY2U2MTQwMThiZjMwMzgzZjdkODljIGxlZ2FjeS10cnVuaworMTI2MjggODlmNjU1NmYwNTllYjY4M2MwZjM0ZDIyN2E2N2RmMDE0ZmY4MDUzNyBsZWdhY3ktdHJ1bmsKKzEyNjI5IGJhZmNkN2I2MjMyNzVjNzUzZTJkNWY5NTUxMjY5NTZjYWEyYjI0MWUgbGVnYWN5LXRydW5rCisxMjYzMCAwZGQ0ZmFmZWZkNmM0OGE0YzM4NmM4MjhkNmVkYjY2OTQ0YzU3ZTk3IGxlZ2FjeS10cnVuaworMTI2MzEgOGI1NWM1MTU2ODNkOTI3Y2FjMzBiMGJmYzk0YTAxNTkzZjBlNjQyMyBsZWdhY3ktdHJ1bmsKKzEyNjMyIGU1NjlmOWIwZDk2OWExMWI2ZWM3ZDE5ZTJmMWU2ZjY1MzRjYWUxNWYgbGVnYWN5LXRydW5rCisxMjYzMyAxYWMyYThiYjdkYzEwODY0YzA5YTk3MGE1MzMwYjEzZDNlY2Q0Mjc2IGxlZ2FjeS10cnVuaworMTI2MzQgNjRlNjRlZjA4ZDFjOTExNTZhYjA3NjM1ZjM2NjI3MDE4ZGQ0YWRhYiBsZWdhY3ktdHJ1bmsKKzEyNjM1IDU3MThlODMwMjBhZTk1ZTUzYmJiZDUxMWIzYTc2ZGNlYWFmOWJhOTMgbGVnYWN5LXRydW5rCisxMjYzNiAxMzlkNWYxYTZmODk5ZDdjYjNmMDlkN2E1ZmQ3NWE2OGQ0NzliNWQxIGxlZ2FjeS10cnVuaworMTI2MzcgMGMwN2MwZGJlMzI4MmMwNGI5ZDA3NWU1NTFkYzRhZDdlYWYxNWU3YSBsZWdhY3ktdHJ1bmsKKzEyNjM4IDY1NzMxNjk4YzZlZGY0YTc2YWY2ZTE0NmViMjk0YzgzZWQ3ODI1NTQgbGVnYWN5LXRydW5rCisxMjYzOSA0OWNmMTQxMjQ0NWYzMjA5NjBjMDNmMWE0MDQ1N2ZjZGIxN2E5YWUwIGxlZ2FjeS10cnVuaworMTI2NDAgYjIxOTE1ZTY1ODllMDRmOThmYzEzN2FiYTFjZDUxMjZjMzY5NDk5MSBsZWdhY3ktdHJ1bmsKKzEyNjQxIGJjMDM0NzY0M2VjZmM2Y2FiOTViODM1MTU0NjA3MTE0OTAwNjBhY2UgbGVnYWN5LXRydW5rCisxMjY0MiA5MjMyMzYxMjk0YmI2OTI0NWZlMWM1Y2Y4ODM2MzMxNDRmNjE4NzY1IGxlZ2FjeS10cnVuaworMTI2NDMgMDk5MDJlMTMwNTM3MzQ0ZTNjZWIyMWMxNjI0NjEyNzIzNjMyYzM0OSBsZWdhY3ktdHJ1bmsKKzEyNjQ0IDViZGI3MmIxOTU3ZTE2ZTdhYjg4NzNkYzAyMDQ4MjRmZTNiYjU4MTUgbGVnYWN5LXRydW5rCisxMjY0NSAzYzY5OGI1M2JlNTkyMTE2ZmIzMGQyODc2NjQwNzA0NmI4MDg1YWIyIGxlZ2FjeS10cnVuaworMTI2NDYgYWJkM2YwNjZjODdhYzUzOWY1NGJjMmY5MDQyMWQ2YmE2MmRhOThmZiBsZWdhY3ktdHJ1bmsKKzEyNjQ3IDgyODQ5MjcwMjViZTZmZDJiNGFkNzljNTMyYTU2OTk1ZGQ1OWJkMmUgbGVnYWN5LXRydW5rCisxMjY0OCBiZDQ5ZjkxZDU5YjJkMzFhNDI4OTQ1Yzg0MzdlMTZmNTlkNDZjZjY3IGxlZ2FjeS10cnVuaworMTI2NDkgM2FjN2YwMDY2Mzc1ZmM4NjFmMzQ5YjFkMDExMWUyZGYwNDI2NGQ4MSBsZWdhY3ktdHJ1bmsKKzEyNjUwIGU0MGJjZjZiYzFjOGJhMzYwNmY0MThkMDNlMjY3ODQyZDM3MTM5MzMgbGVnYWN5LXRydW5rCisxMjY1MSA5NTllODFiMzliODExMjJmNjczMGE4NjhmYjI1ZWEyNTZjZTQ1YzJkIGxlZ2FjeS10cnVuaworMTI2NTIgOWE2YzNkYzFkY2QzZjBlMTRlY2VhNjg0MzQ3ZjgyNzFiZjRhODA3OCBsZWdhY3ktdHJ1bmsKKzEyNjUzIDFkM2ZlN2M4OGNjOGM0MzNkOGU1MmFhNThjMmQ0MzJiMDVmMjY2ZDUgbGVnYWN5LXRydW5rCisxMjY1NCA2MmRjOWZmOWNkNGMzOTJjY2RlZDE3NTlmYjA5YjRhODkxMjkyYjIwIGxlZ2FjeS10cnVuaworMTI2NTUgOWFhNDM5MGJlMzhiN2MwYWMyOGFlMWU0M2NiYTMyNjNkMzFkMzQ5YyBsZWdhY3ktdHJ1bmsKKzEyNjU2IGQzN2YwMzEyNGM1NGY4MjNmNGIyY2FmOTRlYzVlYTYzMjQ2NTM5NTEgbGVnYWN5LXRydW5rCisxMjY1NyA4NDY0ZTMxMzc2ZWQ5YmYxYTMwYjg3MzAwZDJiOGFhZTcyZmY0OWQyIGxlZ2FjeS10cnVuaworMTI2NTggMGY3ZDY5NGJjMzM0ZWZmMGYxY2MwMDEwMzExNWQ0YTJjNTkzNDJiNiBsZWdhY3ktdHJ1bmsKKzEyNjU5IDEzMjM5YjQ4YzQ2OWMxYTgyOTFjMDVmOTFjNzNiMjI3Y2Y1YjY3YzMgbGVnYWN5LXRydW5rCisxMjY2MCA2MjViN2NlYmZkZTJiMmQ5ZDAzZjg5MzIyOWNiNDkwNDFlOTA3ZDczIGxlZ2FjeS10cnVuaworMTI2NjEgM2I3YjZkNWYxOTMxNjdkYzk4NGRhYjBiYzNhMjdkZGYzNTkyY2YxNCBsZWdhY3ktdHJ1bmsKKzEyNjYyIDNiYTAyNWJhN2YwOTUwNGI3MThlOWEwZDkwYWJiMWU0ZDA3YWJhYzQgbGVnYWN5LXRydW5rCisxMjY2MyA1YzFlYmYyM2YxZDc3YjQzZGU0MTczYTViMzllYzEwN2ZmYjBhMjljIGxlZ2FjeS10cnVuaworMTI2NjQgNTY0ZjAzNjMyOTE2MjVkY2NjNGIzNTZkN2RiNWFiMjY4YjczNTJmYiBsZWdhY3ktdHJ1bmsKKzEyNjY1IGRkZjg2MWQ4NGJiYjkyMjg0YjM0NGUzOWRkZGM4Y2JjMjAzYTZhNDkgbGVnYWN5LXRydW5rCisxMjY2NiAxNTRjNjQwOGMzYzJkZGNkNmNjNGY0MTQ4MTNiNjhkZDJmMWU4MDAzIGxlZ2FjeS10cnVuaworMTI2NjcgOWM5Y2Y0NTcyYTk3N2VmNmY3YmRmNTlhNzk4YzRjMTg2ZTBlNWFjYSBsZWdhY3ktdHJ1bmsKKzEyNjY4IDNmMTNlZTU5MmE0MGY4M2UyOTEyZTAxZGVhN2VlZDE4ZjFiM2Y0MWQgbGVnYWN5LXRydW5rCisxMjY2OSBiZDhjNDNkYWVmODVlMjA0MWFkOTlhMWMyOTE0YjdiN2RlZjZhNzdkIGxlZ2FjeS10cnVuaworMTI2NzAgNzYyY2ZlOTZmYWY5ZDcxZWRiN2FhYzdiYTBkM2Y5Y2Y3YWIxMWI3YSBsZWdhY3ktdHJ1bmsKKzEyNjcxIGJhMjViMmQzZDc4NGQ3ZDdlNTYzYzU3YzA3ZDFlNDBmNGY4OWQxOWUgbGVnYWN5LXRydW5rCisxMjY3MiA3Y2Y5NzY1OGNhZTdlMzZmMzk2MzU0MzA2NzU4YTk2MDRlNzIxMjk0IGxlZ2FjeS10cnVuaworMTI2NzMgNzNlNWUzZjUxYjg3NGZjOTczOWIwMmFjMjYzN2EwM2I3NTU2MTAzZSBsZWdhY3ktdHJ1bmsKKzEyNjc0IDk2NTUwYjVkMDllMTRjMmQ2OGY1YmI3MDE1Nzc1M2E1MTIyMDQ3MzQgbGVnYWN5LXRydW5rCisxMjY3NSA2YTFjYjZmMzdhNTJjNWI3MGM0M2VjYmU1YmMzMDNhY2VmNzc4ZTNiIGxlZ2FjeS10cnVuaworMTI2NzYgNzQ0ZGI4NmUwMzExYWZkZjY2MzY0ZDAxMzg5NDY2YjYxM2M2OTBjZiBsZWdhY3ktdHJ1bmsKKzEyNjc3IDQ5ZDc3NmYzODc4ZDhkZDUwNDU3YWM2NTcxNTVkZDMxNTZmMDc0MjMgbGVnYWN5LXRydW5rCisxMjY3OCBhNzlkY2QyN2JkYzNhNmI1ZjlmYTkwODMzNjQxMGQ5NGQxZjUyYTZlIGxlZ2FjeS10cnVuaworMTI2NzkgMzVmOTFjYWVhYThkYTM3NTQ3M2Y4NDY2N2FhYzM5ODUzMTQwYjA2MiBsZWdhY3ktdHJ1bmsKKzEyNjgwIGYwYTU3Y2NmMjMzY2IzNTZkOTdlMzUxMjI5Mjg4NjAyNTFhYmNjNTYgbGVnYWN5LXRydW5rCisxMjY4MSAwNGI4ODA0MmE5MmI4ZmMyZGM4NWIwYWVlZGJkZGE4NjM0YTE0MTE2IGxlZ2FjeS10cnVuaworMTI2ODIgMDA1YmE0MTJhOGVjYjUyYTQwNjk1MDJjNmFiOWRjZTMyYzZiNTliNSBsZWdhY3ktdHJ1bmsKKzEyNjgzIGI4OTMyYWI0MWFkZDRmMjAxY2Y5M2IwYmU3ZjdkOTA2NzBiZGY1OWUgbGVnYWN5LXRydW5rCisxMjY4NCA1NTM5YWViZjg5MzhhODY0NTlkMWNlNjVkMTgxMTNkNTVjMDJjNjRiIGxlZ2FjeS10cnVuaworMTI2ODUgNmRiY2Q1YTZlNWU2MThiNzUxYjFiYWQzNWQzZGY2YTM2OGI1MjdkMSBsZWdhY3ktdHJ1bmsKKzEyNjg2IGQ4NjQwMDUwMGFhMDM3MzE1MzVhZTM3YWY4ZWI5NTE3Y2ZhZDlmNGMgbGVnYWN5LXRydW5rCisxMjY4NyBiMjZlMjUxNTg5MjJlZjdkMjMyZTdjMGMxYWQzNWZjNGEyOWUyMzJlIGxlZ2FjeS10cnVuaworMTI2ODggNjJlNjEwNTg0ODBhMzk5MzJmZDI0YmE3YzNkYjA4ZjhhYTY3N2MwNyBsZWdhY3ktdHJ1bmsKKzEyNjg5IGVlMWQzMmY3YTA1NWYwYjhkMWI1Nzg3ODYzY2U0MDIyMzk3YjlhZjEgbGVnYWN5LXRydW5rCisxMjY5MCA2NjMzYzNmY2E2MjYzZjM2ZWE2MTBiZGE3NDE1YTU3ZjM3OTI1NjI5IGxlZ2FjeS10cnVuaworMTI2OTEgYmQzMGQzOTc5N2E0MDllYmQzYmRhYTYwYWIwZTJlNThkZTNjNDVmZSBsZWdhY3ktdHJ1bmsKKzEyNjkyIDhmNGFkMTRjMzQwNzNjYzhlYzE0NzVjZDMwNWYxZmI4MWIxODRiMTggbGVnYWN5LXRydW5rCisxMjY5MyBiMGYwNGI3Yzk0MDcxZTcyZDhhOTYxY2QzMjUxNjhjMDQxNTVkMTlhIGxlZ2FjeS10cnVuaworMTI2OTQgNGFmODRjZGNmZGI1M2QyMDliNDZhYzM0MzdjMzM0MTViYTczM2NmYyBsZWdhY3ktdHJ1bmsKKzEyNjk1IDY3ZjFkNmJkNThjZmJhMTA5MzNlZDU0ODVkZjY5Y2IzMTBiZjkzMTkgbGVnYWN5LXRydW5rCisxMjY5NiAxZDk0MjQ4ZmUyYjk5YTI5OWU0MDJjNDY0YmE2MjVhMjgzNTk0NWYyIGxlZ2FjeS10cnVuaworMTI2OTcgYTM2OTg2NTY5YWYxOGQ2ODQxZDk2MTY2NWZkN2JjODI5NDE0NTU3YyBsZWdhY3ktdHJ1bmsKKzEyNjk4IDFlMGRkMmVmMzk3MWMyYWNiMGQwNzU3ZTE0YWU4ZTQ1YWNkNWNlNDcgbGVnYWN5LXRydW5rCisxMjY5OSBkZTdjMDAwMzU3OGY4YWE2ZTI5ZmFkNzBhNzhhZmFmYTIyOTMxODMwIGxlZ2FjeS10cnVuaworMTI3MDAgYjVmMDdhNGE2NTRiZjA3MWMxNWNjYjgzNjk0ZjUxZjRjM2ZkNjJhZCBsZWdhY3ktdHJ1bmsKKzEyNzAxIDI3OTAyNTU1ZjY3MjFkZDNhMDIxMWJlMmY0NmNhM2JkODVhNjA4MzYgbGVnYWN5LXRydW5rCisxMjcwMiAwNDljOTEzNDNmOTU4OGFmNTA0MTlkZWY1Mzc2ZmU1OTY4YTg4Yjk4IGxlZ2FjeS10cnVuaworMTI3MDMgYzBmNjljYmU4MDVkMTdlNmE5NDNlZGE0MWRkM2JjMmU1M2E3MGI4ZSBsZWdhY3ktdHJ1bmsKKzEyNzA0IGUxZGEyOTBhY2M1ZjEwZWRkMDM5YTdjOWJlNTgzZDAzZmFkZTVhN2QgbGVnYWN5LXRydW5rCisxMjcwNSBkZmRmZjg3MjQ4ODc1ZGY1NmE0MWEzZGMyZmRmYzQ2YjIyMDAxZjYxIGxlZ2FjeS10cnVuaworMTI3MDYgYmY0MTg0MGM4MTUwNzIyYWEwYjhiOGFiNjljY2YyYmIzYzZjMTk1MCBsZWdhY3ktdHJ1bmsKKzEyNzA3IDFjNTlhOTllOTk3MGYwNjk1MzQ0OTU5MjRhYjRmZTM4N2YxNjhhM2UgbGVnYWN5LXRydW5rCisxMjcwOCAwMmIxNzJhNWQ4OTNkN2E3MTFjYTg2MzBhNTAyY2NkZjg5YWRhYzI3IGxlZ2FjeS10cnVuaworMTI3MDkgMjlkMWQzYjA4Y2E3ZDRmNTk2ZTMxNGFiODE5ZDVkNjhhYWU2Nzk2MCBsZWdhY3ktdHJ1bmsKKzEyNzEwIGE4NmZlMWYzY2Y0ZTY1YjM3NTI2YzlhOGFlZjliZDk0ZTg4ODFlZWUgbGVnYWN5LXRydW5rCisxMjcxMSBkMjgyMjc0ZmJiNzIyZmQ4NTVjNzkxZjcxMjE0ZjcyMzYxOWRlYmJjIGxlZ2FjeS10cnVuaworMTI3MTIgYjFkNDBmYjEwYWY2Y2JkOWRlNTg1YWY2ODE1Mjc0MGM1YTkwOGExZCBsZWdhY3ktdHJ1bmsKKzEyNzEzIDMyYjQzZTVkODhkMzU4MWRhNjAyMTE5OTY4NWFjMzVkMGRlNDlhN2YgbGVnYWN5LXRydW5rCisxMjcxNCBlMzM5N2FlODgxMjkyMWU4NTYzNDI0NjljYWEyMWY1MmEwZTI4MmY4IGxlZ2FjeS10cnVuaworMTI3MTUgMDJlMTMzZWFiYWM2OTZkZjZhN2JiYTAxODhjMjRkYzQ2MzI2YWY5YyBsZWdhY3ktdHJ1bmsKKzEyNzE2IDFmYmM0YmFlMjhjZjA1ODcxNzRiMWQ3N2Q2ZDkwYmQ2MTk3ODAyNmUgbGVnYWN5LXRydW5rCisxMjcxNyBkMTY4NmNmMDhkMTE2YzcxN2U1ZjM2ODNiZTZiYzJmYjk4YmQ0MmU4IGxlZ2FjeS10cnVuaworMTI3MTggNjFlZGQzYjg1ZDYzNjlkMmNhYzc0N2RkYjI5ZjE0NzM3ZGI3MDNjNCBsZWdhY3ktdHJ1bmsKKzEyNzE5IGNkNDc2NDQyZWY3MTViNjI0ZTY5OTFkMTRjOTNkNWVkNTMwMDlmYmMgbGVnYWN5LXRydW5rCisxMjcyMCA0NzdlOTgxMDljN2Q2NjE1MTg4MGZiMmNjMzM1Yjg3MTljNDM1ZGQyIGxlZ2FjeS10cnVuaworMTI3MjEgYTI5MTkyZjJkNDdhZmNmNjQzMzA4NTc3OWEzOTY5OGFlYzZiZmU0NiBsZWdhY3ktdHJ1bmsKKzEyNzIyIDBlZjEwNzFjYjdmZWVkOTE3MzU3N2JlZjk1OTZjMDljYjliMjMwMDIgbGVnYWN5LXRydW5rCisxMjcyMyBmZWI0MTUwMDg3NjVlNDNlZTY5MTI0MjU5ZWQ4ZDkzYTYzMDRkYzA0IGxlZ2FjeS10cnVuaworMTI3MjQgYjMwMDc3YzU3MzQ4NTQyYmQ2MWU2ZDgxZjYxZGVlNGZjMjRiOTc3MiBsZWdhY3ktdHJ1bmsKKzEyNzI1IDU1M2VkNmFlOWU3YTg1ZmE0Zjg4NmUyY2VjZGQ5ZjVhNzk5OTE2M2IgbGVnYWN5LXRydW5rCisxMjcyNiBkZjRhOTY3YTgxNDYyZWJkMmZjMWZkYjhhNjUwMTk0YzQwZDVhOThkIGxlZ2FjeS10cnVuaworMTI3MjcgN2JiZTcxNjMxYzNmMDI4ODNiZTM2ZTYxYTg4NWNkMDEyZWJlOGQ1MSBsZWdhY3ktdHJ1bmsKKzEyNzI4IGNkMTMwYzk1NThkYjM4YjZlZTYwOWMwODRkYmY4ZDgzN2IwZWQ0NDcgbGVnYWN5LXRydW5rCisxMjcyOSBhZTYxMzUyOTc1NzQyZmI5MDYzOTAyM2NhYWNmOWIyZGQxODgwNjM1IGxlZ2FjeS10cnVuaworMTI3MjkgOGZlN2VjNGI0ZmMxNTE4ZmNhYzg5ZTZiZjY3NGZiYmNlMTYxNTBhOSBsZWdhY3ktdHJ1bmsKKzEyNzMxIGNlNTdlYjMwOTY4YTViODkyYzhkMTc3Y2EwOGU1MWY4YTdmZmViYzUgbGVnYWN5LXRydW5rCisxMjczMiAwZTE0N2E1MTc0YTE1MjE5ZTE1ZGI2ZWMzNzUwZjZiMDE4OTg2ZGIyIGxlZ2FjeS10cnVuaworMTI3MzMgYTY1Zjg3NTg0MzU0YWU2NmEyMjRmMDZlNzA1ZTMyY2MyZGIzMTk1NyBsZWdhY3ktdHJ1bmsKKzEyNzM0IDhjY2NmYzZkNjI3MjM2NzRhYjNmYzQ4ZjM2M2ZkYThmYWZlNjQyMWMgbGVnYWN5LXRydW5rCisxMjczNSAyNDlkOWEyYjViYzk2OGRmNDkyOWExZmY4NWZkNWYzMzZhZWI2NmU0IGxlZ2FjeS10cnVuaworMTI3MzYgOTJmY2U0MTRmMzgyMzA4ZDRjNmQ0MTJmNTBlYWZhMjc2MjEyMTE0ZiBsZWdhY3ktdHJ1bmsKKzEyNzM3IDU3NDRhNmRiMmQ0Zjg0MTk1NTA2MjUwNTY1ZmI3ZWQ3Yzc1ZDU0ZTYgbGVnYWN5LXRydW5rCisxMjczOCBjNWU4MzQ3ZWI4MDljMjhjNTUyMTIzYzU0ZTU0NjMzOTExNDIxYTdlIGxlZ2FjeS10cnVuaworMTI3MzkgZjFjY2JkNmE5NGNlMzMzZDJjNGYxM2Y0NzY4NDFjYjhlMTY2Y2NlOCBsZWdhY3ktdHJ1bmsKKzEyNzQwIDg2NjQyYjdhN2E2MGY1ODQ4ODA1YzU2NDgxMmJjMWU5OTU3NTU3MGUgbGVnYWN5LXRydW5rCisxMjc0MSBjMWJlZmRiZDY0ZTU3MjI5ZTUwYzU2NTU5NTY4NWU5Njk3MGUyNWFmIGxlZ2FjeS10cnVuaworMTI3NDIgMzU5MjQ0ZmE2YjUyYWIwZWJiYWY5Y2YwMzE3NjY1MGU4YjBiZWE2MCBsZWdhY3ktdHJ1bmsKKzEyNzQzIGYxMzhiYTcyYmYyZDlmMmUzZThlMTgwZTM5NWMyZjdmY2E3MmVmN2EgbGVnYWN5LXRydW5rCisxMjc0NCBiNmI5MzAwNmQwNzY4NDAwNjczMzMwM2ZiNGYwODEzYWMyODc2ZDA5IGxlZ2FjeS10cnVuaworMTI3NDUgNTc1YzRlYTI1NDJiYzBlMmY0NGI2M2FhYzBhZDEyZjhiMjk1MGZlNyBsZWdhY3ktdHJ1bmsKKzEyNzQ3IDMyYzQyMDQ3NDJiYWZkNmQzYzYyMjlhY2ExY2MzNmVkYjI0OTE4Y2MgbGVnYWN5LXRydW5rCisxMjc0OCBiZGJmZTBlYzk3MGY4OTJkNmJiODIwYTUzMGM1YzVjOTI3MWJjOTJjIGxlZ2FjeS10cnVuaworMTI3NDkgYzVmMTFjNWJmNWIyMjAwNjE0ODFhYzJhZWU0OTBmNDM3MmMzMDJkOSBsZWdhY3ktdHJ1bmsKKzEyNzUwIDFhMmEwYTNlOWRkYjJlMTIyZmNmYjE5ZjE0Nzg4N2M1OTgzMTIwMzYgbGVnYWN5LXRydW5rCisxMjc1MSA4OTVkODYxYTA4NzAxZmNkYzhiYmUyYTliNTQ0YzcxYzhmNGMwY2FmIGxlZ2FjeS10cnVuaworMTI3NTIgZTU5Y2E1ZDM0NmY0ZGYyYzg0NDZjM2MyYTAyMTVjM2I4NzE1MGFiYiBsZWdhY3ktdHJ1bmsKKzEyNzUzIDQ3YzExZTgyNzY5OTlmMDA3OGMwNzFkZTJiOTgzODNjNzcwMmY5NTYgbGVnYWN5LXRydW5rCisxMjc1NCBkODM5MzVkMTQwODQ1NjdmOGVhNDlkNjQ4ZDgzNTY3YjBlNmRjM2YxIGxlZ2FjeS10cnVuaworMTI3NTUgYzI3YzEwYzZiOWYyODI3NDAxZDhkMDNhZWM4MTQxYjRmNzg3YmJlYSBsZWdhY3ktdHJ1bmsKKzEyNzU2IDEzYjQ1Yzc0ZTk3YjUzMDY2MjI2MWIyZGEzN2U5YWI1ZDMyYjU5ZTIgbGVnYWN5LXRydW5rCisxMjc1NyA4ZmViMjk1MGRhN2IyNjMyMzhmYTJiNDBmYjQ2NGQ5YzRlMDdjYzg2IGxlZ2FjeS10cnVuaworMTI3NTggMDYxNGU3ZjE2NzQxZjJhMTU4OGUyNGQ0ZTI5MGM0MGEwZTY3YjNlOSBsZWdhY3ktdHJ1bmsKKzEyNzU5IGE0OTEzYmFlOWY5M2U3ZjQxMDAwMDk4MjU2NThlNjI3ZDIzM2JiY2QgbGVnYWN5LXRydW5rCisxMjc2MCAwY2I4ZTVlYTg0YThkYWFjMGU5NWQ0NDQ2OTdjYTk2YTkwMmE2ZmU2IGxlZ2FjeS10cnVuaworMTI3NjEgMTYzZmQzZDk1YzE3ZTQwNDgyMjRhMWM4OTIxMWVmODcxYTQxMGQ1YyBsZWdhY3ktdHJ1bmsKKzEyNzYyIDBhNWNkZDdlNWZjM2Y4NTBhNmJkYzE5ZWQyZDVjNDM0NmU2Yzg4ZDggbGVnYWN5LXRydW5rCisxMjc2MyAyNmEwMjA2MGJhYjE3NDE2Y2Y4MjRjNzVmNWRkNWFhZjlmMzM1NTQxIGxlZ2FjeS10cnVuaworMTI3NjQgYjY0ZjMzNTk0YTMxMTA2OThmMGViZGM3Y2M1NGJjNWNjZjFjNzdkMCBsZWdhY3ktdHJ1bmsKKzEyNzY1IGU4M2Y2NzZkMTVjMjg5Y2ViNmQ3YzkwM2I1NWNmMGFiNDIxZGEwZjggbGVnYWN5LXRydW5rCisxMjc2NiAyOTcwMWUyOTA0YWM1NDk3MDk5ZmQwNDNkMDMxNjA1ZmQzZjEzZDEyIGxlZ2FjeS10cnVuaworMTI3NjcgYjliYjc1ZGVkODA0YWNhNTdiZTk2M2FmMmRjZGQ0ODU2YWM5MmY1MyBsZWdhY3ktdHJ1bmsKKzEyNzY4IDQ4NzAwZjk5YzZhNmQzMWQ1MjJkMWM3NGQzYTEwZjM1MjJlMzNmZGYgbGVnYWN5LXRydW5rCisxMjc2OSAyZjQyNWE1N2Q5YWZlNzFlZjQ0ZWRlZjllOTEwMzA4M2E4YjBhOTgzIGxlZ2FjeS10cnVuaworMTI3NzAgYWJhYzdmNjI3NTdjODMxMThmNWYzZmRjYjVlODA3OWJkMGVjNmE4OSBsZWdhY3ktdHJ1bmsKKzEyNzcxIDM1ZGY0ZGMyZDMwZDU0MzYyZDVhMjkxNzhhYWM4ODE1ZmRlNWJiMTMgbGVnYWN5LXRydW5rCisxMjc3MiAwZTM1NWRmZDZmN2QxNWNjMzJkZjI3MjgwNjRmMWFhNjZjNDIzYWEzIGxlZ2FjeS10cnVuaworMTI3NzMgNjRiY2EzYmNhYTM3NGYxNzY1MGExNDIyMmQ2OGQxMjc5Mjk0MjdhZiBsZWdhY3ktdHJ1bmsKKzEyNzc0IDY1YTI1Mzk3MWVjY2U4NjY1M2U1MDMwMDgwY2JmZGU1NTc3OGFmOWEgbGVnYWN5LXRydW5rCisxMjc3NSBhMmE3NjgxYjI1ZjFmNTliZWNlY2E1ODVlMGZiZTFhMzkzZTI4N2Q4IGxlZ2FjeS10cnVuaworMTI3NzYgMDhlYWRjNjUwZWYwOTVjN2E1ZWQ2ZmJhZTNmZTg1ZGI5YjAzOTRjNiBsZWdhY3ktdHJ1bmsKKzEyNzc3IDE5ZDYxMjFmZTRmMzQzYzQ2M2JkNGNjMzhhZDFjNGY2NzIwNWE5YWIgbGVnYWN5LXRydW5rCisxMjc3OCA2MzJiZDNhNWRkZWY1YmRkMDVjMTkzYWY1NTkzOGJiNzE4YWMyM2JiIGxlZ2FjeS10cnVuaworMTI3NzkgYmE1YzYyOTA4MTIyNWEyYTkzZWVjNmI3OTliZGNkMjYzNzgyZWFlOCBsZWdhY3ktdHJ1bmsKKzEyNzgwIDg2MDM1YWU1MzA2YzExN2FmN2RmZGQyOTUzNjZlNTNkOGIyMDM5NzIgbGVnYWN5LXRydW5rCisxMjc4MSA0NmFjMTFiNzhlOTI3ODA1NmFhOTZlNzk2ZGFlN2ZkODJlYjhjMzA3IGxlZ2FjeS10cnVuaworMTI3ODIgODg2ZWEyNTVmMzgxZmYwYzZkYjcwZTI3OTEyMjJiMmViNzIxODhjMiBsZWdhY3ktdHJ1bmsKKzEyNzgzIGNjOWZkNTA2MzBhNjk5Y2IwM2MyYWYwYjMyNGYwYjc0ODMyMTkxZmYgbGVnYWN5LXRydW5rCisxMjc4NCBjZWYyYTEzNDU2OTVkMThmODIxMzBkNjFkNTYyNjM2Y2M4MWQzZDZlIGxlZ2FjeS10cnVuaworMTI3ODUgMDFkYWZjNTcxYTMwMzI4NTE4NjhjMTUwNWQ3ZmZiYjgxYzgxMTI4NyBsZWdhY3ktdHJ1bmsKKzEyNzg2IGQzYmVjZTQ2NDg2ZTI5ZDdhMmM1YTYyZjlmYmMxYzUxMWYzOWRkM2IgbGVnYWN5LXRydW5rCisxMjc4NyAwNmRhM2JhM2FhZGUyZTQ3ZWY3MmJjOGU2NTJhOGJhMDRjMmIzZTNjIGxlZ2FjeS10cnVuaworMTI3ODggY2Q0YzQ1MTBhZGJkNDdlOTg1MzE5ZGYxYzA3MGNmMWM1NDhjNDY5MCBsZWdhY3ktdHJ1bmsKKzEyNzg5IDNiODFhN2Q0MThjYmVlODg0NzYzMDI2ODc1Y2U5OWViYjM4Nzg0Y2QgbGVnYWN5LXRydW5rCisxMjc5MCAzZTNjMDllMTQ1MDMxZDQwMzliODhjOWFlZmRiNzdiMGM4NzJiNjEwIGxlZ2FjeS10cnVuaworMTI3OTEgNWMwYzA2MWRlMmFlYmE2ZjhlZDRlY2VkNjEzNTdmZjQwN2RmYzFiYiBsZWdhY3ktdHJ1bmsKKzEyNzkyIDFlNzY2ZGU3MTRkZWJiMGQzNzE4MmU1ODE2ODE4ODNhZjYwMWEzNzIgbGVnYWN5LXRydW5rCisxMjc5MyA1Y2M3MTIyNjcxYWVhZmE4ZTMxMDM3Njc0ZDIzZDI5NjE5OThlMjY5IGxlZ2FjeS10cnVuaworMTI3OTQgOWJlMjcyNmM5YjI1NGNkOGFkYTZhMWU3ZWExYzE2NWZhYzBlOWU1OSBsZWdhY3ktdHJ1bmsKKzEyNzk1IDFjNmIxMGRlYTlmMDVmODU2NDdlMGFjYWRiOTMwMTZkMzEzMDU4NDEgbGVnYWN5LXRydW5rCisxMjc5NiAyNmRiMWU5NmNhZjM5NDY5ZmU5OGE3OGU2YzY1NjlmN2FhYmU1OTFiIGxlZ2FjeS10cnVuaworMTI3OTcgYjc4MTM1YjEwYThlMWU2YmYzMGM5NTQ3NzBjODg1YjQ5N2FkYzRkOSBsZWdhY3ktdHJ1bmsKKzEyNzk4IDI0ZGVmNmMyNWIwYTA1MGFlZTFmYmVkMGUzMzdmNzcyNTgwM2RiMzMgbGVnYWN5LXRydW5rCisxMjc5OSA1MDAzNmQwNmU5NGFhODQwZGZmNTQ2YmI0OWQ1ZDE5YThmYjJjYjk2IGxlZ2FjeS10cnVuaworMTI4MDAgMzI0MTFhZjhjMDEyOTc2MDM2YjMxYTA5YTA2ODY5YTQwOTUxY2MzYSBsZWdhY3ktdHJ1bmsKKzEyODAxIGNjMGM5MDZjMjQxNTY2OGQzMTUyYzNkZTYzNjU0MTI2ZjI2ZWZlMjIgbGVnYWN5LXRydW5rCisxMjgwMiBhOTVjN2QyYTgzZjdkMDE1MWEwNDFkODU4MTcxMWNiN2JkNzk0ZGVmIGxlZ2FjeS10cnVuaworMTI4MDMgZmQwOWIzZmQxZWRjNGRhNGY5OGQzNzcxNzZlMWI3NzQ0ZDgwNTJkNyBsZWdhY3ktdHJ1bmsKKzEyODA0IDVlODk4OWMyZjg1ZGZkZmFlZjk5NzI1ZGNjZWZmYjZjYjcyYmM2OTkgbGVnYWN5LXRydW5rCisxMjgwNSA4OGE3ZDg1OTkwMGUzYTEzNzdlODMyZTA0M2ZlOTkyYTE2MjFiMWM2IGxlZ2FjeS10cnVuaworMTI4MDYgZjFmNjM2NGFkZGJkZWRjMTk5NGRlZjAxY2I1OTFkNWFmZDUxZjIwOCBsZWdhY3ktdHJ1bmsKKzEyODA3IGI2NDhmOWU4YjNlZGEyOWZhMTI1YzVhN2JiZjJmNTY4OTM3NTU4NmMgbGVnYWN5LXRydW5rCisxMjgwOCA1ZGJjZGRiZGVkMDBiMmQ4ZTgwMGE3ODRiNmQxZjIzOGJkZDQzMTc5IGxlZ2FjeS10cnVuaworMTI4MDkgNDJjOWE4ZDEwODM0NGYxNzU4MjdhNTcxYzUzZmYwMzJmNmQzNWYwMiBsZWdhY3ktdHJ1bmsKKzEyODEwIGU3YzA5YTYyYmYxZjFhNjIyNmFmNGM4NGVmYjBkYTIzY2M1NGYyYTggbGVnYWN5LXRydW5rCisxMjgxMSBlMzA4OTM5NjEzOTgyN2Y3MjMzNzI5NzRkNjcxNmE0YTIyNTBiZmUzIGxlZ2FjeS10cnVuaworMTI4MTIgZGIzMmRlYjEzYzlmMDZlMDlmYzcxYWVjZTg2ZWE3ZjdlN2ZiMjk0MSBsZWdhY3ktdHJ1bmsKKzEyODEzIGE0ZDk5NjA3MzQ0ZjA3OGI4NmI0NmMxZmI5Yjc1OTg5OGQyYWUwYjUgbGVnYWN5LXRydW5rCisxMjgxNCBjZGFlNmMxMTQ1ZjRjM2I4ZTcyMGYwY2RhOGZkMTZkYmU1NDA3YzBjIGxlZ2FjeS10cnVuaworMTI4MTUgMWU1N2FlZTUwNTY1NGVlZWM1YTc5NTEyYzI1ZTc1ZjU5NjgwMzNlYiBsZWdhY3ktdHJ1bmsKKzEyODE2IGZhMThiMGZjMGMxODFlNDNlOTlhZjZiN2UyZTA3MWEwOGExYWUyZjggbGVnYWN5LXRydW5rCisxMjgxNyA5MGM3NTJhZTQ0YTZiOTFmOTQ4ODMwNTFiZTUyMjRjYTgxYzg5OGRkIGxlZ2FjeS10cnVuaworMTI4MTggNDRhMzc1ZTMxYWUyZmU3ZDgwY2RjZDgzMzM4ZWI5YjJkOWVkZDZiYSBsZWdhY3ktdHJ1bmsKKzEyODE5IDQ0NmIwOTY3ZjdkOTY5Y2YwNjAwZjEzM2M5OTMyM2I4ZTFlNDdiMDUgbGVnYWN5LXRydW5rCisxMjgyMCAzOWJkN2I4NDc4ZGIzNWNkZTgyZGIxYTY2N2E1ZTlkZjRjMWM0NWExIGxlZ2FjeS10cnVuaworMTI4MjEgNGRkNzY4YWU4OTVlNjRjYzgxMGVlNTE2NWRmY2Q5M2Q2YjUyNTE0NyBsZWdhY3ktdHJ1bmsKKzEyODIyIDkwMDJmNGI0NzAwMGEzZmM3YzMxODRlNjZhNDJjMmMzZjJhZTQ0ZWEgbGVnYWN5LXRydW5rCisxMjgyMyBlOTM1ZDg5NDdlMzM5NmU4ZDA3YTA3MzM1OTZhYTdhZjQ5NTJhNmUwIGxlZ2FjeS10cnVuaworMTI4MjQgYmQwNzY3NGMzYzhiMDc0ZWY4NDhhOTBlZGUzZDk5ODNjZTM2NGE0YSBsZWdhY3ktdHJ1bmsKKzEyODI1IGE4N2NmZWEzMGIwNGQ4MGEzNzY0YmRjZWRlM2Y4NzUyNTJiNzQyMzcgbGVnYWN5LXRydW5rCisxMjgyNiBmZWQ2NmJkZGNlNjM4MWViMzQ4ZGIzNzljMjQ5Y2E2NTU1ZTIyNTQ1IGxlZ2FjeS10cnVuaworMTI4MjcgMGQwZTIyMzlkZmQ4YzA2ODU4YjQ4ZTNmYzFkNDRjYWU3Nzk0MTI5MyBsZWdhY3ktdHJ1bmsKKzEyODI4IDRhM2U2MzkzODQ2OTQxMTFlOTFkNWUyNWJjMjkxOWY3YmRhODhiZjAgbGVnYWN5LXRydW5rCisxMjgyOSA0YzRmMzYyZmEwYTZhZDg1MjA0N2U1MDgzMjQzMDJlNzg2OTRjYzk0IGxlZ2FjeS10cnVuaworMTI4MzAgNjZhN2Q2MWNmZDg0YTNkZGE5ZDI1MWNiMDFmMmMwYWQyYWI2MmFkYSBsZWdhY3ktdHJ1bmsKKzEyODMxIGY0MzhjNmUyYjZjMThlNTdjZDkyNGQ2NjQ0ZmI5MjlhOTkzM2I4NjAgbGVnYWN5LXRydW5rCisxMjgzMiAyMDdiNDBlYzlhN2UzOTE0YmZhY2MyZDFhNmRmYjNmYjAxOGE3MzdjIGxlZ2FjeS10cnVuaworMTI4MzMgYmUwNTYwOTQ3OGJlZjA0Mzk1NWI0MzM0ZDJlOWVjMmI5Yzg3YzU1OCBsZWdhY3ktdHJ1bmsKKzEyODM0IGFiZDQyMDI5ZmEwMTAxZDU0M2ZlNjExNWJkNzA2ZjNmMGIyYWQ5YjIgbGVnYWN5LXRydW5rCisxMjgzNSBmZmY4MmQyZmIzNjllZmQyZWMwOWE2YmUwZjY5ZGQ5ZGM2ZDhmZGNhIGxlZ2FjeS10cnVuaworMTI4MzYgYjZlZGVjMWVmZTY0Mjc4NTFiYTE5MDg5NGMwZmY4ODI2MjM3NDVjYyBsZWdhY3ktdHJ1bmsKKzEyODM3IDYxMjI0NDU5YmIwOTM2MWIxMWYzNDBiNDlmM2IyODllMTAxNTNmM2MgbGVnYWN5LXRydW5rCisxMjgzOCAwOTNmYzI5OGFmZDZiMGUwMmU0MTFhNjQ1ZDFjMWVjYTg3YmI5NzZjIGxlZ2FjeS10cnVuaworMTI4MzkgZGRiZjFhY2I3MTcwMmRkNTE5MzRlZGZiZjU1MmI2ZDM1OGQyY2JiNSBsZWdhY3ktdHJ1bmsKKzEyODQwIGE4ZGM1OWI2NmY0OTY2Y2FjODNmY2EwNWI5YTExOTlhMzczYzU5ZTcgbGVnYWN5LXRydW5rCisxMjg0MSA1YzcwZWNkZWRlZmMzMzY0OWE3YzU1YjNlMmVmZjA5NTFlNzNhZmQ4IGxlZ2FjeS10cnVuaworMTI4NDIgNmVlMGVjZWI3NzVmMmQyMmU5MDFjMGNhYThmNTQ3Y2YwZTg4MjdhZCBsZWdhY3ktdHJ1bmsKKzEyODQzIDY1YWVkNTI5YWQ4YWRhZjM0NmQxNmQzZDlhNzdjZGVlMTIwZTY0MTkgbGVnYWN5LXRydW5rCisxMjg0NCAwOGQzMTk0YTNjM2ZjOGQ2NTI4MzIxMDdlZGQ2ZTY0M2JmZTQ1ZWRkIGxlZ2FjeS10cnVuaworMTI4NDUgOGQwOTJhNjcyZDA5YmIxOGQ4NWY1MDEyOTkwMTc4NTFmYTZjN2ZjYiBsZWdhY3ktdHJ1bmsKKzEyODQ2IGI5YTgwYmJiZTRhNWE2ODViMzg1YzJlMWVlMDEzZWU5ZWY3N2ZkMTQgbGVnYWN5LXRydW5rCisxMjg0NyA2ZGIzNWVlOTBiZmFjMDNlNWMwZmNlMzYwYTFkMGNmOGE2YTZmOTUzIGxlZ2FjeS10cnVuaworMTI4NDggZDczOWUxZWI2MTc1MWMxOTk1YTI2N2NkMmQ3NjZjYjBhOWQyZDdhMCBsZWdhY3ktdHJ1bmsKKzEyODQ5IDRlMmQxODk3M2I5NGEwMzc3ZjI1YjJhOGRlNmRkNGYwMTdlMTc3MzAgbGVnYWN5LXRydW5rCisxMjg1MCAxZDg1N2I1OTc1ODIzNzg3NjI2MjIzNWIxNjg3ZGJmYmNhOWRhYTQ1IGxlZ2FjeS10cnVuaworMTI4NTEgODkyZGJhN2Y0MGRlZWZlZWViZThiYTc1ZWM0NzgxZDI5NmE1NzY0NSBsZWdhY3ktdHJ1bmsKKzEyODUyIDdhMzljODczZGM4MTgwYzk3NGYxZTA0YTNjNzZmZmNjOTViYmZjM2MgbGVnYWN5LXRydW5rCisxMjg1MyA2N2ZmOWU3ZGM4YWZmNGEwMGU1ZGFlM2I1ZDJhNGRjOTkxZDk1ZGE4IGxlZ2FjeS10cnVuaworMTI4NTQgYTc5N2YwYzZjMmUxZGQxMzljMTQ5NTczNmNjMjNhM2JkOWFkOWZiMSBsZWdhY3ktdHJ1bmsKKzEyODU1IGU2ZDM0Y2MwYzc5Yzk2MmMzOWZlNjNhZGVmZDgzNzY2YzJmNmJmNDcgbGVnYWN5LXRydW5rCisxMjg1NiA2YjU3OTBjZTI1MzZkYzZlNDYxMjdlMWUyMTA3ZWE5NTgwNTY2ODEyIGxlZ2FjeS10cnVuaworMTI4NTcgNTBkMzA5OWQ1MGMyMWQzYzc4NmUwZjk2ODFmNTJmYmMzZjMxYzNkNCBsZWdhY3ktdHJ1bmsKKzEyODU4IDQwNzAyMmNmMTkzMWMxNTg3NDBlOWVhM2RlNTdjYTc5ZDc1ZTIyZmUgbGVnYWN5LXRydW5rCisxMjg1OSA4OTIzYWQ3ZTEzZjJiMDE1OWVkZTFhYjAzNmNjYTkzN2ZhZGY2OWIzIGxlZ2FjeS10cnVuaworMTI4NjAgZTk4ZTFlYTUxZjE2MjZkNWU2ZjRkNTg5NmUxNmMzZGIxMzIyNTY2YSBsZWdhY3ktdHJ1bmsKKzEyODYxIGRhMGMxMzMwZTY2ZWYyY2QwZmMwNTkzMGVjOTVjNWIyMTFjZjAxNWYgbGVnYWN5LXRydW5rCisxMjg2MiA3MGEzZmIxY2UyM2I0MWNiODI2MGUwOTI5MjFhOTMyZDgxNmQ4NzM1IGxlZ2FjeS10cnVuaworMTI4NjMgZWEwYmJjM2JmMWRmYTYxOGI0Y2FhMTllMzAwN2E2NjlmNGYwNGY3YiBsZWdhY3ktdHJ1bmsKKzEyODY0IDUwZTRkZGRiODI4YjIwNzEyZTU5NDkyOTg4NDk1OTlkYjk1YWMyY2IgbGVnYWN5LXRydW5rCisxMjg2NSAxNDA5ZTc2ODdhOWEwM2IyNzhkZmE0Yjk3NWI1ODEwZDlmMmE3ZjBmIGxlZ2FjeS10cnVuaworMTI4NjYgNGRhYWI3YTlmNTY2YWQ0MjE1NTI0NjkyNmY5NTg3ZGQ0Y2I0NGFlYiBsZWdhY3ktdHJ1bmsKKzEyODY3IGQ1MTY0YzY2YWNjOTYzYmJiZmYyMDIwNjJlYWZlZGNlOTBkYzVhOGEgbGVnYWN5LXRydW5rCisxMjg2OCAyNWQ3ZDRkNzM5OWYxMGNhYWFmZjkwODMxZWFjZWYyNzliMTEwNTk3IGxlZ2FjeS10cnVuaworMTI4NjkgNjVlNzIxMmRmMWJjZjFjYzE3YTRjOTZkOWEyODRhODczMjg2MmRkYyBsZWdhY3ktdHJ1bmsKKzEyODcwIGM1ZjQ5ZDRlMjljNTAzOTgzZTEyNThjMTZiZWE0ZWMyZGFjNWI4ZGUgbGVnYWN5LXRydW5rCisxMjg3MSA3OTVkNTFhZDIyOGEyNDBkZDQ2NjQ3M2ViNmEyOGRkMTNhM2VhZGMyIGxlZ2FjeS10cnVuaworMTI4NzIgMTMyZjk0NjQyYzc0ZDI4NzI0MzUzZGYzYjBlZTY5MmNhMGNiYzgzOCBsZWdhY3ktdHJ1bmsKKzEyODczIDk1YjkyMjVhNTJlNDViYjI1NmRiYWUxNWY1MTE0MWY2ODIyOGE4ODggbGVnYWN5LXRydW5rCisxMjg3NCA5NjkxMzkwN2FlNjhkOTQ2OWM1MTJkM2Y4NDkwNmNkODAwNDczNGRhIGxlZ2FjeS10cnVuaworMTI4NzUgZmI3ZmE0NzYyMTFmMzVkMTU5YzIxMTRjMTRhNGI3OWI2MjlhYTllOSBsZWdhY3ktdHJ1bmsKKzEyODc2IDA3ZWU3OTU3NzRkODliNDFiZWIzYmQ1N2ZmZjdkODk0ZWMyZGVhNTMgbGVnYWN5LXRydW5rCisxMjg3NyA0ODE0MWRhNTE4ZGZhN2NhYzI5ZDdhNmVhNzE0MDE1NDI1YjhiOGViIGxlZ2FjeS10cnVuaworMTI4NzggNDE3YWE0MjUwMTNhZDczZWEzODAyZjVmMDM2ZWIzY2Y5OWFhYjMzMiBsZWdhY3ktdHJ1bmsKKzEyODc5IDMzNzczM2NlOTU5M2ZiMWVhMDVkNjk3NmE3OWE0OWUwMjY5MDA2NDkgbGVnYWN5LXRydW5rCisxMjg4MCA0Y2JiMjEyMmM3MzU4ZjQ4NTIyYTQxMTIzZjliMWU2MzVlM2FmMmU2IGxlZ2FjeS10cnVuaworMTI4ODEgZDk4MDg1ZGU5N2QxZmU4OGE1Y2E4ZDIxODQ5ODY4ZDY2MDA4Zjk1YiBsZWdhY3ktdHJ1bmsKKzEyODgyIDllOTY5NWUzMTRjOTYwNzAzNjIyNmY5NTYyYjZlMzYyZTM4ZTUzODIgbGVnYWN5LXRydW5rCisxMjg4MyA2OTg5OGFjYjIzZjI4MWJkNjljYTJlZjc0ZGY5NWM0OGRlYjQzODY5IGxlZ2FjeS10cnVuaworMTI4ODQgZmI1MWFhODI0ZGYyZDQ3MjE3ZDQ2N2YxYzRiNGEzMjkxZTRhYjViMSBsZWdhY3ktdHJ1bmsKKzEyODg1IGUyYTA4YTgxZTU2ZjRlZTI4NTY5NWUyMWE5ODgzMzQ4NzA2YWFiZTUgbGVnYWN5LXRydW5rCisxMjg4NiA3MGRkOTFjMjE1MTM0ZmFlNGVkZmNlMTg1NmU3NDdlN2QxYmQ5MjI5IGxlZ2FjeS10cnVuaworMTI4ODcgZDNkYzYyMDA0Nzc2ZGYwMmY0MzA3MGQ5ZTVmZTExYzg4MmU2OGFkYSBsZWdhY3ktdHJ1bmsKKzEyODg4IGU5MzM1MjI4NmFhYzZkMTllODNkNTYwN2RmNTBmMWQ4NjExOTIyYTUgbGVnYWN5LXRydW5rCisxMjg4OSBjNTg5MDIxYzQ3YzkzMzdlZWY0NzI1MDIxNjY2Nzc3ZTJmNWZhOTBmIGxlZ2FjeS10cnVuaworMTI4OTAgOWM1ZDliZGY3ZTQyMzQxOWJkZmJiZGM5ODQ5NzMwNWIwNGQ1ODIzZSBsZWdhY3ktdHJ1bmsKKzEyODkxIGY0ZTYwNWJkOGYxYjc2YjY2MmY3NmUwMDM5ZTEzZGY3ZmE5OGE0N2YgbGVnYWN5LXRydW5rCisxMjg5MiAwMTczYTVmNDcyMDZkYmU0MWZhMjkzZmI4NmFhYzQ1ZGMzMmEyZmY1IGxlZ2FjeS10cnVuaworMTI4OTMgZmI4MTY1OTQ4OWExNjY1NjRhMWViYWM4YThkNGJiZjFjMThkODBhNiBsZWdhY3ktdHJ1bmsKKzEyODk0IDdiODEwYWEzNWI1Y2U4NmRiMTgwMDJhZDg1MDlhMWUxN2I4MjBlNDQgbGVnYWN5LXRydW5rCisxMjg5NSBmNTRiYWM1YWY5OGNhMDE0N2Q4NWRhZmM0MTdjNzg2MTA4NDI4MGIyIGxlZ2FjeS10cnVuaworMTI4OTYgNzQ5ZTFiM2Q4MTczYTMwOTNjMzcwYjkyMTJlZTEwMGQ1Y2MxNTNjYSBsZWdhY3ktdHJ1bmsKKzEyODk3IDUyMjA2NTMyZDM4OTFhMDkzM2EyYWM5ZjlkMzM0NjBkODY4NzI1NmMgbGVnYWN5LXRydW5rCisxMjg5OCBmMzQzMzI5NTAwYmU3OWIxMjdkNjM2ODJkOTY3NjY3ZTI2YmFhMjk3IGxlZ2FjeS10cnVuaworMTI4OTkgYzA2NmZkODQzM2JhODRlYzA1M2QzZWJhNGI3YzA3Yjg1ZmRiZDJmNyBsZWdhY3ktdHJ1bmsKKzEyOTAwIGRjOWIwZDQxOGMwMDliYjhkNjhhNGNhNjNhYmQxMWI1NTA1NjI5NGIgbGVnYWN5LXRydW5rCisxMjkwMSA3ZjE0N2M0ZTQyMTliMTZkNmUzNGRhMzM0Mjg2NmE4MjM0OGI4MzFlIGxlZ2FjeS10cnVuaworMTI5MDIgMmE0YzE3NmRlNmNkZDNjODg5MTc2NmQzMTA5OGMxODE2OWE2M2RmNSBsZWdhY3ktdHJ1bmsKKzEyOTAzIDk0YWQ5MGZkMjcxMjZmZTViZjY4ODg5OTVlMjY5MTM2MjZiZWU5YTYgbGVnYWN5LXRydW5rCisxMjkwNCBmODFkYjczOGFiZDkyYzI2YjBkNDEzMGZhNzFhNDNiNGQxMTk5OGVhIGxlZ2FjeS10cnVuaworMTI5MDUgOWQ0ZWZjZTExZjA5YjE1OTg2YTExMDg0YWIyYTI5ZTMwOWI1YmJkNSBsZWdhY3ktdHJ1bmsKKzEyOTA2IDljNmRhMzBhZTY3NWRjYTVjNjlkZWQ3MDU2ODZkYWY4OGYxYWJjMjkgbGVnYWN5LXRydW5rCisxMjkwNyA4MGQyYjlhZmQxOWNjNTU0MGYxNjJhYzE5ZDBhODM3ODkyYzc0N2I3IGxlZ2FjeS10cnVuaworMTI5MDggMmMwMzljMDEwNDM3N2U5NDVmZWUyM2M4MDZjYzJhZWJjMGQ5YzM2ZSBsZWdhY3ktdHJ1bmsKKzEyOTA5IDE1OWYxYzNhZmUyODRlOWVjOWFlNTA0ZGU3MzRhYmU2MGNlMTYxZjggbGVnYWN5LXRydW5rCisxMjkxMCBjY2VmNWMwZThkZGM2OGNlNTE5NzFhY2Q5NmUzYWUyNmI2ZTgxMzkzIGxlZ2FjeS10cnVuaworMTI5MTEgYTE1NDRmYzQ5YTc2MzQ1NWEzZTA3Y2VmNWM5Mzc4YjZlMGE4OGJkYyBsZWdhY3ktdHJ1bmsKKzEyOTEyIDA1MDgzMmQ4MzhjYTVlZjg2ZjdhNzFhNjZhZTFmNGI3MmFlYzUyODQgbGVnYWN5LXRydW5rCisxMjkxMyA5NzgyMzE4NDI2NmEwMTkwMjAwZWIzOWNjYTkwZDE4NmIwZDY5ZmI1IGxlZ2FjeS10cnVuaworMTI5MTQgOTk1MmYxNmJiZThjZTNlOTcyZjAwNWUyMTJhNGNhY2UxNDZhNTY3ZiBsZWdhY3ktdHJ1bmsKKzEyOTE1IGU5ZTY5YjAyZDBmMGQxMGZmM2FlZjg2M2ZkNzBmYzVmOWJiYzU2YjAgbGVnYWN5LXRydW5rCisxMjkxNiA0MzYzZmIyZDQzNDUwM2Y3NTFhODU2OGM1NDgxODQ1ODE2NTliZjc3IGxlZ2FjeS10cnVuaworMTI5MTcgYTYzMGU1NGU5N2YyOTNiYmI2ODFmODk0M2I4ZTFkODNkMzJlODlhYiBsZWdhY3ktdHJ1bmsKKzEyOTE4IDQ4ZmJjNTVjMDU1MzQxODgwZjk1MTNmMjlhZDJiODNjZjVhZTljYTMgbGVnYWN5LXRydW5rCisxMjkxOSA1MjQzOGM4N2ZlZGNjMjI2YTY3YWE1Mjg3NjljZmQ0NTNhYjBhMGU2IGxlZ2FjeS10cnVuaworMTI5MjAgZGM1MDJjZTc1NzVhMjA3MjEwMTY5NDA2ZmFjMTUwMjk4ZTUyM2EyMCBsZWdhY3ktdHJ1bmsKKzEyOTIxIGI4ZTRkZTFjMzVjZGFkOTA5NmRhMDU2ZTYwYzQzZTExMzY1MjZiODMgbGVnYWN5LXRydW5rCisxMjkyMiBjYWJhYjFmNTU5NmUyODUyOGIyYjJlOWQ4YmE2NGFiYjcyZTdkNzJkIGxlZ2FjeS10cnVuaworMTI5MjMgNmQ1ODI3MGRiY2Q0M2Q0NDhiMWE4ZDgzMTc0MmFlYmQwOTA4MDRkOSBsZWdhY3ktdHJ1bmsKKzEyOTI0IDBkNmJkMzkxYWNkODM3MDk3NWU3NDkxZmI0ZDU4MjcxOWQ3OWZiNWYgbGVnYWN5LXRydW5rCisxMjkyNSBiMzY0NjkzOTgyNjI2OWUzZWVhODlmNzE3ZWVkOGI3MTU5ZGMzN2I0IGxlZ2FjeS10cnVuaworMTI5MjYgOWE0YmFmMGM1N2VhMTk0MTllZGQ3OTlmYWIwMDMzOGNiNGFmZDg1MiBsZWdhY3ktdHJ1bmsKKzEyOTI3IDVjY2QzYjg2YjFhNjM3ZmQzMDJjYjdjZTBiMzk0NTIxZWIwNWNkZTAgbGVnYWN5LXRydW5rCisxMjkyOCA0ZThkZWZlYzA5Zjg1MDQwNzVjOWYwNjAwMzE0ZWFkNzNhN2YzNDM2IGxlZ2FjeS10cnVuaworMTI5MjkgYzE3Njk2OGJjOTFjMTA5MzI4YzRkOTMxODEwZWM2ZWMxZmY0YzZiZiBsZWdhY3ktdHJ1bmsKKzEyOTMwIGU2Nzk5YTg1NWFmNzhjNTQ3ZDRlOGMyZDhlOTM5MWQxYjI0NzFkOTcgbGVnYWN5LXRydW5rCisxMjkzMSAzNTcxYjRjMWJjMGUzZDM3Y2RkZjc5MTVlZjVjYmMzYzhjN2VkMDk3IGxlZ2FjeS10cnVuaworMTI5MzIgZjlhZDE0OGM5ODBjY2UwYmY3MmZkOWU1NDkwZDU1ZjU0Zjg5MjE2MCBsZWdhY3ktdHJ1bmsKKzEyOTMzIGQ1OTJmZTVlMDlkNTc0ZDBkZjM1N2Q1NjVhN2VhNGQ5N2EyYTk3ZTUgbGVnYWN5LXRydW5rCisxMjkzNCAwNzg5ZTBiNTU1ODdiYjIxODFmM2VjZDZmZTBjYmU2NWJmMDgzYjYwIGxlZ2FjeS10cnVuaworMTI5MzUgMWNjNWQyMGQyZWQ4NDI5NjgxZDViOTY0NDdiMTA5NWFhNWRkY2Q5YyBsZWdhY3ktdHJ1bmsKKzEyOTM2IDJhYjBlYzg0NzE4NDc2N2MzODMwYzdmMjMxNGVjOTVlOTVkMzZhMGIgbGVnYWN5LXRydW5rCisxMjkzNyBhNDc2ODMxNTk0OGRjMzEwN2NkMGZhOGMxZGZhMTA0YjRhNDcwMzYxIGxlZ2FjeS10cnVuaworMTI5MzggMzI0NDUwZWE1NDUwMmI4OTM2MjIyMDc5MTE2YTBiOTdiZWFlY2RiMCBsZWdhY3ktdHJ1bmsKKzEyOTM5IDdkM2E2MGY0ZTBiNDczNDZlZWEwMWFhZTA2NjU2NzI2MDEzMWI0YzkgbGVnYWN5LXRydW5rCisxMjk0MCAzYmM4ZjUzMDQxYzAxNWJkYWY0ODE1ODYyY2RjNmM1NjNkNGE4ODYzIGxlZ2FjeS10cnVuaworMTI5NDEgZWU2ZmE5Yjg2ODg1NGFjMTMwNzRiMWIxNjBhNmJlZWY3MWZlMmZlNyBsZWdhY3ktdHJ1bmsKKzEyOTQyIDljZTE0NzRhYmRkZDdjMzY5ZDg0ZDI2YjEwZGQ0MzJlMDZjYTFjNmIgbGVnYWN5LXRydW5rCisxMjk0MyBiOTQxNDRkZTJmMzJiNTNlMmZkNTE4MjViZGE5MjAwMTM4OWRhNmQyIGxlZ2FjeS10cnVuaworMTI5NDQgOWJhNWRmZmNjYjFiZGI0MzYzNjI3MThlMmJiYzI4ZWYyMWIwYTM0OCBsZWdhY3ktdHJ1bmsKKzEyOTQ1IDkxODRjOWUxMDhmOTdiYjY2Y2UxMjMzZjk3MzhmOTJkYzJiMWZhMmIgbGVnYWN5LXRydW5rCisxMjk0NiBmM2E0YzRmNDA0NDY3ODVlODU2Njg0NzdlZDM4NGY0YWExYjkxMDlhIGxlZ2FjeS10cnVuaworMTI5NDcgMmExNDllOTRlZjRhYzE0NWQ1ZDIxZTY1MjFhY2Q3NzE3ZjA0YTA2MyBsZWdhY3ktdHJ1bmsKKzEyOTQ4IDAwYzM3Y2I3NWMyODU0OWQwNDk3ZWI2ZjRiZThkYjM1ZTVkMGM3MjYgbGVnYWN5LXRydW5rCisxMjk0OSBiZjI2YjdjMWU2ZGVjMTljYTdjYTk5MTAyZGJlZDYwOTczZmIwNmMyIGxlZ2FjeS10cnVuaworMTI5NTAgZDM3NjI5MzNiZmY4ODlhOTA4MzZkZDU1MzA2ZDZjYmZlMjA0MDUzNSBsZWdhY3ktdHJ1bmsKKzEyOTUxIDk3YTA2ZWM3YzZmNDliNzIzYmE1NDIxZjQzNGI0ZGY1ZGEwMGE3ZGEgbGVnYWN5LXRydW5rCisxMjk1MiA3ZmVmNjBmOGJjNDU1NWU2M2I1NzI5NmYwZDFlMDhjYjA2YmQ3ZjUwIGxlZ2FjeS10cnVuaworMTI5NTMgNWNmYmQ0ODlhNWQzNGQwOWQ5ZTFmOTdjYzU3NGY1NmEwNzE5NTk3OSBsZWdhY3ktdHJ1bmsKKzEyOTU0IDJiMWRmYzEzOTUxZGZiNjMwYWE2NmY2ZmQzYzJhMjU2N2IxMTM1NGEgbGVnYWN5LXRydW5rCisxMjk1NSBjOWUxMGVkMjZkOWFiMTAwMDVlYjA2ZGM5Y2ZjMDVkNTU4YzUxOThjIGxlZ2FjeS10cnVuaworMTI5NTYgNWI1NGZhNzc1ZTU1MGVjZDhlYjIyZjJiYmY4ZGQzOTU2MWJjODExYiBsZWdhY3ktdHJ1bmsKKzEyOTU3IGRhZDE0ZmZlMWMyMmEwNmIwNWY1OTZmMDEzMWIwMGZmNTRlN2Q5OWEgbGVnYWN5LXRydW5rCisxMjk1OCAxMTE3OGM4ZDZiZTJhNmMyOTNhOWJjNDU2MGVkZTQxYjI3NWI3NmE5IGxlZ2FjeS10cnVuaworMTI5NTkgM2YyMTNhOGZjMDRlMDZmZGZlYWExYjg3MjViZmI4ZTIwZTg5Y2JmNCBsZWdhY3ktdHJ1bmsKKzEyOTYwIDgyYWRjNTRkZDM3N2M0NjQ0ZjM0YjBkZjk1OThmMGY4Zjg3MjM1N2IgbGVnYWN5LXRydW5rCisxMjk2MSA3MDkxMGUzMTI1YTI3NjMxNDJmYjA4YTg5NjgxZGVkN2IyZTg0ZWZkIGxlZ2FjeS10cnVuaworMTI5NjIgNGMxYmJlZGFkMTRiZTYzY2QwZjQ4NTNkNDU0ZTE5MzVkOTUwNmE4NCBsZWdhY3ktdHJ1bmsKKzEyOTYzIDYyNzgxOTE0ZmFkYjg5M2NkNmFlM2ZjYTFiZjdiNjNlZTM1NWU3MmQgbGVnYWN5LXRydW5rCisxMjk2NCA0YWJjNWFiYWVjOWFiODgwZjUxMjRhMTllZjI3ZTgzZDgwMmFkZTU5IGxlZ2FjeS10cnVuaworMTI5NjUgYTY0NjRlYjk4N2U4Y2VhZjM5ZmMxYzhlMzUwMDBjNzEwNjY3OGNlNiBsZWdhY3ktdHJ1bmsKKzEyOTY2IDUzYzFmYWVjMWQ0NjY2YTUwNjQzNTIwYjkxNjE3YzQ1Nzk2OWM3M2UgbGVnYWN5LXRydW5rCisxMjk2NyBmNzRlZjE5NzFiZDEyNjgwODRlNTYyN2QyM2QwZWY4N2NiZTA4YmNmIGxlZ2FjeS10cnVuaworMTI5NjggNTg2ODg0NjIwMWVkZTIwMTM5ZjAyNjc2MTdiMGQxYmJmMjVhMDliYSBsZWdhY3ktdHJ1bmsKKzEyOTY5IDM2YmE0ZGJmZjY4NmU4NTNhYjBjNGQwNjJlNjkwMGQxZjZhMzUxYzggbGVnYWN5LXRydW5rCisxMjk3MCAyNTVhYmFiM2M1NzQzMDUwOGJlMzFmM2Y1MmIzOTU2MjM1OGYzMTA5IGxlZ2FjeS10cnVuaworMTI5NzEgOWNkNGZkOTI2ZGY2NDQ5OWIzYTA0YTc3MmJjODA4MDNkZWQzNWViYyBsZWdhY3ktdHJ1bmsKKzEyOTcyIDYwMWI0ZjJkNWZjODUyNDNhMGJiMDZiNzI4ZmY5NDgyYzFiOGVmNWQgbGVnYWN5LXRydW5rCisxMjk3MyAwMjJiMTc4ZmQwZWQ1Nzc4MDVlNGYxZGY0MTA0ZWYyNmVmYTRhNTM5IGxlZ2FjeS10cnVuaworMTI5NzQgYWMzYTQ2NWU1MGE2N2JlOTFhN2UzM2NhNjEwMzBkZDE5N2Y4NWI1NSBsZWdhY3ktdHJ1bmsKKzEyOTc1IDRlZTkwMDAwNWVkODhlNjdhZDhiYWE1MjcwYjcwNTE2NDM5YmMyYTMgbGVnYWN5LXRydW5rCisxMjk3NiA2M2M0NjNhODUyOTM2ZWY0MDBhYWIyMTMyYWQzNWY0ZGFkZmFlYWI4IGxlZ2FjeS10cnVuaworMTI5NzcgZjg1MGVmM2RhNDNhZjQ0ZGRlNDQ3NzM5ZWEwN2VlMDE3NmZkOTU0MCBsZWdhY3ktdHJ1bmsKKzEyOTc4IGM4MmE4NWJhMWRkZWY4ZTgyODViZTBhNGNkZTE4MTFjZGVlZjg5ZGEgbGVnYWN5LXRydW5rCisxMjk3OSA1NzcwNGYwYWQ5YjA1YzA3NDAxNDcyNjI0NDZmZGU2ZGQ0ZjA2ODA4IGxlZ2FjeS10cnVuaworMTI5ODAgNGIxOTQ2MTc4MGI5OWEwYzU5NjQ3OGVlOTE0ZjZlMTU4ZjdiMGI5YSBsZWdhY3ktdHJ1bmsKKzEyOTgxIDAxMjUwYjgzMjM3NGFiMmM1NmZmYWI4OGI2NmRmZGYyOTdlYTkxZDMgbGVnYWN5LXRydW5rCisxMjk4MiBlZTYxMDk0OWY5MDIyNjRlYWMxMDMwZjIxM2JjMzJhNDRlY2I0ZGRmIGxlZ2FjeS10cnVuaworMTI5ODMgYzI1NTRiZjYxN2MzMjU2NTk2YmY1MTkyZjJlNmQxZTYzYTM5Y2NkMSBsZWdhY3ktdHJ1bmsKKzEyOTg1IGJhZTY1MGY1N2M0MTUwYmIwYzQ4MTZlYTg3MjkzNDIyMWM1MzlhYTIgbGVnYWN5LXRydW5rCisxMjk4NiA3NTY4M2ZkMzllOTFlYTRjZGZlM2JjZjQ4Njg1Zjc0NWE0NDA5ZmI4IGxlZ2FjeS10cnVuaworMTI5ODcgNzQ3NGFkN2UwYTQ0OWFiOTE1MDIyOTViY2FlOGQ1YWQ0YTY5NzkxNiBsZWdhY3ktdHJ1bmsKKzEyOTg4IDUwMGY4ZWM5ZGVkMThkNmRkNDk4NWNkY2NkODRjNDY4ZDk5ZGM4NzMgbGVnYWN5LXRydW5rCisxMjk4OSA4ZDExNWUxMTFhMTc0MGU5M2UyNTY4Yzk0ZTY3ZTI0M2NmZmUxZjBiIGxlZ2FjeS10cnVuaworMTI5OTAgMzBjOTRjZDQ5YTY4OGE2NjA4YmNlMjhjYjIxMTYwNmFjZGExY2Y2MSBsZWdhY3ktdHJ1bmsKKzEyOTkxIDA1ZTk3ZjZhMzYzOGIzNTBlYzM5NWUwMWViMWE0OTk1MTA0NGZjMjkgbGVnYWN5LXRydW5rCisxMjk5MiBlY2RmY2VhMTI0Mzg1NmM2MjdkNjUwMGVmYzAyN2ZmMGU4MDEwOWQ4IGxlZ2FjeS10cnVuaworMTI5OTMgODc0OWU4OGFiNDA2NjBjYzExOGY3OTJjMjQ5YTQ1YTU3OWM4NTA4OSBsZWdhY3ktdHJ1bmsKKzEyOTk0IDM5MGU0YzEwM2JlMjY4OGUwYTBjYTdhZWQ1ZWU2MzFkNGNjNzZiNjUgbGVnYWN5LXRydW5rCisxMjk5NSBiMjM1NzkyNGE5YTkyNmNkY2YzOWI1M2Q5MzIwNDdmYzAyMzhiZmMxIGxlZ2FjeS10cnVuaworMTI5OTYgNDMwNTJkNWI5ODA4MzQ5MjYxYTc4OTYzMTU1MzA0NTVlZDMxYWFiOSBsZWdhY3ktdHJ1bmsKKzEyOTk3IGY1ZDdjNDk0NWQ1ZjViNGRjOTJiMTBhOWU4MTE4MjJiMDUyOGU5M2UgbGVnYWN5LXRydW5rCisxMjk5OCBlNjRjOGI4NGUyNGI3OTVmYjAwZTk3ZmQzMGE0MWQ3ZmFhMjQ1MThhIGxlZ2FjeS10cnVuaworMTI5OTkgMjQ2YjEzNDEwYTMxN2U0ZDBhY2I0MjU0NGMwYjI4YjY4NWJjMjBlNyBsZWdhY3ktdHJ1bmsKKzEzMDAwIGJhMWEyN2Q3M2NkYjBhMzNmYWJjMzc2OGRmZjljYjM5MTljZTEyY2IgbGVnYWN5LXRydW5rCisxMzAwMSA4ZDQwZTZiYTRjOWUyMTQxNmEyOGJlMzhkNzk5ZTJkMjgxNDA5OGQ4IGxlZ2FjeS10cnVuaworMTMwMDIgZmU4NjQ1ZTQ5MzE0ODBjNWI3ZTc3ZjgyYzU1ODJjYzVjMzg3OWQyNiBsZWdhY3ktdHJ1bmsKKzEzMDAzIDk5MzkwODI4NmFjNzE2NWNhZGExZGRhMTBhMTJkNzcxNzk0MWRiNTYgbGVnYWN5LXRydW5rCisxMzAwNCBjMGYxNDdmNGYxMDBkYjk5Yjk5OWQ0NTM3ZDdlZDhmOGU3ZGRiYmQ2IGxlZ2FjeS10cnVuaworMTMwMDUgZTA4ZGEzNGM0NTgyZmVkYTFlZDNlN2E3N2U3YTM0MzRiYmQ3NjZiZiBsZWdhY3ktdHJ1bmsKKzEzMDA2IGZlODgxZjQ0NmM1ZDI4ZmVhOTdlZmExODYyNWMyNjMxMjY4ZDVkZTEgbGVnYWN5LXRydW5rCisxMzAwNyA1MzkzY2U1MjA3YzcwNjUxNjBjZGRjZDBkZDE0OTk4ZWFhOGQyMmY4IGxlZ2FjeS10cnVuaworMTMwMDggNDhjZGRkMGNjNzMzMDc4MjIwYTIwNjRiZGVjZjFmYjBmM2EwZDliMCBsZWdhY3ktdHJ1bmsKKzEzMDA5IDIwZmViYTk2NzQzNzE3YjVkNDU1NWViNjNjZjQ3YWY1ZWI3Y2Q5YmIgbGVnYWN5LXRydW5rCisxMzAxMCA0NWU5OTc1Y2IwOTM5NDg1NzYwMjkwZDJlMmNkNWI5YzUyYTM4YmMwIGxlZ2FjeS10cnVuaworMTMwMTEgNzUzZjNmOTVjNTBmMTVjOGQyYWM1OTRiMzIzZjA0Mzc2NTQ0OGMwNyBsZWdhY3ktdHJ1bmsKKzEzMDEyIGQ3OTk4OWE0MzVkOTJlMzFiNzIyYmE3MDZlZWQwOGUzZmY0NWVhNGQgbGVnYWN5LXRydW5rCisxMzAxMyA2NWIzY2ZlNmU2NjY5Mjc5NzEwNWNiN2E2NjZjODBlNWQ3MWY3OTVjIGxlZ2FjeS10cnVuaworMTMwMTQgYzNlZGMxNGMzODgwYTM5NGRlMzExYWM5NzE0NzZiZDU0OWY4OTQ5MyBsZWdhY3ktdHJ1bmsKKzEzMDE1IDIxOTlmNzBiMGVkYTcyYzg5YzBjMDg2NDI3ZDRiNzcxODM5NjI2YjAgbGVnYWN5LXRydW5rCisxMzAxNiBjYTQ0ZmY3NDgyYzc3NWQxNmI3NzZkMmM5MjBjNmYxNTY1YzdjYTU1IGxlZ2FjeS10cnVuaworMTMwMTcgODFmNGE3N2U3MzM3MzAxYjM2NjUyMGQ4Yzk3Y2Y2Y2JkMzQ1MWIxMiBsZWdhY3ktdHJ1bmsKKzEzMDE4IDk2YmVhZWFkODc0Zjc2YTA3OTJkYjNlYTRhNWMwNDMzY2Q5NmQ4ZjcgbGVnYWN5LXRydW5rCisxMzAxOSA1NjEwNTQ0OTc3MWE2ODQzM2I5ZmE2ZmQ3M2Y5MWEyZThiYjA2MGE2IGxlZ2FjeS10cnVuaworMTMwMjAgZDM4NDg2OGFkNDYyMmViYjkwYzg2ODFhMmYxMjVmMzkzNzRjOGMyYSBsZWdhY3ktdHJ1bmsKKzEzMDIxIGUzZjU5YTA2NDcyZTNhNTY0MzM5OTdjYzY1OTM2MGM3NGQ5OWFjNmYgbGVnYWN5LXRydW5rCisxMzAyMiA5YWE2NWQ0OGRkMDUxNzc1ZGExMjZiMzY0Njg1ODliMTVmZjk4ZGFjIGxlZ2FjeS10cnVuaworMTMwMjMgYjE5ZjJhOTgyMDMwNWY5MjU0NDczYmViNzVkNTAzYjkzYzJkYzI4NCBsZWdhY3ktdHJ1bmsKKzEzMDI0IDdlZTFlMzEzNDE0NzNmNTFjMjRkZTAxZTgzZWIxYjVhZjZiMWU4YjUgbGVnYWN5LXRydW5rCisxMzAyNSBmMDA1YWM3MzU4NjM0MTNhZGFlZmE1YWIwMWI1OTU4YjQzZTNjNmI3IGxlZ2FjeS10cnVuaworMTMwMjYgYjVkZWE0Yzc5ZDI0ZTBhMGI1NjBiZjY0YTg3YTIzZTYwNzIwMDg2NyBsZWdhY3ktdHJ1bmsKKzEzMDI3IDQ3NGM1YjgyZDdkZTk5ZjdlZTA0MmEwYzZkZmJmMWEwM2YyZTdlYWIgbGVnYWN5LXRydW5rCisxMzAyOCA4NzhhNTRhMDYxMTdiMzliOTk0YjllODNkYWYzMTg3MzRlMTlhYzQ5IGxlZ2FjeS10cnVuaworMTMwMjkgNjFiZWMxZTVmYTU5M2E5NzU2NzkzNDI1MWI2YWMzYmU0Nzc0ZTIwMCBsZWdhY3ktdHJ1bmsKKzEzMDMwIDQxNTdmMzg2MmEwOWRmMTcxNzQ2YjFiZGI3YWU3MDNiYjRlMzgzYzIgbGVnYWN5LXRydW5rCisxMzAzMSAzZWVmZTZiMDg2NjJmNDUyOWEzMmYxYmVmMjBkNDY0YWU3YTY0Y2RmIGxlZ2FjeS10cnVuaworMTMwMzIgZDRjZTlmMWY2MjY2NmU0ZDg4ZDhiMmFjYzVkYzQ3ZDhjN2JkZmQ0NSBsZWdhY3ktdHJ1bmsKKzEzMDMzIDU0MGM4MTczZTRmZGJmZWNiYTI0NjU0N2M3YjgxYWY5NTM5MDYxMGQgbGVnYWN5LXRydW5rCisxMzAzNCBkODM0ZWNkZjhjMjZlMGRmOTIzMTg3ZjIwYmE0N2FjYTZlZjJlMjIwIGxlZ2FjeS10cnVuaworMTMwMzUgOWVjOWFiZmVjNzk0ZWMxNDFkN2NkNjljMGU1ZDA2ZDIxMzVlNTU0YSBsZWdhY3ktdHJ1bmsKKzEzMDM2IGMwNGYwM2U4MmE3NTQzODIwODA3NzMzYTZmZjdlZGZkNTBkMjAzN2QgbGVnYWN5LXRydW5rCisxMzAzNyAzMmJhMDljODY5MTdiYjcwZjVhNDg2OGI2NGJkNjVlYmE1ZWRlMzY0IGxlZ2FjeS10cnVuaworMTMwMzggYTRhMjY4YjcyNWIyYTQ2MjM2ZjgwZTdmY2MxYjNmYjY2MWI5Y2U2YiBsZWdhY3ktdHJ1bmsKKzEzMDM5IGI2MjcyNGIwOTMwMmU3NDljYzU5M2YzODUxOGUyODgwY2ZmNmY5YWEgbGVnYWN5LXRydW5rCisxMzA0MCA5MzQ3MTljMjVhZjgyZWRlZjE1OGViN2UyZmNiZDFmN2RmZDdlMmI5IGxlZ2FjeS10cnVuaworMTMwNDEgM2ZlOTVjMmIzNzEzNGVhNjk2ZTBmZTJlNjIyNzgzNGEwNzA2N2QxMSBsZWdhY3ktdHJ1bmsKKzEzMDQyIGNjZWUzYzI4YjdlZmYxYmY1ZTFkMTA3MWNlZDc0Zjc0YjkwYjJhOTggbGVnYWN5LXRydW5rCisxMzA0MyA1ZjQ1NGI3MDYxNTZlYTMxYzg4YzlmYWU3MGZjNmUwMThjNWU1NGVjIGxlZ2FjeS10cnVuaworMTMwNDQgMGJlYjdkMzZjMWE5NzY5NDcyNjExMjA4ZjM2NDRhODcwNzEyM2RmZSBsZWdhY3ktdHJ1bmsKKzEzMDQ1IGYyOGU2YTNiOTEzNGUxODNlZjFmMThjZjNjMGU0ZjBlYTAxYjRiZWYgbGVnYWN5LXRydW5rCisxMzA0NiBlZGM3YjI4ZDkwNTIxMTM2YjUzZGQ0NzQzNzlhNTMyODlmNTY3MWFhIGxlZ2FjeS10cnVuaworMTMwNDcgNWU5ZWEzZWFiNzdjODEwMjUzMDc3MTVkNTE1MzJlYmVmZWYzYTJkZCBsZWdhY3ktdHJ1bmsKKzEzMDQ4IDM0MDBhYTFiMDA3M2ZjNzhjMzYyODZkNmUyM2U0NTcwM2U3MjkyYmMgbGVnYWN5LXRydW5rCisxMzA0OSBjMGE2OWVjZjk2NDZmNjFhNjBlZDFmNjhiM2YzNTJjM2EwNTA0NThkIGxlZ2FjeS10cnVuaworMTMwNTAgZTY4ZDUzN2ViNTBmZWFiNzcwNWZhMjFhNDQ3NWU4YzZiY2YyZGE1ZSBsZWdhY3ktdHJ1bmsKKzEzMDUxIDU5ODBiYjAwMWY4NjRlYzAwNjZlNGYzZmYwODdmNTlkMDBiMGQ0MDEgbGVnYWN5LXRydW5rCisxMzA1MiA4YzFjZmU5NjVkOWIyZGMzMWYxMDUzZjQwOGFkODMxMmY0YmNjODMyIGxlZ2FjeS10cnVuaworMTMwNTMgYWU2MWI3MGVmZGIzYTk0OGJmYTgxYzk1OTdkMDJmMTI2MWJlZGNjNiBsZWdhY3ktdHJ1bmsKKzEzMDU0IGM2OWJmZTBlY2JkODcwNmEzNWM3N2RkZWFhYjdjOTM2YjRhMzVmNmYgbGVnYWN5LXRydW5rCisxMzA1NSBhZmYwN2UwNDlhZWVmYTJiZTQzMjA4YWQwZDI2ZDczYzQ4YjMzYWQwIGxlZ2FjeS10cnVuaworMTMwNTUgMzlmYjBkY2M4M2RjMzc1YzE1NjViYTY1ZGJjZTBlZDU5YjEzNTljOSBsZWdhY3ktdHJ1bmsKKzEzMDU3IGE4MzdhNmFlZDgzZTZkZTJmMzQ3NzBlYjQ0YjI1ZDBmZjhmMmQwZTMgbGVnYWN5LXRydW5rCisxMzA1OCAwNWNmYTI4ZTY1ZjYyNDUzNzIyMjQ5Y2I4NGQ5OGI0YmE0NzQ4YWZmIGxlZ2FjeS10cnVuaworMTMwNTkgMjQzY2M2ZDljNWI4ZmJlMGVkYTE3ZjE1Njc5YzNhNzI0ZGYxNWNhYyBsZWdhY3ktdHJ1bmsKKzEzMDYwIGUzZTVkNzYzNjk1ODY3OWM0MTM2YTk3ZTg4OTY1NzEwMmZjNWU5OGQgbGVnYWN5LXRydW5rCisxMzA2MSAyODZiMmNlNjUyNDg4NjQ5M2Q1MDNlZWVkNTEzMmRmZTJkOGU3OTg3IGxlZ2FjeS10cnVuaworMTMwNjIgOGQyYThhNDlkOTgzOTIxMjE4YmE0YTA0MTU0YTgzMmE1YzEwNTdkNiBsZWdhY3ktdHJ1bmsKKzEzMDYzIGFmYWEzYWE4MzVmOTgzMzc5YTc3ODkzNTkxYjliM2NhYjFmNDJjMTQgbGVnYWN5LXRydW5rCisxMzA2NCA5NzBkNjFiYjZhY2Y5MzgzYjM1NmJlNGYxZjVmMGFjMzQ5Y2FlYjYwIGxlZ2FjeS10cnVuaworMTMwNjUgM2JlMDUyNWJmNDdmMWFjNDM2OGU5NjQyZGQ4NWJiNzViNzVmZmQyNSBsZWdhY3ktdHJ1bmsKKzEzMDY2IGE0MjgyNGNmMGIxODFlMjg2YjI1M2Q1YzA3NzJjZTViZWZkMzkxZTAgbGVnYWN5LXRydW5rCisxMzA2NyBmNmZjNjdkNzA1ZGVhZDJiZDQxZTA4NzUzMzYyNWQyNzU2MDBjN2U4IGxlZ2FjeS10cnVuaworMTMwNjggMDRhZmMxYWMxYTBmZDlmYzhiM2U5OGQ5YmI5YTRkMTRlOTcxNzJkMCBsZWdhY3ktdHJ1bmsKKzEzMDY5IDEwNGE0NDFiMmJjOGNkOTFkNTI5MDAyNzI4N2U5NDlhZjgwNDAxMDIgbGVnYWN5LXRydW5rCisxMzA3MCA3YmYzZjQxMmUxMzc4NjFiZmM2OTE5MjdiMmE4N2QyZGFjZTVmOTQyIGxlZ2FjeS10cnVuaworMTMwNzEgZGExNWVkMzE0ZTI0MjgxNDc2M2ZhNDlhMzI5NGRiNjM3OGYwODhkMiBsZWdhY3ktdHJ1bmsKKzEzMDcyIGJmZjMzODJjNmQyZjUxZWY4OGIxNjc1Yjk5OWEzYmEzYTVkMzkzNWQgbGVnYWN5LXRydW5rCisxMzA3MyBmNTgwNDYzMzljYmYzNWQ5YjVmMDg4YzI2ZGJmNjk2ODdiYzBhZTJlIGxlZ2FjeS10cnVuaworMTMwNzQgNGUwY2M2ZTAyYTBkZTljYzU2NmYxZjFkNjJiY2U1MmU3NzU4YTUwNiBsZWdhY3ktdHJ1bmsKKzEzMDc1IDRhZmYzOTE3NTEzNzFkYTVmOTU0ODU0YTllN2QyMmViM2U4ZTFiYmYgbGVnYWN5LXRydW5rCisxMzA3NiAxMGJkMmZiMmEwZDY3ZDlkM2ZlZGNiZDEwY2EzOGQwMDdiOTRjMjI5IGxlZ2FjeS10cnVuaworMTMwNzcgYWYxZTgxOWMwNDQ1NjliZmFhZGQxYjIxMGVhZDM4MjQ4YmFjZDhiZSBsZWdhY3ktdHJ1bmsKKzEzMDc4IGY5NmIyNzI5ODFiY2E2NGFkMmNjZGI3MGQ1MWY1OTliOTIxNjQ4ZjAgbGVnYWN5LXRydW5rCisxMzA3OSA1NjE3MmUwZWZiNzUyZWM2NTM3NDhmMjZiMTE0ZGQwNTNlMjk5ZDMwIGxlZ2FjeS10cnVuaworMTMwODAgNmU3ZjE0YWY4OWI3MWZlMjRhZDU4MWRkYjJhNmEyOWI5ZWZkZDg1NiBsZWdhY3ktdHJ1bmsKKzEzMDgxIDg4NWJlNjAxMDRkNDIzNTUwODMwMGJiNGNiODMwYzRmMmMzYTNlNDcgbGVnYWN5LXRydW5rCisxMzA4MiA2MzQyY2U0ZmY5NDY1NGYwMzk4NGZiZGFmYTVhOWY2NjRhMjBhMzJjIGxlZ2FjeS10cnVuaworMTMwODMgMWVkMWViNWJjNmVjMGFlODA0MmMzNGY2NTVkYzRjNmQxNGZlODFjNyBsZWdhY3ktdHJ1bmsKKzEzMDg0IDQzOWZjODUzMjRjZGQyMjM3NDA2ZTk5NTg2NDE0ZjMzY2Q2ZTFkY2IgbGVnYWN5LXRydW5rCisxMzA4NSBiYmI1YWY3OGEyNTkyODkwOGI4ZmY3MGY3ZGZiYjBjZjZkMTJiNjYyIGxlZ2FjeS10cnVuaworMTMwODYgZjdiOGY4ODZiNTFhNzhjNDBhZTMyYjkwNjMyYjBhZWFhN2Y2YmM0YSBsZWdhY3ktdHJ1bmsKKzEzMDg4IDQ0ZGEwMzY1MWJkMDJhZDY0YjJmZjFkMDJjODY1NTgwOTc3NWU4ZDggbGVnYWN5LXRydW5rCisxMzA4OSBlNDExMTBmZjhjMmZhMDdiMTM2ZjQwZWM1ZGJhNDE3MTQ4N2YxZWVjIGxlZ2FjeS10cnVuaworMTMwOTAgNzAwZGFhNzU4NDdhNWQ0YjQyODYwMGEwMzM0NTlhODkxMjM2MGRjNCBsZWdhY3ktdHJ1bmsKKzEzMDkxIDhkYTQ2ZDZiOGFmM2IyNDE4NjUyYTRiODI0Y2IzMjU0NTJhNWRmNmYgbGVnYWN5LXRydW5rCisxMzA5MiAwNDBiNTI4NjhmZThjZTIyNjgxNTk0NmFmYzBhOTQxMjc3ZDBlZWQwIGxlZ2FjeS10cnVuaworMTMwOTMgMjUxYmFhMDMyYWYwYzNjYjJhOTAwNWQzM2EyYzk0MmJmMzNjNDE0OSBsZWdhY3ktdHJ1bmsKKzEzMDk0IGNlODYxYjQzZWY1MzU2ZjA5NGFmYjczYTNmMWM3OGJkNjc0ZmJjNjUgbGVnYWN5LXRydW5rCisxMzA5NSAwOTY1YWEyZGY1Y2FkOGM4YzgwZjI0OTkwMGNhYjRkMTI5NmJkY2FlIGxlZ2FjeS10cnVuaworMTMwOTYgODNkMzhjNGFkMWRlZmIwOGUxNWY2MWNlZmZiMGQ5YzdlM2QzNDdhMyBsZWdhY3ktdHJ1bmsKKzEzMDk2IDYxYzkxYzdmMTAxYmFiMzE0OWFkZmNkNTY0NmFlNDBlMDQ4ZGU3MTIgbGVnYWN5LXRydW5rCisxMzA5OCBjMzFiODgwYWU4NGY5ZDIyYjAzNTQ2ZWI5ZWI0OTFlOGU3MDc0NWY2IGxlZ2FjeS10cnVuaworMTMwOTkgMjlhYmI3ZDk2YzI1OTUxOGMxMmRiNzkzZTVlZTE0MWUzMDVjNDcwYyBsZWdhY3ktdHJ1bmsKKzEzMTAwIDRlMjY5NDE0ZWVlNTMwYTY3ZDE0Mzg2NTg1Yjg2ODkzOWRkNmVjMjkgbGVnYWN5LXRydW5rCisxMzEwMSA2M2M3YThhYzRlNGNmOWNkMzA4ZmNlMmJhNDE1YWYyNTZhZTE1OWQ3IGxlZ2FjeS10cnVuaworMTMxMDIgNTY2YmQ4N2UwMDMyZTY5MmJkZjdmODgzZmRlMjU2ZjZkYmIwMDNlOSBsZWdhY3ktdHJ1bmsKKzEzMTAzIGM4NzU5YmE4MzU1MmE1NmI5ZjYxYzMwMDFlNjg4OWY3MTkzOGU1YmEgbGVnYWN5LXRydW5rCisxMzEwNCA4NzZkN2U3OTIyNTJjNWUwNTIyMmQzNDRlZmFmY2ZjZDQ0YWIyOTA5IGxlZ2FjeS10cnVuaworMTMxMDUgZGNkYmIxMDAwNjBmMmE5ZjhiMGZhZmU5YmE2YmI1OTA5MDRmOGFmNSBsZWdhY3ktdHJ1bmsKKzEzMTA2IDkwYmRmOGZhNzhhOWI4ZWI3YTgwZWJkMjhlMDMwMDZiOGU3NmNmZDQgbGVnYWN5LXRydW5rCisxMzEwNyAyYWI5NjdmODQ4OTViMGRkODJmY2YyNjJhMzJiYzY4OTllZDBkZDY3IGxlZ2FjeS10cnVuaworMTMxMDggMjhjNDQzNzJkZTM4NDFlMmExYzEzZjM3MjYxMGQxNGZjNTlkYzRhMiBsZWdhY3ktdHJ1bmsKKzEzMTA5IDNkZTA0NGU2NTBhMWI2M2JlZjMzMzU2ODQzYWY1MTQ1NzdiMWRmMWYgbGVnYWN5LXRydW5rCisxMzExMCAwMjcwMWI5OWY5YmFiYjk2OGFkYzU4ZmUzZmQ4NzE3Mzg4YjFmZTEyIGxlZ2FjeS10cnVuaworMTMxMTEgZmU1ZmNiN2U3M2Y3OWJkNTUxMDIzMTA3NzNmZmUzZWU2ODdlNjczOCBsZWdhY3ktdHJ1bmsKKzEzMTEyIGZjYWFjNDFmNmYzYTAzM2ZiNGJiZTllNjg2ODRlMWI0YzEzZDUyY2YgbGVnYWN5LXRydW5rCisxMzExMyBiNDg4OWYxMDZjM2IxODA2ZGNmNzdkM2U3ODM2YTNiYTI5ZmQ0YjNhIGxlZ2FjeS10cnVuaworMTMxMTQgMjQxOWE2YzlmNjI4MTA2M2Y4ZmJkN2FmOGQxMjAxYmFmYjFhZjJiZSBsZWdhY3ktdHJ1bmsKKzEzMTE1IDNmMWU3MmM3MWIzYTVjYmQ2ZjYxZWQzZTZiN2EwODFmYjc2ZTk2YzIgbGVnYWN5LXRydW5rCisxMzExNiA2ZjhjZGM3ZTIyNWM5MTc3ZjY5NDUzYjhmMDQ4MDZlNjNhZTkxNjBjIGxlZ2FjeS10cnVuaworMTMxMTcgZjQyNWU2MGFjNzFhNDZkODJjMjk4MTBjN2MyNzNkZGM5YmJkMzcyZiBsZWdhY3ktdHJ1bmsKKzEzMTE4IGY2MTRmNWNmMmRlYzllM2RjODRmN2VkNzYxZmE2NDJiYTMxNDIwYzggbGVnYWN5LXRydW5rCisxMzExOSBhMDc3ZTVkYTVmYTU3MzBhMGE4NmE1M2QyOTU4YThmN2VkYWNkZmUzIGxlZ2FjeS10cnVuaworMTMxMjAgNTY4ZTk0NzI3YTBjYzhkOWZiYmU4Y2YzYWM3Nzg3M2M5NzA1YTAyOCBsZWdhY3ktdHJ1bmsKKzEzMTIxIGE2YjlkNDUwMDMxNzUyODkwODBjMzBjNDE0YmQ3NzI1NWY5MTkyZWIgbGVnYWN5LXRydW5rCisxMzEyMiAwMTJkMzYxZmRmMjNhOGEzNDdjMzAxOGYyOGYzYjUzN2FkZDU1ODBlIGxlZ2FjeS10cnVuaworMTMxMjMgZjdlOWJjOGRhMTNkMjE2MzNlYWE0MmYyMTRhNzhjY2RjY2UzZTE4NCBsZWdhY3ktdHJ1bmsKKzEzMTI0IGZhNDY4NWZkNWFkZmYxMzQ0OGJjZTRkYWE1ZDE1MzlmZjk2YmYzYjcgbGVnYWN5LXRydW5rCisxMzEyNSA4OTFkMDg5YWJhNDEyYmE2MDk1ZGFlOWEwZWM4ZTUwNmRhZWExZmM5IGxlZ2FjeS10cnVuaworMTMxMjYgNWIxNzBmMGRhOWZlYmQ5OTIyYzNkNDVlZWUzOWJjMGJlOTU3MWFjNSBsZWdhY3ktdHJ1bmsKKzEzMTI3IGRkY2VkZGVmNThhMWM3MWE3Y2VjYTE4ZWU0ZjUxZjI5NWU4YmI4ZGQgbGVnYWN5LXRydW5rCisxMzEyOCA4NGQ0ZjE3MjY2OWE2ZmQzN2QzMWVjYmZlMmU2NjBjM2YwOTA2ODk5IGxlZ2FjeS10cnVuaworMTMxMjkgMzRmZDI1MjQyNzMxOWYyMzExM2VhMzNmYTg2MWM2MTI2MjNlMjQ4MyBsZWdhY3ktdHJ1bmsKKzEzMTMwIGFkNTViZGJhNWRmZmVkOGNhMjBiNDYyMDgxYTQ4OGQxYzcxZDc0M2UgbGVnYWN5LXRydW5rCisxMzEzMSAzN2RkOGI4YjFkODQwMzlhMjhlYjRiYzdhM2VlYjFmM2YwMjZhYmJlIGxlZ2FjeS10cnVuaworMTMxMzIgNzVmMTI4NzFlZWVhN2I1YzkyZDFhNTM0Y2I0Yzc1N2FhOWUwOTZkYyBsZWdhY3ktdHJ1bmsKKzEzMTMzIDE4Yzc0ZDZiY2FlODgwNzQxNDQxNWZhYTllMjM4MTM2OWI4NzY3M2UgbGVnYWN5LXRydW5rCisxMzEzNCAxYmRlYTE3YmM0NzFmMjVmN2E5NzcxNDc5OWNhZDBjNWQ4OWVjYTIzIGxlZ2FjeS10cnVuaworMTMxMzUgZDcxOTdiMzJmYmZlYTFlY2MxOWQ2OGI0ZjM0MTBhMTBmY2ZhZGE0YyBsZWdhY3ktdHJ1bmsKKzEzMTM2IDY0NzI3MjhkZjJkMGNmMmQ2NDIzNjA2Mjg3MWY1MmUzZjE4NGU4NTcgbGVnYWN5LXRydW5rCisxMzEzNyA0NmE3MDhiMGNhMzhmMDEwNjljMjg1MzI4NGZhMmRhZmM5MzI0NGY4IGxlZ2FjeS10cnVuaworMTMxMzggYWE0ZWNiNzE2ZTZlMWM4YTZjNjlmMjRhZjA0OWNkZWYyYTBlMmMyZiBsZWdhY3ktdHJ1bmsKKzEzMTM5IGUyNjQzOTJlMTUzNjFmOTU2OTcyYmM0M2IwM2U1ZDI0YzMxNDBmY2MgbGVnYWN5LXRydW5rCisxMzE0MCAzYzI1OTM3MGFjNTdhYjFlYTU0MGRhYzVmZjQ0ZDIwODY1YzFkYjIzIGxlZ2FjeS10cnVuaworMTMxNDEgOWZkMjkwMjFkMTQ3ZWFjOWQyNmNjZjJkNzgzZDJkMzM4MjkxNWMxNCBsZWdhY3ktdHJ1bmsKKzEzMTQyIGJlZDE1YTAxNWMxYzM5NGVjOWI4NmY0MTE5N2JhNjExMTc4NzI5MzEgbGVnYWN5LXRydW5rCisxMzE0MyBkZjhhMWMyODFhZDdkNzRkNDg5OGNjYWVjNjBmMmUzNGQ3ZjI2NjczIGxlZ2FjeS10cnVuaworMTMxNDQgMzYwNDk0YzI1ZTBlNWE5ZDgwMmRmODUzY2Y0MTA3YmRmOWFlMTY3YiBsZWdhY3ktdHJ1bmsKKzEzMTQ1IGVhY2EzNzc1YjQyNWQ3YmQzODQ2ZmY2NGI0ZTNlMmM5MjlkMzFjMmUgbGVnYWN5LXRydW5rCisxMzE0NiBmNmVjNGE5Y2IwYjM5M2ZkMjM3YmE2NzRkZWU5MDVjYzJmNWZjOGIxIGxlZ2FjeS10cnVuaworMTMxNDcgNjM3MmMyYTRkNDdiZDgxNGRiMmJlYTIxNTNjZmRiZDlkMGUxNGI0YSBsZWdhY3ktdHJ1bmsKKzEzMTQ4IGUzYTA4OTgzY2QyNTFmOGVmZTcyMzFmNTBiMTMxYjU1NGFmZmU2MTcgbGVnYWN5LXRydW5rCisxMzE0OSBjZjYyYWZmMTA0Njg3YTRiM2M0MTQzOWRhM2M4ZjM1NWQ1ZmMxMWRlIGxlZ2FjeS10cnVuaworMTMxNTAgNDY3ODhmMTY2NTBiMDdiODA0MjkxMGE2NDQ1ZmQzM2Y3MGUxYTM2ZCBsZWdhY3ktdHJ1bmsKKzEzMTUxIGUwOWYxOTQ0MTEzNmNhMzlkNjc2MDU2ZjY5NmEwMzFlZDM3NDI2ODkgbGVnYWN5LXRydW5rCisxMzE1MiBjNzQ3MGIxNGRlYzdjM2RmMDgxYzE2MTM0ZjQzZmUzYjBiMTFkMzQ5IGxlZ2FjeS10cnVuaworMTMxNTMgNDhjMzNkMDUzNjdmMmE1ZTgyNTEwNWQ2MDQ2MmU0MjJmZjgyODQ4YiBsZWdhY3ktdHJ1bmsKKzEzMTU0IDQzNjk0ZDM1MzQ0MjE5YmM5NTJiZTE4MjJhZGIzZTdmZWFlYzVjM2UgbGVnYWN5LXRydW5rCisxMzE1NSBjOTllNjg3ZDFhYzRhYzY1MWEzNDNhNWE0ZjIwODMwZGExYzc2M2MzIGxlZ2FjeS10cnVuaworMTMxNTYgOGIzOGNlNDIyODNlY2JjZmQ1ZTNjZjYxY2E1MzAxNWM1NTMyOTIxZSBsZWdhY3ktdHJ1bmsKKzEzMTU3IDZjMjY1MTEzZTdlOGM2ZmE3MWE3MTBlMjlkNDM4YmY1ZDZjMGNjNTEgbGVnYWN5LXRydW5rCisxMzE1OCA0MmRiZmQ0OTgzODc2NzMyZGQ2YTMyM2ViMGI2NTc4ZWUwOGJhOGQyIGxlZ2FjeS10cnVuaworMTMxNTkgOTg4M2UzMGFjYWM1OTI4ODYzMGM0ODc2NmMzYjg4MmRkMmQyZGJmOSBsZWdhY3ktdHJ1bmsKKzEzMTYwIDI5OWJmNTNlNjg2MTZlZmJmYTg0ZTkxY2MzMzlmMDI1YWNjZWExMGYgbGVnYWN5LXRydW5rCisxMzE2MSA4ZTcyZmM1N2Y1NWZkNDMxZjRiM2YwOTM4Nzk2YjYyZTZmMGZiMDQzIGxlZ2FjeS10cnVuaworMTMxNjIgZDIwM2NiOWVjZTM3Mjc3ZGYxNWExNjAzNTQ2MjRiN2U0NmE0MTJiZSBsZWdhY3ktdHJ1bmsKKzEzMTYzIDk5NjgxZWU4NjY5ODJkMDY0ZDhkOTI2YzM3ZTdmYmQ5NjAxMDE5ODUgbGVnYWN5LXRydW5rCisxMzE2NCA2OWZiODFmYWNiMDM3ODRjNTA1MDFhMTYxM2Q5M2ExZWZjZTgxYjExIGxlZ2FjeS10cnVuaworMTMxNjUgOTVhYzFjOGMwODVlNTRjZTJjNzlmNjU3M2MyOWQ4OWU5NGU1YmRjZCBsZWdhY3ktdHJ1bmsKKzEzMTY2IGE3MWM2MzZiODVkMTRhMzczMGZiMmIxNjBkZGJmODZjNDRiZjFlMmIgbGVnYWN5LXRydW5rCisxMzE2NyBhYjAyMzM0NDUzZjk2ZDQ3MDJlZmVkNGFiNDMyYjQ2ZGQ3NDI5MmRiIGxlZ2FjeS10cnVuaworMTMxNjggMzdhMjIzNmQ0NzJmMmY0ZjE1OTc3ZmE2NjM2NDEzMGI5MzAwM2ZhMyBsZWdhY3ktdHJ1bmsKKzEzMTY5IDkzMzczMjAyNmU5Y2Q0OWQ4N2MwZDg0OGYwZGVhYjNmZDA2MThlMTIgbGVnYWN5LXRydW5rCisxMzE3MCA3ZDA1YmIzZTEzNWY2Mjc3NjcxZTI3NmIzMTZhOTlkMTY4MTNkYTFjIGxlZ2FjeS10cnVuaworMTMxNzEgYmViZTk4MzBiMzNjZGExOTZiNjUzNjFiZmEyYTVjNjhjZmU1ZTNiNSBsZWdhY3ktdHJ1bmsKKzEzMTcyIDAyZWI3NDc0OTI2MmU1NWI1ZjMyYzEyODBhYWI3ZGQ4NDFjYmJlNDIgbGVnYWN5LXRydW5rCisxMzE3MyA4YzZmZmU2NzA5NjNiMDFlYzk0ZTJlNDJkNGIxYzNhYTVhYjA5MDhkIGxlZ2FjeS10cnVuaworMTMxNzQgZTA1ZjZiZGM4YjUyMDQ1YzM1YWU5OWQwM2RhNDcwZmViMjBlZjY4MSBsZWdhY3ktdHJ1bmsKKzEzMTc1IDhjMGE2MGZiNmFjZjY5Y2Q1NjU5YTAyODlkMzM3YzUwMWMzZDE5M2MgbGVnYWN5LXRydW5rCisxMzE3NiA3OTg2NTU1NTY0NTY1NTBkYmVkMjRlNGVkODE4YWNjZDFlOTk2NmYzIGxlZ2FjeS10cnVuaworMTMxNzcgZjYwNjJlNTkyMzhmM2UzNWVhMDBkNWMyYTdjYzkzY2QwZWM5Nzg0YSBsZWdhY3ktdHJ1bmsKKzEzMTc4IGUyYTFjOGQyMzNkZjcxOTIwNzI3MjQ5OGM5YjAzMjRiNGFlZThjZmEgbGVnYWN5LXRydW5rCisxMzE3OSBiMjYwNmE4ZmNhYWJhOTY3ZGIzMzQzYzcyNzhlZTU3MjhkMDM3OGE5IGxlZ2FjeS10cnVuaworMTMxODAgZWU4NjFkN2JjMGU5MzBjZmM3OGEzM2ZiNjk2MjFlODU5NzE3YmEyZCBsZWdhY3ktdHJ1bmsKKzEzMTgxIDU4ZGRlZTEyNTZlOTU0MDVlNzczMzJmNjhmMmM4ZTQxM2Q2NGMzOGIgbGVnYWN5LXRydW5rCisxMzE4MiA5ZTRjNTczZWE0OWJhNmIzMmNhNjExZDZiYmY3MjA3ZTBjMjRkZDM2IGxlZ2FjeS10cnVuaworMTMxODMgMTliNDg3MDBhY2RiYmY3NGRhMzBlZDdiZjFjOWM3MzZiYTBmMDdjZSBsZWdhY3ktdHJ1bmsKKzEzMTg0IDRjYjg0OTRhYmE2MjBlZjI3ZWVhYTYxNGQ1MjlkMzJhZWU5NTU1MDkgbGVnYWN5LXRydW5rCisxMzE4NSBhZTE4ZThlZWJlMDRkYThkNGY0YWQ5MDMwMDFjNWUxZjAyMmU1MDI0IGxlZ2FjeS10cnVuaworMTMxODYgNjMzZDJmN2ExZTQ4ODA1YzBhOGE0OGExZWNhNmU1MzExODA4NTFmZSBsZWdhY3ktdHJ1bmsKKzEzMTg3IDcxMzc0MDAwMzdlMDE1OTAxNTRjYTZkNjUwNmY3ZWZhYTVkMTg3OTUgbGVnYWN5LXRydW5rCisxMzE4OCAzYmIwMjljNmRkMzc4MjJhMDlkYzNlZTk4MmRiYjcxZDk3YjU3YjI0IGxlZ2FjeS10cnVuaworMTMxODkgZjY3MTE5NWFmMDIwZWQ4ZGI0ODNiOWZjZTkzZGJhYjc3ZGQ5ZDA3YSBsZWdhY3ktdHJ1bmsKKzEzMTkwIDg1Y2Y0NzY2NTdjNWRlNjE5ODRlNWQ1ZmYwYmQ0NzY1ZTFhNzgwODQgbGVnYWN5LXRydW5rCisxMzE5MSBhZTAzMDZhYWE2ODhlMTFiZTVkOGQyMmQzNDdkYjBhMDQwYjVhMmUxIGxlZ2FjeS10cnVuaworMTMxOTIgM2I4NzYyYjhjMTQwZDAxNmNlNDUyNTg4N2ViZDFhMjJjMTRlZTE3OCBsZWdhY3ktdHJ1bmsKKzEzMTkzIDkyMWZmMzg1ZjI1NmExOGFjMjcxODAyYzBmZGM3ZGVjMGVmMWZlNDMgbGVnYWN5LXRydW5rCisxMzE5NCA5YjdkOGVjOWI5MTBjMzIyNGI5YzQ4ODc5YzYyOTZjMjUyZTVkMGFhIGxlZ2FjeS10cnVuaworMTMxOTUgYTlkNjEzYWI1YTc2NWUzMzUxOWUwNTE0ODZkZDQ3YWEzNjk2ZGNhMSBsZWdhY3ktdHJ1bmsKKzEzMTk2IGFiMTJjNjMxZDczNWQ0OGZmN2MwYzYyZTBhZGQ2ZmVhMGNjM2Q1MmEgbGVnYWN5LXRydW5rCisxMzE5NyBkMzBjY2IwMGJkN2I4MGI1ODM3NGIwMWIyZjdiMmI5Y2RmMWIxMjc3IGxlZ2FjeS10cnVuaworMTMxOTggOWUwNDAyZWUzODEyMDY4OTc3MTk2YWM2Mjk3NmI3ZjgzMzU0MjMyMiBsZWdhY3ktdHJ1bmsKKzEzMTk5IDI1Y2M3ZjBkNDVmMzhkYWRjODljMmVjYWZhMTQxOTc5NmMyY2FkNzggbGVnYWN5LXRydW5rCisxMzIwMCAwYjhiYTkzNTFhMDYzNTE2ODRiMzVkMDM1M2Q4YWRjYTUzYmYzZDk5IGxlZ2FjeS10cnVuaworMTMyMDEgZTcwMzk3OWZmNWU3NDY5MjhiODY0YTU0MDY3M2JkYTE1MmM1NmMxYyBsZWdhY3ktdHJ1bmsKKzEzMjAyIDY3YTRhY2VkMGQ4OGU1M2E4M2MwYjlkNzA3N2EzYzM4YjgyYTc2NWIgbGVnYWN5LXRydW5rCisxMzIwMyA0ODIyNjE3YjM5ZjE0YTczNzc5YzU5MTU5YjZlZGIyOGFkYjlkMjlkIGxlZ2FjeS10cnVuaworMTMyMDQgYWJhMWNkMGQxM2VhZmJkNDU2OWY2ZTAwYjJmZDIyMTlkNTJhYzQ3NSBsZWdhY3ktdHJ1bmsKKzEzMjA1IDgxZjUxMTA1ZjQyODhkMjNiZWNlNTczYjI2OTA1MGZkODg4MGY1YjAgbGVnYWN5LXRydW5rCisxMzIwNiAzNDZlOWEwZjBmOGM3Y2U2YTY5MGViZWU0Njk2ZmE1M2FhZmRkNWI3IGxlZ2FjeS10cnVuaworMTMyMDcgYzkwM2VjZWNiYTY2OWJiMzBmMGY3MTYwNWE4Yjk4ZjBiMjhkOGNhYiBsZWdhY3ktdHJ1bmsKKzEzMjA4IGU0ZTgwMGE3OGQ4ZGQyNzk5NDlhNWMzYWFjMjQ2YTFlNTVhZTM5YjIgbGVnYWN5LXRydW5rCisxMzIwOSA1OGIxOTFiYWRiOWE4YjVlMDNiNTBkYmNjNmM4MmVmNzM5NWE2ZDMyIGxlZ2FjeS10cnVuaworMTMyMTAgNDc4OGZkMDcwYTMwYjNlMWQxNGY0NWU4YTM4MjA5OTg4NDE2N2M1MyBsZWdhY3ktdHJ1bmsKKzEzMjExIDg1MTFlZmVjNzMwOWM3ZTM1NDZjZmZiOTM1ZTJhMGZiMTZmOWQ1MTkgbGVnYWN5LXRydW5rCisxMzIxMiBjYWQ3YjU1YTM2M2ZmNTQ2M2M4MDVlNzdkZDhjZDBmMDY0M2E4MmE0IGxlZ2FjeS10cnVuaworMTMyMTMgYjJhYWU3MTk4NzIzODY3OTVmM2IxMjNlZmU2MzRjYTRmNjY0Y2NkNSBsZWdhY3ktdHJ1bmsKKzEzMjE0IDE0ZjZlMGRjOTYyMjlmY2UxZDJkMDliYWU5NzA4ZWZiM2UzMWY2NDQgbGVnYWN5LXRydW5rCisxMzIxNSBkOGIyZjgyZjMzZWQyZGRlNDE1MDgzYWE4YmExMTNlYzNmNDBhNGFiIGxlZ2FjeS10cnVuaworMTMyMTYgY2QwMWJhMTBhOTYyYzA5ZmM0NTJjOGFiMGQ3MmFkZjkzNDFjMWRiMCBsZWdhY3ktdHJ1bmsKKzEzMjE3IDQ5MGVjMGM0MGNjNjAwY2M3ZjBiMDU1MDExMzM1OTUwZWVkNmI1NTAgbGVnYWN5LXRydW5rCisxMzIxOCBjZmQwOTMyYTUzZTQ5MWY4M2FmMjQ3OTIzNjQxMGY1Mjg4ODM5YThkIGxlZ2FjeS10cnVuaworMTMyMTkgNzY2OGJjZGU5YzBhZDY0MDg3MjEyOGNiNzBjNWViODg1YTM2NmEyNyBsZWdhY3ktdHJ1bmsKKzEzMjIwIDY3MTIxYTJjNjJiZjkzMTRjZDFkOWE0ZGQ5NGJjYzhkZDk5OTZkMGUgbGVnYWN5LXRydW5rCisxMzIyMSBiYWY2NmQ2ZTFiYzE2ZDIxZmYwMTI3MjJmOWUzZWVkNTdjMGI4NDkyIGxlZ2FjeS10cnVuaworMTMyMjIgODBkNDg4NWVkZDY2NDA4YWUyYWJmOWM4ZmMzM2MxY2I5MGE3Njg5ZiBsZWdhY3ktdHJ1bmsKKzEzMjIzIGZlMWU5ODE5MGFmNmVlODNhM2Q0NTI0NTRkY2JjZmM1MjkyMWEzNjcgbGVnYWN5LXRydW5rCisxMzIyNCBmMDk1MDc3ZDIwYjAyZTJmNTdjODZkNTBkYzY0ZGY1MWQ4ZGZiODllIGxlZ2FjeS10cnVuaworMTMyMjUgZTk5NWJjYzRjYzgyMjRjOGU4NzkxM2M4ZDc2YzAwOTRlMTdkMDhmMCBsZWdhY3ktdHJ1bmsKKzEzMjI2IDlmNjk1YTU0OTg2NTQ4Yzk3NGQ5MjU3N2M4OWQ3YzY5NThkNmE4N2QgbGVnYWN5LXRydW5rCisxMzIyNyBmMzM1ZmExZDZlNzE1ZWE4YzMzZjlhYzNmYjQ1N2U2NDkwZDNhMmFhIGxlZ2FjeS10cnVuaworMTMyMjggNDgwMzdmNDgxNGIxMTBjMGMxNDU4MTg5ODljYWEwNzEyYTY0YjNiZiBsZWdhY3ktdHJ1bmsKKzEzMjI5IGYzYzdmZjdhNmU4MWFiNTY0MjU4YjIxZWMwMDVmN2E2MDY1MmQ3ODggbGVnYWN5LXRydW5rCisxMzIzMCBiNmQxYTMyYWVkNzYzOGJlYjc4MzNlNmZhNDAxOGI5MzQ1OGUyMDkyIGxlZ2FjeS10cnVuaworMTMyMzEgOGRlN2Q5MGIwYjM0ZmU0ZWRkMzZiOTZmM2U4ODQxODg1YzE1MmQzYiBsZWdhY3ktdHJ1bmsKKzEzMjMyIDllNWRmNGM0OWE1Njc1NGRmY2E5Y2M0MTdmODhiNGFlNGFmNWFkNmMgbGVnYWN5LXRydW5rCisxMzIzMyBlZWExYWIwMjhmNDMxZWNjNmRlZjg4MjhkMzEwOTA3MDU3YTdiNWM4IGxlZ2FjeS10cnVuaworMTMyMzQgZjM4NzY5MzA4NDM4NjJlMWM4N2Q5Y2JiYWE2NjJiOTkyZTM5MzA0ZiBsZWdhY3ktdHJ1bmsKKzEzMjM1IGM1ZjQ0OWFhNDM0NTkyMTQxNTlkNTU0YzExYTAzMTFmYTUxNDE5NTIgbGVnYWN5LXRydW5rCisxMzIzNiAyNDc1YzNjZmU4MzkwMzI2ZTg4MmMyZDM5NjliYzljNDIwZjdkYzNiIGxlZ2FjeS10cnVuaworMTMyMzcgZTA3NTI3MmY0M2YyNjU2ODhmOWVlY2E1MTBhMTFkZTViZTcyNmNmZiBsZWdhY3ktdHJ1bmsKKzEzMjM4IDYxMDUxZmQ2NWFhYjA4MTA1YTk1Nzc5YjIxY2Y0YzgyODhlY2JlNDkgbGVnYWN5LXRydW5rCisxMzIzOSAyNjY2NGQwNzk1OTc5OTU5MmJiZmFhZDA5NTI2NWRiZWM5MDI3OTlkIGxlZ2FjeS10cnVuaworMTMyNDAgNzQ0MmNjZWRkNWZkM2MwMmI5MWMzMjdhM2EwMTZkMzFjMjk2YTYxZiBsZWdhY3ktdHJ1bmsKKzEzMjQxIGVjNjY0MjU0ZWY1YWFhOWUxYzM3NzRmZWZlM2EyZmQ5MzM5NDA2YzQgbGVnYWN5LXRydW5rCisxMzI0MiAyNzM3MWI2ZDcwYzExMWQ2YTZjMTViNzI2NWE1Y2Y3OTJlOWZhMDY2IGxlZ2FjeS10cnVuaworMTMyNDMgZGYxNTRkYTE4ZjBlYTBkZmMxZWRmN2RiMjA3MzM3ZmU2NGFkZjEzZSBsZWdhY3ktdHJ1bmsKKzEzMjQ0IGU0ZWU4ZWE0ZTgzNjhkMmYzZGE0MThhMjM2Mjc4NGRmMzZmMWFjZjcgbGVnYWN5LXRydW5rCisxMzI0NSAwM2U3NGM0YjE4OWM5ZGE1NDlmMmM1MDkwZTEwOWQ1MzhmOTQ5MTRhIGxlZ2FjeS10cnVuaworMTMyNDYgMDljNmIyY2ViZWU5YzYxZTg2NWEyN2NjMDIyYjQ5NjI0Nzc2MDg1YiBsZWdhY3ktdHJ1bmsKKzEzMjQ3IDY3NmRlOGE3YTNjYmQyNWEwZmQ5ZmZlZGZhM2UxZDJjMThlOTNkYWYgbGVnYWN5LXRydW5rCisxMzI0OCA4NTU4ODdhMmNjNjAxN2M2ZDhhNzk2ZjgzMjAwY2ExMDZiNDMxZjI3IGxlZ2FjeS10cnVuaworMTMyNDkgNGM5ZGU2ZmQyNjdiOTNmYWNiY2MxMmNiODQ1YTU4ZTZlMzVlYTk2MyBsZWdhY3ktdHJ1bmsKKzEzMjUwIDNlNWIwNTAzNWViOTg0MjllNmFmZGQzZTM1MGJiZDAzNWVjYjdmZDkgbGVnYWN5LXRydW5rCisxMzI1MSA0ZGIzNjkxYjljODcxNWZjYmY4ZDg0NTdiNDEzMDk2NmNhNzZjYThmIGxlZ2FjeS10cnVuaworMTMyNTIgZTdlYmNmZGUzYjVlNDI3MWFjNjFkY2Q3N2UzN2UxOGYxNzlmNGVhMSBsZWdhY3ktdHJ1bmsKKzEzMjUzIGYwYTYxOWVlYmU5YTJhMjczMzFlNWQ3MTJlMTJhYmRjMGY4YjMyOTQgbGVnYWN5LXRydW5rCisxMzI1NCBhMGQ0YTk1N2ZkOTFjMTFmMDdhYTVlNjc1MGVlMWZhYzAyODdhMjJjIGxlZ2FjeS10cnVuaworMTMyNTUgOGYzNjY1YmI5ZTNlMGM4MTJkYWYxNzM0ODA1MThkOGE5M2YxOGMwZiBsZWdhY3ktdHJ1bmsKKzEzMjU2IDhlZGJkNWFiNjIxNzU3MGJlYWRiMDFiZWYyZjExYmU2MWM3NzBkYjEgbGVnYWN5LXRydW5rCisxMzI1NyA4ZWVmNmY2NzU2NzdjNTdjMGQ0OTg5YzMyYjU2ZTczODNhNmI3YjljIGxlZ2FjeS10cnVuaworMTMyNTggODFmNTRjMDBlMjI0ZmU1YjFkZmM0OWE4MTVjN2RmY2JiM2Q3OGU5NiBsZWdhY3ktdHJ1bmsKKzEzMjU5IGNkZTliMmU2NGMwMDk3ZTE5MDk0YzdlODU3ZWJmOTIyMGM1ZTc4MzUgbGVnYWN5LXRydW5rCisxMzI2MCBiZmEwYzc0MzM0N2E5ZGNjOTIyZjFhOGU3YzdhZWRmMTJhZGE4ODk3IGxlZ2FjeS10cnVuaworMTMyNjEgZjFiMmJiNTM1ZWIzNjNjNDA5MTI4Y2ZjMWI4OGRkNDcxNzkxYTAxYiBsZWdhY3ktdHJ1bmsKKzEzMjYyIDNjNGRiNmM2ZTk3OTNjZmY2MWEzZTQzNDQ2OGEwZGI0ODNiZTg4NDAgbGVnYWN5LXRydW5rCisxMzI2MyBlY2UwOThmM2UxZGM4ZWQwYjRlYTQ5YTEwMGFkYzk5Y2VkODJkMTBhIGxlZ2FjeS10cnVuaworMTMyNjQgYWFhNWY5OGNiMmQ2ZDljNWVlNWJhODYxZjNiZmVlMjM0Y2FmZTYxZCBsZWdhY3ktdHJ1bmsKKzEzMjY1IDZhMzhlNjY3ZDM0OTgwOGNhM2QxZGQ4MjFhNWVlNzkyNTNiOWRhOWMgbGVnYWN5LXRydW5rCisxMzI2NiAwNWQ3MDMwMTVkZTE1NGY5YmVkOTViOTNhODFiNzY4YjVjZDQzN2NmIGxlZ2FjeS10cnVuaworMTMyNjcgMzkzYTZkYWYyODlkZTM4OTRjNjVmOWIwNThjZWFmNTY0MzZmOTUzMCBsZWdhY3ktdHJ1bmsKKzEzMjY4IDE1MGFjMGQ3MDkyOTIyNDk0YWYyNjhiNjY0Y2Q5MTNiYTE0ZDAyMTIgbGVnYWN5LXRydW5rCisxMzI2OSA5MmE5MmRlOTU5YjllMjRiZGY5YjJlMzM2OTVhMzhiNmQzOGVmMTVjIGxlZ2FjeS10cnVuaworMTMyNzAgM2YwYTZiMTU2OWU3ZTZlYThlNzFiM2Y4NDg5OTkzMGFlZDlmNjM2MCBsZWdhY3ktdHJ1bmsKKzEzMjcxIGRiY2E0NzBhZjhmMjQ4NzE5MzQ5YzY5MGUzMDE0YmE1NTRkNGE0YmYgbGVnYWN5LXRydW5rCisxMzI3MiBlMzcwNzRiNmU3OGNmNGFiNzFhMWM4ZjVlZGE0NTBjMjcwNDcxN2FhIGxlZ2FjeS10cnVuaworMTMyNzMgYzZhNGU0NmYxYjA5ZGRlMzI1MDc1MzdiMjJjNjUyMTY3MzVlZjNhOCBsZWdhY3ktdHJ1bmsKKzEzMjc0IDFhZjdhMTQ2NzA4ODM4YWUwZjA4NGE0ZWVmNzc1ODQ2ODBmYTY5Y2UgbGVnYWN5LXRydW5rCisxMzI3NSBmYjE3MzNiNmJlZjVlYWMwZWIzYzk1MDc0MzI2YWJiNTE2MzFjNjMxIGxlZ2FjeS10cnVuaworMTMyNzYgMmY2YjEyNzZlNWRjNjQyOWZhNDQyNDU3OTNlNzhiZjFhYzYzMzBhOSBsZWdhY3ktdHJ1bmsKKzEzMjc3IDQ0MjQ4M2Y0NTM0NTU4NWE3MmJiMjM5NjQ2MTJlYTQxMTMyMWJjZGQgbGVnYWN5LXRydW5rCisxMzI3OCAyYjAxNjZkMjI1NTEzZTRkNDM1ZmI1ODI0MjA0ZjA3NTNmMGE2MjdmIGxlZ2FjeS10cnVuaworMTMyNzkgMWQ3ZWJiZjFmMGYyNzU1MDg5NTRmNWQ0MDQxYzg4NzQ3NGNjMTE3OCBsZWdhY3ktdHJ1bmsKKzEzMjgwIGUwZTkzZTQxNjZjZTJkNTA4MjhiZTM2NTgzMzgwNzc4YmQzYmQ4NGMgbGVnYWN5LXRydW5rCisxMzI4MSBjMWM3MGI3NDNkZjJlNzhiOTg3ZjY4YmJkNzExODQ5YzY0ZTcyZjkzIGxlZ2FjeS10cnVuaworMTMyODIgOTY2NTk0YzZiMWUyNTZhZGE1MWMxZmU1NzQ0ZjJhNTAzNjBjN2Q1NCBsZWdhY3ktdHJ1bmsKKzEzMjgzIGI3MDg5NmViODk0NDBlOTA3ZDEwNTBhYWI2NjQ4ZTYzNDZjMWFiMGQgbGVnYWN5LXRydW5rCisxMzI4NCA5ZjBmMWQ4ZTZlYmFmN2U3M2Y5MWI2NTkwMTBjNWFjMDk3ZmE0OGYzIGxlZ2FjeS10cnVuaworMTMyODUgYjM5ZmU1MTI5OWJlOWRhZTk0ZDg1ZDQ2NWZiM2NlNDU2YjlhOGNhZiBsZWdhY3ktdHJ1bmsKKzEzMjg2IDQ3OWI0ZDFjMGI0NzI4NWRmNjZhY2I2MjcwNGZhNmQ3NzBiZjAxZGEgbGVnYWN5LXRydW5rCisxMzI4NyA1NGEzMGQ2YjAxZjEwOGE4MDU0MDhlMzUyMjEwMGU2NjcwODU2NWQ3IGxlZ2FjeS10cnVuaworMTMyODggYzM5YzE0MGIwNGJjYzljZjNhMDMzMmNkN2FmOWQyMzIwNWJlMjRiZiBsZWdhY3ktdHJ1bmsKKzEzMjg5IDMyZTc4YzlmYjQ5NmMzODhkZDAzYTFiZDRjYjk3YmZhNjRmYWEyM2UgbGVnYWN5LXRydW5rCisxMzI5MCA1ZGIyYzA0MjdjYWQzNGE0OTljMjllODY1MDE1MmY3OGI3ZmVhZTVkIGxlZ2FjeS10cnVuaworMTMyOTEgYTM0ZDY2NTZmOGUyZGRmYTkyZjdjNDI3MWFjODZjM2M0NDdmZWI3YSBsZWdhY3ktdHJ1bmsKKzEzMjkyIDFiZmFhNTM3NGRmOTk3NThiMTRhOTExZmE2ZTNhMmQ4YjI3YjcwMjUgbGVnYWN5LXRydW5rCisxMzI5MyAzMzViNGMwMmYxMGRmMGQ5MDBiYTQ0MzYzMzkwYWU3YzcxMjJjOTlmIGxlZ2FjeS10cnVuaworMTMyOTQgNzY3MzUxZjQ5NDRhYmFkZTQxYzFlNWYwZGUyYjQ3YjZkNTFkNTBiMCBsZWdhY3ktdHJ1bmsKKzEzMjk1IDEwNWJlZWQwNjhmOGU2MmQyNzNiM2RkNWYxZWIwNjhkZDJkMzNkNWUgbGVnYWN5LXRydW5rCisxMzI5NiAyZDM2ZjA2ODliOGEzZTA1NTliN2ViYTM0NTMxNWZiYzI2ZDM0NGRmIGxlZ2FjeS10cnVuaworMTMyOTcgYjAxNWQ1ZjFkYTFiNTcxNzkxZjQ0MGY0YmQ5NWEyYmYwODY1YzNmYyBsZWdhY3ktdHJ1bmsKKzEzMjk4IDdjNDBkN2MxZWVmOTRmNzcwMzVhYWI4Nzg5MGFkZmFkMDhhM2ZjNmYgbGVnYWN5LXRydW5rCisxMzI5OSA4ODVhYmUwOGVhMmRlYWM5MzM1MDdkMjE3OTY3NzBhMjc5Y2U5NjdjIGxlZ2FjeS10cnVuaworMTMzMDAgOWVmZTA2Nzk0MGVhYTg3ZjhiMTE5MmNlODZhYmZkNzIxZjM3YTZhMiBsZWdhY3ktdHJ1bmsKKzEzMzAxIDk0YzdhM2YxYzAwNWU2NTk0NzIxYzlhODVmYmYxNzVlMzFlZmIyODkgbGVnYWN5LXRydW5rCisxMzMwMiA4ZjMxMTAzYzg4YThlMDdlNTVkOTIzMjY3ODMwYTQ5MDk5Zjk5ZGRlIGxlZ2FjeS10cnVuaworMTMzMDMgZDIwZTRkMGFmYjQzNjJkODkyNTk5MzdlNDdiMjQ0N2MyZWMxNjZjMyBsZWdhY3ktdHJ1bmsKKzEzMzA0IDMxMmViNDgwMWExYzgxNmJiZTk0NjljZGFhZjdjNmQwZDk3MGJjZDEgbGVnYWN5LXRydW5rCisxMzMwNSAzZDJlYTU1YmM0ZTY4YTQ4MGY1OTQ4NmI2MDI3NDA5M2YwNDc3NmQwIGxlZ2FjeS10cnVuaworMTMzMDYgODc5ZDFhZTVjN2E1YmNlZDJlMDQ5ZmU5Y2IxZjFjYmY2OWM2NmYxMiBsZWdhY3ktdHJ1bmsKKzEzMzA3IDc4MTIzODM2MWY1MzFlM2M1MDE5OTQ1ODFhYzI0NjJlYmNhZDk5NTkgbGVnYWN5LXRydW5rCisxMzMwOCBhZWIxM2NiN2I3OGNhNWU4MDg0YjNhNjMwZmYzODFkMjdkMzQxYWUzIGxlZ2FjeS10cnVuaworMTMzMDkgYjg4YTYwNTI0MjY5MDlkNjJiNzZlNTNlZDBhMTA4ODBjN2QyOGQ1NSBsZWdhY3ktdHJ1bmsKKzEzMzExIDdlYTM4NTk3ZTcwZmFiYmRiNDVmMjNiYzM2OTc2YjYzZjY2YzExMGUgbGVnYWN5LXRydW5rCisxMzMxMiBmZmIyYTQ3YjY0NWVjN2JmMWE1YmJkYWZkZTMwYTQ3MTBkOTZjZTg5IGxlZ2FjeS10cnVuaworMTMzMTQgZjE2NGQ5MTkzMzQxYzliNGYwOGU0MzY4NDFkYmMzNDZiZTBlYjJkNiBsZWdhY3ktdHJ1bmsKKzEzMzE1IDBmZThjZjdhYzZkNWEzNTY0Mzk0MTUxNzZmMmVlZGU0MjliOGNkM2IgbGVnYWN5LXRydW5rCisxMzMxNiBkZmJlMjU4ZTI4YzE4MTdkYTIyMjkxMDcxYTI1ZmU4Y2E3YjRiMDJhIGxlZ2FjeS10cnVuaworMTMzMTcgNjg3OTlhMjAyNzY2YTE0NDFhN2YxOWM0Njk2MzU0OWYwZDZhODA4MSBsZWdhY3ktdHJ1bmsKKzEzMzE4IGQ3M2EzMjkzYzQ3YjJjZGYxZTg1ZjdkMDM4YjZjZTkyZjgzNTZjOGUgbGVnYWN5LXRydW5rCisxMzMxOSA1YWQyN2FlZTdlNTg4NjFmNjI1ZmU3ZWQ4NjcwMDYzMzIwNDFhNDk3IGxlZ2FjeS10cnVuaworMTMzMjAgMmZlMGJiOGI5ZWVmNzliYmRhYTFiNzc1MzAxZmEwMzExOTM3MWNmZiBsZWdhY3ktdHJ1bmsKKzEzMzIxIDhkZTEzY2VhOTY0MTEyMjY4ODlkYTBlOGIxZDVjYmYxMTI0OTlmNDYgbGVnYWN5LXRydW5rCisxMzMyMiAzMzFjODVhY2ExOTU3MmMyZjU5M2NiMDU0MTgyOGFjMzQ2M2NmNTMwIGxlZ2FjeS10cnVuaworMTMzMjMgYzEyZjdjZjE5MmZiMzM4NjA5OGI4NjFjNTk5YzNlM2UzMDRmZGZiNyBsZWdhY3ktdHJ1bmsKKzEzMzI0IGQyNmE5ZjkyNTRmMTRkYzMxNzk2NjA0NjkxODU1YzVkNGZlYTI0MDggbGVnYWN5LXRydW5rCisxMzMyNSBlYjdhNjJhY2RkMWRjNWI0ZjgzZGU0ZDhkMzRlZTEzODU0M2EwYjNlIGxlZ2FjeS10cnVuaworMTMzMjYgNWUwM2VhNjkyN2YyMDZmNTYwMDkyMzRiZDEyYmMxNWFlMThjOGU0NSBsZWdhY3ktdHJ1bmsKKzEzMzI3IGRmYjVmZGEzYjI3M2FkNzRjYWNmZmRkZTJjMDhmYjQ4MmI5MjY4MWEgbGVnYWN5LXRydW5rCisxMzMyOCBkM2M2ZTlhMTI2YjI5ZmFjNmQ3OGYyN2I3YzczZGQyNGJlM2I3MDE5IGxlZ2FjeS10cnVuaworMTMzMjkgNDlhMGI4ZGNiMzZhNGUyNjkyOGEyNmQxNjBiMmYwOWNjOTFiY2ZmYyBsZWdhY3ktdHJ1bmsKKzEzMzMwIDBiYzdjNTAyZWI0ZDJlY2MzYTk2ODZmNGNlOTlmMjg0YjA4YWMxZjMgbGVnYWN5LXRydW5rCisxMzMzMSA5NjM4OWYwYjVlZjA4NmI0ZjM4ZjNjYTc2ZmIwYmUyNDc2OWVlZDU3IGxlZ2FjeS10cnVuaworMTMzMzIgZmU1YjdkZWE1YTEwZmZhZGMyNzNkZWFlYTg0MzEyMmQzMDFiMWNlZiBsZWdhY3ktdHJ1bmsKKzEzMzMzIGVhODMyYzNjNmU2ZGEyNjNhNDhjYjQzODAwOWE2OThmOWUwYjNlOTAgbGVnYWN5LXRydW5rCisxMzMzNCAyYTMwZWQ5MTEyYzYxZDU5YzlhMGRhYzFlOTE2NGIwOTJhODk2NmY5IGxlZ2FjeS10cnVuaworMTMzMzUgNjlkODlmN2Y1MzBjNWM3OWU5NTdmM2Y0ZjU4MWVmNmUyYzhhMmVmMiBsZWdhY3ktdHJ1bmsKKzEzMzM2IDM5MWE5Y2IyYjA3MjlmNzJhMDE1N2JjYTg4OWZiYjI2ZmQ1Y2VjMWQgbGVnYWN5LXRydW5rCisxMzMzNyAwMDM0NGRiZjJhNjA1Mjk0OWVmNTg4OGM3YjQ3YTQ1MDA5MzEzNDZiIGxlZ2FjeS10cnVuaworMTMzMzggNjVkYjVlMjYyOThmMjY2ZDhhYjQ5YWUwMzRlYzcyY2JjYjc4MjFiNyBsZWdhY3ktdHJ1bmsKKzEzMzM5IGFhZTE0YzYxODFiOWQ4OGQ1ZGMzOWRkNWE5MzllNjBkNWIyZjZhMzcgbGVnYWN5LXRydW5rCisxMzM0MCAxMzVjMWVjOTYzNmM2ODZhMjBkMDNlZDI3N2EzNTM4MjRjOTc0MjRhIGxlZ2FjeS10cnVuaworMTMzNDEgNTU4MTMwN2RiMmY3MzdlNmEzOGUyZDVjNzEzNDE0YmUyMTA2ZTkxYiBsZWdhY3ktdHJ1bmsKKzEzMzQyIGU2NTI0MzQ2ZDY2Y2MxODU5YjlkNTk2ZTQwMDkzNTA3NzgxOWZlYWUgbGVnYWN5LXRydW5rCisxMzM0MyBlZmQxNTczYTRiMDNiMjJkYTJhMTA3ZWRmN2YwMTI1MzY0OTNlYzQ1IGxlZ2FjeS10cnVuaworMTMzNDQgMGJmMzAxOTQxZWZkOGM1MzM1N2ZhYzE0YTQ5ZTcxYTRlMmM5MTNhZCBsZWdhY3ktdHJ1bmsKKzEzMzQ1IDhmZGFjNDAyNTAzMjVmODliZTdlOTZkMjNkMjBjZWExYzZiYzZjMjEgbGVnYWN5LXRydW5rCisxMzM0NiA4NGE0ZWNkMmNiOTUzODI0ODZkZGUzZWJhMDQ1NmFlODg0YjhlZWVkIGxlZ2FjeS10cnVuaworMTMzNDcgYWVlNzRlOTc3YWRkMGZmN2EwYWJhNzIyOWQwNTRhZWJhNGNlNTcyNiBsZWdhY3ktdHJ1bmsKKzEzMzQ4IGZhNmJlMWQwYjg2NDVhMzNmZTViNWIzMWZjOTY5ZTAxOTYzNmNjNjEgbGVnYWN5LXRydW5rCisxMzM0OSAzNTJlNTgyNGVkYTY2NjBhNDExNDhmY2VkZjMwNDYyYjljNDY0MmQwIGxlZ2FjeS10cnVuaworMTMzNTAgZTFiODZlZjQ1NTdjNTc1OTJmYWJhOWU5MDVmNzUzN2U2ZDJkNGY0MSBsZWdhY3ktdHJ1bmsKKzEzMzUxIGNkZjdhZTViMzM2N2VlZTZlNGRhMjQ0ZTNkNjcwNTgyZWI5Nzk3OWQgbGVnYWN5LXRydW5rCisxMzM1MiA1ZWY0YjNjYTU1NjQ1NzEyZjU2M2RmYzMyYTRiMjVhNjkzMGFjYTY3IGxlZ2FjeS10cnVuaworMTMzNTMgYjczNzhkZjNkYjU2ZDcwNDMxNjI3YzE3ZDliYWJjYWNiZDkxN2YyYiBsZWdhY3ktdHJ1bmsKKzEzMzU0IGM3YWE5OTY1ODM4M2YyN2ZiMjQyZTU2NWEyNzk4N2MxZTNjMDczNTIgbGVnYWN5LXRydW5rCisxMzM1NSBkNzhjYzI2NzZjNTUxYjY3MTg3NDA0MzJlZjNjMzc3MTNjOWU5NWNhIGxlZ2FjeS10cnVuaworMTMzNTYgNGRhNzZmODM4YTVlNGVkNWMzZTNiMzMxNmEzYjM2YzY5MGQyNzAyMyBsZWdhY3ktdHJ1bmsKKzEzMzU3IGExNDE1ZWNlYTIzZDRhMzIxZDcxZGFkYzY1NjI0MDk1NDFiY2I3MjcgbGVnYWN5LXRydW5rCisxMzM1OCBmY2IyNTMzNWQ2YWVkZjJjMWU1ZWQ5YTllMTZjOWJmZDYwMGIzNzc1IGxlZ2FjeS10cnVuaworMTMzNTkgYjI3YWQ1MDliNDRiMzUwMjU2NjM5YzUyOTgwMGM2NzhmYjM0MTdmZiBsZWdhY3ktdHJ1bmsKKzEzMzYwIGUyZmU2NWU4Nzc2MWI4ODBjNDBiZmM2ZTc2ZDk5NWVjNThiNTBmNWQgbGVnYWN5LXRydW5rCisxMzM2MSBmMmUxMjNhZjJhZGE0NDcxM2E3YzRhNjQ4MDFkZDIyY2JmY2RiYTNiIGxlZ2FjeS10cnVuaworMTMzNjIgMjg4ODdmNDBlMzQ0MmUwYjUxZDQ0OTBhNzEyNTE2NzQ3MzE2NzBkMyBsZWdhY3ktdHJ1bmsKKzEzMzYzIGJlMGFjNWFiZTgzYjdiNmFiNzgxZWUyY2ViZDFjYWU2NjRmMjYzYmUgbGVnYWN5LXRydW5rCisxMzM2NCAxYWE4MGY1YmY5YWM5MWQzYzAxMmJkNmFhYjc0YzkxYzNjYjkwMjk2IGxlZ2FjeS10cnVuaworMTMzNjUgODIwMmY1YWNlMjQ4NDlhZjc1MWYzYjFlOWE5NDA5OTM1ZDdjNzcwZiBsZWdhY3ktdHJ1bmsKKzEzMzY2IGU3NTI1MGU1NTQyNGY0MWQ5NDhiNjYxMzBiNTM0ODYwMjg0NDE3YTkgbGVnYWN5LXRydW5rCisxMzM2NyBjZmU0NzI5MTJiN2Y4YjAyODJlNzRkYThlNGNiMDdhNDlkMjM4NWQwIGxlZ2FjeS10cnVuaworMTMzNjggOWEzYTA0NjhmNTFjN2Y5N2ZiMzQyMmU5ZGMwN2Q3OGY3ZWJkOTQwZSBsZWdhY3ktdHJ1bmsKKzEzMzY5IDRmNWQ0OTQ1NjA1YzY3ZDM0Yzc1OWM3YTllODI1N2JlMzUxM2M2ZjggbGVnYWN5LXRydW5rCisxMzM3MCBmN2I0MWIyNzA1NTQ4MjE4M2RjMmZkYmZiODZmNGZhMWNmM2Y5YWFmIGxlZ2FjeS10cnVuaworMTMzNzEgY2QyYTI1YjdiNDM4NThlNTg1M2ZhYjlkZTRkN2JjZWRlN2MxYjdjZSBsZWdhY3ktdHJ1bmsKKzEzMzcyIDNlZGIzMjk4MjM0Y2QwYjE4ZTJjNDQ3ZTU5ZGRmNmRkOTcyNDZjNzQgbGVnYWN5LXRydW5rCisxMzM3MyAyNTEzOGRiMzVjZTFlZGU3ZDdmMWRmZWRhOGVhMDM5ZGVlMmVmM2UxIGxlZ2FjeS10cnVuaworMTMzNzQgYmJjMmE4Nzg5NGQwODI5MzFmMDdhMjAxNzYyMDdlOGRkZmFlZmUyZCBsZWdhY3ktdHJ1bmsKKzEzMzc1IDdkMTE4MmQwYzQxOTNlYTExOGVlZmIxMWYwNjM2ZjYxZGE2ZmU0NzggbGVnYWN5LXRydW5rCisxMzM3NiBmZmZmNjY1ZjhhN2JmMjllZmY1NTYxNjVhMjM2Yjg1NThhN2U4ZDBhIGxlZ2FjeS10cnVuaworMTMzNzcgNWM1YWUxNjFmMjhhYzA0MDZiOWIzY2VkMTMzODEyN2FhMjBhMTU4NCBsZWdhY3ktdHJ1bmsKKzEzMzc4IDc1NTBhMzVkODBmOWJhZmZjYmFhYTI4YjlhMjk5NTFkYmFmYzAyMzUgbGVnYWN5LXRydW5rCisxMzM3OSBhNTYzNzkyMDAwNzcwZTE2MDliM2NkNzdmYWRjNWU5ZTQ1NGU5MmMwIGxlZ2FjeS10cnVuaworMTMzODAgOTg2OGM4MDc3MzJkNTg3MDhkNjUwMzM2Mzk0NjMyOGQyODM5MGUyYyBsZWdhY3ktdHJ1bmsKKzEzMzgxIDg2MzRlYTJlYzRlMmZkYzJhNzBkNTRkZjE2ZmY3NDgzNWJlNDY0ZGQgbGVnYWN5LXRydW5rCisxMzM4MiAxODIxZTY0ZTA4ZmNlZGE4ZmMyOGUxMGQxMmQ4ZDBhZjhiNDVkYzQzIGxlZ2FjeS10cnVuaworMTMzODMgMTdhZTE3OGEzMDM4OGM0Y2QxZjAzZTZmMDc0MDEzMzY2NDQ2MjUzNiBsZWdhY3ktdHJ1bmsKKzEzMzg0IDI2NjlhYzdjZDc2YTk2Zjg3MTMyMGViZjkyN2VmOWIwMzYxMmE0MGEgbGVnYWN5LXRydW5rCisxMzM4NSBiOWVmNDI0MTY1ZDYyNTNkMmJkNWZkNDYwODM2NGFmNzI5YTI3NDMzIGxlZ2FjeS10cnVuaworMTMzODYgNTAyMGJmYTc0MmVhYTc1MTFjNjA4NTE1ODZkNjE4MDBjZGQ0ZmQzMyBsZWdhY3ktdHJ1bmsKKzEzMzg3IGY4OGQzYTc2MzcyM2Q1YmEwYmU3NTk5Y2RhM2ZmYmNlNjBiNjZlYWEgbGVnYWN5LXRydW5rCisxMzM4OCA4MzhjYjM0YWJiNzkxOWMzNDJmMjQzYTk2MDMyOGIzNjYwZDBhZmRkIGxlZ2FjeS10cnVuaworMTMzODkgMDZkZWY4MDQyZDhlMTZmYTAxMDY1NWEwN2JlYzAxNmE1MzM0MWE1YiBsZWdhY3ktdHJ1bmsKKzEzMzkwIGMyMDlkZDk4Yjg2OTUyNWExZGRmOTg4YjY3ZjMwM2UxOTYxNjhlYWYgbGVnYWN5LXRydW5rCisxMzM5MSBmMDMxOGExYzk4OTJjYjU3MjdmODZkMTI3ZTM5OTJmZjJhNmM5NzJhIGxlZ2FjeS10cnVuaworMTMzOTIgNjJlZDMyZTc5YjVkMjk2MjQ2MzM0MDdkMGRjYTMzOTQyNGVjZGFkYSBsZWdhY3ktdHJ1bmsKKzEzMzkzIDgyMmM1MjgyYzE0NTY5Nzg5NzU1N2U3NTRiZGY5MGIyNWZkNTE5YTggbGVnYWN5LXRydW5rCisxMzM5NCBhZjA3Mzg5Yzg1MTc1ZmJhNTk0ODE1NzAyZmQ2YmYyYjJkZGJiODM0IGxlZ2FjeS10cnVuaworMTMzOTUgYmE2ZDNhZTNhMDIxNDdhMjE2ZmFlODA3MTM3N2Q5YzMwN2JkZDg4MSBsZWdhY3ktdHJ1bmsKKzEzMzk2IGE2MjhjMzcwNTg5N2FjZWJhNmY4NGIxMjAyNzM3YzRlNTM1MmNjMTkgbGVnYWN5LXRydW5rCisxMzM5NyA2MzJiNjcwNWJkOWZhZGQ2MDNkMTQ5MGZhY2I0MDQ4YWUzYzdkYTBiIGxlZ2FjeS10cnVuaworMTMzOTggYjgxMzY1NjZjYWY1YzAwZTA3OTVkOGIzZDVkNTllN2E0MzZiNTU3ZiBsZWdhY3ktdHJ1bmsKKzEzMzk5IDY3ODM4NDJjMTA0MjQ1YzAzNmQzZDliZjExMDgxN2EyMWM0Y2I3MjEgbGVnYWN5LXRydW5rCisxMzQwMCBkMzhkM2I4ZWE0NjNiZmNmMWViMDk0ZGM2NWE4ZTVhMzliNGI2M2Y0IGxlZ2FjeS10cnVuaworMTM0MDEgZTE4M2JjMDA0OWRjZGRjMDAzNjVlNTlhMDgxM2M4YjQ2OTcwMzNmZCBsZWdhY3ktdHJ1bmsKKzEzNDAyIDc0ODY3OTZmYWU1Yjk0NDVmZGJjY2I3OTU5YzZlMWI1YjVmZWQ1NTQgbGVnYWN5LXRydW5rCisxMzQwMyA4MTdkMDUzODM1MGQzMzY0NDcxMDBjM2IxY2M3OTc3YTAwMTZjNDNiIGxlZ2FjeS10cnVuaworMTM0MDQgM2U0MTlhYmM1YmFhZGNmYjEwOTNmYjg4MmJhNTYwNTA2YjAxNjg1YiBsZWdhY3ktdHJ1bmsKKzEzNDA1IDk1ODM3ZTI3MzI1NzU5ZDIzNDI3OGFkMmZlZGM5NzI4ZjdkNDA1NzkgbGVnYWN5LXRydW5rCisxMzQwNiA4NWNmNDlhOWIwMGJjZWU3M2ZhMTc0Nzc1YjQ2MjRiOTY3MTlmYzFmIGxlZ2FjeS10cnVuaworMTM0MDcgYTU5ZTk1ZDJmMTgxMGI0MzY2OTc0MjdlYmM3YmQ1NTNmYTIxZTlkOCBsZWdhY3ktdHJ1bmsKKzEzNDA4IDE3Y2EyZjY0YjZkNjcxN2I3ODhjZWRjYmIyNDQ4NWUwODRiYmM0ZTEgbGVnYWN5LXRydW5rCisxMzQwOSA3ZTU2ZDM5ZDA3NDExNDMyNmM2OWNhODJmYzEwMWFiM2EzY2Q4MWZhIGxlZ2FjeS10cnVuaworMTM0MTAgZjBhMjIxMzQ0NGEwNDk0NWQ1ZDM4ZjhiNWQxYjc4YTJhZmI3ZTk1OSBsZWdhY3ktdHJ1bmsKKzEzNDExIDk1N2MzMzUwNGNjMTI0ZGFmNzFhZmJhZmRmMmVmZGJlOTk5ZDU5OTAgbGVnYWN5LXRydW5rCisxMzQxMiBkMzE3NDMyMGUzY2VjOWJlYWQ1OTkyM2FiMzMwZGIyOTU4MDA1OTc5IGxlZ2FjeS10cnVuaworMTM0MTMgZjRjNmNlNTU5M2I5ZDYwZDhiZGY2MmE2YzQ4YzE1MjliMThjY2E2MSBsZWdhY3ktdHJ1bmsKKzEzNDE0IGMyNDUxNjE0Njg1YWM0ZDhlYjY0ODZkODVlYTU0ZmEzNWFkNmJhMTggbGVnYWN5LXRydW5rCisxMzQxNSAyOWU5NjI3NWE0MmRjYjc5NWQ1NWVlODNjOTU4MDMyMDI3ZGI1MmUwIGxlZ2FjeS10cnVuaworMTM0MTYgOGEzMTA5NzQwYzZhZmYwZTQ1YTVjMDM4NjdjZmFhNWIwNWQ4YTVmMyBsZWdhY3ktdHJ1bmsKKzEzNDE3IGQ4M2E0YWE3MGViNDI4ZDIyZDkzZGNhYjgxNmU4ODQ5MjFmMzQwY2YgbGVnYWN5LXRydW5rCisxMzQxOCBjZmFjODNmNWMwZWZhNDcyYzEzNjc3OGE4NTgzYWYzOThmM2Y5NTg1IGxlZ2FjeS10cnVuaworMTM0MTkgYjFhMWViMzM0OWYzN2FkMWI2MzhiZTM0ZTBlOTJjNTE0ZTc0ZWE5NCBsZWdhY3ktdHJ1bmsKKzEzNDIwIGQxYjRmZDA1N2I0YTYzNGVjNGFhYThlODU1NjY1YzI0ZThkZjhhZWIgbGVnYWN5LXRydW5rCisxMzQyMSAzZmRmMWM3ZDlmOTg4ZjllOTFiMDQ3MTk3NDZmZGJjYjMyNWNjYzJiIGxlZ2FjeS10cnVuaworMTM0MjIgYmE3OTcxNzllMmJhNjM5MGE1ZmIyMWM0ZWZkZDU0NGE4N2U4YzNlMyBsZWdhY3ktdHJ1bmsKKzEzNDIzIGI3NWQwMTE5ZWQ1MWEwN2I4Y2JiNjAzZDIzZmJkMTFiZjc2YjJhYTIgbGVnYWN5LXRydW5rCisxMzQyNCA2YjFjYjg1ODJhMWY5MmJjYzY3NDNjNmFlNGJmOWE0ZDA0ZmMwMGI5IGxlZ2FjeS10cnVuaworMTM0MjUgYThhMWViOTkzNDFjMjFiOGU2MTIyOTViNWQ5Mzg5YjYwNTlmYzIwZiBsZWdhY3ktdHJ1bmsKKzEzNDI2IGJkZDZiMDlhMzcxYzQwZGFkZGE4NmVhOThmYjViYmE5NzBhNGRiZGIgbGVnYWN5LXRydW5rCisxMzQyNyAzZmFhNjM0MzA5MjQ2ZjY0MzVlNzZmOGYzYzRmNmZmZDI0MjJmY2IyIGxlZ2FjeS10cnVuaworMTM0MjggOWM0MDM0ODg3NTU3MjkxMzdhMTY3MzMxYWZkZTJlZTE0Y2FiZDVlMCBsZWdhY3ktdHJ1bmsKKzEzNDI5IDFjNTUyZGNkNDNmOTc1Y2Q4OGM5MWFiYmRiOTRmZDA5Y2EyOGQzMzQgbGVnYWN5LXRydW5rCisxMzQzMCA4MjM0YmIzNmZiOGMzNWY5MDM5ODg0ZjEzZWJlYzZkMDg5NjY1NmRjIGxlZ2FjeS10cnVuaworMTM0MzEgNTI1OTcwM2Y0YjVjMDIwMjI1NTRlNDZjNTU2NzJlYjFlYTUyMmI1OCBsZWdhY3ktdHJ1bmsKKzEzNDMyIGIzNWJhYjQ1NzM1MGI1MGFhNWYxOTY5MTExNDM0ZDcxYWVkZTU2ODIgbGVnYWN5LXRydW5rCisxMzQzMyBmOWMwM2IzZDBmMTQ2ZTkxODE2MmM4NWE0M2FlYWJmZDY4ZTIzYmZkIGxlZ2FjeS10cnVuaworMTM0MzQgZTQxMDQ5YWM4MjhiNDljMDZkYTgzZjVmZWNjN2Q3YWJjMGRiYTk0OCBsZWdhY3ktdHJ1bmsKKzEzNDM1IDVlZDlhMmRkMThkOWU2ZjhhMDVlYzNhZWE1NzkzZmU5YmI0N2E0OTAgbGVnYWN5LXRydW5rCisxMzQzNiA4NGYxY2JlMDA5NDMzNWFlNmU1YWQwNTA4NTQzMzU5YmMyMDA2NDFjIGxlZ2FjeS10cnVuaworMTM0MzcgNDUxYjA4NDljOTc3MjVkYmVjMTA3NDhlOGQwNGYzNTcyYjYxZmNiYSBsZWdhY3ktdHJ1bmsKKzEzNDM4IDE4YTI5MjE5ZjVlMDZmNGRjZTVhMWE2MjFiMGM5ZTg1ZjdkMDQxNTQgbGVnYWN5LXRydW5rCisxMzQzOSA1MGMzYjNjMjE3YTM5ZTQ2YTdhZjU0NzQ0YjRkODZiMmZhZWRjMDEwIGxlZ2FjeS10cnVuaworMTM0NDAgY2M2YWJjOTlkMmRkZjE0MTQxODRjODgwMDkxOWMxNDA5Y2I0YWRkNyBsZWdhY3ktdHJ1bmsKKzEzNDQxIGMwODkwMjBhN2ExZTU3NjVmZjk4YjU4ZGY4ZTQxNTBiOTIwNTdhZWIgbGVnYWN5LXRydW5rCisxMzQ0MiBkY2NiZjVlODI5NGRkOTFmNmZlM2EyM2I0ZDUxYjAwYzlhODA0NzE0IGxlZ2FjeS10cnVuaworMTM0NDMgODQxNjU1M2MzM2RmMTdmZjJiYjc5NTE3NTRiYzUyZjdhODRjZjc3NiBsZWdhY3ktdHJ1bmsKKzEzNDQ0IGU4ZmY0YjEyOThjMjMzZDJmNTVkM2UyOWUzYmY0NzFjNTdjYjlhNWYgbGVnYWN5LXRydW5rCisxMzQ0NSBhZjc2NTM4ZGQwNzlkMjRmMGQ2NzgxYjQxNDBhODFmN2EwNjcyZTIwIGxlZ2FjeS10cnVuaworMTM0NDYgNzEyOGMwZmQyYmNmNTI0ZTc0M2Y0NWMxYjcyNzAyNTA4ZTkzMDcyMiBsZWdhY3ktdHJ1bmsKKzEzNDQ3IDhjYzBjODk4ZjZhNzQ3ODNkMTgzMWU0ODAyY2UzYTRiOWIwNzAyMjYgbGVnYWN5LXRydW5rCisxMzQ0OCBlN2VhZTYzZThiOTA3NzkwNDllNWY4ZTEzYWY3ODg4MDBjNjhkZmRlIGxlZ2FjeS10cnVuaworMTM0NDkgZDk3NjQ1MWI0NjVmMjEyYjgyNGRlNzBjMGQ0OTdlNjEzNTcwYTY4NiBsZWdhY3ktdHJ1bmsKKzEzNDUwIDZlZTY2ZmUxNzlhZDcyZTBiMDUyYmIzOTRiZDVjYjhiZGU3NTYyOGMgbGVnYWN5LXRydW5rCisxMzQ1MSAzNWQ1YjA3MzYyNDIyNjIxYmU4NjQ5NThhZDIxZjk1MzFlN2M0OGRiIGxlZ2FjeS10cnVuaworMTM0NTIgYmY2YTA5ODM5NTFkZGRkOWExYTkzNjljOTQ0MjRhOThlMjJhYjY2MiBsZWdhY3ktdHJ1bmsKKzEzNDUzIDFhYmMyNzg1YjM0NDZjMGJmODhjNjc1Nzk1NGZhNzFjYTMyNGQ0NzAgbGVnYWN5LXRydW5rCisxMzQ1NCAzODQyNTE4Y2Y4MDMwMTJjZTUwZDNmOThhZmNlM2MzZjk2ZjIzMTU1IGxlZ2FjeS10cnVuaworMTM0NTUgYjkyOGY3YjlkZmEyM2QzZmVkNDZjM2MyMjg2MzA2OGIzMDEwNDgwNSBsZWdhY3ktdHJ1bmsKKzEzNDU2IDAzNTMwZWEyMTQ4Yzg1ODQ2NTBhNDhiYmE3ZjAyYzU3ZmJmN2MyYjUgbGVnYWN5LXRydW5rCisxMzQ1NyAwZmMyZTg1N2U4MjI4NTAzODcwMmQzOTRmYjg5OWFiMDhmMTMyMWNmIGxlZ2FjeS10cnVuaworMTM0NTggYjZkM2QxNzE5NWRjYmE4NjU1NTZhMTI5NWUxZjFhZjZmNGI2ZDlhZCBsZWdhY3ktdHJ1bmsKKzEzNDU5IDMxNzExYTA1ODczODIzNjhmMWRkODRiYWVmYzI4ZmNhMTQxYmUwOWMgbGVnYWN5LXRydW5rCisxMzQ2MCBlMDUwZDRjMDEzMjdjZDljNmY1YjEyOTQzMzhlNWM3ZjE2ZWRhMTY1IGxlZ2FjeS10cnVuaworMTM0NjEgNGQ3NmNhYmJmOTllNjU1ODBiMTJjZDg1MDRlNWY1NjQwOTBiODkyYyBsZWdhY3ktdHJ1bmsKKzEzNDYyIDQyOTQwZWQyMmNlYmQ3OGIwNzVlMTJlYWRlYWE3MDgyODM5MTBiMzUgbGVnYWN5LXRydW5rCisxMzQ2MyA2NjY4OWIyZGM4OTU0YjVjNzNhYWIyMzg1MDQwNTFiNDdmMDZmM2E4IGxlZ2FjeS10cnVuaworMTM0NjQgYmRjMTcwM2ZmOTJjZTdmNTI0YmVkMGUyY2ZhYmI4MjQ3MDUwZTYwNiBsZWdhY3ktdHJ1bmsKKzEzNDY1IGM3NzkwMjU0MWIxM2E1N2RjMTA4ODQxNjZlMDkxNDc3NjAwZmViOTggbGVnYWN5LXRydW5rCisxMzQ2NiBiYmIwMzg2OGYyMWI2MjcxMjdlZjdjMTFiOWEyN2ZlMjk3M2Y1YjA0IGxlZ2FjeS10cnVuaworMTM0NjcgYWEzMjc2ZTVkY2NmNWIyMjExMzYzZWFiMTBiN2QzYTYzNTdjMTg1OSBsZWdhY3ktdHJ1bmsKKzEzNDY4IDM2ZmE4MzUyZDAzODgxNjc4MDM0MThhM2RhNzk5MmI2MzY0NmUwMDQgbGVnYWN5LXRydW5rCisxMzQ2OSA0ZGM5ZWVlMjYxNTcxNDU2N2NiMWExZTg3MGRlNjY0YjIzYzU0MGZhIGxlZ2FjeS10cnVuaworMTM0NzAgMmI5YWY5ZDdkYTJkOGE3ZWI0NWFmODE1YzMzN2U0ZGY0Mzc1NTYyNSBsZWdhY3ktdHJ1bmsKKzEzNDcxIGRhMjM2MDQ0Y2Y2YzhhOTgyZmMyODNlODA0YThlNWU1ZGNiZTEyODcgbGVnYWN5LXRydW5rCisxMzQ3MiAzMDlkOGNmODNhMTE3OTgyYTE3MTNjMjBkZWUzOWFjZDBjYTFlMzgzIGxlZ2FjeS10cnVuaworMTM0NzQgNTBlN2ViMjBiYjFkNTFiYTU2OTI2NTM2MWQ0NmQ1OTczZGU3ZTJhOCBzdHJpbmdfbWV0aG9kcworMTM0NzUgMjU5MjM3YjI1YjkzNWY5ZDc4NDM1YzIwOTFmNDY2NmIwYTQwNjJiZiBsZWdhY3ktdHJ1bmsKKzEzNDc2IDcwY2YxMzYwOWFlZDY4YTNlYTlmOTZlZDljODQzODBjNjAzZDQzY2YgbGVnYWN5LXRydW5rCisxMzQ3NyBmYmI0ZWRiNzIwMmNjNWUxZmU2NTNhYjVhYzFkMGVhYTNlMGM1NGM4IHN0cmluZ19tZXRob2RzCisxMzQ3OCA1YmEyZTRjZTU4Y2I0YmFhZDM1MmIyOTU4Yjk0MTFkZmQxOTkwZjBkIGxlZ2FjeS10cnVuaworMTM0NzkgNTQ4MDkyMWFlN2YzZmVlNjlkNjZlNTg0MjA4OWI2YzU5OTIxNTMwNSBzdHJpbmdfbWV0aG9kcworMTM0ODAgOWQ3MWMyYzNhNjc1NmYyNmUzNGY0NmNmYzMyZDE4ODNjZjU2NGZhYiBzdHJpbmdfbWV0aG9kcworMTM0ODEgZTE0MDdkNjMyMGNiYjdjMTAyZjM3ZjJmOTgzNDdlYjA2NjMyYzA5YSBsZWdhY3ktdHJ1bmsKKzEzNDgyIDZmZmM5ZDhkYzViOTg2YTg4MjkxMTk0YmQ2YjcwOGJkMWI2Yzg3NjggbGVnYWN5LXRydW5rCisxMzQ4MyAxN2M0ZGJkMzZlNjc3NjQ0ODQ1YTUxMThhM2UzZWY3NzI1OTg5ZWZkIHN0cmluZ19tZXRob2RzCisxMzQ4NCA3OGNlZjU2NzZjY2Y2MTJlZmE3ZGEwNzc0N2E0ZjM4N2E5NzdiOWQ2IHN0cmluZ19tZXRob2RzCisxMzQ4NSBhZTg1MDgxM2NiN2I0OGNjOTQzZGM2MTQ4NDFlMWUyZjljZGRjZGUzIHN0cmluZ19tZXRob2RzCisxMzQ4NiBmZjBlNTc2ZTc1OGE3YjRlODVmNDU5ZmZhNTNjYWE0YWZkMTk0Yzk2IHN0cmluZ19tZXRob2RzCisxMzQ4NyAxZGNjOTU2ZmNlNjQ5ZjRmNGFlZmZiN2EyZmE0ODc0MDE1NTMwZTczIHN0cmluZ19tZXRob2RzCisxMzQ4OCBlZWQ1ZWI1YjlkNGY1OWNmMDM4NmY3ZjRhZGViY2I5ZjMwNmFiMGU2IHN0cmluZ19tZXRob2RzCisxMzQ4OSBkZGQyMTYwMDNiZDE4NzFkMzY0NWYyNTlhM2M2OTRjYmJkOWM2ZTY5IGxlZ2FjeS10cnVuaworMTM0OTAgY2JiZjI5N2FlYTdhOTM3OTdiOGZkOWFjMWI0Zjk1YjBjMmIzNzAzMSBsZWdhY3ktdHJ1bmsKKzEzNDkxIGIyZDY5Zjc1MTM4MzlhNDUzMjk5ZDVkMTM4NDE5MWNjZTNlM2EwNWYgbGVnYWN5LXRydW5rCisxMzQ5MiBlYzZjOGFkOTgzNDEwNzk0NjNhZjlmNjM4NDAzODE1NGRhOTAwOWNiIHN0cmluZ19tZXRob2RzCisxMzQ5MyA1MTk2OWZkNzNjNGE3ZTdjY2I2NjFhNWNhNTI3ODdhMWNjOTY2NDVlIGxlZ2FjeS10cnVuaworMTM0OTQgMmVjMDRmZjJiOWI3MzJmOTUyOWRiODFlNTk0MzY3YWRjM2ZhZmM4MCBsZWdhY3ktdHJ1bmsKKzEzNDk1IGNmZWQyOTQ5M2VkNjU2MWNiZWFiMTc5NjU5M2U1YzZhMWEwNjYyMzggc3RyaW5nX21ldGhvZHMKKzEzNDk2IDBmMGE2NmMxZGVhY2EyNjg4YWU0ZjQ0ZWU2ODIyMjk2ZjY5OTk3NjQgbGVnYWN5LXRydW5rCisxMzQ5NyAwZjIyOTJmNTdhODMxNzQzNjY5MjBiYTljNTc1NzgwYjBlOTkyNDBkIGxlZ2FjeS10cnVuaworMTM0OTggOTVkNzgyODE1OTAxZDhiYWU1NjU4MjJmZmY3MGZmMWM1YzUwZDVjZiBsZWdhY3ktdHJ1bmsKKzEzNDk5IGIyZmJkOWE1YTFiNTVjMTMyZDcyNmQ3MGVkMjBmMTZhOWJlZGU3NjggbGVnYWN5LXRydW5rCisxMzUwMCBhZTk2YjFhMTI4ZjhjMTY5OGExMjk1MTZjMmJjM2Q3OWJjOTg2MmUxIGxlZ2FjeS10cnVuaworMTM1MDEgZjkwZWQ5NjYzMTZlOGM2OTQyMzk3YWZkOWY2MzAzNjA2MTA4YmIxZSBzdHJpbmdfbWV0aG9kcworMTM1MDIgNGI5NjkyNjViOWQyMWJjY2E4NjJkNDg2ZjVmN2YwZTJjNzVkNTVlZCBzdHJpbmdfbWV0aG9kcworMTM1MDMgNzExMzgwMzcyYmM5MThhMmZmMGQ2OTU1OWFjMDNhZTJkNmZiYjQ4OSBzdHJpbmdfbWV0aG9kcworMTM1MDQgMTdlYzA5MDJlYWZhMDZjZDc0MGNjMzYyMGM3YmQ1YjkxNTYwNzczZiBsZWdhY3ktdHJ1bmsKKzEzNTA1IGJlZjQ2ZWE1ZWY3NWMwNGM0ZGM2NWQzNTYyY2E4OGM4NDJiMzBlZDEgbGVnYWN5LXRydW5rCisxMzUwNiAzOWYyNDJiZjQ2MjI4MzY4NzZhMjZlM2VkZWNiNmYxYmM0NGE5NWI5IGxlZ2FjeS10cnVuaworMTM1MDcgMWRjY2JlZWFmNzZhY2VmNDM2YzEwNDA2ZTk5OGI5N2UxODllYTlhNSBsZWdhY3ktdHJ1bmsKKzEzNTA4IDYzYjUzMGMwMzBjNTRiMDFlNzdmYzUxZDA5ODY3Y2YyYmJkMDI5OTQgbGVnYWN5LXRydW5rCisxMzUwOSBjNzNmNTM3NjJmOWIwZjJmMTEyNTBlNzNmN2MxZGM2NmI4ZGU0Mzc1IGxlZ2FjeS10cnVuaworMTM1MTAgZTM5YTlmMTI5MTYzMjZkNTJlM2Y2MWQyZmUyZGRkYjg4NjA2ZWVhOSBsZWdhY3ktdHJ1bmsKKzEzNTExIDdhMTI3ZjE5OTJkMTk3NWRkZWI5MDRjZDc1ZTE2MDdmODMzMTkyMjIgbGVnYWN5LXRydW5rCisxMzUxMiA2Y2FmYTNkNGUyMjllOGIwZmY1MGI0OTg2NDZjYmIzMGY2MmRkOTlmIGxlZ2FjeS10cnVuaworMTM1MTMgMTM0NjJjYTZkOTQ3NTVlYWJlYjhlYWIxNmQxY2JkZWMxYzc1OTNkNyBsZWdhY3ktdHJ1bmsKKzEzNTE0IDQwNTA5OTVhNjYzOWJiODgyY2U2NzRhNGJlYTIyN2IzYmE1MTdiZGUgc3RyaW5nX21ldGhvZHMKKzEzNTE1IDNjMzUxMjU1ZjE3M2FhOTczMjEzNDQ3NzI1NWRkODBhMjU5NDYwYTYgc3RyaW5nX21ldGhvZHMKKzEzNTE2IDQ2YTU2MTc3MzIyZWIwNmFhNDliMTkxYjFiZTYxNDM4Zjc1MjM3MzcgbGVnYWN5LXRydW5rCisxMzUxNyA4N2QzZjkxZTQ0ZDRkN2M0Y2U1MTI2M2VlYWE5YmNiODgyMDU1NTFiIGxlZ2FjeS10cnVuaworMTM1MTggM2UwNWZjYWFhZWQyMTkyMThlYmE4NjEyN2E5ZGRhMjA2ZDM4N2Q1NyBsZWdhY3ktdHJ1bmsKKzEzNTE5IDcwODYyOGI2YzA0YmYyMmU0ZTcwMThjMmM2MzY3Yzk2YmJiMDFmYjYgbGVnYWN5LXRydW5rCisxMzUyMCAwZDE4NmMxMGE3MGUyNGJkOWNiNDc5NTVlYjI4YjJkZDMwZTY5YzRiIGxlZ2FjeS10cnVuaworMTM1MjEgODRhYjE0ZDg1NzYzNDMwYzNkYzUxYzM3MjNjYmViODE0NDNlNmUwMCBsZWdhY3ktdHJ1bmsKKzEzNTIyIGU2OGU2MDZjMTMwZjUxYWU5MGFiODU3NTlkNWY3NDAzZjRiNGU3ZTQgbGVnYWN5LXRydW5rCisxMzUyMyA2OTYxNWQ1MGY1OGMwMDVkMmRmNTlmMzRjZTc0Y2IxZjRhNjk2OGU0IGxlZ2FjeS10cnVuaworMTM1MjQgOGE0ZmM0ZGE3NjhkOGVjY2VkNmEzODIxNWNkMjQ2ZGY5N2VkNmRjYyBsZWdhY3ktdHJ1bmsKKzEzNTI1IGZjYWM2NDMyYTdkZmIzZjUxOTc4YjVlMWRmN2NmNDI0ZGE3ZWYxNjcgbGVnYWN5LXRydW5rCisxMzUyNiA5MjZjYjVhNWVlMzA5MzM1OTdlMDk4YWE4MmEwOWQxMWM2YjVhN2IyIGxlZ2FjeS10cnVuaworMTM1MjcgZTUyNzIzYWYzY2Q1ZTZmMTBlZDk1ZGVmOGI0ZDk4NGJkNzkzZmExZSBsZWdhY3ktdHJ1bmsKKzEzNTI4IDA4NmIyYmM3NTc4ZjllZjJjNWM1YzAzNjA0M2VjOWI0NjRjNGFiMTQgbGVnYWN5LXRydW5rCisxMzUyOSA4YzExNGVkZTA1Njg2MWRkNWUyNWJhMzExOWJmNGI2YzNmOTdiNDA0IGxlZ2FjeS10cnVuaworMTM1MzAgYzhlZDVhMTQ0ODhkZTZkMzI0ZDE2N2ExNWNiMWRjY2ZjNTAyYjhkNSBsZWdhY3ktdHJ1bmsKKzEzNTMxIDA4NzJkYTNmM2Y1NjEyMTA5ZmMwNjMxZjdlMjBlNjg3NTEyOTdiMTIgbGVnYWN5LXRydW5rCisxMzUzMiBiOWY1NWNjMTBhYjNmMTBhYTRiNDUzNGU5ZDcyMDkwNjVjZTQ3NjkyIGxlZ2FjeS10cnVuaworMTM1MzMgNDgxOGNiOGUxMTEwMWRmNDAwZDdiN2U3N2QzMmMyNjBiMTVhOWQ2NiBsZWdhY3ktdHJ1bmsKKzEzNTM0IDQ5MmE2OTQ4OTAyODZhMmFkYzRhMjg2YjFmMzc2OTA1YjlmMjAxODAgbGVnYWN5LXRydW5rCisxMzUzNSBlOTQ0MjczNGJjNDk3M2Q5MmQ5ZWM0MjIzMjNjZDg3MjBiNDkyODkwIGxlZ2FjeS10cnVuaworMTM1MzYgM2IzYzdiOGFkZTdmZmM4OTc2ZjNiNmFlNTBhODQ0N2JjN2FmYTBmNCBsZWdhY3ktdHJ1bmsKKzEzNTM3IDQwNzdjYTNiMjY1NjMyODk4YmNkY2Y0NzVhOWY3YzQ1NGU5MDM1YTEgbGVnYWN5LXRydW5rCisxMzUzOCAyYTJlOTlhZjM4MjkxNGU2Mjk2YmViYjcwOTYxMTYzNWRlMGZjNzk1IGxlZ2FjeS10cnVuaworMTM1MzkgNmM5MmRiM2E3N2NmMzdhMDNiODNkZDYzM2Q1NWY5MjYwMjA3MDJiOSBsZWdhY3ktdHJ1bmsKKzEzNTQwIDQxMzg1ZDUwYTEwYzc0NjUyNDM3ZDhjZWY0YmE1Zjg5YWM1MjcwM2UgbGVnYWN5LXRydW5rCisxMzU0MSA3NDk3MTFmODg1Y2QzZTU2MGVhZWE4ZjA1ZmMxMzBmZjA2MmFjNGMzIGxlZ2FjeS10cnVuaworMTM1NDIgZjRjNjMxODVjZTExMDg3NDE5NGI0MGMyOTRiYzc0MjQ3YjdiNjIzYSBsZWdhY3ktdHJ1bmsKKzEzNTQzIDMwOGNlMjE4MzlkNjNmYTAxOTk5MzFkZDgyYzgxY2NkZThmZGYwMzkgbGVnYWN5LXRydW5rCisxMzU0NCA2MTI3YjczODU4YmM5MWYzNTMxOTgzZWU0Zjc2ODgxNzNmYmI4ZDQyIGxlZ2FjeS10cnVuaworMTM1NDUgM2FkYzAzNDJkMDhiZDI1ZjY4M2RiMDRhNDI4YjM2ZDc3ODFkZWY4ZSBsZWdhY3ktdHJ1bmsKKzEzNTQ2IDExOWUxMTlmY2Y1YWMwYjM3MDYzYTZhODg3Zjk1MTNlYjdjZWEzNmQgbGVnYWN5LXRydW5rCisxMzU0NyAxMjZhOWNkZjA1NzI5ZTE1ZjQwYzVhZDUxZDMzYzM4MTgzNzI1NzQ2IGxlZ2FjeS10cnVuaworMTM1NDggZTZhYmVkYmM3OWM2OWVlOWU4ZDQ4OTFhODI1YmZlNGQ3ZDBmMzQ5YiBsZWdhY3ktdHJ1bmsKKzEzNTQ5IDI3MWFmMjk3YWEzZWE3OTg1MzRiOGZiNmZlODdiNmUwZmJkZmViZDcgbGVnYWN5LXRydW5rCisxMzU1MCAzMWZkNGVkNzNkMjllNTFlZTQxYmI5Y2Q4NDZhZTUxMzEwYjU4ODg1IGxlZ2FjeS10cnVuaworMTM1NTEgNjQ5ZGFhZDZjZjUxNjdmZDNkYmI3YjVhYTc5MmI3NmQzZDU1OWVhNyBsZWdhY3ktdHJ1bmsKKzEzNTUyIDc3MWE5YTEwMGQ3NWJjOGQ3MDk2ZTAzNzhmOTkzNzMwMGQ0NmMzOTYgbGVnYWN5LXRydW5rCisxMzU1MyAzODE5ZWI3YzgzNGIzNThlNDFhZTAwZmQwMWI2ZDRjN2M3M2UwOTY5IGxlZ2FjeS10cnVuaworMTM1NTQgZjliYTgwMjM5NzZkNjYyMGE5MmE1OTcxMzA1MWNkNmNmOWJjNzUzNyBsZWdhY3ktdHJ1bmsKKzEzNTU1IDNiZTkzNWJlMzc4MWZjZDNkNmYwMzNmMTI4ZjRhZWY4YjY4YTJhOGIgbGVnYWN5LXRydW5rCisxMzU1NiA4YjdmNjViMGRiMThhMzZjOTg0ZDU5NjEzYTA1OTdiM2VhNjQyYTgwIGxlZ2FjeS10cnVuaworMTM1NTcgMzY2ODRjZTBkNDBkNjM2OTBjZTkxYWRmMDdlN2I4NzA4M2U0MzNmOSBsZWdhY3ktdHJ1bmsKKzEzNTU4IGNiMzY2MzIxMTUyY2IyZTY5NzFlYmU0NmYyNzEwY2JjNGM1YmUyZDIgbGVnYWN5LXRydW5rCisxMzU1OSBiNmE0MzhjYzE5NWI5OTdiYWMyNDQ4YTAwY2E1YTYyYzIxMGIyMGNkIGxlZ2FjeS10cnVuaworMTM1NjAgYWQxNWEwMzk0Zjc4MjhmZDFlN2I0NTllNzI2ODQ0YzI1YmQwNjQ0MCBsZWdhY3ktdHJ1bmsKKzEzNTYxIDVhZGJiM2YwNGNiYzJmOTI3ODhkMzA4NjZhODQ0Mzg4NGJhNGMxODIgbGVnYWN5LXRydW5rCisxMzU2MiAxMmNmOTA5NjY4MjIzMDM2MjgxYjNmZWFkMGRjNmI4ZGY3NWUwMzY5IGxlZ2FjeS10cnVuaworMTM1NjMgNWZhOTZkMDUwMzE5ZDg0YmJjYzBhMmFiNGQzYTQ2NjIzODQ0ZmMxNSBsZWdhY3ktdHJ1bmsKKzEzNTY0IDk3ODk2YzA5ZWYxYjMzMWUwOTE0YmMzNzk0MTIyNWJiOTVjYTgwZjggbGVnYWN5LXRydW5rCisxMzU2NSA2MjZjYWVjYTUzNWEyNDNiMGM4MWVkNzQ0NjMxZWRjZTNmMTg0ZjRjIGxlZ2FjeS10cnVuaworMTM1NjYgMjdjNDhkZjFjZWI3OTU5MWZiMmVhZGM4ZmI0Yjk3NjkzNDAxNDU0ZSBsZWdhY3ktdHJ1bmsKKzEzNTY3IGY3OGYxNmZlYTQ1NTdmNGQ0YmE4MDQ3Njg5YzlmNzNkY2M1NzA2MzYgbGVnYWN5LXRydW5rCisxMzU2OCBjYzJlYjAxYTE2ZjQyM2JmYjA0NzIyZDA4MGJiYmE3ZGFlMGY0NzlmIGxlZ2FjeS10cnVuaworMTM1NjkgODE0OThjNGU1NjlkMzQ5OGU0MWRiNGRkYzIzZWU1ZWEwNWQ3YTkyMCBsZWdhY3ktdHJ1bmsKKzEzNTcwIDViYjRmNTBkYTQ3NGE1YjQ1NzIxNGUyYTJkZTRmYmM4OGQ1MzY0MmUgbGVnYWN5LXRydW5rCisxMzU3MSBmZDU0NmNiZGZiNWY4NjVhOTFlZWE0NzgzNzNmNDRiZjFkNDMxNGVmIGxlZ2FjeS10cnVuaworMTM1NzIgYWViMTBjYzIzMDBkNmU2YTVjODQwMTdiZGQyZWEzMjBjOGZhYjIyYSBsZWdhY3ktdHJ1bmsKKzEzNTczIDIyMmFlZTk2ZGM0MjUxMGE4YTc3ZDA3YjlkZDJlYmU5NWE3OGMyMDcgbGVnYWN5LXRydW5rCisxMzU3NCA0ZjUxZTk3YTZlZGY1ZDc4YTA5ZjJmY2YzN2RmY2Q4NTYyMjBjNzMyIGxlZ2FjeS10cnVuaworMTM1NzUgNWE4MmZiNGY3OGU1OTRjZGY4YjhmMDNiZTA3MTNjNTE5N2M4ODJhYiBsZWdhY3ktdHJ1bmsKKzEzNTc2IDI3ZmJiMDhmOGMzOGRjYWU3NDFmZTkxZDZhMjZhZTkzOWRmZDI1NDkgbGVnYWN5LXRydW5rCisxMzU3NyAyNTM5NzBhMmMwNWQ2NjQ1NWM5MWY3YWM0ZWI3OTYzNjRhYjc0NGZiIGxlZ2FjeS10cnVuaworMTM1NzggMjU2Yjg3ODY4OWYzYjFlNGEwODk5OTNkNGQ5ODA0YjhhMTMzNzljNiBsZWdhY3ktdHJ1bmsKKzEzNTc5IGIzYWNkNTY1MjBjZDlmYWY3MjMyMWUzNzMyZTM3ZWUwZWU2MDE4MmUgbGVnYWN5LXRydW5rCisxMzU4MCBiY2MwYmU3Y2I0MDgwMWRiMWEwYWM4ZTBmOGU1M2U0MDc3YWQ5YTVmIGxlZ2FjeS10cnVuaworMTM1ODEgMTIwOThhOGE5NWVjYjhiNTczN2MwOGI0NGE1MmE5ZDA1MTM4M2IzYiBsZWdhY3ktdHJ1bmsKKzEzNTgyIDc5ZWU2ZGM5M2QwZTllM2NiZDlmODVkYjI5OTdkOTFkMWVmNDEwMTggbGVnYWN5LXRydW5rCisxMzU4MyA5NjMxZjk3MjZhNzA1YjQ5MDc4ZjYyOTdkMTc1MzAzNTM4ODRiNDc3IGxlZ2FjeS10cnVuaworMTM1ODQgMDdiMDczNzZjYTcyODhjNDkzMTRlYjVkYzIzY2JlOWRjNTFiMTcwMiBsZWdhY3ktdHJ1bmsKKzEzNTg1IDkwMjMxNmM3MmI0M2Y5NTNlMGQzYzQ5ZmVmOTc5NWQxOGU5NWEwN2IgbGVnYWN5LXRydW5rCisxMzU4NiBlM2RkYjg3NjE2MzcxY2JiNTdiN2M3NDk3ZTk3ZDk3NjA0NzQyMjM1IGxlZ2FjeS10cnVuaworMTM1ODcgNDllOGRlMGI1ZWE3NGE4NTViYjU0NTRiMDdmNGVmNzgxZTRkZTg1NiBsZWdhY3ktdHJ1bmsKKzEzNTg4IDdlZDZmYmE4MjY1Y2I3OWY2MTE3ZWY3Zjk1Y2E5OTgxYjIwMWZiOTUgbGVnYWN5LXRydW5rCisxMzU4OSBmMTExNDhjNWZiZWRjY2YyYjRhYTMyMjdhMGE3NDQ5MjNmYzljZDc4IGxlZ2FjeS10cnVuaworMTM1OTAgZDZjYTkxMDYzY2VjOTNjYmViYzdmODJmNTk2MTNlMzNlMGE2ZDI0NyBsZWdhY3ktdHJ1bmsKKzEzNTkxIGY1MjZkYjlhNmNmODM2ZGYwMWJmODM3ZmVkMmUxNDQyYWQ2MmJmNDcgbGVnYWN5LXRydW5rCisxMzU5MiBkZmI1YWRkNjg0YzNlODEyMTVkMzVmNjk0NmNjMTVjZjgyNjc3YTUzIGxlZ2FjeS10cnVuaworMTM1OTMgNjI4MmFjZTI3OTVlMDZjYmM1YTMwNjI0ZDQ2NTZlODFiYWQ1YmZjMSBsZWdhY3ktdHJ1bmsKKzEzNTk0IGJhZTNmYmUyYjU5MWFmOWRlYTNiNjE0YzgwY2VkZjk5YmVhODY1N2UgbGVnYWN5LXRydW5rCisxMzU5NSAwYjY1ODM1ZTJiMjkwOWQ2NWJlMmJlOWE0MDYyYWQzMzUzNjNlODA0IHN0cmluZ19tZXRob2RzCisxMzU5NiA4ZTRkZDZhMTYxZmZiN2NjNDc4MGUxN2Y3Yzc4YmU2MDMwMjZhZDc5IHN0cmluZ19tZXRob2RzCisxMzU5NyAwZGQ1MGE3MGM0N2UyMmQ2MmY4MTBjNjZmYWVjMmQ5ZGY5NTVhOWYyIGxlZ2FjeS10cnVuaworMTM1OTggMmZkNjVkMGYzZDQxNTA4M2NjMWY3MzBlYjgyZDhiMzI5MzViNjEwNSBsZWdhY3ktdHJ1bmsKKzEzNTk5IDlkZDgxOWQ5OTMyNjM5MjZjMmE0ZjRlYWFmN2ZlNzJiY2M2YWE1MDEgbGVnYWN5LXRydW5rCisxMzYwMCBhODRmOWQzOTk5YWU4NDY1OTRhMTM0M2RmZThiYjcyYTAwMWFmZmE2IGxlZ2FjeS10cnVuaworMTM2MDEgNjYxM2RmZDczOTE3MThjZGM1ZjQxNDNhZjYxM2EwNGExZTEyYTA3MCBsZWdhY3ktdHJ1bmsKKzEzNjAyIDM2ZTI1OGI1Nzc1MDY2OTNjNDEyMTE4ODY2Yzc4NDczMmNmNzExMWMgbGVnYWN5LXRydW5rCisxMzYwMyA0YTFkNmM3YjA5NTAxZjkzYzc4ZTUyYjliZWE0YjlkNmJmYTVhZDk3IGxlZ2FjeS10cnVuaworMTM2MDQgNjE5M2NjMTQ1YjhjN2FkOGUxY2M5N2RlOGQxOTU5MWQwYzlkNzgxYiBsZWdhY3ktdHJ1bmsKKzEzNjA1IGQxYjQ4ZWUxNDYwMWY4YTU0NDY5YjUxNjU1NmE4OWJkNDc1OTA0OWQgbGVnYWN5LXRydW5rCisxMzYwNiA4N2EzOTM1ZTY2YWFjZGNiMWQ0OGYzNTdkODQ2ZGE3NzMwM2Q3ZDFkIGxlZ2FjeS10cnVuaworMTM2MDcgM2U1ZjY5NjRjZDMzMTdiMDJkNGU0NjZlZGExZWZhYjA3OWYxMWUzYyBsZWdhY3ktdHJ1bmsKKzEzNjA4IDc2MDA4ZjhhMGU1ZjZjZGUxNzE1ZmVkMWVkNDY0MjU4NmRiZTk1MzkgbGVnYWN5LXRydW5rCisxMzYwOSBkMDQ2MDlhMzdkYzExNjYzYjE2MjQzYWJiYjVmY2EwNDg4MzgzYTNjIGxlZ2FjeS10cnVuaworMTM2MTAgNWJlOTQwNmJiYjA1Y2ExMTAzNzVjYzg1YWNmNDMwNjQxMGFmYjhmYSBsZWdhY3ktdHJ1bmsKKzEzNjExIGQ0NTFhMjExYzE2YTNkNjdkOGZmY2IxZDk0NzI2NDhjYTA5MTBmYzcgbGVnYWN5LXRydW5rCisxMzYxMiAyNTY3Mzg4NGEzZDBmM2NkMjczODdmOTIxNTVjYmIxYmQxZDM0ZGQ3IGxlZ2FjeS10cnVuaworMTM2MTMgODQ2MTJhNTY4OGZjOTNjMjRlMWQ1ZjBkNDY2NjNmYWQwYTY0NzMyMCBsZWdhY3ktdHJ1bmsKKzEzNjE0IGRjNmJlMGVkMzk4Y2ZkMzc2ODhjNjdhYjRkNWZmN2ZjYjBlYzIyNTMgbGVnYWN5LXRydW5rCisxMzYxNSA0NDYzZGQ3YmIzZTg5NWYzZTA1OWM3YWRkZDllY2MzYTk5ZjBkOGYzIGxlZ2FjeS10cnVuaworMTM2MTYgNGE3YjJiNGQxNjY5YWVmNWYwZGU5Yzc3MTU0ZWE4M2Y3ZDY5ZGYzZCBsZWdhY3ktdHJ1bmsKKzEzNjE3IDQ3ZTAwM2JkMzVlZDA1M2E4OWY1OWYzYjRjZDc0MzdmODhlNjI4YjcgbGVnYWN5LXRydW5rCisxMzYxOCA0YjUzZjRhMGE5OGFjZDFiZmNkZmM2MzAzM2RmNWI3NWUwM2UxNzQ1IGxlZ2FjeS10cnVuaworMTM2MTkgNzAyOWUxOGI0ZjExZTc3YzQ5NTc4YWZhYmZjNGQzZTdhNmMyNTdjZSBsZWdhY3ktdHJ1bmsKKzEzNjIwIDJlMDBiODg5MDM1ZjJmNDY3ZjhhNDBmODQ4NzQxZjE5NTI0NjMzZGQgbGVnYWN5LXRydW5rCisxMzYyMSA3MjhhMjUwMGVhNDJmYjVmYTgzMWJmYzkwYzU1ZTk4ZmJkNDdjNGNiIGxlZ2FjeS10cnVuaworMTM2MjIgMWQ0ZjVmNDlkZTRlY2YzOGYxOTYwOWM4Y2UzZDhmYzgyYWVmMTYyYiBsZWdhY3ktdHJ1bmsKKzEzNjIzIDc2OWM2YjRjNWI4ODdjMzRlNzUzZmY1NjZlODk0NzRiMzkwZTMwNDUgbGVnYWN5LXRydW5rCisxMzYyNCA0Yzc1NTk2ZTkyZjRmOGFkZWZiZTAzY2FlYzUzNzdkOWQ4M2Y3YTY4IGxlZ2FjeS10cnVuaworMTM2MjUgOWMyOTJhZDhhNmQ0NjNjMDM0ZjU0MmZhZTMwN2NlOTk4ZjhkYjUxYSBsZWdhY3ktdHJ1bmsKKzEzNjI2IDcxZWQwYTJjMjc5YTYwNWYxYmRkOThmNjc3YmU1NjczY2U1Y2RhMGEgbGVnYWN5LXRydW5rCisxMzYyNyBmYTJlM2QwNmM3OTAyZTE2YmQ3YTIwZTczYjg1MzhjMDQzNDU0MDAxIGxlZ2FjeS10cnVuaworMTM2MjggODcyYTgyZmQwZWM0MWQ0ODc0YjI1MGY0MDI0MjBmNTA3N2IyOGFkOSBsZWdhY3ktdHJ1bmsKKzEzNjI5IGFhNmM1Zjg2ZGY4N2E0ZTVlYjNjZDZkMTZiNjk5ZWVjYWMxOTU5MDIgbGVnYWN5LXRydW5rCisxMzYzMCBmYmY0MGQ3ZmQ0ZGFjMjY1YzEyMTQzNzgzYTdlZGQ1NWVjZGEyZDNiIGxlZ2FjeS10cnVuaworMTM2MzEgNjdiZDJhYWUyNzMyZWFhNWExYTlkNjYxNzNkNzliZDc0NGYzNDg5NyBsZWdhY3ktdHJ1bmsKKzEzNjMzIDA2OGZiZjRmNTU4YTIzM2M1NDZjNmEzN2EzMTZiODNhMWVkNWU0M2EgbGVnYWN5LXRydW5rCisxMzYzNCA1ZTg0OGMzZTljNWM3MWM0NGU0MzJkMmM0NTU2OTY4YWI2OTUyMDIyIGxlZ2FjeS10cnVuaworMTM2MzUgMTQzNzRiYTM0MWE2N2E4ZjY1NTg1ZWFjMjliY2E3ZTQ2YWNjY2ZlMyBsZWdhY3ktdHJ1bmsKKzEzNjM2IDFjZGU1MjMwYzUwODE5ZTNkMjQ3M2NjMTBkMjY3MTRiYTFiOGM3ZjcgbGVnYWN5LXRydW5rCisxMzYzNyA2YmY2MjAzNzU5NzYzNDlhOTZkZWIxNDY2NTZmODM3MTMxZDQ3YjIzIGxlZ2FjeS10cnVuaworMTM2MzggOTkyODZkYWE5MDBkZDQ4ZTU0MGZiNzkyY2E0NjljNDFhY2M4NzQ3OSBsZWdhY3ktdHJ1bmsKKzEzNjM5IDEyZjIwOGRiNDJiMGU5MmZhYzZhOGY5Mzc2ZjMyNGI1MjBkNmJiZTIgbGVnYWN5LXRydW5rCisxMzY0MCA3OGY1YmYxNzk3NTA0YTllNjY5NTI1ZmIwYjUzZWIyZjVhZWMwNWZhIGxlZ2FjeS10cnVuaworMTM2NDEgYmU4ZWM4MjhjMDcyMzcyOGMyNzE5OGJmNDE3YzMyMjAzMTkzOGNiZSBsZWdhY3ktdHJ1bmsKKzEzNjQyIDAxMGU3YjY5ZDg2YmYwZTBmMWI3Mzg5NGEzZThhMmYyMTFlMzE2ZDQgbGVnYWN5LXRydW5rCisxMzY0MyBkY2MwOTIyOGEzZDI0MjIzYzc5MWExZWQ0OGYwNWQ1YjdmY2M5NzY0IGxlZ2FjeS10cnVuaworMTM2NDQgOTM5ZDkxNGFmNTgxNmZmYzQ2Y2ZmNzcyNTU2OTE5YjY0MjBmNmIzMiBsZWdhY3ktdHJ1bmsKKzEzNjQ1IGRhOWM4M2I1ZmIwNzQ1ZWNhYWM0YmI1MjM0NGI4YjJiY2RkYzQ5NzYgbGVnYWN5LXRydW5rCisxMzY0NiAzYjE5ODBkYjRhZTk5MDQ2Y2VkMmE4MGMzMTMxNTRlY2ZiNzkwY2RmIGxlZ2FjeS10cnVuaworMTM2NDcgMTY0YjRiYzRkZGRkMGY4Mjk1ODY1ZGNjNjcyMWEyYjA2OTkwZjA4OCBsZWdhY3ktdHJ1bmsKKzEzNjQ4IDNhMzllYmUyNzZjOGY0ZjhjODk3NzhmMzMzMDAwY2UwOGE1YTU5NjUgbGVnYWN5LXRydW5rCisxMzY0OSBkNDIzZjU3ODQ0YjI2YjcyYjgxZDJlYWYyNjg1N2Y0MjExZDNmNTNmIGxlZ2FjeS10cnVuaworMTM2NTAgMzA2YjQ5ZDY4MjMzN2NiOTU2ZDA1ZWMyZGYwMDk2YmQ4Y2ZmMWMxYSBsZWdhY3ktdHJ1bmsKKzEzNjUxIDJlYjI4NzlkNTY3ZjRiMzE2OWYyYWRhOWEzYzhmZjAzYTYyMjEzN2UgbGVnYWN5LXRydW5rCisxMzY1MiA3YzIzOTcxMTIyMWEyNDc0NWYzYjFlNjBmOTMxZjRiNjA2MGQ4NDFmIGxlZ2FjeS10cnVuaworMTM2NTMgNDQyZmZlOWE1OGMxM2M5NzAxYzQ3ZWE3MzY2Y2QwOWI0NzA1ZTU2MCBsZWdhY3ktdHJ1bmsKKzEzNjU0IDVlNzZjOTk2NWZlODM5MDFlMGIxNzcyNWZlOGI4MGZiNmQ3YjYyOGIgbGVnYWN5LXRydW5rCisxMzY1NSA5YTIwMDM4ZjBiOTk3ZWYwZGMyMDBjZmYxNTEwYWZkNjg2ZDFlYTU0IGxlZ2FjeS10cnVuaworMTM2NTYgYTRiNzI0MmE0Yjc0Y2JmNDdjOWI2Y2E2MDQ3MmVjMDUxYWY2ZWU4OSBsZWdhY3ktdHJ1bmsKKzEzNjU3IDFjNmZkYzhhZGFiMGE0YzZmZGM1ZGQxNmVjNjNiNzBjMDkwYWExNmQgbGVnYWN5LXRydW5rCisxMzY1OCBmNzI5YmJjNGE5ZjMxMGY5ZjdlYTVkZmY5ODlkNWJiZDNhOGI0YWRjIGxlZ2FjeS10cnVuaworMTM2NTkgMGQ4OGUwZDIxODRmODkzOWFiZDBkN2QwZjA0MDFjYjVmOTNmNTkzOSBsZWdhY3ktdHJ1bmsKKzEzNjYwIDQxYTQ2OTc4YTQ0NGE3MjlkNzcyZjE4NzcxN2QyNjJiZTNmMTFjYzcgbGVnYWN5LXRydW5rCisxMzY2MSAyYzU4NTUyNjQ0N2U5NWViOGY0M2VmOWMzYmJhYzBmYTM0YTY5YTA3IGxlZ2FjeS10cnVuaworMTM2NjIgODA0OWQyZGUxZTc5NGFhYzQ2NjNmZmZjYjI0OGJiODgyNGFlNWM2OSBsZWdhY3ktdHJ1bmsKKzEzNjYzIDg0ZTM0ZDgxMzhhYzkwNDM1MWZmOGQ1NjdhMmUzZjFhOWNiOWUwZjUgbGVnYWN5LXRydW5rCisxMzY2NCBjMmFjODk2OTI2Y2M0YTc5ODRlODUyOGQ5Mzc1N2ExOGYyZTk2YTAyIGxlZ2FjeS10cnVuaworMTM2NjUgMGE1YThmNTEzZDEzNjNhN2E3OTMxYzQ5NjBhNGUwYjY4MzE3N2Q4YyBsZWdhY3ktdHJ1bmsKKzEzNjY2IGI1NmJkYTE5MDBmYzBlZDAwYzc5YmQ2YWJiM2E0YWE5NGQwZDQ4Y2YgbGVnYWN5LXRydW5rCisxMzY2NyAyYzNhZjkwZjNmYWViNDU1NmE1MzE3ZmQyMWMzM2ZiZTdhNWM4YTAxIGxlZ2FjeS10cnVuaworMTM2NjggY2RmYTljZDRlNzJiYjI2YTdkNWM0MjU0NzE4ODQ3NDliMzQ2ZmQzOCBsZWdhY3ktdHJ1bmsKKzEzNjY5IGMwOTU0MTEyOGM1YTQxZGUzNTZmOTQwZDYwMWY2Yjg4NjMxZjY0NmQgbGVnYWN5LXRydW5rCisxMzY3MCBjOTVlMWZkODdhZjBmMDY5NmZiMjc5N2NkMGNjNWEyODhkZjEzYjRlIGxlZ2FjeS10cnVuaworMTM2NzEgMmI3YzQzZDRiNDY5YjBmMjIyMGM5NWE2NmEwZjExYTRiZTY4YTQyZCBsZWdhY3ktdHJ1bmsKKzEzNjcyIDFkYmM1ZTY5NzhmOWRkMmY1ODg5NDJiNDIxYmY4NDBmMDQxNWMwZDEgc3RyaW5nX21ldGhvZHMKKzEzNjczIDQxZmNiNDBlODQxZmQ2YTYzMTNjZWRmMmVjYWFiZDc1NjFiZTY5OWEgbGVnYWN5LXRydW5rCisxMzY3NCBkOTk3ZTI3ZTMzMTJiYzBkYzY2ZjI3MDk5NWQ1ODczMWY4OWYzYzMxIGxlZ2FjeS10cnVuaworMTM2NzUgZjYyZTQ2NWM0ZDAxNGI4ZTM2Yjg1MjQ4ZmE4MTI5ZGUwNjkxOGFlNyBsZWdhY3ktdHJ1bmsKKzEzNjc2IGJiZDAzNWU1YTk3MmNmYTFlYWE0ZWZhYzdmNDQzYzFlMGMzNjhkNWQgbGVnYWN5LXRydW5rCisxMzY3NyBiOGEyOWRlOWVkNTRiMjQzYWJkMzQ0NzA5OTViOWU0NjZiZTBmNzAxIGxlZ2FjeS10cnVuaworMTM2NzggODc4YWMwY2QwZTc2ODE4ZTI1NjNkZWVlM2UyYTkxNjNlMjliODhlZCBsZWdhY3ktdHJ1bmsKKzEzNjc5IGY0ZWZiYTMyMzIwZWM0M2E4MTk0YzIxYjU4YTJjZDg5MzVkNWIxMzkgbGVnYWN5LXRydW5rCisxMzY4MCA4M2YzOWZjODU3NjNiZWY0MjliOWZmMjVhMDhlMWM1OWZjYTczYmIwIGxlZ2FjeS10cnVuaworMTM2ODEgMzZhNjU0NjJjMjY5ZDBjY2QyNWM0MTJlZWJmN2Q2YWUwYzg1ODQwYyBsZWdhY3ktdHJ1bmsKKzEzNjgyIDFhNjhjOTcyZDA4NDFlMzVkNGUzZTEzMDM5MTU0MjE4NzkwNDY3ODMgbGVnYWN5LXRydW5rCisxMzY4MyA2ODUyZmYwMzAzMDg4NGJkZmU3NTlmMmYzNGM0MWEyNGM1Yzk3NzFjIGxlZ2FjeS10cnVuaworMTM2ODQgMmM0ZDQ4ZTMxYmQ1ZTc4YWI3MDkzYzJmYWEzOGU5NTJkMWQzZTg2ZSBsZWdhY3ktdHJ1bmsKKzEzNjg1IDQzY2NiY2Y0Mzg0ZjEyMzExMzIwMmQ5YWE2YTg5ZGNlNmYzNmNiZGIgbGVnYWN5LXRydW5rCisxMzY4NiA3Y2U1YmFlN2Y3NjVhNDZlY2UxNTVkMGU0MTY1M2I5MjEyYmFmNGU2IGxlZ2FjeS10cnVuaworMTM2ODcgMmYxMDI2ZGI4MjI4MGJlZmU3ZjY4YmQzZWE1OTU5MTk5ZWYwY2NmYiBsZWdhY3ktdHJ1bmsKKzEzNjg4IGFlZDE5YWY2MGVhMzI1MmM4ZGYwY2FlZTY1NmU0ZmMyZGNlOWI2M2MgbGVnYWN5LXRydW5rCisxMzY4OSAwYmFmZjEzNWM0YjRlMWIwOGJhMGFlNzhiZDA2NDFiZDNkNGJmOWEwIGxlZ2FjeS10cnVuaworMTM2OTAgZDE1NGFlN2NhMDE0Zjc5MTMwZTQ2MDI5NDZiYWY3MzNhMjlhZjY0OCBsZWdhY3ktdHJ1bmsKKzEzNjkxIDNjOGM1NTc2MTA5YzM1N2YxZjZiNTQ5OTliM2RjODQ1MWZhNzQxZGMgbGVnYWN5LXRydW5rCisxMzY5MiA2ZTZiZGFlODgwOGE1MzE5NDU0YjdlNmRkYmM2ZTNiZjFjNjIyNTc3IGxlZ2FjeS10cnVuaworMTM2OTMgOThlNTljODRlYzMxYTNlYmRiZjg2MjgyNzk2ZTE4NzI2MDZmN2E5ZCBsZWdhY3ktdHJ1bmsKKzEzNjk0IGE0YWJhMjA1MDM4ZWI1YTJhYjk5MjYzZTAyZjIzMDFmODc0MzhmYmQgbGVnYWN5LXRydW5rCisxMzY5NSAzZTBjN2U2OTM5YmQwMmE2NzU1MGNhMTA1MmQ4MDJkYTM0YjRkNGVlIGxlZ2FjeS10cnVuaworMTM2OTYgMWEyN2RkMDZjY2UxNjlkYWRjMjgxZDZhZGM0NDE3MDE4MDMzMTJmYSBsZWdhY3ktdHJ1bmsKKzEzNjk3IDYxN2UxMGZjNWQ4ZDMyOGZhMDA4ZmQxMzdjN2M5NDljMWE4YWUwOWMgbGVnYWN5LXRydW5rCisxMzY5OCA1ZGE1N2VhNWZjNjQxODEzYjVmMjUwNjA1N2ZkMDExN2Q0YjY4OWZlIGxlZ2FjeS10cnVuaworMTM2OTkgMzIwNjUyMjQyZTZiYTA2YzUxNWEzYjY4ZTUwNjkyZmY3MjRlOTdjMiBsZWdhY3ktdHJ1bmsKKzEzNzAwIDA0OTI5YWJjYWQ4NmJjYjUyNzU0NzhlZDBjZGQ1YWM5NjlhNTUwODYgbGVnYWN5LXRydW5rCisxMzcwMSA4ZTc0ZWQxNTRmNjA4N2ZlYzcyZjVlNjM4NGM3Yzc2MGY3MDQ0NzI1IGxlZ2FjeS10cnVuaworMTM3MDIgZjc2NmZiNmY4NTI2NWE0OWI4MzhiN2UzZDY1YTZhMWM2OGE4MTgyNCBsZWdhY3ktdHJ1bmsKKzEzNzAzIDM0ODVhN2U0NjAwYjlmZWRmMThlNjU1ZmJmOGFlOWRlNTQ2NDYxM2QgbGVnYWN5LXRydW5rCisxMzcwNCBmYWI4MWRmNTY2ZDBjZmNlNDY0YmZhODRjOGI1MDRlYjFjNTMwNDUwIGxlZ2FjeS10cnVuaworMTM3MDUgNjRiMTVlOTA5MWE5MmJiNjM1ODk3Y2ZmOTk4NzU3YzM1NTA0YjIyNiBsZWdhY3ktdHJ1bmsKKzEzNzA2IDVmNWZjMTAzMTk1N2FhNWE0MmZlMWI2MjdhNDNjOGUyNzM1NjFkZDIgbGVnYWN5LXRydW5rCisxMzcwNyAyNDVkMmI2MDUwMzZkMTRmMTQ5NDY3YzgwOWI4Y2EzNWExZDJkM2NmIGxlZ2FjeS10cnVuaworMTM3MDggZDZhYjcyY2IxNjI1OGU5YzExMTFhNTU4YmZhNGQ2ZTc1MWQ1ZWFkNiBsZWdhY3ktdHJ1bmsKKzEzNzA5IDgxNzViZmRmYmVhOWU0MGY4MTlmMGY2Y2RlNmE5ZDczMmY2YWVhY2EgbGVnYWN5LXRydW5rCisxMzcxMCA2YzEzMDlkODJjYjExNDFmZmUzMWI2Y2Y0MjEzZWVmODViYTViYWFiIGxlZ2FjeS10cnVuaworMTM3MTEgMzVlMGQwM2YyYjAyZjlmOGM1ZGRmYjMxMGFiYjlhYmNmYzVmYzIwOCBsZWdhY3ktdHJ1bmsKKzEzNzEyIDFlMGIxOTY3YmU3ZjNlNWQ5NGIyOGM0Y2Q0ZjU4MDUxNmEwMzQyMzQgbGVnYWN5LXRydW5rCisxMzcxMyA5MzhiNDZmYTYzOTRlODg4ZTNkYmQ3OGMwOTM4NzI1NjY0Nzk0YTQyIGxlZ2FjeS10cnVuaworMTM3MTQgZGJiODA4M2YwY2U3MWMzOWNjMjI2ZGIyOTYxN2QwY2FjYTY5NDFiMSBsZWdhY3ktdHJ1bmsKKzEzNzE2IDI0YzViYzZiZmNhYWZlOGVlNWI1ZjY2OTRkNjQ3YzFkM2RjNTUwZTggbGVnYWN5LXRydW5rCisxMzcxNyBmNmU2Y2RiYWRiYjUwNGUwYzMyYmUwYTZmNDY1YTY1YzkzOGNmZTMxIGxlZ2FjeS10cnVuaworMTM3MTggMTIzYzM4ZGE2ZjQzODNmODNmZGM2OWMzZDVkM2U2NmY5MDg5NWFhYSBsZWdhY3ktdHJ1bmsKKzEzNzE5IGVjZWU5ZGU3OWIxZWY1NzM0ZjhmMWRjZmNkNjBlMWNhM2FhYmU1ZDUgbGVnYWN5LXRydW5rCisxMzcyMCAzZDY2YTE5NzE5MzY5ODBhNWMwYzk0MTYwODNlM2JkOWQ1OTdkNjNiIGxlZ2FjeS10cnVuaworMTM3MjEgMDFjNTFiMjY4YzA0OTYxZmYyY2E1ZTZiZGZlNDVhYWE5NzI1NmQ3ZCBsZWdhY3ktdHJ1bmsKKzEzNzIyIGM3MjAzMThlM2M0OTIwNzgxN2RmZGIwYzM2OWMxMzk5OTU1MmUxNDYgbGVnYWN5LXRydW5rCisxMzcyMyA4OTk2MWI2ODEzYWMzOTE5YjQ3YWI5MmVhYTU4OGIwMjk5NDIwZjA0IGxlZ2FjeS10cnVuaworMTM3MjQgYzYyNzczNGVhZjkyOWE3OWM2MmEzMzVhOWRhN2Y2YTQxNTBmMTY4ZiBsZWdhY3ktdHJ1bmsKKzEzNzI1IGE4MTk1ZmEzMjlhYzM5YmZjMmEzOTFmYjJkMWJjYTU1NTMxYjRjMWUgbGVnYWN5LXRydW5rCisxMzcyNiAxYzhlNDIyN2Q5ODc5MWJhYTlkODA5OTljZDRjNTgzNWQ2NjU0OWRkIGxlZ2FjeS10cnVuaworMTM3MjcgNGZkZDMzOTE0ZWRhYjQ4MjAyOTY1YTI4YjljZTExNDBhZmI5Mjc1YiBsZWdhY3ktdHJ1bmsKKzEzNzI4IGU4YjI0Y2QxN2RmMjNkODcyZTI2ZTc1NmJmYTM2YTNlYzY3ZDU3MTAgbGVnYWN5LXRydW5rCisxMzcyOSBjNTJmYmM2YmQzOGE5MTcwMTViMzkyZDljOWUwM2E5NGRlNjAwMjE2IGxlZ2FjeS10cnVuaworMTM3MzAgYmNhMmQxNGYzZTM2NTBmNmIxN2Q0MjMzZjhjMWZjZTU3ODk0YzRlMyBsZWdhY3ktdHJ1bmsKKzEzNzMxIGJmNTY1YjE4Y2ZkYzRmYmFkMTBmMDdlZGE4ZjlhMzgyYTFhMjBlYTAgbGVnYWN5LXRydW5rCisxMzczMiA3ZWVlYjBkMmIwYTQwMWIxODcyODI3YjA1YTU2NjBmYjY2NzM3ZTE1IGxlZ2FjeS10cnVuaworMTM3MzMgNzFlMGI0NWQ1NThjMmY2OWU0YjIzNzE3NWZjYmIyYzI5MjQ1ZTZjNyBsZWdhY3ktdHJ1bmsKKzEzNzM0IDkxNTdjNmRhNzYxOTNhMTUzYTQ2YWZkZGY3ZGViNDEwMTc5NTRlOTkgbGVnYWN5LXRydW5rCisxMzczNSBkZThmZmQyZTcxYjVmYWVhZDY3MDIyZjM4MGFmOWFlNjdiYzE2ZGQ2IGxlZ2FjeS10cnVuaworMTM3MzYgOThkNDU3MzgzYTJkM2Y0YjA1ZmM3N2E2YTE3MjRlYzM3ZDc3ZmM4NiBsZWdhY3ktdHJ1bmsKKzEzNzM3IGMzODhmMDBhZmZlN2RjYjNjYWExZmJjZjM2YzM3YjVlMjNiMzk2MzEgbGVnYWN5LXRydW5rCisxMzczOCA1ZmUyNjNmYjY3NGFiMWEwMDY3ZTZjYWMwOTBjNDQwNjY1YWExN2RhIGxlZ2FjeS10cnVuaworMTM3MzkgYThiNWE1YjM5MmZiYzUyYzA5NjgxZTBjYTJjNWEzNTc4NGEzNDM2ZSBsZWdhY3ktdHJ1bmsKKzEzNzQwIGNmN2NkN2IwNGZhNjU5YTVjMjEzYTI4MThlMGQ3NzNmYjJmY2QzNDAgbGVnYWN5LXRydW5rCisxMzc0MSBkNWY0NmY1OTk1ODViYjY4NDVmNzgyZWM3ZTk3NDFlZjdlMTcyY2EzIGxlZ2FjeS10cnVuaworMTM3NDIgZDViMzczNDQwZjk5YTM4MjVlY2I4N2E0ODA1NjAzZTczODU2NDU2MCBsZWdhY3ktdHJ1bmsKKzEzNzQzIGVhZjllZWFiM2JjZmY5MWRjZGRlMTk4OWZmNTE2MWEzYTZjYTE3NjkgbGVnYWN5LXRydW5rCisxMzc0NCA5NjUwMWNjM2E2NjNiNDc4NTMyNTQ3YzAwYjZjZWY1YWQ4N2Y2ZmUzIGxlZ2FjeS10cnVuaworMTM3NDUgYjViZDNmOTc5ZGM5OGMzMWNhYjY1ZTVkMDdkN2JmYTE5NTY1MjhhNyBsZWdhY3ktdHJ1bmsKKzEzNzQ2IDRhYWU1YWZlMWYxNDQ0NDJmNTZlY2NiZDI0MDc3MGM4NTcyMjAyNWMgbGVnYWN5LXRydW5rCisxMzc0NyBmNDA2ZTc4ZWMxMGJjZGY2Y2VmZDljYTI1ZmQ5OWRiMjQ2NGQwNGE0IGxlZ2FjeS10cnVuaworMTM3NDggNDQ1Y2JlOGRiOGY2ZjQ3ZTYxNzYyZWJjYzY3OWMxZGQ2YjYxNzU4NyBsZWdhY3ktdHJ1bmsKKzEzNzQ5IDJkNzMzMWY0ZGZlMzUxYmM5ZmI4ZmFlODRiODFiMWJjMTkxMmQ1M2QgbGVnYWN5LXRydW5rCisxMzc1MCA4YmIyN2Y0ZWJlMTZlNWE5NzRjMDk1MzZlYjkzMmIzZjk4NjE2Y2VjIGxlZ2FjeS10cnVuaworMTM3NTEgMzA4OTQ2MTk2M2M0Yjk1NzYzZTUzMDVjMzA3YTE5YjVlMzA2MzUzZCBsZWdhY3ktdHJ1bmsKKzEzNzUyIGVjZmUzZDhjYjBjMzQ3MTBkNmJkZWNlZTFhNDA2ZmJiMDQzNGI1YzYgbGVnYWN5LXRydW5rCisxMzc1MyAyODU2YWQ1YzY3OWFlNzM5YzY2MzExMjk3NWJhNWJlMzA2NDYwNjQ5IGxlZ2FjeS10cnVuaworMTM3NTQgOWE2NmU3ODA3Yzc3MzQxOWUxNTg2NmI4Zjc2NmUyMTg2ZWY4NGYxMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3NTUgYWE0YzhlMmVmNWI0MjllOTA4NmNlODFmNjdhOGQxNjFhOTNkZjVlMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3NTYgOTA1MjI2NDcxYjRjN2Y5ZmIxOTA5YzI4ZmY4YzMzODkzM2MwMmZhYSBsZWdhY3ktdHJ1bmsKKzEzNzU3IGUwMWYyMzUzOWI2Y2E4YjMyYzUwY2I4MGE3MWE4MWUwZDZkM2IyNjIgbGVnYWN5LXRydW5rCisxMzc1OCBhMGM1MjBjMWQxMmQ0NmI1ZTk0ODM5YTgwMmM5YzhkZmVjMThiMzI1IGxlZ2FjeS10cnVuaworMTM3NTkgZTc3M2QyZjA3NDFkYzU4NzI0OTJlZThlNjU5OTQ4ZTk2ZjEyOGRjNSBsZWdhY3ktdHJ1bmsKKzEzNzYwIGUwZTY3Y2YyZmM2NDQ1MTk4MGI1NDFmMmQyNTcxMzRiNjZkMzgzMGUgbGVnYWN5LXRydW5rCisxMzc2MSAxMGViYjI1YjI0MmQ3YTAwOTRhNTlhNzAyOWE3N2NmOWQyZmM2MjI3IGxlZ2FjeS10cnVuaworMTM3NjIgYjY5ODU5YjY5NzYzOWNlZGY1NjllNTczNTJkZmM1YmUxZGJlZDU1MiBsZWdhY3ktdHJ1bmsKKzEzNzYzIDZkYzRjYzMxOGE1YzhhMTAzM2I5OTgxODM4NjMyY2ZlYWFmODJlNjkgbGVnYWN5LXRydW5rCisxMzc2NCBlNzQ2OTQ0ZTlhNGE2NzZmOWM4MzcyM2IyZjNmN2Q1OGM1M2M2N2IxIGxlZ2FjeS10cnVuaworMTM3NjUgODMzZmQyMzM4YzY5OGRiNDYzNDNmNzZmMGQ3OGIxMGM2N2ExNTljOCBsZWdhY3ktdHJ1bmsKKzEzNzY2IDAyODdmNWIzMjI0Y2M3ODE3YjNkNGVmZjMwNTE4NDRhZmRhNjMxYTUgbGVnYWN5LXRydW5rCisxMzc2NyAwNWUwY2IzNjkxNDYyN2E2OTIyYmIwMzUwMDc5YzA0YmRjM2JiMzI1IGxlZ2FjeS10cnVuaworMTM3NjggN2ZiMmY0NTYyZjc2NTdkYTM0OWI0ZmExZTM0OTU3NzVkMjA1ODBjZCBsZWdhY3ktdHJ1bmsKKzEzNzY5IDc3OWNlNDZlMzQzMGE4YWQ2NWFkOTE2Y2UyYTM0NmRmN2RmZTBmNDUgbGVnYWN5LXRydW5rCisxMzc3MCA1NmVmNGMyZTBkN2VmYmJkOTFjYTU4YzBkNmQzYmZiNDZlMzhkNjhiIGxlZ2FjeS10cnVuaworMTM3NzEgNTc3ZWEyNjFiZGYyNTlhYTMyNDE2NzEwYjAxNzI2YTA5ODg2YjVhNSBsZWdhY3ktdHJ1bmsKKzEzNzcyIDRjYzRiYWEyNGE0MDA2ZTNkZjIxYjQzZjY1NzFkZTM2MzdkZmE4MTEgbGVnYWN5LXRydW5rCisxMzc3MyA1ZjAzMjY4NmEzNzEyZDZjZDgzYzY4OTI2MzQxY2I3M2JiOTRmNjU0IGxlZ2FjeS10cnVuaworMTM3NzQgMDA2MWNhNDg2NWQ3MzRjOGU4OGIxY2FkYTZjZTIzMDljNjVhMjhmZCBsZWdhY3ktdHJ1bmsKKzEzNzc1IDZhYWMzMWNkMjEwMjVkODI0MWQ2NjI1NDBlNzYzMTg4NjdmOTQ4YmMgbGVnYWN5LXRydW5rCisxMzc3NiA0Mzg1YjFiY2JjM2IzZWFiOTFmNDM5YTA2NzBhMjYxNGVmNWM1MmExIGxlZ2FjeS10cnVuaworMTM3NzcgODU0YjgwMTI1M2YwZmZjNmI3ZDcyYzAxZmU5ZDM5ZmQ1ZTRmNTk3MSBsZWdhY3ktdHJ1bmsKKzEzNzc4IGQxM2RhMTk0MThlY2E4ZGVmMjc3YWMxODE2NzM1YTg5OTI1NDJjODAgbGVnYWN5LXRydW5rCisxMzc3OSBjOWMxODg0MjZlNzZjMmU5M2MzM2NjMzAxYTQxNGE1ZTVmNmU4ZjU0IGxlZ2FjeS10cnVuaworMTM3ODAgZTYxYzQ4NmIzNThhNTA0NTQyNTU1MDkzNmQ0MzNiODhiOWQxOGZjOSBsZWdhY3ktdHJ1bmsKKzEzNzgxIGFlZGU3YjJkZDQyZmUwZmUyZDM1ODQ2Y2MxNWRlNDlhYjlkYzhiNDcgbGVnYWN5LXRydW5rCisxMzc4MiBiM2YxYWJkMzAyN2ZkYjlmYzEwYzJjYzVmMjlhYmRmZTIxNzRiMTJmIGxlZ2FjeS10cnVuaworMTM3ODMgMmYwN2JjNTZlOTdlN2FjNzViNGFhMDAyMWZmZTkxZGFlNDNmN2Y2YiBsZWdhY3ktdHJ1bmsKKzEzNzg0IGVjYzgwMThhNDE4YzM0NzU3YWUwNzI1N2E1NWU1ZTE3N2FmYjE5MGIgbGVnYWN5LXRydW5rCisxMzc4NSBjNmJkZjAzMmI3MDU2ZTJhOGRiYTgyZTFmMDg3MmVmZDg2YzJlNzc1IGxlZ2FjeS10cnVuaworMTM3ODYgMGQ3M2NlNmQ2MjI2N2NhZTc0MzNmZWQ2NzQxMzZjMzQ0MmIyMjBkOCBsZWdhY3ktdHJ1bmsKKzEzNzg3IDQyN2MzYjUwMDU4ZWFiMGM5MGE0Njc4MDFkODNiNjY1MGQ5ZDQ3MTggbGVnYWN5LXRydW5rCisxMzc4OCAyNmZiYzgwZmFkZjI1YWRjMGUyOTFlYjc4MmQwMWU4MTkzOTBlNjI2IGxlZ2FjeS10cnVuaworMTM3ODkgMGQ0NGIwZGJkZDk1MWIxOTAwZGY2ZGVlMTU4YjdlYTUwZDZiYmI0NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3OTAgN2FkNGUzOThmM2VhM2RjMjQyMzgyZmVjYTEyNTViNTZlZjQxZmE5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM3OTEgOTI4NmQzZTE0NzRjNTQ2MzU5NjUxMzQxYmU5YjgxNTdiZmFkYTZjYSBsZWdhY3ktdHJ1bmsKKzEzNzkyIDIzNDFiZTc0Yjc1ODJmNzYzOGE3NDFkZmQyODU0YmI3MGEzMmQzN2IgbGVnYWN5LXRydW5rCisxMzc5MyAwYTcwYTJjNWQ5ZTY5OTc4Y2VhNDkyZTYzMDNhOTA2MDljNWRjMjQxIGxlZ2FjeS10cnVuaworMTM3OTQgZWFlZWE5ZTQyMzY5OGEzMjc3MzgzMzkyMzM1Y2YzMGEyY2YyYTk0ZCBsZWdhY3ktdHJ1bmsKKzEzNzk1IDY5NjhmZGJiMWEzZmVjOTNkMzg3MTViNjZiMzdkZjgzMTRmMGEzMzMgbGVnYWN5LXRydW5rCisxMzc5NiA4MTBjMjVkNTA0MWM0YTUzNGIyZjU1Y2QxN2NlODJkZGUwYmVkNDA4IGxlZ2FjeS10cnVuaworMTM3OTcgNDcxNzFmMmQ3ZDU4NWQwMDhiMjgyZTg2YTc3N2FjMmNhZjIyNmIxYyBsZWdhY3ktdHJ1bmsKKzEzNzk4IDMxYmVjYzQzMjUyMzllMGRmNDk0MjA0MTljNjYxYzZkZjA2M2Q5ZjEgbGVnYWN5LXRydW5rCisxMzc5OSA4MzM2MTg4YTNjMTAwNTIwNjQ1Mzk4YmRlMWVlNWVmZTA1Y2Q5NTQ3IGxlZ2FjeS10cnVuaworMTM4MDAgYzBiODZhNDRhMTIwM2E0NTRmMDhmMWM4YjZiNmZmYTVlOWNmNDkxMSBsZWdhY3ktdHJ1bmsKKzEzODAxIDJiMjZlNDhhODVhNmEyNGUwNTNlYmViYThlNmI3ZGViMWZlODBkMmEgbGVnYWN5LXRydW5rCisxMzgwMiAzZmU4ZDEzMzI4YzgxMzI5MzQ3MjU1MTVkYTg1ZTRmZTcyOThhZGEyIGxlZ2FjeS10cnVuaworMTM4MDMgMmUwODc1MzlkYTYwNGRjYjU5NWYzYjM0NDc4NzQyYTA3N2JjM2JmNCBsZWdhY3ktdHJ1bmsKKzEzODA0IDJjYzZhMTJjZDQxMThlMmRmYjc3NGNhNjAzMmU0ODRhNGQ1YWI4YzEgbGVnYWN5LXRydW5rCisxMzgwNSA5MmY3YWY0MmVkOTFjNWFhNzVhZTAzNDg2MTcyNTc4MmEwMGFhZWE0IGxlZ2FjeS10cnVuaworMTM4MDYgMjAxYWMwNjliMGQwYjhhODgzZmRiNDc4NWFiZmU2NDY5NjgxMmQ5ZSBsZWdhY3ktdHJ1bmsKKzEzODA3IGZmY2RiMDcxMTY5NTg0ZmY5N2YxMTk4ZTRkYTUxZjAzM2U0MTkyMDUgbGVnYWN5LXRydW5rCisxMzgwOCBlZmE3NWM2OTg1N2QyYjI4MmZjOGY4YTQ2ODQ3MTU3NDY5YzM1YmQ3IGxlZ2FjeS10cnVuaworMTM4MDkgNjcyZGJiYzM5YmEwODM0Yjk2YzkxYzNhMmI3NjY2MjAyMmJiZTk0NSBsZWdhY3ktdHJ1bmsKKzEzODEwIDQyODg2NWQwMGVlZWY1NTJlMTJjMGUzZTEwM2I2ZGI1MGE5YzU0YzEgbGVnYWN5LXRydW5rCisxMzgxMSAyZTIwYTBmYzJjNWYzYjJiOTg5OTQ4ZTJiOTljNzViN2U5ZjRmZDg1IGxlZ2FjeS10cnVuaworMTM4MTIgM2I5ODFlYWNhZDdiNDM5MzRlOTY3NmE5YTkyYWZlMjhlMzYzZjFmYSBsZWdhY3ktdHJ1bmsKKzEzODEzIDcwY2NjY2E2YmRmMDYxZTM5ZmMzNDVjNDViYWQ1Njg5NjE5ZmI5NjcgbGVnYWN5LXRydW5rCisxMzgxNCBhNDk5ZDIwYTM1Y2EyY2VhZDg3NmQyYTA5ZWIxZmZkMWNhYWIzOTM3IGxlZ2FjeS10cnVuaworMTM4MTUgY2FlNGIwOTI3M2IzMGM3ODZkNWJkMzE0MDg4NzVhM2YwNzkyMzAwYSBsZWdhY3ktdHJ1bmsKKzEzODE2IGFkZjZkMjFjY2Q3ZjFhYTQ0ZDhjNmM5OTllOTNkNmQwMWFiNDI2YTIgbGVnYWN5LXRydW5rCisxMzgxNyBjZGQ5MjhkMjI5M2MyODJlZjBiOWZjZmIyMDU1ZDVmZDA0NDYzMWU5IGxlZ2FjeS10cnVuaworMTM4MTggZDQxMTJkNGM1YmIxODNlNjRhYjc3ZGZlMTBjOTc5YmNkMmNlMzFiMiBsZWdhY3ktdHJ1bmsKKzEzODE5IDk4ZTMwMzkzOWIzOWUyMmVhZTI3YjZmMjE2YmY1ZDhjYzViNjc5MjkgbGVnYWN5LXRydW5rCisxMzgyMCAyMDM1MGVjY2E2ZTRiMTMyODE2ODYyNWRhYjkyMmM1MzgzZGYyZTQ0IGxlZ2FjeS10cnVuaworMTM4MjEgZjY3Y2UxNTI3MTlhYWZlOWNhMWNmYjI4ZTc1MWU4YjhjZTVlY2EyNyBsZWdhY3ktdHJ1bmsKKzEzODIyIDgzN2ZlNzVkNmRjMTllMDM2MDIxYzgwYTI2MTg3MDJhMzgwZjQyMTYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODIzIDUxODllYTZlNGJmNmVlNDIzMTM3MWJjZDI2ZDc1NzRiZDJlYmExMWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODI0IGFkZjg3ZDEzYTBjMWFhZjExM2U5NDUzZmMwYjhlMjI1ZmYyOTQwZTkgbGVnYWN5LXRydW5rCisxMzgyNSBmMmM5MjBkMDNmNDRjZTMxZDM5N2Q4MDdiMGFlYTdjN2FjZDFhMGJlIGxlZ2FjeS10cnVuaworMTM4MjYgY2NkZjVkYzJhY2Y2NTI2NDdiODg0NDQ1NmMzYjgyMzE5MDlkZDM2OSBsZWdhY3ktdHJ1bmsKKzEzODI3IDk2NDE4Njc0NWVhNmE0ZDE4NTY5OGI3MzkxZTQyMzE4YzNiZmUwMmIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODI4IGQ5NzBhZjBjZWNlOTYyMGQyNDcxMWI2ZmMyNDZkM2I1ZGQwODMyZjggbGVnYWN5LXRydW5rCisxMzgyOSAzMzFlZTRhZmU5YmVkODZiZGU5MzEwMWVkNWVkNTVhZTc5Mzk3MDU0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgzMCBiN2FkMTgwOWJlMDQ5ZjAyMzhjMWY3YjhlMmIyNGY2OWJjZDQwZmY1IGxlZ2FjeS10cnVuaworMTM4MzEgNzhmZGI2YzBjMGExNTEyMzI4Mjc0MzczNjMwODljZWRkYzBmZjA0ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MzIgYTlkMjhhMDdhMzI3NmY4OTkzOWYzYjZiNDFmZGYyMDZhNmRmNmM1MCBsZWdhY3ktdHJ1bmsKKzEzODMzIGQzNjk2YmYwOGVlZWE4NjFkODA1OTkzZjdkNWMyZDFhZWFlNTU1YmUgbGVnYWN5LXRydW5rCisxMzgzNCBjNmFhMzJmYjNjZjhmYWYxNjFkMzc1NGZhNDdkNzUyMDY5MzgwNTI0IGxlZ2FjeS10cnVuaworMTM4MzUgMDA5NGJmMThlNjg4ODViMDFjZTViMjIzYTgyMGIyNWM3OTBmZjBjNiBsZWdhY3ktdHJ1bmsKKzEzODM2IDI1NjAyMzZlY2VkYmFkYWJiNzkzYTNjNTJjMzNkZWQ0MTRmNmVmYjkgbGVnYWN5LXRydW5rCisxMzgzNyA0OGYyYjE4YmFkNWQxZmZhMTNkNmM4NGM3OWJkMzJhYmQ5OGI4OThkIGxlZ2FjeS10cnVuaworMTM4MzggNmQ2NDZmN2UxYTFjN2VmNGIxNTZlMWVhMjBkMTFiNjE4ODViYmRhNiBsZWdhY3ktdHJ1bmsKKzEzODM5IDhlYzZkMmM2YzU5ODFlZjI2NWE0ZmQ2ZDBiMGU4MzY5MzIyMzhjZDkgbGVnYWN5LXRydW5rCisxMzg0MCA3ZjE3NWMzMjNiOGU0NmE4YzVkZGU5MTcwYmQ0MGY2NjhkMjczNzg5IGxlZ2FjeS10cnVuaworMTM4NDEgODAyODkwOGE5ODg5OTEyMzY5MmM2NjZkN2ZkNmFhOWY2ZTc5YjBiNCBsZWdhY3ktdHJ1bmsKKzEzODQyIGFkYjViNmRkYzFlNWVmNWM3ZjA0ZDBlYWQ4YWI3ZWU0ODBlNTUzMjYgbGVnYWN5LXRydW5rCisxMzg0MyA0MjRiMzFhZjZkNTEwZTE1NWQ4MTUxNzZmOWZkODk4NmQ0ZWMwMjY5IGxlZ2FjeS10cnVuaworMTM4NDQgNDRjODIyYTRkOTUwMTg2NTY5Mzg5Yzc1ZjNmY2NmYjcyNTljNDNjNyBsZWdhY3ktdHJ1bmsKKzEzODQ1IDE1ODQ5ZmVhYzNmYTAxZGM2MWQwNDUyZDdmNTk4MTcxZGVlZTk2YmUgbGVnYWN5LXRydW5rCisxMzg0NiBkM2M0YzEzZTAxMzhjMjRjZWY0ZDBjNzExZjIwOTI2YWU4ZDY3NDdiIGxlZ2FjeS10cnVuaworMTM4NDcgNzdiMzMyZGMyMDYzNjQ0ZWYxNGE1NDIzYTRkMDRlODU1YmMyZGUxMyBsZWdhY3ktdHJ1bmsKKzEzODQ4IGUzNDRjMWZmY2RhZjUzNmUzMzI4NWRjYjE5NDZhMzdiYzE0YjIxOWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODQ5IDQyMzIwM2FhYmVmYjQ4Y2NkNjZkNjhhN2NjZDVmMTU2NGJlMGE4NGEgbGVnYWN5LXRydW5rCisxMzg1MCA1OGI4ZDIxNmQ3MjE0Y2UzYzJiM2U2OGQyMjhkYjUwZDVlZWZjZWJlIGxlZ2FjeS10cnVuaworMTM4NTEgZTZlNDVhNjBlMWUwMjczYWY4ODBiNzM4MGRjMWZjNzU1MTQ3MDIxMyBsZWdhY3ktdHJ1bmsKKzEzODUyIGI0NDI0MGIyNzNjZmI1MzNkY2QzNDcyM2U2ZTQxMWMxMjdhNGYyMTMgbGVnYWN5LXRydW5rCisxMzg1MyBiMWJiNmQ3YTMzNWY0ZjUyNDRjY2FhY2VhNTg2NWFkNDZiYjhmMThlIGxlZ2FjeS10cnVuaworMTM4NTQgMTU4MTMwNzZjYmVmNmFmNTcxODcxMjA4Y2RlNTIwNGQ3ZmI1ZDEzOCBsZWdhY3ktdHJ1bmsKKzEzODU1IGZkY2I4OWQwMDY5NTRiOGU5Mzk2MDE5MzJlYjg4OTEwNzk0NWU0YzggbGVnYWN5LXRydW5rCisxMzg1NiAwMGQ1NzdlNDRkMzQxZTg2YjIzMGFjMjcwN2MzN2QxMmY4Y2Q1ZDRkIGxlZ2FjeS10cnVuaworMTM4NTcgYTU5NGQxZThjZDFhYTVhODIwNmVjYzEwZmE3ZTc4YzI4MGQ0OGVhMyBsZWdhY3ktdHJ1bmsKKzEzODU4IDgzYTk4NjE4MGY0MWQ2ODdlMDdhNTk0ZmE4NWIxYWVlMjc0ZjlmYmMgbGVnYWN5LXRydW5rCisxMzg1OSA1NTY2NjRjNjM5ZmMyNjRlYTNlYTQ0M2NhZGVlNDM5MjFkYzFmNzI3IGxlZ2FjeS10cnVuaworMTM4NjAgM2M0NDAyOGI5MTlkNGJlZjY3ZWQ0OWNmNjViZGNmYTQ0OTE1ZGU3OCBsZWdhY3ktdHJ1bmsKKzEzODYxIDg5OGMzM2UyMTZiYjM2MDdiMTdlZjYxMTFjMTU2ODQyZWVhOWM1NzggbGVnYWN5LXRydW5rCisxMzg2MiBiNGQyZjU0NjViM2Y4OThmZDY4NWU0YzRlZGU2NTJlYTdiZGI4MzQxIGxlZ2FjeS10cnVuaworMTM4NjMgMDVmNjhkN2Y5MWFjNDIwYzQ0MTI3ZWQxNjg1YWE5OGM2NmM3ZjBkNyBsZWdhY3ktdHJ1bmsKKzEzODY0IDU1YTFlZjllYmQ0Y2RlYzY5ZTVhYTFmZmM0YzZkNDg5NjEyOTFhZjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODY1IDBhZTI0NDIwYzhhOWYyNmZiMDBjZDdjZTcxNzIzNWZiZDkyMTQ0YmMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODY2IGMxYjcyNWIxYTE0NDYyY2IzMTMxMDE0MWRlZGE1MTE1YzBiMDNkMTMgbGVnYWN5LXRydW5rCisxMzg2NyBjNzAyYTEyZDMxOGQ2ODZjMzVkMzYyNzc4ZmYxMGM3Y2NmM2Y3NjU0IGxlZ2FjeS10cnVuaworMTM4NjggZWQxYjQ5ODIyZjcwNTVlMzgyZjk5MzNmNWMzYTYyMTZmYTBlNWVmYiBsZWdhY3ktdHJ1bmsKKzEzODY5IDA4MmY0MmQ1ZWFlMzBlY2QyNWUzZmZhNWQ0YTFiNDU1NjE0YTExZWQgbGVnYWN5LXRydW5rCisxMzg3MCBhMmI5NjNmN2FjOTkwNzA1MTNjNjYyZmNmNTVlNmM4ZGNiN2UzMjA4IGxlZ2FjeS10cnVuaworMTM4NzEgNTk1Y2IyOWE4ODY3ZWUyYWU2NjliZTFjODQ1NTk1MTFjNTFmMTI0MSBsZWdhY3ktdHJ1bmsKKzEzODcyIGFkNzU3YWZmOGQzNzk1YzExZTA0ZDcyYjU0ZWZlZGYyNmZlYzUwYjYgbGVnYWN5LXRydW5rCisxMzg3MyA0ZmRjOWMxZWNhZjZiN2NjZmZhYTY3YjhiMDhmNzBkZjdkMjMxYTc0IGxlZ2FjeS10cnVuaworMTM4NzQgZmFkNTVlZWM1ZGZjZGExM2YyYjg5MzY4NTI1YWI5NmI2ZTU1ZjU4MSBsZWdhY3ktdHJ1bmsKKzEzODc1IGY5ZWYzNjhiOGMyZDNmYWRlN2NkZTU4YjkyMTcwMzU0MTk1NTE0NzEgbGVnYWN5LXRydW5rCisxMzg3NiA0ODc2MjIyODhmOWMyOTk0NTA0MmE2ZWJlM2JlN2RjYjU2NDgyYjVkIGxlZ2FjeS10cnVuaworMTM4NzcgM2QxNTRiZTg3MTYyOWVjNmI2Y2FhN2YxMmM0MjRlYjY3ZjBlNjJjYiBsZWdhY3ktdHJ1bmsKKzEzODc4IDcwYWRjY2Q0NTIzYTQ5MWYyZWVmMjhiMDNmMzI1NmRmM2UyODNlNGIgbGVnYWN5LXRydW5rCisxMzg3OSAzMzQxMDAyMThhNGIxZGQyMDE2N2U1YjhjYWUzYjQyZjEzMTAyOTdjIGxlZ2FjeS10cnVuaworMTM4ODAgNDI5NDFlMmViOWQ4NmE0OGYyM2RjMmFhM2Q3NzMyNzk5NzFlMjI5ZSBsZWdhY3ktdHJ1bmsKKzEzODgxIDZmNzUwN2VmMmIxMTVhNTNiYjljZjQ2YjhmMWE0MzllZTgyODY4M2EgbGVnYWN5LXRydW5rCisxMzg4MiA3YWU1YzQwNTEwNDFlNWEwM2U4NzIwNWZkNmI3NjE2ZGNkMmM0N2MyIGxlZ2FjeS10cnVuaworMTM4ODMgOGI4MTU4MDVmMTBjYjcyYmQ4ZTBkZDk5NWNkMjVlMzExZDMyY2IzMCBsZWdhY3ktdHJ1bmsKKzEzODg0IGQ4M2ZhMWRkN2I3OTgxOTk0ODNhYjdiNDYxYzA1OGMwODZjMzYwNWIgbGVnYWN5LXRydW5rCisxMzg4NSBjYmM0NjI4NGE1YWNiODRjYjUzZmIyMjIwNmE5MzZhM2EyNjllMDAzIGxlZ2FjeS10cnVuaworMTM4ODcgNGM2YzhlZmZjYjQyYTEyYmUyNWM4ZmI3NzA1ZDI4NTIxNTVmYjdmOSBsZWdhY3ktdHJ1bmsKKzEzODg4IDUzYjI5NzRlZDNkMzZmNzI0MjU3NGY3ZGY2Nzg1MGFmZjI0Mzg4MGUgbGVnYWN5LXRydW5rCisxMzg4OSAxMDY2OGU4YTA5NzU2YzE0ZGU3OGJkODllY2Y1ZTc2OWRjYzE2ODljIGxlZ2FjeS10cnVuaworMTM4OTAgODI2ZWY4ZjI4NzgyY2U4ZDI3MjE5NTY5NjcyY2VkZWVkNzQwZWYzNiBsZWdhY3ktdHJ1bmsKKzEzODkxIGNmYzY1MTU5MzdhNjk1NGJkYjgxMmM1YWEzMzQyZWVhMjI1ZmRjNmYgbGVnYWN5LXRydW5rCisxMzg5MiBjNWVkZDg2ZTI2OTgwZDRmOTlmNDU5OGNjMTE4OTAxNWQ4YzMzNGY2IGxlZ2FjeS10cnVuaworMTM4OTMgNjc4YTlhNzljN2U4NWI3MjYyMmU0ZGNhYTg1NDNjZGZiNTFlMmVjYyBsZWdhY3ktdHJ1bmsKKzEzODk0IDAzZDFiOThkMTc4ZGNmZTU1NTBkZDVjYWQ3MGZlYWQ5NjRlOTI4YjQgbGVnYWN5LXRydW5rCisxMzg5NSA5MTVmYWRmMjI5NDExMzlhY2IzYzgxYTQ2NjZiMTViNDA4ODQ4MjhlIGxlZ2FjeS10cnVuaworMTM4OTYgMzcxYjk3NjJkNjNkZTQ1NTE0M2Q5NTkyMjhhYjQyMzc3ZjgyOTI3ZCBsZWdhY3ktdHJ1bmsKKzEzODk3IDVkNTdjNjhiMmIzMjEyNzRiN2MwOWViOTJlYTYxMTJjNDVhYWE5OTIgbGVnYWN5LXRydW5rCisxMzg5OCAwNGYwMjRkODU0MWM4ZDU5Yzc0OWU4ZWYyMjlhZGZhZmM5ODRmYzk1IGxlZ2FjeS10cnVuaworMTM4OTkgZTU1NWJhMDRiOTIyNzZkYzg4NTFhMGVlMWVmNjZiOTU2NTc1YWZkNiBsZWdhY3ktdHJ1bmsKKzEzOTAwIDVmNDZjNzc4NDk3MTUwZTBhZjcwMWVkOWRlMTcwYzlhNWFiNGFiZGYgbGVnYWN5LXRydW5rCisxMzkwMSBiZTYwM2ZjYmEwMDFhYWZlNzQyODNiMjM4YWZkNWM4N2QyZjA5MGYzIGxlZ2FjeS10cnVuaworMTM5MDIgY2E5YmY2OTM1YzUyYTYzZTU2OTQwY2JhZTViYmNiZmY5ZjFkM2U2NiBsZWdhY3ktdHJ1bmsKKzEzOTAzIDRjN2Q2MDQzYjQzYTI4OTQ0NDMzNjQ4NDlhY2E5NzE1YmQ1N2VhNjMgbGVnYWN5LXRydW5rCisxMzkwNCBkZmQyYzdkMzRkNDQzYzY5OTRjNjA1NTQwN2JlODg0MzEwODEzYjNmIGxlZ2FjeS10cnVuaworMTM5MDUgZDM0NTk5NmZjYjY1MjFmYmM5MzRkNDE4YjA0M2JiNGMyMzgyNjhkYSBsZWdhY3ktdHJ1bmsKKzEzOTA2IDI1YzAyMDJlMDFhNjI2MzgxZjFhMTEwNGU3YTE2N2I2NTA3YjE1YWUgbGVnYWN5LXRydW5rCisxMzkwNyA4ZmRhYzE2NTQ0ZTFjN2M2NzhkOWI1YmRlZjY5YmE3ZGMzZmYzZDY2IGxlZ2FjeS10cnVuaworMTM5MDggMDllOGFhZTE2ZTk5ODAzMjk3MTEyZGQxZjg3NDYwOTFjMDVkNGZhYSBsZWdhY3ktdHJ1bmsKKzEzOTA5IDIzZjI3ODY2MGNhOWE5MjUzZDQzOTJjODFlZjQ4ZDgxNjEyMjY5ZDMgbGVnYWN5LXRydW5rCisxMzkxMCA4YjYzYTZmN2E1MjNjNGUxNWU1ZmEzMTc4NjE1YmQ2NDIzYThiYWI1IGxlZ2FjeS10cnVuaworMTM5MTEgYjliYmU4OGQ5NTU0NzdhM2Y0MGI0YThjZjc3ZjU0NWYxZWU4YzlhNSBsZWdhY3ktdHJ1bmsKKzEzOTEyIDI5Y2U5NTZmYTdiNzVlN2FlMTM2MjExNGVhNGQwNzU4NjE3MWI5MzUgbGVnYWN5LXRydW5rCisxMzkxMyA0MTk5MGJjZTAyM2E4MTAzODZjNmU5Njc5ZDA4YjEwMjBkMjA1MmUyIGxlZ2FjeS10cnVuaworMTM5MTQgODYxODQxNWU3YTY2YzcxYmFkMjlmNDJmODFlMjE3OTQ4YjkwMGE4ZiBsZWdhY3ktdHJ1bmsKKzEzOTE1IGQ5MTljZjlmZGQ4OWU3MmIxMWM0ZWY5MzRhMGIwZTE0ZTdlOWZiMDUgbGVnYWN5LXRydW5rCisxMzkxNiA3ZTA1YTdkMGI1MTFkNWRmMDU4YzUyMDMyZmJlYzQ5MGM4M2U3YzI5IGxlZ2FjeS10cnVuaworMTM5MTcgNjYyMTZmMzI0MDNkMWE5MWI0NjI2MDc3YzM2NTZjMDc5MzNlMWJiNyBsZWdhY3ktdHJ1bmsKKzEzOTE4IDA0MGIwNTgxNmIxN2Y5ODExMDkwOGVhZjI3MDdlYzViNmQ4NzFhNzggbGVnYWN5LXRydW5rCisxMzkxOSBhMTBkYjViNjg0M2YyOTBkMmJkY2E4YzcwNjk1YTA1ODI1YzMxZGNmIGxlZ2FjeS10cnVuaworMTM5MjAgMzIyOWIxMzgxMjFlMmE0Y2FiZjQzMzdmNjRmZjU1NTNjOWIwNTNhYiBsZWdhY3ktdHJ1bmsKKzEzOTIxIGRjOWYxZjk2NDY5MGJhNDA1OGMxNjM1MTIwYTZjOWNjM2UwZGFhNjIgbGVnYWN5LXRydW5rCisxMzkyMiAzZmFhMTIxODk1MGVlY2UzM2VhMmRlYzhiMjY2ZDQwMWE3NjdlYWFkIGxlZ2FjeS10cnVuaworMTM5MjMgM2UzYzcxZjRkMmRlZDFlNGYxZmViYWViOTA2NDM4YzAzOTljYTQ2MSBsZWdhY3ktdHJ1bmsKKzEzOTI0IDRhZDE0ZTRkYzdlNTE2MDBjMDllOTQ1Y2Y2NTM4NjBiNGI3NWU1ZDMgbGVnYWN5LXRydW5rCisxMzkyNSAxZWYxODA3Mzc3YmZhOWVjOGFkM2Q2N2IxY2VlNTFjODVhNGVhNWUyIGxlZ2FjeS10cnVuaworMTM5MjYgMzJjMDUzYzc5Y2NiM2MyY2UwMDc0ODA2ZWFhYjUxYzQ4YzYwZTk2ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5MjcgYWNhN2I1ZWFmNWU4MmY4YTBmMDBiNGM5ZjlmNDJjMzk4MDAyYWIwOSBsZWdhY3ktdHJ1bmsKKzEzOTI4IGMyNGMyNDE4NTM1MTZmZjJiZjM5ZDhmMzMwZWY0NjAwOTI4MDhhMjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTI5IGRhZjg4ZThlZGJjMGU1M2RhYmQ0MmJhYjQyN2RhYWVmOTc2MWQ0Y2EgbGVnYWN5LXRydW5rCisxMzkzMCBjMjA4YzRlOWUyYWFjZjhmZDI4MjU0NmM4YTg5YjI3MWM2ZTA5NTEzIGxlZ2FjeS10cnVuaworMTM5MzEgMTQ2NjI4MGU2YmIwYTNiNDFkMzQwZGQ1ZDFjNWZiMDc0ZDViM2E2OSBsZWdhY3ktdHJ1bmsKKzEzOTMyIGM3ZTcyM2NkNjM0OTdjYjkzODM5NDJiYWE0MDI1ZDBhZjI2NjUxYjUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTMzIDAxOWNkMjFjOGM5ZmNiNjU4NDNjN2EzNjcyNzlmNWVjNWQ3ZTljNTEgbGVnYWN5LXRydW5rCisxMzkzNCA2MWEwZjAyMTVhOTc2YmNlZGRjNDUxMDhmZGU1MjYzNjQyNTI2YzNkIGxlZ2FjeS10cnVuaworMTM5MzUgODk1MTAyZWVhNDg1MWE3NzhjMDVhYWVlY2ZlYzQ1NjJlNzc0ODEzMyBsZWdhY3ktdHJ1bmsKKzEzOTM2IDZlYmY2OTM4Yzg4NzIwMTc2MjE4OGI1M2YyODc0NGZmODI2ZDNjYzggbGVnYWN5LXRydW5rCisxMzkzNyA1NDg2ZGNmMTNkNzc0Y2FjZDM0NjMxYmQyN2E4MjZiYzM2NDUwNWE4IGxlZ2FjeS10cnVuaworMTM5MzggYTE0ZDk2MTRkYTAwN2UxYTkzMDZiNDA5NTI4NjI0NTkyMmVkNDAwOCBsZWdhY3ktdHJ1bmsKKzEzOTM5IDBiMmU5OTRlZjE3NWE1OTc3MDM5ZjJjNDQ3NzkwMWRmNWQzNjUwMmYgbGVnYWN5LXRydW5rCisxMzk0MCA0Y2E3YjdiOGE4NDkxNmY1NDIwYTc2NTVhOWJlMGZkM2RjOGRkMzM3IGxlZ2FjeS10cnVuaworMTM5NDEgOGM1ZWUzYzNkMzg5MDFiZGY0YzUzNjMxZWQ4NmJlYmI5ZDU5NWU5NyBsZWdhY3ktdHJ1bmsKKzEzOTQyIGUwZWNmMWFlZmUwNGUyZGViZTFmMGQ0YzkyNjg4MjhjM2EyZWJhN2EgbGVnYWN5LXRydW5rCisxMzk0MyA2NTBlODlkMTU1N2YxNDYwZmYwOTcxNzRmMTA5M2RkYTljMDYxN2JjIGxlZ2FjeS10cnVuaworMTM5NDQgODdjNWQwYjNkZTU5ZWJlMDE5MzA5NTliNWQ5NjM2NDkxYjA2ZmI3ZCBsZWdhY3ktdHJ1bmsKKzEzOTQ1IDc5MWNmNzE3YzBiZTRiZjFiYmE2MWJkNWYzYTg3NTdjMjc5NmE3MjcgbGVnYWN5LXRydW5rCisxMzk0NiA2YzQ1MTcxYzFhMWZlN2JjODIyM2Y4YjliNThhYTA3ZTJmM2NiYjE3IGxlZ2FjeS10cnVuaworMTM5NDcgNDg4MmIyZTUyY2IyNDlhODk1MDY4ZjllZDE2YmE3YWFkZGM4MzFhZCBsZWdhY3ktdHJ1bmsKKzEzOTQ4IDk1ZTk2OThmYzkwOGMyZDNlZDQ0YjlmYTYwOWUwM2I5NTVmMjczZTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTQ5IGMxNjFkMmI4NTIwN2ZhNzhlMDBmOWViM2FmNmMyZWEyODI4NjM3Y2IgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTUwIGE1YTUxM2ZlZTViMWRiM2E2MjE0M2Y1ZWZlMDllMGM0ZDBmZTZjNTggbGVnYWN5LXRydW5rCisxMzk1MSA1M2Y2OWI4Njc2ZjNjMWU1OGYxZWU5Yzg4YmFhZmE0MDBkNzg2ZTU1IGxlZ2FjeS10cnVuaworMTM5NTIgYmYzNjhmMmY3YzAwNmQ1ZTc3M2ZlMzQzNDA5MzYzMmY0YTFjNjE0YyBsZWdhY3ktdHJ1bmsKKzEzOTUzIDUyNWI1YTlhY2ZkNWRkZTUxYzlhYjk1YjdkOGI4MDI0YTU3MGRlY2IgbGVnYWN5LXRydW5rCisxMzk1NCBmNDZjODdiNjYxNTQyMDRhMjY3ZDA4NzZkODIyYTRhNGQyMWFmM2E5IGxlZ2FjeS10cnVuaworMTM5NTYgNTA3NTQ2YTg3ZGNmZDNiYjUwZmY4ODNlMzNkZTk4OTE2MTFkODZjMyBsZWdhY3ktdHJ1bmsKKzEzOTU3IGI1NTExYzAxNzEzMWZlNjI5YTI0ZjA0ODZlMDA4ZjdiMTdhNTQ2N2YgbGVnYWN5LXRydW5rCisxMzk1OCAwNjExNTY0NTFkMzZhZjgyMWY4OTY0OWM4NTA5MTJjODliMjU5YjRhIGxlZ2FjeS10cnVuaworMTM5NTkgMDYwNjY4MmM3ZWJjMzVjNDJmMmUxMWU3NThmODE4MzNiODUzZjFhZSBsZWdhY3ktdHJ1bmsKKzEzOTYwIDI0MTM4ZWMzZjM5NjIxMWU0NjRjMDA4OTI2NjNjMDQxOWFlM2EzNmMgbGVnYWN5LXRydW5rCisxMzk2MSAzZmFiMzcxMWM3ZGM2ODczMzA5NDYxMDJlOTNiZjJiMjAwNmZlZjQ1IGxlZ2FjeS10cnVuaworMTM5NjIgZmJjMmM0ODU4Y2NlOGE1MDE3YTBlMTJlYWYzMmY1NTk0ZTU3MGUyZCBsZWdhY3ktdHJ1bmsKKzEzOTYzIGM4MTU1ZDA1ZDljYTZmYWY4ZTExMmMyNWYyZTIxNGRlZGQ5OWY5ZjUgbGVnYWN5LXRydW5rCisxMzk2NCAyODg3NDA3NjUwODhkMzVkNmE5NGMxZjE5NzUzZGYxZGQzODRkOWVjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2NSA1M2IyZjIxYWQ2N2YwODE2ZGNiNjZiOWIyYTE2YjVmZDc4ZTFjZDY0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2NiAyZjliNjViMzhhZjJkZjA3NTE1MTFmMjE4MWQxZDAxNmIxZTVlMDNiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2NyBjNTgyMWMzYmVmY2FjYmNhOTRjMWZkNTQwNWIwMzgzZGZjZTA2ZGZhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2OCBjNmQwOTliNGViNDJhNDQxOTU2MWExM2JiNjFkZWM3MmE0MWM0NWMzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk2OSAxZTBmYmUzMzc1MTg1NzNjY2VmMzk1YTRiZDA2YTBiYzlkYzIwNThmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk3MCBhNjBmYTc0YWFlYWZkOWE1YTQ4ZDJiYTEwNmM2YTgwMDA3MjA2MzRlIGxlZ2FjeS10cnVuaworMTM5NzEgY2E3NjlkOTg2NTE0YmIyOTAyZmIzNmE5MTE4N2E0N2M4MmVjMjBkOSBsZWdhY3ktdHJ1bmsKKzEzOTcyIDFjZTQxOTg5YTAzZDBhZWViNDI4NGU0ZTAyMWJjNGY0Mjk1ZmIyMjcgbGVnYWN5LXRydW5rCisxMzk3MyA0MWUwMDcxZGI1M2E4MDA4NDM1MjZmZmU1MTE4ODNlMWI1OWViZWVlIGxlZ2FjeS10cnVuaworMTM5NzQgMTBhZDM3MGJjNWJkMWFhNmNjYzM3MmRhMDZhYTRhZjZhZTkxMWYwMCBsZWdhY3ktdHJ1bmsKKzEzOTc1IDdhMTg4YWFiZWYxMTVjNzQwYzVlNDJjNjQyZmRhYTM4OTFlZmQ3ZDAgbGVnYWN5LXRydW5rCisxMzk3NiBhOTg5ZWU4NzI5NjFjMDY4NzEzNmQ1YjhlYmI1ZGUxOGNmM2EzMGNiIGxlZ2FjeS10cnVuaworMTM5NzcgN2ZiOGIwZjEzZGEwYTA5NDczYTljMGYzMzkwMGQwMTUwZWM3M2Y0YSBsZWdhY3ktdHJ1bmsKKzEzOTc4IDMzMzBlYjhkYTIyMjc0Y2UwZGQxMWU3ZTYyMWViMTg3NmEwNTM5OGYgbGVnYWN5LXRydW5rCisxMzk3OSBiYzA4NTY2MGRiYzEzMzgzYmE3YjQ0NDQyZTlkNGZhMDlmZTg5OWEzIGxlZ2FjeS10cnVuaworMTM5ODAgZjMwODY1NDg0NDZlYzViMDc0MmE3M2EzYzNiOGUwN2JhNmIyYWZiOSBsZWdhY3ktdHJ1bmsKKzEzOTgxIDk0MDRhNWI0MTZiNWY3NjlkNzFkODQzYmQ2ZDI5NjlkODgwMmFkZTAgbGVnYWN5LXRydW5rCisxMzk4MiA5ODk5N2FhNDkxNjQyMzY0MjJiYzNlNjI0ZjAxY2IzZTdlNTRlM2M0IGxlZ2FjeS10cnVuaworMTM5ODMgODRkZmY1Y2M3MjE2MjFjMTNlOTVkOTZmYjE5MmJmYWY1NWIzMDRjOSBsZWdhY3ktdHJ1bmsKKzEzOTg0IDRmYjg5MzQ0OGE2Yjk1YTE0MGNiZGYzNTY2ZmNlMjMxZmMxNGMxZGUgbGVnYWN5LXRydW5rCisxMzk4NSBlM2RjNTg0ZTk2MjMwYzRjMzQ1Nzg4NDdlZTEzYTdmNjA3YjdmOGE3IGxlZ2FjeS10cnVuaworMTM5ODYgYTMxNmNmOWY4MWE3NjhmOWQzNzJkYmRlMmJkZDg5MmYwZGVjN2RjOCBsZWdhY3ktdHJ1bmsKKzEzOTg3IDhlZGI4MWZhMGE1ZjI2ZDg2NTBjM2ZjNTI4MzE3MDQ1ODNmNDdjYmIgbGVnYWN5LXRydW5rCisxMzk4OCAwOWM2M2Q5MTNhZTA1YWY0MWI4OWJiNTI3M2U2ZDViMzk3YzNkZjYyIGxlZ2FjeS10cnVuaworMTM5ODkgM2Q2Yjk3YTU4ZTljYTQwYzRmOGYzYTg5ZWVmNjNmODVhNDQ0YjlkNCBsZWdhY3ktdHJ1bmsKKzEzOTkwIDA2NjcwMjQxYTdiMWRhMjI3ZWU2ZjI1YThiYzgxNjJhYjgyNmMxYmUgbGVnYWN5LXRydW5rCisxMzk5MSBlYjg0NmI0ZDAzODU2NDg4ZTRhMWMwMWNiMzRhYTNhNDUxZjQwOWU5IGxlZ2FjeS10cnVuaworMTM5OTIgMzJhNDgwZDA4MjNjZmExYzQzZWEwOTI3YmUyOTE4OWFhYjA2MjczMyBsZWdhY3ktdHJ1bmsKKzEzOTkzIGNjOTIyYTlhNDhjMDIwYjA1ZjFlZTU3ZDQ3ZjhiMzY1ZTNjZmQ3ZmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTk0IGJlMjVhYWNhMTFmNDU2ZjRjMTEwZDM4NzAyZGI5MGZmYjAwYzg0ZDkgbGVnYWN5LXRydW5rCisxMzk5NSAzMTZiZTA4YzllY2RhMWQ5ZmQyZjdlMjkzYjIxNmViNTg4MGU5YTYzIGxlZ2FjeS10cnVuaworMTM5OTYgNWYxOGU3ODUzZDkyNDNlMmMyZjM1NTI2MmVjMTMzNzM2N2U0ZTJmYyBsZWdhY3ktdHJ1bmsKKzEzOTk3IDFkYzM5MzZlODRkYjI4MTYxYTYwNzM4ZmRjNGNhNWQ4YjFlZjQxZTMgbGVnYWN5LXRydW5rCisxMzk5OCAwMTNkZDM4YTUwMzFkMGI5ODM3MDQ3MTBkNWFkZjUyMzBmOTE2N2Q4IGxlZ2FjeS10cnVuaworMTM5OTkgMGJjMmJhMTc1MjMwNTg5MTg0NmYwZmRmYzZhZTY2NDZjNzk0OGI2YyBsZWdhY3ktdHJ1bmsKKzE0MDAwIDkwZjQ4MzBlMjEyMmYyZGFhMGMxZjgxNzI1NmExODE2NTUwZDRmMmYgbGVnYWN5LXRydW5rCisxNDAwMSBmMDI5ZDQ3ZGQyOTY0YTZjNDk2OTgyZGZiZTM2YTBkNDhmZWRmZDNhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwMiA1YjgwMjQzOGQ4ZmM4ZDIzNjAxZjUyZGExMmU1MzI3MTNkZTVjNDI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwMyAzYTUwNmFiMWMxMzg5ZDBiZTdmOWQ3ODY4YmJmNGZiNzUzY2YwMzZhIGxlZ2FjeS10cnVuaworMTQwMDQgYWFiZmEwZDcyMTNjM2VhOGM4MTdhMTdjODM0ZDZmMjI3MmYwOTkzZSBsZWdhY3ktdHJ1bmsKKzE0MDA1IDIzOWNhNDc4OGJlYzBiZmFjYmMwN2I3NGJmY2VlNTg5MWEyNjNmYTEgbGVnYWN5LXRydW5rCisxNDAwNiA4YTY4NzFlOTVkODBiMGVhNTE4NGNmNzExZmIwZDJlNmZkZDUyNzMyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwNyBjYzE4YjI0ZGVlM2RiNzlmOTc3YWIyMmVjNThmMzkxOGQ1ZmEyMGRjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAwOCAyZDc5YjQ5MWE1MjljNTQ5YTY0NDg1MmVlNWFhZGMzMDg1NTgzMDM1IGxlZ2FjeS10cnVuaworMTQwMDkgZTBmZTRjN2E5ZWZmMzNkZWJmMDExNGNkN2IzZTY3MDRlNjU3ZTNiYiBsZWdhY3ktdHJ1bmsKKzE0MDEwIDBhM2JiNDAzYTQzMDVhMWQwOTUzMjcxNDkzOGI4YTY5NDJjZWI5OTAgbGVnYWN5LXRydW5rCisxNDAxMSAzOGM3NDQ0ZjYzM2FiODAyZmE1MDQ3MmQ4MWMxOWEzMjIyM2RmMTYxIGxlZ2FjeS10cnVuaworMTQwMTIgZTEyYmU4ZjUxODhmZDc2MjUzNTQ0NmM3Mzk4MGMyYmRlNGE3NDM5NCBsZWdhY3ktdHJ1bmsKKzE0MDEzIGEwNWEwNTYwMjkwMjhhODA1ODNkNmFmZWNmMjQ4M2ViM2JiMjE1MjEgbGVnYWN5LXRydW5rCisxNDAxNCBlNzRlZjJiNTA1NTU2ZWQzZGVlOGFlMDExOTA0OTllM2IyZmJiYzQ1IGxlZ2FjeS10cnVuaworMTQwMTUgN2U0MjllNDY5NjhhMjQ2MWExZDNlOWQwYjRkYjQxNjg3OGY5NDYxNyBsZWdhY3ktdHJ1bmsKKzE0MDE2IDQyNjk4ZjM0NWJkMzA0MGM0MjU2OWYyMjQ5ODRhOGNmNWE3MGUyYWYgbGVnYWN5LXRydW5rCisxNDAxNyBlZjAzZjE2YWU1ZWIyNzUzNDgzYzA2ZTI0YWU3NzhmNTUyNzk0NmRiIGxlZ2FjeS10cnVuaworMTQwMTggNmM1ZTEyYzVhNjE2NGQyZDFhOGI0NTE0NmZjYTY3ZTExNmE2ODY2NiBsZWdhY3ktdHJ1bmsKKzE0MDE5IDEyZjQ2MmZkMjRmNzUzZWUyNTJhZTZhMjdmYTA2MWM3NWE3ZjUxZDggbGVnYWN5LXRydW5rCisxNDAyMCBkMGY0YTc5Yjk4NWQ0ZGZkYmJlYTVjNjAxNjEyNzc3NTI2NzlmNDc0IGxlZ2FjeS10cnVuaworMTQwMjEgMjQ1OWYxMTc2MWYwOTU3ZDg4ZThjYzBlMGM3YWU1NjllNDAwZjFlYyBsZWdhY3ktdHJ1bmsKKzE0MDIyIDk1YTk4MzNiMDAwZTk3ZGZlMmFkYzEyMWZmYTI4MGYzNDdjMzA4ODYgbGVnYWN5LXRydW5rCisxNDAyMyAxN2UxMjMwNTk3M2VhYjBhN2I2NWVjMTc5MGM1NDg5ZTBjZTI3MDQwIGxlZ2FjeS10cnVuaworMTQwMjQgYWFhZWU3YjIzMzgwMjE1Yzg2Yjk1MGMxMWU0YTVhMDQ0MWM1Y2I5YSBsZWdhY3ktdHJ1bmsKKzE0MDI1IDY5ODBkMDZlMzYwNzUyODNmODUwNDQ4ODg5MTUyNjJjOWRhNTBiZDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDI2IDY3NTdlODBjNzQ3ODMyNjlhMjJhMDU4NzIxYWM5ZjZmOTBjZmJkYTQgbGVnYWN5LXRydW5rCisxNDAyNyAwNzdmZjZlZmNhMzVlODQ2MTI5NTFhNzE1NGY2MjRhNGE1ZDRiNTk5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyOCBhMTcwYjdmMDRjNjQ3YTFjNGQxNWZlYzA1MTM5ODBkNTAyMTNlM2IwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyOSBhYjJhNmY5MTBmNjUzMTIwOTYyZmVhMmExMTFlZWExZTgxZmRhNzk1IGxlZ2FjeS10cnVuaworMTQwMzAgYTI2NzNhOGJkY2EyODI0MjVhOWY0Nzk5ZGRjZGQwZTQxNTdjOGI0MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMzEgMTQ4ZmQ0NzViMzkzZGM3MmJiODI4NzYxZGM2NTFmZWRkZGVmODdiZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMzIgYjRkMDdiZWFjMDliZWVkNTczYWUzYjM1OWMxMDBjNzlkY2IyODNhZCBsZWdhY3ktdHJ1bmsKKzE0MDMzIDE4NTUxMzFhNGRjZDQ3YTA0MGZiYWM3MjUxNzJmOGRkMjhkZTZiMjQgbGVnYWN5LXRydW5rCisxNDAzNCBjMDUzNjNjZjFiNzNiMGYyNWZjNzE2NDI2MjYwZDk5OWEyNmU1Y2Q3IGxlZ2FjeS10cnVuaworMTQwMzUgOTZmM2ViYWNhNmFlNTgwZjExMmUyYTcwMWJhZTQ2YzY4NzVmNzNiNSBsZWdhY3ktdHJ1bmsKKzE0MDM2IDRmMjc2ODkzMzMxM2FkNDExNGM2MDY2NDNmNmYyYWM0M2UzZDU5N2EgbGVnYWN5LXRydW5rCisxNDAzNyAwOWQzNTE4ODJjNTEwZjk2Zjk2YWJkZWQwNDFhYzYwOWE1NDE5MjZkIGxlZ2FjeS10cnVuaworMTQwMzggYWYxMWFkYzNjYmQ3MTdjNmVmZWE4ZjNkNzU3MGRiYzZkMzMwM2FmOSBsZWdhY3ktdHJ1bmsKKzE0MDM5IDhiNDZlZTMyNWRjMDNlNjI4Y2FmNzcxMmJmMzA1MDZiZGEzODJmYmMgbGVnYWN5LXRydW5rCisxNDA0MCBjOWNkNGJiZWQ4ZTI4M2UyNjU3MTFkOThlNjFjYjc0MjMyZDY5ZWEwIGxlZ2FjeS10cnVuaworMTQwNDEgZjIxZjE5ODg2ZWUzOGY1ZjhjY2FiYWE4YTI1MDc4MzViNjY0MzM2MSBsZWdhY3ktdHJ1bmsKKzE0MDQyIDVjNWEzYTVjYzc5ZmNkZTYyZDFjNDhmZDBhZWYzYzQ1Y2U3MDE4NGEgbGVnYWN5LXRydW5rCisxNDA0MyBlMjQwODc0NGRjN2YzOWU3NjlmYjY5MjYxNmJjMzc3MzhhZWY2MGFkIGxlZ2FjeS10cnVuaworMTQwNDQgYmFiNDZhY2EyYmVjZTY2MDM0YjgxZTRkZGRjNGVkMjI2NjdhZjE2NiBsZWdhY3ktdHJ1bmsKKzE0MDQ1IGE5N2U2MjVlZDVkMDRkMDVkMWUwZjZkOGM5NjM0Njk1ZGIyNzhmYTEgbGVnYWN5LXRydW5rCisxNDA0NiA3ZGM5MjcyMDRkNjU4MmUxMmUzOTc2OWQyZGQ1MDhlNDJhNzgxM2EwIGxlZ2FjeS10cnVuaworMTQwNDcgMDY4MGU2N2EwZDQ5NTczN2QyMTMyYzA3ZGRmOTRkYjg3ZjY4OGViZCBsZWdhY3ktdHJ1bmsKKzE0MDQ4IDZiOGY3NDZiYmQ1YWEwMmEyM2IwY2RjM2JjNWEwNTY3MDliZTZjMzggbGVnYWN5LXRydW5rCisxNDA0OSAzNGI2YTkyZmEwODg0MmZkYzc3MGFiMjBjMGZjZjE4M2I4NzBlNTRlIGxlZ2FjeS10cnVuaworMTQwNTAgOWNkZjNmYWRkYTkyNzZjNjJhNTE0YmQ1YTU1ODczMzM1ZDQ0NzNmZCBsZWdhY3ktdHJ1bmsKKzE0MDUxIDU4NTEzZWJhNTY2NDMwMDY1NDMwMTA4YmIzNDJiZGIwZmM0MmFlMWIgbGVnYWN5LXRydW5rCisxNDA1MiBiZGUwNmQ5ZDRjYjRmMTYyZmE4MWY2ZTExNzMyYTA1ODEyZGM2NjA0IGxlZ2FjeS10cnVuaworMTQwNTMgYmRhZTYxYWViYTU1ZTg3MzhjZTNmMzM5NjU3ZmQ4MTY3NzJhNjFhZCBsZWdhY3ktdHJ1bmsKKzE0MDU0IDcwMzRiNzVhYWQwM2I3MTQ2ZmY1MTVlNjY4NzVhMjM5ZmVmZjY0MTkgbGVnYWN5LXRydW5rCisxNDA1NSAzYjIwZTUwZjJkODNhMzE3M2QzYTJmZWRmNWRiZWUwODdjZDM1N2U4IGxlZ2FjeS10cnVuaworMTQwNTYgZDAyM2QxYzlhYzQ5MTQ2ZjExODc1YmE5NTVkZWZiMTlmNmRhNmFlMSBsZWdhY3ktdHJ1bmsKKzE0MDU3IGNlYjA2ZGUyM2ZhYTkyZTFlNWExZDgxZjIyOTI2ZWI4NzU4ZmFiZGYgbGVnYWN5LXRydW5rCisxNDA1OCA2MTJiODIzMGM2ZTdmYzY5NzAxZjQxYzg5NjI1NjQwZjIwYzM2Yjk3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA1OSAwMmFlMmU1NTVlZjlkMjZlZmZmZDQ3NjY3MDc4MGMyYzExYzY4ZjM3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2MCA1OTExNGJlMjFhNzVmODk3Y2Q0YmQ4N2E5YThhNzE0MDdmYmFhZGQ5IGxlZ2FjeS10cnVuaworMTQwNjEgZGZlMzcxOWQ3OGU5ZGM2ZWVhY2JlMzY0YzQwZGU2YmFmNzQ0NGRiMSBsZWdhY3ktdHJ1bmsKKzE0MDYyIDMzZjdiMTJjNzc2Y2ZiNmQ5NGYzZGZjNWExOTJjOGYwMTk0NGM2ZTkgbGVnYWN5LXRydW5rCisxNDA2MyBjZGU4ODM3YzgyNTlhZDA5ZDI2ZmZjNDZhMWU1OTU1NTdmNTZjZjQzIGxlZ2FjeS10cnVuaworMTQwNjQgOTIzYjQzZGIzODE0NjJiMmY3NDNiYmU4OGIwNGEwZmQ1YTdmZDE2ZiBsZWdhY3ktdHJ1bmsKKzE0MDY1IDE2YjExYWNkM2U4YzNkNThkM2Y4Y2Q4YzFlM2Y4MTJjYWI0NjViMWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDY2IDc1NjM1MTcwN2NhY2M1YmNkMGI5ZTAxZGQwYzk3MGZmNjRmNjM2N2EgbGVnYWN5LXRydW5rCisxNDA2NyBkNzE5OWI5ZjkwOTEyYWEzNzU0MjA4ZTQwN2U1OGI5ZjI2MDFiODdhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2OCA0YzUwMzBkNDJjNmZmZWNkMzI3ZTkzYmE2YmU0ZTUxOTdiMjFhZGE1IGxlZ2FjeS10cnVuaworMTQwNjkgYjA0YmYyNzc0ZDA1ZWRjNzRlNTE5YjM1Yjc1MDg5MDYzNTk5NzgyZSBsZWdhY3ktdHJ1bmsKKzE0MDcwIDdlZmVjYzVhMzk0YzY5YTdmZDMwMDY0ZDQyNzZmYTVhZTU0YzJlYTkgbGVnYWN5LXRydW5rCisxNDA3MSA3ZTVmNTFkYzFiNGI5YTE0OTU3MDM0NjM0OTM1MWQxNjk3ODIxMjgzIGxlZ2FjeS10cnVuaworMTQwNzIgOTYzNmE1MDJmNzkxN2QxZDBkMjJjN2QzMDVlYzliNzRjNjgzZGY1NSBsZWdhY3ktdHJ1bmsKKzE0MDczIDMzZThlNzQwOWIxMjAyMDMxYWE0OTk1OGQwMzUwZWU1MDMxZGMyNWQgbGVnYWN5LXRydW5rCisxNDA3NCBjYTg4ZTU5YTZlYmNhM2I4ZDMxYjE3MTdlNDJiNWViNjFmMjhhODJiIGxlZ2FjeS10cnVuaworMTQwNzUgM2I3MWNkZmEwMmM3NDJjMjYyZDhhYzE5NjJkODQxMTYxYTk4YTdiYSBsZWdhY3ktdHJ1bmsKKzE0MDc2IGM3ZjBhYTQ1MTBlMjYzOGUwNDk5OWUxOGUzZTRlMDMxNTg3MjA0Y2IgbGVnYWN5LXRydW5rCisxNDA3NyBkYTZmMTY5M2NkNjUxM2MwMzIwNzc4M2FhY2JkZjQ2ZjMyYTI4MDNmIGxlZ2FjeS10cnVuaworMTQwNzggOWVhY2QyOWU2MDY2MTgwNDJkZTUyODRiYzA4M2ZmY2UzMzVlOWUyYSBsZWdhY3ktdHJ1bmsKKzE0MDc5IDNmMjc0NDc4YzRkYWE5ODlkMDc2NzQ4MTg3OWQxYTU5YmU1OGFjZWYgbGVnYWN5LXRydW5rCisxNDA4MCA1M2Q5YzE1NjBmZTE0ZjNmYjk0MDRhNTc5Y2MwMWViZWIxMjMzYTJlIGxlZ2FjeS10cnVuaworMTQwODEgNjY0Mzg2ZDY5NjdjYWVmY2NkN2FjOWMyYTI0NzkzNjc0MmEzMjJjMiBsZWdhY3ktdHJ1bmsKKzE0MDgyIDljYTMwNDUzZGQ0ZTRlNDc2MWJmZWRiMjUzMzBiMTMxMjlhZDM5N2UgbGVnYWN5LXRydW5rCisxNDA4MyBmOWY3NWIyMTJkYTQxODljZmFmMjc1MGM5NjU1ZmE3NWNiMDlhMjZmIGxlZ2FjeS10cnVuaworMTQwODQgMDFmN2ExMzZjNjc3ZjExOTgzYzI1ZTJlMzc4NzljM2NhYzFmNDFmOCBsZWdhY3ktdHJ1bmsKKzE0MDg1IDE3NWQ3ZjY4MDRkN2EzYjZjOTNhZGE0NjdkMmIxNmUwN2FiNjVkYzAgbGVnYWN5LXRydW5rCisxNDA4NiA3MTI4MWZmOGM2YTJiYTU2MDkxNjQ0MGFjYzI4YmYxOTFlZjk1YzUyIGxlZ2FjeS10cnVuaworMTQwODcgY2M0MTJkZmQ3OWY3N2M3ZGIwODhhMmJiYzE0YjU5NTZlNWVjMjFkYiBsZWdhY3ktdHJ1bmsKKzE0MDg4IDE2ZmM3MTdiZWEzYzlhZWIzODA2MzA3ZjM5ZWU2NTFiNmM2ZjQ0YTUgbGVnYWN5LXRydW5rCisxNDA4OSBjMGViNjNjOGYxZmViYjhjYTk4ZjMwYjkxYWM2MWFiOTFlYTdkZTljIGxlZ2FjeS10cnVuaworMTQwOTAgYmEwN2ZmZjcyNTExYjJjOTQ4MWMyMGU3ZjY3YmU2NzA5MTY1NTZhZCBsZWdhY3ktdHJ1bmsKKzE0MDkxIDRkYmI3YzYwOWFjMWY1YjVkMDEzNzM3ZWFjOWE4MjZkNTdlZTgyMzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDkyIGNiZjU4Y2QwYmI1NzQyOTI5MjkyNjY0YjFjOTI3NmVhMzBhZGM5OGYgbGVnYWN5LXRydW5rCisxNDA5MyA4MmZiMDJkZTU0MjExMzkzN2M0M2VkN2JkYzNiMDYwYzQ5ZjhkNzIzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NCA1YTJmMTNhN2JkNDVmMDc5MzE4NTEzMDIxMmNkZDlhYWMxYmU3MGExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NSA4MGFjMDc2ODFhYmViMTIzYmUxOGFkYTEzNjNhYTQ5MTlmZjk0Y2RlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NiA5MDY2ZjYyN2QzNjJmMTE5MzU0MGU0NTA0NDE2Y2Y0MTI2MzBiZWM2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5NyBiNWJiY2NiNzVmMmRkOTM1ZDZlZDViYmUwNGMyMjk0Y2M2OWQ4OTZmIGxlZ2FjeS10cnVuaworMTQwOTggYTQ2YzljYjQyMTIzZTllOWM3NTBkMWY1Y2U1YzdlNTkzNjNjZTM0MiBsZWdhY3ktdHJ1bmsKKzE0MDk5IGIxMmExMWFlMTIzY2Y4NWIwOWQ5ZjI0MzNiYjJkMjlmMDk4M2UzMjcgbGVnYWN5LXRydW5rCisxNDEwMCA1YzEzNWNlYWIyMGM1NDRkZDAwYTU4ZjE3ZThmZGI5ZjUxZDhiNjU4IGxlZ2FjeS10cnVuaworMTQxMDEgNzYxZDI1Y2ZjMjU5NDEyZDU4ZmJlMDk3NTVjNDgyZGIzZWNlNzM1MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxMDIgZjg4NmZkZTc2NWEwNTcwMDQ0OTA5OWJmNzkxMzdjNjFiMmZiMDk0MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxMDMgMjhiODU4NTM1NGRlNTgwODk0M2U4ZTM5MzIyMWZjODQ2MTI3OWRmNSBsZWdhY3ktdHJ1bmsKKzE0MTA0IDUzNWY0MGY5Zjg3ZGM2Nzk4ODk3NzIzNDcwZGFiM2RjOTRhNmY1ZGIgbGVnYWN5LXRydW5rCisxNDEwNSBmODNiNzQyNzNkYTIzYTAwOGMyNDc1NTczNzQ1YjI2YjliZWRmMmEwIGxlZ2FjeS10cnVuaworMTQxMDYgODA1NjlkNzI1MzI5MWEwMGUxMmE1MzA1MDYwYmIwMGNhMjUxNzI0NiBsZWdhY3ktdHJ1bmsKKzE0MTA3IDhjZmNkMjczZmE1Y2EyYjY0NGVmZjdiN2RlMTA5NTVkOGQzMTVkYjggbGVnYWN5LXRydW5rCisxNDEwOCAyOTUxZTJkMjc4NTIyZWQ0MDM3Y2I4NTIwZmQ1NGVhY2RmOGE2MWY5IGxlZ2FjeS10cnVuaworMTQxMDkgYTgzZDJhMWNlMTk3YTM5YTcyMmVlODJjZmJjMzRhMjUxYTljNTM1YiBsZWdhY3ktdHJ1bmsKKzE0MTEwIDY4MzY0YmYwMDJmMTM4OTBiMmE4ZDU0NTk0YjFhZDE2NWE4MjZjN2IgbGVnYWN5LXRydW5rCisxNDExMSBiYmQzYThhZDdjYjc2NjcyOWE2YzE2NGJkNzRkNmIzNGI5NGQ5NGM4IGxlZ2FjeS10cnVuaworMTQxMTIgYjNlNTVjZTBlYmQ3NWY0YjM4YTQ4OWM0YjlkYjQ2N2U2MGNmMjBhNyBsZWdhY3ktdHJ1bmsKKzE0MTEzIGFmYjk4N2E4NDRkYmEyMTc4MzQxZjQ2MTE0Yzg5ZTZiMTM5NGZiZDggbGVnYWN5LXRydW5rCisxNDExNCAyNjBkNDBmMjAwNzc4ZmVmOGMyYjBkOTNjNGNkZGZiMTc5OGZmYmM0IGxlZ2FjeS10cnVuaworMTQxMTUgNGM2OTNlYjMyM2M2ZjMxNzMyZWY1ZWQ4YzM2YmVkZDA3NDYxNDNlMiBsZWdhY3ktdHJ1bmsKKzE0MTE2IDUwZjdkMzQ1ZjE1N2E2ZTA3NWQxN2Q1ZTQwODRlMDlmOGQ5ZjViMmEgbGVnYWN5LXRydW5rCisxNDExNyBiNjA1YzQ2NmQxYzBlOGZjMTY2M2NmYjA2NmYyNWQyNDBjZTllZWQ3IGxlZ2FjeS10cnVuaworMTQxMTggMThmYzA4ZmM5ZmQ0NzhlMmRjNjIxNzg4NzNlMjRlZGUxZDgzNDZkZSBsZWdhY3ktdHJ1bmsKKzE0MTE5IDhkNGNhN2JlNzM3OThjOTcwMDE5NzYwN2E4NGYyN2EwMTU2MzgxZTcgbGVnYWN5LXRydW5rCisxNDEyMCA5MGZmYzA3ZjVkMTBmMDFkNmYyNGExNTM3NGFlZjk0ZTg0MGJmZmVhIGxlZ2FjeS10cnVuaworMTQxMjEgNzU1NTk5MGU4ZGI5YTQxM2EyNDYyZWRkOTI4Yzg3YTI3OGNkMWE2OCBsZWdhY3ktdHJ1bmsKKzE0MTIyIGY3MDFlOTE2M2M3NmQxMzUyOTllODM0YmNhYzkzYWYyYmMwY2NkNGIgbGVnYWN5LXRydW5rCisxNDEyMyAyMzZkODQyOGM0YzUwZGJkMWIyOGFlMGUwZWE4ZGExNzYxNjVmNzI4IGxlZ2FjeS10cnVuaworMTQxMjQgYzA0MmU0MTQwZjFlZTNjODljYTRmNjFjY2IzZjE3NjNlZWMzODYzMyBsZWdhY3ktdHJ1bmsKKzE0MTI1IDczZWM2NmFkZDk0NzhkZWNjZGZjNjViN2UwOGY1NTE0NTJiZDI1Y2YgbGVnYWN5LXRydW5rCisxNDEyNiA4MTk4YzUzMWJiYzQ3ZDU4MTkxYjRiYzkzMDc4MmYwODM0NTc1YjIxIGxlZ2FjeS10cnVuaworMTQxMjcgZWVhYzU0Y2JiMWRjZWQwZWM5NzYxZGNiZDA1Mzg3MjRhYzE2OTM3MyBsZWdhY3ktdHJ1bmsKKzE0MTI4IDg5NDNiNzdmMjE5YWYxNzI2MDE2OTE1NjdiZTNlYTdhOTgyZmUyNzAgbGVnYWN5LXRydW5rCisxNDEyOSAzOWQ2NmEwNjdkMGJmMzg2MjMxM2NjYjk4ZWEzYWEzZTlmMDFlYjdkIGxlZ2FjeS10cnVuaworMTQxMzAgYmVmODY2ODZiNzUyYjdhYTE4MjIxNjM4YWU1ZWE5OTYwNzRlYjUxMCBsZWdhY3ktdHJ1bmsKKzE0MTMxIDdhNGY2MjQ5Yzk3ODdkYzZiYTI5MTY3MmIwOWVhMDUyNTFmYjQxZDMgbGVnYWN5LXRydW5rCisxNDEzMiBiMTdlZjU0YzkxYzQxZmUyYjQwM2NkMjcxYzU3MGM2NTdjMDc5NDI1IGxlZ2FjeS10cnVuaworMTQxMzMgMTU2YjFiZmVjM2I4OWQ3YzA2MTBlYTdhZjcyYTAzNmQ2OTE2ZmNiMCBsZWdhY3ktdHJ1bmsKKzE0MTM0IDQ1MjBmNjkzYjc2NWY2ODMyOTNmYWVmZTJkY2I3MGU3OWRjMzdjMTEgbGVnYWN5LXRydW5rCisxNDEzNSAyMmY0Y2YxNmI1YTMxNjE4YjMzMmQ4NTI4ZTY3NzI3MWU3NjAyYjU0IGxlZ2FjeS10cnVuaworMTQxMzYgMmNiNTZlOThjZjUyM2FjNWU4ZTMzNTQ0MmE4YzliY2ZmNTk4MTJjZCBsZWdhY3ktdHJ1bmsKKzE0MTM3IDFlN2VmYzE4YTg5ZGI0NTE1MDJhZWMxZjRlYmQ0NzJjNjZmMTQwYTcgbGVnYWN5LXRydW5rCisxNDEzOCBjNzExNTVjZTEyMTU5ZmFmMmMwYWQxODMyZDhmMTMwMzMzYjg3MTUzIGxlZ2FjeS10cnVuaworMTQxMzkgY2ExNWNjYzI2ZjBjMmRiNTkyZWJmN2YyNGI1YTAyNmViZGZkZDkzOSBsZWdhY3ktdHJ1bmsKKzE0MTQwIDhlZmViODcxMjE1YjQ4ZjFhM2NmYWYyMTVhYzE4ZjFmNjFhOTU1MWIgbGVnYWN5LXRydW5rCisxNDE0MSAwNGFmYjg3ZDExMDNkMTJmYzY0N2IwZWJiMDY3ZjkzZGRkOTQ2NzI0IGxlZ2FjeS10cnVuaworMTQxNDIgZTI2NjBhZmRjMzgxYjhjNjVmMThlYzJjY2E0YTZkYjg5ZGQ0ZjBiOCBsZWdhY3ktdHJ1bmsKKzE0MTQzIDUyNTVkMDUwNDBjMjUyMjI3NWRkMzM1NDgyMTA3ZjJlYWZlMGQzOTcgbGVnYWN5LXRydW5rCisxNDE0NCBkNDczMWU0M2ZhNjA1M2E0MmM0M2EwOWIwMDE1M2YwNzQ2Yzc0YmUzIGxlZ2FjeS10cnVuaworMTQxNDUgNmFiYzUwYmI0NzA3NGQzOGJjOGFlY2JhMzg0MDEyNzFjZDg1ZDU5OCBsZWdhY3ktdHJ1bmsKKzE0MTQ2IDg4NTgyMGZhN2UzMTg3NzhhYjc2YmZmYWFlZTZhNjYxZDQ4NGQ1ZmIgbGVnYWN5LXRydW5rCisxNDE0NyAwN2QyZWE3MWFjZGM2NjAwNjJkZGY5NGNiYzBkZmQ4N2EzZDFhMmJjIGxlZ2FjeS10cnVuaworMTQxNDggMjJjMDNhYjRmYjE2NTI1ZDUzMzJhZmNiMzIxZmE4MDBjYzczYzU4MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNDkgNmFkYzNjNWZhMTg1YTExYTllYzQzNmZhODUxMWYxYmI3MGNlZWQ2OCBsZWdhY3ktdHJ1bmsKKzE0MTUwIGM1YWJjODFkZDFlZWQ5MDI0NDhkNWYwMzU4YWJiYmJlZGJjM2E0NjQgbGVnYWN5LXRydW5rCisxNDE1MSBmZDBkMzFjMzQ2YjJiYjQ5ODNhYmQwMzg2NDZiMWE2YjVhMWFkNjM4IGxlZ2FjeS10cnVuaworMTQxNTIgNTVkZjM3MDNjOTUzYjY3ZTA2ZDUwY2U1YjNkNDIwOGQ2NzBiM2ZjYiBsZWdhY3ktdHJ1bmsKKzE0MTUzIGY1N2ZmNDI4OWZjNjRiNmI4ZDI2ZGU2MTQzMWY3ZTBkNjdmNzlmNDggbGVnYWN5LXRydW5rCisxNDE1NCA1N2MxNjg1YWNiMTY3M2VlZmU0MDJjYWJmZjA3MjE1MTdhYjM3ZjFmIGxlZ2FjeS10cnVuaworMTQxNTUgNGMzZTU1YzgyOGQzYmUzYTJmYzdhY2VhYTAwMjZiZTBmM2E2YjIzOSBsZWdhY3ktdHJ1bmsKKzE0MTU2IDQ5ZDZkMzAyNzdkYTc3YzliZGY0OWRhNDJhYmRhYjA4MjFiYzNjMDQgbGVnYWN5LXRydW5rCisxNDE1NyA2NmFhMjFmNTBlYTM1MTBjZmUwYWMyOWE1ZjkzNzA1OWU3ODE0MTNkIGxlZ2FjeS10cnVuaworMTQxNTkgM2ZlMjdiYjJmMTE5MzQwYTAzMTRkZWJlZDAyMjVmYzJlZGQ5NjllMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNjAgMjczYTVlOWFhNjMzZTMwM2UyYzZiN2U5ZjU3MDE0MTIxMzk1NGY4ZSBsZWdhY3ktdHJ1bmsKKzE0MTYxIDg2YTE2M2E1M2IxY2FiN2U4OTQ4NGY0MmVkM2IwYWEzYmU2Y2I4YWQgbGVnYWN5LXRydW5rCisxNDE2MiBmMzYxMWNiM2EyNjE3Mzc0MjFmMTllOTI3YWVhOGU2ZWY3NjMwNGU2IGxlZ2FjeS10cnVuaworMTQxNjMgMTc3NTkwMGRiMTA4NzU0ZjZmNTBiZWUzOWIzOTk2NzU2NGI3NDI5YyBsZWdhY3ktdHJ1bmsKKzE0MTY0IDU3YWEyNzdkN2EwMGRlN2UzMWRlYThiZTA4MzFjN2E3ODU1OWZkZDEgbGVnYWN5LXRydW5rCisxNDE2NSBjNjIwNWJjNzEwZWU4YjJiMWQyZGQyZjNlZDg1NTU4NjQ4MjI1M2I1IGxlZ2FjeS10cnVuaworMTQxNjYgM2ZmZGYwNWY1NjM1ZGYzYmM0OGZiMGIyMDNmODgzZTlhYjIxNzM0OCBsZWdhY3ktdHJ1bmsKKzE0MTY3IGFmNWFkNWVkYjdhNWRhMWYwMThkZTc5Y2FhZWU5YmM1ZDUzZTBlM2QgbGVnYWN5LXRydW5rCisxNDE2OCA0YmQ0YmQzYjU5N2FiZTY1Zjk2NmI3YmM5OGJhNzhlOWVhODdmNDJmIGxlZ2FjeS10cnVuaworMTQxNjkgNjQ4ZDk3YmQzYWM2YzM3NzVjOGQ0MWRlODBiNDVhYjY5MTZkM2I5ZiBsZWdhY3ktdHJ1bmsKKzE0MTcwIDExMzFiZmExYWQ5OTMyMzY4OWRmN2EyM2MyYzdkY2RjMTYxNmE2NmQgbGVnYWN5LXRydW5rCisxNDE3MSAxYjJlM2UyYTI0Mzc5M2Y2MGRhMDJkY2Y5NWM4ZDYwMzlmOGQzOGU1IGxlZ2FjeS10cnVuaworMTQxNzIgY2FiM2ZmNTUxZjRiYzYyNjU0ZTI4ZTFhYTc2NTg4NDdhNmU2MGEzZCBsZWdhY3ktdHJ1bmsKKzE0MTczIGYyNDk2NWU3N2I4NTU2YmFkNWRlZjBhMDRlODE3YTYwZTkzZGUzYjEgbGVnYWN5LXRydW5rCisxNDE3NCBlMGUwMTFlNDA3M2M1YTVhMmRiMTM0ZjNiNWVkZjBhMGU5MDRiMTg4IGxlZ2FjeS10cnVuaworMTQxNzUgMTVlNWJkODkzOTVhN2Q1MjA3ZDIzODFmNzJiZTMxOGMyZTczY2FmOSBsZWdhY3ktdHJ1bmsKKzE0MTc2IDIzOGI0Mzk4ODJlNTIzYjhkNTkwNmU5YmExNjAwOTdjZDcyZDZlMTIgbGVnYWN5LXRydW5rCisxNDE3NyAwMTE3MWJlNDc2OWQxM2U0Mzc5ZjViNzQ3ZWZkZTg3ZDNjYThmZmZiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDE3OCA3NzA2MThkOWE3ZmNmYTBkNzhlMmFiMzc1ZmJmZjU4OTMxMjRkMDM3IGxlZ2FjeS10cnVuaworMTQxNzkgNzhmZTg3Y2UwZGVkMTA2MjM3MDM2MDk5NGQzNzc0NGQ1ZTNhZDViZSBsZWdhY3ktdHJ1bmsKKzE0MTgwIDE0NTYxZTgzOTViYjlkZWZlODUzZTA2OTNmMjM4MTFjMjIwNzhkYjggbGVnYWN5LXRydW5rCisxNDE4MSAwYmFkOWQ4Yjk0NWY3MjIzOTRlZjBmMTcyMjc5NjAyMzAxMTFkMTliIGxlZ2FjeS10cnVuaworMTQxODIgNTczOGFkNzM3MTE0NDczOWEyZWYzYzNhNGY0MmQ4MmQwYmE1YzRkMyBsZWdhY3ktdHJ1bmsKKzE0MTgzIDJhYWI0NzQ4NDAxMjIyZTcwYjZkN2UxNWI1MDMyZWU5MGM0NDc1Y2UgbGVnYWN5LXRydW5rCisxNDE4NCAxY2ZkODE3NjhlNzAzNWQzOWQzMTQ3ODBiMjdhMzg0Zjg1MTM3YmQyIGxlZ2FjeS10cnVuaworMTQxODUgZWNkNjY3OThjZjBiZGJjZDk5ZjM5YmNkZDY1NTIwZGFjN2M2ZWI1NyBsZWdhY3ktdHJ1bmsKKzE0MTg2IDEzZGFhZDhhNmVlZTEwOGM4NDE5M2M3MzBkMWI3NGE0ODZhOWI0ZWMgbGVnYWN5LXRydW5rCisxNDE4NyA2OTIxNmMxMWExYmQ3YzY2ZjIyNGQ5MzQ0Mjc4NzBmNTgyYzFjODhlIGxlZ2FjeS10cnVuaworMTQxODggOWVjN2Q5Nzg4MDBkMjY2ODgzZmZlOGZjNDU3YTIxMmQ1MDc4ZDIyNiBsZWdhY3ktdHJ1bmsKKzE0MTg5IGIzNjA0MTBkNjNjNjc3MWI4MThjN2NjNmJkZTdmYzk5YjQ0YWFmOTEgbGVnYWN5LXRydW5rCisxNDE5MCA2ZDhjYjY2Y2QyMzg1NjQ1YzA1NjdhMDY4ZGQ2N2JmMjc2NjE0MjQzIGxlZ2FjeS10cnVuaworMTQxOTEgMDgzMTNhYzE3Y2YzZGFjNjYyNTI3ZDEyM2FiYjIwMWMwNGQzMzliYSBsZWdhY3ktdHJ1bmsKKzE0MTkyIDY3NTI4NDQ5NzQ0M2UyMjk2OTEwODlhMDI2NGNhMGJjMDkxOTdkNjYgbGVnYWN5LXRydW5rCisxNDE5MyAyMGFmMDJhNTdhNWYxZTM1ODE0ODk3YTU0NDU5ZTM2NmU5NjI2YmZlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDE5NCA2OGMyNTliNmU2Y2RmOGNkM2E1ZmViN2UyZjMzZmJiZDEyMzRmNWEzIGxlZ2FjeS10cnVuaworMTQxOTUgNTkwMjcyYWJlNjljODViYzNmZmMwNWQyZGI4ODA2N2UwNzI0MWIzYSBsZWdhY3ktdHJ1bmsKKzE0MTk2IGJiMWY0M2YyNWNlMDlhNTNiOWJhZmYzZDA1NGE5ZTQwYjM1ZmIxOTkgbGVnYWN5LXRydW5rCisxNDE5NyBhNzBkYzczYTI4ZGUwOTMyNDUwYjQ0YjkyZmY2OGU2NGRjNGM5YTFjIGxlZ2FjeS10cnVuaworMTQxOTggMTA3Y2UyOWIwNGE0NWQ4NDgzODE1MDA1NzY1NjJhNjk0OTU3ZDk0NCBsZWdhY3ktdHJ1bmsKKzE0MTk5IDUyODU1OWEwYjJmMjUyMGU5ODcxZDkwNDZjZDgzZGY0YWViYjk2NjcgbGVnYWN5LXRydW5rCisxNDIwMCA5MTI0NWRjOTQwZWJhZjAyMWY0Mzc4ZTZlYmVjZDMzOGMxOWZmZjgwIGxlZ2FjeS10cnVuaworMTQyMDEgOGNmN2IyM2ZiOTU1MTZlMDNjYjE5MDJjMjYzMDVhY2U3MzMxMGMyNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMDIgYzg3Yjg2MWM2ZWM2MDYxMWI3MzA5YmNlMDEyMTc4ZGIwY2M2NzA5YSBsZWdhY3ktdHJ1bmsKKzE0MjAzIDBlYzgwM2NiZDg3MjI1YWU1ZjAzZjRlN2ZiOGQ3ZDQ2MDQ2Yzk3OGQgbGVnYWN5LXRydW5rCisxNDIwNCA2NWRjMDgyZjcwMDRhMWQzZmE1ODhkYTY4MDNkZjIxMzY1ODhiYThmIGxlZ2FjeS10cnVuaworMTQyMDUgNmYyMTE5Y2Q5OWQyNTZhYzY3ZTc4MjM4MzVmNTY3MTlkMTY2NTI5YyBsZWdhY3ktdHJ1bmsKKzE0MjA2IDNjMjEzZTM3MmIyMjg5Zjc4N2EzZTZiMjk0NGRhNzE0NzhlMDgxOGEgbGVnYWN5LXRydW5rCisxNDIwNyA5MmM1M2IwYjJlZTVhMGQ2OTBjNTUwOGM5ZDdkOTI4NDI0MjU3NzViIGxlZ2FjeS10cnVuaworMTQyMDggYzZlMTQzZGZjNWEzMzJiMDU5MGIwYjVjYzRmODhmMWFmNTNiZTg1YyBsZWdhY3ktdHJ1bmsKKzE0MjA5IGQ0ZWExMzYxNzMxYjYzNTYwYTgxMGM2MDU2OTBjNTViODYyZGRhMmMgbGVnYWN5LXRydW5rCisxNDIxMCA0N2Y5M2E5NjkzNjZhYmE2ZTQwMzk5Yzg0ZWEwYjUxMDQ4OWQ5N2IyIGxlZ2FjeS10cnVuaworMTQyMTEgZDdlOTZjZGU2YjQ3YmRkM2ZiNTY2NTNiN2I2M2FjY2UxYzI0NmJjNiBsZWdhY3ktdHJ1bmsKKzE0MjEyIGMzNWVlZjhhMjE3MWE1MjVkZmM3M2ZmM2ZhMDYwMTI3NDg1ODMzMDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjEzIDRlMzA5NWM0YWVhMGU3N2JjZGJhYTYxMjI2Y2M1ODBjNTQ3M2FhZWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjE0IGRmZTJiZmM4MDUwY2I5MjkzOGVkNjRmMzdkZGViYTRmOTBiNDRlN2QgbGVnYWN5LXRydW5rCisxNDIxNSBiODI3M2U1ZGUzNzRiZmIwNzcxMzNmN2RmYmJlYWQ0OTdjNzY5MDAxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxNiBjZjdhMGYxYjdiNDhiNmM4ZWY4MGE4NjRiZTdmOTU5MTViMTkzZmQzIGxlZ2FjeS10cnVuaworMTQyMTcgNGNmOTI1ZmNiNTYxOWU2YjY3NjdmNGNkMTZkZjUwNDJlN2JlZDYwYiBsZWdhY3ktdHJ1bmsKKzE0MjE4IGY0Y2M2MDNkZDc5OTFiMzFjNDFiZGQzMWZmNmY3NTZiYzEyMWE5ZWQgbGVnYWN5LXRydW5rCisxNDIxOSA4MTc1ODkxNTZmMjE2MTdmODdkZmEyYzFlNDEzYjNhNzRiMWEzOGE4IGxlZ2FjeS10cnVuaworMTQyMjAgNzc4NTQ2ZGNiYTA1MmJhMGZiZDVkYmE0NTFkMWQwZjg2YzViNTQxOCBsZWdhY3ktdHJ1bmsKKzE0MjIxIDMzMjI5ODgwMTBiNWUxNzJkNDgzMTQ1ZTQyY2NlYjAwOTU1ZjVmYTIgbGVnYWN5LXRydW5rCisxNDIyMiBhN2YyN2YzMDM5OTVkYjU0ZTIxNGY4YmE3ODc1NmUwYjY5ZjYzOGI5IGxlZ2FjeS10cnVuaworMTQyMjMgYTk0YzI5NmE2ZmNjY2M4MTE1NmQ3ZWIwMmUyMDZiMGI5YzYyMDhlMiBsZWdhY3ktdHJ1bmsKKzE0MjI0IGNmN2ZjYjBjNWJkZTJiMWY1Mzk4NjVkZDU0ZjUxMmU2OGJlYzVjNTAgbGVnYWN5LXRydW5rCisxNDIyNSAxZmM4ZTY2NzNiNDhlZDI2MjNjM2VjYzIxNTAwYTQ1MDdhYWI3ZWVkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIyNiA4NGZkMzFkZDRiMTIxYjlhNzIxZWFjZWNlNjdhMGVhMjRlZDIxZmVjIGxlZ2FjeS10cnVuaworMTQyMjcgYTdkZjdkNTIzZDI5MzViYTc2MjU4YTc1ZmI0ZGViOWM0MjczYzljZiBsZWdhY3ktdHJ1bmsKKzE0MjI4IGJjYjBkNjM5YWNmMjFiZDI0ZDFkNGViM2E3NGQ1MjI2ZjA4NzAxMzUgbGVnYWN5LXRydW5rCisxNDIyOSAwNjlhMWZkNDBhYmJkNzVkNjdmOTJhZTkyMzk4MTNmOTU1MmJhMWQxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzMCA4Njg5MGMwNzNjM2JmYmNhZWJhMjNkYzFiZjgwOTU3MTBmODJiNDIxIGxlZ2FjeS10cnVuaworMTQyMzEgMWRjZjliNzU5Mzc0ZjIxM2FhNzljMjgwMmRmMjBmNmNhZDVhNWU1NCBsZWdhY3ktdHJ1bmsKKzE0MjMyIDRhMzI0N2VkZGM0Mzg2OWNmMDJmMTQ0YTRhMDQxNWJlYmM3Zjg1ZTUgbGVnYWN5LXRydW5rCisxNDIzMyA0NzJhMTdmMmNhOWZjZTMxNzAyYWZkNTA0NWU2YWRmN2NkYTEzNmUzIGxlZ2FjeS10cnVuaworMTQyMzQgYzBkNGVlOTM5MWI2ODIyNjE2ZGYwZDdjNGJlNDRjMzQyOGU1MzkyNyBsZWdhY3ktdHJ1bmsKKzE0MjM1IGQwOTM0YTgwMzhmNmE5NjdiYWQ4OWQ0ZTU0MWJmNTJhNDg0MDJmZTEgbGVnYWN5LXRydW5rCisxNDIzNiA4NzA1ZWEzOTBkYmEwNTJiMDk0YWU0YTEyN2JjMmFjYmVjZTQzZGViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzNyBkZWQ5NjM2N2U4Y2E3MmJlYjJkNDg1YWRkOWUxYWJiMzlkYTQxMDlmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzOCBkMzM1MjA4MjBmYWZhYzRkYWE5ZDEyZTFkNTc0YWMzOWQ2MzAwZmY1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIzOSBlODI3NjczM2RhOGZiZThjOGQwZjYxNWMxODczY2ZhN2UzYTk1YTljIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI0MCAwYjAxOTRkNDM1MmYzMTI0YzhkZTI1YmE2Njg0YmY0OWUyMjFkZjQzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI0MSAzODU2MGEzYTMyNDkxMmM1NjkxMzQ4ZTg1OTc3MjdjMGU4MDdjMGFmIGxlZ2FjeS10cnVuaworMTQyNDIgOTlhMDFjYjNkZGI1ZWY1ZDE1YmM0MWMwNzNhZWJhMGYzNzE1ZDY5YiBsZWdhY3ktdHJ1bmsKKzE0MjQzIGQ4ODk5NmU0NmNiMmNlMDExZjBlZmJkMDE5NzU3NmEzZjgxMDA4OGQgbGVnYWN5LXRydW5rCisxNDI0NCA5OWM5YjEyNjY5MGRmYjA1MDIzNTg0NzZiMGExZDZkYzgyN2M2MTY1IGxlZ2FjeS10cnVuaworMTQyNDUgNGMzY2E2YzA1YmNiMzIxZjhkN2ZhOWI0MDgyZjNlNTM2Yzc2ZjBkZiBsZWdhY3ktdHJ1bmsKKzE0MjQ2IDBhZDIzMzI0MDE2ZTRlZDMxMmZiOTdkNDYwM2U1NjBkMzFmMzc5OTMgbGVnYWN5LXRydW5rCisxNDI0NyBmZDVjZWFkNzMzYjY4Mjg4ZDA5MzEwMGQxNThjMWNkM2U4MjNhNzIwIGxlZ2FjeS10cnVuaworMTQyNDggZGI3NTZkMzFlNzI3YTNiYmNkNmU3YzVmYTI0MjQ5YmZhMzkxOGUwZCBsZWdhY3ktdHJ1bmsKKzE0MjQ5IDAyM2VkMjY2MzA3NDYzY2QyMDVmZjFkODJkZWU5ZjJiMTEyYWNjNWMgbGVnYWN5LXRydW5rCisxNDI1MCAwZDI3ZThkOGYwNGMxYTIwMjk2NDRmZmExZWMzZDdlZjU1NmI0NzhlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1MSA2NzY0NjlmNzVhZTY3MjNkNzFiNjVjNmNhMTEyMDhiNjg2NDMxMGQzIGxlZ2FjeS10cnVuaworMTQyNTIgZWE2MTA0NGY5OGFlZDg2MmYyZTk4NzBkNjBkM2YyNjBkNmNlMmU0ZCBsZWdhY3ktdHJ1bmsKKzE0MjUzIGFkODU5NDA4NDBjYmI1YjU4OGI3YzI4MmFhM2M4MzBlMjRjOGFiZTAgbGVnYWN5LXRydW5rCisxNDI1NCBiODk2YzEyYzJlZWE1Y2EzNDk3MDVkOGY3YjE2ZDYzNGRlMjVjOTA1IGxlZ2FjeS10cnVuaworMTQyNTUgYzQzNGY5NDI3YzliMDNjNTE5YzQ3YWFjODdmMDUwNzlkOTcxNDg4ZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTYgMjRmODE0ZDllM2ZmNTQ1NDViZTI3ZjdkOTQ4MzJkNzMwNTgxMWVjYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTcgMDAwMTcyMjVmMDc3OTU1NTEzYzc2ODJhNTcwMWFmZWUzMmEwYWQ5OSBsZWdhY3ktdHJ1bmsKKzE0MjU4IDJhYjc0YjE5MzI4NmQ5YzhkYmE2MWRhNmY3ZmE4MzYwMTFjYjRjMjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU5IDUyOGVmMzhiM2QzYTc2N2EyYTg0NWVkNzRiODA5ZTJiZjlkYjZiMDYgbGVnYWN5LXRydW5rCisxNDI2MCA3ZmRmYWFhNjU4MjcwOTY0MzE1MmY3ZjMyODIyYjI2MGNiNjY0NTQzIGxlZ2FjeS10cnVuaworMTQyNjEgZTk5OGIzNTBhNGJiMWRhMTJiYjhlY2VjMTY4OWNkZWRlZmU3OGE2MyBsZWdhY3ktdHJ1bmsKKzE0MjYyIDgyODM1NTRmMTMxOWE0ZDNhZDBjYmQyNGMxNDNjNmJjZDZhM2EzZjAgbGVnYWN5LXRydW5rCisxNDI2MyA3NzA5Yzk4MzUzODI4YzJiYjIzYmFiZGVhZDI3MDhkMzFmZTc2ODZmIGxlZ2FjeS10cnVuaworMTQyNjQgYjdmMjYyODczYmUwNGJiZTRhZmM5ODRmNjYyNmIzNTFkZDg4ZGUwMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNjUgYTIzODZiOWY0NzRkOGFiMWE1NDdmZGNkNjM3MGI5NmRkYTlhYzZmYyBsZWdhY3ktdHJ1bmsKKzE0MjY2IDk1NTExZjM5MzE5YTRhMWY3OWE0MDA5ZDFhY2Q1NWRkMTU4ODZiM2IgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjY3IGI4MDBlMzZhZWQ0ZWJkYWJlY2NkZGQyODVlMjBmY2UxMWQyYzIzYjcgbGVnYWN5LXRydW5rCisxNDI2OCA0NDJkNGNiNDQwYzg4MjI4ODc4MTA2MTExNGVhNWNhYjk0MzdiYjJjIGxlZ2FjeS10cnVuaworMTQyNjkgZGZmN2EwM2U3ZDI0ZWRhMDkxN2E4ZmUyMjNhMjVlNjdiMWIyMWI1NSBsZWdhY3ktdHJ1bmsKKzE0MjcwIDhhZmQ2ZmI1ODhlZTdiOWM2NTNmZTgyMjUxZjYwYjRiYWFhMzYyNTMgbGVnYWN5LXRydW5rCisxNDI3MSA1ZTZlOWU4OTNhY2RjZWZkNDNhZWI1Mzk2ZmViMzFmYjBkOWVlNTU0IGxlZ2FjeS10cnVuaworMTQyNzIgYTEyNmZiNWM2MmRjNzQ3ODg0ZjgyNjhhOGYxZjlkZmIwMjMzNjQ4MiBsZWdhY3ktdHJ1bmsKKzE0MjczIDQ4MzcwYzY3ZGQ5ZTZjN2ZiMTkyZGEzMjgwZGM2MmQ1MjY1YzkyMmUgbGVnYWN5LXRydW5rCisxNDI3NCA0ODk0ODNiNjViM2EzZWIxYmI5NTMzODQzNzQzYmQ0MDlhNGY2MTY5IGxlZ2FjeS10cnVuaworMTQyNzUgNjljOTk1MTYyMjcwNjQ3NDFlZjVlNzBmMzZiYzIwNjM1MTk3YzIzYSBsZWdhY3ktdHJ1bmsKKzE0Mjc2IDA3NTZkZmVlYzRlZWNiZDgzNzdlZDUxNDNjOGQwYmU0MzRlMWNhMTIgbGVnYWN5LXRydW5rCisxNDI3NyAyMTZlZmRhZDlhNGI2ZmY2NTQ1ZWIzN2FhNTBmOGUxN2NmM2JhZjVjIGxlZ2FjeS10cnVuaworMTQyNzggZmY5MTk4NTM2MmM3Y2MwZDI1YmNlYjAyYTQxN2VhM2VhY2RkZTNhYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNzkgZjk0ZDY2MDE2OTIxZTlkMGUwNmU3YTNmOTY3NWJiMmRlMDM5MjJlMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyODAgOTE5YjM3YzUyYTg0MmEyNjVkNjZmZWE2ODA3YzNhZGY4ZTg0YmVmNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyODEgY2JmNDQxMDJkNDJhZmM1ZGI4MmI4NjFkNGQyZDNhZWY4ODgyMzEzZSBsZWdhY3ktdHJ1bmsKKzE0MjgyIDZkMWQ1ZjNjY2E1ZmI2MmI5NzhhNjliNWJiYzAxMWY3OTRmNzhkNzMgbGVnYWN5LXRydW5rCisxNDI4MyA2N2M2MjM5YzdiYzdhZmJmYWI1MTVkMWFiMWFkYzg1NGY2YWQ4OGNkIGxlZ2FjeS10cnVuaworMTQyODQgNDdmNzVhMTdiMTAzNzRiMmNkNGNhYzYwZGNiY2E0MDBiNjFmNWQ3YiBsZWdhY3ktdHJ1bmsKKzE0Mjg1IGE5NDcxM2Q2ZDlmNmE4MzAwODQ0YzIyYTRlYmFhY2JlZDU4ZDg0YWUgbGVnYWN5LXRydW5rCisxNDI4NiA1ZWZiNjJhY2YyNmVmM2Q5M2Y3ZTYyZWI3N2I3YjRkZWI3NjUxZmQ5IGxlZ2FjeS10cnVuaworMTQyODggYjVhZWMzMzc5MGM4ZTU1MjVkZTQyODE4MjBkY2YzM2IyMWQzNDc4YSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDI4OSA5M2JlZDYwMzU1ZTRlOWU1ODQ4NzZiYmYyMjRlMGQ4Y2FhN2RjNGExIGxlZ2FjeS10cnVuaworMTQyOTAgOGIzNDgxODdlMzAzMzI2YzQwNDAzMzgxZWM4ZDExOGM4NTc2NzYyYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTEgZWYxZTYzZjc3NDQ1OTkwYWJkNDdiYmQ4MzA1YTIzNmU4M2RiZGE1MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTIgZjY4MGFiMTA2ZTg2MWUwN2UyNmI1MTUxNTJmNDYwYTM4MjBkZjUzYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTMgNDdkNzBmNGY2MzVmMzEwZTkxYWY0ZjNkMzMxNDM5NjY1MGJjYjkwNiBsZWdhY3ktdHJ1bmsKKzE0Mjk0IDFjNDM1NGJiYTQyYjlhMTliZWRkZjIwN2FiODk2NWNjNjlkMzgwYWYgbGVnYWN5LXRydW5rCisxNDI5NSAwOWRiYjQ3MDM0ZTBmNTJiZjkwZGYxOWY5NDc5NzZkYjc5ZTMyZjU2IGxlZ2FjeS10cnVuaworMTQyOTYgNGMxNmY0MjVjNzEyYzQyMzcwZmZlM2I4NzEzYWUwNDhhOWYwYzE2NSBsZWdhY3ktdHJ1bmsKKzE0Mjk3IGUzNDk5MTAyMjU3MTc1MTEyYTAxY2FlYzMxM2JmZGI0M2MzYTJmNDMgbGVnYWN5LXRydW5rCisxNDI5OCBmNGY5YjZiNDRlOWU0N2M3Mzg4MTYyM2M1MDM4NzI0ZTNlZDllNzA1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI5OSAwZGQ1MjBmNGRjZThkYzFkZGQ0NmI1MGMyOGUzN2FmNDhmZmM4ODhlIGxlZ2FjeS10cnVuaworMTQzMDAgOGY4OGIzMTg0M2FiYzUyNDQ5ZjBmNGNhN2Q4MzNiMDA0YTg4NTQzMSBsZWdhY3ktdHJ1bmsKKzE0MzAxIDg5MGIxMWFhMmViYzcyZjg2ODRlMGI4MzI5Y2IxYmI2M2MyY2Q1NDkgbGVnYWN5LXRydW5rCisxNDMwMiBkZTQ0ZjUxMTc2OGFjNjY3MGRhNTRjZjFkNmZmNzAzMzUyZGNjMzI3IGxlZ2FjeS10cnVuaworMTQzMDMgYjBlYjQyMWY4YWU5YmViN2Q4YTE3OGFlM2ZjMzE1ZDZjN2I2MGI4NCBsZWdhY3ktdHJ1bmsKKzE0MzA0IDU4ODM3MTNlMmRhM2E2MWYxMzlhNGNiZThlODU2MmUyMzFlNDkyZGUgbGVnYWN5LXRydW5rCisxNDMwNSBkYWNhYTM0ZGZjYTQ2Zjk0M2MwYjk5N2ZmZmNhOGI3N2JjNDcxMTdjIGxlZ2FjeS10cnVuaworMTQzMDYgZDM2ZDMxMmNmOTBiZWU4NjBkYWU3N2FiMTJlNmQ3M2UwZTQ5OGZhNyBsZWdhY3ktdHJ1bmsKKzE0MzA3IGZmNzllZTQzYjhhMWZhNzU4ZTBkOTk0YmEyM2QxNDg5N2RiOGNiNGMgbGVnYWN5LXRydW5rCisxNDMwOCA4NmU3ZTVlY2FmNzk2MGIxNjMxMzg4OWRkOGQ2NTAyYmZjYmIyNzBiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDMwOSA0OTdlMDExZWYxYTMyNWMwNzVmZTJmZmYyNzgzNTQ5MDU3MGVlMzI5IGxlZ2FjeS10cnVuaworMTQzMTAgN2YyOTMzOWVjM2E1MGEzYTUzNDIzYTIzM2I2YThkMWE0Mjk1NjIwMSBsZWdhY3ktdHJ1bmsKKzE0MzExIDM0ZjUzYzM2YmE5YTFiMWQwYzUxN2U1MjgyYzhjNmM0MTQxYzkyNTcgbGVnYWN5LXRydW5rCisxNDMxMiA3MTZmYjU5NTQ4YmU0OWZjMzk2OWE0ZmJkYzQ4MTBiNTU3ZTAzYzFjIGxlZ2FjeS10cnVuaworMTQzMTMgZDEwYzEwOGQzZmQ3NjIxMjUyZjk1ZGRiMTMzNjRlZTZjY2VhNmMyOSBsZWdhY3ktdHJ1bmsKKzE0MzE0IGI2ZjUyYzFlZjZkYThhOGFjYjBmNzI2NmRkMWNmNGY2OGExY2VlMjYgbGVnYWN5LXRydW5rCisxNDMxNSA2ZjQxNDY4NDYzMzc4NzhjMGJiZjE0OTgyYjJjMGI0MDFkNTNkODdlIGxlZ2FjeS10cnVuaworMTQzMTYgNGEyM2NjNDllMmIwNjRkOWQyNmYzYTQwYzQ0OTdhNTNlMDlkYzhiMiBsZWdhY3ktdHJ1bmsKKzE0MzE3IGQ5MDAwZWU5NTllNTM3ZThkOTI4NjM0YzFmMjA3MTlkYTdkZTYyODcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MzE4IDVkNjI1YTM2NWU3NjU3YTI5MjgwM2YyY2RhMjljOWU4NTVhZGMyZDYgbGVnYWN5LXRydW5rCisxNDMxOSAzOGM0ZDYxZGI3ZWExZjkxMDg0YjM1MTQ0MDY1NTQ0OWEwMTM0ZjU5IGxlZ2FjeS10cnVuaworMTQzMjAgNjU0NmVhMDZlMTU3MDk5MjU1NzFhNDkzMDJmMWFmNzA4NDVhN2I4OSBsZWdhY3ktdHJ1bmsKKzE0MzIxIDkyNTBlNWQzYWEzMWZkZDRmOWY2ZmNhMTkxZTFjZWI2MDcyMDliZTAgbGVnYWN5LXRydW5rCisxNDMyMiBhYmZhMWNiMWVkMDUyYTU0MmQyYTg2YTlmOTE0MWUyMTAwYzVlMzM5IGxlZ2FjeS10cnVuaworMTQzMjMgYjMyMjNmMDNjOWVhODhkZjk1ZjY2NWViOGRhMGFmY2I4ZTE3Y2EwMyBsZWdhY3ktdHJ1bmsKKzE0MzI0IDYyN2I0ZGJhMTE5MmUyNWIwOThiMDNjMWY5NGI0YmMxYzY1ZWNjOGQgbGVnYWN5LXRydW5rCisxNDMyNSBlNDI1NTU2ZTY5OGViZmEzMzZhOWY2OGQ0NWMxMGExNTFkOGQxZDFmIGxlZ2FjeS10cnVuaworMTQzMjYgZTkxNjliMTllOWU1YzQ0N2M2NWFkOWVlYjUyMGY0NzMxNWM2M2Y3ZSBsZWdhY3ktdHJ1bmsKKzE0MzI3IDExNjNhN2ExY2M2NzliODIwYTAyMWJhODk2NmJmNWZiODdhNjI3ZDYgbGVnYWN5LXRydW5rCisxNDMyOCA4MzlmOGY4NmNjYWEzYWExZWUzMWQ5NDE5YmQ5MTcwZmI0MTlhOGRkIGxlZ2FjeS10cnVuaworMTQzMjkgZmRjOWVlYjg5ZTBiMzBlNjY4MWE0YTI0ZTYwZTM1NDE4ZDEyMmY3YSBsZWdhY3ktdHJ1bmsKKzE0MzMwIGViMzgxZmYxN2EzMTk4YzIzMjRjNjQ0ZjMxNjQyNjBhNmVlYmE3ZTEgbGVnYWN5LXRydW5rCisxNDMzMSA0MjIzMzdjMzIyOWFkZWExZjc3NjFhMDNhYmZlMzVlYjZjNGNkN2NhIGxlZ2FjeS10cnVuaworMTQzMzIgNjc2ZTY0N2IxYmU2Yjk0M2M5ODVlZjU2MmI5YTE4NjA3NDIxNzU2MiBsZWdhY3ktdHJ1bmsKKzE0MzMzIDcxZDAzOGRiMGRkMjNjMmYxMjA0NTQyZTNiMGYwMWE0ZDUwMDQwNTUgbGVnYWN5LXRydW5rCisxNDMzNCBiN2FlYmM4NGNiYzE2NGE1ZTAwYzlkZWM1N2Y4YWVmZTczYjk5YjhkIGxlZ2FjeS10cnVuaworMTQzMzUgYTUzMjkzMmFjNDA4Mzg3ZDE5NGJhNTdiYTI3Y2YyZTFkOTVkMjhjMSBsZWdhY3ktdHJ1bmsKKzE0MzM2IDFlOTUyZDkzM2FiYmVmNWQzZDliZTI2MjNlOWQ0YjAyNTlkMTA2ZjcgbGVnYWN5LXRydW5rCisxNDMzNyA5ODU3MjM0OThiMWJhNjQyY2MyNjk1ZTYwOTcxZThiOWJmOGU2ZDI5IGxlZ2FjeS10cnVuaworMTQzMzggNjAyNWIwN2M1YzI5NjZlNTZjMzcwYzkwMjhiMDU5NGFlZDNkOWI4MyBsZWdhY3ktdHJ1bmsKKzE0MzM5IDBiNDZkMjUwZTE5OWNmYTZlOGE3MWIzMDgyY2JjOTJjZGRiZjA2ZmMgbGVnYWN5LXRydW5rCisxNDM0MCA3MmViZjkxZGFhMDVkNWE3MzBmYTM3MzkxYjVhZmYwYzUzN2I2ZDlhIGxlZ2FjeS10cnVuaworMTQzNDEgYzk3NmQ2OTNkZGViMzY0MDVjZDk3MTgwMzRhZmY5ZTZlZmE2MWMxNSBsZWdhY3ktdHJ1bmsKKzE0MzQyIDc4ZjAwOTg4MTJiNzRiMjU3YjI1YzU0MWIwMmUwNDA1NTM5ZDk3MDIgbGVnYWN5LXRydW5rCisxNDM0MyA2YTk5ZmYwNjk0NTdkNzE4ZDQxODkxMDBhZTVlYWMzN2QxMWM2YzNhIGxlZ2FjeS10cnVuaworMTQzNDQgODlkMzA4ZmNmNmY0NTgzNjNiNGRmZjAzMmM2OTQ1ZmM2ZTljOTMxNiBsZWdhY3ktdHJ1bmsKKzE0MzQ1IGUxOWEzNTA5OTRiNzVhZmMxYmQ0NzkxYzJjMWI3YTA1ZmZlYTJiZDIgbGVnYWN5LXRydW5rCisxNDM0NiA2NTNhOTM1MGE4MTczMzk2OWIzZTcwMjc2M2ZkYTVlMDRkMDdhYjFiIGxlZ2FjeS10cnVuaworMTQzNDcgODNkMzUxZjk0OGFiNzVjZWRjOGE2ZTZmYmUzMmRiOGU0YjE5NzVjNyBsZWdhY3ktdHJ1bmsKKzE0MzQ4IGE4NmJkZmU0NTcyNTg0ZDZjNmM2NmEyYjI5YzhiOWRjZDBiN2JjMTIgbGVnYWN5LXRydW5rCisxNDM0OSAyM2U3ZDk3ODEwMTMxMTU2OTNjZGUwMjk0MDM3OTA5MzA0NjRlMDY4IGxlZ2FjeS10cnVuaworMTQzNTAgZGE3ZjVmNmE4NDlkMGVlOGE4MmFlNzY4OWNmMzRjYjgwODEyYTRkZSBsZWdhY3ktdHJ1bmsKKzE0MzUxIDg0MGUxOGVlYzA3ZjRmNTVjODczOTAyMmEzYjVmNTZjMzRjZjkyMGMgbGVnYWN5LXRydW5rCisxNDM1MiBjOTc4YTIzYTRkYWIxMDc1OTFlOGQwNzY5ZjA3YWJkYzE3ZjQ1MTZjIGxlZ2FjeS10cnVuaworMTQzNTMgM2M3N2Q2YzVjOGU5MTgwZjJmYmI5ZmJjMDkzNjJkOGI3NDY4YWYwOCBsZWdhY3ktdHJ1bmsKKzE0MzU0IDQ1YzM1YjUzNzZlNGJkYmI1YmIzYTYxZGI3MGFiODhlNGJkNWZhOWUgbGVnYWN5LXRydW5rCisxNDM1NSA3NzQ2NWQ4YjlmNWUyOTBkYmMzNDI3ZTdjZjIyYjBmZGU3Y2Q0NDljIGxlZ2FjeS10cnVuaworMTQzNTYgN2VmMzllMDcxMjBhN2RhYjVmMzRmNmJlM2E5NGUwMmQ5ZWNjMTdhYyBsZWdhY3ktdHJ1bmsKKzE0MzU3IDc2YTYwOWE5NDczMDIyMzhmNTE0OGE1MzRiOGY4MjUxZmQyNDExZjUgbGVnYWN5LXRydW5rCisxNDM1OCA1YzI3NzAxMjQ5MDRlZGIzYzIzYjMxMTg4NDE0ODE3MDBhMjQ5NDY1IGxlZ2FjeS10cnVuaworMTQzNTkgNzdmYTMzMTZiZjU4MjU0NzA3MGZlNDBjMDc2MWI1Y2FiYmNiM2MwMyBsZWdhY3ktdHJ1bmsKKzE0MzYxIDRkOTEyMjEyMDhmZmIwYjQ5NDExMjQwZTQwMDJkMmU4MWI5MGM3ZTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MzYyIDNmMWRhMDVjZWQ1NTM2YTIxYWNhMjE3ZGI4MGU2YWZjNDNmZWI4ZDUgbGVnYWN5LXRydW5rCisxNDM2MyAzZGNkZGI0NzlhN2U2NDczOWUwYzhhZDc4ZDIyMGYxMmE3NmY4ZDQ5IGxlZ2FjeS10cnVuaworMTQzNjQgNjA1NmNkNTAyOTdlNGM5OTE5MTc4Y2ZkZjY4MDM3MWI1ZDkxNTdiMSBsZWdhY3ktdHJ1bmsKKzE0MzY1IGRmZmJkOTIxZWVlZDQ1Y2IzMDg0ZDdjN2FlOTU0NjU5ZWJmYTk4Y2MgbGVnYWN5LXRydW5rCisxNDM2NiA1N2ZiMzUwMWFiMjJiMmY2NDg5ODQ5YzYwZTc1YjBjNWFmMjA1MGE5IGxlZ2FjeS10cnVuaworMTQzNjcgNjM2N2Q4MjlmMzZiYzIwYzk2YTY1OTc4ODhhNzc5YTk2OWZhNmNiMyBsZWdhY3ktdHJ1bmsKKzE0MzY4IGUzNjA2ZDMwODg2ZjAzODM3YWM3MmYyMWZkMjk3NDEwMmZiMjMxNDggbGVnYWN5LXRydW5rCisxNDM2OSA5NDVjZTYwZDk4NzkxNzM2OGIwOTg2Y2FlODU4YjgwNmNjNWU2ZmYzIGxlZ2FjeS10cnVuaworMTQzNzAgMDIwNTI2ZTcyZWFjZjI4MzU0Y2Q1NTFhNmY3MjE4N2M1MTBkN2IwNyBsZWdhY3ktdHJ1bmsKKzE0MzcxIDkwOTJkMzBjMmJiN2Q1ODZmNzkwNmIxZjJmYjRmZjcxYWViNjM5ZmMgbGVnYWN5LXRydW5rCisxNDM3MiA2MmZhOGVjODU5NWYwMmVhMmY3OGFhNWM5YWUzY2NkNjIyY2FjMDc5IGxlZ2FjeS10cnVuaworMTQzNzMgYTRlZWYwODEzZDRjYmUwYmVmODdhZGE0ZDM4NTJmOTI2MjJiZmIwYyBsZWdhY3ktdHJ1bmsKKzE0Mzc0IDk4NzZhNjRjMTgxYWFhNjE4MjdkYTc2YjVhOWNhZjEyMzg4NjIxN2YgbGVnYWN5LXRydW5rCisxNDM3NSAzNTc5OTc1NTA5ZDkzNTc5NjI5ZWEyYzE0NzY4ODY2MDZiMTI2MTc4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDM3NiA0Y2Y4NGRkZjUxMjkwNDNkMjY5MWEyNzQ1ZjlhMzk4YmJkYjA4ODIyIGxlZ2FjeS10cnVuaworMTQzNzcgM2NkZTEyYmIzZGE1ZDc0YzdiNjFjZDVlYzM5ODJlZTU5ZTFlMWVhMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzNzggMDNiZDU4ZjhjOWQwM2UxMmI5YmJhNWI0ZGYxYWUyYWU3YzcyMDExYiBsZWdhY3ktdHJ1bmsKKzE0Mzc5IGIwMzY5ZThkYWEwYmZmMzk2NTQxY2RiMGI2ZGY1OWU4OWVmYzQ2OTUgbGVnYWN5LXRydW5rCisxNDM4MCAxYTI1YmMyZDMyNzJhZGM2YTFlMTBmNDg4YzFhNzVhYTRiMTg3NTkyIGxlZ2FjeS10cnVuaworMTQzODEgMTAzM2EyNGM0YTUyOThmMGQwOTY5MTM2YmZmM2Q3Y2RlYmI1NmM1NiBsZWdhY3ktdHJ1bmsKKzE0MzgyIDM2YzY3NTBjZjIyNzU4NjNmM2VjYTE2YWUxOGY3Y2E3MTRkYjUwYjkgbGVnYWN5LXRydW5rCisxNDM4MyA4ZDViOTBlYmI5MTliYjE3Yjg5NzE5MjcxNzlkNDlmYTQxNjU2NTI4IGxlZ2FjeS10cnVuaworMTQzODQgNzA3ZDE2ZjBkMzQ1YWE4MzQzZTI4YTkzOTY1YjZiNGIwYmQyODEwOCBsZWdhY3ktdHJ1bmsKKzE0Mzg1IDdmNTBmNzFhZTdiZjI1NjE1NmY3YWY0NzFkYzlkZTNkZWQxMmRlMzcgbGVnYWN5LXRydW5rCisxNDM4NiAyODM5ZDg0Y2ZkOTY2NmQ5Njg4ODgyYzY2N2I4ZGZhNWU4NDdmMWY2IGxlZ2FjeS10cnVuaworMTQzODcgOGI2ZTJiMjM2YmFiNTIzNDQ4ZmM4YzE3M2VhOTMwYzNlYTIzZTQ0ZiBsZWdhY3ktdHJ1bmsKKzE0Mzg4IDZiOGRhZjMzN2Q2YmFiY2NmMzQ5M2U4ZDRiYmQyYzYwYWUwM2VlMTIgbGVnYWN5LXRydW5rCisxNDM4OSBjYWU4ZThlZGQzZTJhYjI5Y2EyMDhkZjY4NTMzNWI5MzBjNDc2OTNiIGxlZ2FjeS10cnVuaworMTQzOTAgZGMxOWI1OTAwZGFlYmJkZjE4NzNjOTFjYmU2Nzk0OTJjZDU2OWJlMyBsZWdhY3ktdHJ1bmsKKzE0MzkxIGE3NDIxNDczOTZlZWUwNGRiZDRlM2RkNTViZGQ1OTI5OTI2NjkzNjQgbGVnYWN5LXRydW5rCisxNDM5MiBlMmJiYzNlNDBjZGI5NjRkNTc4Y2MyYzE3MWEwNzEwNTY4ZmY4NzU4IGxlZ2FjeS10cnVuaworMTQzOTMgZWM0NmZhYTgzNTk1NjdkYTMyNDZiYTAyOGM0ZTkzZjM1ZDEyNjg5YiBsZWdhY3ktdHJ1bmsKKzE0Mzk0IGI3Y2ZjMmRiYTU4NmJiYWQxMWJkODg5ZGI0NzUxZDU4Yjk2M2U3NDAgbGVnYWN5LXRydW5rCisxNDM5NSAwNDlhYjhmMzRkZjE2NGZhNTNhMDUwYWI3ODllOGNhYjM2NTMwNDQ3IGxlZ2FjeS10cnVuaworMTQzOTYgNDFkYzI0YjIwYTE3NWE0MjQ4MzAwMDBiYTk0YzA2ODBkODZhMjFjMSBsZWdhY3ktdHJ1bmsKKzE0Mzk3IGI2ZjEyODdlMTk3MDczMWU1ZWRjODgzZWM3ZDA2N2JkNzJkNzA0ZjEgbGVnYWN5LXRydW5rCisxNDM5OCA1YWYwMTU3MTgyODVlMzU2MTRmNTIxMjU1NjVjYjdkMDBmMWQ1YjlkIGxlZ2FjeS10cnVuaworMTQzOTkgNDg2NzIxZWM5ZGQ3NDZmYzU0MGVhNTZmZGU2MzAyMmJmZDgzNDI1ZiBsZWdhY3ktdHJ1bmsKKzE0NDAwIGFlOGRmMDdkNGI2YTFiNmVkNmQ4MDY1MGM5MTliMTZiYTM1OGZjNDcgbGVnYWN5LXRydW5rCisxNDQwMSBmODNjZGNiY2ExYjA4ZjEzNjk1YjM5YWI1MzQ5YzBmMGIwOWRhNDI2IGxlZ2FjeS10cnVuaworMTQ0MDIgODYwNTI0MTgyYjljOGNhY2QxYmY1ZjU0MTFiMmMxYjU1MDhlZjEzYiBsZWdhY3ktdHJ1bmsKKzE0NDAzIDcyODQ4YzZiNjExY2VkNDA0YTAwZTQyNzNlMjhlOTU1ZjA5YTQyOTggbGVnYWN5LXRydW5rCisxNDQwNCBmZDQ4MTRiNTliNzNhNjgwZGMxNjY4NTdhZDVjYTAwNGFmYzI4ZjY0IGxlZ2FjeS10cnVuaworMTQ0MDUgN2ViMTI3YWRlMDY5NGViMjAzZmMzNzI5NjM1YTg2ODliYjI3M2JjYiBsZWdhY3ktdHJ1bmsKKzE0NDA2IGQyYWI5NTUzZjg3MTJlM2Y2Mjc0MTYxOGRiNzVkMTE0NjIxY2ZkZjAgbGVnYWN5LXRydW5rCisxNDQwNyAwOWEzYTY4Y2U5NjQwNGVhOGQ4YjM1YTMwMTdkYmQ0ZGFhNDhjYmVkIGxlZ2FjeS10cnVuaworMTQ0MDkgZTkzYTVhOTA2ZDczYTI4Zjg0ZThkMDFkZmQ0NjIxNDBhMGNiZTgwNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTAgNzMzZWM2ZTg2OWRkMzE3M2I3NGY4ZDY4NGQxZTRmMjA5MjAxMTRkOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTEgOGJjODcxMDgxNzI0Nzc4YjA0ZWVhNDhjNjU3ZjFjZThkNjYzNDg1NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTIgZjQ1ZDhiMjZiYjI0NTM0ZDk2YzE4MTBiZTg0ZGI5Y2U0OTBmYzY4YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTMgNzFlYzMxZjk3ZmZjN2UwNGUyMTliYWZmNGYwMjA1NmEzYWZlNzRjZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTQgYTRiYjM4NDNhNTgyMjMxNjU5ZTg1NDIxNTkyNTM1ZWVhYjM1Y2NiYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTUgNDU0MTk2MTE0ZmQyNDUzNTlhMTMwYTIxNjNmMzc3YjI4MTdhNWY2MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTYgY2VkOGRkNjIyN2RkMmQyYzNiNTU5NDY1Mjk3MmQ1OGE0NmIxZTA3ZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTcgNWFmM2M1Yjc0YzU0NTg5MzAxOGU3NTk1ZDlkYWY4MzA2ZWQzYTNkNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTggMjk1ZmYzYjE3NTIyYTJlYzZlOTgzMTAzOWFiODBhZTU3Mzc5NWE3MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MTkgNjNjZTA5ZGY2MDdkZTE5ZjU4MTMzOTZkNTVlYjY1MTc3ZWFkOWMyOSBsZWdhY3ktdHJ1bmsKKzE0NDIwIGY1M2ZlYzBjNzQyYmY1YjQ0YjRiY2UwM2FmNDc2YWVhZWFjNGE3YTMgbGVnYWN5LXRydW5rCisxNDQyMSAyOWU3NGM3MGRlMThhZmQ1M2Q4ZTAyOGQyMWYwZmM0YzE5MDM1NWZlIGxlZ2FjeS10cnVuaworMTQ0MjIgNTBhNmFiM2ZhMDM2YTJkZDYzODY5MTQ2MzZkYWE0OTEyNWQ0MzBiZSBsZWdhY3ktdHJ1bmsKKzE0NDIzIDM2NzhkZDY4NTg2NzA1ZDliNzk3YTBiZmUzZjYzYmEwMTk2OTA5NjIgbGVnYWN5LXRydW5rCisxNDQyNCA0NDliMDc0YzMwNTFiMTcxYmQxNTY5NGE0MDNkYWJjOTZiNjdhMzUxIGxlZ2FjeS10cnVuaworMTQ0MjUgZmU5NjBhZDNkYjY1YmMyNDA5NmJkMjFjNTBiYzdmNDhlODBmYjhiYiBsZWdhY3ktdHJ1bmsKKzE0NDI2IGU3N2EyODZkMGViMTAzMGRkM2QzMWE5ZjUzMjE5YWVhZmU2NWMzNzggbGVnYWN5LXRydW5rCisxNDQyNyBjMjI4NmExYzJmMjk1ODViNGE2MmY1NWI3OTRiYWNhZjNjZWUyYTIyIGxlZ2FjeS10cnVuaworMTQ0MjggNTc3ODhkYTE2NDg4OTY5NGYyN2M5NDY3ZmMyNDBhM2IzNjI3NzgyNiBsZWdhY3ktdHJ1bmsKKzE0NDI5IGZmYmUwYTIzYTBmMTc1OGZmOTMwNjU2MGM1NDI0ZWFkZGY5Njk3NGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDMwIGJkMTYxYTkwOGIzYmRhNWEwYzQzYWIwZWM0MzJjNjliYWZlMDhlMTcgbGVnYWN5LXRydW5rCisxNDQzMSA1NzE2NzczMWQxMjQyZTM4NzI0Mjg3NzEyYWIwYmJkZTBhZjUwMzgxIGxlZ2FjeS10cnVuaworMTQ0MzIgMzAyMjg2YjE2MGE3YTI2OGUyZmNjNTg3NzRmNzIzNGE5MmZjZDZlNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MzMgOGQwYjJmZWQ3ZDU1OTgxYzJkMGQ1OWUwZjU1MzVjMDNmMjFjODUyOCBsZWdhY3ktdHJ1bmsKKzE0NDM0IGNmOGZhOTJlYmYzZDk0ZTRkYTEwZDc3NDlhZGFmNWRjOTRhZWNmZWIgbGVnYWN5LXRydW5rCisxNDQzNSBlMmI2MzM5OTFlMDEzNTQ2Nzk2ZTY0MzJmYzE5OTVlNmIyNDIzMGUzIGxlZ2FjeS10cnVuaworMTQ0MzYgZmJjMTNmYjgwMzhjYTU5NWY0ZDVjYzcyODVkZmNlODY0Mzk5NTliMiBsZWdhY3ktdHJ1bmsKKzE0NDM3IDIwY2E3MjMwYWUzZjhhOTU1ZjhmOTM3ZjU3MDhmNjA1ZTlmZDA3NDggbGVnYWN5LXRydW5rCisxNDQzOCA2ZTVlYTdkY2YxZjU1YjYzN2QzMmUwZTMzZmY3MzQ2YTM2MzhkMTdkIGxlZ2FjeS10cnVuaworMTQ0MzkgZWFlZGE0NjIxZjdkY2Q1NTRlNmM5OWQ1YjM0ZTBlZDZlNWE0NTNjNCBsZWdhY3ktdHJ1bmsKKzE0NDQwIDg0Zjc3YzE5ZDE0M2I0YjE0MmQ1ZTIyM2U0ZjA5ODYxZjUyNGFiNWIgbGVnYWN5LXRydW5rCisxNDQ0MSAwMzkwMmJjMDIxNGExNTFkNThjNDhmYzZiNjIxYjUyNDUyNjY0YjZjIGxlZ2FjeS10cnVuaworMTQ0NDIgNTBmMTI4ODNjZGQ3OWNiZjQzNzVmMzllNzcwN2NkMjFlZDk2OTRjYSBsZWdhY3ktdHJ1bmsKKzE0NDQzIDQ3NmVhYTM4ZTJkNmFhNzdlOGY1Mjk3YjUyYTY3Njg3MGI0YzkyOTcgbGVnYWN5LXRydW5rCisxNDQ0NCBiN2JjYTA1MGQ3ZGViY2ZlNjBkM2FhMDA0ODcxZDY5NjFkOTdkYjk2IGxlZ2FjeS10cnVuaworMTQ0NDUgYmYxNTAxY2Y1ZjA4MmQ5YjViZGM1YjZlNWM3MzUwMmYwOGIyODM4MCBsZWdhY3ktdHJ1bmsKKzE0NDQ2IGJlOTUwMGU2NDc3ZmQzMTYwODY1NWI3OWZiNTg0YTcyOWExMWU4ZjYgbGVnYWN5LXRydW5rCisxNDQ0NyAxOWRlNmQxOTRhY2U5ODM3Y2M2YTU1MzliMjI0YTQ1YmVlMmIyNTg4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ0OCBhYTA3YzQ3ZjZlZTg4MjgxMDQzNzNjYmViNTY1M2JjNjhhMWYxY2M3IGxlZ2FjeS10cnVuaworMTQ0NDkgYzVmYjY1MDZlZWM0MGUyOGEzNGVjNmZlNjM2YWMxZGVmMDcwNGU4MCBsZWdhY3ktdHJ1bmsKKzE0NDUwIGZjMGZjZWExNGJhMDcyM2U2ZGYyMmJiNjMzNjk0OTI0MzI1YzVlYTkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDUxIDg4NzhjMDk2ZmExOWU3MzlhZjYwNWFlNzVlNjZhMDAwYTlkNmRjNDUgbGVnYWN5LXRydW5rCisxNDQ1MiA3YzI1NWU3YTIxYzJjNTc0ODkxM2FkOGZjZTUxYmI2NzBhOTgyNTUzIGxlZ2FjeS10cnVuaworMTQ0NTMgMzY4NGQ1Yzc5MDNjM2VkZGU3NTg1NGViMmZkZTJjODc0ZTU2ZjkxNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTQgN2JlZDFmMGVjNjFhYzU2OGExZmI4YTBhMjJiMWJlOTEyMWI0N2E4MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTUgYzZmODRjZDFmZjcwNWEwZTU0MjU4YmQzYjM4OGFkZjJmMDI0NmQwMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTYgM2I2ZDhhZDI0NjhlMzVhMjdjYzBiN2QxMTNkOWNlZGYzZWUzNGMxYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTcgNGQ1ZDVjZmE4YTUzOTMxYjEzYTBlM2IyZjg3ZDM2MGZmN2M0ODE5NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTggZWI0ODNkOWEwZjYyY2YwMjg5NWQ5NDMzZjAzODY1NDNmZDNiYjRjOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTkgNDA4MGM3YTBmMWVkNmM5ZjlkMTcxMWFmYzY1MWFkNjNiZDRkMWNhOCBsZWdhY3ktdHJ1bmsKKzE0NDYwIDBjMGJmYWRmZjc3YWNhMzQ1MWFkZDQyZGNiZTk0MjY3NzIwY2MxOGMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDYxIGIyZDRiMmUwM2M5OTUzZmI3MDhhMTBmMDk3OTU3YTdjZmQxYTE1ZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDYyIDk0YjY0MjA3OTM5OGNhNjc2NTY4NGNkNWNjN2ZkYThiMTU0MzhkOTggbGVnYWN5LXRydW5rCisxNDQ2MyA3MThkMjJkYTAwMTdmNWUyNmQ4NWU4NjY2ZDg1YWVjYjc1ZDgyODlhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NCBlMjUxMmQ0ZmQ0NzA4MzFmZTc0MzU2NzQxNzE2ZTM2YTMzYTgyOGE0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NSA2ODM0NDNkOGRhM2I5ZDQzOWU1NGQ5YWM0NzEyZDRmZjhhNDNjNDk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NiBmZTc2MzJmYmQ0ZjUzNjliN2M4YTRiN2QyMmQ0NTE2M2U3ZTViYjhhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2NyA1OTRhNzZiYjlmZjAzMTU3OWY4NTZjMTY3ZmI3MGM2YzAxMDkyYzMzIGxlZ2FjeS10cnVuaworMTQ0NjggYTAzMTMwMDNjYjJkNTIwNjdkMGM2MGRjMGZjYWYyZmJhMDFmODVhNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjkgZGQwYWUxMGI3MjA2MGY1NzQ4Mjk4MzdmMmJlZDNhNDE4OTNmOTc1NSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzAgOWM1OWNiYTA0ZDg1OGFhNmE2N2U4NjlmZDEyZjg3MDBlMGE0YTNlMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzEgNTFjMjE3NDU0OTUzZjgyMzRhYzVmMzNmNWNhZTE5NTQxMzgzMjcxYyBsZWdhY3ktdHJ1bmsKKzE0NDcyIDNlNTJmM2RiZTNkY2Q5ZjM2Zjg3OGI4NTU0NjM5YjU5MDllMzYzNDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDczIGVjZGM3ODE0ODgxMTg5NzMzMmMxYWUwZmRiMjg0NmJjZWUzNDJhY2MgbGVnYWN5LXRydW5rCisxNDQ3NCAxODlkZWU3MGQzMmEwY2IwN2Q1OGRiYjExMWQwMTVjYzFhMTQyNDcxIGxlZ2FjeS10cnVuaworMTQ0NzUgYTA0Njk4M2NiNTc2MTJkOTM4YTcwZTk0YWIxOTg5ZjIwZGFmODA1YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzYgYmEyMTExNzQ4MDM4ZTAyODVmYjk2YzVkZjAxZmVjNDEwOGNlNDBhYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzcgMzI4N2NjZDBkZDAxMzNlZTc0ZWQzYTkzMTJkMDk1OTI3MTY4MTU1ZiBsZWdhY3ktdHJ1bmsKKzE0NDc4IGQyMjliYjc5MjY1OTAwMTAzYTlhMmU4ZmNkMDgzNDFjMjliNTI5MTUgbGVnYWN5LXRydW5rCisxNDQ3OSAxYjczMWVjZDllZDMyYmRjMjU4ZTU3ZWRjYjBhM2VhYWNkNzFjOTA5IGxlZ2FjeS10cnVuaworMTQ0ODAgMmM3MjU2ZTM5ODljZjliMDZmMjg3MjkxMGNmOTE2NGQ1NGU1NDcyNyBsZWdhY3ktdHJ1bmsKKzE0NDgxIDc5N2Q5OTZmN2M2ZGEwMDk0YmY3ZDRiOTFiMjEzMzdlZWYzOTU1MDEgbGVnYWN5LXRydW5rCisxNDQ4MiBiMGM0ZjI2MWU0NzAzMjYzNzU3M2MyYWNiOTVhZDZjMzBlMTUxYmE2IGxlZ2FjeS10cnVuaworMTQ0ODMgY2E1MzUzODY3YmUyMzMyMjBjYjBlYzdkNDMwZDM3Mzc1OTAxMmQ2MiBsZWdhY3ktdHJ1bmsKKzE0NDg0IDcyNjkyMTY3NDZkMDJmYWRkOTYzMDk2NGUwNjRhMzg0NjhlN2MzYTMgbGVnYWN5LXRydW5rCisxNDQ4NSA5MWNmYjZlNjhjYTQ3MTllYTNkMDliM2Y1ODRjNTg0NmYxZmNjNTAzIGxlZ2FjeS10cnVuaworMTQ0ODYgMzJmOTc1Y2I5ZjVmZjIyMDY1NmE0MjE2MzBkYmQ3NjQ4ZGI3NWMxYiBsZWdhY3ktdHJ1bmsKKzE0NDg3IGJmNmYxNzQ2YjEwYmEwZmZhMWE5YTBjN2U0YzI3Njc2ZDA5OGI0ZmIgbGVnYWN5LXRydW5rCisxNDQ4OCBlMTE5YzAyNTBiMjA5MTVkMzI2MzVlNTg1NGFmMDYzMTI5MjNkZDQ2IGxlZ2FjeS10cnVuaworMTQ0ODkgYzA0ZTFjNzBmMGYxMjZhMTJlNWExYWRjYjQyNmJlZTA5ZDhhODJlYiBsZWdhY3ktdHJ1bmsKKzE0NDkwIGUxMjNlNjVlZjI1NWI4NDY5YjJiMjhjMGY1MDFhN2M1ZTAwYmMzZWUgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ0OTEgMjUxNzU2OWFhMWRkNDFiOGVhMmUyM2FmODI1YjMxMDdmNGNjMDIyNCBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDQ5MiAxMDQ3MzEzY2ViNWJjOTgzMzQ5OWFlNDE4MDFjMmIzOGIyZjkwMjc2IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NDkzIDI1M2VjOTVmMzkxZTFjNWE5OWYyNjM0ZTI4NzE0MTkxYThkMjIzYmYgbGVnYWN5LXRydW5rCisxNDQ5NCBlNTY3ODBiNzQzNmE2YTU3NDI1OTYwZGVhOWJkMDBjN2EzYzRhYzUwIGxlZ2FjeS10cnVuaworMTQ0OTUgOGI3MGVhYWFkZjRiNDBkODYzNDcwYzMxMTgxM2I0MDljNDAzMThkMSBsZWdhY3ktdHJ1bmsKKzE0NDk2IGQxNWQ4ZjUxNDFhODg4ZmIxNjRhNGQzMzYwYjUwOGEzMDA0MmE1OTAgbGVnYWN5LXRydW5rCisxNDQ5NyA2Zjk3OTlhMTQ1ZTU4MmU0NjVlODg3OTQ1NjlmN2VlMTliMTQ2MmQ0IGxlZ2FjeS10cnVuaworMTQ0OTggZWMwNjJjN2MzOGE1OTgzNjcxM2EzNGNmMTBhYzliNDI5OWMxNDBhNSBsZWdhY3ktdHJ1bmsKKzE0NDk5IGI3MGRlZTcxNTM0YTZjYTgyMWI3YWJiYmY1MTA5YjcxNzVmYzM1MzUgbGVnYWN5LXRydW5rCisxNDUwMCAwY2RlNzJmNmVhY2ViMGJkNjkwYjU3OTRlMzZmYWQyNTFlZTE4NDMwIGxlZ2FjeS10cnVuaworMTQ1MDEgODliNTI4OTUzMTBjN2UyNDdiN2M1MzBiYmM2MmMxOTQ4OGE2ZWU3MiBsZWdhY3ktdHJ1bmsKKzE0NTAyIDkxOTcxZWIyMTUyN2ZhOTQxZTA4OThiOTg4Y2RmMDBiZGVhMWU4YjAgbGVnYWN5LXRydW5rCisxNDUwMyBlNjk1YjUyMjk1YTg2YTgxYjBkMmM2Nzk4ZWIyZjYxNTZkMjRmY2U0IGxlZ2FjeS10cnVuaworMTQ1MDQgNzllYTE5MDg1ZmI2YWI4YzgzYjc5ZWY2Y2YwZGZlZjc4ZDJkZGI3YiBsZWdhY3ktdHJ1bmsKKzE0NTA1IDE0NTE1MzlhMjdlY2Y0YWRlZTQ1ZDg3MmIzMmRlYTZlY2JkNDU3NWIgbGVnYWN5LXRydW5rCisxNDUwNiA3ODFmNDgyOTFhMjk2OTNmZTUwM2ZjNDJiYTMyYjgyYTJjYzkzMzlkIGxlZ2FjeS10cnVuaworMTQ1MDcgYmJiNzUxZjU1ZDA0OGViMDBmYTg0MzgzZTk2NTQxMTExZDBiNGMyMyBsZWdhY3ktdHJ1bmsKKzE0NTA4IDJkODc0MDY0N2U5OThjM2UwM2ZiYWFiOTMwZTRhYzUyYjA5NzY2MDcgbGVnYWN5LXRydW5rCisxNDUwOSA5ODZhODczNjNhNjY5MTJhM2ZmODMyNDQzN2EyMjVjNzBhNzRjYmI3IGxlZ2FjeS10cnVuaworMTQ1MTAgZTAwNTk0MzY2ZWM0Zjc0NDYzZTg3MThmOTMyM2MwMmM5ZWMxYWIzZCBsZWdhY3ktdHJ1bmsKKzE0NTExIDVlMWY0ZjdkNzlhNzU0MDAxYTM0OTRlZTYzZGRhYTk5ZmQxOWJiN2YgbGVnYWN5LXRydW5rCisxNDUxMiA0MWI4NWEyNmNlZWRhYTRlZmM3ZWYyZDVlMWU5ZDVhMTAzZjdkOTE0IGxlZ2FjeS10cnVuaworMTQ1MTMgY2EzNTBhNzE5ODg3MzNlZDc1N2VhZjE3OGQ3ZGU5NDg1MTY0MWRlZCBsZWdhY3ktdHJ1bmsKKzE0NTE0IDJmYTg5ZTY1N2E0ZWRkZWYzMTA3OTQ1NzY0MTJkM2YwYzM1OTMyZDAgbGVnYWN5LXRydW5rCisxNDUxNSAwNjllYTU3MzZmZjYwN2E4MWYzODIzNGI5NmNiNTA5ZTNiMmRkNDI0IGxlZ2FjeS10cnVuaworMTQ1MTYgMDYxMDRiY2YwNmE2NGZiMDgxOTA2NjJkNzcwNjliNDViZDY4YTIwNyBsZWdhY3ktdHJ1bmsKKzE0NTE3IGQ3ZTY2ZWYzNDVkMDdiOWNjYmE5Y2M0MzRkNTY3NGNkN2ZhZDBjYjggbGVnYWN5LXRydW5rCisxNDUxOCAzMmM1OWUyODg5YzRjYzRhYTAxODZjMDI2YzM2NjcxNTBhZGJkYTExIGxlZ2FjeS10cnVuaworMTQ1MTkgZDdlY2E1YjA5NjBhYmIwMjFiNDgxZWUxMmE1Y2EzOTg3OThlNzcwMiBsZWdhY3ktdHJ1bmsKKzE0NTIwIDJmZTk1NjhiZGVmMmI5MWIxYjYwNzgxNmM5OTEyZDJmNzIxOTA5NDcgbGVnYWN5LXRydW5rCisxNDUyMSBjOTBhYzY5ODIxNGRiNzMwYjU0N2M1ZmRiZTU1YjViMTVhODU4MGQzIGxlZ2FjeS10cnVuaworMTQ1MjIgNDQ0Yjc3Y2VlYmU2OTMxMGUyY2U3YzI2ZWRhYzIzYjk5ZDZhYzliOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjMgYjkxZDg0OGM5YTFhZDRlYjQzZGE2ZTVkY2U2N2Q4MjJmNGJmYzRjZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjQgNzE0MjMyMDlkN2ZjMmM1MWY3ZTgxMGFmM2YzYTA3NzU3NDUwYWJmZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjUgN2VkMTA0YzQwZGIzMzY1OTllMjVmMDU4NjFkZDU0ODgzYTNjMzVhNSBsZWdhY3ktdHJ1bmsKKzE0NTI2IGNhYjA3MWU5MmYzMjFmNTJhYzZiMzJjOTk3MTY3OWJjYzRhN2E1YmIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI3IDUyYTNiNDY0NTc4ZjJlODcyMzRmMDdkZDRhNDY2MTc4ZTZjZTBhYjggbGVnYWN5LXRydW5rCisxNDUyOCAyODYzMDNmMDA1NDZiY2VmNTA3NzY3Yjk5NmRhYjg0NGMwYmUxY2ZkIGxlZ2FjeS10cnVuaworMTQ1MjkgYzI3ZDNlOGM0NWM0NjY2N2NjYWQ5OGQ1MmJjZDEzNWNhODhjM2NjYSBsZWdhY3ktdHJ1bmsKKzE0NTMwIDVkMDg3OWUxZmYzN2M1N2VhMDIyYzNmZWFjNGQzZTUzOGI3M2Y4NTYgbGVnYWN5LXRydW5rCisxNDUzMSAzZDczZmZjMTA1ZDBhNDhjOThkY2RiYTlmZTUwZmEyYzRlZDNlY2M3IGxlZ2FjeS10cnVuaworMTQ1MzIgYTdkNjA5ZWE5MGNjNjgyNjY0MGViYzU3MTRmZjJjZWM1M2ZkZmM0NSBsZWdhY3ktdHJ1bmsKKzE0NTMzIGQyNzY4NGFiMjE1YTZhNWFjYjQwNzQ3NDk5ZWE0OWQyZDBmMjgwMWIgbGVnYWN5LXRydW5rCisxNDUzNCBlZmQ2MzE1YWU2NzhkNjJlNTU5NzQ1M2FmMmJlYWZiMjc1MTJkYjFhIGxlZ2FjeS10cnVuaworMTQ1MzUgZGM2NWM1ZjZhZDdjMTRjYTQ0NjlmNmVkMjhmZjEzNGNiMDllYzA4NyBsZWdhY3ktdHJ1bmsKKzE0NTM2IGQyNGFkNTUwMzgzMWE3ZDk4MTk1MDc5YTAyNjY1NDBkZTZiODhjOTUgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ1MzcgOWJlZDMzNTk5YzMzOWMxNWEyNmYxMGIzOWUwMzgzZjkyYzIyY2M1NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDUzOCA5YzkzZjEwZGNkNjk2OGNkOTA0Y2M2NGRkYjljMzU5YmM5YmY5OTk5IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NTM5IDhlZTc1OWQ3OTk2NDZlZDExNDIyZmVlMWZkMjA3MzdiMmVlZjM2NWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTQwIDBjNDcyOWUzOGMzZGI4ZjQ4ZDBkZGU4MjUyZDVjOWIyOWYyZjlhMDAgbGVnYWN5LXRydW5rCisxNDU0MSA1NGNmM2JiM2I4YjdjZjRjNzEwMWMxNzIzNjkxNGU5ODQ0Y2ZkZGY4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MiAxMGZiZmQwN2YzODk0MWIzZGIzYzA2ZTVkMzJlZGMwODM1MjU2YWU1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MyBhMzhmYmNiN2QzMzU2ODBmNmE1OTFhYWQxNGViMTMyOWM1YmVlOTBkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0NCBlMzk5YWJjYzVkZTYzMGVhODU1Y2RiNjMwNzg1MzExYWEwYjZjMzc4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0NSA3NThhODdmNGNiMmM5ZThkOGI2Nzk0ODNlODM4OWJhNDY1N2RhYmViIGxlZ2FjeS10cnVuaworMTQ1NDYgMzliYjAxNzU1MDc5MDk3MjNjMjQzMDhhYjY3ZDM2ZjE5YmI3MTEwNyBsZWdhY3ktdHJ1bmsKKzE0NTQ3IDI3MGExMTQ4OGM2YzVjM2QyZWM5OGU1MTU1ZTYxYzM0M2NkZGQ2ZWIgbGVnYWN5LXRydW5rCisxNDU0OCA4MWYxMDY5ZTE1NTg2OTkzOWM3M2QxMjM5NmMzNWMxMWFkM2RiZjAwIGxlZ2FjeS10cnVuaworMTQ1NDkgYTQ1NzBmNDA5ODcxMGY0ZmQ3ZWMzMTFiZGNlYTg4ZWM0MGYwOTk1NSBsZWdhY3ktdHJ1bmsKKzE0NTUwIDFhNDliNjE0NGYwZGUzMjViNTk3OGQxMmM2NDgzZTJlMDNjZDAwYzYgbGVnYWN5LXRydW5rCisxNDU1MSA5NDMyZDhiMTVjOTcxNGZkMjc4NGM3MGM3MWNhODZiMjRmOTM5NmQxIGxlZ2FjeS10cnVuaworMTQ1NTIgZTgyYTk2MzMwNzhiYzkyNTVmOGMzZDU1MjU0ZWZhNDc2ZDI5NWYyOCBsZWdhY3ktdHJ1bmsKKzE0NTUzIDAwMTY2MzNmYmQzMjBhMWM1ODY3ZDM1OTJhZDY0NmFhMTU0NTAwZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU0IDIzMTA4Y2NlMTY5YjQ1ZGZiYjNlZGFjOTI2NWM3YmUwMjY5OGQzYjQgbGVnYWN5LXRydW5rCisxNDU1NSBlZjhiMDYyYjU3OTgwNDRmZjMzMzRmYWRkMTBhNzU1MDg4M2NkNWVhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1NiA2MTBkN2Q2NDI5MTdlNWZjYmQxM2I2NDY3OWNlMDI0N2M3NzU1MWIyIGxlZ2FjeS10cnVuaworMTQ1NTcgNzg0MmVjZjViNDI0ODlmMmIyMzM4ZTJmZjM4NmI5ZTFjNzUwMDBjOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTggY2ZjZmFhMzk1MGQ2NDJjOWEyMGIzMjhhNDNkNjNmNjgzODA2YTNlMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTkgNThkMWU3NzkxOTgwNWI4N2U3ZTAxYTY0MGZiMDYzZDhiZDIxNmRjNiBsZWdhY3ktdHJ1bmsKKzE0NTYwIGNkNTdmNzc2YzFkZjg1MTVmNzc4YTAxNTE3YmI3NGI5OTNjMzBkYTkgbGVnYWN5LXRydW5rCisxNDU2MSAyODAyZmI1MmU5OWJjNzlhNjViZDAzNGYxZTY3MzEwOGJhOWEwZjk2IGxlZ2FjeS10cnVuaworMTQ1NjIgMDE3ZTU5MmMwZmQyYzNlODUzYzc0MzkwODE3ZTMxNjc2MzU5NjViZCBsZWdhY3ktdHJ1bmsKKzE0NTYzIDQ2NzliY2VmN2E0ZjY0NWFiMzllZjhiNWIxODIxM2FkZTE1MGUwNzAgbGVnYWN5LXRydW5rCisxNDU2NCA3MjNlZmNkY2NlMWJkYTVkMDZiMmJhZmM5MjNiOTVhMDU2OTM0M2I3IGxlZ2FjeS10cnVuaworMTQ1NjUgNjJlYmU4YzcxNTY1OWIxZmQyNTk5YTlkNmMyZDMwN2RjNzI3YmZjZiBsZWdhY3ktdHJ1bmsKKzE0NTY2IDAxZDViN2QxMWZjMTI4ZTJjZTE1YjAyMzU4MjFiNDMxZWM4N2E4ZjkgbGVnYWN5LXRydW5rCisxNDU2NyA2OTMyZTE4YWZmOThhZDdmMTZmMDlkOTNkYjQ3MGNmZmFhYmM4OTUzIGxlZ2FjeS10cnVuaworMTQ1NjggZjg1MThmMDYwYmVkZjhmOGY1Y2ZlZWViZmM2YThjMDk2ZGFlMDM1ZCBsZWdhY3ktdHJ1bmsKKzE0NTY5IGE0MGMyZmVjZDUyNjlmM2FlODI2MTM4ODNlZGFiNjI4YWFiMzA4NDIgbGVnYWN5LXRydW5rCisxNDU3MCAwYTRiYWNjYmU5ZmU5MzRkMDFhYTNiZTA4NWI0NDM3MWE0YzdkYmMwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3MSA0OWIxMDliNDUwZGE3ZDc2YTkxMzIwMTFiMjAwNzFjZDU1NDk4Yzk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3MiBhYjFlZjFhYTQwMmVhNTIzNmJlMjVhZjQwNWI3OTExNjRhYmM3YzUwIGxlZ2FjeS10cnVuaworMTQ1NzMgYjNjYTNjYWEzNzRjNTE4YmI1OGRjNWI4OGRjNGU2YTg3MTFlZGRlNSBsZWdhY3ktdHJ1bmsKKzE0NTc0IDExYWUxZWZlYzg3MWEzN2EwY2Y3ZTU5YzU2OTNkZTA3MGIzNjI4ZDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc1IGQ3NGUxMmQ0NjU4MGQzN2IxNzU1OTI1ZTVjZjQyZjU5NDYwYzY0ZGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc2IDAwYTllZjc0NDdiYWE1MzkzMjU5ZjhmNzNkN2E3NTIzMjNhYmI3ZDIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc3IDg1NWM3OGY1YjVkZGQ0ZmM1M2FmNmIyOGE4NWI1Y2FjZTllN2ZhZTMgbGVnYWN5LXRydW5rCisxNDU3OCA5OTQ4ZmQ1MzJkM2I0Y2IyYTg0MmRmYTc2ZWI5ZWY5ZGY4N2Y5NjgwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3OSBiOTc1YTA1NmRlYjY2NjVjN2Q5YjgzMTVjNGZiZTY3MjE0OGViNWFkIGxlZ2FjeS10cnVuaworMTQ1ODAgMGVjYTU2N2U1MzJjMjg0YjZmNWQzYWZjZTExMWNkZTY5NjkwNTEyMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1ODEgZmU0ODVhNWQwNDNmYzdiYjdmNWI1NDc5MTQ3YjFkNGJiODE1NDRmMiBsZWdhY3ktdHJ1bmsKKzE0NTgyIGMwZjE4ZTExZjRlZjMyOTIwZDg1YmRhZWU3OGFmNzM3MDY2OGViMjQgbGVnYWN5LXRydW5rCisxNDU4MyBjMTY3MTFmZGQ5NzI0NDMzYzdjOTkwMTNiZjRlMzIyNDBhYzNkZDIwIGxlZ2FjeS10cnVuaworMTQ1ODQgMWM4YTlmYWEzNTAxZWM0NzI5MWZmYjVmYzhlMjY2NTMxYzkxMmI0YiBsZWdhY3ktdHJ1bmsKKzE0NTg1IGM5ZDg3YTdhNzBiMGEyOTMyNDkzMzQ1YmIzYTMzYTVhYjEwMTEzNzAgbGVnYWN5LXRydW5rCisxNDU4NiBhNmU1ZjAyNzRlNTE3MmM1ZDA4ZTMyYTIzMmU2NWVlN2FjODVhMWQwIGxlZ2FjeS10cnVuaworMTQ1ODcgNzkyMmQwODQyNmNhYWU3YTNiN2QxODU1YzAxMzU1NzBlOTY3MzNkZiBsZWdhY3ktdHJ1bmsKKzE0NTg4IGQxMzU5ODMxZTVmMjY0YzlhYjM4ODg5YTMyNTZiZmIzZGQyNjg5OWUgbGVnYWN5LXRydW5rCisxNDU4OSA1YjAzYzUyNzgzMTdkNjQ5YTQwYjRhZDQ5ODBkN2ZkZmQ2NTJjOTBlIGxlZ2FjeS10cnVuaworMTQ1OTAgMTVjYmI1N2NhNzQ3MjU3ZGUwZmI1YzA0ZDA2OTkxYTQ5ZDA1MThkMCBsZWdhY3ktdHJ1bmsKKzE0NTkxIGE4NTFlZjMyNmQ5MzJmNzE0NzhkOGRhNmMyZDJjZGNkMTJiNjRkOTIgbGVnYWN5LXRydW5rCisxNDU5MiA3Y2I0OTFlMzk5ZTYxOWY0ZTdmNTU5NWFjNDBkZjM3N2E3Nzc2ZmFhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU5MyAyOWM1YzU0MTVkYTcxZGVjYmViY2Q4MjViMzA4YTNhOTMwNmRjNTM0IGxlZ2FjeS10cnVuaworMTQ1OTQgZjgyYjkyM2E3YTk2YzJhZjVkNDBkZjM5YmFkNGIxMDUwNWU4ZDVkZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTUgY2UyNjk4ZDhkZmViZjZkODg1MmE0NjBkNTJiNWE0NjM0NTRmOTYyZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTYgMDZmYjJkZDM4ZDdkMjk5OTBhY2I3MmNmMjY3ODNhM2NmMThiNGUwYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTcgY2ZlYzExYjRhOGE3MmNiZThhNzJmNzA3YTMwMGZkODMwYTZmOTE5MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTggYWEwZDBiMWYxYmUzZTExYjYyYTE5MDJkY2Q3NDFjYjViMmNhMzA1NyBsZWdhY3ktdHJ1bmsKKzE0NTk5IDhjYzQ0MjhjN2JhZDkxZTY0ZmQ5YTI0ZThkNTAyZmFiYmU1NTFmM2IgbGVnYWN5LXRydW5rCisxNDYwMCBkMDk3YmM1YWE3ZjM0NDQ0ZTVmNGU0OTk2ZTJkYmI5YTIwMjA2OGJjIGxlZ2FjeS10cnVuaworMTQ2MDEgNGI4YmM5YWI4MTc1NTU2ZjllODc5MzhlOGNkYmI3OWM2ZWUzN2M0MiBsZWdhY3ktdHJ1bmsKKzE0NjAyIDJhNjI4MDY3OTY5YjkzY2E1NjA0YTNiN2ZmMmY0MjkzMmFmOWRmY2YgbGVnYWN5LXRydW5rCisxNDYwMyBhNDY5YWE4YjMzMmE1ODQ2MzU1NzcxZWQxZTg4OWE5OWEwNjE2YmZjIGxlZ2FjeS10cnVuaworMTQ2MDQgNzliNmE2YTg4MmQ5ZThkNTcxMzcwOTFkYWFhZDcwNmZmYWEzZWE3OCBsZWdhY3ktdHJ1bmsKKzE0NjA1IGJkYjVmNmE1MjRiNWUzZjY0MTc5MTk3OTg4M2MyNWRiZTkwMTc1NDggbGVnYWN5LXRydW5rCisxNDYwNiA5ZDhmNDdmODQ0N2Y5NzYyMDEzOGQxNGZhY2Y2ZGEyZDQ3ZGJlMDMxIGxlZ2FjeS10cnVuaworMTQ2MDcgMWI1NGIyMTM0NmQyNGZhMjQ2OTBhNzYyY2VmMWI3Y2JhMjhkYjMwZiBsZWdhY3ktdHJ1bmsKKzE0NjA4IGFlZjVhN2M2MjI5MWViNjllZTQzOGU4N2MxYmFhMzJjMjRiZGYyNTcgbGVnYWN5LXRydW5rCisxNDYwOSAyNWFkYzVjOGRkNjgwMDRlM2ZmMTc4MGQ2MDAzYzBhMWE5MTkyMWNlIGxlZ2FjeS10cnVuaworMTQ2MTAgNjhlMGVmMDUyODE1MDU4ZjAyMjU0NzhiNDkzOWQyZTk2OWVkMjgwOSBsZWdhY3ktdHJ1bmsKKzE0NjExIDdiZDk3YzNkZDQzMmZkOTQ1OThkOGNjZGM1ZGQzMjRmNjE2MGY5YTggbGVnYWN5LXRydW5rCisxNDYxMiBjOTQ1NzJhNTA5OTUyMzE4ZWExMzg4MzE0MDZhOGQ1OGRjNGJmZGI0IGxlZ2FjeS10cnVuaworMTQ2MTMgYzBkMzZmOTE2YWZkOGNhNzAxZGQ1NjU4OGQ2NDFmOTJjYWNkYWU0MSBsZWdhY3ktdHJ1bmsKKzE0NjE0IGVmOThlZTZhZWI0MmFlMDFlNGNjMGY2OGY5NjUzYmUxMWFhMzcyZjAgbGVnYWN5LXRydW5rCisxNDYxNSAwNDU2YThjMmViZjdjMmE5NzBmMTY3MzYxNjJiYjMxNGJkMTkwMjBhIGxlZ2FjeS10cnVuaworMTQ2MTYgNzNkZmJlZTE1MDI3MWYzYTdhMGJkZjgxOTIzZjc2OWNiYTYwODUxNyBsZWdhY3ktdHJ1bmsKKzE0NjE3IGRlODQwNDU3M2ZlNTEyYzdjZGE2OWNjNjA0Y2M4YzkzYzE1MTExMjQgbGVnYWN5LXRydW5rCisxNDYxOCBmNmQxZDBmZGMxYzdjNzIwMWI0OTBhYzc1OTYwNzg0MDc3MzdhYzY3IGxlZ2FjeS10cnVuaworMTQ2MTkgNDIxYjE2MjBmNTgyZjlhN2I4M2ZjM2I5MGNhYThlZjk0OWZiMzI1NCBsZWdhY3ktdHJ1bmsKKzE0NjIwIDgwMjM3MGE2MGVmN2UzZDcxZjRhYTdkYmJjYjRmZTZiOTY3NThhNGYgbGVnYWN5LXRydW5rCisxNDYyMSA3MzRmM2MwN2E2YmI5ZjNkNWNjMjc5MjJlZDA3MmM2OTIwZTY5MDFiIGxlZ2FjeS10cnVuaworMTQ2MjIgMWE1OGU2ZmMzYTk1NGRmNzlmODVmMzhkMTMwMzM4MDEyNDg1NTk1NSBsZWdhY3ktdHJ1bmsKKzE0NjIzIDgyNjY5MGJhMWFlNjliOGI1ODRlNGY2OTQ3ZDZmZWRjNTVlMzNlMjIgbGVnYWN5LXRydW5rCisxNDYyNCAyYTQwZTljYWU4NTlkY2EwNDg4ZmRjZGU4MTY4YzhmNTA5ODVjMjJkIGxlZ2FjeS10cnVuaworMTQ2MjUgZDA0MDQ3ODBmMDNiZjRlMmYyYTMyMDhjZWVhNmFhYWRiMzRkNjJiMiBsZWdhY3ktdHJ1bmsKKzE0NjI2IDVlNDhkODNjMGZjZTE3MjA0MTliYWVlNjM3YTNkMDQ3NzMzNTkwZDYgbGVnYWN5LXRydW5rCisxNDYyNyBhMzk5MmE3ODllMmU3YmIxNTdlN2IyOThhNTdlODc4YTcxZWM0NTc5IGxlZ2FjeS10cnVuaworMTQ2MjggNWIzM2ZjYTAyYjc4NWJiNmRiNzAxNWMxMTU5MTcwMmQ1OGQ2MDU0ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2MjkgYWRkZWExMTU3YWE3ZjkwNzI5OGJhYjllOTk3MDUyMjRiMjY1ZGNlMSBsZWdhY3ktdHJ1bmsKKzE0NjMwIGUxMDUxNWU3ZDM1NmNjYmE3ZDQ3NDE2NGMxN2E0ZjUzODUxODYzNDMgbGVnYWN5LXRydW5rCisxNDYzMSBmOWRiMzY1NGExZmQwODc2NmEwNTZlMzYwMzcwZWE1ZjljN2UwMGFkIGxlZ2FjeS10cnVuaworMTQ2MzIgMzk4YTQ1OTllZWUzM2NlOWI3MzRjM2NlOWE4NDkzNDFmYzYzYmNkYiBsZWdhY3ktdHJ1bmsKKzE0NjM0IDZlM2M4MWJkODI5MWVkZWE3ZjdmNGQ3NjA0NTRlZGU1MjY1NDJlYmMgbGVnYWN5LXRydW5rCisxNDYzNSAyM2ZkN2QxMDA2NGViMTYyMWZjZWNiZmEwMmYyYjAxNWRhOWM3NmRlIGxlZ2FjeS10cnVuaworMTQ2MzYgZDQ2NjJkMzgxNzQ4YWM2Y2E2YjU1MGFlMzEyNjlmNTFkZDczNWNhMyBsZWdhY3ktdHJ1bmsKKzE0NjM3IGY5MTQxYmViZWQ0OGY0ZTU5YTExZGIxMmNlNjBjYTU0NWJhMGUyNWEgbGVnYWN5LXRydW5rCisxNDYzOCAzZTVmYmVmOWIxZjUxY2E2MTRhZWM3M2UzMzQyY2ZkYzdhYjVhYjk4IGxlZ2FjeS10cnVuaworMTQ2MzkgMjRjMTg3YjkyNzczODQ4NmFmMGFiNDRlMDZkZDAyM2ZkMWM3OTcxMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2NDAgNzQxMDY5MDkyODMxOWJkODEyZDZjMjBiMjQ2YjQ3M2I4NDk1OGU5OCBsZWdhY3ktdHJ1bmsKKzE0NjQxIDlkNTNmYzgwNDNiYTc5ZjU0YTI5NjAxYjQ0MmQ2ZmQxMmU2NTIwNzcgbGVnYWN5LXRydW5rCisxNDY0MiBiZTk4ZTA1NWUzOWQ5OTE0NTdkZDY3Yzg4OGZiYWVhNDUxOWE0OTYwIGxlZ2FjeS10cnVuaworMTQ2NDMgMjQxOTljMWI5MTgyYTM2Y2M3OTNjMjY0NDVlYTBiZWU2M2JlOWMwNyBsZWdhY3ktdHJ1bmsKKzE0NjQ0IDQ0MTJjN2EzMjQ5N2Y5MGMyOTcxYjJkMWQwYTFhMGM3NWVlMTBhYWUgbGVnYWN5LXRydW5rCisxNDY0NSA5ZjI2MWU5NGIyYjI1YjA0MWRiZmZhM2ViMmU1MzUyZjc0NDE1NTgxIGxlZ2FjeS10cnVuaworMTQ2NDYgNTMwNWY5YjAxZmM3NTQ1NzgwMmIxNzE2MjdmNGY5OGRiZTZmOTE3NCBsZWdhY3ktdHJ1bmsKKzE0NjQ3IDUwNzgzM2IxODIxM2I3MGI3YzIyM2ViOTY4NjM3ZDUyYWE1NTU5NzUgbGVnYWN5LXRydW5rCisxNDY0OCAxM2JjNjhmYWViNjU1YjY2ZGI2NTNkNDYxZGU4MGZjNzBhMTdmNjExIGxlZ2FjeS10cnVuaworMTQ2NDkgNzRiNzIxM2ZiNjA5MjBhMDFlNDIxYzk0NTBjZTZlNDY5NmVmNDBmYiBsZWdhY3ktdHJ1bmsKKzE0NjUwIGY3NmJmNjFjYjE5YzRhNzgzYWZhM2Y3ODk4NzBhYTVlOTE1NjcxNTQgbGVnYWN5LXRydW5rCisxNDY1MSA1NzQyODNkYjJiM2RkZGVmMzY5ZGZkMDM2OWNlOGE4OGUyYjAyZDI0IGxlZ2FjeS10cnVuaworMTQ2NTIgZDBlMDZlZmIzMTY1MWYwZTRjZGNiNDNmNjA3ODc3NTU4MTlhMGFhMyBsZWdhY3ktdHJ1bmsKKzE0NjUzIDhiZGMyNWQyMjkyNWMyMWExMzZjNTMzMTAxNzhlOTEzZGJlMDY2OTQgbGVnYWN5LXRydW5rCisxNDY1NCAyODAwM2FmYTFhMmYwOTFmMzJmZmYzM2FiYjE3NWEyZjJiMjkwODUzIGxlZ2FjeS10cnVuaworMTQ2NTUgODc2ZjM1ODI4ZTg3MGEyZjJhNzI4ODZmMzEyNTlmMmE5ZGQ4ZDI0ZiBsZWdhY3ktdHJ1bmsKKzE0NjU2IDUxMzM1NGQ4N2E4NWU3N2UzMTEzOTdlZThmOTA0NmIzNTk5Y2YwZmQgbGVnYWN5LXRydW5rCisxNDY1NyA4Yjg4ZTFiYzBlMWI0YjBjODJlYzQyM2FmYWM0ZTMxZGNlZWNiMGQ2IGxlZ2FjeS10cnVuaworMTQ2NTggM2M2MjBmNjVlYWE1YjVlYjY1YjRlNmZjNjFlMTI5MWYzZDdkNmJjMSBsZWdhY3ktdHJ1bmsKKzE0NjU5IDMwZDkyNDhlMTFiYmIyMzFmNzM4NzQzZjNjMmQxZTU1YjIwNDQ5MTEgbGVnYWN5LXRydW5rCisxNDY2MCBhOWI1YTMxZmY4Y2IxOTEzNzA3NWY5M2FhN2ZhOWI1NmJmZjJiNWE1IGxlZ2FjeS10cnVuaworMTQ2NjEgZDdhNGE1YWUyZGFlYzQ3ZDY3NWYyNjZjMzY2MjZkYjM4OTAwOTRmMCBsZWdhY3ktdHJ1bmsKKzE0NjYyIGExMzI5NGFlZjAyZWE0ZmViMzRiNTZlOGY4Zjg4NTVlZTAxMDQ1YzcgbGVnYWN5LXRydW5rCisxNDY2MyA0YzdiYzg4NWY0MjBhZmE1OGE2NjZmOTQxNmJhMjQwMjcxN2JiNTkxIGxlZ2FjeS10cnVuaworMTQ2NjQgZWZiM2E0NWM2NmYzMWFjODlhODRkN2JjNDc5MzM0YWQ4ZWRjOTI0ZiBsZWdhY3ktdHJ1bmsKKzE0NjY1IDg4MjI1ZGYzNWVmYmFjNDZiYjViYzE3NjVmZGMyOGY3NDE5NDc3Y2YgbGVnYWN5LXRydW5rCisxNDY2NiAzMzAzYTViYWM2ZGRkNDIwMTMzODAxZTY5NWM0Y2NiYTgwMWYzYzAwIGxlZ2FjeS10cnVuaworMTQ2NjcgMGZkYWMxZjU0ZWM4MTAzNTExNWVmNmZkNzdjMDA0YTdjNWQwNmVmZiBsZWdhY3ktdHJ1bmsKKzE0NjY4IDkzZGFjNDA1MzE4OWMwZjU1MGJmNTY5YTZmODJmOTZkNzI2MTUwMTMgbGVnYWN5LXRydW5rCisxNDY2OSBlZTY0OTJhNWZkZWU2NmE4MzQyMTViMTZhYmM4ODYyOTU1MTVkYmRiIGxlZ2FjeS10cnVuaworMTQ2NzAgZjEwNDI1MWI2ZjhmMzdlZjVmYjAwMTE0OGJlZTYxNzcxM2QzZjA5MiBsZWdhY3ktdHJ1bmsKKzE0NjcxIDgxNzAyYTczNTRlY2I1MGNlMDQ2MzM0ZGQwOWQ4YmJlOWRlZDVmOGMgbGVnYWN5LXRydW5rCisxNDY3MiAxNzg5ZmFlNWYwNzQxYTAzYzlkNDU2YjRlM2MzNmQ0NjczZjZjNjc0IGxlZ2FjeS10cnVuaworMTQ2NzMgYjVlODEyNzFjNGM4YmJjYzVhZjU2YzVmNTI5NWY2ZTk5MmMzMThlZiBsZWdhY3ktdHJ1bmsKKzE0Njc0IDRiOGIyZTI4YmUzNDkyNTk4ZmM5MWYxZDlhYWJkZWZmNTQ1YmRjNzkgbGVnYWN5LXRydW5rCisxNDY3NSA5NmZhNDZkMzQ4OThhY2RkN2JjNmFmYWEzYzE5OTExM2U2MzNlZjBiIGxlZ2FjeS10cnVuaworMTQ2NzYgMzI2MjdkY2FmYWJmZjcyZjUzYzU3NjRiZjk0NGQ2MDc0NDJiYmE4MCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2NzcgMjNkYzg5YWQwOTk2ZTg5NTYxYjQwZTM4NWEwM2M1OTNmMWJkNTRmOSBsZWdhY3ktdHJ1bmsKKzE0Njc4IDM4MzEwZWIwNjU5ZTNhNGM0MTczNWM4ZmQ5MzM3NGQ5OTlmMjI1MjYgbGVnYWN5LXRydW5rCisxNDY3OSBmOTRkMTBiNmQwZjRkMTMzNjZkNmM3ZWZjMjBjNmIzZTc4MTFiNzE5IGxlZ2FjeS10cnVuaworMTQ2ODAgYzk0MjQ3YjVjMzU1NTc4ZjQ2MjZkM2Y2N2I5NWQ5ZTkwMTkzMmU3MSBsZWdhY3ktdHJ1bmsKKzE0NjgxIDg2NTFmMmRhN2M0Yzg3MDFlNWQ5MjkzZjRiNjViOWM1ZmI3NWY5ZDkgbGVnYWN5LXRydW5rCisxNDY4MiBlMzYyZjMyNjA0OGNhMmQxZDkyZjExMTM0MzhiZTk2MWI5ZjNmMmVkIGxlZ2FjeS10cnVuaworMTQ2ODMgZDUwZmEzNjcwYjY2YTE3ZjU2MzE1OWYyMGNkNTk1OWI5NGRjZmVkMyBsZWdhY3ktdHJ1bmsKKzE0Njg0IDE0OGRiNjMyMjE2MWZlMjg0OTZhNDA2NmE5ZjcxYzZkYWQzZjdjZmQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg1IDAxZmE1Y2E5ODgxM2I0NTVjODBjMDU4ZjBhODlmOTMxNmFjYjZmNTkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg2IDc1ZDZjN2MzZWM1NTAwZTQ2YTMxYWU1MzkxZDE1NmNmZGY2ODMzZGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg3IDc2MTBlZWQzZTAzMzI4M2ZmY2E5YWM1MTVkMzM4N2ViODliODk5YzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njg4IGY3OGY0NzcyNTY4ZWM2MWNhZjFjZTE5NDZmMzFmMThkMzZhYmNjYmMgbGVnYWN5LXRydW5rCisxNDY4OSA3NGQ5N2Q3OTVjNGVlNzNjZDg3NzM5NDE2NDMzNWQ0NTMwYmZlZWJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5MCAzZjU2Y2RhM2QyZmM0MTcxMzhhYTBlMzRmYjA1N2ViZDUzY2U0ZGZjIGxlZ2FjeS10cnVuaworMTQ2OTEgYzc0NTg5MjNmNmEyZDMzMDM0NWQxMTA5ZWFjMmFkOTg4M2VmZTU0MSBsZWdhY3ktdHJ1bmsKKzE0NjkzIGYyN2NjMTczNTE3ZTM0MmMzMTI3ZjIwMDdkZjM5ZjhjOTcwOThkMTAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk0IDBmNmVhYjAzZjI4ODAxYjYzMTRmNDlhOWIxYmViOGYxOWFmNTJhYWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk1IDM2NmMxZTk4ZjcwNzhiZjgwYzQxYzY1YTVlMDUxMWFkNDZiZGU4MDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk2IDBhNzA2MDcyZDUwYWYwZjZjZjc5OTE4MjIxYTQ2YTFjYmJmNmY1MjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk3IDFjOTM1Y2EzNzg1YzhkODA1ODAyNDY4ZjNlMzAyODlmYmI3ZDdiYWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk4IDQzOGE0NDBiYjA4NWU1ZTk1MmM5ZjUxM2FjMTAxYWYzZGEyNDk2YWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njk5IDNmODVjNGI5OWQzMzIyMDViNTVkYzM3NzgyOWI4NTQ4NDU2N2ZjOWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAwIGZhZjBjOWU5YjkyZmViMzkzZWFlMTVjMmE2M2RhNGNlNjE5NTJhYTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAxIGYyMzg2NGU0YWQyY2M1NTEyNGMxY2RhMGNjODUyYjdhMzgxYzk0N2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAyIGU1N2NlNGRmNTcwN2E3MmZhNTIyMTExMDUxNjkxNDY2MGUwMjcxOGYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzAzIDRmYmY2OTYyMDg3ZDU4ZjNiMTBkOThjZmEyY2NiNWU3Zjc4ZWVkYjUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA0IGJkYWI5YzU1ZjE2ODI5N2VjZDA4ZDJmNmQ2YTVmMzVlMDI1YzBiMzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA1IGEzM2YyYTNkYjg5MjdlYjI1NDIyZWEyNmUyZTlkM2VmMmM2N2RkMmMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA2IDJlYWFlZDc1ODlhZTVlMGQ5Njk5YmZjMjMwNWYwYThhN2E2ZDU2MzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA3IDNhZjNiMWViNjdmZTE0YzFhOTAwMGZmNGRjYWE0OGEyODM5NTRkMjcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA4IDI2MTJiOTZiOTlhYzQ0ZmJmNzA0M2UyMTY2MzA5YzhhMjhmYTA2NWEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzA5IDI4YzhjZTY2NWIwMzIwZGU5N2JhMzNhZDViMzczNWM3NjQyMTVhNWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzEwIGI1OGYyZjBjZDU1YjNlNDI4MTliNmMwZDRkMjkyNmY2MGM0OTIwNDYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzExIDk2MzQ4YmViOTM4NDM4OWZiZTdmMmQ5MDVkNWIzYmJhMjYzMzJiZmYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzEyIDE2OWFkZDZhNGRjMWIwYTIyOTYzMTk0ZGEzNmE5MTg0MGNkNzU2OTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzEzIDUwMDBlYWYwNThkYjc4Y2Q3ODQyNmJjMjJhNjYwOWFmNmYwZDQ4ZjcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzE0IDcwM2RhN2U5NGIyMTY1ZDI1ODk3ODYzYWM0ODRjNjIxZGNlOGY4NGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzE1IGQ3Yjg3ZjBmZjBkMmE3ZjcxZmNhNjY0NWIwMjJkMDQ2YWFkODI0NWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzE2IDlkNzM1NjM5NDI5ZDEzYWZjYjlhZGNjMDQwMTBkNGYxYmRkNzI1ZjQgbGVnYWN5LXRydW5rCisxNDcxNyBlMGZiMDRkMWJkOTM0YjkwYjM4YTYwYjVmZmEwZWU0ODBmM2I5Y2E5IGxlZ2FjeS10cnVuaworMTQ3MTggNzRmYjYwMmI3NmMyZmZiMWRlOTM3NWJjZTRhMzJiOGRiOTIyYWYwNiBsZWdhY3ktdHJ1bmsKKzE0NzE5IDEyN2Y3MGY1OWIwMjY2NDNhMjMyYjg5ZTA1NDVjMjA0MjljM2M2ZmQgbGVnYWN5LXRydW5rCisxNDcyMCA2NjMxMjlmM2FiZTAwMWViZDc1NzBlMjFhY2U0MTA5MzAzYjk3NjllIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyMSBiNDcyNDhjZTdiNmM5NDUwNDljNmRmZTVlN2FjODliZTI3YzdjMzExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyMiAzOTUyMzE4OTU3Y2ZhMzM2NGZhZWFhOGZiZTZkYTlmODliYzRmOWY1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyMyBiZDEwMTQyMTVmNjIyNTRhNmQwNGE1YjgzZmU1NjgyOWNlYWMyNWMzIGxlZ2FjeS10cnVuaworMTQ3MjQgNGZhMjVhMjkyMjczYjc1NGRiYWIwZGRlMDY0NzkxMDZlMGEzMTBkNyBsZWdhY3ktdHJ1bmsKKzE0NzI1IGMyZWZkMTdjZWNiZjFkNmYyNWVmZDc4ZWJjMmJkMjk2ZDlmMWVmM2EgbGVnYWN5LXRydW5rCisxNDcyNiBlNmM0NjgxOWRiOTI3Mjk3NmEyZDhmZjhjZWIwYjg4MWY0MDE1NTllIGxlZ2FjeS10cnVuaworMTQ3MjcgYmE4MGM5MDY0NDkxODA2N2U2Zjc1OGNhNmM2NDk4ZDkzNzI1ZGEzZSBsZWdhY3ktdHJ1bmsKKzE0NzI4IGE0MTE4MzY3MDM4NmU2MmZmMzg5OGUxOTY4ZTdiOGZlMzQyYzE2MjEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzI5IGM2MDNjZGVkYWUxNzc0ZTBlZmM1OWJhYTU1ZDhmOTBkYzg0MTY4YjIgbGVnYWN5LXRydW5rCisxNDczMCAxM2ZkMGRmZWM1NjBhN2RkNTU2YWUwNjg2OWE1YTRmY2VmNzVhZTRmIGxlZ2FjeS10cnVuaworMTQ3MzEgZTc4MjAzNTJjYjgwZDBmM2Q3YjBlYWFjYzUxYjFiM2Y4NzdjNmIwNiBsZWdhY3ktdHJ1bmsKKzE0NzMyIDA1Njk3MjUxNzE5MTJlNWI3ZDdkMWE1OTg0YjNlOTc5Mjc1MDdkYTUgbGVnYWN5LXRydW5rCisxNDczMyA2OWIwZmNlZjRjMGYyMWQ3NjhiNzQ3NTVlNGRiZTQyZDE1ZTJkYmMzIGxlZ2FjeS10cnVuaworMTQ3MzQgNzY1MTYyMDRiNjIwYmViODRmYzFkZGU5ZmFlZGI4NDM0NGUyMmU1MiBsZWdhY3ktdHJ1bmsKKzE0NzM1IDFlMWFlYmIzZTRmNjllNThmMGI0ZDhkMjA1MzcwNDMzN2Q0NDc5NmYgbGVnYWN5LXRydW5rCisxNDczNiA4NmQ5Y2UxNTgwODk4ZWY0Nzg2OTc3ZDNmNmE2YTQxNGQzYzhiMWI0IGxlZ2FjeS10cnVuaworMTQ3MzcgOTE0ZWQ1Mjg4OTZlMGVkNWE1MGMyZDU2YWQwMDlkMTczMzkzODkyNCBsZWdhY3ktdHJ1bmsKKzE0NzM4IGEwYTljNjlhZjlmNzg3OTQ2NTNiNmYwOWMwNzlkMTllMzMxMTdjYjggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzM5IDZmZDBiYjBjMDMzMWVmYmU3YjFmMTU0NWRhYmIxZTczNTE5ZjQ5NjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQwIGYwN2MzMzA1NTdjZmY4NjNmNWUzMTVmYjhkNWYxZDYxMjA1MjNhZjQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQxIGQ3NGVhYTkyZjBiNDU4MzQ0OTJmNDVlMjQ2NGM0YWRjNjI3OTQxMTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQyIDQzZDIyNDc4NmE1ODFlNDVkMzI2Y2UzNTM3M2NkNmRhNWFjMzc1YTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQzIDYyOGNhMWU5MDU5MWU1MGU5NTg5ODk4YjdmNWMxZGQwMDFhZDM4ZmYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ0IGYyMjBmYmE1Nzc0OWZiODAzMDVjZmZlOTFiYTA3ZDU2YWFiNzZhZWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ1IDBiOTYzM2E0NWQ2OGViODNiYmJhYzllOGIyNzk0YjNjYTc0NTA0OWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ2IGNhMDE3ZGU0ZjJmZDk0YzY3YmMyZWUyMGJjYTFiNTcwMjNjMWFhMTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzQ3IDI1ZDNkZDBiMWNhMjkzODAzMjlmNDRhZGFkNjY4NDg2YjI4NDE4MTUgbGVnYWN5LXRydW5rCisxNDc0OCA3OTk0ZDlkYjdmNGQ1ZGZlNTFlYmFkMzAwNDcxZDAxZWJiYzAwMjliIGxlZ2FjeS10cnVuaworMTQ3NDkgMDA5ZDhmYWU4MWVhZTZlZGJiN2ZkNzNmMGIwZjkwN2VmZDZjZTJhNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTAgMGM0NDdjMjg5MTQ2NmZkMTNhMTJkMjNkZTU0ZDk0MmI4NzY4NjA2MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTEgZDJhMDA2MTA5MmY4MDUwMTU1ZDRjYjliNDRkMjY5Y2JhYWRkOWZjZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTIgZGFmNGVmYzNhYmE5MWJjMWU5YTkyNWQyOTgzZjlkMWY1OTVjYjFlNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTMgOGRjMDkxOGFlMmMyZmZjZTdjYWE0ZWEwZDIzYWM2ZjQyZWEwMTZhZSBsZWdhY3ktdHJ1bmsKKzE0NzU0IGY5NTVmYmQ1MTNlZTRmNmQ0YTZjOTg2NjhlMzQ4YTI3YWUwMWE4MjkgbGVnYWN5LXRydW5rCisxNDc1NSA1NTZjMjdiM2FiNmViZjU2ZDMzNzgyNDRjODM3MDRhNDYyMmUyZTg2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1NiBjOGUwMDEwYzEyZWYzMWVkY2JlMzI5MmRmNjZlNjNkMjNhZGZjNzBhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1NyA4N2FlZTRlZjI5ZjUyODZhYzZhYzgzMDA0YTI0YTRiN2FmOWJiMzBmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1OCAzMjU5MzgzMDBhNzg0MTVjNjFiN2I4NDNjYjE1ZTQ4YzNiYjMwMmM4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1OSA2ZTdlYzlhMDBjY2U1Y2IwOWQ4ZDY1N2E5MTY4ZDBiOWNjNzlmZWUxIGxlZ2FjeS10cnVuaworMTQ3NjAgMzY5MGM4N2E5YmM2NjRjNjUzNGMzMzY5MDU5NDA4ODJmOGEwMDIyOSBsZWdhY3ktdHJ1bmsKKzE0NzYxIGFmYWI3YmQ3MmM0Nzk1ZDQ4NTVlYWIzZTM5ODQ4MjM2NGU1MTMxZGQgbGVnYWN5LXRydW5rCisxNDc2MiBhMDVkODMzOGZhYzU3Mzc0MWVhMGJkMzllOGE3YmNiYWFmMzI5M2E3IGxlZ2FjeS10cnVuaworMTQ3NjMgOWNhY2QxMTY2OTg2MjNjZmRhZDkwMzA5MDE2NjIzOTZjYzY5ODQwYyBsZWdhY3ktdHJ1bmsKKzE0NzY0IDg1NmRhZGY1NmNkOTdiMjhmMDNhOGYzMmM0YjcyYmIzYjA2NjhkYzQgbGVnYWN5LXRydW5rCisxNDc2NSAyM2ZjZTliOWYzYmM5MzE3Y2MyODJkYTU2NGRmOWFmOWNlNzZiMDY4IGxlZ2FjeS10cnVuaworMTQ3NjYgNmYwZDFlMzM0NmY5NWE3MDFjODgwYzdlYjU1YjZhYTNjZGMyODk5NyBsZWdhY3ktdHJ1bmsKKzE0NzY3IDk0MDQxOTVmZjNmZWZmYWNiZTI2MDkxYzBlMTBlMGE5MjU5M2QxNzMgbGVnYWN5LXRydW5rCisxNDc2OCBkM2U0YTQ1NjkyOGJlMWRhNDE0YjZkNGUwNDFiMjZhOGY1ZTJmMjRlIGxlZ2FjeS10cnVuaworMTQ3NjkgMTk1NmVjMDc2NzhlODZmMDVlYTFkYzQyYzgzMzFhODdiOGYzMTExYiBsZWdhY3ktdHJ1bmsKKzE0NzcwIDc0MGVjMDhlNmVjMWM1OTI3ZjYzZTUxY2RhZjRkYjEzYjk5N2MzMzQgbGVnYWN5LXRydW5rCisxNDc3MSA0MWE3MjVjMTI1NTFmNjFiNGIyOGNmMzQxZTUwMTdlMzNiMzQxYmRmIGxlZ2FjeS10cnVuaworMTQ3NzIgZDZiYzNiZDUyNDI0ZTZhMWJjYTYxYTk5ZmQwYzg2ZDRlYWNkYTdkYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzMgZTEyMDQxNzMyMzA0MDkzNTg5ZTNkZTdmZjQwMjM4NDQ0ZGExYmIwOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzQgYTRhNzg1YTAxMzYwYWVhZTE5YWM0MTgzOTc0ZGVkNjVhYzJmZjY3MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzUgMDFhNjBiOTNjMmY1MDBmMzU3MzA2YjM5ZmE5ZjBlZTk1Njg3ZWI2NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzYgMDE5YzM0MjgwZmMyMWYzYjcyOWZlOTM5YWI1NTg3YWY0ZmQzMmQ1MCBsZWdhY3ktdHJ1bmsKKzE0Nzc3IGE5YTFlNTkxZWIzYTFiMWVhMDU4MDE0ODViNjFjZGEzOWJkNGY0ZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc4IDgxYzIzYjM4N2JiMDg0OGIwZjVlYWVkYmFkOWI0OTg2ZGExZjhkOTYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc5IDJlMjFhZDFjNjBmZjg2NjMwMTM4NjQwZjVhNGI3MDAzNGFlZTQ3OTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgwIGFmNDc3OGExMzA1NTY5MTdkYmFhZGUzZmE0MjE2MzE1YmMzOTdiZjkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgxIDYzNzRjNjY2OTE0NzhlNjcyYWU5ZDVmNWJhMjY4NDcxZmNkN2MyMjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgyIDQyY2JlYTY3NzdiN2VlOWZhY2E2YmNmNzc2YjVmYmFkMDcxZTU4NWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzgzIGNhZTU2ZjdlODBmZmVlNzNhODRiNjE3N2QyYTcwYjQ1YmNmNmFjMDYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzg0IGQ4YjIyYTc4MTkwNWMxOTExNGUxMDFjMzhlMzg2MDBkMDIzMDNkN2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzg2IDVjYWNjYWNlMWRjZjg4NDJkNGM0NTg2ZWY5ZWMwZTk1MGY2NzJhMzYgbGVnYWN5LXRydW5rCisxNDc4NyAxNzhjNmVmYWVkOGJhZTMxYjNkNTNlZWFhZmQzNzA3YzgxNWZlZTUzIGxlZ2FjeS10cnVuaworMTQ3ODggMTQwOTJhYmI4YmI0YmU1NDdjODRhZTkxNGNlYTU1MTQ0OGFkMDQzNiBsZWdhY3ktdHJ1bmsKKzE0Nzg5IGIyZDQ0YmI3NjFkNGI1YTE0ZGNlZGY0N2ZiOTY5NmQ4NWRmMmU4NTcgbGVnYWN5LXRydW5rCisxNDc5MCBhMzg0YjBmNjk1MTJmNmRkZWU2MjM1Y2RjZGNmNGZhYjJlNjI5NjRmIGxlZ2FjeS10cnVuaworMTQ3OTEgZmExMmE1NjMzNjhkNTJmMmE3MjdkODg3MmJmOWQ5ZjFiOGUzYWU2MCBsZWdhY3ktdHJ1bmsKKzE0NzkyIGY4N2I1NmVlYmFjYzcyYzNlYWFhNDkxZjcxZDJlM2U0OWMxNDE4ZTQgbGVnYWN5LXRydW5rCisxNDc5MyBkZGEzNzk0YzljZDkwNDliYWU1NzRlY2VhOTgyYzI2NjJiZGIzNTAzIGxlZ2FjeS10cnVuaworMTQ3OTQgYjkwODgwYzBlNWViMjI1YzE4ZjAwNzIzMTIwNGQ2OTRhZDA5MDNiYSBsZWdhY3ktdHJ1bmsKKzE0Nzk1IGQ4OTU1NmMwNGVmOTlkYmM5ZmE2YjM4Yjc4NmIxZjgwODQyMjJiYzQgbGVnYWN5LXRydW5rCisxNDc5NiA1ZDMxNjVlMzBiY2U2MzEzYzQ1ODNiMWY0NGQ1MTA4ZmMwMzIxYmU0IGxlZ2FjeS10cnVuaworMTQ3OTcgODhiMGIzMjEwOGNmYTJkNGUzNDgzNGY5ZWIzMjAyYzY4ZDEzNjljNyBsZWdhY3ktdHJ1bmsKKzE0Nzk4IDIzYTFjNTI2YzZmMDJjNWJkYjA1NmVjNmVkZjk3YTk2MDc5NGE2ZDYgbGVnYWN5LXRydW5rCisxNDc5OSA1ZDQ1Y2ZhMWJjOTEzODlhODZlM2Q0YzhmOWQwNjcwNmM1YzM3M2UzIGxlZ2FjeS10cnVuaworMTQ4MDAgMWU1Y2Q3MGNlZTEwNzU2Yjg4OGE3NTY0ZDIwMWVmNmMyZDhiNzc5NiBsZWdhY3ktdHJ1bmsKKzE0ODAxIDQyZDhkNzZkYWU2ZDJjNWQ1YmMxMDhiMzIyYjExNjVkNjcxMjk4YjkgbGVnYWN5LXRydW5rCisxNDgwMiBjNmNiMGQyNjY4MzkzMDJiOGM5Yzc1ZThhOTFjMGM2MzE1Y2ZlMzhiIGxlZ2FjeS10cnVuaworMTQ4MDMgZGUyOTZhNzhhYmZkYzRlNTAyZGEzNjU3ZmJmZjJiZDVhMmRjNWMyYyBsZWdhY3ktdHJ1bmsKKzE0ODA0IDc3OTU1NzNlYzM1ODFjNTE4MTk1NzM3N2U4ZGMzOWEwNzdkOWQ4OWQgbGVnYWN5LXRydW5rCisxNDgwNSAwNDlmMDBiZmI5Y2VmMzQwMjg4NmU1NjkwYTE3MDQ3Y2ExNDU4NzNhIGxlZ2FjeS10cnVuaworMTQ4MDYgYzQzYjM4MDc5MjI4ZjM5OTE1NTg5ODc1YjE4YTM0YjUwMWM3MzkyOCBsZWdhY3ktdHJ1bmsKKzE0ODA3IGNhODg4MGNmMzY3NGNhMGY4MjYzNTBkYWM0Y2NmN2VhZTM1NTlhNTIgbGVnYWN5LXRydW5rCisxNDgwOCBkYjAzYTI5Y2YxNmI1YzIyY2JjZTRkMTU1YzM4MTM3ODhmZDY5YzhjIGxlZ2FjeS10cnVuaworMTQ4MDkgYjk4MWE3YTliNzM4ZTljMTkzNWIwM2E5MTUyNTU2YmZkMGMyMDdkMCBsZWdhY3ktdHJ1bmsKKzE0ODEwIDg2Y2ZmZTUwZmIxNzJjMDI1M2QwYjE0MDk4OGU3MDRjZWI0OWJiZjkgbGVnYWN5LXRydW5rCisxNDgxMSBiY2FiMTg5ZGRmODZiZGVjYzY1NjJmNWYxZDMwMTUwYzBjYmJkNzUxIGxlZ2FjeS10cnVuaworMTQ4MTIgZTI0MzUxOTI2ZTEzZWE2MDc1M2QwMWE4NjI3ZGE2OGYwZmY2MTk4YyBsZWdhY3ktdHJ1bmsKKzE0ODEzIDMzMjMxMGZlM2QzYWYzNzI3NGU4NjlmNTBlZWFmMjkwNjYwNDkxZjAgbGVnYWN5LXRydW5rCisxNDgxNCBhMWJmYzhkNGZjMDA2YzgxODA4NTlmOTYyODJmZWIxYWU3OGM4NTI0IGxlZ2FjeS10cnVuaworMTQ4MTUgOTc1MGFmNWU3MWIwMTM5YWVjYzBkNGFjZmQxNGQ2NjYzMTI2Y2I2ZSBsZWdhY3ktdHJ1bmsKKzE0ODE2IDY3ZDQxMjhkYTI1NDNhMWI0MGE0NDk1MjU0YWJhYTQwOTI5NzQ3OGUgbGVnYWN5LXRydW5rCisxNDgxNyBlNDk0M2ViYjVmN2QyMjUxMTAwN2Y5ZTgwZDUyN2VkMGYyOWMyY2JiIGxlZ2FjeS10cnVuaworMTQ4MTggNjVmMzViNzNlMzUwNTRkOTVhZmVhYWJkMjg5NzBkZDM4Njk4NTQyNiBsZWdhY3ktdHJ1bmsKKzE0ODE5IDllZGVkZTY1MWZiMWE0OGU3MGNiMDg4MGNhMjgyNWVkZjVmOTNkODYgbGVnYWN5LXRydW5rCisxNDgyMCA0YTYxY2M4MWYzNjczNWQxNjM1NjE2ZDg1ZWMzMzEzYWVkMTkxNThmIGxlZ2FjeS10cnVuaworMTQ4MjEgZmQyYjA2YzZmZjUzYjcyMzc3MzAxYzAzYTRkNTg3Mjk0MmE4MGJmYyBsZWdhY3ktdHJ1bmsKKzE0ODIyIDg5N2NmMGU1YTQzNGE2MGQxN2EyYmFmNDFjZTdmNTM1OTJkZGQwMTkgbGVnYWN5LXRydW5rCisxNDgyMyA4MzhkYzM4MGU0Njc3ZWU4ODU3MGEwNWMwYTZjNzczNDQ3ODJiZWUzIGxlZ2FjeS10cnVuaworMTQ4MjQgNDRiOTQyZjdmZWI3NjZlYjNlNWJkZDQ4MzkwYjJmNGI3OWE2ZmQzZiBsZWdhY3ktdHJ1bmsKKzE0ODI1IGRjOGFhOTUxZGVmODA0NWMxMzhiZjA1OTk2MWRiNWQ0YTQyMjkwZmQgbGVnYWN5LXRydW5rCisxNDgyNiA2MDNkYjBkMGFlZDE0MzQ1YzkwMDA0NGJhZDllNjVmMWI2YzMzMmU0IGxlZ2FjeS10cnVuaworMTQ4MjcgN2UwMDYzNDJlNzkwN2M2OTk1OGEwZWM0NWZiMDdhYmYyNDNhZDZkZSBsZWdhY3ktdHJ1bmsKKzE0ODI4IGE2ZTUyMmNiNTkxODRhNWMwYWYzMjUxZmExMTFiNmEwM2JiMGYzOTUgbGVnYWN5LXRydW5rCisxNDgyOSAyNWI2MzM2NzM4NWViMDY1M2FiMmJjMjg0ZjI5ZjAwNjMxNWFkMjhhIGxlZ2FjeS10cnVuaworMTQ4MzAgOTZlYTFhODAwYjIzOTNjOTY3YmI1ZjNjODJiN2M5ZTM4OGFlZDNhZiBsZWdhY3ktdHJ1bmsKKzE0ODMxIGUyZGI4OWE5OGNiMmY0OWI0MmM5ZjE1NzAxOGU3MDVkZTUxM2IyNWYgbGVnYWN5LXRydW5rCisxNDgzMiAzNzg5YjY0M2ZlODk4MTI5MGMzNTIwNjQ2MzFlMmE2NDQxZWJjYTg2IGxlZ2FjeS10cnVuaworMTQ4MzMgYmI5MDA0NDkyMDMwNTM4YmQ2MTFmYmQ0ZWYyYjQ2MTdjZTI0ZDlhMiBsZWdhY3ktdHJ1bmsKKzE0ODM0IDk4NzdlOTc4MTcwZWE3NWIyNjYwNzE0ZDFjZTVhYjJmODkxOGU2YmYgbGVnYWN5LXRydW5rCisxNDgzNSBhZTA2NWRkYmEwZjE0NjdjYTIzNzNjNDFiYTQ3NDQ0NjAyNWVjOTAyIGxlZ2FjeS10cnVuaworMTQ4MzYgMmE2MGQ2ZjgzNGZmYjQxMjAyMDcwODcwYTFhNGE3Y2QyMmU3NzBkYiBsZWdhY3ktdHJ1bmsKKzE0ODM3IGUwOWQ3NDE0ZDNlY2Y4MTY1N2Y2YmUzMmMyMTg3NDliYTNiMzFkYTQgbGVnYWN5LXRydW5rCisxNDgzOCA4ZDFjNjliZGM0ZjJjMmM5NWMxNGIyZDJjOGVlMDM4ZDA0ODFkNDRkIGxlZ2FjeS10cnVuaworMTQ4MzkgNDM4NzYwNmExMjgxYjVhMGY5ZjM3N2Y5YTBjOGFlZTRmZjljM2RmYiBsZWdhY3ktdHJ1bmsKKzE0ODQwIGMwZTRhOTBkYzRmZjlmNzY4OGJiZjRhZWM1ZGE3YTBiNWFmNDFlMWMgbGVnYWN5LXRydW5rCisxNDg0MSA3YTUxNWZjMTBjMWQ3N2MzOTI2MjgxMjFkOTI0ODMzNTM5NzgzMmZjIGxlZ2FjeS10cnVuaworMTQ4NDIgODgxMjU3ZDFlODU0NGJmOGFkNTE1YWUzMmVlOThiMjVjZTgzNzUxMSBsZWdhY3ktdHJ1bmsKKzE0ODQzIDQwYTI2ODlkYWYzNzc2NmMyMWQ3ZjVmZjJlNjRkNTUzZTZmMjk5MzcgbGVnYWN5LXRydW5rCisxNDg0NCA0MWNiZDI5OGZmYzZjMWQyYjY2MmI4ZTU3OWVjYjk0MDMwZjY4YzgyIGxlZ2FjeS10cnVuaworMTQ4NDUgZjBlMDJhZGI5MWViYTE5YjM3ZjUzNTlmZWY0NjdlOWYwOTQ0ZGQyOCBsZWdhY3ktdHJ1bmsKKzE0ODQ2IGU4MWIxMzlhYjhhNDk1OWZlYWRiM2E2OTIzOTE2YjcyN2VjNmY1MDQgbGVnYWN5LXRydW5rCisxNDg0NyBkNzMxY2VmODEyYjM1ZTYxNGQyNjM4NTMzN2I0ODhlNDllZTQwZTNkIGxlZ2FjeS10cnVuaworMTQ4NDggZTk4NzcwZGUzMTQ3MmQzNjdhODgyODIwZTMxZTQ3YmJhMGM5MzFlNiBsZWdhY3ktdHJ1bmsKKzE0ODQ5IDY2ZjE0ZmZlOGViNzE2Zjk2ZThhNDg1ZDk2YjFhZmYyNjQ3MjdiYmUgbGVnYWN5LXRydW5rCisxNDg1MCAyYTkxMGE3NzU3OWE0ZDgzMmY2ZDlhYjg5YjFjYzIxZDU0NDExZDI4IGxlZ2FjeS10cnVuaworMTQ4NTEgMzI0MDdjMDhjYWY0ZDM1ODllYWVmZmQyMDVjOTJiMjExMDM0Mjg5MCBsZWdhY3ktdHJ1bmsKKzE0ODUyIDZmZDQzODY3YWE0ZmIwN2Y5ZmZlYjEzNzdhOWYzYjQyMjAxNmU1NGYgbGVnYWN5LXRydW5rCisxNDg1MyBmN2EwZDI5ZmI4YjgxZTE0NDUwMjljMTNiMjZkYzJmY2QyZjE2MTkzIGxlZ2FjeS10cnVuaworMTQ4NTQgOTJlYzc4ZTIxN2QyOWFmODk5MDRkM2Y3MzRhYzEyY2NhYzYwYzg2MyBsZWdhY3ktdHJ1bmsKKzE0ODU1IGUyYjAyZDQwYTE0MjVjM2M4NTgyZjY2MThkZjA5NzY2YWNlOWUzNmIgbGVnYWN5LXRydW5rCisxNDg1NiBkZmUzYmFmMGFlY2RjZTQ4MDQ5NWFiOWM3YTU2NTdkZTAwZDRjYWEyIGxlZ2FjeS10cnVuaworMTQ4NTcgMmYyZjJiMWNlNTY4ZDYxZTFkNjg3MmE3NGYwODRlZDY5MjY0MjhkMiBsZWdhY3ktdHJ1bmsKKzE0ODU4IDI3MjFjN2NjMGIyNzE1ZjNkMWM1MWViOTU4NzQ0ODkzMDliYTJiNzAgbGVnYWN5LXRydW5rCisxNDg1OSA2MzMzNmYyMDdkNTEyOGQ1NWQzOGVlZjhmZDY3YjkwMDNkMGU1MjY5IGxlZ2FjeS10cnVuaworMTQ4NjAgZTZhYjNjNjAzZmY5MTNiYTYxN2VhYjYyMTk1NjY2OWVhNDM5ZmQ5NyBsZWdhY3ktdHJ1bmsKKzE0ODYxIDVmMjIzOTQwNmRkMjBkMzc0NDk5Y2IwZWUyNGNlYmU2MTk4MDUxYjcgbGVnYWN5LXRydW5rCisxNDg2MiAzMGE0OWQxNWRhOTc1YzI2MzdlZTljMmQzZTVkOWQzZjdlMDcyNzQyIGxlZ2FjeS10cnVuaworMTQ4NjMgMDY5OWE3ZGZkNzM3YzIzNTEzOTRlZGQzZmZmZjEzOGY2YjY4MWE0MyBsZWdhY3ktdHJ1bmsKKzE0ODY0IGVjNThiNTAzYjY3MDBjNWZkNmI1MDU4ZDUxZGQwMmY2NTQ4NzlhMTggbGVnYWN5LXRydW5rCisxNDg2NSAwNzI3ZmYzOWU2NGZiOTI2NDdlMmZkZGJkNWM1ZjhjZmIyMDk5ZTE1IGxlZ2FjeS10cnVuaworMTQ4NjYgM2Q3ODVjMmNkYTg4MTVkYmE2NzMyMWQ4NzYzNDE1NTQ1ODAxNjNhZSBsZWdhY3ktdHJ1bmsKKzE0ODY3IGEwZWY4ZmE0YjI0ODhiNDM4ZGFlYTE1ZGQzNTI1Nzk3YzQ2NzFjOGMgbGVnYWN5LXRydW5rCisxNDg2OCBlYzM2MGI0ZThmNjZmZTdlYmFkMTYwMDdmYTMwM2M0YmNjNjRiMzI3IGxlZ2FjeS10cnVuaworMTQ4NjkgZTJiMzI4M2M1ZGIwYTRkNjgyMDE5YjI5NGY5ZjhhZDQzOTBlODdlOCBsZWdhY3ktdHJ1bmsKKzE0ODcwIGU2MjE0YWQyYTYwY2IwN2IxZGQ5NDk4OGM2ODIxMjdjMGQ5MDIyM2UgbGVnYWN5LXRydW5rCisxNDg3MSBiM2E0ZTQ1MWMwNmM4NmEwYjAyZjZkOTUwODA3ZDIyYzc3NWQ5ZjYwIGxlZ2FjeS10cnVuaworMTQ4NzIgYjVmY2I1Mzk2OTk5NDdjZWI0NzUzOWI3NzZkYjRkMDc1ZTRjNzI1NSBsZWdhY3ktdHJ1bmsKKzE0ODczIDJjZDljNDM2YmQ0MmIzNzlhZjE3YWQ0ZDVlMjI5NGE1ZmMxZWE2OWQgbGVnYWN5LXRydW5rCisxNDg3NCAxMDM4ZTU4NjEwNzk4ZTRjODA2NzQyMGRkYzM1YmI1YmZhNjY3ZmE2IGxlZ2FjeS10cnVuaworMTQ4NzUgYjQwZjY3OWIxMDdjZTU1ODI5YzZiNmFmNmE5NDliMDcxMDY5OTNhZiBsZWdhY3ktdHJ1bmsKKzE0ODc2IDFiNjhkMGFkNzgzNTZjMGZhMjBkZDc0MzNhMjkwYjMyNGVhNThmM2QgbGVnYWN5LXRydW5rCisxNDg3NyA3MTEzNDBkNDQ3Nzc2MzkxNDk2MDgwMTQ5Y2ViMmU5YmNlMDE3ZjA5IGxlZ2FjeS10cnVuaworMTQ4NzggYzE2MDc0OWFjZmY4NTcxYjVhYzJjNDE1ZWIxZTYyYWRjM2FkN2YyZSBsZWdhY3ktdHJ1bmsKKzE0ODc5IDY2Nzg3ODc3NjkzMzZhMzVmYjE4OTA5YjgyYjY3ODdhMzQ1MTQzOTEgbGVnYWN5LXRydW5rCisxNDg4MCA5YjlhYmRlMDMyYjMyNDU1MTE4ZWNkMTRjNGU4MWMzMWQ3YTk4NmUxIGxlZ2FjeS10cnVuaworMTQ4ODEgNWI1NTgxYWY5NTFjNWQ0ZGE4MGM4ZmExMTkyMjkzNjZjZWIxODZmNyBsZWdhY3ktdHJ1bmsKKzE0ODgyIDU3MjBkMWMxOGY0ZDEzMTVlMWI1ZTkwNDZkMmZjNTQ4MGI3ZjE2MmMgbGVnYWN5LXRydW5rCisxNDg4MyAzMzhlMDU1YjdjYzA5YzgwMzkzOTJiOWI4MTU2ZGM1ZmU1NjhmNTU0IGxlZ2FjeS10cnVuaworMTQ4ODQgZGFkZTgyYjllZTE5Y2UwZjA4ODllYjliZWJmOTAwOThhYTQ4YWEyMCBsZWdhY3ktdHJ1bmsKKzE0ODg1IDRhM2ZkMmMxMzcyZjIyODFlMTgzNWY3NDFjY2FkN2UyNGYwMTU3MDkgbGVnYWN5LXRydW5rCisxNDg4NiA0M2MzNmY2M2Y4NjdjOTM5MjAxNTMyYjI3MmE3ZjM5M2VjZTE3ZmJkIGxlZ2FjeS10cnVuaworMTQ4ODcgOTk5ZmMzZWVkYTk5YTk5YjhiOTU0YjZiYTg0MWRkODUxMDZjNTBiMSBsZWdhY3ktdHJ1bmsKKzE0ODg4IDRjYWMzNzY0OGE3Zjk4NjAyNGI1MDJjYTU5MzE1YTBkNzE1NmJiZmEgbGVnYWN5LXRydW5rCisxNDg4OSA0OWUwMjdiNDg2MjdmMDUxYmZkMjc1ZTUxNTU4ZDRjNTMwMzQ4NmUwIGxlZ2FjeS10cnVuaworMTQ4OTAgZThjMzBlNjk2NjZiMGU0MmE4YjI3NDFlODZkYzYwODI5NDg1ZTI0YyBsZWdhY3ktdHJ1bmsKKzE0ODkxIDE0ZTkzZDg5ZDM0ZWJkMWE1Yzc5MDJkYjk4NmJhNTAxMzM0ZWZhNzYgbGVnYWN5LXRydW5rCisxNDg5MiA4MDQ0MzNmMDExMmM5YjgwYjJmZmZiOTk0YjQ5ZGNlYzM3N2Q3Zjk1IGxlZ2FjeS10cnVuaworMTQ4OTMgMGFjNTc3ZWI4MjgyZjA3YWJjNDI5NjQwZWZiYWU4Yjk0YmVhZjJiMyBsZWdhY3ktdHJ1bmsKKzE0ODk0IDgxZTVmODAwMDA5NDRmYzc1NGU0NTI0NTM5MzI0ZjEzYjRhYjc2MjIgbGVnYWN5LXRydW5rCisxNDg5NSBjYTkzOGYzOGQwODdkZmIxZjM3MzlhZTU3ODQzODQzMThhN2YzZDY1IGxlZ2FjeS10cnVuaworMTQ4OTYgMjFhOWJiYjU3MmQ3MzdiOWEwZjgzOTBkMzEzZGFlZjIxYTMxOWY5MCBsZWdhY3ktdHJ1bmsKKzE0ODk3IDgzMGRkNTgxZTkzNGY2YzdiNTEzMGJkNWJmZmU1YjdlMDkxY2FjM2MgbGVnYWN5LXRydW5rCisxNDg5OCA3OGUzNmUwNmU1MzY5ZDIwZTI5MDY3YmE4N2JkNGNmZmMxM2VmMWMxIGxlZ2FjeS10cnVuaworMTQ4OTkgZmVkODliNTc2MzdhNmU0MmYwMjE3YmVhNTFiNTczMGFhZGU1NzZhYSBsZWdhY3ktdHJ1bmsKKzE0OTAwIGRiNWMwM2ZhOGM3M2Y1NWQ5Njc0MzgxZWY4YzdmMjc0Y2U3YjgxYzcgbGVnYWN5LXRydW5rCisxNDkwMSBiZTJmMDAzZDQ3Y2M2ZjFlMTNkNDM1OTRmY2U2MDY1Mzg4YzI1YTBkIGxlZ2FjeS10cnVuaworMTQ5MDIgOWU3YWJiMjhlOTJhMTcxMjk0M2U1N2QxYzhiM2M0ZWNmNWIwMGU0ZSBsZWdhY3ktdHJ1bmsKKzE0OTAzIDc1YWRkOTY0NGZmMzRhMjlmMmMwOTk0MTRiZDY5Yzc5MTgwZTYzMmQgbGVnYWN5LXRydW5rCisxNDkwNCA1MjJlZWFlNmMwNjYzMmUyYTkzMWQzM2YwOWVhNmY5MDFhMzg0MGMwIGxlZ2FjeS10cnVuaworMTQ5MDUgMjM2YWMxZWIxODhlM2QyNjlmYmZhYjdiM2VmY2Y5MGIyNjdhZmFiYiBsZWdhY3ktdHJ1bmsKKzE0OTA2IDk4YjA5YzQwZDk3Y2M5ZDhjYTlhZmE1NGYxY2ZlNzM5ZWJhMTdiZWYgbGVnYWN5LXRydW5rCisxNDkwNyBmZWI5YWY3NTI3YTU3ZjVhZGUyNTVlMGE0ZGRiNTI0MmEwZjA2MmQ0IGxlZ2FjeS10cnVuaworMTQ5MDggNDIzODdhZGU2YWZiZTUyZTM5OGFjYWNmNTg5NDY3MzkyNzQ4NTNiMyBsZWdhY3ktdHJ1bmsKKzE0OTA5IDM1NmI4ZTg5ZjhlMzA2NDVhMzAwZTdkMzgwNDdhZjI4YjBkOWI4ZWUgbGVnYWN5LXRydW5rCisxNDkxMCBjODhjOGE4NTI3NDQwNWI0MDJmZjYxMDNlMTM1MTYwYTRhMGE3ODA2IGxlZ2FjeS10cnVuaworMTQ5MTEgNmU2OGM3ZGRjZGI1N2Y2ZmE4MmMwYmI1MWFlMzhkNGIyZGIxNWIyNCBsZWdhY3ktdHJ1bmsKKzE0OTEyIGEyZmJjMGZmN2MyZTA3MmUzZGMzNzk3ZTYzZGVmYjZjZGEwYTc0ZjIgbGVnYWN5LXRydW5rCisxNDkxMyBmZjZjMWE4MmMzMjJhY2M0NWYwNTEzYzY0NjhhOGVhZTU3ZTYzOGRhIGxlZ2FjeS10cnVuaworMTQ5MTQgZjQwN2ZhYjI3MzU4OWEzM2RlMjIyZGM2ZmEzNTE0ZmQ3ZTk4YzdkNCBsZWdhY3ktdHJ1bmsKKzE0OTE1IDI2NTNmZDUxNmQ0ZTJlZTIwMTdmYjdjNWY3NWMxYWE0ZjNhNTZlMDUgbGVnYWN5LXRydW5rCisxNDkxNiBiNzMwM2YyZmY2MTNhM2E0MWE2YmYwYzBjNzIwMzhmODNhNmFiMzdjIGxlZ2FjeS10cnVuaworMTQ5MTcgMGQzZGU0YzEzY2I3MjRjYmYwZWZiOGRiM2YzZDNkNmU3NzgzZGY2YiBsZWdhY3ktdHJ1bmsKKzE0OTE4IDI3NDVkYWU4NzA1ZjE5NDJkNDQ0ODIzMjg3YTYxMWY2OGViYjEzY2QgbGVnYWN5LXRydW5rCisxNDkxOSAwMTU1YTNiMTNiZjBlMGM5Yjg2OTY1OTcxZWJmYjAwMmIxYmVhMDEwIGxlZ2FjeS10cnVuaworMTQ5MjAgZGI4M2U2M2IzODRiNmRjNzJmMGZkNTBmN2YyZTM3YzNmNTYwZTY4MyBsZWdhY3ktdHJ1bmsKKzE0OTIxIGYwM2UyYTgxODhhYTA3Y2Y1YzA3Y2NjMWUwMTE4MzE5NTg3NTY1NWYgbGVnYWN5LXRydW5rCisxNDkyMiA3NzE5M2U4ZTAxMzcxOTJlYWI1Mzk4NDVjZmYwNzMzMTY2NDI3ZmM0IGxlZ2FjeS10cnVuaworMTQ5MjMgZTc4OWUyYmYwNWIzZWVlMWJmYzM3Y2E4Yjk5MzhkZDFiZWRkNGQ2OCBsZWdhY3ktdHJ1bmsKKzE0OTI0IGMyOWNkZGU4ZWJkODAzMDg4OGY4OWE4NDgxOWFiMjA5OWE1ZmIzZDYgbGVnYWN5LXRydW5rCisxNDkyNSBiNThhZWQ3MWNkNjNmMzc3YmY3YzQ5NDIzNjA1M2M2OTQ5NDJkYTRiIGxlZ2FjeS10cnVuaworMTQ5MjYgYzg4ODc5MmRlNmE3NzA4ODBhNjdjNTJiOTlkNWE0NGFhYTc5NTdmZSBsZWdhY3ktdHJ1bmsKKzE0OTI3IDI0MjQ1ODUwM2IxMzExYjVkNjhjNzgxNjZmZjRlOTIzMzViYzlmNzUgbGVnYWN5LXRydW5rCisxNDkyOCBmNWExZTk1NDRjNWRlNmVlNzQzNTI0OTkyNmI3MjMyYjk5N2M0ODhmIGxlZ2FjeS10cnVuaworMTQ5MjkgODMyNTdmMzM5NGFlMzEwYzljYWZhYWQwMGExMTBmZTZlNWU2ODRiYyBsZWdhY3ktdHJ1bmsKKzE0OTMwIDE3MTllNDFlMjMzMDMxZWQ3YTFmMzFiN2Q3MDRhMjU3MDJhZWZkMDYgbGVnYWN5LXRydW5rCisxNDkzMSAzOWI5MWNiODBiNDFjMWFiYTQ4NDQyZmIyMDQzMGQ5OTkyZmJkN2U0IGxlZ2FjeS10cnVuaworMTQ5MzIgY2RmNjhjZTU4NmM0MzllYzU1MzcyMTFjYjhlZWU5NmQyOTI5MjQzNCBsZWdhY3ktdHJ1bmsKKzE0OTMzIDE1MWI5MTNlNzRhMTM3NjI2Nzk1NDIxMWEzMGYyM2Q4YThhYmI2ZjQgbGVnYWN5LXRydW5rCisxNDkzNCA5NGI2MDFmYWViYWNlYWYyYzRlYjgwYjU3NTk2NWVmZTE5YWY3ODZlIGxlZ2FjeS10cnVuaworMTQ5MzUgZTc1YWMyOTJlZjRjMWZhYTg1ZjE4YjM4NzVlOTRjZmUzN2Y2YjBlMCBsZWdhY3ktdHJ1bmsKKzE0OTM2IGYwOWU5ZDY1NmExMTU0ZWJkZTlhYzhjZWY1OWM5ZjU2N2EyMTZlMDEgbGVnYWN5LXRydW5rCisxNDkzNyBjM2ZjMmI0NjE3ZmNkOTZlMjc5OWFkODFkY2NkZmE1ODgwZmRjZGVjIGxlZ2FjeS10cnVuaworMTQ5MzggNGRkOGI2YTNiOWM1ZGRhOGI0YTM1OThjNWM0NjNhYTE2ZTNmMDkyNCBsZWdhY3ktdHJ1bmsKKzE0OTM5IGJjODYxYWRkNWQ3MTJhMTgzNWJiZjZjZGQ4YmQwMTc5M2NkMzQyNzkgbGVnYWN5LXRydW5rCisxNDk0MCA2ZDEwOGQ1MDkzNDZhODkyMDRkZjNiOTg4MzFiNmFmNmJhMGFlMmJjIGxlZ2FjeS10cnVuaworMTQ5NDEgN2YxOGY5NzlhOTNhZmEzY2NkZjdhZDQ3MDEzY2NlOThlMjcyMzNkYyBsZWdhY3ktdHJ1bmsKKzE0OTQyIDQ3NjNhM2Q1OWFiOWEyNTU4MjAzNzQzZTg1NDg2MjAzNThkZmQxOTggbGVnYWN5LXRydW5rCisxNDk0MyBmMjhlOTJkYmI5ZThlMTRkOGI2NDA4MGY0NjgzMGVjNTY0YjkyOTRhIGxlZ2FjeS10cnVuaworMTQ5NDQgNDJmMjFlNDdiNDg2MDcwNzJlOWZjNzc3ZDZiNDg1YjVhMGUwOTRkMiBsZWdhY3ktdHJ1bmsKKzE0OTQ1IDQxZGZjN2Q0YTM2YjIyNmZiZjUyM2IyMzcyZGVmYjU4M2E2NDgzOWIgbGVnYWN5LXRydW5rCisxNDk0NiA2ZmY3Zjc2YTZmMmU1ODJlMTBmOWI5ZGRhMWI4ZDM2NjQ4ZmIzYjM1IGxlZ2FjeS10cnVuaworMTQ5NDcgZmUzY2I3MzQxYjcwODQyYjRhZjUxMmNhMTM1MjM0N2ZmODYwZDQ5YiBsZWdhY3ktdHJ1bmsKKzE0OTQ4IGY4M2U0MDhhZWIwNWRmMTI5MWU3ZDQ2MDc2ZDgxYzYzMjVkMDg4NzggbGVnYWN5LXRydW5rCisxNDk0OSAyNTNjZGVlYWY0MmVmNmU4N2RkMTc1YTY3OTU5ZjNkZjU1ZTM5NjliIGxlZ2FjeS10cnVuaworMTQ5NDkgNjA1ZWI5MzI2ZmZlMWZkMWU0M2Y0MGUyMzM4ZDY2NTJhYjQ0OWZkZiBsZWdhY3ktdHJ1bmsKKzE0OTUxIDNlM2QxNTJhODU1NDcwNDBmM2ZhODUzYjYzOTUzODRiY2Q5MGNkNzIgbGVnYWN5LXRydW5rCisxNDk1MiBiNzNjOWY4YzUzN2MxYWVkMTUzYWFjM2Y2YTcyOTA4ZGUzNTQ2YTY4IGxlZ2FjeS10cnVuaworMTQ5NTMgMDkwOWY1NjIzZDRmYTJjMmMwNWVjMWE2MzI4M2I4YWY2ZWI0ZjljMiBsZWdhY3ktdHJ1bmsKKzE0OTU0IDM3ZDgyMjcyZjBmNDQ1YmVmMDM0MmE3YzExZjdiY2Y4NjY3MjFmZDggbGVnYWN5LXRydW5rCisxNDk1NSA0YmY5OGNjMzhkYjcxYWM2MTVhMTJmYWU1ZDA4Mzc3Y2YzNzAyMzg0IGxlZ2FjeS10cnVuaworMTQ5NTYgMjYzYmVlNGVmMTNjNTlhNGUwMjhhYTE5NGJiYWQyMmNmNTM2NWQ4YSBsZWdhY3ktdHJ1bmsKKzE0OTU3IDFkYzBiNjM3ZWIxYjNhNTkzMTU5MTliOWI3NDE2YWFiNjNjYzBkMjIgbGVnYWN5LXRydW5rCisxNDk1OCBhMjE2ZmU3OWFlMDBiNDE3YmRkNGFkZjQ3ZjFhZDY1NjE5ODQ5ODhiIGxlZ2FjeS10cnVuaworMTQ5NTkgNzc0ODE3Mjg1YjhjYTIwMzU1NTBkNDU4MWI2ZjE1MWM5MDhhMDhhYiBsZWdhY3ktdHJ1bmsKKzE0OTYwIDMzYmZjNTFkZWMwNWNmMzk0NzZmY2E1NTRhODI4ZDFjNWQ0YTdmNTggbGVnYWN5LXRydW5rCisxNDk2MSA1ZWE3NzM0MTM1MzE5OGUwN2IyNTcxMmJlNGU4YTcwOWY5MjhhMTU5IGxlZ2FjeS10cnVuaworMTQ5NjIgZjk3YmI0MmQ0MzQ0ODVjMWQ2OWQxMzkzNjdiMzcxNDdhNDk1NzUwOCBsZWdhY3ktdHJ1bmsKKzE0OTYzIDUzMGNkOWFmYTgwZDU0M2JhYmRlM2FhMDhhYTA4MGY1ODMzMTc4OTcgbGVnYWN5LXRydW5rCisxNDk2NCA1YTYyMDBmZjc3YWFjNDU0N2M1YzI4MzNiZmZkOWY5Zjk4NDgwODcwIGxlZ2FjeS10cnVuaworMTQ5NjUgMTdjZTY2Mzk2N2Q4NDA4YzUzNWVlMWMwZjUyNWI4MDUzNzU1MzNiOCBsZWdhY3ktdHJ1bmsKKzE0OTY2IDNlOWExYzFhOWY1Njc2MWU5MmVjYzUwNzI0NDVhNzg4OTMxMmE3M2MgbGVnYWN5LXRydW5rCisxNDk2NyBlODJlODJiM2I5YWQ1NjVhYzhkZjgxMzVhNjdmYTYxMTM1NmRiZTY3IGxlZ2FjeS10cnVuaworMTQ5NjggMmRjMWJkYjQwODhlZDZmMThkNTZkMjVkNzNiNDZmNjE5NmI5NWE5NSBsZWdhY3ktdHJ1bmsKKzE0OTY5IGM0MDVkYmRkMjZjOWVjNWRjYmUwYzcwODg3YmYyZmQxMjUxNGIxZjcgbGVnYWN5LXRydW5rCisxNDk3MCBmZmQyNDJmZWQwZTJkYzlkYzk4NzI3ODBjMTkzY2QwNmQzMTkxNTUxIGxlZ2FjeS10cnVuaworMTQ5NzEgMjM2NjBiNjZiY2EzMGMwZTVlZWQ4NDAwYjY4ZmU0Yjk4M2JkMzRiNyBsZWdhY3ktdHJ1bmsKKzE0OTcyIDc3YjAyZTUzZjY2NjJmNGM0MjZjNmM4ODBmMGQ3YzQ5M2JhN2QxZjQgbGVnYWN5LXRydW5rCisxNDk3MyA3ODU5YzBhNGFkOTU0MzBiYWI1MmE4MGZlYTFkMWI3ZGE0MmY2ODY3IGxlZ2FjeS10cnVuaworMTQ5NzQgN2JmOGIxMGNlMmFiNWMwZDNiMzgwNzg4YzE4ZTYxMzY1YWMxOTc0NyBsZWdhY3ktdHJ1bmsKKzE0OTc1IDA3NGMzMGZmMzIwNmZkOWZmZGI3NGZjMzM5ZDJmMTY0MTE4YWVkOGMgbGVnYWN5LXRydW5rCisxNDk3NiA2MzEzNWU5ZGVmMjQxZTZmMGEwYTU5NzMyYTI3MTc1M2IxNzkzYzlkIGxlZ2FjeS10cnVuaworMTQ5NzcgZDQ5MjM3NzUyMDI5NzZlM2QxNDk3MTVmOGE2OGU1ZmViY2Q3ZWU1NCBsZWdhY3ktdHJ1bmsKKzE0OTc4IDE0NWMwMDczZDc4NTgxYjRhNDhkNWFjYTQ1YjI4N2E3YTM2YmI3MmIgbGVnYWN5LXRydW5rCisxNDk3OSBjZTI2ZDVmM2QzY2U3ZmE1YzlkOTI0N2I5N2UzNzlhYTExMmFkZmQ0IGxlZ2FjeS10cnVuaworMTQ5ODAgOTIzNWFjNzYxNzZkNDUyMjg1NDM0YTAwYjM1NTBiMDQ2MTQzMzE0ZCBsZWdhY3ktdHJ1bmsKKzE0OTgxIDBjZDIyYzg0YTRmMTRkNmZiY2JmOWE3ZjQ1NDcyNDFhMmNhYTQxMzggbGVnYWN5LXRydW5rCisxNDk4MiBkZTBmOTNkOTBlZTRkMTk1NTNiYmZmODMzNGEyNWE1YTg1OTgwMDMxIGxlZ2FjeS10cnVuaworMTQ5ODMgMDgzOTgzODI3MjI0MWVkNzVhNjQ5N2YzZjUyMDc1ODliYzA4MjBjMyBsZWdhY3ktdHJ1bmsKKzE0OTg0IDcyOWYzMTUyNzY1Y2I4ZjU2YmRjMGE5YmFiNTk3NmNhOWI3OTMyNWIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODUgMWI3YzQ5NDVjNjFjMTg5YTQ2YTk1NDZkMWNiMWU4ZmJlOTMyODBiMCBsZWdhY3ktdHJ1bmsKKzE0OTg2IDdmYTMxNzQ4NDliZGJhN2JkMjg4NGNiZDVlNWJjOGIxMjMzNDc5YmIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODcgMTkwYTkyNDJmODNhOGIwMGQzMDFjZDIwOTgzOWEwNDA5OTZlMTljYSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4OCBhMGEyNGQzY2ZkOTYxMWI2ZGVlMmM5ZjcxMTNlMTgzOTUxYzM0NTRmIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg5IDE3NjA1MjQxNjYzYzE5YzA1MGQxMzc1M2EyY2NjN2MyNWUxNDU0ZDcgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5OTAgZmJmZmE3ZWIyYTRmNzRmNTZlOTUwM2Y4ZTI1Y2QwYWFhODg4YTRhOSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk5MyA3ZTlhNWNmNTVjNzY3NmE1OTY5NjE2ODY1MzkyNmU4M2EwN2VhNmY1IGxlZ2FjeS10cnVuaworMTQ5OTQgMWMzZjkxOTUxZjczN2EwMzczMmVkZTczNjI3ZDEwNmUxMTEyYzBhOCBsZWdhY3ktdHJ1bmsKKzE0OTk1IGJlM2UwZDE5NzUyMjNlZTY4MTAwNjBkZjQ3NWIyMGNiNTA1ZWQ2ZDAgbGVnYWN5LXRydW5rCisxNDk5NiAzZGFjODU0ZTYxMTg1MGVkZTc5MGUxMjQ1OTQzY2ViOGUxYmEwYmNjIGxlZ2FjeS10cnVuaworMTQ5OTcgNjEyYmUxYmI2NWZmZTFjMWJkN2YyNmI2NTA0NTZjZmMzNmNmODMyMCBsZWdhY3ktdHJ1bmsKKzE0OTk4IGJkZmNhNTRhMTQxY2JjM2JiZjE5MzdiM2VkOWQ0NjE0M2I1NjJhOTkgbGVnYWN5LXRydW5rCisxNDk5OSA2OWQxMWRmODQzYzE1NDRiMmYyMDQ4Mzk2NTg3YTkzZmM1OThlMWY5IGxlZ2FjeS10cnVuaworMTUwMDAgNzAxNTRlMmU5Yzg5MGU5M2YxZTliMjU3MDdlMDlhNTY1YzdkMjIwZiBsZWdhY3ktdHJ1bmsKKzE1MDAxIDllYjc2OWUxNWY4MWJjMjQwNjdmNWI0M2E0MDM4YWVkYWQ5YTA3MWUgbGVnYWN5LXRydW5rCisxNTAwMiAwYTNjYjA4MmM1ZGJkYjRmOWU3ODk4Y2RjYWI0YTQ3M2E1OWQ2NTcyIGxlZ2FjeS10cnVuaworMTUwMDQgOWRkZTMxNWNkZTM5NjlhNjBkMWFjNDhmMTNhMGRkNGJjODc2Mjk5ZSBsZWdhY3ktdHJ1bmsKKzE1MDA1IDRkYTA2ZmRkM2U2MzgxYmJmZWI5MTY1NGE5NDBiNDI1YTVmNjQyYzcgbGVnYWN5LXRydW5rCisxNTAwNiA0MTU4NWU4NTFmNTViNjE0OTQ1YzIwYTFmNGQ3YjgwYWY2MzgwM2QwIGxlZ2FjeS10cnVuaworMTUwMDcgNjY5MDNjM2YxNGRiNDI4NmQ0NmY5M2ExMjYyMTI1ZDNlYzU4MGE1MiBsZWdhY3ktdHJ1bmsKKzE1MDA4IGMzNDFlNjhmMTk4OGUzOTNkMDZiNGIxNzY2ZDg2Yzk1Yzc1OGIwNDIgbGVnYWN5LXRydW5rCisxNTAwOSAwYmE4NTcwOWE2NzEyOTUxYTc3MGExYjVkNTk3MzM4YWRhYzcwYTAwIGxlZ2FjeS10cnVuaworMTUwMTAgMjMyNjYzNTJmMTM4YzAwY2U3YTlmYjBiMTU4YmY3NDc4ZDUxYWMzMyBsZWdhY3ktdHJ1bmsKKzE1MDExIDY1YmM1ZWFmNDdjZTk2ZTEyZWIwNmQ4YWY3YzdkY2RhNzQ2NDk5NGYgbGVnYWN5LXRydW5rCisxNTAxMiBkMWQwMTZhY2NlNzRlYjI4OWE0MTIyZjdlNzEyYzZkNmQyZDk4MzRlIGxlZ2FjeS10cnVuaworMTUwMTMgOGMwZjg2M2JhNTBjNjdlMzhiZjc0N2U0YjdlZDcxYmI4YzAyNmQwNCBsZWdhY3ktdHJ1bmsKKzE1MDE0IGZiMjBmNmZkZDE2ZDZkMDQ4YmM3MWIxYzQyZmM1OTNmYjM5YWExZDkgbGVnYWN5LXRydW5rCisxNTAxNSBhYWMxMTJjY2E3OWI1MTZkOWFlMjEzZWJlNjc4MWEzOGY5MGUwYTIyIGxlZ2FjeS10cnVuaworMTUwMTYgZmY3NWU0NzM0ZGQ5ZmVmZGNhN2IwZjczODZlNjE4ZTgwZjAyZGQxZCBsZWdhY3ktdHJ1bmsKKzE1MDE3IDY0ZmNhZTc4ZDQ3YWY2MzU2NDdiOTZlNWIyNThjMGRmZmI4MWU0OGUgbGVnYWN5LXRydW5rCisxNTAxOCA2NmU5Yzk3ZjlmNjc3YzBiYzY3OGIwOGY3NmI1MDM5Yzk2ZTA1MTZlIGxlZ2FjeS10cnVuaworMTUwMTkgNzZlZDEzOWZjZTU5NzM1ZmM1MGVkOGUxNTBhMmI3NTQ4Y2FlOTdmNCBsZWdhY3ktdHJ1bmsKKzE1MDIwIDNmZGFlY2ZmYzRkZGRiYzUyNTQ1YWNjMTgyMjc1YWVjYmQzYzAwZTIgbGVnYWN5LXRydW5rCisxNTAyMSA5ZTFmNjA5NzYyMDlmMjdmYzNmOGRhZjI0M2ZlNTAwNGVjZjA0ZDUzIGxlZ2FjeS10cnVuaworMTUwMjIgMjYxZTg5NTQ0MDg1NGY5MGQyMTM0M2Q5YTAyNDBmNmY5ZWFjZjI0MiBsZWdhY3ktdHJ1bmsKKzE1MDIzIGY2YjU4YjAyMWU1Njg5Mjk3YjA2ZWZlNjI0NWIwYTljMGE3ZWNhZjAgbGVnYWN5LXRydW5rCisxNTAyNCA4YTFlYzhmYzAwZmVhNjZhNjAzMzA3MTg2ZDkwM2U3ZTY4ZDAzYTZlIGxlZ2FjeS10cnVuaworMTUwMjUgMGFjNDBlNDdiZGI1ZTFmMjI2MDlmZDE4MDNkYTc0MWJkNjRlMTQ0ZiBsZWdhY3ktdHJ1bmsKKzE1MDI2IGZkNzU2MTEyNDIwNzY0YjBkZmFmNmFmYWVjOTE0NmQyYTcxZDdmOTUgbGVnYWN5LXRydW5rCisxNTAyNyA1NTliMjVhNzkwMzJhY2JjNmZkZDljZTRhNzNhZWM0ZmVjYWRlMTJiIGxlZ2FjeS10cnVuaworMTUwMjggY2YxMzM4YmMyMWMwMDBiZjVlZDIwNmFiZDM0ZWU1YzQ4MWMxNTVlMiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNTAyOSBjYTMxZTY3OTAyNGI1Yzg4YTMxYzY4OTFiZThjOThjMjViZTVlMzQ2IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE1MDMxIGNiZmE5NWE2YTAzZWU2OWFlNzhlYmNiZmEyZGVmODM0MTY0NThmMTggbGVnYWN5LXRydW5rCisxNTAzMiA4ZWYzNjcyMzQyNjQ5ZWE1MzlkMzdkODEzOTk2M2EzYjc4ZDRkZGI3IGxlZ2FjeS10cnVuaworMTUwMzMgNTdmZGZhMDBkYTkzMzdhODhmMmZmNWExY2NlOTA2YWIzMDg2ZGVjOCBsZWdhY3ktdHJ1bmsKKzE1MDM0IDY0N2JmNzE5MTJmMDJjMTQ2MzhlMzQ5NzQ4OThmNGYzMGFiYzk2OTMgbGVnYWN5LXRydW5rCisxNTAzNSBhZjhkMjExM2JjMWQwMjRiYzM0ZTU3NjM1MjVmYjJiODE1NDc1MGM0IGxlZ2FjeS10cnVuaworMTUwMzYgZDA2YjUwYmE4MWE2MmNjMWJmMzFmN2Q0MTBiNzM5OTgyOGNmNzc5YiBsZWdhY3ktdHJ1bmsKKzE1MDM3IDUxYzBjM2I2ZDkxOWVmZmM1NjFiYWFlMjEzMGU4ZDQ0ZTI5NWIzN2UgbGVnYWN5LXRydW5rCisxNTAzOCAzYTk0YzdmODU1NTFlODk5ZWU1ZmM3MDdmZTQ3OGUxNGU5MDhiY2ViIGxlZ2FjeS10cnVuaworMTUwMzkgOTYwMTkyNTE4ODI5YjFlZWU5NjI0YWM4OWRkMGY2YTYwODYzNjg1ZSBsZWdhY3ktdHJ1bmsKKzE1MDQwIDljOTZlNWQ0MzdhODIxYjc0OTk0ZTJkODk4ZmNkM2NmYTBkNGU4YjQgbGVnYWN5LXRydW5rCisxNTA0MSA4MTg2MTQ1YzRhMDdkNmUyODZlZTg1YmJhNzEzMWE1OTg2MTk1OWFjIGxlZ2FjeS10cnVuaworMTUwNDIgNGM2YzI0ODE2OTNlZDQwNjkxYjZlY2E0MjQ2NTM5ZmQ2NGRlYzRmOSBsZWdhY3ktdHJ1bmsKKzE1MDQzIGQxZDIyYTM2MjY4Zjk1MzQ1OTljYWQzZGM1MjI3YmJkZDc4YjliYjMgbGVnYWN5LXRydW5rCisxNTA0NCA1ZjM2MjRiZmE1OTRjMzdjZGVhN2M4YmM3Y2E1YWUwMmMwYTUxZTdkIGxlZ2FjeS10cnVuaworMTUwNDUgZmI3NWU4YWNmYjA1Nzk5ZTY3MTM2MmRlNjQzOTZjNzU4NGRlZmYwNiBsZWdhY3ktdHJ1bmsKKzE1MDQ2IDE1ZDQxMTQ5YmYyNDI5NDI5Y2FkNGExZDM5NDE0NWQ1ZDM1NzRkNWYgbGVnYWN5LXRydW5rCisxNTA0NyBiN2YyYjIyNWQwYzAyMDU2OTFhZDg4MTM5NzI5ZDIzN2UzMTVjZDM0IGxlZ2FjeS10cnVuaworMTUwNDggMGQ2NGNlNzM1NGI5OTllNDZmMTRiNzA1ODM2MGU0MjEwZDZiNDQ4YSBsZWdhY3ktdHJ1bmsKKzE1MDQ5IDlhZjk5NzA2NTdmYWViODUzNGQ3NTk5YzU5MzdjNjJhYWM5YjU4NjQgbGVnYWN5LXRydW5rCisxNTA1MCAzNWExMTlhYTE5YjRiZWUzMWI5NDlmYWY1MTg2YTQ2YmE5ZDg0ZWEwIGxlZ2FjeS10cnVuaworMTUwNTEgMjM0NmFjMDc4MGNlOTExYjMzMTk1NWE0MWRjYjY1ZjAzMGMwZWI0YyBsZWdhY3ktdHJ1bmsKKzE1MDUyIGIxNTcyNTZkYmE3Njk3YzliZGI4ZWFkZjliZTc0YTFkNTg1NWRmNTcgbGVnYWN5LXRydW5rCisxNTA1MyAxNjMxOTg2ZGIxM2E2NjRmZjhjMGZhNWZkNGQyY2JiZTc4ODk1YmMwIGxlZ2FjeS10cnVuaworMTUwNTQgZDY0MGU3ZDRhZWM0OGM1ZDYxYzQwZGI2ZDk5N2YyMWI4ZmViMjZhNCBsZWdhY3ktdHJ1bmsKKzE1MDU1IDkxNzJlZGFhZWZmNTg2OTEwZGM0YjUwZTRjOGI0NGMyOGIyZjY5ZDAgbGVnYWN5LXRydW5rCisxNTA1NiAxN2ZjOWY5NTk5MGI0OGUxNzgyN2NlZDkzZDdiNjY2MGUyMjdmM2ZlIGxlZ2FjeS10cnVuaworMTUwNTcgNDBlNThjNWI2Zjg0ZmFkYzI4YTY3YmQxMThkNDAwZDkzYmI1ZTAwMiBsZWdhY3ktdHJ1bmsKKzE1MDU4IGZkOTA1YmIyZjZiNjMxMDMyZjAyZTQzOTE1Mjg4M2Q2OGM4OTNmMWQgbGVnYWN5LXRydW5rCisxNTA1OSAwYzYyZDFjNzZjMDY0OTdkYzBkMzgxMjRiZDY4Y2JlMzUyMGZhNjcyIGxlZ2FjeS10cnVuaworMTUwNjAgYmJhYWRhNDFhMjBiNjlkZDQwZjQyYTg4NmMwMDJmYmZkNmMzMjc0ZSBsZWdhY3ktdHJ1bmsKKzE1MDYxIDFmN2MzMjgwMWRjMTFlODUwMjdiY2I4NzkxMmE5NGQ4YTFlYTUyNjUgbGVnYWN5LXRydW5rCisxNTA2MiAwYTQ1Yjk1M2Y0YzAzZThkZjI5ZjRlMWU4ZjZmZGY5OWI4MTEwMDkxIGxlZ2FjeS10cnVuaworMTUwNjMgZTU0MDkzMDY0Mjk1NWE4N2YwOGJhYjhmOWJjZDNkOWRlOTI2ODllZSBsZWdhY3ktdHJ1bmsKKzE1MDY0IGRkYzRlNjJiMjE2YjJmY2JjNTZjY2FmYTAxYmU3MDUwOTQ1MzVjMmUgbGVnYWN5LXRydW5rCisxNTA2NSBkMzIzOWI3YzA1ZmU5OGRhNTE5OTlmODFiNzc4NTJmODE0OWYwMGU3IGxlZ2FjeS10cnVuaworMTUwNjYgM2U3MGM0NWY4ZDZiYjhlYjI5Y2NlNjlmODIzY2Y3NTU5Zjc4Y2YwZSBsZWdhY3ktdHJ1bmsKKzE1MDY3IGEzYjA0NjIzNGMwOTMxMjFhNGVmODRlM2IwZDEwMDZlYmE3N2VjMjAgbGVnYWN5LXRydW5rCisxNTA2OCBmNzgyNDQ2Mzk1ZGIyZDNlNTliOWRhYjllNmRlYzk5NGY4YWE4ZjIyIGxlZ2FjeS10cnVuaworMTUwNjkgOTBiMmEzY2QzNjVmZTMwYTE3NDBkZTExYWM5MWE1MGRlZjA2MTEwMSBsZWdhY3ktdHJ1bmsKKzE1MDcwIDIwYTVjYmY5ZmNjMDJjNTFjNThiMDRhNGRiNDhmNTg1ZGRjNDYzYTkgbGVnYWN5LXRydW5rCisxNTA3MSBmMWY2NjVlMDc1Y2EzMDU5OWM1NmQ3MWM1MDhjMzM3MjFkMmU2ZGNhIGxlZ2FjeS10cnVuaworMTUwNzIgNTQwZjEwODgxYTU5NzI5ZmU0MTBkMmM5YzAxZjIwNTMzZWFmYzE3NSBsZWdhY3ktdHJ1bmsKKzE1MDczIDI5ZTc1MzQ5M2Q4ZTVkNzg5OWI2YWQ3OTU0OThmNDVmYTk3ZTUxYjAgbGVnYWN5LXRydW5rCisxNTA3NCAyMGEzNzBmMWFmOGRmYTlhNjZmODAwNWM4YjBjNDRjZTUxY2YxZTEyIGxlZ2FjeS10cnVuaworMTUwNzUgNTdmMzRlMTYyZTY3NjI1OGQ4MmFlY2FmM2YyOWZmNDYyMDkwMjIwZSBsZWdhY3ktdHJ1bmsKKzE1MDc2IDVkZTBiOTM5ZmU2MWNjYmRmNzQyMjQ1NWIzYzg3NjNkN2E2ZTBjOWQgbGVnYWN5LXRydW5rCisxNTA3NyBiMzIxNjI3MzgyYmMxNDU5N2ViZjNhOTE3ODUyYjhiYmEyNjljMTU0IGxlZ2FjeS10cnVuaworMTUwNzggZDc2MjlmYTNiMjlmNTgxN2VmNzA1ODJhMmQxYWQyNGJiMjg5YjNkYSBsZWdhY3ktdHJ1bmsKKzE1MDc5IDFhMjA3YzY4ZThiNGQ1ZjhjZWY1M2FkZWU5Y2NiNDU1YWJlZmJkMWEgbGVnYWN5LXRydW5rCisxNTA4MCA3Mjk2Y2RkZThhNWUzYmU5MThhOTkyZDgwMzhiN2MwZGQwYzIxNTY1IGxlZ2FjeS10cnVuaworMTUwODEgYjVmNmI0YmNlZjkwZWNmNjM3Mzc0Yzk1ZmZkNWI3ZjEwNjAyOGJjMSBsZWdhY3ktdHJ1bmsKKzE1MDgyIDk0ODhlNGZkYWZlNDZiMjU1OGFjMjQ1Yjc4OTE1M2VmYTgxMTkxNDggbGVnYWN5LXRydW5rCisxNTA4MyA2NmI0OTA2ZDBmYzZiZTllYTdjZmYxYjQzNjE5MTYyOTRhNzM4NjNmIGxlZ2FjeS10cnVuaworMTUwODQgNGY1NjcxYTMxMzQ3M2M2YWQyYjU0Mjg2YWI1ODEzNzE0Yzk2MWEzOCBsZWdhY3ktdHJ1bmsKKzE1MDg1IDNjYzc3ODQ4YTYyYWY3YjcwNjE2YjA5NmMxZDQyNTdkNmYyODFlOTEgbGVnYWN5LXRydW5rCisxNTA4NiA3N2U0ZjIxZTNlZTY0YTk1ZGJlZjg2ZjY5NGVmNjViZDcyY2Y3MzZjIGxlZ2FjeS10cnVuaworMTUwODcgZDE5NWYxN2YyOTI3MzFlNjFjOTE3OWJjNTI0M2E2N2IxNGI2ZmU4ZCBsZWdhY3ktdHJ1bmsKKzE1MDg4IDZiNDY2N2ZhNDkzODFkYmVkMDBlMDE2Njg2NWY5ZjZhZDIwZDU5MmYgbGVnYWN5LXRydW5rCisxNTA4OSA1MjViMjM1ODcyMWU5ZTkwZjc1NTUyYTJiYjY2ZGM4MDdmMGY3NzQ1IGxlZ2FjeS10cnVuaworMTUwOTAgMzdmZDJlNmM4MWM3ZDcwZTg4NGIxMjg5Y2I1YzQzNDgzMmU4Y2VkNyBsZWdhY3ktdHJ1bmsKKzE1MDkxIGU2OWVlZjY5MjYxMjU1MzM3NjIwMWMyN2JhMGNmNzZlNjE5NzY4ZmMgbGVnYWN5LXRydW5rCisxNTA5MiBkMzM3NDMxMDJmOGFkM2YyMjFlOTMzNmM4Zjk3YzQxMWVlMTBkZDllIGxlZ2FjeS10cnVuaworMTUwOTMgODUxMGI0YWIzYzNkZWJjMzNhMWQ3MzdlNWJlY2I3NTVhYzUwNWY2MyBsZWdhY3ktdHJ1bmsKKzE1MDk0IDE4NWRlNGU3Y2VmMTBlMmJkNDAzNjFmMDg2MDhkM2I3YzRkNWZkZmEgbGVnYWN5LXRydW5rCisxNTA5NSA5ZTk2NjZmNjc5ZjcyYzI1NjgwYThjNjdiZGI5ZDE0YjkwZGE2ZjEyIGxlZ2FjeS10cnVuaworMTUwOTYgZTI2MjBhYWI5ZjJkNmNiMWNlODVkY2MwYWJiYjhiMzczNGM2OWEyNCBsZWdhY3ktdHJ1bmsKKzE1MDk3IGZjNTU3ZjQzMWU4N2UwZGRiNjMxODY1YWE1MWU5OWE3M2M5NGVhNTQgbGVnYWN5LXRydW5rCisxNTA5OCBhYTNiMDJhMDM4YTM3YWFhN2RhMjU2Yjc1ZWIyODczMTVlNDJhZTE1IGxlZ2FjeS10cnVuaworMTUwOTkgYmU1MTAwYWZhMWI3ZWQxYTljZGVmYmYxNzkyYzI0Y2Q3NDJiNjY1ZiBsZWdhY3ktdHJ1bmsKKzE1MTAwIGZjZjU4OGQ4NmIxNDA5ZWZlZjI3ZmRlN2M3OGQwMjlhNjBhZDJlYTYgbGVnYWN5LXRydW5rCisxNTEwMSBlOTUyYTRiOTIwYWRmMDdiNTAzNDA0ODE5MTZmYTM5NjBkNTY2MTNlIGxlZ2FjeS10cnVuaworMTUxMDIgMjRkNDExNjg5N2RkNDQ3YjgxYzI2ZmI4OWFjODE5MDU0NzRhYjA3YSBsZWdhY3ktdHJ1bmsKKzE1MTAzIGZhY2MxMDViNjQxYjAxYjliZGU2OGRlOTVhODY4NzViYzMyMjBmMjggbGVnYWN5LXRydW5rCisxNTEwNCAxNjgwNGIzN2Q3NTI1Y2U5MTBiZjYyZWU2Zjk5ZmFhYzAwYjc2NGVhIGxlZ2FjeS10cnVuaworMTUxMDUgZTQzNDliNjJmZDliNDE5YzMxNDgzMjhjNmY3ZjQyZmMxYmM2MjBkMiBsZWdhY3ktdHJ1bmsKKzE1MTA2IGM1OWJkYzdmZDhhNjFkY2FjZGUxMjA1OWQ2MmMzNjIxODdiMDk0MGYgbGVnYWN5LXRydW5rCisxNTEwNyA2Nzg1NjE5YzMzZTFjYjFjOTVlODFjNzIyNzYyYmU4MjEzNmMxMDE0IGxlZ2FjeS10cnVuaworMTUxMDggMTc5YTZlMjg1MGFjYTVkMGM3NTE3NmQzYzg4YWYyOWU0NTJhMzRlYyBsZWdhY3ktdHJ1bmsKKzE1MTA5IDU0ZTgwZGI0OTQyMzc1ZWI5YzFkYzU5ZDBhOTlmYmFjNWU4ZDA5NzggbGVnYWN5LXRydW5rCisxNTExMCA5OTZlYjNiM2IzM2VjNTMyM2Y1MDZjNDFmNGViNWNhN2M5MDU2MmM1IGxlZ2FjeS10cnVuaworMTUxMTEgMDQ4MDJiN2U4YTFmMDg0NmU3MGE0MDExNjcwN2E3ODM3ZjY0NmE5OSBsZWdhY3ktdHJ1bmsKKzE1MTEyIDFlNzkxZDJlODg3NTJlMmVlNzZkOTY2NTE3ZTZiMWI3YWY1MmVjZWYgbGVnYWN5LXRydW5rCisxNTExMyA1YjU5ZWE0MWRiNGU4NjkwYjE2NzZlNGU1MGM1ZDBkZDY2YjJiMWIyIGxlZ2FjeS10cnVuaworMTUxMTQgZmJjOGRhZmE0NDg0YzdlMGI0Y2E0Y2M2MzFjYzVkY2Q3ODRmYWVkYSBsZWdhY3ktdHJ1bmsKKzE1MTE1IDExZWNiNjY3MGY0ZjllNDgwMTY1NjFlMTgzMGVkNTFhZGQ0Y2RhMjkgbGVnYWN5LXRydW5rCisxNTExNiBmNzNiZjQ5MjQzODY4MmYzOGNmZDg4ZGI1ZmE2ZDg5NmI2OGYzN2IzIGxlZ2FjeS10cnVuaworMTUxMTcgNzkxYTExMmJlM2JjZjhiYWNhODFjMjY5ZDk3ZTBiYTBjMzZhOGEzZCBsZWdhY3ktdHJ1bmsKKzE1MTE4IDg3Nzk2OWVjMDk2ZmQ0ZjYxMDU4NmNiNWJhOWI2Yjk5MTJmMDk4ZDIgbGVnYWN5LXRydW5rCisxNTExOSA3ZjY1MGRmMjcxYzllM2VlOWYzYzliNTAwODlkYzhmNzNkY2RkZWViIGxlZ2FjeS10cnVuaworMTUxMjAgZTY0ZmFhNmUyNzAyMmQzM2I1MWMzMTVkZWJkMjFkZGEzN2RiNzU5OSBsZWdhY3ktdHJ1bmsKKzE1MTIxIDdmYTc2Y2NkZjJkZTczZjM2ODI0NDY5MDdlOTdlNjRlZGMzMzYwMGYgbGVnYWN5LXRydW5rCisxNTEyMiAwNDgxMDk2YTBmNDViYzk3MDgxN2Q2ZmI5Y2YxMTQwNGQ0OWEzNzQzIGxlZ2FjeS10cnVuaworMTUxMjMgNjc3ZTIxNDc4MjlhOWQyY2EwYjlmZjRkY2RhNzdmMTg1YTNmNzg2ZCBsZWdhY3ktdHJ1bmsKKzE1MTI0IGMyZDBkNjc0NGIzYmI3ZTUxNDRiN2IzOTgwYTkwMWVhODFmYmYyMWEgbGVnYWN5LXRydW5rCisxNTEyNSA2OGU0OGJiOTQwNzExZmIxOGE2YzY3YjA3NmUzMzNlOGM3NzMzNTk1IGxlZ2FjeS10cnVuaworMTUxMjYgYWY4N2ZjYWU4ODBmZDljOGU0NzVmZGNmY2Y4OGNmM2RiNmYyNjVmZCBsZWdhY3ktdHJ1bmsKKzE1MTI3IDQyOWEzN2ZmOWRiNWNjMjdiZTkxNjBkODM3NzI1NjdiNjUyODkwOGIgbGVnYWN5LXRydW5rCisxNTEyOCAyMTQzMDNkMzJmNzY2NGQ0M2Y4NGJkZDBhNjU4Y2FhZDNkMjM0YzQ5IGxlZ2FjeS10cnVuaworMTUxMjkgZDYzYjU3YWM2MTdkNGRiMjNiYmE2YTRkNjM0YmYyYzk4NzQzNjZiNyBsZWdhY3ktdHJ1bmsKKzE1MTMwIGY1N2FmMzYwYjdlNWVmMzdlNjNhODg2ZmNjODRhOTcxYjliZWEyY2UgbGVnYWN5LXRydW5rCisxNTEzMCAwMTFiZWU4ZmQ5ZjdmNGRhNDU3ZWM3MTU5NjQ4NGZiMDg4MmMwNjE0IGxlZ2FjeS10cnVuaworMTUxMzIgNmNlNmMyM2FjZDE0MjFjODYxNGFkYjRhYTc2ZDI3MzliMTNmY2UyZCBsZWdhY3ktdHJ1bmsKKzE1MTMzIDA1MmZiZDkzMTQ5MjFmZjdjN2U4MmRlMTg4MmIzMjU2MjlhZTFkZGIgbGVnYWN5LXRydW5rCisxNTEzNCA2M2FkNzU0YWEzMGVlMmU2NmU2ZTUwMDVhYTVlZDZmMjYzMmViYTAxIGxlZ2FjeS10cnVuaworMTUxMzUgM2JlMmY3NTRjMDIzOWI4MWJlMTIzNjQyNjY4MDEyNGYwNzhkZTAwNiBsZWdhY3ktdHJ1bmsKKzE1MTM2IDM3ZDlkZWQ1YWI5MTQ1MDlmNDQzMmU0MzBhNmY2N2FjYjg1MWFjNjQgbGVnYWN5LXRydW5rCisxNTEzNyAxMTZjM2FhM2NjZjcyZDE1ZGU4YzU2ZGQyNDRmN2I3OTM5NzI4NjEzIGxlZ2FjeS10cnVuaworMTUxMzggNWYyOWQ3YzAyNDMzODcxODU4ZGNjNDcyMTU4YTBkZjBiYTVjNmY1MiBsZWdhY3ktdHJ1bmsKKzE1MTQwIGJlODI1NzNlNDQ0NDgyZDUwOTNlMDQ1ZDY1MDNhNzBlMjI0M2IxOGMgbGVnYWN5LXRydW5rCisxNTE0MSBhYTAxM2YyY2Y4MGJlOGJkMDE1YWE4N2JiZGE0OTg5NDU3M2YyNjg2IGxlZ2FjeS10cnVuaworMTUxNDIgNjI3MjI2ZGY5ZjAxODFkOWE3NTEwZGI0NGUxYWVmYjVmY2VmNmRjMCBsZWdhY3ktdHJ1bmsKKzE1MTQzIDMyZTlkMGU3ODkzNTMzNDM2NDlhMjVhOWU2YTc4NWVlMzg2MGQwZTYgbGVnYWN5LXRydW5rCisxNTE0NCBlZWY2YTI1ZjA5YzUzMTZkYjhhMjE5MzUzMWM1MjZlMGZiM2YyNTQzIGxlZ2FjeS10cnVuaworMTUxNDUgYzQ4MTcyYWYxM2RjMTUyOGNhZWU2NWEwNmUxNzFlZTBmNTAyZjMxMSBsZWdhY3ktdHJ1bmsKKzE1MTQ2IGU1YjBiZWEwM2NmYTUwNTU2ZWNlYTEwMDVhYTg1NDc4MGYxZmQ0M2IgbGVnYWN5LXRydW5rCisxNTE0NyA2ZWRiYWU2ZGJjZjU1YThiN2IyYzY4NzkyODk0NTA3M2ZiOWQyM2NiIGxlZ2FjeS10cnVuaworMTUxNDggYTZmMGIzOTlmNjY1Njk1OTE5ODA5OGIxN2E4Y2Q2ZWYyMTA5NjQ4NyBsZWdhY3ktdHJ1bmsKKzE1MTQ5IDhkN2UwNzczN2I0YzZhMTRjMmVmZWYxYThhYTQ0N2EzNGMzMWI0ZDQgbGVnYWN5LXRydW5rCisxNTE1MCBhMDQ5OGIxNTI0NGNkMTBjOGRiYWEyMDA2M2Q5NTFjZjg0ZjAzMmI5IGxlZ2FjeS10cnVuaworMTUxNTEgNjBkZDk1Yzc1OTk5OTM2MjljNDk2ZGUyYzQ2MzE0MDNlNmU1Yjg0NiBsZWdhY3ktdHJ1bmsKKzE1MTUyIDNiYjM5ODk5NjI5MWY5M2YyMWY3NDgxYjJkM2Y0YjA3ZDEzNjY2N2UgbGVnYWN5LXRydW5rCisxNTE1MyBmODJiMjU3N2ZhMGNmMDY3MjZmN2E0OGFlMTI2ODcxM2NiNGU5NzFlIGxlZ2FjeS10cnVuaworMTUxNTQgZjA3MDViY2Y2NzNiMmM3NTNhMTRiYTA3MzM2NzQxMmMwOGQ2Y2IwZCBsZWdhY3ktdHJ1bmsKKzE1MTU1IDIzOTJkMTBlMjFmMTY5NGY2N2E5NDcyNDBjMzg4NzIwOTg2MDRhM2EgbGVnYWN5LXRydW5rCisxNTE1NiA4YmY5MTMwMjA2MDRlY2RlZDQ3OTgyZDQ2NDg1MzA4Y2M2ZWFkNTk3IGxlZ2FjeS10cnVuaworMTUxNTcgOWYyYzdmNzI3MmZhNzFlZGIwYzFkYTk3NzhmNTczMDQxNWJlNmI1NiBsZWdhY3ktdHJ1bmsKKzE1MTU4IGE1NzQzZTE0Nzg2MGMxNmFhNjViM2M4NWNiNjlkZmRhNjQyYjVmOWMgbGVnYWN5LXRydW5rCisxNTE1OSA0YzUxYTk2NmQyYTM5MGViMzYxNDRlZTczM2RlNTBjZGQ4NzQ5MjU4IGxlZ2FjeS10cnVuaworMTUxNjAgODFjOTY2YjM1YzEyNjIyMDFiZjZjY2U1ZmI0NTMzYWQxOTgwYTUxNiBsZWdhY3ktdHJ1bmsKKzE1MTYxIDY3ZTk2MTU3N2QwZWI4ZmEzOGVkOWNhOTY0ZGU1NDcwM2I3MjhjMTkgbGVnYWN5LXRydW5rCisxNTE2MiAxNTU1NGQzYTY4YzcxNWM4Mzk1ZWQxNDVjMjMxNmVmYjEzMGFjMWQ3IGxlZ2FjeS10cnVuaworMTUxNjMgZWM2YjZjYTVkMTExNjIzYWY3NWJjNmZkMDUyZGJiYWYyOTU2ZjAyYiBsZWdhY3ktdHJ1bmsKKzE1MTY0IDAxY2ZmOWZlMmQ0NTIxMjk1NThiNDdkZDdkZjdjMWFmMjY2NDI0ODEgbGVnYWN5LXRydW5rCisxNTE2NSAyZmI2YzczOWQzMjQ3MWMxMWRkZTFkZTU3NDFkYmU0ZTZlZTQyZjIyIGxlZ2FjeS10cnVuaworMTUxNjYgY2I0ZjBkODE4ODBkNWI0YjU4MzU5MjJlYjU3MmJhZmVlMjI0YzUxZSBsZWdhY3ktdHJ1bmsKKzE1MTY3IDViODcwYzBlYTdiNjFhMGY4ZGI0MGJiZWU2MTYxMmE0NjQyNzllYzUgbGVnYWN5LXRydW5rCisxNTE2OCA0YzVkNjJlODY3NWIzODkxMjRiNjJjOTFkODhhMTE3NGUzZGQ5Y2ViIGxlZ2FjeS10cnVuaworMTUxNjkgYWU1MjVhYjIzZWVmYzYxZWM1MmRiZTk3NzFlMjZlNDViMjhmNjhmNSBsZWdhY3ktdHJ1bmsKKzE1MTcwIDdkZTkwMmMxZjQzOWU1NmQxZTkwOGZmODEwM2I2ZjQ0MzBkMDBlNzQgbGVnYWN5LXRydW5rCisxNTE3MSAyZmM1M2RkYTIwZWI2M2U0NTcwY2NiNDM0YTg1N2ViNjQ3YTdmYTAwIGxlZ2FjeS10cnVuaworMTUxNzIgMGI2ODk5MDA4OWQyMTQ5ZTAzNDJmMDJjNmZjMWU1NGU1YTRiODMyMCBsZWdhY3ktdHJ1bmsKKzE1MTczIDk1ZTI5NmU2N2ExMmMwMWRkNjI5ZDg4YzNlNjg0Nzc4YTRmOGY5Y2MgbGVnYWN5LXRydW5rCisxNTE3NCAyNTljNGI5YzRjODg5NzZmYjIzMTcxZmZjOWI5ZGJjZWVmNjZlMjQwIGxlZ2FjeS10cnVuaworMTUxNzUgYWUxMDYzNzllNzU2YzI3NzZjYTY5YzA0M2UxZmNhZjBkOTc0YjQxZCBsZWdhY3ktdHJ1bmsKKzE1MTc2IDFjODVhZTY3NmJhN2U1ZGJiODIxMDY2Zjg0NDA1MzkzYjFmY2EzMWEgbGVnYWN5LXRydW5rCisxNTE3NyAzNjI2MjYxMTg5YjQ4ZDliMTdhMzZjN2U1MzFmMGY3MzU4MzFhZDBiIGxlZ2FjeS10cnVuaworMTUxNzggNjk3OTk2NmVlOTRkYTE2N2EwZWMxNmFkNTJjOWVhOGIwYmUzNTc2YyBsZWdhY3ktdHJ1bmsKKzE1MTc5IDZmYjQwYTg1YTUxOTc1ODk5NTRmNjIyMzM2ZTA0ODdiZWQ4OTBhNzggbGVnYWN5LXRydW5rCisxNTE4MCAwZDEzY2UyZTE1NWI5MzgyNjdmM2Y0MTk5YTA5YmQ2ODQ0YTQ1ZTljIGxlZ2FjeS10cnVuaworMTUxODEgMGFlNjM1MjNkNTA0YmRmYTM4OGMxNjY5YjgzMzc3OGY0ZWRiMzBlNiBsZWdhY3ktdHJ1bmsKKzE1MTgyIGMwYmYzZWQ5MzgzNTgwZmZlMDcyZTlmNWJhZDY0MzI4OWU0MTI5ZGEgbGVnYWN5LXRydW5rCisxNTE4MyBlODdlNmJkZmNiZGM2Nzc4OTFkMjM2NTAzZjZkMGM2Njc1NjU4NTNlIGxlZ2FjeS10cnVuaworMTUxODQgOTc4Yzk2ODdiZWVmNGZkNjRkZWI1NTQ4NGNjMmQxZDc5ODY2NmQ1NyBsZWdhY3ktdHJ1bmsKKzE1MTg1IDZiMmI5YTIzYTQxZjFmOGNhNTY0ODY4NWM0ZWM2NDNjMGI1MTViZWEgbGVnYWN5LXRydW5rCisxNTE4NiBkOTQwMGM0NzZiOWRjMmU1ZTMxMTY0N2RjYWJhNDNjOTBlMWNmNDY1IGxlZ2FjeS10cnVuaworMTUxODcgYzYwNTllNzBiYWIyM2JlYmQ0ODY3ZjkwMmVjNjRhZTY3MzRlZDk1YiBsZWdhY3ktdHJ1bmsKKzE1MTg4IGNhOTg5NDJmZTEwM2I5Y2MyMjAyMTI4MThlZTRkNzFhNWIyZWVjMzYgbGVnYWN5LXRydW5rCisxNTE4OSAzZmQxMzIyMmE4NzZmM2ExODc3ODk5OTZjODJlNjc5ODAzMTcwNjI1IGxlZ2FjeS10cnVuaworMTUxOTAgODE2MTMzNDk0MmQ0ZmY1YjMxYTYwMTk4YTk2ZDgwZTJjMTk3MGViZCBsZWdhY3ktdHJ1bmsKKzE1MTkxIDZhOGNkMDY4MjA5NjFlYWI5MDBiMjczZWFmMzNhMTc3ZjBkODYyNmIgbGVnYWN5LXRydW5rCisxNTE5MiBjYTdiOTlkMjdhNDA3MWExZTFhOWM1NTk5ZDgxN2I3MjA4ZjQ0YTIyIGxlZ2FjeS10cnVuaworMTUxOTMgZGZmN2IyNjExNmRlYmQzYmY0ZGQxNGM1ZGZhMjI1YmYxOGRhN2IxZSBsZWdhY3ktdHJ1bmsKKzE1MTk0IDgyODljMGU1NTFjZDMxMjg0ZmZiOGJmYmNiOTI4NTJmOWRhN2IzY2UgbGVnYWN5LXRydW5rCisxNTE5NSBmMGI3MTkxM2MwYWE3YjA4Y2MzMDczNzRmZmVhMDM3YjlhNjUyOWM3IGxlZ2FjeS10cnVuaworMTUxOTYgNDU2ODY5ZWFhN2Q1OTFhNWRkYjg3YjVkNWFhZDI3OGQ4MzJlODFiZiBsZWdhY3ktdHJ1bmsKKzE1MTk3IGQ0NzQ2MGIxYTY3OTk3Mjc3MDQzZmMyNTM1ZjI2MjdlNGYxZGY1YzMgbGVnYWN5LXRydW5rCisxNTE5OCBkNzYzMzQxZDMzMTBiZTBlYjQ2ZjU1Y2E4MGI0Yzk4MDFkNDJhZjUxIGxlZ2FjeS10cnVuaworMTUxOTkgYzk5YmJhOWU5MjEyY2IxMGRlMzQ1MzY1ZmRkNWYzNTk5ZTJjNmRhYiBsZWdhY3ktdHJ1bmsKKzE1MjAwIGY4NzYxNjRmYTE1MTQ5ODlkMWY0MzE3MjNlNTQzZTEzOTVhMTQ5M2EgbGVnYWN5LXRydW5rCisxNTIwMSAwM2I4MTkxMjgzNWViZTliNWMxYWVmMThjNzkxODJmMTM5Njk3ZjA0IGxlZ2FjeS10cnVuaworMTUyMDIgOWM0YTRlNmJkNTU1YWVkMGE3NjEzYWY0ZGUxODU1ZjJlNjkwOWMxYyBsZWdhY3ktdHJ1bmsKKzE1MjAzIGUzNjdhZDNlYTU5YTg2MWQzMWIxMGM4ZTFlOGMwZjE4OGMyZGRlNTMgbGVnYWN5LXRydW5rCisxNTIwNCA5NTFkODRlMWQ1NGJlYjAwNzY0OTNlZjE1ZTBjMTkyNTY1ZGRlYzI2IGxlZ2FjeS10cnVuaworMTUyMDUgZTNiYjIzOWIyZGJmNWUwNWRiN2U0ZDgyMmExYTczYmU0ODk0NGE4YiBsZWdhY3ktdHJ1bmsKKzE1MjA2IDE5ZjUzZDhiZDI5ODEwNmMyODY3NjQ5Y2I5ZTAyZGFlNTM2NmRjOTIgbGVnYWN5LXRydW5rCisxNTIwNyAxNmRjODA3MzFjMjNhMjBjMTkwMzRmMDdhYjY5ZTQxMmY2NWU4NzJkIGxlZ2FjeS10cnVuaworMTUyMDggMzNiYTA2MjZlZjcyYTllMTAzYTg1ZTM1Mzg5OWI2OTVhZTlhNTc1NSBsZWdhY3ktdHJ1bmsKKzE1MjA5IDM0NjliMmYxNzYyNGY4NjI3MjE0YzE2Yjk5YWU1ZGYwZDE2YWVhZDUgbGVnYWN5LXRydW5rCisxNTIxMSBkMGYyOTBiM2MwYjIzYmMwNTg0YWQ5NGMxYzA5NzA3NzIwYzM2ZDZjIGxlZ2FjeS10cnVuaworMTUyMTIgNDg2MTYxODk0NTA3ZjQwNThlN2U0ZTdiNTc0Njg2NWQ1Yzc1YjgwMyBsZWdhY3ktdHJ1bmsKKzE1MjEzIDRjYjMzMzQ4MjE2MGM4ZjgyMzA5Y2NkYTFlOWM0NjQxZDg0YjRlMWIgbGVnYWN5LXRydW5rCisxNTIxNCBkZTM2NWI2NWMxN2JjOGQ5ZjMyZjBjZTY5YTRhOGM0ZGU0YmMwM2I2IGxlZ2FjeS10cnVuaworMTUyMTUgZDVmZGM5YjFlNDc0YzcyMWNlZWQ1ZmM2MjU5MWVlNjkyYmY5ZTc3MSBsZWdhY3ktdHJ1bmsKKzE1MjE2IGMyOGZhMDFlNzMyOWMzYzQxNmMxZmQ1ZWFiZmU1ZmRhN2M3Mjg5N2EgbGVnYWN5LXRydW5rCisxNTIxNyBlNzYyM2QwMTkyN2M4YzlmYjViZDkyOTNlNTExZDg5YjJjZmY2YWNmIGxlZ2FjeS10cnVuaworMTUyMTggZTViMzFhY2IxMGNlYjZiZjEzOGQyOWVmZjhmMGQ5ZTYxMjAyMjIxYiBsZWdhY3ktdHJ1bmsKKzE1MjE5IGZkMGU1ZGFlZjg2YWU2ZGEyZTZmN2UwYjg4ZDJhZjk2Mjk4NzFhNmEgbGVnYWN5LXRydW5rCisxNTIyMCAxNDRhODk1NzBhMzljZjA1YzUxNDdlZWEzYzJjN2EyZmE4ZmZiNzBjIGxlZ2FjeS10cnVuaworMTUyMjEgNzRkNGU0NTNhN2Y3ZGEzOTY1ZTE1MzhiMGNlZDM5NjAxYzQ2OGQxZSBsZWdhY3ktdHJ1bmsKKzE1MjIyIDE4OTUxYTAyNGQxMWRmMmE3NTg5MDZiYjYyN2U1OTlmNDY2YThkNGIgbGVnYWN5LXRydW5rCisxNTIyMyA2ZjUwOTZhOGQwM2EyMGI4YzU3NWFjNmM5OTc5NjFjODRkNGI1NzgxIGxlZ2FjeS10cnVuaworMTUyMjQgNDliMGI4NDZmNjgzNDcyZDM0MzA2MWVkMDExZWYzZjBlZDMxMDM5YiBsZWdhY3ktdHJ1bmsKKzE1MjI1IDBiZjhhYmQwMmJkOGQ3Y2QxZTY0ZTc0YWIxOGZjYTZkNzAwMjVhNDggbGVnYWN5LXRydW5rCisxNTIyNiAxODFjNmY5NWY2ZjZhNWViYmUzYzdjM2RlOWE3ODg0M2Q1ZGMzODJlIGxlZ2FjeS10cnVuaworMTUyMjcgNzYxM2Y4YjNjMWNlNGNkNTA5OGRlZTI2NzkxZTIzZDFjNzQyMmMyYiBsZWdhY3ktdHJ1bmsKKzE1MjI4IGUzOWViOTBiMjUwYTAyYTYyNDFkZmM0OTY3MDc2MjI2NDg4YzcxMTUgbGVnYWN5LXRydW5rCisxNTIyOSAyYTJkNWZmOTMzMDgwNzcxODY1YjliYTBlZTBjM2NkMzk2OTJjZWVmIGxlZ2FjeS10cnVuaworMTUyMzAgZTU2N2UzM2RlNjQ1YmY3MGQyNWU2YTRhNjI4YWIwNzllMmZlMzY4NCBsZWdhY3ktdHJ1bmsKKzE1MjMxIGZjYjkyYjk2ZjFhZmI1NjAzOTMxMmMwMjIzMDVkY2Y3ODdmNzExNWQgbGVnYWN5LXRydW5rCisxNTIzMiA2OTlkZmIxMjU0Y2JmNzIzOGJmMjkyZjQ5ZWI3YzE1N2IwMTE5Y2I0IGxlZ2FjeS10cnVuaworMTUyMzMgYzI3ZjQ4NGFlZmZmYTdmZTQzMDZmZjE0NjVlYTY2NDAxNDNmMDY3NSBsZWdhY3ktdHJ1bmsKKzE1MjM0IDM1MDBjNDM1MGY2MjZlMTEwYzA4OTI1NTQyZTdlODM2OGUxYzU2NmEgbGVnYWN5LXRydW5rCisxNTIzNSBmMWJmZjFlYzc5NmI2NDEwOTMyMTE1YzE2NDhkZjc5MzBlNDI0OGNkIGxlZ2FjeS10cnVuaworMTUyMzYgODY2YWYxZDg3OTcwODRjNjcyYWZjOGE2NTM1N2ExMzg3N2U1N2JjYiBsZWdhY3ktdHJ1bmsKKzE1MjM3IGEzZTFmZWNiNDNjNmU1MTlkZGFkZDE1MDcwZTA3NzEwZmUwZmY1OWQgbGVnYWN5LXRydW5rCisxNTIzOCBiZTFkNzVlMTZjYjgxNjI5ZTRjMTk4ZTRmZGRmYzRhZTlmZDFiOWMwIGxlZ2FjeS10cnVuaworMTUyMzkgYTg4OThhMTcyZmUyZjA3Njk3MjU3NTc1ZjM0NjU5MzRhNjlkY2Q3MyBsZWdhY3ktdHJ1bmsKKzE1MjQwIGEzYzBiNmNkZDE2OGE2OTQzMTNmYmFkODljYjhiNzk1OTMzMDM1ZDkgbGVnYWN5LXRydW5rCisxNTI0MSAxOWUzZThmOGM1NzRkMjJhNjg2YmEzOTFkMjQ5MWY2MDBkMzdlODcyIGxlZ2FjeS10cnVuaworMTUyNDIgZmMyNzY4Nzc1ZjgyMTk4MzkwMmViYTUwOTE2MWQyOGIyMzdjZjZiMSBsZWdhY3ktdHJ1bmsKKzE1MjQzIDBkYjVhMzYwMjUyNjFmZjhlNjcxZjA0N2E2ZTc0OGRmMjM4YjBiZjUgbGVnYWN5LXRydW5rCisxNTI0NSAxMGFkYmY4MTgzZTY4ZTAyN2Q1NTk5OTVmMTA3ZjEyOGJkNmZiNGI3IGxlZ2FjeS10cnVuaworMTUyNDYgZjFlODY3YWQ3ZDg1YWMzYTMwNDAyY2M0OTIzYzlhOTQyNmQwYzM4YiBsZWdhY3ktdHJ1bmsKKzE1MjQ3IDhiMzMwZDE2MzgwMDc3MTgwNTY1ODA3MDcxNzVjZmE4YzU4NDJmNDIgbGVnYWN5LXRydW5rCisxNTI0OCAxOTU4NTcxZDI1YzE2YmNlNGRmY2M1OTY4ODI4NWViZjMyNWE5NGQ1IGxlZ2FjeS10cnVuaworMTUyNDkgNGNlZTJkYTNkYWNmZDc1ZGM3ZDExNzM4YjI5NGFjM2UzNWJjNDUzMiBsZWdhY3ktdHJ1bmsKKzE1MjUwIDcyMGQzNTU2YjE0Mzg1MjE3ZmYzNTYxNmIyYmU1NmIzNjc5ZjIwMTUgbGVnYWN5LXRydW5rCisxNTI1MSAxNzI1ZTgwMmUzZWJkNTJlN2RhNWJkOWE4NDI3NjBiN2E2NTljN2VkIGxlZ2FjeS10cnVuaworMTUyNTIgMDRjZmExMzQxYTUwOWMxNzk2OWQ5MWE0ZjI3ZTc5YWI1MDU1NmI1MiBsZWdhY3ktdHJ1bmsKKzE1MjUzIDFjYmE2NTg5Y2U2NjdjZWY3YzQ1Njk5NTQ5ZmZkZWUwODM2MDcxNmQgbGVnYWN5LXRydW5rCisxNTI1NCBiZWYyNGQ0OGFmYzhjNWI0ZDM2YWQxOGM2MDQyMjA2NjdjYmUxOTFjIGxlZ2FjeS10cnVuaworMTUyNTUgMmE1M2EzYTQ3OTYyYThmZjJmMDg0ZWMzNmNmZGVkNzhjYmViZWQ4MiBsZWdhY3ktdHJ1bmsKKzE1MjU2IGU1MGJiYjhlOThkYWQyYWU4YmMyYzg3YzUyMTc3YzRlNDViOGQyNzAgbGVnYWN5LXRydW5rCisxNTI1NyAwZDc1NTU1ZWQ2ZWI2ZDk3MDkwNmVhZDBhY2E2NTkyM2VlYzQyYmRmIGxlZ2FjeS10cnVuaworMTUyNTggMDc4MGFiYTk3ODk4OTMxOGFmMjBmZTRlZDYyMzU2ZjE2MDlkMDM2OCBsZWdhY3ktdHJ1bmsKKzE1MjU5IGViNDMzZWZhMjRkZWVhODQ2MmRmMDUwODU5MDQ5ZGI0OGIyOWNmNWEgbGVnYWN5LXRydW5rCisxNTI2MCBiZDkyYzUzYjE2Njk5MzM0NGExNGI1Mjg0NTQxNDAzYjg5NzA1YmU5IGxlZ2FjeS10cnVuaworMTUyNjEgMmNlMmE4MzI1M2U4MDMxN2M0MjdiZmZhNjU2YmY2OGNlYzU4OGI3YiBsZWdhY3ktdHJ1bmsKKzE1MjYyIDIxMTQ4M2JkMGE1MTgyZGNiNjM2MGMzZTY4MDI1M2I3Yzg2OTg1ZmEgbGVnYWN5LXRydW5rCisxNTI2MyA0NGU1MjFhOTM2NDhhNTEyN2VhNGQ3MGE4ZjVmODg5NGZjZDUzMTNkIGxlZ2FjeS10cnVuaworMTUyNjQgNWMzZTU5OTlkYWExNmI4MTE5NjkzZjc5OTc0MjM1NjhiZWM1ZDMwOCBsZWdhY3ktdHJ1bmsKKzE1MjY1IGY0ZGQ3Yzg4NDhmY2E0NWQ4YjNlYjBhM2VkZTJiMDQxMDdjMzNlYzAgbGVnYWN5LXRydW5rCisxNTI2NiA1NjYxZjRmOWE0N2Y3OTg0ODhiNDlmYTU5N2NkNzIxMTdjODdhMjdjIGxlZ2FjeS10cnVuaworMTUyNjcgYjc2YmFjY2NkMzQ2MzEwZDYyYTk3OWJlN2RhOWIxZjQ0MTg3MTY2YiBsZWdhY3ktdHJ1bmsKKzE1MjY4IGU2M2VjY2JhODczYjc2NDc0MWFlNTQyNGRhNDYzMWRlMTM2NDc5ZGMgbGVnYWN5LXRydW5rCisxNTI2OSAxM2ExNjc5M2JiMWNmMDgwOThjYmRhYWM3NGQwZjAwYjhjYTE1YzhkIGxlZ2FjeS10cnVuaworMTUyNzAgODc0N2YxYzhiNWZiZWIxZjc4ZGYzYTM5ZjY3ZjNiYTc5ZmVhMDlmYiBsZWdhY3ktdHJ1bmsKKzE1MjcxIGE2MTE1NzMyOGIxMjFlMTVkYjYxMTEzYmJkNWQ4YTQ1MzI2MmU4YjggbGVnYWN5LXRydW5rCisxNTI3MiBjYTBlOWQ5N2Q1NTRjNDg1YWRkNmJiOGE4NTU5ZTIxOTFkODU1OGI3IGxlZ2FjeS10cnVuaworMTUyNzMgYmE1NDg2MmM4Nzg1YzIwZWY4ODdkZjQ5NjUwYTdiM2JlNGY4ZjJiMSBsZWdhY3ktdHJ1bmsKKzE1Mjc0IGZiNDc3NTExMWVkOWQ1MTJmNTFjODA0NGRkMWUzNzBhZjUxOGZmMDMgbGVnYWN5LXRydW5rCisxNTI3NSBlNmU5MTRkNWIyMDcyZmU0NmVkZDU4NmRkNDNkNzY4MzQ1ODkyNDA3IGxlZ2FjeS10cnVuaworMTUyNzYgNmViZTBhY2I3Nzc2NDkxMmNhM2UwOGFhMzJkYWM4ODZlMmZjY2EyNSBsZWdhY3ktdHJ1bmsKKzE1Mjc3IDllNTNhNzExMjM5NWZiNDA5ZDgwNTZkMzgzM2JiMmI2ODFlMzUxZTAgbGVnYWN5LXRydW5rCisxNTI3OCBhZjlkNjIzYmFiYjA3NzE3NzUxMGI4Y2YwMDhlODg2NjE0ZjkxZTlhIGxlZ2FjeS10cnVuaworMTUyNzkgYjZiN2JkMjBjODQ1YjczNzY4OWIxMjkwYzUxMDdhMGFiYmQ0MjE5MiBsZWdhY3ktdHJ1bmsKKzE1MjgwIGQzNTdhZThmYmZlNTkwYWFhYjFjZjVlNmNhNGY0YWE4NzFjYjQzMDUgbGVnYWN5LXRydW5rCisxNTI4MSAwYzI4YzljYWJiZGFlYjBmYjk3ZWQ2NTJkZmI5NjAzZjdjMzdmMGQ2IGxlZ2FjeS10cnVuaworMTUyODIgMDE5ZWFlZjYzN2ZmNWY5OWNlNjEyYTFkOWY4OGQ0YWQ5M2MyM2UyNCBsZWdhY3ktdHJ1bmsKKzE1MjgzIDRhZTEyNzMxMmJiZmQ3ODVlZGI3ZmQzMTc5OGU0ZDhmNDBiZWZhZDEgbGVnYWN5LXRydW5rCisxNTI4NCBiNDc2ZTRhOGM4OTExZDJjNGVlYWJhZGNmMWQ3NTE5YjNkZTQ0NmIyIGxlZ2FjeS10cnVuaworMTUyODUgNmY3Mzg0OGI4NDUyMTkxOTNmMGUwZDJiYWUwYzVlYjBhZDE5Yjg2OSBsZWdhY3ktdHJ1bmsKKzE1Mjg2IDVhZTg1YmRjNWY2MTY1MGE1NGRkODFmODFhM2IzODA2MjFhYzMzM2UgbGVnYWN5LXRydW5rCisxNTI4NyBjMGFkYmM5Y2E1ODEzMThkNjQ0Mjk4NmNkYzMyYWI0ZTQ2NjI2ZDIwIGxlZ2FjeS10cnVuaworMTUyODggNTQwZDliYjE2NDM5ZjA3YmFjZTA3YWY3YTM4NjE0NDJiNjJlNWU0YyBsZWdhY3ktdHJ1bmsKKzE1Mjg5IGMyYmI1ZTRiMDRhODlkNjNmNzAyODQzNDI0YjZmYzM2NjI1ZDUyYTEgbGVnYWN5LXRydW5rCisxNTI5MCA4NGNkNTJiNTYwZTU3MWViYTM3MWQ3MTM2YWJjYzljNDJjMjdiMDAyIGxlZ2FjeS10cnVuaworMTUyOTEgODJjYmIyZGZlOGJkYjI3YmUxMjM3MGJkYTgzMGM5Mjc1NjA0OGQ0NCBsZWdhY3ktdHJ1bmsKKzE1MjkyIDUyMzU2NTZmOWQwZjBlMjJkY2QxMTNhNTA4ODcxZmI2MGNhNTIwOTQgbGVnYWN5LXRydW5rCisxNTI5MyAxODkyOThhMWZhYjRjMjIzMjg2ZmRkMjY4Nzc5MzNlMTFlNDFlODkwIGxlZ2FjeS10cnVuaworMTUyOTQgOGE1MDM2NTQ0NzI3Nzg4MzVmMWI1ZmIyZmNlNzEzMDQyM2JiYjJkYiBsZWdhY3ktdHJ1bmsKKzE1Mjk1IGNjMDVlZGNjY2Y1MmJhMzdhZjUyZGU0ODA2OWY2ODIzNTJjNDBhZTIgbGVnYWN5LXRydW5rCisxNTI5NiA3Y2MzZGQ3Y2QzMWFjNmE1Y2Y4MjZmYjBiYzgzZDZkZmZjMzk2YzIxIGxlZ2FjeS10cnVuaworMTUyOTcgODU5ZTUwMGYwNzYwMDQ2M2Q1N2RiYjlmNjY4N2U2MTM0OWE3NjZmNSBsZWdhY3ktdHJ1bmsKKzE1Mjk4IGQ3NDg0YTc0MzM1NDFhYTk3OGYwNDM3MjZiYzc5ZjUyMTdkYTIwMDkgbGVnYWN5LXRydW5rCisxNTI5OSA4MWExMjFkMjEzNDA4M2ZkYmJmMzI2ZTYxNzRmMTM3OTdiMzRhMDRmIGxlZ2FjeS10cnVuaworMTUzMDAgYzM0YmEzZTNjZmNkMzg1MGRjYzQxN2U2YmJhOWM3YjU3Mjg5OTQ0YyBsZWdhY3ktdHJ1bmsKKzE1MzAxIDU5ZWUxNzEyNDUxMTU5YzkxOGFkMjk4NjY0ZTk3ZDgxYjRlYTBlNDcgbGVnYWN5LXRydW5rCisxNTMwMiBjOGRiZDVmNzAyODhiODQ5YzdlMGFmOTMzN2VjN2EwODQ2MzZjNzUyIGxlZ2FjeS10cnVuaworMTUzMDMgNTk5YmZhNGZmZDQ5YzE0NTk0YmNiNTQ0MjBjMGI0MzFkMThhNzc0NSBsZWdhY3ktdHJ1bmsKKzE1MzA0IDZiNjQ3ZTA4NzkyNWFiNzczOGQ0MWQ1ODE4ZmI0OGJkNDdjN2IzODcgbGVnYWN5LXRydW5rCisxNTMwNSA3NjllZGIyZGE4YjkzZmY3YTIxNGE4MmEwMTFiYTI0MDVhZjBhZjA2IGxlZ2FjeS10cnVuaworMTUzMDYgMTc3ZTYxYzU1NDI2ZGI0MTY2ODJmOWE2NzhjYjQ0YWM2MTdlZjYxMyBsZWdhY3ktdHJ1bmsKKzE1MzA3IDNlNmU4Zjc2YTk4ODM4MzYzOGRjODc1ODdhZTRjOGIzMTA5NGFlNmQgbGVnYWN5LXRydW5rCisxNTMwOCBlZmQxZTVkMjI4NGFmNTRlYTMzZjMzODFlMDNhNjA0YmM5ODcyNWNlIGxlZ2FjeS10cnVuaworMTUzMDkgZGM5ZDFiNzFjYzM4MGM2ZjdlZTU4NTcyZTU0NmViNjhhMGE4MjVkYiBsZWdhY3ktdHJ1bmsKKzE1MzEwIGJlZjY3NWRjMTFjYzBiYzE4NDQ3MmRmNjcwZjZmZDdjYWNlNjM0YWQgbGVnYWN5LXRydW5rCisxNTMxMSA2NmU0N2U4NWVjNTNiNWViYTg3YjAwYTVlZTEwY2U3YzFlMjViYzM4IGxlZ2FjeS10cnVuaworMTUzMTIgMTJjNzRiMTAyZDAyN2Q3ZGIwNmUzYTJhMDMwMzlkNWNlY2NiMzYxMiBsZWdhY3ktdHJ1bmsKKzE1MzEzIDhmN2IyNGI0MGRlNzM2MTczYTQzYzQ5MTM0YTA1NDE3ZTYzMmVlOWEgbGVnYWN5LXRydW5rCisxNTMxNCAwNGNmNzg4ZDg2MmJlMDZhYTlmZmY4ZDlmMWYyZTU0ODhkOTFkNzA4IGxlZ2FjeS10cnVuaworMTUzMTUgNzgzODBkZmIyYTkwNmRhZTI2ZGQwY2JkNGU5ZTEzYWE3NzlhMDkzYSBsZWdhY3ktdHJ1bmsKKzE1MzE2IDlhODQxZDY4NDUzYTdjOGRlZWY1MjE5Y2QzMmE2NzBiOTA0YmEzZWUgbGVnYWN5LXRydW5rCisxNTMxNyA0ZGY4NDYyYTI1OWRlYjg4MGYyYTc4ZjRjNWU0NjdkOGQxMTRlMDFiIGxlZ2FjeS10cnVuaworMTUzMTggM2I4ZDllNjNlNGUxNTdiNzE1ZTc5NjhhODZmYTRiYzRjOWQ4NzI5NCBsZWdhY3ktdHJ1bmsKKzE1MzE5IDM4ZDVhMTFkOWNkNGIwMDBlZjYxYTQxNjdmYTY2Nzg3M2ViOGU4OTYgbGVnYWN5LXRydW5rCisxNTMyMCA3YjhkMGE0N2RhYTk3YjY2NjAwZDkyNmYyZWE3NWJhNjRjN2Y1MjVlIGxlZ2FjeS10cnVuaworMTUzMjEgN2IwZTBiNTg2N2UyZDM5NjYxMDMzYmNiNzYzNTgzMzkyOTRiZjk2ZCBsZWdhY3ktdHJ1bmsKKzE1MzIyIGI4N2Q3NTc5OGQ4MTZjMzJhMTRjY2VmZTE4MGJlNjI4ZmJkZTVjNGYgbGVnYWN5LXRydW5rCisxNTMyMyBiMGE0MzUwZDVjMDMxMzc4ODM0MTJhYWU0YjQyN2YxY2Y1NzFiNTQ3IGxlZ2FjeS10cnVuaworMTUzMjQgNTM5YTFhOTlhNzhiNDgyMzZmMDBjMmQ2MjgzYjYxZGUyNjBhZGFjZSBsZWdhY3ktdHJ1bmsKKzE1MzI1IDE5ZTYxYjhmNGUwMDZjZGYyYmY2NDhiNTUxNWVjZTZlYjllZDM5YjMgbGVnYWN5LXRydW5rCisxNTMyNiAxYmUyMzMxNTg4YjIzOGIzZDhmZDgwMmMyYzM2MTQzYWYxNDg3OGMzIGxlZ2FjeS10cnVuaworMTUzMjcgNjZkZDI5OGVhZjhhNWQ0YWE1ZjgyYTY2OGEyYzg4YmNhYjI1Y2ViMiBsZWdhY3ktdHJ1bmsKKzE1MzI4IDlhOTdhNzE0YTFiZTAzMDFlZmM1YTQ5YmFiYmFkYWFhMjZlODU3MTYgbGVnYWN5LXRydW5rCisxNTMyOSAzZGJlNDEzODAyNjY2MDg0M2E2ZDZiZWY1NGRjZDM5OWYzOTE2MTllIGxlZ2FjeS10cnVuaworMTUzMzAgOGJjZDE0MzEzYzExY2RjOTE3NjhjMTY1MDFmN2RjYmQ1YTNjMDlkOCBsZWdhY3ktdHJ1bmsKKzE1MzMxIDBkZjE4Zjk0NzI2NzhjNmMwYzMyNGM4NjA3NzNjOGJiMzUzYzE3NjUgbGVnYWN5LXRydW5rCisxNTMzMiA1OTUyZWY2Nzg2YzIwMDgzM2ZjYzNiMWZhYTRjNzI5MTcxYTM5MjE5IGxlZ2FjeS10cnVuaworMTUzMzMgYWVlN2M0NGJiNGZlNWJlZmJlZGU3YThmOGE0Njc2MGY0ZmU5NmY1NiBsZWdhY3ktdHJ1bmsKKzE1MzM0IDhiYThiNTg1N2U4OTc1NmM4YWI3MWRmNzM4YTc1Yzg1OWM1ZTdmMDcgbGVnYWN5LXRydW5rCisxNTMzNSBhZjg2Y2Y4ODJkMGZmYzBkNjFhZTEyY2Y1ZWY3ZWViZWM1NzEyY2ZjIHVubGFiZWxlZC0xLjk4LjIKKzE1MzM2IDFjN2MyZGQxYmViMWY4MTA2YTdhZmE2MWQ0YjhiYWJjYzgzZTE3NTcgbGVnYWN5LXRydW5rCisxNTMzNyBkYzc4OWIzZTJiOWI5OGQ4NDYwZjAwZTFmMWM5MTVhNDVkMjIxMWE1IHVubGFiZWxlZC0yLjEwOC4yCisxNTMzOCA4NWYwMGY4Y2Q2NzRiYmM2MzdjMTgxZmU1YWM3NWE4MTcwZTVhZjQxIGxlZ2FjeS10cnVuaworMTUzMzkgMDc3NDU2YzMyNGJjNTk4OTAxNDkwYmEwYTQ1MTc3MDA1ZTVjMTBmOSBsZWdhY3ktdHJ1bmsKKzE1MzQwIDk3ODI1MzU0MjA3NjBjYmVlOTYwYjg2YzEzZjM4YWQxN2Q5OWE3OWQgbGVnYWN5LXRydW5rCisxNTM0MSBlMGExMjA5NWZhYzJlMTA4ZGQ3ZGMzNDY2MjhiNzBlZDBmNDVmZjM0IGxlZ2FjeS10cnVuaworMTUzNDIgNmFjM2EyYzAwNDBmY2IxZGZiNGM4OGQ5MmVjYTg2YjNlNmQ5YzBhOSBsZWdhY3ktdHJ1bmsKKzE1MzQzIDBiYWIxZTM2YTNhNmMyM2Y3MzZhMDk1MTk4MDlhZTkxMzI5MGRlYTkgbGVnYWN5LXRydW5rCisxNTM0NCBkYjk0NThjMmI2MzEwN2YzNTA1NjFkYTJmZmZkYzdiM2Q1ZThmMTljIGxlZ2FjeS10cnVuaworMTUzNDUgY2RlNGRhMThjNGZhMDlhYWQ4MjE5ZDY1OTZmMWJmZTM5OTdiMjA3MyBsZWdhY3ktdHJ1bmsKKzE1MzQ2IDBiOTFjM2IzODRkOGNjMzZlZGQzNGFhNDM2MTMyODhlM2NmZDZkODggbGVnYWN5LXRydW5rCisxNTM0NyA2Y2UyMWU0NWE5NmVlYmI4ODk1YTgyODZmYmExMTMyYzQ4ZTJhZTMzIGxlZ2FjeS10cnVuaworMTUzNDggNDg1ZDVlYWYwZjc1NzEwNmYwNDZiNDJjOTc4ZWE3NTIwZGEwOTA5ZSBsZWdhY3ktdHJ1bmsKKzE1MzQ5IDU0Mjc0YmViMjQ0ZDFkOWIwYzZlMzRkZjI0M2M5NzMyODRkM2UxNzggbGVnYWN5LXRydW5rCisxNTM1MCAyY2M2ZTZkZmU5YmI3NTY1ZTMxN2I1ZjZiN2NhZjExNDg1NzRlMDRjIGxlZ2FjeS10cnVuaworMTUzNTEgY2VmNDVmMWE3OTQzMDc4Y2IwNGRhNWM5NzJmMzY1NjQ4M2EwMjYxNCBsZWdhY3ktdHJ1bmsKKzE1MzUyIGU0NDI2NjJiMjhlMTg5MDAxNzFlYjllYzM0NzNjNjA1ODljNWJhMjIgbGVnYWN5LXRydW5rCisxNTM1MyA3NmIzMzk5YjM2NGNkZDY2MTQ5OGM4MWZiMDlhZjhhZWM5YWJkNTQyIGxlZ2FjeS10cnVuaworMTUzNTQgZWFlZTkyNGVmYjE5MmNkOTk0MGUwMTk2YTdiZmJiNThmZWJhZWYyYyBsZWdhY3ktdHJ1bmsKKzE1MzU1IDUyOGNmZTg3OTY2NTIwN2ExZTRjZTdkMDI1ZDkwYTkxMzIzODM3YzkgbGVnYWN5LXRydW5rCisxNTM1NiAwNWMwNjcxNTY1N2JjYzRlMDkyNmE4YzUyY2VkYTc1MDM3YmU0Y2RlIGxlZ2FjeS10cnVuaworMTUzNTcgNTY0MjNiOTM4MGY0Zjc2YjM2YzA2YzJkMmRmM2YyYWM1M2NiODRhNCBsZWdhY3ktdHJ1bmsKKzE1MzU4IDYyNmM5N2FiMTI4Y2ZlOTk3Njg2ZDYzZTdhMTNmOTE3OGRiNzgzNDIgbGVnYWN5LXRydW5rCisxNTM1OSA5MmQxZGRjMWM1N2ZkYjllMDZjNjQwYTdkZDJmMmNlYTFjNTZiYTkwIGxlZ2FjeS10cnVuaworMTUzNjAgNjQ1NWQ4ZmI3ODc2MWU2OTY3Zjk3ZWUwYzc2Njc5Y2U0MDVhNWI3MiBsZWdhY3ktdHJ1bmsKKzE1MzYxIGI1NzBkNGNkNjQwYWMzOGRmZWJmM2UzNmE5ZTk2NzBhY2Y4YjU1NzUgbGVnYWN5LXRydW5rCisxNTM2MiA4MmYxNzZiNzA2N2I3Y2YzMmM2NmQ5MmQ5N2YxYzZhZTIxYTg5NjE0IGxlZ2FjeS10cnVuaworMTUzNjMgZGQ2MDc4ZDIwZjdmODJlMDViOWIxODMxZjc2ZDlhYTAyMzZhZjc3ZiBsZWdhY3ktdHJ1bmsKKzE1MzY0IDM1Y2RiM2QwM2ZkMzUyYzUwMGRlZDU1Y2MwMTc5Zjk0OWU2ZjI0MTkgbGVnYWN5LXRydW5rCisxNTM2NSBiNWY3YWIyNzIyMzc5NTMzNGM5OTQwMzAwZjM0ZGQxNDZiODZiNDJjIGxlZ2FjeS10cnVuaworMTUzNjYgYTExMTI5Y2VlY2E1ZGY2OWU0N2MxYmJjN2JhZmQwZTdmZjg5ODU3OCBsZWdhY3ktdHJ1bmsKKzE1MzY3IDUxMjUzZTA4Zjc2Nzg4MTBjZGQxNDBkOGE2NzFlOTVjNGI4YzJmNjQgbGVnYWN5LXRydW5rCisxNTM2OCBhOGFiMDllZjQ4YjdhZjU1ZjU3NTQ2ZTk3NTUyNTE5MDQ5NDFiMDQxIGxlZ2FjeS10cnVuaworMTUzNjkgMzJiZDRiYWQxMDhiYThjY2M0YjQ2YTcyMDlhYzljZDA4N2M1MmM1ZCBsZWdhY3ktdHJ1bmsKKzE1MzcwIDcxZTQyMDI5NmVmMTEyN2VlNTUxNTA0YjFlNGQ3YjE0MmI2ZjIxYjcgbGVnYWN5LXRydW5rCisxNTM3MSBjMTk1ZmExNTc1NDFjNjFjZmY3ZDgzZGI2MTM5NzcyOTY5MWUyM2Q2IGxlZ2FjeS10cnVuaworMTUzNzIgYjMyMGNmM2E5OGI5MDZmZGFmN2Y1N2YwYTc1NmQ1MDAwMWM4ZmIyZiBsZWdhY3ktdHJ1bmsKKzE1MzczIDU2NDhkZjc0Mzk1ZjliNDM3YmQ5ZmFjMjRjOTAwZjU0YTA5Njk5YWYgbGVnYWN5LXRydW5rCisxNTM3NCA4MjI4YzNhZTkxMzBhYTg4MDgzYjRjMjY2NzM2NzBkYzIyMzRmMzBiIGxlZ2FjeS10cnVuaworMTUzNzUgOGQ3YWQzODE4ZWE2ZTczOGM1ZTljZTg3MDlhY2Y1N2RiMmQyZTk2MCBsZWdhY3ktdHJ1bmsKKzE1Mzc2IDY3MjMzZGYxMzAzNzNlNzdlMTkyYTJiNjczZmJlY2NlMTFkNTQ2ZDcgbGVnYWN5LXRydW5rCisxNTM3NyA4MWJhYmJhNWJkMzRlOTliMzEwM2ExYzkyODdiMDRhMzk4MjVhNTgyIGxlZ2FjeS10cnVuaworMTUzNzggZDljZmEyZTZmNzgyMDg1MDc4MTY3ZWQwMGFjYzFjZGU1ZDNiZTlmMSBsZWdhY3ktdHJ1bmsKKzE1Mzc5IGNjNDM1MGIxYjkxZmM5NTM3MjE3YThjNDJhYjVkNTE3YjgyMTQxYjggbGVnYWN5LXRydW5rCisxNTM4MCBlYjQ5MTQxZDZlMTBmMDc1NDQ2MWUzN2Y2ZGQ4ZWNkOGY5NDQ2NWI0IGxlZ2FjeS10cnVuaworMTUzODEgOWVhNmFlOGNmMDVjYmVjZjg5YjE4NGM3ODBjZTljYWQyNTZiN2FhMiBsZWdhY3ktdHJ1bmsKKzE1MzgyIDhhODJkZGFlYmE2YWExNDBhYzE2ZmQ3M2YzZDJjYWNhMGFlNGU3NzggbGVnYWN5LXRydW5rCisxNTM4MyBmN2Y5YTc0MGVkMWNiNWQyM2IyZDk0YTExODkyMDgyMjVkOTAyZTc1IGxlZ2FjeS10cnVuaworMTUzODQgOWE3NzI1ZWE3OGViMGIwYTcxMTQzNjBmNzI0NTcwZmVlNTQzMzViYiBsZWdhY3ktdHJ1bmsKKzE1Mzg1IDZlMDczYmE1MTQxNDJkOTkwMDc1MDk5MTRhYTRkYThhOTBhZGM3NWIgbGVnYWN5LXRydW5rCisxNTM4NiAxMTFkYzkxNjhlNDM1YzJjMmU3ZmEzYjQxMWQ1ODQ3NTdkNzMyMjY2IGxlZ2FjeS10cnVuaworMTUzODcgYTZjODQxM2IzYzRmZjUzODZiNTU4N2IyODk0YmNiNDRiM2Q3N2M1OCBsZWdhY3ktdHJ1bmsKKzE1Mzg4IDg3ZjU5NDZjNTZmNTY2YjVmYzM3MjFjOTdlN2YwMDhhZTM4Y2RhZjAgbGVnYWN5LXRydW5rCisxNTM4OSBlN2M5OGFmMDIwODQ5MWQ5Y2MxYzM4ZDJkNDJiMGRhZDQ2NGNiZTBmIGxlZ2FjeS10cnVuaworMTUzOTAgM2VmZWFhNzUyMWU0MWIyZmFkZDY4ZGIxODEzOTFlYTE0MDlmNTdiYyBsZWdhY3ktdHJ1bmsKKzE1MzkxIDU3ZDRmYzgzMDhlM2YxN2NmNzMyYjA3Mjk2NjFkOTllZTQ0MTUzMDUgbGVnYWN5LXRydW5rCisxNTM5MiAxMzJlMjcxNDlmOWYzZDY3OGUxY2FlMTNmZjQ0NDRmMDZkMmEwMTc2IGxlZ2FjeS10cnVuaworMTUzOTMgMzRkMmI1MGVmZjJlYjkzMWQ1MTNiMGNjZTg0YTBiOWQ3YzE4M2ExMCBsZWdhY3ktdHJ1bmsKKzE1Mzk0IGE1NjcwN2IwN2I4MWRkNDQxN2E0NjFlNDE1ZWI0ZWFlM2I1YmM0NmIgbGVnYWN5LXRydW5rCisxNTM5NSBkZGY5ODZhOTcxYjU2OGE0MjJiMzVmNGM1YmNiY2U4MGE3NDQ5MWEzIGxlZ2FjeS10cnVuaworMTUzOTYgYmVhM2Q3NzBiZTBhYzRlZWIwZTQ1YWIzYTI5MjFhNmQ2MGNhZTViMiBsZWdhY3ktdHJ1bmsKKzE1Mzk3IDc1ZGE5ZDYzNTMxZDMyNTc5MDQ0ODZlYzdiZGU3NmM0MTYwZWM0NDkgbGVnYWN5LXRydW5rCisxNTM5OCA2OTQ4MWNkZTUxMWQ4NjVkZjcxOWFjMGU2NjYyMGJlMWZiMTkxYTU5IGxlZ2FjeS10cnVuaworMTUzOTkgZGVmOTU5MzUyNDIyZDE4ZDdkYjNkNjE5YmQyOGNlMTk5ZTU4YmJiNCBsZWdhY3ktdHJ1bmsKKzE1NDAwIDkxN2Q4NDVlNmU1ZjIxZTQ5OWU1ZTk3YTU2MjU5OTNhY2JiNTUxY2EgbGVnYWN5LXRydW5rCisxNTQwMSAzZjA2ZjQ3NjViYTQyMWIyZmU3ODc1NDViYTQyYjUxYTY5ZDA1YWNkIGxlZ2FjeS10cnVuaworMTU0MDIgMDA0YmIyMGRiMTFlMDg2N2VjNTQwMDk3MzZjZWU3MDdhYmQ4ODNmMSBsZWdhY3ktdHJ1bmsKKzE1NDAzIDkxYjJlYzIwNzYzMzQ5ZWY0MGVhMzEyOThjZmFjMjE5Y2IxNjkyMzkgbGVnYWN5LXRydW5rCisxNTQwNCAwNmZmOTY2ZjY5ZDUyZjNiMDM3MDg0ZDQzY2E1YTk5ZjAzMmJjOTM0IGxlZ2FjeS10cnVuaworMTU0MDUgMDBhYTYzZDZkMjZlYTBkNTAwMjE5Mjc1NjgzNmY1YmZiMzVkZDc5YyBsZWdhY3ktdHJ1bmsKKzE1NDA2IGM0ZWI3MGQyNGE4NzNmY2M0M2NlNWUxOTIzZjBkNTIwNGE2Y2YzYzEgbGVnYWN5LXRydW5rCisxNTQwNyAxN2QxYTNmMWYwODVkN2E2NGUzNmY1MGJkMzBmNTM0YTRhNDkyZjcwIGxlZ2FjeS10cnVuaworMTU0MDggMDM1YWJiOTMwMzE3ZjNkYzgwZWQ0ODNmMWIyNzczODQ0ODk3M2IzNCBsZWdhY3ktdHJ1bmsKKzE1NDA5IDJhNTNmNWRjMDU5MGZkZDgwYjA2YjljY2QyYzBjNzMzOTU4OGVhOTAgbGVnYWN5LXRydW5rCisxNTQxMCBjOTI2Njg3NjZmNWRmOWI5YWUzNDMyMjdmMDJmN2I2MjNmOTYwNjkxIGxlZ2FjeS10cnVuaworMTU0MTEgMWIwODNmZWQ5YTQ4ZjNiNGU1NWE4ODRjMWQ5NjQ4NTBlMDk5ZDA3ZiBsZWdhY3ktdHJ1bmsKKzE1NDEyIGZhYTk4YzhmM2Y0MjI1MjU5ZjQwNDA0OWJhOTcxYjgxZmUyYjhkNzUgbGVnYWN5LXRydW5rCisxNTQxMyA4NjYzNjViNDRmMjM3NDg1N2Q3OTFlNmMwNjRjODc2OWI0YTY4NmYyIGxlZ2FjeS10cnVuaworMTU0MTQgMGEzMDgxZGU1NWExODU3ODdkYmM0MzY1OGJkNjI5Mzk1YmU2ODMxYSBsZWdhY3ktdHJ1bmsKKzE1NDE1IDZiMTQzY2E0ZmQ3ZjIzNGUwNDcyYmRmMTRjNDVkNDUwYjg3ZGIwNzMgbGVnYWN5LXRydW5rCisxNTQxNiA0Y2M3NGJmODBlMGJjN2ZiMjgyMzc1MWJiMmI0YTUzMjU3MGQ2YWMyIGxlZ2FjeS10cnVuaworMTU0MTcgZjdhODk5NjQ3Y2IzZmIwZjA5YjlkYzE0MDk1YjAzYmI0NmE2MTMyNiBsZWdhY3ktdHJ1bmsKKzE1NDE4IDgwNWJiOTBhZjE0ZDcxMGY0M2YxOGZhMTUwNmI1YzFmNDMzMTQ5NWEgbGVnYWN5LXRydW5rCisxNTQxOSBlMmU0MzZhNjI4OTgxOTEyMjI5MWEyZGY3N2RhNWMzM2RkN2ZlMzU4IGxlZ2FjeS10cnVuaworMTU0MjAgYjY1NjNkOWRmMDZkMDcyZTMyMjkzNDJlN2YxZTA2MTZkMWY2NzI3ZSBsZWdhY3ktdHJ1bmsKKzE1NDIxIDA1NDkzM2ZhZjc3YTExN2RkZjM3NDRiZmJmNTAwOTk0NjZhNjAyMTQgbGVnYWN5LXRydW5rCisxNTQyMiBiOTFmZGMyOWM1YmQyYzBhMzZkMjQyZDMyZmM0ZTJmZWM3ZDliYTg1IGxlZ2FjeS10cnVuaworMTU0MjMgYWE5YTYzNWE2ZjQ3N2E4NzU5OWI5YjJkMGIzNWE0OTVlNjk2ZTc0NSBsZWdhY3ktdHJ1bmsKKzE1NDI0IDFlYThjZjg4NWY3YmQ5MzFiZjhjNTlkZjY4NjE2ZDg2MTIxN2QxZmIgbGVnYWN5LXRydW5rCisxNTQyNSBiNzc4OTFmYTkzYjBlNDNkMDM0Y2M3YzM5ZDk1MDUyMDlhZDdjMzVjIGxlZ2FjeS10cnVuaworMTU0MjYgMDU3MDk3Nzk2MTIwYjg2M2NkODhkZDhjNjUxZjZiODI5ZDMxNDZhZiBsZWdhY3ktdHJ1bmsKKzE1NDI3IDRkZjUyMzk5OGU1ZDk0OTc2M2EzMjc3Mjc1MjY5NWNkZGQxYTVhZDYgbGVnYWN5LXRydW5rCisxNTQyOCA3ZDAyNTViZWUwZjk4YTgxM2RhNTcwOTBmOTA4YTBlNzM3ZmQ1MDRjIGxlZ2FjeS10cnVuaworMTU0MjkgMDZhMzQ2ZWIzY2JmMDNiMDY1ZmQxMWExNDRkNzZmYmQ1NDE4YTIyMiBsZWdhY3ktdHJ1bmsKKzE1NDMwIDJhNmRjNjVjMDYwZjU4ZGQzMDFlYThkOTk4YzNhYTliOGFlN2RhYmYgbGVnYWN5LXRydW5rCisxNTQzMSAyZmViOTc5MGI0MDQ1NmZlYzczNjRjYmFkYTk2ODM1OWM3NzBkYTdlIGxlZ2FjeS10cnVuaworMTU0MzIgYTAyZTZhNDNjYTE1YjA5OTFlMTdjNTRiYjNjYWI2OGQ4OWI0OTdmOCBsZWdhY3ktdHJ1bmsKKzE1NDMzIDQ3YmRiNjM2MTU5YzgwNWEzNTdlMmViMThkMGIwMTYwOTI2MDU4MGEgbGVnYWN5LXRydW5rCisxNTQzNCA1NjQ2NzczMzIwYmVhNmRhZDY0YjU1NDUwODA2YTI3NTc3ODFhOTJjIGxlZ2FjeS10cnVuaworMTU0MzUgMTE2ZmM0MzA1YTM5YjEzMmVkMmVmZjdjZmRkYWViNDU1OTQ2YWJhOSBsZWdhY3ktdHJ1bmsKKzE1NDM2IGRlNDM1YTU5YTRkNTM1NTVkMTUxZTA0MTBmMTUwNGVkNDkyNzM4MmQgbGVnYWN5LXRydW5rCisxNTQzNyAwN2RjM2VkMTdkZDVkOTViNmU0ZTZhZjU2ODM1YzVjOGZkY2E1YzNmIGxlZ2FjeS10cnVuaworMTU0MzggMjM0MDc0NTQ1ZWI0ZTE5N2E3ZjhkZThiMzU2NTRiMzUyZDQ2NmRhMyBsZWdhY3ktdHJ1bmsKKzE1NDM5IDg3NWU2NzcyMzZhNzE4OTg4MjZiZTk4MjA0NjNjMTJjY2VmZjBkMjQgbGVnYWN5LXRydW5rCisxNTQ0MCA4ZTgxYzZjNTI0YjIwNWFkNTEzMjVmNWE0NmE1MmJhMmMwZDllNTVjIGxlZ2FjeS10cnVuaworMTU0NDEgYjg5ZGEyMDJkMThkNzY5YzNhYTgzZjY5OWEzZmEwZjI5ODVhZDRjMyBsZWdhY3ktdHJ1bmsKKzE1NDQyIGJkYWU2YjkwOTM0ZjQ2ZGQ0NjhhM2MzMDg5NDliZDZjMzA2NzM3MjEgbGVnYWN5LXRydW5rCisxNTQ0MyA3Yzg5ZWU0MDczMGY0MGUzMDU0N2ZmMDM3ZmE1ZDAxMWNlY2ZkYTM5IGxlZ2FjeS10cnVuaworMTU0NDQgMmUxYjA0ODNiMTAxYjMwNzY0ODJjZDdjZDQ1M2ZjMmMwNzQzMThkYiBsZWdhY3ktdHJ1bmsKKzE1NDQ1IDM0ZjA5MDZmZTgyMzQ4NDYxNGRiOWZiNWExNjI5ZmIzMmI3YjJiZTEgbGVnYWN5LXRydW5rCisxNTQ0NiBjYmY5ZDY3YjVmYzFmNWIwYTM0ZTljNGRmYWY2ZjM4YTcwMjA5YjFjIGxlZ2FjeS10cnVuaworMTU0NDcgYmM5NmM5MTJkY2U4Y2Q1OWVlMGNkODQ2ZDc4NTg5ZmIxNmI1YjEzOSBsZWdhY3ktdHJ1bmsKKzE1NDQ4IDZiYWQxNjc4OWY3OWI0NTI1MzNkMjkxNzYwN2FmOTIyODhmOWE3MWYgbGVnYWN5LXRydW5rCisxNTQ0OSA5Y2I5NjA4NjA1MjhmMzM3ZmZkNDE1M2U3YzU4NTM0OGU5Njk0Nzg2IGxlZ2FjeS10cnVuaworMTU0NTAgMjBiM2I5NzY1Y2VjNjZiZGFhN2NhNGJkNTI0NmQ4MjdiNjI3MjkxMyBsZWdhY3ktdHJ1bmsKKzE1NDUxIDcyOGMxNjA1MzM2OGFlZGM2MGFkNmRiODNhMTA0YzQwYjM1NDFmZGEgbGVnYWN5LXRydW5rCisxNTQ1MiA3YjQ2NmE3M2M5NjE2NjNlOGI4YzI0N2U4Mzk4OWZhYmI5MmQ4ZTgwIGxlZ2FjeS10cnVuaworMTU0NTMgNDIwZjlhYWY4ODBiZGUzMWRlNGQxMGM4OGYyYTFiMzBhNTk4ODljNCBsZWdhY3ktdHJ1bmsKKzE1NDU0IDFkZWU5M2ViOWVlMzIxNWE3ZjVmZjZhYWRkNjcxMjg1OWU0NTQ4ZDUgbGVnYWN5LXRydW5rCisxNTQ1NSBhOTQyNjliZDY1ODU5MTk0YWQ1MWRhZTgzNDI0OGMwMDYxYWM2ZTc5IGxlZ2FjeS10cnVuaworMTU0NTYgYTQ4YjYwYjZlYjQ4MzdkYzY4ZTM2MWY4N2MwMzc0ZjY1MDUzZWQ3NiBsZWdhY3ktdHJ1bmsKKzE1NDU3IGE0OWU0NTA2ODhlMmUwZDY4MDUzZGYwZDllZGViMWRmZDIzMDg0MmEgbGVnYWN5LXRydW5rCisxNTQ1OCA5MDI4MDBkOGU4YmUxMTVlNTJlNWIyNGJiMTkxY2NkNzEzMGI4NmFhIGxlZ2FjeS10cnVuaworMTU0NTkgZWIxNzE4YzVhNTZjMGRiZWEwM2ZlZDkyY2JjZTFjZjRiYzY2NzdmYyBsZWdhY3ktdHJ1bmsKKzE1NDYwIGVlOTcyY2E2NWMxYzIzMTRhYTFhZjc4ZDRmMDcxODE0YTNlNDk5MmQgbGVnYWN5LXRydW5rCisxNTQ2MSA5NGVkZTA0YjlhOWVlYWRmYTI0YzE2OGVlM2IwYTRhZWFhZTU5ODA3IGxlZ2FjeS10cnVuaworMTU0NjIgOTBjNzkwNmIwOTk5YjUxYTc1ZDhkYTUxZjc1OWViMzA4MWI2MmU4OCBsZWdhY3ktdHJ1bmsKKzE1NDYzIDU4YWQ2MTk2ZDgxZjJiNDg5OTU0ZTE0ZjNmYWM3MmJmMWI1OWQ4YjcgbGVnYWN5LXRydW5rCisxNTQ2NCBmNTU1ZmQ4MDUwODU1ZWE4YzE5OTg0ZmRiYjczODJhNjdkMmVkOWY1IGxlZ2FjeS10cnVuaworMTU0NjUgNjA1OWE5Mjc5ZDk5OTRiMDVkYTYwYzIyZjVhYmJmNjBmOWUzOWQ4ZiBsZWdhY3ktdHJ1bmsKKzE1NDY2IDdmZjVhZTEwYTc3MWQ3YzZkOWZkODhiMmQ1MDlkZjZiMmI2MWNjNzAgbGVnYWN5LXRydW5rCisxNTQ2NyAyOTc3NWMyODcyMzc4ZjU0MzhkYTdlNGU5NWQ4ZGYyOWE4Y2IwOTMwIGxlZ2FjeS10cnVuaworMTU0NjggOWFiZWZjNWIxZDg5YTJmYjYzMTJiNzRiMGM2YTAyOGJiNGJkNzU2NCBsZWdhY3ktdHJ1bmsKKzE1NDY5IDM1MzA1OTkxNzE5YjUxN2UyOWRkNWYxYTlhYTEyM2UwODg2ZTc1NmYgbGVnYWN5LXRydW5rCisxNTQ3MCAxYmY3MTRlMGMxMGY1YWRjNmQyNTJhY2ViMThmYmY3OGNkYzNmOWFmIGxlZ2FjeS10cnVuaworMTU0NzEgOTQyY2UyMjExMjhhMjgzMDE1NTMwZjY5Mzc3ZjU4YzQzMjljY2YxOSBsZWdhY3ktdHJ1bmsKKzE1NDcyIGI4MTdmMTYzOTkzOWNmZDQ0ZjM5NmY2ZWI2YjA0ZGQ1OGFiNTAwOTAgbGVnYWN5LXRydW5rCisxNTQ3MyBiZTU1ZjVkZGM2MTViZDIxNWMxODQ2Y2Y1MjEyMDgyYjg4ZGU1YzNiIGxlZ2FjeS10cnVuaworMTU0NzQgN2VmYmI0ZTZhZmNhODMwZGIxZmU4ZGFmZDI0OTM4MmM2ZTk1ZThmOCBsZWdhY3ktdHJ1bmsKKzE1NDc1IDhkY2E1NTg2Nzk5OGE1OTJjZjA5YzNmMzk0NjlkNzliYjA0YTEzOTEgbGVnYWN5LXRydW5rCisxNTQ3NiA2YWQ4Y2QzNGFkOGM4ZjFhY2IxOGYyYmY1N2FiY2Q5MjMwMzUzMTlmIGxlZ2FjeS10cnVuaworMTU0NzcgYWVjZjM1ZjBjMTZiYTNjOWU5MzlhMjEyMzM0NWRlM2ZmNTUyNWFjOCBsZWdhY3ktdHJ1bmsKKzE1NDc4IDBhNmFmNTllYmZmZDkzYWQ1Yjg5YjJkMDE2NjUxMjBkOTk0YjMwYzQgbGVnYWN5LXRydW5rCisxNTQ3OSA1M2U1NGJkNGU1ZjRhY2IxYmFmNThlODRhMDIzMjU0MmY5NDgzMTYzIGxlZ2FjeS10cnVuaworMTU0ODAgZmY4MWE2NWUwYTliYjIyMDY3ZmM2YTVmNGMzY2NmYTA4NWQ0YmQzYiBsZWdhY3ktdHJ1bmsKKzE1NDgxIDJlYTk4ZDlkYzY2OTQ0OWY2OTE3YmE5N2FmOTAzY2VkZmRmNTU1MjQgbGVnYWN5LXRydW5rCisxNTQ4MiBhNTk4YWNlMDE5NDM5YzUwMzM5NWU5NTc4ZTgzMDQ2ZjUwYzRiOWU3IGxlZ2FjeS10cnVuaworMTU0ODMgMDUyYWZiNzQ5NTJlY2ZkMzI5ODBkMWU0ODBjMTVhOTUwN2IzYzc0MSBsZWdhY3ktdHJ1bmsKKzE1NDg0IGQwNDBjZWJkNzRhYzJmMjUzNTIwNzk0ZjNmN2Q2NTMyZDBhY2UyMmQgbGVnYWN5LXRydW5rCisxNTQ4NSAyYjQ5ODgzN2NkODU4Njg2NzcxY2MyNmE5MThjMjU1NWM2NTRhNjRiIGxlZ2FjeS10cnVuaworMTU0ODYgNDBkNmQyZmM5Y2ZmZjQ3OTcyMTU2YmQxYmRmMmVhZjM4ZTgyNDY2MiBsZWdhY3ktdHJ1bmsKKzE1NDg3IDVkZDNiMzViZmQ1MjJmOGEzMGM4ZjdjNzg4NTQ2NGI4M2Q3MTEzMWUgbGVnYWN5LXRydW5rCisxNTQ4OCBjZTNkZTI5NDM2MmI4YTg1MmJiMTA3MTdiYmM3NTc5NTFmNDNkYzc1IGxlZ2FjeS10cnVuaworMTU0ODkgNGZkODQ1OTIyYzQ5YWUwZTRjZTkyMGU4NTVmZDdlM2ZhNzVkZjY4ZSBsZWdhY3ktdHJ1bmsKKzE1NDkwIDI0YWI4NGRjNDJhYmYwOTg0MGE2YzRkZTJjYWIxZDE2NGNjYmNjOTkgbGVnYWN5LXRydW5rCisxNTQ5MSAxNDdkMGI0MTQ0ZWExN2RmMGY4MDNjNTQxOWIwZGRkM2YxZDQ3ZGQ1IGxlZ2FjeS10cnVuaworMTU0OTIgNDExOGYwMDJlNzM3NzMyZWQwNzdmMWZiZGU3YjlmZjE3NjJmMjJmNiBsZWdhY3ktdHJ1bmsKKzE1NDkzIDc5NTRmZjkzZWUzYmM2OWY3OWM5OGM0ZmQzMDFhYjAxYTk2NzliOWYgbGVnYWN5LXRydW5rCisxNTQ5NCA4MTM4MzIyMjA5OGEzZDlkNDE4ZmMyYmVkZTUzOTVhZWYwYzkyNjRlIGxlZ2FjeS10cnVuaworMTU0OTUgY2FiMjJiY2JmNWI2ZGM2YTNlOTRlNDhjOWM1YmY4ZDAxMjUyNGQzZCBsZWdhY3ktdHJ1bmsKKzE1NDk2IGQyZDg2NWQ5NTg2MTI2NDNiMDkwY2JlNjUxODBmNTRjMmEyNTdkYzYgbGVnYWN5LXRydW5rCisxNTQ5NyBkMjU3M2RiZjY4NTI1NDQ4N2RjODdiODg3ZWNkZTZiNzBmNzY0ZTA4IGxlZ2FjeS10cnVuaworMTU0OTggNzdhNWExNDY5NWIzMmE5ZTE3N2EyNTQ3MWVjZDRkNGU0ZTdlZDlkOCBsZWdhY3ktdHJ1bmsKKzE1NDk5IDNkMjZjYjM4MDhhN2QyMjBkZGY3Y2YxMjRhNzVkMmY5N2MzOTZhOWIgbGVnYWN5LXRydW5rCisxNTUwMCAxOGIwMzU2NTA1YTVhNGFjMjY3Nzg0OGJmYjU2NGU3ZmY3YjQ5NTgxIGxlZ2FjeS10cnVuaworMTU1MDEgODlmNDIwOTljNWRkNmY0MmY0MmU0MmY0YjYwYjljNmY0YzI1MDdlMyBsZWdhY3ktdHJ1bmsKKzE1NTAyIGI1MGJmN2QzOTYxZjg3ZTU2YTI4YWNiZTBmNTlkOTkwYTI2ZWM3N2EgbGVnYWN5LXRydW5rCisxNTUwMyA1NzBmYWNiNzNlMzY0Zjc3NzI1NWY2MmZlOTQ4OTkwMTVkZjZlMzExIGxlZ2FjeS10cnVuaworMTU1MDQgZTg3OGE2NDdlMDZlYWY5MWZjNGQ4MzQ0MmQ1YTA5MDc0N2Y0YjI2NSBsZWdhY3ktdHJ1bmsKKzE1NTA1IGVlYWZhYjhjOTI1YmU2ODQ0ZmZiNTNkODAxYTFmZGE4MTU4MTdjZDMgbGVnYWN5LXRydW5rCisxNTUwNiBkYWQyMDVkMTNiYjU5ZGI2MzQyNzkyZGQwYTQyYmIwYzAwZDBjMjQ4IGxlZ2FjeS10cnVuaworMTU1MDcgM2MzMGY3YjUxMGQzNDEzNmZhNmFkMzc2ZmRhNDhiNTZmNDVkMDgwNCBsZWdhY3ktdHJ1bmsKKzE1NTA4IDZjNjg0NGEyZmEzMDRmMDIwMzBkNTY4MTI5YjRkOTIyNTkxMTY0NDkgbGVnYWN5LXRydW5rCisxNTUwOSBlYjU2MmRmMGNlYmUwZWZlZmNmMGRmNjIwYmQ4MjBjNGM4ZjZlM2M2IGxlZ2FjeS10cnVuaworMTU1MTAgYmNlNDlhNmZhOGI5ZTViZDI2YjIzZTQ1OTdkZDhjMjY0MWRmYzU4YiBsZWdhY3ktdHJ1bmsKKzE1NTExIDI0OTdlMWM5ZWJjZWVhNzE4OGUzODViYmE5YTY1YzQzYzc0ZTM2ZDcgbGVnYWN5LXRydW5rCisxNTUxMiAyYzJiNDBlYjNhNjU0NjMxOTA3MzExNDA3NmRjYzUzZjI1MGYxY2E0IGxlZ2FjeS10cnVuaworMTU1MTMgN2I0OTMzNGE2MzY5NmFjYzRjODNkZDA3ZGI5MWU2YzI2MWVhNTljNyBsZWdhY3ktdHJ1bmsKKzE1NTE0IDg2ZWM3NWRhYzI3MmJhZmM3ZTZhZGQ5OTczOWFjY2MxY2NjZWIxZjggbGVnYWN5LXRydW5rCisxNTUxNSA1MjEzYWJmZTUyMzBiZWIwM2ZjMTk5NjAxMDE3NjU3MDQ4OGFiYzRjIGxlZ2FjeS10cnVuaworMTU1MTYgODg5ZjJjYjNmNzJhYWY4MjA5NjM1OTEyYjZlZjY3Y2RlMjllMDI1OCBsZWdhY3ktdHJ1bmsKKzE1NTE3IGVjZGRiMmVkNGM3NTZhNzVjZGJkZmY0YTc3YTVhYWI4NTBlNzk4ZjEgbGVnYWN5LXRydW5rCisxNTUxOCBmMGQyMjUzYjY2NGY1OGQzY2E0OTliMmEyZTU3Mzg5MWY0NzIyNmFlIGxlZ2FjeS10cnVuaworMTU1MTkgNDA2YjBlMjRkNjJlNzNmOGFiOGI0ZTU2ZjU5ZDEzNDcwYWU2YjMxYSBsZWdhY3ktdHJ1bmsKKzE1NTIwIDFkZTAwMTdlMTIyNjdiMTAxMTkzNmY1NzFmMzA2YzgwYjc3Mzc5MDkgbGVnYWN5LXRydW5rCisxNTUyMSAwZjFlNGUzOTM1ZDdjNDAwMzhiZjlkMjAwMDBjOTM5MmM0ZWJlZDMxIGxlZ2FjeS10cnVuaworMTU1MjIgZGEwMmE4OTJkNjExODY0NTk2Njk3MTM2OTliN2JkZjEzZTE5YzIxNCBsZWdhY3ktdHJ1bmsKKzE1NTIzIDllMWI4MDUwZGU2M2E0NWVhNGQyMDgzYzhiMTI3ZjEyYzVlYThlOGIgbGVnYWN5LXRydW5rCisxNTUyNCAzYzE0OWQzOGFiZjlmYzQ4OWY5NDdmOTk1NDk4YjYzNDU2MmZhZWJhIGxlZ2FjeS10cnVuaworMTU1MjUgYzhhOWQxNzY2NDY1Y2U1YWZiZWU5YzAwOTkxYjc5MDhmNmFiMGE2NiBsZWdhY3ktdHJ1bmsKKzE1NTI2IGUwZWY2MjJmOGMyM2NlOTRlYzI5ZGI1OTBjNGNjZGJhMTk5MDk3NjkgbGVnYWN5LXRydW5rCisxNTUyNyA5Njc3MzJkZDNmOTU5YmE4NmYxNmZlZDhkOWNiOWU1OWVkOTY3NzQwIGxlZ2FjeS10cnVuaworMTU1MjggOWNiY2FkMmU4NzIzODQ1OTFjYTk2Y2ZhNjNiOWE5Y2Q4NWNjMjIzNyBsZWdhY3ktdHJ1bmsKKzE1NTI5IGI1YWI0NzM2NWJhZDY1OGFjMjBhM2E5MWZhN2I4ZWIxMWExZjFhMWEgbGVnYWN5LXRydW5rCisxNTUzMCAyNjNjZGY5Yzg0MmVlNzRkNDFjNTA0OWE2ZjRkYTlkYjE1N2Y0MzYxIGxlZ2FjeS10cnVuaworMTU1MzEgZmI0MDM5YjFjZjhkNzVmMTJiZDVmOWY4ODBlZTk2MWE3OWNiNGMwNSBsZWdhY3ktdHJ1bmsKKzE1NTMyIDUyYzZhYzJkMTZhOGNhZWViODA3ODY2MTJlOGNiMjQ2NjI5OWNjZWYgbGVnYWN5LXRydW5rCisxNTUzMyA3YTRmNjQwMmM2N2Y4ODc1YzY2ZGY4MDI0OTU5YzBjNjYyNDZiYmMzIGxlZ2FjeS10cnVuaworMTU1MzQgYjA2OTRjMWMxMjg3ZDhiNmRmOTM5YTM1M2RhN2IxYmFkZDI1MWI0NCBsZWdhY3ktdHJ1bmsKKzE1NTM1IDQwZGI5MDljZTJlMzJhYWY2YTc0ZTgyOWJhYTY1NDAyNjY0MzQ5YzYgbGVnYWN5LXRydW5rCisxNTUzNiA4ZTJiMzVkMzg2YWFjYWM3NmQ3OTU0Y2Q2Y2JhM2RlMjE2YmY4NDg2IGxlZ2FjeS10cnVuaworMTU1MzcgMzQyOTQ3ZjJmYjUxNDMxZDg0Yjc0MzM0M2EyNjA5MzhiOGIxYzg0NCBsZWdhY3ktdHJ1bmsKKzE1NTM4IDM4ZGE4NjRhMGM4MDY2YWM1ZDI4NDlmMThlZDQ4YTRlMjU0YjRlZjEgbGVnYWN5LXRydW5rCisxNTUzOSAwMjYzYTk5ZDBlYjI4ODhkYzlhOTdjY2Q4ZmEzZTNiODExOTlkNWZiIGxlZ2FjeS10cnVuaworMTU1NDAgMDU3MGRlOWM4MjAyZDViZTA2M2NlZmQxOGZmMDA2MDk1YWJmN2JhMiBsZWdhY3ktdHJ1bmsKKzE1NTQxIDkzMzVkYWE5ZGRkM2IwMzg2MjYxNGIyMWUzZGYxZmMxYTBhMWFhZTEgbGVnYWN5LXRydW5rCisxNTU0MiA5MzZlZmRjMDFkNTI0NjkwZmUyMTg4YjI5MTEzYWZlODFlNjFlM2QzIGxlZ2FjeS10cnVuaworMTU1NDMgNzcxYjNlMWE3NzFjOGY4Nzc0MzQwNTc4NzgxYTIyMWMxNmNjNTg0MSBsZWdhY3ktdHJ1bmsKKzE1NTQ0IGI5MWIzNWMxZDRjMDA4ZWQ4Yjk5ZjlhOWMwNzE5ZWI5MGU1YjY2MDEgbGVnYWN5LXRydW5rCisxNTU0NSA1Mzk4YjE4ZjgzMTlkMWU0NGZlNTQyNmE2ZGRiNzMxYWNiYzVlZjI4IGxlZ2FjeS10cnVuaworMTU1NDYgZjZlNzMwZjY1YmNlNjJlYmY5NWM4MmE1N2E5OTJiZTZkYjAwZTI3ZSBsZWdhY3ktdHJ1bmsKKzE1NTQ3IGY3NjhkNGRhZDlhNjJhMzdlZGMwZmM3ODg3ODRkNzI2ODkxMDA0Y2UgbGVnYWN5LXRydW5rCisxNTU0OCA2ZjdkZjk4NWE4MGM0N2Q2MGEzYmI1M2FlZTg5OTdiYThjMTlhZjg5IGxlZ2FjeS10cnVuaworMTU1NDkgODAwNGQyOWM3N2I4YmQyOTYyOWUwN2M3OGM0YzIzMTEzZTJhMDQ3YSBsZWdhY3ktdHJ1bmsKKzE1NTUwIGYwZDAzNjg5YzFhZTAwNGZmN2VjMTYyOTgzYTRjZjlmYTAwNDgxNjMgbGVnYWN5LXRydW5rCisxNTU1MSBmOGMxYzViN2RjOWY0Yjk3MzcwNDZjYjg3NDY5M2FlZWI3YWFmMjEzIGxlZ2FjeS10cnVuaworMTU1NTIgOTM3Zjk4NTljOWRlMWI2OTY4OGM0NGY2YTk1ZjZlNjdjYjk1YzljNSBsZWdhY3ktdHJ1bmsKKzE1NTUzIDVjZTQyZTA3YWZkODVhZTljZjc4ZDg0NzU0NTQ0MTgyMjFmNDAwNzYgbGVnYWN5LXRydW5rCisxNTU1NCA1Mzk3NDQ1MWUzMWYxMTY2ODgyOGRlOTZhYzgwMjNjM2IwYmU0OGU5IGxlZ2FjeS10cnVuaworMTU1NTUgMDc0ODE5YWZkYzk1YWIxZDE2MzI0MzBmNzczMjg2MzAxNWYyNTEyNiBsZWdhY3ktdHJ1bmsKKzE1NTU2IGVlMTE5MDUxZGY3N2Y0MTVkYWViNWI5MTExODk2ZGQyMmY4MmI0NzEgbGVnYWN5LXRydW5rCisxNTU1NyA1YzBlZGIzNTFjMDcyNzkxODg1NDBjNDg4ZTRkOTA0YWU0OWY2MzQyIGxlZ2FjeS10cnVuaworMTU1NTggMDlmNzBmOTFiZGFlMmU4ZjVhYzlhZTFiMmFkNzZkYjQwYmQxZjBmNyBsZWdhY3ktdHJ1bmsKKzE1NTU5IDg4ZDBiMzM4M2ZlMjU1NjQzOWVlMzA2NTBmMzc2YTRjMTBkZjgxOGEgbGVnYWN5LXRydW5rCisxNTU2MCBkODFjOTVkZDQwMzlkZGE4ZjVhZDY5NjUzMWZiY2FiMDY5YzM3YzI3IGxlZ2FjeS10cnVuaworMTU1NjEgM2FhYjBjNTE5MDA5MGFmNjk2MTVhZDhjZTMxNDQ0MTRlNmYwMTUxYSBsZWdhY3ktdHJ1bmsKKzE1NTYyIGVlZjJiOTE4ZDA3YWM4NjkyNGRiMGFlNTAyY2JiOGExYTg2MWFkZTggbGVnYWN5LXRydW5rCisxNTU2MyAzM2RkYzEyZGYyNjdkODRkMTA4MzEyMmZkN2MwYjgxMWNkZTUwOGY3IGxlZ2FjeS10cnVuaworMTU1NjQgZjZkN2UzMjg2NjA5MjYxMWQ0NDNhNjJjOTc5MGEzNzY3ODQ3ZDM2MSBsZWdhY3ktdHJ1bmsKKzE1NTY1IDNiZTkyY2VmMTkxNzQ0OTk2ZmIwMGJmNzZmYzk4M2Y1ZjJlMjQ2MmUgbGVnYWN5LXRydW5rCisxNTU2NiBlMzZiZTdmYjc2Y2NjN2ZiYWY4NDAyYzQ2NDYyZmYxZTMyZjhmODA0IGxlZ2FjeS10cnVuaworMTU1NjcgNTgzZGVmOGNlZGY0MzEwZGMxZDE1ZTZjZWM3YTFiZTk0ZjUyNmJjMyBsZWdhY3ktdHJ1bmsKKzE1NTY4IGJjZTUzYjE0NzIxZTkxOWJjOTUyMWVmYzM3ODU4MzIwMjA1OTcwYTcgbGVnYWN5LXRydW5rCisxNTU2OSBiYzFmZTk1NjIzOTk4M2YyMmVkMzZmYTNkYmE2YzZmZDA3ZDA0YzFlIGxlZ2FjeS10cnVuaworMTU1NzAgMjU4ZWVkNDU3MGNlODkwYzEwZjczNDdkNWUwNmE5Y2Q3M2I5YWQ5NyBsZWdhY3ktdHJ1bmsKKzE1NTcxIDcxMWIzMjk2MDkzNDdkNWQyNzA2ODFmOTU0M2JiNjM4MjI2ZTViMWEgbGVnYWN5LXRydW5rCisxNTU3MiBiMTJhZGEyZWIzMTJiMDZkMDM5ZTE0MDcxMzIxMzk3M2NjNWRmZWMwIGxlZ2FjeS10cnVuaworMTU1NzMgMGMyMTdlNWYwNTViNzZlNDkwYjE4MjNlNDYxM2EwNmM0ZDM3ZDgzZiBsZWdhY3ktdHJ1bmsKKzE1NTc0IGYxZjljMzBhNDE1Njk1NzQ4YjhkOWI1NDA0MzcxNTkyNTMxZmQwMWUgbGVnYWN5LXRydW5rCisxNTU3NSBiMWIyNjBhMmRlOTg3ZTg3ODUzOTgxNzc2YTNkZGRkMjg2YWYwYjNlIGxlZ2FjeS10cnVuaworMTU1NzYgZmYwZjcyODFiZmI4NGJjMjY0NDQ0OGY4MmI4MDRmYzI1MDdjMTE3MiBsZWdhY3ktdHJ1bmsKKzE1NTc3IDQyNzJiMzY4YmY2OWY2Y2VhYTNmZTdmOWJiMThiYjVjODU1NmJlYmIgbGVnYWN5LXRydW5rCisxNTU3OCA1ZjFmOGRkYzJhMGNkZTQ5YTg3ZTkzNzhlZDI1MTk5MjMyOTFhN2IzIGxlZ2FjeS10cnVuaworMTU1NzkgNjY2NzgyMzI2ZDQyYzBkYjM1YjAxMzEyYWU2MmI5MDZkMmU1YzgyOCBsZWdhY3ktdHJ1bmsKKzE1NTgwIGEyNGQ5YWQ2Nzg2ZDY2MzkyNjYxYWEyNTZkNmM1OGFhNDg0NDI2YmYgbGVnYWN5LXRydW5rCisxNTU4MSAzNWVhNWRlMWVlODNhYjVmNTY3OWMyMTcyMDUwZDU4ZjRmOGE0ZTRlIGxlZ2FjeS10cnVuaworMTU1ODIgZjJkYjYwOTQzZDZiODMxYjk0MmZmMDU0ZGY3NjYwMTM1YjI5YTAxMCBsZWdhY3ktdHJ1bmsKKzE1NTgzIDcyM2RmMGM4MDFkMWRjNGE1YTVmNzVmNGVkZTJhZGUxNmI2ZDhhNWYgbGVnYWN5LXRydW5rCisxNTU4NCAyYzdhNDdjNjRlMzA2ZTZjYWEyZmQ4MjVjOGQ0MDEwZTUyZTdkY2ZjIGxlZ2FjeS10cnVuaworMTU1ODUgYjUzMTlmNDIyNTkxM2YwNDAxNjc1OWMxZjAyZWQzYTViNzgzNjY0OCBsZWdhY3ktdHJ1bmsKKzE1NTg2IGM5Mjk4ZWM2MzdjNWE2MTJkNzQ5ZDI5OTc5Zjg2MTkxODI1NDI3MzUgbGVnYWN5LXRydW5rCisxNTU4NyA3ZDJhMDA2M2UyNmRmZmViZTJkMjUzYTAyMjc5ZWFhMDAyMDlhZDQxIGxlZ2FjeS10cnVuaworMTU1ODggMDQ3NzRkNjIyZWEyZGUyMTliZTlhODVjMjkxOTU0OTJlYTQ1M2Q1ZSBsZWdhY3ktdHJ1bmsKKzE1NTg5IDYyYWQzNTcwOGI4YzZmNzcwMjJjOWQ0Y2ZkOGRlNjUwMWNjNWJhZjMgbGVnYWN5LXRydW5rCisxNTU5MCBhZjM4YTdhN2FmMTBiNzZjM2FhODc1ZDMwMmEzZDkyNGFmZThhOGE2IGxlZ2FjeS10cnVuaworMTU1OTEgMmY2MDY4NjdhYjRlN2IwNjE3OWRlMzA0OWU2MTNjNTkyNTdiZDliYSBsZWdhY3ktdHJ1bmsKKzE1NTkyIDFmNTMxMjA4YmUxMTczYjdkZTAzYjA0NjJlZTU3ODEzODlkMTdhMjAgbGVnYWN5LXRydW5rCisxNTU5MyBiOTBkNjAxZDRkNTkzYTgyZjQ4N2FjOGJlNTAwMTI5MzI0NGI4YzA3IGxlZ2FjeS10cnVuaworMTU1OTQgNDFjMGM2MGRjYWY1ZjUyOTZhNjM1Y2NkNWEzODA5MDY2NjQyM2JiOSBsZWdhY3ktdHJ1bmsKKzE1NTk1IGMyYTBmMmE4MWZhOGE5YjVhOWNlMjM1ZGU5NzUxM2EwNjMzYmRhMTcgbGVnYWN5LXRydW5rCisxNTU5NiBiYzM1NjQ3ZmU0NzI5YzFiMzU2NWZhNTA4NjhkM2Q4ZTlkY2IzMWJkIGxlZ2FjeS10cnVuaworMTU1OTcgM2ZlMzA0MDUwNDM0ZTNhMDA2NmQ3OTlkMjVjYTBjOTQ4YTY3NmZiYyBsZWdhY3ktdHJ1bmsKKzE1NTk4IDRlOWViODY2YWFjNmE1ODM1ZDcxZGViYWNjZjI1NTc0Yjg3NzY4MzAgbGVnYWN5LXRydW5rCisxNTU5OSAxNjE1NTk4OWZhOTMyYTYyMTgxZGE1MGI5MWRkYjhkMGVlOTA4NWJkIGxlZ2FjeS10cnVuaworMTU2MDAgYjRiYTMyYmI3NThiZWMzYzg4ZDA4ODhkZDQ0ZGRiYjM3MjhjNzIxZCBsZWdhY3ktdHJ1bmsKKzE1NjAxIDM5MTJmYjZjNjNmNjEzM2RiZmI0NmFjZTU2YmFjNmY1YzViODlhNzggbGVnYWN5LXRydW5rCisxNTYwMiA2NDVkNTdlZjE2Mzk1NjczY2Y2N2UxYjU4YWQyNjhkODA1MmVmNjVjIGxlZ2FjeS10cnVuaworMTU2MDMgNGU5Zjc3MjRhYzU1OTUwMmM1NDA3MDEwODNiMjA5ZWRiMzY1MGJjNyBsZWdhY3ktdHJ1bmsKKzE1NjA0IDA0MGMxMDk3Y2QzNTI0NGU5OWZlNjg4YzRmNDI4OTNiZDlmNTg5ZDEgbGVnYWN5LXRydW5rCisxNTYwNSBhZmQ3Y2JlMWM0OTJmNjM1NmY5YTdkMjVhNWYwNWE1ZjE1OGRkZDM0IGxlZ2FjeS10cnVuaworMTU2MDYgMjI5ZmQzYTVhZmEwODFkNGEyNGY3YWE1ODdiNzc4ZTAyNzcwZjhhZCBsZWdhY3ktdHJ1bmsKKzE1NjA3IGI1OGI5MDMzYzY1YTQyZWMwMjcyNjQ3NDdhMDVkMjA1ZTNmMzY4NmMgbGVnYWN5LXRydW5rCisxNTYwOCA0OTE2ZDQwZDk2Nzc2YTljODQ0YzgwM2Y5YTFiM2VlZGNhYjc3MDlhIGxlZ2FjeS10cnVuaworMTU2MDkgMDU3YWQ4OGFhZTlhNjM1OTczYzg4MmZhNWI4MWM4MWZlOTU0NDk0ZiBsZWdhY3ktdHJ1bmsKKzE1NjEwIDU5NGMyN2M4NzBhZGVkZmVkZmU2M2M2MjBjMjYzNDczZDk4MDFhMjQgbGVnYWN5LXRydW5rCisxNTYxMSBhOTJhZGI3ODBmNDNkOTJlNDUzYzRjMzFkNTQ0Y2IzZGIyOGEwYzgzIGxlZ2FjeS10cnVuaworMTU2MTIgZTc4N2Y2NjQxYWZiOGM5MGI5ODBmN2E1NTdhZjY5M2I2ZTRjYjg5MSBsZWdhY3ktdHJ1bmsKKzE1NjEzIDI4OTA5ZTgwZjM2Y2Y1OGQ2Yzc0NmFmNWI0NGQ3Y2Q5NWE4NzU3N2YgbGVnYWN5LXRydW5rCisxNTYxNCAyMTU1M2JkMmU4NzVmMmNkNmMzYzcxYmVhZGE5YTYzMzBjYmU3ODY2IGxlZ2FjeS10cnVuaworMTU2MTUgNjNkMzkzNThkYjA5MzQyZTA3YmYxMzQ3YWY5MjBlNjM4NzdlMTg2NiBsZWdhY3ktdHJ1bmsKKzE1NjE2IDBmZTAyMTZmNmM0ZTRhMTNlYjA0ZTQ2Mjg0NzExNDk2YjI2ODI0ZjEgbGVnYWN5LXRydW5rCisxNTYxNyAwYzg4NGM4ZDFlNzVjZGEwNDdmNzVhNmI3YTA5OGNmYTVhZDg3N2IyIGxlZ2FjeS10cnVuaworMTU2MTggNmFlMDQ2ZDRjZDA0MjAzZWEyZDViMDA4YjBhMWIxZjgwMGU3NzA3OCBsZWdhY3ktdHJ1bmsKKzE1NjE5IDE0YjFiNWRiNmNiMmRlYmJlMGRiYWUxM2IxZjJjYjYwNjUwYWM0ZDQgbGVnYWN5LXRydW5rCisxNTYyMCAzNzk3OTdmM2VlYjIwNjA0NDU1MDc3NGViNGRlZWYwYWYyYTk4MDliIGxlZ2FjeS10cnVuaworMTU2MjEgNDMyM2Q0ODU1MDQ3YjhjNzI0YjU0ZDkyN2QyMDI4ZjM0ZjZmODRmOCBsZWdhY3ktdHJ1bmsKKzE1NjIyIDM5NzFlNmIxNGEwOTc0OTdkNTFiMGJkZDM5ZGVmNjBkNmUwYTk0MmEgbGVnYWN5LXRydW5rCisxNTYyMyBhZjBkZWYwNjM2NTgwMzZjZWFhODFjY2Y1MDY4OGU5ZjI1NzZhYTAzIGxlZ2FjeS10cnVuaworMTU2MjQgYzBmZDg4ZjJhNjVhOTE2NGFjODI5ZTZiOWM0ZjFhNjRhNGUwOGU4MiBsZWdhY3ktdHJ1bmsKKzE1NjI1IDMxZDA5ODhkYThhOTczMTRmNjI2ZjBlZTE5ZmMwZDI2M2JjNTM5ZmMgbGVnYWN5LXRydW5rCisxNTYyNiBlNTQ1YTBjNDRmZTE1Y2IyZjJlMzBmNTFkY2IwM2FjZWYxNzk0ZGNmIGxlZ2FjeS10cnVuaworMTU2MjcgNTQ4Y2MxMGRmOWViYWM4MDhlNWI2NDA1OGIwMWNhN2FkMTIzZTE0NyBsZWdhY3ktdHJ1bmsKKzE1NjI4IGUwNDY0OWMzY2VkMDNkYjIxMzkwNjhmOGMxYjIwMTI5NjhiMTU0MTkgbGVnYWN5LXRydW5rCisxNTYyOSBmNGI0ODdlMzUyMTQwY2U0MWJjYzgxZDI4NjI0MTdjYWE4MWM0YWQ0IGxlZ2FjeS10cnVuaworMTU2MzAgODg4NzI3OTE5OThhMGRhMTk2MDgwMzE3YzNkZGVjYjBiMWViNjE4ZCBsZWdhY3ktdHJ1bmsKKzE1NjMxIDUyN2Y3ZTNiYjc2ZDdlYTg0ZWVmYjNjNmNlYzgxOWRhMmNkNzE4NzkgbGVnYWN5LXRydW5rCisxNTYzMiBkZGExY2E1M2VhOGEyNjE4ZTk2Y2YyYzFlNzQ3ZGIwYjMxNmE1MTJjIGxlZ2FjeS10cnVuaworMTU2MzMgZTAyNGVkMmRiNjI1YjhlM2U4ZDZmNTY5OWI3N2IyZDVjMzEyZmJmZCBsZWdhY3ktdHJ1bmsKKzE1NjM0IGVmYzZkNzc4OWQ5ZTZmNzMzOWNjMjJhZDQ3ZTAzNTVkMzZhOWRkMDQgbGVnYWN5LXRydW5rCisxNTYzNSBkOThhNzU1NzMyNmE0ZDgwZWM5MDViNjQ2YWZjZGRlNWFjOTM1NDM1IGxlZ2FjeS10cnVuaworMTU2MzYgYThjZTE5YzMyZGI5YTdjZjdhYWMyMzc5ZmM0NTNjZTdjMDU3ZmI4MCBsZWdhY3ktdHJ1bmsKKzE1NjM3IDI0MzU5M2YxMWZjZjY4ZTY3NWZiYTNhOTNmYTEzNWY4OTI2NjIxMDggbGVnYWN5LXRydW5rCisxNTYzOCA3ODIzMWJiZTYwNWRjMmVhN2NmYTgzYWI1NTU1ZWJmNTZiOWJhMDgxIGxlZ2FjeS10cnVuaworMTU2MzkgNmQ3OTE0ODg1ZDYzZjFjMzlhZjc5NjEwMmYxODJjNjQ1MDg4ZDA5NiBsZWdhY3ktdHJ1bmsKKzE1NjQwIDMwMWZmMTRiMmEwZWE2MWZiYzBlY2I5MjFlOGY1NDNlZjMxZTU0NTMgbGVnYWN5LXRydW5rCisxNTY0MSAyNmUyMGEyOGQwNTFjNmNlZDRiNzRjYTA3YmFlODYxY2NmYTI4Mzg3IGxlZ2FjeS10cnVuaworMTU2NDIgNjg4OWRlMjljNTU4NGIyOGVhOWYzMDYwZjEwYjBmOWE2MGEyYmVkMiBsZWdhY3ktdHJ1bmsKKzE1NjQzIDExZTViZjhlYjQ3MzY5YWYwZDVlYmMzMzA4NDk5OWMwZDYxYjYzNmUgbGVnYWN5LXRydW5rCisxNTY0NCA3YmFiZjkxYjZkNzVjNjY1MDJhNTdlMzBkN2U4YzJlYzkyNmMwN2FiIGxlZ2FjeS10cnVuaworMTU2NDUgMDkyYmFmNjlkNmFmODdkNjBjYmIzNWU3YWRkMDAwM2JlZDViZmE2ZSBsZWdhY3ktdHJ1bmsKKzE1NjQ2IDVhMGQxNTZjNDIwYWM3MTNiMDEyNWUxMWM0YTg5NmZjMjZjZDk0M2EgbGVnYWN5LXRydW5rCisxNTY0NyAxYWUwMzVhMzFjYjQ4MzVkMDFlOTMyNTY0YTYzODQzMjQ5MGNlNGVjIGxlZ2FjeS10cnVuaworMTU2NDggMTFkMTBlOWI1MDhkODBiMGE0ODRjZjA5ZGFjNTNjYWM4MDFlOWExZiBsZWdhY3ktdHJ1bmsKKzE1NjQ5IGI1NzUyZGUwY2ZhNDY3MzU0ZDExZjUyNDM0NjBhNzAzN2ZjNWY3MmUgbGVnYWN5LXRydW5rCisxNTY1MCBmNTRjMzY3N2JhZTdkODYxYWNiODdkMDNjY2IxM2U1NGIzMzhjZWFhIGxlZ2FjeS10cnVuaworMTU2NTEgMTdmMzVmNjZlY2Q4YmM5NTRmNzEwOTdkZDE1NjUyNWMyNGQzMGQzMiBsZWdhY3ktdHJ1bmsKKzE1NjUyIDBjOGI5Zjk2YjI2YWM3MzBiYTdjYzEwM2JmMzc0MDUwODMwZjVlZmIgbGVnYWN5LXRydW5rCisxNTY1MyAwYzJjZGQ3Y2Y3ZGM2YzYyNzJlYjA5ZTQzZTg2OWZjM2JjZGYyNzczIGxlZ2FjeS10cnVuaworMTU2NTQgZmQ1ODgxZTE3NDI3YjNmNmJjMjU0YzE2MjMxNmM1ZWRlMDQxZjE2NyBsZWdhY3ktdHJ1bmsKKzE1NjU1IDYxZjZhY2M0YWE3NDhkZDQwZThjMzgxOGM3MmM3MTFkMTQwMTA4MjIgbGVnYWN5LXRydW5rCisxNTY1NiBmMGE4ZjEyNzM0NTY0YmMyYjZiMTk0OTlkODgwNGM5YzNjMGE2NTJkIGxlZ2FjeS10cnVuaworMTU2NTcgYWRlZjk3ZjNmZWEwZjU0MDdkZTI1MjFhZTdhMzg2NzJmNThjNzhlOCBsZWdhY3ktdHJ1bmsKKzE1NjU4IGU0N2IxYTBkNjQ4NDc5NzcxMTFkOGNlMGNjZGE3NWQ0OWMxMzk1NGIgbGVnYWN5LXRydW5rCisxNTY1OSBmMzFkY2QxYWQ4YzQxMTg3OWI2NzliMjFkNWIxZWQxNGIyYjNhYTZlIGxlZ2FjeS10cnVuaworMTU2NjAgOWRmOTFmOTFlNWNjOWE0NDI0MDBiYjc0OTcxMGVkNTNiOTQ0NDM5ZSBsZWdhY3ktdHJ1bmsKKzE1NjYxIGY4MmIxNTdmNDVlMjljMTA2YjY1NmUxZGZjMjBhYTkxMTY0OWRiNzUgbGVnYWN5LXRydW5rCisxNTY2MiBlZmYyNDEwNjg1Y2M0NjBmNzUxODliNGQ2ODNmMDQyMDllYTIzM2QzIGxlZ2FjeS10cnVuaworMTU2NjMgOThlYjMwNTlhZTc2MGJjZGYxOWRlNmQ4MzM1Y2FjYmIwOTQ0MDZhYiBsZWdhY3ktdHJ1bmsKKzE1NjY0IDllZTFlNTk0NTcxZDcxNTVkOGU1ZTM2OTZjNWU3MTg1NGExMDE3MjkgbGVnYWN5LXRydW5rCisxNTY2NSA3NTJhYThkZmY1MjBiOTRlZGM1MTY5ZjY0YThmZmQ3NzBiM2I1NjJmIGxlZ2FjeS10cnVuaworMTU2NjYgMjU0MzE5NzIyOTRiNGYzN2NkNjdjNjgwNDU5ZDI2YzA2N2IwMjRjYSBsZWdhY3ktdHJ1bmsKKzE1NjY3IGY2OTEwMmMxZjQxM2YxYzY2YTRlMzdkOTAwMDIwN2ZjZmY1YWJhYmQgbGVnYWN5LXRydW5rCisxNTY2OCBkZGU3ZTkxZjJmMmU1YzMxNmQ4ZDQwYmJiOTc5MWEzYjdjY2Y0ODk3IGxlZ2FjeS10cnVuaworMTU2NjkgMWU3ODRiODc5MDM5MGUzMzY2MGNiZTliMmFmNDgwZGMyZTdiYTk5NyBsZWdhY3ktdHJ1bmsKKzE1NjcwIGJlMzZmMTAzYTk1MzljM2RkZGRkYmY1NTlmNzkwYWUzNzYwZGMzMWMgbGVnYWN5LXRydW5rCisxNTY3MSA1MTM5OGY3MWQzMDEyMjc4NDM2NDQyZmQ0ZWVlMTg1OTEyNTAwNTM5IGxlZ2FjeS10cnVuaworMTU2NzIgM2NlZTBkNzUxOTFlMjMxYzAzNmZiZGU5MjlmYjBmMjJlODVmYjhiNCBsZWdhY3ktdHJ1bmsKKzE1NjczIDM0NDUyYjg4M2E3MWQ1ZjcwYjhkODE2MTg2NTYwZGUxYWFjM2M0MmEgbGVnYWN5LXRydW5rCisxNTY3NCBlNWFhYzlkZmFjZjg3MTViZDkyZDJiNGZkZDcyYmYyMmFkM2E1OTIxIGxlZ2FjeS10cnVuaworMTU2NzUgYzhlMTM1MzVmZGMzMTlhYjIwNzE3YTc1YmQzNGI3ZjUzOGYwMmRjNSBsZWdhY3ktdHJ1bmsKKzE1Njc2IDU3ZTI5NDU0MzVjOTAwNDllNjRmNjA4MTEyZTdhZjExOWQzMjczZjEgbGVnYWN5LXRydW5rCisxNTY3NyAwMGY1ZDBkZjcwYWQ4MGUxZDhlN2JiZGRkNDgyZTA4NjkyMjM3Zjc0IGxlZ2FjeS10cnVuaworMTU2NzggMmEyY2FhZWU2Nzk3M2E4ZGJlMTE5ZjJiZjkxZmNkY2RhOTZjMzRhZCBsZWdhY3ktdHJ1bmsKKzE1Njc5IDhhMjNhYjA1N2FmNjE3NmNlMmJlMzdkNDg1MmIxZDQ3OGVlZmY2MzUgbGVnYWN5LXRydW5rCisxNTY4MCAzMWM3MjVkNzBlNjUyMTJkM2IxODc1MzUzODFkYzQ5NzljNzlhYjllIGxlZ2FjeS10cnVuaworMTU2ODEgZGVhZjI1ZGYxNWZlMjdlNjRjYjY1MWRjZjBkMGQ1MjMxYTBjNTI1ZCBsZWdhY3ktdHJ1bmsKKzE1NjgyIDEyZDBjNDY1YjEwM2NmZTk0MDg5ZGZjMGNjY2YxYTViZTlkODJmNmEgbGVnYWN5LXRydW5rCisxNTY4MyBhOGFmZWZjNGZjZWQ5OTQ3YjZlNzk2MDQ1MDAyZGZiNzBjNTRkNWVhIGxlZ2FjeS10cnVuaworMTU2ODQgMWNhYWRmYjhjYTcxMGJkOTFkODE0NmVjZTI5YTQ2MzhhNjhlNTNjZCBsZWdhY3ktdHJ1bmsKKzE1Njg1IDJkMGI5OTc3OGVkZjFiYTZjYWJlODRjZTA1NTk0ZDdlNmRiNzc0ZWUgbGVnYWN5LXRydW5rCisxNTY4NiAxMjhlN2I5OTQ1MDU5YzYwMGI1YTZjYWUxZTRiMDUxZmU0Zjk1NGJhIGxlZ2FjeS10cnVuaworMTU2ODcgZGY2ODY5YmViZTAzYzU3YzMxNDk1MDVmMDZjMmQ5Yzk1ZjI3M2FmMSBsZWdhY3ktdHJ1bmsKKzE1Njg4IDE1ZGYzZmEwZmQ0ZDdkYThlMjI4ZmMwYTEwMzdkMDA2NDQ4NGNkMTEgbGVnYWN5LXRydW5rCisxNTY4OSA1OWU0OTRjMDgwMmZjOTI1NmE2NWFlNmQ0NjVmNjkyMjQ4MDBjYmRjIGxlZ2FjeS10cnVuaworMTU2OTAgMmVlZjYzNmJhMWI2MmY2ZTEwMGM2MmMxODMyMjRhYmIwNTJkOGFhZSBsZWdhY3ktdHJ1bmsKKzE1NjkxIDY2MTgzMjU1NzRjYjk1M2VmMjdlNGZmMTUzNGQzNjU0NTRlMjhkZGUgbGVnYWN5LXRydW5rCisxNTY5MiAwYWEzZjgwZGJiMjNhZTU2ZDQwMjc3N2ZlYTQ4M2JjYmU4ZmFiMzY1IGxlZ2FjeS10cnVuaworMTU2OTMgMWZhN2MxMTliN2E1NmYyMGE5ODhkNWJhY2I4ZWJiODVhM2RkZDI0MSBsZWdhY3ktdHJ1bmsKKzE1Njk0IGI2NjBlY2JlYWViOGUzMmFkODQzOGVmNjBjMjhjOGY2ODk3ODVmMDkgbGVnYWN5LXRydW5rCisxNTY5NSA3NTNmOTE2M2RmMGJiM2YzNzkzMTk1YjJhOWNhNWJmZDg2NmE1M2JhIGxlZ2FjeS10cnVuaworMTU2OTYgYTk4MDA5YTQzOTFlNzg3OTE2ZjA2YThmZjAwZjliZTBiYjI3MzU0NyBsZWdhY3ktdHJ1bmsKKzE1Njk3IDM0MjdiMGY4NWE3Y2U3MWJhYjljZDJhMTY2M2M1YTk3MDQxNDVhNzIgbGVnYWN5LXRydW5rCisxNTY5OCBhYmJjZWI2YTI1MzI0YjViNDRjNTFiZmQ2MWE3NTVlZTcxYjZmZGExIGxlZ2FjeS10cnVuaworMTU2OTkgN2FiNWIxZWVlYmRlOTI4MzkzNGZhOWJhNjVmNGM4MjNmMmI5Yjk3ZCBsZWdhY3ktdHJ1bmsKKzE1NzAwIDg4MDA0ZjI1ZGMyNWFiYmRiMzUwN2NlMGY0MGRmMWQ2NTY2ODM2YjIgbGVnYWN5LXRydW5rCisxNTcwMSAzZjdhMzU3OThhY2VhMTA5YjRlNWU4NDM3MDdkYmZlMTI1YzRjNGE3IGxlZ2FjeS10cnVuaworMTU3MDIgOGM5NTU0ZWRiZWJiYjQ4ZjQ2ZGU2OTE1OTNhMjQyMGI0YzY3MDFkOSBsZWdhY3ktdHJ1bmsKKzE1NzAzIGE4NTMwZDM2MDIxYzZjODFlNTk5NjY3MmQ3MWNlNTQxZDZlY2JjNzMgbGVnYWN5LXRydW5rCisxNTcwNCA0MjlkZDAyMjcyZDY4MDc5MjZiMWEyM2QyZjcxZmY2NzU3YmRhZjhlIGxlZ2FjeS10cnVuaworMTU3MDUgYjFlYzQ5YjJjNWMyYTkwM2IzYjkzZGYxNzJjMzM5M2E4MmI0MjM3ZCBsZWdhY3ktdHJ1bmsKKzE1NzA2IDVkMmZiNjc0MDhhN2NjNjMyNGI4OWQyMTE2OWFkMDU1ZTlmMDcyODcgbGVnYWN5LXRydW5rCisxNTcwNyA3NTVjOWFjOWU2YWViYjVmMTQ2ODEzMTc2YjViOGZiODcxOTg4ODNiIGxlZ2FjeS10cnVuaworMTU3MDggNmIyZWNkMTcyMjAzYjRhMTE3NzJjZTVhYzk4NjIyNjllYTkyM2JiOSBsZWdhY3ktdHJ1bmsKKzE1NzA5IGFjYjAyNjFiNjk0MmYzYmU3YjBiYTM3NGVkYjFmMDM4YmI5MjMwNTkgbGVnYWN5LXRydW5rCisxNTcxMCAyYTY0ZjIyNWExMDUzMWMyNGI3NTgyOTlkOWNiZjJjZThkMDAwYjU1IGxlZ2FjeS10cnVuaworMTU3MTEgODk0ZWZlYTcxYWNmZWUyNWQ3MGJkNGJlNjFlZjI4YmVjOTBkZmNkMSBsZWdhY3ktdHJ1bmsKKzE1NzEyIDdmMDIyZTI2MGE0ZDkzMzc3MDkwYWYzNGEyNDIxZmIwN2E3OGQ1Y2MgbGVnYWN5LXRydW5rCisxNTcxMyA1MTk0OWRlNzYzNjViMWI1NDBjOTc0OGFhYjNmMzRiYjRiOWY1N2IzIGxlZ2FjeS10cnVuaworMTU3MTQgYTNlMTI4ODFjYzNjMjNlMzczZDBhOGU3M2NjZWY2YzFjNDk4ZTUxOCBsZWdhY3ktdHJ1bmsKKzE1NzE1IDQzMDk4NWQ1N2RhMzE2ZjVkMzRjOTFiNjIwMmQxMzliMWU5ZDhiNmQgbGVnYWN5LXRydW5rCisxNTcxNiBjYWFlNzUwMWRiYTU1Njg1MTU0YjlmODJlMTliZDQyMjgzMzIyNGE0IGxlZ2FjeS10cnVuaworMTU3MTcgZGMwYTIxMmZiMzUzOTBmZGJkYjkwOWIyNzU2ODNmYjgxMTc5MDY0MyBsZWdhY3ktdHJ1bmsKKzE1NzE4IDk3ZGQ2ZGMzMzUwMzY3ZjRlNjFkNDNlZDk1MWE3ZTE2NDQ2ZjdmOGUgbGVnYWN5LXRydW5rCisxNTcxOSAzYzY2NDFjODEwZGJhMmI1NzU2NGM5Y2QwZDhjYThlNjlmNWJkY2U0IGxlZ2FjeS10cnVuaworMTU3MjAgMjUxM2NkNzQxNDdjNzM4OTQxYmI1NzZkOTAxMzQxOGIyNDA4MDJhMSBsZWdhY3ktdHJ1bmsKKzE1NzIxIDQ1YWFhNzVmMDhhMzc4MDJmY2QwMjg3NjRhYTI4NGE0ZWYxNjY4NTYgbGVnYWN5LXRydW5rCisxNTcyMiBlYjkxMWVjYTllZTllODE5YzAwMDI5NTM1YzMxOTA0MjY0MzEzNjI3IGxlZ2FjeS10cnVuaworMTU3MjMgYmFjMDQ1Yjg1MjYzZjM1OWY0ZGU2MTQxMDRiNTU1ZTM1NGFmMTdkOCBsZWdhY3ktdHJ1bmsKKzE1NzI0IGFjZTEzNzAxZjMzNGQ4N2JkOTkyNDY5MGJlYmJmM2M1NWY4MzAwMTMgbGVnYWN5LXRydW5rCisxNTcyNSA5MzY2MWQwZWI1Y2M1MWRjYTU2NTU2N2FhNGExZjk0YjM3NTIxOGE1IGxlZ2FjeS10cnVuaworMTU3MjYgMDRjODlkNzdkZmRiZjdkNTVmZGQ1NmYwMjA0MzAwMzY5NTliNGU1ZiBsZWdhY3ktdHJ1bmsKKzE1NzI3IDQ0N2VmYjY0YzcyZGRjYjNhZDUxMDhmNWQ3OTUwNzM1MjUyMzY5YTYgbGVnYWN5LXRydW5rCisxNTcyOCBkMTE1YTkxY2E1ZmE3ZjNjZmM5ZTQ0ZTA0MWJkODc0NjdhNGU3YmM1IGxlZ2FjeS10cnVuaworMTU3MjkgZjMxZmZiMzdkNzJjZjczMzY0OGJmMGMzMDMxNGRiYWMxNjUzNWVjYSBsZWdhY3ktdHJ1bmsKKzE1NzMwIGU2YjQwN2JhNDcxNTNlY2I2ZjQ5ZTdjN2U3MTczYTczMTQ1YTNmYTMgbGVnYWN5LXRydW5rCisxNTczMSA2MzQzNjcxOWQxMmUwMmJkOTNkMGRhMThmMmNhOWQ2NjhlMDE5M2M4IGxlZ2FjeS10cnVuaworMTU3MzIgYmMwZDQ5NjgwYWEzZGY2YWFjOGI0ZDA0MDE5MDFlMmRjYzE2OTkyZSBsZWdhY3ktdHJ1bmsKKzE1NzMzIGZjNzdlMzRlZjI3NDNmODI5NTdiZGIwMjI3MjJjMWVmYmYzNjA2ZGUgbGVnYWN5LXRydW5rCisxNTczNCAwYjQyMjY0YWMwMjE1NDRiYWY2ZTQ4OTc3MGQ1ZWEwMTYwNmNjNmFiIGxlZ2FjeS10cnVuaworMTU3MzUgZTc5OTJkMGQ2ODA4MjhjYzI2ZDZhMDAwN2VmMWFlNDU4YzdlZGRhYiBsZWdhY3ktdHJ1bmsKKzE1NzM2IGRmNjI3ZTYxOTE2ZTIwYTEwNGUxYzk5MGY1Zjc5MjIyNDliMzFlNGQgbGVnYWN5LXRydW5rCisxNTczNyBmNzkzYzQ3YzUxMGUxMzY3MzM0YjY3ZTA0Y2UwYWI1MGM5MTM5Y2E0IGxlZ2FjeS10cnVuaworMTU3MzggZGJiMTAzZTlhNTZmNTEzZDgwZGY5YWZhYzNiZmE5MDIyMDE2MDY2ZCBsZWdhY3ktdHJ1bmsKKzE1NzM5IDc3YzY1MTEzMTk4NGIyZWViMzc3MjcyMWYyYzBlMDc1OGRjNzM2NjMgbGVnYWN5LXRydW5rCisxNTc0MCA0MDAzODIxOTAzNjQ5N2M0NDY1OWFjOWViMThlMzUyNzkzOGUzOGRmIGxlZ2FjeS10cnVuaworMTU3NDEgZGZhOGQ5ZjFjMTIzMThlOThjMmNkNDIyMDMwOGZlZmJlMTY5NzI3MyBsZWdhY3ktdHJ1bmsKKzE1NzQyIDk1NjljNTYyNTc2NTdlMDYxZWZmZjhkNjE1ZTVlMzhlYWQwNGZiMWIgbGVnYWN5LXRydW5rCisxNTc0MyA4OTYwMmYzMzI0NDdiNGVmMzJjMWI4OGE3ZDY4OTMwNGYzY2Y2NmE1IGxlZ2FjeS10cnVuaworMTU3NDQgYjU0NDI5OWU2OGM1ZmE3NGZhNDU3Y2RhYmExNTNkMDllOWQ1NDVlMyBsZWdhY3ktdHJ1bmsKKzE1NzQ1IDUzNmM2MzEyOTkzMjliMmJjMjI4NTVjMGU4YjkwMmNjNjJmNmZlOGIgbGVnYWN5LXRydW5rCisxNTc0NiA1NWUyZmM0ZDM0MGU0ODI5OTdlNDBmMGMzZWFlMDdiMDMyZDY1NmY0IGxlZ2FjeS10cnVuaworMTU3NDcgNTI3OWE2ZTAwZDM2N2IwMGY1NGFmNGUwNzllZjljZGU1NTRlMmZmZSBsZWdhY3ktdHJ1bmsKKzE1NzQ4IDY1OGM1NWMwODEzOWNjZjZiMzkzODkyMTJkZGE3N2YwMjUzMGFkYmMgbGVnYWN5LXRydW5rCisxNTc0OSAwZWI1MzFjZTA4ZDE4YmNhN2U4ZmZjMGU5NDRmYmVmNDJiMzU3ZDFkIGxlZ2FjeS10cnVuaworMTU3NTAgMjcyZGI0NjA1YmU0N2FmYTQ2ZWEyYzg5NTgzNzk3NzM5NDgxZWRlNiBsZWdhY3ktdHJ1bmsKKzE1NzUxIGU2MTU1OTZjNWM0N2MwMDE4NDIwNzJjZWZlNjIyZTk5NmRiOWM0ZDcgbGVnYWN5LXRydW5rCisxNTc1MiAxYTQwZjAwYTQ4YmY2NDlhMGJmYzYzYjVkY2YyYzllMzk2NWJjZjMxIGxlZ2FjeS10cnVuaworMTU3NTMgM2Y5OTBlZjY2NjY3OWQ3ZWViYTM2ZWM2ZTc4NDI5YjQyZmE2NGM4YSBsZWdhY3ktdHJ1bmsKKzE1NzU0IDhmNzljNWI2OWUwYWRhM2M3YzA1MzY0YWE4MWIyMzJhMjhhODgzZjIgbGVnYWN5LXRydW5rCisxNTc1NSAwMWNlODlmYzc0NWZlMWFlZGU3ZDY5MmFmMTEwNDYyNmJiNTM5MThkIGxlZ2FjeS10cnVuaworMTU3NTYgYzkxMGI5ZDlhMGMwZTg1ZTBjMjFmZDM2OThhZDQ5YzRmZGFmNGY5NSBsZWdhY3ktdHJ1bmsKKzE1NzU3IGM3NTcxOGZiZDg2MjZlOGJlZWVjNjRjODdhYjI0NzQ0NTgxMDg0MjkgbGVnYWN5LXRydW5rCisxNTc1OCAyN2YzYTE4ZmQyOTY1N2I2NWUyMDM2MjUxZWM3N2M2ZTFmMmI1YWEwIGxlZ2FjeS10cnVuaworMTU3NTkgODZkNDk4OTQ2ODY4Y2Y1YTY3MjA2YjJmMmU5MmZjMzkwMWY0NmZlZCBsZWdhY3ktdHJ1bmsKKzE1NzYwIDcxNjBiNTJjYTc0YTA2YjFiMDAzZTUyYTZiNTA0NjI0NTkwYmU4NWEgbGVnYWN5LXRydW5rCisxNTc2MSBiYzE0N2UxODliN2Y5YjQ3OTAzZWJhYmJlYjZjZGFiOTY1ZmM0M2E0IGxlZ2FjeS10cnVuaworMTU3NjIgN2NkMTUyZTE1MzljNWNiYzY5YTg4MDkwNzZmNTI2YTk2YmQwYzIwYyBsZWdhY3ktdHJ1bmsKKzE1NzYzIDVmMzYyNmZlNThjYThlZDJhMTA5Y2NlMDY0NDIwOTZlYzQzNWJmMjggbGVnYWN5LXRydW5rCisxNTc2NCA1NzcwN2RiY2MyNDVjODExNmJhMjVjMGRjODdkNDdhMTU5OWNkOGQ0IGxlZ2FjeS10cnVuaworMTU3NjUgMzdiYTcwNTZkNGFiZmI2ZGYwZjY1Mjc3MDI3Y2I4ODQzM2QzNDcwMCBsZWdhY3ktdHJ1bmsKKzE1NzY2IDgyMTgxZTgyMGRlM2M4ODhjY2JkODdjZWNhYjE0ODgyYTRjMjY2MGYgbGVnYWN5LXRydW5rCisxNTc2NyA4NzAwMzg0MmZhZWNhNmVmYzI5YmFiMjM2MDI5MjdhOWM4MTgxNTk2IGxlZ2FjeS10cnVuaworMTU3NjggNWQ4ZWYyMmFkY2E1MTQ2ODMzNzEwYzFjNGYzNDc5MjJlZTRkNmJiOSBsZWdhY3ktdHJ1bmsKKzE1NzY5IDZlMTg2MWUwZWQ2ODc2YmJmNzAyN2VlYjlkZDkwZjlmYzJjNGQ1OWUgbGVnYWN5LXRydW5rCisxNTc3MCA3YjM4Njc4YjM2NTI2NWUyYmI4ZTg1NjhjMWUwYmUzMGE0YjI0YTc2IGxlZ2FjeS10cnVuaworMTU3NzEgZmJhY2Y2ZDU1ZGM2OTM4MzM2MDYyMThkMWEyOWY4MDQ4NTNhYmY2MyBsZWdhY3ktdHJ1bmsKKzE1NzcyIDM3NDAxZWMyZTkxMGIwY2JiZWQ3Yzg2ZDQ0NzgwNDhmMjdkYWMwYWUgbGVnYWN5LXRydW5rCisxNTc3MyA5MDc2ZWZhYzg0MjBiNzYwODA2MTVkYTg2MGI0ODk5OWViY2I4OWVlIGxlZ2FjeS10cnVuaworMTU3NzQgZGFkYjBjYzVjMmQyODVlZGVkOTgyYmM5OGQ1MTljYmQyNDUyMWUwZCBsZWdhY3ktdHJ1bmsKKzE1Nzc1IDRmMTNjMmI4MzIwYmMzYWEyOTA5NWE2OWYwMDFmMDdlMTliNWI1ZWYgbGVnYWN5LXRydW5rCisxNTc3NiBhZmZlMTBjM2I5MmVjZTIzMGNiYmMxMGMwZGJlNjAzZDc0YTk5MmUyIGxlZ2FjeS10cnVuaworMTU3NzcgN2EyOTI1OGM1NWRkYWRmZmUzZjYzZjhhMTQ5YTk3YThkMTUxZGFiNiBsZWdhY3ktdHJ1bmsKKzE1Nzc4IDM4M2Y0MDRiNzZkN2ZiMTYyYjI3MDlmOGI0ZmVlYWVjYzI5YjNkMTAgbGVnYWN5LXRydW5rCisxNTc3OSAyZTJlZTExN2Q0MGZkNmIxNDQxMWNkNTBkNmEyMDA0ZDdjOGNkMzQzIGxlZ2FjeS10cnVuaworMTU3ODAgNGEzZTk4NzFiNDFiYmEwYjU1ZDhlMjlhNjZiYzIyODliZDFjYzI3ZiBsZWdhY3ktdHJ1bmsKKzE1NzgxIDFkYWM4OWJiYmNkMjE3MzNkNmYxMzJmMmZjNWYxYWIzNWIwODcwNmMgbGVnYWN5LXRydW5rCisxNTc4MiAzMGE0ZTEzOTUyMTEwMzViYmZmZjBlYzFjNGVlN2Q2NjUzYTk5ZTdmIGxlZ2FjeS10cnVuaworMTU3ODMgODdlY2UxMjdjYmEyZDY5ZWJhOTFmYjgxZmYyNTZiZGY3ZmEyMWExMCBsZWdhY3ktdHJ1bmsKKzE1Nzg0IDQxMDJmN2VkZThlOTk5Y2UxMDFhZWE3OTQwODUzZWRlZDA1NzM1OTIgbGVnYWN5LXRydW5rCisxNTc4NSAyM2U4YWE0ODVhNzBkNTZlMmUxNThjMWNkN2ExMWVjMjAxNjAyMTc1IGxlZ2FjeS10cnVuaworMTU3ODYgNTg2NjFhNTU3ZGM2OTM0ZGQ0ZWJkNDUxNDM2YmY0ZmQ5NDRlOGEzNSBsZWdhY3ktdHJ1bmsKKzE1Nzg3IGNhOTZkOGNlMTJmM2RkZTI3ZjI5MjE3Y2Q5NWM3NmEwMTMyNzQ4ODEgbGVnYWN5LXRydW5rCisxNTc4OCBiZjJlZTg1NjcyMDE1NDhmOTQ5M2Q4NmU0NzA5Y2FhMzNiOWQ1ZDI2IGxlZ2FjeS10cnVuaworMTU3ODkgOTc0ODFkN2FjNTQ4YWQ0Y2E4Y2ZhYWFjY2MwYTkyZjQyNDFlY2MwMSBsZWdhY3ktdHJ1bmsKKzE1NzkwIDcwYjE2ZGM2MTM3ZjI0OTAwZGE0NTUxZmE1ZjdhMjZjYjUyYmFkY2IgbGVnYWN5LXRydW5rCisxNTc5MSA1ZGYwMzQ4MjY3MzUyYWRkMzNlM2E3ZWU5OGViMjdhYzNjZTg5ZmUyIGxlZ2FjeS10cnVuaworMTU3OTIgMDBhOTgxMTk0Y2E2OWZmMGY0ZmE5OWI3NzgyMjhkNDI0YmE1ZmY4YSBsZWdhY3ktdHJ1bmsKKzE1NzkzIDEyNDBiYzk5N2M4ZmI4Njk0MzgwOTVlMjY2MThjZDcyNGFlMGQ0MDEgbGVnYWN5LXRydW5rCisxNTc5NCBmN2FkN2U3OTE1ZTk5ZjU3M2I0OTA5ZmZhYTRiZGM5MjQ1MmNiNmY2IGxlZ2FjeS10cnVuaworMTU3OTUgZjFlNDBhYmJlZGIzZTMxYjU2OTAwOWZjYjYzNDQwYzE0N2I4ZGRiMyBsZWdhY3ktdHJ1bmsKKzE1Nzk2IDFmNjFlZjY0NTNkNTRmMTA0ODdjNzIxNGM0NTg5MmE5NGUzNjFlZGMgbGVnYWN5LXRydW5rCisxNTc5NyBjMDlhNTcwZWI2ZWI1ZmY3NDBhYzBkMTI1YmIyMzAxMTk3MWY3NWQ1IGxlZ2FjeS10cnVuaworMTU3OTggMzYwMzIwZDJmZTk0NGQ2NDg4MGRhODFhYzgyNGQzYzNlZmRmMmI4ZCBsZWdhY3ktdHJ1bmsKKzE1Nzk5IGVhYTRjNmZhZjNjNGIyM2JlOWFhMjY3OGJhMzI0MmE2NDNiOGFhYTcgbGVnYWN5LXRydW5rCisxNTgwMCAxYzhjMTAxZjJiZTFlMzBkZGE1YTc1MTJlNTk0ZGQ5YWE2YzM4ZGRhIGxlZ2FjeS10cnVuaworMTU4MDEgMTJhYzJjMjY3YjkzMmU1YzM2OGQyYWIyNGMxMGE2YzQ4MjBjYzk5OSBsZWdhY3ktdHJ1bmsKKzE1ODAyIDg0YzJhNGQyZGY5ZjRmZjA3ZWNhMzhlZTkxNDEzYmRlYjZmNWE5YzQgbGVnYWN5LXRydW5rCisxNTgwMyAxZjI0NDE5NzhhYjE0MDA2MzZlMGZmNDBjYWU3Mzk4MTRlZGEwNjgxIGxlZ2FjeS10cnVuaworMTU4MDQgN2RmNzQ1MmQxM2NkNDMzOTI0MzUyMWMzODNiYjJlYmVhM2FiNjFlYiBsZWdhY3ktdHJ1bmsKKzE1ODA1IDBkMzA5ZjdmMDIzZmM0YWVjOGJhYjM5MTRkMWEzOGRiNGM3MWE0NDQgbGVnYWN5LXRydW5rCisxNTgwNiA3MjA1OGRjN2Q1NDViNzdlMWQxN2Y2NzY1YjRiMTA2MTU2Zjc4N2IzIGxlZ2FjeS10cnVuaworMTU4MDcgMDFkMWUxMDE4NDk1MGYyYTQzODFlNzU2ZTBmZmIxMmE1M2VkNmQ4ZSBsZWdhY3ktdHJ1bmsKKzE1ODA4IGY3MzQ1OGM1YzM1ZDAxZGQ5MWM3Nzk0NWJjYjk0OGMzNzc2ZjY1ZTMgbGVnYWN5LXRydW5rCisxNTgwOSA3MDA5ODQxMDljYjk5ZmViZThiYWFjMjhkZDZlODA1NzE1NjI1ODI2IGxlZ2FjeS10cnVuaworMTU4MTAgMGJlNGI3YjY1MGUzM2RkYTA4Mjg5ZDdmNmVhYmQyYzU0NDc0N2FkYSBsZWdhY3ktdHJ1bmsKKzE1ODExIGExOTU5NjJlMzg5Y2IyYTNjYTEyNmQ1ZGYwYzdmMzQ5M2NkNzVlMTcgbGVnYWN5LXRydW5rCisxNTgxMiBmMTMzODQxMDU1Mjg5YzdiYzZmY2JmNTVlNGY4ZDA0NzYyM2UxMzBjIGxlZ2FjeS10cnVuaworMTU4MTMgNGRiZTEzMDI3Y2IzMTljZTFjODk1MzgzY2Q3OTAxOTllMWFlNjFlYSBsZWdhY3ktdHJ1bmsKKzE1ODE0IGIwMDc0NDIzNzg3NzBkZmVmNzhjN2QwYzZjNzQ4ZmNlY2Q4N2U5YjAgbGVnYWN5LXRydW5rCisxNTgxNSAyNzdiYTgyNmNmYzk3ZmZlZDJmYTI1ZGVjYzAwNzk3YzdmMWU3MjEyIGxlZ2FjeS10cnVuaworMTU4MTYgY2I4MTA5ZTcyODc3MWNmNzVlMTcyZDE2ZWIyMmI0NzlmYzMzYTU4ZSBsZWdhY3ktdHJ1bmsKKzE1ODE3IDhhMDc0MDJlMjNkZWFmYzRlZWNhMDg1NTQ5ZDZjNWFlYTk2OTU1MjggbGVnYWN5LXRydW5rCisxNTgxOCAyYjIxY2MxYmI1NjQ5MTJhYjk2NGI3NTJkMTlhYmEwYWE3NjNiNzAwIGxlZ2FjeS10cnVuaworMTU4MTkgNTNmNDAyMmMwY2Q1ODdjOTdhZDQ3YTE1ODAzYTczMWI2NjUzMmUxNyBsZWdhY3ktdHJ1bmsKKzE1ODIwIGY0MDIwNTc1NjFiM2ExYzZjNDU3MGZjMjc2OWE0MmI2OTI2ZGVkOTQgbGVnYWN5LXRydW5rCisxNTgyMSA0YjQ4MjFiZjUzZGNmMzFiMGU3YmQ3YzM0YzViYjg0MzZiZWUxNjkzIGxlZ2FjeS10cnVuaworMTU4MjIgOWIyZTcwYjU1YzdmMTVmMzRlNzAwYjRmMzY3YzE4MTcxODM3MTIzMyBsZWdhY3ktdHJ1bmsKKzE1ODIzIGNiZGIwNTVlNzlkOTI1MDI0NzJkNmMwMjE4MmU5N2M2MTljZDM4OTQgbGVnYWN5LXRydW5rCisxNTgyNCBlYjI0MzQ0M2I4ODQwZTgyZmFiN2QzMjM4MGM0NzM3MWFmMmIwY2NjIGxlZ2FjeS10cnVuaworMTU4MjUgYmQ4ZGI3MTQyMmY2MDg5ZjZiZjA2MTBjMmQyMjEzOWQyODE4MTQzMSBsZWdhY3ktdHJ1bmsKKzE1ODI2IDdiMjRjODE4ZTJjZjJkMzE5N2M5ZDNmOThhZTgwYmQ3ZGUzNjQ2NGMgbGVnYWN5LXRydW5rCisxNTgyNyA1YmFiYzBhZGQ2NGYyNzliZmYyZjAzNmFjNzQyYTUxYzM4MWI0ZGI0IGxlZ2FjeS10cnVuaworMTU4MjggYTY3OWJkYjQzZmFkYzkxZWQ0ZTJkNzU5MTk4MTJjMTVkYWI4MmQxMCBsZWdhY3ktdHJ1bmsKKzE1ODI5IDcwNTEzMjY2N2Y3YmEyY2Q3YmM3MjM4NzIyM2JjNjg0MTQ2OGM1OGIgbGVnYWN5LXRydW5rCisxNTgzMCBiNzZkZjY4MDk5YTVmNzk2MzFiZjZkOGRlZmExYzViMGY0ZjE2YTlkIGxlZ2FjeS10cnVuaworMTU4MzEgNzM5MmU3MWY2Y2NlMDI3MmJhNzEzOTMxYmQ5MDEzNjVmNDk5YjA4NSBsZWdhY3ktdHJ1bmsKKzE1ODMyIGM4NzhkYzYzZDdhZWZhYmNhZmE2NmU1YTg0MDU4MmE0OWM3MTg4ZjMgbGVnYWN5LXRydW5rCisxNTgzMyA2YWI4ZTFiYjE2N2NkMzM3MmY4ZDVlZWNiZTllNmFjNTBhN2QyYjIyIGxlZ2FjeS10cnVuaworMTU4MzQgZWYzZDQ5OGFhMzNjMmVlNDcyMjZmMGQ5NzMzNzEwYzZhYzUyNzYxMCBsZWdhY3ktdHJ1bmsKKzE1ODM1IDRmZjNjZTNmM2NjNjIxZTRjNTkyYjM2YjVmYjk2ZjczZGE1MTQzMmQgbGVnYWN5LXRydW5rCisxNTgzNiAyY2Y5ODc0YjYyMTE0ZmZlODQ0NzYzNWMyNTY5NzYxYzVmNDRhOWJmIGxlZ2FjeS10cnVuaworMTU4MzcgNWE3MDgzNjkwODg0YjdjYzE1MTQwMDg0NzRiMmI3NmQ0ODAxNGZlMCBsZWdhY3ktdHJ1bmsKKzE1ODM4IDAzYjFjYzQ3YTg2ZDAxNDIyNzMzNjNlMTQwOTI4NGZmYTRiNGY3NGUgbGVnYWN5LXRydW5rCisxNTgzOSAxZDA0MDc5NjA5NTNhNmQ4MDMyNGFlMzZiOTllMjMxMGM5OWM5MTg4IGxlZ2FjeS10cnVuaworMTU4NDAgMTg1MDAzZDA5ZTc2NmM4M2IyYmY2MTJiYmQxNTk3N2MzMGZhOGVmYSBsZWdhY3ktdHJ1bmsKKzE1ODQxIDg3YjQ2NmI3MDJkNjA4M2RiZmI0Nzk4MjRiYzk5NzQ1ZjhkODg1NmIgbGVnYWN5LXRydW5rCisxNTg0MiAwYWNlYzIxMWEyMDkwZmM4ODQzMWEzMDBjYTU3OGU3OWExODA3ZTliIGxlZ2FjeS10cnVuaworMTU4NDMgNmIyYzY5NjNjNDBiNjhmMTFlOGIzMmRjMDU3ODRjZDUzZDdiNzg5YyBsZWdhY3ktdHJ1bmsKKzE1ODQ0IGUwYzkwMzExMmU0ZWQ0ZjRjYTA4NzAzMWIxNWFjZTIwMTEwOWEyMWEgbGVnYWN5LXRydW5rCisxNTg0NSAwODE3NGJmMjM3MDJmYzA4NzQ4Y2UxMWI5ZjE0OWFlZDk5MzRiOWZmIGxlZ2FjeS10cnVuaworMTU4NDYgOTI0NjhkNDNhMjNmMDM0ODY0ZTJiMzM3NTg3ZDg2MjAzM2I2MmEyZCBsZWdhY3ktdHJ1bmsKKzE1ODQ3IGRlNGUzMDk2MmZhYmEwMDY1OTg5ZmU1NDc0NDE2OWU2NDBlYjY4YTcgbGVnYWN5LXRydW5rCisxNTg0OCAwZjIxNmE1NGQzNGI0OTAzZTNlZTRiY2E0MzA0OTg4YWZhNjAwNGZkIGxlZ2FjeS10cnVuaworMTU4NDkgYTg4MzQ4OGI5ZGNiZjI4YWNlMjc1MGE4ZjEyMGE2YTNhMWE3YTBkMyBsZWdhY3ktdHJ1bmsKKzE1ODUwIGJmMWViZTg2OTg3ODFjZjY1ODAyM2FmZmNiNWNlMjMyOTJkZDg2NzggbGVnYWN5LXRydW5rCisxNTg1MSBkMDYwMTI5NjdlYWEyMmVjODJmOTNkYzMxMmJhNTU2ZmQ2Y2RmZDNmIGxlZ2FjeS10cnVuaworMTU4NTIgYjlhYjNiMmFjYzhjZTQwZjcwNmZlZDFhOGMxNjgwNTgyM2Y1MjhkNSBsZWdhY3ktdHJ1bmsKKzE1ODUzIDU1MmZiNDNhZTgyMzc3NjRkYmMyOTJlYWVjMzQ4NjI3NThkMTZhZmIgbGVnYWN5LXRydW5rCisxNTg1NCBjYmUwMmI4YWVlMDc4OTBmZjg3NDliODUxMjBjZThlYzdkNWE5NWQ3IGxlZ2FjeS10cnVuaworMTU4NTUgMDdhNGQxNjM3ZTA2ZGY5M2IwMDg2NDk1MWU3N2I4NTUwYmY4ZWRiOCBsZWdhY3ktdHJ1bmsKKzE1ODU2IDIyMzA5ZTk1N2ZhNzNlZTJkNzU5MTQyYTVkMGQ5NDU0NzM4YzU3ZjIgbGVnYWN5LXRydW5rCisxNTg1NyA4YzhkZTViNzM2ZGMyMWYwZTRkNDI2MDJmNDdlMmU0YTFmMTljZDVhIGxlZ2FjeS10cnVuaworMTU4NTggZDg0OWEwZDIyOTI3YWQzNjI1M2NjMTA2ZjIwNmI5MWU2ZmViMjE1YSBsZWdhY3ktdHJ1bmsKKzE1ODU5IDdiZTU0ODI0MjZkMWVmYzYyMWJlYjMxMjY1YWNkNjJhODcxOGFkNjMgbGVnYWN5LXRydW5rCisxNTg2MCA5OWNlZTBjODdmNmEwNGYwOTFjNGMwMzhjMWYxNzQ1NTE5NzIwNDRiIGxlZ2FjeS10cnVuaworMTU4NjEgMzY1ODQ0ZTc1NTg2NjkzOTllZDA4MWZiNmZmM2FjMzEwZDJmYTdhOCBsZWdhY3ktdHJ1bmsKKzE1ODYyIDNjZWE3M2EyYmJkOGMxMjY2NzA0MmUyODYyNDgwOTYyODkzMTJkMzcgbGVnYWN5LXRydW5rCisxNTg2MyA0NTlkMTk3YWRiMDhmYzY3ZDkyMDI4MzM5NmU0ODZlYjZjYTNmOTJmIGxlZ2FjeS10cnVuaworMTU4NjQgZTgzOWU4ZThkM2U5YzBhMTA2ZDBmZjNmMGM4MDZlNzk4YjE5NDVlNCBsZWdhY3ktdHJ1bmsKKzE1ODY1IDc5N2FjZjNmZmQyNjY1NzMxYzE4YzE4OTM2NTBjMWQ3MWZmMjk3NWEgbGVnYWN5LXRydW5rCisxNTg2NiBmZDg0NjdkMTM3NWQyMDRhNTk4ZGZkNDk2YzRhOTIzNmRmZWJhYWE0IGxlZ2FjeS10cnVuaworMTU4NjcgYTY3MjVhY2RmMzNiMWI5OGY0MGE5MzI2MDY1ZTMwYWZlNzc3ZDc4ZSBsZWdhY3ktdHJ1bmsKKzE1ODY4IGY2MWI0YTk4Yjk3MjkyY2Q2ZDk3Mzc1MGNlNmU3MTlmY2FiY2NiY2YgbGVnYWN5LXRydW5rCisxNTg2OSA2OGU1N2M1ZDFiZWMwNzI4NzdiZTMyYjBlYzUxMjU5ZDVkMzk3Mzk1IGxlZ2FjeS10cnVuaworMTU4NzAgYzNhMDFiNjQyYzk3MTg5YWRhNDMyZjBlM2U2ZmMwZjRiNWE3N2NjZSBsZWdhY3ktdHJ1bmsKKzE1ODcxIDM0NmYyYTFjMDJhMGEzNGEzNzBkYWNkZTUwY2Y0NzBmM2FlNWM3NDYgbGVnYWN5LXRydW5rCisxNTg3MiA1MmQ1ZmI0NzFlMTcyMGYwNWYxZWMxNzBmNTU5NTE1YzIxMWFmZDdkIGxlZ2FjeS10cnVuaworMTU4NzMgZjhiYzdmNjJkYzIzYWZkY2U2MDlkNzdkNGMzNGI3ZWE0ZWQ2Y2ZhMiBsZWdhY3ktdHJ1bmsKKzE1ODc0IDViZDEyNzMzYTY0YWM0OGIyM2JhMGZmZDQ0MGIwN2Y2OTA2ZjYwYTIgbGVnYWN5LXRydW5rCisxNTg3NSA5MGViNTgyMjRlNDMxNzIzN2YyZWNjMDliZjI0ZTE0YzVlODAwYmNlIGxlZ2FjeS10cnVuaworMTU4NzYgODE5M2UwNDU3ODdiZmYwODE2ZTI0NDZkYTNkYTI1NmM1YTFhMjE3MCBsZWdhY3ktdHJ1bmsKKzE1ODc3IDg5NDYxM2I0ZWIwNzVhODUwZmUyNTM1MDdkYjYzZTAyYWVhMjc3MzUgbGVnYWN5LXRydW5rCisxNTg3OCAyNmVjMWIzMGVmYTkzZmRmNWQ0YjMzZThiMDYzZjQ1YjFjOTY4ZmVmIGxlZ2FjeS10cnVuaworMTU4NzkgN2ZmNDBkYTA4YzJhNjQ2NTBlZTMyNzI4Y2UyZTAwY2U0YWNkN2ZiYSBsZWdhY3ktdHJ1bmsKKzE1ODgwIGZkMTJjZDk5NjE1NDQ0NGZiYzExODA0MGEzOGFmZGJlM2JhZTU5ZTUgbGVnYWN5LXRydW5rCisxNTg4MSA4OTZiMzU5ZDFjN2Q2ZDI0MjFlMzlmZTQ0YTUzYjc3YmYxOTQzYjQzIGxlZ2FjeS10cnVuaworMTU4ODIgZmFlZmZmNDNlNThhOTliMmU1MzM5YTU2MzQzMzhjNjdiM2EwZDg5MyBsZWdhY3ktdHJ1bmsKKzE1ODgzIDUzZDAwZTdjNTg0ODQzNjdiMGJjMzFjZjAxNDcwMmNhOTczYWEyZDcgbGVnYWN5LXRydW5rCisxNTg4NCA0NjIxNzU4MjdhNzRlZWJmOTA4MDc2MzE3YzZjMGZhYjkzZTlkNmU2IGxlZ2FjeS10cnVuaworMTU4ODUgNTAyMWRiNjc0MDE5MzFmNmNlNDljMzgwZmUwNTVjZTRmZjkwZjgwMSBsZWdhY3ktdHJ1bmsKKzE1ODg2IDQyNTU4ZjFiYmZjNGRjNzE5MzVhNWE4MmNmYjhlYzlmN2IyNzZhZDEgbGVnYWN5LXRydW5rCisxNTg4NyA3OGFkNGY2NGFkYzVmNDE4MjVlZWRiMWFjNjRhZmNmOTM3Y2NhYWJlIGxlZ2FjeS10cnVuaworMTU4ODggMDcwNDBkNTYxZjA5MTI0MzhmOTA3NTczYzJkNGE4NThiMjE5OTgwNyBsZWdhY3ktdHJ1bmsKKzE1ODg5IGNiOTI4ZDkyNmYyNzNkYjkxNGI3OGQ0OTRhYWVkYzZjNmIxNWM0ZmQgbGVnYWN5LXRydW5rCisxNTg5MCBlMDQyYzRjMzg2MDU2YTg0MzVhODJiNTc5MWEyZDYxNmUxN2U0YTRiIGxlZ2FjeS10cnVuaworMTU4OTEgN2E3ODcxNTM1NzI3MWU3ZjdmODI1OTVjZmQxNThiYTExZTA5MTgzNCBsZWdhY3ktdHJ1bmsKKzE1ODkyIDA1Y2M0NWQ1N2E3ZmExNjBiM2JiZWEwNzgwMTZhNDZlN2I1ZThkYzIgbGVnYWN5LXRydW5rCisxNTg5MyBlYWNhOWUyNWEwNDg5NjA3ZGQ1MWExYjI1YTE3ZDhkYWZmMmI3YzgyIGxlZ2FjeS10cnVuaworMTU4OTQgMTU2NTE0OTBhZjM0MmYwNjI1NDQ4YjIzYjM3Y2ZhZDc4NTdhNDMxMCBsZWdhY3ktdHJ1bmsKKzE1ODk1IGY4MjY1MjU0ZDhhOWZjYzU3MTg3OTIxNDFiYmM4NmFiYWM4YTcxMzggbGVnYWN5LXRydW5rCisxNTg5NiBiMzFmZmY1OTYyMmEzZGYzN2NiYzZkOGQxMmEzMmU4Yzc5OTgxM2EyIGxlZ2FjeS10cnVuaworMTU4OTcgYjZlZDhmYTI2NzVjNzdkNDFiMmNlMTYxMjI0YzZmODY3ZGFiZTdlYSBsZWdhY3ktdHJ1bmsKKzE1ODk4IDcyZTNjZGIzMmE2YzYxNDQ3YTYxZGY1NjNlM2M1ZjM3ZjZmYTMzY2IgbGVnYWN5LXRydW5rCisxNTg5OSA0MDQxNTYwOTJmNzgxYjg5N2Y0YWY2NTljYzliMTBlNDRlZjVkNGMzIGxlZ2FjeS10cnVuaworMTU5MDAgYzIyMDdkNmMwM2E4MThlZjUzZjU1YmQ5MWM2MWNhMDA0MTJjY2Q0NiBsZWdhY3ktdHJ1bmsKKzE1OTAxIDdjNmIxMmNlY2VmMjZlMzM4ZTliZTE2OTI2YWY1YTJmMjY1MzkyYWQgbGVnYWN5LXRydW5rCisxNTkwMiBjY2E4NDc0NWRhM2UwMGNiZjgzYTRmNmNlNGRlYmI1YzNiNDhiMWE0IGxlZ2FjeS10cnVuaworMTU5MDMgZjg2ZWE1YTY5YzVlYWRiODA0MGZjMThmNjdmNTI5ODQwODgyYzM3OCBsZWdhY3ktdHJ1bmsKKzE1OTA0IGY1ZjBmMDBmOTIyYTM2YWFhYzhmYTA2OTJiZmY3OGYyYzdlYjI2NmEgbGVnYWN5LXRydW5rCisxNTkwNSBmZmE0YjRiNDM3MDMxZDM0ZjAxMDBhZWZiNjNlM2RmYmRhMWFkYzZlIGxlZ2FjeS10cnVuaworMTU5MDYgMGExNDYzYmEyOTM0ODdkNmVhNTZjMDhiMWI5YjY5YjY5ZTczY2YxNyBsZWdhY3ktdHJ1bmsKKzE1OTA3IDc5NWIzMjdhOTVmZWJkYWJiZmM5YmRkYWMwMjAxYTkxM2FkYWJhZjggbGVnYWN5LXRydW5rCisxNTkwOCAyZjNlNDE4NjVkM2QzYmZiYmMzZjlhYjJmOTAxZTI2NjEwYWQ5M2ZjIGxlZ2FjeS10cnVuaworMTU5MDkgNjA3ZTUyODQxZGYyNzhmY2UyYTQxMDc5NDFlZjIxYjU2NGVkNDRmNSBsZWdhY3ktdHJ1bmsKKzE1OTEwIDY3ZTc3NDY2MTlkYTdlZDdjYjc1Y2FiNjAyYzk0YWE3M2QyNWE4MzIgbGVnYWN5LXRydW5rCisxNTkxMSBmMWY0ZDgyMmU3NjFlN2FjZWE5ZmNkMjQ1MjU2NTA5Yjc5MWNjYjIwIGxlZ2FjeS10cnVuaworMTU5MTIgM2Y4MDczYzYzMDMzYzE2M2E3OTQwZTYzYjc5NzVmNzIyZDYyM2RiMSBsZWdhY3ktdHJ1bmsKKzE1OTEzIDJiNzJhYWJhNzg5NTExMTU2NGVhNzNhYjFhMGQ4ZGU2MWFmMjM2ZGUgbGVnYWN5LXRydW5rCisxNTkxNCAzMjgxNmNlNjBhNDliMDlhZGU5NzU5MTcyOWUyODAzMzE2ZmZjMzcyIGxlZ2FjeS10cnVuaworMTU5MTUgMzU3YjcxYzY5MzNiODUxM2QyNWJmOTFlZjk0YTc1MzA0NmZjMzhmNyBsZWdhY3ktdHJ1bmsKKzE1OTE2IDk5MTlkNjVlZGM3NmNhZmZiZDZmYzI4MDAwYjY4YmYyN2ZlMTBlY2EgbGVnYWN5LXRydW5rCisxNTkxNyBjMzM5YWM3YjZkNGYxZTExMmI4YmZmZTYxZjdjNTJmYjRmOTgxZTY1IGxlZ2FjeS10cnVuaworMTU5MTggZmEzZGMyMWQwZTA4ODBlNWM0MmQwZDk2Mjg0MTg0ODYyMTk2MmNmYyBsZWdhY3ktdHJ1bmsKKzE1OTE5IDFhNDJhOWQxMDM1N2UxNDZhZmFkZGU3YjQyMTBhNjcwYzgwN2UxMTAgbGVnYWN5LXRydW5rCisxNTkyMCA1MzM1NWVkNjEyODg5MjgxODdjODVjYjdlNjFjNzRmMmMyY2MwYzU1IGxlZ2FjeS10cnVuaworMTU5MjEgMTM5ZWFmMmY5NmFiNjcyMWUzMmExOGJjMjRkZWJkNzYxZjUwNGEwNSBsZWdhY3ktdHJ1bmsKKzE1OTIyIGNjZTJjN2EzOGJkNTZkZTEyNjYzNDk3ODExYzlmNTY0MWRhNmVjZDQgbGVnYWN5LXRydW5rCisxNTkyMyBjMzYwODA2YzA2Yzc2MzI2MWFjNWRkZDgyNDE2YjRlODhiNDM1ODk4IGxlZ2FjeS10cnVuaworMTU5MjQgYTA5ZTg2MzU1MzRkZTEyYjQyZTE3OTI2ODJhMTI5ZjRhNWQzNjU5ZCBsZWdhY3ktdHJ1bmsKKzE1OTI1IDZmYWE0MTFjNjFmYjRhZWRmMzEwMmEyMjM1MDViZjlmZWJjN2QwYzggbGVnYWN5LXRydW5rCisxNTkyNiBjOWIxZjE5ODZjNDAyOTQ4ZDcyMjdkOGIzYzgyZTRhYzMxYTA0NzJlIGxlZ2FjeS10cnVuaworMTU5MjcgMDIzYTIwMThiOTZkZWJhODRmOTc3NzcyMDIxZWQxNTAzY2IyOTcwMSBsZWdhY3ktdHJ1bmsKKzE1OTI4IGY3Mjk0MjQ2ZDA0ZjhkNGM1NmQ2NmExMDMxY2E5NjQ4ZTM0MDVjYjAgbGVnYWN5LXRydW5rCisxNTkyOSA1ZjZmMDg4NjkwNWNkMzMxODUwMGVlZWIxNjE1MDQyMTFiMDIwODQxIGxlZ2FjeS10cnVuaworMTU5MzAgYjc4Yjk5NmU4ZWJjMmIwNjMyMWNmYWJmMTk3M2M2YTVlOWY0OTEwMCBsZWdhY3ktdHJ1bmsKKzE1OTMxIDIwODM0NmU5MjRjYjAyOTBhZDQwNzE3OTViMjY0MTcwNTZhZWE1MTAgbGVnYWN5LXRydW5rCisxNTkzMiBjMTdmZDJjYTY2NTljMDE0OGE4YjY4YjVlZWI0ZGFlNTQyMzIwMjMyIGxlZ2FjeS10cnVuaworMTU5MzMgMDVlNDVjNWYyZGU1YjdjZWZkNjgwZDhmMTZiN2QwNDc0NjI3YTZmYiBsZWdhY3ktdHJ1bmsKKzE1OTM0IDAwMjFmM2MwYjIzODAzMjM4ZWNjNTQyMjdhOWM5OWU1MGJlOWM5MTYgbGVnYWN5LXRydW5rCisxNTkzNSA5ZDllNWE3YzEyZGFiZDM5MTk4ZDc3NGI0YzgzMGYzM2QxZGQ1ZDcyIGxlZ2FjeS10cnVuaworMTU5MzcgZDM3YzAyN2UzZmFlOTdiZDhjNTBiNjk2ZTg5MDdmNWZhMWI1MDY0YyBsZWdhY3ktdHJ1bmsKKzE1OTM4IDI4YThiYjc5NGYxOWQ1OGM4MjIyYWJiOTU3MjBmNTMwNGE0OTNmYmUgbGVnYWN5LXRydW5rCisxNTkzOSA3YTk2ZWMwMTAzMzNkYzgyNjEyMTk3ODdkMjg5YmU0NDJhYzdhYTQyIGxlZ2FjeS10cnVuaworMTU5NDAgZDM3Mzc0NTUyYTE1ZjliNmRjMmY4YzRkMDc1YzdlMWI0YWRmNjQyYSBsZWdhY3ktdHJ1bmsKKzE1OTQxIDkxNWQ5ODU5MThlMjFkM2E5Y2RiZDdkNzNjY2ZkOTdmNjE0MDM0MjYgbGVnYWN5LXRydW5rCisxNTk0MiBlZjEzMjQyZGU0MzNlNzRkMGMyNzdkZTI5ODRlYTU5NmFlMzc2NjQ0IGxlZ2FjeS10cnVuaworMTU5NDMgNmY0NjY5ODE0ODg0YTMxMDY4ZWIwODUzZDEyZjk1NDQ5YWI4MzNlNCBsZWdhY3ktdHJ1bmsKKzE1OTQ0IDFlMzAyZDk5NmQ1OGQ4Y2I0YTk5MDFiMzk5OWQzMmIwYzljNWYyZTUgbGVnYWN5LXRydW5rCisxNTk0NSA1NGJmZmRkZGMwZWYwODMxNWQ2NTBlOWFmMmVjOTg0MzA0NTRlYWRlIGxlZ2FjeS10cnVuaworMTU5NDYgZWZlY2JiZjcyNzY1M2Q3N2E2MmFjODA3NmM5MmE2N2NhZGFhYjQ2ZCBsZWdhY3ktdHJ1bmsKKzE1OTQ3IGU5YzM0Y2NhMGM5Njg2MjQzNTUyZTZkN2MwYWY2ZjQ0Nzk4Mzg4ODMgbGVnYWN5LXRydW5rCisxNTk0OCBjNDViYzI1OGY4MzNjMTI5MGE2ZTA5NjVlYmIzYWNmZTJlZjg0NDgyIGxlZ2FjeS10cnVuaworMTU5NDkgNTkyOTRkZDRiZmRkZjFlMTQyODM3MTY4YmRiNjc2MDZmYThlMmVmNyBsZWdhY3ktdHJ1bmsKKzE1OTUwIDkyYmE5MjhjMDliOGI4Y2MxYTc2MjExMzU0NGI3ZGQyMTExZTkyMTYgbGVnYWN5LXRydW5rCisxNTk1MSA3ZTI0NWJjNTk4YjdiYzM3MTgzYTU1YTY5ZTMzNTFkYjJjMDUwMTk5IGxlZ2FjeS10cnVuaworMTU5NTIgYzdiZTg0NzgyNmIxNzI0MTBmMmQwZTZhOTFmYmM0OTY0ZGFjMjBiNiBsZWdhY3ktdHJ1bmsKKzE1OTUzIDdlNzE5NzVlYTVmMDkwZmZmYzE0M2U5MTc3Y2Y0OTRkZjU0Yjk0MjYgbGVnYWN5LXRydW5rCisxNTk1NCAzMTI4YzNjZDE4ZTg2Y2VhNDVmMjIwNWZmMTc0MmNjMjNiMzFiZmRjIGxlZ2FjeS10cnVuaworMTU5NTUgNTQxZGI1ZjYyNTllOTZhYzM0YzczY2Q5YjBiNzk3OTVkNDI5Mzc4MCBsZWdhY3ktdHJ1bmsKKzE1OTU2IDc1M2FmNjJhYjhhMTliZjlhZWIzMzY4ZTI0NGFiYjI1MTc1YTExMmUgbGVnYWN5LXRydW5rCisxNTk1NyA5NjE2N2FmOTBmYTAzMTE0ZjE5OGUzMmRjYjc2ZWIwMTQxYTJlZmY0IGxlZ2FjeS10cnVuaworMTU5NTggMTg5MjBlYWExMjI2NGE3YWZhOGQ3NGFiYjkzNDBiNWJkZGZmMWYwMSBsZWdhY3ktdHJ1bmsKKzE1OTU5IGVkZTE4ZmQ1ZWQxNWFlOGQ2ZmVmYWY1MmEzZjRhNjMwMTcyMTcxZjEgbGVnYWN5LXRydW5rCisxNTk2MCA0ZGVlZWQ1OGJmNzY0Y2Q1NjdiNDg1ZGNjZGFjOWU2YzBkZWUyODZkIGxlZ2FjeS10cnVuaworMTU5NjEgYzUyNzljMGY3MTZmMDViMjdlYzBmYzAyZDZmYWI4ZjM4MjczMTk3NSBsZWdhY3ktdHJ1bmsKKzE1OTYyIGVlMWEzNGU1ZWRiMTI3NWNjYjNmNTc1ODc1OGFmZmY2NzM3MWVmNjAgbGVnYWN5LXRydW5rCisxNTk2MyBhMDkzZmFkOTJjY2Y4OTUwNDg4ZGNkNmQ4ODA3MTg5Y2ZlNjY5ODEwIGxlZ2FjeS10cnVuaworMTU5NjQgNzljNGEwNTQyNTcyNDQyZjRmNGRmZDgzZjI4NGE4ODg0NWNkYjI1ZSBsZWdhY3ktdHJ1bmsKKzE1OTY1IGE2MjVjZTJmYmZiZDg1NTJhYWEzNGU3OWNhOTViZWZhZTg0MTBiOWUgbGVnYWN5LXRydW5rCisxNTk2NiA1YTRkZjlkOWM3YmY1NmUzYjQ3ZjZkYmEyZWY1MGJjMjk1MmFjMWE0IGxlZ2FjeS10cnVuaworMTU5NjcgYjlhNTZlNWUzZDIyN2ZkOWQwMWQ3OTZjZDVjZGU3NmYwY2ViMGU3MSBsZWdhY3ktdHJ1bmsKKzE1OTY4IGQ2NjQzNTMzN2UxYzJiNTUzYjRjY2I4M2FhY2EwOTc5NGM3MWRiY2EgbGVnYWN5LXRydW5rCisxNTk2OSBlYTRiYmFiYzc0OTczMDliZmU1MGMyYmFkYTkxNWUyOTIzYjc4NzVmIGxlZ2FjeS10cnVuaworMTU5NzAgOWQyMDY4NzNjNWJkNGIxZmE4ZTg5ZGZmNzVkYTRiMWI5NTY3MzUzZiBsZWdhY3ktdHJ1bmsKKzE1OTcxIGIxMWUwYTg5OGRlMDk1NWJkNGNlZmFkZTg2YWM4NTNmZjI1MDYyOWYgbGVnYWN5LXRydW5rCisxNTk3MiBmZjI0M2IwZjE2ZWViODg1NTkyN2MxMjYwOTViNTg1ZjliNWM4YTYwIGxlZ2FjeS10cnVuaworMTU5NzMgODI3YjU3NmUyNjViOTYwOGQ5MjVmMzMzYzBjNGE4ZjEwODE4MDk3MyBsZWdhY3ktdHJ1bmsKKzE1OTc0IGYyOWZiYTVjOThiZGY3YjA4MzMyNjMwZTA1NWJkMzgzNTkxMmQ2ZGEgbGVnYWN5LXRydW5rCisxNTk3NSBjMjkwOWVjN2Q0Y2RjYTAyNTM4NWVhMmJjNmVlYzg5YjA4MmNlNzM4IGxlZ2FjeS10cnVuaworMTU5NzYgNTU1YjJlMjJlZTg5ODJkYTJkYTZmMGRiOWZhYmE0N2VkMTYzNGE5YiBsZWdhY3ktdHJ1bmsKKzE1OTc3IDA5NzY4NGI5M2NhOWMxMDQ5YTgyNmYyNzY3ZjViNzZkNTdmZTFhNzkgbGVnYWN5LXRydW5rCisxNTk3OCA2M2ViYjY5MDY4Nzc0OWQ4MjA0ZWFhMWJlMTk4YjI5MmY0NDMzMzYzIGxlZ2FjeS10cnVuaworMTU5NzkgZTJhZWU2MTkwYjE5ODUwMDNlMDJiOGI2ZmIzMmFiYWE5NTJhNzc4ZCBsZWdhY3ktdHJ1bmsKKzE1OTgwIDc5ZGMxZWY1YzIyZDE5NjkxODkyNDc2Y2M3MTk2MDY1ZTJhYTg5OTUgbGVnYWN5LXRydW5rCisxNTk4MSBhOTJmNDNkMjBlY2IxNWY4Mzc4YjUyYWY5ZjFjNGE2ZDUyZTZlYTQ0IGxlZ2FjeS10cnVuaworMTU5ODIgMDQyYjk2Y2RmN2Q3OTQ1MDA4MjBjNzBkZjQwNzdmODUxZTNhZmJmMiBsZWdhY3ktdHJ1bmsKKzE1OTgzIGQ3YjQ4Yzg0OTE4OTUzNGI1M2Y0YTM0M2Q0NzA5OThhNjRiNmIxMDkgbGVnYWN5LXRydW5rCisxNTk4NCA1ZGQzODFhZWIyM2IyN2E4OGEyNDRjYjRjZmQ0ZTQ0Nzk1NTIyNzQzIGxlZ2FjeS10cnVuaworMTU5ODUgMDVkNWQzZjlhMThjYmZhZmRiODA3NTQ3NzI4NDJjMjFlNzg5ZGZkMCBsZWdhY3ktdHJ1bmsKKzE1OTg2IDFjZjU0NGJhMjM5ZTU2MTY1OGRlNGI1MzY0MGUzYTMxMjkwYmYwMzYgbGVnYWN5LXRydW5rCisxNTk4NyAyZWJmZmYxMzkzNmMyNGMwZDFiZmYxZGM1ZTE2ZTBiODEzMTRmYmIxIGxlZ2FjeS10cnVuaworMTU5ODggMTI0MzdkZWIwNjgwYWJhZmMxMTc0N2RhZTE2YTkwMDg5M2NjMWE3MCBsZWdhY3ktdHJ1bmsKKzE1OTg5IGMyZGY1ZDI4MDM0ZGE1NzdiODliNWJlZDBjODJkMjBhMjg5MmJjNmUgbGVnYWN5LXRydW5rCisxNTk5MCBmMTk1Yzk5ODFmYTFhOWE2NTBlYmQzYjUwNjFiYzUxYWNlZjJlYjAyIGxlZ2FjeS10cnVuaworMTU5OTEgMzQ0YWIzNDhmMWU5YzlkOGIwMDczMzJmODYwOGMwZGU3YTM1OGY4NCBsZWdhY3ktdHJ1bmsKKzE1OTkyIDcwNjZiZTJlZGMzYjY5ZDVmNjkzMWU1MWY0MTk3ZDE4Y2MxZjNlNDggbGVnYWN5LXRydW5rCisxNTk5MyAyMDllYjQ0Y2RiZjdlMTE0NjYyMjU4YTI1NGM4OGM1ODEzZDM2MmI0IGxlZ2FjeS10cnVuaworMTU5OTQgNjhkZDQwMzA3MTcyNmUxZjk5YWM0OWE1NjllNjkxNTc3N2MyNjQxOSBsZWdhY3ktdHJ1bmsKKzE1OTk1IDg2YzlmNjkxZjM3OTBhMzkwYmI3MjM5MGQwMjQzYzk4Nzg0YTVmZTQgbGVnYWN5LXRydW5rCisxNTk5NiA3OWY4ZjZiOTYzYzI2OWEyNDlmNDY4MDkwNGI1ZWEyYzFiMDQ1ZmU2IGxlZ2FjeS10cnVuaworMTU5OTcgNzhiZmM3NDBiNjFjZDFkOWNlMWRiNmVmNGEzYzAwNjg1NGZlNjU1MCBsZWdhY3ktdHJ1bmsKKzE1OTk4IDMxZjlmYTQyZGY2MDBhYWNmNWVlMDgzNzViYWI0YzZkOWZlMTEwZTIgbGVnYWN5LXRydW5rCisxNTk5OSBhZjcyODA1ZTk5NDJhZDJmZGY1YWZiOTI1YzlkMjUzYjUzYWMyOTExIGxlZ2FjeS10cnVuaworMTYwMDAgMDQ5Mzk1YjAyNjAyYTM0ZDEwYjQ1YTYyODg5MDFkMWY5ZDQxNTFkMyBsZWdhY3ktdHJ1bmsKKzE2MDAxIDY1MDE1NDI5MmVlMTE3M2E2MzA0ZTJiNjZmMTFhNDhjODcxMTdkZGEgbGVnYWN5LXRydW5rCisxNjAwMiA1M2JlMjg1Y2ZkMmNhYzZiYjliNjg2ZGE0NDM3MmI5YTAwNDAzYjk0IGxlZ2FjeS10cnVuaworMTYwMDMgNjEwNGI2MTIxNWU2N2NhNjNkNmI4NTM2MjIwZTQ3ZDVlYzZmNWE3YiBsZWdhY3ktdHJ1bmsKKzE2MDA0IDU0NjYyNzBkYmM5MjY4YTBjYTFhOTdkZGZiOTI1N2UzOWQ5MGMxZDcgbGVnYWN5LXRydW5rCisxNjAwNSAxZTQ2YzIzYjFkYWRiNzRlNmVjMzM3ZTI2ODliMGYyMmM5MDJjMTg3IGxlZ2FjeS10cnVuaworMTYwMDYgYTc5MmI3NGNjOWU4YzM1MjY3Yjk5YWJkOGU5OTk3MzU3NmJkNGE1OCBsZWdhY3ktdHJ1bmsKKzE2MDA3IDA5ZDkxNzJmYjFkMzRjZDcyMDBkMDY1YTdhNjk2MWE3MDViNTc2YjMgbGVnYWN5LXRydW5rCisxNjAwOCA1N2Q2YTMxZWU0MGUwMTQ5ZDE5ODc5OTM2OTY4NzUzZGE2MWY1ZmM2IGxlZ2FjeS10cnVuaworMTYwMDkgNTg5MjAyYzY0ODg3OTFkMGU3YzczMjdjOGFjNDlhYjA5MjNkMDAwMiBsZWdhY3ktdHJ1bmsKKzE2MDEwIDhlZGU0YjA4MDNmYjc5ZmZjMzdjYjJkMDc2ZGIxNzc1ODY2YWIxYzIgbGVnYWN5LXRydW5rCisxNjAxMSBhYzRkM2NmYmMxYzlkMTg0MTk0Y2I5YzJlNTljM2FmZDEyNzczZGRiIGxlZ2FjeS10cnVuaworMTYwMTIgODg2NDBlY2Y1NTA2MWYzMjVjZWY4YjEyMjJiYTRmOGE5NzEwZGJkNiBsZWdhY3ktdHJ1bmsKKzE2MDEzIDg2MTc3ZmIwZWRkODM1Y2NjNGI4OGQ3NmQxMmNjODQ3NmExMDllYmYgbGVnYWN5LXRydW5rCisxNjAxNCAzMTBkN2NiYmEzMjkyMzljOWJjNjdhMmI3Mzc5NzUxZDBjMDkyOTU4IGxlZ2FjeS10cnVuaworMTYwMTUgYTZhNjRlOWFiMjM4ZDBmZTQxYzI2ODRmNmVhMDVhYjlmOTVlZGU1MyBsZWdhY3ktdHJ1bmsKKzE2MDE2IGZmMDk3NGU4ODIxYmVlYzMyZDc2MWUwMWM5OTMxZmY1M2M2ZjZlMTAgbGVnYWN5LXRydW5rCisxNjAxNyA5MTZmYjAyNGNlOTQyZDA5N2IwOGNlNTc3OTQ3NGNhNmQ2YmE2YjY0IGxlZ2FjeS10cnVuaworMTYwMTggODdlZTgyZTVjNTZkMzFiNzcxZjc2ZWQ1Y2UzMGFjYjYzMzRmOWZmNCBsZWdhY3ktdHJ1bmsKKzE2MDE5IDM0YTZlNWZlY2ExOGUzZTRiMzJhZjUyZDE2Mjk0NGRiZTI3MWRjNTQgbGVnYWN5LXRydW5rCisxNjAyMCBiYWJlN2I5Y2M2MTc0NTZmNDJkMzU1ZjFjMjk5ZTA1Mzg1YmFlMDk4IGxlZ2FjeS10cnVuaworMTYwMjEgM2RhNDkzNDIxOWU1ZjQ3N2U3NWM0ODg3YjhkNmRlOGI0NDViMjYyZiBsZWdhY3ktdHJ1bmsKKzE2MDIyIDVmYzE4YmNhN2Y1NWFjMzNhNTI5MGM1MjQwOTgwNzExNGJiMzNkOTcgbGVnYWN5LXRydW5rCisxNjAyMyAxYzVhNWFkZTA0ZTI3NjJjOWIxMWUyOWRiOTEyOWEyZjI2NWFhMmRmIGxlZ2FjeS10cnVuaworMTYwMjQgYzZmZDZmZmJjYjE1Yzc4MWNhNGQ0ZWI4NTI1YjZlZDZmZWFlMjY4MyBsZWdhY3ktdHJ1bmsKKzE2MDI1IDg0ODc5YWI3MWI5ZjNmZDhkYWY5NmJmYjc3YmRmMTFhMTI2Nzg3ODEgbGVnYWN5LXRydW5rCisxNjAyNiBiOWFkYjc5Y2RlYjYzNDA5ZjlmNTFkNGI0MThiMWYyMzgzNjBmODVlIGxlZ2FjeS10cnVuaworMTYwMjcgZThiYjBkNTM2NjMzYWU3OTUyMzA5OGEyNTdmMThjNGQ1MjM3NGQzNCBsZWdhY3ktdHJ1bmsKKzE2MDI4IDRjNGU5NTE0NzI1ODExMTI1ODI3NGY1NDRkNWRlZTc1NmZkZDZkYTIgbGVnYWN5LXRydW5rCisxNjAyOSA0Y2UyNTU0OTVkYTM0MDMwNDQwYTU4YjdjNzBmNGE1NWFiYjliYWM3IGxlZ2FjeS10cnVuaworMTYwMzAgODMzNzdmYzI5OGQ4M2M4YWY0ZWQ3ZWZkM2Q4ZmNkZTZlNTkyOTIxYyBsZWdhY3ktdHJ1bmsKKzE2MDMxIGU3MmNiNDIxNzZiYzcxOTNkOTUyMjMyNGQ3ZDM1YzQ1YWNmNGM1NzAgbGVnYWN5LXRydW5rCisxNjAzMiA2MTU1ZjUzMmYxZmNjNDg4N2JmZTg5YTUwOTE5YmFkYzQ1MGQ1ZmVhIGxlZ2FjeS10cnVuaworMTYwMzMgODlmMGE2NjRlMjgzMGIxY2ViZWQzZThkYjNmYjlhMWU1MDI3Y2ZiZSBsZWdhY3ktdHJ1bmsKKzE2MDM0IGZkYjc4Y2ZkOWU3NjdkOTJhODIxMTYzMDA4NTY5ZDJlYjA5MjkzMWEgbGVnYWN5LXRydW5rCisxNjAzNSBlZmI0YjBjNjY2ODhlNDM2MzJkYzEzNTViOWM5ZWI3MDA3OTViNWMyIGxlZ2FjeS10cnVuaworMTYwMzYgYjUzMjkwYjdiNTQ2OGExOWI3ZThkMDhmNDgwYmQxYTc5NDA1YWQ1OCBsZWdhY3ktdHJ1bmsKKzE2MDM3IDFjMjdiMzdlZDFhMWFlNzdmMjVlNjVlNjZiODIzZTQ2MWI2NTgzYjMgbGVnYWN5LXRydW5rCisxNjAzOCBiYzcxNGE3YTAwNDI4NGJlZGM3NDc4YjQ1NWE3NTRhZWNlNTJjMDdlIGxlZ2FjeS10cnVuaworMTYwMzkgZTJiMzYyMWU2NTIxMzkyYWViNmJiN2NjYzc1ZjU5YjM1YmY1MjZlZSBsZWdhY3ktdHJ1bmsKKzE2MDQwIDMzNzBlZGFkMDhjZWQ1ZGY4ODhlYWNiYTc5NmY5YWFlZWE2MDU3OTYgbGVnYWN5LXRydW5rCisxNjA0MSBlMmVlMzhlYTdmMzVlNGQ0YTAzZTA3M2NlMTE0MzAwMjNiNGRkYzMxIGxlZ2FjeS10cnVuaworMTYwNDIgNTAzYTczOTk4MjIyYzUzMTI0NjljODFiNmIwOWQ2MmI2YzRjZTZhNyBsZWdhY3ktdHJ1bmsKKzE2MDQzIDNmNTk4Yjk4ZDdmOTIyNDA2ZmM0ZDE4MzdiYmIwM2IyNDk5MDlkNzEgbGVnYWN5LXRydW5rCisxNjA0NCA5MWRlM2YwM2FlODkyN2FmMmY3NzkwMTE3MjJkNDU1YjEwNzZiMTIyIGxlZ2FjeS10cnVuaworMTYwNDUgM2UwN2E3MzE1YWY1MmZmNjg0NWY5OGM0OTA2YTRkZWZmZDRhNTY1ZiBsZWdhY3ktdHJ1bmsKKzE2MDQ2IDUxMDJlZmZiMGM0YjRjNWViNWU2YzJkZTg1Yzk5YzZmOTgwOGI2YTUgbGVnYWN5LXRydW5rCisxNjA0NyBlMGViNDMxZTQzOTNhY2Q3ZjYyNmIxYzJiYTczOTZiMmNkZmM1OWMzIGxlZ2FjeS10cnVuaworMTYwNDggNzI5NWYzNjAyNjRlNDdjYzUxZTZhZTFhNjEwN2YxMDdmMTE5MDA1MCBsZWdhY3ktdHJ1bmsKKzE2MDQ5IDQwMTFhY2ZlMTQzM2ZhOTYxNWJiMmQ2NWRkNGFiM2Q2OTExNzE1MGUgbGVnYWN5LXRydW5rCisxNjA1MCBmMTE5YzJkOGQ1NjAzZjdmZjRjMTk5OGRiYmY5YmY0YzUzZjQ4OGRiIGxlZ2FjeS10cnVuaworMTYwNTEgY2IxODY0MDI1OTlhNzI3ZmFhMTAyNDMyOTcyOTA3NzhkNDAzYTRiMiBsZWdhY3ktdHJ1bmsKKzE2MDUyIDdlZGM0ODBiYjlmMzk4ZTlkMjQxZWY1OGE0M2Y1M2U0Nzk5MzY0OWMgbGVnYWN5LXRydW5rCisxNjA1MyBjZmM2NGZhZjEyY2U1OTkwMzlhZTE5ZmRkNGI5ZWQ0NTJlZTkyMzQ0IGxlZ2FjeS10cnVuaworMTYwNTQgMThjODFmMWEwZGEyMzQ4OTAzOTRiNzE2ZjJjYWU2YzJmOWRlNzVmZCBsZWdhY3ktdHJ1bmsKKzE2MDU1IGUzOGJlODcxN2VjMDMxYjYxMmI4ZWY1NTYxYmFlMzI2MzZkM2NiZmUgbGVnYWN5LXRydW5rCisxNjA1NiA4MDBhNzVkMDc4N2YwYTAxYTg4OTVjYzZkODZlY2I5OTliM2VhNGE3IGxlZ2FjeS10cnVuaworMTYwNTcgNmU0ZGYzNDE0YTVmY2Y1MDBjNTc4YmEzYzEyYjYwZjlmZWFkNTNiNyBsZWdhY3ktdHJ1bmsKKzE2MDU4IGI5MWI1NzYyYjFjZDExNGFiN2MwMzdmZDM2NGU4OTg1ZGRlYWZhZjIgbGVnYWN5LXRydW5rCisxNjA1OSBhNWUyMGQwNzQ3MGM1ZTdiODMxOWQ5MDU0ZmQxM2U0Yzk5MDM4YTZmIGxlZ2FjeS10cnVuaworMTYwNjAgNDZlZTI3MTVkMjk4MzliZDYzZWFiYWIyNDY5YmIzNTlmY2UzZmJhNCBsZWdhY3ktdHJ1bmsKKzE2MDYxIDJmYjNmYjY0NmNjNTk1OTYzMDRhMzU4ZDU2MzRjY2NiODM5ZTJlZGIgbGVnYWN5LXRydW5rCisxNjA2MiAzZGI2MmM3NWU2NWIxNTcyOWZlNjYwZTdiMDJkZTIwNDMwYmI1YTA0IGxlZ2FjeS10cnVuaworMTYwNjMgMWNmNjczODI0OWFmZjVlMzMzOWJlNzkxZjNiNDllYWQwM2Q2YTIwYSBsZWdhY3ktdHJ1bmsKKzE2MDY0IDkwNTQwY2RmOWM4ZDk2NDdhNmY0ZTZjODhmNmZhOWMyOWRmODhhNTkgbGVnYWN5LXRydW5rCisxNjA2NSAzNjA3NDIyMjE2MWMwYjFiNGU3Zjk4YTVkNDVjNmZmZmI0MzdjMTU2IGxlZ2FjeS10cnVuaworMTYwNjYgNTBmOTc3ZTFlMmFiNzBkMmJlNzg5M2ZmZDI5YjVkZDlkNDJjYjAzMSBsZWdhY3ktdHJ1bmsKKzE2MDY3IDMzY2U2M2IwNjM1OTA4ZmEzZmMwMjM3NzE2MGFkMTUwYmQ3OTQ5YzEgbGVnYWN5LXRydW5rCisxNjA2OCAzODRmYTliOWUyNTNjYTBmNzQ0MDdhY2MzZmQwZjQ0Y2EwY2UxZGYzIGxlZ2FjeS10cnVuaworMTYwNjkgMDg1YjAxNWE5MjkxZDlkNWExMzY5OGVjMzgwN2MwZDQ0MmI3NjE3ZiBsZWdhY3ktdHJ1bmsKKzE2MDcwIGZjMmFkNmZhMDhlY2U5MTJiMzhkNTE3NmU1YTE2NzdlNDc1MjllOTAgbGVnYWN5LXRydW5rCisxNjA3MSBjN2VmMTU4NTk4M2M0NjY1NGNjNGM3YTIxMTAyYTI5OTVjMDhmOTI0IGxlZ2FjeS10cnVuaworMTYwNzIgM2MzNWJmN2I1ODBiMDIyZThiN2JlNzYwMzRkODBmZGI0NzkwYjQ3OCBsZWdhY3ktdHJ1bmsKKzE2MDczIDA2OTRjZTNiZDQ4ZjY3YjExNWRiNWU3ODk1NDgwNGM2YWJkZGZkZjMgbGVnYWN5LXRydW5rCisxNjA3NCA0MjBhYjQ0MzAyMWU5NjVkM2JjY2IyYzM4MWMyNDI2MjAwODc0ZDBkIGxlZ2FjeS10cnVuaworMTYwNzUgYTJiYzhkZmY1NWRmZjU0NzQ0YTRjMTNkZjE2NDNjZmJkNDcwZTc5OCBsZWdhY3ktdHJ1bmsKKzE2MDc2IDAzYWEyNjgxOWFjMjc2NTFkOWNkOTJlMGI5NGEyMzA0N2NhODE2MjEgbGVnYWN5LXRydW5rCisxNjA3NyA1ODE4MzY3OWM5MGEyMjA5OGI2MDllMWYyYjQwZWU1MDFlMjllNzA3IGxlZ2FjeS10cnVuaworMTYwNzggZmQ3OGJjNWYyYjJjY2IxYmY0ZDM4NDQxMTE3Nzc0Yzg0NDVhMzNiNSBsZWdhY3ktdHJ1bmsKKzE2MDc5IDY2ZDQyYzUxZGYxNmFlZjkyZWFiZTQyMDhlZDJjOTM2MWE2NDdiOTMgbGVnYWN5LXRydW5rCisxNjA4MCBjZDhhNDFiZjRhYzIwYjlhNzJiNGYwZjcxODI0YmU3ZWY3Yzg2MWQ5IGxlZ2FjeS10cnVuaworMTYwODEgMzkwZTVkNTFmZjczMzJiNjUxMmI4ZjdlNDFkODk3OGU3ZDU3MTJkOCBsZWdhY3ktdHJ1bmsKKzE2MDgyIDY3YTA0ODE2ZWE1MDExYTMwMGVlMzdhMDYzNmVhNDczYmYzNDRlMDkgbGVnYWN5LXRydW5rCisxNjA4MyBhYzI0ZDgyZDhlMzNiYWE2M2E5ZTdlYzE4MGU2Njg2ODIwZTA4ZWM4IGxlZ2FjeS10cnVuaworMTYwODQgYWYxMGQ5Yjc0MTQzZDJjM2FiMThkODhjYjhhM2ZlMjM5NDNkZGFhZiBsZWdhY3ktdHJ1bmsKKzE2MDg1IGNlZDg2MGYyZDhkMmNhNWUwZWMyZmEwYzk0ZGFjMjk2ODRlNzI4Y2MgbGVnYWN5LXRydW5rCisxNjA4NiAzNDE4ZDVjMGY5NjAyMmNhOGVjM2NlNWUwNzdjZTZhZDI5NDUwYTZkIGxlZ2FjeS10cnVuaworMTYwODcgN2JhYzEwYTliYjYxY2Y2ZWEwYmRhMWYwNmMzZGU5NTJjMzkyY2MzYiBsZWdhY3ktdHJ1bmsKKzE2MDg4IDI0NzE3NDA1ZGQ4OTkwZjliMWE5NjI1OGYxZjkyMzBiMjA2M2YyMDkgbGVnYWN5LXRydW5rCisxNjA4OSBjMTU1YmNjYjdhMjJmYjI0NjhhMWU0MGRmNGI5MjY1MThiN2ZmZDA4IGxlZ2FjeS10cnVuaworMTYwOTAgZDhhNDA3Nzc3YTZmNGI3YTRhODEzMTRjNTQzNzJmM2VkOTc4OTM3OSBsZWdhY3ktdHJ1bmsKKzE2MDkxIDQ1NDk0MDQ2YzJmYjYxYzU3YmYzYTc5NTRjZTFlZDE1MjI5NWNjZDUgbGVnYWN5LXRydW5rCisxNjA5MiA2M2QyODg3YmFmMTE4NDI2ZDMyZmM0OTM0YzM2YmNjMWQ1MzJkODZhIGxlZ2FjeS10cnVuaworMTYwOTMgN2UzZDYwNDU1OTU4ZmM3Mzg2M2I2NWU0NGMyOWQxMGE0Mjc0MDcwMSBsZWdhY3ktdHJ1bmsKKzE2MDk0IDU2MjZkNDI1NWZjZWQ1Y2M5MzYxNjA4Mzk4NzQzYzlkZWNiZTdjZmQgbGVnYWN5LXRydW5rCisxNjA5NSA4OWU0N2ViYTI3NzE4OWJjODhmNGQ5MWE4M2NjM2Y1Njg5YjY5NGNlIGxlZ2FjeS10cnVuaworMTYwOTYgODdkZjFhZTRmMTEwYzVkMDk3ZDIzMjQxNWE0NTA5NWIwNjY4MWMzZCBsZWdhY3ktdHJ1bmsKKzE2MDk3IDhkMzI0ZDlkNTE4ZmRiZDUwZTBjODkzMTQ0YWJmZjE4OTBjODE5YTggbGVnYWN5LXRydW5rCisxNjA5OCBmMGQ0MDJkNDgxODBiZTk0ODhkYjlkZGU2YzIyOTIwYWU0ZGNiMTBhIGxlZ2FjeS10cnVuaworMTYwOTkgZTEwMTYwMGFkZWU0NGE2MzEyZTlmMTIwMjE2YmUxZmNhNWM1NDM2ZCBsZWdhY3ktdHJ1bmsKKzE2MTAwIGE3ZjcyMDIyYjkzYWM4OTcyMzhjMjZkY2ZjYWIzNzlmZGJkZjIxMjMgbGVnYWN5LXRydW5rCisxNjEwMSBmOThkNmQ2M2FkNzFiNmJjMTQ0YTBkZjQ3ZTFjNDdhYmQxYzA2MGE2IGxlZ2FjeS10cnVuaworMTYxMDIgZGZmMjc3ZDVmZWIyNWIwZWU5ZGNhMjVhZDgzMDIzMjA3ZTExM2U2MyBsZWdhY3ktdHJ1bmsKKzE2MTAzIDNmMWJkNDc4MjYyOGI2YTJkNWY0NzQ2MzQ2NTE2NDA5ODM2ZGUwZTMgbGVnYWN5LXRydW5rCisxNjEwNCAyYTVhM2NhZDUxNzRhNWZiYTc1NzcyYWMzZmRjYTRlY2ZjYjgwZWJlIGxlZ2FjeS10cnVuaworMTYxMDUgYWJlZDgwYjUwYTJjY2FiYTQzMzJkYWVkY2M0OTk2ODYwN2E0ZmI0NiBsZWdhY3ktdHJ1bmsKKzE2MTA2IGMzMDI5ZjI3NjA0NzJjZDg1NGIwZjk2MmUyY2ZlYzUxMWQ0M2M3YjUgbGVnYWN5LXRydW5rCisxNjEwNyA0YzQwZWY1ZGNkODI3YWY5ZmFkODFmYzI4YWVhMzlkYWQ2ZDkzZDk3IGxlZ2FjeS10cnVuaworMTYxMDggZmIzMDk5NjEwMWJjODM0ZDI5ZThhMzE2YmVhNGMwYjBjODczYjI4MSBsZWdhY3ktdHJ1bmsKKzE2MTA5IDM4NDgzNWVhMGE1YTE2YjM4NWUyMDhjYmNhZDQ0Zjc4OTY2YmQzYzcgbGVnYWN5LXRydW5rCisxNjExMCA3NjI4ODgyZGNjY2RlODdlMDY4ZWQ0MzFjOTNhNGM1NTk4MzUyNzNjIGxlZ2FjeS10cnVuaworMTYxMTEgYjM1MzBkYWUwM2JmYjk3ZmQ4YTMwNzcyM2MyMmQyZmRkYzkwYzZmNCBsZWdhY3ktdHJ1bmsKKzE2MTEyIGUwZDY3NmU5Y2I2NmMxNDBhNzdlYjVkMDk4NTc4ODgxMzEwNWU4ZmMgbGVnYWN5LXRydW5rCisxNjExMyA1NjE5YzNmN2E0NGJkYzVhZDE2NDMwNzYxNDZlOWNkMjBjZTVjOGJjIGxlZ2FjeS10cnVuaworMTYxMTQgZDg4NTM1Y2NhZWU1YzI2OWM2ODQyZjk3NWU3ZDQ0ZGMxNTFmNjNhMSBsZWdhY3ktdHJ1bmsKKzE2MTE1IDBiMjg5ZTAwZDUyYTI3NDU1MjEzYWVkY2UwYjBkMGIyMWNlY2Q0ZDAgbGVnYWN5LXRydW5rCisxNjExNiA5OWYzNDFhOTdmZGViNmYwNzkyNGFlNWQ4MGNmZWM0Njk0OTUxMDhkIGxlZ2FjeS10cnVuaworMTYxMTcgYjRhZWRkOTBjODY0MmU5ZGEwZWE0YzE2MTJjMjZkN2E2YTllMTkzOCBsZWdhY3ktdHJ1bmsKKzE2MTE4IDlhMWI5NjFlMGMzYWY1MDQxYjA5YTUzZGZkMjkyY2Y4ZjVkNTY5ZTIgbGVnYWN5LXRydW5rCisxNjExOSBkODAzODEzMzY2MTJkNjFkN2UyOGY0MTU5MDM5OGI5NWQyNjJlOGY0IGxlZ2FjeS10cnVuaworMTYxMjAgYzg3MDZlNWE4ODJmYTIxMmRmMzNjMGU1OGRhYWY5NTQxNzgyOWQ3OCBsZWdhY3ktdHJ1bmsKKzE2MTIxIDYwYTk3MjZkODVmOGUzMDM0NmM4ZmNhMGJjZWMxZWExNWU1ZmY0YmIgbGVnYWN5LXRydW5rCisxNjEyMiA0ODRiZmRlNzBkY2NiZjRjYjZiYzgzYzYwODY5ZDQ5NmI1NDg2ODFjIGxlZ2FjeS10cnVuaworMTYxMjMgYmVmN2I2MjlhYzk1OWJlMTM1YzdjZGQwNWQxZTk1OWNiNTQ1N2I2OCBsZWdhY3ktdHJ1bmsKKzE2MTI0IDAyZjg3MDViZGEwNWU1MjA2ZmQ4NjExMWU5ZThiMDg5NTQ2ZDFlMWUgbGVnYWN5LXRydW5rCisxNjEyNSBmMzY5MzZkNDNkMDJiYmM2M2JlMDMwOWY0MWFhNjhiYWU0ZmZlYTUyIGxlZ2FjeS10cnVuaworMTYxMjYgM2JlMjk0NDk1OWRhNzNjNTc5NzE3NWJmOTBhNGZiODAwZDY4MmJmNiBsZWdhY3ktdHJ1bmsKKzE2MTI3IGI1OTcwNjdlMDU2Zjc5MWIzNDU5OTAyODIyZmViY2E2N2U4NmQ4YTEgbGVnYWN5LXRydW5rCisxNjEyOCBhMTExMGRhNjU3ZTUwZGRlNTNlMGZhOTMwZWE0Njg1MjIyMjUxYmE0IGxlZ2FjeS10cnVuaworMTYxMjkgY2JmNjZlNGZmMDhmMGVlOWNhMGIxMmE5ZWIxY2U4NjBmYjM5NzlkNCBsZWdhY3ktdHJ1bmsKKzE2MTMwIDk0NzkwYjBjNTVkMDRhY2NjZjM5NmNkNjE2Mzg0MzJmMjMzNzI3NTQgbGVnYWN5LXRydW5rCisxNjEzMSBmMGM4MGI4MzY0ZTIwYjNiNDhkMjhlYWRiNjM3MWJjODg5ZjdhMjgxIGxlZ2FjeS10cnVuaworMTYxMzIgM2EwMDAzMWY5ZDYwYzdjMmRmMmUxZmMxZDgyYWRiYWE5MGMzYzk2MSBsZWdhY3ktdHJ1bmsKKzE2MTMzIGNkOGI4YmFmYmIzMzk3M2IxOTQxMDhmNjdhNzUzMjJlYmZjYWI5OWQgbGVnYWN5LXRydW5rCisxNjEzNCA3NDUxNzdiZTFhNzE3Y2YxNTMyYTE1MWYyN2E1YzljZDk2MTA4MTk5IGxlZ2FjeS10cnVuaworMTYxMzUgZDY3OTc0NWQ5ODZmZGI0OTBhNzI3NmEzMTQ0YzRmZTEwNGVlZmZiZCBsZWdhY3ktdHJ1bmsKKzE2MTM2IDhmYjczMTFkMTM4MTA4OGU1OGQ2NzBiMTliZjBlZjM1YTEzOTE1YjggbGVnYWN5LXRydW5rCisxNjEzNyBjYmJlNTEyZDI0ZTA1Y2VkMzQ3YTBkNmY4MjE5YWExZjk2YWEzYTk4IGxlZ2FjeS10cnVuaworMTYxMzggYmZlMjJjZjZlNzcwOGJhNjQyYTQwYWRkMjZmMWYwYjNiMTQ0OGExYyBsZWdhY3ktdHJ1bmsKKzE2MTM5IDIwMTdmNTRiMDMyNWM3YTY5YjI3Y2UyZGM2N2MwNDI5ZGExZTkzYTcgbGVnYWN5LXRydW5rCisxNjE0MCAxMTNkODMzZWVhN2UwN2E5MThiYjUxNmFiNTQ1NDlkOTQ0MDQxODM5IGxlZ2FjeS10cnVuaworMTYxNDEgNjJlMTQwYmE3ODJkYzA0MDA5NGQxOGRmODVjZjdlNDM1N2ZhNzQ2ZCBsZWdhY3ktdHJ1bmsKKzE2MTQyIGQxNjZhMWU2MDc2MGZkMjZmNjExYTJjMzMzZTk1YjJiNDgxMzgxZGQgbGVnYWN5LXRydW5rCisxNjE0MyA4OWZmNTkxN2JjOGJjN2YwOWNkYWU1YzM3M2VhOTE3YjA4MjE0OTNhIGxlZ2FjeS10cnVuaworMTYxNDQgYjJkMTA0MDdhYjlkYmNhY2E2ZGMwZTdhNGU4YmUyNDhlNjg4NjhiNiBsZWdhY3ktdHJ1bmsKKzE2MTQ1IDNmZjAyMmUxYjk1ZDFhYWYwNWIxODIyZmFlMzU2ZWQ3OGMyMWExODggbGVnYWN5LXRydW5rCisxNjE0NiBlYWNiMmU1MWUxNjk2NTIwYmRjODVmMDI3M2ZmN2NjNGI1MThhMzQ4IGxlZ2FjeS10cnVuaworMTYxNDcgYWZmMWM0MTQ2YzFjMmYzYTg3NGY5NmI1MzQyZDUzY2FjMTQ1ZGNkZSBsZWdhY3ktdHJ1bmsKKzE2MTQ4IDNmMDhiZWRjMWMyNjE1MTZjNTIyM2NiZTdlOWUyMmQ3NjNiYTVjMDQgbGVnYWN5LXRydW5rCisxNjE0OSAxYmU0NjY1MTkwZjA2OTUxYjM4MjJiMzhjZGRlODI4YmE4NGIzMjFiIGxlZ2FjeS10cnVuaworMTYxNTAgODgwNDRmOWRmODMzZDU2NGQ4M2ZjYzVjOTczMzg4YzI0NjNjOTljZCBsZWdhY3ktdHJ1bmsKKzE2MTUxIDFjMGQzNWJhMTZiMWM2MmIyMWMwNjM4ZDQyNTVlM2E2MjEzOTJkODEgbGVnYWN5LXRydW5rCisxNjE1MiA2Mjc1NGI5ZWM3ZGZjMDVmNTYyMGVjNjdkNGM1MGVmOWE4NmIwOWY5IGxlZ2FjeS10cnVuaworMTYxNTMgMWI0MzU5YTI5NzZkYWMzMzE2NDc1YmIxYmUyNDMwYWQ1ZGE2YTk3MyBsZWdhY3ktdHJ1bmsKKzE2MTU0IGIwNWRmNjg3MjE1ZWY0NGM5N2Y1ZmUxMGQwODIxYThhYzdiM2EyNTQgbGVnYWN5LXRydW5rCisxNjE1NSBiY2IxNDYyN2I4ZjQxY2ExMTE2ZDUwN2ZlZjRjNTc5YzVjM2VjNzliIGxlZ2FjeS10cnVuaworMTYxNTYgODEwN2RlMjhiYzgyMTM5ZDA0NzgzMTJkYTBhYzllZGIzYzZmNDcxZSBsZWdhY3ktdHJ1bmsKKzE2MTU3IDMxN2U4ZTA5Y2U4NzcxYzYyY2JjNmQ3Y2EyNDRiNjAzZGMyNGU4MGEgbGVnYWN5LXRydW5rCisxNjE1OCA3NTlmNjk4NzQwY2NmM2Q2Y2U5NmJmNzMzOTlmODkwNjhjNWQwZWE3IGxlZ2FjeS10cnVuaworMTYxNTkgOGViNWMzNmVkZTllNzEzZDY1ZTBmYjhjYjJiODU2OTg5YTE5OGY1NSBsZWdhY3ktdHJ1bmsKKzE2MTYwIGU4Y2UxYmIwNTZhZWMyMWNkZDZmYWNiOTllZGNiODBiNzQ0MmVmZWQgbGVnYWN5LXRydW5rCisxNjE2MSAyMTExOTE4OWVlMTgyY2JlODA5MTJmZGQwYThhNWI2ZWVlMDViNmRlIGxlZ2FjeS10cnVuaworMTYxNjIgOThkYjBjM2MxZmI5ZGMwMDQ5NzNhMDFhZjAyYTg0OTM3MjA5ODExYiBsZWdhY3ktdHJ1bmsKKzE2MTYzIDhmMWEyZGVlYjliMDAwZDQ4M2UwYTRhYzhhNDgwOGFkZTI1NDgwMzQgbGVnYWN5LXRydW5rCisxNjE2NCA3ZmJkYjU4MTgzOGY2MzFiZGQ3NGMyY2RiMmUxNDg4NzUxNmZhYmU1IGxlZ2FjeS10cnVuaworMTYxNjUgZTk1ZmYyMTFiOWQzYzdiOGEwMGY4ZTBkYzllYjYxYmQ4M2QxZTg0NiBsZWdhY3ktdHJ1bmsKKzE2MTY2IDRjZjIxODUyZmQ1MjE2MDA5MTc2MDJlNjI3MjUzZjNiNDk4ZDQxZWMgbGVnYWN5LXRydW5rCisxNjE2NyA1MzcxNDc4ZjZmNWI4NmRlM2U2ZDI1MWY1Y2E0YjFhZDQzNjQ3YjU1IGxlZ2FjeS10cnVuaworMTYxNjggYTUwM2FmN2U3ZmI3YmE2N2E0ZTMwZjUxNzhmNjUxNzVmM2FkNGRjNCBsZWdhY3ktdHJ1bmsKKzE2MTY5IGYyNjMzYzkzZTJlNTdlN2E5OGY4NzA3NDE5NDE1ZTUzNzgyZTM2MzggbGVnYWN5LXRydW5rCisxNjE3MCBmNTIxMmFmOWU2NDEzZjMxNzRmY2IwMTcxMWFmNDJmM2FmZTY5ZGY1IGxlZ2FjeS10cnVuaworMTYxNzEgYzM4YmFjZDhlZmFkMmZlMjI4MDA2NGU5NjEyZjJhMTZkMTA2NTBlOCBsZWdhY3ktdHJ1bmsKKzE2MTcyIDUxNTdlYjdiZTIwZDc4MDMyZTlhZGUyNjJjNjU4ODNiYzQ3ZjUwNjQgbGVnYWN5LXRydW5rCisxNjE3MyA5YTgzOTEwNTQ4NDA5Mjc0ZDJhMDNhNjRjZDZiZjdlNGJiMjA3NzM2IGxlZ2FjeS10cnVuaworMTYxNzQgZTcxMDZjMmZjMjZjYzQ3NDNhYjhjYjAyZGQwYjUzNDhiNzY0YzhiNyBsZWdhY3ktdHJ1bmsKKzE2MTc1IDdmZWE0YTFhZjA5MDlmZWFhNjljZjAxMTI0YzRkY2NmY2EzMWZmMjMgbGVnYWN5LXRydW5rCisxNjE3NiA2YTc4ZWFkMTM5ODcwNDM2OGI1Y2Y4NGFmZWZjMDRlMjY5YmJjODEzIGxlZ2FjeS10cnVuaworMTYxNzcgMmJhNzZlMzE1MDE2YjIzNmJkNTNkOWRhZDg0NTJjOTE4NmFlYjIyYSBsZWdhY3ktdHJ1bmsKKzE2MTc4IGRhNjEwOTMwNjM4YjQ3ODU5OTY2MTljOWNjMmFmMDhlZmE3OTY1OWEgbGVnYWN5LXRydW5rCisxNjE3OSA3MGU0Y2JmYzNiMjQ3OWM4ZWFlMzk0YTBjYWRjMDVmOTVhM2U0NWNjIGxlZ2FjeS10cnVuaworMTYxODAgODU1MjBjMjIwMDY3YTI5YWIxYTZiZDFkNWU3ZWI2ZWRmNzI5ODQ2ZCBsZWdhY3ktdHJ1bmsKKzE2MTgxIGRiOTM5MmEwNGJlZDQyMWNlOWUwMjY2ZjA1ZGQ0ODRlZWExZDVmYWQgbGVnYWN5LXRydW5rCisxNjE4MiBkM2YxZWVmZGNiM2E5Y2ExNmIxMjk0ZmFkMDNhYmE0MmZlNDY5YzY3IGxlZ2FjeS10cnVuaworMTYxODMgMzQ2ZGYxOTIwODczN2FiZGViNmM5M2RmM2RjNzg0NDAzNTg0NTU5NyBsZWdhY3ktdHJ1bmsKKzE2MTg0IGFhM2QzYmVjZTc3NDU0NWQyMmY2MThmNzNkODc4M2I4MzliODAzMDkgbGVnYWN5LXRydW5rCisxNjE4NSBhODc4MDNlYjlkZmIxNDQ3ZjU5ZmY2NTQxYmY2M2JjMGZmZTU2NzM3IGxlZ2FjeS10cnVuaworMTYxODYgNjRhMTRiYTc0NjQxMzg1M2YwMGQ5NWY2OGMzYzIyMTljZGQzYTZiNyBsZWdhY3ktdHJ1bmsKKzE2MTg3IDI2M2I0NDkyODQ0YTIwNmEzYjk1NGI3MTM4NTg5ZTczYzYyMmJiODQgbGVnYWN5LXRydW5rCisxNjE4OCA1ZWJhZDY4OWI3YTc5MjI0ZTA3YTQ3NGMwOTZhNzY3ZTczNDhhMzg3IGxlZ2FjeS10cnVuaworMTYxODkgNjE4YTcyODBmNmJlNTBiOTc2N2Y5NzY3MjljNTcxYmM0M2ZiODQxYSBsZWdhY3ktdHJ1bmsKKzE2MTkwIDBkNmFmMzAzYTg2Y2I0ZDM2Nzc2ZTk0ZDg5YWU5ZDdmZDc4NmUyMTYgbGVnYWN5LXRydW5rCisxNjE5MSA4YTNkNTBlZDA2Zjc5N2M3MzcwNjQ0MmNkMzAxMGVlZDllZjVmZDFiIGxlZ2FjeS10cnVuaworMTYxOTIgMDg4YzVmM2I3MDk0Yzk1OTI0OTlkYmE1Mjg0NmY1ZmM3YmFkZGZkMyBsZWdhY3ktdHJ1bmsKKzE2MTkzIGM3MTExOGI3ODA1OTRiYmJhOTE4MDcxNmY0MGNkNTlhNzkwOTBjZGQgbGVnYWN5LXRydW5rCisxNjE5NCBkMTc2NjRiZDliNjU3ZWM1NGJiYTZmYzliMmJiMmI4MmQwMmFmOWQzIGxlZ2FjeS10cnVuaworMTYxOTUgZmM3OGU1YTc4MTJhNTEwYTU5NTg5NjRhZTE2MGU3MzY3ZDFjMjMwOCBsZWdhY3ktdHJ1bmsKKzE2MTk2IGNkZTI3MzE4Y2Y4N2I1YmU4MmMxNjI4MTcxMjJkMGNlNWI2OGRhZTEgbGVnYWN5LXRydW5rCisxNjE5NyA3ZTNjZDk0ODBmNjYzOGFjMTQ2NGUwNzM5ZmZjMDdiMDFjNjU5NDljIGxlZ2FjeS10cnVuaworMTYxOTggYmM5ZTIyYWQ1YzQ2MDgxMTgyYjliMzY3ODJhMTFjZWQ3NzU5MDIyNSBsZWdhY3ktdHJ1bmsKKzE2MTk5IDlmZDMzMzY5MzM1MDgxZGI3NGI4ZmUyNTJmZmU2OTYwOWQ3YmFlOGUgbGVnYWN5LXRydW5rCisxNjIwMCBkZGYwNzRlYzY1MDYzZjg4MWEzZDMxZWYxMjY4ZDA4NzM3ZDRkZWU5IGxlZ2FjeS10cnVuaworMTYyMDEgOTY4YTAwNmU1NDgwYzI2OGNjMDg2Y2QzNzk2NjI3ZDM5NjZlM2YxZiBsZWdhY3ktdHJ1bmsKKzE2MjAyIGY4ZDA4NGUzZjhlY2YxZjgzZWE1YjIwYmRlMjEzMzFjMTI2NDk3MDIgbGVnYWN5LXRydW5rCisxNjIwMyA1ZWRlZTY4Nzg5NDMyNjJiN2QwMDZlY2QwYzQ4MzViODViYTkxOTI3IGxlZ2FjeS10cnVuaworMTYyMDQgZWQ3MjA2N2FhYzAzMjg4NDEzMzU2MGRjYjM0MjMwMDVmMmJkZmNkNiBsZWdhY3ktdHJ1bmsKKzE2MjA1IDdlNThjMDYwZDUzNDJkNDgzMjIyNjdmNDg4NTkyNGY5OTkzMzMwNjcgbGVnYWN5LXRydW5rCisxNjIwNiA1NzA5ZGRiYTQyM2NjOGRiZmVkYzE1NThjOGE2ZmY4YWVhOTRkMDY3IGxlZ2FjeS10cnVuaworMTYyMDcgMDkxY2E2YjkzNDhmNTBkNTE4ZjNmNjQ1ZjcwMDRkYmE2ZGI0NGQxYSBsZWdhY3ktdHJ1bmsKKzE2MjA4IDIzZjk2ODlhY2U1MDYzNzdiYzJlOGI1MmYxN2E2OGM1ZTBmMTRiYTQgbGVnYWN5LXRydW5rCisxNjIwOSBhODlmN2YyNjhkZTQ1ZjExNDNiNGQ5YjQxZjYxNDcxNTljNGRkYmYzIGxlZ2FjeS10cnVuaworMTYyMTAgM2UxMGFjN2E1YmYzNmZkM2M3NjczNzM2OTc1NjQ4YzE5NmRiM2FmNyBsZWdhY3ktdHJ1bmsKKzE2MjExIDA0MDlhOThjZDU4MmUzNjc1YzMwMjVlODg5ZDcyZmQ0M2U1ZjcxZDYgbGVnYWN5LXRydW5rCisxNjIxMiA0YWQyNjk2ODY2MmJlMDYyNjYyYjZiMmI3ZjJmMmVjMjNmOTcyYThlIGxlZ2FjeS10cnVuaworMTYyMTMgODA4YjQ0NmFmOTdjNzYzNjExZWE3YTg5YWI4NmViMzNhOTJhOWYzYiBsZWdhY3ktdHJ1bmsKKzE2MjE0IGVkNGY3YTIyZTkyOGNhYTIzM2NkOTIyZjU3MmVlNjMwZWQ4OWNlNWMgbGVnYWN5LXRydW5rCisxNjIxNSBkNjE5OGU3MDM2MDJiZTMwNzBiMTYwODI3OWYwZDUwZDEzNWI5Yzg5IGxlZ2FjeS10cnVuaworMTYyMTYgZmNjNzVhMzc0OGY1NDE5NjcwZjlkM2RhMDgyMmM4NDI0OTQxOGU5MyBsZWdhY3ktdHJ1bmsKKzE2MjE3IDQzMTUzOGZmYjNhZDMyMTQ2NWExMWQ0OGEyOWY4OTUxNzA3YjQyNWYgbGVnYWN5LXRydW5rCisxNjIxOCA2MjExMzE1ZWI1OTJjZWQyZGEzNzlmYjFjYmNkMzlhYWUyYmQzYjFhIGxlZ2FjeS10cnVuaworMTYyMTkgZWYyZWJiM2IwYzY0N2ZmYWMxZWNmZTllODIzNTA0N2RkZDhkNzY5ZSBsZWdhY3ktdHJ1bmsKKzE2MjIwIDc5MDhlYzg1NTY2NWRjYmQ0ZDI2YzQyNGY2YTZiZWEyZTM1M2Y0ZGEgbGVnYWN5LXRydW5rCisxNjIyMSAwZjk1YzkzZjIwMGJkZWViMmYwNWE5NGY0MWE5NWRhODc2NzZjZWFjIGxlZ2FjeS10cnVuaworMTYyMjIgZTZkMTdmMTVhZTZhZWZhZTk1YjlhMTQxMjIzZDA5Zjk1MzFkMTY3NSBsZWdhY3ktdHJ1bmsKKzE2MjIzIGY2Y2RlYWM0NGExMDUyOGRlNjI0MjAzODU4YTA2Zjk0YzYxNjcxYzEgbGVnYWN5LXRydW5rCisxNjIyNCA0Y2YwZGUyOWMwOGM3MWFiZWU5NWI5MWVmN2U2YjMwYTQ3MDcwNTNlIGxlZ2FjeS10cnVuaworMTYyMjUgYjcwNjZiYjc5NTgxMGNiMTk0ZmExMDUxMDNkODFjN2FlOThkODhmZSBsZWdhY3ktdHJ1bmsKKzE2MjI2IGVhODIzNWVkZmM5NjE1ODM3MmZhOTliOGM4NjQ4NGIxM2ExODUzNjYgbGVnYWN5LXRydW5rCisxNjIyNyA4ZTkyZDk0MWUwN2Y1MDQ0OWM4N2JkYmM1NzEyYTY4NjQ4ZmRjYmYzIGxlZ2FjeS10cnVuaworMTYyMjggYmZhZGQzNjNhMjAwYTMxYTY4ZjEyMTg1OGJiOTE0ZWU3ZmFkZDQzZCBsZWdhY3ktdHJ1bmsKKzE2MjI5IDY2OTAzNzRhMWRjMWE1YTBlYWI4MDRkZTY5MDk1ZjE4YTUyZTI5MGEgbGVnYWN5LXRydW5rCisxNjIzMCBiOTA3ZWJmM2IwNTJiOTMyMTQ0NjRkOGNiZjUyY2M5MjIyNzdlODQ4IGxlZ2FjeS10cnVuaworMTYyMzEgZGQ3ZTEzOTE1MzI4ZmM5YTU5MTc0Yjg4MTllM2MwODYyMjI1NzAwZiBsZWdhY3ktdHJ1bmsKKzE2MjMyIDc1YjBlOGNiMDc4MzFkM2RmY2ZkZGNkOTI3MmM0ZTc3YTQ4MjY5YjIgbGVnYWN5LXRydW5rCisxNjIzMyBkZjE4OWY5Y2QwMTBkZWEwZWZjZDg5OWYyMjQwMTk0MGEwNzk5MTY3IGxlZ2FjeS10cnVuaworMTYyMzQgZGJlODNmZDIzMzkzYTIxMDk5OWFhYjQ0MjJkMDFhOTY3ZmJhMjMyZCBsZWdhY3ktdHJ1bmsKKzE2MjM1IDMxYjFmNjkxYTdkOTE4OWU3Yjc3OWVlYTI2OGE1MjJlZjFmYmE3MjEgbGVnYWN5LXRydW5rCisxNjIzNiBlMWIwNzBkNzE2MmM4ZGU3NjZhYmI0MzgyYzZkMmRkNzNiYzdkZjM5IGxlZ2FjeS10cnVuaworMTYyMzcgMmZmMjc4NWU1MjkxOWMxY2M2MWM1Y2MxMGU4YTNlNWY2MGY0NzliZCBsZWdhY3ktdHJ1bmsKKzE2MjM4IDhmNjZjNWZmYTI2Yzg2MDUyNTNjNGQ0NTFjNzk0ZWI3NTBiNDQ5ZjcgbGVnYWN5LXRydW5rCisxNjIzOSAxNjIyYmIyNGRhNTU2NjRkMzhkNDU4MjBlYmFjMDJiYjg5YmM0MzY2IGxlZ2FjeS10cnVuaworMTYyNDAgNzBkMzUxZmNiOGQ1OTAwYzg2ZWFiZmIyNGM3NTJjNjBmZTc5Nzk4ZSBsZWdhY3ktdHJ1bmsKKzE2MjQxIDkzYWUzNGFhMjBhYjM2MzU2N2IxYTJlMGNiNDNkODhjM2VlZDA5MGMgbGVnYWN5LXRydW5rCisxNjI0MiA2MDg0ZjhkM2E4MjVjMGE3NjQ3YjI0MmYzYjhhZGQ1YTMwMDdmOTU1IGxlZ2FjeS10cnVuaworMTYyNDMgM2FiZWNiMzQ3MzdmY2M4MDZlZGQyMmRjYzZiOTI5NGFlZjdkNmJhMCBsZWdhY3ktdHJ1bmsKKzE2MjQ0IDAwMGExYzdlYjA5ZmJjZmE4OGZhNDNlNmMyZWUwZTU5MzQ4NjYyN2MgbGVnYWN5LXRydW5rCisxNjI0NSA4N2Y4Mzk2ODUxYjJhYTY1ZjE0YTUzY2I5NTQ1NGUwZjJlODA5MmI2IGxlZ2FjeS10cnVuaworMTYyNDYgNjdmZDE5ZDc0NTI4MThkNjk0YWI2YjRiOTY4NTk5MmRiZTA2NTJkNyBsZWdhY3ktdHJ1bmsKKzE2MjQ3IGU0ZWM3Nzg3OWRkZDAyZWQ4OGEyNjU2NWY0YTEzM2ZhYTIyNTc0OGUgbGVnYWN5LXRydW5rCisxNjI0OCAzMmI2ODZkYTNlNTE5MTNhNzQ3NDJhZGI3MWIzZTI0ZDEwN2I4YzExIGxlZ2FjeS10cnVuaworMTYyNDkgODQyNGVjNGM0YmIyMDMwY2UzNjEyOWM4MTY1YWE4MWE2MjMwYzMyYyBsZWdhY3ktdHJ1bmsKKzE2MjUwIGIzMTMxMWE3OGE1ZGE2NTMxNzI5NTFiZjExNDgxZWVkZmRlMjNiNjYgbGVnYWN5LXRydW5rCisxNjI1MSBmNTBiZGNiMGRkMGVhZTAxZDkwMDZlMTJmZjJiYWJiMGY0MmIzNGVmIGxlZ2FjeS10cnVuaworMTYyNTIgY2I1Mzk4MjQ0NDhlODVlMmI1M2NmMmI1ZmFjOGQyNWYyODlmY2VjMyBsZWdhY3ktdHJ1bmsKKzE2MjUzIDVkYTg0NTZmMmU0ZDM0NDM3YmMyOWYwYjlmOGE5YTEyNGQ5Nzg3OWEgbGVnYWN5LXRydW5rCisxNjI1NCA1MDg3ZDFkNDVmMWRhNjZjZWU3ZjUxNTIzOTc2YWU2Y2YxY2JiZjk4IGxlZ2FjeS10cnVuaworMTYyNTUgOGJhY2Y4NjMxYTExY2VjZTU4MGRlMzZkMzM3ZjdmMGM5NzA5NGIyOSBsZWdhY3ktdHJ1bmsKKzE2MjU2IDRhYTEyZTU1YmY5NWQxZGYyMjNiNjQwYWExNjBmMDgyNmEzZGFmNmYgbGVnYWN5LXRydW5rCisxNjI1NyA0MjNhNWI5NTBjYzk4M2NhMjk1NDA4YjI1YjY3NTY1ZTgzMDU4ZjUzIGxlZ2FjeS10cnVuaworMTYyNTggMDNiYzUxZTQzZjdhZjc1NWJlZTBhMmQ3Mjk5YTJjODg2ZTA3MzJhNCBsZWdhY3ktdHJ1bmsKKzE2MjU5IDk1NDU0YjczZWE5MWQzZDZiYTJkZjczMTNjMGVlNTA2Mzc0MTI5ZmMgbGVnYWN5LXRydW5rCisxNjI2MCBjODMwODU0ZmE1MDdhZGRhODNkNWY2NGI5ZGE3NDFjODg3Y2YzMGIzIGxlZ2FjeS10cnVuaworMTYyNjEgMDQ2Nzk5YTA4MDU3YzI5ZmI5ZGY4ZjAyZjA3YzIxOGI2ZDA2Nzg3NyBsZWdhY3ktdHJ1bmsKKzE2MjYyIGQ5Y2M2MjBmZjE4NmVmOGFhZmI2MWFlNWUzOGNiNjVlZWY5NWE5MTAgbGVnYWN5LXRydW5rCisxNjI2MyBjYTMyZmY3YTA2N2U2OTVjMWQzYjIyZjU5YThiMmIxNzJlY2NhM2NiIGxlZ2FjeS10cnVuaworMTYyNjQgNzM0OGNjZWVlOGZhYTlkNGI4NzU1YmI0ZjI4NjkzOWY0NjFhZDI0MSBsZWdhY3ktdHJ1bmsKKzE2MjY1IDY0ODQwOThmNDBmYzNkMjQ4ZDRkNWRiMmE1MjVmMGM2NzhjMjU1ZDggbGVnYWN5LXRydW5rCisxNjI2NiA4MjU2ZDYxOThlYzJmN2I4OWIyNDdkOTJmYzAxNTFiMjRhYzNlMDlkIGxlZ2FjeS10cnVuaworMTYyNjcgMGVkZWI0ZWZlNmRiYzM5Y2U3NzliM2UzMjcxMmE4NjNjYzM5N2I0MSBsZWdhY3ktdHJ1bmsKKzE2MjY4IDg2YjM2N2QyZTdhZmFiY2YwN2JiMGZhMGYyYmJhODM4OTI2MjIyNDYgbGVnYWN5LXRydW5rCisxNjI2OSBjMDVlYjkwMmU1NjAwZDVlNTBkNTVkMGU0NmM4MTg2ZjU3M2JkNDgxIGxlZ2FjeS10cnVuaworMTYyNzAgN2IwZjQ0ODNjMzMxNzYwNGQ0OWIzN2NlYjJjOWE2MDBmN2I4NTJmOCBsZWdhY3ktdHJ1bmsKKzE2MjcxIGZhNzQxOTg4ZGIxNzg1ZDgzM2E4NmFkNzcyMDI4Mjk2ZWIwODNiMzkgbGVnYWN5LXRydW5rCisxNjI3MiBkMDE4NDg1MjcxZmI0ZTAwMmM3MjE4ZWQxOTI5Yjc4OGRmODc0NjViIGxlZ2FjeS10cnVuaworMTYyNzMgMTgzOTVjYTVjMzBlZmJiN2UyMWUxYjQ2NTA4NTBkMDNmNDg5N2VhNyBsZWdhY3ktdHJ1bmsKKzE2Mjc0IDlhNDBmMThmMDU2MWZmZjJjNjRiNDhiNzlkYTJmOTFiYjhkYzAwNzIgbGVnYWN5LXRydW5rCisxNjI3NSA2MDU3ZjQ0YjBiN2FjNWNjNDc5OTE0NWU2NDUxNjllMzlhN2YyNmU2IGxlZ2FjeS10cnVuaworMTYyNzYgNTMwNGI4OGZlM2NjZjA3OWU1NjQzNWZiNjE1MzIxNzg4MDc0ODdjZSBsZWdhY3ktdHJ1bmsKKzE2Mjc3IGNkN2FiYjRmZWIxYmE2ZjNmNWEzYWFjM2ZkNzhmZTYxOGIwYzJhNGIgbGVnYWN5LXRydW5rCisxNjI3OCBlNDRjYTYxZGI3MTU4NGY1NGJkMDNkMDQ5ZTRmZjYwMmZjNTU2OWIyIGxlZ2FjeS10cnVuaworMTYyNzkgNGYxMTA0NDFkYjM5MTgyYWEzNzFiMjliMjQ1ZTE5MzNlOGU3MTYyNCBsZWdhY3ktdHJ1bmsKKzE2MjgwIDg2NzA0NDMyZDI4M2E1ZDRhN2RjNTA5NjNmMjhlMzczM2ZiOWY5NDMgbGVnYWN5LXRydW5rCisxNjI4MSAwNzBlNDFmMjY5N2I2Y2Y5NzZlODEwYzAzNDZiY2ZjYjE3MDc4YzQxIGxlZ2FjeS10cnVuaworMTYyODIgMjdkODdlMDcyYmZiMDUyYzk5NzJjZmQ0YWMzZTY5ODI5MTY5M2RmMCBsZWdhY3ktdHJ1bmsKKzE2MjgzIDRkYmM3NWMxODliY2VkOWNlMDYzNWZkOGNiNjdkNjYzYjg0MzVlYTMgbGVnYWN5LXRydW5rCisxNjI4NCBhY2M0NjM4ZjM3ZDU3YTYwZTI1YWU4NzczZjdmOTc4YzdkNTY2ZTZiIGxlZ2FjeS10cnVuaworMTYyODUgMDI0NzRkZjU0NmY2MDBhM2RhZjI3NzVjZjE0ODFmMjlhYzMxM2FiYyBsZWdhY3ktdHJ1bmsKKzE2Mjg2IDE2ZTQ5MDQ2MmU2YmYxOThkMTUxNzg2N2YwZDA0OGQ3Y2VlNDA3ZmYgbGVnYWN5LXRydW5rCisxNjI4NyBmMzM2YTI2N2EyYTI1NjI5NjRjYjk3YTViZjg4NjUxOTNiYTU4ZWIwIGxlZ2FjeS10cnVuaworMTYyODggMzY4NmQxMjM2MmI4YzA5NjBmYjk3ZDU0NGJkNDU0ODUzZGUzNGY2YiBsZWdhY3ktdHJ1bmsKKzE2Mjg5IDA3YzMxMTgyZjIzNzFkMDQxMjNjYWQ5MmNmNTVjMTI1OTBiOTc2YzAgbGVnYWN5LXRydW5rCisxNjI5MCBlODQ4ZDZlZDNlYjlkMDNjNjI2MjJkMWFmNDkyOTdlNjFjZTcxNjkwIGxlZ2FjeS10cnVuaworMTYyOTEgYmFiYWU5MTBjMmUxM2EzNjIyOWY4ZjY5NzRiZmEyYzEzNmM2MjA5MyBsZWdhY3ktdHJ1bmsKKzE2MjkyIGVkNTY1YjBmZTY0ODQxNzhiMWIzYTg0Nzg3MTllNmE1OTg5ZGMzYWMgbGVnYWN5LXRydW5rCisxNjI5MyAzMDQ5NWQ3M2I5NDM2MTVhNjQ3ZmYzNWUxMWJkYzYxYTBkYWU0Y2IwIGxlZ2FjeS10cnVuaworMTYyOTQgYjA2MzZhNTI3YTg3OTk5YWRmOTMxMDI1NDAxZmEyNTEwZmJlMzZmNyBsZWdhY3ktdHJ1bmsKKzE2Mjk1IDFlN2MzMmJkZGI4ZjcwMDQzNGZiNTNmOTg1NmU1MGYwYzI3MjIzYzIgbGVnYWN5LXRydW5rCisxNjI5NiA0N2ZlYzQ4Y2E0OTU5NDY5YjFjNjg2OWUyNDk1YzVmMDYxNGExNTRhIGxlZ2FjeS10cnVuaworMTYyOTcgOGIxMzQ1ZmY5ODAxM2Y5MmY4ZWQ4N2NjMzQ1OTllNWM0ZWQ1MjM5OCBsZWdhY3ktdHJ1bmsKKzE2Mjk4IDk3Y2Q0NzM2MzkyYzE3Nzc5YjBjOTcxNmQ4NzczODRhYmI5NzI3ZTAgbGVnYWN5LXRydW5rCisxNjI5OSBiOWY5ZGExYTNmYzQ3M2Y1MTMwNTc5MjQ1MWJjYWFlMzQ1MTg0MWM2IGxlZ2FjeS10cnVuaworMTYzMDAgNDIyODc3NWQ0NTVlZDU3YjE0YTk5YjJhZDY5ZTYzMDgxZDExMmFiNiBsZWdhY3ktdHJ1bmsKKzE2MzAxIGZlYWI2NzcyNjllMDhjMTVlYzBmYWE5NWVmNjkzN2ZiYjM1ZGQ4OWIgbGVnYWN5LXRydW5rCisxNjMwMiAwNjE1ZGNlZjAyNGRlMDVkMzYxMjc3NTQwYmRhY2UxZDZmYzc5YzYwIGxlZ2FjeS10cnVuaworMTYzMDMgOWRiZWU0YjRjMDNmZGFjOGQzYjNlNjJiNmQ1M2RlYzBkNjcwMjQzNSBsZWdhY3ktdHJ1bmsKKzE2MzA0IGRkZDYxMzhjOWU2ZmU3NjJkYmExZTczMWNhZjgwNzBhMzMzZjBhNWUgbGVnYWN5LXRydW5rCisxNjMwNSA3YWE1MWViZjQ4M2Y5OTJkM2U0OTAyNmE4YmQ3NDlhMDY0ZDM3MDQxIGxlZ2FjeS10cnVuaworMTYzMDYgM2NmNGY1YWVlMDBlMmZhYzNmZDQwOTRjYmI2MGZiZmU2YmQ3ZTVhMyBsZWdhY3ktdHJ1bmsKKzE2MzA3IDFkNjYzMDc5MjIxMjU5MTFhNjNlYzUwZDI4OTIwMjhjNTJiOWJkZWMgbGVnYWN5LXRydW5rCisxNjMwOCAxZjgyYTRiZmQyOTQ1NThlNWE4MThiNzgxODEwOWNlNWE3NDEzMmZhIGxlZ2FjeS10cnVuaworMTYzMDkgZGI5NjNhNjE1YmM5MzEyYzFjOTZjMzEzNDEzOTIwOTJlMDJhYmYyMiBsZWdhY3ktdHJ1bmsKKzE2MzEwIGQ4Yjg3NDlkZTA0YWJhNjFkNjk4MWY4YTkwMWNlM2Y5Mzk1ZGI0MmQgbGVnYWN5LXRydW5rCisxNjMxMSAzMzM4ODkyN2FjMmZhYTc5MDFmYTY0NWZmZGUwNWJhMWY0ZmQ5YzEwIGxlZ2FjeS10cnVuaworMTYzMTIgOTViOWRkYjAwMzUyM2UzNjdlYmI2OGU3YzcyNGJjYjIyNzE0Y2Y5OCBsZWdhY3ktdHJ1bmsKKzE2MzEzIDE1YjE4ZTBjYzNmZDI0ODI5MDA4Mzg5YTZmMzdiMzRjMjdjNTY4YzkgbGVnYWN5LXRydW5rCisxNjMxNCBkZDJiNTIxOGUwNjllYTI5ZTg4YmQzMGUwYzRmYjljNDJkNzQ3MGE3IGxlZ2FjeS10cnVuaworMTYzMTUgNjMxYjZhMDNjMTYwZWI5YzMyYTYwOGUwMzE5MTAyMmEzNTEyZjkzOCBsZWdhY3ktdHJ1bmsKKzE2MzE2IDkwNmVmYzFkYTI0N2EzNjE1NzFmZjFiZGZjY2I4N2UyMTE0YmYzOWUgbGVnYWN5LXRydW5rCisxNjMxNyA5Yzc0YjgyMzlmZjgwZjg3MmQ3OTc1N2UwZDdmNTFlNmZjNDE5NjM0IGxlZ2FjeS10cnVuaworMTYzMTggMzdiMWEzOTYwNmNlOGJmYjRhN2U4MDM2ZDQzZTIzYmViYzkzNGZlYSBsZWdhY3ktdHJ1bmsKKzE2MzE5IGMzOTZiNjAyNjE3ZGM0NjBiNzc5ZDE4NTA5ZjJlMGEzNWNiMzZiNzggbGVnYWN5LXRydW5rCisxNjMyMCA2YTQ0MzZkNjk1OGIwYzY3NDkzZWMzNjI3NDUxNWViODQ4YmZjNTBhIGxlZ2FjeS10cnVuaworMTYzMjEgYjc4NjUzNmYyMWFjYmY4MzgxMDE5ZGY0ZWYwNzJlNGZmMjMyNjIzMSBsZWdhY3ktdHJ1bmsKKzE2MzIyIDY5ODdlOTQ1MDYxOWI3Y2JkZTdmYzc0ZTc5ZDQwMDQ5YTk1ZWE5YjEgbGVnYWN5LXRydW5rCisxNjMyMyBlYTczMjcxOWIzZmQwN2MwMTQzMTJjZDEzY2M1NjM5YmNhMTRhMjczIGxlZ2FjeS10cnVuaworMTYzMjQgOTE5ZjNkNTE3MmE5NWVmMzNkYzUxMDJmNGU0YWZjY2ZlOTg4ZWJlZiBsZWdhY3ktdHJ1bmsKKzE2MzI1IGQxZjZiNjU2MTAzYjJjMjAwOGZjMjcwODNlNDJiMTVmZTVkZGQyMDcgbGVnYWN5LXRydW5rCisxNjMyNiA3OTkxYWViMzU5OGZlYjJlZTdiMWM3ZDRmN2U0ZjFjN2YwYjViODM4IGxlZ2FjeS10cnVuaworMTYzMjcgZTU1OGViMjI4YTQ2M2Y1NGRkNWNlYTljZGRlOWZkMGUxYzk4MzJjZCBsZWdhY3ktdHJ1bmsKKzE2MzI4IDQ3YTk0NzE5NTZhZjliZmFiZDE2ZWQxY2VlODY5NjJhMWM4MDE4MGYgbGVnYWN5LXRydW5rCisxNjMyOSBjZmIyYTBkMGE4Njk2ZjM3NzQyMzQwODY0MTJkYjQyM2VjYmZiYTJmIGxlZ2FjeS10cnVuaworMTYzMzAgYWMyYmI3NzA4MzIwZGJlNDc1MmE5OTBjOWJkYTMxOWZiYmQ5NzJjMyBsZWdhY3ktdHJ1bmsKKzE2MzMxIDVkNjFiNmYyYWVhM2NkYTFhNzMxMzg0M2FlZTRkMDRiNDU0N2JiY2MgbGVnYWN5LXRydW5rCisxNjMzMiBlZjNlZDc1ZjE5NWM3ODBhNzg4YzRhZTgyMjY4MGY0NzM0Y2JkN2U4IGxlZ2FjeS10cnVuaworMTYzMzMgM2E4YzY3MDMwOWEyMWRiNGIxNzY2YzVkZDhkZWI2ZjA5OTVhNDdjOCBsZWdhY3ktdHJ1bmsKKzE2MzM0IGU0MTdkOTUyOGZkNjExNTQ0YzFmZTEzNDdjMjY5YTRmODllNTkyMGIgbGVnYWN5LXRydW5rCisxNjMzNSAwMWIyMzA3MmNjNzY5Njc2MjIxMjVmNGIyODJmMGNmMGM1YTZhMWM5IGxlZ2FjeS10cnVuaworMTYzMzYgY2I3NmQ3ZGE2NzAyNzllMGU2ODlmODU0Yzg0OGM0NTFlMmY0NThlMCBsZWdhY3ktdHJ1bmsKKzE2MzM3IDdjMTE5ZjA1MDI5MGUzYTJkOWZjZTEzMDg3NGNkOTQyYjFmNzE3NjYgbGVnYWN5LXRydW5rCisxNjMzOCA2MWU0YzI5ZDUzZDhkMjc3YmM4YzI0OWVmYTFiNzNhYWQxMGQ2M2IxIGxlZ2FjeS10cnVuaworMTYzMzkgMmU0NWI3YzIzZGM2ODY1ZjgxOGFmYzQxYzY0NjQ2ODI5ZGI5YzdjMCBsZWdhY3ktdHJ1bmsKKzE2MzQwIGEwMzIxMDFlZDkyNjQ0YzJlNjJhMzZhNWUwMTM4YTA0NTEzYWI4OTggbGVnYWN5LXRydW5rCisxNjM0MSBmZmQ1ZThiNjdjODQzMzJiMjhmZDQ2ZWJhNWE5NWQzNjY3MDU0YzlmIGxlZ2FjeS10cnVuaworMTYzNDIgYjRiNmYzOTYyYmQxMjM5OGJhMDM4NmQ1YTFjYTcwNmU2MmZlMGJkMCBsZWdhY3ktdHJ1bmsKKzE2MzQzIGU4NzFiZDA1YzZhNzQ0ZDI1YmNlYjg4NGQyYTQ0Y2ExNjk5MzY1ZTMgbGVnYWN5LXRydW5rCisxNjM0NCAwODRhNzU4MDUxZTBlMWM2ZTJiNmRlMDZjNjM1YzkxMDI1ZWZmZmZkIGxlZ2FjeS10cnVuaworMTYzNDUgYWQxYzgyNzFiNmY4Mjg4NjBlNTY2ZjEzMTFkMWVhMThiYjI4YjBhZCBsZWdhY3ktdHJ1bmsKKzE2MzQ2IDI5NzdmYmFlNGNhNTFiNGEwNDQwOGUwZTMwMDI3ODhjYzZlNGVmNDkgbGVnYWN5LXRydW5rCisxNjM0NyA4OWY5MDU4NzBjMGE5MGRlN2JhYzY3Nzc5NzhkY2M5YWViOWNiZWIwIGxlZ2FjeS10cnVuaworMTYzNDggMTRjZWIxNTllNDQ5OWEzNzY2ZTBhMzBmMjA4ZjViY2M3M2NkMzVjOSBsZWdhY3ktdHJ1bmsKKzE2MzQ5IDdjMTI3YTc5YTM2OWU1NzRlN2M4YmE0N2QxZDBjM2YxYTJiYTIyMWUgbGVnYWN5LXRydW5rCisxNjM1MCA0ZmFmOGMyMmRhNjBiZTJhMmQ3ODFlM2IxYmRkOTYzOWY2MWQxNTY3IGxlZ2FjeS10cnVuaworMTYzNTEgNTAyNTExNWQyM2NmMmIxZjBkMzFhODlmOWRkNDlmYjdhMmM4OWZkNiBsZWdhY3ktdHJ1bmsKKzE2MzUyIGM1MDNkOGU0NzRiMzcwYzJhM2M5MDFkMDQ2ZDFjMjk3ZTA0M2I1ODMgbGVnYWN5LXRydW5rCisxNjM1MyAyMDc3YmYxNDFiMzc3YTQ0MjY4NGRkNDA4NWM5NmIyZjIzNjE2MGY5IGxlZ2FjeS10cnVuaworMTYzNTQgOWNhNTBlMjQzM2ViNDFlZjI0OTZjMzQzNDkyYmNmMTExOGYzYzQ1ZSBsZWdhY3ktdHJ1bmsKKzE2MzU1IGRmNjRjYzBlODRlMmE5MmE3NGU5NmU0MDQxODkzYjNiMzgyOTY1ZjMgbGVnYWN5LXRydW5rCisxNjM1NiA1OTQ5YjQ3NTg3ZDk1NTViYTQ2ZGEyNWE2MWY2Y2QyYTk0MjE4OWM2IGxlZ2FjeS10cnVuaworMTYzNTcgYTEzY2VhNDMwYzEzNjBlNGU4YzJlMTNjOGQyMzM5YTNlZDkzNmU4YSBsZWdhY3ktdHJ1bmsKKzE2MzU4IDkzMGY0YmJiZDkzYWE2ZDE1NTkzZjVhZjk3NjhlMzJjMTNlOWZlNWEgbGVnYWN5LXRydW5rCisxNjM1OSAyNTg0NjhhMjBkNzQ1NzZlNWRkN2IzMWQ2MDI4ODhhNzU5ZGUwOGJhIGxlZ2FjeS10cnVuaworMTYzNjAgMDdkNzQwM2NlYjBmMjVhY2MzYzY0YmUzZjhhMzAwNGUwMjk0MDlhNyBsZWdhY3ktdHJ1bmsKKzE2MzYxIDMyNjAyMjBhYWVlNDNkMmM1N2Y2ODY3NGZhZjUwYjQ0MDQxMWNlMzQgbGVnYWN5LXRydW5rCisxNjM2MiAzOWY1NGI5YTdmOWNiNjk2MjI0MzBlM2Q5Nzk2M2JjNmE4OTk3NTQ1IGxlZ2FjeS10cnVuaworMTYzNjMgZWY4YjIwYjlmNmY1MzcxODI3NjJjMGNjNGM2NTA4Yzk1Yzg5ODliZiBsZWdhY3ktdHJ1bmsKKzE2MzY0IGQ3YWVjMTdjZDBiNTA0NmI1OTQ4MGQ2ZDU5YTY5ZTBjNzNlM2VmYjEgbGVnYWN5LXRydW5rCisxNjM2NSA0MmI2NzJhMDljNGExMDNlNTU5ZmQ2MTAzM2IwMmY4YjY4Yjg0YWU3IGxlZ2FjeS10cnVuaworMTYzNjYgNDgzZTc1ZWZjMTExMjE4MGRmYTRmMGNkNDMwMGYyNTdkZjViODEyZiBsZWdhY3ktdHJ1bmsKKzE2MzY3IGRjMTdlZjFhNzYxMzgwY2JlZWUyYWZhNDIwZjE3ZjI4MmE0NDgxMGMgbGVnYWN5LXRydW5rCisxNjM2OCBjOWE0YTEzMTYxNzA4MDkwYjA3M2Y4NDc5NmZiMzhiMWMzNGIwNzhhIGxlZ2FjeS10cnVuaworMTYzNjkgNTU4M2NmYTZkMmIwZjNjZGIxNDNiNDlhZDA0ODdhNGMzMjgwZTc1NyBsZWdhY3ktdHJ1bmsKKzE2MzcwIGE5MDFjMmMwMTY2YmFhNmExOTUyODliZWMzMzVlMzBjMzkxY2JjNGEgbGVnYWN5LXRydW5rCisxNjM3MSAyOTU5ODdmM2ZiZDIyMDEyNzQxOTlhNGVkZWRjMTg4ZWFkMjcxNDhmIGxlZ2FjeS10cnVuaworMTYzNzIgMmVjYTQwNTFmMDVjYjVmOTQxNWFmOWQ2YjI5MmMyYTQwMGQwMWMxNiBsZWdhY3ktdHJ1bmsKKzE2MzczIDg4YjRmM2I1MDhkYWE1OTg5YjVjMjY5NDNlYTlkYWE4NDc1NDE2YWQgbGVnYWN5LXRydW5rCisxNjM3NCBmMzQwMWVkMTMyYTE0Y2ZmNGE2MjgzZWYzNzBiY2NlYWZlMTUzMDg5IGxlZ2FjeS10cnVuaworMTYzNzUgMjYwNzVjMDNmMDIyNzk1OTViMDJiMjc1NWY3ODIzOTg5MjY0MGY3ZCBsZWdhY3ktdHJ1bmsKKzE2Mzc2IGU3OGVkYzNjZmFlNmVhZTczMjM2ZDg3MDg1NmQ1MTYxYzI1ZmRlMjUgbGVnYWN5LXRydW5rCisxNjM3NyA4N2E0MTZkOWQ5YjZmNzQwMTU0ZTZlM2EwZTM4NWJkZDljMzU4NWFhIGxlZ2FjeS10cnVuaworMTYzNzggZjdkOWU2MTg1ZjYyMjJjMWViMmQ3NGZiNGU2YjNhNjlkYzg2OGZjMiBsZWdhY3ktdHJ1bmsKKzE2Mzc5IGZhODk0OTY1ODRjNjI3YjNmZGVjMjMyZDMyZGVlNjVhMzUzMDI3ZmYgbGVnYWN5LXRydW5rCisxNjM4MCAwODY5NDdjZDIwMmNjMTM1NmVhMTgzZDcwOGQzOGQxNGJiYTlhZmQwIGxlZ2FjeS10cnVuaworMTYzODEgYjc0NTQ4YTkwYTYzYzAzNjllZGQyNDc5MjljZjc1YTUyMmY0YWYyYyBsZWdhY3ktdHJ1bmsKKzE2MzgyIDViNzI3YWIzNzA5MmQ1NzJhYTc4OTRmNjM5Y2NlMTAwYzY4OThmMTEgbGVnYWN5LXRydW5rCisxNjM4NCBmMTFjNDcyNzY0YWQzNzE3MTdjYTE5ZTMxNjgyMTRlOTBlYWVkMDc1IGxlZ2FjeS10cnVuaworMTYzODUgMzc5MTk2N2NiMzJlZjg2ZmM0OTE0NTE3MDAyMGE4NzZhMzNkZDMzYiBsZWdhY3ktdHJ1bmsKKzE2Mzg2IDE2N2RlNDk1MzgxMmZhY2FhNmFkMWJmMjAzMDI0MmJlYWVkMDZhOTMgbGVnYWN5LXRydW5rCisxNjM4NyA4M2E1OTVlNjkxZTQyNjJiN2MyNDJiNjBjYjg1YWRlZmRhMzA3ZTVjIGxlZ2FjeS10cnVuaworMTYzODggZmRmZDEwNDlmMzZlOTQzZTdkNTk0NjhlZDhhNGU5NGQzNWY0OWU0OSBsZWdhY3ktdHJ1bmsKKzE2Mzg5IGY0ZGE0MzU1YWNkZTYyZmU2MmNhNjZkYjMwYzhhN2Y3ZDJlYWQ3Y2IgbGVnYWN5LXRydW5rCisxNjM5MCBmNDA4NGY0NDNmMzE5ZGE1OTk0YTU3MjI3MGI2MWU3NWMxMjY0YjQ0IGxlZ2FjeS10cnVuaworMTYzOTEgZDZkMjNkNWUyOTZkNDJmNGFjYWJmNTEwZDc3MzI2NjZmZGFiNWQ2YSBsZWdhY3ktdHJ1bmsKKzE2MzkyIGExYWQ3OTFlMTgyMTgyZWU2YzcxNDE0OGU4ODFkYTk4NDJmNjQ2MDMgbGVnYWN5LXRydW5rCisxNjM5MyA3M2M2NjFiZTFlYTNkZTYzZjczODZkZjc5Mzg5ODE2ZjIzYWNiOTJkIGxlZ2FjeS10cnVuaworMTYzOTQgZmY4MmZkNDIyZjFjMWEzMjhkMmUzYWIxNjRhOTE4MTNlOWY1YmI1MCBsZWdhY3ktdHJ1bmsKKzE2Mzk1IDA4NTk2MDdjYTNlNTNiYWFmMzUxY2Q4ZWJhZGYzYjU1OGEwOWU1M2EgbGVnYWN5LXRydW5rCisxNjM5NiBlMTQ2OWI3YTJlNjhkYjI5MjZlMjA5MGI3NDEyYjU5ZTJjZWFhYWFmIGxlZ2FjeS10cnVuaworMTYzOTcgNmYwZDk2ZTZiNWE1MTNjYjdiMTQwN2YzYzYxMmMzNGZhZjc0NGQ2NSBsZWdhY3ktdHJ1bmsKKzE2Mzk4IGRmYjdlY2ZmZmUzZDViMWM2NmI2NGI3ZjEyYTk1NzYyNzRhZDI4NDcgbGVnYWN5LXRydW5rCisxNjM5OSBiNTEyMGY1OGM1ZGE1ODMxMGY4ZGY3YzFjZTZmZDYwNWE0Y2IxOGMyIGxlZ2FjeS10cnVuaworMTY0MDAgZDkwMWM0M2U3ZDU4Y2U5OWY3YWY4NDkwYzJiMzRjODNmZmRhZTM3YyBsZWdhY3ktdHJ1bmsKKzE2NDAxIDU4Mzk4YzBmOTQ4YmM4OTY3NjM3ODkwOWJkYTE0NDlhNDFjNTg4NDYgbGVnYWN5LXRydW5rCisxNjQwMiBlMmUyNWVlZTZhNGIxNDdiOGNkMzMzNzkyN2NlMzE4MTFkNmU3OTJjIGxlZ2FjeS10cnVuaworMTY0MDMgMzcxOGU1Mzk4ZmFkMzRiNzY4MmE5MTYyY2E3ZGZjNDgwZjg1YjY5ZiBsZWdhY3ktdHJ1bmsKKzE2NDA0IDM4ZWEyNzQ1NWNiYjNjYjg4NzRhODk4NjI3NjI1MGE3ZmJlYzQ3NjUgbGVnYWN5LXRydW5rCisxNjQwNSBkYWNjOWYxNjdlOTU5ZmY3MGI2YmZmZjZkYWQ4MjI4MmE0MGZlZDM0IGxlZ2FjeS10cnVuaworMTY0MDYgMTUyOGJjM2FjNzNkNTAzMTk0OGM2ZTQzY2M4ODhkMGU3Yjc0MjNmNSBsZWdhY3ktdHJ1bmsKKzE2NDA3IDJkNWFhMjEyYTMyMmIyZjk5NTgzMzcyMzA2ZTQzYWU0NmZlYzE1ODggbGVnYWN5LXRydW5rCisxNjQwOCAwYzA4ZGZhNjM0YzM0ZTQ3YmMzMzZjNTU4NWNmYWFjY2IzZDIxZjBlIGxlZ2FjeS10cnVuaworMTY0MDkgNTI1OTViNzBhNTY4NDg4ZmEzNTY5NWJhOTFiMDU5OWQyNTg0M2QwNSBsZWdhY3ktdHJ1bmsKKzE2NDEwIGIyZmJkOWZjZTA1ZTVlNTAwNWJlMjNkOTNkNGRiMzBlN2IyZjFmNjMgbGVnYWN5LXRydW5rCisxNjQxMSA4ZWU0YTIwOWE5ZWY1YmFiZDFiZjEwODA0MDhjNmRlM2ZiZThlM2EwIGxlZ2FjeS10cnVuaworMTY0MTIgZjgwNTcxYmIyOTEzZTc4Nzc5YTQ0MTkzMWUzNmM5N2JmN2RmNjQ3MyBsZWdhY3ktdHJ1bmsKKzE2NDEzIDNkNmQyMThiNjczZDBjZjE0NTVhMzA4MmE5YzEwYTFlNDRkZGY4YWMgbGVnYWN5LXRydW5rCisxNjQxNCA4YTA2MzQyM2UwYjdkZjk5NzQ4OGYzMWU2YmI2ZWFjNTdjOTcyMTI1IGxlZ2FjeS10cnVuaworMTY0MTUgMTE3ZDIwOTY4YTEwNDJkMDA1MTg4NDUzNzdhYzEyNWE5ZmMxOTJmMSBsZWdhY3ktdHJ1bmsKKzE2NDE2IGE3NGFhNDliMGMzN2ZhZDllZTZjYWEwZmRhMmI5YjIxNmQ3M2JhNWQgbGVnYWN5LXRydW5rCisxNjQxNyAwYmI0OWIzZGJkZjBhY2FkYmUzNmQwZTAwYTA2YjBmZTZlODNhZDYyIGxlZ2FjeS10cnVuaworMTY0MTggMTI2NTJkYTZkNjMyYmEwOGQyNzUwZmRlMThjN2FjNzY4MjQyOTgxZiBsZWdhY3ktdHJ1bmsKKzE2NDE5IDk5ZGQxYzkzMzE2MTZiZGI4OTc3Y2YxNDI0OWQ5MjUwZTQ1ODhmNzkgbGVnYWN5LXRydW5rCisxNjQyMCA2YTUzMTRhNmMyYzI5OWUzM2M3M2M3OTRhZjMxZGEzYTNhMTAyZThmIGxlZ2FjeS10cnVuaworMTY0MjEgZjc5NDM0ZWU0MWZhODYwMTkyMTYyNDBiYTMyYmU2NjBiY2ZjNTQxOSBsZWdhY3ktdHJ1bmsKKzE2NDIyIGU3ODE1M2UxNzlmYmNjYWE1MTI5N2EwOTExNWYzZjdhNWFhZTYzYzkgbGVnYWN5LXRydW5rCisxNjQyMyBhMWNlMDcyMTg3ODEzNGIzNmQ1MGRiMTFmZDgyZjA3ZDg0M2RmZWZjIGxlZ2FjeS10cnVuaworMTY0MjQgZWYyNWYzMmM0NTIzOTNmMGQ0ZDEwMWMzMjczNDdhMTQzZTAxN2VkMyBsZWdhY3ktdHJ1bmsKKzE2NDI1IGEzODU2YWI2YjIwNmQ3ZDJjZjZiYTY3NmIwYjUxOTk3Y2VhZjNmNmIgbGVnYWN5LXRydW5rCisxNjQyNiAyOWRhMzU1NDM4MzMyMTYwMzZkOTQxNTI3NWNjM2VjYzYwY2RiN2MzIGxlZ2FjeS10cnVuaworMTY0MjcgZWUxMDgzNGQ2N2EzNmM0ZjdiMjYzMDgzZDdiYTczZjZhMmI0NzQxNSBsZWdhY3ktdHJ1bmsKKzE2NDI4IGVhZmI3OTk2M2VhNjRlZTkxNTA0ZGRiNGUyODgxZTJjN2Q5NWMwNDMgbGVnYWN5LXRydW5rCisxNjQyOSAzNmRlN2I2YWI3ZWI5OTQxNzAxMzNjMWNjMzlkOGUwN2IwNmFkY2E4IGxlZ2FjeS10cnVuaworMTY0MzAgYTZjN2JmZGQ2Nzc3NDY0YWJlOTQ3OWQyODJiNTU5OWFmOTk5OTljZCBsZWdhY3ktdHJ1bmsKKzE2NDMxIGQ3ZDgxZWE5YzgyZGUwMTc3MTljNTNjZmM4MTc0MTNlZmI5ZmY2MTYgbGVnYWN5LXRydW5rCisxNjQzMiBlOTRjMDUzNTFkNDM3NGJlYTVkOWEwYmI0YjYxN2U1MmJhYWQ1NmE3IGxlZ2FjeS10cnVuaworMTY0MzMgNDM4ODI0OTUwNmQxOTBhNzZhNGRiYmJjNzAyOTRlZjZiYTA2NTZkNSBsZWdhY3ktdHJ1bmsKKzE2NDM0IDI2Njg1YmQyYzA5ZTYxYmYzODk2NTVmODNlZjE0ZjQyYjU2MDU1ZDMgbGVnYWN5LXRydW5rCisxNjQzNSBiZmM1YjJhOGMxMWY1ZTYyNjY4MmI5OGQzNzZmYTJlZjY5NzBhMzlkIGxlZ2FjeS10cnVuaworMTY0MzYgY2MwYzBkYzlmZWYwZGM0NDFiODU2M2E5YjQ0YzhkMDQwYzJlMDNiOSBsZWdhY3ktdHJ1bmsKKzE2NDM3IGM5MGQ5NGQyODdkNzliNzQ1ZTRiNWEwYmQ1NTE1Y2VkYTczMTc0ZTYgbGVnYWN5LXRydW5rCisxNjQzOCBiMTk1OWYwMDY1NjY1OTFiM2JlMTQwMWI5Y2QwZjE2NDUxZWJjNjAwIGxlZ2FjeS10cnVuaworMTY0MzkgNTQyM2IxMzJiYzk3YWY0ZDI0MDc2Y2VmMTZmMjczYjY0ZmFmMDRkMyBsZWdhY3ktdHJ1bmsKKzE2NDQwIGVkYjFhOGU2Yjg1OTU5NjBiYmRkNzhiYmM2MGFlMWY3ZGU3NWJkOTIgbGVnYWN5LXRydW5rCisxNjQ0MSAzMTc3ZTI4MjkxNjc3OTdlYTA4MTZjZjcwNzJlNDAzY2Y4YzI3YWU4IGxlZ2FjeS10cnVuaworMTY0NDIgNjFmNjVkZTE5ZTFlNjhlYWFjOTc1ZTNiYzU1MjQ3MTEyYmZiMDQyYiBsZWdhY3ktdHJ1bmsKKzE2NDQzIDlmNjE4OWU4OTIxMjE1OTQ2OWE2MTVlYTcyNDEwNTlkZGE4MmYyYTIgbGVnYWN5LXRydW5rCisxNjQ0NCBiMGU4Mzk2MmY0ZGE3MDhkYjc4ZWYxNzBiNDQzMTIzYmFiM2IyZDBmIGxlZ2FjeS10cnVuaworMTY0NDUgN2RlMThmMDRmODVhNzdhMWQ1NWFiNjE5MWJmZTNiYzU5NWRhNzU1YSBsZWdhY3ktdHJ1bmsKKzE2NDQ2IDhjYjI0ZTBiZWY5YmU1OWMzZGY1MDhmZDYxODNiNWNmMzg0ZDk5YmEgbGVnYWN5LXRydW5rCisxNjQ0NyBlYzE5YTBhOGNkNjg3N2IxOWQ0MjVlNDhjN2FhZjA4NWM3YjQ3YjhmIGxlZ2FjeS10cnVuaworMTY0NDggMTI5Yzk3NzVjYzE5MzIwY2U1ODhlMDRjYTg3YTM0NzcwZWFlZDU5OCBsZWdhY3ktdHJ1bmsKKzE2NDQ5IDlhNTg1NWVhM2U1NmFlNTQzOTQwNTczZjU3YmYzOWRlZjQ5MDUzYzEgbGVnYWN5LXRydW5rCisxNjQ1MCA2MzgzMmVkZTU3N2ZjNTlmOWI0OGFlYzk5ZWI0ZjRlZDVhMGY2MzNmIGxlZ2FjeS10cnVuaworMTY0NTEgOTU4OTRjMzEwOGQxOTg1ZjYwNDg1ZTM0NWIxMDM2ODFmODExYTEzNiBsZWdhY3ktdHJ1bmsKKzE2NDUyIDlkYjg2YjI3Mjc4ZmM5MjM2NWE4ZTQ2OThmNzYzNjZmYTI3ZWFhOTUgbGVnYWN5LXRydW5rCisxNjQ1MyBjMDljMDE3MTQ3NGYwZjQ5YzFkYWJjMDg0ZGFkODQzOTk2Yjk5MGQ1IGxlZ2FjeS10cnVuaworMTY0NTQgMGYxYzYwNTNlOGQwOTIyMzcyOGNhNzhhZGNlMDY4NzZlMzNjN2FiZSBsZWdhY3ktdHJ1bmsKKzE2NDU1IDc5M2JiYWQ2ZDA5Y2YwODM4YzU4MGJjNjFlMDQ5MjQ4MWIyZjQ3MzYgbGVnYWN5LXRydW5rCisxNjQ1NiAyNWZjNjgwNzdiNjY1NDM0MDJlNzJhZjg5YTJiZGMwYWJlMzRmMDZiIGxlZ2FjeS10cnVuaworMTY0NTcgYjU0ZjExYWRhOTFlYTAxMzg4NWEzMTQ4YWQ1YmQwNjBiY2JlNmViYSBsZWdhY3ktdHJ1bmsKKzE2NDU4IGEyOGVkOGM1ZTYyZTAyNmNhMjgzNWNhODRiN2U1ZjM3MTBlY2QxZDIgbGVnYWN5LXRydW5rCisxNjQ1OSBiYjM2NGQ2ZjlmNjkyNTYwNDE2MGJlMzZjNDJlMjc4NTA3NDAyY2U4IGxlZ2FjeS10cnVuaworMTY0NjAgNWUyZTkxZmZhZGNkOGU0ODVlZmE0MTNmMmM4YWZhNGVjZGUzOWI0MyBsZWdhY3ktdHJ1bmsKKzE2NDYxIGNiMjlkNGEyYzE3YjBiM2ZlZmI0YzY3YzM5M2VlMDcyOWZjODU1YjYgbGVnYWN5LXRydW5rCisxNjQ2MiAwMjZlMTJhYzlmNzFiNDM5ZWNjNzA2ZmVmNDZkM2EzZjMwMTVjYWQ4IGxlZ2FjeS10cnVuaworMTY0NjMgZDZkZGVkM2M4NTA3NzhlYzE5YmUzY2U4Nzg3NjQ5M2MxMzUyZTg3YSBsZWdhY3ktdHJ1bmsKKzE2NDY0IGM2ODAwM2VmYjc5NmEzYTFkMDhkMGNiMWJkZDc3ZDkyYmE2MmViNTcgbGVnYWN5LXRydW5rCisxNjQ2NSBmODQwYmY2YTMzNTFlNjM4Y2E0MzE0MDVhNjYwMTFhNzIzOTNkZjQ2IGxlZ2FjeS10cnVuaworMTY0NjYgOTc5NzAxNjk4Y2QyOTcxMTVmZGMzM2E4YWI1YzBhNmZlMDYyYTY5YyBsZWdhY3ktdHJ1bmsKKzE2NDY3IGM5ZmQ1MmQ3Y2EwYWU3Yzk0M2M5OWY5NGY5ZWJiMTg0ZWNiOTcwNDMgbGVnYWN5LXRydW5rCisxNjQ2OCA0NjFmOWI2ZWU1NTU3NWJhNTYxYWNhNTE3OTU2NThhZjQzZTEwYjdmIGxlZ2FjeS10cnVuaworMTY0NjkgMmU2MDNiZDBjMWE5M2Q3YzQ3MTI5MjRhZjYxNjUzMjNiN2I4MTY4MyBsZWdhY3ktdHJ1bmsKKzE2NDcwIGRkOWZmYTBhNmIxMTA3ZTA3NzYxMTJlYjZhYTliYzdiY2NiNzYzZjQgbGVnYWN5LXRydW5rCisxNjQ3MSBmZTg5ZWExYzkxMDg5OGJhM2RiYTE5OTc0ZDU5M2ZjMDBmZmFkMzQ5IGxlZ2FjeS10cnVuaworMTY0NzIgNGUyYWFmMWU3MjJhNzg3MjUxNzI3MDYwOGNmMWUyODYyODNmNzMzNyBsZWdhY3ktdHJ1bmsKKzE2NDczIDY5N2M4OGNjNDcxNGRmYjAyZDYzZWEyMmZkMTFjOGUwMzUxM2U2NDggbGVnYWN5LXRydW5rCisxNjQ3NCA0ODg4NmZhODJhZDUwZTg2YWE1Zjg1ZWNlNWY4MmRhOTU1ZmQ3NmYwIGxlZ2FjeS10cnVuaworMTY0NzUgMDAwMzBlYjg4MTMxZjg0MGYzYjJiZWU5MmQwMzdlYzRjOTM2MWE0MSBsZWdhY3ktdHJ1bmsKKzE2NDc2IGM4N2EzN2EzZDJlNjViNzYxNGQ3MWNkZDNhMzVkYmQxOTI3NTJhY2EgbGVnYWN5LXRydW5rCisxNjQ3NyBjOWQwMzkxOTZkYjYxMDhiMjJlYWUzYmE2YTA5YTVjNWE3NmE3MzllIGxlZ2FjeS10cnVuaworMTY0NzggMDZkNDIyNTkxOWQ0ZDI2MzcyNjc5Y2UzMDcxMGM2YTdlOWU2ZjlkMSBsZWdhY3ktdHJ1bmsKKzE2NDc5IDY1NzhmYWY0OGNkMWQ0OWNkOTg5NzA0NWU4OThmOGNlZTU2M2ZiNmUgbGVnYWN5LXRydW5rCisxNjQ4MCA1YzNlZTc2ZDI0MmUzZThmMWVkNjZkYTE5YWEzYmQ3Njc5YzNkZTE4IGxlZ2FjeS10cnVuaworMTY0ODEgMTcyOTNmMTJlODg0MGViMmU3Zjg0MDEwOGU1MGNhYTkzNDcyMzE0MiBsZWdhY3ktdHJ1bmsKKzE2NDgyIDc2N2IyZjdiZTQwZTYzZGZlNTQ4ZTBkMmJmZjc4NTBiZGRmMjUxMmIgbGVnYWN5LXRydW5rCisxNjQ4MyBkM2Y2OTQwMjM2NDI1YmNmODhhMDIyNWQyMzQxOTA1NDk3Yzk5M2VmIGxlZ2FjeS10cnVuaworMTY0ODQgMDVkNTlmNDQ3NmFkNTBmNmE5NDk2NGQyYTZiYmUwNzlmMTMzZGNiMiBsZWdhY3ktdHJ1bmsKKzE2NDg1IGIzZThkMmUzZGM3M2IwNGIwZWQxM2RlYzI0ZjJlZTZlYzI2NTYyMzkgbGVnYWN5LXRydW5rCisxNjQ4NiBiN2M5M2M2NzdlNTY1ODllNjYwMzdjZWExYTc0N2Q5MmYwM2U4MzE1IGxlZ2FjeS10cnVuaworMTY0ODcgNTdkMDJmNjM0YTAyYjc3ODkwYzYwOTJkYmZkMTdiZmUwMmFlYTM3OSBsZWdhY3ktdHJ1bmsKKzE2NDg4IDQ0OWRkM2EwMGJkNzI5Mjk4OTZlYjEwNzM0Y2RmODljYzY0NzNlZTYgbGVnYWN5LXRydW5rCisxNjQ4OSBlY2I4YWFjZmYyZTNhZTg2ZmY1MzdjZTBiMGRiOTJiNTM0NmMxOWZkIGxlZ2FjeS10cnVuaworMTY0OTAgMDUxNzdjZDQ0MWExOGU3ODY3OGVkOTdhNmY0MmJkMmJkM2YxMGFlMyBsZWdhY3ktdHJ1bmsKKzE2NDkxIGI3NjllMmRkNmE1MWJmZmQ2NjA3ZTBmNTc3OWYzZGEwMjUyZDBkYTAgbGVnYWN5LXRydW5rCisxNjQ5MiA1NDg2MWJmNjc0OGRhNjNmNzg0ZjZkZTgyOGFjODRiNzgwY2MxMWZjIGxlZ2FjeS10cnVuaworMTY0OTMgNjg5ZjE5MDA0MDYzNTQzNmI5MDE3MmZjZGNiNzFlNTM1NjRmODk1MCBsZWdhY3ktdHJ1bmsKKzE2NDk0IDhkOTk2ZjljNTkwM2JmMGNkNmU3YjY4YmU2NmVjMzlmZGM3ZjFlMGUgbGVnYWN5LXRydW5rCisxNjQ5NSA5Y2UzZTA1YjdmZGIyNzRhNmE3NTU5OTUxZTE4NTMyMWQwN2U4Njk1IGxlZ2FjeS10cnVuaworMTY0OTYgYmEzNmE5YzNmNDc3MTQyMDM0NjJkMmMyZGRhODM4OThkNTA3MWFjMCBsZWdhY3ktdHJ1bmsKKzE2NDk3IDNiNjlhOWQwNDRmMWM0MzFmNzgzMjIxMjIzZmVkMjEzNThhNmNiZGMgbGVnYWN5LXRydW5rCisxNjQ5OCBhOTQ5YTcyYWY5NjljYjJmZjk0MDJhMWY4NDk1ZTRmZDBhNTdkZjJhIGxlZ2FjeS10cnVuaworMTY0OTkgMzJjZTI1NGYzYmVhNmY5MGJhNDY2YzEyOTViNjgxMTdiMjgwMjY2YyBsZWdhY3ktdHJ1bmsKKzE2NTAwIGMzMWIxM2I3ZGI3NDA3NTEwNjhiNmM3NGJmNDVlYjEwNzhiNmY2YzkgbGVnYWN5LXRydW5rCisxNjUwMSAxNDc1YzFjYzNiZjFlZTljMDE1OTViZDg3ZDYxY2JhMDZmMzQ0YWI3IGxlZ2FjeS10cnVuaworMTY1MDIgODJkOWMyZjEzMDk4ZTVjNzZmZjQ5YWNjYmQ2ZWVmZGRlNmJkMTQzNCBsZWdhY3ktdHJ1bmsKKzE2NTAzIDk4ZDgxNjk1NjNlNzFkNzRhYWUzNmEzMWQ0OWNiNmI0ZDZiZjRkYmIgbGVnYWN5LXRydW5rCisxNjUwNCBmNjViODY3MzhkM2I1OGMyMWIxMzk2ZjY4MTE3YjZmNTNiZGRmZDZiIGxlZ2FjeS10cnVuaworMTY1MDUgZWU4ZjA5ZTQxMzk1NDYxYmFiOGE4ZTAxODgwN2QzNjU4NDFmYWM5MyBsZWdhY3ktdHJ1bmsKKzE2NTA2IGM3NmU3NGFiYjY1YmFmM2RlZjU0NDVlYjMyNDA3NTU5YzgwYjBiNmQgbGVnYWN5LXRydW5rCisxNjUwNyA1YTMxMTRlOGMwMjdhOTQ2M2VhODQ5MzgyNzgyZTI2OGZiYzg1MDZjIGxlZ2FjeS10cnVuaworMTY1MDggNWMwNjdjMWI1ZWQwZDhhNWU2OTFmNzkzNjlkOTMxZTk3MmQ1YzU1MyBsZWdhY3ktdHJ1bmsKKzE2NTA5IGE0NGRiYmRlNWVjZmRhNTc5YTk2NTliOWRiYjNhNjZjMjlhNDVkYTkgbGVnYWN5LXRydW5rCisxNjUxMCA3YWU5ZmE0MDliNDZmMjZjNTIzMTAzZjYxYjM4M2NmZjU0MmNjZWU0IGxlZ2FjeS10cnVuaworMTY1MTEgMDgzYjRlNTQ3MTcxZWY5YTRkYmU0NTcyZDFkNTRmMGY3MTQwNDYzYiBsZWdhY3ktdHJ1bmsKKzE2NTEyIDFlOWYzMGVlYzQ4MjQ0ODFlZGJhYTAzMTQyZDNjZjBlMDZhMGQ1YTYgbGVnYWN5LXRydW5rCisxNjUxMyBkZmRiOTExY2JlYzI1MmM5MzY2NWJiYzFkN2E5ZjhhZGFmYjRiNGI3IGxlZ2FjeS10cnVuaworMTY1MTQgODNkYmEzZjVmN2I0NmEwMDhiOTAwMWQ5NDBiNTU1N2EwYjc2ODA3MCBsZWdhY3ktdHJ1bmsKKzE2NTE1IDhkMTA3NTdhNTc1YjBhNmNmZTUxZmQ4OGEzNDMyOGIwNTk3M2MxZmUgbGVnYWN5LXRydW5rCisxNjUxNiA4NGY4NTc5YTA3OWNkYWFiZmRiZWQ5NTVhOGUxNDk1MDg1ZjJkM2ZmIGxlZ2FjeS10cnVuaworMTY1MTcgZThkYzBhMGJlNGJhY2MwODE3YTE0NWE1NjZkNzIxZjU3MDkwYTE3MCBsZWdhY3ktdHJ1bmsKKzE2NTE4IDYzMmJlOTljYzJjYjEzODRjMDJjNWY1ZGJkMDgzZWE3N2YzMjQ1ZTIgbGVnYWN5LXRydW5rCisxNjUxOSAwMGVkNGI3NDMwMmZkN2U4Njc5ZTA1YjE3ZmRkMWMwOGJkNWE2NWY0IGxlZ2FjeS10cnVuaworMTY1MjAgNjdiOWIwNWNlNWE1ZGZiMjc1MjE2MDNjMGU2NDI3NWM3NjNhZDU4ZSBsZWdhY3ktdHJ1bmsKKzE2NTIxIGJjMzdlNmEzMzVmMjE1ZDliOWNhOTNkNWYzNmM1NGMzMTBhOGRjYWMgbGVnYWN5LXRydW5rCisxNjUyMiA0OTNiMTA2NTc2M2RiZmNiYzNmMjQyMGU4NWU4MDljYzM0NzYwMTZjIGxlZ2FjeS10cnVuaworMTY1MjMgMTZiNjBiZDZjMzc1ZGE5YmY0ZmFlNjgwZDUwYTgwZTRkZDg4MTM3NCBsZWdhY3ktdHJ1bmsKKzE2NTI0IGQ4OWRhMTdiNDZmNjEwYWE1ZmNmOTYyMjkxMDNmZWQwN2JhODE2YjYgY25yaS0xNi1zdGFydAorMTY1MjUgNmY4ZDI0YjMzMmQzNWQ1OTVjZjRmMmIyZDFhZGVkNTAwYTc3MWY0ZCBjbnJpLTE2LXN0YXJ0CisxNjUyNiA1OWY4Y2VkY2YwNDk1MWMzMGZkOGEwYzJhMjljYTEzY2I4NTI1NDdmIGxlZ2FjeS10cnVuaworMTY1MjcgMmQwMGJjZWQ2MDM4NzBhMzI3MzY4YTE2NTYyOWNlZGQzMGM4MTU3ZiBsZWdhY3ktdHJ1bmsKKzE2NTI4IGMxZmM0MDY2NDYwMzgyZjNkMzM5MjI3NmVkODMzNDI4NzEyYTA5ZWEgbGVnYWN5LXRydW5rCisxNjUyOSBmZGJjODczMGQzNTY5ODk3MGRkZGU0MGY5NTUzYWVkMGU5MmZjNDBlIGxlZ2FjeS10cnVuaworMTY1MzAgYjFiNDc0Y2M4OTY2NDM3ZGE0ZWEyMTRlZTE2NjUxNDc4Y2E3MzE2OCBsZWdhY3ktdHJ1bmsKKzE2NTMxIGRhZDAxMzE3YmVkNzJmYWY3MDVlYjUwOTZmMTlkMjlmMzEyMjdiMTEgbGVnYWN5LXRydW5rCisxNjUzMiA4YmJjMGU2NDMyYWI0ODJiYjg3OGJjZDk3ODM2MDM2NjE2NjUyMGVjIGxlZ2FjeS10cnVuaworMTY1MzMgMzIzZGUzYThmZjhlYmMyNWI4ZjM2Yjg1NTIwOTU5ZmNlMzhjNzNjMCBsZWdhY3ktdHJ1bmsKKzE2NTM0IGY3MWNkMjQ1MzVjNDA2MTljYzkxNjJkOWYzMjQ1M2Q3ZTMyY2IzMDAgbGVnYWN5LXRydW5rCisxNjUzNSBiMDhhYjJjZGY3NDJkMTBhZGM4MmYyNDMxNzJhMDhjYzg0MGExMzI4IGxlZ2FjeS10cnVuaworMTY1MzYgMmNmZmNkNzFkNWU0MTQ3MTQ4MmQzY2NjYTRiYTNjMTE2ZTU1NjQ4OSBsZWdhY3ktdHJ1bmsKKzE2NTM3IGVlYTUxMjc1YWNiZmI0NDJmYWVkYWM0M2ZkMDNmODVmM2FmYWVmMDAgbGVnYWN5LXRydW5rCisxNjUzOCBiNmQ5M2RiYTEyMGVhYjVkNTYxMDIyMzdjM2YyMzhhNmRmNTI4ZjI5IGxlZ2FjeS10cnVuaworMTY1MzkgZjFjOTdhZjRjODQ3MDliZTYyYTcwZjY2YjA0ZmYxMTMwODA4N2RjZCBsZWdhY3ktdHJ1bmsKKzE2NTQwIDlmYmNmYmY4YTFkMjkyYjhmZWYwM2JkMzhkZmM1NjM0ZTUwNWQ2OWUgbGVnYWN5LXRydW5rCisxNjU0MSAzM2RmM2I1MTY3MTE5ZTA1M2IwZGUzMjBhZGMzNTYzYTEyMWY5ZTE1IGxlZ2FjeS10cnVuaworMTY1NDIgYjM5MDNlMDUwMTdmMTYwNDJhNjUwOTE2MGZhNjg0YzQ3OGZiNjBkNSBsZWdhY3ktdHJ1bmsKKzE2NTQzIGY2ZTRhOWRkNjdjZGQzZWE0YWNjZWY3Njk2NjYzYWYyMzU1ZDkzY2UgbGVnYWN5LXRydW5rCisxNjU0NCBhYjQyZDQ1NDI0MjQ4NTJmOTBkNTllM2VmMjhiZTIyYTU0MGIyODYzIGxlZ2FjeS10cnVuaworMTY1NDUgZTIwZmUwMDUyNjgwOTU1NGMwOGI0ZjYxYjg4ZTRhMGNlNmM4MTY4YyBsZWdhY3ktdHJ1bmsKKzE2NTQ2IGFkMzkwMjQwZWZiM2IwOTVhYzFhOGZiYzEyOGUwNjJiN2IwMjg4NjMgbGVnYWN5LXRydW5rCisxNjU0NyBmZjExMWQyODk5MDVkNTI0NzdjMzU5MTEwOTE2NGQ3Yzc5OTUxYjgxIGxlZ2FjeS10cnVuaworMTY1NDggYzI0Zjc3NTViMWY1MjU1MWQwNWJkYmYzOWI1ZDMxNGE5ZjEwODRkMCBsZWdhY3ktdHJ1bmsKKzE2NTQ5IDFjMTg2MDMwNjg4MjI5NzE2Y2VlM2FiYjEzMzdiY2VjMjZjNWM2ZDggbGVnYWN5LXRydW5rCisxNjU1MCA0MjA0NTY0YWJmMjBjNTNmZmVhNjRjNjUwMGFiMWNmODI5MDdkMTBhIGxlZ2FjeS10cnVuaworMTY1NTEgNjY1Nzk1NmFmMzFlMGFhNjVmZDA1OGU4ZmQ1M2I4MmViYmZhMjRjNyBjbnJpLTE2LXN0YXJ0CisxNjU1MiBjOTM2ODdkNmM3MzE3MThmOWZjMjRjOTJiMmQ1ZTI3NTk5YTZlMDMzIGNucmktMTYtc3RhcnQKKzE2NTUzIGYxMjkwYWJhMjlkYTRhMjc4YWFlOGZjNDJkYTk4OGQ5MzA2MmY0MWIgbGVnYWN5LXRydW5rCisxNjU1NCAxZjk2NmYwZDQ2N2NhMWRhNzRiZjYyNTU4MTMyYjA1MTQ3MDRiN2M2IGxlZ2FjeS10cnVuaworMTY1NTUgZjY2NTEzYTBkZWE1YTU1ZTJhZmEyNGY4MTQ0OGYxYmEzMWQ5MzVmZCBsZWdhY3ktdHJ1bmsKKzE2NTU2IDRlZGQxM2ViNzU5ZDI2YzNmNjA4YTY4N2YxMTdhMjM2MzFmMTcxY2IgbGVnYWN5LXRydW5rCisxNjU1NyBjNjZlOTkxYjVmMjE3Y2JhNjk4ZDdkMDc4NzBjY2YzNDJhNmM5YjM2IGxlZ2FjeS10cnVuaworMTY1NTggMDYzNzQxM2U1OTM5N2U3NDg1YzVhNTY4ZjZiZTlkYWQ3MjY2NWZlZiBsZWdhY3ktdHJ1bmsKKzE2NTU5IDFiNzgxMzU3NWFmN2RjOTQyOGRmZWE2YWY2MDA5ZTMxNDhlOTAxOTUgdW5sYWJlbGVkLTEuOC4yCisxNjU2MCAzNTI5NjhlZTQwZTYyOWFkMjc4M2ZmZGEwY2M1YjY3OTI5MDc3MmY0IHVubGFiZWxlZC0xLjguMgorMTY1NjAgNmY3YWI3NGIxMjk4ZGFjNTFhMjE0M2IyZjgzYjJiNjgwM2VhMTJkNSBjbnJpLTE2LXN0YXJ0CisxNjU2MSA4ZmJmMzA3YjkwYTZjMmY0ZTQ3YWZhZDc0YmE1NGVlODg3Y2JjMDkwIGNucmktMTYtc3RhcnQKKzE2NTYyIDEzNmQzZDcyNjY2YTc5NTNmYzc0MmUzOGRlMTcxYTUwYjVkNTQ3YjEgbGVnYWN5LXRydW5rCisxNjU2MyA0YzEwYmM4MTFmZWRhYWQ2YTFiOWI3OTBmNzc2Zjk0MDAxNWEwOTU5IGxlZ2FjeS10cnVuaworMTY1NjQgYmExMzgzYzk4N2M4ZGU5ODgyODk2NDBhMzBiMmNhYjU0MzJlMTk3OSBsZWdhY3ktdHJ1bmsKKzE2NTY1IDgyOTVmODUwNmVhZWE3NTk2ZjkzYzc1Y2VjMDE2MjVkZGFhYjE5MWUgbGVnYWN5LXRydW5rCisxNjU2NiA0MmE0YTQxN2I0NzUwM2ZkMzFjMTFjZjU4NTE2NWZjMGI4ODMyNzljIHVubGFiZWxlZC0xLjIzLjQKKzE2NTY3IDJjNzg2ODk2ZTU0OWQ0ZWViNzVmMWI0NGJjMzc4Y2VjMTQ0NzA4OWYgbGVnYWN5LXRydW5rCisxNjU2OCBlMDBkM2NlNzFmODkzYWJjZTViMTc2NzBhZThhOGJmYWYxNDc4YjcwIGxlZ2FjeS10cnVuaworMTY1NjkgMDMxZGFlMDhhMGE5ODgwMmRhNmRhZGVmNjhhMGY4NGE3ODc5Zjg4YSBsZWdhY3ktdHJ1bmsKKzE2NTcwIGFjNDhkMDc3ZWFhYzk3YmM1Y2YzMjI5NDgwNDhkYWFlYzhlZjE1OGMgbGVnYWN5LXRydW5rCisxNjU3MSA1NDY2MzI0YmI4MTE0ZWY3YmE4ODlmYThmNDcxZjI0MjUzNzU3ODY3IGxlZ2FjeS10cnVuaworMTY1NzIgZmQ0MzcyNzg3NjExYWE3MWVjYzY5OWRiZGI2YjllMDdlNDBjNjkxMSBsZWdhY3ktdHJ1bmsKKzE2NTczIGIxYTdmNjFhYjc4MTFiMWNlMjhkNzRiNTJlYjBjZTBmMTQ5NWE4YjAgbGVnYWN5LXRydW5rCisxNjU3NCBlOGIyMmJjODhkOTVlYTNmN2YxYWUwNWFiYzU5MzZhYjVmMzYzNjBhIGxlZ2FjeS10cnVuaworMTY1NzUgYzc3Zjg4NzNkYTg0MTMyNDgyYzJkZjdlOTUxNmMyNzZlOTAwZWQ5MiBsZWdhY3ktdHJ1bmsKKzE2NTc2IDExNjI1NjMzZDBmNjcwMGZjMDJlODI5NGU4ZjUzZGVkNmY2YzhmYTMgbGVnYWN5LXRydW5rCisxNjU3NyBkZTkwNjYyZjJlYWIxNTQ2Y2NlZTVhZDQ3NzIyMGQ2NjJkNDcyNGIwIGxlZ2FjeS10cnVuaworMTY1NzggYmE4ZGI5NmVhNGQ5ZmQ0NWNkZTdlZTgzNjZjZjlkNTcxZjUwNDVlYiBsZWdhY3ktdHJ1bmsKKzE2NTc5IDM3NGRhNTgyZWMxMmY0ZGFhOGZlYjA2YmRkYmYxMDJlMDUwMjMwZDUgbGVnYWN5LXRydW5rCisxNjU4MCBmMzk2OGRkMTcxMWIyNWFiN2I3NTkwYzRmNWI4OGQxY2I5OTZlNTlmIGxlZ2FjeS10cnVuaworMTY1ODEgNzYyMzdjMGNiZjEzM2Y2ZGI4YTZkY2Q5NWE1YWU2OTllZTNkMWJkNiBsZWdhY3ktdHJ1bmsKKzE2NTgyIGYzOGUzMjFiZThhNDM2NDE2MDFhMjg2ZTEwYzBmZDllZjc2NDcxNWUgbGVnYWN5LXRydW5rCisxNjU4MyA2NDg3M2NmMjBiMTZiNDBmOTkxMTM4YWUwYzg4ZjE5ZTdkZGJiN2Q0IGxlZ2FjeS10cnVuaworMTY1ODQgYWNkMDc1NWVlNzcyNTEzOGY3MjUwZmM0NzdjNGQ4MWQwZmIwNDYzNiBjbnJpLTE2LXN0YXJ0CisxNjU4NSA0ZjczN2ZiMDQ1MjhkYmRiMWVkMjVjYjJmNzVlNDJjOTU1Y2Y5NzMwIGNucmktMTYtc3RhcnQKKzE2NTg2IDQxYWQzNmZiMDBlZTkzNWVmZDk2ZTNmN2I2MTQ0ZTUyNmZjYzg4NzMgbGVnYWN5LXRydW5rCisxNjU4NyA0NWQ4ZjIzZGYyMTgyYzFkNzY2NjllNDk4ZmE0ZGUwYjE4MzUwYWMxIGxlZ2FjeS10cnVuaworMTY1ODggNTFmMjlmY2JkOWJhNWEzMGUzNGZiYjg5MThiMjVkNTVjYWUyYzkzYyBsZWdhY3ktdHJ1bmsKKzE2NTg5IDMzZmY0ZDRkOTFhYzNkOGIzNzcyMzZmNTk1MzFhYmVkZGE3MTRmNzcgY25yaS0xNi1zdGFydAorMTY1OTAgYWZiYmU2NzRkNThhMGJhYmZlOWE5YzRmN2M5M2FiN2U0MjM1NjZiYiBsZWdhY3ktdHJ1bmsKKzE2NTkxIDNjMGY3NWEyMTk4ZmYxOTEyMzMxOGU0M2NhM2JlMWMxNTg5MjA1OWMgbGVnYWN5LXRydW5rCisxNjU5MiA2NjIyZDc2MzFjY2ZmMWY3MGY1MDVkZjE3MzI5ZWE4YjJiNzZmOWJiIGxlZ2FjeS10cnVuaworMTY1OTMgOTVlZWU4Njg2MTFlYzY4ZjdjMjkwMmUxYWNiMzlhNmVjMjRhOTY0MSBsZWdhY3ktdHJ1bmsKKzE2NTk0IDhiZDgyY2YzNjFhYTQyNDA4NTRjYjQyODYxODk4N2IxZDQ1YjgwOWQgbGVnYWN5LXRydW5rCisxNjU5NSAzNWUyMjY2ODZjMmVkODAwYTM4NzQ4NjcxYWRhYzkzM2M5N2Q3OTVhIGNucmktMTYtc3RhcnQKKzE2NTk2IGQ0MzAwOTdkMWJmZDE4OTllMzA0Njc5ZTRmZDMwNjg2ZjcwNmI3YjYgbGVnYWN5LXRydW5rCisxNjU5NyBjNTdiNTc0ZTY3NjY0ZGMyYzhjMGJkNDEzMGM1YjllYTVjNzY2NjkzIGxlZ2FjeS10cnVuaworMTY1OTggZWVlZDdiYzhhMjgzZDk1YTM4YzkzMzI4MzdlZTkxZTk2NDA5MTk4NCBsZWdhY3ktdHJ1bmsKKzE2NTk5IDA4NGM2M2Q4NWY5MDgyOTU0ZDU1MTY1MjgzMDdmNjBiZTMzZmI0ZTcgbGVnYWN5LXRydW5rCisxNjYwMCBhMTBkYzcyMTVjMWVjMTc1YmMzMDQ5MWI2MmQ3MzI5ZGE3M2E2NWJkIGxlZ2FjeS10cnVuaworMTY2MDEgYzYzODYzYWJlMWFhOWRkZWFiMTJkNjA3YTAzNTkyOTY0OTZiMDQzNCBsZWdhY3ktdHJ1bmsKKzE2NjAyIDVmZDgwYzgyYTE1YTkxNDM0ODcwZWM2YTFiOWExODkxZTkzMTZmZGYgbGVnYWN5LXRydW5rCisxNjYwMyAyNTRmOGI3YzRhODM4MTM2NTlmMjFkYTEwMWYyZTMxNTQ4ZTU2NGMwIGxlZ2FjeS10cnVuaworMTY2MDQgNjFjYzU0YzMxM2Y2Y2QxNTg3ZmRjZTE0YTMwMWM4YTA1MzgwODRmMyB1bmxhYmVsZWQtMi41NC4yCisxNjYwNSAwMmUwODE2ZTRiMzcxN2I5ZjAxNzFhZmVkY2E2NjY3Y2E1MmEyNzViIGxlZ2FjeS10cnVuaworMTY2MDYgZTRjMzgwZWU5MDc5ZjcxMzUyNzM3NTQyYzc5MWY3ZGE2ZmQxN2RmYyB1bmxhYmVsZWQtMi41NC4yCisxNjYwNyAyM2E2MmE4NzUxYjQ3NjJiODU4OTcyNGNkOTE1MWE2OTMzOTdmYTIyIGxlZ2FjeS10cnVuaworMTY2MDggMTUxMTRlMDE3NjUyOTQ2MDM4N2FkMWI4MjJlN2FkNzUwYWQ0M2RhZSBjbnJpLTE2LXN0YXJ0CisxNjYwOSA0MDNjOTcwZDFhNWU0YWM5Y2IxYWE2OTY3N2RkYzJjYmI5ZWUwY2RkIHVubGFiZWxlZC0yLjEwOC4yCisxNjYwOSA5YWNmZDAzN2NiOTRkYTE4MzYwNjAyNDMzODM0YWJkYmMyOWFkOTRjIGNucmktMTYtc3RhcnQKKzE2NjEwIGMzNzgzYTMzZjg0YmYwMzU3OGU5MjZkNmI0NmIzOGUzODhkOTU3MzcgbGVnYWN5LXRydW5rCisxNjYxMSBiMDE2ZWM4NzM4ZjlkMjNkZThmMmI4MTViZTllYjI1YzgyZWZlNmMwIGxlZ2FjeS10cnVuaworMTY2MTIgNTEzNmUzN2ZmNTQ4ZTY5MTAxNzMyMTQ1OWJmZGVjNmRmYjZhNTczNCBsZWdhY3ktdHJ1bmsKKzE2NjEzIDRhZWJkMGYyYTA2MjY5MjNmNWMxNzY1ODBjNTA0ZjkyYjIxMjE0MzkgbGVnYWN5LXRydW5rCisxNjYxNCA2MzFiNWRmNDRkZTYwOTUxMzg5ZWY3MGZiNzNiZWE3MmZiYTIwNzlmIGxlZ2FjeS10cnVuaworMTY2MTUgYjM2OGFhODIwOGYzYTFmNGU2Y2Y1YWRiYjExNDJiZTc4OTdhZDlkMSBsZWdhY3ktdHJ1bmsKKzE2NjE2IDExZDg4MjIwZmI1MjI4ZmY4YzgyMmQ5NDgxYjZmMGYwYjI1YmEwMDAgY25yaS0xNi1zdGFydAorMTY2MTcgMmJhZGIzMjIzNTVmY2U0OTg0MzRjNjdmYmQ0NmJkNGE2MDIwNTQ5ZCBsZWdhY3ktdHJ1bmsKKzE2NjE4IDkxZDk1YTdiNzg1ODM3NDAzMTE5YjA4ZWY2MGMyNzExNTA1ZThhOTAgbGVnYWN5LXRydW5rCisxNjYxOSAzYWUwNmM1N2QwOWVhOGNiODFiZGU5YWY1ZjE5Yzk1Mzg2MTFmODViIGxlZ2FjeS10cnVuaworMTY2MjAgNDY1MTQ0YWJmMDJhMmVhOTllMGMwNjYwZDQ4MzgwNWRmMTliZWIwMCBsZWdhY3ktdHJ1bmsKKzE2NjIxIDFlOWQxY2MyYmMzZjdhYzU4YTEyZGQ2N2ViMjY2MWI5YTM0ZjFiZmEgbGVnYWN5LXRydW5rCisxNjYyMiA5MjRmMDk4MWJmNzZkY2Q5MTRmYWI1MWQ0ZTFkMjJmYjNkZDAyYTcwIGNucmktMTYtc3RhcnQKKzE2NjIzIDk3NTczY2Y5MWU2YWRlOTQ3OGJlMGRiNDY1ZmU2NjJlZmRkNjhiYTggY25yaS0xNi1zdGFydAorMTY2MjQgODc0ODhjMzExM2YyNzZkNjdkYTQ1NTg4OGI1ZTJjNTU0MjY2NjAxNCBsZWdhY3ktdHJ1bmsKKzE2NjI1IDAwYTVjODA2Y2Y3Y2I4YWJhOTQ1NjNmMTUzMzVkOGE2MTczNmM5NGEgbGVnYWN5LXRydW5rCisxNjYyNiBiMzdmMDg2MzUwMjNmMjY3M2FiZmMyNmU1YzI3OTBhZGVkNjgxNjUzIGxlZ2FjeS10cnVuaworMTY2MjcgZmM4NzNjYTBjN2QzZjQ4ZDdmN2QyYmM4YjFlNzg1OWJmZDg1ZGFhNSBsZWdhY3ktdHJ1bmsKKzE2NjI4IDA1MjU4NTFiYTBiNzdhYjcwYzM0MmMzNjdkZDNlMWFlNDQ1Yjc1NmEgbGVnYWN5LXRydW5rCisxNjYyOSBhNTVlNDg4M2Y4ODZiOWNjOTZmNzAyMjBiYmUzOTZhNGU3YTAxZWExIGxlZ2FjeS10cnVuaworMTY2MzAgZGQwNDJmNWE4ZmEyMjE0NDhlYWJiZDkwMTBjODIwYzJhZmE1Njg1YiBsZWdhY3ktdHJ1bmsKKzE2NjMxIDA5ODgyNWU3NGEwNWFkOTJjZGZlN2ZiMDVlZWFiZDk0MTI4YzQyNWMgbGVnYWN5LXRydW5rCisxNjYzMiAzNDhhN2MxOGUwZTYzYTdmMzI2MzA1YWUxNmVkYTNmYjM0ODgyZTQ2IGxlZ2FjeS10cnVuaworMTY2MzMgYjczMWEyMDYzMDJhZTcwYTlhNDM0OGRjZjdlMmJmNjc4YjAwODRiYiBsZWdhY3ktdHJ1bmsKKzE2NjM0IGM0ODA1Mjk4MDdhYjMzMDZhYTRmYTMxMWQzYWY3M2Y0NzIyMzM5ZGEgbGVnYWN5LXRydW5rCisxNjYzNSAwN2I4NWZjN2VmNjg0Zjc3ODNhNDU1OWU0YTJiZTk3MWY2Zjk5YzQyIGxlZ2FjeS10cnVuaworMTY2MzYgNjY1ODliMDZjNjMzMDg2MTRmY2RkZGY3MDY4OGViYmMwNTAyOWZlMSBsZWdhY3ktdHJ1bmsKKzE2NjM3IDA0YTM2ZTkzZGMzZGQ4MDY2ZjUwODFhYjllNjBiYTlhZDFjMDdmMTAgbGVnYWN5LXRydW5rCisxNjYzOCA0NWVkYzMyNWU4OWE1NzY5MGQ4NmZlZjJjZDE2OGM2Yzk3ZWE4N2FlIGNucmktMTYtc3RhcnQKKzE2NjM5IDk0YWRkODhlZjA4YzA2YjU1MTg0ZjYyZjgxYzNlMDA3ZDRlYzM0NGIgbGVnYWN5LXRydW5rCisxNjY0MCA2NjgyZmYzZTMxOGY1ZjI5NDI4MzlhZmFkODFkNjBiMTZkYWVhYWRiIGNucmktMTYtc3RhcnQKKzE2NjQxIGEyOTZmZjU1MjIxZjcxMjBiNTZmN2VlNTdlMDBiMWI3MTg3ZWIzNGIgbGVnYWN5LXRydW5rCisxNjY0MiA5OWYwNDEzZWY3OTVmMzE1YjI1MWQxNzJiNzJlOWMwOTU4NzNhYTUwIGxlZ2FjeS10cnVuaworMTY2NDMgYmY4ZDU2ZTI3YzdiYmE1NmRmZjg0NDdhMGU0OWMwZmQwNDcwZDc1NSBjbnJpLTE2LXN0YXJ0CisxNjY0NCA5NGY2ZWM4NzkzMGFiZTVlZGQ0YmZkYTEyMWUyNTMzZTk2NTRlMGU5IGxlZ2FjeS10cnVuaworMTY2NDUgZDc0YTRhNDNmNDVmYjg4YWRjODdjYzJkYjY2MDM1NmFkNDgxNWJlMCBsZWdhY3ktdHJ1bmsKKzE2NjQ2IDQ2OGRmNWE4Y2Y0YWNmZDM0MmNmZmIzZTkxNTYwMDgzMGNmNDdkMDYgdW5sYWJlbGVkLTEuMjMuNAorMTY2NDcgOTZhZDMyNDk4ZGI3ODIxNDg2OTAxYjAyZTJhM2YzM2QwMTlhODdlMiB1bmxhYmVsZWQtMi41NC4yCisxNjY0NyAxYzJhZGFlNDUwNjk3ZGZjMzFjNjY1MzNmYjcyYzgwNjNmYjNiYWMxIGNucmktMTYtc3RhcnQKKzE2NjQ4IGYzZDVmNzFjY2JiNDVlNzM2ZjhjYzNjYTRiYTdlM2UxYjUzODgyOGIgbGVnYWN5LXRydW5rCisxNjY0OSA0YzNmOTc3Y2UwNmNmZTdjYjViZDQ4NzkxYTVkNTBmOWY4ODMzYWJmIGxlZ2FjeS10cnVuaworMTY2NTAgYTk0ZTM3ZWNkYmViNmZiNjhkMGRlNmRhZmVhOTNmNDIzMjZjNWY2OSBsZWdhY3ktdHJ1bmsKKzE2NjUxIGM1ODE0OWMwNjcwYWE5OTFlZDc0OGExNmQ1ZWRlMTBiMDg0NTg0MDIgbGVnYWN5LXRydW5rCisxNjY1MiBmYzQ5YTNiMzg2M2IxOTZjNWMxMGIwMDc3MzAyYjI4ZTVlNzlkYjMxIGxlZ2FjeS10cnVuaworMTY2NTMgZGZkYjYwMWNlZTFjZjUxNDM1YmIzMzg2YTJlNmI2YjFmMzhjNGM5MyBsZWdhY3ktdHJ1bmsKKzE2NjU0IDU5MmFjMjcyNjQxZDIyZGYzNWZmNzE0N2Q1YzkzNDAxNmE1NTdiZjQgY25yaS0xNi1zdGFydAorMTY2NTQgYTY5ODVkODk0NjQzNzZiOTE3M2M5YTU3N2M2NzBiN2QwYjc2N2QzZCBjbnJpLTE2LXN0YXJ0CisxNjY1NiBlMjYzYTI3M2UzMjFmOTZlOTdhZGFjYzUzMGI5YmVlODA3YmI5MjNkIGxlZ2FjeS10cnVuaworMTY2NTcgZWU4YzVjZmFkMzM1ZTZiYzZmZGY0YTc0YThmNjI0M2NjYWVlOTJhMyBsZWdhY3ktdHJ1bmsKKzE2NjU4IDRlZjQ2MWRmMzJjMTkxZTkxMzBkYzliY2I3Yjk1MWVhMGExMTQ4NzIgbGVnYWN5LXRydW5rCisxNjY1OSA1OGZlZmVmNzBmYWNiNzMwMGEyZTQ1NmZjNzU2NzYyMDkwODM4M2M0IGNucmktMTYtc3RhcnQKKzE2NjYwIGRmN2RlYjJlYmE0MTQxMDdlZGZiY2JhYmU5NjU5NTQ2OGE5ZDY0OTcgbGVnYWN5LXRydW5rCisxNjY2MSA4MzA3NDQ2YmM2YWFkNjYwZGQ1MTE3ZTYzMTE4ZjgwZTc4MGI1MmJjIGxlZ2FjeS10cnVuaworMTY2NjIgMzVmYzk1MTFhMzZmZjJjNDdhNmJhNjY3ODJhNDMwMDljNDQ5Njg2ZSBsZWdhY3ktdHJ1bmsKKzE2NjYzIGQwMTRjOGFiNmE4MjQzNTNkMzMwMDFhMjMyYjEwMTA2Yjg0MTdkNDYgbGVnYWN5LXRydW5rCisxNjY2NCAyNjZlMTFhMjI2ZjdjZDgzOWMyMjZmMzQwMTc5OTA2YTIwN2FlY2Y2IGxlZ2FjeS10cnVuaworMTY2NjUgZWE1ZWI1MWVkMGY2OThjNGI0NjYyY2QwNzkwODI1NDkxMzUwODkzZCB1bmxhYmVsZWQtMS44LjIKKzE2NjY2IGY5MTE2MThhMGVhMGZhYzQ2Y2U5NmUyY2I2NWNkM2YwMzkxZDAyYTcgbGVnYWN5LXRydW5rCisxNjY2NyAxYzAwZmVhOWFlNDBjMGYxZmI0MmZlZDNlYWIzODIxOGZjYjNkOTcwIGxlZ2FjeS10cnVuaworMTY2NjggNzU1ZTIxMzVhMTk0OGE4ZDNjMTMxZjFmYjc2M2JkMzA0YjI0YjU1YSBsZWdhY3ktdHJ1bmsKKzE2NjY5IGFiZmE0ZTRiMmYzZTlhY2UyZWYyODJkZWRmYWQ2NzlkYzg4NDFkYzMgbGVnYWN5LXRydW5rCisxNjY3MCAwZjY4MDE4Y2NlNThmOWYxZmE5ZGI0Mjc2YmJmZjc3ZWY3YTYxMDRiIGxlZ2FjeS10cnVuaworMTY2NzEgZGQ4MzBjOWU1YzIxOGZhZTU5MTgyNmU0MDE0NWUzMjQ1OTRmODM4ZSBsZWdhY3ktdHJ1bmsKKzE2NjcyIGM0ZTMyMTgzNDI1MDNhYzYyNjdkYTIxNTE1NmQzMTVjM2MzMmRhMTkgbGVnYWN5LXRydW5rCisxNjY3MyA4ODFkMzk4YTQ0ZTA3MTBhZTAwZmQ3MDYzZTAzZjNlNjNjNTU3MTNkIGxlZ2FjeS10cnVuaworMTY2NzQgYmY3MDYyZThlZWFjZjQzZTNlNzY3MmQ3Nzg0NDgxM2UwOWRmMjUxZSBjbnJpLTE2LXN0YXJ0CisxNjY3NSAzMWE3YjAwNDU1OGZiN2MzYTkxM2UwZGExZjk4M2ZkNWMxOGJkNTQ4IGNucmktMTYtc3RhcnQKKzE2Njc2IDMzZmQ2MGFiZDQ4MjJjNGFhZDU3MWJlOTc5NjdhMDk1YjI0ODg4NmYgdW5sYWJlbGVkLTIuMTA4LjIKKzE2Njc3IDE1YWQ0MDg4YTcwMGJmYjA1YmQzMDBhODZhZjcwYmMyOWE1MDUyNzkgbGVnYWN5LXRydW5rCisxNjY3OCA4ZWVhZmY5NmI0YzI0NDIyZmFhZjI3MTZmMzFjMmFhYzgwMGMwYWY4IGxlZ2FjeS10cnVuaworMTY2NzkgMDk1NjU3ODQ3MTVlMWM2NjU1ZTY5ODk5ZjY5MjlhMDA1ZmNmMjE5MiB1bmxhYmVsZWQtMS45OC4yCisxNjY4MCAzYTVhN2QyN2YxYjcyYjlkZTFmOTg4YTE4Y2QwNDQ0Yjg2ZDkxMGE2IGxlZ2FjeS10cnVuaworMTY2ODEgNjI0OTRhOTZkY2NhYjVhYTIzOWU2N2VkZTlhZjYxYjYwZWVlZmRlYyBsZWdhY3ktdHJ1bmsKKzE2NjgyIGMwYzE3MzQ3ZGE1YmJlY2NiZWZmMWM3NWQxZWEzZjAxZGE1MDQ0MzkgbGVnYWN5LXRydW5rCisxNjY4MyBhYTQ5ZDA3NGY3MTYxYjA3MjdjOTY1M2NhYzA5Njk4ZmJiYmE1MWRkIGxlZ2FjeS10cnVuaworMTY2ODQgOThmMDhjYWZlMTliMTI1NDFlYWYzZDFhM2NhNmZlMjNmNTY2OWEzMiBsZWdhY3ktdHJ1bmsKKzE2Njg1IDhmMGZjMGI1Zjc4NGNjZDA2YTBjNzExNDRmYmRmMWUzYTg1YjQzZjIgbGVnYWN5LXRydW5rCisxNjY4NiAwOGZlYjUzOGM4MzcxNjBlYjQ4NWU5YzA0NGNiMTk5OTVhNzdhODk3IGxlZ2FjeS10cnVuaworMTY2ODcgMjE5MGI3NTk5ODM3MzRhMGM0ZTk0ZGYwZDUyMWRjOGExM2M4NjQyYSBsZWdhY3ktdHJ1bmsKKzE2Njg4IDFjNWJkYjY2MjNjOGMxMTQ4NWMyNTg5MThmYzMzZThjMTI0MGJkMzUgbGVnYWN5LXRydW5rCisxNjY4OSA3N2I5ZTA0MWI1OTVjYjUwOWQwZDgyMjUxMDc0MjAwYzQ5Yjk0ZmFmIGxlZ2FjeS10cnVuaworMTY2OTAgYzMzMjBkMjRkN2RlNDZhZGQwZWU0YjczMzgwMGJmOTJmOGM2YzJmZCBsZWdhY3ktdHJ1bmsKKzE2NjkxIGUyZWEwMDYyMGVkNjg5OWE0ZDQxNzQ2OTA2MTYxNTRiODEyNWY3NDQgbGVnYWN5LXRydW5rCisxNjY5MiAwNDMwYTEzMDk1OTZjODc5MGQzN2Q3NmZkNzlmNzc1MGUxMWE2MDJiIGxlZ2FjeS10cnVuaworMTY2OTMgZDNiZjk3ZDUzMmEwOGI0ZjEzZjJkM2Y1MDc5NTUzNjFkYzVhMjM5MSBsZWdhY3ktdHJ1bmsKKzE2Njk0IDI1ZGU3MTkzZjlmY2VhNjU4MzQ1MDRhNzZmNThkZmYyZTk3Y2JlYTUgbGVnYWN5LXRydW5rCisxNjY5NSBhMGIzNjU5OGIzMWQwZDI5ODk5MTE3NDU5M2Y0YWJmMmZhZmZhYjJkIGxlZ2FjeS10cnVuaworMTY2OTYgOWM2OWJkMWEyODIyZjBlNTA1ZjA4ZGQ0YzM0MDhhYzM1MzNjZWNjZCBsZWdhY3ktdHJ1bmsKKzE2Njk3IGUzMGExOTRkY2EwMTQ4MmM0ZGUyMWM2OGRiNjQwZjE1OGU1ZTA3ZmYgbGVnYWN5LXRydW5rCisxNjY5OCAwZWZkZjQ1YmY2YmI2YjhkMTYzODYwODMxN2Q5Y2MzNWJmNDA5NGVkIGNucmktMTYtc3RhcnQKKzE2Njk5IDBhYzkxOWNhOGU2OTYyNDA1OWU4N2E1Y2NkZTUwNWVjYmU3ODdjNTQgbGVnYWN5LXRydW5rCisxNjcwMCA5OWUxOWM5ODJmOTQ0NWRmOGNmOGMzMWNmMmZiNDExZGU4YTQxNjhlIGxlZ2FjeS10cnVuaworMTY3MDEgOWMxZTY4OTg0MDI3M2Y5NDIzN2UyMTcyMmQ1Y2ZmNGZkODQxNjUzNCBsZWdhY3ktdHJ1bmsKKzE2NzAyIGM0NWFjY2M4ZTZkMDM2ZmY3NWFkYTViYzUxNThhNjhiNmFhNTcwMzYgbGVnYWN5LXRydW5rCisxNjcwMyA0NDZjMzYxNmMzMjNiMGY0N2JmZmVhOWMzYjAxZjY5Yzc0OTJlODMyIGxlZ2FjeS10cnVuaworMTY3MDQgNTI3NTdiYWYwMzBkZGEwZjA4MzkxNDk1MmE1MzZhMjg5NzYzMmViYiBsZWdhY3ktdHJ1bmsKKzE2NzA1IGIzNDdmYzVkYWViNzBjNzAwNmQzNThmN2Q0YTU4Njg2OGM5NTQ0MzMgbGVnYWN5LXRydW5rCisxNjcwNiBhNDI1OWJmY2E1YmZlOGJhMmYyZjAxZmUwMzRhMzJlOTc1MDRmMTkzIGxlZ2FjeS10cnVuaworMTY3MDcgNmJmMTI4MWVjNzYzOWJkZTQxNzE2OGM4NGRhNDU5MzVhMjIyMjgwMSBsZWdhY3ktdHJ1bmsKKzE2NzA4IDYwMjQzOTliNzhiZmE2MmY5M2RhZDliMGYwNWQwNjU2ZmViZDlmZjkgY25yaS0xNi1zdGFydAorMTY3MDkgOTQxNGQwMzFhMmMzYTRjYmY2NGNlODE4ZjU4NDIxNjViMTM1NGE0ZSBsZWdhY3ktdHJ1bmsKKzE2NzEwIGM4ZmY4MGNlYTRmN2JlNjE5MWQ1ZDdjYzk2MDk0Y2NjZmQ2YThkNWMgbGVnYWN5LXRydW5rCisxNjcxMSA4ZjQzZTU5MmNmOWE0ZjY4YTViMGU1MjFlMmQ4YzQxNjIzMmRhODBlIGNucmktMTYtc3RhcnQKKzE2NzEyIGQ3MGFlYzJlMzQ5Y2VhYjVlOWYyNGM4ZGM1ZTJiZmYyMWNmMzg0MGYgY25yaS0xNi1zdGFydAorMTY3MTMgNDY2ZTVmZjI4OTI2MjBhMDI3YzJmNDk4MWY1ZTg4M2JlZDljZjlmNCBjbnJpLTE2LXN0YXJ0CisxNjcxNCBmNDA1ZmNiYWFlZjVhOTc1NDgwYzhiODEzOGM5MDA4ODg5YTdmZTE5IGNucmktMTYtc3RhcnQKKzE2NzE1IGU2ZWZjZmNmMTc0YTg3ZGRkNDkxZGFkMTUwNzc1OTEyNmM2NWIyZjMgY25yaS0xNi1zdGFydAorMTY3MTYgY2Y1MDM0NTBmMDdiMjRjNjJkNjZkMzkxNzlhMWU1YzE5MjI3ZTMwMCBjbnJpLTE2LXN0YXJ0CisxNjcxNyBiZDY3YTRkNmY0ZjhjMWQ2ZDc1YWU4MjlmZjY0MjFjM2FjYWExOTM0IGNucmktMTYtc3RhcnQKKzE2NzE4IDA4MDIzZDI2YTBjZTg3NTA5ZTI0NjlhYTVkNjFhOTM1YjhhNjMzOTAgY25yaS0xNi1zdGFydAorMTY3MTkgNTljNmU5ODMyYTIwNDI1MjZlZTFkZGEzZjMxNWQ5Yjc0NDU5YTAwMyBjbnJpLTE2LXN0YXJ0CisxNjcyMCA2OTNiNjE1ODE3NDY2OTA3Y2JmNzQ2NDFjNzQ4NzZhNmE3YmQyNDRkIGxlZ2FjeS10cnVuaworMTY3MjEgNGQxNmM4ZGQ4OTljNGVlYTIxMDk0NjkxYTc5MjZiZTYzMWE5NGYwOSBsZWdhY3ktdHJ1bmsKKzE2NzIyIGJjMDE1M2E3MzlhZWY0NjdlNWEyY2QzMWEwN2E5YjAxZDdkYmU1ZmMgbGVnYWN5LXRydW5rCisxNjcyMyAwM2ZhNDA1MjhkMTc5ZmFiNjUyODA3OTg3NzIxODYyYTc4MTFlNzBmIGxlZ2FjeS10cnVuaworMTY3MjQgMDgwOTJkMWViMjZhZjk3Yzk2ZmIyNzM4MmFkNDIwNWY5ZTViYTYzYyBsZWdhY3ktdHJ1bmsKKzE2NzI1IDMzOTY5NzUxZTM1MWZkNzkwNDlmN2Q5NGVlM2E3ZTliOTUyYmIxMTIgbGVnYWN5LXRydW5rCisxNjcyNiA1MmZjZDA5ODU0N2U5ZWNiMzY4MWE2NzYzODc4OTI1MDgyYjViNDE3IGNucmktMTYtc3RhcnQKKzE2NzI3IGQwNTdjZDU0M2VkOTY2ZGYwMzYxMmE2YzQyZTA3MTFhZGM3NjBhMTggbGVnYWN5LXRydW5rCisxNjcyOCBjN2IzZmU4NDMzNTg2NzVjMmI3MTFmMDRlZGU3NGI5MjY2NTg2ZGM1IGxlZ2FjeS10cnVuaworMTY3MjkgMWQxN2M1ZTY3ZWY1NzI1MjQ4ODAwOGEyZjhhZTU2OWE4NTI2YzM5OCBsZWdhY3ktdHJ1bmsKKzE2NzMwIDY1OGIwODVlMTc1YmY4NDdkNzZkNmUxYTE2Y2VmMTI2MGFjYmUxOWQgbGVnYWN5LXRydW5rCisxNjczMSBkZGYzMDJkNjkyMTEzZTZlNGI5ZGIyMWNjNTM3NmNkNjE0ZDVjYjFlIGxlZ2FjeS10cnVuaworMTY3MzIgMmEwNGZiYjdjMDdkOTY0NzdkYjA3MjU2YTJkMDhlNmE2OWExZThjYSBsZWdhY3ktdHJ1bmsKKzE2NzMzIGI2ZTA3YzI3MjQ4NzkwMGZkZDk3NjkwZmYyMzNkNTgzNzJhYWQ1YzYgbGVnYWN5LXRydW5rCisxNjczNCAyNjZmYjYzMDJmMzExN2Q3MWY4YzE2NzM5ODcyNTMwNGNkMTdiYTE5IGxlZ2FjeS10cnVuaworMTY3MzUgMzkyN2E0ZDljMmZiMDJkYTI3MThmM2NmNDNkNGJjMDk5NGE2YmNjYSBsZWdhY3ktdHJ1bmsKKzE2NzM2IGYxOTRkOGIyNDg2NTkxMmJkMTZjMTc1NTMwMWU5YmUxYTM4NzdkNzIgbGVnYWN5LXRydW5rCisxNjczNyA0ZWFhNDYzYzAzMWExYmRiNWU3NzkxYzM3MGQwNDEwOGUwNjgyZGQ0IGxlZ2FjeS10cnVuaworMTY3MzggNjBjN2NkYTM1Y2ZhNDg3N2VjYzVhMTU0OGU5MDM2MjFjYTg1ODA4ZiBsZWdhY3ktdHJ1bmsKKzE2NzM5IDcxNzJjMmQ4YjkyYjY1OGYyY2RjNmQyZjRmMjIyYzcwNzNjZWY3ZDQgbGVnYWN5LXRydW5rCisxNjc0MCA0ZDE0ZWVmOGVhMDc2NTY4YmE3NTI5MDY3MmM1MDE4YWI1ODMwMjJhIGxlZ2FjeS10cnVuaworMTY3NDEgMmUwZDFhZWE5YzM3NDFlMDRhZGZmOGRhMTUzNzYyMGY0ZjUzMmI5MSBsZWdhY3ktdHJ1bmsKKzE2NzQyIDQ0YjFiODE4ZjI4ZTkyNTgzMzFhZGM0YjRlZjMyM2JiNjBhOGJkZTkgbGVnYWN5LXRydW5rCisxNjc0MyAyNWZkOTg0NmJkNTQyYzM0NGYwY2U1ODA3MzQxMjNlYjljMmNhZTIyIGxlZ2FjeS10cnVuaworMTY3NDQgNDY0YTIxOTBkOWI2NzZhNjkzNTdlYmZjZWNiZjk1NjM0MTk3MmQwNyBsZWdhY3ktdHJ1bmsKKzE2NzQ1IDgwMDg5YTQ1MGMzNGQwYjViZGExZjQ2YjFlM2EwNjBiOWE0MDYyMDkgbGVnYWN5LXRydW5rCisxNjc0NiA4N2FmMmMzNDFiNzliYTBiNTU5MTA2ZDY1MDQ4ZjIzZWE0MTM5YjI2IGxlZ2FjeS10cnVuaworMTY3NDcgZWNlNzViMDdiMTM2MDgwMTBjYjVhMjk3ZjRlMGNhNTYzYTUyMGU1OCBsZWdhY3ktdHJ1bmsKKzE2NzQ4IGQ1NmRkMTUzMGNlMTEzMmMyNTdjMWVmYWNmMTExYzkwNTFjMzQ3MGEgbGVnYWN5LXRydW5rCisxNjc0OSAzMWIyNWFjMWYwMTlhZjMwM2M2NjJiYTEwNzBhYTdmZjAyN2MzYzMyIGxlZ2FjeS10cnVuaworMTY3NTAgNTc4MGIxOThhYmM4OTllYTc4NzU4MWI0OWZjZTFkMGI3ODFjZTMyOCBsZWdhY3ktdHJ1bmsKKzE2NzUxIDY0OGJhNDA0NDQ1NTlmYjRmYTVkZjQyYTY0YmNkZjQwNDQ1MGI0YmEgbGVnYWN5LXRydW5rCisxNjc1MiBhZmRiM2Y0ODVkOGY5M2UzODdmMWU0N2M4NmI0NjBkMjkzYzYyOWQ4IGxlZ2FjeS10cnVuaworMTY3NTMgN2E5OTQ1MGRhMmQ2NGY3YjI1MDVlZmE0Yzk4NmM0NDA2YzU2MjhiNyBsZWdhY3ktdHJ1bmsKKzE2NzU0IDE5MWYyMGUwNDczZWUxZmZjNDBlOGQzZTNiNmM0OGM0ZWRjNTUxZTUgbGVnYWN5LXRydW5rCisxNjc1NSAyNjg5OGE5OGRiNmVkMGJjMWFkMDUxNDgyNjgwY2RiMjFiYjA5NDAzIGxlZ2FjeS10cnVuaworMTY3NTYgMjhhZmJjNWUwNzcwMDRhZTcyZDdmMTc4MDIxMzA2YjY0ZTk4NjQ3NSBsZWdhY3ktdHJ1bmsKKzE2NzU3IDM3MGFkZTg4YTUyYTU0NGNiZDY0Mzk4MmVmOWEyY2I3MzgzZDQ1NmQgbGVnYWN5LXRydW5rCisxNjc1OCAxYjE1NmVmODI4MWI4YmVhYmFiZmI3OTE1NTU4OWM4ZWJmODBmMTBjIGxlZ2FjeS10cnVuaworMTY3NTkgNzBjNDdhYjAxYTg1ZTJiZWNlMzBjODg2MDkxYmMzNzU1NjkwMTliZiBsZWdhY3ktdHJ1bmsKKzE2NzYwIDc0NDVkOTlkYThkZDg4MjU1MTQyNjZmM2RkMTY2OTRiMTFkNDZiZTIgbGVnYWN5LXRydW5rCisxNjc2MSA4MmEyMmQ4Mjk2MDcxMGVhOTQ2NzgwN2QwNWFhNDBiZDhiODA0M2E1IGxlZ2FjeS10cnVuaworMTY3NjIgNDk0Y2Y1ZmI4ZjE3NGVmMDQwYzQ4MjVlYjRjY2Q2YjYyNjc5YTM3MCBsZWdhY3ktdHJ1bmsKKzE2NzYzIDhlOGE4ZGYwZmU3MzRmMmI5MGM4YWUzMDU2N2VmMDBlYTM5ZjZlYTQgbGVnYWN5LXRydW5rCisxNjc2NCBiOTAwMmRhNDZmNjkzYWM3ZjQ3MjgzOThkNzczYWM5YTkwNDNiNDVjIGxlZ2FjeS10cnVuaworMTY3NjUgMGJiMGM3MTY3ZDFmYzdiMGM0NzFmYzRhOTFjMDE0ODdhMmY4M2M5MCBsZWdhY3ktdHJ1bmsKKzE2NzY2IDhiZTc1MjQwODVkNjE5NGE2MzgyOTA3MjZjNzc0ZTM0ZjQ2NmMwY2IgbGVnYWN5LXRydW5rCisxNjc2NyA3ZGRlNzRjMWViYmU0Y2Y1MjM4Nzk3ZTVmYWIxNTdmYmM5ZWM0MGE0IGxlZ2FjeS10cnVuaworMTY3NjggYzlhYTQ5ZTg3NDhlNzE1YjRkNTM3MmFhMDMwZDgxZTA5ZTFkODc2NSBsZWdhY3ktdHJ1bmsKKzE2NzY5IDcwNzlhYTA1YmJkMDU4Yzk1Njc5MDlmNjk2MzdkYWFjYmQ0ZTIwNzkgbGVnYWN5LXRydW5rCisxNjc3MCAyZWUwZjQ3ZjE0ZDNiMGE0NGQ1OGY2ZDZjYmVmNjBhOTA0M2IwMWQ5IGxlZ2FjeS10cnVuaworMTY3NzEgYTI1NmMxMDFiZjI3OTVlYzIxZWEyNDJjOTM1NTYzY2U0ODRjZmNhNiBsZWdhY3ktdHJ1bmsKKzE2NzcyIDU2MDE3NTgwMGEwN2U3MTJkZDgyNmRmODAzMTBiODkzZWM3Y2Y0MDkgbGVnYWN5LXRydW5rCisxNjc3MyA5MWRkZWVkMTJmYTcwM2E2Y2M0ODcyMWJiYjcwYTcxYTlkYzUzMDcyIGxlZ2FjeS10cnVuaworMTY3NzQgN2I3ZWU1ODkwMWZiMGYwYTdlMGYyZjA3ZDA5MmM3ZDg5MDZhZDFmMyBsZWdhY3ktdHJ1bmsKKzE2Nzc1IDg0MWNmOTAxMmFjM2NiZmZhYTE4MmNiZWUzYjlkOWJkMjlhYmI0YzggbGVnYWN5LXRydW5rCisxNjc3NiA1NWUzOTg4MjA1YjM0ODBiY2U3ZWQwNWVlMGNhZTE2OGQ0ZTNhMDQ4IGxlZ2FjeS10cnVuaworMTY3NzcgZDk5MTgzY2RiYmRjOTdhOWJiOTE4MGZhY2YxYWQ3NjNhZmRhZTI3ZSBsZWdhY3ktdHJ1bmsKKzE2Nzc4IDRlYWJkN2QzOTI1ZmM5OGM4OTc2MGRkMTJjZWFhYjM1ZTVhYmJiNDYgY25yaS0xNi1zdGFydAorMTY3NzkgODE1NWE4YjMwNDQ0YTRhNGE2ZWYwZjUwYTM5ODc5OGNkZmQxYTg4NiBjbnJpLTE2LXN0YXJ0CisxNjc4MCA2ZTJjMGQwYzNmZDU2ZDRhZTk3NGEwMzQxOWMwMDVjZWE4YzU0NzkzIGNucmktMTYtc3RhcnQKKzE2NzgxIGRlMmJmYzE1ZjllY2U1YTViZTQ1MzI0MmVkZWI0YjAwNWU2MWFjODQgY25yaS0xNi1zdGFydAorMTY3ODIgYWE0MjAyNzAyMjUyNjI3MTFlZDZlMDI2NzEwYTE4YjI1YjBmODk3NyBsZWdhY3ktdHJ1bmsKKzE2NzgzIGMyNThmMDVlYjg1ZGM5OGIzOGEzOTQ5NWViZjdiMTYxZDdjMGJlY2IgbGVnYWN5LXRydW5rCisxNjc4NCA0ZTI4Y2EzNDVjZmVlNzZmYmVkNTU1YjkxZGNiZTM5N2VhMDBmYTk3IGxlZ2FjeS10cnVuaworMTY3ODUgM2U2ZTNkMDVkMDBiN2Q1ZjE2Y2M4N2I2ZTZhYjNkZjMwYjAzZDYxMiBsZWdhY3ktdHJ1bmsKKzE2Nzg2IDMwNzEzZDUyODhkZjQ5YzQ0MjUyZTkwN2IxZmE0Y2JiYTcyYTAyODggbGVnYWN5LXRydW5rCisxNjc4NyA4YTRhMTc5NDE0ZDRhYTQ4NDFiMzQwZWQwOWNiZmZhZGU1NWI2NmU1IGF2ZW5kb3IKKzE2Nzg5IDU4YWM4MzA0MDFiZDVjOTQ5ZmUwNTFiMGI3OTlmZTNjZDhjZGJiOWYgYXZlbmRvcgorMTY3OTAgNWFkYTlmYTU0ODAxNWJlYjY5YWY1MDcyOGRiOGYwMzY1MmExZjY2MSBsZWdhY3ktdHJ1bmsKKzE2NzkxIGViOWEzNjE2M2E5ZWFhOTk0MzFjOWVkMzQwZDg4NjNjNTg0YTQzMTggbGVnYWN5LXRydW5rCisxNjc5MiBiMmNkNjZlNWVhNGMyNGI3M2Q1M2NmNmI4ZDkzMmQ5MWQxMDU5ODk3IGxlZ2FjeS10cnVuaworMTY3OTMgNjNkZTdmMDBiNWJjY2JlOWJhOTdjYmM0MGFlYTRjOWJjOGQ1OWRhZSBsZWdhY3ktdHJ1bmsKKzE2Nzk0IDg4ZjRlNzJkNzI0NTM5ZGRkMzBjZjQ0MzlkY2YwNzAwYjc2OWExZmQgbGVnYWN5LXRydW5rCisxNjc5NSA3MmY2ODJlYjlhZGJlNDFiMmE5MmU1NGQzMTg1NGFiY2M3M2U3NDJlIGxlZ2FjeS10cnVuaworMTY3OTYgNDNmNGY4ZDE1OTcxZWEyNDJmYjk0ZjM1NDRjYjQ3ZTJhY2IzNTk1MSBsZWdhY3ktdHJ1bmsKKzE2Nzk3IDFiMTA3YzliYTcwMjEzNjc5YTcxY2NlYTAwNDhiNjQ4Y2Q2NzIyODAgbGVnYWN5LXRydW5rCisxNjc5OCAyYzQyNDM5NTk0YjdlODAzNDkxMzY2NGI2OGQ1NWY4NjdkMjFkYjgxIGxlZ2FjeS10cnVuaworMTY3OTkgNjEzNDdlY2I5YjAxMzdlZTlmZDU4NjY1NDAzYjM1NjdmMzYzNWQ1YSBsZWdhY3ktdHJ1bmsKKzE2ODAwIDQwMGE1ZTNhYzc2Yzk0YWFiZDk1MTU5MDI4MDI4ZTM1MGMyM2MyODQgbGVnYWN5LXRydW5rCisxNjgwMSBmM2JmY2VlNzQ1YTc2MzZjZGRlOGIzODZhMmVkZmI1Y2FlM2I1MTc2IGxlZ2FjeS10cnVuaworMTY4MDIgZTVhNzRjZmNjOTcxYzA1ZWI4MjFjNjgzYzQ4OTY0OTk4NTIwOWVkYSBsZWdhY3ktdHJ1bmsKKzE2ODAzIGYyNzkyZWFkMWYwNmVlODg5ZGYyN2Y3ODg2ZGRiNDY3MTQyZTM4ZmUgbGVnYWN5LXRydW5rCisxNjgwNCBhOTU1ZmQ1ZGUwMzUwNTQ4ZGVjN2Y0MGQ1YzZhM2I2NGEzNDk1OThkIGxlZ2FjeS10cnVuaworMTY4MDYgYTI4NGVkMjFhMGRkYWU3MWVjZDVhODBmNzc0NjA5YTI1NGRiYzdiOCBOb25lCisxNjgwNyA3ODM0YTExM2NlMjQ4MDEwZGFjMDRmODQ4ZmE3YzM4ZDU4NjNiZjkyIGxlZ2FjeS10cnVuaworMTY4MDggOTdmNTM4OGE2ZGNlMDU3YWYwODU2YmJjYzI0OGFkNGE2ZTdmNDcyMSBsZWdhY3ktdHJ1bmsKKzE2ODA5IDcxNmUxYzRlM2Y3ODk0NzI2ZjkyM2E5MDc0M2UyNTM3YTYxNDI4NTAgbGVnYWN5LXRydW5rCisxNjgxMCAyZTg3YmJiODdhZDQ0MDVjNmQyMTE4ZGU4MmUwNzI1NmMxMTgxYjg2IGxlZ2FjeS10cnVuaworMTY4MTEgNjVjMWFiZjQ1MWRjMDUzMGY3MmYzZDZhZTY1NTgzOGU4ZWJiN2M0ZSBsZWdhY3ktdHJ1bmsKKzE2ODEyIGQ4MDY5ZWZjZDc2ZTQ4MzQ3YzgwZmVjNTcwOWZkZjk5NzVmZGJjOGIgbGVnYWN5LXRydW5rCisxNjgxMyAxNDNmZmJmODdlNTFiYjFiMjBhMTVlOGExNWYxMmNmZDFlMzk5Nzc5IGxlZ2FjeS10cnVuaworMTY4MTQgMzBkYmIzMGZmMDE5MTliMGU1NWVkMmYwZTVlNTQ0NWNjOGU2MjRjNyBsZWdhY3ktdHJ1bmsKKzE2ODE1IDQ0M2YzYzc3ZDg4Y2VkNjg3N2EyZDlmMzA0MGRhYTAwYmJhYTgxNjcgbGVnYWN5LXRydW5rCisxNjgxNiA1NWU0ZjQyODllMTg4MzNiNTcwMmY1MTVmNzU3M2E3ZjIzMzk0ZTQ0IGxlZ2FjeS10cnVuaworMTY4MTcgNzNkOTc2YWZhOGQ0M2Y0OWU5Y2YxNzE0MmJiMTFlNjBjNTk2YzVlOCBsZWdhY3ktdHJ1bmsKKzE2ODE4IDU5MWFmZTJmYzgyMzBiNjA5NGVmNzMxYzBjZDYxMGI2NzkxYmEyYTEgbGVnYWN5LXRydW5rCisxNjgxOSBmMzY5Mzg4NzRjZTVhYmI5ODEwZDcyZjEzMTFlMDUxODY5ZjdlMTI2IGxlZ2FjeS10cnVuaworMTY4MjAgOWEwNTI2OTZjYTEyMzdiYjcyY2QxNjU0M2QxZTE2NGY3M2MxNTgxYSBsZWdhY3ktdHJ1bmsKKzE2ODIxIDljZGI2Zjk3OWZhNTUwYWZmYjU2YWQ1OWY4YTNlZDhhM2NiZWMwODcgbGVnYWN5LXRydW5rCisxNjgyMiBlZDM2OWYwYWEzMmIzOTYzYWI5YTQzY2Q4YTJlYzUzNGJmN2QxZGI5IGxlZ2FjeS10cnVuaworMTY4MjMgZWRhMDlmODI0YTlmYjkwOGM2YzUxYThlYjg1ODI3YTdkMTkxMTdkZCBsZWdhY3ktdHJ1bmsKKzE2ODI0IDZjOTFhZDljMGUwNmMzY2ViODU5NTJlODg0NzNiNGE5ODc4YTcxYWYgbGVnYWN5LXRydW5rCisxNjgyNSBmYWE5NzBmMTU0MGZmOTRlYjg3NzFlYTFkMGMyMWUwYmZlOWI4MGIwIGxlZ2FjeS10cnVuaworMTY4MjYgNDljN2E0ZGQ5ZjYxNWQ3NDNkMzM2ZDZjZWIzZGUzM2ZlYTZlZmRhMSBsZWdhY3ktdHJ1bmsKKzE2ODI3IDQ5YzgzMDUwMDQ4MDFlZGM0MWFhYjU5YjkzYWE4ODExYWU1Y2I4NDcgbGVnYWN5LXRydW5rCisxNjgyOCA4MmY3OTYxOGI0NDI4NTE4MDZjNWQwYTQ0NjE4MzI2NjExYmEzNzg4IGxlZ2FjeS10cnVuaworMTY4MjkgNmM3ZmE1MjM3MjZmYzU1NmZhYWYxMjk4YTcyMjY2MTA5MzVkMzE1YiBsZWdhY3ktdHJ1bmsKKzE2ODMwIDNkNjhkNWJjY2Q0MDZlODhkNWI1NDdhYmU5ODVkNWUyZDNlZjFmODkgbGVnYWN5LXRydW5rCisxNjgzMSA5Yjk0NjFhNjU2ZGRjNTU3YWMzOWE3MzllYzVhMjRiZGM4ZTczN2VhIGxlZ2FjeS10cnVuaworMTY4MzIgOWEyOTE4ODlhYjVmMTc4ODQ2N2NlMjY1MDFkOWQ3NzFmYzdhZWUwOSBsZWdhY3ktdHJ1bmsKKzE2ODMzIDEyOGY2NDExOTFjMzNjODk1MzI1YmJmODNhNzdlZmM5YzY1ZGE0OTEgbGVnYWN5LXRydW5rCisxNjgzNCAwZDgwNWUyMzlkOGY0NGNmZTIzYTZkODZjOWQ1Zjg4ZWEzNzZjMjlhIGxlZ2FjeS10cnVuaworMTY4MzUgNTk4NGMzZDc2MWY3ODQ0MmUyODA5MDM0Yzk1OWQ4NjhiODE5M2U0ZSBsZWdhY3ktdHJ1bmsKKzE2ODM2IGI0YjI2MTJlYTMzMzBmZDdjYmVjYTFmYzZhNDg2NWNjNWE4NTZmMTYgbGVnYWN5LXRydW5rCisxNjgzNyA1YjM0YjcwZWNmMjJmZGI0YTkzZjA5NTEyMGIyZjU5NDlmYTM1MWQyIGxlZ2FjeS10cnVuaworMTY4MzggZDQ0NjAzZjJiOTI4OWI0YTY4Mjc5ZTA1MGQzMTc5MmQwODE4NzNiZiBsZWdhY3ktdHJ1bmsKKzE2ODM5IDc0MDI5MGE1NjE5MGExMzNjZDNmZDI1MzNiMmViZjY3N2E0MGRhODIgbGVnYWN5LXRydW5rCisxNjg0MCAwNDYwY2NjZWZlNGUzYjZlNDhjNmRmM2Y1Yjk4MTlmOTM1YWFmMDM4IGxlZ2FjeS10cnVuaworMTY4NDEgYWUyMjhhNjQyOTNlMTJkY2JjMTI0NmRhYTJiNmIxYTg0NWM3OGVhYyBsZWdhY3ktdHJ1bmsKKzE2ODQyIDIxOWNlOTYyMjM1MjUxNGRiZjIyNDE3MzczOWVkMTMxOGJhNWYzMzUgbGVnYWN5LXRydW5rCisxNjg0MyA2N2E1NDQ4YzlhMGYyNWE3NDFjNmYwNWRmMDFmZTQwZTdkZWQ2YzMzIGxlZ2FjeS10cnVuaworMTY4NDQgNWIwZjNjNDAwNjBmYzE4MjAyZmE4MmY1MmE0ZDRjNjYyOTBjODI3YyBsZWdhY3ktdHJ1bmsKKzE2ODQ1IGY1ZDhlNzNkNzdiN2Y1YmJiNjU4YTZlNDJkYWQ3NjIwMDVlNTFhZmMgbGVnYWN5LXRydW5rCisxNjg0NiBhOTZkN2M0NWQ5NjFmMzM2MjkzYWFhZWNmMjU0NjgxOWQ4MmExMWViIGxlZ2FjeS10cnVuaworMTY4NDcgZDI2Y2M1YmRkMjQ4MjFlNmFhNmI1NGJiZTUwNjRhNDFjOGJkZGYyYSBsZWdhY3ktdHJ1bmsKKzE2ODQ4IDc3YTYxNWM5MjE3ZTE5OWU5M2NkNjY0NzA4ZWExZjg2YmNmNDdmZDUgbGVnYWN5LXRydW5rCisxNjg0OSAzZGRmYTJkNjdiZTQ2N2NjMmY0NWNhMGIwMWRiZTdiZjI0MWE1YmJjIGxlZ2FjeS10cnVuaworMTY4NTAgOTFjNjU5OTY4YTgwMThlMjYxZmZiM2Q4ZTI0YTY1YWZlYTI5ZGY4ZCBsZWdhY3ktdHJ1bmsKKzE2ODUxIDc5YmY2YjM4YjdkNWVlOTY4YjY0ODk3MThkOTQ3MzFmOWQyMDhkMWYgbGVnYWN5LXRydW5rCisxNjg1MiAzMjA0NWQ0MjNhNzg2OWYwMDI1NzJiMWIyZmJlYWIzNDkzN2M1OTdlIGxlZ2FjeS10cnVuaworMTY4NTMgOTFmODQ3YTc4M2QyYTAyN2Y1ZjVjODI1OGZhMGNhZmNjZmU3ZWQ4YSBsZWdhY3ktdHJ1bmsKKzE2ODU0IDE4Mzg1MTcyZmFjMGI3MDk5YmQyZDIyNjRkZjYxNGVkNDQ2NmYwODMgbGVnYWN5LXRydW5rCisxNjg1NSBhMjlhOGNmNWU2NmRkM2Y3ZjE2NzdkZWJiNTM4MjkwZjE2M2Q2NTc1IGxlZ2FjeS10cnVuaworMTY4NTYgODMwODA1MzlmN2I0Yjg0OTkzOGFjMThhYjliMjZlNmE0ZDNhYjhmNCBsZWdhY3ktdHJ1bmsKKzE2ODU3IDUzYWMzZTIwNjJlZmE5Njg1NWY5MDM2MmRkMTA0Y2RmMzc5NzFkOTggbGVnYWN5LXRydW5rCisxNjg1OCA5OGUzMjU1NDg2NzkwMjY0YzJmZDA2ZDM3N2NiNjYyNDY0ZjVmMjY0IGxlZ2FjeS10cnVuaworMTY4NTkgMDIzNDY4MTE3NTE0ZjQ4ZWRlNzJjMTQyMTI0NTViZDEwNDE0NTQ2ZSBsZWdhY3ktdHJ1bmsKKzE2ODYwIGE5MDVjNWFhMDY5MWNkYjllYWE2YzQ1ZWMxNzJmNmNkOWI4YTg4NmIgbGVnYWN5LXRydW5rCisxNjg2MSBjNDQ0NGY2OGViZjk2NzczZmJkYWJjOWEwODc1MGRlYTJiZWJkNzM2IGxlZ2FjeS10cnVuaworMTY4NjIgMWY5NGExMWQyYjgwYmY0ODc4MTRiYjY3YTY1MDhmZWNlZDFhZjM4MyBsZWdhY3ktdHJ1bmsKKzE2ODYzIDBhODdjNWI3NWZlM2Q1ZWY0ZDY0YTljZGIyM2Y1YTFiZWZkYzY0MTAgbGVnYWN5LXRydW5rCisxNjg2NCA4Y2Y1NjE0N2Q3YjVkYmY5ZmI0NzYyNDdkMWE5ODU3ZjE1NDk3Y2Y4IGxlZ2FjeS10cnVuaworMTY4NjUgYjkxMzEyNTYxOWM4YmI3NDBmNTEwMTZmZDEwOWUxZmFhNTcxNjljYiBsZWdhY3ktdHJ1bmsKKzE2ODY2IDZlMmRiYTQ1YzgzZTVkZTQxM2M4NmM0YzdiY2Q3NzI1NDQ5OTc4YTkgbGVnYWN5LXRydW5rCisxNjg2NyBmZWUwZjQwMmVjY2I0ZTA4NTg5Yjg3MTFjYjFjYmI3NzMwZjhhMjgxIGxlZ2FjeS10cnVuaworMTY4NjggMjc1YmM0ZjlkNTBkMTc1ODgzMGNlOTQ2MTZjZDE4NzY1ZmVlODQ3NSBsZWdhY3ktdHJ1bmsKKzE2ODY5IDgwYTQxOTI5NDJjZTk1ZjIzYjVlM2NiNDY0OWQyODQ4MjAxNTcyMjAgbGVnYWN5LXRydW5rCisxNjg3MCBlODMwMTYxMmU3ZDgwYjkzNzU3MjNlOWFhNzFmMmZjNzI2NjY2MzU4IGxlZ2FjeS10cnVuaworMTY4NzEgN2E2YzU4NjlmNDU2NjY0MmQ5NDljY2RhMGVjYzY2MGZkMTZiNWU0YyBsZWdhY3ktdHJ1bmsKKzE2ODcyIDYzNjVhODViZjRmYjFjZWYzOTAzZjgwMzM4NTZiNGZjMjJiNzJjMGIgbGVnYWN5LXRydW5rCisxNjg3MyBjYThkYzFiYWU2N2Q3ZGM5N2E3N2YxZTI5NGJhOTViMDkwMTMyNmVlIGxlZ2FjeS10cnVuaworMTY4NzQgZjY5YTM3MjQwOWZjMGYwMTJkMjRlM2RmODU0MGIyOWJkZGQ1NGEzNSBsZWdhY3ktdHJ1bmsKKzE2ODc1IGQwMzQ4YTI2YjA5MzllYmFiY2E2MzA1YTc4ZDRjYTZhZTBmMWUwNTAgbGVnYWN5LXRydW5rCisxNjg3NiBkYzJkZWRjYTkzZjcwZWNiMWZmNTcxYzU2MGVhMDc0YzZlN2EwOTJkIGxlZ2FjeS10cnVuaworMTY4NzcgNjUzMWZiMWM4NzlmZTkxODg3Y2U3MTBjMjI5MmJjODlhNmU4ZjAyZCBsZWdhY3ktdHJ1bmsKKzE2ODc4IGM3MjJiNGM0MjI5YTYxMTU0YzliZmMyZWZjMWNjZGRiZjYzZGJjZTAgbGVnYWN5LXRydW5rCisxNjg3OSAxN2I3ZmM0NDAxOTViZDZhMDczODg5NWM2NzJjMjk4ZTQ5NDQ5MGEzIGxlZ2FjeS10cnVuaworMTY4ODAgYzdmZTc1NjllNGUxNzdkNzU2ZmZkMjZmNDU0NWQ3MWMyYWY3MGI2ZiBsZWdhY3ktdHJ1bmsKKzE2ODgxIGM1MGZlZmZhZTgyMjA5NDY4ZTQ5MzM1NTUwOGZiMGMyZWNkM2RiYTkgbGVnYWN5LXRydW5rCisxNjg4MiAyNWVlYTg4MDQ3ZTllY2ZjY2FjMjc5YWUzMzYwOWZiZWFhYjgxZGMzIGxlZ2FjeS10cnVuaworMTY4ODMgZGMyZGI0NTYyZDA2MDJkN2U4NGNjNGQ5ZjJkYTE0NDkyZGYxZTI0MSBsZWdhY3ktdHJ1bmsKKzE2ODg0IDAzNDAxYWYzNmI1YzBhMTJlNzliNTI3NjQwM2UzOGRjOWU3Y2ExNGEgbGVnYWN5LXRydW5rCisxNjg4NSA5MjBmYzI4Njg1NDM5NmZkMmExMzVjYTVhYzYzNGNkMmEzMWIzZTcyIGxlZ2FjeS10cnVuaworMTY4ODYgMjY2ZDdlYWYwNjllOGU3MmIwMTBlNjUxNjllZWUxZDllYWJjY2FlNiBsZWdhY3ktdHJ1bmsKKzE2ODg3IDFmY2Y3YjQzOGNhYjliNDkyOGIzYjJjYTMwYWY5Y2M1NDA2OTBmNmIgbGVnYWN5LXRydW5rCisxNjg4OCAwMDg5YjM5ZmU0OWNiYzMyMzg4ZjBhYWExZjdlNjIwMmExMTViZTk3IGxlZ2FjeS10cnVuaworMTY4ODkgMzE0ZWM1OWU0ZTE0Y2UyZmU1OGZiZGM1ZWUzM2MxZmZlYjQ2ZGMzYSBsZWdhY3ktdHJ1bmsKKzE2ODkwIDcxM2RkNzZiZTM3YmFjNzgyYTc2MjFiN2Q1MzhkYWI4MzZiZmU1NGEgbGVnYWN5LXRydW5rCisxNjg5MSBjNjRhYzgzZDNmMTgyMjVkZTQ5YTQ5YTdlOTgyOGVhNDMxOTJhZGY1IGxlZ2FjeS10cnVuaworMTY4OTIgZjg4NDMxMDFjOTQzYjhhN2I1M2UxMjQyZjFlMWVkNmRiZTJlMzQ1ZSBsZWdhY3ktdHJ1bmsKKzE2ODkzIGI2Nzg0OTFmN2UxMTZmODUwM2QzOTAzMmRhMTk0YzI3YjNlYjY3NDQgbGVnYWN5LXRydW5rCisxNjg5NCBiNjUyYTlhYTk0ZjEzMzUxYTEzNmNjY2E1MTk2N2E3ODU2ZDFlYzU4IGxlZ2FjeS10cnVuaworMTY4OTUgNTFjMmVlZDYwMTU5MGNmODNiMjVmNTc0ZWFhMjI3YTExNjE4ZGY4YSBsZWdhY3ktdHJ1bmsKKzE2ODk2IDU3NzhmOTNjZjIyYjRjMjE4NTdlZjU1NTQyMDU4MTM5YWUwZGEzNDAgbGVnYWN5LXRydW5rCisxNjg5NyBkZTc0MjMwM2M0NTY5MTBkNmRlMWI2NWE1M2ExZmM2YjI1MjNhZjBhIGxlZ2FjeS10cnVuaworMTY4OTggZTY3OGU1ODA0OWI0YzU0MGQ2MTNmNTcwOWYxNzE5ZThhZmIzNWQ5YyBsZWdhY3ktdHJ1bmsKKzE2ODk5IGYxOWJlYTY4MWI2NjdjNDM4NGU4NDlmZGYwNWE5Nzk5ODZjM2IyMTUgbGVnYWN5LXRydW5rCisxNjkwMCAwMmFiZjc3MTdjOTZlMTc5ZDljM2Q0ZTUxMDJkNWE2YjA1ZTNmOTkwIGxlZ2FjeS10cnVuaworMTY5MDEgMGE2M2I0Nzg5ZGZjZTRiZTIwYzlkYjVhNmNkYjZiMDUzNjA1YWY2NiBsZWdhY3ktdHJ1bmsKKzE2OTAyIDA2MTJhMWNmYmJmNjg5NTJhNGVlMjE2YWE0NWFlMjA2NWEwNzRkYmYgbGVnYWN5LXRydW5rCisxNjkwMyA1YmY1NjM5MjQxOTQzODM2M2Y3MWJmZTIxYmQ1NTI1NWQxYzE3YjI4IGxlZ2FjeS10cnVuaworMTY5MDQgZDYzOGY1MzVmNDAzYzhlMThlZWU4YTg0YzM1Nzk0Y2IyMjA4MDBiZSBsZWdhY3ktdHJ1bmsKKzE2OTA1IDU3OWU1YzcwMzVlMmQwMDM5ZDJiODlhMjI0NTA3OWYyNjA3YWU0Y2UgbGVnYWN5LXRydW5rCisxNjkwNiA5NTM0NjE5ZGFhYTEyZjc1ZDY1ZTM2M2EwMDRlODk0M2YzMjdiMTdmIGxlZ2FjeS10cnVuaworMTY5MDcgZDNmNWI0NTNhZGU4NGUxZGVhNmFlMjA1NzI2ZmJkZjM4MDUzZTc2OSBsZWdhY3ktdHJ1bmsKKzE2OTA4IDQ2NWM3YzJlOGYyMTQ2ZDc2MWZjNDA2NzYwMGM2YmFkNDVkNGM4NjUgbGVnYWN5LXRydW5rCisxNjkwOSBlYzZhMGI0YTY0NzlhNTU4MTc1NTE4MmUzNmE3ZGIwNjQyMGFhMWJhIGxlZ2FjeS10cnVuaworMTY5MTAgNjA2NzE0ZmFlMWI1MDdjOTA5MWE2ODE2YmJiMTE1OGVlM2JmYWI4MCBsZWdhY3ktdHJ1bmsKKzE2OTExIDg4ZDExZjQ4YTM4NDViNDdmMTE4ZTkyOGY3MjhhNWVlNDYyZjQwNjMgbGVnYWN5LXRydW5rCisxNjkxMiAwM2RiN2IyMzkyYWU4OGE0MDJiODI0MGQ5MjhjZTA1OTE5ZDY5NjlkIGxlZ2FjeS10cnVuaworMTY5MTMgNzQ2MzhkMjBjNGZkMGY0MTY4ZjRlY2VjMzZmMTA1NDMyZWU2OTE0ZSBsZWdhY3ktdHJ1bmsKKzE2OTE0IDQ0ZTY2NmNjOGMwN2JkZWVjMmJhMTQ1YjdkOThjYjY2MWJkZjEzYTAgbGVnYWN5LXRydW5rCisxNjkxNSA0Njg0ODExMzVjNDkwYjFhMzE5NDFmNTU1MGFlZWM5OWQ5ZWFiYmEzIGxlZ2FjeS10cnVuaworMTY5MTYgMmRlMGNjMTc0YzNiZTkxYWU0NTUwMTliMGE5NWQ0MmVkZGQ2NTIyNyBsZWdhY3ktdHJ1bmsKKzE2OTE3IGUyZWQ2OWI4MmQ4ZDcxODE4NTI4ZTIxYzllNjBjMDRmOGZhZmI5NzUgbGVnYWN5LXRydW5rCisxNjkxOCAyOTYzNmYwMjBkNGM3YjRhNWIzYWYzNDRjNWRjZDQ2Y2EzYTkxYjRkIGxlZ2FjeS10cnVuaworMTY5MTkgZjY1N2RjOGZmMjVlOTNiODc3MzA1YmJjZmM0NWUzNjAxOTFiYjMyNiBsZWdhY3ktdHJ1bmsKKzE2OTIwIGRhNjliN2QxZjIwZjBhNmNiYTRhZjJmMDM2ZjJiN2Y0OWNiMjAyOWYgbGVnYWN5LXRydW5rCisxNjkyMSBkODA5YjliNzViOTkzOTMxOWY3NDg1ZTQ2YjI2MjJlYjk5NTgwZDAxIGxlZ2FjeS10cnVuaworMTY5MjIgNGRhYzllMzE0OWJlYWM5OTBmZjEwZTQ0NjhhMTBmOTJiOWU2NjUxZiBsZWdhY3ktdHJ1bmsKKzE2OTIzIGU5NDM0MmVlYTRmODhlNDJkNWZkMjNhOTNkMmMzYTMxMTY0ZGViOGEgbGVnYWN5LXRydW5rCisxNjkyNCAxN2QzMTI4NDc4YzNiOTNmMWI5ZDI1ODgzOGRiNTQ4ZDFlZDg5MDQ3IGxlZ2FjeS10cnVuaworMTY5MjUgMzE0OGVmZTU2MDZmYzE4MThjMzNjY2UzODEzNWYyZjYxMTI1ZTA4OCBsZWdhY3ktdHJ1bmsKKzE2OTI2IDBhYmZjYTAwMzVkY2M4MzJmYTE1YzBlMmQzMjUwY2MwODFjOGZhY2MgbGVnYWN5LXRydW5rCisxNjkyNyA4N2I4ZjBlYTUwZThkMTU2MDY1MzQ5NjNiN2JkZWMxOGJiNmQ5NjBhIGxlZ2FjeS10cnVuaworMTY5MjggM2VhMjNlM2MxYjA2ZTJhNjQ5ZTMyNjlkMmE5OWE5MjY0MWIzY2FiZSBsZWdhY3ktdHJ1bmsKKzE2OTI5IDRlYWNjMGM5MTIwOTBiYTBlNTZmMDYwZDYyYTFkMGUwMDUyZWI5YTAgbGVnYWN5LXRydW5rCisxNjkzMCAzYTNhZGZkZGMyOWQxZjA4MjNlNjE1YWM2NzU3YjllY2E3NjczMmYyIGxlZ2FjeS10cnVuaworMTY5MzEgMGY4MzQxZGNjM2NiYzZiNGFmNjg2ZmIzZDk4OTk2NmZmMGM0NWFkZCBsZWdhY3ktdHJ1bmsKKzE2OTMyIDkyOTgwOTIwZDVlZDEwZGU1YjVmZWM3MWY3MTExMDUxNmU3ZjFmODQgbGVnYWN5LXRydW5rCisxNjkzMyBhYzg4MDk5NTlkMDE2NDQxNDBlNzIxZGM1MTQ5MjdlMTE3ZWI5ZWEwIGxlZ2FjeS10cnVuaworMTY5MzQgNDRmNGE4NGE4MGE4MjVkOGJmMGMwODMwOTQzZDU2NDQ1MTUyMzUyZSBsZWdhY3ktdHJ1bmsKKzE2OTM1IGY2MzM4ZDc0ZGNhMTA3YWJhODZlNDdlNmNlNWExOWU1ODZhMWZiMTkgbGVnYWN5LXRydW5rCisxNjkzNiA4MGQ0NjY4ZjFlMTAzN2I1MmQ0ODZiNWU5OGRhZjQ1Mzg0OGVmMGZhIGxlZ2FjeS10cnVuaworMTY5MzcgYzE0Y2EyMGQxZmM4ZDk1YjUxMWIyMmYwZjNiMGVkYThlM2E5ZGM4MCBjbnJpLTE2LXN0YXJ0CisxNjkzOCA3M2M1NjRlNGEwZjM1MjdhZWJkZTY2YmNmYjRiMjczZTQzZmI1ZTQ1IGxlZ2FjeS10cnVuaworMTY5MzkgZThhZTcwYzNhYmI0M2ExNzljZDlkMmIxNzcxNGZlMjg3ZWM4OWY2NSBsZWdhY3ktdHJ1bmsKKzE2OTQwIDI2ODk2N2M5OTM0YTA1ODY0MTZjM2I0ODZlNzliZjUxYjk3MTk2MzUgY25yaS0xNi1zdGFydAorMTY5NDEgZGM1ZjY3ZThhMmFmMTkzODkwZTNiZDA1NWVhOGY4ZmQwMWU5MWJmMyBsZWdhY3ktdHJ1bmsKKzE2OTQyIGNlZjRkYTQxNDdjODNkNTg5ODkzOTJlNmZjNzhhMGY1Y2RlMTQ1NzcgbGVnYWN5LXRydW5rCisxNjk0MyBmZDNmOGFjZjEwM2QxZTdhM2Y4ZjAyZWVhZDk0OTQyNTAzNTU3ZmIwIGxlZ2FjeS10cnVuaworMTY5NDQgNDFlYjc1NWU0ZWQxNTNmNjU4Yjg2M2E5Y2U2YWJiMTNjMTUwYzBjNSBsZWdhY3ktdHJ1bmsKKzE2OTQ1IDI2NzY4ZTIxYWNmOTBlY2Y1MDJkNWQ1YzY1NDlhNGY2OTNiYzM2YTQgbGVnYWN5LXRydW5rCisxNjk0NiAwMzk1ODNjMDkwYzQzNDI0YjlhODQ0MzBjMWU3OTVkY2ZkMmU5ZGVhIGxlZ2FjeS10cnVuaworMTY5NDcgMmMyYWU4NmRmZTg3NzI1OWFiMDkxZTljOWMzYTYzNTQxNjAzYWE2ZiBsZWdhY3ktdHJ1bmsKKzE2OTQ4IDdhYWQ3ZDliNjE2ZTlkZGJkZGJiYTA0ZjJmYmVhOTk1YTIwNTllZmYgbGVnYWN5LXRydW5rCisxNjk0OSA0NDFkYTJjNWRlNDNhOTUzYWNiNjVjNjU5NzY3MjhmODZiNjg5ZWRjIGxlZ2FjeS10cnVuaworMTY5NTAgNDQyMTIzMzZkNzFlYTk3ZWZlN2FlMjM3NDMyZjk3NDMwMzhiNDcxMiBsZWdhY3ktdHJ1bmsKKzE2OTUxIDNlYjEzNWQ2MmUyYWVkMmMzMWZkYzMyN2NkM2MyYjI1MGZhODZmZjggbGVnYWN5LXRydW5rCisxNjk1MiA3NmU3MzM4OWMzNDA3MDEyMGU2NjJmMjdmZTU4MjRiZjFkZTUwZTcwIGxlZ2FjeS10cnVuaworMTY5NTMgOTk2Y2MwNjc1ZGI2Nzg2OWU5NmUwMjZiZjk4NGJkNmJiNWEzZDBkMyBsZWdhY3ktdHJ1bmsKKzE2OTU0IGFhZTM3ZGM5OWY1NzU1NzA4Y2QxYTAyOTZlNjJiNmUyM2M0ZWEwOTEgbGVnYWN5LXRydW5rCisxNjk1NSAwNzA4Y2FjNTlkZWYzYTY2ODQ2ODMzYmY1ZDg2ZjQyNjRlNDA0NDk0IGxlZ2FjeS10cnVuaworMTY5NTYgZjZlNWNjMmFmNmYxOTdhNDQzMDMxNWIwZmVkMzk1Zjg5MTY1YzhmMiBsZWdhY3ktdHJ1bmsKKzE2OTU3IDMxMTZiMGI5MTJlOTc1YzYxODY5ZGE1OWU0NjAwNGYyNzE2NTEwNzUgbGVnYWN5LXRydW5rCisxNjk1OCBmN2E4YzQwYjM4ODBjNDEzNzMyYTAxMWU0ZTA3M2E2YzZiM2RlMTAxIGxlZ2FjeS10cnVuaworMTY5NTkgNDI4NzI5ZmY4ODI0OWZkZWI1MTk3YjZhMDAxZGE0Y2ZjZDU3NzUyYSBsZWdhY3ktdHJ1bmsKKzE2OTYwIGY3MDQyNGViYjM5YjRhMWY0OGMyMjQwNTg4ZGI0ZmU4ZjI5MmFlODUgbGVnYWN5LXRydW5rCisxNjk2MSAyMmI1OTBmOGNmNTM4MjQxMGUwYzM1ZDQwYjAzZmIwZWE5MzkwM2NmIGxlZ2FjeS10cnVuaworMTY5NjIgMzFjZGE4N2U5ZmY0ZWE0NzMxOGE2OGM0M2Y5N2VkZDI3MzFiMGYyZiBsZWdhY3ktdHJ1bmsKKzE2OTYzIDczZTQ4ODQ3MTI2MzA4YjIwYzc4OTlmOTIxZGE5YWIwNTI4NmJlM2IgbGVnYWN5LXRydW5rCisxNjk2NCBmNWY4Nzg0YTRjMjdjOGE1MTBhZTNkZGVmYjIzZjc0NDc0ZmU1YTg5IGxlZ2FjeS10cnVuaworMTY5NjUgMjFlYzY5YTU2MjI4ODYzZDg5Zjg3YzZkNDk3YWQyMTY4OTZhOTVlYSBsZWdhY3ktdHJ1bmsKKzE2OTY2IGI4ZTVlOTMzODAxZTM2YWZiZDM1YzY4Yzg2ZmIwM2U2ODcwYTZmZDYgbGVnYWN5LXRydW5rCisxNjk2NyA4ZGNkZGNmMTMzMGE3N2Q1ODJlMGI4ODlmYTUxMjAyM2Y0ODcyOTJlIGxlZ2FjeS10cnVuaworMTY5NjggMzAyZGZkNTNiM2M4ZmMyMjU4YWQ4OGIyMTc1MjBhZDM1YTljNjE3OCBsZWdhY3ktdHJ1bmsKKzE2OTY5IDcyZDhhM2IyMDNiMTRmNmIxZGI2ZjQzNDI5OTAyYTQ1ZTU0ZTc3MzAgbGVnYWN5LXRydW5rCisxNjk3MCAzZGE1YmYzYzVmMTU3NDg2NGUxODQzYzI0MWFlODE4NmI3ZWRhZjFhIGxlZ2FjeS10cnVuaworMTY5NzEgNDA0NDdiNjcyMDY0YjQyMDQ5OGU5NmE3MDNhNTRiMjMwOWUwYjUxMiBsZWdhY3ktdHJ1bmsKKzE2OTcyIGVjM2UwZmUxN2IzZDc3YTk5YzM5ODdjNTU5ZjY0ZDQzMjIyZDdlYzAgbGVnYWN5LXRydW5rCisxNjk3MyBkYWQ1NGQ0NGQ5ZWNjMjczNDQ2NDcxYmUxMzhmYjk2NzM4ZmU5NDNhIGxlZ2FjeS10cnVuaworMTY5NzQgMDUxZGNkN2NkMTk5MWRlOWUxNmVkMDMwYWFlNmIxZjA0YmMwZTYxMSBsZWdhY3ktdHJ1bmsKKzE2OTc1IGU3YzhiNTk4ZmY3NWZhMjM5NTM2NmZkNWYyMWQ4MGM3NDEyNDg1ZjMgbGVnYWN5LXRydW5rCisxNjk3NiBjMTJlNzk2YmM0YjY3NWIwODQ5MDk1MDY2YjFlMGY2MDRiN2VkYTZkIGxlZ2FjeS10cnVuaworMTY5NzcgNmJmMDYxYTJmYzc4MDJmNzZhZWM2M2I2ZWZkM2Y4NmI2NzVmNzA2MSBsZWdhY3ktdHJ1bmsKKzE2OTc4IDU0NjhiNmUzYjk2YTdkMTdmNTliMDU1MWY0NzUxNGQwODE4ZGI2NTUgbGVnYWN5LXRydW5rCisxNjk3OSA1MmZkNDk2ZDM1MzIwOWM1M2Y3YTdhYzAyZmMwNjQ3NTMxNTdiOGQ4IGxlZ2FjeS10cnVuaworMTY5ODAgMjdkN2Q4OWM3NzRiMTAwMDNhOGU4MzMzMGJjNjNmNjQ0NGZmMDYyNCBsZWdhY3ktdHJ1bmsKKzE2OTgxIDFiOWZkMGNiZDkxNDk0N2NjNDIxYmE3ZTQ1YWEwOTNkN2JhOWFmMDAgbGVnYWN5LXRydW5rCisxNjk4MiBkYmE0YWVjOTcwZTZjZGI1MGQxNzY1MTJjMWI3ZjBiYzYwYWI1MjE2IGxlZ2FjeS10cnVuaworMTY5ODMgMDE4NDY1NjhkMTQ3ZDE2NzA3ZWQ5NTkyZDg2OWI5MDZjZjFhZGQwZiBsZWdhY3ktdHJ1bmsKKzE2OTg0IGU5YzJmODMwZjliYTUyYmY1OTY4Y2M3Y2QyNjhkMmNlNzE3NWEyZGUgbGVnYWN5LXRydW5rCisxNjk4NSA1MWEzM2EzYjJiYTkzNTQ1N2ZkNWZjODZjYTc5ZGVhMTRmMGM3YTcxIGxlZ2FjeS10cnVuaworMTY5ODYgOTFkZWFkZmRhZTM2YmFhZTZhMmFkN2NjZTJmOWY2NDE3YzIyMzdhMCBsZWdhY3ktdHJ1bmsKKzE2OTg3IGI4ZWFkZWVkOGVkMzUxODAzNjY0YTZiODc4ZjM5OTFmZjczYWYzOTAgbGVnYWN5LXRydW5rCisxNjk4OCAwMTkyNjViM2E4NTY1OWM0MjY5YTljYWQ3ZjUzODgwMGNkZmY2YWYzIGxlZ2FjeS10cnVuaworMTY5ODkgYzU2MzcyYWQ5MzQzNWYxZmNjNWNkYzUwZWI1OTkwZTExMzUwYTE1YiBsZWdhY3ktdHJ1bmsKKzE2OTkwIDJiNmE2Mzc1OWI5N2NmOTdmM2U3YTE4NDVkNTdmMWZmZDRiYzY4YWMgbGVnYWN5LXRydW5rCisxNjk5MSBmNjZlODYzYTJhNWIxZTQyN2Q2ZmMxNzA1MjNiZWMyNDJjZTJjNjk2IGxlZ2FjeS10cnVuaworMTY5OTIgMzViNzk4OWJhMjBjOGExNTNhNDdjMDE0OGJjNjI0ZmMxZDJlZmIwNyBsZWdhY3ktdHJ1bmsKKzE2OTkzIDhkMWEwNTlhZTk5ZDQ0ZTIyNmEzZTI1MzA4YjljYTRlZjg5MDBlN2YgbGVnYWN5LXRydW5rCisxNjk5NCBhY2M3Mjg1OGViNzJjODM2MDE2OWZkYjFjOGExNjlhMTMxNjliNzkyIGxlZ2FjeS10cnVuaworMTY5OTUgYWJiYzAyNzk1YzRkZWZlY2EyOWU4YzY4NThhMTVlZmZlMTgyMGNhMSBsZWdhY3ktdHJ1bmsKKzE2OTk2IGRmZjIyZDRhNDhkYWUzNmZiMGE4YTRkYjI3ODBmZjliZGIzZTZhYzYgbGVnYWN5LXRydW5rCisxNjk5NyA1NzcyYzQ5ODNkZDg3ZDM4MjAyOTA4N2RiYzZhYWM0NzdhMWUyY2FkIGxlZ2FjeS10cnVuaworMTY5OTggZWE3MDQwYWI3Mjg2ZjIyYWNiMTI2MDFiODU4YjIwODJmN2NjZWQzNCBsZWdhY3ktdHJ1bmsKKzE2OTk5IDg5ZjgxNTNmZDFiYTE2MWY4MjNmMTk2MWUzZjRhODQxYjg1NjIyYWUgbGVnYWN5LXRydW5rCisxNzAwMCBjODVhODBkYjY4NDViMDYyZjU3OTk0YmI1ZWFhMGNiYzkwZjg3MjQ2IGxlZ2FjeS10cnVuaworMTcwMDEgMjM4NWVhNTg3MmUxOTNiZTU0YmI3YTBkZmE4YjUzMjYyMWExM2Y2NyBsZWdhY3ktdHJ1bmsKKzE3MDAyIDI4NjNmYmIxMzVmMWY5Y2M2Yzk3ZmY0NTEwZTRkNGRlNmI2OWVlOGUgbGVnYWN5LXRydW5rCisxNzAwMyA5MzAxM2U0YmJlMDJlMjRiMDJjYTAzNzcxNWIzNjQ1ODA1MWI2NGRhIGxlZ2FjeS10cnVuaworMTcwMDQgZTkyMTIyOGFmNDM1NjdlZmM5MDEyMzU4N2UwMTZlOTE0NWYwZWI1ZiBsZWdhY3ktdHJ1bmsKKzE3MDA1IDU4MTQ2MGZjZjE0MjU2MDBlNTFhOWE0MTI3NzhkYTZiMDBjZjVhNTUgbGVnYWN5LXRydW5rCisxNzAwNiA2MjIzMzk3YmQ2YTI2NjE4NDMzNjIyMDlmYTY3ZTNiODE5ZmUzZWRjIGxlZ2FjeS10cnVuaworMTcwMDcgMjc3ZmRkOTY0N2ZlMDhiMWE3YWEyN2I4MGFmNWViMTYyM2I0NDRlMiBsZWdhY3ktdHJ1bmsKKzE3MDA4IDRlNjZhM2FiNzU3ZGEzMmY2NjgxZGVjZWJlZGYwZDAwNWMzODlmYmYgbGVnYWN5LXRydW5rCisxNzAwOSBiZDNkMTQxMWI2NmMxZDQwNWQ2MzYyZDU0OWI5ZjQ4MTc0ZmJiOGE1IGxlZ2FjeS10cnVuaworMTcwMTAgOWJmMTU5ZmY0OTEyOTIzZWQyZDQ1MjA5YTMxZWE1N2EyMTI3MDAyZiBsZWdhY3ktdHJ1bmsKKzE3MDExIDIxMTk3NjAzNGNmN2VlMzkwYzMwZjc5NzY2NzYxNmVkZDRhN2M4NTcgbGVnYWN5LXRydW5rCisxNzAxMiA5ZDhjZTZlZDRhMjlhYjQyMDAzNTgwMTliNzJlMWI2OTgyNjY1Yzc4IGxlZ2FjeS10cnVuaworMTcwMTMgOTk5NjcxZjY5ZGY0ZDA1ZmY3NGZmMTkxMzUwOWFmYjViMGIxZjU4NSBsZWdhY3ktdHJ1bmsKKzE3MDE0IDQxMjM0YWU5NWQyYTA3ZTVkYjAzNDExYWU0NTJjZjEwZWFkOTVmZjIgbGVnYWN5LXRydW5rCisxNzAxNSAyNzg3ZTkzODE3YzZhMGExOGRmYmU5YTBmMzNlNTY1ZmFlYzE0MjIxIGxlZ2FjeS10cnVuaworMTcwMTYgMzRlN2RlNGFkYTcwYWYzY2JiNjA3NmEzZGRmNTgyYjc0ZjkxNTBlNyBsZWdhY3ktdHJ1bmsKKzE3MDE3IDkwMGExNzc1NDAyMTNjYmZkYTU0ZjNiMDFjM2ZhNDNlZDhkNzc5NmEgbGVnYWN5LXRydW5rCisxNzAxOCBlYzZhMjFmNTVmYTFjZTdkNzQ1YTJkYzk2YWRkMDAxODQ4YTg4N2YzIGxlZ2FjeS10cnVuaworMTcwMTkgZDIyMzYyMGE4MTEyNjg5YzhiMWZjODQ2MmI4ZmUzZTdhOGIyNTcxMSBsZWdhY3ktdHJ1bmsKKzE3MDIwIDFiMGRhYmZmYzUxY2YwOTAwNDBlYWE5N2EzOGVlMTZkYjkyZTdlM2IgbGVnYWN5LXRydW5rCisxNzAyMSAxYzM0NDUzNzg4NzliYTI2YjQ4MWIwYzJkOTVkYWNhZjYwNjU2MGZlIGxlZ2FjeS10cnVuaworMTcwMjIgNjgxNmRiMjY1MGNhYmY5YjAxZGNlMDVmY2FhZTY4OTg4NmRjZWM3YyBsZWdhY3ktdHJ1bmsKKzE3MDIzIDNhZTE4NWI4ZmYwMzFiMTQ4ZTU2NGM4MjdhNDUzNmI0MjJlYjYwNzcgbGVnYWN5LXRydW5rCisxNzAyNCA0ZTkwN2E1MWE3YWZmYzFmM2NjMmRiOTg0YmFkZWY5ZGM0NWMxYTRmIGxlZ2FjeS10cnVuaworMTcwMjUgOGM3ZGNkMWVkMDhhNTdmNjNhNzgxZWI5NjhjYTExOTc1M2M5YmMzYyB1bml2ZXJzYWwtMzMKKzE3MDI2IGMxNmYyZGM5YzA4OWU4NmE1Y2NjMDAxYmE0YjdhMWY0OTYzNTg2NTggbGVnYWN5LXRydW5rCisxNzAyNyA5NGQ3MWYyZmM5YTgzY2RkYzcwMzVhODlmZTUyMWZhYjdiMzNhYjZlIGxlZ2FjeS10cnVuaworMTcwMjggMGMwZWU4ODZmYjAzYjc5MDU3ZjAwYmI1MTcyMzc0YTBlNzg2Yjk2ZiBsZWdhY3ktdHJ1bmsKKzE3MDMxIDE5MTI2ZTU1N2NlODQxZjc0NTM2MGMwNjZiY2FiNTljOGUzNjEyMDQgbGVnYWN5LXRydW5rCisxNzAzMiBhODU2YzkyYjFkN2JmMWEzZGVjMGUzMDFhZmNlM2FlNWM0NTE3NzcxIGxlZ2FjeS10cnVuaworMTcwMzMgNTg5MTEyYzQ4MjczNDEwMDhhYzhhOTEyY2UyYTlmY2RhNThmMmVkNSBsZWdhY3ktdHJ1bmsKKzE3MDM0IDYzZWEyYTJkZjA2ZjNkMThhZTVkNGIyZWM2ZWMyY2M1ZTIxODBkNzQgbGVnYWN5LXRydW5rCisxNzAzNSBiNWZiMTc1YWQ1MjgyNTQxYzZjMjNkNzA0MmVhOTg5N2RlNjUzN2VkIGxlZ2FjeS10cnVuaworMTcwMzYgMDc5N2ZkYjI1YTc3OWUxN2E4YmNkZWYzNDM4Y2ViMTYwZTlkMTZiZiBsZWdhY3ktdHJ1bmsKKzE3MDM3IGQzMzE3OWNkYzUxMTIxZDNiOTI5NTQ4ZGE4MWVlYzhhYjk3NTMzZjkgbGVnYWN5LXRydW5rCisxNzAzOCBhZTFlZGM2ZmY1NDM1ZmFkZjhjNjNmZDc3NDM3NmY3ZDlmZjVhMzRkIGxlZ2FjeS10cnVuaworMTcwMzkgZTc5ZDNjZjQ0NDNlZDlkN2ZkNzFmNWY5NGNiYWVjZDkxMTIzZThjMyBsZWdhY3ktdHJ1bmsKKzE3MDQwIDJjMzI4MzA5NDMxMTY3OTczZWI1OTNlY2MyYTZlYzNiODUzNGQxMmMgbGVnYWN5LXRydW5rCisxNzA0MSAzMDNjMzZlNDg3NjlmOTM5NTI3YzJkMjhhNDEwZTA2NzY1ODI4ZDQ4IGxlZ2FjeS10cnVuaworMTcwNDIgZTc1ZWI0ZDhlMzI5YjQ3YWIzOWEwY2E4YjU0M2JlZTU5MzBkNThjNSBsZWdhY3ktdHJ1bmsKKzE3MDQzIGQ5NzRjZjU0NWNhNmFkYjNjMjIzMzVlZTQ1MTg5ZGMxY2ExNjkyMTQgY25yaS0xNi1zdGFydAorMTcwNDQgOGM1MjY5MzM5N2QyNGExMWRkY2EyODhhOGNjMGM1ZTI0NjcwMzRjOCBsZWdhY3ktdHJ1bmsKKzE3MDQ1IGMzOTczM2JlMGRjODExYWE4YjExMDllZjljY2Q5YjVjNDE4ZjFiYzIgbGVnYWN5LXRydW5rCisxNzA0NiBhNGY1MzI4Y2NmMTkyMjdiZmRmMGU1ZTYzODhjNTUwODNhMDljZTRhIGxlZ2FjeS10cnVuaworMTcwNDcgY2JlOTU5MGQyMzQ0YzRiODI2Y2NjOWJhYWZiNjVjNjBlZTViYzkxOCBsZWdhY3ktdHJ1bmsKKzE3MDQ4IDExYTI2ZTk2M2RjOTA4ZjZkNDAwYWVkMGNjYjMwMDlkNDE1NTFmYWUgbGVnYWN5LXRydW5rCisxNzA0OSA5ZjlmMzI4MGRjNjhhMDE3OGI2NGM0MzA5YzgyOGVmNDBhMjlkZTg4IGxlZ2FjeS10cnVuaworMTcwNTAgMjAzNzdmMTViOTZhN2NiZjFmMThjMTBlNmJkNGY1MjQ3MmYwYzQwYiBsZWdhY3ktdHJ1bmsKKzE3MDUxIGFiMGViZjEyZDRkZTIyMmMwNzQ1MWFmOTdiZWVmOGQyM2ZhNzRmZWMgbGVnYWN5LXRydW5rCisxNzA1MiAzMTkyNWFiNDZiMjM1NDJhMWMzNDdlM2ZjMzE1YjI2YWQyNzU0MGU3IGxlZ2FjeS10cnVuaworMTcwNTMgMzk2YjRhYjNiOWMyYTljYmRjYjI1ZDdhZWZhNDcxMWM1MzBlNDhjMyBsZWdhY3ktdHJ1bmsKKzE3MDU0IDFmMWExNTZlZDVhZjhmN2E1MGNlMDVmYzg1Zjg1NDIzYTI0ZjJhYTQgbGVnYWN5LXRydW5rCisxNzA1NSBiOTdlNjIwMmYwYjE5NjhiZDk4OTAzMWYyYTExODU5MDIzYjZlMjk0IGxlZ2FjeS10cnVuaworMTcwNTYgM2U1ZDZlMjA5M2RmZTFjNWJkOTY1OWI2MWFkYjliNWY5ZDhjYzE4YSBsZWdhY3ktdHJ1bmsKKzE3MDU3IDYzZDg1ODk3YzY5ZmE0ZDU3YzE3MWUzYjg5YWQzNTBhN2IzNGU2N2UgbGVnYWN5LXRydW5rCisxNzA1OCA1OGQ3OTk1Y2U3OTVmNzlmZWIwMmNmZDllY2JmOGNmZTAxN2JlNzlhIGxlZ2FjeS10cnVuaworMTcwNTkgZDk2NDNlOWM5MGViMWE1Y2M5ZDAxZTc4ODIzZWExY2QzMTkwNzA0NCBsZWdhY3ktdHJ1bmsKKzE3MDYwIDc0ZjdmMjM3ZjczOWQ4ZDZjOTFlNDUzNzE2NDNjNzRmMzRjOGFiZTYgbGVnYWN5LXRydW5rCisxNzA2MSAwZTY2Yjc3NDA5NGJmZTU1MTQ1NGNlN2IyYzliMWQ1MjU2YmI0ZTY5IGxlZ2FjeS10cnVuaworMTcwNjIgMzQ4M2E3OGQxMzVmZDQ2MjQxYmM2ZjNhNjhlN2NkZjU4ZDA0NTRkMiBsZWdhY3ktdHJ1bmsKKzE3MDYzIDNmY2FjMzVjN2Y1ZTIxZmZlZTE3YjI1YjVjYzIyN2M1NzkzMzQ0YjEgbGVnYWN5LXRydW5rCisxNzA2NCAwNjcwYzRmOTAxNzEwZjJkMDljMjI5NDdmNDE2ZDViZjQ3NjM1YzBkIGxlZ2FjeS10cnVuaworMTcwNjUgYjJhODI5MmMzOWE5YTJkZjNmZTk5MTkyMDFmYWFhNzM1NTE2ZDIxNiBsZWdhY3ktdHJ1bmsKKzE3MDY2IDdiMzJjY2RmMWQ0YTIwMjRmY2YzOGZjYjNmZjE2ZDZhNzMzNjY3MGUgbGVnYWN5LXRydW5rCisxNzA2NyA1OTk0YmI2MTkxNjMzMmM1ZmRlOTE0YzUyZjY4MjI5MGFmYzI0MmE5IGxlZ2FjeS10cnVuaworMTcwNjggOWNkMmY3OTBjNTBjMzgyODY0ZWEzNmFjZDI3ZTZkN2IwZDA1OGY1YSBsZWdhY3ktdHJ1bmsKKzE3MDY5IGExNDJlYTIwZmU5NGYxODQ2ZjQ1Yzg5YTI5ODM0ZjY5ZjdlN2JkODMgbGVnYWN5LXRydW5rCisxNzA3MCA0Mzg4NzFlNzA1MzJiMTdiZTI3MGNiOGQ1ZDgyZjI2MTY3ZDExZDRmIGNucmktMTYtc3RhcnQKKzE3MDcxIGExYjJmYjE3YmRlN2VkN2FiN2NhZjNmMDZhZTEwOWFmNjg2MzM3YTQgbGVnYWN5LXRydW5rCisxNzA3MiA0ZTM2NDBhMDY4NTcyMDZiZjE2NmVmZjVhYmY2NzhmNzNkYjVkZWMyIGxlZ2FjeS10cnVuaworMTcwNzMgNGFmYjA4ODlhMTY1YzE5NzViNGExMDYxMzJiOGMyZTdlOTg5YTQ3NiBsZWdhY3ktdHJ1bmsKKzE3MDc0IDU4ZjNmOTM2Mjc5ZmY2ODJjNjA1YzgxYjUyM2QyNGE5NzdhZmU1YjUgbGVnYWN5LXRydW5rCisxNzA3NSBhOTlmYWIwYmEyZGY4OGM5YThjMTY2MDcwM2IyZTc2Y2M1YzRlN2EyIGxlZ2FjeS10cnVuaworMTcwNzYgNzQ1OTE1OWJhMjQ5ZjQ2ZmYxZDQzMDVmNWJiMThiY2UyZmE1MWM0NiBsZWdhY3ktdHJ1bmsKKzE3MDc3IDgzMGRlNjhkZTMzMDk1YWI3M2U4ZTE0OGQ5MGNkODE4MGVjODk3NWQgbGVnYWN5LXRydW5rCisxNzA3OCBjZGQ5NWQ2N2E3MTQyNTgyOWRlOGI4NTkwODUzYmU4NzcwZDkwNzNmIGxlZ2FjeS10cnVuaworMTcwNzkgMWZjMzNkZmNlYzQ0MmNjZmY4ZTNjZjk0MTgwMGUyZjE2Yzc1ZmQxNyBsZWdhY3ktdHJ1bmsKKzE3MDgwIDVmZmY0ZmZlYjM1ZDVjNWFmMWY3YzNmZDJiYjg0Y2JkYjA0ZDhmM2MgbGVnYWN5LXRydW5rCisxNzA4MSA2Mzk2NTI5YTQyMWM5ZWE0MzEzMjY1YTAyMTM1NTZiYjVlZWY3Yjg1IGxlZ2FjeS10cnVuaworMTcwODIgYWUyNzU2NDQ0NTdiNTU0YWNlNDZiZWFmN2I4YzhjZmFkYWIxN2ViOSBsZWdhY3ktdHJ1bmsKKzE3MDgzIGQ4N2NlMmQyZTQyNTczMTY1Njg0MGU1MTEwNzgwOGQxNGUxMzA4ZmUgbGVnYWN5LXRydW5rCisxNzA4NCBhZGYzYTI4NGEyY2YxZDY2ZTZhYjAxNDJhZTViYzE3YjNjYzFmZWE5IGxlZ2FjeS10cnVuaworMTcwODUgOWIyMGE2OWE1MDVlMGU2ZjI4ODdiODY2NzIyNjkzMGM5Y2UwOTNkYSBsZWdhY3ktdHJ1bmsKKzE3MDg2IDM2Mzg1MWNjY2YyYWVkMjJhNzVmNmFiNmM2NzliNTBlZTI2Mjk0MjcgbGVnYWN5LXRydW5rCisxNzA4NyA2NjBkYmNjMThiOWVjNmU5NmZjZTFhMDQ4ODMxNTRiM2Q0NGJkNDVlIGxlZ2FjeS10cnVuaworMTcwODggMWY3NmZjOThiNGM4ZGYwMDdiMDg4NjU2MGE2ZWIzOTcxNDVjMTViZCBsZWdhY3ktdHJ1bmsKKzE3MDg5IGQzZjkyZjNmYzBiMDkwMjZkOTNhZWE1ZmFmOTg5NWFmYzljMjlkM2IgbGVnYWN5LXRydW5rCisxNzA5MCA5ODYwODQyOWNhNmU0MjkyNDMwZDIyYTNjODRkYTRmMmNlNjIyNDRjIGxlZ2FjeS10cnVuaworMTcwOTEgY2Q4YjgxNWNiMTk2NTdhMGNmNTIxYWYwZWI1ZGQ0YjJjZDdmN2U3OSBsZWdhY3ktdHJ1bmsKKzE3MDkyIDkwY2E2YWIyNjkwOWVjMzQxZTA1MWRiMjRlZmYwM2JlZTcyNWFiNzggbGVnYWN5LXRydW5rCisxNzA5MyBkYzlkOWVjNDQ2NzkzOTVhMGY5YzZhZjViMTczOGFmYTRiZTdlMjA3IGxlZ2FjeS10cnVuaworMTcwOTQgMTViNmZjMjVmNjA1MDk2ZjkzNjZjNzM3MTI5NzhjMTgwYmZhZWIzNyBsZWdhY3ktdHJ1bmsKKzE3MDk1IDIxNTU3YmE0YWZiY2VkYmNmZGQ0NzZkMDlmOTE3ZGU3YWE1YWEwNTcgbGVnYWN5LXRydW5rCisxNzA5NiBiYmZjNDlhODQzODk2NDJlOTkwYThiYmFkOGM3Y2M5NjA0OTIyMDEwIGxlZ2FjeS10cnVuaworMTcwOTcgMThkYTJiYzUwNThjMGZkZjhiNzhmNjQxZDdjYzM2MTRlMzRmMTg5NyBsZWdhY3ktdHJ1bmsKKzE3MDk4IGJkOTUwYzUwMTY3ZmExZDgxYzE0NGY4MmU3MWVjOGFkY2FkM2YyZDMgbGVnYWN5LXRydW5rCisxNzA5OSBmM2E4ZjYwMzY1NjcwOTk1M2E0ZTVkNGEyZjQ0NTAxNzRlZjA1N2EwIGxlZ2FjeS10cnVuaworMTcxMDAgOTg0YWJkMjBlZWMyNjBkMjViNDJlNDczZDllNTU3ZjU4YzUwN2VhOSBsZWdhY3ktdHJ1bmsKKzE3MTAxIGZiOGZiNTNhMmVmZjAxM2M1NmZjMWE5ZWQxYmE3MGJiYWVmZWI0OWUgbGVnYWN5LXRydW5rCisxNzEwMiBiMWEwZmQzZGYxZmM4ZDYxMDdjY2Q5ZGZmYjE0ODZjMzIxYzNkZGEwIGxlZ2FjeS10cnVuaworMTcxMDMgNjhiNjFhYTFhYTRhYTA5NDA0YjljYjBmNjQ0Nzk4OGQ3NWRiZGE0ZSBsZWdhY3ktdHJ1bmsKKzE3MTA0IDhjZjY2MzEyNjcyM2FkYWZlNjRmM2RlNGU4MWUwOWNhODFkODgzNTQgbGVnYWN5LXRydW5rCisxNzEwNSA0ZDU2NTA5NWFlOTkzMzAxNzI3MmY5NzgwMTE3ZThjODk2ZTU2MzhhIGxlZ2FjeS10cnVuaworMTcxMDYgZGY4OTIzOGFjNzQ3NzE5MTg3NThkZWQ0OWE5NTczNDg3OTgxODA5ZSBsZWdhY3ktdHJ1bmsKKzE3MTA3IGUyNWFhNTZhNTIwN2RmOGE5MGE1NzFkNjNiYjEwYWVhMWFhZmNiNWIgbGVnYWN5LXRydW5rCisxNzEwOCBkMzU3YWQzNjdmMjYwZmJiOWNiMmIzNzBmMjQxNWY2Njc2OGU2ZGFiIGxlZ2FjeS10cnVuaworMTcxMDkgZWE5NWVlZWUwNGU3MjQ5MzQ4ZTVkYWY3ZTNjYmU4YzE4NjA1ZTBhMSBsZWdhY3ktdHJ1bmsKKzE3MTEwIDZhYjU4YzU1ZTBhM2MwNjg0MDY1MDcwYTdmZjRmZWI3NjY1NTQ0OGIgbGVnYWN5LXRydW5rCisxNzExMSA3N2UyNDQzYWJmOWJkZTMyNTE4OWZjY2NmNmViZjBmNWEwYTkzNWQ3IGxlZ2FjeS10cnVuaworMTcxMTIgMmUyZmJlZTUzZTY5ZmU2Y2NlNmYwNmJlNzdhYTZmZmU5MWE5ODMzNCBsZWdhY3ktdHJ1bmsKKzE3MTEzIDU5YzE5MDUyYWU0ZmIwMjFlODAzN2U0ZDAyOGE4MWYyZGQyMGU2NmIgbGVnYWN5LXRydW5rCisxNzExNCBiZmUzMDRmYzA2YWI5MTIyNDQ0ODU3NmQ5M2I1ZjM0MjQ5MTE2ZDEwIGxlZ2FjeS10cnVuaworMTcxMTUgMTFhODkzY2JjMWEwMTJhN2RmODg1OTRlZGI0MjQ3MjFhZTE5NWQxYSBsZWdhY3ktdHJ1bmsKKzE3MTE2IDI2ZGM2MmRlOWI2ZTE1YWE1ODljZTU5NzlmYzE1ZWE4YTY3ODE2OGIgbGVnYWN5LXRydW5rCisxNzExNyAwNTM2MjdlN2FjMTQxZTQ4ZTNjMjViMjYzYWY2OTg0NmQxZmI1OTUxIGxlZ2FjeS10cnVuaworMTcxMTggZTUyNTNiNjkyZTlmYmUzNjVhYjQzNjljZDc1OWIyNGI4Yjg2ZDYwOSBsZWdhY3ktdHJ1bmsKKzE3MTE5IDgxNzJhYzlkMjE5NjZjZmJhNTA5ZmJjZGUyMTVlZjI2ZWNhZDRiYTIgbGVnYWN5LXRydW5rCisxNzEyMCBlZGE0NDlmNTRlNDQ5ZWYyMmU3M2NhYWQ1M2NlMzgwYWZmZTMxMDRjIGxlZ2FjeS10cnVuaworMTcxMjEgMTIwNWIxODBiYTkwM2M2YWEwNGQ3ZWRmM2EzNGUyMDI2NTQ2NTNmMCBsZWdhY3ktdHJ1bmsKKzE3MTIyIGJlY2IxZWYwYTU3MzUzOTA3NmE2OWI3MWIyNzQ3YjNiNGZmMWYzYmIgbGVnYWN5LXRydW5rCisxNzEyMyA1MTY3ZWQ2ODM2ZmM0YTFhYTIwMWM2MWMwMWM0YTUyMzIzYTNiNDE4IGxlZ2FjeS10cnVuaworMTcxMjQgMDEzY2U3ZWU3MTY3YzM5ZmYzOWU0NWE3ODhmZjE3MjJlNWFhNTUxOSBsZWdhY3ktdHJ1bmsKKzE3MTI1IDMxNjQxZWE4OWE1MzRkNzA2YzFiMDgzNDg3MTU3YjUzMTllNDc4ODEgbGVnYWN5LXRydW5rCisxNzEyNiBmOGIyMGQ5MGM5YWYyNTQwODA2MGU2Y2ZlOTZlZjg2ODk1MTgyNDJkIGxlZ2FjeS10cnVuaworMTcxMjcgMDE5OGQyMDIwMzkwMzY4MzE0NTVhZmM5YWQ1NWRhNzdlZWI5NzQ1YSBsZWdhY3ktdHJ1bmsKKzE3MTI4IGUzNzc5ZWU5NDJkMGEwMDVlYjMyNmFlOWI2MTY2MDkwNGRiNzZlNzAgbGVnYWN5LXRydW5rCisxNzEyOSA2MmVjMGJmZDkzZjgwOGM2N2EzYjI4ZjZlNDA3Y2EwY2RiZmJlZWNmIGxlZ2FjeS10cnVuaworMTcxMzAgYjI0ZGI3NzBkZmZkZGE5YzA4ZGZjYWRmOWI0ZTU4YmIyMTllNTk0ZiBsZWdhY3ktdHJ1bmsKKzE3MTMxIGI4YjNmNzZmZmQ1MWQxMjQxYTY4MmY4MmVkNzJkMDFmODUyNzdjOTIgbGVnYWN5LXRydW5rCisxNzEzMiA3ZDQwYmQwN2IxMjk2NjM1YmE4MGVjNmFiOGZmZDdlN2EzZDJhM2Q4IGxlZ2FjeS10cnVuaworMTcxMzMgMmRiODA3ZjM0NWJjYzA3NzU0NjkxYWM4MTc3NzA2ZmNhNzhhODY5NSBsZWdhY3ktdHJ1bmsKKzE3MTM0IDk3NjUxZjI4YjAwNGM1YjZmYmViZGNjZjVjYjIxNTA2NDIyOTE1NTcgbGVnYWN5LXRydW5rCisxNzEzNSA0Yjk4ZGZkZWQ0OWY0MGIwOWE2MTQzMGZkZTMxOWMwY2ExNTQ5OTI1IGxlZ2FjeS10cnVuaworMTcxMzYgYzBmZTFhOGI4NzJjMDQwNzMyYTk1MzE1NmVmYjExYmFlYzE5ZTcwYiBsZWdhY3ktdHJ1bmsKKzE3MTM3IDRkNDkxYWViOTgwZmQxZDMzYTc2Y2U2NTExNDkzNGFmMzRjMjRiODAgbGVnYWN5LXRydW5rCisxNzEzOCA0ZGZiZDliMzQxMmJhYWUzNjM2M2M3ZjMxYThmOWI4Y2ExMDBlY2U4IGxlZ2FjeS10cnVuaworMTcxMzkgNTExMTIzZGQ4NDI0M2QzNDJkYzA2ZjZmN2FjZGExZWI4N2Y4ODY2YyBsZWdhY3ktdHJ1bmsKKzE3MTQwIDJkY2ZhZDNiMjExNWRlYjY1NzZhZmQ5NDA4Yzc2OGE3OTViOTI3MTkgbGVnYWN5LXRydW5rCisxNzE0MSAzM2M3ZGYwYzU0OWQ3MmZlM2RhZjNmNTVmYWJkZTY5ZTE0ODgzMmUxIGxlZ2FjeS10cnVuaworMTcxNDIgZGRhZWY0NTU5NWUyZDc2MmJlM2EwMmZkODQ3N2QyMTc0MGNlMGRkZCBsZWdhY3ktdHJ1bmsKKzE3MTQzIDFmYWI5MjgzNjc1OGY4MDQzYmNjYTY1M2I0MWM5ZmVlMzIzY2FkMmIgbGVnYWN5LXRydW5rCisxNzE0NCBhZGE0ZWM0Y2ZmZDUwMWRiY2RhODhjMDlmMDQyODlhNWQ0ZmIwYWNkIGxlZ2FjeS10cnVuaworMTcxNDUgNThmMTAwYWNjM2FjMGVmYTJhNThmYWRlM2YzYzAxNzVmNjcyYzljMyBsZWdhY3ktdHJ1bmsKKzE3MTQ2IDQ2MGZmM2NmMzE5NWJlMmRjMWVkNjQ4YzRhYWU4YjMyOGY2ZTQyOGMgbGVnYWN5LXRydW5rCisxNzE0NyA1ODg0MmNiYThkYmNkMjMxZjUzNGQyOGQ1NjZlYWY1OTQ4YmZmMDQxIGxlZ2FjeS10cnVuaworMTcxNDkgMjJiMmViZDc4MzcyZjI1NTNmZWU4ODA3MTkyZjJkOTA0OGI5ZTE5YiBsZWdhY3ktdHJ1bmsKKzE3MTUwIDE0YTJiOGQ0ZmNmZjA4YmJmM2QwZTc2ZjBkZmRiY2E4MzYwYzA0ZWUgbGVnYWN5LXRydW5rCisxNzE1MSA3M2YzOWVhNGVmYjdhNzRmNjkxMzk5NjJlMGUzMjA1NDcxNGRhY2NjIGxlZ2FjeS10cnVuaworMTcxNTIgOGYyZTYxMzRjZWEwMGE1MDZhOTVjZWY5NDM3YmQ4NzI0NTNmNzgxYSBsZWdhY3ktdHJ1bmsKKzE3MTUzIGI1N2UzNjBhNmQxNjFhOWFjNmRlZmMzNjI2NjZiNTQ2MmY1OTM0MWUgbGVnYWN5LXRydW5rCisxNzE1NCA2ZGVlMTk4NWM2ODFjMTBhYzUwMmMyZTZjOTA5NmRiMzU0YThlNDE5IGxlZ2FjeS10cnVuaworMTcxNTUgY2JlNDIzYjNiYTNhMDY1YmE2NWQ2MzhiMzk0MDY4ZmM2OWI2ZWQ0NyBsZWdhY3ktdHJ1bmsKKzE3MTU2IGViN2MyN2U4ZmUzN2VlN2Q0YWM2MDJjMDJjOWExN2UxYmY0NDAwZDUgbGVnYWN5LXRydW5rCisxNzE1NyBmNTViNjczZDlhY2Q3NDI1Y2FmOTVlMGRlMTE4OWNmMThlMTI3MjY1IGxlZ2FjeS10cnVuaworMTcxNTggYmVhOGYxNGU3ZDYxY2Y4MGU1MzIzYzFkYzk5ZDI3MzhjMzBlMTJmYSBsZWdhY3ktdHJ1bmsKKzE3MTU5IDk1MWViM2FmMzQ5NDgzYmQ1NzE2M2E0MDdiNTA4YWQyMzI3ODlhMGMgbGVnYWN5LXRydW5rCisxNzE2MCAwMTE1ZjQwM2ZhZGQ4ZmI1MGRkMzA0ZmMyYzUxYmY3MDBhMGFmNzljIGxlZ2FjeS10cnVuaworMTcxNjEgM2I4NGM1ZmY4OWRhODkzZmQ5ZmJiNDc2ZGZjNWQ4YTQxYjI5Y2ZiNSBsZWdhY3ktdHJ1bmsKKzE3MTYyIDA1N2M3Y2ViOTJmMDQ0ODZmMjk3YmJmNzY4NjNlNjRmMTUyZTdmODQgbGVnYWN5LXRydW5rCisxNzE2MyBmNDhlZDk0NDg4NGJmZmYyYTU1MTczNGY0OTdkMmRlMTk5MTk3MmQzIGxlZ2FjeS10cnVuaworMTcxNjQgODAxYTMwNGYyNDhmYmZmNzY4Y2Q0ZWMyZTA5YzBjMjIzNjUzZWY4NSBsZWdhY3ktdHJ1bmsKKzE3MTY1IGFiNjFjMzM1YTA0ZGNkMWJmNDk1NWI2ZGJjMGE1MTcyOGYzNDE1MDkgbGVnYWN5LXRydW5rCisxNzE2NiBkNDFjNDEzNzFkYzEwODkwNDBkYjc0N2UxNWQzMjg1OTRmNzk5ZDE0IGxlZ2FjeS10cnVuaworMTcxNjcgNjk0OWI1MDM2NGRkMDhjODIxOGNlN2I3MzRjNjk2MTA0ZDkyMzI3NyBsZWdhY3ktdHJ1bmsKKzE3MTY4IDdiNTNlYzI3MDRlMDBhM2E1ZTVkNzQ4ZDNlMGY4MmEyOGY3MDI1YWQgbGVnYWN5LXRydW5rCisxNzE2OSA0MzJkMzA4YzQ1ZThkOGI0MWZjMWFjNzI0NzAyODdhZWRmZGVlMmVlIGxlZ2FjeS10cnVuaworMTcxNzAgNTM5N2ZkZjg4ZWMyNWExYjU4MzdkZWM5ZmM4NTI4MzlhYmU0NDFlMCBsZWdhY3ktdHJ1bmsKKzE3MTcxIDJkZTFmYjUzMDJlZDg3ZWQ2OGYyYmQ5N2QwZjUzMWU4ZWJmOTM5ZDUgbGVnYWN5LXRydW5rCisxNzE3MiA2ZDBmNjRmN2RlZGQxODM1NGU1OGM5MmIzZmFkZTZhNzQ3NjllNWE5IGxlZ2FjeS10cnVuaworMTcxNzMgMjFiZjlmYTkyMjU1ODUzZWU0MmNhY2NjMjQ0ZTRlNGVjNWNhODI5OCBsZWdhY3ktdHJ1bmsKKzE3MTc0IDczNTJiYjE2MzJiYzAxYTQ5MTYxMjIwM2NmYTVjNjI2OTZjY2JjYWEgbGVnYWN5LXRydW5rCisxNzE3NSBlZjk3ODUyMDA4NWYxMGU1OTc4MjZiMjU5YWE5MDZiMWI3YjllNjQ2IGxlZ2FjeS10cnVuaworMTcxNzYgOTNkYWJmYzNhODNmYzhjNTJiYWQ4ODJiY2I1Mzc2NTNjYjhjYWU2MyBsZWdhY3ktdHJ1bmsKKzE3MTc3IGRlYjcyNzQzNWYzOTA2NGUzNWY2ODI1ZDc5NDhkMjBlYzg5MDJiZWEgbGVnYWN5LXRydW5rCisxNzE3OCAwZjY4MDllYmE1MGE4OGM3NzNkMWQ3MTE4YmMzNjk3YWZiNTdhNjJmIGxlZ2FjeS10cnVuaworMTcxNzkgNjMwYzhhYmZhOGQ3YzA4ZTU0NTY3ZTc5NDkxNTkyMDlmYzM4MzM4YyBsZWdhY3ktdHJ1bmsKKzE3MTgwIDNiMmRmYmMzNDY4OWRlZDBiMGU3MjYyNjgyMjY3ZmE2NzJhOTJjZjMgbGVnYWN5LXRydW5rCisxNzE4MSBhMzhlMTJlNGFmYjcwYzU5ZGJlNWU2NDc4NDQxYTRhZjc1NTAwMTUxIGxlZ2FjeS10cnVuaworMTcxODIgM2VkYTMwMTBiYzBhMGRiODVkMTk4MTgyOGM5NjZiZmEwNjhmMTM0OSBsZWdhY3ktdHJ1bmsKKzE3MTgzIGVhOWU2MjViMDFhMmEwNTZkMWU1MjM1OTU4ZTZmYmM1N2ZmMDlhNTkgY25yaS0xNi1zdGFydAorMTcxODQgMzU3NjNiZTc1ZGRiN2NhNmY3MjI4ZDU3ZjgyY2NhNDY0ZjMzY2VkNCBsZWdhY3ktdHJ1bmsKKzE3MTg1IGQxZDVlMmRjMjlkYjUwZDc0OGQ5MmRhMGM4ZTQ0ZGViZWY5ZmY1NTMgbGVnYWN5LXRydW5rCisxNzE4NiA1YzUxYzA5NmRlM2JmZTZjYzM2YmE3MThkYmYwZTM0ZjU0ZDBjODliIGxlZ2FjeS10cnVuaworMTcxODcgYTY2NWJkYzQ5MjJmNWRmYjBkYWRkYmE5MjZkYzdmYzIzZDhmYzlhYiBsZWdhY3ktdHJ1bmsKKzE3MTg4IDVkYTQwNmViZWY1NTIwNGY3ZGExYjdhOWJhZmE5ODBjYzAzNGRhMzcgbGVnYWN5LXRydW5rCisxNzE4OSA2NjViMTllNzc3NmI1M2IyMDFlNTQyOTZlZmIwYTBkOTRhNDI3NThlIGxlZ2FjeS10cnVuaworMTcxOTAgYzdlZDQxMmEwNzViMDE5ZGQ1MGQ3Y2ZhNjA2NWI4MzY1NmNiMzRlZiBsZWdhY3ktdHJ1bmsKKzE3MTkxIDM2ZDBiNWIwOTRlNDIxZmI3ZTc5NjZhMGI1NGE1MzYzNzYwODAxMWEgY25yaS0xNi1zdGFydAorMTcxOTIgN2ExZmVjYzA4ZDcwYThjYTAwZTIyMDRlNWIyMmM1NmViZWIzZDIyMiBsZWdhY3ktdHJ1bmsKKzE3MTkzIDY0OGExMmE3ODBkOTA4MzQ0YWJmN2RmOTRmZTE2Y2JlYjliOGI2MDIgbGVnYWN5LXRydW5rCisxNzE5NCAwMzRiZjEwODEzMDQ3NTAyMzhhNDY1NjY5NmM4YTdiOTVmYzBhNjFjIGxlZ2FjeS10cnVuaworMTcxOTUgY2FjOTM5MDc2YzdkYmVlNzIyMDFiZGUzMGM2MGEzMzA4NzI0NjQyNCBsZWdhY3ktdHJ1bmsKKzE3MTk2IGNkMDQ3YTg1OGFjZTE5YmJiNTFkNzYwYzhlOThiZWE4NDgwOWQxNmUgbGVnYWN5LXRydW5rCisxNzE5NyAwOWRjZmY1MTkzMmM3N2RkZTUyYmJmNjJhNmM1ZDE2ZjI5NDlhZjY4IGxlZ2FjeS10cnVuaworMTcxOTggNjRjMjVmZDI5ZDZmNjcxN2JkY2FmZjcxMGJjOGM2NzY4MDNiNzQ3YSBsZWdhY3ktdHJ1bmsKKzE3MTk5IGVkMTQ3YTUzNzAxYjgwMDY1MjQ3ODE0YTU1YWFjOTVkZDY5YjAwNzYgbGVnYWN5LXRydW5rCisxNzIwMCA4ZGYxNjZjYTA5YjI1YWU5MjViNzIzNjMxNWEzNDY5OWI5MDhmNTA0IGxlZ2FjeS10cnVuaworMTcyMDEgNmY2Zjk2NWM1ZTJkYjY0Yjk0N2Q0ZmNjNzM4MWU4M2FhMGNiMDc1NiBsZWdhY3ktdHJ1bmsKKzE3MjAyIGZkNDc5OTYwZTVlMGMyYzA3NzhlYzQyMDgxMjc2YjQxN2EwMmI1NDYgbGVnYWN5LXRydW5rCisxNzIwMyBkZDQ3NjZhYTJmZDJmNzdiNzZhODI4Nzc4Mjk4NWE0ODdhNmFhOTU5IGxlZ2FjeS10cnVuaworMTcyMDQgY2E3MzE2YTAwNDY0ZWE0OGYxOGYwZWE4NTE5ZGRhOTI1ZGNmZmRlZiBsZWdhY3ktdHJ1bmsKKzE3MjA1IGIwNjlkN2Q5Y2U4YTAwZGZhZjcxMjQwYjkxMmUzYWNkMjNlYmNmY2YgbGVnYWN5LXRydW5rCisxNzIwNiBjZDBjNGRkNDkwNGM5NjM0MTJiYzJjNjUzODU3M2VlODVmNDNjZThiIGNucmktMTYtc3RhcnQKKzE3MjA3IGU5OWIwZGIxNmRkN2QzYzkzY2E4ODU4NWUyNmMwZTY5MGNhODI4MjUgbGVnYWN5LXRydW5rCisxNzIwOCA3OTU4YTg4ZWRkYTE3NzM4OTUyNzU5MmE4YzBiYjg5ODZmZDZkNjM5IGxlZ2FjeS10cnVuaworMTcyMDkgMmQ2Y2Y2OGFhNjRhNTVkMmZhMmIyZjdjZDNkZDUzMmYwODRkNTAzMyBsZWdhY3ktdHJ1bmsKKzE3MjEwIDM4OGM3MjFjMjBjZmI5NTM0MTBlODAxZWVjMTZlNWQ1MzMxNmRhNTQgY25yaS0xNi1zdGFydAorMTcyMTEgY2ZkMDc0MzIxYWFkOWQxYTUyY2RlYWU3ZTAwZWRmZDk3ZjhlODUxMSBsZWdhY3ktdHJ1bmsKKzE3MjEyIDdlNDdiMzcwZWI2NzU1MTliODc1Mjg2NDcwMjY2MTYwNjRjZWJkODYgY25yaS0xNi1zdGFydAorMTcyMTMgNmZiNjFiODM0MzVkYTFiNmY4N2Q2YmIwYThmYzMyNTU2MDAwODEzOSBsZWdhY3ktdHJ1bmsKKzE3MjE0IGQzOTVjYWM3ODZiMjI0YjE4NjFlMzI4Y2RkYWYzMDUyZTBlYWNjZGEgY25yaS0xNi1zdGFydAorMTcyMTUgMDUwN2U1NjlkNzRhZTY1MTZlYWQ2NzNkZGJjZDI1NGY2ZGMzOTNhMiBjbnJpLTE2LXN0YXJ0CisxNzIxNiA4YTkzM2VjNDdlZjczMzljZGIxNWUxMmFjOTJhYjgxNjUxNjNiM2JkIGNucmktMTYtc3RhcnQKKzE3MjE3IDM5YWIyODU3MjMwN2Y4MTg4YWU1NTJjMmFjZDZkODhjZTlhOGZmZTUgbGVnYWN5LXRydW5rCisxNzIxOCA1NzlhMWU3MzFmYzg0MjRlZTg1MWUyZGEwZTVkMDZhNzk4YThhN2RmIGNucmktMTYtc3RhcnQKKzE3MjE5IDFmZGNhMGFmNzFkMzQzZTg4ZTZiZjUwZjc5NTQ0MjEzMTRjOWJiYmUgbGVnYWN5LXRydW5rCisxNzIyMCBhZmQ2ZmFlNDY3ZTU5MjU5NTFiZTk5OTkzOTVlY2E3YTNmZDRiYjBmIGxlZ2FjeS10cnVuaworMTcyMjEgZWYyNzE0YmIwNzMwYTc1MjU2ZTgzMmI3MDc3MmE0NzNiN2EzYWJjNyBsZWdhY3ktdHJ1bmsKKzE3MjIyIDlmMDNkMmZhZjE1NmFkZTlkYzI5NmIxMDVmMDQ5ZjI1ZDI3Njg4NTMgbGVnYWN5LXRydW5rCisxNzIyMyAxYzQzOGZkNWMwZTkzNDAwNmViNDJiOWM1NjNhYTUxMGU3YTIzMzAwIGNucmktMTYtc3RhcnQKKzE3MjI0IDQ0ZmY3ZTQxNjNhYTFlMGNiMjI1MDJiYzA2ODRiOGM4ZWFlMTk5NDggcjE2MS1icmFuY2gKKzE3MjI1IDU1OGVhOTBmNWIxY2EyOGMzZjYwNDJiYzQ2ZGUxMmI5YzU1ODE3Y2YgY25yaS0xNi1zdGFydAorMTcyMjYgOWIxZGFmM2RlZTE0ZDRlNDFjZDI0N2NjNzM3Njg5MTVhNTM4NTExMCBsZWdhY3ktdHJ1bmsKKzE3MjI3IGYxYmQzMDQ0N2UzMGI1OWMwOGYwMjFjNTlmMTdjNjhkODhjNjgzOWQgY25yaS0xNi1zdGFydAorMTcyMjggMWZkNjRiM2FmNzYwMjI4YmI1ZWI1MTM0YTYyNGFlMDgxZDYzYzQzOSBsZWdhY3ktdHJ1bmsKKzE3MjI5IDYzZDgyNDY3OWIyODUzM2JmYWExMGUzNGNmNDk3YTA1NmQwYzQxMWQgbGVnYWN5LXRydW5rCisxNzIzMCA3ZTRmNjAyZGM2ODU3NmIyZTg4NmIwZjUyMjE5MjZkMDllMTE3MzNkIGxlZ2FjeS10cnVuaworMTcyMzEgMmVlYjU4YjQzZWIxODgzYmRmNDQzNzJmZjRjODExYzdiODMxYmJmNiBsZWdhY3ktdHJ1bmsKKzE3MjMyIDA1ZjEyMTI4YzM4ZGJlNDI0YzI5N2I0ZmNhYTNkZjg3NjcwYmU3M2YgY25yaS0xNi1zdGFydAorMTcyMzMgNTMyYzljZTZjODdjMTdkOWJiNTFiMDdhYTBmY2M0Y2UzODA5MGJjYiBsZWdhY3ktdHJ1bmsKKzE3MjM0IGExMGFmYjNhZDI3NTBjMGUyNjI0MTM0YjFmNTliYzkwMDkwYjcyNDMgbGVnYWN5LXRydW5rCisxNzIzNSA1NDJkMTBiZDA0ZjQ3N2E0Yjg5OTg3ZmIxMjY3NTBmZTllNGQyMmEwIGNucmktMTYtc3RhcnQKKzE3MjM2IGNkNmY3MDVjNTRiOGM0NTNiOWNkMzY5YzhmMTY3MDFhYjE0MDRkMDkgY25yaS0xNi1zdGFydAorMTcyMzcgZjYyOWFmMWQ0YmRhYTgyY2I1ZmU2MDk5MmIzNTg4ZWU4OGI3ZWJkMyBjbnJpLTE2LXN0YXJ0CisxNzIzOCA4ZDQ3MTAxNDE5Yjg0Y2FiOTNkYzVhY2YyZDIwMTExMzJiMTcyZDFlIGxlZ2FjeS10cnVuaworMTcyMzkgY2QyYmUxNTNmMjI4ZjdmY2U3NjkwM2QxYzhjOWE2ZjZmMzZjMDExMiBsZWdhY3ktdHJ1bmsKKzE3MjQwIDM2N2NhNDkxOTBiYzUyNjVlNmQ3MWVmZmFiZGM3OTUwMjRkNmUxNzkgbGVnYWN5LXRydW5rCisxNzI0MSAzMjAxNTgwMjZhNGJjNGVlOTE2NTBlZDkwN2JkNDA4MzJlMTRmNzNiIGNucmktMTYtc3RhcnQKKzE3MjQyIDg4ODUzYzEwMzA4Nzk3Yzg1Y2FjNTg4NzU5Y2YwOTEwNzFlNWExMTQgbGVnYWN5LXRydW5rCisxNzI0MyA2YTVmYmU4YzVhYTZhODg5MzhmODEyMmRiMjIwNzg0Y2RhYTk3ZGMzIGxlZ2FjeS10cnVuaworMTcyNDQgM2UzNzY5OGNkNzM3ZjRmN2NhY2M0NDkzOWVhMDE3Mjg3NGY4N2I3MCBsZWdhY3ktdHJ1bmsKKzE3MjQ1IDhiNDA2ODU2YmMzMWMxMmFmNGI3ODBjNTU1NjcyNzcyNzU3YTg5YjIgbGVnYWN5LXRydW5rCisxNzI0NiAwNTdiYzE5NzAzNDUyNmE1ZGYxMGNlNWYxYTViYTQxMzNlMDlmM2Q0IGxlZ2FjeS10cnVuaworMTcyNDcgZDY4OWI4Y2U5ZDBhOTI4YmE2NTIzOTI2ODUyMWIwZGQzZTQwMWRmMSBjbnJpLTE2LXN0YXJ0CisxNzI0OCA4NzIxOTE1YTZhY2I4MzA3YTVlYzEyMGE4NzBlZTIyOGIzYWJjYmU1IGNucmktMTYtc3RhcnQKKzE3MjQ5IGIxNzU5OGZmMmNkZDc0MDFkOGY4NjY1MWY1ZmUwMDBmYmJhYTY4MGQgY25yaS0xNi1zdGFydAorMTcyNTAgZDhkMTgxMmRmY2UwNjQ2YjJmZGU1NTliZDI2MmE5MWM4MTkyNWE3OSBjbnJpLTE2LXN0YXJ0CisxNzI1MSBkODQ2Njg1NTAyNmY1ZTliZGFiYWI3YTJiYTNkNjhjZDAzMjZiYzA3IGNucmktMTYtc3RhcnQKKzE3MjUyIDY1NjNkNzFlN2Q5NWFkMGJmOGRhYTE2YzQ0NzE4ZjA3ZDEzNDgyODEgY25yaS0xNi1zdGFydAorMTcyNTIgNzg2YTU3YjdkYzZjY2Y1NmU2MzBlYjkxYTI2MjAxNmI5YTE0OTgyZiBjbnJpLTE2LXN0YXJ0CisxNzI1NCBiZWVmYTg1YTM5MjRjM2UyMmE1ODM3YmQzZWI2MTg2ZDc2ZWM4NDljIGxlZ2FjeS10cnVuaworMTcyNTUgZmMxMGIyMjdjMTdkZGMyZjkxODk1MmFiYzg3MzZlNjA0MmRiMDJhNSBsZWdhY3ktdHJ1bmsKKzE3MjU2IDhkMDM1YzJmYzIzNDA4NTgzNTA5YzgyNWZlNzUwN2Q4OTI5NzNiOWYgbGVnYWN5LXRydW5rCisxNzI1NyBkMWMzOTVjNDcxMDJhMTU2YjQyMmIyYmY1ZDMwOTk1NTkyNDc5YjAxIGxlZ2FjeS10cnVuaworMTcyNTggYTc2YWI3YzhmYzI5MjFiYmMxZWMwMjUyYWNjMDI5MDA4OTNlOTcwMCBsZWdhY3ktdHJ1bmsKKzE3MjU5IDQzMDYxMDdiMTM5NTUxOGQ5ZDMyOTdlMTgzM2FiZWEwYWVmZDM3MTcgbGVnYWN5LXRydW5rCisxNzI2MCBhNzA3YTVmMTcxMzkzMjRhODRkYzJlNmU0NTEwMzBlY2RmNmNiMDJlIGxlZ2FjeS10cnVuaworMTcyNjEgYjE5NDRjZTU0OTJiMmYyYmMzMmYwZmRhN2E5YTAxNDc3Mjg5MTcxYiBsZWdhY3ktdHJ1bmsKKzE3MjYyIDg2MjY2Zjc2M2Q0NDE5NzE3ZWQ2NDBmMjA3ZDYwMzgyMjg5M2UzZWYgbGVnYWN5LXRydW5rCisxNzI2MyA5MGYwOTQ2ZjY0ZTc4MWU3MzJkNmY1NjdjZWNiZDQ2ZTYzNWE5MDI5IGxlZ2FjeS10cnVuaworMTcyNjQgNjA3MjY0ZTdiZjUxNDM0MGI2MjE3OTExMzUwYmYwMDc2Y2FkZDhlNiBsZWdhY3ktdHJ1bmsKKzE3MjY1IDZiZTQ0NmZmYTJkOWFiYzkxM2E3MmQzY2M2YjkyOGUwZGRlZjk1NjAgbGVnYWN5LXRydW5rCisxNzI2NiBkNDJmYzNjNzE3M2U1YzczYzdiODlmYjJlZWE2MDkxZDRiNzYwZjZkIGxlZ2FjeS10cnVuaworMTcyNjcgMTBiZTk2ODJiMDAzZjIzYzIyNzZkMTI3MWQyNWI1YjMxYzEwNmU1ZCBsZWdhY3ktdHJ1bmsKKzE3MjY4IDBkY2FlODQ1MDZiYWE5Y2I3MzUyYzI3NzY0YjcxOWI3NjliYjEyOGQgbGVnYWN5LXRydW5rCisxNzI2OSBiYTIyYTVlZDQ2NDEwYmNkOTFhYTBmNTY2Y2NhMDdlZmM2YmY4YjRiIGxlZ2FjeS10cnVuaworMTcyNzAgZTM2YWZmNTJmYjRlMGZjMzYwOGMwZDU5MjIyNmNkZGNjODhmYmEzMiBsZWdhY3ktdHJ1bmsKKzE3MjcxIGFjZDQxMTNlMzAxYTNjN2JhM2QyYTdhMDJkYTQyMTI0NmEzYjMyYTAgbGVnYWN5LXRydW5rCisxNzI3MiAyNGJlMDQ5ZDIwMzc5MzQyYTVlMDY3N2MwOTRiM2I0YzgzNGE1NTM1IGNucmktMTYtc3RhcnQKKzE3MjczIGY5NDQ4ZjQ0ZTcwMWNhZDU2YzdjZjU4MTU5NmYxNTAzNTUwYzhmNTkgbGVnYWN5LXRydW5rCisxNzI3NCA2NDYwNDExZjQ3M2VmZmNmZDg2MDY1YzZkMDdjN2E5MDYzMGZiMDA4IGxlZ2FjeS10cnVuaworMTcyNzUgYzYxNmI3OTEwNzQ1OGRmZWI0ZmFkNWU4ZjE4MTJhN2MyNTBjMDEwMyBjbnJpLTE2LXN0YXJ0CisxNzI3NiBjMzg0ZmFhZTUwNTJjNWYzOWU2ODNiYWJhMjAxMWRjMjhkZTg2N2Q4IGNucmktMTYtc3RhcnQKKzE3Mjc3IGY4ZTY2ODQ0N2UyYTFkMjkwZDU3MWE0OTlhYmMxNmRhODZkNGM0MzEgbGVnYWN5LXRydW5rCisxNzI3OCA0NDhiZGY0NDE3OTIzZmFiN2FhY2Q4ZjU1NjI3ODg2MTgzMzRlZDgxIGxlZ2FjeS10cnVuaworMTcyNzkgYmI5MDgzMzEyZDgxNGM0ZWI0ZGFjZmYxN2UxYzNkZWM5MDEwNzlhOSBsZWdhY3ktdHJ1bmsKKzE3MjgwIGNjYjM3ZTJiMjQ2MDNiN2MyMjJkNThkMDY5ZTFmNzlhZTY4ZmFkYTggbGVnYWN5LXRydW5rCisxNzI4MSA5ZjFmMGE2YmMxOGU3NTdmNTI3NGNjNzJkZTM0YWZhYzQ0OTg2M2I4IGxlZ2FjeS10cnVuaworMTcyODIgODM3NmFkNjY0NWUzZGRjNTkyODdiNWVmMWRhYTk1NTRhODMzMzA5NSBsZWdhY3ktdHJ1bmsKKzE3MjgyIDM1YzRmYzE0MTRhNTk4ODg2MTRiOWJlNzg0YTI1ZjIzM2JhNjc5ODQgbGVnYWN5LXRydW5rCisxNzI4NCA3N2U4ZTU1MGFlMTNmNzVlMWM2NDM3MDIzMDQ3NTllOTQ5MTJjOTQ3IHVuaXZlcnNhbC0zMworMTcyODUgNGZlMDE0ODA4ODg1YTQ2ZjQ3YjgxM2EzNTI3Mzg3OTk0YWI1N2U0MSBsZWdhY3ktdHJ1bmsKKzE3Mjg2IDc4ODZiM2I2YzQwZjdiZDVlZWNhZTVjMzZjZmZmMThlMjY3OTdjZjQgbGVnYWN5LXRydW5rCisxNzI4NyAzNDM3OTEyN2VlM2I0ZDkxZmYwNWUzMGU1ODNmMjZhMTY0NjgzNTdmIGxlZ2FjeS10cnVuaworMTcyODggOWZhM2M1NzFkYWZmMjAyZTM3N2QyMzBiZGUzZTgyMDk2N2QxNDE0MiBsZWdhY3ktdHJ1bmsKKzE3Mjg5IGMwNTA5OTg5NDA1ZWMwZWViYTc2Y2I3ZjJmMTU5YTk4MWMyNzcwNzggbGVnYWN5LXRydW5rCisxNzI5MCBlMzQ4ZWQ5NDZkMWY0YzFiMGJjMThiODVmZmI5ZGJhZmE5OTc5NjYyIGxlZ2FjeS10cnVuaworMTcyOTEgYWMzOTE3OGZhODVmYzllNGMyNGUxZDE2OTE2MTlmMmY4NjNiZDk0ZSBsZWdhY3ktdHJ1bmsKKzE3MjkyIDNhOTMyY2M2NDMyMzNmZGNkOGRiYWE5MmVmNjBkYzI4ODM0NmM0MmEgbGVnYWN5LXRydW5rCisxNzI5MyAxOTQ0MzU4NWNjY2MyNTVlODdjNTdkYTdlYTE4ZDY0ZjEyOGQ4NWM3IGxlZ2FjeS10cnVuaworMTcyOTQgZjdmZDA5NWMzMWE2YWFjOTljOWUyODNhZTczNWViYjJmZGY3ZjhmNiBsZWdhY3ktdHJ1bmsKKzE3Mjk1IGM3MzgwNDFmOTc1ZGJlODNlYTY0YmMxZTFkZjQ1OGEyMWRkNGI1YjMgbGVnYWN5LXRydW5rCisxNzI5NiBmNGM5MmEyNDIxMWJkZGQwMzBjZTU0MzVkNzBiMTcxZjc3NjA4NzQ5IGxlZ2FjeS10cnVuaworMTcyOTcgZjA1MWFjODM0MGY3YjhhMWZjMDdmMjNiZGEyMjA5ZjkxNDQzMTUxMyBsZWdhY3ktdHJ1bmsKKzE3Mjk4IDkzYjFkYWIwOTc2NzZkOTI5NDcwMzJhYzNmYzA1Y2YyZTk3MWVkMDkgbGVnYWN5LXRydW5rCisxNzI5OSA1MjBjZTdlY2UyNTM5ODVhZjA4OWU2MTdjMTQzMGU3NjhlNTc2ZGUzIGxlZ2FjeS10cnVuaworMTczMDAgNWQxMmQ5NjYwYzJlYThkMzg3N2U0ODJkMjYxMjQxMmNkZmQ3NDkwNSBsZWdhY3ktdHJ1bmsKKzE3MzAxIGM5ZWU2Zjc0NjcwZGFmNTVkNWViMmE2YTI0N2Y3MWU0OGM2ZTcyN2MgbGVnYWN5LXRydW5rCisxNzMwMiAzZTM4NzUwN2E5OTE5YjA1NTEzMjhjZjJjYjczMmJlMTA3NzFiMWM0IGxlZ2FjeS10cnVuaworMTczMDMgZmM1YjQwNjE2MjYyMzczZWY3NDZiZGFkN2VmMzFhZGRiY2MxMzgwYyBsZWdhY3ktdHJ1bmsKKzE3MzA0IGU1Y2RjZTJhMmIxNjQ5ZjZkNjJlNzI5NDU5N2U3N2RmNWJjMmE5MmIgbGVnYWN5LXRydW5rCisxNzMwNSAwZDA2MTNiOTU3NThlN2JjZjlkMDkzYjUyZThiNGZkOTAyNzI0MzI2IGxlZ2FjeS10cnVuaworMTczMDYgMGQxMDI1YWVmZWJmZjI0ODhjOTM1ZDUzMzI5NzkzOTE4MWVhMDA3MiBsZWdhY3ktdHJ1bmsKKzE3MzA3IDAxNWEzNGJmYmNjYmEwOTkyYmRhNzQ1MTk3OGYxNGIzYjdkOTY5YzAgbGVnYWN5LXRydW5rCisxNzMwOCA2OTE5ZDhlMTRhMzAzNjkwMDYyODkzZWJmN2YzOGFlZjIxMTBmODkwIGxlZ2FjeS10cnVuaworMTczMDkgMjBhY2ViOGVkZmE1ZTZjYTRmYWRmOWM1Mjk4N2M0MjQ2YzBlZTUwZCBsZWdhY3ktdHJ1bmsKKzE3MzEwIDBiNjZkMDMwMGVlYmU5YzIwN2I5ZmM4Y2MxMDMxNTc2NWEyNjQwNjggbGVnYWN5LXRydW5rCisxNzMxMSA5NWVlYjA2MWZjNmQ0ZDQ1NTFlNzgzNzlhZTgyZDNlMDEwYzAxNGY1IGxlZ2FjeS10cnVuaworMTczMTIgZWRhMjZmMTIzMjI3NGJmNmJmMThiMDRhOTFmYzdhZTE4NWI2YzM2NCBsZWdhY3ktdHJ1bmsKKzE3MzEzIDVlZGQ0OWQzNDBlYTlhYTBhNGRiYjQ5YjUzMGVjNDA2YzliYzY1ZDggbGVnYWN5LXRydW5rCisxNzMxNCBkYjAyNjA5MmNiN2U0OWQ4ZTc2NWZmNWM1MzgyZTc4OGEwOGQyNjQ5IGxlZ2FjeS10cnVuaworMTczMTUgYWE0NDUzN2Q4MGI1M2ZlZGQ1NmMyZTQ3OTU2YzBkNGUxNWU4YjRhZSBsZWdhY3ktdHJ1bmsKKzE3MzE2IGVjMTY1ZDAzZDQ2Y2E4NjE3NmMwNDc4ZjVmYTQxMTVjZDY0YTNhYmQgbGVnYWN5LXRydW5rCisxNzMxNyAxN2NlYzk2Zjc1YmMxZDU2MDlkMjIzMTVmODdhMDE4ZGU0MTMyODNlIGxlZ2FjeS10cnVuaworMTczMTggZTEzZGY0ZTkwNzZmNzU4YmM3ZDkwNDNkOGU4NzYzMTI5YmQzOTg0NyBsZWdhY3ktdHJ1bmsKKzE3MzE5IDA3MjFkZjc4OTI3MGU3OTQzOGRhOGMyZWMwZjljMjBkZmMzMmYwOTUgbGVnYWN5LXRydW5rCisxNzMyMCAxNDJjYjRlNzMxMGNkZWE0YzVlMDgxZDE0M2U2NTM2ODI4Y2MxMjMwIGxlZ2FjeS10cnVuaworMTczMjEgMGVmNmVhNTg1OTBiNjBhNWEzNmM4NzA5OGRjNzdhZDhmYWMxZDUzYiBsZWdhY3ktdHJ1bmsKKzE3MzIyIGY5MGI4MjMyMDVmZjFlMWM2OGJiMmU3ZGVjMjk4ZjIwNjFiNjRhZGYgbGVnYWN5LXRydW5rCisxNzMyMyAzOWZmNmIzYzQzYWZjM2ViM2FiNGQ4NmY2NjcxYWE0NzllNmI4NmU3IGxlZ2FjeS10cnVuaworMTczMjQgYzNjNDk4NTllODBiMDhmZDExMGRlNGJhMjI1N2E2NTI2NDljOThhNSBsZWdhY3ktdHJ1bmsKKzE3MzI1IGY2Yjg2ZTJkYzU1YmJmZjI2YThjYTM0NzUxMmE1ZDRmYTMzMDc0ZWYgbGVnYWN5LXRydW5rCisxNzMyNiA5NTM3ZTc4OTNmM2MzZDQ1M2FjNTJmNjQ2ZWQ3OTBhYzY4NDNmNjU5IGxlZ2FjeS10cnVuaworMTczMjcgYjdiYjRhMzVjMTIxODk3Nzc5YThlMWQ5OTRhNzhiZjA1ZTgzOGYyNCBsZWdhY3ktdHJ1bmsKKzE3MzI4IGU0Y2E4YzIxMzc3YTNjYjczYjkzYzI1ZTM1ODA5ZDJmNWEzMzJlMTMgbGVnYWN5LXRydW5rCisxNzMyOSA3MTQ1Njc4MmQ4ZmQ1YTFmMzBiOTVmZDAxMDNlMmRmNjdiMTE1Mjg0IGxlZ2FjeS10cnVuaworMTczMzAgOTk5OGI3MDg3ZWU2MDQ5YWMwZmVjMWZmN2UwZmIyY2VjY2IzNjk4ZiBsZWdhY3ktdHJ1bmsKKzE3MzMxIGNjNjgzYTBhYzU2OGViODQ0NzA1MDgwY2IxZjNhM2JmZTI4MTZlNDMgbGVnYWN5LXRydW5rCisxNzMzMiA4OWUzYjZhNTRmZTkzYzZkYzUzODI4Y2M5OWI5ZTgyYzRmZGQwZDQ2IGxlZ2FjeS10cnVuaworMTczMzMgMGQxNWM4MDUzNzI2YjI3ZjRmMmIwMmZkMTk0YTEzMWY0YmI3ZWI3MyBsZWdhY3ktdHJ1bmsKKzE3MzM0IDUwMDQzNDllZGU0ZGY4ZWNhNDExZWVmYmM0OGQ4MmRmNTI1ZDQ2ZjAgbGVnYWN5LXRydW5rCisxNzMzNSA4YTYzYzYwNGVlNTk4ZmI2NDBmMWVlNTJmOTVlMjM1NzBhN2Q5ZDM0IGxlZ2FjeS10cnVuaworMTczMzYgYzMyZjU0OTBmNWUzYWMyZTgyOTI4MWI4ZTRhM2QzZDcxZDdmNzVkZSBsZWdhY3ktdHJ1bmsKKzE3MzM3IDM0ZjlhMDE3Y2U2MzJjY2RjOGMxNzI4ZDEyNTY4NDY3NDRlNGQ5MWEgbGVnYWN5LXRydW5rCisxNzMzOCBhYzAyNDY1ODZkNTI3ODJiNWNlZmViMTc5NjcxZWQxNzE0ODFhNjI4IGxlZ2FjeS10cnVuaworMTczMzkgNTEzNjlhNTdiMGFhYjQ4MGEwNzljNmU4YmQxM2UxM2E5Mjc1YTcxMiBsZWdhY3ktdHJ1bmsKKzE3MzQwIDhhNzE1ZDJkZmViOWY5YTYxZDdhYzI2MGFjNjNmNTMxYzQ1NWVlN2QgbGVnYWN5LXRydW5rCisxNzM0MSBhYmE3ZWI5ZDhkNjE0NTRmODlhNWZkODdlOTlkYjMzNjFiMzkxMGYwIGxlZ2FjeS10cnVuaworMTczNDIgNTJhNjAwYjM4ZjdlZTU5ODBjMGViZTYyMGY5ODljMWZmMzMyMWM1YiBsZWdhY3ktdHJ1bmsKKzE3MzQzIGY3OGYyODdiM2FkZGJjODg3YzE5NDRiNWI4NzNlNjk0MWZlMDE5MmYgbGVnYWN5LXRydW5rCisxNzM0NCAzMzRkOWFlYmFhZjEwYTAyZWQxM2EyOWI3MGQyMTE2NWE0MzlmYTA5IGxlZ2FjeS10cnVuaworMTczNDUgNzcyOGIwZWE5MzQ0MWM1MzAwYWNhZmVlMzA2OGM2OGMyMjA0ZWIwMSBsZWdhY3ktdHJ1bmsKKzE3MzQ2IDJiYTA4ZDk5MWM0MzMwYWY0ZDdlZTQ2ODEwYzI5MTc2ZTE5Mjg5MzkgbGVnYWN5LXRydW5rCisxNzM0NyBiMTk4ODZiZWEzNzg3ZmFmYzBkMjFiOGQ0NWFhMmE3MGFlYTRiNjhmIGxlZ2FjeS10cnVuaworMTczNDggZTZhOWQ0MTI2NTJkMjhhOWNlNTFjNTRjMjk5YjVjYzc0ZGJmMGI2NSBsZWdhY3ktdHJ1bmsKKzE3MzQ5IGFlZDM3ZjVhYTQ3NWU3NDczZjllOGQ2YWRjZDI5ZmE0YzA4YzFiZDggbGVnYWN5LXRydW5rCisxNzM1MCBkMzI3ZmM0N2Y4ZmRkZmFkOTdkZDkwZGRkMGMxYjhiM2E4NjFlZTgxIGxlZ2FjeS10cnVuaworMTczNTEgMzcxZTg4YWY2NDVmMWU4NTc0OTVmZGE1ZWUzYTAzMDU0NjNkMDVmZiBsZWdhY3ktdHJ1bmsKKzE3MzUyIDdmMjNlYzVjZDljYTg0NThjOTZhOGYxZWZiZDNkY2Q2ZjBkMzgwZmEgbGVnYWN5LXRydW5rCisxNzM1MyAyMWQ4NDc2NTNmNTRiOTU5OTAzMjQwMzEzOWJhMzRhMDkzMzdkNWFhIGxlZ2FjeS10cnVuaworMTczNTQgNThiYTkwZTRlOTg1ZjFiYWE5Y2VmYWFlZDFkYzQ3ZTlhOGQzMzI0ZiBsZWdhY3ktdHJ1bmsKKzE3MzU1IGVlZjI1NzMwZTY0ZGFhZTc4MjEyNDI5ZGY4ODM3YjM5M2VkODE0ODEgbGVnYWN5LXRydW5rCisxNzM1NiAxNWFjZDVjNTkxZmQ0YzA1MThkZjI0ZWI5YjMxMDllMGY4ZGVlZTE3IGxlZ2FjeS10cnVuaworMTczNTcgZGViM2U5Njg1YTFlZGRjMmUxYmE5ZWNjZTVjZjAxZjc4ZmQ0NDJjNyBsZWdhY3ktdHJ1bmsKKzE3MzU4IDM4MjNmYzcyMmI1MGM1MzA5ZDE3NGQ1NWM1YjliYTFkNDlmZDU0OTIgbGVnYWN5LXRydW5rCisxNzM1OSAyOGFjMTQ4ZDAxMjlhNzgwMmNjNzU4ZmZjMThkODZhM2ZhZWU0MjFmIGxlZ2FjeS10cnVuaworMTczNjAgYzg3MjdhY2ExNDA0Yzg5ZjM2NmJkZWYwZGYzNmFlNDhiZjMwZDlhNyBsZWdhY3ktdHJ1bmsKKzE3MzYxIGMyZjdhZDA3MGI5ZWZmMzAxM2U4OGZhZTllMzZlNmQ3NWIyMDJkMGUgbGVnYWN5LXRydW5rCisxNzM2MiBhMDM5MmY0Mzg5NjA1Zjg3MDUwN2IyOWQzMmRhMjA1YTZkMzg0Y2YwIGxlZ2FjeS10cnVuaworMTczNjMgNzVlZDQyNjM0MzY2MjllYWI0OTcwZGQyYjk5YjUyOWRhYjFhOThjNiBsZWdhY3ktdHJ1bmsKKzE3MzY0IDI5ZmFjYjc4ZDZmNDE2NzQwOGVjNmYyMjg3Nzk3NTA0ZDA2ZjdiOTggbGVnYWN5LXRydW5rCisxNzM2NSAwZDQ5ZGQwZjFiY2UzMTM1ZDI2MTliNzgyMjg0NzA1M2ViZThhZDIxIGxlZ2FjeS10cnVuaworMTczNjYgYjM0MDk1ZTQ4OGNmMWFjODgxOGIyMjEzY2JkYzI5YWJlODk0MmU5YiBsZWdhY3ktdHJ1bmsKKzE3MzY3IDNiNjE5Mzg1YTkwZTQ3Yzk2OGNmMDJjZmRjOWZiN2IzNzg0ZWQ4N2IgbGVnYWN5LXRydW5rCisxNzM2OCAxZGI0NTMyOTZjNzY3YmRhY2VmYWNlZmYwNjBhZjVkZTdhZmFjNTZjIGxlZ2FjeS10cnVuaworMTczNjkgYjgyODAyYmY3ZmZmMmRmY2M0YTlhZTcxOTBmMGE1MTBiYmQzNDRmNSBsZWdhY3ktdHJ1bmsKKzE3MzcxIGJmODQ0YWMyYzgxYWJmMzAyMzI1YzgyMTJiMjRiZWYwMzNiNjA5OWUgbGVnYWN5LXRydW5rCisxNzM3MiA1MTY3ZDIzYmQ2YjBiZjAxZGFkMjA4ZTAzYjY5NDJmYThmOTFiN2IwIGxlZ2FjeS10cnVuaworMTczNzMgNzQzNTMzMWI0OGVlNjU4NDA1MTE2NWU2MTA3NGYzMWM3OGIwYWM3MyBsZWdhY3ktdHJ1bmsKKzE3Mzc0IGFkZGFiYTk5MTA3N2Q0ODM4YmJkNjFmNjQ2ZTVhODA2YzAwYWEyZTggbGVnYWN5LXRydW5rCisxNzM3NSA5ZmVkNGVlYmM1ODY0ZmNkOGU0ZWVhNTA3MzllY2NjNTU2ZmEyN2VhIGxlZ2FjeS10cnVuaworMTczNzYgMjM1YmNkM2U1ZjE3NDQ2OTNmNmE4ZDgzN2MzZmU4NDVlNDVhZjRiNiBsZWdhY3ktdHJ1bmsKKzE3Mzc3IGNkM2U0ZDczZGY4ZTQ4NjNmNjMyYzUzZTBjMDA3OTAzOTZjNTA1ZjUgbGVnYWN5LXRydW5rCisxNzM3OCA5MTlkMzZmZGE4YzhkMTg1NzExODcxOGE3NjY1MTAzZWYzMzNmZWFhIGxlZ2FjeS10cnVuaworMTczNzkgZmM1NGUzOTcxNjlmZjZlYWRiY2IwOWY2NTRlODgzNTFkM2RmMWYyNSBsZWdhY3ktdHJ1bmsKKzE3MzgwIGZmNGFlNjkxYmU5YjUwZjljMmU2ZTEyZTNiNDQwMmM2ZGE3Mjg3MDQgbGVnYWN5LXRydW5rCisxNzM4MSA4NmQ0Nzg2NzM0Y2ExZGQ2NTAwZTRkZTM5NDBkZGRiMDEwZDA5ZDQ3IGxlZ2FjeS10cnVuaworMTczODIgNzM2NmJiOTVmMjEyOTkwYTgwYmE3Y2Y2NzNmZTQzOTQ2MDFjMmQ3ZCBsZWdhY3ktdHJ1bmsKKzE3MzgzIGJlMWFiMTg3MzU4YzgxZjA5NjJkYmM4MmNhYjgwMzUwOTgzNzA5NDMgbGVnYWN5LXRydW5rCisxNzM4NCA4ZDFhNDY4ZjhlNTkxNTRiNzAyYjllNGNjYzVmMzE3NGIzZWM5MTI0IGxlZ2FjeS10cnVuaworMTczODUgMzA2N2FlMjc0NThjMjQwNTkyZWNjMmVlNWE4YzYyODQ0NDMyYTQ5ZSBsZWdhY3ktdHJ1bmsKKzE3Mzg2IDcxNTA5NzlmOTY5NDE1NjU1MWVmOGY2NDQzZGRhYjJmODBmM2UzYzUgbGVnYWN5LXRydW5rCisxNzM4OCA2MzVmNjkxMjMzNDkzZTViNzkzNWE5NDI4NzRhMDBjYzgzMmVmNmMzIGxlZ2FjeS10cnVuaworMTczODkgYTVkNjU0NTlhN2I2OTIwMzBlNTQ1MTEzNGMwNjc3NGMwOGRhYjRiZiBsZWdhY3ktdHJ1bmsKKzE3MzkwIDY4Nzk1YzEzYWNlYTAwMTE2YTE1ZTExNmNmNDM0Y2I1NjdmMzFkZjggbGVnYWN5LXRydW5rCisxNzM5MSA0MTc1ZWU4MGEwODU4Yzk4NzZmMDczMDZmNzExYzhiOWRiZjg4MmYwIGxlZ2FjeS10cnVuaworMTczOTIgMDUyYjExM2M3NWQ0Y2JlNmVkOTYwMTQ4ODkxY2RmMGRkYmRjYjAxNCBsZWdhY3ktdHJ1bmsKKzE3MzkzIDM2OWFjMTg1MDU1ZDMxMWMwMWRhMzA4OTJjZGNhZGZhNzQ3ODNmODkgbGVnYWN5LXRydW5rCisxNzM5NCBkYzNiZWY3NzFkMDczMmM2OTFjZTVkYTk1YTk1MGUyNDI2ZGNkYTIwIGxlZ2FjeS10cnVuaworMTczOTUgMzVhZThkZmY4ZWQwOTliZWE5ZDlhNWQyYjA3MjMyMGI2YWEyY2E5NiBsZWdhY3ktdHJ1bmsKKzE3Mzk2IDU2MWMwYjFkNTE0YjM0Zjg5YWJjYjNjMmNlNDM2MWNkZmE2ZmQwOGUgbGVnYWN5LXRydW5rCisxNzM5NyBhNDVjYTFmN2YyNDE1YmI3MjQxZWQ5Nzg1NjhjYWRiOWU0NTQxYjM3IGxlZ2FjeS10cnVuaworMTczOTggYzE2Mzk2NTExYWEzNTZhYTFjOWRiN2Q4OGEzZjlmZGM0NTUzMGMyNiBsZWdhY3ktdHJ1bmsKKzE3Mzk5IGZmNzEyZGU4YmQ4MTM0NWQ3NDhjNDEyYWMyYTFmZGUxMmUzODc0OGMgbGVnYWN5LXRydW5rCisxNzQwMCAxMjI3NzVmZmEzNmM5M2ZlMDJkY2Q1NDA1NGQ1Y2ViN2E4ZjQxZmQ3IGxlZ2FjeS10cnVuaworMTc0MDEgZWZiYTMwNzBjZGRlYzhhZjliYWM4YTc2MWFiMTlkNmU4MjkwMWQxMyBsZWdhY3ktdHJ1bmsKKzE3NDAyIGFlZDEyMjZhN2ZjNGYzNGQxMGNjMzRhMDcwY2E2ZWRhMWI3ODk5YzIgbGVnYWN5LXRydW5rCisxNzQwMyBlOWMzMTM3NDUzMDIxN2E2NjhjMzgwNGQ0ZjdjOGQzMTAwZWY5Y2EwIGxlZ2FjeS10cnVuaworMTc0MDQgZDQ5MGMyYTE4NmRhZmNkOWFmMzhlM2RkNmZkMDMyNTc1Y2QzYzYyNyBsZWdhY3ktdHJ1bmsKKzE3NDA1IDdmYTQzMDJhNWEwODcwZjA0NjMxOTNhMjUwYWJmNDM5NGMzN2E4MDEgbGVnYWN5LXRydW5rCisxNzQwNiAyOGRmNGY0NTk2N2ZiNjRlYjkyYjhjY2VmNTE5ZWYwYTAxMzlkNWIwIGxlZ2FjeS10cnVuaworMTc0MDcgYThkMWMwMzBiMTlmZTY4MGM3MGI2NzY5NWU0MzYxMzk1NWIxMWNiMiBsZWdhY3ktdHJ1bmsKKzE3NDA4IGIzZjE1NjExNjI3MTIzZDkwOWY5OWY1MmM2M2U3N2JkYThhYjBlZjAgbGVnYWN5LXRydW5rCisxNzQwOSA4Nzc0NWU1NTQ3MjcxNGRjYzI4OGIzNWY3NDA4ZWJmM2M4NTJjODhiIGxlZ2FjeS10cnVuaworMTc0MTAgMjE5ZTAwMjIxYzg0MzVjZmI3ZmQ0OGYzNjM3OTcwN2Y5ZGNjOGVkZSBsZWdhY3ktdHJ1bmsKKzE3NDExIDRhYzA5ZTk3MDgyODJkZjU3MWMwNWVhMjQxYzAzMzkwMmM3N2ZkNDUgbGVnYWN5LXRydW5rCisxNzQxMiBhNzEzODVmOGI0ZGFiZmQ4MWYzM2QxZWRiYmU4ODYzOWI4OWU3NDdhIGxlZ2FjeS10cnVuaworMTc0MTMgNWYyYjllZjNmMmFlYzFjMzgyM2EzOTMzYTA0YzI5NjI3OTQ0ZTM0MiBsZWdhY3ktdHJ1bmsKKzE3NDE0IDI4Y2FhYTNlMjkyZmZlMWMzYjEwODg2ZTUxMDE1ZDliNjJjYTJiMzYgbGVnYWN5LXRydW5rCisxNzQxNSBlZWI4ZWU0ODgxMDZhN2NiOWI5ZWJmM2Y5YjAxYzgzMjYxMzQxMDJkIGxlZ2FjeS10cnVuaworMTc0MTYgMDdhMmRjMWI3MmFlYTJmZWQxNDllY2I5YzQ0MGEzMTFhNjhlNjZkNCBsZWdhY3ktdHJ1bmsKKzE3NDE3IGZlOGVmNDFjMzIyM2Y5OWY5YjE3ZGE2MGQ1MmNiNjEzNmQ2ZGViMzYgbGVnYWN5LXRydW5rCisxNzQxOCAwM2U2MTUwZmQ4ZDUyNGE4MmRlNTI3NWY2N2NmN2M0MzEwNWU0NWJmIGxlZ2FjeS10cnVuaworMTc0MTkgYmNmMjNiNTJiMDJmZDlhZWIwYWI2ODVkOWJhZDE0N2I2NTk4YjM3MiBsZWdhY3ktdHJ1bmsKKzE3NDIwIGFjODFlMGNhYzVmNmNkOGIwOWY2YTMxOGUyYzA0ZjE2NjFmYzQ1MGYgbGVnYWN5LXRydW5rCisxNzQyMSBiN2VkNTQzZjRjNTZkMmE2MjFmNmFjNTE0ZDc4MTM1ZjllZTVjNDk3IGxlZ2FjeS10cnVuaworMTc0MjIgNjI5NzljN2I5YTcxOWIzMTI0MzkyYmUxMjU4MDZkMmEyZGQ2MWI2NyBsZWdhY3ktdHJ1bmsKKzE3NDIzIGY0NDRjZmQ0ZmEwNzU0MTA5MjE5NjcxZTFkYTBjMzIwNzcxNWZmMmYgbGVnYWN5LXRydW5rCisxNzQyNCA1NWQ2NzMwMjRlNWY5NmI3YjQ2NjkxMzI1ZWNjNWMzNzRhMTk2YTI1IGxlZ2FjeS10cnVuaworMTc0MjUgYmNhMWQyMDEzNjI2YjkyNDU4MTdiYzk3ZTRkYTUxZTkzMTkyNDgwMSBsZWdhY3ktdHJ1bmsKKzE3NDI2IDYwMDUxNTc0N2M1MWEzNWEyNGYyNmI5Zjg0MjlkZGRkNGE4YWQxODggbGVnYWN5LXRydW5rCisxNzQyNyAyNWI3YWMwNTY4OWU1MDkyZGRlY2YwNjczMGY2OGJlMjI1ZWJhNmM4IGxlZ2FjeS10cnVuaworMTc0MjggODU3Mzc2ZDY5OWJiOWRmNDI5YTUwOGM3N2FkMGFmYWNlMjg2YmFhYSBsZWdhY3ktdHJ1bmsKKzE3NDI5IGI0YTM3YWIzMjlkYTI0ODFiOTVjM2MzMWE2ZDlhYWIwZGVmOGUxOWQgbGVnYWN5LXRydW5rCisxNzQzMCBiYTU0MjFmZjAyNTY3YjAyZTczODY1YjY0YmU4ZDRhYjk3ZGM0ODNhIGxlZ2FjeS10cnVuaworMTc0MzEgODM2OWZjZDc5YTY0YmNkZjQ4Zjk4YTZjNGU4NjFiOWYyNDU1NDIwMCBsZWdhY3ktdHJ1bmsKKzE3NDMyIDE4MzNkMmJiZjc2YTQ5Y2ExMGZlZmYzNzRjYTQ2ZTI1M2FlNjFmY2EgbGVnYWN5LXRydW5rCisxNzQzMyAzNDRkMjJiOWRiMzJhZDkyYjg4NTNjZjA2YjhjNTBiZjMxOTM4YjY4IGxlZ2FjeS10cnVuaworMTc0MzQgMjBiMjJmZGUxY2I3OWY4ZjNkM2JkNTgyNGRkZmM3NGZjM2EwNDUyMiBsZWdhY3ktdHJ1bmsKKzE3NDM1IDVmODdlZWM3YjZiOGY2NmQyYjZhNjBlYThlNTU4YjJkMDg2ZjEwY2UgbGVnYWN5LXRydW5rCisxNzQzNiA0ZDc0NDUxNWE3M2U0YjJiNDMyZTI2NWI1OTg1ZjVmNDdjM2YwYjgxIGxlZ2FjeS10cnVuaworMTc0MzcgNjQzNWNjNDdmY2M2ZmYyNDhiMTk2NzRlNzU2MGIzZmEwZjdlNDBlYiBsZWdhY3ktdHJ1bmsKKzE3NDM4IDIxM2RiYzg4MDE1OTk2N2ZjMDAzY2MxNzcwYzVkYmE0N2RmOTcwMzcgbGVnYWN5LXRydW5rCisxNzQzOSA4OWNlNDgwOTYzZjliYjQwZTRjZWRmYTA4YWIxMzIzNTUwZTVlMWUwIGxlZ2FjeS10cnVuaworMTc0NDAgZDg0ZDU3NTk0ODE1NTZhYTdhODIwZDM5ZmE5MGFhZDIyY2Y2NzMxNSBsZWdhY3ktdHJ1bmsKKzE3NDQxIGNkMWI5ZDhkMDQ1ZGQ5NGRlMmViMzkxYzMzMjMyMjc3YWIzNjU4NTIgbGVnYWN5LXRydW5rCisxNzQ0MiBlOGQ4NzU4YWRmZGI2MzhjNjI0ZDIzMzE5M2I5ZjlhODhjYTY0ZGNjIGxlZ2FjeS10cnVuaworMTc0NDMgZGNiYzA4NGQwNDZlYmE1ZDAyNGIyNDM1Yjk4MzM0NDU0MzdmNTA5MiBsZWdhY3ktdHJ1bmsKKzE3NDQ0IDlhYjQxOWE1ZTA1Mjg5MTk4OWE0NzI5ZTQ2N2UyNjMwNWY4NTZmNDcgbGVnYWN5LXRydW5rCisxNzQ0NSBjNDIxMDViZGI1ZmM0ZWIxYWU0NjBkZTZjZmFkMDNlNzIzZjc4YjZkIGxlZ2FjeS10cnVuaworMTc0NDYgMTZhOWMwNTdkYzExOWYyYzUzNTdlMjM4M2MyM2ZmMjM3NjE0NTU0ZSBsZWdhY3ktdHJ1bmsKKzE3NDQ3IDkwZjA3ODlkNTdiNzE3ZDMwZDI3NGRkOWY2ZjRlYjZhNDgzY2Q2MTAgbGVnYWN5LXRydW5rCisxNzQ0OCA2YzMxN2FkYzE4YTllMmJhZGYxYWNiNmI4ZDY5OWRlMzAzOTBlYjI2IGxlZ2FjeS10cnVuaworMTc0NDkgYTFlMmU4ZDU1ZWYwMDUwMDdhMGZmZDczYmU0MzRiZWU3MTMwN2U2YSBsZWdhY3ktdHJ1bmsKKzE3NDUwIDJhNDQxNmFkODM3YzQ1OTZhNDJmOTM1ZThmMWI1N2M2ZDcxN2IxMjAgbGVnYWN5LXRydW5rCisxNzQ1MSAyNTZkMWJiNjM4ODg5NDdmYzYxNjBkNjJmMDhkNDU0YjdjYTEzOGJjIGxlZ2FjeS10cnVuaworMTc0NTIgZjQ4NjE3NmY1NmY4NzA4NzBhYTQ3MWY5ZDU0N2IzYmZhMDViNWVhNSBsZWdhY3ktdHJ1bmsKKzE3NDUzIDY5Zjk2YjZjYWQyOTJiNDA2MGYxMmM0Mzg1ODg3YzQ5MDBmMWU0ZjkgbGVnYWN5LXRydW5rCisxNzQ1NCA0OWEwNDEzMzA0NjFjZTg0YTg0NWUwZWFhOGVmZDRlYTI4YjExY2FjIGxlZ2FjeS10cnVuaworMTc0NTUgMDE0Y2Y2ZDI5Mzk4NzJkYWFlMmE4MTBlOGEwMmIyZTE5MzhhNGZhMyBsZWdhY3ktdHJ1bmsKKzE3NDU2IDhlNWNhM2ZiY2RiNjQ2MzJiOTUxYzI0MjZiNGFmYzY5MDg0YmYwZTYgbGVnYWN5LXRydW5rCisxNzQ1NyAyNGZiYmYxM2RhYTViZDY3NmUzZjMxOGQ0ZWE4YzczM2VjMmYwNWFjIGxlZ2FjeS10cnVuaworMTc0NTggODBhNzgyMDg2YTU3ZjE5YjdjMmU2YWJjYWFlOGY4ZTE5MTE2MTQzMiBsZWdhY3ktdHJ1bmsKKzE3NDU5IGQyNjA5ZDQzMDRlZmM1Y2FjZmM3MzBkODVhOGNjYTllMDI0MDU3MmYgbGVnYWN5LXRydW5rCisxNzQ2MCA4YWQ5YmQ5Y2E2MGMwMDRhZWNiN2VlOGJhYjQ5NDBiZmFjZGZlZDkwIGxlZ2FjeS10cnVuaworMTc0NjEgZjJmYzY2YTYxNTNiNDA1NmU2MmQ5YWVlNWYxMGM4OTQyMTM2MmMwYSBsZWdhY3ktdHJ1bmsKKzE3NDYyIGFjNTgzZTZhM2M4YjUxYTVmMjBiNjM1ODZiMDY1NTlkNDJhMDNhZjIgbGVnYWN5LXRydW5rCisxNzQ2MyAxNDJhOTBlZWE4ZjRhMTg5MjE2OTE0N2IxM2M5MWRiMTEwM2Q1MTEyIGxlZ2FjeS10cnVuaworMTc0NjQgMGI2MzMzMjU4ZjU0N2QxZTkwMGNkZDI3ZDZkOWUyNzNkOWFmOTA3ZSBsZWdhY3ktdHJ1bmsKKzE3NDY1IDEzYzczYTIxOWNiMTFkOWVlMzc3ODNkNDcxNTUwMjUwZmFjMmNjZjQgbGVnYWN5LXRydW5rCisxNzQ2NiBkY2I5MjZlNzI5NmVjMGFkMmZjNGJhMDNlYzE0NTc2MDYzZWM5YTdlIGxlZ2FjeS10cnVuaworMTc0NjcgMWU2YzA0NGQ4ZTU5ODUxNTdkNmEwZGY2YmI1MDc3NTMxODU3MTRlNSBsZWdhY3ktdHJ1bmsKKzE3NDY4IDVhNTEyZWM4YTdhZGUyOGQ5ZTljMTViYzhlZDVlOTUyNTk5NTUxOTUgbGVnYWN5LXRydW5rCisxNzQ2OSAzM2UyZWYzMzllNTBkMTkxM2Q1ZjVjYjRjZDI2MzMyMjk4YWVkY2VjIGxlZ2FjeS10cnVuaworMTc0NzAgYzRkMDU5ODVjNmYzMDY5YzkxMmU2MWY1MDcxZmFmMzE2ZWYwYTNkZSBsZWdhY3ktdHJ1bmsKKzE3NDcxIDI4NDUwOGM2NTNjN2MzZTkzMWIxYmUyM2MxYzU1OWY1NjIzMmMwNjQgbGVnYWN5LXRydW5rCisxNzQ3MiA5ZDc5OGE3NjNkMjQxNzk4ZDcwZjA1MmQxNjUzN2NlNWQ4ODkxYTVkIGxlZ2FjeS10cnVuaworMTc0NzMgY2I3NjM4MzViMTc2MWRhN2U3MWVmNzMxZjc5ZWJiMzU0NTRjYTlhOCBsZWdhY3ktdHJ1bmsKKzE3NDc0IDRmMDY5ZjVkZmE3Yjk3ODBiMGE1MmE2NmRjZjY2YWExNDVlODQwMWYgbGVnYWN5LXRydW5rCisxNzQ3NSA0YWNjYzYzZDU2ZGM1NjY4NjQ4MTU3NDI4ZTAwZmQyMDIwZDUxODhmIGxlZ2FjeS10cnVuaworMTc0NzYgNDFhZmNkMDY5YTZjNTE4NGQwMzllOTBlZDQ0MjM0OGIyMTcxYTA0ZSBsZWdhY3ktdHJ1bmsKKzE3NDc3IDQ2Zjc2MmE2MWI5OTYzMDA1MjEzMTE1YWRlNTU1ZDIzMTI4YjgyMzkgbGVnYWN5LXRydW5rCisxNzQ3OCBhYWExZGMxNjFjZTNkMmYzMGIxYzM4MTU1NjQwNGRjOTYwN2U0ODM1IGxlZ2FjeS10cnVuaworMTc0NzkgOTYxODYwZDZiZWE5M2JhNTRmNDEyZTQ1MmU0MDYxZjMxNjJkMGZhMSBsZWdhY3ktdHJ1bmsKKzE3NDgwIGFmMzZiYTUwNjFmNmU4NDUzODhlZjMyNTllZDBlZTFhYTc4NzU2NjYgbGVnYWN5LXRydW5rCisxNzQ4MSBmZTQ3ZDIzOGI1MGRlMjUyYzBkODgyMDc0YTY3MzE0ZDNkNzQxYjY5IGxlZ2FjeS10cnVuaworMTc0ODIgNDA1OTUwMTdhOTkyZTU1MmUzYmNhZTNlOWEzYmEzYTczZGM5MGQ4ZSBsZWdhY3ktdHJ1bmsKKzE3NDgzIDcyMTFmYmUwZGI5ZDg3MDliODJhMjBmYzJjODk5ZmYwZmViZmI0YjMgbGVnYWN5LXRydW5rCisxNzQ4NCA5ZDk5YTJkZjY3NWY0OTZhYjRiMDc2YWRlOTI4MTczYjAwMWUyYjE2IGxlZ2FjeS10cnVuaworMTc0ODUgNzg5YzViNmMwZjA5YTA5NzljNTkyNGZlMTEwZWIwN2E2ZWI1ODJlYSBsZWdhY3ktdHJ1bmsKKzE3NDg2IDNjZDIxNzRlZTEwZDExNjIyMzQ1MzRjMjVkNDZjNDgwM2E2N2I3OTIgbGVnYWN5LXRydW5rCisxNzQ4NyA0ZDZhNWU1ZmU5OGRjODkxMDY4ZDRlODJiNDIxMGY5Nzk4OGM1ZGU0IGxlZ2FjeS10cnVuaworMTc0ODggN2QwZTM0NTBlZTQxMDc0NmE0NmE2ODI3ZDUwMTI4N2ZmOWNlMzVhNiBsZWdhY3ktdHJ1bmsKKzE3NDg5IDhiZDUzNDllN2FhOGUwNGM2MTVjMzczNDQzYjAyNjdlN2E2MDk4MTIgbGVnYWN5LXRydW5rCisxNzQ5MCBkYjllYTViNWYzMzdlN2Y1ZjJhZTI2YzNhNmEzMjdkMDU4YWQzNTU0IGxlZ2FjeS10cnVuaworMTc0OTEgMGMzMDNhMjJkOWE0OTcxMTkxMTRkNjM2ZTE0Njc5MTMxMWM5NWJkMyBsZWdhY3ktdHJ1bmsKKzE3NDkyIDM3Mzk3YmQxZjhhOGRiNGIxODZmMTAxNTUyNTQ4OTA1OTQ5OGYwOTMgbGVnYWN5LXRydW5rCisxNzQ5MyAyZTE3MGMyZjYxZTEzOGIwZTdiNWFlOGVmMmZmNTcwNTExMjI1Y2ViIGxlZ2FjeS10cnVuaworMTc0OTQgMTMzNjI0YWJjNTI1YWVjZGViZjNlYjVlMGEyNzhkZDVjZDdiMmU5NSBsZWdhY3ktdHJ1bmsKKzE3NDk1IDNmZWZlYWZhM2Y0YTBmNWEyYTZlNmIzNDU1OTA4ZDAzMzk3MDcyOTcgbGVnYWN5LXRydW5rCisxNzQ5NiA4YTdkNDdkMDc5ODEyMmI0ZTkzYTc4OGEwZDRlOWE0MWJmZjljYWNiIGxlZ2FjeS10cnVuaworMTc0OTcgMDhlMWMzYzQxZTYwN2Y0NjFmZWEzYTAwMTliN2QyOWNkMjE5MmI5NiBsZWdhY3ktdHJ1bmsKKzE3NDk4IGI5NTRjMzNmMGI0YjBjZDc5MzRmMGE5MjJhN2Y3MmJhNzUxMTcyMDUgbGVnYWN5LXRydW5rCisxNzQ5OSA2NjM3YzA5MWZmNDRmMzYyYjg5M2QxYWZiN2Y3ZThkYzNhZWY0NzA2IGxlZ2FjeS10cnVuaworMTc1MDAgMmQzMGMzNWZlZWJlNTAzMWFlODc1NTFlMmU4MWEwMzk5MGUxYzMxYiBsZWdhY3ktdHJ1bmsKKzE3NTAxIDFiODA2NTUzOTA5ZjVkYmJmMjI0NjgyNmI4MTljYTllNjYwZjk0OTUgbGVnYWN5LXRydW5rCisxNzUwMiAzYjcwZTYwMjk5YTMxODc3NTA2MTI1YmI2OWJmNTNhZGYxOTgyODFkIGxlZ2FjeS10cnVuaworMTc1MDMgMTVjYmUzOTlhOWMzYjU4NWMyMDQzNDhkMjgxNGMzODkwZTU5Y2FlMSBsZWdhY3ktdHJ1bmsKKzE3NTA0IDFlYzZjNjMzNDdlYTM4MzNlMjc3YTU2Y2EyYWJlYTRiNTRlZmFmYTggbGVnYWN5LXRydW5rCisxNzUwNSBlZGRhMzUzYmRlMTJhMWRiNmJlODIwNzZmODA1YjBiMjU0M2M5Yzg5IGxlZ2FjeS10cnVuaworMTc1MDYgN2ZjNDU2OWQ5NjI1MDcwNTJjZDZiMzM3ZTg0MGY0NDRjZDBiY2ZmNyBsZWdhY3ktdHJ1bmsKKzE3NTA3IGY0ZjM4NDFhMjZlZGQxNGJiYzQ2OTMyNjRlMTk3ZjA1YTVlM2M4MTIgbGVnYWN5LXRydW5rCisxNzUwOCAzZDZmZTY0YmNkMjE4YTBjNGNlN2IyZWVhMWI2YjNhYTYzYTVkOGYzIGxlZ2FjeS10cnVuaworMTc1MDkgMGJkNzQ2YmM3NjI3ZjdmNDA3YWYwMTQ3YmIwM2YyZGJlNTZmNzlkMiBsZWdhY3ktdHJ1bmsKKzE3NTEwIDAyMjg5MTRlMGM1ZjBmNzEwYjZkYjI0NDBlM2Y0NjM3M2Y2MGZhOGYgbGVnYWN5LXRydW5rCisxNzUxMSA2MDAyOWUzZTA1ZWVhOGUxZmRhMDAxMjk3NmE5NjI1OThiZTQ1ZjE2IGxlZ2FjeS10cnVuaworMTc1MTIgOTQ2NzA5ZTgyYmUwMmQ3MDYxYTA5NmM2ZDdlZDY2ODMwMzhjM2M0MSBsZWdhY3ktdHJ1bmsKKzE3NTEzIDY4NmQzY2NhZWI0YTdlMWEwMzEyNDE0NmRkZWRjMTUyYzJhYTc2OGYgbGVnYWN5LXRydW5rCisxNzUxNCA2OTlmYmJiYTI5YTczMGM4YTA4MzgxOWNmZjZkYTZiY2VmMTAwNTcxIGxlZ2FjeS10cnVuaworMTc1MTUgOTgzNTAyYjJjZDQzYTQzZjhhYjdkYWFlYzg3MzhmYzcwNDdiOWI5NiBsZWdhY3ktdHJ1bmsKKzE3NTE2IGU3ZjczZDM1ZWNkOGMyZjgyZjFiNjQ5MmRiY2NkZGRhYWYyMDBjMDUgbGVnYWN5LXRydW5rCisxNzUxNyAyZDYxODhjMmVhNTZmMWJhZjllYTlmN2E5YzE1ZDIyYzFkZjZkZDkyIGxlZ2FjeS10cnVuaworMTc1MTggZDFlZDMwODI1ODFhNjI4MTVmNGYxZjY5OTNjYzJkNjIwNTNkOWI4MCBsZWdhY3ktdHJ1bmsKKzE3NTE5IGY4Mzg0MDk4NjI2ODQ0MWYxYmE5Y2JhMTExNDFhNWFiZjcyNjYzZjQgbGVnYWN5LXRydW5rCisxNzUyMCA2ZmNmNWE3MDUzM2NmMGNlY2ViOTIwMjJmNmU3ODZkNjM4NTU2YTFhIGxlZ2FjeS10cnVuaworMTc1MjEgMTU3MDg1NDkxMWNlMDZlN2ZmZmU0ZTBlYWI1MzBjOGYzY2Q2YTg1MCBsZWdhY3ktdHJ1bmsKKzE3NTIyIDA4MDA1NGIxMjM1NjVhNzRiM2E1ZjVjZWVkOWJjOTllMjRmZDdlOGEgbGVnYWN5LXRydW5rCisxNzUyMyA0MmM0MWRhZGYyOTM2ZmU0MGM2MjlkMjFhODc0MDk4MjdmNDNjNjlkIGxlZ2FjeS10cnVuaworMTc1MjQgYTViNDAyOTVkYzE5YmE3ZTI4NzhiM2ZhOGQ4ZTgyZTJjNjllMWU1YyBsZWdhY3ktdHJ1bmsKKzE3NTI1IDhkYjg2MDZkODRlYWEwYTU2YzIxM2RlNTVmNjkxZWJlZWVmZjhlZWQgbGVnYWN5LXRydW5rCisxNzUyNiAwYzZiOWRlMTkxMDBmNDkzNzIyMTcwYmJjZDc4N2RiMDYzZTIzMzg4IGxlZ2FjeS10cnVuaworMTc1MjcgMWIyMGFkNmViNTAxOTQwZDczMWM4NjU4ZGYyMzM2NGE1YjE2Njk0YiBsZWdhY3ktdHJ1bmsKKzE3NTI4IGRmOGQ1NzVkOTY3ZDg4ZDA1ODExYmQ2ZWQ0NjBiYmZhNjcxZDgxZDkgbGVnYWN5LXRydW5rCisxNzUyOSA3NTZjOGM2NTM1ZmUyZGRlYzJmMGVkY2Y4YTI0ZDQ5YTA4MzljZmNhIGxlZ2FjeS10cnVuaworMTc1MzAgMjIwMTFkOTc2OTE3Mzg0ZjY4OThmMTA5YjliYzgwNjE1NzExNmMxZCBsZWdhY3ktdHJ1bmsKKzE3NTMxIDNjNTg3MTZmYWZkZThiM2Y3M2Y2YThhZTdkNmY4MThmNjE0MDNjMTkgbGVnYWN5LXRydW5rCisxNzUzMiBhNzgxM2FkNzNhNGVkZWVkMDMyY2I1ZjlhMzMwMWRjMTkxZGUzMTNhIGxlZ2FjeS10cnVuaworMTc1MzMgOTRjYTg3YTNlNWVlZTI4YzU4MGZhN2RlYzk2NGM1YzAwYjVjMGU2ZiBsZWdhY3ktdHJ1bmsKKzE3NTM0IDA4ODIzMDk5YWU2MjZlMTEyMmI0Yjk0NjJlM2U5OGY2MmQxYmIxZjEgbGVnYWN5LXRydW5rCisxNzUzNSBlMmQ2MmQ3NDdmN2E4MmMxODNjZTdmMDRjNTBmOWE5ZDhmYzgzMjg3IGxlZ2FjeS10cnVuaworMTc1MzYgZTQzMmExODVmNGRiODMzMWIzMWVkYTZjMGVmODYzYjMxZTc3NWYzMyBsZWdhY3ktdHJ1bmsKKzE3NTM3IDI5NTEyNjQzMzg1NmNkMzMzYTIzYTAyYzFiYjhmOGExYjU3ZTY2MzIgbGVnYWN5LXRydW5rCisxNzUzOCBlZGYxZTE1YzY3MWEwODRlNTM4ZTExYmFkYWU4NjFmZTA5YWJjOGY3IGxlZ2FjeS10cnVuaworMTc1MzkgYzUyZmYwMmJiZDcwNGZlNDdjOWNmNTJiNjQ1NGZmOWQ0MzU1NmE5YiBsZWdhY3ktdHJ1bmsKKzE3NTQwIGZhZjNlNzM0MjU0ZGQ2ZjYxMWFmY2JiODA0YzZmOGU1YTFlYWFiMjQgbGVnYWN5LXRydW5rCisxNzU0MSBlMzg0ZjUwMTQ5Yzk0MDQ0NTA4YWU5MzU3ZjBmNzA5ZjJlYWRlMTA5IGxlZ2FjeS10cnVuaworMTc1NDIgZTg2ZmE3ZTg1MGYxNDIwYmNiNTQ0OGI5MmYxZmE4ZjFmNDczNmE5OSBsZWdhY3ktdHJ1bmsKKzE3NTQzIGQ2ZmZiNmQ3ZmU4YWQzNjVmYzFjNTVkOTk0NzExYTA3OTMyYzAwMjkgbGVnYWN5LXRydW5rCisxNzU0NCBjZWMwMDNiYTNjN2I5NzljNzQwM2JmMWI4OGRlMTk3NjI5NzgyMjYyIGxlZ2FjeS10cnVuaworMTc1NDUgNjdhNDkxM2MwNzdmZWZjOTEyZWY3YjMxZGNhZmQyZWMzN2NlMWNjYiBsZWdhY3ktdHJ1bmsKKzE3NTQ2IGJhYjRmYTZjM2MyNDFiNmE5ZGE0YTNkNmMyNjEwZDlmZDcwZjk2MTggbGVnYWN5LXRydW5rCisxNzU0NyBjNmY0M2M2MDM2YmExMDUxMzdiYjcxMmQ0NTE3MjJkZWE2ZGYxZjI4IGxlZ2FjeS10cnVuaworMTc1NDggMzQxMTA1MzhiMTE4NDQ4NTVkOGMxMmExNDhmNTcyZjgwNmEwNTI5MiBsZWdhY3ktdHJ1bmsKKzE3NTQ5IDJiOWIxNTk2NTk1MTVmODg5ZWE1NDZhMTZiY2JiOTczZTBjMDQ5YTUgbGVnYWN5LXRydW5rCisxNzU1MCBlZjM3MDc4ZDI3MmQ2NDJjMTEwNTRlZDVjZGRkMGMyZjFiNDhlZGI4IGxlZ2FjeS10cnVuaworMTc1NTEgODUwMzhhMDI0YjE5MWE4ODgxYWRjNmZkZGQzNDk2NTkyYmEzMDM5ZSBsZWdhY3ktdHJ1bmsKKzE3NTUyIDllM2RjN2M0N2FmYTI5ZjEwNzU5ZmEzMWE5MTg5NTQ3ZTMxMzNhOGYgbGVnYWN5LXRydW5rCisxNzU1MyA0MDdjZTFjOTllOThlMzI5MTU2NjZkNDFlNTExMDY4OGQ3ZGM2NjViIGxlZ2FjeS10cnVuaworMTc1NTQgZmE4MjgyMGJkM2ZmM2RkM2MyN2E3N2VjZTY5OWRiYWEwMDg2OGU1NCBsZWdhY3ktdHJ1bmsKKzE3NTU1IDk1ZmUwODNjNzhlZTVlMGI0ODMyZDQ0NGIxMDI3ZGRhMGZiZmQ1MzMgbGVnYWN5LXRydW5rCisxNzU1NiA1ODFkMWU3N2UzNWU3NWRlZDMzN2JmNjY4NTY3MjAwMTIwYjc3OWRiIGxlZ2FjeS10cnVuaworMTc1NTcgOTFkZGU3YmZmZTdkOWUzYzIwOWFhNTY1YzRkMmZiMTQ1NjVjMjExOSBsZWdhY3ktdHJ1bmsKKzE3NTU4IDQzOTM2YTI1ZWFmMTAwMzQ4OTI2MjRjNjRlN2RkNGI1YTg1OTZjMGQgbGVnYWN5LXRydW5rCisxNzU1OSAwNGMzOThlNzQ4Nzg5YzdjNDAxNGYyZGI0MjZkZDQ0M2Y2ZWFjODg5IGxlZ2FjeS10cnVuaworMTc1NjAgNDcxMmY1YjhmMjc5YWYyYTg3Zjk1MTEwOGU0N2JjOGU1MDE0NTUzMCBsZWdhY3ktdHJ1bmsKKzE3NTYxIGZlZjliODlhZDE2MjJhZTk3YWM2MWY1MTUxOGUzNDFmMWE0ZGYxMTAgbGVnYWN5LXRydW5rCisxNzU2MiAyZmNiOTkwYjk2NWY4NmY1ZjJhYTUyYjQ3NTNhMTUyNWVlNWY1YjQ5IGxlZ2FjeS10cnVuaworMTc1NjMgODliMmFlZTQzZTBiZDUyN2RmMmU2YmE3OWZiNDZlMDUwMjczNjhjYSBsZWdhY3ktdHJ1bmsKKzE3NTY0IGUwMjQ0Mzg1MjJkZDcwYmIzN2NhZWRmNTY0Yjk0ZjZiOGI4NGMxNmQgbGVnYWN5LXRydW5rCisxNzU2NSBhYzZkZjA0OTRjNTgyNmJiYmY4M2FhZDAyZGYxNzA5YWE1NDNiYmE2IGxlZ2FjeS10cnVuaworMTc1NjYgMTkyMjNiYmYxYWExOWU1NTBhZTVhMmUyYmEwMzIzNjdiNWU2YTJkZiBsZWdhY3ktdHJ1bmsKKzE3NTY3IGE2OTcwNDQ5ZGY0MjVhNWY0ZGM1M2M3NThiMTAwOWE5NjVlZTllNzYgbGVnYWN5LXRydW5rCisxNzU2OCA1OGI4MzJiODc0NWVlMmVlNjNlYjZlNzg4MWVlZGQ4Zjc5OGZmYjIzIGxlZ2FjeS10cnVuaworMTc1NjkgMmVjNTlhMTFkM2M2MWUzMTZhZjIyNWY2M2ZhMDRjOTU1MDVhNGRkZCBsZWdhY3ktdHJ1bmsKKzE3NTcwIDgzMGU4ZWNlNjU2MzliNTNiZGU1NmFkNTA1Zjk0MGVmZGFkMGVlMzUgbGVnYWN5LXRydW5rCisxNzU3MSA1YWUxZDhhOWYxZGQ4ZWZmYjczZTQ2MjdhNjg2MzlmMTg3ZjNiZjQwIGxlZ2FjeS10cnVuaworMTc1NzIgYzNhMjdiNmViZTFiY2IxZmUwMjViMDFlYzI5OWI1ZTJhZjk1Y2JhNyBsZWdhY3ktdHJ1bmsKKzE3NTczIDY5Y2E0NmFmNDM2YTZjMjNiNGU0YmY0MWJhN2MzZDNlZDUyYzliYzggbGVnYWN5LXRydW5rCisxNzU3NCA4NzAyMzcwODliYTI4ZTc2MzUwNzU2NzYyZTI5YzJlOGIyZDEwMDhmIGxlZ2FjeS10cnVuaworMTc1NzUgZDhiNzllMzljNDdlMTQ0MmZmMDk5YTEzMTZiYmYyMjA5OWJhZTgxMyBsZWdhY3ktdHJ1bmsKKzE3NTc2IDdmNDljNTg2NGY3NzQxYjUwZjY3ZDY5OWE0MmQzODc5ZjI0ZTlmNDYgbGVnYWN5LXRydW5rCisxNzU3NyA0ZDJlOWNmMWViMjBiNmJkYmEyMGRhZmEwMWZmMWJjZTE5ZDhjZDY0IGxlZ2FjeS10cnVuaworMTc1NzggYzA0YWFjMTg2NTZhYjI5ODNhMThiYTlhZTM0MGQ0NjE0Njc3NDU2YiBsZWdhY3ktdHJ1bmsKKzE3NTc5IGE2ZjgwMTNiYmMzZDE2ZjBhNTk0ZWEzYzczZDJiYTgzYTRmOTE4ZWQgbGVnYWN5LXRydW5rCisxNzU4MCAwNmJiNWQ1ZDg5OTI3ZDU2NTFjZjAxOTc5MDA1OWY1NDM1MGQ4MzEzIGxlZ2FjeS10cnVuaworMTc1ODEgMTc2NjYwZmYwYzk1OTY2OTQ4OTA4OGM0MjQ0NTEzMzcyOTc2NWQ1NiBsZWdhY3ktdHJ1bmsKKzE3NTgyIGJmNDZmMTg1YzVlNGMwYzE2MjZmZGFjNDcyYzQ1M2FkMzNjOTRjOTkgbGVnYWN5LXRydW5rCisxNzU4MyBlMmMwM2MzMGIwNmRkZmM2ZmVhY2M4M2RiZjdhMTE5YWIyODNhOGRjIGxlZ2FjeS10cnVuaworMTc1ODQgODc0OWNjODQ3OTcwMjI2NWExMjAxMDQ5NmVlOWQ2MWYyZDU0NTQxNCBsZWdhY3ktdHJ1bmsKKzE3NTg1IGZmYzMwMGU5ZDg2N2JkMWQ5ODQwN2ZkMDcxODg5MWE2M2E3MWYxYzcgbGVnYWN5LXRydW5rCisxNzU4NiBmMWFiZTAzYjJmMTY4NDY3Mjk4ZGIwZDM1ZjgzNzE5N2JmMDJhZTU1IGxlZ2FjeS10cnVuaworMTc1ODcgMzM2YTYxNzllMDU5NzI0ZGVmODAyZDU3YWNhM2Q4ZTdhMDZlODE4NyBsZWdhY3ktdHJ1bmsKKzE3NTg4IDgxNGY0MjFlMDMyNjczMTZkN2I3ZGE0Mjc4YjMwMmQ4MjhhZDgxODggbGVnYWN5LXRydW5rCisxNzU4OSA4YWExMTJmOWUxMzBjMzJkMTdmYjg5MTg0ODg4ODlhMGM5NzYwOTg5IGxlZ2FjeS10cnVuaworMTc1OTAgZDQ2YTA0MzZkNmUxOTgxN2YzZmUwNmYzYTA3ZGRmZDdjZDhhOThiYyBsZWdhY3ktdHJ1bmsKKzE3NTkxIDJiOWE4OTAxNjJiMDUzOGU0NzQyZDNiNGUwNDcyZTY0YzJhZWZkOTkgbGVnYWN5LXRydW5rCisxNzU5MiA3ZWQwODBiOGNkYWNhNzc5YThmN2RjYWZkYzcyY2ZjNmZlNmRjOGZkIGxlZ2FjeS10cnVuaworMTc1OTMgMjIxNDA2MjY5NWU3OTllNjk2MzY1Y2UzYmNiYTk5MDBkNTNkNTYxOCBsZWdhY3ktdHJ1bmsKKzE3NTk0IDU3MDQzNzM0MWEwOWQwN2ZmYjYyZDZlYWNkMGVmNzdhNjg1ZjI0MzMgbGVnYWN5LXRydW5rCisxNzU5NSA4YmI2ZGNhNjZlY2RjNDhhN2U1YTRiOWZmYjZmNDc0YjAxZjU4ZTExIGxlZ2FjeS10cnVuaworMTc1OTYgYzFkZTJjM2U0NWNhNjQ2N2EyM2M5ZTI3ODU5M2M4OGJkYzE5YzIzMyBsZWdhY3ktdHJ1bmsKKzE3NTk3IGQ3MzJhM2ExMzk4ZWIwOGZiYTljNzdkYTZhM2Y1NjY0M2MzNzNiYTkgbGVnYWN5LXRydW5rCisxNzU5OCA4ZGIwOTZiNzgyZjk3MzNkMmJkZWVlZWExODlkMDY2YjAwYmFiNDY3IGxlZ2FjeS10cnVuaworMTc1OTkgNGY5NWNmMWIyNjY0ZjdjNzJiOTFhNGY2YjQzMzRmMDNmMzQ0OTNlNiBsZWdhY3ktdHJ1bmsKKzE3NjAwIDcwOTQyNzY3ZGM4MTBjOGJlNTNmMDVmZTc0Mzk1ZDdlZWU3OWIwMzQgbGVnYWN5LXRydW5rCisxNzYwMSAwMjlmZjQ2Yzc5OGM3YzExNjViM2VjNGYwMjg1NDM0NmQzMGRmMmYzIGxlZ2FjeS10cnVuaworMTc2MDIgZTE1NGU3OWY0ZDIyYmY5NmJkMTQzNTQ3ZmVjOTk4NjA3YzZkYjc1ZSBsZWdhY3ktdHJ1bmsKKzE3NjAzIDlmOGIyMTNiODQxNTc3MTJlMTY4NTMxNTNjZjljOWY2ZTcwMzVmNjIgbGVnYWN5LXRydW5rCisxNzYwNCA2ZjNmZDdhMmE3YmNiMzgzYmJhMjYzYjMyOWVhMmQwYWRhOTg0YWRkIGxlZ2FjeS10cnVuaworMTc2MDUgMDBlODE3MmFjMGNiOTU0YjU0ODU2Yjg0YjcyYmEzN2Q5ZjE1NTg0YSBsZWdhY3ktdHJ1bmsKKzE3NjA2IGY4OTg0ZjAzZGUyMDI1MzE5MWY1YTQ5MDMyYmVhM2Y2ZDNmNmQ5NGEgbGVnYWN5LXRydW5rCisxNzYwNyA0NmE2OTkwNzY5ZDE3MGFiNTY2MDZmNjAwM2JkYzIyOWFjYzFmNTFiIGxlZ2FjeS10cnVuaworMTc2MDggOWZmY2Y3NDljMTVhOWZiYmM2NTg4MTVjYWViZGVlYWVlNmEzNWVhYyBsZWdhY3ktdHJ1bmsKKzE3NjA5IDJmNzdjYjg1NDdhMWMwMTQyZjRhMWU2ZWUwZjQzM2Y1ZWUxMDhiNjEgbGVnYWN5LXRydW5rCisxNzYxMCA5MzIwNzA3NmQ2MTIxOGQwY2U5ZDlmNmIwZjQ3NDEwY2I1NTRkZmE4IGxlZ2FjeS10cnVuaworMTc2MTEgNmU5MzMxZTY4YTNiZDc4ZTlmODQ1ZTUyYWM1NDNlMmI0YzU3YjdiZSBsZWdhY3ktdHJ1bmsKKzE3NjEyIGI0ZWE1Nzg3MGYyYWFjNTlkMjBjZmQwMzM4OTNhNjc5NjViZmQ1MDkgbGVnYWN5LXRydW5rCisxNzYxMyBhODY1NjhmNTQzNzVkZGM0ODI1MDVhZjc0MzE3Y2UwZmYzYTUyOWFmIGxlZ2FjeS10cnVuaworMTc2MTQgNWE5ZGZmZmYwZGEyYjQ2ZDAzMDEyOTIwY2QzNDE5OTEyNmIxNTczYiBsZWdhY3ktdHJ1bmsKKzE3NjE1IGI1NDUxYTY4NzJhMjk4YTE3NDBjNGM2MmVjMTA5M2M5OTA5NTM3NTAgbGVnYWN5LXRydW5rCisxNzYxNiBjNTY2YWM5YzUyZDc5MmVjY2Q1YjBmODA3OGI3ZjQxNWJkYzI1MDE0IGxlZ2FjeS10cnVuaworMTc2MTcgNWY2MzhhMjk5ODg4YzcwNGQ3ZTQyZGVlNThkODg3N2M5ZDYzNmFiOSBsZWdhY3ktdHJ1bmsKKzE3NjE4IGQyNzA1ODQwNDk4MTA2MzYzNzRhNjFhNzBlOWQ1ODMzOTQwNTA0NTYgbGVnYWN5LXRydW5rCisxNzYxOSA4MjhlZjdlY2QxZjc2Y2Q4MzNhYzhlZWVmOTEzMDk5ZWMxOTY2NTUxIGxlZ2FjeS10cnVuaworMTc2MjAgOWZlNWM4MmM0YzhhMGI4YzRhZTQ3YjZjN2E0M2QxNzE3YjFmZDc4NCBsZWdhY3ktdHJ1bmsKKzE3NjIxIDcyODYwZWYwMzE3MTQ4NjcxZmFlNzBhMmZlYmZhY2Y2MWFlYzRmMGQgbGVnYWN5LXRydW5rCisxNzYyMiA2MGNlMzdmMDY2ZDhjZWExMDgyZWM2ZTZkMmRhZWMzNTg1YTY0OGZiIGxlZ2FjeS10cnVuaworMTc2MjMgOTJhZWUzMWQ3NjEzOGJhNzRkZDg4MjhhMjJiMjJkMzMwYmQ4ZWUwZiBsZWdhY3ktdHJ1bmsKKzE3NjI0IGFhMThlNTIzOWI0NjljM2JmMjAxYWU1YjE3Y2E4MWE3YmM0NGZlNDAgbGVnYWN5LXRydW5rCisxNzYyNSAzZmZhY2YxZGM4ZjA1ZjZlOWY5MGQyZDA3NjU0OWQxN2M1MzViNDZjIGxlZ2FjeS10cnVuaworMTc2MjYgMTMzMDA3NjQ2ZmI0NzcwZjcyNGM4YWJkMDVjMThhZGY3Y2M0YzE1YiBsZWdhY3ktdHJ1bmsKKzE3NjI3IDY0ODYzYzU2Y2U4ZTNlOTA5MjQ1MjJjZGVkMWE4NWNmMjg0ZTlkNjQgbGVnYWN5LXRydW5rCisxNzYyOCBjNWVjMGIxMWY4Yzk1ODM4ZmZmMWQ2MzVmNWUxNjhiNjQzMmI1MWUwIGxlZ2FjeS10cnVuaworMTc2MjkgNTIxNzRiMDAyZjFmZjM3ZjMwYWQ1NTEwY2JmYWM5MTI1N2IzODhmNiBsZWdhY3ktdHJ1bmsKKzE3NjMwIDc0NTZjOTdjOTllZmEwNjg2NDZkOGJkYjc4MTQ3NGFhZTY3MzUxNmMgbGVnYWN5LXRydW5rCisxNzYzMSAxNzk4NzcwY2EzNmIyMGFjNzllYzhlMGVlNzNlYjhkMmNkZGViZjBhIGxlZ2FjeS10cnVuaworMTc2MzIgNmI3NzJjNTI3Y2E3NGNmZTcwYjk2MWM4NTVhYWUyYWQ2MGRkOTJmMCBsZWdhY3ktdHJ1bmsKKzE3NjMzIDhmYWUzZjkxMTYxZjhlYjRkYjJkNTQ0OGU4ODAyMjk2NGY3ZWQ4NjkgbGVnYWN5LXRydW5rCisxNzYzNCA3YmE0OTNiYzI0YTBjMGY4MWY0NjlmZmEyYTlkNjQyMDlkZDRhZjJjIGxlZ2FjeS10cnVuaworMTc2MzUgMDY0ZTQzNGU3NDRmMTcyNDNmMGYyNzEzNjcwNjYyY2Q3MzNjYWY0ZiBsZWdhY3ktdHJ1bmsKKzE3NjM2IDA4MTY3MWNlZjdjMWI2ZGZkMTg3NjJkZjZmY2EzM2M0NzMyNDVmYjkgbGVnYWN5LXRydW5rCisxNzYzNyAzYzAxZjkyMWM0NTNlYzM2ODQ2NDcwMzM5NWQ1MzhiMTVkOGYwYjE3IGxlZ2FjeS10cnVuaworMTc2MzggNzdlZGRkZGJiN2NjZjk0MTg3Njg4NzgyM2Y1YmIwNzdiZjYzYzQxYSBsZWdhY3ktdHJ1bmsKKzE3NjM5IDA5ODVkZGZkNDQyYmU5YjA4ODI2MDgxM2M3N2QxODBiNzcxOGUyNGEgbGVnYWN5LXRydW5rCisxNzY0MCBkMGI3NzdlYzllMDI3YWRjMWJmZjVlMjQ0MzMwNTFiNjlkOTU3Y2RiIGxlZ2FjeS10cnVuaworMTc2NDEgYWQwZDkzMmNjZTMyZDc2M2U3ZGQ5ODE0Mzk4ZjE0N2ZhYzRiYjIxZSBsZWdhY3ktdHJ1bmsKKzE3NjQyIDFlZGI2YjZlM2I1YjU5NDIzNzZlODgxZjQ4M2ZiZmRkNzYxN2NjOWUgbGVnYWN5LXRydW5rCisxNzY0MyAxNzllMDk4MjM4ZTgwOTYzOWJlZWM3MDM0ODZmZmUyMTEzODU2YWRmIGxlZ2FjeS10cnVuaworMTc2NDQgYmUyZGY5OTM1ZWRkOGZhMWJiMTA5ZGM2OGE0YTFmZTg0ZGE4YzYxNCBsZWdhY3ktdHJ1bmsKKzE3NjQ1IDQzMjkzY2Y3NTNjMTVjMDFiZjU5YWRiNzU5MTM3ODk4ODUwYmEwZDUgbGVnYWN5LXRydW5rCisxNzY0NiBmZjg4YzY0Y2ZmMmU1MTk1YTIxY2Q4ZTFjNDBmY2EzYzI5NDk4NzRhIGxlZ2FjeS10cnVuaworMTc2NDcgYWZiYWRhYzYwZmY3NGM4ZjAxNDExZWY5M2NkMTU3MTYzZjZjOTIyYyBsZWdhY3ktdHJ1bmsKKzE3NjQ4IGZmZDNlOWRhODliMGViOGY0NDMxOGUzMTY0YzVmYzRlMWQwZTA3NmYgbGVnYWN5LXRydW5rCisxNzY0OSBjMzYwMmFlNDk4OTA2OWQzYTU2YzY2YzNkYjdjYzFiZjFjZTc4ZGU0IGxlZ2FjeS10cnVuaworMTc2NTAgN2M1NzRiZmE2ZTEzOGNmM2QyZDZhNjBlODMxNjE2YjUxODBhZTUwYiBsZWdhY3ktdHJ1bmsKKzE3NjUxIGQ2ODI4ZGQ5YTkyNzA1OTUxMzgzZWM5NDNkNGMyYzkwYmY1NmM4MTYgbGVnYWN5LXRydW5rCisxNzY1MiBhOTBkYWM0YmY4OGEyNGExMDBiMDZjN2RkNTFiYzQzYjM3MDhhNTgzIGxlZ2FjeS10cnVuaworMTc2NTMgM2UzYzJlZmM3OWM3M2MwMWM5Y2VmYzcyZDYyM2U5YjM5YTI1ZWE2OCBsZWdhY3ktdHJ1bmsKKzE3NjU0IGNmOWQ4YmY1NmQxNDUwNzVkOTQxMTkyYWI2MzI5ZTgxODIwNmYzMWEgbGVnYWN5LXRydW5rCisxNzY1NSBmY2E1ZjhmMWE4ZjQ3MWU4ZDQ3Y2RhOTIwZmVlZTA5MzE1ZmM5YTBhIGxlZ2FjeS10cnVuaworMTc2NTYgMjU3NDI5NTU0NWZmN2MxNjBkOWNhM2Y2ZDg0YTUzNjdhZmNkODM4YyBsZWdhY3ktdHJ1bmsKKzE3NjU3IDFkNzgwMzNhNTNkNzcyYTI3NjgwZTNjMTBlZDJhNDg0MTljMjkwMTIgbGVnYWN5LXRydW5rCisxNzY1OCAyOTkwMmY3NzQ4ZmE2NzhlOWJmNGFiZDdmNTVkMzBhNjhmOGQ1ZTkyIGxlZ2FjeS10cnVuaworMTc2NTkgN2RhMzZmNmZkNTQ0YmE3N2YyNTFkZWEwOWEyNzczZDgxMGJjYjZiNiBsZWdhY3ktdHJ1bmsKKzE3NjYwIDY5ODczYTMwYjdjOTk3Mzg0MDE1NmRkNTU0MTI5MmNlZjA2ZWQ5ZGUgbGVnYWN5LXRydW5rCisxNzY2MSA3NDYxZWRjZDI0OWQ0NTEyODQ1NzQ3NzdkYTI2NzA4MGI1NGIwOTlkIGxlZ2FjeS10cnVuaworMTc2NjIgNmRiNjk1MmQ4ODdhYzliNTc3ZmMzY2FkMzAzYTQzNzg3NjkyNDZmMCBsZWdhY3ktdHJ1bmsKKzE3NjYzIDAzZWVhN2VhN2U1Y2JkYjJkMmFkODE1ZDEyMGVkNGNhZjg3OGFkYzIgbGVnYWN5LXRydW5rCisxNzY2NCA0ZDEwYTEzNTY4YWEzZDk1MTFhNmEyNDJmMWViZTg0M2JkMzczZTA4IGxlZ2FjeS10cnVuaworMTc2NjUgNTIzYTEyZWQzMWYwZGUzYzE3OTFkNzQ0NGZiYmY5ZDhjZTcwZmE0ZCBsZWdhY3ktdHJ1bmsKKzE3NjY2IGY1NjUzYWFlMWNiZDdjYzcyMDU2NTFmZTAwNDI4ODE3NGY5MGRmODQgbGVnYWN5LXRydW5rCisxNzY2NyBkNTQzZGFhMTVkNzE1ODg2ZDZiNjY4MmNhNzlhYzk4NDhjY2MxOWVhIGxlZ2FjeS10cnVuaworMTc2NjggYjdmYjEyMTZmNmI2MjIyMjczZWIzMWRkMWI3OTdiYTRhMWU2NmRhMCBsZWdhY3ktdHJ1bmsKKzE3NjY5IGI1NmE4ODI3N2U4Y2VmNTllYzE5YjQ5OTEzNzM4NTE2NzA5MGFiNmUgbGVnYWN5LXRydW5rCisxNzY3MCA0ZmY4NGU3MzQ1ODhmYWNkMTgxZWJjMWRjMTk2ZjNhODFjODJkYzE2IGxlZ2FjeS10cnVuaworMTc2NzEgYjQxM2U4N2VlZWQ0MjM3MzkwYWIyYTM1ZWMxODY1MDI5ZmQyMTE4NCBsZWdhY3ktdHJ1bmsKKzE3NjcyIDBkZDIwNGQ5MzZlMTYzNTIyNjY4NGE3OWU1MjkxZWYxNGQ3MmZmMDAgbGVnYWN5LXRydW5rCisxNzY3MyBjOTVjNjc2YjE4NDA3MDA0NWJlYTEyMTBhOTBmYjM5NzlmOTZhOGExIGxlZ2FjeS10cnVuaworMTc2NzQgMTgyZDgyNGYyYjQ3M2JlMDgzOTk2ZWQ3NjYyMDcwNTI2MzYwYjMyNiBsZWdhY3ktdHJ1bmsKKzE3Njc1IDA3OTYzNDIxZmFmY2M5ZmU1NDQ4NTAxMmUxYWFiMjNkZWQ0NGY0NjggbGVnYWN5LXRydW5rCisxNzY3NiBjNTM2OTVmM2Q4NDBkMTRhYzM4MGVhYzllYTYwYmYxMjQxNWVjYjY5IGxlZ2FjeS10cnVuaworMTc2NzcgM2UzOTNmOWIxMjkzOTI2ODIwN2UzOWIzMGEzNjVlOTNkMTljZDA0YyBsZWdhY3ktdHJ1bmsKKzE3Njc4IDQ5NDRlMzg1OWE4NjA5ZWQzNjA3ZDUzNzU2NmFjOWM5MGEzNWYzYTggbGVnYWN5LXRydW5rCisxNzY3OSBhMTAzMzI4M2EyNWRjNjBiZGY1NWIxZmNhMDc3M2RjZTA3NzNjZTJkIGxlZ2FjeS10cnVuaworMTc2ODAgOWZkMDMwYWYyZmUwMzlhY2U0YjhiNDRiNTEzOGE0ZTQwYTBhYWNhMSBsZWdhY3ktdHJ1bmsKKzE3NjgxIDkyZGNlYTA4NTkzMDU4NzZmZjE2YzBlZTI4YzlmMTIwMzQwODE4MGMgbGVnYWN5LXRydW5rCisxNzY4MiBiMWEwZmI1NTQ0NTZjYWUwYTI2NzM2MjM1ODcxYjkwYzQwMDUyNjE3IGxlZ2FjeS10cnVuaworMTc2ODMgOWY5NmM5MmYwM2UzYmU2YzNiMTY4N2FmYjcyMWUyNjc5Y2EyNWZjZCBsZWdhY3ktdHJ1bmsKKzE3Njg0IGIxZjIyMGY2MzZlZGQxZThjYzAxY2EyODc3ZDRkZmUwZTFkYzUyNjYgbGVnYWN5LXRydW5rCisxNzY4NSAwNzI4OGQyZGI1OTY0MjQ2YWNhMzk2Yjc0ZjU2YzdlYmNlMzFiMWI3IGxlZ2FjeS10cnVuaworMTc2ODYgMWExYjc5NWYwYzliOWVkZDBkODQyMWU2OWU1NWY3ZWFiZWM1NjJlYiBsZWdhY3ktdHJ1bmsKKzE3Njg3IDU0YWRiN2I0ZjhjODRkZThkYzdiYjUzYmQ4NjRlN2Q5M2EwYjUyZGIgbGVnYWN5LXRydW5rCisxNzY4OCBlZTgxM2U4NDNmM2U1NzBlMzZjN2U5NzQ0MGQwMjgyYjZmOTA3MjZiIGxlZ2FjeS10cnVuaworMTc2ODkgMWQ2MjcyNDJlMjlhMmNmYjZhY2RjZGU4NmQ4MTRhOTNjMmExYWY4OSBsZWdhY3ktdHJ1bmsKKzE3NjkwIDk2ZDMxYTE0Mzg1N2NmOGI1ZjM1NDk0Yjc4MzJhYzNjMzA2ZDU1YTAgbGVnYWN5LXRydW5rCisxNzY5MSA2N2UwZmY0YWE3Yjk3N2YxYWI1NjVhMWY1YzAzZDYzZDMwOWJhZGZkIGxlZ2FjeS10cnVuaworMTc2OTIgYjc3ODdhOTA1MmUzZDA4MWQwMGY2OThmMTg3NDM2OTVjMTg1ZWM3NyBsZWdhY3ktdHJ1bmsKKzE3NjkzIDc2YWFkNWIwNjU0M2FmYzc0NDRjYjdhNzk2YmNiNzY5YzFlNjM3ODAgbGVnYWN5LXRydW5rCisxNzY5NCAzYjBjYTBjYzM3NTBlMjIzM2ExYmM4NDBlOTIyODljYzM1MjhkOGIxIGxlZ2FjeS10cnVuaworMTc2OTUgNjI1YTlhNjk1NDY5YjVjYzRiZTNjOTU0YmI3ZGRjNTU0NzBkY2RmMiBsZWdhY3ktdHJ1bmsKKzE3Njk2IDY4MTg5Mjg1NjU4ZjIyODgwZmY1MWRhYzk5ZDY3NTdkMTVkNGQ5MGUgbGVnYWN5LXRydW5rCisxNzY5NyA0NjBhYjE5YTMyODliYjlmNzNhZmNjMTAxZTVhMmFmZjFkNzc0MDk4IGxlZ2FjeS10cnVuaworMTc2OTggOTRjMjQ2ZTYzOTlkMjIwMWEzOGQxZjY5MWIxNzg0ODVkOGUzYTBlZCBsZWdhY3ktdHJ1bmsKKzE3Njk5IGU3ZDY3ODk5MDhkNzA5MzRiM2M5MmRhYTFhMWE2ZDEwMGU5MTQzZmEgbGVnYWN5LXRydW5rCisxNzcwMCA4OGQzYTg5NzQ0MDllZTcyYzYyOTI1N2VkNzg4ODVkNmNiZjRhZmRlIGxlZ2FjeS10cnVuaworMTc3MDEgNDVlYzVkZjlhNjJkMzFlYWQ1NTI5ZjJjN2EzZDZiODRiMDViNDE1ZSBsZWdhY3ktdHJ1bmsKKzE3NzAyIGY2ZTUwMWZjMzJjNzcxZGZlZjU0ZTExOTVlMWI1OTZmN2RkZTk1NzIgbGVnYWN5LXRydW5rCisxNzcwMyBlNTJjMjQzMTlhZWY1MThiNDMwZTc3NzA0NDU5OWIxMmE3NzRiYzUxIGxlZ2FjeS10cnVuaworMTc3MDQgOTJjZGJjMGY1NWQ1MDMyZjY0ZjdhZGQwZDI3NjAwNmFlOWNlZWY2MiBsZWdhY3ktdHJ1bmsKKzE3NzA1IGM4Y2E5MzEwN2YyZWRjNGZmODk4Njk2ODM3NTI2NTk1MGU5YjE3NjMgbGVnYWN5LXRydW5rCisxNzcwNiA1NDQ5MzAyYzRkMmUxNDhkNDdlZDE5ZWYwMzYzMGY0YzFmZDgxY2U0IGxlZ2FjeS10cnVuaworMTc3MDcgNDYzZmFmMDE2ODVlNzEyNzE4MzI1NzFiZTVkZTMzNzdjZWI0MTBhZSBsZWdhY3ktdHJ1bmsKKzE3NzA4IDEyOTM0OTJkZmU2MDNlYTRhYjc3YTkyOGUzNWZhMzU2N2Y2OGJmODAgbGVnYWN5LXRydW5rCisxNzcwOSA4OWJjODQ3NWZjODRlMTcwZDY2MDRmODZmNWQxNWJlYWNiZWQzMWRhIGxlZ2FjeS10cnVuaworMTc3MTAgYWUxMmI4YzNjM2IzM2FiNmYwNThhN2U0MmNhODExNDhiMzlhOTM3YiBsZWdhY3ktdHJ1bmsKKzE3NzExIDgzYWZmMWVhNWI3MGRlNjUyNGZkYTExNzFjOGVhYmEzN2U5MWUwYTEgbGVnYWN5LXRydW5rCisxNzcxMiA2ZWRhNmExYTY5M2M1NDcyNWU1MTcxY2JhODZkODc2MWJhNjA3YzA5IGxlZ2FjeS10cnVuaworMTc3MTMgMTY2MTE5ZWMzMTk1NWI1OWU1N2ZlM2NiMzk3NGIxMjgyY2FmYzEyMSBsZWdhY3ktdHJ1bmsKKzE3NzE0IGU5NzY2MGQxZjFhYWViMTJlM2NmMGE1NjhlYzk5YzEyNjQzNzVjMDkgbGVnYWN5LXRydW5rCisxNzcxNSAxOGIzZGVmNmM0YjgyNzYyYzM2MDE4ZjY5Zjc0MDUyMzc0NDE1ZDNiIGxlZ2FjeS10cnVuaworMTc3MTYgMDljMTRhZTVjMmY1NDM1NzhiOGNjMTk2NWViZDVhNzU3MDdmNGM5NCBsZWdhY3ktdHJ1bmsKKzE3NzE3IDViOGNkYTZmM2I1ZjY5ZWMyNDczMDVhMDRlOTBkM2ZhMDM1YmU2NDggbGVnYWN5LXRydW5rCisxNzcxOCBjM2YwZDZmMTlmN2JmZmMzZGQ2MzQwZmQ5Nzk5OTIxZmExMmEwNWJlIGxlZ2FjeS10cnVuaworMTc3MTkgNTZmZGE0ZTllY2U5ZjdjMjI4ODgxMDRlZTJjMzkxYzA1OGQ3YzVjZCBsZWdhY3ktdHJ1bmsKKzE3NzIwIDViYWY3Zjc0Mzk2ZjFkYWZjMmY4YWZhNmUxMDk2YTZlZmNmYmI1MGIgbGVnYWN5LXRydW5rCisxNzcyMSA0YzA4OWFkMjllZWFjNDVhNGE5ZGQ2YWNkOTViYjFkODA2ZGE1ZjE4IGxlZ2FjeS10cnVuaworMTc3MjIgYzg5MmU2YWE5OTk3NmM4MzAxOTNmNDBjNGE0N2FjOTY3ODExMWFiMSBsZWdhY3ktdHJ1bmsKKzE3NzI0IGI2ODAwNmE1NjQ3MTE2YjAxYzQyNjExNDkyODc3OGMxMzA0MzM0OWIgbGVnYWN5LXRydW5rCisxNzcyNSAyNWRkZDNkYzdhN2EyZTRkNTdjMzJjNDBlOWIwYjE0NGI0OWE3YmM5IGxlZ2FjeS10cnVuaworMTc3MjYgZTM1YTNhNzcyZGNhOWVmYjI1Njg2NWMyZjA2Y2Q3MWIwNDExZDRjZiBsZWdhY3ktdHJ1bmsKKzE3NzI3IGZiNmI1MTAzM2MzYjYwZTExNzZlMTU4ZDczYjBlNGFmMWNmNjcxNDMgbGVnYWN5LXRydW5rCisxNzcyOCBhYzE0Yjg2ZjBmOGI4ZjgwZWVhNTJkYTA4NTBjNTk2YjQzYzZmNGRiIGxlZ2FjeS10cnVuaworMTc3MjkgYTkzYjJmMTc2YTVlMmYxNWVjOTAxZTRlZDFlY2NiNDFkZjljZDhhNCBsZWdhY3ktdHJ1bmsKKzE3NzMwIDY0MzFjZjVjOGEwMDRjNjY2NTFjNGY0NzkwNjEyMDhhNTUzZGYzNjkgbGVnYWN5LXRydW5rCisxNzczMSAxN2I1YzQzYzA4YTZjNGQ4YWVmMGM2ZDYxZjk3NmZiMjNkZTY3N2UyIGxlZ2FjeS10cnVuaworMTc3MzIgNzNmZGU0NDU2M2QxZWY5MjhkMWVmMWEyYzYwYjhkNjU5MDk1ZWQ4ZiBsZWdhY3ktdHJ1bmsKKzE3NzMzIDc5ODZhNDU1MzkzMGIyNjMwMWU3MGMwZGM0OGMzYThmYmE1NjJlNjcgbGVnYWN5LXRydW5rCisxNzczNCA2OGUyM2YxZmY1ZGI3YTI4OGMzZDZmZWQ2ZDlhOWJjYTkxODg5MjMzIGxlZ2FjeS10cnVuaworMTc3MzUgMjgwOTY2MmFlOWNlMTgzODRlN2NhYzZiN2NkN2Q1OGU3OTI4MWFiMCBsZWdhY3ktdHJ1bmsKKzE3NzM2IDNhNTlhMDczM2RmOGMxNmZhM2UxNmM5OWUwYWM0ZWZhMDRkYTZhOGMgbGVnYWN5LXRydW5rCisxNzczNyA1ZDA4OTA5NWY0MGY1Y2U2NWRiMGNkNDY3ZTc3MWQxZThlODdhMjM4IGxlZ2FjeS10cnVuaworMTc3MzggNTI4YjUyYmQ0YmMzMmVkMjNlYmVmMzc3MGJmNmI4ZDQ0ZWNhMDFmZSBsZWdhY3ktdHJ1bmsKKzE3NzM5IGQ2YmRjYjA4OTlkZGE5MGRmMzExOWM2YjJmNjJmYjY5Y2E1ZjNlMzggbGVnYWN5LXRydW5rCisxNzc0MCA5NjhhZTU1ZmU2ZWVhYjI4ZDBmYzg4MmQxYTcwY2ZmZTYwY2Q4YmNlIGxlZ2FjeS10cnVuaworMTc3NDAgNTViYmExOTdkNDg3MGNkYWU2MmFlY2EwMGUyMDI0MGE3NTZiODRmOCBsZWdhY3ktdHJ1bmsKKzE3NzQyIGY2NTc5MzBmZDI3NGMzYjgxZjJkYTU0MDhjMDUwNTIyYmZlOTcyZDEgbGVnYWN5LXRydW5rCisxNzc0MyA0ZmRmNjYwMGQ4YWE3MDEwYzI5ZmUyNDU2NjVjZmQ0MzQzMGU3YjRhIGxlZ2FjeS10cnVuaworMTc3NDUgNjUzNzQ5MDAzZGI5NzYzOTAyY2M4MjIxYzM2ODU2NzJiY2Y3NjcwMyBsZWdhY3ktdHJ1bmsKKzE3NzQ2IGM3ZjU1NTUxZmUzMWJjY2MwYjFiYTM4N2RhZjNlOWViMDE4Mzk5NjQgbGVnYWN5LXRydW5rCisxNzc0NyBhZmQ3ZWNlMzdjNDY5NWVlNjlmNTljYmU2MjA3OTdhOWM4MzU5NDFkIGxlZ2FjeS10cnVuaworMTc3NDggZTQ2NDFkMTkzMjIwZjM4NmMwZDk3YTczODU2NzRkODhkMTc3ZThkMyBsZWdhY3ktdHJ1bmsKKzE3NzQ5IDE5NjdiZTEzNTllZTU5OGJhOTM4ZDExYjhmMWU2NWNhNTM2MTg3ZDQgbGVnYWN5LXRydW5rCisxNzc1MCA4MzQwNjJmNjk1ZTBmMjFjNzRiOTAxN2VhOTI2NjAwNGE3NzU4M2I4IGxlZ2FjeS10cnVuaworMTc3NTEgZGUxODkyZWFjY2ZmYWNhYmVlYzA4ODkwNTlmZTg4OTFmNzFiNmYxNyBsZWdhY3ktdHJ1bmsKKzE3NzUyIDQyMGQzYzU3ZWZlYzczODc0ZWRhN2IyZGYwMTk1YWI1NjYwMDk0YzUgbGVnYWN5LXRydW5rCisxNzc1MyBhZDk4YzEzNjQ3NWU3YjIzNzMyYjliZDg4N2VkY2U5MTczZDU4MDM2IGxlZ2FjeS10cnVuaworMTc3NTQgNDExMWNmMjJhMGFkOTQxY2EyZTQ1MjhkOWVmOTUwNDM0NGZjODA0MyBsZWdhY3ktdHJ1bmsKKzE3NzU1IDRiZWE0ZjU5YzRlNDNjOWM1YzRhNjI2NTNiOGZlNDBkZmY3ZWFkOGUgbGVnYWN5LXRydW5rCisxNzc1NiA2MDZhODA4MzRhODYyMjM4YzdjYTk3Y2U1YTViYjQ0YTkzNjNiZjNlIGxlZ2FjeS10cnVuaworMTc3NTcgZjkzMmMxMjgyNzliY2YzZmM0Nzc3NmY3MDhjZGQ0N2RkZjRkOTJiZiBsZWdhY3ktdHJ1bmsKKzE3NzU4IDI5MWFiZWJlYTU1YjJlZDdjNDA4ZTFhMDlkNTc2NDI5NjlkYmYwOTAgbGVnYWN5LXRydW5rCisxNzc1OSBlYzc1NmQ1OGU4YTcwZWZhNzc1ZGI0ZjUzNWVhMjc2MDI3NDgxZWFhIGxlZ2FjeS10cnVuaworMTc3NjAgZjRhMWQzZjhmMjYyODk3NzAzYjA1ZjBlNWZjNzdiOGRjNjkwM2VhNyBsZWdhY3ktdHJ1bmsKKzE3NzYxIGIxNWZjZTg2OGU1MGI3N2EwNjk5NDdlZjYxMmZiOGI5ZTU1Y2QyNzAgbGVnYWN5LXRydW5rCisxNzc2MiA0NTk2N2ZmMWI2ZGMxOGU1NzEwZDA2MDFmNTRmNmRmYzc4ZTdlMWQzIGxlZ2FjeS10cnVuaworMTc3NjMgYTBhMTNmMTBjZTRiZjVjZWNjMjVkY2MwYzAyNmEzNTBjODYzMzAwNCBsZWdhY3ktdHJ1bmsKKzE3NzY0IGQwMTM5NGIwYWE2OTg4MGE0YjVkNTlhOWJkOGRhYTRjYzAzYTE4MTAgbGVnYWN5LXRydW5rCisxNzc2NSA4ZjU5YmQ5NTc5NTI1Nzc2OGU5Y2VmMjYyNzAzN2ZhNmY3YTZlZTllIGxlZ2FjeS10cnVuaworMTc3NjYgMTAxODcyN2YzMjMxNzZjYWZkMGUyZWM5MWE5YTNkMjEzZmU2NTg2MiBsZWdhY3ktdHJ1bmsKKzE3NzY3IDZmYjJhZjc2Njg5MmViODdiYmIzZDZjNDJjMGUyMDIxY2EyZTBmZDQgbGVnYWN5LXRydW5rCisxNzc2OCBhZjhkNzdhYTkwZjg4NTg3MGI3ZjRlZTkzMmNlNTllODc0ODY1MmU4IGxlZ2FjeS10cnVuaworMTc3NjkgMmNkZjdhYzkxNjJkOTM1MDRkZTJlZGU2NGE3ZjVlOGY0MmNhNDYxMiBsZWdhY3ktdHJ1bmsKKzE3NzcwIGEwNjI3NDliODBmOGM1MDNlZTRjZGVlN2VmMjgyMjE4MGNiOTA5OGEgbGVnYWN5LXRydW5rCisxNzc3MSA3OWNkZWVlZWZhZmE1NzU1ZTkzMTBiYzk4NmYwYzVlOGEyNDQ1ODAxIGxlZ2FjeS10cnVuaworMTc3NzIgZWEyYmE5MTBlNWYwNWZlNmNhY2NiYzA2NjFiMjQxYjBhOGNlYTNlMiBsZWdhY3ktdHJ1bmsKKzE3NzczIGFhZDJiNWEzZjdiZjRjMzdhYTIxN2UyNWRlNGI3NmIyNDQwMjg1NTkgbGVnYWN5LXRydW5rCisxNzc3NCBjZWZiMTkxMGFkMGQ3Yjg0ZGZiM2ZkOTdjYWQ3NGFmODUyNzlkODJkIGxlZ2FjeS10cnVuaworMTc3NzUgOTE0YWU3ZjljNjRjZjdmMDA2MTRiMzljNzFhZWMwNGRiNjcxNGQ4YSBsZWdhY3ktdHJ1bmsKKzE3Nzc2IDk1YjIwMDE5YjcxMTQ1NGM0NzU3YzdjZDY1YmQ1NzE3MWQzMjE4MGYgbGVnYWN5LXRydW5rCisxNzc3NyBmYWQ4MjQ3ZWYwYTUyZGE3MzRjNzI4OGY1ZWI5MDFlNDlmMmRjNWMzIGxlZ2FjeS10cnVuaworMTc3NzggM2RiOGI4MDMxYTZhNDc0NDE4NDA1OTg0OTdiZGM2YzliNmRmN2I2ZCBsZWdhY3ktdHJ1bmsKKzE3Nzc5IDlhODcwMGZkYzUyYmU4MDYwZjM3ZGY5N2JkNzY0M2IwOWViOWZjZGEgbGVnYWN5LXRydW5rCisxNzc4MCA3NWYzZDVlN2I4OWNhMmUxODVhYzAzMDE5ZjI5NDUwOWQzMzZmNmY1IGxlZ2FjeS10cnVuaworMTc3ODEgMTUzNTQxZjgyNGEzNjM5Njc5MjU3NmYxZTBjNjYyNjZmOGQxZTJjOSBsZWdhY3ktdHJ1bmsKKzE3NzgyIGI0Zjc0NDgyZjlhZmUxMDc4MDMwNjdhN2RkMDYyMDlmZGUzY2ViZWIgbGVnYWN5LXRydW5rCisxNzc4MyA3NmMxZTQwYzVjNWRlOTA2MWU0NjBhNmI4YWRjZWZmOWVkYjJmOTk5IGxlZ2FjeS10cnVuaworMTc3ODQgYzhmMjJmMTU0OTlmOGIxN2RlNjQxNjE5ODIwZTEwMjkyYzI5ODEwZCBsZWdhY3ktdHJ1bmsKKzE3Nzg1IDJlYTI5Nzg2OWIwMjcxZTBlYjUxOTI4ZTQyNzUyOWUzMDA2Zjk3Y2YgbGVnYWN5LXRydW5rCisxNzc4NiBhZjFkZTRmNTA1MDg5YjM0NmNkNDdmYzg1YTEzM2VjYjZlNDY1YmExIGxlZ2FjeS10cnVuaworMTc3ODcgNTYxMGVjZDA3ZGMwMzZlNGFhMjFiNjFlY2FjZWZkY2ExNWNlZTBiNiBsZWdhY3ktdHJ1bmsKKzE3Nzg4IDBjOTNkMmUyN2FjMDdjMTMwMzhkY2M3YTE3ODE3ZTQwM2MwMWUyYWEgbGVnYWN5LXRydW5rCisxNzc4OSA4MjdlOWQyMWE3ODE2NGRlZmIzYzhhNWVmNzI2ODQxOWJhZWM4ZGRmIGxlZ2FjeS10cnVuaworMTc3OTAgNzE1YTNlOTI0NzM3MTgyODA2YTliNTA3MjE4MzNjZWEzNWUwYjE2YSBsZWdhY3ktdHJ1bmsKKzE3NzkxIDNkYTk5ZjBjMTg0ZjI2YmE0Y2JlOWZmNDg4NDk5ZDI5MjM4YTY1MTYgbGVnYWN5LXRydW5rCisxNzc5MiAxMzQ4ODUzOWYwMmJmZTI4YmJhYWYxYjNmNDdmOTBhZmM2NmU1YzU5IGxlZ2FjeS10cnVuaworMTc3OTMgMDExZGYyNjQ3ZjQxM2QyZDE1ZGQ4NGQ3NzNjYjgwNDkyMGY1OTQwYyBsZWdhY3ktdHJ1bmsKKzE3Nzk0IGZkN2Y4NzlhZmY4MWM1YWJjZDNkNWFiYmM5MmJmZTExNDRhMTE4ZTQgbGVnYWN5LXRydW5rCisxNzc5NSBjMTI4NzVkZWZjMGU0ZTM5NjA3ZjMwNGU4YjE5NWE1N2JiZTk1YTAwIGxlZ2FjeS10cnVuaworMTc3OTYgMTYyOWVmNzM4YjJmMDk2N2ZiMzM5MDQ0OTk1MDhhNjhkZGYzY2U1ZiBsZWdhY3ktdHJ1bmsKKzE3Nzk3IDljZWE0ZGI0MWQ5ZmFmZWVkNGZjNDNmNmM2NDhlNzBkYmI5NTEyZjEgbGVnYWN5LXRydW5rCisxNzc5OCBmOWNmNjExMDk2YmY1MDJmOGZkNzliMjU5NTVlODYwMGMzMzU2ZmI5IGxlZ2FjeS10cnVuaworMTc3OTkgZTE1ZTk3YTZjMTRhODM0NjUxODNmN2M5ZDRjYzE0NDdiMDI2ZWJkZCBsZWdhY3ktdHJ1bmsKKzE3ODAwIDE5OTE5ZTE0NmZmOGYzMWI1ZTNmYmNhOWNiN2I2YWVkZGZlMjAxNmQgbGVnYWN5LXRydW5rCisxNzgwMSA3NTkyZjcyMTliN2M2Y2ExZDExMzU3NWYyOTFhODkyY2ZjYjNmNWFmIGxlZ2FjeS10cnVuaworMTc4MDIgYTU5NjAwYTk3NWQxMjQ3MGQyZWQ4NmZjNDQ1MjRlNTk0NjhiZGY3YSBsZWdhY3ktdHJ1bmsKKzE3ODAzIDllNDQ1ZGRjYTJkNzRhMDAxODJlYTkyNTk2MWMwYmVjNWNkZmFlOTUgbGVnYWN5LXRydW5rCisxNzgwNCA3M2NlYTU5NjU3YmFiYzdlNjNkNmNmYjZlM2RiOWYyNTMzODc5Mzc3IGxlZ2FjeS10cnVuaworMTc4MDUgN2FjYjhiYmMyMTViYjcyYTMzMDg4NjMyYmZkOTkzZTZhODIwZDBjNSBsZWdhY3ktdHJ1bmsKKzE3ODA2IDE0YjY0N2Q1NTBkMzc5MzFhOTIxMDg1YzQ2MzkzNjAzMjUyY2E4ZWIgbGVnYWN5LXRydW5rCisxNzgwNyBmOGI1MjZmYzM5ZjY3ZmQyNjQxOTE4MjQzZTllYWU5NzgxYTY1YmFhIGxlZ2FjeS10cnVuaworMTc4MDggMDA1YTBiNGMzODJkMzVmNDVkZDZiMmMxMjM1N2IxYzc0NDI3ZjY3NyBsZWdhY3ktdHJ1bmsKKzE3ODA5IDZlNzA1MjQ3Mzc3ODZiMzVlMjYyOWFlMzNhODUzYTIzMjc5ODM1MmQgbGVnYWN5LXRydW5rCisxNzgxMCBkOWU2NmE4M2U0MzM4NGE2MzQxZTc2MWEwNjVkYjEyMGRiMmY3YWFkIGxlZ2FjeS10cnVuaworMTc4MTEgMzQyNDk3YWQ4ZmVjOTc2MzJkNDBlMjk2NGRhYjUzODUyYWIwZGUxOCBsZWdhY3ktdHJ1bmsKKzE3ODEyIDFmOWQyMzc3N2ZkMDE3NDQ5ZWIyODkxOTZkYzU0YWM5MWFhMTc5MGEgbGVnYWN5LXRydW5rCisxNzgxMyBjNzhlNzZhNTcxYjY1ZGI5MzkyYjIwMTJiMDJiZWYzYjcxNTk2YTM5IGxlZ2FjeS10cnVuaworMTc4MTQgZGIxY2NlMWZmYjYwODI2ODExNTNiNjI2MzI2ZDQ4Yjk5ODlmOGJlOSBsZWdhY3ktdHJ1bmsKKzE3ODE1IDUwMzg2YzczYmEyMjVkMjk4NWZkMjY1MDY0NTk0YmE5ZTQ5ZGQ4ZjIgbGVnYWN5LXRydW5rCisxNzgxNiBiMDMxYWJjYTNlOTFhYmUwNWQzZTA2MGI5ZDUyOGEwZDRhODQxODZmIGxlZ2FjeS10cnVuaworMTc4MTcgNTY5MjE0YTQxODJjOTNlNGYzYzI2NzFiMzliNWFmYmE3NWJmZTFiZCBsZWdhY3ktdHJ1bmsKKzE3ODE4IGViYWViMTllMDM4MDliODg2MWNiZDJjZjFiMWRlZTFhNDQwZGU2NGMgbGVnYWN5LXRydW5rCisxNzgxOSA5YzNhZWZhNWNkN2Y1OTMyYWQzNGY3ODA2MzhjYTIyZGVjMjJkNmZhIGxlZ2FjeS10cnVuaworMTc4MjAgNzNkMDkzMjJmMmMzNjAwNzU0N2YxNTYwY2E5MzM3ODQxNDlkNDQ3MSBsZWdhY3ktdHJ1bmsKKzE3ODIxIDU0ZWM1ZWMzMjM1MmYwZWE4N2IzZTQ4YWFhOGI0OTAxNGQyMjVlMTAgbGVnYWN5LXRydW5rCisxNzgyMiAxYWEzNzAwOGZkMmM4MjVlMTBhYjc4NDI1MjJkMDMwMmIxNGU0YjUzIGxlZ2FjeS10cnVuaworMTc4MjMgOTMxNGNjNzlkNmUxMmU3YzFkYWZkZWE2NTQ0MWExMmM2OWM1NmMyOCBsZWdhY3ktdHJ1bmsKKzE3ODI0IDMxNGViOGY3YWUxMzUyOWE1NzhkNmNiY2U4MTIwODk4NDdlNzJiMzIgbGVnYWN5LXRydW5rCisxNzgyNSA1MzM2OTQ2YjY0OTVhMTY0MGViYjJkMGI3OTZkNDhhYzRkNzg2OTMyIGxlZ2FjeS10cnVuaworMTc4MjYgYjQxMTIzOGRlOWQxMGYxMmExODJiZTVkM2I1YWY3YjJmNjhmNGFmNCBsZWdhY3ktdHJ1bmsKKzE3ODI3IDZhZjlhYTE1NjQ3Zjk4Zjc4NzQ3MTlmOGIwZTg5YTRiNDZjNDM4YTEgbGVnYWN5LXRydW5rCisxNzgyOCAzMmQyNjNkNDQ3YjdlMTNhNzZiNWJiYTIwODAzMjYzNzdmMDFlNzkzIGxlZ2FjeS10cnVuaworMTc4MjkgM2VlY2RhMmJhOTNhMzg0NjY2MjAyNzY1YTA0YWYwZjc5ZTE3NDY3NCBsZWdhY3ktdHJ1bmsKKzE3ODMwIDQ4YjQ1YTI4MTI3NzAwMTYxODRkZGY0ZWVmNTBlNmY0MDc5NTUxNDggbGVnYWN5LXRydW5rCisxNzgzMSBjNzkwNzM3OWE2YmQyMjg1M2QwNjc0NGZkZDlmZDFjOGU0MWQxMjZlIGxlZ2FjeS10cnVuaworMTc4MzIgMjdlYWI4MDMyNzY2MmE3ZWU1NWRmZjNiMTEyZGY5ODZiNzc1NTcwNiBsZWdhY3ktdHJ1bmsKKzE3ODMzIDgzOWJhMzViMGFhMzE0NDI4NWU0MTkyMDI1YzZhMDExNzhkYzEwZDkgbGVnYWN5LXRydW5rCisxNzgzNCBiMDEyYWViYmJlNTE3OGZhMGQ5MWVjYjE1MGRlNGMzZmNkOGFiYjg3IGxlZ2FjeS10cnVuaworMTc4MzUgMTc0ZDM0ZWFjNTE2M2I5Yzk0YzEyMjc3ZWUzZWQ0MDFjOWEyZjdiYiBsZWdhY3ktdHJ1bmsKKzE3ODM2IGU3OWQwN2MyNDU3MWUzOGUyMTk5YzdlOWJmMmI2NDAyOWNkMDdkMGEgbGVnYWN5LXRydW5rCisxNzgzNyAyNmQyZTRmNThhZGNhOTcwYmRkZjk5ODQ0MjNjZDNmNDhkYTU1MGJiIGxlZ2FjeS10cnVuaworMTc4MzggODIxMjNjZTAyNjg0ZmUyNTAxZmRiYTI1YjMxMDc2NzQ5YmI3YWE5MyBsZWdhY3ktdHJ1bmsKKzE3ODM5IDBmYTU4ZmVhMzBjZjIxNmMyMzdmMmVmMmVjZThhZTkxZGIyMGE3NTIgbGVnYWN5LXRydW5rCisxNzg0MCBiNjFjZDFhNDg5NjAzYmM0NzlmNmRiMmU3NmNlZDNmYjY1YWM0NGVkIGxlZ2FjeS10cnVuaworMTc4NDEgZWNlNmMxOWVkY2MxNTViNGZmN2M0YmZlNjVlNzQyZGI1ODBiOWNmYiBsZWdhY3ktdHJ1bmsKKzE3ODQyIDNmYzZjNWFkZGYxZWMxYWMyNTYzZjBiZmM1OTQ0Nzg2N2U0Njc0MjMgbGVnYWN5LXRydW5rCisxNzg0NCBhOWQyNGE1M2M1NTMzNGRhMjJhYWJjYjA2N2UxNzJhNTczN2I5OGQ2IGxlZ2FjeS10cnVuaworMTc4NDUgYmJlMDljY2NiNDliZTA3MDRmMDgwMDYxZWY0YTNiODk5Y2EwM2RhMyBsZWdhY3ktdHJ1bmsKKzE3ODQ2IGU4NTc1NGZhNjkxNzRmYTcyZWM2MTRiMTcyYWNiYTA5YzUyZjAxYzkgbGVnYWN5LXRydW5rCisxNzg0NyAyYjQyMzY1ODBlMGM0ZmJhMGU2ZjZmODgzZWIxYWYxYzk1OGJjMDlmIGxlZ2FjeS10cnVuaworMTc4NDggYmI2Y2NhNTdlYjhiMGM5NGIxNjY5OWQ4Y2JlNDllNDZmNTI5YzNmZSBsZWdhY3ktdHJ1bmsKKzE3ODQ5IDVkNDFjYTQ5YTEwYWRjMmU4Y2IyZTk2OGZmMTI0OTRkOWRiNjdiZDggbGVnYWN5LXRydW5rCisxNzg1MCA0YzQ5MzRjYTg1Nzk2MjBlMjFiODMyN2MwZmMzMzI3MmNjZDQ3YTViIGxlZ2FjeS10cnVuaworMTc4NTEgZmE1YzQ4MjM2N2M3YWY1MDM4ZGViZWZmNmU3Yzg0N2QzZjc5MzJmNiBsZWdhY3ktdHJ1bmsKKzE3ODUyIDdmNGUyODA0NWRmYjQ1ODQxMjQ2MjU4MWU3NDhkYzY5YmI5NWQzNzkgbGVnYWN5LXRydW5rCisxNzg1MyBlZWMyZWIxMjFkYWUwY2MxZDBjODFmNDY5MzljNWYzOTA2NGE3ZDY2IGxlZ2FjeS10cnVuaworMTc4NTQgNWU0ZWVkMDYyYjU0YTllNmYyMzgwMDFjMjcwMmQ2NmEyZjk5NTI2ZCBsZWdhY3ktdHJ1bmsKKzE3ODU1IDBjNWIwMmNjNTQ4OTM5MmEyY2ZjYmY5MGIyNzlhNWFkMDQ0YTAzZmQgbGVnYWN5LXRydW5rCisxNzg1NiBjMTZiZGY1NTVjNzk3ODExMDg4Nzk2YzIyMWRmNzFjMGJlMjlmNzJjIGxlZ2FjeS10cnVuaworMTc4NTcgMWEzYjVjOGQ2NzMwZDk3OTczZDkwMmM4MDJkMDkzZWRjNmVmNmI1ZiBsZWdhY3ktdHJ1bmsKKzE3ODU4IDBhOTdmNWRkZTNhNzhkYzdjMzczOWJmODJjMzg4NDkzMjQ5OGNjOTQgbGVnYWN5LXRydW5rCisxNzg1OSBhMzQ5Yjg5YmYxMGVlNWQ1MWQ3YjJiMjQ0NzdiYTMwMzhhYWIxOTdiIGxlZ2FjeS10cnVuaworMTc4NjAgOWQ1MTQyYzhjZjJkZGRkOTczOGJkNGY0NTU2OGY3M2ZiY2M1NzlkZCBsZWdhY3ktdHJ1bmsKKzE3ODYxIDAwMzJkZmZlYjE2M2I0ZmFkODI1YTgyMTQzOTIzYWM0MTYwMDAzOGYgbGVnYWN5LXRydW5rCisxNzg2MiBkZGIyMDE5MDU5MWRiYmYxNmY1MjNlZjA1ZjhlNmU4NzVmZjkxMzc4IGxlZ2FjeS10cnVuaworMTc4NjMgMGNmNTExMWJmMDljYjFiZjE3MDUwZWZlZjIyOWFlZTE4ZDhjMGJmMCBsZWdhY3ktdHJ1bmsKKzE3ODY0IDhiNmZlNmI5OTdjMmRiN2I0YTM5MTJjZmZmODc1MzQ2ZmQzMzFhNzAgbGVnYWN5LXRydW5rCisxNzg2NSBjYjRiMmExNmViODcxMjU1OTg4ZWYxNjMwZGZlYzdlYWEzZGRmZjY4IGxlZ2FjeS10cnVuaworMTc4NjYgYWEwNTJhNTJlZjg3MTJmMDg1ZjZlZjU1ZGZmODVmNWNlYTFhODQzNyBsZWdhY3ktdHJ1bmsKKzE3ODY3IDk4NDdiNDg2ZDE1ZmJhODA5ZjQ3ZjMwNDBmYWE4NjhiM2E1MzBjOWYgbGVnYWN5LXRydW5rCisxNzg2OCBjNWNmNmZiYTU0ZGRiOGI3MzY2MjcyMzBmMGYzM2YxZTZjYWVkZmQzIGxlZ2FjeS10cnVuaworMTc4NjkgZGIzYTk1NzhhYjBiZWZjZWJjMzliNDc0ZWM3ZDJlNzBmMjNlZGUxMSBsZWdhY3ktdHJ1bmsKKzE3ODcwIDZjNTFiNWFmMWJkZTEzMDk2MjBlZWNhOTYzZGJiYzE2YzA1ZWE4ZTQgbGVnYWN5LXRydW5rCisxNzg3MSAyNWJjMTY5NTJhMjRlNTQ3N2I5Yjg0NDUyYzBiNzI4OGU4ZjJlMDNiIGxlZ2FjeS10cnVuaworMTc4NzIgYjBkMWRlYzIzNTNhNDExYWVjZDljYjMzMzQ5OGVkOTg1MGFiM2FjMiBsZWdhY3ktdHJ1bmsKKzE3ODczIGRhM2U4YzUwNjRjYWYzYmQyMmIxZDEzZGNmY2ZhN2U4ODk1MjAwYTEgbGVnYWN5LXRydW5rCisxNzg3NCBmYjdhYzhhNDBhOTdjMjRlMGRhM2MyN2E1YzU0NjFlZmY3ZThhYTc5IGxlZ2FjeS10cnVuaworMTc4NzUgYzI4NWRmMTVhMDUwMzgzMDE1OWRmZTRiNzBlOTJjMzQ1OGZiZWIzYiBsZWdhY3ktdHJ1bmsKKzE3ODc2IDk4YjFmYTZjMTYwMDBlN2E0ZjM1NDgxM2NjNzdjOTE4OGFjOTgzOGUgbGVnYWN5LXRydW5rCisxNzg3NyBhNmQzNWNjNGJmNWVlNWQ4MzIxNzRiYjA2YWQ0ZWVhMjY0NmRkNDA5IGxlZ2FjeS10cnVuaworMTc4NzggNDA1YWQwYTdmN2E2MTA5OWU3YmJkOGM1Nzg3ZDZhY2RiZjAyOTVhNiBsZWdhY3ktdHJ1bmsKKzE3ODc5IGYxMmQzNWY5OTQ4ODU1ZmMzNGM5NjU5N2Q0YmEzNGJmMjY5MjRjMjEgbGVnYWN5LXRydW5rCisxNzg4MCAzN2IxY2FlZWQ3MDU1N2E1OTA2MzMyZjYyZjFmNmVkNDU5ODJlMzBiIGxlZ2FjeS10cnVuaworMTc4ODEgZGI5MTM1ZjM4MDY4OWEyM2VhMDAyNDIzZjNlNTFlZmUzYmVjMWMwMiBsZWdhY3ktdHJ1bmsKKzE3ODgyIDBiYjM0ODk4NmQ1MjgxYjJlM2Q5NjY5Y2U3NTBiZTJjZWZjNTliOTYgbGVnYWN5LXRydW5rCisxNzg4MyAyOWMyZDVlNTIxNjEyYjgxMjNiNmM5NGYyMThjOGMzOTU0YTY3NWM1IGxlZ2FjeS10cnVuaworMTc4ODQgYjM2OGUwNmEzYjYyNzVlOTE0NjU2OTIyYTM2NzU3YzY1Y2U2MDQ3OCBsZWdhY3ktdHJ1bmsKKzE3ODg1IDVmZmE1MTVlNjIwZTRkNzY0NDg1NzM0MjQ1NmU4NmViNWQ0MmQ2ODUgbGVnYWN5LXRydW5rCisxNzg4NiAyNWYxMDkyZWNkODZkNTQ4MGYyODkyNDhlYjI0MzljYWVkZWUwNGM2IGxlZ2FjeS10cnVuaworMTc4ODcgNTJlYjQ5OWYyNWIwOWZkNTdiZTUwODdjMzI5ZGU3NmUwODIzNDZmNSBsZWdhY3ktdHJ1bmsKKzE3ODg4IDdhNWMzODU5YTM2MTM5OGZhMTYyY2ZhZjEzMGVmMDIxNmU0OTAyMTggbGVnYWN5LXRydW5rCisxNzg4OSA5YmM1MjcwNmQyODM0ZjdhOGM1Mzg2OWUzMjhhOWQ0ZTU3ODE4OTYxIGxlZ2FjeS10cnVuaworMTc4OTAgY2U1ZGZmMzBhOTM1ZDE5ZjE4ZWRlYjQyZTRjMTk3YmMzOWNiNzJmYiBsZWdhY3ktdHJ1bmsKKzE3ODkxIDZjOTFhMDQxYzFkMmIyYzk1ZmU2ZWZlZGJmMDYwNzlkNDJmNzU2NjMgbGVnYWN5LXRydW5rCisxNzg5MiA5NGMwMzFkN2U5YzJlODI4OWU0YTFiZjMzNDE2NjdhOTNlMmJhNjI5IGxlZ2FjeS10cnVuaworMTc4OTMgODk0ZGNhMjI1ZDI0YWVjMjg1OWNhZTlkMjVmYTNiYmEyYjU2NmE0NCBsZWdhY3ktdHJ1bmsKKzE3ODk0IDZlOWZmMDYwYTcyODgyOTlmOTk3ZTE3MjQzYmNkMjNlZGJmOWNhYzQgbGVnYWN5LXRydW5rCisxNzg5NSBjN2Q0NmVhZTk1ZDg5OGQ4ODA0OGExNGRmZGVlMGRjODAwZWM5YjIxIGxlZ2FjeS10cnVuaworMTc4OTYgZTk3MTNjYmUyYmE4ZDMwN2Q0OTcxZmY3OWMwNjc5ZWU0ZWMyYzM4YSBsZWdhY3ktdHJ1bmsKKzE3ODk3IDkyMWM3NDU5NzcxYjQxMmVjYTI0ZWZhODFjMzAwMGY1NmE4NGZkY2YgbGVnYWN5LXRydW5rCisxNzg5OCBkMTA2ZGZkZmY0ODBhZWJmMWEzNTljNjlhM2I5YjcyZGYyMjRkNGQ4IGxlZ2FjeS10cnVuaworMTc4OTkgN2VlZmRlOTBlYzBlZTRiNGNlMWY0OTA4NDM4MTUyZWM4MjhlODAzMSBsZWdhY3ktdHJ1bmsKKzE3OTAwIDI5M2NhZjBlNjMyYTE3NDQ4YjI2YzEzYjVhMWMxN2FhOWY3N2QxOGEgbGVnYWN5LXRydW5rCisxNzkwMSBjMGMyNTRmYmRlNTc2YmMwMTlkZGM4YzE1MTVhMzUyNDgyYmU0NGZlIGxlZ2FjeS10cnVuaworMTc5MDIgZGFlN2NlZjU4YWMyNmFkZGMyMTMwNTEwODVkNmFjZmJkODAwZWY1NiBsZWdhY3ktdHJ1bmsKKzE3OTAzIGM5MGMzYWFiZDhmNTAzNmE1ZjgxODdlMTcyMDUxZWQ0OGY0MzYyN2IgbGVnYWN5LXRydW5rCisxNzkwNCBjNjU0YjIwMTg0MDM5Yzg4YzVlNzA3MDBlYTNmMjZiODYyNjgwNmU5IGxlZ2FjeS10cnVuaworMTc5MDUgNDU3ZjBkZjQ2ZGQ5ODA1NWViOGVhZDAwMWU3YWY2MGVjM2Q2Zjg1NCBsZWdhY3ktdHJ1bmsKKzE3OTA2IDFkZDcyYTkyZTkyMmMzNWFkM2RjNWNmYWEyZmNlZTFhYWRjOTk4NmMgbGVnYWN5LXRydW5rCisxNzkwNyA0M2M0OWRiZDQ1NDZlOGVjYWQxNDkwYzFkMjIyODMyZjNhZDk1ODFkIGxlZ2FjeS10cnVuaworMTc5MDggNzhiY2FlNzdlOGM3MDNlODY2YmFhOTM0YmRkODhmZTI1NDZhYTdkMSBsZWdhY3ktdHJ1bmsKKzE3OTA5IGZjZjg1YzkwYTI3NDBiZmM2ZmJjMWI2NDE2MzI3NmVlZWY4NTNhNGEgbGVnYWN5LXRydW5rCisxNzkxMCAyNTU3OWNkNmNkZDkwMzgwN2ZlNDgyOThmOWFjODM4NzkxYzBlZDFhIGxlZ2FjeS10cnVuaworMTc5MTEgYmU0ZmM4YjZlMWNiODNhMDMwNjI4NmY4MWRjMTgzY2ExZGUzZjljNCBsZWdhY3ktdHJ1bmsKKzE3OTEyIDA4ZTZmMTAxOTE3MTQ5OGIwNGI3ODAzZjQ5MjNmMTZjYTQyNDk4MmEgbGVnYWN5LXRydW5rCisxNzkxMyA2MjdmZjU3OGYxMmY4Zjg1MTkyZjE3MzJiOTRiNDY5ZTU2OTkwNTU0IGxlZ2FjeS10cnVuaworMTc5MTQgNDFiZmM5YTQwZmUzOTQ5NmI4MzRkMjM1NTlkNmM4MThlZGU4ZjgzMCBsZWdhY3ktdHJ1bmsKKzE3OTE1IGJmMjdjYWJhM2QwZTQwOTIzMTg1OThjNDMzZDM3NTQ0MmVmOWVhOTYgbGVnYWN5LXRydW5rCisxNzkxNiAzYTA0YmViYjY2NmFlYjBlMGJjZThmZGNmMTBlNzk1NGIwYTM0Yzg0IGxlZ2FjeS10cnVuaworMTc5MTcgYWNiODg2MDdiNGJkN2U4YmMwZGU0MmE0ZjlmYmNiZTJkN2EwZTI5NiBsZWdhY3ktdHJ1bmsKKzE3OTE4IDE3N2FlMWM1MjAzNzY1MDIwNmFjZGI1N2UzNDEzNGM5OTYwNzRiN2IgbGVnYWN5LXRydW5rCisxNzkxOSAxMDM2MTI1MTZhYThkMzVmY2RkZWEwZmRjZDk5OWVjN2Q4ZDkwNDYxIGxlZ2FjeS10cnVuaworMTc5MjAgNjc1NzQ4Mzc4YzgxOTlkOTc0OWI1NGE4OTFjZWY3MTdkMjZmM2NlMSBsZWdhY3ktdHJ1bmsKKzE3OTIxIGY3ODA0NjlhOTU3N2Y5NWM4Yzk3NWYxMjE0YzAzMGU5ODg2OTIxZmEgbGVnYWN5LXRydW5rCisxNzkyMiBjMDU4YmMzNTY0MGY3OGFlODg0MGRiNjEyZjJhOWJiOTNiZWQ4N2NhIGxlZ2FjeS10cnVuaworMTc5MjMgMTE4YWM4NWFmMzBhMDVjNGJjMTIxNzFhY2I2Y2Q4ZDM0MjgxYzhmYyBsZWdhY3ktdHJ1bmsKKzE3OTI0IDE4NzlhNDhhMzEzMzZhNGViNGNkMjVlZDc5MWFhNDMwMTQ2NWVlOGIgbGVnYWN5LXRydW5rCisxNzkyNSA2OTBiNDFkNDdjMWQ2YWQ1NjU4NmZkYTY2ODljOTNiMDIwMDJmYzQyIGxlZ2FjeS10cnVuaworMTc5MjYgYTUzZjE2YjIwZjFkOTFiZDlkYjAzMzM1Yjg5MDk2ZGRlMWEzMTg0NSBsZWdhY3ktdHJ1bmsKKzE3OTI3IDU3ZmVhODcwOTc1OGYxZjM3ZmY4MGIxNGJhODE4NDQyZjM1YzZiNjMgbGVnYWN5LXRydW5rCisxNzkyOCA3MWE0YWFkZGUwMTk4Yjg2NmE0NjA2ZjFjNzNhNjFmNTU3MmU3YTcwIGxlZ2FjeS10cnVuaworMTc5MjkgNjNkMjM3YTI1ZjQ5MWUyNjhlY2FlNzYyNGQ4NDljNmQ4OGUyNTI0OSBsZWdhY3ktdHJ1bmsKKzE3OTMwIGIyNWVhYmY2NmQ4ZDM3NWM0NTU1MjgyM2I1MWI3NTY0ODg2NDU4NTcgbGVnYWN5LXRydW5rCisxNzkzMSA3Y2U5MDYxZjc5NjdmZmM3MzI1MjU5NTVkM2E0N2VjZmY5ZmUxMTU1IGxlZ2FjeS10cnVuaworMTc5MzIgNzdkMWQ3OWE2NWQ3NWU4NGE4NDc3M2MzN2Q4MWMzMmY1MGZmZmVhNyBsZWdhY3ktdHJ1bmsKKzE3OTMzIDMxNDIwMjdiNTk3OWRhZWFiZDUyNjE3NTE1ZjQxODRiOTE1NzZhMjYgbGVnYWN5LXRydW5rCisxNzkzNCBhZDhlZjE1NWNhMzkwZThhNjgxMDIyYWUzMTFkNDMzOGQ4YmFhYjFiIGxlZ2FjeS10cnVuaworMTc5MzUgZGM0Y2FlZGM1OTYxMWIxNzFiMTQ5NzhjMTZhNmFmMWRiNzA2MjY0MSBsZWdhY3ktdHJ1bmsKKzE3OTM2IDQ3ZTY4MDc3MTE3ZTQyMTE1MDlkYzI4M2EzZTc2N2ExMjM4ZTVmNTAgbGVnYWN5LXRydW5rCisxNzkzNyBjZGZlYzM2ZjEyY2M5ZmExYjhlOWRhNWVhYTU2MGE4NjU3OTJlOWJkIGxlZ2FjeS10cnVuaworMTc5MzggMGUwZWE1NmU0YmU4NGMwNDg4MjBiMTAyODY1YzJhMDZmZGZhYmZjNSBsZWdhY3ktdHJ1bmsKKzE3OTM5IGExMTllMGM4YjgwYjBlNGQxOTYzYmIzMzRjNjNlYTM4MmI3YmIyOTAgbGVnYWN5LXRydW5rCisxNzk0MCBjMmYxM2MzOTViOWFlN2Y4ODVmYzQ3YTgxNmFhYjA2ZjMyODhlMWUxIGxlZ2FjeS10cnVuaworMTc5NDEgMDJhZDljYjUyMjIyNzgzMDZhNTdkODczN2JkZDkyYzVlOGJjMWRmYSBsZWdhY3ktdHJ1bmsKKzE3OTQyIDliZTY3YzVhODIzYWIxZGExYzkzMjBhNjExYWNjNTFlM2U3MzM0NmYgbGVnYWN5LXRydW5rCisxNzk0MyBmOWQ0YmQ3OWI0NjQ4MGMxNGFjNGFkN2EyNzcyMzBlMTE0YTNhYzIwIGxlZ2FjeS10cnVuaworMTc5NDQgZjA5YTg0YWY2NGJkODYzMjAxYmNiNjVmZmViZjYwOWQ2Y2QxYTEzNiBsZWdhY3ktdHJ1bmsKKzE3OTQ1IGExM2EyYWNiZTIxNGVmOGZjMDZiYTM1ZTM4MDBhM2VjYzM0YjE1OWYgbGVnYWN5LXRydW5rCisxNzk0NiAxYTZmOTE1ODYzMGYxZDZlZmE5NWJlZDg3MGIwOTA2ZTQwNWJhYTUyIGxlZ2FjeS10cnVuaworMTc5NDcgZDBhNmQ0NDRkNmJjNzdiMTZkODY2MzdiMzZiYTFlNWZiYjY1MmE4YyBsZWdhY3ktdHJ1bmsKKzE3OTQ4IDVkYTk2MjJmZWQ3YjU0NzRiNWRjNGU5MWJjN2I1ZTI4N2M0N2MwY2QgbGVnYWN5LXRydW5rCisxNzk0OSA0MWM0MmIxYmQ1ODI4Yjk0ODg4MGM5NWNlNzdkYjI2MDRjMGFiNjdhIGxlZ2FjeS10cnVuaworMTc5NTAgNDRmYTE2ZjAxYjRlMTIyOWFjYzNkMjQ1NmVjNjdjNjY0ODk2YTZlYyBsZWdhY3ktdHJ1bmsKKzE3OTUxIDFiMzRjNDc1ZGE4N2ZhZTNlYThkNWE1NDY2NDcxM2VhZmQ3Mzg3NmIgbGVnYWN5LXRydW5rCisxNzk1MiBlYzFmMjM2NWJjMmQ1N2IxMWU2MGMyNTU1ZGU3MmQ3NzdhZTYwNjFhIGxlZ2FjeS10cnVuaworMTc5NTMgYzE5OTQ2MGNjZGU5MDY2MDNjOTMyNmI4MDM4MTYwODUxODkxNjM5MiBsZWdhY3ktdHJ1bmsKKzE3OTU0IDk1YmU0M2QxZDMzMjY1NzE5MzZlZGU1OTc0YTkwZWUyMDc1MWE2NmUgbGVnYWN5LXRydW5rCisxNzk1NSA1ZmI4ZGMyODk4MTJkZjllYjRkNjQ2MjAwOThlODRkMjMzMGQyMDMzIGxlZ2FjeS10cnVuaworMTc5NTYgN2RlMDgwOGYxZmUzMjA3ZGJjNjVhMTEwZjBjNjA0NjQzZTJiZWZmMyBsZWdhY3ktdHJ1bmsKKzE3OTU3IDFhY2FjNDc1NmEwM2JlYmE0MGZmYmQyNDc3MGQ4MDBhMDRhZjdmODEgbGVnYWN5LXRydW5rCisxNzk1OCBmOGU5NjI1MDYwNjNkZGFmNTA4MGQxMzY4NjU4MTc3ZTQ0M2UyOWI1IGxlZ2FjeS10cnVuaworMTc5NTkgYTAyZjlkYWMyMTZjZDk4OTQyNGZmMDljZDljMzNmYjNjZjQ2ZjdiMCBsZWdhY3ktdHJ1bmsKKzE3OTYwIDhiZmE5NzAzYTRlNGY0MDM3MGU1ZTlhNGNjNDc0YmI2ODNjYmQwNDAgbGVnYWN5LXRydW5rCisxNzk2MSBhNWE5Y2ZjMDA5YjViM2MwYWI4YjNlZGE5MTRkYjI3YjFkYzY0M2ExIGxlZ2FjeS10cnVuaworMTc5NjIgMjkwMDQ1MjAyNmNjZDVlZTIyMjVkZDg3ZDhmMWRlODJiYmY0ZjhjZSBsZWdhY3ktdHJ1bmsKKzE3OTYzIGY3NmExZWNkNmI1OTE2YWZlMGY1NjU2ZTY2ODUyNDU4OGQxYWY2YTggbGVnYWN5LXRydW5rCisxNzk2NCA2NjYwOTFmMGQ3MTQ0NzFhZWQ1NWQ4NzdlMzM4OTU2MDU5NmI0Yjc3IGxlZ2FjeS10cnVuaworMTc5NjUgZDJjMTdhZGYyZjBjNDU1Njk1MmJhNzQ0MGQ5M2U3NWVjZDViMDgwMCBsZWdhY3ktdHJ1bmsKKzE3OTY2IGNlMDY2Nzk5MTMzZWE0NzUwNTVmMTNlM2RlMDdkZTc2MDNhMmVjODkgbGVnYWN5LXRydW5rCisxNzk2NyAzMDgxZDcwMWJlODYxNWYzMmM5YTg5MTAyNzBkMmRkMWUxYjQwNjEzIGxlZ2FjeS10cnVuaworMTc5NjggMTU0YjcxZTE2NTY1MDNhNjllOGIxM2VhOWYyZGY1ZjcxMDVmNjNjYyBsZWdhY3ktdHJ1bmsKKzE3OTY5IGE4MDU0MTI0NWI2NjMyMDBkMWUyYzhjMTg0YmU4NmExY2E3ZThiYzYgbGVnYWN5LXRydW5rCisxNzk3MCBlOTZkNjY0ZGUyNTZhY2I5ZGVkODYwNzEzNmIyYmZiYmQ0M2RiZjlhIGxlZ2FjeS10cnVuaworMTc5NzEgYzZkOWFmYTZlNmEwNWM1ZTdiMzg0ZDgyZGQyOTU2ZTBjNDY2MmE0YSBsZWdhY3ktdHJ1bmsKKzE3OTcyIGZjNjg2ZGU4NjA1OWI4NDU2MGYxNGE4N2I5YmM0ODJkMWQ0MDJlNTcgbGVnYWN5LXRydW5rCisxNzk3MyA0ZTFlOWY1YzA3OTUwNjhlNDNkMmFlOGYyZWFlOWRmMDNmYzYzOTc0IGxlZ2FjeS10cnVuaworMTc5NzQgMWNkMDI4NWUzY2ZlZDg3YzIxODg3OGU2YmQ3ZmQ3MjA2NTljMjdkNCBsZWdhY3ktdHJ1bmsKKzE3OTc1IGQxNmI3NDEzZGM2OTZkZjc0ZmY5ZWNjYTRjMmIyYTc0NzYzZjc3ODMgbGVnYWN5LXRydW5rCisxNzk3NiA2NmQyNDgzMjg5NjcyZDc1ZTJjOGQzYmRjZDg5MzViOGJkMmQ2NjM2IGxlZ2FjeS10cnVuaworMTc5NzcgYTM1OGJhNzA3ZTRkMzUxZTU0NWQ0YjQ5ZWI0Y2E1ZTJlOWIwZmI1OSBsZWdhY3ktdHJ1bmsKKzE3OTc4IDBjMGU5MDliOGVkMjNhZDQwZDZiOGQyYTkyYzljYmQ5YjQ3ODY3NTUgbGVnYWN5LXRydW5rCisxNzk3OSA3ZDBhZjRlODEzZDg1ZGVlYWJmYTg5OWQzM2JkNDE3ZTc5MzVlMjUwIGxlZ2FjeS10cnVuaworMTc5ODAgZWYxZjQ3M2FhZWViZWIzZjJlNjRjYjQyZjg3ZGY5NmM1NDg5NmMyNCBsZWdhY3ktdHJ1bmsKKzE3OTgxIDMyYjhjNWE0ODBhZGUzNWNkYjU1ZmI1YjM2OTNmZDJmYWI4ZGQyNmUgbGVnYWN5LXRydW5rCisxNzk4MiAzYWU5ZDMxM2JjMzNlMGI0ZmE1ZmFlNjU1YTczMjNiMzhjMjQyYzY2IGxlZ2FjeS10cnVuaworMTc5ODMgNjgwMzQyOTI1MGU5YmQwOGZjNzUwYTkxODI2MzYzZGIwY2EyNThhMiBsZWdhY3ktdHJ1bmsKKzE3OTg0IGY3NzE0NTNjM2FmNTg4NjQ4ODJmYzMzOTczZDVhOWQwZjg1Y2NjNWMgbGVnYWN5LXRydW5rCisxNzk4NSBlYmEzMjNkNzQwN2ZhMTM2ZWIyZjI0ZDM2MzAyMzMzMGQxOGQ4N2ExIGxlZ2FjeS10cnVuaworMTc5ODYgY2YyNjYxYTQ1OThlYmIyN2M2N2U5ZDgyNjExZGE4MmJjMzkxNzQ3MyBsZWdhY3ktdHJ1bmsKKzE3OTg3IDdlNmU0MGU0MWM2ZTRhN2MzNjQ1NDUxM2U5MDVlMmI1ZTk0ZmIxYjggbGVnYWN5LXRydW5rCisxNzk4OCBiMzkxNzk0MGUxZmExYzFhMDRhNjlmMWI5NTI0YWUwZjdlZWUwZWFhIGxlZ2FjeS10cnVuaworMTc5ODkgMzRhNmUzZWFkMWMwNDg1NTcwZjIyZmI0MTU4MjM4NzA4NTJhNGIwZCBsZWdhY3ktdHJ1bmsKKzE3OTkwIDA1Njg2Zjk3ZjM4ZDI0NmRkMzQ1ZmVhYmJjOGUzNjUyNTJkMWM5ZmQgbGVnYWN5LXRydW5rCisxNzk5MSBhNWMzNDY5MjE4ZTljNDU0Y2I1YWUyNGRiNjZjZDZiYmRjYzI1ZTkzIGxlZ2FjeS10cnVuaworMTc5OTIgOWFkMDc2NGYyZTg0MWIxNjU5YmU3NjcxNzJmNDA4M2QyZjg0MDdiZSBsZWdhY3ktdHJ1bmsKKzE3OTkzIDkxMjAxZGUyNWYzNmQ2NDkwMjg0MDdlNGRkNThiYzA0MDA0YzhhZDAgbGVnYWN5LXRydW5rCisxNzk5MyBlMjc2MzI5Y2NlMDM2YTVmOWU5ZDM0NTEyNTZkY2E1OTg0ZTU0M2RjIGxlZ2FjeS10cnVuaworMTc5OTUgZGE5MDY3YmM5NDk0MjhmNmQ4ODQ4YmQ1MTYyNGNiY2RiOTdlZTJkOSBsZWdhY3ktdHJ1bmsKKzE3OTk2IDU3MTkyZjBhYzEzYTdkNmZkZjkzZjU2YTgxNjAyODA1ZjU4MzU3NzcgbGVnYWN5LXRydW5rCisxNzk5NyBkZDQ5ZjI5ZDk4Nzk1ZTI1ZDEzNDI2YmMzN2UzMDIzNDZiN2VjNmNjIGxlZ2FjeS10cnVuaworMTc5OTggZmI5OTU4OTMzYjI1OGI1ODM2ZWEzN2NhNjYxNDZjZTczMTcyZjllMyBsZWdhY3ktdHJ1bmsKKzE3OTk5IDQzMzE4NzQ2NjkwMTY5ZDJiNDk1NDQyNTU3OGNlMjVlYjMxYmEzYmEgbGVnYWN5LXRydW5rCisxODAwMCA1NjNkZWU1OThkM2E5ZjQ2M2QzODM2NDQyN2ZkM2RlOWVhODQzZWNiIGxlZ2FjeS10cnVuaworMTgwMDEgNzRjMDIwYWRkODQ2ZWM0YjY2YTIwYzliODI5YzYwYWIxZWMzYTQ0MCBsZWdhY3ktdHJ1bmsKKzE4MDAyIDZiMDFmYzIyZWY2ZWY4ZWQzZGZlMzk5OGM5MDk1MGI4ZTA4ZjFjODQgbGVnYWN5LXRydW5rCisxODAwMyBhMTliMWQ2YTU5Y2UxYzY4ZTYyYWJiM2M2NWI1NTA4ZTBjNDVlYzVhIGxlZ2FjeS10cnVuaworMTgwMDQgNWNmMGEwMmE1NzRiMTE5OTliY2UzYzczNzhlYWI1ZGU3NGQ5NmM3ZCBsZWdhY3ktdHJ1bmsKKzE4MDA1IDVlNWI0MzExOGM1MmRhNmZjNmJjOWJlZTQ3YjAyNGM1MjMwMWQ3NWQgbGVnYWN5LXRydW5rCisxODAwNiBhMmZjYzQ4N2I5ZGExODU4NzZmZDdlOWNlMDMxYWViMTViNmJkMzkzIGxlZ2FjeS10cnVuaworMTgwMDcgZmRjMmFiZGY0Nzc3ZWJkMmY4ZDlkZDMzYTZmOWZjOThkY2UwZWU3YiBsZWdhY3ktdHJ1bmsKKzE4MDA4IDQ4NmYzZmYxNGQ5NWFjOTc4MmE1M2NlYmUxOWIzNWZlYTJlZjFkZjkgbGVnYWN5LXRydW5rCisxODAwOSBjYTlmNmE4ZTk4ODU3MTNiYzdkODE5OGY2MDJhYzNkMTI1ZjNmOGFkIGxlZ2FjeS10cnVuaworMTgwMTAgZWQ0OWE2Nzg2OWU5YzIwZjRiNmMzZTQ5OWNmNjY2M2M3ZGQwYjlhNCBsZWdhY3ktdHJ1bmsKKzE4MDExIGUxN2Q4Y2QwOTY4OWYwMWFiN2NhYWMyZGY2YjQ2M2YwODdmNGU2MzUgbGVnYWN5LXRydW5rCisxODAxMiAxNzMwNTkxZDVkNWRhOGEyNTNhYmUzY2MwZjc3OTZkMDA2ZGE4MGQ4IGxlZ2FjeS10cnVuaworMTgwMTMgNzRmMTY1ZGMwYjVhZTdiNWFiZjIwNDAwYTQyZjUzM2NjYWRkNTU5NiBsZWdhY3ktdHJ1bmsKKzE4MDE0IGJlY2Q4YTEyMTQ2NGYzNmE0YWE5ZGJkMjdhNjc0ZThhNzdjMzY3NjQgbGVnYWN5LXRydW5rCisxODAxNSA0NTkyMzJhOWI4MDRjMGEwY2Y2NDk1N2M5MjNhZTk2MTdiODI2NDQ5IGxlZ2FjeS10cnVuaworMTgwMTYgN2IwN2Q2MmQyYzc5NjFkNDU0ZjZkZTA3ODczNDRjMWYzMjBlNGZlNSBsZWdhY3ktdHJ1bmsKKzE4MDE3IGU3MTk3MWE0MDJkMzE5YWVmYzRlM2NhYjJlYzdhMjc2NGI5M2U2OWYgbGVnYWN5LXRydW5rCisxODAxOCAzYzIxMDY0ZTgyMTRjMjdkZGVlNjIxNmEyODAzNDJjNTFiMmNiNzRiIGxlZ2FjeS10cnVuaworMTgwMTkgMDA3YTkxZDc3NzAzZmViNmJjMmE1NjRkMjMwMGEzM2I1Njk0ZjY1NCBsZWdhY3ktdHJ1bmsKKzE4MDIwIGIwNzUzNTk4MDMwMTY1NDBjZmI5NDI3Nzg0OGVhYzA1NTAxYjA0YzQgbGVnYWN5LXRydW5rCisxODAyMSBhODAwNmJiYjYyMjU3NzljM2EwZDdlYmE4MGZlODg5NzUwYWM4YTE4IGxlZ2FjeS10cnVuaworMTgwMjIgODkzMGVjM2JjMDBhOTFiNzIyYTI3ZmM0ZmNiZDI4OGExZmNlNzUwNyBsZWdhY3ktdHJ1bmsKKzE4MDIzIDI1Nzc1MTlkNWVhMTM5NzQ2YTZlMjk3MGQwNGUzN2YyOGYwOGQ0MzggbGVnYWN5LXRydW5rCisxODAyNCBlNjFlNjRkMWI1ZWMzYjgxYzc0MjI4Mzg4OGZiZGJjYmRkZmMyZDI5IGxlZ2FjeS10cnVuaworMTgwMjUgZTU4MmY1NzM0M2Y0ZDVjODM3NDNkZWNiN2JhODA0MWZkMzJiZGJjMiBsZWdhY3ktdHJ1bmsKKzE4MDI2IDJlZGYzNjZmNTYzYzhkYjY4NzZiMjEzYTgwMTQwYzkwOTc4MDhiYTYgbGVnYWN5LXRydW5rCisxODAyNyBmNjEwMmM1ZDNmOWMyYzMyZDk5OWZiMzhkZjU1ZjkzMTI0NTE2MjU2IGxlZ2FjeS10cnVuaworMTgwMjggMDljN2FjMTg4Y2UyMTc4Yjg3YjA2NTA0YjBlNGZlNTViM2JjNGRiOSBsZWdhY3ktdHJ1bmsKKzE4MDI5IDg1YTAyY2MzNzU5MGE2ZjQ5MGRkODhjYmQ5ODg2MDY4OTQ2NWI4ZGYgbGVnYWN5LXRydW5rCisxODAzMCBkMmY0ZDc0OGM5MjFlYmRiMDkwZjMyNzhkY2ExNmI4NGY0ODVlZjlmIGxlZ2FjeS10cnVuaworMTgwMzEgNzQ0YWEwNjJmNDcwMWE0MTU0MGRkNDY4MjdhY2U1YzJhYWU5MGI4MCBsZWdhY3ktdHJ1bmsKKzE4MDMyIDNlYjg2ODdjOThjNmY3YzJjNGNjNzkxMjk1YjVjY2E3YzVmMzdiNTUgbGVnYWN5LXRydW5rCisxODAzMyBhYjFmOTBkZDUwMmY4YWE4NTkyMDM3ZGI2Nzc0M2RjZjJjNWVkNzQ0IGxlZ2FjeS10cnVuaworMTgwMzQgZTc4MjNmMGNhMjFhMDYxMmFhMDU5OWRjYzg1MTY1YzNkNTY2NTQ3OSBsZWdhY3ktdHJ1bmsKKzE4MDM1IDUyZDJkMzZiOGJmN2Y3ODU2ZWVjNzY1MjMyNjg4NGUwZDVjMzRlMGUgbGVnYWN5LXRydW5rCisxODAzNiAxYjczYjM1MTRiNTg1NWQ1ZWQ0N2I3MjM4NWIyMzk1NzVkZTAyYWRhIGxlZ2FjeS10cnVuaworMTgwMzcgMDE1ZGExM2YwMDM4YzE2NmYwZTQ2ZWI3NGMxNjliOWY2MDkxNzI4NCBsZWdhY3ktdHJ1bmsKKzE4MDM4IDU0MjczODU4ZWFkOWM2MjUxMDU0ZTk1NDc3YWE1NDc5NjdiMzJiOTkgbGVnYWN5LXRydW5rCisxODAzOSAyZWQzNTg0NDZmMmZlMzM5MDIzOTFlOGY0ODIzNTlmZDIxMWU4ZmUxIGxlZ2FjeS10cnVuaworMTgwNDAgYjMzODdlZWJhNjhkZmU0Y2E5OGQ1ZjkyYWQyZDRlMjBmMzQwZjVlMiBsZWdhY3ktdHJ1bmsKKzE4MDQxIDRkMjE4NzI2NGNmYTdhZDExMzAwY2U5ZWQ4MjUzM2QwOTFlMGFjMGMgbGVnYWN5LXRydW5rCisxODA0MiA5ZTllZTNjNWE2MDc4ZjNhZWZiMTNhNTllNGNhZGJmMTYxYWU5MGYzIGxlZ2FjeS10cnVuaworMTgwNDMgMTAwYmVlYmRlOWRmZjU0ZDQ4YjQ1MDU1NzEyMWEyMTFiNDdkYWUyZSBsZWdhY3ktdHJ1bmsKKzE4MDQ0IGIyODkyY2JjNjNkYjczNDQxODBjYjUyNzAyNTkyZWQ1NmI3OTk1M2YgbGVnYWN5LXRydW5rCisxODA0NSA1YWE4YzVhYWZmYWRkNjQyNDVkNDA5NzM5NjcwYTY2MTE2ZDk3YTI4IGxlZ2FjeS10cnVuaworMTgwNDYgZjA0NGIwNmUzMTdkYWEyNDAyZDM3OWY2NDg0YzdmMTQ5MGQ1YThmMCBsZWdhY3ktdHJ1bmsKKzE4MDQ3IDMxOWM2ZTM3MTgyNTFjOTgzNTM0MzYxMWZkMjczMjgwZjQwZmMxM2IgbGVnYWN5LXRydW5rCisxODA0OCA2NTZkNDM0Mzg4YzhlMjI4MzAyMmFjMTRkOTZkNGNiNTIyYzQyYzRhIGxlZ2FjeS10cnVuaworMTgwNDkgZGI0ZDgwYTY3Mzg5YTIwNjFkMWExYTNkZTIzMDhjMzQwMDEwZmMwNCBsZWdhY3ktdHJ1bmsKKzE4MDUwIDFjNjNlMjI0ZjYxNjY0MGM2OGVhNDY1OWM1YmQ4N2U4NDRlN2FhYjEgbGVnYWN5LXRydW5rCisxODA1MSBlM2Q4MzY1ZWEyMzE1MTI2ZTgwM2Q0OTJkN2Y5ZDhhNzAxYjU4ODlmIGxlZ2FjeS10cnVuaworMTgwNTIgYWYwMmFjNTgwMDI4YzllNWQxYzA5MmYyMDM1MmY1Y2FjNGEyZmJlYyBsZWdhY3ktdHJ1bmsKKzE4MDUzIDM3NDNhNmRiYzRhNzcyYjViMDhiZGNkMTEyYjM4Mjc1Zjg2ZDYwOTMgbGVnYWN5LXRydW5rCisxODA1NCA0OGNjNzdiNjNhZDVkZjVkZWMwYzNiMDU5NzgyNjkxMTMxNmM0ZjNlIGxlZ2FjeS10cnVuaworMTgwNTUgMjNiZjMwODU4ZWY0NTMxZWYxNDI2MmY5MDYxZTM4ZTYxN2E1MzQzYyBsZWdhY3ktdHJ1bmsKKzE4MDU2IGQ0NjlkMTU3MjNkMzVmMDUyZmZiNjRjMDRjZGZiYjRlMjA0ZjJjYjAgbGVnYWN5LXRydW5rCisxODA1NyA3N2VhOGZjZWYyNGNiMzU1YjBiZTFmZDY4MjA4MzVlM2YxYjE4NDM2IGxlZ2FjeS10cnVuaworMTgwNTggYzUwYjc4NmViYzQ4NGIyNGZiOTA3YmYyMDFkODdhOTlhZjUzYmI0NSBsZWdhY3ktdHJ1bmsKKzE4MDU5IDRlZWIwMjgxN2I1ZDgwZTQxM2I3YTZlYWRjNWIzZTVjZmJmMjdhZWQgbGVnYWN5LXRydW5rCisxODA2MCA5YjdkZGQ5Y2FlMzNlMjc3MWU4ZDI3MmU2MzQyNTk4OTYxZWI5MzRmIGxlZ2FjeS10cnVuaworMTgwNjEgNjQxN2NlOTE0ZGFlODdlZGQyODQ5MTQ4YWQxZjZiNDIwOTllNDBiNyBsZWdhY3ktdHJ1bmsKKzE4MDYyIGUwYTU4MzVhZjgzMzUwYTA3ODYwYWI3ZTFhNzlmOTVmNDlkMDhiN2QgbGVnYWN5LXRydW5rCisxODA2MyAwNGU3NmUwOGUxMGZmNDFmZTJhZWM4YTU2YmVhZTZmZGEzNTFkYmFhIGxlZ2FjeS10cnVuaworMTgwNjQgYzk0ZjFjNzc2MTUzNmVhNzA2MzE2NzFmYzBjZTM5YzFlMTA0ZGRmNSBsZWdhY3ktdHJ1bmsKKzE4MDY1IDcwMWE1NjFiZGVmYTgxNjQ4NjRjYWE5MjgyYTRhYjJlNWE4NWJhYWQgbGVnYWN5LXRydW5rCisxODA2NiA3ODM5NjdiMTY4NzlhOGE4NGJlNThiMTkyZmUxNmI5N2FlOTIyYTU5IGxlZ2FjeS10cnVuaworMTgwNjcgOWYzMDc3NTA2ZDFhMTZiYTQ4N2JjNTEwYjA3ZmYwMWExNmQ4ZGNiZCBsZWdhY3ktdHJ1bmsKKzE4MDY4IGQyYzIwNWMzNmQ4YTQxOGY3MGRjOTExZjA4ZjkzYjQ0NGJkMzRiNjMgbGVnYWN5LXRydW5rCisxODA2OSBlNGM5YjgwNWYzOWZiZDc4M2EwOTI1MGExMDlkYzE3N2IzMzdkMTM2IGxlZ2FjeS10cnVuaworMTgwNzAgNTBhODg4ZWM1N2MxMjcxMWZkNTExYTI5M2NlMDUzNjU5MTIwY2FiZCBsZWdhY3ktdHJ1bmsKKzE4MDcxIDg4MmNlZmUyMWRjMzY4MTg1ZDdmZmQ3OTA5ODYzY2IwNjc1ODI3ZTggbGVnYWN5LXRydW5rCisxODA3MiA3ZDQ1MjQ5YjE0NzdkOWM3OGI5NTRmYTM5NDAzNTk2YjQ1YmMwN2ZiIGxlZ2FjeS10cnVuaworMTgwNzMgOTU5ODY1MGYyYmM5MDIzMjBiN2U5MjBjZWM4MmM2MGZkNDhkMDMxYiBsZWdhY3ktdHJ1bmsKKzE4MDc0IGEzOTc1ZDI4MTFmMDA4OWY1MmRhMmNlM2M1ODZhYTdlN2I2Y2E4OGMgbGVnYWN5LXRydW5rCisxODA3NSBhODJlNGMyOTViOTMwMGQzMDhiMjZkMTRiZjQyMDliYjFmMzA3ODU4IGxlZ2FjeS10cnVuaworMTgwNzYgNWI1NjU0Y2E3NTU1Yjk4YjBlMmI0MWNmNjYxMTA5ZDYwM2U0M2NjMiBsZWdhY3ktdHJ1bmsKKzE4MDc3IDk5ZjM4Yzc1NWFiZWJhNDU1MDEwOThmNmEyYWI0MDU2NjM1OTAxZTcgbGVnYWN5LXRydW5rCisxODA3OCAzZTcwMTZjNzlkYWEwZTdhZmNkM2U0NTJmZGYyZGY3MDBjNWUzM2M3IGxlZ2FjeS10cnVuaworMTgwNzkgZDdjOTNhNzhjOTQ5MjhhZmI5YzI4YzNiNDRhYjlmMTdmODkyZTA0NSBsZWdhY3ktdHJ1bmsKKzE4MDgwIDNkOTBlMWQ3NjA1ZjcxMjcyM2M0YjRkNmJjZTMwYmVjYzRiMjQwZDIgbGVnYWN5LXRydW5rCisxODA4MSBlNDcwYTk2MThjYTcyYWJhMzU4NmQxNGEzNGEzZDIzNDYxNDI3MGZkIGxlZ2FjeS10cnVuaworMTgwODIgN2U5MmI3YTUwNTdjNTEwZjFkM2JlZTI3OTJlMzQzZGYwM2FjZDdlNCBsZWdhY3ktdHJ1bmsKKzE4MDgzIDQ4NmEzMWQ4YTNiMzVjNWY5MWZlMTcyN2M1NDNjOGZhNzZjMDYzZjUgbGVnYWN5LXRydW5rCisxODA4NCA0ODdiMzUwMmE0NWIzMTBmY2RhNzBhYTA5ZmRiMmQ2NThjZDVkMWFkIGxlZ2FjeS10cnVuaworMTgwODUgZjc5MjgyMGYzY2Q0YmVmNTYwNTNjYWRmZThlNGRlNWQwMTI2NDVhZCBsZWdhY3ktdHJ1bmsKKzE4MDg2IGQyYjljYzQ0MGI4ZGQ0MmUwMzE1ZjJiOGQzMjYxZjMxMGM3YTBiMDEgbGVnYWN5LXRydW5rCisxODA4NyBiZDg4ZGYyMGRhMmY1OWFiNGVkZGQ1OTJhMzk1Mzc2MDI0MGNhNTkxIGxlZ2FjeS10cnVuaworMTgwODggMTBiM2NiZGJkZmQ5ZmQ5MTk1ZjVmNTQwMjNhMmQ0M2Y3MDEzMjA5NyBsZWdhY3ktdHJ1bmsKKzE4MDg5IDM4Yzc5NWFmYjNiODA1M2ViNmE4ZDJhY2RmNmU4N2I2OWI2ZDJhZDMgbGVnYWN5LXRydW5rCisxODA5MCA4NjRmMTcxNGFmMjg3MWIzMDdjZTQzNzFmOTZhOWFhNTZjMDRjYmRmIGxlZ2FjeS10cnVuaworMTgwOTEgMDM3MjBhMjZjZmU3MzY1NDdmODY3ZjQ3ODEzODhkMDJiN2NkZGRiZSBsZWdhY3ktdHJ1bmsKKzE4MDkyIDhmZTJhNzk4MWQ3MGIzMmE5OGRiYTY0MGE2NDQyMDYyZjA5MDdlZDEgbGVnYWN5LXRydW5rCisxODA5MyBjOTRjMmFlNzQ2ZjFjYjNhNjQyYTVmZDE0YTgzMDNjMGE3ZWJlNTlkIGxlZ2FjeS10cnVuaworMTgwOTQgZjFhZGU4YWIxODY5NTUzN2NjZWM5MGY3Y2UzM2E4NmQ2NjU2OTU1NyBsZWdhY3ktdHJ1bmsKKzE4MDk1IDc1YmZiZTM3YWI3YTZjMDkwMzRiZmE3YzBhMDZlYjc2Yzc0NmU5OWUgbGVnYWN5LXRydW5rCisxODA5NiA5YWY3ZmNlMzYzODQxMzE3M2EwMDdmY2QzNDIyNDJlZWYxOWY5MDgzIGxlZ2FjeS10cnVuaworMTgwOTcgMDIyN2I1OTYxZWVmNzRhODc4MjMwYTYwOGQwZjFmMmE5OWE1YjgwZiBsZWdhY3ktdHJ1bmsKKzE4MDk5IGRhNDNiMTY5ODZiNjc3MDFkOGI3MDQ0NTg3YzcxNWRjMmM3OTM2NjMgbGVnYWN5LXRydW5rCisxODEwMCA2NTc3NTBjMWQ3ODM1NGQ4Nzg3NzNkY2YyYzMyZDhkOTI0ODY0YzcwIGxlZ2FjeS10cnVuaworMTgxMDEgMmNkZmM0NmU4MDY4ZDBkOGFkOTgyM2M0NWM4MTFmNDZjODRlZmZhYiBsZWdhY3ktdHJ1bmsKKzE4MTAyIGU5ZTg4MjRlM2Q4ZGZkOWEzYmZiMmVkOWZkNDdhYzI0YjY4NDQwNjIgbGVnYWN5LXRydW5rCisxODEwMyA3MWVhMmJiMDE4ODk1NzJmOTY4Nzg2NjhkMTE2ZDE3NjQxNDlhOWQwIGxlZ2FjeS10cnVuaworMTgxMDQgZTRlYTQ0YjEwYWJiZWYyNWFkMTA3ZTBmZTExNjRiOWM5ZWU0ZDY4NCBsZWdhY3ktdHJ1bmsKKzE4MTA1IDY4MzcxMzUwODFkNDcyN2VlZmRlNzQ3NTRiZGYyYjAyMGE2MWQzMjcgbGVnYWN5LXRydW5rCisxODEwNiBkZDBkMTk5Njc0ZjgyYTRjZjVlMzFmNzEzMTkzYzBmNGQyZjk3MTgzIGxlZ2FjeS10cnVuaworMTgxMDcgODY4NmYyODRmYThkNzQ5MDEzZWNmNDNkOTc5NzY4MGQwMzllZjRhOCBsZWdhY3ktdHJ1bmsKKzE4MTA4IDczNWVkODU2ZGU2MGU0MThmNjc1N2FjNzNjYmFlNGJhMGMwYTU1YzIgbGVnYWN5LXRydW5rCisxODEwOSAyYTA1YzFmYmQ4OTQ3ZGQyMzMwMWY4ZjQ4MGVlZmVkYTUxZGM1OWIyIGxlZ2FjeS10cnVuaworMTgxMTAgY2M5ZWIxODdiNzMwMmNhMzc3MGIxMTZhOWFjMmNkNGFkZGM4ODk0NSBsZWdhY3ktdHJ1bmsKKzE4MTExIDk3MjBjMmM2ZjQzNWQzZDZjZGViM2I5MDJmNGFiMjAyYjJjZDY1NjcgbGVnYWN5LXRydW5rCisxODExMiAwZjlmZDNmZDc3OTlhOGFjY2YxZjU2YmJhY2VmZDE5MDkzMTExMGM5IGxlZ2FjeS10cnVuaworMTgxMTMgMDgxMzAyMGIyOTc3NWUxY2YyY2ZhMzQxODBmM2FhZGU0N2U2N2U0NiBsZWdhY3ktdHJ1bmsKKzE4MTEzIDJmYTRlMzUwODNlMDIzNDJjYTAxNGJmNWJmYmE0NmFlY2I4MTZjMzEgbGVnYWN5LXRydW5rCisxODExNSBiZDRjZDczY2IwZDZkNWY4OGNlZDdkZjc0ZDMwZDdkMTRiMjI2YmI3IGxlZ2FjeS10cnVuaworMTgxMTYgNjFmODIzMDA5MTQ1Y2ExM2E4ZmI1ZjY5ODdhMTYyOTI5OTY2MzNjYyBsZWdhY3ktdHJ1bmsKKzE4MTE3IDMxNDI2OThkMTcyYzg1N2JiOTkxOGM1MTJmMWViOGYwNTY2MjI2MGIgbGVnYWN5LXRydW5rCisxODExOCBhMTg3YWQ4MmMzM2Y0NzI5M2Y0NGE0YzM0MjM4ZDNkNDRjNjA0YWMwIGxlZ2FjeS10cnVuaworMTgxMTkgZDJhYTI2NmFlNDFjODhlYjdlYzBlMjE4OTFmZWEwNmM0NWQ4YmMwNyBsZWdhY3ktdHJ1bmsKKzE4MTIwIGJjNGY4OWVlZmIwNGQ0MmViN2UxYjFjMjNmNGEzNjZlODAzMDA0ZGIgbGVnYWN5LXRydW5rCisxODEyMSA4Nzc4MGRiZjhkMTc0YjFiZGU3NTNhZjUwZTg2MTU2MTNlODhhYjNkIGxlZ2FjeS10cnVuaworMTgxMjIgMGQzYmFiYWM0Mzk4ZmJlMzhiNWY0NzBhZDlhODhiNGYwMmExMDA0ZCBsZWdhY3ktdHJ1bmsKKzE4MTIzIGI1MTYyOTk4MGM4ODZjMjg0ZWI0M2I1ZGNiNDQyNmI5MWNhMzE1YzkgbGVnYWN5LXRydW5rCisxODEyNCAzODdmMzFhYzMyZTY0OGM1NDM3OTdmNDNhMmZmMjM5MGJkOGZmYzIzIGxlZ2FjeS10cnVuaworMTgxMjUgYzk0YzFiNjYwZGRiMTU2YTdlZmI0ZWQ4MWQwMGQ4NGY4YzQxMjVjNSBsZWdhY3ktdHJ1bmsKKzE4MTI2IGQ1MDMzNWFjNTU4MDNjMDQ5MTFmNGM5MTM1MWMyMjQzOWVjZDUxYjUgbGVnYWN5LXRydW5rCisxODEyNyAwODMyODEwYzQ2MTI0MzM3OGM1MzA1ODFhNTg0N2NiNTBhMDAxM2NkIGxlZ2FjeS10cnVuaworMTgxMjggZDU3NDBlMTJlYThhMjlhOWRhYTRhZGFiNWRhZTU5ZjM5N2IzZTVmNCBsZWdhY3ktdHJ1bmsKKzE4MTI5IDc0YzYxNTNhYmJjMTBkMGQ3ZGVkMjQwZmM0N2ViMjViYjg3OTAyNjkgbGVnYWN5LXRydW5rCisxODEzMCA5MjljOTJjNTBjYjJiYmVjODM2N2MwNThiZTAxOTEyNDA5YWYwNTdlIGxlZ2FjeS10cnVuaworMTgxMzEgM2U5NmZkNDRiOWQwZjc4ZmQ0OTI1OTgxYzQyYWZkNWNjYjhkMzgwNCBsZWdhY3ktdHJ1bmsKKzE4MTMyIDYzODFmYThkN2RmMzM3MDRiYzI5NmQ4MDRlYjdjNzZlMzBlYzk3ZTIgbGVnYWN5LXRydW5rCisxODEzMyA2ODE1OGQ2NGU4NzRlOTUwNzRjODkxNjcwZGRiNDRjMGQyN2YzZjQ0IGxlZ2FjeS10cnVuaworMTgxMzQgODQ3ZDk5ZTRmMjRhZDNlMjA3ZTlhNmI4ZDBhYmU3ZTE5NGQ4MDYwMSBsZWdhY3ktdHJ1bmsKKzE4MTM1IDY1ZDI2NWQ4OWQ4ZjQyNTVjNzM1N2I5OThkMjIwZTlmNmMwNzgyY2QgbGVnYWN5LXRydW5rCisxODEzNiBiYTM2NzdlMWY4MWI2NWRjNzRjNDFkZWY5NWVlZDVkNjA2YmM4ZDYxIGxlZ2FjeS10cnVuaworMTgxMzcgMTE2NzZkZGFmZjAxNWUyODdhMGU3ODFmMjdiOWI2NzBlODZhMjBkOSBsZWdhY3ktdHJ1bmsKKzE4MTM4IDI1NDEwNjJlZDRkZDk4YmFjOWNiMWZjNzA5NGNjZjBiMjk1MjJhZDUgbGVnYWN5LXRydW5rCisxODEzOSBhNWNhNTQ5NjlhM2ZmZTcyOGFmNTM2MTZlNzZkY2I4MzM5MTJhNzM5IGxlZ2FjeS10cnVuaworMTgxNDAgYWYyYWE4MDdhY2RlN2ZhNGNhMDg4NjQzMDQyMjQ5MjFiYTYxNmUwMSBsZWdhY3ktdHJ1bmsKKzE4MTQxIGJmMjFlNDE3YmVkMjIzNDkyMDU4NWMzMmIzOTliYjhlNDNjODZhNTEgbGVnYWN5LXRydW5rCisxODE0MiA0YzdjNzc5YmFkODc5YjhkZWI3MGRkZDM1Y2U3YTJhNDU0OGRjMjhiIGxlZ2FjeS10cnVuaworMTgxNDMgYjk0MGEwZmMyOWUzMzk0OTM2NTA3N2EwZjVhMWU4NTc3MzM3M2JmNCBsZWdhY3ktdHJ1bmsKKzE4MTQ0IDhmNDU5MmY1NDk4OGRiZWQ0NjBhNzJkOTMxNjRjNjM0YjIxYzNkZGYgbGVnYWN5LXRydW5rCisxODE0NSAxMzJlNjk4OTJhYTVkMTVhZTUwODgwYWQxYzVhYTExMWJmZDlhNGUwIGxlZ2FjeS10cnVuaworMTgxNDYgM2E3YWZkM2U2Yzk3ODE0YjQwNDg0NzgxMzAzMTAzZTcxNTExOGQzZCBsZWdhY3ktdHJ1bmsKKzE4MTQ3IDFmNGE5YWRlMzBlY2MxN2NiMWI3ODM0MWQxZTBiMDViOGYzOWZhMzMgbGVnYWN5LXRydW5rCisxODE0OCAyNzJjMjk2NTA4MWM2NTE4NjAzNjhkNzQxYzVjNmVmYzkxNGMxOWNiIGxlZ2FjeS10cnVuaworMTgxNDkgMjNiMTEwOGQ2YzhiNWZjYWQ3MjgyODAxYjEyNzhkNGQxYmY1MThhMSBsZWdhY3ktdHJ1bmsKKzE4MTUwIDFmOWQ1ZWI4NGIwYjIwYzBiYjZlOGFiYTZkYjA3NmVjODQ2Mzk2OTEgbGVnYWN5LXRydW5rCisxODE1MSA5ZGQ3ZWFiODM2ZDdjZmM5YzU5YzNlZWE2Yjk2MDRhNzBjZTQzMjNkIGxlZ2FjeS10cnVuaworMTgxNTIgMDliZjZkMzAwMjRmYjA4OGE1MDhmNjkwMmVlZjUwZTUwMzRlZDc3NiBsZWdhY3ktdHJ1bmsKKzE4MTUzIDg0N2RjNjFlMzBmNWM4ZTg4ZTk3Njk1YjQ0N2E5NDVhMDljNjk2ZGIgbGVnYWN5LXRydW5rCisxODE1NCA3NTdmZjg4ZTE3YWFkYmRhM2QzMWNmODhjNmFmNGYyOTMwZGZiMmY0IGxlZ2FjeS10cnVuaworMTgxNTUgZTZhMTA4NTcyNWFjZjQ3OGE5ZTgxZWIzNzVlNDczMDVmOGNkMGNmZSBsZWdhY3ktdHJ1bmsKKzE4MTU3IGYyMGRlYWVhZjhiOTdjMjFkNmZlMDI5NTRiZWRmYjdmZDA0NTY4MDMgbGVnYWN5LXRydW5rCisxODE1OCA4NWE1MDlmYWNjYzc5NmYzMDJkZmY5NjRkYmZhMjlkYmQzYjU1NTI4IGxlZ2FjeS10cnVuaworMTgxNTkgNjhiY2U1ZDgzZjdiOTNhNzFlZTJkNGE3ZTNkOWNkODdmNjJhNjU4OCBsZWdhY3ktdHJ1bmsKKzE4MTYwIDBkYTRjY2M3ZThjZjM2ZTZmYjJiZjVlY2ViZmI4ZDVhMzg2NWEzYjUgbGVnYWN5LXRydW5rCisxODE2MSAyYTlkMjc2NTYyNWU1YTc3NWRkNWJkYTYwZDQzNTU0YTc2N2NkMjI3IGxlZ2FjeS10cnVuaworMTgxNjIgYjIxMTAyNmNlZjg0Y2E4MDNkODZmOWRhYTJiOTYzNjgwZTU2MmFjOCBsZWdhY3ktdHJ1bmsKKzE4MTYzIDA4MjA5OTRlMmQ1ZTg3NmYxZTA5YmYyYzQ3NWQ4NzdkYzFhYzM3M2MgbGVnYWN5LXRydW5rCisxODE2NCBhNmYzZWYxMDgxNWVjYjhkYzEwZDhkN2I5Y2EwOTRhYWRkY2EwZmJjIGxlZ2FjeS10cnVuaworMTgxNjUgMDdmMjQyNjFjNmU2ZWJlM2VmY2U0NDhjZTQ5NDZjNTE2ZjdmYjI2YSBsZWdhY3ktdHJ1bmsKKzE4MTY2IGE5OTlkMDU4ZmFiNTU4MTU4MzhjMDAwNjIzNWI5ODc4ODlhNDdhZTggbGVnYWN5LXRydW5rCisxODE2NyBmODcyMWU4NDk0MjQ2Y2JhNDE4MzAxOTJlZGI3YTI4NDdlY2ViYzg5IGxlZ2FjeS10cnVuaworMTgxNjggODQ3YWU0MDA3NGQ0ZTAwNzM0YjMwYTBkNGY3NmJlMjVhYmE2NDk0NyBsZWdhY3ktdHJ1bmsKKzE4MTY5IDA3NThjY2IzMzYzY2ZkNjRlOWY3NmM0ODgwMTFjZWQ2ZTVjY2I4NmUgbGVnYWN5LXRydW5rCisxODE3MCA1ZDJhMjE4NWM2NTFhNDMzOWJhNGVhODE2N2Q2MGE2NGJmNTYwYzYwIGxlZ2FjeS10cnVuaworMTgxNzEgMzMzMzdlNWE0MzAwYzk4ZGFhMTU5YWNkOGMwZjE1OGY3NTI1ZWMzOSBsZWdhY3ktdHJ1bmsKKzE4MTcyIDg2ZDA2OTQxNDA5OWZlOTgzNjM1NDIxZjllNWI4NzEzMmFiMDcxM2UgbGVnYWN5LXRydW5rCisxODE3MyA0OTQ2OGMwMDdjMGNkNWFmMjljMzk3MWVmZjc0OTY0YzU0MTViM2I3IGxlZ2FjeS10cnVuaworMTgxNzQgODdiNWU0ODA3NjJmODZiMTc5NzBjNWIzY2E5MDFiYTY0NjgxNzAxOSBsZWdhY3ktdHJ1bmsKKzE4MTc1IGI0OWY1MjJiZjg5M2VhNTJhYjA1OTk2OGFmNjIxNWRhZWFkNTBmNGYgbGVnYWN5LXRydW5rCisxODE3NiA4ZTg2NWY1ZWNmNzg0MWZkNDE5MTJhYjA0ZTMwYmQxM2Y3YzgxZjRlIGxlZ2FjeS10cnVuaworMTgxNzcgMTM5NzVhZWM1MTUyMTU2MDE3MzM4ZmFmZjFlMjk2ZTNmOGIzY2RjYyBsZWdhY3ktdHJ1bmsKKzE4MTc4IDhhYTk0N2UxZWVlODJhMmVmMmUyY2Y2MGQwMDExYzA0MzhhZmNiYTUgbGVnYWN5LXRydW5rCisxODE3OSAwOWVjODgyY2RlNjE0NDIwYjk1NTFhMzhiYzE5N2IwZGE3NmFiNmRjIGxlZ2FjeS10cnVuaworMTgxODAgM2JkMTNhMmZjODM4MjQ4NGUwMDJjNTJlNzNjZTFiNWE1YTIzNDI5MiBsZWdhY3ktdHJ1bmsKKzE4MTgxIDExZTNhNmUxNmE5ZjIyNWZhNjJhODgxNGRlYzA0ZmU0YzAzZTA2ZDggbGVnYWN5LXRydW5rCisxODE4MiBkMTdiYTE0MTQ4MGFlN2E2M2I3NzgyNzBhY2U0NmZlMWQ0ZjllNTlkIGxlZ2FjeS10cnVuaworMTgxODMgZmQxNzIxN2Q1YmE4NjhhZjBmZWEzNDdjOGE4Y2NjYTlmYjNjODBmMCBsZWdhY3ktdHJ1bmsKKzE4MTg0IGQ4YWNhM2M4OTBmN2E0ZmMzNTI4NTZiMmMxZWU0OGI1NjIzNTA3MjggbGVnYWN5LXRydW5rCisxODE4NSA2NTU5NGZlYjU1Mjc1N2U3NmVhZDk2NzBlNTNkMGJjNDNlYmY2NzI5IGxlZ2FjeS10cnVuaworMTgxODYgZTVkNGM0MjRjNDRmOTM2Yjc2NGY4YTUwYTNmY2FkY2Y4MzMyM2RkNyBsZWdhY3ktdHJ1bmsKKzE4MTg3IGMxODQ2ZDMzMWRlOWQxZDM5NzUyZDVlNTExMzAxZjNiZmViNzkyNDcgbGVnYWN5LXRydW5rCisxODE4OCAwZDYzYzBjYTdhZTQyMjM5NDY1M2VjMWIxNDczMzRlYTA0ZjczZDk0IGxlZ2FjeS10cnVuaworMTgxODkgNWQ1ODZkNDVjYjVhNTI0YWQ4YTAzZDgxODk4NTI3MWU3NzhlOTRmOSBsZWdhY3ktdHJ1bmsKKzE4MTkwIDgxODkwNGE5OWNhMzczMTdlMWMyMzdiMTdlYmY4YjdiNzA4ZWExNjUgbGVnYWN5LXRydW5rCisxODE5MSA3ODhiNTIzZDQ4MjdiMjQ2OTQ2YzA1M2M1NWY4NDhiNjA0Y2Y5MmVmIGxlZ2FjeS10cnVuaworMTgxOTIgMTJhZWMzMzgxYzk0NmJjN2IxODg3MGYyMzVkMGFmOWFkMDI3OTc2ZCBsZWdhY3ktdHJ1bmsKKzE4MTkzIGQ1MTU3YzhiYjExYTRkZGExMmMwYzdmMWNmZDkyYjg4MzQzOGIyNWUgbGVnYWN5LXRydW5rCisxODE5NCAxMDBjNTMzZDlhM2U2MTU2NmQzYzUxZWE3MDRiYjZjNDFiODc3YmIyIGxlZ2FjeS10cnVuaworMTgxOTUgZWM3OTgwMGY0YzI3NzAyNWYwMDdjYWQzM2NkNWJlYTdlMDQ2NDVmYSBsZWdhY3ktdHJ1bmsKKzE4MTk2IGJiYzk5MWFiNmQzMjIxYTZmNTNkNTJjNWVmNTIyMTg4NmZlZGY4ODQgbGVnYWN5LXRydW5rCisxODE5NyBhODFmOTIwMjgwM2RiZDJlNTUxNjBhMTQ5NTU5NTdlMzIwNGVkMWE1IGxlZ2FjeS10cnVuaworMTgxOTggY2ExYWUyMWEzMDM5YjM0MWQzZTY2NTVmODQ5NmRkYjkzNzBjMDdiOSBsZWdhY3ktdHJ1bmsKKzE4MTk5IGMyZDc0NTFiNDJmNjZjNTI4YjUwMzI2ZmRhYTRmZTFjMjdmMDBhYmUgbGVnYWN5LXRydW5rCisxODIwMCBkOTlhMGY2Y2ZjZTIwYzhhZTk5NjI2NjZlNmNlMzk1NWQwYTE2MTI5IGxlZ2FjeS10cnVuaworMTgyMDEgYzJkMTAyNzRhMjE0ODkyZjUzZjcyM2UyMTZjYjJiOGQyOTM3NzllZCBsZWdhY3ktdHJ1bmsKKzE4MjAyIGNiMTFmYTViMTFmNDIzZGZiNTMzODlhZDRkMjIzMTU5OTBlZTc1NWYgbGVnYWN5LXRydW5rCisxODIwMyBhY2YyYjE5ZTQzNDQzMjMxNGFiNjcwMjEzYjc3MmNkZWQzYjgxZjg0IGxlZ2FjeS10cnVuaworMTgyMDQgZTU5ZjUzOGJiODI5M2FmMjg4NTExZDU5MGVjNDY0YmVmZDYxMzMxZCBsZWdhY3ktdHJ1bmsKKzE4MjA1IDAzZGM3NjFkMmNjNDllODg0ODU2YWQyMTE1YWU2NTUzNmU3N2Q2YzcgbGVnYWN5LXRydW5rCisxODIwNiA1NjNkY2ZlYzJhZTllNmMzYWUxOWZlNWJjN2M5NzViOTg1OTFjZmEyIGxlZ2FjeS10cnVuaworMTgyMDcgMzA0ODcxZDZlODY2MjQ0Njc4NDc3YmUxOTczOTI0MWJiMzJkMzdjZCBsZWdhY3ktdHJ1bmsKKzE4MjA4IGQ0YTQ2MzI2ZmFmNDM2OTRlYTY3MzllZjIwZTc2MDczNTQ2ZGEzZjcgbGVnYWN5LXRydW5rCisxODIwOSAwYzE5NjcyZDQ3YmIxZTE3MTFjZDRiYjI5MTBkNjczOWU1MGEzYjFjIGxlZ2FjeS10cnVuaworMTgyMTAgYjNkZWJmNjQ3YjUzZWE4MzEyYmI4NjBiNzUyNTgxMDM4YjQzNWI5NiBsZWdhY3ktdHJ1bmsKKzE4MjExIGE2MjI0ZGE3YjRlNDM1Y2JmZjJlMTdhOTRlMWI1ODU4NTkxZjhkNjkgbGVnYWN5LXRydW5rCisxODIxMiAzZTU0Y2VmYzU4YzYwMWU4ZjIwZTI5ZDk3NjdhZTk0MDIzZDhiMmUzIGxlZ2FjeS10cnVuaworMTgyMTMgZjQ4MGQ1MmMwNzYwYWRiMTQ5MmUyYzIzNWRmMjY2YTk2ZjVmNzU4YiBsZWdhY3ktdHJ1bmsKKzE4MjE0IDdiZTllZGM0ZDVkYjExYjAyNmRjN2NhNDhkOTI2MWQ5ZWJiYTIwNGEgbGVnYWN5LXRydW5rCisxODIxNSAyYTM2OTZkMzI3MjFlNzAwOWQyOWY4N2MxZDA1MTBmMjZmMDcxYzQ4IGxlZ2FjeS10cnVuaworMTgyMTYgNmU3MGJhYTQ4N2VkNTIzNGQ0YjNmYmQ2NWZiZDI0ZWFiZTA3YTJlOSBsZWdhY3ktdHJ1bmsKKzE4MjE3IGVlMjcxYzIwYjA1ZjNiMjQ5YTBjMjI3ZWJlMGM2ZGY3ZGZkYjhmYmYgbGVnYWN5LXRydW5rCisxODIxOCBhYjM0MzhjZjFmM2U2YjM2YTk5MGNiOGEyNWFiMTJlMmM5NWJiNjMyIGxlZ2FjeS10cnVuaworMTgyMTkgMTJiOTJhMzU2NDFiZTJlZWNiYTY4ZWZlYWNhZDBiZWZlNDJkODM5MSBsZWdhY3ktdHJ1bmsKKzE4MjIwIDc0ZTFkNzk1MjBmZDRjZGVjY2VhZmFhY2RkM2ZhMWFlOGJjN2MzYzkgbGVnYWN5LXRydW5rCisxODIyMSBhM2FmMTQ1ZDI1MzFlMGMzNjQyN2ZjNTEzNzc0ZjAzYTNlMzQ1OTI1IGxlZ2FjeS10cnVuaworMTgyMjIgOWExN2NkY2QzMzIwMzU4ZGMxNjUzM2Q0Njg0NzJhMWExYjhiZDQ2NSBsZWdhY3ktdHJ1bmsKKzE4MjIzIDQ3ZDlmYmU2NTM3Yzg3Y2Q2ZGI5M2MyYmM2NzY3YWY5ZDZhNmMyMDIgbGVnYWN5LXRydW5rCisxODIyNCAwOTk1MmQ2ZWQzNzI1OWYxNmQ1NjE2NTJiMjAwNTFiODU2YzRhYzg4IGxlZ2FjeS10cnVuaworMTgyMjUgMWU0ZGU2MDEwNTFjMTYyNDExOGRlYTMzNjQzOTFlNTc0NzhmMjk5NSBsZWdhY3ktdHJ1bmsKKzE4MjI2IDNjNjA4MzI0N2NlNzU1Yzk2MDAyNzUyZWE5YzU5M2U3NzQ1ZjY0OTggbGVnYWN5LXRydW5rCisxODIyNyA4Mjc1ZDg2NDNlNzk4OTEzNGVkYjA0N2E1M2EyMzFiNDkwOTg5ZWZhIGxlZ2FjeS10cnVuaworMTgyMjggOTAwZjI2NmM1ZDhlMmMxOTI3MjQ2Zjc3NGQ2YWI5MjgwNGM0NTEzOSBsZWdhY3ktdHJ1bmsKKzE4MjI5IDNhYmNiNjk2NjYxNzU5MjY0Y2FiNmE1NjI4NjllZThhMGUzOWYzMTAgbGVnYWN5LXRydW5rCisxODIzMCAyZTFhYjBjOTQxYzBlY2MyN2FkZWEwOTMzYzNhZjFmNzk5MDMwNTU4IGxlZ2FjeS10cnVuaworMTgyMzEgYzdmNWRkMmJkYzdkNjlmNTNlOWVmNzliMDk4YzJlNmZmYzRmNDUxNCBsZWdhY3ktdHJ1bmsKKzE4MjMyIGY2MjMzOTM4ZmY4OWIwZTY0OGY2ZjMxMDIwZTk4MWU1YWQ2OTdjNDYgbGVnYWN5LXRydW5rCisxODIzMyAwMTkyMmEwZjZmOTJiMmUzZmViM2Y4Yzg5ZWE5OWUyMTk5MjVmYzg3IGxlZ2FjeS10cnVuaworMTgyMzQgYTgyNmE0NmJhZTU0YWM5MGYwZmE5ZWQwMWZkMjY1MjBkYmFjZWRkMSBsZWdhY3ktdHJ1bmsKKzE4MjM1IGNlZTk2YjM5MWZmYzI2MDY3NWViNTY5ODEyYWQyMTZkNmU2MThiYzQgbGVnYWN5LXRydW5rCisxODIzNiA0OTNjYTllNDI2MGU1MmEyMzdmNDBkZDM0NzY1YmNhNGM4ODE4YThkIGxlZ2FjeS10cnVuaworMTgyMzcgODNjZGQ0NTQ4NWE1NzNhMmFlNWJmODcyNGI3MTUxOGU5NmY2MTUwYiBsZWdhY3ktdHJ1bmsKKzE4MjM4IDliMWJlMWQ4NDgxMDQ2NzM5NzQ2ODBhY2ZjNGI0OGY3MzA4YzU3MTkgbGVnYWN5LXRydW5rCisxODIzOSA3YTgyZjg0MjkwZjdiYmQzMDQ4OGExNTVhODZiMzlkMmI4MzFmMmQ3IGxlZ2FjeS10cnVuaworMTgyNDAgYmIwMDZhZDAwZDllYWM2Y2Y5NTc4MzdhMTJkM2JhODNmYmY0ZjgyMiBsZWdhY3ktdHJ1bmsKKzE4MjQxIDUyYzI3YjcxMTY4NjkwMDcyNDliNjNmMTU1NWMyYTRkMDYyZTI5NjMgbGVnYWN5LXRydW5rCisxODI0MiBjMTA0ZjAwYzk5MDllYjE4NjA1ZDg3ODM5MDI4M2NhOTg3ZDE1YmZhIGxlZ2FjeS10cnVuaworMTgyNDMgZWViN2M4YTViNzlmNjQzYzJkYjc3YjQ3MDlkYjdjNjk0MzM1M2FmYSBsZWdhY3ktdHJ1bmsKKzE4MjQ0IDNjYjEyZTBlN2FjZDEwMmRjMzhiNmNmNGU1YjRhYjMwMTdlNDU4NjggbGVnYWN5LXRydW5rCisxODI0NSAyMmRiY2ZmYzU0ZWYxMGY4ODAzY2VjYTRjYWRkNWQxMjQ4MGFhMjIxIGxlZ2FjeS10cnVuaworMTgyNDYgMTZjMTJkMTY5OGY2YWQ2MGQxZDY5ZDJiZDZjNTExZTJhNGM4YTYyNyBsZWdhY3ktdHJ1bmsKKzE4MjQ3IGIzNDY5ZWI3OGJjNjY4MTEzM2RhMjVkZGU1MGJhNzMyNzBjMjU2YTUgbGVnYWN5LXRydW5rCisxODI0OSBmMjkwMWI2YWM1ZWQ5NDY4YzU2MmM5MDRmMjgzMjgxYmMwODExNjFlIGxlZ2FjeS10cnVuaworMTgyNTAgODdhNWJhZTFiOTQ0YTk5OTMxZjdiNWMxYjc3NzJkYjk2YjBlMGRiMSBsZWdhY3ktdHJ1bmsKKzE4MjUxIGY2MmUzZTc4NzFiZTkyMzkyY2I5M2VkMjE0YTYwMjFmZTNkZDExOWIgbGVnYWN5LXRydW5rCisxODI1MiA1MTkyYmZkN2E4YmJkNTkwMTc5MzI0ZTAyZGM2OWI3ZmU5Y2Y1YmM3IGxlZ2FjeS10cnVuaworMTgyNTMgZmFlNWIxZTQxNDkxZDYzNmE5NGRmNTJhYzRjZGZjODA3NmI2MTFkMSBsZWdhY3ktdHJ1bmsKKzE4MjU0IDg2ZjA2YzE1M2RkYTRhM2EzNDM2Yjc5NzMyMTAxZTIxZmE5NWE1YTYgbGVnYWN5LXRydW5rCisxODI1NSA5NmMzOTRhNDNiNWJhZmM2NzFlYmIwNDBmM2U5MTIwM2QwZDNlZWI1IGxlZ2FjeS10cnVuaworMTgyNTYgZDI2NWJmNGFkYTdjOTIxMGY1NmRmM2Q5NTI5ODM1YjczNThjMWNkOSBsZWdhY3ktdHJ1bmsKKzE4MjU3IGI3MTQ1OWFlZGE5NTY4ZGU3OWNhMzhiNDRlOWVmZDY2NzNhYzMxYzIgbGVnYWN5LXRydW5rCisxODI1OCA1ZDVjNTEzMDRmN2M1YWE4YzcwNTAyNjkyNGRkY2IxM2E2OTUwNWVmIGxlZ2FjeS10cnVuaworMTgyNTkgM2FiN2ZhYWU4MDNhZjI0YzNjNjcwY2UwMThhNjZlYjZjMjc4MjEwMiBsZWdhY3ktdHJ1bmsKKzE4MjYwIGFhMWVjMjcwZjJkMzhiODRlMDJjMTdhOWU2YzQ4Yjk5NzJlZGJmYzMgbGVnYWN5LXRydW5rCisxODI2MSA4ZjgyMzE2ZjY5ZDQwNTFmYjk4MWJkZWVmNzc4OTFiNzgyNDllNzg2IGxlZ2FjeS10cnVuaworMTgyNjIgYzQ1YzUwODBjODQ0ODEwZjJhZDMxYzkxNmRlM2E4YzU3M2Q1NzAzMiBsZWdhY3ktdHJ1bmsKKzE4MjYzIGZkZWQ1YzllY2M5YmJmNGEwZDhkNDNmY2IwZTM4YmQ1MTBhZTkzNjkgbGVnYWN5LXRydW5rCisxODI2NCA1YjRhYmNlZmY1M2Q0ZDM5NWFiYzIxYWI3OTc0N2VjMWMyZDRkMDkxIGxlZ2FjeS10cnVuaworMTgyNjUgOWE2ODk0ZjhlMWEwOTczNWQ5OTNmMjQyOTgwOGZmNmUxZGViZjMwOCBsZWdhY3ktdHJ1bmsKKzE4MjY2IGFmMWU5ZTY0ZWQ5ZDI0MTg5MGRlYTY0NWQ3M2MwZmMyNTA5ZGJlOTYgbGVnYWN5LXRydW5rCisxODI2NyA3NzE3MTMxOGUzMjEyODcyOTg0MmU2NzFhZDI2NDk4YWYzYWFlYTA1IGxlZ2FjeS10cnVuaworMTgyNjggMzc1MjI5YzNhYzBkOTllYWNhYzliZTQxYjk2Nzg0ZmY0MGUwMTJiZiBsZWdhY3ktdHJ1bmsKKzE4MjY5IGRkZDkwM2ZiNmE3MTA4MDM3Y2Q0OTgyMzlkOTBhMWYwYmUwYjcwN2QgbGVnYWN5LXRydW5rCisxODI3MCA5OWNhNDE5Y2E1OGJiYjdlMTNkZTA5ZGIxMGZkMTg3MWNmMjM0YjM1IGxlZ2FjeS10cnVuaworMTgyNzEgYjY0OGNiMGQxOTg4ZjE3ZjQ0NTk4NGIxMDFhZDU1MDYwNjcxZjVhMyBsZWdhY3ktdHJ1bmsKKzE4MjcyIDU2ZTk3ZTcyNzU2OWMzYTI2MzEwODdlNzczODFlNmUyNDkyY2RjMWIgbGVnYWN5LXRydW5rCisxODI3MyA4NzZjZjdiM2QzZGZiMWI1YjlmMTI0ZDc5YWQ2MTlkZjkwMDEzMGU5IGxlZ2FjeS10cnVuaworMTgyNzQgNGFlNDkyOWIxMmZmZTFkODczMTZlN2Y4MDI3ZjBkODVkM2NlYWM4YyBsZWdhY3ktdHJ1bmsKKzE4Mjc1IDg2ZjRlMWVmODFjYWFjMDU1YjhkYzYyMDJhMmE3YzczOTA1ZjQ4MjMgbGVnYWN5LXRydW5rCisxODI3NiAwZjAwYjZjN2I5Yjk1ZTEzNjRkMGIyNjYxYjE4MWYzNDY4ZTRlM2M0IGxlZ2FjeS10cnVuaworMTgyNzcgYzhkNGU2ZjFiNWZlOTc1YzI3NmYxOTVmYTgxNGQ4YjA2YmY4YWY0NCBsZWdhY3ktdHJ1bmsKKzE4Mjc4IDZiMjUyNGU5YzY3MmU4MDVkNjBkNjU1ZTgxNjMwOGNlMmU5ZTYzNGMgbGVnYWN5LXRydW5rCisxODI3OSAwNjQ2NWVkODE4MjYzMDVhODg3ZGFhMjE4Njg5ZmFkNWRhMzQ2ZDdjIGxlZ2FjeS10cnVuaworMTgyODAgYmQ0MWU2MjczZWQ5YjMxNDY2OWM3ODJhMzk5NWMwZjQzOTVjYmFmNSBsZWdhY3ktdHJ1bmsKKzE4MjgxIDI3ZTRmNTYwMWFhNTg5YzIwZGY3NjI4ZmYxMmZhNTJkYmNjNmMyNDkgbGVnYWN5LXRydW5rCisxODI4MiA0OTE4NTE3ZWQ2YjRjYjRmMGIzZmFmODE0NTliYjY2ZTA3ZDBkOTg1IGxlZ2FjeS10cnVuaworMTgyODMgMzlhYjgyN2U3MmJkNmU3N2JkZTNkOTM0MmE5ZjViYzU4Y2ViMGZjYyBsZWdhY3ktdHJ1bmsKKzE4Mjg0IDdlYmRmZTQyNWM4MWViNjIzNjc2MmI4MzdkMjQ2ZGRiNTlhYjYwYzMgbGVnYWN5LXRydW5rCisxODI4NSA5N2VhMGI0OTQyMmZmZjJhODRhYjliOWYyYjg0MWVmZDQ1MmI2NzJjIGxlZ2FjeS10cnVuaworMTgyODYgYmUzMzA3OTM2MGM2Njk0YWNkMDU3MTc5ZWRhYWYxMTdjODc4MWRjYiBsZWdhY3ktdHJ1bmsKKzE4Mjg3IGE5MzUxMDUxOTIzZTBiMDQ1MTVhMjM4OTRiYzAzMWNiODhiNWEzN2IgbGVnYWN5LXRydW5rCisxODI4OCBjMGYxZWJkMzIwNzIzOTAwODM1MDYxZjU1MDEzYzhiMDRkZWQ5OTQyIGxlZ2FjeS10cnVuaworMTgyODkgYzgzM2RjZGIzYTE1NTQ3YTliZDkxMWY2OTMyZTYzY2Q5MDM3YTY2OSBsZWdhY3ktdHJ1bmsKKzE4MjkwIDc4YTdmOGE2NGY4NWE3NDgxN2I1OWJhZjdlN2QxM2I1MDVhNGUwMGUgbGVnYWN5LXRydW5rCisxODI5MSBkNWE1NDI4ZTk2NWM0ZDI1MGJiNDVjMTQ1ZDg1NDFiM2U3ZTUwNDQwIGxlZ2FjeS10cnVuaworMTgyOTIgODQ5Njk4NTUwYjMyYTY4Yjk1ZjVkMTM2Mzc5ZmFmM2IzZjE3ZTMxOCBsZWdhY3ktdHJ1bmsKKzE4MjkzIDIwNDlkNTcwY2E1YTdiMGU0M2NhMTU1NzFkMDUxNzdhNjQ1YjRiMzkgbGVnYWN5LXRydW5rCisxODI5NCBhYzZmYmEwZWNjMjkwMjQyODhmYmY3YTY4YjgzYjRiMWQyNTBlNmM5IGxlZ2FjeS10cnVuaworMTgyOTUgNTNjOWQxNWFkOThlZDY5MzRmMTExNDhiMjQ0YWUyYWU5YTgyNzg5OSBsZWdhY3ktdHJ1bmsKKzE4Mjk2IGZiMTA5MzcwNjBjY2JjMzg4ZDhkZDYzN2JjZWUyZGY4NTdmNTM3OGMgbGVnYWN5LXRydW5rCisxODI5NyA0ZTg1NzdmYjk0MDdmZjZlNGU0MDMxODliMzBkNzU3ZjNhOGU2YzhkIGxlZ2FjeS10cnVuaworMTgyOTggZDVmMDY5NmMzN2U4MWJhYjJmOTA3YmY5YzRmOWMyMGI3NmFkN2M4YyBsZWdhY3ktdHJ1bmsKKzE4Mjk5IDQzMzQ1ODY1MWViNDAyNzk1NGZiNzMyNWMwMzY5YzBkYjdjNDM5YWEgbGVnYWN5LXRydW5rCisxODMwMCAzMjhmYWMxY2EyMTBmY2I2MDBiMzViZmE2NDI1NjY0ZTNlY2UyZmFiIGxlZ2FjeS10cnVuaworMTgzMDEgZWY0NjZhMTllM2JjNmEyNTZkMDM0MzgwOTRkZTc0MWU1YjY1NmY4MCBsZWdhY3ktdHJ1bmsKKzE4MzAyIDRhYzU1NWE4NzZhMjNmNTAwZjc2NGY4NjQxNzUzNjRkNmE3OGZhYjIgbGVnYWN5LXRydW5rCisxODMwMyBiODU1Yzg4YzZhZjZhNDE2ZDI4MTI1MTViZTU2YzM3ODA3OTAxOTY3IGxlZ2FjeS10cnVuaworMTgzMDQgNjhkZTkxODViNDFlMmEzMWNlMjNjYTZlM2I4Y2M0YjY0OGYyYzA1OCBsZWdhY3ktdHJ1bmsKKzE4MzA1IDdlNTE0ZjFmZTMxZmNkNGZhZmM2MDdiZjBmODAxZWM0NmRlYTM1YzIgbGVnYWN5LXRydW5rCisxODMwNiBkY2QyYmViYzE4MGVmNDNiNWUwYTY1NGY5MDZlZWU5M2VlNzU5MTRiIGxlZ2FjeS10cnVuaworMTgzMDcgZjgxM2VkZTEzNGJmNjhkNDVjNzJjYzAzMGIwNGE3NjAyYTY4MmI2ZiBsZWdhY3ktdHJ1bmsKKzE4MzA4IGY4MjNiOWFhMGMwMzYxNTE0OTg0NmI3NTI5NTZhOTQzY2U4ZDE5MjggbGVnYWN5LXRydW5rCisxODMwOSAzMWY3MGNhMDZjNjhmOTRhNzRmNGE0ZDZkNzc2NDg5NWQyNjcyMWIwIGxlZ2FjeS10cnVuaworMTgzMTAgOWFiN2E1OTdlZWZlOTE0MjllZGQwODg3YjNjMjJmM2Q4Nzc1ODRlMiBsZWdhY3ktdHJ1bmsKKzE4MzExIGFlNDkwMDZiMmQ4ZmFhNmE4YjgwODA1YmEzNWNiNzQyZTA3N2Q2ZTcgbGVnYWN5LXRydW5rCisxODMxMiBkYjZkOWJiN2VjOTQ1M2I3NzRiOTg4ZjQ4MWQ0MzkwYjhhOTVlNzM4IGxlZ2FjeS10cnVuaworMTgzMTMgZjJjMTc2ZDg0NmE0YTViOTBjYzFjN2JiMjk3ODQ2Yjk0MTljY2Y3OCBsZWdhY3ktdHJ1bmsKKzE4MzE0IDc3MjFmYjUwOTQ2MjMxZDlmODYzZTIzY2M4NzZmZTM4NjE3ODlmZmYgbGVnYWN5LXRydW5rCisxODMxNSBjZTc3NzM4YjgxYWNiZjZiZGZmNDkxODE1ZDgzY2RhOGNmNDI5ZjliIGxlZ2FjeS10cnVuaworMTgzMTYgZDAxNDZkMTI4ODk3ZTczNTQ2NjFkOTE0ODgyOTY4YzBkNzFmZTE0YSBsZWdhY3ktdHJ1bmsKKzE4MzE3IDU5NzA4OWRkMjYwOWE1ZWEyZTFlZDU3YTU2NTM5YzlmMWYxYjMyOTEgbGVnYWN5LXRydW5rCisxODMxOCBhZjM5N2Y3ZGJiZDVlYjUwNzU3ZTllNWI1NjY4OGY0YTRhMzhhYjRiIGxlZ2FjeS10cnVuaworMTgzMTkgNWQ3NThjZjUxMTFkN2Q4Y2Y4NDAxMGYxNDkxYTQ3Mjc3NjZlOWMzNiBsZWdhY3ktdHJ1bmsKKzE4MzIwIGE3OWQzNjI0Zjg0NTRhNmQ0MjgyMThiOGNlNDRlN2VlMzI5ZmYzYTEgbGVnYWN5LXRydW5rCisxODMyMSBkMzk3ZjY2Nzc1ZThiYzQxY2E2M2M1NTA2NTEzNmM2OTg3MDhiODViIGxlZ2FjeS10cnVuaworMTgzMjIgOWY3NzVlMjQ5YmExODA4NDE5NmI1NjIxOWE3ZTRjNTQ1OWJlMTQ5ZiBsZWdhY3ktdHJ1bmsKKzE4MzIzIGJiZThhNjRlMjE5ZTU4ZjVmYjUyOTg0OWQ1YTFjZTYwMjg4ZmNkMzggbGVnYWN5LXRydW5rCisxODMyNCBhYWE5MWVkM2ZjZmQyOWQ1OTQwMzJkMTNjNzhjMjUxODE2NzZkODg3IGxlZ2FjeS10cnVuaworMTgzMjUgYzdmMjI1YWUzMTYwNWIyMDEzNTJmNWYzZWFiMTVlNDk4MGNiYTdlMiBsZWdhY3ktdHJ1bmsKKzE4MzI2IDBiODRiMzFhYTk3NTE4OTdmYjRmODY1NzNhMmJmYWY3ZmU5N2M2ZDggbGVnYWN5LXRydW5rCisxODMyNyA5NzMxYmJiNTJmYjRhYzQ5YjZlM2U1YzdiNjliODQ3NDUxNGY0MzIyIGxlZ2FjeS10cnVuaworMTgzMjggZDc4NjQzNDViMWM4YThjNGU3YWI5MmI1OTJmMGQzY2RmMzFlMDI4OSBsZWdhY3ktdHJ1bmsKKzE4MzI5IDIxOTg2Y2MxNGJiMmE3ZDBjNDU3MWUyNzU4ZmE4NDVlZTgyMzA4ZjggbGVnYWN5LXRydW5rCisxODMzMCBhYzIyMGMzMWRkZDdlOWFiMDNkMjA5YTJiZmZkN2VkMzk5YTVjYjkxIGxlZ2FjeS10cnVuaworMTgzMzEgZTBkOGE2ZjJkMDkxMWIyNmQ2ZmE1YzUzNDNjYmU4NGM5NjRiNWYzZCBsZWdhY3ktdHJ1bmsKKzE4MzMyIDg2Y2Y2NDgwZDJmYTYzYjdlNGRhMzJiMzExM2I0NWU0NzU5OTkxNDUgbGVnYWN5LXRydW5rCisxODMzMyA0ODgwNGRhYjc4OGNhNmRhNWMwZWRlNTA5ZTRiZDJkZGU1NjA2YjQ4IGxlZ2FjeS10cnVuaworMTgzMzQgMmVjZThmYTU2ODA4MDc4Yjc0NTY2ZmEzZTZiZTcyNGUyMWIwZWY1NSBsZWdhY3ktdHJ1bmsKKzE4MzM1IGVmOTEzOTMzNzU0NzRmYTlkNmQzNDk5NDJjMzZlYjc3OWVmNDQ3MzEgbGVnYWN5LXRydW5rCisxODMzNiA2NTVmNGM0YmI5NDQ5YjFkYTYwZDRkYjFjY2NjZWEzMTRiY2ZhNTczIGxlZ2FjeS10cnVuaworMTgzMzcgM2JlMWY1YzUyMGFkNTI1ZjJmNTc2OTAyNWJjMDA0YzY4YTVlMWM1ZCBsZWdhY3ktdHJ1bmsKKzE4MzM4IGE1Y2ZmOGMxZjRlNGE0MjE0YjhmMzljZWYzYzA2ODY3MzIwNjJkZGUgbGVnYWN5LXRydW5rCisxODMzOSA4NTZiMmJjMjE2ZjlmYjM4MjZjZjIxNTE0YTU0NjE0YzNhMTU0NjQ4IGxlZ2FjeS10cnVuaworMTgzNDAgZTk4OTY0YmMyNjgxNDMyMzE0MGNmMTk0ZTMzN2UyZTQ4NzBmNGIwZSBsZWdhY3ktdHJ1bmsKKzE4MzQxIDNjMzNmMmMzNTdkM2I2Yzc1ZjRjMzA2OWVlMTlhZDFkMGFhN2Q2NTQgbGVnYWN5LXRydW5rCisxODM0MiAwN2MyZTEzNjI2MGMzZWNlNDAyNjVkODUyMGYyMmUxZDk5Y2NmMWNhIGxlZ2FjeS10cnVuaworMTgzNDMgNjgzOGU3MmY4ZGQyNzA3ZGEwOGUyMTA1OTZlZTZkOWI4ZDBkNDVmNiBsZWdhY3ktdHJ1bmsKKzE4MzQ0IDEwNWMyNTA1MmRlOThlYzZhNDY0NTY0ZDA2ZTFmOWM2NDQ3OTI0ZDkgbGVnYWN5LXRydW5rCisxODM0NSAwNzcwNTE3N2NhNmJlZDk1YTg4MjY2NDlkNTQ5OWMxMDRlZTdmNjNkIGxlZ2FjeS10cnVuaworMTgzNDYgMTA5MWFkOWEwMzAzY2ZjOGEyNmEzOWEzNWZlNDhmZTQzYTE4NjdkOSBsZWdhY3ktdHJ1bmsKKzE4MzQ3IGIzMzk4YzQ1MmQ5NTkxYTIxNDQ1MDQwNjA5YWIzYTMwMjdkN2E0NzEgbGVnYWN5LXRydW5rCisxODM0OCBmMGNhNGM2Nzk1N2I1N2E5ZjJjYzVhZjA2Yjk1YTBjZWFlMWNiMmI1IGxlZ2FjeS10cnVuaworMTgzNDkgMmQxYmJiYWM3NmQzMDdhMGY5OGJlZWNmNWRjMzQwM2UyNDhkZWM1NyBsZWdhY3ktdHJ1bmsKKzE4MzUwIDEwZjZlMTk1NjcxZGZlN2Y3YThiOGU5YTA1ZDIyZTE4NTJjZWRjYWIgbGVnYWN5LXRydW5rCisxODM1MSA4YTU5NmQxMGJjNzA4NTNiYmZiYWE5MWNhZGMyZjkwNzIxMWNiMzM3IGxlZ2FjeS10cnVuaworMTgzNTIgNThiNGFlNGVjNTVjNmU4Y2UyYjBiYWYyNzk4NzAyZmFmN2E1MTMyZCBsZWdhY3ktdHJ1bmsKKzE4MzUzIGY2NDAzOTAyM2Q2NDkyM2EwOWZiZTQ4Yjg0OGM0NDY5ZjExZjQ4ZDkgbGVnYWN5LXRydW5rCisxODM1NCBmZDg0YjM1MjQxNDU3NjEzODlkNmNiZDhmOTk2OTBjY2JhN2ZiNDhhIGxlZ2FjeS10cnVuaworMTgzNTUgOGI1OTY0NTFmMWMxOGYxNzRmZGNmYTlhZWEzZWJhMzk0OTNlZjYyNiBsZWdhY3ktdHJ1bmsKKzE4MzU2IDMyYzQ0MGQyYjBkZmQ2ZGQxYzc2ZGZjNDcxNzliMmY0ZTBiMWQxNTUgbGVnYWN5LXRydW5rCisxODM1NyAyNmQ0MTRjMGEwOTIwMmUwYmYwNTFkYjdkOGM5MDkwNGEwYTYxM2E3IGxlZ2FjeS10cnVuaworMTgzNTggZjNiZjVmMDgyYTNmOGE3OWZmMjE2YjRmY2ZkNTZkZTZiMTQyYmYxOCBsZWdhY3ktdHJ1bmsKKzE4MzU5IDQ2Mjc1NjExY2Q1OWJlODg4MjUzZDIxZjJiM2M5ZTE0MzYwMWQxYWQgbGVnYWN5LXRydW5rCisxODM2MCA4YmU4ODllODExNWJjYjA0ZDRmYzlhYTU4OWJiNTVlMGY2N2ZmMmNjIGxlZ2FjeS10cnVuaworMTgzNjEgZDEzN2I5NGYzZGRmZDE2ZWJlMzU0ZjNlZjQxY2EzNGQ5OWI1MzZmMiBsZWdhY3ktdHJ1bmsKKzE4MzYyIDU1ZjRhNmU4YjViM2E3ZTQzMWI5MzI5YmY0OWE2OWI4NTZiZDBkNGEgbGVnYWN5LXRydW5rCisxODM2MyBkYWFkZDFlODUzMTY1ODE4NGM4NjhkNzkzNmE0MjI1ZjZmYTYyOGRlIGxlZ2FjeS10cnVuaworMTgzNjQgMzk3NDJjOTFhZGQzZTQ3ZTExMjhjNDA5MTM3ZDk1ZmRkMmU2OTEyMSBsZWdhY3ktdHJ1bmsKKzE4MzY1IDRiNjU4YzA1OWMyM2Q5ZGY5Y2JjYmM0OGM3MjY4OTJiYzYwNDVhY2UgbGVnYWN5LXRydW5rCisxODM2NiA1ZTlkMDEyN2FjZTlhMWNjNjAxYTcwNTRiYzMxNDNmMmRiODhkYTBhIGxlZ2FjeS10cnVuaworMTgzNjcgYWM4MzBjOWU5YTgzNzJhMzFjMWI3NWY3ODcxN2Y3MDk5MGJjYjg3NSBsZWdhY3ktdHJ1bmsKKzE4MzY4IDM0MDU4YWY5NzZjZWNlZWFkZjEwMzI0MGJlYzI1ZTVjOWNjNzA2NDggbGVnYWN5LXRydW5rCisxODM2OSBlY2RlNzcxNDI4ZjllYjQ3MmU4NjVlOWQzMGYyNmNkMWExZTEwN2Q1IGxlZ2FjeS10cnVuaworMTgzNzAgMzA1NDZhMmI5NDUwZTU4OWM5ODA5NTEyMDNlMmQ2MDIzMWM5Njk5MCBsZWdhY3ktdHJ1bmsKKzE4MzcxIGRiNzU3MDIyNWVmODQyMTlhOTAwYmZhN2IxOGZmNDM2ODEyZTFkMjYgbGVnYWN5LXRydW5rCisxODM3MiAzNDgwZTgzZTE3YWJiMWU4NDdhYzIyMTRhZTlhOGU2ODViYWYxYzExIGxlZ2FjeS10cnVuaworMTgzNzMgZTExYzEyMzIzZWJmNWM1MDkyNTFkOTYyYzE4NDgwNzQ5NzQ1ZGFhNiBsZWdhY3ktdHJ1bmsKKzE4Mzc0IGVmYzk2YWFiNzFjMjg5MWQwN2UxMDNlYjNiZDIxOGExODQ5ZmZlN2YgbGVnYWN5LXRydW5rCisxODM3NSAzZTk0Y2MyYTA0NzNmZjVmOGJkNzU4NjllYzA0NTMzMTkyZjFkYjQyIGxlZ2FjeS10cnVuaworMTgzNzYgZGQ1ODNjMzNmNDU1YWNhMzUzZTQ4YjgyNWM1NDhmYTY2NzJmZDFiMCBsZWdhY3ktdHJ1bmsKKzE4Mzc3IGMxMzMzNjU3MmY0ZjQxYTAxYmMzOGNmNWM5MTkwOGExZjAzMGViN2YgbGVnYWN5LXRydW5rCisxODM3OCA1ZTQxZWJkZmE5YTAwZTQzZjU2YzhmMzhjYTk5ZjE2NDE5NjQyYjZiIGxlZ2FjeS10cnVuaworMTgzNzkgYzBhZDRjMmVmNDQ0NjFmY2EyODZmMzcyN2I5ZDIzODBlMjhlMjMzZSBsZWdhY3ktdHJ1bmsKKzE4MzgwIGVkMjlkZjdlYjVjOTYxODZlN2QyMDAyNzkxY2FmY2U1YjlkN2NiYzcgbGVnYWN5LXRydW5rCisxODM4MSA4ODU0ZDlkNWFkZDVmNDYyMWUyZmU3MTk1ZjM3Y2MxMWY0ZjVmMDlmIGxlZ2FjeS10cnVuaworMTgzODIgMDcwZWUzMWNhZjI4YjcwZWMwNTEyMmIxZjIxNDZhM2MwNmIzZmFhZSBsZWdhY3ktdHJ1bmsKKzE4MzgzIGFhYTU0NzUyZTRiYWQwMzk2MDVhY2M4MzlkZjA5ZmU5NjNkZTYyNzkgbGVnYWN5LXRydW5rCisxODM4NCAxMDIyMWE2YzdjM2M1ZjZjZWNhZmYzYjMwODJhNTE1YWM5YWRkOGM1IGxlZ2FjeS10cnVuaworMTgzODUgY2YxNzUwYzNmN2Y3Zjk4ZDA4ZWRmMDAwZmFmYzRiMGY3OTU3MDYyMyBsZWdhY3ktdHJ1bmsKKzE4Mzg2IDMyYzU1ZjU3NDZkZWQyMGEyMzUzZjc0OGUyOTNkODJjZTk3OGFkYWQgbGVnYWN5LXRydW5rCisxODM4NyA4ZDlmZmZlZDM0ZjQwNjRiZGM5MGQyYTdmNWNhODMzZTU2NWI0NmE3IGxlZ2FjeS10cnVuaworMTgzODggMDQxZDU3ZTNhMmI5MDRiZTVhOGZmZjBjYzZmMjk4ZjUwN2ExMTFhNSBsZWdhY3ktdHJ1bmsKKzE4Mzg5IDVmZTJlYzUwNDgzNmMxMGYyMDk5OTQ2OGY2NTY5NTA5NTNlZThhYmMgbGVnYWN5LXRydW5rCisxODM5MCBhOTNkNzlkYTRmOGM1ZGJjZjNmODRiZGM0MDcwNzY2NTRlOWQ1MjQ3IGxlZ2FjeS10cnVuaworMTgzOTEgNzlmY2QyYjMxODA4YmRlNmNkYTE0Nzg2MzE1ZWI2MmFjOWY1MzU5NSBsZWdhY3ktdHJ1bmsKKzE4MzkyIGFkMTRkZGJkMDlhNzI1ZWY2YjQzZWVhMTQzYmM3MjgxYzYwNTdkMDAgbGVnYWN5LXRydW5rCisxODM5MyAyOWY0MjY5NDQwMmI4MGNkOTQzNzViMDI4YzIxMDU2ZGFjYzlkMjY3IGxlZ2FjeS10cnVuaworMTgzOTQgNWQ5OGQ0OTcxM2YyMWExYzY5M2RjYjMxNDE4MTQ3MjQyODJiMDFiNSBsZWdhY3ktdHJ1bmsKKzE4Mzk1IDBjYjc1MWI1NjM5MTZjMzBlOGU3YTZlYjM1NTVlYjVmNmNhMDA3ZmQgbGVnYWN5LXRydW5rCisxODM5NiA3ZWUzOWUxNGNmMmIwZjgyYzRiZTg1YWUwOWViMmM0N2ZlZDMwNjkyIGxlZ2FjeS10cnVuaworMTgzOTcgYzU5ZjY0NWRhZWRlZDBkZGE0ZThiMDExMjU5ZTYwNWM0NmZmMDc1YSBsZWdhY3ktdHJ1bmsKKzE4Mzk4IDUwMzU4ZDY0ZGM0MzdiN2U1YWIzOTE1YzJkYjgyYWE0NGU2NjY4OTEgbGVnYWN5LXRydW5rCisxODM5OSAzYjA0ZDM0MjVmZjBmMzEwODk0Y2U3MjU1ODcyMzI0Y2JmZDNkOTJlIGxlZ2FjeS10cnVuaworMTg0MDAgNWFhYzU4NzNhYWFlN2QwNGRmN2NkMzllMjc2ZDZiMGVjODdmODliZiBsZWdhY3ktdHJ1bmsKKzE4NDAxIDlkNDMxMjljOGM1NWYzMzdhOWJmNTk1NmIxN2I2MjY0OTE1OTE5YjggbGVnYWN5LXRydW5rCisxODQwMiA1OGJjOTllMDEyYTg1ZmE5OTc3MTViOGRmZDYwNmZkYTAwODc2NTIxIGxlZ2FjeS10cnVuaworMTg0MDMgNjM1OTQ4MDEwNmVjZmE5OWFkNjE5YzRlYmQ3MmJjYWUwMGM1NDRmZCBsZWdhY3ktdHJ1bmsKKzE4NDA0IDc4NTE1NWUyY2ZjYTI5NDlmMGQ3N2ZiNjA2MGU1Zjg5NDQ5ODk4YmQgbGVnYWN5LXRydW5rCisxODQwNSBjYmQ0ZjM1NWJiOTZmNzk4YzMwYzFmZWI3ZjMwMjUzZjg2Nzg2OGQ0IGxlZ2FjeS10cnVuaworMTg0MDYgZDY5NjExY2NlODc3NjgzYmNjNTk3ZDJlMjU2ZGRlMjZiY2QzNWNlNCBsZWdhY3ktdHJ1bmsKKzE4NDA3IGJiOTNiMWRjYTU3MTk4ZDE5YWQzODQyOGQ3NWNlYjU0ODRkYTdjMmEgbGVnYWN5LXRydW5rCisxODQwOCBhZjdjNjIzZDhkMzNiZDdhOTAwM2MxMzViMTI5OTFlNmJiYjgxOTNiIGxlZ2FjeS10cnVuaworMTg0MDkgZjNiMDY4MmQyNmQ2MDExYTM3ZjViMTc3MmZkYmMyYzRjZDYwMjQwZCBsZWdhY3ktdHJ1bmsKKzE4NDEwIDJmZGJjZGVlMmUxZjJlZDY4YTVlOWE2ZWRiYzYxOTA1ZDkzM2IxMzUgbGVnYWN5LXRydW5rCisxODQxMSA4NDU2NDZiMDliZjgyNDU4MmI4NzFkMDkyN2ZmOTcyMGE0YjJlNTE0IGxlZ2FjeS10cnVuaworMTg0MTIgZjliMTg0YTU3MjIzOTUwMTc5YjFjNmNmMTAzZGRjMzI3ZjJkYjhjMCBsZWdhY3ktdHJ1bmsKKzE4NDEzIDRkOWMzMWYzMmMwOWMyNGJmZTI0NDBjYTY5Y2E2Y2UwMDQzMTdkMjQgbGVnYWN5LXRydW5rCisxODQxNCA1NzQzOTMzNmMyZTBlZTk2ZWY1OTIyMDEyZjdjYjJlZjE1ODdmYTY2IGxlZ2FjeS10cnVuaworMTg0MTUgNDM1NDZjNWFlZWNjZWE3ZWQ5OTkwODljOTljZDYwMDdkYzg4MTc1YiBsZWdhY3ktdHJ1bmsKKzE4NDE2IGY3MjM0NWI0MzY2MjAxY2ZlNTY1NGUxZmQxMWUzZDY5NGNmMzFjMjUgbGVnYWN5LXRydW5rCisxODQxNyBkM2Y2ZjMxNTVjMjQwNGJkMWM5MWQ2N2EwMmNhNDE3ZTQ1OWI5ZDUwIGxlZ2FjeS10cnVuaworMTg0MTggYjE3NTQwMGU4YjIyYWZkMzNjOTQ3YjMxZjg0YTMxYTM0M2FiYTc4MyBsZWdhY3ktdHJ1bmsKKzE4NDE5IGM4MWJlZDAxNjhhMDk0OWNiMTljYTI0NDlkYTZmZThiYWI2MTVmYjEgbGVnYWN5LXRydW5rCisxODQyMCBkMDhmOGNlYjNkNTU2ZTNlZTQ1ZjQ2MWNlYmUxYjcxZWQ1OTM4YWRmIGxlZ2FjeS10cnVuaworMTg0MjEgMTQzNjQ2YmFmZDFiZTg5MGY2ZGZlZmIxNTdiM2NlYWZlZjBjMzk1ZCBsZWdhY3ktdHJ1bmsKKzE4NDIyIDk0NTNmNmZhY2VmYTQ1ZTE3NjlkMzYxOWQ1NWVhODIzMTZlMGM4MDggbGVnYWN5LXRydW5rCisxODQyMyA3NGVlNjYxNTgxYjZkNDdlODZlNTQ0ZDJiYTc1YjM5YjdiNDgwMzQ0IGxlZ2FjeS10cnVuaworMTg0MjQgMzVlOGEyOWU1NDg4NGUwM2JhNTJlZmE0NjQxZmM4MWY1OWFhOTcyZCBsZWdhY3ktdHJ1bmsKKzE4NDI1IGMxMDQyNmRhN2JjZTI0MjBkNTkzMDdkNWNhNDc4MWU4NjQ0OWFhYzQgbGVnYWN5LXRydW5rCisxODQyNiA0YzIwMzc5ZTY2M2Q0NTgyYmYwYTQyMTZiYWY0NTg4MDBmMjU1N2MzIGxlZ2FjeS10cnVuaworMTg0MjcgOTk0MjJkNjEwZGIzYWU5NmYzMTI4YjgwNGRlYWM4MmJlNmZlYTE5ZiBsZWdhY3ktdHJ1bmsKKzE4NDI4IGQzODUxNmNlNmYxNDE5ZDdlMjkzODcwODQ0MzI1NmMxZGRmOTFkZjUgbGVnYWN5LXRydW5rCisxODQyOSBiMzQyMGIwMDJkNTVjZjcxOTBhNDdhM2MyY2NiM2NlMDFjOGQ2NTVlIGxlZ2FjeS10cnVuaworMTg0MzAgNTZhZGM2OGUwNmY2OTEzZGM5NDczOWM1NDk0ZGYzMjgzY2M0NTcxYyBsZWdhY3ktdHJ1bmsKKzE4NDMxIGQ0MTBmNmFkM2M2MDE4ZWVhMzE0MTA3YWYxYjYzYTk4NTNhNTk3ODYgbGVnYWN5LXRydW5rCisxODQzMiAwMjdlZTlhODcwZDJjMjMzYzhmZDE1NTZlNWE4NjM5MjM3MTk5ZmU4IGxlZ2FjeS10cnVuaworMTg0MzMgMjE3NWU1NjdiZDA2MjkwZGJiYTcyODBiMjgwODA5NjQ3OTY1YTYzMCBsZWdhY3ktdHJ1bmsKKzE4NDM0IDI0MDc0Zjk3MjM1YzQ5ZDNiMzkzZDdhZDFlNmZhMjRhMDk2NjBiOTEgbGVnYWN5LXRydW5rCisxODQzNSA0YTlmMTU1MmJhNjhlMGJmMDM5ODcwMzk2NjU3ODUwMzE3MGMwMWE1IGxlZ2FjeS10cnVuaworMTg0MzYgMDNjMzJmYWExYTQ5YjRjN2M1NDQyYzJhMDdlMmMwYmU4NjIxZjI2MCBsZWdhY3ktdHJ1bmsKKzE4NDM3IDU4ZmU5MzdmNzM0YTQ4NzhhZjQ0OWI5YTU5OWZiOWZmOGQ0NmU1YjMgbGVnYWN5LXRydW5rCisxODQzOCA5NmMzYWUxM2RkY2E4MThiMjEzY2MxNDZkM2QxN2QzZTY0MWE5MTYzIGxlZ2FjeS10cnVuaworMTg0MzkgZTA3NjVjNTUxMmQ3MTk4OTdkMDVhYTRhNDNiMmU0NzVmMWY1ZjY2NyBsZWdhY3ktdHJ1bmsKKzE4NDQwIDMxZDc4ZjM2MTUzMGNmMDg3M2U5MzQxNmU2MjBhZDAwOTQyYzIyMTUgbGVnYWN5LXRydW5rCisxODQ0MSA2NjgxNjZhNTBjNzA3MWI2NTc2MjkxNWQ1MDM0MWNmZTQ0ZWEyNzdkIGxlZ2FjeS10cnVuaworMTg0NDIgYWZiNDViN2ZhMjUyOGNlYTkwNDcyMmI2ZDY1MmRlY2VhZWU0MGQzYyBsZWdhY3ktdHJ1bmsKKzE4NDQzIDYxNzlkNGFmYTRlNGU1Y2ZmM2MyNTYyYWI2ODBmZjM1Mjc4ZTJhZGUgbGVnYWN5LXRydW5rCisxODQ0NCBiOGY1YjcyNjdmMTQ5N2M0NTYzOGExZTJhODFlYjk1MzVhYjE2NzQ3IGxlZ2FjeS10cnVuaworMTg0NDUgNjdjMjRjNzRmMThjYzQzNDRjNDE0YjIyYTcyMzhjMTc1MzIxMWFjYiBsZWdhY3ktdHJ1bmsKKzE4NDQ2IGIyYTliYzkxNjY4YTdmMjQwZjQ5M2E4NjYxZWQ4MjA0ODY1YWEzNGIgbGVnYWN5LXRydW5rCisxODQ0NyBmZjg0MTEyZGFiYzg5NTIzNjA1ODIyZjBlN2FjNTA2Njk4MjQ0NzgxIGxlZ2FjeS10cnVuaworMTg0NDggZWJjZTliMjY3YmI4ZWE2MTkyZDE5OWYxYTY4M2M4MzkxMWVkZTRlYiBsZWdhY3ktdHJ1bmsKKzE4NDQ5IGNlOTIyMzAyODE2NDhjZmQ1YzA1YWMyNjE5NzdmNjI5NWI0M2M0MDQgbGVnYWN5LXRydW5rCisxODQ1MCA4NTdhNTQwMGJlODdlYWRhY2U4NzBmYTM4MzI1ODhlYjBmNjdmZWNlIGxlZ2FjeS10cnVuaworMTg0NTEgMWU3NTZmOTNiZjVkYTFlOTdkMzhmMjNkMmJhNjdiY2FlODZjZDc2NSBsZWdhY3ktdHJ1bmsKKzE4NDUyIDM2Mjg2NjMyZmYzYTkzY2YyM2Y5MmJkYWQ5ZDhmYWNiM2YwMzBhYTggbGVnYWN5LXRydW5rCisxODQ1MyA1Mjc1NmY2MTNjMTgyYThiMzAxNDY1NmExNTg3OTY5OWEwYTc4NjFiIGxlZ2FjeS10cnVuaworMTg0NTQgOTY5NDkwOWRiYjBhNzk4ODZjNTIwZWYyODcxOGMwNDliYzI2YTI1OCBsZWdhY3ktdHJ1bmsKKzE4NDU1IDE3NzlmODU3NGE4M2EwZjQ3Y2I2ZTQyNmVlNDJmNjllMDgxY2Y3MzkgbGVnYWN5LXRydW5rCisxODQ1NiAwZjQyZjY2NjllODAyYzJlZjI0NmM5ZDBjNmFmNWNjZWExZjQ2NGVlIGxlZ2FjeS10cnVuaworMTg0NTcgNTlhNDVmYTk1MzE4ZmVlZjc3OTA4NWVjMTM4ZmE3NTEyYzg4MDAxMyBsZWdhY3ktdHJ1bmsKKzE4NDU4IDNmZTU5ZWQxMWFmMTBlNTQxMjg2ZjZiYjk0MmUwYjcyZDFlMTI1NWEgbGVnYWN5LXRydW5rCisxODQ1OSAxNDhiOGMxYjcxM2E5ZGE5YTA4YjAxNWNkNWQ0NDY5ODQ3ZTc3Yjg2IGxlZ2FjeS10cnVuaworMTg0NjAgZDVjOWRkMjRkOTc3YjhjNzA0NTJiMjllZWM1M2FlZjQ4ZThkZWI5ZSBsZWdhY3ktdHJ1bmsKKzE4NDYxIDY2MzBjY2EyOThjYzBlYjlmY2RhNzJhNTA4N2MwM2E4MjRjMTAzYmQgbGVnYWN5LXRydW5rCisxODQ2MiA1MzQyM2VjMGE3Mjg4NGIwNTdmNDYxMjRlY2VkZTljMjAzNzg1Zjc2IGxlZ2FjeS10cnVuaworMTg0NjMgZTIzZDViMmUyMjhjNDJjMjM4YjYzNDMyZDE1MjQ3MjJjOGRhZTI3MyBsZWdhY3ktdHJ1bmsKKzE4NDY0IDk4N2M3NGM4ODQyODk3ZDZmODM2Njg5ZTJiN2ExZDg2MWJhMTRjNzkgbGVnYWN5LXRydW5rCisxODQ2NSAxNWUxZWIxMDE5YjhhMzdhZjQ4OGFjZjM2ZGViZmZiN2JjZjViMTQ3IGxlZ2FjeS10cnVuaworMTg0NjYgZTFmMmUzZWM3NmQ0ZmU2YWZiZjQ2ZmM3ZDAyZmZhOTRmNWY5Y2I2YyBsZWdhY3ktdHJ1bmsKKzE4NDY3IGY5OWJiNmE5MmU4NGY3ODFhNjdlYmZjZTY1MTI4Nzk0NGU4MjZiOTEgbGVnYWN5LXRydW5rCisxODQ2OCA1OWJmYmJlNTgxYzJkMGJhOWU3NmM4NGE3MWJiNWJkYjM0N2NkOTg4IGxlZ2FjeS10cnVuaworMTg0NjkgZmYwNzY3NzUzZDgxM2RjMDgwYjQwY2MxNjBhZGFhYjU1ZmZjMmUwNCBsZWdhY3ktdHJ1bmsKKzE4NDcwIDA5MDZjOGUyYzk2MWMzYjAzZjFiM2FhZjNmODBjNTM3ZjI0NWJkNDggbGVnYWN5LXRydW5rCisxODQ3MSBlZDMxNWI1NWYxOWU2MmZhZjM4Y2RkMDM3NGI3ZWZjMzNhMDQ3NTU2IGxlZ2FjeS10cnVuaworMTg0NzIgMmZlNzQyNzU5MWVhOTY3ZmM4N2IwZDkxZGMyNjk5OTFjNmQxMGIyOCBsZWdhY3ktdHJ1bmsKKzE4NDczIGU1N2Y5M2FlNGZlOWY2ODUyYzJjZTliYTk3MDhlMTE3ZTQxYmM1M2UgbGVnYWN5LXRydW5rCisxODQ3NCAzNTc0OWE1NTdmMWU1ZDZkMGJhNWE3ZjliM2VmYzUwMmYxM2JjZDk2IGxlZ2FjeS10cnVuaworMTg0NzUgN2JiN2I3MmZhNjY2NmMxNTJmMDQyYTVhMTJlZGJmMTZhMzg2NGI2OSBsZWdhY3ktdHJ1bmsKKzE4NDc2IDA3ODlkZDA2MmQ2YzA4MzNkMDFmYmI0ZmYxYjQyMzI1NmM4NTNlODQgbGVnYWN5LXRydW5rCisxODQ3NyBlMTJiNjUwZjBmYWNlNmQxZjg3ZmRlOWNlZTkxYWZmNTQ5MjJjMDMxIGxlZ2FjeS10cnVuaworMTg0NzggMDUyZTM3MmNlMTUxYzg0Nzc3ZjNmZGQ5YTI4YjBiMjEyZjRlNWYwMCBsZWdhY3ktdHJ1bmsKKzE4NDc5IGQzZTg2ZmY4OTNiMTA1NmQ3ZTA2NTE3ZDFlOWQ4NmE1ODQ2YmNjNTkgbGVnYWN5LXRydW5rCisxODQ4MCA1MGQ5YjU5MDYyN2Q2NGUzNmQyOWEwNTgzYmI3NGQ3M2U4OWU1MWVhIGxlZ2FjeS10cnVuaworMTg0ODEgMzBlYzg3MzMzOGFkMTU2NDRmZGU3ZmFlZTI0NjYxZDBjOWVhN2Q0YiBsZWdhY3ktdHJ1bmsKKzE4NDgyIDgyNjJiZmE1MTRjMmMwMDI5M2U3MzZkMjZmNWJhOGM2NzY2NjEzNGUgbGVnYWN5LXRydW5rCisxODQ4MyBmNTk0OTM5N2M4YTU4OGZmNmVkMDFkMzgwZWE0NjlkZTE0NWNiNjBkIGxlZ2FjeS10cnVuaworMTg0ODQgZGI2OWMwOTJjOTA2ZDM5NzkzNGIzMDIzZDY3ODI5Yjg5MzExYzdlOSBsZWdhY3ktdHJ1bmsKKzE4NDg1IDUwZGUzYjE5OGE2MjA1YjA1NzAwY2MyYTNiODA3ZWJkZmFlZGIzMzcgbGVnYWN5LXRydW5rCisxODQ4NiAzOGYwOWZiMThiODAyMGM3N2EyYzZjOWQ2OGE5ZjRkZmYzZWM2Y2FjIGxlZ2FjeS10cnVuaworMTg0ODcgNTM4MDk3MTk5NzgzOTg2ZDM0Yjc1ZWFlNjgwY2NkNWQzZWY2NzJlYiBsZWdhY3ktdHJ1bmsKKzE4NDg4IDdlMmJiOTk0YzJkM2FjNmU1NjMwMmUxMmI4ZDM0ODY0MjNjY2Y2YjUgbGVnYWN5LXRydW5rCisxODQ4OSA3ZjIyZTM0Y2U0MGUzZWFhMmNiOTJlYzU2Y2Q3ZmE4ZDc4OWU0MmNjIGxlZ2FjeS10cnVuaworMTg0OTAgNTBiYmVlZGJjZTRhNjgzYmEzMDYzZjgzYmIyMDJkODIzNDE3ODZmYyBsZWdhY3ktdHJ1bmsKKzE4NDkxIGRiN2VlNWM2MGFmMGI4N2QyMzA2YzAyMDg2NDljNzY2MTA4ZDY3NTAgbGVnYWN5LXRydW5rCisxODQ5MiA1NTJkYjhkODNhY2Q4OTZkMjFkNjNiYWU2ZGYwYjlkNjdkMjUyMGQzIGxlZ2FjeS10cnVuaworMTg0OTMgMTk3NTZiOTE4MDQxNjYyNmY5NTQ4ZTc4MmExMzZlYzY3ZmUxMWFhOSBsZWdhY3ktdHJ1bmsKKzE4NDk0IDJhNjEyYWUyNTA5NTkyYTJjMzgwOThjMzRhYTU2YjFmNzExZWVhNWEgbGVnYWN5LXRydW5rCisxODQ5NSA0NDZmM2Y5MzlkZjAzOTc2NjU3ZTE5MWNiM2MyYjkwMjZkZjAwYjQ2IGxlZ2FjeS10cnVuaworMTg0OTYgODM4NTUxODY5NzkwNGQ4OTNiNzAyYzQwNWRlNDI0OWM5MjlkNmZhYSBsZWdhY3ktdHJ1bmsKKzE4NDk3IDJkNmU3Njg5ZGM0MjA1Nzk1MmJjNjJmMjc0NWRlYzVhYWM3NjY5M2MgbGVnYWN5LXRydW5rCisxODQ5OCA3ZmI3YzUxYTJlNjE2MjAwN2MzZWIzYzVhZDc1YzFiOTNhYTRkMmQ3IGxlZ2FjeS10cnVuaworMTg0OTkgNzYzOWE5NTUyNDc5ZTMwOTNkYWNhODJkMzcwZWMwYWUxMTY1NmI4YiBsZWdhY3ktdHJ1bmsKKzE4NTAwIDdmYjUwOTliZTIwMjY5YmM1MGI3MjNiNTczYTBiOGQ4YjkwM2FhZGEgbGVnYWN5LXRydW5rCisxODUwMSBjNGJlYzdjNGQ2ZmY2NDEzOGRjZTJhMmM4MGRmNjRjMmI4ZTg3NDI4IGxlZ2FjeS10cnVuaworMTg1MDIgZjBjZGEwZDRiNTNjMjA4MjZhOGU1ODNhYTAzMDE3NTQ3NTdlNzM2YSBsZWdhY3ktdHJ1bmsKKzE4NTAzIDE5YzhhMmQzODA3ZDU4ZGEwNDBlYWE3ZDNjZTZmMzg4YzFmODQ3YTEgbGVnYWN5LXRydW5rCisxODUwNCA2M2I4MGI3N2Y1YjJkYjMwOWY5ODcyYTZlYWE1MTEwMjZmYzgyZDY0IGxlZ2FjeS10cnVuaworMTg1MDUgOGNmZTI2ZWQ3MjhkOTQyZDBkNTJmMWE0NTYzMWRjYmNlZDUwZDliMiBsZWdhY3ktdHJ1bmsKKzE4NTA2IGMxM2Y1YTIwZWEzMTIzMzhhMWZkNjliMzRkZGUxYTVjZTI4YzExNDYgbGVnYWN5LXRydW5rCisxODUwNyA1YjE1OGZjMGVkNTU1YTFhYjFlODQyNDUxOTMyMzFhMDE5MDFlNjcyIGxlZ2FjeS10cnVuaworMTg1MDggZTlmNGI3NjY5OWFhMjMxMGRjZjE5NjVjMTMzODc5Nzg1NThjMTcwNCBsZWdhY3ktdHJ1bmsKKzE4NTA5IDFhNGE1YTkzNmY1MDhjZTVjNTQ3ZmEwMDg0NDcxODkwODIyMmE3YWEgbGVnYWN5LXRydW5rCisxODUxMCA1NmM3NDQ4M2IwNTBjYzIxNjcwZWY1NzQ5M2UwZTQxOTM1MjMxNDE5IGxlZ2FjeS10cnVuaworMTg1MTEgMmYxNzhiZGRkYzE2MzdkMWIxNWMyOGJiY2ZiOTFhNzY3NjQ4NjVhMyBsZWdhY3ktdHJ1bmsKKzE4NTEyIDkyN2JjYzMxNWU1NmU4MzAxZjJjNTVlN2IxY2ZhNDc1OTY3ZjlkYTkgbGVnYWN5LXRydW5rCisxODUxMyAzZTI1NGY1NmVlZjFjZDVjNGYyNzY1ZjQyMTlmODlkZDQ0YzE1NTY5IGxlZ2FjeS10cnVuaworMTg1MTQgODJiZWMzODhjNjM2MjlhYWM1Yjg0MGE4YTgxZDQ2NTRlOGYyOTg5MSBsZWdhY3ktdHJ1bmsKKzE4NTE1IDY0MDVmMzBhYTA4YzJjYzUxMDhlY2E2ZTMzZjdlMzkzOTRhODM1YTYgbGVnYWN5LXRydW5rCisxODUxNiA4M2Q1OTk2NTJiNjIyYjUzOWFhYmVkYzhhMGRmODIwNzUzMTE2Mjk5IGxlZ2FjeS10cnVuaworMTg1MTcgMTczZDcwZTcyYzlmNjVhZThhNWE5NmQyZWU4YTQxNzQxMWRiOGM1OSBsZWdhY3ktdHJ1bmsKKzE4NTE4IDAyNmE5MjEwNTE0NTI4YzRkYmVmZGVlN2U5YTZjMjM1Yjc3MDJmOGYgbGVnYWN5LXRydW5rCisxODUxOSA1NmNlMzhlNTc1MDI2YmIzYzJiMDY5Njc0Nzk0MjllZDY2YTQ1MTNhIGxlZ2FjeS10cnVuaworMTg1MjAgNjU4NWQzYzA0YTI5ZDg1NjlhZDY0ZDY4YmEwYWY1MWNkZjJkOTI3NyBsZWdhY3ktdHJ1bmsKKzE4NTIxIGVhZjVhNzhiZDI4MjcxMThhMjYxNjZiMzA5MDNiNGQ2NGE4MTJkMDcgbGVnYWN5LXRydW5rCisxODUyMiBhZmFkNjU5NzVhODJlNWM0OTlhY2UzMTA3MjE4MzIxMzhjYzJiN2I3IGxlZ2FjeS10cnVuaworMTg1MjMgNWYzZWU1ZjFiM2Q3OTdmOWVkZjQ4Y2JlMmI3YmI3Mzc3MzY2Nzg0MiBsZWdhY3ktdHJ1bmsKKzE4NTI0IDFlNDE3MTcxN2U3N2NjZjE4MWZjNmMxZDNiNzA4OTJlOWQ4NDNhY2MgbGVnYWN5LXRydW5rCisxODUyNSAxODNkMGJkMmZkNjZkYzJlYzU0YTA4Njc2ZjQyMGU1MmY4NDE2ZTVkIGxlZ2FjeS10cnVuaworMTg1MjYgMTY5MDc1NWM1OTg2YmFiZDM0NDA1NWY2YThmZGRjODZjYjVmZWFlNiBsZWdhY3ktdHJ1bmsKKzE4NTI3IDkwZWExZTNlZWViMTRkMzQzZGQ5MWE0YjAwMWRiMWVmZDFlYTZkNzAgbGVnYWN5LXRydW5rCisxODUyOCAzZDU1YmY2NTY5OWFkZGM0NmEwZmU4MjYxMjkwNWFhNTI4MDc3NDU5IGxlZ2FjeS10cnVuaworMTg1MjkgOGI0Y2E1ZGE3ZGMyNjVkODc2Y2IzMTIzNzE5OWVhNjcxOTViYTZmYiBsZWdhY3ktdHJ1bmsKKzE4NTMwIDVjNjVlNjc2ZjI5OTZjNTBmMDg2NGI0ZjA0ODM4MmZhOThiZjk5NTQgbGVnYWN5LXRydW5rCisxODUzMSA1MWI1ODk4MDQwNTE0ZjgzYmU3NGE3MzQzMzc3MTRiOTEwM2ZlOThjIGxlZ2FjeS10cnVuaworMTg1MzIgYzNjOGJmYWQwN2NhMzJjMzI5YzhjMmU5M2Q2ZWM2MmE2ZjU0N2VjZSBsZWdhY3ktdHJ1bmsKKzE4NTMzIDI3N2E3YTE1ZWI5NGIwNTM2MTUyYzU1ZWFlZDBjODI2ZTdhNjcxMGMgbGVnYWN5LXRydW5rCisxODUzNCA2N2IzYWM0MzlmNjQwMjI4MGY5NTdjMzEwOTE1YTM1ZjJkZTg0YzRkIGxlZ2FjeS10cnVuaworMTg1MzUgNzVjM2E2NDg0N2M0OWFmMjA3NjUzMmY1YmY1M2YxMGQwNDQ4MzFiMiBsZWdhY3ktdHJ1bmsKKzE4NTM2IDkzYTU3NWJiYTA5ZjZmODU2ODhhN2I2ZWI2N2NlOTlhYjU0OGE4ZWQgbGVnYWN5LXRydW5rCisxODUzNyAzZjJmZjM4Y2M2NTc0ZWQ5OWMxMjE4MGRhZWFlZWU0ZWQ5ZTUwMzE1IGxlZ2FjeS10cnVuaworMTg1MzggMjlhMmExMTRlOWM5MzMyYzY4ZDBiNDAxNDE5MGU3ZDY2NjY1MWFmZCBsZWdhY3ktdHJ1bmsKKzE4NTM5IDAxYTRkYzMxYjU3OWIyNGQxYjY2N2U0NTI0YjBlMDVkOWE3M2I2MjkgbGVnYWN5LXRydW5rCisxODU0MCA5YzcxYWRkN2UxNjA4MThhZWNjYTI3Y2MxYjJhYTkzNmZkOWQwOGU3IGxlZ2FjeS10cnVuaworMTg1NDEgZWE0ODMyZGVlYWM1OWYxN2EwYjc1M2UwNjVkYzQ4NzFkYTJhZTBlMiBsZWdhY3ktdHJ1bmsKKzE4NTQyIDNjYTcwMmNhYTYxYWVhY2M2OTk1ZDBjYmZkYThhODYyYTRlZTEwZjUgbGVnYWN5LXRydW5rCisxODU0MyBhNTE5ZjIwN2VkMzY4NzIzZGMyMDk2Y2RiOGI0ZDA4YTE2NDY0ZWYwIGxlZ2FjeS10cnVuaworMTg1NDQgMTA2MTJjYmI0NjIzYWRlZmI5NmNmNjlkZTk4MmJmMGExN2E1NDYwZSBsZWdhY3ktdHJ1bmsKKzE4NTQ1IGVjZGFjZjUxNzU5NDUyNWRhYTViOGU4YzI0NDUxNGUzMDkzMjhhMDMgbGVnYWN5LXRydW5rCisxODU0NiBkNmY4NjYxOWRiYzczNGZhZTNjM2RlNDc1ZTVhOWYxMTAyYzVjOGRiIGxlZ2FjeS10cnVuaworMTg1NDcgOTg2ZDFjM2NjZGRlOTFhMTQxNmM5MzVlODhlZTUzZDI5ZWIxYzAxZiBsZWdhY3ktdHJ1bmsKKzE4NTQ4IGU4ZjVlNjFhOGI5NDM1YTgzNjU5NTExY2ExNGFhMDE2YWJkOTJlNGQgbGVnYWN5LXRydW5rCisxODU0OSA4NGNkYzg5YWM1NjFmOTgyYWI3Yjk4YTNkNDZkNTY1YTYwYTc0ZjllIHJlbGVhc2UyMC1tYWludAorMTg1NTAgMTc1YTNiMTcyMDY4ODBhMjhkN2Y0MTZmYzExMGM4ZWEyOTgwNTQ5YyByZWxlYXNlMjAtbWFpbnQKKzE4NTUxIDU1NmE0ZTUzYzI2OTc3MzM5MTg4MWM2MTVkZmExN2ExMGQzZWQyOGEgcmVsZWFzZTIwLW1haW50CisxODU1MiBlNjA1NjI0MDAwYmYxOTEwNTA2OWIwN2EwYzY4YjI0NmFmYjY3YTUzIGxlZ2FjeS10cnVuaworMTg1NTMgZjQxNzA1MzA0YWY0NDJmMzJjZTkwNmRkMmY0ZDg5OTExNDZjZjA5YSBsZWdhY3ktdHJ1bmsKKzE4NTU0IDI4MGE3OGVkMDAzNTUyODA4ZGM0NGNiYmY3YzU3NjI2NmFlMTlkNGEgbGVnYWN5LXRydW5rCisxODU1NSA2ZjE0NTNiYmQ1NjkwMmViNGZhNzUxNzExMDEwNzBmMWI0MGY5ZWY2IGxlZ2FjeS10cnVuaworMTg1NTYgMTM5Njg0YTkwMDQxYTBlY2M4OTA3NmE3NjVhNGJmNjFjZDU5M2U1MiBsZWdhY3ktdHJ1bmsKKzE4NTU3IDU3YTQ4NTc0MzBmZjVkMjU3NzFkNWNmMjQzMjUzN2YxZTQ4M2I5OWMgbGVnYWN5LXRydW5rCisxODU1OCAzNmY3YzA5YzJkN2YyNDNlNmMzYTZmNWNmNzdmYzA5N2ZlNWEwMjdiIGxlZ2FjeS10cnVuaworMTg1NTkgMGMyMmFmMmNkZDZmYjM3YTcxMDk4OTRiYjYyMTdiMjFhMjQ0N2Y4OCBsZWdhY3ktdHJ1bmsKKzE4NTYwIDhlMDE0MTdlYzAwMTdhYjRlNGYyNTk2NDdmM2Y2NGQ4M2Y5ODMzODggbGVnYWN5LXRydW5rCisxODU2MSA0YjE2OGVlYjYxYjNiN2M3NGM2OGJkZGJhZjBjZTYyMzQ0ZjY0MTA2IGxlZ2FjeS10cnVuaworMTg1NjIgNWE1ZTllN2ZiNmIyMTI3MDljNDVhYmJjOGU2NGVjNDFiNGJiNWE2ZiBsZWdhY3ktdHJ1bmsKKzE4NTYzIDE5OTdkZmVkOGQyMWQ2ZDlmNWViZGQ0ZDVkMGM4ZThlZjQxMTY1ZDYgbGVnYWN5LXRydW5rCisxODU2NCBmNmVlMGQ0NjcyZDYyOTYwNjVkNmI4ODE2ZWEwODE1ZmUzNGJiMzEwIGxlZ2FjeS10cnVuaworMTg1NjUgNjEyZmI3NzI3ZmEyOThlMTZmMWNjOTQ0YWYzZjhkNjY2Zjk1OGU5MyBsZWdhY3ktdHJ1bmsKKzE4NTY2IGI0MDhhY2RjYWYzZWVlY2M1ZmYwZjJhMWJkY2M4MGRlNzgwMGRiYTMgbGVnYWN5LXRydW5rCisxODU2NyBiZjliYjBlM2RkMzQxM2YzMDY3NjJmY2ExOWJlODNkYTg5NTE5NmVmIGxlZ2FjeS10cnVuaworMTg1NjggMzA3NWExNTNhMDgzZTIyOWJkY2EyZmViYWYwMTkzMGUxZTAxZjRiOCBsZWdhY3ktdHJ1bmsKKzE4NTY5IGUyOTc4YzBiN2NiZDY5MjFhZjk2YTM5ZDM0MWIwYmYwYTk1MjA3YTcgbGVnYWN5LXRydW5rCisxODU3MCAxNjE4OTJiZjdjMTVlZmU5OGVkZjQ5OTAzZWZhOTAxZTJiNGI1MzFlIGxlZ2FjeS10cnVuaworMTg1NzEgYTYyNmUzOWQ2ODRkYzIzZmE2ZjVmNGFhNjFkZTc5ODZlNWQ5ZjBlYyBsZWdhY3ktdHJ1bmsKKzE4NTcyIDI0ODFiNWZlODZkNmRjZTdhYzQ2MDNjMzNiOTUxNWE2YmY0MzE5MTYgbGVnYWN5LXRydW5rCisxODU3MyA5MDFmMzhmN2Y2Zjc1NTA3NzUyZDAzNmEyMDcwNDA3YTVhMWIzY2QxIGxlZ2FjeS10cnVuaworMTg1NzQgMzY5M2FiZDBlYWMxZDQxYTQ3MDg3ZTAyNzZlNzU0YzU2M2ZmYzE4OSBsZWdhY3ktdHJ1bmsKKzE4NTc1IDJhMzA1MTI5ZDU2NmVjMTQzZTQyNzJhOGIwNTBiZjI4NTYxOWZjOTAgbGVnYWN5LXRydW5rCisxODU3NiA0ZDk3OGFkOGZiMDVkNjA0ZWE5NzRhMDY4NjczYjcyZDhiOTA1MTVhIGxlZ2FjeS10cnVuaworMTg1NzcgMzYyZTUzZjQzZGQyMzYxYjkwOTg4ZmU2NGM4MjgyZWQ5NDM4ZGU4YyBsZWdhY3ktdHJ1bmsKKzE4NTc4IGM2NTZmMzA4YWExZjg3ZmNmZGRmYTIzYWRmYjgwYjU4MDBiNTIxMDggbGVnYWN5LXRydW5rCisxODU3OSA2ZTJlYzhmN2M4NzFmNzRhM2JlYzJlYTFmZTYxMjdmMWFmYTlkNWYzIGxlZ2FjeS10cnVuaworMTg1ODAgMjY1ZjRlZjdkN2IxZDBkNjI1YTM0MzA2ZWMwNmFkOGQ5MDY4M2VjNyBsZWdhY3ktdHJ1bmsKKzE4NTgxIDA2MTI1MmY1YzcyOTZjZDM0Njg0OGVjYzM0MWE4ZWY2MmY0OGU1OTYgbGVnYWN5LXRydW5rCisxODU4MiBlYWQ4YjViOTk0YWQ3Y2U2MTJjZjYwZWJjNDYwMmNlZjVlNGFhMzc1IGxlZ2FjeS10cnVuaworMTg1ODMgM2U4NjJhNTE4NjFmZDZiNmRjZjE5MmUxN2Q4YmY3ZDM1MGRjNWEzMiBsZWdhY3ktdHJ1bmsKKzE4NTg0IGFjN2FlM2VhZDg4YTQ0YWFhMzU0OWFmMDBiNWZlN2ZlODFiYTM2ZTUgbGVnYWN5LXRydW5rCisxODU4NSAyZGNjNGE4NmE4NzZhNzFmN2M2YTllNzM3YWM1YTYzZjVjMzYwYTIwIGxlZ2FjeS10cnVuaworMTg1ODYgOGU0MDJhZWNhMGEzZDFjZGY4ZGMzNGJmYTBlNWY0NzhjN2U5YjIzOSBsZWdhY3ktdHJ1bmsKKzE4NTg3IGRiOWYxODkzYmUwMTY4MTY2NzYyNWFhMzQ4ZTNhOGJjOWQwNTU0MmEgbGVnYWN5LXRydW5rCisxODU4OCA2NDFhZDZjODMzYmU4MDRjYWRmNWFjODA1ZTJhYTM3M2NhYTMwMmJkIGxlZ2FjeS10cnVuaworMTg1ODkgNGRkMGI5N2FhNmUxNjY5MjhiMGM1YTVhMjZiOTBmZDlkOTljZDA5OSBsZWdhY3ktdHJ1bmsKKzE4NTkwIDJiM2JjMDhkNGQ4NTNhZWY0MDQ4NGYxM2Q5N2E1YTU4MjVmYTFiYjcgbGVnYWN5LXRydW5rCisxODU5MSBkM2M3ZWQxNWNlMjU3NzhlYjk1MTFmYmYxMDcxYTgzZDg0ZmY2NWU3IGxlZ2FjeS10cnVuaworMTg1OTIgYTA2NDE1OTk0Y2I1NmE3ODZmNjFmNWUxMDMwMDk0NTc0YmRhN2EwMyBsZWdhY3ktdHJ1bmsKKzE4NTkzIDNhZDMwMDRkZmU2ZGI2ZDlkNDNhODY2ODI3NzU0ZmIyMDYwMGYzMjMgbGVnYWN5LXRydW5rCisxODU5NCAwMGM2ODU1ZDc0MmE4ZDJhNTE4ODNmNjhlNzk0ZTdjZWI4YTk2YTNiIGxlZ2FjeS10cnVuaworMTg1OTUgMzE3YzIwM2FiZWU2ODZjYjZiZGEyODdhYmZhMWQ1MmU5OWYwZmUzZiBsZWdhY3ktdHJ1bmsKKzE4NTk2IDg1ZGMwY2UwMTYyZTZmM2NlNjU2NDQzZTBhNDY0MGU2Yjg5ZTdlMTUgbGVnYWN5LXRydW5rCisxODU5NyA2MTI0Y2VkZjg0MzhkYzg2YTBmODM5NTI0M2ZjOTRhMTZmMzZiZTY4IGxlZ2FjeS10cnVuaworMTg1OTggMjcyOTBlYjljNTI2NGIwN2I5NWM1YzlkY2RmZmNkNTQ2ZDkxZjMwOCBsZWdhY3ktdHJ1bmsKKzE4NTk5IDc2Y2FmMDg1NWQxZmZlN2U5NzFiYzExMDJjYTg5MjkwYTk5Y2Y4M2YgbGVnYWN5LXRydW5rCisxODYwMCA5NzgyMWE0NmUwMDAzMDNhNmI4MmMwOTIzMTYxZmUwYmMwNWZiMGM4IGxlZ2FjeS10cnVuaworMTg2MDEgMGE3NzAxM2M1MGFjYTIwNDViMTQ4ODRmNTgzMTgwNzVjNzdkMzE5MiBsZWdhY3ktdHJ1bmsKKzE4NjAyIDlkMTViYWY3MTQ1YWZmMmU1MDVjMGYyYjNiZjQ1YWVkYmIxZDg4OTQgbGVnYWN5LXRydW5rCisxODYwMyBhYmI5NDYwOTMxOGU2YzQzNDA0NzdkMGYyMTZiM2I2MjIzYTQ2NzhkIGxlZ2FjeS10cnVuaworMTg2MDQgYmY4MDg2NjgyNGVjYjVlZjhhNzhjNTlhMzg4OGVjMTE5NzAwYzNkOSBsZWdhY3ktdHJ1bmsKKzE4NjA1IDRjMDQzZTIyN2M0NDA3ZWFkYjA5ZjFmMWJkMzg4OTlmZGYyNGQ0Y2YgbGVnYWN5LXRydW5rCisxODYwNiBmNWMwNDEzNGY0ZTJiZDdhZDNhOWRjOGM1YWJjYTY3YTAzYjE5MmY0IGxlZ2FjeS10cnVuaworMTg2MDcgNGRiYmYzMjJhOWRmMmNmYmI1NTg5MGFjNDE1YTQzYjZjZjJhNmI3NSBsZWdhY3ktdHJ1bmsKKzE4NjA4IGZhM2Y1MzdjODI0OWM0NGFhZjY2MDU1NmE1YTFlZDMyMjllMjcwODAgbGVnYWN5LXRydW5rCisxODYwOSA3OWY5ZTMzMzMxNmU2YmNkZTJiMDlhYzFjMDdhZTQ1OTdhNjVkOGU5IGxlZ2FjeS10cnVuaworMTg2MTAgNzdjNzYxY2QxMjcyZTliMDMwNDNiZTVhMjZhYjNkNjQzNjI3OTJlMyBsZWdhY3ktdHJ1bmsKKzE4NjExIGQ2N2NmY2MwNjgzZWRhODRmZDE2NDE1NTViYjhlMDE5NTJlNGNmNjMgbGVnYWN5LXRydW5rCisxODYxMiA5MzliOGZmZmM0NTJlMDUyNWIzODAwNjFiNjMyODY4ZDM1NWU2ZTlkIGxlZ2FjeS10cnVuaworMTg2MTMgYzA4MjJhMDVlOTIzYjZmNTAwOTRkODU5MGQ0MjQwZWE4MTlmZDhiNSBsZWdhY3ktdHJ1bmsKKzE4NjE0IDhkMDBmNzU1NWVlYzI3ODJmODUwY2EwZmNmYjk4NjcwZmYzYWZlYjggbGVnYWN5LXRydW5rCisxODYxNSA3YzhmYWM0YWMzMWFiZDU4YzkzMWJhYmUyNmZlM2MwOWYwMDQzYjE3IGxlZ2FjeS10cnVuaworMTg2MTYgYTQzYThhMWY0NmVlMWJiNjVjNzQ3M2JjOWJlNjllMmEzZmI1MzYwYyBsZWdhY3ktdHJ1bmsKKzE4NjE3IDQ1OTc5Y2RjZDM2OTczOWNiYjg1OWE4NWY1ZjZjNWQ2NTVhNDk0NzUgbGVnYWN5LXRydW5rCisxODYxOCBhOWUxNWJjYWIzMmNiNjAxMzNkYjc2MTBmMDFiM2QyNmU5Y2UxNTJjIGxlZ2FjeS10cnVuaworMTg2MTkgYTFkODhhYjAyM2EwYmVjZDVkZWZhNTBiOGMzNTM2ZjM0Y2UxZTcyOSBsZWdhY3ktdHJ1bmsKKzE4NjIwIGEzMWMzODY4YzgxMmZjZTc2NjZkMTI0YjhjYjU0NDVmNmRlZGZhYzEgbGVnYWN5LXRydW5rCisxODYyMSBhNTZjMDAwZTU3OWNmN2U0MzU2NzFlZmNiOGE3NTIzNzM4ZjUyOTAwIGxlZ2FjeS10cnVuaworMTg2MjIgOTVlZTc5ZGZkNzQ2MjMxODY3ZDczODRlYjBiMDM3YTRmYTUxMDQ4MSBsZWdhY3ktdHJ1bmsKKzE4NjIzIGRlZjQxNmNkOTIzZGYyMmE4YjFhZmRhNDBjNGNhNjQ5ZDg2OTBkMGIgbGVnYWN5LXRydW5rCisxODYyNCAzNWUwOGRkMzdkZjEzN2UxNjUyODU2ODA1ZTkzOTVjMmVhNmNmZTI2IGxlZ2FjeS10cnVuaworMTg2MjUgN2IzZjhlNzYxYTJkODJkYjM3NmMyODMzMDc4YjQ4NTlkZTEzODVjZCBsZWdhY3ktdHJ1bmsKKzE4NjI2IDZkOGY3ZTEyNDJjMDI5ZDgxNjI4OThjMzFkNjY0NmEwNWIyMDNkMjcgbGVnYWN5LXRydW5rCisxODYyNyBkNmU2YTVjZmViM2Q2YjdkMDFhZTVmZWRlNmM0Njk3ZWM0MjgzODJiIGxlZ2FjeS10cnVuaworMTg2MjggODc0NWZiM2ExMTkxNzJhZDhlYjNmODA0ZjlhMDcxMGUwZjVmYmY4MyBsZWdhY3ktdHJ1bmsKKzE4NjI5IGU3OTFmNDkwNWQyNTYxYzI3ZmRhMTVkYTMyZTM1YWQ3MWYyYjcwYzQgbGVnYWN5LXRydW5rCisxODYzMCBmYjE0M2ZiMjM2ZDBhZjRiNjU0ZjIxMGZiNjg4YWZlYjRiZTgzZjljIGxlZ2FjeS10cnVuaworMTg2MzEgMThhNmU2ZDliNGY4OGJlZjM5ZjYzNGQ0YmU3YzM1MDZjMDI0ZWMyNCBsZWdhY3ktdHJ1bmsKKzE4NjMyIDA4NjhjMzYxYWY1YWZkYTJmZjJhY2UzOTAxMzY3OTM2NTcyZWMxYjcgbGVnYWN5LXRydW5rCisxODYzMyBlZGI5NjY2YzA3YzA0YThmOWU4NzljYzNhOWM0NWU1ZjA5MjA0ZmM2IGxlZ2FjeS10cnVuaworMTg2MzQgMDc2YmIyOWE2NWRjNGIwOTNjY2FjMzI4N2IwMTg0NWE5NDM5ZDBmNyBsZWdhY3ktdHJ1bmsKKzE4NjM1IDVkNmZiN2ZmNjhjNzlhNjlmY2U0NGMwNGIxM2NhYzBjZjE0NzNjMTIgbGVnYWN5LXRydW5rCisxODYzNiBlOGFhZDg0MjQ3M2E0YTVkYmMxOWY1ZGU3ODA3MThlZjI0MTljYjU3IGxlZ2FjeS10cnVuaworMTg2MzcgNDM3MGZjMTk2OTdlNGE5NjkzMGRlMGI5Yzg3OTY4OWUwZTVjZTBhNCBsZWdhY3ktdHJ1bmsKKzE4NjM4IDUwNzY1NDRjMzM4YjEzOWRiOWE2Y2EwODM5YzUwYTFhMzljM2FkOWIgbGVnYWN5LXRydW5rCisxODYzOSBiNWEzN2JmOWQxMmRhN2EyMTE0OGUyNWNhN2FmNjZjZWZhYTA3OGYxIGxlZ2FjeS10cnVuaworMTg2NDAgYzY2OWMyOWQxYjhjZGY5YmRkODBhMjgzYWVhYjBiNzkyMTRlMjMyMCBsZWdhY3ktdHJ1bmsKKzE4NjQxIGQ2NDZkNjA2ODkyNDMwZDE2MjIyYzVmMGZmNTg0ZmMwZWUwMzZhMDkgbGVnYWN5LXRydW5rCisxODY0MiBiMWM1Nzc4NDgwYTE5Zjk1NjM3YjBlZTE4NDNlYTc1ZmQzMGE4OTIyIGxlZ2FjeS10cnVuaworMTg2NDMgYWI1MzUyNDQ0MjA1N2VkYTBlMjI4ZjgyY2FlMzBmNDk3OWFkNmJjNiBsZWdhY3ktdHJ1bmsKKzE4NjQ0IGZjYTJjZjg1MGU0YWNmMTIyYjRlMTIwMGEyZWZkYzBiMTM1M2EyYzcgbGVnYWN5LXRydW5rCisxODY0NSA3OGM0YjYzYjViOWQzNTRmNzJlM2Q2OWY0MDlkOTYzOWU2MTMyY2U3IGxlZ2FjeS10cnVuaworMTg2NDYgZWZmMTFmYWM1ZjM2MzlhOTkxYzI0MTI2YWRlNWVjNmI0NjRkZTk0YSBsZWdhY3ktdHJ1bmsKKzE4NjQ3IDgzZTE0Njk3NGI3MmE0YTk3ZjI4NjBiMjJmNTM4NWMwNjNkOThjOWYgbGVnYWN5LXRydW5rCisxODY0OCBiMzFhMDQ2Zjg4YTc3MjQxMjllZGE1ODNjYTdkODQzOWRlMGI4YmRjIGxlZ2FjeS10cnVuaworMTg2NDkgZGRkM2Q4YzJjY2EwNTI4YThhZDUyOTQ3ZWZlMGVkMWRiYjFhZjhlZiBsZWdhY3ktdHJ1bmsKKzE4NjUwIDllOTU1NjkyNGIwYTc0MjFlOGNiYjQ0NjdiYjdkM2VkZDA4YzkyYTMgbGVnYWN5LXRydW5rCisxODY1MSAxZGIzY2E5NTMwYzI4NjNkZTdiZmIwYmQwOTlkN2RmMWI2ZmM1MTg0IGxlZ2FjeS10cnVuaworMTg2NTIgNDg1NGVlNTg1ZTBkZjg4MWM4MDI1NjA4NTZiNjhkMGQyNGJkMGE2MCBsZWdhY3ktdHJ1bmsKKzE4NjUzIDAxMzE3OTM3NmZhMzVlNTNlMDYwZWU1NzBmNzllMTE1NTBjYWQwOWYgbGVnYWN5LXRydW5rCisxODY1NCAwZmRmYWFlYTVlMmY5MDMxY2UzMDFhODE4YmEzYTBlMTljZmJlNDM5IGxlZ2FjeS10cnVuaworMTg2NTUgYjdkNWY2OGJlMDE3ZjRjODAzOWJiODU3YWZiZGIxOWQ5MmYyYTE5OSBsZWdhY3ktdHJ1bmsKKzE4NjU2IDYzYzA0ODNlZmY2OGZmOGQyMjc0NDk2OGM1ZmQ2ODI4YzZiM2Y4OGIgbGVnYWN5LXRydW5rCisxODY1NyBiNTdlM2UzNzQzMTRlMzUzYjVhODcwYWVlNmY3ZDc0MzdiYWM1NDI1IGxlZ2FjeS10cnVuaworMTg2NTggZWRkMTkyMTdiMzk2OTVkYTliYTc2OTc2ZWI3Y2M4NDZkMTMyOTY1MCBsZWdhY3ktdHJ1bmsKKzE4NjU5IGQwMjdlODVlMjA5ZjdkODRkMTlkZmM4ZGZkNTMxNDA2NDFiYzFmNjMgbGVnYWN5LXRydW5rCisxODY2MCA1YTMwOGE5Zjk5YTU2NjQ3ZmRiM2MyZDNhNDFjZjgyNGNlZDU4YTM3IGxlZ2FjeS10cnVuaworMTg2NjEgM2EyNjAyNzRiY2M2YTE1YjRlYzY3MDJmOGIxMGMzMTM5ZDdhOWZiOSBsZWdhY3ktdHJ1bmsKKzE4NjYyIDIyOGZmZDM2YTBkZGM3MzllMGI3OTNhNDYwNDg0ZmE2NjdhMDBhM2UgbGVnYWN5LXRydW5rCisxODY2MyBlYjE3NjdiMDY4ZmVjMjI3NmY3MzJhOTI4ZTRkMTZkMjZjNDExNzA5IGxlZ2FjeS10cnVuaworMTg2NjQgOWI2ODE0YmZiMmMwZDlmNTMyMjM5OTI4MWNlOWFjYWIxMTgzNmZjOCBsZWdhY3ktdHJ1bmsKKzE4NjY1IDM3ODE5YTc3N2ZjMGM0OWVmNDMwZTQ3YTBjYTNkM2Q3OTE2MjZmYTMgbGVnYWN5LXRydW5rCisxODY2NiA1NDE1ODA0ZmIzNDVjNjkyMjRiZmYxN2Y5MWZhZmQ4NWJiYWMzOGRlIGxlZ2FjeS10cnVuaworMTg2NjcgM2I5YjhmMmRkZmU3OTZiY2Q4NzMwODA5NGU5NzgyZWQ0YjM4ZGFkMyBsZWdhY3ktdHJ1bmsKKzE4NjY4IDIyZmVkMmIxNWE1NGIyYjVjMWE1Njg0YWFmYWI3NWY2ZTIzNWIyZjUgbGVnYWN5LXRydW5rCisxODY2OSAzN2QxMjAyMWRmMDUxMTM0NTk3NDFiODJmNDUzM2ViZGI2ODEyNGI1IGxlZ2FjeS10cnVuaworMTg2NzAgZjk3NzJmODdiMTNlM2QwZmNlNmRhNWY3YmEyNTA3ZmVkZDY4YmI2NiBsZWdhY3ktdHJ1bmsKKzE4NjcxIDk1NDYxMWZkMzVlMWU5NDBkNDZjZjEyNmViYzFiYTcxYTRmOTM4YjkgbGVnYWN5LXRydW5rCisxODY3MiAxYTAwZDIxOTEwYzg5ZjFiMzhiMTJhODY1M2MxYTI2MmQ2ZTU3OTliIGxlZ2FjeS10cnVuaworMTg2NzMgYTU2M2VlYzQ2YzFhYmU5MWY2YTEzYzAwYTYxOTAwMjMxNmMxOTYyMyBsZWdhY3ktdHJ1bmsKKzE4Njc0IDA2NDAyNmRjNzY0ZTg5ZTUwZTdhODBhYTdiMWVmZGFkNDgzMDVmMDkgbGVnYWN5LXRydW5rCisxODY3NSBmYWFmOWYxMGQ4NDk0MzllNzkxM2M5ZDQ1Mjg2MGQzNDNjMzI0N2MxIGxlZ2FjeS10cnVuaworMTg2NzYgODY4ZDJhY2Y3NDU4MDhjOTAzM2Y1N2NkNTgyOWQ5N2E2OWVjZjU2ZSBsZWdhY3ktdHJ1bmsKKzE4Njc3IGM2OGIwNjI0OWQ4YTIxNDY3YTdhZTUzYzVmM2I2YzRiZWJhZDlhMDQgbGVnYWN5LXRydW5rCisxODY3OCA2NDVmOGZkNmZhOWRjYzU5OTUxY2MyZDI5ZDI2OTgwNTI4OGYwN2U4IGxlZ2FjeS10cnVuaworMTg2NzkgMmQzOTkwNjU2MjQ4MDA0MTgyNjBlZjdmOWQ0M2JjZWM5ODU1MjZjMSBsZWdhY3ktdHJ1bmsKKzE4NjgxIDc5NzcwY2ExNWM1YTlmNTI5MTRiMTYyY2I5MDFlNWU0YjNlZTcwYTEgbGVnYWN5LXRydW5rCisxODY4MiAzM2I0NDRjYmFkYjk5MmE3ZTU3MjkxYmI5ZTc1MzkxM2I4N2E2YmVkIGxlZ2FjeS10cnVuaworMTg2ODMgMGYyMmZlYjkzOTdkYjliMWI4MDdmY2U2MDRkN2Y4NmQ5NGEwNjc4ZSBsZWdhY3ktdHJ1bmsKKzE4Njg0IGM3ZGZiYTBkYjg3OTBiMDA0ZDExZmJjM2I1YmE1NTcxZmJkMTY1ZjYgbGVnYWN5LXRydW5rCisxODY4NSA5ODIxNzc3ZjhkYWQ2YzBmNDVmMzJkYjgzNTNlYTk5MDcxZGNmZmY4IGxlZ2FjeS10cnVuaworMTg2ODYgN2Y3ZWY5NDQ3ZTU5ZmNhNGI4ZTIwYTUyYmRkMzE1MzM1N2RmZWIwNCBsZWdhY3ktdHJ1bmsKKzE4Njg3IDQzMjhmZmU2NDdiZjdiZWFmY2NkZDc1NTgxMzhlZTJkOGI3ODM5ODMgbGVnYWN5LXRydW5rCisxODY4OCAxNzQ0OTBlOTI0ZDQ3ZjE5MmJkOThmYThkZDJlZTUzZDY5ZjUwN2YyIGxlZ2FjeS10cnVuaworMTg2ODkgODFkYjkyZTgwZWE4ODYzZGI5OTlmYzllZWVhMzY0ZmNmNzI1NTdmNSBsZWdhY3ktdHJ1bmsKKzE4NjkwIDA1YWQyOTdlMTQ0ZmU5N2RlNTJlZTAyYjc1MDQ0ODg4MGMxMjBjZDcgbGVnYWN5LXRydW5rCisxODY5MSA5MzA4ZGM4Yzg1ZTAzNWM0NDRiNWQ0ZmE3YTI5OTFiMTc0MDEzMDdiIGxlZ2FjeS10cnVuaworMTg2OTIgZTAwZjcxOGU0ZDhhYjM5NWU2ODE5NGUzZGNjZTE1OGU3Y2NmYmRhNiBsZWdhY3ktdHJ1bmsKKzE4NjkzIDlhMjM4NWVlMWQ5OTQ0NjQwNzYxNzg1NWM4NGQ2MjRlZTZiZGQ5MzIgbGVnYWN5LXRydW5rCisxODY5NCAwYWUzODllOTM1ZmM0MTZlYjg3NDM3YmNkMzVjZTM5MTg4MTQ4YzNiIGxlZ2FjeS10cnVuaworMTg2OTUgN2VhMzBhMTYzNDYzNmQ4ZmVhYzJkNjRlOGJiNThjM2NmOWMyYjExYSBsZWdhY3ktdHJ1bmsKKzE4Njk2IDZlMzI5ZjNlMTdmMGU1MzlhNjI4ZDg4ZDMwMzU2YmExZDZmMjgxNTMgbGVnYWN5LXRydW5rCisxODY5NyBiMWIwYTcwM2VjNGU2YTNiMDY3M2QxM2QyYjNiZjE1NzQwYjZlYjcxIGxlZ2FjeS10cnVuaworMTg2OTggMGU0ZjQ4YzVmYzg0ZDg4MDYwNTNkOWM2ODU1MzkwODYzNDdiZGJkYyBsZWdhY3ktdHJ1bmsKKzE4Njk5IGJiMzAzYTc2YTQ3ODM3Y2YwNDcyNjZiYjQ2NzllN2I0Y2I2ZDE1NTYgbGVnYWN5LXRydW5rCisxODcwMCA2N2M4YWJkMjEwMjVhNTQyZmVhNzYzNmNjODNhMTQ4OGU1NzA1NzU1IGxlZ2FjeS10cnVuaworMTg3MDEgM2I2NDM2NTNlMDc4MjBiZjU3MzViMjZkNTZhNjYxNzg1M2ViZDg3OSBsZWdhY3ktdHJ1bmsKKzE4NzAyIDdkNTAyNWJiYTAzN2M2YzRmYTUxMDkxYjk4OGU1OTVhNjVhOTU1MWIgbGVnYWN5LXRydW5rCisxODcwMyAxN2ViYTc0MDQwOTljZTUzZDNmNTg2MjE0MWFkYmZlMjkzZTJkMWRkIGxlZ2FjeS10cnVuaworMTg3MDQgZjZjZDM2NDk4YTUwM2YzMTY1MTY3MzEyZmRkNWFjODY2YTg4YzI5MiBsZWdhY3ktdHJ1bmsKKzE4NzA1IDYwMWM1M2E5ZTQ5ZGYxZmIyMGE5MmU4ZjY0MWYwYzZkMjJlMDM3NmQgbGVnYWN5LXRydW5rCisxODcwNiAyODMzNTZmYjZlZmM3NTlkYWE3OWQ0NTE1NzE4NDRkMGUyMjI3YTZhIGxlZ2FjeS10cnVuaworMTg3MDcgMjEwYmJlNTNiNmQ0YWM3OGJkZWI0NzQ3MzNkMWE5NDkzYmU3MDg4MyBsZWdhY3ktdHJ1bmsKKzE4NzA4IGQ0MWY5YjBhNDBjYWE2MTQ3ODk1ZWU0Y2EyNTc2YTBlZmI4MmI1MTcgbGVnYWN5LXRydW5rCisxODcwOSA2NzlkNTA3MDVlMDY5NWUxMTY2YjQzNTIxMjBiYzFlZjQzY2E3NWM0IGxlZ2FjeS10cnVuaworMTg3MTAgNDA1YTU5NzM1ODQxNmQwMmE0MDkwNWRmNDkyY2FmNmE0OWIwNGU2OSBsZWdhY3ktdHJ1bmsKKzE4NzExIDE3ZDNhNjNlMjJjNzQyODM5MGY4MjIxMjU3YzJiODdlM2RmZWM4YjIgbGVnYWN5LXRydW5rCisxODcxMiBjNzA0MjE0MzM5OWYzMTg0NGEyZDBhMjI0MjE1MzEyMDNmY2U0MDZmIGxlZ2FjeS10cnVuaworMTg3MTMgYTNjMWEyMzRjZWU3MTg0MTRjYzI3YzhjZWVkMGU2ODBiYzNkZWQxMCBsZWdhY3ktdHJ1bmsKKzE4NzE0IDBkOGI1YjNkOWQ4M2QwNjZjZWQ2ODFiOTllM2EyY2Y2MmU2Yzc2OGUgbGVnYWN5LXRydW5rCisxODcxNSBhODRiNTNiYTkwYzQxZGJlZGNhMzNjZjQzNjIyN2VlZWJjZWE2ZjAyIGxlZ2FjeS10cnVuaworMTg3MTYgZmM3NjU0NjRiMTc4MDEyYzdjYzJhYjliNDI0ODFiNzFiZDBiZDU5YyBsZWdhY3ktdHJ1bmsKKzE4NzE3IDE1MmQwMDcxODAwNjA5ZDUwYjBjYTRlOTYyZmVlN2E3Nzg1MjNkOTUgbGVnYWN5LXRydW5rCisxODcxOCA4YzcxNDA5YWMwYzM5NGQxOTY2NTg2OThlODk1NDFkZTUyMjE1YTExIGxlZ2FjeS10cnVuaworMTg3MTkgMGE4ZGE2ZjM5N2I3OGY1ODE4ZDkwNzg3ODQxNzA5ZGVlOGIwZGE4YSBsZWdhY3ktdHJ1bmsKKzE4NzIwIDgxZTNkODYyNmFkZjBmNzkwNTc5YmE4OTUxMTA0MjkxYWFmZWMyYWIgbGVnYWN5LXRydW5rCisxODcyMSAzMTk2N2EyMzM2MDA5MmE1Yzg3Zjg3ZGIwOWY4NDgyZGJjMWJhYTQ4IGxlZ2FjeS10cnVuaworMTg3MjIgMDgzYTVjNzVlZDkwNDUyMjEzYjQ4NDYwNDYwODk2MmI4ZDIyYzFhOSBsZWdhY3ktdHJ1bmsKKzE4NzIzIGU3ZjZkNTRjMDE0ZDM0MWVlNTNhMzc1YzlmNWU3YWExMjI4YzM3ZGIgbGVnYWN5LXRydW5rCisxODcyNCBmYzFlNTgzMWZlMTA3N2I3ODIxZWUzZDVmZmUwNTU4Zjk2NjVjNmVlIGxlZ2FjeS10cnVuaworMTg3MjUgNzFiMTlkMzZhYWZhOTNmZWIwMDNjMjE0MDI3OTAyYTczZGI3MjU5YSBsZWdhY3ktdHJ1bmsKKzE4NzI2IDFiMDNmNzZhYjAzZWE3NDI1NWViNzU0NTJiOTZhNDk5NWI5NGM4ZWUgbGVnYWN5LXRydW5rCisxODcyNyA1NTc4ZTliNDI0ZDRhYThkZGNlNTZlYTBhY2ZkMmRjMDRiYmYzMjRlIGxlZ2FjeS10cnVuaworMTg3MjggNzBhNTllM2ZiMjc4YmI1MjBlOTcxMzdiY2NkYzU1YThkODhkNjlmZCBsZWdhY3ktdHJ1bmsKKzE4NzI5IGY1YTNkOThhMzViYzRiZGM3NGE4NGZiYTZlZWQ4NTlkMGYwN2FkMjkgbGVnYWN5LXRydW5rCisxODczMCAzMDYwY2JmYTAxYmU2ZGZjNmZkYjg4ZjBmNWMxMGI3M2JiZmJmMDZkIGxlZ2FjeS10cnVuaworMTg3MzEgMWE0YzFjMGUxNGExM2Y1OTUyNjVhYjY0Y2IxNGNjNDkxMzg2NjFhOCBsZWdhY3ktdHJ1bmsKKzE4NzMyIDAxMGQwMzg1MzU0NjQ2ZjE1NzAwNTFmMTkzNmY2NTA3NDMzMWRlMGIgbGVnYWN5LXRydW5rCisxODczMyA2MmFlZWZhMDFmZGQ1NTRlMzBiNTA1ZTVlMDM3NzU0ZGU3MWM1NGU0IGxlZ2FjeS10cnVuaworMTg3MzQgMzY4NWVmMmE1NWE0OGUzZDZjMDBhOTE4ZWJhZmY3MzBmM2IyNGRmNSBsZWdhY3ktdHJ1bmsKKzE4NzM1IDNkZDIxN2ZiZGQ1OWIxZWQyNjgzNzIxODdkYzgxZDlmMTU4MDllYWMgbGVnYWN5LXRydW5rCisxODczNiA0YzAxZWUwYTgwNzNmOWRlNDhkMmMwZjU3ZDhiYWY4ZjVkNjM3MTEzIGxlZ2FjeS10cnVuaworMTg3MzcgMTk1NTU3YTBmMDUwYjgxMjcyZTJhNWE2MTU3ZTEwNzM0YTkyMjNjNyBsZWdhY3ktdHJ1bmsKKzE4NzM4IGEzM2RlMjNiMzA2NmZiY2RiYjI3ZTkxNmY0MmU4NDA4ODdlZDgzYWUgbGVnYWN5LXRydW5rCisxODczOSA5M2QwNTY3YzlmYzljYjFmMTRlODM3MmYxMTFmM2Y1Y2E4ZDIzZTliIGxlZ2FjeS10cnVuaworMTg3NDAgNzUxMjE1ZmEwZGE3ZjNjMzEyNjc0NjVmNGNkMDk2NzU4MWIyYTAxZCBsZWdhY3ktdHJ1bmsKKzE4NzQxIDkwOTkyYzgyZDQ2ZTlmY2ZmYzRmNWFmNDYwODExNGNiZjA0NmZiMzkgbGVnYWN5LXRydW5rCisxODc0MiAzZWExMGVlOTFlOWM1ZTVkNDk5Yjg0YjAwOThkMTJhNGRjZTNlYjFmIGxlZ2FjeS10cnVuaworMTg3NDMgNDE1NDYzNTMyNTVjN2YwYTliODQzNDVkZjEwYTQxMjhjNWM0ZjE3ZCBsZWdhY3ktdHJ1bmsKKzE4NzQ0IDE5MGQxNGI3MGMyN2I4ZjU1MzIwYzU5OTI0NDFiMTAxYzQ0N2U3M2YgbGVnYWN5LXRydW5rCisxODc0NSBmNDdkMWNiZmJlNzA2MzI0YjlhNmUzZDY4ZjNmNTIzOWQyMGVkZGQ2IGxlZ2FjeS10cnVuaworMTg3NDYgN2NkNDZmZjg5YmZjM2IwZWZmZTE4Yzg5NTRjNmZjOTZhZmVlMjY4OSBsZWdhY3ktdHJ1bmsKKzE4NzQ3IGU2YTBmZDU0YjYwNzJmYTg0YTI4ZWU1NjkwYTI4MGEzZWUyZmIzNmUgbGVnYWN5LXRydW5rCisxODc0OCBhNzAyNWYwNzA5YzViOTlmOTUwOGI4MjI2YzE5OTk1MDYxNDRhNWQzIGxlZ2FjeS10cnVuaworMTg3NDkgZjgzMTE1ZWRmMTZhZjZhZDZiNDdlODdmMGZlZWM5NWJhYzdiYzljMyBsZWdhY3ktdHJ1bmsKKzE4NzUwIGI1MzIwNjI5NWJkZmVmNzU0MjQyOTUyYzRhYzI0ZmQ5Mzk4MDJkMGYgbGVnYWN5LXRydW5rCisxODc1MSBiMGJhNDZiMTZlMDc1MDk0ZmIwNDRjOTVlYjkzN2Q1NDJhYTcyNGFmIGxlZ2FjeS10cnVuaworMTg3NTIgN2NiZTQ1ZDc5YWI1YzBiZDA2MjA3MjExNmYxN2IyMmQ3OTY4NzM5MCBsZWdhY3ktdHJ1bmsKKzE4NzUzIDE4YzRjN2NhOTNlYTA2YTE5Y2IzMzE3MWFiZTYxYmY1YjU4M2M4YmEgbGVnYWN5LXRydW5rCisxODc1NCA4ZWYzMWEwMzlhOTY0MGEwNTc1MWExMzY2MTJlYmU5OGI1OTY2NzMzIGxlZ2FjeS10cnVuaworMTg3NTUgNTUzYTMxNWY1OGU5MmZkMTMyZDE0ZDZlZDhkODdiN2NjNzU4Y2NhMiBsZWdhY3ktdHJ1bmsKKzE4NzU2IDFjNmIwZDNhNThlYWRiNTU2N2ZjY2RkYmQ4NjFmYzdkOTQ4NDRjNDUgbGVnYWN5LXRydW5rCisxODc1NyA4NzY0ZGZmYmFmMjM0ZTE5Njg3ZjIyOWZjODFkYTQzYjlkMzNlNzc0IGxlZ2FjeS10cnVuaworMTg3NTggYzg3ZTJhMmUzMzVkMGEyOTAyNjI1YjUyZTFkZGY0ZmNmMjExMGZiZiBsZWdhY3ktdHJ1bmsKKzE4NzU5IGM1NjhiYTlkYzE4MGEyY2EyMzA5MjRmNTE0YTAxMmQ5ODM2N2RjYmMgbGVnYWN5LXRydW5rCisxODc2MCA4MzY2ZmNmYjYwOTA0Y2ZiNWZhZjY4M2Q2MjQxYzk1MjhiZDMzYWVhIGxlZ2FjeS10cnVuaworMTg3NjEgMTUyODE0ZjZjZDExMzNlN2IzMmEyNzc2YWZhZTcyNGUzMzQ4ODIyZCBsZWdhY3ktdHJ1bmsKKzE4NzYyIDExMjllMTZhMTFkZmIzNTc5MTdkNWE2YThjMWQxNDI5MTk3MTFlMmUgbGVnYWN5LXRydW5rCisxODc2MyBjZDgzZjdhOWNkY2QxZjMxNTllNjM5MWJhMTZjMTA2YjYwZWMwYTFiIGxlZ2FjeS10cnVuaworMTg3NjQgZWVmMzIxYjZlNDFjZTY2M2M2ODZiN2ZiNjM5OGZhNmZkMzhkZTZlOSBsZWdhY3ktdHJ1bmsKKzE4NzY1IGM5ZGRiZTM0MDdmYTQ0MDBkYTlhY2NmZjRmMDdlNzVlMjliMzg4MWEgbGVnYWN5LXRydW5rCisxODc2NiAxNDk0NThhNTc0MGFmMWY1OTZkNWFlYjc4YjhiZmQxODVhMjNlNmM0IGxlZ2FjeS10cnVuaworMTg3NjcgMTNlNWViMDA2ZWIzMjFiYmZlNDkzOWMzMmE0MTc0YmRkYWFjNTBhZiBsZWdhY3ktdHJ1bmsKKzE4NzY4IDUwODkwZTM0NTRjOTUwYTg4ZWI0MzEzZTUwNGJhNmFlOGExMDQzYmMgbGVnYWN5LXRydW5rCisxODc2OSAxMzI1YmRlOTQ4OTZkZDVkZDM2Zjg1OWYxNTExNTJjM2ZkNDI0N2E3IGxlZ2FjeS10cnVuaworMTg3NzAgOThlOTVlMGY1YmVjNzQ1ZTllMDEwMjc5ZmU3ZTBhZjk2N2JlOTViYiBsZWdhY3ktdHJ1bmsKKzE4NzcxIDhkYjMxOWRkZmIzNzllN2NmNmE3Nzk4MjE3MzEwODY5MTZlZGU1MjkgbGVnYWN5LXRydW5rCisxODc3MiBmN2YzYmUzZDAwYjljOWRlZDZjNGZiNjEwMzRkMWVjZWVjNGIyY2FkIGxlZ2FjeS10cnVuaworMTg3NzMgYThlZGIzZjdmNGY4M2I5NWEwNTNiZWQwNTQxMzVjMTkzZjAxZjA2YyBsZWdhY3ktdHJ1bmsKKzE4Nzc0IGU4MjQ2NDQwYTgyNWM5NGRlYTlhZDI3OWZmNmY2YmJiZDMxNDgzNjYgbGVnYWN5LXRydW5rCisxODc3NSBkN2QxNjY1NTBjNDMzOWZhZWY5OGJiMjE5N2FjMjNlODdjMDg2MmViIGxlZ2FjeS10cnVuaworMTg3NzYgODhhMTI2N2EzMzk1ZWFmMTMzZTE5ODQ5MTViMDJkNmNmZWM4Njc0NiBsZWdhY3ktdHJ1bmsKKzE4Nzc3IDE4NTExZTExMjg3MDBkMWVkNWI4ZDY5MmU5YmZhZjgyYTBiZmVkNTMgbGVnYWN5LXRydW5rCisxODc3OCBhZTYzNmI4YWM0ODA4ZGY0YmJhOWNmYWJiOTQ4MjExMzM5NjNmZjBlIGxlZ2FjeS10cnVuaworMTg3NzkgYTM4MTkwZjcxYmYyYjVmNTc3YWI1MjMzZDBmZTUyNGU1MzgxZTMzMCBsZWdhY3ktdHJ1bmsKKzE4NzgwIGJhNmQ0YjUyMTgwYTc3ZmZkYzY2MjEzMGUyYjU2MjgyMGE3N2FiYTAgbGVnYWN5LXRydW5rCisxODc4MSBiZTI1N2E3NTUzYTIyNzE2NjNmYmQxMDVkM2YxNjY2ZDJlNDllMDc0IGxlZ2FjeS10cnVuaworMTg3ODIgMDA3ZjdmYWY2MmIyMDMxOGYyN2RhMGRiMWI0ODQxOTZkNDMzNTQ1YSBsZWdhY3ktdHJ1bmsKKzE4NzgzIDQ4OTY5MmU3OTE1MTQzMjE0MTQ4MGUxY2MwNGVlODYyZjAwZDM1NzYgbGVnYWN5LXRydW5rCisxODc4NCBmZGE5Zjg2ZGM0ZTg0NDU1ZGI5MzliNTZiNzAxMjBkYmNjODQxOGJhIGxlZ2FjeS10cnVuaworMTg3ODUgZmY2YzMwZThjYTczYzg2OWNmYmQxMmM0NDBmYzkwZGU5MGI0ZmU0MyBsZWdhY3ktdHJ1bmsKKzE4Nzg2IDcwMmVkOTk2NTIyOGJiMDdiNjBhN2Y3ZjBhNTBlNmE2MjZlMzI0YWQgbGVnYWN5LXRydW5rCisxODc4NyA5ZDViZWVkMGI5M2ZkZjM1YWNmMjExOTVmNTZhOWJmNGQ0ZDM3ZjJiIGxlZ2FjeS10cnVuaworMTg3ODggYWMxM2NlZjQyM2M4MzNmNWQxMjc5NzIzMjAzMTUxMzY5NDE1MjQ3OCBsZWdhY3ktdHJ1bmsKKzE4Nzg5IGM5NTlmNGIzZWZhMTFhZTQ5YTMxNzk2YjhhZGFlZTJiMjcxZWQ4NWIgbGVnYWN5LXRydW5rCisxODc5MCAxODcyZTYwOWE2MzRjMDJjMTQzYjE4NzA3OWM1YjUyYzQ0M2UxY2ZiIGxlZ2FjeS10cnVuaworMTg3OTEgYTQ4NDU5M2NkNDA3ZTFjNjYxNTc0YTA3MWZiMWZmYTE4Njc1M2Q4NCBsZWdhY3ktdHJ1bmsKKzE4NzkyIDE0YTI3YWNjNzU1YWI0MzQxZmI3N2NjOGM2NmQ5ZWU0MjI3MTBhMGIgbGVnYWN5LXRydW5rCisxODc5MyBkYzNiOWE1ODE2ODZjZDhjNGM0YTkyZGFiYjIxYTQ2ZTI0ODcyNzQ1IGxlZ2FjeS10cnVuaworMTg3OTQgMTg4MWI5Njg5ODliODhkYTczZGI4NDY1MDUzNzQ1NTA1NmQ2ZGQxZCBsZWdhY3ktdHJ1bmsKKzE4Nzk1IDM1YTQxOTRmOWVhZDliOTZmYzYzZjUyMjAxZWU3MjI1OTlmYTQzMzcgbGVnYWN5LXRydW5rCisxODc5NiBiMWE1ZWRiODBmNWNmY2VjYjViMzE2YmEyNjE0MTE4NzIzOWI0ZWNiIGxlZ2FjeS10cnVuaworMTg3OTcgMGIwZmNlMTRkNGU4ODI2YmZjNmJjYWIzMWRjOGI3NzQ5MTU3OWZlZCBsZWdhY3ktdHJ1bmsKKzE4Nzk4IGJlYzBmNjFjZmNkNTZlMDYzNGRiN2Y3ZTMxNDk4MmE0NGRjNzg2MjggbGVnYWN5LXRydW5rCisxODc5OSBkOWQwZGNiNzM1ZDdmN2FjNDU3Mjc1ZDFjMTUwN2EwMTRmOGQ2ZmJiIGxlZ2FjeS10cnVuaworMTg4MDAgOGZkMjIxYWVkMzU3NTliZjA5ZGViODM2MjA0OWFiNzJjZjRjMDgzNyBsZWdhY3ktdHJ1bmsKKzE4ODAxIDg2N2E0YTZlN2NkYTg3N2Y4N2I2Y2UwMGQzNzVmODI4YzZiNDllMWIgbGVnYWN5LXRydW5rCisxODgwMiBlYTQ2NGVkYTYxNTg0Yjg5ODk0MjMwNTg1ZDFhMzQ0NDZiMjczNGE4IGxlZ2FjeS10cnVuaworMTg4MDMgNWFiYWU3OTU3NDJlYTk2OTM3ZGZlYjFiZWQyNmU4NjNkMDA1MGUzNCBsZWdhY3ktdHJ1bmsKKzE4ODA0IDY0MzkwY2VhYWMxYWY5Y2Y5NjhmYzAwZmU0MzE2NzVmNThkOGY4NTkgbGVnYWN5LXRydW5rCisxODgwNSA1YjA2M2JhZWJlZjhjNmQ1N2NkOTRmZGYxZTA1MGUyMDhlYjUyMDg5IGxlZ2FjeS10cnVuaworMTg4MDYgZjQ2NGEwM2JlODVhZTZkOTEyYWFiZTBkNTUzNGZhMWFmODY3OWYxZCBsZWdhY3ktdHJ1bmsKKzE4ODA3IDJlZGY1ZWQzMDU4MzliMWNjZjI1NDExNzNlNjE4NDg3YTQ0NzRkMGMgbGVnYWN5LXRydW5rCisxODgwOCA0ZjYyMTcwODUxNGIxYWE1ZjIxYTA2MTMxMDQxMjU5ZWZiYzAwOWRjIGxlZ2FjeS10cnVuaworMTg4MDkgNmE4NTI0OGI0MzllYWEzZDkwOGVjMTNjNjJlMDk4YjAyZWE2YjUzNSBsZWdhY3ktdHJ1bmsKKzE4ODEwIDNiYzI0NDA0MjdkMzMxY2ZkMjE3YTkwZjY1ZDYzNmZmZTcwNDM4YjAgbGVnYWN5LXRydW5rCisxODgxMSA3NmFkMmE5YTNlNTM0ZTFjMDU2NGI0NjMzNTMzOWFkZjVhZGMyMGQ3IGxlZ2FjeS10cnVuaworMTg4MTIgZjJlMTM4OTViZGE3ZGY1MTgwNzcxNmZkMGFlMDFjZDBlYTVjMDliYiBsZWdhY3ktdHJ1bmsKKzE4ODEzIGRiMjZiNDNjOTI0ZjMwZGNhMDc0ZWJkYjczNTI0NTI3NTMxMTdlODYgbGVnYWN5LXRydW5rCisxODgxNCAxZjkyZDYzYjIwZjAyMzEwN2ZhNTllZWY0MDc5OTc4NGU4ZmY2MzI5IGxlZ2FjeS10cnVuaworMTg4MTUgODM0OWI0ZGZjNTFhZGU2M2QyNGZjOWMwYjI3MWYyMWZmMTdjZTUzMCBsZWdhY3ktdHJ1bmsKKzE4ODE2IDAxZWFlNDA4NTdkODNkYmU1OWFlZjgzOWE4NjgzZjllZGY0YTY3MzggbGVnYWN5LXRydW5rCisxODgxNyAyODNhMGIyYWFkYzVmMmFhOTRhYmYzZmE2Y2M2M2I3NDZlZWVjZmUzIGxlZ2FjeS10cnVuaworMTg4MTggODU3YWFkODQyYWU3ZDk5ZDEyODJmMzBkZmYwOGNlYWZjYzA5ODMzYiBsZWdhY3ktdHJ1bmsKKzE4ODE5IGMxYThkZWIxNWYwZTA2NmVlMWExMGExNzM0Mjc2MDcwYTBiZjMxY2IgbGVnYWN5LXRydW5rCisxODgyMCBjODIwNTU1MmRkZTFlYjY4ZGUwYzhiYjVmNjU2YTk0MWE5MDk4ZTA2IGxlZ2FjeS10cnVuaworMTg4MjEgZmRhM2ZmMTlkMWM0YTk2OWVhNjQ4NTRlZjI0M2RjYzVkYjdiMzIxMSBsZWdhY3ktdHJ1bmsKKzE4ODIyIGQ3M2IyMWRhZTI5YTJlZTg5ODkzZDA0YTk2NGYzOTJhYzBlYTRhYTAgbGVnYWN5LXRydW5rCisxODgyMyBjMDAwMGJkNjI1MmM2ODAzMjUwNGQxNGYyMTQ3MzVhODE2MTBiYjViIGxlZ2FjeS10cnVuaworMTg4MjQgZjE3NTFhYmY3NzFmZmM0YWNiNjExOTk2MzJjMmExOTc1ZWE5NDVkZCBsZWdhY3ktdHJ1bmsKKzE4ODI1IGNmMTdhM2NlNTM4NzQzZWQyM2FmMzJhZTZkMGNhYTVhNDcxNWVlNTcgbGVnYWN5LXRydW5rCisxODgyNiBkYzhhMzBiODg4N2M4MDczYmU1YTdkMjJkOWU4M2U3OGM1NTNiZTY0IGxlZ2FjeS10cnVuaworMTg4MjcgNWFiYjQ3MzA0YmM3Njg1ZTY5MGM1ZGUwODI5YTVmOTljYTIzM2RjMiBsZWdhY3ktdHJ1bmsKKzE4ODI4IGU1OWI4MzVhZDg5YTUyZWNmOTcxYzI0ZTVjYzFmMjY0ZGU5YjFhODkgbGVnYWN5LXRydW5rCisxODgyOSBkY2FlM2UwOGQ4NDg0ODU3M2MyZjJiYzk3NDQ0ZTc3ZDliM2M3ZjRmIGxlZ2FjeS10cnVuaworMTg4MzAgNWJiYTg1ZDQ5ZTVhZjhiNmMyOTRkNGFhMTlmZmJhMmE3OTEwNThkOSBsZWdhY3ktdHJ1bmsKKzE4ODMxIGUyMWRhODRkMGM2NWYwYTEwMjQyNGVkOGQ4NjhjNzc5NWQxNGQ0YmYgbGVnYWN5LXRydW5rCisxODgzMiA3NzAwOGYwN2NlMjVkYWEwM2M0NzI4MzdhNWFhZTY3N2E0YjEzNjY3IGxlZ2FjeS10cnVuaworMTg4MzMgZmY5Yzc5YmJjM2VlZDFiMjE1NmY3YTJlNzc3YjRkYzRkNjIzNzAxNiBsZWdhY3ktdHJ1bmsKKzE4ODM0IDg4OWI3YmFmOGJiYjRiM2M5ZGQyMDM2ZGQ1OGQ0YTlkYTc4NDE3NjMgbGVnYWN5LXRydW5rCisxODgzNSA3MjEzOTI2M2Y4YTc5NzUyZDIzMWU4ZDM5OWMwNDQ2YWQ1MDA5OTM2IGxlZ2FjeS10cnVuaworMTg4MzYgNWI5MTAzZTYyZmFjM2RhNGNmMjgyNWY5YzNhN2M2M2ZhZWRkYzkwYiBsZWdhY3ktdHJ1bmsKKzE4ODM3IDU0MjA1ODI4YjFlMTczYzZmOTJlOGYyZDlhMzM0MWRjODI2MGVmMmUgbGVnYWN5LXRydW5rCisxODgzOCA1MWZjNDUyNzZhNDMzZDdhMDViNTMzN2NkYmE2NzlhOWVkMzAyZjI2IGxlZ2FjeS10cnVuaworMTg4MzkgZjE2NTQ1ZjU4MzQ1NjA4YjVhZGNlODQzNzM0OTA3Y2M0MTBmMTIzNyBsZWdhY3ktdHJ1bmsKKzE4ODQwIDI0ZGFmYmIwZGI1OGY2NjJlNWUwZTNiNzIxMGFmZTg3NmFiNGM0ZTEgbGVnYWN5LXRydW5rCisxODg0MSBhMzZhNDkzMmUzOTkxMzVjMTU0MDRkNjU3NmFiOWZmZTViODI1ZDZhIGxlZ2FjeS10cnVuaworMTg4NDIgYWZhZTQwNjhkMmRkOTg4MjhmMjNjNjQzOTQ2ZDUyZDJkZDBjYjI4NCBsZWdhY3ktdHJ1bmsKKzE4ODQzIGQxY2I0MTM4ZmQzNGE0YTk2OTc1MjA3NGI3NzAyODVlYWRiY2Y1Y2MgbGVnYWN5LXRydW5rCisxODg0NCA5MTMwNGM0YzcyNTZmODNkNjAyNzVjYTM4Y2U1YTg1ODY2MDMwNWI2IGxlZ2FjeS10cnVuaworMTg4NDUgMmIyOTMxOWFlNjgxOTQwM2VmMDMzYzE4ZmNiMDFmZjNkZjM4MGM3YyBsZWdhY3ktdHJ1bmsKKzE4ODQ2IDZjMTc1MWY2YWZlMjNlMGRlYjQzNGI0NWFmYjRiNTQwMzI3NDlkZTIgbGVnYWN5LXRydW5rCisxODg0NyAxN2YyM2Y4Y2Q4Yzc3ZjJkNTk1OGM1MzNhZmE4MDJjMDQ4ZGI2MDA0IGxlZ2FjeS10cnVuaworMTg4NDggYmQ1YWVlNmI4MzkwZDRkYjIyMGYzOTNjNzFiMjQwZGEzYmVjZWI4ZCBsZWdhY3ktdHJ1bmsKKzE4ODQ5IDVmYjg2NTA3NTE5YzA5ZDlhZGVjY2MxZmEyYzU1NGU2OTQ3MmY2NjggbGVnYWN5LXRydW5rCisxODg1MCBhZTI5YTg5Yjc3YzNhMTI2NGRlODUzZTI4NzgzYzZjY2JhMDdiZWYwIGxlZ2FjeS10cnVuaworMTg4NTEgMWYxZWZmMDgxYTJhNzUxMmU4MjJkOTAwNGUzOGZiOGFmNTA5Y2YzYiBsZWdhY3ktdHJ1bmsKKzE4ODUyIDNmNGI2MDAyYzA3ZDMxM2RhNjM3M2M5YjViOTdlMWRiNmIxYmFkNjAgbGVnYWN5LXRydW5rCisxODg1MyA2MjA4NGNkOTU3YmQ2ZDRkMjQ4MWY1NjdhYmZhZDZkMjQxNGRjOTg2IGxlZ2FjeS10cnVuaworMTg4NTQgYWFjYmEzNzQ3NmQ0MjZlZDJjYTY1ZDJiOTg2YjJhN2IwMzg1ODI5MiBsZWdhY3ktdHJ1bmsKKzE4ODU1IGVhZTI2MTE3OTg2ZmE0YjhiMjIyNTgxOWI0NWU3NWY5MTA2MDg3MTkgbGVnYWN5LXRydW5rCisxODg1NiBmOWExNWE1ODNjNzlkOWE2MTkwNzVkMjNhZjg4NjBlNTdjZWYzOWQ0IGxlZ2FjeS10cnVuaworMTg4NTcgODgzMjViNzNhNmEzYjEyOTY2YThlM2NlODQ2ZjcwODRjM2I5NGY1NCBsZWdhY3ktdHJ1bmsKKzE4ODU4IGM1MDNmYTliMjY1ZTIyYmUyZTU1YWQ0YTVjZGQyOWVlOTcxNDA2MWQgbGVnYWN5LXRydW5rCisxODg1OSA2OTY1YzIwNWI2MDM2NGZlODhmZWI5NTM2YThlYTg0MmRiNTg4MDFjIGxlZ2FjeS10cnVuaworMTg4NjAgZjM5MGY0M2FjNGI2NDlhOWFhODMzZmJlYTJhMmM1OWI3YzBiNTFjMyBsZWdhY3ktdHJ1bmsKKzE4ODYxIDFkYzAyYjIyOTVhOTc0Njk1ZWM0YTZkNGFjMmQ5M2RiMjhkMmQ5MTUgbGVnYWN5LXRydW5rCisxODg2MiAzZjYxZWY3MmFlZjM1MDZlMjdjNGVkYTIwYjI1ZTJhY2M0NGZjNjUxIGxlZ2FjeS10cnVuaworMTg4NjMgZjM3NDA2NzRhYzViZjMyOTllZmY5NTZhZThmYTI5NzFhNjI4NzE2YSBsZWdhY3ktdHJ1bmsKKzE4ODY0IGUxZTc2ZmUzY2I1M2IxNTI1ZWNiNWM3YzA4NGJiN2NjOWE4ZDMzNWQgbGVnYWN5LXRydW5rCisxODg2NSBlOGVlMDc4NWM4NDY4NjhjZGRkNDg3M2M2MTVlZDcwMTk0YjYzNTBmIGxlZ2FjeS10cnVuaworMTg4NjYgOTI1MWNmNzBlZDFmOGI1ZWQ1YjNjMDJiY2UxNzIwZDlmZTBlNTg0MiBsZWdhY3ktdHJ1bmsKKzE4ODY3IGNlZDgwNDFlYjRlYTdkYTk1NTQ2YmQ3NDEzOTczNmMzNGJkODVmZjAgbGVnYWN5LXRydW5rCisxODg2OCA1MTgxMWQ3OGE5ZGFhNjRmZTU5YTNmYTVhNDZiNmMwZjI3NzVlNjZkIGxlZ2FjeS10cnVuaworMTg4NjkgMzIzNTJlMTIwYzM3OTQ4MmMxODgxMmQ5YWYyNjQ1NjEwNTFiYjE5OCBsZWdhY3ktdHJ1bmsKKzE4ODcwIDRjODU2YTE4MDQ1ODdiMDUxNzcwNTQ5YjhmNGRlYzA0NjU3Yjg5OTUgbGVnYWN5LXRydW5rCisxODg3MSAyZGY0NTc0ZDkwZmU2ZDg4ODQwY2U3YjhjYjQwNjhlNzBmZDM1ZTM4IGxlZ2FjeS10cnVuaworMTg4NzIgMzNmNWVlNmEwZWJlNzQ5ZmY0NWRmMmViZjgwNjk0NTYyMjY5Njg3OSBsZWdhY3ktdHJ1bmsKKzE4ODczIGQ5MGVlYWI1ZjlhNDE4ZWRmODMxMzI4MTQxOWY3NWFjNjNhZjc5MDYgbGVnYWN5LXRydW5rCisxODg3NCA4ZTRkZmI2ODE2ODliYTBjM2Y2ZWU0ZDk3OTEzMzFmMWE1NTlmYWEwIGxlZ2FjeS10cnVuaworMTg4NzUgOWJjNzU0NDEzYThjMmRhM2RiZDMwNWFjYjdmYzQ1YTA3YzIxMDRiYyBsZWdhY3ktdHJ1bmsKKzE4ODc2IDc1NGVjZDIxZmJlZjY1ZTJlZTE1NDk2NTc1YzQyYjlhYWFlYzIxZWMgbGVnYWN5LXRydW5rCisxODg3NyBjODMyZWY3MjQ5OWRiM2JkNTUyODFkZGI2ODFjMzRhZGMxMTQ2Y2E2IGxlZ2FjeS10cnVuaworMTg4NzggOGNhNmQ4Y2FmY2QzNzY3NGYwYzJmMThmNmExZDY0ZDcwY2ZkMTg5YiBsZWdhY3ktdHJ1bmsKKzE4ODc5IDcyMzRkN2MzYzI5Zjk3NWM5NDA0MDM4MjdhZTIzOGM4NDA3MmE0OWYgbGVnYWN5LXRydW5rCisxODg4MCAyMWU3YTE4ZGViZTY4MWI1NDUzZmJkYjA2NjY1NzFlMGUyNGM3NmU2IGxlZ2FjeS10cnVuaworMTg4ODEgNDZmNzcyYzZhMjAwM2NlOTIxMmQ3YmQ2NTMyYjNhMjlkMTg5MjJmZCBsZWdhY3ktdHJ1bmsKKzE4ODgyIDdjMTNiYzdjNDg1ZmE3ZTFhNDZmN2UzMGM2OTdlYzcxNjU0MDM2ODIgbGVnYWN5LXRydW5rCisxODg4MyBjZmFjMjI0NWEyYzcyZTExZjAwOWEzNDMxNzZlYTM4MWJhYzY5N2NkIGxlZ2FjeS10cnVuaworMTg4ODQgZDdmNTNmMTJkYmVlMWZmOTFmN2RmNzZhY2NjZjNmZTk2ZjZhOGNhZiBsZWdhY3ktdHJ1bmsKKzE4ODg1IGNlMGU0MWNlNzg3ZmZmOTNkNTBlNjUzNWUwZWY0YmIxMGE5MTg3OWMgbGVnYWN5LXRydW5rCisxODg4NiAwZjgxMjczNjZhM2Y3YmUyNzE3NDVlNTA3MjRmZDZlYmE5ZGQxNTgxIGxlZ2FjeS10cnVuaworMTg4ODcgNWRjMTc3M2M3ZjdjOTdlMDdlODI4M2Y3ZDk1MjNmMmM2NjJlZTZjOCBsZWdhY3ktdHJ1bmsKKzE4ODg4IDg2NTI2NjAxMWRmYTkyYTJiMWEwMGMxZWE5NjM0MzY1NGUyZjI1YWUgbGVnYWN5LXRydW5rCisxODg4OSA1OTg4Zjc2NDgwZDZkOWZhODc0MGFhZjFkMTBkZjZiOWE2OTQwMzY4IGxlZ2FjeS10cnVuaworMTg4OTAgODNkMzNmN2U5ZmQ0NTc0Nzg4ZWI3NmE5Nzc4ZmY1OWJkMWM4ZGEwMiBsZWdhY3ktdHJ1bmsKKzE4ODkxIDU1ZDg5YThmZTk2M2ZlYjE3YjExYzM1ZTM5MDEwOWRmMDNlOWVhMTcgbGVnYWN5LXRydW5rCisxODg5MiA4YmE4OTA5ZmI4MjMwNGVjYzk3ZTk2Y2Q3ZDJmZDI3YjkxNzgwYTlkIGxlZ2FjeS10cnVuaworMTg4OTMgMWJmNWQ4YjRjZWJlODhlZDA5MmYxNDk3OWRkZTJhMzk1MjQzNjBhMCBsZWdhY3ktdHJ1bmsKKzE4ODk0IDViYTQ1OTE2YWZjN2YwNzViMmU4YTMxYWJkMGM1MzJjZmM3ZDhkNDYgbGVnYWN5LXRydW5rCisxODg5NSA3NjE1NTExMjE4N2UwYWRkYjE1ZjM1ZmYwMWE3OTEyOWIyNzUxMGFkIGxlZ2FjeS10cnVuaworMTg4OTYgMTllZWUyZGIyYjE2Y2I1ODQ5OTQzY2IyZTE2ZDNkODFmMjc5Njc4NyBsZWdhY3ktdHJ1bmsKKzE4ODk3IDExNDRhZmI5NDAxOWNkYTA5ZmE5MjViNTRjOTk5MjcyYTkyZjdlNjUgbGVnYWN5LXRydW5rCisxODg5OCA3M2M0MWI0OWE5YjgwZWZlZDQ4Y2QxZTJkODg0ZTkxY2U2MGUzMzljIGxlZ2FjeS10cnVuaworMTg4OTkgYmEyOTVlMmM3M2VhNjA4YmRlMWQ4ZTU3ZDJjOWQ1MGRkYTI4ZDVlOSBsZWdhY3ktdHJ1bmsKKzE4OTAwIGI2ODYzYmE4ODk4OTYyZDU5YzlkODZiYzZlOWFkZjI3ZWI5YWM0YjEgbGVnYWN5LXRydW5rCisxODkwMSA0YTY2NThlMThmMzZmMTAwYzY5NGMxZTdkZTdmYTY4ODk5ZWVjMjI2IGxlZ2FjeS10cnVuaworMTg5MDIgNjNhMGE2ZDE4YTYwNDI1Njg0OGI1NThkYmE1YzUzNGNhMzBjMzQ0YSBsZWdhY3ktdHJ1bmsKKzE4OTAzIDMwZTMxYzJhYjYwZmE1OWJiODMwYjBkZDdmNDg3NzIyMmJkNzc4NmYgbGVnYWN5LXRydW5rCisxODkwNCA3OGJkOTdkODQxM2NjZjdiZjdiNDQzZjE1ZTYwZDQzMzMzOTgyNTEyIGxlZ2FjeS10cnVuaworMTg5MDUgOGJhYzA2NTkzOTNlYmRmZmRlNDc2NmI4NTM3OGUzYWY0NTNiZjcxOCBsZWdhY3ktdHJ1bmsKKzE4OTA2IDM1ZGZmNDcxMmM4ZTYyNWE2ZGQxNjQ5MzQ0ZjcwOWUyNmVlODRhMmYgbGVnYWN5LXRydW5rCisxODkwNyAzYTU2ZjY1MDk5YWE3OGRkYzg0MmViMGQyM2ZkN2Q5MzBjNTBkOWIyIGxlZ2FjeS10cnVuaworMTg5MDggNzkzN2JjYmJkZDI0YTA4ZDhmYTY0N2ViMjQ2MzMwZGZlZTIyMGIyZSBsZWdhY3ktdHJ1bmsKKzE4OTA5IGU1MGNmYTU0NzVmMzQyMDdjZTE5MWY3MWE3ZGVhMWQwNjVmNTM2YzAgbGVnYWN5LXRydW5rCisxODkxMCA3MGJiMTExOTA0NGFjZWVlYjMwN2Q1OWU1YmUxMjE3M2UzOWM5NGNiIGxlZ2FjeS10cnVuaworMTg5MTEgYmI4MDVjY2ViNDAzMDBhODQwM2U1NzMyYjM3MzNhZDJiODRlYjIxZCBsZWdhY3ktdHJ1bmsKKzE4OTEyIGU2MmQ1YWZmMGMzYWYxZDI0NDY1MzhkOGU5MTllYjZiNTU2NzQyNDIgbGVnYWN5LXRydW5rCisxODkxMyA0Nzk4ZGM3MzljMTlhMzlmNjQxMWJjOWZjN2UxY2U2YjgwMGQyYmY2IGxlZ2FjeS10cnVuaworMTg5MTQgNzVhMjFjMjMwYTI2ODE5ZjFlNzc3OGFkOGUzZjEyOTg5ZjdlYzgwOCBsZWdhY3ktdHJ1bmsKKzE4OTE1IGFjYTA1ZDc1ZDIzMmYxMDBkOTY4MDJhMmFkMWIyZGE0ZDliN2Y3ZWMgbGVnYWN5LXRydW5rCisxODkxNiA0Y2M5YTFlYmVhNjI4ZWQxODQ2ZDI0Nzk5ODkwYjEzOGJkYjZlODI4IGxlZ2FjeS10cnVuaworMTg5MTcgNjRmYWIwMDQ3YTE0MjkyYTcyMGE5NmZhNzVlNDRjZWE4MzIxNTdkYyBsZWdhY3ktdHJ1bmsKKzE4OTE4IDg4M2M3ZjYxNTc4OTA5OWM2NGU1N2JmYzE1MDUyZDQ0NTAxMWY5NTYgbGVnYWN5LXRydW5rCisxODkxOSBlMzI1OWU0YmVjNjA2MzkyZDc0MDM0NjAzNmJkZWExYTA4ZDQ5M2RmIGxlZ2FjeS10cnVuaworMTg5MjAgNGM0MGU5ZDc0YzVhYTVkMjA0NWI4MDk1MjcyNmEzYWE3YTk0ZDIyZiBsZWdhY3ktdHJ1bmsKKzE4OTIxIDU2NGJjMjQyZmYwZjA4M2ViMmI2YmM3MDUwNjdlZjM1YTA3ODQ4M2QgbGVnYWN5LXRydW5rCisxODkyMiA1OTZlZGY4MTI5YTA3ODBkNTY4NmI0MzQwYmU1Y2I4OTFhMGU2NjY5IGxlZ2FjeS10cnVuaworMTg5MjMgNmI2NDdhNWQ1YjdlMzkxZWU5MmIxN2NmMDNlYjMxMWE5YmQ0ZmI5OSBsZWdhY3ktdHJ1bmsKKzE4OTI0IGFmYzZmMTEzN2VhNDdjOTI0MjcwNjQ3ZGI2ODI0MjM4NTY1NmFlOTQgbGVnYWN5LXRydW5rCisxODkyNSA4MTI4NWY1NDVkNTQ2OTY4YWExZTMzYzkyMDc5ZDJlNWRlMjI2MjBjIGxlZ2FjeS10cnVuaworMTg5MjYgYTk3YWE5MjM4NzcxMTNjMTY1NjFkNTg2NzIwNGIyYzQxNWVmNTA2YyBsZWdhY3ktdHJ1bmsKKzE4OTI3IGMyOWRhMmMxNDQxN2Q4ZTA2OWVlM2U1NTc3NTZjYWUwNzYwYWE4ZmQgbGVnYWN5LXRydW5rCisxODkyOCBkOWI2OWQ3ODBhMTYwYjA1MmM1YmFjOGIzYWQzZGU0ZDMyZTc5YmZlIGxlZ2FjeS10cnVuaworMTg5MjkgZmUzNmFiNGIzZTk3MzI1NDNhZDI2ZmNmMTgxOWZmNDI1NWIwNWE1ZSBsZWdhY3ktdHJ1bmsKKzE4OTMwIDRkYjY2NDM4OTQxNTIwMmRiOWE5MWFlMWJkYmY2ZGQ3MDAzZDk1YTAgbGVnYWN5LXRydW5rCisxODkzMSA2OGE4MDNiNGQ2MTgyYWI0YzcyYTVlMGEyZmQxMGM1NjUxNzU2MmIxIGxlZ2FjeS10cnVuaworMTg5MzIgYjUzNDVlOTk1OTZiZWE5ODQ0YjcwNTdlMjUxMGQxMzU1ODNmM2JhOCBsZWdhY3ktdHJ1bmsKKzE4OTMzIGFmN2Q3OTE0ZmJmOTliY2IyNDNjYWMxN2RmMjFiYzJkOTIzMzlhY2EgbGVnYWN5LXRydW5rCisxODkzNCBiYWU4ODlmNDRjZDFmZGRkMjI1MTg2ZGU5MmJiOWYxMWVhOTRlNzY0IGxlZ2FjeS10cnVuaworMTg5MzUgNzEzZWQ2YzZiY2I1MzRmZDNmMGU1NDA4YTNmZDgxOGNjMzI3MzM1ZCBsZWdhY3ktdHJ1bmsKKzE4OTM2IDdlNTVmYTkzZjRkYmMyODc5MGU0YWMwMzBkNjY5YzRiNGZiYTAzN2YgbGVnYWN5LXRydW5rCisxODkzNyA1MGJiZTgxMWIzNDRjOTA2NTI1ZmM0YWZkMGMxMDkyNmFhOTU3OGQ4IGxlZ2FjeS10cnVuaworMTg5MzggZWFiZDAwOGIzNmVlN2ZlY2E3ZTJiZTg2NDg2ZmRmM2E5ZWMxNjE3NiBsZWdhY3ktdHJ1bmsKKzE4OTM5IDJkM2U2MDE3OWQ3YWZlYWQ3MTYwZTRjYzAzNzBiZTY1ZDk4YjM4NGIgbGVnYWN5LXRydW5rCisxODk0MCA5MWE2M2RmN2VlZTQxOGQxODcxNmI4NTFkNWNjNTE5OGIxNDQ2OWU1IGxlZ2FjeS10cnVuaworMTg5NDEgYzQzNTU5MDViMDQ0ZGUxMGQ1Mjk4Yzg5NWI4ZmM0ZTY0Y2I3NzFjYiBsZWdhY3ktdHJ1bmsKKzE4OTQyIDkzZjgzNjQzMmMyYmQyYTAyOGQxMjNhNTlkNTY4YTMzOTlhZDM1YzAgbGVnYWN5LXRydW5rCisxODk0MyAxYjZlNDU3ZDAzYWI2Y2I1ZTMyODNlZjI2NGE4MDg3OTUwOWYzNzIxIGxlZ2FjeS10cnVuaworMTg5NDQgZTJiMmIwNDNhYjRlZjk3NTUxMTdiYWQ1Mjk2Y2MwYThmNmZmNTlhZSBsZWdhY3ktdHJ1bmsKKzE4OTQ1IGFiZmIxMWY4ZTA1MWEwMTNjMzgyMmJiOWM0NWY0ZjM2ZTVjMmQyYjIgbGVnYWN5LXRydW5rCisxODk0NiA0YzMwN2ExMmRjYjk3NmE0NzE2NjZhNjUzMTU4ZTc3ODBmZTJjZDQ4IGxlZ2FjeS10cnVuaworMTg5NDcgZDU2YjQ5MjY1MzEwZmVhNGRhNjU1MTA3MjQwYmMwNzk1NzhjZGM3MiBsZWdhY3ktdHJ1bmsKKzE4OTQ4IDQ4MWMzZDUwYTRlNTU1N2M1YjVjNzE1Y2VhNDhmNjg1NWUyN2U4MjIgbGVnYWN5LXRydW5rCisxODk0OSAyNjMwMzViZWEzYWYyMTBlMjQ0ODk4OWM3NDIzMDQ0YjBmMjk5NDlhIGxlZ2FjeS10cnVuaworMTg5NTAgZGJhODM4MDlhNzc1MDc3MTMwMjM0MTdlMjRhMWZlNTZjMTM5M2UyNiBsZWdhY3ktdHJ1bmsKKzE4OTUxIDZlMTQzYWY4NDkyN2E4NmExNThiNWQzMTQ1MTQwZjI5MDhkZWZhZTMgbGVnYWN5LXRydW5rCisxODk1MiA4YWM0MGQ0OGE1ODE0YmY5NzFiYWZlMDExMTAwMzMwM2JmNWY0MzNkIGxlZ2FjeS10cnVuaworMTg5NTMgNDVjMDY1NjY4ZWE1YzhmOTljMTI4MWI3NmRmYTRlYzdjNTU4ODE0NyBsZWdhY3ktdHJ1bmsKKzE4OTU0IGYzZjZiNzU5OGJjNWEwNTIzNjI0NjdmOTEzYzIzYTE0NmZiOGNiNjcgbGVnYWN5LXRydW5rCisxODk1NSAwYzFhY2MxNTQ1NWYwYjRiMGUyOTNjZTEwZGVlODAzOWU3Y2FjODY3IGxlZ2FjeS10cnVuaworMTg5NTYgY2E0NmQzNDU0MjY5ZTY5ZDdhYWE1YTkzMGVkNWExYTZjNWY2ZWM0MiBsZWdhY3ktdHJ1bmsKKzE4OTU3IGFiMDJmMTc0MWEyOGM3Y2MxNzA3Y2RlMTYwN2FlMDg2OTIyNDBjODYgbGVnYWN5LXRydW5rCisxODk1OCBmYjY3MTIyZTVjMWVkYmFlN2I1MTFmNzM2ZjA5NjI2MmIzY2Q5YjBmIGxlZ2FjeS10cnVuaworMTg5NTkgZTM1MzZhYTdhZTRhYzRhNGExYTVlMWEzNmNjNjBlODBhZGFlYzZkZSBsZWdhY3ktdHJ1bmsKKzE4OTYwIGZiNzY3YTQ0OTYxZTcxOTI1OTc5YTNhM2ZiMjg5NjllZjlmMzkzMWMgbGVnYWN5LXRydW5rCisxODk2MSA5NjdhYmJlY2M0MDQxYTIyZTExMzI2NDIzZDkxZGMxNjc4ZjRlN2FhIGxlZ2FjeS10cnVuaworMTg5NjIgYWUyOTYyMjlmNDI2OTU3ZTY4YjVkNDRjOTg0MTkxNGMwYjA4YmNlNiBsZWdhY3ktdHJ1bmsKKzE4OTYzIDNmY2Q3ZjQ2NWYzNDlmY2I4ZjYzMjViZjBhZGE4MGUxZmYwOWMzYmQgbGVnYWN5LXRydW5rCisxODk2NCA3Y2I5NDBjMTU2NDUxZWUzZTUwZTI2NWE2ZWUxZTIwYTkwNzVjN2IzIGxlZ2FjeS10cnVuaworMTg5NjUgZTA0MThiMWY1Y2I3Y2IxNzBkMjI1OWY3ZmE1ODA3ZTczYzQ0NzFkNyBsZWdhY3ktdHJ1bmsKKzE4OTY2IGJhZTlhYmFkZWUyMmE0ODgzODA3ZGI2YTFmNmRjYTgyM2I0YTI1NGQgbGVnYWN5LXRydW5rCisxODk2NyBkNjk1NzFiZjc4NDI2N2JkZWQ3NDRmODdlNGI4NmVjMDMyZjUyYmViIGxlZ2FjeS10cnVuaworMTg5NjggMjhjNDE0ZGNiM2UxOGU1NDNmMDAwOTE2NDgyZGE5NDY3YjAxNTVlNSBsZWdhY3ktdHJ1bmsKKzE4OTY5IGRjMWM1NzcxNGIzZGQ0ZjI0M2Y2MGNmZmQxNDUyYTcwYWY1M2IyNGMgbGVnYWN5LXRydW5rCisxODk3MCAyOGQ4Y2NiZTIzN2Y2ODNkMjE1MTk2ODFhM2Q1MDFjZDI5MmFiZTg3IGxlZ2FjeS10cnVuaworMTg5NzEgNGQ0NTFjOTJiYzUwYjJkNjQ0NWE5ZjYxOGVjYzFhZDBiYjk2NWM5MSBsZWdhY3ktdHJ1bmsKKzE4OTcyIDE0MGQ0NWFhMDlkYzA5ZDYwMWU3OTRjYzYyOTUwMTU4OWYwYzVmOGMgbGVnYWN5LXRydW5rCisxODk3MyBlMDgyNGIzNTQ0ZmJlZTgxYjI2Mzc3MWRjZmJiY2U0MDU5ZWIyMTRhIGxlZ2FjeS10cnVuaworMTg5NzQgYTA1OWQxMzYwNWEwZTE3OTlhMmM0MDkwMjdhZDc5ZjgxMmExYTgzMSBsZWdhY3ktdHJ1bmsKKzE4OTc1IDcwNjY2YjI3YzFiMWFjZGQ3MTJmM2ZhYWU3MWE1ZGIwOGM3ZWE1NTggbGVnYWN5LXRydW5rCisxODk3NiA0NGZkMWE3Y2IyNzkzOWFmMWRlYTRmNDg0N2IxODcwZWY5MmZlM2IwIGxlZ2FjeS10cnVuaworMTg5NzcgM2UxMzUyNGVkODZjYzBlYzM0ZmE1MTlkN2M0MDZiOWE2OWY5MzQzOCBsZWdhY3ktdHJ1bmsKKzE4OTc4IDYwZmFjNjJmNmMxNWVhMDYwMDg2Y2U0YWViMzc1OGIzMmEwZGNlNWYgbGVnYWN5LXRydW5rCisxODk3OSA4ZTAxMmFlOWEwNDIzMjdhN2Q1MWY5OWE4MGVlNWRhMDUzYTBhNjFkIGxlZ2FjeS10cnVuaworMTg5ODAgNjQ1NDVjOTg2Yjk4YjI2ZjBkNDIyOGUwODMyNjE2ZTZkNmY3ODk4NiBsZWdhY3ktdHJ1bmsKKzE4OTgxIDkyYjIxNGJiNDI4ODQ4NTg0MTZkNWQ5MGRkY2NmNjM4ZjUxNGVjYjUgbGVnYWN5LXRydW5rCisxODk4MiBlMDUyM2E0MmM3OGNhZTkyZWFhZTg2NzAxNTM1MTA4YjU1YTA4N2NkIGxlZ2FjeS10cnVuaworMTg5ODMgZjZkOGExMzkyOWQ3MjcwNTI0NDUxNjMyZmY3NjliNjA2NzljYzRiOSBsZWdhY3ktdHJ1bmsKKzE4OTg0IDIzOWM3MzcyYzNkMzdmOGNlNGI2NDkxYjRjOTY1OTEyYTVkMmU2NjMgbGVnYWN5LXRydW5rCisxODk4NSBmOTk3ZGVkNGUyMTlmMzBhZGIwYjg5NDRiYTZiMzBhNTJmNzRkMmE0IGxlZ2FjeS10cnVuaworMTg5ODYgNDU0MGU0MThiODNhYjRmMTA4NTE2M2FlMWMwMTYzOWI4OTRkZmRlYyBsZWdhY3ktdHJ1bmsKKzE4OTg3IDU0OGU3YTU0MjkxODVmZjBhZWRkYWRjZmJmM2Q1NzQwMmMzZGFkZTAgbGVnYWN5LXRydW5rCisxODk4OCBmYmYwN2UxZjNjYTA3MWQ5MjcwZTcxMmI0MzJmN2QyZTAyMWU3OGNlIGxlZ2FjeS10cnVuaworMTg5ODkgNmYxZmQ4NTAwMzk4Y2E5MWQ5ZmQ5NmQ1YTk5OTg2YjAzMTM0ZTljMSBsZWdhY3ktdHJ1bmsKKzE4OTkwIGQwODY0OTAyYzhjN2Q4OTk0ZmVmNGU5NTEwMWQwNDNhMmQ0MjM5OWIgbGVnYWN5LXRydW5rCisxODk5MSA1NjM2OGQzNTA4ZGU1NjAyNDQ0OTBmODg1NTgxNTcwM2RlMjIyNThkIGxlZ2FjeS10cnVuaworMTg5OTIgYTllM2E1MjgxNWUyYmIzZTBlYmU3YmY1Y2ExODZhNTY5NTI1ZmQ4OCBsZWdhY3ktdHJ1bmsKKzE4OTkzIGFhMDNjMjBlODliN2FlZjkyZDg1YjNiNjFmZDZjY2Y0ZGQxYmViOWYgbGVnYWN5LXRydW5rCisxODk5NCA4ZjY1NTJjNzAzMGQwNTRmYTBlYWM4ZGRiMjQ1NmE5NWQ1MTg2MmUxIGxlZ2FjeS10cnVuaworMTg5OTUgZDQ4MDE4YjMzZTM1N2Y0OWZkYWJhMDA2MWI5YzNiMjc0MzViNDRlZSBsZWdhY3ktdHJ1bmsKKzE4OTk2IGEwNmI3M2FkMzcxZWE3NzYwZjVjNDMzYzM3MmVlMzQ5NTQ1YzI0MGQgbGVnYWN5LXRydW5rCisxODk5NyA1MTNlNTliM2I5YTkwYjQyNTBmNmZmMjhjZjRmM2FlNjc5NzI0MzNlIGxlZ2FjeS10cnVuaworMTg5OTggZmE5ZWYwZTJkYzA3ZGFkZTNlNzVhMmU3M2EzZjBkMDAwMzA3MmZmOCBsZWdhY3ktdHJ1bmsKKzE4OTk5IDg4M2NiMGUzMWJiMmIzZjUzYTJkYTgyNTk3NTVmMzI2ODBiZGMxYmIgbGVnYWN5LXRydW5rCisxOTAwMCA0OWI3YzFiYzYwMDQyOTNiZTIyZTRhMGEwY2IyODc5ODk3ZmY0YmEzIGxlZ2FjeS10cnVuaworMTkwMDEgZDk2Y2U5NzA4YzAwN2M3ZGQyOGYwZmVkOTVmYzQzMjNmNDMyNjFjNyBsZWdhY3ktdHJ1bmsKKzE5MDAyIDM4ZGNlYzA2NjE3YmRmYTFmNTJiOGFiMDI4YWJhZjc0MDViZGUxNTkgbGVnYWN5LXRydW5rCisxOTAwMyAwNThiZDFiZmYwMDgwZTU5YjAyYzUxYTUwZTA3MWU5N2NhNzZkNThlIGxlZ2FjeS10cnVuaworMTkwMDQgNDlmOTRhMmIxZGQ0MGNmOTE0ODg0MDM5MWRkZGFhYzExMGNlNDA3NCBsZWdhY3ktdHJ1bmsKKzE5MDA1IDZhYTk3MmRmODBkNTc2MmNmMjQ3YTAwMjNkZmMzODNlNjFjNWYyMDMgbGVnYWN5LXRydW5rCisxOTAwNiBkMTJiZGU0YjJhZTkyY2QxZWZkZDljNzEzMzhjMGRmMThmOGNiOWVmIGxlZ2FjeS10cnVuaworMTkwMDcgMjZlODMxYmIwZDZlYzY4OGM1MGE5ZDQ0ZDI0MTdhMGFiNTY5NDZhNiBsZWdhY3ktdHJ1bmsKKzE5MDA4IGNkOWRkZGQ4OTdhOTU1M2UyZjg2YjIyZTkwNWQzN2IzMmIzZWM5YjcgbGVnYWN5LXRydW5rCisxOTAwOSBmYmY4YWJlYzkzZDE5ZmMwMzQ3YWU3Y2RhMDNlMmQxYTIxYTAyNWNlIGxlZ2FjeS10cnVuaworMTkwMDkgYjYwODMxZWVhYjVhMDZkZDNjNWU4Mjk3YTk5ZTM5Mjk3YWE4Nzk0YiBsZWdhY3ktdHJ1bmsKKzE5MDExIDdkNzY1YzFkNDllMmYzMTU3YTZmMTg5Y2M1Nzg0ZDM2NTU5ODVkOTAgbGVnYWN5LXRydW5rCisxOTAxMiBjYTA1NTYwNmIzYTExYzE3NWIzNGY5ZTZmODMzODhmNjgxODgzOTkwIGxlZ2FjeS10cnVuaworMTkwMTMgNDk1MWY1YzQ4MTA1YmJkZGY3MjgzNGVlZTBjN2JlYzczYWFhMmU2ZCBsZWdhY3ktdHJ1bmsKKzE5MDE0IDg1ZTM1ZTY4ZTNkYjA1Nzg5NmU0NmRkMGIyZWU1YmZlMjg4ZTVlYWEgbGVnYWN5LXRydW5rCisxOTAxNSBkZjdiZmIzNGIyYTJlOGRkNjg4ZjEzMWMxMTBjMGI1ODYzYzQwZTNkIGxlZ2FjeS10cnVuaworMTkwMTYgM2VlNTU4NjM0MTY0ZGFmNDk5Zjc3NjU3MDM1YWQ4NGQ0ZTYxZmY4MiBsZWdhY3ktdHJ1bmsKKzE5MDE3IGIyYzg3OTVhMzQ0ODllYjIyZjY2OGNkYTZlZjY4Mzc3ZjkzY2E0M2IgbGVnYWN5LXRydW5rCisxOTAxOCA4M2MxZjE0NjgyYTI1NjFhZDdjNGY1ZTcyYjdkZmI2YzZkNTU3YjBmIGxlZ2FjeS10cnVuaworMTkwMTkgNjJiZjczOTk4Y2RiMjFiNDk0YzM2ZTEyODllZGQ2MGZkOTQ4NTQxYyBsZWdhY3ktdHJ1bmsKKzE5MDIwIDYzOTZjYzZiMWY3YTEyN2VkMjE3YTkxMzNiZjg0NGJhOTVlY2QyZDMgbGVnYWN5LXRydW5rCisxOTAyMSA2ODBkNmE1MGMyZTg0NGYxMTg4YThjZmFjNjFjZWQxN2JjNWZmOGRhIGxlZ2FjeS10cnVuaworMTkwMjIgNDY5MjBiNjBjZDMzNDNmMjYzMzU1NDk0NGE3Nzg4ZDQwZmIxM2M1YyBsZWdhY3ktdHJ1bmsKKzE5MDIzIGMwZGU3MTBmMzFjMDNmODAxOTQ1NWUxZGNhMzQzMjgzOGRjNzkxMGMgbGVnYWN5LXRydW5rCisxOTAyNCBmZDI3ODAzMWY0NDljYjg1MTc0NGZkYmM0NDc1NjUwNzUyZDAyZTZjIGxlZ2FjeS10cnVuaworMTkwMjUgNWY0MGZkYmRkMDJjNDE4ZDFhZTNlMWMyYmQ4YWUyNGQwYWEwZDdlMiBsZWdhY3ktdHJ1bmsKKzE5MDI2IDIyMDhhMDNkMDVhM2FkZDFmMzJjNTk2MGExMDMyZDcwNjMwODkxYjYgbGVnYWN5LXRydW5rCisxOTAyNyAwYTcyMDcwZWFiNmViYTYzMGM0ODhkYzc0NmYzODU5YzMxNDBiMjgyIGxlZ2FjeS10cnVuaworMTkwMjggMTA2NDZkMDkyYTUyZmIyZDM2MzNmZmUyZGQwYjE4MmY1YjQ2NzljMyBsZWdhY3ktdHJ1bmsKKzE5MDI5IDcxY2VhYmEzZjYxNTFiNDRmOWU3Y2I4MDhiMDQ2NjdjZjJkMzYyMTMgbGVnYWN5LXRydW5rCisxOTAzMCBhMGU1MjAzOGNjNGUxYzgxM2M2NGU4NDI3NDdjMzBjNmIxYjYxY2U2IGxlZ2FjeS10cnVuaworMTkwMzEgNzhjZGRiYTQ1ODA1MzJmYWE3N2JiNTU2YTM1MzI1YzdmNDVkZjllYSBsZWdhY3ktdHJ1bmsKKzE5MDMyIDJjN2RmNDU0OTZhNjI3NmU0NjM5YmQyNDIxNzIwM2EyMmMyMTRmMjUgbGVnYWN5LXRydW5rCisxOTAzMyA3YWU2YTA5ZDRkMDJkZWRkNWVjOWY2MTU4OTMwZDZiNTNjYTA3ODgwIGxlZ2FjeS10cnVuaworMTkwMzQgNzI1YjFiYWYzZGFiOTFjMmI0MzFlNTNiOWQ1OTdkZTAzZGU5MTIxZSBsZWdhY3ktdHJ1bmsKKzE5MDM1IGY3NWI4NjQ4OTlmYjE1MzE1ZDgxMDhlODRmODYzNjdhYmQ2NTlkNTAgbGVnYWN5LXRydW5rCisxOTAzNiAzMGM0YzRlOWUzZDU2NzdmNDQ4MDI5ZDY1MWI5MjRmYjljZTA5YWIxIGxlZ2FjeS10cnVuaworMTkwMzcgNDM4NDI4ZDFiZjI3MGU2OTcwZjJiNGFlNTYxZTQ4ZTY5ZGI0YzU2ZCBsZWdhY3ktdHJ1bmsKKzE5MDM4IDJkY2JjMWRmY2E5YzU0ZGU2MzA3MTg2NDZkN2NlMzc2OGU5YTZiNWQgbGVnYWN5LXRydW5rCisxOTAzOSAyNzc0OTgxODMwMzA3NDhhMGQ2MTk1MmZkZjk0NmYxNTU0N2Y1Yzk2IGxlZ2FjeS10cnVuaworMTkwNDAgZDBlOGUxOTU5YzBiZTQyZjEyMGI5ZDM4ODQxMDMzZDlkYmZkM2Y2NCBsZWdhY3ktdHJ1bmsKKzE5MDQxIDNhMGViNDViMmI1ZTAyNmRmZDM1MTc1MzY0NDUzNDU1OTYzNjRhNjcgbGVnYWN5LXRydW5rCisxOTA0MiA2ZjkyOTIwYzExNTAwOWRmNDVhMDIzODgyZjYzMWI3ZjQwMjE4MTk3IGxlZ2FjeS10cnVuaworMTkwNDMgYTU0YzI4MmJmYjYzZGEyYjdhNzhlNWU2YzlmYjRmMWZhYzUzMjQwNCBsZWdhY3ktdHJ1bmsKKzE5MDQ0IGI4ODJmNGM4NTY2NjhhZjMzMjc0ODc0MjU4ZTRmYzQ5NDI3ODM0YTMgbGVnYWN5LXRydW5rCisxOTA0NSBhMTMwZDVmN2U1OGFlYjIxOTY0ZGNlNjRhNDdkOWM0ZGVhMmZiMWMwIGxlZ2FjeS10cnVuaworMTkwNDYgZTI2ZjhkNmNmMjg4ZWYzNmUyYmI0NzRlZWNhMmZmZmVmMzY1YmQzMyBsZWdhY3ktdHJ1bmsKKzE5MDQ3IDExNWZkYzYxYWU5MTRiODJhOWM4ZmIxMzQzOGQwODEyZjI3ZDE2MjQgbGVnYWN5LXRydW5rCisxOTA0OCAwMWU4YTZkOGRhOGJiNjVlZmVmNTE1MTU5OTExMTE3ZWQ1ZDA5MmM5IGxlZ2FjeS10cnVuaworMTkwNDkgZDcyMThhYzk5YzA5YWIyY2VlNmRhNzRlYjAxN2JiZWEyZGZjYmY1YSBsZWdhY3ktdHJ1bmsKKzE5MDUwIDQ5OWUyMjllNmNlZGE4OTJlZjU3MjAzNWVhNTljZDY2YTRkYTFmYmMgbGVnYWN5LXRydW5rCisxOTA1MSA5OTFhMTdkNjEwMzYyNzY5Y2E0MjViY2I0N2ZlYmI2NWU0ZjI5MGEwIGxlZ2FjeS10cnVuaworMTkwNTIgYzEyZDg2MjNiMjk0OTBlMTIwYjkwMGRjYWU1MzQ5NDkxNTY4ZWQ3OCBsZWdhY3ktdHJ1bmsKKzE5MDUzIGMwMmFlN2FlMDExZDYyODJhYjIxOTNjYTM4ZGU3ZGY5M2E5YTlmZTIgbGVnYWN5LXRydW5rCisxOTA1NCA0ZmU2OWE5ZjhiMzA3NmI5ZWYxNzFmOTRmMTlmMjMwNWI1MzUwYmI2IGxlZ2FjeS10cnVuaworMTkwNTUgMWZmNGY4OTAxZDk2MDYwOTU1ZDI3YjY5ZTFmNTdkMTc3OGUyMjM3MCBsZWdhY3ktdHJ1bmsKKzE5MDU2IGY0YWMwNjBhODQxYjM5OWMwNzE2ZDc2ZTdmNDdkOGQ5MDY2M2E2MzIgbGVnYWN5LXRydW5rCisxOTA1NyAxYWE4MzQ5ZjY2OTU1ODA2YjAwNWQwNDdiYWVlYzA2NDUwODkyNzBhIGxlZ2FjeS10cnVuaworMTkwNTggNTcxMjYyMDI5ODg4MmFjMDY5NzFmMDlkY2NmOWJkMTkwYjU5MGQ2NSBsZWdhY3ktdHJ1bmsKKzE5MDU5IDFiYjc2NTE2ODNlNzQxMjg0YTE0MmM1NzNmNTgxYzg4NWVjZmI5N2YgbGVnYWN5LXRydW5rCisxOTA2MCAzMjc1NWI0NTYzNjlkODIyNjliNDczYTFhMWY0Mjg4MGU1ZGZiNWU4IGxlZ2FjeS10cnVuaworMTkwNjEgMDFlNWQzZTU4ODMzYWQ5ZTk5MGRmODdlNDMyZjZmN2IyMGY2OTY0MCBsZWdhY3ktdHJ1bmsKKzE5MDYyIDM0ODQ2NzBjMzdmMmU4ZGJmMjA2MDExYzNkOTllZmU0Y2JiMGNhOTggbGVnYWN5LXRydW5rCisxOTA2MyAzODY3OGNiMGIzY2RiOGRkNjIyMDdlZWUyZGMzMzM4MzBlMTNhM2I4IGxlZ2FjeS10cnVuaworMTkwNjQgMzk3YWU1M2YxYTQ4OTkwNmU1NjE1MTk3OWZlMzY0ZDYwMDYzZGM1NiBsZWdhY3ktdHJ1bmsKKzE5MDY1IDc0M2Q1MjA3NWJlNWVmY2JmMDc4MTkyYTZlYzhkMjg1MzAzMWE5ZDAgbGVnYWN5LXRydW5rCisxOTA2NiAyM2FiNTk5MjEyMmU4MTQwOGZmZTIzNDUyZDc1YTdkNzU5ZGUxYmI1IGxlZ2FjeS10cnVuaworMTkwNjcgYTNmNTdlZDc1N2U1MGE5YjU0OTY0MDJlNGRkNzExNzg2YjIzNTdiMCBsZWdhY3ktdHJ1bmsKKzE5MDY4IGE2NDUzY2ZiNzMzZjFkN2FmODM1ZmZmZDJhNmVhMjNhZjY2N2Y1ZGIgbGVnYWN5LXRydW5rCisxOTA2OSA3NDNmMTYzMzY4MjczYjNiNWQ1ZjQwMjk3ZTQ3MTk0MTNmNDdkODI3IGxlZ2FjeS10cnVuaworMTkwNzAgOGQ0YTI1YzgxYTliOTQzMGZiMDJkYTkwZDBkNTg4M2I1ZWRkY2RhOCBsZWdhY3ktdHJ1bmsKKzE5MDcxIDU1ZThjMDI2ZTFlM2ZmMjJjNWU2MjRiZTI1MGFkOWYzMjdlM2QzODMgbGVnYWN5LXRydW5rCisxOTA3MiAxZTQzYTI0NTZlOGZlNGNjZTUxZDUyYTQyYjJmZDQxYzdmYmFlMzI2IGxlZ2FjeS10cnVuaworMTkwNzMgOThiNjU0ODRhZGU2YTg0Y2U4MTFkYWJiOGIwZDMxM2Y1ZjFjODU1NyBsZWdhY3ktdHJ1bmsKKzE5MDc0IDFkZjQwZDc3MjRjY2RlNDA2NTdjMzhjNzQ1MThhOTM2NjQ1NTE1ZTUgbGVnYWN5LXRydW5rCisxOTA3NSBjMGY2MWQ0ZjVhMDQ4ODEyMzQ2OWZiM2NjMzBjNTU5NmY3YTc1MzgwIGxlZ2FjeS10cnVuaworMTkwNzYgNjM1ZTlkY2ZlZDJjYzY1ODQ4OTVjY2M0MjE3MDRiNmRjMzM0MzZkNSBsZWdhY3ktdHJ1bmsKKzE5MDc3IDcyODYwZWU5ZWFmMDg5MGZkMGUyYjZiYTU5MzAzNTIzMWMwYzllNmQgbGVnYWN5LXRydW5rCisxOTA3OCA1YWVhMTU4MTU0M2I0NDgyODUwYTViMjFhYTM4NWQ2Mzg3NmUwNjE2IGxlZ2FjeS10cnVuaworMTkwNzkgMzk3NDkxYWEyMGE2ZWJjYTdjOTI4OTFiNWU1ZGQ3MGYzN2Q4NTgyYyBsZWdhY3ktdHJ1bmsKKzE5MDgwIGE0ZTU0YmZkM2MyOWQ2NTY5MTFlYWFiOGJjYmRmMDk5MjkwNDBlNGUgbGVnYWN5LXRydW5rCisxOTA4MSAyNTlmNzlhMzZlMmYzNmQwYjJkZTFiNGJkYTgyNTA2NmQ0ZmViMWJjIGxlZ2FjeS10cnVuaworMTkwODIgMTg1ZGZjMTRhOTM0MmZiNzY1YmQxNTFiNGFkYzVlOWU4ZTYxOGUxMiBsZWdhY3ktdHJ1bmsKKzE5MDgzIDU4ODY5MWY4MDZmNGQwODFhMzQ0MTY3MDIxMzhjMWZkOGJmMzBlZTAgbGVnYWN5LXRydW5rCisxOTA4NCBhMGU0NmMzYmU2M2VmMmRmNGY0MWQ0NTk3MTc4NjA2YWU0OGM1ZWI2IGxlZ2FjeS10cnVuaworMTkwODUgNTQ1MzQxNDg4NzNlNmY5YzE3OTJjZTZlZmRkMmRjMmNhNTY2YWE4MyBsZWdhY3ktdHJ1bmsKKzE5MDg2IGQzMjkyZWU1YjZlMjRhMTVjNTQ1ZTBiMWI5MTEyYmU5YjgyZTczNDkgbGVnYWN5LXRydW5rCisxOTA4NyBlNTZkZDJkZDk5NjA3MmE3OTQ5Njg5ZTQ4N2EzNGZiMTUwNTEzYWIwIGxlZ2FjeS10cnVuaworMTkwODggYzdjNDA0YjM1ZjMzYTBkNTRjODJmNjc1ODk5ZjE5MGMxM2U1MGZkNyBsZWdhY3ktdHJ1bmsKKzE5MDg5IDhjNGRiOGI5YWY5YjkwZTUzNmJmYjUwMGU0NzBlNjIwNjJlMWY4ZjAgbGVnYWN5LXRydW5rCisxOTA5MCBhYmI5NDUwNjY0MzY3NTA4MDQ0Zjk0ZmRlYjAyZTRjNDEwYWYzMWJkIGxlZ2FjeS10cnVuaworMTkwOTEgZTMwMjU4NjQ1MmEzMDgzODBjYmE0OWU2MDYwMmQ4OGUxMDdlNzY2OSBsZWdhY3ktdHJ1bmsKKzE5MDkyIDM5YTE0YmM4YTBmNzkwYjg0OGJlZGZkM2M2ZDQ4N2I5OWFjZWE2Y2QgbGVnYWN5LXRydW5rCisxOTA5MyAzYTIwZGEyODkzYzQ3ZjU4YmQ2ZGE5YWEyNjVkZTdkNDg3NjJhOWEyIGxlZ2FjeS10cnVuaworMTkwOTQgZGYyZWQ1NjY0YmU1MTUyMmUxMmZkZjc4NTM2ZDdkYWRjMzdiMDNlNiBsZWdhY3ktdHJ1bmsKKzE5MDk1IDliZjQzOGM4ZjVjNzkzOGE1ZjVmNTUxN2NkMzI5NjA2MGI1MDFhMmIgbGVnYWN5LXRydW5rCisxOTA5NiA0MWVkNGQ4NmRiNzc3MjUwYzYyYzQxYmE2ZTNkMDg3MTJjZWVjNWNlIGxlZ2FjeS10cnVuaworMTkwOTcgNWM2MDE4NGY3ZjUyYWIxZDUyMjMzZWM5ZTM5ODM0OTIwYWZjOTc1NyBsZWdhY3ktdHJ1bmsKKzE5MDk4IGU1ZDU5YTlkYmZjMDI4Y2RlZjBlZDI2N2EyMzlhYzJjMDM1MjdiNGYgbGVnYWN5LXRydW5rCisxOTA5OSAzZmU3NTkyNGVhYzEwZGNhYTk3MzlhNjMyMzRlZTJiNzNiMTk1M2UzIGxlZ2FjeS10cnVuaworMTkxMDAgYjRkNGYyMDIxMTE0NGE5YzhlMjgwMzFmNDhkZmEyZWE1MGM3ZDExMyBsZWdhY3ktdHJ1bmsKKzE5MTAxIDJmZjgyNjMxOGU4OWVkZmJkMGQ3NmVhN2NhNTgyNTRkYTE0YzQzNjEgbGVnYWN5LXRydW5rCisxOTEwMiA3ZjYxOGJjMTM5ODExMDkyMmM1NTU2ZDZjYmRlM2I1M2QwOWQyZmJjIGxlZ2FjeS10cnVuaworMTkxMDMgMDViZTVmODVmM2JmNjA4ZDZiOWQ5Mjg1NzFiNWEzZGZkOGU5ZjE1ZCBsZWdhY3ktdHJ1bmsKKzE5MTA0IDNjNWYwOTQyMmI2OWE5ZmQ4NzIzMGJlNzRlZTljNWY3MDIxYzRiZDMgbGVnYWN5LXRydW5rCisxOTEwNSA5ZmQ5NmUyNDU1YjYyYzc3NTdmMWUwZTE3ZGRlNWQ0NTk2MGMwZmI1IGxlZ2FjeS10cnVuaworMTkxMDYgZmEyMDljYzg0Y2FjZTNlYzhkM2M5ODgzNzliN2YxNjg1ZTQxNzY4NSBsZWdhY3ktdHJ1bmsKKzE5MTA3IDA5NzM2YWVhYjgzMTFmZjIzN2RiYTVlYzAyNDVhNjNhMjJhNzBhOWQgbGVnYWN5LXRydW5rCisxOTEwOCBjNDFkZDIyMDRiOWM4ZTBiMzAzZDEyMjE4MGMxN2NkNWRhMDUyOGQ4IGxlZ2FjeS10cnVuaworMTkxMDkgYTY4YzcwMzJjZGYyOTlmMmIzZWY4MTM4ZGNhN2ZhNDU1MjNkMjlmNCBsZWdhY3ktdHJ1bmsKKzE5MTEwIDE0MGM1Mjg1OGY2NWU0MDg4YWIxNWZmNTc5NmFlZGQ5N2EzMDNmYmUgbGVnYWN5LXRydW5rCisxOTExMSBmYTI3MWQ3YjJhNjJiY2FmZGY5MzZmNGMxNmM5NjlkODUyM2I5MjU2IGxlZ2FjeS10cnVuaworMTkxMTIgYWFiODcxNjM1ZmZhZTQ5Yjg5MDllZjY2MGVkYjI2NGY2MDMwYWVkOCBsZWdhY3ktdHJ1bmsKKzE5MTEzIGJkOGQyOThhZjg4MGMyYTFlMDJjMThlZDc5OWYyMzQ4NmE1MDJlMWYgbGVnYWN5LXRydW5rCisxOTExNCAzZjg5ZTcyNDAwODYwNTY4Mzk0MTNlMzlmMDRhN2M4YmI1Y2MyMjMzIGxlZ2FjeS10cnVuaworMTkxMTUgNGI1MWQwNjliZTM1MGVkOWE1NDA0ZjAyNDc2Mzk2OWFjYmYwMDJhNiBsZWdhY3ktdHJ1bmsKKzE5MTE2IGMxY2Y1ZDJjMjZjYWU3MGUzMGM4YzM1ZTI4NDZiMWUxYjAwMTE4ZTQgbGVnYWN5LXRydW5rCisxOTExNyBmODA0NTNlNDQ1YjVhNDQxNThlZDk2ODYyYWQwMmM1YWJlYjEwZGFiIGxlZ2FjeS10cnVuaworMTkxMTggMDcwNzE4NzJkZTNlMTE0YjAxMjZjM2UyN2FiN2U2ZjdlOTUwNjIwMCBsZWdhY3ktdHJ1bmsKKzE5MTE5IGZkOGM3MjAzMjUxZmYzN2RiYjM5N2Y3ZDQyM2FlNDFmMTZhMDNjNjggbGVnYWN5LXRydW5rCisxOTEyMCBmNDk0Y2EwYTJiMzQ2ZmY2OGZhYWNjYzY1MDhiZWEyODAyZGE5YTA4IGxlZ2FjeS10cnVuaworMTkxMjEgOTM4NmIzMmJmZjFkYWI0MjRkMGI1NTRmNjk4NjE5YmNiNTQzYThmYSBsZWdhY3ktdHJ1bmsKKzE5MTIyIDIwZWY4NDllYzg3N2M3MmU1NGI2YTQ0YmY1OGQ0NWFlM2FkNDM1MWEgbGVnYWN5LXRydW5rCisxOTEyMyBiZGZjNmYxZmE0NzVjZTY3MzEzZDkzZGMxZTMzYWUyYmNlYmFmNTNkIGxlZ2FjeS10cnVuaworMTkxMjQgYTcwNGVhNWVjZWI2YjNkMWFmYzFmYWRjZGM4ODU0NDFjZWRmNzg0YSBsZWdhY3ktdHJ1bmsKKzE5MTI1IDc2M2EzZDQyYmFlZGYxNjdkMjkyNTkwNzQ4YWYzYTA2NzEyZDMyZjYgbGVnYWN5LXRydW5rCisxOTEyNiBlMTg4ODllMzk0OWMwNjlmMWMzNDFlMGU3N2MyYjY0NjUzYjFmY2M1IGxlZ2FjeS10cnVuaworMTkxMjcgZDYxNGI2ZTlmYjRlZDk0ZTFmMDBiNzEwOTBlOTQxYzEzOWM3YWNlMiBsZWdhY3ktdHJ1bmsKKzE5MTI4IDk5ZjM0NjczODQxNWEwNmIzMmZiN2E0YmIxMTg5MDE3OWNkMTg5MmIgbGVnYWN5LXRydW5rCisxOTEyOSA2MGVlMzM4ZjBkNjY2ZmRlZmUwMDM2MDIxNTMxOTY2ZmNjNjFmOTBmIGxlZ2FjeS10cnVuaworMTkxMzAgYzJjZTliMmU1YmI0MjNhYWVlZGIwZjFkOTU0OTg4YTE5ZTE5N2EwYiBsZWdhY3ktdHJ1bmsKKzE5MTMxIDc3OTU4MjY2YzdkN2FhYmZlYzUzOWZiYjcxZTQ1NDJmNmQ2ZTBkZWUgbGVnYWN5LXRydW5rCisxOTEzMiA5MDI1NWQ0NDFjZDVmNjIxZDA4NWE0OGUzYmUxNjcyNGZlZTMyMjliIGxlZ2FjeS10cnVuaworMTkxMzMgN2VmMjM4MmY2MTIzYTA2NWY5MDc2MjEwZGE3YzEyNDU5M2Y5ZWNmMSBsZWdhY3ktdHJ1bmsKKzE5MTM0IDgzNWU5ZGQ1NGJmYjhhYzYzZmVhZTM5M2Q4ZTFmNGNiZmUxZTg4NDkgbGVnYWN5LXRydW5rCisxOTEzNSBjODVjYThjNjIxMjljYzgxMTRjNTNhNzA0MWYzYWNiMWJhNmU0OTc3IGxlZ2FjeS10cnVuaworMTkxMzYgMmFlYjNhMzRjN2FjZGIzM2ZmYTVmOTg3ZTQ1ZjdiMmJjNmE2YWMzOSBsZWdhY3ktdHJ1bmsKKzE5MTM3IDljZTUxNDk4MjVmNmFlYWJkMGQ3Y2I0NjkwZjYwMmZkNWIwYTg0YmYgbGVnYWN5LXRydW5rCisxOTEzOCBjYTg1NTQ3ZmNiNWU0MjRmNTNiZjZjNGQ0NDZlYzBjNzk1OTY2MTc2IGxlZ2FjeS10cnVuaworMTkxMzkgMTZlMjE3NzJjYTNmMTQ2MjAyZGFkNzU5OWFlZDE5YzQyNTQ5YmIwMCBsZWdhY3ktdHJ1bmsKKzE5MTQwIGI0NmY5NTZhYmNmODUyZjU2MGFlOTkzNDBlNDJmZTFiMWU4YWIzNzAgbGVnYWN5LXRydW5rCisxOTE0MSA3ODVjZTYxOTY3OTYxNDI4MzQzMGRmNDkzMGRmZjA2MjRjZmUzNzA0IGxlZ2FjeS10cnVuaworMTkxNDIgOGI4MWE3ZTU4YTFkMTljOGJmNmY5NWFiZjQ1ODc4Mjc1NWY3ZjM2ZSBsZWdhY3ktdHJ1bmsKKzE5MTQzIDJhYmNiZTQ0MjcxYWJiMDc2MzQ1MzcyODU5Y2M1MThiYzM1ZjIzMWUgbGVnYWN5LXRydW5rCisxOTE0NCBlYTRhMmYzYjI2NmUwMTg2NWZkNjRhMzI1ODI2NjRiOGNmYjc4YjQ5IGxlZ2FjeS10cnVuaworMTkxNDUgNjVjNmEyOTk4YjFiZGVkMGM5OTY1M2Q2MjIwNzMyMjVmZTc5NDMyZCBsZWdhY3ktdHJ1bmsKKzE5MTQ2IGEwNTU4ZWJmNjYxMjc1M2UwMzg4YjZkN2FlM2MwYzA0NjU1ZGE0NTggbGVnYWN5LXRydW5rCisxOTE0NyAxNWUwYzEwMDkyYmI0ZGIwYWQ2NzMyNzJmYTI5NzMxMjhhMWM5ODYyIGxlZ2FjeS10cnVuaworMTkxNDggMjBlM2MwZDVlNDZmZDM0M2UxOGYxMWM2MGMzYWU1ZmZkYWE2YTE0OSBsZWdhY3ktdHJ1bmsKKzE5MTQ5IDRiNzI4ODhjOWUyZjdlZGQzMzY2OTNmODVmMmY2NmEzMmNlMzljYmIgbGVnYWN5LXRydW5rCisxOTE1MCBjMGEyNDQxYTQ0NTRiZGYzMGRhMWQyNzg0ZGJjMmE0YjFhZTkzZThhIGxlZ2FjeS10cnVuaworMTkxNTEgOTNiYTMzZGMzMzNhZjIyYzdhYWRlZGM3YjBiMTFjYjEwNmI4MTVmNyBsZWdhY3ktdHJ1bmsKKzE5MTUyIDdhMjUxNDQwY2U2N2Q2ODk0YWJmMmZiZGU4YjMyNmI2MmY2MDJjYTEgbGVnYWN5LXRydW5rCisxOTE1MyAwOTQwM2M1Y2RhZmJjMDhhNjBiMjY4NTZmMWQ0MjgwZGYzYjY2YWNjIGxlZ2FjeS10cnVuaworMTkxNTQgMDUwMWMyYTEwMzE1ZmM0ZjBkNGMxNDg1M2VjMTA2NDI2MzdjZjJmNiBsZWdhY3ktdHJ1bmsKKzE5MTU1IDI3YTRhMTdhZWMyNTE0Y2Q4ODY0Njc5OTcyOWU5NTZkMTg1ZjUzZjcgbGVnYWN5LXRydW5rCisxOTE1NiAyOGM2ZWM1ODFhYTY5NjgyMmI5OWUzY2YyOTJiYWEzMTI1M2Q2Yjc1IGxlZ2FjeS10cnVuaworMTkxNTcgN2IzNDc2YzEzODJlYmNiZmNhNWRkNzc3MTRjZGUwOTVjYWY1NjcyMiBsZWdhY3ktdHJ1bmsKKzE5MTU4IGFiOTliZDM5NDcwY2UzOTFiYWMyZjhjY2M2MDc5OTk5NzEzYTEwZDUgbGVnYWN5LXRydW5rCisxOTE1OSBkMGQ4YzlkNTJmMTg0OTlkMGFhZGVjZWIwMTFhNDAyODFhNDY2Y2RhIGxlZ2FjeS10cnVuaworMTkxNjAgMmRiMjk5Mzk1ODBkYmE3OGQ1MDZhMzIxYTA2MmMyYTUyNDA5MmRmNCBsZWdhY3ktdHJ1bmsKKzE5MTYxIGUxZTBlOTk2YjAwMzVkYTIyZDlkYjU2ZTg0YmYwNjJlMGE4ZTE3ZWEgbGVnYWN5LXRydW5rCisxOTE2MiAyNmMxZmZmZGZmZjJmMDhlNzRjOWY0Y2FiYzAzZjM2NGI3MWMzNmEwIGxlZ2FjeS10cnVuaworMTkxNjMgYmRmYjgxZDNjNjEwZWFkOGYzOWRjNmE1Mzk2NzNlYzYxYTNiNzg1MiBsZWdhY3ktdHJ1bmsKKzE5MTY0IDNhMWU2NThlNDQ3NDZjMDIxNmM3MGFmNmZkNTUyOWE5ZTg3OTIxNDkgbGVnYWN5LXRydW5rCisxOTE2NSBlN2Y0MTNkNGVlMTVhYjg2ZDQ2NGExNWJlM2ZjN2RhZDFkNDJkOTAwIGxlZ2FjeS10cnVuaworMTkxNjYgZmMzZjUwNTk0NWQ0Y2QwODJkNjUwNmNhZTMxODczMjA2MzE3NGFiZSBsZWdhY3ktdHJ1bmsKKzE5MTY3IGZiMGY1NmJiMTQwNTk5NzNlNTY0NTk2ZDg2ODljZGE4N2Q2MmMzMWQgbGVnYWN5LXRydW5rCisxOTE2OCA4ZTg3M2ZhNTQ1MGViZjU2YmU0MDZmMTk2YTU4ZDRlYTg4NjVkYTk3IGxlZ2FjeS10cnVuaworMTkxNjkgZjg0ZjhkODFlMzJjZTcwNzExMmIzODY1MDlkOTk5NzNiNDI2MzE3MSBsZWdhY3ktdHJ1bmsKKzE5MTcwIDhlNjZlYTYwMjYxNmRhOGZlZTkxOGFhNzExOTBkNDg3YzRhNzg1NjkgbGVnYWN5LXRydW5rCisxOTE3MSA5NjYzZDVlYmI2NDZjMTIyYzhjMWI1Mzk3NzU0NDcwNzM5NWY1ODI2IGxlZ2FjeS10cnVuaworMTkxNzIgNTRiMGFlZjY1MGM1MjlkMDc2ZTg3ODA5MWY3NzA2OWEwZDY0ZTg0YiBsZWdhY3ktdHJ1bmsKKzE5MTczIDhjNDFmMzg2MWFhZGRjY2FmMmQwZjJiYWIxNWY4ZTdmNDlkODcxOTIgbGVnYWN5LXRydW5rCisxOTE3NCBiODAxODE0NWUyYTVlNzk1MjZiNTY5ZTcyYTBmN2Q3NTczZTU3MWI2IGxlZ2FjeS10cnVuaworMTkxNzUgNjYyYWRmMDNlNGZhMmY2NmRhNmY4ODBhODFjMDcxMDI1YzU4YTJlZiBsZWdhY3ktdHJ1bmsKKzE5MTc2IDI0ZTQ1N2JhMWY5MjZjNWI0Yzc0YzhjMjIxNjZmOGIwNDM2MDY1ZTAgbGVnYWN5LXRydW5rCisxOTE3NyAyOGM2MGVmNDhmYTNhMWNiYTFlMTkzODM5OGZmYmQ0MmUyZThhMjAwIGxlZ2FjeS10cnVuaworMTkxNzggNzllNzJjZTIyYTQzMGYwMWEwNGJiZmRhNTdmZGQyMmY5YjVmYzBlZiBsZWdhY3ktdHJ1bmsKKzE5MTc5IDg2MWJmOGRjZmI1OGI4NjY3ZDg1ZTk2YTIwNzMyODIzOTAxZmZlODIgbGVnYWN5LXRydW5rCisxOTE4MCAxN2NhYzcwY2FlNzY2MjE3MGEyYTk1OGU0N2VjZGVmNjM2ZWY2ZTM1IGxlZ2FjeS10cnVuaworMTkxODEgYjMzNWQ0ZGQyMjNmMzg4NGE2NzZiYzQwMDI2YmU5NzkxMTQ2YmU1ZSBsZWdhY3ktdHJ1bmsKKzE5MTgyIDBlZmE2Yzk3YTRmYWI1NjU4NmFkNDdjMDBjOWViNTU2OTNjNzVlZDQgbGVnYWN5LXRydW5rCisxOTE4MyBhNThjOTkzZDkyMzQ1NzJmODI5ZDg1OGE0ZTgyYjNkNzc1ZWZhZmQ0IGxlZ2FjeS10cnVuaworMTkxODQgOTI1YjIzM2YwMmVhMGRjZTE5NDQ2OTY0NzlkZGYxZDRlNjIzNmY3ZCBsZWdhY3ktdHJ1bmsKKzE5MTg1IGFmZDA5MzBmODY4Mzk5YWViMjUwZmU0ZDJkMzE2MGEzYjI1NGNmZGQgbGVnYWN5LXRydW5rCisxOTE4NiA5ZDU3MjAzODIwNmUwMjc2MDg5NTYzMTNiZjdlOTFjZWEzMDk0ZmUzIGxlZ2FjeS10cnVuaworMTkxODcgMzMwMjM5NTc1ZTFlNjc1N2ZjZmU3N2E2N2ZkZjRhZTNiNmYyYWUyMyBsZWdhY3ktdHJ1bmsKKzE5MTg4IGZmZDI1MWRmYWJmNDJhZDgyYTk3MjA2NDVmMzI5YzE5ZWViYzAwOWIgbGVnYWN5LXRydW5rCisxOTE4OSA5M2FmYjJiYjIyZWQwOWJhZjhmOTYwNzA0ODAzNjUxNzJkODhlMWI1IGxlZ2FjeS10cnVuaworMTkxOTAgYWJkMzgzZjE5MDVjODFlY2U5MGY0ZTIyY2UzZGU0MThjNWM1YjVjYiBsZWdhY3ktdHJ1bmsKKzE5MTkxIDRkNDI0ZDEzOTdiMmQ4Yjk4NTQ3ODM1NzllYmYzMjBkNTcxMjE1YzIgbGVnYWN5LXRydW5rCisxOTE5MiBiZTA2YmZjYmU1MWEyZWFjNTAyNThiNzcyY2Y0MjU2YWMyN2VhZmEzIGxlZ2FjeS10cnVuaworMTkxOTMgMjRlOGM2OWNkMzRkYTU0YTU4Mjk3NzAzM2EwMGI4MmFjZTNiOTBjNCBsZWdhY3ktdHJ1bmsKKzE5MTk0IGJhY2JiNDVmZTg0NDhmZTIzNjdmNDUyMjEwZDQ3YTgxNzAyNWQxNzAgbGVnYWN5LXRydW5rCisxOTE5NSAwMWQ1YjgwYTNjMDM4MjM3NWRmOTQ2NDhhNzQ2Y2NiODkzOGRlZjNjIGxlZ2FjeS10cnVuaworMTkxOTYgMzZkYjE5MzYwOGJlZTE1NDViN2Y5NTk0MTU4ODEyN2NkY2ZjZjNlMSBsZWdhY3ktdHJ1bmsKKzE5MTk3IDI4NTJlYWRiN2RhYmE1MTJjYjMxZWRjYzQzMjY2MzUyYmQ0ODhkNjAgbGVnYWN5LXRydW5rCisxOTE5OCAyZDhlMDI5MDJkNjdlOTg4OTcxNGQ5MDAzYWFmZTlmMjZhMGZkNmY5IGxlZ2FjeS10cnVuaworMTkxOTkgZmE5M2JkMWQ4NzA5ZDhjYmJkY2JlMDRiYjk3YzA3NmE3YjA5MjhkNiBsZWdhY3ktdHJ1bmsKKzE5MjAwIDY4N2Y5M2RkZjNkNzM0M2JhMDNiY2EyM2NkZDk5YTkzOGJkODJlNDkgbGVnYWN5LXRydW5rCisxOTIwMSA2NTQ5ODJhNDY2MDc3NjllZWIyMGY1Y2FkNDgyMWM5ODZiOGYxZjBhIGxlZ2FjeS10cnVuaworMTkyMDIgMjA3MDc0NTg4YjlmZGUwNGQxZDZjMWYzMDQ1NmUyMDk0YjRmZmU1OCBsZWdhY3ktdHJ1bmsKKzE5MjAzIGE0YmJhM2ViMzRjMWYxNzM2ZTI5MzU2NjM1ZGUxYWQzNTAzNzgwMzUgbGVnYWN5LXRydW5rCisxOTIwNCAwNWE5MTNmZjk3YTZlMjEwZjZhMjAxOTg3Yjk1OTQ3MWZjYWM0MzNhIGxlZ2FjeS10cnVuaworMTkyMDUgZjg3YTQxYjk2ZTI4Y2M5OGQxMDE0NGU0YjBhZTg0NmQ3NmJjZGY1ZSBsZWdhY3ktdHJ1bmsKKzE5MjA2IGE4ZDg4NTdhYjBmMWVjZDViYWE2MGNlOWY1NTliMzAyOGE4NDUzM2UgbGVnYWN5LXRydW5rCisxOTIwNyAwY2I0Nzk1NTM0NGU0NDRlMDExYWIzNzkyNTBkZGNhYzA3NmFkYmVjIGxlZ2FjeS10cnVuaworMTkyMDggOTBlZGU1MTY1ZDFmM2MxNWVhMDhhMmI4Nzg4YjMyN2E1MTcwYWIwNyBsZWdhY3ktdHJ1bmsKKzE5MjA5IDZmMWMzN2U4MTE2MDViZmEwNTExNWNjZWY2N2QyOTliZTgxZjE4OGYgbGVnYWN5LXRydW5rCisxOTIxMCA2ZGYxMjczMmUyNjJmM2M3ODNiMmMwNjlhN2RkNmNiZWFiOGI4ZWI1IGxlZ2FjeS10cnVuaworMTkyMTEgN2M0ZWI0MGQ0ZmY3OTI4ZTUwZGUxM2QyZDYwZDg3NTAxYjA5ZGUxOSBsZWdhY3ktdHJ1bmsKKzE5MjEyIDY2ZDRiZjU2ZTMyZGJiMTg1YjJlZTJjMzYxZTQyMDMwMzI2NjFiYzAgbGVnYWN5LXRydW5rCisxOTIxMyBlZjMyYmZhNWY1YzY4MTM0ODBiNGExMzhjNjE0ZDU3MzU1MDFjODkyIGxlZ2FjeS10cnVuaworMTkyMTQgMGVlYjJlZTIwNzk5OWRhYWViMWRiNmYxYTA1OGY0ZmY5NTg0MTNmNyBsZWdhY3ktdHJ1bmsKKzE5MjE1IGFlMDRkNjE0YTNlMDMzYjQwZWJmN2RhYTg2Nzk3OWNiOGE3YjQ3OWIgbGVnYWN5LXRydW5rCisxOTIxNiBjM2I3NWE3ZmFkM2Y3ODA2Yzc0OTA5NzViMmI3YjcyMjA5NzA0YTg3IGxlZ2FjeS10cnVuaworMTkyMTcgZTQ0MjBjMjQ2OGY5MGFhNmIxYjYxZmYxNzBiM2JmMjBmYTgwNTJmMyBsZWdhY3ktdHJ1bmsKKzE5MjE4IDRmZjI4NThkN2E4NTU2ODY0Njk1NzY4MTJmZjUzMmU0YTQxY2I0M2MgbGVnYWN5LXRydW5rCisxOTIxOSA5ZjJjYTg1NWZhNDRkYjY0YTE2OGNiOTJlZGRiZjllNzVkMjgwZjhjIGxlZ2FjeS10cnVuaworMTkyMjAgZmE4YmUyODczMGM5ODUzMjQzYjQyN2ZjMGNmZjM3MzI0MjBiYmFjMCBsZWdhY3ktdHJ1bmsKKzE5MjIxIDEwOWM2YTI4MGU1MWFhMmM3ZWYyYzM1ZmQ2MDE2NjY1NDY5OGI0ZTUgbGVnYWN5LXRydW5rCisxOTIyMiA5NWRhZTYxY2VkNTE4MzNkOGYxODU5MWY4NzAxNjBjZmRmNzY4YzkwIGxlZ2FjeS10cnVuaworMTkyMjMgOGM1ZDhiNjE3OTc5YWJiMWU2YmRkMjUxZjVmOThhZGI0NzAwN2RkYyBsZWdhY3ktdHJ1bmsKKzE5MjI0IDY1NWFhY2NkMWNhZjhhNTU5ZmZjMzJmMTYzZDEwMjI4ZTU5YzQxMmIgbGVnYWN5LXRydW5rCisxOTIyNSBjMjljYTE5ODAzMDM4YmNiNGEyZjBhYTQ5NjljZWJiZmExY2ViYzNiIGxlZ2FjeS10cnVuaworMTkyMjYgZjFlMmY5OGYwMTIwNzgwMzcxZDIwYWJkYWUxNmY0YmQ2ZDI5YWI2MCBsZWdhY3ktdHJ1bmsKKzE5MjI3IDUwZjdkZDFhNTM1N2Q5Yzk1OTMyN2I5YjE2NzczMjFmMjUzOWNiMmYgbGVnYWN5LXRydW5rCisxOTIyOCAzOGNhOWNjOWZjNDhhMWNmMzAwN2E5YTkwOWJjZjIwODcyZDk1NzViIGxlZ2FjeS10cnVuaworMTkyMjkgM2MxYjQyNmIzZmY0YzZlY2NlYjFlMTI2ZmJlZmE0N2QwZjczNGYzZSBsZWdhY3ktdHJ1bmsKKzE5MjMwIGM2OTZhNTJjMjYyMTg0NTgyMzFmZDhmNjM3MWQ2YmRiOWUzNzliN2EgbGVnYWN5LXRydW5rCisxOTIzMSBjMDRjYTZjYmExZTNjOGU4YjUyZDVhMzYxNTExNDg3MDViN2MxMDI2IGxlZ2FjeS10cnVuaworMTkyMzIgNGI1YmVjZmEyZWIzYWNkNGYxZjU5Y2Q3OWMzMDYzYzczMDEzN2NmNiBsZWdhY3ktdHJ1bmsKKzE5MjMzIDNmZTg1NTUyNmM1NTYwNDlkODljNDRlMDZiMmYxMWJkNmE1YTY3NTQgbGVnYWN5LXRydW5rCisxOTIzNCA2NzBhMDE5NGE4ZGE3ZThiZThkMTk3OTE5NjlmODJmYTY4OWUyZGZkIGxlZ2FjeS10cnVuaworMTkyMzUgNWRmZDdlMTZjNjJmMTcyZTY0YWQ0YjRlZDg1MDMxN2Q5YjlkMmY0NyBsZWdhY3ktdHJ1bmsKKzE5MjM2IDYzMjViZDA2M2YwYTg4MzM2ZmJhNTUwN2M5NDU2NmM4YzRkOWE1NTMgbGVnYWN5LXRydW5rCisxOTIzNyA2ZmQ2M2M1YzE5YTkyMThiMjg5OWVjZTI5NDNkYmU5YTVmMGM3MDY3IGxlZ2FjeS10cnVuaworMTkyMzggOGIxYTM4MjI0YWRlOWI1NzVhNTUzYjI1ODU4NjlhMTI5ZDIzMWE3ZCBsZWdhY3ktdHJ1bmsKKzE5MjM5IDBkNGI2YmE1ZWVlYzg1MDUyMmNkOTM1Nzc5M2IzY2VlODFmZjFlZmUgbGVnYWN5LXRydW5rCisxOTI0MCA0Y2Q1NzQ0NjlmZTFhYThjOWRhMGRlOGYxY2M2Mjc0MmE2OWExZTI5IGxlZ2FjeS10cnVuaworMTkyNDEgNWYwNjgzYTY5ZWZjNjg4NGM2NDE3M2EwM2Q4Y2QwM2U1NDYyOTY2YSBsZWdhY3ktdHJ1bmsKKzE5MjQyIDNhNGQyYmVmYmI3NDczNDJkZjMzMGE4ZTMzYmE2ZDY3ODBjOGEzOGQgbGVnYWN5LXRydW5rCisxOTI0MyA0OGI0YWNmNzNhZDdhYmQyMDNkMzJkM2M4OTVhMDM2YzJlY2Q5NDQyIGxlZ2FjeS10cnVuaworMTkyNDQgZWM4ZjQ3YTFjYzQ4Mzg4NzgxZDgyYzQyYzc3MWU3YmE4NmJjYjU4MyBsZWdhY3ktdHJ1bmsKKzE5MjQ1IDk4YTg4YWJlNThkNDJlYjc4OTBkOTEyOGUyMzJhYjAxNGVjOTkyNzMgbGVnYWN5LXRydW5rCisxOTI0NiBjODk4Y2ViYTIyNjE4NDBlYjljZDRhMTE5MWI0OGI3NTFmZDc2YzA1IGxlZ2FjeS10cnVuaworMTkyNDcgMWZiNjY3MmIyMGVmM2NjYWYyMTA0ODY3ODAxYjkxMWNkMGFkNjdjYiBsZWdhY3ktdHJ1bmsKKzE5MjQ4IGMyNTU1YjRmMzhhMzE0MGY2MTIxMTlhOGQ2YmUwNDUxNDQ3OGNlYWQgbGVnYWN5LXRydW5rCisxOTI0OSA1NTY4ODcyOTZkMmFkOGFlMWFkZDQxODZhYjAwMDY3Njg3MjhjZGUwIGxlZ2FjeS10cnVuaworMTkyNTAgZmQ0YTYzNTY2YmExZjRkOTlhMjc5NTk4YTE2YzMwOGIxMzY4MGY0NSBsZWdhY3ktdHJ1bmsKKzE5MjUxIDQ2YThjZmU5YWZhNjM0ZDBjMzhjM2Q0MWMxYjljZjM0M2FlYjUxMzUgbGVnYWN5LXRydW5rCisxOTI1MiBkMzRmMjUwNDZhZDRiYTQ2OWQ3N2U3YTQ0NGI3ZWE4MTFkMDkyY2NmIGxlZ2FjeS10cnVuaworMTkyNTMgMmFiMjhiMjEzZDcwNWRjYzlmZDAzM2EyNTQzNGJhNGRiYTY4NmZlYyBsZWdhY3ktdHJ1bmsKKzE5MjU0IDJlY2NlYjlkODdmNTllMjIwZmRiNDZkYWYwMTY2ZTdlZDExMWZjMjcgbGVnYWN5LXRydW5rCisxOTI1NSAwMzk0MjcwZDRkMDZkNWExODcyNTdlNDk0NWU0MTNlZjI3NDc5MjNkIGxlZ2FjeS10cnVuaworMTkyNTYgZjcwMGU2YjhkZTFmYTYwNTllMjdlYmQ0ZTI2NzFiMDE0MDE0MjAwMCBsZWdhY3ktdHJ1bmsKKzE5MjU3IDc0ZDE0MGEzZjAzNDYzNTQ4NDgyNGEyMjk2Y2Y1YTBkNmEwYjEyODIgbGVnYWN5LXRydW5rCisxOTI1OCBiMjJlNGRjYTQ1MWEzNTc2OTdjNmJiZDUxYzU0OWU1YzMwMjcyZDE5IGxlZ2FjeS10cnVuaworMTkyNTkgMGJiNThjZGZhNjg4ZmYxZDkzN2ZhYjljMGVhMjkwMmZmNzc2YmY2MiBsZWdhY3ktdHJ1bmsKKzE5MjYwIDgwYzBiMjgwYTRmOTExZWY2YjdjODJmZTMyYzlkNGEwYzNjZmU0MmYgbGVnYWN5LXRydW5rCisxOTI2MSBkY2U3YjRlNmQ0MjFiY2I4Y2M3MTNkZTRhNGMzMjYwZTdhMWQ2MWEyIGxlZ2FjeS10cnVuaworMTkyNjIgMTY2ZTg3ODM2ZThlNjA1OTI2MGM5YWE3ZDM2MTE2ZDI2ZjgxMTQ3MyBsZWdhY3ktdHJ1bmsKKzE5MjYzIGFiZTg1ZDI2MjJmOWZiZGVmNTNjYjU0MGU1YjhkMmZkMTAwOTE1ZDIgbGVnYWN5LXRydW5rCisxOTI2NCAwOGFjNTU2ZjJkMTJkZTU5ZWJhNjVkMzQ1YTQ3ZDk3YTdkNWY2OTMwIGxlZ2FjeS10cnVuaworMTkyNjUgYzIyZTg3MjUwMWEwYzk1MmU0NmZmNDU5OTkxMWQ1OGJhNDdhNmFkOSBsZWdhY3ktdHJ1bmsKKzE5MjY2IDM5MGNhNDNlNWY3OWQwZjJmYjA5ZmZjMWMwYTU4Y2RkNGQ0ZmE2NjUgbGVnYWN5LXRydW5rCisxOTI2NyA3YWQ5NzgzMmE1Y2QwNWIxN2E1ZWUyMGE0NTFiMmU2N2NmMjE1YzE4IGxlZ2FjeS10cnVuaworMTkyNjggMmQ3MmRiOWY1Y2E1NDRjZGJlZDA5MmY5MDkwNGFmM2JiOGNiNzkwMCBsZWdhY3ktdHJ1bmsKKzE5MjY5IDk5ZWRlMjE5MDg3MjczNjQxNjJjMTViZTJhYzYyNGIzYTc2NGFhYWUgbGVnYWN5LXRydW5rCisxOTI3MCBlYzcwOWVlOGU2ZmE2NTI3YmFkYjAzZmQxNGE3MzIwZjdmZDY1M2QxIGxlZ2FjeS10cnVuaworMTkyNzEgNzQzMGViYWJkYmRjYWVlMzI5Y2NiMWM3YmMyZDdhZWMzNDlkMzZlMiBsZWdhY3ktdHJ1bmsKKzE5MjcyIDNkNGE3Y2QwYmYxNzhhZDYzZTM4YmQzY2VlZjUwZjEzMjcyNDAyZGEgbGVnYWN5LXRydW5rCisxOTI3MyBhZWRiOTNmOWM2YjgwZDU5OTFjMDJkYzk2NWU4YjBhZjhlMDZhY2I0IGxlZ2FjeS10cnVuaworMTkyNzQgMTBlYTQwNjBjOGRjNTViZDUzZjhhZmViMDFiZjIyYWNjY2ZjNWFkOSBsZWdhY3ktdHJ1bmsKKzE5Mjc1IDg4MTk4NjdmMTRlZjY1OWJlOGZmODA1MWMwMTI0YTRkOWM1ZDQzOWUgbGVnYWN5LXRydW5rCisxOTI3NiAxODViOTE5NjcxNDdkZDAyNzY2MTVlMjhhMzJmMmI3NjFkMmZiOTk5IGxlZ2FjeS10cnVuaworMTkyNzcgMTJkMDA0OGVkNmNhNWI2OGMyZTY0N2Y1NmEyZjM3ODgwYTQ1N2NlOSBsZWdhY3ktdHJ1bmsKKzE5Mjc4IDdkMzlkOWRjZjJkNjExMzc4ZmFjYzY4MDQwODAyNGJmYjc1NTRkY2YgbGVnYWN5LXRydW5rCisxOTI3OSA5MDFiOTQ2NTY5MjhiMGQwYWVlYjZjMDcyODBhMjljOGYyNDc5OGMxIGxlZ2FjeS10cnVuaworMTkyODAgMWFjN2U2MTg2YjZlM2Y3N2JhN2IzODVhZWRkYzQ2OTIwNDY1ZGU5ZiBsZWdhY3ktdHJ1bmsKKzE5MjgxIDFlZjdlNDM3MTVmNTQwYzMwYmRkNjEwN2M1YWZjYjBmYzM4ZDY5YzAgbGVnYWN5LXRydW5rCisxOTI4MiAzODIwNDA5M2Q5YzkyOWQ2NDRlZjljNTZiYjg5ZGFmOTk0NTg3YzBhIGxlZ2FjeS10cnVuaworMTkyODMgYWE4NDQ3MTE0NjNhYTg5NGFmZmNlMDlhODdiYmFjM2Y0YzdlMGUyNyBsZWdhY3ktdHJ1bmsKKzE5Mjg0IDhiMzE4YjhkNzhjOTQ0NjZkY2JlZjViYTkxMjVjYjUzYjM5NmYyOTIgbGVnYWN5LXRydW5rCisxOTI4NSA1YzQwMTEzNDA5YzMyNzdjNjYyNDFjOWJjN2YzY2U2MWVlOTBhYzc3IGxlZ2FjeS10cnVuaworMTkyODYgMjVlYzRmOGM2MGFhY2Y2YTAyODM0OWJjNzI4NzEyNjFlY2Q3MmUyMCBsZWdhY3ktdHJ1bmsKKzE5Mjg3IDNmZmNjOWIzYmFiODdmNzE0ODg0MzczMDZkN2MwMmJiYjBhZjQxZWMgbGVnYWN5LXRydW5rCisxOTI4OCA3ZWE3YTFjNWE4ZDIwM2IzZmIyNTAyZTY4ZWYxNTVhOTg4MDlkYTgxIGxlZ2FjeS10cnVuaworMTkyODkgYzhlZjg2NGJhODYxZjIzNGNiNTM1YWFmZDhmODM3NWU2YWZmM2I0NCBsZWdhY3ktdHJ1bmsKKzE5MjkwIDY0OTY4NDRjNGE0MjgwOTA2Yjc1MjljZDM4ZDQ5MTI0M2Q0Nzk1ZjMgbGVnYWN5LXRydW5rCisxOTI5MSA4YTQ0MGZmMjc0ZWNiY2IxZTUzNTY2NDE5Yjg5Y2UzNGUwNWNmNWMwIGxlZ2FjeS10cnVuaworMTkyOTIgMmJlN2M5MGMxZGRlZDJlNjQxMGMxNzdkOTU1MThkNTg4NDUzZDEzNiBsZWdhY3ktdHJ1bmsKKzE5MjkzIGMxNmUwNjFkMjNlODg2YmIxYjExY2NiYTQyOTQ4ZDE2NjM3NzcyMmMgbGVnYWN5LXRydW5rCisxOTI5NCA2YjVlMjBmNjllOWVlOWQ1NmNiZjUwY2RlMDQ2MzQ0NmY4YzlhN2JlIGxlZ2FjeS10cnVuaworMTkyOTUgMDA3NmU4ZDI4ZjllYmE5ZWZmNDUwODY5NmRjMzM3MzBhZjJiNDAwMSBsZWdhY3ktdHJ1bmsKKzE5Mjk2IDVhNGJkZmM2NjA4M2VjYzMzYzNjMjAwZDgxODRlYWY1MjZlOWZmODQgbGVnYWN5LXRydW5rCisxOTI5NyBhNjIxOTk1MDc2NmU3OGFmMzg2ZDllNGVlNWU3YWUyYTA1ZjBlM2JlIGxlZ2FjeS10cnVuaworMTkyOTcgYjM4MmYxZjA3ZWM2YjJjOTU1NTE2NThiMzBjNjEzOWVlYjMyMDc3YSBsZWdhY3ktdHJ1bmsKKzE5Mjk5IDY3OWY4MjZiMjRjYTI2OWI4ZjE4YzQwNDNlY2Y1YzNkNWFkODdmZjYgbGVnYWN5LXRydW5rCisxOTMwMCAyNDZiM2E2YWE3YTk0MTFlYTc3ODYxMzRhMzI1ZmQwMjJkNGYyZmUxIGxlZ2FjeS10cnVuaworMTkzMDEgZDU1N2ZmMGEyZjZjOTdkNDJhODAzMjQzNjk5YzUxMDFjZTViMWIwZSBsZWdhY3ktdHJ1bmsKKzE5MzAyIDdhMzk3MDRhNTA0N2U0ZjZmYzczMDExMDkyYmUyZGU5MjE1OGNkMzIgbGVnYWN5LXRydW5rCisxOTMwMyBjNDUzZmJmMzBmNjEzNzc4MWY0ZjU4NGQwNjk4MTZkODdkMWM1YjAzIGxlZ2FjeS10cnVuaworMTkzMDQgYjJjNTE2YmI3MzRhNzI5ZWFmMmRlNmNjNzY2NmRlY2U0MGMzNGEyNSBsZWdhY3ktdHJ1bmsKKzE5MzA1IGNlOTg1MDA1MTEyMDQ5MGRlMzA4NTJkM2ViYzk3YzBhMGQyNThlZWMgbGVnYWN5LXRydW5rCisxOTMwNiBiNzhjOGQ4YzUyZTYxZjZhMTZjNjk1ODI1ZWQ3M2JiZGRmM2RmMDdhIGxlZ2FjeS10cnVuaworMTkzMDcgZjkzZTIzYTgyYTczZDJmMWJhOWE2ZTBiMDI0MDkwNzhkNTYxZDQ5YyBsZWdhY3ktdHJ1bmsKKzE5MzA4IDU3NTg3MjU4NGIwY2ZjNmRkNWYzMjYxMDgxNjA4OWEwZjE5MmZlZDEgbGVnYWN5LXRydW5rCisxOTMwOSBhYzUyZDM3Mjc4NjczZmNmNDczOTRlZTc3MTk1OGVkZWMzOGMzN2U0IGxlZ2FjeS10cnVuaworMTkzMTAgMTg3NzA1N2FhOTI2MjA3NjE3Yjk1ZjZjOWU4NDZmNDg2NTM0YzdhMyBsZWdhY3ktdHJ1bmsKKzE5MzExIDY0YTMyZGY1YzA2MzQ1ZDg5MDZlYjI1Zjc4MjNkZGJlZGZjNDBmZTIgbGVnYWN5LXRydW5rCisxOTMxMiBhZjM5ZGUyNjJiOWM5YjhmMWI3Zjg5YWFiY2VmNWYzMTg0ZmMwYTE0IGxlZ2FjeS10cnVuaworMTkzMTMgOTliZWZlYWM4NDAwZmZhODA2Mjk5MGIxNjU4YWVlNzVmZWUwYjcwOCBsZWdhY3ktdHJ1bmsKKzE5MzE0IDI4ODVhMzM5NjM1ZWRlOWEwMjcxYzI5MGQzMmQzNTU4OGI5OTMyMDEgbGVnYWN5LXRydW5rCisxOTMxNSAyZTNkZDYyY2VhYzVmODg0MzllMzljMzgwMTJhM2IzNmIxOGNiNTlmIGxlZ2FjeS10cnVuaworMTkzMTYgZGRjZTcxNWU0OWJhMDY3Nzg3ZDVhYTA5YmEwMDM0YjhiZjkwODhkYyBsZWdhY3ktdHJ1bmsKKzE5MzE3IGIzMDVjMTUzNmI3YWE0ZDQyMGJkYmQ4N2RmYmIzNWNmMzcyYjVhNWUgbGVnYWN5LXRydW5rCisxOTMxOCBhNTA2ZjNiNzU2OTQxNDk5M2U4MTRmMDc3NWY4MTI0Yzg0MzcyNjEzIGxlZ2FjeS10cnVuaworMTkzMTkgM2NjODYzNTU4NzkzM2VjNWE5MWFiNjBjYjM2YjkzODMxOGMwYzdhZCBsZWdhY3ktdHJ1bmsKKzE5MzIwIGM5OWQ2ZDVhZmQ3NWQwYmNiMDBlYmU4YWI5YmE1NzYzMjI0YmQyZTUgbGVnYWN5LXRydW5rCisxOTMyMSA1ZWY3MWNiNjY0OTUzNjE0MWZkZWZkZDg1ZWFiNmUxM2E5OTZhMjdkIGxlZ2FjeS10cnVuaworMTkzMjIgYzE4YWM4YzJmMDM2NWJhN2QzYTU5ZTY3MjU4ZDIwMTk0YjE5NjQ2MSBsZWdhY3ktdHJ1bmsKKzE5MzIzIDBiYjE3MTI3YjJmOGVhM2MyOGE5ZmFhZDZjNGNkYzczYzdmMTFmZDIgbGVnYWN5LXRydW5rCisxOTMyNCBhNGY2YjYzMzIzMGMzNzIyZDM3YThkYjViNjdhYjlhMWYzMjllMzg4IGxlZ2FjeS10cnVuaworMTkzMjUgMmNhODc4M2NlOGEzNWFlN2UyY2U5MjNjMTRjZDhmZTFmYzI2OGIwYiBsZWdhY3ktdHJ1bmsKKzE5MzI2IDI4NmE5ZDk4NzM3NTM2M2QzZTJhNTkyNTg4ZTcxNTZkOTM0OTU1MGYgbGVnYWN5LXRydW5rCisxOTMyNyA2NWE3MDg5NTA5MjJiNmY4ZjgzMjRmOTA4YjUwYTZjMDMyYmMwZDUwIGxlZ2FjeS10cnVuaworMTkzMjggZWE4OGMyYTczMTczMDQ0ZjE0ODBhOWJmZjEyYWQ4YTM1NjJjYzE5ZCBsZWdhY3ktdHJ1bmsKKzE5MzI5IDFjNzFhYTdkNTUxMzFhYmYyZDAwYmMxYTIwZjY0MjlmMmFjZWY1MDUgbGVnYWN5LXRydW5rCisxOTMzMCBlZDQzMzhjN2U4YTQ1Yzg5N2JmODQwM2VmNThkZGQ5MzQ2NTQyYmU0IGxlZ2FjeS10cnVuaworMTkzMzEgYzBiMGZjMTMyNzllMjMyMTY0N2MyNDhkYTcwN2Q2NDRlOTVjZjkzZiBsZWdhY3ktdHJ1bmsKKzE5MzMyIDgwN2NhNjk3NjIwYWVlMThiYzI2YWUzMGQxMDJlM2Q5OWFiZjllYTUgbGVnYWN5LXRydW5rCisxOTMzMyBhYjAyYmM2YTVhYjJjYWRjMDg4NTk2YzY4MTgzZWYyZTI3YTIzZDdkIGxlZ2FjeS10cnVuaworMTkzMzQgNTQ5ZTk5M2E0NzZjZDcwZjI1MzY5MzAzMWE0NDRhZjE5NTZiYzIyMiBsZWdhY3ktdHJ1bmsKKzE5MzM1IGY1YmNiYTVmYTQxYzhiMGM2ZjJhOTc4NGI2NTM0MjAxNGY3NjFjYWUgbGVnYWN5LXRydW5rCisxOTMzNiA0ZDQwNmMyNmMxNmVhNzlkYTdhMzY5NzMyNzM2MDFkMmMyZTUwNGM2IGxlZ2FjeS10cnVuaworMTkzMzcgYjYzMTNjOTExNGVkNmQxMmM2YTljZGYxNjFhM2QxZDhjZjY0YzNjMCBsZWdhY3ktdHJ1bmsKKzE5MzM4IGY3YjE2N2M4MzMxODU4ZGQ3NDgzNWZkNGM4MTljODI3YzAxNDJkYmIgbGVnYWN5LXRydW5rCisxOTMzOSA1N2NlOTJhMTZiM2M5ZWViMjhhNjMwYjc1YzI4OTZjYzY4NzljOWJlIGxlZ2FjeS10cnVuaworMTkzNDAgZWRjMGM5OWE2OWQ2ZDIyNTYyMjczZGJiYjU5YzQ1YzljNmI2YWMwMiBsZWdhY3ktdHJ1bmsKKzE5MzQxIGQ1OTY2M2QzZTQzM2EzNTk5N2NlODY5ZGMzMzQwYWIwYWEyNDYxYWIgbGVnYWN5LXRydW5rCisxOTM0MiBlOTcyMTdmNWIzMjMxOWYzYTdmOTg3ZTMyMmVmY2I2N2ZmMmRkOTllIGxlZ2FjeS10cnVuaworMTkzNDMgODExYjBjY2I2MmFlY2U5MzdkMTAzZGI5ZWM1YTNmYzc0MTA4ZTlkMSBsZWdhY3ktdHJ1bmsKKzE5MzQ0IDFmYjdiZWZiNTlmMDczYjAxYmExNDQ3ZGYzNTYxMWEwN2VlZDk3YmEgbGVnYWN5LXRydW5rCisxOTM0NSBjMjMzZWZjYjQ4OWU1YmY1ZjQ3YzRlNjk0ZmRlMTBkNDhjM2FmY2MzIGxlZ2FjeS10cnVuaworMTkzNDYgYmY5NzgxOGRkOWUxZTI4YjhhZDFkZGM5YWY1OThlMzIxMjJkMWU4ZiBsZWdhY3ktdHJ1bmsKKzE5MzQ3IDVmMTJkZjg4YTIwODVhYTIzODllMGUyNTJkYjFlOWRlOWI1MTU0YTkgbGVnYWN5LXRydW5rCisxOTM0OCA0NjRkZThkZmE1OWU5YTc1ZGFkOWQ0NzE5OGY2YzgyZWQ5NTViMDY3IGxlZ2FjeS10cnVuaworMTkzNDkgNzcxZGJiMTU1NTc1ZmJjZmU4ZGE1ZDdkOGRjZTQyOGUxOTAwNWM2NSBsZWdhY3ktdHJ1bmsKKzE5MzUwIDkyY2JlZmRiNjc0YTY1Y2Q3ODIxYmNjNjdhZWRkYWEyODliNmM5OTIgbGVnYWN5LXRydW5rCisxOTM1MSBhNjg4ODRkZTEyZWM1NGU1NGI2OGM5NmQ3MzU1M2ZkZmFiZGEwZmQyIGxlZ2FjeS10cnVuaworMTkzNTIgODdmMmFiYjczMTg0OGI2ZmZhMmJmMjQ5NjhhZWZmNjU5NjZhN2M4ZCBsZWdhY3ktdHJ1bmsKKzE5MzUzIGE0YzZlNDAxZWUxODRjM2ZmZDUyNTgwNDgzMzQzMTNlMjNiMzAyNzYgbGVnYWN5LXRydW5rCisxOTM1NCBmYzRhY2UwMjQyY2IwOTRiNmIzNmVkNjFkYjE2NjgzZTc4YzQ3M2FlIGxlZ2FjeS10cnVuaworMTkzNTUgNmU1YWI3ODQwYjA1ZDBiYzk0ZDliZmVlYzE5MDVhMmNmYmM1MGMzNSBsZWdhY3ktdHJ1bmsKKzE5MzU2IGY0ZDE1ZmRkMTVkZDdiMWVlNzUxY2I3NjkyMzdmMmU5MDg2YzY0NjAgbGVnYWN5LXRydW5rCisxOTM1NyA2OWYxNjJkY2Q4YjRjMDljNWVmNGRkZDRiNTdiOTA3Yjc5ZDZmOGM5IGxlZ2FjeS10cnVuaworMTkzNTggMWZmOWQ1NzFiYWMwOWE3ODE1NjdlMDZhOTE3ZGE1ZTA5OWY4MGU4MiBsZWdhY3ktdHJ1bmsKKzE5MzU5IGQzMjk2MDYzNjFmOGIzYmM1ZGU1ODRkMzNlZjM3ZDlkNTJjZThlODkgbGVnYWN5LXRydW5rCisxOTM2MCBmNzUxYjk2ZGU2MjFlZTcxNGU1YWFlNWJiZThjNjgwZTFjODY5ZTc0IGxlZ2FjeS10cnVuaworMTkzNjEgNThkZTI4MjljZmRkM2I4OTgxMDI1NTNjZjk3ZWRmODEwYzk0Y2VhMSBsZWdhY3ktdHJ1bmsKKzE5MzYyIGM5N2U2MTg5YWQ5NmE5ZWFkNTJhYmE1MWY0YjkzOGM1ZTI3OThiNTMgbGVnYWN5LXRydW5rCisxOTM2MyBiMTE3ODBiMDY4ZmE2YzEyMjljYmVkMjk1ZGYzY2JlOTc0MDc1ZmFiIGxlZ2FjeS10cnVuaworMTkzNjQgYmYwMzA5ZDVmYzBhOTM5ZTkwYWViMWI3NjNlMTI4YmY0MTY3MmE1ZCBsZWdhY3ktdHJ1bmsKKzE5MzY1IDhkNzY1NWFjOGJmODY4YTUzNGUwNDEzODk2OTA2NjljY2FkMjBkODcgbGVnYWN5LXRydW5rCisxOTM2NiA2ZmZjZThiZTNlMGI4ZGQzMTRjNjk2ZTY2MWM2NDgwNmVkYTRhZjZiIGxlZ2FjeS10cnVuaworMTkzNjcgODhjODdjODliNDA2ODAwNzg5NGExMTkyNWE4YjZjZTY1YzRlY2EyMiBsZWdhY3ktdHJ1bmsKKzE5MzY4IGIyNmNiYzFmZTRlM2I1YmY2MTk2YmE2OTUzODkxNmQ2NGM5MzZkNDUgbGVnYWN5LXRydW5rCisxOTM2OSBiZGZjNmJmN2IwZGFlN2QyMjhhYTdmZmQ3NTA5ZmQ2ZGJiZGVlYWJlIGxlZ2FjeS10cnVuaworMTkzNzAgNWMzYmYyZTg5ZDgwMTFhZmI1ZmVmNjhiOThhNzFhMjZiMzc1OWM3ZiBsZWdhY3ktdHJ1bmsKKzE5MzcxIDVmNTg4ZGQ1NDM5YmYwMDZhMTZkZjBmMTQ1MWQwZGY0YjkwOTBmMTEgbGVnYWN5LXRydW5rCisxOTM3MiBjODdmZGY3ZGUwZTZiOGY5MTc3MDBkMTA4ZjFhZTE3MmE3MmZjYjYyIGxlZ2FjeS10cnVuaworMTkzNzMgMThlZjNkNWVhYjRmMjJjYjkzYTdjNzAwMmE2YWM2ZmFhODQ0N2Q2MCBsZWdhY3ktdHJ1bmsKKzE5Mzc0IDg5M2E1MTVkMzMxYTczYWFiMzY3ZDllMWJhZjlhYWNlYmZkZjVjODggbGVnYWN5LXRydW5rCisxOTM3NSA1NjQzZTM3Yjk5YWU2OWVlZjYzYmJlZTVlNGI3YzA5NjgxOTFmN2NlIGxlZ2FjeS10cnVuaworMTkzNzYgOTBjNjAwYTgxOWU5NmQ0NjA2OTc5ZTJkNjhlMzhkZDE0ZmRiNDExMiBsZWdhY3ktdHJ1bmsKKzE5Mzc3IDhiYTZiYzhjMmUwOTM4MWYzNzZmMTE5MzlhOTg5YzlkM2M0MTE0YzQgbGVnYWN5LXRydW5rCisxOTM3OCBhZjg4NDY1OTk5YzdhNmMwMzM0NmJiMGI4Zjc1ZDdlOGZhMWVlMjYwIGxlZ2FjeS10cnVuaworMTkzNzkgZWVlNjdhODRlNWZhYWYzMDBhMWVmMjY4MWI4OTllMzY4MDFkMmZmOSBsZWdhY3ktdHJ1bmsKKzE5MzgwIGIzZDkyM2E2NjE1MmNkOGQ1MzY5ZjY5ZWNmYTRmZDI0OGQ4ZTExNTUgbGVnYWN5LXRydW5rCisxOTM4MSA2MzFkNGM4ZGI3ODQwODAyODY3ZjkzYjM5NmYyMjVhNjFmNTdjMzU3IGxlZ2FjeS10cnVuaworMTkzODIgYzgwMjM4NWE2YWMzZTY0MjI2OTI4YWMwM2UyOGM2ODdkNWQ0NTNiOCBsZWdhY3ktdHJ1bmsKKzE5MzgzIGUzZDQ4ODA3NDhiNWM0NzVjNGM1OGU4ZmYwMDNlZWE1M2QxYjQ0OWYgbGVnYWN5LXRydW5rCisxOTM4NCBmNDI3OTljNjg5MjllZTY0YzljODI0ZjZmOTJhYWQ1ZGU5YWI4Mjk1IGxlZ2FjeS10cnVuaworMTkzODUgOWQ2MjUzMDNmOTE0YmU4MzBhOTkyN2QzYTU0YTI1MTA1ZDYxNTg1NSBsZWdhY3ktdHJ1bmsKKzE5Mzg2IDI0ZTk0NmU5NTFmYTJhMzVhMThhNTkyMWNhNGQ2OWFhNDUwYzIzNTggbGVnYWN5LXRydW5rCisxOTM4NyBjMzY5NjdiZGM5ZGQ0ZGFiYjc4YmM1ZjcyNDBjZTMyMDliN2Q0YjBhIGxlZ2FjeS10cnVuaworMTkzODggNTdkMjQ4ZGRiZTJhYmFiNGRmZjRhYTY2YzViMDg2OGI4MzdkZTlmNiBsZWdhY3ktdHJ1bmsKKzE5Mzg5IGE4ZTEyM2RmMjY4YjljYmZhMDUwMTg3MDBiNmQxYTZlNTkzNDcyMTcgbGVnYWN5LXRydW5rCisxOTM5MCBmM2U4M2U1MTRkZDg5YWZjZWY4MDQ5ODBmN2Y0MDFkY2YxYmYxY2JmIGxlZ2FjeS10cnVuaworMTkzOTEgNzUxZTljYzQ3N2Q5ZDAzNDkyNzVkYWI5M2FjYmE4YTRhMjQ2MmMwNSBsZWdhY3ktdHJ1bmsKKzE5MzkyIGE4MGY2N2I3MjMwOGU5ZDA1MTViZGI0OWFmZmFkZWZiZWMyNTY4NWUgbGVnYWN5LXRydW5rCisxOTM5MyAwNmRkOTRlMjBmM2I4MWJjYzE0MDhkNTM3MjhiMDEyNjU0MGQzZWU3IGxlZ2FjeS10cnVuaworMTkzOTQgN2ZjNjRkZjEzZGIwYWNhZmM2MzM5MWQwMmRjNGFhM2I2MTUxNjA3NCBsZWdhY3ktdHJ1bmsKKzE5Mzk1IGM0OGFmMzljYjI5MmUwMWI3YzkyYjcwMDc0NmZjZGY2OGU4YTk4MmMgbGVnYWN5LXRydW5rCisxOTM5NiBiNTlmM2ExZWIxMjM5MWJjMWFlZGE3NWE2OWQ5MmMzMzk1ZjE5MGI1IGxlZ2FjeS10cnVuaworMTkzOTcgMDg0YjNkYzliNmZmMzEwMmFlOGQ1ZjllOWI3Y2I0Yjc5YjU0OTJiYSBsZWdhY3ktdHJ1bmsKKzE5Mzk4IDU0ZjcyMDljYzcxZTdiNjkwOWQzMmYyYzM2ZDE0YzhlZjQxN2Y0ZDMgbGVnYWN5LXRydW5rCisxOTM5OSBmNGU3MWJhYjc4NTNjOTdiNTU3OTc5MDljMGVmZTk2NjRjYTFkM2RjIGxlZ2FjeS10cnVuaworMTk0MDAgYTU0MGM2ZmQwY2VkMWQ4ODFkYmVjYTE3YjgyMWIyMTI3ZTNmNDE3YyBsZWdhY3ktdHJ1bmsKKzE5NDAxIGE0N2Q5M2VmMTAzYTc2NzNiYzIyZjNiNjVlN2Y1MmRjYWIzMmI4ZDYgbGVnYWN5LXRydW5rCisxOTQwMiA4MjM2ZjNlNzU4NWUxNGZjODAwMGE0YTkyNmY0ZTA1NTE3YzQwNjc2IGxlZ2FjeS10cnVuaworMTk0MDMgOGVlZDM3M2JjZTdmZTUwYWRlMmE2MWY1Nzg0YzA1MGE0Zjk4YTVhYiBsZWdhY3ktdHJ1bmsKKzE5NDA0IGZlZjRjMDM5NzMzZGNiODFkYzc3OTRiYzI5NTljZTQxNmFhMGMzYmEgbGVnYWN5LXRydW5rCisxOTQwNSAxMjE0YWJlYTBjN2IyYTgzNTExNzBkODg4NDU1YTNlNmRkMmUxZDQwIGxlZ2FjeS10cnVuaworMTk0MDYgNDY1MjcyM2VhNjU1Y2E4MmE4ZmUyNjhhMWUxYzQ2NjdhNzEzZWI2ZCBsZWdhY3ktdHJ1bmsKKzE5NDA3IDM4ZWNmZDExZDliNTNhMjZjNGNlYjMxY2NjMTdlNDhlYjlhZThjNjcgbGVnYWN5LXRydW5rCisxOTQwOCA2MGEyZTk5Yzg2M2JlOTcxOWUzMTQzODk1NjhkYjM4YTllMDUxYTBjIGxlZ2FjeS10cnVuaworMTk0MDkgY2M5Y2IxZTkwYjNkMjRiZDc4ZDM0MDNiMzdmYWJhODUzZDE1NzJjMyBsZWdhY3ktdHJ1bmsKKzE5NDEwIGRhODY4MWYxN2I1MDBlNjRlMWRlNjcxZDQ0ZTQ1M2I0ZmViNTdjYjMgbGVnYWN5LXRydW5rCisxOTQxMSA3ZTlmNDA1MWJhNGFmMTNmZmQ1YTVjYzlmMWU0ZWFjMDJjZjMzZDI2IGxlZ2FjeS10cnVuaworMTk0MTIgOGY3MGI1ZGRkNWMwOGY2NDA4OGY2NzgzY2FhY2Q1YzUzN2Y3ZmI2ZSBsZWdhY3ktdHJ1bmsKKzE5NDEzIDdkZTUwNDM4MjdmNzBmZGMxODZiNmRmNmVlZWNiYzAyMTg3MWQ0YTEgbGVnYWN5LXRydW5rCisxOTQxNCBlNTU5MmYxZWY0MWY4NjUxZjI3ZTNmYjY1YzhiMTA1NTFkNmE4YWZlIGxlZ2FjeS10cnVuaworMTk0MTUgOWE5NTc5NGUwZjdlYzY1YjUzNjlkZDg0NWY3YjBmMDBiOGJiOTY3ZCBsZWdhY3ktdHJ1bmsKKzE5NDE2IDQ0NGMwZWVkNWE2NmM1YWM5NTUyMWI0NzNkMDc4NzRhNGYxMjRjMzggbGVnYWN5LXRydW5rCisxOTQxNyBkMzhhZmIyMGMzMzZhNzI0YWVlMjMyNDM4OTE3OTM1YjQ1ZDY0YWU2IGxlZ2FjeS10cnVuaworMTk0MTggMjdmY2UyZDdmYWNkYjQyN2Q5NzY4YWI4MWE2Y2MyY2U1NGZkMGI4NCBsZWdhY3ktdHJ1bmsKKzE5NDE5IDljZTllMDM0MmNjMWYwZjAyZTU5YmVjYmVlNzYwYjE2OWQ3OWJiZWUgbGVnYWN5LXRydW5rCisxOTQyMCAxOTJlOTg1NWM3YzAwNjU1NmFkMjc4ZTMwZWJhNjdhOWQ1ZjVkNGNlIGxlZ2FjeS10cnVuaworMTk0MjEgOGMxYzc4N2JkNmY5ZTJiNWE1ZGNkMzVlZDI0ZDZlMzE4ZDUyYWE2MSBsZWdhY3ktdHJ1bmsKKzE5NDIyIGU4ZTYzNmNjMWEwOTMzZDZlNzdjY2RmMGMxMzJiZjAyMzMxNTQxM2YgbGVnYWN5LXRydW5rCisxOTQyMyAwZDEzMDVjODNkZTRjOWUwZGM1ODFkZjNmMDMxNmUyYjM2MThiNTAxIGxlZ2FjeS10cnVuaworMTk0MjQgNjIzNDU2NTc2ZDZhOGU1NGQ1ZTkwYjQ2ODA2OGJkOGZjMTM1NThkMiBsZWdhY3ktdHJ1bmsKKzE5NDI1IDMwZDM0YmJmODYyMDFhYTk4YzhiNGE4NmE2OGVmM2E4ZjEwZDNiZjkgbGVnYWN5LXRydW5rCisxOTQyNiBkMzQ4NGNhNDBiOGEwZDdmOTExY2FjMTI0MmQ2MmViYTM2NmU2OWQwIGxlZ2FjeS10cnVuaworMTk0MjcgMjNiNWU3ZDAzZjc2ZmJiODU5NDBiMDAyMDA5YWVkMTEyNTZkZDZjOCBsZWdhY3ktdHJ1bmsKKzE5NDI4IDRjZWRjODI2YmVlOGI2ZDE5ODY0ODg4OTkxMzljYzQ4NGFmMjA5NjYgbGVnYWN5LXRydW5rCisxOTQyOSBiNGZmMWNmNGExMGZhZmI4NzgyOTQ2MWI3ZjU1Mjk4ZTVjNDIxZjI2IGxlZ2FjeS10cnVuaworMTk0MzAgOTE3NjMwMTNjMzZmY2Y1YzZlMWUwOWJjMGMyY2M0MzE2MjNkYzBjNyBsZWdhY3ktdHJ1bmsKKzE5NDMxIGM5MDRhNDBlMTRlYTlmZjNlNDcyMDEzMjg2YjE1YTIyYTIzMDc3ZjQgbGVnYWN5LXRydW5rCisxOTQzMiA4NjU3Mzg0ZGNjNGFiMjgzZWRkM2E3MmQzN2NkZDNiODYzYzc2ZjBmIGxlZ2FjeS10cnVuaworMTk0MzMgMmM2NDE3ZWY0NjI4NTBiZGVmODY3ZWFhNmJhMGM5YTIzODUwOTYxMSBsZWdhY3ktdHJ1bmsKKzE5NDM0IGVlMGRkMGM3OTY0ZWRiY2EwNjYzYTI2NGRhNWEwNjc0OTI5MjZhMTUgbGVnYWN5LXRydW5rCisxOTQzNSA0NzcyZmUyZGIyYzQ2YzI0NWFlMzQ4NWI4MzY5MTVjYmQ1NzNiOTFhIGxlZ2FjeS10cnVuaworMTk0MzYgYmY5YzI0YmVkYTdkNTc1MzRlOTMwZjY2OTk1OThlNzAyZmI3ZTMwNyBsZWdhY3ktdHJ1bmsKKzE5NDM3IDVmM2E4MzUwNjE1YzhiOWNlNjM4NzIzNDY4YTI5YjUzM2M2NzcxNTMgbGVnYWN5LXRydW5rCisxOTQzOCBmNjU0NDY4YjlhZThhOWEwNTFhYWEyOGRjZTdlZjE4YTQ2MzEyZmY3IGxlZ2FjeS10cnVuaworMTk0MzkgMDY4Y2I4NDk0YjdiMWU2NjFmZjAzNDIyNjk5N2Q5N2MzOTZlMDgzMyBsZWdhY3ktdHJ1bmsKKzE5NDQwIGI0MzllZWRhMDA4MjhmM2JmMGQ2YWU1MDUxYTcyZWQ2NDdjN2UyOGEgbGVnYWN5LXRydW5rCisxOTQ0MSBhNjNkYzU5YmUwZjk4NmEyNDJhYjNmNDQ0MDg5ODNiMDg4YzIzMjI0IGxlZ2FjeS10cnVuaworMTk0NDIgZGExNWU1ZjY4NjQ0YTk2MGRlYjBiNmM3MjU1YjU5ZmUxYTM5YTc1ZiBjbnJpLTE2LXN0YXJ0CisxOTQ0MyBlMmIyZmU3ZmFiYjg5NDM5MDQxZTFhNWM4MjQ3MzY3NmJkOGRkODE3IGNucmktMTYtc3RhcnQKKzE5NDQ0IDlkMDhjMzc0NzNjYjkyNmFiZjk2MzlkNjc2NjVmMTk2NzVkYzJlZTQgcmVsZWFzZTIwLW1haW50CisxOTQ0NSBjMGNkZjgyNTk5ZTAzZjM5NGM4NTIxNmYwYjZjY2YxN2RiMjViMTAwIGxlZ2FjeS10cnVuaworMTk0NDYgOWE4ZTk2MWI1MDVmMDMwNjk2ZDAyY2YxYzhhMmMzMDI4NzA0MWI1MyBsZWdhY3ktdHJ1bmsKKzE5NDQ3IDgxN2RmOWVmYWNiYWU3NDMwMTZmNThlZjc3MWQwYWZlZjEwZTc0YTggbGVnYWN5LXRydW5rCisxOTQ0OCAzZjZjMDVlMDQwODI2ZGM3MjI5ZDQzZGIzNzQxNDI0MTZmMDJkOGU4IGxlZ2FjeS10cnVuaworMTk0NDkgYWFlMmJiOGFjMzczOWUwYzU4ZTRmMmRmN2JkNWJkY2UxYTM5YTY0YyBsZWdhY3ktdHJ1bmsKKzE5NDUwIDVmYTI1NTQyYjg5Njc1ZDQyYjE1ZDhkZmE1NWI2ZjY2MjMyYjNjNDUgbGVnYWN5LXRydW5rCisxOTQ1MSA5YmIyYjY5NjNjODI1YWE5MGU1ZWU2YmMwZjc5MTFiYTdjYWM1N2Y4IGxlZ2FjeS10cnVuaworMTk0NTIgNTZhODEwNmJhZjYzNWFkYTI5MDE5NGI2MThiMDVjMWQ1ZTk4OGRlMSBsZWdhY3ktdHJ1bmsKKzE5NDUzIGJhODQ0NjNlZmM3YmM1Y2JlZWZkMmE3MzBhNGI4YjkxMjY4Y2QyMDAgbGVnYWN5LXRydW5rCisxOTQ1NCBmODEzZTk4N2U2NWNlNDBhODNmNGU5MzYyY2YwZWJiNDU3YmVmNjkwIGxlZ2FjeS10cnVuaworMTk0NTUgZGY3ZDUyYWUyMGU0Y2QwNTM2MGM4YTFlN2FhMDhjYjk4Mzc5YTVlZiBsZWdhY3ktdHJ1bmsKKzE5NDU2IDc0YWU4MGQ5MGZhNmNjMjY0MzY1OWE4ODY1OWMxZmMxMDQ1MmRlY2MgbGVnYWN5LXRydW5rCisxOTQ1NyBiMzYyNTEzMTZmNmFlZGE2ZTNiOWZiNTFkOTYwNzg4YWExMmQzYjE2IGxlZ2FjeS10cnVuaworMTk0NTggOWVmOTc4YzZmMDM5NTY1MGM5OWI3MmI4YTAxMTRkODJiMDRkOWIzNCBsZWdhY3ktdHJ1bmsKKzE5NDU5IGZmZGM3MTg1YmRhYmQ2M2UwNDkzMGIwMTU3NmE4ZjkyNjc4OWQwYWMgbGVnYWN5LXRydW5rCisxOTQ2MCAwODU1MTE5MTY3NzYyNjk2YzZhMThhNGFlNTdjYWZlMDgwNjQwNDNiIGxlZ2FjeS10cnVuaworMTk0NjEgMDdmZmIwYzNiZDVlZTY3YzE4YmViN2IyMjE0MmY0NTNkNTQwYWUzMiBsZWdhY3ktdHJ1bmsKKzE5NDYyIGUxMDQzNjcyNTZmMDIwMzc1NGQ0ZmZhNWY3M2I4MDc2ZTQ5ZGM0YzAgbGVnYWN5LXRydW5rCisxOTQ2MyAyNjBmMDMzYWU3ZGYzODk4YjkzM2I2ZjJlNzVjY2FhY2YxZDQwZTBlIGxlZ2FjeS10cnVuaworMTk0NjQgODg1ZDU0NTI0OGRiMzgwNzkzMzcxNTEwM2FjMDI2MmIzZDlmOThiYyBsZWdhY3ktdHJ1bmsKKzE5NDY1IDBiNDU1YTQyODk2Nzc4N2UwNGNjZjhjMzhjODQ2YTQ4Yzk3MmM0OTkgbGVnYWN5LXRydW5rCisxOTQ2NiA5NmQ4ODY4YTAwMjg0ZDk5Yzg4ZTM5NDI4MjRhNzY1MTljMjA2MDYyIGxlZ2FjeS10cnVuaworMTk0NjcgMGNkODdhNWQxZWY5NzRlYWU3ZjAxYzI5OGJlYTk0M2FkYzVmZDQ2ZSBsZWdhY3ktdHJ1bmsKKzE5NDY4IGVmMmJlMTJiMThmZWEzOTY2YTk3ZThhNjI0NGIzNjVkNDAzZGIwZWEgbGVnYWN5LXRydW5rCisxOTQ2OSBiMDViOGI2YzBiNDMwOTg5YzdiN2I2ZDhjNDM5YjU1ZmUxODY4ZTI4IGxlZ2FjeS10cnVuaworMTk0NzAgNDRlZjY0NGNiNTI2ZWViN2ZkYzJhNDRkOGU3ZDhhMDRjY2FhNDEwNyBsZWdhY3ktdHJ1bmsKKzE5NDcxIDk0MWE3NmYzODc0NzQyNTYxNDE4ZGI5ZGM0NjdmOGMxOWRhMDFhOGUgbGVnYWN5LXRydW5rCisxOTQ3MiBmNDI1ZDg1MjM0ODBiMDFmYzM2NDYxMDkyOTU1YjdhZTY4ZTE2NGMxIGxlZ2FjeS10cnVuaworMTk0NzMgNzMzMDY5NDkxMTljMDRkMzU4YTEwNTY4YWUwZDIzYzZmNTg0OTYwMSBsZWdhY3ktdHJ1bmsKKzE5NDc0IGYwZjU3MjlkNjAzZmI1OWY4YTk2ZjY3MzcxNTk4MzE2YzZiNmVkOTQgbGVnYWN5LXRydW5rCisxOTQ3NSBlM2NmZmMwMzk0YmZiNmMwNDUyYjU4NjVjODc3NzMyZDZkNjMwNjQ1IGxlZ2FjeS10cnVuaworMTk0NzYgOGVmMjQ2N2YwMTkxYmI2MTAwNGIzMDA2YWRmMGY5ZjA5N2Y3ZWQ0OSBsZWdhY3ktdHJ1bmsKKzE5NDc3IGY2OGRiZmZmZjkyN2JmYTU2NmZkMmMzYTllOGFlZmI1YjYxMzBhZDkgbGVnYWN5LXRydW5rCisxOTQ3OCAyMGU1MmU1YTQwOGExNmYwMjg2NmE2ZmFlMjI4NjNkMDQyYTRhMWQ2IGxlZ2FjeS10cnVuaworMTk0NzkgOGZmNGNmNDkyNjdlYzU0NzkwMWMwZGU2ZjY1MjE4ZmJiMTAwYzZiZSBsZWdhY3ktdHJ1bmsKKzE5NDgwIGUyYTYzNTg0NTY2ZjgyZGI5MzdlMGEzMzFhMWIzYmRmOGIyNTI3ZTYgbGVnYWN5LXRydW5rCisxOTQ4MSBlMDUwYjk0ZjA0ZDNjOTY3Mjc5M2VmNmE0OWNkMTgzZTNmZjkzNzg4IGxlZ2FjeS10cnVuaworMTk0ODIgNTY5MTQ4ODRhYWI2MzAxYjQ3NjI0ZWZjYjA2MDhkNmM1YzE3MjMxOSBsZWdhY3ktdHJ1bmsKKzE5NDgzIDRlMmQxYzZmMjkwNGRhNjRiZWYzYzVkMTI5MWRmOWFkODA4MzhjZTMgbGVnYWN5LXRydW5rCisxOTQ4NCAxYzZiYTk0NmQ4ZmEwYmUyZTQ0MDIxM2ZiNGNkM2E3NDVmNWQ0MTk4IGxlZ2FjeS10cnVuaworMTk0ODUgYzk1ODY3ODcyMGZkYWM0MjQ2NTQ1ZjVhODk4NTQ1ZGRiMTMwMmQwNiBsZWdhY3ktdHJ1bmsKKzE5NDg2IDkxNzgwZWFkOGMyNWIyNzI3YzQyMmNiOGY3ZWE1ZmM0ZTZlMjY0YzkgbGVnYWN5LXRydW5rCisxOTQ4NyAzYTZiNGEwMDNhMTdlNGI5YWY2ZmRmYjFkMzNhNzM0OWU5OWY3MjJjIGxlZ2FjeS10cnVuaworMTk0ODggNjdhMDY2NmYxMWUzMjMwNzBmNTMyODUyMzExZmFkNzVjMzQxNjYwOSBsZWdhY3ktdHJ1bmsKKzE5NDg5IGM5ZjIzZjgwZmM5MzBkODVmYjI5ZmEzM2VjODQ0ZWJjYTZhNGQyOTkgbGVnYWN5LXRydW5rCisxOTQ5MCA2MTE3NjgzNDlkZDkwZjM5YWRmMTA5Y2RjZDllMWFlMDkzZWIwZTFjIGxlZ2FjeS10cnVuaworMTk0OTEgMDYzZDVjNGY2Y2U1OGIzNDA4ODExYzlkNDc3YWY3NThhNTI5MTM2MiBsZWdhY3ktdHJ1bmsKKzE5NDkyIGM4N2U3MDE3ZDY2YjMzYTg4YWJkOTllMzkxZjk1OTM1YmQ3MWI4ZTQgbGVnYWN5LXRydW5rCisxOTQ5MyA5NmU5Y2NiZjE2NWY2YTRlMjAxNWY3OWQxNzE0ODJmM2E5MDliMTU5IGxlZ2FjeS10cnVuaworMTk0OTQgYzk1MDlkODRmM2RmN2Y4ZWIwZjYzOGM4MjgyMzAxZWI2ODQ0YTY2ZiBsZWdhY3ktdHJ1bmsKKzE5NDk1IGUzODE0NTMwNjIzMTI2MzVhNzQxNjMzMTk2ODdiNGM1YTk5OTZlYTIgbGVnYWN5LXRydW5rCisxOTQ5NiAwNTY0YjEzNGI1ODQwMzU1MWJkYmExZDA5OGNhMmY0NTBjZmQ5OTQ2IGxlZ2FjeS10cnVuaworMTk0OTcgMjE3Mjc3NTgzNDY4ZDA1Njg4NGU0ZjNiNWFkNWI1OWZmZmM3OWUyMiBsZWdhY3ktdHJ1bmsKKzE5NDk4IGQ0NTU5Yjc0NTdhMGUzMmEzMTUyNWRhYWI0MjY5OTgyMWMxZDBjMGUgbGVnYWN5LXRydW5rCisxOTQ5OSAyZmI2NDk4Mzk2NWZmMjIzYWVhMjUyMzkxZmYzNGNhMWI1M2E0YWU4IGxlZ2FjeS10cnVuaworMTk1MDAgZTMwYzE5NzUzMmFhMTI2YTZkYWE0YjA3ZmM2OTgzNmEwNjFiYWM5MiBsZWdhY3ktdHJ1bmsKKzE5NTAxIDU5ZjRmNjk2MDEwMTY4ZGExOGE5YmE5YTc5MGQyZjRlMmUzZjdhM2QgbGVnYWN5LXRydW5rCisxOTUwMiA3OTU2OGMwZDNlNzdhNjkzNjJiMzU3OWNjZjViNDc1MDM1NjUwYTFmIGxlZ2FjeS10cnVuaworMTk1MDMgMTQ2ZGZlN2UwMzM4MmNlYjIxOTBjYjE5Y2U5YjdkNjkxOWQzMGU3YyBsZWdhY3ktdHJ1bmsKKzE5NTA0IDdkMWU3YjZlYzgzOTQ1MzQ4NmRiMmFjZTgxZWYxZjYyNTkyY2ZlOWMgbGVnYWN5LXRydW5rCisxOTUwNSAzOGY2OTcyZGM4YjQxN2ZmMmJhYjk4NTMyMTU1ZWM4ZDkxY2M2MTY0IGxlZ2FjeS10cnVuaworMTk1MDYgMTVmMDA2NGM4NDAwOTZlZmRjOWFkYzU1NmYxNzM1Yzc1OGFhMTkxZCBsZWdhY3ktdHJ1bmsKKzE5NTA3IGY3YTk3NzY3NzFhYjBlZmUxZDY3MjA5MmU5MDAxMGJhYWE1ZDIzZTUgbGVnYWN5LXRydW5rCisxOTUwOCA3ZjEyN2JlMDdjNTA5NTc3ODFlMWMzODFlZGY3N2IzNzkwOTZhNjEwIGxlZ2FjeS10cnVuaworMTk1MDkgZDZkNWMxMWY3NWE5MjJlOTVjZTJiOTM3NGNjMGVhYmJkNjAxZjg3OCBsZWdhY3ktdHJ1bmsKKzE5NTEwIGI5ZTU0ODFmNjQ0YzMwYWY3NDYzNGQ2YzdlNWQ0OWMxMzZmMTRhZTMgbGVnYWN5LXRydW5rCisxOTUxMSA3MjhjMTE1NjIxODcyZjE3MDFjZWUzZGNmZTdmMzUzYjhmM2NkY2MyIGxlZ2FjeS10cnVuaworMTk1MTIgYTUxYjk5NjFmM2JiYjBjMDYwNWRhN2UxMmQwZTljYjRlZjA3OTQ3YSBsZWdhY3ktdHJ1bmsKKzE5NTEzIDhkODUwOTYxNzg3NDFmNTk0MDg4Nzg4ODhlMjhiZDIwZmEyYzg4MmMgbGVnYWN5LXRydW5rCisxOTUxNCBkM2U4Yjg4MDY1MWI3ZDQ3MzU0ZTk4OTkxYjEzM2YxMmM0YjMyMTkyIGxlZ2FjeS10cnVuaworMTk1MTUgOTE1MjFjNTJiMWRiNTVhZmM2ZDZmY2NhNDIwNDgzOWMzOWFhNGZkZiBsZWdhY3ktdHJ1bmsKKzE5NTE3IGRhOWE0YTE2OThmMWY2ODRlNzk2OTFiOTY2NGI3YzYwN2JiZTFjOTIgbGVnYWN5LXRydW5rCisxOTUxOCBiOWZlOGJkOWU1ZjRmYmIwNmQyOTk2N2FiMmZlNmIwYzBkYmQ2Nzg1IGxlZ2FjeS10cnVuaworMTk1MTkgNTkyMWIxMjlmMzUwNDg0MzVjMDZlYzc0OWQ5ZjhkNDcwNjExYWZkOCBsZWdhY3ktdHJ1bmsKKzE5NTIwIDFkN2FlZDA3Njk2NDgxMjZhNWY2MDRjOTNjMTgyZjcxZGY4YmIzMDUgbGVnYWN5LXRydW5rCisxOTUyMSA3ZjhlODE3YWM0MjNjNDU2OWY4OTE1NjhiN2QxMDFhN2UyMGM3OWVjIGxlZ2FjeS10cnVuaworMTk1MjIgNzlkNTMzOTM0YWMxYjMwOTVlMGM0ZjlhNGI3MzFlMjFjMGVmZmYyOCBsZWdhY3ktdHJ1bmsKKzE5NTIzIDFhNWE0NDE3NzJmZjYzYWE5ZjkxOGMxYmU5ZWI1OWJiMmIwNmExYmMgbGVnYWN5LXRydW5rCisxOTUyNCBkZWVjNmZhODA0NzEwODM3ZDE3NjgxMmRmOGU5NWFkMTkzMjg5NTNlIGxlZ2FjeS10cnVuaworMTk1MjUgMDA0OWY3N2IzNmM2MjMyMzdlNzFkMjk2OWQxYmUxNjc3ZmYwOTg3ZSBsZWdhY3ktdHJ1bmsKKzE5NTI2IDZhZjQxNWYwYzAxZWIwMGQyMzcyNDk2NWNlMjM5ZTcwMjNlNjE2NzkgbGVnYWN5LXRydW5rCisxOTUyNyA4OWMxY2NlZjVjZTgzNjBlM2I0NjY0MDNhMDNkNzEwNDVmNTI2NjE4IGxlZ2FjeS10cnVuaworMTk1MjggOTRhMzg0NDNmOTliYjU3MDU1NWNiMTcxZDU0NWE5OTI5OWM1MzU1ZSBsZWdhY3ktdHJ1bmsKKzE5NTI5IDU3NDZkMGJmNWYwNGRmN2YyNTNiOWNiMjBmNTQ2NjE1NmY2ZDI4YzMgbGVnYWN5LXRydW5rCisxOTUzMCBkZTBlODc1MmQ1YjcyY2U3NDUwY2Y0ODU1MGMzODNiMTFhMmQzMjJlIGxlZ2FjeS10cnVuaworMTk1MzEgZTlmY2I0NmMxZjJjYWNiYzM5NzQ2ZDVlN2Y1NDgzNmFkZWY2MjFkYiBsZWdhY3ktdHJ1bmsKKzE5NTMyIDcyNTIzODI5Mzg2OWNjNWFjOWY2NjVhNzBjNzE0NjNhZTdlZjM3OTkgbGVnYWN5LXRydW5rCisxOTUzMyA1N2E5NzIyYzU4OGQ0ZGEyYjhhNWEwZTg5MWY5MmJmZDU3YzVjZDYxIGxlZ2FjeS10cnVuaworMTk1MzQgOTkwZmEyNWNkZTFjY2YxNTY4Yzg2OTQzMGE4ZGU2NjNlZWYyMmIwMSBsZWdhY3ktdHJ1bmsKKzE5NTM1IGE4YTAwZGUwMjRlNzM4MGE5ZmU4NGRjYmQ3MjVmMmE3Y2I1NmI5YWQgbGVnYWN5LXRydW5rCisxOTUzNiA4YmNjMTBkYjU2MmU0ZjlmZjhlMjJmMjdjMTM1OGQwZmQ3ZTBkMWJhIGxlZ2FjeS10cnVuaworMTk1MzcgMGQzYWU4ZjA4NDlkOTJhNTM5N2UxZTQ4Y2E4OGU3YmQ2NjkzNGY2OCBsZWdhY3ktdHJ1bmsKKzE5NTM4IDViY2Y5YzQ5YjZlNzhjNDVmYjZlYTBlNzcyYzdiYWYxOTIxYmIwYzggbGVnYWN5LXRydW5rCisxOTUzOSBmNGU5N2VjMWRjOWFiNjJlNjE1MmVmZGNhMjg4YzI3NDlhNjlmZmY3IGxlZ2FjeS10cnVuaworMTk1NDAgOTYzZjk1ZWI3NjQ2ZGFhMTg4MThhNDkxZjMxMjYwZWU2MjQ0M2Q4NiBsZWdhY3ktdHJ1bmsKKzE5NTQxIDI5NGJhMTZiMGU4OGE0NzYzZDNlYTA3YjU4MWE1NGQ0YTVlYTg1YWMgbGVnYWN5LXRydW5rCisxOTU0MiBiOTU1ZTc0OTU1ZDU0Yzk1OGE2OTIyMjc5MTcxODIyZjBiZDE5ODMzIGxlZ2FjeS10cnVuaworMTk1NDMgMDZhZDUwNTNmNDBhMDYyYzkwNzc5N2U1MDNjMGIxMzViZTRmZjg4OSBsZWdhY3ktdHJ1bmsKKzE5NTQ0IGRiNGZjODJhYTQ0YmE5YjUzYjY4NGE2ODBjZmI1YWZhYTEyNTUwY2IgbGVnYWN5LXRydW5rCisxOTU0NSAxN2VkNjFmZDViNjU0MDkzM2YzNTk2Yzc0YTM3YzBiMDhkMGEyYTgxIGxlZ2FjeS10cnVuaworMTk1NDYgMjZhY2MyNDQ1ZjM3MzczMmYxN2RkNTE4MmFjMGYyZTFjMDYxYWEyOSBsZWdhY3ktdHJ1bmsKKzE5NTQ3IDNjYjAwY2JlNzQ1NTA4NGU3MjFlOTFjY2FhOGQzNTUzZjY0OWFjMjAgbGVnYWN5LXRydW5rCisxOTU0OCBkOTRmZWE1NzgzNGMzM2EwMWRhYjAwYzkxMzhkY2I3NTgwNzU2MTA1IGxlZ2FjeS10cnVuaworMTk1NDkgZjdhZTBkOTM3Y2QwNzQzMWEzMDBjNzIzMzA5ZmU4MjYyMGEzNjQxNSBsZWdhY3ktdHJ1bmsKKzE5NTUwIGE2ZjA4MGZlNTI1MTFmOTI4NmFhMzM1Mjg3MmU4ZDkwZjFmZjQ2MGUgbGVnYWN5LXRydW5rCisxOTU1MSBhMGJhZjRjZDgzNWNmMmY0MGRiOTE1NDQ2OTJjYjY5MmIwNTg0ZTVjIGxlZ2FjeS10cnVuaworMTk1NTIgMTAyZmZlMTYxMWUwZjg0NzQ5ZDhmZGZjMDJiOGY4YWVkMmNhM2I4NSBsZWdhY3ktdHJ1bmsKKzE5NTUzIDZlYmIxNGIxNDFhZDUxYjljYzRiODhmMjE3YjhkYjNiMTgzZWYwODggbGVnYWN5LXRydW5rCisxOTU1NCA3MzZiY2VlY2EzZGJkNjNhZjgzMjg4ZGIyYmJiMTc2ZjcxN2RhNGY1IGxlZ2FjeS10cnVuaworMTk1NTUgNDEzNGI1OTcyMjE5Y2ZiYzllZmU2M2E3NTczM2JiODA1NWYwOTM1NSBsZWdhY3ktdHJ1bmsKKzE5NTU2IDY2MjY2YzQ2Y2NmZGNkNjJhYTk3YThlY2IzZjJkNjg3ZjZhNjEyZjUgbGVnYWN5LXRydW5rCisxOTU1NyAyYTg2ZDUxOWY4MGU1ZTg4NTIxMzdjZjlkZWJjODM1NjM3ZTQzZmQzIGxlZ2FjeS10cnVuaworMTk1NTggZGU1YThkZDFjNmYyNDc1NmZhNDNhNDE2M2EwYzdmMzFjYjljNWU4MSBsZWdhY3ktdHJ1bmsKKzE5NTU5IDNiZGQ1NjVjNzdiZGRkZDIyODA0ZjA3M2UxNTk3ZWYyYjc1ZmRhYWEgbGVnYWN5LXRydW5rCisxOTU2MCBlMTRjNWYzNGZhMDU4NTZhNTQxMmNhODVkMDMyYTQxOTJiM2E5NGRhIGxlZ2FjeS10cnVuaworMTk1NjEgNTY0OTI3YzU1NzQyNWY4YmY1OGNkYmFjZDM4NjJkYWI0MTVmOTk0YyBsZWdhY3ktdHJ1bmsKKzE5NTYyIGMwMmE5ZGI1NmZlMTVkNWIwNTMyNjAzYTQyNWNkOWFhZjcyMjFjNWMgbGVnYWN5LXRydW5rCisxOTU2MyAxYjQwMGM4NTRhMmMyZmZlNDE4OWQyODRlZTZmMjkzZGI2NGQ4Yjk0IGxlZ2FjeS10cnVuaworMTk1NjQgNzMzNGIyY2VkZGE4ZTc1MGJlMmViNTM0OGQwYjdlN2MxOWM3YTBkMyBsZWdhY3ktdHJ1bmsKKzE5NTY1IGQyYTg0MTRhMWVhYjNkMWUzZDg1ZDI4ZDZjNzRlMzQyZDQ5ZWZhYTQgbGVnYWN5LXRydW5rCisxOTU2NiA2MGM5MGZmOWMyZjc4YWQ2ZDhlODM4YjIzNGEwNzE4MTM0M2E4OGM2IGxlZ2FjeS10cnVuaworMTk1NjcgZjlmNGMyMzNlZTAzN2NkNTM0YzU2OGNlMTA2NTcwMjVhNDg3M2QyNSBsZWdhY3ktdHJ1bmsKKzE5NTY4IDgxNzI5MDZjNmRjOGZiMzc4NjE1ODhiYmJjMGVhNmU2YTVhNDdhOWQgbGVnYWN5LXRydW5rCisxOTU2OSAwNDY4NTk2ZTMwMTg3NDAwOGQwN2U2YTdhOGEzNWUwMTBlZThlOGM2IGxlZ2FjeS10cnVuaworMTk1NzAgOTMyYTFmOGQ5MmY3MDkxNzJjMjdkNmE5ZjhlNGIyY2Q3MjU4ZGJiZCBsZWdhY3ktdHJ1bmsKKzE5NTcxIDYxN2NiNDBjYjc0YjhmNzQyMDAxZDE2NzkzM2JlMjEyM2VlZmZmM2QgbGVnYWN5LXRydW5rCisxOTU3MiA5Njk2Yzk1ZDA5Yjc0MjRjZDEyM2Q0MGJlOGY5OTdhZTFiN2MwMGYxIGxlZ2FjeS10cnVuaworMTk1NzMgNTc3OTlmMDEzYWFkMjU0YThmODlkZjZiNjE0YThiNGJkOTYwZTg0NCBsZWdhY3ktdHJ1bmsKKzE5NTc0IDFjZjM2ZWI1YTI1YzBmNTYwMmZjZTA3M2ZjNDM2MWM4Y2Q5OGU3NjggbGVnYWN5LXRydW5rCisxOTU3NSA1ODkwOGJiNDdjY2FjYWQ3YTYxNzBkZDBlODE1ZDc2M2VkMGRlODE2IGxlZ2FjeS10cnVuaworMTk1NzYgMmMxZjhkM2JiYTJmODFlYmI1MjdiNjY0ZDUyMTkwOTc2MWU5NThhYyBsZWdhY3ktdHJ1bmsKKzE5NTc3IDYzNDFmOGQ5MDlhYzVmNTZjMWMyZjc0ZDZmOWRhMDYyMzliNjRkOTMgbGVnYWN5LXRydW5rCisxOTU3OCBlNGI0N2I0MzkzYzhhZDRkNmFjZDI1ZTI4ZjgxYjkzZjg0MDJhMjc3IGxlZ2FjeS10cnVuaworMTk1NzkgNmQxZmQ5MjQ0ZGFkYWFiZWYyYTllZWVlMjE2Y2U3MTExNjVmY2I3YiBsZWdhY3ktdHJ1bmsKKzE5NTgwIDNlOTM5NmFjNGJhMDdlNGRjZDk4NjA0NTU5Zjk2NGMxNTI0NDM3NDggbGVnYWN5LXRydW5rCisxOTU4MSBlZjY0ZGM2ODUyMGZkYjk5MmZhZTUyZGY5NDM0N2Q2YjVlZGZhMDljIGxlZ2FjeS10cnVuaworMTk1ODIgYTFkOGJiNjg2NTlhNDc0MzdlZWY3MGRmN2RkMjMxNDQ5YzMwODVlMiBsZWdhY3ktdHJ1bmsKKzE5NTgzIDAxYzI0NzBlZWIyZWEwMzQxNTg3NmNhMzdjNTQ2ZGRmYzNiZjdmOWEgbGVnYWN5LXRydW5rCisxOTU4NCA4OWMxMjY4ODdkZjA5M2UwZDM3Yjc1NDkwMmFlODNhZmFiNjY4ODc2IGxlZ2FjeS10cnVuaworMTk1ODUgNDA3ZDQwMjJjYzhjMDQyOGIxNTRmZTk2YTU4ZTUwZDAzZTFkYzQwNSBsZWdhY3ktdHJ1bmsKKzE5NTg2IDRkYjBmZGRiNjkxNzhkYmZjZmQ3YmExYWFmMzkzZDc2MDkwNDc1YzAgbGVnYWN5LXRydW5rCisxOTU4NyBjYzMzOGE1YzE2ZTVjNDIwM2U0ZmUzMWQxNjUxNWYzMzVlMTE0ODZlIGxlZ2FjeS10cnVuaworMTk1ODggNTlmMWI1N2JjOTA5OThmMDc0OTc2ODZjYWM2NmE1MjU3MjI5ZGYyMyBsZWdhY3ktdHJ1bmsKKzE5NTg5IDEyMDYyMWJkMzNmY2E1OWExMDI2YTE2YjRiZGE1YjQxNmIzYzY3NWYgbGVnYWN5LXRydW5rCisxOTU5MCBkMTcwYzFlNzcyYzU1M2E5YjU4OTZiNmE0YTE0ZGVmNWQ3ZTQ5M2Q5IGxlZ2FjeS10cnVuaworMTk1OTEgNTgzYTgxMmM0NWM4ODYxMzQ1NTY3YTVjZTdjYjhjMWI3NWQ0M2FiYiBsZWdhY3ktdHJ1bmsKKzE5NTkyIDgwMGIwMDRhY2M3MTc4MGU2ZDk5M2QzMmJmODE0MzQzY2E5MTU5MjYgbGVnYWN5LXRydW5rCisxOTU5MyAyNTZlMTU5OWQ4ZDk2YzNiYmQ3NDdiYzM2MWZmNWEwZjE0NjliNGMzIGxlZ2FjeS10cnVuaworMTk1OTQgNzQxNDVhYjFmZGM1YmQ5ZGY1MDNmYTY3NWI2NDk5MmJjNjY1YjNkNSBsZWdhY3ktdHJ1bmsKKzE5NTk1IGU4MWRkYTVkMzdjNGIxYjA2MzAyMDYzOThkNmI1MWY0MjUwZThlMmUgbGVnYWN5LXRydW5rCisxOTU5NiA4NmM3NjgzYjYwNmE5MGJlZTljYzkwODQwZWFiNWViNjg5NDIwMjE5IGxlZ2FjeS10cnVuaworMTk1OTcgOGYwMzRiY2VlODU2YmFkZjBmNTQ2NGY3MjMyNzYyMjdkZTgwOGIxNCBsZWdhY3ktdHJ1bmsKKzE5NTk4IGM5OWQxOWE5NmU5ZWJiZWNmNjJkYzc3MTUxNjZhZTdmZWRiOWJjMTggbGVnYWN5LXRydW5rCisxOTU5OSAwNWVjMWIwNTRiNGQ5M2ZlMDZmMjg5ZTdlOGQzNzNjZmRkN2Y2ZDFkIGxlZ2FjeS10cnVuaworMTk2MDAgOWY4NmNiYTQ3NjZiNTRlZTk1MTcwMGRkODBmNTBkNWI3ODdjYjJlMCBsZWdhY3ktdHJ1bmsKKzE5NjAxIGIzMjc4YmY0ZjA5MTgyMzcxM2NmYzQ3MTEzMzIwYzJiYmNkYTllNzQgbGVnYWN5LXRydW5rCisxOTYwMiAzODZjYzY5OGFlZjk1NTZmNmRiNDBiYjFjNDI3OWVjMWViMmMxMzA3IGxlZ2FjeS10cnVuaworMTk2MDMgODQ0ZmRlNjAwYTYxZDMzODlhYWIxYmYxZGVkNmY2YTQ1Y2YwNmNmYyBsZWdhY3ktdHJ1bmsKKzE5NjA0IGRkYWZkYmY5MTQ5ODViODkxNGNkOGEwNGE1NzA5OTRmNmE2MzNjNzggbGVnYWN5LXRydW5rCisxOTYwNSBjMTAwNTYxMDBlYTVkZDJmZTg0ZDUyYzJlMzI3MGQ4OWJiZTllZTBjIGxlZ2FjeS10cnVuaworMTk2MDYgODQ2NmJiMzcyODljZDZlNzYxMGFhODhkMzhmZWEyNDcxNDU2OGZiZiBsZWdhY3ktdHJ1bmsKKzE5NjA3IGRiNjE4OTRiMGQ2ZmMzZTQwMGU0MDI0NGMwNWY4Yzk4Njg0MTA4ZWYgbGVnYWN5LXRydW5rCisxOTYwOCA4NWQyYWY5NzJlNjIzMDRjMGI5MjA2MjA5NzZkZmEzZWY3NGMyYTJkIGxlZ2FjeS10cnVuaworMTk2MDkgMzVmNTdjNzE3MGJkNDBhNzVkOGRjMzJjMjEwNTRlZmIxYmYyYTMxNSBsZWdhY3ktdHJ1bmsKKzE5NjEwIDRjYTYyYWZlYzAwNDUyNWZjM2NiNzM0ZmFhZjU2NjBjYTFlOTEyNTIgbGVnYWN5LXRydW5rCisxOTYxMSBiNDJiMjJhOTIyOGNjODYwNWE1OWY5MTZiMDU0OTlhYmQwOGYwNzMxIGxlZ2FjeS10cnVuaworMTk2MTIgZTJhMGRiODM5ZWIxYTQzYjQ1MjY4NjM5ZDJlNTVmMjkyYzQ2N2MwZiBsZWdhY3ktdHJ1bmsKKzE5NjEzIGU0NDRhNTI3MTE4MTJjY2NjNzEwYTlhZGMwMDE1NDFjOWRkMzFmYjIgbGVnYWN5LXRydW5rCisxOTYxNCA5NTE4ODkzY2M4YTdkNmY1ZDIyNmVjZDc4MGNlYzI1NDJmMzNkMDljIGNucmktMTYtc3RhcnQKKzE5NjE1IDA2ZjZmMGUxZTEwNjE2YzhiNjYzNGQ3N2QxZjk5NjM5OTEwNWNjMDIgY25yaS0xNi1zdGFydAorMTk2MTYgM2MwYTM1MDAyMTA4ZDJlMTIwNDMxZDU0ZDZjM2NiYmY1MTU3YjVhYyBjbnJpLTE2LXN0YXJ0CisxOTYxNyA2YTU1YjY3N2Y1MDk2NDVmM2M4N2JiZWE5NTBjYjE5ODBlZWExNjIwIGNucmktMTYtc3RhcnQKKzE5NjE4IDc4MTU5MTllMmFmOGI2M2UwZWE3NjE2NmRkMzVhOTBkMDU2MzFlN2MgbGVnYWN5LXRydW5rCisxOTYxOSA5MGU5MGM5MjE5OGI3ZGE2MDllNTYwZmMzYjNmYzc2N2U1MzZjZWMzIGxlZ2FjeS10cnVuaworMTk2MjAgY2ExYmU3ZDAwNDEzZThhYWE1ZTM5Y2Y1YWRjMzQxNjBjYWNlNzgwZiBsZWdhY3ktdHJ1bmsKKzE5NjIxIDVjM2FlZGM5NjlkYTQ1Njc4Y2M5YjBlZDIwZjM5MzQ4NWU4YjBlNDQgbGVnYWN5LXRydW5rCisxOTYyMiA1MTk3N2FmMjMwZmE0N2JlZTk0ODEzNzYzMWMwNWI3MTgyOTA3MmVkIGxlZ2FjeS10cnVuaworMTk2MjMgMjNjN2EwMTA4ZjU5MGNmYzdjMWI5ODFiMDJhZWNjNTM1MTg1N2JlMSBsZWdhY3ktdHJ1bmsKKzE5NjI0IDJmYjRkNjI1YmQzOWYwMWE0YTJjYmY4N2JjZDg5YmU5MmQ2NWYwYTEgbGVnYWN5LXRydW5rCisxOTYyNSAzNDQ4NTkxZTgyNzVlN2E3NWE0NzJlMDI5NWY0ZWZjODE1MTdjYzliIGxlZ2FjeS10cnVuaworMTk2MjYgZTFmYTk4ZmQyMzllNzVhMTNmMDhmNzc1YTgyYTlkMzU2Mjg0ZTUwOSBsZWdhY3ktdHJ1bmsKKzE5NjI3IDg5OTYyODhhODg3M2IxYzRlNzgxNGJiYjBhOGVjZGE1MjQ1ZmI5ZWYgbGVnYWN5LXRydW5rCisxOTYyOCA2Yzk2ZTgzMjhkNTMwMWI3YjZkNWMxNDIxYzk4ZDEyNmEwYmU0N2QxIGxlZ2FjeS10cnVuaworMTk2MjkgYThlNTFmNmI1Y2ZjMDk3YzVkNGZhYmQ4MjQ1MjExMzVjNWU0Mjg1ZiBsZWdhY3ktdHJ1bmsKKzE5NjMwIGZmMTIyYzQwNGY2NDMxYzZmNDU4YTRiMWZmNzc0NGQzOTg1ZGZjOTQgbGVnYWN5LXRydW5rCisxOTYzMSBkYjQ4ZDBiMTNiMWVkMDEyMjM3MTkwNTU4Mzk0ZjM3Nzc3NTMzNDM5IGxlZ2FjeS10cnVuaworMTk2MzIgMmY1ODVjYmU3MWRhNTlkZTM5N2E3N2MwYTg1ZDcwOGI1YTMxMDM0NyBsZWdhY3ktdHJ1bmsKKzE5NjMzIGE3YzUxNGUxNTAwMzY3MGFhYjkxZmNjNTlkMDczZmZhMzUzMDY4MTIgbGVnYWN5LXRydW5rCisxOTYzNCBhODA0YzkxYzE4MmUxYzE1ZTE3OTZiMTUxZmMwZjA4Y2QyN2YzNjZmIGNucmktMTYtc3RhcnQKKzE5NjM1IDBhMzhmNGQ5NjY3ZWNlZmQ5YTE4ZjFmNjg1ODFhYjYzN2Q2MTllMDcgY25yaS0xNi1zdGFydAorMTk2MzYgZjRmMjg2MGQzYTVmM2UwOTk4YzhjZDNhNmZkMmZjNjAwNjIwZGUwNyBjbnJpLTE2LXN0YXJ0CisxOTYzNyBiNGU0MmQyOTk2M2RkNGNiZDJkMmM1NmU5MGU4MjkxZGIyMmYyZWZkIHIxNjEtYnJhbmNoCisxOTYzNyA3ZWUzNzhkNWE0MWQyZDgzMTZlZTMyNmY4MTg5OTI0MTlhNDgwNGUyIHIxNjEtYnJhbmNoCisxOTYzOSA2MzQ4Y2Q0NTllZTQ5ZTNlNTU3ZTdmNWI1MTI3ZTA3OGIzMGY3YjJiIGxlZ2FjeS10cnVuaworMTk2NDAgNjgwYzg4NWRmYWNlOTFiOTQ2MTYyZWI1NjIyZmNmM2NlNmUxNTk1ZSBsZWdhY3ktdHJ1bmsKKzE5NjQxIGI2YTUyZTQzODM0NDFmNWEzMzE0MDFiYmJkMjJiM2Y5OWRlMTMzMzQgbGVnYWN5LXRydW5rCisxOTY0MiBkNDQ2ZTRlYzliN2IzOTc3MGNmZjdmYTkyOWU0ZjY5YjMwNDYxOGE1IGxlZ2FjeS10cnVuaworMTk2NDMgOTA1MDExZTg3NDBjNTQ1OWNmOGJiMWI4NzkyM2EwNWY0ZGQ3ZWJmOSBsZWdhY3ktdHJ1bmsKKzE5NjQ0IDE0YWZmYmQwMzc1MDZjNGQ5OGJjOTgwNzQwZTAyYTA2NTQ2MWE5YTggbGVnYWN5LXRydW5rCisxOTY0NSBiMjM1MTYwZjEzNDY3MDg1MTljZTI1ZjUyYTEwMDhiZjYzNTEwOGRiIGxlZ2FjeS10cnVuaworMTk2NDYgZTRkOWJhMGFjMGIyY2ExNGNiMzQxOGQyNzZjZDQ3Y2E3MGZjZjc3ZSBsZWdhY3ktdHJ1bmsKKzE5NjQ3IDY3ZWQ4YTY5MDVjMzM5ZGE4ZTVhOWExODkxZmM2MDY1YTQ0ZTViYzMgbGVnYWN5LXRydW5rCisxOTY0OCAzODM5ZjBhYTFlN2NjZWNlOGExMjA4NzMxM2Y0OTJmMzc3OWViNzQ5IGxlZ2FjeS10cnVuaworMTk2NDkgYTQxODJjNjc5YzYxYzQ0ODI1MjQwZjYzYzRlYTQyZGZmNTNjMzdhYyBsZWdhY3ktdHJ1bmsKKzE5NjUwIDI5MTVlYjA3YmQyNWEzNGI5ZmU4NGVmM2M3OTEwYTgxOGVkMDY0NTkgbGVnYWN5LXRydW5rCisxOTY1MSBiOWU1YzEyMjIxMmVmMzQ3ODZiMTA5YjUyODQ2OTgyMTFiN2NmN2Q4IGxlZ2FjeS10cnVuaworMTk2NTIgNjhiZDk2ZTQyNmUzMmJiMWI5OTJiYTExYmYxMDEyYWRmZTliNGNkNCBsZWdhY3ktdHJ1bmsKKzE5NjUzIGViMjk5MjRhMzM3MGUxZmE4MjBhYWJiODIyZGFlYzU2OTVjNDczYzEgbGVnYWN5LXRydW5rCisxOTY1NCBiZjhkMmI5MmVhMGVmMzI1MWNjYWI2YzMzYjBjYWMxMGM5MmIwOGQ2IGxlZ2FjeS10cnVuaworMTk2NTUgNWExMjMwZGU0MzZhODYwNTdmN2ZkNDU4MjgzMjFmNjMxZTYyYzg0ZCBsZWdhY3ktdHJ1bmsKKzE5NjU2IDU4NjRhOWM1OGM4MWMyMjgxYTYxNzg1NGQxOWQ3Y2U0YTkxMTY5YTUgbGVnYWN5LXRydW5rCisxOTY1NyA0ZmVlYTk5YmU3NzdmOTYyN2I0MGQ4Njk4MmE3MGJmODJhZDdjYTZjIGxlZ2FjeS10cnVuaworMTk2NTggNjBmZDlkNDU0MjA2ZGE1N2VmNWYyMzk5MjI3OWUzNmQ2YWMyZTNlZCBsZWdhY3ktdHJ1bmsKKzE5NjU5IDk5Nzc4MDZiODYxNzRkOTZkYjc3NjEzMzhlNjdhNGJjNzQyNDVjOTAgbGVnYWN5LXRydW5rCisxOTY2MCAyNmQzZThlYWNlZGZhZGVlNmI5MDlhNWUxNGY0ZGM0YTQyZTc3NjEzIGxlZ2FjeS10cnVuaworMTk2NjEgOTUxOWNhZDZiZjlkNGM1M2I2YjE4M2UzNjBkNGQyMGFjN2YwYTE4MiBsZWdhY3ktdHJ1bmsKKzE5NjYyIDAwZmVhNDE3MzBjZjQzYzVjYzgxODg5ZjJkODcyMmRkMzU1MzQwYmYgbGVnYWN5LXRydW5rCisxOTY2MyBlOTkxZDg4NDNhYjQ3ZTkxNmI5YzRiNGY2YTNhOTJlODIxNGVjNjFkIGxlZ2FjeS10cnVuaworMTk2NjQgNjdiYWQ5ZjIwYjI5YzE3OTNlZTlhYzcxZmNmZTliYjI1MzM3ODcxZSBsZWdhY3ktdHJ1bmsKKzE5NjY1IGE4OWY3ODNjMTMzYTUwMjg4OGZlNzBmMzJlN2MxNDMxNTY5NjA2ZGMgbGVnYWN5LXRydW5rCisxOTY2NiBkYWUzOWViYmMwMDQxY2MxNWJlMmNmYjViODYzYTc2OGUxOTNiZTU0IGxlZ2FjeS10cnVuaworMTk2NjcgN2Y4ZjdiZWJkMWY2NDY3Njc5ZjcyZWEyOThhMzkxMWFkMThmZGY5YyBsZWdhY3ktdHJ1bmsKKzE5NjY4IDI5YWE4MzJiODc4NzQ3ODY2ZDc4Zjk4MDJkY2FkZmMwNjRmM2ZiZDcgbGVnYWN5LXRydW5rCisxOTY2OSBiODAyNDNmN2Y5N2NiZTZhNzg2NDA1ZGM4OWM1OWExODQ4ZWRmOGM4IGxlZ2FjeS10cnVuaworMTk2NzAgYWMxODBjOTgyMjk1MDAxYTdlNDY2MjU0MGNiOGU0M2I1YzYxNTRkNiBsZWdhY3ktdHJ1bmsKKzE5NjcxIDNjMjE0MmYwNzZiNDZmZTJhYjJiZDA0NjVmOTU1YzRmZGI0N2FiYTYgbGVnYWN5LXRydW5rCisxOTY3MiAyNThkY2FmZTJkMGI4ZGM2YmNlYzE2ZTJhMjMyZDkxODc3YTAyNjhlIGxlZ2FjeS10cnVuaworMTk2NzMgMDhkOTM3MTA3ZmU2Y2MyMDk1YjE4YTY1NDkzYzhkZDI0ZDkyNGY1ZCBsZWdhY3ktdHJ1bmsKKzE5Njc0IGUwMDYyZTg5ZDhmNDI3YTVmYTg4ZTUwZmU1MTM1YTZlOTJiZmVkMGEgbGVnYWN5LXRydW5rCisxOTY3NSAyYzkxODZlNDBiMzA3NzhmZDA3MDFiMTRhNzM0MWIyYWFmMTE2M2FhIGxlZ2FjeS10cnVuaworMTk2NzYgYTg2OTUwNTE5NTg2M2M4N2FlZjIwMzczMmNmZGVlZWMxM2FmNTA1NyBsZWdhY3ktdHJ1bmsKKzE5Njc3IDQ0NDU4ZmU5NDdkZGIwNTU0NWNmOGE4NDZmZThiMjU3OGNiYjY1OWMgbGVnYWN5LXRydW5rCisxOTY3OCA4MTU2ODc5ZmU2MGQxZTJkYWIzMDc5NmI5MjQ4OTg2ZWQzMTkyMDRhIGxlZ2FjeS10cnVuaworMTk2NzkgODM4OTViNGNlMGJiZjFlZWY1ZTQ3MGYzYzZjZGJlMzQ2ZDNlZmQ3YSBsZWdhY3ktdHJ1bmsKKzE5NjgwIGIyNTg1ZDhmZGI4YmJmNDQyMjVjZjcyZGY2MWRmODk1MTE0M2VhMzcgbGVnYWN5LXRydW5rCisxOTY4MSA3NGZkMTk1OWNmNDRlZTJiM2ZjMDIxNmQwMjM3MDZkMTViMzhmYjJkIGxlZ2FjeS10cnVuaworMTk2ODIgYWU3ZDcyMDdkYTQ4ODAzNmUyZjcxOGZkYWE4YmU5Zjc2ZDc5ODdkOSBsZWdhY3ktdHJ1bmsKKzE5NjgzIDhiZjBjNDlmY2UxMDFhYmE5MTc5NmI0ZTA0MTg4YTEwODI1ZWMwMzMgbGVnYWN5LXRydW5rCisxOTY4NCA1MGQ5MTU5ZWRhYWI2NzZiYmZmMmVlNzc0ZTJiMjZlNDNmNWYzOWM5IGxlZ2FjeS10cnVuaworMTk2ODUgMWQxYmY2ODEzZWU1Njk4NzlkYzUwNzY5MzE5ZjliM2RjZTZjODBhZCBsZWdhY3ktdHJ1bmsKKzE5Njg2IDU4MGFkNjg1NDQ1ZjUxODNhNjE2MWE1ZGNjNjI0OTQzZjNlN2E1MzcgbGVnYWN5LXRydW5rCisxOTY4NyBjM2ZiMDQ0ZDdlNmYxYWM4ZDYwNjE5NjNhN2JiYWI1NTIyOGI4NjcwIGxlZ2FjeS10cnVuaworMTk2ODggNGVhZGRmNDc4ZTk3YTQ2M2I3N2E5OTE3YTczZjZhYTBmYTA5ZThmNCBsZWdhY3ktdHJ1bmsKKzE5Njg5IGIyY2ZmNTcwNTc3NWUyNjk5Mzk4Y2RkYzc5MTYxMDUxMTMxMjZmYTMgbGVnYWN5LXRydW5rCisxOTY5MCA3NjU4MDFkZTE1MTIwODNkNmE0OTYwYzBhYmJjZDNmZWM1ZTU5MGEwIGxlZ2FjeS10cnVuaworMTk2OTEgZmZjYjNjZmY5NDM5NGQwNTIzMjYzMTUwYTU1MjY0ZmQxZmQxZjMzMCBsZWdhY3ktdHJ1bmsKKzE5NjkzIGZkMmE4Njk3NjliMjQ5Yjg3NjczMTM5ZDllMTY0ZWUxNzIwMjg1OTQgbGVnYWN5LXRydW5rCisxOTY5NCA1M2U4ZWJkMTE2MjBkNDVjMDhhNzI4NGQ3MzE1NTgyNWRiYTQ2NTRjIGxlZ2FjeS10cnVuaworMTk2OTUgZjU0YmFlODZhMmM2YmNjNjE2YmUwY2UyZWU3YzgxMWY3MGU3Y2Q5NCBsZWdhY3ktdHJ1bmsKKzE5Njk2IGY3OTZhODc3MTE3ZTcxNWIzNDFmMWJhN2UwMGRjMDQyNGUyMDNmM2UgbGVnYWN5LXRydW5rCisxOTY5NyAwZjBlZmMyZDEyZjE0M2E2ODZlY2U3NjY4YzM1YzE3ODUzOTVhZWY1IGxlZ2FjeS10cnVuaworMTk2OTggYWNiZTc0ZjNhNzg2ZjJmNDU3OWM2Zjc4NDNjNmMyYzdlMzhkMTZlYyBsZWdhY3ktdHJ1bmsKKzE5Njk5IGQ0YTMxNWU0MDk0YzQ4NzFkZjQzM2QwZjZmNjYxYjIxYmIwMjA5ZTYgbGVnYWN5LXRydW5rCisxOTcwMCA1MWNmNDUxZmFhZTQ2MDE5OGY5NzA0NmMwYmY1NDA1MGJjMDFjZGUwIGxlZ2FjeS10cnVuaworMTk3MDEgYTk1NjkzNDkxZWNhYWY3MTJkZWI3ODg2NzJlN2ZhMGVjYzNmMjQ0NSBsZWdhY3ktdHJ1bmsKKzE5NzAyIGNlNDc0OThhMzE1ODU5NzNiYTdkM2M5NTVmMzI3OTgwNGJkOThhYzMgbGVnYWN5LXRydW5rCisxOTcwMyAzYjA1MjEyYzE2MTYwMjU1NzAzOGFjODg4MGU2NGY4YjJkMGM2Y2UxIGxlZ2FjeS10cnVuaworMTk3MDQgNjczMjkwNTY4NmQ0MGU4MWNiZjA4MWQyOWQ4YWU3ZDNhZjAxZWU4OCBsZWdhY3ktdHJ1bmsKKzE5NzA1IGY1MzcwZTFlMjM5MmU2ZTQyYWQ0MzlhOWQ2MWE1OWUwNWQxZDFjZjUgbGVnYWN5LXRydW5rCisxOTcwNiAyN2YwNGQ3MTRlY2JjNTM2Y2U3YWZkZjIzZWFlMWZkMjZiNWEzZTE5IGxlZ2FjeS10cnVuaworMTk3MDcgYjQ2M2FjZDZkYTIyMjk5ZWQxYTA3MGZlOGYyYmJiN2NjZjI5ZWQyYSBsZWdhY3ktdHJ1bmsKKzE5NzA4IGJiZGViNmQ0ZGVhMTUyZmMzNmE1MThhYTI5NmY5Y2M3ZjFmZDMxMjIgbGVnYWN5LXRydW5rCisxOTcwOSA1MmZlMzc3ZjA3ZjJjZTE2MGIwMzI1ZjBhZWMyMjQwNTczNmU4ZjhkIGxlZ2FjeS10cnVuaworMTk3MTAgNTkwMmI1Nzk0YTE3ZWI3ZjczMGZmMzg2ZjAyMDJjY2I0M2YzZjkzNiBsZWdhY3ktdHJ1bmsKKzE5NzExIGYyOWM3NjY4NjRjYjVhMzg4ZjM0Mjc3ZTViOTdjZjhlZDI4YTYwODEgbGVnYWN5LXRydW5rCisxOTcxMiAwZTZhM2RhNGY5NTYxMzA1MjE2NjVhYjYwYThjY2JiMWQ5ODZmYmEzIGxlZ2FjeS10cnVuaworMTk3MTMgMDlmNmMxMzcyMDU2OTkzNzA4ODZlZjZjN2M2NmYxYWM3OWI1NjY3OCBsZWdhY3ktdHJ1bmsKKzE5NzE0IGUxYjFlNjhjYmQ4YzE1YjgxY2U5MjFlNGRkZjZmZTg4ZDAzMTQ2ODMgbGVnYWN5LXRydW5rCisxOTcxNSA5NTBmYzIyNjFkYTQ2MWExMjg4OTljMmU0ZTAxZjljNzRkMjEzOWE2IGxlZ2FjeS10cnVuaworMTk3MTYgM2QyOTY5MGEyNGU4OTU1MDY0ZDA3MzlkN2UzMjNjZDI3MDg4NTM0MSBsZWdhY3ktdHJ1bmsKKzE5NzE3IDc2YTY4NGZlM2Y3ZmM1ZDgzOTBkYTI0YTAyMzc4N2NjODkyYWY4ZTMgbGVnYWN5LXRydW5rCisxOTcxOCAzMjZhNGRjYmNkMjJhNzY2ZjM5NmU0MTA0YWMxNzdhYWY3NGY1ZTAyIGxlZ2FjeS10cnVuaworMTk3MTkgODE1NmRlYjBlNjJkZTVlMTIxNTk3YTg5NmE1YWI4MjUwNTlkYWRjOCBsZWdhY3ktdHJ1bmsKKzE5NzIwIDA5ZGNmNWViY2Q4MDMyZmM5YmUzMDc0Y2M5NTc1M2FhMWY5YTNjYmYgbGVnYWN5LXRydW5rCisxOTcyMSAyZDJlZTMwZjQzZWFkZDVkY2QyZDdhYzA4N2FlY2Q5OGMxZTc1MDM2IGxlZ2FjeS10cnVuaworMTk3MjIgOTVhN2M1ODk4ZmFhMWRhN2EwYzRiNmQzNTNhMWY4MDI4ZmM1OTY2MCBsZWdhY3ktdHJ1bmsKKzE5NzIzIDQ4OTRiYTNlZGQwYTUzNDRmNGExOWYxMmUxZjMyZjhkYzExZmU5MmIgbGVnYWN5LXRydW5rCisxOTcyNCBhODc3MWE1MmFiYjM3ZmUwN2M5YzVlZWNlMWU1Yjg1ZjI1NmNjNTU5IGxlZ2FjeS10cnVuaworMTk3MjUgMmQ0ZGE2Y2ZlZTYxODI5ZjgzYjRkNmRkOWRiMzI3MmEwNGM2N2Q5ZiBsZWdhY3ktdHJ1bmsKKzE5NzI2IGU1ZjJhYjgxMWVjM2Q4MThiZDQ2N2M2NWNhODNjYTZmZGYxMGY5ODUgbGVnYWN5LXRydW5rCisxOTcyNyA4NDc4NDQyNDhjNmY5Mjc3Mjk2OGJlOTRjOWYzMDM3OWQxMzc1MTdiIGxlZ2FjeS10cnVuaworMTk3MjggMDU3ODViZGYyODljZDA2MDhhMzE1MmMxZmQ1Yjk3ZWQxYTYyYjAyYyBsZWdhY3ktdHJ1bmsKKzE5NzI5IGJjODlmMTE2MTYwYjk3NGFjMjY4ODg1M2E5M2QxZmQ5OGJmNjgxNjkgbGVnYWN5LXRydW5rCisxOTczMCBlYzkwODNhYzI2ZGY3ZGRjMWE3YmJiZjdiN2FiNDdhZDIzMTQwYjNjIGxlZ2FjeS10cnVuaworMTk3MzEgMjZjZTZlZmM5NzQ0Mjc5YWM2N2ZiYzFiYjE5Njg1ZGY5NGFiYTE5YyBsZWdhY3ktdHJ1bmsKKzE5NzMyIGM1NTc4MDgxNWE2ZTVhMzVkMzNhZjBhNjZiNmMwNjQ0ODBjMDVjYTIgbGVnYWN5LXRydW5rCisxOTczMyBiMGFhZjhmODVkMTI4ZTI0MGE2MmQ4OTQxMzdhZDE2YzY2YzMxOTNkIGxlZ2FjeS10cnVuaworMTk3MzQgOGQ3ZjcyY2MyZWNjODE0NTRjNDkxZDY2OWJjMDNiODU4YTljMjg0MCBsZWdhY3ktdHJ1bmsKKzE5NzM1IGNkNDA4NWNlZTMwOTNhYTVmNDEwMjkyZjM2OGFhYTZhZWZiNzhmNzAgbGVnYWN5LXRydW5rCisxOTczNiA5ZmEyMDA5ODI1ODMzYzgxODYxODU0NWY1NmJmM2M3ZjY1ZTJiZWY0IGxlZ2FjeS10cnVuaworMTk3MzcgNzdhNTQ3MDI5OWRiZTRkMjdlNDNiYWM1MTQ2ZGJiN2JhYmI1ZDk0OSBsZWdhY3ktdHJ1bmsKKzE5NzM4IDEzY2RiZmI1OTFhNDc0M2ExNzUwYjlmMzRiMTNjNGQ2MDBjZDkxNDAgbGVnYWN5LXRydW5rCisxOTczOSBkMDUyZGRkYmZkNDQ1MGExMTkzNWQyMDAwNzY3OWU4YjVhZjI4NTNkIGxlZ2FjeS10cnVuaworMTk3NDAgMjUxNGZjZmEwZjA4MjU0ZmYzNDVjZjVkMjQyMDkzYzM0MTU5ZmM2MiBsZWdhY3ktdHJ1bmsKKzE5NzQxIDNhNDExZDQxZWViNGZmMDcwNGQyZWIyYjQ1ZjFiZWVmM2NmY2RlNTUgbGVnYWN5LXRydW5rCisxOTc0MiA3OTc2Y2Y3ZmQxOTY4M2I1OGE0NGU0YzY0MzFmYTI5NTZhNjk4ZWFhIGxlZ2FjeS10cnVuaworMTk3NDMgN2RjNjZkNWIxMDBlZWFmZjA5YzUyNGU4ODZmNDBhMTk3ZThlMTA2YiBsZWdhY3ktdHJ1bmsKKzE5NzQ0IDQxMjY4MDNlMWE4NWRjYWZkZGVhMWViNmY1ODY1NzE4ZGE3ZDJjYmIgbGVnYWN5LXRydW5rCisxOTc0NSBmMzk5ZTZhODhmNjU4NDk1ODE2MjFjNzYxZTM4MzZmOThjNDBiMzI3IGxlZ2FjeS10cnVuaworMTk3NDYgZDY3NWQ3NWFmODM5NWViODRhZThmMzJhYjFjZWQ4MDk3ZGVlMTM5ZSBsZWdhY3ktdHJ1bmsKKzE5NzQ3IDUyODBlODQzOWQ1NTYzODQyOTQwNDU0YmExN2Y3ZDQ5ZjkwZDIyM2EgbGVnYWN5LXRydW5rCisxOTc0OCA5ZDAxOGEzZDc5NDZhYTcxZDE5NzU5NjBlMDYwZjdjOTQwNWE2NDdiIGxlZ2FjeS10cnVuaworMTk3NDkgNzliYmY3YWQwZmMxNzliMjZjNGRhNDM2ZTA4MjNjMTI1ZWRhYzIwYiBsZWdhY3ktdHJ1bmsKKzE5NzUwIDEwYjg0MDYwYjdmMzljNjc1Y2Y4ZWQ5ZDg2YjJjNzQ1NWYzZmQ2YzIgbGVnYWN5LXRydW5rCisxOTc1MSA4ZDc0ODZhOGQ2OWFjMGIxYTViY2NjODlkZWMzMDdlMzY2YTkxYTc1IGxlZ2FjeS10cnVuaworMTk3NTIgMzBiYTg4Mzc2NGViYjRlMTk1NGY2MWE3MjljMWRjODNkYjJiN2FmNiBsZWdhY3ktdHJ1bmsKKzE5NzUzIDFjZjUyNTM2YzM4MWVkMGRjMzFiNWM2ZGFlYzZmZmI2YjI2NThhMmIgbGVnYWN5LXRydW5rCisxOTc1NCBhYmFlYTQ0M2UyOGMyZmNhYjk0MTRhNDdhMjZmMTY2NjU5YjJjNmM1IGxlZ2FjeS10cnVuaworMTk3NTUgYmRjZDc5ODczOTI0Y2U2NDJiMGFjM2RiYjMwOTQ1Y2Q5Njg1ZjQ5ZCBsZWdhY3ktdHJ1bmsKKzE5NzU2IDg1OTgyOTM4NDY2M2IzNmQ5MGY5NGI5MGE4ODFlNmRmZTNhMTE4YTAgbGVnYWN5LXRydW5rCisxOTc1NyBhZDczNDM3MzdhZWU5ZTEyZWU3NDYyZTlhMmJhNmQxODY3YzFkYjZlIGxlZ2FjeS10cnVuaworMTk3NTggN2I1YjU3NTZiMmNhZDBlMWYxNGUyMzM4YWRiMGZmMjdlYjJiYWE3YiBsZWdhY3ktdHJ1bmsKKzE5NzU5IDFjZTc1MWZhNjdkODA2ZWU3YjU0OTI3MGNhNmRmOTM3MjY1OTkyMDEgbGVnYWN5LXRydW5rCisxOTc2MCBkM2Y2NDY0MDRhNDM1NzJhNTZiMDQxYzc1MWRlODc2Y2IwY2U2Yzc0IGxlZ2FjeS10cnVuaworMTk3NjEgNjhjZTMyODYxNjI2ZjhlNjQzMzU2ZmM4ZTliMWMwZjVhM2UyMGUyNSBsZWdhY3ktdHJ1bmsKKzE5NzYyIDE0ZGJkZTFlY2RlYWI5YzMzNjc3NTgyMDk2ZGU2YzkxMDIyMzIyMmIgbGVnYWN5LXRydW5rCisxOTc2MyBmY2ZiNDQyZDdiMzRlMjk2NTMwNTk0ZGZjMTQ2N2ZhZTZjZGM2NzczIGxlZ2FjeS10cnVuaworMTk3NjQgMGZlYjYzNDkwMDkzNWFhNmIzNzc0YTA0Y2Y5M2M0NGI3NTdmZTFjZiBsZWdhY3ktdHJ1bmsKKzE5NzY1IGYyODdjNjg0ZTA0YzQ1ZTY4MDFlOWFiMTlmNjdmOTJlN2QyOTFkMGMgbGVnYWN5LXRydW5rCisxOTc2NiA4MDZjNmFlMjMxMDMyNDc1NTU3YzA4Nzg3NjQ1MDg5MDY4MTI1NzJjIGxlZ2FjeS10cnVuaworMTk3NjcgZjI3ZDMyOTlkZjM5MDYyMDZhOWVjZmVmMGE4ZWYwOWNhMjc5ZWY5ZSBsZWdhY3ktdHJ1bmsKKzE5NzY4IGYxYzhlYTkyZWU4NTJlZTRhN2FiY2YxOWM4MGQ3NTYzMGI0ZDY0N2YgbGVnYWN5LXRydW5rCisxOTc2OSBiM2Q1MDRiZGQ5NzlmYTM2ZTQwYTYxMjRiNDBhZGQ3ZTY0MTI5NmJjIGxlZ2FjeS10cnVuaworMTk3NzAgOGFlY2RiMjIzNDg4MTczMGExZDgxMTQ0OGFiZTIzNjE3ZTdjN2Q3YSBsZWdhY3ktdHJ1bmsKKzE5NzcxIGZhODRmOWY0MTA5MjMxMTZiMWNkNTc4NzcxZTA1MDg0ZDllOWQxZWQgbGVnYWN5LXRydW5rCisxOTc3MiA3NGE5ZDBhNDIzMWE1ZWIwYTFiMzg2NGI2ZTE0MmY1ZTA2YmYxZjQ4IGxlZ2FjeS10cnVuaworMTk3NzMgZGNlYTA5Mzg4MzMyY2FiODU3MjkzNDNhODNmNzUyNzk3YmFlMDZlMiBsZWdhY3ktdHJ1bmsKKzE5Nzc0IDMyMGZhNTBhMWE3ZDI1NTYxODNkMTE4NmVlMGZhMTAwZmI5NjQzYmUgbGVnYWN5LXRydW5rCisxOTc3NSA4ZDFlODQ0ZmJiMWFiNWFmMGNiMDE3Njk5NWFjZDk1ZWY5NmMyZDcxIGxlZ2FjeS10cnVuaworMTk3NzYgNTcyYjY1NGJmNGVkNTRiMDdjZTMwNmRmMzcyMjUwMGI5ZWMzNDY4ZiBsZWdhY3ktdHJ1bmsKKzE5Nzc3IGY1NWYzNWRjNTMyMDFhNTQ5ZDRjYzg5Nzk2MDhmYWQwM2Y5NTVlNDYgbGVnYWN5LXRydW5rCisxOTc3OCBlODY4NzVmMDY5YjE2ZTM0ZDA5NmIwMzczYjdiNDhlODY3NzI0NDhiIGxlZ2FjeS10cnVuaworMTk3NzkgNDFmM2Y0YjJmZTRhNjc2MmFiMDEwODViZGQ3NTlkYThmZjYxNGUxYyBsZWdhY3ktdHJ1bmsKKzE5NzgwIDBmMDc3MGE3OTNhY2QyZmI4NWI5ODk0YjkyM2NhMWQ2YzExMTkxN2YgbGVnYWN5LXRydW5rCisxOTc4MSBiNzMyNDljOGRlMTgwMTY5M2QzNjRkOTkxMzI2YzAyOWQ0NGYxMWU4IGxlZ2FjeS10cnVuaworMTk3ODIgZjFkNDVkNmMxMmEyOGMyMmEzOWE4YWMxNGZjNzMwODliYzE2MTFhOSBsZWdhY3ktdHJ1bmsKKzE5NzgzIDZjOTNmMThkMzIzMzQ1ZWFmNmViN2YzNzQ0ZDhmZDE3ZThlNWZjZDMgbGVnYWN5LXRydW5rCisxOTc4NCBmYTg5MDZlY2RiNzAyNDU5NTBkOGVmZDczZTNhNjBlNTY2ZmQ4NDVkIGxlZ2FjeS10cnVuaworMTk3ODUgMjAzYWQ2ZjNlZjhjZTEyZTJiZmExOTJiY2JkZjM5OWE5OWE2ZTRjYyBsZWdhY3ktdHJ1bmsKKzE5Nzg2IGRhNjM4YzQ4NGQwOGM2M2Q2NTY1NmVhNTk4ZTVkYWNjYTBiMDMwOTcgbGVnYWN5LXRydW5rCisxOTc4NyBhNDZhMTMyMDFlZWI4ODQ0YzEzOTJkNzEyZjIwZTY0NWFhM2UxZjkwIGxlZ2FjeS10cnVuaworMTk3ODggZjA3ZmE3ZjUyNjJhOTJmZGM0NTNlN2JkOGE2YzYwNGRmODUzMWEzNyBsZWdhY3ktdHJ1bmsKKzE5Nzg5IGYyOTAyNjU5Mzc0YWM4OGU4MjRiMmIyYTFiYjQ4NzVmN2M2OTZjMWIgbGVnYWN5LXRydW5rCisxOTc5MCA0OTM0MTAyMjI3MTkyZWNiNjdlMjJjN2NhNzljNzM1MTY0MjA2MGZlIGxlZ2FjeS10cnVuaworMTk3OTEgYjA0NTZkM2EwZjFmMWQzZWM2MzJkZjE2YjBiM2FlYjBmZGQ4OTMzOSBsZWdhY3ktdHJ1bmsKKzE5NzkyIGJiMjVmMmI3YmRhZTAzYjhjNDE2MWZlZmEzN2YwZDk2YThjMDU1MzggbGVnYWN5LXRydW5rCisxOTc5MyA2ZDU5ODE3Y2Y3OTI4ZWJlYjUzOTZiZTQ5ZjRiZmQxMTZiMzhlYzRlIGxlZ2FjeS10cnVuaworMTk3OTQgNDkxZmI0OWI0NmU2ZmRlZDk2NTg1ODJhOWI0Zjg5ZWE1ZmNkZTJjZiBsZWdhY3ktdHJ1bmsKKzE5Nzk1IDAwNDk4NWE1YWQ1YTgwNjNhNTlhODUxODA5OGQ1OTcyMjkxNjk2OWIgbGVnYWN5LXRydW5rCisxOTc5NiA0MTUyMDViMmNkYjJkZGNmMjUxYWY4YTQ0Zjk2YmY0OTg3MTk4ZjU2IGxlZ2FjeS10cnVuaworMTk3OTcgYjVkYjIzYzdhODA0YTE5MmJhYmRiMGNmZWFmMmVjMmNjNzk5NDBjMCBsZWdhY3ktdHJ1bmsKKzE5Nzk4IDVhYjRkYTZhZDRmYzdiYzg4NDBjNmJkZjQ2Yjc2YWQ0ZWM2OWRiOWIgbGVnYWN5LXRydW5rCisxOTc5OSBiMGE5ODJjOTFhZjAxMzNmMzY1YWQ0ZjI2MGFiNjQ2NzU4ODNiZDMyIGxlZ2FjeS10cnVuaworMTk4MDAgZmFhN2FhZWIwMjEwZGY5MThjMGNmMmI4ZWExNGUzM2E2M2EzZWY3OSBsZWdhY3ktdHJ1bmsKKzE5ODAxIDNjNjViYWJmMzIyZmIzYzVmYWQzNmQ3MmNhMTY4ODZmMzI4Yjk0ZDcgbGVnYWN5LXRydW5rCisxOTgwMiAyNTQ4ZDFhNzAxODAwMmY1YTY2NjFlZGNmNDJiZjJiMmM5MmRlMjA1IGxlZ2FjeS10cnVuaworMTk4MDMgMDJlMDk3ZjcyZDQ3YjBhM2I1YzkzNTI4NDZhOWQ1ZmFkNjAzYjgzZCBsZWdhY3ktdHJ1bmsKKzE5ODA0IDNhMmU4YTNlZGU0ODE5Mzk0NjY1N2U3OGMzZTQ0MGI3N2I5NmQ0ZjEgbGVnYWN5LXRydW5rCisxOTgwNSA5YzkyMWE4ZWQzYTcyM2I4NGRiZjlkOGY5MTc2ODgyOWFkYjlkZGZmIGxlZ2FjeS10cnVuaworMTk4MDYgNTJhM2Y4MjYxN2M0MGM3ZTRmZTFmMWY1ZWY5Yzk4MzY3NzI1MDRmNCBsZWdhY3ktdHJ1bmsKKzE5ODA3IGFiYzhjNmMwMjVjZTgzNzExOTY0NzI5YmVhNmRmMmY5OGUxZGIxNjggbGVnYWN5LXRydW5rCisxOTgwOCBiMDQ2YTMxYWYyZTA2ZTgzYTEzMjczZTc3MDhmYjYzNWE0NjE0MTJmIGxlZ2FjeS10cnVuaworMTk4MDkgZWI0ZWQ5ZjIzZDIwNjk4ZTUxYTYxNWM2ZjhkY2U0ZjBmYWY5MWQ2YyBsZWdhY3ktdHJ1bmsKKzE5ODEwIDk0NjgzYzg1ZWM3NmU2ZDE2MDRjMDY4NGFmZDBmNTM3ZDdjM2ZkM2MgbGVnYWN5LXRydW5rCisxOTgxMSA4YzY0ZGRhMWQyNmYzMGRlYWEzZjBlNmU2MzgzYTdlN2NmYjY3ZjQwIGxlZ2FjeS10cnVuaworMTk4MTIgYjgyNTljN2ZmNDljOWJkZWI1OGQ2MjZhYWFlNWIzNWQ3YTQ3OTA3ZSBsZWdhY3ktdHJ1bmsKKzE5ODEzIDVkN2UwZWEzMTgxODBjZmIwNGJlOTcxODc3Y2I3ZTZlODIxZmU3YjMgbGVnYWN5LXRydW5rCisxOTgxNCAwOWFlYzY2OGRmM2FlMjhjMjZmZTNkYThhYjQ1YmI1NTcwYWYwNDkyIGxlZ2FjeS10cnVuaworMTk4MTUgYzI4ZGZlNWY4N2E3M2JlMTkwOGM4N2UxOTkxZTYyYTdhNDVlYmU2YiBsZWdhY3ktdHJ1bmsKKzE5ODE2IGEwMTVhZWQzYTFhYzEwOThmZTM0ZTQ1OTE2OTExYzA2NGY0ZDM1NDIgbGVnYWN5LXRydW5rCisxOTgxNyBhZjgxMGYwODQyNWJlZjI1NDhiNWZmYjUwODc3YWE4MTYyMDNhNTVmIGxlZ2FjeS10cnVuaworMTk4MTggZTk0NDVjNTFmZjI5ZjY5MjMxNjY3MDVlYzI2MGEzZGZmNDQ2ZTIxNSBsZWdhY3ktdHJ1bmsKKzE5ODE5IDRiYWE1YTk1NTUzMmFlNTVhODgxZDVjYjQ1MDQ2MTMyNDlkYzgxODUgbGVnYWN5LXRydW5rCisxOTgyMCA4YTQ2OTZkN2Y3NGMwYzIxZTZlZmZmYzYzODJiZDE3OWQ5ZmY1MzA2IGxlZ2FjeS10cnVuaworMTk4MjEgMzFlMzAyZTk0ZGE4ODFiMmRlM2I3ZGE4MmI4Yzc3NzJmZDI1NGYwMSBsZWdhY3ktdHJ1bmsKKzE5ODIyIGIyNTEzMWJjNmVjN2M4ODI1NDcxNTM5OTllOGRlYTRlZjU3MDlkZTAgbGVnYWN5LXRydW5rCisxOTgyMyBmYWE1MmYzODRhZjY1MjQ4ZGI0YmMyNjJmYjIwNzNhMTgzMzEzODE1IGxlZ2FjeS10cnVuaworMTk4MjQgMDliYTE1ZWUxOTYxYmEzMzU3ZGE5MTk3MmMyNGU2MTVhMzZkNDY4MiBsZWdhY3ktdHJ1bmsKKzE5ODI1IGI2YzBjZmIxZWZlYWNjYzY2OTViNjYzNWJmNmEwMjJiMWUxZjU5ODYgbGVnYWN5LXRydW5rCisxOTgyNiBkZmViM2FlNjkyYzExMTllZDcwOTE0MDkwMzIwMGI0MzUzODY5YzdlIGxlZ2FjeS10cnVuaworMTk4MjcgODMyZTQwOTA5ZWY0ODRmNGFkZjExMDg4OTk4YmM5MzZmODBiNzM3NyBsZWdhY3ktdHJ1bmsKKzE5ODI4IDlmZDIwY2FlN2I3NjY3NTRjNTZjN2IyNDg0MmVmZTc4YzU0NTA1NDkgbGVnYWN5LXRydW5rCisxOTgyOSBjN2M1MzUzNjE0NjdkNDkwMWQxOTViYjllMGY5MjJkNjhjZDc3N2I5IGxlZ2FjeS10cnVuaworMTk4MzAgYWNkNTA2MDg0NzI3ZTczNGQ4N2IzMDJjY2ZiNmY2Y2Y4ZmZkMTkwZSBsZWdhY3ktdHJ1bmsKKzE5ODMxIGExYjM0NDZjNzIwZjFhNGZmNzU4ZTJlMTQxYTBmMDNmYjc4M2FlOGYgbGVnYWN5LXRydW5rCisxOTgzMiBjZDZlNGJjOTkyOTViODU1ZmY0NzVhOGM3ZjE4ZWY3MTI4MTVhODUxIGxlZ2FjeS10cnVuaworMTk4MzMgZTUzYjMyODQ1MjI0ZTc5MzE5NTIxNmRhODY2YjY0YWZjNWI0ODVlYyBsZWdhY3ktdHJ1bmsKKzE5ODM0IDkxMjMxYmJiMzg0MmY0NzZmMDhjNmUzZDhhYmYwZTBhODUwZTA5NDUgbGVnYWN5LXRydW5rCisxOTgzNSBiODMyMGEyNmMwNjU3NmQ3MzhhNWMwNDRkYTNmNDhhZjBhNjFkMzIxIGxlZ2FjeS10cnVuaworMTk4MzYgMGQ0ZTgwNmM0MmNjYmQzZWMyYmEzOTMzNThlY2ZhYzk4Y2E4OWU1OSBsZWdhY3ktdHJ1bmsKKzE5ODM3IDYwMmViMDQ2YjNlN2QzNDQ0Nzk3MjIxMTdjMWU4MTAxOGRmMzI0MjggbGVnYWN5LXRydW5rCisxOTgzOCAyYzI5MGQ0YzNiMzgyZjdhODdmYjU4NjNjZDRmNGE1ZjIxZDg1ZmQ4IGxlZ2FjeS10cnVuaworMTk4MzkgNmY0MmMxZDU1ZTZhZjA2ODQwMWYxYTQ0ZTBmNTM5NDA4MTBjOWUxNCBsZWdhY3ktdHJ1bmsKKzE5ODQwIGVjMjk4OTVlZTQwY2ZkMjYxMWY5ZjU0YTcwNDI3M2U2YTI2MzIyMDAgbGVnYWN5LXRydW5rCisxOTg0MSAzOGUxN2EwODk0OTI5MDY0ZjI3NTk4MDFjZGZmNzNkMDUxMzM0NjgzIGxlZ2FjeS10cnVuaworMTk4NDIgNmJiZTI2OGY4YWQ4NDkxOGNmNGFhYmI3MjcyNzAwMThhMzQ3YjM3ZiBsZWdhY3ktdHJ1bmsKKzE5ODQyIGQwYzgzMGRiNWU2OGVkZDRhYWEzNDAxMjE2ZTYxMGM5ZmYxNDU4MjYgbGVnYWN5LXRydW5rCisxOTg0NCA5YTllYWVjZjBmZDgyOTI2YmQyMzAwZTYxZWI5ZDJjYmVjZDQ5OTcwIGxlZ2FjeS10cnVuaworMTk4NDUgNzIzY2Y1ZTM3OGU1N2RiZDJmYWVkODdjN2I3YjFkNDVjNTk2OTZmYyBsZWdhY3ktdHJ1bmsKKzE5ODQ2IDY0NTMyYmE1ZGNlZDVkZmYzZTVjNTI4OTVjZDJmZjNmNWM4MjhkMWQgbGVnYWN5LXRydW5rCisxOTg0NyBiODNhM2I3ODMxNGViODkzMTk5M2E1ZWZjZGNjMjU4ZmNhYmYyZGY2IGxlZ2FjeS10cnVuaworMTk4NDggZDg4OGRjN2JlYTMyZWJmNTMxODI2NTliZDhjNDYxZmUyNjBhZWIyYyBsZWdhY3ktdHJ1bmsKKzE5ODQ5IDJkZmVlMzMzYTY1MTAwNjM3ODAyNmRmYTZiNTMzODc4MzE5ZDA0YzYgbGVnYWN5LXRydW5rCisxOTg1MCBhNzllYmJhNjQ2NmE2MzdiZjM1OWZiODE2YjNiZTYxZjk1NzE1NzU3IGxlZ2FjeS10cnVuaworMTk4NTEgZTZjNWJjNWJlYWIzYTA3YzcxYTQ1Y2UzZTQwYmZkNmEwZTEwNjNlNiBsZWdhY3ktdHJ1bmsKKzE5ODUyIDBiNGM1N2EyNTk3N2VkYTdhOTc1NjFlYzFjNDAxNmUyY2QxYzk5YzYgbGVnYWN5LXRydW5rCisxOTg1MyBkNWU1M2NmOWRlN2MzMzA5MzYyZjRjN2RlMDY3NTE3NTE3NzIxMmE2IGxlZ2FjeS10cnVuaworMTk4NTQgMmI5MzU0ZjQ4NTJmYWFiMDVmZDgzNzNjMjBhNjNmZjg5M2RiOTQ2OCBsZWdhY3ktdHJ1bmsKKzE5ODU1IGMxZTE5NDlmMzlmZWEyMTUyZTViZmY4YTFlYWE5MGI3M2VjYTMzOWMgbGVnYWN5LXRydW5rCisxOTg1NiA2NzAyYzBkZjE2YjY2OGFhMDNkZTc2Zjg0ZDNmYWM4YjUxZTFhNWViIGxlZ2FjeS10cnVuaworMTk4NTcgYzc5ZGFiNjUyZWE4NDQxM2M4YzM0Yjc1ZjkxZDY4ZmEzYWNkNmM2MCBsZWdhY3ktdHJ1bmsKKzE5ODU4IGQ2ZWNlN2MzYjM1ZWFmNmE1ZTlkNzg4OTYwZmJmZjY1Mzc3ZGQ5OTIgbGVnYWN5LXRydW5rCisxOTg1OSBmNWNiNmQ2NmE5NzdiZGUzMzA4NzQ0YzAwZDEyMTYyNzI5MDI1NmViIGxlZ2FjeS10cnVuaworMTk4NjAgMWE1YTAzZTJkYTczOTY5ZTIyNjU1ZmVjZDZlMGM1M2RhOGY0MzgxYyBsZWdhY3ktdHJ1bmsKKzE5ODYxIGM1YTQxN2U4ZDg0YzgzNjM3NGEyOTBjMWYwODdkZWY4MmI5MWNjNGYgbGVnYWN5LXRydW5rCisxOTg2MiA2MWM5ZmE5NGNlOWQ5YTRhZDlhMTgwY2E1ODZiZTQ5YzBkZDEwMWIxIGxlZ2FjeS10cnVuaworMTk4NjMgMWM5NWI2YjA2YWUzMWQyN2E1YWI0MTU4Njk1MmFkMDc5YTY2ODMwZCBsZWdhY3ktdHJ1bmsKKzE5ODY0IDQxNTI4NTVlZjlhOGI2MzVhODQxMDEwZGZlMzQ5NTdhZjVlMTFmZDggbGVnYWN5LXRydW5rCisxOTg2NSBhOTc1ZjJjMTU0YzA2MDQ1OTk5MTNiNjNjZTFmMWExMWQ3NmVhZDU4IGxlZ2FjeS10cnVuaworMTk4NjYgN2M3Y2NmYjVkYjNlZjEzNzViYzY3MDdkOGI3ZmU2YzJjYzMyNGI3NiBsZWdhY3ktdHJ1bmsKKzE5ODY3IDFkZGM3MGRkMWQxYmJhZDAzMTk4OGJjMzUzNjE2MjE0N2U4MDExNmMgbGVnYWN5LXRydW5rCisxOTg2OCA4NjMxODczM2ZlNzA5MzU5ZmE3MTk5Y2RhNmJmMTFhZTY0MGY0ZDFlIGxlZ2FjeS10cnVuaworMTk4NjkgNDU5YzhlZjBhMDEwMzU5ODM0OWMwNTMzZGNjNWZkNTYzMjk0ZmQ0NiBsZWdhY3ktdHJ1bmsKKzE5ODcwIDkxMDRlZDM4YWMwNTFjOWQ1MDkxYWRjMmQxOTliZTk0ZjU3NzA1YWQgbGVnYWN5LXRydW5rCisxOTg3MSA0MWI5MjQ5ZTRkNDg2M2JkNWFhMmJhYzc2MmEzNTg3OTE1YjNjYTEwIGxlZ2FjeS10cnVuaworMTk4NzIgODZmZDcyM2YyOTI4NmEyYzNmZDczNjczNzdmNzA3YmY4ODU1MjE2ZiBsZWdhY3ktdHJ1bmsKKzE5ODczIDRmOWRiODM0ODI1Y2FhMGMzZmQ4YjE2ZWQ2N2ZiNzlhY2U5OTIxNTIgbGVnYWN5LXRydW5rCisxOTg3NCBlZWU3ZDBjNWFlNTkyYWY0ZGU5NTBmYjcyYjM2MjA5NGMxOGJhNTIzIGxlZ2FjeS10cnVuaworMTk4NzUgZTU5ZWRhNTI1ZmMxZTdiNTJiNzQ1ZWIzZjhmMGEwZmNkYzBiY2Q3YyBsZWdhY3ktdHJ1bmsKKzE5ODc2IDJkYzNjYTFkODkwYzc3MzE3ZTYzNGNkYjY1NWEwMzNjMTlhMTQ0NzUgbGVnYWN5LXRydW5rCisxOTg3NyBmM2ZiMDViZmVlZWIxMzVjNmU5MjY2ZjYxMGJiZTI5NjdhMjVkMjc4IGxlZ2FjeS10cnVuaworMTk4NzggNTM0YTkzZDgyZWRjYTFhZGZiMGU4ZTBjZTY2YTgwMTlkNjI3MzAzOCBsZWdhY3ktdHJ1bmsKKzE5ODc5IGI3YjA0OGRhMTY3MzVmMDRjMTYwYzFkNjEyMTgyMmFiNmExNWM3MjggbGVnYWN5LXRydW5rCisxOTg4MCA1NDg3MTZlMmYxZjEzYzM4YjhiNWZhZDgyYWUwMGY4MzhlMDM2NDcwIGxlZ2FjeS10cnVuaworMTk4ODEgM2I0OTRjNWM2MjM0ZGVhZDExYTM1Yjg2NzYxMzk4MjRkNDNjOGI2OSBsZWdhY3ktdHJ1bmsKKzE5ODgzIDRjMTdjYjJjNjIxZTliZDA5YWJiN2JiMjA5MDY2NjFkZTlhMGEyZTggbGVnYWN5LXRydW5rCisxOTg4NCBhMWRkMGIwNzA5ZDIwNjNmZjNmZjZjZTdkNTA3YWIwNTU5MjQ2Y2FjIGxlZ2FjeS10cnVuaworMTk4ODUgOTlkZTRiZjJiOWU1NTE5M2IyODBhNzBjYTlkMDliMmVlMGEzMmVmZCBsZWdhY3ktdHJ1bmsKKzE5ODg2IGQ1NmQ3N2Y5MzczYmRlZjk5YmIzYmZmODEwOWQzZmZiMjIxMDM5ZTAgbGVnYWN5LXRydW5rCisxOTg4NyBkYjU1NjA0MzUzYjNhMmE0ZGEyYzkzNmMyMTdhNjM2NmE5ODE2NTY4IGxlZ2FjeS10cnVuaworMTk4ODggOGVhZjc0YTExMWViZDkyMDU5ODNhZTgxMmE3MTE5MzM4MDFjZjc0NiBsZWdhY3ktdHJ1bmsKKzE5ODg5IGQxNWFjZTMyMTEwMjY2ZjZlM2Q1MDBiYTk4YjRmMDI5OTU5ZjI2ZGYgbGVnYWN5LXRydW5rCisxOTg5MCA2YmRmNTYzYzc2M2IzYTRkMDMzNzcwYzk3YTZhNTE1YTNhOTNkZjY3IGxlZ2FjeS10cnVuaworMTk4OTEgM2M2NTBkOWMzOGU3NGVlYWMzZmU0MGY3YmZjNjdmODI3ZTQ1YzQ5NCBsZWdhY3ktdHJ1bmsKKzE5ODkyIDE5YzJmNTBlNTM5NTcxYzRlZjlkYTU3MmM2ODY2OTFiNjU2NmMxNWIgbGVnYWN5LXRydW5rCisxOTg5MyAzZjVhNTRhOGExZmI1MDU4OTY3YTNmMGIwZGRmZDc4MDlhYWFhYzQ4IGxlZ2FjeS10cnVuaworMTk4OTQgN2EzNmY2MjAxYzk0MDA3MmQyZjM2MWFjYjgwMmE5YzQ0YmJjYjRmNCBsZWdhY3ktdHJ1bmsKKzE5ODk1IDg5NTQ2YmRkYzIyY2MwZGVlZjFiNGRjNjZjMjY0MDIwYzllMzQyM2QgbGVnYWN5LXRydW5rCisxOTg5NiA5NTNjNTBmMTIxODRhYWUyYzQwMjJiNGRiYmQyNjc0YjQ0ZTFlNTRkIGxlZ2FjeS10cnVuaworMTk4OTcgZjBlZmRjZDI0NTEyZmI4ZDRiNGI0ZjBlMDYwMzA3NzkwYWM0ZmFhMiBsZWdhY3ktdHJ1bmsKKzE5ODk4IGNkN2FjNGQ5YWRkMDIwNzlhMjhiOTcyODY1YmY3ZGI5Mzg1OTJhNGYgbGVnYWN5LXRydW5rCisxOTg5OSBlMjFkNGMyMDU2NWQwMGNhNDI0NzMzNDRhNTI5ODRhMzdkMDZlZTZjIGxlZ2FjeS10cnVuaworMTk5MDAgM2NmYmJjYmY3MTM0ZDExN2I4MjEzODBmYjJiNTU2ZGJhOWRlY2E1MyBsZWdhY3ktdHJ1bmsKKzE5OTAxIDk3MWZmNmI1OGVkYmZiN2U2NmZiNTE0ZWUyODE0ODE5YzhjMmUwZjMgbGVnYWN5LXRydW5rCisxOTkwMiBmNDE0NmNhMGYyOTIxZTIwYjRkNzQyYzU4ZjczMWYxODEyODA4NTAwIGxlZ2FjeS10cnVuaworMTk5MDMgMmE4MDE5MWQxMjAzMGU4Mzk4MWJkMDc5YTAzYmJiNTJmMTM2ZmUzMSBsZWdhY3ktdHJ1bmsKKzE5OTA0IDUxYzZhMmNiMDNkMWI0MTllMWQ0YTZhN2EzMWEzOGI5MzMwY2M4NDEgbGVnYWN5LXRydW5rCisxOTkwNSA2NWE2MzhhMjRmN2U5NTRmNDgwNzdiYmVkMzg1NzA3NGI2MzFjOTdhIGxlZ2FjeS10cnVuaworMTk5MDYgM2VjNTAwNDAzZjAxMGQ4ZWZkNTQzMDcxY2VlZWEzOWQxZDAyN2M1OCBsZWdhY3ktdHJ1bmsKKzE5OTA3IGI0MGFiMzEwNTUyMWYxOTQ1Y2RkYjc1Yzk2Y2FhYzUzMzEzMzI5MWMgbGVnYWN5LXRydW5rCisxOTkwOCAxZTU4ZDc4MmMwOWFjOWYzZmMxMzViOTU0MGMzYzc1Y2Q4YzU5YjkzIGl0ZXItYnJhbmNoCisxOTkwOSBkNTgxMWFmOGFjZjNkZDRlMzI4YmRiZDE2YjcyODFjN2RhYWY4NDQ5IGxlZ2FjeS10cnVuaworMTk5MTAgNTMzY2M5MDdlZGJkMmNiNjEzNzlkZDc1MDQwZjA1YTA4NzI1MGIzMCBsZWdhY3ktdHJ1bmsKKzE5OTExIGJhODFkNzlkYzNhMzFkYWY1NzAxZjdmZTI0ZjJhZmVlMzlhNDk0ZDUgbGVnYWN5LXRydW5rCisxOTkxMiA3ZTFlNjcyNTUwOWU2YzU5NzFjOWU5NGQ4MmU0ZGNmNzk0MmQ0N2Q0IGxlZ2FjeS10cnVuaworMTk5MTMgYWQ3NDE3NDVjYjZjMDk0MTYyNmZjYTU0MDRiMzJhZWVhNDJiY2E1ZSBsZWdhY3ktdHJ1bmsKKzE5OTE0IDhhMzQ4MzA4MzE2ZDU0NGZiMDY4MWVjNDk0OGFkODEzMmQwNmMyN2UgaXRlci1icmFuY2gKKzE5OTE1IDQyMGEwNzgxYmI5MmY3YzYwMTFjN2U4OGE2ODAyMWNjMWY2NTQ0Y2YgbGVnYWN5LXRydW5rCisxOTkxNiBjMWVkYjE0ZjA0M2JiYjczMmEyZWQyNDcxYzA2OWVhYmVlNzQyY2ZiIGl0ZXItYnJhbmNoCisxOTkxNyA0MGFkMGEwNzYxZDI0ZmE2NTRiMDE1YmVkODdiMTQwZDdjNmFmMjI4IGl0ZXItYnJhbmNoCisxOTkxOCBmMzk0YWY4YzU4MGYwNTUxZTQ2MDkzYWFkMmQ0OTU5YTQ3ZTY5MGMzIGl0ZXItYnJhbmNoCisxOTkxOSA2MmY3NGMyNTk3NjJkZmU1ZTVlZDA0ODNiY2QyMGI2NGE5MjExZDczIGl0ZXItYnJhbmNoCisxOTkyMCAzZjU1ODdjMjhhNTBmOTEzYTdjMGQwNWNiZWRkZDI4OGUyOGVkNjdiIGl0ZXItYnJhbmNoCisxOTkyMSBmNGQ0OThhOWQ5ODkwM2ZiYzE2ODEwMDJkZTFjZTI4YmYwMTBiZTI3IGl0ZXItYnJhbmNoCisxOTkyMiA1Mjc5N2I0YjM3NWJjOTQyNmNkMWIwNzQyZWFiZGQyZWUzOTVkMzgzIGl0ZXItYnJhbmNoCisxOTkyMyBkMjdmODQ0ZjZjZmU1NjJlMjczYTU4ZTA5OTY0OGRjZTE2NmZmZjVkIGl0ZXItYnJhbmNoCisxOTkyNCA5OGEyYmI5MDUyMGQ2Y2Y1ZTI4MzA4ODc0OGJiNTFmYjg1ZDAyOGYxIGl0ZXItYnJhbmNoCisxOTkyNSBhZmIzM2ZlZjE0Y2I4ZTM2ZTRjZjRiYTg4MTg0ZjA1MWUyZjZhOGFlIGl0ZXItYnJhbmNoCisxOTkyNiAzYTg2NjZlMTI5YWRmOWViNmUwYzZiMDQ4ZDdhNGVhYmI0MTc5MWNlIGl0ZXItYnJhbmNoCisxOTkyNyAyMjBiNjI3MzhkNzQyODEzMzkwMmM0M2VkMmY1MDBhZjYxNWY4ZjYzIGxlZ2FjeS10cnVuaworMTk5MjggNWQ2OGFmYzUyMjdjOTFiMWJmM2RmMmFhNjk4YzE5MjE1MTE4MTY1ZCBsZWdhY3ktdHJ1bmsKKzE5OTI5IDE3MmQyYTI4MTZiZmEzYTBhZmViMTI2ZjBiZTAzNTdmNDI4OTQ1MTIgaXRlci1icmFuY2gKKzE5OTMwIDA5NWI4MGQyZTc4NWQ5ZjkyMGM5ZWIyNDRkMmM3MmY2OWVmM2U4MmMgbGVnYWN5LXRydW5rCisxOTkzMSAyZWQ3YzU4OTQzZTYxMTJhZjI1ZjliYWE3ZGNjZjg0YTcxZThlOGM0IGl0ZXItYnJhbmNoCisxOTkzMiBjNTdhMWI2NzgxYjA0ZmI0NTE3ZDMxZWE5ODdhNmFmMzA2ODdjNDk3IGl0ZXItYnJhbmNoCisxOTkzMyA3YmIxMjU2YjUwNmRiNDY0ZGU4YWM5OTQ0Y2ZiYjRiMTFmNjU3YjI1IGxlZ2FjeS10cnVuaworMTk5MzQgMzM3NWEyYTk4ZTU2NmZkMTNlNDNjMmJiZjY5YmY4MzdhZGNkMTVkZCBsZWdhY3ktdHJ1bmsKKzE5OTM1IGViNDM2NmIzZTM5MWFhOTBjM2M4MzcxMzU1ODg5MGNhNTM5NWUxMWMgbGVnYWN5LXRydW5rCisxOTkzNiA2Y2E3MmQ3MTUzNmUwYzdmMWRlZWI4NGY2Nzg1NzE4M2Q0MTBjOTM1IGxlZ2FjeS10cnVuaworMTk5MzcgZmY3NWMzODJmMGQzMmUwZjcyZDM5MDNkZGIxYTg2OTZlMTQzZDUwMiBsZWdhY3ktdHJ1bmsKKzE5OTM4IDFmNzAwYTcyMDZiMmZjNDRmYjNhNzJlYzFkOTRiMTYyMGNkYWEwMTAgbGVnYWN5LXRydW5rCisxOTkzOSA1ZTZhYjkzOWJkYmNjNGRhNmM0ZWRkMDRiOTk3OWZjOWU4Yzc3MDkxIGxlZ2FjeS10cnVuaworMTk5NDAgYmQ0MGIxM2ZhNWFiZmFiOTNkYTRhMzU1YTY4NTNhZmUxMDZiMzliZSBsZWdhY3ktdHJ1bmsKKzE5OTQxIDdlYjVhNmU4Yzk4ZDQ1MGNjYmQzOGIwOWRjYWY2Nzg1ZDA3OTgxNmEgbGVnYWN5LXRydW5rCisxOTk0MiA3YTQxNzVlMTA2MjZjZjc0OThjMzkyOGQ0MTFlNTU4Zjg5NzM1MTM0IGxlZ2FjeS10cnVuaworMTk5NDMgZDU4ZTkzZGFmYjk4YzJmZGRkZjUwNTFlZjM2ODNhNmRhMDcxM2M2MiBsZWdhY3ktdHJ1bmsKKzE5OTQ0IDRlNmYxNGU3NTU3ZTk5MDA1NDc2YzRhMDkwYmZmMTA4MWQ0MmRkM2MgbGVnYWN5LXRydW5rCisxOTk0NiA5MGU0MDY0Y2EwNDVlY2U4ZDFhOTg1MDJkODJjN2YwMDZkZWQ0ZWRlIHJlbGVhc2UyMC1tYWludAorMTk5NDcgNDE1YTE5YmIxNjc1YzQ3OTRjMTY4YzY0ZWI4ZDQyNTJkYmZmNTFhOCByZWxlYXNlMjAtbWFpbnQKKzE5OTQ4IDc0MzI5NmNlMDUyYjE4N2FhMDc0MzBhZmRlYTU0NjA2OGM5M2E2ODAgbGVnYWN5LXRydW5rCisxOTk0OSAxNGI3YTdiOGQ1OGRiYmYyYTRkZTJkYmIxODRmNjIxZTg1YjcyNDkyIGxlZ2FjeS10cnVuaworMTk5NTAgNzk3ZWJiNzAzM2Q3MjZlZjBlOTI4ZWM0OGI5YWFlYTQxNDBmN2VhMCBsZWdhY3ktdHJ1bmsKKzE5OTUxIGExMDY2ZTVhMTA2NWNhZDQxNmVmNGMxYmFmZjk4NGMxZGVkMzcwMmUgbGVnYWN5LXRydW5rCisxOTk1MiBkYzBmNjJlNzU4OGIzZTg5NWNkZDRkODM0OGIxNjQ3NjZmYzdkMjU2IGxlZ2FjeS10cnVuaworMTk5NTMgM2Y1Mjc2Y2JiYzRkYTI0NGFhZmM0OGY5MjllYzY1ZTIxYWFmOWJjZSBsZWdhY3ktdHJ1bmsKKzE5OTU0IGE1ODE0ZjYyMGU4NmQ5YTcwM2Q2OTdjOWYwMmNkZDg4YzhjMTdiOWUgbGVnYWN5LXRydW5rCisxOTk1NSAzM2M4NjgwYjNiMzU0MDQ2ZDIzMjRhODZjMTdmYzJhZDk5OTA1MmE5IGxlZ2FjeS10cnVuaworMTk5NTYgZDdlMDJiOWVlMTc5YzFlNDNhZGNmZDRhOWRhYzlkNzkwMjI1MDcyZCBsZWdhY3ktdHJ1bmsKKzE5OTU3IDU0NjkyMmZhOGQ5OTQ5MGEzNDAyM2Q4NmVmNzFhMWNiNjBiMmVjYTQgbGVnYWN5LXRydW5rCisxOTk1OCBkZDA0YmJmZDVhNzZjZWVhYTA1MmQ0MTMxYTMyZjhjYWMxZjI4NWM3IGxlZ2FjeS10cnVuaworMTk5NTkgMmMxYmU3OTI0YjA0YWZhZjc0YmFjN2MzYzc3ZTEyMDZiZTQ1ODM2YiBsZWdhY3ktdHJ1bmsKKzE5OTYwIDI2Y2RlZDU5YzE3MjUzZjk3YzY1ZTE0ZDNjNzI0OTBlMmYzZGZjMTAgbGVnYWN5LXRydW5rCisxOTk2MSBlYjRhNWZmMGY3MmNjODUzNzI5ZGM5YmRmMzdmYzIzM2E1ZWQzZGRjIGxlZ2FjeS10cnVuaworMTk5NjIgZWU2NzkzYWUwNmMxNGUwMDM4NzI4YjY0ZjNjY2Y3YTFlZmZkZTEyMyBsZWdhY3ktdHJ1bmsKKzE5OTYzIGI2NTBkN2RhYTU5M2NjOTZiMjMzMDA2YjEwYzE4YzdiM2NjODYxODMgbGVnYWN5LXRydW5rCisxOTk2NCBiNDVhZThjNDY3YWFmNDRkMGFlYmNjODIyNzEwMjQ2NzE2NTdkNzc0IGxlZ2FjeS10cnVuaworMTk5NjUgNDMxNzI4ODllOGU2NmIxODk4YzVlZjIyNzYzNDI5NTFiNzdiYjZhZiBsZWdhY3ktdHJ1bmsKKzE5OTY2IDQ2MmI4ZGZlODc1MzkxZTk2MzE2MDk2MjdjZjc5NWNiMGNmYTgxZDQgbGVnYWN5LXRydW5rCisxOTk2NyA4MzIzYjA5OGM2Y2UwYjFjNjMxMWQyYWU1M2QyOGNjMThiZDQ0NGFiIGxlZ2FjeS10cnVuaworMTk5NjggOTA3OWY3MGE1YjgzZjlmMjI4ZTVkYTgyNDdkNjYwNDBkY2E1N2MwZCBsZWdhY3ktdHJ1bmsKKzE5OTY5IDg1ZDc0ZjA0MDcxMmU2NGRhNTMwOTQ4ZmVjMGNhZGFjMDRlZTE4NzUgbGVnYWN5LXRydW5rCisxOTk3MCBmN2UyYzNkOWMzODc5MWQzMTc5Y2I1NGEzNDExYTA1NmNiZThhZTRkIGxlZ2FjeS10cnVuaworMTk5NzEgN2UxODFlYmE2YjliZDRkODE0Yjk0YjAxMWUwOTQxMzVkNmExM2Q1YiBsZWdhY3ktdHJ1bmsKKzE5OTcyIGJjMDU1NWJlMjIxMjNhNGQ1YThkYzMyNGNiNWNjMTg4N2Q0NzgyNDMgbGVnYWN5LXRydW5rCisxOTk3MyA1MmNiMGM1ZmRmMjM4MDk5MjgzOTJkMzIzNDYxYWQxYzZhMjJjZTMzIGxlZ2FjeS10cnVuaworMTk5NzQgZjI3MTdiMDEzN2QwNzI3NGRlYWFmYTUwMWY3MzU5YTIxYjgwOWMyOCBsZWdhY3ktdHJ1bmsKKzE5OTc1IDY0MzRkYzc3NmNiOTc1YTJjMzU5NTA2NGEzZjdkYjkwMGZhY2ZkMTcgbGVnYWN5LXRydW5rCisxOTk3NiAxMzgwYTUyZjFhMjE4NjI5MGY5ZWE1Y2MyNTlhMjljNzg1NzUyN2U2IGxlZ2FjeS10cnVuaworMTk5NzcgY2U4YWMzN2RiMzAwYTVhNzQwNDhmODU3YjM5YmI0NWM0N2QzNjQwZCByZWxlYXNlMjAtbWFpbnQKKzE5OTc4IDZhNTI3YmU0YzRkMTkwN2Q4NGQ5ZWI0MzYyMGU1Njg4ZjNjOGZmOTUgbGVnYWN5LXRydW5rCisxOTk3OSAzZjIyODFlMjRlMmRjNGNjOWE2MTk5ZjRkOTU3YTVmMDQ1MzQyNzJkIGxlZ2FjeS10cnVuaworMTk5ODAgYzA2NGMwZDNjNDliOTM2MjI0OWY2ZDFiY2RiNGU2NmVjZTUwNjczYyBsZWdhY3ktdHJ1bmsKKzE5OTgxIDc0MDQ2NzgyMDcyZDYwOGM4YWMwZDc5Y2NmZjQ5OThlOWE3ODJjNDEgbGVnYWN5LXRydW5rCisxOTk4MiBiMWFiYjI2MjI5NzkzZGY3YzVmZGRiZThlYjkzMzBjYTNlYTYwZGM4IGxlZ2FjeS10cnVuaworMTk5ODMgN2U5MzhmMGU5YTQ5NzU0OGU4OTlkNDJhNmQ1ODdlOGI0NjQ0YzZlYSBsZWdhY3ktdHJ1bmsKKzE5OTg0IDc3MTk2NTU3ZmQzMTY3Y2FlNDMzZGI4MDljYTc3NTMxYzFkYjYyZDMgbGVnYWN5LXRydW5rCisxOTk4NSA5Y2ZkOWMzMjk3ZGQ0MjkzYzYwMjNjNmIwYzU0ZWE4NzE4N2FmMDAxIGxlZ2FjeS10cnVuaworMTk5ODYgNDVhZDdhNDY4YmEyYTM1M2JmYzZkNmYyNDhhYWI4NWVjNmE4MzVkNyBsZWdhY3ktdHJ1bmsKKzE5OTg3IGRkNWExYjI4MDQ0MDc5YzA2MjJmMDVlNzAzY2FkNjI3NDQwZDRjMzYgbGVnYWN5LXRydW5rCisxOTk4OCA1NzlhYzhlMzVmNWI1ZTgyNzc4NzdmNTU1ZDgzNGU4OTUxZTA0NDIwIGxlZ2FjeS10cnVuaworMTk5ODkgOGYzMzkyNjllMDI3ZDZmODkxNmMzZjNkZWQ2YzVkOWEwMjViZWI3NCBsZWdhY3ktdHJ1bmsKKzE5OTkwIGMyMTRmMzcyMDY1OGUyYjg2NTM1ZjA4NjJiYzk3NDdkZjA2OWY0MWMgbGVnYWN5LXRydW5rCisxOTk5MSA5ODlmZWQyOGI3NGYzM2E0NDhlMDRmNjM5Y2Q4NGY3MzFiNDcyMDc2IGxlZ2FjeS10cnVuaworMTk5OTIgZDllZTU2YjZkYjI2YTU0N2ZkNzNmOGM1ZWQ2OGU2ZWM3OWYwOTQxYyBsZWdhY3ktdHJ1bmsKKzE5OTkzIGRjZjczZjEwZjdjY2YwM2Q3OWNkZjExYmQ0ODkxNTE1MTgwNTYyODcgbGVnYWN5LXRydW5rCisxOTk5NCA5YmYzNzQ5MzM4NzIwNWFjZjNkZGJlYTdjODBhNzQwZGYyYTFmM2ExIGxlZ2FjeS10cnVuaworMTk5OTUgZWRkYTRhNDMyMzliY2MzMGI1MGMyMDMwNGU4OGE2N2ViNzg0MjI0YyBsZWdhY3ktdHJ1bmsKKzE5OTk2IGEzOGNjZTNmNDFiNDFkZmMyMjBkYTM1NmM1Y2YwYTUwNjUxZWU1YTEgbGVnYWN5LXRydW5rCisxOTk5NyBhNDg4YTYzY2I4Njc0ZTZiNzA0MjRjOTY3MDMxODJlNGU2OTk5OWUzIGxlZ2FjeS10cnVuaworMTk5OTggOGZmMjRhYmViMzg4MTEwY2I0YzU4Mjc1ODVhYmNkZDllZjM0MGVkMSBsZWdhY3ktdHJ1bmsKKzE5OTk5IDE4MjNmYTIzMTUyMTVjMDRlODVlMGQ0YTAyZDBlMDlkOGIxYzQ0NmYgbGVnYWN5LXRydW5rCisyMDAwMCBhZGM4YTQxYmVlOWY2OTc2OTEzYjJiMjUxOTFlMTk0Nzc2Y2UyODk1IGxlZ2FjeS10cnVuaworMjAwMDEgMzNmNzc2OWEyMThlZDdiNTRmNmI3YTg1ZDlhNTYyNWIwMjgwNWY3NyBsZWdhY3ktdHJ1bmsKKzIwMDAyIDdlYjhiMjQwZGQ2YzRiMDE3NzVmYTg5YmNiOGUwZmEzN2M1MGVlYmIgbGVnYWN5LXRydW5rCisyMDAwMyA3ZWQzZTdhMDhhMzEwMTlkYzgzOTNkNzAyNGE3MWY0MzMyN2I0NzhkIGxlZ2FjeS10cnVuaworMjAwMDQgYmY2NzhhMTFjMjFhZWM3ZDE5ZmI3NDU4ZTcwYzMzYTNiODUxMzliMSBsZWdhY3ktdHJ1bmsKKzIwMDA1IDc2ZWFiMmViY2U1OGE0NGI0ODgwZTVlMmNmM2EwMjIwOWY2NzZmNzcgbGVnYWN5LXRydW5rCisyMDAwNiA0ODYzYjU5NWJkYWU4NjAwMTI0NmUxNGJmMjEzMzNiNWQxNTlhZjliIGxlZ2FjeS10cnVuaworMjAwMDcgNmZlMTNkMDA4ZTI1ZjdhOTMyZTMzY2YwMTUwZWRhYzkwNmUxZDE3ZSBsZWdhY3ktdHJ1bmsKKzIwMDA4IGUxMjE0ZjllMTJhM2NjZjE4NjhlM2ZkNWYyNThmZDAyNzQ3Y2RhZWMgbGVnYWN5LXRydW5rCisyMDAwOSBkMzFhZGQ5OWE4NDY4Y2E4Y2IxMzAwNTJjZGY0ZDZhZmEzOWMwZWRhIGxlZ2FjeS10cnVuaworMjAwMTAgMzNkOGRkMDJhYTk5MTI5MTlmZTYyYmM3ODNhNjNmODY3M2NiZWYzMSBsZWdhY3ktdHJ1bmsKKzIwMDExIGY5YTA3ZTk5OTA3ZTZlYjk3NGU0OTNhNDRlYzUyOWFhYTdmYzFhMTggbGVnYWN5LXRydW5rCisyMDAxMiAzYjZlYTRjZmVlZTA2MmVjYmJjMGY0Njg2OTRlOTY0Y2VmYTIxOGU4IGxlZ2FjeS10cnVuaworMjAwMTMgODQ4ZjA4NTU5OTE2ZDRhNzMxODk2ZGYzMjgzYzQwMjVhMTRkMWQxNyBsZWdhY3ktdHJ1bmsKKzIwMDE0IDY0NmVjMmE0ZDdmNGUwY2IyNzYwOTAyODYxMjkwZjY3Yzk5ZGY2OGMgbGVnYWN5LXRydW5rCisyMDAxNSA5ZTZlNGY1ZTU2MDQ1Zjg2NDM1MjIyNWQ5ZTcwZDdjNGM2M2Q1YzJkIGxlZ2FjeS10cnVuaworMjAwMTYgZGE2YzY2Mjk4MmI2NDQ0M2FhZTExOWY5ZGQ2MTYyNTY2OTQ0MzFkMyBsZWdhY3ktdHJ1bmsKKzIwMDE3IGE4MzAxZDRlZDJiMWI5NTg5NmUwYjdhNDk5ZThlZjhjMmI3MDY3YzggbGVnYWN5LXRydW5rCisyMDAxOCAyMDU0Y2VhMzg3NTRiZDNiYWRiY2EzZmM0NDAzYzQzZmJjZDQ2YTNjIGxlZ2FjeS10cnVuaworMjAwMTkgMWI4NzQ1ZmFhMmVkMmM5ZjE0YmVhYzVlY2MyNWIzNzMyZjc4N2E1OCBsZWdhY3ktdHJ1bmsKKzIwMDIwIDU0YjZkMjhhNjg3OGM5YjEwMmM2OGVkNGJmMzk4MzQ4MWIyZTVhYmYgbGVnYWN5LXRydW5rCisyMDAyMSAxMTQ2MDcwZjQ3ZWM2YjdlYWM0NDVkNWM4NjY4OWFhNTQzZTE5NzU3IGxlZ2FjeS10cnVuaworMjAwMjIgMzJiY2I0ZTIxMDA1NGZmMTgyZjRjYjUxMjg2MzQ1MDc5MjM3NTk4OCBsZWdhY3ktdHJ1bmsKKzIwMDIzIDBiMzNmYzY3Y2E0ZTQ5ZDdlM2FmNDRjZDAxN2IwMGRhMTczNmYzNGYgbGVnYWN5LXRydW5rCisyMDAyNCAxYzkwYTFjZjc5NWM5NjgwYjdlNDc4YzM4ZjdjYWM5MmZjMWVlMjQ5IGxlZ2FjeS10cnVuaworMjAwMjUgNTUyMThlMDQ5NWJjNDc4NGYzYmE3ZWE1NDRjOGQxOTQyODYxM2JiNSBsZWdhY3ktdHJ1bmsKKzIwMDI2IGQwZmQ2MGM1OWFlZmFkMGE4ZWY4ZWJiOThiOWYyMzRkOTljN2RmNWMgbGVnYWN5LXRydW5rCisyMDAyNyAwZmEyYzA1MTg4YTBiNzljNmU5MmU0MDU0ZTYyN2U5NWY4YTVjNzgyIGxlZ2FjeS10cnVuaworMjAwMjggMjA2YTlmMTk3OGU1MDBhODY5Y2ZhM2Y4MjA1ZmQ2MDlhNjdkZjU4YiBsZWdhY3ktdHJ1bmsKKzIwMDI5IDJlZDg0NWY4MWIwYzVkZjg4NDgxNmRhMmYwOWFkZmUwNDYzMzYxMWUgbGVnYWN5LXRydW5rCisyMDAzMCA4MTZkODYwMDI2ODMxYjI0MDlkZjA2NTMzN2RkN2MwNjM2OWMwMjBmIGxlZ2FjeS10cnVuaworMjAwMzEgNzI0M2RlYjAyMGU4N2UzMmMwNzViYmQ0MTQ5ZTc4YjdjZmUwNWNiMCBsZWdhY3ktdHJ1bmsKKzIwMDMyIGM5YjRlZmYxNWRjZGFjZjc5MDQ4NDVjYjlkNzAwYjRhNTVmMjVkMjAgbGVnYWN5LXRydW5rCisyMDAzMyBmNThhNjVkNGNjMjM3ODM3ZWQ1NGY3M2M2YjE0NDQ4OTE1MTE1YzgzIGxlZ2FjeS10cnVuaworMjAwMzQgZjQyOWVlOTQ0OGFhZDRkMmViMzc2NDU1M2M3NTU0ZjNlYzQ3NmNjMyBsZWdhY3ktdHJ1bmsKKzIwMDM1IDhmYjEwYWZmYjYxNTdhY2RlNTdlY2Y4MjFmYjEzYjk3ZTVhMDNkYzIgbGVnYWN5LXRydW5rCisyMDAzNiBjMmU0YmEzYzg1Y2M5MmNiODM5MjkyMDcwYWJiZmI3YTQyZWExNjBiIGxlZ2FjeS10cnVuaworMjAwMzcgYmJmNWVhMmEyMmU1NTk3YjlkN2M0ZGE1OTg2ZTliZmFhYTJmZDk5ZiBsZWdhY3ktdHJ1bmsKKzIwMDM4IDgzNjg0MDQzNzNlY2NmMjYzN2YzZmJlMzAwNTM5ZTY1MjRlMDMyMWMgbGVnYWN5LXRydW5rCisyMDAzOSBmMDdiYzRmOGRiOWU2OTg3Y2QyZjY2NzVmZjIzMTM5NTI3NzZmMDQ5IGxlZ2FjeS10cnVuaworMjAwNDAgMzQ5Yzg3ODg2MDRlMjkzMjQ5YjllZWFkOTJiM2ZmMGMzMWM0MjlmNSBsZWdhY3ktdHJ1bmsKKzIwMDQxIDIwNjgwOWUyNWI1MGQyZGRlMjM4OGFhODE5MjliOWU1NWIzZTFmYjggbGVnYWN5LXRydW5rCisyMDA0MiA1MDgwN2M0NjUwMzRiNjlhMjNjMjg0NjZkZjcwYWU4NjFlZjQyNDA3IGxlZ2FjeS10cnVuaworMjAwNDMgYzc0YzRiZGNiNDExMjJmMzgwODNhOWRhZGQ5OTY4MGQzNjJlNjFkNiBsZWdhY3ktdHJ1bmsKKzIwMDQ0IDI2MDg2OGNhZTFhMWQ1ZGZkODc3ZmM0ZjFlZmU4OTZmNGU2NGVlOWQgbGVnYWN5LXRydW5rCisyMDA0NSBjZTkwZjU2N2ZhNDIwMmE1OWM0ZDdhZTExNzFiOWUwN2M3OTViNTM0IGxlZ2FjeS10cnVuaworMjAwNDYgMGI4YjZmODQwNmRjZmI4MDZkMmVkOGY1OTBlYmZmOGY0MWU2ZmIwMSBsZWdhY3ktdHJ1bmsKKzIwMDQ3IDNiOGE1YmJmZDJlNTcyMGQ2ZTk2MTQwZTRjNDBkNTBiZjQ5NTkxYWEgbGVnYWN5LXRydW5rCisyMDA0OCAxNTUwODcyMjQ5ZTllODUxOTMxMGYxYmZmY2M5Yjc4NDlkOTQwNzZkIGxlZ2FjeS10cnVuaworMjAwNDkgMWJlMGQxYzU3ODM0MDI1ZGQ1ZDFjMzM1ZDJiMDkwZmY1MDU3MTlmYSBsZWdhY3ktdHJ1bmsKKzIwMDUwIDhjNmYyMmNlZjg3ODIyZDZlMDBhYjY1ZTExYWE2OWQyYzU5ZWZhYmYgbGVnYWN5LXRydW5rCisyMDA1MSBmNzIxNzNjNzkzYjZkODMyY2JlNDc3ZjY2NjU2ZjFjMmRlMzRlOTY4IGxlZ2FjeS10cnVuaworMjAwNTIgMTA5NDA1NjFlODkxYzEwMGM5OTM1YTE5ZmU1Mjg1MTBjMDZiOTdhMCBsZWdhY3ktdHJ1bmsKKzIwMDUzIDcyOTE4OTFjYjBiZjc2ODdjYzVkZjA3M2I2ZTkyM2JlMDU4OTdhNDEgbGVnYWN5LXRydW5rCisyMDA1NCBlM2I1ZDAzZTNkN2RiN2M2Y2ZiYjNmNjBkZWFjNjJiYjM4NmU5YWMzIGxlZ2FjeS10cnVuaworMjAwNTUgMTQzZWY4OGVjODU2MzRiNDQwNjZlNmRkN2U2NzQ1NTJiMjc0YWM1MCBsZWdhY3ktdHJ1bmsKKzIwMDU2IGFkNjgzZjIwYmIxNDA3NWIxYWMyMTE0MWZmMDMyZmU5MTZmZmJiZTQgbGVnYWN5LXRydW5rCisyMDA1NyBiNDRlNzdhMTI5Nzg4ZGU1YjkwNjIyOWE4MjA5YWZkYTdiZTUyOGFiIGxlZ2FjeS10cnVuaworMjAwNTggZGM5YTE1MWEwYmQ1MmE5NjgyYmQwNzcwMGU4ZDIyOWI4YTI2OTAyMCBsZWdhY3ktdHJ1bmsKKzIwMDU5IDlkYmFiM2Q1NGRlZWVjM2ZhMGM1NDZmZTBhZTg5Yjg1MmIwYWM0YzUgbGVnYWN5LXRydW5rCisyMDA2MCAzNDZlOTc4NjMwYTljM2JjN2RlMWJmMDZmMDc2NTc0MTA5ZmIwNGQ5IGxlZ2FjeS10cnVuaworMjAwNjEgMGQ1MjM1OGNiMjg4MzQxOTU0OGQ0YTdmODU0MjYyMjUxNDA5NDhhYSBsZWdhY3ktdHJ1bmsKKzIwMDYyIGQ4MDc0ODhkZmM3YTEyYjdhZTNmYWJjOTIxYzk1MjQ4OWNjYTIxNGQgbGVnYWN5LXRydW5rCisyMDA2MyA5NjIxOTZjZTcyMzE1NjNmYjA1ODQ0ZmI2M2U2ZTliMTNkODg4NjJhIGxlZ2FjeS10cnVuaworMjAwNjQgNGY2OGQzZjhmZGM4MjAwODA1OTc3OWE4NDVhZDQ4OTdjYWVjMmY5ZCBsZWdhY3ktdHJ1bmsKKzIwMDY1IDEwOTAyZWNhYmNhOWM3MzBhMWRmMGVkMDYxN2U3OTM4MmYwOTNmZmIgbGVnYWN5LXRydW5rCisyMDA2NiA3M2Y0MWIwZmY3Nzc1YWZkZTVmNDI2YWYxYTBkMGQwYWE5ZDU5YzNkIGxlZ2FjeS10cnVuaworMjAwNjcgY2QyNDU1Y2IxM2VmNTVjNjVlYzZmNTg0MDFjMWViMGJlYzBlM2Q3ZCBsZWdhY3ktdHJ1bmsKKzIwMDY4IGU0OTA3ODEwMWE2ODc0MWQ3N2E1ZjA0YjhjYjc0YWI1MTIxYTdkZTEgbGVnYWN5LXRydW5rCisyMDA2OSA1OTZlZmE3ZTdkZjgzY2ZhZmQ3YmE4YTQ0MWEzMGE2MDQ2OTM5ZDc1IGxlZ2FjeS10cnVuaworMjAwNzAgNjNjYWNkZWI4MDQ1YmQ1MTlhMjZkNmQ2YTc5NzIwMDAxODk1Y2M5ZCBsZWdhY3ktdHJ1bmsKKzIwMDcxIDcwN2Y5NWQwNWU2OTA3NjRlODhiZDFjYzRhNjdiMjRkZDAzOTRkMjkgbGVnYWN5LXRydW5rCisyMDA3MiA4ZGYwZjY1ZTM4NjAzNTg3ODE2ZDE5NTc3ZGI0YjlmMDFhOThkYTRmIGxlZ2FjeS10cnVuaworMjAwNzMgYTdiYmYzM2ZjZTA1YWU0YmJmMDIyOWUxMjc5OWJiNWZhMzkyZTg5YiBsZWdhY3ktdHJ1bmsKKzIwMDc0IDc5MTZkMzJhYTA4MTI1ZDhjOWRmNmVkZmM2MmRkMjg4M2M4ZmY0MDcgbGVnYWN5LXRydW5rCisyMDA3NSA1ZWUzNTQzZWEzM2Y0MjUwZTk3YzgxZmU4Yzg1NTQxZjQ2ZDk3Y2YyIGxlZ2FjeS10cnVuaworMjAwNzYgOWU2NDY4MzU2YTBiMzM3MTY1ZjViMjVkZjA3ZDI1NTZjYWM4ZDk2MCBsZWdhY3ktdHJ1bmsKKzIwMDc3IDU2ZDE5NWYyMWI0ZmUwZGE4ZTVhY2RhOWVlYWI5ZjQyZDdlZjlkNDUgbGVnYWN5LXRydW5rCisyMDA3OCBmOWEzMDAxNWU4YjBmY2I0ZmNjN2Y1Y2YyY2Y3ODdjMmU0MTJlODljIGxlZ2FjeS10cnVuaworMjAwNzkgZjJmOGYzZTJhYzIzMWMxYmY0OWFjZGM1ZjI3NDc2OGMwYjE3YmQxZCBsZWdhY3ktdHJ1bmsKKzIwMDgwIGQ0OGQwOWM3ODdhODQ5ZDE0MDU4MmU3ODVmYmI5YWI0M2FmNTk0ZDcgbGVnYWN5LXRydW5rCisyMDA4MSBmNWQzOGM1YjE3NTFlM2Q3MTZkNWMxNTYzYTA4NzQ5ZjgyZGVkZGM3IGxlZ2FjeS10cnVuaworMjAwODIgZDcxOGMyOTNhMWZmYTJiN2Y0Zjk4MThiYzcwODI2YzBlMTBlYjEwNSBsZWdhY3ktdHJ1bmsKKzIwMDgzIGJhY2FjNzVkMjJmZGU5ZTg2YTI0ZDBkNjBhNzg1NTMwZGEzMzBjOGMgbGVnYWN5LXRydW5rCisyMDA4NCBlYjA2YTAyZTA1MDc2YmU0Y2UxNmQ0YWQ5OTA2NzdkYjFhMDQzYzM5IGxlZ2FjeS10cnVuaworMjAwODUgMTE1Mzc5NmQyMWMyNDA3MDZiZDA5MzEyMGU4MzNmMWQ3ZDUyZjk5NiBsZWdhY3ktdHJ1bmsKKzIwMDg2IDQxMjBlYmUwOGRkMDQxNmNjM2Q3Yzg3Y2FjYWNlNWQwZjE3YjEwOTIgbGVnYWN5LXRydW5rCisyMDA4NyAzNGVmMDU0NDE0MTNmMjZiNjVjYjE1NDAwY2FlODJhMjc3NjU4ZTA3IGxlZ2FjeS10cnVuaworMjAwODggMzhlZjQ2NjM1OTQ5MjY1NjkwM2M3NDRlYjI0ZDZkMDVkMWUwNzliNCBsZWdhY3ktdHJ1bmsKKzIwMDg5IDJlN2Y0NzMxNGFkYWEzMTc3ODM0YmNmMTJkNGJmZDFmN2Q0YTgzZmIgbGVnYWN5LXRydW5rCisyMDA5MCA1NzA1ZDVhOGJjYjNjZDk1ZTRmYWIwZDMzYzEyYTllZjM2ZDhhN2RjIGxlZ2FjeS10cnVuaworMjAwOTEgYzU4YjZkODY4ZDA4MTZmNWE2OTRlMTBhNmJlMzUyNDEyNTRkZWU4OSBsZWdhY3ktdHJ1bmsKKzIwMDkyIDdhNDk0MGE0YWNhNmY3MjllMjkwODBjYjlmZGQ5MzZkNzYwZWI0MjggbGVnYWN5LXRydW5rCisyMDA5MyA3MDU3YjZhYTQ2ZWM1NWZjYTE4MGM1ZmRlNThkNzBlMGM1NmRhZDdhIGxlZ2FjeS10cnVuaworMjAwOTQgYWM2NTZjODM3YjZjNzY0YmFjMTBlYjkyZDA5NmYzMzk3MmVhNmFmYSBsZWdhY3ktdHJ1bmsKKzIwMDk1IDZjZmEzZDY1YWI1NDY5YmYwNjhiOTJlNTJjNmFlYWQ0ODFlM2UzNTEgbGVnYWN5LXRydW5rCisyMDA5NiA5MDU0NmQ2ZTU0NDU0ZmM2ODU5NGEyMDVmOTExMmU2NjExMjFlMWM4IGxlZ2FjeS10cnVuaworMjAwOTcgYjc0MmNhZjBhODYyYTQ1YzNmMTU2NTU3MGE4YmU3M2IyMDU3ZWM4NSBsZWdhY3ktdHJ1bmsKKzIwMDk4IDQwN2Q2MGIyZmE0MWE5NGM5ZGY0ZTNjNjY1Y2E4YzA3ZWQzM2VhMGEgbGVnYWN5LXRydW5rCisyMDA5OSA3ODIyMzk0ODgwNTg1YmY3YjZhNWJhMmQyYWY3ZTdiMjFjYmI0ZTlmIGxlZ2FjeS10cnVuaworMjAxMDAgMTZmMTQ1YWFjMmVjMTJlNWQ2MTIxNzgzMmM0NzQ5YTdiOWYzNjFmNiBsZWdhY3ktdHJ1bmsKKzIwMTAxIGM4ODE3YTliYmJkZGJjNGMwY2NkYWJlMWE2YjA2YTc5Y2I2Yzc0YjMgbGVnYWN5LXRydW5rCisyMDEwMiA1MmRhMDk0YjUzZWMzOWJmOTUwNWFlZjYxOTZlYjhmMDFkODRjNzQ3IGxlZ2FjeS10cnVuaworMjAxMDMgZDNmN2M3ZmFkZWMwMzk4OWNhZWQ3OTQ5MGJlOWNkMDI4ODFiZWFiZiBsZWdhY3ktdHJ1bmsKKzIwMTA0IDY0ODc2YmI4YWFjZGM1YjFkZjlkMDYzNzQ4NDI1YjJjZDI1NWFhNTQgbGVnYWN5LXRydW5rCisyMDEwNSAyMTVkYzcyNWRiODQwNDllZDY4ZjU1YTc1YjhkN2VmNTFiNmI1ZWQ2IGxlZ2FjeS10cnVuaworMjAxMDYgNGQ2ZWU3ZjJiZWU2NjA5YTBjMzA2NzZjZGIxMmE4Njc1NDFhMjRiYyBsZWdhY3ktdHJ1bmsKKzIwMTA3IGYxYTQ5ZWVjN2MyYmYxZGI3NTg1ZDJlYzI3MzEwOTY5MWYwZDE1MjMgbGVnYWN5LXRydW5rCisyMDEwOCBmNmUxZmEyZGI0OGNiYjdhNGY3MmQyNWJlN2Y5MGYwM2QwNGZhNjBmIGxlZ2FjeS10cnVuaworMjAxMDkgYTFiOTlkMDg4Y2VhODI5NGQ1YjkyMTMyN2QyYjQzNGEwMzE4MzM4NSBsZWdhY3ktdHJ1bmsKKzIwMTA5IGI1OWE1MzZhZTFlZjM3NzRmZDg1YzE3ZjYyM2U4OTI2YjdiNmMwOTUgbGVnYWN5LXRydW5rCisyMDExMSBiM2RjZTA2ODY4ZDZkMzVmNTkwMzQ1MmU2ZTkwZDdmMGFjNDE3YzM4IGxlZ2FjeS10cnVuaworMjAxMTIgM2Y5MTJmYjhjMTgwODE4NGViYTYzMjg2N2IyMGFiMWRiYmNiYTM1OCBsZWdhY3ktdHJ1bmsKKzIwMTEzIGI2MDA5NmQ1MDAxYTZlMGQ4MzZhMDY2MGZmOTVjNzljZDExZTAxOTEgbGVnYWN5LXRydW5rCisyMDExNCBlM2NjMjBlOWVhMzZlY2RkNzg3YmZiN2JmZDZkZjAyMTFhM2VkNzQ4IGxlZ2FjeS10cnVuaworMjAxMTUgZWVjMzkxYTU1Zjg0NDAxOWViNGYzZjljNjRjMTZlMzNkODIzMWM2NCBsZWdhY3ktdHJ1bmsKKzIwMTE2IGIyOTE4MzNhMGVmYjdlMWQxNDY2ZDNlNDE3MmViMDEzNGUzYWMxYjkgbGVnYWN5LXRydW5rCisyMDExNyBmOTM5NWY3NjI3YzRiN2JmMjRhZjRiNjk5Mzk2ZDQ1ZmUwZGM1ZDZjIGxlZ2FjeS10cnVuaworMjAxMTggYWI3MDcyMDk0MDliYjk1ODU3NGFkMzQ2MTA2NWE0MTVhODEwZDI4NyBsZWdhY3ktdHJ1bmsKKzIwMTE5IDAyYTRiMGNmYzU3ZTEzNTRiMGVmN2UwYTY2ZTNjOTUzMjgwOTRhYzIgbGVnYWN5LXRydW5rCisyMDEyMCAzZWI4ZDcyNTk5NjkyNGMyYTc1N2ZjMGFjOTYxOTZkNDBmZDY3MThlIGxlZ2FjeS10cnVuaworMjAxMjEgMzJmYjY2NDNhZGYxZjA0Y2I4NzhlYjZmYWI1NTU1Y2U2YmM3MTVmOCBsZWdhY3ktdHJ1bmsKKzIwMTIyIDkyYjNlMDgzMTk3MDJhNGM3MzNiNGJmNDMyY2FlMGMwYzk5MjY2YjIgbGVnYWN5LXRydW5rCisyMDEyMyA0NWNkYTFiMzkzNTViYzc2NjM5ZTNmNWFkZDk3MTdmNzIwYzUyMmRlIGxlZ2FjeS10cnVuaworMjAxMjQgYmY0Y2M5OWQ3MTFkMGFjNzRmMDAxNDU5YTVjYzFiNWVlM2Q4M2MxNCBsZWdhY3ktdHJ1bmsKKzIwMTI1IDRlMTlmYjhjZjFmYmQzOTg3MGVjYmFkNmI2ZDc4ODIwNzhlN2JlMjcgbGVnYWN5LXRydW5rCisyMDEyNiBkMmIwMWQ0ZTE3ZTlkY2ZkMmIyNzZhOThjYTczZDQ5ZGRkMGYxMGUzIGxlZ2FjeS10cnVuaworMjAxMjcgNzFhZjNiNjBhYTYyOTEyM2E1NjQzMjk0YzlkZmVkNWI4NjIxZmVkNSBsZWdhY3ktdHJ1bmsKKzIwMTI4IDVmNzExODVlZjJiNWFkZGVkZTdhYzIxYmJkZTdjZjJmODczMzVmYzYgbGVnYWN5LXRydW5rCisyMDEyOSAxNDEyMzA5NTYzMjU2ZTFlNDMwMTYzZmM3ZmZlZWM3NjY4NWUwZTRmIGxlZ2FjeS10cnVuaworMjAxMzAgMzkwYTgzMTVkNjM0MmI0YzJmNzBmOGEyMWJlYTI0NGVjOGRiZWM3OSBsZWdhY3ktdHJ1bmsKKzIwMTMyIDdjMDQ3MjkzMmZiZjk2MGJkNTliYjI4ZDJjOTJhMTc2MjMyZTVlZjMgbGVnYWN5LXRydW5rCisyMDEzMyAyMmQ4NTAxN2JlY2U4OTg5OWI3MjEwNjJmMzBiMjljZGU5MjAxNzI5IGxlZ2FjeS10cnVuaworMjAxMzQgNTM2ZThkZDM1OTUzMjQ0ZDMwMjZmZGYzMTk2YjZhODRlMjdjNjNlYSBsZWdhY3ktdHJ1bmsKKzIwMTM1IGVlNDgwMzgyNjc4NDc5NjY5MzU3ODk3YjA0MDQzZjE3NjE5OTE1MjEgbGVnYWN5LXRydW5rCisyMDEzNiAxYjEyZTYzNDAwMzg5NGNjMThjODQxMjE1OGZkOWU3ZTFmOGU5ZjhmIGxlZ2FjeS10cnVuaworMjAxMzcgYTM0MGJhNGFhYzI3MGQ4NGFmNmI4ZDFlMDIyYTdmN2Q2NzIxZmEwOSBsZWdhY3ktdHJ1bmsKKzIwMTM4IDI1ZTkzYTAxZjg2ZDllZjA1ZGU0ODJmZmExMmM2NzgwM2I0OTYwZTAgbGVnYWN5LXRydW5rCisyMDEzOSAwMzc3ZjkyN2NhZmEzMzg0NjM4NjM0MGIyZmU3ZDQ0OWFmMDdmYmQ3IGxlZ2FjeS10cnVuaworMjAxNDAgNzUxMDNiZWYwYzI0NTVkMzM4NmNhZjA0NDdkZmJhNDIzZjM1Mjc0MCBsZWdhY3ktdHJ1bmsKKzIwMTQxIDU5NDcyYmNiZmI4ZThhNWFiZDU4YjE3MjdkMDNiNTU3YTcxYzViODYgbGVnYWN5LXRydW5rCisyMDE0MiAwMmNlYzAwZjIyYmI1M2NmNjA4ZDJlMzA2ZjBiODEyMmY4ZmVkMTBjIGxlZ2FjeS10cnVuaworMjAxNDMgNmQzMDU1MmNiNGY5OTA4N2ExZjM5MGFmZGViMTI0M2U5Mjk2Y2MxNSBsZWdhY3ktdHJ1bmsKKzIwMTQ0IDRhYTdhZmJmMjlkODIxNTdlMjQ5YzgzMGYxYjk3NmQ4MTM0NGIyYWUgcmVsZWFzZTIwLW1haW50CisyMDE0NSBmZGM1MjJkYzlkZjU1NmNjYWJiY2E3ZmQ5Njc0ODZkZTFiNDE0M2FkIGxlZ2FjeS10cnVuaworMjAxNDYgYjU1M2ZiYWMxNDZkZGJlYWQwNjliNDY5MTlhMTJiMjI4MzRlY2JiMyBsZWdhY3ktdHJ1bmsKKzIwMTQ3IDg3ZDUwOWQwODVhMGZjMzg4NTJkNzE5ODU2NGVmZWYzNGQ2ODE4MDAgbGVnYWN5LXRydW5rCisyMDE0OCA4NzBkYTI0ZDRiYWYyNGU3YWYwNzhmMTYwNTEyOTA0ZWM1NWU4NDJmIHJlbGVhc2UyMC1tYWludAorMjAxNDkgMjJkMzQ5NzQ4Mzg0Zjg2NjZhODBhODZlODY5YjUzMzZiMzlhOTNjMCByZWxlYXNlMjAtbWFpbnQKKzIwMTUwIGM0YTViZDA4ODUxYmNmYWI1ZjdhZDhhNjIwNjk2N2Q4MTViYmI2MjIgcmVsZWFzZTIwLW1haW50CisyMDE1MSBlZTI2NDY2OWI2NzgwZTk3ZWRlNTA0ZjQwMmViYzNlMzM2ZmQzNjU4IHJlbGVhc2UyMC1tYWludAorMjAxNTIgYTAwMjkxOGZjMGMyNzY0NGM0Nzk5MGMxMzcxYjk4NjMzMmNkYTdkMiByZWxlYXNlMjAtbWFpbnQKKzIwMTUzIDEyZmVlN2ZiMDE5YjNiODQzNTZiMzIyZmNjNzZiYmMyZWM5ZTdlZjYgcmVsZWFzZTIwLW1haW50CisyMDE1NCBiZWIyOTgyZDg1YWE4MjJjNDU0ZmVmZTRjOTcwNDJmZmIxNTEwYzljIHJlbGVhc2UyMC1tYWludAorMjAxNTUgMTFhMjFkNTkyODM0ODdhNWUzY2E2MTcxODY5ZWE0ZjhjMTc0MzIwNCByZWxlYXNlMjAtbWFpbnQKKzIwMTU2IGE2MjZhY2MzMGZjMjM5OWFiZDlhYmI5OTY4OWVhZDY2NDY5ZWI5MWYgcmVsZWFzZTIwLW1haW50CisyMDE1NyBmNGNhOTNlOGEyZDQ3OTY0Yzg3ZDc4YTZhMGQ2OGUzZTY3NDQyMjExIHJlbGVhc2UyMC1tYWludAorMjAxNTggNjM5M2Y1NWRiZDdiZTlkZjdlMjc4Y2JlN2IwM2MxOTJjYTVmMDcxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTU5IDVlZDRjN2U4YjRmOThlY2ZkZjQ2MzVhYzY3NTBiYTA5M2ZlMzJmN2YgcmVsZWFzZTIwLW1haW50CisyMDE2MCA5ZGRiYjc2YzMxMTQ1NDM1YmUyZmFmY2I5MTZlYWIzNWYxNWM0YTg1IHJlbGVhc2UyMC1tYWludAorMjAxNjEgNDJiMWE2OTlhNWRkYzFjZDUwMGI1OTRkZWFlYTY5NmVlMjQ2YjkzZiByZWxlYXNlMjAtbWFpbnQKKzIwMTYyIGQ0NjdkMTg0YjQyOTMwNGU4M2MxYzAyOGMxMDNmZGMwZmIxMzExMTYgcmVsZWFzZTIwLW1haW50CisyMDE2MyAwOTNlOWEyNGVlNzY3YTFkNGNjZGVmMTk2ZDE1YmZiOTg1OTI3MDllIGxlZ2FjeS10cnVuaworMjAxNjQgZTJlOTE0NmY0YWI0ZDljMjliZjM0YjBiMTEwNDQ1Yzk3ZTg1YjkxYiBsZWdhY3ktdHJ1bmsKKzIwMTY1IDI0ZDIyZWVlOTRjZjM3MTU3M2QxMjMyYjZjZDAxM2UzMjY0YTkyNzIgbGVnYWN5LXRydW5rCisyMDE2NiA3MmZkMjY1N2JlMzQyODdmNTk2ZjM0YmI2YjdiMWQ1NmIxYjBmMzAyIGxlZ2FjeS10cnVuaworMjAxNjcgNTM2Y2MxMjZmYjlmOGEwNzExMmIwNTBiZDFiNzQyYmFmZjA4ZTg5NyByZWxlYXNlMjAtbWFpbnQKKzIwMTY4IDZkYzQzZTBjNmJiZjUwMzUzNDMzMDA2MmU3M2I3MjllZTBiZTE5MGMgcmVsZWFzZTIwLW1haW50CisyMDE2OSBlNTEwYzRjYzU3Mzc2M2QzZGNkMTRiNjEyZmM5NWFhZTBlMzIyYzM5IHJlbGVhc2UyMC1tYWludAorMjAxNzAgYTQ2OTY0ZDcxMTFkZGVmNGEyYTI5MjFmZDc0ZDBjM2M0ZDQ2NjdjZCByZWxlYXNlMjAtbWFpbnQKKzIwMTcxIGQ3ZTBkMjBjZGRhZGIzNjMyZTVlMDAwNmY1MjBiOTFhMzhjMGY1OTQgcmVsZWFzZTIwLW1haW50CisyMDE3MiBkOWZmMTMxMDBlMmYyMTIyY2EyM2E5OTQ1ZjY1NTkxYTVhNmUzZTRjIHJlbGVhc2UyMC1tYWludAorMjAxNzMgNWNmMzU1ZjY3YWEzN2IxZjZmY2RkNTBiOGY5YmFlM2I0Y2FhNjk1YiByZWxlYXNlMjAtbWFpbnQKKzIwMTc0IDU3M2E5MTM4ODcwNWI1MDBmY2E1YjRkNzNhYzFmM2RmMDAxYWMwMzggcmVsZWFzZTIwLW1haW50CisyMDE3NSBjY2VmMDJkYTg4YTY3Zjk5MTgzNzRlOGE3ZWEwYzE4NDNmNGIxNzU5IHJlbGVhc2UyMC1tYWludAorMjAxNzYgMzEyMDNkOTkzNTgyNzNjZjczM2I5ZmUxZGMyM2ZjNmY3ODdiZTExNSByZWxlYXNlMjAtbWFpbnQKKzIwMTc3IDk5NTZhMWM1ZDQ0MDU0ZDY0ZjYxZjg4NWFlYjBmODFlNGVjYmMxMDEgcmVsZWFzZTIwLW1haW50CisyMDE3OCAxOTJmMjVlNDFmYmJlZTk4OGJmMWI1ZDk5NTM4NmQ0ZDFkZjE4MmE5IHJlbGVhc2UyMC1tYWludAorMjAxNzkgMmI1NzY4YzEzNTk5MjAyOTNlNTZlMGU4NjM1YWQyYTM3NDY0MzA0MSByZWxlYXNlMjAtbWFpbnQKKzIwMTgwIDk5MjQ2MGM2NjhjMTViZjkyNjQ4NGNlZTMwMzZjOTA3ZTM4ODRkOTUgcmVsZWFzZTIwLW1haW50CisyMDE4MSA4ZGVjYTc5ZWE2YWJiNTVlMzNmOGIzODA1N2M5NTZiOGZhMGQ4NzhjIHJlbGVhc2UyMC1tYWludAorMjAxODIgMDQzNzc1YjNiOGIyOTY2MzQ3NDliZjkyMWY5YWM4MGY4YzdlNjY2YiByZWxlYXNlMjAtbWFpbnQKKzIwMTgzIGYzNGM5MDk4OTEzODM0NWRjZjY3M2FkMjMyMzU1YjQ5Njg1ZjYyZWIgcmVsZWFzZTIwLW1haW50CisyMDE4NCBkMWMxMzUwYTNhNWY0MmI1ODVjNjhjNDk4YWEyNGVjOGQ0NzlkYWQ3IHJlbGVhc2UyMC1tYWludAorMjAxODUgNWE0ZTA4MzljY2U3NmNmMDZkZTI0ZjEzNGU2NmJlZjQ3ZWFhZTMxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTg2IDViZDY4NmUwZWNkNDFmNjAwMTk4NzI5NGJmYTg3YmZjZjAzZTY2ZGMgcmVsZWFzZTIwLW1haW50CisyMDE4NyBkMTZlZGM3MDRkYTFmNThjYzU0ZDgyOGYyYWIzOGRhMmQzZjlkYzEwIHJlbGVhc2UyMC1tYWludAorMjAxODggZDUzYTk2NzlhOTNiYjhiZTgxYWQ5NWQzZTAzYmVmM2QyNWQxNjhmNSByZWxlYXNlMjAtbWFpbnQKKzIwMTg5IDk3NzZjZjVkYmZlMzhkMGM3ODgxYjZkZWUyZDFiNTVkNmJiMGIzZjAgcmVsZWFzZTIwLW1haW50CisyMDE5MCA3NmI4OWZhM2VmMzQwNjBhM2NjMWQ0NmU0ZjlhM2VhNWY0NDI2ZGU4IHJlbGVhc2UyMC1tYWludAorMjAxOTEgYzAxMTRlZGZkMzEzNzZhODg2Y2JkN2NhYThlMTM1MzE4ZGYwNWI0ZSByZWxlYXNlMjAtbWFpbnQKKzIwMTkyIGVmMTIyM2Q4NDQyZGM1NjgxZDllYTQ4ZWZhMTk1NDM2NzIwMmJjNTUgcmVsZWFzZTIwLW1haW50CisyMDE5MyA2YjBmZjUyOWQ2MTUwMjQzYjkwZTA5ZTg2ZTFiYjY3NDRkZGE0MjY2IHJlbGVhc2UyMC1tYWludAorMjAxOTQgN2QwNDI0NWVkNzVmMzliZjJlNGZkMzRiY2RhNjcxZmE3NWU4ODc2ZiByZWxlYXNlMjAtbWFpbnQKKzIwMTk1IGQ2NTQ3ZmY5NDE2YmFiODE5YWI4OWJkYTllYjA4ZTAyN2ZjYTM1M2QgbGVnYWN5LXRydW5rCisyMDE5NiAwM2JhMDYyNDc0ODY2MzBhYWZhN2UwZjRlZGNhMjMwOGUxZWY1ZTNjIGxlZ2FjeS10cnVuaworMjAxOTcgODM2Y2RmOGQxMjQ1ZDVmOTJiM2Q1ZDM2YTg1MzY5ZDk0OTEyZDRjYiBsZWdhY3ktdHJ1bmsKKzIwMTk4IGVhMzI2ZWI0Nzc1Y2MxYzQwZWUxZTIxMmQ1ZGQ3NTk2OGUwMTUxZWQgbGVnYWN5LXRydW5rCisyMDE5OSA0NmE2YzI4ZDM1ZTVkYjhkMTRhNjE3MWMzNDc2OTJiNGY0OTNkNTY5IGxlZ2FjeS10cnVuaworMjAyMDAgMzExZTZhZWVmODU4YWQ1MDUyM2UwNmVhNjUxMDUzMzE5NTg5MjRlMyBsZWdhY3ktdHJ1bmsKKzIwMjAxIDI4OGQ4MDVhZjE0MjE4ZjNmNDkyOTk1YmViYjI2ZGFlMGQ2NDdmNDkgbGVnYWN5LXRydW5rCisyMDIwMiA1MDZhMDgwZDM5ZWNmYzIyOTIzOTg3NGFmZTBjYmU2MWJiMmExYmM1IGxlZ2FjeS10cnVuaworMjAyMDMgMzdkOWVkNTU0MTZmZjE5YWQ2NGU0ZjI5OGUzMzM2ZTA3NDM2OTM1NyBsZWdhY3ktdHJ1bmsKKzIwMjA0IDBjZGZjY2RiNjg3MTBhMTBjNTY2OGRkZGYzMmFkMzQ5ZTk0NjVhNDIgbGVnYWN5LXRydW5rCisyMDIwNSBiMGE3ZmFmOThhOGVkYjNmM2FlMDNhYzQwZjNmYzM0N2VlYzk2MWQ4IGxlZ2FjeS10cnVuaworMjAyMDYgNzYzNWY4ODM4YzY4OTJlMjljMTYwYjgzOThjZDJhNGQ0OWU2ZmU2MSBsZWdhY3ktdHJ1bmsKKzIwMjA3IGI3MzU0N2JmOGJjMjQ4NzI5MWM1MGY1ZGIzYmRlZjVjOTc5N2Y2NWMgbGVnYWN5LXRydW5rCisyMDIwOCAxMWViYTViYmZhMTRhYjUxYTMyMmMzYzQ3MjJlZDIxNTFlNDlhOWE1IGxlZ2FjeS10cnVuaworMjAyMDkgNmJlOGJiNDgwOGUxNGVmOWRkZjk4ODZiOGVjNTY4NTliYjcyZjE3ZCBsZWdhY3ktdHJ1bmsKKzIwMjEwIDU3YTVmNmIwMzM3ZDFlMTczODg0ZWI4NTRhNmY4ZGYyMTZiMjk1YWQgbGVnYWN5LXRydW5rCisyMDIxMSAzMTAwNjZiOTkyZjJmOGE4ZTFiNzg3MGRmMmFlOTNmYjhiOGE3NGE3IGxlZ2FjeS10cnVuaworMjAyMTIgYjI1YTI0MTMwMjBlMjM1OGNlZDc5OWQ3MWQyZGQ5MDk4OTUxZjI2MyBsZWdhY3ktdHJ1bmsKKzIwMjEzIDk5MDZkYjJhMWZmYTc4NjExNDdjNzc5MzI0YmM0N2M2OTlhOTU4YmQgbGVnYWN5LXRydW5rCisyMDIxNCA5MmI2NWYxMjFhM2U5NzY3MjAxZWE3MTA2ZDYzNmEwNWI5MTVkOWFhIGxlZ2FjeS10cnVuaworMjAyMTUgOWI4ZWE2Mzg3ZGM2MDlmZDBhOTNmNGY0NjliYzY4ODA4MTNlNDdjMCBsZWdhY3ktdHJ1bmsKKzIwMjE2IGJkMTEwZWFkYzE5YWQ0MDk5NTFiZjNhZjMwMmMxNGQ0OWE0NWU3NzAgbGVnYWN5LXRydW5rCisyMDIxNyBlN2Y1YjcwYjA2MDZhYmIwZDhiNWQ5ODkzYjVjODhiNTc2MDIyODkwIGxlZ2FjeS10cnVuaworMjAyMTggOTExZTIxMWI4OTMwYjkwZTI0ZmJlMjJkMTlkYTViM2EyMDA3MzA4ZiBsZWdhY3ktdHJ1bmsKKzIwMjE5IGEzZGViMjAxZWNkYTEwZjgxNWRhZjRhZDkyNmExNDgzNGE4N2Q0OTcgbGVnYWN5LXRydW5rCisyMDIyMCBiYjllMjE0MDM1ZTEyNWI5MTM0ODVjMjc1MzZlMzYwYzRmNTYzNDc2IGxlZ2FjeS10cnVuaworMjAyMjEgNzYwNzU0NDE4ZWUwMjcwYWM0ZWRlYjg1YTlhMzlhNmNjMTg3ZjQ4NCBsZWdhY3ktdHJ1bmsKKzIwMjIyIDA4MDgyOGJmOGRiZGU4ZmUxOGIxNDUzYjZhOTZjZjc5YTk5Mjk2NWEgbGVnYWN5LXRydW5rCisyMDIyMyA0YjM0NmNjMzk4OWJhYTk5M2VhNTc1OGRjOTRkYjJmNDliNzJlOGUyIGxlZ2FjeS10cnVuaworMjAyMjQgMTJmN2YxNjdhYzUzM2Q0NmE0ZmVlNDJjYzFiNjFjNTA2ZTk5NDVhZCBsZWdhY3ktdHJ1bmsKKzIwMjI1IGQzMjhjZmViMGM3NWJjMDQ2NGRlZDAwYWQ1Yzc4ZjdmYTNkMDA2NjIgbGVnYWN5LXRydW5rCisyMDIyNiAxODFkMDEzMjBlZjQzZTNmNTY0ZTc2ZDQwZThmYTEwZmQwNjE3MzlmIGxlZ2FjeS10cnVuaworMjAyMjcgYjNmZDQ0ZmZhYjFlOTE2MTAyZTJmNmFiMTNmZWIxZThhNDQ0MGU0NCBsZWdhY3ktdHJ1bmsKKzIwMjI4IDkyYjYwZGVlN2YwODM1ZGYyODljY2U1NjgyMTY2MTViN2I4MDVhNTYgbGVnYWN5LXRydW5rCisyMDIyOSBjY2FlNDEyYmJjM2UyMmNmYTYyNDlhNzAyYTk3YzhkMjdiMjEwNjQyIGxlZ2FjeS10cnVuaworMjAyMzAgMjE0NmE3M2NlMzVjMGJkZDQ0OTlmM2VlOWI0YjE3YmU4NTRmZjE2ZSBsZWdhY3ktdHJ1bmsKKzIwMjMxIDk2ZWEwZWNjZGIzMTczNzg4ODM1ODgxNmI2NzcxNjZmYmEwZjI4YzUgbGVnYWN5LXRydW5rCisyMDIzMiBjMzI3NTJhMjg2NTIyMTNlMmMzN2U2NzgzN2MyMWRiMGQxMTUwNTI0IGxlZ2FjeS10cnVuaworMjAyMzMgYTU3MTA1NzhjMmUwMjIxNjYyOTMzNGMxYTFiN2NlMWU1YmFiZjgyMyBsZWdhY3ktdHJ1bmsKKzIwMjM0IGFiNGU0Y2IwOTRjMWY2NDMwZDQzOGM5M2Y3YWZjNzNhYTlmMjg3NzMgbGVnYWN5LXRydW5rCisyMDIzNSA4M2VlNjNiY2YwMzY1OTg3MjdmYjYyNzAzYmExMmUwZjIwNTNmOGMxIGxlZ2FjeS10cnVuaworMjAyMzYgOTg3NmQ2YmFmODQzODk2MzgxY2ZjODYyZWNkZTA5ZmE0MWQ1MzdlZCBsZWdhY3ktdHJ1bmsKKzIwMjM3IGRlOTg1ODUzMGE1NTNkYzg0ZWFhZGRlODIxNjk2YmQxMTBhYjk3MzAgbGVnYWN5LXRydW5rCisyMDIzOCBmMWQyZTg4ZmExMWRlMzI2MDU4MzU5MGUyMTk1ZTMxZjhhZmZkNzc0IGxlZ2FjeS10cnVuaworMjAyMzkgNWFmZmZjYTY2ZTJmYWUyNmYyMDYwMjdmYWJiMGZjMDllNzE5YWQ2MiBsZWdhY3ktdHJ1bmsKKzIwMjQwIGY4ZmRiZWI3MzY2NzA4YjczMzljZjFkN2Q4Yzg0NjRlMjVhNjBkZWMgbGVnYWN5LXRydW5rCisyMDI0MSA4NzY4NjFmMTM1NDM2Y2U3Yzc5Y2Y5NmVjMDViMjk3MDE2NWFhM2YwIGxlZ2FjeS10cnVuaworMjAyNDIgYTllZjQ0YmJkOTY4MjkwNTk3YjU2ODY2Njk0ZjIzMDdlODI3Njg4NiBsZWdhY3ktdHJ1bmsKKzIwMjQzIGU3MjJkNDg4M2UxOTcxNWVmMjg4YTUyZTE2NTNkZjBjYzAzZTQ3N2EgbGVnYWN5LXRydW5rCisyMDI0NCAzMzA4YWZjYWExMzE1NWQ3M2Q2M2IzZWJlYjNkZDE4Mzc0Y2E3ZmQzIGxlZ2FjeS10cnVuaworMjAyNDUgMmQzMGEwOTk3MDVmMzlmY2RjZWFhZWQ4NWQ2MzQ5OTY3ZTI3YjFlYiBsZWdhY3ktdHJ1bmsKKzIwMjQ2IGVkM2U2NmYzMDgzN2MyMjExNjUxNmZjY2ZkN2UzYjVmNjM2OTNhNmYgbGVnYWN5LXRydW5rCisyMDI0NyBhZWQ2YjE0MzZkYjQ3ODcwZjVjODAwNTk0MjMwYTQ0Mzk5MGIzZGEwIGxlZ2FjeS10cnVuaworMjAyNDggMTk0MzMxOGZhZTMxNzdhNThlY2JlZWMwZjNjOTRkYzgxNjQ5OTUyNCBsZWdhY3ktdHJ1bmsKKzIwMjQ5IDQ0NjhhOGRhNjdjYTAxMDQyNGVhZWE3NGE3ODI4Y2RiZjBmNmY1ZjggbGVnYWN5LXRydW5rCisyMDI1MCAyOGNmMGE3OTQzY2ZkN2IyMzUzMWJjMmRkNjhiMTQzMDczMmE0YmRjIGxlZ2FjeS10cnVuaworMjAyNTEgY2M4YTIxYmE2NDQ5OThjY2VhZDQyOTY5MjQ1M2U3YmZkOGQyNGEzZiBsZWdhY3ktdHJ1bmsKKzIwMjUyIDNhYWVkYmFjOTViMzEyYmU1ZjEzOTE4ODQ5OTQ5NTRiNmZjNjE4NmUgbGVnYWN5LXRydW5rCisyMDI1MyBhMTg0MGI5YjE0ZjE0NWYwZDFmMTBkOTcyY2E2YjdkM2ZjZTgwOWYyIGxlZ2FjeS10cnVuaworMjAyNTQgOTYyMWQwZmJjMmU1MmYwZDdmNDk4MWI3M2Y5NzBlYmYwZTdmMzM2NiBsZWdhY3ktdHJ1bmsKKzIwMjU1IGNhNTY1ZTNkM2NjNWMwNjk3ZmNhM2QzYmU1MTgzOWRmMTU3NmFjYzcgbGVnYWN5LXRydW5rCisyMDI1NiA2YjhkOTFlYTlkZTM0MzQwZmRkYTZkNDJmMjEyYmRkZWUxYWQ5ODQ1IGxlZ2FjeS10cnVuaworMjAyNTcgZDEwOWVjNjY3ZWMyNWQ4ZmVkMTA2MmEzNDc2ZjBmZTY4ZjE0MjFhOCBsZWdhY3ktdHJ1bmsKKzIwMjU4IDhhM2JhMTBmMTBmNmEyNTQ5MTZhZDQ4MGVhYmNhMTIzODViN2MxYjAgbGVnYWN5LXRydW5rCisyMDI1OSAxMWU4YmI0ZDg0NWQyYzBiZTUzZmUwMWFiYmY1NjYzODExN2RjM2E0IGxlZ2FjeS10cnVuaworMjAyNjAgNTA3OWQ2ZTNiNjE1MDgwMDc4NjY1ZmNiNGQ2MmZkMjQ3YmQwYjJiMiBsZWdhY3ktdHJ1bmsKKzIwMjYxIGUyYjNlNmQ4NTM0MzBhMjEwZmNiYWFmZWZmYWUzYWQxMTUwMzMxZWIgbGVnYWN5LXRydW5rCisyMDI2MiBiYjc1ZDkzZjZhMzFjOTMzNGRlYTZjMzVhZWQ4MGJkYzQ3YWFkYTc3IGxlZ2FjeS10cnVuaworMjAyNjMgZjM5OGU1ODU2ZmE3NDY1MzA1NWI4YmJjMzhhNjM5MzI5MDAxYjFmNSBsZWdhY3ktdHJ1bmsKKzIwMjY0IDY1ZjM2MzIzNmVjZjdmYTZhODM2YWE5ZjM1Y2RjMWUyMzc0MjE5MDEgbGVnYWN5LXRydW5rCisyMDI2NSBlODQzZWVlN2EzM2U4NjI1YjA2MjZhNDk3ZmZhNjQyMjMyOWYxYjVlIGxlZ2FjeS10cnVuaworMjAyNjYgZDM4Mjc5MjI5MDljYTI1NzU0ZGI5Yzc2NTFlMWQ1MTU0NDE1MmNlMiBsZWdhY3ktdHJ1bmsKKzIwMjY3IGU1NGUxMWMzMGU0YjE1NDk3YzNmNzJjZmU0NjllMTg0ZDAyMDNhMDIgbGVnYWN5LXRydW5rCisyMDI2OCBjYjQwZTc3MGM5MDNkZDhlMGI5OTg5OTFmMmExMzRiNWY5MjQyMWFlIGxlZ2FjeS10cnVuaworMjAyNjkgMGM4N2FjNjc0Y2UxODIwNjc0YTk4M2Q0Y2Y1ZDIzMWFlN2EzNDQ4ZCBsZWdhY3ktdHJ1bmsKKzIwMjcwIGE4MGE4NDdmNWY0ZWJhNThiZTEwMDk1MDQ0NmZiYmM1NGZkMTYzZjYgbGVnYWN5LXRydW5rCisyMDI3MSA1ZjY4NzU0ZWIzYjZiYzgwMDdjMzNlOTcwZmQwZWNjOTFiOGQ4MWRmIGxlZ2FjeS10cnVuaworMjAyNzIgMzBlNTI3MGRiMTI4M2JmOGNkYTBhYTg2ZDE2MjZkZmQ4NGMzOTIzZCBsZWdhY3ktdHJ1bmsKKzIwMjczIDBmNmQ4ZmU0YTNhOTFjZmQ3Y2RjNzA5MjdmNWE0MmFmZWNkY2NjNDkgbGVnYWN5LXRydW5rCisyMDI3NCA0NjIyYWY0ZGE5ZTI4MmZiMWRjZTc4YTVhZTMxMTljYTE5ZDQ0YTFiIGxlZ2FjeS10cnVuaworMjAyNzUgOGEyZGQ5Nzg3M2YyNTc2MmZmNGI3Y2IzMzk3MGZhNjI1Y2I5MzQ4OSBsZWdhY3ktdHJ1bmsKKzIwMjc2IGQzNjg1NTJjMmI3MjYxMDFmOWZmYjg2OWFjNjU2NTU3OWFkOTY4MWYgbGVnYWN5LXRydW5rCisyMDI3NyA3YzRiYWMyZjdiM2FiNzE4ZTIzOWI3MDM0NTFjZTg1MTYzYzlkNTllIGxlZ2FjeS10cnVuaworMjAyNzggOWIyOTdhZjE4ZTJmMzE1MDg0NDljZTQ2NjIzYjdlNDgxODdjOGZkNiBsZWdhY3ktdHJ1bmsKKzIwMjc5IGI2MTJiNTE5ZDQxYTU0Njk4NzZlNTMwOWE5ZTZjNzEyNmY0ZWM1MjEgbGVnYWN5LXRydW5rCisyMDI4MCBiYmNjOTgzNzMxMmU4ZTU5ZjZiYzU4MDlkNTNhODFmN2UzY2NhMzQ4IGxlZ2FjeS10cnVuaworMjAyODEgMGVjMDZiNDc1NWRiNzI0ZDUyNmVkYTM5MjQzZTNmMzRjYzc0ZjgxMiBsZWdhY3ktdHJ1bmsKKzIwMjgyIGU0YWJlNzRiYzk3MzJkNzI4YjMxYTVmNGE1Mzk1MTI5MDNjMmU2ZTcgbGVnYWN5LXRydW5rCisyMDI4MyA0NzFjZTBmYWE3NzUwZjQyMDhlNjk1MjE2ZWM3NDRkNzQxZGZiZmNmIGxlZ2FjeS10cnVuaworMjAyODQgYjJiYzU2MzMyMDQ1YWUwMjUyNWFiOTMxZjg4MmM0MDdjNTFlNWQ5YSBsZWdhY3ktdHJ1bmsKKzIwMjg1IDExMmJkNDdlMDc4ZDMxOTMwYzZjNWM4MTcyYTU4YTBlY2E2Njc0NzAgbGVnYWN5LXRydW5rCisyMDI4NiA2ODczNTQ5ZDQ4NGM3NTg1ZDYwYmQyYmYzNDc0ZTg4YTJhMzJiMDJjIGxlZ2FjeS10cnVuaworMjAyODcgNGIwNmU0ZGIwMDc1ZGMzYjA1NWJmZWZkYzE4ZTZjZWEzZTRjM2I0OCBsZWdhY3ktdHJ1bmsKKzIwMjg4IDcxN2IwYzhkZTcxZTlhMTI2N2VlNjJjYzhkOGZiNmQ3YzJmZmZlNDkgbGVnYWN5LXRydW5rCisyMDI4OSA4NjNlODA3M2M3YWFmMzFmMzE3YmU4NzJmZDFkNzY1N2RjM2MwOWFlIGxlZ2FjeS10cnVuaworMjAyOTAgYmViOWQyYjAyODQ2NTdiZTIzZmE5ZjliMzQ0OThlMmRhYTg4Yzg5ZiBsZWdhY3ktdHJ1bmsKKzIwMjkxIGNmOGE1OTVjZWMzMzc0OGI1MjM2MjQwNGY3MzM1M2E1YTZmODliNTggbGVnYWN5LXRydW5rCisyMDI5MiAwMDRjOWIwMzE5MjQxYzVjMDU0NmFjMTBjYjU5YjU0YjkwNDdiN2U0IGxlZ2FjeS10cnVuaworMjAyOTMgNzA3NjNjNDc1MmUyZmEzZjdlYzZiYTM5MDEyNTA0NmJmMDAzOWE4OSBsZWdhY3ktdHJ1bmsKKzIwMjk0IDEzODU3ZmIzMzAxNzcwY2QyY2E0Mjc2YjFhMGJmMjU5ZDQxMGFmYjkgbGVnYWN5LXRydW5rCisyMDI5NSA4NTNkNmE5N2I3ZDliNGQzODZjNzM1ZjZjZjBhMjcwYzZlODY1MzViIGxlZ2FjeS10cnVuaworMjAyOTYgM2I5MDVmMjhmMjI1Njk4YzhiNGQzZjU2YzUxMzA0N2Q5OGVhZjM5MSBsZWdhY3ktdHJ1bmsKKzIwMjk3IDM0ZWM1ZTJmYTM1NjFlY2JmMDNhZWFlY2E4NTk5YWZjOWMwNjIwYTQgbGVnYWN5LXRydW5rCisyMDI5OCAwMTc5MWEwOTc0NTZiNmZlNzUxMmU2MDhkNzExMTA0M2EyMTJiMGU5IHJlbGVhc2UyMC1tYWludAorMjAyOTkgYWZiYjY1YjYwZmEyMDM4MTkzMjQxYjUwNTY2MjQ3MGU5MzI2ZWE5MyByZWxlYXNlMjAtbWFpbnQKKzIwMzAwIGM5ZTA3YmMzMDNhMjNlZDBjNzgzYjk5MDYxYTMxOTI3MGQ2OWMyMmUgbGVnYWN5LXRydW5rCisyMDMwMSA5ZDc2ZDg1NTJjMzYxMjc3NGQ2YWFhZjQ3OGU2NDc5ODZkMGUwZjkzIGxlZ2FjeS10cnVuaworMjAzMDIgNjk0YjhjM2YyNWU3YzZkMzczMWYxNDI1NTlhODQyYThjNDg4N2QyNCBsZWdhY3ktdHJ1bmsKKzIwMzAzIDg0YTNkNzBlYzZmNDRkNjVmYWViYzc0OWQ4ZTkyMzk4MjU1OTU1ZDYgbGVnYWN5LXRydW5rCisyMDMwNCBmOTY3NDg5ZWUzYjY0YmFkODZlNzQ1ZDE1ZmQ4NjdlNGQyNWJmNmYzIGxlZ2FjeS10cnVuaworMjAzMDUgYmQ4NDRiMjBiOWM4NTQ0ZmI5MTk5Nzc4YWZlNzlmMDg5NzJkZTE0ZSBsZWdhY3ktdHJ1bmsKKzIwMzA2IDM3MDRiZTNkYjMwMjg2MjYwZjYyOGJiZmI2YWJjMThlZmFlZGU0ZmEgbGVnYWN5LXRydW5rCisyMDMwNyBiYWQyZGFlYjc0NDBjMzMxMjA0MmQ1NmY4NjQwZmVmZDJkMjdjZjZhIGxlZ2FjeS10cnVuaworMjAzMDggNGM0OTdjNWU3MmFkY2UxZGI4ZGNiODVhMjZjNDkyMTMwZDAyZjFkNiBsZWdhY3ktdHJ1bmsKKzIwMzA5IDY1YTkyMjUxZDZiODVjYWMyMzU5ZTI2M2Q4MzU4NjZhN2JkMTE4ODkgbGVnYWN5LXRydW5rCisyMDMxMCA5ZGNiNGJkNjUxNTQ4ZTg3Njk5YTYyMGYwYmM2ZjkwYjNkYWQ5NmMzIGxlZ2FjeS10cnVuaworMjAzMTEgYjhmY2Y0NWRjNmZkYzc0MzkyM2RiNzY2NGM5NDA0YTJiNTdjNTU5YiBsZWdhY3ktdHJ1bmsKKzIwMzEyIDk2NWVlYjQ0ZTQ1NDQxMjFjMjIxNzQ2OTBjMDI2MTNlMTJlMGMyZmMgbGVnYWN5LXRydW5rCisyMDMxMyAzZmFkYzM3Y2ZhOTIwOWVkNDA2NzZlNWEwOWMyNjQwYTM3NzZjNTZiIGxlZ2FjeS10cnVuaworMjAzMTQgNjQzOTYyNDNjMTE0MWRjZjkwODc2MGQ3M2MxZDQwNzA0NWJiYjQzZCBsZWdhY3ktdHJ1bmsKKzIwMzE1IDM0MDJjNzE2NmQzMDgxMTQ0Y2NhNGNiZjI0MmVlYzAzNjg1NTg0NjQgbGVnYWN5LXRydW5rCisyMDMxNiBmM2Y5NjQxNzQzYTA3ZTg4ZGY5ZWZjNzk4NjUyOWFiY2YwZGM2OWI0IGxlZ2FjeS10cnVuaworMjAzMTcgNjMyYzRkNWI3NWI3YTk2ZGVjM2ZjYTMyZDNhYWFhYjlhMmFhMjEyMSBsZWdhY3ktdHJ1bmsKKzIwMzE4IDdjNjE3MTU3NTJiZTIwMjZhYmI1OGIwNDUxMzg0MDc5MDEwOWQwMWQgbGVnYWN5LXRydW5rCisyMDMxOSA4ZWM3ZjY1NmY4MDgzMWU2ZGM2NjEyYTI0M2U1ZTU2MTA3NzlmMGEwIGxlZ2FjeS10cnVuaworMjAzMjAgMjU3YjU3YmNjZGYzYmU4OTRiMmJkOGZkOTc2N2VkNzkyMTYzYTY0NyBsZWdhY3ktdHJ1bmsKKzIwMzIxIDMxNjBkYTRkZGQ4OTFhZTBiZTgwNmZkMWZmZTJlYjY3Y2EzMDc3OTggbGVnYWN5LXRydW5rCisyMDMyMiBlYzA3NWNjODJiZGIzZjU3YzJlZjViZjc4ZmNkZDQ3MzhmMzdiMmQyIGxlZ2FjeS10cnVuaworMjAzMjMgYzJmYjJkNDc2YmQzOGNkZjI3YWIzODVjMzQ5NDgzNjI4MmJiMDA4NSBsZWdhY3ktdHJ1bmsKKzIwMzI0IGU1MDA5MDI1ZTYyZjJjMWFmOThmYzM0NzBmMzAxNWZhMDJkYzZmMTQgbGVnYWN5LXRydW5rCisyMDMyNSBiNGIzY2ZmYzdjMzU1ZmYyMTRhNGI0NGQ1N2YwMGYxYWRjZTBkZDg2IGxlZ2FjeS10cnVuaworMjAzMjYgYmZjMTBhODA1NDViYWFkODg5M2IyYjkzMTQxYjhjNDRkNmQ4YjcyNCBsZWdhY3ktdHJ1bmsKKzIwMzI3IGIwMDVlYjliYzg0MmQ5N2E1YTMxNWQyMWQ5NWFjMTFiYTJlODFmMTMgbGVnYWN5LXRydW5rCisyMDMyOCAyY2NjMGYyYzllMWYyODFmYTJjZmNjMWIyZmEwNjNjNzQyZDkxNTg0IGxlZ2FjeS10cnVuaworMjAzMjkgMGYzMmFiNWFmZmY4OWU2NDRiMTY3NzA2MTRkODVhYTY2MjY2NTI0ZiBsZWdhY3ktdHJ1bmsKKzIwMzMwIDk4ZjY5MjQ1YmI2OWNkMjQ3YWZkNDMyOTg0NDZiY2Q5M2FiYjc0NjcgbGVnYWN5LXRydW5rCisyMDMzMSAwMmQ2OWE4ODcwMzg5MTIxNGI3ODcyOGM1MmMzNGFhZjFhNTRlYTBjIGxlZ2FjeS10cnVuaworMjAzMzIgNDFhNDIzMjk0Y2I1MTMxMjg1OWE1ZWM2MDY2ZGMzMmZjM2I1ZGE2OCBsZWdhY3ktdHJ1bmsKKzIwMzMzIGZiYzEyZDZjZDA1MTFiOTRlNjQxNGIwNWQ1NzBlMDM5YjlhZmZmZTkgbGVnYWN5LXRydW5rCisyMDMzNCAxY2RmZjI4MzhhMTc4ZWY0NjFkOTI0YmI5Zjg3OTY0NTRiYTcwNGIzIGxlZ2FjeS10cnVuaworMjAzMzUgNzRiOWZiMWM5NjMzOTc5MjhhM2U1YzBlYzhkYzhmOWFlNTEzMWEyZCBsZWdhY3ktdHJ1bmsKKzIwMzM2IDJkNTIxNDIwZGI4ZjFlMjkyYmUyZDRjMWNkNzExOGRlMWFmYzNjZDkgbGVnYWN5LXRydW5rCisyMDMzNyA5MjM3ZjU4ZGNjMTkyMjhmMDkwZDVmNjMyZWQ4MGEzMDVkNmJlNTMxIGxlZ2FjeS10cnVuaworMjAzMzggMTExOTAyYzk5MWE5MDRmM2NhMmUxNDAyNGZhNzhhMGY1NDQ1NDQwNyBsZWdhY3ktdHJ1bmsKKzIwMzM5IGYwZjA0NjdhMzMzNDJkYWM4Njc2OWVjMTdiOTEwMzc4NDE4YzA2ZjYgbGVnYWN5LXRydW5rCisyMDM0MCAwMTg0YzUwYTg3NTEwYWRhODE3ZWI1OTlhZWE1OTM5ZWI0NDVhYmRhIGxlZ2FjeS10cnVuaworMjAzNDEgMDQ3NWM4YjcyMjNiYTU4Yjg0NzE5YTY5ODcxYTIxZmY3OTE5NzY3ZiBsZWdhY3ktdHJ1bmsKKzIwMzQyIDQ1YzE4MjUxOTZlZDY2MDNhN2QyZGE1ZDU5ZTIwYWEyODk4MTgyYWQgbGVnYWN5LXRydW5rCisyMDM0MyA1MWM4Y2UxYTJlMjU5OTUzZjI5ZGNmMjZjNmIyMDFiNWZjZTdmODdmIGxlZ2FjeS10cnVuaworMjAzNDQgZjc0ZjVhYWZkYzdlMjUwYTVkNTRkMzM1MjM4ZjhmOTQ1ZTRjYTlhNyBsZWdhY3ktdHJ1bmsKKzIwMzQ1IDk5NDFjNDQ4MTZjMWM3MzA2ODliZDRmNWZhOTQxZTdmN2Y2ODQzYzMgbGVnYWN5LXRydW5rCisyMDM0NiAxYTJmZDVjNGRjZjU3MGZkMTBkY2U0NDM4NTEzMDBhODdkMTQ2ZTM2IGxlZ2FjeS10cnVuaworMjAzNDcgZjNiNmFjMTI4ZGU5ZjEzNzViOGE0ZjhkMDc0ODc3OGY4OWE4ZDJmNyBsZWdhY3ktdHJ1bmsKKzIwMzQ4IGQ5MTU3Nzc4MzMzNTc2NDE0NjFlNDhkOTE2ZjMyN2JjMWNiY2M5YmIgbGVnYWN5LXRydW5rCisyMDM0OSA0ZWUzNDZiMzU1MjRhODg1ZGRkZWU0MDk5Y2JhYWExOTI1ZTQ0ZjM5IGxlZ2FjeS10cnVuaworMjAzNTAgM2JkYTU5MDcxMzg5NTEzNDE3MDQxZTg4MWUxYjk0Y2ViZTA4ZGY1NCBsZWdhY3ktdHJ1bmsKKzIwMzUxIDY2YTdjOGM4ZGQyNzIzOGY2NDQzMGIyMmRmYzBmMjg2ZGY3ZDczYmYgbGVnYWN5LXRydW5rCisyMDM1MiAwZDA1NDZiZDg0NDhhYzUyMjBjMDFmZGI4M2IyMDE4ODdhY2U3ZTllIGxlZ2FjeS10cnVuaworMjAzNTMgZTg0NmU5NjBlN2Y2MzFmYmIzYWEwNjFhZDUxYzNlNTAwZmExNDIxMyBsZWdhY3ktdHJ1bmsKKzIwMzU0IDk5YzQ3MWNlZDE3MDE4NWNkZmNkODJkYmRlNjA0YjdjNzdlZDUxZTcgbGVnYWN5LXRydW5rCisyMDM1NSBhMDA0YzYyZTY5NmU2ZTIyOTEwNmY3YTM4NzgxY2ExOTMxZmJiZGI1IGxlZ2FjeS10cnVuaworMjAzNTYgZTg3NDFkYzM2YWQxM2I5MTk0MTk0ODk0ZDYyYWMyMjkzZWE4YTM5OSBsZWdhY3ktdHJ1bmsKKzIwMzU3IGMyOWVlMzczZjcxOGY3OGFiNDIzNDZkNWFjYzE0ZWE4Y2I2M2I1YWMgbGVnYWN5LXRydW5rCisyMDM1OCBmMWVjNTJlZjc3MWMxMWE2YjRiZGM0Yjc4YjVhMTU2YTNmNzBhOWJkIGxlZ2FjeS10cnVuaworMjAzNTkgZjI0MjcyZTg5NjIxNTI1Nzg4NTFkYzkxMjkwM2UzYjIwMDVjZTVhNCBsZWdhY3ktdHJ1bmsKKzIwMzYwIGI4NGYwODRiMjk5MmE4MWU2YjA2YzIwOWJiM2NlYzM1ZjcwNjc2MjEgbGVnYWN5LXRydW5rCisyMDM2MSA0YjllNjg0YmViYjg3MmViM2JlMjVmZDQ3ZWU1YWMzM2U2YzViMDUxIGxlZ2FjeS10cnVuaworMjAzNjIgOGFhNGRlMjA3YWUzNjRiNDRiYWFjMjI4NjhlYTliOGJlMDMyMWU2YiBsZWdhY3ktdHJ1bmsKKzIwMzYzIDkyNmI2NGZiYTVlN2VkNTlhMmY0MDEzYWNkNjM0MzEzYjkwNTRkMmYgbGVnYWN5LXRydW5rCisyMDM2NCBiNGUyYjhlOWYxZTY4NDIzNjhmOTZmYTk0Mzk5NWYyNTkzMWUyN2E0IGxlZ2FjeS10cnVuaworMjAzNjUgMjRlODFiNDMwNjdkYzY1ZjVhYTIzODE1ZDA5NDBhYzQ0OGEyZDgyMCBsZWdhY3ktdHJ1bmsKKzIwMzY2IDI4ODhmYzYwYmY5YWNlYWQ2NGRlMTI4M2QxYTc2NjViYzlkOTIwZDAgbGVnYWN5LXRydW5rCisyMDM2NyAzMzlhOTNiMDA4NGM3NWIzYWM0MTc4NmQ2MjMxZmU1NDU1NTg2NzY4IGxlZ2FjeS10cnVuaworMjAzNjggMTQyNTQ1ZDJhYWZjODBhNzc3M2E2ZjkwZmE3NTAwYmNmYjhiNjU0MCBsZWdhY3ktdHJ1bmsKKzIwMzY5IDRhYjU4NjI0NjUzZTdmNTVhZTFiOTA0YTI4MGY5MjE1YjlkMzZmNGQgbGVnYWN5LXRydW5rCisyMDM3MCAyNWY1NWIyZTM4YWNjODNkMmJkMmVhMTU0YTE3N2Q5ZDlhNGI1MTBkIGxlZ2FjeS10cnVuaworMjAzNzEgMGI2OWUxN2UwNTVmYTc0ZTI1OTdjZjNlNzZhZTExZDAxNmE0MTA0YSBsZWdhY3ktdHJ1bmsKKzIwMzcyIDYxM2RjZDU0NzZiNmU2ZGE5YmZmZWUzM2JlZjJmMmI0ZTczZDEwZTAgbGVnYWN5LXRydW5rCisyMDM3MyBlZDA3ZDZhODczZTczNDBjNWVkOWNhMmEwZjkzOTJiZDhjZThiNGY5IGxlZ2FjeS10cnVuaworMjAzNzQgMDRkYWVlM2FiNjI3YTBhNjkyYmFiOTIxOTRkNTJiOWM2YjQ5Mzc4MyBsZWdhY3ktdHJ1bmsKKzIwMzc1IDk5YWQwMjU3Yjk0MmRlZGMxN2M2YjJkZmRlMGFmOGU1NjAwZDc4YmIgbGVnYWN5LXRydW5rCisyMDM3NiAyMjY1MDMyZWZjOWYwZjRiYzYyOGRiMjRmOWQzZjYzNTUyOWU0MzdkIGxlZ2FjeS10cnVuaworMjAzNzcgNzE3NTJhNDFiNTdmOThiYTZjYzY1ZmQ4OGIxMTE4MmE0ZmNjY2I4NyBsZWdhY3ktdHJ1bmsKKzIwMzc4IDdlODI5ZGQwM2Y5N2E4YjY5Y2YwOWZmMWFhMmZjNjNmMzMxOTVjZmMgbGVnYWN5LXRydW5rCisyMDM3OSA2NDBhZmZkZjk5ZTUwN2VhNTE0MTJlYjg3MjcxOWQxOWRhYzJlMDFjIGxlZ2FjeS10cnVuaworMjAzODAgNzRlN2U5M2VjZDQxNDE5ZGE2OTU2YWRiZjJjZjdhMWRjNzc2YzIzYiBsZWdhY3ktdHJ1bmsKKzIwMzgxIDk2YmQ0YTg0ZjFhNDk0YzI3ZTVjNGFjYWIzZGI1ZDQzZjZhZDE1YmUgbGVnYWN5LXRydW5rCisyMDM4MiBmN2MxMmJhNDI3MzcwOGVjOGE5MjkyYTc3MDI3MDJlNjA0ZDI0MmVlIHJlbGVhc2UyMC1tYWludAorMjAzODMgNWY0ZmNmYjhkM2RkMzY2NzAxYWNlMzA4M2I0YjgwMmY0ZmEwNTA0YSByZWxlYXNlMjAtbWFpbnQKKzIwMzg0IDM1MTM5YTk0NTRkNDM4MDE1YWU3YjIwYTcyNjJkOTI1ZjNmNjk0MGEgbGVnYWN5LXRydW5rCisyMDM4NSAxNWI3NjA5ZTNlMmM4OTFkNGQ2MDIzNGZlNjBmNWE3MjZiZmM3NDM3IHJlbGVhc2UyMC1tYWludAorMjAzODYgYjY1ZDA4OWU4ODQxODkwYTEwZjdiODhhZDllYWY3YTZhMWVmMWYwNyBsZWdhY3ktdHJ1bmsKKzIwMzg3IDZlZWE0Y2ViNzUxNjUyODJlMmI5YjgyOWM2MGNiMmZlODI2OTM0OWYgbGVnYWN5LXRydW5rCisyMDM4OCBhMzQyOTNjZWQ2M2I2MTA5ZjQ3NWU2NWQ4ODM2NmYxMmMxZjdkNGNiIGxlZ2FjeS10cnVuaworMjAzODkgZTUyNmQ5MjQ4OTY1ZjQ3ZDQ3MzVjYjU1NGVmMDkxNTQ4ZGEwMGJiNiBsZWdhY3ktdHJ1bmsKKzIwMzkwIDBiMDYwY2Y3NjJjZTczODUxOWU5MmU5ZWE0ZmM0NzJhZDgyNzIwZmEgbGVnYWN5LXRydW5rCisyMDM5MSA2YTM3NzYyMDE3NTA3NWZkM2NiOTc2ZGZkMDFlYjQ1ZmEzYzdhNzM0IGxlZ2FjeS10cnVuaworMjAzOTIgZjcyZGNkNjdjY2NiMDljYjFhODAxNDlkNDFiZDU2NGU0YTVlMGMxYiBsZWdhY3ktdHJ1bmsKKzIwMzkzIDgwNmZkODgwMTVmNTNiNzM5MTYyNjZlYTRhNmE2MTcxMmU4ZmQ2MzIgbGVnYWN5LXRydW5rCisyMDM5NCA1ZTk5YTFkMGVhNGRkNzkwNDRhNzBjMDExNGQyNzE4N2RiZjFlOTQ5IGxlZ2FjeS10cnVuaworMjAzOTUgNjFkOTU0ZTdiZTk5MjNhNDM0ZWM5NzgzYzY4MDdlM2U2NDQxYWVlOSBsZWdhY3ktdHJ1bmsKKzIwMzk2IGM1YmFiNzk0ZGNkZTY0NDljMjg1N2IwYTJjYjY3MjZhNjI2NzM2ZjkgbGVnYWN5LXRydW5rCisyMDM5NyAzMjdlZmI1OWRiY2RlN2I2MGNiYTM4YzNhYzljMzhmMmFmNzMxNzdmIGxlZ2FjeS10cnVuaworMjAzOTggOGUxNDE1ZWY5YjI4ZDgzMjZlYmZlMjViY2JjNWM0MTFjNjIzYzY3MCBsZWdhY3ktdHJ1bmsKKzIwMzk5IDExMTUzYzE0MTk5OTMxYWFhNjQ2YjExNjJjNzlkN2ZhNTk1NDgxYzMgbGVnYWN5LXRydW5rCisyMDQwMCA1NWVlMTVjNGVlZTY4M2Y0YWFhMjUwYjA5NDgyZjVlNGI3MmViNDJkIGxlZ2FjeS10cnVuaworMjA0MDEgMDY4ZmI1OGExMWQ0ODY4MWMxNWFlOTcwM2I4NWMyMDIyYWZhYzk3MiBsZWdhY3ktdHJ1bmsKKzIwNDAxIGQ2MTEyNzZlOWFkNTNiNWQzMmQxZTgwNjVlMWQ4MTFjMzJmN2Q5NmYgbGVnYWN5LXRydW5rCisyMDQwMyA3YjY3ZWIyNmIzOWFiNjhiZjU2MmY3MzYyZGM5NWRiNWU0YWU2NDI3IHJlbGVhc2UyMC1tYWludAorMjA0MDQgZmQwNjgzY2I3MzAxMmZhYWMwNWZiM2QwYzkxNjY0OGQ0MmQxMzZmZSBsZWdhY3ktdHJ1bmsKKzIwNDA1IDkwYWUzN2ZmNjE3ZmNlYjYwNDE2MzkyOTAxNzFjZjVkMzM1Yjc5ZTcgbGVnYWN5LXRydW5rCisyMDQwNiA3NmZhZTYxNDUyNmNlYzFlYjZiNTVkYTk1YjljNmVkZTJjNzA4N2FhIGxlZ2FjeS10cnVuaworMjA0MDcgYzY1MWNmZDBmZmQ0ODhhNWNjMzdjYzlkOGQ5NjBiYWZjZjc1NGU5YiBsZWdhY3ktdHJ1bmsKKzIwNDA4IDc3M2M2NGQzOGFjNjg5N2NlNGU5OThhYjRkNmVhYTYwNTIzOGRkZjUgbGVnYWN5LXRydW5rCisyMDQwOSA4MTgyM2NmYjViMTQ2ODIzYjM2MjE3MmRkODI4YjNkMDNhODFhOWZmIGxlZ2FjeS10cnVuaworMjA0MTAgMzNkNzFlODBhMDljNzczMTkwOTRkZGFhMDc0MjBmNjk0ZTMyMTlkMiBsZWdhY3ktdHJ1bmsKKzIwNDExIDFlMjNkOTFjMGE4MjFjMDZkYzY4MjcyYjQwMmFlYzBmNjY1ZmQwNWYgbGVnYWN5LXRydW5rCisyMDQxMiBmOTM5Y2U1MmE3MzRkNWQyZjZiMDRjMjA2ODBkNzBiMTNiMTM2Y2VjIGxlZ2FjeS10cnVuaworMjA0MTMgZjlkZmQ1ODdjMTQyYjY4ZGRiZGZlOWNjZmM5ZGJlMzdjNzUxN2I5MSBsZWdhY3ktdHJ1bmsKKzIwNDE0IDA1YmFkMmYwNWJmYTZlY2VmMmYxNGU0MDg3M2FmNmJiOGQ3ZmRiNWQgbGVnYWN5LXRydW5rCisyMDQxNSBjOWNhZTVhNzBiNDgyOTcyMTI1MDdlYmM0OGJlYjE0N2I5OTBjZTA3IGxlZ2FjeS10cnVuaworMjA0MTYgYjI4NDBhM2M1NjAxZDc3NDMwMDAyNDFmNjg3MWU0NWZiZjkyZTQ5NSBsZWdhY3ktdHJ1bmsKKzIwNDE3IDgzODljNGRmNDg4ZGIwNWIzZTAxNTBiYjc4NzNkMDM1YjJlMzY3Y2IgbGVnYWN5LXRydW5rCisyMDQxOCA3OWVmYmM5YTAzZGVmYzMyZTM3MDA5ZTM5ZDZhNWEyN2NmYTYzMjQxIGxlZ2FjeS10cnVuaworMjA0MTkgNWZiMGM0Njc1M2Y5ODMwMTA3NzNjMjkyOWRmMTc3MWUyNWI4N2MzNCBsZWdhY3ktdHJ1bmsKKzIwNDIwIDBmNWEyNmFhNGU0YTMwYWU2NGIzZDNkMWY2ZGY3OTJmNDBhNDk1NzQgbGVnYWN5LXRydW5rCisyMDQyMSAwMWJlMDgzMzMzMDhlYTM1M2JjNDdkNmM2NDkwYzIzMThhNGYwYTA1IGxlZ2FjeS10cnVuaworMjA0MjIgNTAwZDUzNDYwZjU2MDgzNThiMDYxYWE1ODYyMzkxZWVkNTBmMWM2MSBsZWdhY3ktdHJ1bmsKKzIwNDIzIGM0NDQyZmI5OWQyNjVmYjE0OThjOTEzODVlMjQxY2M5NTg2MDllMjcgbGVnYWN5LXRydW5rCisyMDQyNCAxN2E3MWQyYjgxZjdjZjc4NTQyY2IzNTM4Zjc5NjkzODk4ZTgxZjA4IGxlZ2FjeS10cnVuaworMjA0MjUgYzQ5N2ZhM2ZlMzhhMmUzYzg1ZDkyNmZlMWNhZjM5ZjUyY2RjNGNjMSBsZWdhY3ktdHJ1bmsKKzIwNDI2IGRkNmJlNjI1YTkyMzNmODU5NTkwMjE4OTRiZTA5M2IwMjU5MzZmMjcgbGVnYWN5LXRydW5rCisyMDQyNyAxY2ZlZjhhZGUyNzA3MzkwMzQwZTk3MjJiNjBmZTM0ZGMxY2YxMzg0IGxlZ2FjeS10cnVuaworMjA0MjggMDI1OTI5YzE1MzFkM2Q3NmY2ZGU0Y2Y3YmYyY2U5MWRjZGM1ZWY0ZCBsZWdhY3ktdHJ1bmsKKzIwNDI5IDgzYzdiNGI3NTY2OGZmY2Q0NzIyZWVkNTEzOWMxMGY4YjdhZDBlMjQgbGVnYWN5LXRydW5rCisyMDQzMCBkMmRhNjgxY2NiNTRkZjRiMGIyZTZlM2RlNzYzYzNjMGM4MGJhYTc3IGxlZ2FjeS10cnVuaworMjA0MzEgZTFjNTA3Y2RjNmYxZjdjZmQ3NzAwZThkZWE0MGY5ZDNmOWViZjU0NiBsZWdhY3ktdHJ1bmsKKzIwNDMyIDE2MmZhNmIxMzY2ZjNiNGE0N2MyY2RhYjBiNDkyYTc5NzMwYjhmODYgbGVnYWN5LXRydW5rCisyMDQzMyBmMTdhODMwZTI1ZWFiMzRlMjE4MDE1NTczYTk5YWMwZWE4NjZhNWNkIGxlZ2FjeS10cnVuaworMjA0MzQgNTJhOGUzNWRmMTI3OTk0YzI4YjVlNTExNzFmOGNjMGU5Njg0NjI1ZCBsZWdhY3ktdHJ1bmsKKzIwNDM1IGUwYTVhNjNhZDc1Njk2MWJkYjZiNDRiMDA4MDQxZGE0ZDYyNTNhYmEgbGVnYWN5LXRydW5rCisyMDQzNiA0NDkzMTk5ZDJiOTU2ZWMxOGNiYmMyYmYzM2U4MjM0MDVkNjkwZTI2IGxlZ2FjeS10cnVuaworMjA0MzYgZmYwNjVlNjc0YWY2YzlhYjg5NWJkOWVmZjdkOWU5MDM5YTM3NmM3ZCBsZWdhY3ktdHJ1bmsKKzIwNDM4IDQ5MDg1YmI3YmNkOTk0MTY5OWM5YTBhZjI5NWFkZGRkNjUxNmMxNDMgbGVnYWN5LXRydW5rCisyMDQzOSBlNTIyZWQ4MGZiMzkzM2E2MWI2YTVhYTBjN2JmY2VlNWIzZmM5YTU3IGxlZ2FjeS10cnVuaworMjA0NDAgZGE1ZWFiMzMxNDdiOTU5NWIwNGMzMjRiZDc4M2QzZjJhNTA1NTBjOCBsZWdhY3ktdHJ1bmsKKzIwNDQxIDYyNTI2OTNhZmQ5YWYxY2JkOWQ2ZDY5NDZhMzIzNzliMDZjZGU4YzMgbGVnYWN5LXRydW5rCisyMDQ0MiAzNTRhNTcxYTA1YjRmNGU1MTA4MTg3YzUzZTQzZGQzNTAyOWMyOGU4IGxlZ2FjeS10cnVuaworMjA0NDMgNjkzZmE2YjQxZGZhNWUwYmNlNmEyNWNmNTUwODdjY2JkMjBkOGQ2MiBsZWdhY3ktdHJ1bmsKKzIwNDQ0IDg0ZDc4MzliZGNmNjNkYzBlMzU5NGFjODlhNDk3YzgxZGU3MDlmZDUgbGVnYWN5LXRydW5rCisyMDQ0NSBjYmM5Zjg4NjU1OTU4OWNjNGQ0MDg5OGIxYzA4MTAxY2YxZmM5MzdhIGxlZ2FjeS10cnVuaworMjA0NDYgMDU0MzZhNzQwMTJkMWM2MDI2ZDkyOTI1MWVhY2FkNmFjYTc5NjI3YyBsZWdhY3ktdHJ1bmsKKzIwNDQ3IDFkOTk1MWQxMjZmNWMzNDU5MDhlMzIwNTI1NDVkNzhlMzY4MzBhYzggbGVnYWN5LXRydW5rCisyMDQ0NyAwMjBlOTVkODE4MGQ3OTQzZmU1NDcwMWUxZGIwYTdkN2Q4N2UyYjFlIGxlZ2FjeS10cnVuaworMjA0NDkgMTk2ODZhNjI3OWY0NzVlYjg3MTE3NThiNGNhMzNkMjc2M2MyNmRiNiByZWxlYXNlMjEtbWFpbnQKKzIwNDUwIGZmZjMwMjIxZDE5YTM0YzBlZWJmZGRkYTMwYjY1OTc1YTY4NmM0OGUgcmVsZWFzZTIxLW1haW50CisyMDQ1MSA3MzJkZGVlNjg5NTcyMDhiMWU3ZWZhMjgwOTk3MzM0OTc1MGM4YzQ3IGxlZ2FjeS10cnVuaworMjA0NTIgZDA2YmJiOGM0OTNhYzAxNjk3ZWVmNDAxNDg0YTFiNGM4NWQ5NGRhNCBsZWdhY3ktdHJ1bmsKKzIwNDUzIDI4YzE0YTc5YWQyMjViNTMyMTVmM2NmNDQyNzljZWZhMjBlODY3YWMgbGVnYWN5LXRydW5rCisyMDQ1NCBkYjkyOGEyNzdmOGIyZTg0ODUzM2QzOTlkYmIyNjIzMjU4NzA1NzhkIGxlZ2FjeS10cnVuaworMjA0NTUgMzYyMzJmNTQzMjIwZWVkYzhkM2FmN2ExMTQ5MzM2MzY1N2Y3NmY2ZiBsZWdhY3ktdHJ1bmsKKzIwNDU2IDg5NWZjNWM5NTc2M2VkMTBkN2E0ZDc0ZGI5ODEzYzExZGExNDczOGMgbGVnYWN5LXRydW5rCisyMDQ1NyAyODM2ODNiNWU3NjdjNzkxNGU4MTgwZWVmZTlhMDgwYzZkZTM2Nzg4IHJlbGVhc2UyMS1tYWludAorMjA0NTggYjZmMDhkMjc5NWI1ZTI0NDJjOGZhYWYwNTFkOWY5ZWQwZWQ0ODc2NyBsZWdhY3ktdHJ1bmsKKzIwNDU5IDg4YTVjNzZmZmM4ZDNkOGFlZTM0MjQ5NjFjOWRjN2U1ZDJlMjMyOGEgbGVnYWN5LXRydW5rCisyMDQ2MCA0MmJjYWZmYTVkOWIxYWU3NDdiM2M1MmE2ODBmYzc5N2ExNTA0YmFhIGxlZ2FjeS10cnVuaworMjA0NjEgZDk0NDQyM2U2ZmZmNmRjMjYyNzY4M2NkMDJjZTg2YjBjMTBhYzQ4ZSBsZWdhY3ktdHJ1bmsKKzIwNDYyIGE5YWQ4ZGVhYzE3ZDViMmZiMjZkMzkxM2JiNmJjNDNjYTQ2Yzg5MzcgbGVnYWN5LXRydW5rCisyMDQ2MyAwNDA1YzY1N2QyYWM5ZmRkZjJkZmY2N2Q4YmI1M2NlM2M4NzRkYzZmIGxlZ2FjeS10cnVuaworMjA0NjQgNzVlMzIyZDYwNGYxNmUyOTg3MmVlMzFmOWQwMWYxMDZkYWVkODc4ZiBsZWdhY3ktdHJ1bmsKKzIwNDY1IDNlYWMyMGFmZDU0YWFhZDc0NzcyNjZkYWNjOTA0MmY0ZDkyNjY1M2IgbGVnYWN5LXRydW5rCisyMDQ2NiA1MThkYjQ1NDg2MzAxOWE0ZThmYWJiM2MxNGUyYWY4OTQ1NDBjM2E5IGxlZ2FjeS10cnVuaworMjA0NjcgZDExMmYxMzVhZjhkMTQxOWYzNzY3MmVhZmNjZTk3NTRiODg3YzkwZiBsZWdhY3ktdHJ1bmsKKzIwNDY4IDBkZDVkNmQ5YTk1MmE2ZjExMTA1NDYwODM0NDUyYTRhYzIxYTM3ZTYgcmVsZWFzZTIxLW1haW50CisyMDQ2OSA3MDc0MzAzODQ2MDMxOTE3YzI2MzBkM2Y5OGNlZWE4NTZkMTNlYjc1IGxlZ2FjeS10cnVuaworMjA0NzAgY2NjNDRlNTQzYmVlZjE3ZWI4NDEwOGI0NTk4MWY3Y2UzZmM1MDIyNyBsZWdhY3ktdHJ1bmsKKzIwNDcxIDNkZDk4NjBlNGUyZDRiZDNlN2Q4MjQ2MjRjMjZkY2U0OWQ0Y2FmZTIgcmVsZWFzZTIxLW1haW50CisyMDQ3MiAyMjhmNGI4ZDE4ZjAxYTk5MDg3MzliNDFiNzJmYjY1NzUwODMzMzVjIGxlZ2FjeS10cnVuaworMjA0NzMgNDUyNjY2Y2IyODNkZjhiOTI0NWIzMzkwNWZhOGQ5OTE3ZjAzMGQ0NiBsZWdhY3ktdHJ1bmsKKzIwNDc0IGM2NTdhMzkzNzkwMjA3NzI2NWRlMGFkYzRhMDZlYjcxZTg1OTA1MWQgcmVsZWFzZTIxLW1haW50CisyMDQ3NSBjMTkzN2ZhYWJiMjM3NDhhNGUyODNlN2M0ZTkwYzdkMmFiNzdhMGEyIHJlbGVhc2UyMS1tYWludAorMjA0NzYgMmZjYjNmYTY3ZTNiNjg3ODY2NGM1MmEzNDc5Y2NjMWJiMzJhNzBkZCByZWxlYXNlMjEtbWFpbnQKKzIwNDc3IDBkNzBkYWViODk2ZTFlZjM5YjkwNDAzMjE5ZmYyNGM5ZTRlZmQwMmYgcmVsZWFzZTIxLW1haW50CisyMDQ3OCBmOTlkZjJhMGUyY2Y5YzYyMzExOGFjNmU5OTAwMThmM2JmYjBkMmM4IGxlZ2FjeS10cnVuaworMjA0NzkgZDE2ZGMyNmVjNDI3YWIwMGI5NTQwZThjODBjMTYwZTE3ODI1YzJlMyBsZWdhY3ktdHJ1bmsKKzIwNDgwIGM1ZjcxOTFjZTY3ZTkzNGJkMWYxMmJjNWRkMTdjZTNhNTg2MWJlOGQgbGVnYWN5LXRydW5rCisyMDQ4MSA3ZWI4N2NmMTZhNTM2MGMxNDRiYzUyOWYyOWYwMDMzYWJjYzQ2M2FhIHJlbGVhc2UyMS1tYWludAorMjA0ODIgNWE1ODA1YTQ1ZGJmNDk0MTExZTBhYWY4ZjQyMWVmNjMxZjcxODU2ZCBsZWdhY3ktdHJ1bmsKKzIwNDgzIDk2ZjliODZiN2IzZGRkNjc2MGQwZWEzZjc5NjExZmM1ODA0ZDE4MjEgbGVnYWN5LXRydW5rCisyMDQ4NCAxZTMwNDJhNGU2MGUyZTNjZjEyNDdmNzA5Y2NmYjlhYTlhMTgwNDc4IHJlbGVhc2UyMS1tYWludAorMjA0ODUgNDRhM2FjNTljMjY4ZGQ4ZWE1MjBmOGZhZGI4MDgyZTg4NWRlYjNiOSBsZWdhY3ktdHJ1bmsKKzIwNDg2IDFmM2ExOTRlMjFmMzFmNDU3ZmJkZDQzYjdlNmNjOTIyOTQzYzJhOWEgbGVnYWN5LXRydW5rCisyMDQ4NyAwMGE2YjA2MDUxMTM1MzVlM2YzMTg4MzhlNDg1NzE2NTg5ZjZiNmJiIGxlZ2FjeS10cnVuaworMjA0ODggNTZmMWI4YmE1Y2ExN2QxYmQyOTUxYWZjNTg1NWY0MTg0OTVkMTVlMSBpdGVyLWJyYW5jaAorMjA0ODkgYmY5NGFmMzk2YjFlMTA3YWQzY2Q4ZjExNjcxNmIyNzZlYTgxMmRiOCBsZWdhY3ktdHJ1bmsKKzIwNDkwIDFkNzI2ZjVjZDU3YTBmZGZiYTYyMmZhYWEzNWZlYzJkNjc2YzllMmIgbGVnYWN5LXRydW5rCisyMDQ5MSAxYjQ5YjE3N2ExMDVlMTNjY2ExZjFjNGU3YjQxZmVlYmM0NjVkYjI2IGxlZ2FjeS10cnVuaworMjA0OTIgMzJlN2QwODk4ZWFiODVkZTgxMzRmOTMyNjgwYTg1YzZlN2FiY2VjMCBsZWdhY3ktdHJ1bmsKKzIwNDkzIGMzYmIwZmYzOTZkY2M2MzNjYjY3MTk2YTQzNzc2MTMzZjcwMjNmZjkgbGVnYWN5LXRydW5rCisyMDQ5NCBlMTVhYjRlNjUyYWRjYjdmYTU1NmExODE1NGNjMTE2ZDQ5YzdiNTYyIGxlZ2FjeS10cnVuaworMjA0OTUgMWZlOGU1MGU2ZTFiOTgyZDdiN2RkMWY2OGU2YTk0ZDQwNmEzNWIzNSBsZWdhY3ktdHJ1bmsKKzIwNDk2IGI2ZGJmYzQ1YWM5YmYxOTAzOGUxY2QzMjU4ZDliOWFjMjA4NDJmMzkgbGVnYWN5LXRydW5rCisyMDQ5NyBmNjNmNzQ5MzY0ZWZmZGQzNmUwZjdjODQ5OTE4ZDliNjc5MzI5NTU0IGxlZ2FjeS10cnVuaworMjA0OTggZDYzOGU0MTljMzA0NTJkOWQxZDdmZTlhOTg2MWZkMGI5ZDQ1ZWYzZCBsZWdhY3ktdHJ1bmsKKzIwNDk5IGQzMjRhZTI4OTJmZmE0YWJmYjIxN2Y1YTU5ODlhN2QyZDA5YTkwZTkgcmVsZWFzZTIxLW1haW50CisyMDUwMCA0ZDdmYjI0ZmU3OTUzZjkwZjgzNjRiMmExZmFkOTI2YjJlNmJiYTY1IHJlbGVhc2UyMS1tYWludAorMjA1MDEgNGFiZDA3MmFiM2Q1YjViZGExY2Q2YWNiZDBhZjcxMjkyMjEzYWQ1YSBsZWdhY3ktdHJ1bmsKKzIwNTAyIDM4N2U4MGUxMWE3OTVmY2U1Njc2N2NmNDlmYWMzMjFhM2U3Y2RmMWUgbGVnYWN5LXRydW5rCisyMDUwMyAyMmFmMTVmODQxMGE4YjI3NzM0MzRkOWFmY2RhYzIyOGMwNDIxODQyIGxlZ2FjeS10cnVuaworMjA1MDQgNzlmMGNkM2E3MWExZTk5NmVkODQzYTIwYzcxNzBjYjhkY2JjOTJjZSBsZWdhY3ktdHJ1bmsKKzIwNTA1IDYyNGZjOTcxM2QxOGIxMTAxNTZkZmI2NjkyZDZhNWYyNjFmMGFmODQgbGVnYWN5LXRydW5rCisyMDUwNiAxZWIwMGExMjNhMGVjZDdkNjgxNDYyMDkwNDAzNWIwYmM1OTUxYmQ2IGxlZ2FjeS10cnVuaworMjA1MDcgYzE5ZDZkYjZlOTliN2FhYzdjZjdjOGVjOWEyMGZhYzU1ODA2ODI2NCBsZWdhY3ktdHJ1bmsKKzIwNTA4IDdkY2RiMTZiZDA2OGNjYWVjNTkxNzQ3NTZkNzk5YzNiNDI5Nzc0NDAgcmVsZWFzZTIxLW1haW50CisyMDUwOSAxODg1NDE3ZjQ1ZGEzOTg1NWI4YzQyMDI4MzZhMmY0M2IwMDY3ZTBhIHJlbGVhc2UyMS1tYWludAorMjA1MTAgYjgzMGRmMDgzYTlhZGQwNzA5YjY4ZDBiNTE5MjMxNmEwMTExODU4NiBsZWdhY3ktdHJ1bmsKKzIwNTExIDdhY2JhNzhlMWUwOTFkYmI3ZWVjMjkwODMwMTZmNWJiOTFjMTc4ZTYgbGVnYWN5LXRydW5rCisyMDUxMiBhYWM2NWY1MGRmNmZmMTQ0YjY3MDFmZTUxYTE2M2IzMGE2YmNkMDJjIGxlZ2FjeS10cnVuaworMjA1MTMgYjQ0YmE3YzAxMjE3NzVkNjQ0MTBjZjFjOTNkMDI3NWI1YzgyYTRiNCBsZWdhY3ktdHJ1bmsKKzIwNTE0IDFiNzMwYmYzZjhkMmFjMWQxNTIzN2VjOWVlZTRkNTJkMjY3ZGZjNmQgbGVnYWN5LXRydW5rCisyMDUxNSBlZmI1YzgxNGZmYjZhYjQ4NTZjZTgyMmJmM2NlYTczMTYzM2JjNmQxIGxlZ2FjeS10cnVuaworMjA1MTcgOTllOTQ2YTgyNjk5MjE3MDYwYjk1ZGE0NjJhYjdmN2FmYjAwNmIyYSBkZXNjci1icmFuY2gKKzIwNTE4IGUyYWY5MGI2MWIyYmQyNjc5YjRlYWNjZTNmODRkMzVkYzY2NGRjMTYgZGVzY3ItYnJhbmNoCisyMDUxOSBiN2E3MTM1YmNjYzhiM2UxYWQxNDg1ZTdmNzcwZWU2ZDQxMWRlOGEyIGRlc2NyLWJyYW5jaAorMjA1MjAgMGI1ZDNlMDMxMjAxOGFkY2NkMDkwMDc2ZWJlMTFmMGE4ZGNiZmIwNyBkZXNjci1icmFuY2gKKzIwNTIxIGM5N2IzNzEzNmQ4M2UzNTMwMDUwOWJlYTUyYTQ1YjExYWUxZWFiYTMgZGVzY3ItYnJhbmNoCisyMDUyMiA2ODE5MzEwZGU4Mjg0NDdjZGRmZmYwZDYwMTY1MDY5MWFmZDU1OWJhIGRlc2NyLWJyYW5jaAorMjA1MjMgYTFmMDdmY2MzZDQxM2Y3NTI3ZjRmZDk1MjIyMGUzYzljNzAzZWMxMyBsZWdhY3ktdHJ1bmsKKzIwNTI0IDQ0YTBhOWEyNzdlZjY5MWEzY2IzZGI2ODVhZjEwNTdiOTM4NjA4NDUgbGVnYWN5LXRydW5rCisyMDUyNSAxNjg2MDgwYTdjNmMzNzZkMzdiMDVlZTI1MjI5N2ZiOTA0NzhkNDkxIGxlZ2FjeS10cnVuaworMjA1MjYgZDkxZmMwMjI2OGQ4ZDAxMGI3MjViMTBmMDBiNTc0YzllMTNlN2NhZiBsZWdhY3ktdHJ1bmsKKzIwNTI3IDljMTEzMmYzMDk1YTA2M2FlNGJlNmMzODdhNjA3MjJlMTQ1NDY4MzYgcmVsZWFzZTIwLW1haW50CisyMDUyOCA5NTBmMWMzYThlNmFhMTVmMWQ0MzdhMjgyMjE5MDMxNmRiMmEwMzY1IHJlbGVhc2UyMS1tYWludAorMjA1MjkgN2U4ZWQ2ZTM5ZWJkMGQ3NTU5M2YwMWFkMzEzODc3ZTkxZGViYjA3ZSBsZWdhY3ktdHJ1bmsKKzIwNTMwIDkxY2JkMDFiODVjYmRmOTFhYzM1MWY3ZDdkMTBkNjNjNzE5OTE2ZjkgbGVnYWN5LXRydW5rCisyMDUzMSBhOTQ4NWQ0MDRmMDVkMjQxMDYzNzExNDUwYTE5Nzc2Y2I4ODU0NThmIGxlZ2FjeS10cnVuaworMjA1MzIgZGE0ODA5OTQ3YTMyMTA1YjhmNGQyYjc1MjYxY2NmMWU1NTZlMjQwMSBsZWdhY3ktdHJ1bmsKKzIwNTMzIDI0OTEyM2MxZjRkYzExMzQwYTRiNDBjN2RmNDVkMmZjMzNlNDQ2N2EgbGVnYWN5LXRydW5rCisyMDUzNCBmY2RkZTY4MDMzMWU1YWVjYzQ4NDJiMjNmMTAwMzlkMDE2NTgyZjJmIGxlZ2FjeS10cnVuaworMjA1MzUgN2Y1ZTNlNmIyYTM5MjA3NTAwYzIwZTA5YzdkYjFmYTVkYTU1NGNlNSBsZWdhY3ktdHJ1bmsKKzIwNTM2IDBiYzMzNzdkMGQ3MjA4YmMyMjM5YmFjNDA0NzhjNjBmZTY2MDM2ODggbGVnYWN5LXRydW5rCisyMDUzNyBiN2RmODhhNzhhZGJhYjgxZDlmODdiNjgwNTk5OTY5ZjVhZjBkNmQ4IGxlZ2FjeS10cnVuaworMjA1MzkgOTkyMWE5ZDI3ZjcyOGM2MTkwNTYxM2VmNjJlYWIwM2YxOWNlMjNjNSBsZWdhY3ktdHJ1bmsKKzIwNTQwIDhmZjc2Y2YzMGE4Y2MzN2NmNmVlYTM2Y2Y2MDRiNGJlYjc5OWI4NDggbGVnYWN5LXRydW5rCisyMDU0MSA3ZDY3NmI0MjM3YTk5MzJmOTEzZmIyODEzMTdkYzJjOTE5MTAxMDM4IGRlc2NyLWJyYW5jaAorMjA1NDIgMzJlNzM1YmVmMGJjMjliMDU2OTM2NjQ3NGQxMTNjY2IzZWE4ODViNyBsZWdhY3ktdHJ1bmsKKzIwNTQzIGJkNjVmODg5M2JlM2FlZjQwNTAxNGM1YTMyNzljY2FhMzMzZDExOWMgZGVzY3ItYnJhbmNoCisyMDU0NCBiMTI1NDE2Mzk0ZmFjYTMwNjRmZmQ3ZjIxMjgyMGRiNGViZjY3MzY5IGxlZ2FjeS10cnVuaworMjA1NDUgYTE5ZTY4ZTM2NWM3NTcxZDk3ODQ5NDYxMzFiMzg4NTdkYzIxZmZjMyBkZXNjci1icmFuY2gKKzIwNTQ2IDk5MzQyMjVmZTI5NzgyNzQwYmYwYmZlZjA4ZTJhNjAwZmI2ODRkYzAgbGVnYWN5LXRydW5rCisyMDU0NyA5YmU3NzU4YThjOTRjODg5Njk3NDMxOWE2MzMwZGUyNGRkMzEwOGU2IGxlZ2FjeS10cnVuaworMjA1NDggYjI4MjM2MzQ5ZGU1MTQ3MzcxMTFkM2M1ZTY2YzRmMTExMjJhYjM3OCBkZXNjci1icmFuY2gKKzIwNTQ5IDllODFkMzkxYjc2NTg5ZDg2ZmFjYzQ1ZGFjMmFkMzU1YzM3MDA1NjcgZGVzY3ItYnJhbmNoCisyMDU1MCA5ODdjZWI5ZWMwMjMzM2RjMGIxZDAzNTM2NTRkYjdkNzg1ZDI4Yzk4IGRlc2NyLWJyYW5jaAorMjA1NTEgODg3YjUyOTc2NTJhM2M2ZmFmYWYwZDJlZTRhYmI2MmIwN2NhMTRjMyBkZXNjci1icmFuY2gKKzIwNTUyIGUwNmMzNmMxM2YxMjg2MjQzZWQwODVkZjA1MDU1NDM1NzgxZTQ5MTQgbGVnYWN5LXRydW5rCisyMDU1MyA1M2VlMGZhNjc2NjE3YTkxN2M5YTgyYTllNzExZGMyNmU0YWYwMGYwIGRlc2NyLWJyYW5jaAorMjA1NTQgMDEzZGViNWUxNzJiZjVjOTRhMTM2ZTExN2ZhMDUxNWU3N2QwYjdjNSBkZXNjci1icmFuY2gKKzIwNTU1IDcwMzdkMWY2ZTc5YWViNDY5NDAwMWY3Zjk2MTA4NDY2ZjUyY2Y1MjQgZGVzY3ItYnJhbmNoCisyMDU1NiA1ODdkYTI5ZDY5ZDVkMGNlOTcxNDM1NDE0MTQ3OTZkNmJlNzkzYzEwIGRlc2NyLWJyYW5jaAorMjA1NTcgMTcyMTI2MmFiYWE4MmEzMzdkYmFlYjQ1NzNmMjFmOTgxNzc0ZmU5YyBkZXNjci1icmFuY2gKKzIwNTU4IDRiODExYTcxYmU1YzJmYWQ5N2FlNWM5ZmEyMjBhYjI5Y2YxYzcwYmEgZGVzY3ItYnJhbmNoCisyMDU1OSBhZTA3NTk5YWRmMzNmN2E4NmRiZDc1ZTVjZmI3ZWY2NzI4MTFmNzc1IGRlc2NyLWJyYW5jaAorMjA1NjAgZTJkYWVmMDY4NDk2YmMxMzZiNjEzMTc0Yzc0NTAwODM3YmE0ZTFkNiBkZXNjci1icmFuY2gKKzIwNTYxIDU2YzU0NDVlYzgzNTg2ZTVmNzc3YWFmY2E1ZDA2YTYzM2YzNmU1OGYgbGVnYWN5LXRydW5rCisyMDU2MiBhYTcwODdhYzZkOTU1OWJjOTkxZjhkZDA5ZjRkZWNkNGI3NDY3MDA1IGRlc2NyLWJyYW5jaAorMjA1NjMgYmQzMTNhNWUyMGQ3ODhmZjkwZDExMDUwNTdmMzZmOWY0MWRmNjQwZiBkZXNjci1icmFuY2gKKzIwNTY0IDVkYmZlODMxNjIzNjM4OWNlN2EzZDllNjBiZDg4MzM5OGM0YTFmNzUgbGVnYWN5LXRydW5rCisyMDU2NSBiNWY1ODNlZWNiMjAzYzRjMjg0YjIwY2MzNDNiMDRjNzUyMDAxMTcwIGxlZ2FjeS10cnVuaworMjA1NjYgZDFlYzY3OWJhYTNkYjgyYWI4NWFkYzgwN2MyYWQxOWQwZTE1MGM0MyBsZWdhY3ktdHJ1bmsKKzIwNTY3IDU1N2FhZDNlNzRiYTYzNGIwMmZlYjgwNzZkMTNiNzViMmEyOTQzZjAgbGVnYWN5LXRydW5rCisyMDU2OCA2YzgyMjc3ZTc3ZjM1N2Q3NGEzNTcxODA0NzZkNGM0MDU4MGJlMDZlIGxlZ2FjeS10cnVuaworMjA1NjkgZGQyNGFiY2IyMzMxYzc4Y2Q2OGQ1ZWE0ZDcyOTI5MTVlOGNjOTQxNyBsZWdhY3ktdHJ1bmsKKzIwNTcwIDExMTgxY2QzODk3ZGMxYjgwMWNjMWQxOTc2NGJjMzFhNzA1Y2Y1YTkgZGVzY3ItYnJhbmNoCisyMDU3MSA3YTM2N2FkNDNmMzUyMzhkNDY2NGNjZmI5OGFmNGUwMTk0YWM3Mzc5IGxlZ2FjeS10cnVuaworMjA1NzIgZmE4MzI2Y2M3NjFjYjNhZmZkNjgwMmVlMDNlMTNiMzVhNWYwNGE3NCBsZWdhY3ktdHJ1bmsKKzIwNTczIGViYzI0YTEwNDEzMjljNWVlZjJlNTBhZTljOWY2YTY0ODYyODhlZDcgbGVnYWN5LXRydW5rCisyMDU3NCBhODQ4NzQ2ODdjYjFjZGUzODcxNzgwOTg2NWM1NTc4OGEwNzdiNTExIGxlZ2FjeS10cnVuaworMjA1NzUgYTk3ZTE4ZTQ5OWE5Y2Y3YjFiYjRjMGE5YTIzZDRjOTE1NmYwNTg0NSBsZWdhY3ktdHJ1bmsKKzIwNTc2IDA0NzBiYWJkYWU0OWZlZTgzMzY0ODRlNGQxMjM5Nzg3ZGNlZThlZDggbGVnYWN5LXRydW5rCisyMDU3NyBhNjY5OGEwMTZhZmUyMDYxZjc3NzQ1YjE3MmI4ZTAyNjI0MTRmNzAwIGxlZ2FjeS10cnVuaworMjA1NzggMDg1ZjQ2MGIwZTNiNTk5NGEyNGJkODQwYjAyMjlhZWFmNjBkYmNiNyBsZWdhY3ktdHJ1bmsKKzIwNTc5IGQ2NDk4YjFlZjUwZDFjZDkzZjBkNzI2NDI5M2I4ZWY1MzAxZmEzYzIgbGVnYWN5LXRydW5rCisyMDU4MCBkZWI4YTVlMTUxYTM0NmNkNTRhNjRiMDQ2N2NkZmYwYTFkZTI4NmI5IGxlZ2FjeS10cnVuaworMjA1ODEgMzBkNzUxOGUxN2U1YmZhOTM1MmQyNTY5ODVhYzY0YzcwNjBlNDVmZCBsZWdhY3ktdHJ1bmsKKzIwNTgyIDBmZjRjZGYzNGZjMWE1MGYzZTBiNmY0NWE3ZDc0YWRlZjFkMDZhNWYgbGVnYWN5LXRydW5rCisyMDU4MyA2NDUyMzMwNzc5NGU5MzU0N2M1ODU2MjVhMDZiNGI3MWYzZmJmYzM3IGRlc2NyLWJyYW5jaAorMjA1ODQgNWI2ZDU5NjFjOWUzOGUwZjYyZjE5NDhkYmIzNjMzM2M2MGY2YmU3NCBsZWdhY3ktdHJ1bmsKKzIwNTg1IGQ3NjY0OWJkMzhkMDFjOTZlNWRlMjZjMWNkZjZiMDBiYzNjMTkxNGYgbGVnYWN5LXRydW5rCisyMDU4NiBiOTA3NmQ4NzE4YWIxZDJkYmFkMGEwYzQ0ZGFhMDhmZDk3ZjAxN2UyIGxlZ2FjeS10cnVuaworMjA1ODcgNGMyOWIwNGU0ZDZmYzE4NmM1MWZkZjE0MjJlOGExMjY5Yjc1MTc0NSBsZWdhY3ktdHJ1bmsKKzIwNTg4IDEyYzgwYjU3MGQwMGEwZWNiOTI5YjhjYmU2N2FmYmQ0NWNjMTEyNDYgbGVnYWN5LXRydW5rCisyMDU4OSA3NmVlOGI2MmVlMmE4MmQ2MjNjNmM0ZTA5MWE0YzhjZmYxMGVkYzY2IGxlZ2FjeS10cnVuaworMjA1OTAgMTVjY2UzZDgwZDBmZDhkM2JiMWE3NmQzMDQwN2FhOTYyNDhiNTJhNSBsZWdhY3ktdHJ1bmsKKzIwNTkxIGQ3ZDA1MTAzYzAyM2ZjNjQ1OTljY2FlMzRmMWZkMTI0MzdiMTAyZTYgbGVnYWN5LXRydW5rCisyMDU5MiA4ZDllYjVhNGViY2Q5OGRkYjU4NGU5NDg3MGFkMmFjYWI0ZWU3NTgyIGxlZ2FjeS10cnVuaworMjA1OTMgOTliMDZhNjQ5YjE0N2I3NTBjN2Q4YWRmNWU2MTM2Yjg5Mjk5MmMwNiBsZWdhY3ktdHJ1bmsKKzIwNTk0IDc5NDhjZDRmNzY2Mzc0MjQzZmNhMTQ4N2NiNmU0YWFlN2U0N2ZjYjEgcmVsZWFzZTIxLW1haW50CisyMDU5NSA4NjQzZTZkZTEzZGZhNzAzNWE0ZThkZTQzYjIzYjdkYTM4NGViMGI3IGRlc2NyLWJyYW5jaAorMjA1OTYgZTZlODFkY2ViZmRlNWQ5ZTRjMjU2M2E4MTBjMDJmOWUwZTRjZjU0YyBsZWdhY3ktdHJ1bmsKKzIwNTk3IDk4ZjM0YzQ2NDNlOTgwMDEyNGNiZTRkZGYwZjY0Zjg3YzQxZmYyYTggcmVsZWFzZTIxLW1haW50CisyMDU5OCAwYmUyNzcwMzlkOTNiNDJmMzZkYTdjZjkzNTFmZTMyYzhlNzNiZWM1IGxlZ2FjeS10cnVuaworMjA1OTkgZDgwNTAwMDc2ZTlmYjk1Y2ZmODJiODBlMjQyOWQ4ZmI1NTcxNjQ4YiBsZWdhY3ktdHJ1bmsKKzIwNjAwIGJmN2YxNjZkM2M5NzQ2MGRiMGU4OTIyZTBhNTc5MTdlYTQ0NjRiZDAgbGVnYWN5LXRydW5rCisyMDYwMSA1NWUzMjAxODk1MDg3YjNlZDExNTE1MzJmOTU4NjBiNWYyOTZiNWM1IGxlZ2FjeS10cnVuaworMjA2MDIgMWMyZDI2ZWVmN2VkMWI1OWM5ODJkNzU1YTE0ZDg0ZTQ2Mzk4MDM4YiBsZWdhY3ktdHJ1bmsKKzIwNjAzIGJiNmM1OWE4NWNhMTQ3ZGQxNGQ3N2M3YzllYmVkMzdiZWEwYjA3YWEgZGVzY3ItYnJhbmNoCisyMDYwNCA4YjBjMGM0ODJhNTVmZDA2ZDllY2U5ZDM3ZDdjMGY2NjdmNDgxZDBmIGRlc2NyLWJyYW5jaAorMjA2MDUgODM5ZjZmMmNkNjZmM2NmZGEyNjE5OTY4MTVhZTBlYjlmOGVhY2FmZSBkZXNjci1icmFuY2gKKzIwNjA2IDMwOTFmYjgzZDUyNzFjY2QzOTEyNzdhYjUzYTc4MGY2NmQzNjVlNjYgZGVzY3ItYnJhbmNoCisyMDYwNyA4ZmM3YmVjZjc4Mzk0NzI5MjdmZjY0OGNkZjZmOWJkOTgyZWUxOGZlIGRlc2NyLWJyYW5jaAorMjA2MDggMGE5ZTNhYTcxZGI5ZjIzMGI4NTdlODlkODM4NDNlZDVhOThjMzhiZCBkZXNjci1icmFuY2gKKzIwNjA5IDgyZjhhMmIxYjc5Y2MzMmRiMTZhNzY5OGYyYzZhZmJhMjBjMmUzYTEgZGVzY3ItYnJhbmNoCisyMDYxMCBmYzY1OGFkY2VkYzhlOWI0YmMyODZlOTVmZTViZjJjOTU1NjMyYjVhIGRlc2NyLWJyYW5jaAorMjA2MTEgZjg5ZTg1MTUzZDA0NzUzOWM0ZjQ3NDM0NGEwYzk2ODAyYjVmYzBmNSBkZXNjci1icmFuY2gKKzIwNjEyIDM5Y2FiZDBhYWUxZWJkMjg1M2U1Y2M1OGNmMzY2YzdiMWQzNGRiM2IgbGVnYWN5LXRydW5rCisyMDYxMyA5ZDFlMzA0ZWNiMThhNThkYjRmZGFjYzMwODFhZDJhNzU1ODRkNTI5IHJlbGVhc2UyMC1tYWludAorMjA2MTQgNTUyN2Q2MmZhZmUwNWU2YjY2YTVlODBhOWY2ZTBmYjFhZmRkYzU5NCByZWxlYXNlMjEtbWFpbnQKKzIwNjE1IDZmOGVmZGJkZmY0ODIzYmNhZmVkZTIxYzM4YTZlYThhMWMxYjU2ZTAgZGVzY3ItYnJhbmNoCisyMDYxNiAxNjJiOTRjOGQyZDFhOTRhZTZiOGM0NWY3NTEwOGVhY2FlNzYyOWE5IGRlc2NyLWJyYW5jaAorMjA2MTggZTlhNGUyN2U4ZDRlMTZlMTRiMzJhYjI2Njk1MzAzN2VhMjQ2ODExNSBsZWdhY3ktdHJ1bmsKKzIwNjE5IDM5OWQ5OTYwMWIyZGMwZDJlN2JiNGI1NTBkODQyMThjMzc3M2QxOTUgbGVnYWN5LXRydW5rCisyMDYyMCAwYzk4NzcxMjBmMzgxNzgzZjc1MDNiZGNhYjRkNTYwMDUwNjkzZjZiIGxlZ2FjeS10cnVuaworMjA2MjEgM2NkNGFmNjY2ZGU2YjNlNmYwMGM4MTIyMjIwYjFhZDlmOTc1N2MzOSBsZWdhY3ktdHJ1bmsKKzIwNjIyIDllMDkzYmY4ZjZhOTNmMmMzM2Q3Y2ZhYjA5MTY2YmU2ZDE5NjhlNTkgbGVnYWN5LXRydW5rCisyMDYyMyAxZWJiNGU1NjYyNTdhYTg5ZGVkMGYzZDZmMDEwODM0ZjVhYTAxNGFmIGxlZ2FjeS10cnVuaworMjA2MjQgNDlkOWJhNTU1ODhiNjdiNmNjNjExYmMzMTRmYjlhYWE2MzliNDgxMSBsZWdhY3ktdHJ1bmsKKzIwNjI1IGVlNGQxNzg2MmI2MTgwYjE0MDc1ODBmZjU3NjkzNzc0NjU0ODNkMzIgbGVnYWN5LXRydW5rCisyMDYyNiAwMDJlYzczM2I1ZGM1YjYzOGQ1Y2RkNTAwNDdhYTg0MDQ3NGVlNDI5IGRlc2NyLWJyYW5jaAorMjA2MjggZDRkMDY1MjljMjE4MTFkMzBlY2I3MmFlMmMyMTEyMjQ3ZWY4MjEwNCBkZXNjci1icmFuY2gKKzIwNjI5IDllNTNhNWQ3MWYxZGExZWYzMTA0NWY1ZjMzYTM2OTY2M2VkZDFkOTAgbGVnYWN5LXRydW5rCisyMDYzMCAxODEyNDc2YjdmZTQ1NzAyMThlM2Q2YzUzYWZlOTVkZDhmYTY4NDY4IGxlZ2FjeS10cnVuaworMjA2MzEgNjhlNzFlOWJjMjA0NTQyYTlhMmNkZGFkMTViMjg1MDBiMTdiNzUwZiBsZWdhY3ktdHJ1bmsKKzIwNjMyIGFhYjZjMWYxOTI4OWRjZmRiZGJhMmMxOTg2NjFjZTk3MTE4YzcwMzAgbGVnYWN5LXRydW5rCisyMDYzMyAzMDY0YjczYWRjMWFkNzcwNGExOWVlN2MyMTQ2NmQzNTI1YmZjYWI5IGRlc2NyLWJyYW5jaAorMjA2MzQgNDQyNGUwNmQ0MTU5NTRmYTEyMjc3YjNiNmIyNzFmY2Y0MzM1Mzc0MyBkZXNjci1icmFuY2gKKzIwNjM1IDFlOTAyZmM3MzY0NTE4NTQ3M2Q3NDU0MTAyOGM4YjQ2ZDIyMWQ3MTQgbGVnYWN5LXRydW5rCisyMDYzNiBmZmMyOTIzYmFkMWE5NjQ1OGJjNmE4OThiMmEyZDgwMTBkYjc2MjhkIGxlZ2FjeS10cnVuaworMjA2MzcgZjk3MDE5NTE5NmM0ZmJlNzYzMTJjZGZmNTg0Zjk4YzE5ZDg2YmVjYyBsZWdhY3ktdHJ1bmsKKzIwNjM4IGFhZDBhZGY4MDZhZGM4MmRiMjZhZjE0NzJhMTI5OGY4MGU5ZDQ1MjEgbGVnYWN5LXRydW5rCisyMDYzOSAzNzlmZTg4NzY0NGZiODBjNjNkNzkyNzI5MWMxNzBmYzM3ZmIyYmExIGRlc2NyLWJyYW5jaAorMjA2NDAgNTQ2MjM2MjZkYTRlM2ExZmU5MThiZWIxZWUzNzBmMGU0ODRlNDNjYSBsZWdhY3ktdHJ1bmsKKzIwNjQxIDQzMzAxM2FmNDU5ODc4YThiMGM0NDViM2I1ZmYwMzhlMmY0MWY4OWYgbGVnYWN5LXRydW5rCisyMDY0MiBkZWQ0MWJlODRkYTRmYWNjMTVkOWZjMDcyZDgzN2JmNDhmYTVhMzY4IGxlZ2FjeS10cnVuaworMjA2NDMgZTNmMGZkMzhjMjRiNzBiMDliNTkxNmQzNjlhODFhNWQ3ZmY0ZWUxOCBsZWdhY3ktdHJ1bmsKKzIwNjQ0IGYzYjg3ODViZDAyMjJhNjFmZTJiYmEzODAzMjRkYzdiOGFjMzk4ZDMgbGVnYWN5LXRydW5rCisyMDY0NSBiNDFmNmVmNmVhOGY3OGYxNmFjYWJjODA4MGJhNjhhN2Q1MzdiZTg4IGxlZ2FjeS10cnVuaworMjA2NDYgMmYxNjA2MmExYjdjNzVjZmJlNjYwYTlmOGVhNzdlZWVhY2Y4OTM2OSBsZWdhY3ktdHJ1bmsKKzIwNjQ3IGFkMjViZmNjNDM3NzE1ZjcwY2ZkMzc3ZDllZmFhOThiZWEyOWEzMWYgbGVnYWN5LXRydW5rCisyMDY0OCBmZTRjMTAzNGI0ODAxM2I0ZjIyZGM3NzE4ZDMxNWMxZWY5ZDFhZTFkIGxlZ2FjeS10cnVuaworMjA2NDkgYmE4ZjhlNGQ0MmIwNDc5MjVmODE2MTYwOWYxMGI2ODc0YTRlYTY1OSBsZWdhY3ktdHJ1bmsKKzIwNjUwIDFjODZjOGQxYzljNzYyYTcyMmE2NmVhNmM0YWI3YWNiNzA1NzI2YWYgcmVsZWFzZTIwLW1haW50CisyMDY1MSA2MTk5ZTViZDM3MGI1NjBjNDUzMzg4NTJjMWMxN2YyYzM2YzhiODA0IGxlZ2FjeS10cnVuaworMjA2NTIgMzUwYmUxOWNhNmE1Zjg5ZGRjYTZiNjI4YTViYmMwNmJmZTFhNTc0ZCBsZWdhY3ktdHJ1bmsKKzIwNjUzIDJhN2NmYzE3MmE2ODRhMGEyZDc0MjAxNjliODVjNjljNDQ2YzcyYWQgbGVnYWN5LXRydW5rCisyMDY1NCA1ZTNiYWI4YWVmN2IwZmFhMjdjMWRhZWQ1ODBjZDY4Y2JhYzZhMmNkIGxlZ2FjeS10cnVuaworMjA2NTUgNjQ5M2Q1ZTk0MWMyYTgwZmZlYTU4MmZjMjc0MWFiNGE4OGM2OTI4NiBsZWdhY3ktdHJ1bmsKKzIwNjU2IGZmODEwZmI1OTUxMzIxOWFjZDJjZWQ2OTI0Y2Q5MzBiMzE3OTdiZjYgcmVsZWFzZTIxLW1haW50CisyMDY1NyA3NWU3ODE0MDQxZGFjYjhlYmQzZjk0MzJlNzczMzk3Y2NlZTllZWM1IGxlZ2FjeS10cnVuaworMjA2NTggYTZhMzk5YWNmNjIwNjRmOWFjMmZhNDEyYzY1MzA0NDc1ZmUyYTBjOSByZWxlYXNlMjEtbWFpbnQKKzIwNjU5IDk5NDljODcwZTE0NDIwYTI2ODI2N2I0YThkNjA2MDhmOTE2NTZiZjUgbGVnYWN5LXRydW5rCisyMDY2MCBiYjA5NTM0MGFjOTg3NTkzZWMxOTRlMjRhOGZjMDBlZmY2NmZlMjc4IHJlbGVhc2UyMS1tYWludAorMjA2NjEgZWRlMjlhZDY0NDBhYzAyOGI4MzcwOGI0MGY1NWY1ODVkNzg2ZTg2MCBsZWdhY3ktdHJ1bmsKKzIwNjYyIDFkZWE0MzFmYjBhMDQxMTIzMTc4NzI0YTMwZjE4YmFlMDIzNjk3MzQgbGVnYWN5LXRydW5rCisyMDY2MyBjZDkyYzBkN2VhYzQ3ZjlkNDc1NjY3YjExNmIxMmU3MTMxMGI3YmMzIGxlZ2FjeS10cnVuaworMjA2NjQgOWY2Y2ZkZjcxZDUwNjlhYTQzMzI0YzU5OTY3MDQyNzk5NzcyOTU4NSBsZWdhY3ktdHJ1bmsKKzIwNjY1IDZkYzM2MDc4ZjUzZTFlODY4N2VhM2IxMGQxN2IzZTIyMDdmYTVkYmYgbGVnYWN5LXRydW5rCisyMDY2NiAxYjFmMGNiMjg1YzI1ODM2YTYyMmYxNzhjMmI2NDQyYmNjZDNjMGUxIGxlZ2FjeS10cnVuaworMjA2NjcgYmRlZDZkMzE4NmMwZDI5OGFkNjdlOTBiY2Y4NzllZGE0OWY5OWQxZiByZWxlYXNlMjEtbWFpbnQKKzIwNjY4IDQ4OTY2MzA1OTM0MTMyMmQyNzNkMDljNGIwOTBhZmE1MjM0YTQ0MTEgcmVsZWFzZTIxLW1haW50CisyMDY2OSBhNjI2ZmEwZTNkNzUwNGQ2Y2U3MDljNWIxNDA5OTA0MDlkMDNkMzA4IGxlZ2FjeS10cnVuaworMjA2NzAgMGNmYWRkNzYwN2Q1MWUyNTRkMjI1OWJjOTdhZWFlMjBkZTUyNTFhNiBsZWdhY3ktdHJ1bmsKKzIwNjcxIDA2ZDdkYTgxNDA5ZGUxYzBmYzRmMzMyOTQzYjY2ZTBhYmNkZjdiOWEgbGVnYWN5LXRydW5rCisyMDY3MiBlMTNlZWRkMDRhNGE4MWM3NWMxMzVmYjkwYTYwNDY2ZTdmMjE0NjBmIHJlbGVhc2UyMS1tYWludAorMjA2NzMgZTc4NWQ3YmQ3NTk4ZmE0OWYwZWY1MDg3YzllY2I2MjAzYWRjZTIwNCBsZWdhY3ktdHJ1bmsKKzIwNjc0IDYwZjhjMTVjMDI1NWRiOTg3ZTNiNzY2MDc1ZDljMmUwODhmNjVjMDAgcmVsZWFzZTIxLW1haW50CisyMDY3NSAzOWJmMWY2Y2YwZjliZDVmODIwNjgxNWFmNmFmMWVmZjYxZWY1MGM2IGxlZ2FjeS10cnVuaworMjA2NzYgMTQ3NjMyYWQxYmNjM2EzZDczMzMyMzczZjIzM2U2MWRhOTk4ZTU2YiBsZWdhY3ktdHJ1bmsKKzIwNjc3IDQzNzQ4MmZlNTVlNjQ3N2M1NTIzMzgxNWYyMGRmZWJjYThkZDc0NGUgbGVnYWN5LXRydW5rCisyMDY3OCAwZWJmZTlhMWViNDNlOTVjNDRiY2QwZmE5MDc5MDdkZWZhOWI1NDIxIGxlZ2FjeS10cnVuaworMjA2NzkgODIwZTVhMGMzMTEyZmNmM2Q3OWI3ZDliZWIzNjY0NDFhM2MxZWE0MSByZWxlYXNlMjEtbWFpbnQKKzIwNjgwIGY5NzFmMjUyZDliODdhNjU2MjdmYmQ2NWMyMDJjOGEyODA0Zjk1NDkgbGVnYWN5LXRydW5rCisyMDY4MSBkMDVkYmYzZjM2ZjY3Mjk0MjhjYjllZTY1MTFmMmFkYTYyMDU0ZDY1IHJlbGVhc2UyMS1tYWludAorMjA2ODIgZWQ3NzFiNWRiNWFhZjNhNzc2NzA0ZTAxNjEzYWVkOWYzMzBmMTNlMCBsZWdhY3ktdHJ1bmsKKzIwNjgzIDFhMjFkZDEzZTYwYTZlNzQyZWExYjBiZDU5ODc2ZjAwYmFlNzMyZjUgbGVnYWN5LXRydW5rCisyMDY4NCAzZWU5YTNmNjBiYzc5NjRhMTcyMWQxNWJkNDAyNmQ0ZTc1N2FlYzc5IGxlZ2FjeS10cnVuaworMjA2ODUgNTNiYmViMjViZGU3MTlmNDZhYjZiOGM2YTkzZmFkZjQzOTE3NmNlOCBsZWdhY3ktdHJ1bmsKKzIwNjg2IGIxNmZjODljMTk0ZjZhMzU0ZjE1YzQxNzhiOGRjN2ZhYjlmZjUzYWYgbGVnYWN5LXRydW5rCisyMDY4NyBiNzZkMWI1ZTg4NjAwZDZlZWZlMzdiZTFhODcxMmFhNGE4OTY0MzgyIGxlZ2FjeS10cnVuaworMjA2ODggYzU3Y2U3NWRjZGUwYzgyZjE3NmQ4YzFlMmZmNGY0NjdkNWJhNzM2NSBsZWdhY3ktdHJ1bmsKKzIwNjg5IDI2MTE5NmJkMTZkN2VmMjJjZmM5OTdlYmI5Y2Q3ODYxOTY3YTZhNDggbGVnYWN5LXRydW5rCisyMDY5MCBmNDY1Y2FlMzAxZWU2MTVkMzAxODhkYjQwYjM1Yjg0NGEwNmUyNWNjIGxlZ2FjeS10cnVuaworMjA2OTEgYjM5MjY2Zjc0ODRjNDQ4MDU0ZTM2OWZhOGE2MWVkNWY4YTJhODcwZiBsZWdhY3ktdHJ1bmsKKzIwNjkyIGM4ODZjZDFjMjE4NDczZDJjZmZmNzYzNmUyNDMwNDY4MTUwZjU4MTggbGVnYWN5LXRydW5rCisyMDY5MyBmNDM3NGQ3OTMxYmE5ZmZiZWI1MzVhNDE0ZjkxNmFjYjlmNDc1MTVhIGxlZ2FjeS10cnVuaworMjA2OTQgYzQ3Y2M5YTk4NjRjNGU0MjFhMDRmODdmZTkzMWEyYTRmNzI1ZjE5YSBsZWdhY3ktdHJ1bmsKKzIwNjk1IGVmNmYzZTE4MTg3ODY2MzNiNGFiYTI1ZmJmM2M2YTViOTgzODA5MDEgbGVnYWN5LXRydW5rCisyMDY5NiA0N2QxODYwMmQ1ZWE0NTUxMDZlNDJlZGE5NmIyZDZjMDMzZTgxY2VhIGxlZ2FjeS10cnVuaworMjA2OTcgYTA2YTcwNDI2MGU5NmExZDVmZTVmNDU0N2EwN2QyYmE3OTk0OTc5OCBsZWdhY3ktdHJ1bmsKKzIwNjk4IGE5ODdjZjE4MTQzNDkwZGE4YWRiOTQ3YzhhY2Y0ZTM2ZTNmNjAyZTYgbGVnYWN5LXRydW5rCisyMDY5OSA1ZTBlYzM5YzRjZWNjNGM0ODRlNjM0ZTY0ZjA3MmYxYmMxNzE5OTY5IGxlZ2FjeS10cnVuaworMjA3MDEgMDgwYTEyOTFiZjZjOWY4MWY3NjEyYzQxMTYyMGJlNmFmYjc5ODNjZSBsZWdhY3ktdHJ1bmsKKzIwNzAyIDMzMjY5N2RlOGRiOGUyZDUyOTRhN2MzYmRiNTg0MTVmNmRkMzE3MzEgbGVnYWN5LXRydW5rCisyMDcwMyBiNTM0ZjEwNzM5ODdjZDM2MDMwNjg2YjczY2E2N2Q1ZWRkOTllNTE5IHJlbGVhc2UyMS1tYWludAorMjA3MDQgMDk4ZDZmODY5YTlkZTg1NTE3NGQ1ZjdmMGFlMzJhNDdlZjAyY2Y5ZCByZWxlYXNlMjEtbWFpbnQKKzIwNzA1IDY4NjA1NGUwM2FjNTljNWJkMjBjNjA0ZjJkZDAxYTQ2MWI1NTdhYTIgZGVzY3ItYnJhbmNoCisyMDcwNiBlZjY1YmNlZTcyY2EyMjM2Y2E3YjNjYTBlODEwNDNlODY2Nzk3YzM4IGRlc2NyLWJyYW5jaAorMjA3MDcgNjVlMjYxMTNiM2ZiMmUxMWY5YjYxMWRhZTMwZDhhNGQ0YzM0NDEzMCBsZWdhY3ktdHJ1bmsKKzIwNzA4IDRlZjFiNmE4M2E0Nzk0ZTE0NGI2OGU0YmY2NTk3NTVlMmI3ODUzYzkgbGVnYWN5LXRydW5rCisyMDcwOSAyZjBkZjlmMGIwODg3ODJkODY3ZmRjOGU3Nzc1ODEzY2U0Nzc2ZGVhIGxlZ2FjeS10cnVuaworMjA3MTAgNjU4YzA3N2RkMzUxMzEzNWM0OWYyMTQ3ZDZkOGY4NTk4NjljMGQzNSBsZWdhY3ktdHJ1bmsKKzIwNzExIDUxYWE0MjUwMjk3NTUwZGIxZWFhYjVlMGI3NmZhNjUzMTQyZTQyNzcgZGVzY3ItYnJhbmNoCisyMDcxMiA0N2Q0NGQ4NTQyYjdiMmZiNjUxMjI4YmUwNDUzMzdkYjFhYzExYmYzIGRlc2NyLWJyYW5jaAorMjA3MTMgZGQ2ZjhjOWNhZmYwZWM1ZTA0NWVkNTYxMTYwZjk5NzJkYWFjYWIzNCBkZXNjci1icmFuY2gKKzIwNzE0IDdhOWY2YzA5NzkxYThlZWQyNjRhNDg0MmRhOTVhMTgxZGU4NjNjMDAgZGVzY3ItYnJhbmNoCisyMDcxNSA0N2Y0ZDA1NjhjN2NiNzMyNzRkY2U4ZjQxNjJhNDdmN2ExMTFjMDk3IGxlZ2FjeS10cnVuaworMjA3MTYgYzE4ODBmNmIzMTg5Y2Y4NGMzNGVmMmUwMzgwNDQ3ZmQ0ZGQ2N2FlMSBsZWdhY3ktdHJ1bmsKKzIwNzE3IGNlMzczNDJmNmY2ZTNmMzBlNjM2YTA3ZTFlNmJkYTc2MzQyNGRiZWEgcmVsZWFzZTIxLW1haW50CisyMDcxOCBjYzhkMTQ4YzM5NmFlOTA4YzliNDMzNDZhZDg4ZWRjMThmNWUzNGUwIGxlZ2FjeS10cnVuaworMjA3MTkgZmIxMDNlM2RhMmFlYWZmM2M5ZmUxOWMyMmM5NjA2ZTE3NGQ2MzljNiBsZWdhY3ktdHJ1bmsKKzIwNzIwIDAxYjUwNDNhNDUwOWY3MDQ0NDM0MDg3MWExNDA4ZGVhNDQ2MTQ1MTkgbGVnYWN5LXRydW5rCisyMDcyMSA2Njk2MDRkOTM0M2YwNWQxN2NhODM1YjdhYTU1OWFmYmQyNTdlNTlhIGxlZ2FjeS10cnVuaworMjA3MjIgNGIyZmRhZWJiZmU1ZGUzMWM4NzBiMzRmMDZjZGQ0YWExOGRiN2JkNiBsZWdhY3ktdHJ1bmsKKzIwNzIzIDBlYTA5MTNmODI0ZGFiM2ZlMWI1YjAxMzc3ZTkyYmMzM2M5MDkzYTUgZGVzY3ItYnJhbmNoCisyMDcyNCBkN2NjYjkzMWNhNzk1NTVlZjg2NzgyNDYxNzU1YjEyY2FlZTE3ZjBkIGRlc2NyLWJyYW5jaAorMjA3MjUgN2EyYTEyMmM5OTdjMjA2Mzc1YmQxMzAxNDQ3ZWRjMDY3ODUyNjE4ZSBkZXNjci1icmFuY2gKKzIwNzI2IGRjZTFmNTM0NTFhNWFmNDY5MmU1ZDM4YTZmZTk1YjYzY2M3MzQzOGEgbGVnYWN5LXRydW5rCisyMDcyNyA1OTYwNGY1YjRkZDEyOTBlMWVjNGZkMWFiYzY3ZmEyOTQ3ODFkYTUwIGRlc2NyLWJyYW5jaAorMjA3MjggNDE5ZWJjNjczZWQ4ZGY5YzZmOTgxMGI4ZjYwMGE1NjRkZTQxMGI3YSBsZWdhY3ktdHJ1bmsKKzIwNzI5IDBlYmI5MTUyMWFlNmJjZWRiYmMwNWVlYzdiOTI2MTkyYjIxMjhiNmIgbGVnYWN5LXRydW5rCisyMDczMCBiNGIzNjU3Y2IxZmFhNDU3M2E0ZDU0ZGU3NGQ2OTcyODY0OTg3OWQxIGxlZ2FjeS10cnVuaworMjA3MzEgOTkzZmIxODAxZjQxYjI0YTZhYzA4MDhlZGFlYjZjNGJkYzU3ZjU1NSBsZWdhY3ktdHJ1bmsKKzIwNzMyIGExNTc1ZGJmN2Q4MTJiMTllODY1N2IwMDM5MjZmNGI4YjdhZDJhNTEgbGVnYWN5LXRydW5rCisyMDczMyBhYjE3YjhiODg2OTYyZDkxMDBhZTYwYmJiMTZmMDhjOWUzNjQzYjQwIGxlZ2FjeS10cnVuaworMjA3MzQgNTM4N2NiNzY3MDU5NGEyZjllZmQ2YzRmM2M0NjdmNGU2MjE3N2UyMSBsZWdhY3ktdHJ1bmsKKzIwNzM1IDFkYWNkMGQ2MDYzN2M4NzNjOTM3MWZkNGUwMzk4MDU0ZjExMjA2M2UgbGVnYWN5LXRydW5rCisyMDczNiAxMjk2ZTg2MzA0ZWY1OGY0ZjJiZTVjNTdlNWRkZGIzNmJkZGJmMTAxIGxlZ2FjeS10cnVuaworMjA3MzcgMGVkOGM1ZjNmNTMwNjI0MTI1MjFjNDMwYzMwNmNiM2UzZjJkNGEwNSBsZWdhY3ktdHJ1bmsKKzIwNzM4IDk5YzQ5ZjAwOTM4OGU1MmNiNDgyNDlkMmVhM2E2NjUxZTU2MWFhZjYgbGVnYWN5LXRydW5rCisyMDczOSA4OTlmMzY3ZWJhNTZiNTBjOTJlMTA2YTRlN2QzODQyZWIzYjlmNjU2IGxlZ2FjeS10cnVuaworMjA3NDAgNDc5ZWE2OWVjODViMzIwYjliYjYwYjMzN2QyNzMwN2Q3MTRjY2FjNCBsZWdhY3ktdHJ1bmsKKzIwNzQxIDIyYTBiMmUzMjkxZjAyYTg4OWU0ZGVjODU0YTMxMTQ2ZjMzYzE3ZTYgcmVsZWFzZTIxLW1haW50CisyMDc0MiA3OGM2NGMwZjY2MWNiYzRmNTNhODg1NGY1MmNjMDkxMDhlNTQyMjNlIHJlbGVhc2UyMS1tYWludAorMjA3NDMgODA0MjViMmMxZTRjNzAyM2NkNWViMTdmY2JlZjI3Y2UyYmVhOTEyZCByZWxlYXNlMjEtbWFpbnQKKzIwNzQ0IDJlMDE1ZjhhMWFjMjAxYjEyZjIyNTM0ZjQxZWIwYTJiNjYyMDE5NGUgbGVnYWN5LXRydW5rCisyMDc0NSAxYzYwNGJjNmI5MWU1NGZkZjE2MTY3YWJlOTFkYmY1YTJkMzk4NDAyIGxlZ2FjeS10cnVuaworMjA3NDYgMWZiM2VjYTg5NjllYThjZmU3MDAwNzVhYjgyMWZmOGFhMzMzZjg5ZCBsZWdhY3ktdHJ1bmsKKzIwNzQ3IDZlMDA4YzYxOTg1NTM4NTZmMTE3Nzc4Yjg2MWEyZmNlYmNmZTRlMmYgbGVnYWN5LXRydW5rCisyMDc0OCAzYjViZWI5Mjc3ZTA0N2JlMzMxMWI5NmY5MzQwYTk3OTIzM2U1ZDg4IGxlZ2FjeS10cnVuaworMjA3NDkgYThmYTljMGYxZTBiYjVjY2Q3ODkyYmE3NzkwZDY5MGUwZDEwMzFhMiBsZWdhY3ktdHJ1bmsKKzIwNzUwIDhhZWU1Mzk1MDU4MzA5MjUzMzg0YWNmY2IyYTNlNWMyMGU1MWJiN2MgbGVnYWN5LXRydW5rCisyMDc1MSBhMmI2NTZhNTIyOTQzYTE5MTkzYzEyYTQ5MWY3ZWRkNDRjYjlhMDRhIGxlZ2FjeS10cnVuaworMjA3NTIgYzE5OTgwYzAzZTJkZTE1ZjQ3ODc2YmU3MDgyYTQwOTQ3YjQ4OTdlNyBsZWdhY3ktdHJ1bmsKKzIwNzUzIDU1OTdkNGJjZGUwNzU4NWIzOTMxNTc4OWVjZWEzNmI0NjE5NzNkNzIgbGVnYWN5LXRydW5rCisyMDc1NCA3ZWIzMjg4YzgxZTM1NWJjZjdlNzhlZTIzNTFjOThhNjFkYjgwNjg4IGxlZ2FjeS10cnVuaworMjA3NTUgNTNmY2NmNGQ2YTQxNDEzNTcyN2VlMjRkM2QwY2M0NzI0NWE0ZTIxOSBsZWdhY3ktdHJ1bmsKKzIwNzU2IDQ5ZTcxYTgzZjc5MGZhMjI0YTE3YTU1ODk3ZmQzOWJmNTBmNWQ4YTcgbGVnYWN5LXRydW5rCisyMDc1NyBiZjcwZDFmNGY2MWY2Y2QxNTE3NDNlZWJmMzMyNzUzZWU1MDIyNWQ4IGxlZ2FjeS10cnVuaworMjA3NTggY2U4YzM1NjU0MmFiN2NlNjZiYzJiZDQyMWEzMTQ2NmQwNjQ5NGJlYSBkZXNjci1icmFuY2gKKzIwNzU5IGRkNWZiMzllNjVlZjM2NTNmMmRmMDA2NzUzNTZkZjUxNjYwODdmMzAgZGVzY3ItYnJhbmNoCisyMDc2MCAzMzgwMjc5NjEyYTMzYzhiYzdiMzkzYjgyNDAwNGQwYTAyOGVhMmM1IGxlZ2FjeS10cnVuaworMjA3NjEgZmY5YTgzMzlhZDFiNGIyOTU5YjZjNjU4NzIyMTRiNDQ3ZDk5NTFmNyBkZXNjci1icmFuY2gKKzIwNzYyIDlmNTU5N2VhOTZmYzE0ZWQxN2ZlMWU4ZjA5OTNkZGQzNzM0NjZkYTUgZGVzY3ItYnJhbmNoCisyMDc2MyA3ZjBmNWVjZTQ1NjI4YmU5YzQyM2UyODYzMzJhMWU5OTQxODcwMDE0IGRlc2NyLWJyYW5jaAorMjA3NjQgMTRmZDRiYjc3OTlhYzE1Zjc4OTgzOTNiNzdjZjRlNWFjN2QwOTBlYiBkZXNjci1icmFuY2gKKzIwNzY1IDE1NzlkMzA5Njc2ZTM1MDdjYTk5YTYzZGM1ODg0OGY0NjU5ZTU4YjMgbGVnYWN5LXRydW5rCisyMDc2NiA1NGQzOTU0MjVlOTI5MzQ2N2Q2MWJmNzdhYTNjOGNiNmM3MDlmMDA2IGxlZ2FjeS10cnVuaworMjA3NjcgYzM0Y2FiODdkNzIxOWZiZjgwZmZhODFlMzY0NGQ3NWVlMzE2YWNmNCBsZWdhY3ktdHJ1bmsKKzIwNzY4IGM4MzYyMzAzZWMzYjFlMzMyMjNiMmU2NmYyM2I4ZmMyZDkzNWM0ZDUgbGVnYWN5LXRydW5rCisyMDc2OSAyMjI3NjdlYjI4Zjc1Y2VlMGExYThjNmNmMzFiYWMyMzk4Nzk0Y2U5IGxlZ2FjeS10cnVuaworMjA3NzAgNGYyMDQ5NWI4YmVkYzU5OWVkNzQxZTdlMzUzMzZmOGE3MmJiNWVmOCBkZXNjci1icmFuY2gKKzIwNzcxIDRhZjg2NWIyMjFlZGYwYzIxOTg0ODJhZjQxNjhhMDJjZjI5MzNiNTcgZGVzY3ItYnJhbmNoCisyMDc3MiBiODgxZGMzYmNmYjNkM2IzMjI1ZDVmOWE2YzMwNjNiYWQ4ZjZiNDA2IGRlc2NyLWJyYW5jaAorMjA3NzMgNGIwOGZkMDg3ZDM2NDNlNDhiYTQ3NTY2ZDNkZTVkMzE4NTgzYTFjNSBsZWdhY3ktdHJ1bmsKKzIwNzc0IDhjZDg3NDFlYmVjMGQ0NDgzMWNkOWFlYjgxNjFlN2RkMzdjODY4YmEgbGVnYWN5LXRydW5rCisyMDc3NSAyMjExYzg5OTVhNWY4ZDg1YWNmY2Y4YWExODllMTk4MzA5Y2YyMTA2IGxlZ2FjeS10cnVuaworMjA3NzYgZDZkZjhkMzcxYjY3NDY3OGFmOTBiNTM1YzMzNDk1ZWE5NDcwZTUwYSBsZWdhY3ktdHJ1bmsKKzIwNzc3IDhmNWNlNTgxMTllMDU0YWI3MjM2NThlZmRlMjVhMjE1MzhhOGYyNDYgbGVnYWN5LXRydW5rCisyMDc3OCBmN2MzODUyMjZmNjVhODUzNWVkNTIyMjlkMzQzNjM4NDY5YmU4NDliIGxlZ2FjeS10cnVuaworMjA3NzkgMjlkODRmOTIwZDViOTczMWIwNzRjYmY1NWFjMmM3MmRmNGMzODI4MCBsZWdhY3ktdHJ1bmsKKzIwNzgwIDE5YTQ0OGZkZWRmNzI0YjYxNGJjZjg2ODg4MTlkZDY1OWMwNmQ1ZDMgbGVnYWN5LXRydW5rCisyMDc4MSA0YmNmODhlNGFiZmYyMDk5YzQ1YTYwYzljMTIwNTJiOWQ3YWViYzE1IGxlZ2FjeS10cnVuaworMjA3ODIgNzgwMjQ4Y2QxZDlhZmE1YjcwNjdjMDljNTExOTc2Nzk3Yjk4ZGVlMCBsZWdhY3ktdHJ1bmsKKzIwNzgzIDUwMzc2ZDQ3MDY0ODIxNzc4NzgxZGU1ZWMyMDUyOGMxNjQxZjRjYzQgbGVnYWN5LXRydW5rCisyMDc4NCBmMTIzOTZjNTFhZWFmNGQ0OWQyZTZjZmMxNzY4NjhlNmE0MDBhMDFhIGxlZ2FjeS10cnVuaworMjA3ODUgMGFkZmJlMzI4OWQ1YWUzY2IwZTM1MjgyMGI4ZTg4ODJjNzU4NzdhYiBsZWdhY3ktdHJ1bmsKKzIwNzg2IDBiZTE2ZDBlY2Y2NGE3OTcxMjMzODcxOWUxNzgyNjc2Y2MzM2EyZTAgbGVnYWN5LXRydW5rCisyMDc4NyAwN2E4NzUyMDAxYmFjYjljMTVkMTQwOGFkODg2ZDA4NjUxOTc1NzgyIHJlbGVhc2UyMS1tYWludAorMjA3ODggMGIzZGE5OTgyNGM3ZDVkZmNhYTMyMjg5YmIwNjNkYTA3ZDRiMTdhNCBsZWdhY3ktdHJ1bmsKKzIwNzg5IDI2NzQ1MDUzZjg0MDU5NmFjMzRkOTExZGNhNmMwNWZjOTY4MTI3NTIgbGVnYWN5LXRydW5rCisyMDc5MCBiNTRkYmVmMWY4ZDM2NTY0ZmZlY2YwOGUwYWE2NmVkN2JmMTI1NmM5IGxlZ2FjeS10cnVuaworMjA3OTEgZDg5MGEyMWJlYmRhMmI4YTE0ZjMxOTI0NmEyMzBjZjZmMTljOGRlNiBsZWdhY3ktdHJ1bmsKKzIwNzkyIGNlZjViNjAwZmExNjI4NDZmYWViZGZlODFlY2YwYjEwNTEyOGMxMTEgZGVzY3ItYnJhbmNoCisyMDc5MyA3NTA5ZWEwNzJjY2I0MjJkMWNmNzNhNzdjZDAxODQ3NzE0M2UxMWM2IGRlc2NyLWJyYW5jaAorMjA3OTQgNWMwNmE5NTk2ZmJmZmRkMTFkM2I1YmQxZDIxNWI1ZGFkN2U1MDEzYyBsZWdhY3ktdHJ1bmsKKzIwNzk1IDFiZWNmNDQyZDczNTU5YmM1NjZiOGVkNTBiYTlhMWUzMTM3MmM5ZGUgbGVnYWN5LXRydW5rCisyMDc5NiBjM2ZmNTcyMjYzZDMzMmY4NTE1YWNiMGUzMThhYTU1MDEyOThmOGVhIGxlZ2FjeS10cnVuaworMjA3OTcgZWQxZThiNmUyNmVjYjFjNzNmZjNlNzhjMGNiMzYzZWUzOTA0ZDdiZSBsZWdhY3ktdHJ1bmsKKzIwNzk4IDllYTg3YzBhN2MwNDM3ODBkNTY5YjYzYTcxZDIyNDRkODY2ZmQ4OGMgbGVnYWN5LXRydW5rCisyMDc5OSBhZDUwMGI1MjY3M2M2Mzk4NmQ2NGJkMDVlNWU1NjAyODI2NzUwOGI0IGxlZ2FjeS10cnVuaworMjA4MDAgMjg5MmFhMjYwN2Q1ZjVlNzQ3OGFkODNjNDA3NmYxNmM2ZTJiZDVkMiBsZWdhY3ktdHJ1bmsKKzIwODAxIGRiMDc0YWJhOWUzNjRjYTc2Mjc1Y2IxNjM5MjlmMDRhZDkxMDU5ZTEgbGVnYWN5LXRydW5rCisyMDgwMiAzZGQ0OTU0MmM0ZDAxYTE2MWM5ZTI5MzAyOGFlYzQxZmZmZWI2MzBmIGRlc2NyLWJyYW5jaAorMjA4MDMgYzg3MmZkZjEwMTMwZjQ2OWU5MmY4YTA4ODIxYTNhZjg2YTg2MTIwZCBsZWdhY3ktdHJ1bmsKKzIwODA0IGYxOGU4MDhjMDIzMGQwMzg3YWQ2YzIyZGUzNmU5MjQxMGViZmRkMDggbGVnYWN5LXRydW5rCisyMDgwNSAyYjVhOWJmZjFiMTFlOTM4MmQ1YTlhZjgyYWJkNTJiMGU2NmZjMTJjIGxlZ2FjeS10cnVuaworMjA4MDYgN2VkMGNhZWJkZDg2MWNlMmRhYTJmMjU0MjI1OTEyYjFkNmU3MzJjOCBsZWdhY3ktdHJ1bmsKKzIwODA3IDNlMjU2ZjlkOTlhZGUwYTkxNTI4OTdhMzA0ZDNkNjg5NDk4YTQyNDkgbGVnYWN5LXRydW5rCisyMDgwOCBhZGEzYmQxYjg3MTM0N2NjYjJhMGVmZDk5ZmE1MjJmMTlhNTY4ZWRjIGxlZ2FjeS10cnVuaworMjA4MDkgZmIzMWMzMzc2MWM5NjVmMGMwOGIxYTI4NTU5ZTEzZWRjMTFiNmQ1ZiBsZWdhY3ktdHJ1bmsKKzIwODEwIDlmZjM1Zjc2NjFiZDczZWQ2MDFiNTQyNDI2MjcwMDNlOTc4OGYzNDIgbGVnYWN5LXRydW5rCisyMDgxMSA3ZjQ1NTRhMWNhZTIyOGYwMjkxOTc2YzllOTM0ZmEzYjc4ZWY3ODNhIGxlZ2FjeS10cnVuaworMjA4MTIgNjk2MGIyYmJiZmNhYTIxMWJiZjBiMTA4OWQzN2I3YjM0NWIxNGM1NyBsZWdhY3ktdHJ1bmsKKzIwODEzIDAxN2E2NGE0YmRjN2E5OGM2MDE4YzRkNzc0YzgwZGRjNTJmYjg0MzQgbGVnYWN5LXRydW5rCisyMDgxNCAyOTVhMmY0OTI3YWI2OWE1Y2FjYTBkMzkzZWY3MjlmOTEzZjM2M2MzIGxlZ2FjeS10cnVuaworMjA4MTUgYTBkMDhjNDJlNzEwMmJhZWFiMzMxYTE0OTFmZDk2OWYxMGFkMDc5YSBsZWdhY3ktdHJ1bmsKKzIwODE2IGJhOTcxMTFhNmFkOWY5OTdmMDEwODg2NWUyMzMyY2MyZjM5NmEzOTEgbGVnYWN5LXRydW5rCisyMDgxNyAwNTVmYzA0NmUwODBlYzBlMmRhNGExOGZkMGZhYTIwMTA2OTAzMmZlIGxlZ2FjeS10cnVuaworMjA4MTggMDI4YTFkMzllZmI2NWM0YjM4ZmE4NTRjZWE0MjQ5YzE2Mzc2MGUxMiBsZWdhY3ktdHJ1bmsKKzIwODE5IGQyZDNmODg2NjFhM2U5OTRhZjcxNzgyNTYwZmQyZmM2MDRkY2MzNmQgbGVnYWN5LXRydW5rCisyMDgyMCAyODA3OTQ5ZTBiYTU5MWYxNGZmMWQyMzAxZGE1YjE5OTg4MzE5MzcxIGxlZ2FjeS10cnVuaworMjA4MjEgNzlhZWU0OThhMmJlNTFiZjg4OWExODY2NWE3YzE4MmI1ODM1N2RiMiBsZWdhY3ktdHJ1bmsKKzIwODIyIDc3NjM1NDljY2E0NTY0YTRlNTEzMWU1ZTU2ZGM0YzQyODUyZjM3ZWMgbGVnYWN5LXRydW5rCisyMDgyMyBiNzdjNDg4OGQ3Y2NhZGQ2Zjc0NzZiZmNmMzI1NmY0MzBmM2Y0MzkxIGxlZ2FjeS10cnVuaworMjA4MjQgYjUzYjYwZjFlZDQ1OTY3ODdmZjFhNGFjMzRjMjNkOTQ5ZjM1YTMzNyBsZWdhY3ktdHJ1bmsKKzIwODI1IDMzNWZiZGVlN2NmODNjMjdiZmFjYmEzMzUyNDJmNzViYjZiYzQxMjggbGVnYWN5LXRydW5rCisyMDgyNiA5N2VjZTkzMjFjNTM2NGZlODc5ZThlYzYxMTRiYjg1OTMwYmEzMzM3IGxlZ2FjeS10cnVuaworMjA4MjcgMGU4NmJkZWIwYjkyNjE3ZWI3MDgyY2U5NGRmMDQ4N2Q3N2UyNTI3MiBsZWdhY3ktdHJ1bmsKKzIwODI4IGJlOTY5ZTcxN2I5MWIwYTI4YmY1MmMwY2RhZWNhOTEyYmFmMjA5OWUgbGVnYWN5LXRydW5rCisyMDgyOSBmZGU1NTA4ZTgyZGU2Y2Q5ZDhkZDc3MGRhNjg4OWIyMzcyY2M4ZjVjIGxlZ2FjeS10cnVuaworMjA4MzAgMDQyZGNhMWQ0NTI2ZTE1OTFjY2Q5NjVlM2Q1ZTdkZWNmOTc3ZjJhMiBsZWdhY3ktdHJ1bmsKKzIwODMxIGNjYjZkNzY2MzNiZTRkOWRhMjdlYThlNmE0M2E0NGJmZjNkNzYxZmEgbGVnYWN5LXRydW5rCisyMDgzMiA2OGJmMDdlN2JjY2M5NGRkNmUyZGFiOGE3ZDUwYzlkZDc2MzRlNzQzIGxlZ2FjeS10cnVuaworMjA4MzMgYjgyM2EzMzE4M2ZjNjRiYmY5NmNiNzY3MWU4MDA3NGI5ZTBmNzI1OSBsZWdhY3ktdHJ1bmsKKzIwODM0IDA5NGNlZTY4OThjMTAyNmM0YTk4NjdmNzk1ZjZlY2NmNjM5OGY3NjAgbGVnYWN5LXRydW5rCisyMDgzNSA0M2I3ZWU3MThmNTNmZmE5MWMzZTZhNjQyZWVmMDU2MzE2ZDlmMWJhIGxlZ2FjeS10cnVuaworMjA4MzYgMjAwZjNhNWRlMWM5YWRiMmVlOGNhZDcyYzNmYTFmZGYzYzMzODc2MiByZWxlYXNlMjEtbWFpbnQKKzIwODM3IDFlYjEyMjU5ZmVlYTY0Nzk4NDgyNjc4Njc1ZWViMzkyZGExYTgyZjkgbGVnYWN5LXRydW5rCisyMDgzOCBlYjAzYzZmYzMxZTViZDlmYjUzMTBlMDgxNTk1MDcyZDdmNmRmZGU1IGxlZ2FjeS10cnVuaworMjA4MzkgMTUxYTJmYTI5NmZlNDJhZmE0MWZkY2U1ZTdjZTg1ODVhMmIxMTdhYSBsZWdhY3ktdHJ1bmsKKzIwODQwIGNiMTFjNTljMThkZDNiZmZhY2ZlMWJlNjI5NTUyOTQzOTgzODdlMTggcmVsZWFzZTIxLW1haW50CisyMDg0MSAxM2JkYjViMjA3ZDI2ZDkzNjk2NTk0NmZmZDA5M2ZlMGI0ZTVmZjQyIGxlZ2FjeS10cnVuaworMjA4NDIgNTI0ZTBmM2MxNjliMjcwN2JhYTVlOTUxMjk3NjYzNzFkZjIwYzEzYSByZWxlYXNlMjEtbWFpbnQKKzIwODQzIDE3YzIwMGE3ZGI4NWFkNmQ0OGU1YWQ4ZWE2NWQ3NGM0YzVmZWU5ODEgbGVnYWN5LXRydW5rCisyMDg0NCA0M2FiOWY4MjRkODkwZDU1Y2IzYTg0YWM5YzMyMjQyZTE1YTU3ZDhmIHJlbGVhc2UyMS1tYWludAorMjA4NDUgZDU2NjY2ZGViOTUzOGZmM2FlMDM5NTkwNDY3ZGZjOGFkMTZjMDdmYyBsZWdhY3ktdHJ1bmsKKzIwODQ2IDYwMjdkM2NmODA1Y2Y3MDdhM2I1OThhZDg5OTNmNzA5YWU3YTkxNmYgbGVnYWN5LXRydW5rCisyMDg0NyAyMDYwZWUwYTdkOTJjNDFmM2QyYjA5ZDk1OTBiMDFmNGU4YTA4OTMzIGxlZ2FjeS10cnVuaworMjA4NDggMjEzNWQ3ZGU4NmFkYjJhYTVkODcxMWExYzNhM2Y2NWYxYzJiNzlkZCBsZWdhY3ktdHJ1bmsKKzIwODQ5IGE5M2RhYWZiZDEzZDc0OGNlOTVkMTZhYzllZGNhYmNkYTViZGMxMjcgbGVnYWN5LXRydW5rCisyMDg1MCAwYWY4MjRjODgyMDMwNjFlNDA0ZWFkMDViYzNmMWY5Y2E3YmI4ZTNiIGxlZ2FjeS10cnVuaworMjA4NTEgZmQ1ZjgzMTg4Nzc4NmQzMTJjMzhiMzZmN2FiZGJhZjFhOTZjMzk4ZCBsZWdhY3ktdHJ1bmsKKzIwODUyIDkzYjU5MDcyOWJkYzg5OTBlZWY3MWNhNTQ1MWViYjFjM2FhZDY2YjYgbGVnYWN5LXRydW5rCisyMDg1MyBmZDEyZTgyYjc3MjdmYjI4MmY1ZWQ3ZGQ0MTA3YmYwOTYyMmQ5ZDI2IGxlZ2FjeS10cnVuaworMjA4NTQgYTFkZGM0MDgwY2M1NzIxOTdlY2U4Njc5OGY4OTlhMzZmOTc3MGQ0NyBsZWdhY3ktdHJ1bmsKKzIwODU1IGY5NWJhZGE1MjczZTI4OTkwY2NjYzM2ZjM2YjM0ZWYwNjQyNzM1ZmQgbGVnYWN5LXRydW5rCisyMDg1NiA5MzllM2RhNTljNjEyMjEyNjMwYTE0ZmM5NTcxMDBhNmI3YTVlNzljIGxlZ2FjeS10cnVuaworMjA4NTcgNWIwOTdmNjE3MTczNTM4OTJkMDhmNDdiZmEyYTU0ZWQ2NTUwZTIwNyBsZWdhY3ktdHJ1bmsKKzIwODU4IDhkYTk0NzNmMDczNmIwNDhiYTRjYWUxNGY4NTM0YjMyZWRjNDU3YzMgZGVzY3ItYnJhbmNoCisyMDg1OSAxNGRhNTMxNDY2NGQ5NDgyY2RhMjEwNmUwNDk1MTg0ZGY4ZWFlZTIxIGxlZ2FjeS10cnVuaworMjA4NjAgYzRmNTU0MDFlOGFlZDU3MDFlMTQxMjMyYWQ1NzVjYzdjZjNmZTQyMSBkZXNjci1icmFuY2gKKzIwODYxIGUyMDgwZGI3MWIxYjBjYmFhYjY2ZmVjOTc3NmM0OGNhNjg4MjRlYmIgZGVzY3ItYnJhbmNoCisyMDg2MiBjMTBiNDE4NTUyMDI4YWQ3YmZjMTFiZWQ1MzRjNmRiNjIwZGUwMGZjIGxlZ2FjeS10cnVuaworMjA4NjMgZjBjM2RlMjJjYWVkZGVhMjI0Yjc4MTM0NTRmMmJhNzRiMzBiZmRkZCBsZWdhY3ktdHJ1bmsKKzIwODY0IGNjOTg0ZWQyNjU4NmFjMDZjNmVjODlkNmY0NzcwZGVkN2IzZDUzZDcgbGVnYWN5LXRydW5rCisyMDg2NSA1ZDUwZDFmYWUwNzg3ZjU5MmQ1N2RkYjE3M2QwZGRmMDcyYjhiOGJiIGxlZ2FjeS10cnVuaworMjA4NjYgMzhmZGY5OGRhOTlmZGQxNjJlMmRiZjNhZmY0YzdkNmE5YzVmNjNiZiBsZWdhY3ktdHJ1bmsKKzIwODY3IDM0YjE1MDRlNjY0NGM3ZThkYTEwZGEyMzRiMGIxZDRmN2I0NDQxNTIgcmVsZWFzZTIxLW1haW50CisyMDg2OCBhZThjNGY0NzBhMGU0NDcyN2M3MzkyNDAzNWZhMTAwODA5ZTA0NjlkIGxlZ2FjeS10cnVuaworMjA4NjkgNTNkZTBlZWE0ZDI1Yzg2ZTk5OGVlYzU3YTM3MjNiOGQ1NTRhZDQ5MiBsZWdhY3ktdHJ1bmsKKzIwODcwIDY5NzM3ZDdmNDc3NmZkNmMzMjk0M2Q1MGJkNjIxY2EyMTM4ZDZkMjUgbGVnYWN5LXRydW5rCisyMDg3MSBhNDZmMWY3YTljODY5YTJjNzU0OWUxYjU3NjFiNTNkNWU1M2E5NDUxIHJlbGVhc2UyMS1tYWludAorMjA4NzIgMGE3YWYwZTUzOGQ0YWJkY2MwYjU3ZmEzMzZkNjc3NWFlYzE0MTFhNyBsZWdhY3ktdHJ1bmsKKzIwODczIDlhZjgwNmIyODZjNjE2NTQ3NjZkM2UzMGMxNDhjMTUwNDljMGIxMTcgbGVnYWN5LXRydW5rCisyMDg3NCA3Yjk3NzFmNjg1NmIzMDlkZDMzMmNhOWE2ZDJlYmM2NDI0ZTExNzhiIGxlZ2FjeS10cnVuaworMjA4NzUgZDg4NDIzNWZlNzVjM2Y0ZjY1MTMxMzQwM2QxOTIwNzBlY2U2ZTFlNiBsZWdhY3ktdHJ1bmsKKzIwODc2IDc3ODcxYzQ5OTIxNWZiMTljNzQ2NzRmY2UzMjZiN2MzMjEzODYxZTQgbGVnYWN5LXRydW5rCisyMDg3NyA2MTlmZDhlMDY3ZGFlY2YwNzcwODNkOTc2NWZhNDQ1ZjE5NzQ4MDYyIGxlZ2FjeS10cnVuaworMjA4NzggZmJmZmI2ZGUyNWRkY2IzYjgzZWRjMmY4ZWQxN2RhZjc5ZWY3MTBjMSBsZWdhY3ktdHJ1bmsKKzIwODc5IDQyMWIxZDY2MDQ5NTA4ODY5ZjFjN2U3MjhlMjk2NGRlMmM1ZTAzYmQgbGVnYWN5LXRydW5rCisyMDg4MCA4NGZmMTk3N2Q3NzI1ZmI1MjQwNTdlZDczZWJmOWFjNzRjNWFlYTgzIGRlc2NyLWJyYW5jaAorMjA4ODEgNDY5MDlmMjIxNzBjM2U4NjgyNjAyZDY2N2QwZWE1ZmJhMTI2MGRjMSBsZWdhY3ktdHJ1bmsKKzIwODgyIGZmNmE2ZDM0NzE5NWFkNGQyNDIzZDg3YzZiY2M2ZDVjY2NkMDBlY2MgbGVnYWN5LXRydW5rCisyMDg4MyAxYmU2ZDY4YWUxMmNlN2IxYTRmYzM0YWIzNjY5MTZiOGNjYmJmYTg4IGxlZ2FjeS10cnVuaworMjA4ODQgNmM1YTgwMGRhNzkxZjQyNTljZDFlMWQzZjg2NmRlMDIxN2ZmNThhNCBkZXNjci1icmFuY2gKKzIwODg1IGE2NDNhODdhNGIyY2FhNDYzMWM4MzIyNGU3MzVlOWE5ZWMwN2YxZDMgZGVzY3ItYnJhbmNoCisyMDg4NiA3MGNkOWE0MTkwNzY5NDI3NDA0MjdmZDg4MzQyNWEzMGJlNGU1YWNkIGxlZ2FjeS10cnVuaworMjA4ODcgYmQ1MzQ5YjQxMWY2MWE2OWYxYWY1MDFmZDZlZjM1NDU5YzIwZGVlOSBsZWdhY3ktdHJ1bmsKKzIwODg4IGQ0MjY5NDM3ZThiM2RjMWZjNWYxN2Q1Nzc0OTFhMWU4Yzk5ZDQ3NjggbGVnYWN5LXRydW5rCisyMDg4OSBjZTY5ZmI5YzhkNTYxNzA4Yjg5MjllM2E5MjdlZjJjYjQ1MTY2NmM5IGxlZ2FjeS10cnVuaworMjA4OTAgMTYwMDViMjg1NTc2MmRmMWRhMDBiMTNkZTc0Y2UwODhmZGE3Mzg0MyBsZWdhY3ktdHJ1bmsKKzIwODkxIGExZmNmZGNiMzQ3OTY2ODE1MzJkZmRiMmJlMzdlNGJhZmI3NzAwNmIgbGVnYWN5LXRydW5rCisyMDg5MiA1YWJjMjMyOTkyMmZlZDZhMzI2MGRlODE2ZWYwM2MxYjdiMzEwNTQxIGxlZ2FjeS10cnVuaworMjA4OTMgYTg5NWQ3ZDczOWFkNDE2Yjc0ZTJmOGQ1NmRlYTUzNjVkNjQ4ZDFlYSBsZWdhY3ktdHJ1bmsKKzIwODk0IDQ3NGUzZGUwMGIwNTBlY2JiYjA1MTJlMzRkNzgwYjg4OTc5NTk4ZTMgbGVnYWN5LXRydW5rCisyMDg5NSAyOTdhMjY2YWM0ZWUxNzJiZGQ1ZmYyZWFlZmYwNDkzZDk4MDY5NzVhIGxlZ2FjeS10cnVuaworMjA4OTYgZGVhMGJhZGU2NTZkNDkxNTEwZjA4YWJlYjRmZWZhNmFiYjlmZjJhNSBsZWdhY3ktdHJ1bmsKKzIwODk3IDY5NGM5ZjBjZDgxNDI5NzkzNDhkNmIzNDEyY2VlNTM5MGIyYWJiYTEgbGVnYWN5LXRydW5rCisyMDg5OCA4MzFjMjdmODc2YWM5ZGJjZDliNzdhYjc2NjMwMGFmYjY0YTBiZTM1IGxlZ2FjeS10cnVuaworMjA4OTkgYmJmNzAyMDQ5ZWM2YjFiZjFmOWIzNjBkMDJmOTYxOTM3ZGJmYjg2NyBsZWdhY3ktdHJ1bmsKKzIwOTAwIGU0ZTg1M2Q1NTY3NWEyOTZiZTNlNmI3YmVlZGRhY2RhMDIyYjkzZjMgbGVnYWN5LXRydW5rCisyMDkwMSBlYTBjYWQ5MmNmZDI3YjdmNmRjY2E3M2UwMmVkNDQ1MzYxNzU2N2E4IGxlZ2FjeS10cnVuaworMjA5MDIgY2U3ZjBlMzgwODMwNDg3YmQ5M2Q4ZTBmMWQ2N2Y4MGQ0YTQ1MjRiZCBsZWdhY3ktdHJ1bmsKKzIwOTAzIDU2MjE3NjE5MWU2MDQ5ODc1OWRiNmEwMGIyYmM3OGYyNTJkMGY1N2EgbGVnYWN5LXRydW5rCisyMDkwNCBlMTRiNDFmZDJhYjI1MTUyMTg4NjcyMzRmMjcxODE3NDU0YjBhNDc1IGxlZ2FjeS10cnVuaworMjA5MDUgY2ZlMDgxYzk1NTNlYzc4NDc2ZmQ3NTRhYzg5M2JjMTcxYjM2NzdjMCBsZWdhY3ktdHJ1bmsKKzIwOTA2IDNlNjlkN2RiNWY4ZDUwZmI1NTM5ZTQ3Zjg5N2E4NGUzNTI0MjE1YTYgbGVnYWN5LXRydW5rCisyMDkwNyBhNDI5MTBiNTQ0MmE4ZmQ3NzRhZjZlNDNkYzc1NzJkMzBlM2JlNzFlIGxlZ2FjeS10cnVuaworMjA5MDggMjJiNTE1MmQyM2ZjMmJlZTA4MGZmMjY5MTM2YWQyMzgwYjM3MzQyOCByZWxlYXNlMjEtbWFpbnQKKzIwOTA5IDIyMzQ0MTU0MDQ0MzE2Njc4Yjc3N2ExYzhiNjgzYzVkOWI5YjE0N2IgcmVsZWFzZTIxLW1haW50CisyMDkxMCBiODZlZWVkZGFlMjEzNDZlNGJjZmQyZjZlMDZkNDRlMjczYWYyNDM3IHJlbGVhc2UyMS1tYWludAorMjA5MTEgZGI0M2JlMTlkM2UzM2IwMDAxNTkxNzE0MzU4OGIxM2JkNjk2ZGViZCByZWxlYXNlMjEtbWFpbnQKKzIwOTEyIDA5NjA3MmQ4ODc5ODY4YWNiMGRjMmJkOGZiYTI0ZGY1Y2Y5OTI0MDkgcmVsZWFzZTIxLW1haW50CisyMDkxMyBkMDc5OGIzYTM4YzE1NmVmMTdiMjg4NGUzNzhiNDU1ZmI5N2IzZjY1IHJlbGVhc2UyMS1tYWludAorMjA5MTQgMmVkYWE4ZTlmMzgxNTE1Y2IwYTc4N2U3M2Q5ZWZkYzgyYjhiMTlkOCByZWxlYXNlMjEtbWFpbnQKKzIwOTE1IDA3MTFmM2NkNDRkMDc3MDcwMzk0M2Y2NmZkNWQ0ODllMmY0ODhlM2QgcmVsZWFzZTIxLW1haW50CisyMDkxNiBlMTgxNmY2NDlmZjhlMTIzNjQ5ODExNzI3ZmQ2YmZhOTNlYzExNDY1IHJlbGVhc2UyMS1tYWludAorMjA5MTcgNWQ4OTRhNWZjZTM4YzJjOTVkZTAwNjc2NzY1YzM4YTI2NmU1ZDA2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE4IGIzOGZkMmJkNjhjMGExOWU0NTI0MDdmNGUyZmI1NjdiMGVlYWQ1NjEgcmVsZWFzZTIxLW1haW50CisyMDkxOSAxNDU4YjU5NmE0MzRhYzhjM2NkMDQ3OTA3NmE3NGZkNzlmNTQyYTk2IHJlbGVhc2UyMS1tYWludAorMjA5MjAgNzkzYjc1NTQzZjEzZjViNWIzYjgyZjNhNWI1NTEwOGYyZjhhNGViNSBsZWdhY3ktdHJ1bmsKKzIwOTIxIDhjNDdkOWRhMzBkZTI2ZGM4ODg5YmM5YmQyMjU1YzgzOTFhMTEwOGEgcmVsZWFzZTIxLW1haW50CisyMDkyMiA5ZGZkMjJlOGU5Yjc2ZGQxOTcxMDI4NjY4MDVkODZjOWIyMjMxNTc1IHJlbGVhc2UyMS1tYWludAorMjA5MjMgYTQyOWRhN2RiNzA2OTU0NjdjZDYyY2U1Zjg2ZGI3ZGQxZjkyMGMxZiByZWxlYXNlMjEtbWFpbnQKKzIwOTI0IDI0ODQxOGNiZDAwNTI3ZDQ3ZTU1ZjU4NzZmYjQ1ZDgzMjYwYThmMzcgcmVsZWFzZTIxLW1haW50CisyMDkyNSA0ZWQ2NTdkMzdjZWE3YmQ4YzNkYTgwZTRkYTEyYjY3ZGI1Y2M4NmRmIHJlbGVhc2UyMS1tYWludAorMjA5MjYgNTY5NmRkZGEzZTQwZjk3MWZiYTE3M2RhMjRmOTQ0MTI5YzJlZDU1OCByZWxlYXNlMjEtbWFpbnQKKzIwOTI3IGZjNjhmNmVkNzAxNDIwNDU1ZjY3ZDA4YjQ4OGVkODliNGY0NzBiMDkgcmVsZWFzZTIxLW1haW50CisyMDkyOCA0YWQ3YTJhYjQyYjQyZThjNTBjOThlOWRhNzE1MzQwOTM0MTRiMmJlIHJlbGVhc2UyMS1tYWludAorMjA5MjkgZTViYTBkMmI0N2UyOTQyNTJlMWVhYjRlZjM1MWVjNTJhM2UyZTI4OCByZWxlYXNlMjEtbWFpbnQKKzIwOTMwIDEwMzExMWFkOTlmMWYwZTJlYmE1MDQzMTYzNjlkZGVjZGJlMDIxNTcgbGVnYWN5LXRydW5rCisyMDkzMSBhZjQ4OTU4NzUwOWRjZGRlNjNjMDkyZTgwM2RjY2FkZWM5YTFmOGM5IGxlZ2FjeS10cnVuaworMjA5MzIgZDg2YjI0NWUwODU4MDFjMjRjNzI0MTQzOGQyOGRlNWI5NWQzYzY4YSBsZWdhY3ktdHJ1bmsKKzIwOTMzIDk1YmFhMzMzZWU0M2NiODAxNzg3NWFkYWYyODg3YzhmZGQ1OTdmMjIgbGVnYWN5LXRydW5rCisyMDkzNCA1ZTExNDExNTdkNTNmZDk1ZTc2OGNhMGNlYzA2NzRmMjZlYjliNzBjIGxlZ2FjeS10cnVuaworMjA5MzUgNzhmNjcwNzFjOTQ5ZWIyYzkyYzNmZWU5ZGQyYTM3NzBjZDlmNGJjOCBsZWdhY3ktdHJ1bmsKKzIwOTM2IDE3OGJlZGY5NTM2ZDhjZTFjMGZjNjY2NmVlMzEwODU1YzcwNzFlMmEgbGVnYWN5LXRydW5rCisyMDkzNyAwNWFiMGE3MTRlNGNhZWE5NzQwY2UyNTg5Y2Q0NzU5MTJlYzNhMDBhIGxlZ2FjeS10cnVuaworMjA5MzggYjIwMThlNWQyMTQyYjk0MWQyMTcxMjA4ZGI2ODdjYTdjMWI1ZjRkMiByZWxlYXNlMjEtbWFpbnQKKzIwOTM5IGVkOGI3OWM2Y2I0YjJjZGFhYzQzZjc2YWI5OGQxYWE4YjkyZTY1Y2QgbGVnYWN5LXRydW5rCisyMDk0MCBmOWEzNGFjMTRjOGJlOTk2MjIyMmIyNDFiNzY4NzQ4ZWQyYzNlNjEzIGxlZ2FjeS10cnVuaworMjA5NDEgNzNmY2M0ZjRhMTgyMjkwZWQxNTMwNGI5ZDgwODUzYWZhOTY2YWIzNiBsZWdhY3ktdHJ1bmsKKzIwOTQyIDQwMWNjZmNmMjhjMzg4NDBlYTdlNzcyZGUyMTAwZGM4NzMzNTFiNjggbGVnYWN5LXRydW5rCisyMDk0MyAyZjJlZTVkYWE2MGRiNjU3OTcwY2Y1NmU3NTgxOWRmZTdmZTI5OGY1IGxlZ2FjeS10cnVuaworMjA5NDQgYjBiNDZkNzczNGUwZWQzZTQ4YzRiZjUyYTRjNDI4Y2ViZDNlYjI3MSByZWxlYXNlMjEtbWFpbnQKKzIwOTQ1IDUyN2QwZmZkZjA5OTAxNjExYmY2MzYxYzMzOGJiZjJjMzM1NmI2MmMgbGVnYWN5LXRydW5rCisyMDk0NiBkNTc5YTVkOGIzZmVhODFjMTE1Y2ZmYzY3NGEwMGUzODA4NDAyY2Y1IGxlZ2FjeS10cnVuaworMjA5NDcgMmE5NGJmMjM1ZGFhY2ZhZWY0ZTc5Mzc3ZTA5MWI3OGVmMGU3ZDUzNiBsZWdhY3ktdHJ1bmsKKzIwOTQ4IDVlODdhMDhhYmIwNTdhMTVjYTkyY2QyYWM5YmIwYWEwNWUzMzA1OTMgbGVnYWN5LXRydW5rCisyMDk0OSAxOTJkMzY4Njk0NDU1OGEzZjM1OTdkY2Y0ZGI5YzZiMTNjMGZhOTBiIGxlZ2FjeS10cnVuaworMjA5NTAgZGIxM2ZiNWM4NThhNTE5MzExMTZiMjQ0ZmU2N2IzZTlmNjAwMDY0YSByZWxlYXNlMjEtbWFpbnQKKzIwOTUxIGEyYjk5NmM3MTZhMWM1MDQ0NTk5MWJmNTRkMTBiYWFmYjQ3N2EwNDggbGVnYWN5LXRydW5rCisyMDk1MiA2MmVlYzI5MzZjZDNmOWUxYjYwMDU4NWZhOTFhMzVmYzZiMGYyOTc1IGxlZ2FjeS10cnVuaworMjA5NTMgOTUyNmYwZWQwNjZhMDQ3ZTRjNGU4ZmQwNTRkZWQ1ZTk3NzIyNDg5MyBsZWdhY3ktdHJ1bmsKKzIwOTU0IDQ3YzdjMWViOTU3NGQxOTljZTU0ZTVlMzIyYjQzYjQ2OTg3OTY5MjkgbGVnYWN5LXRydW5rCisyMDk1NSA3MDZiYjZjOTQ1ZGZmNTgzMzdhN2Y5MzRmNDY2NTAzNmIyNDBiYTQyIHJlbGVhc2UyMS1tYWludAorMjA5NTYgODU4NTA0MWJhNTdiMWJlY2UxZGY3ZDM5NDRkNjA3ZWJiZjQwZWIzNyBsZWdhY3ktdHJ1bmsKKzIwOTU3IGFlMDhhMDFmMmYyZGQyZjU4N2ZhNjk3ZGNjNWMzMDA3MmNjMjNkMDUgcmVsZWFzZTIxLW1haW50CisyMDk1OCBlODE5Y2MwYTllZjZkYzBiZWRmMTlmNTNiZTQ1Mzk1ZTNmMzM5OWY0IGxlZ2FjeS10cnVuaworMjA5NTkgODM2MTRkMGUwMGYxNWU3NDVmMGUyNGM5OThhZTJhOTI0NjczNzQxNSByZWxlYXNlMjEtbWFpbnQKKzIwOTYwIGNkZjg4YmEyZDk2OGI5M2IwYmFjNWU0MzgwOWNmODRiMTk1NDFiNzcgbGVnYWN5LXRydW5rCisyMDk2MSAwNzY5ZTExZDlkNWY0OGYzZTM2MWE1NGE5NTYzZTEwZWI3MDQzNzM2IGxlZ2FjeS10cnVuaworMjA5NjIgOWVlMjE4MjQ4MWFmOWExNDczYTZhYjcwYjgyZDliZTU0MTk3NmNlZiBsZWdhY3ktdHJ1bmsKKzIwOTYzIDQ0N2VhNjUxODFjMjg1YzA2NzQ3OTgyYmE0N2Q3ZWQxN2MxMGU4YWUgbGVnYWN5LXRydW5rCisyMDk2NCAyOThmYjI5ZGFhODFjMjczNDM2MmM2N2FmZTA4ZWY1YmU3NTRhNmEwIGxlZ2FjeS10cnVuaworMjA5NjUgODM3ODI1YTc3OWMxNmVhMzIxYzUzMjY2MTg0YjIwNDNmZjA2Yzk2MSBsZWdhY3ktdHJ1bmsKKzIwOTY2IDVhOWRlYmIxNDQ0MGUyNTJlMzM1NWYzM2JhNDk1YmMxNGI5NmI5YjQgbGVnYWN5LXRydW5rCisyMDk2NyAyN2YyNDIyZWEzMzU3ODBhNzcwZmUxNDcyODZmNmJjMjY5NGFjOGFlIGxlZ2FjeS10cnVuaworMjA5NjggYzhjYjc5NzcyMzY0ZTQ4NjBhYjFjYWY0MGMzMmI4OGJiM2QxODY0ZiBsZWdhY3ktdHJ1bmsKKzIwOTY5IGZmNjQ0ZTYwODUyOGNmNmM0NzVjYTAzYzk1YWU3MjE4YzQzN2IxYzUgcmVsZWFzZTIxLW1haW50CisyMDk3MCBlYzkzNDNhZDFlNjA5YTdjNWJhNWRlODRjMmY0M2FkMzMyNGQ2NjE1IGxlZ2FjeS10cnVuaworMjA5NzEgOTc4MDZhNTk5YzdlYjVhNjk3NjdjYzNiMzg5MTUwYjEzMGQwN2RlYiByZWxlYXNlMjEtbWFpbnQKKzIwOTcyIDQ1YmFkZmJmYjAwZWY2MTM2ZjA1NzNmMWU2MTE2YWZhY2IwN2QyNTkgbGVnYWN5LXRydW5rCisyMDk3MyAyN2VkZThiMDk1ZDZkZjFkMTRlMTlkYTJhZGE1NWNkNDczZTllOWQ5IGxlZ2FjeS10cnVuaworMjA5NzQgNjRlMWVhMzRiNTUzMDBkM2YyZTU1OTRmNzRlMGNiM2VlMTlkODVmMyBsZWdhY3ktdHJ1bmsKKzIwOTc1IGJhZjIxMzdlOTY3NmNiNDQ2YzlmN2Q0YmQxYTkzMmUyNGFhMGU2ZTEgbGVnYWN5LXRydW5rCisyMDk3NiBlNjBmYzAxNzYyYTBmOTAxNzc0NjY0NDg3NDNjYWZlYTc4NmZmMjY2IGxlZ2FjeS10cnVuaworMjA5NzcgNmEyZTI1NDhlNmNmMzlhMWQ5ZjFkMzU3NGIxZWFiZTJjYzA5Yjk0ZCBsZWdhY3ktdHJ1bmsKKzIwOTc4IGE0MzAxNDMxYjJhYzhlNzVlZmMzOGM5MjY5ZDc0Y2Y1Njk4MWM5NmEgcmVsZWFzZTIxLW1haW50CisyMDk3OSA1MGUzMzgwYjA4NmExZDQ3NjIxZTNmOTg4NWYxZWM2NjFhY2VmYTZkIGxlZ2FjeS10cnVuaworMjA5ODAgNTNiMGY2NWEwYTA1ZDc1ZGYxM2FkZTQ1ZjMyNjJlZTdhYjNjYWZlMyByZWxlYXNlMjEtbWFpbnQKKzIwOTgxIDE4MDcxMDkxMWYxNWQ3ZGM2N2Q0YTQwODY3OTZkZTZkZDY4OTQzM2UgcmVsZWFzZTIxLW1haW50CisyMDk4MiA1ODI4NDVlMTRlNWNjMTVjYzA4Y2QxODg3ZjJiNzAyZDgyZjQ2ODZkIGxlZ2FjeS10cnVuaworMjA5ODMgOTlhZWE2ZjVjZWJkMjhlZjUxOWM4MTBhZjJkZTY0NmQyM2YyZTM1MiBsZWdhY3ktdHJ1bmsKKzIwOTg0IDlmOTcxNjdmMTY0MzAxNjczY2VlY2I5NmE3ZWZhNzQ0MDExMDczY2YgbGVnYWN5LXRydW5rCisyMDk4NSAwYzFhMDRlOTgxMzQyZmQ1Yjk0ZDFjYTNhYzhlNTg2ODZmODVmNDdlIGxlZ2FjeS10cnVuaworMjA5ODYgMGQ2Zjc2MGI2ZWYxYTY0NDM2YjE4ZmE3MTE3Nzg5MTUwZTg5YmMyZCBsZWdhY3ktdHJ1bmsKKzIwOTg3IGZhY2ZmNWY1MGZjY2FmMjhlOWRkOTAwNmE0YWY1NjRiZWNiNWY3ZDcgbGVnYWN5LXRydW5rCisyMDk4OCAwMzhlMmY3NDgwMGQ5NzgzMDFlZTQwY2Q4MWRiNTEyYmQzOTQyYWYzIGxlZ2FjeS10cnVuaworMjA5ODkgY2E3ZTJlMWFlOGRmOTZlNTg2NjkwMmQ0MmY2MzczMjIyZThiNzRjYyBsZWdhY3ktdHJ1bmsKKzIwOTkwIGU4NmQzMzA4MWJiYTk0YmU5ZDc4NmU2Njg1ZjkzZjliNTVjNzRkZGYgbGVnYWN5LXRydW5rCisyMDk5MSBjOTg3ZGNkODgyYjljNzMxOGQ4NTFmNzZkZGRhMDBjMWI4MGI3NDYzIHJlbGVhc2UyMS1tYWludAorMjA5OTIgYmQxYzRmZTk3N2NiZGM3NTczMmY1ZjAxY2JkMWEyZmNhY2ExZjY4OSBsZWdhY3ktdHJ1bmsKKzIwOTkzIDhkMmJiYmJmMmNiOWZkYzJmYTg3YmEzYjgzYmRmZGJjMzMyMGM0OTcgbGVnYWN5LXRydW5rCisyMDk5NCAxOWI1MDRmYjlkMTU2ZTdiMTdmOTg5MjIxZDE1ZDZjYTgzZTBmYjQ4IGxlZ2FjeS10cnVuaworMjA5OTUgNTExNTg3YWIyZGQyZTZmMjgyZDZmYWRlODA5MmUwODhlM2IyNWNkOSBsZWdhY3ktdHJ1bmsKKzIwOTk2IDAyNDI2NzQ0MTc2MWU5NDRiZmFhZjNkY2FjODNkNjMxNTVkYTYyNTMgbGVnYWN5LXRydW5rCisyMDk5NyA1MzkxYjlkMDIyYWMxMjc1NzE1MWY3ODdiMzQxZmNiNDBiYjBjYTg2IGxlZ2FjeS10cnVuaworMjA5OTggZWU1ZjAxNjVlNGUzZWIxZGIwZDA5NDRjY2JmZmI1YTZmZGE0OTgxZiByZWxlYXNlMjEtbWFpbnQKKzIwOTk5IDRkNjJhMmZlYzkzMGEyYTg4NDAxNzdkN2NkNWQ1Zjc1NDEzMjM1MDUgbGVnYWN5LXRydW5rCisyMTAwMCA2YWU2MTIyOTEyZDJlZGI5ZDQyNTEwYjhmNjhmZWUzMGY4ZGEzZGQ5IHJlbGVhc2UyMC1tYWludAorMjEwMDEgOWViZTg1ZTcxNTUwNDEwNGMwMGJjZGIzZGY2ZTY5YTFkNmZjY2QwMSByZWxlYXNlMjAtbWFpbnQKKzIxMDAyIGI5OTk3OWQwZjllN2MwODA0ZGI0OWI3NWMxYTY5NjQ1MjU0ZjY5MTIgbGVnYWN5LXRydW5rCisyMTAwMyBiZDk3YTRmZGI2ZjNjNWY4MjZkNjY2ZWRjYmRiNzQzNTczNDk0MDQzIGxlZ2FjeS10cnVuaworMjEwMDQgYzAwMzczMTc3YmJiNmQ2YTg2OGE0NmFiMzc4YzAyN2UyYjhjOGNiOSBsZWdhY3ktdHJ1bmsKKzIxMDA1IGZhMjI1NWQzMTUwMGU5MmQ0NDc2MmQzNjgwMWNlMjlmYzQ4ZTdmZjEgcmVsZWFzZTIxLW1haW50CisyMTAwNiBhMDIwODU4NzFjM2ZlNGZjNjY1YTNkMTE2NjYxZWZhNWNlNDYxODZhIGxlZ2FjeS10cnVuaworMjEwMDcgZGYxYzUzYTgxNTAyOTEyNjVkNjc5Y2Q0M2VjNTczYTE1MjQ5NjYwYyBsZWdhY3ktdHJ1bmsKKzIxMDA4IGE2ZjhiMmZhMmUyMDE4M2U1MTExOTQyZmVhN2M2NzZiYjI3YTI5ZjggbGVnYWN5LXRydW5rCisyMTAwOSA5MTYxOWQ3ZGY1OGI5YjA3YWU5NDgxZGJjZGVlYjExNTEyYzdhNWM4IGxlZ2FjeS10cnVuaworMjEwMTAgNmZkY2U3NmQ0MDY2NWUwZGQ2MjMyNTJjMGQyNzA0MzNhNzU3NmQyNSBkZXNjci1icmFuY2gKKzIxMDExIGJmMTZjM2NhNTgwZWM2NDc3NGJlOWZmYWNmNDlmMmJlNTkwOGVlN2MgZGVzY3ItYnJhbmNoCisyMTAxMiA3M2ExZTlmN2M4M2YyMTY2MTk2M2U0MDNiYzU0ZmExOWQyOTEyYWNmIGRlc2NyLWJyYW5jaAorMjEwMTMgOGM0NWE2NGVlODMxYjc4OTJiZmI3YjkwNjkzNjM2ZTAwMGYxZDMzNiBkZXNjci1icmFuY2gKKzIxMDE0IGU5MTk0NzMxNzZjODIzNGRjYjU4MTg1MjM1MTNlMzUyMTA2OTE3ZjAgZGVzY3ItYnJhbmNoCisyMTAxNSBlZDQyNTJiZjA4MGM5N2UxZDg2NzkwZTUwM2M2NzBkMDI3MWI1M2ZhIGRlc2NyLWJyYW5jaAorMjEwMTYgNDlmMGZmNmViNGViMTM1ZGMyYTVlYzU0MjZhMjM4MmVlYzNkMjg1NSBkZXNjci1icmFuY2gKKzIxMDE3IGMwNzQzMDI1YjIzZGIzOGYxZjMwMzgyZDk5Mjg1NDE2MGNjZTI4ZGEgZGVzY3ItYnJhbmNoCisyMTAxOCA1NDY2Y2NiYjJmOTc0OThlYmJiMGY3NThmYTJkYmM0YzA4NTAzMjZjIGRlc2NyLWJyYW5jaAorMjEwMTkgNWI1MDU2Y2YxNDg4Yzc1Y2M0YzNhM2Q4ZjM2MTliMDI0NDQ1ZjI2NSBkZXNjci1icmFuY2gKKzIxMDIwIGZiOTNkZmJkODA1MjM1N2U4ZDg1ODRlZmY4OTdiY2RmZWZmMDlmM2YgbGVnYWN5LXRydW5rCisyMTAyMSBjMmQ0OWE3MzIxNjZkYmIxZDkyZTkxZGFiODJmYmRiZTNiNTUzNzgxIGxlZ2FjeS10cnVuaworMjEwMjIgOTU3Zjk0Mjg2NjBmMjI5NjRkNTJmYWMxNjBmMGM3YWQwMzIwMmNlMSBsZWdhY3ktdHJ1bmsKKzIxMDIzIDNjYmI4NTcyNmY2ZWQyMTQyNjNkOWYzYzhlMTExNWQwYzFkYjY4Y2UgZGVzY3ItYnJhbmNoCisyMTAyNCBlMGYwZjdiYzVkYTc2OTRiYWM3MDVhYjJhZTliYTBiZjlkZWE4MjQ1IGRlc2NyLWJyYW5jaAorMjEwMjUgM2FiNmM0MzRhOWM4NzUzYzI0YWJmZTUyZmQxZTcwMGYyOTE5ZDI5YSBkZXNjci1icmFuY2gKKzIxMDI2IDY1MzIyMTAzOTU1YTA0ZDA5MGYwODdlOTAxN2Q4ZThjZmNkMDIxMDMgZGVzY3ItYnJhbmNoCisyMTAyNyAwZDQ2YjdjNzEwNWUyZTNlZTExNGJmZTJlOWYyZTFjNjUxNDhhMTA4IGRlc2NyLWJyYW5jaAorMjEwMjggYTc4MjY4NDI0ODY4YTE5MWFiYjRhYjRjMzBjNTNjZGNmNTVkZDJhZCBkZXNjci1icmFuY2gKKzIxMDI5IDBlNTE4YTUzZWM1YmVhZDlhZGJmY2I4ZDkxYjg2OTUyYzRmYzRmZDkgbGVnYWN5LXRydW5rCisyMTAzMCBkY2IxYzNiZDhlMGU4OTc2NmRmZWNlNDczMThlZDg5OThhZjY5NzZmIGxlZ2FjeS10cnVuaworMjEwMzEgOTZkMTEyMTUwMTNhYjIzMzBlOTllZGNjMGZjZTljZjgyM2YzYTAwNCByZWxlYXNlMjEtbWFpbnQKKzIxMDMyIDk2MzMwY2NjODcwYTk0NDQxMzAxNDQyNzNkMGQyYWE3MzQ5OTJjMTUgcmVsZWFzZTIxLW1haW50CisyMTAzMyBlYTgzMDhmZDA2ZjIzZDlhMzk4ODU0Y2UzY2NkMGRhYjQ2ZTM3YmE4IGRlc2NyLWJyYW5jaAorMjEwMzQgODU5M2I3ZTBiNjQ1NDE2M2ZlMzA4MmM0MzZkOGM5ODQzZDU3MmU5NCBkZXNjci1icmFuY2gKKzIxMDM1IDY1NjljODQ5OWIxNzBmYTdiNTFkMGI2NjY1ZGYxOWM3MmEwYmJiZDIgZGVzY3ItYnJhbmNoCisyMTAzNiBlNzliYjViOGE1ZDBlOWFhNTI0ZmQxMWE2MjFiN2U3NGYwYzI2NjQ0IGxlZ2FjeS10cnVuaworMjEwMzcgMWI5MjcwMWEwZWQyZGQ1ZmI0NzIzZmE5YzI4M2M0MTkzMmVmN2E4YyBkZXNjci1icmFuY2gKKzIxMDM4IGI3M2MyODE3Y2MxYWMwMjFjYzcyMGY2Zjg0OTJiYTgyZGEzMGY0OTcgZGVzY3ItYnJhbmNoCisyMTAzOSAxNGRjNzVhNTYwMGFjNWFiYTI4YmU2NjAxZDFkOGRiYjNhN2IzYzYwIGxlZ2FjeS10cnVuaworMjEwNDAgODFhOGQxODMwYjYzYWJjOTgxZGJkMjYzY2M2YzkxOTkxNGM4ZDM5MSBsZWdhY3ktdHJ1bmsKKzIxMDQxIDY1YTJlM2U4YmY1NmQxMDk3ZjQzMDVlNjgyYzBlOGJlNTc5MmIzYTcgbGVnYWN5LXRydW5rCisyMTA0MiA1ODZmZDc5ZWY0ZDk3YzhkNzQ5MTdkMmNiNGYwZDE2Yzg2ZGQ4YjAyIGRlc2NyLWJyYW5jaAorMjEwNDMgMTNhOGRjYTRiMDQwYWY4ODA5ZGIwOGY2NTQxNjJkNThhMTBhNzE3MSBkZXNjci1icmFuY2gKKzIxMDQ0IGIwZmM4MzZmMmNlYWQwYjIwYTgwZGQ4ZGQyZmU3MjgwM2RmZjBlYWMgZGVzY3ItYnJhbmNoCisyMTA0NSBlODk3NTUwYjQ3NDg0MGY3NjE2YjUwM2UxYWZiMTFhMmY0MzE0MWM3IGxlZ2FjeS10cnVuaworMjEwNDYgZjg0NzVmYTZiYTM2ZGE1YzViYThlZTgxNzBiMzdkZTU1ZWNhNDdhMiBkZXNjci1icmFuY2gKKzIxMDQ3IGM0MDE2YWJkNmI3ZjNlYTFkZDUwNWQ1NmY4NzE5Yzk3MWY5NjIxNDEgbGVnYWN5LXRydW5rCisyMTA0OCBhM2MzMjlmNjllM2E2MGJlNDNhNjJhODMwMDExNmNhZjk4NDg0ZjZlIGRlc2NyLWJyYW5jaAorMjEwNDkgMmIwMTdiMmM4ZjdjYjUyZmE2YTg1NDY4YTQwZWY4NTJiNjY2MjliNCBsZWdhY3ktdHJ1bmsKKzIxMDUwIGU2NmNmOWQ2YWQ0M2VkMDU1ZmM5MzE2NzA3ZGY1NWZiZmIyODc2YjUgbGVnYWN5LXRydW5rCisyMTA1MSA5YTI2ODMyZGEwZjllNjU3NzU5ODcyM2ZjYzJlMjg0YTQxODg4YThlIGRlc2NyLWJyYW5jaAorMjEwNTIgYTFmMzU3Njk2MjY0YjNjYmVmYWY4NTNhNDdkNjUzODcxZWIwN2NhNCBkZXNjci1icmFuY2gKKzIxMDUzIDhjYWYyMTk3MWYzNzg3OWVjZTI4ZjUwODcyNmFiYjA2NzQxZGRkNjQgZGVzY3ItYnJhbmNoCisyMTA1NCA3ZGU3ZDA2OTRiYTg3YTRmZmI0YzMzZTRiNTJmNGY2MGRiNTVlMjY4IGxlZ2FjeS10cnVuaworMjEwNTUgYTIzMmE2YzNmYzhjN2RmYTgzZTEyZjY3MzkzYWQwYjhlYWYyN2JjMyBsZWdhY3ktdHJ1bmsKKzIxMDU2IDE1ZjQzODFjZmYwZjBjNjhiZjRlMzdiNDQwYTBhY2U1MDllY2JlMDAgbGVnYWN5LXRydW5rCisyMTA1NyBkOTNiNDkyOThhZmQ2ZjEyMWY5MmE5YzdlN2RhY2JlMjI3MzIxYWZjIGxlZ2FjeS10cnVuaworMjEwNTggMmVjMDhkNmM3ZDEyMDQ2OTU0N2ExMDg3NzgyYjUxMDg2MmUyMThkYyBsZWdhY3ktdHJ1bmsKKzIxMDU5IDk5OWIxM2RlMzlhNDJkYzc3Yjc4NDk1M2M2OTUxOWQyNjQ5NGYwNWQgbGVnYWN5LXRydW5rCisyMTA2MCAxYzE4M2FlNWM5MzQ5MmJjOGYyYTNkZWVmZjFlZmUxY2Q1NjllNzkzIGxlZ2FjeS10cnVuaworMjEwNjEgNWE2YjgzZjQxNTI3Yjc4MGIwNmY0MjhjN2U2OTFhZDA5NDk5YmY4NiBsZWdhY3ktdHJ1bmsKKzIxMDYyIGJiYWMyYTZhNWQxNmZjMjcyYjFhN2NhNjA3YWQwNjczN2YxYTFlOTMgbGVnYWN5LXRydW5rCisyMTA2MyBhYzU0ODlhMjU0OGRlNDYzNTdiMGZkNzc1MWYwOWMxMTJlN2E5MThhIGxlZ2FjeS10cnVuaworMjEwNjQgODg5ZGI2ZDU1NTA2MDFjNTMyYjNlYWI0MGM3NGEzMmExMjYxOGQwMyBsZWdhY3ktdHJ1bmsKKzIxMDY1IGJkZTFjZjU3NDBlYzY5ZjhiNzQ2OGNkZWNhZjBkMjUwMDE5ZDVmMTggbGVnYWN5LXRydW5rCisyMTA2NiAxMDk5MjE5OGM5ZDY3YWE1ZGVkMjQ2NzllMTBlMzFmOGUzZGQ1YjE0IGxlZ2FjeS10cnVuaworMjEwNjcgNjI0NzI2NTY4MDdlYTk4ZTRlNmEwYTg3NTM2NjgwYzNlODVkOTU4OCBsZWdhY3ktdHJ1bmsKKzIxMDY4IDhlMTg3NzQwYWE5NmE2ODMxM2NlNWM1YTNjMzMwODhkZjhkNjVmN2MgbGVnYWN5LXRydW5rCisyMTA2OSBmOTAxYTdkYzVmYjRjYjhmMTY3ZTE3NmIwYjIxMWYxYTE3ZDA2ZmY1IGxlZ2FjeS10cnVuaworMjEwNzAgMWY4M2U0MTU1ZmNkMTcyYjQ3Mzk3ODE5NDQ0OWFiMmE1NTg2YjBjMSBsZWdhY3ktdHJ1bmsKKzIxMDcxIDdkZTVkMzc4NTc4Y2RlMWQwMDc2YjBhMGViYzcyYmNkMmUxOTRkMzQgcmVsZWFzZTIxLW1haW50CisyMTA3MiBlODQ5NDg4Njc0ZGEyNjYxOGQ1NGE3YTJjNDgxMmZlZTc3MGE0MjhhIHJlbGVhc2UyMS1tYWludAorMjEwNzMgNDEwYmJmNWQ5OGY5N2FhMjM1ODFmODAyNTNlMTNiOWE4ZjhmMDFiZCBsZWdhY3ktdHJ1bmsKKzIxMDc0IDcyYjE1NzMxYTg3NjlhM2RlNDZlOWRmNzA3ZTlmZTg1OTA5M2IzNzYgcmVsZWFzZTIxLW1haW50CisyMTA3NSA5MDE5Mzc1MGNjODM3NmJmM2M4MDFkNTkwYWZlNWU5MGZmYjIwNjZlIGxlZ2FjeS10cnVuaworMjEwNzYgZjNiYWI5MjlkNzBlZTA3NzBmNWQ2OGZjNDdkM2EyYjZhNDYzZGFmYiBkZXNjci1icmFuY2gKKzIxMDc3IDYyMjg2N2U0ZDgzMmZiMDNhMWExZDI0MDQ4MWM2ZjJmMjRjNWJhMzkgbGVnYWN5LXRydW5rCisyMTA3OCBhZGQwOTU2Mzk4NTMwZGU0OWUzNTY1NzM4OTg3NmM2NTlmOWUxMDAwIGxlZ2FjeS10cnVuaworMjEwNzkgYmMwNWIwYjVlMDU3ODEzMmRhYjY1Mjc0YjhiYzhhZDkxOThlNmI1OSBsZWdhY3ktdHJ1bmsKKzIxMDgwIGZmMmQ3YzE4MzcxNTJiNjllMTk2ODJlMGJkMzM2ZTFiNTVmYzU5NDMgbGVnYWN5LXRydW5rCisyMTA4MSA0Y2NiYjhlNWZiMjRjYmM3Mzk1ZmZlMTg5NGFhZDIyNzJhY2EyZWIyIHJlbGVhc2UyMS1tYWludAorMjEwODIgYjhmYmZhNTY5YzM0ODAzYjZjNTBlMTI1Nzc2MDUxNDM0N2RhNjI3YSBkZXNjci1icmFuY2gKKzIxMDgzIDZiNmUwYjBkYjRmNzU1MTFjN2Y2ZjFlZmUwYjYyMWM2NjBmNmU5ZWQgZGVzY3ItYnJhbmNoCisyMTA4NCBjOTBiZGU4YjY3YjhkYzg3NTdiYjk2N2Y0ZmJkZmRjMDliYzhiZjU5IGRlc2NyLWJyYW5jaAorMjEwODUgZGFiZTcxMDBiMjFmMzA3ZDljMTcwZTc0MWY0OGE1MWJlNGY0MzNjZiBkZXNjci1icmFuY2gKKzIxMDg2IDRjYzJhZjhhMmY0ZTY2MzBkMWRhZDY1YzA5MmVhYTA5NDUwYjQ2NzEgZGVzY3ItYnJhbmNoCisyMTA4NyA2ZmU1NmE5YjMwMjE4ZjkyMDRkOTQ4Y2VkMjU5ZDU3Y2YyZDkyZGJlIGRlc2NyLWJyYW5jaAorMjEwODggZGQwOWYxMWZhNDBkYzk1ZGY4NWYwYjY5YjAxOTdhMWM3ZTI1ZmRkMSBsZWdhY3ktdHJ1bmsKKzIxMDg5IDVmYzZkMDI3ZTg2MTE4ZWVjNzExZGNlOWNhYTM3NDVmN2NkNWYwZTAgbGVnYWN5LXRydW5rCisyMTA5MCBiYmNkYmQ4ZjQ0Njk5NTFhYzA1ZTAwOTJhOTM5MmY1ODdiNjlhMDhmIGxlZ2FjeS10cnVuaworMjEwOTEgN2U0NTlmYjNjMzMyOWJlMmVlZWI5MzEzYzkzN2Q0Mjc3YmE5ZTg2MSBsZWdhY3ktdHJ1bmsKKzIxMDkyIDU5MjEwOWYyYTZmZDY5NjA2OWZlZDYzZDJjZDBjN2Y4Y2U1ZGJlNTcgbGVnYWN5LXRydW5rCisyMTA5MyA2MjU0NzM3Y2I2Mjk2ODAxMzM5OTY1ZDM0YmEyODgwNzdhZDI4OWZmIGxlZ2FjeS10cnVuaworMjEwOTQgODZjY2Y5M2NjOTUyMjgyMmQ0NDFlN2Q3Zjk4NDIyNjZlMTk2ZDZhMyBsZWdhY3ktdHJ1bmsKKzIxMDk1IDE4YTFlMDkzOTdkYWM5NWM2ZWZlOGM3MzU0Nzg1MzE1N2VmMjIzOGIgcmVsZWFzZTIxLW1haW50CisyMTA5NiA0MTAxNjY3NTAwMmZlNGQ5OWYyNDBkOTM4YTY3OTI3MTFhYjIwNDMzIGxlZ2FjeS10cnVuaworMjEwOTcgYTAwMWZjYjc2MTc3OWRlNDU5Y2RhODIzNmZkNTdjZmMxZjFhOTc3MSBsZWdhY3ktdHJ1bmsKKzIxMDk4IGJkMDA1NmVlMWE2ZTQ5MDVmMzkyZDMzY2ZhMGVlZjJmYjkwMmFkNDQgbGVnYWN5LXRydW5rCisyMTA5OSA2ZWEzNjZhMmIyYTYzNGY0YzE1MTY5NTZlMWMyZGE0YWEyMDRkMzBkIGxlZ2FjeS10cnVuaworMjExMDAgMjM2N2I3YTAwMWE3ZTdlNjlhOWY0YWY2ODdjZDg0MDhlZDJkN2UzOCBsZWdhY3ktdHJ1bmsKKzIxMTAxIDdhOWE2OTI3MjliNDAzOWNmNzQwMzFmZTE2YjNhZDlmNjYyOTRlMTUgbGVnYWN5LXRydW5rCisyMTEwMiBjMmZjYTc3YmJmM2FiOGQ2ZmMyN2IxZDJlZGU5MzUzYmIxNDM3ZjI0IGxlZ2FjeS10cnVuaworMjExMDMgZGU3ZjlhYTBhNjNhNTIzYmYyNzE2NGI4NDNhNTU4ZWZlNTE3NjBiZiByZWxlYXNlMjAtbWFpbnQKKzIxMTA0IGY3NGU5MmM4ZWFjMWE2OWU5OGYxNzFlODI4YjcyYjQzMDc2OGQwOWYgcmVsZWFzZTIwLW1haW50CisyMTEwNSAwMzczODZhMmIyNDdjYmU5MzIwZjAzODdjNmRkODJjNjIxMjk3OWIxIHJlbGVhc2UyMC1tYWludAorMjExMDYgMTQyMTI5ZTlhOTg1NjQ5MDYwNzZkNTA4MmE0MzBjYzFjYWJjZGZiMSByZWxlYXNlMjAtbWFpbnQKKzIxMTA3IDlkZGEwYzExZTAwNjk5YTk0NDAyOGZjMWMwMTdmNmRjYzI2ZWE1YjMgbGVnYWN5LXRydW5rCisyMTEwOCBhM2M5YjQxNDBjYzVlYzViZmY3YTNiM2UxZDE0YTdmY2QwODA5MDQ2IHJlbGVhc2UyMC1tYWludAorMjExMDkgMDIyNDg3M2MwYWM3NGIwMWIwMTM3ZGNkMTU1ODE2NGY4NGU5NjFkOSBsZWdhY3ktdHJ1bmsKKzIxMTEwIDVkNmZjMThjNDAwOTg1ZGFkNzQ5MTZiYWQ0OTgwNjg0MzI0ODVkNzcgcmVsZWFzZTIwLW1haW50CisyMTExMSAxNWMwNGZlMjRkODU4NjYyZGY1MzJmZTIwYzU3MjFiM2EzYmYzMjQxIHJlbGVhc2UyMC1tYWludAorMjExMTEgODM0NTljYzE5MWMxYzljOGNjNmIwOGFkYTk5YzAyZjBhZjZhZDU0ZiByZWxlYXNlMjAtbWFpbnQKKzIxMTEzIGM1NzhiNzVhZDYyZmRlZDcwYjY0YWI3MzUxZmQ0YTI4ODY5NTk3ZGEgbGVnYWN5LXRydW5rCisyMTExNCA4Y2Y3MmIxODdiM2FiOTg2NmU4ZDg0MWRmOTJmMTg0YTc2MGU1MjgyIGxlZ2FjeS10cnVuaworMjExMTUgYmUyZGRiMjViNjk4YjM5YTg3OWM0NjQ1MTYxNmFlY2E5YmIyYjFmYiBsZWdhY3ktdHJ1bmsKKzIxMTE2IGUyMWNkNDEzNWYzZGIxYWYyM2IzZTVmNzEwYjA3ZDYzODAzM2RiYTQgbGVnYWN5LXRydW5rCisyMTExNyAwOTlhZTQ5MTgwNjlhNWJiOTUwODM2NDQ4NzY4YzFjNTBjYjRkMjIxIGxlZ2FjeS10cnVuaworMjExMTggN2Y1ZDgwNDRmOTk0YzFmNTE0MDY5NTNkNTg3OTNlMmMwNzE1OWFiMiBkZXNjci1icmFuY2gKKzIxMTE5IGIxNDBiNzhmMTc4NWNiYTg4NGQ1YmE1Y2IxMWZjOGUwM2U5ZGM4YmUgZGVzY3ItYnJhbmNoCisyMTEyMCBhNjIzMWYyNGRiYjZlMGE0NzRlNDgzZmVlMTVkMDA4NTk3Mzg4YmQzIGRlc2NyLWJyYW5jaAorMjExMjEgOWViNDY5YTQzMTQ0MTc2OGRlODExMTIxMDVhMzZmMWY2MWJkMjhiMyBsZWdhY3ktdHJ1bmsKKzIxMTIyIGU2NGM3MDMxZDk0ZmNiNzJhNDQ1MmMzMjBjMWI5MWFlNTI3NmI2OGUgZGVzY3ItYnJhbmNoCisyMTEyMyBhNDc2M2JmZWQ5ZjBlOTMwNzU1M2I4YzI1Y2JlZjUzM2Y5ZjlhMGQ3IGxlZ2FjeS10cnVuaworMjExMjQgMzFjZDBkYjBmMDlmY2Q5OTVkMTk4NTgxNDkwOTIxZjljNjRiMWM1YiBsZWdhY3ktdHJ1bmsKKzIxMTI1IDJlY2FmOWUyMWEwNDZkNmZlOTE4NDliOGVjZDY1MWFiN2EwYzI5ZTkgbGVnYWN5LXRydW5rCisyMTEyNiA3NTE3ZmNhMzIyNjJjYmFmZDM4OWM5YzAyMjQyMjI3ZmU4NWM4NmU2IHJlbGVhc2UyMC1tYWludAorMjExMjcgNjk5MTAxOTQ5NTk5NDQ4NDAxMzhmYzIwY2M5NDllYzVjNzdlOGM1MCBsZWdhY3ktdHJ1bmsKKzIxMTI4IGMwNjE2ZTA5NjQzMGYyMGQ3MTFjNDQ5ZjYzODQzNWQ0ZWFiNGU2MDQgcmVsZWFzZTIxLW1haW50CisyMTEyOSBlNDA2ODE1NzgyYWZkNDcxYjhhNGE3NTg4N2M0NDE5ODY2OGJkZTQ5IHJlbGVhc2UyMC1tYWludAorMjExMzAgNDBkNzk0YjUwNDFkZjA0MTQ3MDUxYTE2NzRjMmY4MTFkNGQyMjI0OCBkZXNjci1icmFuY2gKKzIxMTMxIDAyNTMwNzc3YjUyMThkNDFiOTY5NjBmYzlmOTZlYWVmZDgxMGFkOWEgZGVzY3ItYnJhbmNoCisyMTEzMiAwNTA1NGJkNzk1OWI2NDUxNTg5ZDdkYzAzZjA0YWIwNDRmOGE0MzhkIGRlc2NyLWJyYW5jaAorMjExMzMgYzYxNjY1NTc4MmYxYWZjMTkwODc5MDVmNjE0MWI2YTIxN2I2M2I2OCBkZXNjci1icmFuY2gKKzIxMTM0IGMyOWYzMTM1YTIwY2IwNDQ0OTU2Y2IxNTRlYzU3ZWM0OWQ1NzlhZTUgbGVnYWN5LXRydW5rCisyMTEzNSAzMzNhMmM2ZWI3NDM4YTUxNzE1ZTVhYzgzMmEyODhiYTg4NGVjZDY2IGRlc2NyLWJyYW5jaAorMjExMzYgMTY2YjdiMzY1ODUxOTNjYTc4NmQzZjdkNzRkZTE1YmI1MDc0YzI1ZCBsZWdhY3ktdHJ1bmsKKzIxMTM3IDk1MjI5NzZkMWU5OTZjY2NiMzU0MTM5ZjdmMDNkMTM0NDJlODllNjYgbGVnYWN5LXRydW5rCisyMTEzOCBhYzdkY2YwZTUxMDRhZmExNDBmNDM3YmUwNWExNjU0YmMzZDIxYzIwIHJlbGVhc2UyMS1tYWludAorMjExMzkgMWYxMzY0ODA2NTk5Y2EzMWVlOGJkNTBiMWVmMjU5ODg3OGM0N2JkMiBsZWdhY3ktdHJ1bmsKKzIxMTQwIDllOWVkZGFjMjViODU4ZjZmYzBhMWVkOWRjMDExMzU2YTFkYjc0ZWMgZ2VuLWJyYW5jaAorMjExNDEgMjdkZDllYzMxNjJjZDhjYWI5NGJkNzM0MDk0ZTIwNDU3MDM1MWViMyBsZWdhY3ktdHJ1bmsKKzIxMTQyIDBhZjZlYWY5Zjg5ZWVmNGE5ZGFlZDE0ZDNmMzU5MmVkYzliODMyNmEgcmVsZWFzZTIwLW1haW50CisyMTE0MyAzNjQyNDQyNjk1MDYzYTk4MTA5MmVhNGU5Nzc2YjllNWRmMjIxNjlhIGdlbi1icmFuY2gKKzIxMTQ0IDZhY2JhOWU0NzU4Y2IwMTg5MGJlMDY5MTcxZjhkZWZiZmNhMTY2MzcgZ2VuLWJyYW5jaAorMjExNDUgZTMyODIxODU0NmI1OThiZmU0NmY2ODk0NTJhYTNiZjI4ZmE4NjFjYyBsZWdhY3ktdHJ1bmsKKzIxMTQ2IGI3ZjJlMjMxMjYxMGVjNGZiMzUxZDdkZWY0M2MxMDgzYzgyYjAwMWMgbGVnYWN5LXRydW5rCisyMTE0NyA5ZDUzM2FlNTc0ZDIwZDE0YzNkY2FkMmI2YmMwNDM2YjY0NzAwZjYzIGxlZ2FjeS10cnVuaworMjExNDggOGVlYTJlZmIzNGNkMWYxNmU2Y2JmNzEyNzI3NWM5ZTUxNzFhMjk2OCBsZWdhY3ktdHJ1bmsKKzIxMTQ5IDg1ZTNmYTFlYjgzNmM4ODIyMGVmZjRhMGI3NWFhOTcxNzdkMmNjMjcgbGVnYWN5LXRydW5rCisyMTE1MCBlODg3ZDY4NjJmNzdiNDA4MzBkNzQ3ZjFhMDVhMTZiNDY5MGFjYTNlIGxlZ2FjeS10cnVuaworMjExNTEgYjQ5OTQ1ZTgwNDRhODA2ZmIyYmEyOGM1MDE2ODhkNWZmYmZjZGNiZiBsZWdhY3ktdHJ1bmsKKzIxMTUyIGVmZjhkYTdjM2RjYjliZWIwZTg1YmJmZjgwODU3MjkyYzc4NTA5NDcgbGVnYWN5LXRydW5rCisyMTE1MyBjYWMyMDdiM2E0M2ZkOGE4OTQ2NGRkMmNlMGNhZTRjM2QyM2ZkODk5IGRlc2NyLWJyYW5jaAorMjExNTQgN2EzMzhmNTM3ZTQyYmIyYTNkMWFiNGM2MGQxMGE0MDBhMzY1MTkxZCBkZXNjci1icmFuY2gKKzIxMTU1IGE0NDdmYzk0NzI5OTlhMTYzODgwMjY0ZjM1NDE4Yzk4OWE4NWQ5ODcgZGVzY3ItYnJhbmNoCisyMTE1NiAyOGM0YjY2ZWNiYzU4ZGFiNGEzOTE2YTc5Y2FkNTlmY2Q1Zjk4MzQzIGRlc2NyLWJyYW5jaAorMjExNTcgYTdjMmZmZWJiZDI2NmZhZmIwMTRlODEyNDkxZGY1MTFmMzk2MDU2MiByZWxlYXNlMjEtbWFpbnQKKzIxMTU4IDRjYjM0MzE0YmQ5NzA5YzAwNTZmNzMzZWE3MzI0OTkyOThmNmQxNTYgbGVnYWN5LXRydW5rCisyMTE1OSA1NDFlMDk1YTZlZDY1MTY5MjVlNjYxZjhiOWJjOGM3ZjcxZWU3NmMwIGxlZ2FjeS10cnVuaworMjExNjAgNDE4Y2FiY2I3NjNmMGFjMmQ1NWIwZmE1ZDc2YzgxODNlMmQ5OGVkZiBsZWdhY3ktdHJ1bmsKKzIxMTYxIDM1NGE0ZGYwOWUzODViODQ5M2UwMmQ4MzBlOTVhN2E1YzdhOWYwMDUgbGVnYWN5LXRydW5rCisyMTE2MiAzMWNiNWQxNzMxMWFiNTI4OTA5MTFmNzI1ZWFhNTFkZTJjMjIxYjNkIGxlZ2FjeS10cnVuaworMjExNjMgMDExNmU0NTlkYWQyY2JkZTZlOTIyNjRkZjE3N2RjMDY1NmYxZDgyMSBkZXNjci1icmFuY2gKKzIxMTY0IDRlMzAxOWRhOTFhOTM2NWViYTUxNTcyMmIyOGQwZTgxNDIwYmExZDYgZGVzY3ItYnJhbmNoCisyMTE2NSAyMmZlYmE5NjU5Y2U3OTIwZGQ2MTJjZDg1MzYyZWM5NDJmMzQxYTk5IGRlc2NyLWJyYW5jaAorMjExNjYgMTFhYzAyYzAzNjkwZDQxNDRhMGJmZWY1MjVhN2Q0NGY1YzM0ZDQ1OSBkZXNjci1icmFuY2gKKzIxMTY3IDk3YTIwODI5MWNkOGJiMDg0OWJkNTVmODk1NzFhNjk0ODNjNjU0NTYgbGVnYWN5LXRydW5rCisyMTE2OCA0N2M5ZDBjYjZlMzE0ZGJiNzk2ZDk4MTNiMzQ3MTA4MGI2MDY3YTI0IGxlZ2FjeS10cnVuaworMjExNjkgNzY3YzRiMjgyMTBhZGViNGVlMjhjM2RhYjZmYTZiZWJjMGE1MGM1MSByZWxlYXNlMjEtbWFpbnQKKzIxMTcwIGRiZTgyYTljNmY3ZDczZjU5OTNjNDUxMDYzNjg5Y2I3OTkyM2M5YjYgZGVzY3ItYnJhbmNoCisyMTE3MSA4MDY0N2I4MmUxYjJkODc0NmM3Y2ZiNzFhY2IwZTFlZDU1MmMxMTIwIGRlc2NyLWJyYW5jaAorMjExNzIgMGU3Y2FkNTFjZjY2NTMwZThhNGFkN2E3NzFmYjRjODIxZWE5ZjVjOSBsZWdhY3ktdHJ1bmsKKzIxMTczIGE3MWZlZTg0YjRlNDkwMWI5NTcyNDQyMGI1ZTE4OGJmNTcyMzFhNDkgZGVzY3ItYnJhbmNoCisyMTE3NCA4Y2Q0YTNmMDE5NTIxZDlhN2Q0NzU2MDY0MTI2MjFhMmMwZjlmYjdhIGxlZ2FjeS10cnVuaworMjExNzUgYjUxYjRjMmJmNWY5ZWFmYTg5OGYwMGU4M2MxOTI4MmI4ZjNiMmQ4ZSBsZWdhY3ktdHJ1bmsKKzIxMTc2IDE3YjNlZTljYzQzZmEyZjkxMzU5OGMzZmJkZTEzZGIwMzcwZmQ0YzggZGVzY3ItYnJhbmNoCisyMTE3NyBlMWIzMDYyNWE0Njc0MDg5MzNkNDhiMDY1NGQ4YmVjZDQ2N2Q2MjA3IGRlc2NyLWJyYW5jaAorMjExNzggMmNlNzBhODgzYWY2YTdjMDYwZTNlNzU3OWI5MDBiM2NlZWUwMGE2YSByZWxlYXNlMjEtbWFpbnQKKzIxMTc5IDMxYzExYWIxYTNlODU3NGVhNDJiMmVkNjRmZjVjNTIxZmI1M2I0NjkgZGVzY3ItYnJhbmNoCisyMTE4MCAwNDYzYjllNTcwNGViMjg3ODU3ZThjYzMyNmQzZWQ3ZmU5YTcxMDlmIGRlc2NyLWJyYW5jaAorMjExODEgN2JjNDczYjJjNjU0MjQzMDQyNzg0YjhhY2EyNjRjYzAyNWNjZGM4OSBsZWdhY3ktdHJ1bmsKKzIxMTgyIDFiY2U4YmI0MWRiZDNmMDlkNzBlMDJmOTBjZDgyMzE2ZjA5OWI5NmIgZGVzY3ItYnJhbmNoCisyMTE4MyAyZTRjNmJhN2QwOWMxNGQxMGI4MTQ4NzdjNDhlZTlhMGE2YWJkZjFlIGxlZ2FjeS10cnVuaworMjExODQgOWNlOGE5OTViZjEyZTU4M2Q0NzQ0YTQzM2UyYThlZWI2YmZiM2VmMSBsZWdhY3ktdHJ1bmsKKzIxMTg1IDA2NzZlYTJmZjg2N2E5OGRhNDJkOWU1ZDhmZGNkNGFhZmQ5OTBhZDUgbGVnYWN5LXRydW5rCisyMTE4NiA1NGY3NjI5M2Q5MjY5ODUxNWQ1MDMzN2M4OTI1ZDM0NzhhOTI1YTc0IGxlZ2FjeS10cnVuaworMjExODcgOGVmODRiODNlYzFmYTQzNTUxNGNiMTVlMGY4ZTBiN2FiNTU5MTY5YyBsZWdhY3ktdHJ1bmsKKzIxMTg4IDEyNmE2NmIzNDEzY2QyYmJmZjQyYTY3ZWI2ZjgyMmI4ZjIxNmRlOWMgZGVzY3ItYnJhbmNoCisyMTE4OSBiMWY2MzI4MGIyYzI5OGVjOTExNTE4ZmVjODU4MWU4YWZjYzhhZDY2IGRlc2NyLWJyYW5jaAorMjExOTAgNjUxYzY2NDA2YmY4MjExYzBjMTBiZDBjNWU4ZTRmMmFlYjRiODMxMyBkZXNjci1icmFuY2gKKzIxMTkxIGQ2MzlhMWUxZjFmNDhmODhmZTQzYzA3MWYxNTA3ZmMxNjYwN2ZhYjkgbGVnYWN5LXRydW5rCisyMTE5MiA3YzM0ODk5YWQ1MDYyM2UyYzNiNTFkNzEwYzNiNTZkOThiYjk2NzI0IGxlZ2FjeS10cnVuaworMjExOTMgMGVjMDNlMWJlNTU4OGViN2VhY2YyYzBkODhiZGM1Njg3YWE0OTU3YSBsZWdhY3ktdHJ1bmsKKzIxMTk0IDRkMWM3ODQ5MzIyMWFiYWEzMjFhNmQ5MDM0ZjE0MmE4NzIyN2E5NDMgbGVnYWN5LXRydW5rCisyMTE5NSBlNWIyNzNlOTVmNzRiODQ5OGM4M2M4YWMzNzliZmE5NWJhMzQ0MzQ0IGxlZ2FjeS10cnVuaworMjExOTYgMzFiZDI1YTJkOGM1YjhkN2FmNzE4OTU1ZDE2YzJhZmJmMDRmYjczMSBsZWdhY3ktdHJ1bmsKKzIxMTk3IDZmYmM1ZjIwMWExZjg3NjBjZTdhMTUxZTczZTllNThjZDcwOTZlZTEgbGVnYWN5LXRydW5rCisyMTE5OCBhNjY1NzJhYzcxZTdkYzc4NGI5NTFhNzkyNzE3NzZjZmM4N2ExMjcwIGxlZ2FjeS10cnVuaworMjExOTkgMDJhYTEzM2RlYjUzOGU0ZTg3ZjJmNDEwZDJmOTljZjljYzlhMWQ3MSBsZWdhY3ktdHJ1bmsKKzIxMjAwIGY5MjZlYjFmNTc3MDFjMjMwMTA3MmQxMDdiOWFlZmRjMzliYWQwZmMgbGVnYWN5LXRydW5rCisyMTIwMSBlZmI1MDY5Y2M3NGZlNzA4YzM4YmY1NjFkMzdhZDBjMmQ5ZTk0OGRkIGxlZ2FjeS10cnVuaworMjEyMDIgMGJhZDQyZTU2MzIwNDE1YzJkMTI3NTJiMWI2N2RjMDRhYzgxMDdjOCBsZWdhY3ktdHJ1bmsKKzIxMjAzIGNmNmE4NjQzODdkMzc4ODFhZDcyODU4NjQzZjZmYWZhOTdmNGVlODggbGVnYWN5LXRydW5rCisyMTIwNCBjNWFjNmYwNTVjNjIzNWMyNDdhMDRkYjM0ODkxNmNiZDJjZDAxN2E4IGxlZ2FjeS10cnVuaworMjEyMDUgZDNlNDM5OWZlMmY5NDMxNjE1YWRiYWJmNmE0M2I3ZGY2NGViOGU3NiBsZWdhY3ktdHJ1bmsKKzIxMjA2IGM2MzhhN2EyZmU3N2I5MzIyMmYwN2ZjMGRmYjI4MGQ2ZjFkNTI5ZmEgbGVnYWN5LXRydW5rCisyMTIwNyA2NzcxZGFiMWZlMzJmZjM5MDgwYzZiZTQ0ODU3ZWZkZjhhM2YxYjJjIGxlZ2FjeS10cnVuaworMjEyMDggMzQwZTkzMDFlODViMzI0ZmM1YzE1NTgxMWJiMGZjOTdjODQ1YTIzZiBsZWdhY3ktdHJ1bmsKKzIxMjA5IDEyZDdkNGRiNjlmMmY2ZjA1MTZhZmUwYjJkNTFiMTBkNjkzNWI5OGEgbGVnYWN5LXRydW5rCisyMTIxMCAwOWEwOGExZTQ3ZDY4YWE3NmZjZmY2YjA0ZjEwN2FhMTVjNTk3YjI4IHJlbGVhc2UyMC1tYWludAorMjEyMTEgZTdmN2VlZjE4Yzk4NjNjYzNhNzZjYzE4NjY5NWI5NGM0MDJlY2UwYyByZWxlYXNlMjAtbWFpbnQKKzIxMjEyIGI3MzI0MWU1MDU1NjcwZWU0ZjQ5MjhiZTQ2MzE4YjE3OWIwM2Y4ZTUgbGVnYWN5LXRydW5rCisyMTIxMyBjYzc2MzFmYmY3ZjkyZTEzZDRkNGE0YWU3YmI5NjlhOTUyNzhjOWE5IGxlZ2FjeS10cnVuaworMjEyMTQgODI2MDAwYTQwODY2NTIyOGM2NzUwMGRkZDcwYjczMDBkZDUwNjlmNCBsZWdhY3ktdHJ1bmsKKzIxMjE1IDJmMjFmZWJmNmQ0NjJiN2Y3NGI1ZDY3OWJlYzM5NjQ4YzYzNjc4MDMgbGVnYWN5LXRydW5rCisyMTIxNiBmNWFiMzQ3OWFjZDRkNTMyYTgyZmVkOGM4MjM0MDI3NWY1M2Y0YjI0IGxlZ2FjeS10cnVuaworMjEyMTcgYzI1ODc2YTUxZjFiNTk2MzBmZGMwZjA5OTg3ZGFhYWQ4Y2FiMTJkMSBsZWdhY3ktdHJ1bmsKKzIxMjE4IGEyZTZmZmY0NzFiMDI1MzIwMDk2N2RhZGNhMTQ4OTlhOGE4ZWY5ZTIgbGVnYWN5LXRydW5rCisyMTIxOSAxNWEyNGUwYmY5NGYyMmQxMmE1Zjg1OGJkMTViNTU5M2NkOWM2MzcyIGxlZ2FjeS10cnVuaworMjEyMjAgZDEyMjFmYmRkODVkOGNkZjk0Y2RhNTZkMjg1ODA1ZGY3ZDlkOGM4YSBsZWdhY3ktdHJ1bmsKKzIxMjIxIGJkMzk5M2M0OTRhMWJlZWExYTdiNmViNDM1MTQyMTYxYTI3OTI2MWEgbGVnYWN5LXRydW5rCisyMTIyMiBkM2IxOTU2ZTNkZTBjMTNlYzA0ZDZhODU3YWI4OWVlZmNhZTY4OWIxIGxlZ2FjeS10cnVuaworMjEyMjMgYWUwZjA5YzdjMWU5MTE2MDQ4YzdjN2NjMTUyYjllYmZiMzg5MjNjNiBsZWdhY3ktdHJ1bmsKKzIxMjI0IDNhNTgwMjdjYWU0ZTdkZGY3ZDQ2MzkzODZhNmE0ODA5ODg4Yjg3YjAgbGVnYWN5LXRydW5rCisyMTIyNSBhNzgyNTQ0MWNhYTRhNzc3YTdlYzAzNGM4NGM1MGFkNmMwNzI4OGNhIGxlZ2FjeS10cnVuaworMjEyMjYgYTQzOGFiYTJkMTM3YjdhNTkxMzI3MzZiNTk3YTU0M2MwZDRlZWQ2YiBsZWdhY3ktdHJ1bmsKKzIxMjI3IGFlZGMzZTkyMGRlYmNhZGE4ZDJmOGUxM2ZjOGZjZTMyMWNkMjNiMzYgcmVsZWFzZTIwLW1haW50CisyMTIyOCA4ZTViNTM3Zjg3YTE5MThjYzI3NTNhODYyMWQzOWE5ZGQ5MTE2NTQwIGxlZ2FjeS10cnVuaworMjEyMjkgMTliYzYzYTg0NDM5MGU0YTgyYjc5MWJlNTI0YTAwYjY5MzEwN2JiZiBsZWdhY3ktdHJ1bmsKKzIxMjMwIDU5NjUzMzk0MjljOWNkMjJmZTViMDUzMDBhNjQ2YzMxMDNjYWNiMmEgbGVnYWN5LXRydW5rCisyMTIzMSA5OTBiNzNmYTA3NGNkYTRjYWIzMTJlYjg0ZTY2NTllODA2ZTc3Njc4IGxlZ2FjeS10cnVuaworMjEyMzIgMzZlODI1NjYwYTI0NTFhY2M4YjZlNTUxZTVjOGJkZDk1OTBmNWMwZSBsZWdhY3ktdHJ1bmsKKzIxMjMzIDlhNGNhYzJiOGI4ZmM5ODY3MDMxMmM4YWQ2ZDgzNTNlZTY0MTVjMTAgbGVnYWN5LXRydW5rCisyMTIzNCAxYTZiOGY2OWZlZDYyMTg0ZmExNzU2YTc3N2Q4ZjQxMGMwMzI0NjlmIGxlZ2FjeS10cnVuaworMjEyMzUgNWU0MzU3M2YwZGYxZjE5YTczODk2NDdkMTAxNmM0Y2IxZWQ3MDYzZSBsZWdhY3ktdHJ1bmsKKzIxMjM2IGVkMzc0NWRhNzQxOTI4MDg2Yzc0Yjk2NDZkMjYwYjAzYTBlZGNmMjQgcmVsZWFzZTIwLW1haW50CisyMTIzNyBiZTQyY2UyOTVlZGI1M2EzNTk0ODdlMDRkYWJjZTUwODZjMTM5MWQ2IHJlbGVhc2UyMC1tYWludAorMjEyMzggNTg3MzZjYTkxNDNjMGY2Zjc1ZmNkM2I4OTAwMzNjODhiNTJkYTY0ZCByZWxlYXNlMjEtbWFpbnQKKzIxMjM5IDkwMDU5NDNjNzU0ZWU5MjBhMGI2ODJmNTY2NzZhZTljYjA0MTQxZWEgcmVsZWFzZTIxLW1haW50CisyMTI0MCA0YTg3MjY3NzliYmFmNzNhMzZmMmFjMWEzMTg2ZjRiYTI5Zjk3ZGExIHJlbGVhc2UyMS1tYWludAorMjEyNDEgMjU2NDA2YjVjZjBjNGY0YjhmZDEzOGJiM2JkZmQ0NDJmZmQxZmIxMSByZWxlYXNlMjEtbWFpbnQKKzIxMjQyIDc2YzNmZjU3ZWI2ZDA2NmYyMTQ5MDQwNGFkOGM3NTRjODBiMThmNzQgcmVsZWFzZTIwLW1haW50CisyMTI0MyA2MjUzZDEyOGE3OGJmOTJjNzY3ZjUwZDczMzllOGQ0Y2I5Mzk0M2Q2IGxlZ2FjeS10cnVuaworMjEyNDQgZTM3MDhjYjFlMGQwN2NiOWM1Y2NjMWQwMTBiMjFlMjA3MDg0MmMzYSByZWxlYXNlMjAtbWFpbnQKKzIxMjQ1IDgyNjk5NDk5YjM4ZWMxZDMwNDI5YzhkMjk4YzExYTFjMmEzOGVlN2EgbGVnYWN5LXRydW5rCisyMTI0NiA1NDZjNzg1MmJhYzU1Y2Q5MjI2NzdhMzc1ZDNiOWE5ZDExZGIzYTBkIHJlbGVhc2UyMC1tYWludAorMjEyNDcgMGQ0YWQ4OWVkMzJkODdlY2FlZGIzZThhNWRjMTNiMjA5OTAxZDcyNyByZWxlYXNlMjAtbWFpbnQKKzIxMjQ3IDczZGU5NGE3MjJkMjA2YTQ1YzBiNDlkMzAxMWM2MjllYWQ0ZDYyYjEgcmVsZWFzZTIwLW1haW50CisyMTI0OSAwNzU3YjZjOTkzMDQxNDM3ZDFmYjMwMDg0NDZhYmQ1NDg0M2EwZWIxIGxlZ2FjeS10cnVuaworMjEyNTAgZjlkMTI3YWIzMmVjOWFhZDMzNzI4ODA2MDY0ZWUzYTAzNjVhYTY4YyByZWxlYXNlMjEtbWFpbnQKKzIxMjUxIGI2NjRiMDJjM2U5MWNmNDllMmUxMmVlZjBlYzg3MzkwYTA2MmUzMWEgcmVsZWFzZTIxLW1haW50CisyMTI1MiA0MDlhYmYyMjUxODVkMjFkMzcwNGI5MzEzYmYwNGUwYjQ2MTA5YjdkIHJlbGVhc2UyMS1tYWludAorMjEyNTMgMDg2MTliZjE4Mjk5MDQyMzdlN2EwY2M5ZGE4YTdmOTJlY2M4OTM1NiByZWxlYXNlMjEtbWFpbnQKKzIxMjU0IGUxZGQ0NjMwZWYzYjkxYmFkN2YyMWQ1ODFkMzlhZTY5NDg3OWQxN2YgbGVnYWN5LXRydW5rCisyMTI1NSA2OTkxZGRhZmUzODI4YTJkYzE4ZmVkNWQyZjhhM2FkM2E4ZGNmZTEzIGxlZ2FjeS10cnVuaworMjEyNTYgNmVlZjIxZTUyM2I2NDU2OTQ5MTQyNzgyYjFmOGM1M2YxZTM2NTY5ZSBsZWdhY3ktdHJ1bmsKKzIxMjU3IDNhODczMmM2Nzg5OGM2ZGFhNGNmYTBhYTVkNDllMDQzZGI1YWM3NDkgbGVnYWN5LXRydW5rCisyMTI1OCBhY2QzZGE1ZDU2M2NjODJjZmIwNzQwYTU1Yzg0NGM2ZWI2YTAyODQzIHJlbGVhc2UyMS1tYWludAorMjEyNTkgNDk3NTE3M2UxYTAyZDgyYWVkODg5YzA3MzNmNmE1ZTZjYzc2ODk3YSByZWxlYXNlMjEtbWFpbnQKKzIxMjYwIDIyMDQwNWMwNzIzMjU5M2E0Y2Q5YTcxMjc0YzMyOGRiMmVmYmZmMGEgbGVnYWN5LXRydW5rCisyMTI2MSA4M2M0NzQ4YjkzOTBlOGNlNDI0NDBmYTA1OGYwMzE4YzlhNzRjNWZkIGxlZ2FjeS10cnVuaworMjEyNjIgYWE4ZTIzOGFiMGFkNzYzNGU3ZGRkNjdkYTlmMWNhNzhhYTMzNDFhYSBsZWdhY3ktdHJ1bmsKKzIxMjYzIGE0ZGMyMWI0Nzc0ZGM5OTdlMDcwMzllMWJlYmFkNzkxMTFhYjM4ZTUgcmVsZWFzZTIxLW1haW50CisyMTI2NCA3ZDJlNmUxZDYwY2U1OGJhNGY5ZGZmMDllYWQxZTZiNzBjODM1Y2MxIGxlZ2FjeS10cnVuaworMjEyNjUgNGViZDI5MmM5NzVmODA5OGYxZjVhYjRhOWNiMjc1OWM4NzJhNjhmYyBsZWdhY3ktdHJ1bmsKKzIxMjY2IGYwMzYxODM3MzIzZDZkNmE0ODI3NDMxMmM0YmExZDgzZWIyNTZkMTUgbGVnYWN5LXRydW5rCisyMTI2NyBiODkzZDEyMDQ1Y2I0NjA5ZWEyMjEzNWY1N2MyZGI2NWViZjE4NThjIGxlZ2FjeS10cnVuaworMjEyNjggZjkyNjE5MDRjZWJiYzU1OWE0Y2UwNGVhYzYyMjcxNjZmNjRjYTNiMiBsZWdhY3ktdHJ1bmsKKzIxMjY5IGQ5MjNiM2M4YjE1MjY5YWNmMjdjN2QxMDAxODhlYmM3OTI0OWI2NTMgbGVnYWN5LXRydW5rCisyMTI3MCBlYWU2NmJmMjQ4Nzg4OGJkNDY5MTY2MjhjY2YzZDM1NzBhZTUyNzI2IGxlZ2FjeS10cnVuaworMjEyNzEgZmU0MDcxYmVmZjQxODY4ZjhjMGY0NjkwNGNkZTM0MzFjODdiZWI1OSBsZWdhY3ktdHJ1bmsKKzIxMjcyIGViNTI0MzIyYTFjMzFjNjM1Mjk3OWQyNTVhNTIxNTIzMjY3YWFlNjMgbGVnYWN5LXRydW5rCisyMTI3MyBmODI4N2Q4NGI3NTUxNzE2ZjVhYzhjMjFlMzVhZDU1MmQ4Y2RlZWQ2IGxlZ2FjeS10cnVuaworMjEyNzQgZjAyNjA1YjhmZGMxZTU5NzE1NjIxZjg4MWY1ZGI5ZTA4MWU4Y2M1YiBsZWdhY3ktdHJ1bmsKKzIxMjc1IDAzN2M4YmU1MDVlMDU5ZDc3NGM4NzM0NWY1MTE1ZjE1OGNiZDIzZmIgbGVnYWN5LXRydW5rCisyMTI3NiBhMWVmNDNhNmQ2ZTEzMTNmNDlhOTE3ZGE2NjFmOWJiYmNmMGI4NGU0IGxlZ2FjeS10cnVuaworMjEyNzcgMDQzOWM4MmE4ZmY0NzU2MTMwNjVhYmY2NDRmZDY5YzU0ZWE2N2I5NyBsZWdhY3ktdHJ1bmsKKzIxMjc4IDQ1MTcwOTNlYjk5ZWFjYmE4YWQwOGIxMmVmM2YwZjBhOTUxZjRiMzAgbGVnYWN5LXRydW5rCisyMTI3OSBlNGQ2NTVhZTkxNDBlMzEzZjk5NTMzOTNkOWJmOTc0ZDliNGUyNmMzIGxlZ2FjeS10cnVuaworMjEyODAgNDc3MTdlNTY2N2ViMTVmMTg0ZTBhNzcyZDMyYjVkN2M4YWY1ZmY1OCBsZWdhY3ktdHJ1bmsKKzIxMjgxIDI0YzI5YjM3MTUxMDJjZGIzNTY5ZjBiNmE0OGMwYzJjMmIwZWUxNjEgbGVnYWN5LXRydW5rCisyMTI4MiA5ZmE1NGJkN2E3Y2I1NmVjOGU5NGRkNDQwMzA4ZGYyMjM0MTc0MTZjIGxlZ2FjeS10cnVuaworMjEyODMgYzRkYjA5Yjg3NDI0MjMwZDIyZTlmZmVlZmRmM2U1YzRiYjdiMzA5OSBsZWdhY3ktdHJ1bmsKKzIxMjg0IGUzY2YzMzQ4ZmVjYTUzMGFmNDgzZGVkYzc0YTc0NThkMWY4OGEyYzEgbGVnYWN5LXRydW5rCisyMTI4NSBmMWI1ZmJlZWNjMGU5OTIxNzE0NzJkOWU4ZWZlMTI3YmRmNWY4ZDJkIGxlZ2FjeS10cnVuaworMjEyODYgNDgyNmE2Y2RhZmM0MGRlMjJhY2JlY2U0MzdkMDBmMzhmZjY2ZjE2NiBsZWdhY3ktdHJ1bmsKKzIxMjg3IDQ1ZGUxYWMyYTM3NjdiNjg1Y2EwYmExMDhkNThlNGE4Zjc1OTUzMTIgbGVnYWN5LXRydW5rCisyMTI4OCA1ZDNlN2Y5OWNmNTJjZjQ2ZGZjOWE1ODFiZmQ3OGFkNGJjOWJmZjY0IGxlZ2FjeS10cnVuaworMjEyODkgMDY1YjE3ZmMwZDJlZTA2ZjY1MTI4YjVhYmViMjYyMWNkM2VlZjE3MCBsZWdhY3ktdHJ1bmsKKzIxMjkwIDlmMWRmYTc4NmJhNjU1ZWRhMTI3ZjFmZTVjNjI4ODlmNmE0OGRlOTIgbGVnYWN5LXRydW5rCisyMTI5MSAwNTE0YjE2YzFhNjgzZjNiZDU0N2FjZDlmYTBkNDY2M2MxYmViNzExIGxlZ2FjeS10cnVuaworMjEyOTIgZmI3YzQ0YWU0YTYyNzdkNDJiNjYzMWZlNjBmNmFhYjY2YTdmNDRiOSBsZWdhY3ktdHJ1bmsKKzIxMjkzIGQ1MGQ0ZjgxYWE0YzVhN2MwMGVkZjkwNDUzM2M1ODk1ZGFmMDAxNGYgbGVnYWN5LXRydW5rCisyMTI5NCAzNThjYjc0YzA4NjRmOWE4Yjc5M2E2NzFkZjJhMzZhYTQxZDZlM2E1IGxlZ2FjeS10cnVuaworMjEyOTUgNTdkZDEzYjZjODAzMTBkNDQzYjIwZmY1NWNjZmQ2M2YyOGIzOGY0MCBsZWdhY3ktdHJ1bmsKKzIxMjk2IDMwOWZiMDI2Yzg0ZWNkNTdmZDI1NzA5NWU3YzgzNWRiMDIyOTczOGYgbGVnYWN5LXRydW5rCisyMTI5NyAxYTJhOTE0YjI0NmMyMmM2ZjEzMWViY2EwNGY0ZThkMTkyMTU4YjJjIGxlZ2FjeS10cnVuaworMjEyOTggYzg4ZjQxNDg2MDVmZDUyY2UwZWIyMDYyNjM0ZDc5ODk0MWY2MjlhOSBsZWdhY3ktdHJ1bmsKKzIxMjk5IDZiMGE4MTU3YmUzYjY4MDZmMTNlMGEzMmIwNGZlZWFjMGI3ZDdhYjYgbGVnYWN5LXRydW5rCisyMTMwMCA0MTQ5MWQxOTY3NDhjZDRkZmY5MDMyMjlmMGQ2NTExZDI1NzZlNDdhIGxlZ2FjeS10cnVuaworMjEzMDEgM2Q5MTY0ZDk1ZTc4OWY3MThkNjc5ZDgyNjE4MTE3ODI3ZjVmMzQ2NiBsZWdhY3ktdHJ1bmsKKzIxMzAyIGE0NmUzNWFjZjljMWM2NGJhOTAxNjNiYWMwZWQ0ZWNkOWI2ZjE4NTcgbGVnYWN5LXRydW5rCisyMTMwMyAxNmU0ZWI0Mjc3OTc4ZjY2YmU4YjQ2NmNlZTU0OGNlOTUzZTc1MzgyIGxlZ2FjeS10cnVuaworMjEzMDQgNzhiZmJlMmU3MTljYjNiZDkwMzU0ZDQ4NDk3NjZkMTBlOTQ3MmE5NyBsZWdhY3ktdHJ1bmsKKzIxMzA1IDQyNmUwYzcyMWJiZjZlYjIwYTUyOTdjYmUwNzRjZDE4MTk0MWQwZjkgbGVnYWN5LXRydW5rCisyMTMwNiBlYmY2MWI1YjVhZWJiY2E3MTFjYzZjYTc1NGZkYTIxMTUwYzRhZWM2IHVubGFiZWxlZC0xLjEuMQorMjEzMDggZmQ4MzIxMmViOGYyNGVmZDY0OTRjODlhNDMyNjI1YzU4NTdlZjQwNSBsZWdhY3ktdHJ1bmsKKzIxMzA5IGRlZTQ5ODk2MWJmZTNjOTBmYzc1OWUwMmFiNGM0YThkZDhkM2Q3ZjIgbGVnYWN5LXRydW5rCisyMTMxMCA0YWQ4NDJmOWQ0MzE0N2E4MDE4YmMwZjhiMWQ3ZDlhMzE5ZWU3Yzc3IHJlbGVhc2UyMS1tYWludAorMjEzMTEgNDQxMjJlN2I0OWNmMmM5NDczZTY4ZGEyMTNkY2E4OTI1ZmM0OWMwMiBsZWdhY3ktdHJ1bmsKKzIxMzEyIDllMzI2YzllNmJlNTk0MjEwMWMxMDNkNmE4YzY3ZDU1NDU2ZGZhMjUgbGVnYWN5LXRydW5rCisyMTMxMyA4NmRhYjBkNDNiNzMxMmYwYjg4N2U1NzY5MWM0ZmU3OGQ1ODdlNzM4IGxlZ2FjeS10cnVuaworMjEzMTQgOTczNGY4OTVmNGZiZWQ5OGI0N2ZhNjJkZDEyNjY5OGYwZjQ3ZDkyYSBsZWdhY3ktdHJ1bmsKKzIxMzE1IGQyYzk1MDAzMjM5MzAwMWY3YmQyMzJmYzhhOGZlNDVkMWIyNjU2NTQgbGVnYWN5LXRydW5rCisyMTMxNiA3YzhkYWQ1ZjJkOTY2ZGMyMWRiZGRkNzBkZGI5MGY5MWUyOWI3ZDA2IGxlZ2FjeS10cnVuaworMjEzMTcgYjU2NThhMjMwZTFhNTI3NjA0NWUyN2JkNDZhM2U5YWMxM2ZmOGYzNSBsZWdhY3ktdHJ1bmsKKzIxMzE4IDhiN2ZmNDRiNDY2OTU5N2E2NDdmNDgwNjIzZDM1ZGE4ZjY4N2FjOTAgbGVnYWN5LXRydW5rCisyMTMxOSAwNjMyZGNkNjllYTNhZjE5YTY5ODM1Njc0YjRkNjQ1YTcxNDZiNjQyIGxlZ2FjeS10cnVuaworMjEzMjAgZTNiYTM3Mzk4NTVhZDFmZjc3ZDg4NGJkN2Y1N2JkYzA4OWZjM2U0OSBsZWdhY3ktdHJ1bmsKKzIxMzIxIGYzODkyM2NlM2M2YjBmNGFkYmEzMTY3YmYyNDkyNTg0NjdmN2Y4NWIgbGVnYWN5LXRydW5rCisyMTMyMiAxZjFkMmM1MGIzYzc4NDgxMWM3NGExM2E0YzY2Y2Q2NTg4ODM0ODk4IGxlZ2FjeS10cnVuaworMjEzMjMgZjdjMDFiOTM4YTE3MzhhZDc1MjVmMTQxMTI1YTBmMTg2YWEwOTQwOSBsZWdhY3ktdHJ1bmsKKzIxMzI0IDA0M2UyMDAxNzRmMWI3ZTljMzRmNGVkNjFmMWQyYzhlZWM2OTgyYzkgbGVnYWN5LXRydW5rCisyMTMyNSBlMzFhMzQ5MTY2ZjRlMGNkMWUyNWUxOTk4MGVmYTI3YzMwMTNiNDJkIGRlc2NyLWJyYW5jaAorMjEzMjYgYmMwNWE5NTI0MmEzNzgwM2E1MWJkZTUyOTJhMWQ5YmRiZDE5MzI1ZCBsZWdhY3ktdHJ1bmsKKzIxMzI3IGY2MDc4YTMwZjcwYTI4MGVhNmViNTg0ZTIzM2I5ZWM4MzZhNjg3NmQgbGVnYWN5LXRydW5rCisyMTMyOCA2ODAwYmNjZTA0NTU1YjlmYTNmZTI0ZjM0MDUwOTVhZTY1Mjc2YWM1IGxlZ2FjeS10cnVuaworMjEzMjkgNGZhMzFlY2EzYmU0YTU0ZDhlOTE3ZDM1MDgwYjQxY2NkMzEzNmQwOSBsZWdhY3ktdHJ1bmsKKzIxMzMwIDI5NWFjYzA3NTVmMGM3ZmVjOGExZDlhZGVjNTAyYTFmZWEzOWUxYmIgbGVnYWN5LXRydW5rCisyMTMzMSA1NWYzYTA0ZTA2NDExZWNmZjI3NjVkMDdmMDNjZDlhNzA0MzlhZDgxIGxlZ2FjeS10cnVuaworMjEzMzIgZmZiYjljOTE4YWMwNDZiMGNlNmM1YmI2YjdiMTQ0MGIzNDg2NmY3MCBsZWdhY3ktdHJ1bmsKKzIxMzMzIDAzNDRlNGFjNzBiMGM4Zjk1NWUyMTVmMDNkNjY0ZDUyZGM5ZDZkYjUgbGVnYWN5LXRydW5rCisyMTMzNCBiMTQ1MjFmZDhlMzkxNjIxYTMxZDBmYmZjYjEzNWZlZDFlMTFjODBhIGxlZ2FjeS10cnVuaworMjEzMzUgMjBlM2E2ZTEwYzI0OGZlMDNjY2JjZGY0NTJjZDdkNzA3YWY3MDVjNSBsZWdhY3ktdHJ1bmsKKzIxMzM2IDIyZjg1YzZhNjUyMGE2OTU4YjNhOTExODVjOGNkOTVlNWIwMjM5ZWIgbGVnYWN5LXRydW5rCisyMTMzNyA5MzI5MDNjN2QwNTRiMDJiYjg5NzBjZTJmMjIxNGY5NzEyNjAxOGVkIGxlZ2FjeS10cnVuaworMjEzMzggOTgyMTYzYzRlOWQyYmUwYTAzMmY2ZTYxODUxYzgzODllMDIyYjMwOSBsZWdhY3ktdHJ1bmsKKzIxMzM5IDY4YzEyZDU1NTZkZjcxNmJkMDQ2Y2RmODgzMTUwMDczNDYyZmFkN2EgbGVnYWN5LXRydW5rCisyMTM0MCAwZmY3NmQ3ODFkMmM2MTE4ZDY5ODIxOTg5YzRkZTQ5NDliMjZmMWQyIHJlbGVhc2UyMS1tYWludAorMjEzNDEgZmY4ZTE4M2FlNThmOTQxZWUyNjk2NjUyNjEyNGU0NGZjZTI0YTk1YSByZWxlYXNlMjEtbWFpbnQKKzIxMzQyIDdjZDZlNTE1ZmQzMGE2OTE2MTc5NDFhYzZlMTFmNGE2YmE2NGNjYjUgcmVsZWFzZTIxLW1haW50CisyMTM0MyAzMTQ4NDJkY2Q1MmU5NGU3NDFlYzc5Y2U5MjJlYTJhNmFmZTczODcyIHJlbGVhc2UyMS1tYWludAorMjEzNDQgODkzYmExZjAzNzhhMWY2NDRiYzA1YWQ0YzQ4YjYwYjQ4ZjNkZDcxNCByZWxlYXNlMjEtbWFpbnQKKzIxMzQ1IDY3Yzg0MWQ4MjFlMDc0YTliN2Y0Y2U3MTQwMWI1NWQxMzUyMmQwNTcgcmVsZWFzZTIxLW1haW50CisyMTM0NiA5MDk4NDE1OTcxZDAxNzAxYmMzZjJhOTljYzI3MjQxZDIyYjljNzg4IHJlbGVhc2UyMS1tYWludAorMjEzNDcgYmU5NjcxZTYxZjRhNjA4NjdhNGZmMTFkMDFhOGJlZWMyYWY3ZDMwZiByZWxlYXNlMjEtbWFpbnQKKzIxMzQ4IDNhNmEyZTU5ZGUwM2MzNzFmZjM5ZjgwMjYzODIyOWFhZGYxMTY5YjUgcmVsZWFzZTIxLW1haW50CisyMTM0OSBhYzAwMjdlMmIzYjdhNGZkM2YyYjAwNGY1NWVlNzZlM2NlNDk1YjI1IHJlbGVhc2UyMS1tYWludAorMjEzNTAgZTg2NTBkNzVlNWE0NTRjODhjNTA2ZGIyNjU2MmI5NWU0ZjBiNTMwNSByZWxlYXNlMjEtbWFpbnQKKzIxMzUxIDc1YzFmOWMzZjBkMWY3YjgzMDZhODY3MzVmY2NhMTAwOTYzY2NiMjcgbGVnYWN5LXRydW5rCisyMTM1MiA5YzJiYzNlNGRmNzM4MzcxZmE5NzQwZjg3ZGU1OTIzNjQyY2EzODdiIHJlbGVhc2UyMS1tYWludAorMjEzNTMgZDUyZTYzNWUyMDVmODc2MzQzNGFiZTc1ODgyZTQ1M2UxOTAzYmExNyByZWxlYXNlMjEtbWFpbnQKKzIxMzU0IDZjZWM3NjFkZjJjMzRhZTE5OGE1OTQzNWYyMzIyM2RhYmI1NjlkOWEgcmVsZWFzZTIxLW1haW50CisyMTM1NSBmYTRhNzdlNDI0ZGRiMzVlODkzMTEzNzQ1ZmVmMmIzODU0MjAzZTA0IHJlbGVhc2UyMS1tYWludAorMjEzNTYgMDcxYzk1NzIyMWVjYzU5ZDg1NTQ1YTIwOTYwYzJlN2Q1MDE2ZTA5NSByZWxlYXNlMjEtbWFpbnQKKzIxMzU3IGM4MjNlYzQ3ZGY0OTVlNThjZjE3Mzg1MTNmMDMwNDU3YWQ3N2U0MDUgcmVsZWFzZTIxLW1haW50CisyMTM1OCAxYWE1OTFlNDE4MTU0NWMzYmRjODUwOTgzNDFlNTQ3YzI0NDM1OTZmIHJlbGVhc2UyMS1tYWludAorMjEzNTkgMTQwY2IyNDZiODY0YWVhMDNmNWFiNjdlMWVhMDY4NzA3NDU4ZTcyNyByZWxlYXNlMjEtbWFpbnQKKzIxMzYwIDE1OWFiZmM4YjFiYzUxYmZjOTJkMTZhMGJkZDY4YTA1NzY1MDk0Y2UgcmVsZWFzZTIxLW1haW50CisyMTM2MSAwYzk3ODcyOGViYWZlYzg3MzJkODg5YzQzZjBlZGE3ZjVjOWZhMTAzIHJlbGVhc2UyMS1tYWludAorMjEzNjIgMGQyODc0MzQxNDRiNTljMmMxZTc2ZjRjYmQyYzQwNTkxNzc5MDc4MCByZWxlYXNlMjEtbWFpbnQKKzIxMzYzIGNkYTZjYTlkZmQ1OTBkNDlmODE5ZTFmYTdjZTM3NDZhOGFhOTk1ZWQgbGVnYWN5LXRydW5rCisyMTM2NCAzYmE3YTM1OGNlMDI4ODVhZjRkNWEzYjViMmVkNjU4MjQ4ZDNlNDkzIGxlZ2FjeS10cnVuaworMjEzNjUgZmIzNWIzYTIyNjA0NjIyMWY3YjdkMzRhMmI2NjViNDNiYTM2MjkxYSBsZWdhY3ktdHJ1bmsKKzIxMzY2IGU0MjdhZmI1NjM3ZjA4YzFjMjQwZWZlYWUxOTUyYjMyOTA5YTBmZGUgbGVnYWN5LXRydW5rCisyMTM2NyA5M2JkYzVlY2UxYmY2OTg3YjYxN2I4OWNhYjRjZjI1OWE2YWQ3N2IwIGxlZ2FjeS10cnVuaworMjEzNjggZTQ1MjdkNDVlOTQyZDFjOTVmNjIwZWUxOTYxYmQzNWIyYmFmODM2NiBsZWdhY3ktdHJ1bmsKKzIxMzY5IGY5OTVjNGYyNTEyMDA4YjNhNWE2NGM5OWM5ZDRlM2NiMzJjZmZkODYgbGVnYWN5LXRydW5rCisyMTM3MCBkMDE0YjUyMjY5MDBkNzMzMjExOWI2OGZhMzg3Y2JlYWFjN2EyMzUyIGxlZ2FjeS10cnVuaworMjEzNzEgYmY5MzZjNTI5NjM1M2MyNjk0Y2EzZWZjNWNkYzcwMjAzODM0ZmM5ZCBsZWdhY3ktdHJ1bmsKKzIxMzcyIDQ5YWNjOGFjNjBjMjMyNDE1ZDliZDU3ZGJjYmViNDYyMjFiODdiZjcgbGVnYWN5LXRydW5rCisyMTM3MyA0MTI0M2NiNGVhMDVkNzc3MTJhNTQ2Yzg5NjQ1MTgwNTQ1NDg0YzU2IGxlZ2FjeS10cnVuaworMjEzNzQgOTc2YjBhZTRmNTI3YzFhMWU3NWM1YjVhYzQzNTEyMzFkYWViZWUxMiBkZXNjci1icmFuY2gKKzIxMzc1IDNmMGJkZDRhZTY4NDAwZjY0ODg3YzA4NjZjMzNiNjVhMDE4ZGI1YTkgZGVzY3ItYnJhbmNoCisyMTM3NiA3NTRkZWI4NjgyMGU1ZjVjYThjZmJhNjBmMjRmMmEzOTk1MGMwNmJkIGRlc2NyLWJyYW5jaAorMjEzNzcgNmNhM2RkODJjYjA3ZWQ0MzU1YWI1YjIzMjJkYWFkNThiNGQzZjAzNyBkZXNjci1icmFuY2gKKzIxMzc4IDA0YTY0ZDJkOGIyZDIwNTc4OTA1YzU3ZGNlYzQ2MzBhZDQ1MmIzNTggZGVzY3ItYnJhbmNoCisyMTM3OSAwMjI2ZDA2ZTNlZmY1OTI3NDkwZWE3Y2U2NzU4YzA0NmI5ZDU3OGZmIGRlc2NyLWJyYW5jaAorMjEzODAgN2VmNjYyYWVkOWRlNGUwYTY3YTU5Y2MyNDM4YzYxYTc3NTczNTg3MCBkZXNjci1icmFuY2gKKzIxMzgxIGY3MzAyOWM3MWIwZGYwOWVlMDc5NTU5MjExYjRhNDA2YTk0ZWY3NzkgZGVzY3ItYnJhbmNoCisyMTM4MiAyZDBiNjlhNjdmNjk0YzY1YjM5YjVmMzdlMmUwZjA5YjIwODE0MzA2IGRlc2NyLWJyYW5jaAorMjEzODMgNDA1ZWFiYTM2YjJmYzg2MmVjMmJhN2E0ZDdlYWY5ZWIyOGNjYTIyZiBkZXNjci1icmFuY2gKKzIxMzg0IDI3ODM5YmE3ZWMyMmVkNDllMmMzMTRmOTE2M2FiZDY5YTU5NGJjNTMgZGVzY3ItYnJhbmNoCisyMTM4NSA4NWRiOTg5ZjZhNzNjNmNjYzU2YWM0MzlkYjY4YjRlOGY1YTkzMmEyIGxlZ2FjeS10cnVuaworMjEzODYgNmExNjMwMTE3ODA1MTY3ZWFiOWMwOGQ0NmNkM2E5Zjk3NDUwODhmNyBsZWdhY3ktdHJ1bmsKKzIxMzg3IDc5NDU4MmZjMDYyM2UzYjk1ODc3YWQ4ZmQ1ZGVhZjE1MzUyMWNiMzAgbGVnYWN5LXRydW5rCisyMTM4OCBjMmE2MGRlOTFkMmM3MTM4MTNmM2NkMjIxMjc1ZWU4ZTAyNGViMDU3IGxlZ2FjeS10cnVuaworMjEzODkgZWRhZGZhMjgzNTlmODUyNTMwMGRhY2I0MzA0NDAxYTBmZDI4OTQxNyBkZXNjci1icmFuY2gKKzIxMzkwIDU4NDY5MjAyZWU4ZDhiMWI1Yzk3ZDFkNWQ4NWJhZTZmNDAxMmFiY2YgZGVzY3ItYnJhbmNoCisyMTM5MSBmZTYzMzUzNGY0NDc4NjM3NTQ3YTI3NDc4YjljMzY5NjY2MzUyMTMwIGRlc2NyLWJyYW5jaAorMjEzOTIgYTEyZWM4ODc2NTE1YzM3ZTc2Mzk2YjZhYzU3YWM1NzZkN2Y0MmY5OSBkZXNjci1icmFuY2gKKzIxMzkzIDU2NjhhODU1MGJlNDU0NWI0YmU0ZDIxNTNjZDg5ZTI5NzNiZTY5ODAgbGVnYWN5LXRydW5rCisyMTM5NCBlOTBmYzM0ZDczZDAwZmEyMmExYjUyYWFmNTk1YWQzMzk5YTI2ODYyIHJlbGVhc2UyMS1tYWludAorMjEzOTUgZThkYzczMzg2NzA2MmExNDlhYTEyNzczMjgwZjk1N2FiNzc0YmIzOSByZWxlYXNlMjEtbWFpbnQKKzIxMzk2IDBmZGMyNzc5ZThkNDNjNGNkN2VmYzJiMjZiNmFjZmUzMjk5ZjcwYjIgZGVzY3ItYnJhbmNoCisyMTM5NyA4ZGI5NDM2N2ZhZTFjODA4MDcwYjFjMWZjMjExOWY1NDAwN2I1OTg1IGRlc2NyLWJyYW5jaAorMjEzOTggYjNiYTBmNDhhZGM0Y2U4MDViNTE2ZTNkZmNkZjg3ZmJjYjE0NDdkZCBkZXNjci1icmFuY2gKKzIxMzk5IDExNjYwMTFhOWNmY2E5ODJlMDMwMjgzZDUyZjYyMzJmZTljYmJlMDEgZGVzY3ItYnJhbmNoCisyMTQwMCBmNzBiMmQ2M2YzMDlhOGUyNjExZjY1MWFiODI3ZGI2NDhhMzc2NDEwIGxlZ2FjeS10cnVuaworMjE0MDEgZDMyZmU0OGZiYjk2OGQ3MGMxMDBlNmRlYjdjMmVmMzg3NTI5MmIyMCByZWxlYXNlMjEtbWFpbnQKKzIxNDAyIDI2NGVkNTVkZWM2ZTFhZDM1NDE5Y2Y5ZGQwYmIxMzY0NmIzNDA1YTcgcmVsZWFzZTIxLW1haW50CisyMTQwMyA0NDlkYTg1N2RjZTU5NDQxYTkxZmQyN2UyMGY3ZTMzZmRkZjY1NmY5IGxlZ2FjeS10cnVuaworMjE0MDQgYzAyOWI3NDMzMmQyYWFmY2JiYzBjZDgwNzFkNTQyZmI2YjExNWM1NSBkZXNjci1icmFuY2gKKzIxNDA1IGQyYzk5NjNlNDI5MTU1NTY4MTdjMWJkYzZiNmViNTlkN2E5ZGE2Y2EgZGVzY3ItYnJhbmNoCisyMTQwNiAxZGE3MjRjZWUyMmQzZjY1NTljZGJhMDFkMTI3ZWRlOTFjMGQzYjc4IGRlc2NyLWJyYW5jaAorMjE0MDcgNWE3ODQxMzQwZGM3YzFjOTMwZDFkNTk4NDM1ZjIyOWNiODI5ZTg0NCBkZXNjci1icmFuY2gKKzIxNDA4IDA4YTJjMmU3OTRlZmRlNmM5NDFjOGE2MTUzZjE5ZmY5MTFjYjM2ZWYgZGVzY3ItYnJhbmNoCisyMTQwOSAwMjAwY2QyMjQ5MmVjMjYwOWNmMTRmZDQwNjMwNDIzOThjZDEyZmYyIGxlZ2FjeS10cnVuaworMjE0MTAgNGJhYjllY2YzZTA1ZTJmNjY4ZmYwYmZmYjBmZWYxMDZhN2E5ZmM1NiByZWxlYXNlMjEtbWFpbnQKKzIxNDExIDE3MzMwNDI5Y2RmZWI1ODA4YjA4MWI4M2NlZWI5NzdmMmMyZjQzNTEgcmVsZWFzZTIxLW1haW50CisyMTQxMiA3OThiNWU2YjQ5MTVmMGRlOTRlYTYyODMxOTkzMTNhYWI2M2E0MmJkIGxlZ2FjeS10cnVuaworMjE0MTMgNTU5NjUwNGFkNDlhZmIwYTVjZmEwMzc1NjdjOWVmNjlhNDVhY2YyNiBkZXNjci1icmFuY2gKKzIxNDE0IGU1ODc5OWVlZmEzOTc4MWMwMWI4OGRiY2FiOTIwNDEwNzllYjkxYTcgZGVzY3ItYnJhbmNoCisyMTQxNSAyN2I4NjY1MTRjOWViZGNmZDJhMDY4MDg1MDdlODQzNDAwNDI0MjAyIGxlZ2FjeS10cnVuaworMjE0MTYgMjUxM2JjMWRiMTJmZWRhYTQzMDk4MmMyOGYxYjUxOGU1NTA1Zjk0ZSByZWxlYXNlMjEtbWFpbnQKKzIxNDE3IDUyMGUxZjQwMTAxYWEwMWQzODFiNDIwODA2YTQxMzMzNTk1ZmQxYjYgZGVzY3ItYnJhbmNoCisyMTQxOCA4OTM3ZDIzNGIyYThkNjUyZmM5NWI2MDNlM2E1M2YyNTUwODRkMWM5IGRlc2NyLWJyYW5jaAorMjE0MTkgYzY3MjNjZDU1NDU4YjI0OGRhNzgwYzUxYzEyYzcxM2EwNGY3OGNhYyBkZXNjci1icmFuY2gKKzIxNDIwIDY1MGY3MDA0ZTZkMzlhYTMzNjI3NDZkM2ZhNmQ0MDQ1NDEyNzFmZmMgZGVzY3ItYnJhbmNoCisyMTQyMSAyM2JiM2Y0OWNiOTQyNDk4M2JkYmFhZmMzOWJhOWEzZmY4ODNiZDA2IGRlc2NyLWJyYW5jaAorMjE0MjIgNDRhODdjMzAwZjJiYTRmM2EwZjg0Y2I0M2ExODIyMTM2NjM3YjY4MSBsZWdhY3ktdHJ1bmsKKzIxNDIzIDNlZGE2MjMxZTFjMjU4NDkwOGE0ODE0MWEwZTE3ZTJmYzg4MjJkMzQgbGVnYWN5LXRydW5rCisyMTQyNCBkMjNmOTkzMWIwMzM1OWE4NWZjZjJjMjk3YzhlMzNmZjgyMDg0NDY3IGRlc2NyLWJyYW5jaAorMjE0MjUgNGUyNmI0MWQyZjNkYmNiNmU3NGM0NDg4MGM3MjQ1YWMyZWVjN2IxYiBkZXNjci1icmFuY2gKKzIxNDI2IDlkZTY1NjAwNDIwYjYwNzE4MzQxZmJiOWNhYzM0ZTczNjJmNjdkNmEgZGVzY3ItYnJhbmNoCisyMTQyNyA5YzU4ZGRjNDcxOTVhZDgzMzExODFlOWU5NzI0ZDYzMGZiNmE2MGJjIGxlZ2FjeS10cnVuaworMjE0MjggYmUwOTZiYjRlM2YyMjdhNzQ0NDMzYTM0MmIyZDM1ZGQ2NzQ1M2U5ZiBsZWdhY3ktdHJ1bmsKKzIxNDI5IDk4NTU2Y2RmZTcxNjk0ZWI1YzBlYThiNzAzMDZlY2NiMDA5YzEwMjUgbGVnYWN5LXRydW5rCisyMTQzMCBhODBlMGQzOWYxMGIyN2ZhOGFkNGU5NTFjNjBkYTNkMDI5MmFiNDQ0IGxlZ2FjeS10cnVuaworMjE0MzEgZmEzYTQyMDdkOTU3MDg0NzUyY2Q1YWQzZDNjZjkyYzUxMDA1OTgxMyByZWxlYXNlMjEtbWFpbnQKKzIxNDMyIDU2NjUyZTY4NDczN2I5ZGIyZmM1MmUwZGUwZGY1M2ZiYzJmYWNjNWMgbGVnYWN5LXRydW5rCisyMTQzMyA5MDMyMTI2MTI3NzEyOTBhNDlmNjA3YjY2MjRiMjVhNGYyY2Q5NzdhIGxlZ2FjeS10cnVuaworMjE0MzQgMTE3MzcxYWY1NDRiMDkwYTU0MDhiMzAwMmI1YTcyOWJmZTRiZWRkNyByZWxlYXNlMjEtbWFpbnQKKzIxNDM1IGNhYThmZmMzY2QxYzcwZTA3Yjc2N2Y0NDJlNTE2ZTEwMjNiZjU3ZTUgcmVsZWFzZTIxLW1haW50CisyMTQzNiA3N2Y0MTYzODc5MjJlYTc4MThiMjY0NWZhODMzYmEyZmQxODQzYzRmIGxlZ2FjeS10cnVuaworMjE0MzcgYzAyODg2NzAyMzBlOTMyNWJmNDYzZTQ2ZTI5Mzc4ZWIwMDc5YzNiZSBsZWdhY3ktdHJ1bmsKKzIxNDM4IDJlMWFkYmU4OWU0YTU4NDQxZWI3ZTEyOWJiYWM4MjUwZWY2MjY1Y2MgbGVnYWN5LXRydW5rCisyMTQzOSA4MTE4NDJkYWNkMzllMWU5Yzc5OTFlMWI5ZjQwNTdkYmNmMzBmNjU4IHJlbGVhc2UyMS1tYWludAorMjE0NDAgNDUxYzBhYmJmOGE5ZjU0NTI4ZTFjMGJkOTVmMTE1ZDU0Y2MzN2FjNyBsZWdhY3ktdHJ1bmsKKzIxNDQxIGVhYWJjYTEzMTc0ZTAzZmM0ZGY2OWVhMmIyYzljYjVhOTMyMDFjYjQgbGVnYWN5LXRydW5rCisyMTQ0MiAzZmRlMWQyMDMzMWVhZjYxZGYxMGQwMzI0MmFmNTczYjE2ZmQxMmVlIGRlc2NyLWJyYW5jaAorMjE0NDMgNDcyZWY2ODMxOGE4YmY4ZmQyNzE5MjAzYWM5MzIzZWQ5YTgxNTQxYyBsZWdhY3ktdHJ1bmsKKzIxNDQ0IDRkMzdiNzJhZTJkMjYwNDAwNTY2YzZjMTIxMDU1ODQ0MTQzZGY0MDUgZGVzY3ItYnJhbmNoCisyMTQ0NSBmMjRlYzIzY2Q0N2VkZmY3NmI0MmQyYjY4YWYyNjljODA4MWRlMzQ2IGxlZ2FjeS10cnVuaworMjE0NDYgYzc2ZGFkMDY0NjFiODg4NDAyMDcxMDNhZmIzZGQ4N2E3MmVhNTI5MCBsZWdhY3ktdHJ1bmsKKzIxNDQ3IGZiZTBkZWQ1ZTRjMWJmMDI5MWU0N2RiMzljMjRjMjUzY2Q0N2IxOWEgcmVsZWFzZTIxLW1haW50CisyMTQ0OCBmYjk2YTc4ZTcyYWM2ZjU0ODdkMjgzYzY1M2I0NTczMjdiOGVkOTU0IGRlc2NyLWJyYW5jaAorMjE0NDkgNzY0NDkyYThmNmE3NTkzNzNlNmFiZTEzNGM1YzllMTU1YTIwNzg3YyBkZXNjci1icmFuY2gKKzIxNDUwIGUzZWFjMjFlMWQzMDRiYzM3NmMzNzFkNDlmZTZlMzExNjhiNjc1ZGUgZGVzY3ItYnJhbmNoCisyMTQ1MSA5ZDZkMTExNmJmMmNjZThjNDMyOWQ5MDlhZTU4NjZiZDRhYmYxN2FiIGRlc2NyLWJyYW5jaAorMjE0NTIgMTY5NGFiODdmMWQ3YzMzMzk1ZTk5M2FiZGJhZWIyNjJiODQ3MjE1YyBkZXNjci1icmFuY2gKKzIxNDUzIGYzOTllNmJjNTBhZmQ1ZjNkZTQyMjRlMTgxZDUzZDc0ZjRhNDU2MTAgZGVzY3ItYnJhbmNoCisyMTQ1NCAwMWI5MjBlYTUyZjE2ZmRlZDQ1NzkwNzViNTljNzZmODc2ZmExN2Y5IGRlc2NyLWJyYW5jaAorMjE0NTUgMmUzMTY2NWJiZGMyNTUzMTQ4OWUwNjNiNTVjOWIyYTY5Y2M5MDA0MCBkZXNjci1icmFuY2gKKzIxNDU2IGJmZWQyMTIzYjE0ZDdjNDUwNjc5NmUwY2IyOTgzMTJlZmQ4NzM5OTAgZGVzY3ItYnJhbmNoCisyMTQ1NyAwYmQ2N2M4YTk2OWUwNTE4ZGE5ODk0YzI3ZmEwZGMwZjI4YjYzOTAzIGxlZ2FjeS10cnVuaworMjE0NTggYjYxZjNiNmNlMWZmOTBkMjQzYzg2ZWIxM2Y3MjRkZDQ2NDU0MjAzNyBsZWdhY3ktdHJ1bmsKKzIxNDU5IDNiMjk1Y2UyNzA1ZjY3YWM2ZjEyYjU0YWMyZGQ2MTJlYzFhNjc5MTEgbGVnYWN5LXRydW5rCisyMTQ2MCBlMTAwYzA1ZDQ0NGVlOTAxNjVjYzlkM2NmMDliYWVkM2U5MGZlMTQ0IGRlc2NyLWJyYW5jaAorMjE0NjEgMjRhMGY4NGFkNzQ2NWU3YjIxMzBjZWYzMjRiNDBkZGI1N2IxMjA1YSBkZXNjci1icmFuY2gKKzIxNDYyIDMzOGFhYTE0YzRlNWFlZWJlMzFhN2ZhZjg4MzZmYTE0OWMwZThkYWUgZGVzY3ItYnJhbmNoCisyMTQ2MyBiMjFlNzBjNmQwOWQ0YTMwMzdmNTkyNThkZmU1MDhhODE5ZWZmZWUxIGRlc2NyLWJyYW5jaAorMjE0NjQgNjMwYzg2ZDMzMzBiZDQ5N2NhNjJlNDdlYjVmMDc5N2Y2MmY5NzE3OSBsZWdhY3ktdHJ1bmsKKzIxNDY1IGJhZjA0Y2RmNjVhMzAwZGU2YTQ0NjNlMmUyZGJhMDExNjExYjFlYjcgbGVnYWN5LXRydW5rCisyMTQ2NyBmZGMzYjE2MjE1Yzc1ZjMyZGEyZDA3M2RlMmIyOWZhN2IxYjViNzc4IHJlbGVhc2UyMS1tYWludAorMjE0NjggZjY5MjVhZDJkMTkxMWIzOGU4NzI3ZTkyM2IwZDQzNWI3MjRlMTczMiBsZWdhY3ktdHJ1bmsKKzIxNDY5IDQwZDE5ZjkwN2UxMjAxNTQ2MDA4ZTk1OTlkMjIyNTMwODZmMDVhNTEgbGVnYWN5LXRydW5rCisyMTQ3MCBkMWM2MGIwNzIxN2Y4YzYyZGY2NDhhNWRhNjFmY2RjMzE1NjZmOGEyIGxlZ2FjeS10cnVuaworMjE0NzEgZGM3NDgyM2I0OWVhNTcwZGVjNGQ5OWFmZDZhMjdhMWQyMmY4MzljNyBsZWdhY3ktdHJ1bmsKKzIxNDcyIGY2YjNhN2E5MGQ4M2ZjMGJhMDI0ZTAzYTBjMWIzZDUzZmI5YmEyMGUgbGVnYWN5LXRydW5rCisyMTQ3MyAwODAxMDA2NDczOTZjOGQwMzRmYzZlMzA2ZDc3ZjQ4ZTBjYjU1MWJkIGxlZ2FjeS10cnVuaworMjE0NzQgOTVlMzk0N2NhM2NlYTE5NDUwODc4ZmQ4YjVkNzVkODY2ZDQ0MTVkYyBsZWdhY3ktdHJ1bmsKKzIxNDc1IDgzNDc5MjUyMzA5NDg5MTIyZjhlODkwMjk5NWY0ZTlhNmNkZWI1ZDMgbGVnYWN5LXRydW5rCisyMTQ3NiA4Y2RmZjU0NWNiZGU1MGUyOTU2ZmYwZTFmNjZkMzU2ZGEzMTVlMTg2IGxlZ2FjeS10cnVuaworMjE0NzcgOWM2YThkY2Q3MjJkNTU1MzEwNmFhYWM5ZjU3N2M3OWU5YmUyZDJhMCBsZWdhY3ktdHJ1bmsKKzIxNDc4IDA2MzMyYjNjNDMzNWQ0MzMwMGIyZDQ0MmUyZTcxNzIwYTNmY2NmZjMgbGVnYWN5LXRydW5rCisyMTQ3OSA2MTM1YzEyZTg0NDg2NzJiMTNkYzRiYzhmNGI4YjBmZTNkMzM1NmI1IGxlZ2FjeS10cnVuaworMjE0ODAgMWUwMmUyMDE0ZTM2YTQwOWQ0NjU2Y2NiY2U3ZGM1ZWQ1ZWFmOGQwZCBsZWdhY3ktdHJ1bmsKKzIxNDgxIGFhZGQ5OTgzMDUzMWFmNTA2NTM4YTFkOWUwOThhNTM4NTBhOTMwODAgbGVnYWN5LXRydW5rCisyMTQ4MiA3NGIzYzRlM2Y0ODYxMTBhNDhhYTNhMWE4N2IzMmMzMWE3NTAxODc2IGxlZ2FjeS10cnVuaworMjE0ODMgZjgwZjZlOTIyOGRlNmRlNDNmMDBhOWRkNmU2OGM2NGM2NjUyMzZkMSBsZWdhY3ktdHJ1bmsKKzIxNDg0IDExNjUzMjE0MWFkZWUzODA0Mzg0Mzg4MDQ4MTU3NWZmMWZkZjkzMDIgbGVnYWN5LXRydW5rCisyMTQ4NSAxZDBkM2U2YTMyMDFhMDEzNjc1ZjVkNGMyZDQxN2YxZTNlODE1NmMzIGxlZ2FjeS10cnVuaworMjE0ODYgNzI2ZTVmMmNkMzZlZDBkN2RlYmE4MzkwZThlOTQ2OWQ4YzQ3OGNmNyBkZXNjci1icmFuY2gKKzIxNDg3IDdkZTVjMzc2MjMyY2I0YTM4MDY2MTk3Y2M1MDM5ZWMzMWM1Y2I2NzUgbGVnYWN5LXRydW5rCisyMTQ4OCA4MjRkNjExMTNhNzEyMjBjYzkzM2NmMmY4NWU4NDNkNTU4M2U4MzczIGxlZ2FjeS10cnVuaworMjE0ODkgYzg2NjI1NDNjYTZhNjg1ZDQxNjdlOGRjN2NkYzNkMDAyZGZlYzM2MSByZWxlYXNlMjEtbWFpbnQKKzIxNDkwIGNhZGMxODk0MmEzNDQ1NzkxMWZlZDYzYmY4ODM2OTliNjM3OGFhNzcgbGVnYWN5LXRydW5rCisyMTQ5MSA3ZjgzZWUzNzk3YTI2NDY2ZGZmNGM5OTNmNTVmMDc4NTNjMTA4OWY5IGxlZ2FjeS10cnVuaworMjE0OTIgN2IwM2MxNTA3NTRhMDlkNDJmYzljYTVmODYwM2QxY2Y0MjE0YTMxZiBsZWdhY3ktdHJ1bmsKKzIxNDk0IGFmZGE1ZmZmNTAyNzFiZDQyYzRjMDZjZjE5YWQ1NWIyM2MyYTU5MzIgcmVsZWFzZTIxLW1haW50CisyMTQ5NSA4MmY5NTI0Y2M4NDQxMmFhYjQxMzI0MDc4NzU2MDU5YzIwMDE4NWM4IGRlc2NyLWJyYW5jaAorMjE0OTYgYjRhZjA5MWUzMWM0YTQ2MTczZjRjZjQ3MjI5NDNmNTllOTdiMGQ5NiBkZXNjci1icmFuY2gKKzIxNDk3IDJlNmZiNmU2NDI4ZmEwOTdkY2Y1ZTJiNjhiNTk5OTljMDk4YjA3YTQgZGVzY3ItYnJhbmNoCisyMTQ5OCBkOTRmOGIzMjEzZThjZGZlZGU1OTUwNTMwZmIwNjQxMWRjNGY3Y2Y5IGRlc2NyLWJyYW5jaAorMjE0OTkgYTQ1Nzc2MjcwYzhlMTFhY2M4MjhhODY0ZDk5ZWM5MjMwY2RmYmFiMyBkZXNjci1icmFuY2gKKzIxNTAwIDIzMjA4ZjMwMjdmNjgzMWEzY2I5NDgzZWFkMTg4MWI5YTg4ZDM2YTIgZGVzY3ItYnJhbmNoCisyMTUwMSBhMzE4OTFjYmFkNDQyN2I0ODcyYzgyYWNjMTE2MjRhZTAwMDBhNGI4IGRlc2NyLWJyYW5jaAorMjE1MDIgNjliODhkMzRlNzIyZGU5ZjI4Njc4MDFhMTc2YzdlMjQyZjY2MzY5MCBkZXNjci1icmFuY2gKKzIxNTAzIDQ3YmIwNjAyM2U4MDU5M2E5NDc4OGNkMmM3MjQ1YzU2MWViNjUyMWUgbGVnYWN5LXRydW5rCisyMTUwNCBmNDAzMmJlZDQ3MGYzOGYyZGZmMDgyMjBjMDNlMWJkNjhiZGY4NWU3IGRlc2NyLWJyYW5jaAorMjE1MDUgYzVlNDY2MzRjN2Q5NzhlNDcxYmU4N2U0YTg1MmIxNmNlMTZiMGNkNiBkZXNjci1icmFuY2gKKzIxNTA2IDUzZDRlNzJiYjQ0M2IwYjM1OGI4MTA2YzUyNGI4N2Y1MjM2NjdlMDkgZGVzY3ItYnJhbmNoCisyMTUwNyBmZjgxZTczNWUxODRmZTM1MWVkZjlmNzNkZmFkZDI2MjQ1ZjkyZWI3IGRlc2NyLWJyYW5jaAorMjE1MDggMjM5Mjc2NjRjNzI5NWU4NmVmNjNhYTNlMzM3OGNhZDAyMmM1YjJhNyBkZXNjci1icmFuY2gKKzIxNTA5IGViODBiNDljN2IxNWZmYzZkNmRhNWY4NzExNGFmYTJiMGQwMGUyMzggZGVzY3ItYnJhbmNoCisyMTUxMCBlNmRlZmUyNGNlODU1NjVkOGQwMDhmMTllMDExMDc0YTM0NjcwOTBlIGxlZ2FjeS10cnVuaworMjE1MTEgYjY4OTQwY2YyMDE3MjEwNGI4YTNjYjA2YzI1N2IwNmE2NTkzYjdhMCByZWxlYXNlMjEtbWFpbnQKKzIxNTEyIDExNjVkM2Y3ZWFmM2NhNWZkMDRlN2RkYTI2OGZmMWNlZGVlMzUzMGQgbGVnYWN5LXRydW5rCisyMTUxMyA5NTEyNzQ3YWZlOWU5NDJhNzljNDQ5Y2NjNzE2YTk4MmY2NDBmOGI3IHJlbGVhc2UyMS1tYWludAorMjE1MTQgNTY4MmY5NmYyNWRlMjQzODlhMWE5ZGU4MGY2YTRhYzdkYmZkNmQ0MSBsZWdhY3ktdHJ1bmsKKzIxNTE1IDI4MzZiMjY4NjE4MDZjNjk1NTU0YTBhOTQwZDJhZWUzOThiNzI0OTAgbGVnYWN5LXRydW5rCisyMTUxNiBmYzE2ODBmYzlkMjM2ODljYzI0MTNlZWQ3OGUzYTdmOWNjYWFlODk5IHJlbGVhc2UyMS1tYWludAorMjE1MTggYmNiYmM1MWYwYmIzZDk2Y2JhM2M2NWM1NDVmYTJjM2RhYWY1ZmQyOSBkZXNjci1icmFuY2gKKzIxNTE5IGIwZjk4NDc1OTE3ZDRlNWUxMDA0YWI1YzI1YjQ5YjE1N2I4NmYwMDUgZGVzY3ItYnJhbmNoCisyMTUyMCAzN2Q5ZDJhN2NhNTBkZmFiYzljMGIyODI1OWExZTc4MzQwYWUxMWJjIGRlc2NyLWJyYW5jaAorMjE1MjEgZWViMmU3N2M1YmFkMmFhMmQ2YzlkMGFlMDE1ZDk5NTYzNjZhMzYxNCBsZWdhY3ktdHJ1bmsKKzIxNTIyIDdhYjA5ZmJiODY5YTBlNWM3OWZmMzhkNGRlNDc4ZWM2MTZhMTFjNWYgZGVzY3ItYnJhbmNoCisyMTUyMyBhMjliZWY0NTdlZDhmMDJiY2NjNTA1NDY1MDg4NDA4N2UyYTliMGYxIGxlZ2FjeS10cnVuaworMjE1MjQgYzFlNDEzZWY5ODE3NzY1MTRjZDc2ZDZlZmYyYThlNDAzOTE3ZjA5MiBsZWdhY3ktdHJ1bmsKKzIxNTI1IGRmY2MwMzhjMmQ0Y2E2OTk4ZmUxNGM0MzhiMDcwOTFlOGRlMWU2YzUgbGVnYWN5LXRydW5rCisyMTUyNiBkODQxNGY1MWQ0ZjU4ZWY3OWMzNmJkY2MzNDE3NjZjYTkzZDc2NjM0IGxlZ2FjeS10cnVuaworMjE1MjcgMzNiNDM1N2FlYmI4YzNiMWIyYmIzM2M5NjM3ZmRjMzIwZmMyNDk2YSBsZWdhY3ktdHJ1bmsKKzIxNTI4IDRlNWU5NzdiZDNlMmE3NDBmMjU0MzE5NmZjZjRlYmI0ZDdjYzc5MTMgbGVnYWN5LXRydW5rCisyMTUyOSAwOTIzNWJlNzQ2NDkzNzUxODYxMTFiNjMwMDg0Y2E2ZmUzZjAzOTlkIGxlZ2FjeS10cnVuaworMjE1MzAgZDU2ZWNhZTU3ZTBjMjUyOTNkOWU2Njc5NmQxZDlhYmNkOTU5MTIwYiBsZWdhY3ktdHJ1bmsKKzIxNTMxIGI2Y2ViYmViMDdkMWIyOTIyNGVhNmJlNDA2ZTJlZGY2ODNhNGFkYmEgbGVnYWN5LXRydW5rCisyMTUzMiBmODNiZGQwNzUzNjFiMWY5OGEyNTM0MTIwZjQ0MjgwNjM1ODMwNDVhIGRlc2NyLWJyYW5jaAorMjE1MzMgOWYwMTNkMTNhMjhiMWRhZjE4NWYyOWVjNWMxYjVhOWJmYmRlZmVkYiBkZXNjci1icmFuY2gKKzIxNTM0IGI0NDExZGUwMTY2MmY3ZjkyNDU4ZjNmNDhiZDQ1Mjk5NjAxZjhlYWQgbGVnYWN5LXRydW5rCisyMTUzNSA3NjM2MGFmZGI5NzAyN2YwM2ZhZjY2OTcyZTM1NjkwNmM4MjYwYjJhIGRlc2NyLWJyYW5jaAorMjE1MzYgZmExZTg4ZWIxOTk0YTZiZGQyYjAxZDBiZDkxY2M1MjE3ZWE2YjQ0OCBkZXNjci1icmFuY2gKKzIxNTM3IDE0MTdjZjQ3MGFlOWU1ZGY0NzE4OWU1NjY4ZTJhN2I4MWUyMDAxOGUgZGVzY3ItYnJhbmNoCisyMTUzOCBkMmViMjM2MzZjYzYyN2VjOTk1NTJkZjQ4MGVkOTNkNjM3ZDNiZjY1IGRlc2NyLWJyYW5jaAorMjE1MzkgNDY4MjVlZDIzNTI4YTJjM2JhMDBiZmRlOTIyZWM3OThjZDVhMTEyMCBsZWdhY3ktdHJ1bmsKKzIxNTQwIGYzMTVmNTY3NGI5NWY2MmJhNjMyOTI2YTg5MmQwZWYxYTI3OTUxZDYgbGVnYWN5LXRydW5rCisyMTU0MSBhOTczMzQ5NzFhODE4NmI0YTc5YzQ0ODA4NmQxNjBhZTE4M2JmYThlIGxlZ2FjeS10cnVuaworMjE1NDIgMmZkMTM3N2VjNDhjMGQyYjFhNmIzYzEzMGI3OTM1OGFjOTczN2YxMSBsZWdhY3ktdHJ1bmsKKzIxNTQzIGE4M2ZmNzczOTk5MjlmNWNmZmNkYWIxM2VmMGJkOWZmNzcxZTY4MDEgbGVnYWN5LXRydW5rCisyMTU0NCA2YTVlZjE5OTQxNTM2ZTFiZDRkMjk1NTllM2RjNWU0ZTRiMWI5MmUyIGxlZ2FjeS10cnVuaworMjE1NDUgOTljOGI1YjBjODk2Mzg0NThhYjdiYjY1ODgzMzVmY2ZjODc2OWFhNSBsZWdhY3ktdHJ1bmsKKzIxNTQ2IDljMzU0ZTY5YTQ4OWU4NTkxYmJjNmU1MjFhYTA4ZmYyM2Q5ZTQ5YzAgbGVnYWN5LXRydW5rCisyMTU0NyAwYjQwNjFlZWM2OGUwMzk4YzBiYmMzZjViZGI1ZjdjMThjOGVjZDU1IGxlZ2FjeS10cnVuaworMjE1NDggNDU5MTczMjM3OTE1MDNkOGNhNzY5NzA2YWEwNGU1NWQ4ZDRmNDkxNyBsZWdhY3ktdHJ1bmsKKzIxNTQ5IDcxZjE2MWU4YTFkNzE2ODY3ZThkODExZTI3ZDFhMWM4NjVhZWY2OTAgbGVnYWN5LXRydW5rCisyMTU1MCA0MGUwZjVhMzMyZTkwYTY2YWUwNDBkZGFjYmRiNGYxYzQ4YjkzMmVkIGRlc2NyLWJyYW5jaAorMjE1NTEgZDkwNTJjZDllMGE3NjNlMWMxOTc0NmE5MzhhYWVlY2JiM2QxMWI1NSBkZXNjci1icmFuY2gKKzIxNTUyIGYwNGExZGRkNzQxYTM0ODY1NGViNzAzOTcyY2JlMWU5NzNmZTNjZTAgZGVzY3ItYnJhbmNoCisyMTU1MyBiYThhNTYyYmUzODM1OGNmNWQ0ZTkxMjMwNGNkZTBiOWQ4NjZiNDE2IGRlc2NyLWJyYW5jaAorMjE1NTQgNmE1ZmUxYTk0M2NjZDVjMTVkNTVkZWUwMGY2ZTc3NWVkYWJmNzEwNCBkZXNjci1icmFuY2gKKzIxNTU1IGVhY2I3OGQ5Y2I4ZWRiMGNjZjdhYmZlNDU5YTkwOTQyMzI2MmJjNWYgZGVzY3ItYnJhbmNoCisyMTU1NiA2NjM3MDE2ZGY2ZTI4ZjY2Zjk0MjZmMWVhYzIwN2ZlNTIyM2M5MjQwIGRlc2NyLWJyYW5jaAorMjE1NTcgMTczYmM3MjRkMTEwZTI5ODAzNjFmM2RmODE5OGM2NDQwOGVkMjY5YSBkZXNjci1icmFuY2gKKzIxNTU4IDNkYWUyNTFiNWRmNWEzMjc1ZGNhZjc2MTU5OWJhMTFkMmE4ZDIzNDkgZGVzY3ItYnJhbmNoCisyMTU1OSA1Yzk3NjkwMTY3M2U1ZDA2ZjQyZDU0OWFkNjE0MjA0MWYxNjNjNmUzIGxlZ2FjeS10cnVuaworMjE1NjAgZjdkZTllMDQ4N2NmMTRjMmUxNDQ2MjQ1NGUxZGI0YjAxZjA2YjZiMCBkZXNjci1icmFuY2gKKzIxNTYxIDg4ZWU5NjY1ZGUwNTQzZGJmZjYzZWIzMDY1Y2UxNjUzNzA0YTdhYjkgZGVzY3ItYnJhbmNoCisyMTU2MiBmN2YwNzZiZmNhZTljOGMyZDI4ZTM5ZjZkNzIwZWNiOTEyNzk1MmJlIGxlZ2FjeS10cnVuaworMjE1NjMgYjY2YTY1MmUzYzNmZTdiOGE3MWYwM2VkNDcyYTUxMjNjZGMxZmRlYiBkZXNjci1icmFuY2gKKzIxNTY0IGFhNzZjMTdhNWYwOGNkOTk5Zjg4OTE4OGFiODdjN2RhMTA2MGNkYmQgZGVzY3ItYnJhbmNoCisyMTU2NSBkZTg1NjBjNjhjNmZkY2Q2NjcxYTU2NDhmZDllYzllMGI5ZmI1NDRkIGRlc2NyLWJyYW5jaAorMjE1NjYgZThjNjYxZGYzMDM4MTRhZWQ5Y2NmNjgzNzUxNmNjOGJhZTU2NTczYSBkZXNjci1icmFuY2gKKzIxNTY3IGMxNWFjZjJlMDExMDhjYWQzYmYyMzYzZmE1MmMzZDUzYzY2ZDVlMmQgZGVzY3ItYnJhbmNoCisyMTU2OCBlYjA0YTA1NjRhODE4NjA3YjEwOWQ3NGIwOGY0NzQ0YTIzNjhjMmRmIGxlZ2FjeS10cnVuaworMjE1NjkgOTY1MzI3MmYwMzZmNDBhMzM2ODFlZWUxNzUyNjRkZDgxMWFkNWZkOSBsZWdhY3ktdHJ1bmsKKzIxNTcwIDY4NGIwMDk5MDMyZDQ2MmM4YTJhM2FlOWI2MzMzNTYwZWEwMTU5YWMgcmVsZWFzZTIxLW1haW50CisyMTU3MSAwNWM0OTM0NmI2OGI4ZGY2ZTkwNjJhYjI5ZGUxNDJiY2E0ZWY4NzJiIGxlZ2FjeS10cnVuaworMjE1NzIgMzExMTlkMGExOGU2ZmMyOTNmMDk4ZDlmZjEzODdkNjhkYjBlYzA5NCBsZWdhY3ktdHJ1bmsKKzIxNTczIDEwMzAyODcyNTI1M2IzODdkNzNlZWI0ZTI5NTBlZWQyNjlhNmEyYWYgbGVnYWN5LXRydW5rCisyMTU3NCA1MWM1MDFjNjg2MDhjNTNhZjA2N2Q5YmIxZWM2YzNhZGJjMzFlOWQ1IGRlc2NyLWJyYW5jaAorMjE1NzUgNjVjOTI4N2FiZjg1YmE4OGUwMDk3ZTZmMjhkZmVhYjhmMDliOGIzNCBsZWdhY3ktdHJ1bmsKKzIxNTc2IGVlN2E4NmY4NzM4MzVmYzU3YjZiZDEzNzIxNjAyM2Q0MTdhYjg5ZmQgZGVzY3ItYnJhbmNoCisyMTU3NyBhNGZiYzJmMDEzOWE4MmQ3ZWQ3YjJkNTY4ZTZhOGFhM2Q2NjE5NGI0IGxlZ2FjeS10cnVuaworMjE1NzggOWMwNGUyM2Y4ZDQzYjM5MTg2ZTIzNDRhNWRkMjdkNjE2MGU0NWJlYiBsZWdhY3ktdHJ1bmsKKzIxNTc5IGQ0NWFiNzE0NmIzN2NmODc2OGQ0MGZkNTk3ZWRiNjlkOTFiZDU3ZGUgbGVnYWN5LXRydW5rCisyMTU4MCA2ZGE4NjIzMzlhMGU5OWRiNWQ5N2U1ZDM2MTQzYWI4ZTM1YzY3NzkzIHJlbGVhc2UyMS1tYWludAorMjE1ODEgMjkzM2FlNDkyMTZmMjYzODJjMmFmNTAyN2I5ZGJmNmQ0ZTYyNDkyZiBsZWdhY3ktdHJ1bmsKKzIxNTgyIGNhMmVhNzVkZjNmMjUyYjA3Mjg4NjEzNmEzM2JmYjg4NjU3OWIzNjIgbGVnYWN5LXRydW5rCisyMTU4MyA5NDZiODE2YWQ1Y2I4ZmRmODNkNzI1YmNiYzZjMjg3ZDJkNmYzOTliIHJlbGVhc2UyMS1tYWludAorMjE1ODQgOWFkNGRiOTdlMmQ5YjZlZDI5MTA5Mzc5MWVjYmNjOTQyNzgyNzY5YyBsZWdhY3ktdHJ1bmsKKzIxNTg1IGQ0ZmI5NDE1M2IzMDgyMDllNWY5YjBjNzE4OTg2ZmNlZjU0ZmM2ZDQgcmVsZWFzZTIxLW1haW50CisyMTU4NiBmYmNjZjE4YWE1N2JmZWIwYzNkN2ZlMGExN2U0ODQ5YzMwNTdhMmY1IHJlbGVhc2UyMS1tYWludAorMjE1ODcgYTc4ZjRiZDU5ZTEwYTBiM2VmM2QzZGUzMGRlZWM4NDA0MDM2OWIzNCBkZXNjci1icmFuY2gKKzIxNTg4IGFiYzRhM2I3ZDE4ZTAxYzc5MWIxOGFmZjAxZDAwN2I5MDQ0YTJjZGYgZGVzY3ItYnJhbmNoCisyMTU4OSAyZjFiNGNkY2JiMDZjNDQyMjI5YmI2MmZlZGE3MzQ2ODU5NWE1OGU5IGxlZ2FjeS10cnVuaworMjE1OTAgZTc4YTUxMjY4YzgxZGZjNzU3MDdmYmI3MDRhMjQ5OTI3MDc3YzhkNiBsZWdhY3ktdHJ1bmsKKzIxNTkxIDhjMzg0NDlkZjc0NjA5NDExYzEzNGE0YmRiYmI0MDc1YzNiZWNhMDkgZGVzY3ItYnJhbmNoCisyMTU5MiBmZWU1YjU3MTdkYmJiODkwZDRmOTRhZDdkYjBkYzNlZDliZjNjYjUyIGxlZ2FjeS10cnVuaworMjE1OTMgYzZkODY0NWQ0Yzg4NWZmZjk5YTAzMjg5YjZiOGU0ZmU4ZGFjNTYxOSBsZWdhY3ktdHJ1bmsKKzIxNTk0IDcwYWY0YTE3M2E5NTY0ZjA4ODA5ZTY5NjcyNzAyZmQ2ZTNhN2Y5Y2IgbGVnYWN5LXRydW5rCisyMTU5NSBjYjJlYWY0NTczODZiNzg2OTAxNDQ0Nzg3ZTQ1MjdkNjA5MjBiNTg3IGxlZ2FjeS10cnVuaworMjE1OTYgNmI5MzFiZjZiZGY2N2Y5YjdlODg2OTM4N2MwZjRlOTY2ZDkwYTg2MiBsZWdhY3ktdHJ1bmsKKzIxNTk3IGNmODE0OWNlZGNjZDIxYWYyZWY2YzQyNjEyODZjNmU0ZGNiZGVjZmIgbGVnYWN5LXRydW5rCisyMTU5OCAwMDkzNGQ2MmU3ODE2NzIzMmRjMzVhOGI2OTUxMmZkZTZmNTVkZWVhIGxlZ2FjeS10cnVuaworMjE1OTkgM2RiOTIxZjNlZGUwYmE1NWM4YjYxOTZkNTI3NGY0OWNiYjE3ZjBhZSBsZWdhY3ktdHJ1bmsKKzIxNjAwIGVkMGYwZDk2NzUwY2RlNjU2NjQ5NGU1NmFjODE4NDQ1MDFiN2FkMDEgbGVnYWN5LXRydW5rCisyMTYwMSA5MzliYmM1MWNkMjE5M2QyZGMyMWQzNDU0NTY3ODg5MzIyNzczNGUyIGxlZ2FjeS10cnVuaworMjE2MDIgYzFhNWU1MTc1OTA3YjEyNjFkNjRiOTZhNWMyYmNkM2EzNmUwOGQ0MyBsZWdhY3ktdHJ1bmsKKzIxNjAzIGNkYTE2MzgzYmM2YmFhMmViZDc1ZTRlOTRiZTVjNzU2OTc4Y2M3YzIgZGVzY3ItYnJhbmNoCisyMTYwNCAzYjEzYjI2OTViN2E2Yjc2MDNhMmJhNGRkN2ZkZThhY2NjYWZmM2U3IGRlc2NyLWJyYW5jaAorMjE2MDUgYjczZTFmNDIyZWE4YmZhYTNiMjRjNjI3Y2FkZTc2MDJiN2RkMjNjMyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE2MDYgNDA0YzYwZTAwMzQ0NzA2NzNiOTEyY2UxMmNjYzBkMTBiMGJmMmY5ZiBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE2MDggOGQ2YjRhYzA0NDBiNGMwYzIxNzdlYWZjMmRiMGFkYTRjMjMxZjg4OSBsZWdhY3ktdHJ1bmsKKzIxNjA5IGZlZWEzZDJmMzU2M2YwYmZhZjU4NmUxYjdhZjFhYzQwMDNhMDI4ZTMgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjEwIDExZDllNDZmMTQ3MDUxNzE5ZjM4OGE3YmMyYzIyY2I2YWIzYjFhOTAgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjEyIDhiOTNkMDRmYTdhOWI5ZjUwYTU4NmYwYThjYWFiYTdhMDlmNzA4YzkgbGVnYWN5LXRydW5rCisyMTYxMyA5Zjc0OTY1ZTBmMzU4NTVjODYwYzhmMTg0ZWNiMGJlZThkMDUyNjI1IGxlZ2FjeS10cnVuaworMjE2MTQgMzRkNWU0OGMxZWQyNjI1N2M1YWRmNTc5OGI1ZDY4YTZhOTg2MGNhNiBsZWdhY3ktdHJ1bmsKKzIxNjE1IDZjNTAxZDg5MjAwMzBhOTJhZGQ5NmE0Y2Y3MjE0YjhhMTgwM2NkNTggcmVsZWFzZTIxLW1haW50CisyMTYxNiA0OThkN2RkOTlkYTQxZTkyNjYzODlmMWUzMTg2MTMyNTJkOWEwNWNiIHJlbGVhc2UyMS1tYWludAorMjE2MTcgOTlhZDZmZDI3OWU5YmY1YTYwOWExMGU1NGE4ZjE0MzhjMTQ2MzA0ZiByZWxlYXNlMjEtbWFpbnQKKzIxNjE4IGIxYTFkZTE4ZjkxZmJjZDA3NDY0NTgxOTgzNjgxOTNlYzE5MmU1YWMgcmVsZWFzZTIxLW1haW50CisyMTYxOSA4N2VlMWMzZmQwYzgyMjc1NTg1ZTdiMDdhN2E0ZjhhZDZmYjM5YzNjIHJlbGVhc2UyMS1tYWludAorMjE2MjAgODJhMzQ5MzJlYTIyZDYyOWQxNGNlMmY4N2YzODcyNjZhNjIxY2I4NSByZWxlYXNlMjEtbWFpbnQKKzIxNjIxIGM5OTEyOWEwYTQ3ZDkwN2JiN2Q0ZjMyNWYwMDhkY2ZjZjc0NmI2OGIgcmVsZWFzZTIxLW1haW50CisyMTYyMiAwNGUyNWMwMTg0OWI0NGJiNDRmZTI5NDc0YjQ2Nzk1OTBjY2M4NTllIGxlZ2FjeS10cnVuaworMjE2MjMgYzM5N2Q0Y2Q4MzdkMjA2ZjVhMTBhMzFkOWMyZDNiYWNlMDA1YTU4ZSBsZWdhY3ktdHJ1bmsKKzIxNjI0IGE0ZDM1MDhhZWZjMGY5NThhOTkwMDhjYzA5NDQxYTA5MTMzZGNmZDIgbGVnYWN5LXRydW5rCisyMTYyNSBkZmI3NzQyMmM2MDc0Mjk2NzAyMDc0MWIyZDMwMTI0NzMyZmI1MjZkIHJlbGVhc2UyMS1tYWludAorMjE2MjYgMTA2Yzk5OTVkYjY4YWU1YzhmNzY5ODMwYzcyNjFiMDQ4NzE0NzlhOSBsZWdhY3ktdHJ1bmsKKzIxNjI3IDc5NWFhNDU5MDIxMTBhOTk4NjFkNzNmYjg3MzZhYmZhMjA2YWViZDAgbGVnYWN5LXRydW5rCisyMTYyOCAyZTJlZjQ3MTE0Zjc3MjQwZDA2OGIxYzM3M2UzNjgyYTY1ZjM3ZjQ4IHJlbGVhc2UyMS1tYWludAorMjE2MjkgMmZiYjI1YzMwNzJlYjZkNDdlNjY4MTEzNDk2MDE3ZWQ4MTQ3M2U1YyBsZWdhY3ktdHJ1bmsKKzIxNjMwIGUwNjExNTVmOTllOGViMDc3MDQzZjIwNDA5Y2QwYTljOWIzODBjZjggbGVnYWN5LXRydW5rCisyMTYzMSA5OGJkZTZlNWU3NDMyZGM3ZDc3NjdlZjc0Y2U5YjI3OTg5OTRhNTFhIHJlbGVhc2UyMS1tYWludAorMjE2MzIgMjZmYzkwNWRkYzEyZTU1YjdiNzgxY2RiNDNmNjA0MzMxOTFjZmZkZiBsZWdhY3ktdHJ1bmsKKzIxNjMzIDZmOGEyNDAyZjZmYTRiM2Y5MWU1MGRlYzMxZjQ0Nzc1NjFkNGEwOWMgbGVnYWN5LXRydW5rCisyMTYzNCA5OTc3Y2YyMDY1MzJiMTQ2ZjMxOTI3MmFhODIzMGJiOWNkZDRiOGYxIGxlZ2FjeS10cnVuaworMjE2MzUgNGMzM2RjMzQ1OTAyYTkxNTdmZjAzOTQxODZhN2I1NmU1ZTNjZmQ3NCBsZWdhY3ktdHJ1bmsKKzIxNjM2IGM3YTI0ZDNiMzU5NzM5Njk3Mjk3YmYwZDUxZTkzY2QxMzQzZTRmYWEgbGVnYWN5LXRydW5rCisyMTYzNyA0YjdmZDNhZTFkOTMwYjkyMjU4ZTRmOTdjZjA2ZTg5MjFiYjFmZTQ1IGxlZ2FjeS10cnVuaworMjE2MzggZjQwOTJhNWY3YmJjNzE0MGIxZDQwOTcxNjNkMjA4NmM5OGNlODYyYSBsZWdhY3ktdHJ1bmsKKzIxNjM5IDA2OWI4MTUxOWJlNzg1MGJiNDBhYTNjZTY0ZGI0M2IzMmRlNDE2Y2EgbGVnYWN5LXRydW5rCisyMTY0MCA1ODQ2YzI1OGI4ODk2MzY5NmQ4ZTU1ZWM4ZmJhYjgzNDc5N2RjNmRjIGxlZ2FjeS10cnVuaworMjE2NDEgYzRmNzU4NTc1MDJhNmQzZjY3MThmMDc2YWJmNjM5ZDA1YTY4N2ZhZSBsZWdhY3ktdHJ1bmsKKzIxNjQyIGJhMWYzZGUxMDA4NTQzNGYxMWVmOTcxMTczNWYxZTA1YjVjODhlNDUgbGVnYWN5LXRydW5rCisyMTY0MyA0Mjc0MWU2NzczMzg0MWYyOTNkOGJkYTQ4OTEwYjhmZGJlMjI4MTBlIGxlZ2FjeS10cnVuaworMjE2NDQgZWE3Yzc3ZmU1MGFlOTlkYWE0ZDA1ZTkwMTliZmZhODcyYzY5Mzg3NSBsZWdhY3ktdHJ1bmsKKzIxNjQ1IDJiYjc1YTFmMzE4NDE5Mjg1Y2Q4YzI4Nzg5ZDlkNGU3MDk2NzAyNDggbGVnYWN5LXRydW5rCisyMTY0NiBlNmVjZDhhMDdlYTg4ZjI3YmY1NTA0OGFlNmJjMjk1MDg4NTUxNGE5IGxlZ2FjeS10cnVuaworMjE2NDcgNDZkZDg3M2QyNmY2NDRmNDk4MzFjNmY4NGY0Y2I1YTdhODZhMzJhOSBsZWdhY3ktdHJ1bmsKKzIxNjQ4IDIwMmRkZGI3Yzk3NDc0Y2E3MDZmNjc2NjRjZjE4YzRiN2QyYTU1ZWQgbGVnYWN5LXRydW5rCisyMTY0OSA4NjI2MTcxYjJjNzI1Mjg1NTJjMTYwYWU2YzYzNTk1MGM1Njk1ZDIxIHJlbGVhc2UyMS1tYWludAorMjE2NTAgY2MyNDg2NzU3YzhiZjNlMjJiYjk0YzZiMzM1MmJjMDI3ZmY2M2JkYyByZWxlYXNlMjEtbWFpbnQKKzIxNjUxIGM1YjUwNTUyZDU2ZDFmNjI3M2MzMWM2M2M2YmIxM2Q1MDhhNmIyNTkgcmVsZWFzZTIxLW1haW50CisyMTY1MiAzMmNiMjk1ZDA4NjJjMjJhMWIwN2U4MTQ1OTE3NmVhMGY3ZTk3MjU4IGxlZ2FjeS10cnVuaworMjE2NTMgODZiMWM4MjE2MGVhOThkNTdhMGY5ZjQxYTJkMGJiODllOGJiMjE2YyBsZWdhY3ktdHJ1bmsKKzIxNjU0IDhkZTkxMDQyMTczZjdmNGUxMDFmYTQ4MjdkYzA5MmFmOGFiNzRlZWIgbGVnYWN5LXRydW5rCisyMTY1NSAyNTRhNGE5YWYwZmJjNmU4NTgwZTQ5YmEyYzViNzIxYjVkYWQxMzNjIGxlZ2FjeS10cnVuaworMjE2NTYgZjRlYTIxYTBmOTU0MmQzN2ZkMzhhNGFjNTY2Mzc2MzRmM2QwZDU3MSBsZWdhY3ktdHJ1bmsKKzIxNjU3IGQyMTE3MDlmMjVmMWVlY2I0MTdhYzUyMTkxMGVlMTgwYmMyMzg2NGMgbGVnYWN5LXRydW5rCisyMTY1OCBiMmJmODhlMDZmYzU5OTdiNWZkZGY2MmQ0MTA5YzNhNGMxZmY4MTM4IGxlZ2FjeS10cnVuaworMjE2NTkgNjVhZmFjODRkNGY3MzIzNmVjYTEzZTc4MzY0MDRlODcxNzY4YzRiYyBsZWdhY3ktdHJ1bmsKKzIxNjYwIDczMjhjOGNkOTE3ZDllZjYwZWViMTg2ZDBhYzNhZmMwOGFmOTI5MGEgcmVsZWFzZTIxLW1haW50CisyMTY2MSBhNTljYTg0NDZmOTJiNmVkYjc3YTE5YzMxYjM5OTI5NGE3OTZjOTgwIGxlZ2FjeS10cnVuaworMjE2NjIgNDg2MTM3Mzk1OTE3NmM1OGNkMjY3YTExYjQxMzc0OWM0ZDc2ZDQwMyByZWxlYXNlMjEtbWFpbnQKKzIxNjYzIGY3MmJjZWNkZDFmN2UyZmNiMWQxYTFjMjJiOTEyMDRkY2NlZDFjOGEgcmVsZWFzZTIxLW1haW50CisyMTY2NCBkOTdjODJjYmQ3NjY5MWNjYzAzNmJiMTVkYmE5NWNkNGU2Y2Y2NzUzIGxlZ2FjeS10cnVuaworMjE2NjUgZDUwMjY2YjVkYzQ4YzVhZTFjZjA2NDRkNTc5Yjk5MGE0NDUwZWEzNyBsZWdhY3ktdHJ1bmsKKzIxNjY2IGVhZTkyNzI5MDM1NzFhMjc3Y2IwOGRkNGI5YTQ3ODg3OWQ2YWZhMzAgbGVnYWN5LXRydW5rCisyMTY2NyBiMWQ2YWUzMjlkZDA1OGZkNWE1NjU1YjRlYjMzMzkyYzYxNGY2YzM3IGxlZ2FjeS10cnVuaworMjE2NjggZmQ5NDYxMzczY2FiMzAwOGI4MjkyYTU1MTM5Y2E1YmY0MzA3MTY4OCBsZWdhY3ktdHJ1bmsKKzIxNjY5IDIxYjViMmVhZWIzZDQxZTYyODIzYTEzM2U4NGE2MTZlOTE1YTNiM2EgbGVnYWN5LXRydW5rCisyMTY3MCAxZmJjZjU0OWMxYzQ1MzVmM2JlODAzYTE4NDRkODA2ODQwYzcyMjRmIGxlZ2FjeS10cnVuaworMjE2NzEgNjRmYTcyYTg0MzQ3NDkwMDM5MDVmODBkNWFjZTRiZjBhOGE4NzYwMSBsZWdhY3ktdHJ1bmsKKzIxNjcyIDIzZDhlYjI5ZTRmYTBmZmU2ODNmMmMwMWM4YTkxN2U0MTgyOTVkMTYgbGVnYWN5LXRydW5rCisyMTY3MyBlNGQ2YTczOTk5N2Q5NjFkMmQ0ODIwNmQzMDJkNjBjN2QxZjZmZDBmIGxlZ2FjeS10cnVuaworMjE2NzQgMzdlZTljZDU0YTExM2ZjYjI1MjUyYmMzMTc1YTQ0NzkyYzI3MjQzYyBsZWdhY3ktdHJ1bmsKKzIxNjc1IGUwNjRmNTI2YTZlZmU4MTkyYTJhY2MzYTlmOWRhYzUyNmExNmRlNzcgbGVnYWN5LXRydW5rCisyMTY3NiBmYzVhM2VjMDc0NWUxZDZiODdmNTkwYTA1NzFmY2I5NzA1NTlkZTk1IGxlZ2FjeS10cnVuaworMjE2NzcgZWM5YWEwZGM4YjczNjA2YTcxNmViMWVhMGY5YzMyNzAwNDUyNjFiZSBsZWdhY3ktdHJ1bmsKKzIxNjc4IGJmNTYyNDE4ZGZiODFlMGY2NmEzYTRiYWIwNTRjYTI0YmNiZGVlZWIgbGVnYWN5LXRydW5rCisyMTY3OSBjZDNiNGRkM2U0Y2ExOTE3OTRlZmViMzAzNTJhYTE0YmY2MDg1NzZmIGxlZ2FjeS10cnVuaworMjE2ODAgZWEyNmM5YjY2ZmJkOWQyZWFiMzUzZmRjYzM3ZGNjYWQwZmJlM2FmNiBsZWdhY3ktdHJ1bmsKKzIxNjgxIDBjNzAxMzUzODk5ODNjYzQ1YzU0MmExMzcyM2FhZWVlZjdmZjE0MTMgbGVnYWN5LXRydW5rCisyMTY4MiBiMjg3ZjI5MjdkYjM4YTNlNTFkMGRjMDVjODkxMTRlYTExNDk1ODk0IGxlZ2FjeS10cnVuaworMjE2ODMgM2ZjZjk4Y2E2YzRhMTQ2ZjVhZjdjOGZhMzA5ZDRhY2EyZjE3NmUyYiBsZWdhY3ktdHJ1bmsKKzIxNjg0IDkwNjBjMDZiZWRiYzQzMTg0NDRhYjIwYThhOTE5MzdjZWI2YWZhOWMgbGVnYWN5LXRydW5rCisyMTY4NSBjNDkzMDEzMWY1ZTNhYzcyNzVhNjdjNGQzNTI2MTljZjhhM2Y2YzQ0IGxlZ2FjeS10cnVuaworMjE2ODYgYzFlYzg3ZjEwNDRhNDljZDE3ODZlODBlOWVhYjBkYjUwZGE3YmJmNiBsZWdhY3ktdHJ1bmsKKzIxNjg3IDcwNDYxZjJkMjEwOThkMWM1MjkyODQzMDI2MGQ5ZTJmMzE5NDZkNTQgbGVnYWN5LXRydW5rCisyMTY4OCBlNjc1ZmY1NzQ4ZjA1ZjI3OWFjNDY5ZjQ0M2VjMTYyZDAwM2YzZDRlIHJlbGVhc2UyMS1tYWludAorMjE2ODggMjJiZWQyZGQxYjI4NjU2NGRlYTRkOWE2N2Q0ZWQ4MGRjMzIyNTE5MyByZWxlYXNlMjEtbWFpbnQKKzIxNjkwIDEzNzgzZTBhMzQyMzdkNTBkNTJhYTkyMGQwNzU1OWQwZWExMjUwYzEgcmVsZWFzZTIxLW1haW50CisyMTY5MSA2ZDRjOGEyOWJlNzA4N2Y5MDZlZTJmNDY5Yzg5NGE2NWFjZDU0YjFlIGxlZ2FjeS10cnVuaworMjE2OTIgMDQ3ZDdjNDgwNjhhZGQ3YTM1MDRkNDEyZDY3MmY1NGIzM2Y1YzQyMCBsZWdhY3ktdHJ1bmsKKzIxNjkzIGY1M2Q4YzUyYzgxZjhkOWUzNGQyZjE4YzA2OWI0YmU3OTlkOTAxYmQgbGVnYWN5LXRydW5rCisyMTY5NCBmNjBlODUzODRiNzk4MWE2ZWY4ZThhMTFlYmUxNTliYzEyYjJjYzEyIGxlZ2FjeS10cnVuaworMjE2OTUgMDAyM2E3OGMxYzgyYzcxNTIwZDQ1MzU3YWE3Y2FmN2JlMGQzMjE5NSBsZWdhY3ktdHJ1bmsKKzIxNjk2IDA5YTVmZTJhNzQyNjczODg5YzE5YjEyMzQ4YTAzNWEyNGI1NmE0NTIgbGVnYWN5LXRydW5rCisyMTY5NyA3MjkzOWEyMjMwZDNiZjE3MDg5YTNkMjUyY2ZmZjM4ZjIyMjUzNTYxIGxlZ2FjeS10cnVuaworMjE2OTggYmZhYTk3YTE5YjMwODNmMzRmODdhY2I0OWVlMWM5YWRkMWQwMDAyYiBsZWdhY3ktdHJ1bmsKKzIxNjk5IDI5YmU4NzFiZDg3Njg1NjYzZGI4NTIyN2E5NjU4ZWQyYTUxMTc1YTkgbGVnYWN5LXRydW5rCisyMTcwMCA2NDE3ZDU4ODE2Y2ZkZDViOTY1NDA5MDYxN2I5MmM5NmFmNDNjNGM1IGxlZ2FjeS10cnVuaworMjE3MDEgYTA2ODMxYjM1NDA3NjFiMDg1YmRjZGM5MzE1YTUzMDJjMDY5YmFkMSBsZWdhY3ktdHJ1bmsKKzIxNzAyIGZkODk2YjdjYWJiNzQyMjUzMmMyZWU0NTA2ZjQzYjdmN2I3YjVkOTMgbGVnYWN5LXRydW5rCisyMTcwMyA3NDYxMzQ4ZDk5ZGE0NDM2ZmZkMjg2NmM5ODY2OTQ3OTEwYWM3MDcxIGxlZ2FjeS10cnVuaworMjE3MDQgZWFlMTdjNTc2NzI3NDI1OTdhMDZjZmE3NDZkZTNjZGVhZmE5YTRlNSBkZXNjci1icmFuY2gKKzIxNzA1IGNmZTUzYTYyMGNmZmU4MTI3MzY4ZTY5YjAwYWJkYWQyZjNiMGU3NjUgZGVzY3ItYnJhbmNoCisyMTcwNiA0OWMwN2FjYzZlODNlN2I3YjY3MWJmNzE5ZTVjNjZmNWNhMjk4Mjc1IGRlc2NyLWJyYW5jaAorMjE3MDcgYzk0MDI4N2RiYTc5YmRmNTYzOTBhYWQ5M2U1ZmE2Mzg2ODZhYjJjNSBkZXNjci1icmFuY2gKKzIxNzA4IDY0NmUwNTJlMDViZWQ1MWVmMmQ0MzAxZWE0NWMxN2M3YmFmMmUwNWYgbGVnYWN5LXRydW5rCisyMTcwOSA1OGViNTA1Mjg2OTJjOGU2YzQzODE3MmI4ZWNlY2JkMDFmMTk3ZTczIGxlZ2FjeS10cnVuaworMjE3MTEgMTJlN2FkMTA4MjI5MTYwNWRlNTU0YjdmNDkyMDlkNGI2NzYxNjRmNyBsZWdhY3ktdHJ1bmsKKzIxNzEyIDliNDJkZjRiNzRkNDU2M2VhNGY5YjNmYWVmYzMzNTIwYTNlMGY3NWQgbGVnYWN5LXRydW5rCisyMTcxMyBmNDAxNDA1ODhiMWU4M2E3NWZhYTU1ZTNiYjM5YzRlZDZkNTJiNjcyIGxlZ2FjeS10cnVuaworMjE3MTQgZTc2MGVlZDVmNjg4MmNkNDc2MGM1MDcwODE1MDI1NWU3YzQyMjYxNiBsZWdhY3ktdHJ1bmsKKzIxNzE1IGFhMzQ0MzYxNDVkMDMzZGJiMDI0MTQwYzZjMjczYWRlZTJlMDhiYmIgbGVnYWN5LXRydW5rCisyMTcxNiA1ZDM5NjRlNjIyYTg1MmNjM2I5ZTk2NzQ0ZmI2MWE2OGEzNTIyYzEwIGRlc2NyLWJyYW5jaAorMjE3MTcgNjM4ZDkwNDRmYmUyMWViOGZhNjM4ZDViMGVjODc3NDk0NTcxNzY2YSBsZWdhY3ktdHJ1bmsKKzIxNzE4IGE3NWNhMjE3ZjczNzc3ZDRkZmY2NjVmNmU1MDAwNzBjZWU5NzBmNWQgbGVnYWN5LXRydW5rCisyMTcyMCBhY2U3MGUzMjc5MjljYWJiZGU1ZDkxOWE1ZDUyZDEwNTgwZjU5MGI3IGxlZ2FjeS10cnVuaworMjE3MjEgNTU1MTFjYWEyNGVlYjU5NmVjNmY3ODI2MzFiNWM1YzEwODQyYTcxNyBsZWdhY3ktdHJ1bmsKKzIxNzIyIDVlMWExNGQ5OTNiMzViOTIzNTYyOThiNTNhYWE5ZGIyZTc1MTAwMGUgbGVnYWN5LXRydW5rCisyMTcyMyA5OWI1ZDMzNGRlMWU0MzFmZGI2ZjAwZDA1ZWNlZTExOTI5M2Q3ZjkyIGxlZ2FjeS10cnVuaworMjE3MjQgMTQ0YTMwMDViNWJhZTNkYTUxYzJhNGYzZWM4NzY1YTY3NzVlOTU0YSBsZWdhY3ktdHJ1bmsKKzIxNzI1IDliODU2NGY2ZTM0ZDUxY2FlMjk1ODJkYmEyY2FkOGZmMDBiYjY5MjkgbGVnYWN5LXRydW5rCisyMTcyNiBjNDA0MTA3MmQxMDEwMTBkYjJkM2M4NTQ5Zjk3Nzg1ZjI1OTNjMGM1IGxlZ2FjeS10cnVuaworMjE3MjcgMzQ2ZGNhZmM4NzhiNDY2ZTZlMDgxZjI5N2NlN2IxZTkzZGM3NDllYyBsZWdhY3ktdHJ1bmsKKzIxNzI4IDY3MDQ2NGM5NGI5MmE2ODIzMjBkMTc5NDkzMTM1YzliMGMzYThhM2IgbGVnYWN5LXRydW5rCisyMTcyOSA3ZDc3NjE0ZmQwYjdmZDcwMWM3ODYxODNiYWE2OTNmMzIwNzg5MDRlIGxlZ2FjeS10cnVuaworMjE3MzAgYzZjMzBlNDVhYjViYTY2MmI1ODVmMzQ5MzNjZDY5YzY0Mzg3ZTkwMCByZWxlYXNlMjEtbWFpbnQKKzIxNzMxIDQzODRmOTE5YjQ0ODU0MWZmMTI4Y2U4YzMwMGNiOTYyNjQ2OGIzZjUgbGVnYWN5LXRydW5rCisyMTczMiA4ZDYyZGRlNzYyN2NlZjdjZjBlNGY4OGMwM2ZjM2M2NDFmMWViYTFkIGxlZ2FjeS10cnVuaworMjE3MzMgMTMyYTA2YWQ5NmVlYzFhNWU4OWQ5YjZmMzIyYWQwZWYyNGI1NTdjOSBsZWdhY3ktdHJ1bmsKKzIxNzM0IGE4NjE5NWU2YzdlMzMyYTU3YjY4YmFiMGMzZWQyZjgxNGRlZjEyNjcgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNzM2IDZiNjBkMGQ5NzRjMzFkNWI5ZGM5NmU5N2I5ZTgyNTEzMWQ3YzhhN2MgcmVsZWFzZTIxLW1haW50CisyMTczNyAyODgxODc2NmE2NGNhNWY5NWJiZDFmNjhlNmQzYThlMmUyMDdmYzYwIGxlZ2FjeS10cnVuaworMjE3MzggNjFlNTBkMGFhNTlhMWQ4OTY5ZDlkODk3ZTczNDFlYjljMjk4NWQ5NiBsZWdhY3ktdHJ1bmsKKzIxNzM5IDQwNTM1MmVhNTBhMDdkMzFmNjVkN2IxYmQwNTMxMjgwYzFhZDIyYzIgbGVnYWN5LXRydW5rCisyMTc0MCA0MjQ3YjRiMmM0OGU2OTE0N2E5OGIxZTFhMzcyMmFlODgyM2FlYTM1IGxlZ2FjeS10cnVuaworMjE3NDEgZmU0NDQyOGY5Nzc0ZGY4NDViYmYzNzM1Y2ZhOGFhNWEzOTZkMTYyNSBsZWdhY3ktdHJ1bmsKKzIxNzQyIDMwNDE0YjQxZmFjOTc4NGI2ZjEzNWJhNzViMWVhMjk0MTMwM2IzYTEgbGVnYWN5LXRydW5rCisyMTc0MyBlOTk1NDU2N2M1NGIwMmY3MDRhOWNmZDBhMTI1ZGQ1ZGYwZGQ3NGI4IGxlZ2FjeS10cnVuaworMjE3NDQgMjFhMDRkMTVlMzhjMjZkODMzZDFlMDFiOTY5ZGZlM2JhMmU3ODQxMyBsZWdhY3ktdHJ1bmsKKzIxNzQ1IDViODIwZDdhM2U3YzEzZTI5ZjNmMzQyY2M5NDY2ZDhhYjRjZmY5MTEgbGVnYWN5LXRydW5rCisyMTc0NyAyNzgzMTgzMDQzNTc5MTkyZGY1MDM0OTdjYjg5MjIwNDIyNzM2NDgwIGxlZ2FjeS10cnVuaworMjE3NDggYzdiZWY2YWE2ZjkyNjcyN2QxMTk5ZmJhY2E3YTVlNTZhYzA3MmQ3YSBsZWdhY3ktdHJ1bmsKKzIxNzQ5IDIxYzU0OWI2NjcwMjQxMWM4ZTYyODcxNTMxMzdjNGYyNTkxMjkxMmUgZGVzY3ItYnJhbmNoCisyMTc1MCAxMTUzODgwNTk3Y2M3MmE4Y2VjYmQxZWIzZTgzNTIwMzE5ZTcwNDY2IGRlc2NyLWJyYW5jaAorMjE3NTEgOWEzNzNhMTQzYTEzMGYyYWJjODYzNDAwYjgyMzFhMDNlMjMxZjlkYSBsZWdhY3ktdHJ1bmsKKzIxNzUyIDE5MjUwZjkxODFkYzQ0ZTFhOTU2YTkzOTU3ZjZkYjZiODQyYzgyMDggbGVnYWN5LXRydW5rCisyMTc1MyAyM2U2YmJhODhkNmE3ZmM3ZjViOWM5ODYyMTA2OTZiNjNmNjA1OTg3IGxlZ2FjeS10cnVuaworMjE3NTQgMjhiNjI5MWUyYTVjZjdmNTUyZDNkYjk5ZmI3ZTkwMDZjYjc2ZDUxYSBsZWdhY3ktdHJ1bmsKKzIxNzU1IDNmMjgzYzk4ZTgxNTA3OWI1NGNkZmQzYTA3M2QwNjM5Y2NkM2NiMTMgbGVnYWN5LXRydW5rCisyMTc1NiAxMTUxYWI4YTJjZGZlNThlMjUwYjUwNTYxZGRiZDFiNWU5MTFjODcwIGxlZ2FjeS10cnVuaworMjE3NTcgN2ZkYjQxNjAzZTlhM2MzYzMxMGNhOTdhNzRlMDA0NDc4NDg2ODRlMiBsZWdhY3ktdHJ1bmsKKzIxNzU4IDg1OTUwNTIyNDg1MDIwZWZiMDFmOGIyMzhmY2U4NWRmMzVhMmFlOTkgbGVnYWN5LXRydW5rCisyMTc1OSA3MjFmMWE4OTNmYmJjMjQ4Y2MwNzFmZTMyM2Y1OGNjM2VlMjU1ZTRmIGxlZ2FjeS10cnVuaworMjE3NjAgOWY0M2UzYTliYjZlZTI1MjZlMjg5YzkyNmQ1OWJhODI2NzQ0OTVkNiBsZWdhY3ktdHJ1bmsKKzIxNzYxIGI5ZDQ3ZDA4M2QyY2FmMzQyODdiNWQ4OTc3ZjQzMjc5ZjU4ZTc0N2EgbGVnYWN5LXRydW5rCisyMTc2MiAyNzVhZmI1YTc2N2UyYmQ5MTExMGI5Nzk1NjAzZWMwYmM5N2Q4YjU4IGxlZ2FjeS10cnVuaworMjE3NjMgZjg0YWNjOWRmZDBiNWNkY2JhZDljZjMxNDAyZTcwMDVlZDJmNTI5YiBkZXNjci1icmFuY2gKKzIxNzY0IDA4NTdmYjQ4OWZhM2E2MzEwNzdhOTczMWQ4ZTYxNWY3MDM5MzllNmYgbGVnYWN5LXRydW5rCisyMTc2NSA3MzBhYjBiZWQ2YWI0NmYwYTE3MDg3OGNmMWI0OGM5NzU0NzJhZTUzIGxlZ2FjeS10cnVuaworMjE3NjYgZmFmN2YxNzFhOWYzMjI0MDliNTE4ZTAxNmZjMzU1ZThkYTBlN2U0NCBsZWdhY3ktdHJ1bmsKKzIxNzY3IGRjZDFhMGFhYWVjYjQ5Y2E3OTdjYTZjZWE3ZTViODZmZDdlNzYzMzIgbGVnYWN5LXRydW5rCisyMTc2OSAyMWQ3YmFlOWRjMmRiNmMyY2IzZDcyZDllM2Y3M2Q5MmE5M2E4MDg1IGRlc2NyLWJyYW5jaAorMjE3NzAgNTk0NDZkMGY4MzQxZGQxNzMwZjE2MWUwM2UxZDcyOTYyMTU3NDA5YyBsZWdhY3ktdHJ1bmsKKzIxNzcxIDFmOWM3YjRjZWU3N2FmZTlmYThhNGE1ZTRkZWUxMTAwMDc3NmI1MmMgbGVnYWN5LXRydW5rCisyMTc3MiBmZGIzNmEwYzdlNmU5OGU2MjBiZmYxZmEwNjQ4ODY1NjEwZTY4MTM1IGxlZ2FjeS10cnVuaworMjE3NzMgNGFjOThmZTdhYmQyYjUxNjc2MjY5ODY3NDZkZTQyYzQ2NDUzMTQ0MyBsZWdhY3ktdHJ1bmsKKzIxNzc0IDYyMzhhMjIyYjdjZDY1OGFiNDMzOWVhNmMzYTZiYTQ3NzVjYTg4OWMgbGVnYWN5LXRydW5rCisyMTc3NSAzODRhNjFmYTZmNWEyMDQ3ZGM0ZjM5ZWY2ZmIzNTlkNjc3N2NiMTQzIGxlZ2FjeS10cnVuaworMjE3NzYgMGE5MGU1ZWM2MWI2OTgxZTY1NmU3ZWM4ZDQ5YTI5NjRmODM3NTg3NyBsZWdhY3ktdHJ1bmsKKzIxNzc3IDAxZmM5OGJhMzk5ZjFhOGFmMWYzOWQ0Zjc0MzQ0YmU0MGYyMTRlMzQgbGVnYWN5LXRydW5rCisyMTc3OCAxOWRjZmI5MzVmNjBlNGUwZjhhY2Y4NjEyOGJjMzA0MjhkNGNjNzcxIGxlZ2FjeS10cnVuaworMjE3NzkgMjcxMDY0ZGExZDUyY2NlYzk4ZmUxODUzMTAwYjg1ODM0YzhjZjVkZiBsZWdhY3ktdHJ1bmsKKzIxNzgwIDFmM2Q3NjZkYWQ5MWU1ZWUyNjkyOGU1OTI1OTRjMjFjZDVjZmRiYjEgbGVnYWN5LXRydW5rCisyMTc4MSA5MTU5MjIyZTY0NjNmZDU5NDUwNDhiNjdkM2M5ZDc2MmJiNmE1YWQ5IGxlZ2FjeS10cnVuaworMjE3ODIgMTA3MTdmOGE2ZDk2ODRjMjk3ZTE1MDliYWNmZTQ4NWFmNGIwM2QyZSBsZWdhY3ktdHJ1bmsKKzIxNzgzIDk4ZDgxY2JlOGJiZDdmZGIzOTYxNzQwNWEyYTBlYTczMjNhYWM3MzQgbGVnYWN5LXRydW5rCisyMTc4NCAzNWZlYzQ4N2JjZWY3NzczOGQ1ZmIzZmZhOWQ4MzhjNzJkMTRhYTAzIGxlZ2FjeS10cnVuaworMjE3ODUgZTVlNWJiNTQ4MmQzYjcyYzY3MTEyNmE4OTcxMzhjYjQxODdlN2EwMCByZWxlYXNlMjEtbWFpbnQKKzIxNzg2IDkyMGVlN2YyYTU5MjJlNjg1ZWE4YzU0MzIwN2Q5M2VjNjVjNjE3ZWYgcmVsZWFzZTIxLW1haW50CisyMTc4NyAyYjVlNzM4M2M3N2ExNmYzNGVkZTQ4NzZlM2ZmODFmOGQ3ZjVmNGIwIGxlZ2FjeS10cnVuaworMjE3ODggMjk1NTE4ZTZmY2VhYmUxOTA3NjI1ZDg1NGJlZDk5MDIyYWZlMGZlZSByZWxlYXNlMjEtbWFpbnQKKzIxNzg5IGMwNmQ4MTc5ZTllM2IzMzY4OTZhNTZkOWQyMDhkMzg2ZDE3ODU5ODcgcmVsZWFzZTIxLW1haW50CisyMTc5MCA5MTQ5NDA5NDZlMmVhMWZjY2FlMDAzZmMwMTAzZGJjODA5MGVjYjgzIHJlbGVhc2UyMS1tYWludAorMjE3OTEgYzliNGM4YWU2MTc5MjMwNTFhNjFmZjI2MzI3YjhjODFlYWY4MTE2MyBsZWdhY3ktdHJ1bmsKKzIxNzkyIDQwMzBjOTAxOTA2N2M1YzIwNjdlODgzMGEzMmYwMWIwYzY4NGUyNTQgbGVnYWN5LXRydW5rCisyMTc5MyBmZGRlOWZhY2JiNmVhN2QxNTVkMGQ0ZGUyOGFjNmNjMWVkNmUwODZlIGxlZ2FjeS10cnVuaworMjE3OTQgNzdjODI4MjRkZjQxMjlmMzdiZGE2MTE5NzdhYjE4ZDM4ODE0NDBmZiBsZWdhY3ktdHJ1bmsKKzIxNzk1IGQ1OWE4NDc2YWZhYjlkZjU0YWEwNDE4ZWQ1Y2UwNDNjN2EzNzJlMjEgbGVnYWN5LXRydW5rCisyMTc5NiBjOGU0NzI4ZDJhYjBmM2NhOGEwZDJiMjE2OWRmZmE0YzA1Y2VmNTU1IGxlZ2FjeS10cnVuaworMjE3OTcgMWQzYzU3Y2M4ZDA4NWM4Njg3Yjc4ZDg5ZTY5OGFkMGMzMzZkZDI1OCBsZWdhY3ktdHJ1bmsKKzIxNzk5IDk4M2FjYWM1NjQ2NmIzYmNmY2RkZDJjNDMxODI5MGVhN2M5NTM2ZGMgZGVzY3ItYnJhbmNoCisyMTgwMCAwNWNmNmIzZTYzZGU1NTRlMTdiOTM1NjY1MzQ0MGQ2YmM1M2RiYTQzIGxlZ2FjeS10cnVuaworMjE4MDEgZTUzYmNiYzMxNjVlMzk2NzlhZjYzODk5M2VlMjViYjQ1MDc1NmNjZiBsZWdhY3ktdHJ1bmsKKzIxODAyIGQzYzI1YjA2YjdlNWI0NGRjNTMwMWZkZmNjMjY0ODgwMDk2NjVkZjIgbGVnYWN5LXRydW5rCisyMTgwMyA1N2U1OTUyNWQyMTdkZmNlMzVkMThhNDZlYjhkMjQ4ZWJhYjhjZWVkIGxlZ2FjeS10cnVuaworMjE4MDQgZmRmOGQwODMxMjc4OTUzYTI4NTc5YzFkY2EwMzJiNzBkNzA1ZDUzNCBsZWdhY3ktdHJ1bmsKKzIxODA1IGY3MTk2NDg2ZjQyZDE4MDlkNWU4YTRhNmVkZDdjMWNjYWZkNTM1MmEgbGVnYWN5LXRydW5rCisyMTgwNiA2YTUwOTEwY2EzMDNhZDA0YTM3Y2Y5ZDhhZWZlOTljM2VhNmM4Y2ZlIGRlc2NyLWJyYW5jaAorMjE4MDcgNTU3MTdkYzIyN2Y0ZGUxMGI0OTBjOGY1ZjYzM2I1ZDY1Y2JjMWVhMiBkZXNjci1icmFuY2gKKzIxODA4IDk0ZmJjZjE5NjU0OTU1N2I4ZTI3MWZiNmQ5ZWFmNjdlOGQ5ZGE1N2YgZGVzY3ItYnJhbmNoCisyMTgwOSAwNzcyZWFhMTc2MzE5YWI0ZmZjNTk0OGU2ODAzOGZlZTA0NTA3Nzg1IGxlZ2FjeS10cnVuaworMjE4MTAgNzMzNWFjN2M1MzE1N2ZjMDBkOWMxZGUzOGE1MjBhYTM4OGZiYTA3ZCBsZWdhY3ktdHJ1bmsKKzIxODExIGNiNWVhNGQ4ZThiZjk4MTFkNjY2ZGY0NGMzYjQwYTBjNzY5NDQzYTkgbGVnYWN5LXRydW5rCisyMTgxMiBlNWEyZTg5MTZlMGI0ZTY0YzNmMjc4MGJiZTI1MDQ2NjFlMzdiMTdhIGRlc2NyLWJyYW5jaAorMjE4MTMgYzQzZmUyMTNlZTEwOGY1MzUzMzliOWIyOTNiNTU3OWNlNmI0YmFlNCBsZWdhY3ktdHJ1bmsKKzIxODE0IGFkODJjYWZlNDVhY2Y0OTFmODk4NjE1ZGFmOTJhM2MyZDI3NDM5NDMgbGVnYWN5LXRydW5rCisyMTgxNSAzMzgxOGVjNjM5NWJhZDkwYThkY2MzMjhmZGJhNWYzMjE0NzVmZGYzIGxlZ2FjeS10cnVuaworMjE4MTcgMWYxYzc4YmE1N2ZmNDU3ZjYwMGEyNGM1NDYzNTYyOTM4NjQ1ZDYxMSBkZXNjci1icmFuY2gKKzIxODE4IGQ2MjMzZjdiNzRjMThmZTVjYWY2NDQ1NzU2MTU3ZjE3NjIzZWYzNmEgZGVzY3ItYnJhbmNoCisyMTgxOSA4YWE2M2FlYTcyNjk1OThhNzEzYmU0NDc0ODZhYzU2ZTg4YTgyMDE3IGxlZ2FjeS10cnVuaworMjE4MjAgY2I2NmE5ODMwOTZmN2NmMzk1MTViNGMzM2FlNGFlZTE1NjZjNTBjNSBsZWdhY3ktdHJ1bmsKKzIxODIxIDNiODg4ODU5ZDUyYjNhNjA3YmM4NWI1OWQ2YThjODk0MGRlYWUwYzMgbGVnYWN5LXRydW5rCisyMTgyMiBjYThhNDhhYmEyMmVjZTI5YmQ2NzcwOWQ1NWVhYjlkNThkZmUxY2U1IGxlZ2FjeS10cnVuaworMjE4MjMgNWViZWU1YzA2MGQwZTdkYjIxOGM3YzFiZmUyMTA4ZGE1YTdiNjRkMiBsZWdhY3ktdHJ1bmsKKzIxODI0IDc0OGY2YjNhOGJmNjI3NDgxZjI5NzYyZGViMjI1NDM4YzJjYzlmMDYgbGVnYWN5LXRydW5rCisyMTgyNSBhYzExYWY3ZDg2MGEzNWY1Y2U3NjY5NDc2MTRkZTNmYzUzODU1MTJmIGxlZ2FjeS10cnVuaworMjE4MjYgZmNkYjhjOTRiNWQ4ZjMzZGViOGI0NjcwYjZmMjdjZWZjYzdiOWU5OCBkZXNjci1icmFuY2gKKzIxODI3IGNkNjM5YTk0NzFiOGY3OTA1ZWY1ODFlYzk0NmE5MGFjMGZjMTM3ZWEgbGVnYWN5LXRydW5rCisyMTgyOCBlNjM4ZjEyMDZlZTBiZDk5YTlhOTFmMjQ1MmQ4OTM4ZDBhNTNhMmE0IGxlZ2FjeS10cnVuaworMjE4MjkgNzAyNzUwMzdmMTJkOGRlZDZhZDIyYmNhZjkzYWQ3NDMyM2MwZmI4ZSBsZWdhY3ktdHJ1bmsKKzIxODMwIDc0NjIzYjA3NmQxYmU5ZTMzZDA4ZmNkZjY1ZTExZDdlZmI2ZWM5NjUgbGVnYWN5LXRydW5rCisyMTgzMSA5NWRkY2Q0NDRkMzkyZmJiMTM2Yzc2N2IxYTNhMjM3YWExNDgyYTE2IGRlc2NyLWJyYW5jaAorMjE4MzIgZDg5ZTkzNmUxYjEwNjVjNWY1NzBjMDI1OWU3MzMwMmRkNjQzYzVkYSBkZXNjci1icmFuY2gKKzIxODMzIDcwNzExYTk4ZDk4OTdjODkzNzliYWQwNGFmZTQzOWMzMTVkYzlmOGIgZGVzY3ItYnJhbmNoCisyMTgzNCBlMDliZWU5YjU3MjkyZDc2MTNlZTc2MjQ0YmU4NDI0YTU2NzQ3YWUyIGxlZ2FjeS10cnVuaworMjE4MzUgNTg0YmUwYmJkOTQyYjY0NTVjMzk5MmZhYjQ4NmNmMTYxNmM5MGU5YyBsZWdhY3ktdHJ1bmsKKzIxODM2IGY2NWNlNTk5MDU0N2Q1MTA0Y2FkYWZhMDA5NjUyYzZlZjhiNjAxMTggbGVnYWN5LXRydW5rCisyMTgzNyBiNzc3NWViYmY0NDkwOTlhNGUxYjA1NDk4MjU4NTE1Y2YwZTYzZjViIGxlZ2FjeS10cnVuaworMjE4MzggZjE0ODAwMjI5Njc3ZGVhMGFhYjZlOGY1YTdkYjJmNGZiOTU4ZmQ4OCBsZWdhY3ktdHJ1bmsKKzIxODM5IDkyNjI2ZjQyZTA0MzNjZWY2NmY1ZGU2NjBkZWU4YTQ4YjY1Mjg1NmYgbGVnYWN5LXRydW5rCisyMTg0MCA1ZmMyYmExYzNmMjQyM2VlOTM5MzAzMzI4YmRhNjZhNTgxZTA2YmUzIGxlZ2FjeS10cnVuaworMjE4NDEgYTAyNzc5ZmQ5YjkyMGViN2ZhOTViNzljNWM0MTMyYjllNTkyODdlZiBsZWdhY3ktdHJ1bmsKKzIxODQyIDFmOTc0M2ExZWQ3YjBiMDhhYTk0MThiOGU3M2Q3MmIyMmMxNTUyMmYgbGVnYWN5LXRydW5rCisyMTg0MyA2ZDRhNTMwZmU3YzE2MjIxMTE2ODk4MGQ2ZTBhOTExOWQ0ZmFiMTk0IGxlZ2FjeS10cnVuaworMjE4NDQgMzg0YjkxMTNhMmUwYzY5YWRmYjQyZDVhNzFkOTIwMzJhMWQyYTdkMCBsZWdhY3ktdHJ1bmsKKzIxODQ1IDc5MjdlOGNmNDYxNTBhYzRkMTJhZTA4NzIyYzdmNzVhOTM4YzllZTggZGVzY3ItYnJhbmNoCisyMTg0NiAzODIwNmYyOWIwZmMxYzU0NzVkNzcxODVhYWJhNTNmMjIyY2YxYmI5IGxlZ2FjeS10cnVuaworMjE4NDcgY2ZiNTdkYjRjMzg4ZTc1NWY5ZGUxYTA1ZDcyZWFjY2U2MGI2Mzg4MSBsZWdhY3ktdHJ1bmsKKzIxODQ4IDQ5MmExYmQ0ZDBjNWZlMWEyZGZjNmRiYzEyMTU3ZjVhZTViM2Q5YmYgbGVnYWN5LXRydW5rCisyMTg0OSA5ZWU4ZjE2YjBlMjcyZjY5ZWE0NDBhZjU4ZjI4OTU3Yjg1MDY1ODQ2IGxlZ2FjeS10cnVuaworMjE4NTAgZjdiZTdlOWE2ZjIwMjgxY2JiZTU2ODNhMGQxODA1ODUxYmI5MmFiYyBsZWdhY3ktdHJ1bmsKKzIxODUxIGQzYmM4MmQxYzVhOTI4NTVjMDQwODc0NDNjZDFlOTJjOWI3ODQ2ZjQgbGVnYWN5LXRydW5rCisyMTg1MiBlNDIxYWE0NTA0MGNkMDg2OTFjYTM4MjI0OTU1ZjI1NzNiMmFjMGM2IGxlZ2FjeS10cnVuaworMjE4NTMgYTdiYzMzOWVlMmYzNTA4OTdjYTU3NTFjYTNjMTE2MzFjZjJmYTFlOCBsZWdhY3ktdHJ1bmsKKzIxODU0IDJiYTFkOWQ5OTZhMzgzZWUyMTI0ZGMzYjc3MTYxZTdmODYzNmE1ZmMgbGVnYWN5LXRydW5rCisyMTg1NSAwNTA1ZDlkYzgzM2Q3NDAzNTk1MjgzNTMzMWRhMmNkNGNlNmFmNmVlIGxlZ2FjeS10cnVuaworMjE4NTYgYzY1OWQ0YzAwOWNiZmIzN2YxNDRjZDhmMDZkODY5OTllZDcxMTczYSBsZWdhY3ktdHJ1bmsKKzIxODU3IGFkMmY1MjZmMDAxOWQ0MTk4MWU5OTIwODA0Mjc1MjdlYWJlNDA5OTEgbGVnYWN5LXRydW5rCisyMTg1OCA4Y2E3MGM5YzE5NzEzNzZlNTRiNTU1NTk2NGI5ODBmYTFlYmZiYmY1IGxlZ2FjeS10cnVuaworMjE4NTkgNDc5MzJkODJiOGViMWZmNjAxOGFkMWM4YWJkMzFlNmQ3MDFjNDY1NiBsZWdhY3ktdHJ1bmsKKzIxODYwIGEzOGU3NzI0MGE2NzM5ODBlZThkOTgxODE0NjE1ZjMxMjcyZDI0NDIgbGVnYWN5LXRydW5rCisyMTg2MSA1NGQwNDU5YzhlMGZkYmQ2M2MyNGJlYTNiNDVhNTg3NjUwMTU3OGQ5IGxlZ2FjeS10cnVuaworMjE4NjIgZmQ3NGNiNWI5NTczMmM4OWY0ZjkwZjY4M2EyYTU1MDE2NDhiZDgxZiBsZWdhY3ktdHJ1bmsKKzIxODY0IDA5YzZmZTdkYmIxYzUzY2Q3YWUxZTg1YmQ0MTI1NjE4NWU2YjFlMzkgZGVzY3ItYnJhbmNoCisyMTg2NSA0NWY1M2ZlNDRjMGU2ZDVjYTZjNTJmNDc0YjQ0MjRiMWY2NWViMTg2IGRlc2NyLWJyYW5jaAorMjE4NjYgNjJlMjRiYzQ3YjYyMDcyZDMxNTc0MTNlNDI0MjAyZGQzOWEyY2E1ZCBkZXNjci1icmFuY2gKKzIxODY3IGIyMWRmMDkxZmJiZmQ2ZDdjN2ZmZTg2ODE2Yzg0YmU0MWU0MTJiYzEgZGVzY3ItYnJhbmNoCisyMTg2NyBkMjUwOTU5MTMzYjVhOTk2YjFlZGY4YTQ3NzJmYTAyZTU4YTNhOTcyIGRlc2NyLWJyYW5jaAorMjE4NjkgNGM1OWU5MzRlNzY1ZGU1MDNiZTkzNjk4OThlNjkxMTY2OWZmN2U5MiBsZWdhY3ktdHJ1bmsKKzIxODcwIDA2NGRlODQzODVjYWVhMGQyN2Q3ZTU5ZDA0ZTZhOWNmYTIzODkzN2MgbGVnYWN5LXRydW5rCisyMTg3MSA1MWMzODJkNTg1MWI5MTkyZjg2ZDFjNDVjNjE4MmU3OTRhNWI4YWQ0IGxlZ2FjeS10cnVuaworMjE4NzIgMDc5MTdmMTQzNDg4NjIxNjAzZWM1NjcxOWQ3OTliNzQwZDIxM2YyMiBsZWdhY3ktdHJ1bmsKKzIxODczIDAwNjk1NTUxZDcyMTIxMTcwNWRkNzNhMjI1MTYzMmYyMWQ4NmJkOTUgbGVnYWN5LXRydW5rCisyMTg3NCA0MzgxNDYxY2NlNWRmOTJjZTEzNWQ1YTRkNGJjM2YwZjI2ZTdmMTVmIGxlZ2FjeS10cnVuaworMjE4NzUgOTIxOGZhNjUyMzkxZjNhODkxYzcyNGM0Yjk4ZDM3Zjg2YjdjYzQ3NSBsZWdhY3ktdHJ1bmsKKzIxODc2IDI1MjQ0YmRiMTYzZDkyMWUyMTMwY2U2YWUwZTAyZTJhZjNmNjFhNDcgbGVnYWN5LXRydW5rCisyMTg3NyAxYzJkYTc4YjgzOWI5YjA1OGQ2NmI2NzM1YTI4ZTUwZjA2NTBjYjI5IGxlZ2FjeS10cnVuaworMjE4NzggNjc5NGRjYWU1ZDBjZDk4NGUwZDBkNzQ4M2FhNWFlODI0OGQwYmIzNiBsZWdhY3ktdHJ1bmsKKzIxODc5IGM3NjY3NTZkODRkMzM3NTgzMzhlOTQ5ZjRhZTdlYmQyZDdjNWY3MDAgcmVsZWFzZTIxLW1haW50CisyMTg4MCBkYWVhOTRmMDY0Mjk2MDlmNGJmYmRkOWJmYjY0MGNlNzkzNjFiODM4IHJlbGVhc2UyMS1tYWludAorMjE4ODEgYTFmMTllZTAxYWFlMGQ1ZWUzYzMyYjk3ZWZiYzNjM2YxYjUzMWY1NCByZWxlYXNlMjEtbWFpbnQKKzIxODgyIDUzNTQ1YzM3MWZlMzg0MGQxMjA5NDdjNTkxYzQwYzNkODJlMTY5ZDAgcmVsZWFzZTIxLW1haW50CisyMTg4MyAzY2QzMDgxZGY2MDFjMjBhOTJmODFhZjQyNTE4OGFiMTdjMDcyM2IxIGxlZ2FjeS10cnVuaworMjE4ODQgOTVlYTYxMGYzZjU0ZDcyYWM4NjZlMzQ5N2I4MTZiODEyNWU3ZGQ2MSByZWxlYXNlMjEtbWFpbnQKKzIxODg1IDM2YzU2MWVlOTZiNTMyOWY1MGIwMzBjZGI5M2Y1YTliYmVmMDMzZmUgbGVnYWN5LXRydW5rCisyMTg4NiA4ZGY3NzQxNWE2MWQ1NjRjODYzOTU2ODIzNTliNGNjMWI4Y2Y2ZmFhIGxlZ2FjeS10cnVuaworMjE4ODcgMDNjMjBlN2NjZTZhY2Q0ZDI4MDQ0ODBkYjRiN2JjYmUxZGQ5MzVmNiBsZWdhY3ktdHJ1bmsKKzIxODg4IDcwZTE4NThhZDcwMzIyMWE2MjYwODM3ZWNhYjkyOThmYzhmODhkNTIgbGVnYWN5LXRydW5rCisyMTg4OSAyMzczNjg2NDRjMTNkNTM3YzdjMmNjODczYTU5MzMxNWY0NDMyNTA5IGxlZ2FjeS10cnVuaworMjE4OTAgNzI2ZjRkMDZiZDRiZDM4ODAyOTFlY2ExNjM3Y2E5ZTIwNTUxYjE1MiByZWxlYXNlMjEtbWFpbnQKKzIxODkxIDI0ZDAwNTU3ZmJjOTVhYTdmZDFmZGEzMzgxMmY4YjdlMTAwYzI5YWQgcmVsZWFzZTIxLW1haW50CisyMTg5MiBiMDk0OTY1OTYwYWY5MWQwYTkzMTY3YTI4OWZkMTQ1OWVlYjRkMzUzIHJlbGVhc2UyMS1tYWludAorMjE4OTMgNGMwYWRiOGE1YmM2NTM5MzQyOGY2NDUxYTQwNDdjOGI0NzMzMjEzMSByZWxlYXNlMjEtbWFpbnQKKzIxODk0IDhjZjUzZDBmODVjODc0ZTdhMWU3ZjdjMDE1ZmUyYTI0ZDNiNWRlZGYgcmVsZWFzZTIxLW1haW50CisyMTg5NSA1YzczNjIxYzk1NTliNThmYmZjYzA1NjljZjdkODNlMDdhNTk3MTljIHJlbGVhc2UyMS1tYWludAorMjE4OTYgNWIwNzQ3MDIzOWRiODkyNGI4NzM2NDNiZjQ2NzMzMzRlOTc5YjYxMCBsZWdhY3ktdHJ1bmsKKzIxODk3IDRjYTlhY2VkNTUwMzdjZjMxNjU3MTk5NzFjODQzNjJjYWVlYTI0NzEgbGVnYWN5LXRydW5rCisyMTg5OCA1NTMyMGQ2MjkxYzlmNWFiOGU4ZDYxZWU0NTBiZWJhNjFmNzRiNzIyIGxlZ2FjeS10cnVuaworMjE4OTkgM2MwNTBkMWUzNWIxMDJhOTZjZDEzMTA1ZGQxYjgzOGZmZGRmOWI2NyBsZWdhY3ktdHJ1bmsKKzIxOTAwIDExZjRjZDQ1YTgwYzA3ODM3ZDA4NDk1ZGNkZWQ4ZDA0ZmRmZjg2ODcgbGVnYWN5LXRydW5rCisyMTkwMSBiYWFhYzk0ZmVjNTQ3NTIwYWZlNzE2NjQ2ZGY1MjRlNDZlNjhiNTc1IHJlbGVhc2UyMS1tYWludAorMjE5MDIgZWU5YjQ1ODA0MzM3NzBiNDI3ZGU2ZjJlZTFkMjczMjlmNmM1ZjBhOSBsZWdhY3ktdHJ1bmsKKzIxOTAzIGNhOWQ3YTYzNzk0ZjAxNWI4YjhjNzg1ZTVkMTM5ZTU3YTRhYzg4YTEgcmVsZWFzZTIxLW1haW50CisyMTkwNCA5MTcxNjhmYmZkOTRiM2RmN2ZlNmEzZThlYjMxZGU4MjA5ZmIyMTg0IGxlZ2FjeS10cnVuaworMjE5MDUgYTU1N2U5NWI5MmYwYmRmMmVlMWU1NzE5YjI4ZGJmNjI5YjNmZWRiOCByZWxlYXNlMjEtbWFpbnQKKzIxOTA2IGFlNjc2Y2YxNDk1ZDRmY2ZmMzdlNzg4Y2NkYTUyODg4NzUyYTk0NzMgbGVnYWN5LXRydW5rCisyMTkwNyBjNzgwYzYxYjM1Y2VjOThkYjkyZTkzYjRmNWJmZTI4N2E4MzI0ZjA4IHJlbGVhc2UyMS1tYWludAorMjE5MDggYWQ2YzVjMjdlY2JlNjNlODYxNmEyM2YzNjhlYTE5ZTA5ZGM4MTdjYSByZWxlYXNlMjEtbWFpbnQKKzIxOTA5IGY4ZTI4Njk5NzZiMGU1MDc1MDkxNDUyMjBhYTZiODUyMjQ4YTVkODIgcmVsZWFzZTIxLW1haW50CisyMTkxMCBkNTFiMmQ5MzM4MTQ3ODYxOWMyN2NmYTRkMzBiZGY1ZTkwNGUxMmRhIGxlZ2FjeS10cnVuaworMjE5MTEgMzM1ZTc1YmNiNTFhZDg2ZTAwYmI3NThlNDI1ZTUyNDI2OGMwOWM2MSBsZWdhY3ktdHJ1bmsKKzIxOTEyIDJjZTZhOWIwYTUxZDY4NDc3OTIwNzUwNGE5YzkyMjQ2YTFmNDIwMGEgcmVsZWFzZTIxLW1haW50CisyMTkxMyAxNDBiNzI5MTMwZDBjNWYwYmUzMjhkZGY1NzIzYmYzNDQ0NDg5ODc4IHJlbGVhc2UyMS1tYWludAorMjE5MTQgYjAzMjk2NDliOGNmY2ZhNWJhMzYxZmExNjJhZTk0NzZmZWQ1ZDY2MSBsZWdhY3ktdHJ1bmsKKzIxOTE1IGMyNWYyYzEzZDM4MDZmNGMzODc2NTdlY2FiMzllNTY2ODkyNGQxNDAgZGVzY3ItYnJhbmNoCisyMTkxNiBkZjRiNmI1ZWE5Yjg1YzVjNzhiOGRmZTg3MGU5NGE0NTdiOTVhNDg2IHJlbGVhc2UyMS1tYWludAorMjE5MTcgNTlkMTRjODg2NTFjYjQ0NGNhMGU5MjU3NWFiYTEyNWI0MTE3NWNmMCBsZWdhY3ktdHJ1bmsKKzIxOTE4IGZlYzhmNDAzNWZiMjg2NmFlNDVlODE0ODIzZGU2OTFjOWFhZTc2NTUgbGVnYWN5LXRydW5rCisyMTkxOSBkZTZmMTU4OTY4NjE5ODBjYThkNzJmM2Y4MWQzYTc3ZjkwYzAwNTJkIGxlZ2FjeS10cnVuaworMjE5MjAgYjI2ZmYxNjQzMjExZjE0YzJjNjBkNGEzOGU5MTFjOWNkMjExZTJkZSBsZWdhY3ktdHJ1bmsKKzIxOTIxIDcwNDQ4NjY0MjA3OWZlNjMxMzdjM2ExMzg1ZTYxYjYyZDFkOTMzODQgbGVnYWN5LXRydW5rCisyMTkyMiAxYWE3ZTIxOWY1MmRjODJhOWQ1NmM2ODA0ODJlY2M5NmQzYTU5OWRhIGxlZ2FjeS10cnVuaworMjE5MjMgYzdjYjFjOWU5ZDljNTdkYjUyNjE3NWI3ZjNmZmNkMjg1MmI1OTI0ZSBkZXNjci1icmFuY2gKKzIxOTI0IGM3MTJiMTZmZmFjZDYzYjVkNjI4MmIxMzM5ZDAxMjZkYmJhNDI2YWEgZGVzY3ItYnJhbmNoCisyMTkyNSBiMTQyYjUxNzMwOWM3NTJkMTExYTU0NTUyNDBlZWE4NDExYTFlMDg2IHJlbGVhc2UyMS1tYWludAorMjE5MjYgOTIwZTAzNjFkZDZlM2U3NDJjZDUwMzJjNGNlNzA0NTZlYzg0MTBmOCBsZWdhY3ktdHJ1bmsKKzIxOTI3IDEzM2U1NzAxNTEwMTRmOWRmMDdhMjIwNmRjMjI2MTQ2MzFiNmZkNjggbGVnYWN5LXRydW5rCisyMTkyOCA4Y2EyZWY2NjNhZDIwY2JkOWU4MjAzYjgyZGY4OWY2OTZkMzU0MmM4IGxlZ2FjeS10cnVuaworMjE5MjkgMjc2YmY1OTZlOGQxODA4NjE1OGUwZWI4NjIxYzg4YmU4N2RjMmI3MCBsZWdhY3ktdHJ1bmsKKzIxOTMwIGRmOWM0YzU0ZWYzZWY5ZDYzNDI1ODU3M2ViYTJmZjVmYzY1OGE0N2YgbGVnYWN5LXRydW5rCisyMTkzMSA3NGI3YjhhOTYyOGI2NjIwMGYwMTQyMjcwMDM5ZDM0YjI2ZDZkYjU1IGxlZ2FjeS10cnVuaworMjE5MzIgZTViYWZkZGQxZGEwNDJlOWM0MGYwYTQxZDBkYTFjYjk0YmNmZGNiZSBsZWdhY3ktdHJ1bmsKKzIxOTMzIGQwOTM4YmMxMmExMWU2N2IzYmUwOGUxZWJjNjAzNTUzMTUwNDQ3YTQgZGVzY3ItYnJhbmNoCisyMTkzNCBjNmVmNzFlOTQzZGQ2NDBiNGZkMjFlZTNiYjkyZmQ2M2ZhZWE4MzYzIGxlZ2FjeS10cnVuaworMjE5MzUgYWFjNjJhYWE4NDZkZWZhZDBiYzQ1NTQ5Y2EzMzQ1ZmVmMjdkNGYyZCBsZWdhY3ktdHJ1bmsKKzIxOTM2IGRiNjQ3ZjdjODMxYmM1OGEyMzAyNmRhZmJhZTc0MzhlZjA2MmMxM2EgcmVsZWFzZTIxLW1haW50CisyMTkzNyA5MmY4MTQ0OWUxNmMyMWU3ZjhmOTRhNDVjNGExOGExMTEyMThmZjg4IGxlZ2FjeS10cnVuaworMjE5MzggMDE2OTJiZjAyZjk3ODUwNTU3YTZlNDRjODg2NjJlMzE5YmRmMTNmNyBsZWdhY3ktdHJ1bmsKKzIxOTM5IDNjZDAzYTY0YzMzOGMwMDM0Mzk4YTMyNDYyMWQ4YmUxNjMxZmRlNzkgbGVnYWN5LXRydW5rCisyMTk0MCBmOGJkMTRhZWY0ZDZmYjVkZGY0ZTlkN2M3MjZmMmZkODY4OWM0OTdjIGxlZ2FjeS10cnVuaworMjE5NDEgYWY5YWQ5MGE0NDQ1OGI2ZTJkNDhjY2Q4ZGRlMWMzMTQzODJkNjVmNyBsZWdhY3ktdHJ1bmsKKzIxOTQyIDRkNDZhMWIzM2M2MjEzYmUwMGU3ZTdjOTQ1OWU0Y2QzZDBlMzM4NGYgbGVnYWN5LXRydW5rCisyMTk0MyBlNzA5MjllMTA2NjNjZWRkYTgwYjZiNDBjNGE3NDNiOGU1NTc4YjhmIGxlZ2FjeS10cnVuaworMjE5NDQgODAyYTg0ZTg0ZWE5NDJmNjA2NDA4ZDFkNDY2NzIzNGJiNTYxZjM2MSBsZWdhY3ktdHJ1bmsKKzIxOTQ1IDI5ZTA5Yjk2ZWQzNjM1YTkzYzM5Y2RlZGNmN2Y1NWQ2MTM4NTEzMzQgbGVnYWN5LXRydW5rCisyMTk0NiA3NGRmZTMyMDA0MjNkZDM2YzNjYWEwZGZiZmJjNGM2MjA4ODQ3MzQzIHJlbGVhc2UyMS1tYWludAorMjE5NDcgMWQ1MDgzZTZkMTdlNmNjZTU3ZTZhOWEwMGMyYjgzYmY4MzgyZDExMSBsZWdhY3ktdHJ1bmsKKzIxOTQ4IDZiZWYwOWRhOWI5MzI0ZjI4MmQ5YWQ2YjMzZjM2NDI5NzVmN2FmNTggbGVnYWN5LXRydW5rCisyMTk0OSAwZWJmYjI1OWVjYzY1ZThjYzI3MTVlNmE0ZTk1OTg0MGUwOTc5ZmQzIGxlZ2FjeS10cnVuaworMjE5NTAgY2JkMjJjOTAyN2IyYjNkM2YzNDk2NjY1ZjlhMDFlNDY0MmNhYmFkMiBsZWdhY3ktdHJ1bmsKKzIxOTUxIGZmOGUwY2UxZDk4Njk4MDZmYzY4ZDY1MjZhZDViMDA2Y2E1YWI2MTEgcmVsZWFzZTIxLW1haW50CisyMTk1MiAxNDFiZDcwZTBiNzIzMDU5YzZkZDU0OGZiYzc5N2Q0ZWM0MGFlNjg0IGxlZ2FjeS10cnVuaworMjE5NTMgMmUxNzNkYTExZDJkMTQ2YzhiYjgyM2E3MmZmYzU5ZjNkNjg3MWJmZiBsZWdhY3ktdHJ1bmsKKzIxOTU0IDgyNDI5MDdjODk1NzNmOGVlYjM2YWNlMjFiNGMwOTI5MTUzNzdmZjcgcmVsZWFzZTIxLW1haW50CisyMTk1NCA1NzI1MzNhMzAzOGQxODMyYzhhMjAwZmI4NzE4MTEyZGQ4Mzc1OGU5IHJlbGVhc2UyMS1tYWludAorMjE5NTYgNzlkMzA0ZTNiYTI1N2M5MGNhOTE0YTk4NTJmZjE0YjUxZDViNWQxYiBsZWdhY3ktdHJ1bmsKKzIxOTU3IGIxMGZmMzM3ODk2YmU1NzdlZDdjM2VmNDAxYjNkOWFiNjNkYjU2ZDAgbGVnYWN5LXRydW5rCisyMTk1OCA1ZGUyM2E2MzhhZDY0ZTlmNTk1ZGNhZDk3NzRjZDAyZjM3YTlhOWIzIGRlc2NyLWJyYW5jaAorMjE5NTkgNzQzZjhlMWQ5NTNjYmMxYmVmNjg5NGFlYzA2ZTA4YWIyYThlYTdhMSBsZWdhY3ktdHJ1bmsKKzIxOTYwIDU3Njg0ZDNjZWZjZTkxYzAzOTE5YjFjNTFkYjQzZDhkYzVmNTRjYWMgbGVnYWN5LXRydW5rCisyMTk2MSAyZDY4NjI2MTQzYTc5YzlmYWY3MWIwOWU3YmM0YzVjYzA0MTA5OWJiIGxlZ2FjeS10cnVuaworMjE5NjIgMjJiMmY0YjQzNmFmZjgzOTAyNWE1Mzc3Yzk2ZDMxMzBjZmI4OTVjZiBsZWdhY3ktdHJ1bmsKKzIxOTYzIDRkMzNhY2JkYzUwOGY0YmQ3OTZiZjFiOGYyY2JiMDRkODM3NjVlYTIgbGVnYWN5LXRydW5rCisyMTk2NCAyM2FlNDdlMDAxMTlmM2M2OTYyZWI3NDg4NjE5MDUzODE2NGMzN2I4IGxlZ2FjeS10cnVuaworMjE5NjUgNDQxNTUxMjFmMDJiMWUyODM3NDFmNTYyYjIyNDNhYjZiNTBmY2E1MCBsZWdhY3ktdHJ1bmsKKzIxOTY2IDVlYjQ2MGE2NWZmNzBhMzRlNWY0NTg4NWU5YzA3OWM2NDVkNTk2MDcgbGVnYWN5LXRydW5rCisyMTk2NyAwMWFlOTYyZGY4ODVlNGU2ZTdiY2NjOGYyNTU0NjEwMjM4Y2MzMTc0IGxlZ2FjeS10cnVuaworMjE5NjggOTg0ODRlZjIyNWY5Mjg5ZjYyMTgxNTljYTdmM2I4NGY3MTZjODAwNyBsZWdhY3ktdHJ1bmsKKzIxOTY5IGFjMTNhNmNlMTNlMjRjZDBkYWExOGNmNDAyYzg4YzM3NDU5NGZjNTYgbGVnYWN5LXRydW5rCisyMTk3MCAwMWM2Mzk5NzFiZmYxM2JmZDU0Zjg0NDk2ZTgyYmVjOTYwNTAyMTk4IGxlZ2FjeS10cnVuaworMjE5NzEgYjQ2NWNkNTBjZjM2NGE5NjIzNWFiMjM3YzQ1NGQ5OTY5N2FlZjE3OSBsZWdhY3ktdHJ1bmsKKzIxOTcyIDBlMjIzMTJjNDczMzRiYmQ4OWNiOWRlMzIxYjUzY2Q1NWRlMDZjN2MgbGVnYWN5LXRydW5rCisyMTk3MyBmOTk5ZDM2MDlmNzQ2NmRjNjQ1MjczMmZiN2E1YmQ1NzNmMDE1ODA0IGxlZ2FjeS10cnVuaworMjE5NzQgMjQwMjA3MGVlMDI0YzMyZTIxYmE1YzA3NzhmMDI3NTY0Y2YwN2U5YiBsZWdhY3ktdHJ1bmsKKzIxOTc1IDE4ZGYwOTc4ZGU1ZDJlMTEyMjg3NmRmZGM5ZDIwNTZhZTI4NjYwMjYgbGVnYWN5LXRydW5rCisyMTk3NyBiMzA3ZTVhOGI0ZDhkNTkxZjlmZTk0NjE4OTJjMmUzZDYxZGNhNjE3IGRlc2NyLWJyYW5jaAorMjE5NzggMDE0NjM5ZGM2NWY4Yzc2NGQ5MTY0YmE0YjQ4NGZjMjM4NWZkNzc5ZiBkZXNjci1icmFuY2gKKzIxOTc5IDdjZDIyYmY1NmQ3YmMyMTgxYzQzMmRlNjc3ZjUwOWE3Y2FhOGIyMTIgbGVnYWN5LXRydW5rCisyMTk4MCBkMTExOTYzM2E3M2U5Y2RkYTZiN2QxZGZjNDFjZDVjNTkwYWQ1YWIyIGxlZ2FjeS10cnVuaworMjE5ODEgMDJiODFkZjA0OGJjNTlmNjdmYzY5YTVjMTA2ZjIzZTQyZWU2Njg2NiBsZWdhY3ktdHJ1bmsKKzIxOTgzIGMyZmJiNTk0MWVlNTZmYjhhOTg1NmU5M2IzMDNkNDQ3ZjA5YzJmZGYgbGVnYWN5LXRydW5rCisyMTk4NCA0ZDBlYTRjMjM4NmQ1ZDg4YzQzMzcxOTFmMGIxNzcwYTliNzc4MGYyIGxlZ2FjeS10cnVuaworMjE5ODUgM2Q1M2I1OWY0OGU2NmM4MzVkMDI4NjM5Yzg2ODhlNjNiYTkxMGE0ZSBsZWdhY3ktdHJ1bmsKKzIxOTg2IDYwNDc5MGQ0OTNmYTczNTlkNjZlODJmOWQwOGY5MjhmY2RiMmZhOGMgbGVnYWN5LXRydW5rCisyMTk4NyAxOGEzZTBkODgwOGUwZjc1NTY0YjEzYzkxZThiYzEzMGNhN2RiZjk5IHJlbGVhc2UyMS1tYWludAorMjE5ODggZDU5MWE5NmFlZDA2NDNkNTllZTY3NTRiYmVmYTZjY2NiY2Q1MWJmNSBsZWdhY3ktdHJ1bmsKKzIxOTg5IDk2NDU1ZjRhYmFkZDMzZTdiYTQxMTA0ZjBiNDIyMmU5Njc2NzUxOWIgbGVnYWN5LXRydW5rCisyMTk5MCA0YTQzMTk1MjY3NmI1N2IwMmViYjE3YjIyODM3OTA1NzU4NWI3NmNkIGxlZ2FjeS10cnVuaworMjE5OTEgNmQ5ODc0YmI5NzhmYmY1YzVmZDlmNjJlZThlMzdhZDM1ZDZhNmRmOCBsZWdhY3ktdHJ1bmsKKzIxOTkyIDk5OGY4MDUxNGExMzEyOTg4YjM1NDQ5NTgwZDQ0NGM3YjA1ZmQ2NDYgbGVnYWN5LXRydW5rCisyMTk5MyA3NjNiYjZmYWUyODBmZjcwMjdlZDc0ZmUwMGU3ZTQ1NjZkZWMyOTczIGxlZ2FjeS10cnVuaworMjE5OTQgNzBiOWI2ZjRlNzljMmE4Mjk2NGNmOTdlODhlN2MyNDJkNDEyZmMzNSBsZWdhY3ktdHJ1bmsKKzIxOTk1IDQ0NjJjNTdmNmM5NDhkZGQ4ZDAyNmJjZTZjZTVkMTZkZmNhNzA2Y2IgbGVnYWN5LXRydW5rCisyMTk5NiA3NGYwNTBmN2MzNjRkZWZiNThjMTlhNTc4YjZmNzQ1ZjI2YzUzZDg0IGxlZ2FjeS10cnVuaworMjE5OTcgMWI2ODY4ZTg5YTIzZThmMGEwZTA3Y2FiMWQ4Y2VlYzI3OTQyYjJmOCBsZWdhY3ktdHJ1bmsKKzIxOTk4IGE4YjFhY2M3YTIxZjU0ZDNkNTJkNGVmZWY0ZTA3M2I4NjRjNWRlZjAgbGVnYWN5LXRydW5rCisyMTk5OSA4MTMxNWI2Zjk0Njk1MTAyMDc0ZjRiMWMwNDc3ZjMyYzMzYThlMGRhIGxlZ2FjeS10cnVuaworMjIwMDAgNDEwMDdkNTBjY2I3M2QyNzU2MDNkY2U2NDA2M2Y5YmYxODg0Y2JiMyBsZWdhY3ktdHJ1bmsKKzIyMDAxIDI5ZTY2MWM1MmMwYjU1ZTliNThiYmIxN2YwMjU2YTdlYjRmZWU5ZjYgbGVnYWN5LXRydW5rCisyMjAwMiAwYzNhZDUwM2FkNmM0OTIwMjgxZTM2Y2Y5ZTM5ODUzOWY5ZjE5NDJiIGxlZ2FjeS10cnVuaworMjIwMDMgYzMwNzFiZDZhNzEzMzE4Y2IwYWI3OWVmOTY5ZmMzM2ZkNWMzMDA2MSBsZWdhY3ktdHJ1bmsKKzIyMDA0IDEwNzMyNjUxNTQyNWRiNzlhOTI5NDJiMDU2OTA1YjgxNmE4NGU3NWEgbGVnYWN5LXRydW5rCisyMjAwNSA2OTNiMzk4MzFmNzE4MTA3MjU1NzQ2ZTIwMTQ1YjU0NjQ0Y2Q5MTk3IGxlZ2FjeS10cnVuaworMjIwMDYgNTAwMDRiZWQ0ZTY1YTkxNmIzYjUxNTIzNGE3YWY5Yjk1MzNjYWVjYiBsZWdhY3ktdHJ1bmsKKzIyMDA3IDMxNWIzY2IxMjdjMDYyMjFkODQyZWVhZWRiNWIwMDAxODQyMTEwYzAgbGVnYWN5LXRydW5rCisyMjAwOCBjZWJiNGUxODc0NDk5ZDQ4MzA1NzcwMTE1NTAyYjg2MjJjNjRhZTNjIGxlZ2FjeS10cnVuaworMjIwMDkgZGM5YmFmODBjNDVhZmQ5MjY3Njc5YTY1NjYzZDllMWFhNDdkZGIxMCBsZWdhY3ktdHJ1bmsKKzIyMDEwIDQ2NzdkMmZmMzE1MDhmNWZhNmFhYjY0MGM1ODM0ZjU1OTA2MzNmNDkgbGVnYWN5LXRydW5rCisyMjAxMSBhNjM2MWMyZTUwNDRhY2Q0NDcxYWE4NTQ5YzNhZDA0Y2UxMGU5OTc4IGxlZ2FjeS10cnVuaworMjIwMTIgMzNmODIwODA1NTllMTY5OGQ0MDc5MjM5MjJjNDBjMTdhZTZhYTY5NiBsZWdhY3ktdHJ1bmsKKzIyMDEzIDNhYTg3ZjM0Y2FiMDFiNjQ0ZDI2MjJhMDM5MGYxMjYxZDNjOTQ5OWYgbGVnYWN5LXRydW5rCisyMjAxNCA2ZjkyNDJkODcwNTllODRmYThhOGFhNjdlYWU0OWJjZmRlZDYyNjY3IGxlZ2FjeS10cnVuaworMjIwMTUgNDA5MDA2MjAyOTNlNmQ2ZGNjMDFjZDVkYWNmZTIyOTYwMzlmMTFmMyBsZWdhY3ktdHJ1bmsKKzIyMDE2IGI4MGFjOGUzMWE4MDJlZmU3NDk2MGQzMzg3NTI4MTI0MzMwMzc1NzMgbGVnYWN5LXRydW5rCisyMjAxNyA3YzkyODExNmJhYTAwZGUwZjNkMWMyNDY1MDVlYjRhM2VmODllOGFlIGxlZ2FjeS10cnVuaworMjIwMTggMDgxZDk2ZmJjZjQzMmNiYjc1MThkZmU3NjBkNTdjMGYxYjY1ZTgwZCBsZWdhY3ktdHJ1bmsKKzIyMDE5IDFiYzFmZGYxNDgyYjA2Yzc3ZmFjYTU2MGE1YzJjNmI2Y2I2YzVhYTUgbGVnYWN5LXRydW5rCisyMjAyMCBmZGIzODhmMmRmNGVhYTczMTkwYjQyNTAxODQ1NGUwZTkxZDRmZWI2IGxlZ2FjeS10cnVuaworMjIwMjEgMTMyYzRiZmRiYTc0ODAxOGNkMDY2MGUwYzkyMzQ5YzI3ODkzOWYyOCBsZWdhY3ktdHJ1bmsKKzIyMDIyIDEzMWE5Zjc1ZTI1ODJkZDU0ZWY2YzEzZGE5NjU2NTcwY2U1ZjJkNDggcmVsZWFzZTIxLW1haW50CisyMjAyMyAzY2M2Njc1MDY4N2Q1Y2U4MzRlNjUxOGRkNmYzZjUxYTBkOTVkYmZlIGxlZ2FjeS10cnVuaworMjIwMjQgN2U1MmJmNTJhZTMzNDg3ZGM0NzVmMjAzNDYzOGZjNWJjOTA3OWM2ZSBsZWdhY3ktdHJ1bmsKKzIyMDI1IDJkZWE0MGU0MGQ5ZDU3M2U1MDY3YTVjNzYwZTk5MGEzNzUyNGQwYzcgbGVnYWN5LXRydW5rCisyMjAyNiAwMzMwNTYwMmJhOWI4NWIzYmZhODFhMzM3YjI2ZDQ1ZTRjYjhhNDQ4IGxlZ2FjeS10cnVuaworMjIwMjcgNWUwYTQwY2NiOWRhNGNmYzk1YTcyN2U1NDBhMGIzZWRjNDlmMDZmZCBsZWdhY3ktdHJ1bmsKKzIyMDI4IGE4NTc1ZjM1OGI5ZmRmN2Q3MGE1NGMxMzU0ZTlhYWU4MGYwYWQ3YWQgbGVnYWN5LXRydW5rCisyMjAyOSBhYjhhYTQzMDIxMDk5MTMyMjZlMzE3ZjA3YTc5MTY1ZGUzM2VjN2JhIGxlZ2FjeS10cnVuaworMjIwMzAgYzAzMmFhZjZjODEyMzIwZGYyMTIxODUwOGRmZDM5NjgwNzk5NzA0MCByZWxlYXNlMjEtbWFpbnQKKzIyMDMxIGExZjZmZDAxMjA1ZjAyMmNjZWUzMDI2ZGYwZTViYThmMGRjMDFhNmIgcmVsZWFzZTIxLW1haW50CisyMjAzMiBlNjZkNjQ3YjczMmYyM2Y3NWI0MWE3ZWJlZTg1Nzk2N2IxYjY2OWNhIHJlbGVhc2UyMS1tYWludAorMjIwMzMgMWM1ZDI1NmIxMjVhNGM0OGEwOTgzY2QyODgwZWRhZmJkZTRjYmVmNyByZWxlYXNlMjEtbWFpbnQKKzIyMDM0IDA0NWY1NTEzNWFkMDA0YTRjYmIxZmVkN2U1NTM1OGRhYzVjZGMwNWQgbGVnYWN5LXRydW5rCisyMjAzNSA4NzZhZWNlZjY0ODNmMzRlMzk1MjNjYzg5MmE4MzJjMDc5MzMyYzViIGxlZ2FjeS10cnVuaworMjIwMzYgM2U1Y2U5OTQ1OTg2MmEyMjI3Njk2ODQyZjUxZWViN2RjODVmZGUxYyBsZWdhY3ktdHJ1bmsKKzIyMDM3IGUxNDY0MTQzYzQ2MzMwNjI0NDY0YmRlZjlhYzE0NDc4MjA3NGY5OGYgbGVnYWN5LXRydW5rCisyMjAzOCAxMmNiYzk0MmY1NDlkNTM4ZWZmZjA1ZDk3NmNmYTY3MDcwMDk2ODE2IGxlZ2FjeS10cnVuaworMjIwMzkgNzdmZDIwYmNjNzY2MWE3MGI4NGI1YjE0ZDQzYmFjZjhhMmE5YjQyYSBsZWdhY3ktdHJ1bmsKKzIyMDQwIDQzYWMxODA0ZDJhYWNiZGRjYjVjOTM5OGI4OThlNTEzMGQ0NzZjMDQgcmVsZWFzZTIxLW1haW50CisyMjA0MSBlZjIwMzFjNTQ4NzU3NjMyNGQ2N2YzNjcxYjlkNTFiODQzZjA1ODZlIGxlZ2FjeS10cnVuaworMjIwNDIgNTMzMWY0NzA1OGExOTkxMjMyMDFhMjFmZmRjMjc0NzJiZWZiYzQyZCBsZWdhY3ktdHJ1bmsKKzIyMDQ0IDJiMTY1MjZhMzVhNGRlMTIxZWI3ZjFhMmY2ZTVmNmM2OGM1MTFjMjUgZGVzY3ItYnJhbmNoCisyMjA0NSBmNTJjMDgzYjU1ODgxNmUxM2I2MzU5ZmY4ZTc0NzQ0NzA3YmYyMzFlIGRlc2NyLWJyYW5jaAorMjIwNDYgMzE0N2VmZTMxZWI4OTgyMTUzNjljYjcxZDFhODEwYjY5YWViYzUyNiBkZXNjci1icmFuY2gKKzIyMDQ3IGQ5NzJjZWI0ZGMwNjQwY2YwNTE5YjVkMzgyNjc1Y2M5MzQ4YzJkNzUgbGVnYWN5LXRydW5rCisyMjA0OCBkNjQ2MjhjYzhmZmM4YTg2ZGZmNzNmYzEzYjY3NWYzZDUzYWNhNDYyIGxlZ2FjeS10cnVuaworMjIwNDkgNmYzMDFiM2NmMzIzZWM5MzU0OWM2ODg2ZjAxYjA1YjgyOWU3NTg3NCBsZWdhY3ktdHJ1bmsKKzIyMDUwIDRlZTFmZWUxZDRhZGI3NDMwNDBiZTVjOWM2NGM4ZDQ1N2Q3MWIxZWUgbGVnYWN5LXRydW5rCisyMjA1MSBkMTY2OWFmOWQwZWM1MmQzN2I3NDk1ZTEzYzM1MzBkNjEzZWU1MWViIGxlZ2FjeS10cnVuaworMjIwNTIgNzM0MzYyMmYyYjg1ZDE0MTI0YTRjM2I3OGU5ODBlNjBjNWI5YjhlNSBsZWdhY3ktdHJ1bmsKKzIyMDUzIGQzZDljZWEyMzE1NjY5YTIxZTc0ZTRlOGNhMjJhNmRjMDFmMDUxNDMgbGVnYWN5LXRydW5rCisyMjA1NCBhZTE5YzY5OTA3NDk2MjBiMGFlOTE4YTc4N2U3MjA0NjJjMzZkYWJlIGxlZ2FjeS10cnVuaworMjIwNTUgOWFjMWQzNWY4MTM2NmNlMmIyNTRlODIyYjVhZjg4ZWJiYzJlMWExNiBsZWdhY3ktdHJ1bmsKKzIyMDU2IGVhOGU5NjNkOWU2NzI0NDY5ZGNmNjM2MTYwMWJhNmYxYzI3OTlkYTEgbGVnYWN5LXRydW5rCisyMjA1NyA2ZjU5MDMyYWYxNThmMTg1NjE0NjA1ZTkzYTBlOTYzNTMwOWM3ZWMzIGxlZ2FjeS10cnVuaworMjIwNTggODEzMzdmYmE3ZGRiZTA1OWIwOTE4MmYxNWY4ZGYxNTI3OTk5ZDQ0MyBsZWdhY3ktdHJ1bmsKKzIyMDU5IGMwNzY1NWY3MjY0N2IwZGZkOTQ0MmRmNjAyZGMyYjJlYWI5YjE4MDEgbGVnYWN5LXRydW5rCisyMjA2MCBhNWFhZjY4ZmZjZGFhYWJjOTE4N2RkYWFhZTRhMjc4NjkzY2IyZDNkIGxlZ2FjeS10cnVuaworMjIwNjEgOWVjY2Y3OGZlYTFhYzAzZWI1ODliYzc5MDYxZmI4YTYzYzRiOWYwZCBsZWdhY3ktdHJ1bmsKKzIyMDYyIDQzMjQ1N2YwMjI4Nzg0MTA5NmJiZmY0MWQ1YWRhZGJkNzMyYTJmNjUgbGVnYWN5LXRydW5rCisyMjA2MyBjYjc2MTE3YzFiNGJiODAwOWIzOWU0ZDgxODExNmZiMWVlNzQ3Mzk1IHJlbGVhc2UyMS1tYWludAorMjIwNjQgMjc2MzZjOTFjYjI3YzVhMTA1NDQ4NzRhNjUxYWUyMzZlZTAzN2JmMSBsZWdhY3ktdHJ1bmsKKzIyMDY1IDFiMDlhOWNiMDZkNTlmNTAwMGUzMjdkZDM3YWRhMjdhZWQ2YTNiNTAgbGVnYWN5LXRydW5rCisyMjA2NiAzYzEyZWVlN2JiZDQyMzY0NzZiYWM0NDFhN2M3NGEzNWEwMThiMjEyIHJlbGVhc2UyMS1tYWludAorMjIwNjcgYTM1NjZlZTViMWY5NDg0NDRkOWY0YjZhMDQwNTM3NTE2NGY0ODdjMiByZWxlYXNlMjEtbWFpbnQKKzIyMDY4IDExMTEyYjczNmM3YjVhYzBlMjdhYWU3ZTQwNDFkMWM3NGI3N2U4YzggbGVnYWN5LXRydW5rCisyMjA3MCAxMmI0YmM0YTgwNDg4ZTU4M2EzMDAxNjdlY2RhNDAzZDU0YmQyZDZmIGRlc2NyLWJyYW5jaAorMjIwNzEgNDA4MWI1NmYyMGZmNTliZmIxMTM1NjQ0YThiYTJlZWExMDY0MmQyYyBsZWdhY3ktdHJ1bmsKKzIyMDcyIDJkZmZhM2QzZDk0ZmYxYWRhMmI3ZGYwMGM1MDVkODgzY2YxNTc5OTcgcmVsZWFzZTIxLW1haW50CisyMjA3MyAwZTIxMmU4OGQzM2QwOTJkOWQ0NzE2N2VlNmE3NDE2MjJiMDQ1NDU5IGxlZ2FjeS10cnVuaworMjIwNzQgNGQ5ZWJlZWRiZDA0NWZlMThhOTdkYzQ2YTUxZDBlYjI2Y2FlZjgxYiBsZWdhY3ktdHJ1bmsKKzIyMDc1IDhjNDAyYWRlZWNjYmI1YjAzYWFlNmRlNmYzZmNjMDAwYzY3YzI5MmUgbGVnYWN5LXRydW5rCisyMjA3NiAwYjljZWE2M2JjZmNkY2MzM2M5ODQyOTk0Mzc0NmVjNjk5MGY1ZjU5IHJlbGVhc2UyMS1tYWludAorMjIwNzcgZjVlMjVmZTQ2NmE0MTkxZGQ1ZDBkNjIzMTc3OTkyNDQ2ZWVmNzFlZiByZWxlYXNlMjEtbWFpbnQKKzIyMDc4IDkyZWYzOGIwMTM0NjNiMjYzZTM3OWI1NTBlMGY1YzQ5YzBkMzBlMGIgcmVsZWFzZTIxLW1haW50CisyMjA3OSAwY2UzNWU3ZDZlMzM2NjM1MzZjY2NiOTlhMDRlZGQ1NDdlZGNlYzQ5IGxlZ2FjeS10cnVuaworMjIwODAgNjQzNDNhMTI3MjA4M2MwNTBjYzJlYzZiNjhhNWY2NWFjMTk0YzI4OCBsZWdhY3ktdHJ1bmsKKzIyMDgxIDIyNDU2ZDBlZTczNzk4YzQ3MjI2NjNmNjc3NGYxYjlkZDg2MDQ0OGUgbGVnYWN5LXRydW5rCisyMjA4MiBjN2JiOTU2M2IxNDk4MDM3YzNhMDJiZmVlZWI3MzMzM2E1MjNhMDEyIGxlZ2FjeS10cnVuaworMjIwODMgOWIyOTFjYTY1NDZjNGI0ZjkyNGZlNmZjMWIyZWM5ZmYyNTM2ZGNjNiBsZWdhY3ktdHJ1bmsKKzIyMDg0IGYxMmUxYTc2NmExNDJkNTQ3NTU0N2RkNDM1N2Q3MjE2MjUyOTZhMzcgbGVnYWN5LXRydW5rCisyMjA4NSBhYWFmYzg1MmMyZDUzZjhkMjkyNTJmNzdlODkzODg0N2E1MjMwNjkyIGxlZ2FjeS10cnVuaworMjIwODYgZmI4MzdjNWFlNWQzZjM2YjE4NjllZjMwOTBhNTU5MDg1MGM1ZDA4MCBsZWdhY3ktdHJ1bmsKKzIyMDg3IDViZGJlNjFhMGMyOGJiMmMzZjk2MDU4NTBmZGJkMTBkMmMyNzI0OGEgbGVnYWN5LXRydW5rCisyMjA4OCA1OWI3ZThlY2ZiOTY2NzMyMWQyOWY0YTMzNzZiY2I2NTE0NGEyNzVmIGxlZ2FjeS10cnVuaworMjIwODkgNzFmZWFlN2JmNTYwOTRiZjM0MDE3MTk0Y2YwYTZjOTk5MWEyMWMwMiBsZWdhY3ktdHJ1bmsKKzIyMDkwIGJkYmI3YzRkYzYzYWRjNTc3Njc1MGExNWQyZGQ2YjYzMTAxZGU2ZjMgbGVnYWN5LXRydW5rCisyMjA5MSAyMjE1NWE3MTgyNTQxNWU3M2JmODVhYTllMmUxNDc3NjA4MDU2MmYzIGxlZ2FjeS10cnVuaworMjIwOTIgZGVhZDlmYWJiZWZiN2I1N2EwMTllY2VjNGU5NTU0MGYwMWEwYzVmNSBsZWdhY3ktdHJ1bmsKKzIyMDkzIDBiMTYyNWE5ZTg5YTcyY2ZlYzY3Y2Y3Y2VhMjgyY2Y3MGU1ZTEzNGEgbGVnYWN5LXRydW5rCisyMjA5NCBkMjBhNGNhMDcwNWMxZWFkOTMwOWQzNmEyNjRhMmFhOTRlMTBiYTg1IGxlZ2FjeS10cnVuaworMjIwOTUgMDEzMmFmNjM1MDZiOWNkZTBkN2Q3NmM3MWQ5MjRmYWFkN2YyZmZkYSBsZWdhY3ktdHJ1bmsKKzIyMDk2IDg1ODQyMTdkZGM4ZDZkMjA4MjFmYTI3OTg3N2MzYzkxYzg3NzAzNGMgbGVnYWN5LXRydW5rCisyMjA5NyBjYmFiZTUyMmI4ZjE2NzZlNWY3YTgxZTI3MWFhODIzZDEyMTE1NGJjIGxlZ2FjeS10cnVuaworMjIwOTggMjJlODIzMTQ2M2JhNmIyM2UxNWU0ZGRhMTQ1YzZkYzlhYmM2Y2Y2NSBkZXNjci1icmFuY2gKKzIyMDk5IGVkZjA1OGIxNmRkZjNmYWQzZjIyNTUwZDQ1ZDU2YmIyNGE0M2NmMzggbGVnYWN5LXRydW5rCisyMjEwMCBjYmZkZjYyM2MyNjZmNjkzZmRhMjllNTUxY2NlYjE0Yjg3ZTViNDYzIGxlZ2FjeS10cnVuaworMjIxMDEgNWFmMWVlNDIyNTc1MjdiNTI0YWQ2YWQ5YzNlZjcxYTBhYzM5ZDQ2MSBsZWdhY3ktdHJ1bmsKKzIyMTAyIDc2MjhhYTgxNmFkYTlkYTk2OGEyNGMzNTM0ZDEwYmU5YjMyM2ZiZjAgbGVnYWN5LXRydW5rCisyMjEwMyAyOTEwNDE3M2EwNzJlYmQ2M2MxY2RmZTY3MmNkZmNhYTMwODc1MDFkIGxlZ2FjeS10cnVuaworMjIxMDQgNDQzYTg2MjJlODUxYWJjZjYyZTI4NjVmYWNjMjU5MTdmYTAyODc2NCBsZWdhY3ktdHJ1bmsKKzIyMTA1IDc5YzY3NmY5YjM0YTkxNDBiOTg0N2U3OWMwNTgxOWEwNTBiMWRiODMgbGVnYWN5LXRydW5rCisyMjEwNiA5NzUzYjAyNjlmM2FjMGRkNjg0MGVjOGEyMTk0M2ZmMmViZjQ5NmMyIGxlZ2FjeS10cnVuaworMjIxMDcgMzRmMDFjNmNjODE4NjEzNzJlZjk4OTgwYWFjZDM4Mzc5NmJiZDhjZiBsZWdhY3ktdHJ1bmsKKzIyMTA4IDU1YjQ1YjQ3ZmM0ODc4ZmJmNDU0NDhkYzczNzkzODY4OWMyYjRjNTIgbGVnYWN5LXRydW5rCisyMjEwOSAzNmU3ZDFlYWJkOTIxYWIwNDM0ZTc1MjBkYWZhYzFkMzE5N2I0YzQ4IGxlZ2FjeS10cnVuaworMjIxMTAgOTE0MTIyZmJlYWQyZGMyZGRiYTk5OGIzZGQxYWM0NTM0ZTBjMzg5YiBsZWdhY3ktdHJ1bmsKKzIyMTExIGY2MWRmOGYwY2I0MzhhNjc1Mzk0ZTcwOTlhYTk0M2RlMjU5MGRkNjUgbGVnYWN5LXRydW5rCisyMjExMiBkZWFmN2IxMzliYzhmNGJiYzBjNmNkM2VhMTg1MmY3M2FlN2RmNDhlIGRlc2NyLWJyYW5jaAorMjIxMTMgZjA4MjE4OWE0NDQyOTRiNDY4OThmNjVlNWE5ZDZkZDViNTM2MTgzOSBkZXNjci1icmFuY2gKKzIyMTE0IDUxMGY3ZjZhODc3ZWNmNzRiNTYzZmVmZDg2ZTQ5YzQwYjE0NmVkNGYgbGVnYWN5LXRydW5rCisyMjExNSAyYmM2NDg5MzJkNDRmYjE1MzNkYzQ2NmI4NzBhZjQwZDQ0OTg0NzdlIGxlZ2FjeS10cnVuaworMjIxMTYgYjczMjY5MGY1NjFjNmU3NjViNTAzNzU4YTBlMGU5NTZkM2JjNTk5ZCBsZWdhY3ktdHJ1bmsKKzIyMTE3IGU3YzNjOWJmNTJiMjdkNThlYWI2YzliYmYxYTE1NTBkYjNmNzQxZGMgbGVnYWN5LXRydW5rCisyMjExOCA0MmRkNjI1MWNjM2NjNGYwMWJkNDExZWIwOTEzMTljMzM3NDI4NDUyIGxlZ2FjeS10cnVuaworMjIxMTkgNzJhMzY5MWYxMDcxZmFmMmUyNjExYmU5YmMxZDdiYTJiNGJmZTQ3YSBsZWdhY3ktdHJ1bmsKKzIyMTIwIDUyYmQ5ZTFkYjNkOTBhNTIxNjllZTFhMjdlMDZhZDdiZmYwMzI0ZjcgZGVzY3ItYnJhbmNoCisyMjEyMSA1MmU5MmNmYWIyMzc2YTNkNDUwYTA4ZDk4NDg4MWFhMWRkMjM0Mjc0IGxlZ2FjeS10cnVuaworMjIxMjIgMmYyNzgzOGQ4ZmM1OTQyNzU4NjI0ODZmMDMzNTA1MDEzOGUwNTc0OCBsZWdhY3ktdHJ1bmsKKzIyMTIzIDJlNDlmMGU5MmJjNWFhNWM4Yjg2ZmRlOWJjZjJlZDNiZTMyZWIwZTcgbGVnYWN5LXRydW5rCisyMjEyNCAxZWZkNjliZjE4NGMzOTA4NTIzYjM5MTg1Nzc1YTViMTJkY2IwYjJkIGxlZ2FjeS10cnVuaworMjIxMjUgZmEwMmY3OWJiNDkxY2M3MTEwZjg3NGE1MDVhYjIyOGJiNjM2YWEzMSBsZWdhY3ktdHJ1bmsKKzIyMTI2IDBhYTE5MTZjZjEwMzQ5MWRjN2I2ZDRlY2Q4OWJiYWY1ZDZmMzU4N2MgbGVnYWN5LXRydW5rCisyMjEyNyA4ZTJmNjI5NmZkN2I0YTY3NWQ1YzBiYTZhYzAwYWUyZjZhY2NmZWFmIGxlZ2FjeS10cnVuaworMjIxMjggZjQ5YTEyZTdlMjRhNDBhMGY0NzQ1MzQ3ODI0MjkxOGZmYjI0NjhkMiBsZWdhY3ktdHJ1bmsKKzIyMTI5IDRiZmQ4YTVkYTBiMWRmMWI3Zjc3ODlkNjQxNDRhZDEzYTVkNmVmZjQgZGVzY3ItYnJhbmNoCisyMjEzMCAyM2Y1NWI5ZjRiYzc0NGIxMTBmNWI1NTVmNDQxNGQ5NDUyODcwYmYyIGxlZ2FjeS10cnVuaworMjIxMzEgNGE4ZGVkMDg3MjYyZjJjNTY2ZTA3YWRkMzBiNjFjMTBkNDVjNTZhMyBsZWdhY3ktdHJ1bmsKKzIyMTMyIDBkZWRhZTdiZTNhYTEwNDcxYmFjMGVlOTdjOTZlNmRlMDY2NTlhMzMgZGVzY3ItYnJhbmNoCisyMjEzMyAwZmRjNWVlYmU0MmQxYzUxODdiOTY0YzZiNTEwYjc2MTE5ZTBjOWExIGRlc2NyLWJyYW5jaAorMjIxMzQgNmMwMTg1ZGY3MTQ3YzM5ODMwNDUyZjZjNWZjMzQ5NjZiOGE0MDZhYyBsZWdhY3ktdHJ1bmsKKzIyMTM1IGRhYjk1Y2E4YWNmYzJhNGE3MDY1MjA0NWM3NTlhYWY5MzM0MzE0ZWIgbGVnYWN5LXRydW5rCisyMjEzNyA0MTkwODY5Mzc3NDY3NWFiNmEwMWU4NzhiZWE5ZjNiYjJjNjU0ODI4IGRlc2NyLWJyYW5jaAorMjIxMzggNjUwOTczZTI5MjZjYTFmNDA3ODJkMWE3MzEyYmQwODFjYjQxNzZkMiBkZXNjci1icmFuY2gKKzIyMTM5IDA5ZGYzMjU0YjQ5ZDdjOTMwNjU4NTMwMmZlODE1YWIwYmRiNTM0MzkgbGVnYWN5LXRydW5rCisyMjE0MSAxNTQxZDVjNmE4ZjE4MTIwOGFhNzM3NmU1NzhiMDdhMDcyYzllZWRiIGxlZ2FjeS10cnVuaworMjIxNDIgOTAwZTM4NTI0YmYyOTFiMWNkNmFlZTJlMTNiMDk4NTk2ZGYzNjQ3YiBsZWdhY3ktdHJ1bmsKKzIyMTQzIDcxNDkxNzNlOGVkY2RhYzZiZmIyNmFlNTUzYzBkMDNiYTk5MjI0NjMgbGVnYWN5LXRydW5rCisyMjE0NCBmODU4Zjk4N2U3NzJhMjkyMDA2ZThmNDYyY2ZkMDQ1Yzk1NGFjNmE5IGxlZ2FjeS10cnVuaworMjIxNDUgNmMyMWU5Mzk0YjQ0ZjRmZTFlZDg4ZDY4YjdjOWEyYTdjMTM2ZGI2NyBsZWdhY3ktdHJ1bmsKKzIyMTQ2IGZlM2JjNGE0YWQ4NDM2ZTlhZTFkOGM1MzA5MDdjMzMwMDRmYjNjNmIgbGVnYWN5LXRydW5rCisyMjE0NyBhNWU0ZDRhMzBjOTgzODUzNjc2OTljMWQyYzM3MzBlMTRhYTYyMGU3IGxlZ2FjeS10cnVuaworMjIxNDggMDEzY2ZmY2ZkOGEzYjQwMTlhYTYzMmQwYzUyNTIxZDE0OWNhOGFjYiBsZWdhY3ktdHJ1bmsKKzIyMTQ5IDkwZDA2Y2JjZTI2YTRiMDE0NTc4OTUzY2RjMjEyNzI4MGUxZDQ2ODUgbGVnYWN5LXRydW5rCisyMjE1MCBlMDFkMjk2MzlkOGU1ZDNjN2E1N2UzN2MyN2Y1ZjU1MTk0YjQ2N2RjIGxlZ2FjeS10cnVuaworMjIxNTEgYTA4MTk3MDhmZTljNzJkNThiNGZlNjE3NTA4YWY1MTAzMWE0YjI1YyBsZWdhY3ktdHJ1bmsKKzIyMTUyIGY4ZmRkNTA4M2FmMzY1OTM4MGZkNTU5MTRmMDViNTIwOTZjNjhmNmUgbGVnYWN5LXRydW5rCisyMjE1MyAyYjE0ZjEzMDgyNzU1MjdkMmI0ZDRlYTJlNjZhMjNiN2YyNjIyMGM2IGxlZ2FjeS10cnVuaworMjIxNTQgMTM0NmVjZjMxOGYyNzdkMGJlNTJjYWMwOTc1YzQzZWEzMDlkZjYxZSBsZWdhY3ktdHJ1bmsKKzIyMTU1IDkzMDZkYWRkYzI2ZmRhYjc4NTgwY2UwNjhjODkxZGZlZDYxYzRiM2QgbGVnYWN5LXRydW5rCisyMjE1NiAzODhkZjQ5YzFjMzgyMjgyOGMzNTNhYjE5MTRlNmQ5Njk0NDZlYjMwIHJlbGVhc2UyMS1tYWludAorMjIxNTcgNGRkYzVhYjliZWM0MTlmNjMwYzNiNGU3NDg0YWM3ODNiYmQ0NGMyZCByZWxlYXNlMjEtbWFpbnQKKzIyMTU4IGY3MmQ2MWIxMjQ2ZWUwMWMxMzE4NjhhMjllZTg5MTcyYmY5ZTJiY2MgbGVnYWN5LXRydW5rCisyMjE1OSBlOTBhNjU4YTU4ZDRmNjMzYWZhMTYzOGI5YzBjMDczY2FmNWExNWQ3IGxlZ2FjeS10cnVuaworMjIxNjAgNDhlMGZiMDU1YzMzY2FiYTI0OWUzNzVlNGI3Mjk2Yzk1ZTg4NzQ5ZCBsZWdhY3ktdHJ1bmsKKzIyMTYxIGZlZmNjMWU4MGNlZTM1NjBhYjVhNzEyNGNkYzE2NzJjNzBkOTQwMWIgbGVnYWN5LXRydW5rCisyMjE2MiAxZGI2OTAwYTA3ODM1YTNmNWMzZTllYTg5NDk1Mjc3NDI3ZGZmN2E4IGxlZ2FjeS10cnVuaworMjIxNjMgYjc2MjIyMGE2MTU5ZmMzM2NjMmU3NzIxOWZkMjRhODdkYTNkZmU1ZiBsZWdhY3ktdHJ1bmsKKzIyMTY0IGYyODg1YjBkZGJhZWI2MGFjYjA2MDhlYmI0YWExODI5MzNiYzY0MzQgbGVnYWN5LXRydW5rCisyMjE2NSA0Nzg5YzEyYTg5ZjFiZjQ0MzIzYmIwN2YzZDg5YjhkYWZjYWY0NmU5IGxlZ2FjeS10cnVuaworMjIxNjYgY2Y5MjU0MjEwMDE1ZGI2Zjk2NjQxZmJiYzliYTJlNDY5YTFkYmM5ZiBsZWdhY3ktdHJ1bmsKKzIyMTY3IDlhYTVkNjZjZDEzZGNmYTNkMjJlNWRiNmQ4MDg4MGIyMjYzYTRhZDQgbGVnYWN5LXRydW5rCisyMjE2OCBlZWQ4YThhOGY2MjJjOGQ5OWQzOWNjODgyNmEwMTRjNjE0MGI5ZjE3IGxlZ2FjeS10cnVuaworMjIxNjkgZDc1OTAxMjJmOWEyNjEzNzMxMTMzYTNiNjJlNmQ0ZjZkMDljNDhiNSBsZWdhY3ktdHJ1bmsKKzIyMTcwIDkzMTNiNDhmMTFjM2Y4YzY3YmQyNzI4NWY5MDUxMTA3Zjg1NTUyNjkgbGVnYWN5LXRydW5rCisyMjE3MSA5MTllNjBkNzczMzQyY2E0YWFiYTM5MWE0OTllNTVjNjI5MmMyMWY4IGxlZ2FjeS10cnVuaworMjIxNzIgZjk0NmI3ZjdkODMxOGVmMzA0ZDNmNTY1ZTUyZDlkYjI5ODdjMGI5YiBsZWdhY3ktdHJ1bmsKKzIyMTczIGVkNjJhZDMwODM0ZWIwYjUzNTU4ZGE3MTFhZGY1MjE3NjYyOTE2MzIgbGVnYWN5LXRydW5rCisyMjE3NCAxYWU3MTg5NzZhYzZkYzExOGViMjRiZjM0NzdkZTRhYjJhZDI4NWI1IGxlZ2FjeS10cnVuaworMjIxNzUgMGMzMDdmYTM0NGI1Y2E2MzU2MzE5MWE0Njg2ODdkYjIzNzJjZGZlMSBsZWdhY3ktdHJ1bmsKKzIyMTc2IGIwMGU3YjM4Zjc3ZjI3NTFmNGQ3NTBhNzI2YzlkOGRjZWIzY2E5MzEgbGVnYWN5LXRydW5rCisyMjE3NyBiZDk3MmZhODQxYzVmZWI2YWNkNDc0MDVhNjg2NDQ5NDU0ODNkZjAwIGxlZ2FjeS10cnVuaworMjIxNzggOWMzZDUzOTVlM2ZkOTMwOTM5MmJjNmZkM2IzZjJlYjFkM2EzOTQyNSBsZWdhY3ktdHJ1bmsKKzIyMTc5IGQxNDRjODFlYWY0NDY4MGY5NTA3NmM4MjUzMDVkY2UyYWMxOWViOTUgbGVnYWN5LXRydW5rCisyMjE4MCBkYzRiZTdiZDY3NDYxMDQxZTAwMTY4YzI1NDI2MjM1NGU0ZjllMTlhIGxlZ2FjeS10cnVuaworMjIxODEgNjUxZTYzOTQyMDhjOGQ5MWQ4MzJiY2I1ZWE4OGNmYjhlOGFlZjEzYiBsZWdhY3ktdHJ1bmsKKzIyMTgyIDFlNjg2YjA4OThhMmY2ODczZWYzZTFiYjlmZTYzMTBlMzMzNzY5ZWIgbGVnYWN5LXRydW5rCisyMjE4MyA0NzFhOTAxODEyOWMzZmQxOTE5MWQ2NzdlZjc1MDk1MDdkOTM4NmYwIGxlZ2FjeS10cnVuaworMjIxODQgZjFjZjJhNDQ0MTc0OWZiMjAwMjMyOWVhZGZjNzFiYTAyOGRjOTQ0YyBsZWdhY3ktdHJ1bmsKKzIyMTg1IDM0Mjg0MjE2MjAxYmVhOTkzNWI0MTgyM2MxZTlkMTkzNWVhYjZjMGMgbGVnYWN5LXRydW5rCisyMjE4NiAzZGQ4ZTY0ZjUxMmU4NGFmYzRjMzg4YmY0NjU0Yjg3YjRjZmI3NzE5IGxlZ2FjeS10cnVuaworMjIxODcgOWU0YzEyNjczZmFiNDRmYmU1MjZlZGJjNmJiY2UwOTJkNGM5YmUwMyBsZWdhY3ktdHJ1bmsKKzIyMTg4IGRhYzljY2E0OTAxMjFjMWFiNjBhNTFiYWZjYWY3MmIwZDdkODA5ZGQgbGVnYWN5LXRydW5rCisyMjE4OSA4YjlkODdhZjYxZWJkYmY2OTUzYmZhMGE4YWU1ZWM0MzQ1MmE5M2JmIGxlZ2FjeS10cnVuaworMjIxOTAgMTEzZjBiNTc0NGM0MGM5MWYwOTA1MTA0NWY0MTEyYTYwZjQ5ZDIxNyBsZWdhY3ktdHJ1bmsKKzIyMTkxIDAwOTM1MDMxYjM3M2M1NDkwODZlMmQwMzZkYzc2MzdkZmQ0OGNmODUgbGVnYWN5LXRydW5rCisyMjE5MiBiYTllNGY1NTEzM2Y5M2JlMzY0MTJiMWMzOTZhYmRkYzJlZmNjOWY3IGxlZ2FjeS10cnVuaworMjIxOTMgOWY3ODc1OWE1MWIwZjczYzgzOGY4NmM1MzUwOTBiMmY4MGZhZGQyOCBsZWdhY3ktdHJ1bmsKKzIyMTk0IDRmNGQ4MzAzZGU2MGNmNmMwNmZkZTRmODk4MmQ3YjVlMmVhMzIxYjEgbGVnYWN5LXRydW5rCisyMjE5NSAwOGNkODFjZGZmYTlkZDJmNGQ2NjkzOTI4ZTM2N2Y3NmQwOGMzODVhIGxlZ2FjeS10cnVuaworMjIxOTYgYWNjZjE5MjU0MzFjNzcwZTgzMWYxNmI1NzRkNWRkZTdiYjFlY2I1YiBsZWdhY3ktdHJ1bmsKKzIyMTk3IDJiMTFkMTY2YjA3YjcxYTBjNTA3NDU2MzlmOWU5ZWYyZmQ4NzMyOTEgbGVnYWN5LXRydW5rCisyMjE5OCAzNjBjZWNlNzYxMjM1NWUzZmFlNGJmNGFjMjhiYjZkMTFhMjIwZWFiIGxlZ2FjeS10cnVuaworMjIxOTkgN2ZhMWY4N2NhNmIyZDNmNjJhYjhhODc4Y2ZkMWQ0MjAwYWQ4MTY2MyBsZWdhY3ktdHJ1bmsKKzIyMjAwIGIwYWFmNzgwYmNhNjZjN2RmNDFjOGVkNzkyMzM5MjJhYmE4NjU3NmMgbGVnYWN5LXRydW5rCisyMjIwMSAxMTRhOTBhNDNkYjdlOWU4MDdiZmQ0MTUyNDgxZmNmODY0YjMxNmNlIGxlZ2FjeS10cnVuaworMjIyMDIgODA1MDkwY2UzMjhhMDAxN2M4ZWUwOTI5NzBjNzkxYWUyNGZhMmNhNCBsZWdhY3ktdHJ1bmsKKzIyMjAzIDkwNTllN2MxZDhiMDE4YjdkMTcxNWY3ZTVkODIxZjU2NjFlZGI0YzUgbGVnYWN5LXRydW5rCisyMjIwNCA5ZmM0YTVhYmIzNjk0M2FmZjNlMzM0ZmM3YmM5YzdjNDc3ZDFlOGJiIGxlZ2FjeS10cnVuaworMjIyMDUgYWU0M2Y5OWI0N2UxZTI3NjZiZDI5ODg2NzUzY2VlY2FmMmY2NmQyNCBsZWdhY3ktdHJ1bmsKKzIyMjA2IGEyYjM1ODdmNTkyYThmNWRkZTlkZTdjNjRkMWJjMTczZDU5MGM0OWMgbGVnYWN5LXRydW5rCisyMjIwNyA4ZWE2MGUyYjBmMjE5ZTQyMzNiZmJhNWJlYTE2ODE0MGUxMDg1N2Q4IGxlZ2FjeS10cnVuaworMjIyMDggMjhmMGVhOGQ2Mjc4MWI0YWMyYzU0ZThmYmFhY2U0OWYwMDc3YmIzMCBsZWdhY3ktdHJ1bmsKKzIyMjA5IDJhZTM3Y2ZiMTg5ZjllOWFiNDhiMjI1M2Y1ZWQ5NGM2OTI2NGM4MjAgbGVnYWN5LXRydW5rCisyMjIxMCAxOWEzYzZhZjQzNzQ0NjRlMDE3MmMxNmQ2NDk1YTRlZGFjNmM5OGJhIGxlZ2FjeS10cnVuaworMjIyMTEgYjE2ZjhkMDFjNTFlM2EzM2E4MzU4MTY1ZTVmYWU0MmRkNTZjNDhkNCBsZWdhY3ktdHJ1bmsKKzIyMjEyIGM5NDJhOTgyMWQwOTk3Mzg2YjRlNGE1YzY5ZDlmZGRmZmVlMzQwMDIgbGVnYWN5LXRydW5rCisyMjIxMyA4MTExNDIwOWVlOGVlZTg5YTYzOTYyOGRkNTkxNTk2NzNhODhjNzUyIGxlZ2FjeS10cnVuaworMjIyMTQgY2VmZGNkNjBhOGIyYjAxNjQ0Y2VjN2RmNjJlNGUxNDEzZGRiZTE5ZSBsZWdhY3ktdHJ1bmsKKzIyMjE1IGY1YjdhMWVjNGI5ZjJiMWQ0NjdkNTE2NDlhODE5YWM1MDk1ZjJlNmIgbGVnYWN5LXRydW5rCisyMjIxNiAxYmM2N2NmNTdkMGFiNmE2YjczMTYzODgwNmQ2ZDkzYjA2YTE1YWQ4IGxlZ2FjeS10cnVuaworMjIyMTcgZmUyMGQxY2ZlYzNkOWEzYzM5ZTFmYjFlMDhkNmJmY2NlNTRmNzNhNiBsZWdhY3ktdHJ1bmsKKzIyMjE4IGMxZGFhOTRjMjFkODMwZTMyZThhYzE4NWY1OWRhM2NhMzhjNTMxYzggbGVnYWN5LXRydW5rCisyMjIxOSBiYjg1Y2NiZDRmZWU1NTQzZGU5MmVmOGFlYmQ5ZjlmNDc0YzcxYzA3IGxlZ2FjeS10cnVuaworMjIyMjAgN2QyN2UzODhlYzZjOWVkMDIzNTE1OTg2YThhMTg2ZDUyZDM2Y2E4MiBsZWdhY3ktdHJ1bmsKKzIyMjIxIGVjNjc2ZTE0MDczZDdmY2ZhNTIxY2Q4ODFiZmQ0NThlNzcxNjllMjcgbGVnYWN5LXRydW5rCisyMjIyMiA1MGRhNjM3MzQxYWU1MjJmYmEyYWNiNTI1YWVjMDFmMGQ1M2VlZTM2IGxlZ2FjeS10cnVuaworMjIyMjMgMDM4NDk5NDY2NzI3MjhmMWE3YzJhYjA3ZGEyZjAyZTViZDYxZTlhNSBsZWdhY3ktdHJ1bmsKKzIyMjI0IDA3OGMxOTYxZTE3NTE0NjAwZDY1ZmE4YzUyMTJjNjRhYjE4NGQwYTUgbGVnYWN5LXRydW5rCisyMjIyNSA4MjFlMzU3MDZjMDcxNTlmNWIxMTIyMzFiZThiMzc0N2QxYzZiNzcxIGxlZ2FjeS10cnVuaworMjIyMjYgMzBhZTNhZmYwM2JkOTg0ODk5ZjVhNzEwMjk1ZTQzYzlkNTFmYjc4ZSBsZWdhY3ktdHJ1bmsKKzIyMjI3IDYwMGFjNWRiYzY2NjRmNTRiNjMxNTYzMjcyMDRiOTY0NmZlZTAwMDYgbGVnYWN5LXRydW5rCisyMjIyOCBlNTc1NGYwNDhmMGJjMzVmYmMwMGU0NWZmNTE0MmYyZDMzM2I0ZDQ3IGxlZ2FjeS10cnVuaworMjIyMjkgYmFkNDA4YzdkOWQ3ODU0MDZjZDVhOWI2ODMyNmJmOTIzZDM4MDcwNiBsZWdhY3ktdHJ1bmsKKzIyMjMwIDdiMWEwODA0MTYxZWVkODcyNDVkYmVlZmJjYjE4MTg3NzgzNjkwMDMgbGVnYWN5LXRydW5rCisyMjIzMSAwYWI4ZjkzN2ZmNjY1Yjg1OGRhZGJiOTcyOTk3MTM0OWI0ZGQ5YTg5IGxlZ2FjeS10cnVuaworMjIyMzIgMjM4NzZlMmQ4NGI2ZjFlNTEyMjUwMTBlZTVmMzU2NWMzMjliMTJjOSBsZWdhY3ktdHJ1bmsKKzIyMjMzIDYwYTc1MDAyYTc0Y2ZkMDJiNTdiNzlkYjFiZDMxZmJkZWNhZjhkMGIgbGVnYWN5LXRydW5rCisyMjIzNCA5ODMxNWYwZTFkMjZkNzQyN2Y2N2I2MDFlNjVlNDhkMmVlMmExOWIwIGxlZ2FjeS10cnVuaworMjIyMzUgNmI4YjY1ZmNjYjAzZDlmMWZjODM2YjFmYTE4MTk2ZjU4ZTllNjk5YSBsZWdhY3ktdHJ1bmsKKzIyMjM2IDI2M2RjYWYwMGVlZGNlMGNmMmI2Y2I0ZDE5MjVkZGNjMDgxOTM3YmYgbGVnYWN5LXRydW5rCisyMjIzNyBlNGI2NzA1ZGM4NGY5MGRkMTg1MDA1MjU4N2FmODQzZTY5NTdkNTZjIGxlZ2FjeS10cnVuaworMjIyMzggOWU1NzhmY2I4ZGRhYjczZmQxMzBjYzJhZTIwOTc2N2I3OWFkOWQwYiBsZWdhY3ktdHJ1bmsKKzIyMjM5IGQzMjY4ZDYyZTQ2MjIxZDI2ZGRmOGQ5NzdjODEyYTlkMTAwNTRjNTggbGVnYWN5LXRydW5rCisyMjI0MCBkOTE1YTBlZGIyZWEzMTExZDczNmFkMjBkYWE3YzMyMWQxMzg4ZWFlIGxlZ2FjeS10cnVuaworMjIyNDEgYjE1MzA3ZDI5YmU3YmM0ZmRlYzg4MzY0MmIxYmU0ZmYzMjYwMDVlMyBsZWdhY3ktdHJ1bmsKKzIyMjQyIGMxNzI5Y2RjMDczNDBjZTYyMGQ0YmU4ZGU3MmQyODBmYTdhZmJkMzggbGVnYWN5LXRydW5rCisyMjI0MyAzYTdkNjdlZTEwMTEzZThmYjI1NmRjNDcxOTFkNGViMjcyNzg0M2M5IGxlZ2FjeS10cnVuaworMjIyNDQgODAzYTdhMTQ0OGIyZDFmYWZhMTU0MDA3OTMyZGU4NTA3NjcwYTczZiBsZWdhY3ktdHJ1bmsKKzIyMjQ1IDJkMGEwNGUyNzU4MWU4YWRiZGNmMWEwNDllNTAzYzBhZjQ1OTI4YzUgbGVnYWN5LXRydW5rCisyMjI0NiBmNjZjY2YyYzYzZWIzYTkzZTAyYWRmYzkwYmJjNDQ4ZTg3NzJjZGU1IGxlZ2FjeS10cnVuaworMjIyNDcgNGRmNzJlYTc4YWU4MDYyODBjMmU3Yzc2OTI0ZmZjNGQyMTFkM2NkYyBsZWdhY3ktdHJ1bmsKKzIyMjQ4IDlhODhlNTBiZjExNDU2ZTE4ZTVlMDA0MGRkYmMwZGNiYjA5ZGEyMGMgbGVnYWN5LXRydW5rCisyMjI0OSBhZDJiODA3NTVkMmQ0YzZiZGJlNDcwYmY5ODdkMmE2YTJhN2I1YmZhIGxlZ2FjeS10cnVuaworMjIyNTAgOGQ0N2EyMWQ5NWUwNDIwN2NjNzRiOTU0OGVmMjA4MzllZjMzZTM3ZCBsZWdhY3ktdHJ1bmsKKzIyMjUxIDhlNjBmMzAwMzdhMWZjZjk4ZDg1NmEyM2E1ZTE4ZmIyODFlNjRkNDEgbGVnYWN5LXRydW5rCisyMjI1MiA3NDU3NzRkYmVkNThlNzVmOGJhZDYyMmFmZmI4NDY3Y2JmNTg3OGU0IGxlZ2FjeS10cnVuaworMjIyNTMgN2RiNWI1NDIzY2NmOTkwM2RjMWIyZmQzZjVjODMxNjc2ZmIzN2RjYyBsZWdhY3ktdHJ1bmsKKzIyMjU0IDM1MDUwZDE4OGE2YWMxYzFjNDlmZDdmOWM0Nzk1NGM3ZmZlOTk0NGUgbGVnYWN5LXRydW5rCisyMjI1NSBlMjgyZDZiMmI3NThlNjRmMzRkMjUyMjdjYzU0OTUxZDdjMmViODk1IGxlZ2FjeS10cnVuaworMjIyNTYgMjhiNjQzYmFkNzRkMmI2ODUwN2VjM2VhNjZiMmNmMzc0MzgyMjNjMSBsZWdhY3ktdHJ1bmsKKzIyMjU3IDBjNWU1MTY5NGIwZjdlZjRkZmY2NDA3YTMxNmQ1YTI5ZWM1ODM2OGQgbGVnYWN5LXRydW5rCisyMjI1OCBmMjA3MjdjYzNkMGYyZjNiZjEyNGRhZTE4OGYwYjlhYzVmMjM5MTc4IGxlZ2FjeS10cnVuaworMjIyNTkgMzk2OWZjYmY5NTAwODZmNGU2NzJlMDhmN2E1MTZmYmU1YTY0YmZmYSBsZWdhY3ktdHJ1bmsKKzIyMjYwIDJiYjI0MmRjNjlkOGU0OWE3NmRiYzAxNGEwYWRiMjdlZmQ2MmMxNjUgbGVnYWN5LXRydW5rCisyMjI2MSAxMWJiYTMwZTljMjg0MGUwNDMxZTQ1Zjc2YjNkN2IxYjUzZjA4NmE0IGxlZ2FjeS10cnVuaworMjIyNjIgYzkwZjAwMzYxMDlkNGJhYTcxYWM2MjFmMGI3ZTEwODEwNDJhOGE1MyBsZWdhY3ktdHJ1bmsKKzIyMjYzIGEzMDc3Zjk2ZDQ3ODk1OWYyZDE0ZTVjZmM5MWMwYmJiMjgxN2M2NDggbGVnYWN5LXRydW5rCisyMjI2NCA2NWZlNmIwNzI0N2IwMDcwN2I1Yzg5NGE0N2E4NzI5OGQyODMwYTA3IGxlZ2FjeS10cnVuaworMjIyNjUgZjk0OTQxMzViNTc5MDk1ZDBiY2JkMmVkN2I4NjZhZDFjOTdlNDM1OSBsZWdhY3ktdHJ1bmsKKzIyMjY2IGM5Nzk2MjVmZWI0OTY4OTFlNTQyOTdmZjY2OTk3MjQwNTFiYzUzNjEgbGVnYWN5LXRydW5rCisyMjI2NyA4YmQwNmUzMjQ5YmI1ZTBjMWI5OGEwODRhZWI4YjE4ZjQ0MjY2NzZkIGxlZ2FjeS10cnVuaworMjIyNjggZjUxYjEzYmY1ZDU0ZjlmMmE4ZTBkYWE0MGVhNGUwZDliYTQzZmNiZSBsZWdhY3ktdHJ1bmsKKzIyMjY5IGU0MjYyMzBlYTU3MzFjOWYxNjExNTYyYTJlOWY5ZjFlZWRkYmNkNWMgbGVnYWN5LXRydW5rCisyMjI3MCA5Y2M2N2FhZmVjNmMxODgwMDJiZjk0ZGFkZTk4ODc5M2U3ZGEzNjFjIGxlZ2FjeS10cnVuaworMjIyNzEgZTU3YTQ2MTQ0NjllNmY0Y2IwMzdiY2M5OTdjMTk0ODYyNjU2OGM3YiBsZWdhY3ktdHJ1bmsKKzIyMjcyIGFiMmY4MDk1YzRmY2M2ZDAyYjgzYTQ5YTliYjU1MWM5MmNlYzQ5ODUgbGVnYWN5LXRydW5rCisyMjI3MyBhMWI0ZjNhMWVlMDc5NjU1Y2JlYjVjYmE5Mzg0Y2JlMDU4NDE2Mjc5IGxlZ2FjeS10cnVuaworMjIyNzQgZDc5ODY1YzBmODA0NTg5ZDhiN2JhMWNjZmQzMjVlMGUwYjhhM2M5OSBsZWdhY3ktdHJ1bmsKKzIyMjc1IGQwMDgwMmM3NGJhNGRjNDE5MDI0MWUzMDQ0ZmQwNWI5ODI5NTM1ZTEgbGVnYWN5LXRydW5rCisyMjI3NiBiNjJjODBkNThkMWVjM2JlNWQwNzc3N2I0NWUzZTg2YWVmNzdhODk0IGxlZ2FjeS10cnVuaworMjIyNzcgMzlhNzNjNjc3M2YxMmVkOTliYmIwZGI2ZTkxOGM4MTlmN2I3MGU3YiBsZWdhY3ktdHJ1bmsKKzIyMjc4IDc2NDkyM2Q5ODVhNzY4MTRlNGE3YzkyYmU5NGQ3ZmNkM2UzZDRmZjMgbGVnYWN5LXRydW5rCisyMjI3OSAzMTBhOTE3MGFhZDQ3NmRhZTEyZDZjNDk4ZjAzZGU1ZWE0NmQ0MzRlIGxlZ2FjeS10cnVuaworMjIyODAgZWZkZGNmNzE5ZmYyZWZjNzJhMjVmZDcxNGQ3ZDUzMThjMWFmOTA3NCBsZWdhY3ktdHJ1bmsKKzIyMjgxIDk0Y2E4ZWJhN2U0ZjA5N2JhMTYyMGQyNDVlZTY4OGYzNjJkMDA3NDQgbGVnYWN5LXRydW5rCisyMjI4MiBlMmU1ODlmZWFkMzBmMWFkOGZlNzRjMjE3ZDAzNWJkNzk2ZGM2MDg1IGxlZ2FjeS10cnVuaworMjIyODMgZjc1MTI1ZWFkMGEyM2I5NjM0ODA2YWFjMWU4NmJjNWI2MGM5MDVjMCBsZWdhY3ktdHJ1bmsKKzIyMjg0IGMzZThmNDdmZTdjODRkZjU1YzZjNzMzMjczMzVlMDg1Y2QzNDQ2YzAgbGVnYWN5LXRydW5rCisyMjI4NSAwYTljZTgxZGUzOTk5MTZhNzFjYWNjNGI5OWMzMzZkMGFlNWE1ZmM1IGxlZ2FjeS10cnVuaworMjIyODYgY2I4ZmRjZTllNjVhNmQyOWM5OTlhNTZiM2UxOGViOGQzYjFkM2JlYyBsZWdhY3ktdHJ1bmsKKzIyMjg3IDI3YjRkYmQ0MjhmZTdkNWIwMDY2ZTliY2NmOGU3ZmMxOTVlYzMyMGIgbGVnYWN5LXRydW5rCisyMjI4OCAzNmNhMzc2ZTU4NjQ2NWVkZTA4OGY4NzYxMTVjZDA0MWNkYTFkYWNjIGxlZ2FjeS10cnVuaworMjIyODkgODhkMTI0Yzc0NzY2MDZmNmQyYzMyMjBmYmM1MTgwZWFjYzY5Mzk5ZiBsZWdhY3ktdHJ1bmsKKzIyMjkwIDVjMjdmMGU0ZjUwZjczNmVmODVlNjE2N2E3ZTcxYzAwOWVlNGIxNGMgbGVnYWN5LXRydW5rCisyMjI5MSA5Zjc4NTA3M2U0OGJkZjNjNDlkZjQzYTJiY2RhNzQ2YTAzNGVlYTUwIGxlZ2FjeS10cnVuaworMjIyOTIgNmU5NThkNWU5ODhiZDA1YzM0NmM3MzUyZDUzMDdkOTM4ZDAwOGFlOSBsZWdhY3ktdHJ1bmsKKzIyMjkzIGYzZTI3OGJjNDM5ZTI3MDhhMWFkMDc0MjJjOWMyMGM2MDJlNGU5ZjAgbGVnYWN5LXRydW5rCisyMjI5NCA5NmViZjJiODg2Zjc2ODI5YjRmOTc5YTk3NjNhODFjY2FiYWJjMzQyIGxlZ2FjeS10cnVuaworMjIyOTUgMTk2MGNlZWMxYTAwYmE1NjIzOTE0YTBhZjQzMGNlMjNjMGY4ODZkNiBsZWdhY3ktdHJ1bmsKKzIyMjk2IGM0YjMxYmU3ZTA4MGI5NWJjOTZlZTFiMTlhOWEwZWQ4NTQ4ZTQ3NGQgbGVnYWN5LXRydW5rCisyMjI5NyBlNDExYmZiOWRiNTc2NGFiYjQ1ZTM3NWVhODM1Nzc0ZmI0MzJkZWVmIGxlZ2FjeS10cnVuaworMjIyOTggNmZhZWQ2MTViMDU4ZGZjMDJhMjlhNjViMzBiZTFhZDRlZGI4ZDczNiBsZWdhY3ktdHJ1bmsKKzIyMjk5IGU3OWZkMzkzNGY2MTAyN2ZmMDQ0OTNhZWE5ZDVkNzViOGZhNmFiY2EgbGVnYWN5LXRydW5rCisyMjMwMCA5N2RlODY4YWQwZjQwMjg0M2M1NmMxMTU2Nzg5ZmIxZjA2ZTRkMzk0IGxlZ2FjeS10cnVuaworMjIzMDEgOGViZjcxZTFlZDI5OGVhOTIxYjY4MjFjYWI2NWU5ODJjMjZjOTgzMiBsZWdhY3ktdHJ1bmsKKzIyMzAyIDExYTk3NjdlNWQ4YTUzZjI1ZTRjMTU1N2JjOGEzMTc3NjhmMGIzMjUgbGVnYWN5LXRydW5rCisyMjMwMyA0NWNjZjNiODg5YjUwMzY4ZGQwMTVmYTkwYWFjNzc3OTAzYjIwZDQ5IGxlZ2FjeS10cnVuaworMjIzMDQgOWU2Zjc4MDRlZjE0NWRkOGMzNzU2M2Y1N2IzM2E2MjgxNDc5YzI2NiBsZWdhY3ktdHJ1bmsKKzIyMzA1IGM5NWYwYTEyYjUxYTU5ZDA2YTc1MWJmNzYwOWQwYTA3ZTBmNzZjNDEgbGVnYWN5LXRydW5rCisyMjMwNiBkZTVkN2E5NDI4ZWY5MGNiN2YzOTRhYTUxNjY1MzFiMWIzNDhlMThmIGxlZ2FjeS10cnVuaworMjIzMDcgYzIzODc0NWUwYWFlNmMwNjZjZTIyMDgzOTUyMjlmYTc3ZjgyN2M2OSBsZWdhY3ktdHJ1bmsKKzIyMzA4IDYzNTBiYmFhNjMyYTc1NWQ4MzljM2Q2NmNhMGQ4NDRmZjEwNWRmOWUgbGVnYWN5LXRydW5rCisyMjMwOSA5ZWM1NjExY2ZlOWMwMzMwMzQzMmJhNzU5MGM5YTEzZDFmZmQyZTA1IGxlZ2FjeS10cnVuaworMjIzMTAgMzQyMGM5ZTZhZjExMjllNWJhNjQ1ODBmN2NkNzE5YjE2NDY0YTA5YSBsZWdhY3ktdHJ1bmsKKzIyMzExIDg3NWFjOGU5MzU0MjRiZDZiMDM1MzI4NDE0YjE3MmRjYmJmODgxYTggbGVnYWN5LXRydW5rCisyMjMxMiBlZWE4ZGZiYmVlODYwMjkwZjc4MzFmYjllMmE3ZTdlNmI0MDc2ODQwIGxlZ2FjeS10cnVuaworMjIzMTMgMTBlYzM5Njg0MjhkYzgzYzg1YzIxMWRmNjAwM2FkYzg0YTgyODFjNiBsZWdhY3ktdHJ1bmsKKzIyMzE0IDEzMWEwMWI2ZjZjNzE0ZTU5MThiZWVlNWQ1MGE4OGMwNmQ3MjY4NjQgbGVnYWN5LXRydW5rCisyMjMxNSBiNzk4NGM5YmJmMmNkZTAzOGI0M2EwMDZhNWM1NzBiYzBhYTc1N2FhIGxlZ2FjeS10cnVuaworMjIzMTYgMzczY2M1OTQxNTkwMGI0NGI1OWJlMjczNmNhMDc0NTNmMGNlMzQxYiBsZWdhY3ktdHJ1bmsKKzIyMzE3IDAyMDFiYjVlM2I4MzZiMzdiNmZhNWNjNGI3Y2ZjY2NmYWJjYTI4ZGYgbGVnYWN5LXRydW5rCisyMjMxOCA2YmE0NDE1MDcyMjA0YTYxYmMyN2IxOGUyOWNjZWI3MDBiOTQ0Y2I5IGxlZ2FjeS10cnVuaworMjIzMTkgYjU1NDc4YmQ5MTY1YzRmZTM5ZjQyNjYyZjdmODQyOGVhMTllYTQ4YyBsZWdhY3ktdHJ1bmsKKzIyMzIwIGIzNTUzNzZkMDczMTI3OGFlYzVmYWQxZTkzOTkyYmE4Nzg5N2Q5MzIgbGVnYWN5LXRydW5rCisyMjMyMSA3ODI2Y2MzN2EyMzRiOGIxMGJmYTVlNWFkODU5NzhmNjNjMzk5MTZhIGxlZ2FjeS10cnVuaworMjIzMjIgMTc1MjViNmM1MzJjNTkyNGU2MWY4MmMxYzM3MTRjNTk3MWJlOTc4YSBsZWdhY3ktdHJ1bmsKKzIyMzIzIDEzZDBmMzRiNmExNjA5OTlmZWMxMWJmNzUxOWY4OTY0MDA3NzcwNDIgbGVnYWN5LXRydW5rCisyMjMyNCA4Y2JmOTg0YzljMTNmNDc1YTZjMDhmMGE3OTY0ZjgwNGM1ODk0NWJmIGxlZ2FjeS10cnVuaworMjIzMjUgOTEyOTk0MThiNzJkYzlhOGJmY2IyZTYxMjYxMmIyZTcwNTE1Mjk5YyBsZWdhY3ktdHJ1bmsKKzIyMzI2IDYwMGE5YTJiN2ExODMxMzBmMGI2NGZkZTJjMGYxMmVjY2FiZThkNmMgbGVnYWN5LXRydW5rCisyMjMyNyA5NTUxNWM2YjY5NGFiNWNmYWRkYzY1ZTRlNTMyMjg3YzI4MDBkZDU4IHJlbGVhc2UyMS1tYWludAorMjIzMjggNzdlNDA1ZjNhOTQyYTkxN2ZmMWU0NThjNjEwNzNhYjFmOGU5ODFmOSBsZWdhY3ktdHJ1bmsKKzIyMzI5IDY3MjliZjMwZDNhZTViMThkZjY1NjUyNmU1MTQwMzRlODI0NGE3ZmYgbGVnYWN5LXRydW5rCisyMjMzMCBlMDg0N2JhMWQ2ZjRlYjA2YTNlODY4MTQ3NGY0YWE4MWQ4YzQzNDhmIGxlZ2FjeS10cnVuaworMjIzMzEgYWY0ODIwNTVkNWNlNDkwYTBkY2NiZGY2YmNkNTMxMDBjNjYwZTQ3MyBsZWdhY3ktdHJ1bmsKKzIyMzMyIGY4YjUxYzhjYTA4MjYzMThjNmYyODdhMDNhZWViYWU1ODRkYzk3ODkgbGVnYWN5LXRydW5rCisyMjMzMyA2N2JlM2E2OGZkZTQ5MjQxNGJhMjIzNzJlZjQzMzUwOGVhOTM5NDVmIGxlZ2FjeS10cnVuaworMjIzMzQgNzg3NTJlYWUxMzJlMWIyY2E5ZDE3MzFhYWY5Yzc1ZTMyMDFmMWEwYyBsZWdhY3ktdHJ1bmsKKzIyMzM1IDQ5MDFhOTM1NDkwZGQ4NmJiNDA3MmVhZmQxNDk2MWE1NjE3MTY3NmYgbGVnYWN5LXRydW5rCisyMjMzNiBjMzk1OWY2ZTQwNDQ3OGJkNTYzMzlhM2UxNmMwMzFhNjJhMDIxNmZkIGxlZ2FjeS10cnVuaworMjIzMzcgOTU3ZGQ2NDZiNWI3NDM0ZmQ4OWEzMDYxNzQwNzdiMzEyYjY1MjJiZCBsZWdhY3ktdHJ1bmsKKzIyMzM4IDY3Njk4ZDY4OTIwMzIwZmE4ZTIxYWVlM2VmZWZiMDE0YTZiODJhM2YgbGVnYWN5LXRydW5rCisyMjMzOSA0MGExN2Q5NTAwYThiNmVlN2YyOTRmNjNiMjQ2Y2QzMmJhYTdjNTI4IGxlZ2FjeS10cnVuaworMjIzNDAgOThiYmE5ODNiZmQzN2NmZjk5MDkyZGI3MDI0OWY0ODk0YTVjM2JhNiBsZWdhY3ktdHJ1bmsKKzIyMzQxIGQ5ODEyMTkzMGU3MDYxZjRjYmY3MjUyZjA3ZjdjNDBhZDVhNDcyOGQgbGVnYWN5LXRydW5rCisyMjM0MiAzZjhhNTZmNTJjZDYxYmJhNTVjOTgwZWJkOTRjNWU5MTQ3OWJiMDMwIGxlZ2FjeS10cnVuaworMjIzNDMgNjQ2M2NkOWRiMmZjZWVjZjU4YzJlNjhkNDM5NTkzMjA4ZDVkZTAxNSBsZWdhY3ktdHJ1bmsKKzIyMzQ0IGZiMTJlYTkyOTBiMmQyMTcyOTE2YWEzNWMzMmE3MzFjMWY5MDJlMDUgbGVnYWN5LXRydW5rCisyMjM0NSA4MTVlNzgxMjUzNTdhZjc5OGQ1ODI4NTU1ZTUxOTBlNTZlMjIyNTBjIGxlZ2FjeS10cnVuaworMjIzNDYgNGE4YWI2Nzc3M2E5YzZjNTNhNTMwNWNkZDYxOGI3MDZiNTBlNjNiOCBsZWdhY3ktdHJ1bmsKKzIyMzQ3IDhjMzc4ZjkwODZjZDczYjU0YmZiYjIxYmJkZTA2NjgwMmMwM2NkM2MgbGVnYWN5LXRydW5rCisyMjM0OCBlMDAxYTljZGU2YmFmNmM4YWNkYjZlNWEyZGU5MzdkZWQ5ZDhiZjY1IGxlZ2FjeS10cnVuaworMjIzNDkgMmQ2N2QyMzhkNGU5MThiYWJlYzFiMzRhMjYwZWMxMTVhYzJkM2QzNSBsZWdhY3ktdHJ1bmsKKzIyMzUwIDg1MjkyZDk1OWUxYjg3N2U5NTc4MzllYjUxNjVmZWMzM2I3M2RkMGEgbGVnYWN5LXRydW5rCisyMjM1MSAwOGNmZDhlOTk4MDY2Mjg0MTk5MjNjYmRiYmUwZDg3OTNkYTAxMzRhIGxlZ2FjeS10cnVuaworMjIzNTIgZjBkNTJhOGZkZTVmZThkOTkzODlkMTViMWY1MWU1NWJiNDVhMmYxZiBsZWdhY3ktdHJ1bmsKKzIyMzUzIGVkZjhkMmQxYTkwYjY5ODkzZDVhZTZiNThlMDQzZjhiYWE4YzM5ZGUgbGVnYWN5LXRydW5rCisyMjM1NCAyZjNiMTgzMDljY2U2NzhjNDZmY2RlY2I2Njg0NTRjNTY0ZjAyYjEzIGxlZ2FjeS10cnVuaworMjIzNTUgODA5YWVjNjRhNzhlYmEyZjgxMDI5YzJhYjRlOTI5YTc4YWNiMWQ4MCBsZWdhY3ktdHJ1bmsKKzIyMzU2IDQ4MWI4MWQzMDBkZjgyZTk0ZTk4MGY0NWJjMTEzOTZkZmM1NThjOWIgbGVnYWN5LXRydW5rCisyMjM1NyAzZjM0ZjcyNGYwMTQ4OWJjYmQ2MTkzZTg4YWQwNjY1YTAzY2RhZjgzIGxlZ2FjeS10cnVuaworMjIzNTggY2Q0NDI1NDM2MGI2ZWE5NGM3ZjRkMTdkYzIyMjZlY2VmMWJmNWU1MSBsZWdhY3ktdHJ1bmsKKzIyMzU5IDFlNmY0YmI2NTA2OWQyM2UyNGM2MDAzYmQ2MGFmNmI5NmI2YjkxZTEgbGVnYWN5LXRydW5rCisyMjM2MCA2NGQ0YWQ3M2E4ODc1ZTBlODE4MjEzMGQ0MGFkMDljY2JlNzk2YmNmIGxlZ2FjeS10cnVuaworMjIzNjEgN2ExZWY2NzVkOGFjZjA0NGFkMDFjYTQwOGJjNzdiYWEwNWNlNDA5MyBsZWdhY3ktdHJ1bmsKKzIyMzYyIDJmNDFjOTUyYmViMDU4ZWQzOGY2OTMzZmViZjVhMDEzZDA0NzBhNDIgbGVnYWN5LXRydW5rCisyMjM2MyA3NzY2MjhlZWE4ZjczNjc0NjBmYWQwOWQ1M2FkZDRjNjk1Zjc4NTU2IGxlZ2FjeS10cnVuaworMjIzNjQgYjc2NThlNjY1ZDJlYzdhMzk4NzRkOGZmYzc3YmExM2ExODkxZjBhMyBsZWdhY3ktdHJ1bmsKKzIyMzY1IDk3YTNkM2Q3MDI5ZjhmYjI2YjI0NDUwZGVkYzU0N2ZhZTE5ZTQ1NzIgbGVnYWN5LXRydW5rCisyMjM2NiAzNTM3MDYyYjNkYzFiZTA4MWQ0YjhlNDY4MjcxNGU0ZDVjMWZhOGZmIGxlZ2FjeS10cnVuaworMjIzNjcgOWQwMjRhZTA1ODM3Yzk0YmU4NjUzZWNkMTIzZTg2OWM2NGI4YTU0YyBsZWdhY3ktdHJ1bmsKKzIyMzY4IGQ2NGUwNTljZDE5OWRhMzhlYTEyZjY0MzdhNGMyMGRjYThiMTUxZGQgbGVnYWN5LXRydW5rCisyMjM2OSBiMDZkOWRiZGFmOGZiZTc1YmIzMTMxOGNiNTM0MGFmOTkwNDFiYWM4IGxlZ2FjeS10cnVuaworMjIzNzAgYjE2MGZhNjNmNDBjNTdhNDQxMzY4NDA0ZjUxYjVlZDFiMDNiOWExMSBsZWdhY3ktdHJ1bmsKKzIyMzcxIDVkNmIyYzE3ZWEyY2Q3YTg3MTgxMjAwNjhmMzY1YzY5OWNkYzg1MTMgbGVnYWN5LXRydW5rCisyMjM3MiAwMzllM2QyNmVhMzVjYTYxMzM4YWEyNTEwOTY5ZGU4NjM5ZmU2NzA5IGxlZ2FjeS10cnVuaworMjIzNzMgNjdmMzU0ZDQzNDdkNTgyMjgyMzZiNmFhOGRmNWY1ZWJhYzA4OGU5OCBsZWdhY3ktdHJ1bmsKKzIyMzc0IDMwODYwYmUzYWU3YmU5ZjRkZGY1ZjE3YzYwYjdkYWU1MmI0NzU0YjEgbGVnYWN5LXRydW5rCisyMjM3NSA4MDJjNGY5NDBhNGVhMzFhMDk5MzYxYjNhNmMwMDNjMjQ5YTFhMjNlIGxlZ2FjeS10cnVuaworMjIzNzYgOTY2MTA5M2QzZTJhZmZjM2Y3NjkzMDM3MGZlYzUyOTFkYTc3OTU1MCBsZWdhY3ktdHJ1bmsKKzIyMzc3IDgxZjRjZGY4Njg1NTcyMjYyYjJiOTgxZTlkNWM1NTU5YWQ5NzdlZmMgbGVnYWN5LXRydW5rCisyMjM3OCAyZjY1OTNiZjU4YWZiZjkzZmRhNDZkNmI1MDQ1YTA2NzQwZDc4MzY0IGxlZ2FjeS10cnVuaworMjIzNzkgY2IzNDZiYWVkYWQ2YzRhNDE4YmNiY2Q4MDYyMTQwYTViMWE1ZTk0ZSBsZWdhY3ktdHJ1bmsKKzIyMzgwIGYwZGIzNDU2MjFiYTdlZmNhZjJkMDI3NTNjMTE0NGI4Mjk1YjdiNjggbGVnYWN5LXRydW5rCisyMjM4MSA3MDRhZDgzNGRlMjc2OTZiZTVhNTBlOTFlZGRiZTY4NzMwNWI5YjU0IHJlbGVhc2UyMS1tYWludAorMjIzODIgYjAwMDJkN2MyMmIxZjBjZGNhOTZlYTU1MTE4MjVmYjAwM2RiZDEyMiBsZWdhY3ktdHJ1bmsKKzIyMzgzIGZmZjZjNjYyODU5ZDljMGEwOWI4ODFhN2RiYzAzYjE2MTVlYjI5NGYgbGVnYWN5LXRydW5rCisyMjM4NCA1MGY4OGVlNzFkNDVhM2Q3ZjI4MDcyMDY5YmI0MThkMzczNmRhMjhlIGxlZ2FjeS10cnVuaworMjIzODUgY2ExMmUxZTMzM2VhMTA0MDM2MDI4OTEzOWVlMzdiODg1YzQ4ZDI0NiBsZWdhY3ktdHJ1bmsKKzIyMzg2IDYzNzBhMGY5ODhmMGQzZjY1YTIxNzljOWFmNjlmNmU5MTZhYmMyMzkgbGVnYWN5LXRydW5rCisyMjM4NyBmZGUzYjBmNzJlMzg5MDJlZWNlNTc4Y2Q4YTQzNTVlMTNlNDc1NjBkIGxlZ2FjeS10cnVuaworMjIzODggMWQ0NjJiNzM3ODEwZGM4MjBkOTk3ZjJlODEzNDYzYjE1ZWJiYzU1MiBsZWdhY3ktdHJ1bmsKKzIyMzg5IGZjMzljMjJiNWE3YWQxNWI0NzQ4ZWM1ZTEwMDc4ZWRhNGQ5NmNjN2MgbGVnYWN5LXRydW5rCisyMjM5MCBiMTQ5NTFjZDI1NjczYTYwMTY2YzcwZThhNDkxNDc1NmUxYTE2YzFkIGxlZ2FjeS10cnVuaworMjIzOTIgMjk2N2NhOTZkMDdlZTdlZTA5OTdiYjY4MDgzOTE1NTc0NmM1YzlmNCBsZWdhY3ktdHJ1bmsKKzIyMzkzIDc4ZDAwZjcwMjNhMjE2ZjFiNzc1ODIxMzY4YmZlMWYwYTFmNmRhYTAgbGVnYWN5LXRydW5rCisyMjM5NCBjZGQwYzdhNDU1NzVhMjkxMWY5NWI5MGNjZjM5YjRmZmY5ZGVjOWMyIGxlZ2FjeS10cnVuaworMjIzOTUgMzBmOGI2NTRjMmU1YmZmM2NkYWYxMmE5YjE4MTAxY2Q1ZGY1YzAxNiBsZWdhY3ktdHJ1bmsKKzIyMzk2IGJjZmUzMGNkMWYwZGUxNmM5ZWQ5NTgyYzRjODcwN2RiODRlODg0ZWYgbGVnYWN5LXRydW5rCisyMjM5NyAxMTVlNDA5OWYzZDk3OWZiMGRlYjQ0YzliNmIzYjM5NmZmZjIxMGQ3IGxlZ2FjeS10cnVuaworMjIzOTggYmVlNzU1NzIxM2IyMjk5MzI5NjQ2M2Q4ODkwMzIzOWUyYzk2YzdmOSBsZWdhY3ktdHJ1bmsKKzIyMzk5IGE5N2M4MDY0YzlkODNhNDE1OGE3YWU2OTJlZDk4OGIxZjM3MTM1M2IgbGVnYWN5LXRydW5rCisyMjQwMCA2ODAyMzJmYjYxZjMwMjA3ZjFkYzdmZmQyNzRmOGQ0NjlhYTU5ZmNmIGxlZ2FjeS10cnVuaworMjI0MDEgMDk1Yzg5YTgyNWE5MGExYmY5N2Q4ODExNWIwNTU2NjA4MTNiN2FjNSBsZWdhY3ktdHJ1bmsKKzIyNDAyIDdlOWY1YzU5ZTlmMjdmMDI2NGRhMjY1NzA0NzRmOWFkMzVhZjRlZWUgbGVnYWN5LXRydW5rCisyMjQwMyA3ZTQ0ODczZGFmN2JkYzM3YmExZWZjOTNiMWYyMjMxODlkYmRjMWQ3IGxlZ2FjeS10cnVuaworMjI0MDQgMzAxYmNiMDFiNTAzNDVmMWFkNjAzNzQ5ZGY4NmI3OGFkOTRmY2EyZSBsZWdhY3ktdHJ1bmsKKzIyNDA1IDAxYTliNzgwNzE2MGIxODEwOGEzODk0MmI3ZjMxMjAzZmI2OGY3Y2MgbGVnYWN5LXRydW5rCisyMjQwNiAzYzFjOTk0OGZmNjU1N2NlZGMwY2M0MmY0Y2IyODhiNWRjOTA2YmY2IGxlZ2FjeS10cnVuaworMjI0MDcgMzgzN2RjY2QxMWNhZDM1Mjc1MDBkYTEyNGFmZjM4MGE4NDc1N2M4NSBsZWdhY3ktdHJ1bmsKKzIyNDA4IDUwZmI0NjgzYTQ2MTg2Mzc5ZmQ1N2IzMThkY2NlNzQzM2QzMTBlZmIgbGVnYWN5LXRydW5rCisyMjQwOSAyYzRjMmNhYWJjZmNkOTNiMzRiZjIzOWNkMmViNzNmZGUzNDE4ZThmIGxlZ2FjeS10cnVuaworMjI0MTAgNDdhNDVkYTAzYjA5YWM4MTI1ZmM1MDc1Y2UyNzk5NTMwOTI3N2E0MiBsZWdhY3ktdHJ1bmsKKzIyNDExIGNkMTMxMGU4N2ZlMjE1NWYzNDNjNWE1Nzg5MzhiYWE4ODVmNjc4Y2YgbGVnYWN5LXRydW5rCisyMjQxMiA2N2RjZjA0ZmE3NTQxODU0YzVhYWFlODE4Zjk2ZGY2NjY3NzcwOGZjIGxlZ2FjeS10cnVuaworMjI0MTMgYWNjMGZmYWIwNzcxYzkwMzc0MzhkZmJlOTU0Nzk4M2Q1ZDA3NDU4OSBsZWdhY3ktdHJ1bmsKKzIyNDE0IGRlMWMyZDRkNzJiYTE3N2EyYThmZTNhMDZkZmY0OTMyMTM0ZGEwNDMgbGVnYWN5LXRydW5rCisyMjQxNSBmYjE1M2UzMDYxNTI4ODZlMzQwZDViZDFkYWE0NzVlNDQ1ZWMzNzA5IGxlZ2FjeS10cnVuaworMjI0MTYgN2I1M2ZiM2JhMDExOTJiZWEwNDkzMTEzNTZhNDBjZGZhMDA2Yjc0YiBsZWdhY3ktdHJ1bmsKKzIyNDE3IDg2OTE0ODRjNWJlZjUzM2RkYTA0Y2FkYmZkNTU1MjJkMjE4MWYzZWQgbGVnYWN5LXRydW5rCisyMjQxOCBiNDg0YjIwN2U5NjQxOWU4MGM1YjNjNDYyZGIxNjQ5NTMwNTQzNmMwIGxlZ2FjeS10cnVuaworMjI0MTkgNGRkMzhkOTMwMTU3M2M5MGNjZDk0ZTg4NTJmYjJmOGQwM2M1NjNmMyBsZWdhY3ktdHJ1bmsKKzIyNDIwIGM5YTRlNmQxYmMzMGIxOThlYmZmYWYxMTA0N2IyNzI0ZTNjODUzZTQgbGVnYWN5LXRydW5rCisyMjQyMSBjMGExNmI0YzllZGI3ZTFhMDliYjZhMzMxYTU2ZGNiNmE4ZWU3MTk5IGxlZ2FjeS10cnVuaworMjI0MjIgZDM3ZTE3NjU4MDQ4ZGFiOGVkM2U5ODBlMDhjMGI4Yjc5MDZkMDI1ZSBsZWdhY3ktdHJ1bmsKKzIyNDIzIGY1MTNjNmM3ZDE2NzBiY2NlZDU5NjNhMTI1YmM4YTE3MzBjMTE1NzkgbGVnYWN5LXRydW5rCisyMjQyNCBlOGJlNDBjNzVhM2Y3MTdjN2U1NWM0YzgxZGNmYThjY2UzOTIwMGI5IGxlZ2FjeS10cnVuaworMjI0MjUgNzc2NDBjMzg4NDdiYTI1N2IzOWE5OGJjMDE1YzhiNWExYTI5Y2MzMCBsZWdhY3ktdHJ1bmsKKzIyNDI2IGQxNmEzYTVjOGE4NmIxMzBiMjlkMmNhMTBhMmVkZjFkN2ZjYjU3YTggbGVnYWN5LXRydW5rCisyMjQyNyAzNzNiNmFiYWRjNTAwZmNjOGNmY2M2NjEzNmY2MjRmYjExODgyYzdlIGxlZ2FjeS10cnVuaworMjI0MjggMjQyYWM0MjdmMGQwZjBkM2Q2ZjkxN2JiZTA5NTNmZDgxYTNhNzc1MyBsZWdhY3ktdHJ1bmsKKzIyNDI5IDNjN2FkNTAzN2FiMWJjNWEyMjNhOTQ2YzlkMzkxMTFlMjUyNGIzOGEgbGVnYWN5LXRydW5rCisyMjQzMCA0MTc4NTc5M2E4YTM3NWUwYmUxZmY4YWZjMDBmNDM5ZmJkOWY4M2NhIGxlZ2FjeS10cnVuaworMjI0MzEgY2QxYzI3ODdlYmI0YTkzMDE5NGIyYTRjM2RhYzhhNjAwMjM3Mzc1OCBsZWdhY3ktdHJ1bmsKKzIyNDMyIDZlNDZjN2NkMzc0OTBlMTQxNDQ5MGQzMGE0MjBhZDg4NTcwMjVlNTUgbGVnYWN5LXRydW5rCisyMjQzMyA3MWYwNWZkMzBlNzNkNWNiNzgyNzU0MzY1Y2M0ZWU5NDYzNGRkNzhhIGxlZ2FjeS10cnVuaworMjI0MzQgMjU1OTI2Njk4NjkyZDQ2YzkxYTEwZmE0MGQ3MGQxYzA1OGY1YTVjNyBsZWdhY3ktdHJ1bmsKKzIyNDM1IDg0YjYwMjEzMTU5YjAyMjM2ODA5MjVhZDNhOTM2OTExZGZmMDhmZTYgbGVnYWN5LXRydW5rCisyMjQzNiAwZjYxMmQ2ODdlYmNkNzc0NzRlZDkxMzIxYjc5YmMxNzFiYTAxZTVkIGxlZ2FjeS10cnVuaworMjI0MzcgNTNmMzk5NTk4Nzk5OWVjM2Y2MTI2YTQ1OWM3YjIyMjZkMmU4YzE0NiBsZWdhY3ktdHJ1bmsKKzIyNDM4IGFjYjE4YzlmYjIwZjZhNTE5MDhhYjFkZTNjY2QxNTYxMTViNTIyMzEgbGVnYWN5LXRydW5rCisyMjQzOSBlMjliYThmMWU3ZjgwYTJlNjIyNWVjNTI4MzM0N2Y1MzQwMzU5YThhIGxlZ2FjeS10cnVuaworMjI0NDAgNjU4ODVlYTc2YzM3NzE2NDE4ZGQxMmQ2Y2FkZGU5MGUxZjk0MWRhMSBsZWdhY3ktdHJ1bmsKKzIyNDQxIGNiN2ZiNTY1Yzg5Yjk0ZmM4MzFmNDlkMzNhZDNlODAwMmNiMzU3ZGMgbGVnYWN5LXRydW5rCisyMjQ0MiBjMzM2M2U0ZDZkMWQ2MGFkNGFlZWEyYWNiZmU2MzYyMzk1YTdhZDJkIGxlZ2FjeS10cnVuaworMjI0NDMgYzYxMjk0MjhlMDUzY2NhZDAxYmQ3ZTYxY2RmYmZjZDVjOGZmZGI0MyBsZWdhY3ktdHJ1bmsKKzIyNDQ0IDM4YjU5MDZmZjAzMWQzY2Y5M2MxMjY4ZDVkMDk1MTEyNGQwODFiZDggbGVnYWN5LXRydW5rCisyMjQ0NSBlMTEwY2Q0ZmMzYzYyNTBkMTYwZGYzNjI2NTNlNzU5OGQ4NzI2Mjk0IGxlZ2FjeS10cnVuaworMjI0NDYgNWI4N2VlNDQwMDBiYWEwNmI4NWI0OTNiMzhlZDk1NTdiNjJjNDZkZSBsZWdhY3ktdHJ1bmsKKzIyNDQ3IGEwOGQwZTU4NjFjY2YyNThhYjNkNDhmOTU1NjM2M2QzZjA5NTVkMzEgbGVnYWN5LXRydW5rCisyMjQ0OCBhYzZkOWM3NDI4NjQzMjUzMTZkOGY2OGY4MGRkZWI4M2ZlNWFjNjAwIGxlZ2FjeS10cnVuaworMjI0NDkgZDNkZDBmMmZiMWY0NDFhODY1NGZiYzdmOTQzMWE0ZWExZDg0M2NiMCBsZWdhY3ktdHJ1bmsKKzIyNDUwIGQ5OWMxMjQwZDBhYzNlZTk5YjRlYzQzNmQwZjVjODZmYzY1ZTE2ZjkgbGVnYWN5LXRydW5rCisyMjQ1MSA3ODhhMTYzNTFlMTg5NDM4ODY5NTJmNmZlNThlZjRiNTE2ODQxNDk4IGxlZ2FjeS10cnVuaworMjI0NTIgZmJlMjA3NGM1ZmE1YTIxOTE0MjNlOTQ4OTFiZDUzOGI0NDJjNGVhNyBsZWdhY3ktdHJ1bmsKKzIyNDUzIDNiOThjZjE2OTJkNDE1NWNmOTJmY2QxNTk0YTViNDM5NjNmNWU1ZmMgbGVnYWN5LXRydW5rCisyMjQ1NCBiZTAyNGMyNzRlMDJjZjlhMjdjNDNmZjQ4NWE4Njg2YWZjODRjZmFjIGxlZ2FjeS10cnVuaworMjI0NTUgMzg4YmNkZWU1MTI5YTNkZmFkYzVkMDU2MDE1NDY5NTk0MjhmYWQ3NyBsZWdhY3ktdHJ1bmsKKzIyNDU2IDlmODBjNzBhN2E1MWViZjcwMTIzMjY1OGZiZWQ5NTUzYjlhNmYxYmYgbGVnYWN5LXRydW5rCisyMjQ1NyAwNmY5MDI3MTQxZmY5YWI5MjI4MGRiMjMzOTNhZTJmNzQ0N2E0MGE5IGxlZ2FjeS10cnVuaworMjI0NTggMmZmNTcwMmFkYjU2ZGFiODQyOWMwMzBjNjQwM2ZiMzcyNWQ4YjNkOSBsZWdhY3ktdHJ1bmsKKzIyNDU5IDM5NTZiMjJkNWUyOTM0ZjYyZWJkNzFlMzRkNDQxYTc1NzAyZmY1ZDggbGVnYWN5LXRydW5rCisyMjQ2MCBmYmYxYWU3NjkzMDY2MDE1Y2ZmZDUzOWJiOTY5YjQ4Y2ZmNmZkZWUwIGxlZ2FjeS10cnVuaworMjI0NjEgOTY4ZDE2OTUwMWYyNzY2YWJkMGIyZTUxMzZhYTJjY2RhN2NjMWI2NSBsZWdhY3ktdHJ1bmsKKzIyNDYyIDY2MTcwMzBjNTFlM2FkODUwMzBjN2RlMWQ1MzI3NTQ0YzVkZjY3Y2UgbGVnYWN5LXRydW5rCisyMjQ2MyBhZjFjNjg5MzI0ZjUzMTZhZjY1ZTE1MDU3YWFjNWRmZWNlNjU2YWQxIGxlZ2FjeS10cnVuaworMjI0NjQgZmVkYmE4Njg2NWUyOTRjOTRiMGZjOWNlNWM4NjQwZTBkNGFhMTg1NiBsZWdhY3ktdHJ1bmsKKzIyNDY1IDFjMzliOTZkMjljMzI1ZmFkMTE1Mjk1NzhkNTBjZGFkOTIxM2UyZGEgbGVnYWN5LXRydW5rCisyMjQ2NiAxNGY3ODJiYTQwZjkxMmY3NTg4YzYwOGU2M2JkOTI1Y2VlNzk1MDEwIGxlZ2FjeS10cnVuaworMjI0NjcgMDQ2NDNhMTg0NTQ2YTExNjdmOWZiZmNmZTk0NmRkMjAwZThkYzIyYyBsZWdhY3ktdHJ1bmsKKzIyNDY4IDQ5ZmQ3MjQzNTFmNGE4NTRiN2IyMmIyZjI1ZTI1YThjMTVjY2UyMTQgbGVnYWN5LXRydW5rCisyMjQ2OSBjYTdkYmFjYmJlMTg2NmI2ZGE3NGQ3MDdiZDU5MGM3YjdiNTEzNTUyIGxlZ2FjeS10cnVuaworMjI0NzAgYzNjODdjZTRhZmRjYTZiMzc4YmViM2QxYmZjNDA4NDhkZjAwZTc4ZiBsZWdhY3ktdHJ1bmsKKzIyNDcxIDc4NjFlZTk1MWE5MWM0ZTlmNWZmNzE0MDJjMjRjMmVlNGRjZDI0NDYgbGVnYWN5LXRydW5rCisyMjQ3MiBlYjVlMmI2ODM1NGY1ZGViZjIzZDMwMjBmOGFlYzI0MzRlNzBkZDkyIGxlZ2FjeS10cnVuaworMjI0NzMgYmQ4Y2I2NjViNWUxMDhiMmY5NGNmMDRkNDhjNWVmNmYyNzM0MzA0YyBsZWdhY3ktdHJ1bmsKKzIyNDc0IGU5YTk3YjAyODg5YjA4MGY4M2M5ZGY0OTM5ZTc0Y2U5OWM4MWRiNGQgbGVnYWN5LXRydW5rCisyMjQ3NSBhOWZmMGY2ZmYyNjBlYTQxMzYxMTk5YWI4ZDY5MmI2NGVjODM0Yjc2IGxlZ2FjeS10cnVuaworMjI0NzYgZGQ4MmNkNDg2ZDhhMWQxOWEyNDc4Y2YwMWMwZGM3MGE4NTdmMTY5YyBsZWdhY3ktdHJ1bmsKKzIyNDc3IDM1YzY1ZDlhYTg2YTI2Zjg3OWJiZWY2MGY4ZDdjOWQ5MTg2ZmMxMzEgbGVnYWN5LXRydW5rCisyMjQ3OCBiNjUzMTIyMzhjMGI2NjRhYWQzMmRlYzhlYWY4N2VmYjI3NTJhMmU5IGxlZ2FjeS10cnVuaworMjI0NzkgMWNlNWE5MGZiMTkyYjg0Njk4MmNmYWYyNzQ1ODIwOWFiODhjZWFkMSBsZWdhY3ktdHJ1bmsKKzIyNDgwIGQ4OTliZmJmZmJiYTE3OTQ3NTdjZjAxNzZmM2Q1NTIzZjYzMTM4N2QgbGVnYWN5LXRydW5rCisyMjQ4MSBjMzRiYmYxNzM4NWU0ZDRkMGM4NWM0NjQzNzYzYWNjMzRkMjhmN2ZhIGxlZ2FjeS10cnVuaworMjI0ODIgNTUwMTk1OGVkYzM2MWQxNGM4MWUwZGQ3MjAzMjhlNWI0ZWQ2NmRmNiBsZWdhY3ktdHJ1bmsKKzIyNDgzIDRjOGQ3ODY4YThlNzYxMDAzNTNjNGE2NzMwZDVjZDUyMDNjNTNmMTIgbGVnYWN5LXRydW5rCisyMjQ4NCA5ZmI0OWNlMjQwZDE5ZWJlNGVjZDkxY2EwZWUwZDYxMmUyYzZhMzJjIGxlZ2FjeS10cnVuaworMjI0ODUgYjk1MDJkMWEyN2E3YTU5NzhhOGJhY2Y3MWNhZGVkZTJlMzllNDhlZCBsZWdhY3ktdHJ1bmsKKzIyNDg2IDFhZmMzMTE2YzYwMjM1YmEzMGRlOTJmZmRkZTQyNmYzZDVkZmQ4ZTQgbGVnYWN5LXRydW5rCisyMjQ4NyAxYmE5ZTM2ODRkMzU0ODJiNzNhMzc0ZmY1NzQyYjU2NGNlMzZkZGZiIGxlZ2FjeS10cnVuaworMjI0ODggZjEwYjY4ZWNlZWZjMWFhZmUyOTQ1ZWViOWYzMWUzM2M1MzhhNjg5YSBsZWdhY3ktdHJ1bmsKKzIyNDg5IGJlODVmNjg2YWQ5N2JiYmUyMGZjNGUwNWViY2YzYjI2ZTYwM2UwZDQgbGVnYWN5LXRydW5rCisyMjQ5MCA2ZjZhY2JmNzg5Mzk0M2Y4MzRiNWM0MjNjOWUzOTA4MWIyMGY3OTE3IGxlZ2FjeS10cnVuaworMjI0OTEgYjg2NWNkNWMxOTI1MDM2ZGFlYWIzZDhiMmFkZmMzYjZhMzVlNTBjNiBsZWdhY3ktdHJ1bmsKKzIyNDkyIGE1YTkzMmMyMTU4MzBlMDk1MDU3ZDZjMjY2NTllY2YyMjczZTUxZGYgbGVnYWN5LXRydW5rCisyMjQ5MyBiYThjNjJlNWY5MmQ2OWRmYTMxY2JlYjAyZDhmZmM1ZDZiNjRhYzkwIGxlZ2FjeS10cnVuaworMjI0OTQgMTRlNjA1MWQ1ZjFmMDdhOGI0NDBhMjdjYzA1M2NlODM0YWMwYTRiYyBsZWdhY3ktdHJ1bmsKKzIyNDk1IDNhYTA2MDY0NDkwMzE2NmU5MWQ3NWFjN2ExMjQzYWE0MWY4ZTg5NDkgbGVnYWN5LXRydW5rCisyMjQ5NiA1YWQ3MWZkYjIwNWIzNTY3YWIyYjBiMDc3NGNjYTZiZmYxOWEyMmY5IGxlZ2FjeS10cnVuaworMjI0OTcgNWMyYmY2Y2RlMTIzMDNiMWMyYWMyMjNhOWIyN2EyN2YwNjJhOGRkNyBsZWdhY3ktdHJ1bmsKKzIyNDk4IGY3YTIxMzBhMjU2MzY3NzQ0ZGU3Mzg0M2RkZjY5MjhkN2Y5NTg3MDggbGVnYWN5LXRydW5rCisyMjQ5OSAzNzU1OGU4NjVlYWQ1NGMyNzljOTYxNTdkZGE1NTdiMjU2YzQ3YmFhIGxlZ2FjeS10cnVuaworMjI1MDAgYzNkNTNkMzRhYjQ0ZGViYzY5NGIzMGIzNmRlM2ViOTZkMDVkZDhjMiBsZWdhY3ktdHJ1bmsKKzIyNTAxIDFlODdkYjBjYTI0ODJlMWM4ZTUzMTM2YzdjNjk3MjJlODcwNDIxYmMgbGVnYWN5LXRydW5rCisyMjUwMiAxNDU2ZWM3MzUwODcyZDY3YTk1MmI5NTJmMGU1OTRkMjY3Njk1ZGMyIGxlZ2FjeS10cnVuaworMjI1MDMgMTU3YmJiODk2MTk4Yjk4YzFmZjljOWEzNTMxY2I1NjgzMDQ2NGE3OSBsZWdhY3ktdHJ1bmsKKzIyNTA0IDEwNjkwOTBiMTI0ZWY4N2YzZTVjZDNmMzdlODc5OWM1NzY5OGYwNTUgbGVnYWN5LXRydW5rCisyMjUwNSAzZGRiMjEwOTMyY2E2ZGQxYzhjMzRmNjUyM2FlMjJlMWM3ODAwOWYyIGxlZ2FjeS10cnVuaworMjI1MDYgNmM0YTg3MzA2NjNhZGUwZThlMzg0N2U5ODk5NWVkMDE5OTMyYTFjNSBsZWdhY3ktdHJ1bmsKKzIyNTA3IDYzMDMwMjY2NjQ2NjJiOWZkMGI5NDNlN2Y1ZTg3ODNjODc2N2IxOTEgbGVnYWN5LXRydW5rCisyMjUwOCA4MTQ0MGRkMzI2YmJlMTc1MmVhZmQxMDY4NWRlODVmMjI5ZWI5MDlkIGxlZ2FjeS10cnVuaworMjI1MDkgYjk3MDE1MzhmODI3NmE2OTRjNWZhYjVhN2M1ZjZjZDlkZjU4NDI3NiBsZWdhY3ktdHJ1bmsKKzIyNTEwIGVkOWFiYWI5NzEwNzhjZGFmYjExZDhiY2U4ZmI3MTJjNDY5YWE3MmIgbGVnYWN5LXRydW5rCisyMjUxMSBjZWE5NDU3NjRkYjIxOWZkOTRiNjY5OWJjODYyZDdhMjZlMzI0NjA4IGxlZ2FjeS10cnVuaworMjI1MTIgMTE5MDNlYjAwOWY2NzAyMWM5YmQ2NDM5ZjVhNTQ2NmUxYzg2ZGVhYyBsZWdhY3ktdHJ1bmsKKzIyNTEzIGZhNzg2ZjhhNzU3MGE1YjNjMjYyODliMDIzZThhYWY1MmIxODBjYWMgbGVnYWN5LXRydW5rCisyMjUxNCBhN2JiYWM2OWM4ZWYyMjY2MDY3ZTY5MThjZWVjMWZlMmJlNWMyNmY1IGxlZ2FjeS10cnVuaworMjI1MTUgYjBkMmRlOGNlMjRmNGMyNTczMzRjYmQ2NmMyNjU3MjQxMTgzZGU4NyBsZWdhY3ktdHJ1bmsKKzIyNTE2IGFmMDAxOGJiOGNmYzMxOWVjYmI5NjEzMjMyNzc1YWExN2E2YjIwMjYgbGVnYWN5LXRydW5rCisyMjUxNyAwYzJiNDM5MWRmN2RkMGM0ZTVhZGVmYjQ3YTViMzYwOTc2ODA5MTExIGxlZ2FjeS10cnVuaworMjI1MTggNmNiOWY1MzhkY2U0OTg3ZDBmMmJkYWQzMzZkY2ZiODlkMzM0NjFkOSBsZWdhY3ktdHJ1bmsKKzIyNTE5IGZjNzYxNzMxMjE4MjgzZjdiMWI2ZTE3NjU4OTI3YzgwOWI2NjE3NWUgbGVnYWN5LXRydW5rCisyMjUyMCBhNjNhNjkzMzU1NGY5NTBkODJlMzkxNGJmMmZiYjQ5NmU0ZDAwOGQwIGxlZ2FjeS10cnVuaworMjI1MjEgNmY2MmY1YTYyYTJjNmJkMDZhOTFlZDc0YWE5MzkwOTBkZGJiZjAyMiBsZWdhY3ktdHJ1bmsKKzIyNTIyIDJkODhkZWE0NjQxNzdjYTU3YzI3MmRkZWYzYzY0YTEwNjhkYmMzZTMgbGVnYWN5LXRydW5rCisyMjUyMyAxZjRlYjhjOTI1ZDUxOGU1OWJjYTgwMjZhNDI0MmJhNDFlZTQ0YTU0IGxlZ2FjeS10cnVuaworMjI1MjQgZjdkYzIxY2IxNjYxZGMzNzhiMjM5MzQ1ZDhkMjFiYzQ1YjM4MzMxMCBsZWdhY3ktdHJ1bmsKKzIyNTI1IDNlYTI5MDllMDUxZmZiNjY3NzE4ZDUxNDc2ZTNjN2I4Mzk4NTllMzMgbGVnYWN5LXRydW5rCisyMjUyNiBjYmFhNTQ1Yzc4OGRhYTk3OTIxMDQ2MDY4MTU0ZjJiN2ZiYjgxODdhIGxlZ2FjeS10cnVuaworMjI1MjcgZDM3MGE1OGZiN2ZkOGYzZGQwNTkyZmFkYTRhZDM0NjAzM2E3ZTc4ZCBsZWdhY3ktdHJ1bmsKKzIyNTI4IDc5NTdiM2Y1ZDQ2MmQ3ZGQwMTVhMzBhY2ZlMzU3MzQ2YjZhYzk3YmIgbGVnYWN5LXRydW5rCisyMjUyOSA0MjI0NmI4YzU4YmJhODk2MGIzY2I3NDQyZDA3MmQ4MDQ1NjdkODYxIGxlZ2FjeS10cnVuaworMjI1MzAgMWZlYzAzMDEyMzQ2Nzg5NTRjMDNjMmQ2ODM1ZjdhNjJkYTYyZTk3YyBsZWdhY3ktdHJ1bmsKKzIyNTMxIDI2MWUyOGU3ZmEwMWZhYTEyNWUzNGJiMmI0N2MwZDI5ZjlkNjQwZjAgbGVnYWN5LXRydW5rCisyMjUzMiBiNTI1ZTYwMmY2YzJhNDI4NTk2NDljZGM5NzQxOGYzZjJmNmVlMjRiIGxlZ2FjeS10cnVuaworMjI1MzMgZGI0ODhjYzlmMjU5ODg2ZTY2ZTcxZDg1MWVlNjNjMzk4Mjc2MGI5ZiBsZWdhY3ktdHJ1bmsKKzIyNTM0IGVmZGNmNDJmODg1MjcyZWJkZDhhOTFhMmJmYjA3ODU3Mjg4NmI5NTUgbGVnYWN5LXRydW5rCisyMjUzNSA3M2Y2ODVkYjhjMGM3OTI5N2Y4Yjc1ZjJjYTI0MmM2NTI5ZmZkYjIyIGxlZ2FjeS10cnVuaworMjI1MzYgYjQxNjM4YTExZTRlNDM5ZWZkYmVmYjAwNWFhY2Y1ZDI4ZWUyODdhOCBsZWdhY3ktdHJ1bmsKKzIyNTM3IGY5M2MxNmMxMGE1NWMwZTlkZGEzNzMwYmRjYTNhYTA2YTJjYjgxMzEgbGVnYWN5LXRydW5rCisyMjUzOCBlYTljZmMzOGUxMWJkODBlMTg3Y2Q5MTMyNmFkMzEzNDkxMGE3MGYyIGxlZ2FjeS10cnVuaworMjI1MzkgYmE4N2MyNDRmYjU5YmU2NTRiN2ZiYWRlZDcxNjY3YTFjMDc5ZWEzMyBsZWdhY3ktdHJ1bmsKKzIyNTQwIDA2MTNmYTU3YWU2ZDljNzM1NGZlZjg0YjVlMjU2ODAwMmNmMDZhY2EgbGVnYWN5LXRydW5rCisyMjU0MSAwNWM5YTM1ZjIxNGYyOGI0OWY1NzVmZWQ3Y2UwZDczMDIzNGI2MGMxIGxlZ2FjeS10cnVuaworMjI1NDIgNjAyNjRkMWUxMDBlOWQ2NGU5MjFmNDRiOTI2ZWRmZmM0NDMwNDk1OCBsZWdhY3ktdHJ1bmsKKzIyNTQzIGQ2YjA4NGMyNWJhOGJkMTE3NGYwZjQyYjllMjkwOGU5MmU1MmJiZTcgbGVnYWN5LXRydW5rCisyMjU0NCBlYmZiNzRjZTdlNTY4MTM0Nzc0OTIxMmIyNzU4MDBiMTg3N2NkNDYzIGxlZ2FjeS10cnVuaworMjI1NDUgYjExMTJhMmMzNTRmZjNiNGQ1ZjQ5MDM2OGEzZGRhOTRhZTQ3Mzg0NiBsZWdhY3ktdHJ1bmsKKzIyNTQ2IDc4NmFjZWQ5MzdjNTM4OWIxYzVmOTE4NTExN2MxZWYxYTllZjkwYWIgbGVnYWN5LXRydW5rCisyMjU0NyA2MTMwZGVlYjRjYzYxNWI0YzAyYzBlNjUxZTRiMDhmYzNmNmUwNWVmIGxlZ2FjeS10cnVuaworMjI1NDggODZjZDU3ZjlkYjliOTZmMGVkNmNmOTU5OTYzZmIzZDBlMTNlMjg0ZCBsZWdhY3ktdHJ1bmsKKzIyNTQ5IGQ0NjY4MmJkYTgyZmY1Y2Q4MDJhNjFhZGY0OTMyMThiMTNkZTI3YWMgbGVnYWN5LXRydW5rCisyMjU1MCA4MTQ0NzIyZGMwNzY1ZWY5MmEzZjA3ZmVlNzZiYjk0Y2I2MGMyNjdkIGxlZ2FjeS10cnVuaworMjI1NTEgNzI1N2U4N2UwNzIwMTZhMzc4MDBlMTZjYzc2OTc2MTcwMmFkMDI5ZiBsZWdhY3ktdHJ1bmsKKzIyNTUyIGRiOTc2MjUyOWY0NTQ2NjY2NDJiMGUwNDk3NDFmZWRjYWYwMGRhM2QgbGVnYWN5LXRydW5rCisyMjU1MyAzOGJlMTc3YmQ0OTNhMDhmMTI1NzRjMjA5ZWFiNTFjMmJkYTFlZDQwIGxlZ2FjeS10cnVuaworMjI1NTQgYTQ4YTNkNzU0NzVlY2YyZjAzNWQ1YzQwNDk5YTI4NWU0NTUzNDYyZSBsZWdhY3ktdHJ1bmsKKzIyNTU1IDNkOTdhNGI1YzZhYTVlNDczYTkwODhkODZhZmQ5M2MyMTg1ZTk1OGEgbGVnYWN5LXRydW5rCisyMjU1NiAxM2Y0YmEwNTU2ODdmNDdlNzE4OTI1NDI4NzIyY2RkNmRhYzc3NjZjIGxlZ2FjeS10cnVuaworMjI1NTcgOWI1YTJjMWEwMmYzYzBiOWQ1Nzg2NDZlMjExYzVlZTJiODE1ZjJhZCBsZWdhY3ktdHJ1bmsKKzIyNTU4IDViNmE2ZDdkNDRhZWQyYjIwMWI3ZTQyNTRhNmMwMWMyMGI4ODdhNWQgbGVnYWN5LXRydW5rCisyMjU1OSBmOTIwZGRiNzdkOGIzZjg0MDdhOWE5ZDlkOGIzNjZhMWNkNTg3NDM2IGxlZ2FjeS10cnVuaworMjI1NjAgOTQ5MDVlYjcyZjRmY2I1YjIzNTg5OTFkZjdiYjI5N2UyZGQxOGZkYSBsZWdhY3ktdHJ1bmsKKzIyNTYxIDA1MWQ4ZTM4MGYzODJmZWQxYTQ2ZmRjMWVkMmFhNzRlZTRmNzFlYTMgbGVnYWN5LXRydW5rCisyMjU2MiBlOTNmNWMzODVmZjQ0MzRjMzRiMTA4ODdhMzA4ZjNiMjViODliMThhIGxlZ2FjeS10cnVuaworMjI1NjMgZDVhY2ZmMTc4YWQ1ZTY2NDNmZWUyZTIxNjc2YTc2ZTdmMzExZmNkMSBsZWdhY3ktdHJ1bmsKKzIyNTY0IGMwZWUxMGUwZTEzZTM1ZTU0MjgyOGYwNGJkNTA4N2QyMDYwZjY0NTYgbGVnYWN5LXRydW5rCisyMjU2NSBiZTliNTA3MDRlNGMwYTgwMzE0OWM1ODBjNDFlMGZmYjc4N2Y0ODBiIGxlZ2FjeS10cnVuaworMjI1NjYgMGRhZDBkYzcxNDliMmI3YzFkYjA3ZDJkZTdkM2MzM2ZjZDNiYWQ3YyBsZWdhY3ktdHJ1bmsKKzIyNTY3IGVmZjhjYTY3OWJmNmFlY2E2NzNkMGFlNDVjY2Q4YjZhMjJmOTkyNzYgbGVnYWN5LXRydW5rCisyMjU2OCBlYTEzMWZmMWQ4Y2Q4MmY5OTkwODk4MzFkZWYxYmFmMDg1ODIzMDZhIGxlZ2FjeS10cnVuaworMjI1NjkgOTIyMmI2ZTNiMzY4N2VmMDI5MjVjMjI2OGFiODU0Mjc2YzFkZTFkNyBsZWdhY3ktdHJ1bmsKKzIyNTcwIDc4ZGFjYjU0Mzg4N2VmYjgxYjVlZGNkOTQ2N2JhNDJmMzU4MTA1MzEgbGVnYWN5LXRydW5rCisyMjU3MSBmMTk5ZDBhYTlmODEwZjdjYTVlYTQxYjI5YTM4OWJiMzllMTdiZTlmIGxlZ2FjeS10cnVuaworMjI1NzIgYjczODQyODIzOGYxOTUwMGNiMTBhZDUwYzBmZTMxZDlkMzI1NWYzNyBsZWdhY3ktdHJ1bmsKKzIyNTczIGExYWRiZjA3NTY1NzczYzk3MTBmNWZlZTdjYzU0OWI5ZGM3OGQ0ODMgbGVnYWN5LXRydW5rCisyMjU3NCA2M2I5YjE3N2UzNTBmZDY2ZDUzNjQwNzQ5ZTI2ZGMxZTVhNDc0YzY3IGxlZ2FjeS10cnVuaworMjI1NzUgMTc4MDIwNzdlNzdjZjU5ZmQxNDdjOTJiNDBhNWY3YjNhNDQwNDVhOCBsZWdhY3ktdHJ1bmsKKzIyNTc2IDNiMzA3OWI4NTcyNzQzNTIwYTc3YTcwOTdmNDU0NmY4N2Q0OTEyMmIgbGVnYWN5LXRydW5rCisyMjU3NyA4YzJhMjliNzU0OGVkNjI0MmUxNWQzNTAyMGNlMjk1MWUyMTNmYTc4IGxlZ2FjeS10cnVuaworMjI1NzggYmFmYmU1Y2M5NDFmZjFhYzcyMDdkNTdhNWZmMTlkYmE2MTI0NDI2MyBsZWdhY3ktdHJ1bmsKKzIyNTc5IDJiZjI2OTA5NjZmZmQzMjFhYzY1M2ExZTFmNjY3ZDYzY2U5YTQ1N2EgbGVnYWN5LXRydW5rCisyMjU4MCAzNmZhOGU5YmMyZGE5ZTgyNTQzOTBhOTRkMjViMGU2NDY2M2Q5OTY0IGxlZ2FjeS10cnVuaworMjI1ODEgMDMzNDYyZGYxN2JmNThiN2I3ZGI3NzlkNmUzYzE1YjUwNjFjOTVmMyBsZWdhY3ktdHJ1bmsKKzIyNTgyIGM0YjJhNmIwNGQwYjkwYzEwNDMwNGE0ZGUxZmUwYmI5OTE1ODQwNGIgbGVnYWN5LXRydW5rCisyMjU4NCBmY2FiMzZjOTMzMjdjYTVhNTZmYzBhMDY3MGJhZmY0NTRhMjIyYmI1IHIyMmEyLWJyYW5jaAorMjI1ODUgNDg0YzA1ZGM0OTk4NDE3N2QxNWZlZGRiOTYyMWYzZTcyZDM1ZDc5YyByMjJhMi1icmFuY2gKKzIyNTg2IDI5NGE1NmJmNzMxNWYwMDA0YmZkNWExZDc4OGNiY2FjNTUyNDY2ZjkgcjIyYTItYnJhbmNoCisyMjU4NyBmZDExOTg5OTA0NWM4Mzg0Y2NlZWQ4NjM2MGVlNDBlMjIxZDYyYjU2IGxlZ2FjeS10cnVuaworMjI1ODggOWU0ZjczOWU5YTg0ODY4ZWEwNWY2MGU0ZTFmZjgxMWFiZWIzOTMxNCBsZWdhY3ktdHJ1bmsKKzIyNTg5IDYzODZmMDFmMjQwMTYyZDk3YTA4YjllZTJiODY3NjM5ZTRmODJkNjQgbGVnYWN5LXRydW5rCisyMjU5MCA1ZjFlNzU3MWIxMjljYjA3YjkyYTU1MWUzYWM4NjA3ODBjZDdhYjNiIHIyMmEyLWJyYW5jaAorMjI1OTEgOGE2Y2RhMTc1NWViOTkxZDI0MzQ2N2Q3ZDkwNjFiOTQ0MzI0ZTUzOSByMjJhMi1icmFuY2gKKzIyNTkyIDczNDA2NmYyMTY0ZjM2ZTQyYjI2NTFjMDE3MDE5ZjExM2JiYWRlMWMgcjIyYTItYnJhbmNoCisyMjU5MyA1YzhkZTY4YjNjZGNiYzQ2M2RhYTUzMzU5NGI3ZTI0MmI3M2ZiZjljIHIyMmEyLWJyYW5jaAorMjI1OTQgYWYwNThkNjllYWVkZDc5MjJiZjEyYmQ2ZWI1MTI5NzNmZWJjNGU1NSBsZWdhY3ktdHJ1bmsKKzIyNTk1IGQ3NjRkNTU2OTJhMTRmNDFjNjUzZmY5ZDdhNjEwZGYxYzQzZGJmNGUgcjIyYTItYnJhbmNoCisyMjU5NiA0NzliNTYwZGVjYTcwMTcxN2FhOWYyMjA5NTM0ZmE5ODMzNzgxYTNkIHIyMmEyLWJyYW5jaAorMjI1OTcgOTM1YWEwNzRjZGI4NmFiYzkxNTMyYmI1NmJkNjRiMDczNjU1ZWUwYSByMjJhMi1icmFuY2gKKzIyNTk4IDJhMDgzZTA1MDYxN2I1OTIxZDIyMmJjYmE2OGMyMjhiNWE3NDExNTAgbGVnYWN5LXRydW5rCisyMjU5OSA1MGQzYjM2NmU4YzhhOTBkNmYzMGRjNzJlMTQxOTgxOGE4NjQzN2E3IHIyMmEyLWJyYW5jaAorMjI2MDAgODg0MjIwODEwOTVhZjQwOGVjYjg4NjhkYTNjOGE1NzM4NmExODM1ZiByMjJhMi1icmFuY2gKKzIyNjAxIGU5Yjc5NWQ0YzA2MGNkNzIyMDQzZDcyMjkzNzc0NjI5NjU4N2MzNjkgcjIyYTItYnJhbmNoCisyMjYwMiA3YjU1M2IxYzNlOGJkMTRkMGM4YjQxNjljNGJjMjM2YWEzNGFkOWFmIGxlZ2FjeS10cnVuaworMjI2MDMgNjBkNWNiYmVhZGMzYjg2OGY2ZWVmNWVmYzZiZWZkYTE1ZGM2YjQxMSBsZWdhY3ktdHJ1bmsKKzIyNjA0IGZiNDdkYjg1NDEwZTQ5Zjg1NTgzMDA4N2YxZGNmZDVmYmZmNjVlM2YgbGVnYWN5LXRydW5rCisyMjYwNSBjMmRiMThjMDcwZmVjZGExNmM0ZGY0NTE1MjA4NGRkZWY4ZjBiMzliIGxlZ2FjeS10cnVuaworMjI2MDYgNWViZGMzYWQ4ODc3OWZlOGFkZWU5ZDJlYTdlNGFkZTc2MmQwOWJjYSBsZWdhY3ktdHJ1bmsKKzIyNjA3IGNlNmVhNDQ0OWU5N2NiMWVhMjk5MDM2YmJiODYwMWUyYzE0YTk2MTkgbGVnYWN5LXRydW5rCisyMjYwOCBiOWNhZjhjYjEyYTJlYzM4ZjYxZjNhMWI4YmRjMjUzMDUxMzM3NzBkIGxlZ2FjeS10cnVuaworMjI2MDkgYjQ1MDg0NzMwOTE2ZDk5ZTAxMjAyNzRjYWUwMTI1Y2RlMGRhNzIzYyBsZWdhY3ktdHJ1bmsKKzIyNjEwIDc3ZjQ5NWU4MjJjMTU4MjAxYWY5ZWFiZTUzODBmYmE0MjFjZTZjZTIgbGVnYWN5LXRydW5rCisyMjYxMSAwZTdhZWQ1M2I1ODMzMzJiZGJiNjc5YWM3ZWRkZGI0ZmU1ODJkMjlkIGxlZ2FjeS10cnVuaworMjI2MTIgM2EyZmU3NDVhMGJiZmFmZjc1NTljODI4MWY0NTQ4MGIyMjVhZGExMiBsZWdhY3ktdHJ1bmsKKzIyNjEzIGIyMjY1OGE0NjhjZmFhZDQzNjU0MmMwMWM3MjI5NzYzODZhNTdjMGMgbGVnYWN5LXRydW5rCisyMjYxNCA2MjE4NDk5YWViZGEyYjk5OTI2MjQxNjAzMDA2NTg5N2M4ZTBkODk0IGxlZ2FjeS10cnVuaworMjI2MTUgMGY4NzNkMDZhYzEzZmJlMTUzMTczODI1MmZjYmM3YzZiZTA2ZTVhNSBsZWdhY3ktdHJ1bmsKKzIyNjE2IGZiMzE5ZTljYzJhZGZlZDNmYTU4N2MyMDFmMWVhYWI0NjVmYTBhN2EgbGVnYWN5LXRydW5rCisyMjYxNyA3NzYxYWM4YmViODE5ZTJjYWJjY2U5YmExYjM2NDc2MDJiN2ZmMDFhIGxlZ2FjeS10cnVuaworMjI2MTggMGM2YzZlODc4Mzg4YjlhYzQ5Y2FkYmJjNTM0ODE2NmY3MGNhNjg2MiByMjJhMi1icmFuY2gKKzIyNjE5IDg4YjFlY2QwNDhmYmMyM2M1MDdlOTA5MmU4NDE0Njc5YTI5YWY5ZGMgcjIyYTItYnJhbmNoCisyMjYyMCA4YmM3YmNhMzJhOTU2OGM2YWMyZDYzODMxMjgxNzUyODIwNWE1OWMyIGxlZ2FjeS10cnVuaworMjI2MjEgMmZjMTAyYjgzOGVkODIwZjc2ODE2YTQ1ZmZjYzkxOTFiYjQ3M2YwNSBsZWdhY3ktdHJ1bmsKKzIyNjIyIDk2MjYzY2ZiMmM5NjYyOTk5YmM2YWE3YTI0MzU4MmQ3ZWVkZjQwNTQgbGVnYWN5LXRydW5rCisyMjYyMyBlODUxZTYxNDhhZDhkOWU1NjVmZjM4ZmY4MzU0OGZlODYyMzEwNzdmIGxlZ2FjeS10cnVuaworMjI2MjQgMTAwZGNjOWU2ZjJmM2FhZDkwMDI5MWQ2NjMwNzcyOTI0NjhlZDBmMiByMjJhMi1icmFuY2gKKzIyNjI1IGI5NGNlN2Q3MGNmY2E5MDY1NWRiZTZkZjhiNjc3MGMyMWQ4ZWU2ZmYgcjIyYTItYnJhbmNoCisyMjYyNiA2MGMwY2ZmNWQ1N2VjYmUwZTljZjFiNzVkY2NkZmQzOGVhNGRjMmIzIHIyMmEyLWJyYW5jaAorMjI2MjcgODUzZGJlMTJiYmU2OGE2NjJhZWM3NmI1MjRjMGIyOWMxMzBlNGI5NyByMjJhMi1icmFuY2gKKzIyNjI4IGJlNWJlOTg5Y2FmZmVhMDQ2YmEwZTMzMGNmYzdlNTg1NmYyYTE2ZGYgbGVnYWN5LXRydW5rCisyMjYyOSA4NjA3YmM4OTBiMWYwMjVkMmRkZWZjOGYwY2MxZjMxNGIxNTMxYzdjIGxlZ2FjeS10cnVuaworMjI2MzAgYTAzODk5Mzg5MGIyM2U2YzMyY2RlOTQ1ODAxNDk2NTFmZmJjNzc5NiByMjJhMi1icmFuY2gKKzIyNjMxIDU1NDQ1MDQwOWE3MzhlMjFmOTgwMDkzNzBhMGY4MDU3M2U2OTc1NGYgbGVnYWN5LXRydW5rCisyMjYzMiBkOWVhOTlhNmY2YjQ0NjY4NmU3Yzg3ZWQ2MTBjODNjMGY2N2JhNjJkIHIyMmEyLWJyYW5jaAorMjI2MzMgNWJjYmM1OTBmNGE3MTE2MGNlODYxMTExNjA0NjM4MDI3ZTMwN2NjNiByMjJhMi1icmFuY2gKKzIyNjM0IDg5OTZkYzUyMGI1N2JiNzI0YTkzZmJjNmExZjc1YzY1MzRjNmE1ZmMgcjIyYTItYnJhbmNoCisyMjYzNSBhYzZiZmE1NWZjZWJmNGI4MDEwNmI1MTYzNzkyNTYxYzhmODg3ZGIxIGxlZ2FjeS10cnVuaworMjI2MzYgNjEyNWQ5ZjkyNDQxZGMzMmE1M2Q2MTE1Yzg4MjkxYzQ2ZWM3ZTM3OCBsZWdhY3ktdHJ1bmsKKzIyNjM3IDlkZTgzZGRhOWYwOWEzZDE2YmFlMjlhOWNhNDMxNTU5NTdjNWI5NTQgbGVnYWN5LXRydW5rCisyMjYzOCA5MzA2ZjgyOGZiYjc3MzRmYjEyZDU3N2Y0ZjA5NWY3NjEwOTVmMzY5IGxlZ2FjeS10cnVuaworMjI2MzkgMDFlNjY3ODBhZjYxNjMxYmViNzY4MTY2ZGE1ZTgzM2NmZjFiNDliNiByMjJhMi1icmFuY2gKKzIyNjQwIDgxYzc1NjVhNTZhY2NlODU4ZTZlZGZjZWFlODYzMzVjNzc2YWIzNGUgbGVnYWN5LXRydW5rCisyMjY0MSA3ZTVlOTc0YjNkMzc2ZDRiYjVlZmExMzE5OGFiZjJhYzlkYjc0NTc3IGxlZ2FjeS10cnVuaworMjI2NDIgYmM5YzhjZWJjMmVmYzgwNzg2MDUxNGE5ZWVmMGM4Y2U1ZDAzYmYyNSBsZWdhY3ktdHJ1bmsKKzIyNjQzIGM0MDNhZjAwMzg4NGU2YWRiNWY1MjNkOTFmNzZmZGY4NGU5YzFhZDkgbGVnYWN5LXRydW5rCisyMjY0NCAwZDFiYmU2NWExZDg3N2I4NTc1MDRlODMyYjM0YTU0ZmYzMTU3NzI5IGxlZ2FjeS10cnVuaworMjI2NDUgZDRiYTZlMmFhYWUzNGFjM2UwYmIwMzkxMTc5ZjQ3YmYxZGVkNTM4MCBsZWdhY3ktdHJ1bmsKKzIyNjQ3IGNjYzRhZjY4N2NhYzZjZDIxOGVjMDEzOTViYTFhYjlkYWFkODk3ODQgbGVnYWN5LXRydW5rCisyMjY0OCA1ZjczMTExNWUzNTI2YmRhNzhhMzFhY2Y5YTk3MDNmMDM2MGJmZWIyIGxlZ2FjeS10cnVuaworMjI2NDkgNDc2MzNiNzllYzE5ZjNhZTY2ZWRkZGZiNjFjZjY2OTc3NjAzMjgyNSByMjJhMi1icmFuY2gKKzIyNjUwIGIyZGFkNGQxN2NhOWFlMWRmZjNmYjVjMjM4ZjA1ZGU3Mzk4Y2ZhMmIgcjIyYTItYnJhbmNoCisyMjY1MSAwOTI4Y2Q2MmRkZWE1ZDIwYzFhYzgwMjQwNzgzMmNmYjYzZDgzMzM0IGxlZ2FjeS10cnVuaworMjI2NTIgYTZjZTJkMTZkNzM5ZjcyYjI0YjcxOWQ4ZmEwOTUyOWUxZjcxZjc3YiBsZWdhY3ktdHJ1bmsKKzIyNjUzIDBiMTFmMDljZjFlNDBkM2NjMDUxN2M4Zjc2MDQ5MmZmYmUyZjA0YTQgbGVnYWN5LXRydW5rCisyMjY1NCAyOTNhNDEyYzlmZDk3ZDk1MjRiZTU5ZWM2NjExNzhjMTZkMTczYzg5IGxlZ2FjeS10cnVuaworMjI2NTUgMTI1Nzg1ZjFlMTJmZTdiODJhNTE4ODJlNTBiNjU5YWQ3MTc4NmQxZCBsZWdhY3ktdHJ1bmsKKzIyNjU2IDgxMWYyODk2MzdhZDI0ZWYxZTJmMjRjY2RmMWRjODk5MzFiZmY3NTAgcjIyYTItYnJhbmNoCisyMjY1NyBiMTU5Y2UzMzE1Y2I4ZGE2OGMwYmVkNTBiOGM3NTVkZDIzNWI4MWFjIHIyMmEyLWJyYW5jaAorMjI2NTggMzRhNzRiODFjOWIyZmE2ODU2NDAwODJiMjE4M2MwZDRlZjgyM2ZiMyByMjJhMi1icmFuY2gKKzIyNjU5IDczMGRjZDZkNTkwYjJiYmUxY2E4ZWFkMmFhN2JkOWViYjE4NmMxODAgcjIyYTItYnJhbmNoCisyMjY2MCBmNTJmYTJiNzAzZDcyYzZkZDAxOWYyNWRkZjY3NGMxNWVlMmY3MzNjIGxlZ2FjeS10cnVuaworMjI2NjEgZTc2ZjdjODNlYjBkNTYwOTc5N2E2NDhiYzUwZGE1NzY4MWMzN2FiMiBsZWdhY3ktdHJ1bmsKKzIyNjYyIDVjMDM1ODRjZjNjYzFjNjVkZGIxOTZhNTM4ZDcwMDY5OGZmNjFhMWYgbGVnYWN5LXRydW5rCisyMjY2MyAyYjdjMGJlZGZmZGJkMzk0Mjk0NjMwNWNmMDE2NDVmNTU2NWU4ZTE3IGxlZ2FjeS10cnVuaworMjI2NjQgODU4NjI4Y2Y2ZTI1Njk0NTQ3MmFjYzk2OWRlYjZjNzcyOTc3ZjUzMyByMjJhMi1icmFuY2gKKzIyNjY1IDE3ZTdiMWEzMzFmMzVkZmVmMDJkYjg5ZGY0ODliMDFlNDFiYzI0ZTYgcjIyYTItYnJhbmNoCisyMjY2NiBmYTM5ZjAwZGQ1YzMzM2JkYWNjYWQ4ZDdlYTAwZWIxN2U5NDhjZTFhIHIyMmEyLWJyYW5jaAorMjI2NjcgZmZlZjRlNDFmMDZlZGM0MWZkODJhZGMxYzU0NTI0ZjM0YmNhZWFjOSBsZWdhY3ktdHJ1bmsKKzIyNjY4IGM2MzdmMjljODE5OGFlMDM3MmM1ODJkMDI2NjkyYzRkZWIxZTcwYmEgcjIyYTItYnJhbmNoCisyMjY2OCBkN2Y0MmM5ZGU5NDQwZDdhNmEyNTJjNTBmM2RjYjA1Yzk3ZWJlY2M0IHIyMmEyLWJyYW5jaAorMjI2NzAgZGUyZmJjNTJjMWViOWY0ZDgxOWIyN2QyMTY3YmZkMWQxMzI3N2UxNyBsZWdhY3ktdHJ1bmsKKzIyNjcxIDc1MjY5YWIyNmQwMzEzNzdiMTcwMjYxNGM5ZjJlNGNkMDkyNTllOWMgbGVnYWN5LXRydW5rCisyMjY3MiA4ZDY0MDQ0NTM0NDg1N2U0OGQ1YTM0OTcyYWVmYmM0MzE2NjJkNzZkIGxlZ2FjeS10cnVuaworMjI2NzMgYzcyNjE2ZDYxNDNjMmM4OTcyNzJhZjEwODBhNDIyNzQ0MTZlYzk5MyBsZWdhY3ktdHJ1bmsKKzIyNjc0IDljZjY2OTU4MTExMDM0YmU2MzI4MTA3ZmFiNDkzNWRlMGU1ZjU4NzQgbGVnYWN5LXRydW5rCisyMjY3NSA1MDBjMzU5MDM4YzdiMjM1Zjk5MTdmYTA4ZDIzOTgyZWFjMWEyYTNiIGxlZ2FjeS10cnVuaworMjI2NzYgYjEzOWJkYjZkNDhhNGJjZDUwOTljYzhmZTM3Zjg0MmFhZDAxZTkxMSBsZWdhY3ktdHJ1bmsKKzIyNjc3IDk5OWRlNTRhYzZhNjIxZTZlN2ZiZjJmOTg5NTliZjhhODFhMDk4NmQgbGVnYWN5LXRydW5rCisyMjY3OCA1ZDgxYzZiZmYzMDZlNWFmMGE2NTgwMTYyZjllZmY2YjVhMmNhNGZjIGxlZ2FjeS10cnVuaworMjI2NzkgYzE0MGJkN2QzYmRjZmZjZWZlZTBlODk5YjRmOTk2NzNkNjNhZjVkZiBsZWdhY3ktdHJ1bmsKKzIyNjgwIGRhZDMyMDljZTk3MzMyYTlkYTI1NTllNmI5ZjVlOTEwOWJjODg5YmMgbGVnYWN5LXRydW5rCisyMjY4MSBlMTZhZDVmN2YzODcyMjFiZjdlZTBiZTdjYmUzZmNiNzY2N2M1MGFkIGxlZ2FjeS10cnVuaworMjI2ODIgNWZlYzFjOWEyMWVhZGY0ZTk1NWUwMmI0YzY4ZGM4YjFkZjU4ODFlMyBsZWdhY3ktdHJ1bmsKKzIyNjgzIDdiZTRjNzNiYWM1M2UxNDkzN2E0Yjg4YjhkMDgzZWViMjNkOTU0ZDAgbGVnYWN5LXRydW5rCisyMjY4NCBkZTc0ODM0N2E0MDQ4MGZmNDI0MDI5ZmM3OGRlN2IyYThlODY2NjU2IGxlZ2FjeS10cnVuaworMjI2ODUgY2ExYjhjYzFiYTJiZDY1YmRlZWMwMjZmZGMwNTYyZTcwMTg1MDNlMCBsZWdhY3ktdHJ1bmsKKzIyNjg2IDA3NTcwOTgzNTBjMjg1N2Q1MDZmNGYwMzBjOTc0ODg4ZmRlNjUwM2QgbGVnYWN5LXRydW5rCisyMjY4NyA0ZDY5ZDc0MmRiMmY0NGJkODY0ZTA4YTVhY2EzZmY3MzEzOTViNjcyIGxlZ2FjeS10cnVuaworMjI2ODggMDkyMmQ2MDlhY2QxMjUyYTc3ZWEwOTVkOWM3NmJkMjQ3YjVkZjZiNCBsZWdhY3ktdHJ1bmsKKzIyNjg5IDcxMzcyYTBmNTBlMWI0ZDUwZDgwNDExYTdjMTM2MjU3YmMxMWMzZmQgbGVnYWN5LXRydW5rCisyMjY5MCAyYWVhMzk0ZjQ3ZGQ0MGUxZjJjNjRjNzQxYTA2YmExYzYyZTFkOTU5IGxlZ2FjeS10cnVuaworMjI2OTEgZjVkODdjNDFmNjViMjAyN2I2MDkwYWFlNTdmZTYxMzA4NjY5MzNiMiBsZWdhY3ktdHJ1bmsKKzIyNjkyIDNiZmNkY2FiYTcwMzQyNTQ0Y2I1YzUxOTg2YzNlZWE1ZWZjNzFmYTAgbGVnYWN5LXRydW5rCisyMjY5MyAyNWQyZjY0ODMzODQxOWZiNWEwYTkzZDIzZGNhNjk5OThmM2E3ZDczIGxlZ2FjeS10cnVuaworMjI2OTQgZjk0YzRiYjc4ODhiMmM3ODI3OWEzMWI0NWNlNmVjZDI3MmQ4ZTg0NyBsZWdhY3ktdHJ1bmsKKzIyNjk1IGNlZTFkZWNjNGZmMjA5YTNmNDJlZjM3ZTVjNDNmNGM0YWU2YmI3ODAgbGVnYWN5LXRydW5rCisyMjY5NiAyODE3ZjFkM2FkYmUzMDNmMGFhMDU0YTFjODc5NGE1N2U2Yjk1MWQ5IGxlZ2FjeS10cnVuaworMjI2OTcgMTBiNDRlM2IzOTA1NDdhMTc2ZmE0MGFjNTQ0MzY4NDEwMTJiYmVlYiBsZWdhY3ktdHJ1bmsKKzIyNjk4IDdmYjVmMTU2ODVkZDA2YTkyNjhhYjk0ZWQ1YzVlMDkxM2RlZjQyN2IgbGVnYWN5LXRydW5rCisyMjY5OSA5YWZkOWQ1ZmI5N2EwYjYwZTZjMTQwNjIwOTM2OTQ3ODM1YWJhZWQxIGxlZ2FjeS10cnVuaworMjI3MDAgMjViOWI2MzRkOWUzZDFlYWZmNTcwNTMxMTk1YzcxN2QzOTEwMWJlYiBsZWdhY3ktdHJ1bmsKKzIyNzAxIDNiNWYzNGM1YmM2YzkzYTE3MDA4MGQ1YjQ3NTViMjQ4OWM0NTQzYWIgbGVnYWN5LXRydW5rCisyMjcwMiA2YzJiN2I2MjRlZjIzZjIyZDI4NDc4NTg3OThjN2ZiNTA2NTIzOGIxIGxlZ2FjeS10cnVuaworMjI3MDMgOGY5MGUxZjUwYzExODM4ZmNhZDAzYmY4MDJmZWUxYjhmYzM0Nzc0MSBsZWdhY3ktdHJ1bmsKKzIyNzA0IDUwMDE5Y2I3ODRlMGRjZWViM2RkYTE1NGY2YWI5MDIzOTcwNzc4YjggbGVnYWN5LXRydW5rCisyMjcwNSA3NTMzNDEyZGM1OGNkNmE5ZmNlYmZiNjk5M2Q5YTc0ZGZjODRlY2YyIGxlZ2FjeS10cnVuaworMjI3MDYgZjdhYWY3MjFhODFiM2NmYjc1Yzg1YmM1NmY5ZDk1OTg3NmUwNDYzNSBsZWdhY3ktdHJ1bmsKKzIyNzA3IDEzNGUxMzNkOGM0NDVjYzZkYWZjNjU5MWQ3YjU3YjNkYTNlZjgwN2QgbGVnYWN5LXRydW5rCisyMjcwOCAwYjY0MmQyMjBiMDJlMmQwZGY4OTNhYzIzODhkZDc2OWE1MWZiNmFlIGxlZ2FjeS10cnVuaworMjI3MDkgNDVkMGUxMTQyMTJlOTgwNTE2NDhiYzFjNjhlOTc4MDZlZDczZDdmZCBsZWdhY3ktdHJ1bmsKKzIyNzEwIDRhMzBlYzc5OGU2YzJlYjg1OGEwNzBiODUyNDZhNjg0NDQxNmZjMzEgbGVnYWN5LXRydW5rCisyMjcxMSA2MWQ1M2MwNTNlNDM0ZTllYTA2NjJjNTEzYzIwZDFmMjNjNGJkZWZhIGxlZ2FjeS10cnVuaworMjI3MTIgNmU2ZmM3YjZhMzYwMWJkZTZlZjQ4MzczOGFkZmI2MjRjMjYwOGQyOSBsZWdhY3ktdHJ1bmsKKzIyNzEzIDBkY2VlOWJjZDgxM2U4NjE2MDUyNzhlZDk2ZWMxNzQxNjdhMDgzZjEgbGVnYWN5LXRydW5rCisyMjcxNCBiM2M5MmYwMTM4NjlmMDY4OWVmZmQ1MmNiNWEwMTk5YWE3OWQ1YzlmIGxlZ2FjeS10cnVuaworMjI3MTUgNDVlYTNiNWZjYmU1Nzg3YjA1Y2JlYzY1NzYxZjY1ZDhhZmJlYTYwNyBsZWdhY3ktdHJ1bmsKKzIyNzE2IDhkMmIyY2IyZmViY2YwNGU5NTEyMWQ4YTY4ZWJhOGMzZjQwM2YzOTAgbGVnYWN5LXRydW5rCisyMjcxNyA1NTNkNjg4NDM4YzQzNDU2ZWE3NDVlNTQ4Y2ZhMjM0ODEzMjU5MTQ1IGxlZ2FjeS10cnVuaworMjI3MTggYzM5MmMzZTQ5ZGQ1NmVkMTQyZmVjNmViYWNhYTMxNTAxZDIyNmZmZSBsZWdhY3ktdHJ1bmsKKzIyNzE5IGY5ZjRiZGNiYzI1YWFlM2I4NTJkYjRjMTJjNDg5YTI4N2EwMjE3YTEgbGVnYWN5LXRydW5rCisyMjcyMCBiYzYzYWZjNzAxZWY3MGRhNjVlMGY3ZDY5ODZmYzMyODZiOWNkZWRhIGxlZ2FjeS10cnVuaworMjI3MjEgMGU3MGRmOTg0MjRlZGNjMzZiODg4MWZjYjBkYTJmZjQzM2I3YjFhNCBsZWdhY3ktdHJ1bmsKKzIyNzIyIGUxYzkxYWM1NWNjYTgwNGNlN2QxMjkyM2I0NTgzNjdlNDIzZTQ0ZDYgbGVnYWN5LXRydW5rCisyMjcyMyA2N2IzMjVjZTAyMjZkNDBhZjEwMTI0ZGJhMzk1NmZmZTFkMjMwNzI3IGxlZ2FjeS10cnVuaworMjI3MjQgNDc5NmE2N2E5OThiOTkwY2I4MjMzNzhiOGQ3ZTFlMWNkY2YxZWQzNSBsZWdhY3ktdHJ1bmsKKzIyNzI1IDk4NGZmYTEyNDYwNjA5Yjk5MjdjMWI5NzcxNTMyMjQzNzg2MzcyMjUgbGVnYWN5LXRydW5rCisyMjcyNiA3N2ZlYThmYTFmMTY0MzFjMzlmZWU3MmRmYzQ3YmRhY2MxZWZhY2I5IGxlZ2FjeS10cnVuaworMjI3MjcgOTNjYjVlYzQ0MDE3OThkNTIzYTY4MWYyYWJkNjUwZmYwMzFhMjc2OCBsZWdhY3ktdHJ1bmsKKzIyNzI4IGMxNzFiMDdiZjZhOWU4ZGVlZmNkOTdhY2ZhNmM5OTZhYWE4YzAwZTcgbGVnYWN5LXRydW5rCisyMjcyOSBkZTk3N2Q3NjI3ZWJmZmMxOTE3MTIwNmNhNDE1MDJlZWM2NTFiY2YyIGxlZ2FjeS10cnVuaworMjI3MzAgMDAzYTBmZTljMzUwM2VlZDA2YWU1ODlhNDc1MzRhNmFlYmM4Y2ZiYyBsZWdhY3ktdHJ1bmsKKzIyNzMxIDVjODU5ZDJjYjM3YmRjNTA2OTY1MmNhODM0MGIzM2IwYTQ4N2NmYWUgbGVnYWN5LXRydW5rCisyMjczMiAzZTY4ZTFhMDJhZDIwOGFkZDhmMzNiYWNjMmQ3MDIwYmY0YzYyMDE4IGxlZ2FjeS10cnVuaworMjI3MzMgNDJiMmYxOTM2MjU0NmVkM2I4MTUxN2ZiZGI3MzgxZDI2MDZlYjIwZSBsZWdhY3ktdHJ1bmsKKzIyNzM0IDNlNzQzMThhMWI3NjNiZGI0YjE0YjM4ODI2NjAxMzZiN2RiMDk4ZmYgbGVnYWN5LXRydW5rCisyMjczNSBjNjM4NTAzOGRlMzlhZmU1YzcxMjYyNmJkMTgxNGI3MDZlODFlNThhIGxlZ2FjeS10cnVuaworMjI3MzYgYzFhYzVmODI3YmMyNjMwMDNjNmMyZjU4ZTRjYWIzMzZiYWMwYjAzMyBsZWdhY3ktdHJ1bmsKKzIyNzM3IGQ3OWI1MTg2N2NkYjUxOTAxYTVlZDEyNGY5M2VjZmMwM2U1NDY0YTAgbGVnYWN5LXRydW5rCisyMjczOCA1NmI1MGU0ZDY4N2ViYTUxMjNkZDkwMTQ5Yjg0MDlmYTZlMTQ0MDMyIGxlZ2FjeS10cnVuaworMjI3MzkgNjczNGM4MDY1MTE0OGY1YTA4NTVhZjY4ZDdlN2RkZDgzNmI1MWMxNSBsZWdhY3ktdHJ1bmsKKzIyNzQwIDQzNTRiYTQ3MzVhMDk2Nzc2MTQ0Yzg2NzkyMWJlMjc1YWRiZTk4NDUgbGVnYWN5LXRydW5rCisyMjc0MSA2MTc1NTU1Nzk2MTFmYTNiYjI1NzY5OTBmZTczMmExODliNDIzYTNmIGxlZ2FjeS10cnVuaworMjI3NDIgNTQ3YjZlZjExMDhjODQ5NDc5ZDkwNmEzNGJhZGZiMWVjZmFhNDE1MCBsZWdhY3ktdHJ1bmsKKzIyNzQzIGZjNWM3NTgwN2UxOTUyY2I2ZGU5NjIyMmIwMjdjZDlmODU5NjE1Y2QgbGVnYWN5LXRydW5rCisyMjc0NCAwNzgyOTJiZjk0Y2M3MjEwYTc1YWVlZDA0ZDQyODQwOGI1YmZhNTBhIGxlZ2FjeS10cnVuaworMjI3NDUgZDBjZTA0NjBmNGE3YzYxYWRkNDg0YmI1ZWJhN2JhMGFhNzlkOGQyNiBsZWdhY3ktdHJ1bmsKKzIyNzQ2IGNlNGYxZTk4YmE3ZTQzNjliM2VjOTA2ZTkzYTc4M2Y4YWM2NjM3Y2MgbGVnYWN5LXRydW5rCisyMjc0NyA2MmJmOTQwMWExYWNmZGRmYjllYzllNGU1MzNjODBiYmQxZjVmZjE4IGxlZ2FjeS10cnVuaworMjI3NDggMTdiMmFmYmE3YTZmYjA0YTMxMjFlMjQxNmM5OTllNzBlYmQ5NGFjNCBsZWdhY3ktdHJ1bmsKKzIyNzQ5IDU5OTMxZGI1NzJiMjQ0OWE4ODI3MzU0YjBmZDFiYmRjM2I5YWE3YTEgbGVnYWN5LXRydW5rCisyMjc1MCBmZWZlOTUzMTlmMjRiMGQyMjIyMGYwMjNjODQ1YjIyMGNiMzY5NzM2IGxlZ2FjeS10cnVuaworMjI3NTEgODc2MjgwMzBhZDc1ZDY4N2JmZGU0OTY4NWI1OWQ5Nzk4MzVhMGM3NyBsZWdhY3ktdHJ1bmsKKzIyNzUyIDA3NmFiOGNiNDUxZWEwMjM3NjljYzBhNjMxZWY4YzZmZTYxOThhNjkgbGVnYWN5LXRydW5rCisyMjc1MyBkYmJhMmNhN2RjMWU1ZDRkMzZlZGI5OWRhY2Q1ZWFjNDA1NTYwMDRhIGxlZ2FjeS10cnVuaworMjI3NTQgMzM0ZjQxNzg0NzdhYTc3NzIxNjkxYzQ0YzMwMmM3ZGVhNzMyNjc1NCBsZWdhY3ktdHJ1bmsKKzIyNzU1IGNlMzE5YjgyYThlNGRkOWQzMmZjMjY1MjZlZWU3ZDlhN2QwOWJkOGEgbGVnYWN5LXRydW5rCisyMjc1NiA1Y2Y5MjQxZDM1YjA5YTliMGRkZmMzZDkyOWVkZTdjNzNhMmRjYjhmIGxlZ2FjeS10cnVuaworMjI3NTcgY2MwMjM0MWRlZGU0N2UwNThkNWQ2NDc3MTQyZGU3ZmZiNzBhZmE0YSBsZWdhY3ktdHJ1bmsKKzIyNzU4IDI0NDgwYTZkMjdjNGQ0NzkzNWM5NDRjZDEwOWMzNWM3MDBmZWQ3NTMgbGVnYWN5LXRydW5rCisyMjc1OSBiMWFjYmNmN2Q1ODY4NDI2Y2VjZmI0MGY4OTY4ZTUxNjk0NzU1ZTY5IGxlZ2FjeS10cnVuaworMjI3NjAgNTQ2ZWYzMThiYTVkY2Q0YTczYjlkNzdhOGI4NTM2Y2JiNDA5NjBlYiBsZWdhY3ktdHJ1bmsKKzIyNzYxIDRhZWM5Y2I3ZmU1ZDlkNTgzMzIwMDVjYjU1ODA5ZTQ3ZDc1ZWJjNjYgbGVnYWN5LXRydW5rCisyMjc2MiAxYTZjZjMyNTE0MWUwZDk1NWYyMGZmZWUyMjViNDgxYzU5MTE0MzRkIGxlZ2FjeS10cnVuaworMjI3NjMgZmJiMzUyNjhmZWQ0Zjg3OGIxZWNhODIzNGM3OWQwNWE2YTdiZTBjOCBsZWdhY3ktdHJ1bmsKKzIyNzY0IDk5ZTk1M2M2NzA5Y2VlZjQ3MThiM2UyMTcyNzU0NzUzZWM4NjBmN2YgbGVnYWN5LXRydW5rCisyMjc2NSBjMGM1ZmU3OTAyY2YyNzFjMjYxNGM3NDRlYjkyMGVkOWRkMGY3NGVlIGxlZ2FjeS10cnVuaworMjI3NjYgNDEyZDBlYjVkNGJhNTIxNDI2ZDgyNGE0ZTE5Yjk0YTQ3OGRmMzExNCBsZWdhY3ktdHJ1bmsKKzIyNzY3IGEwODQ3YjdhODkwMjhjNzY2MTVmODBiMWIyOWU3YzY2MzI1ZDg2MGUgbGVnYWN5LXRydW5rCisyMjc2OCAzYTkwMjExYTAyOTU4ZmVhZTQ4N2UzMDNlOTVkYWQ5ZTI2YjUxZGIyIGxlZ2FjeS10cnVuaworMjI3NjkgYWIxOTRmMWYwNTNiNjZmZGY4NmNmY2JhZmY4M2NiNzllMWUzYmZiMSBsZWdhY3ktdHJ1bmsKKzIyNzcwIGYzZWM1NDg4OTA4YjNjNDk5ZDg2MDAyMDM3MjJkYmJkYmE4MGYwZDkgbGVnYWN5LXRydW5rCisyMjc3MSA0NDMzZWJhNzM5ZTdmMTZhN2MwZGYwMTIzMDI5ZjlkNTVjYTQ4MDNmIGxlZ2FjeS10cnVuaworMjI3NzIgZWM1MWUxMGE2MjI5YzZlYzE2Mjk3ZGUyZjVlZDUxODJlNTgzMjJmOSBsZWdhY3ktdHJ1bmsKKzIyNzczIDk2YTBiYjNhODUyMWExYjZiNTk4MjM3ZTQ4N2QwOTcwNmFlZDRhODEgbGVnYWN5LXRydW5rCisyMjc3NCBkZDhkNjE1M2E4YzY1ZGI4ZTFjNDc1YzU0NDk4OGZkODFjNzFjMWZhIGxlZ2FjeS10cnVuaworMjI3NzUgZWRlN2ZjYjhiMGIyMzc3MWY3MTgwZmE4Y2QzOGI5NzZiZGFlZjI5NyBsZWdhY3ktdHJ1bmsKKzIyNzc2IGRlYWNkNjAyNzJiZTMyNDdiZjA4NmQ3ZDA1ZjJiMjdkYmM1ZmY0ZDAgbGVnYWN5LXRydW5rCisyMjc3NyAyMDJkOGRkNjVlYjViMmZmNGY3MGM5N2YzMGU0YTQ3N2E5NjU0N2Q3IGxlZ2FjeS10cnVuaworMjI3NzggM2U3ODk3ODIyNDU5N2Y0MTYxMzA5ODYxNTVmNWFhMjgzZWRkZTMxOSBsZWdhY3ktdHJ1bmsKKzIyNzc5IGRlMTAxNTFhN2Y2M2VkYmQxOWY0ODVhYTVhZjBmM2E0NDUzM2IxM2QgbGVnYWN5LXRydW5rCisyMjc4MCA5NzUzNjA4ZTJkNTdhM2QzYzgwNzJjMWM0MzA1YmEzYWNkY2RlMTk1IGxlZ2FjeS10cnVuaworMjI3ODEgY2Y5ZTM0MTg4NzYzYzAyMTQ1MjNjNzkwODlmYmUyMzM4MzIwZTA1ZCBsZWdhY3ktdHJ1bmsKKzIyNzgyIDQ3ZmE0YWMwNDJkN2YwZTMyZTgxMjk2Y2FlNjFkM2RkYTg0ZTdmOWMgbGVnYWN5LXRydW5rCisyMjc4MyBiNGEzZmMxNDc5Mjk0YjQzOTNjNDFhNWUxNWFiNTgxNzc5NDIxNTc3IGxlZ2FjeS10cnVuaworMjI3ODQgNzJkOWI3YzBkMjExZGI3Njk1YjM3N2I3YjczMjYzNjE4ODY2MWU4YSBsZWdhY3ktdHJ1bmsKKzIyNzg1IGUxNDFiMzkyYjYxZGQyYjQzZTU2NTdmN2ZkMmI4MTkxOTg0OTk3NjIgbGVnYWN5LXRydW5rCisyMjc4NiAzZTEwYzA4NzQwMWNmY2NlYjVkMGUwMGNlZjEwMDcyMDUzZDNmMTQ2IGxlZ2FjeS10cnVuaworMjI3ODcgMmQyNTE2ZTM3Mjk5MzEyY2E3NDY0Y2ZkOTVjMGY5YTI3ZGYwYjEzYSBsZWdhY3ktdHJ1bmsKKzIyNzg4IDFjZDg3NjQyMzU5Y2E1OTUyOWY4OTM1ZjE5NGIzOWJkYjgyYWQ5MjQgbGVnYWN5LXRydW5rCisyMjc4OSBkNzExZTgyZWNlMjMzMmYxMDE5OTVlZjdjMDg3OTE5YTgyNDQ0NjhiIGxlZ2FjeS10cnVuaworMjI3OTAgODU2MDVjOTM2NTJiNWE0ZTAzYWIyMGVmMDRjZGUyNTNlZDBmOGU2MSBsZWdhY3ktdHJ1bmsKKzIyNzkxIDQ3N2I2ZGRkNDI0MjVmNjJkMDgzNmU2NjdkNDQ2YjkxMTczZTA5MWYgbGVnYWN5LXRydW5rCisyMjc5MiA3ZTYyOGY2MDI0NWU5YjJkM2IwZWZkYzQ3NjAyMmZmMjcwYjk0M2Q4IGxlZ2FjeS10cnVuaworMjI3OTMgZGE1ZWViYmZlNDFkYTVmNzU4YmZkNGQzZWVmY2Q5Mzg1MDI2NTEzZiBsZWdhY3ktdHJ1bmsKKzIyNzk0IDExYTc1OGM1NjAyNzkwZjY5MzRhMzAyN2ZhMGZhNTUzNDIxNTUwZTkgbGVnYWN5LXRydW5rCisyMjc5NSAxOWQyNzFmMjk3ZGM3NThjZTM3ZTc1MDY2ZWYwOTJkNWUxNjI4N2NkIGxlZ2FjeS10cnVuaworMjI3OTYgMDFhNjkwMWNkMzA1ZTI5ZWFjNzJlNTJlMmE3NzYxYWEzZTk3YmRkOSBsZWdhY3ktdHJ1bmsKKzIyNzk3IDZjMzBkMjBkMjdmMmNjYThhYWE1ZTkyNWJhOGU1MjE5Yzk2NzJhOGIgbGVnYWN5LXRydW5rCisyMjc5OCA3YjM5ZDkxNDI0YTJhZjBjOWYxMmY2NTA3MGY4MWUzODllYmNmODQ0IGxlZ2FjeS10cnVuaworMjI3OTkgZGRjNGMyZjVlZmJjOTU5OGM1YTgxZDg3ZWYwMmI2MTJlYjY1YTNjMSBsZWdhY3ktdHJ1bmsKKzIyODAwIGVhNzZkZWE2NDQwZjk3ODU3NjliYzQ0M2UxM2E3Mjg3MmZkNTc5ODQgbGVnYWN5LXRydW5rCisyMjgwMSAzN2UwYjBmY2NhNTQwZjY3YjM4MTY5ZTVhZDU0ZWFhNzg5ZWU1M2JhIGxlZ2FjeS10cnVuaworMjI4MDIgMmMyY2MzMWJkZjE1M2FjNjcwNWMyY2U0NDU5YzJhYzM1MTA5ZWZlZSBsZWdhY3ktdHJ1bmsKKzIyODAzIDAyMjUxYjA0OGJiYmYxOTJjYjA2NjA3ZTQ0MDRkODdlNzY4MDg1MDEgbGVnYWN5LXRydW5rCisyMjgwNCAxODQ5ZjQ5YWE2Zjg2NjVmYjk4ZTdmMTAyODhmZGM0NDAyMmFjMWNiIGxlZ2FjeS10cnVuaworMjI4MDUgMDczODhhNmE1NTI2Yjk1YTQ0MjNmYTAzZGQ3MzM0OTQ0NjdjYjk0MCBsZWdhY3ktdHJ1bmsKKzIyODA2IDgxMTY4ZWY0Y2I2NThiZjVjZmY0NzliMTM0ZTBiNjlhZTllNDkwZDkgbGVnYWN5LXRydW5rCisyMjgwNyA0OWJiNDFhNjlkZmMzOGViYzZjNGE3ODA5MDMwMDA5M2NkNzMyZTNiIGxlZ2FjeS10cnVuaworMjI4MDggZDllY2IyMTcwMzU0ZjU2MmRmYTZiY2JkZThlOTIzNjZlYjFmMmZhOSBsZWdhY3ktdHJ1bmsKKzIyODA5IDM4MTE1ODBmZGMzNzNjY2Q3MmQ4ZWNmYzk0ZjQ0ZWY1MTdlNjkyODQgbGVnYWN5LXRydW5rCisyMjgxMCAzZmEyOWNmNzMxOWQ0ODQ1MDU2OGRkOWY1YzI5YmYzMDFiNjk4YjY1IGxlZ2FjeS10cnVuaworMjI4MTEgODU2ZTNmYTE0Y2JhNjhmZjg0M2QwNmQ5ODM5Y2VhMDI5YmQ2N2UzOCBsZWdhY3ktdHJ1bmsKKzIyODEyIGI5OGU0MzQ2MjU3YmZiYzM3YzE4ZjgzMTA5YjBhOWM3Njc1MDZkOTggbGVnYWN5LXRydW5rCisyMjgxMyBiMGY1Mjc4YTJhYjQzN2YyZDExNjc5ZmU1MTg0YmMzMjU2N2YxYjYxIGxlZ2FjeS10cnVuaworMjI4MTQgY2VhN2ZlYTE3NDJiNDAzODQxNjM1NGIwMmYzNGI3MTYxMmYxOTY3MiBsZWdhY3ktdHJ1bmsKKzIyODE1IDlkYTY4YzAzNzlhYmI5YmJlYjViMWZkYjkxYWU1MmQwMTc0MTUzM2IgbGVnYWN5LXRydW5rCisyMjgxNiBjNDg1ZDc3Mzc2ZmE0MDc1MDYwOGYzNTNjNTc3ZjM0NTgyZWFlNzEzIGxlZ2FjeS10cnVuaworMjI4MTcgNDc2ZWI3ZGNlZWVjMjQ5N2Q0YjE3ZjJiMGUwYjcyNjI0YzM4YjExMCBsZWdhY3ktdHJ1bmsKKzIyODE4IDcyNTc2MmNhMjc3NDlhZDZlYTk3YzM3NTlhODQ5MmFkOTdhZjFkZmQgbGVnYWN5LXRydW5rCisyMjgxOSAyNjU4OGQ3MDM1MzA4ZjEwYzM5NTQwZjQzMjhjNmE4ZDU2MWU1NjZkIGxlZ2FjeS10cnVuaworMjI4MjAgN2VkYzJmY2UxZjg4MTU3NDgyOGVkOGRlYWFmZDRiZDRmY2RjOWIyYyBsZWdhY3ktdHJ1bmsKKzIyODIxIGI2NzMwOTQwN2NmYzg4NTRjMTM0MGYwMGMyNDU4ZDE2ZjdjZmZmY2YgbGVnYWN5LXRydW5rCisyMjgyMiBmYmQ0OWQxNzE3YzRjMjgzOGFkY2VhYTM1YWZmY2ZjOWZhZTYxYWJmIGxlZ2FjeS10cnVuaworMjI4MjMgZjZmOTM0MTliZmI2ODAyM2NjMjRiODBmZWUwZjBmZTM0MDc3Mzg4ZiBsZWdhY3ktdHJ1bmsKKzIyODI0IDQzZGRjNDZjNWE5OTY3OGM3OTAyZTI2ZTgzZGRhNTI2OTYzNzBjZWQgbGVnYWN5LXRydW5rCisyMjgyNSBkYzI3ODM5YzBiODBmYWIxZWYwYTMwNzhhZmY3MmU1NDM4MGQ4ODQ5IGxlZ2FjeS10cnVuaworMjI4MjYgZmQ0OGE1NWFjMzY0ZmUzMDdmYWMyNmE3ODZiYTg0MTNiNDFiZGQ5NyBsZWdhY3ktdHJ1bmsKKzIyODI3IDEzYTkzYTVkY2IxZGU2N2U3MmI2MmI0MmFiY2ZmNGRkODA5YWJkODAgbGVnYWN5LXRydW5rCisyMjgyOCA0NGE2MmUzYjcwNmY5MjdmMmFiMzAxNmI0OWIyNGVlZDJkYzdmYjY4IGxlZ2FjeS10cnVuaworMjI4MjkgYzBjZjFhMjRmYzEzZGQ5ZDkzMTQ0N2UzMjJiZjI2ZmQ1YzJiOGIzNiBsZWdhY3ktdHJ1bmsKKzIyODMwIGM0M2Q3YThmMDBhNDU5NWFhMDAyZmU2MmNlNGViNmQzNGJhZTY5MDQgbGVnYWN5LXRydW5rCisyMjgzMSBjNTlmMDZmMzhhNDY4Zjk4MDNlMGU3YTFkZGUzNjQ5YjczZDE2ODI0IGxlZ2FjeS10cnVuaworMjI4MzIgNTAwOWZhNmRkZmViMzIyODY3NWI1NjFiNTU4N2YxNzlhMWI1MDJlOCBsZWdhY3ktdHJ1bmsKKzIyODMzIDJmZTA4OTE4ZmFjNjY3YzlmMGUwYTExZjZkN2M3MjZmMTRkOGQ3MWYgbGVnYWN5LXRydW5rCisyMjgzNCA4NDQ1NTM0NzNmYTQ2NjhmMDM0YTlkODEyZGNhNGUyOTI3NWNlYzAyIGxlZ2FjeS10cnVuaworMjI4MzUgYmYyYzc3ODQwZjFjYzZmZmIwODcyYTE5NTg4YTY3MTYyZjE3NGE5MSBsZWdhY3ktdHJ1bmsKKzIyODM2IDQ3ZTBjMGZkZDRjOGEwMDc5N2JjN2E3ZmU1ZmUyNWM5YTIyMmJkMDYgbGVnYWN5LXRydW5rCisyMjgzNyA4NTc2NWU2MWRlYjBjMzFkODNkNDBkZDU5MDIyYzBhMjI3YTcwNjdlIGxlZ2FjeS10cnVuaworMjI4MzggYTgwYjRiMDA2ZWI3Y2YzM2Y4MzgyYjIxYjNiMzY5MTUxYjdiMTA2MCBsZWdhY3ktdHJ1bmsKKzIyODM5IGM0ODY1NDk1OWRjNDZmZDAxNDllOTEzYmRiZTBlYzBiMjFiZGQ1MTggbGVnYWN5LXRydW5rCisyMjg0MCBkYjM2ZTM5NmYwNDMxNzIyYWE2YjAwMzJhZTllMjcwNjYzNmU5ZDc5IGxlZ2FjeS10cnVuaworMjI4NDEgMWJlMThlZjg2OWE0Nzg4OTM3M2RhMzIxOTliNDRjZmM3OTcxNzU4YSBsZWdhY3ktdHJ1bmsKKzIyODQyIGJiZGY4NmYzNThlOTU1ODg4YjQwNGQ3ZDUxZDU0MGM3OTE5ZTBlNGIgbGVnYWN5LXRydW5rCisyMjg0MyAwNjYzMTU0NDc5NDE2YjA5N2I0ZmQ1MmFkZDI2YWQyZGI4MzA2ZTI5IGxlZ2FjeS10cnVuaworMjI4NDQgMDBkZTcxOWFlODMxOTc3OTRiNTVmYjljNWFmMDI0OGQxNTNiYzJlYyBsZWdhY3ktdHJ1bmsKKzIyODQ1IDFjZWNlNzQzYTcwODQzYWMzMzFmYmJiNmRhZGM1ZmVkZDdlMmM4M2YgbGVnYWN5LXRydW5rCisyMjg0NiAwNGZkMzg2OWM2YmJlYjIwNWQxMTkxZDcxMWRkOTZjNzViZjJlMmMxIGxlZ2FjeS10cnVuaworMjI4NDcgOTA0YjJmOTgxMWEyOTEyZWRkNWFmNTU2YTE5MTM1NTQ0Y2QwZGU4ZiBsZWdhY3ktdHJ1bmsKKzIyODQ4IDVkOTczNDQ4ZTY5MWRmMzM4NTRlYjQ2Y2YyMWU3YWUyMWVhNWUxY2YgbGVnYWN5LXRydW5rCisyMjg0OSA0YWM5YTQ0YzdlNDc4YzlmOWI4ZjFmYWE5NjJhOTAzNzBmM2E5MTcxIGxlZ2FjeS10cnVuaworMjI4NTAgMTBiZjRiZWQ1MDk2Zjg0YjE3MzE0ZGUwNTBhN2FlOTY2Yjk1Yzk2NiBsZWdhY3ktdHJ1bmsKKzIyODUxIDZkNWFjM2M0MzQxNjM0ZjYxNDZkMmFiOWQyMmI3ZmM3MTM2NTcyM2YgbGVnYWN5LXRydW5rCisyMjg1MiA0M2ZlOTM3N2UyY2Y2MDM2NTZkNTE0YjM5YzJiMjg5YzZjZTFmODE5IGxlZ2FjeS10cnVuaworMjI4NTMgNmJlYmE4YjZmNjBhZGQ5NmIwYTZlZDg5NTNkMGEwM2E4NDYxZTllYSBsZWdhY3ktdHJ1bmsKKzIyODU0IGI0ZTkxODYxMmRjOTc1MGJlZTM4ZDFhMTc5NzZhNzY3NDQxZTcyMmIgbGVnYWN5LXRydW5rCisyMjg1NSBjNzczZGFhNDQ4NDA2ZThjOTRkZDlkYjRhZjY2ZGZmMzI5ZjMyODFhIGxlZ2FjeS10cnVuaworMjI4NTYgOGYwMzU4MDBhMzczZDc2Yzk5NjZmZDcyZmYwNzZjM2M2OGJmYzJjZCBsZWdhY3ktdHJ1bmsKKzIyODU3IGMzOTZhZmVmMWFhOTIzMjlhNDFlNzA4MzFkNGU5ZDIzMzVlMjQ1MGUgbGVnYWN5LXRydW5rCisyMjg1OCBmN2NmODk2MWM2Njc4ZTQwZTNkNTRlMzBkNGY2YzY5MjcxNmI3NjU0IGxlZ2FjeS10cnVuaworMjI4NTkgZjRhODk5ZTdlYzkzYWYwNTY4YjZiMjYyN2E3ZTZhNzc2Y2UxNTgyOCBsZWdhY3ktdHJ1bmsKKzIyODYwIDI1M2FhYTFlZGNiZDE4MDUzYjJhYjE0Y2IyYzBiOGQ2OGZjYTlkZGUgbGVnYWN5LXRydW5rCisyMjg2MSAzMzdiNTM2NzljNzM0ODlkOTUyOGUxMTRhMTZkNjg4ZTYyNDgzMmVlIGxlZ2FjeS10cnVuaworMjI4NjIgYjczMDEwN2RiZDEzNzUyYTBmYzk3NzMwMTUwZmQwMDUwOGMyOTgxMiBsZWdhY3ktdHJ1bmsKKzIyODYzIGE4ODVkODc2MWJkMjkwNTAwZjRhYWZkNDdkN2FkOWQ4OGI1NDM4OWMgbGVnYWN5LXRydW5rCisyMjg2NCA1NjYzYjg4M2VhNWQ5OTliNjE4NDc2ZThiODBiN2EwM2NhODNlMTk3IGxlZ2FjeS10cnVuaworMjI4NjUgYjcwNmMwMjdjM2MwY2ExNDI1ZDQ5MTYyMTA5M2NkMzgzZDBiMGQyOSBsZWdhY3ktdHJ1bmsKKzIyODY2IDBiZWM2OTk3ODNkMDA5YmRjMmEzNGY4MmI2NjFhZjU1NTlmZDg3NWEgbGVnYWN5LXRydW5rCisyMjg2NyAxYWMxMTBlOTA1YzJmMjVlNGE0OTVhOWNiYTAwYjBiNDAzYmI2MmQ3IGxlZ2FjeS10cnVuaworMjI4NjggMzhhNmRkZmY4NjZmMTc4NmU1NjQ0ZTIwNTUzOGMwNGJjMGYwMzZhZSBsZWdhY3ktdHJ1bmsKKzIyODY5IDBmNTE0NjVmOWYzMzQwYzY5ZDEyNjQzMzUxMzU1NDI2MDdlMGY5MmUgbGVnYWN5LXRydW5rCisyMjg3MCBkMTA2NTNlNzFjZmUwNDIyMDVjMzY4MGJiMjg3YmNlZGFkMGJkNjMyIGxlZ2FjeS10cnVuaworMjI4NzEgZjA5YmU2NDFjN2EzYTFiMTkyZGRkMmFjZTdjZjAxYmM2ZmY5NTg4NiBsZWdhY3ktdHJ1bmsKKzIyODcyIDU0NTA4MGUzMDYyN2NkY2IwZWNlYzA0MDEzODAyMjgyZjI5MWI3OGIgbGVnYWN5LXRydW5rCisyMjg3MyBlZjJjZjk5NDNhY2RhN2VlZDJjNDJjN2QwYmM3OTI3MDUxZjI0ODc3IGxlZ2FjeS10cnVuaworMjI4NzQgNDNjZDBiNGU3MjYxZmQ4MTBmOGYzYjk5MWQzNmUyNGEwODNmMjdjNiBsZWdhY3ktdHJ1bmsKKzIyODc1IGFlMDU2ZjExNDk3NDk2NTUzZTg4OTdkM2JiMjI5OGZkNDAyMjMwMDAgbGVnYWN5LXRydW5rCisyMjg3NiBhZDBjY2U0YTVkZTFmNzhhMjA5M2ZhYmNjYmYzZTE5MzZmYWZhMzZkIGxlZ2FjeS10cnVuaworMjI4NzcgMjBmYjc1OTFmODg1NTljMGE2OTY1NTIwMjA0OTI2MjQ5ZWRlNWFjMSBsZWdhY3ktdHJ1bmsKKzIyODc4IGMwYTQ0ODI5YmNkNWZmMjYxMTVmMWI5NWE3NzdjYjQwMWQ3ZTJmMzAgbGVnYWN5LXRydW5rCisyMjg3OSBjZjE5MTllYTk0YzI4YTJmMWQzZDk4NDBjODZiNjQ3Yzg3M2MxMjY4IGxlZ2FjeS10cnVuaworMjI4ODAgZjVjZGU3ZWViNmQ3N2RhNjlmYmY1ODczYzU2MDAzY2NiODBiNTAzOSBsZWdhY3ktdHJ1bmsKKzIyODgxIDcxZDQ1ZjMxNGQ5MGFlMzUyZWYxNmUzODI5YjMzYThkMzA5NTRhMjEgbGVnYWN5LXRydW5rCisyMjg4MiAwOGFiZWUyYTM5OGVmYTU0ZWY0NmE5OGQ0NjE5NTU5NjU1ZDBjMTQ0IGxlZ2FjeS10cnVuaworMjI4ODMgNDBmZWFlZGI3ODY3ZTM0Yzc3OGY2ZjdiY2JmMGQ4YmYyMmJkYzRiZCBsZWdhY3ktdHJ1bmsKKzIyODg0IDYwZjI5MGE3ZWFlOGMxNDg5YjNmN2Q4MjZhOTY4MTJlMmNlYTVjOTYgbGVnYWN5LXRydW5rCisyMjg4NSBmNGFmMjdjYjI2MzI0MGEwYTIxZTJlMjc0NzVlZDg0N2UxY2FjYzIzIGxlZ2FjeS10cnVuaworMjI4ODYgYzk2NDdmYTc4ZjA1MmYzZWYwYjUzYmFlZWYzNTAxZjA1NjEwMTIzNiBsZWdhY3ktdHJ1bmsKKzIyODg3IGUwM2NlMmQ2NTU4NTU3YTI5NDJkYWUyNjI4MDg2OWNlMmRlMWRjOWMgbGVnYWN5LXRydW5rCisyMjg4OCBiMWIwNDc5YzkxMDZkNWVkNzNhZmZmYzUxYmU2YTE1OTRjMmNjOWI2IGxlZ2FjeS10cnVuaworMjI4ODkgOTJkZjY4NDUxMjBkNjQ2MTgzNzllZmM5ZDY3NzU0ZGZhOGQ1NDRhMSBsZWdhY3ktdHJ1bmsKKzIyODkwIGQ1NWI3NWFjMmZiNDg4MzE2NWY0ODUwMDE5NzVmY2Y1OGVkYTRkZGQgbGVnYWN5LXRydW5rCisyMjg5MSA3OTc0MDlkOTcwMjI0NWEzOWIzN2M0MTVhODhhZGVmYzY3NTYwYjExIGxlZ2FjeS10cnVuaworMjI4OTIgMDFkYWU4YTAzZjg2Mzc2MjA2Yzg0ZmQ2YmVhZGE2ZmFmMTEzNzhkMiBsZWdhY3ktdHJ1bmsKKzIyODkzIGEzYzA0NWZhNDlmNTBjYTk1N2UzODU5YWIwNzc1ZDliMDc4ZDljYzIgbGVnYWN5LXRydW5rCisyMjg5NCBhNGZlZWZjZTBjZTg0OTY5YWM0OTU3NGYxZTcyMTA3MjMzZmY2MWVhIGxlZ2FjeS10cnVuaworMjI4OTUgZDRiM2I4ZTIzNTQ0YjhmNGRlZjgyYjc2YTliODkwYzRmNDZhMDhkYyBsZWdhY3ktdHJ1bmsKKzIyODk2IGIzOWU1NmRmZTM1ZDJiOTk0NGU0MjFmZjFkZjY4ZThiMTJjZWI2MjEgbGVnYWN5LXRydW5rCisyMjg5NyBkZTBmMDM1MjA1ZWY5YTM0N2MzYjQ2NzZjODg1NzhkZTJjYWM1OTM4IGxlZ2FjeS10cnVuaworMjI4OTggNzllMjMyN2U1MWQ2MTM2ZDhkMjJmNmVmMzVkZWZhMjhjOTVjZmUwYSBsZWdhY3ktdHJ1bmsKKzIyODk5IDZiODFmOWU5ZDg2MDBhMjg0ZmVhM2MyZTgzOGUxZWVkM2YwM2JhZDggbGVnYWN5LXRydW5rCisyMjkwMCA5MmQwZmFjOGExNjkzNGY1OWUyMjI1ODdjNTFiMzMyNmU2OGMyMTRlIGxlZ2FjeS10cnVuaworMjI5MDEgNTc1ZjUwY2VjZWJhMTgzMWE5ODkyMGY0MjM3ZmM4MDFkMjQ1NDlkZCBsZWdhY3ktdHJ1bmsKKzIyOTAyIDkzNzk2NTUxNmI1NDcyZjI5ZjRmNDU2OGI5ODJkOWJkMGU0NTU1ODggbGVnYWN5LXRydW5rCisyMjkwMyAyZmE2MTVkZmM0NjRjODBlMjYzNDBhNjRiYTg4YjYwZDZkYzFkZDM4IGxlZ2FjeS10cnVuaworMjI5MDQgODBiZWJjNTM4OWZkMGQxOGJmNTcxNWMxMWJjNGI2NDczYTAyOTg2ZCBsZWdhY3ktdHJ1bmsKKzIyOTA1IGI0ZWRjZTlkNmU5OTBlYzRlOTE1NjNmZGE2ZjYxOGE5ZDU3NjM5NmYgbGVnYWN5LXRydW5rCisyMjkwNiA4NGJlMGNhYjYzYTg4NGI0NmIwYTI3NmZlN2NhZGRmMjg1NWZkZmVlIGxlZ2FjeS10cnVuaworMjI5MDcgNzgwZTc0MTU4NWUxMGUyNmM1NmQxMWY4YmZjMWJiMzY3YWY4NjgzMSBsZWdhY3ktdHJ1bmsKKzIyOTA4IDhmOGU5NzExMzJiODY3Mzg0NjU0MjcxNDMwYTQ3MjY0ZWUyOWQxOTEgbGVnYWN5LXRydW5rCisyMjkwOSBlYzdhMmE2Y2RiZTljNDg2YTdhNjg5MTRiODMwZjY1YjBmMDAzNTdhIGxlZ2FjeS10cnVuaworMjI5MTAgMDhjM2M5ZWRkOTliYjBiYTFlNDgwODFhYmM0MGZlOGMwNzQ3ZjJhZiBsZWdhY3ktdHJ1bmsKKzIyOTExIGNmNjVlYmY4NzU2MDkxMzFlOGM5M2U2MzJjNjVkMTM4YTg1ZDU1ZDkgbGVnYWN5LXRydW5rCisyMjkxMiA4ZDM1OGMyNGRjZmJiMTA0M2E5NzBhOGZhMTFiN2RkYzE2ZWZiOTgzIGxlZ2FjeS10cnVuaworMjI5MTMgY2M2MDRiNzEwMzZjNGZmOGMyZDIxM2I0OGViY2M4NjI3NTkwOWM3OCBsZWdhY3ktdHJ1bmsKKzIyOTE0IDg3ZThmYzBhOTg2MmI1NTM5YzdmMmE2ZjI3YjE2MTNjNGY0OTY3NzkgbGVnYWN5LXRydW5rCisyMjkxNSA3OGNmYjk5M2YyNzQxOTA2ZDc0MTg3ZjBmMzY1Mjg0ZDkxN2M2OTJkIGxlZ2FjeS10cnVuaworMjI5MTYgN2RmMzAwZDI4NGM2YWEwMjNmM2IzZmYyNTA4MzA4NWNlMDY4OGFmNiBsZWdhY3ktdHJ1bmsKKzIyOTE3IDM1ODQ1NTBhNjIyYWQ1OWE2OTJlYWU4MjkyYWUxOWNiYmM3ZmQ0MGEgbGVnYWN5LXRydW5rCisyMjkxOCBiMzI3MTI5N2I5ODRlYTQ5YjY5MzYxNGRlYWNiODRiNTc3OGNiYmM3IGxlZ2FjeS10cnVuaworMjI5MTkgNzE1MjQ0MTA4ZmFhMGY3NzE4YmU5YjU4NjBmY2IyZGVmMmI1YzY5ZSBsZWdhY3ktdHJ1bmsKKzIyOTIwIDY4NWRjYWU1YzEyMzcwMjk4MzZiOWViMzllMTM2NzQ1N2EyMDkyODkgbGVnYWN5LXRydW5rCisyMjkyMSBjNzY4ZDMxOTFkZjFjMWViZWE1YjlkMTg3NmFmZjE2OGQxYmU2ZmY2IGxlZ2FjeS10cnVuaworMjI5MjIgOTE1MzM2NzVkNmNiZjBhZDVmMjc1MTc1MWQxNTcwMDU1NDVlNTQ2NyBsZWdhY3ktdHJ1bmsKKzIyOTIzIDgyZGI5YTkwMDZhYzVlZTNjZWJmMzczYWFhZmE1ZDY0YWU3OGRkMmMgbGVnYWN5LXRydW5rCisyMjkyNCA2OTU4Nzg0YjFjZWYwMTVjZGRmZTIzMmI4ODU2YTg4ZmI5OTVjNDRhIGxlZ2FjeS10cnVuaworMjI5MjUgM2Y4NGIyMDAwZjYyYjQxNDhmZjdhNGZmNjIyNzQwNjgwMTNhMTRjNyBsZWdhY3ktdHJ1bmsKKzIyOTI2IDdkZTRlNmI4ZDE5OWMwZTRhNDUyZGNlZGQxODNkZGE5MGQ3MzM0MGQgbGVnYWN5LXRydW5rCisyMjkyNyA4ZGZiMTNhNGUxNzVjMGYzNTE1NjEzNmRhMWQzYzU4NGUwZGU1NzcwIGxlZ2FjeS10cnVuaworMjI5MjggOGNiYzc0ZjU1ODZiNTA3NjdkMzBkNjJlZjNlZDZlNzI1ZWIxOTg1ZiBsZWdhY3ktdHJ1bmsKKzIyOTI5IDcxNGFlZWNjMjMxNjJmNzQ3YmFkMWFmZjdlMmVlZGNjOWY2M2RlZmQgbGVnYWN5LXRydW5rCisyMjkzMCA2ZWJjMjYzMzNlNmQ3Y2MxZWFlZTM4YWU1NmRhNGE5NjU2ZjZmNDI1IGxlZ2FjeS10cnVuaworMjI5MzEgNzQ5ZTQ5Yzk0N2MwNzFiZTkwMzBhOGQ4NTBiZmQwMzhjZTMwNTlmZCBsZWdhY3ktdHJ1bmsKKzIyOTMyIDM3MzFhZDFkOTAzMzNlZDExYjM4Mzg3MzU4YjM3N2U3ZjFjZTAyZWQgbGVnYWN5LXRydW5rCisyMjkzMyAzMWE2NmMwYzdkMzAxZTZhM2FlMjU3YWYxMDc4NzU4ZDVkNDg3OWZiIGxlZ2FjeS10cnVuaworMjI5MzQgY2ZjNWU1MTYwY2Y1ZGY4MjY1MDIxYjczOTI0MjY1ZGZiYjc0OTE0YSBsZWdhY3ktdHJ1bmsKKzIyOTM1IDZiODI4NTNkZjJlZGI3ODY3NzdmYjJkY2YzNWY5N2I2ZmQ0MDU0OTQgbGVnYWN5LXRydW5rCisyMjkzNiA5MzNlODEyOTc0YzNlYTkwZDkzZTJlMDIwNDU3NjY3MTY0Y2MwYzEwIGxlZ2FjeS10cnVuaworMjI5MzcgMDQyMThlODViMTU2ZmQ2NThmNDcwMGMwMTAwNDMwMGY0YjcwZWRjMCBsZWdhY3ktdHJ1bmsKKzIyOTM4IDYxN2Y1ZTcyYjBlYzgzMzJkOTJmZDk1YTE2NGMyNDMxYTIyOGJiODYgbGVnYWN5LXRydW5rCisyMjkzOSAzNzE2YjExNmZiMzEzMjI1NWI0NTc0Y2IxNTkwOWZlYWUzMWQ0ZDFlIGxlZ2FjeS10cnVuaworMjI5NDAgOTgzMGQwMGI4ODdkZmE0MjZkMGQ5OTIwNmJmZGE0ODhlN2RiNDI3OSBsZWdhY3ktdHJ1bmsKKzIyOTQxIDg0M2RhOTc5NTM4MTMwN2YwMTUyNDdiMWZjMTlmY2JlOWQ3MzQ2NDkgbGVnYWN5LXRydW5rCisyMjk0MiBiYzZiZDM1ZjU5OThkZjQ5ZjVkYzRmMjIxMDE5NDE2YzZiZTc3M2ZiIGxlZ2FjeS10cnVuaworMjI5NDMgMzcyZDhjMWQyYjY0ZTI4OGQ2MTAyMDcwY2U2MWU4ZjU1NjFkMWRiNCBsZWdhY3ktdHJ1bmsKKzIyOTQ0IDJhNGUzYzkyODViNTRmYmU4NmJjODdjMTJiYTFlNjc0MjE5MDlkNmQgbGVnYWN5LXRydW5rCisyMjk0NSBmYmFmNGU1NTI2M2Y5MTAzOTNmOWY4N2EzZjBkY2U4MzE0OTJkYmYzIGxlZ2FjeS10cnVuaworMjI5NDYgNDU2NTczNzZiOWI4Y2M5MzQ2MzViZmY2OGYyM2NhNjNhMmVmNzczNiBsZWdhY3ktdHJ1bmsKKzIyOTQ3IGQ2ZTFiMTA5MTYwOTcxYjM3MjQ4YWMxZGM2MmUzYzA3MzQ2M2UyYzggbGVnYWN5LXRydW5rCisyMjk0OCBlMjAyYTc1ZDg4MWUxNDc5OTViYjQzNjU1NmY2ZTc4NjlkNmVkYTY5IGxlZ2FjeS10cnVuaworMjI5NDkgMTkwMWY4NzViN2QzZDFkOGQ0ZjMwMmQxMjc5OGI2MmIxZGI4M2ZiYSBsZWdhY3ktdHJ1bmsKKzIyOTUwIGI3ZjZmYmMwODdhNzdlYWE3MDc2NzFiMjZiYTBlZTEzM2JiZTg0M2EgbGVnYWN5LXRydW5rCisyMjk1MSA1MDA1NTQ1YjY0ODdmMDZhN2VkNjlhZmZiM2QzMjA0NTFhZjI0NDc5IGxlZ2FjeS10cnVuaworMjI5NTIgMTFiMzczYjAwZjJhZmUxYWVmMDU3ZThjZjIzMGY4MDk0NzRkOWY3YSBsZWdhY3ktdHJ1bmsKKzIyOTUzIDZlYWZjNGE2MzU5YTgwYThlZTE1NDFlMDc4NjVhZTQ2OGI4MTExZTEgbGVnYWN5LXRydW5rCisyMjk1NCAwYjBjODQwNzhmOTE2MGRhMjYxNWVkODBmNzBjM2I0NzljOTBjNDRhIGxlZ2FjeS10cnVuaworMjI5NTUgMWM4YTk1MGQ2OTcwMGU3NWIxNDQzZTgxOGI0NzhlZjAxMTBkMjIwOSBsZWdhY3ktdHJ1bmsKKzIyOTU2IGJkMjUyYjE4MzJhMmRiYTE4OTA4MDJlYTBjMzYxNmM1NjVkMDA5MDIgbGVnYWN5LXRydW5rCisyMjk1NyBiNDUyMTQzNmU4ZjhmOTlkMjgxNzI3YTM3NzY3ODNhNTdkYmE1M2ZiIGxlZ2FjeS10cnVuaworMjI5NTggOTQzM2RkM2MxOTdlZjRiMWY2YTNkNWE1OTkyYjY0MWI1MDk2MDVmNSBsZWdhY3ktdHJ1bmsKKzIyOTU5IDQ1MGU1YTBlOTI2Yjk0MGRiODkzOWExNDcyYjg3NTc4NGM3MjQwNmIgbGVnYWN5LXRydW5rCisyMjk2MCAwZDk2MTQ1YzQ0Yjg5ZjZhMGZkM2I4MWQ3Mjg2MzVlNjE5MmI2MjBjIGxlZ2FjeS10cnVuaworMjI5NjEgZmIyZDgzYWFmZjY4NjQ1ZmU3ZjZmMmExMGY2YzE4NTRiYjE5NjY1MCBsZWdhY3ktdHJ1bmsKKzIyOTYyIDAxZGUwYTcwMzA2OThjNzRjMzI4ZTUxNGY1M2JmMmJhMmU2NTY2NjYgbGVnYWN5LXRydW5rCisyMjk2MyBkMTk2NDhjYTg3NDljY2MxYTQyNDliMTQ1NzUyNTlkYjI1YjhiNWVjIGxlZ2FjeS10cnVuaworMjI5NjQgY2RmZGQ1MzU5NDExYTA5NzQyOTBiNDA0Mjk3N2I3MmVlZjQ3YTA4ZSBsZWdhY3ktdHJ1bmsKKzIyOTY1IGE2ODRiNGMxMDEyODQzZTkzMWJlMzAyMjdhNjRhYjQ1Nzk3MTM1NTkgbGVnYWN5LXRydW5rCisyMjk2NiA3NzY2ZWE3MjQzMjA5NGY3OWYzYWJmMzQ5MzhkOTYyOGY0NDI0ZjU1IGxlZ2FjeS10cnVuaworMjI5NjcgMjFkMmI5ZWVkYzJkZTE3OTk2MDQzYzQ1OWVmNWEyMDQ2ZWEzMjY2MCBsZWdhY3ktdHJ1bmsKKzIyOTY4IDJhOWJiZGJlZmJiMWM5NGYxZDJmZTIwOTYzMTZlNzk3MTY2MTJjNjYgbGVnYWN5LXRydW5rCisyMjk2OSBiYTlhYWJjZDg5ZTNkZWNlYTJlZTkyZTFlY2Q1Nzc3OTk2ZDJmYjQxIGxlZ2FjeS10cnVuaworMjI5NzAgMjI2ZDVlZWZhNDRhZmQ2YjVjYmM1NmI4NjY4ODdhNjAwZDk5NjNhYyBsZWdhY3ktdHJ1bmsKKzIyOTcxIDU0ODdkOWQ1M2EwZTFlNTUyMTIxYmM5MDBkYjczMzMzNzUwOTYzZmYgbGVnYWN5LXRydW5rCisyMjk3MiBmMzAzNmQ0ZTNjMjJhZjgxMmYwODlhYWUxNDEzNWZlMWY3OTBjZjI5IGxlZ2FjeS10cnVuaworMjI5NzMgNGQyY2I2ZWFhNDExMzhjOWEwMDQyYjI1M2ViOGQxZDVlYjVjMDVjZCBsZWdhY3ktdHJ1bmsKKzIyOTc0IGRlYjA4YWY4OWEzNWQ2OTg4NDYxMmQzMmVmMTE0Mjg5ZDA2NjMwOWIgbGVnYWN5LXRydW5rCisyMjk3NSAyZTZkYTJkZDJhYjgyMDcwYjQxMTFmNTlhYjQ0ZmFmNTM1NDc3YTQ4IGxlZ2FjeS10cnVuaworMjI5NzYgODVlYjFjOTExYWU1YzBjNzY2YzBmNzg4ZWJmNWNlMzhmODAyY2QxOSBsZWdhY3ktdHJ1bmsKKzIyOTc3IGI3ZGM1MTU5NDQ4ZjQ4YTc3MzIyYjkyZGVmZGJkOWEzNDI4M2I1NjIgbGVnYWN5LXRydW5rCisyMjk3OCAyYzFhOTgzMDk4YTA2NGI0OGQ5MjVhMjkzOGY0ZmNmYjJjNGY5ZTU2IGxlZ2FjeS10cnVuaworMjI5NzkgZDlkYWE0YTY3YmUyNjIzODlhMTBjNGY2MjIxMTBkNGFhMTQzNDYzMiBsZWdhY3ktdHJ1bmsKKzIyOTgwIGY1NmM5MTgyMGZhZTJkMmNhODNiZDNmYTgyMWQ1NmIwYTg2MjdjZmEgbGVnYWN5LXRydW5rCisyMjk4MSAwZTQ2NDZiZjgwNDExMGUzMzdlZTM4NDk0YTdlMWU0OWE5ODEyYTQ3IGxlZ2FjeS10cnVuaworMjI5ODIgNTZjNTQ5YTI1M2E2ZTk0YzZmYzlhNmExMWE0NzkzYThlOWIyOTMyNiBsZWdhY3ktdHJ1bmsKKzIyOTgzIDVkZDI4YWEyYmU2YmZkMDA0MDQzMTJjMGM2NjQyMTU5MjAwOWQ1MWUgbGVnYWN5LXRydW5rCisyMjk4NCA4ZDJjNzQzNmI5ZDI3ZjdmMzI1Y2U2NDliNDMyNzAyY2QzODRlYTA5IGxlZ2FjeS10cnVuaworMjI5ODUgOGU2ZTI0OGRmZGQ4NjViYjhiNmMzMjAyOGI1YjQyNjE3MjY4OWExMyBsZWdhY3ktdHJ1bmsKKzIyOTg2IGE1ZWViMWU3MGY0MWYyZmU4NmRkODUyNzYxMjgyODY3ZmQ5OWMzYmUgbGVnYWN5LXRydW5rCisyMjk4NyAyYTQ2NWIwZWI1NGU0MjBhYTNkZjI0Nzk2ZGJmMmUzZjBlZWEyMDA0IGxlZ2FjeS10cnVuaworMjI5ODggODU0MTg3OGNmMmUxM2QyNTYwNGZhOTUwMzhiNGJmOGY0YzNiODcwYSBsZWdhY3ktdHJ1bmsKKzIyOTg5IGYxNDMwZTMzODJiYmU0YmFmODI0MmI4YjU4NTk5ODE2OTNjMTc1OWMgbGVnYWN5LXRydW5rCisyMjk5MCBkYzA1OWJmYjUzYjIyZWNkNjUxMjI4N2U5ZjBiYmQyMjU1NzhlMjJlIGxlZ2FjeS10cnVuaworMjI5OTEgOTg4NTZhNGFlZDEwMTcyNmFlNmQyNGI1YWQwNjdkMDFkODcxMmNjMSBsZWdhY3ktdHJ1bmsKKzIyOTkyIDdmYTQwNTk3ZGE3ZTdmOTJlMzQ4MGZjNjdiYTIwYzU3NTU0M2IyZDAgbGVnYWN5LXRydW5rCisyMjk5MyBjOTNkN2QwODU3YTI3NmRiY2IxYTEyNDMxZDExNTJjZTQzNGI1YzE4IGxlZ2FjeS10cnVuaworMjI5OTQgZmEwNjIxZTRhZDhhYzdmN2Y4ZDU3NGM0ZmFlMzRjNTMxYWUzNjljNiBsZWdhY3ktdHJ1bmsKKzIyOTk1IDM1YjZhMWQwYjFlMDU0YjRkNjRlMjA1ODlhZjhkMjRmZDhjYTE1NmMgbGVnYWN5LXRydW5rCisyMjk5NiAzZDc2ZGZjMzRjNTdlNjM3NTUyOGQ4MTc2ZTAxYmY4ZDU0MjFiYzgyIGxlZ2FjeS10cnVuaworMjI5OTcgZGJiOWQ4MmM3Y2UzN2ZmNDI4NTczMDQ5YTRmMjhhY2JiNzkzNDgwMyBsZWdhY3ktdHJ1bmsKKzIyOTk4IGMwNTgwZDhjMTkzZTNlMzNmY2I3OGM1Nzk0YjNhYTY0OGQyNDU1OGYgbGVnYWN5LXRydW5rCisyMjk5OSBlMWYxZTllYmYwNTAxM2E3MDZlNmYwNzkxM2M2MzIxNTRjYzlmZGIxIGxlZ2FjeS10cnVuaworMjMwMDAgNWE3YWM4YzA2M2NjY2ZjMGM2ZWMyN2EzMDRjZGQ5ZjVlMzRjMGZjNCBsZWdhY3ktdHJ1bmsKKzIzMDAxIGExZDM5NzA4ODViZGJlYmJlNzA2YWRiNjQ5ZjFlOGEyYjcwNzAwNTYgbGVnYWN5LXRydW5rCisyMzAwMiBjYTdmNzU3NmQ4MjNlOGM3MGI4NmQwMmE1Zjg4ODJkZWYwNTE3MjVlIGxlZ2FjeS10cnVuaworMjMwMDMgNjRiY2VmMTcwMmFkOTdhZTAxN2ZlZjZjMDc5ZmI3MThhMWI2Y2U5YSBsZWdhY3ktdHJ1bmsKKzIzMDA0IDhlODdjZGRlZDk2ZmJmZTdmNWE2ZTVjMmM0ZTMzNDlkNWU3NjE2YjMgbGVnYWN5LXRydW5rCisyMzAwNSA5NmRhOTg1Y2RlOTg0MjZhYWM0ZDNhMWI1ZDRkYTQ5M2E5MDZhYzIwIGxlZ2FjeS10cnVuaworMjMwMDYgNDQxNzViYjBiN2JmYzgwN2VlYzZkZGE5Mjk2MGRiYTk4MGQ0YTE0ZCBsZWdhY3ktdHJ1bmsKKzIzMDA3IGQwOTI2OGQwZWE1MjliNjQ5MTNjZTA0YjliYmJmYmM1M2IwYTcyYjkgbGVnYWN5LXRydW5rCisyMzAwOCA5NGQwZjJlZWEwNDdlMmU4YjEyM2UzMTk3NTFkZjRmMTA3MGY1NmQ1IGxlZ2FjeS10cnVuaworMjMwMDkgNTc4ZWYzNmY4ZmRlMGE0MmI2Y2JkZDRhNGJiZThlOThkODRjMzI4NyBsZWdhY3ktdHJ1bmsKKzIzMDEwIDVmY2QwZDQxYTQ0NmJkNjUyNTA3MDk0ZTAwZjRhOGFlNDE0N2Q3YmIgbGVnYWN5LXRydW5rCisyMzAxMSAyYmNjZThiYWI4YmJlOGRiZDM3ODIzYzgyNjU3N2E0MGVhMzMwZWM5IGxlZ2FjeS10cnVuaworMjMwMTIgZDU0Mzc4ZDMzMzRmZDQyOGUwYWFlYzkxOTQyMjgwY2M0ZjUwZDEwOSBsZWdhY3ktdHJ1bmsKKzIzMDEzIGQ0ZjUzYjFmYjQyNDBkZmMyYjM4N2NkZWUwZDI2Y2NmZGU5NWI1NzkgbGVnYWN5LXRydW5rCisyMzAxNCBhNWVhZWY0N2E5YjMzNjBmZjQyMmM3ZDNhNmE0MjgzMDJjOTA0M2Q5IGxlZ2FjeS10cnVuaworMjMwMTUgNDJkMGJkZTczNTMzZTEyNDVjNjM1MzE0MjZjNmZjYjI1ZjFlZjQ0MCBsZWdhY3ktdHJ1bmsKKzIzMDE2IDQzMjU5MTMyODQxMDI0NWJkOGI1MDY2MTdmMTQxYjAxOGJhNmNkZGUgbGVnYWN5LXRydW5rCisyMzAxNyAzMzViZjNlYWI5ZjFhZGQ5ZDlhNWYwM2E4OTY3Mzc0ODkwMTZmNWZiIGxlZ2FjeS10cnVuaworMjMwMTggNmM3ZGQ5YjNlNTBiNWYzMzY4ZDQxMzJjYjIzMzAwMzkzMzI4Y2NmYSBsZWdhY3ktdHJ1bmsKKzIzMDE5IGM1NTIzYjBmODlkNTgzZGVkZWQxZWE3MGUyZTAxYjM4NzMyMjZkZGQgbGVnYWN5LXRydW5rCisyMzAyMCBlZTEyYzM4ZTQ2YTZmYzAzNWM4N2FjMDIzZTQ5ZmU5NDE2MDY3NzkxIGxlZ2FjeS10cnVuaworMjMwMjEgYjIzMjM4NjQ2ZDE1NmIyZDE3MDk1NDFkYWFhYWZlYjg3NWM5OGM3NyBsZWdhY3ktdHJ1bmsKKzIzMDIyIGU3MTQ3MTU2ZWYzM2U3NGE0NzdiYzA3MTNhMWJhNDA5OTAyN2ZmMmUgbGVnYWN5LXRydW5rCisyMzAyMyAxYzYyYjRhNTk3ZjZlNzJiMDVjNzNkZjJmYzEyZmI1ZjM3YzVlZTgxIGxlZ2FjeS10cnVuaworMjMwMjQgMDdiYjA5ZGYzMzI0ZjEwMjAxYzg4MjkyOTk3OThkZDZhNDY3Mzc4OCBsZWdhY3ktdHJ1bmsKKzIzMDI1IDFjYzg0ZGZjZDZiZDI3NGYzYjU3ZjRiMzQ2NmVmODljMGNhYzI1ZDIgbGVnYWN5LXRydW5rCisyMzAyNiA3YjcyMmI2Y2M3N2IzMWMyODlmMjY1ODAxYWU3YWIzMDIzYmM3ODYyIGxlZ2FjeS10cnVuaworMjMwMjcgOWRlMmY3ZTFiNmU4YjliZTM4MWJhMTBhZjEwNjk1MzYzOTdiYzk4YyBsZWdhY3ktdHJ1bmsKKzIzMDI4IDEzYjY1NGNlNjNhNDc3YmY2ZDY4NWE1YTE4ZGNiYjFkMjNkYTQ5MDkgbGVnYWN5LXRydW5rCisyMzAyOSAxNzMxMjJlNWVkZTQxNzJjNDExYTFlOGI2ODBhZDcwNmI0NjgwOTVjIGxlZ2FjeS10cnVuaworMjMwMzAgYzczN2QxM2RhOTJkMmFlMGEwNjAzMGE2YTkwOGIyMTg5MTU1NTdlMyBsZWdhY3ktdHJ1bmsKKzIzMDMyIDRhYmZjMTc2Njg1YzMwMmEyMWMxNjAzYzU3ZTRjN2JjYzQzMDk2ZjQgbGVnYWN5LXRydW5rCisyMzAzMyBmODE0ZWE2YmI2Njc2YjgyNDE5NWM1MTIwOGRkNjYzYTdjOWZlYWUyIGxlZ2FjeS10cnVuaworMjMwMzQgY2FkOTMzYTQ1NGZlNjFkNGRmMTgwYWEyYmUyOTM4ZjI3ZThkYzY2YiBsZWdhY3ktdHJ1bmsKKzIzMDM1IDk0ZTE0MWUyMGQ2MThlOGUxMzFmOTBiZjdjZGFjMjYxMWJhYTg4Y2EgbGVnYWN5LXRydW5rCisyMzAzNiAwYjU3NzI5Mjg0ZGZiNGU2YzIzOWYxNmFiMzQ5NDFlMTk0MjZlMDk4IGxlZ2FjeS10cnVuaworMjMwMzcgOTA3OTcxMGVjMjE2OTZlMzk4NDY3OTgyY2JjNjFjOGM5MWI2OTZjNiByMjJhMy1icmFuY2gKKzIzMDM5IDk2MDQ3NGQxMjlhZWQ3MzY1ZWM3OWFhZWIwYTI2YmNhNGRmZTg2NDMgcjIyYTMtYnJhbmNoCisyMzA0MCBjOTdkZGEyMzhiMzYyNjYxYmFiNzdiYmE5ZDBhYzNhNzljNTJhMjE5IGxlZ2FjeS10cnVuaworMjMwNDEgM2Y2MjE0ODliZTcyMWRhNmU0YWU1MmJjZTQ0NjcyOWRkNzA1YjcyNyByMjJhMy1icmFuY2gKKzIzMDQyIGIzNWEyYmYwYzk4MGFiNDUzYjRkYWE0MzFkZDFhNGE5ZGMyN2RmMzcgbGVnYWN5LXRydW5rCisyMzA0MyBlMmU5ZjE3MjJjNGZhMjlmMGNmY2UwZmNkZDgzOTQxOTU4NzJlMDBkIGxlZ2FjeS10cnVuaworMjMwNDQgOTVlYTY2MTIyMzI1Njg4ZTI0YjdlYjE3MTRhZjMyMjM4NWZmNTczYSBsZWdhY3ktdHJ1bmsKKzIzMDQ1IDljNTRhMTZhYzhiOWVkYzUzNGRhOGE2ZDMyMTVmNDZjMjg2ZTAyYTEgbGVnYWN5LXRydW5rCisyMzA0NiA3MDBmZWZkYzAzZDI4NWYzMjRmYWNlMzNiM2E4Nzg1ZmEyYjgyY2ZiIGxlZ2FjeS10cnVuaworMjMwNDcgYzBmOTRiYzVmZmU4MDZlNzc4NjFmNjkyYmJkMTYxNDRhMTM4ZDg3OSByMjJhMy1icmFuY2gKKzIzMDQ4IDc3MDk3YTU1ZTk3MzFmMDVlMDRmNzhkNWE1MzI1NjlkMzllOWJmZTkgcjIyYTMtYnJhbmNoCisyMzA0OSAwMzA4MGUzOTVjOWVkMGZlYTg1ODM1NmZlOTAzNzVhZWJlZmU3YThmIHIyMmEzLWJyYW5jaAorMjMwNTAgNzhlNzNiODUxYWE5ZGJhMzY0ZmU5MWZmYjYzN2QzNDc5NjhhYzg5OSByMjJhMy1icmFuY2gKKzIzMDUxIDI4NWI3NDBiODQ0MTkyYzY3Zjg0MzgyMGM2MjZkNjRlZGFjYzY2YTMgcjIyYTMtYnJhbmNoCisyMzA1MiA0M2RjODI3ZGQ3MTdjYWZiYWQ1YjRhNDQ1YTdmMjY1M2Y1MWU4MTM1IGxlZ2FjeS10cnVuaworMjMwNTMgMDkxYzAxZDA3ZDk4MTQyN2NhMTRjMTIwODRkMjJmOTk4ZjllYzlkZCBsZWdhY3ktdHJ1bmsKKzIzMDU0IGQ0ODAxNGRiYjg1ZjZhOWE1YjZkMmVjMDQ0MGNmNWMzMDYyOTJjMDkgbGVnYWN5LXRydW5rCisyMzA1NSBlZDU0OTQzY2UyNGUwZmU0NDY4ODhmOTVmODA2ZDE4ZDk2Y2M0NzYxIGxlZ2FjeS10cnVuaworMjMwNTYgZmUyMjk3MjdhNDBjZmQ0OWRiNDE5NjNiYzUxYWFlMzJjZjYzNzdhOSBsZWdhY3ktdHJ1bmsKKzIzMDU3IGI0N2QyOTY5OWNkMjk4YjFiMmI0MzI2Zjg0NTUzYmU2OTVkYTM5MTggbGVnYWN5LXRydW5rCisyMzA1OCAzMmNmY2U0ZDgzZGMwNjA0ODBiOTFmYjQ4YTQ3YmM0OGJlYTNlODQyIGxlZ2FjeS10cnVuaworMjMwNTkgOTAzMWFhYjI3ZWFlZGQyYTUwYjRiM2Y0MzUxZTAzZDBmNzg4YzVjOSBsZWdhY3ktdHJ1bmsKKzIzMDYwIDU2MDE1NWU3NTA4NzhjMmRmMDAwZDlhZjU3NTA2OTFlZWUwMmEzZmUgbGVnYWN5LXRydW5rCisyMzA2MSA4Y2FjNWViNzAzZmQ4NDY1ZGMyNDA5ZWZjYTk2NmU0NTU1YTVjMjhmIGxlZ2FjeS10cnVuaworMjMwNjIgMDg2ZmZhZmFlZDU1MjU5OTBmNTQ4NzVhMGFkYTNlMDQ3YTIwMDUwOSBsZWdhY3ktdHJ1bmsKKzIzMDYzIDA1ODRjOTEzMjUyNWE1ODhlMDU0NDYyYzc0ZmQ4YTZlYjAyZjk4OWEgbGVnYWN5LXRydW5rCisyMzA2NCA3OWEzMWJhODczYTM0M2RkOTc1MzhhZTA0ZTJiZjQyYmNjY2MxZDVjIGxlZ2FjeS10cnVuaworMjMwNjUgY2U1N2ZmZjkzOTYyOWQwY2FiZTgxMzFlYTEzMDg1MDg5ZWRjMzM2YyBsZWdhY3ktdHJ1bmsKKzIzMDY2IDM4YzEyZmFmNjEyYWE1ODljODA5OTA0ZWU0MDc4NzUxMTE1NjE4NTMgbGVnYWN5LXRydW5rCisyMzA2NiAwODc5NmExMzdmMWFkYTI0NjJmN2EzMTc3MzA2ZGY1ZjY3YTc2N2UxIGxlZ2FjeS10cnVuaworMjMwNjggNzA0MTFlYmEyMjViMWE1MWY3Y2MzYTdmMjY4ZWU5NmY1Zjc1M2JlYyBsZWdhY3ktdHJ1bmsKKzIzMDY5IGRjODdkOTFkMGRmZDY4NWU4NTQ0ZTFlNjJlNDdkZGI0NzQ3YjdlODUgbGVnYWN5LXRydW5rCisyMzA3MCA4ZDU4NWQ4MjJmOWQwZGIxY2M5MTBhODJkNTVhMmMwMzBmNDhlNzNlIGxlZ2FjeS10cnVuaworMjMwNzEgMGNiYjA2MGRhMmMzNGJjZDA5NGVmNWExYmIxOTJkMDk5OGMzNWFmZiBsZWdhY3ktdHJ1bmsKKzIzMDcyIGI3Mzk2Mjg3Y2Y2NWI5NzI2YzI0ODUxOTc5Mjc5ZjVkNzcwYTAxYWMgbGVnYWN5LXRydW5rCisyMzA3MyA2YjFiZTE0ZDc2NTAzMjQ5MDM3NWQyMDBlODQ0NGVjMWMxZGEzOTAyIGxlZ2FjeS10cnVuaworMjMwNzQgNTNlMGNhZTNjZjZjZDA5MzFiNmU3ZDdlOGI3ODI2NjFjZTY0NWIwYiBsZWdhY3ktdHJ1bmsKKzIzMDc1IGZlNWVjMWEzYTdlMGY3MzBiMDdhMWQ2NTljYzJiYTRlZDJjZjllNjAgbGVnYWN5LXRydW5rCisyMzA3NiAzZjczYThiZjc2ZjdjOTliYTk2ZjE2OGU0NmNhYjFlMjdmOTU0MjkzIGxlZ2FjeS10cnVuaworMjMwNzcgM2RjMzE1NDA5OTY4MTQyYzBkNmQ1NmQ1MTFiZTNkZGFiNTQzYzM3NiBsZWdhY3ktdHJ1bmsKKzIzMDc4IDZlNTdkYzMwNTU1MTA4YTZmYzE4MzM0YTFhMmQ4MDE2Y2RjMDJlODYgbGVnYWN5LXRydW5rCisyMzA3OSAzNzIxNDk3NzkyNDA2NjlmODQ3NTMxMmJiYjg4OWQzZDlkNWJlMzE3IGxlZ2FjeS10cnVuaworMjMwODAgOTE5NTMyYzUwYTE3NTliODk0ZGI5NWYwMTA1NTM0YjQxZDFiNWEwMSBsZWdhY3ktdHJ1bmsKKzIzMDgxIDhlZjQ1Njk0OWI3NjI0NmFlZTg0YzY4NTUyZDk1ZTQzNWMzZTE3YjggbGVnYWN5LXRydW5rCisyMzA4MiAzOWVlYWI2ODlkMDY3YjA5Y2E1ZmRiMzgwOWIxZGE3MzE5NGMxNzU4IGxlZ2FjeS10cnVuaworMjMwODMgNWIyOGQ3ZGMzMDA2MjViNTgzZjJkZjE2MmQ4ODMzMThkZjM4NTdiMSBsZWdhY3ktdHJ1bmsKKzIzMDg0IGJiYWVhNTNhYzA4N2Y1ODY1NzgyZDUwNTgwZjU5MmY5NGJkY2Y5YzggbGVnYWN5LXRydW5rCisyMzA4NSBlNDE5MDYwZTEzYzhkNDQxM2YwZDdhNmRhNGMyY2ZhZjU5YTAzOTA0IGxlZ2FjeS10cnVuaworMjMwODYgMTM1OWZhYzYxN2YxYmI0N2I4NjZmMDZhNTk1NGNmMDk1Y2E1NGNkZCBsZWdhY3ktdHJ1bmsKKzIzMDg3IDAwZDgwOTQ3ZDgxNzlmODg5YTBjNzgyYThiNjMxMDIzNWFmMDA5OGUgbGVnYWN5LXRydW5rCisyMzA4OCBmNDQ2MDZiMjQyYzU5MTExNDA3OTE2MTQyNjk4OTZhODVmMmUxOTg1IGxlZ2FjeS10cnVuaworMjMwODkgNTMyNTBjYjEwNmViNDcxYjc0NDgzYWI2ODFlNjZkODIyNWYxMzQ5MSBsZWdhY3ktdHJ1bmsKKzIzMDkwIDljZjEzMzhmZDhkOTg1MDAyMjI5ZGJlYjE0YjM2MTliYzM1ZDkzYzMgbGVnYWN5LXRydW5rCisyMzA5MSA1NDIwZTdkMzQ4YTQ0YzYzMWI4YzM1ZWM5YmI1NTY0MzQwMWZiZGQyIGxlZ2FjeS10cnVuaworMjMwOTIgNTE1OGU0Nzg5NDU5MjE4MTBlMGQ2NjkzNmNmMTI2OTljYjA2YTc5YSBsZWdhY3ktdHJ1bmsKKzIzMDkzIGMxNTkyMGMyY2Y2Y2NiOWZlOTg4NDQ4NGQ0MDIzZjZkNDJjOGVkMTMgbGVnYWN5LXRydW5rCisyMzA5NCAxMGY1OTI3ZGJmMDVkMDg5ZGM2YjZiMzAyNjA2ZjVjNTVlNDQxM2U3IGxlZ2FjeS10cnVuaworMjMwOTUgMzc3NzQ2YTM4OTcyMTk5OGM0MWI5ZGI0OTQ3OTg3MThmYzk5NmZhMCBsZWdhY3ktdHJ1bmsKKzIzMDk2IGQ4ZGQ3NWUzYjMwNDY1ZmIxZTU3M2I2OTA4YmRmZmE4YjA1NWZlNmMgbGVnYWN5LXRydW5rCisyMzA5NyAyMDkyNGE3MGZhMWJiYzY0NzNhODJhNzcyNDY3NjBiZDhhNjQ4NDk2IGxlZ2FjeS10cnVuaworMjMwOTggNmZmN2VlODRkNWExNTgzNWQ5YzYxNGJjN2UwYTk3ZGIxODZiM2Y2YyBsZWdhY3ktdHJ1bmsKKzIzMDk5IDllNGQxYTYzMDdmNjM4NTU1MjViMzBiNzA5ZTMwZjhmMGMzZTNkNzQgbGVnYWN5LXRydW5rCisyMzEwMCA3YTk4MGM5OGM4YWVmZmQzZjIyZTNjOTAxN2M4NDJjN2I0MGZkOTc1IGxlZ2FjeS10cnVuaworMjMxMDEgNjYyZTIyZjk5NjM5ZjUwNzRlMmM4NGU4NDRjZTI5Y2FmYTgwZDMxMiBsZWdhY3ktdHJ1bmsKKzIzMTAyIGM1YzI0MWJlZjg4ZDNiMDY2ZjRiOGZhMWZhMDk3YzJjMmQwODk1YjQgbGVnYWN5LXRydW5rCisyMzEwMyA4YWY3NGYwMzU4YWMzOWE5YmNkMDk1YjAxYjRhNjJlNDI5NDZlNTI3IGxlZ2FjeS10cnVuaworMjMxMDQgYmYwMjAyZGFjNDQxNzE2MGJlYjc1NTFmZTdlZmQyNDlkZjI0YjZjOCBsZWdhY3ktdHJ1bmsKKzIzMTA1IDJiNTgxZjRjNjliNGYyMDk0ZTNmMTBlMjM4ZjMxNzI0ZTIzYmY5MDAgbGVnYWN5LXRydW5rCisyMzEwNiBmM2Y2OTQxMTFlYTA4MTYwYjQ3YTM2MTI0ZDkxZThiMDhkOTM5ZDMwIGxlZ2FjeS10cnVuaworMjMxMDcgNWU3OWJlZDM0MjZmOTNkZjMzNmZkNmE3N2VlMGQxOWE5MDc5MWE5MCBsZWdhY3ktdHJ1bmsKKzIzMTA4IDk4MzAzMjNmNWY4ZWIyZTU4YmE2ZWE1YTY3OGJkNjMzOTMyNzMzYTAgbGVnYWN5LXRydW5rCisyMzEwOSA0M2VkOGEzNDVmNGQ4MzM5MWQzODVlNWNkN2YyOGYzNzA0YzljNzBjIGxlZ2FjeS10cnVuaworMjMxMTAgNTU2OGIzMjA5MTRmNmRiOTU3NDIzMDdmODM3MjEzM2JlNDEwZTNlNyBsZWdhY3ktdHJ1bmsKKzIzMTExIDQxNDEzYzc4MzgzNjc5MzczOTYyMGU2ZDhmYWVhZDM0MmJhMGU3NzkgbGVnYWN5LXRydW5rCisyMzExMiA5YTViYmY4NDVjNjMzZWM3YTFlNjVjNThjZWYxNjFhMTBjNDQ3OGNkIGxlZ2FjeS10cnVuaworMjMxMTMgODczYmU4ZTM0NjJiZWU2N2JhYjUzYzdmOGJmODI5ZWMxNThjYTU2ZSBsZWdhY3ktdHJ1bmsKKzIzMTE0IDU4NzFlMGFhMDIxYjg1MGNjZDllYzlkY2NhMTliMTIzNjEwYTZlNjAgbGVnYWN5LXRydW5rCisyMzExNSAyYTgwOWIzZDAzZTk0YmZmNjA2NmQzZDJhNmVlN2M5Y2JhMTM5ODM5IGxlZ2FjeS10cnVuaworMjMxMTYgZDk5NzBkNjMxODc4MGI5ODhmNTM1NGUzOTBhYWY5MGQyMDcwYzdlOCBsZWdhY3ktdHJ1bmsKKzIzMTE3IDM2Y2ExNmRjMzViOWQ5OTlkZjA0YWNlYTMwMTU3ODBiNTMxNjI0MGYgbGVnYWN5LXRydW5rCisyMzExOCA2NzYyOThjMGM3NjI5NjM0ODg3OGMwZmUwNzJmZDRjZDE1MDhjMTNjIGxlZ2FjeS10cnVuaworMjMxMTkgMzA0NjUyZmZjNmFjNjAzNTRmOWRjNzNhMTMzZTQ4MDgwNDFjNTgxNSBsZWdhY3ktdHJ1bmsKKzIzMTIwIGYyYTMwMDliNTI4ZTkzZTVjMDYzY2E1NDZlMmU3NWEzYmI4OGRlNjIgbGVnYWN5LXRydW5rCisyMzEyMSBhMzQ5OTFiOTEwMDg2MTljYmM3ZTA1ZjA1YmI4ZWYwYmJmODIwNGMwIGxlZ2FjeS10cnVuaworMjMxMjIgNTc4MDcyNDQ3MGVlYjRlN2EwYmQ3N2UxZTAzZjZiYjAxZTQyMWU2ZCBsZWdhY3ktdHJ1bmsKKzIzMTIzIGFmOTgyODJlOTI3N2I3Y2RjYTg2MTliNzY5Y2I5ZTZmNGE0ODk0YjYgbGVnYWN5LXRydW5rCisyMzEyNCBkZjQ5MzY0NmVjNGRjZDllODZiMTMzZTIzYTk4NmEwZjcwODY1YjUzIGxlZ2FjeS10cnVuaworMjMxMjUgZTkxYjk5MTM4OTg1YWU5NTE1OGZiOGE0MTMxZWZmODQwZWI2OTY1OCBsZWdhY3ktdHJ1bmsKKzIzMTI2IDE4MDg2YzkxM2VkNWM1MTMxYjI0YWUwOTMyNmVmYzk0YmQ4ZTQ4ZWIgbGVnYWN5LXRydW5rCisyMzEyNyA1MTM2MzM0OGRjZmFiN2IwMmY3ZDBmNDRiYjczNTU1MGQ4NTYwYmZlIGxlZ2FjeS10cnVuaworMjMxMjggYTE5ZWVhNDE2NjhmY2ZmYTAwZWYxMmJiNDA4MDVjYjdiYjE5MTEzYyBsZWdhY3ktdHJ1bmsKKzIzMTI5IGVkM2U1MjlmYmU0NzkxYzhhYmU5ZDQyZjgwNjU2Yjg4NTM4M2M0NTQgbGVnYWN5LXRydW5rCisyMzEzMCA3MGJkZjg0ODYyYWQxY2IzMzQzZjhmNTNhNDQ0ZWI4NjdiZmNmNjJmIGxlZ2FjeS10cnVuaworMjMxMzEgYjg3YzA1ODYyODE1NTk2NzJlYzRkYjg5N2VhODU1ZjI2NDhhZTA4ZCBsZWdhY3ktdHJ1bmsKKzIzMTMyIDYyZDMxZWM0M2RmNjYzNDk3ZDQyYzhkNzNiMWYxZjFlMjZiMDk0OWYgbGVnYWN5LXRydW5rCisyMzEzMyBjYzE0NmVlNTI4OTc1YjUyNzNhY2Q4NmMxZjU3ZjA4NTVkNWFjMDRiIGxlZ2FjeS10cnVuaworMjMxMzQgYmM1MDU4MWIzZDdjZGUyNzhmZGNjMDUwY2JiYmJhZmExZWY2ZjM5NiBsZWdhY3ktdHJ1bmsKKzIzMTM1IGQxY2Q0Y2Q3MjI3MWUwN2E3NTdmZjkwMDRkNDgwMGRmNGEzZWJkMmEgbGVnYWN5LXRydW5rCisyMzEzNiAxNmU0ZDA5NmY3ODdkMWE5NTI0ODkyYmI5MWYxNDdhMzRkY2M1NDFhIGxlZ2FjeS10cnVuaworMjMxMzcgOTZmNTNmODgzMWVlZTRkMjkwOWY2OGY4Yjg2NzIzNWJjNmE1YTk2ZSBsZWdhY3ktdHJ1bmsKKzIzMTM4IGM4ZmVjZTM3ZjAyMGIwZTk2MjYyM2YyODkwMWRlOWMzNjE5Zjk0MTMgbGVnYWN5LXRydW5rCisyMzEzOSBkZjY2YjRkZDBiMGRiYjQ0ODhiYWNmNmEzZjZiYTc3YTBkN2Y2Yzg1IGxlZ2FjeS10cnVuaworMjMxNDAgNzJlNmViNjUzMzEyMDdiODE2ZTNlYmE1YjA4MmI0NDkxNDQyYWY1MiBsZWdhY3ktdHJ1bmsKKzIzMTQxIDNiMGRhMTNhY2U0ODU3MjJlZDJlNDY4OTE1MGEwMjJjNmFkNDdlMjEgbGVnYWN5LXRydW5rCisyMzE0MiBiMjhmYzhjMzZlM2RlNzhmN2UxNTExOTNjODkwNDQ0YjNiZWQxYzM1IGxlZ2FjeS10cnVuaworMjMxNDMgMmRhNjZjZTdlZTIyOTUxNzQ3MjA5MzQxMzEyYzk2NGUxNWQ5YmJjNCBsZWdhY3ktdHJ1bmsKKzIzMTQ0IDczMzMxNGZjZmRhYTBhOTVlZjZiYjc4ZDdmZWVkMjQ4MmMyZWZmNzkgbGVnYWN5LXRydW5rCisyMzE0NSAzMWZlOGIzZTI3NmJhYWRlNDUwMWY3NWQ1OGYwN2I4NGNkODEwYWE0IGxlZ2FjeS10cnVuaworMjMxNDYgYzMzYTg1NWMxMjc0NWY4MmE5YzhkNTJkY2Y4ZDliZjI3MmRlMjgwMCBsZWdhY3ktdHJ1bmsKKzIzMTQ3IGU5MTNkNzU3MTNlNjQzMjUxNzM5YWQ2MjFiODY2NDU1YTBmZWEwY2IgbGVnYWN5LXRydW5rCisyMzE0OCAzYWYwMDY1MDM2NzhhN2M0ZWE2MjU1YWIwNWY1ZWUyMzQ1NjkwZjA5IGxlZ2FjeS10cnVuaworMjMxNDkgNTFjYzgyNjA1ZDMyZGI3YjE0MmY1NTM2NmU5MWRlNmIxZGE0MWZlZiBsZWdhY3ktdHJ1bmsKKzIzMTUwIDFjNDFmYmQwOWQ5M2E2ODYxMWMyMGVjYTdiMDhkNDc4Y2MwMDY3YzAgbGVnYWN5LXRydW5rCisyMzE1MSAwNDkxZWE2MTFiYzRiNzczYzFiYjlmY2E1YjUwY2ZjNjAzZmRhNWU3IGxlZ2FjeS10cnVuaworMjMxNTIgODQzNzYzNTZmZjg5MGU5MDI3OTIwZGQyMjQ2ZjBkNmRkYTRlYWUwZSBsZWdhY3ktdHJ1bmsKKzIzMTUzIGZjNDBkMGI1NDA0MzdlOTg4NzM0MjgzNmUxYzMzOWEyY2ZmZDY0ZGQgbGVnYWN5LXRydW5rCisyMzE1NCAxZjYxNTI2MzA3YzAwYjY3ODhhMWE2OThiYzg5ZjQ3MDg1Njk2ODE1IGxlZ2FjeS10cnVuaworMjMxNTUgZmYzNzc0NzJlYWM5NDBiMjVkYTEzMTI0NDY5ZTI3NGM2ODI4MGYxZCBsZWdhY3ktdHJ1bmsKKzIzMTU2IDA3ODE4Y2JjZDMwMjY4OGNhMTI0MTc1NmZjOTllZjdjMTllZWU2Y2EgbGVnYWN5LXRydW5rCisyMzE1NyBkZTM5OTU2YjU0NTgwNDM2NWYxNjI0YTUyZTUyZDI3YjQ5ZDEyOGQxIGxlZ2FjeS10cnVuaworMjMxNTggYzA4Mjk3MTgyM2NlOTEzMDg4YTE5OGRmOWE4ZWJjMTlkNWNkNjhhNCBsZWdhY3ktdHJ1bmsKKzIzMTU5IDU4ZDUwMDk0YmY4MDg0NzQwMTFmOGI3NGRkMzgxOWE4NjM5YWE3OTEgbGVnYWN5LXRydW5rCisyMzE2MCBhN2JhMDBlM2IwZGUyZmQ0YmRjNzI5ZDMwMzUzZWRiZWM3ZjE1YmJmIGxlZ2FjeS10cnVuaworMjMxNjEgZjM5YTliZTdjOWFmNzQ2ODVjNDExZWE1NzgzMjkyM2EwY2E3ZmJjZCBsZWdhY3ktdHJ1bmsKKzIzMTYyIGQ2OGNmZDg1ZTZkYjliNWZiYmM4MzJmNmQyYzUzMWEwYzk3MzNiYjEgbGVnYWN5LXRydW5rCisyMzE2MyBkNTdhNmM4MTM2NThjYzAzMDBmNWY0ZDM2OWFlZTcwM2QzY2VkNWI2IGxlZ2FjeS10cnVuaworMjMxNjQgYTI4OGE1NWY5MjkxNTFiYmFkNWVhMmU2YThmNDY0MzBlNmE3NzgwMyBsZWdhY3ktdHJ1bmsKKzIzMTY1IDQ5YjdlMzk4MDg1M2JjMmQ1NTM0N2MxYmNkN2U2ZGEyYWMxYjg1NDMgbGVnYWN5LXRydW5rCisyMzE2NiBjYmE0NDlhYjU5MTU3OWM5NGZjZDJkN2MwYjVmYTc3ZjU5NmQzNjgyIGxlZ2FjeS10cnVuaworMjMxNjcgNzFjODUzZGVkYjA3MjkxZGVmMGJjZThjNDYwYWZjMjQ2ODg3NzIzYyBsZWdhY3ktdHJ1bmsKKzIzMTY4IGNhMGY1NGRhY2RkOGM0NWZlNWZiZDBjNjAwODRlZTBiMDRlZWQ5MzcgbGVnYWN5LXRydW5rCisyMzE2OSAyMDI3ZGMxMjRlZGRhZGJjOWU4MDRlYzZjZjBhMmY2NDI2Y2YyZTlmIGxlZ2FjeS10cnVuaworMjMxNzAgMjI2M2NiNDNlYWFiYmVhMGNmZDVlYjFjZTMxMjU0N2JiNmUyMjYxMyBsZWdhY3ktdHJ1bmsKKzIzMTcxIDFiNTVkNzljNjlkNWZlMDQ5ZDM1M2E3NTMwMzNhZGFjMWE2ZjQ2MWEgbGVnYWN5LXRydW5rCisyMzE3MiAyOTRhMzhhMTliNWE5N2VlNWFhZGUxYjg0Y2VkYmYwOTU0NWI5NjdhIGxlZ2FjeS10cnVuaworMjMxNzMgZDk2Y2RiYjRkMjdiYzFlMTVjN2I1ZmRmOGJlZjk2N2Q4M2RiYWExMCBsZWdhY3ktdHJ1bmsKKzIzMTc0IDhlNGQzNWJjNjczZmZhZDlkYjNjMmI5NzRiODc4M2Q5ZTFlMWRmYmYgbGVnYWN5LXRydW5rCisyMzE3NSA2MzkzMDE1OWNhM2M3MmE4YjhmNDQzZjM0Mzk3M2ZhYThjMjIwMDU3IGxlZ2FjeS10cnVuaworMjMxNzYgMTZmNjRkN2RhOGUzMjFjMjFkYTA3NTZmYmQ3ZDEwNjVlMzI5NDUwZCBsZWdhY3ktdHJ1bmsKKzIzMTc3IDk3Y2Y2ZGNkMGFlZDI3YTZiZGZiZWEyYWVmZWExODg0NjNiZDQzYzcgbGVnYWN5LXRydW5rCisyMzE3OCBjYjM1ZDBmNzA0ZGUwYjcwYjA2YjFiYmZlMTAxMmIwM2NjNjFjZTI2IGxlZ2FjeS10cnVuaworMjMxNzkgMDFmNjZmNWRiMzI2MTg1MzE4MmRjNGY5OGU5ODJlNzI0NmJiZDgyOCBsZWdhY3ktdHJ1bmsKKzIzMTgwIGRmNDA5ODQ0YjY1OTc5M2YzNjlmYWFkYjg1YWNhOTY4ZTY5M2RkNDEgbGVnYWN5LXRydW5rCisyMzE4MSBjZTQxNGE2ZDMwYjQ2ZTgzNmVjZTY2MWQyOTczMDBiNDgwZjQ3NDcyIGxlZ2FjeS10cnVuaworMjMxODIgMjg5NDQ1ODg3N2M4Mjk5MzcxMjkwOTFhMmI1NDYzMDc3Y2JjNTNkYSBsZWdhY3ktdHJ1bmsKKzIzMTgzIDYwNDZlOTU0NmE3MDJiNjE1MzIzNjFhOTFjNmZjYzk3NGMwNDk2ZDUgbGVnYWN5LXRydW5rCisyMzE4NCA5YmM3NmUzNmJhNTdlYzhmNWEzZmJjYzMxNDhkZmUzYjg1MjJmMWIxIGxlZ2FjeS10cnVuaworMjMxODUgMzZjMDdhMTcxOGU5ODkyOThlNjBkOGYwZjQ1N2U4YWFiNTdlMzc5YiBsZWdhY3ktdHJ1bmsKKzIzMTg2IGMzMjdhOGFjOWYyYjVmZDEwMGYwNWZhNDI2MGFlN2Q4Mjg1ZGFiZWQgbGVnYWN5LXRydW5rCisyMzE4NyA2MjFlZDEzNDQ1ZGU1NWY3OWE3YTEwMTc5NmI5ZDIzYTU5ZWFkYWQwIGxlZ2FjeS10cnVuaworMjMxODggYjZjZjJmMjdlNDRmYWE1M2RhZWQyNTMzOWQyNDMwN2Q3YmQ0NzkwNSBsZWdhY3ktdHJ1bmsKKzIzMTg5IGYyZjI1YTczOGY3ZjA5M2I0NGM1MjkyZDU3Njk2NmRjZThiY2M5NzEgbGVnYWN5LXRydW5rCisyMzE5MCA2MTlhMmQ2YjVlYTkyMTlkMTc2NDE1MmUzYzU2YTFlOTlmNjA1MjhmIGxlZ2FjeS10cnVuaworMjMxOTEgNjk0NGY1YjlkZTAzZGI5ZTg2MGE4YjkxYzhkNDdkYTkxM2Q3ZGRlZiBsZWdhY3ktdHJ1bmsKKzIzMTkyIDg5NmYyZDFlMmY0NmQ3NmMxNzM0MzMzNDE5ZDk5NDNhOWNmZjI0MWMgbGVnYWN5LXRydW5rCisyMzE5MyBmZDdhN2Y4MzIyNThkN2E5NzIzOGE5YzMzODJkNGUxNmJjNWQwODljIGxlZ2FjeS10cnVuaworMjMxOTQgYWFjYTRkM2NmNjJiNjc1YmUwNzBjNjc3YTIzMGY4NDE0MzgzZjhkZSBsZWdhY3ktdHJ1bmsKKzIzMTk1IDNiZjYyMmJjMjc5MjE4MTkzZGYxODgxNzE1NTQ1NjkzYTAyMGU1NjAgbGVnYWN5LXRydW5rCisyMzE5NiAwZDUzNWM4NmJlNWY1MmYwYTg0MTFjOGRjMWE5YTE5MjJmYTRlY2MzIGxlZ2FjeS10cnVuaworMjMxOTcgODUyMmIwMjJmODBhMjkzNWY2NjAyYWMwZTg0NjNiYzU1MmVkYjllZCBsZWdhY3ktdHJ1bmsKKzIzMTk4IDY3NzNkY2ZlMzRhMzY5MWY1ODBmMTllMjYyNTIyYzRlZmMxYjZhNTIgbGVnYWN5LXRydW5rCisyMzE5OSBkOTQwYWY1MjU4NDA4ZWQ0OGQwYmQ5ZmMyNDNhMzMwM2M5YWY3M2ExIGxlZ2FjeS10cnVuaworMjMyMDAgYmU0YmFhZmE0YzUyOGQwNjIzNTY0ZTNlYTc1NDU5MGUxZmY5YjZlNyBsZWdhY3ktdHJ1bmsKKzIzMjAxIDQxNzk5YjcwYTk2YzFlM2NjMTE5ZWE5MzNjNjJmOWE1MDhkOTFiNTkgbGVnYWN5LXRydW5rCisyMzIwMiAzZjE5MjI5OTA5MDM0OTI0MGNhMzJkYTA5Y2NmYWM0NTg3YzE1NzAwIGxlZ2FjeS10cnVuaworMjMyMDMgZWFmMTIwM2I4NWNmZDA4NGUwMjdiYjRlNGE5YTdmOGI5M2U2ZjRhNCBsZWdhY3ktdHJ1bmsKKzIzMjA0IDA0Y2UyYTQ4YzBhODMxYTg0YjFhMjJiNTYwOTllODRiMDZhZDFiODYgbGVnYWN5LXRydW5rCisyMzIwNSA3NjEzM2E0NjVlMDM5NmY0OGNkZjNjYzk1ZDJjNTQ2MjY3NWZiMjVjIGxlZ2FjeS10cnVuaworMjMyMDYgNzg5NDZhNzg0MzUxMjAyZDA1MmQyZmFiMzliZjRmY2E4ZDUyYzYzMiBsZWdhY3ktdHJ1bmsKKzIzMjA3IDk2YzRhM2YwOGRjZTI0ZGJkZjVmNzA1MWUxOTkwMGNiZmVlOThiZjEgbGVnYWN5LXRydW5rCisyMzIwOCAwZjlkZjU2M2I2NWRlNGUxNDgyMjMxYTNlNGQ0ODRiYjE3ZTIxNjFlIGxlZ2FjeS10cnVuaworMjMyMDkgODRhZjFkZDAxMWVlMzNmN2FjZGY5ZGU2NjY1ZWRkMDg3MmI3NzkxNyBsZWdhY3ktdHJ1bmsKKzIzMjEwIGYzNmEyZDQwYTFkZjY4YWYzNDIyMzMxNzExMDQ2YTdjODRmZjIzMzIgbGVnYWN5LXRydW5rCisyMzIxMSAzMzY2OWM4OTE0YjRhZTEyM2MzYzk1ODQyN2E5MGQ5Y2JmNTQxNDUxIGxlZ2FjeS10cnVuaworMjMyMTIgOTA5OGEzMDhhNTdiMDc4Y2EwMjY3NDNhNTcwYjcyOTliOGE1YmMwOCBsZWdhY3ktdHJ1bmsKKzIzMjEzIDYwODFkNzM2MTY3YjBlNjkzZjA1YjM3OWVmYzA3NWY2ZDAxNTUxMWIgbGVnYWN5LXRydW5rCisyMzIxNCAwM2YzYWIwYzcyODZkY2ExYWViZDEzNmFkYTdiNjRkMTdkNDI4YjY1IGxlZ2FjeS10cnVuaworMjMyMTUgY2FlM2ZmMzFiZDkxMmMxNDM3ZGFiNDZjODIxM2E4YzNiNTlmODNmYyBsZWdhY3ktdHJ1bmsKKzIzMjE2IDA4Mzc0YTg1MjZlMjEwM2ZkNmMwYjZjZDQyMGIyMGQyMWRjMDdhMmUgbGVnYWN5LXRydW5rCisyMzIxNyBjYzUyYjA1YWM5Nzk1NDQyYTc0NzdkZjgxY2RmODExYzM1YThjMTdlIGxlZ2FjeS10cnVuaworMjMyMTggOTY5ZTMwNmI2MmZkZTliZGE2Nzg0ODYzNzBiOTNjNzUxODIwYWZmNCBsZWdhY3ktdHJ1bmsKKzIzMjE5IDQzZTVmZDU0ZjhjOThkOWE3ZGY1ZjI5ZTVkNmQ5M2RkOGNmODY4ZWUgbGVnYWN5LXRydW5rCisyMzIyMCA4MTc3NDVlNWFkZmIzNzZkMTY1NzE4Y2Q0YjhjMjQxZGUxOTg4NmUxIGxlZ2FjeS10cnVuaworMjMyMjEgNDg2ODkzNDZlOGJiZDY2NzAyYjRiMTc0YzZlMTRjMzVhNTJlMzAyMSBsZWdhY3ktdHJ1bmsKKzIzMjIyIDBiNTFlNjA3ZjMzMzdmOTQ1NzAyNDRkOTY5YWQ1NTVmODNmMTQzMTQgbGVnYWN5LXRydW5rCisyMzIyMyBlOTEyOGVhNDVjZGE4MjNlNzc4ZTU5MDIwNTE2MDk0MDVlNGYxY2Q3IGxlZ2FjeS10cnVuaworMjMyMjQgYjE0MDhhMjhkOGJlMmI2ZjE2Nzg5ZTMxYzUxOTQyYjQ1Y2YzNmI1MiBsZWdhY3ktdHJ1bmsKKzIzMjI1IGY3NjFjYWIyOGMxYzEwZjQ5NWU5ZDEzMjZmZmFiOWIzYmY4ZWZhNzAgbGVnYWN5LXRydW5rCisyMzIyNiBkNGM5NjUzMTY2MTA0ZjY5ZGZlNGIzNzFjMTQxODJjYTQyMDBlYTg2IGxlZ2FjeS10cnVuaworMjMyMjcgMjBhZGZlYzYxNDY3ZDViYzRkYzJhMjNmNzIzNzg1YWEwMjFhMWMyNyBsZWdhY3ktdHJ1bmsKKzIzMjI4IDA1ZjZiMDk4OTk1MzJhNjYxN2I1NmNjMjliOWRkMGQyYWViOWI5OGMgbGVnYWN5LXRydW5rCisyMzIyOSA4ZWRjNDRiZDBhYzdmMTQzYTM5MDdlNTNmODU4ZDAwMmI2NjNjOGI0IGxlZ2FjeS10cnVuaworMjMyMzAgNGU0NDVhM2UwN2M2YjUzNThiOWZlMWZmOGViZjQyZjJiMjQ0YTIzZiBsZWdhY3ktdHJ1bmsKKzIzMjMxIGRhMDAxODhkNTI3MDlhZjY4OWEzNTNkOTA5ZmVjMTMyMjg5NTRlOWUgbGVnYWN5LXRydW5rCisyMzIzMiA2MzEzZmEzOGU5MGVhZGEzNGQ2NDA5MjI5NzgwYTk3MWViYWRmYmZlIGxlZ2FjeS10cnVuaworMjMyMzMgYTk2MGU2NzMwNzdmYzViMjgzNTVlMzFmMWY1NDJhZjcyYWZiYzhmNyBsZWdhY3ktdHJ1bmsKKzIzMjM0IDhkY2ZhZjBlNjU1OWJiNmRjYjQxYmE2OTRjYjgyYjJhYmVjNjA4OTQgbGVnYWN5LXRydW5rCisyMzIzNSA5YWI2YWY2ODE1YWZjYjZkYTA2MDVjZmViYzhjOGIwOTJkOWUxMzhkIGxlZ2FjeS10cnVuaworMjMyMzYgMGZkOTUyMDBhYjZlYzRkN2EwNDkxNjJmNTMyOTQ0MmYxZDA1ZDI4MiBsZWdhY3ktdHJ1bmsKKzIzMjM3IGJmNGIxYjA4YTJjNmYyMjlhOThmZGNiODM3MmQyODNiY2I5OTg3ZGMgbGVnYWN5LXRydW5rCisyMzIzOCBkNTY0NmMwYzUxMzBjYzJmOTJkZTA3MWFjMTM4YjhiZTg3ODM2OWFjIGxlZ2FjeS10cnVuaworMjMyMzkgOTg4MTJkMjIxMDc1MTgwNmNlNzJmNjM2MjgzMTIxMDRiYmUxNGFiMSBsZWdhY3ktdHJ1bmsKKzIzMjQwIDcxMmFmZGFlMTEyMzk0YzBhOTg5ZjBmMTRhNWNjOTU4YzkwOGQyNzggbGVnYWN5LXRydW5rCisyMzI0MSBmNDJmODliNWI4ZjliYjQ2YTJjNDViMTUwZjNmYTM5MmI0YzJiOGJlIGxlZ2FjeS10cnVuaworMjMyNDIgZGIxNmUyNmEwNzFiODM0M2MzOWI5MDRjOWU5MWMwZTI2MTkxYTI0NCBsZWdhY3ktdHJ1bmsKKzIzMjQzIGZjYjg3NzA2OWZhYTcxMTczMmMwOWJmMjA4MzgwZTI3ODRmMmY1ODIgbGVnYWN5LXRydW5rCisyMzI0NCBjZWM5ZTI1YWYxMjFiMTY1NzFmODEwN2IxMjIzZDcyMmNiMWMxZGU2IGxlZ2FjeS10cnVuaworMjMyNDUgZmZhMWE4N2FjNDNhODg2ZWYyNTQ4MjIwMjM1ODZhOTViOGQwMTExZiBsZWdhY3ktdHJ1bmsKKzIzMjQ2IDg3MTM0YzdmMmJjNzdiODM2NDU0YjZkNmE5NzM5MTc5MjEzNTcxZWQgbGVnYWN5LXRydW5rCisyMzI0NyA5ZDdjYTU5MTRkMWNlYjU2M2I1MGI4M2RlZjc4NDc4ZTUyNjVhODEzIGxlZ2FjeS10cnVuaworMjMyNDggMjhlZjIyYTI1OThlNWFhMzFiMTdlYmU1YTJlNDdiZDBiNmU2YmRmMyBsZWdhY3ktdHJ1bmsKKzIzMjQ5IGFiNmMxNDgyMmRlMWJmNjVlYzEwZGMwZTc2NmJlYzdmYTE2MTI4NzEgbGVnYWN5LXRydW5rCisyMzI1MCBiMDdjYjUxZDczMWM4NzExNWExNjIxNTcwZjNjOWY4MWNjYzY4MmZkIGxlZ2FjeS10cnVuaworMjMyNTEgNjQ2ZTI0NzI4ODUyM2I4ZWM5MGEwYTc0ZTI5ZjIyN2MyYjFkZjA0YSBsZWdhY3ktdHJ1bmsKKzIzMjUyIDk0MWMyODY4NjAzOTY4NGYwMjE4Yzc5MDQ3YjRmYjAzYTg2YmEzYzkgbGVnYWN5LXRydW5rCisyMzI1MyA4YTBjOTc0NTNkZjQ4MzVkMmZiY2ZiYTMyNGQ5MjI4MjY5N2UxMWExIGxlZ2FjeS10cnVuaworMjMyNTQgMWY0ZTI2MjdiNjI3MDExZDQzYjEwMjQzZmNhMWY2NzA2ZDQ0NTg1OSBsZWdhY3ktdHJ1bmsKKzIzMjU1IDM0YWYxOWRjZWY1OTNmMWNhZDBlNjdlOTkzM2U5MzRmODEzMjU2YzIgbGVnYWN5LXRydW5rCisyMzI1NiA3ZmZlMjc2YTY4NTRjODMyMjdkMjRkNTgwM2JmMWQxYmY2MmE2MzAyIGxlZ2FjeS10cnVuaworMjMyNTcgYjBhZmI2OTEzNDAxYWE3NGFlYmM5NjJhY2JhNWYwODc1YmYxYzU2NiBsZWdhY3ktdHJ1bmsKKzIzMjU4IGM3Y2FmNzlmNTE0MzNkODZiYzRiOTUxOGJlZDBmZmQ0NGU2NGFmMmQgbGVnYWN5LXRydW5rCisyMzI1OSAzODE1YzhhZDAyZDAzMzQwOTFlMjA3YTg2ZDA5OWQ2YmJmYTI3MTIxIGxlZ2FjeS10cnVuaworMjMyNjAgOWM4YjE5NjE1MDM0MTM0MzU2MDRmYWMyZTQ2NzZlN2ZjODRkZmU4NCBsZWdhY3ktdHJ1bmsKKzIzMjYxIDJhN2I0ZDQ0NjBkM2ViZTg2YjJkOTNlZDFmOTc3ODAwYTNmNTRmNmUgbGVnYWN5LXRydW5rCisyMzI2MiA1NmZmZWUxZWVlZWM0Zjk5MGRhMTJmZWE0YmYxMzliN2I5MDcyMGZhIGxlZ2FjeS10cnVuaworMjMyNjMgZWQxOGQ0NDM5ZjA4NGYyOWVkOTYyYThiOTAyMWE2OWQ1OTg1OGQ3ZiBsZWdhY3ktdHJ1bmsKKzIzMjY0IDBmZTMxOGE3ODk5MDQxNDlmYzAyODU1YTJjOTIzNzg0YjYzYWQ5ODAgbGVnYWN5LXRydW5rCisyMzI2NSBkMDNjMTlkYjMwOTQ3N2JlYjQ0ZTkzZTVkNzI3NWRlZDBjZTIwYWFkIGxlZ2FjeS10cnVuaworMjMyNjYgNzViN2U4YmRiMjFlZjYwNTQ1Yzk2ZWE4MWMwMzFmOWY2MTk5MzVlMSBsZWdhY3ktdHJ1bmsKKzIzMjY3IDNmYWFiZjU0YjhiODNkMTI1ZGZjZWNkNWJhOTc1MjQwNmMwNGJmMzMgbGVnYWN5LXRydW5rCisyMzI2OCBlMzE4NGU0NjMwM2I1NDk4MjlkZTY4MGE1NTYyMWRjODA4ZDAzZGI1IGxlZ2FjeS10cnVuaworMjMyNjkgZjAyMGRhNzgxYjkxNWNjNmFiYTNkYTY3MzA0MmNiZjZiM2YxYzA1YiBsZWdhY3ktdHJ1bmsKKzIzMjcwIGNhN2FmMmE1ZDkxNWI5YzY0ZjNhMzM4ZTU5NDI5NDhmM2ZhMTU1OTMgbGVnYWN5LXRydW5rCisyMzI3MSA3MTg5NWRkMjY4ZTJkMDYzODQ3ODYxNWZiNzk2YmI2MGM4OTdkZmYxIGxlZ2FjeS10cnVuaworMjMyNzIgMDg0NDZhOTg2YTU2MmQyYWE5MGVmMzU5ZTE5NzUwZDU3YTRhYTRmMCBsZWdhY3ktdHJ1bmsKKzIzMjczIDhhYTFhZGEzM2Y2NGUyMDI3YmM0Yzk5MzBmMjY0Y2ZhZjFkNTZmYjEgbGVnYWN5LXRydW5rCisyMzI3NCAwZmQxMmY5MmNlOGYwYzYwYzY1NzJjZWYwMjA3NDU4YzA3NzZjMjQzIGxlZ2FjeS10cnVuaworMjMyNzUgYjcwYzA4ODEzYmE5N2MyNGFhMDczMGEzZDBlNjk2NGExNTEzMjExMiBsZWdhY3ktdHJ1bmsKKzIzMjc2IDQwY2M2NjIxZWRkY2EwNzIxYmQxOTllN2U3OWRlMmY0ZmNhODRiZTUgbGVnYWN5LXRydW5rCisyMzI3NyAxMDlkZWY0YTVmNmU5ODUyYTYyMjFiMjNkNWE5NjU4ZWM3NmJjNzlhIGxlZ2FjeS10cnVuaworMjMyNzggNzI5ZmRmMDQ1NDk0MWU5NjBiOTIzZDliN2VhZmI4MDU4ZjE5NTVjMyBsZWdhY3ktdHJ1bmsKKzIzMjc5IDRmNzQ3MTQyZTg0YzgzOTkyNjBhMzM5Y2Q4NTM5MDE4YzAzM2M3ODQgbGVnYWN5LXRydW5rCisyMzI4MCBiN2VjOTg1ZDg1YzYxOTZlMjIwYjUyMDQzZmZlNmNkMTMxZmFmOTNhIGxlZ2FjeS10cnVuaworMjMyODEgN2M1Y2Q2ODVjMWRlMDJkOTc1ZjM5ZTBjZTc0YWNkN2ExYWViMjRmNyBsZWdhY3ktdHJ1bmsKKzIzMjgyIGU2M2Y5NzU2MmE2MjkxNDE2ZmViYjRkNGMwOGFjMDBhZGU5Nzc0ZTggbGVnYWN5LXRydW5rCisyMzI4MyBkZjFiODNmZDBlYmJkYmI3YWRhZjdkMDljZTJlNmJmOWEwYmQ4M2E5IGxlZ2FjeS10cnVuaworMjMyODQgNGJiYjRkOWI0ZDc3NjQxZDBkNTlhOTJjY2NhMjhhZmZjZTdmMWVlYSBsZWdhY3ktdHJ1bmsKKzIzMjg1IDYzNzhjYjExN2I3M2JiMzJhZTlkNTBkOWM0NTA0ZDI5MmJhNTA1ZjEgbGVnYWN5LXRydW5rCisyMzI4NiBlNWEzZjlkNzc2NmI3ZDBmNGI5NDAxZWM2Yzc4OGFmNWMzYmFkZTJlIGxlZ2FjeS10cnVuaworMjMyODcgNWM5YTk1NWVmMTdjZGExMTczMDEyY2RlNjI5ZTE3MWEzZjE0YTkyYiBsZWdhY3ktdHJ1bmsKKzIzMjg4IDEwNGI1YzliODhlYWU5N2RkYjhjNTkxNjIzOTRlMjE2OTk4ZThjNWYgbGVnYWN5LXRydW5rCisyMzI4OSAwNjJhYzlhYWZlNDdiODMwYjM0OWE0YmNjNTgxOTc4ODJhYjdhMmEyIGxlZ2FjeS10cnVuaworMjMyOTAgMDk5NmYwN2QwNGEzYWNmMGQ2MGMxNGUwNWZiNzg0MWIxMThiODBlZSBsZWdhY3ktdHJ1bmsKKzIzMjkxIGFiNjJkMTQ3YmE5MGYzNTk3NTM4ODhkMzU3NTNmMmUxNmYyYzMyZGYgbGVnYWN5LXRydW5rCisyMzI5MiBlNTIxZmMzNzBiZTIwNTBmNDUzYTZhMWU5ODBiZDQ0NzBlMDBkZjRhIGxlZ2FjeS10cnVuaworMjMyOTMgOGE2ZjJlZTZlYWJhMzFhNGNhNDY4YWQ3ZjRhMmExYTcyYWI0ZTlhMyBsZWdhY3ktdHJ1bmsKKzIzMjk0IDNhNGEwMDM5ZWRmMzJiZjY5MjU4ZDlkMGY5OWRkNTI5ZDJlZDcyNjcgbGVnYWN5LXRydW5rCisyMzI5NSA1OTg4MmU3YWFiODljOTEyNDQwZGQ3YjE1MDlkMzcyYzc0YWVkMTNiIGxlZ2FjeS10cnVuaworMjMyOTYgY2Q3MmI2NGFlYzk3ODljZWRmZTdmMDcyOWVlNDEyNDRmMWZlZDJkMiBsZWdhY3ktdHJ1bmsKKzIzMjk3IGUwOGY0MjNmOTE2NWMwNWNlZWQzNDAzMTY5MWE0ZDFiYzY1NjlkYWEgbGVnYWN5LXRydW5rCisyMzI5OCA2NmJiMTBlZTQ5NjEyYjkxNjBkYjdkOWFhYjI1YWU1NzI4NWVhZjY0IGxlZ2FjeS10cnVuaworMjMyOTkgMTkyOWZjNjk2YTA0ODQxYzNkNjFkZWY5OWY5MDc1ZGI2YWZlYzVlZCBsZWdhY3ktdHJ1bmsKKzIzMzAwIDdiOGMxMTczOTcxNGQyNzAwNjQ2ZjYzY2IyYjdjMDFhZWVmMDMzMTEgbGVnYWN5LXRydW5rCisyMzMwMSA5YjgxOGFmMGQ3MzBlOWJjMGE1NzY4YmJlOGNhYzVjMjRlYTg2NjY0IGxlZ2FjeS10cnVuaworMjMzMDIgNGM1Y2QzZDFjZjRiNWJjM2M4MWQyN2NiZTlhOGZlODU3NTdlYWQzMiBsZWdhY3ktdHJ1bmsKKzIzMzAzIDYzMTA4MzdjYTUzNDM5MTc3YWE0NjdmZjkwNGJlYWI0N2M5MzNhM2IgbGVnYWN5LXRydW5rCisyMzMwNCAxYTU4Yzc0NjYyZTkzZDY0ZDg2NjllNjdlM2IyNjMyYjM1MmRlODA0IGxlZ2FjeS10cnVuaworMjMzMDUgNmU5M2ExNTg2ODAwYTc5YTVlZjZiMGZkNGI3Yjk4YjhhYjkwMDBiMyBsZWdhY3ktdHJ1bmsKKzIzMzA2IDQ5NjZjZjc5M2I0NGMwNjIzOTZmOWNiMjMxY2Y5YzYyNzhlNjI1Y2QgbGVnYWN5LXRydW5rCisyMzMwNyAwZWU4OTAzZDNmZWQwMTcxMjdjZDE0MmI4NjIwYTFmODRiYmFkMmU4IGxlZ2FjeS10cnVuaworMjMzMDggYmZkNGUwM2FkMjEyZDI0OWRmNDk3ZmRmNWY4MWZlMWVjZjVlYWZkMyBsZWdhY3ktdHJ1bmsKKzIzMzA5IDkyMGM2M2NmY2EwY2RlMzI4MmFkNWZkYmVjNTZkZWM0MGM0OGM2ZTEgbGVnYWN5LXRydW5rCisyMzMxMCA4OGEwM2VhNTc3MTRmOGYxNTVkZmE3ZTYyNDFlMmVhMGUyMzFiMDlmIGxlZ2FjeS10cnVuaworMjMzMTEgMzNlZGM5OTg2MWI5MGQ0ZDNmNWE0MTA0YThmMzFlZmIzN2FjN2IyYyBsZWdhY3ktdHJ1bmsKKzIzMzEyIDViMWFkN2FjYWJiNWJjNTRjZWRkOTQ0ZjgyODY1ZWU3NDJmY2ZiNTUgbGVnYWN5LXRydW5rCisyMzMxMyBjMmJmMGIxMzM4MGUzMDRmMGQ2NjA5NzY5ZTk0NjgzZjUyYTQ5M2YzIGxlZ2FjeS10cnVuaworMjMzMTQgZDJkODM1YjM1ZDQ3NWU1Yjc1ZDJmNGEzMTA2ZGYwYzRkMWM1NTNlZCBsZWdhY3ktdHJ1bmsKKzIzMzE1IGNjZWMwMmJmZTlhMDU4ZjY0NDk2OGVhZGFjNTg2NmE1NjBiZTYwYjAgbGVnYWN5LXRydW5rCisyMzMxNiAyY2FkZGI4MmZmZWEyZjUzYmI5OGFmMzU0NzRlYTZkNWY1MDVlNDlkIGxlZ2FjeS10cnVuaworMjMzMTcgNjM5MDEzOWFkMDgyNWRjYjFkYWRiNzJlY2JjMTM1MmI2OTRhMmVhYyBsZWdhY3ktdHJ1bmsKKzIzMzE4IDlhNTk5YjFkOWQxYzg0YTc3NzhjZWRlNTczMmQxNGM5YmMxODkyYTQgbGVnYWN5LXRydW5rCisyMzMxOSBlZjMwMzRhNjBhM2VjMmVmMjlkYmIyMGU0MzAzYTQyNWZiZWFlYTEzIGxlZ2FjeS10cnVuaworMjMzMjAgZjg0NjkxYjExNDAyN2E5YTk5MTk3MmJkNzNiOThkMmI0MTQ3NzMxZSBsZWdhY3ktdHJ1bmsKKzIzMzIxIDE0YzgzY2Y3ZjMzODJlMmZjMGYwYjE5NTBlNTY5YjVjYzg5YmQ3NTQgbGVnYWN5LXRydW5rCisyMzMyMiAyOTlmNWZjYjBiYTgwZWNkZDZkMGJhNmVkY2M2NjkwYWFlNmIzM2MwIGxlZ2FjeS10cnVuaworMjMzMjMgNjllODIwNjI0Y2JjMzE2YTM5ZTE4OTVlMGVkMGEzZDlkOWRhMzgxMyBsZWdhY3ktdHJ1bmsKKzIzMzI0IDkwYTRmMjNhYmRhN2RjZjA2MmQxZTM1Y2E0MTIyZTNjYWU1NGM4MDAgbGVnYWN5LXRydW5rCisyMzMyNSA5Mzk3N2YxNzU1MmQ1OGU4MzkzY2VjMDAzNjdlZDk0MGNjMGY2ZDY0IGxlZ2FjeS10cnVuaworMjMzMjYgZTAxZGU4YmM1ODEzNzc4YWY4YzU3NmM5ZmYyYTMyMGFhMGI3YTY3MCBsZWdhY3ktdHJ1bmsKKzIzMzI3IDM5OWQ3NzdhZjA0ODUxMjY3ZGQwNzA0NGUyMGExYjM5YWI5NWYwYzEgbGVnYWN5LXRydW5rCisyMzMyOCBkOGFiZjljZTMyMjUzMjU2NzljYzM4NDdhZGVjOWNjZDIxZDM4ZWY5IGxlZ2FjeS10cnVuaworMjMzMjkgNTExNzc2ZDZkN2Q4Njg1YTg2YTQyOTcxNTBiZTMwNmFhOTRhMGZiMCBsZWdhY3ktdHJ1bmsKKzIzMzMwIGFhZTVjZjdlNTg2MTVjNDdjYjE1ZmM4NThkNzFiZDRhM2Q3MzI3NzIgbGVnYWN5LXRydW5rCisyMzMzMSBkOTI1MGQ1Yjc5YTc1OTI2Y2IxYjY1MjI2YmMzZGM4NjEwYTU2MzJiIGxlZ2FjeS10cnVuaworMjMzMzIgOGYxOWIyYThjNjNjNjc3OTcwZDI3NDk2N2MwZDIxNTJkODJiMzQ0YyBsZWdhY3ktdHJ1bmsKKzIzMzMzIDAwNGNkZWZiNzBkMWY5ZGJjZjJkMjk1N2QyNDllNmNmMjNhNTdlNDYgbGVnYWN5LXRydW5rCisyMzMzNCA5Mjk4ZmVlNDQ2Yjc3NDBhZDNmYzZjYWYzNDgwOTBlZGNkNDhmMWE3IGxlZ2FjeS10cnVuaworMjMzMzUgZjQ4YTQxYzk3MDIxNTY5NDIyNWEyOTY1YTQ5YmUxY2ViNWNjY2QyYyBsZWdhY3ktdHJ1bmsKKzIzMzM2IDQzOTdmYTUxNTJmYTQxNjY4MWI2NTI2ZTFhZmMyMzM1NmY2NWY2ZDAgbGVnYWN5LXRydW5rCisyMzMzNyAxOGRmMzJmNmNlYTEzZTNlMjdmZGY0ZGExNGNmMDAyMjZlNGVhN2ZjIGxlZ2FjeS10cnVuaworMjMzMzggZmRmYzE4ZDU1NjE1MzA4OWQxMWU1MDlkYmEzNzhiNzNmYjFmZmI5MiBsZWdhY3ktdHJ1bmsKKzIzMzM5IDQ4ZTkzZWYzYzViNzBiOGU0NDNiN2QwY2U2MTZkMDdiMTg1MTUwNTcgbGVnYWN5LXRydW5rCisyMzM0MCAzMTkyYTMyZmQ0OGY2YzRjOTg5YmQxNzBhNDIwY2U1ZmU5MDMxODIwIGxlZ2FjeS10cnVuaworMjMzNDEgZGFkOTRjYTQ3ZTIxMzkxNGU0MTFhZDQ1Mjk5Y2ZjN2U3ZmY1Mjc4ZiBsZWdhY3ktdHJ1bmsKKzIzMzQyIGI0MTYxY2U1ODVlNjRjYTFjOWQyMWVkMWFiOWFhNGQ4MmZlZWNlODQgbGVnYWN5LXRydW5rCisyMzM0MyAzODZmYjI2ZTA4NzQ3ZWJmNTVlZjIwYmViOGRhZjQyZTVlY2MyNzE4IGxlZ2FjeS10cnVuaworMjMzNDQgMzcxOWJhNWVlODQ0NmE2ZGQyMzFkZWE3ZTRlZjUzYWFjMGMxNzQ0YyBsZWdhY3ktdHJ1bmsKKzIzMzQ1IDkzM2JmNjhlMjY1MDNhOGMyYjM2YzE4MjNjMWM3N2VjMmQ3YTdmZmEgbGVnYWN5LXRydW5rCisyMzM0NiA0MGQ0ZDFjZDZjODRhNDE2MTY2ZjZjZTI5OThkNGU0YTNlMzY0MGZjIGxlZ2FjeS10cnVuaworMjMzNDcgYjUyYTYzMDUyMzA2ODY5YjJmNWY1NjlkNDkyNWE1NTE2M2YzMjhkZiBsZWdhY3ktdHJ1bmsKKzIzMzQ4IGIyOGMwN2ExYjQwZGY5OWU1MTMzMjNjMmUyYmVjZjc3OGE3NGEwZmIgbGVnYWN5LXRydW5rCisyMzM0OSBkNjU4YTE1YTkwYWQ5NTkyODZhNjI3MmVmODA1ZDYwYWUxY2JmMzk3IGxlZ2FjeS10cnVuaworMjMzNTAgMjg5YzFhNzAwMjg2NGI5NWMzZjU5ZWNhMzQ2MGYyMTUzNDk2Yjc0OSBsZWdhY3ktdHJ1bmsKKzIzMzUxIDE5YWJjMzM5ZDNmY2YyZjFiYTkyZGEzMDI3Mzk2Yzc3MDE3OWVjMTkgbGVnYWN5LXRydW5rCisyMzM1MiBhMzgxYWIwZjlkMjgzYmJhYjI2NmM4ODg0Y2ExYTMzNjEzOTVhMmI5IGxlZ2FjeS10cnVuaworMjMzNTMgNTZiZGQ5MGM5ZmQ2ZGQ4NjY2Zjc0MjczYThiMDAyNWJiNDEzOTdjMiBsZWdhY3ktdHJ1bmsKKzIzMzU0IDgxOWI2ZmY3ZTU2YTZiNWZjNjAxODQ2ZmFhMmU1MzdkYzdmMzhhNzggbGVnYWN5LXRydW5rCisyMzM1NSAyYTY4YzZlMWY5YzU0YTlkYWFjMjY3ZDdkYzk3MTVkNjY5MWJmNDc3IGxlZ2FjeS10cnVuaworMjMzNTYgYWIxYWYxY2EwMzBjNWM1YmM0MGRhNGIwYmJjZjBiNGUxZmFiNzM5ZSBsZWdhY3ktdHJ1bmsKKzIzMzU3IDYwMDlkODU5ZmI1NzNlY2IwYmFmMmMwZDhmZmY2ZTIzOTM2NTRhNzYgbGVnYWN5LXRydW5rCisyMzM1OCBkMTkxMDIyM2IyNDdkZjNkMzAxZTMzOGNlYzFkYzZlN2E0OGZkMGFlIGxlZ2FjeS10cnVuaworMjMzNTkgOGExNjE0Y2ViMzc3N2VjMGJhZTBjNWExOTRiZGI3YTlhZjZmMjU2MyBsZWdhY3ktdHJ1bmsKKzIzMzYwIDNkZjRiOGNkYjhjNjg3OWMwYmViZDAwN2E4MTMwMjg3ZGUwYWQyMmUgbGVnYWN5LXRydW5rCisyMzM2MSA4ZjI1ZWMwMTAxOGI1YTg2NWQ2NTc0OTQ1ZTI2YjVmZDVmNDYxN2M3IGxlZ2FjeS10cnVuaworMjMzNjIgODMyMTZjYTY3ZWJlYTFiMzQwZWY2Mzc3NDI0ZmNkMGQzOWZlNTAzYiBsZWdhY3ktdHJ1bmsKKzIzMzYzIDMzNGJmMGJhZWViN2ViOTFhMGU1OTU2NDMxZjZmM2RlODQzZTFhNTggbGVnYWN5LXRydW5rCisyMzM2NCBkN2Q4NGVhZTkyYmEwYTEyOWIxNjcxMTM0OTg2MTRmN2U5NGExM2Q1IGxlZ2FjeS10cnVuaworMjMzNjUgYmVmYTcyNThjMjAwZjM4ZTg5ZTE1YTNlZTZmNTVjYjBjOGM2NDQ3NiBsZWdhY3ktdHJ1bmsKKzIzMzY2IDgwZTM2ZGFiMjExMTdhNDQwYjFmZDdhOTM4NDJmMzUyNjk4ZDJjN2UgbGVnYWN5LXRydW5rCisyMzM2NyBlOGEyOWQyM2M3MGE4ZDNjYmNmYjAwMzIzY2FkMmU3ZDYwZmVlZTY3IGxlZ2FjeS10cnVuaworMjMzNjggMTJhNzg3ZmI3MWRmMzUyNmUwMTg3ZWZkYmMzNzgzOWQyMjIxNWE1OCBsZWdhY3ktdHJ1bmsKKzIzMzY5IDIzM2Y5NjA2YmE4ZTI0ZTAzMjE3NGYxNzgwYjkzZDExYTUxOGQ1YjYgbGVnYWN5LXRydW5rCisyMzM3MCA4ZWM5NWNlNzg3MzU4MzY2YWJiZmVkYmM2Yjc2ZDJkNDI0M2FlNzBhIGxlZ2FjeS10cnVuaworMjMzNzEgNTU4NzRkOGUwZGZiYThhMGQ2Y2E1OGEyZjVjNjYwYzEzYjkxZmQxYSBsZWdhY3ktdHJ1bmsKKzIzMzcyIGUwMjZmNTE3ZjY1NWI0NTA5NjAyZGQwMDcyODI4NWU2MjM0MjcxNTkgbGVnYWN5LXRydW5rCisyMzM3MyA4YzM3MTQzNWY2OTNjMGZiZTZkOGZhODc0N2RiOWVjOTczZWQwZTk0IGxlZ2FjeS10cnVuaworMjMzNzQgYjlmNjBiODI1MjYxYTBmOTVkNjMwODQwNjMzZmVhMmJiNGNhMDUzYiBsZWdhY3ktdHJ1bmsKKzIzMzc1IDAxNzZmNjFhZjg0NWQ0YzhjZjJiZDJhNTBmNDk0NzBkY2RkMDU0Y2UgbGVnYWN5LXRydW5rCisyMzM3NiBmODIyYjM1NmMzZDlkZmE4MGE1YjZkYjQ5NDZhNzczZjMzYzVlMDIyIGxlZ2FjeS10cnVuaworMjMzNzcgMDk4MTg2NjEzYjA1N2Q4MWNhYTBlZjg0M2Y1MWQ4Mjg5NGY2MTBiNSBsZWdhY3ktdHJ1bmsKKzIzMzc4IGFlZDYyMTE4ZDYzMmU4OGQzNWJiZjZkMjc3NmM0NGM3NDkxMTRmZTMgbGVnYWN5LXRydW5rCisyMzM3OSA5YzJiOWI3NmEwOGUzZWNkOTk2ODI2Y2Y0ZmQ4ZTdkNWFkMWMxNzBjIGxlZ2FjeS10cnVuaworMjMzODAgM2JjZGI1MTlhYmY4ODExMjkyOWQyMGY2MjY0Nzg3OWIwZmU0YmJiOSBsZWdhY3ktdHJ1bmsKKzIzMzgxIDNmYjI5M2ZhMTdjNTQ2ODQ4OWZlYWNiM2I2Mjc5MGIzYTAzN2JlOTggbGVnYWN5LXRydW5rCisyMzM4MiA2OTcyMDZlNzQ3NjM5YjE4YWE5NGE3OGRlZTgwYjUwNjg1MDU2YmNhIGxlZ2FjeS10cnVuaworMjMzODMgZmRmY2ZmYzIxNTJjNjBlYWI2MjM3ZWVlYmFmYTVlZTEzYTE5OTlmYiBsZWdhY3ktdHJ1bmsKKzIzMzg0IGUzYTJlNjA3NmJjNTI2NTBhMDJiN2FhZDE4MDJiZjcxNjg3M2M1ZWIgbGVnYWN5LXRydW5rCisyMzM4NSA3M2ZiY2M5NTgyOTVmMzk1NjllM2I1MDUzYjA5NTYxMGZlM2Q0MTBmIGxlZ2FjeS10cnVuaworMjMzODYgYTI3NmFlNWZlOGMzMDI5YjJkMjk4ZTc5MTE2NzA4ZjhmNDE2Y2ZiYiBsZWdhY3ktdHJ1bmsKKzIzMzg3IGJhMzcxNDE5MWE3YTJmM2VlYmRhMmI3YTA0MWE0YTRkYzA1Y2Q1NjcgbGVnYWN5LXRydW5rCisyMzM4OCA0NDFiMmUxNTU4MjZjMThlZjcyNjkwM2E0NmU2YjRjYTYzYTBhYzc4IGxlZ2FjeS10cnVuaworMjMzOTAgY2UyN2Q5YzBjMzU4MjMxNTRhZWU5YWQ2Y2FmYjcxNjc1NWVhYjc0MSByMjJhNC1icmFuY2gKKzIzMzkxIGMyNzgyYzM1ZTcyZDc0NWIzNWZjM2YwYzliYjg5YjY3NzM2YTg2MWIgcjIyYTQtYnJhbmNoCisyMzM5MiAzYWFjOTE2YzE1MDVjN2RiNzZmOGRiMDZhMTU5MDgzMWMzYTFlOWY3IGxlZ2FjeS10cnVuaworMjMzOTMgYTk3ZmJjNWIxOGI2ZmMxMWM5ODBjNDhkMjc2YmMwYmI4MmExNWEzZSBsZWdhY3ktdHJ1bmsKKzIzMzk0IGZjYzIxNmM1OGM4N2ZhMmM2MjAxNWFjMzYyODAyMjA3Y2FkMDk2MTcgbGVnYWN5LXRydW5rCisyMzM5NSA3MjdiOTVkZDg2ODg2MTE1YTE1Y2I5NTI5ZjY1N2RhM2MxY2I0NTg3IHIyMmE0LWJyYW5jaAorMjMzOTYgMWM1MjkxMjgwNTRjOGMyMGNlMWE1OWNkMjkyYTk5YzA4ZTNiOTc4MSBsZWdhY3ktdHJ1bmsKKzIzMzk3IDgzMjU2YmVmMGQ3NWUzMTM1ZTQ4NzE0YTY5ZDY2N2ZlNWYwMjFhZDYgbGVnYWN5LXRydW5rCisyMzM5OCA3MGU1N2Y3NTk0MDI3ZDI4ZjhmY2Q0NGFiMTUxOGVhNjY5MzNkYjVjIGxlZ2FjeS10cnVuaworMjMzOTkgZWMyZDRmOTliYWRjNGI3MTNjZDFlYjIxYzZiZTEwODhjNGYyYjI2ZiByMjJhNC1icmFuY2gKKzIzNDAwIDY4OTAwNzE4NzdkYzg2MGNkZDk2M2E0ZGE3NDVlMWFlOGY5OWFhOGYgcjIyYTQtYnJhbmNoCisyMzQwMSAyMjVmMTdlYzg5MzIzYThiMTdiODk1MGNlOTkxYzQ0YjllYWM1ZWEwIGxlZ2FjeS10cnVuaworMjM0MDIgOTU2MGY4NmM0ZmE0YTdmMzBkMzQ5MzdjNjYzNzFiYzQ3ZDI0OWFjNSByMjJhNC1icmFuY2gKKzIzNDAzIGNhOTViY2U1YTMzZWZmZjdiOGIzY2E4YWY1MzU2MTgyYTE4ODIwNzMgbGVnYWN5LXRydW5rCisyMzQwNCBiZGU5ZGViNTlkMWJjMDk1NzMxZWI3YmQ2Yjc5ZWM1OTc5NDEwM2NhIHIyMmE0LWJyYW5jaAorMjM0MDQgMmFjNmMzMmZjMjA2ZGY5MTRkYzJmOWQ0NTZlNzljNTk2NTM3MjhiNiByMjJhNC1icmFuY2gKKzIzNDA2IDg5ZTVmMTBjOWY5OTQwMGYyODcwZWQ4NzBiODZiOTNhNDNmNWNiNzAgbGVnYWN5LXRydW5rCisyMzQwNyBiOTRiYzdlYzdiZTg1MWViZWY0ZGYzNDQ0ZmMyOWVmNTY3NjRmZmUzIGxlZ2FjeS10cnVuaworMjM0MDggZTc4YzhmNGUyYjhjOTQzNTUzMzA0ZTJiZjJiMWRiYzdhMzVkMGExMiBsZWdhY3ktdHJ1bmsKKzIzNDA5IGM2ZmM4NzgxMDU1MTQzYzA0M2VkM2Y5ZWNmM2RkNTAzZGE1OTMyNmYgbGVnYWN5LXRydW5rCisyMzQxMCBiNWNjNTg2YWMyNWFlZDBkODJmMDYwMWQ1YzlhMGEyMmNiMjUzZmE3IGxlZ2FjeS10cnVuaworMjM0MTEgODhkYTM4YTVmMGJmNWE4NTI2MmY2NGZmYWZjYzcyZDBjNGE2NzQyYyBsZWdhY3ktdHJ1bmsKKzIzNDEyIDIwNmIyNWZlYmRlM2NlYTAwMDQ0NDVlMjZlYmM1NWZiMDczNzg1YzYgbGVnYWN5LXRydW5rCisyMzQxMyAxZjRkOTllN2IxZTc1NDk5Y2MzNTNiZTVhOGRjNzFmOWViYWRhMzk0IGxlZ2FjeS10cnVuaworMjM0MTQgNTcwN2RhOTAwOTM2MjliZmY2YjFiZmZmZmY1MTczMGEzMTE1MzcyZCBsZWdhY3ktdHJ1bmsKKzIzNDE1IGM4ZmIwMGY1ZWI1ZTVkYThlOWI0MDlkOTUwYzRjZTdmZGQ4ZmYwYzkgbGVnYWN5LXRydW5rCisyMzQxNiA3MmE1MzQ3ZDJmOWFkOTllOGQ5MDRkMDQ4ODU2M2YzY2Q4MWE0NTNiIGxlZ2FjeS10cnVuaworMjM0MTcgYzY4ZWY0N2IxNzA5ZGFlNjZkYTNhY2ZkYzc1M2UyNTZlY2NhZDk5YSBsZWdhY3ktdHJ1bmsKKzIzNDE4IGQ1ZDAwMDg2MmE2NjlhOTg0NjQ2MGM3ZTEyMDM3MWQ1MTE3OTJiMTEgbGVnYWN5LXRydW5rCisyMzQxOSBiYmIzNTNkMzFlMjU0MjVjOGVjZDZhMzRjNGIwZGFhYTBhYTEyMDFiIGxlZ2FjeS10cnVuaworMjM0MjAgNDE2ZjBiYzIyOGU4Yjk0NTk3OWQ4OTQxNWI2ODY5N2QxYTFlZDRjOCBsZWdhY3ktdHJ1bmsKKzIzNDIxIDhiYTMyODcxODNlMDViZTFhZDYxODliOTI5YzAwZmZiODc1ZjZkOGQgbGVnYWN5LXRydW5rCisyMzQyMiAyYzhhNWExNzJmNDdiYjM1YTg1YTEwZDQ1ZGE4MmFkNGFhZTUyM2QyIGxlZ2FjeS10cnVuaworMjM0MjMgNmZmNTMxNDM1YjM0ZGM3MTk4NGZhZGUwMjE3NThkMjIyYzcxNmRjNiBsZWdhY3ktdHJ1bmsKKzIzNDI0IGJlYTY4NjQ0OTU5NTYzNTQ4MmIwNGJiZWI4ZmE0NjhjYjMyNDQ3MTYgbGVnYWN5LXRydW5rCisyMzQyNSBlZGIwYjgwNWU1NDk4ODkwYWIwMGFhNTJmNDBhYTllOTNkOWU5ZmVhIGxlZ2FjeS10cnVuaworMjM0MjYgM2IzNTZmNzc5MjJkOGRiNWQxMzM4M2U3M2QwMWY2OTYwNjYzODhhOSBsZWdhY3ktdHJ1bmsKKzIzNDI3IDQ3MGMxYzcyYTBhN2E1ZjBiOWJhMDQ5MGE0YmE0NDdjMzYzNjE0YjEgbGVnYWN5LXRydW5rCisyMzQyOCA1YjRmNzMyMWQ5Y2JmODFiNmJkNDUxYTY1YWFjYWU5NGU2NDJlMzhhIGxlZ2FjeS10cnVuaworMjM0MjkgZGI4MmMwYjQwZGZjNDBmZWUxYmVkZGI1ZmRlMzZmNjEyNmY4MjhkOSBsZWdhY3ktdHJ1bmsKKzIzNDMwIDY1MDhhZGJkMGJiMWJiMjY2Mzc0ZDdiNDk3MjM4N2M3ZTVkMjYxMjcgbGVnYWN5LXRydW5rCisyMzQzMSAwMDZjZmFhYzAyOWE3Njg0YmM3YmIxODkzNDY0MWQ5ZWYyNmY1NjBmIGxlZ2FjeS10cnVuaworMjM0MzIgMDkxZTllM2NlZWFmMDdiNDI5ZmIxNTExYzRlZWNhNTA1MTM0NGNmMyBsZWdhY3ktdHJ1bmsKKzIzNDMzIGFiZDZhMDhiMmMzMjcxYWZkOGYwNDRiMjE5MjcyZDM0MjBhNzcwZmUgbGVnYWN5LXRydW5rCisyMzQzNCA1ZmIwNjkxZmI2OTAzOTFlMzdjMjE3YzE5YTliMTI0MjAzMGQwNjRlIGxlZ2FjeS10cnVuaworMjM0MzUgODMxMDY2MzNmOTMzMzRmNTcyODY3NGE3ZTM4ZDJiZjkyMTQzMjljNCBsZWdhY3ktdHJ1bmsKKzIzNDM2IGRlM2U4NTE4MThhNDMyN2ZiOTljZDBjNWYzYjdmOTExNzAzZDVkMjYgbGVnYWN5LXRydW5rCisyMzQzNyBmMTAwNzkzY2E5YWZjNzBmYzNmYjk4MGI4MWI5Mjg2NDFlZDQzYzVmIGxlZ2FjeS10cnVuaworMjM0MzggOGY3OWZhNTM3YmQyNGIzMGEzOGMxOTc1Y2E2OTA1ZDYzNjY2NmY5NyBsZWdhY3ktdHJ1bmsKKzIzNDM5IGZlZjI4OWQ2NmU4ZTE1ODIzMTI5YTdjNzc1ZTQ1NWZiZWIzZjM1MjYgbGVnYWN5LXRydW5rCisyMzQ0MCA3NTRiODE2Mjg0ZDEzOGVlY2Y2Nzg3Y2NiYWY4M2Q3OTQ2MTVmNDFkIGxlZ2FjeS10cnVuaworMjM0NDEgODc5OWRmYTBmNzZhYzQ3YzUxMmFmOWMyZTVkYmZjMDJkZDU5NmNmMiBsZWdhY3ktdHJ1bmsKKzIzNDQyIDAxYTVjNDNmMTg5NGNkZjFjMTM2Zjk3NzY1NzkzMzA5N2ViZGE1ZDkgbGVnYWN5LXRydW5rCisyMzQ0MyA1ZWNjMDJjMWVkYWMzYWM2Nzk2MGRiOWMwNmVlM2RmZTYzN2U0MzAzIGxlZ2FjeS10cnVuaworMjM0NDQgNzg0ZTIxYmRkOWEyZjlkZGEzNGZlNmMzNjIxMjA2MzUzZjdhMmU3ZiBsZWdhY3ktdHJ1bmsKKzIzNDQ1IDlkZTI5MTY5NGIxZTFiZDFjZmNjZGVhN2IyY2VlNjAwZThjODhlMzEgbGVnYWN5LXRydW5rCisyMzQ0NiA2ZDczYjU0ZDkyMDUyMDE0ZTIzMWJhOTc5Y2IzOWI2NTM1NTA3Mzk4IGxlZ2FjeS10cnVuaworMjM0NDcgYzZiNjE4OWE4Mzk3NjA4YzY0MjRkYzg0OWViMGM1ZGZiOWM0NWU1MyBsZWdhY3ktdHJ1bmsKKzIzNDQ4IDRjNjkyMmYyNjZmMDc5NGZhODAxNTUyYjk0MGY3NWQzNWY2YjQxZDkgbGVnYWN5LXRydW5rCisyMzQ0OSA4ZDc5ZGIwMWIyYmEyNWRiOGVlMWI5MjNkOWE4YTQ1MDcwNTBkODkwIGxlZ2FjeS10cnVuaworMjM0NTAgYzc4MTdiNjA3NGI1ODA0NGNhNjhiN2M5M2MxYjAyMjRmZTE5Mzc5ZiBsZWdhY3ktdHJ1bmsKKzIzNDUxIDhlNGU0OTEwNTU5NTRiYmY2N2IwNDhhN2I3NDU4M2Q3ZTMxNWYwMzcgbGVnYWN5LXRydW5rCisyMzQ1MiA2ZGRhNDk4Y2NjYzQ4NTVhMjJkZjAzMjUyYjMxZTVmNjU5NDg1OTZkIGxlZ2FjeS10cnVuaworMjM0NTMgNThiNGNmYTU0ODcxOTFjMWZiMmY4MmYwZThiYTAxOTk5M2Q2Yjg0NSBsZWdhY3ktdHJ1bmsKKzIzNDU0IDU2NDJkMzdmMWIxNjFkNTU1MzU4NDdjOTEzMjk1MzEwNDk0MTdhODggbGVnYWN5LXRydW5rCisyMzQ1NSBlOTQ2YzVkMmZlMTUxZjViMWIyNzUxZDgzYjBhOTBmZjlmM2RmZGM0IGxlZ2FjeS10cnVuaworMjM0NTYgNDlhMTNlNmU5MzVkYjI5NjZhMjVlZDEwMzQ0MTdlMGM2NzE0ODFhZSBsZWdhY3ktdHJ1bmsKKzIzNDU3IGJlNTQ4ZDRiZTg4OGY0N2VlYzg2NTkwYzhiYzgyMTkyMmNjZmZlMjggbGVnYWN5LXRydW5rCisyMzQ1OCAyMTA2MDMxOGY1MzlhZjA5OWFhNGM3MTc2MTgyOTgzNTVjZjU3ZWI2IGxlZ2FjeS10cnVuaworMjM0NTkgMzQwOGQ5MjliYjk0MGFkNjEwZDJiNjk0ZDY2Yzc5MzkwMzUwMTUzNSBsZWdhY3ktdHJ1bmsKKzIzNDYwIDZkZTRlZTQ3Nzk0OWY4ZDc4NjM3NDFmMzk0MTg1MmMyMDMxMzA0ZDYgbGVnYWN5LXRydW5rCisyMzQ2MSBiNGYwZjEwYTZjNWY0ZDM3MjEyNTE4YzYyZjJhYTQyNTNkOGRhZDNhIGxlZ2FjeS10cnVuaworMjM0NjIgNTc4YzFiYjcyODM5OTI1NjU5NjRhMDhiMWU0Yzg5NjJmODU3Mzc5NCBsZWdhY3ktdHJ1bmsKKzIzNDYzIDcyZWU1NzM0N2FlYTY1MzM0MWFjNmY3NWM3M2ExMmUxYjllOWU3OGMgbGVnYWN5LXRydW5rCisyMzQ2NCBmNWQ3OTFjMmFjYzk1MGVlYjhlZmVjODU1ZmYyMzE1NGI3MzJlMTAxIGxlZ2FjeS10cnVuaworMjM0NjUgN2Q1YWU3ZDdjN2E5NjM2ZWFjN2MyYmRkMGVlNGFjNDIyZGMzZDUxOCBsZWdhY3ktdHJ1bmsKKzIzNDY2IGU1YzNjYTdiNTA5OTI0YjVjNDU4MjE3MjAxMmZlMzNiZjUxY2QxM2UgbGVnYWN5LXRydW5rCisyMzQ2NyA5ODczYzk5YzQzZjc1MzY3ODc0M2M0YzMzOWZmNmVkOGI2OTc0MjE0IGxlZ2FjeS10cnVuaworMjM0NjggOGU2ZjYwNGIwNzk5MzdiYTg3NGMxN2U3NTJkYzJkOGEyMjZkNjkzNSBsZWdhY3ktdHJ1bmsKKzIzNDY5IDAwMTUyZTY4NzQ1YTUxOGRmZTJlNTJmNjU4OWMxMzRmNGE3NWYxMjUgbGVnYWN5LXRydW5rCisyMzQ3MCAyMGJhNDJjY2IzNmY2NzY1NDkyYjg4NjgwMmUyNDVhYjMzNjliNDE3IGxlZ2FjeS10cnVuaworMjM0NzEgZTJkYTlhOTI5YWNhYjU1MjkwZTllNzY4MjViZGMyZDZmYzg2ZjgzNSBsZWdhY3ktdHJ1bmsKKzIzNDcyIGJhNWFhYTZiYzFlNTZiNWJkNzYxMWZkZTAxZTk1NjhkODM2N2MzZWIgbGVnYWN5LXRydW5rCisyMzQ3MyBlN2VmODgxMzg5NDE5YTY4Njc3MDg5MjAyMTliMTdiNGFmNThmNTBmIGxlZ2FjeS10cnVuaworMjM0NzQgNjliOTQxZDEzMTc2NzUzNWY4OTFiMTBjOWEwM2FmYmM3N2UxMmRiZiBsZWdhY3ktdHJ1bmsKKzIzNDc1IGIyZjk1N2Y5YzZmNDEzYmNmMzk3OWYwMjExY2JhN2VhZTdkNjc4OGQgbGVnYWN5LXRydW5rCisyMzQ3NiBlM2Q3NTc3ODYxOWUzZGM2YjdlZjYyOWE1ZjY1OTdhNzNmNWU2YmY3IGxlZ2FjeS10cnVuaworMjM0NzcgZDA1MzcyNmZiMDFiZGM2NGFhNThiYTc0MzAyZDk2ZjkzYzFkODNjNyBsZWdhY3ktdHJ1bmsKKzIzNDc4IDk2OThiNzFiMDAzMTVhYjlhYjczODk1YmM0ZDY3NDM0MmRiOWNiMTUgbGVnYWN5LXRydW5rCisyMzQ3OSBmYWNlMWVhYTY4Y2E5YjVhZWVlZmU2ODI2OTU4MDE2Y2RhNjAxYzQ1IGxlZ2FjeS10cnVuaworMjM0ODAgYTVhMzMwNjQ2YzEzMmFjMmY0M2RlNTBlYWM4YWMzYTNlZjBlZWI4ZiBsZWdhY3ktdHJ1bmsKKzIzNDgxIGMwYTZmNTM3NzNlMzUzY2U5MmEyZmE4MTEzNDI2YTZmMzUwZmViMTkgbGVnYWN5LXRydW5rCisyMzQ4MiBiZjU1NzRmNGY0MWY3NmZkNjRlMGFiM2MxZjc0Y2NiMGExOTJmMGNkIGxlZ2FjeS10cnVuaworMjM0ODMgNWFjZDJhODFkNmZhNzE0Njc3YTg3ZTAyMDU0ZjEzMWMxODVkNWM3MyBsZWdhY3ktdHJ1bmsKKzIzNDg0IDBiOTkxNzRkNmIxNzg0NTg3NmJlNzg5MzU1YTc2Y2Y1NDIzNGMyYTcgbGVnYWN5LXRydW5rCisyMzQ4NSBhYmFmOWVhMmU1NjA3Mjk5NTA5NjJjN2UxNzM3ZDRkY2ZlYzU1ZGFiIGxlZ2FjeS10cnVuaworMjM0ODYgYTRlZjAzYjVhOTI4NmQ5ZGM5MWI1MTFiMDBkMTlmMDg3MzBmODU1MCBsZWdhY3ktdHJ1bmsKKzIzNDg3IGE4MWRiMTI5NWE5ZTIyNzhlY2ZlYTIwYjk3N2Q1Y2VkZmZiYjBkNDUgbGVnYWN5LXRydW5rCisyMzQ4OCBkNmVhZTY0ZmRiNWFjMTg2MGY3YWY5YjUxMzhhZjA2MmIyYzdiMmM0IGxlZ2FjeS10cnVuaworMjM0ODkgYWExOGMwZWNjNGZiNjc4NDdlZTQ1NDczOWFjNWQ5ZDFiNmU4Y2JjNCBsZWdhY3ktdHJ1bmsKKzIzNDkwIGFiNTA0MjA1OGI2ZjFlZmVhNDBlNjk1MmQzN2RkNjc2NWVkOTA4YjQgbGVnYWN5LXRydW5rCisyMzQ5MSA5MmY4NjQzNmI2YmU2MzNkYTMwYTM4ODg2MGVkNGIxZjYyMjRjMDFkIGxlZ2FjeS10cnVuaworMjM0OTIgMWJlZTQ5YmM4ZDljNTVlZDllNjE3NWM5NjBiY2Y3ZGY5YzliY2I2MSBsZWdhY3ktdHJ1bmsKKzIzNDkzIDhiYWQ1NWVkZmRmMzkzODFhNjZhZmZhN2I3ODRlMzM4NTQ0M2NiZjIgbGVnYWN5LXRydW5rCisyMzQ5NCA1YTJlN2M3OGQ0MzM0NWViNmM4MjdjOWY2ZGE3OTE2NjZlZDg4NzZkIGxlZ2FjeS10cnVuaworMjM0OTUgNDY0ZjlhMDlhOTEwMzhhOWRjYzg0MTA5MTgxY2QwODQyYWM1YzFiMiBsZWdhY3ktdHJ1bmsKKzIzNDk2IGQ0NzgyNDk0YTFlM2MyOWVkMzI0ZWU1NDYyOWM1NDZkOThiNmViZjIgbGVnYWN5LXRydW5rCisyMzQ5NyA4MTM4NmE3MWVjY2U4NjVjODgyYzdkN2E3NTAzYzdjOWFlZGM0ZjBlIGxlZ2FjeS10cnVuaworMjM0OTggN2VhNjFkYTg3OGFmMTA3M2UxZTgyNThkMTk4NDk0ZTc2YTM5MjAxNSBsZWdhY3ktdHJ1bmsKKzIzNDk5IGFjZmIyNzg2NjJjNjJjMzIwMjI1OTUwNTdlODIwZTk0NWYxZTM2MjYgbGVnYWN5LXRydW5rCisyMzUwMCA5ZWU2YTk4ZjAzMmMzMTNlOGYwODlmYTRlZTU1MmNmN2I4ZWYwYzlhIGxlZ2FjeS10cnVuaworMjM1MDEgZDE2NzFkZGVhY2UwYjY0NDE2NjRmY2RhMDg4ZTk1MWUxYzE0YzQxMiBsZWdhY3ktdHJ1bmsKKzIzNTAyIGU3YWNhMmEzMDJjZDcxMzQ4NDRmOTkxYzNhZDU0YmMwZGZhMDNiNTkgbGVnYWN5LXRydW5rCisyMzUwMyAyNzQ1YzNkYzI0YWYyOWNlNDMwOTZkMDQyYjdiZWRlOGQwYjgwZTFlIGxlZ2FjeS10cnVuaworMjM1MDQgNWM0MjYxZTc0NDc4MGNmMDAzMTFjYTY4MjFkZWU5OGU2ZWQ0MjNlZSBsZWdhY3ktdHJ1bmsKKzIzNTA1IGFmZjZmY2QyNmMxNWM0NzEzMDFiNmRhOWMxMWFhYTVkY2Q5N2QxZjkgbGVnYWN5LXRydW5rCisyMzUwNiA3Y2VkYmFhYTEyZTQ3NGZjNTY4Mjc5MzBhMzBhYmIyNjNkMWQ5YWMzIGxlZ2FjeS10cnVuaworMjM1MDcgMGU5NDBkYTg0NWJmODM3OTA4MmIyNDM2MzU2N2M1YzdmOTMwYjk1NCBsZWdhY3ktdHJ1bmsKKzIzNTA4IDE2NjU4ZGY4NDU2YTY2MjgxYjVmYzBmNTcwNzEyYmY2YzhhOTU4NmIgbGVnYWN5LXRydW5rCisyMzUwOSA3MTYwZDc5NTQ3M2U5MTgzZTc0ZGRjMWIyODNmOWNlZWQ5MTkwYjQ5IGxlZ2FjeS10cnVuaworMjM1MTAgZjNiM2ZkNWFiZmE2MTZkZmEzYzcwZTAzNzNjMjg4ZWM3Mzc1YWQyMSBsZWdhY3ktdHJ1bmsKKzIzNTExIGE0ZDMyOGQ1MDg5NzU5YmNkODE4NWVmMmU1MTllMDc3ZDhmNDY4MmMgbGVnYWN5LXRydW5rCisyMzUxMiAxMGI5N2FlNjkwMjVjNjU0YTczNWM2M2MzNjgwMGU5OTczYzY1NDliIGxlZ2FjeS10cnVuaworMjM1MTMgMWFjZWNjOTA4ZWU4NmI0ZjNkMTA3YzE5ZWI3ZGM1Zjg5NDA0NmI0ZiBsZWdhY3ktdHJ1bmsKKzIzNTE0IDFkYjVhYTY3NjVjMDFiMTQ1ZDFhM2M2OWFhNDMwMjRjM2JkMzBlZmUgbGVnYWN5LXRydW5rCisyMzUxNSBiMGNlOTI1NjFlMDc1YmQ1YWIzNzM4NTQwNDdkYWUzYmVkYjJjM2ZiIGxlZ2FjeS10cnVuaworMjM1MTYgYjg1Y2QxNjNjZDVjZDBlN2QxNTY1ZjE2ODA0YzNlZDc4YTQ0NmYwYyBsZWdhY3ktdHJ1bmsKKzIzNTE3IGQ5NmNkMzhhM2ZlYzcyOTQyNjA3ZGFjMTQyMWNmZjhkOTEyNTEzMmQgbGVnYWN5LXRydW5rCisyMzUxOCBjNjhmMzY0MWJhY2Q4MjcyM2QzMGE1MTVhNzRiOWU3NmNmNTYwYThmIGxlZ2FjeS10cnVuaworMjM1MTkgNjY5Mjg1NTkyMjg4NGI1MWM4OGFiZWIyZTI5YTlkZTViNjc0NzkwYiBsZWdhY3ktdHJ1bmsKKzIzNTIwIDZmMDI1NjljYzQ2ZmRhNTIxN2ZjYjc3NGQzNzA0NDMzNmRiZmU5NWYgbGVnYWN5LXRydW5rCisyMzUyMSBlM2Y2M2E5NTQ1NWY3YzAyNDgyZjk4YmQ1ZmZmY2YzZmNiZTgwNzk4IGxlZ2FjeS10cnVuaworMjM1MjIgMzE4NTg5NDA0Yjk1NzI3ODMwYmViNTM5MmEwMmU3OTQxYzkzY2Y3ZSBsZWdhY3ktdHJ1bmsKKzIzNTIzIDYxNTJmODJlYTgyMzgwMzBkYzU3YWM5MGU0NTcyMDc0ZTQ0ODIyOWEgbGVnYWN5LXRydW5rCisyMzUyNCAxZWE1YmJiYWI3ZDc3MWRjYTk4OWM2N2EyM2ZiODA2NmVhYWEzOTExIGxlZ2FjeS10cnVuaworMjM1MjUgNTZmMTc4MTA1MzRjMmQzYjU1OGQ5OGI4MjBjYjYwM2M5Yzg2NTFhMSBsZWdhY3ktdHJ1bmsKKzIzNTI2IGRlMjljOGU0ZGU5YjMxNGE4NzU2NDlmNjFiZjM2MmI1YTkyZDEyZDggbGVnYWN5LXRydW5rCisyMzUyNyA4NzNkNTg0YzEyMjEzOTBiOTlmMTVjNmI0NTAzNzA4NDg1YTVlMWJjIGxlZ2FjeS10cnVuaworMjM1MjggZDA5MmFiY2Y5YzRiNzZlZjI4MmNiZGI1YmFjNzllZWE0NTAwMWU5OSBsZWdhY3ktdHJ1bmsKKzIzNTI5IGU0ZTc0OWM0MmY0NjE3ZmU2NDBlZDE0NjkyZjE0MDAzNzZlNmE3ZjEgbGVnYWN5LXRydW5rCisyMzUzMCAyNDFlZjhhOTIzYzc2MzlhM2YxODdhNTllYWU4Zjk0ZjgzNDkxOGIyIGxlZ2FjeS10cnVuaworMjM1MzEgNTkzNGFlZWIzOTdmMGVmZTVlOWJiZGYwYjJiZDFlNzAyMmFhZDJhYSBsZWdhY3ktdHJ1bmsKKzIzNTMyIDA1MjUwNDc2MTU4YTY1NWE1OTAyNDk5YTJjZDQ1ODJmZGQyZmRlNTggbGVnYWN5LXRydW5rCisyMzUzMyA3ZWEwNDAyOWQxYWVhZDdhMjkzMjE5M2M4N2JmYjJiNzIzMjZkY2Y4IGxlZ2FjeS10cnVuaworMjM1MzQgY2U0YTdlNGFkNmM0OGM5ZjAxNmY0YmViMjI1YmE5ODMyMTViN2ZlYyBsZWdhY3ktdHJ1bmsKKzIzNTM1IDYxMmU4NmE0Y2Q5ZjZlYzNhNTE0MDI2MWVhNDBkY2I0MGUyZTNmMTIgbGVnYWN5LXRydW5rCisyMzUzNiBmMDkxNmE2ZGNlZjI3NWZmZTJjYTQ5MDU3MmZkZjE2ZGNjNjU3NDliIGxlZ2FjeS10cnVuaworMjM1MzcgMjI2OWNiMzcxZTA1ZmMwY2I1Y2Y0ZjU0ODBkYTNkN2FiNjg5OTdjYSBsZWdhY3ktdHJ1bmsKKzIzNTM4IGQ3ZDk1NmI0N2QyNDJlMmI3ZTYwZDQ5NWY5YmIyMzFiYzMxYWE4MGIgbGVnYWN5LXRydW5rCisyMzUzOSAxNjdlN2Y5OGI1MWZiMzdkMDE2NDA1MDg3MDM1OTk3ZjBhMTBmMTc3IGxlZ2FjeS10cnVuaworMjM1NDAgNjZhNTZhMjBjZmEzZjZjZTIyNjk1MDU1ODdjZWRlMzU2NDUwZmIzZCBsZWdhY3ktdHJ1bmsKKzIzNTQxIDI5ODNiNTQyNTZjNzIyNWU2MWRlY2JiMmJkNWU1OWRkMjc0ZjU4OTkgbGVnYWN5LXRydW5rCisyMzU0MiBhMjY1ZDhiZDJmMjc3N2MxZTU5NmQzM2I2ZDk5NDI0NjE5ZTU2YmM4IGxlZ2FjeS10cnVuaworMjM1NDMgOGIzZWE3MzM1YzFiZGM2NTMyMDNkMzFjMDI1MjQ4OWI4MWM0MjJhZiBsZWdhY3ktdHJ1bmsKKzIzNTQ0IDk3Y2ZhNDYxZDc5M2QzNWRlNzlmNWJhNWVkNDYwMGQ0NmVlNDY1ZjggbGVnYWN5LXRydW5rCisyMzU0NSAzODBkNGI0ZWU2MDI0M2MyMjNhZTA1YTIwN2UxYzM2YjVhNTk0YjlhIGxlZ2FjeS10cnVuaworMjM1NDYgZTM3NTFhZjBmMWRkMTc4YzI0MDU4NjJkMWVmOWE5M2M3MTZmOGYzNSBsZWdhY3ktdHJ1bmsKKzIzNTQ3IDA0ZjI5NmY3MTFkZjAyM2FmZDFmMjFjOTE5MThmZjkwNDA3ZGQ2OGMgbGVnYWN5LXRydW5rCisyMzU0OCBmYjVmMTIxMTcwMzYwMzUwOTYyNWFkYzMyZmVkNTVhZmU2MDg1OTAyIGxlZ2FjeS10cnVuaworMjM1NDkgY2NiN2FiYzcxNGVkZGE3ZTk0OWQ4MTI3YjgyZmU3YWEwNGRkMmMzOCBsZWdhY3ktdHJ1bmsKKzIzNTUwIGM4NTNkMjQ2ZjNjOGY3MDA0MTA2NTQ3MTlkNWEyNTFhYzFmMmQ4YjEgbGVnYWN5LXRydW5rCisyMzU1MSBmNDg3ODIyMzdmODUzMjg4MDI3YjI4ODY2N2ZlNWY4ZTZiMjQ0NWRlIGxlZ2FjeS10cnVuaworMjM1NTIgNWNjZmUwNDQ5MmFjOWI3MzQ2YmZiNGYzNWJjMDFmZWNlYmQ4YTFlZiBsZWdhY3ktdHJ1bmsKKzIzNTUzIDZlN2Q1YWUyODAwZmM5NDc0MTQwZWM4YmM4MTYzMmM5YmNhOWJiZDUgbGVnYWN5LXRydW5rCisyMzU1NCBhY2Q4Mzc4MjE2YzMxZjFjYzJiNjYwN2JiN2NhYTI4ZTE4ZjgwNzdhIGxlZ2FjeS10cnVuaworMjM1NTUgMTc4YmEzM2Y2N2U0ZThkMWU0NjdkZWQ0YjcwMzUzOTZmYTM0OTkwNyBsZWdhY3ktdHJ1bmsKKzIzNTU2IGE0M2NiNmM1OTA3MGY4MGU1MGM2N2I3ZDk2ZmFhYTU4ZDEwNzVjYTggbGVnYWN5LXRydW5rCisyMzU1NyBiMjg1ZGVjZjA0MjFlYzY2OTkxNDAwMzQ5MGY1NjQxMGMyMzRlMmIwIGxlZ2FjeS10cnVuaworMjM1NTggNDI2YjM3OWExMzhiNDFiNzFhYjc2YTc1ZDlmNDE4M2NkMDg3NzVjNCBsZWdhY3ktdHJ1bmsKKzIzNTU5IDVkMmQxZTJlYzQ3M2IxMDI1MGIxODk0NTA0Yzk1ZGIzMTliMGYxNmEgbGVnYWN5LXRydW5rCisyMzU2MCA2Y2MwYjQ4MDQ5ZWM0YjU5ZWJkNzVlZWY2YzViZDY0NjdhNTRiOTkzIGxlZ2FjeS10cnVuaworMjM1NjEgNzkzOTJhYjJjMDJhOWUyZGQ5YmY5MzFmY2EyMTYxMGY2NTlhZmRjNCBsZWdhY3ktdHJ1bmsKKzIzNTYyIDYyMTE2ODRlZDlkZGYwNzczNjAxMjZhYzk1NDNlY2Q3ODI0OTY0YjggbGVnYWN5LXRydW5rCisyMzU2MyA0MmI1Mjc5Mzc0MGMwZGYxNzA1YTFmYzI5ZGIzNzgyMTI0NzkxNWNiIGxlZ2FjeS10cnVuaworMjM1NjQgODc0YmIxNzA3NGIwZDRkZjhmMzBjYTY5YWUyNTcwMjU3Zjc1ZWExZiBsZWdhY3ktdHJ1bmsKKzIzNTY1IDNiM2VlOTc2MzNjMTFkYjA0OWU3YTJmZjlhZGExNzI0ZmYwNTQ0ZjIgbGVnYWN5LXRydW5rCisyMzU2NiBjNTM0NWMwYWJkNzA2MTkzMDY0MDU5YTc2ZDI3ZGY4YjYzMmM0YzVjIGxlZ2FjeS10cnVuaworMjM1NjcgZmFlYzY5YzExNjQwMzYxYTFhZThjMTlmNzk4ZTU0NmVkODBlYjQwMyBsZWdhY3ktdHJ1bmsKKzIzNTY4IGU0NGNkZWY3OTFlZTg0MDU1YTgyZTViMWNjZGIzZGQ3YzBiYzhmNDUgbGVnYWN5LXRydW5rCisyMzU2OSAwODI5NWVjNThlYTk3ZGRlMTY1YmRlOWJkZGU5M2I1YWU4OWUyYjdkIGxlZ2FjeS10cnVuaworMjM1NzAgMWNhMjI4ZTIxYTk4N2E3MjJmMTQ0NmM4MmVjNzljZmE2YTRhNDU1ZCBsZWdhY3ktdHJ1bmsKKzIzNTcxIGFhNjgxMzQ1YmZhYjEzMzczZDJhZjI5YTVhYjQxNTU4NjQzYjM3ODMgbGVnYWN5LXRydW5rCisyMzU3MiBjYTJiYzVjZGFhOGU5ZWQyMWQ0NjJlMzNkY2I4ZWY1ZWIxYWE4OTlkIGxlZ2FjeS10cnVuaworMjM1NzMgMzI2ZTVhNzJjNjYwMjhlMmJhN2QwYjI2MmM1OTRiNjQ1MmE5MjRhMCBsZWdhY3ktdHJ1bmsKKzIzNTc0IGI0NDQ3YmI1YWEwZWFkZWM5NTZhOTViNzkwM2Q2YTNmMDdlNjllNDUgbGVnYWN5LXRydW5rCisyMzU3NSAxMjM1M2IxMzEyMjRjNmFjYzg1OTk2NjljYzRlMmU4YjcyYjA3ODc4IGxlZ2FjeS10cnVuaworMjM1NzYgMzM5M2Q2ZjgwN2Y1ZDdiNWJhMzFlYTFkOWNlMjliOWY2YTFlNDYyZSBsZWdhY3ktdHJ1bmsKKzIzNTc3IGVhMTkxMGQyYzc4MWRkMGE5ZGRiODBiNDMwZmJhMjczOWVlZDNmNWUgbGVnYWN5LXRydW5rCisyMzU3OCAyODRlYWJlM2I1NTJjZGEzZmNkZDA2OGE1NjY4ZjI4MTYwZTk4OGYxIGxlZ2FjeS10cnVuaworMjM1NzkgN2I0MWY3YTJlNTI4NTRmMjliY2NhMDc4ZDgyNjNjMjhmZjE1MGI5NiBsZWdhY3ktdHJ1bmsKKzIzNTgwIDJlMDczYmM3MjY4Njk1MWEyYWE5MzYwOWU2ZDU4NjIzMzYwZGFjNmMgbGVnYWN5LXRydW5rCisyMzU4MSA0ZWY3ZWI5MGI2OWFjNzRkYzdmNDYwMTkxMWVlZmQ2OGIxNDg1NmUyIGxlZ2FjeS10cnVuaworMjM1ODIgZjlhNjZiMjRiZmZmYmEyZTJmNjA5Njk0MDhhNDBlNTI2NDY1MDE3YSBsZWdhY3ktdHJ1bmsKKzIzNTgzIDEyNTM1NTNmYzNjYzhlYzJiMzE5MGY0ZjQzODNkZTI3ODdjMzJlMzAgbGVnYWN5LXRydW5rCisyMzU4NCBmMjliOGVhMGI2OTU0NDljYjhiMmM0OTA2Yjg1MDI1ODNiYTMyMmFmIGxlZ2FjeS10cnVuaworMjM1ODUgMjY3YzZmZTBhYmMyZWViOGI3ZGIxMjhkZmUzNThjNGRjMDY2YzgzNyBsZWdhY3ktdHJ1bmsKKzIzNTg2IDVhOTg4MDE1NmQ3MTI1MzdlNTRhZjY0ZmNiYmIxYWM5NmUyYmEzZmUgbGVnYWN5LXRydW5rCisyMzU4NyBiZGEyNzRkZGUyN2UxMDI2NGIxMGU1MzhlMjAyYTVhZDE1ZmMxNjAxIGxlZ2FjeS10cnVuaworMjM1ODggNDI5YTA4ZTJmYzc4MmMzYzZiNmNlODkwMmQxOWFmNWY4ZjI3YzQ4NCBsZWdhY3ktdHJ1bmsKKzIzNTg5IDg1ODU1MzVlNDA0YmNhYjlkYjRkMTQ4MzVkMTk4NDQwMzc5Y2JiZTYgbGVnYWN5LXRydW5rCisyMzU5MCBiMzJkNjZhNGI1ZTZhZDQyYjhiNTZjY2ZhN2VkNmI3OTJmY2E5M2I3IGxlZ2FjeS10cnVuaworMjM1OTEgNTRmMDViOWIxZmM0YmJiYTkyZjZjZmU5NTBjN2U4NzgyN2YwZDY4NyBsZWdhY3ktdHJ1bmsKKzIzNTkyIDI2YjVmOGI5NDg3MmI3YWZmNzJhZDc0NzFhMTVhOWZkMDc3ZTJkNjggbGVnYWN5LXRydW5rCisyMzU5MyBhOTc2MzY3NWI3NGM3YTVmYmQyYjU0NDdmMDUzNWQyYTE0MTUwM2U3IGxlZ2FjeS10cnVuaworMjM1OTQgNzlmYmNmZmY1Nzk3MGJlMTZhOWMzYmMwOGJjNGNhYmUxODA1NWEyNyBsZWdhY3ktdHJ1bmsKKzIzNTk1IGM1MjQ3YTM2NmZmNTdiZWQ4ODhkZDQ5NGQyZGNlZDg3YjI4ZTYzNTkgbGVnYWN5LXRydW5rCisyMzU5NiAwNGZlZTcwZmVkOGZlYWI5NGMyMzlkNWE0ZjM3ZmUwMjM5ZmJiYmI1IGxlZ2FjeS10cnVuaworMjM1OTcgODY4OTZiNWYxZWJjMmY4MWIyMTM4YWI0YjBmYWY5NzQ3Y2M3ZDBmYiBsZWdhY3ktdHJ1bmsKKzIzNTk4IGM3MGEyYjU3YTRkZDI1MWVhYzI0NWYxYTVhNjg5NjMyNzEwN2UwOGUgbGVnYWN5LXRydW5rCisyMzU5OSA4MzgzN2FjNWJiNDBmNGQ1YTUxNDA4Nzg3NjUxM2U0ZTczZWM1YjY5IGxlZ2FjeS10cnVuaworMjM2MDAgMWIzZmZkZjEyMTUwOWJmNjQ0MTQxZGZiOTAxZDQ3OGVkZGFiYjE1YiBsZWdhY3ktdHJ1bmsKKzIzNjAxIDRiZjNmY2UzZjZjZWRmNWViZmU3OTMyMmE2YjZmMmU2YWM0MWJiMjEgbGVnYWN5LXRydW5rCisyMzYwMiA3MDk2ZTQ0Y2QxYmQyOWVlMTBmOWM1ZWU4YTZiZmI5M2M2ZGNlOGNmIGxlZ2FjeS10cnVuaworMjM2MDMgODUyMjZkZjlhNWJlOTFlMTc4YTgzYzhiNDFiY2JiMjYxNTEwNzY4NCBsZWdhY3ktdHJ1bmsKKzIzNjA0IDUzYTk1NzJiNjIzNzc3ZTAxYTc5YmZmNjA3ZDhjNzUxZDFlZjZmYjkgbGVnYWN5LXRydW5rCisyMzYwNSAxNGUwZmUxNTI3MTFmYTI0NjdkZDkwZjA3MzdmMDA0MWFmOTVjODMwIGxlZ2FjeS10cnVuaworMjM2MDYgNDRiZWQyNTRkODM3M2NlY2ZjZmJjMGQ4OTk3NDczZGE4MzVjYWJhMCBsZWdhY3ktdHJ1bmsKKzIzNjA3IDdiZDEyMjcwZGMzZTc3Y2RjOWY0ZjhiMjNiMjI1ZTQyNmQyMDUzMjcgbGVnYWN5LXRydW5rCisyMzYwOCAzNmQxNDgyMTRkOGUyN2RmZjQyNTg5MzYxNjNkNDJiMTFhMWM1ZTBkIGxlZ2FjeS10cnVuaworMjM2MDkgNjdhN2E5OWYyZDVhYzM4YzYzNmRiYzAzMmJkNDE1ZDc5NzkxNDQ4NSBsZWdhY3ktdHJ1bmsKKzIzNjEwIDMyZTEyZjhkNzVkODMyNmIzNDY3NDkwNDk2ZDI4OWM2MThhMjBjZTkgbGVnYWN5LXRydW5rCisyMzYxMSBiNzlmZmQzZmNhMjhjOGZmNWE5ZGE4YmVlZGU0ZTRlMzdiODcxNWFkIGxlZ2FjeS10cnVuaworMjM2MTIgNDI1YzZjNTU4ZmFjMWFhOTljNDU5NTQ4YjA0Y2Q1OWQzZTBmY2JmNSBsZWdhY3ktdHJ1bmsKKzIzNjEzIDMzZGFjNjE4MWJlNTdjOGU5MjhmMDEzYjFlYTg1ZjUxMGRiMGIyMjMgbGVnYWN5LXRydW5rCisyMzYxNCAwYTkxNWIyMmUwMDZhYTFjYmIwMGVlZmVjOTFkNDE0MTJkYWE2MWYzIGxlZ2FjeS10cnVuaworMjM2MTUgNjZlNzc1ODViNGJkOTU5NDM3NTIzOTBlOWI5NWU1MGQ2NjYzZDIxNSBsZWdhY3ktdHJ1bmsKKzIzNjE2IDllN2EwYWY0YzBhM2I2YTcxYzQ3NzRkOGI1NjI5ZTNhM2I2MTlhOWEgbGVnYWN5LXRydW5rCisyMzYxNyBkMWM3YjNlZGU0ODE1OTI2MjAyNGQ2ZGYyZjhiMDU1ZjIwZmQ1NzlkIGxlZ2FjeS10cnVuaworMjM2MTggZmRjMTkxNDQwNmUyNmUyNzJmZmI0NjlkOGMyMzU2YzU5ZDI2Zjc3OCBsZWdhY3ktdHJ1bmsKKzIzNjE5IDRkYmI1MDU4MWQ5MDNhNDQyOGI0MTU4Y2U3ODE5MmFlZGY2MDllZDIgbGVnYWN5LXRydW5rCisyMzYyMCBjMGQ2NjI5NjYyNzI3NDY0N2M5Y2ViMjFmNTFjNzJkZjNlNDlhY2Y1IGxlZ2FjeS10cnVuaworMjM2MjEgOTJkNTZhZTYzZWQzZjdkMGRjNTMwZmJhNDA2YWZjNWNlNDQyY2Y5MCBsZWdhY3ktdHJ1bmsKKzIzNjIyIDk4ZjU5N2ExN2M5MDdmOTYyZDgzMmJjYTEwMjRlNWRlNDAwNjA5YzUgbGVnYWN5LXRydW5rCisyMzYyMyBlMTkxY2VlZTY3MmZmZTE1NWY1YzQ4OTE4NjJkNmQ3NmVjYjBlODI3IGxlZ2FjeS10cnVuaworMjM2MjQgOGEwOWM4NTVmOTU3MzA0MTA1ZGI4YjYxMmRhNmMwMmM0MWE1YTEwMiBsZWdhY3ktdHJ1bmsKKzIzNjI1IGM0MDgzMzNkMzdmMDYxNTU2MDJlYjU3MzAyNTIxNWIzMTJmYTNiYjEgbGVnYWN5LXRydW5rCisyMzYyNiBiOTk3YWM3MGU0NDVlZGJhM2ZiNTE3NjNmZDMxMmY4NDkxMGNjYTUxIGxlZ2FjeS10cnVuaworMjM2MjcgNmIxZDhjYjk5MDRhYzAxZDQxMjZmMmQyMGY4ODRhZTEzYzI5ZDAzYiBsZWdhY3ktdHJ1bmsKKzIzNjI4IGIwZDgzMDZjMDljNTFiMGI2OWRjYTg2YzM2MGQ2NDUwNTgwYmU3MmQgbGVnYWN5LXRydW5rCisyMzYyOSBlNDZmNjlmNTc5OGI2ODhjMWIwMmNiYzgwOTZlZWViNGRlNjRiMzZlIGxlZ2FjeS10cnVuaworMjM2MzAgN2JjYWNhNjUzMzg4MjRkNjQ2MjczMmRiZmJjODg4MWMwM2JiYTI5NSBsZWdhY3ktdHJ1bmsKKzIzNjMxIDMwMGIxZDhiZmE0ZGUxZDM1MTMxZGVhODY1YjY5NzgyOWY2YzhhOTUgbGVnYWN5LXRydW5rCisyMzYzMiA5ZTcyYmNlYjU0MGI1NDc0MGY0ZGVhMTQ0ZGIyYWQ5Yjk5NDU2NDFiIGxlZ2FjeS10cnVuaworMjM2MzMgODgzMGJlMzIwOWEyYWQxYmZkM2E0MTY3MDE1NjZiOWFlMmZiMjU3YSBsZWdhY3ktdHJ1bmsKKzIzNjM0IGFiZmQxNzAwMWU4ZjVlZmUxYTczOWNiZjNmMjYzYTdlYTA4ZDhmNmIgbGVnYWN5LXRydW5rCisyMzYzNSA4ZWYzZTk1MTgyYzM2ZGMxM2Q1YjUyZmMxNWQ1NGY4MDU0ZDg5NGJiIGxlZ2FjeS10cnVuaworMjM2MzYgZGJlYzg2M2QzM2Q3ZWEzNTAxNWM0MGUwNWZlZjllOTQ4OTFjYmJjZCBsZWdhY3ktdHJ1bmsKKzIzNjM3IDRiY2MyMzFjMWE0MWE0ZTI5M2QzZTZlMjJiNGQ0NjliNGMxZTgyZWIgbGVnYWN5LXRydW5rCisyMzYzOCA5NDk4Mzk0MmM5NGI5YjdlYWJlMzFlOTI5YTdiY2NiOGM4Yjc4YTUyIGxlZ2FjeS10cnVuaworMjM2MzkgM2FiM2I1MzVkYWYyNDk1ZjZlYTA5ZDJkY2M2ZmNjOTA3OTA1MmM5MSBsZWdhY3ktdHJ1bmsKKzIzNjQwIDA2MWRhMjJmNDIwMzljY2FkYWJkMWQzNGVjNTdlN2Q3YWQ2M2ZhYWEgbGVnYWN5LXRydW5rCisyMzY0MSA5YzJkNDQ0Njc0ZDA5MDFmNTk0ZjVlMjgzNmNmNGM4NTg4OWRhOGY3IGxlZ2FjeS10cnVuaworMjM2NDIgMmY4OWIzNDRmZGIzZGQ1Yzg0YzI3ZGM1OWZiOGFiZjY1YzZmMTdkZiBsZWdhY3ktdHJ1bmsKKzIzNjQzIGFmZjhkMTRiMjhhZGEzZDc5ZWYwYjY1YTUyYWY4OTVlM2E0MjU4ODcgbGVnYWN5LXRydW5rCisyMzY0NCAzYWRjM2ExNGNkZTQxMjdhYzFmNGFlNGRmOWI0MGQ3ZGJmYTI3NjE4IGxlZ2FjeS10cnVuaworMjM2NDUgYjRmODI5OTQxZjNkZjQxMWUxMTQzYTExY2RjN2RkMTgwODJlNjcwNSBsZWdhY3ktdHJ1bmsKKzIzNjQ2IGJlMDg3MzRiMGFmZDIxMDE2OTJhZDg5YTIyNDVkOTExNmE4NmM1OTcgbGVnYWN5LXRydW5rCisyMzY0NyAzYjQ1YzA0YTQ4MzNiZTkwY2U3YzRkNTRiOGM4MzBjODcyMGVlNjE1IGxlZ2FjeS10cnVuaworMjM2NDggMmJhNDAxOGRlMmUzMTA2NDgwOWI1YzZkNTNlMjRiOWY3NzQ0NTc3ZSBsZWdhY3ktdHJ1bmsKKzIzNjQ5IGJlNThlZWU2OWE5NDk0NDNiMGE5ZWVmODg5NDY4ZmJiNTIwMmI0OWQgbGVnYWN5LXRydW5rCisyMzY1MCAzYzAxYzM0ZDA3ZjY4ZWMxNmNhNGM5NTJjNzJhODg3YThkNWFkNWI3IGxlZ2FjeS10cnVuaworMjM2NTEgZjkwOGIwNjNmMjhiNzk3NWU1ZWY4ODViZDZlOTYyYzcyZDgxZGM4ZiBsZWdhY3ktdHJ1bmsKKzIzNjUyIGJlOGNiYTVhM2I3YmU4Nzk5MzBjZGEzZGUzNzYyY2EwMGQ5NmZjYmIgbGVnYWN5LXRydW5rCisyMzY1MyBiNDcxNjgxNzhkODc5Y2JlMzI5MzgwZDdkNzBiNzE3Mjc0ZGY5N2E4IGxlZ2FjeS10cnVuaworMjM2NTQgOTQ2YmViZDAwMTMyYzNiYmQ0MDM3ODIwYmNhYmEwMGRlN2EyMTI4ZiBsZWdhY3ktdHJ1bmsKKzIzNjU1IDc3M2ExMzBiMzMwZWJlYWNlYzkzYjE0NDcwNGZhY2Y2MmM2Mzg5OTcgbGVnYWN5LXRydW5rCisyMzY1NiA4NTNjMjY4YmYyNDc5NWU3YTI1YmVhY2I3NDNhYTMxNTQ2YzEwOGIzIGxlZ2FjeS10cnVuaworMjM2NTcgYzI3Y2Y5MTNiMWQ2OTEwMzBkN2UyZDMzZTcxNDAyZmQ4OGQyMjMyMyBsZWdhY3ktdHJ1bmsKKzIzNjU4IGFkMWYwODEyODBhYTAwOWY1ZTMyZmFjNTM5ZTg5MWQ4N2I4OGVmZDIgbGVnYWN5LXRydW5rCisyMzY1OSAyMDUwODc3YzBjMzYzYWMxODExYWI1Y2EzMTA1NTE3ZjYxNDA1ZjM2IGxlZ2FjeS10cnVuaworMjM2NjAgNzI5NDkzMmQ3NGVjYWVmNWM1M2M5NTZkNThhNDZjMmFlZTZmYTQ4MSBsZWdhY3ktdHJ1bmsKKzIzNjYxIDlmZTk3NTQ4ZDk1MjFmZDhlYTg0OTdiMjhiYmY0YzY5NDczN2JhMzggbGVnYWN5LXRydW5rCisyMzY2MiBjOWEyMTIzMjlkYTZmMGNhMWJjN2UxZjM4YWEyZWU2ODY0ZmFhZWUwIGxlZ2FjeS10cnVuaworMjM2NjMgNjVmNjBkM2ZjZGQ3N2UwMmU3MzAyNWE0NGZmMjIwYzdjMjMwMDQ1MiBsZWdhY3ktdHJ1bmsKKzIzNjY0IDY1NzkwNTYyMDMzYzEzY2JjODJiMGZkNGMxOGVlN2FjMjdhNzhjNDYgbGVnYWN5LXRydW5rCisyMzY2NSBiNzQ2MTBjOTJkOGI4MjZkMGIzYmRlYmViMjdlYzIxMGYyNDEzMzYwIGxlZ2FjeS10cnVuaworMjM2NjYgZjU3ZjE3Y2I0MTA4NjU0MmJjYWIwYTIyMDhjOGY5MjAzYTNkY2Q2NiBsZWdhY3ktdHJ1bmsKKzIzNjY3IGVkMmVlYWI4MDJkMmM0OWJkMTU0OTQwMjczOGYwNWZkOTY3MTdmMDIgbGVnYWN5LXRydW5rCisyMzY2OCA5YWU3OGVmODU4ZTJjYTliYmVhNmZiMDJiMDliNjMyZTFmMWJjNjc0IGxlZ2FjeS10cnVuaworMjM2NjkgYjZhNWZlY2JlYzNjYmVhNmY4Y2NjYzBjMDk2MjhmYmYxODVkNmEzOSBsZWdhY3ktdHJ1bmsKKzIzNjcwIGMzYTkzN2NmNjBhNWY1Y2RhN2Q2NWJiMzE1MTQxYWFiYWIyMzk4NDEgbGVnYWN5LXRydW5rCisyMzY3MSA2YjEwNDA4M2Y1ZjMzYTkwYjhlN2NmMTdiNmE4MTAyZTU1NDkwNTNjIGxlZ2FjeS10cnVuaworMjM2NzIgNDY5YThlMWY3ZWRmNTEzN2YwYzMyMjE0Y2I4MjQ4MzcwYzI3YWVjNSBsZWdhY3ktdHJ1bmsKKzIzNjczIGI5ODE4NWM4ODJlNGU3NmZhMTkyOWE4YzFhNTg1ZGRmNGE5YmY2OTAgbGVnYWN5LXRydW5rCisyMzY3NCAyYTRiYjdkMTliNjAzZmU4NTZkNDg1ZmZjM2M1NTQzNDU4NjA2NGQ2IGxlZ2FjeS10cnVuaworMjM2NzUgNGRhYjYxZjQ4NDU4MTcyMWZiMDlkY2JlNjI3Nzk3YjZkNWZkYzlmZCBsZWdhY3ktdHJ1bmsKKzIzNjc2IDY5OGJmN2MyMmJmZWJhNjJjZWVjZTc5YzRhZTk4Nzg0OGE1Mjg4NWQgbGVnYWN5LXRydW5rCisyMzY3NyAxY2E2MjdjNGMxMDVmMjFmYmQyYzI3ZTk1NWQzOTc4ODM1Y2Y1YjE4IGxlZ2FjeS10cnVuaworMjM2NzggZTRkMGIxZjk0ZWNhOGQ2YjIzMjQ1NzI1NDYzZGI4ZWMzMWFjN2JhNiBsZWdhY3ktdHJ1bmsKKzIzNjc5IDYyMWM3NzAzZThiNzUyOGU5ZGY5YmEzNzM4YmViYWNhYTY4NjYzYmIgbGVnYWN5LXRydW5rCisyMzY4MCA1OTAwYTlkODA4NDgwOTI2OWM1NWJiYmJjODk0ZDBiZTE1NTk1YjdmIGxlZ2FjeS10cnVuaworMjM2ODEgYzE2OGVkYTczNmU0NGE3YzhiNGNkYWUzNGIyMTZjNzExNDE4NmI4NSBsZWdhY3ktdHJ1bmsKKzIzNjgyIDkwMzIyMTg1MmMzYTU5YzMxNzA3MzZlYTI0M2FlMmExMzhkZTYwM2EgbGVnYWN5LXRydW5rCisyMzY4MyA0ZjNkMTI0MDgzMGU2ZjUzMDM4YTgwMmVkZGEwNDA4MDRkNWI1YTFmIGxlZ2FjeS10cnVuaworMjM2ODQgM2ExODEzM2Y5OTA2NDM1MDRiNDhlMDAwNGJjNTkxODRkMmIyZjIzNCBsZWdhY3ktdHJ1bmsKKzIzNjg1IGVlODk1NjdiY2FiNDQ1MGE1MWFkZTg4NDExYTc4YTUyODExMmM4YTQgbGVnYWN5LXRydW5rCisyMzY4NiBmNjE4NjA3ZThmOTg0MjBkNjg4OGM0ZTQ3NzcyYmU4MjI4YTlhODAwIGxlZ2FjeS10cnVuaworMjM2ODcgNDY5OGEzZWM1ZmE4Y2ZhZDliNGQ3OTUxMzllNGRhZGJiNjQ2ZjU5NiBsZWdhY3ktdHJ1bmsKKzIzNjg4IDZkYTAzNzE4YzEzMzBjM2MyMjExODc4NzNhYTljOTc4ODE5ZTJhMGIgbGVnYWN5LXRydW5rCisyMzY4OSA3ZDFmNDkwYjZjYjE3MjgyNGY5ZGRlYjA3M2VhNGRmNTE1MjQ5ZjA4IGxlZ2FjeS10cnVuaworMjM2OTAgNTE4ZTMwZjkwZDFmN2Q4ODQ0ZTI3MTg4ZGFhNTljY2E1NmM0NjgyZiBsZWdhY3ktdHJ1bmsKKzIzNjkxIDQ3MTJiYjYyY2MyNWQwNWIyZDBjNzZhOTNjYjNiZjU4YWVlODg5MWEgbGVnYWN5LXRydW5rCisyMzY5MiA2MzJiOWQzYThkMWE3YjI5MDZmN2M4MmIxNzQxZmNkNmIxOTY0MmFhIGxlZ2FjeS10cnVuaworMjM2OTMgYjAyOTg2ZTlhNmJlNDcyMjY2NDJiN2U1ZWQ2NTdkZTE4YmFkOGU1NCBsZWdhY3ktdHJ1bmsKKzIzNjk0IDVkNWFkOTUxYTZkNmUxNzBkNGYzM2I2NDI5YTY4ZWNjYThiYTkwOTYgbGVnYWN5LXRydW5rCisyMzY5NSBjZWUwZmU1ZmNlMTE1ZGE1OTU5OGE4NGZhOWU4YzI3YjNjZTA1ZjNjIGxlZ2FjeS10cnVuaworMjM2OTYgNTYxNDFiODZhN2YyYzk1YTEyZjY2ZGVlYTQ5ODJmNzRhNTM1OWNiMyBsZWdhY3ktdHJ1bmsKKzIzNjk3IDdmNTFhNGI3ZGViNDQwZWUyZmQ1ZDZjNDczYzRjZjEwMWQxNjNkNWEgbGVnYWN5LXRydW5rCisyMzY5OCBiYTI4NTA0MDhmMGEyNjBkNThkOTQzNmNhMjQzNGE0ZWY0YmQ0N2QyIGxlZ2FjeS10cnVuaworMjM2OTkgNTAwMGI1ZDRjMzI2NWY1NDEwZTc3OGIzM2FkN2MyZTI1Mzg3YmQ0YSBsZWdhY3ktdHJ1bmsKKzIzNzAwIDIwMTE4ZjQxMjlkZWZkZmUzMTlmZTA4Nzk3ODEwNzdmZGNkNTBiYjUgbGVnYWN5LXRydW5rCisyMzcwMSAzNTgzOTdiOTA3MGY2YTdlZTk1ZmUzOTM0MDk3YTBmZGYxYjk3OWM0IGxlZ2FjeS10cnVuaworMjM3MDIgMDhkN2E2NzU2YmZlZDkyYTg4OGE4MGIzYWY0ZWM5N2M0NTY2NzkxYSBsZWdhY3ktdHJ1bmsKKzIzNzAzIDg1NTcxZDVmNjU0NWI2N2JhNmViZjgwODdhZjdhNjQwZWFmODBlMWQgbGVnYWN5LXRydW5rCisyMzcwNCA5YmUyY2M2Yjk5NTlkODMxYzUxYWIwNmUwNGIwMTM0YzY5OWYyMjQ2IGxlZ2FjeS10cnVuaworMjM3MDUgNTYyODM0ZWQ4YmFiZGY3YWUzMWNiNmI5MzE4MTg5ZjRmOTE0NDFhZCBsZWdhY3ktdHJ1bmsKKzIzNzA2IDQ2N2FjNDUzY2NjMzJjN2ViNjNkMmI5ZGVkYTVmMjg0N2FjYmY3YjIgbGVnYWN5LXRydW5rCisyMzcwNyAwMzYyNGQ3NDg0ZmEwNjAwZTBjNDhmZGVjYTc0YTE4NDIxN2U3NWU5IGxlZ2FjeS10cnVuaworMjM3MDggYmM5MDVhMTFjMTQ4YTQ4YmNiNWZkNDBiMTMzNWE1MmQ5ZDY0OWYzMCBsZWdhY3ktdHJ1bmsKKzIzNzA5IDI3YWIwMzI3YjJmYzNhOWU3YTdiZDAzYThlODYzYzMzNDVmZjQ5MTIgbGVnYWN5LXRydW5rCisyMzcxMCA4NTUyNDViYjRkNDI3NmNlZjc4YTJjY2VkZDllZjZlNjNiNTQ2NjY3IGxlZ2FjeS10cnVuaworMjM3MTEgMzUzYTNlOWY4NTE2YzE1OTliNzhmZGFhM2UzNjgzNDhjZTUwY2E1YiBsZWdhY3ktdHJ1bmsKKzIzNzEyIGIxYTg2MTZmMTNlNGNkNzI2YmU1NTgwMzk4Zjc0NGUwNGFlOWQzOGUgbGVnYWN5LXRydW5rCisyMzcxMyA2OWU2NWU3MzkxYjgxN2JjMDQ4NDZiN2U4YTFiZjcwOTg1ZjQwMjcwIGxlZ2FjeS10cnVuaworMjM3MTQgYjcyNTY4YTJjMTdjZWMyMzA4OTExNGNhMWQyNTRkM2RhZDQ1ZTZiZiBsZWdhY3ktdHJ1bmsKKzIzNzE1IDk5YjJiZDI1YmIxMmQ0N2EwMWZjMTQzMTQ0NTk1NTVhZTYxNmVmMjQgbGVnYWN5LXRydW5rCisyMzcxNiA0MWJlZDFmNmQyNmNlYjNhNzU3YjNlYTIxMzM5OGMyZjgxNTZmMmJiIGxlZ2FjeS10cnVuaworMjM3MTcgNjRmNGFjNjA2YWU1MzEzZDQyNWVkOGEzYzAwODZjZmFjYjEyYWNjNCBsZWdhY3ktdHJ1bmsKKzIzNzE4IDU5OGMwMmFiMDYyZDQzZmZjYzY2ZjFkZTk0YjQ3YzBjMTYzYjViZDQgbGVnYWN5LXRydW5rCisyMzcxOSBlYzk1OTY2ODcyOTI5NjNlMzZlNGJhZDRiNzlkMTg4NDI4NWY3NWU2IGxlZ2FjeS10cnVuaworMjM3MjAgYmZmNmMyZDc2ZjMzNmM1MmQ2ZGViNDhjNjc5MTQzM2VhN2EwM2ZiYSBsZWdhY3ktdHJ1bmsKKzIzNzIxIDRmNzFkY2ZkMGE5MzcwZWY3YmU0MjZiNDM5ODcyNzY4MTgyN2M3MmUgbGVnYWN5LXRydW5rCisyMzcyMiBhOTYyMzViMmNhNjI1YjMwYTY4NjQ2YTYzODRlYWVhYzNjNjhkOTdmIGxlZ2FjeS10cnVuaworMjM3MjMgYzY4ZDE4NTVkYWE5ZWEyNDg1MWFhYmMxZjMwOWM4NzViOTc5NDg3YiBsZWdhY3ktdHJ1bmsKKzIzNzI0IGZmYmY5NGZkOWNlZjhlMmY2ZTg1MzFkYWNlMDNlMzFlZTJhYjAwNjMgbGVnYWN5LXRydW5rCisyMzcyNSA3ZTcxZWViYWI0ZWEzOWU5OWQ2MjZkNzJjYmIzOTVhYTVlOTc2YTVhIGxlZ2FjeS10cnVuaworMjM3MjYgMmYwYzVhZjRkNWVhMDdmYjU2YTA1YjZlNmQxNWJhNGJkYjFkZDRlNCBsZWdhY3ktdHJ1bmsKKzIzNzI3IGNlMTJiYjEwOTdhNDE2NzUzNGU0M2M0NjRmN2YxZTc2NTFjNTNmY2UgbGVnYWN5LXRydW5rCisyMzcyOCA5OGRmMDExNWVjZjkwMTJjNDZjZWM5OTlhYTk2YzM3YzFkNjUzMjViIGxlZ2FjeS10cnVuaworMjM3MjkgYzcyOTE1ZDhhYWM3Mjg5Zjg2Y2RjOGIzMjQwMTRhNGZhNmU1ZjQzYSBsZWdhY3ktdHJ1bmsKKzIzNzMwIDYwZTEyZjgzZDJkMjI1ZTNiMWE4OTJlZjA0ZjFiOTZhODY0NmQzZWIgbGVnYWN5LXRydW5rCisyMzczMSA1YjVjMTVhMDk1Y2M3YWJiNTE1ZjQ4NzE1NGU0NDRiOWU5NjIzMjEwIGxlZ2FjeS10cnVuaworMjM3MzIgZWJmZDg3ZTg3ODg0ZTA2ZjgwMmUxMGRhYWIyZTkzMTg5ZWNkYmY3MyBsZWdhY3ktdHJ1bmsKKzIzNzMzIGM0NmU5NGZkNjk4NmI2ZTBlYTY2Zjc4YzA0NDM1MWUxMzgzN2ZiZTQgbGVnYWN5LXRydW5rCisyMzczNCA4OTY0ZWY4NGM5MmY0ZDIxNzhiYjM4ZmU0MWQxZjlmYTM0YzU4ZTRiIGxlZ2FjeS10cnVuaworMjM3MzUgYmJkYzBhYmZiYjEzOTdmZjUxYmE5NzM0NzcyYmNjZTVlZjJkOTlhZSBsZWdhY3ktdHJ1bmsKKzIzNzM2IGRjNzIwNGRkMjY4NmVhM2VjZmI5MjhhZDhlZjA2OTU0M2QyNTIwODkgbGVnYWN5LXRydW5rCisyMzczNyA4ZDVjMDAwZTBlNWI0NDM4OGY1MzMzOTJiZTI2MDk3Y2EzODVmM2FmIGxlZ2FjeS10cnVuaworMjM3MzggYTVhMzBiYTI4OTlmNTdlOWRlZjYxZmM3OWIzYzVjMjRjNDZiYjYxMSBsZWdhY3ktdHJ1bmsKKzIzNzM5IDJmMDk1YzNlMDA3ZGQ3NzZkNDc0NDljZDgxYTViYzY2ZmNkMDliNjkgbGVnYWN5LXRydW5rCisyMzc0MCAwY2IyODdjZDc1NDdhODQ3YzYyNDNlZWQ2NTYxNDU1ZjIyMjUwNWI2IGxlZ2FjeS10cnVuaworMjM3NDEgYzIzOTg5ZTIyZmZhNTAxMTRmYjE1ZmY4ODJkZjM4NTBmYjYzMmM0YyBsZWdhY3ktdHJ1bmsKKzIzNzQyIDA3MWNmZWU4ZDhlYjlhYzI5NjgzYWFmODAwNDM3ZTQ2YTgwNDE1MTQgbGVnYWN5LXRydW5rCisyMzc0MyA3NjlkZjg1ZDcwYmMxM2ZmMGRjNDI1ZTQzZjQ2ZDRjZTc0ZTcxYzRmIGxlZ2FjeS10cnVuaworMjM3NDQgZGQwY2RkM2RlZmQ4MzlmODhjNmJmZWZhMWJiMDBiNGUwOGYxNzVkMCBsZWdhY3ktdHJ1bmsKKzIzNzQ1IGNkOTZjNGIwMWZmMGYwYTgzMTNlYzAzMWZiZDM2MDRhNjgyYjAxYTAgbGVnYWN5LXRydW5rCisyMzc0NiA4ZjQ3MzE3OWIwNzMwMDk0ZjJhNTgwODhmNGMwYzJlN2JlYjRlNDc5IGxlZ2FjeS10cnVuaworMjM3NDcgNWQ2NzgzNTZjODk0MjliMmU0YjkzY2E5ZmM0YWYxMGM0NDYzZWZjZCBsZWdhY3ktdHJ1bmsKKzIzNzQ4IDFhOTQ5NGY5ZWRiMjcwMjE3ZDY4MDA4NDg4MjA5YTIyNWZkZDliOWUgbGVnYWN5LXRydW5rCisyMzc0OSA0YWY4ZDI0ZmE2OTFlZWExYTBlNmExZjUwMDE1ZWQzZWE5YWU0NGQwIGxlZ2FjeS10cnVuaworMjM3NTAgNGJmZGJjODIzMTBmMWJjMzVhNmQwYjZlNGFkMmE1MjA0MGY0OWE2NyBsZWdhY3ktdHJ1bmsKKzIzNzUxIGI2OTI3M2JlZTA5NTBjZDdjOTBiMjIzMjA1ZWUzYzZlNmVmYmRkNzYgbGVnYWN5LXRydW5rCisyMzc1MiBiZTY3YjY2ZTVmZWQwZjcyNjZjZWU3OTNkMTZmOWRhYjBiODRjYzI1IGxlZ2FjeS10cnVuaworMjM3NTMgZTA5ZmI0ODQ4NzY1MzUyOGZlNjQxMmMzYzMzNDYxYTg1YjI0NDhkZCBsZWdhY3ktdHJ1bmsKKzIzNzU0IDdjYmQ0MDdiZTZlN2QzZDE2ZDc3ODY0MmVmMTIyYTcwMDYwMjFiMjUgbGVnYWN5LXRydW5rCisyMzc1NSAxNDlhNjVmYTQyN2MzNDk1OWI2MjFkZmZhZDcyNTg2ZjdlZGNhODBjIGxlZ2FjeS10cnVuaworMjM3NTYgYmY0ZmYwNWVhYjUyMDdhZDA2NmVlYjIwNTMxNDEyYTk5NTlkNWRlMCBsZWdhY3ktdHJ1bmsKKzIzNzU3IDFkOWU2OWZjZjBmOGQ0ZjUxNjI3ZWVmMjFlOWVkY2RkMWJhZDM2ODcgbGVnYWN5LXRydW5rCisyMzc1OCBjOGIwZTk5NDUxNTk5ZjVjNzcxNzhiMTYyZWFkNjM0NTIzYzFlNWQwIGxlZ2FjeS10cnVuaworMjM3NTkgNjhmZWZhOTgyYzVjMjkxZTk3OWM3YzI2MjY1NmE1YzUxZDBiMGRmMyBsZWdhY3ktdHJ1bmsKKzIzNzYwIDdjYmQyODg3ZjYwZmNlM2U0YTk0NjkyYTA5MDU0ZmUzZmIxNDg5MTcgbGVnYWN5LXRydW5rCisyMzc2MSBhOWIxOWRiMTgwYTI2MDBiMDIxYjNjNjgxZTZiZmM5ZDQzNTM2OWQzIGxlZ2FjeS10cnVuaworMjM3NjIgMmJjNDE4M2ZiNTdlNjlmYTE2MGRjMjQxZDQ4ZWM4OTRhNTAzZjQ5NiBsZWdhY3ktdHJ1bmsKKzIzNzYzIGEwYzhjMmU1YTQ0ZDA4NzJhYzUyM2Y4ZDhiOThmNzU2NzQxNGYzZWMgbGVnYWN5LXRydW5rCisyMzc2NCBmZGRhY2VmZWViMzZkZmEyNmIxNTEyYTU3MWVkYTE2ODg4M2ZlY2M5IGxlZ2FjeS10cnVuaworMjM3NjUgNzMzY2IyNjhhZDJmYjBiNzQwN2NjY2Y1ZDg1YTI3OWZlMzc0YjgwYyBsZWdhY3ktdHJ1bmsKKzIzNzY2IDY0MjZhNWFkYmY3NzUzYmYwNmM3Yzc1ZGQ0MGExNmRlY2RlNDc3ZjAgbGVnYWN5LXRydW5rCisyMzc2NyA4NDMzMWM4ZDk4YTQxYWRkOTBkN2I2NzE0ZmY0M2Y5OGY5ZmU1YmM1IGxlZ2FjeS10cnVuaworMjM3NjggZTA4NjRhYWM5YjZiMjVkMjdmYzE1ZGFmOWM2ODlhZWE5NzM1NTBmZCBsZWdhY3ktdHJ1bmsKKzIzNzY5IDkzODQxYzVmNDc1YjEwMGE4YzI1NGZkZmRhNjM5N2QwNzRjMjQ1NTEgbGVnYWN5LXRydW5rCisyMzc3MCA5N2M3NWY5ODFhOWU2MjczZDczYzZmMmRjMTdiMjIzMGJmZjEwNzViIGxlZ2FjeS10cnVuaworMjM3NzEgMzY0YzIzOGE2ODcxMGZkOTQ2MzJiZDUwODYwZTFkOGZiNTNhNGI1MCBsZWdhY3ktdHJ1bmsKKzIzNzcyIDhlMGMzMTg0OWM2NDhlN2QzNmVmYmJkMWNlNzU4MWJjNWQ0MTliNjEgbGVnYWN5LXRydW5rCisyMzc3MyBkZmM5ZjIzYzg2NTUzNDUzMzIzMTVkZDcyNGIzYWVhNTcwNzRkMzczIGxlZ2FjeS10cnVuaworMjM3NzQgYmRjNDg2YzY2ZGYwNGJhMGQ3NDQ5MTkxYTc2ZWM5NzZlOGFiMzdkYiBsZWdhY3ktdHJ1bmsKKzIzNzc1IGMxM2E0NzNjZTFiN2VkZGJiMDhkZjA4YjYzY2QwNGY4ODk1MDA1NDIgbGVnYWN5LXRydW5rCisyMzc3NiBkZmIyZWZhNTU5NjcyYjg3ZWVhMGY1N2I1ZTU5Njg1MDY2YjU1MDFhIGxlZ2FjeS10cnVuaworMjM3NzcgNjJiMjA3NTg4ODY2Y2M2ZjUwZTU1MDhmM2FhZjMxYmU5NWM5Y2MwOSBsZWdhY3ktdHJ1bmsKKzIzNzc4IGY5MzhjZDFiYTk0ZWM0ZTMyNzMwMDU0MDRlMDlhYWE4NTAwMDZiOWYgbGVnYWN5LXRydW5rCisyMzc3OSAwNmYxMjU0ZDIyODA4ZWFkMTgyMDIzYWE1YzY2NDlkMDA4MWI3ZTZiIGxlZ2FjeS10cnVuaworMjM3ODAgZDIxMTYwYTkyMTc5MTM4OWMxMjg1NmZiMTNlNTBmMzQ5YjVjM2ZlNCBsZWdhY3ktdHJ1bmsKKzIzNzgxIGQ1MWZlNTIwZTVmZGMwMjBjMzI3NWRiYTQwMDIxMDJiYjI4NzZlMTggbGVnYWN5LXRydW5rCisyMzc4MiAyM2RjN2JiMGJlNGZiNzc4NjhlMDUzOTZmMTUxMDFjOTVlMGU5NDg5IGxlZ2FjeS10cnVuaworMjM3ODMgZDAxYzVmMjk5MTVhMjhjODM4YTQ3MjUyNzUzZTIzZjg1Zjc4NWIxOSBsZWdhY3ktdHJ1bmsKKzIzNzg0IGJjM2M4NDE5ODc0YzZlMWYzODljZjVjODc5N2YyMDE4MDA3N2FhZDAgbGVnYWN5LXRydW5rCisyMzc4NSBjYjg3YmQ5N2Y3NDBmMTc1MWFmZmU0ODAxZTI1MWIyOWQwOTMxZjdmIGxlZ2FjeS10cnVuaworMjM3ODYgM2QxMzQxN2E2M2UwZmQ3MzVhODVlMmQxYjA2YzhlZTA3MTdjOGYwMSBsZWdhY3ktdHJ1bmsKKzIzNzg3IDU0YTgzOTYwNDU0MDNjMGUyODdmMmVjZmQxYjM4YTcwZmQwZTI4MTYgbGVnYWN5LXRydW5rCisyMzc4OCBmZDU2MTQ0YTk2ZThmYTY0NGM1ZTI5MTg5YjY1MzkxZTZhNWU1OTNmIGxlZ2FjeS10cnVuaworMjM3ODkgYzk0OGJjYjA0MTVlMGMzMmVhNDEzODZiZjg0NDNmZGQwNGNjOTE5MiBsZWdhY3ktdHJ1bmsKKzIzNzkwIDFmM2MxZTgzMWYyMTZhNDliZTZjMDgzMjNhNzMwNjI5Y2Y3ZTA5NTcgbGVnYWN5LXRydW5rCisyMzc5MSAzZDNiNmI0Y2I3OWYzOTliMjJlMjE0OWE3NzA3MmE5MjYxNzNmMjE1IGxlZ2FjeS10cnVuaworMjM3OTIgY2IzMzRhOGM4ZGQyM2E1NjZmZGFkMGJmN2IwNDQ1YzEyOWRhZTJjNyBsZWdhY3ktdHJ1bmsKKzIzNzkzIGRiZmVkM2JmMTYwZWVkYTAzZDNhMzIwMTc5OWEzMWEzNTM1ZTg0MzYgbGVnYWN5LXRydW5rCisyMzc5NCBmMGUzM2M1N2U0NmU4MDEwMTRkOTc4ZDEwYmNhY2NiNDU2ZDlmOTJiIGxlZ2FjeS10cnVuaworMjM3OTUgOWI4NGVmYmY2YjBkMGI3NzY3MzMyZDIzNGMzZTdlNDZkZjQxMjYzMSBsZWdhY3ktdHJ1bmsKKzIzNzk2IGJjMTM4YmM3M2NkZDFjMzU0ZjcxOWU3NjMzNjdhNzk2YzAxYWQzMTEgbGVnYWN5LXRydW5rCisyMzc5NyA0ZjdiZWZlYzM1YjAxOTdmNGI3OTA3MmE1OGExODlhZTQyODc2YmYyIGxlZ2FjeS10cnVuaworMjM3OTggYzIwMDViYjg3OWI0NjdkNTQ3OWZmMzJhY2MyN2Y1ODY0NGNjNzM1OCBsZWdhY3ktdHJ1bmsKKzIzNzk5IDgwYjhiZmEwNDQwNmJmM2Y0OTE1ZjdiYWEyYmM2YzQwZjcxMzQ4MTQgbGVnYWN5LXRydW5rCisyMzgwMCA0YjE2MTViZjZlYjA5ZDMxYzc2MjFjNjVhOWVmOTEzNDEzZTkzOWI4IGxlZ2FjeS10cnVuaworMjM4MDIgMDFhZjkxYWVjY2Q0NDcyNTQyNDE3OWUyN2FmNjgzMWYzOTM2ODk1OSBsZWdhY3ktdHJ1bmsKKzIzODAzIGZlMWI2Y2U0ZWI5MzYzNTk4OTJjNDcwZmM3OTUyMjk3NmE5NDQwZWIgbGVnYWN5LXRydW5rCisyMzgwNCAyZDU5OWEzNmI2N2E4YzMwY2I5OGE0M2RlZjQ5YzdlZGYzN2VkOWFhIGxlZ2FjeS10cnVuaworMjM4MDUgYWQyNjYyMDk1ZDc3MjQ2OTFkMGM0ODRhZmY0NmMyYmQyOTZkNDg4MCBsZWdhY3ktdHJ1bmsKKzIzODA2IGY1NjdiNDU3MzdjMGUzNDgwZTI4ZDEyZjExMDI4ODNlMDUyMTZjYjggbGVnYWN5LXRydW5rCisyMzgwNyAyOTQ5MDFhYjg2MzBiNWRjMDk3MDNjZmMwNzcwOGEyNDZmYWU0YWUwIGxlZ2FjeS10cnVuaworMjM4MDggYTg5OTVhNmRlOGQwMDVlNjYzNjZlNzMxNWM2MGY4MzA5OGFhZDQwMiBsZWdhY3ktdHJ1bmsKKzIzODA5IDRiYTQ1NDhiYTk0MTc5NDBkZTJiYjgzMzk3YzEyZjNjOWE2MzEzOTYgbGVnYWN5LXRydW5rCisyMzgxMCAzNjcxNGI5OGZlNTEyMGU2NTI3MWQ4MDMxZTdkYWVjOWZlNTk4Y2M4IGxlZ2FjeS10cnVuaworMjM4MTEgNzNhMTM5NWEyMzUxNjQ5MDk2OWEwNDMxZjZkMzM5ZGYxODE0ZjQzMiBsZWdhY3ktdHJ1bmsKKzIzODEyIGExMmNjZGJjZThkYTkzZWJhNjViOGZhNGU0MjljNTE0Njc4OTdjNjggbGVnYWN5LXRydW5rCisyMzgxMyBhNTY0MjdlNWM1ZTE3Mjg0YzIyZjkyN2VmMWNiMzQyZTNlMjE3ZWU0IGxlZ2FjeS10cnVuaworMjM4MTQgZDg4MjU0NzViODAwNzJlOGVhOWI5ODdmZTg2Y2I4MzBiOTdlMDM4MiBsZWdhY3ktdHJ1bmsKKzIzODE1IDZhNWExMGE1YjUyNjVkZDEzZTY2NTA4YmZhMDFmYTFhY2ZlNWVlMTggbGVnYWN5LXRydW5rCisyMzgxNiBjOTYwOGM3OTBmNmY1ZmE4NTEzOTE0YTM0OWU0ZWVhNWM3ZTk3MTM0IGxlZ2FjeS10cnVuaworMjM4MTcgNjVkZDYxNTdmOTk5MzRiYTQxMDcwZjg2YzhmNjNlYWM5MGQyMDM0YyBsZWdhY3ktdHJ1bmsKKzIzODE4IDcyMmJiMWZkMzFlYTA5NmZjZWJmMGNjMDFkMWY4NmU5ZGEzYmI1ZjEgbGVnYWN5LXRydW5rCisyMzgxOSAwMzM2ZWU1YjQ2ZDQyMjJlYzMwN2E0YmRlNmY3ZmI1YzJkOWFlYmQ0IGxlZ2FjeS10cnVuaworMjM4MjAgOTQ5YmE0N2U4ZjMwY2E3ZjNkNjM4MjE5YzUzOWZkMTdjZDdlZTBkZiBsZWdhY3ktdHJ1bmsKKzIzODIxIDg3ZTVmZTA1NmQyOTlmNWVhMmFhYzUyZDhhNzg5MGQ2MTQyZWE3NzEgbGVnYWN5LXRydW5rCisyMzgyMiBhZTUwN2NmNjdmYmZjNDNkMmYxOTE4OTkyMDA4MWZjNDcwZDI3ZDc5IGxlZ2FjeS10cnVuaworMjM4MjMgNGEyNTdhNThiZThiZmI3MzMxYWY3NmE2YjkwMjk0OGQxZjhkNDM1OSBsZWdhY3ktdHJ1bmsKKzIzODI0IGRhODExMjViMmFmOGVhZjEwYmQxMzJmYWIzMGFlNzY1NzJiZDYzNmEgbGVnYWN5LXRydW5rCisyMzgyNSA0NzNhZGJmNTIxNzE4NDhkMjE3MzMxNjE0ODNhMzBlNTU2MDI4NzI0IGxlZ2FjeS10cnVuaworMjM4MjYgZWM3MmI2M2QyNjlhZWI5YTMyOTI4NGIwMGQ3ZTZhYjVlY2M3YTY0YyBsZWdhY3ktdHJ1bmsKKzIzODI3IGQwNjIxYTY2OWM1NjkwZDA2YmRlMjg1MGU2YjM2ZDY5NWQzMzRjNGEgcjIyYjEtYnJhbmNoCisyMzgyOSBlYzA1YWZhZmUxM2I5NWQ3ZjY0YWE1MTJhYWI3NmU3ZTA3Yzc4MGY1IHIyMmIxLWJyYW5jaAorMjM4MzAgMzc3YjA5YWM3MjZlN2VhMmUyNjU4NDI3MWI3YTNkYThkNmZmZmFkMyByZWxlYXNlMjEtbWFpbnQKKzIzODMxIDkwNThlNDljNmM1N2QyMzdiOTBiYWM2NDBlOGM1MDRlODBjYzAyYjQgbGVnYWN5LXRydW5rCisyMzgzMiBjZTJhM2YxNTYxNWY2YmEzYWY3MjczZWMxMzUzMjI0Y2JlYjk5YWJiIHIyMmIxLWJyYW5jaAorMjM4MzMgOGRkZGZmZmI5ZjJiYjdlNGM4ZjdjMWM5MmU1YmYyNzZlMjE1MzYxZiBsZWdhY3ktdHJ1bmsKKzIzODM0IDZmOTkwMmFjZTE4ZDhlYjZmMGI4MDJiZTY5MjZhM2UzNjg4YmZjNjYgbGVnYWN5LXRydW5rCisyMzgzNSAwOGYxNjVmMTM1YThhNjQzNjBlNGQ4MjM1OWY4NDQyNWRiODY1M2RmIHJlbGVhc2UyMS1tYWludAorMjM4MzYgY2I4ZThiNDJjZGZiZWI1ZTE3NDMwNGM0MWY5YTRmOWNiODQ3OGU2MSByMjJiMS1icmFuY2gKKzIzODM2IGU5ZmFkNTVlZjcwNGRiZWJjZGU1ZTE0Y2I4ZGI5NmFmODRjMjJlNTUgcjIyYjEtYnJhbmNoCisyMzgzOCA2MTgwOWM1MTRhZDgwNjllZjI0MzIzNjIwZDYzYzRlZDJjZDRlYzBmIHJlbGVhc2UyMS1tYWludAorMjM4MzkgODA1ZjE4NGI2ZGUwOWE1MjljYTIwMzdjMTYzZGVhNTc2NGZmZjJiZiByZWxlYXNlMjEtbWFpbnQKKzIzODQwIGQwNjQ0NmQ0ZTc4ZGEyMzQwOGJmNTg1NWIyMzA4Y2Y5MzhiYTY1YjIgcmVsZWFzZTIxLW1haW50CisyMzg0MSA3MTExMzVjZTFlNTRmNWU3NjkxMTUwMTJkMWM5ZDNmZGRjMzdkMzE5IHJlbGVhc2UyMS1tYWludAorMjM4NDIgNTQxZjgyNWM3ZDYzN2NlYzlkY2ZlY2QyNGJjNjg1NmE5MTY1NDdlZCBsZWdhY3ktdHJ1bmsKKzIzODQzIGE5YmFiYTE2ZWJmMzlkMWM5OTg3MDAwZDc3YzhmZGZlZTNlYjFhYjYgcmVsZWFzZTIxLW1haW50CisyMzg0NCA1ZjQ5NTBkZDM3YzhhOWI3M2M0MjE2YmE3NzhlNDJhMTMxNWRmYTc1IGxlZ2FjeS10cnVuaworMjM4NDUgNWFmNmM4OWM4Y2I3NWYzMzdkMzA1ZTk3Njg3OTI5MDAzOWIzZjRkOSBsZWdhY3ktdHJ1bmsKKzIzODQ2IDE1MWU0NWU5OGMxMWQzNTYzMDE5NTdhMzAwZTUyM2Y4MWEyM2QzOGMgbGVnYWN5LXRydW5rCisyMzg0NyAyY2IzMmY3Zjc4YzJkMWU0ZmQ2ZWY4MWIyNmNiMjQ3ZWE4M2RjMGEyIGxlZ2FjeS10cnVuaworMjM4NDggY2U4OGViNDY1Y2U3NmMxM2FkMDlkOTExYjBhYjFkZDkxYTdmMzhiYSBsZWdhY3ktdHJ1bmsKKzIzODQ5IDkwNThiY2NlNjllMzE4YzgwZDQ0ZmEwM2FmMjJlYTVjMmIwMjZmNjAgbGVnYWN5LXRydW5rCisyMzg1MCA4NGE1ODZhY2RjMDIzNzMzYWFlM2ZlMWRhOGVlMzEzM2IzN2NhNTNlIGxlZ2FjeS10cnVuaworMjM4NTEgMzc2ZWUxNzRlY2QwNzc0MjExNjliODkwMzNjMDQ3NzRlNGI0NTdiYiBsZWdhY3ktdHJ1bmsKKzIzODUyIGJmMDNiOGUzZWY5M2FmMTE1MDkwOWQ4Yzk1Y2MzMzNjYjQ2MDM3ZTggbGVnYWN5LXRydW5rCisyMzg1MyA4MGJjYzhiN2Q2MTkwZWI3M2UwYTExZjQxZjY0MDRlM2VhYzQ3YTVkIGxlZ2FjeS10cnVuaworMjM4NTQgYjVjYTA2ODdiYTZhODA5NmIxMWJiZjhkNmU2ZTk1ZTBiYWNiZmFhZSBsZWdhY3ktdHJ1bmsKKzIzODU1IDg4N2E5M2Y5ZDVkNWQ5Y2JmYTM4YzRiZWJkMjMyNTA5Y2YzNGZlMGEgbGVnYWN5LXRydW5rCisyMzg1NiA3ZDEyNTc0ODVhZWYyZTdiODBmNzFkN2ZlZmI4YjEwZTAxYmEyOGE0IGxlZ2FjeS10cnVuaworMjM4NTcgOWJkNjAzZDQzNGY1NTJhYjgzM2IwMzMxNTU1NzU1MDgxZjdhYWVjMiBsZWdhY3ktdHJ1bmsKKzIzODU4IDMyNWQ1MTNhNTBiYmE4ZTkwMGJiNmZhNDJlYWIyNjA0Y2FkZTIyZTQgcmVsZWFzZTIxLW1haW50CisyMzg1OSBhYWQ3NjI1MDNkMTFlOGMyNDQzMjY1ZmE5NTQzMmUzMDAzYzczZmJiIGxlZ2FjeS10cnVuaworMjM4NjAgZDMyOTg0MzVkODViNTg0YjY1MDlmYjA4YmJjYzI3NzNlY2RhZjc2MyBsZWdhY3ktdHJ1bmsKKzIzODYxIDA1MGVkOGEyMWNkZTVkZGYzZWZiNWFkNWYzMzJlOGRlYjYxNGUwMjIgbGVnYWN5LXRydW5rCisyMzg2MiA5MjQ2YjZjN2U3NDIyYmM2ZTkyMzU3M2MwMmEyMzM3NTYxOTY5NjgwIGxlZ2FjeS10cnVuaworMjM4NjMgODJiY2ZhYzg5NjQyNWNjOGFmZmQ1YzczNmQxNmU4MTJlYzI1Yzg2NyBsZWdhY3ktdHJ1bmsKKzIzODY0IDI1ZDc2NGQ4ODE0OTFjNzNkMTAxOThlNDgyODRlMWVlMjBhNGY1NWMgbGVnYWN5LXRydW5rCisyMzg2NSAwZDVlNmZjMDQ4MWQ2MTRhY2ZjOTAyNGVkMzdkYmMxNWMwMzBhNTA1IGxlZ2FjeS10cnVuaworMjM4NjYgYzRkOWQ4Njc0NTA2MmVhMWUzMjRiMTk0N2IxNzc5YTgxYTRhOTkwZiBsZWdhY3ktdHJ1bmsKKzIzODY3IGNhNWYyZmY4Mzk3OTJhYzgyZTk1Yjk5YTNlOGU1MWI4ZDAyM2UyMmEgbGVnYWN5LXRydW5rCisyMzg2OCBiNDdlMTVmYTQzZTg1MWMzNjA3MmI4ZjY4ODhmZjA1MTdjYjJlZDYxIGxlZ2FjeS10cnVuaworMjM4NjkgZWI2Yjk1M2VjZjdjYTdlZjM1M2M4MjI5NTMxYzJhN2I5MDE4ODI2ZCBsZWdhY3ktdHJ1bmsKKzIzODcwIGZmNTdhMWEzNzBiMzUwMWYyNTIyNmUyYWQyNmI2YzcyZGM0Y2E0MjAgbGVnYWN5LXRydW5rCisyMzg3MSBlZWJkZGQzYjk0YTUzMGNhOTE1MDNhNDVhOGU2YjI1ZjAyZWRmMDA5IGxlZ2FjeS10cnVuaworMjM4NzIgNWMxZGZkOTI4NzdkNDU3ZDc1MTFhNWNmN2Y0OGE5MjYxZTcxNGRiMyBsZWdhY3ktdHJ1bmsKKzIzODczIDkwMDljMjU2OTRkMWZjMWJiY2U1NWEwZGEwZDYwYTc5MTBiYjg3NGEgbGVnYWN5LXRydW5rCisyMzg3NCA0Yjc5ZDdkOTFiNGY5YTJhM2U5M2VlMjkzOGQ5NTRlZGNiN2VhNjhmIGxlZ2FjeS10cnVuaworMjM4NzUgNzk0NTYzOWRmMjY1MDBjYWNkZGQwNDE2OGFhOGVjNDRiN2MyMWI3NSBsZWdhY3ktdHJ1bmsKKzIzODc2IDczNzAyZDdmMTNiMWIxNTlhMzhlZWU5ZTcwZmVlYjk3ZmZkOTYxYTcgbGVnYWN5LXRydW5rCisyMzg3NyAyZDhkYmViZjgxZTA2YTE3Y2VmNGJjOGZkZmY0M2YzNmQ4NTcxMWNhIGxlZ2FjeS10cnVuaworMjM4NzggN2YzZDBjYzIxODg5OTZmZjAzMWRiN2EzYmY3MmE5OTg5OTlhZjdjZCBsZWdhY3ktdHJ1bmsKKzIzODc5IDY4OWQwYmJjOTFiMTM5MjU5MjczZjRhY2FiYmFjMTAxMzY3OWQ2YWUgcmVsZWFzZTIxLW1haW50CisyMzg4MCA4MjhjYjBjMmM0ODA1ZGUzMTRkYjMyMDQ0NTQzZDUzOWI1OGQyNGIzIGxlZ2FjeS10cnVuaworMjM4ODEgN2RjYzhhMjgxMzNhMjJiMDk0M2U4NTFiNThiYWI3Zjk3YWVlNDJjYyBsZWdhY3ktdHJ1bmsKKzIzODgyIDcxNmE0MDZlOWI0ZmIzZDVhNzQ3MDk1ZjBkZTRlYmQ4ZThmYzlkNWMgbGVnYWN5LXRydW5rCisyMzg4MyBiZWE5NDA0Y2U2MmNkMjQ4M2FjYmQ3ZjM4MTVlYjFiZTAxMmUzZGEwIGxlZ2FjeS10cnVuaworMjM4ODQgYmY0YjM3NTE4YzE0NzcyZWEyM2VhYWNiZjMwMDI3MzMzNDk3MWE2MiBsZWdhY3ktdHJ1bmsKKzIzODg1IDQwM2RkNTljYTdkNWRmMDEyMDM4ZGVjN2IzNDk1MDhlY2FkYWFkNDEgbGVnYWN5LXRydW5rCisyMzg4NiAzMDJhMWMwMjVkYzc5MmVhODgyYjk0MDcwMzRmODQ2ODM0NGFmODdhIGxlZ2FjeS10cnVuaworMjM4ODcgYTNkNmIzMWU4YmI5ZmRjZGVjNDBkODI0NTAwZWRiNTkwYTU0YmM2ZSBsZWdhY3ktdHJ1bmsKKzIzODg4IGI5NzQ1MjI5YmQxMzJjNzI0OWE5YWVkZDIyOTk3MGZkNjNhY2RhM2EgbGVnYWN5LXRydW5rCisyMzg4OSA1N2I1MTk2NmE0ZjFmMDZmMzA3MmU2OTFkOThjNzhjNzA0MjY1MTk1IGxlZ2FjeS10cnVuaworMjM4OTAgMGIxYzEzOTRiZWM2MTE5M2EwMmRhOWIwNTY3Zjg0YTVmMzM2MmFjOCBsZWdhY3ktdHJ1bmsKKzIzODkxIGU0ZjUxMzgyOTJlNjU5YmUyNjVmZDcwMGI0YTA5NmEyODVkZGU5ZjkgbGVnYWN5LXRydW5rCisyMzg5MiBiNmY4MTk3ZjRkZjc4NGFhYWJhNjhlMjhmZWEzYjQwNGQ2OWNjMGIzIGxlZ2FjeS10cnVuaworMjM4OTMgYWE1NjQ3NTY5ZWUyYWIzNDE1ZmIyZDA4MzZkYTMzMWEzMDM2ZTlkYiBsZWdhY3ktdHJ1bmsKKzIzODk0IDRmYjc3MjdlNGY0NzViZWFjMDg0MGVmNWE0MWRhNmRhNWUzNzJlMDYgbGVnYWN5LXRydW5rCisyMzg5NSA3YzM4MWRkMDc3OWNhNzZjOWZiMDYxNTY1MmU4Nzk2OWI1NjQyY2RhIGxlZ2FjeS10cnVuaworMjM4OTYgMmMxYTQ1ODRhNzA0MzM1ZTA1NjllOTkwNTA2ODY0NGNlMDlmZTFlNyBsZWdhY3ktdHJ1bmsKKzIzODk3IDNkMjk5YjE1NjUxMTE4Y2M5OGZlZjI5MzY4NWIzYzk2MjU5Yjg1MmMgbGVnYWN5LXRydW5rCisyMzg5OCA5N2IxOGMwOWQyMmEyYTM0NjQxN2ExYzEwN2YyNWQ4NTdkZTc3NWZlIGxlZ2FjeS10cnVuaworMjM4OTkgMTU5ODU4OGVmMWFkYjdlNGY4ZDk0MTZjZDYyNTFlOWE2ZTVmNzJhNyBsZWdhY3ktdHJ1bmsKKzIzOTAwIGFjYzdlM2I0ZDA0MmZlZTVhNzc0MjMzOTgxNGNlODdiYTJjOWU1NmYgbGVnYWN5LXRydW5rCisyMzkwMSBlNDk2Yjg1MjI5Yzc5YmQwMmE5Yzc2YzkyMzc4ODc3Y2ExYmM2OGM3IGxlZ2FjeS10cnVuaworMjM5MDIgZDViMzFlZjIzY2ViZTMxZjM2YjcxMGVlNDUwM2Y0ZTI3YTc2NTVlMiBsZWdhY3ktdHJ1bmsKKzIzOTAzIDZjODRkNTVhYmI1OGExMzU3YTcwYzg4YWVjYzM5YWYwNzU3NjU1ZDAgbGVnYWN5LXRydW5rCisyMzkwNCBmZWQ4YTE4ODk0ZjVmOWJiZDRjODVmNTBlMzA1MTU3YmQ0MWVkYzFiIGxlZ2FjeS10cnVuaworMjM5MDUgODk5YmViYzg5MDQ3ZTUwODBiMzIwOWI0MmQyMDg5NmQ1ZjUxMzZlMCBsZWdhY3ktdHJ1bmsKKzIzOTA2IDA0ZjI4MDFkOTk3NzBmNTkzNDdjYTVlZTVlMWQ5ZmNlNzFhOTM5YzggbGVnYWN5LXRydW5rCisyMzkwNyAzZjgwYzkxYjVjM2NmZGI1NGU4YTBmN2JlNmVhZmYxZDdkNGI4ZGY0IGxlZ2FjeS10cnVuaworMjM5MDggOGI5ZTJmYmNhZTFmZmNmYmNjMjRkNzU5NjAxYmI1ZjhhYWI5MDQwMiBsZWdhY3ktdHJ1bmsKKzIzOTA5IDZmMmNiMTgwNjhkZGY5MDY1MmU3NDk5NzY3ODNjYzkyMjJmZDQxMzQgbGVnYWN5LXRydW5rCisyMzkxMCBhYTQ2YzY2MTg4ZDM2Yzk1NTAyM2QxMmJkMGRjYjk1MjVmYzcxYzJiIGxlZ2FjeS10cnVuaworMjM5MTEgNzFhOWIwNTNhYjQyYjJjZDJiYjUwNzk4NGNkMDliNDViM2E3ZGJkZSBsZWdhY3ktdHJ1bmsKKzIzOTEyIGM4MGRhZmNlMWI3NGE2YWRmOTQzMjMyN2FjZTA5ZjUwYjUzYmNjNmEgbGVnYWN5LXRydW5rCisyMzkxMyBhYjgzM2Q5YTA5Yjk4MGFmMGRmYjk3NzE3MDA2ODU5ZjFiMjU5ZWY5IGxlZ2FjeS10cnVuaworMjM5MTQgZWY3OGVjNjAyYTQwNjM4MDdkMDljZjRmZTA5MWJkNjRhZTM2ZTcxNiBsZWdhY3ktdHJ1bmsKKzIzOTE1IDdjNDFjNGZiZjljNzNjMmE3NWY0MzFlMzc4NTU3NTJmNzg2YmE5ZmYgbGVnYWN5LXRydW5rCisyMzkxNiBiMDc4OTkxY2I1NmEzZDAzZjA0YzVkMjQwYTI1ZTQ3MWFiMDM1NzhmIGxlZ2FjeS10cnVuaworMjM5MTcgY2FiYjU2OGE1NThiMWU2MzRjZTVlM2Y1MDExMmI1OTc0ODI4NmU1MSBsZWdhY3ktdHJ1bmsKKzIzOTE4IGRkNzhiMWE3MWYzZWFmNzMxMjE1ZDI0ODNlZTVhYTQ0ZTcwNGU5ZDkgbGVnYWN5LXRydW5rCisyMzkxOSBmZWM5NTBkOGMyNWQ3YjRmYWIyYzkzMTQ4YjI0NjQ4Y2VhMzMxZTk1IGxlZ2FjeS10cnVuaworMjM5MjAgNTI5NTdhMmRmYWZlNjkwNDU5ODk2MzI0MjAzYjRiZmJlZDFjMzBjNSBsZWdhY3ktdHJ1bmsKKzIzOTIxIGViMDA0Y2MwMDhkMjc3NmM4YTgxMDE3MGExMzdiNTM1NGViMTFmMzEgcmVsZWFzZTIxLW1haW50CisyMzkyMiA4ZGViM2I1ZmQ3YzE3ODlmYjZkMjljOTgzYTQ4Zjg0NTI5ZWM4MzUyIGxlZ2FjeS10cnVuaworMjM5MjMgMmQzY2VlOWYxNjMzMjBhYzM0NjA3ODVkMDMxZWRhMzgxNjU0ZWJhMyBsZWdhY3ktdHJ1bmsKKzIzOTI0IDc1N2JjZmEyMDFkYzE5OGE0NjI3ODIyN2IzOWQ0MzIwMjhkYTcwMDggbGVnYWN5LXRydW5rCisyMzkyNSBlZGQ5ZDBiM2M0N2VmYWU3ZmIyMDEwZTEzMzI5MGI1NmVhYWYwYjdmIGxlZ2FjeS10cnVuaworMjM5MjYgNzM0NDY4N2JmMmMwYWI4ZmRkOWQ1MGQ3MTcxOThmN2YxNzRkN2VjYyBsZWdhY3ktdHJ1bmsKKzIzOTI3IGQwZWIyMDM2ZWNjYWYyNjRlOTVmYTVhYTg3YWY0ZmQ5MmQ0ZjdkNGUgbGVnYWN5LXRydW5rCisyMzkyOCAzOTM1NTZhZGIyOTUwYTM3NzJiNDFhNjVmY2Q4NmVhYmYxYmRjOWE4IGxlZ2FjeS10cnVuaworMjM5MjkgZGNhYTJjODk0MzBlNzhmZWMxMWE3ZmFmYjgzYjk3YTdhOTIwY2VhMiBsZWdhY3ktdHJ1bmsKKzIzOTMwIGNlMTNhYTMxZTE4OWEwOTgxZGM0NWMyZjI1NjZjMDdiMTQ1YWQyMWUgbGVnYWN5LXRydW5rCisyMzkzMSBjMDVkNDg5NTIzNGMxMGViOWRmMWUzMWE5MjgwMTJjNjlkZTc4YTQ2IGxlZ2FjeS10cnVuaworMjM5MzIgZjcwMDkxNjdkZDY3YzM4ZGQwNGFkMjU2MzA5NzczNmQ4MDhhODExOSBsZWdhY3ktdHJ1bmsKKzIzOTMzIGM0NzhhNTA5MWYzZmZmYmQ1YTk4OTIzY2Y5OGJhYWMyMThiZDczNzYgbGVnYWN5LXRydW5rCisyMzkzNCA1Y2Q4Yzg3YTg4YWVkODFiNDc0YTBlYWYyNzAxODNiNTEzNjRmMDNmIGxlZ2FjeS10cnVuaworMjM5MzUgMDM5N2E3NWE1YmZkZDVmY2ZkMmIxNGJkYmE1YThhNGZmNWNkNTlkZSBsZWdhY3ktdHJ1bmsKKzIzOTM2IDNjZTAzZTJmMDFlZjdmMDE2ZjI0MThmMmUyNzc0OTFkNzhlMzhkMTUgbGVnYWN5LXRydW5rCisyMzkzNyA4OGEyNDJiZmIyM2FiMGExNWQ5NGFiODAwZDE3NjIxZTlmY2UwMDE2IGxlZ2FjeS10cnVuaworMjM5MzggOThlNWQ5MDFiZmRmZDkyMDg4MzQ0MzNmZWY5ZDI4MDVhODdkODEwOSBsZWdhY3ktdHJ1bmsKKzIzOTM5IDNlOWI4NWRlNDQ3YjlhNjA3YzZjZTI5NzRhZmNkZDk5YjA5MWY5ODQgbGVnYWN5LXRydW5rCisyMzk0MCA1MzVkYzM2NTBiZWNmNTNkZWFlYzhjZjAwZmNjZDQ2ZmU0YzFlYTM3IGxlZ2FjeS10cnVuaworMjM5NDEgM2NmZDU3OGY2NDhiMjQ4ZWRmMjA3OGJkYzFkMjRlYjBiMjkwNGQ2NyByZWxlYXNlMjEtbWFpbnQKKzIzOTQyIDNmYjQwM2VhZWRlMWU2MjdhZTJmM2M2N2ExOTcwNmRkNzEwYWI0OTkgbGVnYWN5LXRydW5rCisyMzk0MyBkOTUxYzJkZTA5NWNhZWM0OTZlYjg4ZGY1MWQyNTBkOTJlNGE1OTM5IGxlZ2FjeS10cnVuaworMjM5NDQgYWY5ZjI5MDI2NGFmZGQ3OTNiNDdjMzcwYTY5ZTM5NzU3Y2QyN2I4ZiBsZWdhY3ktdHJ1bmsKKzIzOTQ1IGFiYTdhNDg5NWU0ZGFlNDkxY2ViMDQxODE2MmM5MmNmYjEyOGRiYmEgbGVnYWN5LXRydW5rCisyMzk0NiA3NDE4ZTBkNWZjMDEwZmExODc5ZDA2NjA3OTU2OGFhZjU4NmIxNmYzIGxlZ2FjeS10cnVuaworMjM5NDcgYWU5NGI1ZjdkZDMwZjU1NDEwMTljYjFjODU4YjQ5MjViZTNlMjM0NyBsZWdhY3ktdHJ1bmsKKzIzOTQ4IGY2MTQ4MjVkMzI2YWMyNzhiM2I3OTZkMjExNGMwMDMzMmEzZjVhMzAgbGVnYWN5LXRydW5rCisyMzk0OSA2MWU4ZjAxZGU4MjEyNTg1NjNlNDQ3ZDljYmIxMmU3YmFiY2E0MjZmIGxlZ2FjeS10cnVuaworMjM5NTAgZTg5YzI1Y2E2YjI5ZjYwNTA2NzZlMWY2YjdjZWNhNTNiNTgzOWUwYyBsZWdhY3ktdHJ1bmsKKzIzOTUxIGUzYzI0ZmMyMGE4ZGJjMDZjNDQ5NDI4NDhkMGNlZTY5MWQ1NjRiNzcgbGVnYWN5LXRydW5rCisyMzk1MiBhMGYxYzJkMmFjOWU0YTIzMDMzMjM0OWM0N2Q3MjU1MGM1M2M1YzRkIGxlZ2FjeS10cnVuaworMjM5NTMgZjMxYjEyYTQyOTUxY2Q3NTdmMjJiMjAxMDI1ZjVjYzUzYmFiMzczZSBsZWdhY3ktdHJ1bmsKKzIzOTU0IDUwNWRkMzRlMGVlYmY5ZjgyODkzNmI1OTUyYWY3ZmY4NWY4OWFmMmYgbGVnYWN5LXRydW5rCisyMzk1NSA0MzNhZTQ4Mzg3MDM1ZjE5NjczZjFkYzcxZDU3MGQ0NTNjZTRjZDk2IGxlZ2FjeS10cnVuaworMjM5NTYgOTlhZDJhOWQyMGUxYzEyNzhmMGFjZmE4Njk2MjA2MWE5MmJhMTk2YSBsZWdhY3ktdHJ1bmsKKzIzOTU3IDMxMWEyYWJlYThhNDdhYzMyYTM1MzRiMWU1OWYzYmM3OWE3YzU0MDcgbGVnYWN5LXRydW5rCisyMzk1OCAzNjdjZDhlNWRmNDc5NDk0ZTdjZTA3NWJjMWY1YTQ1NDNmMTA3MjRlIGxlZ2FjeS10cnVuaworMjM5NTkgOTllZTcxOTE5N2JhN2VjMGE0MGQzNTcxZjhkZDlkMTlhMDkxNzY0NCBsZWdhY3ktdHJ1bmsKKzIzOTYwIGEwMzMyYWU4NDhlMjZmYjk2YWM2MDM3OWViNjMxZGIzZmJhMmMwYTkgbGVnYWN5LXRydW5rCisyMzk2MSA4NmZiMThmYTM0NmY4YThhNjk3ODc0NGYyNzZiNWQ0OGU1ZmIxNzY2IGxlZ2FjeS10cnVuaworMjM5NjIgYzNlMGJkMjA3NzVjYzQ5ZjQzNDRiNTZjMmE1MmJhNDEzZmNlMmI0MyBsZWdhY3ktdHJ1bmsKKzIzOTYzIDM4MzgwZDVmMjdkNDBiMmNiNDZkYzE1YjgwNGJlNzQ0MzI4NjVhYjIgbGVnYWN5LXRydW5rCisyMzk2NCA2OTAzNDIwZjBhODI1YWNjZWVmNDk4YWM5YzhhYzViOTA3NWUzMDQxIGxlZ2FjeS10cnVuaworMjM5NjUgZDAyMDY4ZDE2M2NmY2VkZWMxMDYyNzllYWQyN2I5ZmIwYTM4ZGIzMCBsZWdhY3ktdHJ1bmsKKzIzOTY2IGFkZjU2NWYwZjhhZTYwODVlZTgwY2JiZTYwYTdmYTBhYzhhODcwYzkgbGVnYWN5LXRydW5rCisyMzk2NyAzOTgxMzVlNDAwYzdmODNiNTJkOTc2YTdiNjRmN2YzZjllMWFiNWIxIGxlZ2FjeS10cnVuaworMjM5NjggNjQ4YmM3NGM0N2FiNzI2MmUzZjgxZGQzYTk0NjEwYWVjZDIyZGU0MiBsZWdhY3ktdHJ1bmsKKzIzOTY5IGIyMjkyMDhhMmE3MjczOGI5OGVmZGQwOTEyNDk2ZGJjMmI2YjU4ZjkgbGVnYWN5LXRydW5rCisyMzk3MCBmYTBiZjZjNzllMDQyYTAyYWYzM2Q4MjhjMDg5YTM0NzA5MjhhMzQ2IGxlZ2FjeS10cnVuaworMjM5NzEgNWRlM2E1OTQ3MjU3YmJiMTQ0NjQ4ZDEzNjNmNGEzYzAyNjBiYWEwZCBsZWdhY3ktdHJ1bmsKKzIzOTcyIDVmNjg1MGQxZjllODUyMzkyMWRkYTFhNDhiOTA5NjQ2NmRjMzc3ZWEgbGVnYWN5LXRydW5rCisyMzk3MyA0YjNlZmM3NTAxMzk2ZmMyMDFkNjM4NjQ1ZDQ4OGRmZWM3ZGJkYjliIGxlZ2FjeS10cnVuaworMjM5NzQgYjNhMDBkMzE2NWJlZTIzMDhlMTI1OTM1MmViNGM5Y2VkYmE3YWIyYiBsZWdhY3ktdHJ1bmsKKzIzOTc1IDI5MjVlMjdhMjgxYzUyMWEzYmYxYWExNDMxYjYzZGM5OWFhMzk4NzEgbGVnYWN5LXRydW5rCisyMzk3NiA3OThmNjE5OTdjMDhkNWQyZDA0MWVkYmZkMTc0YmE1MWU4MWYyMjMwIGxlZ2FjeS10cnVuaworMjM5NzcgNDEzM2FiZWY1YWJiZDFhMGZjOWFkODMyZTQ1MjE1YzE0ZTI1OTJkNiBsZWdhY3ktdHJ1bmsKKzIzOTc5IDE4NGI4YjlhMjY1NGNiZGZjZmNmNTdjNDZiNzM2OTIwNmM3MjI0MTQgbGVnYWN5LXRydW5rCisyMzk4MCBlOTEyYjY4M2VkM2UxNTM2ZjBiNGM5ZjVlNmUxZDNiNTZhMjBmNTQ0IGxlZ2FjeS10cnVuaworMjM5ODEgMzEwNDUwZTc0ZjJmNTdkZGZkYmFiMmFlNjhhOTJiYjM1ZTQ3NzQ2NSBsZWdhY3ktdHJ1bmsKKzIzOTgyIGE0NGNjMGMyMWNmZTMxNTQyNWUzODBlNjQ2YzAxYWQyZDFlMzMzMzcgbGVnYWN5LXRydW5rCisyMzk4MyAyODkwNzY5YjFlNjk2NjI0ZjZmOTNkMGE5ODFkYzQxYmJiYzRkZTM1IGxlZ2FjeS10cnVuaworMjM5ODQgYTZhNGJkMmYwNmQwZjlmZTI4NDcxMDg0NDk3OGY0NTZhM2ZiZjRhYSBsZWdhY3ktdHJ1bmsKKzIzOTg1IDdmNDA4OTUxOTkyNmU1YzVhMTQzMzE3MjQ0Y2I0YWRiZGYzYzE1MjQgbGVnYWN5LXRydW5rCisyMzk4NiAwOTFmOTY1NmQ3OWIzNTkxOGY5MDQyY2FiNjc4ZWFhMjE4MjUxY2E3IGxlZ2FjeS10cnVuaworMjM5ODcgNWU2ZjgxODdiZDQ4OTNmMzk1NDUwYjJmMWMzODQ4NWVmNzgzMDdjNyBsZWdhY3ktdHJ1bmsKKzIzOTg4IGRjZjc2OWMxMmQ4YjQxMmZiZGI3MTU3OTUyMjk0NTQ0YmRlY2ViNTAgbGVnYWN5LXRydW5rCisyMzk4OSA4NDcxNWQ1MmQ5NTRlOWQ1MDc5NDdiNTY1YmQwMDBkMGI5MzRlYmY2IGxlZ2FjeS10cnVuaworMjM5OTAgYzYzODQ1OTFkODQ2Y2U2YTFiM2Q2NmM3MjRhMTczN2UzNTIzNjRkOSBsZWdhY3ktdHJ1bmsKKzIzOTkxIDVlMzQ3ZTRlMDViZjVlY2M4YjBkYTQyM2ZkNDkzNGQ1YTY4ZGNlZTcgbGVnYWN5LXRydW5rCisyMzk5MiBhYWVmYzJmMjFiYWVmMWNlMzllODJkMGIzNDk0ZmNhYWQ2MWYxZmIyIGxlZ2FjeS10cnVuaworMjM5OTMgYWNiODU0Yjg5N2JiNjE1NGY4NDlhMzkwYTY4NDJlYTNkY2I5NzI0MCBsZWdhY3ktdHJ1bmsKKzIzOTk0IDY3NmYxMDZhNTAwMjNkNDEwZjI1YTAwMzYxYjdkNDEyMzhmMTAyZmYgbGVnYWN5LXRydW5rCisyMzk5NSA2YWM0NTI0NGM0MWUwYWU3Y2Q1NzcwYzU4NDQyNTMzZmNkM2MwYmY5IGxlZ2FjeS10cnVuaworMjM5OTYgZjIyNDYzMmQwMjYwM2YxYjY4NDM2ZWY0MjY3Yjk0NjViNDVkY2I4ZiBsZWdhY3ktdHJ1bmsKKzIzOTk3IDcxMzA3NTBhNjIyMjJlNDRmYzRiMWVjMWM0ODRkZTI0NjcxYTk5Y2EgbGVnYWN5LXRydW5rCisyMzk5OCA1ODdiNzQ4NTRmOGMwNTA0OTJiZTNhOWZlZTYwOTExOGIyY2QxYTEyIGxlZ2FjeS10cnVuaworMjM5OTkgYWJkNzFlODk4NDBmNzc4NDFmMDU0OGY2YzJkYWU5YTE4ZjI3MDQ0ZiBsZWdhY3ktdHJ1bmsKKzI0MDAwIGNkODM1Y2FhNTA2YzA5MmIxMDRhMWYyNjZmZjU4NjE2NGVhYjdlMzIgbGVnYWN5LXRydW5rCisyNDAwMSBjZDYwMDAzOWExMjNlMGY3YjU1NzNhZWEwYjJlZGFmNWVjOWEzMGU2IGxlZ2FjeS10cnVuaworMjQwMDIgNzNjYWJlNjY0YzExZWI2YmE3YmIyYjQyMTdmNGM3MGM2ZDUxNWY5YiBsZWdhY3ktdHJ1bmsKKzI0MDAzIDgzNTljMTE4OWY3MzAyNTA0OWRmOTFlMGRkMGM2MmVhYjU1ZDYyY2MgbGVnYWN5LXRydW5rCisyNDAwNCBiM2IyZmE3NmEzOTI5ZWNlZjA2YzFiNzkzODAxZTNhN2UyODY2OThhIGxlZ2FjeS10cnVuaworMjQwMDUgNjM1ZmExNGVkYTUwOWE4MWViMzU0MmM5NDBlMDQ5ZjUxOTA1YzQzMyBsZWdhY3ktdHJ1bmsKKzI0MDA2IGIwNjI4MDQzZTUzN2RhZDc4NGE1MDFiZjJmNjI2OTBkOWY0ZGQ4N2YgbGVnYWN5LXRydW5rCisyNDAwNyBmYWEyNzI2ZGVhMzcxNTc4MzdjOGI5Mjk2MmIyMDZjYzIxMzYwMThmIGxlZ2FjeS10cnVuaworMjQwMDggYTc4ODRlN2VlY2M5YjI1ODkzOTkxNzFjOTE1ODdjYjJlYjExY2RjNSBsZWdhY3ktdHJ1bmsKKzI0MDA5IDAwYTU4MWJkZWRlYmFmMDI0MmY1MWM5ZGFiNzg4MDFlOTVmZjU0NDggbGVnYWN5LXRydW5rCisyNDAxMCBjN2FhYzc4ZTIzYjQ5YzMxYmUxOTQ3M2RkYjlkY2E0MWY4ODExM2MzIGxlZ2FjeS10cnVuaworMjQwMTEgM2I4Nzc0MGQxYmJjODVhNjI4ODQ0NTZkZDllMDQ2ODI3MmJiYjliNiBsZWdhY3ktdHJ1bmsKKzI0MDEyIGFkNDVkMjJiMTk1ZDEzYTgyOWY1MmE0MTQ3MjkzMzQxZGFjMzc2ZWEgbGVnYWN5LXRydW5rCisyNDAxMyAzZTQ2MjU4MThmNWZmNTk2NGNhOGU5YzBhZjhlOTIyZGZlZmMxMDZjIGxlZ2FjeS10cnVuaworMjQwMTQgZDVmNmI0ZDU4MzgwZWFhNWQ2NGI3ZWQ5MmJhNzkwMTVjMjk5ZmEyZiBsZWdhY3ktdHJ1bmsKKzI0MDE1IDdkYTQxNzk5OTUxMTEzMDhmNjU5N2ZmMTNiYjc3N2U2YTZlZjk0ZjAgbGVnYWN5LXRydW5rCisyNDAxNiAyM2QyMzBlZjQxNWJhNTZhMzJiMjNlMmZmNjcyMzU4OGQwY2NkNGUwIGxlZ2FjeS10cnVuaworMjQwMTcgODM2MGQ2NDMyNzA3YzViODc0NDNlMDNkMTMyNTczY2U2Mzk4Mzg3ZCBsZWdhY3ktdHJ1bmsKKzI0MDE4IDQ2MTdkM2Q3NzBjNTk5MGZiYjMwZDA2OGNjZTEzZTgxZTUzMDgzZWYgbGVnYWN5LXRydW5rCisyNDAyMCA5ZjYyOTU1ZGU0YzNhMWU3MmIwZDIxMjQyZDA4NDljZDAxMjhkMDFmIGxlZ2FjeS10cnVuaworMjQwMjEgMDhkZmQzYzIyZjQxZGNlM2ExNDhiNmMwYTJiODIyN2Y1Y2I1NGFmMCBsZWdhY3ktdHJ1bmsKKzI0MDIyIDc3NTkyNmJjZjA2OTI1ZjcxZWI3ODE4NjhlOGZlNTBmMGJjMTZkYmEgbGVnYWN5LXRydW5rCisyNDAyMyBjOGJhMmRiMWMzYzI0YmNhZjAxZDc1NDk4NzNmN2JiZTY2YWFlMThkIGxlZ2FjeS10cnVuaworMjQwMjQgODUxMDlhNjA5OWI1ZTFmMjdiNDMzNzY2YjNkMDJiNjI5YzBjMDliZCBsZWdhY3ktdHJ1bmsKKzI0MDI1IGYyYWY0MmNmODI3YWI3ZTM5NjExZGI2ZDc2NzQzMzBhZDI3ZDU3NTYgbGVnYWN5LXRydW5rCisyNDAyNiBlY2Q2NDkzMTQ4MmM5ZjJlNzU1MTZjOTc2ZWI3MTU4ZmU0NjM4MWIwIGxlZ2FjeS10cnVuaworMjQwMjcgMjcyMzM2NjQ4ZDFmZjFlMmNhMWUxZGY3NTdlMThjYjQxNGQ3MmE1YSBsZWdhY3ktdHJ1bmsKKzI0MDI4IDE3ZjdjOWMxZDY2YTUxNGFiZDg4MjMyZDc3MTljNGExNzU0OGZmYWYgbGVnYWN5LXRydW5rCisyNDAyOSA4MjhiZjMxNzg4MGEyMDVlOWU3NDMyMDU3YWFjYzM3ZmRiZjRlZWNjIGxlZ2FjeS10cnVuaworMjQwMzAgMDUwZmM1MmFiM2Q0MTUyNzIwYTE2ZGE4YzY0OWYyMWRjMGZkMDZlNCBsZWdhY3ktdHJ1bmsKKzI0MDMxIGE0YmYzYzVjYzQ1YTJiYTIzYzQ3YTg4OTk5NDlhZWUwYTBiMTkxNDIgbGVnYWN5LXRydW5rCisyNDAzMiA1YjIzNmYzNzdhMjU4ODcxZmRlNjA2ZjI3MDM1N2Y4ZDM1ZTExNmUyIGxlZ2FjeS10cnVuaworMjQwMzMgNmFlYWIzODAyOTJlZDQ2OTljODJmZjlhYjBmYzFlNjYxNTliNDRiMCBsZWdhY3ktdHJ1bmsKKzI0MDM0IDA4MzQxMzYyMjU5NTk3YmE0ZmYzYzEyOWZmY2YxZjg5YjViMzQ4ZjAgbGVnYWN5LXRydW5rCisyNDAzNSA2YjE0ZDI5ZTUzMDg5NzAyZjBiMTM1OGE3OThmODViYWZhOTVhOGU2IGxlZ2FjeS10cnVuaworMjQwMzYgNzgxYWUxNzZiYWMyYzI1MjAwOGY0ZTUxY2UyZTdhOTMyOThhNzk0NyBsZWdhY3ktdHJ1bmsKKzI0MDM3IDM3YjhkOTJlMTJmNTE4ZGM3MGZhMThiZGNkYzdlNjRjYWY0YjNhYWYgbGVnYWN5LXRydW5rCisyNDAzOCAzYTA3YmQyYjAzODZlMWYzYjBmZmU4NDRmYjgxYzFlOTgzYTJmNTQ0IGxlZ2FjeS10cnVuaworMjQwMzkgYTZhZjAwOTM0N2UxMzEyODg2OWM1ZWY1ZDQ4NzA5MjdjOGViOTkwMiBsZWdhY3ktdHJ1bmsKKzI0MDQwIGIzZjQ4YzVkNmUxNjc0ODI2YjNhMzU5OTVjZmMzNjQxNTU2MjZlODMgbGVnYWN5LXRydW5rCisyNDA0MSA3YjA1NDZlZTQ3ODllZGQ2NTcwNWEwYmY5YTk0MmMwNjAwOGRjMTVkIGxlZ2FjeS10cnVuaworMjQwNDIgNTIzZWM3MDIxOGU0OTBhNmU4YjgyZTdjYTBlMjJiY2QyYjdlMjc3NiBsZWdhY3ktdHJ1bmsKKzI0MDQzIGViYTYzZGQwYzJmNWE5MmRmZTUwNDZjODk5NTQ1YzY4MmJlMDA3M2QgbGVnYWN5LXRydW5rCisyNDA0NCAxMjQ0ZWUxOGJhZWMzM2Y0NmY2YTBkZWRlMDk0ZWYyOGE5ZDhjZDc0IGxlZ2FjeS10cnVuaworMjQwNDUgNzQ0MTJlNTliZmY4MjYxMDAwYjVmNjg0NTU0YWY5M2Y2YTg5YzhjMiBsZWdhY3ktdHJ1bmsKKzI0MDQ2IDc2YTg1NzUyZDQ1MjRjMjQ0ODBiMWU3MzU3YjAzMmVhOTBlYzA3MjEgbGVnYWN5LXRydW5rCisyNDA0NyAxMDQzZTEwYmU3ODAwOTEyMTA0MTEyMTk4MzAxYTc0N2UzYzYyMGI3IGxlZ2FjeS10cnVuaworMjQwNDggNzQ0YTE5MjIwYTNjYjc2ZmUzMzBkZjIyYWUwNWFmNzE1MTg5MTY5ZSBsZWdhY3ktdHJ1bmsKKzI0MDQ5IGE2YmJhMzFiM2NkNzc1ODE0MjFkZTBjMTQxMzE1MjRiYzhmNGEyZDIgbGVnYWN5LXRydW5rCisyNDA1MCA1N2M2MWM2MjI0YTJmNGI2MGM3Mjc4ZTZhM2FhMzVhNTA3YTE0ODQ1IGxlZ2FjeS10cnVuaworMjQwNTIgNGJiNjc1M2U3ZDUzZWU1N2Q2ZDU2OTUzNWUxZGZhMWRiMjJhZTUwNSBsZWdhY3ktdHJ1bmsKKzI0MDUzIDYxMTIzYjg2MGI0NTU2YTRhYTdkNmNlZDM5Mjk2YTI4MmYzZWUxYTEgbGVnYWN5LXRydW5rCisyNDA1NSBhYjJlMzE1ODQ5YTdiNmM3YWEzMTViZmM4NTFmY2YyNTUzOTFhMDI3IGxlZ2FjeS10cnVuaworMjQwNTYgNjEyMjZkZGFkYzk3NTcyMzY4NGM1M2NmZDM3MTQ1NmJmMWZmYzgxMCBsZWdhY3ktdHJ1bmsKKzI0MDU3IGIxZDkwMjllMDlkMTRkNTE3NzU4YmQwMDdhY2IwMjY3ZDVkNzI4NWIgbGVnYWN5LXRydW5rCisyNDA1OCBhMmIxMWQwMGI2OTc0NjZjMjc2YjkwM2U4OWQ5OWU4MDIzYTUzMGE4IGxlZ2FjeS10cnVuaworMjQwNTkgYTkwMDJmYjBhN2Q3OWQzYjRjZGNjMTMxNGExM2E2NmUzOWMxMGIzYyBsZWdhY3ktdHJ1bmsKKzI0MDYwIDRkZjY1MjdiNzg4MjIwNzg4ODhmNzBiNzU0MTI1ODdkZDI1ODY0Y2QgbGVnYWN5LXRydW5rCisyNDA2MSBmZWI4MDUwOWZiMjE1MDYxODM2ZGE4Y2UyYzZlYWQ1MDA4NTAyNmY1IGxlZ2FjeS10cnVuaworMjQwNjIgMjVmZWQxZDA5NjA1MzVlMzEwODU1NWVhN2Q5NzkxMzFjYzFiYzdkYiBsZWdhY3ktdHJ1bmsKKzI0MDYzIDQwZGU4NGJjNjJhZDAyMTQ4ZjAyYWMyNjE3YzE4MjUyYzM5ZDBiZjUgbGVnYWN5LXRydW5rCisyNDA2NCA5NjFiMjRmOGUxZDgyOThmN2YzNWQ4NWE5NmU2NjdhNDc3NTM4Y2QyIGxlZ2FjeS10cnVuaworMjQwNjUgYzkxZjE3YTRkYzdiZjIyZTk3YWIwMmI4YmM2ZGUxNjU1MTI2NmU1ZSBsZWdhY3ktdHJ1bmsKKzI0MDY2IDJmN2I2OTI2ZTM4ZGQxMjU1NjQ4ZTk2OWI4NjdiMDkyMWFiMjdhZGUgbGVnYWN5LXRydW5rCisyNDA2NyBlMGFmMjgyZjVkZmFjNGFiOWMzYzViZjZlYWI1ZDZkNWNjMjdjNzY3IGxlZ2FjeS10cnVuaworMjQwNjkgNzlmY2JjMzFhMDNlYzlkZTQzOTVlYTQwM2E0NGI3YjYxOTlkN2E1OCBsZWdhY3ktdHJ1bmsKKzI0MDcwIDgzYTNlMjFhN2NjM2Y0N2FiM2IzZGM2Y2IxY2FmNTdmNjJjOWZjYmIgbGVnYWN5LXRydW5rCisyNDA3MSA3M2FiZTBhZjdlMDcwZWFjMTc4NzY4NzEyYmQ0MWE0OGY5OWRhYTc3IGxlZ2FjeS10cnVuaworMjQwNzIgOWMyM2FiYWI5NjJkYTUwYWYwNjIxN2Q1MWUzY2IzOGY5ZjRmOTgyYiBsZWdhY3ktdHJ1bmsKKzI0MDczIGZhOTdjOTk3MmQxYjM4ZWI3OTFjNDM1MmMwZmVlYWQ2MDBmMjNhZGYgbGVnYWN5LXRydW5rCisyNDA3NCA2MTBhNjQ0ZmQ0YzNhYmY0MmFlMmQzZmM1MzBjOTM3MTU5NDQzMjI0IHJlbGVhc2UyMS1tYWludAorMjQwNzUgZWY4YmQ4YmU5OGJlYjBiNWEyNDEzZGE2MDVkZGRjMTk3MTkwMzQ1NiByZWxlYXNlMjEtbWFpbnQKKzI0MDc2IGVlNzBmYWM5NTM1YjQ1MDliNTdiN2YzMjljZjA0M2JhZWM4MzQyNmQgcmVsZWFzZTIxLW1haW50CisyNDA3NyA3NTZiOWVkZjI1NGZjMjEzZDRmMjMxYTA5ZWNmOGE5MzljZmRmN2RhIHJlbGVhc2UyMS1tYWludAorMjQwNzggNTFlYWNhZGM4MTVhMjk2MDVmZThkODM0MzJlOTNiMDIzM2U5NTgwNSByZWxlYXNlMjEtbWFpbnQKKzI0MDc5IDEwNDIyM2IzMjI2YTQwYWIzYjcxZDRmNGViMTQwODU3YTRiYjAyOGYgcmVsZWFzZTIxLW1haW50CisyNDA4MCAwNjI5NjY2ZTY1YzUzZjhkNGNiNDQ4MzgxZDE5OTBlOTgzMWZkNTQyIHJlbGVhc2UyMS1tYWludAorMjQwODEgMDc2ZTVlNDllMjdkMzk0NjI3YTZlMWFmMGY0MDEzZDA2YTdmNzA0YyByZWxlYXNlMjEtbWFpbnQKKzI0MDgyIDQyZjIyZWE2YTBmMTM2MTM3M2VlYmFkNjUzOTFjYTUwNmZhNjFiOWEgbGVnYWN5LXRydW5rCisyNDA4MyAwMjZiZjBhYjY4YTUxNWI0ZDc5YTM5Zjc3OTNmNDAwZmM3Y2ZiM2JmIHJlbGVhc2UyMS1tYWludAorMjQwODQgNDY0ZDIxM2RhODg4YzdmMmYxMTYyYzIxZWU5NjYyNzUyNzllMzg5YiByZWxlYXNlMjEtbWFpbnQKKzI0MDg1IDgyMWUxNDJlMTlmYTRjZDgxYjBhM2VmNTRkM2Y0YTVhZTZhNGYwOTkgcmVsZWFzZTIxLW1haW50CisyNDA4NiA2ZDM4ZmJhMDVmMzU3NGU4MjcwMWM3NGNmYWY2NDhhNWZlZGIyMWMzIGxlZ2FjeS10cnVuaworMjQwODcgOGQ0YjY2NDJhNjA0YTAwMWI3YzJjNTlmZGU3NDY3ZjRjM2RkZTc1OCByZWxlYXNlMjEtbWFpbnQKKzI0MDg4IDE5NjUxMTZkMWFlY2E5NDRiMWViNWI1ZjEwMjYxNGM1NmRkODc2NDAgcmVsZWFzZTIxLW1haW50CisyNDA4OSBmNGVmZjMyNDdjNjZhYzlmODA5ODQwZjhlMjc4ZDY1NzE3ZDJhZDJiIHJlbGVhc2UyMS1tYWludAorMjQwOTAgZWYxZTljOGFhM2RkZmRiNjgwNDkxNjI2YjUxMzk5NzNmYTM5ZjdjZSByZWxlYXNlMjEtbWFpbnQKKzI0MDkxIDU3YWI2NWMyZjE3MDc5MWQ2ZTBhYzQxYmQ5Zjg1N2U2ZTAwOTE4NmIgbGVnYWN5LXRydW5rCisyNDA5MiAzZTA5OGE5NjM1NjFkNzcwMzc5MjA4NjlkZGYxNmU0ZDQzNmQxNTYzIHJlbGVhc2UyMS1tYWludAorMjQwOTMgM2E3NDhjYWEwM2I5MWExNTBjNWFmYjA4MjFhY2MxNzQ4ZTMyZjI4OSByZWxlYXNlMjEtbWFpbnQKKzI0MDk0IDlhZGVkNjIzNWQ4OTBlOTBhMjM3MzhkZmQ5ZDg1YjAyOTU4NzlhZGQgbGVnYWN5LXRydW5rCisyNDA5NSAyNjFhNzBjMGFhNzkyYzNiNjg2ZTc0NmJlMjA5ZDY3NDY1MTIzZjhjIGxlZ2FjeS10cnVuaworMjQwOTYgNTM0NmI2OTA2ZDFhZjg1ZTkxYTNmNzIwM2RiYzM4OWI5Y2U5N2E4OCBsZWdhY3ktdHJ1bmsKKzI0MDk3IGNhNDE4YTVmYTQ3MWNiOGQyNTk3M2VhYzliYjA4M2E0ZGUxN2EwZDUgbGVnYWN5LXRydW5rCisyNDA5OCA2NTZjM2M4NGRlYmVmNGVmN2I5YzQ3N2QwNTg5ZTI5NDVhNTAxOTNkIHJlbGVhc2UyMS1tYWludAorMjQwOTkgYzdhYTMzMmEyZmZhZmI3MzQwNGQ1N2M0ZDIyZTI3NWUxODdhZTAwYyBsZWdhY3ktdHJ1bmsKKzI0MTAwIGIzZDhkMjYxNWIyM2JmNGYwZGIzYjA4ZjdhODRkMjhhNDM4NTRlYzQgbGVnYWN5LXRydW5rCisyNDEwMSBkZWYyYTExOWQ1Y2RhMzFhNDZiZWJiNmVkYzVmYjY1Y2M1Y2EyNGVlIGxlZ2FjeS10cnVuaworMjQxMDIgMzc1MTM2NmMyZjM5MzFjYTlkYjI4MTEzZDY3ZWQ1NWFlZmVlN2Q3MSBsZWdhY3ktdHJ1bmsKKzI0MTAzIDk1MjAxMTUzMjUxY2JiMGJmOTM0NWZjNGZiNzlkNzdmZmVjNTA1ODEgbGVnYWN5LXRydW5rCisyNDEwNCA2ZjI1OWY3YmJlZDgwZTRhNWNhOWYzMmQ2MmYwYTBiZWRhYTEzYzdiIGxlZ2FjeS10cnVuaworMjQxMDUgMTRkYzY5M2FmNTMyMTk1Njk5YTgwMzU4MjRmMTlhYTEzZGY2YzI0ZSBsZWdhY3ktdHJ1bmsKKzI0MTA2IDVmMjRiMjBlMTAzZDIzMmQ5ODQ3OTVjNGJlYzE0Mzc1OTBkZTZlODEgbGVnYWN5LXRydW5rCisyNDEwNyBkYWI1MmRiZDEyYWExNDQ0YmU5NzczOGRiODRlOTIxOWVhYjMyMGYyIGxlZ2FjeS10cnVuaworMjQxMDggZDEzOWVjNDlkMjA0ZDcwNzg5Zjg0MmZlNzFkNzIxM2VmOGRjY2U1OSBsZWdhY3ktdHJ1bmsKKzI0MTA5IDg2MDQ3Mjg3N2RkYTE1MTExYjgxMWI0ZGE0MzBkYzk4Y2I2ODY4MjEgbGVnYWN5LXRydW5rCisyNDExMCBiMGMzMTBjZGI5ODY5YWY2OTNlMGJiMmZiNjdjYjY3MzliM2RjMGVmIGxlZ2FjeS10cnVuaworMjQxMTEgM2ZiZDI1M2RlYTVkNGE5YzZmODUzZjJiNGJkYTQzNzk4ODM4ZTE2MCBsZWdhY3ktdHJ1bmsKKzI0MTEyIGMxZWJjMDI4NWE1ZTdkMWIxOWM4MDc5MDgwYjZiYmM3MzY0MmJhMzMgbGVnYWN5LXRydW5rCisyNDExMyA5ODFlNTQ2OGM5YjUzMWZlZDQ5ZDAwMjMzNWJiNTZjMjk5ZTQ1MDg4IGxlZ2FjeS10cnVuaworMjQxMTQgZjE4N2QyNDA1NmY0OGQ4NTZmYWM0N2E0Mjk4YzJhNjIxY2E1MGQ5ZSByZWxlYXNlMjEtbWFpbnQKKzI0MTE1IGY2Yzc0NjBjY2FmODk5ZjEyMzg4ZmY4ZDQ4YjAyOGVkZDY2MjBhN2YgbGVnYWN5LXRydW5rCisyNDExNiAzODAzYWY5ZDg3OTYzZjhjMjk3YjQ3MjQ2ZjYxZmIwYWY4NTAxZjk2IGxlZ2FjeS10cnVuaworMjQxMTcgZWFjZjgxZGY2YzQyNzU2ZGZiYzFkNzM2Mjk3OTFlNDhkMjA1YWI3YyBsZWdhY3ktdHJ1bmsKKzI0MTE4IDkxNmYxOTFmY2ZmNDNmMDViNjQ5NWQ0MDQ1OGNlZGNiYjNmY2RmOGMgbGVnYWN5LXRydW5rCisyNDExOSA4ZDE0ZjUzNGE1YzI3NmY2OWM1ZmI5MDNhNWQ5NmUyNDMzNGQxMDZiIGxlZ2FjeS10cnVuaworMjQxMjAgNjk5MGZlOWM0MGY2YTdhMjhiMGU5MGEyNDk5MTNjMmNmYzA2MzAwMSBsZWdhY3ktdHJ1bmsKKzI0MTIxIDRhZGU3NmE2YjI0NWJhNzhkYmVlODU4YmU5MDM3ZjNiMmE1ZGEyMDggbGVnYWN5LXRydW5rCisyNDEyMiBlMTBkOTA3MGUxMDczMmMxMWVjM2FiNTNjNGVmYWRjNDcxNjlmMzUyIGxlZ2FjeS10cnVuaworMjQxMjMgZWM2MzJhNDFlZTM1ZDliNjQ2MTM0ZGNhYTE4YTU5NTJlYjg5MzBjYSBsZWdhY3ktdHJ1bmsKKzI0MTI0IGQ5YTlkOTI2MjRkYjk3NDI4YTM0YzJhZWRiZGRlNGQwZjk1NmY5N2EgbGVnYWN5LXRydW5rCisyNDEyNSA0MDRhZWVjYTUxZTljNDUxYTEwYmNjM2ExYWZmYjA1NDQ3MDA5MjU4IGxlZ2FjeS10cnVuaworMjQxMjYgMjk2MmYwMTkyNGM5OTdhMzVjZjkyZWVmNGNhZTY0MGRkNmQwZGRlOSBsZWdhY3ktdHJ1bmsKKzI0MTI3IGYzNGE4ZGY4YmJhNDYwMDg4YjFlZTkzNDFjNDM1YThlNzU0OThmZjcgbGVnYWN5LXRydW5rCisyNDEyOCAwNTNkYmQ5YjU4ZGYwM2MwMDIzMTk3ZDgzMDk1YmJmMDg2ZWJjNTFmIGxlZ2FjeS10cnVuaworMjQxMjkgNzdiYjJhZTA2N2MyNThjZDRhN2Q2NmNhYTkzZDFhMjcxY2Q3M2JiZiBsZWdhY3ktdHJ1bmsKKzI0MTMwIDA0NDRmNTc2YzkyYjE5ZTgxYzI0NTVkYzYyMDViMTA0M2M3NTQ2ODQgbGVnYWN5LXRydW5rCisyNDEzMSA2Mzk4ZDEwNTVmY2ZiOWRlMmNkZDg2NWM4YTc0MjA5YTgyZTBjNjk1IGxlZ2FjeS10cnVuaworMjQxMzIgOGNmMWQ5MjY2OTExMzI4ZTgzZDZlNDg2OTkyZGFkY2UwMGY5NjcxZiBsZWdhY3ktdHJ1bmsKKzI0MTMzIGQxYjNjYTg5ZDc4YjQ5ZGJkY2ZjYjViMDkyZGU4ZTNmMmY0OTk3ZTMgbGVnYWN5LXRydW5rCisyNDEzNCAyNDEwNWU5ODlmMTc4ZjJmNjA4ZTUxZDFkZjBhN2RiZjk5MDJmMmQ0IGxlZ2FjeS10cnVuaworMjQxMzUgMTVjOTI0YTExYWVjYzRkZTRhNjc4ZDk0Mzk4NzFjZTg0ZTgwODBjNyBsZWdhY3ktdHJ1bmsKKzI0MTM2IDBjYWVhNWZlZmE1YzFjN2RkZTY4YjE3MjU5ODNhZWFmYzQ3OGY3MTAgbGVnYWN5LXRydW5rCisyNDEzNyA1YTQ3YjU4YTQ0YmI0ZTRhYjEzYzFhNTViNjM4Mzk3MmQ5ZWJkNjUwIGxlZ2FjeS10cnVuaworMjQxMzggZDliOWI1YjQ4MTViNjIxZGNmMzJiMGM0NjZhOTNiOWE4ZWRmYzc4YiBsZWdhY3ktdHJ1bmsKKzI0MTM5IGQ2ZmYxZGFhZTM5ODE3NjQ2ZTc4YTg0YjQwN2NlOTgxNjgxNGUxNTcgbGVnYWN5LXRydW5rCisyNDE0MCA4OTU3MzQxZjk4Zjg0N2Q2ZjRkNjNkZTBkNDYwN2U2ZjVkZWU4YTVhIGxlZ2FjeS10cnVuaworMjQxNDEgZjU0ODI4ZWI4ZTA3Njg5YTFmNWRkNTk2MGIwMTBmOTc4M2U4MWE4OCBsZWdhY3ktdHJ1bmsKKzI0MTQyIGViYmRjMzhlYjExYzhhOGJmOWYxNjVlOTU2OGVlYTAxYzliN2M4NmQgbGVnYWN5LXRydW5rCisyNDE0MyA0MGE4ODk4OWQ2Y2JhNDRlODUzYWUyZWEwOTUwODY0YWFjMjU3NDczIGxlZ2FjeS10cnVuaworMjQxNDQgMmQ5ZTQxYTcyYTY4YjM5MjRhNWVhNzc5ODZjYzliMWUwZmUxMGQ3NSBsZWdhY3ktdHJ1bmsKKzI0MTQ1IDdiYjMxZmI0ODNiYzg2N2I0NDc5MmEzOTU5OGM1ODY5MzMyODg4MGIgbGVnYWN5LXRydW5rCisyNDE0NiBhOGE2NjEyMGJhZGVkYmFkYmY4YmMxOGI5MzU5NjJmZTdlN2FlMmZmIGxlZ2FjeS10cnVuaworMjQxNDcgZjU3NmZmZDU3OTY2YjU3ZGFiZDY1ZDY1MmI3MTIzOWE2MjI5YjU2NSBsZWdhY3ktdHJ1bmsKKzI0MTQ4IDdlOGNkZTQ2NGRiNDBlOTkyOGZjOGNiNDMyNWI2NDBjZGJlNjU3YjMgbGVnYWN5LXRydW5rCisyNDE0OSA3ZTI0N2YwODM3ZTI2OTU0NGQyYmE4NTg2Zjg1NTRjZGE2ZjY2YjdhIGxlZ2FjeS10cnVuaworMjQxNTAgODExYWNlM2M0MGQwMWMyYWVlYjBlNDNiZThmNmIzZWJiMTE5MGZjNiBsZWdhY3ktdHJ1bmsKKzI0MTUxIDE3OWNkMzcwYjYyMWZhMjRmYzM2YzgzY2YyNjdlNDdkOWQyYmI4MmMgbGVnYWN5LXRydW5rCisyNDE1MiAyNzg3NGM4NjAyNjgzNzMxMTkxOGRjNjQxY2M0Y2I1MDJkYjg0Yzk1IGxlZ2FjeS10cnVuaworMjQxNTMgZDU0ZTI5NDQ4NGIyYmZkYjNiMjcxYTA0YzhiMDg2MWNmMjNjZjEwMSBsZWdhY3ktdHJ1bmsKKzI0MTU0IDczMmVhMjJlYjUxODJmZDMwYTBlYjI3ZjNjMDhkZmRiNjE2ZDU3YmQgbGVnYWN5LXRydW5rCisyNDE1NSA4YTcyZWY2YjgxMThkN2M1YWM3N2E0MWU4ZTU2OTExOTY1MDJiNzBlIGxlZ2FjeS10cnVuaworMjQxNTYgZWVmOWJkODdmY2MwNzhkODg5NjExZGYyNTliNzhlMGY5NjMwOTA4MiBsZWdhY3ktdHJ1bmsKKzI0MTU3IDE5ODE3YTRmYTJiNmNmYmJiNTUwYWY3ZGRhMDg2YTBhN2Y3MGQxOTcgbGVnYWN5LXRydW5rCisyNDE1OCA4OWQxNzFmNmJjN2Q2MzA1ODI1NzA0ODcxODZiZDUxNDk0MDMzNzk5IGxlZ2FjeS10cnVuaworMjQxNTkgNmVlMTljMTliMmMzNzNhODM2M2I3YzVmMGYwY2ExNDA3ZWI4OGMxNiBsZWdhY3ktdHJ1bmsKKzI0MTYwIDVjNDM1YjViNTlkZjkwZWYxNTJmY2I5OWM3NjQzNGMwZTc2NWY5OWUgbGVnYWN5LXRydW5rCisyNDE2MSBhNjBjMWU4YjBiYmJlYmE4ZjA4MjVmMDhkMWE2OWZlOTUxYWRjYWZkIGxlZ2FjeS10cnVuaworMjQxNjIgN2Y1NjFmZTllZGZjMjI4M2M0OTJmMmE5Yjg1Zjc3YTU2ODBhMTZhYSBsZWdhY3ktdHJ1bmsKKzI0MTYzIDBjMTc1MTViMDVkYjhiN2EyZTQ2Y2Y2YWIyMTcxNWE5YzY3MmRlYTkgbGVnYWN5LXRydW5rCisyNDE2NCAyY2QyYWU0ZGUzMGQ5MjFhYjJmNGY0YzI0NGVjNWZiYTQ1ZmE2NzBlIGxlZ2FjeS10cnVuaworMjQxNjUgNjQwZjAyODRlMzBhYjI5NGNjYWM1ODM1MjQ2ODJiYTc0YTgzN2ZjZiBsZWdhY3ktdHJ1bmsKKzI0MTY2IGUyMzE0MGY2ZmI5MDM5NmUzMzQ3NmE5MjNhODQ5ZDA2MTEzZGIxY2UgbGVnYWN5LXRydW5rCisyNDE2NyA0MWQyZDAwYTMxZjE1ZDkxNThkZTU2ZGVjY2RmMWJjNDhkYTAwM2NkIGxlZ2FjeS10cnVuaworMjQxNjggZjQ2NzlmNmE5NThmOTU0ZTk2Y2RmZGY5NTYwNDBmY2I4ODU3NDQ5MCBsZWdhY3ktdHJ1bmsKKzI0MTY5IGRlNGY2YjE0ZDM4MGFjZDEzNWZkMTdmMmIzODkzNzYwZmFmY2E5NmEgbGVnYWN5LXRydW5rCisyNDE3MCA1YjYxYTJmZjY5NmQwZjVhODY0YTQ2NDhlMjJkZjdhYTdhMzAyZWZhIGxlZ2FjeS10cnVuaworMjQxNzEgYjVmZTlhOTQxNGZjYTY2Yjk2ZjU3MjNiZjc5YjgwYjYzMDQ5NmVlNyBsZWdhY3ktdHJ1bmsKKzI0MTcyIGFmMzY3MzgxMmUzMzYxMmExYWJiZjVmODg0YzFjZmQwYWI0YThhYTYgbGVnYWN5LXRydW5rCisyNDE3MyBlMTg0YmJkNzE2N2MzZjA0N2Y5YmQyNDFjZjEwNGIzZDhiY2QyOWIxIGxlZ2FjeS10cnVuaworMjQxNzQgYzNkM2RjODI3NjRjOWY0YTE5ZTExMTFiY2YzNTQ3YmE2OWNhOTE4ZCBsZWdhY3ktdHJ1bmsKKzI0MTc1IDg3MjJiMGFiZWFjNjI3OGVmZmM4ZTc2MWY5NjdjN2MyOWJmNDFlM2QgbGVnYWN5LXRydW5rCisyNDE3NiAwYjYzMzJjMmFiYTAxY2FjZTY3NmM0MzZlNWIxOWU4ODc3YWQwNTA4IGxlZ2FjeS10cnVuaworMjQxNzcgMzU4NjQ4ODczYWRlYTJkYmUwYmQ2ZjkxYzIwYTQ3N2UwMzZhN2E3YyBsZWdhY3ktdHJ1bmsKKzI0MTc4IGQzZjNkMjFhYzA0YmM5MzYzMjhkOTA3NjA4MGNlYTU2OWNjN2NkMGYgbGVnYWN5LXRydW5rCisyNDE3OSBiZmNjMmVkOWNhYmEyN2VkNDAxZjMwM2M1ZjliNWM4NmJlOTdmY2NhIGxlZ2FjeS10cnVuaworMjQxODAgZjJjNzg4YWRiZGJiYWYzYjQ1ODE0ZjA4MjJhYTVlNzQxYTI2YTlmNiBsZWdhY3ktdHJ1bmsKKzI0MTgxIGIwYTZkYmM5MDA0NzA2Mzk4NzRjZjJkODRmNjIwOGRmYjYyMDVmM2MgbGVnYWN5LXRydW5rCisyNDE4MiA2MDI3ZmRmMWViZGEzYWMwOTlhZWU1M2VkNDA1MTA0YzU0OWEzMWQ5IGxlZ2FjeS10cnVuaworMjQxODMgMzE2ZmZmZDgwYjE2MWM4ZDIzZjQ5MWEzMTc0Y2IzOGE3ZmFkYTkxZSBsZWdhY3ktdHJ1bmsKKzI0MTg0IDgwYmFhMjdiZjBlYzMxNjUyNzlmNDU4MTYyNTA2ODk0MWQ0NDQ1YjAgbGVnYWN5LXRydW5rCisyNDE4NSA2NjllZGRmNDcwYmFkZDZlNzc4NzNiMmNjZTY1ZjMzMTdhYWU2MGFkIGxlZ2FjeS10cnVuaworMjQxODYgODM0NjI1NWNjYTdjN2E5MTJmOGRmZjY5NDBkNTRkNWQzZDRjZjFjZCBsZWdhY3ktdHJ1bmsKKzI0MTg3IDU1YTA2MGY0MTczZjcyMDY2ZDY5YzgwNDQ3OWJkMjEwOTIwZTc0ZDcgbGVnYWN5LXRydW5rCisyNDE4OCAwNmQ5NWI2ODc3YzQ1YWFmOTkwZGNjOWI4MDNkZmEyNjZhNjQ1NTg5IGxlZ2FjeS10cnVuaworMjQxODkgZDg4ZGQ1YzJiMjgyYjk1MDYxNDVmYTZlNTZlNTMwMjQ1NGQ1M2I2YiBsZWdhY3ktdHJ1bmsKKzI0MTkwIDkzMjUzYzY1ZDg2MzExNWNlZjU1NTAwZmIzYTQ5MjlmMmY1ZDUzMWQgbGVnYWN5LXRydW5rCisyNDE5MSAyM2EyMDk0ODRmMDI4ZTY2MWU4NGUzODI5MTY4Yzk4Nzg2MTM3YWQ1IGxlZ2FjeS10cnVuaworMjQxOTIgYjk4NTBjNDQ3NTZiM2M3OGMwYjlhZWVkNTdlNWYzYzRjYTcxOThmYSBsZWdhY3ktdHJ1bmsKKzI0MTkzIDIwMDE0NzE2NTU2YjZiYmJhYTY4MjMxOGM3ZTQyOTMxNDY4YjY2NTggbGVnYWN5LXRydW5rCisyNDE5NCA3YjU4NjQ5NDdiYWY2Y2M5MzQ4OTUzNjQxYWVjN2M1NTAxMmNiMzA4IGxlZ2FjeS10cnVuaworMjQxOTUgYjIxYjQyMzMwZTQwMjE5ODk4Yjc3MTQ0YjE4M2RiMzk1OTEwMmJmYSBsZWdhY3ktdHJ1bmsKKzI0MTk2IDkwODcxZmE0M2Y0ZTBhZTAxMTQ3YjQxN2U5ODYyYWEwMmE0Y2ZmMTQgbGVnYWN5LXRydW5rCisyNDE5NyA5ZTg4ODViYmRiYzk1MzMxYmM0ZGQ4NzBmMTI2MDcwNzYyNTZmMGExIGxlZ2FjeS10cnVuaworMjQxOTggN2E5OTFkMDEyY2Q2MzFjYTEyMDQwMWY5OWJiY2IzNTUwMjlhZjY3OCBsZWdhY3ktdHJ1bmsKKzI0MTk5IDk4ZGJiMDc5YzVkNDhjMWM5YzdjOWE4ZDQyM2Y0NzQ1YTg0ZDU1MTUgbGVnYWN5LXRydW5rCisyNDIwMCAyMWZhNzU3OTA4MjIyM2M3NjUxNGIyOWZhMDJkZTJiY2MwZTY3ZTM2IGxlZ2FjeS10cnVuaworMjQyMDEgZWUxNDM3ZjVkZTAzMzI4ODlkNWU4MzRlZTdmNDA1ZjBlODY0MTVhNiBsZWdhY3ktdHJ1bmsKKzI0MjAyIDdjZWRiZmFjNzQ2Yjk3NzNkMjQ5OWQ1NzQ3YmEyNzNmNWYxOTFkNjMgbGVnYWN5LXRydW5rCisyNDIwMyA1YzAyZDIxNWEzOGRiOTAyNjg0MWNhZTE1MzAwOWVjOTQyMzdlYWZmIGxlZ2FjeS10cnVuaworMjQyMDQgMmI1ZDMzMjlkN2UyYTRiZTkzYzkyMjdlNjY3ZWM0ZjQ5MGI5M2M4YSBsZWdhY3ktdHJ1bmsKKzI0MjA1IDlhZWQ3NDUyODY2MWY3MjUzNzZhYzQwMjYzZDBiYmYzMDc0OWUyOTUgbGVnYWN5LXRydW5rCisyNDIwNiBmYTdlMGQwMGM4MjhlNDVlNDZlOWE3NTk4MGVjYzEwNTNiNmRmMTg1IGxlZ2FjeS10cnVuaworMjQyMDcgY2Q2MDZhNTg0OTAzZTQ4MTVlZmJkYjUwNTI5MzFkN2UyOGViMDY0NyBsZWdhY3ktdHJ1bmsKKzI0MjA4IDE5NzUwNWU2NzUyYTI1NGRhOGI1NDMwMGY1ZmM5ZmJlM2UxMmE4NDggbGVnYWN5LXRydW5rCisyNDIwOSBlY2NlNWQ3ZGE2MDdkZTRhZjI5M2NlNGUzOTVmMTIxNmMwZTlmZTJiIGxlZ2FjeS10cnVuaworMjQyMTAgYmE5NDU1ZmM0YzhiMGUyNWIyZGE2NDk1MzM2OGQ4MjY4MDMxOTJmYSBsZWdhY3ktdHJ1bmsKKzI0MjExIDBiNjQ1MjBjMjAwYzg4YzdkNGU0NWMwMzk5MGRkNjZlNWY4N2E4Y2IgbGVnYWN5LXRydW5rCisyNDIxMiBlMDUzZTQ0Zjk2NjZmZjhkYTQ2N2Q5OTQzOWQyY2UxNDljNTkyN2Y4IGxlZ2FjeS10cnVuaworMjQyMTMgMTNhMThjYmZmZDljNzBiY2JkYzFkMjAzZDAxZjFiZTEzNjdlMGI4NCBsZWdhY3ktdHJ1bmsKKzI0MjE0IDU0MGU1MzI1ZmM2YjA4ZGIyMjA0MzE0NWUyYzZhYjBlOGM2MWYyNTkgbGVnYWN5LXRydW5rCisyNDIxNSAxM2RmOGI2YzJiODBjNzUyODE2MjJkYmNjMDMzM2Y2OWYxMTQ5OTFkIGxlZ2FjeS10cnVuaworMjQyMTYgNDVjOTUyZDJhNjExMzUyMzNmMjE3NGRiMGM4NmYzM2QyZjk0YmI0MCBsZWdhY3ktdHJ1bmsKKzI0MjE3IDVlNzM1ZjE5N2NhNjdkYmY4NmM3ODM5NTcwNjNjNTUyNTMyYzM0NzkgbGVnYWN5LXRydW5rCisyNDIxOCBkM2RkMGMyYTE3NzFkODVmZWZhYjZkOTJlMzkxZTY3ODEzOTBkZGJiIGxlZ2FjeS10cnVuaworMjQyMTkgZTRkMzgwZjVmMjk3NjY0MWI2YjYyZjQ4NjY4ZTA2MzNlNDYxZjgwYSBsZWdhY3ktdHJ1bmsKKzI0MjIwIGMzYjMzZWFkMzU0NmVmNDFiOTc0MWZjN2YzM2I0ZWI2ZTNkODA5ZTAgbGVnYWN5LXRydW5rCisyNDIyMSAzYzVkMGVlYTFhZTJiMjI4Y2E3YThjOGNmNjlkMTQzNzRkNGUyMTE3IGxlZ2FjeS10cnVuaworMjQyMjIgZWYxMmM5ZGRlZmE3MDU2MDNiOTAzNGU1YTY3MzYyN2M3N2Q3MmIxZSBsZWdhY3ktdHJ1bmsKKzI0MjIzIGM1NTVmMWU3YzRiZTRkOTNkMzk4NmEyOWQyN2M3M2UxMjgxNGU0MDcgbGVnYWN5LXRydW5rCisyNDIyNCA5YmZjMzFjYTgwZjM0MmZhMjQ2N2VhMTZhM2Q2NjkyNjU1YzNkNWE0IGxlZ2FjeS10cnVuaworMjQyMjUgZDI3Y2U4ZmU0M2Y4Mzk5MWYzMTQ3MmU0ZTczM2U4YmU5M2IzN2U5MCBsZWdhY3ktdHJ1bmsKKzI0MjI2IGMzYjA4MzE5OTU5YzRjYTA5ZDJkMzUwYzU5OGNiOTllMzY1YmY0MTggbGVnYWN5LXRydW5rCisyNDIyNyAwZDE3Njc4NDRjNGI3MDdhMjRiMGFmOGZmMTQxZDhkMjBiZDE2NWU1IGxlZ2FjeS10cnVuaworMjQyMjggNzcxYjAyOWJkYjhhMTgzNmNjZjBlNWMwMmJmOGI0ZThjNDhiYjQyMCBsZWdhY3ktdHJ1bmsKKzI0MjI5IDllZGU0ZDZjYzlkZThkNWVkZjIwMDlmODUyYWNlZjE0MTM3YzM2OGMgbGVnYWN5LXRydW5rCisyNDIzMCBjM2IzZTJlNDAwMzVlYTBlN2UyOWZhZTdiM2Q1YjEwMjJmOTMwZmU1IGxlZ2FjeS10cnVuaworMjQyMzEgNjE1YTRmNTYwMjY4NTEwNjg3MzJjMTY0MTdlZmY4YTM3YTM0M2E3MSBsZWdhY3ktdHJ1bmsKKzI0MjMyIGY3OWNmZDA1NGYyMWI4MWM5ZTIzN2U1ZWQwNWJiOWYyNjQzNTc0NzIgbGVnYWN5LXRydW5rCisyNDIzMyBjYThiZWM0YjMzODM3NDJjZjNhYmUzOGIxMTM3OGZhNTQ3ZTkyMWU0IGxlZ2FjeS10cnVuaworMjQyMzQgYTEzZDdjZDBlZjdmMjc1MTFkMTRjZjZiMzIzMjhlMTRkNTBhYzE5NiBsZWdhY3ktdHJ1bmsKKzI0MjM1IGRhNWZiYzFlYjFkMDVmZjkxYzYxNjRhMjQzNDlkNDYyYTJhNDE0NmEgbGVnYWN5LXRydW5rCisyNDIzNiAzZDUyMmNiYjdhODFmMTk2NWIyNzdiNzU0OGUzNWM2YWU1MTBjZWVjIGxlZ2FjeS10cnVuaworMjQyMzcgMzAwYjY4ZDYzYjlmNGMyNWJiNWIwNjIzYTcyMzU1YzY4OGQ4Yjc5YiBsZWdhY3ktdHJ1bmsKKzI0MjM4IGEzYzU3ZTU5YjVhODEzYmZkZmI0Y2E3MTcxNTM1Y2Y2ZGVhMzI5OWIgbGVnYWN5LXRydW5rCisyNDIzOSAzZTlkNmU5ZmJlNThmNmE2MzZkY2U5NDcwNjZjOTIwMjUxMTg0ZmFlIGxlZ2FjeS10cnVuaworMjQyNDAgOWNhN2U0NmZhYTI0YmMyOTg0YThkZmRkZDE1MTY2YzY4NjhkNzI4NiBsZWdhY3ktdHJ1bmsKKzI0MjQxIDU1NDU4MThmNTgxYTgyZjZkNjMzYjFjNmU3ZDllYzJkMzYxZTgzNzEgbGVnYWN5LXRydW5rCisyNDI0MiA5MGEwZjA5NTE4YzhmNmVmMmI1MWZhNDlkZjg1Njc5YWMxNGNkY2NlIGxlZ2FjeS10cnVuaworMjQyNDMgYmI4NzE2MDk1YTgxYTVjZDU1NjUyYWNiYzYxZmVjMGVjYTVkZTBjMiBsZWdhY3ktdHJ1bmsKKzI0MjQ0IGYxY2ZkY2E3M2Y4Njk1ODc3YzhiZTllZjhlYjBlYjQ5YTE4ZjE0ZjUgbGVnYWN5LXRydW5rCisyNDI0NSBjMWVjYWZkMTU1NjBiNTE5YjFlNjQ0MTllNTFlY2VjNGE2MWMyNmYyIGxlZ2FjeS10cnVuaworMjQyNDYgZTE2N2I4MmM2NDQ0MGQ4MGMwZGNhN2Y3Yjc4MjQ2YjQwNWU1NDk1NyBsZWdhY3ktdHJ1bmsKKzI0MjQ3IGViYThjNzcxZGI2NGNiNTA5OGEyYTdiMWY1ZThhNjFjNzA1ODBlMGQgbGVnYWN5LXRydW5rCisyNDI0OCBjZTY5ZDRlZTJmYTAwZTE3YWY2NWNjODU3Mjg5OWM0NjlmNzY2ODgwIGxlZ2FjeS10cnVuaworMjQyNDkgYWM1MTkxNmJmZGEwN2UyZDg5MGMwOTI5MzFiZTJmNDU0MzQ4NWVhNiBsZWdhY3ktdHJ1bmsKKzI0MjUwIGYxNjcxYTYxMDA3OTkzOTYwYWUzZGU0NzAwNmJjZTcyNGZlM2UzNzUgbGVnYWN5LXRydW5rCisyNDI1MSBlNzFjY2ZiZjM2YmI4ZGVkNjI4NDYyZGFmNTQ3NDljOTM1NjdmMTE4IGxlZ2FjeS10cnVuaworMjQyNTIgMDdmMWQyYzVkZDA0MWM4ZDg0MTE4ZjRiNmE2NmNhNDBiZDhkYTBmZSBsZWdhY3ktdHJ1bmsKKzI0MjUzIDk1ZTM1ODRhYmU0NTc2ZTFkYzQ4MmI2Mjc0N2QxYjc1NjJmNzdiMGIgbGVnYWN5LXRydW5rCisyNDI1NCA0NGYzZjVhNWJmZTI0NWQ3NGFhN2QwODZkZDU1OWFhMjdhNmYwMzNkIGxlZ2FjeS10cnVuaworMjQyNTUgNjNjMTQ2Njk1MjdlNDk3ZDkwNDFhMmYxOWIxMmYxOGZkYjhlMjRjMiBsZWdhY3ktdHJ1bmsKKzI0MjU2IDRiOWU2M2NmMDJhNmY4MjhjOWQwYzkwMzFjMmRjNTY1N2NkZDNkMDUgbGVnYWN5LXRydW5rCisyNDI1NyBiMGRmMWZkODE4ZmMxZjU2NWIxYTI0NWUxOGFjYjkwYWE1NzQxNzgyIGxlZ2FjeS10cnVuaworMjQyNTggYjE2M2U3ODZhYzc0ZTRhNTY3ZTQxMDhiOTA1MTg3YzQwYjc0OWEyYiBsZWdhY3ktdHJ1bmsKKzI0MjU5IGY3MTFjZjQ1ODUyNWVlZDdjYmY4YTJjMGQxNmQ0NWFiOGZmOGVjYTUgbGVnYWN5LXRydW5rCisyNDI2MCBhYWNlNGZhZmYxN2RkOTI0NWVkZmI3ZmI1MTRmMmZlZjMyNDQwYTIzIGxlZ2FjeS10cnVuaworMjQyNjEgZjk2ZTg5MWNmMGU0ZWU1MmRiOWI0NGQwYWVmMTc4YTk4NDY5YWVkYyBsZWdhY3ktdHJ1bmsKKzI0MjYyIGFjMmJjMDdlODY5N2Y3NjVlYTU5NDlhNjM5NDgxY2IwMzlhZmY0Y2EgbGVnYWN5LXRydW5rCisyNDI2MyBhODVhM2MxMGJhNGRhNGFkOTBjYjM4MTA5NDcxN2NlMWE0NTQxOTYyIGxlZ2FjeS10cnVuaworMjQyNjQgMDFlNDdjZTk2MjAxMGY2YzE0YWFlMGJhYTEyYmViMWRkMGMyNDVjMyBsZWdhY3ktdHJ1bmsKKzI0MjY1IDgxNjI2NGJkYTEzNmNlNjIxN2Y4NTlmMGYwYzg3YWUxZmQ3ZWM0ZmUgbGVnYWN5LXRydW5rCisyNDI2NiAwZDFkZWI0MDIxOWY5ZmMwMjg3ZmNkZmExNzE1ZjI1NWRiMWM2NzBhIGxlZ2FjeS10cnVuaworMjQyNjcgNWI1NzhkNGQ4OTAyYjk1YjUyMWRkYmUwYjQ4OGEwY2E0Y2NlODAxMSBsZWdhY3ktdHJ1bmsKKzI0MjY4IGQ5Yjc4NTNhMDQzMWIzNjg0ODg2M2VlYTJkMTVmMDM4OWU1YzI4YmUgbGVnYWN5LXRydW5rCisyNDI2OSAzYTU0M2FmMTljNzk1ZmExOTNmNDg1MmEyNjIxYmQxZWMwMGQyMzRiIGxlZ2FjeS10cnVuaworMjQyNzAgMjJkZjNlZDExZTIxOTZkYzJiMzhmNDBlODdlMmM0ZWFiMmUxZjMyMSByMjJiMi1icmFuY2gKKzI0MjcyIDA5MjQ0YzQ2ODMwZjdiODkwODZiYjhjMmY3NGQyNjI5NDhjNzhhYzIgbGVnYWN5LXRydW5rCisyNDI3MyAxNzRjY2IwMzViM2Q4NTg5M2JiODBiYWY4ODUxYWYwOWNmODI2NWM4IGxlZ2FjeS10cnVuaworMjQyNzQgNTcwYTU0YmIxYTU5ODg4MmMxMDViN2UxYzJkZGI0YjI2OWMxMWY4NSByMjJiMi1icmFuY2gKKzI0Mjc1IGMzMjliODExZWU1NDk2YmQ1OWM0ODQ5MjQwNDcwNGFlMzhhMzY4MmEgcjIyYjItYnJhbmNoCisyNDI3NiBmMGI1NzVkNmZlYWE3MGRmNDMzOWU0MDQ3Y2E3NzMwN2U5YjJjMjhjIGxlZ2FjeS10cnVuaworMjQyNzcgNTU1YTllMDAxOWE3Nzk5NmI5MzliZDllNzdjOTZjOWViYTA3YjQ1MCByMjJiMi1icmFuY2gKKzI0Mjc4IDZiZmZkMmUyMzI2YTMxNDE4MDY5ZmQyNTgwNzdhOGE4OWVhNThkYmIgcjIyYjItYnJhbmNoCisyNDI3OSA4NGJjYTFlZjExNjhiYzk3YTgyZTU0ZjdkNDc3NDRkZGQ1OGQ1ZGRlIGxlZ2FjeS10cnVuaworMjQyODAgM2UwY2NjY2M0ZGNiMWU3N2FhYjFlOTVkNWQxODczOTc1NmRiYmI5OSByMjJiMi1icmFuY2gKKzI0MjgxIDQ2NWJhYjA3ZDJhODg0ODA4ZjYwMDVkNDhjZDYzNTIyNTk2MTUzMmQgcjIyYjItYnJhbmNoCisyNDI4MSBmNzE1ODFjZTdhM2NlZDY5YzFiYmU1YWI5MTM5OTBhNWM4YzQxNjk0IHIyMmIyLWJyYW5jaAorMjQyODMgOTJkNmY2Zjk3YzcwYzk0ZjY4ODdhNWMzMjM0YzgxZGM0ZWY0NWVlNSBsZWdhY3ktdHJ1bmsKKzI0Mjg0IDMwZTEzZjBlYTc2YjIxYzdhMjUyY2U0MjM0NmJhMDIzMjJhYzhiM2QgbGVnYWN5LXRydW5rCisyNDI4NSA0MzY1MzFiMGFjZjgxYTE0N2JhMDdlNjI3MDQ0ZWVlOGVhMTM0NWEzIGxlZ2FjeS10cnVuaworMjQyODYgZjdiNjEwMDU5M2RjZjE3Njk1YzNkYzMzMzc1ZDEyODhkYTc5ZTAwYyBsZWdhY3ktdHJ1bmsKKzI0Mjg3IGJlYTkyYzNkNzdhMzJhNDE2ZTYzYjBlY2I2MDc4OTgxM2RkMjhjODIgbGVnYWN5LXRydW5rCisyNDI4OCAzOTRkYTRlZmZiZWM2ODgyODRjMjhmMzEzZjc0YWQ5YzA4NzJiYjFkIGxlZ2FjeS10cnVuaworMjQyODkgZDkxNGUwZjM5ZjgzNzhlMzE5Mzc2MzBhNTU2NmNhYmNhMWZlMGQ0ZCBsZWdhY3ktdHJ1bmsKKzI0MjkwIDFiNGUyYTc5NzU5NjFhMDg5ZGE5NDBhYjA5MTA3ZTBmZjJkM2I5ZjEgbGVnYWN5LXRydW5rCisyNDI5MSA2ZTEwYTE0OTllMjQyM2QyYjQ3ZDRmNGNkMjRiNmVjNzlmZDZkNDM0IGxlZ2FjeS10cnVuaworMjQyOTIgOTRmZTE3YzY3NzE1NDA4MDI3OTA2MmU3YjQ1MTVhNGQ2YjViMGEzNiBsZWdhY3ktdHJ1bmsKKzI0MjkzIDYxYTJkZjU2NzQ2ZWVlM2ZkYTFmOThmODY5Y2QyMTc4M2QzNDZkNjIgbGVnYWN5LXRydW5rCisyNDI5NCAyMmNlZGVkYTJhNzNjYzU5NmM2ZmE3YTgzMzAxMjhiMzdhYWI3ZTgzIHIyMmIyLWJyYW5jaAorMjQyOTUgYjVjMmY3OTRkODA1OTM3MTdlMmU4NzdmNjE4MDQ5NzRkOTQ3NDcwZSByMjJiMi1icmFuY2gKKzI0Mjk2IDFmZGI4OWE4YjYyMTk5YmE4ZTYyODgxNzlkM2U0NTRiZTk3Y2EwYzYgcjIyYjItYnJhbmNoCisyNDI5NyA0NGM3NzgxZDNmMGNjZDQ4YzExOTdjNDliYThhNTY5NmVjOWQ0YmNiIHIyMmIyLWJyYW5jaAorMjQyOTggNDFlZjk4MmE2NGIxYjFkMTlkN2FhOTkzZWZkYzBkNjNmYTE1NjhmNSByMjJiMi1icmFuY2gKKzI0Mjk5IDEyNjg5NWEzOTJiYTczZmI5NzgzNTdjM2JkZWVmMWNlYTJmOTViM2YgcjIyYjItYnJhbmNoCisyNDMwMCAxNDVmYWYyOThjZGNjMTMyNGNlY2JlYmQ1ZGIyMzYxNWNmNmI0N2Q4IHIyMmIyLWJyYW5jaAorMjQzMDEgOTRjODU4ZmVhZTdmODg2MTBjZjNlMzI3YzA3MjY0MWE4N2IzMTc0MSByMjJiMi1icmFuY2gKKzI0MzAyIGM1MmJiODYyZDBmNzczNTRkYTdjNGRhZjQ3YzkzODA2ZmE1MDk5MGIgcjIyYjItYnJhbmNoCisyNDMwMyAzMGE0MDgwYmMzMGI1OTFkY2NiYTgzMTNkYmFkYWFmNzQ3MDNiY2I2IGxlZ2FjeS10cnVuaworMjQzMDQgNGE5YTljYzA0MWRlY2U2YTE5ZTFkMDhiMDBjOGNmMDc0MWVmY2ZjOSBsZWdhY3ktdHJ1bmsKKzI0MzA1IGZlMjkzMjdlNDcxY2UyZTZmNGYxYzU0ZDFmMTUxZTdhODY3MWQ3NzMgbGVnYWN5LXRydW5rCisyNDMwNiA4YzMyMTlhNGRjZDZkZWI2MTlhODVjNmI3MDc0NzE4NThjNjhiZTEyIGxlZ2FjeS10cnVuaworMjQzMDcgNDFiOGQ2NjczMGQ2MWY0YTFhNjBlYTk5NWI0NDE5MDEyY2ZiZTgzYSBsZWdhY3ktdHJ1bmsKKzI0MzA4IDMzZWI2M2I4NmExOTM2ZWU0NzQ4Y2VhMmZjNzIxNWI1MjViMDQ3MGEgbGVnYWN5LXRydW5rCisyNDMwOSA0OWRjMTQ0YTE1NTU3YzE3ZTZhOTE1NzNjOTRkYjE2ZmY2NzAzMWEzIGxlZ2FjeS10cnVuaworMjQzMTAgNTdjNzkxYTVmODFjNzU4NzJiZWRiZTRiZDAzMTlmNzFlZjMwNTY3NyBsZWdhY3ktdHJ1bmsKKzI0MzExIDJiNjUwYzIxYTU2MzhkNThmYWRlODcwNGI2NzI3OGVjYzU1Y2NjYjMgbGVnYWN5LXRydW5rCisyNDMxMiA0MjM2NWI3MGU5ZDhiOGU0ZWI1MDRiMzA1MGY0MDY3NDYyMGQ5YmY0IGxlZ2FjeS10cnVuaworMjQzMTMgZjRkOWZhMjA3ZTQwZTViMGViYWRlZTcyNjQ4YTBkMzUxZTU5NTg3NCByMjJiMi1icmFuY2gKKzI0MzE0IDYyYzYzYmE5MGRmMjEwYmEzNjBhOGY5NzVmNjYxODE1ZTgzZTk3N2YgcmVsZWFzZTIxLW1haW50CisyNDMxNSAwZjQwODI2MWIzYzhiN2FhYmFjMWQzOWIyNTVkNjlkNTlmMGQyODlmIGxlZ2FjeS10cnVuaworMjQzMTYgYTk2NTM4MTE3MzFhMDAzYmE0ODAxY2NhMmQ3MDNiYzkxMzBkZWMyMCBsZWdhY3ktdHJ1bmsKKzI0MzE3IDlmNjZhYWRkZjhkNDBiZjFhMzgyMWYyYWQxOTFmOWRjMzg3ZjhlNmMgbGVnYWN5LXRydW5rCisyNDMxOCA3ZWJjM2UyOTgzZDExYjJkNWZhM2NjNTY1NDlkOWZhOTgwYzU5OGUzIGxlZ2FjeS10cnVuaworMjQzMTkgMWRhZWJmZjE3N2VmMTM3N2UxY2I5OTBlMzJmYmQwMWY5ZmNlOTU4OCBsZWdhY3ktdHJ1bmsKKzI0MzIwIGY5NTdkMzk2Yzg0ZTcxZGYyMjdiZWY3MzBjNjIxMjhlMmFhZTU4ZWUgbGVnYWN5LXRydW5rCisyNDMyMSBlNzlmYzI1N2JjYTBlNmVkMTA3ODFiMDdiYTgzNzc2NjE2Y2E2NGVhIGxlZ2FjeS10cnVuaworMjQzMjIgZGVlMGU4NjY2NTNlNmU0MWI1ZjY1MWEyMDkyMjM5MGViZGQ5OGIwZCBsZWdhY3ktdHJ1bmsKKzI0MzIzIDNkZmJiZjQyYmYxNmFlOTdmYmJkMmE0NmVmMTNiMTliMGZmMGM1ZWIgbGVnYWN5LXRydW5rCisyNDMyNCAxZWU3NWJkNGVlMzQ2OGQ1MTdiYzUxNzViYzdkZjYxNTg4ZjdhODM2IHIyMmIyLWJyYW5jaAorMjQzMjUgMTA5ZWQ2OTY0ODMyYWRmODdjOWIwNGRjNDU2MDYyZjcxZTAxYzRlYyByMjJiMi1icmFuY2gKKzI0MzI2IGJkMmU4OWQ3N2Q0NWFkZjE3YmUwN2Y4ZDUxMjgxMmYzN2FlNGI2MTUgcjIyYjItYnJhbmNoCisyNDMyNyA0YzgzMjg3OGRlNzRlYjcyMWE1ZjZjZWZkYzE2YjlhYjRkNDI1ZDBiIHIyMmIyLWJyYW5jaAorMjQzMjggZTNlM2NkNDdiYWQ1ZmQzODNiYzU4YmIyMjU4OTI1ODI4YWY3NDEyOCByMjJiMi1icmFuY2gKKzI0MzI5IGQyMTAyOGQ1Y2M4NTI4YzQ2NWQ3OGQ2NmUyNmVjZjQ0YjEwMTg3MzEgcjIyYjItYnJhbmNoCisyNDMzMCA0ODI2MGIwYjUyNmY2OWExNWExZDQ3MGQ3ZGM3NmQxZWZlYTU3N2I0IHIyMmIyLWJyYW5jaAorMjQzMzEgZWUyNGJkMGNhZDI5MDNiMTA4NGFmMGIxODMzNjk0NDNmNzM5ZTY3ZiByZWxlYXNlMjEtbWFpbnQKKzI0MzMyIGM3ZTgzM2IzY2Q5YzVhYWEyZmVmNWRkMmNiNTIzYjM2ZDg5ZmYxNzggcmVsZWFzZTIxLW1haW50CisyNDMzMyA5NzQ2MjE5ODEzZjk5NzkyN2VlZGMyN2FkZWVjNTUwZTY1ODkyYzFlIHJlbGVhc2UyMS1tYWludAorMjQzMzQgMTFjYjNkZTA4MjNkYThlYzI4YjhlMjU2NDJkNTcxNTk1ODc5ZDIyMiByZWxlYXNlMjEtbWFpbnQKKzI0MzM1IDIyMzk1MzA2OWExYTA5ZjAyOTZhZjJhOWRhZjEwZWQzNjkxMDQwMjkgcmVsZWFzZTIxLW1haW50CisyNDMzNiAzZmMwNmMxMTQ5YTQzZGIyZjg2NmE3NTM5ZWU3YWY5Y2IwYjkzYWMzIHJlbGVhc2UyMS1tYWludAorMjQzMzcgYzQ0OTk1OTZiMWE0MGZkOGJjZjFkODk2Nzg4NzA4ODI3NGI4ZGI2MSBsZWdhY3ktdHJ1bmsKKzI0MzM4IDFjZjc3ZGY5NWY0NTI1Mzg5NzY1OTNlNGY5YjdlZTgxYzMyN2RjOGEgbGVnYWN5LXRydW5rCisyNDMzOSA1OTgxZGZkZGE4NTcwYjYxNzIzZWQ4OGY5OTE5ODkzMjMwOWJjNjdmIHJlbGVhc2UyMS1tYWludAorMjQzNDAgYWZiNzg5YWFkYTE2ZmQ4ZGE2ZmQ0MmQ5M2U0YmQ2ZWFlODFjZjYxMyBsZWdhY3ktdHJ1bmsKKzI0MzQxIDc3OGU2YTgwZmNlZTRmNTVmZjQzNjZkODhhZGNmZGMzMjk1NmI0MTYgbGVnYWN5LXRydW5rCisyNDM0MiBjM2U2ZTYzZDliYTJkODI5ZjAxY2M2ODYzOTRhMThiYjhmZjY5MTY1IGxlZ2FjeS10cnVuaworMjQzNDMgZTVjZjc0Zjc5MTY3OWJhZTE1ZWEzNDM0MjY3ZTE0ZGQzMTQ4MzRlNiBsZWdhY3ktdHJ1bmsKKzI0MzQ0IDA4NDZiNGUyNTE3ZGYwMjhiY2EyYTRiNmQyYTAwMmU4ZmUxMTkyNTYgbGVnYWN5LXRydW5rCisyNDM0NSA3MGI0MzA2ZjQ4OGRiMTQ2MGVhMTAwOTdhZjc4MWU0ZjViMWYyZGI5IGxlZ2FjeS10cnVuaworMjQzNDYgYjNkNjI3ZWUyYjczZmUxYzA1ZjcwNjFhMzJiOTY1YThmZDc2ZjYzMiBsZWdhY3ktdHJ1bmsKKzI0MzQ3IGU2ZWFmOTU3ZWEyNmY3MTY0ZGZiNmQwYWQwNGMwNjI0NmU4ODhiNzQgbGVnYWN5LXRydW5rCisyNDM0OCBiMTE0YjEwMDc0MThlZTJlMTBkMTQxNmMwZjFhMjBkNzYzY2U0Yjk1IGxlZ2FjeS10cnVuaworMjQzNDkgODgxZjQ5YmVmY2EzYzAxYTA0YmE5OGNjNmQwN2ExZDJhNDUyMDI4ZCBsZWdhY3ktdHJ1bmsKKzI0MzUwIGNkMGI3NWIxOWRmN2Q4MjYyNzgyYWE1NTcxNThjYWIwMzUxZjAwNDEgbGVnYWN5LXRydW5rCisyNDM1MSBmZWQ1MDcxZGE5NTc1ZDRkNjk0NDVmNDhjMzAyMWU0MTFlNmFmMjQ2IGxlZ2FjeS10cnVuaworMjQzNTIgN2NhNWE0ODFjMGQxNzk1NTY5NjNjZDJkZWM1NTZlZjU3YWM4NDdhOSBsZWdhY3ktdHJ1bmsKKzI0MzUzIDFhZTJhZmU2NzVmZGE3YmNjNTEwY2Q5NmNjZjllYzUwNGM3NjMxNjQgbGVnYWN5LXRydW5rCisyNDM1NCBkYTM4OGUxZDQwNGJmYjgzZjU5MTAzYmYyOGM2NjJlZGNjMzc3MGI5IGxlZ2FjeS10cnVuaworMjQzNTUgYjdmMzhlNzY1MTQ3OTMzOTM1YWFkZWM2YTA1YWVjZGFkYWY3NDJkNiBsZWdhY3ktdHJ1bmsKKzI0MzU2IGJjYmRhNjA2ZDhjNzU3MThiNDAyODNjN2M1Zjk4MWMxNjBkY2NiNmEgbGVnYWN5LXRydW5rCisyNDM1NyBkNDU2OTFhNjk4N2ZlOTY3YTA1ZmJiY2YxYjdmMDk3YzQ5MGNmMzM4IGxlZ2FjeS10cnVuaworMjQzNTggYmFjOTQyZTY4NWZhZDJkYmJkMjBkOWY2M2FlODE5YjA0MmM4MzdkYSByMjJiMi1icmFuY2gKKzI0MzU5IDM2Yzg5N2JjZjRkN2U2OTQyNDAxMTM4NjIzZWYzYzM5Zjk5MTJlYmEgcjIyYjItYnJhbmNoCisyNDM2MCBmOGZkYmZhOGQ1ZjNiODJmZWE5OWY5NWViNzk5Zjg3ZDg3MmQ4NjM2IGxlZ2FjeS10cnVuaworMjQzNjEgMmMwYTlhNTA4NmUxMGI5OWYwNDFkMGIwYWNhMmRiNmNjMWRkZDQ3MyBsZWdhY3ktdHJ1bmsKKzI0MzYyIDlkZjgyYzEzYzY3NWYwNzQwMDJkMDI4MzJiZmFkOTkxMzU5NzY2ZGUgbGVnYWN5LXRydW5rCisyNDM2MyBlNzYzMDZlZWEzNzA5NzUwZGI1NzY4MzVlYWM1YjY3ZDIxYzQyZmZiIGxlZ2FjeS10cnVuaworMjQzNjQgNTk3ZDEwY2Y3OTM4ZTliYjI2NTk3ZTMzNmY1YWVmMjZkM2Q2ZTE2OCBsZWdhY3ktdHJ1bmsKKzI0MzY1IDE4MDJhOWVkYjRlZWY0ZDhlNjBlZmQ4ZTE3NTljOTQwMGFlYjA3MjcgbGVnYWN5LXRydW5rCisyNDM2NiBiYzAyYzNiMDk2MjZhMDQ1ZjY2YjQ3OTBkMmM5Zjc3YzY2ZGU0OTllIGxlZ2FjeS10cnVuaworMjQzNjcgZjE4NzQ5NmZmYWVmOWQyMWZjMjYzODkwZTlhNTk3ZTg5M2U5Yzc5MyBsZWdhY3ktdHJ1bmsKKzI0MzY4IGEyZDc4ZTIxYTc4NTdlMTZlYzA3ZTQwNjk3MTAxMDQyNWMwMmJiNjEgbGVnYWN5LXRydW5rCisyNDM2OSA1MGNmYmRkYzYwMzdlOTc1MWU4ZTE5N2VhNDc5YTdjMTYyZGQzMzBjIGxlZ2FjeS10cnVuaworMjQzNzAgMjI1YzdkZDE3ZTM3MjY3OTQzZDNkNzNhY2U0NDAyN2JjM2E5YTgwYSBsZWdhY3ktdHJ1bmsKKzI0MzcxIGM5YzRjNTIzZGNiZjEyOGQ3YTY1YWI3OWFiZDcyYjJkMTRlN2NjOGQgbGVnYWN5LXRydW5rCisyNDM3MiA5YjA1OWYxYjJhMWYwNTY5OThmOTk4NjUxMjdjMzEwMmRjMDFhMmQ0IGxlZ2FjeS10cnVuaworMjQzNzMgN2QzYTIxMWVmMjMzNjk5ZmVkYWY0OWFkOTA5NzI0ZDg4NjJhYTE5YyBsZWdhY3ktdHJ1bmsKKzI0Mzc0IGJhNjdiOWM5N2I2OTZiZjYyNTVkNWIzOWIwYzJmNWEwNzVhNTlhZTUgbGVnYWN5LXRydW5rCisyNDM3NSA2MzkyZjAzMjIyZTAxMGU4MDMzODY3MjhhNzlmZGE4NjhmMzc1ODJlIGxlZ2FjeS10cnVuaworMjQzNzYgNjM5YzBhM2FlOGRjYjQ1ZGExNjFmMmQ4MGVjZDhkMjc5MTAxNmQ2YiBsZWdhY3ktdHJ1bmsKKzI0Mzc3IDMwNGIzNDAyMzg3NjkyMGY1NzA0NjVjMjg2MmJlZDQwNmY0MmM2YzAgbGVnYWN5LXRydW5rCisyNDM3OCA0N2VhNzNmZDdlNmJhMzBjYjk4NmIwMTM3OTE0ZDczNzkwMmE2MDNhIGxlZ2FjeS10cnVuaworMjQzNzkgZGM2NDFlMTI1NmY5YzRkZTgwNzI3ZWY2ZDI1ZGMzMDAyMDllODBmOSBsZWdhY3ktdHJ1bmsKKzI0MzgwIGM1ZmJlOTJlMDJkM2ExNTcwMGM5ZjQ5YzRlZDhhMjliMzZkZjhhNGUgbGVnYWN5LXRydW5rCisyNDM4MSAzNzlmYzY2ZjRjOTZkMGExZjdjMTc2ZjliZWRkMTBjZDczNWI2ZDJmIGxlZ2FjeS10cnVuaworMjQzODIgMDI1YWQyN2Q0MjI0ZjQ1NzI0NTEzNGZjYzliYWVlMGIzODZjZTZhNSBsZWdhY3ktdHJ1bmsKKzI0MzgzIDhjZWY3NWNhY2IwMTYwNGNkZjAwMDBhZGZlYjY2OGM2NzFkNDk4NWEgbGVnYWN5LXRydW5rCisyNDM4NCA1YjQ1OTY3N2ZjNDQ0ZmM5YjBjMDNiYmI5NmRkNTBhYjE4YTBkMTk5IGxlZ2FjeS10cnVuaworMjQzODUgOTRmNWE5ZmEzNTgzNDc1MDgxNGQxNjI5ZDY3ZDQzZGFlYmQ5NDBiMyBsZWdhY3ktdHJ1bmsKKzI0Mzg2IGM4ZDc3NWI5ZmY5MmE5YmI5Mzk1ZDUwYjZhZjZmYTIxNjg2ZGE0MzAgbGVnYWN5LXRydW5rCisyNDM4NyBkM2I2NDAxY2EyNzNiNWU0YzhlY2RhM2FhOTM3NzU4OWZiODA0MzMxIGxlZ2FjeS10cnVuaworMjQzODggNTJjZTg4N2RiM2M5MzFhNjM4ZTFhZjVmY2E1YzIzZThmNzk3OGYzZCBsZWdhY3ktdHJ1bmsKKzI0Mzg5IDNlYjI0ZjRjODhkNWIxOWNmZWE0ZjhkZWVjOWJmMTQ0NGFlZmIzYjUgbGVnYWN5LXRydW5rCisyNDM5MCBlYTViMGYwYjcxNmYyNTQ4NDMyNjhhOTI3YTI4NGM3NDc2NDRkMWI4IGxlZ2FjeS10cnVuaworMjQzOTEgNDFlYTJhYmI3NGZiMzljMWJjNzc3YjZlZjdhOGFiMTk2OGU1N2Q5MiBsZWdhY3ktdHJ1bmsKKzI0MzkyIDM0N2VhNjkzMDAyZDUyYjg5ZTMxMGQwYjQ1ODYwZjNiMTNmYjRiNTMgbGVnYWN5LXRydW5rCisyNDM5MyBkOTVhNGVjNjg1ZTBlMzhhMzk3NGVlY2JhNjlkNTA1YTIxNmE0OTkxIGxlZ2FjeS10cnVuaworMjQzOTQgNWUyNWM2Njk3NDFjZjkxMWExZGFhOTExNjFiNTU3YjRmMzdjMmE5MyBsZWdhY3ktdHJ1bmsKKzI0Mzk1IDQ3ZjY1MzM2NzRmZGEyZGI2MjZiZGZiNjM3NDMzNzM1ODVhOTNjYmIgbGVnYWN5LXRydW5rCisyNDM5NiA1MzI3MGQyODFiZjA4M2JkOGQxNjRlMjg3NmQ0NDY0ZmE2MDlhZTViIGxlZ2FjeS10cnVuaworMjQzOTcgN2RlMTMzY2JiYWYxOGU4NjgzYTA0ODEzMjkxMTJhNDU2NGI0NWM4MCBsZWdhY3ktdHJ1bmsKKzI0Mzk4IGMyMTUwMzEzZDlkMTNlNmI1MjZlZWNiMWY1MmE0MGU0OWQzYjE4NjUgbGVnYWN5LXRydW5rCisyNDM5OSBiMTI4MGNiYTc5YjU5YWMzZjZiOWNkNGRmMWZjNDM0YjQ3ZDA5M2U3IGxlZ2FjeS10cnVuaworMjQ0MDAgY2RiNzBiZjg4ZGIxYThkMGJhNjAwZjQwMjQ2MmRhMTMzYmEwNjAwZCBsZWdhY3ktdHJ1bmsKKzI0NDAxIDliYTNjODI5NDZiODk2MWMxNzY3OWU2ZTAzZWI2OTdlY2Y4N2U0ZDAgbGVnYWN5LXRydW5rCisyNDQwMiA4MmQ4NDEzNjM2ZTc3OTBkNTVmOWY4ZmI4M2I0NDc1ZmUzZmI4ZWUwIGxlZ2FjeS10cnVuaworMjQ0MDMgODNmYzg4MzUwZjgwYTIyYjllY2FjNTc1YmRkMTExMTc3NDY5NWRiNyBsZWdhY3ktdHJ1bmsKKzI0NDA0IDBmZWFjNDVlZTY2MmVmZDA5ZTczMGM2NDgwMGMzZmU1MmU1Mjc0ZmYgbGVnYWN5LXRydW5rCisyNDQwNSAxODNmMjg1OTk3MzY2MzFkNTA5MjMwMzk4ZmIyNzEwMjUyMWY5MTE5IGxlZ2FjeS10cnVuaworMjQ0MDYgZDZjMTgzY2EwOTNjODAzYjQ2ZWU4NmI3MDRhOTYzYjlhMWEyYmZmNiBsZWdhY3ktdHJ1bmsKKzI0NDA3IGNlYzgwMDkzMWEzNzBkMjVjOTRhOWZhZTMzYThmZjM0ZjZlMjkxMjUgbGVnYWN5LXRydW5rCisyNDQwOCBlNDIyMDMxYjhmZDcwODYyZTA1Nzc0YTAzNjk4OTU0NjU3YjhlZGRhIGxlZ2FjeS10cnVuaworMjQ0MDkgNjc0NzEwNzBiOTY2ODNjMWYyZTVmMGYzZmI1ZmUwN2VjMjI5NDg3OSByMjJiMi1icmFuY2gKKzI0NDEwIDExNDc1ZGQ0NmZhNzYxMzI3MDQ3MjNlMzNlODgyYjE2NGY0NTQzYjMgcjIyYjItYnJhbmNoCisyNDQxMSAzNGZjNTIzODMxMGQzM2M0MDg1MzRlZWZhOGY3MjAyMTlkYzc0ZTlmIHIyMmIyLWJyYW5jaAorMjQ0MTIgZTlhMDFlMjRhNGE5NzRmNTRjMGI0YjhkYzFiMzU0Njk4ZGNhNzljYiByMjJiMi1icmFuY2gKKzI0NDEzIDYxODVhNjdiMzAxMjg0MDllOTUzODE3Y2Q5ZGUxOGQ1MmQwNWI1MzMgcjIyYjItYnJhbmNoCisyNDQxNCAwM2FlYTc1NzVhZmJhNmJmOTgyMGQxYmM0MzIzMDkwOTAwODJhZGIwIHIyMmIyLWJyYW5jaAorMjQ0MTUgYTcxOGJhOTkyZjEwNGFmM2Q5YWJlN2E5ZWE5NDViNmI5NGQ1NTFkMCByMjJiMi1icmFuY2gKKzI0NDE2IGJlMzlmYTU1NThjNTQ1ZGEzM2U5YzgzM2U0NTc1ZTFhYzk3ZGYwNTAgcjIyYjItYnJhbmNoCisyNDQxOCBkMTk1MTNlMjg5M2M5OWVmZTVlYmNiZjE1ZTUxNzZjNTA0YmMwYmMxIGxlZ2FjeS10cnVuaworMjQ0MTkgMzgyN2YxMzZlMGQ2ZTZhMGExOTU0YWEzOTI1YmU5ODI5YmJhYjJmYSBsZWdhY3ktdHJ1bmsKKzI0NDIwIDI3MTFmOGRiMTY0Y2ZhYjVlN2Q5NGRkZWY0Y2UyM2M5ZWUzYTNlMzIgbGVnYWN5LXRydW5rCisyNDQyMSAxMjY2OGQwYWY4ZjdmNTRmNzkyN2U4NjlhMmNkMDI4OTk1MDNmZTJjIGxlZ2FjeS10cnVuaworMjQ0MjIgMDUwOTUzOThmOTM5MmUyZTg3NGEzYWVjNjliOWRiNTU3MjYzYjYwZCBsZWdhY3ktdHJ1bmsKKzI0NDIzIGFmMWM1ZmI2YTcwMzkyYjMwZWM2MWExZjFhNjMxMzFhYzRjZTE5MGUgbGVnYWN5LXRydW5rCisyNDQyNCA4ZDBjMTA2ZDkwOTkyNjgxMWUzM2EwMzdlYjMzZjExNmIzNGIwNjIxIGxlZ2FjeS10cnVuaworMjQ0MjUgMzhkMGJkMGZhN2YyZTdiNzBiYjUzZTljOWU5NDUzMzk1YTU5ZDY0MiBsZWdhY3ktdHJ1bmsKKzI0NDI2IGVkM2RjZTE3ZmM3OWI3YTZjNmZmY2NjNmEyOWRjYzU1NTFiZTA2YzYgbGVnYWN5LXRydW5rCisyNDQyNyBmN2RiMmMwYTMwZmNlOGQ1OTczYzIwZThiMTg0ZGQ5ZTBjNzEzN2I3IGxlZ2FjeS10cnVuaworMjQ0MjggMGVkNmZjN2MxYzA5M2QwNmNkMDhkNThmNDQzYTg5ZmI2YjMzMjI3ZSBsZWdhY3ktdHJ1bmsKKzI0NDI5IDBhNjc0NjNmOGI3ZDIyNTljOGZmMmZlMWU2MTZlNGU1ZTg4Y2E1YTkgbGVnYWN5LXRydW5rCisyNDQzMCBjZjc5NzAzMzQwNDE4ZmQ3NGQ5NDNjN2Q4MGYzMzZhYjk2N2Y2YTMzIGxlZ2FjeS10cnVuaworMjQ0MzEgMmU2Y2UzYTU2Mjg0YmZlY2E1YjhmN2E1YTYwMGMzNDRkODc4YjIxNiBsZWdhY3ktdHJ1bmsKKzI0NDMyIDQ5M2Y5MzJkNTgyOWIxZGM4YzE4MDJjMTE4MjQwZmZjNmNlZWZiMmYgbGVnYWN5LXRydW5rCisyNDQzMyA0Njg1MzA3Mzg0ZWIwZDdmZDMxYTA4NjBhOGM2NWQwMTY4MDVkYzAzIGxlZ2FjeS10cnVuaworMjQ0MzQgNjcxYTg0ODY2YWM5OTk2MzhlY2YwZWJkOGE2NjJlODc4NmFhMmUwMyBsZWdhY3ktdHJ1bmsKKzI0NDM1IDY4N2I4YzcxOTJhMWExNjZjMDZkNDdhYjcwZWM5ZmUxY2IwYjk1MDEgbGVnYWN5LXRydW5rCisyNDQzNiAyMTgyMDczMmExMTcxYmZjNjc0NmI3MmFkM2Y5ZmY0MDcxNzgyZTRkIGxlZ2FjeS10cnVuaworMjQ0MzcgMjFiYjRjNGI3ZTI2ZjUwODcwNmViNzhiNGZlNTQ4Y2Q1YWE5YWEzNCBsZWdhY3ktdHJ1bmsKKzI0NDM4IDE3ZTg3YWEzNzc5NjJjNTg2NGQ2YWQwOWY3MjQwZmI4MTAxNWY3MzQgbGVnYWN5LXRydW5rCisyNDQzOSA2YjZhOWNhZTI1NmVlMzFjMzRjZDg2NWRlYjMwMjE4MDhkYzI0YWEyIGxlZ2FjeS10cnVuaworMjQ0NDAgZGQyOGE0ZWNiMzdmNjA5Mzk0OTUxMGU5YmU0ZTM4OWY2ZGMyYWFhNyBsZWdhY3ktdHJ1bmsKKzI0NDQxIDE1ZmY1MDQ2MzJlZDZhOGU4MWQ3N2Y5MDFlM2E5ZGVkNTQxZTMxMzcgbGVnYWN5LXRydW5rCisyNDQ0MiBhMTNhNDM5M2Y0NWMwMWVhZWIwYzAyNTEzNmYxNGM1MDdkYWIzMjNlIGxlZ2FjeS10cnVuaworMjQ0NDMgNmUzNDE1MWFlZmU2NjMwNTNmMWJjZDI4ZmRlMDFhYzNmZDk3NzIyMyBsZWdhY3ktdHJ1bmsKKzI0NDQ0IDYwZTM2ZDUxODc1OGYxZTI5NGZjMTcyYjljZDJhNjZmYzBlNTYxMzMgbGVnYWN5LXRydW5rCisyNDQ0NSBhOWE4NzM0MWE5ZTdiMDZlY2QwNDhmZDQwNzA0ZDVkZDU1OTQ3ZmNkIGxlZ2FjeS10cnVuaworMjQ0NDYgZWM4OGZjNDMwMTI3NjExZTZhODgwZWJjYTlmNjBlNWY3NTQxZGY2NCBsZWdhY3ktdHJ1bmsKKzI0NDQ3IGFiZTE0YWM2MjAyNDIxMzc1NTM4N2Q2MmMxZDA5MDk2NDg2NWNhYzMgbGVnYWN5LXRydW5rCisyNDQ0OCA5NDM2MzliOTQ0YWI0ZWUzMmIzM2Q5NGZiMTVlMGI3ZDhkODgzMjg0IGxlZ2FjeS10cnVuaworMjQ0NDkgMTk3YTkwNDg5YmVlZDljNWRhZDU0NzBmZjE1YzVmMGM4YWYwMWE2NSBsZWdhY3ktdHJ1bmsKKzI0NDUwIDViOGYwN2U2Mzk5YzFlNjcwMmU5ZGE0MjM1MTU5ZjE2OGJhYTk3N2QgbGVnYWN5LXRydW5rCisyNDQ1MSBhMmQwM2NlYmE4MGViZmE2MjVjYzJhNDU3ZThmMTA0NTA3ZjNlYjA1IGxlZ2FjeS10cnVuaworMjQ0NTIgNjc1MDhhMzUxYWEyYmZiYjYyNzkwNDBiZjA3OGY5N2QxMWIyMDkyYSBsZWdhY3ktdHJ1bmsKKzI0NDUzIDFjNmMwMjdmZDExMGJmOWI1ZTNmNGY0OWEyOTJlZjQ4YmM2NTBlOGYgbGVnYWN5LXRydW5rCisyNDQ1NCA1MWI0NTcyY2YwMTNkMWE2YzhjNzk2YjE4ZTIwZjU2Yjg1OWU3MzUwIGxlZ2FjeS10cnVuaworMjQ0NTUgODQyYjI4MDQyMWJhNjFlY2Q0YTE5YWRiZmMwOTFiNzA2ZDJlNzY0MCBsZWdhY3ktdHJ1bmsKKzI0NDU2IDcyOTY2YzlkZjlhOTk4N2VjYzYzMTQzYjIyOThhNDU5NTk3ZjRiMDEgbGVnYWN5LXRydW5rCisyNDQ1NyA5NmEwOGZkMzhlZjgxMjU5OGQ0NThmZjhhMzc0MTg0ZjM1YmI5MTljIGxlZ2FjeS10cnVuaworMjQ0NTggODdmYTZlOWJkNzdlYzNjN2JkNjE4MTNkZDZjNTMyYzdiMjU2Y2MwMSBsZWdhY3ktdHJ1bmsKKzI0NDU5IDM0ZmU3NDMzNTI2YmE0Nzg1YmE2ZTIwNmYwMjg0OGZhYjcyODFlNDEgbGVnYWN5LXRydW5rCisyNDQ2MCA5MGEwZDgwMDMzYjRmNzAzNDZiZmY5NjBmZTc3YjBlYjk5NjllYzg1IGxlZ2FjeS10cnVuaworMjQ0NjEgZDQ1MDljZjkzZjUwZjkyYzBhNjcyYjMxODdkM2NmOGE0MTg4ZWZlNCBsZWdhY3ktdHJ1bmsKKzI0NDYyIDhlNzI0NTQ2MGQzMGJmZjQ5ZThkNzUxZTE2YTVmYTI0ZmRlY2U1MDQgbGVnYWN5LXRydW5rCisyNDQ2MyAwZGQxNmZkMzZlZThlNWM0YjkxNTU1Yzc2ZjQ1NzBjY2VkMGJiZGQ1IGxlZ2FjeS10cnVuaworMjQ0NjQgOTE4YjU3MzU0ZDg3NDhiOTczNGQxM2MyYTQ0Mjg1NGEyZDBlOTk0NiBsZWdhY3ktdHJ1bmsKKzI0NDY1IGJlNWY1Mjk2MmFkYjM0ZDJkNTNjYTFhMGIyN2RiZTZlMGI3NmI5NjEgbGVnYWN5LXRydW5rCisyNDQ2NiAxMWE5NjllMmZhNTA1MzU2YjBmMDZkM2QwZGNmZDBiNGNhMzkzMTYxIGxlZ2FjeS10cnVuaworMjQ0NjcgYTIwYjM3MmZiOTM5YzIyMDg0MTA4ZWE1YTAyMWNjOWI0MzBjZjUyYSBsZWdhY3ktdHJ1bmsKKzI0NDY4IGJjYTUzYTM3YThhNWFmZTI0OTk4NmUwOTI5NjYwZDI2ZTdlOTI1MWUgbGVnYWN5LXRydW5rCisyNDQ2OSA5ZmVjYmE1MjY5MzY3YWViOTNjYTc1NWFmODFhODVjOTA0NTE0ZWI3IGxlZ2FjeS10cnVuaworMjQ0NzAgZTU5MjQ3MmQ1NWEzOGYwYmRkNDg4ZGExZWQzOTVlOTM0MWMwNTIxOCBsZWdhY3ktdHJ1bmsKKzI0NDcxIDFhY2M0YmE3M2I5ZDE2MTc3YzM2ZDcxNzVlY2MwZjdjZWQ5MDhkOTQgbGVnYWN5LXRydW5rCisyNDQ3MiA2ZmE5NmIzMjllMTVlZTFjMDVkZjc5M2I2ZGVlYzA0MDczNzdkM2RhIGxlZ2FjeS10cnVuaworMjQ0NzMgNzMzODRlMTNiZDJhZTExMmJlNDZkY2E1YThiMTFmZTg5YzA4MDQ4NyBsZWdhY3ktdHJ1bmsKKzI0NDc0IDk0M2NhODFhZDFkZjNmNTM5OTczMzNmOGI1ZGEzYzA4NTk1NmEzMGQgbGVnYWN5LXRydW5rCisyNDQ3NSBlMWE2N2JlNmM2ZTQwYTNlMGI2NWYyNGJjZjNhMWQ0YTYyMTRjMzAxIGxlZ2FjeS10cnVuaworMjQ0NzYgN2I2ODc5NzE0Yjc0NjZlNDQ5ZjE3YTI3MzM2ZWJjY2RiZjQ3ZWY0ZSBsZWdhY3ktdHJ1bmsKKzI0NDc3IDIxYWM1NWZiMmRkOGM4MmFkMjBmY2Y2YzFjYThjZDkzZDg0ODE3MGUgbGVnYWN5LXRydW5rCisyNDQ3OCBjZmU0MDdlNGQ4YzAxNWRhNjRiMTg3OGVhNmIyOWJjOTRlOGRmMmE2IGxlZ2FjeS10cnVuaworMjQ0NzkgMGI0YWViNDEzZDdkZjczMGE4ODE2ZWU4MzYwYjBhMTgwMmYxYWVmOSBsZWdhY3ktdHJ1bmsKKzI0NDgwIGZkNDJlYWNlNTBlYTVkYWI0Njc2MzRiZjFmNzg1ZjVhZWE4NzI3N2MgbGVnYWN5LXRydW5rCisyNDQ4MSA0NzVjODI3MWUwNTdlOWZlOGE2Njg0ZTRlN2UwZDgyMDkzMDZhOWRiIGxlZ2FjeS10cnVuaworMjQ0ODIgODkwNWU2NzI1Y2ExYjNhODMwODE3YmYwNWIzNzkwOGVkMWM3NDc0OCBsZWdhY3ktdHJ1bmsKKzI0NDgzIDJkZmM2MDBmOTljZWU2ZDYyMWE3OWRmZjIxYTE1ZjFhZjdmMzExYTggbGVnYWN5LXRydW5rCisyNDQ4NCAyNDU4Y2JjYzFkZDM3NjVlNmY2Y2U1YjgzMmM5YTcyZDZmZGI0YzcwIGxlZ2FjeS10cnVuaworMjQ0ODUgZGYyZmZiMGNkNmJiYTYwYjIyY2I4Yjg1MDVjODkzMDQ0ZjFhZDc2MiBsZWdhY3ktdHJ1bmsKKzI0NDg2IDBiNmExOGM2ZTU5ZWM0NTA4NTZhYzZkMWJiNTlmOGVjNjkxNWM5MTUgbGVnYWN5LXRydW5rCisyNDQ4NyA3ODkyOTJjZjA5MTRjNDM2M2Q0MTQ2ZTRjNmIxMDk3MjE1ZjJmNTZjIGxlZ2FjeS10cnVuaworMjQ0ODggYzlhNzk2NDAwYTUxYzUxNDg3YzI3MWUzMzU0MTk1NmM3ZThmMWE3OSBsZWdhY3ktdHJ1bmsKKzI0NDg5IGQ0Y2MwNWY2ZTE4MzlkMzBmNGRiMGJhOTgxOWI1MTc3MGE5ZDI4OGUgbGVnYWN5LXRydW5rCisyNDQ5MCA3ZDFlYWM0MWNlM2VjZmUwYWUyY2ZkNDkyNzEyYzhmOGY1NGE3MzZiIGxlZ2FjeS10cnVuaworMjQ0OTEgYmM1MWRlNjQzYjVlNThjYWNmM2ViMTY3Y2NlOTQ3MTRlY2ZhYzgwYyBsZWdhY3ktdHJ1bmsKKzI0NDkyIDQ4NTQyMjkwMGVmMDc5YzIxN2ZjNzVkZmIzZmI3MTdmNTk5ZTYxNjAgbGVnYWN5LXRydW5rCisyNDQ5MyAwZmJjOTI4OWE0YzdjZTQwMzliYzRmMTJjZDQ4MGM4YzdmNTJhZTRkIGxlZ2FjeS10cnVuaworMjQ0OTQgOTQ0ZDZlMDJmMzU5MTc3ODNiNGNiOGIzNjU1ZDZjMGUzNDc5Y2EzOCBsZWdhY3ktdHJ1bmsKKzI0NDk1IDQ3M2YyOTQxMWYzYjJlZDIzODczNTZkNzE2Mjk0OTgzZmVhODNhN2YgbGVnYWN5LXRydW5rCisyNDQ5NiBhYzEzNTdmZDFhZWExZjhhMTI0Y2Q4MjI2NWVjZTdhZmU5NGJkMTY5IGxlZ2FjeS10cnVuaworMjQ0OTcgYzJiZmZhNjcyYjc1OWJmOWFmMzc1MzMzMWY3ZGVlNmU5ODEyYjk2YiBsZWdhY3ktdHJ1bmsKKzI0NDk4IGFlYmNlNDg1YjU2YjljYjUwNTlhYTY4YWJjMWE3MTg5ZTBmZWEyZDcgbGVnYWN5LXRydW5rCisyNDQ5OSAwMTg5MTg2ZjRlZDkxODIyOTFmZTc0MDc3ZDc4Y2RiOTExNTkwYzFkIGxlZ2FjeS10cnVuaworMjQ1MDAgZWY2ZjY5MmM3NmUyMmE5YmVmMWU3ODNkM2E5YTkwNGQxOTY4YmFiNiBsZWdhY3ktdHJ1bmsKKzI0NTAxIDA4ZjIxYTUzNzRkOWE5ZmI5YzlhYjI0ZWJjYjk0YzNhZTIzZDYyZDUgbGVnYWN5LXRydW5rCisyNDUwMiBhNjIzZjljZjk1MzU0MjMxYTJkY2JiYzI1YjBjMGQyNzNhYzg0ZDlmIGxlZ2FjeS10cnVuaworMjQ1MDMgNmE3M2Q1OGUxNzQ3MjJmMjlmOGUxNGFjOGJlM2QwMGYyYTk5N2U2OCBsZWdhY3ktdHJ1bmsKKzI0NTA0IDMzYzhkMzM1YTJjNDM3NzYyZThhN2MxYTA3MWI0YmVlYjMzMzdhNTAgbGVnYWN5LXRydW5rCisyNDUwNSBjMThhZDUyZGVjZTM1YzM4MWNkYzhkYWM0OGMwMzliYzFhNmU3YzMwIGxlZ2FjeS10cnVuaworMjQ1MDYgNDI2YzBkMjRkZWJkOGE1OGVlN2I2MTZkMDUxN2QzZjcyYjI2ZWE1YyBsZWdhY3ktdHJ1bmsKKzI0NTA3IDE1MTlkNmZhYWIxNTk0MDQ1ZWRhNTdlMzdjNTcwMTk1ZjM0YjQyNjAgbGVnYWN5LXRydW5rCisyNDUwOCA1YjNiMjkyNDc1NzM1YTk4ZmRjZjE4ZTcwZmY2NDBiYzA5YWY1MDNkIGxlZ2FjeS10cnVuaworMjQ1MDkgOTIwOTAyZjVhODg0YzA5ZjQ1YThkMDEyZjQ5ZTVkZmZhMTYwNDhkMSBsZWdhY3ktdHJ1bmsKKzI0NTEwIGFkN2I0NDI0YWFiNmYzYjMzYjRhMzQ4NzRiN2Q2NDE1NGE3YjcxYTcgbGVnYWN5LXRydW5rCisyNDUxMSBmMTdhMzdkZTYyODVhYTUxZGRlYWE5M2FjNThiNjhjMTA0OGQ3NjRlIGxlZ2FjeS10cnVuaworMjQ1MTIgNjA0MTViZjVmOGYyYTQ2NjFlMDlmOWZhNWJjNTg0ZTA3OWFjZTdjMiBsZWdhY3ktdHJ1bmsKKzI0NTEzIDk0NzkzMTM5MjY5NGVkMzlhMzJhOWZiMzVmMzdlMmUxZDkwZTJlNzAgbGVnYWN5LXRydW5rCisyNDUxNCBkYjliNTk3NjgyOWU0NDdjM2EzNmYzZmE5N2EyZWRjM2UzNjU2ZDU3IGxlZ2FjeS10cnVuaworMjQ1MTUgYzg0ZGY4NDg2MTYzNjZmN2FmYjg3NjQxMDg4ZWI4Yjc2MWMyNTdkNyBsZWdhY3ktdHJ1bmsKKzI0NTE2IGQ5NWViN2VjNDU1MzU0MmI1OGVhYTJjMTUyNWNjNGY3Y2U4ZTVmYTggbGVnYWN5LXRydW5rCisyNDUxNyBmNzllNDcxOWRiOTY0NWY1YzM4MDg1OTZlZTQ4YTJjYTE5OTk3ODYwIGxlZ2FjeS10cnVuaworMjQ1MTggODY0Y2M1OTNiZGRhMjc3ZGY5Nzk5ZjQwMTkzMmU3ODNlNzBlNmVmMiBsZWdhY3ktdHJ1bmsKKzI0NTE5IDgxOTI4YzlkNzAxMTdlZWQ2ZDNhMmM0MjAyYTNmN2EzMzFkNGRjNGYgbGVnYWN5LXRydW5rCisyNDUyMCBiY2Y2NjZlODgzMTIxZDJiN2UzN2U3MTUzZGMwYzBlMTc2NjEzZjdhIGxlZ2FjeS10cnVuaworMjQ1MjEgZWFkMWZhMjY5NTAyYTFjZTZmYjRmZDNiNThkMThkNTdlOGYwYThhNSByZWxlYXNlMjEtbWFpbnQKKzI0NTIyIGQ4MjY1YTBjM2NmMDI4OGE2ZDIxZTllZGI5YzUwNTU1ZjM3Y2Q1NzkgcmVsZWFzZTIxLW1haW50CisyNDUyMyAyZDIxNjUwZjQ2Zjg5ZDJlYTBmYzViZGE2NmI3YmFkNTcxZDQ1MTVkIHJlbGVhc2UyMS1tYWludAorMjQ1MjQgMTUxYjY5NjdiZDIxMGIyYzEyY2U1YjFkN2Y4ZDlmMjgxZDY4NWIwMSByZWxlYXNlMjEtbWFpbnQKKzI0NTI1IDY3MDlhZDRmZTc1ZWM4ZTU1OGM2ZWVhOWYxYmNmOTUzNDQ3NThkZGUgcmVsZWFzZTIxLW1haW50CisyNDUyNiAzYjA5ZWE3MjNlY2U3MjJlOTFjODAzOTI5ZGUxZDY1MWYwMmY3MGU5IGxlZ2FjeS10cnVuaworMjQ1MjcgZDI2ZTY1OTUwNzQwMmMzNzZkMjhjNWUzYWM3NGQ1MDQzZGY1ODE1MCByZWxlYXNlMjEtbWFpbnQKKzI0NTI4IDE5OGFlYmUxMjM5OThkOTY1ZDdhYWFmYjUxNjIxOGVkMTdlNGYyMzQgbGVnYWN5LXRydW5rCisyNDUyOSBhMzlhZjgwMGI5YTNlZDlmNDdlNTE0ZjYwZDBiZGY5YzJjODM5Yzk4IHJlbGVhc2UyMS1tYWludAorMjQ1MzAgMTQ4ZmZkOTU3NjE4ZDMyZWFlMDk0YmQ5OThkZDQzNTZhYjA5YWIyMyByZWxlYXNlMjEtbWFpbnQKKzI0NTMxIDY1NmM0Y2Y1MTY1ZmE4MGRjMzVhNjc2Nzg0Y2JjZTc0OTA4ZGYzY2IgbGVnYWN5LXRydW5rCisyNDUzMiA5MjA1Y2ZiNzcwOTQ2NjUwMDQxODA4MmQ5YjAxYTdmYmNlNDUxYmFiIHJlbGVhc2UyMS1tYWludAorMjQ1MzMgZDIyOTBlOTdkZTE4N2QzZGQ5NjRkM2JhYmFhMzUzNmM2OTg0MjE0NiByZWxlYXNlMjEtbWFpbnQKKzI0NTM0IDM0MzI3Y2Y0NTI5OTRhOGYwNWIzODZhZDk4ZDI0NjQyNDQ5ZjQ2NGIgcmVsZWFzZTIxLW1haW50CisyNDUzNSAyMmQ4MjE2NzNlNTI2N2ExMzM1ZDg4ZTIzY2EyODgyMTUzYTA5NmY2IHJlbGVhc2UyMS1tYWludAorMjQ1MzYgMDJkMDE3MDM5Nzg4NWM2ZGU3NjU3OGQ3NTQwMDBiOGEyMWIzNDhhYSByZWxlYXNlMjEtbWFpbnQKKzI0NTM3IDRhZjMxODZlNjYzMTUxODgxNzBiMDdiMGJmMmI5NzFlZTI0NTNlOGIgbGVnYWN5LXRydW5rCisyNDUzOCA1YWIwZGM3ZjJlYjA0NjJmZmUzNDUxZTc4MGYxODk2NmMwNGM5MGU2IHJlbGVhc2UyMS1tYWludAorMjQ1MzkgOTViNDJmMTA1NWMyNGU3MGMxOTRiZmFiMGFjNjcyNTM3Mzc5MDYzNiByZWxlYXNlMjEtbWFpbnQKKzI0NTQwIDBiYzg4Mzg0MDdiYjU3OTZlODlhYmFmYWQ2ZWIxMzg2YmRmMGRiZjkgbGVnYWN5LXRydW5rCisyNDU0MSBhY2NiZTU2ODRhYzYxNGQ1ZWIzM2Q5OWMzOWY4MGYxMWIyYTIxN2ZlIHJlbGVhc2UyMS1tYWludAorMjQ1NDIgMDBlY2ZlMTlhOGQyOWZlYTQ0ZWRkMjkzODZjOWFhODMwMTdhZTlhMSByZWxlYXNlMjEtbWFpbnQKKzI0NTQzIDA2MGMzNzU4Nzk1MWIxYTg0MWM1MWE0MmFiOWFhYTgwZDY0ZTY4NDAgcmVsZWFzZTIxLW1haW50CisyNDU0NCBhM2QwMWEyMjUzMjk3M2RiNjEzMWNiZTE1N2ZjYWFhYTA2YjA4NDU5IHJlbGVhc2UyMS1tYWludAorMjQ1NDUgNDkzMDE5OGY5MmRiZjM2MzQxYzAyMDI3OGRhZTZkMmRkOTk1MDI1OSBsZWdhY3ktdHJ1bmsKKzI0NTQ2IDgwM2NjYmUzZWU3Y2FiNWMyMTgyOGEwY2RiNThjZTQ3M2U4Y2ExYjMgbGVnYWN5LXRydW5rCisyNDU0NyA5ZGM4N2U2MWI1YTJlMjJlZTIyOWUwMmNjOTlmNzFjYjliZGU2Yjc1IGxlZ2FjeS10cnVuaworMjQ1NDggYjc4MjQ5MGRhN2YwODIxODQyNjE0MGUwYjI1YzA4MThlYzczNGMwZCBsZWdhY3ktdHJ1bmsKKzI0NTQ5IDg5YTVjMTEwNmI4MmYxODA4NzIwZmI3OTU4Y2RlNTM5ZDlmZGMyYjYgbGVnYWN5LXRydW5rCisyNDU1MCA0MmQwODE5NTQ2ZDYwOWZiODJiOWJjMjYzNTg1ODRjN2IzZmVkOWQ0IGxlZ2FjeS10cnVuaworMjQ1NTEgM2U4NDYwZmIyZmJlNDlmODA3NmZlNTMxOGU3MDU3NDVlZTBhNTc3YyBsZWdhY3ktdHJ1bmsKKzI0NTUyIDlkNmZiY2I5NTBmOWIzNGE0ZGMxZGJjMWU0NTU4NzExNjNiZWQ2YWUgbGVnYWN5LXRydW5rCisyNDU1MyA1NGRkYzM3OWQ0ZmMyODk4MDI4OWMwMDA0MGJmZjk0OTA1NGI3YmRhIGxlZ2FjeS10cnVuaworMjQ1NTQgYWQ4NzY3NGRlM2ExYjNjNGVmZWUyNTYzYWQyNTc0MmVlZWZkNmRlZSBsZWdhY3ktdHJ1bmsKKzI0NTU1IDVjMGJhNmViYzYyZDBjZGI5MzI1MzYzNDUwYjYxYzFhMGEyYjAwMDcgbGVnYWN5LXRydW5rCisyNDU1NiAyMDM0OTAyYjBmMWFjODRhZmJiNWVlOTdjMTlmODJkYWRiMWVjN2M1IGxlZ2FjeS10cnVuaworMjQ1NTcgMTI4OWEwNTU5ZTVhNDRkZDFkMGM3ZTA3YTU0YmM3NWE0MTY1NGI4ZiBsZWdhY3ktdHJ1bmsKKzI0NTU4IGJhNmE3YTVjMzJlODcxNzMxYmZjN2Q1NjMwYmFlYzZkOTAwODE4NzYgbGVnYWN5LXRydW5rCisyNDU1OSBjYjkyMWQ0ODNlMDA5NDJlNDRmYzEyNjNjMTk5YmM0YzhkNWJhZTE3IGxlZ2FjeS10cnVuaworMjQ1NjAgYmExNjg1NmJmYmFiZDhkNGRlYTAxMjBmNmQ5MDBlOWQwNmVkNzIyZCBsZWdhY3ktdHJ1bmsKKzI0NTYxIDA2MmM2ZjQ3MTA2ZmJlMWFjZjRjODA4ZmMzMTQwMmRhNGI2MmFmMDMgbGVnYWN5LXRydW5rCisyNDU2MiAyMjRlZGJhZjYzMDE5MTU0NDI1MWJhMjg3NTA3MWU3OGUzM2IzMjk2IGxlZ2FjeS10cnVuaworMjQ1NjMgYjI2ZDU4Yjk4MTBjYWQ3ZTgzMTZjMjA2MTg3MzhmMDM3ZjY4ZGU1MSBsZWdhY3ktdHJ1bmsKKzI0NTY0IDQ1ZTExNzc0MjRlMWM3OTk2ODcyZjViYmVlMTBiNzNlZTc1ZDdmZWEgbGVnYWN5LXRydW5rCisyNDU2NSBlMzg2ZjZlMjZhNDJlMzgxZjc4NGU5ZTE5MTVmNTBiYzMwZmFiY2FkIGxlZ2FjeS10cnVuaworMjQ1NjYgZDAyNGE1YzcyY2I1NjNjNGI0MzQ0NjljNDgzZGM5OGJhZjgyZGQ4NiBsZWdhY3ktdHJ1bmsKKzI0NTY3IDE5MTg2YjE3ZDI1YWEzOTAwZDdiYWEwYTg4M2YwZTA5MzU2MDcyZmQgbGVnYWN5LXRydW5rCisyNDU2OCAxNDUwNzY3MWMwMmNjOTk4OWQyOTlhYzEzMmRhNmFmZjhiNjQyNjgyIGxlZ2FjeS10cnVuaworMjQ1NjkgZmJmNjhjNTlkNjZjY2QyNjA3MWE3NGE4N2FkMzc1MzBkN2FhZDczOSBsZWdhY3ktdHJ1bmsKKzI0NTcwIDA4ZGJmNmIzYzMxNjQzMThlYmIyNTcwZGJhODdhZjE0NzVhNWIwNjcgbGVnYWN5LXRydW5rCisyNDU3MSBlNWQyOTU1NDJjN2ZiOTY2MTE2OWMxN2E4ODAxNWRiYmY5MDA3MTExIGxlZ2FjeS10cnVuaworMjQ1NzIgMTAyZDE4ZWEwMmNmYWMzOWEyMTM4ZWFiNzI5ZWEyNTkxYzg4YjAzZCBsZWdhY3ktdHJ1bmsKKzI0NTczIGM1MDZiZjdiMjZiOGEwZjFmOThmMmNlOWFmMGNjZDM5NmI3Yzg2NTIgbGVnYWN5LXRydW5rCisyNDU3NCA0MjcxZGE3MGVkOWUxMzYyMWYzZTU3NTViYzBlYjI0NjRiOTJkM2UzIGxlZ2FjeS10cnVuaworMjQ1NzUgZThmZWE5NWE4MmE0MDM2MDc4MGFkYjMwMGJhYjRmNDcyNzRhYjUzNSBsZWdhY3ktdHJ1bmsKKzI0NTc2IDJmMmFiZWVlZmQ4NzhiZWYzMzdjNzE2YmU4OWUwMjI1OWQ1MzI1YWQgbGVnYWN5LXRydW5rCisyNDU3NyAyNjU2N2YyODY3N2UxNGFmYjQ1ZWQ5ZDVlZjNhODM4ZjY4NWEwNmJjIGxlZ2FjeS10cnVuaworMjQ1NzcgYWJlYzRlM2IwODFmMmY4MDJjMGYyN2JjMWVhNzBlZDc1MmFiZDg0YyByZWxlYXNlMjEtbWFpbnQKKzI0NTc4IDRkYWU4NDJhYTdjNThmZmRlNGI0N2JmOTUwMjgzZjcwN2QzNzkzNDUgbGVnYWN5LXRydW5rCisyNDU3OSA3YTdmNTU3YjRkNTQxOGViMzcwMmRhNTJlOTVkYzljODNkZTk2ZTJiIGxlZ2FjeS10cnVuaworMjQ1ODAgZDI5NmU2YmIxN2U1NGNmMDdjZjAxZTFhYWZjZmJhZmI3NDkwYzlkZSBsZWdhY3ktdHJ1bmsKKzI0NTgxIDJiNWRjNmM3N2MzZGU2ZGZiNWYzMTVmOTU5YjlhM2M3NDU3ZTVhMDcgbGVnYWN5LXRydW5rCisyNDU4MiA5NzcwOWZkOGZkYTAyNmJlZThhYTNkN2U4ZWFiNTNiM2IzMTg2Zjk3IGxlZ2FjeS10cnVuaworMjQ1ODMgYWMzZmRkMTQxMmQ5ZWFhODNjN2NjMDE1OTE0OTU2ZDY1MDY2MzA2OSBsZWdhY3ktdHJ1bmsKKzI0NTg0IGQ2NGRmYmRjNWY4YzQ0ODA2YzAyNDNjMjYwMmIzMmMyMDEwNjFjNGIgbGVnYWN5LXRydW5rCisyNDU4NSBlY2JiZWNjZGUwN2RkM2I5NjA1ZTRjYjA4NWE3OTI5M2U4NjNjMGVmIGxlZ2FjeS10cnVuaworMjQ1ODYgY2ZiZTM4YTAzZThjMTkwN2MwY2IyZTY5OWEzMzM2NmY4NDAyYTc5NiBsZWdhY3ktdHJ1bmsKKzI0NTg3IGIwMTMyM2JmY2Y2Y2U5MzI5ZjQ5MmZlMmE4ODQwMmJiOGU2Njk2ZmMgbGVnYWN5LXRydW5rCisyNDU4OCAyOGY0Y2VhMjA5ZDc4ZWE4NmE1Mjc5ZGY4NjdmOTA1MTljMGUyNjA1IGxlZ2FjeS10cnVuaworMjQ1ODkgZjcwMmZmMzkwZTRkYzc3M2QyYzFmMjU2YTU4YTVhMTI4YzNjYjI1ZCBsZWdhY3ktdHJ1bmsKKzI0NTkwIDAzZjMxNTVjYjZlYmUxN2ZjNjdkNmU1OGFhZmM3Nzg1YjhmNjY2NmIgbGVnYWN5LXRydW5rCisyNDU5MSA2NDMyNDRmN2Y0NjcwOGQxZTcxOTRkMTM4MWM5N2IyMzIwYjdkMmM4IGxlZ2FjeS10cnVuaworMjQ1OTIgMzY1N2JlZmFiYTRmMGE4MWRhMWJlMWVlYmJlZjQyMjI5NTVjNTA4NCBsZWdhY3ktdHJ1bmsKKzI0NTkzIDk5MWIxNzBjZjQzODVkMTAyNTcxZGEzYTkyNmViMDIzZjAzNWE0NTQgbGVnYWN5LXRydW5rCisyNDU5NCBkMzVhNTc3MWM0YzY5ZjRlM2I3ODYzMDcyMTc4MTgwMDU0ZDVjODNlIGxlZ2FjeS10cnVuaworMjQ1OTUgZDQ5MDdjZGNjMjk5NDU0MzY2NjM0NWY4YzBiZDhkMGI4YzZlNDUwMiBsZWdhY3ktdHJ1bmsKKzI0NTk3IDQzYjhhOTYyYTMyYWVlY2VlMjNkMmI2YjRmMjA5OTRlOWFkNzA4YWMgbGVnYWN5LXRydW5rCisyNDU5OCA1MGYyOGVkODA0NGZmYzFjNDQ1ZmM3M2MwZmQxYThkMTc3OWExOTY2IGxlZ2FjeS10cnVuaworMjQ1OTkgMWU3YzBiODQ5NTg0ZDdmZjdmZmJkNzNmYTIwZmY2MGExNTgyNmM4NCBsZWdhY3ktdHJ1bmsKKzI0NjAwIGQ1MWYyMTU4ZmE3OTA3MGE0YWQxNTM1ODE4MDBhNTBiZjRhYTNmMGQgbGVnYWN5LXRydW5rCisyNDYwMSBkMGMyMDQwZmVkZTdkNGZhZDg1ZjNhOTEwMGQ5NzkyYTQ0ZTFkNjgxIGxlZ2FjeS10cnVuaworMjQ2MDIgNzc2ZGQyZTc2NzhlMDQzZDY1ZTg0YzFkNDA4OTFjYWEyM2RiYWUzOCBsZWdhY3ktdHJ1bmsKKzI0NjAzIDk4MzViYWIyODc2ZTQyZjgzZDZiZWM1NGEwYjc4MmE2MDgwOGUzMTQgbGVnYWN5LXRydW5rCisyNDYwNCAyMzc1ZDJkZmI1YjNhNjJiODZjZGE4ZjNiYmMyOTQ0YmRhZThmYjM5IGxlZ2FjeS10cnVuaworMjQ2MDUgZThkZGFiMTM3MzJhYmFkMGIyOTQ5YzhiOWNiYzYzYWRlZDcwZTM2MiBsZWdhY3ktdHJ1bmsKKzI0NjA2IGI4MTBjMzBiNGFhMWE3YWQ5MGUwN2RiYTk2ZDA0NzVjNGY3ZjViYzEgbGVnYWN5LXRydW5rCisyNDYwNyAyNGE2YzNmZDBlNThiYzBhMTk0MzZkMGFlN2NmNTU0NWM4MDJlYTg0IGxlZ2FjeS10cnVuaworMjQ2MDggNTk4OTQ0OTZiNWM3MzYyZGQ0ZWM5Y2ZhNjU2NDMxZjQxOWQ1YTMxMiBsZWdhY3ktdHJ1bmsKKzI0NjA5IGJiNzhhNTJiOGZmY2UyNzA1ZGU4M2E5NTEwNjAyNmU1MmMxNmNiZjQgbGVnYWN5LXRydW5rCisyNDYxMCAxMTk0MjI0MzBlOGZjYmUxZjIwYzkwODk4YTc1ZjE1ZTRhMTk5MzdiIGxlZ2FjeS10cnVuaworMjQ2MTEgOWEyNDNlZTM1NGExMzRjYzVkM2ZhYjc3MzZiNTdkNTczNDYxNjY1YyBsZWdhY3ktdHJ1bmsKKzI0NjEyIDYyZWEzMTdkZmM3ZjRhMGE1OGU1ZjAyNmVmNmQ1YjZkNTVmMDI1NjEgcmVsZWFzZTIxLW1haW50CisyNDYxMyBmNTUzMmNjMTUxNGI3ZGI2MzViMDY2NGU3ODY2MGU5NDgxODI3ZjUyIGxlZ2FjeS10cnVuaworMjQ2MTQgMTJjMDk0YTIzMjczNDZlNmI5YjNhNDkxM2EzZjljOGQ0MGNmYmVjZCBsZWdhY3ktdHJ1bmsKKzI0NjE1IGRlNzY0NjYzYzMyNWMwNDY3YTQ0MDJmNmE2ZTEzYWE4ODJjM2Q5ZjAgbGVnYWN5LXRydW5rCisyNDYxNiBiNmY1OTJlZWMyNDFkNmVjY2NiMjZkOWM5OGIzYjcyMmYzNGMzZGU1IHJlbGVhc2UyMS1tYWludAorMjQ2MTcgZDk4MGViY2M2OTZhMjg4Mjk1YTg0NDdjY2NjYzVkMzY4YmRhNjBkZiBsZWdhY3ktdHJ1bmsKKzI0NjE4IGQ4NmQ2ZTBkMTU4YzVjODI0MDc0MTJjYzEyM2UwN2M3NGMzODY4ZjUgbGVnYWN5LXRydW5rCisyNDYxOSAwZDJlZWY2MzZkMTI5YzU3NWQ5MmQ5ODU4NWFhNjc2NjJlODkwYmRhIGxlZ2FjeS10cnVuaworMjQ2MjAgODk4YzgyNWUwOGFjY2NkNjQ1MDVmM2QyZTYyNzlmYWU1NWQ3ODdiNSBsZWdhY3ktdHJ1bmsKKzI0NjIxIGNiNjIwM2ZmMjllNWExZTNiNTg4MDA3MDZmYzUyNjQ0YTU0ZmNjNDkgbGVnYWN5LXRydW5rCisyNDYyMiAyNjA3NDMzYjEzZTllODFlY2EyODJkMzJhMzYwMmE0MjY4Mzg5OWExIGxlZ2FjeS10cnVuaworMjQ2MjMgOTA4MDRhMzQ4OTIzZGM3ZjI3NjhiZDAzNzkzNjA2MjUxYzdlNGVmYSBsZWdhY3ktdHJ1bmsKKzI0NjI0IGJmYTVmN2I0ZTc4ODU5OGJlZmYxZjIwZmM4NTdlYzAzZDViYmZkMGYgbGVnYWN5LXRydW5rCisyNDYyNSAwMTAyNjkyNDE3YWYwZmUzZTEyZTFiMjE3ZWMxZjk1NWEzMGNlNmE4IGxlZ2FjeS10cnVuaworMjQ2MjYgOTFkZDIyMzgyOWM2ZTAzNTYwMTFiZTJjNmMxZjRiYjQ3OWIxNjVhOCBsZWdhY3ktdHJ1bmsKKzI0NjI4IDRkNTA5OGNmYTc4MWJmZTNhN2JmMzNlYTY2NGJiMmExNTljMmYxYWUgbGVnYWN5LXRydW5rCisyNDYyOSA5YjJkMWY4ZjRiZTM0OTgzYjg0MDlmMjkxMDNmMDkwZTU4YWM1ZWZkIGxlZ2FjeS10cnVuaworMjQ2MzAgMGMyZWEyMzNhZDI0OTNiNTA0OWIwYzJkODJlZWJjMTBmZThhNTViNCBsZWdhY3ktdHJ1bmsKKzI0NjMxIGI1ODNjYWYxYmU4ODJiMzI5ODA5YjE5MDNmOTllNjAwZWVjY2I4MjAgbGVnYWN5LXRydW5rCisyNDYzMiBiYjU2NmY1MjVmMTJjZjg4ZWRjYmEwMDdiOTg3Y2Y4MzI4NTUzNTIzIGxlZ2FjeS10cnVuaworMjQ2MzMgNGJjZmI5ZGM1N2UwM2RjYjM1MDg4MmU3NjA3NDZkNzMxMGFmYTY4MSBsZWdhY3ktdHJ1bmsKKzI0NjM0IDYwZGYyYmY4NTRhY2U0MTdiNzEwMDhhNTQ2MDE4YWQxMmMyMzk1YTcgbGVnYWN5LXRydW5rCisyNDYzNSAzYTJjZjVlNDU2NTZhOThhNzU3Mjk0MzVhMzYzZDZjOWMwYWYwYTliIGxlZ2FjeS10cnVuaworMjQ2MzYgMTg1MmNhYmE3MDE0YjQxNTQ5N2IzOThiMmZiMjA5NWYxZDdmZDQ2NSBsZWdhY3ktdHJ1bmsKKzI0NjM3IDY0NDg4NTExOGZlNzc5ODc2YzczOTliYWFiMzRiZjU2ZGRlNzNhNzAgbGVnYWN5LXRydW5rCisyNDYzOCA3NTJmYTQ4NWM0YWJhNWY0NzJhMTEyNWFmNzY5MWFlZDkyZjU5OTUwIGxlZ2FjeS10cnVuaworMjQ2MzkgOGEyNmJiMzY5ZjUzNzdkNjhhMzk3MTBmY2E0NTRlZjc2ZDlhMmNjYiBsZWdhY3ktdHJ1bmsKKzI0NjQwIGM5YWRhY2UzYzgyM2VmZGY1N2Q0YWZkOTlhM2U2MDIyNDE1ZjcwZDAgbGVnYWN5LXRydW5rCisyNDY0MSAzNGExYTUwZTZhYjZmODE5MWExNmM2ZTJmZjNiZjY0YmQ4ZGVlZDAzIGxlZ2FjeS10cnVuaworMjQ2NDIgNzg0YzhiYzBiMzAzNGE1NDg1YTNmZDc5YTgyYTM2ZmUwMjY4MjVmYSBsZWdhY3ktdHJ1bmsKKzI0NjQzIDg0OGY2OTg4ODI5ZjFhMmU1NDBkNGZmZjc3ZjhhNzUyMDY1YzMxZWMgbGVnYWN5LXRydW5rCisyNDY0NCA0NDIwYTRiZDk2YTQ0YzFhMzBjNWEwOWNiNzY0MjZkZWVjNzkxYzYxIGxlZ2FjeS10cnVuaworMjQ2NDUgMmE3ZDVmZmVjZTFjOWI4N2JmNDQzYjhhNWM4MzYxNzkzOThkNTZhYyBsZWdhY3ktdHJ1bmsKKzI0NjQ2IGZiYmQ4YTRjYTdhNmZjYzViOTg5OGE5YjdlYzZkMDQ3Yjg0MmNiZjUgbGVnYWN5LXRydW5rCisyNDY0NyA2ZDg3NGE5MWI1OGI4MWI4ODNhMGM5ZTNmYTNjNmRmNDUxYzgyYjU2IGxlZ2FjeS10cnVuaworMjQ2NDggY2YyZmIyMGE2Y2U3ZWIzYjAyZWQyOWViYWE2M2JhZDYxMDE3MTRlMyBsZWdhY3ktdHJ1bmsKKzI0NjQ5IDE4ZjYwODEwYjk0YTNmMDEwZmU0ZDgxNDVlM2RlMzU3ZmY3YmVmN2QgbGVnYWN5LXRydW5rCisyNDY1MCA3YzZkZjk2NGIwNGJiNDE0YWI0NWI5YmE1NjJiMjBiNWM1YzFiMWUwIGxlZ2FjeS10cnVuaworMjQ2NTEgOTNmNTQwNThlZjQ4ZjVkY2JmZDljYTA1MjJjNTYzOTIzNDJjNDQ1MCBsZWdhY3ktdHJ1bmsKKzI0NjUyIDY4MDQwZGIwODRiNmFhNTdhY2Q1ZTZmMjI2N2U1ZjkwMjkwNjc1MzEgbGVnYWN5LXRydW5rCisyNDY1MyA1MjVjNzczNjhjZDA1N2RmMzU5NzZjZTdiYTg4NDg3ZTJmYTNlMzBkIGxlZ2FjeS10cnVuaworMjQ2NTQgM2Q2OGUzMTEwZTFmZTU4ZWU2ZTZlNTMyMWNiZTQ3Y2QzNDEzNzU3NyBsZWdhY3ktdHJ1bmsKKzI0NjU1IDBiMWZhZjExNmY2M2VhOGM1NmQxN2YyNDc5NTAxMmFhOWQ0MTcwYWYgbGVnYWN5LXRydW5rCisyNDY1NiBhMzkyZTFmYWU2MWRkMjJmZTkxMjI4MTQ1ZWVlM2NlMDk5ZDIyMjBhIGxlZ2FjeS10cnVuaworMjQ2NTcgN2E1OGNkMzM3Y2Y0NDBhMWMxMTBkMTJjOWUxMjUwNTM1ZDgyM2Y4OSBsZWdhY3ktdHJ1bmsKKzI0NjU4IGY3ZWFlZWFjOWM2NWU3YmU0YjgxYzg3MzZkODViMmMzZTZlOWFiMjQgbGVnYWN5LXRydW5rCisyNDY2MCBkMWY5MzhlZWU3MDBhMjYyOTE3NzhhZDkwODUxOWY3MzBlNzgwZjc4IGxlZ2FjeS10cnVuaworMjQ2NjEgOGE4ZjU3ZGNmOWZlNzM2Mzk3ZjQ5OWIzMjUzMzg3YTYzNWRhNDQ2NCBsZWdhY3ktdHJ1bmsKKzI0NjYyIGY1OWM2YjVkZDEyMjJiMmZjYjIyZDU0ZmFmZTZlNzIyOGQ3NDllZDUgbGVnYWN5LXRydW5rCisyNDY2MyAxMjMxMGQ2NDNkOGQ3Mjk3NjVkMTEzMmM0MTk2ZTMyYmIwOTJjY2JjIGxlZ2FjeS10cnVuaworMjQ2NjQgOTM4YjViZjc0ZmI5NGY1YmY4NTVmNzgzMmQwYTIzM2Q2YTQ4NjE5NiBsZWdhY3ktdHJ1bmsKKzI0NjY1IGE1MTQ2Zjg0MzAxMDA2Mjc1MGIzNDFlNjdiOTczMzFmNzc1NDliNzkgbGVnYWN5LXRydW5rCisyNDY2NiBiZTk5MGU3MDNkMGYxNDcyY2ZkYzc0MjRmOTExOGVmNjQ2YjI2YzAyIGxlZ2FjeS10cnVuaworMjQ2NjcgYmUzMjgzZWQ4Zjk3NTg4NDM5MzA0Yzg1OTQwMGUyNzY3MTZkYWI4ZSBsZWdhY3ktdHJ1bmsKKzI0NjY4IDI1N2M5Mzg5MDBhNmU1ZTNkNGU3ODAxZmU4YThmOWQwMTE5ZGQ5OGUgbGVnYWN5LXRydW5rCisyNDY2OSBmYmRkYjY0ZDIxYzJjYjNkOThlY2JmYjBjOTUxNTIxNjZmYjgzODc1IGxlZ2FjeS10cnVuaworMjQ2NzAgMDAzZGM1NzNiMjk1MGNlYjRlNzgzMTUyNjI2MWQ0NThlNWE1NmU3YSBsZWdhY3ktdHJ1bmsKKzI0NjcxIGM2NzA0NmVmNTM4NTY3YmNkNGFjOTU3MjljMjcwZTUwYjUzNTQ4MmUgbGVnYWN5LXRydW5rCisyNDY3MiBkZTNjODhiNWY4ODk2MmJkN2ZlMWEzZjY0NTRhOTA5NmEwYzFhNjczIGxlZ2FjeS10cnVuaworMjQ2NzMgMmViMjVlZjM0Mzg2YzM5NzVkZDJkY2YyZWIzZDcwYTdhZTM5OGQyYyBsZWdhY3ktdHJ1bmsKKzI0Njc0IDJjMjA4ZGJmMGNiMDM4NzU3MDdiZDEwN2NkNzFlNWNhM2JmNTg3NTkgbGVnYWN5LXRydW5rCisyNDY3NSAyOTA3MmU4ZThkOTgyYjFhZmJhNDI2NzkxYWIzZTcxOTk3ZWNjY2FmIGxlZ2FjeS10cnVuaworMjQ2NzYgZThiMDk4ZmUzZGY4NzhmOGM0MWJkZGEzODNlMDNjZWFlODg3NzFlNSBsZWdhY3ktdHJ1bmsKKzI0Njc3IDMwMTJmNjI2ZGY3Y2IzNWUxMzBjZWRhMDliNjAyZjczYzgwNGIzMmEgbGVnYWN5LXRydW5rCisyNDY3OCA3MWU1ZWVjZDU4OWU1NWMzMzU2ZWNiY2NmMGFkMmM4MDJmN2Y4ZjVlIGxlZ2FjeS10cnVuaworMjQ2NzkgMDQwMjMwYzE1ODkwNDdhN2UyY2MyZjVlYTkzODdmYmI1NTlhN2YxMCBsZWdhY3ktdHJ1bmsKKzI0NjgwIDVhYjlhNjVlMjM0NjYxNDYxNTM1YjFhNDQ3MWZjNmYwN2FjNmZlYmMgbGVnYWN5LXRydW5rCisyNDY4MSBmNTc3NjdkNzZkZTZkYjdmNGY0ZGY1MGE0MzlhMzczNDVkYjc0YzMxIGxlZ2FjeS10cnVuaworMjQ2ODIgOGE4OWZmMWUwNjYyZGI0ZGEwNGU1OWU2YjdlYThlM2ZjODZmYmZhMSBsZWdhY3ktdHJ1bmsKKzI0NjgzIGQ4N2NhOTMyZTcwZmNkMGJhNTAwYWE4NzA4ZWNjYTUxMzY0Nzk0NWEgbGVnYWN5LXRydW5rCisyNDY4NCBhZjUxNjA0ZDAwZGIyNzE0NDliNzdmMTNiNjgxNmE1MDY3YjdmYmMyIGxlZ2FjeS10cnVuaworMjQ2ODUgOGEwMzUwODdlYjcyOTc3NmIyN2RlZDJkYWViZjE5NGZlNzA1MWUwNiBsZWdhY3ktdHJ1bmsKKzI0Njg2IDczNDY2YTc2ZjI1ZTJlNzE3MjUyOTA0ODdhZGM3ZWEyZmUxNDQzMWUgbGVnYWN5LXRydW5rCisyNDY4NyBjMjk2NmE3YmQxMTM1MTQ5ODM5ZDQzZTBiMWZkY2UwZDY5ODEyZmEyIGxlZ2FjeS10cnVuaworMjQ2ODggYzU5MzlkMGM3NDdhNDkyYzI1MmVmYzQ3MjhjM2NlYmMzNjFhZTE2OSBsZWdhY3ktdHJ1bmsKKzI0Njg5IDQ5NzcyZDMxODQ0MGI4YjQ5NTZiYWFkMzA2NGNhOWY1MDY2MDA1N2IgbGVnYWN5LXRydW5rCisyNDY5MCA3ZTBkMmQ1OWJiY2U5YjdlYzQ4NzU5MWJkNzY2NjI1ZGU5Y2E2ODkwIGxlZ2FjeS10cnVuaworMjQ2OTEgNTBkMDM2NmU4ZjA1ODIyZjljZWI4MTM0Y2QxMzQ4OTExZDA3MGZlNyBsZWdhY3ktdHJ1bmsKKzI0NjkyIDVmNTcxMzQ0Yzg5Y2NmMDMyNjcwYjBkZDcxODYyZWI3OWIzMmIzZWQgbGVnYWN5LXRydW5rCisyNDY5MyAxMTZhZjJmMDE0NDJhOTAwYjA4OGRlN2U2MTc5MGEyNTRiZDBkYTVhIGxlZ2FjeS10cnVuaworMjQ2OTQgNzQzZjY3YmVmYjU3ZTk1MzI2OGM3MjdlNWZjYTEzYzJhNTgzYmI5OSBsZWdhY3ktdHJ1bmsKKzI0Njk1IDQ0ZWJlYWIyNjljNWE3N2VmZTIwODAwMmZjOGM5NzhjZmVlN2I1ZDIgbGVnYWN5LXRydW5rCisyNDY5NiA5MTM0NThlYWVmOTAwYjljMTY5ZmE0Yjc1NmY4NGM3ZThhY2QyZTUxIGxlZ2FjeS10cnVuaworMjQ2OTcgZDE2YjMyNzE4MWE4ZDZiMTYxM2QyMjY3NTFiZTU2ZWZkMmNjMzMwYSBsZWdhY3ktdHJ1bmsKKzI0Njk4IGFiY2QyZjUyZjMxNmRhMDdmMzI0ZDVhNGMxOTE0YTQxMzEwOThmZWYgbGVnYWN5LXRydW5rCisyNDY5OSBjNDRjOTExNjA2YTQ0Y2Y3MTNhMDIwZmUwNGE4MGEzYTZmMWRhODhmIGxlZ2FjeS10cnVuaworMjQ3MDAgZWI3OGYwM2RjZGVjNjgzMDI4M2YzYTFlNzA5ZTQ2MGFiZTBlMzJhMiBsZWdhY3ktdHJ1bmsKKzI0NzAxIDgxYTU3OGViNzM0NjM5NWNmZDc3MmVmYjZlYTkwN2YxNmVkZGY5NGYgbGVnYWN5LXRydW5rCisyNDcwMiA0MmNkNTA1OTRkMGQ5NzgyZDFjN2I2MDNhYmIyMTBmNzMyYWQ4NTEzIGxlZ2FjeS10cnVuaworMjQ3MDMgZGZhY2M3MzNjYmY0YjVjOTQ1NmMyN2QyZmU1ZDNmMTMwNGM4NTU0NyBsZWdhY3ktdHJ1bmsKKzI0NzA0IDc1MDM3ZDg2YjExMzYzMTgxNzBmOGVjN2U5ZWQwMmMyOWZjMzI0NTEgbGVnYWN5LXRydW5rCisyNDcwNSA5NmJiYjNkMGM2YTA0NGYwMTYyNWUxYWJlN2VjNDU3ZjQ1ZTFlZTZkIGxlZ2FjeS10cnVuaworMjQ3MDYgMmMzMmZjNWYyM2MwMzcwNDNmMmU1ZTFiZWI3MzFkYjMzN2I2ZTcxZiBsZWdhY3ktdHJ1bmsKKzI0NzA3IDY1NzhjN2RjMzI4YjFlNzI3NjlmOTliZTRkNjI0NWQ5MmE5YzE2NjkgbGVnYWN5LXRydW5rCisyNDcwOCAzZjNlZjA3NDM1MzdiMjdhNDA4NzBlYmU3ZDlmZjM4MGEwMjIxYTBmIGxlZ2FjeS10cnVuaworMjQ3MDkgODJhZjU0YjQzODE3NzUxY2UzZTRmNDEwNGJkNDQ1MDI3MDVkMDVjNSBsZWdhY3ktdHJ1bmsKKzI0NzEwIDU2MDIyMmU5ZDQ3MTBiMGE0ZjYyNzVmMmJkNzUzYWEyNjVkNGZmMzAgbGVnYWN5LXRydW5rCisyNDcxMSBlYzMyZTU5ZGY0MDBiYjc2N2Q0MDcyZGU2YzJlZmIyZjk0MDAxMzA0IGxlZ2FjeS10cnVuaworMjQ3MTIgNWM5YmEyNDE4MzkwMWJmNTkyNDM3OGM5MWU5MmVmMjI3ODg4ODJmMyBsZWdhY3ktdHJ1bmsKKzI0NzE0IGRlMTI1NzkyYmZhYWRkZDA4MmE3OTA2YjkyNTZjMDI0ZmNhYjVhZDMgbGVnYWN5LXRydW5rCisyNDcxNSAzM2Q1OWUxOGI2OGQ0NDRhMzVkNTc3YzZmZmE5MDU0MWJmOGRmYjhiIGxlZ2FjeS10cnVuaworMjQ3MTYgY2IwOGJjNjk4Njg1OWU3NGQ2NWE2OWFjMDQ3OTQ3NWJkMDgzYWMyMSBsZWdhY3ktdHJ1bmsKKzI0NzE3IDZkYTYwOTFhMzFlZWYyMDlhNjExNDdjMTliZDNlODhiZjE0MTRlNWQgbGVnYWN5LXRydW5rCisyNDcxOCAwNWJjNTkwNTIyNDkzNGVmYTQzNjQwODAzMzJiMzNjNjExYmM0MDBjIHIyMnJjMS1icmFuY2gKKzI0NzE5IDIyYzk4OGNjMTUyZDEyMmIyNDcxN2U3NmRjNjQwODM3ZTk1MmQ5MmEgcjIycmMxLWJyYW5jaAorMjQ3MjAgM2Q5N2EwNTRmOWQ0YWZlNWE2YTc4NmQzYjZlODE3Y2RmMGExMzdhNiBsZWdhY3ktdHJ1bmsKKzI0NzIxIDY5OGI2ZWViOWE4NmQ4OTM4MWJiMzM1OWE4MjQ4YzFiMzlhM2U3NDkgcjIycmMxLWJyYW5jaAorMjQ3MjIgZWJmOGEwMzYxNTFkNDY1YzI1OTZlYTgyY2YwYTIxMWE5MGYzZGU3YSByMjJyYzEtYnJhbmNoCisyNDcyMyAyMDRkMWQ1YjA4ZDY4YThjNzhmNTcwODM4NWRiYmEyNmU5NTFjNmU4IHIyMnJjMS1icmFuY2gKKzI0NzI0IGZiZDU3ZWU1Yjc3ZDc4MjUwMDkyOTFjZTc1YTFkNWQ4NmEyMjA5MzYgbGVnYWN5LXRydW5rCisyNDcyNSAzY2U4NzFhMDQ1NWI1MmQ1ZGI0NDIxYWI5MGZkNTZhOWJmZTEzMWM2IHIyMnJjMS1icmFuY2gKKzI0NzI2IDM2M2IyZjc1MjkzNTFlZGNhYmIwNWU5YmJkMzlmMTI2MzUxNzgyMWEgcjIycmMxLWJyYW5jaAorMjQ3MjcgNmVhNzE5M2JkYzJlYWZkMTk0M2U1YWQ4MzU3YTkyMjgwNmI2ZmVlMiByMjJyYzEtYnJhbmNoCisyNDcyOCAwNjQzMTExNDljYjRkM2RmYzQ4YmVlMmZjNGVjOTE3YzA3ZWM2YWMxIGxlZ2FjeS10cnVuaworMjQ3MjkgMmFmZTQyZjI0NTU5MDhmMGQwMGU0M2RiZmFhZjJjZTgyM2YwNGQwMyBsZWdhY3ktdHJ1bmsKKzI0NzMwIDljODBiNWFmODEyMWE3NGJkYTI3MDhlZmEzYWY4YzFmNjBlYjUxNzQgbGVnYWN5LXRydW5rCisyNDczMSBmZTE4ZWIwNTUxMDc0MDgyNjliNTI5NmJkY2UwMDIwMzVkN2JkNzhkIHIyMnJjMS1icmFuY2gKKzI0NzMyIGNlZGI1MDM5MTU1YTY1NTMzMTRhMmY3NDNmZjYzOTdjNDg3NjY0M2EgbGVnYWN5LXRydW5rCisyNDczMyAzMWEyNDlhMzQwZjgxN2FkMjkxYjdiYmI3Yjc1YzdjNWU4YmNhZDFmIGxlZ2FjeS10cnVuaworMjQ3MzQgODUwODZmM2U3MGYzNDc4ODkzZjRjNmNlZGQ3MmE5NGJlODIwMmUxYyByMjJyYzEtYnJhbmNoCisyNDczNSBmZGMwY2Y1NmJhOWNmZDVmMDI0ZWU0MmU3YTkwZDViMTYwZGZmZGJjIGxlZ2FjeS10cnVuaworMjQ3MzYgMjc2NjhkYWI3N2Y4OGFjZjJlZWEwNWY3ZjBkNThkNjE5YzFjYmQxMyBsZWdhY3ktdHJ1bmsKKzI0NzM3IDA0MDcyOTQwMjFhMGE2YTAxOGExNjgyMzQ1MWZmZmRkNDVkOTI1ZDAgbGVnYWN5LXRydW5rCisyNDczOCAxZDg5ZGE4MjVmOTU3ODg2ZWJkYjJjYTEzMThmZjUyNjEzYWJkNWMzIHIyMnJjMS1icmFuY2gKKzI0NzM5IDBhOTQ4Y2U0N2U3YTA2YTM1MjY3NTdmN2IzZmFmZTkzNTNlYzFkZGMgcjIycmMxLWJyYW5jaAorMjQ3NDAgZTYzZjQ2NjhjOTVkMDg3MDkzZWI2NjRhN2UyNDFmNTU5MjE2OGY3NCByMjJyYzEtYnJhbmNoCisyNDc0MSBmZjFiNTcxYWNhNzEwZjQwMzkxOTk4ZDY5YzViMDQ5ZTBhM2RjYzMxIHIyMnJjMS1icmFuY2gKKzI0NzQyIDhmYjBjMjRmNGQ0NTBkOTQwYjRlNWNmNjMzM2M2MWNhNjNjNWM4MmEgcjIycmMxLWJyYW5jaAorMjQ3NDMgYjExNzc0Y2NkMTAxZjczMGU5MjcxMzBjZWYxMGM4MTg2MWIwMzhjMiByMjJyYzEtYnJhbmNoCisyNDc0MyA3ZjQ2NzhlZWZhZmIxNDM5MzVjMzljMDM2NGUwYjUzYjMzZDI4ODIwIHIyMnJjMS1icmFuY2gKKzI0NzQ1IDQyMTZlZjE5NjIwYmJkZWRlNGNiM2IxZjMwNWY1OTZhOGUzN2VlNjMgbGVnYWN5LXRydW5rCisyNDc0NiA4YjJiZDA3ODA5MjVmOWQ1ZjFjNmI3NzcwZWNhODgyZDMxMjQ0NDY3IGxlZ2FjeS10cnVuaworMjQ3NDcgZjUzNmY4NTI5NWI4NjM3Y2JmMTVhNzVlM2E1NzI3MWZmMjIyYjQ2ZCBsZWdhY3ktdHJ1bmsKKzI0NzQ4IDNmY2IyMjQ4YmJlOGQ5MDdlOGU2Y2NlMTg4NWM2YjExODJiZjhlMjIgbGVnYWN5LXRydW5rCisyNDc0OSA2YjMwYzNmNDM3OGQ0MzA0Y2UxZTdmNjg2NDI2NzUxYWRjNWVhM2U0IGxlZ2FjeS10cnVuaworMjQ3NTAgYzM5MjBjNDM1MzMzMTg4NGYyZjIyOGRhZmU1MmNhZmY3YmU5NjdlNCBsZWdhY3ktdHJ1bmsKKzI0NzUxIDU3MWQ1YjdiNzQ2YzgyYWQ4MTE4ZDQyYzNiNmEyYWZlY2VhZTA2ZWQgbGVnYWN5LXRydW5rCisyNDc1MiA4MTM0OWU1MTY1OWI1MWM1ZmNkZTJhZWEyY2QxYmE0OTk2ZTcwY2ZlIGxlZ2FjeS10cnVuaworMjQ3NTMgNGNiMjIzZWY4NjliYTA1MzdjN2M5MWJjYjcwMzhkYTc1Mzg1ODY2MCBsZWdhY3ktdHJ1bmsKKzI0NzU0IGFhNDc1M2Y5NDU3MjIxNDE2MjE2MDliOTk3ZDFmMGJhODM3YjJhYzIgbGVnYWN5LXRydW5rCisyNDc1NSA1NTkyMTI1NWVjOTNkMjM0Mzg0YWYxYTY3NmU0NzgxNDEwMzU2NGUwIGxlZ2FjeS10cnVuaworMjQ3NTYgMjc0YWE5MWI0MTdjMTNmNTA5OTAyMmYyMGZkOTYzMjdhMzNiN2Q4MyBsZWdhY3ktdHJ1bmsKKzI0NzU3IGUwZTJiNjE2MWM3ZmQ2YmRlYWU3YWE4YzE0MjQ2Y2M1NTAyNjM1MDEgbGVnYWN5LXRydW5rCisyNDc1OCBhOTY1NmNlMDE1YjBkOGYxMjlkNzlhODc3MGNhNDA0NzVmYTJlNzliIGxlZ2FjeS10cnVuaworMjQ3NTkgMDYzZjhhMzFiNmI4YjcyOWUyYzhmODdlMTkzNDlmNjIyN2FiNjRlYyBsZWdhY3ktdHJ1bmsKKzI0NzYwIGE2MjBlZjg0YjBmYjI2MjMxODUxODI4NDNkZmNmY2Y1MzUwYjdjNzEgbGVnYWN5LXRydW5rCisyNDc2MSAzZmNjMmUyOTkyZDRkNWU1N2I0NzdiOTQ1NWUwMDhmMTdmMTRiOGQ4IGxlZ2FjeS10cnVuaworMjQ3NjIgYjJkMzM5MTM2NGJiYjczMTZjZjAzMDQ4Mjg5NmJiZDc5MDczNDIxOSBsZWdhY3ktdHJ1bmsKKzI0NzYzIGRiZDZhNzYxMjE1OTZiZTAzYjNjY2FhNzNkY2M0ZmJmNGMyOTQxNDMgcjIycmMxLWJyYW5jaAorMjQ3NjQgYTAyOWUzNDgzMDRjOGU3Y2E1OTEzOGYwOTQ2NWViZjJhOGI5MzIxMSBsZWdhY3ktdHJ1bmsKKzI0NzY1IGZkOWQ3YWUzZjk0YTcwMjVkZTY1ZDUyMThmMzRiMzg4ZGQ3NjUxMmMgbGVnYWN5LXRydW5rCisyNDc2NiAzZDJjYzg1NzcxMjdlNTYzZThmYjJjY2I0YTA0YTJhNTBiNTk4ZjI1IGxlZ2FjeS10cnVuaworMjQ3NjcgMTQ1MGVlNmI4YjllY2Q3ZGE5N2FkNjAyNjYyNDM5MGRiZTJlMDM3ZCBsZWdhY3ktdHJ1bmsKKzI0NzY4IGM2NWZhYzdjMjg0MzNlNmU4NjE0ZjVjZjg2ZTg5MzQyZjU5M2RmOGIgcmVsZWFzZTIxLW1haW50CisyNDc2OSA5N2Q4NTc4ODFjODJhZjNkMmRlOTdiODdlZWRiNjRlY2IyMDliYzUxIHJlbGVhc2UyMS1tYWludAorMjQ3NzAgZjU0NjYyM2VmMGM2NTY1ZGNmYjRlOTE0YWUzOGM5ZGQ3ZWZjNTQzMCBsZWdhY3ktdHJ1bmsKKzI0NzcxIDVhNTkwZjE5NmVjNTgzYTcxODBhZTdjYTU1OGRkMmQ2YjFkOWI0OWEgbGVnYWN5LXRydW5rCisyNDc3MiA5YTYzNGQ2MDU0MmFlNzE2NDQ2MjczMGM1NTQ2N2VjMDM5NjUxYjM2IGxlZ2FjeS10cnVuaworMjQ3NzMgZDdhOWViYTc0ZmUyNjExY2ZhMGViMGYxMDcyMWUxMGRiM2M5MzUwNSBsZWdhY3ktdHJ1bmsKKzI0Nzc0IDMwZWZlNDZmOGUzY2FhNWFiMWZlNDQwYTE4YjMxNzM5ZmI3ZWE0NjQgbGVnYWN5LXRydW5rCisyNDc3NSAwNWFkN2E2OWQ5MzMxMWM3ZGYxYTlkM2FjNWIzNTQ5MDg2ZTUyNTJmIGxlZ2FjeS10cnVuaworMjQ3NzYgZDdkMjVlYzAyZDQxMjliZWNlM2VmMGVjNmNlYjAyYjRiNzI4NDM2NyBsZWdhY3ktdHJ1bmsKKzI0Nzc3IDRmNjIxYmFjNzUyNjVkYTI3ZWQ0MmIzM2E4ZjIxMWM5NGU4MTAxZGQgbGVnYWN5LXRydW5rCisyNDc3OCA1MTkzMjkwYWVmMGE1YjRjMWUzMzg2ODJlNzU0MTg4MGFmM2ZkZGIyIGxlZ2FjeS10cnVuaworMjQ3NzkgNDBjNTZmZWZhMTc3MmI2Mjk0MDY5YWEyNTNhZDUzMWI1MTUxYzY2OSBsZWdhY3ktdHJ1bmsKKzI0NzgwIDc3Yzc0NzZmNDFiZGU3Njc0MTI4M2EwNTkwN2M3ZDljMjJmMmI2OTggbGVnYWN5LXRydW5rCisyNDc4MSA3ZTc0NTU4OTBmZDZlYjFhNTljNmZiNTU0NDE2YjJlYTAzMzQxMGFmIGxlZ2FjeS10cnVuaworMjQ3ODIgOTdmMDk5NjcxYmJjZGRlOGYwMmI4ZGUwM2M2YmIzMTUzYzgzZjYxMyBsZWdhY3ktdHJ1bmsKKzI0NzgzIDNhYmYwMDIxNWMxY2NlMDYzMDNiNTIwMmQ3ZTI5ZjE1MGU1ZDVmZmQgbGVnYWN5LXRydW5rCisyNDc4NCBmYTBiZGUzYzg2YjI3OGI5NWQwZGVkYWRiZDdmNGRkMGFkOWM5MmRlIGxlZ2FjeS10cnVuaworMjQ3ODUgYmU1Y2EwYjI1YmZkYzdiZGIyNjMxODMwYTVkMmUxYWFkMDgwZjM5NSBsZWdhY3ktdHJ1bmsKKzI0Nzg2IGZiNmIzZmM0ZTBjMWFhYjEzNDY4MGM5ZWJmMGY4NzQ2NzM3MGEyYWYgbGVnYWN5LXRydW5rCisyNDc4NyBiZDEyYjU5NzNkYWE5OTY1MjRlMTk1YTY0NmY3NjdiOTY5Zjg1MmY0IGxlZ2FjeS10cnVuaworMjQ3ODggN2FmNDVhZmZkMzUzMmEwYjA4Y2Y3YmE4NGM2Yjc1YjVkNjhiMGQ3ZCBsZWdhY3ktdHJ1bmsKKzI0Nzg5IDk4NDY0Mzk0Y2NlMzM2ODNiYWVlMTZmZmI4YjJjYTg0NjNjNTA0NWIgcmVsZWFzZTIxLW1haW50CisyNDc5MCBlM2MyZmQxNzdhNmU0ZTJlZTc4OTg5MzZhODBjNWNlZTUyOGVjNGYxIHJlbGVhc2UyMS1tYWludAorMjQ3OTEgYzU3OTdhMDA4M2Q4ZmEyYTBkNTM2ZTZkODRkNTlmYTkxZmFmOWVhMCByZWxlYXNlMjEtbWFpbnQKKzI0NzkyIDQ2NWM5MzI1YWY2OWY0MTg2NGQyNmNlODc3MGVkYzY5YjUyZTlmM2QgcmVsZWFzZTIxLW1haW50CisyNDc5MyBmNjg1ZjA3MDRiYmQzYTk4NWNkMmNlN2ViNzdiOGZlMDEwMDg0N2ZmIHJlbGVhc2UyMS1tYWludAorMjQ3OTQgMGY3NGRiNzRhOGY0MDgwMzA3YmM0OGE3YmRkMGI1ZGVjOTZjNjI4YSBsZWdhY3ktdHJ1bmsKKzI0Nzk1IDMzMDNmMmQ5MmNlZjljOGQzNDg5MmVjYzc0MDQ3OWU3MDFkOWEzNzggbGVnYWN5LXRydW5rCisyNDc5NiA2NjRhYzgyMjdjYzUzZjNlMzRhYzlkZmU5MDZiOWJhZTJkZGQ4NjZhIGxlZ2FjeS10cnVuaworMjQ3OTcgZGY3NzBkZDBiZWM0YTc2ZmVmYmE0YjE3ZTIxN2JiZTgxOGJiZjhhMSByZWxlYXNlMjEtbWFpbnQKKzI0Nzk4IGIyNzU5OWFiY2M0OWExMTdlODFkZGU1Nzk5N2ZhZGY0OWEyY2Y5NmEgbGVnYWN5LXRydW5rCisyNDc5OSA5NDIzMjQ1NTE0YTg4NWVjOWU3N2JkOWI3Y2ZhOGExY2VkYTcwNTU0IGxlZ2FjeS10cnVuaworMjQ4MDAgM2E5MzE0NWI2YTk2MzJkYjI2OTQ2ZGE5Yjk3YWYyM2FlNzA1YmY4ZCBsZWdhY3ktdHJ1bmsKKzI0ODAxIDRlMzVmYTVkNTcwOGRjNTU3MGNiZWEzMTc5MmQ2YTc0YzNiMWMyZmQgbGVnYWN5LXRydW5rCisyNDgwMiA4MzQ4ZTg0NDFlYWY3NWJlODhlYmJlOTc3OTJjMzA4MjFiNDJiNTcxIGxlZ2FjeS10cnVuaworMjQ4MDMgZjE4Y2ZkZTJlODA0OWU4ZTBkMjk2ZmNkZGQ0ZjNjYmNhNmQ4ZTMxYyBsZWdhY3ktdHJ1bmsKKzI0ODA0IDk1OWEyZWQ1NzM1Y2QwODU5YmRiZTlkZDZmYzE5YmE1ZjkxMWM3MWUgbGVnYWN5LXRydW5rCisyNDgwNSA4MDNhYTBjMmIxMzBmOTJkNWQ0MjU3OTZjNDhmMzVjODZmNGQxYzg2IGxlZ2FjeS10cnVuaworMjQ4MDYgNjczYmJmMTE1NTA4OTIyNWY0ZTliYWIyNjBmODM0OTg2NmU2ZDQyNiBsZWdhY3ktdHJ1bmsKKzI0ODA3IGUxZjNmZTU2NzdkYTNkOGVlNWVlOGE0YTA4YmQ4ZmU1MzJkNDM5ODggbGVnYWN5LXRydW5rCisyNDgwOCBhM2IwNjczYmEyY2E1ZmE0M2MzOTg1NTY3N2Y0ZTQ1ZDQ1N2ExMjZmIGxlZ2FjeS10cnVuaworMjQ4MDkgYWFjMjMzMzFhMjVkNzgzMGVmY2ZiNjNhOWQzMGM3M2MzNWYwMmNjNSBsZWdhY3ktdHJ1bmsKKzI0ODEwIGFmMjYyM2JiNWQwYmMzZDhkYTRiMmVkMWRlZDkwN2YxMjRkOGU2MmIgbGVnYWN5LXRydW5rCisyNDgxMSBjY2IyNmExMTg4NjdlODIwNGM3NGE3NmRlODgwYTc0NjI1MDczNDg0IGxlZ2FjeS10cnVuaworMjQ4MTIgYjQ4OTEwYTk1Nzk3MWE3OWU5YTM5NzRlY2I3OTNhODg2ZWY0NTAzZiBsZWdhY3ktdHJ1bmsKKzI0ODEzIDRjODJjOGVkNmRmNGQ0YzQ3ZDQ3NTVhOTk0M2UwY2YyYTcwNDgyMDIgbGVnYWN5LXRydW5rCisyNDgxNCAyMWM3ZDc1NjU5NzdjZWE2OTY2N2ZkODQ2MzQzOTNlNjhkMTNlNzJmIGxlZ2FjeS10cnVuaworMjQ4MTUgMDBiM2FkMWNlNDA0ZDZmZmQzM2FiNjRlZWZjMzU2ZDBhMTA4YmM5ZCByMjJyYzEtYnJhbmNoCisyNDgxNyAwMDNhOTg1Y2FiOTViYmI2YTk5YjYzNjE4YjBhZmQyM2E0M2M2MmMyIGxlZ2FjeS10cnVuaworMjQ4MTggNzYyMjU0MzRhNmZlZDc0NGExYzJkNGU5ZGVkZWUwMTQ3ZWJlODdmNiBsZWdhY3ktdHJ1bmsKKzI0ODE5IDg3MzI5MWE0ODg5ZWM5MmU2ZWIwOGY0NzYwNWM2MzgzNDFjYzRmZGQgbGVnYWN5LXRydW5rCisyNDgyMCAyZDM3NmQ5MjZkYTgyYTkwMjFmYTgxNDJiNGQ1ZWY0NjAyMDgxMzhhIGxlZ2FjeS10cnVuaworMjQ4MjEgOWQ5NWMxYTg5Y2ZjYjBhMzM5N2E5NjhiZTc0YTMwZmUzNmMyNDhjMyBsZWdhY3ktdHJ1bmsKKzI0ODIyIDVlMDZmOGZlMzhlZTRhZmY4MzdlMTE2ZDFhNDNkYjgzOGE2OGRkNDcgbGVnYWN5LXRydW5rCisyNDgyMyBhMTk5MjY5NGM4MjQyNWUwYzQyNWM0ZTMxMzExMjNmNGFlZDdkNTkxIGxlZ2FjeS10cnVuaworMjQ4MjQgYmIxNjhkZTUwYTAzMmI3Mzk4YzhlNDUwZjFhYjM2MjYxOWJkZDNkZiBsZWdhY3ktdHJ1bmsKKzI0ODI1IDFkMWM0NjgyNGZjM2U3ZWQ1MDBhYTc0YTU0YmY0N2UyYjFhNWJmNGQgbGVnYWN5LXRydW5rCisyNDgyNiBiZjY0NDhmMDIyNzM3NGVkYTkxODllZWU1YmRhYzU4Mjc2Y2JkMTYzIHJlbGVhc2UyMS1tYWludAorMjQ4MjcgY2E0NTBlNGRmZjlhNjI2NDg0MDUyMTdjNGU0NDA3ZGVmZDhjOGVkNiBsZWdhY3ktdHJ1bmsKKzI0ODI4IDA0NDYzMDE2MTA5M2M5MTc0NGM1MzllNmY1MGI5ZWQ0MGI2M2FkYTYgcmVsZWFzZTIxLW1haW50CisyNDgyOSAxNjIxMDZiMTZlNDQ0YzFhNDc1YjYwODRkMGRmZmE0NGIzMTRkZmIyIGxlZ2FjeS10cnVuaworMjQ4MzAgNDRjNDc5Zjg0ZTM2OGMwYjVmM2Q4NTM1ODRiYzg4OWFmMzI2ODEyOCBsZWdhY3ktdHJ1bmsKKzI0ODMxIDI0NzQ0MTRkNDM0MjkyNGIwNmZiYjlkYzE4YmIwNjQ0NmZhZjg0ZjEgbGVnYWN5LXRydW5rCisyNDgzMiA3YzJmOTVkZWNjYWQ1ZTI0ODQ4NWMwNTAxNzM4NzAxNzAzNmI3YTgxIHIyMnJjMS1icmFuY2gKKzI0ODM0IDY1ZjQwOTRmNDNmNDZmZDUyOWE2ODRmZTI5YTc4YzE1MjIwMjEzYmYgcmVsZWFzZTIxLW1haW50CisyNDgzNSA4MTRjZTA5Mjk1M2VjMjNmMzk4MTRmYzhkYzBkNDBiZmQ3ODVlNzVhIGxlZ2FjeS10cnVuaworMjQ4MzYgZTkyMDJmZTMyZjBiOGZmNmVhYjg1OTlkMmMzNGY3NjhiYzhiZDZmZCBsZWdhY3ktdHJ1bmsKKzI0ODM3IDg4YmFhNGM0ZWVlMTA1YjZlNDc5YWY0ZTViZDEzNzY2OTMwYThjN2YgbGVnYWN5LXRydW5rCisyNDgzOCBjY2E1NmE5NzZjYjI1Y2IwNjAyNDg1MWU4MWZhMTJmMjBiMmE2YjQ2IGxlZ2FjeS10cnVuaworMjQ4MzkgNGEzNDg2MmEzOTk0MjNmNDcwMjU5MzlkMzQ0ZmMzOGYwYWQ4MzU3MCBsZWdhY3ktdHJ1bmsKKzI0ODQwIDY1MmUxODI3OTU4M2MxNDZhOTI5NjQ4NWQxN2NkZDllNGFhZmYxNGIgbGVnYWN5LXRydW5rCisyNDg0MSA1YTUwNDEwMmEwOWM1MDI0N2ExMjNhNzdkOTFkMmFjZjMzMTlkYmFjIGxlZ2FjeS10cnVuaworMjQ4NDIgYTAzYjEzYmUyZjY4Zjk1YmQ0NmRiZGUxYjJjYTg2MWJmY2ZhNDk5YSBsZWdhY3ktdHJ1bmsKKzI0ODQzIDM4MTVhOTU5ODE5YzQ2OTM4M2I1ZTdmMTNmZjg4MTFjYWE0YzQ0MWEgbGVnYWN5LXRydW5rCisyNDg0NCAzYzlmMzkxZDdlMDMzODQyMGNjMmJmODk1OWFmZWIwNTBkOWIyY2JkIHJlbGVhc2UyMi1icmFuY2gKKzI0ODQ2IDMyNDhlYWQ3MTkyODc5ZDhjYmQwYzQwNDc0ZjEzMzQwN2ZlYzFkNjkgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NDcgZDZhNDRmZDFmNGMxNDM3MDkwNjc5Mjc2MjE5ZjRkNjc2NjYxZmM4OSBsZWdhY3ktdHJ1bmsKKzI0ODQ4IGUzZGUzOGFhNjQ2MjMxNDgxYWQwMzY0ZTQ5ZDAwN2M4NDQwNjdkYWYgbGVnYWN5LXRydW5rCisyNDg0OSAwOTdkZDk1M2UxMTk2MjRmMDE5Zjg5MDVlYzM4YmY3NTUzMzZkNmZmIHJlbGVhc2UyMS1tYWludAorMjQ4NTAgNTY4Yzc1ZGQ1MDc4MmE5YjQwMzExNzE2YzIzYjk4Y2IwZmUzYjBjZiByZWxlYXNlMjEtbWFpbnQKKzI0ODUxIDg1ZTY5NGU5YjlmYzE0NjQ0ZDI1NTFiMDM0MWQyZDBhZmRlZGU5OTcgcmVsZWFzZTIxLW1haW50CisyNDg1MiBlM2FhNWFhYjI4NzZkZmJlMWQ5YWQxYWY5ZWU1YmRmZDA3YWNlZDEyIHJlbGVhc2UyMi1icmFuY2gKKzI0ODUzIDgyYWM4MzQ3NDQ2MjkxMTI1YWUxY2VjZmNmYTgzYzY4Yjc2MGZkYjYgcmVsZWFzZTIxLW1haW50CisyNDg1NCAyNWJhYmQ0MzJiMjRmNGJiMTI1ZGFlMWUyY2JlZThmMTc2MDA2ZmZmIHJlbGVhc2UyMi1icmFuY2gKKzI0ODU1IDMyNmQ5OTcyZjZmNjEwMDM2ZjlhNGU4YmJlZTIxYTFhNmE3ZjY0MDcgbGVnYWN5LXRydW5rCisyNDg1NiBlOGQzNmMxODMxMzc1NzM3NGZiYzI4NjViZDIwMGU0NzI0NWU5ZGI2IHJlbGVhc2UyMi1icmFuY2gKKzI0ODU3IDA0NjEyZGMzMjNkZjMwODIwYzQ4ZThlOGU4ZDIxNzA1NGRjNzNjZmYgbGVnYWN5LXRydW5rCisyNDg1OCA3NjdkMjQ1ZmQ4ZGNmYjY5ZWY2YjRmMzNiNGI5YjI4MWYwZjM3ZWU1IHJlbGVhc2UyMi1icmFuY2gKKzI0ODU5IDA5NTE4YzRjNjg1MDhiNDJkMDhmNzA4OWE0NGI4OWFkOTAwYTI1NjQgbGVnYWN5LXRydW5rCisyNDg2MCA0OGYzMjE5OGNlYjkxZjQ5ZGQ4YTAwYTQwZDkyZGQ0YTU1ZmUwNTdkIHJlbGVhc2UyMS1tYWludAorMjQ4NjEgMDgyNWViMWRiZWI4MWNhYjc2MDE3ZjVmNGVhMzdmYmEwMDhhZDgyNyBsZWdhY3ktdHJ1bmsKKzI0ODYyIDE3OTk3ODIwOTcxZDBjMjliZTU3ZGNjNWExZDlmOThhOTIzZDE0ZTMgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjMgZmM5ZTI3MTE3MTRkZWU5OTU5NmFkMzY0MTNkMDJhMmJjZmZlODdiZCByZWxlYXNlMjItYnJhbmNoCisyNDg2NCA2YzIzYTNmYjBiMDQ5ODcyYTUzNzc0YWViMTc1MDY3MjUwNmIzYTJlIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY1IDYwNjM1NDQwMTM5NmY1NDA2YmZhMDE5OWQ3MmZhNGFiMWY3MDYzZmYgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjYgM2ZmZWVkYTAyMGRjYWUxMGQ2ODIyMzJlN2M1YWIzYThiNDAwZTRkYiByZWxlYXNlMjItYnJhbmNoCisyNDg2NyA0NzljZjg4MmJkYjVlNjYyY2I3MThmZDNiZTMzYTA1MDcyYjQ1ZDAyIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY4IDExMDAzYjY2NTU0NWQ2MWYxNDhiZTdjMDg1MDA5YzJlYzUwN2Q1MGUgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjkgMzI0Njg0YWRiNDgzNTI0MTA1MzAxM2NlODcwMGE1NjQwNjA4MDA1YyBsZWdhY3ktdHJ1bmsKKzI0ODcwIDc0YzVkY2MxNWI3MzU1NjU0OTI2ODhhNWJlNjBhZTg2NWE3MTY4NTMgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzEgZTkzZjE0NDg2MmRlOTcyYjFiMTE3ZTQ2YTFmY2EzMmZmZTIwNDQ2NyByZWxlYXNlMjItYnJhbmNoCisyNDg3MiA4YWY4NmE5NTJiMmNhM2ZhMjBiNzgzZmU4ZDhkZTAzNDFkNzJjZTdlIGxlZ2FjeS10cnVuaworMjQ4NzMgNGY4OTMyMTM0ZGNhM2IzZmQ3YTQ4MTAyMTIzYmI2NzQ4ZWE0NDEwOSByZWxlYXNlMjItYnJhbmNoCisyNDg3MyBkY2E4YjU4NzQ2NDM5YTlmN2RmMjEyZjY0M2VlNGQ0MGViOGRmMjRiIHJlbGVhc2UyMi1icmFuY2gKKzI0ODc1IDkzNWI4NjAyY2FkOTgzNjcwNGEzYWExN2NiYmQ4ZTRlYzk4MjQwOTIgbGVnYWN5LXRydW5rCisyNDg3NiA5MDI1MTk3YThlYTBjNGJiYzc2YTBkMDhiMjQ0ZTRhN2RkOGIwMjMyIHJlbGVhc2UyMS1tYWludAorMjQ4NzcgZTBhNWQxNmE5Y2I5NTE5NmNhMTg2MTQ0MjMwOTNiZWIyMjFlMzlkMCBsZWdhY3ktdHJ1bmsKKzI0ODc4IGNiNTVmMTViMjczMDEwNWZkOWI1OTNlMjFhOTkwNzI0YzliOTQ1YTcgbGVnYWN5LXRydW5rCisyNDg3OSBiNDg0YWE2MWNhYjRhNmFlZTZmZjA3ZjE4OTJmOTVhNDVhOWI3ZWExIGxlZ2FjeS10cnVuaworMjQ4ODAgOWQ0ODBkMGZlNjkwNTcxY2ZiYWU1MjBiMmQ3MWQ2NWJjMWVhZTAyMiBsZWdhY3ktdHJ1bmsKKzI0ODgxIDI2OGI1N2Q5ZGFlZDE4YTNjOGU3NmI1ZDQzYjBmYThhNWQ5MGM5MzQgbGVnYWN5LXRydW5rCisyNDg4MiBmYzgxMzE2NGNlOWY5ODEzZTY3MjAwYjQ2N2JjOGU5Zjg1OGJkZGNiIHJlbGVhc2UyMi1icmFuY2gKKzI0ODg0IDM0OWQ2NmNkODc0YzMzNWRjNDY1NjA5NGJkM2JjNDc2ZjFhYjk1MmQgbGVnYWN5LXRydW5rCisyNDg4NSA3YzI4ZTk1NmY5YjBiYWQ2YmM2YTE0OWUzZWVlY2JlMDFmMjdlYzA2IGxlZ2FjeS10cnVuaworMjQ4ODYgYWMzY2UxZmFlYzY4ZWEzYzcxMTRhMWNmMGRlNGNmYzI2NjBmN2EzNCBsZWdhY3ktdHJ1bmsKKzI0ODg3IDQyMzJkMjU3ZTRmZjIyZWI4N2Y3YjMzNTAxODc0N2E5ZDc2YjMwYTcgcmVsZWFzZTIxLW1haW50CisyNDg4OCA0MWZmNDc3NzkyNmViNTE5MTk5YTVkYjk3MWVlNTVkOWVhY2RmY2E1IHJlbGVhc2UyMS1tYWludAorMjQ4ODkgMTMzOWI2ZDMyZTk1M2RiOGI4YjZiNDA2NzY4Nzk5NDc4MjIzNDRkZSByZWxlYXNlMjEtbWFpbnQKKzI0ODkwIGU2OWIyMWYyNTI5ZWU2YzQ1OWFhMmZiNzI2OGZlOTQ4M2ZhMzU1ZGEgcmVsZWFzZTIxLW1haW50CisyNDg5MSA0YTJjM2FlMDllMGM0ZWZkZWEyYTU2M2NjODM3MDZjYjFlM2RkYzAyIHJlbGVhc2UyMS1tYWludAorMjQ4OTIgMmE3ODViNjY4YTE2MDkyNTRlZGM3ZjYwYjNkNjg2M2ZiMGE3MmNkZSByZWxlYXNlMjEtbWFpbnQKKzI0ODkzIDAwNmM1NWJkZjdlMTU2ZmMyZTU3NTZlZGRjNDBmNTI3ZWY2OTkyYmEgcmVsZWFzZTIxLW1haW50CisyNDg5NCBjNDhkOGIzNjJhY2VlMWNkZTJiMDc0MDZiYWMxM2MwOGQ0MjZiYzQ5IGxlZ2FjeS10cnVuaworMjQ4OTUgY2EyN2Q4MmFjODliNDZlM2QzZTllYTNlMDdhMzM0ODkyYzlkNzcwOCBsZWdhY3ktdHJ1bmsKKzI0ODk2IGU4Y2IyMzZhYWQyNzk2MjZmYWFmN2ViYTZjNGY4NmI1ODE1M2M2MWIgbGVnYWN5LXRydW5rCisyNDg5NyA3YmRlOWNhOTA1NTQ5MzRlMTJlZGE2ZDRkNmQ5MWJjZGE0OGRlNzE5IGxlZ2FjeS10cnVuaworMjQ4OTggMGFmOWFjODdmZmJjMWQ5ZTMyNTY2ZjgyMTUzMTExNjUwMWEwYmU4ZiBsZWdhY3ktdHJ1bmsKKzI0ODk5IGJmNTE5MzIxZTc5NjdlMmQyMDZjMTkwYjgyY2I3ODAxNWRhZGM3YjQgbGVnYWN5LXRydW5rCisyNDkwMCA1ZDQxMzU2MDllZmMxYTg0MDgzZGZlYjFmMWNmZDUyMTk5ZjBjYTlkIGxlZ2FjeS10cnVuaworMjQ5MDEgOWMzMmU5MjAwYWJlZTkxZTIxNzA5MjcyNzVjOTFjZGMwYTQzNzY4YyByZWxlYXNlMjEtbWFpbnQKKzI0OTAyIDVmMzIxMzY1NWQ5NTVmNDE3YjUxMDFiODdjNGFkMzU1ODZmNjgyMWMgcmVsZWFzZTIxLW1haW50CisyNDkwMyAxMTRhNmJjZmU4NmJiODRmMWZjYTY3YmNlYzUxYjFhMWMwMjhmYjhhIGxlZ2FjeS10cnVuaworMjQ5MDQgZjcyMjQ0Y2Y4NWE5Yjc2MjJiNDdiYWQ2ZDc0ZWIwOGQ2OWE2ZTE2ZCBsZWdhY3ktdHJ1bmsKKzI0OTA1IGFkMTI2YzA2MzY1NDhkMzViZTQ3NWExMWQ2MTZjZTZlNzdiY2I2MzMgcmVsZWFzZTIyLWJyYW5jaAorMjQ5MDYgYTYwZmNkYzc1MzQ2YjNlMzY4YTQ0ODQwOTlmZTFlNTdiYzdhNzM0NCByZWxlYXNlMjItYnJhbmNoCisyNDkwOCBkNTk4NjhiYWZlYjEwYjJjZWQ4YzJhYjI2YmQ0NjM4YjA2Njg5ZTkwIHJlbGVhc2UyMS1tYWludAorMjQ5MDkgNThhODJhNGJlOGIxNzNlNTJlOWZjY2UxZmVlMzNiNmZkYzVhM2IwMCBsZWdhY3ktdHJ1bmsKKzI0OTEwIDY4ODQyZDI5NWQyY2NjZGY4NmI5MGNjYjljMWM4NDY0NTU2YTcxNTggbGVnYWN5LXRydW5rCisyNDkxMSA4MmNiMTc0OThmYzFmYjdkZWI3M2IyZjNiOTkyNjM4ZGM1NDgzNDZiIGxlZ2FjeS10cnVuaworMjQ5MTIgM2IzOWJhMmI4MDBlZGQ3ZDlhMjQ1NDdmMDVmMzBkNTlmMzgzZmM2YyBsZWdhY3ktdHJ1bmsKKzI0OTEzIDE4OTQ3OTZlOTMwYzE0NTc0YmQzMzRkYmRlNTI4NmU1MTg1NGU5ODkgbGVnYWN5LXRydW5rCisyNDkxNCA0NTU0MDcyZTc2YjRmMDlhYjZmZWM5OTNiOGNlOTA4MDRlYTFhMjQxIGxlZ2FjeS10cnVuaworMjQ5MTUgYjJlNzljYWE2OGUwYjFjOWJjODVjZTM5ZGNiMzNiYTExYWI0ZjJjMSBsZWdhY3ktdHJ1bmsKKzI0OTE2IGU2YTdhZDZjMzY1MmRhM2EzOGQ0YmZhMjY1OTdjOGRiNWZjZDA3NzYgcmVsZWFzZTIxLW1haW50CisyNDkxNyA1OGI3N2VmNDcyZDRjMmEzMzIwZjY1YzQ5OGI3NmU3NGIwYThkYjA5IGxlZ2FjeS10cnVuaworMjQ5MTggNTIwNTNhZmNhZDMyNWM2Mzg2N2E5YzU2ZTA4MTUwYmNjYzk5ODYxMyByZWxlYXNlMjEtbWFpbnQKKzI0OTE5IDFlYzM0YTBkMDJhNzdjZTQzYWIyOWJlZGI1NTNkODhlY2E4YTkzNTUgcmVsZWFzZTIxLW1haW50CisyNDkyMCA0M2I2NDI0NWYxYWE3YjllMTNjNzdlNzk2OWNhOTk5Nzg5YjlkMWZmIHJlbGVhc2UyMS1tYWludAorMjQ5MjEgYWI5MmVhYTE0MGVmOTRlNzVjZDJmNjM5Yjk1ZTRmNmVlYWQ2YmFlOSBsZWdhY3ktdHJ1bmsKKzI0OTIyIDg0NzQyNWQ1YmNhODA3OTM5Yjc2ZDkxODY5MTA4MWY2ODQzN2IzZTkgbGVnYWN5LXRydW5rCisyNDkyMyBmODQ3NTEzNWFjMTM0MzZmMDYyYzM1ZWUxOWY4YzZjN2M4OGYyNWU4IGxlZ2FjeS10cnVuaworMjQ5MjQgZmNiNjQ5YjEwMDRkZTM3ZTk4ZDFmMjc3ZDRmYjE3YTM4MDQxZGFiYyByZWxlYXNlMjItbWFpbnQKKzI0OTI1IDVkNzc4MjViYmMxMDY1OGYyMTE1MTMzNTVlODdiYWNmYmFkZjBmOTkgcmVsZWFzZTIyLW1haW50CisyNDkyNiA5ZTAyMzNjMGUwMDNjOTE4Yzc1MjQzOThkMGYwMjA4NjY3YjEwZmI3IHJlbGVhc2UyMi1tYWludAorMjQ5MjcgYWM4ZDg1ZGE2ZDBkYmJlNDg3MzdjMGUxMDcxZTVjMmZjNmY3ODI4ZCByZWxlYXNlMjItbWFpbnQKKzI0OTI4IGUyMDQ3YWYwYjJlNmU2ZmQyYjUyNWVjMTkwYWQxNmQyNGQ1ZjY1ZTMgcmVsZWFzZTIyLW1haW50CisyNDkyOSAxMmUwZDU4ZTQ0YmRiYTE0Y2E0NjZhM2Q3N2Q0MzhhMjZlNDVlYTBlIHJlbGVhc2UyMi1tYWludAorMjQ5MzAgMThkYjkxYzBhNzhmMWNlN2YyMGI0MjgyN2VhMTJkODU3NDFjNTczNiByZWxlYXNlMjItbWFpbnQKKzI0OTMxIGVmZDA0ZDFmMzA4NWUxZmE2MTQyZGYyMjM4MmQ2YzIxZWM2YTdjNTAgcmVsZWFzZTIyLW1haW50CisyNDkzMiBjZDc3YWExMWVkZGMxOWY2YzhhM2Y1ZjI1MWYyY2E1ZmQ5ZmVjNjljIHJlbGVhc2UyMi1tYWludAorMjQ5MzMgODEyZDE1NDNiYTA4OWFhMTAzZjQ2NTZiM2I4OWY3ZTgxMmZiNTNiMyByZWxlYXNlMjItbWFpbnQKKzI0OTM0IGQwODlkMWU4NDExY2NjNDM0OWI1MWM1MzQ1Y2Q5Nzk4MjEyYTRiZmUgcmVsZWFzZTIyLW1haW50CisyNDkzNSBmNzc3NThjODcyZmI1MTFmNjNiMDAxYmRhMGM3MWEyMDhmN2U5ZWE2IHJlbGVhc2UyMi1tYWludAorMjQ5MzYgOGQ1MWM3NTM5NzE5YjE5YzU0MTViODYyNWQ4MWY2OTIzY2Q0ZTU0NiByZWxlYXNlMjItbWFpbnQKKzI0OTM3IDljY2VhZDVmZDI5NzExNzhhNmQxNjRiNzhlNjBkNTFlZGE3NTlmZmYgcmVsZWFzZTIyLW1haW50CisyNDkzOCAzOTc3YWQzYjA4MjU3ZDUwYTY0N2FiODY2MmQ4YWU0ODk4YTA1Njc0IHJlbGVhc2UyMi1tYWludAorMjQ5MzkgYjkzNzFmMzI0MWI4NTAwN2UyYjhhNWY2ZDUwNTVmYjliZTI4MWFhMCByZWxlYXNlMjItbWFpbnQKKzI0OTQwIGFjNGIxYzRjM2IxMmYyODRkZjM3MWEwZmVjN2ZkNGZiZTQwYTA4NzcgcmVsZWFzZTIyLW1haW50CisyNDk0MSA3YjJkNzAxZWM0MDRkNzM5YTg4MDY2MmMyMmVhMzAxNjg2NzcyNzQyIHJlbGVhc2UyMi1tYWludAorMjQ5NDIgYTk0ZTQ4MjEzOThkYTI5YzU4MjAxN2Q5MDIzZDFjYjNlOTE3MzU3ZCByZWxlYXNlMjItbWFpbnQKKzI0OTQzIGEyZWFiNGRlNTUwNTM5OWIyMDE0NTczYWI5OGNjZjBmZmIxNjVhYTYgbGVnYWN5LXRydW5rCisyNDk0NCBlYzYyMzA0NzA3M2EyYmU0MTcyODQ0OTk1ZmMwY2Q1ZGQ2NGM0Y2Y4IGxlZ2FjeS10cnVuaworMjQ5NDUgMTZhODI0MjNiODYwMjA0NTdhNGY0ZTgxOWM4MDRiNGJmZjIyN2U5YyBsZWdhY3ktdHJ1bmsKKzI0OTQ2IGZkYzM5ZTI3YTQ5NGU4YjZhNzRiMmU1MDM3MjE3MTZjYzk4YTI4ZWQgbGVnYWN5LXRydW5rCisyNDk0NyAyOWMxYTU4ZGRhNTNmYWYzNTk5ZWNlNmY4YTFhZDk0NDIyNTMwMzVjIHJlbGVhc2UyMi1tYWludAorMjQ5NDggMDk3YWUwYWRmNDdmYmM0MTZjY2RmZDQwMGFlYTc5MTEzODE3NDcwYyBsZWdhY3ktdHJ1bmsKKzI0OTQ5IDZlOWE0ZjlhNTVhNDFiMzRhNmY5YzZmM2IzZGI4N2MxNWE1NDdmNjkgbGVnYWN5LXRydW5rCisyNDk1MCBkMDRlYjhkNjY0ZTJkZjMwYzZmYmUwNGFkZWUwZGNlM2VkZmNmODI5IGxlZ2FjeS10cnVuaworMjQ5NTEgOTJkYTc0YzhlNWU4YzAyYjdkN2ExOTU1NzkwY2VhNWZjNTgzNDM5MCBsZWdhY3ktdHJ1bmsKKzI0OTUyIDViN2IzODZjYjBkNDUzNTc2YTdiODUxOTY4YjhkMWZiNzkxNzRjZmYgbGVnYWN5LXRydW5rCisyNDk1MyA3ZGQzOTU5ODgyNzU4MWNiMTVjZjZmNmU5ZmI3NmY0N2ViZTdiNmVlIGxlZ2FjeS10cnVuaworMjQ5NTQgZmY3MGU1NjM0YWU5MTI3YTc5MWZiMWIzN2ViZWRhOTQ2MmY3NjIwYiBsZWdhY3ktdHJ1bmsKKzI0OTU1IDE4YTcwYTgyYWYxNTk3ODg2MTQ2MmY3Yjk2ZmVkYmI2OTQ1OWQ5OGMgbGVnYWN5LXRydW5rCisyNDk1NiBlNTYwNDdkYjY1Mzg0NzIzNTMyMmI0NTAyMDIyMmNhM2IzNGEzZTgwIGxlZ2FjeS10cnVuaworMjQ5NTcgNWZmOGJiMjUwMzFjODIzMDhjODFhMWExOWFmYjJiZTgyYWQ2YTJmZSBsZWdhY3ktdHJ1bmsKKzI0OTU4IDg1NzgzNTVkMjNkMzQ5NWEwNGEzMDhjNzljNTkyZTAwNTIzZWM2OTIgbGVnYWN5LXRydW5rCisyNDk1OSBjYWM5MzFhZDNjYzVhNjcyZDBlMjY2MzU5MTZiZGQ5MDAxZWY2MGI0IGxlZ2FjeS10cnVuaworMjQ5NjAgNjk3MDUxZjY3ZTk3NmE1MDNhNjgzNjEyZjhmYjgwNzc4ODhjNWZmMyBsZWdhY3ktdHJ1bmsKKzI0OTYxIGZlNTRlOGQ5M2NiNDhjMjBkMWY4NTAwNmUwNzE0NzRmYmE1YjliZjIgbGVnYWN5LXRydW5rCisyNDk2MiA1MmIzYjg0NmYxMWY1NGRjYjVkNjdhMDM2MmZjMjJmMDA3MzBhMjYwIGxlZ2FjeS10cnVuaworMjQ5NjMgYTUwZGY2NWFjYTdhOWI4MTUwMDRjY2NiYzQzYTY5MzExYTU0NzVlNCBsZWdhY3ktdHJ1bmsKKzI0OTY0IDJmNDA3MzI2OWRhZmQzMzg3YmExODFhYWRmOTlkM2JkMmUwZmY3OGIgbGVnYWN5LXRydW5rCisyNDk2NSA2NGQwYzk0OWYzM2UyZmViZGE3YmMxZTQ2M2ZhOGQ2NzY0MGI1NjM4IGxlZ2FjeS10cnVuaworMjQ5NjYgMDM1ZDljOTZhYWVjZmM4ODQwZDU4MjQ0MGI1ZjFkN2JjYjczNjM2OSBsZWdhY3ktdHJ1bmsKKzI0OTY3IDY3ZGExMTI5MzQwNmNkNGY3NDRmYzMxODY3NzUyNTUwMzA1ODIyNjYgbGVnYWN5LXRydW5rCisyNDk2OCBiZTIxM2YxY2Q0NjJlMWI1OGFhZmNhZjFkMjQwMmVmYjQ3ZmZiMDg1IGxlZ2FjeS10cnVuaworMjQ5NjkgZmIzNGY1NWEwM2ZhYmY0MDIxN2YyMTc0ZGVhMWMyMzMwNDkwN2I2MyBsZWdhY3ktdHJ1bmsKKzI0OTcwIDNiYTBmMWIyMDMyMGM5NzRmYjBiYzA5NWM0MTFiMzk4MTIzYjIyMTMgbGVnYWN5LXRydW5rCisyNDk3MSBhOWUwNmZmYWY3ZmJlOWQ4Yzc5YTk4OGU2ODRlNjgxNGJmYWJkZDc2IGxlZ2FjeS10cnVuaworMjQ5NzIgOTM3Y2MxMGNkMzlkZjAxNzdjMWUyY2Y5NzE4Nzg4MWViNWEwYWVmMyBsZWdhY3ktdHJ1bmsKKzI0OTczIGRhOGI5OTc0NjllN2RjMGZiNTgxODFiMTVhNzNjMzY2ODNjNDRjZjUgbGVnYWN5LXRydW5rCisyNDk3NCA4ZGZiZmJjOTMxYjRhNjdiODkxZjQyMWQ4ODRmYjljNThhYzE3NzIwIGxlZ2FjeS10cnVuaworMjQ5NzUgMDk1Y2ZmMjE5NTZjYmY5MTRlNTcxZTllYmUyZTIwZjRkNTZhMjExNiBsZWdhY3ktdHJ1bmsKKzI0OTc2IGVhODVlZWE2YjJiOTQ5ZmRhNjJiNTY1MGFiYzk1NmRiNDUxNTcwYWQgbGVnYWN5LXRydW5rCisyNDk3NyAzYjQzZjQwYWYyN2E5ODRhMWE2NjA5MTBmZDMwMDBmYzY3YmZiMGNhIGxlZ2FjeS10cnVuaworMjQ5NzggY2NlYTg3ODJiODQ3MjMxZTBjZTg0Y2MzYWI3ODRkNGMyYmI4MTFkNSBsZWdhY3ktdHJ1bmsKKzI0OTc5IDNjOGE5ZWYzYjk1NDM5NjJlYjdkYjBiODVjMjRlNDExNmEwZDk1NzEgbGVnYWN5LXRydW5rCisyNDk4MCA1ZDAwOWU1ZTEzZjc5OWVlZDg1NDQ4MGMwYmNkOWZkODY1ZTg1ZjExIGxlZ2FjeS10cnVuaworMjQ5ODEgNzI0NmZlNWU1YTI4MjdlMmQ0ZTk5MGI4YzZhOTBlMTg1YmUwNDczMCBsZWdhY3ktdHJ1bmsKKzI0OTgyIGQ1OTRhNThiNDQ2ZDVmM2NlNGJiZWNkZGYxOGVmMWQwMDFkOGU4ZGQgbGVnYWN5LXRydW5rCisyNDk4MyAxNDkxZjExMzdlMGVhNTcwZTU4YWI0OWMyMTg3MDRjNDE1YWYzN2Q5IGxlZ2FjeS10cnVuaworMjQ5ODQgYmU4Njk3YzcwZTdjMmU1NTQ0OWE1NjIxM2I5YmIxMDk5MmI1NDBiMiBsZWdhY3ktdHJ1bmsKKzI0OTg1IGEzM2JiNzMyNDY4MzlkYjhjZDkzYzQ3MTA2NGU3YmNiMzQ2MjIwNDcgbGVnYWN5LXRydW5rCisyNDk4NiA3NTgzMzlkYmRhZWE3ODJkNWZlMDE1ODgzMTE3MDA2Mjk0YzQ1MTA0IGxlZ2FjeS10cnVuaworMjQ5ODcgZGUxZWJjZWY3ZDMxMDdlNGIzMDgyMmY5MmRlYTUzNzczMTcwNWEwMiBsZWdhY3ktdHJ1bmsKKzI0OTg4IDA1MWYzYjY1ZGRhYjg0OTViY2YxYjA2NjY4MmNhMjRlYzQ4ZDU2MzkgbGVnYWN5LXRydW5rCisyNDk4OSA2ZDQyODhlODkxOGIyNjc0Yjg3Y2Y0MzhiMmQzNzE3NzBlMWI1N2I2IHJlbGVhc2UyMi1tYWludAorMjQ5OTAgZGNjY2I5Y2VhMDU5MzFhMjU0MjQ3MmNkNTQ5YzU2OGZjOWIyMDRiZCByZWxlYXNlMjItbWFpbnQKKzI0OTkxIGRmYzk3MDQwOWY3ZWQwMjM0MWY3ZTIyYjY3MGZmYzUyNmY3NjMzNmIgbGVnYWN5LXRydW5rCisyNDk5MiA2NmUwMDgwYzZkY2M5MDFiMGI4NGNjODgwM2I0YTdhODg3NDI0YThhIGxlZ2FjeS10cnVuaworMjQ5OTMgNTg2MTg4NTU3N2U5OTcwNTFhMjkyMzU1N2Q4MDFiMmU1ODQxNTQyYSBsZWdhY3ktdHJ1bmsKKzI0OTk0IDZmNmYwZTEwMzU2NmRjOWM5NTFmNmYzMjk5MDZmY2JiNjI0YzYwNmMgbGVnYWN5LXRydW5rCisyNDk5NSA2M2EyZmFjMjEwNGM5YTdhMmRjNTEwYjNmZTRhYjYyNWQxZGI1ZTMyIGxlZ2FjeS10cnVuaworMjQ5OTYgNmFlODVkODM4NDY2YTI1N2NmNTNjM2U2MWYwM2E3ZDk4YmMwYzYxNyBsZWdhY3ktdHJ1bmsKKzI0OTk3IDljN2RhMjcyYzliOTRlODgxNjI3YzdiOGE2MGZlYTFlZmQzYmY0YTkgcmVsZWFzZTIxLW1haW50CisyNDk5OCBjZDA3ZTg0MjM1ZTZkYjAzNTNlMWFjZmMwMzlmZDg2NzAxYmFmNzMyIHJlbGVhc2UyMi1tYWludAorMjQ5OTkgMmI3NDY1NDNhYjNkNzI4ZGU0NzY4M2UyYTQxOGY3ZDU1OWU2NTdjYSBsZWdhY3ktdHJ1bmsKKzI1MDAwIDYyMjE5ZWQyMTU5OWJjZTRkOTMwYmRiNTFkYmY4MmM5OGM3OTdjNWUgbGVnYWN5LXRydW5rCisyNTAwMSA4NTFlNGJmMzAzNThlZjhkMDNlMDQ2Y2QwOTNjMTdkMzM2ZWU0ZTFhIHJlbGVhc2UyMi1tYWludAorMjUwMDIgYjcyZGEwNzgwZTdhNTkyYTJlNWM0MDllYmZhZjJjMzVkZmE2MjhlMiBsZWdhY3ktdHJ1bmsKKzI1MDAzIDNhNGEzNGZkZmE4MWEwOTZiY2E4YjFkZDY4YWJhYTIxYTU5NmY3NDMgcmVsZWFzZTIyLW1haW50CisyNTAwNCAzNWUzZjI0MThiMmRhOWY2ZjI5OGM2YzQxNDEyNmZhZWI0ZDMyOGQ5IHJlbGVhc2UyMS1tYWludAorMjUwMDUgM2MwYmQyZjM3YTc4OGExZmYwNGJmOWQ0NTE3ZDkyYWU1YWE1NzZjMyBsZWdhY3ktdHJ1bmsKKzI1MDA2IGEzYTYyZTQ0MGYyYTY5MmQwZmY3NTM4MGIzMTA5NGE4ZDNlODQyMGQgcmVsZWFzZTIyLW1haW50CisyNTAwNyA3ZTJhM2EyYmFjMzNmYzk4OGZlNjE0NjZiY2YyMTIzZmI5ZWVkYzViIGxlZ2FjeS10cnVuaworMjUwMDggYTViZTA3NjVjNTcxMzYxMTlmNTRlNGFlMjU4ZGU4NDUzZWI4NGYxYyByZWxlYXNlMjItbWFpbnQKKzI1MDA5IDk5MTJhOTZjMWZiMzk0ZjBjMTE3NzBjZjcwZTZhYWVjNTM3NjJhNTUgbGVnYWN5LXRydW5rCisyNTAxMCAxOTU5MTdiN2E2MDI0MmZiNGQwNmVmMTMwNjViMGQ3N2MxNzZkNTU2IGxlZ2FjeS10cnVuaworMjUwMTEgZWIwNTE5YTQ2N2FiYTI0ZmQwNzNkOGRmYWE1NmMxZjI1Njg2NGZjZiByZWxlYXNlMjItbWFpbnQKKzI1MDEyIGVjNDhmOTZjOTI5NWRkZTA4MGVmMjdlZjQ5ZjU0YjFjYjM5NDBhZjQgbGVnYWN5LXRydW5rCisyNTAxMyBjM2M2ZGUxNDUzMDk5NmE2NmJhY2EyNzY4OTdiYzdhZmMyZmU3YzM0IHJlbGVhc2UyMi1tYWludAorMjUwMTQgNjg4MzRhNjk3NDZhODVmN2NiYmMwZDNlZjM4NWIxZjMyODIxMmIyNSBsZWdhY3ktdHJ1bmsKKzI1MDE1IDI5YjNkYzkwYmU5NWNiNDhhYTVlNWJiOGQ5NmM5NWI0NTEwYjZkYzAgbGVnYWN5LXRydW5rCisyNTAxNiA5YTI2ODI5ODI2ZTk3OTJiODE3NGYzN2IzZjE5ZDc5YzkxMDQxYWZhIGxlZ2FjeS10cnVuaworMjUwMTcgNmIwZTE2Y2I2NWQ1OTI5ZWRjOGRmNzc4MTI3ZjYyNGVlYTlkZmIzZCBsZWdhY3ktdHJ1bmsKKzI1MDE4IDM0ZWRkY2ExZmRhNzlhNTU0MGMyNzllNDdlMGNiNjBmN2E3YzFmZWQgbGVnYWN5LXRydW5rCisyNTAxOSA3YzU4MmQxYjljZjgxZTFhNGFiYjM2ZjFiYTQxNTA4MTZhODRhMjc3IGxlZ2FjeS10cnVuaworMjUwMjAgMjJkYWQ5ZmUwOWNhMTNkY2Y5OWFkMTFlMjk4ZjAzMTZjMjcwOWQxNSByZWxlYXNlMjEtbWFpbnQKKzI1MDIxIDM2MjkxNWIzODcyNDQ0Y2M5OTQwNzgzMDI1Nzk5NmM2YzhmZmY2OWIgbGVnYWN5LXRydW5rCisyNTAyMiA5ZGUzNTBhNjU0MmVkZjFhODcxOTM0NzRiM2U2NGIyZmNhYzM2NzI5IGxlZ2FjeS10cnVuaworMjUwMjMgYjU2ODQzYzE1MjQ5YjM5ODllZTQ1NmQzMTgzOGI5NDRlNmZjNDE5MSByZWxlYXNlMjItbWFpbnQKKzI1MDI0IGE5MTE5MzQxMjZmZDg2NmRjMTBmYzlhNTBmMWYxNTAyYjIzNjc3ZTQgcmVsZWFzZTIxLW1haW50CisyNTAyNSA3MjQ4YzM3NTEzZjM3NWRkMzAzMDU2YjhkOTUyNTE2NGNlZWRkNWM2IGxlZ2FjeS10cnVuaworMjUwMjYgODIzOTEyOWU3NWQwYTBhYTUyNWMyMjdmOTVmMGI1OWRhNmM0YWFmNiBsZWdhY3ktdHJ1bmsKKzI1MDI3IDcyYmI3MGU5NjQwZTQ4MDRiMTI2Y2JkNzUxZTRkNTk0OTBkZDVlNjYgbGVnYWN5LXRydW5rCisyNTAyOCAwZDNiYjY4ZTNhMjhhMzJlMTI2MDZhZWY0ZTNkYjUzYzZmOGRhZTg4IGxlZ2FjeS10cnVuaworMjUwMjkgNTQ0ZTI2MjA2MWEzNjJjY2QyMDU4MWNmMWU3MjE5MGIyMmU1NWFiNyBsZWdhY3ktdHJ1bmsKKzI1MDMwIDY0NmY4YzA4OGY1ZDg0N2ViODcwZGZhYzk4ZmU5OTRkN2Q5YzE5OWEgbGVnYWN5LXRydW5rCisyNTAzMSA4OTcwZTc0NjY4MTEzM2E4NDJhNWEwOTdhMDhjNGUyNGM1YjJiZTc4IGxlZ2FjeS10cnVuaworMjUwMzIgZmZhYmFjNTA5NzNkZmM2MTkzOTRkMGE4YzYzZWFlZTZiNWNhZDZhMyByZWxlYXNlMjEtbWFpbnQKKzI1MDMzIGExYzMyODMzN2M4ZTg0ODg2MjIwN2MwYjVhZmUzYzIyMWYwZjAxZjIgcmVsZWFzZTIxLW1haW50CisyNTAzNCA4OGM0NjNmODc5ZWYyNzU1YmIzMTRiNTJlNDAzNTNiOWM1NzBhNTAwIHJlbGVhc2UyMS1tYWludAorMjUwMzUgMDY4ZTg3M2YwOTMyYWFiYWIzNzg0NmRkMzgzZTRjMjY1ODAzMTI0YyByZWxlYXNlMjEtbWFpbnQKKzI1MDM2IDA4YTNhYTk1MTJlOTgyYjIwYWI4NDBjYzZkYjQ4YTAzMTVmNDU0ZTAgcmVsZWFzZTIxLW1haW50CisyNTAzNyAyOTk5NjhjMjc5Yjk4MGQ3MzEwNmQxYzkyMThmNTRjYjc5MDJhMDg0IHJlbGVhc2UyMS1tYWludAorMjUwMzggM2E1NTE1MDUwYjQzNmJjNTIzZjY5M2MxNzE1MTZjOGFkZGNmYzY3ZSByZWxlYXNlMjEtbWFpbnQKKzI1MDM5IGExZDZjZDk3ZTMxOTYzY2UyZWY2YWI5MzEyMGE3MDBlMjY4ZjgyYzQgcmVsZWFzZTIxLW1haW50CisyNTA0MCBlZGMzNTMyZmIyYjhmZDBmZmQ2MTA2MTllNDg2ZmRhYTBjMGE4M2E0IHJlbGVhc2UyMS1tYWludAorMjUwNDEgYzRmZTk1ZmVhM2U2ZmZhZmYwMmQyYzljNzlmMmI3YjFjODhiZWY0MyBsZWdhY3ktdHJ1bmsKKzI1MDQyIGQwNWViYmQ5NjVhMzcxMjVmNzQ3MTU4NDZmODY2ZWI5YjhmMDNjYzEgcmVsZWFzZTIyLW1haW50CisyNTA0MyAxMTZlMzIxOGE3Y2E2MDdhOGUyNzdjNzcxYWUwNGVhYmY4NDNlM2NlIHJlbGVhc2UyMS1tYWludAorMjUwNDQgOGIyNDUyOTdjMTY2ZTZjYzI1NmNjMmYwM2UzOGRjYTg4MjEwODZjMyByZWxlYXNlMjEtbWFpbnQKKzI1MDQ1IDU5MTVkNDViODA5ODQxNmY5OGUxZmI3MjQ5MDQzNTkyMWI5ZDE1MWUgcmVsZWFzZTIxLW1haW50CisyNTA0NiBhNDlhNjVhOTVlMzVjZDM2OWNjOGU2YTNkZmEyOTBmZTExZDI1M2JlIHJlbGVhc2UyMS1tYWludAorMjUwNDcgMWVkZjVlZDFhZjA4MWEwMjU1ZDBlODFmNWI5M2NhODgwMzkyMjYxYyByZWxlYXNlMjEtbWFpbnQKKzI1MDQ3IGY3NmE0MjViMTRlNGVlOGFkZTVlOTIzOTU5ODUzODUzNGIzYTkwYTQgcmVsZWFzZTIxLW1haW50CisyNTA0OSAzZTc4YmYwZTJiZThkMmRkZjE5MjZiZGRjM2MyMzg0NWZmYmJjZjExIGxlZ2FjeS10cnVuaworMjUwNTAgZGIyYzEyODEyNWY0NTY5YWI5YmRkYmYwYWJhOGFkOGYyYmI5YzU2ZiByZWxlYXNlMjEtbWFpbnQKKzI1MDUxIDEwZDFkN2Q2MzVkNDIyZWY3NGE0ZDYzYmU5NTkyNzIxNzVjM2UxYWIgcmVsZWFzZTIxLW1haW50CisyNTA1MiAyZjM2NDg2MDBlNjAxZmRkOTk1OWM3YTQ1MzliNjRmZWNhNjhhMDg1IHJlbGVhc2UyMS1tYWludAorMjUwNTMgN2ZlM2U2MWFiY2UzZWE4MmMyZDNiNDlhYWYyNmUxYWExODVmOGE5MCByZWxlYXNlMjEtbWFpbnQKKzI1MDU0IDVjNjJlZmJjZTRmYTA2MWRkZGM4ODYxOTNjMmU2NjY5NTc4MmIxMGUgcmVsZWFzZTIxLW1haW50CisyNTA1NSBkNzRkYzQwNjY0MTY4OTI0OTAyN2VjN2FhYzczYzIyMGUxNDhlMWM0IHJlbGVhc2UyMS1tYWludAorMjUwNTYgYWVkZDg1MTg3NDk2NDg3ZWI5MWM3NGIxYTE3MjRiMjU0MGQwNjJiOSByZWxlYXNlMjEtbWFpbnQKKzI1MDU3IGNlMzVlNTcwZmZhMjFlYmRiMDc0N2M2YzQ5ZmIxMzlkYTc2MTc0NzUgcmVsZWFzZTIxLW1haW50CisyNTA1OCBhMGIzNTJlNzY4NjJkZjBjODk5NWJkYjllNTc1ZTgwYTI3ZWQzMWY4IHJlbGVhc2UyMS1tYWludAorMjUwNTkgZWExNzU1ZDczZTkyMWFjOTBhNjAzZmMyZTJmNmM3ODA4M2JhMzU5OSByZWxlYXNlMjEtbWFpbnQKKzI1MDYwIDJlMjI4NDYxYTM5MWIxOGQ3OTY1YzU5M2M0YzljNmE4MmE0M2Y0MWMgcmVsZWFzZTIxLW1haW50CisyNTA2MSAzMmMxYzBhZmNmOThkYzRjN2Q3ODU2NDFiNmEwZjFjYzg3N2IxZGE1IHJlbGVhc2UyMS1tYWludAorMjUwNjIgM2I1NGM0NDUyNGViNjI0MzQzOTY2MzM5YTU3ZWYyNTdiYjdhZDY1OCByZWxlYXNlMjEtbWFpbnQKKzI1MDYzIDQ4ZWNkNjA2MWU4OGQwZGJlOTAyY2U2NzNjNzE0M2Q5MWI1MzQ1M2UgbGVnYWN5LXRydW5rCisyNTA2NCA0MDI3MzYxZTc5NTZhMjFlZmY5ZjA0YjEwODA4NDU0OGYxODY1NDM2IHJlbGVhc2UyMi1tYWludAorMjUwNjUgNzUzMWNjNTkyZTQ2M2ExZjg0MGVkZDU3NjQ4YTBlM2E2NzhlMjlkZiBsZWdhY3ktdHJ1bmsKKzI1MDY2IDRhNWEwMTBjOGY0NDQyOTk3OTZhZGU1ZGUwNWRiYTcyOTg0YjcyNjUgcmVsZWFzZTIxLW1haW50CisyNTA2NyBhYTgzZmU2ZTljNGY1ZGRjNGZlNDFiNzNhMTE4YWNlNDZhNTQ5MmQ0IGxlZ2FjeS10cnVuaworMjUwNjggM2I3MzMyNWIzMmU1OTQzZmI0MTdkNTY4NjYxZGE4NzdkNDFkYmY5YiBsZWdhY3ktdHJ1bmsKKzI1MDY5IGE2YTMxYzU1YTE2ZDA1MDA4OGQzN2M3NTU0YWJhYWM2OTMzOGNiOGYgbGVnYWN5LXRydW5rCisyNTA3MCA4NjY2MTVmMGFlMmE3MjU4ZDZiMDQ1MWZlZmQ0Y2I4MWE5N2RmZjRlIGxlZ2FjeS10cnVuaworMjUwNzEgM2JlNDBkM2FmZjk0NWY2YTkwMzhhMzZmNjNhZGNiYTM4MTZiZTNkNiBsZWdhY3ktdHJ1bmsKKzI1MDcyIDQzNzM5M2U3ODBjYmZmM2QzMmVhOTQ0MDI0MWM0MGE4ZWM0N2YwNzIgbGVnYWN5LXRydW5rCisyNTA3MyBjNjRmYzU2ZjYwNzI1Zjg5MjgyODFmY2QyNGZmYTBiOTljMGNjZjI4IGxlZ2FjeS10cnVuaworMjUwNzQgZTIyMzM5N2IyNmZhNWEyNjVmZGYzNDkyZmZhY2NlZjgwY2VhNDE1MiByZWxlYXNlMjItbWFpbnQKKzI1MDc1IDYzMDI5M2JlMTAzNTZlMWIwNjI3MzU2YTRlNzYyMzY5NzZjZDJmYWUgbGVnYWN5LXRydW5rCisyNTA3NiA0YzZjMTNhYThhOTk3NTI5ZjcwNjI4YzVmZjZiY2E3NTUwMWZkNjU0IGxlZ2FjeS10cnVuaworMjUwNzcgNGVhZTY2YmUxZDI5MWJhMjc0NTlhYjYxODc2ZDI4YWJjOWEzOTQ5NSBsZWdhY3ktdHJ1bmsKKzI1MDc4IDFkOTE4MjAxMjhhMWM5OWNhMDg0NDhlMTk2ODkyMDA2NmQwMzM3YTYgbGVnYWN5LXRydW5rCisyNTA3OSA4MWE4M2E2NTI0NmQzMDA2Yzk2N2E0YzUyNDdjZGRlNzhlMzhmNTM4IGxlZ2FjeS10cnVuaworMjUwODAgZWM2YjY3ZDI4MDNkMmZhMjJkYzFjMmU1ZjhiNzM0MDQzMDE3MmNmOSBsZWdhY3ktdHJ1bmsKKzI1MDgxIGU5OTE5ODIzNGQ5NmQyNGQ1NGI0OTMwY2Y5MDcxMWIzOGNjZGE0ZGMgbGVnYWN5LXRydW5rCisyNTA4MiAyNWU0NGEwMTI1ZTQ1N2M2YWY2NmQ3NDU0NmY1YjY2ZTQ3ZmU2NGE0IHJlbGVhc2UyMS1tYWludAorMjUwODMgOWUxNzNjYjM1YjZkZmRkNzNlZDM1YjBkMWRkNjM0MmU0YjkzZDk1MCByZWxlYXNlMjItbWFpbnQKKzI1MDg0IGViZTZiZDU3NmY2NWQ5YjhhZWUwOGMyODkxNDNlM2NkMjg4NjY1YWQgbGVnYWN5LXRydW5rCisyNTA4NSA4ODRlNTdiZjNhZGE0MTA3M2I2ZTZkNzkxOGFiOGFlMjMyMDg5M2UzIGxlZ2FjeS10cnVuaworMjUwODYgNWQyYmZiZDQ3ZjFiZTJhMDJhZmIwMjA1MjdkMmNhY2ExOWQ2YmEyOCBsZWdhY3ktdHJ1bmsKKzI1MDg3IDY3NzYxZDViNGFlNmEyZWYxNTcxZGY3ZDQ2OWE1MmQwZmU1NDJjMmMgcmVsZWFzZTIxLW1haW50CisyNTA4OCA1YTMyOWEyNTcxOTdmOTUyYzZkZGY2ZGE3YzQ2ZGNhODY1ZTNiMDYxIGxlZ2FjeS10cnVuaworMjUwODkgNTRlY2NjNWQyMmRkMjc0MWVmODlmODBlMDA1Njg1M2U5YThlNjIyNiByZWxlYXNlMjEtbWFpbnQKKzI1MDkwIGU2NTQ3NWI0ZjNjZjhiNThlNjk5NGE0YzBhOWFhYWY2NzllNzgyMzcgcmVsZWFzZTIxLW1haW50CisyNTA5MSAzZTI2ZjVkYWNiYmU2NjJmMTBiNTljZjhjYzYxZjQzZjI2YzYzYTliIHJlbGVhc2UyMS1tYWludAorMjUwOTIgZDk2MzE4NDM4MTE4NzI4OGRmODk3ODQxZjA2NmZmNjc1OWE2YWY1MyByZWxlYXNlMjEtbWFpbnQKKzI1MDkzIDMxYjI1MDE0MTc0YmQ2Yzg0ODI0M2NmYWRjZTk0NjY5NDVlMmQ3NzkgcmVsZWFzZTIxLW1haW50CisyNTA5NCBkY2NiZDdiYjViZDVjODUxNTMzM2VjZDk2OTc0ZjhmMDljZWU5Mjk3IGxlZ2FjeS10cnVuaworMjUwOTUgYzNhODY0OGJmMDk3YWI3MDEyOGI0ZmIxZmVhOTYzZGM3Zjc1YjA0NyByZWxlYXNlMjEtbWFpbnQKKzI1MDk1IGNmMzFiMTBlNDViNDg2MTUwOTRjYWU5MGUzYzViZDA3MjU4N2Q4ZTYgcmVsZWFzZTIxLW1haW50CisyNTA5NyBiYThkYjkwZWVmNGVjYWE4YTFmY2JlNDAzYTZlM2E0OGIwODQ1ZGRiIGxlZ2FjeS10cnVuaworMjUwOTggMzBhODE3MDM4YWYwZjRiZDZkYjY4OWRkMzBkNjY1MjM5ZDI4ODQxOSBsZWdhY3ktdHJ1bmsKKzI1MDk5IGNhMWI2N2Y1YTNlY2Q4ZjQ3YjYzYTQ3N2NjNWNlMDJlOWRlNGQ0NmUgbGVnYWN5LXRydW5rCisyNTEwMCAyYjU2YWY2OWY2N2RlZDlmNjg0ZmEzMzZkYjZkZjYzODNkYjhlODdhIGxlZ2FjeS10cnVuaworMjUxMDEgOGY0Y2M4MjFhZmFhNzI4M2E1ZThlODEzZmIyNTc1ZDk1M2Y0M2YyOCBsZWdhY3ktdHJ1bmsKKzI1MTAyIGVhOGM4NDAwYTRjOGQwMGU3NGU3NGFiNGUxODNlMWNmNjBkZjVhYjkgbGVnYWN5LXRydW5rCisyNTEwMyA5ZDVhZGZmODdmMzAwMjBhYTJiZDhjMzRiMzc1NDdhYzg1MGMzYTBhIGxlZ2FjeS10cnVuaworMjUxMDQgMzRmODVhMGE3ZmFhZGNiN2RjZmQ4ZGQ4ZWM2YWYyMGFiYzY5ZTBjNSBsZWdhY3ktdHJ1bmsKKzI1MTA1IDUzZmM2ZWM4YTgzNzYwNWIzMWZjODA5ODczN2U3M2ViMTA1MGM5MzcgbGVnYWN5LXRydW5rCisyNTEwNiAxYjdlYzM5NWQzOTI0ZjhmMjlmNTRkZTQ3YTM3MTAyY2ZiM2Q5MjliIGxlZ2FjeS10cnVuaworMjUxMDcgNDQyZWZmMjliNDlmN2IzMzYzOGY4MzA1YjFlOGU3OWUzNmIxY2U3OCByZWxlYXNlMjEtbWFpbnQKKzI1MTA3IGQ4MjNmYzEzNWU5MGU3YmI4NDU5MTVjZWM5MDI3N2ViZmNkMmM4ZDMgcmVsZWFzZTIyLW1haW50CisyNTEwOCA3NDI0NmEyZDk5NjIyM2VjMWVlMWRlYzlhNzQ2YTg3Yzk3MWU5MjUzIGxlZ2FjeS10cnVuaworMjUxMDkgNjYwNWYwNzZmOTVhMmQwNTZjMjNjMGM4ZWQxMWU4Nzc1MmFkYWQ3YyBsZWdhY3ktdHJ1bmsKKzI1MTEwIGM0ZjcyYjQ3MjJkYTYzNGQwYzUxN2UwNGRlNDM0YmIyZGU2YzNhOTIgbGVnYWN5LXRydW5rCisyNTExMSA5YzBhMGM4OTc3M2YxODJiMDA2NTk3ZWU5ZjQ4YWRjZmUxMGQ2ZWJhIHJlbGVhc2UyMi1tYWludAorMjUxMTIgOWQ3NzA4ZGRjZmI5OThlMjk0OTAyNTQyZWJjMDVlMzQzNmNmNjk3OCByZWxlYXNlMjEtbWFpbnQKKzI1MTEzIDE5ZDY2ODc1MWIxZWFmMDM0MzAwODA2NmM1ZTNjYjgzOTU5ZTRmNDQgcmVsZWFzZTIxLW1haW50CisyNTExNCBjZmJkZTg1MTllNTAwZTEyMzBhM2U2NzRiM2QwM2VhZTMxOTMyZTUxIHJlbGVhc2UyMi1tYWludAorMjUxMTUgMGVmZjk2MWExNWI1Mzg4ZWViNTMxZTQ3YjlkMzkzZGRmZTJhOTg2YSBsZWdhY3ktdHJ1bmsKKzI1MTE2IGQ2MDM1MGQ3MWI2MDU4MjhlNWI2MDQ0ZmY3MThiMWFjOTk3M2FhODMgbGVnYWN5LXRydW5rCisyNTExNyA0MDYzMWFlNzRiMTdiYmEyMDUxYzg3NGI5NTkyZGVlN2Y1YzQzMzBiIGxlZ2FjeS10cnVuaworMjUxMTggY2I0MGFjYTQxODg5Y2U3NzM4NWY2ZjQ2OGViOTM5ZWYwZDIxZmFhZiBsZWdhY3ktdHJ1bmsKKzI1MTE5IDcyMzNiODZiZTY1NmUzOWY5NGVhOTJmNjBiMDNhMTQyN2IxYjU5ZjkgbGVnYWN5LXRydW5rCisyNTEyMCBkYmI3MDNlYjZiM2Q5YjRlMGEzZWZjOGQxN2RhOTYyMWIyZTBmYjQxIGxlZ2FjeS10cnVuaworMjUxMjEgMWEyNmRjZGZiNmNjOWRlZTNkOGQzMDk1NzU5ZWMyYmU5MDQzOWEzMyBsZWdhY3ktdHJ1bmsKKzI1MTIyIGExYjA2NTgyOTNhNzA5OTEzYjgxMzk0ZDk2NTIyNWNiYmU5MzIwNWEgbGVnYWN5LXRydW5rCisyNTEyMyA2NTJkYzUxYjVmODMyMTg3Y2JhZDA3MzRmZjg0MGFlMTY1MWM4MmNiIGxlZ2FjeS10cnVuaworMjUxMjQgMDExMGEwOTgzZTYxOTMwY2MxMDVkMWM0NjE3ODRkZjZmN2I0ODUxMSBsZWdhY3ktdHJ1bmsKKzI1MTI1IDM2ODU2MTVkMjFiMzI3ZjU4MTFlNjhkMTIzZjAyOTdlYzE0YTM2NjQgbGVnYWN5LXRydW5rCisyNTEyNiA4YjExNmE4NDQ5YmQ1ZWVkZmM4MmNmZTc2M2QyYTJkMzI3YzcyMjljIGxlZ2FjeS10cnVuaworMjUxMjcgOGEyY2QxYzBjMTM1NGVjOGZhZDZiMzhmMjMzNWMwMGI4OGZhMDQ2ZiBsZWdhY3ktdHJ1bmsKKzI1MTI4IGUyMjdjOGQwM2Q2ZDhjMjRkNDU0YzUzYTcxNjMxZGE0ZmNkMDk3MjcgbGVnYWN5LXRydW5rCisyNTEyOSBlNmQ1YzRjNzQ1YmMwMTNjNGZjNjMxMDg4YzUzZmIzMTc0NDVhN2I5IHJlbGVhc2UyMi1tYWludAorMjUxMzAgNTc4N2ZjNDhjMmI1NWE1MDcxOGFhNDA2ZGY0YTM5MWI2MThlMDdmMiByZWxlYXNlMjEtbWFpbnQKKzI1MTMxIDhlNjdkOTAzNWI2OTlhYmJhMjExODEyYzU1M2I2NWUyZDlkYTE5NWIgbGVnYWN5LXRydW5rCisyNTEzMiBlYzc1MGUzNzY3MWJlM2ViNTI1ZWQ4OGVkMTdlOWQ0YTlkNTgyMDFlIGxlZ2FjeS10cnVuaworMjUxMzMgZDVhMzhhMzJmNzhiNTBjYzg1ODhlY2MyNDQ1YTQyMzY3YzRlNTVmYSBsZWdhY3ktdHJ1bmsKKzI1MTM0IDFlZDI2OGVhMmQyNjMwMzkzMzY1MWM2ZjFjMTAyMWU1ZTY5OGMxNGUgbGVnYWN5LXRydW5rCisyNTEzNSAxNmNjNTM4NDAxYjNmMDgyZGRkOGZkNTY3ZTdkNWEyM2QxZjlkYjFiIGxlZ2FjeS10cnVuaworMjUxMzYgOWJlYzE4M2ZlZmZmNjFjZWQzY2NhZDFjMDVkNmQzZjE2MGIzOTllZSBsZWdhY3ktdHJ1bmsKKzI1MTM3IDYzM2U2NDU2NGVkZmExYWJjNWNhMmE2NTY4NjA4ZmViMTc5YjlmMGEgbGVnYWN5LXRydW5rCisyNTEzOCBmODg3MzYyNWQ4ZjYwNGI2ZmJmNTgzZDFlMzMzMzljZjBlMTljNWIzIGxlZ2FjeS10cnVuaworMjUxMzkgNmY5NThmNDk5YjQyOTU3MDUzNjRlNWNlZmJmNWMxNGYwZWRjYTIwMCBsZWdhY3ktdHJ1bmsKKzI1MTQwIDBmZTg3NTg2NmQ0ZWY1Njg2MjU1MzgxZDZiYmE1ODY0M2E1OGZjODIgbGVnYWN5LXRydW5rCisyNTE0MSBkYTE3YTEwZTJmMjMxYzkyMDc2NTk0MmViNWIyN2ExMDYxYTRjYjI1IGxlZ2FjeS10cnVuaworMjUxNDIgM2UwZGI5ODRiZDNlMzA0Yzc3YWUxOWIzYTJjZGY4ZmVjODdiZWQ0MiBsZWdhY3ktdHJ1bmsKKzI1MTQzIDJjNjYxN2YyNzBlMmM5MmRiYmNmMDFmMGQyMWM3ZGI2NDIyY2VmNmIgbGVnYWN5LXRydW5rCisyNTE0NCA1YTVkOTRjNDk5NzUwZTNkM2NhOGM1OTQzNjhmNWRlYjQ2YjE2ZjFhIGxlZ2FjeS10cnVuaworMjUxNDUgNmM1YzExMmQ0NTMzOWJkNzcyODUzYmY4OTk5OWNkMWQ4OWZhNjEyNiBsZWdhY3ktdHJ1bmsKKzI1MTQ2IDEzODNlNmY3YjExZjk5ZDc0MzY5ZWVjYjkwM2IyOTNiNTAyYmY2YzAgbGVnYWN5LXRydW5rCisyNTE0NyAzZWY3YmVkMDA3ZjZlZDM3YzI5Njk5ZjY0Y2VjMDNkODY3N2RhNDAwIGxlZ2FjeS10cnVuaworMjUxNDggMDVmYWJkOGY0ZTdmOGQ2NWYzZDFiMGFhNTMxNWFmOTQyYTRlMjA2MiBsZWdhY3ktdHJ1bmsKKzI1MTQ5IDE5ZTBhOTJlMzI3NzdlZDZmYTVkYzI3Y2ZiZjllODg3MWE3NWVkZmIgbGVnYWN5LXRydW5rCisyNTE1MCA2YThjNDZkODIxMmJjNjdiMjkyZTY5ODJlNzU0MTQ2NzExZjI5YWIxIGxlZ2FjeS10cnVuaworMjUxNTEgOTU3NjBhYjExODc1NWY1NzFmYjFkYzllNDIzYjk3OGM4YWFkNDU5NyByZWxlYXNlMjItbWFpbnQKKzI1MTUyIGE2OGJhNzU1ZDcwMGU1ZTMxYWNmZWY0MThmZjIzZmU1M2MyOGRlMmIgbGVnYWN5LXRydW5rCisyNTE1MyBjZTEwYTdmOTY3ZTVhN2JkYjYyNGVjNzNkNjQwOGE1ZDEzNTU5YjRkIGxlZ2FjeS10cnVuaworMjUxNTQgNDgzZjVmMjcyZGVmYzZmNDdlNDk5YzNmNjliNzY2YmMxZTE3NDYwMyBsZWdhY3ktdHJ1bmsKKzI1MTU1IGM4ODg2MjBlODA2MmM3YzdkMGY1MDhiMDIxOGIzMzlhMzdjYTcwYmEgbGVnYWN5LXRydW5rCisyNTE1NiAyNmE1NGQzZjU1ZTQ3ZmYzNTQ3MzRmYTA2NWM1OWMzZWZjYTdjNTcwIGxlZ2FjeS10cnVuaworMjUxNTcgZTdkOGE5ZGEzYjE4MDQwYjdmMzEyZGIzNmQ4OGZkNGRmMjNhMzgzNSBsZWdhY3ktdHJ1bmsKKzI1MTU4IDAzYTJiYTc0MTc5YjlmMTVmMGRhYzczYmI3NGEwYjFhNTJhMDgyMWMgbGVnYWN5LXRydW5rCisyNTE1OSBhZGNjMTQxNDI0MzJlODE0ZTIwNzU1YWM4ZDNhZWYwNTRjM2RkMmM1IGxlZ2FjeS10cnVuaworMjUxNjAgMjQwOThmNGY2ODJlZDE2ZmVmMTZkZmEyMjk1MmJmZTc1ZDdmYWEwYiBsZWdhY3ktdHJ1bmsKKzI1MTYxIGZhMzA1MWUwZmQ5MzIxMjA5ZjdlYTQ2N2M1NzQ5ODA4MjhjYWIxNDggbGVnYWN5LXRydW5rCisyNTE2MiAyYzhiMDNlZDM5MDYzYTRlMzBmZTA1NTRmZTc2ODQzYWE0NTdmNjhhIHJlbGVhc2UyMi1tYWludAorMjUxNjMgZTBkYmQxNzU0YWE5MDhjMTdjMTVmOGUzNzViOGI2YWExMmM5YzA2NyByZWxlYXNlMjItbWFpbnQKKzI1MTY0IGFhZTk3N2NhNThhM2E3YjFlMTNlMTQwMjM3NmI4YmI3ZTI0MzAzYjEgcmVsZWFzZTIxLW1haW50CisyNTE2NSAzNDViOTJlZDJhM2ZiN2FhMmZjOWE1NDFkNGRjOTQ1NmZiNTgzNWUzIHJlbGVhc2UyMS1tYWludAorMjUxNjYgOTI2MGY2OTQzMmE5M2M5YTdkNGFmZDIyZTRiMTk1YzMyNGM2MTM0OCBsZWdhY3ktdHJ1bmsKKzI1MTY3IDU5ZDA5YmExZjc4MmM4ZjhlYWYzYWUxN2I2MDQ1ZmZiODcxNTYxYTEgbGVnYWN5LXRydW5rCisyNTE2OCA2M2NiYTQyM2ZhMDQwYmYxMDVmMmM4OGM4YjE4ZTUzMDcyZDE5ZGM1IGxlZ2FjeS10cnVuaworMjUxNjkgNzQ0MTUzM2FjYTNiYjliZjYwNTNmZThiZjkxZDkzNmM1MTc4OTQyYiBsZWdhY3ktdHJ1bmsKKzI1MTcwIDdhMTFiZmM2NjIxNDMxNzEzN2YzNTYxOGVlMGQ2NDU1OWYxY2MzZmYgbGVnYWN5LXRydW5rCisyNTE3MSA0NDQ1OTFhZmZkMGUwM2NjMzA2YzZjNjYzNDljNjdmNGZjNWJkMzg4IGxlZ2FjeS10cnVuaworMjUxNzIgZmZjNDExNmVjMTE5ZjhhYmNkOWJmOWVmYjZiNzBjMDNhZDQxNzg1ZiBsZWdhY3ktdHJ1bmsKKzI1MTczIGYzYjBlM2NiMzQwYjMwMjE4OTEwOTMzYzliOWNhMTgwNjJhYzhiOTEgbGVnYWN5LXRydW5rCisyNTE3NCAwNWU2MzExMWMzMTA2ZTBkOWJhM2I5ODU4OGYzNjMzNjE1NDE3NDI4IGxlZ2FjeS10cnVuaworMjUxNzUgOTA1MjEzZTI4Njc3NTcxM2NmZjNlNmJhYTVjZWQ4MzEyNWZiMjgwMyBsZWdhY3ktdHJ1bmsKKzI1MTc2IDk2OWNlMDE3YmQzYTE3NWI1NTA1NDU2MjE5OTVlYmFiMzZhNDQzNzMgbGVnYWN5LXRydW5rCisyNTE3NyAzYTcwNzUyMGRlMzA5M2U3ZjgxYTlmODAwMGNkM2JjMWMwMDRjNTdjIGxlZ2FjeS10cnVuaworMjUxNzggOTBjMWYzZjM3ZGFlNDZhODVmZTcyZjZiMTBiZmY2MTcxZGY2YjgyOSByZWxlYXNlMjItbWFpbnQKKzI1MTc5IGIxMmRjZDI3NmRiMGZkMjNlOWVlOWEwNzk4MTNhMGIyMWRlMjRmYjMgcmVsZWFzZTIyLW1haW50CisyNTE4MCBhNGU0NzM2Nzk5YjE4ZjM2OWY3ZmNiMjNlYmUwOWU1NGYxMmMzZmVkIHJlbGVhc2UyMi1tYWludAorMjUxODEgMWQ4NmNkYjE3MjkxNjA5ZWQwZWRjMzExMGY1MzIzMjVjNGZkN2Q5MCByZWxlYXNlMjItbWFpbnQKKzI1MTgyIDE0ZGE3ZGQzN2M5NGU2YTY0OGIyODM3OTFiZWY2ZWZmMjQ5MTM0NWEgcmVsZWFzZTIyLW1haW50CisyNTE4MyBkZmYyMjhhZDE3Yjk4MzUyNWEzNzY1OGRmY2U4MTI5ZWNhZTFiNDIxIHJlbGVhc2UyMi1tYWludAorMjUxODQgNmY0NTVkNDkxODcxNWYzNzE5ZWY3ZDgzZDYyMTljMDExNWI3OWQxNSByZWxlYXNlMjItbWFpbnQKKzI1MTg1IDA2ZjhhODIxYjY4M2NkMTM1NTVjOGU1OGJjMWY4MGE5ZmRjMzM3MzIgcmVsZWFzZTIyLW1haW50CisyNTE4NiA3ZTc5NjRjNjgyYjU2MjM4ZmNiZDMzMzg5NzdkNjI1MmVkMTYxZGE3IHJlbGVhc2UyMi1tYWludAorMjUxODcgN2JhMmE4YzE2MmZhMjY3YTc3M2ExNTFiMzEyMDU1YzkwNTM0ZjgwNCByZWxlYXNlMjItbWFpbnQKKzI1MTg4IDliNDE0ZGY0OGUxNDdlOTU3NDQ0MjFjNjE4NjU2YzVlY2Y4Yzc3M2UgcmVsZWFzZTIyLW1haW50CisyNTE4OSA3MzFiZWI2N2ZlYzkwMTdhOTI2YjI2ZjlhNmYyYjU5MDQzNzQ4ZTBmIHJlbGVhc2UyMi1tYWludAorMjUxOTAgNWNhZWEyYjEzMmNhMTg1ZTA3ZTBiZmY1MGQ5M2E3MzZhZjkxOTYyNSByZWxlYXNlMjItbWFpbnQKKzI1MTkxIDRmNTRlOWEyOTc2ZTZjMjIxY2Q2MDZiZmE5NmM3MDEwYThmYzNmOTUgcmVsZWFzZTIyLW1haW50CisyNTE5MiBhYTcxM2M0YzQ5OGRlZGYzZGIyMGZhNTcxN2QwMjdkYWE1OWY5NzY0IGxlZ2FjeS10cnVuaworMjUxOTMgMDcwZDM5MjA0MmUzZWVmNjcwMmM1MTg3OGJjZWYzMzcyZWRiOGEyNSBsZWdhY3ktdHJ1bmsKKzI1MTk0IGMxZDU1YTYyNzg5Nzc0MDM3N2NmMWU3ZjBjMDllYTE0Y2NkZDdiMzcgbGVnYWN5LXRydW5rCisyNTE5NSBmMzc5YmMwYzVlM2ZjOTcyNDczYzYzZTI5YjFlNWMxZDQ5NjhjNDRlIGxlZ2FjeS10cnVuaworMjUxOTYgNmExZTc0YWRmOGQ2Y2VjNGQyYzExMjY2Nzk2NjU4MTk4N2E5MDA4YyBsZWdhY3ktdHJ1bmsKKzI1MTk3IDExY2MwNTk4NTc0ZDgxODQ1ZjE4YzJkYmZjZWEwMzIzZmZmZjUzYWIgbGVnYWN5LXRydW5rCisyNTE5OCBmYzEwZTcwMjE4ZDNiZTNjMjVmY2EzMzg5ZTM3NDRjNWFkOTFmNjMwIHJlbGVhc2UyMi1tYWludAorMjUxOTkgNWU2N2FkNzZjNzJmZGFkYmM4YTcxNDgwOTk5NDRhZjdiYzc2NjU3ZiBsZWdhY3ktdHJ1bmsKKzI1MjAwIGZkNDE4NGRhMDk4MzBmNmRjYjBiNTFmNmExNDMyNjIxZWViMTYxOWUgbGVnYWN5LXRydW5rCisyNTIwMSA0YjNiMDZkZTAyYTMxMTViYzA0MDhlNWFmNTVjMzY3NjQ4ZWQzMTk1IGxlZ2FjeS10cnVuaworMjUyMDIgZmUyYjY0ZmM1N2EwYTBlNDBmY2FlODYwZTRhMmI4YzAzN2RiNDU2NSBsZWdhY3ktdHJ1bmsKKzI1MjAzIDQzZDljMmY5YTJmNmJjMDIxNzM1ZDkwNjIzYmJhZThlNzQ2Mzg2NWMgbGVnYWN5LXRydW5rCisyNTIwNCA0OGI1OWZhNmY2NDcyMmQ1ZWNmYzc1OGExYzRmYzUxNDExZjI2ODgzIGxlZ2FjeS10cnVuaworMjUyMDUgYTkzYTdiY2JjMzg2ZmQ2ODc4YWRhNDBiYjI2ZDlhNWQ1NjcwY2VjOCBsZWdhY3ktdHJ1bmsKKzI1MjA2IDI2Yjc1OGMwMGZiNjA2NDUzMTExNmMxMTJjYjgxZGVmNDg3Y2Y5NTIgbGVnYWN5LXRydW5rCisyNTIwNyA0NTczMWYxMzYwZWVjZTI2NWI5MmZmMzU5Njg1ZDVmYzhlZDE0MzAxIGxlZ2FjeS10cnVuaworMjUyMDggZmQ0MjRmNTE5YThlYmU4M2U4NjAzODNlMTQ5NWZkNTc1MDU1ZTRhMSByZWxlYXNlMjItbWFpbnQKKzI1MjA5IGZhYWFlYjUzNWQzOTJlN2UwZGJhZmJlMzZkNDZhNWM4Njg3NmIyMTAgcmVsZWFzZTIxLW1haW50CisyNTIxMCAwZDA4Y2I4NDk1MTE4MDhhMzlkZWJmZGVkZTc3ZjhkMzY0ZmI2NGIwIGxlZ2FjeS10cnVuaworMjUyMTEgZTBmYzI4NmQ1N2E0NmNkNmE3ODdhYTViOTFlMTlmZmIyYTY0YWVmNiBsZWdhY3ktdHJ1bmsKKzI1MjEyIDllMzg0ZjEwMzA0NzIxMDg3ZWY3NWIxZDFmOTU2ODMyYjY5MjVhOWYgbGVnYWN5LXRydW5rCisyNTIxMyA2NTgzYzk1Y2Y2OTIyNDJkYjEzOWZjZDBkYWJkOWIwOGI4NTkwZDNiIGxlZ2FjeS10cnVuaworMjUyMTQgYzQzM2RlMTdjMTU4M2FhYTc4MjhlYzhkNmEwNThjOTY4NDc2MWI3NiBsZWdhY3ktdHJ1bmsKKzI1MjE1IDFmMmU5Mjg1MDE4ODczODg4OWFjM2IwZDkwNWVmYTAyNmMyZTgzNWYgbGVnYWN5LXRydW5rCisyNTIxNiAyZjYxNjQ3NGVhZWM3ZGY1YWIxOGM1NzMzNjI5Y2MyZDA4OWY2Y2NkIGxlZ2FjeS10cnVuaworMjUyMTcgOWNmZjg5MGI0ZmIwNzZhODM1MWYzZGNhZjBjZTY3MDY4NGQ2ZTMzMCBsZWdhY3ktdHJ1bmsKKzI1MjE4IGQ1MjFjZjA4OTljODAzYjUyYjBkYWVkNDliN2U5ZDg1ODdiNzIxNTUgbGVnYWN5LXRydW5rCisyNTIxOSA3NjYwN2EwYzY5NTYwOGY1NzYzMDQ0MzM4NmM0Njg0MWQzNGVhMWE1IGxlZ2FjeS10cnVuaworMjUyMjAgMjBiYzRmZjEyMTVjMGZlNzBjODc0MDE0MGJjZmI0NzQyOTRkZDA2NyBsZWdhY3ktdHJ1bmsKKzI1MjIxIGY1YWFiOGViODEyNDE1N2IyZGZjOThhNTJhYWNhYjZkMDIxNDBiY2UgbGVnYWN5LXRydW5rCisyNTIyMiA1M2FjODI4NDIxN2FmZDFmYTczM2NmMjI5NWUzMzUxNzExODExMzI3IGxlZ2FjeS10cnVuaworMjUyMjMgY2JmNDE5MjVkZDNlOTMxNzFiMGRkOTE2MWEzZmY2MGRiYWI4NmY3YyBsZWdhY3ktdHJ1bmsKKzI1MjI0IGY3MDhhOTA3ZGM2OTFhN2FjYjM4NzQ0MTY0MGQzNGE2YWMzNmFmMTQgbGVnYWN5LXRydW5rCisyNTIyNSA1M2ZlY2M4ZGQ0YzkwNWNjYzc3NWFlMzRiZGFjNTgzNzI0NzA5ZWU0IGxlZ2FjeS10cnVuaworMjUyMjYgNmY2MmQ1MWM5YzEyODE5YWQzMzg4ODY4OWIzOWJhMGM5M2ZkZjkyNCBsZWdhY3ktdHJ1bmsKKzI1MjI3IGRhMDA4YjVjNTAzNWVjMDVkYjUyODkxMTNhNDMyNWRjN2VjYmM4ZWQgbGVnYWN5LXRydW5rCisyNTIyOCAzY2QwYjRiYjVlMzRkMjQ5YWFjMzgxNzkzNTczMTljNGMxOWQ3OWFhIGxlZ2FjeS10cnVuaworMjUyMjkgYjVkMDAyZTkwODI3ZTA2ZmU3ZGIxYmI1MDkzMjAwOTE2ODg4YjYxYyBsZWdhY3ktdHJ1bmsKKzI1MjMwIDA0MmRiMDM4MmNkM2I4MzJmNWVjZWFjZWRlNmMzNjMzMTU4NmRkOWIgbGVnYWN5LXRydW5rCisyNTIzMSA1MDQzYjczOGIwNzIwYzNmMGUwNGMyNzUyNjgwZTdmMjQ0OWViYzcyIGxlZ2FjeS10cnVuaworMjUyMzIgZWQ4NjFlMGQ0YTcxZDQ4NjZjZTYxNTAzMDhhNDFiNzM0MGZjNzY4ZCBsZWdhY3ktdHJ1bmsKKzI1MjMzIDg0NGZlNzI1YjFjZDQzMTI4ZmY1ZmZmZmViYjJmNTQ2OWYzNjU2OGYgcmVsZWFzZTIyLW1haW50CisyNTIzNCA0ZDcyMTM1N2JkZGI1YThhZjU2OTllNmNkOTQyZWU2ZjM1NjFhYTU2IHJlbGVhc2UyMS1tYWludAorMjUyMzUgN2ZhZjBmZGRmN2U2OGFhZmM5ZDJjNjI3NjI1M2E3ZTUyNmYyYTUxNyBsZWdhY3ktdHJ1bmsKKzI1MjM2IDc4ZTM2ZjA1MjNhOGM4NThhM2JkNzMxNzA4MWQ1NmZkMmE5Zjg1NTkgbGVnYWN5LXRydW5rCisyNTIzNyBlNDg4NDY3MTdjMjZmM2MzNjhiYzc5N2E2MWI1M2Q0N2Q2YmRjZWRjIGxlZ2FjeS10cnVuaworMjUyMzggNDlkOTM2ODk0MDJiNTRlMDEwNGJjMzBmNjQ0MmQ3MzdjZTJkZjgzYiBsZWdhY3ktdHJ1bmsKKzI1MjM5IDhkYWZlNGE3OGNhYzQ2NTE1YTYzZjU0MDM0MzcwNDY0OGZhZDMxNzIgcmVsZWFzZTIyLW1haW50CisyNTI0MCAzNWY4NDg5M2FjZjc2OWM4ZDJmMDBhMDkxMDlhYTViMWJjNDFiMDk3IHJlbGVhc2UyMi1tYWludAorMjUyNDEgMWM3NjkyMTdjMTA1OWYzZmUzMzU3ZTBjZTg5NTY1NDM2NzUzNjBmMSByZWxlYXNlMjItbWFpbnQKKzI1MjQyIDk0YmFjODhmMTUwZjAwMTAyZjU0MDI2YmE0ZjIxYWE5NDY4NjNiNDQgbGVnYWN5LXRydW5rCisyNTI0MyAwYTgxM2EzZGRiOTJkZDljYWY5YTViMWMyYjIzZThiMmVhNThiNjU3IGxlZ2FjeS10cnVuaworMjUyNDQgMDRjZjRlMTNlNWM5ZmIzNGVkNzQxMzBkNWQxOWFiZjkyYzE1ZTYwZSBsZWdhY3ktdHJ1bmsKKzI1MjQ1IGM4Mjg2Y2M3MDJjOTkyNGYxZTJiMjEzY2ZlZWFlMjIwMmZkZDA0MDIgbGVnYWN5LXRydW5rCisyNTI0NiBhYmVkYjI0MThmNjIzMWFkZjI0MjA1MDkyYTU5OTk2ZjFmMWU0YzAyIGxlZ2FjeS10cnVuaworMjUyNDcgZTEwODY5NzI2Y2Q0MWI3MmE4YjFmOTFkYzBhZjNiMzNmNGZjNzQ1NSBsZWdhY3ktdHJ1bmsKKzI1MjQ4IDgzNmMxZGJmMjNhMGVhOTgxY2RmNjNiM2Y3MWQzNTQyNjRiY2JmMWUgbGVnYWN5LXRydW5rCisyNTI0OSAxOTgzNGNkMTAxZDkxYjVmMzI2ZTQ1MWQ5MTQyZTkxMTRhYWVmZDA3IGxlZ2FjeS10cnVuaworMjUyNTAgNjRlNWEzOWYxZmYwOTYxNTgyZjYxYTM5NTYyN2E1YmI1ZDQyNWY0ZSBsZWdhY3ktdHJ1bmsKKzI1MjUxIDE3YTU2ZTFjNmZmOGUyN2QyZDNkZDk2NTNlNGIxZDA2YzFmODkyNWEgbGVnYWN5LXRydW5rCisyNTI1MiA4ZWQ3YzYxYjVmMWJhMzViMTVhMWE0YjUxOTMxMTI2NjIxYmNiZTU0IHJlbGVhc2UyMi1tYWludAorMjUyNTMgODYxM2RmMTdmMTliYmQzOGU1OTE0MThjODRkZDFmMjNhYzExODAwNyByZWxlYXNlMjItbWFpbnQKKzI1MjU0IGYyNDU5NTViM2ZiZTdmNGEyYzFhYWFiMjI1MGE1ZGI2ZmI1NzhkMWIgbGVnYWN5LXRydW5rCisyNTI1NSAyMWY1OWQ5ZWQxNjlmNGRiMDc2M2I4M2NlMDA0N2MwZGQ4MWVhNTAzIGxlZ2FjeS10cnVuaworMjUyNTYgOTM3MzQ4ZWYxOGI4NTYwNDIzYTg5ZTY5MjU4MTQwYjQ2OWEyMTczZiBsZWdhY3ktdHJ1bmsKKzI1MjU3IDk4ZTkyYTY0ZTczYzJmZjc1MWViYWIyNTVjMWY4ZDE0NTFjM2U2ZTEgcmVsZWFzZTIyLW1haW50CisyNTI1OCA4NmZjZDk0MzhjYmViZDcxODM3OGU1NGU2NGIyMmI5ZWMyMjVlYTlhIHJlbGVhc2UyMi1tYWludAorMjUyNTkgNGI1YzI4YTYyZDE2ZTRhNGY3OGMzYjRkM2ExMjdmMGJhMzcxMTg1NCByZWxlYXNlMjEtbWFpbnQKKzI1MjYwIDU3ZWFhNWQ2OWFjMzVmNTBkODBhN2RjMGQwZmM0ODMwZjFmYjllNWIgbGVnYWN5LXRydW5rCisyNTI2MSA0YzFjY2YzNjAyNWNkOTdhYWRkMGVhMTMxNjdmYWZjZDQwMWM5MDA0IGxlZ2FjeS10cnVuaworMjUyNjIgMWY2YmM0OThlNmU1NmUyZmM1NWU1ZWYzZDA0NDBiZmEyN2E3ZDgzZSBsZWdhY3ktdHJ1bmsKKzI1MjYzIGMwNTE4YWQ3MmI5MmUwYWE5Y2FkYTUxMDY3MDU2YjdmNzBlZTAwMTAgbGVnYWN5LXRydW5rCisyNTI2NCBmMDA3ODFkNjY0YTlhNGI0MzFlYmIwN2U0M2ZhMTY4ZDZkNzQ3NWI4IGxlZ2FjeS10cnVuaworMjUyNjUgZGNjMDc3OGViN2QzYjQxYzE3ODJhY2JkMzY3ZDEwMTIzNjU1MTVlYiBsZWdhY3ktdHJ1bmsKKzI1MjY2IGY4ODFlMDYxOGRmMGFmNjY1MGQxMWQ2NzY1YTRmMzE0ZWE3N2M0NTkgbGVnYWN5LXRydW5rCisyNTI2NyA3ZjY1MjNiMzIxNzkyNjIzYTYxYzI2ZjBiMzI1Mjc2ZDQyZTE5ZjExIGxlZ2FjeS10cnVuaworMjUyNjggMTZmYWY2ODc1MDA0NTJmOWQyYjMzMTE4M2M0ZWE2YWViZTE2Y2JkNSBsZWdhY3ktdHJ1bmsKKzI1MjY5IDdjMzBjYjE3YzJmNjU2ZDdhMDUzNmViOWVjYzMyN2VmMjA4ZGNmMmMgbGVnYWN5LXRydW5rCisyNTI3MCAxNmMyYWUzNjlkNzE1ZTJlOWY2N2YwNmYyMTUyOGYzZTljYmUzMjAwIGxlZ2FjeS10cnVuaworMjUyNzEgNzk0ZmUzN2NhNWY0ZThiNTk5NjNiMThkNzdhNmFmM2JmOGM2MzYwMyBsZWdhY3ktdHJ1bmsKKzI1MjcyIDE1MTdiNDU0N2I4NzY2Y2EzODc1MDUzZjU5MGQ4MTk1OTYyMWI0MDMgbGVnYWN5LXRydW5rCisyNTI3MyA5ZDJhZTg1MzE5NDQwNDU4ODA2ZTRmZDlhYTEwMzhhNDg5MThmMjhhIGxlZ2FjeS10cnVuaworMjUyNzQgMGM2OTk5MmNjZTA5OTQ2ZDM4OTc1ZjIzNDEzZDYwMWY0NzcwYThmMSBsZWdhY3ktdHJ1bmsKKzI1Mjc1IGUxNjM3MTNiNDdjZjIxYjEzY2Q5Yjg1OTFhNmRjMTVhZjY4MmVmMmMgbGVnYWN5LXRydW5rCisyNTI3NiAxNWMwZTdhZWY2NjZkMTg4M2MyZDdlNWY3MmM5YjhhNDBkZmRjY2U5IGxlZ2FjeS10cnVuaworMjUyNzcgYjk4MTVmNGQ4YmUzNTg1NDk1NmZmMmY3N2E4ZTY2MmNjODE5YTNkMiBsZWdhY3ktdHJ1bmsKKzI1Mjc4IDA3NmU5ZGM3N2FhZGIzODU3MDIzNjU1ZjVlZjUxMGQ4ODk4OWI3YzcgbGVnYWN5LXRydW5rCisyNTI3OSBjMzc2Mzk3NjExMmQ1YWZmYmI5ZTQ1NTlmOTAxMDIxODVkOTUzNmI3IGxlZ2FjeS10cnVuaworMjUyODAgNTliYjQzYjZlYjExZjI1ZmM5YzQyMGRmMjNlMjk4Njk3ZDg2YTkxNiBsZWdhY3ktdHJ1bmsKKzI1MjgxIDBmNWRmYTMzZjllZTg0ZTBkNmMwNzg3NjU0Y2FlYzBlMmJhYjQxMTYgbGVnYWN5LXRydW5rCisyNTI4MiBmN2FhMzI3ZmYwZmViOTI3MWUzZWZmYTJhNjQ5ZTY5ZTFmOGY4ZDAwIGxlZ2FjeS10cnVuaworMjUyODMgZWZiNmU2MTdhZWEzOWRkMWFhYTdmMWNjOGM5MGVhNDIxNTZhYzkwZiBsZWdhY3ktdHJ1bmsKKzI1Mjg0IDg3YWZmNjQ4ZDk5NGUyMzdkYzI2ZWY2NmQ0NDgyYTVhZmQ1MmE4ZGEgbGVnYWN5LXRydW5rCisyNTI4NSAxMDk3ZjczMDI5NGIyYzkwYTljN2FiZjYyNTUzY2JjZDc1YmVhNTNiIGxlZ2FjeS10cnVuaworMjUyODYgOWY2ZTBjZjFhYjMwOTdhMTU1ZTc1ZmYyZjEzZjg4N2MxMDkyNTZkZiBsZWdhY3ktdHJ1bmsKKzI1Mjg3IDI0NDgyOTIxYTc4YTliOTJkNGE1OTVkOTU2NjU0ZGY0N2I2NGIzMWMgbGVnYWN5LXRydW5rCisyNTI4OCBhMTNiZjJmNzI2MjlhYjY4YTcxMzA3NTRjN2E1Y2QxNjYwOGQ3NDE1IGxlZ2FjeS10cnVuaworMjUyODkgN2U3MTU5YzAyODMwOTFmOGZlYjdiMGVlYmY2MGQ1Y2YxMmViMjJiNCBsZWdhY3ktdHJ1bmsKKzI1MjkwIDg4ZTIxN2U1MDUzZmU0NDdkZmRkMDc4ZjUwYjBlNGFmNDdkZTJmMjggbGVnYWN5LXRydW5rCisyNTI5MSA3NzgyNDE1ODFkNGEzNTZjNjAzODNlZWQ2ZGI2MDc2MDNkZDBmMjljIFNvdXJjZUZvcmdlCisyNTI5MyA3ZjM1YmI5MmZiZjc1MzQ4MDJiODlkN2VlOTc4Nzg5YzYwMzZiZGQwIFNvdXJjZUZvcmdlCisyNTI5NCA3ZDViMmM2NzlmM2JjZDEzZDZmNjhhMDdmZWFmN2MxMTBkN2I2MDU1IGxlZ2FjeS10cnVuaworMjUyOTUgYWI2OGFkNDNkNTE0MzVkNjEwM2E1NTU0YjRlMzI4ODQwOWIwYjFmOCBsZWdhY3ktdHJ1bmsKKzI1Mjk2IGIzODYyOWI5MTU0NTEyYmFjZDMxZDE0MzRmNTFiNzY1ZTExOTA4NjcgbGVnYWN5LXRydW5rCisyNTI5NyA3MWZmYzlmYjU5ODZmNTk1MzFhMDg1OWNlMDAyYmM4ZTk5Zjk4NmE0IGxlZ2FjeS10cnVuaworMjUyOTggZTIwZDEyYjVkYWQxYzBmYzYyM2FlZmU2MDg1MGZkNGIwODA2Y2YwZiBsZWdhY3ktdHJ1bmsKKzI1Mjk5IGQ3NDI3OThjZDRiNGE0NmI4YzQ3YTcxOWRjZjgwMTNiYTliNjY2ZDcgbGVnYWN5LXRydW5rCisyNTMwMCA4Mjk4ZTljNTM1ZGE4NGYxOTM1ZmI1MmYyNjNlZTE1ZTA2MmY4ZWRiIGxlZ2FjeS10cnVuaworMjUzMDEgNGFiMjliMDZhNzZjYmEwZTIyYzQ4YTIzYTE1MzI1ZmI2NjI0YTRlMCBsZWdhY3ktdHJ1bmsKKzI1MzAyIDZiZGZjOWY2ZjA1OTAzMmQ1ZWZmYzgwOGI0YjFhZTYxMDE0ZjM2MjEgbGVnYWN5LXRydW5rCisyNTMwMyAzMmQwZWY2ZjE5NTU3MDYyYzJiMDMwYTYwODNiZGY5YzAwMWYyMTE3IGxlZ2FjeS10cnVuaworMjUzMDQgZjc0NTdmYWI3NmYwZGJiYzcwYjI3OWQxODc0Y2MzYTA5MTAwNjUwNSBsZWdhY3ktdHJ1bmsKKzI1MzA1IDlkNDRlNzUyZDYxN2VjNTQwOWI0YWRmZjhmNWY1OWJmZGQzMjE5N2QgbGVnYWN5LXRydW5rCisyNTMwNiA5YzgzMjNhYmYxZGJkMjdkOWNhMGNkN2Q3MjU0OTllOWE1OTY5MTc2IGxlZ2FjeS10cnVuaworMjUzMDcgZjM5MjEzNDA1ZTA1YzQ4YjYzOWYzYzdjYTJjYmUwZTY4MmJkNDNjMCBsZWdhY3ktdHJ1bmsKKzI1MzA4IGNiZjFkYmNhMWY2MzBjYzM3MDJmY2JkZTBiNzFiZDYyOGE0NmNkZGQgbGVnYWN5LXRydW5rCisyNTMwOSA3NjZjNTkzN2E2MWVjNjc3YTlkODI3NjYxMjM5YWZmZjEwMmU2MTI5IGxlZ2FjeS10cnVuaworMjUzMTAgOTFhNmRiNmVmYTE0OWEyNTE1Y2VkYWNkOWU0NmViNTM2NTE5MDFlMyByZWxlYXNlMjItbWFpbnQKKzI1MzExIGQyNDQxMTA1YTliZmYxMDhjZWM5MDMyZDIzNWNkZTMwZDg3NzE5YWMgcmVsZWFzZTIxLW1haW50CisyNTMxMiAxN2Y4NDY5ZjA5ZDIwN2FlYjM1MjBiOTQ2MTdmMjZhMzNjYzNkYTAzIGxlZ2FjeS10cnVuaworMjUzMTMgODFjMmJkYTVkMzc3ODg4NjRkMjM4ZWQxZWJiNmVjOGM5ZTY3MmUzOSByZWxlYXNlMjItbWFpbnQKKzI1MzE0IDQ4NjQ0NDQ1MjBkOTJiY2EwZGNmMDc4NmMxZTI1MGI0OTRhY2EzMmIgbGVnYWN5LXRydW5rCisyNTMxNSA2NzZkYjAzMDBmMDY3Nzg1ZmJkOTI4NGIwMWU0NjdhMzcxOWI4YjFiIHJlbGVhc2UyMi1tYWludAorMjUzMTYgMGM5ZWJjZjE3ZWJmZDU5Mjk2ZTE2OWE0YTk5NTJhNWFlZWI4NDA3YyBsZWdhY3ktdHJ1bmsKKzI1MzE3IDk3ZjQ5ZWRjYmRlNzIwYTA3MzQ4YjQ1MWJmOGM3NmE2ODYwZDM0MWUgbGVnYWN5LXRydW5rCisyNTMxOCBiNTVmMmZmOGIyNWY2MTdlNDRmMzk3OWI5NjcxZDExN2M4MDVjMGE1IHJlbGVhc2UyMi1tYWludAorMjUzMTkgMmU5ZTFiMDJiN2Q3YjYyYjI4MjJkODA3NDVjYmIxNTNiM2M3N2VjNSByZWxlYXNlMjEtbWFpbnQKKzI1MzIwIDlmYTVkNDBjYzcyMjJkNmYxN2Q1OTE5NGYwOGZiMDQzMDAzZDdiMGIgbGVnYWN5LXRydW5rCisyNTMyMSA1ZWQ3ODJiZGJiMmFhMDA3OWE2ZDFjMzU1MGIzOGM1YWQ0ODlkNzU4IGxlZ2FjeS10cnVuaworMjUzMjIgMzk1N2QxNTVmOGM1NTAxOTRhOGU1ZDM4ZWE2MzkzOWY1NjhhNDA5NCBsZWdhY3ktdHJ1bmsKKzI1MzIzIDdhOTE3YWQ4ZjQ0MjRmNTJmZDQ5NmIxMGFjOWY3ZWZkNWM3MzE1MWIgbGVnYWN5LXRydW5rCisyNTMyNCBlYTIzZTZlNDkyOTAzZDEwM2U2MzY2MzViMzk3YzU5MGRhZjUyMTQwIGxlZ2FjeS10cnVuaworMjUzMjUgZDNiMWYyYzBlYmNmYzNlM2Y5OTA1NWRjNDY0OGYwYWI2ODQzN2Y2MyBsZWdhY3ktdHJ1bmsKKzI1MzI2IDJmYWEyM2ZhY2VmNzJkZjI0ZWY4YjM2YTJlYTM5OGFlNWQxNjJiNWEgcmVsZWFzZTIyLW1haW50CisyNTMyNyA5NGI5MGNkZDZlMGZlNWUzZjdhMjkzOWJiNWE3NGE3ODg3MGRkYTc4IGxlZ2FjeS10cnVuaworMjUzMjggYzVkM2U0NTg3NDllNzgxZThjZDMwNmVkMjRmY2M0ZDdjZmMxNTg2ZCBsZWdhY3ktdHJ1bmsKKzI1MzI5IDljNDAyNTIzZjhmNWFiNTdkNDU4ODc4YTRiNDViNzIzNDdiY2YyMDEgbGVnYWN5LXRydW5rCisyNTMzMCA0ZDU1NDcwMGM0ZDE3MjMyNjhhOTg2NDNmOGIzMjdlZTdlYTA5NGI0IGxlZ2FjeS10cnVuaworMjUzMzEgNjI3NDFiMjVlZDY1MTc4NjQ4NTI1NTkzZWZmYzY3NTUxODhjMTJlYyByZWxlYXNlMjItbWFpbnQKKzI1MzMyIDcyYzk1NDQ4ZWU0YjNjMGI1YzRkODJmOGVmY2RmZjdjMzE3YWRhZmMgbGVnYWN5LXRydW5rCisyNTMzMyBiMWE4NzFkYzUxOTYyZDViODEzN2YzZjI4NjRkZmMzZjdkY2JlNTlkIGxlZ2FjeS10cnVuaworMjUzMzQgZmNlNzI3OGQ0NmIwYTg0OTBlNDY5YjVmYzM5ZDAwNjcyMjhjZmMyNSBsZWdhY3ktdHJ1bmsKKzI1MzM1IDRhMTMzNzkwNjYwOGZiNzZhM2U5NDAxMTY4MmZiMzc5ZjdkOGI5MjEgbGVnYWN5LXRydW5rCisyNTMzNiBlYThkYjZmNWQxYzU3OTI2Y2U1NzEzZGM4ZGI0NjcxNDg4ZDE3MjBmIGxlZ2FjeS10cnVuaworMjUzMzcgMDUyZWZjMDY1MjBhMjFkYmY2OGMxYzg2Y2JiZWFhMTA3NjYzMjk5NiBsZWdhY3ktdHJ1bmsKKzI1MzM4IDhlMGMzYjc1ZWZmNThiMTVhOTg2NmJmODBjYzRlOWI0OTllYjgxMGUgbGVnYWN5LXRydW5rCisyNTMzOSBlOTY0ZTBmYzRiZmU3MWJiM2QwMzI3ZTA4YTYwNTBkMWU1YmNhYjg5IGxlZ2FjeS10cnVuaworMjUzNDAgYTBhZDY5YzBiYzM2N2YzNDEzZDU4N2U0ZDgwOTUyOTc5NzJiY2RkNyBsZWdhY3ktdHJ1bmsKKzI1MzQxIDE5ZTNmODY1OWVlY2UyYzUwYzNmMzZjN2FiYzUyNDU1YTE0MGViZGMgcmVsZWFzZTIyLW1haW50CisyNTM0MiA4OGE4ZmNhZDAyZDBkY2NiYzRmZjc5N2E2NzhmMjRjNmZjM2EwN2U4IGxlZ2FjeS10cnVuaworMjUzNDMgYzgwZjU2MDEwYjI4NWM4M2JlZWRlMzFmNjk4NGI2MWEzODMzMTJiYiBsZWdhY3ktdHJ1bmsKKzI1MzQ0IDRlOWNjMjZlMDNmZGU5MDM4YzlmYjFhNjE5MWFmMmQyNmQxZjQzNzAgcmVsZWFzZTIyLW1haW50CisyNTM0NSBlMDhhYjM0N2QxMmU4YjNmYWZlMmFhZTNhNDliODAwY2IzMzUzYTQwIGxlZ2FjeS10cnVuaworMjUzNDYgNGMzMzg3YmExMTlkMDE4N2IyMmExNThlNGI0MjFmZDE5ODMwMjA0NiByZWxlYXNlMjItbWFpbnQKKzI1MzQ3IDE4YjVjN2Y2NGM4MDVjMTVlNGY2Y2RhM2NhNTFiNjA0NTE4MmI0MmYgcmVsZWFzZTIyLW1haW50CisyNTM0OCA5YjQ1YTU4NzRjMDk5MTlhYzBjNGFlNmM2MDU4ZmFlZmFhNDIzN2QyIGxlZ2FjeS10cnVuaworMjUzNDkgMzVkOWY1NjkzNjFhZmU2Y2EzZDA5NjU0MTkwYWEwYzFkMWJlNmNhZSByZWxlYXNlMjItbWFpbnQKKzI1MzUwIDBmNjMxMTFiZjRjNWQ3NzVmOTI2Njk3ZDNkYTg4NDNhYzZkYWI4MTAgbGVnYWN5LXRydW5rCisyNTM1MSBmOTJlODY4ZWI0NDBiNzYwOTk0OGE1NTc2MmRjYmM5YWVmNmM5Y2U3IGxlZ2FjeS10cnVuaworMjUzNTIgYzg0M2JlNWQ1OGE5ZGM4YzdkYzJiZjU0YTVhNzZjOTkzOTEzOTE5NSBsZWdhY3ktdHJ1bmsKKzI1MzUzIDA5YWI5Y2UxZjUyYTYwMjRlZWI1MmU3MTUyZWNjMzgwZjgyYTdkNWEgcmVsZWFzZTIyLW1haW50CisyNTM1NCAwOGM1YjBjN2Q5ZDgxOGU3Y2FlYzljNzUxMzdmNzEyOWI1YmNhZDg1IHJlbGVhc2UyMi1tYWludAorMjUzNTUgYTdmYmRlNmUzNGE1MGY0NThmZGJlZTFjMzRhNmFlYWI2M2E0OTY5YyByZWxlYXNlMjItbWFpbnQKKzI1MzU2IDRlOTk2MzE0ZjhmYjQ0MTM5ZDM4MWI4NjI2ZDNhMWU3NTQ3NjA5MTIgcmVsZWFzZTIyLW1haW50CisyNTM1NyAxYWEwY2U2MGY2YTg1MjcwYzE1MjQ2OGIyMTlkNjFjODhiNjVlOGU5IHJlbGVhc2UyMi1tYWludAorMjUzNTggMjcxNDczOWQ0ODNiNjI3ZDcxMjg5MGM5YmRhYWY2MTE0YTRiNDVhNyByZWxlYXNlMjItbWFpbnQKKzI1MzU5IDBiMTVjZjExNDMxZTRkMTc2ZTBmZmMxYTg2NzU0N2I4ZDQ5OTljZDEgcmVsZWFzZTIyLW1haW50CisyNTM2MCBjYjViNGE1NGZmMTJhNGNkODMwMWY2MjQ2YWIzODk5ODNlMmEzNjcwIHJlbGVhc2UyMi1tYWludAorMjUzNjEgZGVmZDJiMWE4NDI2ODhiZjE2MzkwOTYzZTFjYjcxNWI1NGVhMGRhNCByZWxlYXNlMjItbWFpbnQKKzI1MzYyIDdhZWUwZjhhZmFjNTA4Y2U2ZmMxOGUwZDcxZjM0YTVmOTcxMTllODEgcmVsZWFzZTIyLW1haW50CisyNTM2MyBiYzViZjcyZmI1ZDQ1ZDRjMGQ2YWVmNmEzNTI0ZmIwZGU2YzdlNDg2IHJlbGVhc2UyMi1tYWludAorMjUzNjQgOTY1ODc0Mjc5ZWUyZDI2NjU5NjEwNWUzZTZmZDUzZGYyMWMwZDkzNCBsZWdhY3ktdHJ1bmsKKzI1MzY1IDVlOTVmM2VlNzdlYzE0M2M3ZTIzZjBlNjY1YzU3MTZmM2E0OGI2MWIgcmVsZWFzZTIyLW1haW50CisyNTM2NiBhNmE1YjFmY2MyYTdlOGY1NGVhMDBjYjIyYzQyZTZlODJkNzhkMWI2IHJlbGVhc2UyMS1tYWludAorMjUzNjcgNTEyNjZiMmI0MzYwZDRlNmQwOTk2OTkzNTBkOGI5ZWI1MTU2ZjFiMyBsZWdhY3ktdHJ1bmsKKzI1MzY4IDUyYWEzZTNlNTc3ZjEyMGM1OTJjOGZlYzBhNzczNzliMjBlMWI1NDAgcmVsZWFzZTIyLW1haW50CisyNTM2OSA0Y2RhZmZjOWUxOGNjMGYwYmU1MzgyMDNlNDY1ODY2OGFiZmNjODIxIGxlZ2FjeS10cnVuaworMjUzNzAgOGE3OTEzMzBmYzIwM2I2YzI1MDc0NTM1Nzc1MjFlOTk2NDIwYmNiNCByZWxlYXNlMjItbWFpbnQKKzI1MzcxIGQyNGFhZGZlM2MwNmE5YThiYzE3MzdkMDlmNDMzZWMxMWRiMWRhYjggcmVsZWFzZTIyLW1haW50CisyNTM3MiA4Y2UxN2RhOThlOGNiYWZjYjk4ZTBiMTgyMTg3NDkwNDVhZmYwMjliIGxlZ2FjeS10cnVuaworMjUzNzMgODJmYjBmOTllMmRhZDMxOGRlNDAzYTRkZDk4YmJjNWMwMjllMWY3NiBsZWdhY3ktdHJ1bmsKKzI1Mzc0IDk2MzY3NWZlOTdlNzg5MWUyMzhmYmZkOWI3NzJhYmQ4OGE4MTI2OTAgbGVnYWN5LXRydW5rCisyNTM3NSBlNzk5NDk4ODM2Yjk0ZWM5ZmQ0NWZiMGM2MWQ1NDdhMWIxYThkNjA2IGxlZ2FjeS10cnVuaworMjUzNzYgOTg4NWRhM2ZlZWVjZDFiMTMwYWMzZTQwZTljMDg2ODY4YmY4MTMzNiBsZWdhY3ktdHJ1bmsKKzI1Mzc3IGUzZmI4ZDE2YTUxYWNhNTdkM2Y5YWYyYThmZDM4OGMwNGEwNDhhMDAgbGVnYWN5LXRydW5rCisyNTM3OCA0ZWI4MTg2OWY2MTk3YjViMjVhZWRkMDM3MmQ5ZGRjZjg5NzU5NmQxIGxlZ2FjeS10cnVuaworMjUzNzkgNDgxZTlhNDZkNjgwMTFiMzIzNzhiZWZmMGE2ZmI5YmFmMzY3NTVlZiBsZWdhY3ktdHJ1bmsKKzI1MzgwIDgwYTA0Y2JjZDBjODAxMWE2MDJlYzEwNjY2MTNlNDY5MTc0NGZmOTMgcmVsZWFzZTIyLW1haW50CisyNTM4MSA0NGVkYmUwZjIxNzQ4ZThlMmUzY2Q1MDAxMmJhYTg3NTBkZDUxODdhIHJlbGVhc2UyMi1tYWludAorMjUzODIgMzJkMjRmOGQ2NGY3YjM2ZGE3NDQyOTE2NDQ2YmM2MDExZTE0NzViNSByZWxlYXNlMjItbWFpbnQKKzI1MzgzIDlmNWUzNTc4Njc1MjUyN2JkYmU5NjYwYWRhYmQzZWI5ZWIxNDc3MTIgcmVsZWFzZTIyLW1haW50CisyNTM4NCA3MWYyNWY5NWU5MDI1OWQ1MjEwNmQ3NGU1ZDJjYmQ1ZTY0OGU2YzIxIHJlbGVhc2UyMi1tYWludAorMjUzODUgYjg2OTE2MDFkMmEwMjg4Mjk3YTU2ZDE5OWUxOWYwMDY0NGY1ZmQyYyByZWxlYXNlMjItbWFpbnQKKzI1Mzg2IGUwNjg0NDBlMTE2ZjkzOTZlODVmZWYxNDI4MTJmYWE3MTYzZjQ2YjIgcmVsZWFzZTIyLW1haW50CisyNTM4NyA5NWRjMzAyNDkyN2M5ODhlYmYxNjJkYTY1NzVkYjFkZDhhNTQwODk3IHJlbGVhc2UyMi1tYWludAorMjUzODggMDJhN2M2NGUzMzMxZjk5N2RjNTAzMjA3ODdiMjQ3NjgxYjMwNjdhNCByZWxlYXNlMjItbWFpbnQKKzI1Mzg5IGZiZTgyMGUwYzYwMWQ2NjU3OWYxYjAxMzBjYjY2ZGZhZjgwMTk2NzkgcmVsZWFzZTIyLW1haW50CisyNTM5MCA3ZmJlZmUzZTNkZWUyZDcyMmE1ZGNkYzVmNWVlMzJiYWFhMzJjMGFmIHJlbGVhc2UyMi1tYWludAorMjUzOTEgNTU2ZmI3ZjFiNjA2NzQzZTE4NjU0ZGUzYmY1NDlmMWNkN2I2YzkwOCByZWxlYXNlMjItbWFpbnQKKzI1MzkyIGE1YjI1YTgxNmE2ZDY4YzJlOTNjYzg2NGRjMjU5ZmE4Njc1Yzg2ZGUgcmVsZWFzZTIyLW1haW50CisyNTM5MyA5OTM0MWU4NTAxN2VhNDZiZGU4MGNkZGNkMzQ1NjU2Zjk4NzljYjQzIHJlbGVhc2UyMi1tYWludAorMjUzOTQgNzYxMDc1MjgwYTk1ZTYwYmUxYTU2ZGY1NDYyNTc4YWU3YzM5MjkzOSByZWxlYXNlMjItbWFpbnQKKzI1Mzk1IGIxMmU5NzE0MzY2OGQ4N2Q4YjZkYjNhNTgyZDQwNTU3ZDlkYmNlYmIgcmVsZWFzZTIyLW1haW50CisyNTM5NiBmZGFhZmFhODk1ODdkNzk5MGM0ZWNlZWFhMGQwODgzYTczYTI1NmE5IHJlbGVhc2UyMi1tYWludAorMjUzOTcgYWU0OGQ1NDFmNjVhYzM5YWE2NWViYThkMTJmNDZhNTBiYjFkODJmYSByZWxlYXNlMjItbWFpbnQKKzI1Mzk4IDIyOTNlMGQ3YjVjNDUwNmZlMTM1ODNlNzZkZjlmMDVhZWIwZjFjZTYgcmVsZWFzZTIyLW1haW50CisyNTM5OSAyMjliNjI0YzZiNTRjOTE2MGIzOTIzNDNiYmE2NGE1NjVlMzI3NDZjIHJlbGVhc2UyMi1tYWludAorMjU0MDAgNzIyM2M1NGIwNzI3NmQ5ODBkZGU4OTMzYTVkYjAyOTkwMjNhNWJhYiByZWxlYXNlMjItbWFpbnQKKzI1NDAxIGU2ZDQ0Y2YyOWRiZjk3NmE1MWU0ZjVhY2RjYmFiZjA0ODU2ZWYwMDMgcmVsZWFzZTIyLW1haW50CisyNTQwMiAxMzM5Y2JlOTRjZWU1NTQ1YTMyYmIyZmVlNDFjNGQzNTk4ZGE3ODdkIHJlbGVhc2UyMi1tYWludAorMjU0MDMgODc1ZmI1YjcyOTEwYzM1MWY4YTI0M2QwMzAzYmMxZmFkYmU1Njc4OSByZWxlYXNlMjItbWFpbnQKKzI1NDA0IGUwYTI4OGRiMDIyZGUxYjExY2NiZmNhNjRhYmY1NTk2MmYxODllODYgbGVnYWN5LXRydW5rCisyNTQwNSBmMzg2MzMwM2E5ZjRmYTU1ZjBiZWFjNzc5MGFkZjcwY2JiNmZlN2ZlIHJlbGVhc2UyMi1tYWludAorMjU0MDYgNDdhYTEwODFhZjI4MDk4MDA3ZTFkZmY4ODU5ZmE2NGFiNGQ1MzA1MyBsZWdhY3ktdHJ1bmsKKzI1NDA3IDE0OThjNmU0YjQzYTFmNmRiOTEwZWJmZWZjZDRiZTM5ZTA3YWRkOGYgcmVsZWFzZTIyLW1haW50CisyNTQwOCBjYTJjYmExMGI0NDg3YWFmMGZmZjI5NWVmMGU1NmNmMDA4M2RjYjU3IGxlZ2FjeS10cnVuaworMjU0MDkgMjc2MmQyMjUxZTg1ZGM2NGE3NjIxMGExMWE1ZjBlNGQzY2VmMTVkOSBsZWdhY3ktdHJ1bmsKKzI1NDEwIGVmYTIzZDI2ZmEzNWQ0NmU0ZmVjYzQ3NDRmNTExYjgxZDE3ZjhlYTMgcmVsZWFzZTIxLW1haW50CisyNTQxMSA2YmU2NTkyM2MwMmQ2ZGM0NjU1MWY5OWI3ODcwNGRjOWZhN2JmNzFiIHJlbGVhc2UyMi1tYWludAorMjU0MTIgOWIxY2M5OWY1OTMyYTg0OTc4YzIzOGUzNTQ0OWFjYTZiMzJlNjIzMSBsZWdhY3ktdHJ1bmsKKzI1NDEzIGVjZmY0MDQ2MTk3ZGExODA4YjdhMjFkODBhMzMyMWNlZTcwYThmZjMgbGVnYWN5LXRydW5rCisyNTQxNCBlMzFhZDRkZDMwZDk5ODgzMzM4ZGI3NTMzNzc5YjBjYzRiNzg1ZWFjIGxlZ2FjeS10cnVuaworMjU0MTUgMDhkNWNmNTk2YjAxMDcxYzBkYzYzYzQwNzRlYzYxMDM3MTI3MWQ2OSBsZWdhY3ktdHJ1bmsKKzI1NDE2IDQ5MTk3ZmQ3NjM2MmIyZjc0ZmVlYmIzNWNiYjIxODBmYWVhNGNlNTEgbGVnYWN5LXRydW5rCisyNTQxNyA1Y2JjZmRlM2FkNTUwNzY3ZGY4OGExOTUxNDU0NjdhM2VkNmUzZGU3IGxlZ2FjeS10cnVuaworMjU0MTggODZkMGY3Zjg2NTUwNTg3YTE5MTQ1N2ZmODVkNDVhNzZkOTBkMmQ5OCByZWxlYXNlMjItbWFpbnQKKzI1NDE5IDlmMWViOGZmMTc5NTZhZDhlMjgxNzY1NTI0ZmRkZWE1OWYyZGVjNDQgbGVnYWN5LXRydW5rCisyNTQyMCA0Mzg1NDMxMTY0ZGE1OWZjNjVjNzY5NmI3YzkyOWI5ZWNhOTFmNTc1IGxlZ2FjeS10cnVuaworMjU0MjEgY2E4YTI4NDlkZDU2ZWMxMzdjNWVmNmYxYjUxNWUzODQwNWYwZWVkYyByZWxlYXNlMjItbWFpbnQKKzI1NDIyIDQ2YmNlZTExYjQ4MDUwZDExNTk1ZjJkMDNhYTM0NWMzNTM3ZGU2NDMgbGVnYWN5LXRydW5rCisyNTQyMyA1MWVlM2JkZGI3MmNlNmU0MTM0YzcxMmRiNDNhMWJlYzYzMDg4YTljIHJlbGVhc2UyMi1tYWludAorMjU0MjQgNWNiNmNjNDZjZDQyY2U0ZDY0ODU4MGU1ZmE3Y2Q2MjMzYzU1NTM1OCByZWxlYXNlMjItbWFpbnQKKzI1NDI1IDEwODdjYTUxOWViOWFlN2YyNWUzNjNmM2E4ODNjYWE5YmFhYTYxNDcgcmVsZWFzZTIyLW1haW50CisyNTQyNiBhNTBiYWExMjZjNzVlNmU4ZDZjZjhkZDU0YmQwNTMyZjA4NmFjOGM4IHJlbGVhc2UyMi1tYWludAorMjU0MjcgYjgzNzRkZTg0ZTJhZTczNTE1MWNiYTQ2MWMzNTcyN2QwNDY5M2ZhMyByZWxlYXNlMjItbWFpbnQKKzI1NDI4IDk3MjI0YTljYzgzYzY1MTJhNzBkZmI2YTk4N2NlNzc3NmFhZmVlYzIgcmVsZWFzZTIyLW1haW50CisyNTQyOSBmNTc2ZDkwMDAyNmYzNmI5NTk5M2Y2NDk1ZWY1ODA0ODkzOTdmNTVhIHJlbGVhc2UyMi1tYWludAorMjU0MzAgNWMxNDhmNWUxYzExNDIwMDI1OWJiYzc4NGU1YjQ3MGUzMDE2OTdhMyByZWxlYXNlMjItbWFpbnQKKzI1NDMxIDNjM2FjYWM4NjczNDU0OWZhMjUwMzMyOGE5ZTNjMmVjMjFkMGZmZGEgcmVsZWFzZTIyLW1haW50CisyNTQzMiA1MDMyZWM4OTFlNzQ1NjNlOGQyYjEzNjM3YmYzM2Q4MjZlZGMxZmYyIHJlbGVhc2UyMi1tYWludAorMjU0MzMgNGJiYWNhZWRjNmUyZDc0MTViYjAyNWM0NmE1YzBlODVlZmE3NDEzYyByZWxlYXNlMjItbWFpbnQKKzI1NDM0IGMyZjkwY2U1OTc1NTM5ODMxMzdhYjA3NzI4N2JmNWZjNjQwZTFkNzYgcmVsZWFzZTIyLW1haW50CisyNTQzNSA1MjEwNjI5MGQzOTJjOTRhZTRlZDRiNDJlNWE1Yzg5ODliY2RkNjMwIHJlbGVhc2UyMi1tYWludAorMjU0MzYgZWNlNDMxNWMxMjA2ZjdkNDJiNDQxYjk4MjczNWVkZGMzYThmOGY0OCByZWxlYXNlMjItbWFpbnQKKzI1NDM3IDY1OTI2YTk3MGExNzFjODFlMzJkMDM4MzYwNmRkZWFjMmQ0MGI2ZGMgcmVsZWFzZTIyLW1haW50CisyNTQzOCA1ZDFiMjIwM2I2ZWNmN2NkMjU2YjNmNzg2M2Y5MzA3ODYyMzI1MzJkIHJlbGVhc2UyMi1tYWludAorMjU0MzkgYjM4M2MzZmYzYjFlY2JlMjZmMTYzNGNhMzM4ZmU2MjkwYzdiYzU2MiByZWxlYXNlMjItbWFpbnQKKzI1NDQwIDI4NTJiNGNiN2Y2YWJmMDg2NDVkNTU3MDBhYjI5OWM4NGE5MWM1ZWYgcmVsZWFzZTIyLW1haW50CisyNTQ0MSBiNzAyMTFjMWQyNTY3OWU0ZTRhM2NjYzExNmE1ODA3Mzk2YzY3YWZiIHJlbGVhc2UyMi1tYWludAorMjU0NDIgYjViNzczNTBhMDA0NDAzZDcwNGU3ZTA3NDAxMjg0MDZhYTc0NDVlOCBsZWdhY3ktdHJ1bmsKKzI1NDQzIDhkNWRjMWE3ZWUxODdiY2ExMDJlMDBlNTczOGY2NDU5MWU2NjViNjggbGVnYWN5LXRydW5rCisyNTQ0NCA2MDcyZmE0MTBkY2M5NGE0YzNjOWMwM2NlOWViM2IxYThlNjRiZTkzIHJlbGVhc2UyMi1tYWludAorMjU0NDUgNTVjNGQwODNjMzA5YTBlYTc3MmE3MGM1MTA5NDk4ODhiNDg4MTYwMCBsZWdhY3ktdHJ1bmsKKzI1NDQ2IGRmZWFjMDMzNDU3NGY3OWUwNmI5MzRjM2YwOTU4ZDQ1ZDBlYjAxNDkgcmVsZWFzZTIyLW1haW50CisyNTQ0NyBhZDNkNTk2MTIzNDVhMjQxMjhiODZjODk5YTJkM2E5ZmNmMDhiMDFlIHJlbGVhc2UyMi1tYWludAorMjU0NDggNjhhNmE5ZGQ0MmY4MDExY2ZmYzUxYjY1ZjdlMmQzMDkyZDBhMjYyOSByZWxlYXNlMjItbWFpbnQKKzI1NDQ5IGE5YWY4OTg2ODY4OWEwNThmZjBmYmMzZWViMjlmMzU2YTJhOGI4ZDkgcmVsZWFzZTIyLW1haW50CisyNTQ1MCA1YjI0YTZhZTJkYzRmMGQ4ZGZlZWIyYWE4NDdjZTNmZTRkZTczMTljIGxlZ2FjeS10cnVuaworMjU0NTEgNzM2ZmI1YWVjOWIzYjdjMWU1Nzc2ZmRhODI4OGEwMzk5ZjZjZWQ1MiBsZWdhY3ktdHJ1bmsKKzI1NDUyIDQwMDljMDg0MDJiMTQ1NjA1NTIwZTY3NDhjZDQ1NDJjOGUyZTBkOTYgbGVnYWN5LXRydW5rCisyNTQ1MyA5MGQzY2UzZWIxOWNiNTlhYzkxNjYyN2QwZTliNzVjZTYyM2JiMmQzIGxlZ2FjeS10cnVuaworMjU0NTQgNzA2NTEzNWY5MjAyZjM4Y2U4OGRhMWE0Y2Q3NWEyOTA1MGMzOTQ3YiBsZWdhY3ktdHJ1bmsKKzI1NDU1IDdhM2UwM2I1NDFmZmIxMjc4MTJhZWVjNzM0OGQwZjI0NTY0MDQxZTMgbGVnYWN5LXRydW5rCisyNTQ1NiBjYzhiN2Y3MTEyN2Q4NGQwZmE1MzhkOGI4MDE3MzljNGNkNmNjNzBkIHJlbGVhc2UyMi1tYWludAorMjU0NTcgNjZjNzQ1YTdhYmIxZmU4MjFlYWI1NGM1MjZhYTQ1MTNlN2ZiYjE0OCBsZWdhY3ktdHJ1bmsKKzI1NDU4IDU5NTVlMGUyOTc2ZDNlOTE1MTQ3NmY3ZjZiMWFiYjdkMzgzOGRjNDMgbGVnYWN5LXRydW5rCisyNTQ1OSA5ZTVmZjY3NDc0MzdmOWZlNDM5NmE5YTE5MjdkMDI0M2U2M2FjZmEyIGxlZ2FjeS10cnVuaworMjU0NjAgMmVmZDQzY2EwMzNmNjQ5ZGUxMzUyNTc5MWQxZThlYjg2OWY3ZTkzZCByZWxlYXNlMjItbWFpbnQKKzI1NDYxIDk2NjcyNTA5NTg1NDZkZjJjZWQ5OWJkOTcxMjg4ZTkzYTAwYzY1YmQgbGVnYWN5LXRydW5rCisyNTQ2MiBkMGFjYjNjYjAxMWRhNTVlYjc1NjMxMTc0ZDRmNzliMGU5ZmU1NjdhIGxlZ2FjeS10cnVuaworMjU0NjMgNDIzYmM5YjUxYTdlNDEzM2M1ZGI0NTVkOWY3YmE0ODhiNDY1YTVjNCBsZWdhY3ktdHJ1bmsKKzI1NDY0IGM4MWU4ZWEwYzRiYTdjNzM2NTc5NjQ4YmNiOTQyZDhhOGM1MmJjYjMgbGVnYWN5LXRydW5rCisyNTQ2NSBmY2YwYzI0NGUyODdlOTJkNmM2MDA2YWJkY2RhYjBkZjNjMGFhNDU5IHJlbGVhc2UyMi1tYWludAorMjU0NjYgNjQ0MmZiZTVkZDA0MjQwYTE2NTc1MGVjYzkwNTU0OWQ0ZWVlMGQ3ZCBsZWdhY3ktdHJ1bmsKKzI1NDY3IGNkMGNlNDcwYzE1M2M5NDhhYWFmOGZjNGM1MzlkMjkxYWM3NjRkMDkgbGVnYWN5LXRydW5rCisyNTQ2OCBkMzg0NTgwNTI0NDJmZjE1MmNkYTQ5YWI5ODdkMDc3MWU0NGViODZmIGxlZ2FjeS10cnVuaworMjU0NjkgOTNlYjRiNjFmNjg3YmJkYjQwNjQyNDRjYzVmZDkxMjA1YWQ3MGY4NSBsZWdhY3ktdHJ1bmsKKzI1NDcwIDEzYWMyN2ZhMDcwNDgzOTQxMGZkNWJlZGNlYmIzNDQ3YzdlYmQ0ZmEgbGVnYWN5LXRydW5rCisyNTQ3MSAzNTRjZGU3ZjkwYTE1MjdhYWZiNjhmODE5NzMyOGZiYmUwNjE5YjdiIGxlZ2FjeS10cnVuaworMjU0NzIgNThmMmMyOTliNjU0NDMzOGIwNzY3MmViYjk4OTQyOTE2OWQ4ODQyYSBsZWdhY3ktdHJ1bmsKKzI1NDczIGFkNzk2OWU4ZjU4ZGZhYzM5NTE5ODY0Mjk0NWJiY2U2NWEwY2Q2MGQgbGVnYWN5LXRydW5rCisyNTQ3NCBjNDk0MDg0ZGM2ZDg4OTA4MzFkMzJkZWMzZmZiODk1ZWI1MDgxZTc4IGxlZ2FjeS10cnVuaworMjU0NzUgOGIxMDRhODViOTljN2EyNzc3NzRhMWZlNjA5MmM5MTFhODJhOTBhYiBsZWdhY3ktdHJ1bmsKKzI1NDc2IDc5ZjI5MmRiYWJjZWEyOTVkYjZhNjEwYzk0MmI1MzExNTkxYWVmMDIgbGVnYWN5LXRydW5rCisyNTQ3NyBjNDU0Yjc2ZDUxZTdiOTAwNzE1Y2ZlNDIyOWQwZWM1NWM0ODIwMjNhIGxlZ2FjeS10cnVuaworMjU0NzggZDEwNGJiNTBhMTk0ZDMyYWVjZDUwMTU1ZWVkY2IxM2RhYzA3NmJiMyBsZWdhY3ktdHJ1bmsKKzI1NDc5IDBjNDIzMDI2OWVkM2VmYjk4Yzk3ZTRiNjg0MDJiMGI0MzU5YjU3ZjUgbGVnYWN5LXRydW5rCisyNTQ4MCAxMDQ2OTY0ODk2YTFhNGUzOTY2NDY1ODUyZGFjNGI0OWZiOWRmODY3IGxlZ2FjeS10cnVuaworMjU0ODEgY2JjMDhiMTcyZDFmZDYxNzViZWQ5YjY0MDYzNDk1MTE2MjI0ZDczMiBsZWdhY3ktdHJ1bmsKKzI1NDgyIDA4NTllNzY0NTA5ZTZhOTYyNjE0NDI3NTQyNGIzYTJkMTBjNGVlZWMgcmVsZWFzZTIyLW1haW50CisyNTQ4MyBiMmEyY2MwYzJhNjM3MzBiODUzMGNjMzVkOTczYTZhYjBlMDA5MTY5IGxlZ2FjeS10cnVuaworMjU0ODQgZDQ0MDZmYmZjYjRlNTRlOWI0MTUzNGU5MDk3ODQ0NDVjODJmMjIwOCByZWxlYXNlMjItbWFpbnQKKzI1NDg1IDA3NGI3ZTNlNTQ4ZDhlNzMxMTFlOWFkOTJmZWE4YTBjZGRjMTYwYjYgbGVnYWN5LXRydW5rCisyNTQ4NiAzYTA2ZTE5ZGY0NmI5MDNiMjk3YWVlMzgzNGFkZjE0ZTY4NDhjYWJiIGxlZ2FjeS10cnVuaworMjU0ODcgZWRmMDVjNjliYmYzYmJiZTUwMzVmYmZjNDY4MGMwNjkwZDE4NWI1YSBsZWdhY3ktdHJ1bmsKKzI1NDg4IDc0ZjE2ZjdhNjM2OTY2OTdjNjE5ZTZkZTEyZjIwM2EwYmY5OTE3ZjggbGVnYWN5LXRydW5rCisyNTQ4OSA5ODZlYjFkNGViZWY1M2FmNDU2ODM2YTMwYjk5OWRmNTYzMTEwM2NlIGxlZ2FjeS10cnVuaworMjU0OTAgNTk5NDQ0MGU1ZGQ1MmI4NmM1MzdkYTMwYjA3MGE1YmZlNGZlNTkyYiBsZWdhY3ktdHJ1bmsKKzI1NDkxIDJiZmQxMzdhOTc2ZjU5ODNlNGU3YzE2OTFkMjdkYzk1MzAxM2E5NzggbGVnYWN5LXRydW5rCisyNTQ5MiBlMTNhYTRjNjcyYTk0OWJhODcwYzhkOGM4NjU3MjY3OWVkZTM3ZTViIGxlZ2FjeS10cnVuaworMjU0OTMgZTgxYjMwNzZhNmMzMGQ5Y2E0MjdjNjVkYjkyMWRjOTY1YTgyYWFmMiBsZWdhY3ktdHJ1bmsKKzI1NDk0IGNjYTk4OGYzZjY0ZjIwNDdhM2Y0ZjNlMTQyYzZiYWQ0MzI3YzE4YzcgbGVnYWN5LXRydW5rCisyNTQ5NSA5OWU2MDgxN2NlNmVjZTI1MzE5NmYxOTQyMzRhYzNkMThmN2Y2NTVlIHJlbGVhc2UyMi1tYWludAorMjU0OTYgNTQ5MzIwNTRmNmE5NDFlNWViYThjOGIyNzViZDgzODAyOTZlYmVjZiByZWxlYXNlMjItbWFpbnQKKzI1NDk3IGU1OTllN2I4YWJmNzAyNTNiZGU1YmQ0ZGViNGU3ZWZiNjQyNWZhMTUgcmVsZWFzZTIyLW1haW50CisyNTQ5OCA5ZmRkZThjY2RjYTY1ZTQ0Yjg2NzNmMGEyMzMxNGVkMjE5ODlmMTE4IHJlbGVhc2UyMi1tYWludAorMjU0OTkgN2UxODgxNDBiNjE4MWMyNzkzMDllYWUyMzk4NWE2YzlkZDA1M2RlMSByZWxlYXNlMjItbWFpbnQKKzI1NTAwIDFhNTExMGI0YmQ3MmEyZTA2Yjk2MjM2MzM5ZjViZTEwNzBlNjJlZTQgcmVsZWFzZTIyLW1haW50CisyNTUwMSBlZDJhMTdhMzc2ZDBjNmJlZTZlMzRiYzFiYjBkYmUyODg0Y2Y2MmRmIHJlbGVhc2UyMi1tYWludAorMjU1MDIgMzQ3NzAzMDMyN2E2MGUzMGZhYWQyOGM4Y2I2ZDAyMjM3YWQzNGYyMSByZWxlYXNlMjItbWFpbnQKKzI1NTAzIDFlOGJlNzRhMzc0YmJhZGQ2MjI2NTY0ZTFiZDZmNmJlNGI1Yzk3YTMgcmVsZWFzZTIyLW1haW50CisyNTUwNCA0ZmY5ZjhhNzRjODI3ZWYzZWEyYjMxMjVkZThlNWM5YjBkZjViOTBjIHJlbGVhc2UyMi1tYWludAorMjU1MDUgYzI1ZDZkNzgwYjFiNDcyZDhiNWE2MzUyNzViMzZlM2VlOWFmMDkyZCByZWxlYXNlMjItbWFpbnQKKzI1NTA2IGZkMGVlMGEwNzA0N2QxN2VjNzE4ZjE0MjQ4OTllZGRiNjE0NDdjYzUgcmVsZWFzZTIyLW1haW50CisyNTUwNyA4ZWI1OTFkZDc2ODI2OGQwZmFiOTE2YmI5YzM0YzAzNDNlZjgwYmNkIHJlbGVhc2UyMi1tYWludAorMjU1MDggYmVmNDRkMTA4ZTU3NjEzODBmMjBkYjNkNzNiMDlmZGE3MTA3NGJiNyByZWxlYXNlMjItbWFpbnQKKzI1NTA5IGRiMDQwOTM4ZGM2NjNiM2Q2ZWVkZDYxNTVlMWVmNzJlNTBjYmQ5MjMgcmVsZWFzZTIyLW1haW50CisyNTUxMCAxZDFhMDFkOTU2YTJlZjBlODQ5ZjA4ZDY4ZTY1YzE2NjA5NmIwODY2IHJlbGVhc2UyMi1tYWludAorMjU1MTEgZWE5YmUyZTVkOTU0NDU0NDFiZjczZjAyMmQxYzUxZGZjYTNkZTNkZCBsZWdhY3ktdHJ1bmsKKzI1NTEyIDFlNjBiMWUxODE0NWRkZTI4MmNhOTRjYjEyYjg5MTliZDFmMTFiZjkgcmVsZWFzZTIyLW1haW50CisyNTUxMyBlNGQ3ZTUxMjllNGMxNjdkMGNiZjlhMjZkOWY0ZDgxMmNmOThmZTE1IGxlZ2FjeS10cnVuaworMjU1MTQgNGIzNDU5NTFhNWM1MWNmZGZkNTM1YTc5NmQ0MjJjMWM3YjE2MWZhMSBsZWdhY3ktdHJ1bmsKKzI1NTE1IGE1MzczMGNkMjljMTQ3NGE1ZDdjYzhiZTNjODkyOWI3ZmE3ODZkOTEgcmVsZWFzZTIyLW1haW50CisyNTUxNiA1MTMxMDMyNDk0NjJkN2M1YjNmN2JhMGIwYjhmYjQyOGRkZmQ4OWU2IGxlZ2FjeS10cnVuaworMjU1MTcgZTgxYTRlOTllY2ZhM2M2YjEyMTM1YjM5YWM1ZGZiY2Q1MDA1Yzg2NyBsZWdhY3ktdHJ1bmsKKzI1NTE4IDM0NWRlZjM3YjBkN2E1ODdlNzUwYTQ2YjZmZTAzODJmOWU2NjNlYjEgbGVnYWN5LXRydW5rCisyNTUxOSBlMzAxNjJiMWIzMDQ2OGRiZmM2MTk0ZjY3NzJmMDVmY2IzZTgxMTU0IHJlbGVhc2UyMi1tYWludAorMjU1MjAgMmIzZjQzODA2NzNmODE2MmZmMTI4ZDJjY2I4OTJiMWJmYjAwZjM5OCByZWxlYXNlMjItbWFpbnQKKzI1NTIxIGIxZDU3M2EyYTc3NDViMzc5M2ZkYWRlNDY4NDNmY2E4NzM0N2E0YTEgcmVsZWFzZTIyLW1haW50CisyNTUyMiA3MTkwMmUxY2ZiZWYzMGIxNzZiOGI2ZTg5ZmQ5Y2VhNDhkY2I0NWQxIGxlZ2FjeS10cnVuaworMjU1MjMgZDY5N2Q4OGQyNWI0MGNhZWFjYzUwYTQxZjc5OGRmMTBiMzhiZGRmMyBsZWdhY3ktdHJ1bmsKKzI1NTI0IGFmNTJiZjhlMmI4OWY0MzU1YTBhYWQyNjFlNDFhOTY2ODZiZmVlOGQgcmVsZWFzZTIyLW1haW50CisyNTUyNSA4MWRmYTJkYjRjNjFiMzBlY2I4ODNlZjVmODRhODc1MTE1YTQyMWNiIHJlbGVhc2UyMi1tYWludAorMjU1MjYgNDI4NjIxNjk1NDFmYjlkNTAzMGE1OWEwNTVmMDA4MDcxZTZhMjAyMyByZWxlYXNlMjItbWFpbnQKKzI1NTI3IGFmNjEyMmRmMjhlMDdlNDJjYTU2OTgwODVmMjJhNTU0ZmE4YjI2YzYgcmVsZWFzZTIyLW1haW50CisyNTUyOCAyMmM2NjU4N2M0NTJlMjQ5OThjYzIzOWZjMWQ3ZWZmOTM5NWExZDAzIHJlbGVhc2UyMi1tYWludAorMjU1MjkgODM3OTUxZWNkY2U5NTc1NGM5OTllODU1ZDFkYTlmNmZkNWVlNGZlYiByZWxlYXNlMjItbWFpbnQKKzI1NTMwIDg1NzlkM2QzMDFkNDhkNDg1MGFlZDY0NDRkMDYzMmRlMWI0Y2VhNzQgbGVnYWN5LXRydW5rCisyNTUzMSA2ODgzMWFjNTQ5NWJiMDEzZmQwM2Y4OTA0MjBmNGU4MmQ0ZDAwM2Y5IHJlbGVhc2UyMi1tYWludAorMjU1MzIgNGQ1YmVjYzY5MDJiY2NmM2Y2Y2JmNGM3ODM2OTAwMDQwYmE5YTNlZSBsZWdhY3ktdHJ1bmsKKzI1NTMzIDMyYTFiNDg0YTJmM2E1MmE4YzRlOGUwOWYzZjc3YTNhY2E2YWM1ZWEgbGVnYWN5LXRydW5rCisyNTUzNCAxMDNjNGM0Y2NjZmI3Yjc5NGJlMzUzN2YwZTljYzVhZTJkMDIxNzMyIHJlbGVhc2UyMi1tYWludAorMjU1MzUgY2E4YmQ5OTdlNDE5ZDQxODk2OWM4NmI5MTFmYmM2MzJjM2MwODRkNSByZWxlYXNlMjEtbWFpbnQKKzI1NTM2IGM1YzllMzZjMzkwOTlmOTM5MzcxZTg0OWQ3OGQxZDI5NWU4MmEyMmUgbGVnYWN5LXRydW5rCisyNTUzNyAwZTNlNjllMDFlY2Q2NDdkOWJmMzU3YjA1Y2IyYjg5ZjE2NjVjNzRkIGxlZ2FjeS10cnVuaworMjU1MzggY2RhMzA2YjIzMjFmNmQ2MmI1NWI2NDM0YWUxMWJkOWNlOTIyNmY2NSBsZWdhY3ktdHJ1bmsKKzI1NTM5IGUyMTk2YmEzNDMzMGZjZmQ5YTY4NjUyN2EyOGM3MmRlZjExMjhkYjUgbGVnYWN5LXRydW5rCisyNTU0MCBlZTMzYmJhZjMzODE5MzRmNmI3ZmFiNzgxMmFkYzY3YTk1OGQ5M2RiIGxlZ2FjeS10cnVuaworMjU1NDEgNmZhNTZjNDNhMWJhZTQ4YzhhMDE5Yzk1YThmMDE4ZmE3ODAxNTZjNSBsZWdhY3ktdHJ1bmsKKzI1NTQyIGRhZjA0ZGIxYTY5OThkNzkyYzA0NWQ2YmU5YzBmOWFhNzdhYjI2NmYgcmVsZWFzZTIyLW1haW50CisyNTU0MyAyNjYzMzRhNWM0Y2EyNmM2NWU2MzIzZjk2ZGNkYTI2ZTIxNDMzYmFlIHJlbGVhc2UyMi1tYWludAorMjU1NDQgZDJhNzZmN2RkNjUxMDY2ZDY3N2JkNGU1MDAzYzUyMmZkMWUwODM3YiByZWxlYXNlMjItbWFpbnQKKzI1NTQ1IGY4YTlkYjY3ZmE1YjQ1ZTlkZWJiYjE1M2I3MDI3MzM2MTM2NzNlODcgcmVsZWFzZTIyLW1haW50CisyNTU0NiA1MzRlNzkwNTliZTEwMDg3Njg0ZGY5MDY2MDFlZTgyNThiNjQ2OWYyIGxlZ2FjeS10cnVuaworMjU1NDcgODFhOGRiMTVmYjk4OGJlYTQwOTM0ZGVkNGZhZTIxM2Y5MzE3OTRlZCByZWxlYXNlMjItbWFpbnQKKzI1NTQ4IGFjMTEzMWY3M2QxZmQ3MDlkYjc2ODgzYWY5MzQzNmJhOGUxNWY0ZjkgbGVnYWN5LXRydW5rCisyNTU0OSBjNjI4OWVjOGRhMGE3OWNjMThkZWRlY2Q5ZDg3ZWI2Y2RlNzhmODU2IGxlZ2FjeS10cnVuaworMjU1NTAgMmM1ZjgwMzcxMjYxZWRmYTlkZmYzYTI0ZWJhY2RkOTMzMDEyMGRmYSBsZWdhY3ktdHJ1bmsKKzI1NTUxIGM2YTY2MGY4OWZmZTg1NjhlZmQ5ZDBiMjE4ZGY1ODAwNDg0MWY4ODcgbGVnYWN5LXRydW5rCisyNTU1MiAxY2EyZWI2NTBlMTM3N2I1NWY3YzlhNzQwZjQyMGE5YzVhNTAyMGQ2IGxlZ2FjeS10cnVuaworMjU1NTMgOTVlODY0MzA5ODJiZTdkOTIwMDY3ZjIzOWQwYzIxY2UwZjU3OTg3MSBsZWdhY3ktdHJ1bmsKKzI1NTU0IGNiNGVkZDEwODc3ZDkxN2M4ZWRmN2FmMzQ3ZGQ1NGVjNWY3NTRlMWMgbGVnYWN5LXRydW5rCisyNTU1NSAwNDRmOWU3MTMyMGY2MmNlYzYwMjJkMzVmOWMzYjkwZTZhMDM1MjBhIGxlZ2FjeS10cnVuaworMjU1NTYgOThhM2ZhNWY2ODdjYWFlZmMxNTlmZDFlNTZhNjFiZDlkOTAyZTRkMSBsZWdhY3ktdHJ1bmsKKzI1NTU3IGZjNmRjMmVhMjVjZjc3YjhjMDcwM2Y2NjIxYjg4NmE2MDQwMWIyZGUgbGVnYWN5LXRydW5rCisyNTU1OCAyNGJhNjkzZTljNzM5ZTY3NmVmMjI0NTAwODNhOTFkYjk2MDFkYThmIGxlZ2FjeS10cnVuaworMjU1NTkgMDFkNDU4MjY5NzUwMmQ2NTAxYWJiZTc2MDk0NThhMWYxOTgwMzgyNyBsZWdhY3ktdHJ1bmsKKzI1NTYwIGQ3ZjNmODNiOTY1ODhjMmMwZTUwZmQ1YjcyYTRhOWQ4YzQ4NDlmMjMgbGVnYWN5LXRydW5rCisyNTU2MSAyNmUzYjU2M2UyNjEzMmRhYjhiMTRmZTc0OTFjMTg2ZWNlMjFjMjA4IHJlbGVhc2UyMi1tYWludAorMjU1NjIgNGViYWNhZWUzMDA5ZTI2N2RkZmRiNTllNzBlMGIyMTU1YmY2N2U5OSByZWxlYXNlMjEtbWFpbnQKKzI1NTYzIGRhYjA1YWIwMzQ3YjkzYjcxN2UwNjAyYjZhOTI5MTg1MWFhYTJjY2IgbGVnYWN5LXRydW5rCisyNTU2NCBhZDgxZjhmYjRlZTQ3NTE0MzhhNzUxMmVkMGNmODM2MGJhMzU4YjAyIGxlZ2FjeS10cnVuaworMjU1NjUgNWYyYzBmNmYwYWY3MzQ5Yzc1MWQwZDgzNTIxMGRhNjNlZDZmODYyNyBsZWdhY3ktdHJ1bmsKKzI1NTY2IDQwOWFjMGY2ODk4ZjQxYjJkNzI0NmE3MDQ4YTFhNjY3OTliYzczMjAgbGVnYWN5LXRydW5rCisyNTU2NyA5MjhjMTI4MmU1ZTJiNWNmYzhiZjdhMzNkNmNhNDhmNzEyYjQyNTk5IGxlZ2FjeS10cnVuaworMjU1NjggZjQ0ODczNTBjNTM3ODdhOGY0YmM0OWUyOTJhYWRhM2MzZDI0MjMxMCBsZWdhY3ktdHJ1bmsKKzI1NTY5IGI4OThjMGZlYjc1NGU0ODlmYzQzNTNmZDlmYTI5ZWZjNmU3MTVlYzUgbGVnYWN5LXRydW5rCisyNTU3MCBmMGFlMzc2MjUxODk1YzgwYmIxOWNiMDlkNjMzYWU2NTlmNDQxZGQyIGxlZ2FjeS10cnVuaworMjU1NzEgN2ZlZjM1NmRhZDc1ZjkxYmI3YzI0NmI2MzVmZmViNjNmODc3NDk4NyBsZWdhY3ktdHJ1bmsKKzI1NTcyIDBiMDhlZWZiNmZjMDc3ZWRkZTZkNzU3OGUyZWRlZTQ1MjdmNzUwOWMgbGVnYWN5LXRydW5rCisyNTU3MyAwZGMxMGQ1NTcwNjIzOGQ0NzdmOWNhMWZlYThjNjNlNjlmYTlkOTlhIGxlZ2FjeS10cnVuaworMjU1NzQgMjM5MjY5Yzk2NTE0NDNkZDJkYWJiMjU4YjA2ODA2NTkzNGFiMWQ2YyByZWxlYXNlMjItbWFpbnQKKzI1NTc1IDIzNjA2YjQ5YWY3NDMwNDY0M2E5MDdhZTA2ZDUwZTU1N2U5ODMyOWIgcmVsZWFzZTIyLW1haW50CisyNTU3NiAyNmJlYmYyMDg5MWU3NTliYjIwYTA0MWRhM2ZjNGM5Y2NjZGM3MWM1IGxlZ2FjeS10cnVuaworMjU1NzcgZTI0YmEwNGQwMWIwOGU3MWNmZTY2ZjNhMmE5YzgzYTY1YTM0NTk4ZiBsZWdhY3ktdHJ1bmsKKzI1NTc4IDkwNzgzMmVlNzE3MzcxMzk0M2MwMzJjOGM4YjIwYzg3OTQ5NjJjZDYgbGVnYWN5LXRydW5rCisyNTU3OSA2NGM3MzFkMTgwZTkxZTFkZDI2Nzg0MTk5ZTI2ZmQwNmI3ZDg4YzRjIGxlZ2FjeS10cnVuaworMjU1ODAgZGE1MThmYzc4MDY2NzQzMjY4NDdjNmY5ODg1ODM0NmNiYjk3OTNjNSBsZWdhY3ktdHJ1bmsKKzI1NTgxIDU0NDBlNGIxN2FmZmIyZWUzYTJhMjM3ODRhMjhkMDRmZjZlMzY1NmIgcmVsZWFzZTIyLW1haW50CisyNTU4MiA3OGJkZmJiNmU1OWUxMzVkZTliYTExYjc1YWEyYWMwMmI2NDAyODdiIHJlbGVhc2UyMi1tYWludAorMjU1ODMgODEyNTViNWJlMjE5ZmEzNjFmMzk3ZTU1YjBkY2UwNGM3MGFmMzk1OSByZWxlYXNlMjItbWFpbnQKKzI1NTg0IGQ2ZDEyZTIxZDQ0ZjUyNzBiNmQ1YTI5OWFkMjg4Zjk3ZmY5ZTAyN2IgcmVsZWFzZTIyLW1haW50CisyNTU4NSBlNjFkMjk4MmZjMTM1ZDQxNWM3ZTM3ZDg0ZWFiMTQzNzZkYmI3MGZlIHJlbGVhc2UyMi1tYWludAorMjU1ODYgMDFhNTVjM2Q1MDVjMGQ3YWFkNzk1Yjc4ODVkOGMxNTIwZTEzMjcwNiByZWxlYXNlMjItbWFpbnQKKzI1NTg3IGE3NjJlZGIwNDYxYTdiZWM0NzBhMGNjYWFhNjc5NDA4NjdhYTE1NTUgcmVsZWFzZTIyLW1haW50CisyNTU4OCA2N2E1ZTI1ZGM4OGJjNzRlYjFjOTBmMTBmZGUwMWM4ZDhkMDJkYzFhIHJlbGVhc2UyMi1tYWludAorMjU1ODkgN2Y0ZDE1ZDg3OGNjZDYwNTJjMTJjZjA4MTFlZTVhNzI4NjEyNWE1NCByZWxlYXNlMjItbWFpbnQKKzI1NTkwIDJmNDhhZTVjOGE5NDcwZDE5ZDI0YmNiYWMwMWNiNDZmNGE4MDUxNWYgcmVsZWFzZTIyLW1haW50CisyNTU5MSA0YjZlZGE3ZDBjOGY1NGNlY2QxYThkODBkYTM5NjBkMzYyNmY3NDI4IHJlbGVhc2UyMi1tYWludAorMjU1OTIgOTk2OGQ4ZGRkZDUzZGQ2Mjk2Y2NjMWU3MDFjOTVkMjYzNGNhZWE3YSByZWxlYXNlMjItbWFpbnQKKzI1NTkzIGZjNDA1NmI5Y2YxOGMxNzE2OGE3NmUwOTVkZTM2MDM4YWFkMTJmODggcmVsZWFzZTIyLW1haW50CisyNTU5NCA0NTJjYzBmM2FlM2NhOGY3OWYzYTEwNTcxODc0ZjcwNmRjYjA5ZDUxIHJlbGVhc2UyMi1tYWludAorMjU1OTUgNjQxZjI2M2Y0ZjQ0YmI4ZTQ5NGRlZGIwNDA4NDhkNGEwMjI4ZmVlOSByZWxlYXNlMjItbWFpbnQKKzI1NTk2IDE4MmYwMTczYThlZWY1YmMxNTUyYTg4NjYwOTQ3ZTU3N2QzZmI0NDQgbGVnYWN5LXRydW5rCisyNTU5NyAyMmZjOGI4MjJkNDBkMmIwNjExZTEzOTBlNzg0ODIyZTBiOTBiMDk4IGxlZ2FjeS10cnVuaworMjU1OTggMjk4ODc5YTlmOWY0YmI0NWJmMDBmZDViODdiNTNhZGUyN2FjY2M4MyBsZWdhY3ktdHJ1bmsKKzI1NTk5IDUwYzY2NjZmYzQ1NjcwMzlhNjgwOGYzODAwNGM2ZjNiNzA3MmEzZTQgbGVnYWN5LXRydW5rCisyNTYwMCA0MjdlMzMxYjQxYTJlMWNlNDI5NGMyZGM3ZmVjNzczODg0MjkzMjFlIHJlbGVhc2UyMi1tYWludAorMjU2MDEgYWU1NzhjOGM2Y2VkMzgwNzg2NTRjZTFlYjMzMGUzMmRkZmI3N2YxZSBsZWdhY3ktdHJ1bmsKKzI1NjAyIGU1NGY1YzUwZWYwOWI5ZGFlYWYxNmVmZDNjZmIwYzBiOGM5NmI2ZGMgbGVnYWN5LXRydW5rCisyNTYwMyAyMzZhZTUzZDY0NjYyMjQ2MzExN2JlOTc1MDRlN2Q3YWM2MDQzMWIxIGxlZ2FjeS10cnVuaworMjU2MDQgNzU4NGI2ZjFhZmRlNDI0ZGQ0MDUyZTdlNmExNjVlMGZhN2ZjZjFjYSBsZWdhY3ktdHJ1bmsKKzI1NjA1IDE2M2RlNzFmMTk0MjkzOGFjMmE1Y2Y5MWM5MDBkMTZlYmU5YjQ0MWIgbGVnYWN5LXRydW5rCisyNTYwNiA2YTI3OWUxNzJkMjIzZTZmZjI5ZGUxYjAzMjQ4OTBlOWZmYzI5YTExIHJlbGVhc2UyMi1tYWludAorMjU2MDcgNzJmZGE2NGIyYTJlOGNkYjRjYzM4MGMzN2FjZjI0YThiYWM3YzcwNiBsZWdhY3ktdHJ1bmsKKzI1NjA4IGU4ZTQ2NWU2ZDQ1ZjlmMDkzMWExMzM2N2JhMWFkYzhiNDY3OTliZTMgbGVnYWN5LXRydW5rCisyNTYwOSAyN2EwZmIwMTk1OTkxMjRiYTM2MTk1NDY1NjM3NGVjMTQ5MThkNGQwIGxlZ2FjeS10cnVuaworMjU2MTAgYWJjZWQ1NTgxYzE4NTBhNGFjMjMxMWY5OThiNzIzNWI0OGM0YzgyNCBsZWdhY3ktdHJ1bmsKKzI1NjExIDFlN2NjOGU0YmFhYjk1YTRhYjY3NmMyZDA5MGI0YmNlNGU2OTA4OGYgcmVsZWFzZTIyLW1haW50CisyNTYxMiAyNzJmOTY1Mzg1YzcxM2M3OGMzMGZhOGZkMjVkZjllYTE1Y2NjMWYzIHJlbGVhc2UyMS1tYWludAorMjU2MTMgZWRhYmFkMDI1ZWYxYTViNWU1MTcyYTU5MzA1MWE3MDBmZmE5OWRiNSBsZWdhY3ktdHJ1bmsKKzI1NjE0IDlmMTE5MTMyZmZiYzQ2M2U5NzkwZGE1ZjliNGZlNDQ1Y2Y1MmJkMzUgcmVsZWFzZTIxLW1haW50CisyNTYxNCA3MGVkZDI5MmM3NTdhZjY4Y2EyMjU5MGNlZThjN2QxMzE5Yzk5ZWU0IHJlbGVhc2UyMi1tYWludAorMjU2MTUgMzdiNjk4MTVhZjIyZmQ1NmY2M2RmZjRmODRiNTgyM2FlY2Y4OTM1NiBsZWdhY3ktdHJ1bmsKKzI1NjE2IDkzZGI3MjNkNWU0Nzg5MTIwYTE4MzIyNzQxYjNmYzE5MWU2MDI5YmQgbGVnYWN5LXRydW5rCisyNTYxNyAwOTM5NDJiYWUxYTYzOWFmMDM4MTFhNTQ4YjUwYTVhNTBjOTFiNzZiIHJlbGVhc2UyMi1tYWludAorMjU2MTggNTRiNjM2MTYwYWNkZmU2NDZkNTIyYWNhYmYyYTEwYzhmY2I1M2Y4YiBsZWdhY3ktdHJ1bmsKKzI1NjE5IGFhM2JmNTI1ZjQ4MmNiOThkNTc3MjdhNDBkNTJlMDQzMTJhMTk0Y2QgbGVnYWN5LXRydW5rCisyNTYyMCAyMTZjY2RhMjg0ZDg1ODVlNWJmZGMyNmU1YjQ2MjMxNzM4NTM3YjM2IGxlZ2FjeS10cnVuaworMjU2MjEgMDc1MDVhNDUxMDE3NmJmMzgwNGJkMzMxZTg0Y2E4N2M5NjlmMTljMCBsZWdhY3ktdHJ1bmsKKzI1NjIyIGQzMDc5N2U1Y2MxYWI4NTUzNTkzODk3MTQyZTEyMGQzNzdkZGMwM2MgcmVsZWFzZTIyLW1haW50CisyNTYyMyA2YzM0Y2QzYTk4YTkzZTAyOGZlZTdlZDlkMmNiMjVhZGQ2M2Q5MjM5IHJlbGVhc2UyMS1tYWludAorMjU2MjQgYWZmMjE0NTNiZWZmZjFhMzMxYTI1Zjg2MDU4MTgzY2I4YTAxZjc3MSBsZWdhY3ktdHJ1bmsKKzI1NjI1IDE3ZThhM2M5MzEwY2MzOTAyZjRjN2E2ZThlZDUwYmE2NjJhOWViOGIgbGVnYWN5LXRydW5rCisyNTYyNiA4ZTk5ZDU2ODE5ODQ2ZWY0MDg1ZjUzODU4Y2YyNGRkMWY4NzRkMjc1IHJlbGVhc2UyMi1tYWludAorMjU2MjcgMTUwYTJhOWM1NWI4N2NhZWYyNDczMTY2OGVhZGQ1YTdhOTZlMjdhYiBsZWdhY3ktdHJ1bmsKKzI1NjI4IDY0ODVkMWJhNzM1Y2M1ZWM1YTY4MzAwMzRmNmU5ZThmMTg0OGM2M2UgcmVsZWFzZTIyLW1haW50CisyNTYyOSBmOWE1YThmYzMxNzc5NmUwMWM2MGM4ZDMzZjNmYmIzNmFmMzYwMzU1IHJlbGVhc2UyMS1tYWludAorMjU2MzAgMmE4YmYzZDBiZDg2NWViNzBjMTllNTJjODZhMTI5NGE2ZDM2YTcxNyByZWxlYXNlMjEtbWFpbnQKKzI1NjMxIDEwMDA3YWE3OGE1ZTk1NDYyOGQ5NTcyYjNlMDBmOWZiYWUyZDM1ZTkgbGVnYWN5LXRydW5rCisyNTYzMiA2OWFkMmExYWQ2ODllMTQ2MGYwMTllN2U3NDAzZGU0NzU1ODA3MjUxIHJlbGVhc2UyMi1tYWludAorMjU2MzMgMGJiMTdkM2I1MTk3ZDE2YjAyZDZjOGMxOWMwNTg1OTY0MjFlNDBiZSByZWxlYXNlMjItbWFpbnQKKzI1NjM0IDI4MzgxNjUyOWU3MjUwZmZlYzU0NDI3ODlhMmI2NDM2NDQ3MGZlOTcgcmVsZWFzZTIyLW1haW50CisyNTYzNSA3NjNkNWFlODllOWVkODdjMDRkMDlhZmQxODNlMmZmYjYwYjUyY2VjIGxlZ2FjeS10cnVuaworMjU2MzYgMTdjYTI5MDdkMTM1OWQxMzIyZTg5M2UwMzcyNWRiNmVhZWZlMDI5MSBsZWdhY3ktdHJ1bmsKKzI1NjM3IDNjNjg1YzAzNzc5NGZhODJkZDgxODRmMzBhZGNjYzg3N2M4ZmQzODkgcmVsZWFzZTIyLW1haW50CisyNTYzOCBmMmRhMjU4YWFjMjA5Njg1NjZiZTRhNjQ4YjY3NTY1NGY3NDYwZmFhIHJlbGVhc2UyMi1tYWludAorMjU2MzkgOTg5MTk1OGZjNGIyOTZiNzExNDJjZmRhMzIxZDg2ZGFmZTBlMGMxNyByZWxlYXNlMjItbWFpbnQKKzI1NjQwIGFhNDRkMzc5OWI0N2JiYjM1MmFjNmMxMmU4Y2M4MTkzOWNlMWM1YTcgcmVsZWFzZTIyLW1haW50CisyNTY0MSA2ZDRlMDVkMjU3NTk2ZjRlNjM1OGUxMDZiOWUwM2FiYjUyZjE0NGIxIGxlZ2FjeS10cnVuaworMjU2NDIgMjJlMGRhZGE1NmQ3Yjg2NGJiM2VkNTI0OGZhN2M1ZjYwN2JhNjkxNCByZWxlYXNlMjItbWFpbnQKKzI1NjQzIDZhMzQ4YTM5MDBjZGY4MzYwNTAwYmYyNTU0ZmU1MzI4MjQzYzFjNmIgbGVnYWN5LXRydW5rCisyNTY0NCBmMDM0NmQ5MzA3NzAxNmUyYzZhMTMxN2IwMjJiZTg2MDdlY2E4YjM4IGxlZ2FjeS10cnVuaworMjU2NDUgNWFkZTdlODIwNGU1MjAyZjYxMTUxNDc1ZWVhMWQ5MzRjNDdlM2JmZSBsZWdhY3ktdHJ1bmsKKzI1NjQ2IDE2MGUzMzVmYmU2ZmRkMmI0MWRlZDE2MzYyOWM1ZjNhZTM2MDY5NzMgbGVnYWN5LXRydW5rCisyNTY0NyA1NmY0ZGZjY2E5ZDgxZmMxNTJiNTI0ZGY4OWE4NzY4NWY5ZmUxNDYzIGxlZ2FjeS10cnVuaworMjU2NDggY2I2Yzg1ZDgzOTFmNWVkNTE3MjUyN2M0YzgwMjBjOTJiMjA4NTU4MSByZWxlYXNlMjItbWFpbnQKKzI1NjQ5IGU0ZTU0ZmM1ZmIzZDM5NTI4OGFhMWQwNGQ2NjZkMGZkOGZkMmZiMzggbGVnYWN5LXRydW5rCisyNTY1MCA5MDc4ZjI5NzZiY2NhM2MwNDRlODhkZGE1ZjY2M2ExNGUyNDM0ZTI1IGxlZ2FjeS10cnVuaworMjU2NTEgMTg3MzgzM2M2MTZkZjQzM2IxN2RhYzFmOTc2YjMzOTliMjc4ZWIzYiBsZWdhY3ktdHJ1bmsKKzI1NjUyIGE3OTU4OTcxZGUxYzcyZGMzY2VlYThjNDk0ZjYxODM3MTY0N2VlOTkgbGVnYWN5LXRydW5rCisyNTY1MyAxMjU3N2FlOTU5NTYyMzI2NmNjOTlmZWU4OGMyODIwZDQ1MDAxODI5IGxlZ2FjeS10cnVuaworMjU2NTQgNDllZGJlZTlkYWUyMjI0OGM1ZDMxYzg2NDdhMzIwOWUyNzQ2N2ZlNCBsZWdhY3ktdHJ1bmsKKzI1NjU1IDI0YWY4NDIwMzBhMGI0Nzg3ODYzYTQ5OWZhY2I5OGZkNWI0YzA2ZTYgcmVsZWFzZTIyLW1haW50CisyNTY1NiBjNmMxYTVmYmI2YzFmM2VkZWVmOWY3N2NkZjY5YWE1MzBiNDJiZDFhIHJlbGVhc2UyMi1tYWludAorMjU2NTcgM2M3NGExYjEyODdhZmFjY2UyYjg3YTdhODkwNjgzMTg4MGRmMWE3OSByZWxlYXNlMjItbWFpbnQKKzI1NjU4IDlhMDkxZDcyMTM2YWMwNWYxNWU4NDc2MmI2ODE5Nzc3N2FmN2Q3MTkgcmVsZWFzZTIyLW1haW50CisyNTY1OSA1NDNiMmE0ODQ2N2I2NGNkYmUzNjQ2NjkyNTAyMTg4YWMyOTJlNzQ1IHJlbGVhc2UyMi1tYWludAorMjU2NjAgNjMzYTk2YTY1MDA5MTQ4ZWNlOTNlYzhhZjg0MzM5NzJjZjVmMDZhNyByZWxlYXNlMjItbWFpbnQKKzI1NjYxIDQxYjUxNTNkNzA1ZTVmN2MwYTY4MWJmNTUxZWIyMzBjMzYxOGMxYjEgcmVsZWFzZTIyLW1haW50CisyNTY2MiA1NGJjYzVlYzNhNTEyNTU3MmQwOTAxNWJhMzkwNTMyMmRlNDFhYzM3IHJlbGVhc2UyMi1tYWludAorMjU2NjMgYTM0NjBjYjIzZjE5NDUxNTQ4N2VkMjg5NDIyYzI1OWJmMGI1OTE0YyByZWxlYXNlMjItbWFpbnQKKzI1NjY0IGEwY2M1MjczNWU2ZTQ2OGQ5NGZmMjBlZjY0NDYxOTRjYzI3OTNhZjUgbGVnYWN5LXRydW5rCisyNTY2NSBjNDAzNjMzMzU1ODU1MTk2NjY4YWY1NzM3MDZkYjJjZmZkOGFiN2E4IGxlZ2FjeS10cnVuaworMjU2NjYgOWM0MzViMWI1OWE1NmMwNDRhZmM5ZjA3YzAyNDY5YTdlYjQzNjdhZCBsZWdhY3ktdHJ1bmsKKzI1NjY3IGVhM2IxODc3NDZmN2Q1MzllN2MyMjM4MzEzYjg2MTU4N2U5ZmE0YmIgbGVnYWN5LXRydW5rCisyNTY2OCAwODlhYjViYTk0NjZiNDZlZGE2MDMyMzkyZTI2NjFkOWE0Y2ZlZWRkIGxlZ2FjeS10cnVuaworMjU2NjkgOTllMWZlYzI2YjQwNWFiYjQ0YjYyMTBkYTNkY2IwNTFjMGFlZTQ5MiBsZWdhY3ktdHJ1bmsKKzI1NjcwIGI1NWQ3YmMwNWVjODg2NzZiMmYxMDhmNDg5NjVlMzM2MDRiMjcyMjMgcmVsZWFzZTIyLW1haW50CisyNTY3MSAxMzRjYjQxODY5NDY2YWJjZjQyZjgwOGViNWJhMWFkYzdkZmUwZjRjIGxlZ2FjeS10cnVuaworMjU2NzIgMDQ5NzM5Y2EwYzEzNWQxYTUxYzFlNTEyOTI4OWJhOTk1ZGY0OTI2YiByZWxlYXNlMjItbWFpbnQKKzI1NjczIDM1YzliZTY5Mzg4OGUwMGJkYWY4NTBhYTBmZDhiMGQ5ODU2MDk3YWYgbGVnYWN5LXRydW5rCisyNTY3NCAxOWQxZDM1MDIwYmQ0MzdkM2JkYjQ2MTI0MGNlZjBkMjA2YTRkMzhhIGxlZ2FjeS10cnVuaworMjU2NzUgM2Y2ZGRlYWM0ODU2YjUyODhmZTA3MDNmMmM1NGYxYTA5N2Q3ZGJiYiByZWxlYXNlMjItbWFpbnQKKzI1Njc2IGE0MTVjYTNlODkwMzg2MDE0Yjc4MDEyZTVlMmU4NGI4NmNmOWU2N2UgcmVsZWFzZTIyLW1haW50CisyNTY3NyAwNDA4ZWNkODRhYTJhMjYwNDlmMmU5MWRkNGY2YmU2NmZlNWMzMjUzIGxlZ2FjeS10cnVuaworMjU2NzggY2M3ODhiM2IyMWI2MjI0YjM2ZDc2OTk1YjM4ZWNlZGRmZGZmNzI0NCByZWxlYXNlMjItbWFpbnQKKzI1Njc5IGRjODBjZTExZmFlMzkwOWEzMTQxNzU1ODBiNGIzMjRhMGI0YTMxZjggbGVnYWN5LXRydW5rCisyNTY4MCA1ZjRmZmJmZTZiZTY4MWI1Zjk2MGI2YjE5ZjQzOTBmZjAzYWJhNmI5IGxlZ2FjeS10cnVuaworMjU2ODEgYWI3NGZmODBmOWQwYWM1M2IyMzIyY2Y1ZmJlNjM4OTY5ZTU0MGU2ZSBsZWdhY3ktdHJ1bmsKKzI1NjgyIGRjNjA1NGU1YjY0MmNkM2MzZjFmNjE3ZDdkNDMyOTBlMjRjMmQwZjAgcmVsZWFzZTIyLW1haW50CisyNTY4MyAwOTZiNzUxMjBlNzJiNDRmZTRhMzJkZTI5M2NmOGNiMjAwZWE2YjIxIHJlbGVhc2UyMi1tYWludAorMjU2ODQgNWE3NzhhZTE4NTEyMzg5MWNlZWFhMGQ2MTlhYzRhMmZhNWY4N2NiMyBsZWdhY3ktdHJ1bmsKKzI1Njg1IGFjOTc2ZDM2NzA4ZDNkNzgxYzBmN2E2MDY2OGM3MTRlZjQ4MDZiYmIgcmVsZWFzZTIxLW1haW50CisyNTY4NiAzMWQ5ZDExYTI5NGNhOTdkNWJjZmI5MWNmZjllYzYwYjI0M2MxZGRkIHJlbGVhc2UyMi1tYWludAorMjU2ODcgZGZmMGE0NGIyMzY4ZTQxNGE0NDU2OGVhZjcyYTEzNWZmOTYwYjRiMiBsZWdhY3ktdHJ1bmsKKzI1Njg4IDE2ZjBkZWZhNDVjMjBkZjI2MDQxNjBhZjM4MTNjYzI5MTAyMmFhNjkgcmVsZWFzZTIyLW1haW50CisyNTY4OSAzOTkyNTQ0ZGMxNDVmYmViZmIxMzczNTAyODY2Y2M0OTQ4ODA5YzZiIHJlbGVhc2UyMS1tYWludAorMjU2OTAgNmQwOGEyOTU1YmI2MjUxODcyNzkyMWYxNDA4ODEyZWU3NWQ4MzA3MCBsZWdhY3ktdHJ1bmsKKzI1NjkxIGE2MTkzYTg3ZjUwMGUyNzc3YjNmMTk2ODM4ZTYwMmI2YmY3ZmI4NTQgcmVsZWFzZTIyLW1haW50CisyNTY5MiAxYTc1MGZiOTNiMTY5MzYxY2JiMGVmOGQwNDYxZjUwNjBmMmU5NmZlIHJlbGVhc2UyMi1tYWludAorMjU2OTMgZjJlYjk1ZmI0NTI5ZTI3Njk1NmYwNmFkZWFhN2IzMjJiMTU0MDg1ZiByZWxlYXNlMjItbWFpbnQKKzI1Njk0IDI4ZTM3OTA1YmVlNDU4MjkzNDg1OTczYmIwYzE3NGNkMjg5OGUzOGQgcmVsZWFzZTIyLW1haW50CisyNTY5NSA3OTg1NmFkNzQ5YWI3ZGM3Mzk4NmE5MzEyMzIwNmI1MWNjNzVkM2YyIHJlbGVhc2UyMi1tYWludAorMjU2OTYgZGViYjAwNWYxNjczYTAzOTJmNzNkMDc4OTkwZWI4MDFhMWQyMTM2MCByZWxlYXNlMjItbWFpbnQKKzI1Njk3IDBmZDM4MzFjZjJhMDc1N2EzZjYzNzA3NWRhNjI0ZjhjMjlmZjAyZGUgcmVsZWFzZTIyLW1haW50CisyNTY5OCAwMjllNGNiZDIzMTI5OWIxYmQxY2NhMmFhZjZmZGQ0NGVlMTM0Y2UyIHJlbGVhc2UyMi1tYWludAorMjU2OTkgYzkwMWQxNThhZDY4OTM2ZTljMTE1MTZmMjNhZDI4OGExM2IwNmJkOSByZWxlYXNlMjItbWFpbnQKKzI1NzAwIGEzNGY5MTk1ZjYxMWU3M2Y2MzI1ZmVmNGRhM2IwMTE4MDcyMDgwOTUgcmVsZWFzZTIyLW1haW50CisyNTcwMSA2YzNlMzIzNTdkOTEwOGMzMjc2MTZhYmFhMmUxYmJkYWYzNmFiYzlhIGxlZ2FjeS10cnVuaworMjU3MDIgN2VjYzQ5MTE3ZDdlODhiNjcyNTBmNGMzNDM3ZjI2M2I3ZjdkOTliMSByZWxlYXNlMjItbWFpbnQKKzI1NzAzIDI1NDhlMmYzMjNmYTdlOWNlM2YwODY0YjM3MjRjZTA0OTBkNzNjYmYgbGVnYWN5LXRydW5rCisyNTcwNCAxMmQyMDRkOTNhZjM2NTM0NTJmY2YxYzE2ODJjYzZhNDUyOTc0NjVmIHJlbGVhc2UyMi1tYWludAorMjU3MDUgNjQxZmI0YjQ3MjBlNzY5Y2ViODFmY2Q0NjIxYTU3NWI4MzAxMmM3OCByZWxlYXNlMjItbWFpbnQKKzI1NzA2IGY5NzZmYWEzMzBlYTE2N2Q4MmFkNWVmYmFkZDg0NTQ4ZmEyZTE5ODIgcmVsZWFzZTIyLW1haW50CisyNTcwNyAxZjczMjUxYzYyNWFjNjIyMDlkZjY2YzYyOThhZjE4NjhiYjM0Y2FjIGxlZ2FjeS10cnVuaworMjU3MDggMjdmMzZmNGJmNTI1OGJlYzQ1MDMzMzE0ZmJmZDUwODI4MjM0ZTBlNCBsZWdhY3ktdHJ1bmsKKzI1NzA5IGI4NzllNjg1MWJlM2I5OGYxYjFjMGE1MTBjOTJhMjVjYjI3NmViNDggbGVnYWN5LXRydW5rCisyNTcxMCA1MWFhOWViMjRkODFmNjI3YjBkOWNmMjdiN2Y1M2MzYmVlYzYyZjc1IHJlbGVhc2UyMi1tYWludAorMjU3MTEgZmI5YTAwODIxYzBkNTBkMzNmODBkYzZkYzEyYmNmNGI3NDM4ZDQ2YSByZWxlYXNlMjItbWFpbnQKKzI1NzEyIDRjZTUxN2IzZTMwMWY2Y2M1MmQ2NGRhODhkMTFjYTFjOWJjMThlOTYgcmVsZWFzZTIyLW1haW50CisyNTcxMyBhMjczM2ZlZmZiMzY2OTdhMWMxNGRiYjVhZjg2NDljOTA3Mjk1Yjc4IHJlbGVhc2UyMi1tYWludAorMjU3MTQgMWJiNGQyYmFiYzE0NWM2ZjJiNWU3YWMzMGMwZjI4YmMyMzcxNTkyOCByZWxlYXNlMjItbWFpbnQKKzI1NzE1IDVhOWRhZGE3Y2JhYzM3ZDU1ZDcyNDI2ODkwYTU1YjBjMDNhYjQzMWEgcmVsZWFzZTIyLW1haW50CisyNTcxNiBkY2E0YTdjMzZlYjk5Y2M5YTViNDNlOGJhNjM5YzAzOGJhMTA3ZGVlIHJlbGVhc2UyMi1tYWludAorMjU3MTcgMzUxM2E5ZDA5MGE5YTk1ZTNmZTRjZDIxNWNlMzYyODYwZjdiYWEwMyByZWxlYXNlMjItbWFpbnQKKzI1NzE4IDkyZWJlNDlkMjJjNTNiZDE1OGE5Y2Y2MTQ4ODhlMGU5YWNjMzNiNWIgcmVsZWFzZTIyLW1haW50CisyNTcxOSA4NGYyYzc3ODNkMzEwMTY1YjdiZmQ4NGY4MDg2MTVkYjU3NjI4ZDJhIHJlbGVhc2UyMi1tYWludAorMjU3MjAgZGQxN2FhZGUzYmViOGE1NTI0NWVmYmE2N2U4YmJiMzdmNDEwMTU3ZiBsZWdhY3ktdHJ1bmsKKzI1NzIxIGRmOTc5YmRkNmFlZmQyYmVkYjI0NTM3MDA4ODA0MjIyZWZjODU0ZmMgbGVnYWN5LXRydW5rCisyNTcyMiBjOGE2ZWEwMGE5ZTFhZGNiYjE5YTYyYzAxZWNlZDA0MjUxYmYwYjI3IGxlZ2FjeS10cnVuaworMjU3MjMgMTdkNTYxMjQzZmY4MTJkZDEyYWY2ZWQ4MDU3NWJhYWNkZDU2MmVmNyBsZWdhY3ktdHJ1bmsKKzI1NzI0IDhlZDY0N2QzMWY0NGVmNGZhOTViMTVjNmZlMTIzNTg0MmJlMDBjMTQgbGVnYWN5LXRydW5rCisyNTcyNSA2YWM0MTUwYzRlODg0MWEyOWIyMWI2Y2EyNjZmM2JlZjg5MTlhMjk3IGxlZ2FjeS10cnVuaworMjU3MjYgMzRjYmVmZDJjM2ZlOTY2NzY1NTg1NzAwNTE3ZTQxOGY3YzhjNTk0MyBsZWdhY3ktdHJ1bmsKKzI1NzI3IGM4NTRiNmQwYjJjMDRiYjcxOTc3ZmMxYzRmMjQ4OTczZDQ0OGFiZTYgcmVsZWFzZTIyLW1haW50CisyNTcyOCAxMjFlMTk4ZjZkZGE5ZThiOTUzZDc0NmYwMTQyZTgyNDQxMmEwNGQzIGxlZ2FjeS10cnVuaworMjU3MjkgZjJiNmNjYzAwODA4NTE0Y2EzNGMxYmJlZDM1Mzg5NDIwYjc1N2YyOCBsZWdhY3ktdHJ1bmsKKzI1NzMwIDcxNWQ2MzFlZWEyZjQyNjIzYWNmY2M4YWZmYjUxNDEyZDNhMDY4NTQgbGVnYWN5LXRydW5rCisyNTczMSA3ZjBkMzkwMTRlMmUxNWVhOWZiM2RhYTEwMGE5MjZjOTI0MmQ4MjcxIGxlZ2FjeS10cnVuaworMjU3MzIgYzIxMDU2MmUxNTU4MGM2MjY1MTdjZjJiOTJmYzY1NzVjNmEzMzRiZiBsZWdhY3ktdHJ1bmsKKzI1NzMzIGIzNTdkZjMwMWY1ZjI1NmYyZjM0YWQyOWYzMzg3YWI1MzA0Yjc1M2MgbGVnYWN5LXRydW5rCisyNTczNCAwNzFmNTAzZTVmNGY0YWVjMzUzYjRmOWQyOTkyYWNhM2EwNmJiNGE0IHJlbGVhc2UyMi1tYWludAorMjU3MzUgMGE5NmRhYjcwYTE1NzRlYjhhMGJkNWM0MWZiN2QwODdlNTc3ZmQ0NSByZWxlYXNlMjItbWFpbnQKKzI1NzM2IDI0MTc2OTQzMjRlZjA4ZDEzMGZmM2ZmYmVlOWJlYzhmMWI5Yzg0MjUgbGVnYWN5LXRydW5rCisyNTczNyA4NjAwZGJhNGY1OWQzZDI1MjE3MjJjZDdkYWExMjM3NzM4OWU1YjA5IHJlbGVhc2UyMi1tYWludAorMjU3MzggY2Y5ZjFiNmRiYTNiNDc4N2RlYjlmYjVlOWMxOWQ5YmNlYmJjZWJhMyByZWxlYXNlMjItbWFpbnQKKzI1NzM5IDc3NWRhNjE3OGU4NjU1N2YwMWMyN2FkYjYxNjJjMThlNjllZDdkOTkgcmVsZWFzZTIyLW1haW50CisyNTc0MCA0NjY4ZDFjOTI2Y2RmMDQ5Y2Y1OGNmOWE3YWE5M2EyZGEwODM3MDdjIHJlbGVhc2UyMi1tYWludAorMjU3NDEgNTU1MTJmZTFkNmYxNGE0MTcyZTU0ZTc1MTkzNzhlZDk0ZjNhYWM3ZiBsZWdhY3ktdHJ1bmsKKzI1NzQyIGI5MDA0YjgzNjk5NGQ5NDNjOTRjYTBkNGZjMzYzOGNiYTM0NDIzODAgcmVsZWFzZTIyLW1haW50CisyNTc0MyA2OGU3ZThkZmM1ZjUwMmJkNjNlNDcyZjBkNGE4NjQ5YzZiOWUxYTgxIHJlbGVhc2UyMi1tYWludAorMjU3NDQgMTY1ZTIwYWMwYWIxMmE3YzI5NDM5MzU5NDQ1ZDlmZWEwNzA2MjdiMSByZWxlYXNlMjItbWFpbnQKKzI1NzQ1IGQ1ZjYzZTdjYWIzMWJkNGI2NTNlZDYxYmZmMmMxMGZjNzgzMWJjNjIgbGVnYWN5LXRydW5rCisyNTc0NiA0MmU2YzNjZGMwOTU4Mjc2YzYyMjYwMTk4ODA1YjUxNzBhNWVlMzFkIGxlZ2FjeS10cnVuaworMjU3NDcgOGZjOWE1NzZmYmZmYzQxZGE1MTBjMGZjZjIxMTdjM2NkNTdkNDEyMyByZWxlYXNlMjItbWFpbnQKKzI1NzQ4IDA5Mjk4OTRjZGY5NWZjMDU2MWFmMjBiMTkzODdkMDU2OWI4Y2FlYTQgbGVnYWN5LXRydW5rCisyNTc0OSBiNTllOGE4ZGY1N2U4NjdiMmI1NThkOWJjMTMyZTE3NjQxMDk4NGUyIHJlbGVhc2UyMi1tYWludAorMjU3NTAgYzczYzZhNWI2YTgwNDRiZTM3OTVmZTAwNTA0Y2M1NmJhY2U5NzY5YSByZWxlYXNlMjItbWFpbnQKKzI1NzUxIGZkMDUwYWMxZTBjZTViMjhkZjdlYWVkYmEwOWRiZTM5YzA3YTJlNTAgbGVnYWN5LXRydW5rCisyNTc1MiBhZjg4NDFhYzI5ODlkYmFiZTJmZGNjNDY2NDQ4NmVlMDU1MjZlODYwIGxlZ2FjeS10cnVuaworMjU3NTMgMTFmNmY4YzFjZTczNGY5ODU3N2FhZWE5OGE1ZWU1OTFkNmNhODU2MyByZWxlYXNlMjItbWFpbnQKKzI1NzUzIDc2NTQzNGU3YWEwMTljMWJiODJmOTgxM2I4MDI1ODMwODY3Y2JkYzAgcmVsZWFzZTIyLW1haW50CisyNTc1NSBlODhkNWUyNjg3ZWU0NzMwNjZlZmI4MDM2Y2Q3OTM4Yjk0ZDkwZWQwIGxlZ2FjeS10cnVuaworMjU3NTYgYWI2NjE2ZTZjZWJmZDFmYjljNzhlMmM0OWFmMDhhNjA4OTRmY2NiZiBsZWdhY3ktdHJ1bmsKKzI1NzU3IDBjOGEzODVmYzhhMDEzMGExMGMzYzgwZmM4N2M1OWM2ODRmYzIzNzggbGVnYWN5LXRydW5rCisyNTc1OCA2NzA2YjgzZDFiZDE1YzM5YWI5NWRmNDM3OWY0YzM3OWRmYzg1YmJhIGxlZ2FjeS10cnVuaworMjU3NTkgMTMyYTA2NGRhNjU2ZTUyM2U2ZjA1Y2U4NWYxMzI3YzI0ZGI4MDAwZiBsZWdhY3ktdHJ1bmsKKzI1NzYwIDk2M2U4MTRlNjljY2Y1ZmU2MDJjNGJjMGMyNjRhMDU5ZjMxNzQ4YzkgbGVnYWN5LXRydW5rCisyNTc2MSA5ODRlYjk5NWZiOWVkYzNjNWNjMWU4ODIzMGRiMjY3MjFjYzhkZTZkIGxlZ2FjeS10cnVuaworMjU3NjIgNzE4NTdmMTYyMjMxMTU1NjMxYmYxNmIyMTU0OTViNTUzYTgwYjE2MyBsZWdhY3ktdHJ1bmsKKzI1NzYzIDhiZmNmNjgyNzI0ODJiYWI3MzEwNDc0YjIxMzI3OWY1MTk5ZmE4MDEgbGVnYWN5LXRydW5rCisyNTc2NCBhNmJiODAwMjhhY2YyZGNiYjY0MmNlZDc4YmI2MzQxY2JmZjg3ODRkIHJlbGVhc2UyMi1tYWludAorMjU3NjUgMzUxZjliNGQ4MGM1ZDI3MGM1YmQzZWY0YzVhZjkzMTFlNTBhNzRkMCBsZWdhY3ktdHJ1bmsKKzI1NzY2IGNlY2RhNGVjYzA5MGNhNjk4OGRiOGRkNjI3NzJiZTkxODE3YjJmNmQgbGVnYWN5LXRydW5rCisyNTc2NyBlMTUwMTA5ZDJiOWM2MGM5YWQ4MzhlMjc0YjAwNTQ4YzkwNWMwOGJlIHJlbGVhc2UyMi1tYWludAorMjU3NjggMDczZGI2OGEyYzJiYmVmZmExYjdjMTQ2N2ZlOWY4ZTNiMTA5YWFhMCByZWxlYXNlMjItbWFpbnQKKzI1NzY5IDBjOGVkMzg0MWE2NGY4ZjgyNmJmZDU3ODhiYjc5MDMwMTc0YTBjYmIgbGVnYWN5LXRydW5rCisyNTc3MCBhM2VlNzEzMjAzNmFmMDVkMTFlYzYyMmFiMWU2ODhjNmQ2MzE3OGVlIHJlbGVhc2UyMi1tYWludAorMjU3NzEgNGU4MjNiZjI1MTJjZWU4N2Y5NjkxNzYzNGMwOWUyZTZiMGIxZTRkYSByZWxlYXNlMjItbWFpbnQKKzI1NzcyIDQ1N2JmMTg0ZTdiYThiNTc4ZTJhZTRhMGFhNzdmNmVjZTcwZWY5ZTMgcmVsZWFzZTIyLW1haW50CisyNTc3MyA0YTQ1OTdiYzRlYTIyMjc4NDAxNGUwY2M0YTM4YWY2ZWRkMmQ1M2FlIHJlbGVhc2UyMi1tYWludAorMjU3NzQgMzZjNTJjZmJkMGI3NWU2MDU0ZDJlMGZlZTg4Njg1MjY5NDNiN2YyMSBsZWdhY3ktdHJ1bmsKKzI1Nzc1IDkyN2JkNGY2ZTM1YjJlZThlNjI1MmE3MDQ0Y2JhNmRiNDUzZDMwNDkgbGVnYWN5LXRydW5rCisyNTc3NiA1M2ExZjIxYjA0NTE0ODkzYzVkN2RlYzU1MThhOWExMmVhZWJkMzM5IGxlZ2FjeS10cnVuaworMjU3NzcgNzAxMzQwYzg3NzIzMTliYzZlNGU0MDliNDg4YTdmYWZjODdlYmYxMCBsZWdhY3ktdHJ1bmsKKzI1Nzc4IGM3OGZmYmZjMzZkOTM2NjBkZGZhOGM3ZDAxMTNmMDNlYjNiZDRjMTUgbGVnYWN5LXRydW5rCisyNTc3OSBkZjM1NjU2ZTdkOTk3MThmZjdhN2RkZWNmYWRkNTgyZGE0OGNhNjNhIGxlZ2FjeS10cnVuaworMjU3ODAgZTYyMTc0YzdkOGU1MTc2ODZmODg0ZWZkMDBiN2M5YWNjOTIwMDNkNSByZWxlYXNlMjItbWFpbnQKKzI1NzgxIGIxNDhlMThhZTc3YWIwMzkxYjI3MjliM2E4NWNhNGRjODM4MDU3YjEgbGVnYWN5LXRydW5rCisyNTc4MiA3YWZiYmUyODhhZjNkYTZjZDljOGI5ZGZhOWNlMWE2ZmJiNTVjYWFiIGxlZ2FjeS10cnVuaworMjU3ODMgZjY0YTExOTdhNTJhNDc4MTY1YmFhMzk4NTY0ZDc0NDhiY2M3NzllMSBsZWdhY3ktdHJ1bmsKKzI1Nzg0IDk4OTVlMmUzMzZjM2ExMGY2YmRjMWM3NWI4M2MwYWVjNWZlZjBkNzIgbGVnYWN5LXRydW5rCisyNTc4NSBiNTIzYTQ3MGEwY2U5OGJlOTRjYTBhYTY0NGQ0ZjdiNGIzMGE4YTIwIGxlZ2FjeS10cnVuaworMjU3ODYgNWMzYTI1OTIzOGNmZjUzYzQ2NzdiMGNiYTU1N2IxODNiN2I2MDg0OSBsZWdhY3ktdHJ1bmsKKzI1Nzg3IGJlNDkyZGY4M2QwMzAwOGJhNTdjYWUxMjZkYjkxNTQ0Mjk1ZjkyNWMgbGVnYWN5LXRydW5rCisyNTc4OCBmNTJkNmE2NzVmNWY3ODc2MzE0NmM4Y2ExYmM5ODA4NGNhYmVjNWE3IHJlbGVhc2UyMi1tYWludAorMjU3ODkgZWFjNTYwY2MwMzk5ZDdmMzM4YjAzN2FkZmVhYThhYjYwNjhkOGNkZCBsZWdhY3ktdHJ1bmsKKzI1NzkwIGMxMDY4YjA5Mjg3OWZjZTYxYjk2OWJhYTcxMjU5Yzk4NjFmMDRjNGQgbGVnYWN5LXRydW5rCisyNTc5MSBmNGUyNGFiMGQxMjRhZWRiNTg5NDk5NDk1MDNjMTJiNTY1ZWUxMGRmIHJlbGVhc2UyMi1tYWludAorMjU3OTIgNzAwMmYyNGY4MThmYjJjN2UwOWE3YzhmZGJjMDg1ZTFkNmZjOGIwMCBsZWdhY3ktdHJ1bmsKKzI1NzkzIDUwM2I5MmU2NmE4Yzc2NWVlY2Y1OWMwZjBjYWJlYjMzYWEzMzZiMzUgbGVnYWN5LXRydW5rCisyNTc5NCA4MzIwNThmMjFhYTI3NDQ1NWUyM2Y1YTg4ZTNjY2NkODMxOGVmOWNiIGxlZ2FjeS10cnVuaworMjU3OTUgMjM3YWQ0M2Y4OWE4Zjk0NTAyZmRkMDQwM2Y2NDY0M2MwNWYwMjQwMyBsZWdhY3ktdHJ1bmsKKzI1Nzk2IGMwYWU2ZjQ2ZjIzMTU3NDMyMmVjYWIwNmVmMmEwMDA1YWU0Yzk4ODMgbGVnYWN5LXRydW5rCisyNTc5NyBkOGQ5ODFkMGE0N2U1ZjJhOWVkZjU5MjA5OTZlMGRlZDgyMzBjMTljIGxlZ2FjeS10cnVuaworMjU3OTggODg4ZmNkOWI4NThkY2UzMzE3MzgwYzk4YmY3YjM1MjE0YWM1N2QxYiBsZWdhY3ktdHJ1bmsKKzI1Nzk5IGQyZTQ1N2M0NGJmMjc1NzUyOWZiNWFjMWVmMWU3MTY2N2RiMjYyODkgbGVnYWN5LXRydW5rCisyNTgwMCAwOGY3NDJkZjk5MzdhMmNjYjNjOWRjNTcyYzMxODM5MzMyOGM0YzE2IGxlZ2FjeS10cnVuaworMjU4MDEgMjczZWVlMzg3MTJjZmZlYTFiM2E3ZjViMTg0ZDNkNjk2OTVjMWY3MyBsZWdhY3ktdHJ1bmsKKzI1ODAyIDEwODQ2ZjFlMTU5MmY5OWFiYmQwYjcwZjFhZTNkNDk1Mjk5NTY0NDQgbGVnYWN5LXRydW5rCisyNTgwMyBiMTgzNmNjYzk1MWM5N2Y1MDE1YzZmYzUyNDBlNmI5ZWJhOWIzNmZkIHJlbGVhc2UyMi1tYWludAorMjU4MDQgOWFmZWFmOTk3OWEwYTJiYTFmODU3N2JlYjUzNDdhZDlmMTU0ODg1NyBsZWdhY3ktdHJ1bmsKKzI1ODA1IGQxYWVjZjY2MzE2NzkwZTVlODFmODY3YmU1NjBhYzVhOWQwOTgzOGQgbGVnYWN5LXRydW5rCisyNTgwNiA3MmZkODQxNjk4NGI4MDg1MDhkNDZhYmE2ZTIyYmExYWUxODZkYzI2IGxlZ2FjeS10cnVuaworMjU4MDcgZWMxYTVhMDI5Zjc0YzU3ZmUyODI5MzZjNTA3ZjdlYjcxMTJlYjg5NCBsZWdhY3ktdHJ1bmsKKzI1ODA4IGQ1YWFkNmM1ODFjOWFlNDczZTkyYzVkMmM3NDk2MTA5MGMyZDZkM2QgbGVnYWN5LXRydW5rCisyNTgwOSBlZjZlMmZlZjgxZDJhOGI4YmE4ZTEyMDViYjA5YzM1OTdlN2U5NzcxIGxlZ2FjeS10cnVuaworMjU4MTAgOWU4YWEyOTUyM2YwOTc5NzYyYmZkZTBlYjVhNTEzM2ZkOTg2NmM1NCBsZWdhY3ktdHJ1bmsKKzI1ODExIDg4MWI2NDg0ZjBkZmFhNjFiMjdlMzgyN2YwZWYwZjZiZTUxMTgzZjEgbGVnYWN5LXRydW5rCisyNTgxMiA1MjIwOGZlNGFjNDcxMTQ4Y2M3MWY3NDhiNGM1ZDA5YWMzMWIzOGIxIHJlbGVhc2UyMi1tYWludAorMjU4MTMgZDg2NGUyYmQ5MWE2ZTExNDNmZTlkZmI4MWNmZDYyM2ExZWY0Y2UwMiByZWxlYXNlMjItbWFpbnQKKzI1ODE0IDIzOTI1ZGY0ZTM3MTMwNjhmZWQ4OWU1MGI4OGJmNDIyMTNiZjYxYzggcmVsZWFzZTIyLW1haW50CisyNTgxNSA3YjVkNmYxZjFjNmVjNzY1M2IzOTgyMjIxZWVmZjZiOTRkYTAzMmRmIHJlbGVhc2UyMi1tYWludAorMjU4MTYgMmE3ZjcxYTliZDJlMzBjZWFmY2FkZGI1ZTNlNWQ3OGI5NWM4NjdkOCByZWxlYXNlMjItbWFpbnQKKzI1ODE3IDFmZTM4MDIzMzZhMzU2Y2FkZTg3ZWY2MGM2ZjNhYzQ5ZmJkOGNlNzkgbGVnYWN5LXRydW5rCisyNTgxOCBhMzY3YmM2MWQ1YjYwN2U5ZjFlZDliMjgwNzEzMTIwNGM2MDc3MmRjIGxlZ2FjeS10cnVuaworMjU4MTkgZjZlNmZkYjkzNWQyMTQyMTkzNGE1MzRmMDVlOWE3NDNiNjM0MWY0ZCByZWxlYXNlMjItbWFpbnQKKzI1ODIwIDY4ZmUyYjM5MTE1OTQ3MmVhMGY0NjAwMzU1MDU5N2E2MTA2MmJiZDEgbGVnYWN5LXRydW5rCisyNTgyMSBiZWEwMWRjMmYwMGUyYmYzZTJlN2I4NGU1ODk4MTE4Yzc1YTllNGY3IGxlZ2FjeS10cnVuaworMjU4MjIgYzNlMGVhMDk3MzczNjZkYjk5NGMyYzljNjBiNDY4MWU3MmU0NWJkYyBsZWdhY3ktdHJ1bmsKKzI1ODIzIDliYTlkMTIzODgwNGY0NTg3MDhlZjRkZTk1MTM0MDRkNjNkNDA0OGUgbGVnYWN5LXRydW5rCisyNTgyNCA4NWJkNTM0Y2JkMTlmNjkzMzE1ODg0NTgwMjA0ZDNkMzFlZWE2ODg0IGxlZ2FjeS10cnVuaworMjU4MjUgZjU1MWFmOTI2NjBlYjIyZjA2YjU0MWU5NTAxYzc3ZjI4YTQwYzg2OCBsZWdhY3ktdHJ1bmsKKzI1ODI2IGFiOThhMGRlZjlkNzYzMzM3ZjAxYjY2NTU3MmIxYmVmMmZlMGI2YmIgbGVnYWN5LXRydW5rCisyNTgyNyBhYjI0ZWYyYzkzMjM4OWFmZDc1NTczOWU0Yzg3NjYwNjU4NDE0NzNjIGxlZ2FjeS10cnVuaworMjU4MjggMWRiMTUxMGFiZTIxODdiNjU2ZWIyNDdkOWQ5NmM1NDYyYzRkYjRjOCBsZWdhY3ktdHJ1bmsKKzI1ODI5IGFhZjVlZTNiOGY5MzU1NjQ4ZTVmZTY1MTQ3MzcxN2Y0ZjY0ZGM1MjAgbGVnYWN5LXRydW5rCisyNTgzMCBlZWJhZTRmNjBkMDVjYTM0NDI3NzNkNzg0ZDU5YzYzNmEwZGEwNWM0IGxlZ2FjeS10cnVuaworMjU4MzEgOGQwMDYxNDkzYzU3ZDIyN2JlYzljOWI5YmU1NWQ3NTExOWIxYjFjNSBsZWdhY3ktdHJ1bmsKKzI1ODMyIDBlNDc1OGNjZmUyYmU2OTBlYzNmZmM4ZjVjMmNiMTVjMTM0ZTEzYWMgbGVnYWN5LXRydW5rCisyNTgzMyBhY2Y1ZWNkODA2YWZjNzlmYTUxODdmNGU3NWM4OTZiYTQ2N2JmNjIyIGxlZ2FjeS10cnVuaworMjU4MzQgYWQzODI1ZDA0ZGVjZDYyMjY0ODkxZDFiMDNiMmZkNTc4NzUzZmZkYSBsZWdhY3ktdHJ1bmsKKzI1ODM1IGJjODhmMWI0NzY0OGRlNmU2ZTU3YjFmYWFlMzFjYzA1ZmRmYjYzZmMgbGVnYWN5LXRydW5rCisyNTgzNiA3YWRlZDZkMDY5NmUzNDU4NGNiOTllMjhhZGFiMWFkYTNiN2JkY2RhIGxlZ2FjeS10cnVuaworMjU4MzcgZTRkMTBiZDM5NzNmMTY0ODNlMzY2OGM5Y2NiMmQ4NDJhNWFlMGUzMCBsZWdhY3ktdHJ1bmsKKzI1ODM4IGQ3N2U3NDg4NjVmZjliODliYTkzYzhjMzllMmNjODk5ZGJkZjIxNDUgbGVnYWN5LXRydW5rCisyNTgzOSA4MDViZTdjMGUyNmM1MzA5ZjM1ZWM5NjhlZmY3ZWQ5MWExZTUyMGJjIGxlZ2FjeS10cnVuaworMjU4NDAgNjQwODM4NGM4MTM3YjI0OGI1NzE1ODRjMWM0M2U1OWJhODEwN2NkOSBsZWdhY3ktdHJ1bmsKKzI1ODQxIGZiNDU3OTExNTBkMTk3Nzc3Mzk2Yjk5MzU4YWUyMThhM2EyY2NjODUgbGVnYWN5LXRydW5rCisyNTg0MiAxNTcwMmUxYjk2MWViYjZjZmVhYTRhYTY2MDMzODJlZjA3YTdmNjQ2IGxlZ2FjeS10cnVuaworMjU4NDMgN2RlM2M5YjU4ZGI4ZmVmZWY0ODc0NzUzNDg0YThjN2ZhNmFiMDZjNyBsZWdhY3ktdHJ1bmsKKzI1ODQ0IDIzYjlhZTZiM2Y3YWZlYjVhMDRiMzQ2MTE1MTY3NWVlNWY5ZDkxODYgbGVnYWN5LXRydW5rCisyNTg0NSAwZjFhZTM3Y2Q4ZWIwMjdlOTM3NTdhODIwMGRiNjRiOGViNGZlODM5IGxlZ2FjeS10cnVuaworMjU4NDYgZmZjYjJmZDI5NDdlMTI4YTc4MTJhZTY5NjU3MzRmNzYxMDE1N2E4OSBsZWdhY3ktdHJ1bmsKKzI1ODQ3IGIzNjBhNjUwYTBkYmU0OWVkMzE5YjViMzQyZmMzZjc5OTIwZDE4ODUgbGVnYWN5LXRydW5rCisyNTg0OCA4ZWNkMWJhZDI0MDgxYjVjOTUyMTg0MDVhMWVlNzdhY2JlZmQ3OTljIGxlZ2FjeS10cnVuaworMjU4NDkgZjAyY2RiMmJjMTdhNzNmYjlkNDEyOTZmOGZjMmUwYzA0NmQwNzNkNyBsZWdhY3ktdHJ1bmsKKzI1ODUwIDEzNjFmN2JiM2YxOTkzNzE2YmQ0OTAyYTE2MGZhNWE2ZDJiZGY3ZGMgbGVnYWN5LXRydW5rCisyNTg1MSA2MDM5MjU0YWFhZGM0ODcyNzk3OGJlOTQ3N2RhYTQ5MGM2ZjQxOTRkIGxlZ2FjeS10cnVuaworMjU4NTIgZDRmNTQxNDY3YjZkNTJlNTg4ZmYwYzQyMzI2NDU5OWUxYTYxNjgxOCBsZWdhY3ktdHJ1bmsKKzI1ODUzIGZmOWFiN2QzMGJiZmJkMjFiNmI3MTYxZDRkYmMzNTUyZDM3YTU3MGYgbGVnYWN5LXRydW5rCisyNTg1NCA0MjI1MTNmNDIwY2YzOWZjMjcxYjQ1NmFiMTRjYjU3MzYwMDJkMTE0IGxlZ2FjeS10cnVuaworMjU4NTUgNjZhZGI1NTFjZDM4ZjNkMmIwZmE1OGM2MDcxMjc5ZjgxN2FmMjRmMyBsZWdhY3ktdHJ1bmsKKzI1ODU2IDcyMjRhMWRmNDgwOWZiNDcxYWYzNGIyZGQwZjMyYTkzN2M5MmViNWUgbGVnYWN5LXRydW5rCisyNTg1NyA5MWY5YTI0ODg3Y2I1ZTU4MDhlZTA1M2E3YWYwY2JlMzMyMTY5YzdiIGxlZ2FjeS10cnVuaworMjU4NTggZWNkMTgxYjAyYThhOTY2YWUxZDdhYjkxZjEwZmQyMWUxZGJiNzhjNyBsZWdhY3ktdHJ1bmsKKzI1ODU5IDM5M2IwYzNkOTc3MzI0N2E2ZmYzMTNlZDBmOTNjZjhjYzJjN2MzZjUgbGVnYWN5LXRydW5rCisyNTg2MCA1NGJjZTNjYWJjY2Q1N2M3YzM4ZjZlNDMwYTZjYTY5ODg1ODNmZjM5IGxlZ2FjeS10cnVuaworMjU4NjEgM2EzZGU2NTY3ZjFhNWQyMTU5NzJlNjU2YWZiNjk5NTUxMzc3MjQ5NSBsZWdhY3ktdHJ1bmsKKzI1ODYyIDgyYmRiY2EwMmMwNzUxYWNhMzkzN2EzZTllYzM1ZWFlZTU0Zjc1N2MgbGVnYWN5LXRydW5rCisyNTg2MyA5ZTNkNmI1Y2VlMDc2MmQ2NjA1Mzk2MmEwYmVhYzhiOTA3YzgwMWNkIGxlZ2FjeS10cnVuaworMjU4NjQgNWI4YmU4NjExZDhjZDg5MWQxMjJjODk4ZDNhZTVmNWRkMzcwODU0MCBsZWdhY3ktdHJ1bmsKKzI1ODY1IGM4MTY1NzU4YTZkZTdjMmEwNWFjYzk1Nzk1YTZkZWQ1N2UyNzVkM2IgbGVnYWN5LXRydW5rCisyNTg2NiAyNWUyYjU4MGIyY2ZiYmNiMWJhMTU0ODIyZDBlNzY2NzExOTI0MzVkIGxlZ2FjeS10cnVuaworMjU4NjcgYTMyYzdiM2YxZjExMDZjOWM4OGQ4MDJlYzQxYWQxZDBlOWQ1NjE1NiBsZWdhY3ktdHJ1bmsKKzI1ODY4IGU5NGVkZGVjZjMzMGEwNDA0Mjk0OThmYTdmZDkyYThlZDI1NzEwZGYgbGVnYWN5LXRydW5rCisyNTg2OSBlNzc3NDUyNjQ4MzA2ZWU2MjE0YTVjZThhYTM3MDA5MDY0OWQwZDM2IGxlZ2FjeS10cnVuaworMjU4NzAgM2JkMjJiZDE4N2MzMmI1M2MyZmQ2Yjg5YjE2M2I2OGIyNmQ1MTdkNCBsZWdhY3ktdHJ1bmsKKzI1ODcxIDU0YzA1YTk0N2JjYmM1OGQ4OTUwMTcxNDU3YzMzOTI0ZTYzYTg5YWEgbGVnYWN5LXRydW5rCisyNTg3MiAwZWRhM2Y4MmI2ZjNmNDI4MTRmNzk4ZjFhNDhlZjM4YmZlNDMyYWJjIGxlZ2FjeS10cnVuaworMjU4NzMgMjA1YzEwNjMyZjA4N2YzOWUxOGI0MWU1MjBkYzNlNzI3YmNmNTIxYSByZWxlYXNlMjItbWFpbnQKKzI1ODc0IDY1OGVhMDI2NjM0YzRjMjIwMTNkYzgxZGE5NTM4ZDllOTU2MDk4MWQgcmVsZWFzZTIyLW1haW50CisyNTg3NSAwZGQyZjliNTdjZmY1YWM5MThlODc1YjI3ZjY0NjUyYWZhZDE5MmNjIHJlbGVhc2UyMi1tYWludAorMjU4NzYgYTQwNTQzYjNlM2JmMzI2NDNiYjM1ZDljZGQ1MmQ4MGExYmNkZjE4YSByZWxlYXNlMjItbWFpbnQKKzI1ODc3IDgxNDMyOWE2NDI2Y2Q3N2Q5NjA2ZjEzYzhiMDM1ZTJlMWNhMzBjMDYgcmVsZWFzZTIyLW1haW50CisyNTg3OCA0ZWYzNjkzZjFhMjZhYWQ5MDM3ZGVlOTUxM2QyZWYxOTgyM2I5Y2MwIHJlbGVhc2UyMi1tYWludAorMjU4NzkgNjY1NzkxZDUzYzQzNTZhMjI2NjU3Yjk4YzE1NmFmNTJiNTljMTgyNCByZWxlYXNlMjItbWFpbnQKKzI1ODgwIDE2MjQ1YTljYmZhMWRmMzcwZGE3ZjE0MmZiY2ZkOWYyODFlZjA3YTIgcmVsZWFzZTIyLW1haW50CisyNTg4MSA3YzdjOTBmYzcwMDVhN2VmYzc5ZjcwODRhZjMwZWEwN2IzOTMzNGM5IHJlbGVhc2UyMi1tYWludAorMjU4ODIgYzNkZjliN2E2YWNhYjE4OWM0Y2FmNDVkZjMzMjkzMWQ3NzNiZjQyNCByZWxlYXNlMjItbWFpbnQKKzI1ODgzIDc5NWJkZDY5MjE3NjAyNWE0YTkxYWM2Y2VmODUyODEyMDJmMGM0ZGMgbGVnYWN5LXRydW5rCisyNTg4NCA4YmZjOTE4NDkyNDJjMzA4OThkY2FkZDk5ODk0NzQ0NWYyZThjMmFmIHJlbGVhc2UyMi1tYWludAorMjU4ODUgNjRhNjgzNjE4NDhjZDQwMjZmZGZkYTFiNzE0NWVhNjkzYjBkZWMzNiByZWxlYXNlMjItbWFpbnQKKzI1ODg2IDBhYWUwOTk4NmZjOThmNTZkNzljMzJiZTA0MWNhZDFkYWI0MzIzNWUgcmVsZWFzZTIyLW1haW50CisyNTg4NyA0ZmYzN2M1OGFiODkzOTNhZDkyN2EyMTYwMzI4ODkyNTYxZGNlYWQzIHJlbGVhc2UyMi1tYWludAorMjU4ODggMGMxOTEyZjlkMWNlODNkZWZlNDcxZjdkMGY5ZjZiMGU1N2FlZmE1NCByZWxlYXNlMjItbWFpbnQKKzI1ODg5IGEyZmUwZWNkMGNlMmFiZDBjZGE2Njk5ZjVmOGNkMjVmZjJmNjcyNjAgcmVsZWFzZTIyLW1haW50CisyNTg5MCAyZjljNmNiZWFhNjI4ZDVlM2RkYmQ1YzY1NWUwNDViMDIzZmM4MWFkIHJlbGVhc2UyMi1tYWludAorMjU4OTEgZDY2ZTRlN2M5ZTlhNzBjNTYwM2U0NTk4ZmQ5MjEzZTcwMDYyNzkxMiByZWxlYXNlMjItbWFpbnQKKzI1ODkyIDQ1NzIxYzAyMTYwNjY0ZmNiNWRjNTdmNjIyYTBmMDZjMmFkOGVlM2EgcmVsZWFzZTIyLW1haW50CisyNTg5MyBlZjMxNGIzN2UyNjBjZWRiYmM1NzFiNmZjNTIwMzcxODAxNWU5YmI5IHJlbGVhc2UyMi1tYWludAorMjU4OTQgOTE5OGZiMDQzNWZiYWFjZWE5MDcxODg1Y2MxY2RjODU1Y2RkNDAzZCByZWxlYXNlMjItbWFpbnQKKzI1ODk1IDI5MTIwMTVhMWU3Yjc2Yjg1ZTVlM2MyYTc0NmFhNGJhYTkwNmM1YTMgcmVsZWFzZTIyLW1haW50CisyNTg5NiA4MDkwZDBkNjNlZTFhNTkxN2UwZGNiOTVlODgyODk0OGY4ZjYyZjlhIHJlbGVhc2UyMi1tYWludAorMjU4OTcgZjZhN2ZkYmQzMGQ0ZjIxNmY2MWRhNjA2ZTk4ODljZWQ1MWUzZDNkZCByZWxlYXNlMjItbWFpbnQKKzI1ODk4IDIxZTg5NzJkMzdlNDY4MWVjYjRlOTlhNDNkODg3MGYxNDBlN2FmNjMgcmVsZWFzZTIyLW1haW50CisyNTg5OSAxYWZiYzU2MTg4YjAwNzQ4Y2I5YTEwNzc4ZjE0OWIwYTFlMDhjNDhhIHJlbGVhc2UyMi1tYWludAorMjU5MDAgZGE5YWRlYzY2ZTJiMjE5YTE0NzE1OGI4OWQ0OTU2NjIzOGFlNjVjMCByZWxlYXNlMjItbWFpbnQKKzI1OTAxIGUyY2JlOWMzMzQxMWEwYjBiNTc4NGVhNTU4ZjM0MGYwOGQyMWJmZTUgcmVsZWFzZTIyLW1haW50CisyNTkwMiA3NWVmMWYxNjcyNWVmNGVjYWJkY2VkOTYwMmIzMTQ1NDQ4Y2I2ZWZmIHJlbGVhc2UyMi1tYWludAorMjU5MDMgYjcyNmU2YjNhODUyM2NhNDUyMjQyOTc3NWEzMzU3MDM1NDY5MDY0OCByZWxlYXNlMjItbWFpbnQKKzI1OTA0IDE2ZTU0MmFmMmM0NWJjMDc5MDNhYTMwY2JlZDFiYTZjYTU2ODg4NzggcmVsZWFzZTIyLW1haW50CisyNTkwNSBjNWMxMzI2MTY2YjkyMWE0Nzk2NGMwZDk1OTg5ZDgxNjY2ODY2N2U4IHJlbGVhc2UyMi1tYWludAorMjU5MDYgNzU2NjE4N2EyMDFjZjIxNDU5ODZmNzM4OWIyNWFiNTlmNTlhNWRkMCByZWxlYXNlMjItbWFpbnQKKzI1OTA3IDE0MmZkM2UxMDczZDFlMDc1ODQyMDJkZjM4YjYxNjdjZDI1Y2FhODcgbGVnYWN5LXRydW5rCisyNTkwOCA2YjNlOTliMmZmOTFjNDU3MWEwZDZiMjY5YjJjYmQ1MzllMmExZmQ0IHJlbGVhc2UyMi1tYWludAorMjU5MDkgMDkyMmM5MTljZWRiZTM3YzBkNTk3MGYyMzkwMDg0YTU2OTFiOGZlYiBsZWdhY3ktdHJ1bmsKKzI1OTEwIDYzZmJjYTg5OGVhYzI2YWM0NDg0ODVkMzgwY2Y3N2RmNWRmYzQ3MWQgbGVnYWN5LXRydW5rCisyNTkxMSBmYWQwNzFmYjQxNDFmZTYwOWJhNjc2ZmY3NTg1YTQ1YTlmNGU3ZmYzIHJlbGVhc2UyMi1tYWludAorMjU5MTIgYWQxNWIzOWFkOGY3MTI0MDQwMTFhMjkzNTMzMzQ0MGVmOWE5OGJhMiBsZWdhY3ktdHJ1bmsKKzI1OTEzIDhiNjM2ZmNiODYxNWVhMjkyMGVjZGI5NzdmNWQyNjFhNDJhNDgzNzggcmVsZWFzZTIyLW1haW50CisyNTkxNCA5ZWI0ZTYyMzA5YjBlMjMyZTA3Y2VmZDQwN2NmZTczMWFiNmIxYTE4IGxlZ2FjeS10cnVuaworMjU5MTUgMjViNTk5ZjM2MGJjMjFkMTgzNTc0ZmJiOTljM2RhNDRmZWZhZDYwYyBsZWdhY3ktdHJ1bmsKKzI1OTE2IDZkZTFhMTlmNDdhNDI1ZmUxMWYyOTFiYWM2YmE0MjBhMmIyYjRiMGYgcmVsZWFzZTIyLW1haW50CisyNTkxNyBmOWQ5NmRlZGQxZjQ2NmI0N2QxMDQ3YTYzM2FlOTAyMzIyZjI1Y2MxIHJlbGVhc2UyMi1tYWludAorMjU5MTggZjJhM2FmNGZhNGZmZWVmMzRiN2VjNzBlOGExNDY1Yjk1YmVkNTMwMSBsZWdhY3ktdHJ1bmsKKzI1OTE5IGI2OGFmNGE4MDAwYmExMmE2MWFkZmY4Y2Q1NjI5YTI0NDRkZWZkMjUgcmVsZWFzZTIyLW1haW50CisyNTkyMCAzZjQyMTYzNGMzN2NjNmM1ZTJmNTUwMjg1N2I1N2JiODY0YWY3MGYzIHJlbGVhc2UyMi1tYWludAorMjU5MjEgYjU5YWQ0Yjk3YTQyNmUxNGZiNWYwMzQyOWM4ZjhmNWFlOGI5YTBiNSByZWxlYXNlMjItbWFpbnQKKzI1OTIyIDdhNGNiNGU5Nzk3NjZhYTYwZWQ1NzQzNTU2OWU3NzI2ODdhYmNmOWQgbGVnYWN5LXRydW5rCisyNTkyMyAwNDNhZDdhZGM4OTZmNGE0OGZlMzM0NTJjNWVmMDJmOWVjOTJmZWQyIGxlZ2FjeS10cnVuaworMjU5MjQgMzAzYjZhZDEzYTMyZDk5NTExMmM5YTMxM2YwN2RiYzU2N2M3ZDhlYyBsZWdhY3ktdHJ1bmsKKzI1OTI1IDNiZjJiNWFjYTYxZWMxODUwZDUwMjY5ODIyNDI2ZDE4ZTZiYmNmMDggbGVnYWN5LXRydW5rCisyNTkyNiA5YmI0NTAzNjVkZjc4NzFjMGU0OWMzZTI0ODI4Mzg1NzM5NzM2ZjkzIGxlZ2FjeS10cnVuaworMjU5MjcgOTA2YWQzNmNiN2JjY2U3NWQ1Yzg4NTEwOGNkZmFhY2UwMDc1ZjNmMyBsZWdhY3ktdHJ1bmsKKzI1OTI4IDM5ZTQyZDZmNWRhMmQwNzA0YTUyNjJiYjNiOWRmYjBiZmEzYmNlZDQgbGVnYWN5LXRydW5rCisyNTkyOSBhZWRkYTBhYmQzMTNlMDBlYWE0N2NkMjU4N2Q4ZmVhZDVhMzkzMzBlIGxlZ2FjeS10cnVuaworMjU5MzAgNmExYzg3NTJhNjVmYjA3MWZkZDQ1MTJhOTUzZGFlMTYwZmUzYzIwNiBsZWdhY3ktdHJ1bmsKKzI1OTMxIGVlNGI1OWI1ZmViNzJmN2JlYjAyZDI3MDlhNDBiMWQ5OTg1M2E4YTQgbGVnYWN5LXRydW5rCisyNTkzMiA0NzBlOWRhMjFjNGFlNGZmNTFmMzYyNzgyNTA3M2FkZjczMTRlZjBhIHJlbGVhc2UyMi1tYWludAorMjU5MzMgZDE5MGIyZDMwM2MyODFkN2JkMmMxOTZkNDgxNDIwYWJiZTA0YmViNiByZWxlYXNlMjItbWFpbnQKKzI1OTM0IDVhMzBkNGIzZGEzN2ExMGM2MDE0YTc4MTQ2MDJlOTYxZTI0MGQxYzkgcmVsZWFzZTIyLW1haW50CisyNTkzNSAyOTg4MDJhYmQzOGRmZmZhNzliNDcyYzJmNWRkYzMzNzBlYjI0ZmZjIGxlZ2FjeS10cnVuaworMjU5MzYgMDZhODE1NmUzYmNmNzNiZmNiNjQ1N2QwODZiYjI1Y2NkNjIyNGY2YiByZWxlYXNlMjItbWFpbnQKKzI1OTM3IGJjMjBiYWFhZTNlZTExOWUzOWE5ZjJlMmEyZjZhMjQzZDE5ZGIwNDggbGVnYWN5LXRydW5rCisyNTkzOCBkNzFkM2I3MTViMTNlYTI5NGFkODNmNTJmZGZiZjFkYmJiMDMxYTE0IHJlbGVhc2UyMi1tYWludAorMjU5MzkgZTZjNmJhYmNlZWU1MzYwZjNkYjczODRkN2E0OGNhYzFhOTU5ZTI3OCByZWxlYXNlMjItbWFpbnQKKzI1OTQwIDNhMjFkYmUxYjZmZTQ2ODlhOGU4NWQ2MGRjNTFiYzE3NzM0ZGFmMTkgcmVsZWFzZTIyLW1haW50CisyNTk0MSA2NGExMDQ5ZmU1M2I5NjFhNTFiODk5MGQ1NDkwYTliZDE0MDJiN2RjIHJlbGVhc2UyMi1tYWludAorMjU5NDIgZjBlZjhiNDI2ZDhkOWIwN2NhYjNmYWM3YmJhMzRjOWJmMjg4NGQ4NyByZWxlYXNlMjItbWFpbnQKKzI1OTQzIDJkMzNjZmQ2YzE3ZjA3NzliZjdjZDNkNDAyNDFiMDBiODhhNjk1NzAgcmVsZWFzZTIyLW1haW50CisyNTk0NCA5YTE3YjNhM2FmMDk4OWMwZDQxZjRhZDMxNGFlM2RhMWZmNDEzZTE4IHJlbGVhc2UyMi1tYWludAorMjU5NDQgMTFjOTUyYzdkNGJlNjYzODA0MDc2NDkxMGJlODBiZDljM2MxN2RlNiByZWxlYXNlMjItbWFpbnQKKzI1OTQ2IGJjZDFmZGYxM2FjZmUzNjcxYWY2ODY2NDEyMGE0ZmU4OGNmZDRiYzUgbGVnYWN5LXRydW5rCisyNTk0NyA5M2RhYTRmZGUwODdlZGRhYzgzZDUxMjVhMTk5YjRhMTc4OWI2NmFkIGxlZ2FjeS10cnVuaworMjU5NDggM2Q2ODA4NWY0OTVmOWU1OGUzNjUyNDdkZTMyMTQ5Njg2YmIwZTE5NSBsZWdhY3ktdHJ1bmsKKzI1OTQ5IDkxZWFiNzQ1ODEwZjExM2M0MDVmZTZmMjQ3NmE1MjZhZTRkNjE5YzAgbGVnYWN5LXRydW5rCisyNTk1MCBmMWRiZWNiN2U0MTYwZDI3NGUyZmFkNDJiNDRkODBkOTNlMzY3OTNmIGxlZ2FjeS10cnVuaworMjU5NTEgNjZlODVhNzMyZGRkZTE5MjU4NmNhNGEwMmI0MDI5NWY0MWI0YThkYSBsZWdhY3ktdHJ1bmsKKzI1OTUyIGMxOGZlNDg3MjU3MTYwZmQ2ODM3M2IwNDAyYjI3NTk1ZjlhMjFiYzYgbGVnYWN5LXRydW5rCisyNTk1MyA3YmNlNDc1MWJmYjM0MGYyZjE4MjhlZDFmMzc3ZjZjZjIyZTA3ZjU3IGxlZ2FjeS10cnVuaworMjU5NTQgN2QwZjBiYjk0NDhiMDEwMDYyNmQ4MzhhYTcyNzZmMTdjMTdmZDlhNCBsZWdhY3ktdHJ1bmsKKzI1OTU1IGE3NThkNGM0MDFlMDhlYWFkYzgyMDVhY2YzNmM3NzA4MDM2NmM1ODEgbGVnYWN5LXRydW5rCisyNTk1NiA5YjUzMTBjZmEyZTBkZGIxNjBjNzNmN2I3ZGI1YmJhNzY1YWM3Y2ZiIGxlZ2FjeS10cnVuaworMjU5NTcgMjA0ZDQ2ZmM1NGY2OGUwMzM0ZmQ3MTY5MzYwZGQ4MDlhMjkwYzFhNSBsZWdhY3ktdHJ1bmsKKzI1OTU4IDBhM2JmMjJhZWNhNGEyZTRiODVmNGVlNzIxYTE3YmQ1NTQxZTM0YzIgbGVnYWN5LXRydW5rCisyNTk1OSAxYzcyMDdhZDVkYjgxNTc4MjMzOGVkY2U1N2Y1Y2ExNGY5YjI2OGY1IHJlbGVhc2UyMi1tYWludAorMjU5NjAgODA4MjFhNjVmZDQ5ODE4MThkNGU3MjhiOWM4ZTc0MzdhNWZkZmQwMCByZWxlYXNlMjItbWFpbnQKKzI1OTYxIDE5NGVkNWUwZGM4ZmYwZGUxMzBlOWIyNWU2ODkzMjA0MTZiMzZmOGIgbGVnYWN5LXRydW5rCisyNTk2MiAwYzVjNjRiNzVkNWQwYTE4MTJkZTllYjNhMDc1NTUxYjZjNDk3NDA0IGxlZ2FjeS10cnVuaworMjU5NjMgYTMzMWM2MTZiYjBhZDVjYzU0ZWE5Zjc5M2VkZmZkNjY4Y2NjMzRmNiBsZWdhY3ktdHJ1bmsKKzI1OTY0IGYzYTkxM2U2NGViOGVkNGRiOTI2YjEwMDkwYTlkZDFhZTgwMmFjZmUgbGVnYWN5LXRydW5rCisyNTk2NSAyODY4ZTlhOWUyODBiNjhhMzk2NTJlMjY5N2U1MmI3YTU0NDJhNjg0IGxlZ2FjeS10cnVuaworMjU5NjYgM2Y0YjJmOTNlOGI1YjU0MjZlODg4YzQ5YjQ0OWI3YzVmODNkZGE5OSBsZWdhY3ktdHJ1bmsKKzI1OTY3IGRhMTY0NWZkOWMyNDM4YWZlYmU3NGMwOTMyMDdkYjhiZjY1YTk5YzQgbGVnYWN5LXRydW5rCisyNTk2OCAxYzgzOGJlNmQwMDRiYjg4NjA2MmYzZWRjOThhNjA0OGYwOTNlNjAyIHJlbGVhc2UyMi1tYWludAorMjU5NjkgYWMyNGMyYzliY2FmODNkOGNkZjVlY2RmZGFiODAxNjZlNmJmZmE1MyBsZWdhY3ktdHJ1bmsKKzI1OTcwIDgzNzc2YmE1ODBlZjIwYTVjNDM1ZGU0MmI3ZDZjODc1MmNiODg0MDEgbGVnYWN5LXRydW5rCisyNTk3MSA0YzdiYjBiNGQzNTRiZDI0NzYxM2JmZmJhMTNiOTZlNDY2YzBkMzE3IGxlZ2FjeS10cnVuaworMjU5NzIgYzliNzMyNjI4ZTZjNjA2M2YxOGYwYjJkMDVmYzY5NWU0NWRlZjczNyBsZWdhY3ktdHJ1bmsKKzI1OTczIDI2Nzg1ZmU2M2NiYmUyZDRjNjU5MWFkYjg2OThkNjMyNmIzNDc5NmMgbGVnYWN5LXRydW5rCisyNTk3NCBmNjJiZmIwYjA5NDZjZDZjMTM3Mjc1OTM3MWNhMGZhNTE1Nzg3ZWRlIGxlZ2FjeS10cnVuaworMjU5NzUgZGRjOTU0M2M3NmEwMzFjOWNiMmQyMzc4ZDNiMTI1MzI5MjAyMTViOSBsZWdhY3ktdHJ1bmsKKzI1OTc2IGYyOTRmZGQxOGI1YjA4YTRjMDczMWZhOTA1YTRlY2IwNzY3Mjc2MWEgbGVnYWN5LXRydW5rCisyNTk3NyBkNmY1MDY0ZjI2NzM3MTNmYTY1ZTkzZmUxNDg3MmMwZWY0Y2Y5MDZiIGxlZ2FjeS10cnVuaworMjU5NzggMzI5OWI3YWJhOGViZTcwMzI5YzFlYzFjMDRmZWNlYTk0NTkxNGYwZSBsZWdhY3ktdHJ1bmsKKzI1OTc5IDY3OTZkZDMwYTYwMjQ3OTRiZDBhMTBiN2Q0YTY5NmU2MGJhMjliZDYgbGVnYWN5LXRydW5rCisyNTk4MCAxOWQ0ZTgzNmJkMDc1ZWVkZWEyMTE1MjBjMjZhZGIxMDBiZDY5NTNmIGxlZ2FjeS10cnVuaworMjU5ODEgZWM2ZWNiYjM0YjA2YjllMDQ1Yjg4ZTY2MmQ1ZGQ4NzAxYmUyMzFkMyBsZWdhY3ktdHJ1bmsKKzI1OTgyIDZhODUwNDQ4ZmM4ZThlM2FjOWIzNmVhOTcwNzU0OTQzZmYxMTgyNzcgcmVsZWFzZTIyLW1haW50CisyNTk4MyA4MzBjODI5YTdlYjJhZWQ1NTIyYTdhNDc5Nzg5NjlkYTg2ZjRlY2ZmIGxlZ2FjeS10cnVuaworMjU5ODQgYTZiYjNjYzkxOWI5NjU2ZDY3ZTc3ZDg4NTljYzQwYjIyYmM2NGExYyByZWxlYXNlMjItbWFpbnQKKzI1OTg1IGQ5ZjMwMzAzYzg2MGQwMjE4YzFkNTgwNDI2M2YxNDJlMTc4ZDBiNDcgbGVnYWN5LXRydW5rCisyNTk4NiA4ODBkMzEwNjQ5OWJhYjViZWY0Yjk3NmEzN2RkMmJlYWNhMTI1ZTdkIHJlbGVhc2UyMS1tYWludAorMjU5ODcgODk4YzM5MjQ3N2Q5MWQxMjg2NTJjNTc0MTg1MTg0ZTcyNjUyYjk5MCBsZWdhY3ktdHJ1bmsKKzI1OTg4IDA0NDZlZWI3ODdiN2Y5MmRhZDIxYTU2ZGFiZDJhYzczMTRlYmRjNTQgcmVsZWFzZTIyLW1haW50CisyNTk4OSA1MWIxYzVlYTBmYmI0NTYxNzRlNTQwYjg4ZjczYTQ1YTM3YWUwMDEzIHJlbGVhc2UyMS1tYWludAorMjU5OTAgODQ2ODRmYzAyZGEwMDRmNDhjM2VjOTVmMGE1YzU3ODY2ZTE2ZTk3YSBsZWdhY3ktdHJ1bmsKKzI1OTkxIDcyMzBlMDFjM2M0OTRlZDRjMzMyMDU4YTkyNGY4YzA0MjkzODY4MGUgbGVnYWN5LXRydW5rCisyNTk5MiBlNmZjY2RlNjEwODY2ZDFiMmZhMjY3YjRkNzExNTdmMTg1MjUzZDk4IGxlZ2FjeS10cnVuaworMjU5OTMgNzg3MGZhYzA0OWY3MjEzYTc3ODYxZTUwOTc0NDEzMmIxMWU0NzM3MyBsZWdhY3ktdHJ1bmsKKzI1OTk0IDM0OTQwNDQyNmZhYWMzN2UyNDVjNWQ3MmQ1ODkxMmM1ODI0NTFiOWIgbGVnYWN5LXRydW5rCisyNTk5NSBmOGM2NTk4NDhhZDZmNzgyYjc4YjBhZDNhMGJhYTcyOGM2Y2Y0MGY1IGxlZ2FjeS10cnVuaworMjU5OTYgYjljZTk2OTI4MWNiNzM4MjEzNTFmNjllOThjNTY0ZDBkZmMwMGQ1NCBsZWdhY3ktdHJ1bmsKKzI1OTk3IDcyNmM5NjFmM2RiNTFhNzUwZmVlZWMxNWY5OWQ5ZDY2YzZkZTZmYjUgbGVnYWN5LXRydW5rCisyNTk5OCAwZjgwMTYyNmMyZDM3OWM4YzhiNGE0OTIzMDcwNDg4NTBhMWU2ZjcyIGxlZ2FjeS10cnVuaworMjU5OTkgZDc3OGVhOWRlNzgwZmFjMGY4Nzg2MzMxNTQ2MjE5NDZjNzQ1ZjhiOCBsZWdhY3ktdHJ1bmsKKzI2MDAwIGMxNjY2MTA0YjU1NGY5YTZjZWNlM2I0YTFmMzQ2MWQwMTU4MzNiOTcgbGVnYWN5LXRydW5rCisyNjAwMSA5YzJjYTM3YmRlZWM1ODE1NmU0YWEyOGRlZmE1ZjQ0YjIwMWI3YTEzIGxlZ2FjeS10cnVuaworMjYwMDIgZWMxMDQzZjZkMDVlZmNlNzc3OGE2Y2ZiODZlNGIzMjcyODU2YzhlNyBsZWdhY3ktdHJ1bmsKKzI2MDAzIGNlY2YzMWRiOGIwZGI1NzM0MzgwYzI4YWMzNWM2NDZlY2I4MzQwMmEgcmVsZWFzZTIyLW1haW50CisyNjAwNCA5NmIxMzZiNjExNzg0NTQ4ZWJhMDczMjMxOWRlNjFlNTU4MjFkZjU5IGxlZ2FjeS10cnVuaworMjYwMDUgZDI5MTE5ZDI0M2U5ZTM3YTRhNDA1ZGVlMTdmZDUxNWU3YzBlYTJkYyBsZWdhY3ktdHJ1bmsKKzI2MDA2IGIxNzJlZTkzYzEzYzZjOTMyZGRiMGZlNmZiNjlhMDBhOTY1Yjg0NjkgbGVnYWN5LXRydW5rCisyNjAwNyAxNTBmMDM0MDdkMGQyNjk3MjQzZDE2YWEzYmZiZmYyNWRlODRiYzcwIHJlbGVhc2UyMi1tYWludAorMjYwMDggODZhMjdiYTFiZWU3NWYwMjJiZGUyMmRlMTJhMDk2ZDhkOWY2ZWQ1YyByZWxlYXNlMjEtbWFpbnQKKzI2MDA5IDU2NTViZmI2MDdjYTcyMjRhZDk3Y2M5NWJiYzM3MWYzOWZiMWRkMTggbGVnYWN5LXRydW5rCisyNjAxMCA4YTgzNmQwYjU5NzQxNjVmZjBiODQ3ZmMzMWI0YjIxY2IwNTFlNDQyIGxlZ2FjeS10cnVuaworMjYwMTEgMTYxNmJkOGIzMWJjMDQ4MDg3MzU0MDk3OTg2NzRhNWI0MThkMWRkOSBsZWdhY3ktdHJ1bmsKKzI2MDEyIDIyODhjNzI0ZmUyYmFkMDE0MGZhNjk5YzY0YzIwMGQwNGNmZmRhOTUgbGVnYWN5LXRydW5rCisyNjAxMyBmM2E0MTZiMTc4YzQyM2NmMDljNDBmNDFkZWQ5NmYwMTEwY2Q1ZmViIGxlZ2FjeS10cnVuaworMjYwMTQgZTk3MTQ3NWMwNDcxOTMxY2VlYjYzZTdiZWE2Y2QxYmZiZGZmOGYzZSBsZWdhY3ktdHJ1bmsKKzI2MDE1IDJkYTExMzc2MDBhZTdlOWVhYTFkNTM4OTlkYWUyZDBiMDUzOTk5MjEgbGVnYWN5LXRydW5rCisyNjAxNiBhODJjZTE5OGZlNjk4YzJlNTc2ZDQyZTJmOTVmOWI3YTFkYmJhMWIyIGxlZ2FjeS10cnVuaworMjYwMTcgMTA3MDIzYzBjNDU2ZGYzYzJjODMyNDk0NTU5OGZhMDdlZmY2ZGUyNiBsZWdhY3ktdHJ1bmsKKzI2MDE4IDNhYWRlMTUwZTcxNzI0N2IzOWFlZTA0Njg3ZDZkODlmMTMxMGZhYTkgbGVnYWN5LXRydW5rCisyNjAxOSBhZjcxOTE0ZDhiZGYwZGZlNWRiNDdkOTk1ZmQwYTAwYWJiODM3ZGJjIGxlZ2FjeS10cnVuaworMjYwMjAgNDA5MzExYzc4MzgzNjUzZDY4MTA5OTMxNGMwNGQ5OWUxYjc3YWVjYyByZWxlYXNlMjItbWFpbnQKKzI2MDIxIGJjY2Q0NjEzYzQ5NmEzMGJiMWJhZDY0MTljYTc4NDliZjU5ZWY2ZDkgbGVnYWN5LXRydW5rCisyNjAyMiA0NjQwN2QwYTYwMDBmNWVlMjg4YjVhZDk0OGU0MzIwY2NhNmFlNzMxIGxlZ2FjeS10cnVuaworMjYwMjMgYzE2YmVhNzlmNGRiM2I0ZTdjNTFhNTEzM2U3MzM5NzVhZTI0M2NjOCBsZWdhY3ktdHJ1bmsKKzI2MDI0IDFhZWE3YWYwOTI2MGU3ZjIxNGYzZmNlNTRkMjJmMjAxYzJmMWY5MTEgbGVnYWN5LXRydW5rCisyNjAyNSA5ZDJhOGY2YjA2YjZmYjljNDVkNzc2ZGRkZjQxOGI3NzdkZTUyNWQyIGxlZ2FjeS10cnVuaworMjYwMjYgZjYzZjJiYzhiZGJhNmYwZDVkOGU0MmEzZWRlN2I1MDM0YjM1NzI4NyBsZWdhY3ktdHJ1bmsKKzI2MDI3IDQ1ZGJmY2YwZmExOWZiY2I4MDdhNTZiMTllZTcxNTVjYzFjZTA1NWQgbGVnYWN5LXRydW5rCisyNjAyOCA1MzJjMjdhNzM1YjdiOTI1YjY2OGRkOTgxM2FhOWNjOTRlOWYzNDk0IGxlZ2FjeS10cnVuaworMjYwMjkgZDk3MWQxZWI3MmY2ZTI0ZmZhZDliOWE5ZjZhOTAyNGRiZmE3YmUyOSBsZWdhY3ktdHJ1bmsKKzI2MDMwIDNlMGRhODQ5MzlkMGIzMzQwNmJjZWEwODM2MmM2MGRkYTdhMmU0ZjkgbGVnYWN5LXRydW5rCisyNjAzMSBiZjNiMDdjNjJjZjdiZTI0ZTQ2OWUzYzQxOGJhNjU0NzRmNjhiYTYwIGxlZ2FjeS10cnVuaworMjYwMzIgZmMyZTdlMzk3YmM2NmJmOTdhODYwOTAxN2RlYjQzZDNiOTIyMDVjMCByZWxlYXNlMjItbWFpbnQKKzI2MDMyIDQwNDVlNmU5MmZhZmFiYWQ0MmY2Yzk5ODliNjcwNzZmYmFkNDUyY2EgcmVsZWFzZTIyLW1haW50CisyNjAzNCA4NmNlOWVlMTQwNDUwZTE2YTViYWJmZTE0ZDAzYTU3YjU2YzQwMGI2IGxlZ2FjeS10cnVuaworMjYwMzUgYjk2NzQwYzQyZTgwNzBiNzJkNDMxNTY0NTYwODk0NTkxMjgzNjU1ZiBsZWdhY3ktdHJ1bmsKKzI2MDM2IDkxMWZlMDc5MzA1MDQ2ODEzMWFhN2Q5MmM3ZDg2NmFjZDc3OWY3NGQgcmVsZWFzZTIyLW1haW50CisyNjAzNyA1NzgxMWMzNTVmM2FiY2VlNTdiMzMzMDcxOGU2NDJjOWUxMWJmNTIxIGxlZ2FjeS10cnVuaworMjYwMzggMGI1OGVhMDc0OTVjYjA3ZWI4ZmZjZDhmYWU0ZTg3ODJlZTNjNmI4ZiBsZWdhY3ktdHJ1bmsKKzI2MDM5IDg4MWE2YzJkNWRiMmI4Y2Q2ZmFiZThmY2JiYjE5MzU2Yjk3YzlhMGYgbGVnYWN5LXRydW5rCisyNjA0MCAxOGNmZWYwMTFhYmU3ZTY4YWY1ZTBmYmRmY2NjZDhmODFjYzkzNGNjIGxlZ2FjeS10cnVuaworMjYwNDEgNDg4YjliM2Y1OTlhZDQxMGRiMWMxMjY3NTk3Yzg1ZmE5YmU0MGM5MCBsZWdhY3ktdHJ1bmsKKzI2MDQyIDdjMGNjYWM5N2Y4ZWZkN2Q4NTY4MTNjZTRjODU0ZDNlZjMzZjE4NjEgbGVnYWN5LXRydW5rCisyNjA0MyAxMjBlNGJhMDU1MGJkNzA5Nzk3OTI5MWI4OTcxOTVkZDlkZTJmOGQ3IGxlZ2FjeS10cnVuaworMjYwNDQgNDRiZTVlNzRmMTcyN2JlNDU1OTBjZjIyMWRiZWI4OGJmOTRjZGIyOCBsZWdhY3ktdHJ1bmsKKzI2MDQ1IDZmMmYxYjA0ZTgyZTBkYzk2ZDcwNTE4OTc3M2M0ODhiY2MzZDQ4OGYgbGVnYWN5LXRydW5rCisyNjA0NiBmZDFiOGViZTRlYWU0OGI2ZDQ3YTE4ODAzMjUzOWMyMGY2MjBiZWJhIGxlZ2FjeS10cnVuaworMjYwNDcgYjQ1NzYzNjUzOWU4MGQ1MTExMWIwZDhmNTU2NjAyYzk1YjA1ZTdjMiBsZWdhY3ktdHJ1bmsKKzI2MDQ4IGY4YmQ5MzA2NDRhYTM0NGU1OTY5ZWZlYjk0Y2M2MzZjNzMxNDYwZjYgbGVnYWN5LXRydW5rCisyNjA0OSBlZWUzMzcyYzJmOTYyZDQ4NTUyOTJhYTU0ZDQ3MTU4ZmU4MDA1YThkIGxlZ2FjeS10cnVuaworMjYwNTAgYzA1OTZmODRhOGZiMTQ5YjM3ODM3MDlkOTUxNjI4Y2Q2ZWIxNTBiNiBsZWdhY3ktdHJ1bmsKKzI2MDUxIDYxNDE2N2RmMjA5NjBhNjJiY2RjZmNmNjBmYWQ5ZGU5NmYzNDFlNWQgbGVnYWN5LXRydW5rCisyNjA1MiAwMGIyOTcyYWI0YTRiMWExYjNlOThhNjk1ZjJmMDk1NTViZWJiZDljIGxlZ2FjeS10cnVuaworMjYwNTMgNWFlM2MzMTY3M2U0ZGQ2NjIxYTdmZjcwMzhiZGY2ZWFiMWMyOTFjMiBsZWdhY3ktdHJ1bmsKKzI2MDU0IDJjMDJjZjI3OGYwMjgyZjE3ZWM5NTlhZDZkOWZjMTMwNjU0ZGQ3MWYgbGVnYWN5LXRydW5rCisyNjA1NSA1OTYxNjc2NDdiY2Y1N2RhNDYyNTlhZjYzY2IzNTA1NDM5MDU5MGRjIGxlZ2FjeS10cnVuaworMjYwNTYgMTczODcxMjkzMDM0NGFhMjRjNDMxMzljZDI5NTMzYmU1ZjNlMDUxYiBsZWdhY3ktdHJ1bmsKKzI2MDU3IGYwNTgzYjFlOTNhYjBmOGE1MjYzZjRkNjM5YWMyYzQyODY3YWIzN2MgbGVnYWN5LXRydW5rCisyNjA1OCBmYTBmMzVmOTQ0YjU2MzAwZDRhZmE5ODMwZjNiM2FiZDVmMDY3YTAyIGxlZ2FjeS10cnVuaworMjYwNTkgNmJiNDM4NmIxMTExMDMzNDRjZTg4MzNiMzcyMWNmMjczYmJlZGFjMSBsZWdhY3ktdHJ1bmsKKzI2MDYwIGE0YTFlNmY1NTUzMThhZTAyMzYzMzM1Nzg5MjIwNzMxZDBkODVmYmYgbGVnYWN5LXRydW5rCisyNjA2MSAzNWY1OGMyOTc4OTk2NDRjYzM3OTE2YjYxZTY5MzdlNGE5MTM2NWY0IGxlZ2FjeS10cnVuaworMjYwNjIgMGVlY2U3M2MxM2MwOGRlYWQ3NGEwOTVlNGY4MmQxYmUxZmUwY2IyOCBsZWdhY3ktdHJ1bmsKKzI2MDYzIGNmMWEwNWM4NjU5NWMxMGNiMjBhNGZiMTUzMDZjZWE5YWRhNjc1NGYgbGVnYWN5LXRydW5rCisyNjA2NCBmMDdjYTk5NzIzMDQwODkyOWQyNDMxZDU0YzljNjhhYzYyMzM4YWRlIGxlZ2FjeS10cnVuaworMjYwNjUgZTBlZTAwOTQxN2RmMDczZWQxZTQwYzc5ZWMwZWI5Y2QwM2NjZWMzNSBsZWdhY3ktdHJ1bmsKKzI2MDY2IDE4ZGNjZGYyYzQ2ZDgwMjc0ZWJiZGQ5YzNiOWUzNTY1ZTQ1NzFmNjMgbGVnYWN5LXRydW5rCisyNjA2NyA4NzAzZDIwNTIzMzk5ODY2ZjI5MTdjNTdlYzI1MGYyMWRjN2NjY2E2IGxlZ2FjeS10cnVuaworMjYwNjggMTRlYmQ3NjEwOTAyNmNhY2M3ZjNkMzQ3NzJhNTJhOTYwNGQzNzhlMCBsZWdhY3ktdHJ1bmsKKzI2MDY5IGRjMmY3NDVmY2M2N2U4MmM3ZGU0NGNlZGZkNDJmY2Y1Y2FiOTI4NWUgbGVnYWN5LXRydW5rCisyNjA3MCBhZWE2ZGZlYWFhYjg0MTY5MmMwMjg4ZDAwZjVjYjMxM2Q3MzJlNzEwIGxlZ2FjeS10cnVuaworMjYwNzEgM2FhNGJmN2FjMzFlOTg1ZjM1MTNhODY3YTQ3MTcxNTA1OWM1N2ExZiBsZWdhY3ktdHJ1bmsKKzI2MDcyIDhhMjI1YmQ4NzYzYWQwZmQ2MGJkZDM3ODlhZWY5ZWE0ZWQ4YzkxOGQgbGVnYWN5LXRydW5rCisyNjA3MyBjYTQ2NWU0ZDg4YmMxZjcyYmMzNjkzNGVhMzk1Zjk3MzQ1MTE5MWYzIGxlZ2FjeS10cnVuaworMjYwNzQgYjM4M2RmZTM2ZWVlN2RlYTM2ZmIzMmE2MjNlOTViMWE4MGYyMTA0NCBsZWdhY3ktdHJ1bmsKKzI2MDc1IGNjOGI3MzA0MGU4MzdkNmJlZTMwNzExODdlMmU4NmQ2OTU0YTAzMDEgbGVnYWN5LXRydW5rCisyNjA3NiBjZWNhNmNjNDQ0MjA4YzEwOGNkNjk4N2UyODQyODJkNTAxODI2ZWFmIGxlZ2FjeS10cnVuaworMjYwNzcgZTBlZGZlZWE1MTgzYjQ2MzAxNzM3MjY4M2FmOTA4Mjc1M2I2MTc2YiBsZWdhY3ktdHJ1bmsKKzI2MDc4IDIyZmRiNDE2YmEyZjFiNDI5ZmVhNzYyMDNkNmJmYzExMjJiZWM5MTUgbGVnYWN5LXRydW5rCisyNjA3OSAwYmRkNDEzYTM0MTY5YjQ2OTQ5NjFiMDkzOTIyYTYxOThkZjU0MmMzIGxlZ2FjeS10cnVuaworMjYwODAgYzNkNjM3MzA4OTU0YTMxMjNkY2E4N2FmYTM5YTUzMmU3MDk1YWM2ZSBsZWdhY3ktdHJ1bmsKKzI2MDgxIGZhMGFjODQ1OTI5YjIxZTBlY2U2NWEwYTZiNzMzMDlmYjZhOTVlYmYgbGVnYWN5LXRydW5rCisyNjA4MiA2YzRiMTkzMDE2YzY3NWMxYzUwMzBjMzE3Njc5ZGFhOTA0ZDQ4MGFmIGxlZ2FjeS10cnVuaworMjYwODMgMjUzZGU1ODhmMmZiNjVlMmYxNzRjZGRkOTIzYWVmODI1NmI2N2I3OSBsZWdhY3ktdHJ1bmsKKzI2MDg0IGJhNjhkZGExNWRmMDY4N2VjY2ExMjJlNzZiMTAzZGE2YmYwZmUyNDMgbGVnYWN5LXRydW5rCisyNjA4NSAxZTMwNjJlNjlmMmNjMTEwMzU5ZDE1NGU2MmMyZWE3ZDQxNjk0YmM3IGxlZ2FjeS10cnVuaworMjYwODYgOWJhYThjOWExZTg0M2E5ODEzOWJlY2I2OTU5MDg1ZDkzOGJhYzZhYyBsZWdhY3ktdHJ1bmsKKzI2MDg3IGZhOTU1OWM1YjEwMzcxNTMyNjQzNmJhMGY1NDY3NjJkNWNmOWIyZGUgbGVnYWN5LXRydW5rCisyNjA4OCBjODQxMTBmMDVkYzM2YzQ3MTk3NjAxZjY5ZWU2MjNjOWNiNWY1YjNlIGxlZ2FjeS10cnVuaworMjYwODkgMDk3MzY5M2U0YWQyMWQ2ODhiM2E0Nzc3MTliNmFmNTdlNTBlYTExNyBsZWdhY3ktdHJ1bmsKKzI2MDkwIDE0Yjc5ODZhOTJlMTAzOGZhOTAyYzQwNjkxNjNlNzBhZGE2Y2JhMTQgbGVnYWN5LXRydW5rCisyNjA5MSBjZGZmM2M3YzFhNzY0Mzc5MTBmNDE5Y2UwNDM1Y2I5YWYxY2Y3ODJjIGxlZ2FjeS10cnVuaworMjYwOTIgNjkzMWRiZDJlZGI0MjFkYjUyM2UyYjljZTZiMDc5M2RmZDlkYWFiNCByZWxlYXNlMjItbWFpbnQKKzI2MDkzIDBiNjQ1NTBhNzQ2MTE1YzQ3ZWI2ZTgzNDJmZjJjM2FiODg0YjBhNzUgcmVsZWFzZTIxLW1haW50CisyNjA5NCAwMDE1NGEwZmRlNjE3NWE0Yzg1NGRmNmI3NTdiMzQ4MDdjNTY0YzJhIGxlZ2FjeS10cnVuaworMjYwOTUgZDI0NjcwMzg0YzM5Y2QyNjBjNDBlZmZmYmMzNjdjYTMzZWQ1ZDRmMCBsZWdhY3ktdHJ1bmsKKzI2MDk2IDFhZTQyMzI2MmZjOTg2ODE1ZWQ5NjhhYzE5YzY3ODkwNGJkYzY0OGQgbGVnYWN5LXRydW5rCisyNjA5NyBmMDJlYThlODI0YjBjMTM3ODhlMWUxNDNiZDc2MTIyODUzYzNkN2YwIGxlZ2FjeS10cnVuaworMjYwOTggNzNlODI3MjJiMDNjMzkyZjE1NmExYWIwNTk3ZDYzYjU5ZGQ0YjdlOSBsZWdhY3ktdHJ1bmsKKzI2MDk5IDgxMGMxNGYyNDM3MzZkOTIyYjcyMDMzYWQxZDk4ZWIwMGRkMDc0Y2MgcmVsZWFzZTIyLW1haW50CisyNjEwMCA4MjZiYzE1MjJkMjIxMmMzZjRlYjMwMDA3OTFiYTQ2ZDQwZGE3NGIxIGxlZ2FjeS10cnVuaworMjYxMDEgZTQ0OWM4MWMxYzAxZjRlMDJjNTBlOGJjMTU2YzFlMTNlMzljYmJkMCBsZWdhY3ktdHJ1bmsKKzI2MTAyIDI3MWQ2MjFmMGU5ZmRmMjJkYTgzYTgyOGNjMTk1NTFiZGU0ODYwMGEgbGVnYWN5LXRydW5rCisyNjEwMyA3NzFiMmE4ZDQ0NWRjMzIxYWQ1NzNmNzliM2NkOGRiN2QyMmFlZmY5IGxlZ2FjeS10cnVuaworMjYxMDQgZjUxYjc3ODg0MDEyODdlZmUzZWY2ZTY3ZDZjZWM3OTRmNmNkNGVhYyBsZWdhY3ktdHJ1bmsKKzI2MTA1IDczNjFlYzg4MTg4YTkxZTFhMWU4YzRiZDRmZTNkNWRkYmU1NWM5NmYgbGVnYWN5LXRydW5rCisyNjEwNiAyODBlN2EyMGUzMWE1Yzg2ODM0YWJlNGFhOWMyMzA5YjFmOTRjOWQ3IHJlbGVhc2UyMS1tYWludAorMjYxMDcgYzExOGQwOTViZGRlYjVkYjE3MzZjZGFmZmQyMmQ1Yzc4YzNmYzc1YyByZWxlYXNlMjItbWFpbnQKKzI2MTA4IGZlZTJmNjZmM2MxNjVlZjBjMTYxOTE0ZmMyYmFlMzllZjY1MzAyNjkgbGVnYWN5LXRydW5rCisyNjEwOSAxYmRmMjE3YmFkOTMwOWI3NjY5MTZhNDhmYTBlN2RmZmNiYzEwZWNkIGxlZ2FjeS10cnVuaworMjYxMTAgMjIyNGFmYzYzYTViYjk2M2ZmMzUxNDQ0ZGQyNDRkMTAwNjk3YjQ0ZCBsZWdhY3ktdHJ1bmsKKzI2MTExIDUzZWQ5ZGQ2YmNkNWQ0OTA5ZTc5OTQzNjBmMWQ4MTA3YjU0YjM5NjcgbGVnYWN5LXRydW5rCisyNjExMiA1MjI0MDVhYjM1YzFhZDJjNjIyOGMwNTYyNmQ2ZmM4ZmJmYWE4Y2FhIGxlZ2FjeS10cnVuaworMjYxMTMgNGMxMGYxNjkyNTIzMjY0NTc5ZDE2MGJmYjY3ZDQ5ZTQyMzhhNjZmMCBsZWdhY3ktdHJ1bmsKKzI2MTE0IDQwODFlZmY5MzJmZTI4NzkyNmIzY2M5MjEyMjU5NjVkZWMyOTU5ZDggbGVnYWN5LXRydW5rCisyNjExNSAyYWE5NDlkMDJkNDA1MzI4ZDMxMDRjNDI1NzIzODY5OTAxODkxZDYwIGxlZ2FjeS10cnVuaworMjYxMTYgY2I1ZmNhM2NlNzlhOWZhNzhjNmE3MmE3OTA4OGYwN2Q1YTFjZGZkNSBsZWdhY3ktdHJ1bmsKKzI2MTE3IGZkNDQ5OTllN2VhZDQyMTdmZDUxM2Y1MDg1ZGFkZjU5MDYyMTU0ZGYgbGVnYWN5LXRydW5rCisyNjExOCA2ODcxZTY3NDVhYTU0MjEwYTliMTAyY2U4Y2EzYzQ3NTQ4YmUzZjI4IGxlZ2FjeS10cnVuaworMjYxMTkgNmZhNDZjMjE3NjZkOTIzMWRkYWE4ZGM3Y2FhZmRhNzQxYmY2MTQ4OSByZWxlYXNlMjItbWFpbnQKKzI2MTIwIGU3MGM5YjdhYWYzZDY4OTY0ZTFmYzNjOTYyZTI1NDc1NGU1YTRkZjIgcmVsZWFzZTIyLW1haW50CisyNjEyMSA4NzE5ODY2MDE0YWIzNmE5MDlmNzU2MGIyOGU0NjQyYWE2MjEwYzYzIGxlZ2FjeS10cnVuaworMjYxMjIgOTkzMWYxNTRiZTk4OGY1ZDg4ZDRlOWVkMGE4NjVkZTlkNzE3MmE5ZiBsZWdhY3ktdHJ1bmsKKzI2MTIzIDgxN2I0OTRjOWI1ZTQ5N2I0ZmQwMDM3OTcwYWMwYTRlMmEyYWI3YTQgcmVsZWFzZTIxLW1haW50CisyNjEyMyA1YjU0NjQwZTcyYjY2YjhjMDg1Nzk1ZTI4ZWY3NTZkNThiOTU1YzZjIHJlbGVhc2UyMi1tYWludAorMjYxMjQgYTc4ODRkN2QyZDQ4OTAwZjk1ZDJkMGQ0NmFmOTM0ZDQ0OTMxOTEyOCByZWxlYXNlMjItbWFpbnQKKzI2MTI1IDM0MjgyMjlmMTJiYjE5YTI4NjljMzNmYjQyZTA5ZTg1MzQyYzc0NWUgbGVnYWN5LXRydW5rCisyNjEyNiBhZDNjZTczMDE2YmZhYTFiYzZjYzVlNjY3N2M5ZTc2NzM2M2FkMWMwIGxlZ2FjeS10cnVuaworMjYxMjcgZDI2ZDg1NzVhYzYyMWNmMmZjOGVkNmI5ODJlYWIzMjliZTRlOGY4NCBsZWdhY3ktdHJ1bmsKKzI2MTI4IDU0ZWE4YTkzZWNkN2U2MjE5N2IzYjZmMzMyZGVjYWY4ZWMyM2IzNmEgbGVnYWN5LXRydW5rCisyNjEyOSAzYTUwNjUwMDVmY2ZkMTIxMTJhYTJiMzJjZDM2NWE1ODhhNTU5NTE0IGxlZ2FjeS10cnVuaworMjYxMzAgOWY1MDllNDkwZmNjNzljZmZlZGRiMmQ0ZjVmM2Q2MWViNmJmMzA4ZSBsZWdhY3ktdHJ1bmsKKzI2MTMxIDMxNGUxNDE2YWE1ZDVmNWRjY2U2MDFiNGE1NjZlMTlhNjQyYzU4YjkgbGVnYWN5LXRydW5rCisyNjEzMiAyNjBhMTcyMGY2MjljNGZmMzcwMWFiNGE0ZDY2MjM2NmQ2NWFlMTU4IGxlZ2FjeS10cnVuaworMjYxMzMgNTlkMzkxM2EyOWM0NDM5MzIzYzc0MTBhN2JiNjQ4YzllZWMyNGZjOSBsZWdhY3ktdHJ1bmsKKzI2MTM0IGE2ZjhlMTI4NmIxNTU2ZWRlZWJkNTEyM2FlMDRkNjZkNzcyYTNiNjggbGVnYWN5LXRydW5rCisyNjEzNSAwMmZkZGY3YzI1YzJkZTNlMzJiZjA3ODE4MzMyN2IzNTAzYTBmM2I5IGxlZ2FjeS10cnVuaworMjYxMzYgNzRkZTg2NDE4Mjg0MTBlMjU2MmRiNTdmNzI2NDZjZjVkMmIxNmMxOCByZWxlYXNlMjItbWFpbnQKKzI2MTM3IGQ2ZWY5NTdiZjI5MGZjNmU2NWY3MWZkNzIzNDJjNjk0MTYxY2EyZWEgbGVnYWN5LXRydW5rCisyNjEzOCBhNmE4YzY5ZWMwZTdjNThlMTNiOTBjYjViYWVlY2VmYTYzY2M1MzY3IGxlZ2FjeS10cnVuaworMjYxMzkgMzYxODZhZjNjMTI1MTY0YTcwZWExZmFkMmE1N2E5NzI3MGU2YjhjYSByZWxlYXNlMjEtbWFpbnQKKzI2MTQwIDE0OWZiYmIwMzkxNTc1YjVmODg1YjdjOTJlMDcyOWQ5NmFjZWZhODUgcmVsZWFzZTIyLW1haW50CisyNjE0MSA1ZjdkNzBhYjc0ZWVmZmRmY2RkZTcyMWNkYTVmYWViNzE1YzRhZWU4IGxlZ2FjeS10cnVuaworMjYxNDIgZWM2N2ZjZTNmYTNjZWQ0YTNjOGQ4Y2M0OGI5NjU3MGZmMmZjZGZiZiBsZWdhY3ktdHJ1bmsKKzI2MTQzIGQ5OWExZGRmOTUxODA1MTc4ZDhmMTg1YTdmMzI2YTgyYjNmYTFiZTEgbGVnYWN5LXRydW5rCisyNjE0NCAwMWM1YWU2ZmM1YmJiYTNhN2UxYWExNTdjNjZkMWU1NWU5M2YzMGRlIGxlZ2FjeS10cnVuaworMjYxNDUgMGIyYzA4NzU0MmJjYmZmMzcwNDYyMjM0OWFiYjlkOWM1YjViMDZiYyBsZWdhY3ktdHJ1bmsKKzI2MTQ2IGFhOGQ1OTgyM2FkZDFhOGU3ZjdlOGE3ZmU4YzdmNzEwYTk3ZTNjOGIgbGVnYWN5LXRydW5rCisyNjE0NyBhOGM3NWNmNzRkYzE0MTEyYzBlYzgwYzJjMmRiZjY1YWZjNzM5ZGE4IGxlZ2FjeS10cnVuaworMjYxNDggMDI4ZWJjOGZiMzkwOGE4Y2RiN2E5NDBiZTFhMWM0NWM0NDE3Mjg2OCBsZWdhY3ktdHJ1bmsKKzI2MTQ5IDIyMzk2Zjc3YzM1NmFhMzA5ZmI4ZjAyMGE2ODlkODQzOWE0MzNiOTEgbGVnYWN5LXRydW5rCisyNjE1MCA5N2EzNDY0M2U1NDRhOTcwNWRkZGQ0ODc4MWQ4MjE4MzIxMDUxMTJmIGxlZ2FjeS10cnVuaworMjYxNTEgMDY2NjhkOGQ5MzQzZjQ2NGQ5MTA4ZDNkMmNhYmFlNGY1OGIzOWI2NSByZWxlYXNlMjItbWFpbnQKKzI2MTUyIDlhY2FiNzZiMDAxNzhkNjQ4N2Q2NGNiMDBkMmVhODUwMDNhM2EzNGEgbGVnYWN5LXRydW5rCisyNjE1MyAxOTIyOTE1Y2I3M2Q3YThhY2NjNTFmZjk1ZDU0ODgwODE5ZWY2ZjYyIHJlbGVhc2UyMi1tYWludAorMjYxNTQgM2M4NzgxNDkyZDFmZGI4YmEzOTUwZTJlOTRhNGY3NWVlYjJlNGE3YiByZWxlYXNlMjEtbWFpbnQKKzI2MTU1IGY2NjNmZmJlOWU1YzQwZDRhMmFjNTllOGE4OGQ1ZjA4ZWE5MmI4YWQgbGVnYWN5LXRydW5rCisyNjE1NiA0ZWQwNmY4YWFkZDM3ODYzMjg4ZTM2ZGFhNmVlMzE2ZTRiZTliYWYyIGxlZ2FjeS10cnVuaworMjYxNTcgYWM1ZTFkOTAyOWI3OTQ1MjZjN2QzMjA4MmM3ZTMwODBkOWFlOGUxMSBsZWdhY3ktdHJ1bmsKKzI2MTU4IDY5M2UwMDE2NDA4MWFlZGNjYzhjZjQ3NTAyZjg4NDhlOGNiNmYxNTUgcmVsZWFzZTIyLW1haW50CisyNjE1OSAwZWI4M2FhY2UwNzE2NjdkYTk1YTgzMmZkZWFhYTg2ZjM2YWYzOGVjIGxlZ2FjeS10cnVuaworMjYxNjAgNThiMmY0NjI2YjY0ZDc4YTFmMTg0NTg3NjI0NzFmODQ1NWRkMTg5YSBsZWdhY3ktdHJ1bmsKKzI2MTYxIDIxMDA4ODdiNDdjYmI5YmUyY2ZlYzFmM2M4YjZhY2RkZjgxZjA4NWYgbGVnYWN5LXRydW5rCisyNjE2MiBmMDI3NzE0NmFhMTZkYjY0OWY3ZDNmOWE3MmY5YjVhYTQ0ODg1ZjkzIGxlZ2FjeS10cnVuaworMjYxNjMgMTdhMTc1MWFkMWQ5MDIxZmVhODRhMTk2MDVjMzg5OWI3ZGZkZjc3ZCByZWxlYXNlMjEtbWFpbnQKKzI2MTY0IDIxZjM1MzEyNDE0NWM0M2EzOTIxYzgyMjVlOWU1NTczMDVjZjlhZmYgbGVnYWN5LXRydW5rCisyNjE2NSA3NzM0M2FhMDNlMmYzNjNjN2I0MTA0MTYxMGY3OGM4MzM0Y2I2MWY1IGxlZ2FjeS10cnVuaworMjYxNjYgZjFhZjhhZDExMDAwYTA4OWJlMGY5ZmRiNWJhMzcyYzE5ODJjMTdhMyBsZWdhY3ktdHJ1bmsKKzI2MTY3IGM4MTVlMDAzZGJjZDhiZDVjMGNlNDU4NDQxMTRmNjE3ZjY1NmJlNGMgbGVnYWN5LXRydW5rCisyNjE2OCA4ODJlYTVjYzc2ODdhYmJlOGY0YzcwYzAyNGQ4OGE4ZTNhZDQzMjk3IHJlbGVhc2UyMi1tYWludAorMjYxNjkgMzMzN2M0MWMxMzJiMTE0YTk0YzUyYjUwYzE4NGZkOWYyYzgwMjQyYSByZWxlYXNlMjEtbWFpbnQKKzI2MTcwIDJiNzAyNWEyMzJlMWY3ZjQ5NGNjOTliMzNjZmI1ODkzMmE2ZDNlMjQgcmVsZWFzZTIxLW1haW50CisyNjE3MSBhM2JmMmM5N2U4MDhlNDE2NDhkNjRiMWE1ZmE2OTNmMTFiODhmNzEzIHJlbGVhc2UyMi1tYWludAorMjYxNzIgZGQ4OTg4Y2E0YjE0NjZkMzY3YTE4ZmNjMGZlYTg2MDU2MTQ1MDZkYSBsZWdhY3ktdHJ1bmsKKzI2MTczIDEyYjAwM2JlNWQ5NmM1Mzg5NzcwNDdhMzJmNmU1YTFmYWU3YzJjZDEgbGVnYWN5LXRydW5rCisyNjE3NCA1MzNjZDUxOTc1NzVkYTc3YzA3ZjExYTY2YTVkMzYyM2IwNTlmZTcwIHJlbGVhc2UyMi1tYWludAorMjYxNzUgNDNlZTczN2ExYjdmMTBhYWEwYTliZDU5MjI4ZjM3YjY4OWRmM2NkNyByZWxlYXNlMjEtbWFpbnQKKzI2MTc2IDM1MTU3NjcxMjNkOGM4Y2U1MzhmYTJlMzUxZjZkODZlZmFhMTdiMzAgcmVsZWFzZTIyLW1haW50CisyNjE3NyAzNWI3OTg0Mzg1MjdlYjYyZmQ3NjJiNmI0NWY1Yjk4NjA3YTRhZGZiIGxlZ2FjeS10cnVuaworMjYxNzggNmFmZmZmZjFmZmYxZWVhNTdmZWQwMzIyNmE0NTk1MTQ2ZTBmYTc4NSByZWxlYXNlMjItbWFpbnQKKzI2MTc5IDQzY2VlMTgxODI0MjBhMWNjNjg1M2M2MDMyOWI5NTQ0ZjU0ZmU2MDggcmVsZWFzZTIxLW1haW50CisyNjE4MCBjMWFlYzYzMjRhZDU0ZTBhOGU1MjYyZmUzY2UzYjFhNmEyNzQ4NjFhIGxlZ2FjeS10cnVuaworMjYxODEgMGFjZjY4MjBkOWUzNTEwMzM1NzNiNjQ4OGVhNzZlNjNhM2UwNzMyMCBsZWdhY3ktdHJ1bmsKKzI2MTgyIDQyY2M4N2M0MDEwMzZiMWYzMDY3Yjk1ZjU1OGZiYWFkYWE1Y2NmOWEgbGVnYWN5LXRydW5rCisyNjE4MyBjNTZlYWFkM2EwYjM5ZjJhZTBmNTM4MjY1MDQyZTYyYmJlNWY0MTNhIGxlZ2FjeS10cnVuaworMjYxODQgZjg5ZjIwMTA4N2VhNjc1YTUxMWI4OWIyYWIyNmM3NzVmYWZiMmMyMiBsZWdhY3ktdHJ1bmsKKzI2MTg1IGY2OGRkZjdmMjFmODRhNWI1ZTBlMjQyZWQ3M2E3NDc1YzhmMDgxNjIgbGVnYWN5LXRydW5rCisyNjE4NiA4YmE0OTllY2M2YzkxMjRjNjA0M2FlYjZmZTMyNTM5NDJkOTlhYjE4IGxlZ2FjeS10cnVuaworMjYxODcgMjk1NTFmNzQ3YzBlZDlkNDY3MThkODQ0YjhlY2M5YWFhYzk2Zjc2OSByZWxlYXNlMjItbWFpbnQKKzI2MTg4IDNiNmY0OGI1NDY2NmVjZmExMjFlYTE2OTY2YTRiNzM0MGY3MzJkOTMgbGVnYWN5LXRydW5rCisyNjE4OSBhYWY1NzJlMzM0YzNjOGJhMzk0OWRhYTEzNmFjYjNiNGZiZjIzNWM2IHJlbGVhc2UyMi1tYWludAorMjYxOTAgZDNjZjM4M2RmMDk2YzJjOGNlNjU0NWMwODQzNzIzMGUzNTczMzlmZiByZWxlYXNlMjItbWFpbnQKKzI2MTkxIGE5ZGQ1ZTZkNjgwNTYzZTA3ODYzZDc0ZjdkNThjMjgwMzExNzVmMDMgbGVnYWN5LXRydW5rCisyNjE5MiAzYWY4YWIxYjA1ZmM3ZjEyOTAyMzY2ZjEzYjdlYTU4NjE3YTczYmM1IGxlZ2FjeS10cnVuaworMjYxOTMgNWVkYTdkYjAwN2Q2ZDc4ZTY4MTE5MTZlMzA1YzgzNmMwNTVjNGFlMSBsZWdhY3ktdHJ1bmsKKzI2MTk0IGM4NjVjZjhiZWU0MGQ2OTUxYjAzMjFkMjYwY2YxMzI4N2QzM2ZkZDAgbGVnYWN5LXRydW5rCisyNjE5NSAwOTA4NzI5ZTk0ZTBmMTVmMWQ2ZDg3MDAxNTk3OGU2OWYzOWFiNmZmIGxlZ2FjeS10cnVuaworMjYxOTYgNzNkMTQ1YmZkOGU0NWUwYjBjYzE4OTk2ZjRmNDFmODhmNWJkYTJmNCBsZWdhY3ktdHJ1bmsKKzI2MTk3IGYxZjU3YmYwOTA5MmViZTZjMjY5OTMzYzg3NTk1MGUxODc5MzI5YjEgbGVnYWN5LXRydW5rCisyNjE5OCBlZjJmYmNlNzE3MzY5ZGZjZTA4MDc1MGNlZTIzZjRlODg4MWI2N2YyIGxlZ2FjeS10cnVuaworMjYxOTkgZDc1MzEzMDc0MzU1NTFhMGRiNWY1ODcyMGE3MGI0OWYwMWRhYWEwYSBsZWdhY3ktdHJ1bmsKKzI2MjAwIDJlZGRjZTQ0YjNiZWRiYzcxMjA1MTI4NWJmZGNlOTg4NTk1YzM5ZDMgbGVnYWN5LXRydW5rCisyNjIwMSAxODY5NmZjMzUwNjJmNjJhYTQwYzEzODQ5MDQxZGRjMDcyNDVmMTA5IGxlZ2FjeS10cnVuaworMjYyMDIgMzllYTA5ZmY1NzM0ZWNjZGYxYzYyNzJlNWYxNTJiM2ZkZGFjOGZmYiByZWxlYXNlMjItbWFpbnQKKzI2MjAzIDA3OWFiZTA1ZThiYzgxYzNkOGI5MjZlYTViYWVjMTE5MDc3ZDMxZmMgcmVsZWFzZTIyLW1haW50CisyNjIwNCAzODI3OTFkZGNlMWMxODMyZjA1MGY1ZTZkYmNmZjkwNmJlMTc2NmEyIHJlbGVhc2UyMi1tYWludAorMjYyMDUgMjE2ZGFkNzIwOWJjNzAxMzJjYTIyOWI5MjBkOTRhYjI0NDhlYjcyMCByZWxlYXNlMjItbWFpbnQKKzI2MjA2IGQ3MDI5Njc5NDM1ZjdlYzI5MDYwY2UxODA1N2UxNDNlOTQ1NWJkZTAgcmVsZWFzZTIyLW1haW50CisyNjIwNyA2ODA3MWE3MjY5NzA2YjgxYmE1Nzk1MTY2NDRjMDMxYWRiNGFjZWQyIHJlbGVhc2UyMi1tYWludAorMjYyMDggZjYwOTNiYWM5ZmI2NGZlMzRmMjViNjg0Zjc1ZTY0YWY3NzY0ZTg3NSBsZWdhY3ktdHJ1bmsKKzI2MjA5IGU1ODllNDczZjIzMmZiZjc3Zjg5ZTg0MTk3ODAxZGQ3OTk1ZDQwYmMgbGVnYWN5LXRydW5rCisyNjIxMCBkNmQ2NDIzOWFhMDUxNThhMmY3ODM2MmI2YzhiNjI2ODMwZDE2OThiIGxlZ2FjeS10cnVuaworMjYyMTEgZjY2MDBiMGRiNjg4YTc3NjgwYzAwMWZmMGY3ZTUwZjc0Nzc0OGNjOCBsZWdhY3ktdHJ1bmsKKzI2MjEyIGVkMDM4MDZkODhjZGM5NzI5ZWYwMDViOTBkNGNhMWYyODBiNjM0ZTYgbGVnYWN5LXRydW5rCisyNjIxMyA2ZTljMGQ5YmRkN2ZkNGE2MjQxNzg3ZjQ0Y2VmZTRhN2ZlNWMyYTFjIGxlZ2FjeS10cnVuaworMjYyMTQgMTg4YjBmYTI4MDA3ZTg2YTk4ZTUxMzVjMWYwMjViYjQ0OTI2MzI2ZSBsZWdhY3ktdHJ1bmsKKzI2MjE1IDMyZWVjNmQ3OWM5M2YyYWI1MTI2MjgxNTBkNDM2ZWI4OWZkYmIzMjcgbGVnYWN5LXRydW5rCisyNjIxNiA0MTZkYjhkOTYyMTZiOTExZWM4YTk1NTRmNzVlYzMzYWE0MjVhYzMxIHJlbGVhc2UyMi1tYWludAorMjYyMTcgMjczZjUxZjUyMDAwMTkxNzg0NmQ0NWQyZWM4MmYxYmUxMDUwYTMzZCByZWxlYXNlMjItbWFpbnQKKzI2MjE4IGUyNGI4ZDBiNjQ3MDRiMTBjZTNiMTUwNDA4YjIxNGUzZGRiZjcxNzcgbGVnYWN5LXRydW5rCisyNjIxOSAyMmY3ZWY3YmE3MmJhNDVjZTU2OTE1OWRlZjc3ZDNkNDU2MTgyZjY4IGxlZ2FjeS10cnVuaworMjYyMjAgYmJmMDVhZjNjMTkxMzhkMzU3MTcyNTI5NGNmNmQyM2RhNWRhNjc0NCBsZWdhY3ktdHJ1bmsKKzI2MjIxIDA0MzY3Y2ZmODY4OTVmNmNjYjU4MGY3MmUyMDFjYTk3MWI5MDk4NWYgbGVnYWN5LXRydW5rCisyNjIyMiBhNjUyN2QxZWU0NzQyOGFiNjIyNTY5ZjE3N2FiZWQyNTg2ZWQ0OTcxIGxlZ2FjeS10cnVuaworMjYyMjMgZjkyMzZjYWQ2OWU2MjgwZmE4NzcyNGI3YzRjZmY0NDY1ODU4ODRmNCBsZWdhY3ktdHJ1bmsKKzI2MjI0IDZmOGE1YWQzOWU2ZmU3MmUxZjBlMTA4NWQwYzJlNWE3ZDQxNTg0YzcgbGVnYWN5LXRydW5rCisyNjIyNSA2ODA0ZTQ4YTAwMzNiNDY2NDViODc4Y2QxYTQ5MWVjNjYxNzQ1ZjA0IGxlZ2FjeS10cnVuaworMjYyMjYgNzAxNDkyMTgyMGE1MWNkMWFlZWFkM2QxZGE0MzgyNDVhZDIzOGY1MSBsZWdhY3ktdHJ1bmsKKzI2MjI3IGE1NjFmZjFiNGZmYTFmYmE5NzllMzMxMmQxN2NkN2Q1OWFiZGJhNWUgbGVnYWN5LXRydW5rCisyNjIyOCBlMmYyMTg3YzNkMmMxY2E3OThlYWY5NjhhYjk1MTM2MjUyNTA0ZGQ5IGxlZ2FjeS10cnVuaworMjYyMjkgMDBlNjQwZTY4MGJkMjk4ZGM3NzA5N2M4ZWU3ZDc3NDEwYzkwMzY1NiBsZWdhY3ktdHJ1bmsKKzI2MjMwIGIxZmE5MGY4YjZjMjEyMDNkMGJmMDM2ZGI2MmE3NGYwZWU5OWNmNjIgcmVsZWFzZTIyLW1haW50CisyNjIzMSBjOTE2MjZkMWY0MTFmMGNiZmEyNzRhZmExNWIwYzFjNzQ1ZDMwMzcwIHJlbGVhc2UyMi1tYWludAorMjYyMzIgMjUyNDM4YmIwNWQ5N2E4NGFkMWQ4ODFjYTUyYmJhZDY4NTY5ZGYxMCBsZWdhY3ktdHJ1bmsKKzI2MjMzIGQ0NjJjNzkwY2M1YmQ3Njk3ODdmOWI4MWI3NDNjYjMzZTdiYjc3ZjMgcmVsZWFzZTIyLW1haW50CisyNjIzNCA4ZDMzN2IzYjY1NWEzYWE2MTc4YTI2NWI5MWVhY2Q5NDhhNzZlOTBkIGxlZ2FjeS10cnVuaworMjYyMzUgYzNlOWEwNTJlMjY4YTAwNzBkYTdiMmE2MjliN2NhOWQ1NzdlMTQxMSByZWxlYXNlMjItbWFpbnQKKzI2MjM2IGUzZGU5ZDE5ZmFhYWZjNmNmOGExODQ2MjE2NjJlYzZkZmMyMjA0YzYgcmVsZWFzZTIxLW1haW50CisyNjIzNyAxYTNiMDg2NjNlYmUwMWU3YmY3OWExNjYwNWMyNzJhNGIxOTQ4YWIxIHJlbGVhc2UyMS1tYWludAorMjYyMzggYTQxYTFlMDA1MWM1ZDZlMjAyZGYyOWQ5NTRhZTkxZDcxZDRmMDI5ZCByZWxlYXNlMjEtbWFpbnQKKzI2MjM5IDNhNjcxOGI5YjY1YTgzOGIyODc2ZDY5ZDExMTFmZDliNjgzZmZhYWIgbGVnYWN5LXRydW5rCisyNjI0MCBlMTQyM2VjOWU2ZWMzNjJkMDk2N2E3NTQ0NzdjNGI3ZWJiNjFkOWZjIHJlbGVhc2UyMi1tYWludAorMjYyNDEgMzg5ZDQyOWFkYTcyYzZkNDdlMjNmZjM3MzJhZjliZjYyMWE2NjdhOCByZWxlYXNlMjEtbWFpbnQKKzI2MjQyIDc5Mjg3NTFiZmRlZTUxODdhYjM5YjZiODhhNGJiMzg1MGEyMDliODMgcmVsZWFzZTIxLW1haW50CisyNjI0MyA1YmUwNjc3ZDgxMGQwMjZhNzk1NTZkMWFkMzk3ODJkNzY5NmZkOGIyIHJlbGVhc2UyMS1tYWludAorMjYyNDQgZDhiYzY4Y2IxN2UwMzcwMTI4YjlkZTRmMzUwZjQxNGEyMDIwMDgwOSBsZWdhY3ktdHJ1bmsKKzI2MjQ1IDVkMzgzMDA2ZDM2YjlkMzY0YTUyNDJjMDY5NDJlMjY0OWY1MmUzZDkgcmVsZWFzZTIyLW1haW50CisyNjI0NiAyODllYTFkNWM1YWNjY2RjMTlkZmE2ZTc3Njc3NjI0YWE4YTYwYmE0IGxlZ2FjeS10cnVuaworMjYyNDcgYzBkZDhiYmRkZTYwNDA4MzQ3OTVkNjVhMmVhNmE0MDNhMjkxNjk2YyByZWxlYXNlMjItbWFpbnQKKzI2MjQ4IGY5NzQ3M2IzNDBhNTgwM2NiMGRjY2Y3NjRlNDM1MDc0MmViY2Q3YzIgcmVsZWFzZTIxLW1haW50CisyNjI0OSAyYjNhNmE4NDRiZmZkYmI5ZThkZTg1M2ZlZTUzNTg2NDY0OTExMTg0IGxlZ2FjeS10cnVuaworMjYyNTAgMTcwZmI1Yjk0NzNmOGEzNDI0ZDJhNjBiZDY3MjQ0MzE3MWMwMGNmNiByZWxlYXNlMjEtbWFpbnQKKzI2MjUxIGFmNzJkMmNmMmM1NWViODg0OTAwNmQwZTAwMDY1YTgxMGFjNTFkMDggcmVsZWFzZTIxLW1haW50CisyNjI1MiBiODFkMGU4OTA0MTJjYzFhZjJjNDUyMDJhMjg5MTNmODQzNzFhZDBiIHJlbGVhc2UyMS1tYWludAorMjYyNTMgMzNiMmE4OWJmNGE2YTViMjY3YjVkMTgzZTI1ODUzNjU3MDg2ZmRhMyByZWxlYXNlMjEtbWFpbnQKKzI2MjU0IDFhMzc1NjYxY2M5NzMyOTUwMTA0ZDIwNWU0Yzc4ODFiYTBjNGY3OTcgcmVsZWFzZTIxLW1haW50CisyNjI1NSA1NzBhNzgwMjc5ZDFhNDYxYmU2NDJlM2I3NGExMWNiYTE4ZjllZTlhIHJlbGVhc2UyMS1tYWludAorMjYyNTYgYjVhYWRlOTdkNzIzZmE4YTYzZTdiMTliYjE2MzBkYzYxZmUyYzcwZiByZWxlYXNlMjEtbWFpbnQKKzI2MjU3IDdkNDBiNjkxZGJhNzYzN2NjYmY3N2ExMjkzZGQyMzhlMzcyZTliYTQgbGVnYWN5LXRydW5rCisyNjI1OCA4YmFjYTRlY2U2NDU1MzUyNzA3YWI2ZmFmMTExM2QwYWQ1MjY5ZDBhIHJlbGVhc2UyMS1tYWludAorMjYyNTkgZWE0MzUyM2I1YmU3NjI3ZjRiYTYyMmI3OGE5ODc4YWVmMzVjYzJkOCByZWxlYXNlMjEtbWFpbnQKKzI2MjYwIGMwZDdiNTc4OGNiZTYzYmFhYzAyNDQ5NTIxMDczOWQwNjc3ZDg5NzQgbGVnYWN5LXRydW5rCisyNjI2MSA4OTEzZGZhMTEwMjdlZGFhN2FhMTE1Y2NlYjcwMTZjZWE5YmU5ZjEzIGxlZ2FjeS10cnVuaworMjYyNjIgMTFjZmU4MzgzY2Y4ODc1MWZhZDNkNzllMWU2YjJiZDMxMjJkMDA2NiByZWxlYXNlMjItbWFpbnQKKzI2MjYzIGZiZGQ0MGI5MmI4NzBiN2ZmN2JkNGVkZDYyMzZiMDY3YjhiNGFkYTkgcmVsZWFzZTIyLW1haW50CisyNjI2NCA3ZTg0ZGE5Yzk4ZWJhNmI4MDgxZmMzYzNjYzFhNjdlYjIzYWVlNTdjIGxlZ2FjeS10cnVuaworMjYyNjUgOWQyNmQ1NjhkYmIzMDc2M2M1ZWUyYWIzMDRiM2EyY2FhYWQ5MWIxZCByZWxlYXNlMjEtbWFpbnQKKzI2MjY2IGI2MDg0NDViMjVmMDI5YjJkYWRjODVmZjBhZjMxY2ViNzIzZjNjYTAgcmVsZWFzZTIxLW1haW50CisyNjI2NyBhYzk5YmVkMjRiN2QxMDZjYTUxYjYwNDRjNTBkN2NhMTY5NTg2MGZkIHJlbGVhc2UyMS1tYWludAorMjYyNjcgN2QxNTA0YzgwZmEwNzJiNGJhODZlZGRhMTNhMTNiMGEwNWFlOGVhYiByZWxlYXNlMjEtbWFpbnQKKzI2MjY5IDVhYjNlOGYxNGQ0NjYzOWQ2YzQwYzljYjYyZDBkN2NmOGI4NzY4NzMgcmVsZWFzZTIyLW1haW50CisyNjI2OSAzOTQ3OTAzMTZhYTM4MGQyMmU0ZDY3MGJjNjlhNjM5ZTcyNWYwMzAwIHJlbGVhc2UyMi1tYWludAorMjYyNzEgOTkwMDFmZDk1ZTQ4ZGI4MTVhOGZkMDFiM2RkMDE3NzllMWVlNzhlNSBsZWdhY3ktdHJ1bmsKKzI2MjcyIDA3NzNkMjMyMjRkMmFhNmI1NTA1MWNmZDA3NjlhZWYzYWM2ZmRmN2YgbGVnYWN5LXRydW5rCisyNjI3MyBjMjZhZjFhYmMyYzYyMTMwMTJhZDU5MGY5NDFkOWE4OWVhZGZhMTkwIGxlZ2FjeS10cnVuaworMjYyNzQgMTIxMzNjOGI4M2NmNWY0ZWUzMjRjZTc0M2I0MGJmZGFiNDk1ZWNlZSByZWxlYXNlMjItbWFpbnQKKzI2Mjc1IDcyODFhMDZlM2I1N2YzYmViYzU3NTIxNDFlYjAzYWNmNWJiNjUyZmEgcmVsZWFzZTIyLW1haW50CisyNjI3NiBmZWI2ZDFiY2RkMWQ2MmUxODlkZTIzMDVkYzU4ZTJjYjU3NzNjMTBhIGxlZ2FjeS10cnVuaworMjYyNzcgOTA4MWM5MmEwY2M4NWU0NGZjNjdlYzNmY2E3MzQ0OWJmZmU4NzgxZCByZWxlYXNlMjItbWFpbnQKKzI2Mjc4IDhhMDJjMzNlZDJjMThiYjM4NDBiMDliMWUwZjVlNDdmYzY1YjAxZTAgbGVnYWN5LXRydW5rCisyNjI3OSAxNWMxOGJjOWQ3MTU2NWZlNzg3OTQ4ZmRlNmEwMWYwZWEzMDY5Y2FlIGxlZ2FjeS10cnVuaworMjYyODAgNTQyMjljMzUxMzJlNzc1MWYxYmQwNjc0MGEyZjk0MGE4YmRlNTZiMyBsZWdhY3ktdHJ1bmsKKzI2MjgxIDIzOTJhZjA1ZjA1MjZiNTYwMzAwMGI3OGNlNWI4ZjYxYjlhZjJhNjYgbGVnYWN5LXRydW5rCisyNjI4MiAzYzg3NmZmMjlhODNlZDllZmRlNDkyNWExODc3NmFiNTViYmEwYjY3IGxlZ2FjeS10cnVuaworMjYyODMgM2YyMWU0ZTM5MjY4MTAzZjIxNTQzNTA5MjI5Yjk1ZWZjY2M1ZTA4MSBsZWdhY3ktdHJ1bmsKKzI2Mjg0IGE1ZWViMjg4ZTAyMGY3MzBjOTBkNjg0OTgxMTlhNDJlZjVhM2Q0MDggbGVnYWN5LXRydW5rCisyNjI4NSAwNzdjZThiNWQ4M2I1OWI3M2U3M2M3YWE1ZDEwM2I0NTNmMmJlZGE5IGxlZ2FjeS10cnVuaworMjYyODYgNGM0OTk0NDdjYzQ5Zjg4NzNlZTE4NWRhODg5YThlOTQ1ZGIyMDM4MCByZWxlYXNlMjItbWFpbnQKKzI2Mjg3IDMzMjNmM2Y0MjJkYjA5YTEyMjRjZTBiOTNmZWQ3OWY0MzNkZTQ0NGIgbGVnYWN5LXRydW5rCisyNjI4OCBlMjMzODFmYTQ3NTAzODAyY2QxNDNiZjJhZmE5M2M5ZTQ0NjhmYWZkIGxlZ2FjeS10cnVuaworMjYyODkgZTJkZWMzY2RmM2MyNjgwZmZkN2U4NjJkYmM4MmJmYTFhY2E2NzE2OSBsZWdhY3ktdHJ1bmsKKzI2MjkwIGUzMDdhOTRkZDc3YmZkY2Q1YjdkZTdkYjI0MDVhYWE1M2U4NzY5NzYgbGVnYWN5LXRydW5rCisyNjI5MSAyNjdiOTczMmJmNDY1NTAwYjJhMDQ4Njk5MDRmNmY2ZjExN2JmNTFkIGxlZ2FjeS10cnVuaworMjYyOTIgYTk2ZTdlNWYzNDA3NzE1YTcwMjMyZjJhNWZjNzhjZjg2YTExNTJiNCBsZWdhY3ktdHJ1bmsKKzI2MjkzIGY3NmNhOWZiYzdhNDc2MmM0OGQ2MzA3OGJjNDczMDQzMzYxNDQ0MTMgbGVnYWN5LXRydW5rCisyNjI5NCAzMmE5YjE5ZGJhMWRkNjcwMGFlM2I3ZTliYmJiMmEyNmUyMjMyNWJkIGxlZ2FjeS10cnVuaworMjYyOTUgNDRlZTY4YWM1ZTdmOTYxYjZmYzM5OTE0N2YwYzE3YzI0MmU4NmIyZSBsZWdhY3ktdHJ1bmsKKzI2Mjk2IGQ0ZjllMTliOGMwYjQyNzYwYTM4N2E3ZjQ4MGQ1ODlmNDc0ZDcyOWUgbGVnYWN5LXRydW5rCisyNjI5NyBmMTRlNDU1MGIyZjNjZWE4YzkzYjc3YTQ0ZGNkN2ViYjQxNjA2Y2ExIHJlbGVhc2UyMi1tYWludAorMjYyOTggYTU0YjIzYjJmMTcyMGMzMzcyNzFiODg3ZjkwZGVjYWJkMDViZWJiZSByZWxlYXNlMjEtbWFpbnQKKzI2Mjk5IDVjNTUzNzcyY2E1NGMzZmQ0ZGU5ZjBiYjRlOWE4NGMwODZhOTE2YzcgbGVnYWN5LXRydW5rCisyNjMwMCA1MzRhYWI1YmNjZWE0NWIzYzZlYmYwNjQ0OTgyMmUyZDY2MWQ2MzBmIGxlZ2FjeS10cnVuaworMjYzMDEgYWI2Nzk5MzFhZTBkMTcxNzBmYmZhMDkwMmE4MzhjY2RlY2M5NjlmZCByZWxlYXNlMjItbWFpbnQKKzI2MzAyIDA1N2M1ZDc5Yzk4OGFkZGI3Nzk3NmRkN2M5OGY1ODNlN2IzNzZjOWQgcmVsZWFzZTIyLW1haW50CisyNjMwMyA5NzkzOTgzNGE2NzM1MjIwMWE0ZDJjNWE1ODU4Yzc2YTQ4MDBkODA5IGxlZ2FjeS10cnVuaworMjYzMDQgYzg3NTBkNjNkYzM1NTg0MjY0ZDNjZjcxYzEzZGE4ZDAxZTA0ZDAzMSBsZWdhY3ktdHJ1bmsKKzI2MzA1IDUwYzljMjQxNDYzZDIxYWVhZjE2YmUwODIwOGRiMzZmYjZhNDI4ZTMgbGVnYWN5LXRydW5rCisyNjMwNiBjMDQ5MDZmYTE3OGM4OGJiMDI0ZjQ3YTY0MDY3ZGY0YzdhMDA3ZmI2IGxlZ2FjeS10cnVuaworMjYzMDcgY2M1MGEwOTFmNTczYWZmYzMxMTJkY2NlY2YzZGI4NDQ4NjQ4YmY5OSBsZWdhY3ktdHJ1bmsKKzI2MzA4IDFhOGE3NDk4YjBiYjM3MWFjZTIyZGRmYzJkM2E1NDQzNTQ2ZjQyMTQgbGVnYWN5LXRydW5rCisyNjMwOSA2Y2I1MjgyOWRhMWEyYWFjNjc2OTZjMGI0MzhjN2MyMGE5NmVlY2JmIGxlZ2FjeS10cnVuaworMjYzMTAgNWY1NDU0YTQ4YjVhYjk2ZmUzOTMzNGQwZmQ3NjVkYmM3MmQ4Y2Y2ZCBsZWdhY3ktdHJ1bmsKKzI2MzExIDIxZjMxOTM5ZGMyZjc0OGYyZmY5MGU4MzhiZjM5YzI0Njg5OWE4MDkgbGVnYWN5LXRydW5rCisyNjMxMiA2YTM2MTEyYTNkY2UwNjc1YmIyYmE1NjdkZjU2NGQ5ZjY5YTlmOWM0IGxlZ2FjeS10cnVuaworMjYzMTMgYzhjMWRjMDcyN2NkNTBjZGU3ZGNjNmIzYTFmZjViM2ZmYTRlMWY2ZiBsZWdhY3ktdHJ1bmsKKzI2MzE0IGJmYTMzMGI4NTIwNTA3ZDk5MTI3ZGZjODJiOGNhMDcwZjIzODc2YzMgbGVnYWN5LXRydW5rCisyNjMxNSA5YTU4ZTk3ZGI0NDdjM2Y0OTZhOTY4NTQxODljOWYwNjcwMTY4NzRlIGxlZ2FjeS10cnVuaworMjYzMTYgY2VhODUyZjhhYTQ3NjMwMzdmMDE1ZTIzMDc5Nzk1Yzg2ZDZkN2JhZCBsZWdhY3ktdHJ1bmsKKzI2MzE3IDAzYTgzMzQwYzkxNGE5MmM2ZmI3ODM3MWRlOGY1ODk1NzZiMGNhMDAgbGVnYWN5LXRydW5rCisyNjMxOCA0ZjlkNWVhNGYzN2Q5YzEyMWI4MGE4NTdmMDYwMGVkYjQ4ZmNjOWYxIGxlZ2FjeS10cnVuaworMjYzMTkgNWYyZGNkZDA5MzI5MzZjNWQyYmY0YmE0N2Y0MTBmZWFhODk1OTU5ZCBsZWdhY3ktdHJ1bmsKKzI2MzIwIGY4MTcwMWI3MTIxNjRmNjYyMmVhOGEwNTRjMDYzY2EwNDAwZmE4Y2EgbGVnYWN5LXRydW5rCisyNjMyMSBhMGJiNWZhMWFiMmRjZGUwZWYwYzMzOTdkMjQxMzU1NmM4NWZmMTdlIGxlZ2FjeS10cnVuaworMjYzMjIgM2YyM2Q3MmVmNDEwZjY2NmUwNGU4YjI5MDFhZmRlYmIwYjNhMTEyNiBsZWdhY3ktdHJ1bmsKKzI2MzIzIDZkNzMxYjY0NjcwYjY5MGQyNGIzODg1YmU0ZWY5YTc4NWU4OGQyOWMgbGVnYWN5LXRydW5rCisyNjMyNCA5NTYzYzk2NjRhMGJiOGEyZWNlNjg5ZjM1YjRhMjA0MDIyNWRjMTA3IGxlZ2FjeS10cnVuaworMjYzMjUgYTAwNDczZjMzMTdiOTNmNzU0ODQ1YjE2OTRjNzg1MzNjNTIzNDIyZCBsZWdhY3ktdHJ1bmsKKzI2MzI2IGIzNzMxNGZjYmNjOWY3NTIwNzQ3ZTJkMGE0ODlmOGUxMWFhZDI4NGMgbGVnYWN5LXRydW5rCisyNjMyNyAwODRhYjczNzc3YTM0MTc0ZGU3ZDg5ODMwOWU0MDcxY2JmYjFiYmM4IGxlZ2FjeS10cnVuaworMjYzMjggNTQ5NWI2ZGYwYzY1ZDMwZjdkYjNkNTFjNDhjODgwNzJmZTQwMjE1MiBsZWdhY3ktdHJ1bmsKKzI2MzI5IGJhMDIzNmY4NDMxOGMyMzllZDgzYThiZjU2ZWE4ZmQ1M2FkMDhiMDEgbGVnYWN5LXRydW5rCisyNjMzMCAzMTAwYmEyNjkxM2M3ZDViYWExMTMxZmRhNzRmNTBjMTM2ZDQyNGViIGxlZ2FjeS10cnVuaworMjYzMzEgZjkzYTI2ZDFiZmEwZTlkZDgzMTgxMTgwNmM0Mjc1YzdjMWVlNzE5OCBsZWdhY3ktdHJ1bmsKKzI2MzMyIDkwYjgzNGNlNTcwNzdmZWRhNWZjMTlhMDVjMzI4NDMyYTdkMmY5MzAgbGVnYWN5LXRydW5rCisyNjMzMyA5NTgxOWY3ZjBiY2QyY2RjOGZlNWNhMjliMDQwMTU4NTk2NGRmODIwIGxlZ2FjeS10cnVuaworMjYzMzQgNjk5Y2MxMzlkMmQyNDg2NmExMGJhMWFkYzk2MzJjYmVjZTAzMWE3NCBsZWdhY3ktdHJ1bmsKKzI2MzM1IDcyNzc4ZWM5NGRlYzY2NzYzODI3MzMxMTAwYmI4ZjE4YTAzYmNhNTUgbGVnYWN5LXRydW5rCisyNjMzNiAyOWU2Y2I4MzI0OTdiNWZlOGFkMmU3MzM2OGJiZGYwM2I5NGIwYmQ5IGxlZ2FjeS10cnVuaworMjYzMzcgYTllNDAyNGQ4YTM3NzAxOTU2MDUyOWJhZGUwNTg3MTJkYjUwYmZlNSBsZWdhY3ktdHJ1bmsKKzI2MzM4IDRiYTA5MWNjNzBiODliMTY2NDRhYTc1ZTE3MzdkZmRkMjRkNDAwZDYgbGVnYWN5LXRydW5rCisyNjMzOSAzNjNjN2ZjMTc0YWM4YmRiN2I4MzE5ODFiODljNjNjMzIxMzQ3MWEyIGxlZ2FjeS10cnVuaworMjYzNDAgOWZlOTRjMDFlYWYxZmZmNTAwN2MwMzg0MjU1ZTQxODFiZDBkY2Q3NSBsZWdhY3ktdHJ1bmsKKzI2MzQxIDlmOTQ5MDI3ZDdiYTE5M2JkNjE0M2YyYWE2NDRiOTAzNzA0NjdkMjggbGVnYWN5LXRydW5rCisyNjM0MiBkYzFmYjE5ZDk5MGQ2OTJmMTdjZDFlMGNlNzcxMDVjYzMyYzU0NTgwIGxlZ2FjeS10cnVuaworMjYzNDMgZDA5NzQwYjJlMDNkZTFmODVjYTA4NDM1NmE0NWQwMWFjMDJlY2NhNCBsZWdhY3ktdHJ1bmsKKzI2MzQ0IDFjMjZhMzEwNjY1MzEwZjYzZmU1NzU3ODc3M2ZkMDMzMWEyYmUzNTIgbGVnYWN5LXRydW5rCisyNjM0NSBjNWE2N2Y1MDUzMmU5MTQ3MTFkMGNmZjU5N2JhM2VjOTQ2YjRlNDAxIGxlZ2FjeS10cnVuaworMjYzNDYgZDlkODJjMWVmODY0NTBkZjIzMzU1MDBlOWJlM2JiNzNiYWI3YzZmYiBsZWdhY3ktdHJ1bmsKKzI2MzQ3IDI5OGE3YzUxZDJjMDFkZWRkNWEwODBjNDY5ZTZjMDcxNGNlZTIwZDUgbGVnYWN5LXRydW5rCisyNjM0OCBjOGQ2MWZmMWMwZDZiNzQ5NTQ5MGFhOTlkNDAzZjJmZDhlMzM0NzhlIGxlZ2FjeS10cnVuaworMjYzNDkgYmU1NDQ2NWEzOWM0NTRhNThiMmIxN2MzNGVhOWI5NWFiMGU3MmQxNyBsZWdhY3ktdHJ1bmsKKzI2MzUwIDYxNjYxNTgzYTEyZmFiMmFmMGNmZDBjNTA4M2MzYjMyYWUxMzFhMWUgbGVnYWN5LXRydW5rCisyNjM1MSAyNDY2M2I4NmI5NzUwNWVjYTYwNzIxOTE3ZDQ3M2UyYjIzMzlkNzljIGxlZ2FjeS10cnVuaworMjYzNTIgMWUxYzcyMTQzM2Q4ZTRhM2IwODc1M2NlNDgxYWVlNWJiZjc5NWQwMiBsZWdhY3ktdHJ1bmsKKzI2MzUzIGJlYjMyMTg5MDVhMmZlOWIxNGI2MzRlMjBiMmQ5Zjk0YTI0M2ExNWEgbGVnYWN5LXRydW5rCisyNjM1NCAwYTE5ZjAxNmE5OTQ2NDdlYTEyODljYjQxMzIwYzJiZDNhMTBhNTRhIGxlZ2FjeS10cnVuaworMjYzNTUgMTk2ZGZhN2VkMzQ4ZGJmZTk2MTU3NjI2ODE5NDVkYjIxMDg2Yjk0MSBsZWdhY3ktdHJ1bmsKKzI2MzU2IDY5MGQ3MTJlMjgwN2MzZTFjOGNjNTEyMGI3YTU5YjM0NDcyYmYyMmEgbGVnYWN5LXRydW5rCisyNjM1NyBiOWFkMWU5ZjU5YTg1ZWEwNzllODcwZThlMTY1NjQ3ZWU2NjEwMDVhIGxlZ2FjeS10cnVuaworMjYzNTggMmRkMGY4NGFmMDcxNjkyOTAxNjFlYTM1MzM1YTRmOGEyZGNhNTYwYiBsZWdhY3ktdHJ1bmsKKzI2MzU5IGE5Y2I5MTllNDllMzMxYmJlOGJlOTExZDZmNzljNzcwZmE2N2NhN2IgbGVnYWN5LXRydW5rCisyNjM2MCAyNWE2ZTM5YzMxYTIwNzBlMTUxZmU4ZjZhZmU2ZGFiMDY0NDEyNjU1IGxlZ2FjeS10cnVuaworMjYzNjEgMGIxZTIwYzM0YzhlYTZjMTllNGM1MzE1NTc1OTkwYjlkMmRkOGYxMiBsZWdhY3ktdHJ1bmsKKzI2MzYyIGEwNTYxY2Y0OTE2MzRkYjE0Yzc2ZTMyMzlhZGY2NmFmMGNjMGI0NDEgbGVnYWN5LXRydW5rCisyNjM2MyA4Zjk4Y2IzYTBmMzY4Y2E0M2YxZjUwMzMwYzA0MTBjYThhNGExNGEyIGxlZ2FjeS10cnVuaworMjYzNjQgNGYwNjNiODAzMDhkOTkyM2QwNWE2NzFlNDdhNDkyZDA5OTJhZmU4ZSBsZWdhY3ktdHJ1bmsKKzI2MzY1IDFmN2FmNGZiM2E1MTUyY2ExNDhlMWUwYWMyZjY2M2U0ODU2ZWExMjggbGVnYWN5LXRydW5rCisyNjM2NiBlNTRiOWMzODQ4YjdhMzQ5MjA4MGE0ODlmMzQ1ZDcxNzMwNDEzZWRlIGxlZ2FjeS10cnVuaworMjYzNjcgMWNlYWY3ZjgwNTVkNmYzMGFmYTdkYWZhNWQ3ODJhYTdlZmU5YjQyNiBsZWdhY3ktdHJ1bmsKKzI2MzY4IGRiMDAzYjhhOWJiOTU0NjAwOTA5NWIwMzBhNzdkZDE3ZmM1NzljNzggbGVnYWN5LXRydW5rCisyNjM2OSBkNTA0OGY5YjhiODI1N2IxYzFiZGRjYWI5MTljYjU0YWRmN2MyOGJhIGxlZ2FjeS10cnVuaworMjYzNzAgOGJlNjIzODc0OGM0ZDBhZjNjYzcwYTBiYjY2M2FkNzE3YTg0OWM3NSBsZWdhY3ktdHJ1bmsKKzI2MzcxIDkzMWQ0NDg4MjBhZWVmMzhkYjYyMjAzYmIwOWJkZWMxMjM1YWYwMDcgbGVnYWN5LXRydW5rCisyNjM3MiA5ODkzNzdjZGYwNTMyZDc3NzZjYjY2N2M2YzU2MzdmZDNjN2E4ZTZiIGxlZ2FjeS10cnVuaworMjYzNzMgMDhhYjBhNmJmMWViYjE0YTkwZjRjYjkzMjhjZDBmNmRiYjlhM2EzYyBsZWdhY3ktdHJ1bmsKKzI2Mzc0IGQ2MzIyOTgzMDY5ZTA2YWEyNGM5M2RlOThmZWM5NTk4NWJlNzJiODYgbGVnYWN5LXRydW5rCisyNjM3NSAzYjA4M2IyNjI5NmE4ZTgxMjc2NGQyOGUxMzZiMjdiYTIyNTg2ODE2IGxlZ2FjeS10cnVuaworMjYzNzYgMjAyYWU1Yjc1Y2NhMjQzODI3MjQ4NzNiZmY5OThmYTAyMzQ2MTQzZCBsZWdhY3ktdHJ1bmsKKzI2Mzc3IGI1ZjlmN2E4ZjU2NjZlNDg5ZmJiNTVkMmIwMzkyYWQxZjkzNmIzNjggbGVnYWN5LXRydW5rCisyNjM3OCA0NDYzN2JkN2Y1OWI2NDI5OGMyZDJjMjQ5MmI0YjNiNTg1ZmMwMDE3IGxlZ2FjeS10cnVuaworMjYzNzkgYjFhYjRiYzUyMjQzZDAwZDkwNzQwYzg4MjMyZjMzOWM2ODQ2MWRlYyBsZWdhY3ktdHJ1bmsKKzI2MzgwIGM2MDAzZGU3Mzk3NTU3YjljODRkMzVlYjM3MGNmNjgyNzk3MmFhNTMgcmVsZWFzZTIyLW1haW50CisyNjM4MSBlMjg0ODYxOGJkMTk1OWFkMTQ2YTliMWExZWY5ZTVhOGNlZDA5MTRiIGxlZ2FjeS10cnVuaworMjYzODIgMjQ3MTgzMjcwMDk1OGY3NGM5MjM2YWFiMzg2MTg4NjgxNWIzZDhkNiBsZWdhY3ktdHJ1bmsKKzI2MzgzIGViZTNjZTZjYmZkNzg2MTUyMjhiZWNjZjkwZTNiN2UxYzc4NWY3YzAgbGVnYWN5LXRydW5rCisyNjM4NCA4OTkwMDJhODgyYTA4YTUwOWZmNmIyZWMyNDNhMWZlNDdkN2QyM2VkIGxlZ2FjeS10cnVuaworMjYzODUgNGU1OGEzOGUzYzA2MWFhYzFkN2RlN2Q0ZWFlZThlZTdkYmVjZWMyNiBsZWdhY3ktdHJ1bmsKKzI2Mzg2IDNlODkyNTgyYTg1MGJjOGI2MTE4ZmQ3ZTcwODJiZWE0M2M4OTc5ZDUgbGVnYWN5LXRydW5rCisyNjM4NyBmM2ZjOTdkYTY4YTk4NThjM2Y5YThmOTAzMDRlOGVkZmUxNWI4NGIzIGxlZ2FjeS10cnVuaworMjYzODggMDNjMzk2NDBkODFhODk0MmRjZmM0NWExM2VhOWFlN2MzYTFmNGQ1YSBsZWdhY3ktdHJ1bmsKKzI2Mzg5IGE5YTZjMTE4ZGZiYTc1NDNiMmY2MWVlZjg3NWZhZjc0YzYxMzAyYjcgbGVnYWN5LXRydW5rCisyNjM5MCA4MjkxNDczZmRlM2ViMzJjNTE3YzA3NTE2ZGY4YTk5Y2IyOTYwZGUzIGxlZ2FjeS10cnVuaworMjYzOTEgMTg2MjM3NGFiMjUzOTlkNTVmODY5ODc3OWM1Mjc3YmEzMjQ2ODdhYiBsZWdhY3ktdHJ1bmsKKzI2MzkyIDViZGE1NDZlYmUyNGFjZjllYWIxNzBiZjIxYzZjODA3NTE2YWU1YzkgbGVnYWN5LXRydW5rCisyNjM5MyAxZGIzYTAyOTY1ZTY1NWVmNGVmODUxYTU4ZmQ4YTk3NTlkMmU4M2FkIGxlZ2FjeS10cnVuaworMjYzOTQgOGI5MjYwZTkyMDEwYjU0ZThhYjVlOGUzNGZkNmU4YjU0NjliMmY5NCBsZWdhY3ktdHJ1bmsKKzI2Mzk1IDUzYmE5MTEwYTFmMTc3OTdjNzUzZWMzZDcxMTdlNmJkNDQwZTM3NDkgbGVnYWN5LXRydW5rCisyNjM5NiBiMWVlNDMyMWE1MGE3YjJjNTliYWQxMzAxNDY4YTNiMjcwMmQ0MjM1IGxlZ2FjeS10cnVuaworMjYzOTcgOGY2NDUxODA1MzRkNTNmNmJmNjM3MzU1MTU5ZWFhMzZhYWY2OTU4NCBsZWdhY3ktdHJ1bmsKKzI2Mzk4IDg5ZGI5ZTNmMzVhNzQ4YjE5ZDk1YjM0YTk2NTI1ZThkNTIwNjRjM2EgbGVnYWN5LXRydW5rCisyNjM5OSA5ZDM1MjY2N2Q3MTVlZWMwNzgzNDhjOGQ5NTRmNjAwYTdhYTBiYWRmIGxlZ2FjeS10cnVuaworMjY0MDAgNDU0MzUxZWY1MGYxZDE5NzBjZTRiOWMzYmQzMGNhNTg4MTIzZDY1NiBsZWdhY3ktdHJ1bmsKKzI2NDAxIGNkMjAyZWY2NzI2ZTM0NTdmNTNiNjVjZDU0NzAzNzJhM2E2MWVmNWYgbGVnYWN5LXRydW5rCisyNjQwMiBmMWFhMThjOGM5NmI4MjFjOTViMjBiNTRmMjEwMTU3ZmZkNzNlMTE4IGxlZ2FjeS10cnVuaworMjY0MDMgZTFmOGUyOTU0NzQ5OWY0OTczZmY5YmFiZGIzM2YzYjhmYTBiOWIzMyBsZWdhY3ktdHJ1bmsKKzI2NDA0IDdmZWNkNmQ1OGYzOGVmMTc0ZDNhYjM0MjRiZmU5ZWM0MzQyY2Q1MGUgbGVnYWN5LXRydW5rCisyNjQwNSAwZjM3Y2I1YTdlOWU4Y2Q1YjA4MmQ3ZjUxNjk1NTAwZDQxZjM0ZTY3IGxlZ2FjeS10cnVuaworMjY0MDYgOGIxMjY4YmMzNzFhNjRmZjViYmNmMzc3OWNjYzEwZjQxNTkyNTFjNiBsZWdhY3ktdHJ1bmsKKzI2NDA3IDc2OWUwYTUzOGU1NDNkMTVjZDg3ODZiYjdhZmM0ZmJmYTM2YmFjNzggbGVnYWN5LXRydW5rCisyNjQwOCA3NTEyODljZDFhYjcxMmQ5ZTc2MmExODQ5ZTgyNTBiOTJkZWZlNTU5IGxlZ2FjeS10cnVuaworMjY0MDkgYzE2NjhhODE5MjQyYzUxM2EyYWVjMTkzYzQ1ZGQyZjA4ODhkYTJiNyBsZWdhY3ktdHJ1bmsKKzI2NDEwIDllNmZmNzg3MjgwYTk1ZGQ0YzA4ZmQwYWQ1MTQ4MDAxNmM5Zjc0YjcgbGVnYWN5LXRydW5rCisyNjQxMSA4YThhZmZjY2Y0NjNiYjVjNTc4MGRlNzBmOTg5OTk3Mzk3N2Y5NTIxIGxlZ2FjeS10cnVuaworMjY0MTIgMTllYTAwZmVkYTMzNmNkMTFkOTk0NjkxODAwZDU1ZmRiZTA4MmRkMyBsZWdhY3ktdHJ1bmsKKzI2NDEzIDhlYjZkZDNkODMyMmVmYmQ0ZjhiYzQyMmM4ODEyM2ExMDlhMDllYjEgbGVnYWN5LXRydW5rCisyNjQxNCAwNGZiZjY1YzczZWY2ZmM2YTc4OGZjNDg4Yzc2NWU3MDU1OWE2MTNhIGxlZ2FjeS10cnVuaworMjY0MTUgNzFiZTViYTg4YWE3YTcyYzdhYzAwZTYyODI4ZTM4YTg3NDkzZWM0NSBsZWdhY3ktdHJ1bmsKKzI2NDE2IDNhZjJjYWRjY2Q2YWM2NTIzZTliMGU5YzYyMzU2YmM3YjY0NjY5YTEgbGVnYWN5LXRydW5rCisyNjQxNyBhMTM1OTgwZGQ0ZTliNmI5YmYxMmViZTNkMTkyNzA3YTE4OGM2MGQ4IGxlZ2FjeS10cnVuaworMjY0MTggNmJlMjgzZDE0OGY3ZTM4ODI1NTk0OTQ0MTU5NGQzMGY5MWE2ZDRkYyBsZWdhY3ktdHJ1bmsKKzI2NDE5IDgwMDVmYzFhZWYzOWM4ZjA2MjRlNDE1YzY5MTJmNzBlYWY1YjI5ZDYgbGVnYWN5LXRydW5rCisyNjQyMCA0YzBhYjVkNmE2M2M0MWVhYzI5Y2EyODdjN2Q3YzYxNTI2MjY1ZTYyIGxlZ2FjeS10cnVuaworMjY0MjEgYzMyOGQ3MjUwZTkyNjYwMDM2YzliYThhZDVjYzRkZjAyYTM0YjZiOSByZWxlYXNlMjItbWFpbnQKKzI2NDIyIGRiZDBlZTdmNjBlMDU2OTcwYTZhMDczMWI0ZDU5MGEyMzc4ZmI1ODMgbGVnYWN5LXRydW5rCisyNjQyMyBjMzcxYmIzZTg1MjkxYjllMzM0ZmM1MzQ3NWM0ZjZkMjQyOWFkZWVkIGxlZ2FjeS10cnVuaworMjY0MjQgNTMwYWJhMzExNmE0MGQwODVlNGExMDg5NzlmNjAzZTI5YmViZjNmOCBsZWdhY3ktdHJ1bmsKKzI2NDI1IGRjMGMxMjEzYzc5YWJkZGEwOTM1YjM4MDY0YTNmZjIwYWYzYzJiYjggbGVnYWN5LXRydW5rCisyNjQyNiA5MzhmZjNjYjUxYzI2YmZlNDE5ZWI2NWNlYjdhZWNlMzdiOWQ2MThmIGxlZ2FjeS10cnVuaworMjY0MjcgMDNmZjM1NjliYTA0Y2FmNmM1NjgxZDI4MGVlNmFkZGQzZjBjMTY5ZCBsZWdhY3ktdHJ1bmsKKzI2NDI4IGYzNjc3NDE0YmMzZGVmNmEwOTA1NWZjNmVhNzQ5NGQyYjYzMzZlYmQgbGVnYWN5LXRydW5rCisyNjQyOSA0MmM5OTcyOGI2Y2NhMmY5ZWMyYjc4M2U1M2YxNGNjNzY3Mjk0ODEwIHJlbGVhc2UyMi1tYWludAorMjY0MzAgYmJhYjNhMTdiNGNmNGUzYzdjZDNmNGY0YzViNzEyZmE1NTAwOTE3YSBsZWdhY3ktdHJ1bmsKKzI2NDMxIDk3Yjk0ODBiYmVlYzc1ZTYxNTljNTQwOTcxMzc3MDczNDVkZTM4OWEgbGVnYWN5LXRydW5rCisyNjQzMiBmZGE3M2JmZjIxZmZhNTZkNWE5ZWNlMmYyNDljZjFjOGNiYzhjYjMyIGxlZ2FjeS10cnVuaworMjY0MzMgZDg5ZTU1NzNkZDIzN2UxM2IwNjI0N2FkMjA1M2RiOWYzZGQyYzFlMCBsZWdhY3ktdHJ1bmsKKzI2NDM0IDIxZDI1MjAyODQwNGM4MGRkODIyOWVmOTJjNjhlZDlhODJlMDE0ZDIgbGVnYWN5LXRydW5rCisyNjQzNSA0ZmY5MGM5OWMzMDJhYTZiZDQzYzRkMjI4MWVjM2ZlMWZlZmI3NzIyIGxlZ2FjeS10cnVuaworMjY0MzYgYjdlODc3MzJmNmFiOTQxM2Q1NGZkY2RhYTllYzk5ZmYzNGI2ZTE2OSBsZWdhY3ktdHJ1bmsKKzI2NDM3IDBmY2U1NTY3NWNiY2IzODBjMjQyZjM5ZGVmNzNiOGUzODgzMTQ4YTQgbGVnYWN5LXRydW5rCisyNjQzOCAzYmQzMzZiNmNiMDNhNjdmNzNlNzEwZWYxNjY0MGFkMzE3ZjVhM2NlIGxlZ2FjeS10cnVuaworMjY0MzkgNGFkZGY0Y2VhZmM1NDdmNDdiZmUwNDhjNTdiMmVjNjgxZWEyNDUwNCBsZWdhY3ktdHJ1bmsKKzI2NDQwIDk2OWMxZDExOGM5N2RlYmZkM2ZhNmE4ZmY2YTEyY2FiNDkyZTUyNGEgcmVsZWFzZTIyLW1haW50CisyNjQ0MSAxMGUwMTIyYjVmZWQ1Zjg4ZDcyMWRhOWRkOWFkN2Y1OTU1NzhmODFkIHJlbGVhc2UyMS1tYWludAorMjY0NDIgM2JmNzYyZTBlMDZlZDA5YTkxZTNlMjY2NDQxNDJmYTFiOWVlYmEzZiBsZWdhY3ktdHJ1bmsKKzI2NDQzIDM5M2U5YTIxNmE4OGI1MDAxMDlmMDMxODM2ZWE2Y2ZmMmNkMGQwN2QgbGVnYWN5LXRydW5rCisyNjQ0NCBlNDg0ZjMwZGFjNzdhNjE3MWEyN2I5N2VlMzY1NjAxYWFlOGM4NzlmIGxlZ2FjeS10cnVuaworMjY0NDUgOGMzZGQxYzJlZjQ3OWVlNmVjNGU2MGUxOWJhYThlZDM1N2UyNzJkZSBsZWdhY3ktdHJ1bmsKKzI2NDQ2IDQyM2EzNjc4YmM3YzcxNzZlYTYwYWIxZTIxNzdhOWI2ZmExOWVhZGQgbGVnYWN5LXRydW5rCisyNjQ0NyA0ZTgyNTIyODQ3ZDBkZTgxZTAwMzc3NTA2M2M1ZWFiNTkyZDk0YjEyIGxlZ2FjeS10cnVuaworMjY0NDggMDlkYjNmNWQwYmQwZWEwYmYzYmIyYTVmNTlhMTY0ZDNkYjNkYWYyMiBsZWdhY3ktdHJ1bmsKKzI2NDQ5IDhjN2EzOWQwZmVmZDgwMWY2ZGRjODljZTBmZGZhYTEyNmYzOTBjZTcgbGVnYWN5LXRydW5rCisyNjQ1MCAzMTRmOTJhMjQyOTNiMmFiYmNmMDdjZWEzZTdkNTdjNDAxNjQ1YzE5IGxlZ2FjeS10cnVuaworMjY0NTEgYjM5NTQ3N2Q4NGQwZDc2OTk3MzA3ZDRkYTY4OGEwMzc4M2FlN2JlNyBsZWdhY3ktdHJ1bmsKKzI2NDUyIDk5NzU3NTYyYmZiOTU3ZmQ0YjU5NDk3OWYzMDllY2U5Mjk3NzJiOGUgbGVnYWN5LXRydW5rCisyNjQ1MyA5ZWJhNjBhY2UyZGFlMGMyNWM0ODllYzZmNWEwNTlkYzI2YTc1OTViIGxlZ2FjeS10cnVuaworMjY0NTQgOTExZjlmMTRlMmQ1N2U5YjYyNDJjNmEyYWVjMjk0NTZkNWFkYjdiYyBsZWdhY3ktdHJ1bmsKKzI2NDU1IDJhNTQyNzg0MDYyZjVhOTNkNWMzYzA5MDVjNjI4Zjk5MzFlMjU2ZGYgbGVnYWN5LXRydW5rCisyNjQ1NiBiNWFhZTJhNjVmNmQxMjJhMGY3MzVmYTJlNWU5Yjg0NjI2M2Q3MmYxIGxlZ2FjeS10cnVuaworMjY0NTcgZjg2NzlmNjc5OGJmNjdiOTE0ZjM3MWUxNzRjMWNiNzY3MTgwODQ4NyBsZWdhY3ktdHJ1bmsKKzI2NDU4IDAzYWJmYTdkYjQ0OThjNWNiOWNlZGIwZjlkNTg5YzJlYWU4OWMwZWQgcmVsZWFzZTIyLW1haW50CisyNjQ1OSA3MTcyY2VmMjNiMDU0OWViZmU2OTNmOGJiOWY4NmM5YzM2ZTUxN2FjIHJlbGVhc2UyMS1tYWludAorMjY0NjAgNzM4OTVjOTlmY2M1YmJlZWM3NWUxYzczYjJhODVhOTkwMTg3OWJmZiByZWxlYXNlMjEtbWFpbnQKKzI2NDYxIGI2ZjQzMmIzMjE0MzhjYWNiNTRjYjg4NzVkYmMwM2IwYTBiNmY5Y2YgcmVsZWFzZTIyLW1haW50CisyNjQ2MiA1NjllMzgzYmUwZGE5YTZkNmM3ZTNmYzZjNjlmZmEzNzA2OGFlZDE1IGxlZ2FjeS10cnVuaworMjY0NjMgZDQ0NTQ1YzRhNDdhODJmMzIwZTUwNWIwMjI2YWNiMThjNDY5N2M2OSBsZWdhY3ktdHJ1bmsKKzI2NDY0IGQyN2U5N2I4YTg2NmU2ZGM0ZmJjY2MyOGM1MDZjNmM1NDU2MWQ3OTUgcmVsZWFzZTIyLW1haW50CisyNjQ2NSAyNmUzZmU4YTg4ZjU3YjcxY2NhZmJjMmRhMjM4ZTcxZDhmZDM2ZGZmIGxlZ2FjeS10cnVuaworMjY0NjYgMDFmNzNmZDY2MzEwOWZiMTIyNDNkOGJlNTU5ZWNmMzE2MDE4M2M0YSByZWxlYXNlMjItbWFpbnQKKzI2NDY3IDk3ODM2ZjYxOTNkYzMwNzE1YjgyMGZjMTEwYjhmMGRiYzZiMTQzNzUgcmVsZWFzZTIxLW1haW50CisyNjQ2OCBmNWVkZjcwMjUyNjc2ODVlMzE3Mjk1MmViYjZjZWZhZjFmNzY0ZWM3IHJlbGVhc2UyMS1tYWludAorMjY0NjkgZGY0NWFkZjc3ZDM2ZGZkZTRkOGI2MTRmYzJjYzczNDYyZmVkNzg1MiByZWxlYXNlMjItbWFpbnQKKzI2NDcwIDdiMDBkYWI5ODhjZjQ0MDc4NmUzOWNhNTg5OTU3ODUwZWMwYTc3ZTMgbGVnYWN5LXRydW5rCisyNjQ3MSAyZDNhMmJlYjNkNGQ3MDI5ZjNlZTk4ZDU3ZWQ1YjczOWM0NDZiNjZlIHJlbGVhc2UyMi1tYWludAorMjY0NzIgNDA3OWU5YzIzZmMxNzI3NjNiZWI2ZDhmOWY0YmY5YTE3ZGFjODMzMCBsZWdhY3ktdHJ1bmsKKzI2NDczIGEzYzk4MmQ0MTJiNDZlMWNmOTRjZjQ0YzcyMzMzOGQ3MGY5ZGU0ZmEgbGVnYWN5LXRydW5rCisyNjQ3NCBlNzUxM2UxNDJjNzBlZGZiYzkyMzQxMDY5ZmIyNDg2NzVjNjcwMWVhIGxlZ2FjeS10cnVuaworMjY0NzUgMWRhMDJiYmE2Mjc2NzNhY2ZjNDNiMDNjYjQxZTAyY2RiMzdmMjUxOCBsZWdhY3ktdHJ1bmsKKzI2NDc2IDcxMjFkN2Q1NzJkMDFhZjMwYjYyMjZkODUwZmE3NzFlNWNiYmUxMWEgbGVnYWN5LXRydW5rCisyNjQ3NyBmZGU4NzhiYzBlM2JlNWU0OTgxNzhmMTVjMmRhZmQwZWQyZDdkNTk1IGxlZ2FjeS10cnVuaworMjY0NzggMGZmYjU0YjFjM2VhNWNhMWU4ODc5NGNmMTllZDMxMmJjODU4Mjc1MiBsZWdhY3ktdHJ1bmsKKzI2NDc5IGY5MTdlN2E2ZTkxMWI3NzFlMWQ2MTQ1OGRkZjM3YmFmYTJlNTBmYTMgbGVnYWN5LXRydW5rCisyNjQ4MCBmYTQxZjI0MTA2ODg3MzEyYjVmNjIyY2IxMjk5NGYxNjM1ZGVjYWRiIGxlZ2FjeS10cnVuaworMjY0ODEgNzM3ZjQ0NThlNWRlMDExZTAzYzMxOWUwOGUzOTUzNjhmZTc5NjdiOCByZWxlYXNlMjItbWFpbnQKKzI2NDgyIGIwZTU5ZjFlNDk1YWM2ZGI5NTY2Zjg4N2RjODIyYTM3MjU3ZmY0NGIgcmVsZWFzZTIyLW1haW50CisyNjQ4MyA2MjdiN2NhNTIyMWFjMGM5MWVhMTkzOTFhNzIzZmVlOGJjNTBjZWFiIGxlZ2FjeS10cnVuaworMjY0ODQgMjJkYTI2MDgyODVjZmU3N2E0ZWFiYzY2NWZjZTdiNTIzNTY1MDNhNSByZWxlYXNlMjItbWFpbnQKKzI2NDg1IDBiYTIzMzQxZTVjZmY0ZThlNWVkMWI3Njc2ZmU1NzY5ZjdhYWU3ODUgcmVsZWFzZTIyLW1haW50CisyNjQ4NiA5MDgwNWZjYzZjNzAyNTczZjExOGViOTlkYmM3ZGEyNmRkMzc1MWY0IHJlbGVhc2UyMi1tYWludAorMjY0ODcgMzY4ZTgwODFlNzNjNGRiZDI4MDQzZWJlMWM4YmFhM2U2NzhkZjFjYiByZWxlYXNlMjItbWFpbnQKKzI2NDg4IDcwNjUwYWUxYTJjZjAwMjNmMTczODFiZTI4ZGVmYjc4NDEwNDIwZTggbGVnYWN5LXRydW5rCisyNjQ4OSA1YWFmM2Q3YjhkOGMwODkzYjE1MGVmMGRiNzc5ZWQwZmJlNDQ4NmRmIGxlZ2FjeS10cnVuaworMjY0OTAgYWQ0NGJmMTE3OWViMjU0YjVjYTk3Yzc1NWZjY2JmZTJiYzU1OWFjZCByZWxlYXNlMjItbWFpbnQKKzI2NDkxIGRlMDliODc0ZjA3YTY4OGNjYzY2MjcwYjc4M2U3YWIwNWQyODgxM2MgcmVsZWFzZTIyLW1haW50CisyNjQ5MiA5MGFkYmNmNjIwMTM2MWM3ZGJiOGNjODM1MzlhZDk3NzUwMmM0NDUzIHJlbGVhc2UyMi1tYWludAorMjY0OTMgNjc1NzhhODMwZDgxY2EzOTI2ZWJlNjk2YzkxOWUwMzliNWYwMzUyOCByZWxlYXNlMjItbWFpbnQKKzI2NDk0IDZkYTFmOTkxN2U5YjNlNTMzNWZiNTVhYjM4MWJkNDJhNTk3ZjdmNDggcmVsZWFzZTIyLW1haW50CisyNjQ5NSA0Njk0YTBkZjE3NGU0OGI5NTFiYWVlN2I5YmM1Y2NlZDFjZjMwNjNjIHJlbGVhc2UyMS1tYWludAorMjY0OTYgYTA0N2YxNmZiOGIzZTcyMjBjOTIxNWI0OGQyNzUyNGU2ODE5ZTgwNyByZWxlYXNlMjItbWFpbnQKKzI2NDk3IGQ5YjcxZjYyODE0ZjhkMWE1ZmU2ZDk1MTlmNDFiODljYzVjYTI5YzggcmVsZWFzZTIyLW1haW50CisyNjQ5OCA5MWEyMjI4ZjMwMjFiNzkyZDBkZDhkMjIzZTk2MTQ5NWI4NDJiMDYyIHJlbGVhc2UyMi1tYWludAorMjY0OTkgYWI1MTIzMjc0Y2NmZjNmNmYwZWI5NDc4ZTFjZGJjZmYyNmFhYjg5NSByZWxlYXNlMjEtbWFpbnQKKzI2NTAwIDJhMTExNDRmOGYwYzA3NzgzNjYxOTk4YTRiNjdmY2NjYzE3YzA1ZDUgcmVsZWFzZTIyLW1haW50CisyNjUwMSA0NmZmYjE0OWVhNzNhNDQxNDQyNjViMmVkYWFhZjk5Njc4MmMzMTcxIHJlbGVhc2UyMi1tYWludAorMjY1MDIgOGJhMzBlMmQ4YWU2NTZkMmUyNzZkNTFjOGNhNzVkZDRjMThlMjdjYyByZWxlYXNlMjEtbWFpbnQKKzI2NTAzIGI3Zjk1MDZlNjBjOTRmZTAxZmY2ZmQ5NmJiOTczNjVlMzg4Mjc2ZmIgcmVsZWFzZTIyLW1haW50CisyNjUwNCBhNTc1ZTZlZTg1ZDk5Njk1NTE0ZDFhOTA1NTY3NDBiYTBjZWJjMTNmIHJlbGVhc2UyMi1tYWludAorMjY1MDUgYTM2ZjlmYjJjNDA0MmFmMjY0NTI4NjQ2NmUyNzZhMjM2MDI3ZTM1NCByZWxlYXNlMjItbWFpbnQKKzI2NTA2IDBlY2VmOGJmYmQ0YjAyMDAyNTk3NzQ2Y2E0YTQ5ODFlN2ZjMGJhMzUgcmVsZWFzZTIyLW1haW50CisyNjUwNyA2MWNjMDg3NDVkMzE1OTM2MGFiMzRhOGFlMGM5ZmM2YjA4M2JkZTZjIHJlbGVhc2UyMi1tYWludAorMjY1MDggZGJmMDEzY2MzZGVlZTBhNDVmZWM5NDZkZjEzMDFjNGQ3NjI0ZTA4MyByZWxlYXNlMjItbWFpbnQKKzI2NTA5IGM0NjA5Y2ExN2UzZWEwZDA3ODUzYmZiM2NkZjAyMjk1ZjExOGNjZDEgcmVsZWFzZTIyLW1haW50CisyNjUxMCA2MmZhYmJkNDU3YmU2YjRiNDljYmVkYWRlMDg5MTIxNDk1NDliOTFmIHJlbGVhc2UyMi1tYWludAorMjY1MTEgNTIyNTdhZmZlMGM5ZWEzYWE1MzI3NzgwNjc4Y2YyMjA5MDJhZTlmNSByZWxlYXNlMjItbWFpbnQKKzI2NTEyIGY3NjliNDk1OGU2NjYzOWZiZjZjMjM3YjZlN2JjNDM5MWUwNWE1NTAgbGVnYWN5LXRydW5rCisyNjUxMyA5NTA1MjcxNTY1MWI2MDBkNjA0ZWY1OTc0Yjk2YTA1OWI1MWI1NThjIHJlbGVhc2UyMi1tYWludAorMjY1MTQgOTM2ODU2N2ExMDQ3Y2U3OGI5OGI5MmU3YWQ4Njk5M2FlYzljNWY1MCByZWxlYXNlMjEtbWFpbnQKKzI2NTE1IDFlYjQyZmM2OGI1Zjg1ZThmMjljYWI2YWYzMDMwZmU4NjNmZDg3OGUgbGVnYWN5LXRydW5rCisyNjUxNiA2MWViNzE4MjUzNWVmMDg1MDljZTA2ZjhmOGE4OTIyNTk4MzNkYzY4IGxlZ2FjeS10cnVuaworMjY1MTcgYWFlODE0Zjk0YmFkZGZhZDA4ODk3MmJlMmFmNDE3ZTY5ZTYzNzRiNiBsZWdhY3ktdHJ1bmsKKzI2NTE4IDU0YWY0NDk2NzYwNDU1ZjU1ZDE5ZWRkYzQ3MGYwOTkwMzRmYmVlODAgbGVnYWN5LXRydW5rCisyNjUxOSA0YWIyMWUzNTQ0MDNlMDViZmExY2M1ZWRkNTY3ODQ2YmVlYTFmYmE4IGxlZ2FjeS10cnVuaworMjY1MjAgZmNhMzc5YzMwOTA2ZTFkNmZhYzliY2I0YTg1ZWJkOTMxNGJlMmUwNyBsZWdhY3ktdHJ1bmsKKzI2NTIxIGM1NDhlNzI2YjNiYzhiZTZjN2RhMGJlY2Q2ZWFhODUyMTg3NWE5ZGQgbGVnYWN5LXRydW5rCisyNjUyMiAzNjJjMWI4MWVlOWM3OWViNmU2YWYzZTE3NzA4YmM5ZGRjZDNlNzViIHJlbGVhc2UyMS1tYWludAorMjY1MjMgZGQ0MTYzNzRhYjM4NjJlMmVhZDkwZDNjYTZmYTFmZjY1ODgyMTM2NyByZWxlYXNlMjItbWFpbnQKKzI2NTI0IDhjMTQ0MjQ1YjMxNWNmNDQ0Y2FlMzczYTI1YmM5NTJmZTViYzk5MDEgbGVnYWN5LXRydW5rCisyNjUyNSA4ODNkNjlkZTU2MGJmZjkxMWY3MzJmYjkwNDI4ODdjNmJiNDQ1ZjYxIHJlbGVhc2UyMi1tYWludAorMjY1MjYgMTk1ZmU1ZmY1MGFiOTAwYjFjMjUyZDRjMzg4ZmZkYzgyYWI3MzY5ZSBsZWdhY3ktdHJ1bmsKKzI2NTI3IGYwZGM5N2JiOWMwZGZhNTcyNmVlYmUyNzkyNTE2YjM2M2ZkMGUwNjMgbGVnYWN5LXRydW5rCisyNjUyOCAwYWIyNDVkZTdkZGE3NGNkYzQ0ZDUzMmNmNmJiOThjMThmZmMyOWJkIGxlZ2FjeS10cnVuaworMjY1MjkgYjYzZjRhMTllYmRkMjdmODcyNjRhMGM5ZTVkYTVlMTRkY2YxMTY1YyBsZWdhY3ktdHJ1bmsKKzI2NTMwIDcxM2ZmODg5ZDA5NDg1OWQ0MTNmNGUxYjIxOTQ3Y2ZjMGRmMmUwNjIgbGVnYWN5LXRydW5rCisyNjUzMSAzYTBhMmYwNzdiOGYwMTA5ZDRiMGEwMWJlNDcyNDQ4NGEyMDYyMTdhIGxlZ2FjeS10cnVuaworMjY1MzIgZDVjZTdmZjUzMWJkMTZiZWQwMTYxYzdhNTMyNmQxNDgwZjhhNTNlZSByZWxlYXNlMjItbWFpbnQKKzI2NTMzIGYwMzU3MjA4NDg1MWI0OWVmOGZhMGQ5YTAzZDM0ZTBkN2M4NGI1MGQgbGVnYWN5LXRydW5rCisyNjUzNCAyZmM5NGJhNWRiZmYxMzI5MjdkY2U3ZjU1OTU0ZGE3ZGVkYTEzOTJiIGxlZ2FjeS10cnVuaworMjY1MzUgZTFkMGQ3YzY5OTlhNTE2NzM4ZDc2ZDU5MDQ0MmVjZGIzMzEzMWIzNiBsZWdhY3ktdHJ1bmsKKzI2NTM2IDE2MzI4NzYxZWFiZjU5NGNkMjNhM2I5NDk0NzYxNTJjZjUxOWM3NjIgbGVnYWN5LXRydW5rCisyNjUzNyA2OGQ3MGI0MTAwOWVkOTY0MTBjZjg0MmRkNDkzZDZjYjNlMmZkMTgyIGxlZ2FjeS10cnVuaworMjY1MzggZWY3M2ZmN2E5ODllN2YwZTU5NjQ5ZGViODFmNDQ1MmY0YjY5NDc3OSBsZWdhY3ktdHJ1bmsKKzI2NTM5IDhjZjFlZjgxNGVlNDNhOGI4Y2M4ZDU2MThhZDEwYmZkMDUwYjg2MDIgcmVsZWFzZTIyLW1haW50CisyNjU0MCA2MjE4ODI4YjBhMTEyYmRlYTg2NmNiMGU0ZWFiMjQxYTJiNjIwMDgzIGxlZ2FjeS10cnVuaworMjY1NDEgMWE2MTgxOTZlMTVhOWM1NzMwMzVkYjk2MzNlOWJiNDExZGQyMTBhZiByZWxlYXNlMjItbWFpbnQKKzI2NTQyIDFkZjkzMThiMmI4ZTA2ZTNmMDFhOWEyNjNjZWRhNWJiMjQ1ODNiZjggbGVnYWN5LXRydW5rCisyNjU0MyAxYTc3YWY2MTExMDU5ZmJkNzRkNzJhYTkyYTMwYWEwYjk2NTA3NjViIGxlZ2FjeS10cnVuaworMjY1NDQgOTk4Y2M0ODQ2NGZlZmFiN2YwMmZmMTQ2YmE4M2IwMGVjOWU2NjdiZCBsZWdhY3ktdHJ1bmsKKzI2NTQ1IGMyNzdlYmMzY2UwZjE5MTNiYTJlYzE1OWI4YjI4NGM0YjUwMWUyZDMgbGVnYWN5LXRydW5rCisyNjU0NiBlNzc5OTkxNjU5NmQzOWU1OTY1Y2ExOWQyMWY1MGRkZmM0YzJlNDEwIGxlZ2FjeS10cnVuaworMjY1NDcgYjQzNTJmNWEzNDUyMjEyNDY4ZDU4YWI5NmIzMTdmNmYyNDc1Y2I2YSBsZWdhY3ktdHJ1bmsKKzI2NTQ4IDdjMGU4ZGJjZjU3YTU5NGVlZGZhNDE2OGRmNDVjNDkxODQ0YmZlNTIgbGVnYWN5LXRydW5rCisyNjU0OSAyZmQ2M2Q3NWU5MmY5NTI4NTRjZjk3ZWY0ZjM4YTJkMjhjNDhmNThiIHJlbGVhc2UyMi1tYWludAorMjY1NTAgMzc0MzVmOWYwNGQ2NDU1MmZhMDA0ODZlYzgxYjM5MmQ3NDdjM2EzZSByZWxlYXNlMjItbWFpbnQKKzI2NTUxIDBiYzNhNDFkNGU0MGEyNmI2NzE3NzVkMTFlYjgzMTIxODQzYmI1YjMgbGVnYWN5LXRydW5rCisyNjU1MiBkNDc4ZjhhZmMzNmRkNTE4NGM4ZGQ3M2ZhYjhmZDg0ZmI3ZDk0MjA0IGxlZ2FjeS10cnVuaworMjY1NTMgZjFkNjE0MjEyOGQzZTQ5Mzk5MjdhOTliODBmZjFhYjdkMDY5Yjg1OCBsZWdhY3ktdHJ1bmsKKzI2NTU0IDUwOGZkOTUyYzllOWYyM2U0M2U5MDQwMjVjZTg5ODFhZDZhMjcxNmQgbGVnYWN5LXRydW5rCisyNjU1NSAwYzhlNzYyYTY3N2M0ODFjYmUyOTE1OGVjOTk2ZTdmNzQ3YWI4NzJhIHJlbGVhc2UyMS1tYWludAorMjY1NTYgZjNiZTA1ZTYyYWQxYThkNjhkMDg4YTRmNzIzYjJmYTY3MmRlMmQ4NSBsZWdhY3ktdHJ1bmsKKzI2NTU3IDYwZjI0MjU4OWMzMjdhOTM5NTAxMWQxNzJmOWQ0ZGQyOWMyNmYwZWMgbGVnYWN5LXRydW5rCisyNjU1OCA2NzU5YmUwODhkNjhiZGU2N2NiMzQxOGY2ODZlNmU4Mzc5MDMzNDFmIGxlZ2FjeS10cnVuaworMjY1NTkgOTUwYTIyZWI4Y2M4YWRlZjVhZDY5MjJiNjhmNDdlY2ZmMTg4ZjQxNSBsZWdhY3ktdHJ1bmsKKzI2NTYwIDIxN2VlYTlkNjYxNTk1ODEyNGI3ZmY1ODljNGRmMTA2NDY2MzFlYjUgbGVnYWN5LXRydW5rCisyNjU2MSBkMDc4Zjg0OGFjM2I4ODBmNWMxYzg3NTk5ZTU0MzE0Yzk1NThiNDMyIGxlZ2FjeS10cnVuaworMjY1NjIgYzQwOGU4YjI2NzVhYTJlYWU3MjExOGFjNDFlYzI3ZTg5MTRhOTI4YSBsZWdhY3ktdHJ1bmsKKzI2NTYzIDQ5YmY1YThmYTE1MTdlMWJmOTFhMDU3YTlhZjQ0MmYwOGEyMzI5MTQgbGVnYWN5LXRydW5rCisyNjU2NCA1ODNjMjI2YWZkZTZjYjIwNGEyYmRjYjdiMjYzZjkyMWMwYWRhMDg4IGxlZ2FjeS10cnVuaworMjY1NjUgNmU1NjhlZTMxYTljZWMwODMwYTVkOWIwYjA4OWY5MDMwM2NlMjcyZSBsZWdhY3ktdHJ1bmsKKzI2NTY2IDhmOWFkMmMwNWRhZGVhOWU1YzNlNDE0YjA3MDA5N2JjZjllM2IwNmQgbGVnYWN5LXRydW5rCisyNjU2NyBmZDYwOWQyYzE2NjkxZjAyMTAyZjg3OTU1Zjg1YjllODFlMTQxMWU3IGxlZ2FjeS10cnVuaworMjY1NjggNWMzMDE3NzU2NjVkOWNmYWQ4NWY5ZGY3YzM5MzNlNTE2MTQxNjZiMCBsZWdhY3ktdHJ1bmsKKzI2NTY5IDM4MmUzN2FjMzc0ZGEyY2E3NTRkNzY2YmY5ZWNhODgyNWIxMjE1MzIgbGVnYWN5LXRydW5rCisyNjU3MCA2YjJhZjZkYWZlN2M3M2Y1NjhhMmY0YzBkZTU5YTVlMTQ0YmM4ZGNkIGxlZ2FjeS10cnVuaworMjY1NzEgMGU0NDk3ZmIyZGU4ZDRhMTA5NDgxZmZkMjFmZmZjNzczODQyNzAwMSBsZWdhY3ktdHJ1bmsKKzI2NTcyIGUxNmRiZjg3NTMwMzczODNiZTg1YzE2OWMxZTI0ZTE4MjRlN2QzMzQgbGVnYWN5LXRydW5rCisyNjU3MyBlZjkxOWQyOTVhMTIwZDY1ODVhOGIwNDg5OGIwZTc3OTdjNTA1NjNlIGxlZ2FjeS10cnVuaworMjY1NzQgMTlmNTNhYTRlMWU1MTQ3NzMyODk0M2JmOTg1ZjA4NzhhMDFkNjMyMSBsZWdhY3ktdHJ1bmsKKzI2NTc1IGQ4ZTlmNmY1N2YxMzM2NTMzOWZiNDhjOWQ0YTEyOGYyYzlkODRhNWEgcmVsZWFzZTIyLW1haW50CisyNjU3NiBiMTlhNWFkYjY5OTAwNDkzYTZiNmJjMzAzZjM3NTlmMDU3ODcyYTE5IHJlbGVhc2UyMi1tYWludAorMjY1NzcgYmE4ODk5ODlhN2ViMDFmYWRmMGE2ZGIxMzY5Mjk5MTE3NGIzNThhYyBsZWdhY3ktdHJ1bmsKKzI2NTc4IGQ2MTRhZTk0OGJjM2FlM2I1YmViMWY3ZjI2YmE0YWMxZjgyNTYyZDEgbGVnYWN5LXRydW5rCisyNjU3OSBiMjM2ZDIwODMwZmU1M2Q1OGYyNGJlYWM3OWJkNTM4YjFlM2E3NDhiIGxlZ2FjeS10cnVuaworMjY1ODAgYjA4YjUxZGNlMjY0ZTNmNjQxODhlNzRkZDlkMGI5NWI2ODY5N2NhMiByZWxlYXNlMjItbWFpbnQKKzI2NTgxIGJkMDhjNjk1NWU5YmRkMTY0NDUwOWY4YmVjNWQ0NTNlZjgwZTVlMGIgbGVnYWN5LXRydW5rCisyNjU4MiA1NTRmMjE5N2E3YTc2YzhmNzM5MTMzNWE0ZTdiYzFhYzM0NzhiZWI3IGxlZ2FjeS10cnVuaworMjY1ODMgYWI0ZmE3OGFmZGRmNjE5YTI2YzdmY2NiZmVkZTY5MjllN2RmMzlkMyBsZWdhY3ktdHJ1bmsKKzI2NTg0IGY1YWVlYWFmMDM5NzRlMWU3ZTVlZjdhMGJhNjIyM2I4NzVkZWJkMWUgbGVnYWN5LXRydW5rCisyNjU4NSBlZDVkNzU5MTJkNjBkYTkxZDViOTNmMjM2NjEwMTc0ZDNmYWE0ZGFhIGxlZ2FjeS10cnVuaworMjY1ODYgZTYzOWUzNGVmOTAxMWU4ZjNhZjM4YjdjNWMxYWVkMTFiZGEwOTU1NyBsZWdhY3ktdHJ1bmsKKzI2NTg3IGRkMzUwYjYzOTMwOTk5NDY4ZDM4ZDBjY2MyN2UyMWM2ZGJlODFiYzkgcmVsZWFzZTIyLW1haW50CisyNjU4OCBhNDMxODkyM2M3YWEzMzQ4NjRkMWI2YzhiMzU2Y2E1MTk0NDM1NzM1IGxlZ2FjeS10cnVuaworMjY1ODkgNmRiNmUzZGM4MzY2YmVjNjY2NDI1ZTY3Y2UwMmI3YTM0ZDE0ODE1NCBsZWdhY3ktdHJ1bmsKKzI2NTkwIDJiNDdkMGRjZmE2NjZhOGQ1ODFjMzRiMGE2YWJiNzM4ZDUxNTk1ZWUgbGVnYWN5LXRydW5rCisyNjU5MSA4NjMxMjU1NDUzMDE1OTMwNmI0ZmRjODQ0ZWZkNDYwY2FkYTUxNjM1IGxlZ2FjeS10cnVuaworMjY1OTIgOGJiOTBlOGJmMzYzZDNkMGY0ZGVmYjE3MzI3M2U1M2U3NmVkMTE4YSByZWxlYXNlMjEtbWFpbnQKKzI2NTkzIGQzMjU0MzMzN2EyMTc1ZTViZGU3Mzg5OTM5MGQxYjIxMDQyYTFjODQgcmVsZWFzZTIxLW1haW50CisyNjU5NCA0MGExODgwNTUzNjkxZmNjOTliM2U1YWNiODQ1YzI1NjkyYWFmMjdiIGxlZ2FjeS10cnVuaworMjY1OTUgYWVmMjQ4YzE2NDVhMjQyYmJjNzE1ZTA2MzFjZTkwNmE0ZTEwYmFlMCByZWxlYXNlMjEtbWFpbnQKKzI2NTk2IDc3MGMyZDJmNTQ3Mjk5YmQ1MTIzMDYwMTVlZGM1MTIyNGE0MjA0ZDUgbGVnYWN5LXRydW5rCisyNjU5NyBmNTFkMWEyZDRhNGExZmFkMWFhM2JhNDZkZTRiNGRiNWMwNDJhMDY2IHJlbGVhc2UyMi1tYWludAorMjY1OTggNWQxMzVlNDE0Yzc2NDMyZGQzZTIxNDIxOTkxYzJmMjllMTRkYmQ3OSBsZWdhY3ktdHJ1bmsKKzI2NTk5IGQzMjhlNWJiOGE4ODBmNjQ4MjU4YjI4YjE1MTFhODdlNTk0MzhhNmIgcmVsZWFzZTIyLW1haW50CisyNjYwMCBkYWJiMGEzZjQ3YTU1NDIwMjA1MWZiOGQ1ZDY3OGJkZGIyYjJkNmRjIGxlZ2FjeS10cnVuaworMjY2MDEgNzZjNDUwMzcxMTNmZGEzNjNjMjA5NWYyYjJlNDVjOGVmNTA0ZGI3NSBsZWdhY3ktdHJ1bmsKKzI2NjAyIDMwNDU4YTExYjVlMDkzYWQ1MzBhZmY5ZTg0NTQzYWVmODc3MjAxY2QgbGVnYWN5LXRydW5rCisyNjYwMyA0ZTIzNGI4NzE3MGIwOGVlMjZhNWRhZDlhOWI3YzhiNDZkOGIzMjJlIGxlZ2FjeS10cnVuaworMjY2MDQgMjRiM2VhZDg5Y2FlODc4MzYwZTQzYjllM2UyY2VmM2FlMWVkZTY1MiBsZWdhY3ktdHJ1bmsKKzI2NjA1IDhmZWMxMTBlOWQwMjA4NDkwZGM5MGFkMmY2ZmE3NjA2ZjdmODFiOTkgbGVnYWN5LXRydW5rCisyNjYwNiBlMDQ3MGYyZGQ0MTBlOGJiNzUyMWY0MzgzZWU4YzAwNWJlMzFmZjY4IGxlZ2FjeS10cnVuaworMjY2MDcgNWZkYWRjOTQyNjY1MDJkNzI2NzNkZDJmM2ZmMTI1NDM0ODgwNTc4MyBsZWdhY3ktdHJ1bmsKKzI2NjA4IGIwYjYzMjEwNmZkNzY1ZDFjYWJkOWNmODE4YzU0ZTZlNzNkMzg2MDcgbGVnYWN5LXRydW5rCisyNjYwOSA5NzY1MGVkZjU4YmIxN2RiMzk2MDIyNWU4ZWQxYWYxYmU2OTBlNWZkIGxlZ2FjeS10cnVuaworMjY2MTAgNWU4MGFkMzZkOGZmYmM0NGIxNDJiN2ZiNDhmNWYxNWEyZTk5ZDYxOSBsZWdhY3ktdHJ1bmsKKzI2NjExIDI4NGNmY2E3NGRmNDBkNjEzNTZkNDFmYmEwY2I2ZjEwOWVmMGFjY2IgbGVnYWN5LXRydW5rCisyNjYxMiA0MDViMjkxYzMyMWRhMGU5MWMxMTNhZmIwNDljNzRhYmM2ZmZiNDQwIGxlZ2FjeS10cnVuaworMjY2MTMgNGYzMzVjYTNmMTFjYzE4NDQxODFjMzI2ZDAxOWM1NWJlMjYzNGU0NCBsZWdhY3ktdHJ1bmsKKzI2NjE0IDcyY2EwZmQ0ZGNhNmJmNTY1OGEyMGVmNjUzM2MxZGQzZGUwYTQyOWYgbGVnYWN5LXRydW5rCisyNjYxNSA5YjE3NTAxOGZkZWY3ODVjYTJjOWY3ZTk1MjBjYjU2NjIxMWVjNDUzIGxlZ2FjeS10cnVuaworMjY2MTYgMjkyMjExMzIxNzY5N2MxYjA3MWNiNzkzNGQ4ZGI1ZWY0ZDBiMjcwMiByZWxlYXNlMjEtbWFpbnQKKzI2NjE3IGE4MzlhNmJlODU3ODhkNTAzNzA0YWY0ZjQ2YzdmMjk2MzUzNGVjY2MgcmVsZWFzZTIyLW1haW50CisyNjYxOCA2NjdiMDI2YTg5ZDkwZTJlNDhjMWYyMDE4OTI2MGUzYzAyNjRhZGM3IGxlZ2FjeS10cnVuaworMjY2MTkgOWE5YmVjMTBhYThjNmNkMjhiNzI5ZWMwMDAwZjRlNjE2NjcxZjczOCBsZWdhY3ktdHJ1bmsKKzI2NjIwIDFjZjg4NTkzMTY2OTM5MDcyOGJmNzliN2MzOTZkZTcwNjcwYmE1MzkgbGVnYWN5LXRydW5rCisyNjYyMSA5ZTM1MzJiNzU0NzFlNjhmNmNjZjY5ODk2ZDkxM2JmODc4NWU5NThmIGxlZ2FjeS10cnVuaworMjY2MjIgZTUyNDlhNmNjMWQ4N2ZlNmMzZTMyOTQ2ODg0NDk3NjAzYTA5OGM0MCBsZWdhY3ktdHJ1bmsKKzI2NjIzIDczNTM5NzdkNmI2NGFjZjIwYmYyNTVmN2JjZjFkYWMxNDczM2UyNWMgbGVnYWN5LXRydW5rCisyNjYyNCAzNzgxMmYyYmExYWFiZWI1OGFiNDE4M2NlMWU0ZTE3NGI1NjBjYTA4IGxlZ2FjeS10cnVuaworMjY2MjUgYjU3MmY3YTBiYjU2MzVjNTZmNGRmN2RiOTU0Yjk4MDdiMzdiZTAyOCBsZWdhY3ktdHJ1bmsKKzI2NjI2IDhkNGIyNWNlZWVmZTlmOTE4ZWNmNWVmMTU3Y2EwZWVkMWViYmY4MjAgbGVnYWN5LXRydW5rCisyNjYyNyA3YjY2Y2QxNWRjZTk5MDMxYTk3YTQwNmMxNDRhN2MyMzM3OTMzNmJhIGxlZ2FjeS10cnVuaworMjY2MjggMjFjZTVkNWUwZWM3MTRhOTZjYjY3Mjc1MDAzMTcxN2JmNzgzODc5NiBsZWdhY3ktdHJ1bmsKKzI2NjI5IDQ5MzIwNmI3MDFkYjUxNzQxOWNkMmY4N2UzNDE3NTBmNGM2YjM3M2YgcmVsZWFzZTIyLW1haW50CisyNjYzMCBlYzJhNTU1OWU3Njk1YmJkNmU3NTZmZTVmYjYxZWIyZWZhZDYzNjY0IHJlbGVhc2UyMi1tYWludAorMjY2MzEgZjk3MDU4OGU4OWIxMGQzMmVlYzA5ZDcyZjkwN2UxMzFjY2M1M2FiMiBsZWdhY3ktdHJ1bmsKKzI2NjMyIDgwM2U2YTY5NTMwNjRjMzk5ZTMzNzhiM2E1YTNmYTJiNzJmNTk5YjYgbGVnYWN5LXRydW5rCisyNjYzMyA1ODI4NTVmNmQzNWJlZGZiMGIxNjdjYWNiMmNkYjFmZGE2YWQ3ZDkxIGxlZ2FjeS10cnVuaworMjY2MzQgNzBhMDg5NzIyMzkzNWJmMjFjYTJmMDQ0MDQ4MDY4NDRjMTdmYTNiMyBsZWdhY3ktdHJ1bmsKKzI2NjM1IDI5Y2E5ZTEyYmYxMDE5YTJjOWI3ZTllZDA1YTYxOThhMjdhNWEwM2UgbGVnYWN5LXRydW5rCisyNjYzNiBkNDcyOTBkZDJkNTdlNjUxNjU2MTRkZjRiMWY5ZWU4YzhlMGE2ZWRkIGxlZ2FjeS10cnVuaworMjY2MzcgNDY0NTBmMTdhMDcwNTYxYzZmNWFjODcyMTIwZjI3NjQ1ZmQ4OGQ5MSBsZWdhY3ktdHJ1bmsKKzI2NjM4IDMxNGUwOGU4MDkwZmI0ZDkwYTZmYjRjNWIxMTk1MmEyNGYyNWFmM2EgbGVnYWN5LXRydW5rCisyNjYzOSA1ZjVjZWEyNzJiNDYyMzFjMDhlMTBlNjJjYzJlMzI3ZmFkYjk0M2ZjIGxlZ2FjeS10cnVuaworMjY2NDAgMjAwNTU5ZmNjNjY0ZjdiNjZiOTM4MjgyNTFlMmNkODFiMjNhNWE3YiBsZWdhY3ktdHJ1bmsKKzI2NjQxIDllMjJhODcwMmRlMmQ4NGQ0OGNlZGE4NzBkZGIwZjcxOGE2MDMwZDIgbGVnYWN5LXRydW5rCisyNjY0MiBmNWZkN2UyOTU4OTc1OTVjZjEyNzZkMzViZmUzNTI3MzJiNjZhOTZlIGxlZ2FjeS10cnVuaworMjY2NDMgYTRlNzVkNTNkMzJiNGY1NzdiNTYxYWQ1ZmEwNGE0NmFlZDkyNmQ5NyBsZWdhY3ktdHJ1bmsKKzI2NjQ0IDNlZGRkOWQ2OGFmN2RiYzA0NWYxZDY5YThmMzAyYjdkMTIyYjI1YmEgcmVsZWFzZTIyLW1haW50CisyNjY0NSAwMGY2NjM2MGJlMTk4NjA2NTIzNDNiYWI3OWVhMTYyMTEyMGJlNjYzIGxlZ2FjeS10cnVuaworMjY2NDYgYWZlMjYzNjcyZmQ4NGJhYmJkMzUzODVhNDI4Y2ZkNTIxNDExZmU3NCBsZWdhY3ktdHJ1bmsKKzI2NjQ3IGUxMTQ3MWEwNjI2YzEyMmQ0NWE5MTg4NzQ4MjkxZGViMzdjYzYyZTkgbGVnYWN5LXRydW5rCisyNjY0OCBiNjBiNzNkNDFlYjRhODNkZTRmMWFkNjE4OThmNjhkMTY5ZjVhNTUwIGxlZ2FjeS10cnVuaworMjY2NDkgNDcyOGJlZGY0Yjc4OWE3MDUxOGU4MTJmZWIzNjgxYjE3MTM2Y2Q2YiByZWxlYXNlMjItbWFpbnQKKzI2NjUwIDdjNjA5NGIxOGQxNjEwMGFlOWQ0MmQ0NzhiNDczYTM2MWExODdiMDggbGVnYWN5LXRydW5rCisyNjY1MSA1ZGQ1MmE5YjA0MzhhODY5NWZjMjg0Mzc0Y2E1ZmE1MmUwZWNmODA3IHJlbGVhc2UyMS1tYWludAorMjY2NTIgNjU2MTBiYzRlNmE1NzNmMDQ3YzU0ZDJkZDk5NTA5MTEzZDQ0YThkOCBsZWdhY3ktdHJ1bmsKKzI2NjUzIGI5M2VkMWE0ZTQ5ZjFhODY5MmUwMThhMDlkYTUxNjQzY2RiMTRhZTMgcmVsZWFzZTIyLW1haW50CisyNjY1NCA4ZjFiMzcxZmZiYWY2MWQ3YWIyOTNkYjQ3MDcyODVkODUyOTk5MzBmIGxlZ2FjeS10cnVuaworMjY2NTUgYjczNWU4OWNjZGE3NGY4MGQ3MDJmMzNiMmY2YzI3ZGE0ZGMxYzU0NiBsZWdhY3ktdHJ1bmsKKzI2NjU2IDZmYTc2YjRlNTlmZWZlODFjNTExMTk4YzdmODk2NWQwMmEyNzkzNzQgbGVnYWN5LXRydW5rCisyNjY1NyAxN2NhZmU4MDVmMDQ1ZjY1MmE2NTIzNDlkOWY4NTNjODgwNGZjZjkwIGxlZ2FjeS10cnVuaworMjY2NTggMDhlNmY5NGYzYWIwMDc5ODQ2MjI1Y2MzYzZlODg0MzIwNTI5NjRmNiBsZWdhY3ktdHJ1bmsKKzI2NjU5IDVhNmJlOGZhOGRlMjRlNmM3YWZhMzc5N2Q1MzcxNTkwZjJmYjRkZDggbGVnYWN5LXRydW5rCisyNjY2MCAwMTQ3OGExMzI5MDg5YjgwMjljZTFjZWE4MzdiYzMzNGVmMzA5NTA0IGxlZ2FjeS10cnVuaworMjY2NjEgYjVmNmU5ZjZlN2Y0Yjc5OGRlMDg2MDc2YjUyMDJlM2E4YzBjNjllNiBsZWdhY3ktdHJ1bmsKKzI2NjYyIDU3MzJhOWNjOTFjN2E5NDJiMGJmZmEzNzg4ZDA2YWViYjdiOWJlODAgbGVnYWN5LXRydW5rCisyNjY2MyA1M2ViYWU3ODIzZDk3NDJmMzUxNGJjZGQxODU5OGVhYTM3MjA3MWMwIGxlZ2FjeS10cnVuaworMjY2NjQgYTIxNTMyODU2NTI0NjAwOTY5NjJkM2ZjNGZiMWZiMmU0MTc1MTY3OSBsZWdhY3ktdHJ1bmsKKzI2NjY1IDIwYTdiMmNmM2MxZmUzOTVlN2U1YjczYTljZDI5MTRmMTE3NTA2MzQgbGVnYWN5LXRydW5rCisyNjY2NiBlZjZlMzFmMGNlZTEyNzYxNmI3YjcwYWVhNDFiYjQyNzc5MDRkMDRiIGxlZ2FjeS10cnVuaworMjY2NjcgY2Y5NjQwYmU2ZjhhOTUyMGUzZjIxY2QxYzZhYWVjMGFkMGMyNzVkMCBsZWdhY3ktdHJ1bmsKKzI2NjY4IDhhZTdiNDBhYzZkMDdlYmVkNjU3MGQ0MDVkYWQ3MWUwZWFlZTc2OGYgcmVsZWFzZTIyLW1haW50CisyNjY2OSBkMDUzMmFlMDVlZDcyYWMyYzcxYTkzZDJiMDk0MjQ5MzU0MTc3N2VkIHJlbGVhc2UyMi1tYWludAorMjY2NzAgNGNlNjExNjUwZDBjZTg3ZTIzNzAzMDJiOTZiM2U5NTQxZDFhYjg3OCByZWxlYXNlMjItbWFpbnQKKzI2NjcxIDAxNzY1ZDMwNTMyZTI5ZDQ2ZmJiOTQ0ZGFjODQ4ZWMwOTAxZDA4NjkgcmVsZWFzZTIyLW1haW50CisyNjY3MiBiYTY3MjFhZTRiODA5MzNjYjViODJlMDM1ZDcwYjc4MWM0M2QyZjk5IHJlbGVhc2UyMS1tYWludAorMjY2NzMgNWRiYzc5ZWUwODg1YmQ1NjNjMzRmYjNhZGEwMTRlMDEyN2VhZTBlZSByZWxlYXNlMjEtbWFpbnQKKzI2Njc0IDBiMDg5YzhhYzA3NzMwMTJlYzYwZjY5M2VjZmRmMDM1N2UxNTQyNWIgcmVsZWFzZTIyLW1haW50CisyNjY3NSBhYWI0MjczYTdjZjcxNjczOWFkNmFlNjZmZTZiODQ2OGMxN2VjYjk2IHJlbGVhc2UyMi1tYWludAorMjY2NzYgNGM4ZjVhODkwZjk4YmVlZWYzNzZiYWFiYjNhMWI2ZmIxNDA4Y2NhMCBsZWdhY3ktdHJ1bmsKKzI2Njc3IDEzMzc2MzMzMjc2NzM0MDNhZjhjMGMyZjNmM2U3Y2FiN2YyMTRkZGYgbGVnYWN5LXRydW5rCisyNjY3OCBhZjFmZjQxYmU0N2I4NDUzMDZjNmViZjdkMmZkNDY3NDE4MTQ4YWI0IGxlZ2FjeS10cnVuaworMjY2NzkgNDZjZmI4NWYwYWFlNzYwNDA3ZTM0YjNiNGI3NTI4ODQwZjVmMzJkNiByZWxlYXNlMjEtbWFpbnQKKzI2NjgwIGE0NDNlNWU1ZWNlN2Y2MWMyY2FiY2FhMmU2YzcwYjU0MzA2ZDQ4MjkgcmVsZWFzZTIyLW1haW50CisyNjY4MSAyM2JmNjg3NzhhMmE4NWMyOTFhYmFmMWZkMTdkZWMyOTZmMmExOWJjIGxlZ2FjeS10cnVuaworMjY2ODIgMzg4NDQ5MzcwOTQ2MjQ3ZjA3ZTc3YTg3ZTNjOWI1MjRiMTI3Yjk0MCBsZWdhY3ktdHJ1bmsKKzI2NjgzIDE3NGJhMDNjODlmYjQ4MTNhNGE4ZmFjYjRjOGVhZmQxZWY3Y2IzMTAgbGVnYWN5LXRydW5rCisyNjY4NCBhZjQ5OWI1MGEwOTQ2NDNjNzdmN2I2ZDEyNzc3MTMyZmU3Yzc4ZDM0IGxlZ2FjeS10cnVuaworMjY2ODUgM2M3YjIyZDExMmQzNWUzY2YyM2VlNzNjM2UyOTU5NmVkNmI5M2U3YSByZWxlYXNlMjEtbWFpbnQKKzI2Njg2IDE4MDZkMDJjMDhjNDQ3YTUyZmFjMTk0Njg1NTA5YzQxNTMwN2RiOWEgcmVsZWFzZTIyLW1haW50CisyNjY4NyA2ODkyNmQwYWFkNDAzYmY4YTRkYWJkZjAzMWMzYjk0ZjkwNzU1N2EzIGxlZ2FjeS10cnVuaworMjY2ODggYmEyOTAxMjg3Y2I3Y2E4NmJmY2QzMTkxOTEyZjg2YjE4MThjYTQ5MyBsZWdhY3ktdHJ1bmsKKzI2Njg5IDhiNTkyNjAzMmI1NmEyMDVhNGNhZWYzZWUxM2Y2M2JmNmNlMWQ1MmIgcmVsZWFzZTIyLW1haW50CisyNjY5MCBmZmQ1ZDg2ZTk2Y2ViMGY5MjQxMWZhZGMzNzY1YzBmY2U4ZWUzODFhIHJlbGVhc2UyMS1tYWludAorMjY2OTEgYzMzMDc3ZGMwYzgzYjljMTlkYTYyNzk0MWMwNTBhOWVlY2EzZGFlYiBsZWdhY3ktdHJ1bmsKKzI2NjkyIGFhZTZkYzZiMmE1ODk4ZTMyYzEwMGM3ZjQ1ODEwNjJjNWZkY2NmYTUgbGVnYWN5LXRydW5rCisyNjY5MyBjMWQxYWUxNWRlOTJjOWFmNTQ2NjlmMmQ5NzRiMzAwZThmYTM4ODZlIGxlZ2FjeS10cnVuaworMjY2OTQgY2QwMmEzNjcwNGZlZjIzYWJhNTM5MTExODc5NWY2NTljMjIzMDdhZCBsZWdhY3ktdHJ1bmsKKzI2Njk1IGM5MTdmZTliYzY1NGZlOTY2MDYxNzcwZGM0MGQ0ZGI1ZGM0ODU5YzkgbGVnYWN5LXRydW5rCisyNjY5NiAzZGViYzhjMzRjYzkxMGM4MjM3MDhkZGJjNWFlMmI1MGU5OGEwY2JlIGxlZ2FjeS10cnVuaworMjY2OTcgODdjOThhZjYxZmM0YWI5NWNmMDM0ZmZiY2ZmOTZkZmVmODk1OTA2NiByZWxlYXNlMjItbWFpbnQKKzI2Njk4IDgzODQyN2YwYWYyMzJkMTRkYTQ2OWUxZTFhMzAyMmZhZjgzNDA0NzkgcmVsZWFzZTIyLW1haW50CisyNjY5OSA5N2UwYjUwNGMwMDA5ODgxYWViOTRlYWJiOTU2ODUyMDEwNTc5ZTg1IHJlbGVhc2UyMS1tYWludAorMjY3MDAgMDJkNTI4M2IxZTIxZmM2MmU2ZTlhYzE5Yjg2Zjg1NmE5MDYxZGZhNiByZWxlYXNlMjEtbWFpbnQKKzI2NzAxIDM2OTdhMzM2NDAwZmFiYzI2MTQwNjQ2NmE2NzAxN2ViYTBmMzFhMzggbGVnYWN5LXRydW5rCisyNjcwMiA1NTQyM2MxYWJjZDE0OWRlODgzMGU1ZmE2OGY3YjNkYmQ3ZWQwZGVkIHJlbGVhc2UyMi1tYWludAorMjY3MDMgMTMwNTZiNjI2N2EyNWYxNmVjYTBlYWJmOWM2NmE3Yzc2ZmVlY2EwZiByZWxlYXNlMjEtbWFpbnQKKzI2NzA0IDAzYjFlOTg5YjFkOTc3NDU4ZDc3YmM2ZDM5NjUxNmIwZGQwNWNkYTAgbGVnYWN5LXRydW5rCisyNjcwNSBiZmZjNzIzNmM0YmEyODkxNDdkZThkZDhhYWI3YTM3MDljODE1NGRiIGxlZ2FjeS10cnVuaworMjY3MDYgZDkzZjUzN2E3NTJiODg2ZWRlYTY0YWRmYmUxOGNkOWM4OGI1NGQ3MyBsZWdhY3ktdHJ1bmsKKzI2NzA3IDg3YzcxNmIyOGEzZWNmMGIwZmI3MGRmNGY3YTJiMTU4NTEwNTI5MWEgbGVnYWN5LXRydW5rCisyNjcwOCAyZDJmYWE1MWRjZmRhZThjZTNlMDEyOTA0NDRlMjY4OGM0NDA2MjIyIGxlZ2FjeS10cnVuaworMjY3MDkgYWEwODU1NGQxYTliNDFhYjlhMjMyNDc2YzBkMGNiNDY2NjliYmM5NyBsZWdhY3ktdHJ1bmsKKzI2NzEwIDFjOWNlMzRkNTI5ZGMzOGYyOTYwN2M0ZGNhNjc1OTMwZGE0ODk1ODIgcmVsZWFzZTIyLW1haW50CisyNjcxMSBiNDkxYWI3ODc3ZDJkMmEyNWE5NzkzNGJiYjBmMjkwMjAyNDg2OWM4IGxlZ2FjeS10cnVuaworMjY3MTIgMjM4ZGZlYzljODk5ZThlMzNkYzQ3ODEwYjU3YzkxNTc5ZmNkYTM3YSByZWxlYXNlMjItbWFpbnQKKzI2NzEzIDk4MWM2YjZmZjJmMTcyMDE5YTlkNDAwOWJlYjNiYWMyOWEyMDhmM2QgcmVsZWFzZTIxLW1haW50CisyNjcxNCA5YzllMDczNTlkNmU2NDA0N2E5Y2ZhZWVlNzc2YjI1Y2QwMTgyNjI1IHJlbGVhc2UyMS1tYWludAorMjY3MTUgZDQ2NmJjMTlmNzMxMmFlNTc3MGJlYTE0MjI1YTg0YWU5OGY0MmMwYSBsZWdhY3ktdHJ1bmsKKzI2NzE2IDY3YmNiNGY1MjM3ZjI0NTI2MDc5Y2U1ZWYzMjBhYzBkYmY2MjVlZTMgcmVsZWFzZTIyLW1haW50CisyNjcxNyAwYTRkNmIyNDBhYjI0ODc3YmRlZTg0MWYxN2JmY2ZlZWNiYzliNjJmIGxlZ2FjeS10cnVuaworMjY3MTggMDY2ZDgyNzVhZDY0M2FiZWJmODNiZDFhZjgzYWNlODQ0YWQwMzJiZiBsZWdhY3ktdHJ1bmsKKzI2NzE5IGZkNjlmM2VlNzdlYWMxZjYyYTI2NzQyMTM0NmRkODNiODJiYjdkNjEgcmVsZWFzZTIyLW1haW50CisyNjcyMCBlY2YwNzBjMzQ5OTllNjU2MzdhYzlhZDM4MWVmY2M4MDdmZmJmMGVjIHJlbGVhc2UyMi1tYWludAorMjY3MjEgN2JmN2NmM2EzNWI5MDQ0Y2RhYzMwZDNlMjhkZTBjZmVjYTVhZGM0ZCBsZWdhY3ktdHJ1bmsKKzI2NzIyIGFlZThmMTZmMjc3NDFkMTY4MjA4NTQxMjhhYWNjOTVjOTAwNDMxMTMgbGVnYWN5LXRydW5rCisyNjcyMyAxOGY4YTdiNTZmODkwMDIzZWIwZWFlMDk2YmE2NWE5NmQ2OGNlNzI3IGxlZ2FjeS10cnVuaworMjY3MjQgMzY4NDBhOTg5NzIyZDdlODQ0M2U4NmU4OWEyZGUxYzhhMmZkODlkYiBsZWdhY3ktdHJ1bmsKKzI2NzI1IGJlYzE1N2RiZWUyZTA4YTZiMjU2NjNkYjk5NDRkNGMyYTJjMjdjZTggbGVnYWN5LXRydW5rCisyNjcyNiAzZWZkMzRmZTY2NjgwNjRhYTQzZjNhMTE5ZGJlN2RkZmFmMzE4ZmZkIGxlZ2FjeS10cnVuaworMjY3MjcgM2IzMjNkZjk0NWJiNmJmMTljZmFlMzY1YmRkOWRmOWU2NGQ2MzZjZSBsZWdhY3ktdHJ1bmsKKzI2NzI4IGIyN2YzNmNmM2QzZTAyM2RjZWFhNmU3NzBhYTc3ODljODJkMGNlN2UgbGVnYWN5LXRydW5rCisyNjcyOSBkM2Q4NTdhODgyZjBmODM5Yjc3MWI1YzdjY2RiMGNmN2FmYmI5Yzc5IGxlZ2FjeS10cnVuaworMjY3MzAgN2VkNDlhZjA0OGJhMDkzZTQ3Mzg0ZTc0NjRmNzY0ZjhjYmMyOTgwYyBsZWdhY3ktdHJ1bmsKKzI2NzMxIDEwNWJlOTM2YjVjMzZkNjM3OGU3MTdhNTMyODA2Y2RjZDg3MWY4OWUgbGVnYWN5LXRydW5rCisyNjczMiBhZDk3ZmNlOWRjZmUyNWVjNjhhNjQ2M2YwYjBmMTE0NTI1YjE0ZmZlIGxlZ2FjeS10cnVuaworMjY3MzMgYzU2ODg4ZDE3MDk4NGUxMzJmM2ZlYzg4YmRmODE4NDkyYmE3MjFjNCByZWxlYXNlMjEtbWFpbnQKKzI2NzM0IDRhZjY2OWY5YzQyZTA4MmIxYWU3ZWY1OTlhZDJjZDY1NDM0MmE4MjIgbGVnYWN5LXRydW5rCisyNjczNSA2NzUxZThiY2ZkMjkzZmNhYjA3NjQwZDNmZTI0NjkwMGE1M2Q3MmI0IHJlbGVhc2UyMi1tYWludAorMjY3MzYgM2I4MjU2NzVkMTE5NDQ3MjRhZmFiODdkNGJhYjEzYjQyYjYzZjgyNyByZWxlYXNlMjItbWFpbnQKKzI2NzM3IGNiYmUyODllN2MyZTkyODVmMzhjZTRmYTcwYWMzZWJkNjcxZGIwODQgbGVnYWN5LXRydW5rCisyNjczOCAyZjdkODY5ZGFkNGRmN2JiZGY2NzExOTFmZTZkZWVhYzAxYWQ5MGZlIGxlZ2FjeS10cnVuaworMjY3MzkgNGQ2YmVhYjc2NmUyNzRkOWY5ZmUzMjE2OWRiZDJkMTM1MzAwNDQ1NyBsZWdhY3ktdHJ1bmsKKzI2NzQwIGU1ZGYwODZlZDQ1NTE4NTBlYWI5YTk2OTUyNjY5MDc4NGY2ODgzMjUgbGVnYWN5LXRydW5rCisyNjc0MSA5YmUwMWI3YjZjODBhYmRjOWQzMWRjMDA2OTQzZTJlOGZkMzZmNGI4IGxlZ2FjeS10cnVuaworMjY3NDIgODJhODUwZGI3ZWM1NzdlODI3MDA4MDdhODU3ZjVjZGU1YzllZDBhYyBsZWdhY3ktdHJ1bmsKKzI2NzQzIDEzMDNkYzA3MjNmY2MxMjNjOWNmMDU4Njk0NjFmYjdhNTRhZTRlNzggbGVnYWN5LXRydW5rCisyNjc0NCBjYTkwN2YyOGUyZDU1ODJhY2UxNjJjYzc1ODQyNzVmYWY0ZWM1NTE3IGxlZ2FjeS10cnVuaworMjY3NDUgMDcxOWEzNzdhNjE2YzEzOWZiZDBkODdmNGMzMGM4MWE4NWJmMmIxNiByZWxlYXNlMjItbWFpbnQKKzI2NzQ2IDQyMjc4NDcwOTM4MGFhNGVhN2ZiNGQzNjRiNmYwYjQ1YTFjOWVlMTMgcmVsZWFzZTIxLW1haW50CisyNjc0NyBmOGZmOWZhYjkyY2VlNDU0ZmM5MzFiYWE5YzE2NjcyMTBlZDBiMWYxIGxlZ2FjeS10cnVuaworMjY3NDggYTljOTgxODNmZjg3ZmU2NjU4ZGQ3ZDlkYzNkMDM2ZTkyYzYxN2IyNSBsZWdhY3ktdHJ1bmsKKzI2NzQ5IDZhN2IyNmJkZTBlOGI5Yzg2MWQ0ZGRjYTQ0Y2M5NmI1ODQ5MjFmYmMgcmVsZWFzZTIyLW1haW50CisyNjc1MCBjNzhiNTJkYWM5NjMwYzA0M2M2YWVlMzNjZTFiYjhiNmE0N2E0NmQ0IGxlZ2FjeS10cnVuaworMjY3NTEgNDBmZTE4M2E4OTIyMDJkNWM2NDc3ZDRlY2MyYTllODk2MTZiOTRmNiBsZWdhY3ktdHJ1bmsKKzI2NzUyIGZhNzMyMGNiMzdkOTVlYzRmZjg1OTAwNzUwNzhjMGEwZmM5YjJlZmEgbGVnYWN5LXRydW5rCisyNjc1MyAyMzAwNzM0MTQ1MDQwYmNhODFhZWJiZDhjYjZkODBlNWU0NjNmNjZjIGxlZ2FjeS10cnVuaworMjY3NTQgZGZkOThlOTUyMWIzN2VmOTA5YTA3ZWIzMjFjOTZkNGY0NTQ2Y2IxYSBsZWdhY3ktdHJ1bmsKKzI2NzU1IDQ0ZmVjYzMzODg5ZDhjMDBkZDExZGZmODhiNGI0ZjI5YzEwMDAyYzAgbGVnYWN5LXRydW5rCisyNjc1NiBiZmU5MWUxZTMxYjIwMDYyNzY5M2MzZjBkMjU5OGQ0OTFjYTQ4M2I5IGxlZ2FjeS10cnVuaworMjY3NTcgMzg4NDFiZWEyNGZkZGRlOTUzY2NhODc1MGQ3M2E5YTM3MmJkYzFmMiBsZWdhY3ktdHJ1bmsKKzI2NzU4IDBkODc0MDA5NGJlY2EyNmQ3MGVlNjVkZTQyM2NhMTNhNzQ3MGExNWUgbGVnYWN5LXRydW5rCisyNjc1OSA5NTZkMDM4YjFkZDI2ZjU2YzE1N2M2NDAyNzNkZjMwNzdjNDM5YWY2IGxlZ2FjeS10cnVuaworMjY3NjAgYTg2OGJhZWJlOTU2NDY1NmUzNThiZGZiMjVkNGRhN2M2N2I1ZGUwNyBsZWdhY3ktdHJ1bmsKKzI2NzYxIDkzNTQyZWZhYzA2NjY5YmFhYTg0YTc5MDUzYjI4ZDMxN2Q0MjQwYTMgbGVnYWN5LXRydW5rCisyNjc2MiA0ZTc4MTVjOTVkM2VhYTk0ZDMwMzFlNGI1OTZkMWQzM2ZhMTlkNTQxIGxlZ2FjeS10cnVuaworMjY3NjMgYjk3MjZiYTcxYWEzZjVlN2IyYzc1Yjc0MmFkYmJlYWYzMGVmZDA1MSBsZWdhY3ktdHJ1bmsKKzI2NzY0IGM1YzJiMjRkYjhhNzExOTUwODk5YWYzNGQwYzYxMjMxZTI0NTgyZTEgbGVnYWN5LXRydW5rCisyNjc2NSBiMmFhMjY0OGRmMjdiMGFlNmQ2OWZhMDZhZGI4NTgxNzIyNTBlZmY1IGxlZ2FjeS10cnVuaworMjY3NjYgOTc3ZTUzNGZjNmM3NzQyMjBjZDI1OGJiZWQ2ZmEzZTBmM2NiZGMxYyBsZWdhY3ktdHJ1bmsKKzI2NzY3IGUwZWQ2OGFkYmEzMzI3NTZmNDIzYTMyZTYyZGI4YzI2MTUwZmMxZTMgbGVnYWN5LXRydW5rCisyNjc2OCBlZTI5MmE1M2U1ZmNlODk0ZjA1YTVkMGE2NGJjMTk2Nzg4MjE1NTMyIHJlbGVhc2UyMi1tYWludAorMjY3NjkgYzVjNGMxMTIxMDg3Nzk3ZGVhMTBmM2I0MjEyOTk5MTY3YTcwN2U1OSBsZWdhY3ktdHJ1bmsKKzI2NzcwIDEwYWUyZDYxMWFlOTQxN2Q2OGJhMmUxODFjMDRlNmY0NDhlYjIxYjcgbGVnYWN5LXRydW5rCisyNjc3MSA0NzMzODVmY2EyOTkyODgzZmJlOTQ2NDg1ZTI5MzFiMTMyNjA4NjVlIGxlZ2FjeS10cnVuaworMjY3NzIgOTRiZjZhY2VmZjc4OGJlZmFkZmI1ODQ0OTg5MDE2MGU4MmJmMGE4MiBsZWdhY3ktdHJ1bmsKKzI2NzczIDIzMzlkZGU2YmFiZWNmOGYxMjkyZTQ4NGU3ZGYzMDIxNWU3YzBlZWUgbGVnYWN5LXRydW5rCisyNjc3NCA2MGQ4NmIyZWFiMGZhZmEyMjg5MmU0MDg0M2M1YWUwZDhkNzM0NGM2IGxlZ2FjeS10cnVuaworMjY3NzUgZTVlZjE2NmZjMjJmNjIzZThjNjBmZmMxNmVlODE1OGMyNDM2MzJiOCBsZWdhY3ktdHJ1bmsKKzI2Nzc2IDIxMWIxNmFjMDY2YTcwNDgzNDcyMTEyODc0Yjc4Yzk3YzZlYTU3YzkgbGVnYWN5LXRydW5rCisyNjc3NyA1OGNhYzcwNjAyYWE2OTkzNTkwOTQ2OWI3ZDZiN2Y5NGY3ODRhMTlhIHJlbGVhc2UyMi1tYWludAorMjY3NzggMzllNWMwZDZjMTgyMmE4MGU3YmY5Yzg4YjZlZWFkZWUwMWU3YmM2MyByZWxlYXNlMjEtbWFpbnQKKzI2Nzc5IDgxZDA2NzIwNWI4NmYyYjdkMDUxZWVlYjMwMTVhOWVmNWZhN2U4ZmEgbGVnYWN5LXRydW5rCisyNjc4MCA0ZjY3ZTU2Njg2ZTU4ZDlhZWRjZTY5OGMwODgxOTVhYTE3MTdmYzY3IGxlZ2FjeS10cnVuaworMjY3ODEgOTBlZmExY2FiM2JjMmM3NTYxZDhkODcxYjljNzRiNjRkZmJmOTI1MiBsZWdhY3ktdHJ1bmsKKzI2NzgyIDY0MmE0NTNlN2EyZTkyM2UwNTkwMGU2MjU5MjFlODdjMjBmODc0NjcgbGVnYWN5LXRydW5rCisyNjc4MyBmMzhiZGIyZmNhZTAyZDA1NTdjN2UyZjAxY2ViODk5MmE0NDQxNzc2IHJlbGVhc2UyMi1tYWludAorMjY3ODQgYzM3NWM1YjI2NjMxMmUxMzAzNTk4NDQyMjU5OTc4ZGMxNGJlNjE5NiBsZWdhY3ktdHJ1bmsKKzI2Nzg1IDYzODkwYmMyOWE3Y2JmNGY4OTY2YjIwODAxNjI5YmFhN2Y4N2FlMmEgbGVnYWN5LXRydW5rCisyNjc4NiA2MjQwM2I5M2Y0NzBiMjJlMDk4MjhhMjg5ZjdmMWNlZDA0ZDZjMWZlIGxlZ2FjeS10cnVuaworMjY3ODcgMTE1NzI4MWYwMGEwMmIxMzc3ZjhmN2QxZWIxODFkNWFkYTJiY2M5NCBsZWdhY3ktdHJ1bmsKKzI2Nzg4IGE0ZDY3NWI4YjUzYzAyNDA3OTNiZTkyNTI0NThiMTAzMGFjZTllNDEgbGVnYWN5LXRydW5rCisyNjc4OSA4ZWJhNGM5MmRmMmI0ZTRlNTYxN2U1ZGY0OTI5ZDY1YWViZTY3M2IyIGxlZ2FjeS10cnVuaworMjY3OTAgZTExZTk1MGFjYzIzNTE2MTA1MWZiZmI4NzE5MDdkYTUyNWNjZDMyMCByZWxlYXNlMjItbWFpbnQKKzI2NzkxIDFiZTZlNzliMWQ0NjA1MDgzOTZhNTNiMzE3MTQ3MjFmZjRkMDIyZmIgbGVnYWN5LXRydW5rCisyNjc5MiBhYjUyMzEyZjgyYzc5MTg4NjQwYmMxYTkxODUyMzU1NWM2ZjMyZjA5IHJlbGVhc2UyMi1tYWludAorMjY3OTMgNTYyNDBiY2RhODhjOTFmMGIxMzFjOWZjNjM2ZDVjODBiNWNjM2RmOSBsZWdhY3ktdHJ1bmsKKzI2Nzk0IGZiNjRmMjExNzZhZmFlYWRlMzU0OTlkOGY0MGFlMjZiZjA0ZmQ5NDEgbGVnYWN5LXRydW5rCisyNjc5NSA5OTNjNzc1ODdkY2EyMzkyMzJjZDdiMWZmZjY3NTU4NGNjNWY0MTQ2IGxlZ2FjeS10cnVuaworMjY3OTYgMjVmZDRhOGY5ZTA5MjI3NGNkM2UzMjNlOWIxMmFhZTE3M2FmOGMyOSBsZWdhY3ktdHJ1bmsKKzI2Nzk3IGY5ZDVlMWZiMmFhNjk3M2NhYTQyZjdlZWRiYjQ5ZmNlNDRhMDBiZWQgbGVnYWN5LXRydW5rCisyNjc5OCA4MjQ2MGZkYTRmNzY3MTBiNjNhMjEyY2FlYTUwOGRkNmU0YmYyNDE5IHJlbGVhc2UyMi1tYWludAorMjY3OTkgMDhkNmM4Yjc4MGQ5Njk5ZDI5OGQ2OWU4Y2RiNGNiNWI2ZWMzMGRmNCBsZWdhY3ktdHJ1bmsKKzI2ODAwIGRlMGFjMDNlNWU3MmQ4Yzg1NmZmZjhhY2ZjMmUwZmVkNGM3ZThiMzMgbGVnYWN5LXRydW5rCisyNjgwMSAyOGY3MWM0YmQxNmJiNTkzYWQ1MDQxNDE1MTYxYmY4Yjg1OWFjMjRjIHJlbGVhc2UyMi1tYWludAorMjY4MDIgNmIyYmEzYjdlZDMyNmJlNGFhNDg3OTMwZDgyZWFmNGIzNGZhOGI0OSBsZWdhY3ktdHJ1bmsKKzI2ODAzIGIxNTg5NjA1MzkzMzM0YTMwNDA3MGE5ZjE2NDI3MWE2ZDg5ZDIzMGUgbGVnYWN5LXRydW5rCisyNjgwNCAwM2RmZTdkMzQzZGJhYzNmODBiNThhOTQxNmRjMjljYmY4NWVmMWI3IHJlbGVhc2UyMi1tYWludAorMjY4MDUgZjEyMTkzMDU5MjM5ZGIyYTQ5NDE4ODI1ZGE2YmQ2ZmMxZGMyNDAzZiByZWxlYXNlMjItbWFpbnQKKzI2ODA2IGQzZjI3NWJkMmM2MGExZDBmODYxMGRhM2JkMTAwNThiMzU2NWNkOWIgbGVnYWN5LXRydW5rCisyNjgwNyAxOWE5NDkyNTM3ODEyZmEyMTE4MjBjNTY4NzFkYjU0OGYwOThlYmJlIGxlZ2FjeS10cnVuaworMjY4MDggMDhjY2IwZjNlMmQ0OTZjN2JlNzZhYjNiM2QzMTYyNmVlYWY0ZGRiMiBsZWdhY3ktdHJ1bmsKKzI2ODA5IDQ1M2U1OWE0NzJiMjFhMjhmOWIxNDcwYmMzMjAzZWUzNDQzNWE0N2YgcmVsZWFzZTIyLW1haW50CisyNjgxMCA3MmYwYzFhMjQ1ZjhkZjk0ZjBmMTY3YTJmMzlkMGIyMjNhMmRmNjY4IGxlZ2FjeS10cnVuaworMjY4MTEgMWNjOTNkNTAxYjQ1ZjA2Yjg0YmJlYzdjZmI0NzBlYWJkZGFiNTFhZSByZWxlYXNlMjItbWFpbnQKKzI2ODEyIDI3M2RkMjUwOGM1N2UxYjY1N2Q2NmI4ZjJjNDc4MTY1Zjk1Mzc5NzQgbGVnYWN5LXRydW5rCisyNjgxMyA2YmFlMGMzMWJiZmIyNjEwNGZhMGZmODg0Y2FiYWQ3NTdmOGEyNGQ3IGxlZ2FjeS10cnVuaworMjY4MTQgMjRlMjMzNGU3YmIyZjhhZmI2ZjE4NWJmN2YzMWY4NjlhODE4ZmVlOCBsZWdhY3ktdHJ1bmsKKzI2ODE1IDI2YjkyNGFkMjY2Y2ZiNTZhZjdhYTc3ZmI0MTIxNmM5ZjM1MGIyMmEgbGVnYWN5LXRydW5rCisyNjgxNiBmOThhMjdjYjkyODIzOTQyZTUyYzY1NDlhZDUxMjAxOTY2NGI4MDBiIERTX1JQQ19CUkFOQ0gKKzI2ODE4IDY4Yzc3NmJhNWVhNWFkMWM1ZGZiZWQ1YzQ5YjE4MThhYzUyMDdjZDIgbGVnYWN5LXRydW5rCisyNjgxOSA2NGViMTE5YjgxNmQ1YWQ1ZjUxODJiZTk2YjkwMDdkZjA4OTJkMDdmIHJlbGVhc2UyMi1tYWludAorMjY4MjAgZGRiNDFlODdkNjUxNGY3NjBlMjc4NmUzZDlkNjZhOGVjMjU1ZGNhZCBsZWdhY3ktdHJ1bmsKKzI2ODIxIDhhNDViZmQ2YjQ3MTdjMWI0MjVhNWM4YTQ1ODM4MzU3ZTIzMzllOWQgbGVnYWN5LXRydW5rCisyNjgyMiA3ZTUxNDFiNjhjNWYxZDA0ZGMwYjc3NDEwN2RmN2U5OWZhZGFjMmVlIGxlZ2FjeS10cnVuaworMjY4MjMgZDliYjRlYzNlNzViMzI3ODgyYjAwMjAzOTdjMmJlM2ZmNmU1ZjE3MCBsZWdhY3ktdHJ1bmsKKzI2ODI0IGU0M2FhZmZmYjAzYzY3NmYxYTYxYTllYTQ4ZGVmYjc1OTZlZWY5YmEgcmVsZWFzZTIyLW1haW50CisyNjgyNSA2MTM0OGFhMmZmOTg2ZDViZmQ2Y2Y3ZDk5ODc3YzllYjliYzM2ZmRmIGxlZ2FjeS10cnVuaworMjY4MjYgODE4Mzg1OWRjZmNkMjE1MTU1Y2ZlODEyZDEwY2Q5NTJkZDNmMzFhMSByZWxlYXNlMjItbWFpbnQKKzI2ODI3IGJlNTRiYTRiMmM0NDBlOGVjOTcyMzEzNmJiZGNjOTdhOGE1MDNiNWQgbGVnYWN5LXRydW5rCisyNjgyOCBjMjU1NmUzMGZjYjQ4MmFkZDBlYTIwMWRjNGIwN2NjOTE5NTA1MTEwIHJlbGVhc2UyMi1tYWludAorMjY4MjkgYWIyMzQxMDdlMjY3MzI3YzUzMTY5YmRmZTY5MmFjNzNlOTJiNjYzYyBsZWdhY3ktdHJ1bmsKKzI2ODMwIDNhYmZmMTFmODJiMzUzNzU2OWI4MGQyY2ExNzU3ZmRmYTcxYTgwMjkgcmVsZWFzZTIyLW1haW50CisyNjgzMSAxMGM4MjAwODNjMmRjMTY0NGM4MmQwYzg4MTQzMTE1ZDAyNjJkOGRmIHJlbGVhc2UyMi1tYWludAorMjY4MzIgMTJiNDY1NzU4NzI5ZGEyOTAwNDRjN2Q5NGRhZTJkNjgxNmRkZTA1OSBsZWdhY3ktdHJ1bmsKKzI2ODMzIGJkMWM0YjY1ZGI3OTEwNGQ0NWVmYzdmYjFmYmY4MjQ3OTIxNmJjNmQgbGVnYWN5LXRydW5rCisyNjgzNCBhMjE5OGY3MmQ1ZWJlYTAwN2YzZGY1ZjFlZjVhN2QzZTI0OGM1ZjMyIGxlZ2FjeS10cnVuaworMjY4MzUgYmUwYmM1NWVjZjRhMGY2MThmYjA4NWI4M2Y0NzE0NDc0NWM2ZmZmZiBsZWdhY3ktdHJ1bmsKKzI2ODM2IDA3N2Q0NGIwNDA1YmU2YjIwY2M4NTMzZWZjYzY1YzEyMTZjNjcwMWMgbGVnYWN5LXRydW5rCisyNjgzNyAzNDRhZTUzMWU2YTczZTIyNzExNzE3OWJlYTA0YWUzM2Q1YTJjOWI0IGxlZ2FjeS10cnVuaworMjY4MzggN2NlMDE4ODM3OGVmM2E4ZDg2NzYxYThiZjE2NTE1MGQ3OTg4ZTY5MCBsZWdhY3ktdHJ1bmsKKzI2ODM5IDUwYTk3YTk2Mjk5ODdhMDJjYjcxMzY5OTlmMzIwMWM2NTNlYmFmMTIgbGVnYWN5LXRydW5rCisyNjg0MCBkM2UwMjVlZjFmYjJkZjk4YzA4NjFhMTk3OWRkNDAwNDZjMjBkN2RiIGxlZ2FjeS10cnVuaworMjY4NDEgZDM1YjlmZmY4MWUwOWIyNWZlMzdiNWQ1OWU5M2U5Y2NkODNlMzYyNSBsZWdhY3ktdHJ1bmsKKzI2ODQyIDczMjQ5YWJlZDY4Mzc2MGRiMjE4YjZkNjJkZjI2ZmE4YTU4MDljMDUgbGVnYWN5LXRydW5rCisyNjg0MyA1ZDczYTJjN2ZhZTYzZmU2MTMyNjY2YmFjYzZjOWI1YmUzM2Q5MWU3IGxlZ2FjeS10cnVuaworMjY4NDQgZDkxNzg1N2ZkMzM0ZWE5ZThkNTM5OTA1NGE1YTQxYmNiNzAxMmFmYyBsZWdhY3ktdHJ1bmsKKzI2ODQ1IDViZDMwYTM2ODk3YjFlNDc2MGRjNDc5ZDBmMTExYjE5Mzg4NWUyYjIgbGVnYWN5LXRydW5rCisyNjg0NiAxNzU2MjEwNmMyYTA0NjY4MmQ3MjY4N2JhZjMyMDUyM2IzMGNkZDdhIGxlZ2FjeS10cnVuaworMjY4NDcgY2RkNWM3NTE4MjNjZDkyODg1ZTVhMTc2ZmExMTVlZjkxNDI2ZmRhOSBsZWdhY3ktdHJ1bmsKKzI2ODQ4IGM3NmU1YzFjNmU0NTQ1YjU3NDBiNDQzYjZjOTFhZmY4NTcyZGJiOTggbGVnYWN5LXRydW5rCisyNjg0OSBiYjU3OTBjNmNkYWExNDczNzQ1ZWJhZTI2NTFhYjljMGMwMDk5MDI3IGxlZ2FjeS10cnVuaworMjY4NTAgOWIxZTNiN2JkN2YxMjQyNjliYzM2OGI5M2MyOTY0Mzc3MWVhYTg3ZCBsZWdhY3ktdHJ1bmsKKzI2ODUxIGJlNjUzNmYyZWJlZmIxNjMzMjI1YmJhNjZiMzYzMDEzN2ZhMTg2MzMgcmVsZWFzZTIyLW1haW50CisyNjg1MiAyNjdhZTU5ZWRkYjRjNGI1ZTU2YjE1NjhlOGM1ZDhhNGVkZjBkZWM4IGxlZ2FjeS10cnVuaworMjY4NTMgNjg0ZWRkMTZiYmQ4MWZjNDg3YjJjZjM4MDZiNDBlMmY1YTkxNjFjNiBsZWdhY3ktdHJ1bmsKKzI2ODU0IDg2NzNjMmVkZjIxY2JlNDA0YTU3MWNkYjQzMmUwMmFmMzBhMGZjYjQgbGVnYWN5LXRydW5rCisyNjg1NSBiZGE5OGJhYzY5NTYwMWMyYmJkYzQ3ZTI2ZTM1YjM5NDNhNjRiOWE1IHJlbGVhc2UyMi1tYWludAorMjY4NTYgMGM0MmNlZTQ3NWRmZjM1ZDYyYjExM2M0ZjQ1YmZjY2FlNGFmYjRjNiByZWxlYXNlMjEtbWFpbnQKKzI2ODU3IDc2ZjM3NmJlYTVlNWE5YTkxODg1MzZkMTFkNWM3NTE2YzhjMDllZTkgbGVnYWN5LXRydW5rCisyNjg1OCA2OGUzZjNkZDRkNDg4NDkxOWQ5NWRjMDhkNDI5MmJmMTNiNTk5YmYwIGxlZ2FjeS10cnVuaworMjY4NTkgZjQzMTg4ODVjZTlhNjMyODhiMTAwOWVhMDk3YzljMWYwY2Q2OTI4YyBsZWdhY3ktdHJ1bmsKKzI2ODYwIDk4OWE3YWRmODRlZmIzNTdjNTE3NWRjY2MxODQ0ZGZmNGNkYjE2YjUgbGVnYWN5LXRydW5rCisyNjg2MSA4NTYxNWVhNjViMWJmODBhZjk2NWM2Nzg2ODc0MDY0ZDZlNWI4N2YzIGxlZ2FjeS10cnVuaworMjY4NjIgZGJhNGY1MTc2NDkyZjQ1NDFlNTZiNGNkMzBhMzEyNWVjNGI3MjhkZCBsZWdhY3ktdHJ1bmsKKzI2ODYzIGFkOTA0ZGI3MzQ0YTlmOTQxZWEwZmZhMmEzODUxY2Y5ZDY4YmM4ZjcgbGVnYWN5LXRydW5rCisyNjg2NCA2MjY4OGQ2YWMzODc5YzBjZDdlNWU0YzMzYjA0ZWEzNjJkNGU2NzFiIGxlZ2FjeS10cnVuaworMjY4NjUgZGMzYTdmOThkNGVkMTJmM2U4NjJiYjUyMmJhYTAyNGFjMTFlN2MyOSBsZWdhY3ktdHJ1bmsKKzI2ODY2IDYzMWY5Mjg2NjczMjliYjZjNmQyOGFkZDFhZmY5YjMwODYxNGMzYzUgbGVnYWN5LXRydW5rCisyNjg2NyAxNzJiNjI1MGQ1MjYwM2JmNzc1OGUzMzRjMjdkZmIyZTY3Njg1ZDQ2IGxlZ2FjeS10cnVuaworMjY4NjggNzZlZjRiOTQyYjEzMWJkODgzY2UxYjU3YzZmNmIzMDNiNzgzZGZkOSBsZWdhY3ktdHJ1bmsKKzI2ODcwIDdhYjhjMzgxMTcyMzk3MTRlZTY1ZDk3Mjk4MmJjYmQ1MjcwM2Q5OTYgcmVsZWFzZTIyLW1haW50CisyNjg3MSBjNDRiMjFmY2QzOGFkMzJlNjc4NTM0YjliYWY0ZjVlNzI1MWQ2MzMxIGxlZ2FjeS10cnVuaworMjY4NzIgYjFkODY4MzUyMWVjNGYzNzRmYTkyYTc3NGFjMjllYWU4NGM1YmVlMCBsZWdhY3ktdHJ1bmsKKzI2ODczIGZiYTA1MzQ3YmIzMGFkN2FhMjZjYTZiZWFhYjViYjBjOWJiOGY1MGEgbGVnYWN5LXRydW5rCisyNjg3NCA4MjMwOWM3MzI1ZWZlMzY4NmM4MWEwODk2NmZiZDhiYTE3MTg0NTkxIGxlZ2FjeS10cnVuaworMjY4NzUgN2JjMzFhZDk0NzdjZjVmNjVlMDI2Njc0NDZhOGY4ZTYzZTM3MGY3ZCBsZWdhY3ktdHJ1bmsKKzI2ODc2IDI2NzViMTU4YmY2NzdkZmQ5MzA5ZTlmYjQyNmM0MmVkNWIzZTkyMjcgbGVnYWN5LXRydW5rCisyNjg3NyAzNWYwMWJmMzRkNjA0Mzc2ZTkzNDI0ZWRlN2U4NmI1NWU3OGFmODk5IGxlZ2FjeS10cnVuaworMjY4NzggOWVlYTVlZGQ4NTdmNmFlNGUzYzEzOWIwM2M3ZDU2NWU2N2IxMDE3OCBsZWdhY3ktdHJ1bmsKKzI2ODc5IGIzODk4ZDMyNjUxOWVlMjM5MDY0NmI4NTY4NGU3ZmE2NzNiM2Y2ODkgbGVnYWN5LXRydW5rCisyNjg4MCBiZmVhMTRmOGZmMzUzYzVmZjI4MDE1Y2IwMWJiYzRlNDVhYzM2YjY3IGxlZ2FjeS10cnVuaworMjY4ODEgNzNjMDFiMWNiZGIyYzAxNjFlMzFkM2QyNGM1YzA2OTFiNGU4YzExNSBsZWdhY3ktdHJ1bmsKKzI2ODgyIGMwM2U4ODk5ZDRiMTkwNDQyZmQ3NzE3NmFmNjk4YzlmMTY1YWJmMWEgbGVnYWN5LXRydW5rCisyNjg4MyAwMDE0Mzg3ZmQ2MDQ0ZDExMjU0MDNiZmUyNTdkMDQyZDljYWMwYzQ4IGxlZ2FjeS10cnVuaworMjY4ODQgYjg3MjhkNThlOWMzMzNlYjBlODU2ODYyMGJkZWI0MzAzMmJkZmRjNSByZWxlYXNlMjItbWFpbnQKKzI2ODg1IGE5MGZhYTVmOTQxNzFjNzA3MTE1M2E3MTM5ZmMwM2E2NjljNGFhYjUgbGVnYWN5LXRydW5rCisyNjg4NiAyYWZmMTJlMmE5NGY1YzlkZTM1Njk3MTE3YWZjMTJmMTE3ODQwZDBmIGxlZ2FjeS10cnVuaworMjY4ODcgYjYwMmYyMjkxYjVmZDNmZTQ4N2U4NWI3MDBhYTBiYTViMDJlNGZiZSBsZWdhY3ktdHJ1bmsKKzI2ODg4IDBlMTc3MWZjMDEyZjI2ZGQ3M2M0OGE0ZjVmNzgzZjFlZDJhMjJiNjcgbGVnYWN5LXRydW5rCisyNjg4OSBjNzliMWU1NTUyZTg0OTU5YWYyNGVhYzg5MTA1MWNiNzhhNGU4NjU1IGxlZ2FjeS10cnVuaworMjY4OTAgOTg4MjdhOWQ2MmMzMmVhYzZiOTYxOGViODM0OGZmMzU0Zjg3M2U3ZiBsZWdhY3ktdHJ1bmsKKzI2ODkxIGIyMWI2OTY1ODY2Mjg5YjBkMzM5MTBmYzE2NDg1MmY3YTRiYTc5MDMgbGVnYWN5LXRydW5rCisyNjg5MiA4YTQ5YTEzZmIyOGRmNzBlMzM0N2I3M2I3N2VlMGM4ZjU0YzlhYzVhIGxlZ2FjeS10cnVuaworMjY4OTMgY2VjYTI4MTY3ODAwOGEzZDEzNGRkMTM1ZWZiNjA1ZmMyYmJkMmI4NyByZWxlYXNlMjItbWFpbnQKKzI2ODk0IGVjZWY2NWU1N2NjNmJkOTliNGZjZTAyZjkxZGE4ZjBiODI3NzEwMWEgbGVnYWN5LXRydW5rCisyNjg5NSBhOThlOTNlYWZlZjdlMDNlZTBjMzNhM2YwZjM1NmI5NGUyYzI5YmMzIGxlZ2FjeS10cnVuaworMjY4OTYgMjYwMGNmN2QzM2FmODIzY2I2Yjk0M2MyZjU2Y2RkNWNjY2IzOWU1ZSBsZWdhY3ktdHJ1bmsKKzI2ODk3IGE0ZWZiNTlmODc2NzE4MzI1NDBkMzYzZDNkY2Q2MWY4YmI3YTU4MGUgbGVnYWN5LXRydW5rCisyNjg5OCA3MGI1ZTExMWNjYjA5MDJmNzIwYjYxOWUwYzE3NGU3MmQyOWFjZTM3IGxlZ2FjeS10cnVuaworMjY4OTkgOGQ5NDZjOTMzOWU4MjEwMWViYWI3ZWE3MTgzOTJlYTFhM2QxNmM4YSBsZWdhY3ktdHJ1bmsKKzI2OTAwIDBhNGM5MjU1OWEwYjQxNjY0ZjIxYWMwNGU3MmM1MTFkZDM0NDI1N2MgbGVnYWN5LXRydW5rCisyNjkwMSBmYThmZTJlOTgwNjI1YWU2OGJiNWQzZjQzYzQ3ZTljZjA1YTI2NjhmIGxlZ2FjeS10cnVuaworMjY5MDIgOWU2N2EwZDU3MDVmYmFiOWZiNmFhZjNhYzI2OTZiY2Y4NzE3MjQwMyBsZWdhY3ktdHJ1bmsKKzI2OTAzIGI0OTBmZjE3MDZkOTY0NjJmMzI5ZDkxNGYxMTczYTI1OTFhNGZkYWUgbGVnYWN5LXRydW5rCisyNjkwNCBiZDU4OTQ2YWE1MjFiMmVjZjdlZTRmNTVkMzk4MTIyZjcxYTNlNDY2IGxlZ2FjeS10cnVuaworMjY5MDUgZjZkZWQ2ZWZhYmNmMzA5MDI2MGIzZWQ5MjE3MGU3MmMyMzkwY2Q1NCBsZWdhY3ktdHJ1bmsKKzI2OTA2IDIyMGI5OGYwNjQxNTY0YTA1OTdiNDY4NGMzYjdiMmQxMTI1MDViODkgbGVnYWN5LXRydW5rCisyNjkwNyA0MGEwMzExNTU4OTdmOWJlYjcyZmY3ZDBhOGYzZTI2OTFjZmJjMWU1IGxlZ2FjeS10cnVuaworMjY5MDggMWJmMzRmNDM5NGM1MTdlNDM0NDYwMTMyNTg3MzRhMGJmNjQ5OTAwMyBsZWdhY3ktdHJ1bmsKKzI2OTA5IGNlMWRhMmY5NzgwNzZlNGM2OWIyOWM0MTg3MWE4ZGZhMTE1YjNmZWMgcmVsZWFzZTIyLW1haW50CisyNjkxMCA4ODkwMzg1M2YxODBlZTZiYjJlMGMxZTgwODdjYmQyODhiMDI0MjRmIGxlZ2FjeS10cnVuaworMjY5MTEgYjc0YWZkZDA3MmViMGExODk5ZmNkNGYxNjY1ZjhhODIwZmE4YjlhMSBsZWdhY3ktdHJ1bmsKKzI2OTEyIDMwM2Q4MWUxNWU3MGMzYTI0MjdhNzJhZTY4MmVmMDc2OTViYzI4ZjcgbGVnYWN5LXRydW5rCisyNjkxMyA0NDZiMmYyYzAxZDhhYWNhMzI1N2FiM2MxYzJjMTM4NTNmNDhhZjRjIGxlZ2FjeS10cnVuaworMjY5MTQgYjNjNTBmNjlmMzhiZjIzOGJkZDU2MGY3ZDFhZTU4OGU1OGEzZDI1MCBsZWdhY3ktdHJ1bmsKKzI2OTE1IGE2NzI0OGZkMjM3MDEwZjgyYTU3MzRmOWU3ZjE4OTExMjViOWRmZDAgbGVnYWN5LXRydW5rCisyNjkxNiAzYjJhN2VlMDg2Njc2MWRkODQwM2RlODdlOGQ1NTQ2YjgyMDU3NDhjIGxlZ2FjeS10cnVuaworMjY5MTcgM2FlY2RiYTQ1NTI4NWEwZTZkYjQ3NDRmYzRiNDdhYTNiODdkYmI3NyBsZWdhY3ktdHJ1bmsKKzI2OTE4IGU1MjQyZjU4YTViNmY5MGQ4NmRjZGE3MzAyNDEwMTRkNDNjOWJjMTEgbGVnYWN5LXRydW5rCisyNjkxOSBjNGZhMzdmODk3ODM5OTMyMWU0ODY2MmE5OTQ2MGUzYjc3YTc0MzVmIGxlZ2FjeS10cnVuaworMjY5MjAgZmVjY2UwMTczMjU0ZjdlYTJkY2VhMmFhODM3NTAyMGY5MWY3M2RjNyBsZWdhY3ktdHJ1bmsKKzI2OTIxIGEzOTlkOGIxM2MyZjQ1OGI0OTUxMGFkODA1NDZmN2UyZmE1NWI3MGEgbGVnYWN5LXRydW5rCisyNjkyMiA1ZDA5NTg5OGRhZTY1OWJmZDFhZmM3ZGZhYmQ1NDI4ZDQyOTU5OWI1IHJlbGVhc2UyMi1tYWludAorMjY5MjMgNTNjNjE0Mjg4ZWFiOTRmNmIwZWRmOGE0NTcwODRjNGFmYTU0MTcwYSByZWxlYXNlMjEtbWFpbnQKKzI2OTI0IDNhNDc5MzU3NWVjZDdlZjY4Y2VkYWVlMjU3ZTA5ZWI5NjY5OTk2MGMgbGVnYWN5LXRydW5rCisyNjkyNSBjNWU4Zjg5ZmQzNTg2OGQ1MWZjMjY1YzQ5YTU0MDFlMDQxYTY2ZjYwIGxlZ2FjeS10cnVuaworMjY5MjYgZWFjYTYyN2YyYTU0NmNlOGU4ZmM1NDJlNmY5YjcyMmVkYWNkZjM0OCBsZWdhY3ktdHJ1bmsKKzI2OTI3IDUwODk2NWNlNWU0NzJmOTZkOTI2YWM3MTJlMGIyN2FiYTQ1OGNmMWEgbGVnYWN5LXRydW5rCisyNjkyOCAzZjI0MmNkZDA5MDRlZTExNWM1ZjQ2NWU1MGJjZmNmYTEwMWE4YzFiIGxlZ2FjeS10cnVuaworMjY5MjkgMWE2N2ZiYzdhMDY2ODIzMWI5OGU0OTI5OWQ0NGRhYjFhOGQ3N2QzZCBsZWdhY3ktdHJ1bmsKKzI2OTMwIGNhZjYyZWVmNzcyM2U0Yzg3ODQ0ZmQ3YTYwYTVkM2Q0M2I3YTM4ZGMgbGVnYWN5LXRydW5rCisyNjkzMSAzZDgzZmFiZWYwYTQwZWU1ZDFmMGRjYzQ5Yjc2YTMzZWMxMmVkZWZhIGxlZ2FjeS10cnVuaworMjY5MzIgYWUwYTNiMTRkMmU4YmU3ODAxNGZlZDUzYzhkZTJkZGJiYzBmNGUzMiBsZWdhY3ktdHJ1bmsKKzI2OTMzIGRjMjYyM2UwMjQzZTI4YmY3N2ZhZTljZWY1MDgyNWIyZTE2MTZjMGYgcmVsZWFzZTIyLW1haW50CisyNjkzNCBiNmMzMmJlYjRkYmNjOWM4MDI5MDlmMzdjYjI1ZmE4NDhhMGYyOTA5IGxlZ2FjeS10cnVuaworMjY5MzUgZDVhZTZmNzE0Y2Q1MWNjN2QyYWY5NzI0NjBmY2JmMDBiMWVjMGE0MCBsZWdhY3ktdHJ1bmsKKzI2OTM2IDRkODg0YWQ4MGRkYTU1NGU5OWU4Nzg4NTEwMmMzNDRlMTJjZGM1ZWIgbGVnYWN5LXRydW5rCisyNjkzNyAwYWM2NTNmNDY5ZjA3MGQ0NGJhNWFiYjliYjY1NjY1NDBmYTcwMmE1IHJlbGVhc2UyMi1tYWludAorMjY5MzggNjY4YzVjYTRlMGQ0OGM2MTcyYTVjYWMxMmE2OTIxZDE2YTE0MTM1ZCByZWxlYXNlMjItbWFpbnQKKzI2OTM5IDk5ZGYyNTcxNDJmNjQzOGRhN2UxYzUxMjRhMWUyMzVlOWIyOWNkNzAgcmVsZWFzZTIyLW1haW50CisyNjk0MCA3ZDRjNWU0YTBjY2MyNmY5OTg1MGFlNjNjYzI0NzdmN2E4MmE0MzFjIHJlbGVhc2UyMi1tYWludAorMjY5NDEgOGY3Yjc5Y2RhMGQzMjFkN2U4M2VhZDYzNTE2MGNmN2ZiMGMzNjZiMCByZWxlYXNlMjItbWFpbnQKKzI2OTQyIGMzNjc2MDdiYjVmN2QyMDQ4OTg2NWIwYTQ4MGUxZDZlMTJlNDliN2IgbGVnYWN5LXRydW5rCisyNjk0MyA0ZTNlYTU1ZjdlMTE4Y2E2ZTI3YjhlODVhN2RlMjIzNzgwOGE0YjI3IGxlZ2FjeS10cnVuaworMjY5NDQgN2RiYTgwZDU4ZmZkNjY0NDM2ODkwOWM2ZjM4NjZjOGMwMzhkYjViZiBsZWdhY3ktdHJ1bmsKKzI2OTQ1IGJlYjUyNzE1OGNiY2RlNzJjMTk4NTdmNDM4MDcyZDMzNTE3MzIwNjggbGVnYWN5LXRydW5rCisyNjk0NiAxOTBiNmJjMTkxMmE1ZDVkNjJkNzliYzk4ZTVhNjJmMTc2NjAwYThkIGxlZ2FjeS10cnVuaworMjY5NDcgMDYwMmM3ZTZiOTRkNzIxM2E0ZWQyNzc2YWUwY2M5MDYyYzFhMmExNiBsZWdhY3ktdHJ1bmsKKzI2OTQ4IGM2YWY1NzRiZGEyOTI4ZjFjZGQxOGYzNjNkOTNjOTg3ZGY1MzAwYjQgbGVnYWN5LXRydW5rCisyNjk0OSAwZTgzNzBlNzA4ODg2M2NkM2QxNTVhMDI3NjdhNmU4ZGQzNjUxMmE1IGxlZ2FjeS10cnVuaworMjY5NTAgZmJhNTdlNDBmNTQ3ZDBiZDYzOTgxZGVhZjUxOTA0OTJhZDk0YWYzZiBsZWdhY3ktdHJ1bmsKKzI2OTUxIGYxMjQ5MTE3MTYzODYwMzgyMWI4YjgyNmJjNTNjMDFmMzM4ZWJhYzUgbGVnYWN5LXRydW5rCisyNjk1MiBhYjk0ZWM0YWY5OGE5MzRmNmQ5YzdmZTY0YjAxOGUzMDgzNTAxMzdkIGxlZ2FjeS10cnVuaworMjY5NTMgYjA2NThmZWVmOTM5ZTE2YzI0YTE2NWIyMjY2MDM2ZWU2MWFkZjhmOCBsZWdhY3ktdHJ1bmsKKzI2OTU0IGE0YmIxODIxMmI0ODBlYjkzZDFiYjc1OGE4M2Q1MmRiNTI5MDM4NDIgbGVnYWN5LXRydW5rCisyNjk1NSBhY2JlOGU3Zjk5ZDkzYjdmZjM0ZGMyZGZiZTgyMDY2NTRmZTFhYWFlIGxlZ2FjeS10cnVuaworMjY5NTYgZDY3ZjFlM2E5ZjFhYmY1OGYyYjNhZTJkZDMzYjNiYTJlOGVjMWMzNCBsZWdhY3ktdHJ1bmsKKzI2OTU3IGM4NDRmY2MzYzk1MjNmZmE3YzdiMzY4MzE2ZDBhMWJiODNiZmQwZmIgbGVnYWN5LXRydW5rCisyNjk1OCBjM2E2N2NlNTgyNDVmNDI1NGEwOTRjODdmNWY3NDU4ZjI0NzNmYzI0IGxlZ2FjeS10cnVuaworMjY5NTkgNDM4MGE3YWExOGRjNmNkZWM4ZDg4OTQ1OGM1ZjNlYjk5N2QxYWNiZCBsZWdhY3ktdHJ1bmsKKzI2OTYwIGMyYmMyZWQxNDVmNzI3YzVjMWI0MzZiMDk0NDFjZjNkN2ZkODUyMGMgcmVsZWFzZTIyLW1haW50CisyNjk2MSBlZDAwN2U0N2IzYTEzOTk4OTBiMjJhYjFhZjBlNzRmMjk3MzJhYzUzIGxlZ2FjeS10cnVuaworMjY5NjIgMmIxZDYxNzgxZDYzNzQ4OTcxMzI3YjZkZTA5MWQ5ZWUyYTY4ZDlmMCBsZWdhY3ktdHJ1bmsKKzI2OTYzIDE5N2ZiMzA1ZmM1Y2NjZmM4MjM0MmNkNDcyMTAzMDNiMjliYzBjNzAgbGVnYWN5LXRydW5rCisyNjk2NCA5MGVlNTViOWQ3MmFkMWMzN2M3OTBjMjliMDE1ZjJhNTBhNmM4MzU3IGxlZ2FjeS10cnVuaworMjY5NjUgN2U0MDA1ODM3NTVmZjQ4MDZjZGRjZTBkNDVjMzJmOGJlYTc4MzRiNCBsZWdhY3ktdHJ1bmsKKzI2OTY2IGRiYWJiMWY3ZWQzYTQ0Y2I3OGRiN2Q1YWE4ODc1YTY3ZDI4MzY5MGQgbGVnYWN5LXRydW5rCisyNjk2NyBjZmZkMDkxZjU2ZDBlZjA1YWFhYWY4ZTVmN2RkZDVlYTE5NTAyMmI0IGxlZ2FjeS10cnVuaworMjY5NjggZWY4ZDQ1NjA2N2ZkMjhjNzYyODVhMjc5YjUxMTcyNjExMzc0NTVkOSByZWxlYXNlMjItbWFpbnQKKzI2OTY5IDcxMjA2MjBmNDMyYmQwOTBhNjFlZjgwOGFhMDFkZDBiNTIzNjYwZTggcmVsZWFzZTIxLW1haW50CisyNjk3MCA1ZWRlYTc1MmE0MjE5ZGMyYWQ5NThkNmJlOGRkYjg1ZDAwNTMzYTY2IGxlZ2FjeS10cnVuaworMjY5NzEgYTY4ZmFhMjY4NTNjZTczOWFlZWExYzAwNzgwNjUzNTNjNjFmN2ZlNSBsZWdhY3ktdHJ1bmsKKzI2OTcyIGVjMjdhYzE5ZjllM2MxYzlmMDk4M2MwYjU0ZjE3OGJiMjcxMTk4NDIgbGVnYWN5LXRydW5rCisyNjk3MyA0NTZkNTg0NTFmZWVhNzQ3Y2UxMWU4N2IxOTA4NWNjZTIxZjM2ODhhIGxlZ2FjeS10cnVuaworMjY5NzQgMGEyODE4Y2MzNDJjZTRkNDIxNmNmNjkxZTYzNzQyMmE3ZmQ1ZWYwYyBsZWdhY3ktdHJ1bmsKKzI2OTc1IDIxYjFkNzQyZTRhNzAwOWNkYTA2NTFkZDZmOGZhNmE2YTMyMDQxZmEgbGVnYWN5LXRydW5rCisyNjk3NiAzY2FlZTI5NTgzODdjZDkyZjNkZTQ2MGIzYjJkZjlhNjFjYWRmMTVhIGxlZ2FjeS10cnVuaworMjY5NzcgNGExZjViZDQ4NmZmOWY4MGViYmVmYjExNzFkMTVhZjhjMTM0NDJlOCBsZWdhY3ktdHJ1bmsKKzI2OTc4IGY0ZWFiMjY4ZTYxN2U5MDQ5MjYxZmI0OGRlMTMxYmY2YjYzOTFiMTcgbGVnYWN5LXRydW5rCisyNjk3OSBhNjcxNWFkNDE2ZTVkYTJlZWYwZDBmYWIzZTE4YTgyOWY3YTYyZTA5IGxlZ2FjeS10cnVuaworMjY5ODAgOWRhODU4MzdmZjI1MDg0YjNlMzg4YTIzZDcwOGY2YmUwNDE0YzczMyBsZWdhY3ktdHJ1bmsKKzI2OTgxIDNlM2IzYzE3NzBhYzExYjU5ZmNjZDU5MzE3MWU2YjkwMDUxZjYxYTMgbGVnYWN5LXRydW5rCisyNjk4MiA1NDQ4M2JjMjE4NzFlZjg1YmM3YTMyYzhkMzNkNzYxZmI5ZDk3NDZhIGxlZ2FjeS10cnVuaworMjY5ODMgOTI2MjZlNWFiMDY3MzU0ZGQxYjlkYjEyYTczZGU5ZTFlODZjYWVmZiBsZWdhY3ktdHJ1bmsKKzI2OTg0IGExZGUwYmFiNTQ3NTA5M2Y5MDVhMjI1ZjZhMjYzMzAwNDVjYzFiZmMgbGVnYWN5LXRydW5rCisyNjk4NSA4N2Y0MDM3N2NmNTQzOGI1MTA2MTlkYmM3ODNkNDkxODExZTMzMjJlIGxlZ2FjeS10cnVuaworMjY5ODYgNWVkZDgwNzI2ZDk2NmZkYTJlOTBkZDViZmU0YjI3YzRiM2IyZTVhNSBsZWdhY3ktdHJ1bmsKKzI2OTg3IGMwMGZlYmJlMDkyOTVlMzAwZDE4MTY3NjY1MDU3ODIzNTBkY2RjZDEgcmVsZWFzZTIyLW1haW50CisyNjk4OCBhZWQzOWNhZjk4NjBkZDYwOGJiMmM4NGY4MWUzNTc3Y2ZiNTUyMmY5IHJlbGVhc2UyMS1tYWludAorMjY5ODkgNjVjZjQ3ODk1MGZmNWMzYTg4MWE1ZWJkZGE4NzUzMzk2YWJlNTdlYSBsZWdhY3ktdHJ1bmsKKzI2OTkwIDYzZDE0MTQxZGQxMGQwMjU1Y2NmYjZjMGM0Yzc3NzZhMjNjYWU4M2QgbGVnYWN5LXRydW5rCisyNjk5MSBhNmE3NjVjN2QzM2I0ZDcxYTc2M2I5NmEwZDZmYWZkMzFlYjA2YTg2IGxlZ2FjeS10cnVuaworMjY5OTIgZWE5NzljNTIwNmI3ZTZiODc1NWQ5MDcxNDFkMzc5NDM0YTdiZWI2NCBsZWdhY3ktdHJ1bmsKKzI2OTkzIDRhNGQxMjBiMmIwZTA5YThmNTZiMDUzMmM4ODMyNTdiNTlkNWJjZmYgcmVsZWFzZTIyLW1haW50CisyNjk5NCBhZmU5NDY5MTgyNjdhMWM1MDYzZDEyMTY3MzEwMGY1MmVkZjYzNjg0IGxlZ2FjeS10cnVuaworMjY5OTUgMWE1MjE2MjM1NjAyOGQ0ZjNmNGJjNzllZmM5MDRmNDJlODlmODU5MiBsZWdhY3ktdHJ1bmsKKzI2OTk2IDExNjYwMTNmYWI3Nzk1MzZmNjU1MzNhNmE0MTg5MTUwZWYzMTU4NGUgbGVnYWN5LXRydW5rCisyNjk5NyAwZWU4ZWY3Y2EwOWM2MzJlMzcyMmE0ZGE2ZmU2ZDA5ZjJhMTViZWJhIHJlbGVhc2UyMi1tYWludAorMjY5OTggZGJlZTJmNjI4YTkwNjcyMmZjNDMwZTBlMzQyYzgyOTVjOGExYWQwZSBsZWdhY3ktdHJ1bmsKKzI2OTk5IDFlNjBiNWQ0MTQxN2IxMzg0YTA5NzhlNDhiZWI3ZTM3ZjUyNTBkYTIgbGVnYWN5LXRydW5rCisyNzAwMCA4NTUxZTY0MjcyN2MyMzVlMTU3MzI5YzNiOWRjZWQ2NzIzN2JlZGY4IGxlZ2FjeS10cnVuaworMjcwMDEgMGI3ZmUwZmE5ZGM2YjFjM2E5ZTgyZmQ0MDExY2Q0YTEwNzVkMzI3NCBsZWdhY3ktdHJ1bmsKKzI3MDAyIDhjMjE1ZGRmZDNkMWExODVjZmNiNWZiZGIxYjE5Yzc2M2IyMTg0OGEgbGVnYWN5LXRydW5rCisyNzAwMyA5NDBmZWYzMjRlYmNiNWY4YzMxMzQ2MWU3YzM4MTUwM2YyMTJkMWVlIGxlZ2FjeS10cnVuaworMjcwMDQgYTI1MDgwZjY5MDFmZTZjOGU5MzNiNmM0MzhkOGMwZjBiY2UzMmI1YSBsZWdhY3ktdHJ1bmsKKzI3MDA1IDA0YTRhMGU3MWE4ZGNmNzAxYzg4NzRmMDkzNTU4Y2IyOGU5NTYwMzAgbGVnYWN5LXRydW5rCisyNzAwNiBjNjQ2M2FmZDlmMDg2MGI4NDNiYWVmMDFlMjBjOTUzYmI4MmFlYWZlIGxlZ2FjeS10cnVuaworMjcwMDcgNzBkNzY4MzM1NTBiMGQ5MzU5NTg5NDU4MDhmZDk2NGE2ZDI0NWRmYiBsZWdhY3ktdHJ1bmsKKzI3MDA5IDNlYmQzNzZhYTRjYjZiNzk3NTI1MWE5MWYwOWRhMzdiMzVmZDMzYjQgbGVnYWN5LXRydW5rCisyNzAxMCBlMWU5MGIwZjFmNDUwMGJiNTVjYmUzMDI5ODg2MDNjMWNlYmM4NjM4IGxlZ2FjeS10cnVuaworMjcwMTEgMjIwZWQ3ZmViYjAwMTljYTZmYTY3NmVmZjlmY2ZhNTc0MmJlZTc3YiBsZWdhY3ktdHJ1bmsKKzI3MDEyIGVjODk0OWU0ZTQ2ZDc4MjQ2MjVkMDZmZWViMmYzMGJlM2NhY2ViOTggbGVnYWN5LXRydW5rCisyNzAxMyBiOTRhY2MxODc0MGU3ZTY4NjJlYTc0ZjIzY2Y3ZWU5ZWNhM2Y0NzcxIGxlZ2FjeS10cnVuaworMjcwMTQgYjkyMThlZmFlOGY1NWM4ZmJiYWFlMjYyMGY5ODZjOWU1MjY5ZjZlMCBsZWdhY3ktdHJ1bmsKKzI3MDE1IGEzNDUyMzEyMWNmNDQxNGU5MWMxY2RhYzVlNDNmN2VmYTY0OGQ1MjcgcmVsZWFzZTIyLW1haW50CisyNzAxNiBmMGNhMzkzNWQwMTFkZGE3MmYzOGRlMDRhMTQ4ZjBjNjFlMjVkOWQ4IGxlZ2FjeS10cnVuaworMjcwMTcgYjQwMTY1YTRlZmU5YWQyYmRiMzZiYjM2ZDEwZWNmZDI4NWJjY2FmOSBsZWdhY3ktdHJ1bmsKKzI3MDE4IGViNmExNjUxY2NkYTAzNzJmNjdjMmVkOWNhM2E2MDkzMzdiYTVjMzggbGVnYWN5LXRydW5rCisyNzAxOSBiODZlYWViMGQ3ZGQ0MmE3N2U5Y2ViNTZmZjNhMzY2ZmU1YzlmM2JkIGxlZ2FjeS10cnVuaworMjcwMjAgZWU3NzJmNmU4ODFiYjIzNDIwYTM3N2M2YjkxYjFhNmVhZGQxMTQ2OSBsZWdhY3ktdHJ1bmsKKzI3MDIxIGJmZGJlMjVhNDViMDY4NjhmMTc3ZTA4ZThkN2VkYzg0NmYzNjdkNzQgbGVnYWN5LXRydW5rCisyNzAyMiA1Zjk3ODE5NmZkM2QwMmZmMTdkYjhkNzYxYWYyZjcwNmI5Y2M5NWQyIGxlZ2FjeS10cnVuaworMjcwMjMgOTRhYTRlYjliYjdkOTQyZDA1ZjQyMmJjMGNiYWE0YTVjMTJkMjc3MCBsZWdhY3ktdHJ1bmsKKzI3MDI0IDVjNWZmZjVkZTI1MGQ3M2I3MGVmM2UyZjVlYmMwMTBiMmQyMmQxODAgbGVnYWN5LXRydW5rCisyNzAyNSAxOGQ1OGRlMjAzZDZlOGRlMzBkZjNjYjM4MWIyYWRkYjI0NjRhMzc3IGxlZ2FjeS10cnVuaworMjcwMjYgYjVjM2YxMGNlNjM5NzlkNjc2N2YyOGFiMjEyZjIwM2RjNGQ0NDAzOSByZWxlYXNlMjItbWFpbnQKKzI3MDI3IDI3ZTIxMjBjYjQ3NjMxM2Y5MjdiN2ZhZjk0ZDI2YWRhYTgxODFjOGIgbGVnYWN5LXRydW5rCisyNzAyOCBlNDE5MDY2ZjQwOGYyZDQyZTdhNzA1NzAyZDAzNGExNmM1NjM0NjM3IGxlZ2FjeS10cnVuaworMjcwMjkgODEwZGNmOWQ4MWM5OGRjY2ZjNmMxMTdlMGNiNjFmODBiMDEwZjA4OSBsZWdhY3ktdHJ1bmsKKzI3MDMwIDZkY2Q0YjZlZTVkYTllOTRkOTU4Yzk3MGM4NTgyOGU3Yzc4YWJhYTMgbGVnYWN5LXRydW5rCisyNzAzMSAyYmVjYjU3OTNhY2QxYzk4NmZkMWY0MjhiN2QzOWFkOGM0ODRkNmI4IGxlZ2FjeS10cnVuaworMjcwMzIgZGM3ZDVjMmQ1ODQ1YTljMTZkODdjMjUxZTFhMjQwNTIwNWZmZjc4OCBsZWdhY3ktdHJ1bmsKKzI3MDMzIGNhODcxMTkyNTVlYjE3N2ZlN2Q2ZTRkZTVkYjVhMmQwNmNiMzIwMjggbGVnYWN5LXRydW5rCisyNzAzNCBlMzIxNTJhZmRlNGFiY2NhODkyNmQ3YTM3ZmM3NTg0YTY3OGVjNjllIGxlZ2FjeS10cnVuaworMjcwMzUgYzNkYmE5MWFmYTZkMTQyZTM5ZjlhZGZlM2JhYTgzYjJmMWFmN2Q5OSBsZWdhY3ktdHJ1bmsKKzI3MDM2IDhlZmE1MmUwYTg0NDg1OTM5YTI0YTU0MDk2NzhkYTk5MTBmMDk1NmIgbGVnYWN5LXRydW5rCisyNzAzNyBlZGM0MjM5NDBjZDY2MzllNDRjMWYxYjVhOGRjNmRhNTFmYTUzMTJhIGxlZ2FjeS10cnVuaworMjcwMzggYjkyZjgxOTM4ODQzZjliNmY5N2NmNzUwZGE1NTlhZjZlMGEzYmMwYyBsZWdhY3ktdHJ1bmsKKzI3MDM5IDJmY2M2ZDRlNGNkMjYxZjI2NTg2NGE2YjZkOTEyZjZhYWVkZWQ4MGUgbGVnYWN5LXRydW5rCisyNzA0MCBmMzVlNzUxZjVmZjI1ODQ2NjEzNGM1OWMwMzVlMWE2YjM5MGUwZDA4IGxlZ2FjeS10cnVuaworMjcwNDEgM2ExYWMxMWViZTUwYzNlMjA2ZjE1OGNkNmQ3NmZmNTQwYzEyODRlZCBsZWdhY3ktdHJ1bmsKKzI3MDQyIDczMmI2OTMxODE2OGMyYzgxMTkzNDBlMzdmZjUwNzI0ZDVjMTNmOGIgbGVnYWN5LXRydW5rCisyNzA0MyA1YzU5MDJkZTVhNTQyMTRmMmJlNTA1ZDA5MWViN2ZiMDYxNzAwMjk4IGxlZ2FjeS10cnVuaworMjcwNDQgYjE4MzQ4YmRjYTA4M2UzM2U1ZjYzYzMxMDkzZTljYTQ1Zjg5NmUxZiBsZWdhY3ktdHJ1bmsKKzI3MDQ1IGYxNTllYTk1NWU4MGVhMmJlNGEzMmZlYjQwYTdiNTFmMWZkMTZhNDYgbGVnYWN5LXRydW5rCisyNzA0NiBlM2E4NDBmYTU4NGNiOGJlOWM2N2NhZjJiNDk5OTQyOTIyOTA0NzI3IGxlZ2FjeS10cnVuaworMjcwNDcgZDUwN2FkODYyMzQyMzIzNzY2NzlkMmU2Y2JmODdhYTllMDBiM2YxOCBsZWdhY3ktdHJ1bmsKKzI3MDQ4IDYxMzU4ZjgwMGI2MTY5MDI3OWFkMTRmODRlNTFlZGY0YzgwYmI5NmMgbGVnYWN5LXRydW5rCisyNzA0OSAzMjViYmI0OTM3YzVkYzlmM2Y0NzJhNTA5NzI1MDU4M2MwYzM5NGRmIGxlZ2FjeS10cnVuaworMjcwNTAgOGE5YTNhZmYzMmZjNThkNDFkODlhOWM1NzM3ZmYyOWYyNWNhMjY3ZiBsZWdhY3ktdHJ1bmsKKzI3MDUxIDE0OTM4ZTc2Mjc2YTFhNjk2NjBjOTkzNzI5ZTE0YTcxODg1OThjZTEgbGVnYWN5LXRydW5rCisyNzA1MiBjNGQyZDMwNWZkOTgyYTdkY2U5MDBmZmI5N2RlMTQ0MmRmNGRiMzhhIHJlbGVhc2UyMi1tYWludAorMjcwNTMgZDdiZDdiNzMyOWE3ZWNkNzM5NThiNzI0NTM4NzczNDE0NzJhNzU1YyBsZWdhY3ktdHJ1bmsKKzI3MDU0IGQ2ZmFhMTM3OTQ4ZGVmY2QzZjQwYzY0MDc4ZmRjNGEwNWRkMzgwNTMgbGVnYWN5LXRydW5rCisyNzA1NSAzOTlhZmNlODZlYjBkODA4MjY3MGVmMjAxZjdjYjcwMmU1Nzg2ODlmIGxlZ2FjeS10cnVuaworMjcwNTYgM2JkZmM0NWQ5MDk2OGM5Yzk5ZTM2YTdiN2Q0NWNhN2MzOGQ1MmM4MSBsZWdhY3ktdHJ1bmsKKzI3MDU3IDNhMmE2YWY5MDk5MjgzYmQ5OWY2MWVlY2EwMjE4ODFkMjJlZmMyZGUgcmVsZWFzZTIyLW1haW50CisyNzA1OCA4OTgzMTU4ZTlmMTEzNDZlY2VmZGQyMGVjMTVmN2RjMTc1YzdhZWIzIGxlZ2FjeS10cnVuaworMjcwNTkgMDgwNTdhOTg3OTEwYjNmOTRhMWE1N2I2YjE5NDFlZGI2N2YyZjAwNiBEU19SUENfQlJBTkNICisyNzA2MCBhNTZmOGMzMGFmNzFjODk1YWRjYzg4NmEwZjU2MWFlZTgyN2U1ZTA0IERTX1JQQ19CUkFOQ0gKKzI3MDYxIDhiOWQ5MTMwODIwZWY3ZWQ4NGQzNjRjMjk4MjBlMTZhYjI2YTg0N2IgbGVnYWN5LXRydW5rCisyNzA2MiA2MjY2ZjFiZDFhYjkzZWZkZjE2OGI0NGQyODM0OWIzYTcyMGM0ZjlkIGxlZ2FjeS10cnVuaworMjcwNjMgMDE5OWFhMjc0YzdiZmZkZTg2MzRiN2ZjZDllNmExZDFjZDVmMTJjZCBsZWdhY3ktdHJ1bmsKKzI3MDY0IGNjZWFmNzhiODVkYzcyZTAxYzEwZWZjM2M1YTRkNzZlZWJlYzBmOWIgRFNfUlBDX0JSQU5DSAorMjcwNjUgMGY1NzBiZTY3MzZlYmUyZWY0Y2I2ZTU5MjAyODg4ZWZhZmQwOTJlNSBEU19SUENfQlJBTkNICisyNzA2NiBjMGU4YzA3YWUxZDZjYjU1ZTE4YzJlOTM5ZTZlMmU4M2QxYTY5ZGRhIGxlZ2FjeS10cnVuaworMjcwNjcgNzcxOGIyNzRhZDhiMTJjZDAyYTBlNDhkMzk5Y2VhMTdkYWRiZWVhZSBsZWdhY3ktdHJ1bmsKKzI3MDY4IDE4ZGRjMDJjZTM2ZjM1ODJlOTIwOTQxYTYxYWMyYTAxNTBlODMzZjMgbGVnYWN5LXRydW5rCisyNzA2OSA2N2I5ZjUzYTc4MDE0Y2FkYzUxNzBjMTRkMWNmMWFmNjk0MWU1MTdlIGxlZ2FjeS10cnVuaworMjcwNzAgOWE1YzQ4NTc5NjMzOWVkNmEwZjBlNzM5Y2VjZmJiOWE3YzMzMGY0YSBsZWdhY3ktdHJ1bmsKKzI3MDcxIGQ0ZjZlMmFkZGU0ODQ2YzIwN2UyOTFhMTYyZDg3MzA0YzgzZmVjMjMgbGVnYWN5LXRydW5rCisyNzA3MiBhYmUxYmI3NmVlNDQ3NDQ5NGI2NjA5ZjBiMmMxNGQ3MmQxNGYyMzMzIGxlZ2FjeS10cnVuaworMjcwNzMgZTRhZGQ3YmI1ZjE0OGRiNTFjZDcwYmNiM2ExZGU5YTQ2Y2M3Y2E4OSBsZWdhY3ktdHJ1bmsKKzI3MDc0IGY4NWY0NTMxYzNjMTY0NDg5MjY2MDE3MjdkYmJkZGM4ZWZmMDEwMjQgbGVnYWN5LXRydW5rCisyNzA3NSBlMzdmMWMwZjlhMWU5MzZmYTc2MzhlZTcwMWRmY2ZmOGU5MDNmNDNiIGxlZ2FjeS10cnVuaworMjcwNzYgMDU4YmQyZDUwZTMzMzlmNjE0ZGUwYzc5Y2NiZGYwMzE5YTBkMWZhYyByZWxlYXNlMjItbWFpbnQKKzI3MDc3IDU2YTRkM2E1MGI3NmI4NmRiZDUyZDY1ZWQxNTk0OTE5OGQ1Zjc2OTEgbGVnYWN5LXRydW5rCisyNzA3OCAzYjM3OWFlMzU2OWQ5MzEwYzRmMzVkMTM1MDFlYjk4NTIzZTI1ZGY0IGxlZ2FjeS10cnVuaworMjcwNzkgNDRiOTk3N2Q0ODQ4N2RlZGE1NTI1MTAyNDliNmExNmMwZjZiMTkzMiBsZWdhY3ktdHJ1bmsKKzI3MDgwIDU2NTAzMmI0OGY1MDljNTMzMzhlYjI5MmU1MTMwNWI2YTEzZDg4YjkgbGVnYWN5LXRydW5rCisyNzA4MSAyOGI5OTcxZjA2OGY3Y2Q0YjRjNGQ5NDgzNzU0YzgzOGRjOTg1YWI3IHJlbGVhc2UyMi1tYWludAorMjcwODIgMmIxMjE5YTcyZWZjYTZlYzc2NmZhZjE3ODdiYjA0YzdmNGU4MTg5NyByZWxlYXNlMjItbWFpbnQKKzI3MDgzIDk2OWJkNTk3ZjkyMzhjNzk2NjZlY2EyZGU2YzMwNWQyNWZlY2M0OWEgbGVnYWN5LXRydW5rCisyNzA4NCBjMjczM2U4ZjY2MTJiOWIyNWVhOGM3NDZiMDc2MjI3Y2ExODQxMTcxIGxlZ2FjeS10cnVuaworMjcwODUgZmM1MzYxZTAyOGYzZDdkNmY3MGU1ZTA2NjQ4NWNlZDA4NGY2ZDBjMCBsZWdhY3ktdHJ1bmsKKzI3MDg2IDc3MTU0Y2VmMjlkMTlmNDBmMzVjOGE2MmQxNTI5MWY1MDJhZDY0OTcgbGVnYWN5LXRydW5rCisyNzA4NyA0NDQ5NTRjNTQzNGMxZWY3ZDgxNGY4ZjI4ZmFlYjRhNmEyNmZjZGExIGxlZ2FjeS10cnVuaworMjcwODggMjM3Y2JkMmE5MWU5YmJmY2IyNmU2MzE1NDg1OWIwOTUwMDViOTJkZCBsZWdhY3ktdHJ1bmsKKzI3MDg5IGIwNjIwODVjMWZmMmI4MGE2NTcyYjM1MzFiYmI2NzdmM2VlN2Y3M2IgbGVnYWN5LXRydW5rCisyNzA5MCA0OGU5MzdlMWIzZmUzZDEwYzI2YWEwZDM5NTE5ZjMzNmNlMDhlNDliIGxlZ2FjeS10cnVuaworMjcwOTEgNzVjNTE5OTljOGQ1NGY5NWFkMWI1ODgwMTMxZTRiYmRkODY0NTBmNSBsZWdhY3ktdHJ1bmsKKzI3MDkyIDJmNmY4NzA4ZTNlOTQ1YTcxNjkyYmM5Yjc2OTY0ZTc2MGM5NzBmNTMgbGVnYWN5LXRydW5rCisyNzA5MyBkYjIzOWVjMzA3ZTA3NDcxYzJlOGJhMWYzMDAyZWZlMmUyNzA4ZWVkIGxlZ2FjeS10cnVuaworMjcwOTQgMTIzNWE5NWZlZGNkNmNhZjJmNGY5NGQ2Njc2MGNiMWExY2VjY2IwOSBsZWdhY3ktdHJ1bmsKKzI3MDk1IDJjZDZlZDFjMWI1ODNiYTI3ODc1MDk4MDAwYTZiYWNmZTgwMzYwOTcgbGVnYWN5LXRydW5rCisyNzA5NiA5ZDExZjUxODYwZGQzZTFmZDNmM2ZmYzJiZmQ5NWM4ODBmZDhlZGU5IGxlZ2FjeS10cnVuaworMjcwOTcgNTU2MmE0OTlmYjdmODQ1MWNmZTljZGQxNTVmZjVjNWFmMmQ4ZmYzMCBsZWdhY3ktdHJ1bmsKKzI3MDk4IDVmODVjYWUyNWUxODU1NDE5ZjJlYjM0MjNlODk2ZmE0MGU4MjA0ODcgbGVnYWN5LXRydW5rCisyNzA5OSBhZjhkNDBlNGMzNzc3MzIwNzFhYTI4NjkzNDU3NzBmZDFlMjQ5NGY0IGxlZ2FjeS10cnVuaworMjcxMDAgZTBhOTFjNjczODhmNGZkMGFhNTBkNzYyYjU2NjIzNTQ4M2FkOTJhZiBsZWdhY3ktdHJ1bmsKKzI3MTAxIGJkMjZjMTIwNTkxYTU3OGU5YjE0MGNiNTE2YmIyNjMyOWJhOWM0MjQgbGVnYWN5LXRydW5rCisyNzEwMiA3ZWFhYmU3N2Q1Y2JkOWY3ZmIzZTZhMzBjNDM4YzZkMmJiZWU5NjExIGxlZ2FjeS10cnVuaworMjcxMDMgMzA4MTIyYjY5OTZlNDRkYzE4ZWU5NTgzYzU0ZTQ3MzM1YTM2M2Y1MiBsZWdhY3ktdHJ1bmsKKzI3MTA0IDY1NWY0ODYyODQzNjljZDRjODM3NTMyOTFlMjU1ODdkYTBkNjY4OWUgbGVnYWN5LXRydW5rCisyNzEwNSAxODQyZGI2YTEzOTQ4NTQ2YzFkNmFiZDRjZGYzZDlkZDM4OWY1MjNlIGxlZ2FjeS10cnVuaworMjcxMDYgZGYxYTI3NWZmNGYyNWI1NGEzNTQyZGI5MzVhZmRkOTRmYmQzMDgwNSBsZWdhY3ktdHJ1bmsKKzI3MTA3IGE2OGQyNDY2ZDk0YmY1NTQ5MjA4YmZhZTRkZGNmNmY0MDkwM2Q1ZjggbGVnYWN5LXRydW5rCisyNzEwOCAyN2Y0ODMxNGJhOWQwZTFlYzMzNjRmNjRhMTE2MDVhOTQ1MjhhODEwIGxlZ2FjeS10cnVuaworMjcxMDkgYTIxMzZhZTlkNGY3NmU3MjUwOTA3NDMyMzNiNzIyNjA4ZGE4YzVmZiBsZWdhY3ktdHJ1bmsKKzI3MTEwIDY4OTUyMDBkNjJiMTljZTlkOGI0YzFmZTM3ZWZiYzY4ZDEzM2Q3Y2IgbGVnYWN5LXRydW5rCisyNzExMSBmZTc2OWIwNzE1MDM1M2ZlMjFjNDc2MzllMjdjNzc5YjU0NDA4MzQ0IGxlZ2FjeS10cnVuaworMjcxMTIgMmUxZGVmNDE3ZWNiODk3Yzk0ZWY3NmYxMTg0MDJmNTI1NjQ4ZGQyZSBsZWdhY3ktdHJ1bmsKKzI3MTEzIGVhMDM1NDkwZjYyNDVjMjg5MTQ4MjFkYmM0MzkxYjQ4MjRkMzJkNTkgbGVnYWN5LXRydW5rCisyNzExNCAzODgzMjAwMGY3ZTk0NWJlNWM0NGE2NzY2MDRlNTA3ZjY2NGUyNTBjIGxlZ2FjeS10cnVuaworMjcxMTUgNDNkZGNkY2QzYzcxZmU0ZWY3NDEyYzY5NDBkMmU2YzY0YjhkMjUyZCBsZWdhY3ktdHJ1bmsKKzI3MTE2IDRkNTkzMjU0YmE5MzkyNWRlZWRkMDBhYWNlOTc1NjE0Zjk4OTE2MzAgbGVnYWN5LXRydW5rCisyNzExNyAyZDY3YTBiYTkwMjBkMjhlODkyZDhkNjVjM2E0YjIzMTczZTM0MGU1IGxlZ2FjeS10cnVuaworMjcxMTggMzY2ODc3ZWRkNDg3NjNjY2E4YTE3NDZkNTMzMzcwZDkyMzFkNDc3NSBsZWdhY3ktdHJ1bmsKKzI3MTE5IDdiYzQ4MDI5ZWFhOWNiM2Q5MGJiZTgyN2RkZjc2NzJlOWI0N2VhNDEgbGVnYWN5LXRydW5rCisyNzEyMCBhMTY4YjJmNmQ3ZGFhZDZmNTgyNmVmOWVlOTU2Mzc5NjcxODkwZmFmIGxlZ2FjeS10cnVuaworMjcxMjEgNDcxYTU3YmYyZGFlMTg1ZDQ4MGFlM2Q4Y2JhMDQ5NmEzMTUxOWQ0ZSBsZWdhY3ktdHJ1bmsKKzI3MTIyIDQxMDk3ZTkyZjU2MGY5OTkzNGJiMmFjZmNkMjgxNjQ4Y2IxZjkxMWUgbGVnYWN5LXRydW5rCisyNzEyMyAyYzhlYTdmOWEzY2VkYzM3ZmYxYTY1MzlmZmI1ZDM5MjkxYzA3YTkwIHJlbGVhc2UyMi1tYWludAorMjcxMjQgMDI3OTA0MGFlMDNjYmE0ZDg5YmUxMGFkNTQyNjM2NTEzMGY2NzcxOCBsZWdhY3ktdHJ1bmsKKzI3MTI1IDhlNWYyNjc5NjYyMDBiMDMzNzIyNzNmNzljYTRjZGIyNzIwZmUyMDAgbGVnYWN5LXRydW5rCisyNzEyNiAwNzcxZjkzODJkMWUzMmRlODk1NjBiZmVlNTJmYjMxMWUzZmM0ODJmIGxlZ2FjeS10cnVuaworMjcxMjcgYzdlODA3ODE3MTU5MWNjZDdjZWJkN2VmNTQ1ZTFlMTdmN2EyYmUxZiByZWxlYXNlMjItbWFpbnQKKzI3MTI4IDkxMzE3MzAxZGQwOThjYTMzYjdmMjEwMjFiNzU2NjhmNzUxMWEzOWMgbGVnYWN5LXRydW5rCisyNzEyOSBlNjQwZDg5YjQ5MDc0MTVhMDg0MDg2MjBmZjMyMmVmZGMyZjlhODQ2IGxlZ2FjeS10cnVuaworMjcxMzAgOTRkMGRjOWQ2ZTQ0ZWYxMDc0MjNiZTZiOTMwZWY4YmVkNjZhODA3NCBsZWdhY3ktdHJ1bmsKKzI3MTMxIGJhZGJjNTMzNDQ4ODYxMjJhYTg5ODI1MzFkY2JhYmVlMGE0ZWJlMGUgbGVnYWN5LXRydW5rCisyNzEzMiBmMTZmNmRhNGY1ZmZkYjZkNWRkYzcwYTIxMGRjZDgyOTY2YTBjNjRhIGxlZ2FjeS10cnVuaworMjcxMzMgZDU4ZmI1NDQ1MTE4ODhlNmZiNTkxODYzZWM4NTllNjY2NjdhYTkzOCBsZWdhY3ktdHJ1bmsKKzI3MTM0IGE3Y2VhZGIwM2VkYzkxNzQ1NDRhNTkyYjU2MTE2NGY4MjY4MWQyNzUgbGVnYWN5LXRydW5rCisyNzEzNSAxY2JjZGRjYTMzYjAyODNjMzg0NmU4MDJjMzlhM2NiY2JjYmRlY2JkIGxlZ2FjeS10cnVuaworMjcxMzYgNWZiMDhkODMyZWFjOWM5MDgzN2Q0ZjIzY2Y4ZmU5ZDVkYjcyMWVlZCBsZWdhY3ktdHJ1bmsKKzI3MTM3IDQ2ODBlZjRmZTkwYWQ0NTMzZDM0YmI2NDYwNzQ5NTNlMmE3MDQ5OTYgbGVnYWN5LXRydW5rCisyNzEzOCAzNWI2MjkwODU1ZmMxZTg3NDM4ODM1ZmNhOTE1MzdhYTkwM2JhMmRjIHJlbGVhc2UyMi1tYWludAorMjcxMzkgZjZiMjcxOWZiZjExOTg5N2VhZDI1MDcxY2ZkYzJhZDU5ZDM1YTBhNiBsZWdhY3ktdHJ1bmsKKzI3MTQwIDA2ZGJkMDg5OGIzOWUyNDNkYTMxZDQ3ZTcxYWZkNmYwMzhkMWYxOGYgbGVnYWN5LXRydW5rCisyNzE0MSBhNTUzNGZhZTUxMTAxNjg2NzcyMjkxMTcwMDNjMTgzN2MyZGEwYjMwIHJlbGVhc2UyMi1tYWludAorMjcxNDIgMGM2NWY0MWZkOTIxOWVkOGZkMjNiZGM0NmI5MWM1ZDM5YjVmOWY4ZSBsZWdhY3ktdHJ1bmsKKzI3MTQzIDUwMDYzMDE2ZDA0Njk5ZDExODZmZTI4ZDE3ZWNhN2M2ODFlMTdjNGQgcmVsZWFzZTIyLW1haW50CisyNzE0NCA1Zjg2YzIxYmQ5ZmM4OTA1NjU2YTJhNDRmN2I3YmZmNDQ5ZDMyYzBhIHJlbGVhc2UyMS1tYWludAorMjcxNDUgNzFkYjQyOGY2ZTA4YTQ1OWFlNGM0MmIxZTg2ZTQ1YmM5NjczYTMzNiBsZWdhY3ktdHJ1bmsKKzI3MTQ2IGJlYzFiOTQyZTBiYzNjZDcxZTc2OWEwMTcyMzExZjU2OTIzMGJiYjggbGVnYWN5LXRydW5rCisyNzE0NyAyNDUyMjRkMWI4YzkyMDFhMmFlODQzZWUxMjE3ZTNiZTNlNzUxNjQ0IGxlZ2FjeS10cnVuaworMjcxNDggNTVjOTIyNjY5OTEzMTM0MWUyN2Y0OGE0ZWU4MzdiOWZhYzUxMWM3MCBsZWdhY3ktdHJ1bmsKKzI3MTQ5IGM3Y2RhNjNhMDA3ZTQ0ZjYxNmQwNWE0YjA5NmJkZDYzN2Y4YjU5YTggbGVnYWN5LXRydW5rCisyNzE1MCA3MzA0OTBmZjI1ZWEzOWJkNjUwMjFhOWU0ZWUwYTg4MzYyOGFjN2JkIGxlZ2FjeS10cnVuaworMjcxNTEgNTRmNmY4OTEzOWRiNTNkOTE4ZTU1NjFjNzU1OTczZjIzMDVhNTI2YyBsZWdhY3ktdHJ1bmsKKzI3MTUyIDBkYWI4YmExZDI5ODA3OWY5YzA0NTllNmUxNWVlNWQ2ZWIyYzZjM2IgbGVnYWN5LXRydW5rCisyNzE1MyAyNGIwZjZkNjkzZTM0YjM3YzUyZGYwNTkwOGUyYjdjNWRkODNkNmVhIGxlZ2FjeS10cnVuaworMjcxNTQgN2EzMmMyMzU2ZTU2N2NmODk5YTI2ODQ2MjNmNTRmMDBhNWIyMTQ5NyBsZWdhY3ktdHJ1bmsKKzI3MTU1IGUwZmJmOWM0ZDQ2YzJkMmJlOGQ3ODUzN2RkMmZiNGViNzc1NzNhZWQgcmVsZWFzZTIyLW1haW50CisyNzE1NiA5MzI5NzcwNjM3YTg1ODUyMTk0ZjZlYjY5NGQxNDc1MzkwMmQyNTc1IGxlZ2FjeS10cnVuaworMjcxNTcgOWRhMmQ4YzEzMjA5MDk0ODM1OGI4NjNiNWEwYjdlM2EzMTBhMGY3YSByZWxlYXNlMjItbWFpbnQKKzI3MTU4IGMwMWMxYjRhODE3MTZkMWUyMzdkNDEwYmMzYmUxOTk2OGM0ZGM2NDAgbGVnYWN5LXRydW5rCisyNzE1OSA0ODZmNDA0NWQxM2RmNjA4OTZhZWY5YmMyMWQ5NjE2ZjM1Y2ZlOTQ3IGxlZ2FjeS10cnVuaworMjcxNjAgY2RlNjYwODczOWM0MmQ0NWExZjZiMDg1MDdmNzU1N2M0ODljNDUxMCBsZWdhY3ktdHJ1bmsKKzI3MTYxIDdkZDQzMmUxZGUyNjY2NDAyZWY2YjU5MGZmMzIwMDU5ZTJhYzZmMjAgbGVnYWN5LXRydW5rCisyNzE2MiA3Y2RjNTMxZTZhNTA0YTA5ZDc4MzdmN2ZiYmJhNTNjMjkwNjMwZWFlIGxlZ2FjeS10cnVuaworMjcxNjMgMWYxYTZmN2RkNjAwMTRkYjA2Y2Q4YmFlZWQ4ODllMTQ3OWEzZjk1MiBsZWdhY3ktdHJ1bmsKKzI3MTY0IDgwZDQ1MGU1NTJmNjk5Y2U2N2EwZjc4MWU3YmExYzc4Y2Y5MjYwOGIgbGVnYWN5LXRydW5rCisyNzE2NSBmY2MzNmVlMTkyNGIzMTZkYTk3NjQ2ZThlOTIyNDczNDU5N2UwY2JmIGxlZ2FjeS10cnVuaworMjcxNjYgYmEyOTQ4NWQwNzIwYmVlYThmMDE2NTdlNDJhMmQ1ZTNjZjJlODk4NCBsZWdhY3ktdHJ1bmsKKzI3MTY3IDFkYTZkNjdmNGEwNWM1ZTMwZjNmNTQyZjZiZGE1MmFjZDQ2MTU1MDIgbGVnYWN5LXRydW5rCisyNzE2OCAyYWQxM2VlNmQ4NTA1YzJjMjQxMDA4NmMxOTYwNTFmODUxODgzMDU3IGxlZ2FjeS10cnVuaworMjcxNjkgYmYxNTU1YTkyNzExN2RiMThkM2VjNjI5M2RhODk0YWZhOGZjNDYxNyBsZWdhY3ktdHJ1bmsKKzI3MTcwIGIyYjFmMWZmNWM3MWNkYTdjMmRmNzQ1OGZjOWRmOWZlYmE2YjU1NTUgbGVnYWN5LXRydW5rCisyNzE3MSA0ZWM1OGMyNzBmM2VjMGMwYzllZWY4OTg5NTEzNzY2NjMxYmQ0MmNhIHJlbGVhc2UyMi1tYWludAorMjcxNzIgN2VhZDJkOWRmN2Y5NjhjZDU0Y2NjZjZiMWI3MDY1N2E3MDQ3M2Y0NCByZWxlYXNlMjEtbWFpbnQKKzI3MTczIDBiMTJhZmM0MDEyYTgwNmNiYTQ1ZTYzNTQ0YjBiNzk1YWM4NzdkNzMgbGVnYWN5LXRydW5rCisyNzE3NCAwNjAxZWNjN2Y0YmY3MzlkZDM5NzgyMTdjMmMzZjM0NzBjZTA3N2NmIGxlZ2FjeS10cnVuaworMjcxNzUgYzc0ZDg2ZGM0MDE3NzRkYzk4ZWU0MDUxNGZjNmNlZDY3OTgyZGVhYiBsZWdhY3ktdHJ1bmsKKzI3MTc2IGNjNjViNWJjZmMzODM2OWI4ZDliNjU3NmE0NzlhZjYxYzE2OTY1N2MgbGVnYWN5LXRydW5rCisyNzE3NyA3OWRjZDU3ZjI3MmRlYzQ5MzMzMzU2YzkwNDVjNzY0Zjk2NzY2MjA2IHJlbGVhc2UyMS1tYWludAorMjcxNzcgYmI1YjM3MDQ5MmQ2YTM3NjllN2UzYWE1MGJmNDU3MDZjMmQzNDJmYSByZWxlYXNlMjItbWFpbnQKKzI3MTc4IDAxZTRiNjk4ZmY3ZWZlMGIxZjMyOTdhMWI2OWNiN2RkYjI0YWM2YTkgbGVnYWN5LXRydW5rCisyNzE3OSBlM2UwMTliYzRlMWVjZTQxNDVlZTE3NTc1MWNkNmM2Yjg0NzAxYzU1IGxlZ2FjeS10cnVuaworMjcxODAgODlhN2ZhOTE4YzNiN2Y2ODlhZjQzNGJmNTc4YjM2ZjM2N2JhNGY5YyBsZWdhY3ktdHJ1bmsKKzI3MTgxIGY2YzI2ZDA4M2JmNmM4ZGYzMDg5M2VlNmRhYmY0ZmM5ODYxODZmNWEgbGVnYWN5LXRydW5rCisyNzE4MiBjN2Q3ZDIzMTliM2ExYzdiYjUzYjFkZWYxYTY4N2MxNzMwYjgxZDMzIGxlZ2FjeS10cnVuaworMjcxODMgMjAzZDE0MTJhN2U4MjZkM2MwNDI5NjJlZjVmYjI1MTlmNTFmMzZjYyBsZWdhY3ktdHJ1bmsKKzI3MTg0IGU0ZDU1N2Q0NmI5NmZkNjU0MjJkYmUzNzY2NWE0NzNkZjczMDNhZDQgbGVnYWN5LXRydW5rCisyNzE4NSAyZDk3YmMyYmE1MGQyNzhkMGJlYjYyZjYzZGY0M2VkMDY2NmI3NWIwIGxlZ2FjeS10cnVuaworMjcxODYgOGEwYTE0ZTM3MjVlMzc2M2YxNTY3Nzc2ZmFhMGI5NzFlMWRmMjkyMCBsZWdhY3ktdHJ1bmsKKzI3MTg3IDQzZDY1OGRjOGRkMzZlNDQ3MzZkM2I1MTZiY2VjYzkzZmRlZjMxMjggbGVnYWN5LXRydW5rCisyNzE4OCAxMzBmZmY0ODZmYTY0ZWY4MjAwNmQyNzA1NWQyNDc2MWU0NTAzYjg1IGxlZ2FjeS10cnVuaworMjcxODkgMzEyNmM0MjYyOTYyOWI3OTVhYzNkYzA0YzY0N2MxN2FlMzcwOTdlNiBsZWdhY3ktdHJ1bmsKKzI3MTkwIDk5ZDIyNzIzMjUyZjU5MDg5OTVkZDg2YTM2NTc2YjI3NTI4MGJlZTAgbGVnYWN5LXRydW5rCisyNzE5MSBjNDhiZjVkZjYxNGFjMDRhN2QyNTU2ODdhOWIwZDc1NTA4NjUyMjFhIGxlZ2FjeS10cnVuaworMjcxOTIgOGZmNjkxZGM3ZjI5MWRkZDBjN2I1MjY4N2FkYmI1OGZmYTE3ZGM4NiBsZWdhY3ktdHJ1bmsKKzI3MTkzIDlmMDAwOWNhOTdiOWE1YzJkN2M4N2VkOGRhOGQzYzA1MTEyY2VmYzAgbGVnYWN5LXRydW5rCisyNzE5NCBhYmNmYTQ5OTUyYzQzMjYyN2U2ZDExNGM2ZjAwYzhmODE4ZGNkZWQzIGxlZ2FjeS10cnVuaworMjcxOTUgZDVlODhjMGM5ZTA5ZWU1NWFiMzgxNTkwMDNlMzNkYTllYTIxZjg5OSByZWxlYXNlMjItbWFpbnQKKzI3MTk2IDQxYzRkZGFiMzZmMmUyMWUyYzEzNzQyMThlMmFlMGRkZjZhNTE2NjggcmVsZWFzZTIxLW1haW50CisyNzE5NyBlNDI3MmFkMWE2MzY5NGEyMGQxYjE1MzJjZWJlNDQ5YWY3NzNmMzgwIGxlZ2FjeS10cnVuaworMjcxOTggYWRlMWQ1NjEwOWE4MmY5NTBiNTk4OTIwMzAxZDc2YTMyYjNiZGM5MCBsZWdhY3ktdHJ1bmsKKzI3MTk5IGY3MzA2YWU4NjYyZGI1ODgyMGNmZWRiMjg0NjVmOWQ0OTdlYWRiNTEgbGVnYWN5LXRydW5rCisyNzIwMCBlZDFiYTM3YTQ2YjczZjBjNWIyNzEyNDU1NTRjMmRjN2JlNDdhMzJmIGxlZ2FjeS10cnVuaworMjcyMDEgOWYwYWQwZWI2MWYwODZjY2Q3YTdmMmE2NjJlYmUwOGQzNDNmNDA3OSBsZWdhY3ktdHJ1bmsKKzI3MjAyIDhhZTI2ZDliZTFiNGZjMTNmNGRmNTkxMWJjMTRhOGM1OWQ1YzFhYWUgbGVnYWN5LXRydW5rCisyNzIwMyAxY2YxZjk4MTIyMTk3OTg5NDMzMTRmMTNhZjI1YTAwODNiZmJhNWEwIGxlZ2FjeS10cnVuaworMjcyMDQgMDY1YTdmMjNiZTJmZDQ0YWM3YWIwOWU2ZTNjNzU0N2Y4NTU0OTQ4NyBsZWdhY3ktdHJ1bmsKKzI3MjA1IDM1OWE1N2U5NmQ1ZWI2M2JkYzU3N2UyMmU4ZDY3MGEzNzAzYWQxYmMgbGVnYWN5LXRydW5rCisyNzIwNiA5NTI2M2NjZWM4MTljY2M1MmZjMWRlYjU4MjQ4Y2EzNjhmZGM1Y2MyIGxlZ2FjeS10cnVuaworMjcyMDcgYzg4MTViZDAxZmY1NzhlNTlhNTY1NDYyYmEwZDU1YWEwOTI5MjEwYSBsZWdhY3ktdHJ1bmsKKzI3MjA4IDkwMzExMmMxYzg4NzYwODhiOTdmZjExNzc5MzYyM2FmNGFkNGYxNGIgcmVsZWFzZTIyLW1haW50CisyNzIwOSAzZjE5NmI0ZGM0YzEwNmVjMzY2OGI3ZjY5ZWJmYTkxMjdiMmNmMTJiIHJlbGVhc2UyMi1tYWludAorMjcyMTAgNmM2MTljMTYxYjg3ZjhkZmQ4MTEyNjU2YjA3NjBmNzJkNjA5NmQxZSBsZWdhY3ktdHJ1bmsKKzI3MjExIDg1YTRlNzI3YjE2YmExZTczYWNhNGQ1YjEyOGIxZDNiMTllNWNiZmEgbGVnYWN5LXRydW5rCisyNzIxMiBiZDM3ZWI0ZGFmM2I2NzQ4MjhkNjBjNDljYTQ4N2U5ZDIxOWYwNzE3IGxlZ2FjeS10cnVuaworMjcyMTMgYjQ4MWJhOTY3YWQ4MzcxMGQzNjlhYWE1OTZmMTQzZTUwOTI5Y2Q3MCBsZWdhY3ktdHJ1bmsKKzI3MjE0IGJlYjY5OWUxMGIyOWNlMjI0ZTAxMGU1OTg5NDBlYzgyOTgyYjA2ZDggbGVnYWN5LXRydW5rCisyNzIxNSBmNmMyYzA4OWZkZjJhZTAzZTM3OWI2OTljNDYzMjNkYzMxM2U4N2M2IGxlZ2FjeS10cnVuaworMjcyMTYgNzI1MmI4NjdkODFlMjhlZmNmNjI5ZTEwOWE0OTZmY2U0OGU4YTRkNSBsZWdhY3ktdHJ1bmsKKzI3MjE3IGM5YzhmNTIzZmYxYjU2NjdmZmRkZDZjMjgxOGY5MzZjY2VjZmQ2ODYgcmVsZWFzZTIyLW1haW50CisyNzIxOCA4NTQ1ODNjZDYzYzdjZTU3M2I3Yjg3MjkyZDBiZTQwY2FhZDQxOWZkIGxlZ2FjeS10cnVuaworMjcyMTkgZDZhZTU0NGFjZDI0YTFmNzJjZTAwNTM0ZmVkNDY0ZmRlOTFlZTUwNCBsZWdhY3ktdHJ1bmsKKzI3MjIwIDQ2Mjc1ZjllNzQwNzEwZDliMGU1YTBhZjI2NGJkNDJkOTY3MTdiNzcgbGVnYWN5LXRydW5rCisyNzIyMSA4YTQ3NjkyNGVjZmVhMTk0ZjQ3YzBjMjY2MGNkMDZkYjFkODBhMzVhIGxlZ2FjeS10cnVuaworMjcyMjIgOGJjNGU1YmExZjY1MTdhNzg4N2U4OTJhOGJjNzJmMzE1NWE4MDI2MSByZWxlYXNlMjItbWFpbnQKKzI3MjIzIDJiMDcxMzM3MjA1YzAxYzI2ODViMWJiZjIyYWZmM2E1ZjA1NGY1MmQgbGVnYWN5LXRydW5rCisyNzIyNCA4NjhjZmJkY2E5MDk2OTliMGM1NjkzMDBhMWUwMjc0ZDI3NWE4ZGFlIGxlZ2FjeS10cnVuaworMjcyMjUgNTAyN2U3YzEyYTE2MDAzYTA2ZmIwM2EwYTQ0MWZmY2JlZDhkYzk1MSByZWxlYXNlMjItbWFpbnQKKzI3MjI2IDU5ODZkYmQwMDk0ZmMzYjNmNDMyNDFlMDFhOWU4YmNjY2FiZWRiYWYgbGVnYWN5LXRydW5rCisyNzIyNyA2ZDAwOGE0ZTI2MzMzNWVmZjdlZTM2ZDc1MTRiNDdlOWQwYWUyY2FmIHJlbGVhc2UyMi1tYWludAorMjcyMjggNjNlZTMxYmIyNWYzMjU2MDI5Mzc3ZjZiNzQwMzY3YzhhOGUwNTJkNyBsZWdhY3ktdHJ1bmsKKzI3MjI5IGQ3YjMwN2MzNzljOGRjMWRkNWQwMzZmZmM0NzlkYTczNDNiOTkzNzAgbGVnYWN5LXRydW5rCisyNzIzMCBiNzlkNDMzMDVjNzJkOTQ3M2Y1ODUzNmNlYTE5MzFmZjkzYTczZTY0IGxlZ2FjeS10cnVuaworMjcyMzEgZGZhNjg2NjhkMDBlY2RiNTZhZmJmZGJlNDVkODZjNTM2MzA1YjY3NSBsZWdhY3ktdHJ1bmsKKzI3MjMyIDZjMWEwZGM4NTFiNmMxY2MzOTVjODZmMTdhZjY3MjlhZTE4YzIzNmQgbGVnYWN5LXRydW5rCisyNzIzMyAxYTc2ZTNjNDUwOGYzNjM1M2IyZTNkYjY1Y2UyZmU3ZDZmY2NiYjQzIGxlZ2FjeS10cnVuaworMjcyMzQgNDg3YTZiOTlmNzgxMWIwZTgxMDZjMDNkZGYyMWUxYTRlYjM3ZDJmNCByZWxlYXNlMjItbWFpbnQKKzI3MjM1IDQ1ZDY3NjkzMzg4MjhmN2YxYmRhMzA4ZTE3YWU0MTc1ODZjMjNlZjIgbGVnYWN5LXRydW5rCisyNzIzNiA4ZTY3NjBiZjE4ODRlN2NiNDAwODdhMWJmNmU0OTM1NDRkYjViNTEyIGxlZ2FjeS10cnVuaworMjcyMzcgOGFkODFiMzc5NTUyMDA1OGFlMWM3ODQzZjAxMDMwZDYyZWY1MmFhNyBsZWdhY3ktdHJ1bmsKKzI3MjM4IDYzZDFlMzI2M2Y0NTYyZjM5NTQ1OTI2MTM2NDE2YmUxNDI0Zjk0ZWEgbGVnYWN5LXRydW5rCisyNzIzOSA5NWU3YmJiZDA5NTQ5NDVlZGE5ODdjZTcwMWVhMzczNjUxNWU0MTc5IGxlZ2FjeS10cnVuaworMjcyNDAgYzAyZDFjOWE2NjJlNjY1YTQwN2Q1MDk5NGE0NDRmMjIxNDMxNTMzYSBsZWdhY3ktdHJ1bmsKKzI3MjQxIDQ1ODhiNjgyMGExMWU1NGJiZDQwOWZiZWZjYzU3MTkwYmE1YmM1NDIgbGVnYWN5LXRydW5rCisyNzI0MiAxNWFiMjkzOTM3NzlmMTlhYTgzYTJhYmY0YzlkZjNiN2I3NTAxMWQ2IGxlZ2FjeS10cnVuaworMjcyNDMgNWFmZDE0YTJhOGJjNmM4NzYwMTQ4MWE2NTJkODgxZjkxNmNlNDc5ZCBsZWdhY3ktdHJ1bmsKKzI3MjQ0IDgzMmYwNTAxMTQ4YmI3OGVjZjJlZTQzZTI5ZDNiMjY5NWM0ZWQxN2YgbGVnYWN5LXRydW5rCisyNzI0NSAwNDk5ZGY1ODg0ZDJmNTRmZmM0M2YwNGY2NzMxZTQ2NjcyNjg1MWQ4IGxlZ2FjeS10cnVuaworMjcyNDYgNGY2ZDMxZGFjZDVlNjdlNDljNTJjNTc3MzliZTJjZDAwZWY4OTMxNCBsZWdhY3ktdHJ1bmsKKzI3MjQ3IDA4NDc1Yzg3ZDI0ZjUwZDI3Yjg0M2UxMmU4ZTEwNzY1OWZkNzc3Y2MgbGVnYWN5LXRydW5rCisyNzI0OCBiYmFlYWYyNzE5YzRiYmU2NTYyZTg3Y2UwYTBjZTkxODY1NzZhN2JiIGxlZ2FjeS10cnVuaworMjcyNDkgOGI3ZDg3ZWE0ODk0ZTFkNjA5NjBiYjA4NmZkMjg1M2I3Zjc2YWFkNiBsZWdhY3ktdHJ1bmsKKzI3MjUwIDNkYmE4NjZlODYyZTlmZmE2MWJhNDUxYjRiNmY5NzFkNTAzMDAyMzYgbGVnYWN5LXRydW5rCisyNzI1MSAwMDBhYjU4NGU3N2E2MWI0Mjg4YWViMWI2M2JjZDBlNzVjY2E1N2YwIGxlZ2FjeS10cnVuaworMjcyNTIgZWE3ZTcxN2RlZTI3MjNiNDE2NDk5NzYwZDU1NTQ3ZjA5ODA4NjAyMiBsZWdhY3ktdHJ1bmsKKzI3MjUzIDRjNjdkZDQyYTFkOWVhMzhjNTk5Yzk3MzQ4ZmVjY2NjYzdkNDFiZDkgcmVsZWFzZTIyLW1haW50CisyNzI1NCBhYjUzNTVkODczZGQ1ODdjMWJlZTQ3MDBkZDIwM2YzZThhYWQ3Y2M5IHJlbGVhc2UyMS1tYWludAorMjcyNTUgMWNlZjYxZDU5NDc4NjcxZTA1YmIzMjU0YTE2ZDhjYjJlNjJlNWNmYyByZWxlYXNlMjItbWFpbnQKKzI3MjU2IDdiNjZmMDAzNDIzM2E3NjY3NDFjMzM2ZTQ5NjAxYmYzYjY3ZGJjMTIgbGVnYWN5LXRydW5rCisyNzI1NyA0MWFiNTMyZDRmNjAxY2NhNDRjYzY5OTViMDAzN2I1YTliMzhkY2UxIGxlZ2FjeS10cnVuaworMjcyNTggYzE0NWZkZGVhMzQwODRmZjYzYTE5MGJhMzYxMjM0ZmMwMDgwZjM3ZSByZWxlYXNlMjItbWFpbnQKKzI3MjU5IGVhOWQzMzNmOTAzNGUxZDUyMzc0NjJiYjgzMDAzMjg4M2ZlZWFlNDAgbGVnYWN5LXRydW5rCisyNzI2MCBhNDRmMzg3N2EzODZiZjI3Mzg3NTRlMTljNTMxNzhiZGQ4ODBkNDc3IGxlZ2FjeS10cnVuaworMjcyNjEgODNlNDU4YTYzYzNmYmFjNDM3NmU0MmQ5NGIyMmRkNjM4MTMzM2ZkMCByZWxlYXNlMjItbWFpbnQKKzI3MjYyIDMyNGM3MjY3NWM4ZDA0YjRiMjI1M2MwY2E0MjhiNjhkNDRkYjJlZmMgcmVsZWFzZTIxLW1haW50CisyNzI2MyAwMmM1MDQ1ZDViNGUwYTMyN2Y4ZmU4ODkyNzcwYjg2ZWNhODMyNDgxIGxlZ2FjeS10cnVuaworMjcyNjQgYWQxZDg2MmZiNjMyNjRkZjBhM2Y4MjJjYzQ4NmE4NTY0ZTExNzk0NyBsZWdhY3ktdHJ1bmsKKzI3MjY1IDgzMDVhMTk1ODRiYzg4YWUxNmU2OGE4ZWNmNTVlYWQxMjA2NjYwMjggbGVnYWN5LXRydW5rCisyNzI2NiBmNTAzMGEyOTkzNWRjYWIzYTMyY2RhMGE4NmIxMDEwYWZmOGVhNzYxIHJlbGVhc2UyMi1tYWludAorMjcyNjcgMjg1NzAyZjA4MjRhNjM3ZTczYzhlNWYxYmE1ZjRiYWZjNDI1MmQxMiByZWxlYXNlMjEtbWFpbnQKKzI3MjY4IDA4OTk0MDlhMGNiNmQxZTFlM2E4NjM2OTg3Y2MzOWM2ZmVhNTY0MjkgbGVnYWN5LXRydW5rCisyNzI2OSAwMWNkZDM4ZDM1ZmEwZDBjMjBiMWUzZjMzZmE5ZjFhMzhhZGRkNTczIHJlbGVhc2UyMi1tYWludAorMjcyNzAgYTA3YmMzMDNhNjBkOGFlM2I3NGU1OTVjMTYwYzNjODhmYWY1NTE2OCByZWxlYXNlMjEtbWFpbnQKKzI3MjcxIDA2NmY4OTM4MDcxYTU1MDg4ZGRmN2RmY2NiNjkyMjgxYWZiYzNhOTAgbGVnYWN5LXRydW5rCisyNzI3MiA0ZjA2MDZjZWVlZjhjOTQzOTRlYjJiY2YyOTNlMWRlNTA1ZTM1NzAyIHJlbGVhc2UyMi1tYWludAorMjcyNzMgZThiYWUyNTM3ODRiM2VkY2JjZTEzMjY0Mjc0Y2JlNDczNzIyYjc3ZCBsZWdhY3ktdHJ1bmsKKzI3Mjc0IDljZTcxYjFjYzE3ZjcxOGU5Y2I5MjUwY2IyMGRmMjdjMWVkM2VhNzEgcmVsZWFzZTIxLW1haW50CisyNzI3NSA3M2NmNGQ4NDc1NzBlY2FhYjU0ODUyNDNkYTg3YmVhNDE1OTEwOTdjIGxlZ2FjeS10cnVuaworMjcyNzYgOTJmMjg5YzJmN2M2M2Q5NzdiMTU5MTllOGIzOGRhZmU0OWQzNTliYiBsZWdhY3ktdHJ1bmsKKzI3Mjc3IGIxNmQ0YmU2YTIzMmVlMTgxMTE4NDc1ZTMwZDBhYjkxZTRlNDUxYWIgbGVnYWN5LXRydW5rCisyNzI3OCA5MjEwNjRjMjYyOTdiMjVlYjIzYmE5NmQ0Y2MxYmViMTc0M2E1OGNmIGxlZ2FjeS10cnVuaworMjcyNzkgNjg5M2NlZWM4NjEwZTljNTQ4NDM0NjFkNDkzOGQ3OTVmMmZhNGJhNyBsZWdhY3ktdHJ1bmsKKzI3MjgwIDA3NWY3NTVhNjVkYTE2YmRlZmZmMzcwOTAwYTgzOTIyYTA1NDE2MzQgbGVnYWN5LXRydW5rCisyNzI4MSAxMjk4ZTk3ZmIzNDNhZGIxNmIyZGQxZWRiZDNjNDZjZTZjNzVkYmExIGxlZ2FjeS10cnVuaworMjcyODIgN2UzZWFjNWQzMjk5NzljZDk2MjBmOGUwYjFmZTM0YTU4NDdjYTBkZSBsZWdhY3ktdHJ1bmsKKzI3MjgzIDYyMGI2OTk2ODVmZjA0MjhkMjk1NjBjOTk3OWFjMzJkM2UzZGZhMWQgcmVsZWFzZTIyLW1haW50CisyNzI4NCBmZjBjZDY4NzhiZGRlNWZiZjIzNjU3NTcxMWEwODVkMzRiNTcwNzZmIHJlbGVhc2UyMS1tYWludAorMjcyODUgY2UxNjNmMzQwY2RmZjVjMzYyMmY5NjIyOGViODFiZTMxNDJhNmU5MCBsZWdhY3ktdHJ1bmsKKzI3Mjg2IDBiY2VmM2NhMjFjMDZhMzcyMzg3ZDE5MThlOTc1OGVkN2EzOWM3MTcgbGVnYWN5LXRydW5rCisyNzI4NyA1ZjY5ZDZmMTdhYTMxMDkyZDcwNzdhZjJmOGNkYjg3NThjMmEzMGM3IHJlbGVhc2UyMi1tYWludAorMjcyODggODE1ZDAyODAwZDk4MGJmMDIxMjA4NDQ5NTVmZmQwODI4MTQ1YzhmNiByZWxlYXNlMjEtbWFpbnQKKzI3Mjg5IGJhZTk5NmJiN2Q4MmNlMmRlZTkyNDE3NzFmNGEyYWU1Y2MyNTk3NjYgbGVnYWN5LXRydW5rCisyNzI5MCAzNzU2MGY0MzRmNmEyYmVhZTBkYTZkMmE3NWNiMTQxYzE4N2NkZjZmIHJlbGVhc2UyMi1tYWludAorMjcyOTEgMTJmNDlmYThmNDdmMmFiYTI0NjZiZjIwNGMxYzQxOWUxOGViMDdmMyByZWxlYXNlMjEtbWFpbnQKKzI3MjkyIDkyMTFiYzcyNDlhMDdlYjM0NDJkNGNjZDA1MjI2M2FlNTk1NzA1MTYgbGVnYWN5LXRydW5rCisyNzI5MyBmYmE3ZDEwMzVmZWQ1ZWZjMWFhNDAzMzFhMTBjNDdiNWMzZmNlNDg4IHJlbGVhc2UyMi1tYWludAorMjcyOTQgNTU4NmYyMDg1ODE1ODZiNWY5MWI4ZDkzMDdjMzQ0M2VlZWJiNzM0MiByZWxlYXNlMjEtbWFpbnQKKzI3Mjk1IDk3MGFhOTcxMjgxMzFhZTQ5NzdlNzk5MjcwNjFkMDRkOGUyOTJhYmEgbGVnYWN5LXRydW5rCisyNzI5NiA3ZGZlNDhjN2FhNjVlMGM2Y2VjZDE1ZTk4MWFmYzBhYTg0YjA4NmE3IGxlZ2FjeS10cnVuaworMjcyOTcgMjZiYTE3Yjc1OGI5ZWRkOTliYmRjY2U5NDU4NjU1NTk2ZjVkYTQ3ZiBsZWdhY3ktdHJ1bmsKKzI3Mjk4IDhlYjJmMzFlZWE5ZWIzZWFlMmFhMmM2NDM4NmYyODljMDQxYTA1YjMgbGVnYWN5LXRydW5rCisyNzI5OSBlNTU4YTQwYjZiNTIzMTE2MTBkOGIwOTFlNGYzOGMwOGIyYWEzMWJhIGxlZ2FjeS10cnVuaworMjczMDAgZWFiOGVjYTllYzUxZDJiOTJmNzI5ZGEyM2E1MDNmZDI5OGRjYTRlOCBsZWdhY3ktdHJ1bmsKKzI3MzAxIDVhMjMwMmY3OTcyNDllOWExNjZjMDY5MTA4OWI5YWQ0NWI5NWE5NTUgbGVnYWN5LXRydW5rCisyNzMwMiAzMDQyZGFkMTQ5YWU3M2U3M2NkMmM1NDkyNTdiMTg5ZjBlZmY0MGFiIHJlbGVhc2UyMi1tYWludAorMjczMDMgYjViZGU3N2RhMjBlMDdjZjkxN2RhOGZmY2IyODJiODIxOTA4NjIxNiBsZWdhY3ktdHJ1bmsKKzI3MzA0IGQzYjVmYWZlY2IyOWRmOGZhZTFmNmM2NjkyYjFiNzlmYmRmMWMwZGMgbGVnYWN5LXRydW5rCisyNzMwNSAzNTAwZGE2NjZjMGMzZDY5NmUxNzc5ZThkMzFhZWJiNDFlZmFjYmNhIGxlZ2FjeS10cnVuaworMjczMDYgZDYyZTY4NDU0MmI5YmJmNTM2NmNlYmVkM2RhYzMxMWVhN2VjOWIwYSBsZWdhY3ktdHJ1bmsKKzI3MzA3IDg0ZjA5MmIxMDZlZmI5MGZkYTYwMjkxMTE2ZDY2MTgwMzI1YTdkMDEgbGVnYWN5LXRydW5rCisyNzMwOCA4MzM1NGMyY2EzOTAzZDE2YjQxNTlkOGQzZWIyMDg1M2ZiYzljNWIxIGxlZ2FjeS10cnVuaworMjczMDkgYTYwYTNkOWM2ZmQ5YTZlODYzYTgzOGUzMjA4MWJjZTA1NzNjMjJkNiBsZWdhY3ktdHJ1bmsKKzI3MzEwIDZlMmEzYzU3MDBhYzljN2ExMWRiYTY3NWI0MDU2ZGYzODY2NDk0ZWYgbGVnYWN5LXRydW5rCisyNzMxMSBkZTYyNTUxN2FkZTgwMmQ0ZDMzZjg0ZjhjYmQ3ZDU4MTE4YmQ1NWJlIHJlbGVhc2UyMi1tYWludAorMjczMTIgYWVhOGZiM2UzZjNkN2RiODM1ZGU3YTMxMzg4ODg4ZTllYzM3YTI3YyByZWxlYXNlMjEtbWFpbnQKKzI3MzEzIDg1ZTEyMDRiNjYxNzFiY2Y3YTk4MmEwYzBkNzBkZTExYmI0ZGIxMzMgbGVnYWN5LXRydW5rCisyNzMxNCA2NTJmMWIzMThlNWEwODFlN2Q1Y2QxNDYyODM5ZWRlMzM2NGM3MzBiIHJlbGVhc2UyMi1tYWludAorMjczMTUgMzcxMThiNmU1ZjQ2MTI0Y2E0NDYwYjcyYjAyNTE3YjYwYmU1OTczOSBsZWdhY3ktdHJ1bmsKKzI3MzE2IDgzYWE5OWRlZGE3NGRlMTU4YjVkOTkyNDA1NzI5MDg5MTIwZTY2YjcgbGVnYWN5LXRydW5rCisyNzMxNyBlZDYyYzA0YjE5ZjUyMGUzNTliNjgxNWMwZTNiZmRiMjJmOTdkZThhIHJlbGVhc2UyMi1tYWludAorMjczMTggZjdjZTY5Njk3OWUxOGIwMTFhN2U0MDc3OTVmMWQ5OGFhMjMyNGM0MyBsZWdhY3ktdHJ1bmsKKzI3MzE5IGQ0YmQ2NjAxNzAxZDM1ZGM5NzlmZDdhOTk1Njg1ZTlmN2Y3NDgxY2IgbGVnYWN5LXRydW5rCisyNzMyMSAzODM0Y2IwZTdiZTY1YzVjY2M4NTAzMDlkMTZlYmE1NjQ5ZDYxN2JjIGxlZ2FjeS10cnVuaworMjczMjIgY2IwOGNhNTdlMmE5NjYyODg3MTgwN2RkZWEyNGY0NGJhM2I1MTM5MiBsZWdhY3ktdHJ1bmsKKzI3MzIzIDExYTZkOWI1Zjk5MDY1OTZhMTFhOGUzYTJhZTkyODI4MThlYWVjMTYgbGVnYWN5LXRydW5rCisyNzMyNCBhYTIzODc3MGQ4MDhmNTNlZWU2NjFlZjU4ZmQzMzUzZjlmYTdiNjNiIGxlZ2FjeS10cnVuaworMjczMjUgMWEyYjUzNDRkMWNjZjNlNjE0OGQwNjFlOTk2NGVkMDhiNzM4NzBiYSByZWxlYXNlMjItbWFpbnQKKzI3MzI2IDAzYmJhNzI4Mjg1MmNiZDJhYzRhMWM4ZDg0NjNkYmI0MDczZmJjZmIgbGVnYWN5LXRydW5rCisyNzMyNyAzMTM4MTY3MjAxYWFjZDc4Y2MzZWUyZjU2OTkwNTdkYmI0MTU2MjBlIGxlZ2FjeS10cnVuaworMjczMjggNGVlZDUxYWQ0OTNkNGVmM2E1ZjNjOTFlNDM4ZjBkMjNjMTA5OTI4NCByZWxlYXNlMjItbWFpbnQKKzI3MzI5IDA5NmI0NzVlMWJlZjAyNTgzNzM5MGNjNTlmOGY4ZjQ0YzIyZTg3NTMgbGVnYWN5LXRydW5rCisyNzMzMCA3ZDhjNmI4ODliNTRlMzAxZGRmYThjNjA3NDJmNDQ2MzQ1NDg1ZDI2IGxlZ2FjeS10cnVuaworMjczMzEgMTExYzFlNTlhZDcyZWEwMjY1MTUzYjAyMjQyMWJlYWRjZDI3MjAwYSBsZWdhY3ktdHJ1bmsKKzI3MzMyIGY1NDA1YzZlYzRhY2QzNjlkM2UyOTM2NmZlMWEwOTM1OTg3N2ZlNTQgbGVnYWN5LXRydW5rCisyNzMzMyBmN2UxOTFjOGRiMjNmMzI2NmZhMDU5MWMxMTMwMGVlMzdhMTRjNTg3IGxlZ2FjeS10cnVuaworMjczMzQgMWZlMDA1YzQyODM2ODdiYzVhNWQ2MWUxNjNjMjQ1ODZlYThjOWIyNCByZWxlYXNlMjItbWFpbnQKKzI3MzM1IDI1YjBhZjI3ZGRjODU3MmQxMDAxY2U2ZDAwNTVmYzAyNWMxZWFiZDEgcmVsZWFzZTIxLW1haW50CisyNzMzNiAxYTgwOTZiYjRjNDgyODBjNDhjMjQyZjhhMDM2YmQ5NTU4MTU3MDNkIGxlZ2FjeS10cnVuaworMjczMzcgZTJmYTc0MWM1NDdmNTE1MTBkYWY2ZDU3YWE0ODdkYzA1Y2E5NTJjYyByZWxlYXNlMjItbWFpbnQKKzI3MzM4IGVkZDdjMDE0NmFjODI0ZjViNGU0YzljYzU1ZjJhZGI5M2QzYWZiZTkgbGVnYWN5LXRydW5rCisyNzMzOSBhNzI5OTdmN2RiNGM3MDE4ZjViOTU0NGQ3MDc2MWM1ZjM4OGFhMDg5IGxlZ2FjeS10cnVuaworMjczNDAgN2ViZDJjZDNhZWYwMWI3Mzk2YjgxMzYzOGZmYzkwODk3ZTZmZjA2OSBsZWdhY3ktdHJ1bmsKKzI3MzQxIDgxNDlkOTc4YjAwNmY3NzBhOTFhNzk5ODY5NmI2MDQxZWZmZDI0MmYgbGVnYWN5LXRydW5rCisyNzM0MiBmZTljNzEzMmE4NjdlOGU3YTJhODU0NDYyZGQ4OTliYmUwM2E1ODljIGxlZ2FjeS10cnVuaworMjczNDMgYzY5ZGM0M2I3MDBhOTdmOTVmODVmYzUwNWExMmI0MjZjYmU4Mzk0MyBsZWdhY3ktdHJ1bmsKKzI3MzQ0IDQ4MWU0YTRiOGRlMDY5YzE1N2QwZDczOWNjNmFkZTRjMGFmZmU0YTUgcmVsZWFzZTIyLW1haW50CisyNzM0NSAzNjAwZDhkMDczNTgzMjlkNzdlZTQ2ZTljZmZmMTQyZGZjZDFlY2YyIGxlZ2FjeS10cnVuaworMjczNDYgYTdiMTY5ZWY4M2VhY2MxY2Y4MzIyMmE4MGI5MzBjZDYxOTJlMmZmZiBsZWdhY3ktdHJ1bmsKKzI3MzQ3IDI2YTBkMGRhMTMxMmMzYzBjZmM2NjgwZjIyZGFlZThmYjk0YzFhZjIgcmVsZWFzZTIyLW1haW50CisyNzM0OCAwODI1YmQ3YjViNTU4ZTAxZTlhNDQ0YTBlM2I0OGQ4Y2Q0MDE0ODJiIGxlZ2FjeS10cnVuaworMjczNDkgMzVjOTg5NGYwNmI5NjBjZTEwNWMzNjI5YWM3ZDJlN2Y5NGExYTlhYSBsZWdhY3ktdHJ1bmsKKzI3MzUwIDMyNDYzZThlNWUxYWU2Y2Q5ODM0YzExNjdjNTc3OTM3ZjU3ODVmZTEgcmVsZWFzZTIyLW1haW50CisyNzM1MSBhMTgxY2NjYTEzMTI4MzJkYzJiM2EwMzJlZWNmZjJlYzlhNWIzNDFjIHJlbGVhc2UyMi1tYWludAorMjczNTIgZDdhNjIwNDJlN2VmYTU5NTBkMGY1YjI1NzZlZjkwNGFmYThiZGIwOSBsZWdhY3ktdHJ1bmsKKzI3MzUzIDIxMmVlNjM2NWJmZjk4M2Q5MWQ4NTE5ODQyZTM0Y2M2MjA4NjNkNjYgcmVsZWFzZTIyLW1haW50CisyNzM1NCA3ZDhhMTUwNDk2YThmMDZkMDZhMzcwMjU4OGVkMjk2MmY4ZWMzMjg2IHJlbGVhc2UyMi1tYWludAorMjczNTUgZDdmODUxMmRhNDIzNmM5ZmMxZDU5NzMwZmE2YzkxNzYxMWQ2MGYyNSBsZWdhY3ktdHJ1bmsKKzI3MzU2IGE1NjI5MjczMjU2NmRkNDc4MjRhMGVhMmE3YjJmYmRhOWIxYzVlMDggbGVnYWN5LXRydW5rCisyNzM1NyA4ODYzMDc2ZTJkZjkzMDc3Nzg2MjVjNGQ5OWQ5MjU2ZWMyZWQxNThiIGxlZ2FjeS10cnVuaworMjczNTggMzNlYTUyMmRkM2QyMmVhOTkxM2NlMjdmY2RmZjA0NzA1YjU1NzAxOSBsZWdhY3ktdHJ1bmsKKzI3MzU5IGI3NzE4NTdlZDc4ODhkZTMzYjk2OGFiZWFhMzg3MzhiZDlhZTZlYWQgcmVsZWFzZTIyLW1haW50CisyNzM2MCA0YWI5ZGYyNDE2ZjkzNmRjMmFmMzdmYjA0NzFlMzQzMDEzYzIzOTk4IGxlZ2FjeS10cnVuaworMjczNjEgOTVkYTk5MTg3YzU3NTQyMDkzN2Q3ZTVmMjExNGE1MDY5YWQ0NmQzNCBsZWdhY3ktdHJ1bmsKKzI3MzYyIGFkNmZhMWMwNGU0NzQ3NzA4ZGRhYjIyM2U1ZjJhY2U3ZWJlMDE4NzkgbGVnYWN5LXRydW5rCisyNzM2MyA0OGFkNDcwYzFmOGUxNmE0MmFkMTkzOTVhMjg2YmZkZDFkY2UyZGViIGxlZ2FjeS10cnVuaworMjczNjQgNDE0NjhmOTM1M2NlOWE4OTMzMzNjMTcyMDMyODYxNTVmMDQ2NGI0YiBsZWdhY3ktdHJ1bmsKKzI3MzY1IDcwM2U2M2FlMGYwMWZjNGRmMDBjZWJjMjQ4ZDgyNjQyYmI0MzkzMDEgbGVnYWN5LXRydW5rCisyNzM2NiAxZjY1MTAwNTFjOGFlODYyZDkyYTRlNGEyN2ZlMjgyM2Q3YmQ1MzMxIGxlZ2FjeS10cnVuaworMjczNjcgZGFiODcwMWJkM2ZhMjRiNDE1ZThjM2NmY2YxYTUwM2E4ZWNlY2FmNyBsZWdhY3ktdHJ1bmsKKzI3MzY4IDRlNjNlOTc3MWYzMGM1MDk4NDk2MTZkOGVlNzlkZmIyZjdhNTE2NTYgbGVnYWN5LXRydW5rCisyNzM2OSBiODg3NWYxNmE0YmU1NDVmMmI3OTA0NGZmNDgxNzIwN2I1MGVlMTI5IHJlbGVhc2UyMi1tYWludAorMjczNzAgNDViOWUxMjJjMzNhN2ExZWRmMTgyMmEzN2RiM2VkNmVkZmUyOGY0NyBsZWdhY3ktdHJ1bmsKKzI3MzcxIGI3MWUwZjk2ZGUyMzM1N2FmMzIwODMzZjJhYmFlMDdhMTBmYjgwZTAgbGVnYWN5LXRydW5rCisyNzM3MiBlYTE4Nzc4ZGY2YzM3MDA4YzIxOWFkNjkyYmIzZTUyYzg2YTdjYWNjIGxlZ2FjeS10cnVuaworMjczNzMgMTRlMmViOWU1ZWYyYmVhNjBhYmQ4YjE0OWE1ZmMzMWM5NGQ0YzQ2ZiBsZWdhY3ktdHJ1bmsKKzI3Mzc0IDE5YTYwOTUxN2FiOGE2YmY1MmIzYzllNDNmOTM1OGM4MDc0YjJmYWEgbGVnYWN5LXRydW5rCisyNzM3NSAxNGQ4ZWUxZThkZTVjY2QxNGM1MTA4MDI0NzRmMGZhNjRiYjZjMThhIGxlZ2FjeS10cnVuaworMjczNzYgMDBlNTc4Zjc4Y2FhYTJhODc2M2VkMGM1MjdlNTgzZjMyZGY0ODA4NSBsZWdhY3ktdHJ1bmsKKzI3Mzc3IDQ0ZjdmYzMwNzY3MzY4Mzg0MDQ4ZTIwNzU1OWQ5OGU0ZWM1M2U3ZDAgbGVnYWN5LXRydW5rCisyNzM3OCBjODgyOTA0NjA3OTE5Y2EzMWRhNzRkYWIxYzczOTU5MDlkZTczYTc0IGxlZ2FjeS10cnVuaworMjczNzkgZGM4NzJhMmY1MTNiNDQyMWFjMGU5NGNmMTM5ZGU0OTMxOGNmOTEwMyBsZWdhY3ktdHJ1bmsKKzI3MzgwIDlkODlhOWEwNTRlMDQwOWVmMTM3ZTVlZjI1ODZhNTZiNDdlNjk1YmIgbGVnYWN5LXRydW5rCisyNzM4MSBlOGEyNjNkYjFiZTAzM2FiNTljYmY0ZmYzMzg5OTFjMTY5OGQzYjc2IGxlZ2FjeS10cnVuaworMjczODIgNzFmMTNjZjRmOWUyZDkzMmI1ZDk4OTA0ZjQ2N2I2YjgxNDA2NTNmNCBsZWdhY3ktdHJ1bmsKKzI3MzgzIDJlNWExZThjMGI0ODFkNjRhMzhmZmRlNWRlZjViN2MwNTkwZWM0YTkgbGVnYWN5LXRydW5rCisyNzM4NCBlZGY5NTBiZjQyMzI1OGM2ZmE2MjY0MzljZTRmNDg3MTM0ZjRkYjNjIGxlZ2FjeS10cnVuaworMjczODUgNTg0MzNiNjZmNTgzODk4MDZkNzE3Nzg1OWY5MGI1ZWE5ODNkYjU0NiBsZWdhY3ktdHJ1bmsKKzI3Mzg2IDdmODNiMjEyNGI0ZWQzOTM2ZWNlOTk1YjNiODZmN2Y3NmVkZWE1MWUgbGVnYWN5LXRydW5rCisyNzM4NyBkOGRlOWI1ZjU2MWVlZThlZjI0NDY1NjE0NjVhNGE0NzIzZGE0YTJlIHJlbGVhc2UyMi1tYWludAorMjczODggMzg0OGFhM2VkYWZjNmM3NzM0Nzk5Yjc3MDg2OGI1YmMyYzcwYzIwMiBsZWdhY3ktdHJ1bmsKKzI3Mzg4IDc0ZDVjZDY5OGJiZjcxY2Q5YjRiOTY0MTlkOTBjMDkwODgzNWM0YWQgcmVsZWFzZTIyLW1haW50CisyNzM4OSBmY2YyZTAxYzYxNmE2MDRlYWYwZjUzNWE1ZTg4ZmUyNzQzMGI4Y2ZkIGxlZ2FjeS10cnVuaworMjczOTAgOTEzNTcwYWIwNzM3NDMzNzc5MzYyZTgxNjIzOGQzYTc0YmE3NGU1MyBsZWdhY3ktdHJ1bmsKKzI3MzkxIDlhOWQ2Y2U1ZWQ0ZTIyNWZjNWNmM2Y3NmZhMGYzOTcxZDNiNWVhNmMgbGVnYWN5LXRydW5rCisyNzM5MiBiYmZlZjk0OGM0M2U4MDA0MWM1MWZmZjg4YzNhYjcyZGRjMThlMmI1IHJlbGVhc2UyMi1tYWludAorMjczOTMgNzQzNjg5ODdmN2YwYTAzZGUxOTQ1ZThmN2NkYmZiMWIwNWJjN2U0NiBsZWdhY3ktdHJ1bmsKKzI3Mzk0IGJiY2VlNzQ3OGZjYjg0MDQ4OTc1ZGQ0NGExYTc5OGYxYTc0NGUzYjIgbGVnYWN5LXRydW5rCisyNzM5NSAzNGI4Y2RiYmQ4ZmUzMzk0ZTU0ZWI1ODdjOGZhYWViY2I4ZWU2NGMwIGxlZ2FjeS10cnVuaworMjczOTYgOWI2ZDI1OWMyNWViN2VhNjAxZWU0ZmNiOTFhNmRkNWNjYjFkMGI1MiBsZWdhY3ktdHJ1bmsKKzI3Mzk3IDViNTA4Y2UwNDlmNWQwODViMzYxOWRlNjVjYmE3ODNhMWJkMDE1ZTIgbGVnYWN5LXRydW5rCisyNzM5OCBjNGQ2OGY4MmE2ZGRiODE2OGI4OTBlMzNjNzMwYjgwNWQ1MDdjNmViIGxlZ2FjeS10cnVuaworMjczOTkgZDEwZjFjNmQ5ZWU5NDMwNjgyOTVlMDFhNWY1MDBhMjA1OTFhMTg2NSBsZWdhY3ktdHJ1bmsKKzI3NDAwIGMxMGMwOTE5MmMxMmJjYTFlMWM5MDg1MzFlYmY2NDg5NDQ0YTY5NGUgbGVnYWN5LXRydW5rCisyNzQwMSAwN2U3NDk5MzU3M2M1YjVlZDVjYTY1Y2FlMmFkY2QxNmU5M2VkZmY2IGxlZ2FjeS10cnVuaworMjc0MDIgMjc1ZDA0YTM1NTQyMjY0YmQyMmIzY2Q4NWFjZDY4ZDIwY2ZiMDA4OCBsZWdhY3ktdHJ1bmsKKzI3NDAzIDc3YTk2YWM0ZGRlNGMwODA1YWE2MTZmYTliZDcxMzMxMDI3Njg3MGUgbGVnYWN5LXRydW5rCisyNzQwNCBlYWU0OTZlZmE0NjAxMzI3NDZjNTEzZTFkOGFjMjY1MTk2ZjFiZGJiIGxlZ2FjeS10cnVuaworMjc0MDUgMmMyMjQ1YWFjZWY4OGZjODVlOTVkMGE0OThlMTkxODI2ZjY0MTA2YyBsZWdhY3ktdHJ1bmsKKzI3NDA2IDkzNzcxNTg2NTJkZDBkNGI4NmExZWMyYjJmYzBiNTFhZDUwZjhmNGYgbGVnYWN5LXRydW5rCisyNzQwNyBhM2Q2MTI4YWZiMmU1NTMxYzkyZDAxNTA3NjNmNmRkN2MzMjk4NzU5IGxlZ2FjeS10cnVuaworMjc0MDggYTc4ZDQxZWU5NDc0Zjc2MTc0YTFjYzJjMTQ1ZTI1MDI5NmRiMzMyZSBsZWdhY3ktdHJ1bmsKKzI3NDA5IGFmMDUzMmYyM2FiM2ZmZmY5ZTcwMDQxNzZhZDUzOWViMGI3YWU0NWMgbGVnYWN5LXRydW5rCisyNzQxMCA2M2ZiYmVkMTA3MTRhYTU0NjgwZGI4ZjY1NjViZjA1ZDQzNGY3ZTM2IGxlZ2FjeS10cnVuaworMjc0MTEgZmVmMzk3YjFiODVjM2Q4OWY3YWQ0Y2NlMmQ2MTYwYjVhY2U5YWU5YiBsZWdhY3ktdHJ1bmsKKzI3NDEyIDkwY2NhODU3ZDIwMzIyYTFiMjdlN2ZhOWU2OGEyYjRkNjEyYjkxNjcgbGVnYWN5LXRydW5rCisyNzQxMyA0MDQ2MjgyY2IzMzhjZjdlNTM2YWExMjQ2YmZjZjI1MzY4ZjBkOTM5IGxlZ2FjeS10cnVuaworMjc0MTQgOGVhODY1NjRmYjMyNjQzOWZlZWY2YzBhNzliYTkzZWY2ZDQ0NTc0NyBsZWdhY3ktdHJ1bmsKKzI3NDE1IGJjNmFhZTc0ZGRmZTVjNDBiM2U3NTM2NjFlOTM0ZjE0ZTY3ZWJkYTggbGVnYWN5LXRydW5rCisyNzQxNiAyYzc5YjFhOGQ2MTY1MzkxNTFmNmZmOWVhODIzMmY5NWJiYzk3MDBjIGxlZ2FjeS10cnVuaworMjc0MTcgZDkzZjM0MjAxNTAzOGE3OThmNjc5NThkM2RhYjA3NzVlMmVhOGM5MiBsZWdhY3ktdHJ1bmsKKzI3NDE4IDcxODQwYTFiZDgyZmM3YzQ2NDdiNDNiMTFiNDI2ODE5YTNlMmRjM2UgbGVnYWN5LXRydW5rCisyNzQxOSBhOTIyMTEyZDc4MGM1ODk3ZmY0NDU3MGM4MzRhMDRmOThjODc2MmE3IGxlZ2FjeS10cnVuaworMjc0MjAgY2IxNjk5NWFhN2U4MDllZTI0ZTczZmFkZjZkZGU0NDczM2NiZDI2MSBsZWdhY3ktdHJ1bmsKKzI3NDIxIDk5MTNjZjdjNDA4NjFmZjQ5NDRjOThjZmVmY2EyYzI0OGM4ZDhmOGYgbGVnYWN5LXRydW5rCisyNzQyMiA2N2YyYjQwYmFiNzA3MGEyZGEwNTVjMDFlYjNjZmU1ZTZlYmFjZWNjIGxlZ2FjeS10cnVuaworMjc0MjMgZTlhNmEwYzRiMzNmM2M4ZGZkZGUxN2ZmMTRlOWEyYTBkZjA4MGE2ZiBsZWdhY3ktdHJ1bmsKKzI3NDI0IGRjYzJiNzVkN2E3OGMwZjRkMDQxYjlkMzIzNmQ2MGJjZWFhNjgzNTEgbGVnYWN5LXRydW5rCisyNzQyNSAxODcxNzMzNTI0MzU0OTY1Y2ZlOWIyZGU3Y2Q2OWYzNjFkNTA1OGI2IHJlbGVhc2UyMi1tYWludAorMjc0MjYgMzdmZmNlMmQ5YzNjZTA1MzZmMGY1OWI5NGJhNjkxMmJmYTZmM2FmYiBsZWdhY3ktdHJ1bmsKKzI3NDI3IGQyNGM4Yzk0Njc0MWJmYjc5NzMzMWM5MTY3N2FhMGZlMTIxYTM5MzcgbGVnYWN5LXRydW5rCisyNzQyOCBkZDlkMmVjOTZlYWQwY2U3MjRhMzU4ZmY2NjZiZTg4NjFmZTA3NTEzIHJlbGVhc2UyMi1tYWludAorMjc0MjkgYjllMGM1NzUzMjM4MDg0YjY1Y2I4MWVlYzI2MTM1Y2VmYWQ4ZWUwMCBsZWdhY3ktdHJ1bmsKKzI3NDMwIDNlODYzYTY1YjFhNDQyY2RjNDZiMzYxNDZiMDE0ZTk5YjMzYjg2ZTQgcmVsZWFzZTIyLW1haW50CisyNzQzMSBlODc4OTc1MWE1Y2NjMzY2NTE0OGJmMWI5OTNlMDcyOTExNzEzM2ZjIGxlZ2FjeS10cnVuaworMjc0MzIgOTI4MzRhMjQ4YzE1Y2JmN2VmM2ZjMTRkODQxOGI4YTgwMzJhZTQ4ZSBsZWdhY3ktdHJ1bmsKKzI3NDMzIDYwZTQxYTU0ZTdiMTA5YjIwYmYwMTMwMzk1ZTA5YWE5MzEzMjcyN2MgbGVnYWN5LXRydW5rCisyNzQzNCAyYzZmOTMxZDhkZDI1MTQxYmJhNjBlN2I0MzY3OWZjYzM4YjdjOWZhIGxlZ2FjeS10cnVuaworMjc0MzUgYzc5NDMyZmViODYyMTU0YWE4NmZmNzgyODBmNDc0YmVkNjFmMTljYyBsZWdhY3ktdHJ1bmsKKzI3NDM2IDVhZjkwODFhNmNkNDA5ZTRhZWIxMDhhMzExZjJiYWJjNmQzMDAzODUgbGVnYWN5LXRydW5rCisyNzQzNyAwZDk3MTZjM2I4ZWNmMzVjOTkyNGZmZTMwNDg0YTM2NmYyYzZlMGFmIGxlZ2FjeS10cnVuaworMjc0MzggYjEyODI1NWMyYmVhNzA3N2RiMzI4OWVkYTI4ZTQ0NDkzYTg0NTA2OCBsZWdhY3ktdHJ1bmsKKzI3NDM5IDgxNDJmOGQ2NjhhMGY0YWI3YWFmZWU5MGJlYzliYmIzMTcyN2NlMDcgbGVnYWN5LXRydW5rCisyNzQ0MCA4NmIzNzYwZDI4NWQ2MGY2ZGM5MjI2ZGE3YzhkYmUyN2Y1ZWYwM2M2IGxlZ2FjeS10cnVuaworMjc0NDEgMTMxNDY0MmNhMDk3NmJiZjBlYmM1NjNiYmNhODQ2Y2Y1MmE4OWE4NSByZWxlYXNlMjItbWFpbnQKKzI3NDQyIGExODA1YTU0NjY2ZmJiZmQ5MWEwYzZmMzI4YjU4ZTIxMzJkZjA3NzIgbGVnYWN5LXRydW5rCisyNzQ0MyAzMmRiMDc1ZGVmM2Y1NjRiNWI2YjFkMDEyN2FkNGM1ZDUwMjFmODNhIGxlZ2FjeS10cnVuaworMjc0NDQgOTVjY2Q1YmJkYzg2ZDRmMjVjZDhmOWU5ZDQ5NmIzODc0ZjA1NDk2NyBsZWdhY3ktdHJ1bmsKKzI3NDQ1IGE1MTYyZmQ2NWMzZDViYjBkOTg2MmI4MzM5NTlmNGFhOWI2NjI0MTMgbGVnYWN5LXRydW5rCisyNzQ0NiA3MDJhNTkwMGRmN2Q2NWY5ZDQwNjhiMjUxMDA4OTg3NWM2OGM2OTYzIGxlZ2FjeS10cnVuaworMjc0NDcgMTgzZWJhMmQyMjE0MGMxZTFlYmE1YzYzYzFlMmRmZGI2ZTU5N2E0NCBsZWdhY3ktdHJ1bmsKKzI3NDQ4IDE1NDQ3YTU1NzNiZDExNDg5MjczZTUxNDFlMzAwZGUyMzAwMjE0MWMgbGVnYWN5LXRydW5rCisyNzQ0OSA4MDA5MTJmN2RmMmUzOTJhMDQ4ZDE2ZmJiZDlkY2EzMjI1NGM4N2JmIGxlZ2FjeS10cnVuaworMjc0NTAgZTY2Y2VkNDgxYzc3YTRiY2IyNTU0OWQ5ZTMwOWFhZTg1ZWMyYjAwYiBsZWdhY3ktdHJ1bmsKKzI3NDUxIGQ3MTI2YzM0MTI4YTlkOWJkMTMzNjZmMDkxNjBmYjg0ZjE5ZWY1N2UgcmVsZWFzZTIyLW1haW50CisyNzQ1MiA2ZmVkMTM0MjJiYjFhYWZkMTIzOTYxOWNmYzM1ZTFmNzNiMWVmMWI1IGxlZ2FjeS10cnVuaworMjc0NTMgMjJkMmYwMzdhZjlkM2M0Y2ViNDNjNmVjNTM0ZmQ1MGJiMmZjNTJmZCBsZWdhY3ktdHJ1bmsKKzI3NDU0IDg2ZGZiOTZhMTgzMWZkMjdlYWEzYTBjMzM0NWQyZjBjZjE1MjljYzAgbGVnYWN5LXRydW5rCisyNzQ1NSAzNTVlNDZjYzEyNGZmMTExNmU0NWNmMDMzZTJmMTRiY2VhODA5NDkzIHJlbGVhc2UyMS1tYWludAorMjc0NTYgYjc0ZDRhNTk3OTNhYWQ0NDdiNTE1YzIxYzlkNzA5NmViNzBkYjI1MyBsZWdhY3ktdHJ1bmsKKzI3NDU3IGIxODVjODU5NTJmZTgzOGQ3MDlhMzYwNWNiN2Q2YmYyYWYzYjhjMGIgbGVnYWN5LXRydW5rCisyNzQ1OCBiYzAwZWVlZjBhYzdiYWNjMDQzMDE1MzZhMDJlY2JjNzY3MTg2MGVlIGxlZ2FjeS10cnVuaworMjc0NTkgNDI5OGUyNjliZDY3MjAxMDQzOGNhM2NmODk1NWMyMjdhOWQ2ODFiYSBsZWdhY3ktdHJ1bmsKKzI3NDYwIDQwMjY1NjVmYTdlYmRmZjE5MGIyYzUyOTE4MWU1NWU4ODk4MDNmMDQgcmVsZWFzZTIyLW1haW50CisyNzQ2MSBhMmI2NzdhZjdiMjg5ZDY1YTBjMTE1MDkxMjg4NGI3NjQ3MzZkY2VmIHJlbGVhc2UyMS1tYWludAorMjc0NjIgNjg5OTVlODU0YTg4ZTNkNWQ3ZjdiZGE3Nzc2NDNlMTcwNjBkZjhiMyBsZWdhY3ktdHJ1bmsKKzI3NDYzIGRiYjE0Zjg1YWU3YjYwZGQzMjhmZjFhNmUzYTRkYTg5YjM3NzdjOTIgbGVnYWN5LXRydW5rCisyNzQ2NCAyYTIwNTc0NDAwYWZiNjA4ODBhNDVhOThjODYyYThjNDZhM2Y1MDdjIGxlZ2FjeS10cnVuaworMjc0NjUgZjdhYmJkMTViNGY0ODE5YjE3ZDBjODRiMjIwMDc3OWFjOTA1N2IwMCBsZWdhY3ktdHJ1bmsKKzI3NDY2IGNmY2ZiNWRmNmU2MWNjNGI1MGZlM2M1MmIwNzU4NDlkODY2NGJiOGUgbGVnYWN5LXRydW5rCisyNzQ2NyA1MTQ4MWIzOWNkODY1YzFlN2VlNGIzMjFlYTgwMjhmYjY5NTQzYWVhIGxlZ2FjeS10cnVuaworMjc0NjggMGExOGVmNWNiM2U3ZWQ3NzE5OGM3MzBmMmU5ZjQwYzI2MzYyY2YwOCByZWxlYXNlMjItbWFpbnQKKzI3NDY5IGY4ZDQxZTI2NDliN2U1ZGU3N2I2NjkxMjcxN2ViNjg4ODJkZWRkNzUgbGVnYWN5LXRydW5rCisyNzQ3MCAyOGYyYmFlMTAzMWJmM2YwODU1NmEzOWUyOGY3MTA5MjFlOWY4ZmJjIHJlbGVhc2UyMi1tYWludAorMjc0NzEgNDZhODRkMmZmNGUyYWM3YTAyOGRjNGMzMWRmMWE0MzgyMmFmZmMxMCBsZWdhY3ktdHJ1bmsKKzI3NDcyIDY2NzY2MjNiM2I3NDIxOTE2ZTc5NTQ5ZmU3NGJkNDMzYTBhODcwYzEgbGVnYWN5LXRydW5rCisyNzQ3MyA4Y2VlZTY2MzAzMjJjNTc1NDU0MzZjMzc2YjA2MTBmNGE4NWZjMzZlIGxlZ2FjeS10cnVuaworMjc0NzQgZjdjMGQ2ODcxYjA3ZjAzMTFmZDY5Njk2NDBhOTMyMDBhODE1ZGUxNyBsZWdhY3ktdHJ1bmsKKzI3NDc1IDczMzZmNTFmYWE0NmNiN2UxYjUyMjAzNDNhOTU1ZTQyODA5N2RmNTIgbGVnYWN5LXRydW5rCisyNzQ3NiA2Y2Q5MzJmZjBmMDlkOGNmZTczZDZkZDBmMTViNzM4Zjk5ODEyODg0IGxlZ2FjeS10cnVuaworMjc0NzcgODAxNjJkYmQ0N2YwMTMyZmE1OWM4ZmRmMjBjNmNhYjNkZWI2ZTg0OSBsZWdhY3ktdHJ1bmsKKzI3NDc4IDgwNWMyMjhjZjc3YjZmZmY5MjBiOTg3YTRlNjQ1MzIyODc2YjQ3YzQgbGVnYWN5LXRydW5rCisyNzQ3OSAzNGQ3MTM3MDk4YTc1MTk0Nzg1ODFlNGMxYjA1OGQyY2UxMjk2MWYzIGxlZ2FjeS10cnVuaworMjc0ODAgY2JkYmI5MmVmZDM2OWY4NDk3ZWE4YTgyMzQxMmZkOWI2MTVlODdiMCBsZWdhY3ktdHJ1bmsKKzI3NDgxIGYzNWUyOWFhMGQ5MjRjNDI0NWJlNDFiMTVjYWQyMjM5ZDMyODc2N2YgbGVnYWN5LXRydW5rCisyNzQ4MiBmZjY4NzNkMjhhMTQ2ODNlNWMwZmI4NDY3Yzk2NjkwY2Y4N2IxODFlIGxlZ2FjeS10cnVuaworMjc0ODMgZmE2YmU5ZWU2YzljNGViN2ZkYjM5NWVjNDIyMWMyMmQ2OGQ2ZmZhMSBsZWdhY3ktdHJ1bmsKKzI3NDg0IDEzMjQwYjhmOGNhMDE0MWEyZWFmZDg5MDI2MmY3NzU3N2I4ZWJmOTcgbGVnYWN5LXRydW5rCisyNzQ4NSAxZTBhY2I0NWNhOGYwZmNlMWM1ZjY1YWQyMWVhNWJkMjBmZDBjM2VmIGxlZ2FjeS10cnVuaworMjc0ODYgZjM2ZmExMGViZmEwYzI2MDU3ZWNlM2Y3ZTcxMjk4YWNlMDJmYjUzNiBsZWdhY3ktdHJ1bmsKKzI3NDg3IGYzM2JiOWMxMzFmOGNjZTU2NDQ4NDlkZTE1ZDBkMDE2YmI3YWNlMGYgbGVnYWN5LXRydW5rCisyNzQ4OCBiNTFhNTc4ZjU3NjliNWYxOTk5OTk4YWNmNTAxYjYxZDJjOTc1ZjIxIGxlZ2FjeS10cnVuaworMjc0ODkgYmYzNDIxYTI4NzQ0NmNkMjE2ODI5ODJmM2JmMjdiMGM2MDY1ZWU2NSBsZWdhY3ktdHJ1bmsKKzI3NDkwIGQzMzI0ODRlMzk0YTgwYjQ2ZjBmZjBmNjRiNTBiN2M2NGEwNjExNTEgbGVnYWN5LXRydW5rCisyNzQ5MSBhYTYyMTdiZjk3NzY0M2FjNDc4ZGQxMDhjZTFhODMwZTQ0MzE1MmY2IGxlZ2FjeS10cnVuaworMjc0OTIgNWRhNjA1ZDJiNTQ3N2E0MTE5NzRmZWUyNmQ4NDBkZGJkYWFhYmZhYyBsZWdhY3ktdHJ1bmsKKzI3NDkzIGYzODExMmI4ODM4OGU3OGZiMzhiNjhkOTRkYmQ5NGVkOWQ4ZjNhYmYgbGVnYWN5LXRydW5rCisyNzQ5NCA3ZGNlZjJmODcwNjgyMjZkYzdkYmE5YjJjYmRhYTBjMjg5NDE5MWE2IGFzdC1icmFuY2gKKzI3NDk1IGUzMzM5M2NlNGM1MTNhZDdjMmVjMDc0NWFmYmExNDI4ZmFlNGMxOTEgYXN0LWJyYW5jaAorMjc0OTYgMzBjN2NjNWYyNTg3M2VmODczYmFmZjBhMDljNTYyNzk0YWE1MTFhMiBhc3QtYnJhbmNoCisyNzQ5NyAzM2YyMWVhYmMxNTUwNmRkNWJkOTFiNjAxNTdhYjc2NTA1ZjQ2NzA3IGFzdC1icmFuY2gKKzI3NDk4IGM5NmU1ODQzOGE5ZjE2NTMzOGY3MmQ0ZjJkZDZkZWI2NjAwYWYwZDcgYXN0LWJyYW5jaAorMjc0OTkgZjc0ZjNjMzE5MDk5M2RhMjQ5NmY2NGNhMjE0Y2Q4OWEzYzBlYzRiMCBhc3QtYnJhbmNoCisyNzUwMCBjNDI2MzYzMDZlOTZiNmQwODdkMDY5OGNmNWU5MjM5YjkyZDkzZDdjIGFzdC1icmFuY2gKKzI3NTAxIDJhNmVjOTkyMjI4YmE3YTM1ZjA0ZjIxNGZkZjI1ZmUwZWZkMzYyOGUgYXN0LWJyYW5jaAorMjc1MDIgODQ0ZjEyOWZhMTI4NTI4NTU3N2NlNDU1OTAzOTExZDhkMDQ2YjVjMCBhc3QtYnJhbmNoCisyNzUwMyBmZGY4MGUwNGU0YmJkMTJhMWMxNmIzM2RiMDc3MzkzMjUxYWY5ODllIGxlZ2FjeS10cnVuaworMjc1MDQgMzExMzc1NDY0ZmFjMzMyYWNjMzIyNDdjOGYwMTg0NzQ0Njg2YjAyMSBhc3QtYnJhbmNoCisyNzUwNSA5ZTYzYjBmNDA5ZDRiMzYwNjdiN2MzNjE3NTZlMzFmZDZmYTQxMmVmIGxlZ2FjeS10cnVuaworMjc1MDYgNzZlOWExNGZiN2M1YTBhZjNiOTY3OWZlODhmNGViMjM3NzBkZGNkNSBsZWdhY3ktdHJ1bmsKKzI3NTA3IDM5OWIwOWEyN2FmMzE0YjQ3MGIzMTYzNzk1ZjI5YmIzZTlmZTY3M2IgbGVnYWN5LXRydW5rCisyNzUwOCA3MDdjNmYwMjYxNDJhNDBkNmI1ZDg2ZDE2ZDJmZDk0YTA5OWU5YWM3IGxlZ2FjeS10cnVuaworMjc1MDkgZTVlY2VmNWExMjNhZDg5MGYzNTEyMTZhYzcyZmFjN2Y1NDI4MTFhMyBsZWdhY3ktdHJ1bmsKKzI3NTEwIDEyZjJiZTg1ZGEyNTlhNTI2MzAxOWI5NGYzZWE0ZjE3ZjVjYzQyZWQgbGVnYWN5LXRydW5rCisyNzUxMSA4ZGZhY2IwNmMzZDFhNGYxMDJhYjFjNjgyMjBiZjVmMTA2OWU5OWZiIGxlZ2FjeS10cnVuaworMjc1MTIgODY1YTc3Y2U0MGE5Zjg2M2Q3NDQzMmI2YTAxOTkxM2QzZWM1ZjEzZSBsZWdhY3ktdHJ1bmsKKzI3NTEzIDdjMWE3NmI3ODcxMjIyYzJhMTliZDJhZTg4NDFiMDhmZjQyZWVkN2EgbGVnYWN5LXRydW5rCisyNzUxNCBhNDgzYzVkZGI3ZjFiNWU3MTEwZmJkOWIwZWYxOTQ3NjI0MWUzZjVjIHJlbGVhc2UyMi1tYWludAorMjc1MTUgMTc2YWQ3MDZhZmJjNTZiYjczN2QzNzMyZTFlZjI0YWFhYTQyNjZkNSBsZWdhY3ktdHJ1bmsKKzI3NTE2IGMzNmJlNzlmZGJlYTE3MTYwM2M0NTE5YTc5MWY5NmE2MGNkZWUwZjMgcmVsZWFzZTIyLW1haW50CisyNzUxNyBhYmVkYzVjZWNjNjQ5ZDczYzk0ZmQxMDE4YjA5MDM0Njg2YzBlYzQ1IHJlbGVhc2UyMi1tYWludAorMjc1MTggMzljMGJmMjAxZGI5YzQzMWVhOWQ4NDIzYmE3NzY2ODA5ZWExOGIyNCBsZWdhY3ktdHJ1bmsKKzI3NTE5IDQwYmRhM2UwOTBmNjdiYTY4NGIzZjZmNzZkNDM2NTBhMjMyYzEwNzcgbGVnYWN5LXRydW5rCisyNzUyMCAyMWJkODZlMDBiY2VjMWIzMzQ2MzU4MDUzYjE0OTJhYjFiOTBkZTUwIHJlbGVhc2UyMi1tYWludAorMjc1MjEgZTllNjExMWJlZWMxNzE5ZThmZGQ1OTRkNGUxMjMxMzE4NDk5YjRhYyBsZWdhY3ktdHJ1bmsKKzI3NTIyIGQ3ZDgxNmUxZjUyMjY0YWE4NDk4MmIxMWYzYTE4MzA0MGU1MDkxOWEgbGVnYWN5LXRydW5rCisyNzUyMyA3MTg5MDkxMjE3MzcxYmY0YmQ3ODgyMjJjOWVkYmEzNDU2ZTc4NmIzIHJlbGVhc2UyMi1tYWludAorMjc1MjQgNjlmZDgyNjU4YmZiMzI3NDgxOTU2NzM2NGFlNmMwMWVmYzExNDhiZiBsZWdhY3ktdHJ1bmsKKzI3NTI1IGJlMDJkNTE0YjlhNjY5NmMyMGM3YmZiM2UxN2M5ZTE1YTg2NDkxZDIgbGVnYWN5LXRydW5rCisyNzUyNiA0ODEwODBmNzE0MzlhYjMyYmVjYjkwNmJhMGI4Y2YwZDBlOWVmZDEyIGxlZ2FjeS10cnVuaworMjc1MjcgN2JjZDgxNzc2MjhmMzVhYTZhMzk2OGE4M2QwMTg2YzY5OTIzMTkxYiBsZWdhY3ktdHJ1bmsKKzI3NTI4IGVhMDM4NDM3NTRjMDAyNGU3NDNlZDkyNTI4NDA2Njc3ZTI3M2JmODcgbGVnYWN5LXRydW5rCisyNzUyOSA1NjJkN2Y4YTgyYTE5YmIzMmUxZGE4M2YxNDQzMjU1MGM0Y2JhMmQwIGxlZ2FjeS10cnVuaworMjc1MzAgYmI3YzM5NmRlM2FiYTc4MGExMGEyMzk2OGRiNTc2MzZkMzRhYjA4NSBsZWdhY3ktdHJ1bmsKKzI3NTMxIGE1OWRmMmZhNGVjOGFmZjQ2NjgzOTAzOGE2NTcyOThlN2QzMjBjNWMgbGVnYWN5LXRydW5rCisyNzUzMiAyMDhmYjFkNjExNDg0ZTcxMWMwNGZmMjVjN2RmYTAwMGFmNDEwOTg3IGxlZ2FjeS10cnVuaworMjc1MzMgOTQ1NmEyY2NkYTYxMGExZGE0ZGNlZmRhNDcyOTc2MmY3YWY1ZmRhZCBsZWdhY3ktdHJ1bmsKKzI3NTM0IDQ0YzE5Njk5ZmE3ZWY5ZGQzZjMyOTJjOWQ2OGQwOTI0MDcyNDU5OTIgbGVnYWN5LXRydW5rCisyNzUzNSA5ZGRlZDZmMTg4MTkxZDA4NzQ0NDMyZDRkODQzNDhiMmM3YjRjZmRiIGxlZ2FjeS10cnVuaworMjc1MzYgMjMzYTUwZTEwZTY2YmE0Y2YwMzVkZmRmNzk2MmU4MzIwYmExY2I0NSByZWxlYXNlMjItbWFpbnQKKzI3NTM3IGNiNzI4MTQxYWUxMmEyNTNjZDZlNWI0MTNjNTEwZjFkYzUwYzRkYWIgbGVnYWN5LXRydW5rCisyNzUzOCA2MzdkZmNkOTYzYjk4MzJhNGI4NTFkZDc4MDUwZDY2MjM1NDc3YTExIGFzdC1icmFuY2gKKzI3NTM5IGQ0ZDVjMzQwZTA1NDM4MmIwNzhlZDI4YmU3MDAzZjM3MmJiODQzNzIgYXN0LWJyYW5jaAorMjc1NDAgMjJiMjEyZGQ4NmMxZGEzYzVkYmQ2NjhmZGJhZjE1OTBhYTExOTI1YyBhc3QtYnJhbmNoCisyNzU0MSBmZDE3Mzk0ZjZkY2VlMWI4ZjI3ODBlMDQ0MGE1NjQ1YzYwYTA2OGY0IGxlZ2FjeS10cnVuaworMjc1NDIgZTY4NWYzMmQ4MDY4OGQxOGE5YWQzYzMwZWE5MzY4YmE0MDI1ODU0MyBsZWdhY3ktdHJ1bmsKKzI3NTQ0IDhlZTJhYjRmMmEyZDQ5OGUyYTIwN2JlNDg2MjE5MzVkYWQ0NWVlYTAgbGVnYWN5LXRydW5rCisyNzU0NSBhMzg3ZDRlNTM5YzJkODJlN2RiYWUzYmE3OTViZDQwMmRkYjlmZTc0IGxlZ2FjeS10cnVuaworMjc1NDYgNzhhYjA4NmEzNTQ4NDZmY2E4ODU0N2Q4NmJlOWQ2NTc2NjRhNzI4OSBsZWdhY3ktdHJ1bmsKKzI3NTQ3IDA5NTQyNmFmNGE0MjQwNjY0NjkyMjM1MjcyZjNmYTBkODBhOWE4MjYgbGVnYWN5LXRydW5rCisyNzU0OCA4MGRhOTUxYzg5ZmJlMTQxZTE3NDIwMTkzNTIxMDI3OWNhZGEzNmI2IGxlZ2FjeS10cnVuaworMjc1NDkgZDNlNDkwYTUxNDA4Yjg4ZmI4ODlhNDVmM2RhM2NhNDA4OTdmYjdkNiBsZWdhY3ktdHJ1bmsKKzI3NTUwIGZkZDgzNjU3NTI0OGY4NjlkZjgzYzM4YmNkY2FiMzVjMjBkMWUzY2QgbGVnYWN5LXRydW5rCisyNzU1MSBjMzFhZmVhODg5MzRlMDY0NjgyMTM5MmJkMjY3YjJkNTE1Y2RlMjgzIGxlZ2FjeS10cnVuaworMjc1NTIgMGNhYjRlNGZkY2YzODBjNjFhMWQ5OTJkNGQwN2JhNGY3MGUxMmIzNSBsZWdhY3ktdHJ1bmsKKzI3NTUzIDVlNGI4ZDFlOWZkNmIyYjk3ZDBiZTQwZjU3MzQzM2EzYWY2YjZmMzYgbGVnYWN5LXRydW5rCisyNzU1NCAzNzE5NTQ3ODU3MzlmNTc0NjNkODYzYzdmOTk4Yjg1NDljMGZkMGIyIGxlZ2FjeS10cnVuaworMjc1NTUgMmFiZjllOTQwMjc0ZjA4ZmM0NWVhOGUxMWFlNmQxZjMyOWMyZmRkZiBsZWdhY3ktdHJ1bmsKKzI3NTU2IDQzZmJjNjczNzRhNTdiNmVmNjYwMzc0N2U1YmE3YTRkZGYyZjAzYjIgcmVsZWFzZTIyLW1haW50CisyNzU1NyAyNWZlM2EwYTgwZmI4NjIzOGNhZGFjNzAyOTg1ZTIyN2VjZThhODFmIGxlZ2FjeS10cnVuaworMjc1NTggOThhZDc3MmRlZmFhYmJjMjA2YzM4ZWI5ZDZiOGFmZjA2ZjNiNGI0ZSByZWxlYXNlMjItbWFpbnQKKzI3NTU5IGEwMzhhYmQwOGU0YWI1MmIwYmI0YjJhYjBjODY0ZjVhNDhiNWFiNTQgbGVnYWN5LXRydW5rCisyNzU2MCBjODlkMzMzZmUwZmUzNDY3MTY1NzVkODBhNDcyMjkyYzNiNjVkZjZhIGxlZ2FjeS10cnVuaworMjc1NjEgYjk5M2U2NTFlYjc0NWY3ODQ2YTAyYmMyNzgwNTRmMDc1ZTljNTJlMCBsZWdhY3ktdHJ1bmsKKzI3NTYyIGNiNzNlODkxZDNlZTNmNjBiMjk1NmE5MGJiOWUxMGQwOGQzZjAwNDYgbGVnYWN5LXRydW5rCisyNzU2MyA2M2E4ODdkOGExZTNhNTE5M2EyN2Y5NzMyMTAyNzY1ODRjZTRkNWI5IGxlZ2FjeS10cnVuaworMjc1NjQgNWMxNTFkOTU4ZmMxNDQyMTEzYzUyMWQyMjRkNmE2ZDNhYjMwNjBjYSBsZWdhY3ktdHJ1bmsKKzI3NTY1IDE3MjNiY2RjMWU4NTRlODkxYjc5ZDU3MTUxNTc1N2RkNTEwYTRiZjAgbGVnYWN5LXRydW5rCisyNzU2NiBjNGRjYjgwZjQ4ZWExNThlZTA1NTQ0YTQ5MTc0NTc2ZjlmNjc5MTNmIGxlZ2FjeS10cnVuaworMjc1NjcgYTMzZjJkZDQ2NDQ0YjY3ZDA5Y2FkNTIxNmExYmI4YTQ4YjZiN2U2NiBsZWdhY3ktdHJ1bmsKKzI3NTY4IGJlYzViNjYxMDYyMjljNzBhODk1MDY5ZmEzNGQ4MTY2NzAyMjZjZjcgcmVsZWFzZTIyLW1haW50CisyNzU2OSA5ODJhOTBhNGQ2N2I4M2UzOGJhMmJjZTM3NzM0ODI3NWRjYWZmNmFiIGxlZ2FjeS10cnVuaworMjc1NzAgZGMyMGM3ZWI0MzRmNTIxYWU2N2FjOWZkOGJiYjlmNzcyNzcyNGM1ZSByZWxlYXNlMjItbWFpbnQKKzI3NTcxIGNjZTkzMTZhNjJmODg2NzhjNTAxZTNlMGYxNTNhZWJlMWY1MGE4MjMgbGVnYWN5LXRydW5rCisyNzU3MiBhMmJjYjAwZGNiZDU5NWIxMTQ5NWMxMzdmODZmNDNhOTI1MDdmYjMyIGxlZ2FjeS10cnVuaworMjc1NzMgN2I1ZTYxMzczZjZlZGM5YmQ1MDA1OThiMzQ1NzVjNTIwMGJiZTZkZiBsZWdhY3ktdHJ1bmsKKzI3NTc0IGI5ZjIzZTIyNTNmODg3YzI4ODUwNDYyOThiMWI3ZGVlNWMzM2FjYmIgcmVsZWFzZTIyLW1haW50CisyNzU3NSA2ZWI3NGU4M2E2ZjExYTQ4Mzk1MDk4MzYwNTc0NjQ4MTAyMmMzOTY0IGxlZ2FjeS10cnVuaworMjc1NzYgMDc4MDlmNmE3OTY4YjI3ZGFmZjUwNjc0NWZkYjZlNjEzZjZlNDhmZiBsZWdhY3ktdHJ1bmsKKzI3NTc3IGJmNjQwMThhNjRmZjRjNzU0Y2UxMDNmMGFiYjU4NDI3YTQ5ODc3YTggcmVsZWFzZTIyLW1haW50CisyNzU3OCA1Y2NhYWFkNGYzM2IxYmFmYzhkNjMxZmZiOTVlY2FiYzNmZDc0OWUwIGxlZ2FjeS10cnVuaworMjc1NzkgM2QxZjNiN2FkZTA3MzQzMzk2Mzc1YWQ2ZjQxZWZiMDU3ODcxMjU4OCBsZWdhY3ktdHJ1bmsKKzI3NTgwIGYwMjU5OWVjNWNiOTMxMDZmM2MzMjI3YTMwYTJhN2Q3MGIwNDdlOTYgbGVnYWN5LXRydW5rCisyNzU4MSA5OTBmYzA0Y2YwZDQwMDE0MTU1MTVlOWE1NjY0YTM2OGJkZWQ2YjU3IGxlZ2FjeS10cnVuaworMjc1ODIgMGI2YTJhZTcwNmUyMWE4NzYxYTY0ZDNmNTQ3NDkyNGY3MjQ4OTRiMSBsZWdhY3ktdHJ1bmsKKzI3NTgzIDc3NGRjMDdmMWMxNmUyMzk2ZTA5NDMzMWRjNmMxMDFhMzNkNzlhMDEgbGVnYWN5LXRydW5rCisyNzU4NCA5ZGViYTM1ZTYyNGNiZjk1MjJiNjY3YWYzZjRhMTQ4Mzc1NzU3NmVjIGxlZ2FjeS10cnVuaworMjc1ODUgMDgyMDIzYzIwY2VmMjI1MDU4ZTBhNWE3ZmY4MzFmY2MwOGQ0M2MyYiBsZWdhY3ktdHJ1bmsKKzI3NTg2IGU0OGE0YjBiZGJiNTVkYTQ5NmRkNWY0YTAzMmI2ZTg1ZTcyNGNlNzUgbGVnYWN5LXRydW5rCisyNzU4NyBmMjAxMmRiMTYxNmMzZTU2OTI0NzIxNTRlYjhhYzhlMzg3MDUzNThlIGxlZ2FjeS10cnVuaworMjc1ODggZmE5YWYyNDVjZWI0ZWFkMjU2NWUzZmU5ZDQxY2RhMmFiZjdjMDY2ZSBsZWdhY3ktdHJ1bmsKKzI3NTg5IDU2MWUzM2E2YTMxMzg0MTdjNmQ5ODE3YThhMzYwZWVlYzJjMDhiNzcgbGVnYWN5LXRydW5rCisyNzU5MCBlZmFiYzE1MTFkYzI3MWVjMDk3YjQ2OWRjZmRjZDcxMDY4MjhiNmM0IGxlZ2FjeS10cnVuaworMjc1OTEgYTU0NjU5Mzk2OGQ2NGRmNDY1OWQ3NjI3NTM4YzQ3OWJhZjhhNmZkZiBsZWdhY3ktdHJ1bmsKKzI3NTkyIDI1MzY3YzdjNDBhNGM2ZGU1NDA4MTkwODkyYWRjMjM0NDVkMjE0ZGQgbGVnYWN5LXRydW5rCisyNzU5MyAwNmVlODYyZDk4MTU0MzQ0OTUyOTYzNDg2NzA4ODdjNzlmYjM1ZGEyIGxlZ2FjeS10cnVuaworMjc1OTQgMjk2ZGQzMjQyNWQ2YTczZjQ4OWQ0OWU0NzkzZWQ1ZWQ3ZmUwYzAwOCBsZWdhY3ktdHJ1bmsKKzI3NTk1IDA4NjdkYTVlODU0ODlhYzg1NWY5NzE3YWUxZDkyNzRmNzEyYzExMjUgbGVnYWN5LXRydW5rCisyNzU5NiBmMGEyZWM3OGJkMDVjMzc1N2FlMDQzY2FjNTEzYTgyOWVlNGM3MDY2IHJlbGVhc2UyMi1tYWludAorMjc1OTcgMTYzMTRmZjU4ZWY0ODA1MmM1YzMyZTY5MGExYTU0ZGM1N2UzOWIyNCBsZWdhY3ktdHJ1bmsKKzI3NTk4IGM4YTE5YTQyODM1ODRiYjliY2VhZWEwZTI3MTg2YmIyNjdmYjM1N2MgbGVnYWN5LXRydW5rCisyNzU5OSA0OTRhOGJlYjQ1ODI2NWExZGJhNTUwYWFlMmFjMmNiODRhOTdmZDAyIHJlbGVhc2UyMi1tYWludAorMjc2MDAgZGZkODVlOTAyM2ZjYmM0OTZiOWJlNGVlNGQ5NWUwZTRiMGQzZGVjMiBsZWdhY3ktdHJ1bmsKKzI3NjAxIGRhYTViMTQ0OTJlZTkwOWRhMmVkMWEyOTIyODdlZTc1NDc2ZmU4NjAgbGVnYWN5LXRydW5rCisyNzYwMiA3NmFmOGIzMDg5NGE3Y2Y5ZjA1MzRlNTExNzQ5OTBkYzc4MjA5M2VkIHJlbGVhc2UyMS1tYWludAorMjc2MDMgYWQ1ZjNhMDUyNmQxZjQzZTc4MTQwZmIwYzA4ZGQwYzNmNGM0ZDZhNyBsZWdhY3ktdHJ1bmsKKzI3NjA0IDU2NTc4MWVhMTM3YmUyYmRjNTI4YzM2YjViOTViY2JiZjc1YjM4NTUgcmVsZWFzZTIyLW1haW50CisyNzYwNSA0MmVkMDJhZmE2M2JmNzZiNmZiNGRkNTU2Yjc4YzFhMmRiNzkzNzZjIGxlZ2FjeS10cnVuaworMjc2MDYgYjM0NzIzMzc4M2VlMzkzYmNlYzViYmU4NzYzZmFhNjQ3NjUyNjc0YiByZWxlYXNlMjItbWFpbnQKKzI3NjA3IDliZWEyYzBjODM4ZTZjNjc3ODQ2NGM4YWEzY2IwZmVkMmNjMDBjNTMgcmVsZWFzZTIxLW1haW50CisyNzYwOCA2MmQ4Zjk3NDgxMWYxYTQ2MjZlOTc4MWU3OTRiZTFmYjIzMzI2ZDA3IGxlZ2FjeS10cnVuaworMjc2MDkgOGE2N2YyOGE0MmE1ZGMxOGNmNTAxNmI5ZjJlMmY3NTM2ZjNjYmVjMiBsZWdhY3ktdHJ1bmsKKzI3NjEwIDViNjZlNjNkN2FiYjcwZDQ4NGYzOGNlOTA1NGIwYjUwNjg1NDI1MGEgcmVsZWFzZTIyLW1haW50CisyNzYxMSA0MGQ5NjQ5M2E0Mjk1MWJmOWIyNjY1ZjFhNzQyYmYyZDFjMzdhYzQ0IGxlZ2FjeS10cnVuaworMjc2MTIgMjg2MGJlMjQ0MjYzZTQwNDk3NGM3ZDc5NDk5ZGY0MzAzMzVhOTAwYiBsZWdhY3ktdHJ1bmsKKzI3NjEzIGI2MjEzODQzZDhiZWQwMGVkMDI2MzFjMjEzYTFlZGZkYjVlMjVlYjYgbGVnYWN5LXRydW5rCisyNzYxNCBlMDZiMWFiMGJkYjgwYzM0ODRjMWY4NDgxZjBlNGQwMjRiNDgyZmEyIGxlZ2FjeS10cnVuaworMjc2MTUgMTFjNDI1MzY5OGRjNzNkY2E0ZjUwODZjOGVmMTA1Y2I3Zjc2ZmZkNCBsZWdhY3ktdHJ1bmsKKzI3NjE2IGM4OTE3YjU5YzA2NTlhYTM4ZjUzZDg2MjcwNzc3ODMwODAwMWRlNjIgbGVnYWN5LXRydW5rCisyNzYxNyA3M2E4ODQ0ODdhNzY2ODBhYjNhMjZhODZiZDAzYjlhYTk5NGMyMDg5IGxlZ2FjeS10cnVuaworMjc2MTggMmJlNjNlMjBhNDk4MmQ1YWI3NDkxZThmMmNlZmJlNmZiNTQyNWNjZSBsZWdhY3ktdHJ1bmsKKzI3NjE5IDA1OTc3YzVmODgwY2Y4YTFjY2M5MGY0NjAzNzRhYzQ4YTM4NTE5MjcgbGVnYWN5LXRydW5rCisyNzYyMCAzODk1Yjc4ZDNlZTBjZWNmNWQ4MmU4NjRkYzI4YTMxYzI3NTEwYzI5IGxlZ2FjeS10cnVuaworMjc2MjEgNTFjZGE2ZTg3NjRhNmUyMmQ1NzMyYzZjMGIyZGFiNDgxMzYzMTUzZCBsZWdhY3ktdHJ1bmsKKzI3NjIyIDllYWZiNGNlYTQ3YTVjOTAwM2Y2YmIwOGRhYmM4YTE4MTE1Mzc1ZjIgbGVnYWN5LXRydW5rCisyNzYyMyBmYzI3ZmZlMjAzNmFhMTBmZTcyZWJjNjZlZWQ4NTJjY2MyMjVjNmY1IGxlZ2FjeS10cnVuaworMjc2MjQgYTNmYzFkOGUwYWU4MWU0YTNmZDIwZWY4YmZkZDAxYjAzNzM3MjRiNiBsZWdhY3ktdHJ1bmsKKzI3NjI1IGM0MjNhODhiMjJjZWQzNDZhOGM0YzM3OGZmN2EyZGRmZTgyOWUxMjQgbGVnYWN5LXRydW5rCisyNzYyNiBkYTRjNzEyMDE0M2YwOGQ5MzM4NTEyNDM5ZmVhOGVmYjJkNDMzZWRhIGxlZ2FjeS10cnVuaworMjc2MjcgNTA0NDMxMjdiMjFkYzQ5NzE4MjM0YzI0YWRiODU1NTJlYmZjODFjOSBsZWdhY3ktdHJ1bmsKKzI3NjI4IDlhNThkNjRmOGZjM2ZkNTI2NGM2ODBhYTAwY2IzNzFiMTI5NTFjNDkgbGVnYWN5LXRydW5rCisyNzYyOSA1ZDNlYzI4ZTlhN2FkM2U4MGNhMjQyNmZlMDY5MjFmZThiYzdhZmQzIGxlZ2FjeS10cnVuaworMjc2MzAgMzA1NDIyZDY5ZDMxMzMyZGE5OTMxZDU0YTJjZTNiMjEzNTI1MTFmNSBsZWdhY3ktdHJ1bmsKKzI3NjMxIDRhN2IzYmFjMzgxMjg3YjI0MTZjZjYxMzc0NjRlOWEyMjY2MzM2NzEgbGVnYWN5LXRydW5rCisyNzYzMiA4MDRlYTUxY2ZjZTZlMmMwMzIxMmI1M2Y4ZTg0NzI0YTQ1NjM4M2Q3IGxlZ2FjeS10cnVuaworMjc2MzMgN2QwOTgyMDU2ZjcyYjU3ZDg3YTkzNWFjYjU3YzNkZmYyYzgzN2JlNCByZWxlYXNlMjItbWFpbnQKKzI3NjM0IDU1NDJiZjBiYmNlMjNjYjhiYTJkMjMxZDM4ZWUwZjRlM2RiMWY1ZmMgbGVnYWN5LXRydW5rCisyNzYzNSA2MmY0YjQ1YjA1ZmRkYTEzYjk0NDAxOTRkNzZhMTZjMjBmMWIwOGM1IGxlZ2FjeS10cnVuaworMjc2MzYgODMxMjBmNWE0OGMyMTM5ZWVkYmVjODE0NWNlYjllZTU5M2NlYWJhNSByZWxlYXNlMjItbWFpbnQKKzI3NjM3IDQxYzU0YjM3ZTAzMDg4NDcyYWI3YWYwMTU4NDM3MzE5NzI1MjkzMTcgbGVnYWN5LXRydW5rCisyNzYzOCA4OGNkMjdkYjc5YjkzZjI4NTVmMGVmZWI4NTgzNjgxMjYyZWViM2M2IHJlbGVhc2UyMi1tYWludAorMjc2MzkgYTY3MTcyNzUxOTVjOTI5MDNiY2U2MGM4ZjZlYzI4ZWExZWQ2ZjBkYSBsZWdhY3ktdHJ1bmsKKzI3NjQwIGVhYzU0YTgzMjcyZjQyMDBlOWRhZTFmMmE1NWQ3YTAxZDNlZGY0MDcgbGVnYWN5LXRydW5rCisyNzY0MSAyZjYwZjkwY2UzMDkzZGJiMTU5NzEzNzY0NjRhYTcwOTNiZGRkZjEyIGxlZ2FjeS10cnVuaworMjc2NDIgNmFhMmQwOWUzMmMxM2ZiNTZjOTY4MWJlZjIxNjA0NzQyZGJhODNkMCBsZWdhY3ktdHJ1bmsKKzI3NjQzIDI3ZTk0Y2FjYjQzYmQ2YzM0ZmFmNTYwMGNmMDc1MGUxM2E1Yjc3MGMgbGVnYWN5LXRydW5rCisyNzY0NCAzYjU3MWUzMmE2ZTQ1ZmI4MjViYmI2OWE5NjFmYjIwZDJlNTEwYWVjIGxlZ2FjeS10cnVuaworMjc2NDUgZTYwMzMyNTRkZjIxNDU1YjhmYzQxNDU4NTI5M2U1MjZlNDYzY2YwZiBsZWdhY3ktdHJ1bmsKKzI3NjQ2IDE4YzFiMjkwZTQ4NDI5NzQ3MjNmMzEyNmNkNGZjZWZmMjVhMjIyN2EgbGVnYWN5LXRydW5rCisyNzY0NyA0YTVjNmY2OTQ0N2Q2YjlmZjc3NzhiMjBhNWNlMDJjY2M1OTAyZDg2IGxlZ2FjeS10cnVuaworMjc2NDggZDk4YjBjZGY3ZTUxYjZhMTkwZmE0MDM0M2IzYThiNzljMTIyNGM5MCBsZWdhY3ktdHJ1bmsKKzI3NjQ5IDc2Y2QyODZlN2RlNWU3Nzk1YjkxOTMwNWQ5YmI2ZjNlZDk3NGVhYWQgbGVnYWN5LXRydW5rCisyNzY1MCAzYTNlMDcxZDg0Zjk4NWZkYzIzOTk1NjA3ZDc5Y2FlNmEwZmU0ZmE4IHJlbGVhc2UyMi1tYWludAorMjc2NTEgZDcyMzcwMzdmMzc5NGQ5MjQ3NDFmZjk4ZTM4NDhmNzMwMWQ4YWU1OSBsZWdhY3ktdHJ1bmsKKzI3NjUyIGE0ZjRjZTVlOGFhOTkxNGUzMjMwN2Y1ODhmNzgwNWViMGNjNTI5NTIgbGVnYWN5LXRydW5rCisyNzY1MyBkMWIyYmZkOTNhMjcwODk1MGNhMGNlNmQ2YjNmNzM1YjM5ZGZiNzAwIHJlbGVhc2UyMi1tYWludAorMjc2NTQgYzNjZjIyMzM4ZTFjZTk0NzI4ZmZkN2M0ODk0YWU1NDE2NjE4MzhkYSBsZWdhY3ktdHJ1bmsKKzI3NjU1IGMzMjBhMDdmMDE0NjcxYTNlMzBhOGQzYzAxMzI4OWEwY2M2MzQ3NzYgbGVnYWN5LXRydW5rCisyNzY1NiAxY2ViY2U1MGZlNzEyMjRkMTA5NGM2NWRhMGEzNDk1OTdlYmY4OWIyIGxlZ2FjeS10cnVuaworMjc2NTcgOTlkYTkzNjgzZWE1YjI1NDg2MGUxNjEzZjE5MGEwNDk0ZDBlMzZjOSBsZWdhY3ktdHJ1bmsKKzI3NjU4IDM1MjlhZDIxMzk1NTk0M2QzNDU4YTEwMjkyMjc2YjY1YWU3ZjUxNTEgbGVnYWN5LXRydW5rCisyNzY1OSBlYjA0ZjE3Y2MwMDhjYTc1MzNkNzQ4ZDM3YTUzZGIwZjk3ZTk4YTYwIGxlZ2FjeS10cnVuaworMjc2NjAgNzFmMWYzNWMwMzU3MzQ3NmVhMzk4MzEzNTQ2N2YwNDA3ZGYwZDAxZiBsZWdhY3ktdHJ1bmsKKzI3NjYxIDFhNzAzZjliYmRjMGZlZGNhY2U0NzlmNzU0ZmEzMTkyODc2ZGYzMjUgbGVnYWN5LXRydW5rCisyNzY2MiAxNTk4YTFlNDczZTI0Nzk4ZmQ1OWFjZGIxNDNiYzYxNjc2ODMxNDU5IGxlZ2FjeS10cnVuaworMjc2NjMgODE5YzgwMzM3MDViOTU0ZjU1NmU3MmZlYWMyMzVmN2ExMGQ4YzI2NSBsZWdhY3ktdHJ1bmsKKzI3NjY0IDk3MDc4NmQwMmU4MDVkZjE3ZDRkOWI2NDcwNzdjNGNhMWRiZjY0ZTkgbGVnYWN5LXRydW5rCisyNzY2NSBjMGE2N2ExY2FiMDljOTczN2MyMWU3YTA3NDMzNGU1ZmUwZTQwOGI3IGxlZ2FjeS10cnVuaworMjc2NjYgZDg5MDk3OTIwMDVhYjgyZWQxYmMyYjEzMTBmZGRhZjZjZDE4NGIyYiBsZWdhY3ktdHJ1bmsKKzI3NjY3IDQ0NTIyYTc1ZGVlY2VhOTQ0YzgzMmVmZTRkMzlkNjcxMTFiMjE5MDIgbGVnYWN5LXRydW5rCisyNzY2OCA0ZTg1MzA2YTliYmZhODFlYzViZTVmMzg2YjE0MzI4MWQyZWM4NjI5IGxlZ2FjeS10cnVuaworMjc2NjkgMTU3NmEyZGZmMDFmOGU5OGEyNTVhMWU4N2Y1NjI1M2Y0ZDU1MzQ3ZSBsZWdhY3ktdHJ1bmsKKzI3NjcwIGQ4MTRhNzMxOTI0YTMxNWVhNTk3ZWUyZGM0ZGY0ZDM5Y2FhYjE4MTcgbGVnYWN5LXRydW5rCisyNzY3MSBiNTk2MmI1ODdjYzA5MjllYTFjZmY0ZDVlZWFkYzAyN2IxNmQwMTdlIGxlZ2FjeS10cnVuaworMjc2NzIgMDllNGRlNWRjYjNiYWIxZWNkNDhlYzU0OGI0NzkzOGNmNmY1ZmI2NSBsZWdhY3ktdHJ1bmsKKzI3NjczIDNjYWNlZjI0OWViNTUwYjI2MzAyNmM5YWRmNjcxNTY4MzM4ZjI0YjUgbGVnYWN5LXRydW5rCisyNzY3NCAyZDQwNzQ4NGE0ZTYzMzhlZmY1NDZjMWRlYzRmMDViOTA0ZGZmY2M4IGxlZ2FjeS10cnVuaworMjc2NzUgNjQwMzcwZjA4ZTJhZjI5OTY3YmFiODhhZmM0MTRhNmE0ZDVjYWJjYyBsZWdhY3ktdHJ1bmsKKzI3Njc2IDBhMDhlZDA1YmQ0MjVjMGExNmFmNzI1MWMzYmMxODBhM2Q2MWRiZGMgbGVnYWN5LXRydW5rCisyNzY3NyBhMjZjYThhYjI3ZjJiMjAxNTEyYTk4NTE0ZjJlZGRhYTNmZmU3NzZkIGxlZ2FjeS10cnVuaworMjc2NzggODdlMjUzNGU5ZDY0YjM3MDUwYzI3MDdmODgyOWRjNTVmODdmNGViMiBsZWdhY3ktdHJ1bmsKKzI3Njc5IGU2NjIyMjYyMTFlNTM5Y2FlZGZkMTRjOWNlMjNiZmI4NDJjODdmMDEgbGVnYWN5LXRydW5rCisyNzY4MCAzNzliMDFlMDc0MjIxOTkwNjk2M2I4MmY5ZGQwZmIzYzAzOTYzOTIwIGxlZ2FjeS10cnVuaworMjc2ODEgYTAzMjk4YTNhY2FkMTQzOTA5MmUwZjQ5ODMwZTBhYzhmYmUyMjkyYyBsZWdhY3ktdHJ1bmsKKzI3NjgyIDUyYjA5NzZlNDhhMWQ2ZTQ5ZDQwNTNiOTgzN2Q5ZGI0YTc3OGEyMGEgbGVnYWN5LXRydW5rCisyNzY4MyA5YzAxNzg0Y2U3Y2FiNTE0MzFkOGI5ZDQ1MGVhZWZjYmNjNzMwYjYyIGxlZ2FjeS10cnVuaworMjc2ODQgYzRiZjQ1Y2E0ZDU1Njc2OWYwMTI3Y2ZlNjY5NjhkMDExOWU3YzU1OCBsZWdhY3ktdHJ1bmsKKzI3Njg1IDkzNDM0YmMwODk5ZDlmZDU0YTc5YjhlNzUxMTk1YjQ0MmU0ZDA3YzAgbGVnYWN5LXRydW5rCisyNzY4NiBjOTFiN2YzNDYyNmI5Y2QzZTU4NzNjZDJiNTRjNzkzNDc5ZjU0ZGUzIGxlZ2FjeS10cnVuaworMjc2ODcgNDI4Y2JiZjA1NjM5MDY5ODUzMDg5YzkwNmM3YWY0ZjE3ZGRhN2E2ZCBsZWdhY3ktdHJ1bmsKKzI3Njg4IDEzMjU3N2Y2OTNiMWNjMTU5NzMxODE5NGIxZTgyNDUzNzc4MWQ1YTIgbGVnYWN5LXRydW5rCisyNzY4OSA0MTY2NTRlMjdkODg5MzM1NjNmMmJiNDI1NGQ3NGMwMjQ5MjRjZGY4IGxlZ2FjeS10cnVuaworMjc2OTAgNjkxMzRjNjFmODdjMDZiYzFhZDM4MTE0MzNiYzIwMGUyNjE1OWU2YyBsZWdhY3ktdHJ1bmsKKzI3NjkxIDA4ZDMwN2NiY2NkOTUxMjBhZWQ5YzY3YjgzZWNiNjUwYWZkNjM2NGQgbGVnYWN5LXRydW5rCisyNzY5MiA1ZWRlOWJjYzY1MWViMmYwMTlhNGNhNmUzZTYyOWRlNzY1NWFjM2JkIGxlZ2FjeS10cnVuaworMjc2OTMgYTM1M2Q2YTQ1Mjc2OWVhMDJiYjI5MWI4N2Q1MTBlYzAwYWRjYTIxMCBsZWdhY3ktdHJ1bmsKKzI3Njk0IGM0YjNhMmIyNDdhYzM3YTM3MTI1Zjk3ZTI4NWY3ZTBkMTcxZWIyNGEgbGVnYWN5LXRydW5rCisyNzY5NSA2NThlMTJjYzAzMzYyZDVhNjQyNzc3N2M4YzE2YzNkYmIzNWFiZmVlIGxlZ2FjeS10cnVuaworMjc2OTYgNzRmOWEyMDZkNGYwOGRlMTMyM2UyNDUzYWFhNGJiZDI3MzM2YjA2MyBsZWdhY3ktdHJ1bmsKKzI3Njk3IGE4ZGYwYzBiZTI0MjNhZWI2ZDYxZmVhYjM2ZTQyYzhmOTYyYjZkMTAgbGVnYWN5LXRydW5rCisyNzY5OCBkZDM4MjkxYjg5ZmI1NDAwNzViOWRjMWJhNWIxZDUyNDc5MmU4OWIxIGxlZ2FjeS10cnVuaworMjc2OTkgMjlhZThlODkxNTNiZDZlNTU3YmRkOTliZDBlMjdkNjNmODhkNDkwMiBsZWdhY3ktdHJ1bmsKKzI3NzAwIDEyODE1ZDA1MDgwY2Y2OWMyYzlhOTkzZTRlZWMxOTYwNzA0MDIzOTggbGVnYWN5LXRydW5rCisyNzcwMSBjNDM0NjZmN2RhZTg0MTY0NTdlNzA4MWE2YjQyOTJiNjRiODQwNGQxIGxlZ2FjeS10cnVuaworMjc3MDIgNDc4YTJkNjRhYzU4MzA4ZmFiZjRlNGNkNzU3YTcyNjRmZTk3M2M3YyBsZWdhY3ktdHJ1bmsKKzI3NzAzIDMxMjI3MzUzY2JiY2MwMTBiNWQ4MjY5NjBlMzA2NzQ2ZDk4MTc1MWYgbGVnYWN5LXRydW5rCisyNzcwNCBhZmU0NzlhNjIzNWVjMDg0MTVlNzQ2NTNiYmIwMzM2MmQwMjQ0Y2U0IGxlZ2FjeS10cnVuaworMjc3MDUgYWIxODc3YTdiMjYyNWJkNmM0NmVmYjMxNDkwYzU2YTVlZmUzOTI5YSBsZWdhY3ktdHJ1bmsKKzI3NzA2IGQ5YWRkNDBmOTJmZjMyZjE5ODQ3ZGUzMjViNWJmM2VmYTBkYTNiYTMgbGVnYWN5LXRydW5rCisyNzcwNyAxN2Q1MjYyOTc3NTU3ZjdlNjE4MGNlN2FiMTc5ZWVjMTZhZTUwYWJkIGxlZ2FjeS10cnVuaworMjc3MDggYWE0YjlhN2IzODE3YTE5ZTVmYTU4NDkxYTlhMDNhY2MyMTZlOTg2MSBsZWdhY3ktdHJ1bmsKKzI3NzA5IGViMzliYTYwZGFlMGNmYzI5NWJjODNjZThkMGQ0ZGE2NWQwZDFlODcgbGVnYWN5LXRydW5rCisyNzcxMCBkNDk3ZjUyM2I4MmVkNzRhY2ExMjYzOTk1MTZlMzNhMWNmZDgwOGFhIGxlZ2FjeS10cnVuaworMjc3MTEgZTM3NTFmYzAzZTZjODc4MmU5NzZiY2Y1MGVhM2ZiMWY5NmZjMWZiZCBsZWdhY3ktdHJ1bmsKKzI3NzEyIDUzYjMyMjcxZThlMWYxNmRmNGQ5MzhjYmNiZDc0N2YzNmZkOGJhMjMgbGVnYWN5LXRydW5rCisyNzcxMyA2OTc3NzdjYzgzY2MwZmYwNjM1ODUxMmZhNGZmZTZmZmQ3MWNjNzU3IGxlZ2FjeS10cnVuaworMjc3MTQgOGI0YTE2NWJhYWVlZGY2OTg0ZTRhYzBlYmYwMTVhNzE3NTM1ODZlMiBsZWdhY3ktdHJ1bmsKKzI3NzE1IGRkZjY3MTYzMzQ2NWU1MDZmNWI3Yzk2N2FlMWMxZjZmOTYyMDdhZDEgbGVnYWN5LXRydW5rCisyNzcxNiAyMTMxYmI3OTBhZjk1OGM2NTEzNDE3ODU3NTA0YjYwMGExNDg0ZWQ4IGxlZ2FjeS10cnVuaworMjc3MTcgMDZiOWE4ZGFkNzIxYjE5MDZlMGY5YmRjMGYxZjIxNzEzNTg1ODA3ZCBsZWdhY3ktdHJ1bmsKKzI3NzE4IDJmNjAzNDRhNDllODhjZTRlZDk5NzQzNTEwOTMxOTUxM2YwNTQ5M2IgbGVnYWN5LXRydW5rCisyNzcxOSA0OWEzZTgzMzQ3ZGRlZDBiMDk5Nzg0OWNlNzA1OGI5MGFhODc2YzkxIGxlZ2FjeS10cnVuaworMjc3MjAgNjdlYWFiYjAxN2UwZTBkMDFiODlhZDBlMWU2YjdkMTQ4ZjA5MjExZCBsZWdhY3ktdHJ1bmsKKzI3NzIxIGE5YjgwOWM4YjlkYmFhM2U0MTVlMTY1ZDYxNmIzNDM5NzE4ODZkMjcgbGVnYWN5LXRydW5rCisyNzcyMiAxMzk4NTkwMTZiNDRiYjlkMDY3MjRiMTBlODhlNjQyNjNkNmQ1ZTliIGxlZ2FjeS10cnVuaworMjc3MjMgM2VmMDE5Y2FhZDFlNTE1MDhkNDliNjhmMDlmY2E4Y2MxOWU4OGVkNyBsZWdhY3ktdHJ1bmsKKzI3NzI0IDJhZTAxNDU5MzFmMWYzMDhkM2RkYjI5MjhlZWQ4ZTgyZWEzM2MwNDYgbGVnYWN5LXRydW5rCisyNzcyNSBmMDljZjhlYmE3ZTIzNzkwZmQzNjU1NjU4ZmJmZTk2ZWYyNjMyNTJhIGxlZ2FjeS10cnVuaworMjc3MjYgYmIwNjkyZTMwZmM2YjAxZDNhMTUwY2UwYjFjZDM1MWJjY2ZjM2VjZiBsZWdhY3ktdHJ1bmsKKzI3NzI3IDIzMmFiMGQ2NjM3NTJiYTJlYTZhMTFlMTM0NmUxNGY4NzE0ZjI1ZTYgbGVnYWN5LXRydW5rCisyNzcyOCAyZGMyM2YwZjM0MjE1ZDZmNDZhMzc5NDM1OTA0MjIyYTBlMTBiYTM2IGxlZ2FjeS10cnVuaworMjc3MjkgNDg5MzBiMDA0M2I3NzJiOGE2MDI5MTM0YzRlMWRlNmZkMmYzNzgzNCBEU19SUENfQlJBTkNICisyNzczMCAxODdjNGZhZGUzZGIzZWI1ZjkxMWE1ZDU2NTk5ZDE5MTc1NjY0MDY1IERTX1JQQ19CUkFOQ0gKKzI3NzMxIDMwZDBkOGRiZjI0NDU4ZWIxNjg0ZDhiMDZlOWYyMzI4NjE4NDVhMTkgRFNfUlBDX0JSQU5DSAorMjc3MzIgN2ZlZDM1MTNhYmZhNzEzZGVjMTY2ZGU5OGJjYWQ2YzUxMzM0NjgyZiBEU19SUENfQlJBTkNICisyNzczMyAzYTNiYzdkOWYxZjVlNjE2MWMyMDhmMDk4MzhmNjk5YmNhOTYwNDk3IERTX1JQQ19CUkFOQ0gKKzI3NzM0IDRmNmU1NmM0NDczOWZlNmI5NGZiYzdkZjNiZTg1N2QwZGFkODcwMWIgRFNfUlBDX0JSQU5DSAorMjc3MzUgZDJkODFkNTNkNGExMmRmMzBhY2Q2MWVkMDNkYmRhNWU0YTVhNTljNyBsZWdhY3ktdHJ1bmsKKzI3NzM2IDgwOGI0ZmU1MTg0ZmNhZDc2NWYxZWI5YWZhMzk0OTcwMjI4N2UwZjAgbGVnYWN5LXRydW5rCisyNzczNyBhYTVjOTliNjFkZjc3NzQxYWQ2OWIyZTY5ZmQzMWUzZTBmMmJkNzkyIGxlZ2FjeS10cnVuaworMjc3MzggMTM3ZmRkZTcwMDA2MDEwMmYyNGM0MjkzZDlhMWU0ZmZiMzhlZDg1NyBsZWdhY3ktdHJ1bmsKKzI3NzM5IDE1N2JiZmIxN2Y0NGNlOTJkYmY2YjU4Zjc4MjJiYmI0YmM1ZGM1ZTAgbGVnYWN5LXRydW5rCisyNzc0MCA1NWVhYjEwZTQ3MmQzOWYzODQ2MjJiZjdkYTViY2Y1MTFiY2Q3ODhjIGxlZ2FjeS10cnVuaworMjc3NDEgZmRhNTEzYjY3MWI2YzlmNjJiZTY3OTk3NDRhMDA5M2M2ZWNjN2E0ZiBsZWdhY3ktdHJ1bmsKKzI3NzQyIDRlYWRmN2RmY2RiNGE4ZWVkNGRhM2ExOWU3NWY0MGFhZjAzZGQyNzMgbGVnYWN5LXRydW5rCisyNzc0MyAxOTQxNDBjODMyNzYwNDlkZjU1NTYyZmE0NjU3ZDM4OTc0YjQzNDVjIGxlZ2FjeS10cnVuaworMjc3NDQgYTM1NzE0MzY4MzdjMWEyNDVkMjMwOTJjOGU1Y2IxM2EzNjg4M2RiOSBsZWdhY3ktdHJ1bmsKKzI3NzQ1IDE3ZTk0ZTYyMzUzYzczOGQzNzVlNzY1ZmU3N2MxYTlkMjFlODRmMTUgbGVnYWN5LXRydW5rCisyNzc0NiAzMzA4YTk2Yjk3NmY2ZTg5NTBkN2Y3NmVmMjQ2NTk4ZGE2ZmFmN2YwIHJlbGVhc2UyMi1tYWludAorMjc3NDcgZjNjOGUzYWY3YjZiZjYyNjc4YjJhNmY3MDUyM2I0ZDE1Mzc1ZTIzZSBsZWdhY3ktdHJ1bmsKKzI3NzQ4IDAyMGQ5NjYyNTM1Nzg2N2NmNjBmNTcxNzk1MjkwOGU5YjhiYzE5YTUgbGVnYWN5LXRydW5rCisyNzc0OSBlOGZkNWNhYjBkYjNlYTcyNjA3NWQ0OThhZTllYjIwN2U5NGU1ODZjIGxlZ2FjeS10cnVuaworMjc3NTAgNzEzYWQ3ZTA0MDZhYTYyYWUzMTBlZmNiMDk2YzBjODMzMzY5ZGYxYyBsZWdhY3ktdHJ1bmsKKzI3NzUxIDk3OWZmNWQwYWUwN2FmNTQzYTc3MzczNjQ3ZWRmZDVlMDlmOTM5YzMgbGVnYWN5LXRydW5rCisyNzc1MiBhYTBkMmQ1MWZiZGVjMTEyYWYzMDQzMzIxNjcxN2RjZGRlNWZkMTY5IGxlZ2FjeS10cnVuaworMjc3NTMgYTcxODZiYjkxNDJjOTI5ZWUxZDAwNWE4YWU2ZDNlOGIyMTdmOWQ0NiBsZWdhY3ktdHJ1bmsKKzI3NzU0IDEwMTI5MDZlOGFkZjBmYzUxMDFhNjQ2NWMwYTllNTEwMDZiMTNhOTYgbGVnYWN5LXRydW5rCisyNzc1NSA4ZDIzYmZhMjBjZGJjZGIwYWFjYTA0OGU0YzJkN2E3ZDcyOTM0MDllIGxlZ2FjeS10cnVuaworMjc3NTYgNGFiNGRhYzQ2MmZmZGM5OTVmM2Q5MjY2OWQ4Y2E3NWIwMjI1ZjI4YiBsZWdhY3ktdHJ1bmsKKzI3NzU3IGUzNjA1ZWIyZjg2NmIzYjUzM2Y5YzVkMWY3YjFiN2I5NzAwMDI4NGQgbGVnYWN5LXRydW5rCisyNzc1OSBmNmVhYTlkOTk2ZWMyNDJjNjViNmQ4NjdjMWVmMDczMDlkY2Y0YzE1IGxlZ2FjeS10cnVuaworMjc3NjAgNDBlMDE0MDE4MWNmODUwMDBjMDVhMTE0NTZhNjAwZDVhMzQ3NzM2YyBsZWdhY3ktdHJ1bmsKKzI3NzYxIDQzZWUxYzA3NTBhMjM1NTRiZGU1NTRmZjczYTczMzAzZGI5Mzk4YzIgbGVnYWN5LXRydW5rCisyNzc2MiBkZmU1NGFmMjlhNDczZmZlOGUzNzk4MjNkMzBiMzU3NmFmNTc2ZDQ0IERTX1JQQ19CUkFOQ0gKKzI3NzYzIDlkNjQxY2U2NmFmMzU4MjFjYTgyYzVmMDg4NmFhOGVjZTg4ZGMzYzcgRFNfUlBDX0JSQU5DSAorMjc3NjQgZjc5YzdhYWU2NjIwZDhiMmIzZjc4Nzk5MzAwNjE3ZjJmYTRkYzQ1MSBsZWdhY3ktdHJ1bmsKKzI3NzY1IDMwNzBiNzE3ZmMzZDgzMzI2NmI4ZmU4YTM1ZWE0YTk2Njc0NTAxZGMgbGVnYWN5LXRydW5rCisyNzc2NiA4OWNlNjIxMjY2NjRmMjRiNjQwYmY5Yzk0NjJiODJhY2YxODRjOTUyIGxlZ2FjeS10cnVuaworMjc3NjcgYWE5ZTA1NDI3MGEyYTlmZWZhNjZiOWVlYWIyNzlkZjNkNTM1Nzc3YiBsZWdhY3ktdHJ1bmsKKzI3NzY4IGVjMmM4NTRiZDE5NmQzYWNhYzQ3NGMzMzA1Y2Q2YmUxMTU3ZWVjMmIgbGVnYWN5LXRydW5rCisyNzc2OSBjOWRlNTVmYmIyYjFkZWE3Y2VmZDEzZWQ2ZGNjNDJlMjc2MWJmMmZjIGxlZ2FjeS10cnVuaworMjc3NzAgZTJkNDYxYmVmYzdhOGM1YjIxNzRhZjc3MGUzOWQxZjViYjQwNDY5MiBsZWdhY3ktdHJ1bmsKKzI3NzcxIDY3Mjg0M2VlNGI2MWZiMzkxYTA4ZjNhYTVlYzVlNjk3OWQ5YTg1YTIgbGVnYWN5LXRydW5rCisyNzc3MiBkOGE2ODJkNGM2OTI0MDQ3MDA2YzliMjQ4Y2IzM2VkMjNiMjM2Zjc3IGxlZ2FjeS10cnVuaworMjc3NzMgNDE1NmJmOWIwMDQzYzBiNzhiOWZhMDQ0M2RmMDZjYzViZjc4ZmI0YyBsZWdhY3ktdHJ1bmsKKzI3Nzc0IDNjNDVkY2QwMTAxZGVlYmVlOTRlMGY4OGMwNDE0MjFiM2JlZDU1ZDcgbGVnYWN5LXRydW5rCisyNzc3NSA2NjczMTcxZmMzN2ViZjFiZTE4NThiOGQwZWMyZjVmNjFlMzk2ZDNlIGxlZ2FjeS10cnVuaworMjc3NzYgZGJkYWRhOTY2ODU4MmRmMTRkY2NlNzM1NTc0NTgzMjM3YWJhZWFjZSByZWxlYXNlMjItbWFpbnQKKzI3Nzc3IDBlMjdiNjcyNDdkYWE0YjBmMGVhNDg0YzQ0MjllMGFjZjViZTRiNzIgbGVnYWN5LXRydW5rCisyNzc3OCBiNDVkMWIzMDQwYWVmMDBmNzVjOTYyNTc1MzM0ZDQ2OGNhZmFiNjJmIGxlZ2FjeS10cnVuaworMjc3NzkgM2FhYWQ5ZGY3MTFlNDNlNGZlOTI0ZWEzOWZlMjc4NTc5NWE5M2M3NiBsZWdhY3ktdHJ1bmsKKzI3NzgwIGViNzU5ZGEwNjRhYTg1ZGI4NjNiNjkzMzUzN2FhMzBjMjIzNmQ4N2QgbGVnYWN5LXRydW5rCisyNzc4MSBhYzQ5YjI4MDdiNzUwZDQ3OTc4ZjA4OTI0NTk5MGQ2ZjRiZmRmMjE1IHJlbGVhc2UyMi1tYWludAorMjc3ODIgYjhlMzU5NmNlYmQ3ZDM0NGMwNzkyMGMyZTUxMWNkYjFjNDM5MTFmZSByZWxlYXNlMjItbWFpbnQKKzI3NzgzIDBhMzI3Yjc2ODg2ODc0YWJkYmYxOTcwMTg5MjgzNDM5ZWRjMzQ5ZDYgbGVnYWN5LXRydW5rCisyNzc4NCAwN2RkMmZjNmFjOWI3N2FiY2EzODViYjdjMDIyN2FjNDlmZGIzODA5IGxlZ2FjeS10cnVuaworMjc3ODUgYmI2NGE4NjE0ZjY2ODE3NGU0M2MwMzg5YjcyMzI5ZWFjZjcwZDQ5ZSBsZWdhY3ktdHJ1bmsKKzI3Nzg2IDQ3N2M3NGQwMDY2ZjA2Mjc2ODBlYzkyZTZlNjhjYmZlOGEzOTIzNDkgbGVnYWN5LXRydW5rCisyNzc4NyBlZDk4Yzg4YjIzNTNiZTQwOTNiMDcwNTNhOTk2MmQ3YTVjNTMwZjk3IGxlZ2FjeS10cnVuaworMjc3ODggZjYwNTJhZWIxMzRmY2ExZTgxNmZmMjJiZmZmMDgwOWNmMGUwMGEyMyBsZWdhY3ktdHJ1bmsKKzI3Nzg5IGM3ZWQ5MjVjNzViMzEwYTlhZWI4ZmEzMzE4ZjIwOTZiODgwNmY4Y2MgbGVnYWN5LXRydW5rCisyNzc5MCA2MDg3MzVkZDJlYmM3ZDZlNTFjODIwNmRkMThhMjBlNmNiNTE3MjYyIHJlbGVhc2UyMi1tYWludAorMjc3OTEgODFjYTZjYTVjMzA3NGIzNDNjZWJhN2Y5ZjFhNTA2NzlhMzE2ZjFhMCBsZWdhY3ktdHJ1bmsKKzI3NzkyIGJkMzY2NWJkMmY3ODMzMjQwOTZlOTM4M2E2MzExZmVmNzgwMmNiYmYgbGVnYWN5LXRydW5rCisyNzc5MyA4YzZhOTkyMjQ1NTc5ZjM4MTJhOTU5Y2M5YWEzYjUxMTU0MGYyZDQ0IGxlZ2FjeS10cnVuaworMjc3OTQgZWI1NTRhYTM2MWU5Y2U4MjA2ZTdjZWIzYzRkNzc0MjUyNTVkYzc4MCBsZWdhY3ktdHJ1bmsKKzI3Nzk1IGNhNWFjOTY3YzdjNGNjY2ExM2RjYjlkODVjNzAyZDhlMDVjMGU3ZTUgcmVsZWFzZTIyLW1haW50CisyNzc5NiA4MDEyOWQ0YThjZWMxNzUzMWUzZTYzZWE3ZTg5ZDI2M2IwNGYwMmU0IGxlZ2FjeS10cnVuaworMjc3OTcgMzA0NDA4NzFjNmU1NjQwYzZkNTZlNTAxZjM5NDdiNDM1ZWQwZWZlMiBsZWdhY3ktdHJ1bmsKKzI3Nzk4IGQwNDlmZDU4ZTRkZGM0ZGRlZWM3NDgyZGUyNGM5YmVlODgxNGYxYmIgcmVsZWFzZTIyLW1haW50CisyNzc5OSA0ZGU1YzdlNjIzMWU1ZDM2OTA1Zjc0YzdkYTFmNGI3NGNlMGFiYjhiIGxlZ2FjeS10cnVuaworMjc4MDAgZDZlYzRkYWI5MjdlNjdkMjI4NTc0YTVmOTNjN2FhZDY3ZWNmMzU3MyBsZWdhY3ktdHJ1bmsKKzI3ODAxIDMxYTcxMTliZDhkNGRlZjcxMzc0MjExOTYxZTNiZWRiYWVjMDNlMjUgbGVnYWN5LXRydW5rCisyNzgwMiA4ZTI2NmQwYWNkMTBhMDgyMWQ1MTI2ZmZkNzE4ZDc4NjMwMDgxMmQ2IGxlZ2FjeS10cnVuaworMjc4MDMgNDcwOGMwOWYwMzUwZjk1NDY0MDYzNGEwODAwOTljMTZjNWFlZmQ4NSByZWxlYXNlMjItbWFpbnQKKzI3ODA0IDA4OTI2Y2M1ZjJhZmQwNDE2ZjBhNzNmYjE5MzBjYTQwM2NkM2MxMzcgbGVnYWN5LXRydW5rCisyNzgwNSBhMDg4Y2QwOGRhZGU3NjYyNTBkMTg2NjA2OWQ3OWQ3YzQ3OTA3YjZkIGxlZ2FjeS10cnVuaworMjc4MDYgZjVjZmEwZWUwMmNmM2Y2NmEyYWI3M2I0ZTJhNmQ4MWQ2NmMwYmY0MiBsZWdhY3ktdHJ1bmsKKzI3ODA3IGRkNmE5NzExYjQzY2Q5MDZmMGU0MjFiNjkyM2Y4ZmFjZmU0MzUwMDUgbGVnYWN5LXRydW5rCisyNzgwOCBhMGE1OWU1MmJhZWM1ZGQwYzhlYTYwNWM4MGI3MGY2M2RjYmVkOGExIGxlZ2FjeS10cnVuaworMjc4MDkgNTE1ZTg3MjNjYWVmZjY1OTYzNGYwOTM5NGY5YWNjNjBiYjJjNzhiNSBsZWdhY3ktdHJ1bmsKKzI3ODEwIDI3NTY5M2JjZWU3NDAyYjMwYjZjODM3N2I2MTI5MGQwODcwNzExNWYgbGVnYWN5LXRydW5rCisyNzgxMSAzNmUyZmQzZjA4Zjc1ODBkZWU0NmFkOGIwNjllOTM4OTdlNzNiYzg1IGxlZ2FjeS10cnVuaworMjc4MTIgNWJlOTYxYThlOWRiM2UxODBmODYzZGY0MjJlYmJhOThmMGYwZmJkMSByZWxlYXNlMjItbWFpbnQKKzI3ODEzIGJkNjI2OGIxN2I3NTc3YzkxN2FiZDJkYjk5NzZkYmNlNDJlNDQ2MzYgbGVnYWN5LXRydW5rCisyNzgxNCAzZGIyNjFhOTNhNWI5ZjczYTM3ZTYzNTI5ODNlYTg5NzllZjZhN2MzIGxlZ2FjeS10cnVuaworMjc4MTUgZjRjZDc4YjNiNzc0Y2ZiOTRhNzJhYTZmZjVhNDU2NDgwNzFhZWQwOSBsZWdhY3ktdHJ1bmsKKzI3ODE2IGVkODkyNDExZWUwZDAwYjVlYTg0ZTQ4YmI5MjBkMGRiYzMxMWZiYjQgbGVnYWN5LXRydW5rCisyNzgxNyA5YWZhYzBkZDZiNmU0ZWEwZTYzMmUwNTA4ZGMyOTU4ZTlhOTkyZjM1IGxlZ2FjeS10cnVuaworMjc4MTggZWE0ODIxOTY0MDQzMjRjM2IwZjk5ZDQyYzUxNGNjOWJjNmMwYjMzNyBsZWdhY3ktdHJ1bmsKKzI3ODE5IDE1ZWU0NDVhZjA3ZjdhODUyNjk5MWNkMWM4MjA2M2Y4MmY1NjE5OWMgcmVsZWFzZTIyLW1haW50CisyNzgyMCBmNTVkNThlZTRlYTNmY2MwMGUyNjA0NGQ3YmRmYWEzMDhlNzkyNjJmIGxlZ2FjeS10cnVuaworMjc4MjEgMTRiZDVhYjBjZGI2NmM2NWY1NzU4Y2VhMzcyODYxYmJkYTE5YjUxMyBsZWdhY3ktdHJ1bmsKKzI3ODIyIGY0NDM2ZTFiMTg2OGZlZjJmMTJkYzcyNjk5ZTUyY2U1ODM0OGI5ZTAgcmVsZWFzZTIyLW1haW50CisyNzgyMyA3MzgzZTY3NGZjZDUxYjkzMDBlNzU5ODU5NzdlM2I1ZWU3YjljYzcwIGxlZ2FjeS10cnVuaworMjc4MjQgZmUyMjUwZjQ1YWMwODQ1MzBiOTFjNzM0ODg2MWMzZGZmOTY4YmQ5ZCBsZWdhY3ktdHJ1bmsKKzI3ODI1IDllZjgyMzc3NjY5ZDUzYTliYjVjMWI4MjJmOWQ3ZTZhN2M4MmM3NTEgbGVnYWN5LXRydW5rCisyNzgyNiA3ZGMzZjQwNzdlNTk1NTNlYzdmOTU5M2RmMjQzZjNhMDU2ZDZkYWQ0IGxlZ2FjeS10cnVuaworMjc4MjcgZDk4ZjhlMDNmYTMxMmEzYjQ2MDUyMjM1YWIzNDQ0NWI1MDBkY2IzMSBsZWdhY3ktdHJ1bmsKKzI3ODI4IDMwMWRkNTQ2NWI4ZTJiMjg2MGQ4ZmJmNTAwMjVkNDA1NTZjY2YxZTkgbGVnYWN5LXRydW5rCisyNzgyOSA2Njk4OTY2ODM4YzhlNDkwMmFjMzU2MmM3ODlkYzZkOTI5NDY1MzkxIGxlZ2FjeS10cnVuaworMjc4MzAgZmUwM2FiNTgwZjk1NWI5MmI2ODQ4MTg2OTkzOTExYjA1ZGQzOTljOSByZWxlYXNlMjItbWFpbnQKKzI3ODMxIDJjZDUxYjA1MmRkZjc3YjkzNWI3MTQwNWNhYzMyOTMxMmVlNjQ4NjggbGVnYWN5LXRydW5rCisyNzgzMiA2ZDYxMTI2YWNlNjk1YjM4NzU5MmViYTQyMjI2Njc1M2M2OTAyZTM0IGxlZ2FjeS10cnVuaworMjc4MzMgMjI2YmEzNGJkOTk4YjVlZTNmZDBhYWM5ZWE2ZTBlODI5YTM0MWZlYSBsZWdhY3ktdHJ1bmsKKzI3ODM0IDlkNDczZDRkMTFhNjkzZTdkY2MwNjk1OGE0YTRhM2RjMzhhM2RiYzAgbGVnYWN5LXRydW5rCisyNzgzNSAzMmRkZTM3YzhkOTU5NzQwZmViMWY1M2Y4ZmQwY2Q2ZjFlZjMyYjZhIGxlZ2FjeS10cnVuaworMjc4MzYgYzNkOWUwMWM2MTI0MDk3ZWIzYmMyNzQ4Y2FhYThmNWI1YjMxYzcyOSBsZWdhY3ktdHJ1bmsKKzI3ODM3IDZmODI0ZDZmMTI4NjI5MTI0YjcxMTk0MTM0OTk0Y2M3ZWY2YThiZDggcmVsZWFzZTIyLW1haW50CisyNzgzOCBkZGQ2ZmYwNjkzYzRmMDBkZDdiMWVmNzNiYWM2MzEyN2NlMTgzYzIzIGxlZ2FjeS10cnVuaworMjc4MzkgMzU0MzIzMzcxZTM4NDhkNWJhM2I1MThmYjVmN2JkMzgxMmM5MjMyMiBsZWdhY3ktdHJ1bmsKKzI3ODQwIDJhZGQyN2I1NTg2NGFiMDBkOWI2ZDdjOTA0NmJlMjIyMzkyN2Q3MmYgbGVnYWN5LXRydW5rCisyNzg0MSA3NDdmYTY1YTliNDc1YTkyZTQwYzRjOWMxMmFlOGMyNTY5YmYzNmFlIGxlZ2FjeS10cnVuaworMjc4NDIgMjI1NzBlNzZjY2ExNjIxZTZkYzNmMDk2ZjU5MjhkOGZjZGVlYjUxYSBsZWdhY3ktdHJ1bmsKKzI3ODQzIGE1ZWE0ZGQxNzg4M2E3YWFhNjEyOWVlZjA4Y2Y5MzViZmJlMjBiMTkgbGVnYWN5LXRydW5rCisyNzg0NCBmMGQxMzk5YTI0NDVkMGRjOWI1NDhiNzkxMWIyMDEyYzZlNmYzNmFiIGxlZ2FjeS10cnVuaworMjc4NDUgZjgyOGYzMjIwNmJhNTJiNGUzNDRiN2RjMGRlMTQ3YjQwYTEzOGYyNyBsZWdhY3ktdHJ1bmsKKzI3ODQ2IGQ5NzFiODcwMzUwODEyMWNiZmFmZTRjYjVlZTRjMGJjNTQyYjU5MzggbGVnYWN5LXRydW5rCisyNzg0NyBkMjE2ZTY3YWMyMjFjMjIwYTA5OWY3NjlkYWQyYzM0NGVkMmE1ZDhkIGxlZ2FjeS10cnVuaworMjc4NDggMjc4MjVkMjY4MzE3YTExMTYwNDRjYjE4YjM3ZmE0MDBiZmExZDc2NSBsZWdhY3ktdHJ1bmsKKzI3ODQ5IDVmMTQ5YWRlOWFmMTkxNjE2YjcxYWM5NDVjZTk4ZTJhN2EwYjYxM2QgbGVnYWN5LXRydW5rCisyNzg1MCAxODllYjZmYTlkZWQ4NTMxZmZhZDJiMWIxMGUwMGE1ZDdhMjM5ZTAzIGxlZ2FjeS10cnVuaworMjc4NTEgMmQ3N2JlNDFlZTVmYjA3ZTU4YTlkMjQ5ZmVkMzU2MTQ3M2M3YTAwMiBsZWdhY3ktdHJ1bmsKKzI3ODUyIDdmYzJjZWM0ZGM4MjhkNDllYzliMmQ0MzBiMWVmM2M1ZmFiZjhjMzMgbGVnYWN5LXRydW5rCisyNzg1MyBhMWJkZGY2YTMyY2FiZjZkYTEzMzg5N2ZjNmI0MmIwMTIyYmRmZGVmIGxlZ2FjeS10cnVuaworMjc4NTQgZWJjODY2N2YzMjVhZGJiYzcwYjhiZDcyMDU1NjY0MWYzZmM4ZWUyMCByZWxlYXNlMjItbWFpbnQKKzI3ODU1IGUzMzRkZDRlNTEwZmYxNzI3ZjkzZTU0MGFjMDA3ZmMyZGIwYzg0ZTcgcmVsZWFzZTIyLW1haW50CisyNzg1NiA0YTY2YmVmMTVjM2JiNjdkYTAzNzQ1MjBkM2UxYTMwZTAwZDk0N2IyIGxlZ2FjeS10cnVuaworMjc4NTcgMTYxYTVlZjAyMzBlMzkwNjllYWNjMGU4YzEyY2Y5MzFiMjFhNTBkYyBsZWdhY3ktdHJ1bmsKKzI3ODU4IDliMjQ5N2UyOTc5NTNhOTlmOGUxZDhkY2VjNjZkZTM5MTY1ZGI0ZjUgbGVnYWN5LXRydW5rCisyNzg1OSBlNTYyOThkYzBmOGFlODIxNDQyZTQxOWNiZGZlYmRkNTMyODQxYzVkIHJlbGVhc2UyMi1tYWludAorMjc4NjAgNzlmMTI5YjA3M2RlYmUzYmRjMGE4MmM1MWM5NTkzNTQwZGZjODU2OSBsZWdhY3ktdHJ1bmsKKzI3ODYxIGI2YTgyZjgxODU0MDZjNGNlY2VmMzc5OTI0MzNkMDVlZWNhYWFiM2UgbGVnYWN5LXRydW5rCisyNzg2MiBmNjZiM2EzNTA5YzcwY2EwNmIzNjU4NzIwMGZjZTUyNjRkMjUyMmYzIGxlZ2FjeS10cnVuaworMjc4NjMgNDViNGZjNjNiZjY3MTkzNjU0YjBlZjQ3NzI4NjBlOGEyOGJmNDJkMiBsZWdhY3ktdHJ1bmsKKzI3ODY0IDkwYjQ5NjY4ZDBhYzNmOThhOTZiZjYyNWM1MjkzNmI2NmNkZDQ5NjIgbGVnYWN5LXRydW5rCisyNzg2NSA1ZGJjY2UyMWRmZWVhNjcyMjA0MTZkYzJhOWRmN2ZlZmEzNDA5MmFmIGxlZ2FjeS10cnVuaworMjc4NjYgZTE0MDlhYjBmZTY5ODczNWQyY2ZlYWRkOTA2MzdhM2ZmNzYwMTE3MSBsZWdhY3ktdHJ1bmsKKzI3ODY3IGFkNGQyM2YxYmY2ZTZhMmJjNzM4NmQ0Njg1NjdjOWQwZDQwNjVmN2UgbGVnYWN5LXRydW5rCisyNzg2OCBiMzg3NTRmMWNiNjExMjJlYWVjYjJkYWQzZDc1YjcyZmU5OWY3MTIzIGxlZ2FjeS10cnVuaworMjc4NjkgYjZlNTFiMDg2Y2Y0ZDZjYzVhOWUzNjc5MzdkM2ZjN2JkNzAxYmNmZCBsZWdhY3ktdHJ1bmsKKzI3ODcwIDU2NDYyOWQxZjFhYzRhMjBmZTEwZmVmODc2MjA1YmM3NWM0OWE1N2EgbGVnYWN5LXRydW5rCisyNzg3MSAwM2Q4NWQxOTcwNTJhOTEyYzZlZmY5MTk1NGNkZDdiMzM2ZGUzMDIwIGxlZ2FjeS10cnVuaworMjc4NzIgODY5MWVkYTRjMDU3MzM0NzlhMzU2OTFkNTYxYTg0NjY3OTA2N2Q4MSBsZWdhY3ktdHJ1bmsKKzI3ODczIDc4OTlmZDJhZjkxMjVmODY1MTUzOTNmNzY2NmVlYWJjNzlmMDNkZWYgbGVnYWN5LXRydW5rCisyNzg3NCA3MWJhMmU5NjljMTE0MTVkNDBkMTc2Yzc0ZjMzODA1Mzc3YjlhYzY0IGxlZ2FjeS10cnVuaworMjc4NzUgZTAxMjhkNjE2Zjg3OTU5Zjg2YWRlYTdkNzlmMTIzNzg2ZGYxZWI3YyBsZWdhY3ktdHJ1bmsKKzI3ODc2IGYwNWEzMTFkNzk4ODYyNTdlMjdiMjk0MTkyZTdhNTMxZDMzMjBhNTggbGVnYWN5LXRydW5rCisyNzg3NyAxMmFhZjhkNWFkMmJlNzA3NTcyODYyNjA2NjA3OTA1NmVlNDRiMjUyIGxlZ2FjeS10cnVuaworMjc4NzggNGU2MjdkOGNmOWY0ZDJhODQ5NmY0YTM3OWZkYWZlODVmMjA3ZmQxMCBsZWdhY3ktdHJ1bmsKKzI3ODc5IGRmMDYyODY2MmI0ODFlMzg1NDk0NTM5NmE2NmFmNjAxZjk0OGVkN2EgbGVnYWN5LXRydW5rCisyNzg4MCBiY2MzNWEwZjFhNzhlOGNmYjE5ZTBmZjgzOWNiOTkwMzg2ODA0OTMyIGxlZ2FjeS10cnVuaworMjc4ODEgMDg1NDUyNGVjZTAwODQwZGE1NDIzMjZkNDJiNmY3MWU4ZDNjNDg3MiBsZWdhY3ktdHJ1bmsKKzI3ODgyIDRiZmM4YzUxOWI2ZGQ1NGE5NWQ5YmRiNmVjOTE3YzUzMWNkOWIwMmUgbGVnYWN5LXRydW5rCisyNzg4MyBmYjA2OTFmMTBkOTEyYjQ5ZjQzYjg3ZTVjNTBiYWRmODNmNTEwODhmIGFzdC1icmFuY2gKKzI3ODg0IDNkZGFjZTFkMTJhOWZlNTBjNmNlZjRjOTA4YzNjYTA0YjEzYTM3ZWIgbGVnYWN5LXRydW5rCisyNzg4NSA4MDkxYTRhM2I4YWVjMmVmMzJlMTdmOGIyOGVhZGY5NTMwYmJkZjM1IGxlZ2FjeS10cnVuaworMjc4ODYgZWMxYTJkN2FjMDJiYzA0OTIzOTkyZDYzNTk4OTUxYmI3NjkxYmVlMiBsZWdhY3ktdHJ1bmsKKzI3ODg3IDMwMzM1YzY4Yjc4N2Y5MWZlMDYxOGZjY2Q2ZjFjODBjYzgzYTc4ODcgbGVnYWN5LXRydW5rCisyNzg4OCAyNjcwYTVkYjY4NDMxNWNmZTQ1NzNkYzEzM2JhNzVhZjQ5YTM5ZThiIGxlZ2FjeS10cnVuaworMjc4ODkgZGFmNzU3OWMyMjQ4MjE5MmNjZTk4NTQ1YmRlN2Y1ZWU0NjY0ZDVkYiBsZWdhY3ktdHJ1bmsKKzI3ODkwIDZkY2YxMjhkN2UwMzA4YWNmODVmNmMwNjYwZGNmYzRhOGMzNTJjNzYgbGVnYWN5LXRydW5rCisyNzg5MSBhYzc2Mjg3NjliYTUzZTFiYzU2NGE4ZmI1ZGYzOTMzMWQyOWI0YjhjIGxlZ2FjeS10cnVuaworMjc4OTIgMTdhOGI3NGJiZTVjZjA0YzY4YzBlOTQ0NjAyNDc4NTU5OGQ4YmFiZSBsZWdhY3ktdHJ1bmsKKzI3ODkzIGRmZTY4ODRiNTllMGU3ZTQwYmVmNjZiN2QzMDU4MWE2Y2ZhMmE2NGIgbGVnYWN5LXRydW5rCisyNzg5NCBmZTJjZmNlNGU2NTg2M2VkMzE3MmI1YjEzNDU0YjljZTQwZTdiMTk2IHJlbGVhc2UyMi1tYWludAorMjc4OTUgNDg5N2UyOWUxOWNjMDY3YzZiOTMwZjBmZTIzMDNjZTBjNDA3NWI0MyBsZWdhY3ktdHJ1bmsKKzI3ODk2IDg3ZjgyODcyNmZlNmVhYjYxOTU5OGZlZDYxOGExMWNiOTc4Y2UzMzYgbGVnYWN5LXRydW5rCisyNzg5NyAzMjRiMmU3YWY2ODM1N2EwYjczZjkzMjgwMThlMzVmMDVlMGJkMzMzIGxlZ2FjeS10cnVuaworMjc4OTggZmEzMmU3YTY1YTdlOGY4YmVhMzNjOWE1YzI4Mzc3YzQwZDgyY2E5ZiBsZWdhY3ktdHJ1bmsKKzI3ODk5IGRmZTVhNjg5OTc5YmE4MjNjZmJlZDc1MGVhMjE1MWUwNWJkZmY1MjYgbGVnYWN5LXRydW5rCisyNzkwMCBhYmI1MmQ1NmJhNWFhYmM1ZjIwOTdjMmE5NzAxZjhjZTRlNjEyZThjIGxlZ2FjeS10cnVuaworMjc5MDEgMTJkODViNzg1MjYzNjM0ZTdhMjY5ZGE3MTE4MzFkZGE1MWJmNTZkZSBsZWdhY3ktdHJ1bmsKKzI3OTAyIDdlY2I2ZWIxZmU3NzM5NzQ1NzM2NTZlMmJiNGYxMDdhMjhmM2I2MGYgbGVnYWN5LXRydW5rCisyNzkwMyA3ZmFjMTMzZDUzOWZmYWNiMGEyNTdhOGI1YzQ1NDI2NzRhZTgwMjNmIGxlZ2FjeS10cnVuaworMjc5MDQgNTZjZTRjOGY0ZjE2OWYyMWM5YzE3OGQ1MWEwMGI5YzllYmRjNTgwZiBsZWdhY3ktdHJ1bmsKKzI3OTA1IDcwMmUxMTNkMzliMGQ1NWJkYjhkOGViNWMxNjlhYTk5ZTBhNzk1NzggbGVnYWN5LXRydW5rCisyNzkwNiBkOGJhMzczYmYyYjNjNzI3YjQxNjMzYjM0M2U3MDE3MjU1NWEzMDZmIGxlZ2FjeS10cnVuaworMjc5MDcgOTRmZjA3NDM4Mzc3Yjg3ZDQ4YjY1OGI0NjA3YjIwYzUwOTRiYjM3MCBsZWdhY3ktdHJ1bmsKKzI3OTA4IGFlMmZiOGRhMzg2M2U5OTY0MjU5ZGU0ODE3YWU3MWI2YjA2ZGU3NzEgbGVnYWN5LXRydW5rCisyNzkwOSA3NWZkODYyOTAxZDgzZTdmMDMzNjVhYzJmNGZkYjM4N2Q2NjQyZGY0IGxlZ2FjeS10cnVuaworMjc5MTAgOGExMGE3MjFiODRiY2VlY2NiZWJlYWIzNjdhMGJkZDdkMDI0NzU0YSBsZWdhY3ktdHJ1bmsKKzI3OTExIDBjZjRlMDUzOWNjMWY1ODBjM2Y2YmQ2YTY0ODE3NDI1MzI4MzMxOGEgbGVnYWN5LXRydW5rCisyNzkxMiAxNzVjZDBlMDg4YWFjY2Y5M2Q0YTAwMDU2YjM5NDU0MzY5YzUzNmY2IGxlZ2FjeS10cnVuaworMjc5MTMgYWRmMGIyMTVhNTJhZTI1OTA0ZmQyOGQwYjc2ZTk3MzllYjM4N2JhYiBsZWdhY3ktdHJ1bmsKKzI3OTE0IDViZDBmMjQxZWM1YWRiYjkyOGE1ZjE1NzJlMmM5Y2QzOWIxNDA3MTMgbGVnYWN5LXRydW5rCisyNzkxNSBhNzNhNTg5OGJmNDkyYTU2MTJiYTFlYWVhY2FlOWU0YWNhMGY1Yzk3IGxlZ2FjeS10cnVuaworMjc5MTYgYTUzMjRiMDk0OTQyZTMyODU2NzQ0YzAwNWNkZDNkMWExNTNlNjdmZiBsZWdhY3ktdHJ1bmsKKzI3OTE3IDNjYjA1NWFhZTczOTU3ZDgwMjIzNTM3YjhiMmM2NjU1ZTFmMDYwNmMgbGVnYWN5LXRydW5rCisyNzkxOCAxZjAxNzg3MDU1MmU2NTNiYjhkYTE0MTliYTNiYjgxMzQ5MWY2OTE4IGxlZ2FjeS10cnVuaworMjc5MTkgMzJmOTJkNzY2YjgxMzZhYWI0M2I2MmI3MTU2OGQ2MTk2ZmNlMDljOCBsZWdhY3ktdHJ1bmsKKzI3OTIwIDYyZjZiYWJlY2UxZmMzMjQ1NzRkYzJiZTUyNjZlOWEwMzQ1MWJjM2QgbGVnYWN5LXRydW5rCisyNzkyMSAzNDQ0MDA1YjY1MjcwM2QyZmI0MWRiYzkxYTdhOWI1ZDZlZWYxNzllIGxlZ2FjeS10cnVuaworMjc5MjIgOTVkZjg3ZDQ0OTIzYmZkNGNlZmFhMGQ5YTRiNTg1NDg2ZmZkYWZmMCBsZWdhY3ktdHJ1bmsKKzI3OTIzIDk1MGM1YTA5YWQ5OTg5NDE5ZGZhYWZmNGFmMzkwMWMzNGRhNjJhNDYgbGVnYWN5LXRydW5rCisyNzkyNCA4MmM0ODY1Mzg2MWI1NmU4YmMwYzM4NmFhMGNlNDc4ZjFlN2NlNTRjIGxlZ2FjeS10cnVuaworMjc5MjUgMWMyNmViNzY4MjkzNmQwMTkwNzYyYTgxNGU1ZmNiMWY4NGYzZDI4ZCBsZWdhY3ktdHJ1bmsKKzI3OTI2IGFmMWZiNGZlYzJiNDRkNDI2MGY0MDY5YTc2MTU5ZWE5ODJiM2EzNjMgcmVsZWFzZTIyLW1haW50CisyNzkyNyA0MTg5NTYwOWQwODRjZGE3NTA4M2FjOTY1YjZiZjYwMDEzZDZhMzAzIGxlZ2FjeS10cnVuaworMjc5MjggZTk2MWNkMmYyMmU0MjhhNDFlMjVjNzUxMTk5NzQ2NjI2Yjk5YmIwZSBsZWdhY3ktdHJ1bmsKKzI3OTI5IDI4YTVjOGFmYTA1NmU1MmNlYjcwZGUwYTJkYjFjYjEyYzAxZmIyZDAgbGVnYWN5LXRydW5rCisyNzkzMCA4ZDVlMGUzZjY0NDUwMGYyNmVmOGIyOTQ3ZGExNjNkNmQ0N2FkMjU3IGxlZ2FjeS10cnVuaworMjc5MzEgMDZmMWUyZmQwNWJjYWFlMTZmM2NkODNmZDMxNmM5NGFjMjlmNzRjOCBsZWdhY3ktdHJ1bmsKKzI3OTMyIDYxNDM1OGUzYzRmNmFlZmYyYjBkOTg4NmNkZjkxZmZkZTliMzYzMWEgbGVnYWN5LXRydW5rCisyNzkzMyBmZjllZmE2OTI1OTRmYmI4M2ZlYjg1Zjc1NTYxNzk0MGQyZGY5NGIwIGxlZ2FjeS10cnVuaworMjc5MzQgZDBkM2Y3NjBkMDY3NWRlMzc3MDY1NDE5MWYyNzJkMGE2M2E2MWU1ZSBsZWdhY3ktdHJ1bmsKKzI3OTM1IGMwMGRmMjNlODU2ZTVlMmJkMWRiYjE0OTQ0MjMzZDljNzM0YTk1YWMgbGVnYWN5LXRydW5rCisyNzkzNiAwYmQ1MjFlYjcxNGVhY2E4NmY4Y2EyNDUzYWU0ZmI1MzY0YmUxYmUzIGxlZ2FjeS10cnVuaworMjc5MzcgZGQ5OTNkMDFlNzQwNDExODgzODQ0M2NkNWMzMWQzYWE0ODM5NDFkMCBhc3QtYnJhbmNoCisyNzkzOCBiNWI5YjAzMzQ0NjljNDc2ZmVmZjBmYmY2ZDJjNzY5YzIwMjUyOTQ3IGFzdC1icmFuY2gKKzI3OTM5IGQyZjQxYzhhODFmMGQ5NTM4Y2E1MmEzMjBjZGEyZTMzODhlYzYxNjggbGVnYWN5LXRydW5rCisyNzk0MCA5NmZkZTk4MDhlMTVjN2EwMzNkYTczZmVhNGNhZWIzNWJlM2NjNTJiIGFzdC1icmFuY2gKKzI3OTQxIDQyMjg2ZDJlNGQyZmY3NWE2MTgyOGQwMWM0YmFjNWEwOWEyYTgyYjYgYXN0LWJyYW5jaAorMjc5NDIgNTNmMjFmNDM0OTU2NjU2YWM5Nzk3OWZkNDg5ZDI1M2U3YmRmZDYxMSBsZWdhY3ktdHJ1bmsKKzI3OTQzIDRmMDAxMzRiNTYxZGI1MzRhMzJmNWZkNDNiZmFlMjA3NTZkOTdlYmEgbGVnYWN5LXRydW5rCisyNzk0NCBmMjAyNWM2NzZlMjQxNTcyNWY2ZDNmY2MzZjQzMGU5NWZiYzdhYTVjIGxlZ2FjeS10cnVuaworMjc5NDUgZDg3NTA4OTdjODk3Y2FhYjExNDM2ZjlmZDUwMzczMDIyMTA5NDE4NSBsZWdhY3ktdHJ1bmsKKzI3OTQ2IGE2YTRhOTUxYzYxNmNlN2E5M2ZjZjU3ZDI0NTUxMzUwOGQ3YWZjODQgbGVnYWN5LXRydW5rCisyNzk0NyBlMjEzODFmZDg3NTY0MTBhZGQzZTc5ZGQ2YWFhNmQwOTQ2MjFjYmZjIGxlZ2FjeS10cnVuaworMjc5NDggYzk4MDhmNTIxMjBhZmI5ZTI2ZDRkOGRmNjM4M2MzZDk4ZDk4NTVjYSBsZWdhY3ktdHJ1bmsKKzI3OTQ5IGQ1ZjE3ZDg1ZjZhMDY1ODNiNmJmN2FjNjZhYjIzYjc5MjZhYzFhYWIgbGVnYWN5LXRydW5rCisyNzk1MCBkZjRhOWQzYWJjNTZhMTJhN2FiMDhkODQ4NGVlMmY5ODI5MjA3OWE0IGxlZ2FjeS10cnVuaworMjc5NTEgNWQ2ZTQ3MGNlMDVjZDViMTgwZTIxZmI0MTk0ZmYyMzhjOTlmNjZjMyBsZWdhY3ktdHJ1bmsKKzI3OTUyIGJiYWM0ZTNjY2I2MjUyMzY2YjljYmQ5MzBkNGYzM2M2NmIxZTQ4MjEgbGVnYWN5LXRydW5rCisyNzk1MyA0YmY5NDE0OWQyMWM3ZTQ2M2JhOGRhYmExZGIxOTE0OWYzMGM2Nzg1IGxlZ2FjeS10cnVuaworMjc5NTQgZDI2YjYyZjBjNmRiYzM1MmYwYzI1MGY1Yjc0NTA3NGM5M2JjODJlOSBsZWdhY3ktdHJ1bmsKKzI3OTU1IGYwNTlkNTQzNWQ2NTMyZWRlNzA1ODM4NDNlOTIyMzgxNzE5ODczYjIgbGVnYWN5LXRydW5rCisyNzk1NiBiNDI2OWZhNjdjM2U5Y2M0YTBlMWY0NzM5ZjM0MmZhZjY1OTk3NTNiIGxlZ2FjeS10cnVuaworMjc5NTcgYjI1YzMxZTAwOGM4YzdkMjE0OTdlM2Y1NmJhYTY2MWQ3ZWVkOThkNSBsZWdhY3ktdHJ1bmsKKzI3OTU4IDkzNDhmYTIwZjIxNDkyMGQxYWVjYmQzZmJlMzBiYzJhYzdmYzJmNjkgcmVsZWFzZTIyLW1haW50CisyNzk1OSA0NzlmOGY0ZWU0YWQ0NTVhYzM1MWUyYzcyMzViYTI1NDRlZGRmOTBmIGxlZ2FjeS10cnVuaworMjc5NjAgMGJiMzk4NmNmNjUzYTYwNWVkZWQ4NmI5YTUxY2E1OTkzOGMyYzM5OCBsZWdhY3ktdHJ1bmsKKzI3OTYxIGM4ZDY5NGI2NDFmMTkyNDlkOWNkYmM5OTRhY2U1ZTFlMDliMGUyOTggbGVnYWN5LXRydW5rCisyNzk2MiBhYWJjOTc5MDJlMTA0NmFiY2JlNTIzNDU1MDk5ZDc1OWE3MmE2ZWVlIGxlZ2FjeS10cnVuaworMjc5NjMgN2NhNDZlMDgyMDBkZmVlNTNlMjE2YjE3YmUzMTg0NmE2MmYyNTlmNSByZWxlYXNlMjItbWFpbnQKKzI3OTY0IDQ1N2EwNDc4MzE4M2Y1NmY3MDE2MThhZTRkNThiYWQ1ZmJhYjcwZGEgbGVnYWN5LXRydW5rCisyNzk2NSA4YzM4ZWEwOTJmMjA3ZWJmNDcwOWMwYmVjYjU3OWIxMmY4NTI2MGVjIGxlZ2FjeS10cnVuaworMjc5NjYgMTBkYmRlNjk4NzY2OTI0ZGZjZDM3N2EyODc5ZGQyZThkYTlkODY2NSBsZWdhY3ktdHJ1bmsKKzI3OTY3IDgxYzU2Y2JjMWQ1ZmY0ODVlNjQyYTdjYWQ4NTViNGQ1NzAzYTAzMmUgbGVnYWN5LXRydW5rCisyNzk2OCAwMDQ4OGNhOWUwNGY3NTRiODY3MTIxMzIxZGNhMzU4MjE3ZGU1NWFlIGxlZ2FjeS10cnVuaworMjc5NjkgODUxMTIxZWNjMTExMTdhNDc4MjU4OTNjNTA5NWMzN2UzZjAwNTY3MiBsZWdhY3ktdHJ1bmsKKzI3OTcwIDgwZmQwZDM2MWUxN2Y2MDRhZGFmNmYxYTc2MDMwZmFiMzBkZjU2Y2QgbGVnYWN5LXRydW5rCisyNzk3MSA5MjBhZDA5OTMwZGM1MDljOTdkZDJkNjRkYThjMWE2ZGNkMmNlNzIzIGxlZ2FjeS10cnVuaworMjc5NzIgM2U3MThjM2Q1MWVmYWJkMTM4YTFkMTcyYjAxMWE3NGVkNDAyMzVhNyBsZWdhY3ktdHJ1bmsKKzI3OTczIGEzMmNmZjBjNzVkY2M3ZWZiNWRiZTJkYTlmN2FhMzczYzhiMWY4Y2MgbGVnYWN5LXRydW5rCisyNzk3NCBjY2NiYzJjNzhjMDk4YjM3OWZhMTI4YzZlNzNhMzVhMWU1YWFlNzAyIGxlZ2FjeS10cnVuaworMjc5NzUgMjQ0MTE3YWViYmQ1ODViZWU5ZWVhZjVjYTAwNDM3NWY2ZTkzNmVmMiBsZWdhY3ktdHJ1bmsKKzI3OTc2IGNhMjBiZTI0MzgxZmIzMDVmMzI5MTJmNzk0Y2NiZTJkYzg3OTZjNWEgbGVnYWN5LXRydW5rCisyNzk3NyA0MzgyYjIzNzQzOTAxZGU3MjRlYzU4OGJhOWM3ZGVkNTU0MGFmYjc5IGxlZ2FjeS10cnVuaworMjc5NzggOWIxYjJiNThjODY2NjIzNjcwY2E2NDBiNTE5OWVkYTg1M2Q3M2MyYyBsZWdhY3ktdHJ1bmsKKzI3OTc5IDAwZjhkZGExN2VlMmI1MmFmYWRlOTUxNDhjMTA3OWUwZWZmMTRkZjIgbGVnYWN5LXRydW5rCisyNzk4MCBlYzJlMjgzMDBiNzY1OWM2Nzk3MzNiMGU3MWE4ZGE3MDQ4YjNmNDU1IGxlZ2FjeS10cnVuaworMjc5ODEgMjVkNjdjOTRhNmQxYTBjNzMzNWM5ZmQ2ODc1N2QzZmI5OTEwZjg1YSBsZWdhY3ktdHJ1bmsKKzI3OTgyIGMzOWFlZDQ1ZGJlOTlkYzlhMzQ3OGEzZDU5NzQwZDE5MDgyY2E5MTkgbGVnYWN5LXRydW5rCisyNzk4MyA5ZGJhMTIxNjdkYjZmN2QyMjZmYTk0NTJlZjM5ZjVlYTY2ZDkzYzZiIGxlZ2FjeS10cnVuaworMjc5ODQgY2IzMDhhMTNhMWZkMjA0Njg3ZWJjNDZmM2RiY2JlYWVhMTViNWFkZSBsZWdhY3ktdHJ1bmsKKzI3OTg1IGZkMDVjMmQzNWZlNzE5MWYyZGFlZDhlZGJlYTgwZmM4YTc5NTMwNTQgcmVsZWFzZTIyLW1haW50CisyNzk4NiA4MzkzMTVkZTBjYTEwZTJjYjQ5ODUxMzE2Mjc2YzIwZDI4ZjBhNDczIERTX1JQQ19CUkFOQ0gKKzI3OTg3IDFlYTU2OWVhNTFmZDlkZTgwMDg3NDE5NTI2OGNhOWIyMThkZmViOWEgRFNfUlBDX0JSQU5DSAorMjc5ODggZTdiNmJjMmIzNWUyZTQyYmU4NzdhNGQzMTZiMTdhMzQ5NDQ2OTRhYyBEU19SUENfQlJBTkNICisyNzk4OSAzMDczMzJmMzdiN2Q5MzdkNGZlM2I1MTY1NDlmMjI2OGMyZTY5MjIxIERTX1JQQ19CUkFOQ0gKKzI3OTkwIDMyNTdlZmRhNDUxMzMxZTdiY2QzYjYwZDAxNzQwNjU3MzVjODJiMzYgbGVnYWN5LXRydW5rCisyNzk5MSBlNGE4ZTNlNDIxMGQ5NzdlN2U3OTc2NmM0YzY3MzU3NDExODQ0MDFiIGxlZ2FjeS10cnVuaworMjc5OTIgZGE4OGU5OTBmOTJjY2QyZTcxODNkNjM3NzFiMzY0Yzk5YTE4ODdkMyBsZWdhY3ktdHJ1bmsKKzI3OTkzIDZlMGRlZWViOTc4N2QzYjNkN2ZiNzI5NzE1NjNlYzRhYjcxZTE3ZDQgbGVnYWN5LXRydW5rCisyNzk5NCBmOTI4ZjdlZWEyZDY5ODU4NmQzMDRmZDU0Yjc4YWQ5ZmYwMGQ5OWFjIGxlZ2FjeS10cnVuaworMjc5OTUgYTUwNmFiOWJiNGE0MTQ3MDQ5ZWQ3ZDc0MDVlNTkzMmIxOGUxN2E0YSBsZWdhY3ktdHJ1bmsKKzI3OTk2IGEwMmFiYTcyY2JiMjQ5OWU1YTMwMTc3NjZkODcyZjNiMmRjNDI5ZGYgbGVnYWN5LXRydW5rCisyNzk5NyAwMDE2N2IyZWNhY2M1ZWJjMzc5YjZmZmI1MDdhYzUwNTVjNjQ3OTBhIGxlZ2FjeS10cnVuaworMjc5OTggMTJlMTQ2MTcxZjNkYzkwNmI5MWJhZTBjNmM5ZjRkMWZiZTRhYTY5YiBsZWdhY3ktdHJ1bmsKKzI3OTk5IGQ3Y2EwYTJjZTA3NDZiODZiMzEyMjc1NjU3OWJhODJkOGQ1MTY1MmQgbGVnYWN5LXRydW5rCisyODAwMCA1OWQ1MzM1ODBlNzJkNjE1M2M4Y2U0ZDYzMTdkYTA1OWMzZWJlMTUwIGxlZ2FjeS10cnVuaworMjgwMDEgMjYyYWQxNmI0ZGUwOWEzMmIxYzEzNGJjMjUwMDFmN2EwMTc5NTc0MSBsZWdhY3ktdHJ1bmsKKzI4MDAyIGY1ZTI5YzczMzZkZDg4ZWJlMTYwZTQzZTUyYTE2ZGU0MjM5ZTJkMjEgbGVnYWN5LXRydW5rCisyODAwMyA3M2IzMDljZjAyMTM1NTI5Yzk5ZDg0YmNjM2YzNGY5ODYzYmQxNTEzIGxlZ2FjeS10cnVuaworMjgwMDQgMmIwNzY2YWZhYTIyMmQwYWIwNzFlYjA3Y2E4ZjgyNGIzY2IwYTNjNyBsZWdhY3ktdHJ1bmsKKzI4MDA1IGZkNDU3NWI1NmE0ZGUwMThlNjc4Y2U0NzM2NmUyNGU4ODRmOThhYWYgbGVnYWN5LXRydW5rCisyODAwNiA5NDBjNGY1NDZlN2YxN2U3NDgzY2U5ZDQ0Nzk2NTdjMTY0OGY2MjNlIGxlZ2FjeS10cnVuaworMjgwMDcgM2U0ZDQzMjg3MmVhNzkxOGYzNzMyZDI4NTFlYThmZDM1MThhMzQxNiBsZWdhY3ktdHJ1bmsKKzI4MDA4IGI2NzA3ZTE1OTkwOWE2NWY4OGM4YzdmZGMyNjM5ODVlZjA2ZTY4YjggbGVnYWN5LXRydW5rCisyODAwOSA0MzRlYzUyM2YzMmM3ZDYwNmRmMjg2MzBhODA0Njc0MDY2NWJiOGUzIGxlZ2FjeS10cnVuaworMjgwMTAgMTNkZTJmNmYwN2RkZGM5ODE5MDNiMzU2OGM0ODZiNDg0ZTNmMWM5NCByZWxlYXNlMjItbWFpbnQKKzI4MDExIDY1NDJkZmE0MGU3N2M3NjFkMDE0ODA5Njg2YTIyN2E2OTAxYmFjM2IgbGVnYWN5LXRydW5rCisyODAxMiA4YTc0ZjMzNWNmYmFiOWUxMjc3NTQxN2I5NzI2ZTM5ODVhMzc0ODUzIGxlZ2FjeS10cnVuaworMjgwMTMgNzkxYmJlZGJiYmU5ZTM3NmNmOGJkNDk0YjI0YjgyZTczYWM3NjdjMyBsZWdhY3ktdHJ1bmsKKzI4MDE0IDQwZWI4MGRjNDI1MDBlOTgwZTE4Y2FjZDNmNjgzOWIzMTBmNDg0MmMgbGVnYWN5LXRydW5rCisyODAxNSA4YTFjMDg2YWQyMTNhNzY1ZDQxZWU2MDk4MGY1MjJhMzBmYWUxNWFjIGxlZ2FjeS10cnVuaworMjgwMTYgMzVkYmE2MDA3YWMzN2QyZjRkNGQ4YzI2ZWRkOTQ5ZjdhZjU5MTk2MSBsZWdhY3ktdHJ1bmsKKzI4MDE3IGRiYzBmMmYxMTQxNDIwY2RmMjk3OGI1NDI2ZTA0NWYyYzZkZTNhZDUgbGVnYWN5LXRydW5rCisyODAxOCA2NDJkZGNmZTg2NGE0ZmVhZmE4OGVmNmJjZjAxMmI1NWVhN2I0OTQ4IGxlZ2FjeS10cnVuaworMjgwMTkgYjY0ZGI1NTA5NzJjMTQwZjQ0YTFmZmRhOWVlOWNmNjU3OTVjZDg2YSBsZWdhY3ktdHJ1bmsKKzI4MDIwIDczNTQ0MWZkYWI3ZTQ3NGZlNDUwYTE2ZDhhNjZiNDQ1Nzk1ZTA3YTcgbGVnYWN5LXRydW5rCisyODAyMSA4MGIxMjk0NGE0MmIwYWY3MTUwNTc1MjI4NmI4ODg4OTAxYmNlOTNmIHJlbGVhc2UyMi1tYWludAorMjgwMjIgYzlkMjQyOGE2YTg1ZWU4ODVlZWU0YTgyODlhMjFhNjg5MGRmMjg0NyBsZWdhY3ktdHJ1bmsKKzI4MDIzIDExYjI2MmZlZDU4MDljY2M0NTQ4NTJmN2Q1NGJjNmVmNzBhOTBiODQgRFNfUlBDX0JSQU5DSAorMjgwMjQgZmI0NTkxYzA0NzBlMjgwMGZjODg3NTc0ZTFkZmU1MDVhYmVmMzVmMSBEU19SUENfQlJBTkNICisyODAyNSBkNmU1ZTlhMWJjYTA4ZDVjNDI3MjJmZmMzNTg1OGJhMjcyN2YxMzRkIERTX1JQQ19CUkFOQ0gKKzI4MDI2IGI0N2E2YTJhMWU1NjBjMjkxMWU2MGQ3ODI2Yjc1ODY5YzFkNjZmZTQgRFNfUlBDX0JSQU5DSAorMjgwMjcgMTg2OWNlY2QzOTMzNDkyMTA0ZGZjMzgzMzE3NjcyYzJkZDNlNzhlMiBEU19SUENfQlJBTkNICisyODAyOCBmNzMyNTk3Njg0MjY3YTliYmI0ZjkwZDAzNmI4MjMxYjhjZmI5YzdkIGxlZ2FjeS10cnVuaworMjgwMjkgNjQ0NWU0NGZjYjc4MzYwZDcyNWU5YzgwYTVmM2Q0MGJmNTJhMGVlNiBsZWdhY3ktdHJ1bmsKKzI4MDMwIDQ4MmM5NDFkNTkzZjg2MWM0ZmY1MWFhNTlhNGUyOTNlM2Y3N2Y2NTAgbGVnYWN5LXRydW5rCisyODAzMSBmM2U2OWI5YWNjNDA2YjNlMWRmMGQxNDMyMDQyMzIxMjIwMjNhNTI0IGxlZ2FjeS10cnVuaworMjgwMzIgZGRjYjljZTA0NTQ2NDk2MzJkYjI4ZmI2NjQ2NDMzNDdhNzZhYzViZSBsZWdhY3ktdHJ1bmsKKzI4MDMzIDBkZjlhOWMwOGMxMzllOTYxZDNmMjIwOGQyZTEzMTYwODQwOTY4OTggbGVnYWN5LXRydW5rCisyODAzNCA3Zjg5NjdmNTljZjgyZjBmMjIwZDdkZTNkY2NlNzhjN2FmMTExYTcwIGxlZ2FjeS10cnVuaworMjgwMzUgNDNjYWEyMTJiOTU5Y2Y3YjBhOWE4NTcwNGNjYmZiMzI0NTE1OTIxMCBsZWdhY3ktdHJ1bmsKKzI4MDM2IDExMGM2ZWRhZjYyZjM4NThlNGQ2MTFhNmU4MmE5NDQ4OTQ3ZWU3ZGEgbGVnYWN5LXRydW5rCisyODAzNyBmNmE5N2NkM2JhMjRiNDU1N2UwNzNlZTBiYTBlMGI2OWViZTllYzJlIHJlbGVhc2UyMi1tYWludAorMjgwMzggMWViYzEyOGU0ODQyYzI4NGEyYzRjNGI0Zjc3N2NiNjRiMzY1Y2E1NyBsZWdhY3ktdHJ1bmsKKzI4MDM5IDc3ODA5MzUzM2E0NjM5OWFiYjNiMTA3ZjhiNDkxNDA2YTc5YTRmNjggbGVnYWN5LXRydW5rCisyODA0MCA3YWUzZDc0ODY4MDFlN2ZiZWZjY2Q3NzRiYjgzNDYwZDYxYzM5NjM3IGxlZ2FjeS10cnVuaworMjgwNDEgZGE5MDY1M2ZjMmM2ZWJjZWIwYzJkNGVmODcwYjZiYzRjY2ZlM2QwNyByZWxlYXNlMjItbWFpbnQKKzI4MDQyIGYzM2MwMWNjNDE0Yzg5NzU0NTY0MjA5NGU5YmQ0NmVlYzA3YjllOTEgbGVnYWN5LXRydW5rCisyODA0MyBhOWYyNTY3YzJmODM3NjU4MjE3ZTZkY2EzMjc1N2ViMWFmOTk2MWJjIGxlZ2FjeS10cnVuaworMjgwNDQgZmIxZDBlNTViMTUyMWQ2YmFiZGM2OThiMThiMjM5NmUwYWRmYzU1NiBsZWdhY3ktdHJ1bmsKKzI4MDQ1IGJlZWQxYzFlN2M2ZGY2NzcxNzMzZmYyZTI0OWEyOGMwMjJjNWU4MDUgcmVsZWFzZTIyLW1haW50CisyODA0NiAwZDk4NjYwZTM2NTM5NWRkZDk0NWNiMTc2M2E5ZGVlZGJmZWM2N2UwIGxlZ2FjeS10cnVuaworMjgwNDcgYTBlYjhlMzgyZDc0Y2IxMjJiN2IxY2E0NzAwMmMzY2I1ODJhYjc5OSBsZWdhY3ktdHJ1bmsKKzI4MDQ4IDI3ZGEyYjgxYTQ5NmE5MjVlMTExYjQ1YjhlN2YzNjc4ZThmN2MwMmEgcmVsZWFzZTIyLW1haW50CisyODA0OSA3YmEzZTVmYmFhZDgwYzMzMGFkZGM3YzVmNjY4N2Y0M2RiNDVjMmFkIGxlZ2FjeS10cnVuaworMjgwNTAgOGNmMDAzMzhiNzI4ZDM4N2RjY2MxMDllMTM0ZmM4MWRlOTM3M2JiMSBsZWdhY3ktdHJ1bmsKKzI4MDUxIDRiMzQyZWQzMDllMDJjZjliNmJiMjJhNzdkMzZlOTA4M2ZhNmQ1NTAgbGVnYWN5LXRydW5rCisyODA1MiA2OTdkMjIzYTJmNzY2NjAzNjZkMzI1MmQ3ZmM2ZjVkNzI4ODYzZGMxIGxlZ2FjeS10cnVuaworMjgwNTMgZWRmNzU3MjEzYTkyZGIwM2NmODhlNzEwOWFmZTBjOWJkZWQ3YTU0ZiBsZWdhY3ktdHJ1bmsKKzI4MDU0IDIyNGM1MTZiYzExZjFlMTQ0NmVjNzNkNGI5MzM4YjIwMGRmM2YwOGUgbGVnYWN5LXRydW5rCisyODA1NSA5ZDg0YTViZDc2N2ZhOGQwNjU4NjFmMjQ4ZTQwOWU0NTI4MTdiMzk3IGxlZ2FjeS10cnVuaworMjgwNTYgYWI1ZWVhMmRkM2MwMGMwOGQxNDE0ZGJhZjE4Y2IwZDJkZmQ4NGQ0NyBsZWdhY3ktdHJ1bmsKKzI4MDU3IGZkMWI1ZWZhMGNlM2VhY2M4OTMyYzg1MDcyMWQ0NGQxMTIwZTI2ZGEgcmVsZWFzZTIyLW1haW50CisyODA1OCAxYWIyN2MxNzcwZGY1Yjg2OWI3ZGU3Y2EwNTBiMDEwMTFiNTlmMGZiIGxlZ2FjeS10cnVuaworMjgwNTkgZjY3MmUxZGJhZDkyMjQxMWI0MzJjODI4MjExMzZhMWM4NTVmZWQzMyBsZWdhY3ktdHJ1bmsKKzI4MDYwIDE4Y2E0ZTc4M2Y5ODdiZDMzYTZjNTJkZDJlZjU3ZGNiNjBhMWZmYTggbGVnYWN5LXRydW5rCisyODA2MSBlNjFiMTE4ZTljYWIyOTI2Y2I1NGViZmUyMGE0ZGQ5YzI5NGI5MmE0IGxlZ2FjeS10cnVuaworMjgwNjIgOTU1OTE0YjBhNGQ2NDZlNzhiMWFiODBkN2NkMDZlMjI2MDVjZDQ1NiBsZWdhY3ktdHJ1bmsKKzI4MDYzIDhiYzI2NWIwODRkOTdjMWY3Y2ZmM2JmZTRiMjExOGYxZWE0OWIzNzAgbGVnYWN5LXRydW5rCisyODA2NCA1OWQ5MjI4Nzc4YWQ2M2U4YmQ3NjhmMDJhNjVkN2ZiMWNjNDUwNjY2IGxlZ2FjeS10cnVuaworMjgwNjUgNzI5Mjg3ZjdmYzJlNWZhYjAwNDE1MjlkOTViZDQwZGMwNTc4NjA2ZiByZWxlYXNlMjItbWFpbnQKKzI4MDY2IDJmNDExZjJkNzkxYWRlNzY5NjUwMGRmYTc5NjRjMWE4ZTI3NDYwNTkgbGVnYWN5LXRydW5rCisyODA2NyBhNjE4OTNkN2NlZjI1MGNkMzRkYzIxNDhjMGZmODg5MThkOGUwNWM1IGxlZ2FjeS10cnVuaworMjgwNjggYjI2NWU3NmJhYjg4MzI5MzQxYmE4NDQ3YTUyZTljOTgzYjg3NjUzZSBsZWdhY3ktdHJ1bmsKKzI4MDY5IDZhNmQwMmJlMzIxY2NkMTAxODIzNzNjNTBiOTJlMDUyYjZhN2M2MjggbGVnYWN5LXRydW5rCisyODA3MCBkMjVjZjk0ZDIwYjFlYWVlYjA4ODhkYzYyMWMyMjcwOTRjMTM4ZjRmIGxlZ2FjeS10cnVuaworMjgwNzEgNGZiZjUzNDIxMWI5N2M4ODJjMDk4NDRiYzAwNGIxNjgwYWYxMWVjOSBsZWdhY3ktdHJ1bmsKKzI4MDcyIDU3OWYwOWMwZmRiY2Q5MmFkZDg2NjNjNDJiNzYwMzFjNjAzMmY1NTIgcmVsZWFzZTIyLW1haW50CisyODA3MyBiZGJhNzJmZmQyMWJmOWQ2MjY3NGJiMTA2M2JiN2Q3ZjYxZDY2YTRiIHJlbGVhc2UyMS1tYWludAorMjgwNzQgOTVjNDYyM2Y4MTg1MDhmMmZiOTQ0ZjBhNzJmMzBhNTBkMmE3NDAyZSBsZWdhY3ktdHJ1bmsKKzI4MDc1IDcwYjY3NTMxMTdjYzAxYmQ3Zjc3NDI0NzZhMzhiZTBjZDliYTA0YjggcmVsZWFzZTIxLW1haW50CisyODA3NiA2NDdmOTM2Nzc1MGU4NzQwMTMxYzQ0ZDFjYWVkNmE5OGQ4NWY3ODdlIHJlbGVhc2UyMi1tYWludAorMjgwNzcgNjg4ZWVmYmEwODY5YmI1ZDNmMmM4MTZhNTAwZWFjMjAzNTIwMDUwZCByZWxlYXNlMjEtbWFpbnQKKzI4MDc4IDM3OTZkMzlmMGI4MGM4MWM4NWVkYzk3YzZkNGIwYTliOWZjOTU3ZTQgbGVnYWN5LXRydW5rCisyODA3OSAzMjY5YmRkNjU5ODhlZmY4OTc2MzcwODRhODMxYWNlYjViZTQzYTk5IGxlZ2FjeS10cnVuaworMjgwODAgZmVjMGIwYWVmMTRiYTQ4N2UwNjY4NjRhODZmNGViMzk1ZjgzODEwMyBsZWdhY3ktdHJ1bmsKKzI4MDgxIDk4MDc2N2M2Y2Q5NzViNjE3ZTNhMDdjZjFiNmZkOGZhM2EwNWQ5YzIgbGVnYWN5LXRydW5rCisyODA4MiA0NzljYjVmZjJlNjA5YzVhMjE3YTgyOTQwYmZmOTM5M2FiN2MyMzE5IGxlZ2FjeS10cnVuaworMjgwODMgNzFkY2E3Yzc2ZmEyMjc5MmJlOTNmYjkwYzRjNGJlN2U5MDkyNWMxYyBsZWdhY3ktdHJ1bmsKKzI4MDg0IDdiMTBlN2ZmNzk0ZGM1MDAwZmFlY2ExZjMwNjAyZmUxZWQ4MWIyNzAgbGVnYWN5LXRydW5rCisyODA4NSA2ZDI2ZDRiOWM1YTM2YzE4ZTU1MDczOTNiMGU4NzgyZWRiNTI2M2FhIGxlZ2FjeS10cnVuaworMjgwODYgYWVlMThlYTNkMjg0NzY1MzUwN2YyYjFhYjE2OWU0MThhM2RmNDExYSBsZWdhY3ktdHJ1bmsKKzI4MDg3IDA0OTJhZDFhYzYyMzVkMWZhZjNhODQzOTI4MDVjY2MyYWVlNTE4NTMgbGVnYWN5LXRydW5rCisyODA4OCA1Njc3MDRiZmE1OTVhNWFiN2I0Y2U3MWE5NmM0MTYyYjI0MDE3NDIzIGxlZ2FjeS10cnVuaworMjgwODkgMjc0ZTQyYTY5MWUwYzg0MzY1M2ZmOGIyYTI0YzljNmIyYzk0OWNkMCBsZWdhY3ktdHJ1bmsKKzI4MDkwIDM2NDkzYTdjNjI1MzliY2E5OTVhOTNiMTM2NzFmNGM0Y2Y5MzA1MzYgbGVnYWN5LXRydW5rCisyODA5MSBiZTQ3ZGIzODMwN2UxODMxYTZiNGY0N2M2YWU2MjgxZTViYTgxMTExIGxlZ2FjeS10cnVuaworMjgwOTIgOGI0NzAyODE2NDVlNjAxZGYzMmRkMGRkODY1ZTdkMDFjMjAwYmY0ZCBsZWdhY3ktdHJ1bmsKKzI4MDkzIDczNGY4OWMxOTRkZDlmMTAzZWMzMDRiYWNkOWVmODhjNDM1ZWY5Y2UgcmVsZWFzZTIyLW1haW50CisyODA5NCBkZWJjZjcyMDY3ZjA1OTY3YjVkNzU2NDdkNjM0NGQxZjA5ODBiZjA2IGxlZ2FjeS10cnVuaworMjgwOTUgOWM2ZjBlMTk5OTAzNWE0ZjE0NzU1MjYyNzIxNWQ3NWRmYTc0ZDY4YSBsZWdhY3ktdHJ1bmsKKzI4MDk2IDBjZGI2ZTliY2I1MjE0ZGIzODcwZTViOGE2YTE0NTJlZDA4YzM3YWUgbGVnYWN5LXRydW5rCisyODA5NyBhMjhjOWMzMzZhYjcxMTkxNzFkYjdlNWQ2Y2MzNDU5MDM1YzlkNWE4IGxlZ2FjeS10cnVuaworMjgwOTggZTcxYmJiYTBhMGI5NzY2OGM3Njg0MGY0ZDZhMzBkZTliZGIzZDRhNiBsZWdhY3ktdHJ1bmsKKzI4MDk5IDgyZTNmZGIyODE2NDUwYzJjYjVlZGVkMGZjNjgwYzhkNTI5OWMwMTAgbGVnYWN5LXRydW5rCisyODEwMCBhOTg5YTJlYWEyYWMxMDkyNTU4NGIwZDIzZmY3ODM3ZGMxNDA3MjE5IGxlZ2FjeS10cnVuaworMjgxMDEgYmEzMDM4YTI3YzFlMzliNzU1ZjQ4YWRlYmE2YzE1NjMyYmRlOTUxYSBsZWdhY3ktdHJ1bmsKKzI4MTAyIGVlZjczZTg4MjNkNWFlZjkxZDQ5YjdlYzFjNzAxZjk3ODczZDkzMjcgbGVnYWN5LXRydW5rCisyODEwMyAzMWI5ZDM2OTg2MWQ4NDk5N2Q5NWJkMWJhNDU0MDJiNzUxYmUzYzFmIGxlZ2FjeS10cnVuaworMjgxMDQgODBjN2E4MmQ2MTQ0ODllOTQ1MDRmMTY4YmFkNjhmZmYxODBkNjAzZiBsZWdhY3ktdHJ1bmsKKzI4MTA1IDM0MTI4Y2NmMmVlNjE5M2IyZmY0N2VhYjhmYTRlZjNlNzEyMWU5ZWYgbGVnYWN5LXRydW5rCisyODEwNiBhMmY5YmI1NDIzMWIxM2E5YmM3MzdmNWExMDYwNWU4OWUyNTJhMDE1IGxlZ2FjeS10cnVuaworMjgxMDcgNmViOTU4NzE2ZDk3Yzg0MGNlZDJiZWNkNDkzNDMzNTI4MTA3ZGIzZiBsZWdhY3ktdHJ1bmsKKzI4MTA4IDQxODFlM2E0MmQwYTIzZGFiZGEwZjdjZjg5YTA5ZDE0MTJiMDUwYzYgbGVnYWN5LXRydW5rCisyODEwOSA1NjRhYmI5OGRlYjg5YzRlMjlkOWE3YzY5ZmFiNTViMjgzYjdiODM1IHJlbGVhc2UyMi1tYWludAorMjgxMTAgZTViYzQ3MGQxZDFlMWZlMDc2NjY4NmMyNDQ5NWEwYTY2Y2FmNGE5ZSBsZWdhY3ktdHJ1bmsKKzI4MTExIDBkNDZlNGI4OWNhZTdhNGVhMWUzZWQ0YjJhYzllZDA2ZDUxNmFkNDUgcmVsZWFzZTIyLW1haW50CisyODExMiAyZGNkNGQ5MjgxNDcwM2Y5OTFkZjRlYTY4ZmYyYjFkOGRkN2UxNDM4IGxlZ2FjeS10cnVuaworMjgxMTMgYWE4YmQwZGM0ZjhhMTA2ZjA2ODQwYTM3YWU5YTU5NDI3ZTRmN2MwOCBsZWdhY3ktdHJ1bmsKKzI4MTE0IDZjOTY1ODdhMTk3ZjljZGE0MzJiOGY1MjU0YmZlZTBiYTViNGQ5ZjUgbGVnYWN5LXRydW5rCisyODExNSAxMWM3MDEwMzg4MDU2NTE5M2VhNGM1ZjA3OWU3YjIzNjZkZDJmMWU5IGxlZ2FjeS10cnVuaworMjgxMTYgNDA2Nzg4Y2FlZjZmMjZlY2YwZDUwNzFiZjk5ZmViZWMxNjQ3NGE4NCBsZWdhY3ktdHJ1bmsKKzI4MTE3IDk0MjljM2NmNDJhNzEyYmY0MGEwYjhmMTY4ZmFkMGU4NWYxODdmZmMgbGVnYWN5LXRydW5rCisyODExOCBkYjI3YTQyY2NmNDhhYzMwZWFhMTcyYjE0MmRmMjY4ODI5OTJhZTVmIGxlZ2FjeS10cnVuaworMjgxMTkgNzQxNDNkYjZhZTJmOTdmYjZhNTQwYWY3NThlYTYwNTdkZGUyNjRkYyBsZWdhY3ktdHJ1bmsKKzI4MTIwIDRjNzQ2YmEyNGRlMjFjODEwYjUwYTc5YWJmMDU3Y2UzMTY4NGVlZTkgbGVnYWN5LXRydW5rCisyODEyMSAzNDNlNjRjOTJlYjI4ZTA5YjVlMGM3NDk0Mzk2MjIzOWJmMGNmYzQ0IGxlZ2FjeS10cnVuaworMjgxMjIgMWQzZDk4MGEzMTg2MDQxYzA2MjM5NmI5Y2Q1N2Y5OTI2YWE3YjlkZSBsZWdhY3ktdHJ1bmsKKzI4MTIzIDEyOWQ4ZDJlMTkwNGM3MjY5NDRjMWQ1OWM3MWNjMmU2ZTA3YTVjNzYgbGVnYWN5LXRydW5rCisyODEyNCA1Yzc3MzE2YjIxZjcwZDc1OGNkYjY1YzVkODhhMjBmZjIzYzg1ZDE4IGxlZ2FjeS10cnVuaworMjgxMjUgMzc0Zjg3OWM1ZDhiZDk3ZjBhYzRiYmY5Y2M3NTFiYTQ0NmExNDZkNSBsZWdhY3ktdHJ1bmsKKzI4MTI2IDJkM2M0YTdhZWMwYTcwNmRmNTI1MmI2NDU0ODNiNGIzODljMTIxOTkgbGVnYWN5LXRydW5rCisyODEyNyA1MTBlNzNhZTNlOWU5ZDEyM2VhMzM2MDJlZWYxNDkzNzYxM2ZlNjE4IGxlZ2FjeS10cnVuaworMjgxMjggOWUyZjUzOTYzNGU4MGExZWQ2M2NjODYxZTA5MTJhMDgwZDRlZTBiYiByZWxlYXNlMjItbWFpbnQKKzI4MTI5IDExMjVkOTQ4OWRmYTQwMDdiZTY3YWJmNzc5ODg4ODVhZTc1M2U4YmIgbGVnYWN5LXRydW5rCisyODEzMCA2OTA3OWFjN2M1MTJlNTYwYTgxY2U0MDcyYWI2M2ViNmNiMzA0YjM1IGxlZ2FjeS10cnVuaworMjgxMzEgYmJkNWY4YWY1ODhhYzEwY2YxNGQzMGFmNzA5Njk0MGZhNWQ5NjczZCBsZWdhY3ktdHJ1bmsKKzI4MTMyIGI1NjQwZTc0YWE1YzI4YmVmYzE5YmNmZmNiYjQ0NmE4OTE1Mjc1N2UgbGVnYWN5LXRydW5rCisyODEzMyAzYjhhNzA3YjQxYzQ2MmYwZDkwZTZmZTA5YjBkM2RlYzdkMDY5NWNiIGxlZ2FjeS10cnVuaworMjgxMzQgYjJmN2RmNDY3NzIyMWNjYWRhZGM1OTM2NWFlYWNkZjBlODVkZjQ3MiBsZWdhY3ktdHJ1bmsKKzI4MTM1IDhkODUwZDU4ZjEwOWM3ZjU3ZWQ0N2FjMmM4NzAxNThjYzBjNWRlOTUgbGVnYWN5LXRydW5rCisyODEzNiBkNzE1Y2E5ZGIzYWFhMmQxNGMwODZhMjk1MWZmMmFjODMzYzhkZjYxIGxlZ2FjeS10cnVuaworMjgxMzcgMDlmZjBlZDMzZWZjYjkxOTdlYTg0YjdlNGNmZDliMjgyZTY3MGY2MSBsZWdhY3ktdHJ1bmsKKzI4MTM4IGIwMjczZjM5N2NmMTIyZGJhMjMyYTljMzI5ZmVkMGEzMWUyMTA0NWYgbGVnYWN5LXRydW5rCisyODEzOSA0OTIzMTYwZTA3MDdmN2MzZTRmZTAxYzU5NmQ1ZTU0ZjNiMDFjMDFjIGxlZ2FjeS10cnVuaworMjgxNDAgYjBkNWZiNTc3YWI2MDFjZGEzOGJhZWY0MjRmYWFmOTg5NGUyNWIzNiBsZWdhY3ktdHJ1bmsKKzI4MTQxIGZmMDVlZWYzYTZkMWViMGQwYWM1MDM4ZDFlOGYxMDYxMzM2NGE4MjMgbGVnYWN5LXRydW5rCisyODE0MiBlYWE4NzYzMmIxZThlZGY4ZTJiZTgzZjMzZTkwMmQyNDJkZGU2ZGM3IGxlZ2FjeS10cnVuaworMjgxNDMgNTY1NjA5YmI4ZDg5OGQzYzM3NWI2MWU1ODM4OTg0MzllY2YzMDYzOCBsZWdhY3ktdHJ1bmsKKzI4MTQ0IGVlYzY4MzI4MThhMzcwMDllOGQ3MGIzYmI5M2I0YTA0ZjU1M2EyOWUgbGVnYWN5LXRydW5rCisyODE0NSAxMDM5MWQ1OGQxODQxMWUzNzY0MDI0MjY4MGNmMGRiOGVmMDJjMDNjIGxlZ2FjeS10cnVuaworMjgxNDYgZTc1Njg2N2FjZTgxMGM4ZmJjZjU5OTU5MGMyNzdlMjZjMWVhMDFmMyByZWxlYXNlMjItbWFpbnQKKzI4MTQ3IGM2NTlmMDRlZTQ5OTM2OGQ1NDYzNjAxNWQwY2VkYTNlYjU0MzFmYjAgbGVnYWN5LXRydW5rCisyODE0OCA2ZDk5NzRiNDVmZWExMzMzOTQ5ZGFkNjY2ZjU2OWNlYmM2MTg5ZWRlIGxlZ2FjeS10cnVuaworMjgxNDkgMWEzMjcwZTI2YzE2MmY0OTlhMGYxNjQzNTNmODY5MjJmMWY5MjJhNiByZWxlYXNlMjItbWFpbnQKKzI4MTUwIGJhMDM1ZjRiNDdjMTU2MDJmMTE1NDA3YzQ2NTM3Njc4Y2FhYTBjM2UgbGVnYWN5LXRydW5rCisyODE1MSA0OTE2OWQwMGFiMTgyMjQzYzk0ZWM5ZjdkMGJlZjI2ZGJhNDhmMTY3IGxlZ2FjeS10cnVuaworMjgxNTIgMTllMDEwZjc5MmEzODNlMmVjYjczNTlkZTAxODE4OThiZjc3MjEzMyBsZWdhY3ktdHJ1bmsKKzI4MTUzIDE4YzM1YmI1ZmUwNzQzZmY1NzFjODAyNmQ0ZTdiOWE3MTk5YWE4NTQgbGVnYWN5LXRydW5rCisyODE1NCBhNDM1MTk4ODdiMTc5NGQ3MDE3ZTFhNzE3OGJjYWU3OWFiYjkwNDg2IGxlZ2FjeS10cnVuaworMjgxNTUgYzI0OGJlZTUyZGM2YTc4ZTlkOGFhMDYxMzk5NWNlNGRiMzllM2U3ZCBsZWdhY3ktdHJ1bmsKKzI4MTU2IGRiZjZlNTYzMDIzYjlkNGY2NzU1YjdlZmVjNmRkMmE1NjUwNDZlNTIgbGVnYWN5LXRydW5rCisyODE1NyBjMWViNjY4NTI1ZTExY2U0N2ZhOTQ3YjEwMDk5MGQzNGIwM2M0ODlhIGxlZ2FjeS10cnVuaworMjgxNTggMjdhZTk3OGJlZTU4NTczNDI5YTk3NjYyMTBkMGQ1Mzg5YzBlOTgwMiBsZWdhY3ktdHJ1bmsKKzI4MTU5IDhhYjMwMzM3NWIzMDVlODM4ODU0N2UxZDRjN2VjYTg0Njg3ZGU3NTQgbGVnYWN5LXRydW5rCisyODE2MCBjODhkMDg0OGM1YzkzMGMyNmMwMGRiYjExZjU4MzExODIwYzlmN2MxIGxlZ2FjeS10cnVuaworMjgxNjEgOWMyNWFhMTNjMzZlMWM5MmI5MDRlZjAzMGI3OGJkNjU3N2M4NzA2ZSBsZWdhY3ktdHJ1bmsKKzI4MTYyIGI1MDQ4MzU2ODVjMzRlYTczZTcyMGU2NjgwMDM4YThkYjg5MmQ4MmQgbGVnYWN5LXRydW5rCisyODE2MyAyN2VjYTQ3NjY5MzdhZWY0Y2JlMmZiOWVkZDk5YjU2MjM0ODlkMDRiIGxlZ2FjeS10cnVuaworMjgxNjQgM2QyMzM1MDk0Yjg4YzE3ZmE2YjVmNmQwODU0OWRjYzQyYjI1ZmI4ZCBsZWdhY3ktdHJ1bmsKKzI4MTY1IGRjZmFiZTY1YzIyZTViMmI2OGNlMTU1M2FlMDcyNDllNWU5ZjhiYzMgbGVnYWN5LXRydW5rCisyODE2NiBlMDQzMWQ5YzQ0NzQyMDI3ZjcyOGI1YzMyNjBlYmI5Yjg0OTRjNWIyIGxlZ2FjeS10cnVuaworMjgxNjcgY2NmNjZhMWFhMGI4NDQyOWQ1NTQ4ZDJiNTNmNjAxOWQ1MTcyYWQ4MCBsZWdhY3ktdHJ1bmsKKzI4MTY4IDVlZDdjOTc3ZDJhOTZkYjZkNDAwY2Y5ZmE1ZDZlNDg3ZDFlZTNjMjIgbGVnYWN5LXRydW5rCisyODE2OSBmMGJkNWNkNGIxNzA2YjMzOWYwYTEzN2U0YWVmMjllNmM2MDkwYzFiIGxlZ2FjeS10cnVuaworMjgxNzAgNGNhZmQ5ZGJjOGI0NzkxNmU5MjM1NjQyMzhhYTkzNmViYTMwOTA5ZSBsZWdhY3ktdHJ1bmsKKzI4MTcxIDU4ZWE0MjBkZGM1ZWVhZGUwZTJmZmJjYmEwNGJjMjRhMGYzM2Y0NTcgbGVnYWN5LXRydW5rCisyODE3MiAyNzIyMDU3ZmZlODYwMTA5OTc0NjEwYWM2MTZjNmI0MzYyNjJiOWVhIGxlZ2FjeS10cnVuaworMjgxNzMgYWNiMjU4NTQ1YTVjMTI1NDZiNDUxOWMwMzQ1NDQzNjkyOTY3YWQ0MyByZWxlYXNlMjItbWFpbnQKKzI4MTc0IDBhZmFjZjVkYzQyZWFiZjhiMGMyOTlkMDE3ZTIwOGE5MjMwM2U2NWUgbGVnYWN5LXRydW5rCisyODE3NSBkNzViZDllNWM0ZDljM2Q4NGQ1MzE4NTAxOGQ4Y2U0YTE2ODUxNTE0IGxlZ2FjeS10cnVuaworMjgxNzYgMTgyNDk4M2ZkOTRhNzQ0ODQ4YTMyZDQyYzlhMGEzZjUzM2U1MWZlZSBsZWdhY3ktdHJ1bmsKKzI4MTc3IGM2MGU4OTVkMTEyNWIzNGRiMjgxMzM0Yzg1YzFlOWRkZWQxMTY5ODkgbGVnYWN5LXRydW5rCisyODE3OCA4MDFhNDRhYjJhYWU2NzIxODlkYzc4ZTQzZTNlM2M2NWM5YWZiMWJmIGxlZ2FjeS10cnVuaworMjgxNzkgOWU3ZWMyZjVhMWJkMzczZWJiODFiY2I4MmIwZTE1NjEwYmZiNGI2MyBsZWdhY3ktdHJ1bmsKKzI4MTgwIDZjNmRmNjkyMzZiMWQyOTVhODY2Y2M5ZTI3ZWRiYTA2MzNiMzg3ZmYgbGVnYWN5LXRydW5rCisyODE4MSBmZTM0NzJmMmY4ZWI3MjJkNWVlMTM4OTFmMGZmOGQ5ZDg5ZDczZmQyIGxlZ2FjeS10cnVuaworMjgxODIgNjk2YTI4NDU2OWU2NGNiOGExMGY2ZDM3ZjlhMzY3N2M1ZWFkZTE5MSBsZWdhY3ktdHJ1bmsKKzI4MTgzIGYxZDE4ZmNkNTZlNjk2Mjg1OTkyZGQyNjFkZDI3NjJjMWI1MGQyMzQgbGVnYWN5LXRydW5rCisyODE4NCA1M2NiNzE2Mzg4NDFlNmRkODgzOTUyNmQ3NWU4MjU4OWRmNTI5MjVlIGxlZ2FjeS10cnVuaworMjgxODUgMWZlMDY2NTVjNTBjOTU5ZTNlZWFkNDgxNDNlYjY4NWUxY2JlMWVlZCBsZWdhY3ktdHJ1bmsKKzI4MTg2IGZhZTM4NmQ1ZTM1NDU2ZTVhYjE5ZTE5ZDMxOGY5YjFhMTVkNmFhNGUgcmVsZWFzZTIyLW1haW50CisyODE4NyBjMjM4NTNmN2ViZWI5ZTA1Y2ViMzU4Y2JlYTExYWEwMGMxYTZlMDZkIGxlZ2FjeS10cnVuaworMjgxODggMDFkNmM1MTQ2ZmY5YWVjYTJmZjMxMDc0Y2RkZWYwZWI1YmU4MDM3MiBsZWdhY3ktdHJ1bmsKKzI4MTg5IGNlYzQxZTM3NjFhYzNlNDM0OGM1Y2ZkODM3MWQ2NTJhZDYzYTFhMzAgbGVnYWN5LXRydW5rCisyODE5MCA0ZGU5YWMwZTQxNzM2NjFiZTFmMWRlMzIxMTQ2OWNiMGZmZTFhMzQ2IGxlZ2FjeS10cnVuaworMjgxOTEgZjBkNjNhYTFkZmM3ZTkwOWEyZDAzYWEyNmE3MDhkZjNlNGI2M2RiZiBsZWdhY3ktdHJ1bmsKKzI4MTkyIDBmNjFlMDc0MTQ3ZmIxYWFmY2EyNDc4MzVhNzcwZDIwMGRhNjY0MTIgcmVsZWFzZTIyLW1haW50CisyODE5MyAxZmQzODkwMGY1M2I4NjEwZWU5ZjIwZmZiMzZhYTQwMWY4YzU4ZDM1IGxlZ2FjeS10cnVuaworMjgxOTQgZmNiZGUyMjY1NDVjYzM4YzI2M2I1YzM3NTQxNTAzMzY1YzQ0N2Y1YyBsZWdhY3ktdHJ1bmsKKzI4MTk1IDgyNTk0OGMyMWYwZGMxMzg4NWNiODEwZWIzMjE0MzY1NjU0M2I2M2IgbGVnYWN5LXRydW5rCisyODE5NiBkYmY0Y2M1NjA4OTg4M2UwNzljNzA4ZTNlNjhkNjc3ZGYyZTM2Mjc5IGxlZ2FjeS10cnVuaworMjgxOTcgNGM0NmIzZWRhYTU4N2MwZTFmNzUwYjM5NGI5MDEyZDk4MzNkOWQ3MCBsZWdhY3ktdHJ1bmsKKzI4MTk4IDE5NTFiMmM2NjA0NDM4YjEzMmZiMTgzNzhmOGYyMDJmMGU4MzlmZjMgbGVnYWN5LXRydW5rCisyODE5OSAxYzYzZDMwODI2NTY5ZWExNzQ2NWI5MDVlMTg4NjljYjdiMTJkMWEwIGxlZ2FjeS10cnVuaworMjgyMDAgNDUyZDZhOTE2MTk2MjQ2M2Y1NjVlY2Q5MWE0YzYyN2Y4NWNlOGNiNyBsZWdhY3ktdHJ1bmsKKzI4MjAxIGRlNzFlNmZlNjRiMDUyNTk0OWQzMjk1OTljMmJmZGNlNjcyZTJmNDAgbGVnYWN5LXRydW5rCisyODIwMiA2YTllYTBjMjJjZWExZjlhYjEwODlhYTg1MDk1M2QzZWUxNGI0NmMzIGxlZ2FjeS10cnVuaworMjgyMDMgNDYxYWZkYjVjYjllZGY2MzA2ZDNlZTg3YWUzMjc4MDZkZDZkNGMzNiBsZWdhY3ktdHJ1bmsKKzI4MjA0IGQ5ZmY5N2NlNzViYmVkMWU3NjczOTc4YTEzNzBmYzdhZDE0NjYzNzEgbGVnYWN5LXRydW5rCisyODIwNSA5MzFmYjM3MDBkMGJhOTFiOTA1ZWNkMTI4YTc4ZTE3MGE5NTY3OGEwIGxlZ2FjeS10cnVuaworMjgyMDYgODYyNjk1YjkyMGZkZDg4ZjhhNmIzNzdlMDIzYjhkNzMxOGY5ZDRmMSBsZWdhY3ktdHJ1bmsKKzI4MjA3IGE2MmNlZTRlZWQ5NjZmMWZjMmQzZDkyYzlkYzRlNTE0NGNkZjAwMTYgbGVnYWN5LXRydW5rCisyODIwOCAxOGNiYWRkODA3MTI1YWVkNDJiMThhMWU3YmJhNjAzYmNkNTM1YmVmIGxlZ2FjeS10cnVuaworMjgyMDkgMzBjZmY5YzFiZjY5M2MwOGNlYTJhOTZlZDNlMTkxN2Y0NzIxNjY4MyBsZWdhY3ktdHJ1bmsKKzI4MjEwIGYxNDdiNTk0NDI0NDY3ZjE0Mjc5Mzk0ODU3YTQ4ZWU1ODRlMzgzMTMgbGVnYWN5LXRydW5rCisyODIxMSA5YjA2ZjQ0YmQ0YTM0ZDg3M2Q2ZDVjMzU0ODY0MThmNzJmNzk5Yzc4IGxlZ2FjeS10cnVuaworMjgyMTIgNjg1Y2Q1MmM0YzQzOGMzZmY1NTQ3MDcwMjU3NTBhYTFiY2IwZTQ5YSBsZWdhY3ktdHJ1bmsKKzI4MjEzIGFiNjNhZjNlYzM0OTVjYmM3Yzg5MDNhMzFjNzRiODBjM2Q2MmEyYzUgbGVnYWN5LXRydW5rCisyODIxNCBjNzVjZGM0NzFiMjI0NGE4YjNhN2M1ZTFjZTk0YTFhYTNlNWYwYjljIGxlZ2FjeS10cnVuaworMjgyMTUgN2NlODJlOWQwOGM3OGE1MDU5MGJmODBmYTIyMTlhYTQ5NGI2NzU5MyBsZWdhY3ktdHJ1bmsKKzI4MjE2IDU4NjIzY2U5NGQ0MDZjNDkxNGQ1OWRlNTA1ZTc4OWNhY2E5NmE1NjkgbGVnYWN5LXRydW5rCisyODIxNyA3NGVkNDU3MjA4YzFhMGY1MzQ4OTdjY2Y4NjNhNTQzNGFjZmYwYWZlIGxlZ2FjeS10cnVuaworMjgyMTggN2I3ZDg4MjBhZTM4MGYwOWU2MGJiNmFjZWUxOTNkYzFmNmQzMTk3OCBsZWdhY3ktdHJ1bmsKKzI4MjE5IDY0MjBiOTdlYjU5ZjE3YzExYWJjYTRiNDc5N2E4YzI4Mzc0MjQ5MWQgbGVnYWN5LXRydW5rCisyODIyMCA1MGZhYTY4MzVkZGM0MTc5OTQyMTAyMjE5N2I4MWFlODc2ODhlNWVkIHJlbGVhc2UyMi1tYWludAorMjgyMjEgYzQ1NjQyZTFkY2E5M2M1MzVmMmY1NjcwZTMyOWM1MWU0M2NkYzdjMSBsZWdhY3ktdHJ1bmsKKzI4MjIyIDNhZThlM2ZmN2UzZjM0MzdjYzZlOTFjYjhiYjJkZWY4MjRiMWUxYTkgbGVnYWN5LXRydW5rCisyODIyMyAzMWQyODYwMDg5ZTYwMGI2ZjRiMjFkNTg5NjEyOWQ4M2I0NTRlYzFjIGxlZ2FjeS10cnVuaworMjgyMjQgNGU0NGZhYmUwZmEwMTdiYjg1YjI1MDFjNDIxNjgyMTBkOGIzZWRmMiBsZWdhY3ktdHJ1bmsKKzI4MjI1IDAxMTEzOGI1ZjM4OWEyODQ4ZTI1ZWI2MjEzY2U1N2ZkMzRiZTg5ZGQgbGVnYWN5LXRydW5rCisyODIyNiBhZTljOWY5MGI0YjAxYmZhMGIxOTExYjU5NzdkMjVkNmM5OGM4NzNhIGxlZ2FjeS10cnVuaworMjgyMjcgZDNkN2RlNzAzYTIyZGFhYzhkOWQ5NzI3ZDY2ZjlhZWFhMjg2ZDE5YiBsZWdhY3ktdHJ1bmsKKzI4MjI4IDU4OGQxNDVjNDRkZDllNmM5NjE3ZDllNzIwMzZmNzkzMWZmNDYwNjQgbGVnYWN5LXRydW5rCisyODIyOSA3YzkxZDMwM2M1NjNlYmU4NmE4MWQ5NWVhNmU2ZjRjZTg1YThhYzk0IGxlZ2FjeS10cnVuaworMjgyMzAgYzAwMWU1YTE1MzY5ZjM3YTdiYTEyMWUyMDk3ZjZhZTg2MjgwODI5NSBsZWdhY3ktdHJ1bmsKKzI4MjMxIGE3ZGJlNGU3ZjVkZWRjYzJmMGZjMzg1M2MwNzBlZWY0MjYzYmU4ZmMgcmVsZWFzZTIyLW1haW50CisyODIzMiBlNWEwN2NjODE1NTkwNTg0YzVhY2EzZjFhYmZkNGJlOTJmNWZkY2Y5IGxlZ2FjeS10cnVuaworMjgyMzMgNGNmNTAyNzE2ZDE1ZDUzZmVmZTVjZGFhYWIyYzgwY2UzMWNmODA0NCBsZWdhY3ktdHJ1bmsKKzI4MjM0IDMxZWUzMmMyM2QyOWM1OWY5ZjMxMDMzZmI3ZTM1YjUxMTQyM2Q2ZGEgbGVnYWN5LXRydW5rCisyODIzNSA4ZTNlMGUxMWYxNGNhY2EzMzM1NDdhYmVkM2ZiYTRkMzZlNzliZTE0IGxlZ2FjeS10cnVuaworMjgyMzYgYTYwMmU0ODc4YjRlY2QwY2FhYjM5NDU5YzQyZGY0OWRiY2ZhOWZmZSBsZWdhY3ktdHJ1bmsKKzI4MjM3IDQ1M2M4OGY5NjNlYzMyNjM4OGU4NWYzNWQ1ZmIzOGYwZWVhMThiZmQgbGVnYWN5LXRydW5rCisyODIzOCBjYTU4ZjVhNDU1OGI4ZmE5MjhjM2QyZTBiYTM2OTE0Yjc0M2ZhZDFmIGxlZ2FjeS10cnVuaworMjgyMzkgNjRmNGRkNzcwYzY3ZGE2NTA5YTkyMTg0MThmODRjZTI3NGZkNWJjZCBsZWdhY3ktdHJ1bmsKKzI4MjQwIGUzOTlkMGE4NzViN2UxZmYzODkyNGNkZGQ4ZTQ3M2I4ODgzNmE2NDIgbGVnYWN5LXRydW5rCisyODI0MSBjMDA0YjJiY2Q1NDIxYzQ0NDdlMzQ1ZWY5ZWU0OWRmMWVlZWM5MDNiIGxlZ2FjeS10cnVuaworMjgyNDIgMTlmMjViY2Y1YTAwMmVkMWJlN2JmZWMxOTQxMzFmZDU1ZmMzNGIwNCBsZWdhY3ktdHJ1bmsKKzI4MjQzIGFlYTY4Y2IzNjg1OTYxMzRjYzJhNTFhMjMxZWU2NWJhOWIxN2FhMDEgbGVnYWN5LXRydW5rCisyODI0NCAxN2U5NWNjMDZmNjkzYjA2YzhkY2Y4MTJjMWY2NGMxZDdmY2YyOGJiIGxlZ2FjeS10cnVuaworMjgyNDUgMmZmNDI2OGYyNWRjNzM4YTk4OTYwMjA1NjZlZWYxYjJhYjQ0NzEzMiBsZWdhY3ktdHJ1bmsKKzI4MjQ2IDNhZjhkODFkN2Y4NmU0OGFmOWM4M2QxNTkzMjFjYjY4M2UxNmI0MjAgbGVnYWN5LXRydW5rCisyODI0NyBjOWFmODc1MDQ4ZTcyOTZiNTBmNGI3MWI3ZmFkNzIwYjUyYmMzMDYxIGxlZ2FjeS10cnVuaworMjgyNDggMTFjMWNjOTdiODdhMzFmNmY2MzVkZmE1MTNlYTI4MmUyOTA3NWI3ZCBsZWdhY3ktdHJ1bmsKKzI4MjQ5IGNmNTkyOGZhYjEwOGRlOWZiZTAyNjMyZDA3MTc2YzcxN2MyYjNhYTcgbGVnYWN5LXRydW5rCisyODI1MCA2OTM5ZDcyMTgyZTZjNDk5MWNjNzRlNTRjNzRjZTUwMzQ5NzM4YjVlIGxlZ2FjeS10cnVuaworMjgyNTEgMTBhNGVjNDU1NDlkMGQ4OTQ5MTBkZGE5ODE4Yjk3ODgxOTM1NDVlMiBsZWdhY3ktdHJ1bmsKKzI4MjUyIDg3M2YxMmY2OGUzYjEwMTQ5YmNkN2YzZDk4ZDI5NWY2ZmZiOTljZTcgbGVnYWN5LXRydW5rCisyODI1MyBkYWNkMTBkNDZlNTI5NDA1YjhjZjg0ZTljZGRmZTA5MDJmNDZjZjllIGxlZ2FjeS10cnVuaworMjgyNTQgM2M5YzU2ZDk3ZTU1ZTcyM2I2ZTczYjgzYjE3ZGZhY2U1YWIyYjhkZiBsZWdhY3ktdHJ1bmsKKzI4MjU1IDhhYjQ2ZGYzMTgyZTc5NDMzY2ZiMjllNzEwODJhMWVjZjdjMWFkMGQgbGVnYWN5LXRydW5rCisyODI1NiAzNGNjOTg4OTJlODkyZTY3MzdlZTFiMzE0Mzg4MDJlNDJjNzFlMWY1IGxlZ2FjeS10cnVuaworMjgyNTcgYWQzNjFlMWQ1NGJiYTNlMmY0YjEyNTAzYTZkZmRjNGE0MDE0ZGZhNyByZWxlYXNlMjItbWFpbnQKKzI4MjU4IGU5ZGQzZTkxZTY1MzEwYjcwNzg5ZjA5YWY4MDc1YzNhNzE2MjhkODcgcmVsZWFzZTIyLW1haW50CisyODI1OSAxMzZiODUzNjIyY2M5MjM0NzY5NjA3N2FlMzJkOTQ3MGQ4OWZlMThmIGxlZ2FjeS10cnVuaworMjgyNjAgYmVkNWQ1ZTUzNmJjMGNlYzJiYWVjNDFjM2Y3YzRkZmRlODUxZjE0YSBsZWdhY3ktdHJ1bmsKKzI4MjYxIDg3NDQ4YTIyOGNjYTJiZWNiMjcyYjM4NTY2OTNjZjdlYjlhMjIzYzYgbGVnYWN5LXRydW5rCisyODI2MiAwZWY2YzJhZDA3NmIxMzM5MGQ2OWI4NWYxOGFhYjAzOGI2ZmZiNmUzIGxlZ2FjeS10cnVuaworMjgyNjMgNTkyNDA2ZTBjOWIwMTliNjY0MmFjNGIwMmQ2ZDk4YmI5YmEzZWY5NSBsZWdhY3ktdHJ1bmsKKzI4MjY0IGYyNDQ3Njg2ZWM1ZWJlN2YxOTlkN2VlMDk2MGNmOGNmN2JjZDVlNDMgbGVnYWN5LXRydW5rCisyODI2NSBlNDVkMTYxMWU4NjlkNjQwZGQ1MTM3ZTkyZDM4YWZhZTMxMzI5YWI4IGxlZ2FjeS10cnVuaworMjgyNjYgNGU3OTVmZTlmNTRiMjFiOGZlNDAzZTMxZmQ5YTUwZWYyZmQ4M2UwYyBsZWdhY3ktdHJ1bmsKKzI4MjY3IDViNjU2YzNlMTMyYjg2NzQxY2U2YzVhMjMzMjZjYzdhNTEyNzcxYjcgbGVnYWN5LXRydW5rCisyODI2OCBhM2ViZDEyMzNjMDBlYWJmOTA5YmU4MjIyM2ZmYmQ1ZjE4ZmE5MjVlIGxlZ2FjeS10cnVuaworMjgyNjkgZTUwMTRhYzk3YmExODc5YTZlNDk0NjU5ODM0NDY1NDViZWI5NGJiZiBsZWdhY3ktdHJ1bmsKKzI4MjcwIGI1NGNmYTk4YjY2YjliMzRjNjM0NzI1YjhmZjM1MDA5YTAyNDAwZjcgbGVnYWN5LXRydW5rCisyODI3MSBmMGRiZDViNDlkOGEwMWY1MTk3ZDEwNmM0MWRlZDhjOTczNDBkNDIwIGxlZ2FjeS10cnVuaworMjgyNzIgMjU1ZDFkM2U2NmEzYWQ5YjJkM2JiMWExNjA2ZGJmMWFhYzQ5ZDRlMSBsZWdhY3ktdHJ1bmsKKzI4MjczIDIzMDYwMDFmNmVhYTM1MGZhMDU5NzIzMWI2OGJkZTQwYzRkOGM0MjEgbGVnYWN5LXRydW5rCisyODI3NCA5Y2E4OTY0MjMzNzQzMmNkMzhhYzNjN2I2ZWM2ZWFmMmJhOTg0MDA0IGxlZ2FjeS10cnVuaworMjgyNzUgZGYyMzI2YTQ4OTRkZWU3NDNhYWI5NGE3ZWFmOTA1NTA5MTg0NDBlYiBsZWdhY3ktdHJ1bmsKKzI4Mjc2IDI1OGUwYjEzNDdjMmFkODY4ZDNiNjc4NDM4Zjg3Zjk0NTMyMjEyODkgbGVnYWN5LXRydW5rCisyODI3NyA5YmVjZmVmNmUzMWE2YmQ3MDdlZWViYzc2NjczZjZjYzU0OGNmZjgyIGFzdC1icmFuY2gKKzI4Mjc4IDRmMTNlNTlmZDBhMDNmOTY1MGFmN2Y2ZDlkMjMyYTk3ZDJlY2FlMGMgYXN0LWJyYW5jaAorMjgyNzkgY2Y1NjFlNjEyMzc4YzFhM2FmYzlkZDI0ZWMxZGRmZWRhODYzNjJjNCBsZWdhY3ktdHJ1bmsKKzI4MjgwIDk5ZjVkMThiZTU4ODAzODZkYTY0Mjc1MzBiOWQ4Yjc1MTU4MjcxNzMgbGVnYWN5LXRydW5rCisyODI4MSBiNTE3ZDkyOTJjZTdjMGYxZjI2MzJhMjNkOWNhMTcyNTg2NjRiNzViIGxlZ2FjeS10cnVuaworMjgyODIgODA4OWJhMzk3NDgwZTQwY2NkYmI2NTUyNThlNjRkZjgwOTlmMTZlNCBsZWdhY3ktdHJ1bmsKKzI4MjgzIDcyNTMzN2I2OGNhMDJiM2MxYTgwNzk5ZjgzOGU4MWNmNDJhZWUzNTYgbGVnYWN5LXRydW5rCisyODI4NCBmYzc0MDNlMTE4NzgzMzBjM2FkNGY4NTdkZmFhNWVjYTNjYWNkMWRjIGxlZ2FjeS10cnVuaworMjgyODUgZjQ4NTEwNGU0ZWU4NTJiNGMyOTFlYzlkZDY0ZDIzZjk5MzViYjg3NCBsZWdhY3ktdHJ1bmsKKzI4Mjg2IDIzOWJkYWJiNjNhZjlkNzE3ZmRkOWM3MmY0ODUzOWM1ZGU0M2IzZTUgbGVnYWN5LXRydW5rCisyODI4NyA3MTBiZWJlMjE4MmNiMTQ0YTE5OWQyZDlmMDE3YzNkY2RlMmI0OWRmIGxlZ2FjeS10cnVuaworMjgyODggZDM1NDFkOTBkNWUwNmU1YmRiMDY0MTdmN2Y2Njg1N2QyMmYwZmFmYiByZWxlYXNlMjItbWFpbnQKKzI4Mjg5IGFhYWU2OTMyMTc3MTcxODM4YmRmOTM3NzMwOTU1YWNiMjhjZmI1NjkgbGVnYWN5LXRydW5rCisyODI5MCA1ZmYzZDhhYWE4ZjhhMDZiMTgyOWEwMzQzYzdjNzZhMGNiMzI5NGYxIGxlZ2FjeS10cnVuaworMjgyOTEgYzRlNTUwNzAyYTI5YTM0NTlkZWQxMjZmZTQwOGMyZGNmOTZkYjgwZCBsZWdhY3ktdHJ1bmsKKzI4MjkyIDg3OTExOTNiMDlkNjQxN2JlNGZkNjBlYmUyOGIyZjhjMzhhMzUyZDQgcmVsZWFzZTIyLW1haW50CisyODI5MyAwMmIyZjA4ODVjNTIxMDI0MGRjMmZiMTM5MTQwYjI1NzYwMjA2NDFhIHJlbGVhc2UyMi1tYWludAorMjgyOTQgZDc5N2NmYThjYTBkMDQ1ZDVkM2FhMGUwYjE5MDk4MDFlMGYyMmEzNCBsZWdhY3ktdHJ1bmsKKzI4Mjk1IDI0ZjFkODQ1Y2RiNTczMzFhYWY1YTRkNzE1ZTY1NTZmMGQ4NTc2ZjQgbGVnYWN5LXRydW5rCisyODI5NiA0OTJhZGRiODEyZWYxMTc4MDgxYTlmMzJkZmQxZDQ0YzZhNWFiNTFhIGxlZ2FjeS10cnVuaworMjgyOTcgZDdlZjJiYTFiNmY1ZWYwYWMxZjU5NjI4ZGZlNTU2ZGE5OTNkNjZmNCBsZWdhY3ktdHJ1bmsKKzI4Mjk4IGFlYmY4YzUyYTg0MmQ0MWQ5MmE4ZTYzMDA0Y2ViMDBhYzM1ZDc5ZmIgbGVnYWN5LXRydW5rCisyODI5OSA0ZTRhMzQ0YzliNmNlN2IwYzcxY2I1MjgwMGU2MDQwOGY4ZjE0OGFhIGxlZ2FjeS10cnVuaworMjgzMDAgNDRkMWQwYjYyM2E5YWY3OTQyZmY3YjE1ODYyMTU4ZGZlYzE0MzhhNyBsZWdhY3ktdHJ1bmsKKzI4MzAxIDg4NjJiYzU5Njg1YWNkNjM3ZjVhZjQ2NjRjYmY2YmZiMGRkN2Q5ZGYgbGVnYWN5LXRydW5rCisyODMwMiBjOGQ5NTkyYzllNzQ5N2EyMTdhMjAyMDA0ODcxNDhlYzRiNGQ4ZGFlIGxlZ2FjeS10cnVuaworMjgzMDMgMjdmMGRlZWJmMjY0OGFmYTU1N2Q2YTU0ZDEzNjQ5ZWJhOTI0YmFjMiBsZWdhY3ktdHJ1bmsKKzI4MzA0IDYzMTBhNGEyMWViODkyY2UzZmI4YWI3NDE5MjgxNzE0YTY1ZWE5MTUgbGVnYWN5LXRydW5rCisyODMwNSBhODY5ZDJkZTUzNmY4ZDMwY2M2ZTdjNmZkMzUwMWY0YjI2ZTlkNzdiIGxlZ2FjeS10cnVuaworMjgzMDYgOGY4ZmU5OTBlODJjMzM0ZjUwY2M2YTVmZTlkZWUxMmM0MmI4YjZjZSBsZWdhY3ktdHJ1bmsKKzI4MzA3IDJjZGYzZDBkZmFiZDUwMTBhNjlhN2RiZDYxNzhiNzkwZmUyNmFiN2UgbGVnYWN5LXRydW5rCisyODMwOCBiYzY2MGY3Mzc5NWNkN2NlMDcwOWNkYzg4YTc2YWNmYWYxMzk4MDY5IGxlZ2FjeS10cnVuaworMjgzMDkgZjU3ZDZkYjQyM2YyZGJkYjQ3M2I4YzVlNzUxOWE0OTgzOTA5YzFjMiBsZWdhY3ktdHJ1bmsKKzI4MzEwIGVjZDRhZGEyNTJiYzA5YWQ5YTg1ZjQ4OTFkMGFjZDM5Mzk2ZjFlMjIgcmVsZWFzZTIyLW1haW50CisyODMxMSA2NDE3ODZiZWExM2UyYjVhNjFhN2Y4ZWE0MjliMjBkOTY1ZDc1NDZiIGxlZ2FjeS10cnVuaworMjgzMTIgYWFiN2RlYmM3M2E4OGUyMTM1ZGM3MThlY2Q3MjI3ZjcxZmY3ZDA2MSBsZWdhY3ktdHJ1bmsKKzI4MzEzIDMxMTQ1ZDY2N2IxNGE1ZTY2NGQ3NDFlY2YzODVmZTM4NjI3NjdlNGQgbGVnYWN5LXRydW5rCisyODMxNCBiM2VmYmRjY2Y3YzY0YzBiZDU3ZjQ2YzJiNTA0NGZjNjEwOTg5MzYzIGxlZ2FjeS10cnVuaworMjgzMTUgYzZhZDYwM2JkMjY0NWFlYzhiZTY1MDlmMmRmODI4ZWQ2YzBiMzcwNiBsZWdhY3ktdHJ1bmsKKzI4MzE2IDVhY2FlNzE5Y2I4YWJhNWM0NGVhODM1MzNhNjE5NDQ3ZTk1NWY4ODAgcmVsZWFzZTIyLW1haW50CisyODMxNyA1YzM4NDU3ZjZiM2I4NWI2YzFiNzQxNDgzMDQ2ZDlkNDA2MjE2Y2I4IGxlZ2FjeS10cnVuaworMjgzMTggMzVmZTVlM2NmODg1ZjY0NmE2OWUxMGMwOTI0ZjdjMTFhMTczMDQ2ZSBsZWdhY3ktdHJ1bmsKKzI4MzE5IDBlZTQ4YWVmYTQ3NDllNzNkOTE3M2JiOTllN2U2MmY2MGFiNzQ4NGQgbGVnYWN5LXRydW5rCisyODMyMCA1OWFjZDUwMjg4MDQ0N2Y0MGUyZGQwZDM4YmZjNDhjNzY3YTZkYTgzIGxlZ2FjeS10cnVuaworMjgzMjEgNjg0YWIwNjQwZTA0ZmEwZmZhODkzYzg1ZGEzYzEzYjYyOTRiM2FiMSBsZWdhY3ktdHJ1bmsKKzI4MzIyIDAxZTFkNmFiYzUwMTIyZjI4ZWJjMTQ1M2U1OGRhODI5YjUxODZkZDYgbGVnYWN5LXRydW5rCisyODMyMyBlM2Q5NmUwMGRjNmMxYzMzMzlmMzllZmUzNGY1ZDZkYTM3MzQ1YzhjIGxlZ2FjeS10cnVuaworMjgzMjQgODg2Njg2ZmM5MmE5OWNmZDFkMzE0MDkwNGU3ZmFiMjBkNDI3M2EwNCByZWxlYXNlMjItbWFpbnQKKzI4MzI1IDBkNWQ4ZTFjZGMyMmNhMTY3MDZkYzFjZTUwMmQyOTRkYmU2NTEyOGIgbGVnYWN5LXRydW5rCisyODMyNiA0Y2IyNTNjNTU2YjEwYTNkNGI5ZjQxZjczMWZjYjU5MmViZmY4Nzg3IGxlZ2FjeS10cnVuaworMjgzMjcgNzE0Nzk3MTU2YzUxMmI5NGRlZTQyZjQxYmMwMTZjMjRhZWI2ZjlkNSBsZWdhY3ktdHJ1bmsKKzI4MzI4IDhlZWYwMzg1MGY1Nzc2N2ZhYzcwMDQxZDVkZDgzNzY5MWU4ZTdlNTcgbGVnYWN5LXRydW5rCisyODMyOSA1ZmM0NjA5ODE1ODkyMDU3NWNkYTZiNzQ5NjY2ZDA3NjY4ZWUxZTE4IGxlZ2FjeS10cnVuaworMjgzMzAgNTFjMjY5OTRkOGVjNjlhNzMwNzk4OTIzMGYzNzU5MjY4NmQwMDIyMyBsZWdhY3ktdHJ1bmsKKzI4MzMxIGExMTQzMjI0ZWUwZDBmNzY5NGE5NDY4YWExNTZiMWRjNjFhNTBhYmUgbGVnYWN5LXRydW5rCisyODMzMiA5NDA2MDVkNDE1NWZkYzY3OTNjMTA0NDNlZTg0OTQ4ZGFlMWRlZGYyIGxlZ2FjeS10cnVuaworMjgzMzMgZDJlYjAwNzQ0OGEzZTY1OGFkNjcyNDBhNGZkZjY5OTNjMjViNjE5NiByZWxlYXNlMjItbWFpbnQKKzI4MzM0IGM0YTRiNzQyYWQ2YzY1ZGIzZTE3ZTNjNmZjYzAwYTg3YjJmMzMzNDIgbGVnYWN5LXRydW5rCisyODMzNSAwZGQ1YmNjMWVlMGJkM2U5OTg4ZjFmN2Y2MjliNjRlNDViMDBlMGQyIGxlZ2FjeS10cnVuaworMjgzMzYgNDE5ZDQ3Yzc3MTQzNDI4ZWZkNmVjMDU1YjZmOWQwOGEzMDMxZmU0YSBsZWdhY3ktdHJ1bmsKKzI4MzM3IGU4Zjc3MzA3ZDljNmEyOGQwMTdmN2Y1MTVmYzM3ODBlMTY3NDUwZTkgbGVnYWN5LXRydW5rCisyODMzOCBjMGU5ODBhYjU0ZGIzYmQ5NTBhNjNkMjVlZjExMTk1ZDdkMDE3MDM3IGxlZ2FjeS10cnVuaworMjgzMzkgNjE3YmQ1NWI0YTZlZGJjMjRmNGNlNWU3ZWIyMzc4OTNkNDBjZDNmZCBsZWdhY3ktdHJ1bmsKKzI4MzQwIDllZTRmNGNiOTc3MDY5OTgxYTQxYjQ5ZTU5ODEzY2I2Yjc1ZTMyODggbGVnYWN5LXRydW5rCisyODM0MSA2MDYwY2Y2NjgyYzAyNTY5ODM0MmI5NTQ2MzdmNTUxZjc1YTZiOWFiIGxlZ2FjeS10cnVuaworMjgzNDIgNjQ1MDhhMzdhOGQ1YjUwYzgxYzFlMThlOGJlMzU4YmQ3YzFiNjUwNSBsZWdhY3ktdHJ1bmsKKzI4MzQzIDI5NGY3YmUyNjE5YTYwMzFlZDljZjM3OGE2YTBhYzVkNTVmNGVlZjQgcmVsZWFzZTIyLW1haW50CisyODM0NCAyMTllNzAzODkwNzI2Nzk5N2NkYTczOTE5NzdiZDAyZmVkMDU0YzlkIGxlZ2FjeS10cnVuaworMjgzNDUgZTk1MDA3MDlkNDljOThhODZkMDVjMmY2ZmQzY2Y1YmEzYzcwNzRhYiBsZWdhY3ktdHJ1bmsKKzI4MzQ2IDJiNjZhZGRlMDIzMDY2OTI0MjZhM2M0N2Q0ZDA2YjkwOGNlOWRjYjUgbGVnYWN5LXRydW5rCisyODM0NyBiYjZhNzFkM2ZkY2I3NTVmODc0N2JjMTQxZWNlODk0ODQ2NDljZWUzIHJlbGVhc2UyMi1tYWludAorMjgzNDggNjcwNDg0NTRhYTFlNzQ2NzkzOWQ3MmNjMDg2NWE4OWMzMDViYTYzMiBsZWdhY3ktdHJ1bmsKKzI4MzQ5IGQxMzU1MWNkNjYzZTU3NzJlOGUzMjliY2E5Zjk0ODhiNDE5YjMyNjkgbGVnYWN5LXRydW5rCisyODM1MCA1MzA2NDA4NjU3ZmM2NjRhYWMwMjk5ZWVlYTUwMWQ5M2M4NDExYmUwIGxlZ2FjeS10cnVuaworMjgzNTEgNTRiNjAxZDNiMmE2ZGQ5MWYyNjVlNDYzYzIyZWJmMzY3ZjEyMmU4NCBsZWdhY3ktdHJ1bmsKKzI4MzUyIDc0MTdhNmRjNzM2NjYyZDNhMWJhZDdhOTExNWFmNWU0MzhjMjI0ODkgbGVnYWN5LXRydW5rCisyODM1MyAwYzIwMTU0OGQzZDRmZTUzOTVjMjYyYTA1ZTE4ODMzMzYyNGY3OWMzIGxlZ2FjeS10cnVuaworMjgzNTQgNTQ0YTMyNmJhZjdmMjlmMTI2M2IwY2U1MzAxZmRjZmQxMDE5YWZmOSBsZWdhY3ktdHJ1bmsKKzI4MzU1IDhhZGNhNWY5YmZmZDg2ZmVjNjMyZjRlZWI5ODlmOWUyMDQyMWQwNGQgbGVnYWN5LXRydW5rCisyODM1NiA5ZjI2ZTBjMGM2OTI3MTA0YmNmYjYyZDBiMDMzODE5YmQzNDJmYzZiIGxlZ2FjeS10cnVuaworMjgzNTcgMTMzODhjYWZjMTZlOTYzM2IzZjFkNTIzMGIwMDZlMTMzMGQ1Mzk5NCBsZWdhY3ktdHJ1bmsKKzI4MzU4IDFiY2FmYmM2OWM5NjcyNzVkZDdjNDcwYWU1YzZkOTg4MmY4Yjg1MmMgbGVnYWN5LXRydW5rCisyODM1OSA2YTE4YjRlODM4ZWFmM2Y5Yzc1MzIyOTIzZTBiNzExYWQyZWE0NzRmIGxlZ2FjeS10cnVuaworMjgzNjAgMzMwZjZlNDIyNzRmODM4N2MwOGQ1NzI0Yjc4ZjJlYjIyMTI4ZDBhZSBsZWdhY3ktdHJ1bmsKKzI4MzYxIDA1ZGE5NWJjZDcyNGRmZjdlNzhlNDdlNDczODExNDM2ODU3YzhlNDIgbGVnYWN5LXRydW5rCisyODM2MiBjNTVlOGQ2YzA5MWYwMzNjZjdlZWI2MzZkZTQzN2I1OGRjZTIxZjFiIGxlZ2FjeS10cnVuaworMjgzNjMgNjI4MTBiZWI5YWY0Nzc3MzBiY2YwN2ZkYzc4NmVjNjY0YTIwNjZmMCBsZWdhY3ktdHJ1bmsKKzI4MzY0IGRjNjZlYjRjZDE3YWMyYTAwMGZmMTkwNjBlOGEzODQ0MWE5MmE2OWMgbGVnYWN5LXRydW5rCisyODM2NSA2ZTc4YTU0YmFjM2M4NDA0MWJhZmUzYzAwMzAzZjU0NWQ4ZWYwODlmIGxlZ2FjeS10cnVuaworMjgzNjYgOGI2YmY1YmM1MTIyNmI3MjI4ZmEzMTZjNjc3ZjhkNTBiZDIyZmNhMSBsZWdhY3ktdHJ1bmsKKzI4MzY3IGI5MzNkMTlhZTg1MTJjYmEwMWU3MjY0Y2E0NWQxZWEwMDAxODEzNjcgbGVnYWN5LXRydW5rCisyODM2OCAwNDNlYmE1MThjNjg5Y2JkZGIzNzFlNWI3MGZmZTk5MDRjNWQ5MjA1IGxlZ2FjeS10cnVuaworMjgzNjkgYzFmNjgyYmVlYmVhMWNmMWUxZThlYWU3Mjc5OTcyM2NkM2NmY2MzMyBsZWdhY3ktdHJ1bmsKKzI4MzcwIDczZmJjZjIxYjJjMGZiYWNjOWY3MmQ0NDc4OTZkZDA5MzRhM2E0NDkgbGVnYWN5LXRydW5rCisyODM3MSBkOTBhNmFkZDdjYTM5ODI4N2MwZjk0NjhmYTg4ZGFkYTY3ZTNmMTFiIGxlZ2FjeS10cnVuaworMjgzNzIgMWI0ZWY5Y2QxODk3NDJiYzgwYWViYWZiZTVmNGRkZGQ2NDMyMDY4OSBsZWdhY3ktdHJ1bmsKKzI4MzczIGM0NWIyODY1ODgwNWZhNjY5NGUzOTM2NTJlYjAxOTI5MzU4YjJhZTMgbGVnYWN5LXRydW5rCisyODM3NCA4MGY2NWM2M2U4NjBjMjZkZDViMjczMmE4NjM1NzJhMWE2NGY4YzQwIGxlZ2FjeS10cnVuaworMjgzNzUgOTUxODY1OTFjYmNmZWVlMTQ2NzA2ZWZmMDhlM2M1NzM4N2MyYmRiNyBsZWdhY3ktdHJ1bmsKKzI4Mzc2IDgxNjc5ZWJlYzA3ZDcxOWJhNmNjYTU5ZTJkNWI3NjgwNjI1ZjRhNjMgbGVnYWN5LXRydW5rCisyODM3NyBmNjU4MTI5OWJjMDNiNTE4YmE3ZGNjMTUxOThmODc2N2E3OTY5ZGMxIGxlZ2FjeS10cnVuaworMjgzNzggNDI2MzYzOGE0NjlmOGRiODY3ZGIwOThjYTMwY2ZmYmFjNzJhMDIzYiBsZWdhY3ktdHJ1bmsKKzI4Mzc5IDhlYTExN2ViYjJmMzQ5ZGU1ZThlM2Q0NDE5Zjc4YWE4ZTQxN2ZmYWEgbGVnYWN5LXRydW5rCisyODM4MCA2NjhlZWFkMTNhN2M1N2VlNjVkYjYwZmYxOGNlOTM3NTQ4NDhiNmJkIGxlZ2FjeS10cnVuaworMjgzODEgNzE5MDM0OGQ0NjZkZmY1ZDY2MDU2Y2FhMjI3M2EyODkwNjQwZjFiZCBsZWdhY3ktdHJ1bmsKKzI4MzgyIDdiZWIxNjkyM2I3MWJiNzBmZTk1YWYzNmE2NThlNjk4NmY5MjhkZGMgbGVnYWN5LXRydW5rCisyODM4MyAwNjNmMjAzMTY2MGMzZTI1OGYzNjg4MGY1ZDA4ZDQzMTg5YjMyNzdhIGxlZ2FjeS10cnVuaworMjgzODQgMjVmNjk1NGZlZjM0MjNkMDdiOGYzYWY4ZTc3NTg1ZDczODY2ZTI0ZCBsZWdhY3ktdHJ1bmsKKzI4Mzg1IGIxYWI0ZThkN2Q5YzVhMGIyODlmM2Q0MzY4Yzg5YzJiNDRjN2NkYmUgbGVnYWN5LXRydW5rCisyODM4NiA4MGFjODYxOTRhMTJiYjk0YWQ2MjFlN2MyMWUzNmQ1ZWY2OWU5YmYxIGxlZ2FjeS10cnVuaworMjgzODcgOWUxMWJiODNkOTUzYmEzYWI2MWUzYjk2M2U1NDdjNTdjZWRmMTU1NiBsZWdhY3ktdHJ1bmsKKzI4Mzg4IGVlOTlkMjIyNTcwYTk0NjAwZGYwNzAwMzhlZjczZDQ0ZmNmYThlZDYgcmVsZWFzZTIyLW1haW50CisyODM4OSAyMmI3MGMzOTgzYjUzOGNhZTU3NGFjOGNkN2JmOTQxMDk4ODIxMzUxIGxlZ2FjeS10cnVuaworMjgzOTAgNGJiNzc2YTAyZTZlODRmOGE3YTA4MmM1YzIwZTk2NDA2MWU5YTk1MSByZWxlYXNlMjItbWFpbnQKKzI4MzkxIDgwZDAzNWM0NTE0OTNkZGVjNzRmY2IwYjI0NGU0OWI0ZWJiMTczNGYgcmVsZWFzZTIyLW1haW50CisyODM5MiAxNDYxYjk0NjA2YzU0MTRlYjI5YjE2NTdhY2E3N2QxZDM0ZDgyYmQ3IHJlbGVhc2UyMi1tYWludAorMjgzOTMgMDBmMTFlZWRkNjAzMzQ1Y2JhOTkyM2EzNmRiYWYwNTY1MzQ1MTZjZCByZWxlYXNlMjItbWFpbnQKKzI4Mzk0IDkxMzBlYTY2OTNkYTdlZTk5YTNjNGUzYjdkNTNiZDA1ZWM3YWMxYzkgcmVsZWFzZTIyLW1haW50CisyODM5NSAwZDY2MTdhOWNiNjEwZDI3MjJhYTI1MjM3MGQ1MTMyYTNlZjM0YzQwIHJlbGVhc2UyMi1tYWludAorMjgzOTYgZjRiYjBmZjMxMGQzNDg5YzIzZjc0ODY0MjA1M2UzZGVkNmNiZjM5OSByZWxlYXNlMjItbWFpbnQKKzI4Mzk3IGJjODFlZTIwNjI4ZjNjYzlkNTAxMGNkNDE4OTc4ZjVhZTJkZDZhNGIgcmVsZWFzZTIyLW1haW50CisyODM5OCA2NDYxYWNkZWI1OGM5MDgyYWZlZThlNTY0ZjBiY2VhYmNkZWU2MTA0IHJlbGVhc2UyMi1tYWludAorMjgzOTkgYzU0MTdmMGVlNWYwODAyYjE4NzM4OWI3MThiMTJkMzFiOTQ1NTQ3MSByZWxlYXNlMjItbWFpbnQKKzI4NDAwIGZkMDY2ZDE5NGNmZjQxYzJiYmY3YTRhNWEzYTdmZGVkNTZjNDVjZGMgcmVsZWFzZTIyLW1haW50CisyODQwMSA1ZTRlYWRmMTkwM2EwMjhlNjU1YWI1ODI5ZmY1MTAwZTkwMmU1ODZiIHJlbGVhc2UyMi1tYWludAorMjg0MDIgODZhYTJjMmRhNDBlNGI1MmNjNmRlZTEwM2Y1MzM3YzZlNjZiZjdiMSByZWxlYXNlMjItbWFpbnQKKzI4NDAzIGM1MTJhOTQzM2VhZjNiM2YxNjBiYmE2OTA1ZGM1NTUzNWFlNzM4NDEgcmVsZWFzZTIyLW1haW50CisyODQwNCBhMGRjNmY1MDQ5NzI4NWExNDZiMTIwZjkzYTFlNThkYzQ2NTVmODNlIHJlbGVhc2UyMi1tYWludAorMjg0MDUgYWM0NjhlMjBiNGNlZDhiY2EwNmVhNGI4ZWIwNTllNWNlNDZkNDk4YyBsZWdhY3ktdHJ1bmsKKzI4NDA2IDNhNzQ5OTQzMWRjY2YzY2ZmZDFmZjQ4ZGMyN2YzMmJjYjkwMGYyYmUgbGVnYWN5LXRydW5rCisyODQwNyBmOTVjMGI4OTRmMjc2NmU5MmRlODE1Zjk0OGU4MTlhOWFhOGJiNjBkIGxlZ2FjeS10cnVuaworMjg0MDggMmNjY2Y4MjQyMDA5YmFjNTU5OGIyNjJiMzkzY2QxMWE2YTRhNTlkNiBhc3QtYnJhbmNoCisyODQwOSBmY2I1MjAxYzY5ZWQ4Njc1MmE1ODQ2NjNhNDU2YTNhNTNkYTA1OTE1IGxlZ2FjeS10cnVuaworMjg0MTAgNDgxMzgzNzM3MDliNDcwMDQwNDNjNDM5MGIwYWYwNDJhNDA4YWZkZCBhc3QtYnJhbmNoCisyODQxMSBiYmFlYmU2YjdjMWFkZmViZTdkYTU5YzViYWVhZjMwMjcyNjBkNjExIGFzdC1icmFuY2gKKzI4NDEyIDBiNzI2NDk2Y2Y0NGYxN2FkZmUzYjdjYmZhNDYyNzZlNGNjZTQxMzcgbGVnYWN5LXRydW5rCisyODQxMyA1OWI3ZjRlOWZkNjE0NzBkYmRkYWQwYTZlNTA1YWU3MDhhNTA0NDkwIGFzdC1icmFuY2gKKzI4NDE0IGM3NDQxNDRjNDA0OWRmNjczN2FkZGU3YmIwZDYwOTZjZWI4ZTA1MmEgbGVnYWN5LXRydW5rCisyODQxNSA5NGFkZjY5OTYxOGZlZDVhZDQ3YzcwMjAxOThjNzg4ZDBiY2I4ZGEyIGFzdC1icmFuY2gKKzI4NDE2IDhmZGIwODc3ZDM1MjM4Mzg3MGFiMDliNDlhOTA3MGY5MDg2MTZlNjAgYXN0LWJyYW5jaAorMjg0MTcgNzYyZGQwOWVkYjgzNDJmYjA0ODQzOWZhYjZlYTgxZDYyYzEzMWQ2NCBsZWdhY3ktdHJ1bmsKKzI4NDE4IGI0Mzk4NmY3M2ZjOWY4YTI4YWQ5ZGY2NzAzMzA3OGRkMDdlNjE3MmMgYXN0LWJyYW5jaAorMjg0MTkgZjgyNDc1ZDc4NDE1MjVjODZmNThlYmQ4MmFhNTA0NDI0MTYyZmZmZSBhc3QtYnJhbmNoCisyODQyMCAxMmJiNmYwYzYwZjhjNjM4YzEyY2JkYjhhNGY0NjkyZjRiNzFlZTE0IGxlZ2FjeS10cnVuaworMjg0MjEgMDg1N2FhZGM2MTJhMzM1OGVhMjRjYjE0NGNiYmU0ZmJmMDRmMDZjNSBsZWdhY3ktdHJ1bmsKKzI4NDIyIGI1YjcwZTQxMGYxMjRmOGViOTU5MzZlYzczMTY0NzUwNjhlYzIxNjEgbGVnYWN5LXRydW5rCisyODQyMyBhY2VjZGM0ZjczMzM2M2M0ZTdlMTQ1MmFiZGVkNjkzNzcxM2E1YmE0IGxlZ2FjeS10cnVuaworMjg0MjQgYzY4MzExZWZkMzQ2ZWQ5ZjQwNjc3ODkyMzM0NjRhMDFkNWEyMjlkNiByZWxlYXNlMjItbWFpbnQKKzI4NDI1IGQ0MjFiYmM5OTYxYzhjZmUwYWEyNjU5YjIwYzgwYzY4NzRlMTlhZjggYXN0LWJyYW5jaAorMjg0MjYgMzU3NDlkYjEwODA5MzA1NjEwMDUwZmJmNjFiNWQ4NTVjZDJiNGUxZCBsZWdhY3ktdHJ1bmsKKzI4NDI3IGYzNmUxNmNhOGY1MDU4MGY1Mjg1ZWQ4M2UzMjEyZjA2MGVkMWM1NjEgbGVnYWN5LXRydW5rCisyODQyOCBmMmQ3NTc0OWU2MWM1ZTMyMjQ5MmExZTI4Y2ZkY2RjMDc5ZDMwMzE4IGxlZ2FjeS10cnVuaworMjg0MjkgNjg2MjdlMGFjZDE1YmFiODViYWVmYjNkYTJhZGE5ZWRiNmJhZTM4YSBsZWdhY3ktdHJ1bmsKKzI4NDMwIGZlZWIwYjAyYjhmMjUyOWU1ZTQwYzk3YWEzZmRjNTY4ZTlhODdlYjggbGVnYWN5LXRydW5rCisyODQzMSAyNGU4MGQ5NmJkMGI2ZTkyNmFiOTg1MTRhMDQ0NGVmNjhlYjU3ZjU1IGxlZ2FjeS10cnVuaworMjg0MzIgMGViZWM4M2ViM2RkZmMxYzViNWEyYWZkMTJkZTc2MmFkZTNhYWIzNCBsZWdhY3ktdHJ1bmsKKzI4NDMzIGFhNDUwMzU1NjMzOWVkY2UwMzc0OTMyYWJiMjVkOWE0NGE3ZTg5YjIgbGVnYWN5LXRydW5rCisyODQzNCA4MWJlNjEwNTY3MTdmODgxMzYwNjJmYjcyODg5Zjc2NzhiNTEyZmE4IGxlZ2FjeS10cnVuaworMjg0MzUgYmIyOGJiYzI4YzMyM2FiMjlkNTA2NTVlMjY3ODg4OTBjNDZjNmM3NiBsZWdhY3ktdHJ1bmsKKzI4NDM2IGU0MTA1ODg0NWI3OTJlZDY2MjdlOTg0ZjBjY2IxMmQ0YzAxZDI2ZjYgbGVnYWN5LXRydW5rCisyODQzNyA5MGIxM2Q5OTk4MjcxMGZmNmMzOWUwOTJiZWNhNjdhNzM5MWQzMmRlIGxlZ2FjeS10cnVuaworMjg0MzggODFhY2JlMTY4MGEzMzA4YmI4MThhZTA2MzJmNzdmOTE1YzFiMGM1MCByZWxlYXNlMjItbWFpbnQKKzI4NDM5IGE2ZGU1MGMwZDQ1N2ViNjFjZmViNTk5MmQ3NTExYzBjYzgxZDczZmQgbGVnYWN5LXRydW5rCisyODQ0MCAwNDkwOTZlZmEyYzNjYTg3NmIxOWMzN2IyNDY4ZDczODQ1ZmQ5NjBhIGxlZ2FjeS10cnVuaworMjg0NDEgOGZhNzUzYTk3MDc3YmEwOWFkNWM0MjFjMDA3MDdjYWRjMDkwMzZmNyBsZWdhY3ktdHJ1bmsKKzI4NDQyIDJjMmI4NGJkYTE0MWI3YTRjOGM1OTMxZWFmN2EwZjZhMmIyNzJiZDUgbGVnYWN5LXRydW5rCisyODQ0MyAzNDg0MzA5NTczZjIxYzgzOWM3NzUzOTJiNWNiZWRlYzExMjNmMTgwIGxlZ2FjeS10cnVuaworMjg0NDQgYWQyODlmYmI2YjQ4ZDcyYjc4MzhlODNmZTBmMzBiN2Y4N2YzNmZhOSBsZWdhY3ktdHJ1bmsKKzI4NDQ1IGFmZjA2N2JhOGQwNzg4ZjBhOTM3ZTliZTNkZWY2MjUwYjczOGE1ODcgbGVnYWN5LXRydW5rCisyODQ0NiA4YzYxYzkyMDI1YjZjNzdiODNlOTJiYzc4OTMwNzRiMDQ3YzFkYzY0IGxlZ2FjeS10cnVuaworMjg0NDcgNDBlOWNmZGUxYzUwODgwYTFmMThlMGE0YmVlMTMxM2NkZjQ5MTg3ZSBsZWdhY3ktdHJ1bmsKKzI4NDQ4IDdmYjM3NTlkMzg2NmQ1MDg0ZTRhMjIyNTkyZjBkYzc2Nzk1ZTg0OGIgbGVnYWN5LXRydW5rCisyODQ0OSA4YzgwNTIzNzgwMTdjYjQ1M2IwZjIzMTU1MGVkNzNhZTU3NjA1Mjk4IGxlZ2FjeS10cnVuaworMjg0NTAgNGU5OTZlOTU5ZWMxODdjNzEzNzgxNzc3N2U3MWMxMDRlZDAxZDI4NyBsZWdhY3ktdHJ1bmsKKzI4NDUxIGQ1ZWJkNjE2YTNlNmY0YmNkNTgwOTNiYzU1YzM4YTM2NTk2YzExODMgbGVnYWN5LXRydW5rCisyODQ1MiAwZTAxYjg1YWRkODEyNmU2YWM3Mzc4NTdjZTk5ZWI2ZjAzYjFkYjMzIGxlZ2FjeS10cnVuaworMjg0NTMgN2QzZjgzMDZhMDFlZDVhZTU0M2ViODQ4YWZjNTlmZGY4NGRiNzBjNiBsZWdhY3ktdHJ1bmsKKzI4NDU0IDBiOTc5MmNiZTkwMDQyYjE3NzAxZWQzMjQzOTNjMTZlNjY3ZDM4YWYgbGVnYWN5LXRydW5rCisyODQ1NSAzNjQ3YjMwYWE5ZGUwOWFjNTZiMmRiNzJmNzRhMTZlNGVlMjY0OTgzIGxlZ2FjeS10cnVuaworMjg0NTYgZGI0OWVlNzZiN2QwZTNmNzZkY2YwNWJhMmIzMjRjODM5MTA3MDNlYyBsZWdhY3ktdHJ1bmsKKzI4NDU3IGVkMGIwMjY3MmYwOTA1ZGQwYTlhM2ZhNjBmMmZiMDViOGYyMDFhYjAgbGVnYWN5LXRydW5rCisyODQ1OCAxMTg5Zjc3Y2RmODQ1ZDJjZTc5ZTljZWQwMmY4NmUyMTA3MDMyZmM0IGxlZ2FjeS10cnVuaworMjg0NTkgOGNmMjA1ODkyZjY2Mjg5NjA2Y2MyNmEzODhiNTNlY2QzMzQ1MWFiYyByZWxlYXNlMjEtbWFpbnQKKzI4NDYwIGJkMmFhMDI0N2FkYWFkOGM0NmE5N2Q5NzQ3MjQ0MGM5OWVmNjc2NWUgcmVsZWFzZTIyLW1haW50CisyODQ2MSA3NmNmODhlODkzNzZkYzI1NGFkN2ZmNjEyMGU2ZjgzMWMwOTQ2Y2UzIGxlZ2FjeS10cnVuaworMjg0NjIgNDM0YmMxZGVhNGY4YmE3ZTc3ZDY1ODZiMzNlZDRlZjdiZDExZjAzYyBsZWdhY3ktdHJ1bmsKKzI4NDYzIGVjMzczNjk2YzE3YmMzNzg2MjY1Yzk3MjFjN2Y5OWZlMWU2NGJlNzcgcmVsZWFzZTIxLW1haW50CisyODQ2NCBkMDQxM2RlMTQzZWMyNDVhYjBlMTI1ZmNlM2QzMzA4NWYxMzg0Yjk5IHJlbGVhc2UyMS1tYWludAorMjg0NjUgZDgzYzE0YWU2NDdkZDAzMTBjMWFhMGZlMDVmMGZlYzQ2ZDNiNWVhMiBsZWdhY3ktdHJ1bmsKKzI4NDY2IDQwMjlkNjdjZGJkNWZkYmQ0MjI1ZmQ3N2I4ODQ3ZTBiMDM4M2RkNTEgbGVnYWN5LXRydW5rCisyODQ2NyBjYmVlMmVkNmNkNzU1YTc3MjdiM2I4ZWEwMjZjODZjYWRhNTM0NDY0IGxlZ2FjeS10cnVuaworMjg0NjggYTdhNjBiMTQxZDFkYTY4MzhkYzllMWUxYzMzNDk5OTk1ZTZiNzUzMSByZWxlYXNlMjItbWFpbnQKKzI4NDY5IDYzY2ExMmFiYTA3OTM0YTU5YTVmNDVjNzM3ZWU2ZjdmOGNiNmRkYWUgbGVnYWN5LXRydW5rCisyODQ3MCA4ZThkM2U0YWY0ZjQ2ODk0Yjc4MmM5YTdkMjA5NzNiMTJlMjJmNmNjIHJlbGVhc2UyMi1tYWludAorMjg0NzEgMWFhMDgxNWZhZDRiMTE2NzFjNTgxMzUyNDlhOWY5ZWZjZDA0MWZiNCBsZWdhY3ktdHJ1bmsKKzI4NDcyIGUwYjg1NWFhZDIzMDIwOTJlMzM2ZGFkMDE2N2IwZTNmMzFhOGE1MTYgbGVnYWN5LXRydW5rCisyODQ3MyBlMjA0MmM3NmFmMDY1NjBjY2EyYmU2YTQzMWRhOTVkOGViNmJhMzk5IGxlZ2FjeS10cnVuaworMjg0NzQgYjgwNjdkZGMxMWY4N2E5N2Q0NWYzZmU3Mjc1OWIzYWUxY2JjMzRlMyBsZWdhY3ktdHJ1bmsKKzI4NDc1IGFkM2JlNDcxYjM5OTIxOTMzMDY4NWQ0MWZiOWIyZjVkZjgyMTJiZmUgbGVnYWN5LXRydW5rCisyODQ3NiAwZDQ5MjkwMjg5NGE1NTg4NzBlNzUzYzQ2ZWFjNDkwODJkNWMzOWExIGxlZ2FjeS10cnVuaworMjg0NzcgN2M3NmMwZmMyZTkyYTA5N2JmOGU5MDA1ODNiMWQ1YTI0ZTBhNWU2NCBsZWdhY3ktdHJ1bmsKKzI4NDc4IDEwMGYxNTQ5ODJjOGJiZTA5Y2E1MThhZDBmOTNkY2Q0YjQ5ZjhjNmMgbGVnYWN5LXRydW5rCisyODQ3OSA3ZGM3YWI1ZGI5MDk5ZTg0NjQ5YjRjMzU0YjFkNGQxMTgwMTY5ZjIwIGxlZ2FjeS10cnVuaworMjg0ODAgODFhMzZkMmEyZDEzN2QxMjA5YjU0MTgyM2ZlZGU0ZDM3YWE4MjMyMCBsZWdhY3ktdHJ1bmsKKzI4NDgxIDVhODhmMTc0YjY4NGNiYmY4MGMxYzdiNzE2NGVkODAyMzA4YzM4ZWMgbGVnYWN5LXRydW5rCisyODQ4MiBhYjE3NmUxNjRlYWI2OTQ4YjI3OTI1ZTRmMjFhZGU2ZjJkMGFjMmY4IGxlZ2FjeS10cnVuaworMjg0ODMgNDZiMDUwNDU1NTMzNjgzYmQ4ZGQyMjcwNmVmYzE2YzcwMDI4NTJlNCBsZWdhY3ktdHJ1bmsKKzI4NDg0IDAzZWFkYzU3ZDQyOTljNDE0YTFkZTk5MTJkNjNhOTI2NzI4N2IzYjUgbGVnYWN5LXRydW5rCisyODQ4NSA4MjMxZjg2Yzg2MjhhNDYzOWMxOTAxNDBjYTc5ZmY0OTA5Y2U1YTEyIGxlZ2FjeS10cnVuaworMjg0ODYgMjc0ZmEwYjM0Y2E3ZTZiM2Q0NGExMTVkZDcyNjhhYTIxNTE0ZGExMCBsZWdhY3ktdHJ1bmsKKzI4NDg3IDA1YjE1Y2UyOGUzMWZhNGY5NGE4NTI5NDhjNDBkM2M4MjE0NWUwY2IgbGVnYWN5LXRydW5rCisyODQ4OCA1ZmI2ZjViYjc2OThmYjhmOTkxMWUyZjk4ZjBmMjAyMGU2ZDQ3NjI2IHJlbGVhc2UyMS1tYWludAorMjg0ODkgZWZjMTI4YTMzNGE1NWYyNzRhM2JkMWMzMWM5NjIzZjIxMjcyZWVjMCBsZWdhY3ktdHJ1bmsKKzI4NDkwIDgyNWZjODU1MjMyNTdkOWU5MGM2NzIyOGE5Y2M4MDNjM2I1ZTQ1NzggbGVnYWN5LXRydW5rCisyODQ5MSAzMWE3NzRhNmY2MDRiNTcwZjkxNzE2ZTU1OGU3ZGFmNGE0MWQzMjQ0IGxlZ2FjeS10cnVuaworMjg0OTIgNmEyMjE4MzRlZDdkZjQyZTgwYzIwMWExMTQyNjA3N2RkNGU2MjkwMCBsZWdhY3ktdHJ1bmsKKzI4NDkzIGE1NGM1Y2ZhM2Y4ZmIyMTRjZDM1ZjQxYjlhMWY4Y2M0NzNlNTI2ZDYgbGVnYWN5LXRydW5rCisyODQ5NCBiZTI4NjhhNjNlZDUzZDFmMjRlNGMwNzFmNDg5MDZlNWExMzkyOGMyIGxlZ2FjeS10cnVuaworMjg0OTUgMDA0ZGUxYWMyM2M0NDIzM2Q5YWI0MjAxZmVhYzNhNjE4MWVhZjM1NCBsZWdhY3ktdHJ1bmsKKzI4NDk2IDRhZWFjZjlmOTg1OGU0NWZkMDIwMDQxNGJlODMyMDFkMTY2MDAzOTYgYXN0LWJyYW5jaAorMjg0OTcgMjZjNTBmMzIyNjIyMDAyMjgwYmRmMzJjOGVhNzk5YmQyYTc2NmRiOSBhc3QtYnJhbmNoCisyODQ5OCAwMmUwZTZkMzgxM2U5ZWIzNDJmNWQzNmE4NGY0MmM2MDE5MjA0OWMwIGFzdC1icmFuY2gKKzI4NDk5IDhlNDczNjFjNGI1YjAzOTQ5YmU5MjcxZmMxNGU2ZjU0NDViN2M5MDEgYXN0LWJyYW5jaAorMjg1MDAgMTNlOTBlM2M0Yzk5MzFiZmY1YjA1N2I4MGE3YjlmYTdiMmNiYjBiNiBhc3QtYnJhbmNoCisyODUwMSBjNTU2OTA2NDc5NjEzMDEyOTM2OTQyYzk3MmIzMzI0Y2E2NGQwYzM1IGFzdC1icmFuY2gKKzI4NTAyIDg5NDIxNTA1ZGI1OTAzMjkzZGJlYTBhZWEwMjI1ZTNiM2Q4YjE5NjggYXN0LWJyYW5jaAorMjg1MDMgMGM1NDQ4OGE3NDgyMTlmZmRhOGJlNmZmOGM4NTQ2ZDVmM2Y2MmZkYiBhc3QtYnJhbmNoCisyODUwNCBlZDJhOGM1NDhjNDQ0ZDhiOWY5NWNiZDM2NWUwMTU0YzQ0NmJhYzk5IGFzdC1icmFuY2gKKzI4NTA1IDVhMTAxNmIyYzQ0MGNkYzFhNDJlODQyZThhYjNiZDZmNDRlNWEwNTUgYXN0LWJyYW5jaAorMjg1MDYgNWE0MWE3MGJjNWQxN2NlMTQzZWY2OWIxMWJkYzFjNDgxMDZhYTYwMiBhc3QtYnJhbmNoCisyODUwNyAyYmU5NjlkMjk1MTBiYTljNGNhZmJlZGZlZDJjMDM4YTQ2NDkxYjA5IGxlZ2FjeS10cnVuaworMjg1MDggOWEyZGUzOWU4ZGE3NWZiYmZlZWU0YjI2MGRkNGE3ZjdhNDMzMjAyNCBsZWdhY3ktdHJ1bmsKKzI4NTA5IDcwNjAzZjQ4NDAyOTQ2YTIzODdlMGUzNWMzODgyMTI5OWZmYjg3OTEgbGVnYWN5LXRydW5rCisyODUxMCA0YzRmOTJiMGFmOTAzNjk1NDMyMGZiNTJlMmI3YmY2YzExZmY0N2M1IGxlZ2FjeS10cnVuaworMjg1MTEgYjMzN2VmMTZjMGQyZDhiYzMxMzBkNzM1NDRjNzc1NzMxYTY2MWEzNyBsZWdhY3ktdHJ1bmsKKzI4NTEyIDVmZTRkOTNkZjQyOTEzNGVmODY5NWMxMmU1OWZmOTYyZmY4YjczZDIgbGVnYWN5LXRydW5rCisyODUxMyA4NGJmYjhhODA1ZmM5ZmY2NmIzODFlZTFlMTY0NmMxZDMyMTJhMzQ2IGxlZ2FjeS10cnVuaworMjg1MTQgOWExNzhhZGI0ZTJkYjAwODcyZGNjNWZjNTc5MzAxZGNlYWM0YmY1NiBsZWdhY3ktdHJ1bmsKKzI4NTE1IDE5OTgyYzVlYjQ5M2FmMDlhMjJmNTA3YTViZTUwMmFkNTdlMjFkYTQgbGVnYWN5LXRydW5rCisyODUxNiA4NzcxOTg3MDVjOTJhZGIwMjhkYWEyZTA2YWVjOTk0ZWFiMmMxNGU0IGxlZ2FjeS10cnVuaworMjg1MTcgYzE0OWQzOTMxNDM0NDc0MGY0Njk2Yzk1MDY1YWRhZmNkNGI0ZWE4NCBsZWdhY3ktdHJ1bmsKKzI4NTE4IDAzMzdkYWQ4NDAzZTEwYTczNThiZTU2NzVmMzI2NjM5NDBlZjNkMDMgbGVnYWN5LXRydW5rCisyODUxOSA0MjdlZmMzNWI1YmViNmRlYjliZDI5ZjAyMzFiZTU3NjgzZDMyMDU4IGxlZ2FjeS10cnVuaworMjg1MjAgYWUxNDY5ZTQ2OGEwNDkwODk2YmIxYWI5MWZlY2I5Y2UwOTQ5NDIwNyBsZWdhY3ktdHJ1bmsKKzI4NTIxIDZhODVhMWM5ZDMzZDhmM2FmMzJlNzQ0NjFmMDM3YTAzNzUyZDRlNDcgbGVnYWN5LXRydW5rCisyODUyMiAxYjgwZTBmZDVhNDgxNDU5OGY0NGE1NTcwNjhlNmJjOGEwNWVmYzAzIGxlZ2FjeS10cnVuaworMjg1MjMgOThkZGM0Mjk3ZjM2MWRlNWRiZTliY2IzMzQ1MmY2MzU3NTAzZTZjNCBsZWdhY3ktdHJ1bmsKKzI4NTI1IDU2NzJiMTU3Mzg1NWE1MTVhYTM2M2ZkN2Y4ZTdkYWUyYjQyNzBiOWQgbGVnYWN5LXRydW5rCisyODUyNiA3M2IyY2JhZTlkOTAxNzgwNDM3MGNlNWJlYjVmYTk5YzcwYjI2NjVhIERTX1JQQ19CUkFOQ0gKKzI4NTI3IGMwMmE2Njg0ODhkMDgyYzRkMGRiOGIzODcyNzc3ZTY4YzFhMmMyZDYgbGVnYWN5LXRydW5rCisyODUyOCBhNjlhMTI0ODRkNjlhYTg2NmU2NzI2OGY3YTc2MTQ1MmQwM2EyNzUyIGxlZ2FjeS10cnVuaworMjg1MjkgYmM1OTBiZWFkZjBiZDE3NjM0YmIwZTFmNjQyZGI2Njc3YWQ3ZDM4YiBsZWdhY3ktdHJ1bmsKKzI4NTMwIDMyMzMxZDI2ZDdjZjE5MTE0ZjFmODBiM2VlYjU5YTU1NzlmNDhlOTUgbGVnYWN5LXRydW5rCisyODUzMSA4YTE2ZGUwYmUxMTE3ODA5MmJiZWEwNTA2NTAxNGM3YWQ0YjQ3ZWZlIGxlZ2FjeS10cnVuaworMjg1MzIgZjllNDI0M2ZmNzkyZTc5NDExYzE4OGE1MTE2ZGUyNWM2ODZmMTZmOCByZWxlYXNlMjItbWFpbnQKKzI4NTMzIDRiNTgwYTQ2MjUwODBjZGJlYjIyZGI4ZjE0MGE1YTA1ZWM1YjRiNzggbGVnYWN5LXRydW5rCisyODUzNCAzOWUwOWYzMGY3ZWYyODQ2YTdmMWFiNTk2MjMwZTFmNDRjNGU2ZDNiIGxlZ2FjeS10cnVuaworMjg1MzUgYzBkNWZmODU1NWFkZWE0NzA1ZDQ1NTZmZmIwOTk1NDdhYzhiYmI2NSBsZWdhY3ktdHJ1bmsKKzI4NTM2IDBlY2IzY2FiZjQwYjlhODZlNjM2Y2I5OTc4NzZiNWQ2NzFmZjMzNTcgbGVnYWN5LXRydW5rCisyODUzNyAzYTI2ZTM1MmYwYTZkMjc1ZmYxZTA3N2M4MGFhYThjYWQyMTI5ZGUxIGxlZ2FjeS10cnVuaworMjg1MzggMDBiNmRkNDE0YjgwNDYxZmI3ODAxYTRlOGMxZDZkM2UxYzFiODcxYiBsZWdhY3ktdHJ1bmsKKzI4NTM5IDA0MDFhMGVhZDFlYjMzNDdkMTIwZDJhMDgxNGRjYTUyMmYxMmI4MTMgbGVnYWN5LXRydW5rCisyODU0MCBiNDcwYjQxNzgzOWQ4Y2I0NmRmMzFhMzQ1MjcwYjdlMzJlMzZlZmUxIGxlZ2FjeS10cnVuaworMjg1NDEgZjBmZjA2MGNkMTk0ZTUxNzg3MjVlNWM5MjgyMTc2Njk0MDM4MmMzNCBsZWdhY3ktdHJ1bmsKKzI4NTQyIGZiMzM0YjFhNTZhNjVjMDcxMDhhYjM4YmU4MTkzMDcwNzE5MzNlNWUgbGVnYWN5LXRydW5rCisyODU0MyBhMmIxZjNjMTEzODdhNjQ3MDhjODVlZGUwODhjYjFkMWQwYjUwZGI3IGxlZ2FjeS10cnVuaworMjg1NDQgODgzNDM4NWYyOWJmNTQxMGQ5ZjcyOGFhMGQzN2E2ZDc2YzU3ODg5NCBhc3QtYnJhbmNoCisyODU0NSA3NTk2MWNiMzc0N2Y5ZGI5YmY0MDFjZmQxYTk0ZmRiMTQwMzExMjdjIGFzdC1icmFuY2gKKzI4NTQ2IDY5MjkzYjg0OWQ4NTgwN2I0ZDZlMTgxYmIyNDZiNTUwYWEyZmNhZTggYXN0LWJyYW5jaAorMjg1NDcgN2M3MzMzODAyNzE0OWIyMGM4NjlhOWY0MGRhNTIzM2ViNjg3YzM1ZSBhc3QtYnJhbmNoCisyODU0OCA0ZWEwODExMDAzMDUyOWI4YjhiMjhkZjk1YjA5YzgyNTA1MjU3ZGIwIGxlZ2FjeS10cnVuaworMjg1NDkgZWZjMGVkYzMwZmVhNDM1MGZlYzBjMDViZGY5ZTMzYzU2MzJmM2UwYiByZWxlYXNlMjEtbWFpbnQKKzI4NTUwIDMwMTVjNjc4ZjgxZGRmODUwZGYxMDBlNWE4NmUzMTNkYzA3NTAwMDYgcmVsZWFzZTIyLW1haW50CisyODU1MSAwY2UyNzIyYTNlMTU0ZDA5MzRiYmI5YjU1MjZlZGM1ZTkzOGY4Mjg0IGxlZ2FjeS10cnVuaworMjg1NTIgNGM4MTYzYTI3NjQwMjk3YTZiMWNiYzk5ZjVkNDVkZjVkMmQ4OTk4YyByZWxlYXNlMjItbWFpbnQKKzI4NTUzIDk1M2ViZTBjMGMyNWVlYWFlM2IzZWY3OGU1NGExOGJlMDk4MDhmOGUgbGVnYWN5LXRydW5rCisyODU1NCBjNzMxMGYzNDhjNzhlMmFmY2FmYjZhY2IxYmVhYWE5NjNlMWY5OGEzIGxlZ2FjeS10cnVuaworMjg1NTUgZTUwMGYxOGYzMTMxMjgyYTk3ZTdjNmZjM2Y1YTQ2ZWMzMTViYmEyZSBsZWdhY3ktdHJ1bmsKKzI4NTU2IDZiNjdkMjYwNzlmMjU1NjkwZWNmY2MyMmRlMmIyMDc1NzY2MmJlZjUgbGVnYWN5LXRydW5rCisyODU1NyAyN2M3MThjODJlZmRlMTQ2YzRmODljMTc0NDY4ZmI2MTE0ZDZjYjZkIERTX1JQQ19CUkFOQ0gKKzI4NTU4IDQ4ZDEwOGU1Yjg4NDFhMGU4OTM4OWYwMWY4YzAzZTBlOTg0YzU5ODEgbGVnYWN5LXRydW5rCisyODU1OSAxNzI4NDVjMDlhZmVjZjU0MjUzYTRmODQzY2E0YWU3ZWUzNWQxMDRlIGxlZ2FjeS10cnVuaworMjg1NjAgNTZmOWY1YWI2ZWMxMWY4YTlmYzNiNjhhNGExZjhjMmRmYjJiMDIxYyBsZWdhY3ktdHJ1bmsKKzI4NTYxIDUxNjVhMGVlODRjNjIwYTZmNmVjZDAzZDUzYWRjZGQ5NDJjNjdhNDcgbGVnYWN5LXRydW5rCisyODU2MiBmMWM2OWMzMmM0MmIyYmVhZTY0OTMzY2YzYmEzNTZiMzYzODU1MGE2IGxlZ2FjeS10cnVuaworMjg1NjMgOTY0ZDY4ODhhMjM2OGU5ZTFjMGMxMmU0YzQzNDZhMjMwYmU4NTViNCBsZWdhY3ktdHJ1bmsKKzI4NTY0IDM2OGJjM2E0OTE5ZTMwNWM1YzgzNzJmYjM1MDZmZmViOTBiMDg2N2IgbGVnYWN5LXRydW5rCisyODU2NSA4NTI5ZTU1OGY3MWQ3NDJmZTViZjc2ODNmOTEyMDZkZDE3NzFhNGMwIHJlbGVhc2UyMi1tYWludAorMjg1NjYgYjg5ZWJkNTdjZWI0YTk1ZjJjYjM4MDRhZDM0ZmZkMTk2M2MzNWRhNyBsZWdhY3ktdHJ1bmsKKzI4NTY3IDM4ZmE3NGEyMDVlYTU2ZDg1NjZmNDY5ZjVkNDA0YTQ3MDQ0NTA5NjEgbGVnYWN5LXRydW5rCisyODU2OCBjYzUzZGRiNjQyNGYzYjQxNTI1ZjkwOGU3M2Q3Y2U2ZDRlOTU3YjQ2IGxlZ2FjeS10cnVuaworMjg1NjkgMGYwMDE2NjMyYmU0OWY5ZjA5YTA1MDI5MGQ0YWJjZjgxN2JmNWIzNiBsZWdhY3ktdHJ1bmsKKzI4NTcwIDBkOTJlYjYzZGI4OWFlODk0YjhiMDQ4OGFhN2IxY2U4YjFiODhhN2QgbGVnYWN5LXRydW5rCisyODU3MSBkZGFkMzY3YjgwYzNkNDY4MTJkYTJkYzViOGUzODlkMTZhYTQ3YjQwIGxlZ2FjeS10cnVuaworMjg1NzIgODA2MzRjYTAyZGJmOTM2NGMyMTIyMTkyZjkxYzMwZDRjMDlhY2NkMSBsZWdhY3ktdHJ1bmsKKzI4NTczIGQ0NDZiNTE1MTMxNmVhODJlNzgwNTNhMDE1ZmVjY2JkNGVhZWQzYmQgbGVnYWN5LXRydW5rCisyODU3NCBhZjY5NDVmMzNiMDg2MGZmMTBjMDYwMDI0NzM1ZWJiMWI5ZTJlZjUxIGxlZ2FjeS10cnVuaworMjg1NzUgYmUyNWQyMzZmMjg2ZGQ0ZTcxYWExMWQ5YTcyYTBhMDAzZmE1NDhmOCByZWxlYXNlMjItbWFpbnQKKzI4NTc2IGRlYjY0ZGZjODQxNjZjYTUxNTY3NTIzM2IxMzYwYzg2ZGM3ZTI0NzMgcmVsZWFzZTIyLW1haW50CisyODU3NyA2NWUwZjJlMzk1YWM4Mzc2NjAyNmJkZmVmYTZhYjJlMDIzZWJmYWI3IGxlZ2FjeS10cnVuaworMjg1NzggYWRhYmRiOTllY2M0ZWU3NDZkMjhjYzUzMmYxMmFhOTg1MDc5YjJjMiBsZWdhY3ktdHJ1bmsKKzI4NTc5IDRiMTU0ZjE5ZDFhZjJmNGYwZWRjM2QzZjRjOTkwM2U1ZjhiYmViMDcgbGVnYWN5LXRydW5rCisyODU4MCAwZTIzNjY4NzkyODllMjI2MGNhMjkzMGJmODU1ZDlmNzEyZmQzMDc0IGxlZ2FjeS10cnVuaworMjg1ODEgNGIyMDVlMGZiNDZiYzFmODYxMjJmNjdjYWI2ZjM4ZWJhOTQwOTk4MiBsZWdhY3ktdHJ1bmsKKzI4NTgyIDVjMjQzMzhmM2FlNWY0MjJiNjliNDM5ZjczMWIxZTYxOTQ4NmNjN2YgbGVnYWN5LXRydW5rCisyODU4MyAxMGY5ODg4ODUzY2M2MDQxMmJjZmJlZTc2YzFhODRmOTdiZjk4NDIyIGxlZ2FjeS10cnVuaworMjg1ODQgYWM3NDE1ODdlNjZiOTIzNDc0OGQ2ZGViNGQxYzk4ZDkyNjE2MTEwNiBsZWdhY3ktdHJ1bmsKKzI4NTg1IDVjYjhkNTcyYjRkZWYwMWFjM2MyMmQ1MWMyYmY0ZWU2NjFiMDdlNjQgbGVnYWN5LXRydW5rCisyODU4NiAwYzlkZmQ1YTA2ZDQ0NzBjMDAwNDI5OWFjNDViMDZhNDExYmI2NzhhIGxlZ2FjeS10cnVuaworMjg1ODcgNzQxZWRkMWNhMjNhOGJlOWJmNGQ2MTg3ZjVkMTFmNjFhOGZmMmMyZSBsZWdhY3ktdHJ1bmsKKzI4NTg4IGU1NjZhZjk0NjQ4YmE2NjMyMDk0NTIxYzhjNDA3YWJmMDQzZGU0ZTcgbGVnYWN5LXRydW5rCisyODU4OSA2NDVkYzMzY2Q0ODEyNDBmMDg1OTdiNWQzNmZkZGVjZjdhZTYxYTI3IGxlZ2FjeS10cnVuaworMjg1OTAgYmY5MGZiNzFhYTc2ZDkzYTM2MTMxMjZjZDVjOTM5MmNhMzU5OTBkZSBsZWdhY3ktdHJ1bmsKKzI4NTkxIGMxY2EwM2VlNTE2ZTEzZGM2YmRiMDg4Y2ViNmY3YmUxMTNiM2FkNmMgbGVnYWN5LXRydW5rCisyODU5MiAwZjBkMzQ3NGYzZjY4OWRmZTIxMzdkNTNmOGFhYzQxYzY5ZTJmMjY0IGxlZ2FjeS10cnVuaworMjg1OTMgMTNhNWYzMjYyODMyMTI1N2JlYzdkMDNiYzA2OGQzMTZlYmY3ODJmOSBsZWdhY3ktdHJ1bmsKKzI4NTk0IGUxNjE3MTU2ZjkzZmRjOWE3MzhiZjRiMmY2OWJhMDIwNjNhZTY1ZDIgbGVnYWN5LXRydW5rCisyODU5NSBjMjEzZTliODAwMjYyOTk3OWU1OTE5MWZiMDdhYjNhMWRkZmFhYmRlIGxlZ2FjeS10cnVuaworMjg1OTYgYTM3Y2ZjMWM5NzE2YzdhNjU4MzRmOTNhYTM5NjBiZGFmYTUxY2ZiMSByZWxlYXNlMjItbWFpbnQKKzI4NTk3IDJhYzEwZDkzMmQ3ZjU1OTE3MmIzNmI5ODlmNDRjY2RmOGJiNTJkMGUgbGVnYWN5LXRydW5rCisyODU5OCA2MTA0OGFkYTA1YmNjOTU0OTMyN2Q4YTViNjEyNjNhYTdlNDhlZDNkIHJlbGVhc2UyMi1tYWludAorMjg1OTkgYjZiZmFhNmNhODRkMDU0YTgxODlkY2I1ZjcwMGQ0OTc0MjQxZDIzYSBsZWdhY3ktdHJ1bmsKKzI4NjAwIGI4YjkyYjNmNWIxN2M2ZWNmOWI3OTBlOTliYzE3N2ExNWNlMTVmMzMgbGVnYWN5LXRydW5rCisyODYwMSA5OGQ4YmIyZWU0YzMzODQ4MWNhMWE3YTFhZTJiMWJkNjJkYjIxNzVmIGxlZ2FjeS10cnVuaworMjg2MDIgNDBjMzUxOTEzOWRlOGI2YzAyMDNjZTkyNmI0MjFiNjUyMWNkMGMzOSBsZWdhY3ktdHJ1bmsKKzI4NjAzIDllZTJmYjI3ZDMzYTcyMTg0Yzg3YjIzMmRjMWU5YjIwYmI0ZDNkZjEgcmVsZWFzZTIyLW1haW50CisyODYwNCAxM2QwNmU1YzhhNWMzZWY0Yjk1NTBkZTYyNWY0NzhkNzQ4NTFlMjg1IGxlZ2FjeS10cnVuaworMjg2MDUgMWMwMTk3ZjQ5YzU5YzAzNzc2NWQ1OGEyMjEzMTIwMTY4MzQ4NDlkOCBsZWdhY3ktdHJ1bmsKKzI4NjA2IDVhMTdmMDk3ODMyNjAwOWMwNmExMDZiZmY5Njg1ZWY5OTdkYTBjZDIgbGVnYWN5LXRydW5rCisyODYwNyBmNGU5ZjA5ZGY0ZjIzOTgzYzYzOGIwMTg2NTIyYTdiY2IzOTE5MGRmIGxlZ2FjeS10cnVuaworMjg2MDggMjllZmMyZDgzYWRlNjE5YTBhMzZjNmEyNzYyYTI0NTE5NjdlMGM1NyBsZWdhY3ktdHJ1bmsKKzI4NjA5IDRmNDAwMzA0M2I1MDEzMWVkN2RhYmNkMDAwZDFhODk1M2ZjNzI3OWUgbGVnYWN5LXRydW5rCisyODYxMCAwMzg3MTFhZTEzZTBlMTgzNDhhNTMxMDE4YjQwOGM0YTgzMTcwYjVlIGxlZ2FjeS10cnVuaworMjg2MTEgYmNkYjYwZGY0ZTNlZmIzMzA4YjllODUxNWI5ZTQxMDVkNmNlNmI5ZSBsZWdhY3ktdHJ1bmsKKzI4NjEyIDNlZmJkMTk0M2I4YzFlODg4Y2RjY2Y2ZTNkM2EyZTY1ZTc5ZTBmMGQgbGVnYWN5LXRydW5rCisyODYxMyAxMTUwNTYwYzEwMDMxMDhmMjY2MWRjYzY5MTQ2MmE0ZjI5YzA2MmFiIHJlbGVhc2UyMi1tYWludAorMjg2MTQgMjRmZTJhYzVhZGNjMTljOTg5MjQ4MDlkOTYwOGM5Y2EwYzgwMTZlMyBsZWdhY3ktdHJ1bmsKKzI4NjE1IDhhNmY1NGI3NjM0MzQwNzZjOTJlNmZmNDVlNDU2YzcxNzA5ODBjZGEgbGVnYWN5LXRydW5rCisyODYxNiA0Yjk4NDQxODhkMDRlNzBkMjdlMGY1Njk1MDJhOThjYzc0YzUzODYzIGxlZ2FjeS10cnVuaworMjg2MTcgMTgxNjBjYjYzNjUwOWNmZTRkY2Y2MjU2OWNjOWEyMTZjOWNhZGQ3YSBsZWdhY3ktdHJ1bmsKKzI4NjE4IGEwYmUxODI2MzFjYzNiYWJkMmI3NDQ0Y2FkNmY1MmQ4NmMyODNhMmEgbGVnYWN5LXRydW5rCisyODYxOSA0NmFjMzY1Mzk2YTQ5Nzg0Y2IyMDFkOWQxNTJmYzgwZTBjOGVhNzgzIGxlZ2FjeS10cnVuaworMjg2MjAgMmJmMDk4OTI0YmE0MDk1MmQzNDZiZGVmZjAxOTAyNDZmNmI0ODhkYyBsZWdhY3ktdHJ1bmsKKzI4NjIxIGYxODg1Yjk5YTM5Y2RhYzY3YzZhZmUwZjA4YjVmYTNmYTE3NmRjNjEgbGVnYWN5LXRydW5rCisyODYyMiBiM2M0NThlM2MyODBmOGZkNjFkMjQ5YTJlMjA0ZDE4Yjc3M2U0OGI4IGxlZ2FjeS10cnVuaworMjg2MjMgNDZlNzJhNzA4ODU3ODQ0YjgyZmEwNWEwMThiYzQ0NzFmOTAyMGFhNiBsZWdhY3ktdHJ1bmsKKzI4NjI0IDkwOTYwZjdmNGYzMTQ0ZGUxYTdiNzAwOGJmZTg1NmJmYWI3MGZlYzYgbGVnYWN5LXRydW5rCisyODYyNSA0NWRmMmRlMzRjZDM5YmY3Y2JlMjY0ZTcwOTJhMWMwNDYzNTI4ZTBmIGxlZ2FjeS10cnVuaworMjg2MjYgNWQyMDdlNTdkMDQwMTQwY2UzYjUyYTc2ZWUyNjAxZDcyM2RmOWQ5NSBsZWdhY3ktdHJ1bmsKKzI4NjI3IDU1MDhlMDRkNDk3YzY4NTE2ZmFkZWViOTA4MzY0Y2Y2MWViNTA1OGUgbGVnYWN5LXRydW5rCisyODYyOCA5NmRkOTkyN2UwMTFkOGIxNWE1YTQzY2VlOTkyNzgxZTQ3M2E2ZjkxIGxlZ2FjeS10cnVuaworMjg2MjkgNGIzMmJlNjYxNzc4NWQzNTAwNTRiNWQ0ZWY5OGU0Y2RhODhhNTNmNCBsZWdhY3ktdHJ1bmsKKzI4NjMwIDQ3MDgxYTc1M2VjYzQ4MjY0YzZkOTI4YjE3YTc4ZTFkYzM3N2IyZTQgbGVnYWN5LXRydW5rCisyODYzMSA2NGQxMDVkZDA4MjNiYTliODg0YTBkYjJkMGQ4OWI1MzJhMzE4YTdhIHJlbGVhc2UyMi1tYWludAorMjg2MzIgOGRkNmY1NWZkNGI3ZTdlZDljNWE3ZmEwODY4ZTg0ODM3MzIyYjI3NCBsZWdhY3ktdHJ1bmsKKzI4NjMzIGMxODRlNDE2OGQxNGM4ZTk3OWNmNTg1YTNmYjE5MGUwNmY2YzgzNDcgbGVnYWN5LXRydW5rCisyODYzNCBjYmI2Y2M3OWQzMzY1MDc1NDUwMDljNmI3YmY3N2M1ZTVmMmZmNTAzIGxlZ2FjeS10cnVuaworMjg2MzUgMjdmODM1NGY0MWI2ZTcyNDY4ZWY5Mjc4YTJjMTIzOWZmMjc3NDg1ZiBsZWdhY3ktdHJ1bmsKKzI4NjM2IGFmZDAwMzBlNGMzOGM2MGZkOWE2NjU4ZGJkZjI2MjZjNmRmZGY0ZjIgbGVnYWN5LXRydW5rCisyODYzNyBhYmQ2MjU0MTdhNTM1OWEwNTM5MGI4YzJmZTUwZGMwM2IyODc0NjlmIGxlZ2FjeS10cnVuaworMjg2MzkgMmU3ZmU1NWMwZTExYWNlNzY3NTVjNTlkNWZkNzJhOWJjNTY2MDRhNyBsZWdhY3ktdHJ1bmsKKzI4NjQwIDJkMTNmOWQ5ODEzNTc3ZGY1ZTdmODZkYTkwNTExYzgwODBlYzRhNDMgbGVnYWN5LXRydW5rCisyODY0MSBiZjc1ZjNhNDU5MjdmZmIzMGEzNTMwYjQwZjk4YWVkNWE5NjA4NTVlIGxlZ2FjeS10cnVuaworMjg2NDIgMWU0NmRhMWU2NTIyNmQwN2VhNTEwM2YyNGJlZjEzNGE4NzIxN2VmMiBsZWdhY3ktdHJ1bmsKKzI4NjQzIDI0OTBjZjdlNjhhNDRhZTFlYTU0N2VjMmJkMWRmOTE1ZjMxNDUxNjAgbGVnYWN5LXRydW5rCisyODY0NCA5ZjNlYTM3ZGM0M2NiNzg1OGY0MDdlNDg2Nzk4Mjg3MmI4MGQ2MzhiIGxlZ2FjeS10cnVuaworMjg2NDUgNzY3NjhhZGI2ZjIzMjhiMmUxZTExODA4YzY4ODMwZjY5MzU3NWJmYSBsZWdhY3ktdHJ1bmsKKzI4NjQ2IGNiY2Q3M2Y1ODdhZDdhNDk4ODBiYWQ5MDc5MzVkNzdkN2EzZjRiNjkgcmVsZWFzZTIyLW1haW50CisyODY0NyAxMjk0OWVjZWQ1NWZmN2Q5YzQ0ZjljYWZlMzdkZWFhNTQ2YmJhMjQ0IGxlZ2FjeS10cnVuaworMjg2NDggNzVjZDRjMjAzZDhmM2JkZjM0NzViZjQ0MDQzYjZlZWMxZGVmODcxZSBsZWdhY3ktdHJ1bmsKKzI4NjQ5IDUzMzBjMDYyMDgxMGU1ZGFhYThhN2JjMzhlZjdiZjVjMTdjMjBmYzMgbGVnYWN5LXRydW5rCisyODY1MCAwMjIwYjAwNzVhMzVkNDk4NWE4MmMxNWNiYmE5NjJlODBmODc3YTQ5IGxlZ2FjeS10cnVuaworMjg2NTEgOTUxZjVmMjhmMmZlYjMzYTM5NGJmYTExNjdhMDMxY2Y5NjlmMmI2NCBsZWdhY3ktdHJ1bmsKKzI4NjUyIGNkYWQ2YjA5MjFkNTc4MjUzMTE1OTkwY2FiYmNiOGM0MjcxN2M4MTUgbGVnYWN5LXRydW5rCisyODY1MyA0ZmQwYjc2Yzc0OWVlYjYxYzdiNzVkOTM0Njg2YjA5NDFiZTY1ZTdlIGxlZ2FjeS10cnVuaworMjg2NTQgOGE3YTJmMWY4OGYwNjUzNGM2YmQzOTAyYzgxYjc5MzdjNWQ0M2FiNiBsZWdhY3ktdHJ1bmsKKzI4NjU1IGFjMGUxZTkzMWYzOTAwYzllZDYwYTYyMWI2NjU0ZjE5OWJhOTE3YzggbGVnYWN5LXRydW5rCisyODY1NiA0MGU1YjJkYTlmMjg0M2NiMmJjMzhmNTg3MmFhYzU1NGY2ZjQ1ZTBhIGxlZ2FjeS10cnVuaworMjg2NTcgNWY1ZjFjODI1Nzg0NDAwMGM1ZmZjNDFjNzEyODBmZjYyZThkYmRjZSByZWxlYXNlMjItbWFpbnQKKzI4NjU4IDJiMTcwMWNkNDU2NjIxNGY2NmE0ZGM0MzZlZmJhNjVjM2MyZWQyZTQgbGVnYWN5LXRydW5rCisyODY1OSBlNzA5YTNjOGJmZWNjNWRmZGNiZjE4MDIzMWNiYmY4YzEwNjFiMmVjIGxlZ2FjeS10cnVuaworMjg2NjAgMjNhMmJhZDhkODJjZTY0MTdlYmZmMGJjMzg2MDliY2RjY2M4MTJhYSBEU19SUENfQlJBTkNICisyODY2MSBmZDhhYTdhZWQ0ZDUxZTZjZjc4NmVhYjM5YTIyNWVjYTJmMTc3M2QzIGxlZ2FjeS10cnVuaworMjg2NjMgMTk5MDQ3NTBjMzY1N2M3NTczNjMzMDYwZjhmM2U3M2ZiMjU3OTE0MSBsZWdhY3ktdHJ1bmsKKzI4NjY0IDgwOWMxNGYxMTAxYTk1YjkwNjNiYTczNjExOThkYTQxMjc0YzQwZTAgbGVnYWN5LXRydW5rCisyODY2NSAxYTc4OTVmOTdiMzBkMTM4NzNhZGU5NzcyOTUwNTA1NTdjM2EwNjcyIGxlZ2FjeS10cnVuaworMjg2NjYgODc3NWRlZTYwZDg5YTU1OWFhYzliNzkwOTU5N2ZkMjBlYjllNzU1ZiBsZWdhY3ktdHJ1bmsKKzI4NjY3IDI5NzBlNWU3NjAxZmYyNmJlNDI3OTY1ZDZhNjBhMTRkYjgzNjI1NzcgcmVsZWFzZTIyLW1haW50CisyODY2OCA4ZmQ0ZTIyZTc4ZjAxYzVjODcyOTQ0YmM5YzFmNWVlNjk0NDJiMjU1IGxlZ2FjeS10cnVuaworMjg2NjkgYWFjMWVlOTY2ZjU2YTRkNjBhMjkyNDk5YTFlNmM2OGVhNzMzYTgxMCBsZWdhY3ktdHJ1bmsKKzI4NjcwIDhkNzUxYjYyZWNjNDI1YjRlMDdmZjQzNDU3NDAwOTQzNWZmYWE1ZGUgbGVnYWN5LXRydW5rCisyODY3MSA5NmIyZmZiNzdiMDE3NDM3ZTUwZDQ5MTNhZDFmMzNhZjZmNDNkNTIzIGxlZ2FjeS10cnVuaworMjg2NzIgMjkzMGZhZjEyNWNhOWYzZmQ0NWMxNTNiMzZkZGE3MjdhZWRiNThkNiBsZWdhY3ktdHJ1bmsKKzI4NjczIDcwMDhlNTM1NzllYmQ3NThmZjc4Zjk3ZWFkNDdiMmY1ZDVjNjhmZTQgbGVnYWN5LXRydW5rCisyODY3NCBhMGY2NDE5Y2IxM2ZlNmFjZGM1Y2VkMGExMDI3NWUxNDNlNWE5Zjg2IGxlZ2FjeS10cnVuaworMjg2NzUgNzc4ZjcyMjFmOTU1MTE1NTIxMjQ3MjNlZDRjOGJiYjU4YjU1NzNlZCBsZWdhY3ktdHJ1bmsKKzI4Njc2IGNjMzVkN2I4Nzg1MmY0MTg4YWI5YzZhMDkwMTJhODA0N2RhZjZiNDUgbGVnYWN5LXRydW5rCisyODY3NyBjODA0NDEyM2QxMTBiNmRhYWExOTdiMTliNTFjMzcyYzIzNDBhOWM2IGxlZ2FjeS10cnVuaworMjg2NzggMGJmOTY4ZWUxNWM3NjU0ZWY3Nzc1M2ZkNmQxMzkxYTNhMWEwZTJmMyBsZWdhY3ktdHJ1bmsKKzI4Njc5IDFiYmVkZjU0ODFjOGJiOWQ4YzgwNGNmNGFiM2ZmNzUwODNlYTNlMzQgbGVnYWN5LXRydW5rCisyODY4MCBlMWJhNDFkYzk3ODQyODE2ODJjZTI0MTY3ZjMzMzgxZTQ3OGJiZGUxIGxlZ2FjeS10cnVuaworMjg2ODEgZGJmM2NjMWY0NzMzYzVlYTliYzQ1ZTQwN2ZlMDQ1N2Q1NDI3YzM0ZiBsZWdhY3ktdHJ1bmsKKzI4NjgzIDEzODVkMTc5YTE3YWRhNDIxMTQxZWQ4ZTBlN2FiZjAwZTY0NWNhMTcgbGVnYWN5LXRydW5rCisyODY4NCBiMTI4ZThhMTFlMjk1YWUyM2U5OTg2NjVhMWMzZmI4ZGMwZjU1OTlkIGxlZ2FjeS10cnVuaworMjg2ODUgNDgwY2FmN2MwYTE0ZTA0NWVjMjhjMDFlZmM5ZDc3ZjM2ODRhODUxZSBsZWdhY3ktdHJ1bmsKKzI4Njg2IGZjMmI3MzgwMmY3YjlkOTcxZDg1ZDQ2ZTZmZGJkNWMxNzYxNWQzZjIgbGVnYWN5LXRydW5rCisyODY4NyAxZGQ3ZTUxZmUwYmU3Y2FiNmM5YjhhNDYwYjkxNmU3MDNiMGE4MGZiIGxlZ2FjeS10cnVuaworMjg2ODggNDY5MGNhNzU1YmVjNjM5ZmJiYmNiNmYxYmUyNDNkYjNkZjNjMGM0YiBhc3QtYnJhbmNoCisyODY4OSA2YjBlODQ2YjhkMzdlNTQxNTdhZTc2ZmVlYjliMTBhNDI2ZTg2MjM3IGxlZ2FjeS10cnVuaworMjg2OTAgOWZjYjc3YjA0Zjk3ZmIzMDk3MGFjZTUyN2U4NDQyNzUxYmU0OGZlZCByZWxlYXNlMjItbWFpbnQKKzI4NjkxIDZlYjhkYjUzZjdmY2FjNDgwYTA0MTUzMDVlMTlkMTc0MWU2NDkzNTEgYXN0LWJyYW5jaAorMjg2OTIgZTIwNWM3ZGU1YTVhNDU0YTNjMzcxMTJkMzk3NWI5NmZlOTA4MTMxYyBEU19SUENfQlJBTkNICisyODY5NCAyOTU1OWUyMWNkNTMwNDkzZmI0NWNkYWRmYTkwNWFiMjc1ZTE3NzI3IGxlZ2FjeS10cnVuaworMjg2OTUgMWJkMDg5YjFkYjdmZGFhYzk1YjYwYWQ3NmQzNjk2NmE4MjA4YzE3YSBsZWdhY3ktdHJ1bmsKKzI4Njk2IDNkYjAzYzBkMTUzMTBhYTRjMTc5NzFjMzI2ODk2NDdiMzY4OGEzZTkgbGVnYWN5LXRydW5rCisyODY5NyBlNTdlNGJiNTMyYmFiNDg5MDIxNmY1Zjk2ZjQ1OWFhMTliODlmMDg5IGxlZ2FjeS10cnVuaworMjg2OTggMDRhNTQxZTY4OTY0NDJhNjE2NjZmZjhlY2U4NDdhZmQ0OGVjNGMwMyBsZWdhY3ktdHJ1bmsKKzI4Njk5IGFkNjUyODY5MWMzMDlhYTg3OTJlYWRiNjRlZjBhNmUyMTc1OWY3NGMgbGVnYWN5LXRydW5rCisyODcwMCAwZWM0NzUzY2NiMGZiNjJlMTU0MzRiODQ2MDdlYmVmODRhOGVhZTA1IGxlZ2FjeS10cnVuaworMjg3MDEgNTI3MmI3NjNjMjljOWJhN2Y0ZmMyYjAwOWJiNmZhNTk3MGE3NzQzMiBsZWdhY3ktdHJ1bmsKKzI4NzAyIDYxNThmY2E1YmNiZjIyYTlmNjE4MTVhMmMwMzJmNjdkY2E2NDk4ZWUgbGVnYWN5LXRydW5rCisyODcwMyA0YjYxODUxMjg4MTRjMTQzY2M5MThiMDhiMTk4ZWY2YWE5ZGQ2YzliIGxlZ2FjeS10cnVuaworMjg3MDQgZmRhNDhkZDk0YjA3MDQ5MzFlNTJhZTJkZDdhODZjM2FhMjY0YzNlZCBsZWdhY3ktdHJ1bmsKKzI4NzA1IDczNDI5Y2E3NDhjZWJiYWUyZTQ5ZDlmZTA4ZjllMjk0ZGFkYWNkZWUgbGVnYWN5LXRydW5rCisyODcwNiBlOWE2M2U0ODMxMDljZThjOWI1OTUwZWNhNGNhZTE2ZDIxNmY2NDllIGxlZ2FjeS10cnVuaworMjg3MDcgODVkODFlMDllMmY3ZDc5NTRhMmE0Njg2NWQ2NTRjMTQ1NGVkNTBiNCBsZWdhY3ktdHJ1bmsKKzI4NzA4IDZlYzE1NDY4NDBhZTY2MmZmODVhZjhhMzY5OWQxMDBkOTljYzYxYTYgbGVnYWN5LXRydW5rCisyODcwOSBhMDNmNzc4NjliMmY1NDk2MDJmMWRhZjVmMjk5NzhlZjIzMGJiMTlkIGxlZ2FjeS10cnVuaworMjg3MTEgOTczZjVmZjIwN2NjNThhNWI5NTJkODE5NzkzYzU3ZDMyMDYxZDkzOSBsZWdhY3ktdHJ1bmsKKzI4NzEyIDVlYTgyY2I1NTY4MjNkNWJjOGExMDE3NWE2YjYwNzQ5YWU4MjZiOGEgbGVnYWN5LXRydW5rCisyODcxMyA4NTRkZDc2OTZlYjJiZWFjYTI3Y2Y1NzQ4M2FmYmU4OGM0NzU5MjI0IGxlZ2FjeS10cnVuaworMjg3MTQgNTdkM2I5NjY1MWI2ZWM4NjM1MDg0NzlkNzk4YmM3OTY4ZmU4MGNjNiBsZWdhY3ktdHJ1bmsKKzI4NzE1IDhjZTRiYTg1Mzk2OTE5ZDFmMjRmMjk4ZWQ1MzRhMDBiMWM1ZjkxY2YgbGVnYWN5LXRydW5rCisyODcxNiBjNmRlNjhjYzhlMmJiY2U5NzBjM2QzN2VkNDk0NDk4ZGMyNGRiNDM4IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyODcxNyA5M2UyNTQ1NzdjZmE1MzFiOTg4ZDhmYTI4M2JhNzlhMjBiMDQwZGY3IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyODcxOSA5OGUxMmFhOGM1NDc1ZjU3YjQzMjc5MjFkMGQ0YTk2NWU2OTcyMGVkIGxlZ2FjeS10cnVuaworMjg3MjAgZmIwMGZkOTMxODhhNzY1OWY4M2RhZmNlZGY4ZTFlYjcyZDgzMTFhOCByZWxlYXNlMjItbWFpbnQKKzI4NzIxIGM3NzI2NDBkNTM1ZTA0NDE4YTc0ZmVkMjM5MjRiZjQxZTI0ODE0NDYgcmVsZWFzZTIxLW1haW50CisyODcyMiA2YzIxZTk1YTQ4ODE3NzU2ZDZhZDBlMTcxOWE5ZDlkMDliZWVlMDYxIGxlZ2FjeS10cnVuaworMjg3MjMgOWI4OTI0YmQ1YjVjY2RkZDE0YTY2Y2UxMzcwZGNiNGJiNDJkNTkxMiBsZWdhY3ktdHJ1bmsKKzI4NzI0IGYzZDg4ZWUwNTkyOGQ1MDYxYzBkZjQxNDdhZjQ3NmU2MjAyODgwNDcgbGVnYWN5LXRydW5rCisyODcyNSA0NjkyYzQ4N2VlOTExZWFjNThkY2FjNWViNTBiNjIzNzkzNTUyZWRkIGxlZ2FjeS10cnVuaworMjg3MjYgMWJiZjhlNTVhOGJiOWIwZWU0NDVjOTQ5Y2E2YTcwODU2ZWNhMDUwZiBsZWdhY3ktdHJ1bmsKKzI4NzI3IGFlYzBmOTQ0ZjZhMDE3NjFmMzAzYTQ0MDMxZGI3NGNlNTVjZWQ1N2IgbGVnYWN5LXRydW5rCisyODcyOCA2MDlmM2QzMWQxYzI0YTczMDg4ZjVjMzVmNDdlYzBmN2ZiYzRiZWY5IGxlZ2FjeS10cnVuaworMjg3MjkgY2Q3MGM4ODAzZWI1YzBkMGE0YWJhYjRkMmJmZmNhZmE1YmFlYTExZCBsZWdhY3ktdHJ1bmsKKzI4NzMwIGM5N2E0Y2UzYzU4ZWRhYmU2ODcxODc4ZDcwOWVjMDYwYTVkZjk0ZjkgbGVnYWN5LXRydW5rCisyODczMSA0ZDZmODIwNDIzNGE4ZDY5Y2VkMmEzNWMzMGViYzljZjQxM2ZlZmFkIGxlZ2FjeS10cnVuaworMjg3MzIgYjY0ZmM2YTEwNDllOWI3MTU3ZjlmYzcxZDM5NjQwYTRiNjkyYjEyMSBsZWdhY3ktdHJ1bmsKKzI4NzMzIGM0NTU2NDc2OGY1MjZlZGY5YTZiZTE5MjhjZGRkZjliODhjM2YyMjAgbGVnYWN5LXRydW5rCisyODczNCAwNTVmN2ZhZTgxNTA5MTM0ZmUzOWVjMWFjNmI0MWFmMGZiNzYyOGM2IGxlZ2FjeS10cnVuaworMjg3MzUgNzUyZjY4OTVjYzYzMGE4ZmY0ZGI3YWZiMDgzODdjYzk1OGQzMWEzOCBsZWdhY3ktdHJ1bmsKKzI4NzM2IGY1ZWMwOGQ0NTg1OTI4NzRjNDlkZWMyODMxYjc1YzYzOTMxYzlhODcgbGVnYWN5LXRydW5rCisyODczNyBkYTRlNWU0NmFlM2ZiOWVkNjk4MWJiMDhhYmU1ZDFjM2E2NjFlMzFmIGxlZ2FjeS10cnVuaworMjg3MzggNjc3NzgxMTk2MTUyNjA3N2ZhOGRiZTc5OTQyNTdhMmMyZmMwNzA5NiBsZWdhY3ktdHJ1bmsKKzI4NzM5IDYxYzI1MDZlYzJlOGVhNGQwY2Y5ZDUzNTU0YTI0YzJmYzRhYTgzZjUgbGVnYWN5LXRydW5rCisyODc0MCBkYmY5MmM1NWZiYjhiNzg5MjJjNjQxYjZlM2U1ZTIxMGQ1NDk4MDQ4IGxlZ2FjeS10cnVuaworMjg3NDEgNDAxNDliNTAwMjBjYmI2ODZlYzc3ODQ1NThmNzNmZjUyZjY4YzBlOCBsZWdhY3ktdHJ1bmsKKzI4NzQyIDFiMGVhNDcyNzljNjhhZDhmNDBkNDBmYTIzNTEzNWE1ZTJiMWExODcgbGVnYWN5LXRydW5rCisyODc0MyA3YmUyNjU0NGJlNGUzNWU0ZmU1YmM3ZTdkNTQxZGI2MDNlNmY0NjdhIGxlZ2FjeS10cnVuaworMjg3NDQgYzY3MDk0NWM4Njk1MjI4ODljMjA1ODk4YzM2MGJmMDE2ZWI4YjU3ZCBsZWdhY3ktdHJ1bmsKKzI4NzQ1IDIyZDE5ODkxMGIyMDhhNjA2NzQyNjZjYzIxMjY3NWFiMTAwNjQ0NDcgbGVnYWN5LXRydW5rCisyODc0NiAxYzdlZTIzZGM0OWUxNjk4YWU3OTUwNWM3NjBjNWQzOTJjOWJlMmI2IGxlZ2FjeS10cnVuaworMjg3NDcgZWZlNjM5MTUxYmZlYzViZTIxYWY1MjEwNjI5MTAzOTM5NTEwMWNjMiBsZWdhY3ktdHJ1bmsKKzI4NzQ4IGViMjhkY2RkZDM0ZGJiYzI2ZTdlMjBmOTY1MWJiYWEwNDU1Y2NmNTEgbGVnYWN5LXRydW5rCisyODc0OSBkZjAzZmNjNjYxMDQzNjE4Mzg3MzUzNTMwMTRjMzExNmJiMzJkYzdjIGxlZ2FjeS10cnVuaworMjg3NTAgNzE3NzliODM5ZTA5ODc0ZDliYTQ5Mzk3NzVhMDAzMTVhZjVlYjJhNyBsZWdhY3ktdHJ1bmsKKzI4NzUxIDAzOTljOGFlYTdiMjg2MWQxN2Q4MmYxYjk5Y2Y3OWIzNzk2OTMxOTEgbGVnYWN5LXRydW5rCisyODc1MiBiZDY1MTBjNWNhYmM0N2Q5NWY1ZjZmZjA5NDNjY2I3MTUzMGYyYjk0IGxlZ2FjeS10cnVuaworMjg3NTMgNDY4YzNiZTZjM2UyY2QxMjQ4OWFlYmQxMjY3N2E1MzMwMDA1OTc1MiBsZWdhY3ktdHJ1bmsKKzI4NzU0IGFiYjc2OGI0MTdhMTMzMGQ2ZjQzZWRkNjg0NjdiOGY1Y2JkOTU0MzAgbGVnYWN5LXRydW5rCisyODc1NSA4NmZmOTViMWM2MzZkNWUxNTllMGI0NThmOWZhNmMzMDBiNmFlMWIxIGxlZ2FjeS10cnVuaworMjg3NTYgZWI3YjdiNzE5ZWU1NjQ5ZGU5MzY0NGU1MjJjMzVkODdkMzcxZjM4MyBsZWdhY3ktdHJ1bmsKKzI4NzU3IGJkM2I5MmRjOTQwYTY0OWVjN2VmMGQyZDFhMTY2Yjc2NTg0Y2YzY2IgbGVnYWN5LXRydW5rCisyODc1OCA4ZWRhMTY2YjEwNGVjYTkwNGRhMmQ4NjExMzlhNzllNzYwMThhYzdlIGxlZ2FjeS10cnVuaworMjg3NTkgOTJhM2Q4OTdlODE5M2VkMjM4ZDM0ZjE2NjcwMDIxOGI2NGY1MzRlMCBsZWdhY3ktdHJ1bmsKKzI4NzYwIDUzZTJjNDQ4YjE2OWEzMjc1MjQwMWFhNmQ4MWIxMzNlNGFiM2M2OGUgbGVnYWN5LXRydW5rCisyODc2MSBiOTY4ZjAzODIzNWVhMWE1NTEzNGU4MTc3Y2NjYTFlOTQzYTZiYTdhIGxlZ2FjeS10cnVuaworMjg3NjIgZGYwZmY1YjE3ZTFhYTE1ZGRiOWQ4MDc2YTAzMDVkZDMxMmQyYmRlMyBsZWdhY3ktdHJ1bmsKKzI4NzYzIGU5ZTc0Y2M1NTQwYWQ4YmEwZjFiM2RlMjhhYzI4NTlmOGFiZjE4MDMgbGVnYWN5LXRydW5rCisyODc2NCBiZGMzZGVmM2QwODVkZGFkMWZiOGE5ZTNiOTgyY2M1ZTg4ZWUwZGYyIGxlZ2FjeS10cnVuaworMjg3NjUgODIzZjAyYTIyMjEwZDhhNmE0YWRhNzQyNzA0MGVlZjczZGUxMmNjZSBsZWdhY3ktdHJ1bmsKKzI4NzY2IDE0YWQ1NjBmNGE5N2Y4MWI2OWY1ZmQ2YTlkNjY3NWNiYTE5YmJlMDEgbGVnYWN5LXRydW5rCisyODc2NyBmMTc1ODI3Mjc2NGM3MGM1MjkzMDUwMDIwZDBiYzA5MWM0YjhkOTM5IGxlZ2FjeS10cnVuaworMjg3NjggN2RlODhjZjA3ODNlMmNjM2MyMmQ1NmM3ZGE4ZWJhYjFkYjExZGY2ZCBsZWdhY3ktdHJ1bmsKKzI4NzcwIDljN2EwNmFjOGIyNzcyZTk0MWNkNDJmMGYwNTAzYmQ0MzlhYTgwN2QgbGVnYWN5LXRydW5rCisyODc3MSAyNGU3ODliNmNjYjY0MTZkMDQzZjY0YzlhZjJlMjQ5ODJjNTU1NzgzIGxlZ2FjeS10cnVuaworMjg3NzIgNmI2MmFiODQ4NWViODE5NjQ3Y2M0NzE2YjViNTQxOWU3NmZlNjRlYiBsZWdhY3ktdHJ1bmsKKzI4NzczIDA3MzkwNDZhMGMzYTUxNDgzNGRmYjJhYjkyN2I1MzRiNTkyMjQzZTAgbGVnYWN5LXRydW5rCisyODc3NCAzMzdmY2MyNDk4NWIzNDRhYjZiODgzOGMzN2RlNTg4ZGFlNDM2ZDE5IGxlZ2FjeS10cnVuaworMjg3NzUgYTNiMjk1OTE4YzVmZDVhNTNjZjEwYWM2MjRkNmIyMGFhN2JkMjE3OSBsZWdhY3ktdHJ1bmsKKzI4Nzc2IDMzYjI0OWFmNDM2NGRjODRiOGFlMjFjZjU0NDRlNmU3ZmU0YWRlMzAgbGVnYWN5LXRydW5rCisyODc3NyA5Yzk1NGU2NGQxN2E5NGEwYjE0MzBlZGFhNTY4Y2IwZDliYTU3ZGI2IGxlZ2FjeS10cnVuaworMjg3NzggYTMwMjMwODgxOWYwNWRhODc5MTc3MzU5ZmNkZmZmZGQ3ZTgxNzE5MyBsZWdhY3ktdHJ1bmsKKzI4Nzc5IDJmNDRhOTBmZmYwNzdlZWFmYjdjMmM5NjI5YTJmNDY4ZjgwMzY5MWEgbGVnYWN5LXRydW5rCisyODc4MCAyYWUyYTIwM2Y0N2FjMmE2ZWE1OWY1MjBiYTk4Nzg4ZDQ3YzE4OThmIGxlZ2FjeS10cnVuaworMjg3ODEgOWY2MTcxMDYyOGM0ZjI5NWJiNTE2ZDUzM2MxZGVkNDkwYTI0YTlhZSBsZWdhY3ktdHJ1bmsKKzI4NzgyIDJjM2I1Mzk3YzNmOWVjMTE2ODk2YWI4ZjBiZTJlZWY0N2VkNzA1MTIgbGVnYWN5LXRydW5rCisyODc4MyBiZDI0YzI1OThhNDI5ZDc2ZjE1MTBiODc5MGVjY2MwNzdmYjc5YmQ4IHJlbGVhc2UyMi1tYWludAorMjg3ODQgYjUyOWFjMmY5YWI2NGI5MGJkMDE1M2FkYjkzMjg0ZTkxYjdlNWY5YyBsZWdhY3ktdHJ1bmsKKzI4Nzg1IDQ5YTNlYmU5ZGYxNDc2NjU1M2ExMTFlN2Y0NWRhMzFhM2U5NzVhYmYgcmVsZWFzZTIyLW1haW50CisyODc4NiA2ZWE4OTg3Yzc0NmZiNTVlNzY5NDBlOTFlMGM3Mzc1MmRlMTc2M2Q1IHJlbGVhc2UyMi1tYWludAorMjg3ODcgMjdmZjY5NGM4YzA1MGI0NWYxYTk3Yzk5NDAzN2JkODVjY2ZhODE3OCBsZWdhY3ktdHJ1bmsKKzI4Nzg4IDNhZWNhNmM1MGYzODAwY2FlOGI1MjllYmZmOGFjZWZlNmMzMTg0MDcgcmVsZWFzZTIyLW1haW50CisyODc4OSA4MDI1ODNmODhhZTBkODI1OTI5ZmZkMWE1YTAxY2JmYjNmMzhjYTI5IGxlZ2FjeS10cnVuaworMjg3OTAgYzhjYjg5NzkwNjJjZTdkNjE2YjQ2MWEwNTFiZDkyNWNjYWM5NTNlYiBsZWdhY3ktdHJ1bmsKKzI4NzkxIDBlYjg4MjA2OGE3Y2VlMzZiZjFjOTI5YjIwMzY5Njk0ZjlhMGEwM2YgbGVnYWN5LXRydW5rCisyODc5MiA4NjYyMGFmYjIyMTI0YmRiMTVkODhhMGE0YjY0MWNhMDNkYjgyZjk1IGxlZ2FjeS10cnVuaworMjg3OTMgNmRlYzc0ZjQ0MjQyMDlkZjNhODk1OWE5MGQ4MDFmZjJkZTk1MTQ0ZSBsZWdhY3ktdHJ1bmsKKzI4Nzk0IDM3ZmM2YTgzYTEzNGVhNzJkOTVkNjA0YTY0MGY0ODQ4MWNkNDBjMDggcmVsZWFzZTIyLW1haW50CisyODc5NSA1ODZmYTI0NDU5ODI0NzMyYjQ1Y2RjYWQ0OTg0MWI0M2JlNWY2MTFkIHJlbGVhc2UyMi1tYWludAorMjg3OTYgYzQzYzQyODM5MDExOGUxNTQzOGNkMjBjMTI5MzdhY2E1YzRmZjcxNyByZWxlYXNlMjItbWFpbnQKKzI4Nzk3IGU3ZGIxYzlhMTBmY2I4NzExMjI4NmY4ZWFhODYwMDMxZTAxNjhiOGQgcmVsZWFzZTIyLW1haW50CisyODc5OCAwMzNhZGNiYjRjYjJhNzQ0YTliMzQyNTc0YWE1ZmE1Y2Q2NWU5NTM5IGxlZ2FjeS10cnVuaworMjg3OTkgMmJhODBhNDMxMmZmNTAyMDdiNTIzYjc3NjU1OWZiNzUzM2JlZTM4ZSByZWxlYXNlMjItbWFpbnQKKzI4ODAwIDg1YWI0NjUwZGZhYTZhNDMxMmZjN2M1OTY4OWJmZmIyMWI4MzU1ZDggcmVsZWFzZTIyLW1haW50CisyODgwMSA5NmUyZWZmZWM5NGQxYmVhNTkwYTYzNzA0NDc2OWY3ZTVkOTdmNjJhIHJlbGVhc2UyMi1tYWludAorMjg4MDIgOTg4ZjQyNWQxNzY2NWU3ZGNjZTUwMjBmYjk0MjE1ODE3ZDQzOTk4MSByZWxlYXNlMjItbWFpbnQKKzI4ODAzIDQ2MTcwZTU2MGUwMWUxOGM3ZDJhODM5MzRkMDE1Zjg3OTFkNmEyNDkgcmVsZWFzZTIyLW1haW50CisyODgwNCAxZjllOTc5ODMwMmJmZmMwYjE3MWI4YWFiODQwMTI4NzdhY2IxZGNhIHJlbGVhc2UyMi1tYWludAorMjg4MDUgMGZiYjc2YjUwNzRiN2U5MWZmNGNjZGIyYjRkMzUwZWJmZTE1MmE5YSByZWxlYXNlMjItbWFpbnQKKzI4ODA2IDNmNTA0MTI5NTQ0OGM4NmJlNWI5YjA2NzhjODg5ODMzZjUyZWI3YWIgcmVsZWFzZTIyLW1haW50CisyODgwNyA1MjU1YjQ1ZmRkYzI1OWFiNzhiMWQ4MmQ5ZGZmZjkyM2RhZjI3M2ZmIGxlZ2FjeS10cnVuaworMjg4MDggZjNjM2U3MzJkMTJlNjk0YmUxY2NmNDUwMmJlM2MzNzc3ZGVjZmJlMSBsZWdhY3ktdHJ1bmsKKzI4ODA5IDUyNDIwZmU2N2M5NjkwMDQ3ZGEzYzgwOTc5MTE4MjVlZTM0NWFlM2YgbGVnYWN5LXRydW5rCisyODgxMCBjNjMxMjM2MGM4NjE3MWZkY2E5ZWQyMjdkMGVmMDczNjE3N2Y4OTZjIHJlbGVhc2UyMi1tYWludAorMjg4MTEgMzdkODhiNDJlZDExYThhMDkyMzc5ZGM4YzMyZjZlMjdmMTZhMjYxZiByZWxlYXNlMjItbWFpbnQKKzI4ODEyIDY1MTM0NjZiYjc3NDdhMDczNGY5ZmZjN2EyNzVjYjJiODY2N2VhYWIgcmVsZWFzZTIyLW1haW50CisyODgxMyAwYjY4ZDgxMGE4YmVjZjJiODc3OThjNDIwMTQ0NjNkOTNjYWQ3MzJiIHJlbGVhc2UyMi1tYWludAorMjg4MTQgOWRkMjFjMWZhZDlhNDAwNzAzMDA5MTE0ZDA5NzhkOThhMjY3ZGY5ZCByZWxlYXNlMjItbWFpbnQKKzI4ODE1IDc4NmUwZTlhNWY3ZjkyODI3ZTJkNTdkY2UxZWViMGMxYWE4NTc5MDAgcmVsZWFzZTIyLW1haW50CisyODgxNiAxMTZiMDg1OGQ0YjBiZGIwMjQ0ZGY0ZGEzMmExMTMzODNhMjFmZDdkIHJlbGVhc2UyMi1tYWludAorMjg4MTcgNjUxYWJjZjYzZmUxM2QzZTI2ZjA4ODM4ODcwY2MxNjA4MjA4NjBhMiByZWxlYXNlMjItbWFpbnQKKzI4ODE4IDJiZmU0NGM0ZGFjYmYzNzhkNDI4NTk2NmUwMDJmYzc4ZGYyZDlhMjIgcmVsZWFzZTIyLW1haW50CisyODgxOSBjYWEzYTJmYzZhMjA4NjU5ZGIxNTgyMDM4MTQxODRhN2ViNjU2YWNlIGxlZ2FjeS10cnVuaworMjg4MjAgYzA2NmRjM2VhMTUyMTY5OGU2YzBjYmJhNDM1ZGFjY2U1ZGE2OTM0NSByZWxlYXNlMjItbWFpbnQKKzI4ODIxIGU4NGQzMjRhYzY2YTQ4ODY1YzQ4ZmMyMmY4NzhiODk3OWU0MWJiYjEgcmVsZWFzZTIyLW1haW50CisyODgyMiA0ZGYwZTY5MWY0ZGFlODZiMDdjZWVkMjUzMzhmZmYxZjU4Y2JkZDEzIGxlZ2FjeS10cnVuaworMjg4MjMgMmRjYmJiYjAwN2MyYWI3N2MwZGVlOTlhZDU5ZjZjMGNiYTQ5MTRiMSByZWxlYXNlMjItbWFpbnQKKzI4ODI0IDRkMTBjMzE3OWVhZDBmNTYyODEzNjA1ZWMzYjMyOGE3ZjM3NjNiZGYgcmVsZWFzZTIyLW1haW50CisyODgyNSBmYmM4MjBkNzAxYmNhOThjYmM0MDRmZmZhYTUwNDkzYjgzMzE3NWQ4IHJlbGVhc2UyMi1tYWludAorMjg4MjYgNWU0ZThjMWFiNzA0MDAxMzEyZTA3OTIxYTBhMGY0MTM3YjI2MDEzNiByZWxlYXNlMjItbWFpbnQKKzI4ODI3IDRkZjgwN2FkZmY4NzNkNTBiMTNhYTNjOWJlMzdiNDgwYmE1YzYxYzkgcmVsZWFzZTIyLW1haW50CisyODgyOCAxMDc2N2E4YzJlMmQ2NWNkOWUzNWIyMWIwMjQxOWZhMzFlMTU1MDk0IHJlbGVhc2UyMi1tYWludAorMjg4MjkgMGM0NGZhMDRmNTMzNWVmZGQ4ZTMzMDJmOGZkMWVhM2I0MmFkMjQzMCByZWxlYXNlMjItbWFpbnQKKzI4ODMwIGU1Mzc4N2IxYWQ4NTgxODA2YzI1ZWE2YWM0YWI4OThhMTAwODI4ODAgcmVsZWFzZTIyLW1haW50CisyODgzMSA3MjVmODc1OTdhZDllMjdjYzQ3OGIxZWUyNTFkNjhhMzQwZDdmODVjIHJlbGVhc2UyMi1tYWludAorMjg4MzIgZTg4OTFlNjk1MmViNjAxNWNjMDYwMDhmZGM3YjcwN2U3ZmM2ODZiNyByZWxlYXNlMjItbWFpbnQKKzI4ODMzIDQ2MmMzNWI5YWMxZmE0YTQ2MjVjMDFlN2E5M2M4NjZhNDNhMDQzNjIgcmVsZWFzZTIyLW1haW50CisyODgzNCA4MGNlMzg0ZDQwOGE2ZjllOTQ2ZTM5YjI5MTVlYTEzN2Q1Y2FjYTc5IHJlbGVhc2UyMi1tYWludAorMjg4MzUgOTExMTA3ODI5OTAzYjhhZTMwYjcyMzA3ZDU5Mzg0MTdhNWRhOTYyNyBsZWdhY3ktdHJ1bmsKKzI4ODM2IGU1ZTA1N2E2ZDI4MWYzMTVmZDJhNzA5NDYxZDJlMWE2ZjBmY2MwM2QgcmVsZWFzZTIyLW1haW50CisyODgzNyBkZTIxZTkzYmFkZjYzNjU4MzNjNmY3OTNlYTRlNmJhODAyNmNmMWY5IHJlbGVhc2UyMi1tYWludAorMjg4MzggNzkyOWQ3NTY2YTk0Mjg5MTk3ODAxNDlhOWJmNDhhNjU2NzI5YmNmYSByZWxlYXNlMjItbWFpbnQKKzI4ODM5IGJiMjAzM2M4YjkyZmRkYzQxOWUzZjE5YjI3ZDA4NmQ3YzRjZWM2NGUgcmVsZWFzZTIyLW1haW50CisyODg0MCBmNTU5ZTk3YTQxYmU0ZDBiNDZkOTdhZjFlNzU4ZWNmNDY2Y2Q5NGUyIGxlZ2FjeS10cnVuaworMjg4NDEgMzBiZjU1NDkxZTc5ZWRkOTY5OGFkMzhjOWE0M2IyNWYxNTgyNzE2YyByZWxlYXNlMjItbWFpbnQKKzI4ODQyIDljYTYwOWY4YmRmMjI2MTdjNDc4NmNkZTczMzA2M2MwYmE3YjZiMTkgbGVnYWN5LXRydW5rCisyODg0MyA4OGQwZjZkNmIwM2VjMWJhNTlmMGIyMDMxNDNjYTRkNTJlMWVlMWRhIHJlbGVhc2UyMi1tYWludAorMjg4NDQgYjQ2YzdkYTA2NDEwZTcxZjk3YzQ5NzczYTJkZTdmMzM3NzA3ZjQ1NCByZWxlYXNlMjItbWFpbnQKKzI4ODQ1IGRjMzE2NjhhN2MwOWRjYmIxNTcyNzkzZGUzY2NhZjBlOTI3YjNkZmMgbGVnYWN5LXRydW5rCisyODg0NiA5NzQyNGI5OWRmOTFjNThmMjE1MTYzNTAxNzEyMzI1MjEyMGMxNzI5IGxlZ2FjeS10cnVuaworMjg4NDcgZDRmZjk4NDE0MTdhZTA2ZjI1MmYzOWVlMzI2Y2ZmMzhjYjM5ODc1ZiBsZWdhY3ktdHJ1bmsKKzI4ODQ4IDAyMjZmMTY1NmQ4MTUxZjc4YWZkOTM0OGI4ZmY2NzIyNGE4ZjNkMWMgcmVsZWFzZTIyLW1haW50CisyODg0OSA3MTAzNTQ4MzNiZDE5ODA5OGY1NjZhZTQ1MGZlNGQ4NTE5OWYwMGIzIHJlbGVhc2UyMi1tYWludAorMjg4NTAgNTFjZGY0NzBmOTc0NDA5ZjViMDE3YmJmMWU2YWQzYjQyY2MyMGYyZSByZWxlYXNlMjItbWFpbnQKKzI4ODUxIDc1YzRhNjdkY2I4YzM2MDMyMWFiYjUxZmM2YjQyODUwYzk5ZjYyODggbGVnYWN5LXRydW5rCisyODg1MiA0MTBmNmVhYmJjMGI4ODQ0YTBhMWYyMGZmNGMxY2NhYWE4ZDg3OTA2IHJlbGVhc2UyMi1tYWludAorMjg4NTMgNmZjMGI3MTZjMDM4OWEwOGQzNzFlMjQyZjA5NDQ3YzRiMTkyZDY2NiByZWxlYXNlMjItbWFpbnQKKzI4ODU0IDQwODAxZGY4NTkxMjFhNGU2MGEwOTc4ZjY0MTgyNDc0NmRjODhiZWUgcmVsZWFzZTIyLW1haW50CisyODg1NSBiNDhhMjM2YjhjN2I3N2Q4MTBiYTgwNWI0NjRiMzRiYjQ5M2MyMGNmIGxlZ2FjeS10cnVuaworMjg4NTYgZDkzNWExZDcwMjMwYjkxOGZlNjJlOWYwODg4ODUyMjUxOTFiZGI0MSBsZWdhY3ktdHJ1bmsKKzI4ODU3IDRkN2U5ZTQwZDNlNGFjOTgyNzFmZDJmNGZlNmQyMzBjMjZkZTJiNWIgcmVsZWFzZTIyLW1haW50CisyODg1OCBkMmRiZWExN2ZjNmZlOGMwZDA2OTgzZjlkMTk1NjQwNGIxMTYyODA3IGxlZ2FjeS10cnVuaworMjg4NTkgOTQzMTVhOTdiMzllNjZlY2M1YzE1MDJlNTM0MThkMmRlZWVjNzYxYSByZWxlYXNlMjItbWFpbnQKKzI4ODYwIDdkMGM0ZDdlMGE4YzcxOTFkMmI4OThlNjZkYzcwY2VhNzJmMTRjNjYgcmVsZWFzZTIyLW1haW50CisyODg2MSA0NWEyMTRmMWJmMGI0NTRhZmY5M2M4NzcwOWFhMjEwNWM5OTZkYzM3IHJlbGVhc2UyMi1tYWludAorMjg4NjIgODMyMDg0YTMwMjgwOTZjMzdlMGVlZjc4ZjVmMmE5YTU5MWZjODdmNSBsZWdhY3ktdHJ1bmsKKzI4ODYzIDA0ODk2OGNhMjY2OGQ0MjM1MjI1MDUyMGI1ZDdkNTc3YTdiY2MyZmMgcmVsZWFzZTIyLW1haW50CisyODg2NCAyNTNlMzk3ZGY2N2IxZTM3NDNmOTFjZTY5M2Y0MDdlYTMwNDhkZWIyIGxlZ2FjeS10cnVuaworMjg4NjUgMGEwOTVhMjU3NDI0NTAwMzkyZGNkY2FmNzRlM2Y3NmZmYzgwMDIxMSByZWxlYXNlMjItbWFpbnQKKzI4ODY2IDE4NDllMjM1NTJkZmJjMWUxNmE5YzM4ZmVlZjk0YzBkZmU0NmRhNmIgbGVnYWN5LXRydW5rCisyODg2NyA1NmNiOTJkYmJhYWZjMDViZGVlYzEwMzQzNTNkYjM2ZTYxODk0YmQwIGxlZ2FjeS10cnVuaworMjg4NjggYWEzMDQ4ZWJkMTlhMGE1YTZkODQ5MDhmM2ExODQ0MzM2YmFjOGY2NyByZWxlYXNlMjItbWFpbnQKKzI4ODY5IGY3NDlkNTBkY2NkYzVlYmZlNTA0OWE5MmE0MTNiNWMzN2VmYmYwZjAgcmVsZWFzZTIyLW1haW50CisyODg3MCA5MWI0ZjdhYmViYThkNTUyY2IyMmI5YjBmZTBhZWI0ZGVlNWI1ZGFhIHJlbGVhc2UyMi1tYWludAorMjg4NzEgZmIwZjdjYzVhNjlmNmJmNGE1NmZhODk3Y2Q4M2EyYmEwMzgwZmMwMiBsZWdhY3ktdHJ1bmsKKzI4ODcyIDYyMzdiZTI3YTU5NzM1YmY2ZTcwMjE2ZTBlOTRmYmNhYzc0NjdiMTQgbGVnYWN5LXRydW5rCisyODg3MyA1NTRmOTc1MDczYTAzODBlZjcxODk1YzZiYThiOGQ3ZDMyMDJiNTljIHJlbGVhc2UyMi1tYWludAorMjg4NzQgMjlmNjE2MGVjMGJkOTNjODA5YTQzNGVjMjI0YmQzZjEzYzQyMGJmYyBsZWdhY3ktdHJ1bmsKKzI4ODc1IGZlNjIxMWJmOTBiYjhmNTQ5OGQ2OTZlMjcyMDFmZDlkYmI0ZDg1NjAgcmVsZWFzZTIyLW1haW50CisyODg3NiBjNmYzMDcyZDU5NWQ1NGY1MTMxMjc2YWNkNjg2YTkzNjA5ZWVmNThkIGxlZ2FjeS10cnVuaworMjg4NzcgZWIyNTJiMzc0ZWNmYzg1ZTZiNzcyZWRlYjI1ODkxODJiYmY3ZmZhMCByZWxlYXNlMjItbWFpbnQKKzI4ODc4IDFmOWIzY2I2NmUwOThlMDNjNGRhYTIyZmViZjg3ZTVlOWFkM2M3Y2MgbGVnYWN5LXRydW5rCisyODg3OSAxMTA4OGM1MzQ2N2ExNzY4ZDZhYjliNDQ2ZDIyODgzZWFhOTc5NWMxIHJlbGVhc2UyMi1tYWludAorMjg4ODAgNzJkNTZiNDQ2MGNiOWRmM2NhNTE5ZDc1MTMxMDBhY2NiNGJlZTRhZiBsZWdhY3ktdHJ1bmsKKzI4ODgxIGI2MjUxNGMyMTc2MjllMjAzZTQzYTZjZTZmYjNlMmJlM2JlZGYzZWIgbGVnYWN5LXRydW5rCisyODg4MiAzYzNiODk0NmRjNjNjNWRiNjkyOGE1Y2M3NjcxMDViNzBiOTIyNDgzIGxlZ2FjeS10cnVuaworMjg4ODMgMGM3Nzk0OTJjZDgwNzc4ODlmOTM1NzFmMmRlOWRjNmE3Y2ZkNjQwMCByZWxlYXNlMjItbWFpbnQKKzI4ODg0IDg1NDUzNGM2MDdhMTZjZDRkZmE5NDA1YjUzNjAzMzAxNjlhZjdkZjIgbGVnYWN5LXRydW5rCisyODg4NSBkZmI3NGQ2MTE4M2Q3Mzc4OTAyMDlmYzNkYWMwNTZkNTkxNTg0ZDNlIHJlbGVhc2UyMi1tYWludAorMjg4ODYgY2Q4MzdlY2IxZDcwOTUzZTVhNWFhODY4YWVjYjI5OGRlOWEwZmY0ZiByZWxlYXNlMjItbWFpbnQKKzI4ODg3IGJkZTBkMjYyNmIyMDVkY2IzODY1MWE0OGZlMjk5MmY5OTY4YmY2ZDMgcmVsZWFzZTIyLW1haW50CisyODg4OCBkMzI1ODhjODg2MzMyOTQ2OGNjNGY2ZDk5NzU4Y2JkNWU5OTAzYzQ0IGxlZ2FjeS10cnVuaworMjg4ODkgODk4MzA0ZjZkYTIzYjVjOTcxNWM1YzBmYmNhNjdhMDA1MTUxZjg5YiByZWxlYXNlMjItbWFpbnQKKzI4ODkwIGI2MTEyMzI3MTI0YjQ2YTI3NDFlZTA1ZWY1ZDQ2Njk0ZmU3MWI4YjQgbGVnYWN5LXRydW5rCisyODg5MSBhYTMxYzY4ZGE4NGRmNmYyOGQ3N2VkZWY4YjJlN2Q2NzRkNTY3YzZkIHJlbGVhc2UyMi1tYWludAorMjg4OTIgZGI1ZjFkYjdiMzRlMThjNGJhNmI1N2Y3ZTMwNWY2NzI3ZWYyNGNkOCBsZWdhY3ktdHJ1bmsKKzI4ODkzIDliYTAxMTEzODgzMThhNGMzYmYwYmVmNjg0ZjY1NWFjMDQ4NTA1YTggcmVsZWFzZTIyLW1haW50CisyODg5NCBlOGNkZWE0NGY3YWJjZWM2YTE1ODM2NThkNDIxNTg4MmIxYzc0ZTJmIGxlZ2FjeS10cnVuaworMjg4OTUgNmEyZGY0NGI4YmZkNDk2ZmFlMDc1MWU5YjBmMDNiOWM0NzJjYWVjMCBsZWdhY3ktdHJ1bmsKKzI4ODk2IDdjZDZmNTQ5MDc1OGM2M2I2MTY4MzA3NjlmNWQ2MWM3YjMzOWZiMjMgbGVnYWN5LXRydW5rCisyODg5NyBmODE4MGE3NGIwZmE1YzZlYzc1YjVkNjM0MDJmOGQ3NzU4N2ZmMmJkIHJlbGVhc2UyMi1tYWludAorMjg4OTggMDVmZmUyMDFlOTAyZDgwZjg4NzAzYTAzYTdiMzIyNzdjYjM2ODI5MyByZWxlYXNlMjItbWFpbnQKKzI4ODk5IDJlYjRlZWQ1MzhjNmQzZWZkNWRhMmM1ZjUwMWRmYzFiM2U4MmU4ZGMgbGVnYWN5LXRydW5rCisyODkwMCBkMGFhZDUxOWU3MTMwZGEzZDAxMjJiYzIzZDJiMmI3YzQxOTI1MWQ2IHJlbGVhc2UyMi1tYWludAorMjg5MDEgNGQzNjc4NzJmY2M2NjViZmMyNGZlNmFjMTllOTUzZmZmOTlkY2I2YSBsZWdhY3ktdHJ1bmsKKzI4OTAyIDc2Y2NkNWJmOWZmMjYyOWZlNDNiMTU0NDUyZDYzY2UwNWVjNjUwZDYgcmVsZWFzZTIyLW1haW50CisyODkwMyA0MWViMjRiNzQ3YzAyY2RjZjVhOTAyYjBlYzYwMjhmZTU0ODZkMGQ0IGxlZ2FjeS10cnVuaworMjg5MDQgZGNhZmQ5OWM4NWI2OGE4ODMwNzM5MTI5NDUxMGE4MjhhYjU1ZThhZCBsZWdhY3ktdHJ1bmsKKzI4OTA1IGE3NzI1NGNiZDRmMDZiMWU4MjViOTVhNWFiYjk2MDZkYzU3MjVmNGQgcmVsZWFzZTIyLW1haW50CisyODkwNiBkMDdmOGRiM2RiNDFlNGI5NDk3ODJhNjBjYmQzNzMzMzgxNTM1ZDY2IGxlZ2FjeS10cnVuaworMjg5MDcgYjVhOWFhYzRiMTBmZmY3ODNjOTQ0ZTg4ZTgyM2UwNGVjNzg3MTgyMyBsZWdhY3ktdHJ1bmsKKzI4OTA4IDA5NTUxYzZkYTI5OWY4MThjYjlmZGZmNzFkMmI4NmJjMTg0YmUyYTYgbGVnYWN5LXRydW5rCisyODkwOSAxNmU2NjE5NzA5MzA3MGM4ODc2YjZlZTc5NTk2MGY1MDg1MDI2N2EwIGxlZ2FjeS10cnVuaworMjg5MTAgMWQ5MWVkZmQ3NWYyYjQ1ZDZlNGU4OWMzYWU3ZGZhZTY0ZjEyNzE1NSByZWxlYXNlMjItbWFpbnQKKzI4OTExIDRkYThhNGRlMDdjMjMzZDA3YjNkYzA3ZjAwNDU2MTk0YTJkMzYxZDUgYXN0LWJyYW5jaAorMjg5MTIgMjgzMGY5NjE0Mjk0MDVmY2NhZTc4MTU3NWU3MDkwODAxNjRjODVkYiBhc3QtYnJhbmNoCisyODkxMyBkOGY0OTgwYjk2NWNlYmEwMWE5MjQ4OWEzMmQ5YTIwMjVmOThiOGJiIGFzdC1icmFuY2gKKzI4OTE0IGRmZjQ4YzQxNzk4MDIxNGRlNWI2MTI4M2RhYjZkZjk0MmM3ZGEwZTkgbGVnYWN5LXRydW5rCisyODkxNSA5Njk2MGQ2NzM5ZTA5NzJjOWVmMGZlOWE5YzIzYzkxNTEzODdkMWMzIGxlZ2FjeS10cnVuaworMjg5MTYgMWYyYjFlNjg0ODUwMzZiODM0M2Q4ODY0Yzc5MTViZGIwOGFlNGI0YyBsZWdhY3ktdHJ1bmsKKzI4OTE3IDc4NDNiNTMwMDlkMDY5MjI5ZWM4ZTYzN2FkZTc4YTUzOTQ4YTg4NDQgbGVnYWN5LXRydW5rCisyODkxOCBiNjg2ZGRiMjVjNjliNGI2NjFlZTMwZGQ0N2JmZDk5NjJiZDI0YTZlIGxlZ2FjeS10cnVuaworMjg5MTkgNTVmMDkwYjM4Yjg4ZDM4ZjMzODNmNmRhN2Y5ZGY5YTU5MGYzNWQwYyBsZWdhY3ktdHJ1bmsKKzI4OTIwIDBmYmJlNzliNGVkYjViMGE0ZWJkNTkxM2NkZjQ4YzIyNDVlMmVkZjQgbGVnYWN5LXRydW5rCisyODkyMSAxOGU2NzliZTIxMTkzNjg5YTdkNjMyZjYyYzQyNDk3OTZlZmE4OWIyIGxlZ2FjeS10cnVuaworMjg5MjIgOGE2ZWViMGM3OTM0MTQ0ZTZlNmJlZTc0MTdmNjg3MTgwOGZhNzlmYyBsZWdhY3ktdHJ1bmsKKzI4OTIzIDJhNzYzZTdiN2RlYmQwN2RjYzViZGFjNDc1NjUxM2M0N2UzMzQ4Y2YgbGVnYWN5LXRydW5rCisyODkyNCAyNTY1NGI4MTE2MTZiMGYwNTdhZTkwZWYxYzYzYmY2NzcyNWVkOTA4IGxlZ2FjeS10cnVuaworMjg5MjUgNTdlYzE2NDMxODhjOTAzMWZjYTY1Y2VlYjhhYTUzYTgzN2I5ZGY5ZiBsZWdhY3ktdHJ1bmsKKzI4OTI2IGUyZjY1YTQ5Y2EzNDNlMTkxNWU2ZjY3Mjg3NWYxNGUzNjMxYzMyMTEgbGVnYWN5LXRydW5rCisyODkyNyA3ZDI2OWJjMTI1ODdkZDU3MzczMWUxMjY1YTZjOTkwNzM2ZWNkNzFiIGxlZ2FjeS10cnVuaworMjg5MjggOGM5NTQ4NjMwMWIzZjc0OWM2Y2M1OGM4OWE1MGZmNmM2YTJjYTUxMiBsZWdhY3ktdHJ1bmsKKzI4OTI5IGJiZjhjZjVlZTlmOTQyMjg0ZWI2OTNkYzM5MTA2N2U5ZGIwZjE3NjYgbGVnYWN5LXRydW5rCisyODkzMCA5ZDUwYmM4MzFiY2EwNGM2YjZiOTE2Y2Y0YzNjMzQ4NGFkMjQxZGQyIGxlZ2FjeS10cnVuaworMjg5MzEgMjE0NDRiZGNiMDljMDQ4OTFkMDY4N2VmZTY5YzE5NzM3ZDY3OTI0ZSBsZWdhY3ktdHJ1bmsKKzI4OTMyIDgwZjY3Mzg1ZjU5OWRjMTczM2ExNzlkOTE4NWIyMDk5MTFhY2IyY2IgcmVsZWFzZTIyLW1haW50CisyODkzMyBmYzUzNGQxYzljMjgzOTY3YTFhOTE4NzVjMmRjNWMwNTcxZDlhZDExIHJlbGVhc2UyMi1tYWludAorMjg5MzQgY2FjMWIwMzRiOTAzNzZiYTlkYmNmMzhlZWEwNjgxZDMyMzYwYTRmMSByZWxlYXNlMjItbWFpbnQKKzI4OTM1IGU0NzUyZjMxNjA1M2ZhMzY4YmZhMGM5OGUwMzYwZWYwYzkyOGMzYWEgcmVsZWFzZTIyLW1haW50CisyODkzNiBjZTdiYmYzZDk0OTM1MjEzMjg2MjAxNDAzNjFiMWU4NWQzYjY4NDkxIGxlZ2FjeS10cnVuaworMjg5MzcgODc3YTM5MTRkZjIyNDM4NGM2OTQwN2QwY2FjYjcwNzNiNTZiMWFhOCByZWxlYXNlMjItbWFpbnQKKzI4OTM4IDc2NmJmYzkzZWNiYTY2YjZkNjZkMjY0MzgwODNmOTY3NjRjYTNiN2IgcmVsZWFzZTIyLW1haW50CisyODkzOSA3NWIwOGU2ZTk3YzYwZDZlYjFlZGU3OWZlMTMyN2EyOTk0OWJmMGQ2IHJlbGVhc2UyMi1tYWludAorMjg5NDAgMjBkN2E1NDU1OTA3ODNiNDc3NjM3ZDliNWJhNzMyMDI0ZThkNDhjOCBsZWdhY3ktdHJ1bmsKKzI4OTQxIDZkNTg3MTU0MzBhN2JiODA0NGQ1ZmJjYWQ2ZTM5ZGEyNTM0ZjUzYmMgbGVnYWN5LXRydW5rCisyODk0MiAyYWM3YjA5NjRjN2JhOTc2NzMzOWFjMWEyMGFiZWUyMTRlNzdiMzNkIGxlZ2FjeS10cnVuaworMjg5NDMgNGUwNWFhYjYwYmRmYWE1ZmM3YzRhMTkxMzNmM2ViNDU2ZmM5MmE0MSBsZWdhY3ktdHJ1bmsKKzI4OTQ0IGMzZWVhYWZlNjI2NWUzYjQ1YjQ4YzgwMzk3Zjc4YjkxMGZmMzUxMDYgbGVnYWN5LXRydW5rCisyODk0NSA1ZjVmZDJjNGZjZjIyN2U4YTM3MGFjMTBiMTBhYWU4NzMxZDgyOWY5IHJlbGVhc2UyMi1tYWludAorMjg5NDYgZDBlNTc0MzI2ZDE4YjNiMzhiYWMyZjIzNGFhMjQ0OGJmMzk3YzhiZSByZWxlYXNlMjItbWFpbnQKKzI4OTQ3IGI1MjZlMTJiOTQxYjdmZGI2ZWExMWUzZWEwZGYwNGUyYjAwMjEwZjcgbGVnYWN5LXRydW5rCisyODk0OCBjNTczODQ4Yzc1YzMzMmFiYTliN2MyMDEzOWYyZjZmZTllMWQwM2NmIGxlZ2FjeS10cnVuaworMjg5NDkgMGFhNjRlZWJkNDkzMmNmOWM2NTMxNmQxYWE3MWRiMjM5NGUyODgzNSBsZWdhY3ktdHJ1bmsKKzI4OTUwIGRlYTYxOWI1ODgyZDBjOTY0NWVjZjdmZmIzNTM0NzA0ZmFmNzA4ODEgYXN0LWJyYW5jaAorMjg5NTEgMTk1ODMzYTNmMTBkYWYwZDJiNzIzZDFhOTcyMGY4NjgzODUzMjgyMiBhc3QtYnJhbmNoCisyODk1MiBjNDYyOGQ5YWNjOWExNTcwZDUwNGRhZDhlOTEwNDYyYjVjY2QzYmNjIGxlZ2FjeS10cnVuaworMjg5NTMgZGI5ZmVlMzczYjMwM2IwMGRiOGVjOTlhYWJmNDY4NGMwYjFkMmEwYSBsZWdhY3ktdHJ1bmsKKzI4OTU0IDc0MjlmMjI0NzNjYzdjMDRjNDNkOTYzODYzZmM4N2ZiYWVlOTMzZDkgYXN0LWJyYW5jaAorMjg5NTUgNTZkZDg2YjRjYjg3NzdlMTdmMzU1YjM5MmFjOGEyNDRkZGJlMmJjYyBsZWdhY3ktdHJ1bmsKKzI4OTU2IDJjOThlYjFjMzE2MmQ4ZmRkZDU3MWE4NDljYTE1MGQ0MjlmMmE1MWEgYXN0LWJyYW5jaAorMjg5NTcgMjdmODM1NTE5YTVlN2RlYmU4N2UzNzk2MTlmNWFlNzVlYWEyOWQ3NSBsZWdhY3ktdHJ1bmsKKzI4OTU4IDkxNjc0OTBiMGRlOTRiYzIzMGM1ZGFkZjlkNmU1ZTg3NmIwZTg5OGQgbGVnYWN5LXRydW5rCisyODk1OSAyYmMyZTAyZmQ2ZGQxMmRiNDVlZTI0NGJmMjZkMGQ5NTg3MmJmNWM5IGFzdC1icmFuY2gKKzI4OTYwIDQ1NTc3ZTE4NTZkMGU5Mzg2NDljZmQ0MjRhYWZhNmRhNGI2YjAzNDQgYXN0LWJyYW5jaAorMjg5NjEgN2ZkMmRhMjAxODIzZDFjZTdkZGM1NjA5M2QwMzBiM2JmZWI4ZTFiNCBhc3QtYnJhbmNoCisyODk2MiAyNGM1YTFjODdmM2JmMTIyOWU1MDZmODc1OTNkNGMxYjEzODU1OTU3IGxlZ2FjeS10cnVuaworMjg5NjMgNjY5NGYwY2NmOGVhNGJlNzU2NzRmMTU3MjBiYzM0NjJlNjAwNGY2YSBsZWdhY3ktdHJ1bmsKKzI4OTY0IGJjMDk3ODQ1OWZmYjc4MGNmMzgzNmQ0N2Q3NDRhNWY1ZjYzNzNmOGEgbGVnYWN5LXRydW5rCisyODk2NSBiM2E5OGVlYTM0Yzg0MWMyM2Y4YzczNjRlYWNiZjBiMDRhY2Q1MjIzIGxlZ2FjeS10cnVuaworMjg5NjYgMmQ4MGJmNjVjZDA5NzlkOTAyYTQzN2NhNDJhODdhM2ZiYjU0ZGNmZSBsZWdhY3ktdHJ1bmsKKzI4OTY3IGUxYTczMjg4NWJlMDk2MTU4ZTZmNGY1MGZkODkwZTI0ZDVhOWJjODYgbGVnYWN5LXRydW5rCisyODk2OCBkMWI2YjJjYTlkOWI4NTFkMjM2NDkyMmNjMDBjMzhiZDQ4YzZiZTRkIGxlZ2FjeS10cnVuaworMjg5NjkgZDEyNGZiMDg3Nzc4NTVkZmYyYTc1NzhkMjkxYzg4NjZiZDc2NzRlOSBsZWdhY3ktdHJ1bmsKKzI4OTcwIGJkMDRlMmJkNDM3ZmM1ZDM5ZGQyZTYyNzQwYTM4ZTk3MWViYmQ4MTAgbGVnYWN5LXRydW5rCisyODk3MSA1OWY4MmQ5NjY4MmU5YTgwODVkYzRkZDdlMTBkZjgzMTU2ZjFiZjVjIGxlZ2FjeS10cnVuaworMjg5NzIgMzc3ZDY0Y2I1MzQ3MGIwNjYyOWJlZGRhMTM4MDk0MzU3YjMxNGIzMSBsZWdhY3ktdHJ1bmsKKzI4OTczIGQ3MjJiYjUyMDVhZDcwMjlkZGIxNmY1MDUyYzBjODE1ZmExYmNjYjcgbGVnYWN5LXRydW5rCisyODk3NCA0MDU5NGVmMzRiMzA5YzRlZGUzMTE0Yzg3MGRiZTQyYTEwOTk4NzhlIGxlZ2FjeS10cnVuaworMjg5NzUgYWUyZjIzNDg4MmIyMTY4NjNlMjQ3OTExNTIwNDg0ZWRmYWNiMDFiNSBsZWdhY3ktdHJ1bmsKKzI4OTc2IGEzNjQ3ZDExY2I3MTM0NzkwOWE5NWVkMTBlZTI0ZWNhNDYwODRlNDggbGVnYWN5LXRydW5rCisyODk3NyA1OGJmYTdkZGM5OTlhYzk2NDJlZjhmYTY2ODJiMjY4MTZkZDQzOGEwIGxlZ2FjeS10cnVuaworMjg5NzggYjVkMDVmMTBkMGE1YmMyYzM0ODkxM2YyZmVhYmMxMmQwZTU1NWUwYiBsZWdhY3ktdHJ1bmsKKzI4OTc5IDFlYTZlMzU0NzYxMDM4MGY4ODA2MGUxYzkwMzBlYjhjYjNmNjFjOWEgbGVnYWN5LXRydW5rCisyODk4MCAzMGVlOTlhOGIwYWUzNWE5YjhjYjFmNzMyMmUwYmViYmFkZjYxYzNmIGxlZ2FjeS10cnVuaworMjg5ODEgYzEyYTRmN2EwMGI3NGFmMTlmNTEwYjU2ZTdhYzU0YTY3MGVkNjRiNCBsZWdhY3ktdHJ1bmsKKzI4OTgyIDJlMTQwNzAwZmI2YzBjNTNiYWY0MDExY2ViNmM5NTFhYzM2NTI1NTUgbGVnYWN5LXRydW5rCisyODk4MyBkN2JiYTdlYjBlYWQwYzcxM2YxMjc0ZDVkOGU1ZWRhZTAxODM1ZjYyIGxlZ2FjeS10cnVuaworMjg5ODUgNTQyMDk2OWRkZDcwYmE4NWJiMmFhNDUxZThlNzMxOGUyODM4ODU1ZSBsZWdhY3ktdHJ1bmsKKzI4OTg2IDYzNmMwZjhiMzk4NzkzNjg5NDRiMjdhZDQ0Mzk4OTI4ZDIwMjlhMTEgbGVnYWN5LXRydW5rCisyODk4NyAxOTVkMmYyNTc2ZTQyY2E0ODZkYTNlYzZmYzE0ZjE1NzhhZGJkNGMyIGxlZ2FjeS10cnVuaworMjg5ODggMTE1NzM2ZGRlZDdkMDhjZTQ4YTZhZjVlNTY5YTVjN2Y5YTEzY2I4MSBhc3QtYnJhbmNoCisyODk4OSBiOTIzM2VjZDlkNDE5NDczMjNmNzAxYmMxMGZkMTc3MmU5ZWI3YjVmIGFzdC1icmFuY2gKKzI4OTkwIDcwZDkzYjYyMzcwYjdiYmE5NDk1MmFkMTFiNTZmZGE0OGQxM2Q4YTYgbGVnYWN5LXRydW5rCisyODk5MSBiOTZiODI2NGQ2YWQyZmZkOWUyMTgzZThhZDQ1MDc5OTMxOTY2NjIwIGFzdC1icmFuY2gKKzI4OTkyIDllODE1ZjJjMGU4NGYwMzc0OWY5MjE0NjM4ODJlM2JjNmI5YTE4ZGIgYXN0LWJyYW5jaAorMjg5OTMgMTA5NGM2ZTAzNjVlNWIwNTcwY2E4NTJjMjI5MmU1Y2E3MmZkZWYyOCBhc3QtYnJhbmNoCisyODk5NCBmZTk1Y2ZjNmViYTdkYzM0ZDU1OTVjODcwM2M2NDgxNWM2ZmIyNTAxIGFzdC1icmFuY2gKKzI4OTk1IDhlNGNhYmIyZTAwM2QyOWI5YTlkYzY0YThlMzJlMmQ2YTk4NzE5NDYgcmVsZWFzZTIyLW1haW50CisyODk5NiBjYTAxZjRiODU4NTNlNDRiMzZmNDI0YzEzYTQzNjk0NWRjNjg4OTRkIGxlZ2FjeS10cnVuaworMjg5OTcgNzVlNWEyYTcxNzI5NWFjMjA5ZDQ1MjZiN2U5MDczNzkwZGQyMWEyOSByZWxlYXNlMjItbWFpbnQKKzI4OTk4IDA4MTQ4ZTkxNmQzODUxZjI4YjdlNzk5ZjdlZmVhNWYyNzdiMmU1Y2QgbGVnYWN5LXRydW5rCisyODk5OSA4NjEwNjUyNTY0ODcwYTgzMGI5N2NiNGRjODBlNDBkZWFlYjg2Yzk2IGxlZ2FjeS10cnVuaworMjkwMDAgOTNlZjc0NTU1NWQ3YzBiNTIyNDVjMzJhMGY0NzE2NzJiOGM0NDFhNyBsZWdhY3ktdHJ1bmsKKzI5MDAxIDYxZDYyNGY1YzEwN2E3ZTg3NzM1YzA3OTYzNmIwZTgwM2U4ZWFkZTcgbGVnYWN5LXRydW5rCisyOTAwMiAyYzBlMGYwZGNhNmY1MTJmNDVkZjIyYmI2MjI4YTlhN2NlMjUxNWFiIGxlZ2FjeS10cnVuaworMjkwMDMgNWZlMDdjZDRiMmJmZDcxMTQ1MjE0ODY3MjI3NGM0NzUwNDI1MWRlYiBsZWdhY3ktdHJ1bmsKKzI5MDA0IDJkYzBkYTUzNzJiNDcwMmJlNTVmMjU0MDg4N2RkMjhiMGQxZTFkY2IgcmVsZWFzZTIyLW1haW50CisyOTAwNSA0N2FhOWZjNzRkYThjZjUzMGZhMGM0ZGFmM2E4ZTg1MjZhMjU1YjYxIHJlbGVhc2UyMi1tYWludAorMjkwMDYgOThlNThkM2M1ZmNmYTQ4OWZkY2I0MDc2ODhkMzdjODM2ZTJmZjZiOCBsZWdhY3ktdHJ1bmsKKzI5MDA3IGRmZWVjM2IzNGZhZWMyNDU1ZDQwNTljZWZjNGQzZTQxN2Q2ZTIyNjQgbGVnYWN5LXRydW5rCisyOTAwOCAyZmE1NTlmYjZlYzUyMjk5Yjg3MTcxZTliOGYxZTE0ZGNkODNiODI4IGxlZ2FjeS10cnVuaworMjkwMDkgMzczMWJlMjhlMWEzMjY0Yzg5NGQyYjVhZGNhYmNlZmY4YTI3ZWEzZSBsZWdhY3ktdHJ1bmsKKzI5MDEwIGM3YjlkYTg1OWI1NWY4MzY1MThjYjRhNDEwN2IzMWVlMzdiZjQ4MzcgbGVnYWN5LXRydW5rCisyOTAxMSA2MTgyMmQyYjVlODg2YTc1ZTQ3NTY2NTRlMDk3ZTQyODU0MWUyYmQxIHJlbGVhc2UyMi1tYWludAorMjkwMTIgMGVkODI5NDc1NzE3NDhkMDA2YzdhOWRhZmYwYmYyNzYwNDQzMGY2MSBsZWdhY3ktdHJ1bmsKKzI5MDEzIDBlOTI4ODA3NTM2YzE2YTIxMzM4ZDA0ODc3MzNhNDFlNjM3ZTJlMWIgbGVnYWN5LXRydW5rCisyOTAxNCAxZGE1ZTE3YmZlNjNhMjA4MTM0ZGRkMzgwNTVlNTdlZDU1NjY2MDYxIGxlZ2FjeS10cnVuaworMjkwMTUgNDFlMWQ4YzIyNGRmMmUzYWFlNzgxNTgyOGUxOTI3ZjkwOTk5OGU3MSBsZWdhY3ktdHJ1bmsKKzI5MDE2IDU1NTIzNGQ0ZjBkMDA5MTRjNjhjZmE1ODU3ZTgwZmRhYWY4NjQ3YzAgbGVnYWN5LXRydW5rCisyOTAxNyBmNjFkMWQyYjljZTNiMjJkYTRhNjJiMmRhNGU5NWI5M2U2ZjdkODI5IHJlbGVhc2UyMi1tYWludAorMjkwMTggMzYxMjQxNTdiMzE3YWRiYWI4MzVmYjYzOTgxODhkNmE4OGVlZTBhNCBsZWdhY3ktdHJ1bmsKKzI5MDE5IDQ4ODI5NWQxYmExMWViMjE2NzQ0NGNlYWFlNTQ5MTJjMWViNjY3YzkgcmVsZWFzZTIyLW1haW50CisyOTAyMCA4Y2IwNzQwZGExZmQ1OTkyZWJlYTA3NTdiNWY4Y2NjNGQ1Yzg3NGE4IGxlZ2FjeS10cnVuaworMjkwMjEgZmM3MDI5MDgxMDkzMDY4ZjQ3M2ZiMmFlZjY0MDY2MDFiNjAxZjRhYiBsZWdhY3ktdHJ1bmsKKzI5MDIyIDE0YzRjODMzY2RhOWNhNGU0ZWRkNzFmMWI3YmI2Nzc5ZjlhOTljMWUgcmVsZWFzZTIyLW1haW50CisyOTAyMyAxM2ZiNGQxNmY2MDQyYmFlMDIzMGUwMTc5Njc4MjNmN2QzYzEwNmQ1IHJlbGVhc2UyMi1tYWludAorMjkwMjQgZmIwY2U3N2EzMThhYmQzODQwZTU0MDg2YTJjY2Y4YzI5Mzc1Nzg4ZSByZWxlYXNlMjItbWFpbnQKKzI5MDI1IDA3MDVjYTI5YWI5NjZmZDEzMmM3MDIwNjkwODgxMzAzZTc3MTcxYWEgcmVsZWFzZTIyLW1haW50CisyOTAyNiA0NDQ0N2YzMTVhZTkxMTVkOWQ0ZDFkY2EzNTY1ODMwYzM1OWM3MDhmIHJlbGVhc2UyMi1tYWludAorMjkwMjcgNzc5YmI2ZGRkZTRiOGIyNDI0NjBmNzU2OWVjZjYyNDc4NzM1ZDEyZSBsZWdhY3ktdHJ1bmsKKzI5MDI4IDZkY2QwNjY0YjA5ZTJjZDkyNDU2YzI0ZGQ1MmViMTQxY2M5MDc2ZmYgcmVsZWFzZTIyLW1haW50CisyOTAyOSBkMDcyOGI0YjA3YzMzYjE3ZDZmNDBlYzI3NWUxNTg2NTBiNWIwOTBkIHJlbGVhc2UyMi1tYWludAorMjkwMzAgYjE5OTAyYWQxODVmYmQ4YjM4ZGIyNDQ1ZTMyMWY4NDFhNjRkZDg3NSBsZWdhY3ktdHJ1bmsKKzI5MDMxIGIxMWJjMjE0ZTRmMmY3NmQ5OWZiOTBiMTQ3NTMzMWU4ZGZiNzQ3MTIgbGVnYWN5LXRydW5rCisyOTAzMiBjNDJjOTg4YjJiOTljYTkwYTJmYWM0MDg0ZTY4N2RmNzg5NThmZjk5IHJlbGVhc2UyMi1tYWludAorMjkwMzMgYWFlOGI5NDM4NWQ2YjU4YTliYTUyZGJmMjBiNDI4M2VlMDk0MmU3MSBsZWdhY3ktdHJ1bmsKKzI5MDM0IGRlMzcwZTY1MDNkZjY4YTIzZWE4M2MyN2FiMTAxZDAxY2ZhN2RhYzYgbGVnYWN5LXRydW5rCisyOTAzNSBjODVkN2NkZDk4M2YzMjg1NmIyYTkwMWY0NzQ2YTMzZjRiMDk5MWU3IGxlZ2FjeS10cnVuaworMjkwMzYgNDM2NzFlMDExNmQ1MmYwNTM4MTJjZjAxZTZjNjZhNWZjNDUyOGRkOSBsZWdhY3ktdHJ1bmsKKzI5MDM3IDAyMzFjYzU0Zjg3ZWFjNDg0NGFhNjdmYjhkZjdlNmQyNDA4OTI2N2YgbGVnYWN5LXRydW5rCisyOTAzOCA4MjQxNjJlYjc5NzczNzBmZjAzODU4MGRiMWI1YTljNTRhMjUyZjgyIHJlbGVhc2UyMi1tYWludAorMjkwMzkgYzVhODFjM2JkYWRhYmM1Nzg2MWVkMGQ3N2JkNGM2ZWUwMTk4ZGZkNCByZWxlYXNlMjItbWFpbnQKKzI5MDQwIDQwNWE1YjRmNDUzYmVjNDcwNWUyMWJjOTY1MjIxYzIxYjExODJlYzUgcmVsZWFzZTIyLW1haW50CisyOTA0MSA2Y2NhNjE0YjVlMDMzYTc5NmZlY2NjODNkZmYzMjVhYjIzODlkNDZjIHJlbGVhc2UyMi1tYWludAorMjkwNDIgMTAwZGFhMzYxOThkZDg1OGUzODhiZjU0MzIzZTQyMTNiMjg1NDg0YyByZWxlYXNlMjItbWFpbnQKKzI5MDQzIDgzZjY0YzA0ZjAwMjY5MGYyN2MyYzI0ZDJiMDJiZjNiYTg3NTdkYzkgcmVsZWFzZTIyLW1haW50CisyOTA0NCAzNjc5YzRmYzY4YmMwNDg2NmU5YTYxZWNjNGZjYTM5N2RjNTExYjMxIGxlZ2FjeS10cnVuaworMjkwNDUgMjc2YjZjNDUyOTk5NGNlMzVhYjY2ZGI1Y2E3MjIzYzBiYjg2MmYwYSByZWxlYXNlMjItbWFpbnQKKzI5MDQ2IGQ0OWYxNjRlNmE5NzRkNzRmMGVmZDE2NDM1MTU0MmZjODM5Mzk1NGYgcmVsZWFzZTIyLW1haW50CisyOTA0NyBjMWE2ZjQ0ZTI1MzRkODNiOGZjNGQ4ZjY5ZDkxYjUxMDlhMGYyMWMzIHJlbGVhc2UyMi1tYWludAorMjkwNDggYTUyNjk1YjcxZTdkYWI1Y2JmYzc1MzczNTM2MmFhODEwZDVmMTU0YiByZWxlYXNlMjItbWFpbnQKKzI5MDQ5IGRhZTIyODJiYzc2YjQyNzI3ZDFjZDhmYjMwYjljZDY1YWE2NWRjYmIgcmVsZWFzZTIyLW1haW50CisyOTA1MCBiMjg3YmRhY2RlMzlmYWYzNmMwMjRjYjgzZmU1NzYzNjYyNzM1NWZlIHJlbGVhc2UyMi1tYWludAorMjkwNTEgNjAwMzk5MTczMWE5OTA2YzhjY2M5Mjg0ZTM1NmI1OGE4NTgwMjRjOSByZWxlYXNlMjItbWFpbnQKKzI5MDUyIDIzNDdmOTAxODQzMTUzZDkzNGViZmU0M2IzODhmYjk4M2JlNDVmZmYgcmVsZWFzZTIyLW1haW50CisyOTA1MyA0NDkyZDc3MzI3YzVlZTA5ZjczYzA3YWNmM2E2MzVmNDQ5MGZiZDA0IGxlZ2FjeS10cnVuaworMjkwNTQgMjkxMWViMzc3MjY2ZDk3NWE5ODg5MDE0YTMyNTc1MDE5MDUzZWJlOSByZWxlYXNlMjItbWFpbnQKKzI5MDU1IGIzMjU2NDg3YWVlODg4NjM2NGRmYWYyZjllNzljZjhmOWIwZWIzOTggcmVsZWFzZTIyLW1haW50CisyOTA1NiA3NzQ3NzFjNTBiMTg3Y2Y2MzEwZmY2Y2E1NjUxNTgzYTY5ZTRiZWJjIGxlZ2FjeS10cnVuaworMjkwNTcgMmE5NDJhMWM0MmU4NDlmZGM1NGI3ZjlhZmZmNzFjYjhiMTNjZWMzMyByZWxlYXNlMjItbWFpbnQKKzI5MDU4IGZlZDdjNDFjYWFhZWY1NTMyMWVjMmE2NmEyNDJmYWE0YzQzZWY1OGIgcmVsZWFzZTIyLW1haW50CisyOTA1OSBjNjJmYjYzZGNmZDFiNTNkMTc5MmQ3MDkxNGJkMDJkNzM2ZjE0ODMxIHJlbGVhc2UyMi1tYWludAorMjkwNjAgNmIxZDQ2NDNhMGZkNTBlODA4NDk2ZWNjNWQ5YzM3M2ZmYjZjNTAwNyByZWxlYXNlMjItbWFpbnQKKzI5MDYxIGU4NGUwODM3MmVmYTFlYzUwNTNhYTFhYTgwZTYzMjYwMzQ0Yjk2MjMgcmVsZWFzZTIyLW1haW50CisyOTA2MiA1MjNmZDg5MDM1OTg3OGFkZWJkNWZhN2U0MjQ0MTFkNDkyN2FjZjRhIHJlbGVhc2UyMi1tYWludAorMjkwNjMgMWUzNTlkY2I0ZmIzYjcyMjQ0Zjg3Y2U1MDU5OTJiMmNjMjdhYmY1OCByZWxlYXNlMjItbWFpbnQKKzI5MDY0IDM5MzhlOWEwOTY4OTRjNmM4NjZhZTQ0YzhkNTI2YTE5ZjZkMWVkNzcgcmVsZWFzZTIyLW1haW50CisyOTA2NSA4NmY2NjA2MTAwM2MwNmNiOTc0MzdlMDRmZTMxM2Y3YWRmMGNmOTFlIHJlbGVhc2UyMi1tYWludAorMjkwNjYgYWQzN2I5M2U3YTJlNmYxMzQxMjRkZTAxZDAzNzBkODhmZDRhNzcwMSByZWxlYXNlMjItbWFpbnQKKzI5MDY3IGE2N2I5YTE5NTI2NWI1ZWIwZTQxZGQ0NTQ2ZjRkNTFlMjNhNDk4MDQgcmVsZWFzZTIyLW1haW50CisyOTA2OCBhNmVkYzFiM2ZkNTY2MTZjNDZiMzNmMDU0YTMxZjA0MDgzMDA0YmY4IHJlbGVhc2UyMi1tYWludAorMjkwNjkgYzFmN2FmNDJhN2YxNzY3OTM0YzdhNjlhOTk2NzUzMTMwMzJiYzljMSByZWxlYXNlMjItbWFpbnQKKzI5MDcwIDFiODY5N2Q2MDU2OGM0N2I3NGI0NDA3OTU4MDM0ZmNlZWI0ZDJmYjUgcmVsZWFzZTIyLW1haW50CisyOTA3MSAxZGFlYWJiMzYyNDQzMGVlMjJjNzI0MWY4ODcwOGJjYjQ1NWFiMTYyIGxlZ2FjeS10cnVuaworMjkwNzIgOTc3ZmExMzU5MDZkMWExNGI4NDViOGVmYjhmNDA0NzA4Mzk0NWEwNyByZWxlYXNlMjItbWFpbnQKKzI5MDczIDI4OGMxZmZkNjA2ZWFiYmY1YjRkNWM5MGYzYzk1MzAyNDVmOTNjYjcgcmVsZWFzZTIyLW1haW50CisyOTA3NCBmMzdhMzRjMjU2YzRiMDQzZTMxYTJjYWU1MzEyOWVhNjBmYjA0ODExIHJlbGVhc2UyMi1tYWludAorMjkwNzUgZjk5MDZlNjI2MWM1ZjBkNDcxOGRkMWY3Y2Q2MWI0ZDAxMThkMTM4NCBsZWdhY3ktdHJ1bmsKKzI5MDc2IDNlZWU3MjkzMWQxNzgzZTUwZWE5OTBlMzM4ZjFiMTNkOTNmYTYyODIgbGVnYWN5LXRydW5rCisyOTA3NyBmM2U3MGNjMjY0MjJkMGQxMzk1MTA5ODBiMzVlNTgwMDE1ZjM1Y2JkIHJlbGVhc2UyMi1tYWludAorMjkwNzggYzRjMDkzZTIzYzZkZDFjODA1ODc5NTBmZTc5ZjY2MjEyMGZlMDhkMCByZWxlYXNlMjItbWFpbnQKKzI5MDc5IDM4YTFlNTZiOWJmMzUyNDk1YWEzNGUxNmM5YTA5ODAwZTBkNmVkYzQgbGVnYWN5LXRydW5rCisyOTA4MCA2Mzc5YTU1MTQwNjVjOTU2YzEyNWRhNTczMDdiNmEyZjkwN2NhYTkxIHJlbGVhc2UyMi1tYWludAorMjkwODEgNWYyYzZhYzIxNWM3OTk1ZWRkNzk0YjE2Y2YyOGRmY2Y4N2M0Yzk4MCBsZWdhY3ktdHJ1bmsKKzI5MDgyIGI1ZGVjMGE1NTRiMzgwZmZjMjdkNDVjMTRmNzIzYTYzOTg0NGI2YmIgcmVsZWFzZTIyLW1haW50CisyOTA4MyBkZjI3NmI3M2ZlNGI1Nzk0ODBjZGQyMmJlMmY0NTQxNmUyYzJkOGUwIHJlbGVhc2UyMi1tYWludAorMjkwODQgMmRjZGU5MDM5MWFhZTM0NzU4YWVkMDJlMTlkNTZjYjljNzQzNzM5NiByZWxlYXNlMjItbWFpbnQKKzI5MDg1IDg3ZGFhNTY1NDQyZGI4MDE4YThkZmJhOTIwMGZjOGIxZmNkYTBkYzEgcmVsZWFzZTIyLW1haW50CisyOTA4NiBhMDAwNWQyNjc3M2QwMmMxMDUzZWZhNzMxODU2ZmJmN2NkNTNlZDk2IHJlbGVhc2UyMi1tYWludAorMjkwODcgYjk4Zjg1ZGMyZDg4MTU1OGIxMTM0NjNlNWVmZTE4ZmFkNjkxMmU0MSByZWxlYXNlMjItbWFpbnQKKzI5MDg4IDhhNzU5NzMzNjc2ZmJhOWFhZTZiNjMzZGRlY2RhZjYyY2U5YzI4YWIgcmVsZWFzZTIyLW1haW50CisyOTA4OSA0YmI5MThlYTY0ZDFlMmJjNWRiYjBjOWFmYTAxZTUxNWY0NjhiOTFjIHJlbGVhc2UyMi1tYWludAorMjkwOTAgZjg2N2NhNmM3ZDY5OGU1ZWJmMjFlNjk1ZDNkNTljNDZhNDc0YzkyMyByZWxlYXNlMjItbWFpbnQKKzI5MDkxIDNiNjA5NTIwNDNjZDA1MDkzZDU1Mzc4ZWZjZDE2ZTEzNmVhMjIzZDkgbGVnYWN5LXRydW5rCisyOTA5MiA1YmIyYzA1N2ZkNDBiODhhMmRkNmM3YzczNWZkMDYxMjdlZDg1MDIyIGxlZ2FjeS10cnVuaworMjkwOTMgNDQ2YjgzNWZjMTliMmNmZWQ3OTM4MGI3ZThmZTgzY2Q0OGE1Y2ExZiByZWxlYXNlMjItbWFpbnQKKzI5MDk0IDI1ZDFmNGY5MTQ4N2UwZGFiYzc3MjM3ODY2NjhiMTdjODEyMDdmZWQgbGVnYWN5LXRydW5rCisyOTA5NSA4NTA2MmExMmMyNGY4ZmI0NTQ0Nzk2YTMzOGI3OGZjODVhOTBkODhiIHJlbGVhc2UyMi1tYWludAorMjkwOTYgNGNhMzJlNGY3ODM5M2EyN2FlODA2ZTY0N2JiMDllN2VhNzQzNjA1MSByZWxlYXNlMjItbWFpbnQKKzI5MDk3IGVmYTlhODY0NjRkMzQyY2YxZTYzYTBkNTg4MDkxMDI0ODA2ZWMxYTkgcmVsZWFzZTIyLW1haW50CisyOTA5OCA4NTUzOTI3OTA5NGQxNWU3MTE1ODVmZTI4OTNjMjRjNDBkNGM4NDA4IHJlbGVhc2UyMi1tYWludAorMjkwOTkgYTk0ZjI3MmU2MDBkOTA5OTRjMjQ1ZTQ0Y2Q1ZmQ3ZDBkZDFjNTIxOCByZWxlYXNlMjItbWFpbnQKKzI5MTAwIGViODQ5OTczYjk0MThkZTM2OGUwNTMyYTNhY2FjNWE0YmZlOWMwNzEgcmVsZWFzZTIyLW1haW50CisyOTEwMSA0MjEzOWFiZmRiZTViZWI1ZDYzZTExZjNjM2VjMDZhY2MwMDg5MDg5IHJlbGVhc2UyMi1tYWludAorMjkxMDIgMjlkNDBlYWU4NzM2YjNmM2JjZmZiYTczOTZiN2UxM2ZiODhjY2NmZiByZWxlYXNlMjItbWFpbnQKKzI5MTAzIDBlNmYwYTIyYzZhOTIzYzg1ZjM3ZjAxYTdkMDAzOTA3MGZkNzE3NzUgcmVsZWFzZTIyLW1haW50CisyOTEwNCA1Y2YzM2RiNTUwZDc1Y2ViYzhmOWE5ZDIzNjI2NjYxZDVlNTc4ZmI1IHJlbGVhc2UyMi1tYWludAorMjkxMDUgMTM0Mzg1ODZkYWE2MzczY2RiNGMxNjRlOTZmMGY3YjE1ODlmMDJiNCBsZWdhY3ktdHJ1bmsKKzI5MTA2IGJmMjhkMGY3OGJkNWIyOWI0MzZhM2M2NzZkODA3MzY0YjZlNGE5NTUgcmVsZWFzZTIyLW1haW50CisyOTEwNyA1YzZmYWM5NWE5NGI0ZmNjOTY1YTFkMzM2NGQ0OTMwYWFmMWJiYzlhIGxlZ2FjeS10cnVuaworMjkxMDggMTk5ZjBmNmE4YTM2MzIwNmQ3NDkzNTQ3ODc3YjdmNGRkNjVmZjJhMyByZWxlYXNlMjItbWFpbnQKKzI5MTA5IDg4YzFjNGQ3ODkxNjZkY2UzM2RkNjI4ZmMwMmM4NGE1MzczZDNjNWMgcmVsZWFzZTIyLW1haW50CisyOTExMCAzM2JkNjQ0NWI3ZTkzOTRjMzY3ZGQ3YTE3M2ZiMDY5YzgyNDhkYmRjIGxlZ2FjeS10cnVuaworMjkxMTEgZTIxODQ3NTMxNjc0Mzg0YzQ0MjAzYzE0Y2ZjN2VjODBlMzY1OTRjZCByZWxlYXNlMjItbWFpbnQKKzI5MTEyIDE1ZWUyOTlkMzllNjcxZDkyMGM4MThhZjVhZGZlYThjNGIyNDIwMzYgcmVsZWFzZTIyLW1haW50CisyOTExMyA1ZDhiYjAwZmVlMTg5OWM3NmE5ZTU2OTUzY2JjNTRiNmUwNTYyMjJkIHJlbGVhc2UyMi1tYWludAorMjkxMTQgNDk5MjdiNmI1ZjQwZmE0M2U1YTFhMzQxZjkyYjQ3NjZkMTczOGEwNSByZWxlYXNlMjItbWFpbnQKKzI5MTE1IDNmYTU0NGEzYzVlZGFhZWQ3ZWY2MDkxZGQwZTkyYjJlODY4ZGRmYjYgcmVsZWFzZTIyLW1haW50CisyOTExNiAxMTU3YzQwMDMxNmIxZTZjOTZjNDM1MjAxOTM5MjExZmU5YmFhODJhIGxlZ2FjeS10cnVuaworMjkxMTcgMjEwMzg0NmVlZjczYWY1NDg5Zjc4NjUzOWJiNDViZGMyYzIxODYxNSBsZWdhY3ktdHJ1bmsKKzI5MTE4IGM1ODA0MWU2YTc5OTc0ZTRjOGNiNDhiZjM4OWU1NzdmMWJkMDk0MWYgbGVnYWN5LXRydW5rCisyOTExOSAwYTFjMWM1ZTFhYjRmMjllMGY5N2ViMDAwY2IxNzg3ZjM1MzQzM2ExIGxlZ2FjeS10cnVuaworMjkxMjEgNGJlOTdlZGE0MzZiYjYzMzA5ZWEyNDg4MzE0MTM2YTJmNjUzNDE5YSBsZWdhY3ktdHJ1bmsKKzI5MTIyIDA2OTBlYTZkMTE1MzU3MmIzMmM5ZTc3YWQxMGY4N2UyYTAyNDQ3ZGQgcmVsZWFzZTIyLW1haW50CisyOTEyMyBmNTA5OWE1MzBkNjdhZjgwYWVmMDIzNTFiNzMwY2RjYmI1M2RlMjY2IHJlbGVhc2UyMi1tYWludAorMjkxMjQgY2I5YzFmOTQyMjBiOTllYWFlZWE1Yzg2OGE3OTQ0ZjQ5ZDc0MzA1ZiBsZWdhY3ktdHJ1bmsKKzI5MTI1IDAwMGQxNTU4MWE3Njg2ZDk1ZWUwMGExNTI5NWRjZThiY2E3MzBlODggcmVsZWFzZTIyLW1haW50CisyOTEyNiA5MDI3NGJhMDQ0MjRkNzYxMDVlMjZhMTEyMWQxYTc5ZWMwZTc2MzhmIGxlZ2FjeS10cnVuaworMjkxMjcgMTRiNjhmNTkyOTVlMzk1NmI3ZjEzNWJlZDdmOGRhOGMwMjBiZGE3MyBsZWdhY3ktdHJ1bmsKKzI5MTI4IDM3YzA0NDViZGM5MGQ5N2Q1NGI4ZGY0ZjdiYmY3NmIwZmE0MWM5MWIgcmVsZWFzZTIyLW1haW50CisyOTEyOCAwMTI4MzEzYzI4NTVkNzE3NTNmMDBmY2NjNjBiYjM5ZWQ5MmEwYzU0IHJlbGVhc2UyMi1tYWludAorMjkxMzAgZGRiZjY5YWJiOTVjYzg4NmFjMWJjZDJhMWIyMDRlNzIwOWY3NWVhMiByZWxlYXNlMjItbWFpbnQKKzI5MTMxIDRhODI1YjkwMjMxMGU4ZGNmNDg4YzQzMGY4ZGQ4M2E0NGRkMGM4ZjggbGVnYWN5LXRydW5rCisyOTEzMiBiNjU5YWI0OTQ1NzFlYTdlN2IyOGNhNzBmYTM1NzMxMDM4YzMwNzNhIHJlbGVhc2UyMi1tYWludAorMjkxMzMgNjNjNmY0NWU5NDdkZTQ5Mjk0ZGYxNjk0NGU4NjZlYzE3NzZiYTg1NCByZWxlYXNlMjItbWFpbnQKKzI5MTM0IGNmOTI2NjBlMWUzY2UzZjRlZTk4ZDlhYmNjMjAyNjNhMDNjZDlmNTQgcmVsZWFzZTIyLW1haW50CisyOTEzNiBjNWQ5MTc5MWU1N2IyOTYzNGQ2YTk1YjQ0MzU2MDEzNjk3OTA4ZmMwIHJlbGVhc2UyMi1tYWludAorMjkxMzcgODg5N2EwYjFjYjA3NTQxOGEwZDI1ZDFhODkxMjhhYTQwODM2YjU0NyByZWxlYXNlMjItbWFpbnQKKzI5MTM4IDFhNzliOWUzOWU3MjUyYjYwODFhYzkxNzhkNmYxM2RmMTFiZWNhYmYgbGVnYWN5LXRydW5rCisyOTEzOSA5Y2Q2ZWQ5NTQwNjVkYjYyMGVmYzIzNzhlZTFmZDgyN2Y2NGEyMDE0IHJlbGVhc2UyMi1tYWludAorMjkxNDAgNjI4NTMxOTViZTY4ZDFmZDI1MjZiODk1MTQ3ZDFmNTYzNTdjZjcxMyBsZWdhY3ktdHJ1bmsKKzI5MTQxIDQxZTgyODBhMzY4NWE3MDI3ZTA4NjU0YjBkZjgxODdhMDE3N2RiMDYgcmVsZWFzZTIyLW1haW50CisyOTE0MiBiYWM1YTQ5MzI5MDU5OWE4Y2E5MzQzZjBjMjk2YTUyMmQ3M2MzYmI0IGxlZ2FjeS10cnVuaworMjkxNDMgNjg5NmNlZWQ0NmE2YjJkMmVkMzc1MmQxMjkxZmZmMTRhYzBiODY0ZCBsZWdhY3ktdHJ1bmsKKzI5MTQ0IGM1MjE2NWYyY2RmNDM5MWZiYjY0YzNjNDAxNTIyZjdlNzYxODcxMmIgbGVnYWN5LXRydW5rCisyOTE0NSAzODZlNmZlMmM4ZDJjOWEwNmMwNTM4ZWI0OWYzZDc4ODY5YmI5NmFiIHJlbGVhc2UyMi1tYWludAorMjkxNDYgNjVkZmZjOWMwYTE2OWU3YmViYTNkNzRiMzI4MzI3NTg2OWI5NmMxNSBsZWdhY3ktdHJ1bmsKKzI5MTQ3IGJhNTIyYzc0YTkzMTAxYzQzNWFlZmZlN2VlYWVmMjliMGU2MDdiYjQgbGVnYWN5LXRydW5rCisyOTE0OCBjZTQ5ZjEyYTE3NjllNmE5N2M5ZGM2NGQ3ZTc3Zjc5MTI0Y2FmMDc1IGxlZ2FjeS10cnVuaworMjkxNDkgMzg4NDNkMzViNjQ2NjAyYTQ2YmI1NmE1ZWQxMjY3ZDZlYjk3MTBmOCBsZWdhY3ktdHJ1bmsKKzI5MTUwIGM3ZDU4MDFiYmFlOGJjZGM1ODk1NWNkZGM4MWVjYWJlZjQ3MzNjODYgbGVnYWN5LXRydW5rCisyOTE1MSA2OTVhZDhmODc3MDk1MTEzMzlmYWMyZDg4Y2JlZjZhY2ZhMWRiOTUxIGxlZ2FjeS10cnVuaworMjkxNTIgMDgwOWRjNTk4ZmUyM2EyYjMyYzcwMThlMTk5N2I1OWMxNWZmN2UxMCBsZWdhY3ktdHJ1bmsKKzI5MTUzIGY0YWE2NTY3MTBmMDM5ZjM3N2Y0YTBlNzBlYTBjYjdmMmMwZWI1ZGEgbGVnYWN5LXRydW5rCisyOTE1NCA1NmMwYmEyMDMyOWI0ZGVkNDI1ZjFkNzc3YmZlMWU3Y2M5MzNkNjNjIHJlbGVhc2UyMi1tYWludAorMjkxNTUgYjJlODM3ZjJkMTQxYzZmYmY5ZDcxZmYyZjI3MTc4MDJmMGYwZTU5NSBsZWdhY3ktdHJ1bmsKKzI5MTU2IGQ4ZWM5OGI3NGZhNzhiNTU0YmE5YzFmMTRmN2ZiZTljZmZkYzFkMzkgcmVsZWFzZTIyLW1haW50CisyOTE1NyBiMzliZDAzYThkYWI2NjkyMzg4ZDljMTY4NDRkY2U1Yzg1Y2EwYWQyIGxlZ2FjeS10cnVuaworMjkxNTggMTNkNjM5YTRhZmQ3YjgzYTk4YzNhZjAzMTQ2YTVhN2YyMzBkNTg3ZSBsZWdhY3ktdHJ1bmsKKzI5MTU5IGE5NjIxYmE3ZTNkYmQxMzQwYjBkMDg3YTc2Y2U0NGMzNDg0Mjc1NWMgbGVnYWN5LXRydW5rCisyOTE2MCBlOWU3ZjE2MGFhYzk5MGUyMTViYWZkZmEwZmQ4YjNmZGRkMTk0MjlmIGxlZ2FjeS10cnVuaworMjkxNjEgNTAwMTNkMWM2YTQzZWExYmVlZjUyNmYxM2MwNjdiNTNlYmEyNjg0OSBsZWdhY3ktdHJ1bmsKKzI5MTYyIGI3OGY1YzdlNTc5MDIxOTA4MzUzYTYyMDg3MDJhZTk3MGFjYmJiZGYgbGVnYWN5LXRydW5rCisyOTE2MyAyZmI5MTBiMTM5YzJlMjVkNTZjZWIxNDQ3NTQ3YmI0ZGM4YzM1ZGY0IGxlZ2FjeS10cnVuaworMjkxNjQgZmViODg2M2I2ZmM0Njc0YmQ3YjlkNDc5MWRiNTkwNTc2NzdjYjYyYiBsZWdhY3ktdHJ1bmsKKzI5MTY1IDZhZTZmMjA2MGUyOGQzNjQzNWE5Mjk5YTE4NGZlY2M3ZGFlZTZkNzkgbGVnYWN5LXRydW5rCisyOTE2NiBjNjIxZjcxYmM3MDI1NjA5ZjA5YjhkMTg4Y2Y1NTE0MGU4YTQwZDdiIGxlZ2FjeS10cnVuaworMjkxNjggODEyMDRlMjBjZmU1OWUzNzJhN2E2MDExZmE2YmY1NjUwNDVhNzdmMCBsZWdhY3ktdHJ1bmsKKzI5MTY5IDBhN2FhODc0YzQ1MGJkZGE1OTk5YTMyYzBiMmRhNWUyYzI0ZjM1NmQgbGVnYWN5LXRydW5rCisyOTE3MCBlOTU5MTcyY2FmNDkzMjE4ODBmODNjOThkZmMzNmUzYTkzOGNiODQyIHJlbGVhc2UyMi1tYWludAorMjkxNzEgNDQ3NzYyZWJiMTFkMmQ3MmExNTE4ODliOWIyZTQ2MTg1YTg3NzJiMCBsZWdhY3ktdHJ1bmsKKzI5MTcyIGVlNzU2YWI2YTEzZTBkZjczOGZiNzliZWMxOGQxZTczZDExNmI5ZDQgbGVnYWN5LXRydW5rCisyOTE3MyAwZjUwNTM2YTEwYmI3NzY0ZTdkNzcyMmZjMGYwNjdkNGJmMDQyMWQ2IHJlbGVhc2UyMi1tYWludAorMjkxNzQgMWZlMWE1N2Q4ZWIxYjI3YjhlMzg3YmRhZGQ3OWU3MGRjOTliYWZmOCBsZWdhY3ktdHJ1bmsKKzI5MTc1IDczM2RmMmQxZWJhOTcxYmY1MGE0NzEwZDU4MDZhNzc4YmQwNjM2NTYgbGVnYWN5LXRydW5rCisyOTE3NiAxYTlmNDc4ODUyNjA0YTdkMGNjYzM4MDFiYTM2YWZjZDczNjIzNjYxIGxlZ2FjeS10cnVuaworMjkxNzcgYmFkOTY5OTU3NmQ5ZDliZDU2MGQ4MmQ0YjI3OGQwOGU4ZGViZDdjZCByZWxlYXNlMjItbWFpbnQKKzI5MTc4IGFlNjg2M2U4NzcyNDM3YmMxYzcyNTZjZDEzZTQwOTRjYWRiNmM5M2MgcmVsZWFzZTIyLW1haW50CisyOTE3OSAwNmY2MTczYjgwZmI0MTcxZDA3OTdiNjk0OWEwNmZhMzdlNjZlYzQ4IHJlbGVhc2UyMi1tYWludAorMjkxODAgZTA2NzQzZmFiNDc3NWNhODQzMzliM2M1YzBjNzhlN2Q3YjZkMDNiNyByZWxlYXNlMjItbWFpbnQKKzI5MTgxIDQxYzU5MjEyMmY2MjlmZDVkOWQ2MDlhNDdiZDZkZjdmOTMxMTZjNWMgcmVsZWFzZTIyLW1haW50CisyOTE4MiAyYWRhZGMxOTkyM2NlMTJmMzA5MzEyMzg5NTMzNmYyZTM3ZjU4N2Q4IGxlZ2FjeS10cnVuaworMjkxODMgMjkwZWEwYzZkZTZhNWExYWNmMmEzYzA2YjIyMTY3MTYyMWQzMjBjNSBsZWdhY3ktdHJ1bmsKKzI5MTg0IDU1YjE4Mzk0MTIzYjdhYzYyNTc1OGRlYzc3ZDRjODU5Y2U5YjJmNTUgcmVsZWFzZTIyLW1haW50CisyOTE4NSBlMzc0ZWE3YWM0Y2U0OGEwNDQ5Mjk1NDgyODBhZGUxOWZjY2FmZGUwIHJlbGVhc2UyMi1tYWludAorMjkxODYgZjUzMmU5YjY5NTUxYzJlN2U3ODRhYmIxZTVjZjAyZWM5ODgyNDAzYyBsZWdhY3ktdHJ1bmsKKzI5MTg3IDNjMjZhZTYxZTk1MjNlYmRmMzUwNWMxZGJkZTk3ODVjMDAyZTQ0Y2EgcmVsZWFzZTIyLW1haW50CisyOTE4OCA4YjIwYjI2ZjExODY5OTgwMjM5Y2IxMDY3OGQ3MTVkOGQyMmM5NGE4IGxlZ2FjeS10cnVuaworMjkxODkgZjZlZGIxZWYyZTNmODAwZjY1YzZlMDY1ZmViZjRmY2FkMWI0NGU3YyBsZWdhY3ktdHJ1bmsKKzI5MTkwIDYxZTZiNTdlYmJlMWQ4MGVlYTI4MjBiYzcyMGQ3MzViNzJkYzVhMmUgbGVnYWN5LXRydW5rCisyOTE5MSBkNjM0ZmJkNWU0MjMyZGQ3YzA5MTcwN2U0MjhlZTI5ZTE5ZDI1ZGJhIGxlZ2FjeS10cnVuaworMjkxOTIgOGU5MmJlNjVkZWQzNjY4ZmU2YWFhYThkNGYxNzU0NTIzZTA3Yjg2YiByZWxlYXNlMjItbWFpbnQKKzI5MTkzIDY1ZmExOTNlYTEwOTBjZTdkOWNmOTY0ZjQxYWY3ZmVmODNlYWI1YWMgbGVnYWN5LXRydW5rCisyOTE5NCBmNDYxODI3ZGM3ZGU2YzNmM2YzNWY5MWNlOTAzZjcwNDI2ZWIzNDVmIGxlZ2FjeS10cnVuaworMjkxOTUgZmExNzM3MTlhYzhjMGVhNjExYjhhNjZhZTRkYTYzNzkwZjhjYmMyNiBsZWdhY3ktdHJ1bmsKKzI5MTk2IGI1OWQxYTExOTM5MzJkYjM2ZDMzZjYxYzliNDM2ZTM3OTdlMDViMDIgbGVnYWN5LXRydW5rCisyOTE5NyBhY2U4MmRhM2I0NTBlNGEyOWFiZjFjZjMwY2RmMWNlMTI4Y2ViNmY5IGxlZ2FjeS10cnVuaworMjkxOTggNzg3ZmVjZDBhYTFiYjEwNzY4NjlmNTEzMDA2Y2FiOTk5ZmU1ZGQ2OSBsZWdhY3ktdHJ1bmsKKzI5MTk5IGM1OWNlNTEzZGVmNjI1YmVhNmEwNTgwOTM4NzE2ZTZhZmNhNzZlMzEgbGVnYWN5LXRydW5rCisyOTIwMCAzYTNkNWFlYzdhNmFmZjFkZmVlNGY1MzhkNzlmYmNmNjU3YmFiNzRmIGxlZ2FjeS10cnVuaworMjkyMDEgNzAwNWY0YjZjYzEyMmNjZDlmZmI5MTFiYTg5YTZlMmU1ZGJlYTI0ZiByZWxlYXNlMjItbWFpbnQKKzI5MjAyIDZkMjEzODM4OTY2NzI1NjIwNTdmM2I3NWNhZmE5NGNiZjA5OTQ2MTUgcmVsZWFzZTIyLW1haW50CisyOTIwMyA5MmE4YTM1MmUwMjQzMDYzM2E4ZWNmZGY2MTRjMDUyNzA2MGRlZjY0IHJlbGVhc2UyMi1tYWludAorMjkyMDQgYjBmYTVmNmE4YmI5N2RlN2E1NTc4OWYzNDgzMDk0OGZkZmVlZGNhNCBsZWdhY3ktdHJ1bmsKKzI5MjA1IGVlZWQ3YzhiMjMxYWVkMTY3NjdlMzcwZTc3ZjJjMTIzZTA1NjhiNjAgcmVsZWFzZTIyLW1haW50CisyOTIwNiA5NzAwMmIyNTA0MjU2NzlkMTg2MjZhNjdjNzgyZWNlN2E2ODkxYzY3IHJlbGVhc2UyMi1tYWludAorMjkyMDcgNzBmOTAyNmEyYjE2ZmQzOGQ4N2MyNzI0ZDU2ZjAzYjM4YzFjOTFmNyBsZWdhY3ktdHJ1bmsKKzI5MjA4IDIxYWIyYTY3NGMwYTE0NjRlYTA2YmRkMmM5ZWIwYjQ0ZTRkN2Q0YzEgbGVnYWN5LXRydW5rCisyOTIwOSAzOTZjOGEyNDg4MGM4MjVkNTQyNGYwZTZjZjJjNGJmOWNlMTdmMTk3IHJlbGVhc2UyMi1tYWludAorMjkyMTAgODZiZjg0MGMyYTFjYThiZTRmZGQ0MDI1NzcwMmUzMDE1N2JjZTgzNSBsZWdhY3ktdHJ1bmsKKzI5MjExIDU0ZWJmMDg1ZDI2ZmE5NjRjYWY2MmRmNjdjNmE3NDFjODFmYjMxNWEgcmVsZWFzZTIyLW1haW50CisyOTIxMiBmN2NjZjQ5OTE1NjVjM2ZiMzMyMDI4YTFkM2MyYTZhYzNmZjFhNmQ1IGxlZ2FjeS10cnVuaworMjkyMTMgNzM0MGI2NGE0OTA4MjIzZWJiZjNlMDJhZTdlOGRkYTFkNDYzZmQ4MyByZWxlYXNlMjItbWFpbnQKKzI5MjE0IDQ4OTBmMWJkZWFhNjQyZTIwYzdlNGY4NzY5MWNjMjU0Mzc5NjZmMzcgbGVnYWN5LXRydW5rCisyOTIxNSBmN2E0NmIwZDNjMDdhYTMwZTY1YWUxYzI2MzMzYWVmYjE2NzVkMTY3IGxlZ2FjeS10cnVuaworMjkyMTYgZDQzZTgyYjhkNzlkNTY4OWU4YmM5YmI3NjZkYjg0YzNjNDk2OGQyYyByZWxlYXNlMjItbWFpbnQKKzI5MjE3IGVjMGE0OGFlOGViNDdlYTE2ZjczNzg0ODE2NWVjZThkNDk5ZmI5ZWMgbGVnYWN5LXRydW5rCisyOTIxOCA5YmQyZjk3OTJlZmJhNjdmZjU0ZmRhZmFjYzk4MmZjMDhhM2EzMTkwIHJlbGVhc2UyMi1tYWludAorMjkyMTkgM2M5NWUwOTc2ODQ0OGVjYTM0MjNkYzAyZTBhYmY2MDUwMDQxOTYwNiBsZWdhY3ktdHJ1bmsKKzI5MjIwIDJkMTdlM2NiNzc0ZTgzNjNkOTE1NDQ0YzRlMWNkMjU1NjNhZTM0MTIgbGVnYWN5LXRydW5rCisyOTIyMSA3NWNiZWM0MGRiN2Q1ZmM1NDFjZmQwZmRiZTNiYmU1MDNlNjJjY2U2IGxlZ2FjeS10cnVuaworMjkyMjIgNmQzNWQ0MjkyZGVjNDZkMjE4MzkyNjJjNWZhZWIyM2ExZDEyZTM3OSBsZWdhY3ktdHJ1bmsKKzI5MjIzIDYzMjI1ODExNDk4ZDUxMWQzMWIxYzNiMDQyYWRmYTZkZjQ5ZGViMGYgbGVnYWN5LXRydW5rCisyOTIyNCAwODM4YzQyNDc5MTc4M2ZlYzhhNWUzZGRiNmQxZDQwZDA0NWIxODE4IGxlZ2FjeS10cnVuaworMjkyMjUgZjQ0OWZiNWJiYWI4YWQ2OWE1M2IyNTQyYzRkMTk2MzRjMjkzMmQ1MCByZWxlYXNlMjItbWFpbnQKKzI5MjI2IDU2MzI4NDFhMzJhNDA1OWViZWEzNzU3ZjVjMzZiZjdmMTA1MTlkNDMgbGVnYWN5LXRydW5rCisyOTIyNyA2ZWQwYmJkYWJkYzgxOWVjMGEyNWExYTA3ZDA1MGExZjIyMDcyZmE0IHJlbGVhc2UyMi1tYWludAorMjkyMjggNjlhYTYwZDc3MWQxZjMxOTljY2QzNjMxNGQ1MGE2YzQyYzM0OGJhNyByZWxlYXNlMjItbWFpbnQKKzI5MjI5IGI0ZWQ5ZjkzMTljZGU0MTE1ZGExZjE1OTRlOGVjMDcwNDAyYTA2YTMgcmVsZWFzZTIyLW1haW50CisyOTIzMCBmNDQ3YjY5NjAxYjkxNTZlMWQ1YWEyMGYxMDU5NTc1YTNiZTVkZTI4IGxlZ2FjeS10cnVuaworMjkyMzEgY2E5ODlhNzFiNmM3ZGQ3ZGNkMTE1ZmJmMWY5ZTI3MDYzMWZiYTNhMCByZWxlYXNlMjItbWFpbnQKKzI5MjMyIDcxZTNhOGU5ZDg4NDA2MWMxZDU3Zjk2Yjk5YTI0MWY4MTQ5ZTM5NTQgcmVsZWFzZTIyLW1haW50CisyOTIzMyA0NDcyOWZiYjNkNWJiYzFhZmM2YzdlYTcwZWNjMzZkYzIyYTEyMGQ0IGxlZ2FjeS10cnVuaworMjkyMzQgOGFlOWMwYjBhYTBmMTU0ZGNjNDhkZjE1YTFkM2NjYmJiNDY1ZjMxNCBsZWdhY3ktdHJ1bmsKKzI5MjM1IDdhNTdkZGY3Mjc5NGVmOWYxMzlhNjRmMGMwZThiZTk0OGMzZGRmYTYgcmVsZWFzZTIyLW1haW50CisyOTIzNiAwMzdkZmJhMDcwYWM3OGMzOGE2MDJkMmRhOTlmNzk0M2M3NWQ0NWYyIHJlbGVhc2UyMi1tYWludAorMjkyMzcgNTY5OGYwZmUyZWEwMDkwMDYwOGViNzRiYjMzYWRlNjMwZjM3MTZmYSBsZWdhY3ktdHJ1bmsKKzI5MjM4IDk1MWUzZmU3ZWQzYWQzYTU2ZTRiNmNiNzdjODFkN2QzYThjMjA5MTggbGVnYWN5LXRydW5rCisyOTIzOSAzYTg3OWYyZmNhMDY2YWQyNjgyNDg2MGU0MTk2ZWU1YmFjOGY4MTgwIGxlZ2FjeS10cnVuaworMjkyNDAgZDU4NzFkNmU3MzVkNzRkZmM3MTVhZWFhNjg5MTNiYjBkZjcyOGRjOCBsZWdhY3ktdHJ1bmsKKzI5MjQxIDM2MjMwMWE4YzNlNDI4OTg2ZDQwNTIzYzI0ZTljZDNlMzUxOTUyN2QgcmVsZWFzZTIyLW1haW50CisyOTI0MiA5MWViZjQ4OGI1YTE4N2JiM2NiMzEyMzllMTM2MGE0ZTU0OGY5MWJlIGxlZ2FjeS10cnVuaworMjkyNDMgYzM1NWZkMzdkNjQwN2IxNDJmYzJkZjE3OGNmZDg1NDIwODM3OTlmMSByZWxlYXNlMjItbWFpbnQKKzI5MjQ0IDg0ZWU1YTQ5OTc0MzAxMDY4ODZmOWQ2ODllMzRmNmU3MjY4MmJiMWMgbGVnYWN5LXRydW5rCisyOTI0NiBlZGY1ZTdlNTVkMTQwYTc3MTc1ZTcwMmFmNTZkZWM3MTFhZDk2ZWZkIHJlbGVhc2UyMi1tYWludAorMjkyNDcgYWRlOGFmMWFhM2M2OGY0MzNiNjcyZjhkMTc5MWVlOWQ2M2EzYjgwZCByZWxlYXNlMjItbWFpbnQKKzI5MjQ4IDFkYWNiNmFjMzhlOWNlZTUzMGE3Zjk1MGI0NzhiODliYWQxZTVjZjggcmVsZWFzZTIyLW1haW50CisyOTI0OSBjYzQxYjljYWNhZTg0N2U1MTNmNmZjNTEzNDg0YmUyYTQ1Nzg2Mzg5IGxlZ2FjeS10cnVuaworMjkyNTAgZjBhNzRhZTA5YWQ3M2U0OGEzNTE5NTVkNjA5YTg4NWM3MDBmOTI4YSByZWxlYXNlMjItbWFpbnQKKzI5MjUxIDJlZjcxZjM1MWM3NGEyZTFmNTBmMTM2ZTI2ZGFmZGFhMGViNGIyNWMgbGVnYWN5LXRydW5rCisyOTI1MiA0MjNhYTVlZjkyNDdiZDRmNWRmZWJmYzQ4MWI5MDA3NTI0MDE5NzFmIHJlbGVhc2UyMi1tYWludAorMjkyNTMgY2YxOGNhMGVlYTg5MmQ1NWI0OTM5NDhiZjEyZmNmZjE0OGEyZDg0YiBsZWdhY3ktdHJ1bmsKKzI5MjU0IGFmMjBhZWFhYTk4MjA0YTA0NjI3ZDI3YmZjOWNmMjZjNzZiOGRmOWMgbGVnYWN5LXRydW5rCisyOTI1NSBiZjM4NDExMWIzYjM4ZjdmODIxN2UxZGIwMjg2ZWZiNTIxMTk0NTZmIHJlbGVhc2UyMi1tYWludAorMjkyNTYgZWExYTRjZWJjNTMwYTViM2RlN2ViZGU4ZmU4OGE0MzBhZGFkNjI2ZCByZWxlYXNlMjItbWFpbnQKKzI5MjU2IDYxZDUzMTUzM2E4NjIyNGExYzI2OTE3YzE4MDEzZDkxZjU5MmZiZmIgcmVsZWFzZTIyLW1haW50CisyOTI1OCA4MzgyODU4M2Q5MTczOGY2YmE4NmU1Njg4ODhmYzVmNzUwNjYxZjM5IGxlZ2FjeS10cnVuaworMjkyNTkgMzFiMmZiNDQ4NTE0NjMyYTU1MTlkYjc2N2Y5ZTdmNzJmYWQzNTNjMyBsZWdhY3ktdHJ1bmsKKzI5MjYwIGEzZDYxMmYwNTYzZjE2NDM2ZGI3ZTBjYTY1NGQ5MTIyZmRmNzY1NDMgbGVnYWN5LXRydW5rCisyOTI2MSBiODU4ZjRjODgzZGRkZTRkMDg0YzliOGU0YmQ0YmViMzhiZjlkZjM3IGxlZ2FjeS10cnVuaworMjkyNjIgMDAxYjc4OWYxZjg0YzAwNzhjY2M1MWY5ZDZkZWNiMGZjMTIyYzkzMyBsZWdhY3ktdHJ1bmsKKzI5MjYzIGFjMTQzMTdhOWFlOGIzMTZlNGJhNTI3YzcwNzQ5MmNmNzc0ZjZkZjUgbGVnYWN5LXRydW5rCisyOTI2NCAzZWFmYmRlNTZiMjE5ZjFkYWE1ZTJjODUyZWFlMDlhYzFiZmM1ZGMxIGxlZ2FjeS10cnVuaworMjkyNjUgNjZlM2U1ZjA5M2NhMTEzNzQ4N2RjODA4NjkzZmJjZjNiZDQyNmU4YSBsZWdhY3ktdHJ1bmsKKzI5MjY2IDg1Yzg3YjNhYzk2YmMyNmU1NzRmOTU0ZTMxYjc2YmY5NGE1Y2I4NzUgbGVnYWN5LXRydW5rCisyOTI2NyA2YzkzMGUyNTZhMTZkMjQ4OTg2YWVkNzkwM2Q3NDUzZWNmMDkwZjVkIGxlZ2FjeS10cnVuaworMjkyNjggYmM4MWQ1MzFjNjI5MzIyNTJhNzI1OGUzNmI4MjExZjdkZmE5YmM1YyBsZWdhY3ktdHJ1bmsKKzI5MjY5IDM0Mjg0ODI1ZDljZDgxYzI5MzMzZmVkODlhM2YxOTRkZWQ1ZmZhMWQgbGVnYWN5LXRydW5rCisyOTI3MCBjNzdkODM1NzBiM2ZjYWZmNmEzNmI3ODIwNDg0NmU1ZjllMDRjODZhIGxlZ2FjeS10cnVuaworMjkyNzEgYWI5ZDQwMTZiNTg3ZDVhZTlhN2Q1ZTk0MmYyMTRhZGViYTNhODk4YSBsZWdhY3ktdHJ1bmsKKzI5MjcyIDYwMDEyNjVlYzY4NjE1NmM3YTdhNGQxOTJlMzA1YWNhYTMwMDVmMmYgbGVnYWN5LXRydW5rCisyOTI3MyBiOTc2OWY3MTMzYzYwYWMyYjQyNmEyNDFmN2VkM2MyMTRlYzIyNmRhIGxlZ2FjeS10cnVuaworMjkyNzQgMGJiZWE0ZGNkOWJlZDZkODFjOTI3NDVjZjY4ZTg4OGIxNmZiY2Y5NiBsZWdhY3ktdHJ1bmsKKzI5Mjc1IDM3YmQyYTkwMWMxMDBhOWZjZmMwYmJjNTU0NGJlN2ExOThkN2UxMjkgbGVnYWN5LXRydW5rCisyOTI3NiBmZGNhODdjNDIzNGVhNDZhNTQyYWZjMTc4YjcyMDBlNWU3NDE0MWU0IGxlZ2FjeS10cnVuaworMjkyNzcgY2RjYjEwMmY4ZTU2YzJjZjRhOTBhODczZjQzZjViYjViYTdkZGJhZSBsZWdhY3ktdHJ1bmsKKzI5Mjc4IDkxNTExMjY3MTE1MmY0M2ZhOWQ3ZGNiNmVmYTMwNjY1YTg2MWQ5MTcgbGVnYWN5LXRydW5rCisyOTI3OSA1NDgzNDM2M2NjZjBkYTY5ZjM0MGQwZmI3NDE3ZGVhMmU1NmU2ZDAwIGxlZ2FjeS10cnVuaworMjkyODAgNWQzNTJkZTk0NDE1ODBjODNjMmRjMDJhNmVjNDA2OTE0NjgxN2I3MyBsZWdhY3ktdHJ1bmsKKzI5MjgxIDc3Nzk5OGEyMjdiNzRkMTdmNGRjYjI3MTkyZWJlN2I5ZTlhZTY5YzIgbGVnYWN5LXRydW5rCisyOTI4MiBiOGNiZGI3MzVjZjJiMTk5ZTU2NGY5NGU5MTg5YjRhZjQyMGI1Njk5IHJlbGVhc2UyMi1tYWludAorMjkyODMgNGE5MmM3ZDlkNDE1NGIwNWZiZDI0NWZmZTA2ZGFkOGE0ZTBkNzA2MCByZWxlYXNlMjItbWFpbnQKKzI5Mjg0IDc2YWMxNjI5M2U0YjZjNzQwN2VhOTUxNGY5MzcyYjdkODFhMGY4MWMgbGVnYWN5LXRydW5rCisyOTI4NSBmZjY3ZDVmZjEyM2U1NjljYjBiNTU1Y2M0ZTQ5ODdlNzQzNDRjM2FkIGxlZ2FjeS10cnVuaworMjkyODYgNzk0MTk4OTdhMzZmZTc5Nzc1NTZiNzRkNjAwOGI1NjZjZjEyMjM0MCBsZWdhY3ktdHJ1bmsKKzI5Mjg3IGM0NDAzYTNlZmE1ZDVmOGI4ZDg0ZTQ2Y2QyYjg5OGRjNmJmZDE1MDMgbGVnYWN5LXRydW5rCisyOTI4OCAxMjIyN2Q3OWY2YmE0Yzc2ZGYwNWZjNjcxZjE1YzZiNzUxODZmZWMwIGxlZ2FjeS10cnVuaworMjkyODkgMGY0ZTk5OGUzZWJiNjMzNGNiMWJhN2E1MjEzNjViNmRlMDMwZWY3MSBsZWdhY3ktdHJ1bmsKKzI5MjkwIDAzMmYxOTYwNTlhYTBiNGY3MWUwYzgwZTRmY2MwZmU5N2E2YWJlMTMgbGVnYWN5LXRydW5rCisyOTI5MSA5OTBiMjc1MTQ5MzgyYjRlN2Q3ZDk0YjRhZjQ4YWY5MWRiYTZjNDI5IGxlZ2FjeS10cnVuaworMjkyOTIgMWFmYjIyOGU0MjY1YjVhODZmMDhjMGM4NGRiNDA2MDY5NDMxNTAxNiBsZWdhY3ktdHJ1bmsKKzI5MjkzIGNlYmVlMmE5ZTNjZjk5NjBjMDA1NTUzNWYzOWEwNGI1ZWFmZTU2YjkgbGVnYWN5LXRydW5rCisyOTI5NCBjMmRkNDEzMDE4NDEwOGJlNTNiNTFmN2UzOWE4NTg5ZjFmYWM1MzEwIGxlZ2FjeS10cnVuaworMjkyOTUgMDkzZmU1YjlmNmY5NDlhYTViYmQxMTRmMDM1YzkyOGMwMWQ1NWM5NSBsZWdhY3ktdHJ1bmsKKzI5Mjk2IDdlYTY3NGFjNTkwZWY1NzQ4ZDNjNGExZGI3NDE3NjA3NzRjMTU3MTMgbGVnYWN5LXRydW5rCisyOTI5NyBkYzQyMGRlMTdhNmVlNjNjZWUwMjBiNTE5NjQ3YTEzZjJhMzQ1NjMxIGxlZ2FjeS10cnVuaworMjkyOTggZGVhYmQwNTNiNmRlMWY0ZWQ2NTZhZmQzOTc5NWZmZTk4NTdkN2FjOSBsZWdhY3ktdHJ1bmsKKzI5Mjk5IDgwNTAxNTdhNDQzMGJiN2JkODcyMTM1OThiNzQzODRiYjAwMDNhOTggbGVnYWN5LXRydW5rCisyOTMwMCAwOTBiNzJjMGQyZWI3MzAyNTlhOWE3NjI5NWRlMjUxMjZkMWZhODZhIGxlZ2FjeS10cnVuaworMjkzMDEgNDRjYzdjNjJkOThkYjM3NzYxYzQzMTdjNTRlYzUyZjJlNTAyN2NmZiByZWxlYXNlMjItbWFpbnQKKzI5MzAyIDAzNWI4ZGViNTJjMWVmNGQwZWI1MzAxN2NhN2E0MDJjMThlZTczOTYgcmVsZWFzZTIyLW1haW50CisyOTMwMyA0NzAyOTIxMjk3ZDEyNTVhMTBjYzljNzNiZDEyODdiMzVhMDcxMDcxIGxlZ2FjeS10cnVuaworMjkzMDQgYTg5ZDAxNDU1OWUwNTdmMDE2MjMyOWNjNGQ4ZTQ1Yjk3MDllYzY0ZCBsZWdhY3ktdHJ1bmsKKzI5MzA1IDJmMzY0N2IyMWIwNzYzMzkwZjJkMTc4NzUxNDFkODM1NTRmNDlmZjggbGVnYWN5LXRydW5rCisyOTMwNiA4NTQwODg3YmNlYzZjOWI5MGEyYWFhYjQxMDIyNzk1MjJkMWY3YzU5IHJlbGVhc2UyMi1tYWludAorMjkzMDcgMjQzNTAzOTI2YzgxZDgwZWM1M2UxYWIwNGIwMzVkMzM1YmVkZDA0MiBsZWdhY3ktdHJ1bmsKKzI5MzA4IGVlYTQwYzQxNzIwNTM5ZmJmN2IzNDMwZDBkMGJhMzMxOTliMTI3NzIgcmVsZWFzZTIyLW1haW50CisyOTMwOSAwOWUzZjBkOGJlMTBiZWI1YWIwZWZlODQ4NGFkYTQ3YjRhN2IyMmM5IHJlbGVhc2UyMi1tYWludAorMjkzMTAgZWFiNzk0MDI3N2ZiYjNjMTM0YmRjNDQxMTg3NmQyZTkyYzM0YjdjOSBsZWdhY3ktdHJ1bmsKKzI5MzExIDdiN2I5NjU1NTg0MmE5NGQ0Njc1NzNjNDZjMjVjNDcwNWIzM2NkMWEgcmVsZWFzZTIyLW1haW50CisyOTMxMiAzMWJkYzY2ZmIzMDdmMDE1Y2YwZThjMDcwOGE1ODU5OWQ0YWQzNjFjIGxlZ2FjeS10cnVuaworMjkzMTMgNGFjYjU1MDFiNDkwMGM3MTNkMDIyZjAzZGU3ODE0YzRlYjlmNWNmMyBsZWdhY3ktdHJ1bmsKKzI5MzE0IDhmYjEyYWM3OWM5MzdhYTQzNzg1OTY1NmZiMWFkNjEzYWI2MTViNDcgcmVsZWFzZTIyLW1haW50CisyOTMxNSBlZWQwZmNmODViNjIyOTA0MjljMjExOWM1ZGZkN2YwY2UwNjczMDhkIGxlZ2FjeS10cnVuaworMjkzMTYgYTVkYjI0NmQ5NGEwYjkxYWQ5NDQzNGIyYzk3NmY5NTMwM2ZlMjkzNyByZWxlYXNlMjItbWFpbnQKKzI5MzE3IDA1N2RlNDFkYWY0ODkyZDAxZmZkZTk5ZTM4NmZiMzQ0NmI2N2U3OTYgbGVnYWN5LXRydW5rCisyOTMxOCA2NzM4MWViZDVmNGY3MjYwODNhYjg1NWQ3YTI1ZTRmNzQ4MDE4Y2RjIGxlZ2FjeS10cnVuaworMjkzMTkgNzg4NTg5OWZiNDNlYjUwY2QyOTk0MmFmZjcxMDQ0YWJiN2IwODIxYSBsZWdhY3ktdHJ1bmsKKzI5MzIwIDFmNWY2NDgxODg2ZDlhYjM0ODExZGU2ZTQ1ZjkzMDYyNWY1MmY3ZDUgbGVnYWN5LXRydW5rCisyOTMyMSA2ODBiZmNjOWNhMDY2YzZjNmRlMjdkYzAzZTQzYmFjN2RkMGI3MmM1IGxlZ2FjeS10cnVuaworMjkzMjIgMmY5YjBhMzVlMjA1Nzg4ZjdlMjNhMWJmNDc3ZDA4ODA0MmEyNDgxYSBsZWdhY3ktdHJ1bmsKKzI5MzIzIGExMWNmYWU3MWRlYjA3ODZlNjIyMzAwNzA0OTg5NDAwY2E5NjU0MGYgcmVsZWFzZTIyLW1haW50CisyOTMyNCA4NGEzZGQ5OTRjZDE4ODA0ZjYzM2I2YzgzZjVmMjk2ZDBiZDEzNTM1IGxlZ2FjeS10cnVuaworMjkzMjUgNTRmMzJiYTcwNDdjYjNmYjE4OTIwNzEzZTdiYjRlNGJlNThjNWVjZiByZWxlYXNlMjItbWFpbnQKKzI5MzI2IDlkZDljNTMxY2E3OGM0ZjEwZGMxMTY0YzYxMjk5ODAzNWQ2NzA1YzQgbGVnYWN5LXRydW5rCisyOTMyNyA0YzhhOGM3NGY0YmRhOTRmZjM4NWY2NWMxNWU0YmYyMzdmMGNmZjBiIHJlbGVhc2UyMi1tYWludAorMjkzMjggODIzZTk0N2UyNDUwMjU3ZmZjNTdjOTgxZDI1Y2RhMWJmYWVlYTZjZiBsZWdhY3ktdHJ1bmsKKzI5MzI5IDM1ZjQ3NmQ2NDgxZWY0MjlkZWRhYzBlNjI5NDJmMzYyOTA5M2E4ZmIgbGVnYWN5LXRydW5rCisyOTMzMCA0MWUwMzYxYTIxOTEyMmZhZTczM2MwZjZkMmQ1MzJmMTBhMzRhNTYyIHJlbGVhc2UyMi1tYWludAorMjkzMzEgZTU2YjUyZTc4YmM5NzkwYjUzYjY3ODg1MGEzZjM3ZDJmMjgxZGM5OCBsZWdhY3ktdHJ1bmsKKzI5MzMyIDE1MWFhMzQzNGFhNjcwMjM5NzJjYTczYWRkY2NmYzM3ODk0MTdhOTcgbGVnYWN5LXRydW5rCisyOTMzMyBkMTdmZmEwNTIyYjc1OWVlOThhNzNjZDUxZDY3YjhkZDY5OWVlYWFlIGxlZ2FjeS10cnVuaworMjkzMzQgYjlhYTg3MWY4NDRiZmNmZmNlYzYyNTZlNzIxMjY1MmJjYzJmYjhhNiBsZWdhY3ktdHJ1bmsKKzI5MzM1IGI3YjAxMmU3OGRhMzVlM2JjNTUxN2M1MjAxMWQ1YTFhOTZiOWIzOTAgbGVnYWN5LXRydW5rCisyOTMzNiAyYjE1ODI2N2IwMGU0YzA5YzAxMTMwN2IwOWMyOGEyNjJlNzJlZWE0IGxlZ2FjeS10cnVuaworMjkzMzcgMmJjYjQxNjExZmFlOTE5MzUyYjQwNzJiMDlhN2ZiZWE5YTIwYjE5MiBsZWdhY3ktdHJ1bmsKKzI5MzM4IDRlYjk0YzU2YzQ2YTQ3MWE0NmQzZDlhN2QwZDdhMDgwMTJmNzkxODEgbGVnYWN5LXRydW5rCisyOTMzOSBjYjkxMGMzOTQ5MjcxNDk1Mzc1MDE0MDIxM2VhMjVlNTY5MGEzNjI0IGxlZ2FjeS10cnVuaworMjkzNDAgYTljZmViNDJlMjQwOTk4NjRhM2ZjMDY2Y2NkMzE3ZDlkYmYzN2Q3NyBsZWdhY3ktdHJ1bmsKKzI5MzQxIDU3ZmIzZDVlM2RkMzc2MDFlZmY4Mjc5ZWIwNjViN2FkZGExNWZiZDUgbGVnYWN5LXRydW5rCisyOTM0MiA3OTMwNWEyZWZhOGM4NzhlYzM3YjFiYzkwZmY5YTliMTE2ODliZWE4IGxlZ2FjeS10cnVuaworMjkzNDMgOTI1M2ZlODZiOTIyZmExYTFkMTJiMjBlMDFlMTYxYzMzYTliM2YwYiBsZWdhY3ktdHJ1bmsKKzI5MzQ0IDVmN2EzMzRjMDkyNTEwOTk0M2I1ZmVkYmY1ZWU4ODA0N2FmYTViN2QgbGVnYWN5LXRydW5rCisyOTM0NSAxNTYwN2VjNDlmYWYxMDgxODQ3YmRiOTA0ODI5NzFjZmQ3ZDgzODdjIGxlZ2FjeS10cnVuaworMjkzNDYgZDRjZmE0MDQzYzA5NGQ3YmEwYmYwNWM2YzQxMjE0OTk5M2NhNjJjMiBsZWdhY3ktdHJ1bmsKKzI5MzQ3IGNhMDI1ZTlmZTViYzJlOTA0YjQyM2VmN2FhZWFlYTA2YmY3Zjg3ZGUgYXN0LWJyYW5jaAorMjkzNDggODNhMzJjNTQ3YjQ5OTNiNjBmNWE0ODNhNDgyZGRhN2JlOGZlYmZmMCBhc3QtYnJhbmNoCisyOTM0OSAwOThjZGJhZDU1Y2YyZTc2MDQyZjY3MjQ0NmUwMTgzYjQ4MTI0M2RhIGFzdC1icmFuY2gKKzI5MzUwIDJkN2Y0Mjc3MDczMzI1Y2E4OGRhMzg3ZjFhOGNkZjgxN2U1NDczYzkgYXN0LWJyYW5jaAorMjkzNTEgNDU4N2QxYWYyYzQxNDNlNWE0OTBhZmQ2M2E5ZDMxMGViYjBiNTRhYSBhc3QtYnJhbmNoCisyOTM1MiBhYTJlYTVmZjVmNDI3MDlkNzQ4ZDY4ZDk3ZGM4M2MxNTllMjllN2I0IGFzdC1icmFuY2gKKzI5MzUzIDA3YzZkM2I5MjkzYzI3NWRjOTUxOTllNDM2YmI2YzAzYmQ0Y2E5NDQgYXN0LWJyYW5jaAorMjkzNTQgNDZiNTY3M2NhMzgwZGFiODQ1YTVmZDk5YWQyYmI4ZGVkYjkwMTIxZCBhc3QtYnJhbmNoCisyOTM1NSBlMzY1ZTZiZjQxYmIwMWY2ODMyYmRmMjNiZTExNmQ3OTRlNTg3NzQ0IGxlZ2FjeS10cnVuaworMjkzNTYgNGQ1MDMxOGIzZWIxODFkYjdkNjI4OGZkNTVhMDM1MDFlYjk2Y2U2MiByZWxlYXNlMjItbWFpbnQKKzI5MzU3IDhkNDRkNjE0OTQxZDQ3N2E2NmJjMzE3ZjA0NTYzM2NkYTIyMGI2MDkgbGVnYWN5LXRydW5rCisyOTM1OCA2ZjE4NTA4YmVkM2QyNzg4NWNiZGZmYWU5YTNkZDE4ZWQ3ZWZkZjE2IGxlZ2FjeS10cnVuaworMjkzNTkgN2U4MGU3ZDA1YTE2YzgzOWI3ZGEyNzVhNjk0NjgzMmM0Yzg2NmM4YyBsZWdhY3ktdHJ1bmsKKzI5MzYwIDM0ZjE3ZmI0OWM1MTMxMTAzOTg2Y2U5YjIxNWQxMWI0YjBlNjJiYzUgbGVnYWN5LXRydW5rCisyOTM2MSBmZWMxNWJhZDM4NmQ5ZjBkMzA3MDVjNGQ2YzM0NTA0MjMxNGJiMDM3IGxlZ2FjeS10cnVuaworMjkzNjIgYTcwZmNjNWRiYmE1MDVkZGI1NTg2OTdmMTc2YTNlZDA4YTg0Y2RmMyByZWxlYXNlMjItbWFpbnQKKzI5MzYzIDUyOWRhNTA1ZWFiYzczMTAzODkzMGJmODcxMWJkZDliZjQxMmYwOTIgbGVnYWN5LXRydW5rCisyOTM2NCAxNzUwNDFlMzQ1ODdhNzYxZWFiZjZlODcwYWE5MDRhOGRjOTg0MWYzIGxlZ2FjeS10cnVuaworMjkzNjUgN2YwMzBiOGY5MTdkOTBiMDJjNGYzOWUwYjAyZTExZWJlZjFjOGVhYSByZWxlYXNlMjItbWFpbnQKKzI5MzY2IGZiZWE3MGE0MDI5MTU0MjE4MzFmYTVjYjJhMTQ4MGE3MWY5MjJjYmEgcmVsZWFzZTIyLW1haW50CisyOTM2NyBhYzIzOWVlMGM5ZThiODcxZGEwODZkMDRhNGMzZDY3ZjdmNjY2ZDQxIHJlbGVhc2UyMi1tYWludAorMjkzNjggY2Y4NzkyMDM1MWFjZTkyNzdhNjdiOTE0YzM1ODU2ZjNhMjAzY2JjNCBsZWdhY3ktdHJ1bmsKKzI5MzY5IDQwMmZkYWU2N2U0NDBmNGQ4NmE1NzM5MTM3NjQ0YmY1OGNkNGIxZmUgcmVsZWFzZTIyLW1haW50CisyOTM3MCAxOTUwMGM5YjU4YzE2MWJmYzUzYTZlN2M2MDA2ZjY1OWVjM2U2OTlmIGxlZ2FjeS10cnVuaworMjkzNzEgNTA5YmIwYjZkZmEzY2JjYzkwYjczNzIwZmI4NjhlNzY0MDc4MmM3OSBsZWdhY3ktdHJ1bmsKKzI5MzcyIDEyNDkyNDUyMTJlNDQ2MTYxYzRmNWE3ZWY3YjBjZGE0ZmZiYWFjOGYgcmVsZWFzZTIyLW1haW50CisyOTM3MyAzN2Q4N2RjODAzZDdhNGJkNjJkZTc1ZjExMjJhZWUxN2RjMzY4OGM5IGxlZ2FjeS10cnVuaworMjkzNzQgZDNiNzM3N2M4YWZhZGUxMjA5ZGY4OTAwMDQ4NzIzMzIyZTc1Nzg2NCBsZWdhY3ktdHJ1bmsKKzI5Mzc1IGMzMzk4YzI1ZGZlZjdkOTA2NTZlZDNjZGExMzcxYTMwYzJjNjkxOTUgbGVnYWN5LXRydW5rCisyOTM3NiBmYjdjNTJjYTk4NDA1MTBlNmZmMWI2YjM3OTAxMzkzNzRkY2Q3NmI0IHJlbGVhc2UyMi1tYWludAorMjkzNzcgMDk1ZGJiZWJhOWMwNGZkNjQ0MzUzZDM5NTFkNDA4M2NkZjRhYTlmNSBsZWdhY3ktdHJ1bmsKKzI5Mzc4IDQ4N2QzYzI0OTBiYzAzNTg4MTIwZWFkMjVhZDkwN2ZhOTg1ZjEwYTUgcmVsZWFzZTIyLW1haW50CisyOTM3OSAwM2MzZjYxMGUwNTQxMzA4YjRiNTg0ZTZmMmU4M2QxNWIxMmUyZWRjIGxlZ2FjeS10cnVuaworMjkzODAgNTE4MjhlYTUwYjU5YzBlODFlNGM3N2NlNTBhNDFjOWY0MDI2MDg1MyBsZWdhY3ktdHJ1bmsKKzI5MzgxIDE3OTQ4Mjg3NWNmYmE1YzQwZjdmODg3MmY3MTg5ZWU1ZmFjODk4NjkgcmVsZWFzZTIyLW1haW50CisyOTM4MiA1MDkwNWRiMzVkYTViMGYwNjlmZGM0ZjI1ZDU5YjAxNmZjOGMxOGI3IGxlZ2FjeS10cnVuaworMjkzODMgNmVhOWVlZjk5MTA4NDc4NjMwOGY5ODc4ZWE2MDIzY2ZhODlmNzJmYyByZWxlYXNlMjItbWFpbnQKKzI5Mzg0IGRmMDU1YTllZmY5Y2Y5MDc3OGMwZGJlNmRjMzBhOTEwYjIwZDdjMTIgbGVnYWN5LXRydW5rCisyOTM4NSAwYmFjNjZlMWIzNTY5MDRlYWU0MmQ3ODgwY2U3YjNmYTQ2NTViNjcyIGxlZ2FjeS10cnVuaworMjkzODYgYWNjZDJmNTRlMTg0N2FjNDVhOWVkODkwMzk0MTg0ZTJhZjFlYmE4YiBsZWdhY3ktdHJ1bmsKKzI5Mzg3IGQzMmM0NWQyNzhiMjQ5MGRmNTVlOWY3MDgyM2YyMTFhYTg0OGVhYzUgbGVnYWN5LXRydW5rCisyOTM4OCBmN2RhMzNiY2UxZDkzOTk2YzhlN2JjZjI0NDYwMTYzOTgyZjgyNzYyIGxlZ2FjeS10cnVuaworMjkzODkgZmJhMTZiOWJjOTUxN2Y0YmQ5ZjU0M2EyZmMzODYxNWZmMWU1ZTgzNyBsZWdhY3ktdHJ1bmsKKzI5MzkwIGIwNjM4MzI5ZTNiOWExYTliNjViYTFiNzBiZTVjMzEwZmJiZTZlYmQgcmVsZWFzZTIyLW1haW50CisyOTM5MSBmMmRhZTNkOWE3NWJkM2MzZTU4NmRlMjJhMjljMTZjOTQxMjQwN2Y5IHJlbGVhc2UyMi1tYWludAorMjkzOTIgOGJiNjAwM2Y3ZjU0YzU5NjZlYWVlZTQ4ZTZkOTBiZmQ1MGJmMjAwYiBsZWdhY3ktdHJ1bmsKKzI5MzkzIDViNmQ1NWI0NTI4N2M0MzRmNjJkMTBjNzdlYTQyZmI3MDc3YmVhZDUgbGVnYWN5LXRydW5rCisyOTM5NCA5OTAxZmRhN2MzNjY0YTdmNzUzMjMyZTllYThkZThlZmUwMWNlYjU5IGxlZ2FjeS10cnVuaworMjkzOTUgNGVmNzY4NmM0Yzg4OWY2NzE2Njg2MmIyM2ViNDE2ZDk5MWI2NzBmMyBsZWdhY3ktdHJ1bmsKKzI5Mzk2IDRmNGUwMjYwYjc3MTMyMzgxM2YzN2NkOTVhMGJmZjE1YzExZGZiNWIgcmVsZWFzZTIyLW1haW50CisyOTM5NyBlOGZjNDU5ZWMwMTU1ODViZmIxMDEyOTcxOWJmMTUxOWZjMzYxOTVjIGxlZ2FjeS10cnVuaworMjkzOTggNmU0MTRmYmE0NmY2OGMyOWEwODY1Y2NjNWNlNGRhOWRkZDUxZTVhMyBsZWdhY3ktdHJ1bmsKKzI5Mzk5IDgzNGIwZTAzODljNWE5YjNhOTI4OTU0MjVjNzRkNjk3MDRhMzk3NWMgbGVnYWN5LXRydW5rCisyOTQwMCBkYzRhMDMzNmEyYTMzY2MxYzZhODQ5ZjQzMWQ1MzgzNjI3MjI2NmRlIGxlZ2FjeS10cnVuaworMjk0MDEgNmQ1NTQyY2EyNzdhMzlhODk3NjRjNjdhMzcwNzgyNTJhZjM5NTY0ZCBsZWdhY3ktdHJ1bmsKKzI5NDAyIDU4OTQxZmNiNmY1YmMxNTZhMWIxZWI4Y2Q0NTI0N2Q3NDYyNTI4NTIgbGVnYWN5LXRydW5rCisyOTQwMyA3MDQ5MjY4ZjI1MmQyNzI1ZTc4ZDk1NTZhZGM5ZDdjODQzYWVkY2RjIGxlZ2FjeS10cnVuaworMjk0MDQgNzU3NTZjODU1OGJkOTExNzFjYzU4NDA3MzczNjVkY2U5ZWQ1ZjU0NSBsZWdhY3ktdHJ1bmsKKzI5NDA1IGRlZjk2MDlkOTM2OWNhOGFlNmVlMjlkN2EzYTVmMzRhZjllYmU0OTIgbGVnYWN5LXRydW5rCisyOTQwNiAzMDY1YjU0ZTNhYjcxYmYxN2RmMjZhMWJkM2IwYjA3ZDdjYzk3ZWZjIGxlZ2FjeS10cnVuaworMjk0MDcgMTFmY2NjY2QzNjAwNDc5MTY3NGE0NWZiZjI0Y2JlMDJkZDkyMjY2ZiBsZWdhY3ktdHJ1bmsKKzI5NDA4IDc5MDcyOTQ3NzYxMGVhNzdiODE2NzczYmQ3MzYwMjZmZGQ1ZTk5YWYgbGVnYWN5LXRydW5rCisyOTQwOSAwNGNjMTJiZGNlZGVhYTc1YmQ1NGIwZTYyOWZlYjAzMTRjNTg4ZGFlIGxlZ2FjeS10cnVuaworMjk0MTAgYmU4ODE2MTQ4NDhiMjg4NjNmZjIzZDU3ZmUwMTA3ZTg5NjZmZWEwMyBsZWdhY3ktdHJ1bmsKKzI5NDExIDk0MjQwYWQ1MGRiZTJlNzFiOGNiM2Q2OGZlYTk1MTNlYzdmZWQ3NzUgbGVnYWN5LXRydW5rCisyOTQxMiBiNmVlODA0N2IyNTBkNGE5NGRmY2M5NmY4YTllNWVjMmIwMjc2M2IyIGxlZ2FjeS10cnVuaworMjk0MTMgZmI1N2Q1Nzc3YTI0OTJiNzI3M2YwNGY1YzhhMjQwOTNhNmI0MDYyNyBsZWdhY3ktdHJ1bmsKKzI5NDE0IDQ4ZTQ2MTJmODdjZDkyOGI5ZWY3YWM5N2MzZWM2YWYzOTgwODdhMTMgbGVnYWN5LXRydW5rCisyOTQxNSA0M2Y3MDEwOWNkYTVjNTU4YmUyOTY2OWM1ZjQ5Mjg5MTZmYTQ4MDg5IHJlbGVhc2UyMi1tYWludAorMjk0MTYgZTFkYjFmOTBlMTdmOWQzNzBmMTI3N2ZhZTk0ZDc2NjBhMTU0YWM4ZiBsZWdhY3ktdHJ1bmsKKzI5NDE3IDdiNzczYTEyNzFjM2RmMzgyNGY3MDllMDRjODVlZjZiN2E5NDhiM2YgbGVnYWN5LXRydW5rCisyOTQxOCAzZGI3NzJkNDVmOTg4NmM5YmMyMzAxNjQyYjBjOTM3OGRmZTI2NDRkIGxlZ2FjeS10cnVuaworMjk0MTkgMjZiNDQwYzM3Yzk0Yzg5MjYxY2NmOTkzM2M2Y2NlM2Y1NmEyY2UzNyByZWxlYXNlMjItbWFpbnQKKzI5NDIwIDI1M2U5ZWRmZGZjMDYwZmY3N2I0ODk2ZjRhZTJiNzcxY2YwOTg5YmUgcmVsZWFzZTIyLW1haW50CisyOTQyMSBhYWUzNzY0YzRkNThkNDkxZjRjNjVmMWFhMmUwMDRjZTEwMjFiNmUxIHJlbGVhc2UyMi1tYWludAorMjk0MjIgYjkyNDZmOGZiOGZkMzA0Y2VjNzM2ZWViYWExZDIyOWE5ODcwZThhZCByZWxlYXNlMjItbWFpbnQKKzI5NDIzIDgwOGU1MTNhMmY1YzJmYzQ4ODk2Zjg3YTc2MjEzYWEwZGU2MDljZmQgcmVsZWFzZTIyLW1haW50CisyOTQyNSA4NTg1ZmQ5YWVjZWY5NWFkZTY1ODVmODFkOGY3OWExMmQ2NDQ5ZjIxIGxlZ2FjeS10cnVuaworMjk0MjYgMzZkNDE4YmVhNTUyMThmMGYwZjYxMDQ4M2YyNTZhNDhiNjM5OGE1NyBsZWdhY3ktdHJ1bmsKKzI5NDI3IDQ0NWZlYjI2YWRmYjlhYTUyMDFmMjY0NTVlYmIzMDgwNGU5ZGE2MWYgbGVnYWN5LXRydW5rCisyOTQyOCBmNGYxNzY3OGZkZDg2NThkYmE0YmZmZDllOTIwMjAxZDEwZmYzMDdjIHJlbGVhc2UyMi1tYWludAorMjk0MjkgOTQ5ZWQ4MzY1ZDU4ZDM1MWJjNzIwNTU2YTMxZWQwZmUyYmI1NGFhMiBsZWdhY3ktdHJ1bmsKKzI5NDMwIDE4ZWRmMjNiZjQ5OTNkNzEwMjk0N2UzNDQ3ODllM2MxMzVhMDQzZWYgbGVnYWN5LXRydW5rCisyOTQzMSBkYmE2MGQwMjRlNDg0MzYzYTJmOGU5Y2QzOTc0ZWVjYTdiNDRhYjE5IGxlZ2FjeS10cnVuaworMjk0MzIgMDk2NjQyZDdlY2EyNWJiN2QyY2IyMjYzMjU4OGM1MjE4MGRjNzJlMCBsZWdhY3ktdHJ1bmsKKzI5NDMzIGZjNmExOWY2OWFjN2UyYjYwZWU3OWNlZmEyZmZjMTYzZTJkMDlmMzcgcmVsZWFzZTIyLW1haW50CisyOTQzNCAwMWJmOWM4OGQ5NjAzNmI2NjYyYTE1OTI3YWRkMjZjMjRjNDU2Y2UzIGxlZ2FjeS10cnVuaworMjk0MzUgNzI3MzRiMzlmOGFhMGFjZjUyNmFkMjNhNjc5YWVmYTQ2YWEwMjhhZSBsZWdhY3ktdHJ1bmsKKzI5NDM2IGQ5MGVmNDZkMDgzODI4YmM5NWMwYmQ0NmI5MTFlZmViYzkyYmU3MzEgbGVnYWN5LXRydW5rCisyOTQzNyA0YTI0YzZhNjQyOWE2NjczNTA3ZTNhNmI3OTUzMDZmNTk4ZDY3NzE5IGxlZ2FjeS10cnVuaworMjk0MzggOTFkM2Q0NDUyYzQ4MjIwYjQ2Nzk1YzAzM2NjNGNiZTRmMzA1N2IxNiBsZWdhY3ktdHJ1bmsKKzI5NDM5IGUzNDlmZTA5M2IzNGE5MTg0OWQxODk5YWRhNTViYTNiMjk5YjdkMzQgbGVnYWN5LXRydW5rCisyOTQ0MCAzMjNlNGMxMTQ2ZDBjNjAyNWY2YmZkZTQ4YzJmMTA2NDMwZTcyMjBmIGxlZ2FjeS10cnVuaworMjk0NDEgNTUxN2MzNmFjNDk3ZGMzNjQwYjA2YmNkYjkxZWQ5NDM5N2E4OWE3NCByZWxlYXNlMjItbWFpbnQKKzI5NDQyIDY4NzViZDdjYjU3MDU3M2VlYzMzY2JlNjc0MzVlYjE5MGNjYWFiZWIgbGVnYWN5LXRydW5rCisyOTQ0MyA1YjgyOGZmZTFiMzVmMDFlZTZjYmUzNzAyMTVlN2IzYzdkOWQ5Yjc1IGxlZ2FjeS10cnVuaworMjk0NDQgNDI1MmIwNGYzZWVkNjM0Y2UyM2NjZDIwN2Y4ZTU1NjQ0MmYxOTQ4NiBsZWdhY3ktdHJ1bmsKKzI5NDQ1IDhlNzMzODM0NzRlYWViN2VlMjkyZjZkMzliNjM5ZGM1Njk1M2I1MGYgbGVnYWN5LXRydW5rCisyOTQ0NiBkN2RhMDgwZDc3NjMwNGM4YmMzOWVkNzU3ZGViMTdlYWRhYTA5ZmYxIGxlZ2FjeS10cnVuaworMjk0NDcgNDcyYTQyZTIwMjQ0MDlhZGM1OTYwYTYzMDEyZDIyOTVmOGIwMzkwZSBsZWdhY3ktdHJ1bmsKKzI5NDQ4IGNiODI5OGE2ZWQ0N2M0NGRkZjEwNjUxYTZlNzAyYWU0MTk2OTE3MTggbGVnYWN5LXRydW5rCisyOTQ0OSA2NjYyZjlkNDIyMGI1Y2RhMDY0NWUxNmI2MzliM2FhOTg0ZjA4MTZhIGxlZ2FjeS10cnVuaworMjk0NTAgYTY4YzZkNjJmZTc4OGRmNDAwNDkxZDhmNjg4YWVmMzk3MjljNGZkMiBsZWdhY3ktdHJ1bmsKKzI5NDUxIDA0MGFmOWM3MzZiYjE5OGJlODUzNjMyN2ZiZjEyNzUzZGU1ZWM3YzAgbGVnYWN5LXRydW5rCisyOTQ1MiBiNjQ3OGQ0NjM1NTU0YmUxNTI5YWU5NWRhODkxMjRlY2Q1YmQzMTZlIGxlZ2FjeS10cnVuaworMjk0NTMgMmQ4MzdlMjA4M2ZhZjM1MDk0MmQ2YzQ2ZjZkOGI4ZTY2YTdlOGU0NSBsZWdhY3ktdHJ1bmsKKzI5NDU0IDFkMDJiNDA1ZTMxZmIyMTljMDc1MmQ0MDIyOThmNTlkMjAwNTk1NmUgbGVnYWN5LXRydW5rCisyOTQ1NSA0ZjFiNzM5NmEzYzU0MjY4OTQ0NzdlNzMxZWJiODA5MzMxNjNjYmEzIGxlZ2FjeS10cnVuaworMjk0NTYgZDgxMmI4YWFlZmIzMWI0NjYyZmI2YjU2Y2Q5Njk5YzdjNzQ0YmRhNyBsZWdhY3ktdHJ1bmsKKzI5NDU3IDAxNDdlYmVmOTQ1M2MzNjFmNDM4NDJhOWUzMzdhNWJjNDFiYmUxY2YgbGVnYWN5LXRydW5rCisyOTQ1OCAwNmUwMDU2NjZjNDIyOTFmOGZkZDBiNTY1MmQ1ZDQ2MjRhMmE4MjQwIGxlZ2FjeS10cnVuaworMjk0NTkgZTFiZjQ2MDRjMGE1ODRiMWJiMTgwNDgyMzkwNjU1NzdlODI2ZTJhOSBsZWdhY3ktdHJ1bmsKKzI5NDYwIGQzMDhkZjgyNGUyZDE1YmMwMTJmOWMxN2RiMjU3M2NmMTkwMWRiMjggcmVsZWFzZTIyLW1haW50CisyOTQ2MSAxNTIyMTk4MDcxNDQ3MmQxMjM0YTA2YmE0YjE5OGM3M2IxNWFjMjc0IGxlZ2FjeS10cnVuaworMjk0NjIgMTQyNWJlYTJlYTY2YTEwYzhkYjM4YmJhMDNhNWQ4NzQwMWQ3ODc0NiByZWxlYXNlMjItbWFpbnQKKzI5NDYzIDljZWQzZTUxODdlZTFkNjY1OGVkNDBlMzFmZGIxMDc0NGU1ZmQ2NzQgbGVnYWN5LXRydW5rCisyOTQ2NCA2ZTExYWUwNGFmMTA5NDlhNjBlNWRiY2FmNzA4YjdlYTMwMmI3MDI1IGxlZ2FjeS10cnVuaworMjk0NjUgOTBmNGVlZWZjNTE2ZjlmM2QzZTA3YzEwNWMzMWFkZjM3ZjEwMGI4MiBsZWdhY3ktdHJ1bmsKKzI5NDY2IDYxMWFmNzljMGU4OTJiNGVjMzQzYmEwZDlmMjljOTUyYmQ5MWZkZWUgbGVnYWN5LXRydW5rCisyOTQ2NyAyNzNjYWQ3ZjdkZjcyMTk2N2RhYmI0YzQ0ZTFlZDczYTc0MmU0MWM0IGxlZ2FjeS10cnVuaworMjk0NjggMTk3NjJhNDkzNmZjODRiNGMwOWNlMDVmNDZlMTkxYTI2MjBlMmRmYSBsZWdhY3ktdHJ1bmsKKzI5NDY5IDBmZGZjY2RmZWMwNmYyZWVjMjQ1YjNhY2JjOTE3M2UyMzdjNjJlOTYgbGVnYWN5LXRydW5rCisyOTQ3MCA5MGEwOWNkMTUzMDU5MzFkZjVkMDE3NjQzMjhiNjA5N2U4M2FiOWE5IGxlZ2FjeS10cnVuaworMjk0NzEgYmI4MTMzNDZiMjI3ZWUxYzk2NDYxZjJjM2U1YTM5ODk0ZmU1ZTdhMSBsZWdhY3ktdHJ1bmsKKzI5NDcyIDFhYWExMmMwOGIzNTk0OWY5NGQ1Mjk2NGE2YWQ2Njk3ZTA4NmVhMmEgbGVnYWN5LXRydW5rCisyOTQ3MyBhNzUzNmNlYjA2ZjYzY2JmZWZjMjA5MmFlYWNjYjZkMjc4YTYzNDgwIGxlZ2FjeS10cnVuaworMjk0NzQgNTQ4ZTZmZmJmZjc1N2FiODk2YWNlMDg5MjUwNjk3NjI4ZjJhZmNiNyBsZWdhY3ktdHJ1bmsKKzI5NDc1IDNmM2I3YTYwODZiNzNiM2JlYjBjODc3YjgzNmU3YmI1OWRhOWMyZDggbGVnYWN5LXRydW5rCisyOTQ3NiA4YTg4ZTk3N2E3MWJiZTYzZWMwYjdjNjcyZmE3MmQzZjBmNDEyZjA1IHJlbGVhc2UyMi1tYWludAorMjk0NzcgODNkMjFlYTk0NTdkYjJlY2ZjNmQxOTE0NjNkOWYyYmRmOWFlMjliZSBsZWdhY3ktdHJ1bmsKKzI5NDc4IGJkZTM2NjA1NDJjZDNlMTkwYWM5OGY2YmQ1ZWFiZDc0YjNiOThmZTEgcmVsZWFzZTIyLW1haW50CisyOTQ3OSA0MWVjYWVjNWI0ZjgxZWY4M2RiN2VjYzM1MjAyMGEzZGNlYmViNmJlIGxlZ2FjeS10cnVuaworMjk0ODAgNzIwNTdlZjkwMmFhZWUwNzBkMTFmY2QzM2YzNDQxYmRmNzU2NjEyYyByZWxlYXNlMjItbWFpbnQKKzI5NDgxIDI4Y2ZmNjBhNjA5NzAyZGU3OTkxNzE5NjQwZTk2MDU5MWQ2NzZkMDEgbGVnYWN5LXRydW5rCisyOTQ4MiA0OTQ2ZDRmMzdkODRlMmFhNDg4OGRjMGUxYWFjNTVlZjg4OThhOWYxIHJlbGVhc2UyMi1tYWludAorMjk0ODMgM2Q2MjdlM2Q5NTYxMzY1MjFhYTdiNzQ0MzNkMzM3MTM1MjM5YTUxNCBsZWdhY3ktdHJ1bmsKKzI5NDg0IDMxYjU4NDljYWM0MmZiNTgxMzQxNTJiZjJkMTA0MTk0ZDk1MmMyMjQgcmVsZWFzZTIyLW1haW50CisyOTQ4NSBiMjhlOWJmMGYwNDZhZTlhM2NjOWQxMDhhMzQzMDk2ZjQxNWY3NmI3IGxlZ2FjeS10cnVuaworMjk0ODYgMDI5ZTc1ZmZlNzUwZDM0YzNhZGUwNTIyMTJlMjMwY2RmZDY5NmNmYyBsZWdhY3ktdHJ1bmsKKzI5NDg3IDM2ZWEzMWJjOTA3NjUwZTEwNGY4ODY3ZWYzNTE4ZDk5ZTI5MTJmNTEgbGVnYWN5LXRydW5rCisyOTQ4OCAwM2IwMjcwZTExNmIzNzJhNWM4MTNkOGYwNDFkOWUyZmZiMzAxZDFiIGxlZ2FjeS10cnVuaworMjk0ODkgYzZjYTM5YjE1OGNkZjliMzYwM2VmODMxOTU4OGM2ZTEwMWU3NTMyNyByZWxlYXNlMjItbWFpbnQKKzI5NDkwIDMyNjNhZDRmY2Y4MTFhMTU3ZWE5OTBlY2U4YjkzOGM4ZGE4MmU5ZjggbGVnYWN5LXRydW5rCisyOTQ5MSBkNDI0NTU4ZDI0ZjkwMzJhOWFhMGQ3NTU0YjMxNGE2MmEzZGZkYzU0IGxlZ2FjeS10cnVuaworMjk0OTIgNWJlNWM4NGRlYTIzZmY3MDI0OGQ2NDI5YTJhMzgyZWI2MjU2YzhmNSBsZWdhY3ktdHJ1bmsKKzI5NDkzIGJkNjc3YzhlNDA2NzAyNDk0NmFjZDZmMGI5NjAzOTQyNmQ2YjU3ZmIgbGVnYWN5LXRydW5rCisyOTQ5NCAzNmRlNWE3MzEyNTdlYmFiMTRlYzExZmRmYzI4ZWY0NjY0YWU5MWIxIGxlZ2FjeS10cnVuaworMjk0OTUgOWJmZDQ3YTljOGIzNTAxOTRiZmQ1OTg1YzIzMjhlYzQzMjE5YWMzNyBsZWdhY3ktdHJ1bmsKKzI5NDk2IDZmYTVjOTU0MDhlYmQ4NDQxOGY4MDNmMWEzZjBhMTcwODdiNWE1NjEgbGVnYWN5LXRydW5rCisyOTQ5NyA4ZTMyNDY4NDI3NzM0YzlhYTE2YjU0MjEwNjRiZWJiMTc5YTY4M2NmIGxlZ2FjeS10cnVuaworMjk0OTggNzU4MzAxZWUwYmI3NjVjOGFkZTc5YmY2NDJhMWJkNmUxNjNiNzFmYiBsZWdhY3ktdHJ1bmsKKzI5NDk5IGY1NGU4OTI3MmFkZWQyOTUzYjE5YTI2NzE2MzA5YzRmYjJhMTg4YTEgbGVnYWN5LXRydW5rCisyOTUwMCA5YjQ3Mzg2YmE1YjgwNTRjNzdmZTc3OTllN2VmZWNmYmQ4NTRmNDE2IGxlZ2FjeS10cnVuaworMjk1MDEgMTI0NGY0YzM4MzRmNDkwMjJmYmU4MmJiNGExOTVjNmQ0NWM2Y2EyNSByZWxlYXNlMjItbWFpbnQKKzI5NTAyIDE4ZTA5NzIwNzM4ZjZmZjUzMWQ3NzQ2NTU0YjlmMDRhYWYwMTRjYjggbGVnYWN5LXRydW5rCisyOTUwMyAwYmRhMjBhZmU2MjMzZmIzN2QyOTkxNDNmNGU0NmQ2NWYwYTQyYWFlIGxlZ2FjeS10cnVuaworMjk1MDQgZDY4ZmM0OWE3MDk2MDFiYzAwOWIzMmI5NmE1Y2Q0YjgyYjg4OTFjMyBsZWdhY3ktdHJ1bmsKKzI5NTA1IDY0YTk2Yjk3ZTFlOTdjZWI3Y2Q1YzYzZWI3M2JkMGZlZmQ2ZjY2MWIgbGVnYWN5LXRydW5rCisyOTUwNiAyZGY5OGZmMmNkZGExYTY1Mjc2NDExY2UxM2I0ZGJhZDRlNjk0MTQxIHJlbGVhc2UyMi1tYWludAorMjk1MDcgYTJmMzY5MzQ2MzkzMDdlYmZlMDY4Yzk0NzYwNzlhNjk1NTAzYzA5ZSBsZWdhY3ktdHJ1bmsKKzI5NTA4IGY1NDM5ZjgxMzNmODU3YjM4OWY2OWE0YWVhNWExMWRkMzE1OGU4YjggbGVnYWN5LXRydW5rCisyOTUwOSAyMjVlYTFmNTJkZTk1YTkxOTYwNTVlYjk4ZmQxYTZhNWUwZjA2M2M5IGxlZ2FjeS10cnVuaworMjk1MTAgMWRlN2FjNzI5YmZhOTIzYTJlMDBkNjI1ODgyNjNhMzhhMTNiYTg1NiByZWxlYXNlMjItbWFpbnQKKzI5NTExIDE4M2ZjMjFmYjg2NjIzMjNkY2IzMjk4MDNmMzNlZWNhNjJjZTAwZWEgbGVnYWN5LXRydW5rCisyOTUxMiA2ZWQyZTIzYWFlNDU2NTIzODA2ZTJmZDcxMmY0Njc5N2VkZmQ0ODRiIGxlZ2FjeS10cnVuaworMjk1MTMgNzcxYjZmNTIxYjk1NjFkOGU0MmU5MjRkMWExNTQzM2U0YzY5MzkyMyBsZWdhY3ktdHJ1bmsKKzI5NTE0IDUyMWU4OWM0ZmY0NDc4MjA5MTczYTQ1ODk4OGYzMDA2MWIxMmE2M2IgbGVnYWN5LXRydW5rCisyOTUxNSAzYTc2MDZhMjIzN2JiNjk1NzIxY2QwNjM5MTViMzVhNTAyZGQ2OWE2IGxlZ2FjeS10cnVuaworMjk1MTYgNTI1Y2RkYjc2ODJhY2VlN2VkOGI5Mzg2NGE1NzhkMjFlODcyMDFhYiByZWxlYXNlMjItbWFpbnQKKzI5NTE3IGU5YWEzOTRjNzE5MTcyN2ZiYWM1ZjVlODVkODNlZDI5YzhmNmM5NzYgbGVnYWN5LXRydW5rCisyOTUxOCBjZTM2OWNkNTYyNmJlNzE0MWIzYjgyYTZmOGQyZDk2YjA4OGJjY2FjIGxlZ2FjeS10cnVuaworMjk1MTkgNGI4MDQ0ZDFmMWFjMzI4MTlhNmMwYjYwMTE5YzcwNmY1N2Q5MWIwZiBsZWdhY3ktdHJ1bmsKKzI5NTIwIDlkYTAyNjkzN2ZhNTI4MDk1MGM1ODc5YjBkNjhmNTgwNDNjNzlhNTQgbGVnYWN5LXRydW5rCisyOTUyMSAxYzk5YTVhMGI4N2JkZTYwMmRkYTBmYmVkY2ZlNDM1YTE0ZTQ4NTRiIGxlZ2FjeS10cnVuaworMjk1MjIgNmVlMmY5YjRiZjVjNGI3MmZjMTA3NzQ1NTYzYmU5OGYxYzkyZjM2MiBsZWdhY3ktdHJ1bmsKKzI5NTIzIDFkYmFiYzViZWZmN2Y1NWE5YmJjNDAyYjViYTgzZTc4M2E2MDM4YmYgbGVnYWN5LXRydW5rCisyOTUyNCBhNTU5OTc0MGE2ZTgwZjkwODIxYTZlODE3ZDk1OWJkYThjZTZmY2UzIGxlZ2FjeS10cnVuaworMjk1MjUgYjRhNjI4M2I5MTViYzYxZDViNjY5OWVjM2Y0OTVhMmU4YmU5MDdlOSBsZWdhY3ktdHJ1bmsKKzI5NTI2IDU4MTljNDQzOWJhMjQ2NGU5YTM0NGU0N2Q0NzlmMWY2MjQxMDIzNGYgbGVnYWN5LXRydW5rCisyOTUyNyBjNTQ3MTZhZWQyNmEwNmRlYWE2YTlkNTFlMjQ4OGFlMzlmMjMxYjZkIGxlZ2FjeS10cnVuaworMjk1MjggMWI0YzVlNjZhNGI0YWQxN2NhMTA1YmM0OGZjOWVlNmQwNzA0OWU4YiBsZWdhY3ktdHJ1bmsKKzI5NTI5IDgxMjEzNThlMzIxNzAzYTU3NGU4OWYwN2Q0NjM1NzAxZmI2MzhhYjIgbGVnYWN5LXRydW5rCisyOTUzMCA2OTY4NjRhYTA1ZDMzNDMxMDI1MDcwMjU2MGZjOWFkNjE2MDcwMTYxIGxlZ2FjeS10cnVuaworMjk1MzEgNmE0MjUzNmZiOWVlYmI5OTAwZTRlYmJhZjM5YTkxNzY1OTFhZDgzMSBsZWdhY3ktdHJ1bmsKKzI5NTMyIGJhMjE5NGFkM2I0MjNjM2ViODNjOGQ0MzgwODBiNDI2MDk5OTkwZDUgbGVnYWN5LXRydW5rCisyOTUzMyAxYTMwZWQxOWY2NGFmZjkwYzBlMWU2MTA1YTJmMzEwMzUwZTg5ZDMyIGxlZ2FjeS10cnVuaworMjk1MzQgMTNiMmVjNTM2ZTA3MDVlOTgxM2MzZGNhNTZjNzQzNmJiNGRhNDM4NCBsZWdhY3ktdHJ1bmsKKzI5NTM1IDlkZDkzNzlhYzZkNjc5M2I3NzY4YjFiOWEzYzVjZDRiODM4OWEwY2MgcmVsZWFzZTIyLW1haW50CisyOTUzNiAzYzIzZTRjM2RhMDIwODZmNWE2ZmNiNzJlMzQ3NmFmMjg4N2Q2OWJkIGxlZ2FjeS10cnVuaworMjk1MzcgOTUxZGFjYzIxODQ3ZDcwNTBmMjE4Nzk0OGFmOGNlZDUxZjAwMjcxNiBsZWdhY3ktdHJ1bmsKKzI5NTM4IDliNWI3ZGEzNjJhNWM2ZmE1ZGVmMzIwMWJiNTU0NzBjNzdkNjJjNDggbGVnYWN5LXRydW5rCisyOTUzOSAwZGJkNmI3M2FiZDIzMWYxMzg5Zjk2ZTYzZGRkNmNmMTQ3OWQ1NGUyIGxlZ2FjeS10cnVuaworMjk1NDAgZmU2ZTk4OTRjMmQ0MmE0YmFlY2JkMDZjOGQ5NWFiOTI5YjdlMGY1YiBsZWdhY3ktdHJ1bmsKKzI5NTQxIDk1MTQwNzkzMjAwMTlkNjlkMDE3N2RkODEyZTMxYThlODc5YTQwNzggbGVnYWN5LXRydW5rCisyOTU0MiBkMjdlNWNhZDM4ZDc4MjRlNGU4ODA5ZjFlYzFkYmYxMWEzMzI5YmNlIGxlZ2FjeS10cnVuaworMjk1NDMgZWY1ODkzYmI3OWVmMzljOTljNzU2NDgxNzQxMWVkYTU5MTk2MTk1MiBsZWdhY3ktdHJ1bmsKKzI5NTQ0IDg3YjdmYWUxMGExOTMwNzc3YjkzYTE3MmYxYTcwYjJkYTBlNzJlZWYgbGVnYWN5LXRydW5rCisyOTU0NSA4NjhmZjBkZmFiZDJjYmIwNjQ5NDBhMjA5YmMzMDgwYWVhZjQ1ZThhIGxlZ2FjeS10cnVuaworMjk1NDYgZjJlZDcyMmZmMDAzNTBjMjYwODFhNmJjYzhlODRkOTFhMzFlZDliNyBsZWdhY3ktdHJ1bmsKKzI5NTQ3IDg4YmJjMzBiMDg0NzhkMTMyNjczMmFmOTVjNDcxZTdiY2VlYTJhMDIgcmVsZWFzZTIyLW1haW50CisyOTU0OCBiMDYzYzQzZjRkZjAzMmNlODgxZDExYzU3ODEyZDA4NmU2YTE2MGQ4IGxlZ2FjeS10cnVuaworMjk1NDkgZGFiMmMxMmI2ODJlNzg3NTU4NzFjMzdiYWU5NGU5OWFiMmNmNTc1NyByZWxlYXNlMjItbWFpbnQKKzI5NTUwIDdmYTkzYjVkZGZiZDQ5MjU3ZTQzMjI0YTgwOTM4ODE1NTk2ODBmMDUgbGVnYWN5LXRydW5rCisyOTU1MSBkMmJlNzk2YzRiODFkN2I5YTczNzJiYTYxYTRhMWNiZWIwNWQ2OTBmIGxlZ2FjeS10cnVuaworMjk1NTIgMWFmY2EzNzVmMmE5ZTM2ZjI4OTkxNWIwNjIzNTIyOGFkNTQwOTZhZiBsZWdhY3ktdHJ1bmsKKzI5NTUzIGYzZDQ0OTI2YTFiZWZkZWZkN2UwZmE4ODRiNGRmMTdhY2QyMDUxYTQgbGVnYWN5LXRydW5rCisyOTU1NCA5ODMyMmMwNzVmNGQ5NTM4ODYyNWM3YjBiY2UxZDUxNzdkNjQzN2UwIGxlZ2FjeS10cnVuaworMjk1NTUgNTNhMzgyMzQ0OGQ5M2FmMjNmN2U5YzQyOTRhYTJkODVlMWRmODYzOSBsZWdhY3ktdHJ1bmsKKzI5NTU2IGNhYjE2NzYxM2U0M2I3MzdiZjk1NGM4MmQ0M2RjZjVhMjk5OGM1N2YgbGVnYWN5LXRydW5rCisyOTU1NyAxM2FmODBmMDIwODAwOGYxMmEwMDBmYTlhNDY5M2Y1NzBiY2FjZmNkIGxlZ2FjeS10cnVuaworMjk1NTggOTk5YWNjZmE5MWM1NmRhN2FhOGViMjMyNjM4NGM2ODMzMjdmMmVjZSBsZWdhY3ktdHJ1bmsKKzI5NTU5IGYzYTY0MDM1YmE4YmYxOTYzMjk1MzRlMjc4MGJkZmM5OWIxN2QzYWEgbGVnYWN5LXRydW5rCisyOTU2MCAyYzFiYmZjMTIyYzFhNjZmZWQyNjY0MGQyZWNlMTIwN2QyMTNhOGIyIGxlZ2FjeS10cnVuaworMjk1NjEgNGEyODhiNDk0Y2IyYzlhODBhZDNlM2Q0MTkyNzM0YTBjZjFlNTlkYSBsZWdhY3ktdHJ1bmsKKzI5NTYyIGQ2OWU4YTlmZWQxMWZjZjM1OTgyNDUwOWRjMWMyZmY5ZjNlMWE4NmUgbGVnYWN5LXRydW5rCisyOTU2MyAzNGU3MGI4OWJiYjcyMzI0M2E2OTIwZDBlMmViZjM5MWI3NmFjNDEwIGxlZ2FjeS10cnVuaworMjk1NjQgYjU2NGVjNGI3ZTViMzMxOWU0MmMzNzI2OTBmNjczMDQ1OWM5OGQ5OSByZWxlYXNlMjItbWFpbnQKKzI5NTY1IGYzNTM3MzE3YjFiMjVhNmYxZTA0NGJmNTUwODI2YzMxNDc4OTMxYmQgcmVsZWFzZTIyLW1haW50CisyOTU2NiAzNTE1OGZkNjBiM2JhMjJiNzJkOGFmMzljOTE3Nzk0Y2RmODc1YjhjIHJlbGVhc2UyMi1tYWludAorMjk1NjcgNjJmODhjMDJjOTg3MjhmMzA2ZWI2YmQxZTI3YWM3YjgwNTliZTM1ZSBsZWdhY3ktdHJ1bmsKKzI5NTY4IGQ5NDc0YzA0NDViYWJmNTU2YWU0MTcyOGIyNTY1ZDA0MmQ5Mjk3MWMgbGVnYWN5LXRydW5rCisyOTU2OSA1MjY1MmZiODY0OWQ3MzFhZDlkNzA5YWEzYWY4Njc2NjI4NjdlYjAwIGxlZ2FjeS10cnVuaworMjk1NzAgZmYxYzYwNDZmMTBiOTQ3ZjYxYTZmOGE4NzA2NDY3MDBkM2UzZTcwMyBsZWdhY3ktdHJ1bmsKKzI5NTcxIGY2MmY3NzNiYzlmZGQyYTJkOWEwZjZhMzNhYzhiMDRhMmIzNDFhMjQgbGVnYWN5LXRydW5rCisyOTU3MiBmNDY3NDI3ZTAzZmE5ZDVjYmMxZDMyMzJiY2E3ODc1ZjUzNDVhMTVjIGxlZ2FjeS10cnVuaworMjk1NzMgY2JiZjdmMjQyNWQ5ZTEwOGEyNjQ5MzFhOWFmMDRlMjM1ZGZmMWQ1YSBsZWdhY3ktdHJ1bmsKKzI5NTc0IGU1MjYzNjVkZGNjZGZkMGVkZDAwOTk5YjBjOTRlNTZjZDA0ZTA3ZWMgbGVnYWN5LXRydW5rCisyOTU3NSA5MzNjNmQ2MDhkMDFiM2NkNDMwOTdhMzIyNjFmYzkxOWIzY2VkMWI4IGxlZ2FjeS10cnVuaworMjk1NzYgMTM1ZjA4YjczYmQ1ZDhiMWU3MTBhMWNmOTViMGJmMzk1NjZmMWNhMSBsZWdhY3ktdHJ1bmsKKzI5NTc3IDc1NjMxOWExMzdiODMyNmRmMGEwYzgyZTVkZjU1MTI1NTZiNmFmNjcgbGVnYWN5LXRydW5rCisyOTU3OCAwODIwYWQ0OTgyOWQ4MGI5ODc1ODM0YmMzMjdiYmFkMzhiYTI2ZjFlIGxlZ2FjeS10cnVuaworMjk1NzkgMWYzNjViOThmMTFjYzU0NWFiMWM2ZTk3MWJlYWY0NzY0ZDVlYzcxOSBsZWdhY3ktdHJ1bmsKKzI5NTgwIDA4MTE5MDQ4NGFmNjE2MTZhYTFjN2VjOTU0MDZhYWIyMDc1Y2ZkOGIgbGVnYWN5LXRydW5rCisyOTU4MSAwMDg0ODM0MmQ0OTg0YWU0NzVjM2QwOThjODM3YmE5ZWI0NmVmYWEwIHJlbGVhc2UyMi1tYWludAorMjk1ODIgNTNlOTA0MWVmYmUzZmQ2YTQ5MTk4ZjY2Y2IwZjQ3ZjRkODMyMDNmNSBsZWdhY3ktdHJ1bmsKKzI5NTgzIDU0MDg4MWVlMmQ0YWNjNGM1ODg2NzM5MGE5NjdhNzdiNWE1MjljMjggcmVsZWFzZTIyLW1haW50CisyOTU4NCBlZjNmNjkyOWZjMGUxOTU5NTRiZDVhN2Q1NjQxY2NmODJiOGI0N2RkIGxlZ2FjeS10cnVuaworMjk1ODUgMjgzMjYyOGVlOGNjODQwOGEzNjZhYWQ5Yjg0ZGExZGI3MDJlNDBmNCByZWxlYXNlMjItbWFpbnQKKzI5NTg2IGU2MWI5NDY0NzRkZmM2OTI4MmNkOTE3ZWI2YTBmYzNjMjg5ODYyOTIgbGVnYWN5LXRydW5rCisyOTU4NyA5NjRkNmI3OWMyMmUyZTljM2RmYWE1MzgzMTFiNzBkN2ZjYjRiYWI2IGxlZ2FjeS10cnVuaworMjk1ODggMjY3MzczMmFkNWYxOTFiNjY5YWQ5NDYzNDg3NmRhM2RlMDY1NTg4NCBsZWdhY3ktdHJ1bmsKKzI5NTg5IGFkYWE0NTBlN2Q3MGRjMDIxYTIxNzRhZTlkNDI2OGFjZWU5NDc0ZTcgbGVnYWN5LXRydW5rCisyOTU5MCA5ZmZlYTUwZTgzMzAxNzc5YThkMGIwNGViMjNhOTQwYjYzYzI1YWY0IGxlZ2FjeS10cnVuaworMjk1OTEgMmYyYTJmZDg0NGJkNzRiYThmNjQwYjQ0OWI2NzFlYWZkY2M0YmYyNSBsZWdhY3ktdHJ1bmsKKzI5NTkyIDkwNDgyMDc5OTJmMDBiYjUzY2EyZGUxNTU3ZGJhZDQwYjcxYjU4ODkgbGVnYWN5LXRydW5rCisyOTU5MyA4OTY1YTJiODA0YjUwNDk1YmNmNzEzNzlkMmNmYTFjZDExY2E3N2VhIGxlZ2FjeS10cnVuaworMjk1OTQgZTlhZWJkNGNmNTZjZjRmODI2OGIyYWYwZjNkZTUyZDFlZjRjNjAyYSBsZWdhY3ktdHJ1bmsKKzI5NTk1IDljNGJiYjNiYmQwZGU3MjM2ZWU1NTI0Mzg3YWU5YjkzMWFjNTNiZjUgbGVnYWN5LXRydW5rCisyOTU5NiAwMDQyMTZkN2ExZGFiYzAwOWYyZjA5ZjE4ZDRlOWVmYmM4NzQwZDhkIGxlZ2FjeS10cnVuaworMjk1OTcgMWViYjVkYzdmNjk2ZWY3NTI3NzY2MDc3ODk1NWU0OWRkZGRjY2JjNyBsZWdhY3ktdHJ1bmsKKzI5NTk4IDY0MTY3NzYwOTk4YzQzMTQzOWJkZWI4NjFiZTEyOTJhODc1MWQ5MGYgbGVnYWN5LXRydW5rCisyOTU5OSAzYWQ0ZmFlOWVkM2FkMGM2Yzg0NDU1MDZjZTdlMWRjNDg2ZmRhMTI1IGxlZ2FjeS10cnVuaworMjk2MDAgY2ZiMzE3ZTRhNzcwMWQyYmZkNGQyZTQ3NGI3NTE5ZmVmY2VkNjcwOCBsZWdhY3ktdHJ1bmsKKzI5NjAxIGE2ZDE2ZTg0ZmVjMDU0ZTk0MjFkMWQ1ZDA2Y2Q3ZWI2MTc4NWYyMjcgbGVnYWN5LXRydW5rCisyOTYwMiAwOTlkMzZjYmJiNjExYWI1ZmIzMjRiYjJmNDI1NjNhMDQxMzA0YzhhIGxlZ2FjeS10cnVuaworMjk2MDMgOThmM2ZkMWVkNDJmMDU3NjY1NTIyZDk0MWYwZTY4NzcxNGE4MzM2ZiBsZWdhY3ktdHJ1bmsKKzI5NjA0IGUyMjI2ZDQ3ZWJmMDEyOTdjOThhMWE5MDdiNGFjNTkxMGJkNDRkYjYgbGVnYWN5LXRydW5rCisyOTYwNSAyM2VmN2MxNjNhMTI1MDI5ZjUxMDljOTg1NTcxNWIzOThjN2U1NWVhIGxlZ2FjeS10cnVuaworMjk2MDYgNDIwMzA0N2UyMDIyMzdlNGM5MWE4ZGU0MjViMDUwMGNhNzVmOWZkYSBsZWdhY3ktdHJ1bmsKKzI5NjA3IGE1NmM5MGNmYzAwYzBkYmE3NTA3MTA5MTc4ZTgzOWJhNzFhMmUwNGIgbGVnYWN5LXRydW5rCisyOTYwOCA0MmNmMWI1ZTYzOTI2ZjZkZGEzNjllZDk4NmFlMTRkMTQzMTgzMGI5IGxlZ2FjeS10cnVuaworMjk2MDkgZTk4YTIxMzEwMWIzOGE5YjhkNTNiOGMxYzIxMmE1MjgwMTQ3MTNjYSBsZWdhY3ktdHJ1bmsKKzI5NjEwIDRiOTA1ZTE5ODNiNjEwYjI1YTM1MzViOTU5MjA3MmE2OTg3ZWI3YTQgbGVnYWN5LXRydW5rCisyOTYxMSAwNzY1MTJhMGM2YzIyYzkyYjcyODMyMTRjZDg5YjQwMGIyZmE2YjY5IGxlZ2FjeS10cnVuaworMjk2MTIgZjQyNzhhZjhlZWZhMDJiYWZhNzk2ODZmZDllYzRiYjIzOGNiNDliNCBsZWdhY3ktdHJ1bmsKKzI5NjEzIDZlNDFjZmQyNWJkZjBmZTI4NmExZDZkNzMzZGM1NzBmOTlkYTlhZGYgcmVsZWFzZTIyLW1haW50CisyOTYxNCBhMmFlNjM1ZTQzYjYxODcxMTI1ODU3MjFkOTc2OWNkMTM1NmZmZTBiIGxlZ2FjeS10cnVuaworMjk2MTUgNGFiNmI3YzNmMzExN2QyNzYzMDI2MjdlNmI5ZWIwZDAwNDdlMzJkZCBsZWdhY3ktdHJ1bmsKKzI5NjE2IDE0NGQ5ZDQ4Yjk2Y2ZlYTgzN2EwMGM5ZTNlNGUxYzJjMzY4MWUzOTMgbGVnYWN5LXRydW5rCisyOTYxNyAwMGI0Y2ZmOTM2MThlODAwMmQ5YjM3YWJlOWJkZjkxOWJiNWE4NmNjIGxlZ2FjeS10cnVuaworMjk2MTggNmNlOTIyOGEzZGEyMDBhMmNkMTEzNWJlMTkzN2MxMTc5ZTA3YmY0ZSBsZWdhY3ktdHJ1bmsKKzI5NjE5IGMyZWM3ODlkZWU1Njc2YmVkMDJjNmE2ZmU3MjU5OTBiZGFhNDk5ZmUgbGVnYWN5LXRydW5rCisyOTYyMCBiZGRlOTRlMDI5MTgwYjU0ZTM1MzAwMWM5MDdmNDY3MDZmOWE1MWEwIGxlZ2FjeS10cnVuaworMjk2MjEgYTQ4YWNiNWI0MGVmYzQ1NTY4NWQ1N2IxNGZiOWU1YzRhYjk4N2Y3YiBsZWdhY3ktdHJ1bmsKKzI5NjIyIDkxMzkyN2QzMjYxZWRiMjEzZGQ2MjY3NTg1YzM1NTg5ZDljMWQzY2MgbGVnYWN5LXRydW5rCisyOTYyMyA5YmI0YWRmYmZjYzgzMTM5NzQ4NTI4ZGFlMTM2ZDc5MDEzN2U1MTY5IGxlZ2FjeS10cnVuaworMjk2MjQgNjVkNmYwYmZhNDYxNTA0MGQ0YWI4YjExY2FjMTJjMzQwYzk5ZjdiMSBsZWdhY3ktdHJ1bmsKKzI5NjI1IDBiNjExZTUwYzVmYzNjNGRjZGU3ZTA3NDBiZGVhY2I4ZTZkZjc5YWQgbGVnYWN5LXRydW5rCisyOTYyNiA1ODA4M2Q4ZWE5YTVhZDNlNjAxYjNhMDBjMzZjYjgzNWYzNGVmMzQ3IGxlZ2FjeS10cnVuaworMjk2MjcgM2UxZTk2MTZmOGM4NjVhMDI0MjhjNWJjMjAzZmY2MDEyMzNlYjE0YyBsZWdhY3ktdHJ1bmsKKzI5NjI4IDk3NDk3MzJhMGY2YjlmZmU4MGY5ZmQyMzAzZjI3MzVjYzZmYTlkOTQgbGVnYWN5LXRydW5rCisyOTYyOSBlYzM0MTRjNTg4NzI2Mjk4NDYxNTkzNTQ5MzhkMTFkNDg4NWNiM2M0IGxlZ2FjeS10cnVuaworMjk2MzAgNjA3OGFiYzY5MDM2ZmM3NmZiZTBlOWM0ODM1YzRkOWI1NjY5NDY3YyBsZWdhY3ktdHJ1bmsKKzI5NjMxIGJiNzE4NzgyZTczNjljNWMyNWI3ZmZkNWUyNDI4MDZjNzkzN2ZjOTMgbGVnYWN5LXRydW5rCisyOTYzMiA4Y2ViNDU1ZjU1NDExMmNjN2Y1ZTAyNTg5OThjZGEwODIyNTExOGE1IGxlZ2FjeS10cnVuaworMjk2MzMgZjQ5MjkyNjIxYjE3M2FhZjdkOThhYWMxMGFiMDA3YzBiZjhiYmQ0NyBsZWdhY3ktdHJ1bmsKKzI5NjM0IDI0YTU1MjJkMDc4NGIzNTlkMjA5ZDQ4OWJlNzFhNmIwMzIwOTk5NGYgbGVnYWN5LXRydW5rCisyOTYzNSBmMGVlMzdlODkzMmZhYzhkMDUzZTcwNjMxOWFkNWYxOTcxNjZlOThlIHJlbGVhc2UyMi1tYWludAorMjk2MzYgMjdmNjQzMTRmMGRlN2VmYWI2YjZlOWI3NWRiZjkwODhiZjgxNWU0ZSBsZWdhY3ktdHJ1bmsKKzI5NjM3IGU2Mjc3NGI0NDdjMTA3YTg4OGM0NGRmMzYzMDMwMmQ1NGE3OGVlNTYgcmVsZWFzZTIyLW1haW50CisyOTYzOCBkZDEwZDk3ZDMyOWE2MGU3MGUxMmE0MjY3ZjkxNmJlNWY2ODA0YjU2IGxlZ2FjeS10cnVuaworMjk2MzkgM2MwODNmODgxNjU1ZDM0ZjZjYzMwMDg1YzY3ODE3NDFmMzEwODM0ZSBsZWdhY3ktdHJ1bmsKKzI5NjQwIGFmNWI0MTc2ZjRlZjY4NmRhMWVlY2Q4NGZjN2M3MjAwYWI1OTZlMzIgcmVsZWFzZTIyLW1haW50CisyOTY0MSA2M2EwODYzOWRhZTJhM2VjMGUyM2Y3MDM3MTQzOGU1NDlmOTkxZGExIGxlZ2FjeS10cnVuaworMjk2NDIgMjlmN2QxZDVlNmQ2MjQ5ZmZlYTYyNGY4NjE0MDljODZhY2Q0MzhlMCBsZWdhY3ktdHJ1bmsKKzI5NjQzIGUzZDI2OTFmYjZiOGMyZmEwY2M3ZGM0NTU1NTI4YmJhOTEzODIyNTYgcmVsZWFzZTIyLW1haW50CisyOTY0NCAyM2RmNDY1NmU4YTJhYTQ3N2MwN2FkZjRiM2M1OTc3N2RlNTJkOGJhIGxlZ2FjeS10cnVuaworMjk2NDUgMWFiNjU3ZTAwNzYyNzU4NGM5ZjhhN2RkNThiZDhiYjE5YzdiYjRjYiByZWxlYXNlMjItbWFpbnQKKzI5NjQ2IDk1YzljNTY2YmRkNmQ4Y2VjY2VhYTc5NTBjYmJjMzYzMWJhOTM2ZDcgbGVnYWN5LXRydW5rCisyOTY0NyA0YjZkOGY1MTY2OTgxN2YxMzcwOGU2Y2EzM2EyYWM1ZmZkMDg0OTk5IGxlZ2FjeS10cnVuaworMjk2NDggMjUxZTU1MmM4MzUyMTBlNjdiYTAzZGE4YmM3NmY2YjE0ZGY1ZTI0NiBsZWdhY3ktdHJ1bmsKKzI5NjQ5IDViNjJiOWVhNDYwYjIzOWUzMmZiNjJjMzZiM2I4MGMzYWU3ZDk4NWEgbGVnYWN5LXRydW5rCisyOTY1MCBlNzE3NzBhN2Y1NDlmYThkM2ZiYzY0MjNhNGRhN2ZhNDE3OWZjM2YzIGxlZ2FjeS10cnVuaworMjk2NTEgMDRkM2Y5NWNmZDg5ZjBjMGI0ODBmZGIwODUzNjAzMGZkMzNkNzhjNCBsZWdhY3ktdHJ1bmsKKzI5NjUyIDA4MjkzMGRmYmViZGRiZTk2ZmQyN2FmMTIyNDY3MzY5ZjZmMTE2ZDggbGVnYWN5LXRydW5rCisyOTY1MyAxYzA1NTE3MWI4NzExZmJiOTk4NjRjM2Q5YzdjZjRkOGQ3ZWFkNTRhIGxlZ2FjeS10cnVuaworMjk2NTQgZjk2ZmEzYTZkZGE0MThjMjQ0YzFlZDhmZDVjYThhYmE1NzYwNzE3YiByZWxlYXNlMjItbWFpbnQKKzI5NjU1IDgzYWU0YTkwMmRmMDhmNzM5OTMyMjI2YmI2Zjg3OGQ5ZWEyMmE5ZDQgbGVnYWN5LXRydW5rCisyOTY1NiBkYmUyNTY4N2JlNmU1YzM2OTE3M2Q3OTQwODY0ZmJkZjg3YzM0ZjFhIGxlZ2FjeS10cnVuaworMjk2NTcgMGIyM2NkYTAwNDE3MGQ5YTYyYzIwYTQ5MGI4NTMwZDRkMDE3ZjYxZCByZWxlYXNlMjItbWFpbnQKKzI5NjU4IDQ2ZDBiNDZhNzU0ZmUxYjU3YWZiOWJhZDliOTdlMTQ5ZDYwMzZjMzIgcmVsZWFzZTIyLW1haW50CisyOTY1OSAxYWY0MTBlMzNiZWNmNTgxZDc0YjdmNDI5OWE0NTQxYjkxZDA2OWZjIGxlZ2FjeS10cnVuaworMjk2NjAgZjcyYjFmODY4NGEyYjk4MjZkNDQwOGNkMzAyN2E2NjUyMjA4YTc4YSBsZWdhY3ktdHJ1bmsKKzI5NjYxIDNlNTlkNjc0YjhjMzY0MzNlY2UwYzVhMDlmYzg2ZDc2YmNiZjhjNDQgbGVnYWN5LXRydW5rCisyOTY2MiA0YzI1MzJjMWNiMmRlMjRkM2Q1MDEzMzNkNGU0ZTBhOWQ4ZmQ2N2IzIGxlZ2FjeS10cnVuaworMjk2NjMgYWYzOTY0Njc5ZTJmYmQ5YmY5Njk2YWZjYTBkNDFiODM2ZmE2YjEyMiBsZWdhY3ktdHJ1bmsKKzI5NjY0IGFlMTY5ZjViOTRlMDQ4MTM2NDg5NDg1ODg5YjMzODczZDdhOTMxYzQgbGVnYWN5LXRydW5rCisyOTY2NSAwZTBiM2RjZjc4Nzg5ODk0MzFkOTg4NzU2NjcyMDNjZmVhMThlNmUwIGxlZ2FjeS10cnVuaworMjk2NjYgMzhkMWY4M2Q1NzcxMDhhNmUzMDllMDYwMGI4MDE5OGE3MTg3NzE0NCByZWxlYXNlMjItbWFpbnQKKzI5NjY3IGQ2ZGM0NmI5YWYzYzBlMjY4ZWE0NzBlMjdjNzI2MGNkYzg1MDE1NTAgbGVnYWN5LXRydW5rCisyOTY2OCAzOTBiZjVkMmQ4ZTdkZjY2MDAxOTE5ZGEyY2JmMDUwY2UxMTM4Y2RmIGxlZ2FjeS10cnVuaworMjk2NjkgOWM3YWE0M2IyMWE5YTliMGVmZWNlMGM4M2NmZjM3NjkzMWE1ZTkwMiByZWxlYXNlMjItbWFpbnQKKzI5NjcwIGQ1NjMzZTkzZjcwN2YzNDJiNTQyMDAzZGM5ZWRmMzEwYzljNGZkNWUgbGVnYWN5LXRydW5rCisyOTY3MSA5MzczNTc4ODIyYjU5MGUwN2EwMTBkNjVjZTc2NGNjMmUzZTRkYzU5IHJlbGVhc2UyMi1tYWludAorMjk2NzIgYTQyZjYzYTgwY2M4NzM2YTdhNjUwZmM0YTE2ZTFjYWNmNDVmOTU2NyBsZWdhY3ktdHJ1bmsKKzI5NjczIDc4NWFkMDc0MDI3YmYwZTMzZmNiYTU0NTk2YTA5NjEwY2E1MzM1OTMgbGVnYWN5LXRydW5rCisyOTY3NCBjYjcxZTdjNjIwZTJmNTBhOTdhZWYyNGMwM2VkNzJlMDNkZjc1NDQ5IGxlZ2FjeS10cnVuaworMjk2NzUgMWRmOThmNjhkNjA3NTMwZWFhYzg5OGFhNTQ3YWUxNjc2ZTA4OWJhOCBsZWdhY3ktdHJ1bmsKKzI5Njc2IGQzN2YxMzc4ZDhiOGJmOWFkMzY5YWJkMDYzMmJiYjJlMjQ3NzI4OWMgbGVnYWN5LXRydW5rCisyOTY3NyBlMDIzM2M0NDI1MDI2ZWE4YjA5Y2NhM2Q4ODliZTM0OWQzZTE3N2M4IGxlZ2FjeS10cnVuaworMjk2NzggN2U1OGExNTA0ODcyNmYyYmIwNGVlOWM5YTdmNWI5NTYzMGYxZjk2MiBsZWdhY3ktdHJ1bmsKKzI5Njc5IDFjZDgxMDZiY2QyMDcxYzlkZjU2YTExOTRhNTI0YmQ5YmM4ZWM1NDIgbGVnYWN5LXRydW5rCisyOTY4MCBiYWY4N2QyNmJhMDNkNTM3YmViOTNmNjA4NWQ5YTVkMDNjNTI0NDJmIGxlZ2FjeS10cnVuaworMjk2ODEgM2Y1NzczYTg4ODhlZmQ2NjViYTc2MzZhYTZmY2M0MThiZjYxZDMwZSBsZWdhY3ktdHJ1bmsKKzI5NjgyIGQzMzAwNWY4Mzg4ZTc0ZTE5NTdkYmFmZWIzN2NiZWViZjEwYTQ5MTkgbGVnYWN5LXRydW5rCisyOTY4MyBmZjkyY2MyN2ZkMWZmMzBkNTQxNWI4ZDBlMTE5MGJhNzE2ZTEzNGFkIGxlZ2FjeS10cnVuaworMjk2ODQgZmZlYzY3NDA5MTQwNTliZGVhOTEyMmMzM2JkYzcxMTBmMTlmZGI3OCBsZWdhY3ktdHJ1bmsKKzI5Njg1IDU4ZmJhNTk1NzI2ZWFkYWZlZjYxZGNkMDIzYTc1ZTZlYWRmZjc0MWIgbGVnYWN5LXRydW5rCisyOTY4NiAzODM1ODcwMjdjNzRkMWMxYjgzNzNkZjA3ODgxMjA1MmQ3Yzk0ZGE4IHJlbGVhc2UyMi1tYWludAorMjk2ODcgZjQ2NWQ2NjkyYmRlMzM1MDMzMTRjMDUzNGZkMDkxYzQ4Nzk1OGZiYiBsZWdhY3ktdHJ1bmsKKzI5Njg4IDdmODcwNDY3YzE4MmE3NWUwZDQ0ODU0ZjRhNzhkNTJhYWRiN2YyNjAgbGVnYWN5LXRydW5rCisyOTY4OSBiODMwMzQxM2E1N2U1YTE1ZGMxN2M0OWM3NDY4ZTY0NmFlNmE1MjA4IGxlZ2FjeS10cnVuaworMjk2OTAgYTVkMWUwODE0MDYxYzUyYWIyYmMzN2Y2MWQ0MWU1MWVlMDYyODA5NiBsZWdhY3ktdHJ1bmsKKzI5NjkxIGU4OTA1NjcxODIzNWRjYTg3YTEyNmU1MjJkYjUzN2U5NmZkN2Y1ZDAgcmVsZWFzZTIyLW1haW50CisyOTY5MiA3Y2ZiNTJmOTgxMzk2ZmVlZTg5ZTcxYjNmMjA3NmI2OTlmODdkNThiIGxlZ2FjeS10cnVuaworMjk2OTMgMTI3ZTRiZmFjYmI3NTA0OWMzMTRlNWIxMDdkOTI4MmNhNzYzMDU0OCBsZWdhY3ktdHJ1bmsKKzI5Njk0IDc2ZjMyZmJlMDNjYzU0ZTU1NGYyMDQ5ZmFhMDFlZWI0MzAxMTJmNDQgbGVnYWN5LXRydW5rCisyOTY5NSA1N2ZjYWNiZGM4ODVhNTU3YzIyMzNlMjFiYTI0ZTVkYzNlMWRmMDUzIGxlZ2FjeS10cnVuaworMjk2OTYgMjBmYTYzMjliNThmZjgwNDA2MmFhODlmOTUzMmY5YjdiNGM1OGUxMCBsZWdhY3ktdHJ1bmsKKzI5Njk3IGViMGMwYzgzYjkyYTA5ZmY2YWRjNDg0NmVkNmQzNWRjOWU5MjAxMmMgbGVnYWN5LXRydW5rCisyOTY5OCBmZmJlYWQzNDg0ZTEwMzNiMmMzMGMzODYwY2RhYWQ2YmI0NDJmZmRmIGxlZ2FjeS10cnVuaworMjk2OTkgYzk1MTkwNTMyYzBjYjZkOWUxZTA0NDg3MDYzMjExOGFjNDYxZmExMyBsZWdhY3ktdHJ1bmsKKzI5NzAwIDUyZjYxMzNlMjBkMjBlYjYwM2JiZWIzODY4NDIzZjkxZDJiMWNjMGEgbGVnYWN5LXRydW5rCisyOTcwMSBhZGI5M2Y0ZTk3ODA1MWU0NmZhYTAwYTdkOGRkZTJhOTgyNjQ4MDM0IGxlZ2FjeS10cnVuaworMjk3MDIgMTkwMzg5ZmQ4MTU5YzdjNDZkZGY5OThhZTI5NzQxYjJiM2EzZGFhNyByZWxlYXNlMjItbWFpbnQKKzI5NzAzIGVjZGZmNDYyMDJjMGZmMzVjYmVmMDU5ZmIxNDY4ZGVlMTZhMTYzNGMgbGVnYWN5LXRydW5rCisyOTcwNCA1Mjk3MTlhNTM1MGU3NWVlMzFmMWQ0Mzk0MzU0ZGQ1MjhmYWI4ZjgxIGxlZ2FjeS10cnVuaworMjk3MDUgY2IyNDg3MDRiNzg0ZTNjNzI3NDU5MTk5ZDY3ZDYxOWM1NGMyYTJiOCBsZWdhY3ktdHJ1bmsKKzI5NzA2IDc5NDIwZmEyMjJiODUwNTk1YWM1N2Q0ODhkM2MyYTYyNzhiOTlmMzYgbGVnYWN5LXRydW5rCisyOTcwNyBlMjZmZjc1ZGNmNjkxMWMwMWIyMzFkMmJlYTE2NWUzZGEzN2QwYTlmIGxlZ2FjeS10cnVuaworMjk3MDggYzQyYjYzN2I5NTE0NmQ3Mzg2ZDQ4NWEwMWIxOTM0NGYxOTk3ZjljZSBsZWdhY3ktdHJ1bmsKKzI5NzA5IGM4NTQ4MDY5MmNhZTljZDkwMGE1MGE2MWRmY2I0ZTllZDA5ZWIyZTcgbGVnYWN5LXRydW5rCisyOTcxMCA4N2U2OWJhZGExOTVlZWY1ZjZjYTVlZjhiYzc2ZDViMjVhMjQ3MmYyIGxlZ2FjeS10cnVuaworMjk3MTEgOTNmMzBjMzg4OWFhNGI3YTgyYjM0MTFmMTdmMmMzYTM1MDFiMDZmYiBsZWdhY3ktdHJ1bmsKKzI5NzEyIDNlZTk1MTllYWE0YzQ3Njc4ZjYwZTU5MGU1NTM3ZTE2ZWRiMWE1ZDUgbGVnYWN5LXRydW5rCisyOTcxMyBlOWY4OWRiYTUwOTNiMGEzODNkOWI3MjFkMDE4YjE4MGVlYmI0OWFiIGxlZ2FjeS10cnVuaworMjk3MTQgNDQ5YjJiNWNhZjU4MmZkZGM4OTExZWU3ZDMyZDYwY2M3ZDI3ODUwZiBsZWdhY3ktdHJ1bmsKKzI5NzE1IGVkZDJlYjg4ZmQ2Y2EwZWNiNGQ2NDdiYzk3OWRiYzQ5N2ZkOTk0ZjQgbGVnYWN5LXRydW5rCisyOTcxNiBhMGVmYTRjOTU2OWUzMTk2ZGRiYmU0ZTBkNTI2ZGYzNTNiMWEyNTliIHJlbGVhc2UyMi1tYWludAorMjk3MTcgZTQyOTk3YWNjN2YxZTc1NDY4NjZmN2U3ZGNkZGRiZTZhNGRmNmVhNyBsZWdhY3ktdHJ1bmsKKzI5NzE4IGE0ZTMwMjFlYWE3ZDQwYjllZGI2MTQzMTU3ODgwYWYwZTc5MzY5NTUgbGVnYWN5LXRydW5rCisyOTcxOSBiMTM4OGY1OGJkYjVkMTBlMTYwMzMyYjBjNTlkMWQ4YmJhMDY2YWI2IGxlZ2FjeS10cnVuaworMjk3MjAgNGMwNmJkZDdkMDVjMmYzMmI3ZjQxMmZlMzkxNDM5OWQ0NmJlOGRmZCBsZWdhY3ktdHJ1bmsKKzI5NzIxIDhlZDY2ZWRmZjM4N2M2ZDQ4MjQ0NzQ3MWI4ZjRiNTljMTBiNGUxYzkgbGVnYWN5LXRydW5rCisyOTcyMiBmZjc2MzlkZGNhZjIxY2I2YzZmZmMzNDE2NjVhMmQ1OWFlMDAzNmQ3IGxlZ2FjeS10cnVuaworMjk3MjMgNjFhMGVmNTQyYjZmNWUxYjU4NWIwYTQ5ODg3MGVhN2IwOTYxYjA2OCBsZWdhY3ktdHJ1bmsKKzI5NzI0IGQ2MmMxYmEzMzk2NDA2ODY0ZGE1ZDA2MmRlMzM1ZTdkMGExNmJmY2EgbGVnYWN5LXRydW5rCisyOTcyNSAzYmUxYmRjNzc5ZTA2ZjA0OTYwYWQ5MWRiMmUxZjI4YzRmYzZkY2RmIGxlZ2FjeS10cnVuaworMjk3MjYgMGU4OTkwZTg5MmI2ZDZhMmM4Y2MzNGNkMTU1ZmJlN2I0MzYwMWMzOSBsZWdhY3ktdHJ1bmsKKzI5NzI3IDAyZDQ4ZWQ0NDdhODNiMzRjYWU4OGIzN2Y3MjE4YzMzYTI4YzVhMDggbGVnYWN5LXRydW5rCisyOTcyOCAxNDkxNjVjZGZmN2NkYzQ5MzcxOTUxM2ExNDYzNGZjZTBjZTA5NDNiIGxlZ2FjeS10cnVuaworMjk3MjkgY2RkMjg5YTA2NjE0YTNjMzQ5NzI0ZmI5OWYzNDIwNWU4ZDRiMDBkMSBsZWdhY3ktdHJ1bmsKKzI5NzMwIDY3OWIyYjgyNTRhZTY2NmQ3OGY2ZjUzODMzZGRjYWY1YmI4OGJjODkgbGVnYWN5LXRydW5rCisyOTczMSA0YmUzNGJkNzNkZmY0MWU2N2E5Y2VlMTdmNjQ5MjNhNTcyNDdiNzdhIGxlZ2FjeS10cnVuaworMjk3MzIgMjJkNzMyNWJhN2FjNDk2OTgyM2NlOGNlZTZkNTRkOWM4ZTQ0OWQ3OSBsZWdhY3ktdHJ1bmsKKzI5NzMzIGE4ZDEzMGE2YTc0ZDY4ZTliYTA1YTc5NTNlYThmNThlZjJhZDgyNjAgcmVsZWFzZTIyLW1haW50CisyOTczNCBmMjNjMzVmODEwMzM5OTljODUzOTg3NWMwNTRjYWUxNDY4OTllYzAyIGxlZ2FjeS10cnVuaworMjk3MzUgYjE5NDQzYmRmNDQ3ZTdkODFhMDljOTczZjc2YTExNWVkNDc5MTkxZSBsZWdhY3ktdHJ1bmsKKzI5NzM2IDYwZDgwOWEyNWJhZWM4MTM5MDkwYTc3NGViNDhmYzgzNDYzNWQzYWUgbGVnYWN5LXRydW5rCisyOTczNyBiMzI3ZmZjZmU5YjdiOTYxNGFhMDI4NjNkMWZlNzFlNDYxNDEzNTkwIGxlZ2FjeS10cnVuaworMjk3MzggMjA1ZmJmMWJkMDc1NjJmMjQyNTYwNmFkZjhmOTEyZmQ1OTZiODA5NSByZWxlYXNlMjItbWFpbnQKKzI5NzM5IDc2NjAxZmIwNzhkNDAxN2M4MDU3OTQyYjI3NjE0NTgxMjM3NDk3OTAgbGVnYWN5LXRydW5rCisyOTc0MCAyNDRlOGZiZTRlMjA0NTQwZDNmNDRlYWRjMzVhODE1Zjc5NDcyOTQ5IGxlZ2FjeS10cnVuaworMjk3NDEgNTMzZWI1M2E3ZmJkZDAzZWY1NDZlN2IyMGY1NjU3MjAzZTBiNzJhMSBsZWdhY3ktdHJ1bmsKKzI5NzQyIGUzOGQ1MDMzN2U4Y2Q4MzAyNGZkZDNhYTRkZGI3OTQxYjJmNTAwZDIgbGVnYWN5LXRydW5rCisyOTc0MyA0MjI3OWY3ZDI0NGRmNzRiMjc2YjMwOTUwMTVlMGY1ZjNmZDdhMDUzIGxlZ2FjeS10cnVuaworMjk3NDQgMzRmYmJjYjEwNWE0M2I2NjU2MDJiNWViNGZiNzg5ZmM0YzhkYzg0YSBsZWdhY3ktdHJ1bmsKKzI5NzQ1IDgzY2NhYWFiM2U1ZTQ3N2Q2MmY5NzY1MDQ4NWEyOTA5ZjQ1YmI1YmMgbGVnYWN5LXRydW5rCisyOTc0NiA2YjU1NmM1NDVmZmIzOGFkYmI3MGRjNDA5MmMwYmI4MGJkMWRhNTk0IGxlZ2FjeS10cnVuaworMjk3NDcgZTI3MGMwZDQxYTA1MDU3YTMxMTY0N2M2MjRiZDJjOWM4ZGEzYmRjZiBsZWdhY3ktdHJ1bmsKKzI5NzQ4IGM0MTlmY2UxNTI5ZTU3YmU0YWYwMmY3YmZjMWIwYWY1ODk3ZjYxZDAgbGVnYWN5LXRydW5rCisyOTc0OSBmYmNjZWY4YjMxNTMzMWIxNDI3NzgyZmM0ODJmYjQ0YjlhZWJkYzgyIGxlZ2FjeS10cnVuaworMjk3NTAgNTdjNmU4NGY3MWNlYzY2YTBkN2I4MTU2NmJjNjlkMDk2ZDU5MTIyYyBsZWdhY3ktdHJ1bmsKKzI5NzUxIDk1OGQwNzA4NWRjZjRhZTgwOGM2ZGI5NmVkM2YzNWNmZmEyMDU3MWUgbGVnYWN5LXRydW5rCisyOTc1MiA1MGM5NThmNzAzZTMwMjg5ZTI2YTZjMDY4ZjAwOTg2N2I3NDhiNTY3IGxlZ2FjeS10cnVuaworMjk3NTMgZDY2MTI5YjU1MWRiNGZhZTIwOGYyN2FjNTljNDc2NmZiNmM1NWEzMCBsZWdhY3ktdHJ1bmsKKzI5NzU0IDNhYzQ2NGMzNzM3NGM0Mzg0ZmVmMTgxNTA0ZGNjMzgxOTg3NWVhOWMgbGVnYWN5LXRydW5rCisyOTc1NSA3YzA4ZjZjYjkwZTRmOTZlMTJjOTMxZWQ0Mjg1MDQ1ZmVmNWFkNmYyIGxlZ2FjeS10cnVuaworMjk3NTYgZDQ0MTFkOTUwZDQ4MzI1NTAzNDU5NjA1ZGExMDVkOTI3ZTUyZWYwOSBsZWdhY3ktdHJ1bmsKKzI5NzU3IDg3NTE0MGQzMGUxNzY1NjBhZGY0MjZkZGY1MzQ5YzBiOGMxNWY3ZGMgbGVnYWN5LXRydW5rCisyOTc1OCBlZWM5OTc4MzcxNmMzYWNkYzRiZDU0MmZhNjAwZmNhMzk0YjZlNTcxIGxlZ2FjeS10cnVuaworMjk3NTkgY2U2NDBkYWIxMGU0MzJjODc5ODliODBlNGM1NWU3MTQ4N2QyMDhjZCBsZWdhY3ktdHJ1bmsKKzI5NzYwIGVmZTU4YzEwY2NmMTZkMDA2NmJkYTIxMjQxODRkOWEzYjY4ZjZmN2EgbGVnYWN5LXRydW5rCisyOTc2MSA0ZWQyMzBhMGM5MzFlYjBmMWNhNTNkYTVkOWZiMTRmNGUzNDFhZTdmIGxlZ2FjeS10cnVuaworMjk3NjIgNDJiZmM5OGQyOTViNzg1MWUxNzAxNzdkZWY3MTBmZjI0OTI4MzQ0YSBsZWdhY3ktdHJ1bmsKKzI5NzYzIDk2YmRiNDQ3NjNjMzZkZjE5NjU0MTkyODk5ZjRhODViYmIyMTdhODggbGVnYWN5LXRydW5rCisyOTc2NCBhMjRiYzZhMmUyY2RmYTY2NjNjYTI1MDcyZGY0YzY5YjhjNTEzZDM4IGxlZ2FjeS10cnVuaworMjk3NjUgYjBiNjA4NTk4MTcwMjA1ZmQxNzQwYTQzMzQ1YmU3NDQ1NzJlNzgxYSBsZWdhY3ktdHJ1bmsKKzI5NzY2IDA5MzRhOGEwYmEwZDg1NGZhZDM0MmRiMjU4ZDIzNjk3N2ZlYWY0YTQgbGVnYWN5LXRydW5rCisyOTc2NyBlOTY1NzVmN2U5NmE3ZWMyZjAwNGFlNzFjZGUwNTJiOGEyZTMyOGZmIHJlbGVhc2UyMi1tYWludAorMjk3NjggZDMxZGRjNjZiMWI1NTFmOTljZmZlNGY4NmZiZjNhNDM5YmNhMGI5NSBsZWdhY3ktdHJ1bmsKKzI5NzY5IDMxNmZkZGJjMWUwN2VlZWJkYTgwNmUxMzYwMjgxZDZjODU0NzA2ZDkgbGVnYWN5LXRydW5rCisyOTc3MCBmZjViNTEwZWJhNmI2Nzk0NWJmODMxMjQ2NmQwN2MwOWVkMzg5NTVmIGxlZ2FjeS10cnVuaworMjk3NzEgNmQwY2Q4MGUyODA0MzBkODhjYjAwMjE5ODg1ODdjZTI4MGJkOWEyZiBsZWdhY3ktdHJ1bmsKKzI5NzcyIDFiZDlkOWYwMmFkMWI0NTYyYzhiMDM4YjVkMDY0YTY4YzdhMzk0ZWQgbGVnYWN5LXRydW5rCisyOTc3MyBiZWE5OTFlNjVmZmQzOWM4OWU4MTA4Y2ZkNTgwZGVkYTM0OTgzYTU2IGxlZ2FjeS10cnVuaworMjk3NzQgYmFjZDY3OGIzYzRjZWQyMzRjMmM2ZDk0MzRhZTI3Y2MxNjI4MzA0MyBsZWdhY3ktdHJ1bmsKKzI5Nzc1IGY2ZTQ2NTg1YjZiMzRjMGRjNmJlOTk0YzNlMzE0NDAxMTA4ZDI3ODYgcmVsZWFzZTIyLW1haW50CisyOTc3NiBjNzc0MzVkODdjMmU5MjBkYzQwNTYwNWM4YjM4MzQzOTk5NzQzM2I3IGxlZ2FjeS10cnVuaworMjk3NzcgZGNkZTI1MzQ3ZTkzODkwMWQ1MWEzZmVkNzMwMjJhODI5MTJjMDIxZiBsZWdhY3ktdHJ1bmsKKzI5Nzc4IGUzYjhmNzdhNjk4MDBiMmNiMmIwOGRkMDk1ZWQ2NGRmMGNiY2I1YjUgbGVnYWN5LXRydW5rCisyOTc3OSBmZjdhZDMyYzk1NTRlZGYyOGI5ZGQ3MmRmNjRhNjBiOTMwOWY2MjdlIGxlZ2FjeS10cnVuaworMjk3ODAgMGM4OTkzN2NlYmVkMzc2ZTQwZGU2OWY4NjE0MWY4MDk1MjllM2JmNyBsZWdhY3ktdHJ1bmsKKzI5NzgxIDA4MDgzOGUzOGU3YzRhZTg0ZDIyODExZTE4NmJmYTc2YjAyYjI4NmUgcmVsZWFzZTIyLW1haW50CisyOTc4MiAzMmRmOGQ1OTYwZDE4MmZkN2M0YTExZDJhZjJlMmJjM2ZhOGRlMjQwIGxlZ2FjeS10cnVuaworMjk3ODMgMjUxZGQxMzZiYWMzYmIwMzE1N2M3OTNkMDcxMzJkNTAwZGJlZDA2MiByZWxlYXNlMjItbWFpbnQKKzI5Nzg0IGVmMWUzODMyYTllYTIwMjM1MjcwYzJiNTNiYmU3MjQ0YjM0NTliZGYgbGVnYWN5LXRydW5rCisyOTc4NSA0MDNkY2JjOTA0M2Y2ODc0ZDBmZmFkYjRjZDExNDBmMzk3NzI5M2NlIGxlZ2FjeS10cnVuaworMjk3ODYgN2ZjNzA0Y2NhMTgxM2JiM2MwN2ZjNTEzZWJjYTNhZjE1NDE5Y2E5MyByZWxlYXNlMjItbWFpbnQKKzI5Nzg3IGJhYTQ3ZDdlODRlMjU4MzYwOTI2MjZhYjEyODU5Mzc2OTE5YjZmN2MgbGVnYWN5LXRydW5rCisyOTc4OCBmMmZjMzhmOGNhOWRlMmU4YjUxZDAzNjc0NjBkN2VhZTNiMzI2ZmFhIGxlZ2FjeS10cnVuaworMjk3ODkgOGI2MzhiZTc2Y2JlMjQwYjU2NGQ0MTQ2YmY3NDc2MDk2YzQyZDBlNCBsZWdhY3ktdHJ1bmsKKzI5NzkwIDQxZmY1MGI0ZDA5NzQyM2IwZjJhNTNjNmQ5YmVhNDQ2YmJkNTQ5NzkgbGVnYWN5LXRydW5rCisyOTc5MSA4ZTYwMTNiYmU3YTdjM2M0ZmU5OWQwYTU0NzJhZDk1NTBmN2Q4YjQwIGxlZ2FjeS10cnVuaworMjk3OTIgM2ZkOGMyYWZmMzA1Mjk3Mzk5ZmYxZmJmMjU3ODg3ZWJlYzE0YWI5YiBsZWdhY3ktdHJ1bmsKKzI5NzkzIGEyN2FjOWQzMmYyMzM4ZmFhYzRmODk1MDllOWUyMGYzMGFhZjlhYTAgbGVnYWN5LXRydW5rCisyOTc5NCBhNGRiYTA1OGY3MGVhZmZjM2Y4YjM2Y2UzMTg1ZDliN2Q3MDRiNzNlIGxlZ2FjeS10cnVuaworMjk3OTUgOTEwZmE3MzlmNGE0ZTdjMzQ4NTA5YzFmOTNlNWQxYTFiNTNmM2ZmYyBsZWdhY3ktdHJ1bmsKKzI5Nzk2IDkwZTlhM2VjZGE0NDlkYzZiYjFhNmE1ZDlhYjg3ODg4OGRmY2U4OWEgbGVnYWN5LXRydW5rCisyOTc5NyBkNDFjNGI5NWU3MTRkZTE4ZmY4MzI0NzQ5YTExYTNlMjcyN2IzODI3IGxlZ2FjeS10cnVuaworMjk3OTggNjgwMzYwZTY4YTA2M2E2NzhhODhhNTA1MjUzYTc5MDI0YmFjM2FjMiBsZWdhY3ktdHJ1bmsKKzI5Nzk5IGZhZGNhYjY1YWE4NzRiNjQ5MjE2OThjMzJmYjgxNDFlMjVlYzcyMmEgbGVnYWN5LXRydW5rCisyOTgwMCAwNjc1NGQ3M2M2M2U0Njg3YmU2OGUwN2JiNDM2MjcwN2NiNDliNmZmIGxlZ2FjeS10cnVuaworMjk4MDEgMDVkNmFkZTNlOTJiNGIxYzU4MTVkOTllMjg3MDcwNTMxYWZmYjRhNiBsZWdhY3ktdHJ1bmsKKzI5ODAyIDgyMzg5NmNlMmU1ZDA1NjhjYjljMzQzN2ZlNWUwMTI4YzNkMjE1MmEgbGVnYWN5LXRydW5rCisyOTgwMyAyYjBlODE1YzBiMzA3ZmZlM2M1ZGMyMTMwZjA1ZTQ0MTNkNzkyODI3IGxlZ2FjeS10cnVuaworMjk4MDQgZWExZDIwNTBkN2RhYWVjZjU2MmFkZjUwZjkwNWM2OTdmODhjYWRjMiBsZWdhY3ktdHJ1bmsKKzI5ODA1IGYzYTY5MDM3ZmRmMGZhZDNhNTlmMDM3NTdlNzBkZjRiYmM0M2RkNjIgbGVnYWN5LXRydW5rCisyOTgwNiA0NGQ3ZWFhZTBkOGQzOGIyMjYyZDMyY2NiZWVlMGE2NzY1YzRlYTU4IGxlZ2FjeS10cnVuaworMjk4MDcgMzA4NmUxMTE3ODNhNzkxMDQxYjhjZDhkZDUwM2VmOWQzMDNiNjdiOSBsZWdhY3ktdHJ1bmsKKzI5ODA4IDYwYmQ3YWYwMzI0ZTgwY2EzNzdjOTQ0NTQ0ODM0M2I5OGFjMmZlZDYgbGVnYWN5LXRydW5rCisyOTgwOSA2MDFiOGZjMTJmYjk1M2ExODcwYzc4OTI3N2JiZGZjMjNhMzk2OGM0IGxlZ2FjeS10cnVuaworMjk4MTAgZjM0MDBlZjAyYTQ1OWM0N2IyMDE5OTI1ZWJlODBkNTI0YWEyODE5MiBsZWdhY3ktdHJ1bmsKKzI5ODExIGM3Njc2MmQ2NmY0MjFjMTcyZTUyYzAwYTI0NTRiYzIwOTQ3M2E4ZmUgbGVnYWN5LXRydW5rCisyOTgxMiA5NTdjYTJjNTE3OTA0OWEzNTgzZTU0ODI4OTg3MGExNmE0YjZlMDlhIGxlZ2FjeS10cnVuaworMjk4MTMgMTA4NzFmNDRlN2RiMjlkNmNkZjYzOGU3OWVhNDFmOGM2ZDBhMTRhZSBsZWdhY3ktdHJ1bmsKKzI5ODE0IDczM2U0YjlkNTkyZWJjZWIwOTRjMjk5ZDA5OGZkZDU4YWYxMWUzOTYgbGVnYWN5LXRydW5rCisyOTgxNSBhYzc4NzJlNTU0MDU5YmQ5ODk0MDM0N2FhZWFhMTZlNzJjY2E1YTEyIGxlZ2FjeS10cnVuaworMjk4MTYgNjU4OWMzN2MwZGRkNzJiM2YzYzhlN2Y4NDg5ZTc0YjUzNmYwNTFjOCBsZWdhY3ktdHJ1bmsKKzI5ODE3IDRlYzE5MDJlZTZiNzdjYThkOTVjNTc0MDFjOTk3NDI2MGZlODExMDcgbGVnYWN5LXRydW5rCisyOTgxOCA1NjExODVkMTNkNWNjNDFmNzYxMmQ2Njg0ZWNiNjM5N2RmZTExMTdkIGxlZ2FjeS10cnVuaworMjk4MTkgZjc4NTI3MGNlZTE5N2QxNzE0Yzg1OWQzOGQzZGE2MTU1YjAyY2ZiYyBsZWdhY3ktdHJ1bmsKKzI5ODIwIDNjNjRlZjg3ZDVmODlmNTQ2ODA0NGIyODc0NDVkYmNjZmIxMmZjNmEgbGVnYWN5LXRydW5rCisyOTgyMSAwNjdhMmVmNmQ4YTlmMTZmM2I4YmI0ODc4MGVlZDM4MDJiMjZjMDM2IGxlZ2FjeS10cnVuaworMjk4MjIgOWY0NjlkYTU5MWE5ZTdmYWYxYzU2MDg5ODJiNTUyNzUxYTIyNGRkMCBsZWdhY3ktdHJ1bmsKKzI5ODIzIDU0N2RlNDA3YzEzMzQ3M2VkM2YyMzljYjY0MjU0ODkwYjQyY2MwMGEgbGVnYWN5LXRydW5rCisyOTgyNCAzZTAyZWFkOGRlMDU4MDA3OTc5ZjBiNzQzYjYyZmI3ZmE1NjdmMjUyIGxlZ2FjeS10cnVuaworMjk4MjUgNDZiYjlhZDgzMThmMThmYTRkNTRjZTlmY2ZkNzM0MDY2YmUwZGYxYSBsZWdhY3ktdHJ1bmsKKzI5ODI2IDdiOTA5NjUwMWVhODBkODA1OWVlY2I5ODYwYzgxNjNmODkwZTEwMzYgbGVnYWN5LXRydW5rCisyOTgyNyBhYmY1NjVjZjViNTQ3NGM4MmU0ZTkwMWNlMjkyNzE5NTUxMjNlOGEyIGxlZ2FjeS10cnVuaworMjk4MjggMTNjMWFhMTVlMGZiNWRhOTQ4Mzc1MTNkNjI0ZWUyMDgzMjRlYTBhMCBsZWdhY3ktdHJ1bmsKKzI5ODI5IGRjMzk5ZTljYWI4OTg2ZTkyNzJhMzgzY2Y1ZGYyOTkyZWRkYmZiMGQgbGVnYWN5LXRydW5rCisyOTgzMCAzMjJiNjY0YTIwMjJkODc4NGE5NjMzODQ3NzUyNmJjZDkyNjViZmFlIGxlZ2FjeS10cnVuaworMjk4MzEgMzVmMTI1ZDUyY2Y1YTgxYjEyYzAxMGIzZWEzYTBiNTE2YmJkYzY1MSBsZWdhY3ktdHJ1bmsKKzI5ODMyIDhmZTI5NmFkNTkzNmIzNzAyOGJlZDZmMjVkYmZmY2IxZGViMGRiZTYgbGVnYWN5LXRydW5rCisyOTgzMyA3NzA5M2Q1N2NjYTk5N2JlNjQ4NWM4MmIwYTY5NWIwMDczZTExOTllIGxlZ2FjeS10cnVuaworMjk4MzQgM2Y3YWVhNWI5M2ExODY3OTI4MDMyYTM3YjM1M2ExNWRkNzg0NzdiYyBsZWdhY3ktdHJ1bmsKKzI5ODM1IDc5MTE4NjMyZTM3ZTQwMWUwNzljYmUwMDhmYjUyYjc2OWVkMTMwYWYgbGVnYWN5LXRydW5rCisyOTgzNiA1NGE3NGIwZGZlMjZjZmE2MmQ5NjliMjJlNTM0Y2NmMzM1ZTFjMGRjIGxlZ2FjeS10cnVuaworMjk4MzcgODIzNmQ1Mjg4NDEyNTZiYzFlZDc3OGJjMDA2MDk0NzA3NjVhMDNmYiBsZWdhY3ktdHJ1bmsKKzI5ODM4IDg3OGZlZGM2YzdlN2M0ZTU1MTQzMGMzMmJlZGQ2NDE0ZTMwOGQ2Y2MgcmVsZWFzZTIyLW1haW50CisyOTgzOSA2ZTIyOGUxYWZmMzg1ODdlMDFlMzMxODM3YTRiMjYxMTkxMWM2NzMyIGxlZ2FjeS10cnVuaworMjk4NDAgYjgyNDI4YjE3OTc4ZmIwZGI2ZTBiZjkwNTJlYTZkOGE5YjAyNGY1MSBsZWdhY3ktdHJ1bmsKKzI5ODQxIDRmMmQ1MTc0YmQ0YWM1YjhlZWJhODBmMGMyM2I0YTBlNTc3OGZhNTkgbGVnYWN5LXRydW5rCisyOTg0MiBkMWQ4OTU5YjEzOGFjZmVkOWY2NDUzMDI4M2FkZjc0MDIzYWVkMjEzIGxlZ2FjeS10cnVuaworMjk4NDMgMDhiNzIwY2QzODdlMzM1OTVjYjZhNjVkMWYyYzBkNTY2OTg0M2MyNCBsZWdhY3ktdHJ1bmsKKzI5ODQ0IDBjN2NiMjc0NmQ4NjQzNDU4ZWRhMmRlZjE3MGQ0ZGE4NTk4NDBiZmMgbGVnYWN5LXRydW5rCisyOTg0NSBjMWNhYTViZmYyOTJhZjUyZTBmMDI2ODRiYWQxYjI5NTdkMWQxNjA4IGxlZ2FjeS10cnVuaworMjk4NDYgYzI2MDRkNjlhYTVkNTJiYzJkNjgzY2JjM2EyNzgwZGJiNThmM2IxMSBsZWdhY3ktdHJ1bmsKKzI5ODQ3IDllNDg5YTBkZjdiNWFmOWQ2NjhkNjUzOTBjOGI2MjBhOWJhYmVhYzUgbGVnYWN5LXRydW5rCisyOTg0OCAzZDBlMDI5NzZiYzMzNjY0N2E3OTU5NWJkZTUyY2E2MDQ4OWU3Yzg3IGxlZ2FjeS10cnVuaworMjk4NDkgZTE2ODc2M2U4NjFhMmM0OTEyN2ZjYzg0N2ZiYzVjMWJjNGE2ZDdlZCBsZWdhY3ktdHJ1bmsKKzI5ODUwIGQ0Y2M5NzFkMThhNjNlMTBmZGZkYzlmYmRmOTAxNjIyYzkzMmExOTkgbGVnYWN5LXRydW5rCisyOTg1MSAxMzViYjExMjE1YTA5NGJlODYyYWI2OTkyNGI4NTczOGU4YmVlNjM0IGxlZ2FjeS10cnVuaworMjk4NTIgZDBmMmQxZjNmYzg1NDJhNjMwOWMwMDlhM2IwNzBjMzdlOGJkN2I3YiBsZWdhY3ktdHJ1bmsKKzI5ODUzIDBmMjc2NjMwMmJhMGE5ZjM2OGU3OGI1NDQ1ZGI3ZTBkZDRjYjEwZmIgbGVnYWN5LXRydW5rCisyOTg1NCBkMmZiNDJlYzhiYjQyMmUzMTZkYTMzMzYyN2Y5NDg4ZjFhMjA3MWMwIGxlZ2FjeS10cnVuaworMjk4NTUgYWIzNzYzZDQ3N2NjNDA4YTY3OGNkMTNmMWIxYzQ2OWM1NDUyNWIzMiBsZWdhY3ktdHJ1bmsKKzI5ODU2IDE4ODViMmQ2MzkzYThhY2Q3MDRjMjgzOThjMWE5M2NhNjdhZTEwY2QgbGVnYWN5LXRydW5rCisyOTg1NyBmOGExYmE0NDYxNTg0NjljZWM2ODdiYzI5MTdkMzIzZjM4N2Y1MWY3IGxlZ2FjeS10cnVuaworMjk4NTggMTE5MTk3ZmE2MTQwOGVkNWFiODEwMzFiZmZiYWJlNGJjMWFkMzAyYyBsZWdhY3ktdHJ1bmsKKzI5ODU5IDNkNTIzZGJjOTliZWVhNGE3OTQ1OGIwZDEzY2I0ZTUzNmY1MjMwMGYgbGVnYWN5LXRydW5rCisyOTg2MCBlNzQ4NmYzZWY3NTlhOGIyZTU0MjdmNDAwZTJkOTdhMmRmODMxYzNkIGxlZ2FjeS10cnVuaworMjk4NjEgZGY1NTZmZGVjNjlkMDVmMzU0NzhlMWRiYzVjNmU4YjQ4YmNiNGI0OSBsZWdhY3ktdHJ1bmsKKzI5ODYyIDFmODAwMDU3YjYzNzI4ZjUyNTdhMWE2NzM0NzY4MjY2NDU0NjFlYzAgbGVnYWN5LXRydW5rCisyOTg2MyBkZjcxOTczNmUxNTFiNTc2NDY4YzNjMGY5Y2I5NmZlNjBmYzRkY2NhIGxlZ2FjeS10cnVuaworMjk4NjQgZmNmOTczNGUxMDIxNGJlM2M0ZjM3NzA3NWEzY2FjMjMyYWI2YjVjMyBsZWdhY3ktdHJ1bmsKKzI5ODY1IDFiYWYxY2RkYzBlY2Q5NjljNjc0YzdiY2Y3NGM5YjZhM2UyMDQ3NjIgbGVnYWN5LXRydW5rCisyOTg2NiA4YTAxMGMyN2Q2Y2I5YTM2Y2ZlNWNhOWY1NTQ2NmQ0NjBhYjllNDM1IGxlZ2FjeS10cnVuaworMjk4NjcgYThjYWRmYjBmZjgzMmY2YmNiY2YwZGFkN2YzMmVkOTA2NmE1ODA5NCBsZWdhY3ktdHJ1bmsKKzI5ODY4IGQyMDdkMWQ3OGM1ZDVhMWZiZGQ0MjliNzU1YjI0MTZmYmYxYzcyMDMgbGVnYWN5LXRydW5rCisyOTg2OSA0ODJhZTA1NWJiZDRmYTBhYzVjNGNhZTVkNTc2ODNhZDIwY2Y3MjhlIGxlZ2FjeS10cnVuaworMjk4NzAgYmIzOGQ3YWJjM2ZjZGNmNzhhOTczZmNjNzJkMWI0ZDQyMjY0ZTMwOCBsZWdhY3ktdHJ1bmsKKzI5ODcxIDQ5MWJmYzRhMGY1YmI2MjI5N2E3Y2M3YWFiYTRkZTNjOTc1NGU1YjQgbGVnYWN5LXRydW5rCisyOTg3MiBiMDU1ZTc4ODNjODNmYzUyNzQ2NmJkMTEzOTFlNTVhZjZiZTRhZjBmIGxlZ2FjeS10cnVuaworMjk4NzMgZTNmYWU3YjZjMjA3OGY0ZDhhYzU2ZTExZjc2ZTJjZjA4Y2ZkN2ViNiBsZWdhY3ktdHJ1bmsKKzI5ODc0IGIyN2MxY2FkNzdlYTcwNzUwZWM0Zjk2ZmZmODNkMTBiNGE4MGY3MzkgbGVnYWN5LXRydW5rCisyOTg3NSBhMGQ3NTJiZTU1NzczMGJlMzE5MDJhOTRkOWIzOThlMzkyNjk1MTU3IGxlZ2FjeS10cnVuaworMjk4NzYgMjgxMmNhY2UzMDFhY2Q3ZmU1OTI1M2M0MmNlNjFjZDA1ZjFkY2VjNCBsZWdhY3ktdHJ1bmsKKzI5ODc3IGNjNjI4NTRmNjM2Y2YyMTA3YTc4MzYxMDU4NGM5MWEyZDZmZmI3ZWUgbGVnYWN5LXRydW5rCisyOTg3OCA0MzgwNDM1ZmVmNjY1MDRmNGMxZDQ4NTgwYTgzNzI0NzgzZmYxZWJhIGxlZ2FjeS10cnVuaworMjk4NzkgY2JkODFkMDhjNDMwMWM0YjgwY2NmOTNkYmI4YjQyYjBkODNlOTgxYiBsZWdhY3ktdHJ1bmsKKzI5ODgwIDQ4ODE2MDIxZjU4ODI5MjE1ZmM1ZTllYTA4YTU3Y2EwZmZmY2VmZGUgbGVnYWN5LXRydW5rCisyOTg4MSAxYjQ3YjU3NmUwZDRhNjFkMTVmOGYwZDA5OWQxMGJiMGU5NDNhYmJjIGxlZ2FjeS10cnVuaworMjk4ODIgYjM4NTMzZTAxZDY1ZmM5ZmE4YmY5ZDdiZmRlYTRmZTM4N2ZiZjQ4MSBsZWdhY3ktdHJ1bmsKKzI5ODgzIDcwMGUxODJiMjkwMTkzNDI3N2MzYWMyNzAyYWE5NmViODgyN2Q3MmMgbGVnYWN5LXRydW5rCisyOTg4NCBmNzEwMTcwMjJmY2VjYzYyZWZjNzU2N2NiOTI3NDYzYTlkNmZjYzY0IGxlZ2FjeS10cnVuaworMjk4ODUgM2ZhNmRlZDBhMWU5NDgwZmUzYmQ4MzdiNWVkNWE2OWNiYTc0NzI4ZCBsZWdhY3ktdHJ1bmsKKzI5ODg2IDU0NDcyN2Q0MWY1Njg3ZmVjOTU3OWVlYWRhMjM1Mjg1YTIzYmIyNDggbGVnYWN5LXRydW5rCisyOTg4NyAyNjkxOGUyZWZkMTc3YWE3YjhkMTkyZmU5MjIzYjk0Y2E2YjVjZDEwIGxlZ2FjeS10cnVuaworMjk4ODggMWEwOTRlZjBmYzg2MmM0NGJmMGExYTg2NjYzMjQ2MDEwYzAzMzNhMiBsZWdhY3ktdHJ1bmsKKzI5ODg5IGRkZTljNjJhNzJmZTAzYWIzMGM2NGE5MGIyZWYyNDMwMWY0YTM1YTggbGVnYWN5LXRydW5rCisyOTg5MCA1NjllMTkzYmY1OWZjYTcwMzUxOTIyMmY3MWIxOWQzMTcyYjRjY2M5IGxlZ2FjeS10cnVuaworMjk4OTEgZjI4MzU1MzEwODY3MDU1YjUxODNhYmMxN2QzOTdmODhlNmNkNWVjZCBsZWdhY3ktdHJ1bmsKKzI5ODkyIGQ1ODgyNGNlYjM1ZDU4Njc5ZDMyMTA3Y2I0NDZjNGU3MWRmMWU1ODcgbGVnYWN5LXRydW5rCisyOTg5MyBiZDA5ZTNhMmQ1MzY0MGU4M2RjYWIyZjQ4YzJlNTgxMTkzNjc2NTkzIGxlZ2FjeS10cnVuaworMjk4OTQgMDMwMzU1MjNiMzg1ZWU5NjNiYjIzMDdkODJjMWE5MmY3MTllYTEyNiByZWxlYXNlMjItbWFpbnQKKzI5ODk1IDM1ZjQ0NGNhNWUwNWMzNzM3MDE2NzdhMDMzMzQ5OTczOWM5ZmQ4ZjkgbGVnYWN5LXRydW5rCisyOTg5NiAxZTUxNGUzNzc2MTNlMTc2ODI2MDE5MWJiYzlhZjNiNmViZDE5MzUzIGxlZ2FjeS10cnVuaworMjk4OTcgYWI2YzdiMjdhNGNiOTE0Y2Q5OGJmNmY2YzdjNmE1MTk4ZWZkNTFjMyBsZWdhY3ktdHJ1bmsKKzI5ODk4IDlkNmFlZDJlNjBlMjhmNjc3N2Q2NWU2ZWMwOGNhNmY3NGIwMzIxMmUgbGVnYWN5LXRydW5rCisyOTg5OSA0ZDQ3MTUyNmFjZTEyNGI5OWQ0YmQxMmMzYTc0MDdkMTlhNWNjOWQ2IGxlZ2FjeS10cnVuaworMjk5MDAgM2QyODY5ZGUyMzM2Y2IxMjkzYTEyOTAxMjFjYzMyZmI1NTU4NzFjNCBsZWdhY3ktdHJ1bmsKKzI5OTAxIDUxZDAwNTc4MWM4NjkxNGY2YTE3ZGQ2YWRlMTQ5NjNmM2Y2OTdmMTEgbGVnYWN5LXRydW5rCisyOTkwMiA2MDliNWYzN2YxNGZlMmJkOTFmNGQ5YzYxNjhkZDM5MjVkNmRkOTY4IGxlZ2FjeS10cnVuaworMjk5MDMgNDU3NGI2NTllYzM3YWJkODg3YjI5ZTQ3YjZhNDg5YzE1YmFlMWUzZSBsZWdhY3ktdHJ1bmsKKzI5OTA0IDY1MTFiMTZmZmU4OWZmYmVmYjlmN2MxYzQ1ODZmYmU5MjViNDljZWEgbGVnYWN5LXRydW5rCisyOTkwNSAwMTAzZjBiNzVmZTI2MzQ3ZTg4NjA4ZWRlZThjNjU0YzEzNTliZjFhIGxlZ2FjeS10cnVuaworMjk5MDYgNGJlZTMzNzkwOTQwY2NkZGYyMzBhMGQ0OWZmMzdiNDNhM2E0ZDZkNyBsZWdhY3ktdHJ1bmsKKzI5OTA3IGIwNDg5YTYwNTk3Zjc0MTQxYzhjODEyYmViNzRmMWNjZmU0ZThlNGEgbGVnYWN5LXRydW5rCisyOTkwOCBhZDc1ZWZlMmYwYTY2YzdmZGQxZjA2YTg4MGFkZDI0OWE4ZGU0Yzc4IGxlZ2FjeS10cnVuaworMjk5MDkgYzUyMmM4YzcxY2FiMGMxMGU4NTZjNTczYzAxODYxYjMyYTZmZTliOSBsZWdhY3ktdHJ1bmsKKzI5OTEwIGM2ZmZkOGU2MWNjZTZkYmNjMGYwYTEzOGY2ZTY1OWIxYzczZTY5NzEgcmVsZWFzZTIyLW1haW50CisyOTkxMSA2ZDU5MDY4NTNhN2Q5MDdlNjgzNTUwMWFmNDk1M2QwNmUxYmM3YTlmIGxlZ2FjeS10cnVuaworMjk5MTIgYzJiZTRkYzI1NDA1NTQzNTg3MDg5N2U5NzI5ZjM2MDdjNzM1OGEzZCByZWxlYXNlMjItbWFpbnQKKzI5OTEzIDRhMDEyMDk5MjY5MTZkOWFiNTNlMDA4NjBhNGU5YjM0NzhlZjc1NDMgbGVnYWN5LXRydW5rCisyOTkxNCA1N2QwMzM3NWFlYWQ3N2E4NTk5NTAyNDlhYjZmZDg2YWUyMmJmZGE0IGxlZ2FjeS10cnVuaworMjk5MTUgZDQ0OTQ1YjgxZmZhZTAwNzc1ZjEyZmJhODVmMTdiNzNkNDg0NTQ2MSBsZWdhY3ktdHJ1bmsKKzI5OTE2IGM1YjEzMDUwODFkZmQxMjk5ZmNhOWM1OTVhM2JiNTE1NjUxNjA1MWYgbGVnYWN5LXRydW5rCisyOTkxNyBhYTBlMTliNmUxZTc1YTBjNTc0YWI3NzNmMTU4YTRjY2MzYTk2YWRkIGxlZ2FjeS10cnVuaworMjk5MTggYTM1MGE0ODdlYWMxMWIzNjU1OWM5NTQ2ZDUwYTFlZTMxOTcxZDZlOCBsZWdhY3ktdHJ1bmsKKzI5OTE5IDM2NzI1MjIxNGRhZjBmMjc1MjljMGZiNGE0YWM3ZjU2ZWViMjY4YTUgbGVnYWN5LXRydW5rCisyOTkyMCBjMTI1OGIxYTM2YzZmNjhkZjZjMDE5ZWFkOTUzNWZiYTY5NTNhMWVkIGxlZ2FjeS10cnVuaworMjk5MjEgNGFjMzhmMjhjZDEwYTE1Y2NjOTI0Yzk0YzNjZGIzMjcwMWUyZjNmMiBsZWdhY3ktdHJ1bmsKKzI5OTIyIDc0MjEzNjcyNzRiNDU0ODFlZjI3MWRhNjI3ZGZjNmE3ZjUyZjZiNDQgbGVnYWN5LXRydW5rCisyOTkyMyA3Nzc3ZGNlYjY2ZWUxNDRjY2M1NjVmYzNiNTY2N2MwNDc4NTUzYjY1IGxlZ2FjeS10cnVuaworMjk5MjQgN2EwOWIzNmNhMzc5YzJjMDdkNmQ3OTE4YzBmZjRlMDg3ZjI0NDExMCBsZWdhY3ktdHJ1bmsKKzI5OTI1IGJkZGM0MTMxNTMzNjUwZDhiZGRkODU2MTUwZmYyYjNjYzA3MjhhYWUgbGVnYWN5LXRydW5rCisyOTkyNiA4ZWEyZTM1OTk3YTA0YjIwNTQzMGU4MTQ0YzJlOWMwMzU1MTNhZjU5IGxlZ2FjeS10cnVuaworMjk5MjcgOGI5ODhhMDlkZTk2ZGRhNjY5YWM5NzUwYWZlMzY5MmVlMTcwZGNkZCByZWxlYXNlMjItbWFpbnQKKzI5OTI4IGNhMDFmM2RlNjY0ZThiNjA5MzEyOTE5NWQ2NDRmNTk3ZDAyNTc5NDUgbGVnYWN5LXRydW5rCisyOTkyOSBjYjg1YWFlNzg5ODAyYWQ2N2E2NTVlYzc0YmQ3YzhlMDEzOTAwYzI1IGxlZ2FjeS10cnVuaworMjk5MzAgNjBlNTc3OTdiOGU2MWEzMTFjYWEyOWVhNjRjYjU2OGJlYzYwY2Y4OCBsZWdhY3ktdHJ1bmsKKzI5OTMxIDI3MjA0ZjA3MTJhMjZlZThjNDU4Y2Y5MjFmNTViOTY4YjNmOTMwNjQgbGVnYWN5LXRydW5rCisyOTkzMiA1YzdhM2ExNzMxMGQxYTJhOGQzNmY3M2UzMDM5YWNlZDY2ZDEzYjNjIGxlZ2FjeS10cnVuaworMjk5MzQgNDlmNDlhZWJmNWMyMGJlMzJkOGU0Y2M2MmI5MTBmZjY3Nzg3MjkxOSBsZWdhY3ktdHJ1bmsKKzI5OTM1IGU1MWNiZGNhMjA4NWJhOTcyYTc3ZWZmYmM4MGNiYjZmYzMyMzY5MmQgbGVnYWN5LXRydW5rCisyOTkzNiAwM2FmZGE5YWQwOTA4YTNmYzEyOGU4M2UzYmIyMzYwOTYzZWNlMDM3IGxlZ2FjeS10cnVuaworMjk5MzcgZGQ4MTdiYjM2NDZiY2I5MmRkZDk0ZGRjMDQzZGE2NDRmYWNkYzY2MSBsZWdhY3ktdHJ1bmsKKzI5OTM4IDM3YTE3OGMwZmQ1OWYyZjI0MzJlOThjNTU3YmU4OTAzMGZmZmE3M2IgbGVnYWN5LXRydW5rCisyOTkzOSBkZGJiMDU3ZTVhYjMxNWJjZTk0NjFkMWMwNjI2OTBkNDM4YTFmNGExIGxlZ2FjeS10cnVuaworMjk5NDAgMTU5NTdiN2U0MjQ3OWUyOTk5ZmQ4MGU0OWRmMzc1M2E1YmVlM2EwYiBsZWdhY3ktdHJ1bmsKKzI5OTQxIGM4OGY2ZmZmMWMzZjFjNzgxNzM2NGQzMzlkOWJhOGUxMzIxYjg2YTYgbGVnYWN5LXRydW5rCisyOTk0MiAxNGZjMTg3MzM0YzU4MTVhOThlMzgxZDBiZDFlN2ExOGE0ZjVjODQ5IGxlZ2FjeS10cnVuaworMjk5NDMgZTFhMzMxMzZiNGUyNjdiYmY0OTg5YmMzMzMzMzYyNjY2N2I4NWIxMiBsZWdhY3ktdHJ1bmsKKzI5OTQ0IDQxOGE3ZWM5MjU5OTMwZmZmODczNTczNDU1MzU1ZDNkYTc0NmNkZDcgbGVnYWN5LXRydW5rCisyOTk0NSBhNTczYWY1ZGI4MDc0NTJlYWM3NGM3MTZlYTJmOWVhN2Q5ZjAyN2ZkIGxlZ2FjeS10cnVuaworMjk5NDYgZmJiMjRjZDU0NzY2Y2U3N2I5MGUzMDViYWU1MGM2OWJjM2IwOTRkOSBsZWdhY3ktdHJ1bmsKKzI5OTQ3IGY3OWViYmFhNDgzMzRkNTgyZWRkY2RkNWFiODJkMjdhZGRjYTE0MzUgbGVnYWN5LXRydW5rCisyOTk0OCA5NWVkYjQ4ZGJmYTE2ZjYzZTY4MmJlOGIwZDNiMTgwNTcwNzgzYjYxIGxlZ2FjeS10cnVuaworMjk5NDkgOTljNzhjZjk1NjEwNTFhOWEwMzBhNWNlYWRjMDRjNjYxNmVmZWM4OSBsZWdhY3ktdHJ1bmsKKzI5OTUwIGI4ZmZmYmJkNjgzMjY2MzZkZGQ2NjFiNGUzZThjMWM4ZGExMzRiNmEgbGVnYWN5LXRydW5rCisyOTk1MSAwNjkwZjgxY2NlNzhiZTc0YTEwODIwYzA5OWNlZDE1ZGI2M2U3MzBmIGxlZ2FjeS10cnVuaworMjk5NTIgMTM4Mzg1MzBmNjE5NTc0NDdmOWQ5OWEwNDAwODQ4ZDUyNmQwYWU1YSBsZWdhY3ktdHJ1bmsKKzI5OTUzIDZjNDU5ODVhOGZkYmZmM2FhMTRkNzYzNDU3YmI4NjY0NmUzZmIyMmYgbGVnYWN5LXRydW5rCisyOTk1NCBmMjU1YjNmNWU5MTM2MWM0NGVhYzMyZTFmZmVhYzIyNjYwNzg2YTg4IGxlZ2FjeS10cnVuaworMjk5NTUgZTA3OTQ4ZDVjZjY3YzQ1ZGM3Zjg4MTk4YjI5MTA0YmI4YzRjODViOSBsZWdhY3ktdHJ1bmsKKzI5OTU2IDc0NjhiNjhlOTgyODZmNGVjMWFjMTdkZTNiZmNjYjQwZjljYzBiZGQgbGVnYWN5LXRydW5rCisyOTk1NyBkMWI0ZTcwMTZkODhhNTJlYjhiNjJjZDU0N2M5OGFhYWY3MTFkNjJjIGxlZ2FjeS10cnVuaworMjk5NTggN2JhMDcyZGIzODI4ZjdkM2FkOTYyNjBjNmI0YTM4NjNhY2ZlODFkNyBsZWdhY3ktdHJ1bmsKKzI5OTU5IGIyNjhhNmU4NTljYjdiMjg2NDljZWY5OGFhOGRkM2JkOWM2MmQ4OTEgbGVnYWN5LXRydW5rCisyOTk2MCAyOGVmZTE2YThiN2RmN2FkMGU5NjRkYzI4MzQ2YzU0YTVlYmQ0NmEyIGxlZ2FjeS10cnVuaworMjk5NjEgZTI2YTIwOGVhNzFiODM1NzE2ZmEwM2I1ZTVmMmQ3NDgxZWI0NDc1MyBsZWdhY3ktdHJ1bmsKKzI5OTYyIDBmODQ4YjA2MTQ2ZjBjOTc1NDY3ZGEwMTQ4ZTU1NDRkZDgwMGNlOGQgbGVnYWN5LXRydW5rCisyOTk2MyBiNGNlNmFjMTdmNjA3OWU2NmYzNDIxYThmMDY1YjA3ZDA4MmU0MjNkIGxlZ2FjeS10cnVuaworMjk5NjQgMmY0MGZhNzliNTlhNWYyNzljMDNkNzFhY2MwZDFmZDlkZDhhNDNkMCBsZWdhY3ktdHJ1bmsKKzI5OTY1IGI4YTdjNGNmM2U2ZDI2MDA1OTcyMGVjY2I1ODIwNzlhYWFmMzVjZmIgbGVnYWN5LXRydW5rCisyOTk2NiBjMTM1ZmIyYmI4MjVhZTgwODViMjgxZmM2OTI5NmYyZDMzYWJlNzc1IGxlZ2FjeS10cnVuaworMjk5NjcgYTU2ZTBiMjUxN2JkODM1NjRhODIzZDY5YjcyMGY2YjFhZDEzMGZmNSByZWxlYXNlMjItbWFpbnQKKzI5OTY4IGFmNDY5OGU1OTFlY2M4ZTI5ODViM2U5MTNjMjBkMmZkNDBlZWFkMmEgcmVsZWFzZTIyLW1haW50CisyOTk2OSBlMGI1OTYwNjAzMTNlNjM3MDhmN2EyOTRlNWIwMGZlZmE0NDE2MTRhIGxlZ2FjeS10cnVuaworMjk5NzAgMjM4Y2FjOTdkMTY1ODRiZTMxNTViN2E0ZWQ0NDRjNGU2NmFmNTQxOSBsZWdhY3ktdHJ1bmsKKzI5OTcxIGIzMWJkMDA0ZjQzMGM3MzM4OGEwOWM3M2IwYTgyM2U3MWI2MDhkMTggbGVnYWN5LXRydW5rCisyOTk3MiAzZjgwMTkyNzM1NDllY2YyYTg5ZTk2ZWJkYzZmZGZjZjAzOWJiMDBlIGxlZ2FjeS10cnVuaworMjk5NzMgNTQ2N2M2ZTFmNTQxYjA0ZmViNTAxNzM5ODc0ZTdmYzAwNmY4NzY2NCBsZWdhY3ktdHJ1bmsKKzI5OTc0IDI3NzVkZTM1ZGQyOWQ0OWNlZDUwNmQ2YjcyZDBhYzcxNWE3NmZkMWMgbGVnYWN5LXRydW5rCisyOTk3NSBmMDc3MmJkN2NjNDAxMmMyMGY4NzRmODEzZDg5MzBjODQ4ODQ2ZmFkIGxlZ2FjeS10cnVuaworMjk5NzYgZjhkMWM2ODIwYmZhZWM1Mzg5ZDc3MTk2NjE3NTI0M2VkZWU0YTQ2ZCBsZWdhY3ktdHJ1bmsKKzI5OTc3IDc2Zjc5YmIzNmZjNzczZGM5MWFlNDEzOTdmZDVlN2VjM2NhZDU0MTkgbGVnYWN5LXRydW5rCisyOTk3OCBjZDFmZTRiNWY3ZmZjYzIzZWU5YzkyYjk2MjQ2NWE5MjVlMWRiNDhhIGxlZ2FjeS10cnVuaworMjk5NzkgZjg2MTMwZjQ1YmY3NTBkOGY5YmQ4OGQ1ZTI0ZGJkNjlkNjM5MWVlOSBsZWdhY3ktdHJ1bmsKKzI5OTgwIDY3MTMyNzE5NWRjMzBlYTVkMmM0N2ViMjk0OTU3MjYwNjM2MDY3MjIgbGVnYWN5LXRydW5rCisyOTk4MSA4MjU0NDVmOWQ2YjhiMDJjOGViY2EyMjI3NWE4MWNmMWRmNGIwNTBmIGxlZ2FjeS10cnVuaworMjk5ODIgMDAxNWQzZjE4OWUxNDlhMjliNjZhNTIxNzVhNjg0MDRkMmRjYzczNyBsZWdhY3ktdHJ1bmsKKzI5OTgzIGVkYThlNjg5OGRkM2VlN2MxMWUzMmQwZTk0OGQ3YTVmM2FhZGQ3Y2QgbGVnYWN5LXRydW5rCisyOTk4NCBhOWI0YjZhYTEyMjAyNzc0Y2U0ODMzZTNkMmViMDVkYzAwNDkwYTUwIGxlZ2FjeS10cnVuaworMjk5ODUgZmE0NTMyZWY5OWM5YTlmMDg4M2EyYjExYmViMWE5YjQ4ODYzN2JmMiBsZWdhY3ktdHJ1bmsKKzI5OTg2IGU5MjNmNmQzYjRhMzMwOTE3NzE3ZmRiNjk3M2NlMDAyOGU1N2EwOGEgbGVnYWN5LXRydW5rCisyOTk4NyA5ZTRjODAzNDBmYTFkOTc1NWVmMmNkODNmYjU4ZmIyMzMzOWQ2MTFlIGxlZ2FjeS10cnVuaworMjk5ODggZjQwYTJkM2EyYWI1NTM3MmE1Y2Y2ZjJkMTI0ZDBmODcwMDU5YmNkNSBsZWdhY3ktdHJ1bmsKKzI5OTg5IDJkNDRhYmU1N2I0MjYzODQwZGNmODA1ODk0MzJjY2UzM2NkNjFkYzcgbGVnYWN5LXRydW5rCisyOTk5MCAzNzZiZDM1N2M0ZDVhZTZkMTY3YTJmYWQ3YTdkNjI2ZTU0ZWYwNjk0IGxlZ2FjeS10cnVuaworMjk5OTEgNWE5ZTcwNjRjOTIzNGQxMjdkMjA4NDdiMDM5OWVjMzFkMDliMDQ0ZSBsZWdhY3ktdHJ1bmsKKzI5OTkyIDY0MzEwMDE3MGJkZTkxZjg2NWU4ZWMzZTgwNDU2MGU0NDZiY2RjNmEgbGVnYWN5LXRydW5rCisyOTk5MyA1MGM2MzNhODdlMzU1NDdmMWIzZDljYTBhMmM5YzdiOGIzODFiNTAwIGxlZ2FjeS10cnVuaworMjk5OTQgZmQ2ZmI3M2ZiMjBmZGExZmM5ODhlOWU4Y2NmNDA5ZTdkZjY3M2M3OCByZWxlYXNlMjItbWFpbnQKKzI5OTk1IDg1MDQ1OTFlNGM2MzFiNDQ3N2FhMDFjNWEwYTU2M2Y5MDBkMTNmOWQgbGVnYWN5LXRydW5rCisyOTk5NiA5NGM1NTNlYjg4YzNhNTc3OTJjZDllOWY3ZWE2NDI0ODEyNTI3ZDUyIGxlZ2FjeS10cnVuaworMjk5OTcgMGI2NmQ0ZTlmNGY0ODU5Njc5YjViNDA1ODBkZTMwNDIyMmQ4ZDJmZiBsZWdhY3ktdHJ1bmsKKzI5OTk4IDE3ZDEyM2YzMzYxMTA2MDA1OGFhNTRkZmYwMzY1MmM2N2QzZjg4ZGEgbGVnYWN5LXRydW5rCisyOTk5OSA3OWY5MDYzZmI1OGVjYjI4ZGFiOTg0YjA4ZjA3OGM3ZmYxNjI0NDc0IHJlbGVhc2UyMi1tYWludAorMzAwMDAgNGMxNjQyOGZiY2Q4M2M1ZjE3MDM5MDI2NjhkYmUwOWFjNzIzMmI0MCBsZWdhY3ktdHJ1bmsKKzMwMDAxIGE1YTg3MzU3MTFlODE2Zjg1MWQ0MmJkZGU4NDBiMjkwZTc1YWRjNGEgbGVnYWN5LXRydW5rCiszMDAwMiA3YWJhODU5Y2VlNTQ1MzI3Yzg4ZTU1NGU1YWUzMWIzMTM1YmUwNDhjIGxlZ2FjeS10cnVuaworMzAwMDMgZDJkNzgxN2ZjY2JiYmFlMTNkOGU5MTdlNTIyYTdlOWM2MzA3YTMxMSBsZWdhY3ktdHJ1bmsKKzMwMDA0IDlmYjhhYWRlODg3Zjg1NWNmZDI1YjE3MDhjODA3MDMxMDc5ZWM4M2UgbGVnYWN5LXRydW5rCiszMDAwNSAxOGRjZjgwZTZmOGRlZGQ0ZTFjMDlmY2RhZjVlMjY3MjU4MWIyYzliIGxlZ2FjeS10cnVuaworMzAwMDYgMzhmZTVlYjZhYzI1NjcyMTI2MTc5ZWUyZTAyNzkzZjllNDVlNTkyMyBsZWdhY3ktdHJ1bmsKKzMwMDA3IDM5ODFjZjJhNTczMDUzNGQ4OTZkYzc0ZGMzZmJiYmNlNTkzOWQwNTggbGVnYWN5LXRydW5rCiszMDAwOCBiNTgzN2I4ZjNiMmM0YzJiNmIwMDVlZmYyNzY3Y2ExM2Y1MWViYmM0IGxlZ2FjeS10cnVuaworMzAwMDkgOGUxNTY3ZGJjYmE4OTNmZTY2YjNjMDkzMDc5ZDNkNjljY2M3MGMwYSBsZWdhY3ktdHJ1bmsKKzMwMDEwIDYxNzdhMTNlNGMxNDVhNDBkMThmMmNiYTBlZmU0YzRlZmZlZDBhYWQgbGVnYWN5LXRydW5rCiszMDAxMSBkNmQ1MjIyYjdlNTU1MmE5MmU3YTIwYWI1NDNhYWRlNzkyN2Y2N2ZjIGxlZ2FjeS10cnVuaworMzAwMTIgY2E2ZmE2OTcxMWJiNWUwZTJkZjk2OWYzZjAyYTdhOWQ4Mjk3MjM3OSBsZWdhY3ktdHJ1bmsKKzMwMDEzIDYxZTJiOGNlZmQ4NjcwMGJmMWRjZjFkMDczYmUwM2NlN2JiZjNhZTAgbGVnYWN5LXRydW5rCiszMDAxNCA2ZWE3ODY1MjgzOTVhYjc0NDA3OTdhOTIzZDQ3YjJiMGEzZDdhYzY5IGxlZ2FjeS10cnVuaworMzAwMTUgOTk3ZmEwMjI0NGJhYzJjMmFkMDY1YTY5ZDgzYjFiMjc2NzM2ZWJkMiBsZWdhY3ktdHJ1bmsKKzMwMDE2IDI2MjE5NjgzMTlmMDM0NGEyZmMxNzllMmU3Mjk4YWM0NjU1MWZiOWYgbGVnYWN5LXRydW5rCiszMDAxNyAwZTZlMzlmYjljZDczMmFkNmRkMDFjODg0MDIxZDQwMjVlNjVkM2Y5IGxlZ2FjeS10cnVuaworMzAwMTggOTEwZmI2NmMzYjgxY2JjZTNiNjU4Y2EyZmIyYjYxOTUxYmQ5OGE1ZCBsZWdhY3ktdHJ1bmsKKzMwMDE5IGU0MjczMmUyODliOWE0MTZkY2M2NjZmNGQzZTZkOWM4YTM0YzdkODQgbGVnYWN5LXRydW5rCiszMDAyMCA1ODQ0MGQwYjliNGVhNmM3YzZiY2M4MmQ5ZDJlY2I1NTJhZTI5ZjA2IGxlZ2FjeS10cnVuaworMzAwMjEgOTc1NDgyZDVlYjVjZTc5NGQ1MjEzZTQ4MjhiOTUwNjhlNTdlZjNhOCBsZWdhY3ktdHJ1bmsKKzMwMDIyIDk5NzBkNzc5ODBhMGUyZmI5MzljOTA5OWFiNzM0MDU0MzliYzQ0NDMgbGVnYWN5LXRydW5rCiszMDAyMyA4YTc1YzY2YmZhMTRkZTRiYTcyYWNjNWEwNDQ5ZWY5ZmE0NjAwYzI4IGxlZ2FjeS10cnVuaworMzAwMjQgMDljN2VkMWI3YTg3MzlkODI3OTY3MjI4YzYwMTRkZDc4ZGM3NjE0MyBsZWdhY3ktdHJ1bmsKKzMwMDI1IDY4N2I0YjE2NTI2OGM3NTlmZDQ3N2UyODhlYjg1NTBiYjYyMjBhOTYgcmVsZWFzZTIyLW1haW50CiszMDAyNiA2NzkxMmQ4Mzc5OWY3M2MwY2U5NTcxNjRiOTAxZDI0ZDA2ZGJkOGFiIGxlZ2FjeS10cnVuaworMzAwMjcgOGIzNjAxYTYyMzM2MzMyZGUyNGIwNmIzNGJmZjQ1N2U5NTg2NmUyNyBsZWdhY3ktdHJ1bmsKKzMwMDI4IGI5YzkxMmUyYzNjMDA2M2RjOTBiNTQ1NTQwNTFiY2NhYTg4MTg0ZDcgbGVnYWN5LXRydW5rCiszMDAyOSAwYzk5NWNkMDcwMjY3NzE5NjAzZmE3MTNkOTVjZWE0OTNjZmYyYzFmIGxlZ2FjeS10cnVuaworMzAwMzAgNGU2YWMyZmU2OGYwYmNhOGUzZjE5MDYwOWFhOGYwMzc5MWY4NmI3ZCByZWxlYXNlMjItbWFpbnQKKzMwMDMxIGM4ODRhNmM0N2UwNjBlOGIxZmYwMzAzOWVlNTRiOTU2MGNkZjM5YzIgcmVsZWFzZTIyLW1haW50CiszMDAzMiA0YmViZjFhMTkzMTljNDE1Y2U5M2MzZGQ3YzAxNDM4ZTQwZjZkNzdlIGxlZ2FjeS10cnVuaworMzAwMzMgYTM2ZGZmZDc1MzAwOWI4ZWYzZWU5MmEzZDgxMjcwYTU5N2UyZjg4NiByZWxlYXNlMjItbWFpbnQKKzMwMDM0IDI0MmFkNWM1OTJjYzJhZmRhODVkYTBiYzI5M2ExZWFkNDJiOWRiODQgbGVnYWN5LXRydW5rCiszMDAzNSA0YmU2MmRjOWEzZTdkNzQ5MjYwYzQzMTQ4YzcyN2RmNTc1ZDA3OGFlIGxlZ2FjeS10cnVuaworMzAwMzYgNzAxYjc5N2JiZGM4ZmI0NDYwZDBlMzUzMmNjMGMxNDMxMjJhNTY2OSBsZWdhY3ktdHJ1bmsKKzMwMDM3IDBkYmY5OGVlMTE4ZTI2OTUzYjYxNzFjNGRkYjlhODRiYTQ1ZWJjODkgbGVnYWN5LXRydW5rCiszMDAzOCA4Zjc0M2ViZTZjNjYzMmIwMGEzY2IyZWYxMzdjYzY3NDJmZGVkNmE4IHJlbGVhc2UyMi1tYWludAorMzAwMzkgMTJiYzRhM2U0NWFmOGEyNGMxYjhlY2ZlYjg2ZGI4NWRkNzJiNzM0OCBsZWdhY3ktdHJ1bmsKKzMwMDQwIDg1MWM2MjkyMDVkMmYzZmFlMzJhODQ0NDk4OTM0OGQ2ZTA5ODk4NTkgbGVnYWN5LXRydW5rCiszMDA0MSBiNTY2YmU4YmZjMjNjNzkwMjY0ZGUwYzhiZDI1MWQzNTcxZGE0NGM2IGxlZ2FjeS10cnVuaworMzAwNDIgZmE2NWY5NGRjNGNkYmM3NDU5MGY1ODA4NzUwMWJkNDFiZDFlMTU0YyBsZWdhY3ktdHJ1bmsKKzMwMDQzIGE5ZjZjMDA2YWE0NTg4NjkwOTZjNDM4ZjUzMWZlZmNjZTRiNTg4ZDcgbGVnYWN5LXRydW5rCiszMDA0NCA3MTVlMjg4OGYzNzdmYjkyZWQyMTNmYzQ1OWNhZGJjYWQwNjQ4NzY4IHJlbGVhc2UyMi1tYWludAorMzAwNDUgMDYwMWE5MDU1OGZkYmFmMzllY2JkNzg2ZWFiNjlmODZiNTE1NjM0OSBsZWdhY3ktdHJ1bmsKKzMwMDQ2IDM0MmMzNGM0MzhhMjYwOGExNTU0NjVmYTJhZTQ4MzYwNGM2ZWE1ZTggcmVsZWFzZTIyLW1haW50CiszMDA0NyA4MmI5ZjVjN2QwMWExNDY2MjdmZWU2OGY0YWJhNGY1YWJhZGY4MWE1IGxlZ2FjeS10cnVuaworMzAwNDggMmFiYTFhYzQ3NDRjOTY3OTM5NTUyZmVlOGRiZGI1N2YwMDI1ZGU4MCBsZWdhY3ktdHJ1bmsKKzMwMDQ5IGNiOGNmYWRmNzVhMjdiZjhiNTNlM2EwNjhiMDc5OGExZTk1OGE1OTIgbGVnYWN5LXRydW5rCiszMDA1MCBkNzU1ZDQyOTJmM2ZmYjEyZmI4MTdjNzAzZTIyNjdmYzc5ZDZlMzUwIGxlZ2FjeS10cnVuaworMzAwNTEgMjllOGRlNTk3NTZhNDViNjJlZGZjYjg4MjY4YjUwZDkxMGY3YWM0OSByZWxlYXNlMjItbWFpbnQKKzMwMDUyIDFkOWUzMGMwNWNkZTRjYjI2OWFjMTVkZGVjNjE3YWRlMDRiZDdiN2UgbGVnYWN5LXRydW5rCiszMDA1MyA5M2I1Y2E5NDIzZWIyNzk1YmQ3YTMxODEzMzExM2I5NTdmZDcwYTUyIGxlZ2FjeS10cnVuaworMzAwNTQgN2FlOWMzNmNiY2I2NmE3MTliZWNhODAzNDkwZjBiODI3MmVhM2ZlMiBsZWdhY3ktdHJ1bmsKKzMwMDU1IDQwNTIzOWE3ZTBkOGJjOTQ4OGM3Yjg2YmMxYWMyYmViMTY1NTFhNWMgbGVnYWN5LXRydW5rCiszMDA1NiA4Y2E4MDg0M2E2NzE2MTc1OTk3MjkwZTk2YWRhMDJjYWQ5NzQzMWNiIGxlZ2FjeS10cnVuaworMzAwNTcgZTg5NDBkNGNkOGNhZTdhZTM2ZmNmYmZmZTY2NDczZTNkZWE4YjE2ZSBsZWdhY3ktdHJ1bmsKKzMwMDU4IGQ0Yjc2ODE3YzllNjNjNjUxMDNmN2M0MzNlOTM3MTU3M2ZhYjI2MGEgbGVnYWN5LXRydW5rCiszMDA1OSA5MjA2YjAwNGYxNTJjNDNkNWExZWRmYzJkMjNiMmYwZjU0YWJhZDU0IGxlZ2FjeS10cnVuaworMzAwNjAgOTUyNjg3ZWE5Y2IxMmQ5OGQ2NjAxZTRjODAyY2Q3MzVjNGExNjlhNyBsZWdhY3ktdHJ1bmsKKzMwMDYxIDg5OTFmNzg4MTdjNzkwMDRhMGM4MTczZmM5NGNiMTYyZDYzMTljMTkgbGVnYWN5LXRydW5rCiszMDA2MiA0ZTk0YWEwNzI3Njg2MjA1NWY0NTQ5YjJiOTY2YzlkMTZlODY0ZDBmIGxlZ2FjeS10cnVuaworMzAwNjMgM2Y0MzgzYTA0YjYyNTRiMzZhMmUzMzAyZjc3ZDhiZDc3OTAzNTNlZSBsZWdhY3ktdHJ1bmsKKzMwMDY0IGU2NDQyNWJiOTRkODlhMzIwYzkwM2JiN2YxMTI5Mjc3MzNiMmVkNWIgbGVnYWN5LXRydW5rCiszMDA2NSA4MTAzMmU5N2JhM2NhMjAwMjFkNWFmOTc5OWYxYjEwMjBkOTI4MTA4IGxlZ2FjeS10cnVuaworMzAwNjYgZjViNGUxNzc0OTYxN2E5NjAxMDU3Nzg1MjQxY2VlNGE2YmQ4MDA3YyBsZWdhY3ktdHJ1bmsKKzMwMDY3IGY5ZDUxNmM2MWU3YjkzMmNmNjVmN2VhOGY3MDU5ODE0OTUxOTUxMzggbGVnYWN5LXRydW5rCiszMDA2OCA2MTVhMjVhNmViNWJhYWM2NjZmYjU0NjU0YmE1M2U5YmE1MDUxYzI3IGxlZ2FjeS10cnVuaworMzAwNjkgYzIzNGY0OGRlMTM4ZjQ5OWIwZDRkOWYzNzRjZTc1MWJlM2I0YTUyOSBsZWdhY3ktdHJ1bmsKKzMwMDcwIDBjNjQ2YmFlZWM1ODIzMjViYjFkOTQwZDNkNjA5MTBiMTZlZDMyNWQgbGVnYWN5LXRydW5rCiszMDA3MSAyMTEwMzg1MDVlNTZjNGViOTczYWJiNTZhMDJlMTIzYTliMzc3MmM0IGxlZ2FjeS10cnVuaworMzAwNzIgMDU2Mzg3NzY3ODMyNTU5ODAxYWI1MDM5OGZjZGIzYWE1YjMzNTZjYSBsZWdhY3ktdHJ1bmsKKzMwMDczIGMzNTc2OGQ3ODgzZTQ4NDdlOWVjNjBiZDliMGI2MmYyOGEyNWEyMzQgbGVnYWN5LXRydW5rCiszMDA3NCAzMDg0YmY4YmQxMWMwYWE2MGEzZjM2MThmMTA0YzhjMDdkZWQyNDM0IGxlZ2FjeS10cnVuaworMzAwNzUgN2RkZWE0ZGZhNTE5ZDNhZDhlNjAyYTk4NGIxZWY3MzIyNzU3MWE2NiBsZWdhY3ktdHJ1bmsKKzMwMDc2IDU2ZGJkOTA3OWExM2VkNmVmNzQxYWY1NjQ3YWJiMjM0NjIwMWFkYjAgbGVnYWN5LXRydW5rCiszMDA3NyBlY2VhODQxMDE3OGUwNjViMTI3NDBmZTMxNzFmNjFmN2Q1ZDJmMTA5IGxlZ2FjeS10cnVuaworMzAwNzggNzViZmMyNGZkNzQ4NTBkMTdlOTUyMzI1YWI1NWRkNWNjNzU2YTYwMCBsZWdhY3ktdHJ1bmsKKzMwMDc5IGNjMDVjMmM4NjYwZTBjNjhhY2NiYzU2YmQ4ZTY4ODcyZGU1NWYxNjkgbGVnYWN5LXRydW5rCiszMDA4MCBjMTYzZWQxN2Y4YmEzODVhYTg3YzAzNDkyYzU0Y2Q3YTBlNTE2ZGNmIGxlZ2FjeS10cnVuaworMzAwODEgYmZiMjY2NGNkYjFiZTg3YzAxZDYxZGQ0OGIwODUyMjFhY2Y2MTAzNyBsZWdhY3ktdHJ1bmsKKzMwMDgyIGFmNTExOWJlMjIxZjQzOTk5M2YzY2Q0MmJjODJjMzVlYTgyZTE0MTkgbGVnYWN5LXRydW5rCiszMDA4MyAzNzhjZTAyMGQ5ZTY4YzY3NWY0NjZlMTJlYjJhNGU1NWNkMGUyOGJiIGxlZ2FjeS10cnVuaworMzAwODQgOWRiMzk2YmNlNGU3NWYyMDViNzQzMDJlZjM4ZGZjNDE2NDFhMTYyMyBsZWdhY3ktdHJ1bmsKKzMwMDg1IGUzOWU3NGFlYTJmYjhhNzM0MTRkOWZkYzVkNjRlMGU3ZTU5Y2U4MWIgbGVnYWN5LXRydW5rCiszMDA4NiAxNGY1M2I2ZDdmNThiMjA0YjZkYzM4YmU1OGY5YmUzYjNhNjU0YzNiIGxlZ2FjeS10cnVuaworMzAwODcgMmZhYjBiNjQ4OGI1MTBhYzkzNjMyOThmNTJjZTEwNTA1NGIyNWEzNSBsZWdhY3ktdHJ1bmsKKzMwMDg4IDc0ZDFhZDYxZjg0M2NiMmZlNGU4ZTJiYzAzOGNiODc1ZmY2YjRhM2EgbGVnYWN5LXRydW5rCiszMDA4OSA4NzcxOTkzYzlhYWNhZGE0MGZiODEyMmM0MDM1OTJjNjhhNTJkYjRjIGxlZ2FjeS10cnVuaworMzAwOTAgOTdmODM1NDJmOGVlZmFhZTFkZjQxYmM0ZTk1NzlkYjkxZDRhZjAxMyBsZWdhY3ktdHJ1bmsKKzMwMDkxIDI4YmMyZDNhZjkxZGI2ODlkNDA4MDE4Mjc1YzhmNjIzMjU2NmI4MTQgbGVnYWN5LXRydW5rCiszMDA5MiAyYzdiZGJiNTBlNzYyOGNhNTAzMTNkYmQxYTA1ZGVlZDAwOGYyOTBhIGxlZ2FjeS10cnVuaworMzAwOTMgMDI3ODUyNDhlMDBhNmY0NGM3ZjE1NmIwZWQyOTgxMWQyYzE0MjE3ZCBsZWdhY3ktdHJ1bmsKKzMwMDk0IDIwZTA3NTVmMzU1NDFkNjllZTY0OTc3MTkxM2U5NjA3YjA5MThjZTEgbGVnYWN5LXRydW5rCiszMDA5NSAzYmU0ZjVkMzc3ZDhiMmM1NGE3NjU4OThiZTg1NGI4YjA4Yzk1ZDg0IGxlZ2FjeS10cnVuaworMzAwOTYgOWU3NTFlZWU4MWY1MDRlNDUyNWU2NDRiODIwMTRhODQ5NTFlYmFjNyBsZWdhY3ktdHJ1bmsKKzMwMDk3IGI2Mjk5OGY5ODk3M2UzMzFkODFhY2FiNzEyZjQxM2UyMWYxMmYyMTYgbGVnYWN5LXRydW5rCiszMDA5OCBjYjkzZDkyODdiNGVhZWM0ZGYzMGU4NjRmNDEyOTM5OTBhM2QwNGU4IGxlZ2FjeS10cnVuaworMzAwOTkgN2QxOTI4NzVhMTJmNzk5MDJhYmYzNjE5ZTBiZGFlODU2NWQyNjRkYSBsZWdhY3ktdHJ1bmsKKzMwMTAwIDE5NTA3YTFkMDI1NDhlYmE5MmQ0ZDlhNGNlMWU5M2I3NDEwYmM2YmEgbGVnYWN5LXRydW5rCiszMDEwMSA4MDk2ZGNjN2FmNjViYmI2MTAzY2Y2ZGY0N2IxNjJkZTFjMDY0Y2Y1IGxlZ2FjeS10cnVuaworMzAxMDIgNjM3YjEwYjUyZTAyZTY3ZjM0MzYxZGNiMGFhMTQwY2FmNzk0MDI2ZSBsZWdhY3ktdHJ1bmsKKzMwMTAzIGJhMTU3OGJlNTcwNmVkNWU5NWRiMTczNGM4YWMwMGM4YjdlNWRlNTYgbGVnYWN5LXRydW5rCiszMDEwNCBlNDFlZTJiOGU3M2RlYWNlZjZjZjFlNjE3NzRhZTY1YjZlMzIyYThiIGxlZ2FjeS10cnVuaworMzAxMDUgN2JhYmRhZWE3ZDE5ZDdmM2ExYjJhMWQ4YjllMjk1MTBlMDI1M2ViNyBsZWdhY3ktdHJ1bmsKKzMwMTA2IDhkZmMwZmM0YzE0YjUxMDAxMDIyMGI1MWVmODI0NWI1OWE3MTZiNGIgbGVnYWN5LXRydW5rCiszMDEwNyA5ODE2NDY2NmQyYTg5NzJhNDc1ZjI5MzFlMzdiNjJhOWFhMDQ1NmJjIGxlZ2FjeS10cnVuaworMzAxMDggNTlkZDkyNTdiYzAzMTZmNmFjNzY1YzVlMjA4MWE0Y2UyNzc5ZThmMiBsZWdhY3ktdHJ1bmsKKzMwMTA5IGQ3ZDUyNWUzMGNjMDIwZjYxNThkZjA1ZmJkZTg3YWY2YzVkZmNkZDEgbGVnYWN5LXRydW5rCiszMDExMCA4OTBhYTkzZGQ5YzM4ZTczMjY4YzQxODM0OWQ1YmJlNjAyMWRmYWUwIGxlZ2FjeS10cnVuaworMzAxMTEgYjBiZjM2MDQyNDRmZDU5Y2QzZGNjN2E3NmRiMDMwOGQ5M2ViNzJkOCBsZWdhY3ktdHJ1bmsKKzMwMTEyIGZkNDU1ZGY1NWIxMzViYjUzM2RiOGI4YTE2ZDJhMWUxMWI1ZDczM2UgbGVnYWN5LXRydW5rCiszMDExMyA5NmI4YzhhZTcyNjJlZGQ2OGVlOGZiOGJlMzhjODAzNzIyZWUwMmQ3IGxlZ2FjeS10cnVuaworMzAxMTQgYzY5YjhlNjFlNjk1YmQxZTg5ZDhmNDA0NDNlOTRmOGJjOTc2MzIxYiBsZWdhY3ktdHJ1bmsKKzMwMTE1IDM0Mjk5NTU3MjRiMjc5MjJkNmE3YWVlNTRlYTJiYjg0NzViMDE5NTMgbGVnYWN5LXRydW5rCiszMDExNiBmZDZiZTg3ZTVjMjk3ZTU4YmI3MDNmNDA2MDMwZTk4YWY4MTE4ZDZjIGxlZ2FjeS10cnVuaworMzAxMTcgMGZmNDczNjJiYjgxMTRhMDQ2ZTc5MGE0MGY4OTgyNTBkMWU5ZjM4ZCBsZWdhY3ktdHJ1bmsKKzMwMTE4IGJiNmVhMDc5MDk0NzlhNjNkNjczYzcwY2NiZTQ4OWMyNzk0Mzg1NTcgbGVnYWN5LXRydW5rCiszMDExOSBlNzgzY2RmYTBiNDE5YTFiNDA0YjBlZmJhMzhhNWE2ZWU2YjJmMDk3IGxlZ2FjeS10cnVuaworMzAxMjAgZDIzMDIzMzlhOGFkNzg0MjM0Y2M2NWE2ZTg5YTg4MTBkNTM3YjlhOSBsZWdhY3ktdHJ1bmsKKzMwMTIxIDAyYmE0NjYzY2FkMjEyN2E2MGFlNmIwYTJmZjhmYTJjNmQyNjhmNDAgbGVnYWN5LXRydW5rCiszMDEyMiA0MTE4OGUzODljNjE0NGYyYzFlOTM4OGEzMDkzZWRhOGM0OWM1NjJmIGxlZ2FjeS10cnVuaworMzAxMjMgZDE3NmNiZmQzNzY1NjAwZWFhMzk1Nzc1OWY0NTE4MWQ5ZjZlYmIxYSBsZWdhY3ktdHJ1bmsKKzMwMTI0IDkyNjdkZmZmZjMyZDMxZDNlMTY3MGZiMmNkNTZmZTlmOWJhZjFmNzcgbGVnYWN5LXRydW5rCiszMDEyNSBmODgzZWQ3YjkzYzg2OGRiMTJlZTc0NDQzODg1ZmMxMzg1ZjU0ZjRiIGxlZ2FjeS10cnVuaworMzAxMjYgNmVmYTgyMTZkYjZhODkyODI3YTYxZmFkNjI3M2I3OGUyMzQwMGMxYSBsZWdhY3ktdHJ1bmsKKzMwMTI3IDdiMWQxMDdlNjNhZTZmNzZhNWU1MjAwNmU3YTM4ZmQ3MTUzOGE0ZWMgbGVnYWN5LXRydW5rCiszMDEyOCBjYWEyNDVhZjc3ODY0MThkNTNhZjgwNWI0MzA2MDA5MDVkN2JlZWFmIGxlZ2FjeS10cnVuaworMzAxMjkgNmUyYzJmMTIyMWU1MzUyOGI2Y2JjOWU0NDdjYjFhMGZkZDBkYmI2ZCBsZWdhY3ktdHJ1bmsKKzMwMTMwIDQ4MzRmODM2ODAzNjM4NmQ3Y2YyZDAzYTQ4ZmY5MTQ2YzljOTFlZmUgbGVnYWN5LXRydW5rCiszMDEzMSBhODAwMDE1ZTdjZjJhNmRiMDhiNjc2MzNmNmQwYzAyMDUxN2M4OTc3IGxlZ2FjeS10cnVuaworMzAxMzIgNjFiM2QxNzlmODY4ZTc0MTU2OWMyOTY0YWMxYzFiNmE0MDQxMDFjMCBsZWdhY3ktdHJ1bmsKKzMwMTMzIGYzNTZmY2I3MGVhZTU1ZDM3MzcxZmVmZjA1OTIzMzNkYTc4Zjk3NzkgbGVnYWN5LXRydW5rCiszMDEzNCBiN2JmMzhkNDQ1OThmNTU4OWMwOTQzZTg1YWJkN2JjYmVmNGM3NTQ3IGxlZ2FjeS10cnVuaworMzAxMzUgNjNkN2I1ZTM5NmZiODlkMWVlOGNmZDc2ODc2MGRhYjY3MTJkZGJkOCBsZWdhY3ktdHJ1bmsKKzMwMTM2IDQwZjhiNjQ4ZTc2NTliNzkxNTQwNzFkMjY0MDJhMjMzZDc5NzcyZmIgbGVnYWN5LXRydW5rCiszMDEzNyBkOTllMzhiYjZkY2QzNWJiYWFiZTI3YTFiN2VmNGYzYWNiZjI2YmZkIGxlZ2FjeS10cnVuaworMzAxMzggZjgzOGJjOTA1NmNjMzc5ZDU5YzJiMmZmZWU1YzAzMGUxMzE4NjA2MSBsZWdhY3ktdHJ1bmsKKzMwMTM5IGIxMmUzMjZiNGVhMjQ3ZjRjNTc1MTdjODE2N2ExMGYxZGJiMjg3MmIgbGVnYWN5LXRydW5rCiszMDE0MCBlOGRjMWEwZDZmNGQ0ZDEwYTQwZGY3NTRiOTVkMjkwMmFhNDJkN2NkIGxlZ2FjeS10cnVuaworMzAxNDEgMzM4ZTAyNWZkZThiNTE2ZThlYzliYmVkNTIyMmRlZDM5YTVlOWU5MSBsZWdhY3ktdHJ1bmsKKzMwMTQyIGZlMmQ0MjIzODViMWZlZTY2Zjk5ODdhYjZlMGE5OTIyMWJjMDE2ZTUgbGVnYWN5LXRydW5rCiszMDE0MyBjYjA2YmZjODg3N2IyNDliMmNmOWZmZDk1NmVjNjNkMGZlMWZlZTllIGxlZ2FjeS10cnVuaworMzAxNDQgOThkMTE4NTViNDZjY2VlZjgzNDNiZDdmNGYxNTRiMzMyOTg2OGIyMyBsZWdhY3ktdHJ1bmsKKzMwMTQ1IGY3NjcxNzcwN2E2ZDdhMDkyYzJmNDAyYjBmZWM2YmJiMTkyM2E2ZGUgbGVnYWN5LXRydW5rCiszMDE0NiAzNzNkMGE4ZWQ2YmU2NGE1ZDFmMWZkZjRlZTA5ZWM4N2EzYTI5NDViIGxlZ2FjeS10cnVuaworMzAxNDcgZWQyOGI5NzUyZjhkMmFiZjhkZTU0Zjc3NGIyZGFiZmM1YTAzN2QwZSBsZWdhY3ktdHJ1bmsKKzMwMTQ4IDEzMTIyOTc4ODdhM2Y3ZTA2ZWE5YjNjZThjZDFkYzdhMjVkNDdjMzggbGVnYWN5LXRydW5rCiszMDE0OSAzMDBmOTI2ZjJiM2ViNThmZDQ5ZjA0MWUzYzRkMjNiMDFhNzk2YmFmIGxlZ2FjeS10cnVuaworMzAxNTAgOGRkMjVhNmY1OTEzOTA0YzdkYTgzMjM2ZjdhMTc0ZDZlNDQ0ZjliMSBsZWdhY3ktdHJ1bmsKKzMwMTUxIDViNzE1Y2FkMzRkMDgyNWRjMTgzMThlYTFkYmQ0ZTkxZmY3NzA4ZDcgbGVnYWN5LXRydW5rCiszMDE1MiBjN2VjOGFkMDIzNGZhZjRkMjE5NzUxNTA3YjU1M2RkMWYxZWViYzM2IGxlZ2FjeS10cnVuaworMzAxNTMgYmM5MDU2ZDg0N2VmN2Q0NmZhZTU5NTRkYmE1ZWY3ZTI5NjBiNGZkYyBsZWdhY3ktdHJ1bmsKKzMwMTU0IGY3ZDhkNDllOGY1ZGUyN2NiM2MxZTc5MDE2MjhjMGU2NmU1MjM4MTkgbGVnYWN5LXRydW5rCiszMDE1NSA0M2I1NGMyYmM0ZTYwMjA1ZGUwNWFhZDc3MDI1MzBmMGIyZDQ4OGNjIGxlZ2FjeS10cnVuaworMzAxNTYgNzhkODcyY2QwNjRjMmVkYzQ5MGNkOWM2OTBhODdjNTVlMzQzZjI5MCBsZWdhY3ktdHJ1bmsKKzMwMTU3IGFiNTBhMjFiODdhZWExMmRmMTgxMWEwYWU0ZjVhYmQ4MTFlMzQ1ZGEgcmVsZWFzZTIyLW1haW50CiszMDE1OCBiYzY2NjJiYTNhNzc1NWJiYTU2OGZhMjJjZmZkZDNlMTdlMjlhYmFmIHJlbGVhc2UyMi1tYWludAorMzAxNTkgNTc5MTAxOWI2ZTRlOGUyYmVlYWM0ZDRmYWMxNmViMDU0ZDljOGJkZSBsZWdhY3ktdHJ1bmsKKzMwMTYwIGMxMWE2ZTFjZWRlMGRlMThlMTVjNDFiYTk2NWQ0ZjliMjYxM2RmMmYgbGVnYWN5LXRydW5rCiszMDE2MSA2MDU5ZTQxYmQ3N2EzZTU3OTNhODVjNzYzNGNkZmNmNTdkNzk2YThiIGxlZ2FjeS10cnVuaworMzAxNjIgYTk5NzRhNDhhNGQ2Y2Y5YWNjMGY1MjJhM2E3NGJmNjViMzZkZGFiMiBsZWdhY3ktdHJ1bmsKKzMwMTYzIGEyMGNiNWFiYWI2Yjc4ZjVhNWNjZmIzYWNhZDhlMDcyMTY0Nzg3NDMgbGVnYWN5LXRydW5rCiszMDE2NCBhZDNmNjZlN2ZiMTA0MjAxM2E5NDFhMWYwZmVjNDVmZjJlNDBmNzQzIGxlZ2FjeS10cnVuaworMzAxNjUgNmIzOTA1NDhjNjk4MDA0MGI4MDIxZmRjZTBlM2U4NDgxYjMwMDdkZCBsZWdhY3ktdHJ1bmsKKzMwMTY2IGM3NGI2OWFiNDc0MmFiODQ4NDc0ZmNmNTc4ZWNkY2E5MjY4MGIzZWUgbGVnYWN5LXRydW5rCiszMDE2NyAyMzE4ZjRiYjBiYzVjZDg1YmVlNzRkYjBlMjVjMjBlODIxYmNkYjI4IGxlZ2FjeS10cnVuaworMzAxNjggMmUwZGM5ZTA4MjIyODk2YTM0MjU4NDMwYTlhYzAwM2UyZTgxNWViOSBsZWdhY3ktdHJ1bmsKKzMwMTY5IDM2Y2QyNjQxZTgyNjc0Y2ZjNDJhOWUwODdiMGYwYTg2MzdjYTE1MmMgbGVnYWN5LXRydW5rCiszMDE3MCA0MTczZTQzZWY0MGNjZTY2ZjYzZGRkYWNmMWRjMDcyM2QwODVlZjRiIGxlZ2FjeS10cnVuaworMzAxNzEgOTc1MzMzZDQwYmY4MzJhNDAyYTA2YmZhOTY2MmE2NmFiYTA5ODAxNSBsZWdhY3ktdHJ1bmsKKzMwMTcyIGM0Mjg2YTZhYjAwYzllMzViOWM2YWMyNGNlYTk3YTJkYWRhODIxYWQgbGVnYWN5LXRydW5rCiszMDE3MyA0OWNlZWUwMjZkNjYzZTIwODlhNDQ3ZDFhMjQzMzMwOWM1NDk1OTUxIGxlZ2FjeS10cnVuaworMzAxNzQgNTFlNzQzMjFhZDNkNjA3M2RiMzlmNDAwOTdjZmJjMjg3MmY2ZTg5OCBsZWdhY3ktdHJ1bmsKKzMwMTc1IGEyMjNlMjU1NDE5MDFjZTc3NjhjNmNlZjVlZDQzMTljOTY5YTcyMTggbGVnYWN5LXRydW5rCiszMDE3NiBhZjY2MGNhYjFjYmU5MTFkZTljZWZlZGEwYjQ3ZGQ5MWE3NjkyYzQwIGxlZ2FjeS10cnVuaworMzAxNzcgZTQwNGJiZWZmMDgzNzFiMzVjYzYxZjU1MTdmYjY0NjRmZWYxYjM0MyBsZWdhY3ktdHJ1bmsKKzMwMTc4IDNlZDQ3YjA3ODUwODE5ZDFkYWY1MzNjN2ZiZTE2MDA5NmQ0NTQ2M2YgbGVnYWN5LXRydW5rCiszMDE3OSA0NWFiMzExMjdiZjkyMmI5OWE1NDI5ZTljZDgxNjMxNTY0OTM0ZDE4IGxlZ2FjeS10cnVuaworMzAxODAgMTAxZmUzMmY1NmZmZWE1NDA4YTgwMjhmNzIyZGQyNjUzZDU3MWZkOSBsZWdhY3ktdHJ1bmsKKzMwMTgxIGJmZTM4OTYxY2E0MmM4ODZkNTFkMzcxOGFmOThlOTUxMWMxMDE3NTMgbGVnYWN5LXRydW5rCiszMDE4MiBmOTFkNzhlMTljODY2ZjllNjhkYTVlZDhmYWZkMWIxODkyMWZlNDk2IGxlZ2FjeS10cnVuaworMzAxODMgMmVkMzRmMDFjODFjYTEyYTdlM2Y3MDBiMWMzYTg5MDA3OWM0NjIwNiBsZWdhY3ktdHJ1bmsKKzMwMTg0IGQ2NDIxNDY5NDA4M2JlYmQ0ZDI4NGRjOWMwZDdiZDRiNjM1NWZiMjggbGVnYWN5LXRydW5rCiszMDE4NSAxZTE3MGE5NWI2NGZkZWZiOGZlMTYxYTliMDEwNDFiZmExODQ1YmE4IGxlZ2FjeS10cnVuaworMzAxODYgMzU5M2YyYjkxZDdkNjA1ZTVjNDU4MDhlODM0OGU4MmMxYjZkYjU5MiBsZWdhY3ktdHJ1bmsKKzMwMTg3IDg5MzE3ZDkzZjYzOTczOWUxNjYyYzYyZmNmMjY0NGJlNDc1MWQxNmQgbGVnYWN5LXRydW5rCiszMDE4OCBkMzQ4YjE3Y2VhYWQ2OTM2M2Y5ODZjYzBmNjI3YWFiNzE4ZDJjYmQ1IGxlZ2FjeS10cnVuaworMzAxODkgZDkzOWFkYmNhNzc0ZjAwZGI5ZjRiMjBjODNkMTFhMjQ0NzVjNzI1YiBsZWdhY3ktdHJ1bmsKKzMwMTkwIDA0YjNhOWY2YmU0MWY0ZTQyZTcwMTQ4YjI1NzA5MzBjZmNjNGE2YjMgbGVnYWN5LXRydW5rCiszMDE5MSBlYWI2ZDdjODAzNDE5MTc5ZDIwMjE5MGI5Y2EzYjlhNjRjM2E4NmJiIGxlZ2FjeS10cnVuaworMzAxOTIgMmY1MjNhZTkwZTA2MGM4N2IzZTU2YTJiMzQyNGM0ZjYyYzJjMzA5MCBsZWdhY3ktdHJ1bmsKKzMwMTkzIGU4MjMyNjk5NjQ4MWIyMTA0MDM4YTYwOTM2NDJiMDM4NmUwYWY3N2UgbGVnYWN5LXRydW5rCiszMDE5NCBhMzYwMGM0ZWNjOGJmMmMyMmFiZTQ5YzZjMTQ1MDMzOWRlNzRhNDc0IGxlZ2FjeS10cnVuaworMzAxOTUgZjU1ZjVlMWUzMGJjOTI1NzU5N2EzMDQ1MDk5YmYxM2NhYjUwNTY2ZiBsZWdhY3ktdHJ1bmsKKzMwMTk2IGRmY2MyMDU3YTc1NWFlN2M2ZjlkY2I4MDgwZGVhZTNkZTA1MWU1ZDIgbGVnYWN5LXRydW5rCiszMDE5NyA1Mzg0NDdjOWQ1NDNkYjJiNDA1MzRmMmE0YmQ1Mzk1NzU3NGYyYTk1IGxlZ2FjeS10cnVuaworMzAxOTggYTEyZTE3Mjc4NTBhZjliMDYxNWZjZDlmZDQ0Y2QzNTQwMjc5MTUzNyBsZWdhY3ktdHJ1bmsKKzMwMTk5IGNmZDVhNjgyOTM3ZTBjNDM2NDk4NGFlNmFiNTgzNWFiZjBiM2ViNGUgbGVnYWN5LXRydW5rCiszMDIwMCA5MjRjNGYyMmJhYzc5NDkxY2M5YTlmODIxNmFkMWE3N2M2OWNkMmIzIGxlZ2FjeS10cnVuaworMzAyMDEgYTU0MzYzZWE2OTQ2MDU2OTFhMzMwNzRiMmExYWU5MTE3YzQ5ZDhkZCBsZWdhY3ktdHJ1bmsKKzMwMjAyIDkwMWU0N2NjOGNhY2M4MjBmMzU1MjNlNWMxNjEwZGU5NWVmNzAwZDcgbGVnYWN5LXRydW5rCiszMDIwMyA5NjZiODI3OWQxZmFkODE0NGJlMzdiMWM5NTAzNTdmYzg4YmRlMTJiIGxlZ2FjeS10cnVuaworMzAyMDQgNDk2Nzc5MDQ3MmRiZDNlYzVmYThiYzAyZTAyZWE4Y2QzNzlmNTdmMyBsZWdhY3ktdHJ1bmsKKzMwMjA1IGM3YzJiMjIyYmI4YWU4ZDRjNmZmNWMyODI0YzhmMmM0MzBmYWVhM2UgbGVnYWN5LXRydW5rCiszMDIwNiA1ZmJhNTFmMzcyOWIyZGRmNTg1ZjNhOTkyZTkxMmI4NGFiOTg4YTZhIGxlZ2FjeS10cnVuaworMzAyMDcgNDFiZDM3YmVmM2M3NzNiZWI1MjNkYzA5NzdlNzEyZDdiOGMzOTczNiBsZWdhY3ktdHJ1bmsKKzMwMjA4IDliNGMwMTRiM2EyMThlNzZhOWQ5NzYwYzdkNDU1ZjQ0NmE3ZmE0NDYgbGVnYWN5LXRydW5rCiszMDIwOSA1NzNlNDgyZWRlYzFhNTgzNjkxNmMyZWMxYTBiZTk0NGM1ZDFjOGVkIGxlZ2FjeS10cnVuaworMzAyMTAgYTAzY2U1ZDhmMjk3NTRmNzZjNmZkNjhjNjVlMzJjMzgyNjE1OTVjMiBsZWdhY3ktdHJ1bmsKKzMwMjExIDcwOWY5MDU0MTU4NTIxODc0ODA3ZjZhN2UwMTJlYmI5MTIxNzJkNTMgbGVnYWN5LXRydW5rCiszMDIxMiBkOGZkYTQ4MThiZmQ1ZjU2YWE1MjA1N2JlYmVmNTAxNjBhZWRiMjkwIGxlZ2FjeS10cnVuaworMzAyMTMgMTZhZmY3MDc3ZTRiZWU0YWMwOTcwYWFhZDE0NGM1ODQwMTIxYWVkOSBsZWdhY3ktdHJ1bmsKKzMwMjE0IDJiNDZkNzI5MmYyNzc0MzBjZmZjMzhjNGIzNmFhOTY5ZDVlY2M1Y2MgbGVnYWN5LXRydW5rCiszMDIxNSA2ZjFmODQyMDNlY2YwYjFhNTY1NTA3YmRkMDNjOGRhODVhYmNhY2VlIGxlZ2FjeS10cnVuaworMzAyMTYgNzhlODU3ZTlkZDQ3NjkwNTVmNDg4MWQzZThmYjk5MTMxYzQ4NmQyNiBsZWdhY3ktdHJ1bmsKKzMwMjE3IGM2NWU4Y2I5MWY0YzM2ZDlkZjhiOWRmZDdhYThjN2I0ZjYzYjZiOGYgbGVnYWN5LXRydW5rCiszMDIxOCA3MmNmMDg5ZDYzNGExOTg0MzQ5MTI3MzM2MjI1YzFiYmY0ZTk5MDA5IGxlZ2FjeS10cnVuaworMzAyMTkgY2FkZmNlNjZkODYxOWE2YmMzNTc5ZDZhMjJhZjhiN2E1NmMyNDZmOCBsZWdhY3ktdHJ1bmsKKzMwMjIwIDJmM2Q2Yjc5ZjExYmQzYzRkYmQxMGNhZGNiMzgxZmJkNDVmMWM5OTMgbGVnYWN5LXRydW5rCiszMDIyMSBkMDUyMTEyNzMxYThlMjViZjE3MjFiMWY1MWMxZmU2OWE4NTk0OGYwIGxlZ2FjeS10cnVuaworMzAyMjIgYjBhY2Y1ZGUzNDIxY2UwZjZjYTkwNDFiZDc4ZTJjY2FjMzkzZTUxOCBsZWdhY3ktdHJ1bmsKKzMwMjIzIGMxYzhiZGM0ZTNkYmRjZjBiOWJkMDIyYThmODQ4ODhmZTUxMWIwN2QgbGVnYWN5LXRydW5rCiszMDIyNCAwNjU4NjQwNGVjNGNkYTMwMjBkMjY5ZTVjN2IyMTNlNzlmNzY2ZWI4IGxlZ2FjeS10cnVuaworMzAyMjUgMzM2OTY4ODIxZGNiY2UxYWE4ZDA2ZDAxZDRkODc3N2RhNTllMTI0ZiBsZWdhY3ktdHJ1bmsKKzMwMjI2IGRiOWZjYTE0NTA1ODRiNTNhM2U5MDAwNTkzZGQ5NDI3MTA5ZDg0MjkgbGVnYWN5LXRydW5rCiszMDIyNyA2MGIzODlhNGRjMDg1NTAxYWU0NTU2NzNiZjkxOWYzNjUxZWNhY2YyIGxlZ2FjeS10cnVuaworMzAyMjggYjllNDViODI4YWUxMWEwZTU1Y2ViZWRlNmI1MDJhOWI1YjhkMzRhNSBsZWdhY3ktdHJ1bmsKKzMwMjI5IDY1YWNlYzljYmU2OTIyN2U1MmZkNmMzNzAwNTUwOGM2MTU1NGFkYzYgbGVnYWN5LXRydW5rCiszMDIzMCAxNjI4OGIwNTRmYzNmMTMzMGRiNzhhNzdiMjU1N2U4YzUzMGUzMzA4IHJlbGVhc2UyMi1tYWludAorMzAyMzEgN2MxNWJmNzcyNmIyNGU1MjI1MDBlNDZlMDAyZWNlMjU3Y2FlNjYwOCBsZWdhY3ktdHJ1bmsKKzMwMjMyIDhjM2VmNTI0ZmFhMDY3ZmRiODYzN2FjMTU5NWMxMWYyNTVmYWM5YmUgbGVnYWN5LXRydW5rCiszMDIzMyA5NWJjMGMwNTIwMzQ1MDg3ZDMwNTIxMzgzNmMyNDhhNGY0ZTQ0MjU0IGxlZ2FjeS10cnVuaworMzAyMzQgY2NmMGIwMjdiNTg1NmQ1N2JmMzZiOGQzNjE3ZTMxZDM5MDY3ZDNiNCBsZWdhY3ktdHJ1bmsKKzMwMjM1IDdmZDFiZjIwYTBjMGU5Y2JhNTE3ZjJmY2QzNjkwZGIwNWFiYzBkMGIgbGVnYWN5LXRydW5rCiszMDIzNiBjMTI3MmYzZjI4ZjUxNzliMjMzZDNjNmUzN2MwMDM2NGU2MTZjYzFjIGxlZ2FjeS10cnVuaworMzAyMzcgZWNjMjdhMWMzM2NhNzk4OTUyZTEyZGVjMzM4MDBjMmExZWZkY2IzNCBsZWdhY3ktdHJ1bmsKKzMwMjM4IDYyMDA5NmZkNTU2NGMzNmQwMzc2NjNlZGJmOTc0ZGNiNDBjOTg1ZTAgbGVnYWN5LXRydW5rCiszMDIzOSBjNjA5Y2Q0OTA2ZmI0YWVkYWMzY2FhNTQ0YTI4MjcxMjJmZTIzZTA4IGxlZ2FjeS10cnVuaworMzAyNDAgNDlkMDIyYjVmZDY0MDUxOTBmOTU2NmY2YWJjNWM2ZGQ2ZWEzM2M4MSBsZWdhY3ktdHJ1bmsKKzMwMjQxIDRjOWZlNDkwNWU4ZmEwNmIyN2Q1OTI1N2U3OTNkNjRmZTIyMDQ4YzUgbGVnYWN5LXRydW5rCiszMDI0MiA2YjMxYjI2ZTQxOGRkYzg0NTllMjZlNGE3NzVlOGFhOTg1MGQwYjVmIGxlZ2FjeS10cnVuaworMzAyNDMgMDk1NDQwYjk3NWExYzg3MDU4ZmY5NzNmNjE2ZDk1NmE0NzExZDM5YiBsZWdhY3ktdHJ1bmsKKzMwMjQ0IGFmMjE3Y2NhM2JmYzdjMTM0OGQ4NDg2OWJkMzI5MThkNDI1ODRmZDMgbGVnYWN5LXRydW5rCiszMDI0NSBhZDI2M2QyNjgyNTU0ODAyNDgwOWU4NjJjMWMyZDFkODEzYmNhNTI3IGxlZ2FjeS10cnVuaworMzAyNDYgMzQ2YTA3MjcwZTg3ZGQ2NDljOGIzYzIwOGE2MjA5YmEzZmFmYzA4YiBsZWdhY3ktdHJ1bmsKKzMwMjQ3IGFlZjNhMDNhNzlmMTBlMTc3YWUwZDdjYjU2ZDFlYzY0YWY1ZTMwNTcgbGVnYWN5LXRydW5rCiszMDI0OCA4YWE3NTZlNWFjY2M4NWZjY2M5YjE1NmZhN2Q4Yzc0YWYyNDY3ZGNmIGxlZ2FjeS10cnVuaworMzAyNDkgZmM3ZmRlYzNmYjg2M2QyYzkxMjkzYmFhZDYzOTgyYWUwYmNjZTQwMSBsZWdhY3ktdHJ1bmsKKzMwMjUwIDI0MGZkYmVmOGM2MGMzNmEwYjg4YThkMTY0ZGZiNmNiN2I5YWRkYjcgbGVnYWN5LXRydW5rCiszMDI1MSAwZjE0MDVhY2U0MzdlOTI2YzliODQ1MjJlZjJkYWQ1OGNjMmIyMTk2IGxlZ2FjeS10cnVuaworMzAyNTIgODlkZDc0ZjdhZTMyNmMwZWUzMmU0MjA0YmViYWUwYTNhMWE3OTZiNyBsZWdhY3ktdHJ1bmsKKzMwMjUzIGQxNjA4MTZiOTFlNTgzZDIzMGRiYzhkMDQ4NGM1MjQ1OWVkOTY4MzkgbGVnYWN5LXRydW5rCiszMDI1NCBmODVjYjA4OTU1MzVkZTc2OGE2MGQ5YmNlZTJmMzM3OThmOTRiMWQwIGxlZ2FjeS10cnVuaworMzAyNTUgYmI0ZGYwMDAwYjZkMWFjNGU3NzFmMzdhNTUxMjE1NWE2MTlkMmIzMSBsZWdhY3ktdHJ1bmsKKzMwMjU2IDQ0ZDc0NjhkNmRiNmUyMzM5MThiZWRmODA5MGYxODk4MzM3ZDI2MDUgbGVnYWN5LXRydW5rCiszMDI1NyA5MmE0MDYxMTVlN2NkMzQxNjY2YmEyNTA2NWYwZWUyMmQ4OGJlYzRjIHJlbGVhc2UyMi1tYWludAorMzAyNTggNWVmZTZiMGFjMGU2YmNjMjBhNTYwYWI4ZjMwMGRmNTBiMjU4MjdhYyByZWxlYXNlMjItbWFpbnQKKzMwMjU5IGM1NWU2ZTYwMWI5OThkNzJiODlhNTZiODBkZGIzYmViZTk2M2U2MTggbGVnYWN5LXRydW5rCiszMDI2MCBiYzdmODkxM2Y1Y2E4NjZjYWU4YTIxZGJmNzFmMmY5Y2FlZTRmNDcxIHJlbGVhc2UyMi1tYWludAorMzAyNjEgMzAwMTM0MjliYjg0NTllM2I4MDY0MDczNjliY2JiMTQwMGViM2ZiZiBsZWdhY3ktdHJ1bmsKKzMwMjYyIDhlMjc1MTJjYzE3ZGRjYjdkNDdiNzE3YzViYzc0YTNmNjYzMWRkOWQgcmVsZWFzZTIyLW1haW50CiszMDI2MyAwYjM0ZjUxZWFiNGVhNDg3YmExYzAxY2U5OTQxMzQ2ZDZhNzBlZWExIGxlZ2FjeS10cnVuaworMzAyNjQgN2M1MTk2ZjAxNTI0YjllOTdjMTgyMjY4YzY2ZDZhN2VlOTc0NzEzMCBsZWdhY3ktdHJ1bmsKKzMwMjY1IDJmMjg0MzYwNjBjNDU2NTRiYjg1ODFmY2MwNzUxNGNhMmM1OWUwYTUgbGVnYWN5LXRydW5rCiszMDI2NiAxNDM5MjJhNDBmYWM2ZjdkZDUwMDQ1NDU4Njk1MGE4NWUyYzMxOWRkIGxlZ2FjeS10cnVuaworMzAyNjcgZmJjODVhYWEyNjBiYTFhYzRkNTg5YTdhNTRiMjY5NzU1MTViNzAwOCBsZWdhY3ktdHJ1bmsKKzMwMjY4IDg5YzljNmM0MDVlZjhjNDE1ZGU4N2YwMTM2NjA2ZDA0NTYwYjY2ZTkgbGVnYWN5LXRydW5rCiszMDI2OSA1OGJkNzEwMGVlMTU3ZjE3Yjg1ZDk0NDgwMWFjMWVjMmZlNTRmY2MxIGxlZ2FjeS10cnVuaworMzAyNzAgODE2YjhkZGNjZmUxNjUxNjE0ZDE2NDAxODk5OWNkNjgzYWM5MzkxZSBsZWdhY3ktdHJ1bmsKKzMwMjcxIGRiOTM4OGYzN2Q4YzQ3MWYxZmQ1NGQ4YzA3Njc3Njg2MTk1YWY3ODcgbGVnYWN5LXRydW5rCiszMDI3MiAwNjg2ODM3NmFhMjhkMzlmYzZlOWVhMjg5ZDkxNTU2ZTk3OTdhY2I0IGxlZ2FjeS10cnVuaworMzAyNzMgYTJkNDAyZTdjZDhhZGQzMmE3OGJmYWQyNWIyMmFlNzNkZjRlOGZkOCBsZWdhY3ktdHJ1bmsKKzMwMjc0IGNmNzM2NjNjZmY1OWVhNDE2M2Q4ZjEyOTUxMzNjZTg4MDYyMWRjZTAgbGVnYWN5LXRydW5rCiszMDI3NSA0N2U3YzcwZTg0MWZlMzMwMjdjNGViOWE5NmM2OWRlZGFkY2M2ZmY1IGxlZ2FjeS10cnVuaworMzAyNzYgMGYwNjE1NmM4ZTAzNzY2ZjlmZjRmZDE4OTc1ODg3ZWVjZjNlMWQzYiBsZWdhY3ktdHJ1bmsKKzMwMjc3IDUwN2FhOTZhMTI4ZmZkYWQ5NDE3YmE1NGU5ZWVlYmM1ZTI1NGFlY2EgbGVnYWN5LXRydW5rCiszMDI3OCBiMmI0Nzk3MDUyYzZmZGNkY2JmZWZjNjFiOTQzM2E5NGNjMzIxYjVhIGxlZ2FjeS10cnVuaworMzAyNzkgMjk5NjIxZWNhOWFkNTMxMmVlNDJmMDNhZjc1Mjk1N2ZmZDAxNTZlZCBsZWdhY3ktdHJ1bmsKKzMwMjgwIDMwYTc3Mzg5NDM4MThiN2FkNTAyMjZjMGJiMGRlOGE2ODQ3MTI2YzggbGVnYWN5LXRydW5rCiszMDI4MSA4MmQ4YjVjNmFjNGE3ZmMyZWU3ZDllZTBjODI5MDk2NmEwYTQyZWQzIGxlZ2FjeS10cnVuaworMzAyODIgMjU4NWQ0NTk2ZDkwM2IwYTEwODBlOGFiNWE0M2Y2NjZkNDM4MTRjNSBsZWdhY3ktdHJ1bmsKKzMwMjgzIGZmYzFlOWU1ZmY5YTcyNDdjZWE2YjU2N2E1MmJmODlhYWVhNTgzNzUgbGVnYWN5LXRydW5rCiszMDI4NCBiMjA0YjRhNzJiNGVlOGJhZjA0NTBjOWE1YjMyZmIzOGMxNGNiMDlhIGxlZ2FjeS10cnVuaworMzAyODUgMjMxOWQxM2Q1NGY1NzUxNTUwNThmNTcxMDMyMDczMGNjMjc1OTgwNCBsZWdhY3ktdHJ1bmsKKzMwMjg2IDdmODFkMTZlMmM1ZDdhYTM4NGNlYzE5ZjFlMzcyNDhkMmExMjAwYjIgbGVnYWN5LXRydW5rCiszMDI4NyA4NThlZTExNzE0YTYzMjQyN2UzM2M4N2JjNmY4MWEyOTE2YTU4MGY5IGxlZ2FjeS10cnVuaworMzAyODggOWQwZTYyYzlhMTI4ZDdhMTQ3MTYyYjNiNTY3YTZmYzFhNmU2YzJiOCBsZWdhY3ktdHJ1bmsKKzMwMjg5IGVkZjMwNGU2MGNjNjFlZDliNmU0MTFlOTI4ZGI4MDk1YjUxMWU5MWMgbGVnYWN5LXRydW5rCiszMDI5MCAxNzg4NDQ5ODg4MTJmMmRmMDYyOGMyM2YyMDViYmRjNjlkNTNjOTViIGxlZ2FjeS10cnVuaworMzAyOTEgMjI1MTE5NWEzZGQxZmNlNzE0ZjUxYmY4ZGJlMTdjNThhZWQ3MzBiZiBsZWdhY3ktdHJ1bmsKKzMwMjkyIDdjOGFmMTk3OWU3ODg1Yjc3ODk5NWU3Mzg0NTAyOTRkNzdkMjZlNjcgbGVnYWN5LXRydW5rCiszMDI5MyA4ZWNjZmFlMDRiYjRmNmZlNjYxOTQxYzgyNzg0YjU4MWMyMDc4ODZkIGxlZ2FjeS10cnVuaworMzAyOTQgNjkzMjc5NDgxN2MyZDFkZjExNmE5NGVmNjMzN2MyNGYzZDU2NDE3YyBsZWdhY3ktdHJ1bmsKKzMwMjk1IDBjODVhOTQ3ZTJjMDAwZDY2N2I5MzRiMzJiMmJjZjBlYTI0NjRlYTYgcmVsZWFzZTIyLW1haW50CiszMDI5NiBlMDk0YTAzYTgwZmY0NWVmNmNmMzRjMWMyYzhiNThjYmY4ZjA3NjAzIGxlZ2FjeS10cnVuaworMzAyOTcgNTdhMDBkYjczMWZjZjFmMmNjZDM0ZDgyNzIxN2JhOTE0YTE3MTVlMyBsZWdhY3ktdHJ1bmsKKzMwMjk4IDZiYmJlNjdkMWVhZjcxNzMxOWRmN2VlYzZiOTc5NmJiZWQ4OTdhY2MgbGVnYWN5LXRydW5rCiszMDI5OSBkNmY0ODNmYzllMDJlM2RlZDdiZmU4ZmRkMDNhODJjODBkMzAyN2M2IGxlZ2FjeS10cnVuaworMzAzMDAgZmVhOTJlN2VjNjdhZTM1MDU1OTA5NzI2MDlkMWRmYjY4MDUxM2UyNCBsZWdhY3ktdHJ1bmsKKzMwMzAxIDJlMjE5NWZlNmMyOGE3OTRmZmU5YzU2ZDM2ZWMxYzc1MTkzMzMwZWQgbGVnYWN5LXRydW5rCiszMDMwMiBmYjM2ZDliNTBkZjU4Yzg3MWY5NGFlYTFiOWI3ZmNiMmE4ZDk2NDI3IGxlZ2FjeS10cnVuaworMzAzMDMgZTE1Mzk2MWY5NjFmMmY2YmE3MTc3N2QyMjEwMjk0NTZhZTE1ZDk1YSBsZWdhY3ktdHJ1bmsKKzMwMzA0IDNjMzJhOTRiMGIxNzYyNjI5YWI5YjFiYzBhZjJkYTZkZDg4ODE4NDggbGVnYWN5LXRydW5rCiszMDMwNSAxM2Q1OWRiZmI4ZDQ0YWU2NGJiYWRlYmI0MDExNjViYjVkMmE0NDRlIGxlZ2FjeS10cnVuaworMzAzMDYgN2Q3YTAxYmZjYWFmYjg2OTc1ZGJlNjdkMGQ1Mjg5MDhkMjlmOTQ5NCBsZWdhY3ktdHJ1bmsKKzMwMzA3IGY2NGM5NjkyMjcwOGE1MTA0YmZiMDZlOGRlN2E0ZjZkZTczOWIzYWEgbGVnYWN5LXRydW5rCiszMDMwOCBmNGIxYmVlZDY0MDUyZDBiM2M1MWI3NmQyNWFkODU0YTMzNjkxZDRkIGxlZ2FjeS10cnVuaworMzAzMDkgOWU0MDkxMDdhZWVhYTFmM2MzMWI4MzBhYTdmYmJhNDc4ODc2OGQyMyBsZWdhY3ktdHJ1bmsKKzMwMzEwIGJiMTU0NmI0NjAxYmQwZDJmYmUxN2QxMTA3NzhiYTFjNzE3NzQ1NGYgbGVnYWN5LXRydW5rCiszMDMxMSA1OGQ3NWEzYzhhZmVhN2VhNGRmMzEzMTc3M2Y3ZTQ2MWYzYmIwN2MxIGxlZ2FjeS10cnVuaworMzAzMTIgM2UxYmQxMzdkM2MyYjg4YTU4MjRlMWY1ZGE2M2I3MTNiMjFhZGIyZCBsZWdhY3ktdHJ1bmsKKzMwMzEzIDVjY2RlOGExNTI2YTQwZDkyZGM1NGM4ZGI3OWI2N2VjM2YxMDk5YzUgbGVnYWN5LXRydW5rCiszMDMxNCA3OWM5YTA3YjI4OTY1OTI4NmYxNDM1MWZkYTM4MjQxODlkYTk2YTg0IGxlZ2FjeS10cnVuaworMzAzMTUgMTViYjY3NmYyZThjMGYyYzJmOGQ4NDhlNTcxMjNlMTMxZGJkNWFhNSBsZWdhY3ktdHJ1bmsKKzMwMzE2IDAwMDc1ZjFlZjg2NmJmNDRhYzdkODI0MGY0ZTFiOTBjYjk1M2MzMzYgbGVnYWN5LXRydW5rCiszMDMxNyBjNDRkOTk0YjM5ZTU0MjY5NjI0NGM1ODZlYWFhZDA1YWJiYTFhYTdjIGxlZ2FjeS10cnVuaworMzAzMTggNzg2Nzk4ZTg2NDY5Y2I4MDhjMzAwOGNjNWU0NjE5ZGExMzcyZWY4YSBsZWdhY3ktdHJ1bmsKKzMwMzE5IDM3ZWYwMTc2NDZjNDYxOGEzZmMwYmNhZmEwMDMyOGNkZWI5NjFiYzQgbGVnYWN5LXRydW5rCiszMDMyMCBkMmIwMzYyODE0MDMxM2I4OGExZDAyMzQ2ZjY2OTEzMzQyNDA1MmU5IGxlZ2FjeS10cnVuaworMzAzMjEgYTliNTIyZTU0NWNmNmYwODNlMDljZmI3OWE5Yzg1ZGVkNjEyZWJjMCBsZWdhY3ktdHJ1bmsKKzMwMzIyIDU0MTllZjRhNGQ3MGIwYzVmZGEyOWE4NDhhZTFhZDcyMWRhOTg3M2IgbGVnYWN5LXRydW5rCiszMDMyMyA2NzNkY2I5YjUxY2UyYmRmMTJkZGEzNTEyZWRjMjJiZjRmY2I5ZTAzIGxlZ2FjeS10cnVuaworMzAzMjQgZmM1MTY5YWE0MWNlZjg1Yjk2OTdjMzk0MmZkZjk1NTMyNWI2NTUwMSBsZWdhY3ktdHJ1bmsKKzMwMzI1IGVhNzU5MTljNzY5ZGI2NWRiMmY0OWI1OThlMDQzMTdmNWUyNmE4ODMgbGVnYWN5LXRydW5rCiszMDMyNiA4NjVjNTliNWJmZDcxMjgyOGYzNGNhZDVhMzc3ZDhjZTAwOTNmNTg1IGxlZ2FjeS10cnVuaworMzAzMjcgYmNhNTQwOWI3NmVjZmI5MzQyZDI0YmFhMTIzMjFkOTVjODY5ZWIzOSBsZWdhY3ktdHJ1bmsKKzMwMzI4IDgwMzMwMjU3MzE1MjdiZTRhYjM0MDk4OGU4YWZiMmQ2OWE0MGQ2NjAgbGVnYWN5LXRydW5rCiszMDMyOSA1Zjc0ZTA0MDAxMmQ2OWVmODM1ZTJjNjZlZjVhN2E3M2E2NmNmZDUwIGxlZ2FjeS10cnVuaworMzAzMzAgM2VlNTRmYmZlODQ2ZDg5ZWRmMGU1YWRkM2E5ZTRiMDE5MjU5ZWVmNyBsZWdhY3ktdHJ1bmsKKzMwMzMxIDJjZThjZjI4NGIxNTBjMDgxODE0NTQyMDhmNDVmNTIzY2JiYWE0NjAgbGVnYWN5LXRydW5rCiszMDMzMiBkYWE0NThiMjgzODUxYmZkM2M5NGZlZTE5YTk0OGIxZWE3NDk0YWMzIGxlZ2FjeS10cnVuaworMzAzMzMgNjYwOTk2YTI4ZWU4YzRlNmIxNjY5NWYxZTE3OWE4ZGMzNjU3YjRiOCBsZWdhY3ktdHJ1bmsKKzMwMzM0IDcwNDg0MmYwNWIwOTFlNThkM2U5M2Y0YmUzNTY5ZmIwOTFmMTllY2UgbGVnYWN5LXRydW5rCiszMDMzNSA2Y2Y2Mzc3NjdjZTI0ZDJjM2E4MTFjY2Q2YjIwZjA2MTgyODBhM2ZlIGxlZ2FjeS10cnVuaworMzAzMzYgYjRjYTViOWJhOTMzNTUyOGFhNjhiY2NhYWMwOTgyOWQ0MTExNmNhNCBsZWdhY3ktdHJ1bmsKKzMwMzM3IDI3NTJlOWFhZTk3YmVkNjAxZGFlOGZjZmNlYjViNTE2MTUyNTIxZDQgbGVnYWN5LXRydW5rCiszMDMzOCAzY2Y1YTc4NTJhMmYzZmQ0ZjBiMGE2ZGVlMjY2ZWY5OTA2OWJiOThiIGxlZ2FjeS10cnVuaworMzAzMzkgM2ExMzAwNDcyOTAxNjNhMDU5NjZkM2FkYWMyNDAxNDE3NzkzZmFiOSBsZWdhY3ktdHJ1bmsKKzMwMzQwIDAzNjkxOTlhMjY1YWY4NDFmZmExNjE0YWIzMTU5MTk3ZWY1ZDRiYzggbGVnYWN5LXRydW5rCiszMDM0MSAwMjllZGE5MzdiYjQ3NDNmMGUxNzE2MDNkYTYzMGZhNDhlN2YyNTg2IGxlZ2FjeS10cnVuaworMzAzNDIgODNmOGJkNmFlODExNzIyMGQyYjEyZmQwNzg3MTYzOWNiNWRkZmIxYSBsZWdhY3ktdHJ1bmsKKzMwMzQzIGFhY2E4YTNiMjNjZDA1ZDIyMjgzMDk4ZjAxOTc2ZjZjZmYzMWVjNTAgbGVnYWN5LXRydW5rCiszMDM0NCBhNmYwYmM2ZThiMzhkZTVmNzcwNjM0YzQwNDliZTU2MWJhZmUyZTY2IGxlZ2FjeS10cnVuaworMzAzNDUgZjMwNWE1NzhiMzk0MGVjODNjYjg2Zjc3ZWJlYmY3OWY5N2I4ZWVhNCBsZWdhY3ktdHJ1bmsKKzMwMzQ2IDQ4YWZiOGUxNDIwYmI4NmY5YzlhZWZkOGZhYzRhZWNiYThiYmE5NGIgbGVnYWN5LXRydW5rCiszMDM0NyA0MjI3OWEwMjEyNWUyODQ2MWVhNDc0ZDYwNjRmYzAwNDQzMGFhY2Q4IGxlZ2FjeS10cnVuaworMzAzNDggMjNhOTgwZWI4YWZiYjM1YTI5MzNlMmU4YmVlMzZkYmE2OTI1MWQ0NyBsZWdhY3ktdHJ1bmsKKzMwMzQ5IDFlYWIyNmY3MTcxOTlkN2NhMjgzNjhkN2FjNGZhMjQ0MzhjNjZjMGUgbGVnYWN5LXRydW5rCiszMDM1MCBmNDgzZWZjYTIyNGM2Y2ZkYjM1N2UwZjU3ZDQ4Y2U3NTYzM2ZhMzJjIGxlZ2FjeS10cnVuaworMzAzNTEgM2QxMDYwZGI4MDYyOGJjNWU5NDlmZDM3M2UyODZjZTllMGMzNzRlMiBsZWdhY3ktdHJ1bmsKKzMwMzUyIDI2ZGY2MDEzYjMwM2Q0YWJkZTRkZjMxZDVmYTBlZTY0ZDUwNmE3OTAgbGVnYWN5LXRydW5rCiszMDM1MyBkMTc3ZGQwY2E4ZjcwZTQxYmUwMWM3ZmZhMGUzMzQ1ZDllODUwMDk0IGxlZ2FjeS10cnVuaworMzAzNTQgMzU0NjhhZDUwMjJhNzc0NTY5MWQ1MDk1MjNlYzQxOTllNmUzODAxZiBsZWdhY3ktdHJ1bmsKKzMwMzU1IDEyMGFmYmEyZGJmNjQwN2NkNzdiNTZjMTVkMjk2ODVlODExNzM5MGUgbGVnYWN5LXRydW5rCiszMDM1NiBjMjQ5NjA3ZWY1MzVmMTEyODRmN2QzMDU3N2JmZTE4YTQ1MjA5YjI4IGxlZ2FjeS10cnVuaworMzAzNTcgMzFiMWIwNDYwMzAzZDg1ZDc0NzBkYTgwMTlmMjQ3YTdhNjVkZWNiYiBsZWdhY3ktdHJ1bmsKKzMwMzU4IDkwOTM0ZTRjOTFiYTRiY2QyODY2ZTJlZmY3YjNhNjRlOGVjMmQ3ZmYgbGVnYWN5LXRydW5rCiszMDM1OSA2ZWMzODZiNDVlMWZhZWUxNjljYmJlZDdhMzMyNDZkODJiNjFlOGI3IGxlZ2FjeS10cnVuaworMzAzNjAgZDIxOTlmYzE0ZDA2MjRhZDgwZDg2MTI1MzNmYTM0ZTFhYzdjNTgxYiBsZWdhY3ktdHJ1bmsKKzMwMzYxIDIxMzNjZjM1NWJmYzhhMmM5MjUwOTc3YWIwMjNhYzBlMTBlNTI1YTUgbGVnYWN5LXRydW5rCiszMDM2MiBmMGY5YWNjYTQxNjRhYmQ3OGI1ZTFkNjA0YTZkOGUyOWMzYzY2MzE3IGxlZ2FjeS10cnVuaworMzAzNjMgNTRhYWNiODdiZWRhMzAzN2RmYWJmZTNiZjNlNjdmOTAyODAwNmZlZCBsZWdhY3ktdHJ1bmsKKzMwMzY0IGI2MjVmMWJmNzJmOTBkMDRjNDk1MDkzYjQxZDM5YzRlMzY4ZTExNWUgbGVnYWN5LXRydW5rCiszMDM2NSA0NWZjMGU0YjUwODQ1MjI3NWI0NmJhZDkyYjJlNWU3MWMyNDVhNDhlIGxlZ2FjeS10cnVuaworMzAzNjYgYjljMTU5N2Q4MTAyZTQ1Y2E0NWQ4YjNlNmViNmYyMjZiZmY0NGJhOSBsZWdhY3ktdHJ1bmsKKzMwMzY3IDEyNzUzZTdiMTVmN2U4NmJlMTQzNTZlNTRkMTA5Y2YzNjU3OTcxZDYgbGVnYWN5LXRydW5rCiszMDM2OCA4MDUzYmMwYjhiYjU4MWI0Yjg2NzBjYTVmZGNjNmI2NjQ4N2YxYjUxIGxlZ2FjeS10cnVuaworMzAzNjkgYmMyMGU4YjQ2ZGUwZDBhZTdhZWYyNjhlNDQ4OGQ3ODZlMjYyZmMwYiBsZWdhY3ktdHJ1bmsKKzMwMzcwIDk1NTEwZjBhMDYyNDU4NGI0MWJiN2I3NWZhZjg4NjVjODlmY2Y1MWMgbGVnYWN5LXRydW5rCiszMDM3MSAyYTk1YjdkNWZiZGUwZDRjZTcwNzQzMTMwMmI3NjYzMWIwZDAwMGIxIGxlZ2FjeS10cnVuaworMzAzNzIgMTQwNjQ0ZjIyZjY0OGNkZjBiM2QzY2M0Y2I1ZDBlOThkOWU2MDlmYyBsZWdhY3ktdHJ1bmsKKzMwMzczIDBhMGM3NTllZDE2Nzk5YWEyZTA2Y2U5ZjNjOThiZjg0YTQxYjJkNGIgbGVnYWN5LXRydW5rCiszMDM3NCA0Y2JkYmIwYmRkNWQ0YWVjMTAyNWE2YTY4ODY2Yzg0NTlhYmVhMzAyIGxlZ2FjeS10cnVuaworMzAzNzUgM2JjMmFmNDFjMDE2NTc5YThlMWMyYWY0YzNhN2E0MWM3MjM1OTM0YiBsZWdhY3ktdHJ1bmsKKzMwMzc2IDA5NmQxMmRiMjYzNjUyM2NlNWI3NTVmZGMzY2MzOGM1YjcwOGZjNzcgbGVnYWN5LXRydW5rCiszMDM3NyBhNDQ3NGUxNGZhYzk3YjRhNjIyOWEwNWY3NzYyMzAzOWFmZTEyMWU4IGxlZ2FjeS10cnVuaworMzAzNzggMThkNGY3MWY1ZWQ2YTkzNmE0YjA3M2I4NDZkMGRjOTA2OTJkY2I0YiBsZWdhY3ktdHJ1bmsKKzMwMzc5IGQ1YWQyOWE0NzNlMWQ5OTBhMzAxMTQxMGRkYmVlM2M2MmIzZWYwZTEgbGVnYWN5LXRydW5rCiszMDM4MCAyYzUyYWJlZTdkMTA2MmM1MDBlYzI4Y2FkYTcxNTA0MWEyZjRkNTJjIGxlZ2FjeS10cnVuaworMzAzODEgOTdjNWFhODJiM2U5YzE1MjRiYmFmZGQ3NDljYTY1YTcyYTMyMjYyMCBsZWdhY3ktdHJ1bmsKKzMwMzgyIDQwZGI3ODE1OTE3NzYyMGRlMTNhZTliZTAxZGJkNzE2MGU3M2MxOGEgbGVnYWN5LXRydW5rCiszMDM4MyA3ZWE3NjM3MzQxZDBhMTQ3YTRjMzQ2ZWI1OGI1YjNkMjYzM2ExYTJiIGxlZ2FjeS10cnVuaworMzAzODQgNDdlNmFiOGQ1NzUxZDRhMDdmOGM2NjY5ODU2ZDg4OWYzYzMxMTkzOCBsZWdhY3ktdHJ1bmsKKzMwMzg1IGNjYmEzYjY2ZDY3NjY2MWY2ZTE2M2UzMTA5OTE4ZGVkMDRhMzk3M2EgbGVnYWN5LXRydW5rCiszMDM4NiBiY2FjYTM2YTU4M2NjNDU5M2I1ZGVkOTFiNzdmMTBiOTM5NGY5MDllIGxlZ2FjeS10cnVuaworMzAzODcgMDc0OTE5NzE1MzU1YWM4NmUzNzNjODBhNTMzZDdlZTdmNWI3MWE5NyBsZWdhY3ktdHJ1bmsKKzMwMzg4IDY4OGZhNmNkYWI5NDNjNTgwMDQwNTI2OTc4ZGU4MzYzYTY1ZGMyYjIgbGVnYWN5LXRydW5rCiszMDM4OSA4OTk5ZDcyYzJlNmNkZWIxYTYwMGZkMTVkMTk3Y2FhZGM0N2JhYTIxIGxlZ2FjeS10cnVuaworMzAzOTAgMDAzMmRiZWVjMzkxYzE1NzAyMmY4ZDRlNDdmN2RkZjNkN2U0YjUxZiBsZWdhY3ktdHJ1bmsKKzMwMzkxIDdjZGEzNjAzNTY3Zjk2N2FhYjJkYTcxZTNhYzZiNTk5YzQ0ZTAyMGQgbGVnYWN5LXRydW5rCiszMDM5MiBjMjVkN2QyYzE3MTA0MjZjNzY2MTY5MzMzNDFmMWEzMDE5MzY5NTAzIGxlZ2FjeS10cnVuaworMzAzOTMgZmJjZjNjNGI0MjcyZTIxNWZjMmQ3NWY1ZDMxNTdiZDJhODMyN2UxNSBsZWdhY3ktdHJ1bmsKKzMwMzk0IGY1MTYxY2E0ZGQ2ODBkNGZiZTMzYTE5YWFjNzliNjM0MGE2NTQyN2UgbGVnYWN5LXRydW5rCiszMDM5NSBhNDNhMmIxOGI1YzQ4YmZlNmNkN2FlM2EyMTFhMGQyYTEyM2RjOGEwIGxlZ2FjeS10cnVuaworMzAzOTYgMDUwMTZiYjkxNzY2ZmU5ZDFiMTliMTZiNzE3NTI3YzI4NjhiYzNmZiBsZWdhY3ktdHJ1bmsKKzMwMzk3IGI5Mzg0NTIyNmRiNjhkODMyYzJhYTE4NDZkNWEzMTViOWM1Y2Q5MTAgbGVnYWN5LXRydW5rCiszMDM5OCA0MmYxOWE2YzY1NzAxY2RmMzY1MDBlNDcwZTliMGVlMGRiMTRhMjRhIGxlZ2FjeS10cnVuaworMzAzOTkgZmFmOTY1ZDczODI0YmYyNDRlYjY0ZjFmZWEwMjhlZTI2OWEwYmQ3YyBsZWdhY3ktdHJ1bmsKKzMwNDAwIDlkMDU4MGFjYjQ1ZmY0NWVhNzU3MWQ0MzMwYzlmYTZjYmU2MTU3ZTAgbGVnYWN5LXRydW5rCiszMDQwMSBkYmZjM2VmN2QwMDM1MGUwOWU5NTUzZTk1NjQ5NzM2NGI1YjNkZTkwIGxlZ2FjeS10cnVuaworMzA0MDIgMzFhZGVhNDlhNTU4ZjcyOGNlOTMzOTliZWZlYThmNWJjZWIyMTYxZSBsZWdhY3ktdHJ1bmsKKzMwNDAzIDk2NDY4ODcwZDIwNmQ5NGYxYThhNGQ5Y2QwNDMwMTgxOTRhN2QyODAgbGVnYWN5LXRydW5rCiszMDQwNCAzZGIxNjVmMDIxMDc0MzYzYjE2MDhhYWFiMTVjMzU3MDRlZjY2YTY2IGxlZ2FjeS10cnVuaworMzA0MDUgMzNkY2Y0ZmQwZmY5MDNmYmRmZTMwNzZjZTg0YjgyYmQ4YjY5NTRkOCBsZWdhY3ktdHJ1bmsKKzMwNDA2IDI0Y2I2MjIyNTA0MGNlYmIyODJhYmIyNGFjMWMzYWRjMjliOGUwMGQgbGVnYWN5LXRydW5rCiszMDQwNyBmZmE0YWIzNzAzNmYwMTVmZTk5NjQwZDIxNGE5YjA4YzhmMTRhMTBlIGxlZ2FjeS10cnVuaworMzA0MDggMzJlNGM3NzUzNDE2MmM1ZjdhZmNkYTRkNDFkMDFiOGIwMjc3MGNlMiBsZWdhY3ktdHJ1bmsKKzMwNDA5IDZjNTM1ZGNlZGFkMzAzYzEzZTQzNDcyYjlkMGY3OGQyNzgzMTk3M2QgbGVnYWN5LXRydW5rCiszMDQxMCA3OTQ2NmYwNGYxYzU0YjUyYjcyZWQyMWM5ZGE1MjcwOTE1NTVmNjViIGxlZ2FjeS10cnVuaworMzA0MTEgYjkxZDk1ZTliMjQ5YTc5MzM1YTZhNjYwOWMxMWU2YWFmZmFkYWY4YiBsZWdhY3ktdHJ1bmsKKzMwNDEyIGEwODVjYzA0NzY4MTA5NTlkYWNkMGMwNzc3ODhmZTBmNTZmZDE3YzEgbGVnYWN5LXRydW5rCiszMDQxMyA4NDY4ZTNmYzNhMmJjNzFjYzJiNzA4ODZkOTYxNGMxY2MwNDM2MzE4IGxlZ2FjeS10cnVuaworMzA0MTQgM2Q1YWJkM2Q5ZTRiYTgwNTE5NDNmODU1YzQ1YmYwYjUyYjEyNDViNSBsZWdhY3ktdHJ1bmsKKzMwNDE1IGJjMzA1ODQ5NTIyZGY3ODcyOTgyZTcyMGI4MGQzNjUzYjhlZjViYjkgbGVnYWN5LXRydW5rCiszMDQxNiBhODJkOTJmNzg0NzJjNzA3ZTZlN2UxMWM1MGZlZWQ0M2Q1YWFkYTk3IGxlZ2FjeS10cnVuaworMzA0MTcgYmQwYzQwNzE5NTgzNmJkMGYxOTlmYmQ2YmNlMjdjOTZkMzg5YzBlOCBsZWdhY3ktdHJ1bmsKKzMwNDE4IDZlNTQxYTcyYWYxYWU2NTQzNzc0MmQyODQ1NmU3YjkyNDUzMzA3YjYgbGVnYWN5LXRydW5rCiszMDQxOSA1Y2E3MDcyMzYxYmQ5NWEwMGQ0YWVlMTA5OGFkMjM2YjE5MjU0NjljIGxlZ2FjeS10cnVuaworMzA0MjAgNzIzNzIxZWE0MDI1OTZjNDM1ZWU2NmZjNzc1NmYyMTU1NjI3NjE3ZSBsZWdhY3ktdHJ1bmsKKzMwNDIxIDU1MTQxMTQ0ZGFiNWU1MDkxMmIxMDc0NDQwYzViZTdhNDU0Y2UxZTUgbGVnYWN5LXRydW5rCiszMDQyMiBiZWVhNDIxNTI3ODc0M2RhMTFlYWRiNTM5YmNiZWViYTQ4YTcwMzgxIGxlZ2FjeS10cnVuaworMzA0MjMgNTI2NzQyYTc0ZDA2NWIzYjNmZjQzMjZkNmQzM2M3NWI5MTQwZjA3NyBsZWdhY3ktdHJ1bmsKKzMwNDI0IGFjZGIzOWI3MTRiMWVlZTQ4ZDRkYmVjMjMzODFiODM0ZTBhMDIzNTUgbGVnYWN5LXRydW5rCiszMDQyNSAwMmM2ZmQ1Y2Y3NWJjZjU2ZmI0YmVjNzc2YmZlMDE4OTExMGNlMDg3IGxlZ2FjeS10cnVuaworMzA0MjYgYmU3MzJlMjE5ZWQxMDI2N2Q5MDI3ODNiZWU3MzE0ZGIxNGEyNTJkZCBsZWdhY3ktdHJ1bmsKKzMwNDI3IGE1OGNlY2Y1OWIwNjNmNTU1MWM4YjRhMTNjNDU0YzA3YjA0NzBhMmUgbGVnYWN5LXRydW5rCiszMDQyOCA3YjVhN2NmYzE3YTllNTAxN2Y3NTAzZDAzMmFlNWFiYzg1ZTA3NGRjIGxlZ2FjeS10cnVuaworMzA0MjkgOTRiYzgxMmEzYzUyODUxNThlNjBmZTEyNDVlNDE3OWQyMWViOGY3NSBsZWdhY3ktdHJ1bmsKKzMwNDMwIDM1ZmNhYmVmYzlkMmZkMzU2OTU3MjllYTlhZDZiNGNmMmI0YTIzNWUgbGVnYWN5LXRydW5rCiszMDQzMSBmMTU1OTQ2MGI5NTI2MjY5MzJjNDY1MWY3MTFjODU0YTcxYmIyN2FkIGxlZ2FjeS10cnVuaworMzA0MzIgMTYzNTYzY2NiN2Q2MGFkZjg0ZThiNTA2MDRhOWI2NTYzY2VmMTAxOSBsZWdhY3ktdHJ1bmsKKzMwNDMzIDI0MGEyNDAxYzQwNGRlNmFmOTk4M2MyNGNkMDA5NjM0M2M0NWRjMDggbGVnYWN5LXRydW5rCiszMDQzNCAzODkyN2ZkNTY3YjRlNGYyZjkyODhmOGZkYzczNGQzMTc5OTM1YjRiIGxlZ2FjeS10cnVuaworMzA0MzUgYjgyMzY2YmM1NDM4NDI4YTlkOTVkNmMyNGM4ZTc2ZGE1ZTY5YmNkYyBsZWdhY3ktdHJ1bmsKKzMwNDM2IDNjMDQxYjE5ZjFkMzY3N2EzYzM5MWFiYmY1NWI4Yzk0MjM0NWUzN2MgbGVnYWN5LXRydW5rCiszMDQzNyBiOGM3MmU4NmExMmQ0MDcwMGIxYmUwNzQ2NzMyOTQ1ZWI5ZmJlMTAzIGxlZ2FjeS10cnVuaworMzA0MzggMWM1OGZlNWM3NjlmM2MwNmU3MWJlM2IwMDAwYzg3ODkwOWNhMDUyZiBsZWdhY3ktdHJ1bmsKKzMwNDM5IGE1Yzg3OTcyNmIzYTMyMzM3NTE2YmY1YjEwYjFkMWJkMjk0MmFmNWUgbGVnYWN5LXRydW5rCiszMDQ0MCBiOWM0NjJkMjNmM2M2NTIxNGQ0N2QxNmE1Y2I1NGNmNzJiNjQ0MmNmIGxlZ2FjeS10cnVuaworMzA0NDEgYTU3M2ZlZGU4OGUyYjE4ZTRlN2QxZjA3OGJmZmFmOTliZmYwOTBkNyBsZWdhY3ktdHJ1bmsKKzMwNDQyIDVkZjdhMjg0ZWFmNGVkNzcxZjE3NzRjMmIzYjQ2NWNhN2RkNWY5OTcgbGVnYWN5LXRydW5rCiszMDQ0MyBiNzkwZGEwNjcxZjdhNzFlOTAyMGU0MTI4MzQxYjUwYTdiOWUzNjQ0IGxlZ2FjeS10cnVuaworMzA0NDQgNGI0Y2UyNDkwZmUyZWQ3ZWVjNTE5YjZhMmNjZmQ4NjQ5OTkyODJhNCBsZWdhY3ktdHJ1bmsKKzMwNDQ1IDEwMzg5OWNlODhiMmZjYTNlN2YxZTc5NjRiYWExOWVkMWI2OTM3MzAgbGVnYWN5LXRydW5rCiszMDQ0NiBiZjllMDQyNDIzN2Y1MTU2MjJkODA1MGUxYWNhMGZiYjY0MWI5ZDJkIGxlZ2FjeS10cnVuaworMzA0NDcgNzc2ZjI3MGE2ZWE5YzcwYmZlNjdlNDRlNDEzNTRhMTM4ZWIzOTJhNSBsZWdhY3ktdHJ1bmsKKzMwNDQ4IDQ0NDhmZjhiMzIzOTBiZmQ5MjVmNjkzNTNkNWRkYTE3MTViZTEwMjcgbGVnYWN5LXRydW5rCiszMDQ0OSA0YzAzYTRmYWQ3MmVmMjYxNzA3Yjg4MmVjZTQzMTBlMmUwZTg0MWU3IGxlZ2FjeS10cnVuaworMzA0NTAgODQ4NzllMTgzNzczODQ5NDlmYTI5YmNhNjIxZWFiNTUwY2MzOTlmMyBsZWdhY3ktdHJ1bmsKKzMwNDUxIDkwOTk4MDc5YTFhMjM4OTMyNTRkYmJmNTkyZDJhNDhlNmViZDc4ZWYgbGVnYWN5LXRydW5rCiszMDQ1MiA2N2RmMjg5M2E1MGVlODE3N2MxMDI2OTdjNDk0MDliNGJhZGY4NjljIGxlZ2FjeS10cnVuaworMzA0NTMgNzAxYjEwMjlhZjQwNzkwNTUwZWU3ZDQ5OTFiMWZiMWMyYjI3OGM4ZSBsZWdhY3ktdHJ1bmsKKzMwNDU0IDcwZjBmMjViMTM0ZTQyOGMxZDE3ZmI4MmI1Mzc3ZTEyMzdjYTEzZGUgbGVnYWN5LXRydW5rCiszMDQ1NSA3NzRmNzU0ZmQxZmYxNTAzOGZiZTkxMDdhY2FkZTkxNTUyZjIyN2YwIGxlZ2FjeS10cnVuaworMzA0NTYgMzVlNWIwMjFiNzc0NDQ3MjAzZWU3MzQxNmI5YjE5ZGMyZjA5Yzg1YiBsZWdhY3ktdHJ1bmsKKzMwNDU3IDc4NGU3ZmRmOGM1MjQzNDZmZTAzZjUzZGJhYjA1ZjFkMTQzNmY1ODMgbGVnYWN5LXRydW5rCiszMDQ1OCA2OTg5NjBkNTYxZjhkYTU4OThlMGZkYWEyZmMwM2FlZWUxNzIxODIzIGxlZ2FjeS10cnVuaworMzA0NTkgNWIxNTc1OTY4ZjdmYWY4MGU3MDI4MzQxYjFjYjkyNmJmMjRkYzY4NyBsZWdhY3ktdHJ1bmsKKzMwNDYwIDU2NzdlOTgwZTA0N2U0MjQ4ZmZmYTAwNTBiNzcyZjcxZDBhOTNiNDQgbGVnYWN5LXRydW5rCiszMDQ2MiAyYzY3MTY5ZjZlMTNmYmRkMTdiNDc3NmRjNzliYzUyYWVlMjVhZTQ5IGxlZ2FjeS10cnVuaworMzA0NjMgZTAyZGFmNjMwN2ZjOGE4ZWI1ZTAwMjZlOGM3MGRlZTllYzA3Mzg2YyBsZWdhY3ktdHJ1bmsKKzMwNDY0IDU0OWQwN2QwYWVkN2VjYTE5MDI3Yzk2NWNiNzA5MTFhZDNhY2YxZDUgbGVnYWN5LXRydW5rCiszMDQ2NSBmNzIyYTgzMDE0MGZiNDE1ZTVlMjg3M2Q0ZTExMTRmNGQxZWU3OGU0IHIyM2ExLWJyYW5jaAorMzA0NjcgN2UyMzUxYmM2ZTdhNjliZjY4ZGY3MTI1MzUxODZiYzViMDZhYzI3MSBsZWdhY3ktdHJ1bmsKKzMwNDY4IDFjNjVmYTVlNTJjM2Q4MWFiMDFiYThlZjNhMGJkZWQ0YWYzZjZiZGUgcjIzYTEtYnJhbmNoCiszMDQ2OSAxNTAxN2E3OWJhY2RkYWQyN2JiYWFkNGYzOTJiYjRiMDkxMTc3MzE4IHIyM2ExLWJyYW5jaAorMzA0NzAgZDZkY2ZmNGIzNTc0MjM0ODBlNDdhNTU1ZWEwMGJmMzJmMmNlOGYzMiByMjNhMS1icmFuY2gKKzMwNDcxIDJiODAxMTY4MTViNTM1ZGQ5ODAyZDZjMzU5MWE2ZDljYmQ2NGFiOTcgcjIzYTEtYnJhbmNoCiszMDQ3MiA5MmU1NzJlM2NhOWY4YzgzMzlmN2U5NmE5NTZiYTliNzgyYjg4MjZkIGxlZ2FjeS10cnVuaworMzA0NzMgOGE4ZGZmMjUwYmU0MzYyZmExYTY3ZDMxYWQ0ODg3MGI2MDNmMjZmYyBsZWdhY3ktdHJ1bmsKKzMwNDc0IGJjYmQ5NGM2MTBlODIzZjI5NWQxYjc0Mzk5ZWJiNjhiODc4ZmFjNTIgbGVnYWN5LXRydW5rCiszMDQ3NSA3Y2I3M2E3MzJmNzcxZWFhMjM2ZjJkZjQyYjk4Zjg1MjQyZWI5MGFiIHIyM2ExLWJyYW5jaAorMzA0NzUgMDE4MzA3NzY1ZDM0ZGNmNjJkNmQyYWQ2NmJkN2Y3YmRlNTMxZWZhMiByMjNhMS1icmFuY2gKKzMwNDc3IGNmYTEzY2U5ODNiYTJiNzg5NjZjMGVjNzg3MTFjZGY3YzgyMjM2M2YgbGVnYWN5LXRydW5rCiszMDQ3OCA2OTkwNTA1OWM3YmQxODg1OWIzZjhhMjYzY2U4N2VlZWIxZWEyN2UzIGxlZ2FjeS10cnVuaworMzA0NzkgNzQwNzliZTZmM2YxMTRlMTkyMjgzMzUyZjkwMjcxYTc2ZDEwMDNmNSBsZWdhY3ktdHJ1bmsKKzMwNDgwIGNmODFmODI1ZGFhYzkyNmNkNTQ3YTI0MmEwZTU1Y2JlYzQxNTE5YmMgbGVnYWN5LXRydW5rCiszMDQ4MiA0ZTA5MzJhMTEyZjQyYjU1OWI3MzFjOWVkOGY4N2RkOWI2MzE2Y2VkIGxlZ2FjeS10cnVuaworMzA0ODMgOTZlMWFiOGRmODgzODRhZGE3ODMwMjJiODc1Y2I5NzQyZmQ1YWJhNCBsZWdhY3ktdHJ1bmsKKzMwNDg0IDJhODdkOTQ4OTExMmZhMmUzNGFhM2U4NzViNmYyMzYwZWNmZGMyYmUgbGVnYWN5LXRydW5rCiszMDQ4NSAwMGNkMWQ3MTU5YzJiNDUxMzExMjExZWMwZWY5YzlmOTVmNDQyYWJjIGxlZ2FjeS10cnVuaworMzA0ODYgNmNhMWMwZDNlZjE5MzEyMjQ0MTQyNTBhMTIxNzNlY2QzZTY5NTExNiBsZWdhY3ktdHJ1bmsKKzMwNDg3IDhlZDQ3MmU1YmNkNDRkZDMyMWI0MzVmOWJkMTk5MDU1YTA3OWNlZDEgbGVnYWN5LXRydW5rCiszMDQ4OCA4OGRmMjY3ZGI4NTllM2Y0Yjg5ZmQ2ODY0ZDkxYmU0NDMwMTQxOTQ3IGxlZ2FjeS10cnVuaworMzA0ODkgYmRhNDE4NTY3MGNjYjc0OGU4Mzk5YWY2MTkwYzc3OWZhZjE5YjdlZSBsZWdhY3ktdHJ1bmsKKzMwNDkwIDI5M2VkYTNlNjlmNWY1ODIxNGFhYjI5OWNhMDM4OTZkYjE0ZWRjMDIgbGVnYWN5LXRydW5rCiszMDQ5MSBmNTcwODNhMzQxOTY2NGFiNDhlMDk0YzBiNGU3YTNlMTg3ZTBkMTU0IGxlZ2FjeS10cnVuaworMzA0OTIgMWM0MDYwZDllNjg3NGMzNWZjMmI3ZmMzZDBhYWUwYjZiOGY1MTRhMCBsZWdhY3ktdHJ1bmsKKzMwNDkzIGVhNjdjZWE2NzZlOTkzNDViMGRmZWEyNDViYzk0MWFhZDllZTQ4YWIgbGVnYWN5LXRydW5rCiszMDQ5NCBkODVlYWY0Nzg1NTZlZmM2MTNmNmY0Zjg5MDliMGI2Mjc5M2FkMDVlIGxlZ2FjeS10cnVuaworMzA0OTUgODEyMDljMGYwOGEwNTkyNmY3YmQwZTlmOTA1NWFjY2VhZGIwMmQwNSBsZWdhY3ktdHJ1bmsKKzMwNDk2IDQ1NzllODNjNjYzYjcwMmVhMjBiYWIxYTYyMzJhMTExYjViNGFhNzQgbGVnYWN5LXRydW5rCiszMDQ5NyA3MmMzZjczNDdlODhjODk0NDA2ZGVkZGE3ODdhMTZmYWNjNWE5YzYxIGxlZ2FjeS10cnVuaworMzA0OTggMjY4N2E5MDg1NDExZTc4NTdmNjU2MmUwMjI3MDg2MTUzNjBiZDdhYyBsZWdhY3ktdHJ1bmsKKzMwNDk5IDVjNGZhMDRjOWY2MjhkODk5MmMyNTA2NmFiYjRmYzliZWM0NmJlNjYgbGVnYWN5LXRydW5rCiszMDUwMCA2YTVjZmZjNjIzODdkZGFhMDkwYmFjNTMzZWM1MGE4N2M5ZjdiN2ZkIGxlZ2FjeS10cnVuaworMzA1MDEgYzBiM2JiNDg1YmNmODAwMTZjZTg2MGFkZWY1ZGFhZGVkZTRmOTBiYSByZWxlYXNlMjItbWFpbnQKKzMwNTAyIDk3ZGM1MzBkOTBlYjc4NTI2MmQxNTlmOTU5M2RjYWY5M2U3ODA5NjkgbGVnYWN5LXRydW5rCiszMDUwMyA0NzkzMTAxNDliMmVkZTFlNzA5NzIxOTdhNGVhOWY1ODIyZWViMmZjIGxlZ2FjeS10cnVuaworMzA1MDQgZmQ5ZjIwY2UzYmJhMWZjOWMzOGJiMzNjODMwNzA0ZjRiNTIxMjNlNCBsZWdhY3ktdHJ1bmsKKzMwNTA1IDc0MWFhOWQ2ZDhiZWQ3NDA1ZmMzMzFmMzdiYjIzMDBlZDI2M2JmMjcgbGVnYWN5LXRydW5rCiszMDUwNiAwYjNmY2NmYmUyYTI4NzYxZWU0YzU3ODYxYjEyNTAyMGM2YWI0MGU0IGxlZ2FjeS10cnVuaworMzA1MDcgOWVlNGZkMDVkM2NiY2Q1YWQ3ZGFiMzgzM2JiY2Y5MGIyZGMwZjhjMyBsZWdhY3ktdHJ1bmsKKzMwNTA4IGJmYTMyNjEzZGVjOGVjYTBlODE3NjI2Zjk4NGRmZGZmNWM1OGJkNTggbGVnYWN5LXRydW5rCiszMDUwOSA3MjdiY2I4MTFjNTBmOTVmZDk0NWIyZjBlZjQzODkyODk1NmEyYTUxIGxlZ2FjeS10cnVuaworMzA1MTAgZTJjODhjNDUxYzE5YTU0NDRjOTViYzcwOWYzMmJmNTBiNTkzMzQxOCBsZWdhY3ktdHJ1bmsKKzMwNTExIGY0NDFjNGU1YjIzNDY1NjU0NWM4OGZlNTQ2MzE5YjdkOWJiNGE3MzYgbGVnYWN5LXRydW5rCiszMDUxMiAxMDk4Y2NjODRkNjNmODkyZjYyZmFjZTgyMzk1MWQ1YjdiZmFiNDc2IGxlZ2FjeS10cnVuaworMzA1MTMgODA2ZDM2ZTU2YmZhM2UwODAxMWY0OWJiMGIzYmU3NzBmM2Q0YjgwZiByMjNhMS1icmFuY2gKKzMwNTE0IGFkMTJlYTljN2VmZGY0NmI2Mzg5YmYzY2Y2NWU1NWRlOWZkZTVjMTcgcjIzYTEtYnJhbmNoCiszMDUxNSA0NDE0NzA3ZDkzNzYxNmM2YWQ0YjYwYzI2MGEzMzFhOWFmODQ5NTkyIGxlZ2FjeS10cnVuaworMzA1MTYgZTMyNzFlOGIxNGRlZTBmYmUwN2QxYTg1MmMwMGY4MjEzZjdmN2ZmZSBsZWdhY3ktdHJ1bmsKKzMwNTE3IGM0MjlmZTVkZTQxNzM1NjJkNTMwMzFjMGYzODUxNmE0Y2RjYTY4YzYgbGVnYWN5LXRydW5rCiszMDUxOCAzMzhhYzg2ZjQ0MmQ5OWFjMWFiYTc1NDRjNGYxZmY4ZTRjZjljMTRhIGxlZ2FjeS10cnVuaworMzA1MTkgZDI3OWQ3NjNmNDYyNTRlYzVkYzFmYTZkMjVlMjI2N2VhNzI3MjFhOSBsZWdhY3ktdHJ1bmsKKzMwNTIwIGQ1OWI3Y2JjZWFjMWM2Yzk2NTdkMWIzOTFjNDY5YWFlMjJiNmJiMWMgbGVnYWN5LXRydW5rCiszMDUyMSBiMWUyM2MzNTcwN2JlNGMwMTAyYjc1OThiNTQ5NTdkYzliYmI3NTIzIGxlZ2FjeS10cnVuaworMzA1MjIgYjYxYTY2MDIyZDVhNDAxZjRmNjMyNTEwNzEzMDM1MzlmMTRmMzU1OCBsZWdhY3ktdHJ1bmsKKzMwNTIzIDhlY2RkZjRhZDhiMDI4MWQ2OTQ2NmRiODU2Y2ZlMjY2Y2IyYTg0OWEgbGVnYWN5LXRydW5rCiszMDUyNCBkYzMzZDAyNzY0NWE0ZjNkOTBkYTZkMzNmZmEyYjkyYmI5YjU3Mjk4IGxlZ2FjeS10cnVuaworMzA1MjUgOTNiNmEzZjYxMzJkYzgyODczMjMzMTcwMmVjNjBkZDM5ODgxZDg3NyBsZWdhY3ktdHJ1bmsKKzMwNTI2IDQxZjc3MjZlM2U1MTE3YTkxNDQ0ZGQ0MzgwOTE5MTkzZDE1NTgwMzIgbGVnYWN5LXRydW5rCiszMDUyNyBhOTg2NzNiZTIwYzI4MDJlZmE0NWM3NGY1ZDE3NDIyNjI3MDhhNTI4IHIyM2ExLWJyYW5jaAorMzA1MjggNDJmMzNiZDY5YzcyNGNmNGY1ZmE0ZjE4NTAyNWI1ZDI5YTI1NTFlZCByMjNhMS1icmFuY2gKKzMwNTI5IGYwYmRmNGM1OTBlYzQwZjk4MWZlYTRhMjM5MjA1YTM3YzAzMjQzYTYgcjIzYTEtYnJhbmNoCiszMDUzMCBiZTUxMTIwMzExNmYwNmYzMDhjNjc1NmZjODI5N2M0MWQ4YTlkM2JiIHIyM2ExLWJyYW5jaAorMzA1MzEgMTNjOTAzOGZhOTM3Njk5MzhjNjFkN2VkNjJjNjBiMTJmMDU0NTk3MCByMjNhMS1icmFuY2gKKzMwNTMyIGRkNmYxZGY1MjRkZGM3NDAyNDkxYzRhYmY4NGIxMzg0ZDU1NjFhYzIgcjIzYTEtYnJhbmNoCiszMDUzMyA2OGRhZmUxYmMwMTY5YTg2Njc5YWNmMzAyZjUwNDc1ZDE4YzY3MmQ0IHIyM2ExLWJyYW5jaAorMzA1MzQgMDI1OTg1NmMxZTQ3NjEwODI3YzUwZDVlOTVlNTBkYjM5Y2EyN2FmOSByMjNhMS1icmFuY2gKKzMwNTM1IDk5ZGYwZTUyZjYzNDMzMjY1ZTU2N2YyODA1YmJjNDkxZTRkNTZkMGMgbGVnYWN5LXRydW5rCiszMDUzNiAxYWU3ODI0OTMxMzJiOWE0MGU5MDhhZmJhNDUyYzJiMjE2OTI3M2FkIGxlZ2FjeS10cnVuaworMzA1MzcgYjMwZmU0ZGNjNjk3OTg2M2JlNjc2ZWMwOWM2MmZjNGRkZGU3YWJkYSByZWxlYXNlMjItbWFpbnQKKzMwNTM4IDZlMWE3NDM1ZGYyNWQzNTMxNzNkMzYwZGYyMmM2ZGE0MTBjYmM5YzUgbGVnYWN5LXRydW5rCiszMDUzOSBlNjVmZmNiNDM2OTUxOGQ3MmExNWRjODFmNGNjMTBkMTA4MTk3YjJlIHIyM2ExLWJyYW5jaAorMzA1NDAgYWU5ZDhmNTBlNzZhMzYwM2MyZjU1YmUyNmYxN2E1NjU3ODM1NzVhNiByMjNhMS1icmFuY2gKKzMwNTQxIGY5YTU1NTdjOTQ0N2FjYTE2ZGQ2MzgyNTIzYjViYmVmMTczMTE5ZGEgcjIzYTEtYnJhbmNoCiszMDU0MiAwNDFjNTJmNDlkZjIyNzhkZjNiOTJlN2YyZjQwNzU3NDk1ZGYzNDUyIGxlZ2FjeS10cnVuaworMzA1NDMgMTg4NDE2ZmI3YWM1MmQyZWFhNTE4Yjk0NjllMDZjNDJiZmZmNTgxNSBsZWdhY3ktdHJ1bmsKKzMwNTQ0IGViZjcyNjVhYWU0ZWE5MmZjY2VmMzA1ZTBlNjhkMmQxM2M3YmQzMDkgbGVnYWN5LXRydW5rCiszMDU0NSAyMzI4MGE2NDI4OGUzZWExN2E0NDBiNzg4ZDVkMGFmMDIyNWEwNGVjIGxlZ2FjeS10cnVuaworMzA1NDYgNWQ5OTcyNjNiODU5YjkyZjI3NWY3ZWVjMTFmZjM4Mzc4YmE0MzRkMyBsZWdhY3ktdHJ1bmsKKzMwNTQ3IDIzN2ExNDYyMDc4NTliNWQ2NzVmNzczYThmZjgzMzNmZmNjNTE1OTAgbGVnYWN5LXRydW5rCiszMDU0OCA3MzdhNTQ3NjM5NmI2NDE2ODQxZjIwMmEzMDExZDdiZGE4YzlmOGI0IGxlZ2FjeS10cnVuaworMzA1NDkgMjY3ZjQ1YmU5YzAyY2Q0MGJlZWQzNzA0NDhmZjdjMGVjZmNlNjYzZSByMjNhMS1icmFuY2gKKzMwNTUwIDU1NDEyMWZjYmI5ZGNiZmQ2MDM0YjY5ZDJhODAwZGNhMDc4YWY4ZDcgbGVnYWN5LXRydW5rCiszMDU1MSAxY2Q5Yzg1NjQ4NzViODViNTIwN2E0ZDA1OTU4YzM4YzRkNjA5MmI3IGxlZ2FjeS10cnVuaworMzA1NTIgNzBkMmNiMzZmYTE3YTMxZmU3YTVkNmRjZGE2NTI3ZWQyMGFkMjhmNiBsZWdhY3ktdHJ1bmsKKzMwNTUzIDc4MjI3NzA5Y2EwNDRmNzllNGZlMWJkNjU5NjA0N2ZhMzQ2OTg5OGEgbGVnYWN5LXRydW5rCiszMDU1NCBhZjM1Nzk1MTFmODQ2OGZkMjEwMmQ2MmM5M2RkYzQ1NTVkN2M5ZmVkIGxlZ2FjeS10cnVuaworMzA1NTUgOWQwODI5MWNkNDExNjYyMTllYmQxYjUyZmQwZDU4OTBjYzNiODA5NCBsZWdhY3ktdHJ1bmsKKzMwNTU2IDcxNGNkZjA4MDZjMTZmN2E0MjYzNjA0YjBjYTk1Mzc4ZDE2MWU2M2QgbGVnYWN5LXRydW5rCiszMDU1NyBlMzgyZDM5MzMzMWQ1YzEyMWVjN2ZhZmVkODk5YjNmNDgzYWU3NWY2IGxlZ2FjeS10cnVuaworMzA1NTggOTRiOWNmNDI3NGRlMWUwNWY5ZjE2MGEyYmRhZjkzYjMxNjM3MDI5YyBsZWdhY3ktdHJ1bmsKKzMwNTU5IGVlMzRiNjQ5NTJjMGY4YTY3MmIwN2ViYTk3NTY4MGUyMzhhZTM2YWIgbGVnYWN5LXRydW5rCiszMDU2MCBjZDNjNGRmMTliMDM1YjZhZWFhMGQxNGZhMjJlNDI0NmEyMDI0NTBjIGxlZ2FjeS10cnVuaworMzA1NjEgYWZlYjcwYzg3NmFhMzUxNDIxN2I5MTRkMWY4YjRhZGViNTU5YzY2YyBsZWdhY3ktdHJ1bmsKKzMwNTYyIGNmOTAzMDllZmVlZTYyMmRmNjQxYTk2OTA1MDBiMDgzOWFkNzUzYmYgbGVnYWN5LXRydW5rCiszMDU2MyA2OTc3ZTMyMGE3NTZjNDY4NWViY2JiMjE5ZGFlM2Y4ZGQzNzkwMTM1IGxlZ2FjeS10cnVuaworMzA1NjQgZDNiYTdmNGE5Zjg4YWZlNWQ4MjYwZDkwMGUzMDVlNmM5ODU5ODQ0OCBsZWdhY3ktdHJ1bmsKKzMwNTY1IGFhZTk0OTUwNmQyYTdkMzI4MzkzMTZjNThlNjM4YTI1YjJkZTFiNmEgbGVnYWN5LXRydW5rCiszMDU2NiAxNTdhOTVmNDE3ZjNkN2JjY2QwM2YzMGZhMWYzYTA0YTJhNzNiMjdmIGxlZ2FjeS10cnVuaworMzA1NjcgNzkwMWZkOTUwMTdmMDk0NzgzZjIyMWNlYTczYzBmNmIxYzY4ZTRmNyBsZWdhY3ktdHJ1bmsKKzMwNTY4IGNiZGY2MGNjZjU0ZjVkZmM3YmVkMDBjYWRjNzAyNDRjMTVkYmRkMzkgbGVnYWN5LXRydW5rCiszMDU2OSBlYjMyMmVmNjdjOWZlYzUwMTk0MmYzYTIwYTUwMTYwZGU1OWIxMDRiIGxlZ2FjeS10cnVuaworMzA1NzAgY2M1YjJkMGE0YWQxZDg2ZmUyNjk3OGRjOWY0ZThhN2ZiNmY3ZTYzNiBsZWdhY3ktdHJ1bmsKKzMwNTcxIDA2YjNmYTI1ZDlmMWRlM2ZhNzUzZTE3MmY2NzlmYjhjYmY5NzM5ZDkgcjIzYTEtYnJhbmNoCiszMDU3MiAxNzEyZTIwNGFhOTJmMTIwN2YyZTE2ZDdmOGJhYjFkZWExNjM1MWQ1IHIyM2ExLWJyYW5jaAorMzA1NzMgZWY1MzE0ODJiYjM3YjBmYjM4YmYwMTYyYTg2MjdjZGUyMWZmM2QzMSBsZWdhY3ktdHJ1bmsKKzMwNTc0IGU5MjA0NGMwYjhlY2VlODE3NWFhNDY2ZWU1M2EzM2NiYTQ1MzVlMjcgbGVnYWN5LXRydW5rCiszMDU3NSBjMzBmOTcyODc2MDI5NGYyZjg4ZWZlMzVkOWViMzNlYjJjMmQyMGUwIGxlZ2FjeS10cnVuaworMzA1NzYgMTU2NGM2ODM5ZTZiMGViODA1OWFlNGM4MWNkMDIxNTlkYzA5ZGIyNSBsZWdhY3ktdHJ1bmsKKzMwNTc3IDBiYTQ2NjA2ZjBmOTExOGRlY2JhNDBkM2ZmMDgyODBlMjU4ZTc3YWEgbGVnYWN5LXRydW5rCiszMDU3OCBiODY1OTI1ZWY2OGFiNjNmNzQ4ZWVmZDY4Y2Q0MDlkMjI2Yjk4Y2NjIGxlZ2FjeS10cnVuaworMzA1NzkgYzI5YWRhNmMxYzkwNGEyNzQ1ZGE1YTA1MTg2YThhMjhiMDBhMzJlMSBsZWdhY3ktdHJ1bmsKKzMwNTgwIDc1MzMwNmY5YjBhMGUzMzhjOWIxMzYyMmI0ZGVmNTQ1ODYwMWUyMDcgbGVnYWN5LXRydW5rCiszMDU4MSBjMWY0ZTUzYzQyZGQwY2UwNWE0ODMxZGExZGE1NDAwNDMyYjY0NTc2IGxlZ2FjeS10cnVuaworMzA1ODIgOTcyZmVjMjFmMjIzYjcxMzhiYzliZDA3NTViYWMxYzcwOTdhN2M1OSBsZWdhY3ktdHJ1bmsKKzMwNTgzIGE3NGM4ODgzOGE1NWI0MjFmOGJiZTk5MjQ5ZTcyZmUwNzQzYWZkMmYgbGVnYWN5LXRydW5rCiszMDU4NCAyYWUxZDE3NTcyZGE2YThlNzRmY2Y1ZjcwMTE2Y2JlNTVmYTZjNDUxIGxlZ2FjeS10cnVuaworMzA1ODUgMzE5OWU5NzRmNTVhYTNmNmRlNTJmNjkyNGUyMDhkYWJhOTE2MTU3MCBsZWdhY3ktdHJ1bmsKKzMwNTg2IDY0ZThjNjk4NjYxMGMyYjM3ODY0ODA2NGJkZmZkMTRkZGM3MWYyYTMgbGVnYWN5LXRydW5rCiszMDU4NyBkNWUwOWQ0MTJiNTM4ODA2N2ViOTNkYzhmZTE4N2QwYTJmNWFlZjJhIGxlZ2FjeS10cnVuaworMzA1ODggZjcyMjY0MjJjMWQwYTRiNzE0MTZiYTMwNTI1MmIzODBmMTM4YWU0YiBsZWdhY3ktdHJ1bmsKKzMwNTg5IDkwMzUwYjVkMzM5N2M0ZmQ2OGNhM2VjNDZjZGNkOTk4YzlhYzFlZTYgbGVnYWN5LXRydW5rCiszMDU5MCAzODMxOTQwOWU4OTU2N2UyNDI4YTE2ZDA1YzllMDFiZGM3OTkxMDU2IHJlbGVhc2UyMi1tYWludAorMzA1OTEgOTNmMzIyZjU2MmYzOTk4Y2ZmMjY1MTI2MDAyYzJkMWI3ODNkMjY4MiBsZWdhY3ktdHJ1bmsKKzMwNTkyIGFiYjVhNjlkNjBjYmZmOTk0NjM5YmYzNDA4NmY4YjIxNTUzYTIzYzAgbGVnYWN5LXRydW5rCiszMDU5MyBhMTIzNzkzY2ExOTNiZTdkNDkwNWQ1M2MwYjRmYmNkZjEwM2ZlMjZhIGxlZ2FjeS10cnVuaworMzA1OTQgM2EyOTVjZWJhNDAxZjU3YWQ2ZGE2NjY2ZWQ3YjA1NWMzZTM3OWMwOSBsZWdhY3ktdHJ1bmsKKzMwNTk1IDM4OGU1NDc0Nzc0MDBmNDUyZjNiMDFjZTRmZjdlOWJkNzY4ZTQwODUgbGVnYWN5LXRydW5rCiszMDU5NiA1NGVmN2Q1Mjk2ZjEwNDBhYTM4ZDgxYWViMzU2MTkwZDNkNTNkMTU0IHIyM2ExLWJyYW5jaAorMzA1OTcgMWFjOTk5NGRjNmMyNTgxMzAyYWM5OGE1MzU2MzRlZDA5MzQyMWY2MSByMjNhMS1icmFuY2gKKzMwNTk4IDFhMGVhYmJkYTY1NGFhNTUxZWRjNmU2N2M0NmJiNjEzZjBiMmZjNzMgcjIzYTEtYnJhbmNoCiszMDU5OSA5N2I1YWI2N2I5ZjI5MDlkODRkMjQyOTUwNjBjM2RjYjZkNjEyN2E4IHIyM2ExLWJyYW5jaAorMzA2MDAgNTJjZTcxMzU4ZTMyYTExNjlkY2YwM2NhNzRjMWY0ZGZhYjMxYjg2ZSByMjNhMS1icmFuY2gKKzMwNjAxIDdkYWIyNzczMWJlODE4ZDA0YjIyOGZlNTI3YzUxNjFmZTU1ZmY3MWUgbGVnYWN5LXRydW5rCiszMDYwMiBiZDc1MDM3OGQ1YzFmZmMyZDMzMDdjNTAxNjAyMTk3Y2MxYzUxMmFjIGxlZ2FjeS10cnVuaworMzA2MDMgZTg0MWM4NzNhOTM3MDNjZjQ2YTM1NDQzYzM0NGFhNTNjOWFjOGIxMyBsZWdhY3ktdHJ1bmsKKzMwNjA0IDI3ZTljM2NkNThhZmQzMzJmMzkzYTRmY2E1YmEyNDJiMGRhYTk0MTIgbGVnYWN5LXRydW5rCiszMDYwNSA2YzRiZDQ4N2ZkMjYwYmQ5M2RhMGFhOTQyNmU2ZmZlMjJhMzVjMDA5IGxlZ2FjeS10cnVuaworMzA2MDYgYTE2NjRiN2RhNzZmNzljMjJhNzhkMjEwZGIyNWNlY2ZmOTE0NWE3YyBsZWdhY3ktdHJ1bmsKKzMwNjA3IDNlMjNkZTgwMmE1ZGFjZmYyNmM2YTY5MzAzMWE1NDNkODZkM2IyYTkgcjIzYTEtYnJhbmNoCiszMDYwOCBiNDIyNTVjODIyYjFlNTcxZDVjNGUwM2Q5NmEwNmY4NWJkNTVlMGE0IHIyM2ExLWJyYW5jaAorMzA2MDkgOGQ3ZGRiYjMzMGQzMWNiY2ZhNTU5MGQxNTBlNWU1YjhhYTQ0ODczYSByMjNhMS1icmFuY2gKKzMwNjEwIDVhYjRiNjQ4YTRjZjQ3ZGZjMzJhMTkwYjY4NWI0ZDRmZWI4ZjMzY2QgcjIzYTEtYnJhbmNoCiszMDYxMSA5NmE4ZWZkOTE5NDhjMWVhYzM1OGQ3M2Y2N2YwMjgyM2U5MGM5YWNlIHIyM2ExLWJyYW5jaAorMzA2MTIgMzNiNDYxMGE4OTIyNTNjM2I2ZWE0YzZmMDM1N2JiZDljMWM5MDIwZiByMjNhMS1icmFuY2gKKzMwNjEzIGY5YTVlZDA5MjY2MDA2MTAwOGNkZGQzZTkxZjRhYTAxZDM1NjUyYzkgbGVnYWN5LXRydW5rCiszMDYxNCBhMTZiYzY0ZjExNDViNDQ4ZjVlMjI5YTA3NmNiMzJmMDUzZGZjMzEwIGxlZ2FjeS10cnVuaworMzA2MTUgODIyNjY1OGE2M2JiMmUzYzUwNjFkODMzMzIxZjJhMGYxYjlkODcxOSBsZWdhY3ktdHJ1bmsKKzMwNjE2IDZkN2RhYTUzMjljNmFjYWVjOTU2M2JkNmRiOTViMWJmMTNlZGNlMTcgbGVnYWN5LXRydW5rCiszMDYxNyA2OTMzMWZhYzRlZjI1YjBkMTA4MDE3MDA2ODMwMTE3M2NkZGU5OWFhIGxlZ2FjeS10cnVuaworMzA2MTggNDMwNmM2NjVmODU3Y2NlODk2MDYyMzA4NDA3NWRiMTFjMTc3ODkxYSBsZWdhY3ktdHJ1bmsKKzMwNjE5IDI0NDNjNTU3Y2JjM2QzYzkwMDQwOGU4ZDMwYjUzZTU1ZDRhYzYyYTIgbGVnYWN5LXRydW5rCiszMDYyMCA4MmVhYzMxZTZlMmRjOTk3NmQzNWQ1NjkyNGY5OTZiMThkNmI5NzJhIGxlZ2FjeS10cnVuaworMzA2MjEgYWVlNDNhNGYzNTcwZDcyMzg0MTBhNjBhMTg0NDEyNzRlOWVmZDlhZSBsZWdhY3ktdHJ1bmsKKzMwNjIyIGEwYTZmNGRkNzMyODY4NTY4NWNmZjc5ZmIzZDBhMzk0N2JkNGRlMWYgbGVnYWN5LXRydW5rCiszMDYyMyBmYWJhNmU2YzgyNGRmOWU0OGJiZjRmMjhhYWMxMDFkYzBjMTViYTdmIGxlZ2FjeS10cnVuaworMzA2MjQgMDQ2NGFjYjViM2U0NmIxZTU3YjNiOGZiNWY3NmUyZmI2NjM0Njc4NyBsZWdhY3ktdHJ1bmsKKzMwNjI1IDU1ZGUyYjk1MTgxZTkzOWYyYmQyN2VmNDAzZDU3ZGJkMzUwM2UxNjIgbGVnYWN5LXRydW5rCiszMDYyNiAwMzY0YWFlNWE1YTQwYmFmODA3YzkzY2VmNWM0NzQwN2Y4M2NlYjU2IGxlZ2FjeS10cnVuaworMzA2MjcgZTcxOWFiNDZhZGFiZmNiMWE4N2Q1NzdjMThiMTYzOWRiNzZlNTNmYiBsZWdhY3ktdHJ1bmsKKzMwNjI4IGQyZmExZGRjZGY2ZGE2ZWRmMmExNDM2ODFlMWUyOTg3OWU0NzBkMzcgbGVnYWN5LXRydW5rCiszMDYyOSBiMmZjNDk0OTYzYjJlYzk0MjU1MjZlNmYwNzc2NmFiNGMwN2JmODUyIGxlZ2FjeS10cnVuaworMzA2MzAgOWRiNDg4MjYxMGU1YjgzYmIwNmRkYThmNDgyMmI0NWQ5ZTNlMTlhNyByZWxlYXNlMjItbWFpbnQKKzMwNjMxIGEyZjE3ZjRhNmEyMmNmYjliM2M0YTU4YjRkNTRjMGNhMjhlYjBjMjQgbGVnYWN5LXRydW5rCiszMDYzMiAzN2JlYjRkNjA5Mjk4M2JjODNiOGJiNjU1ZGE5NTE0OGY3YTY0N2NlIGxlZ2FjeS10cnVuaworMzA2MzMgZWI5MzUzYjQzY2QxMmMxNzkyZTM5MTljOWI4NjBjMmVkMTVlZjBiNSBsZWdhY3ktdHJ1bmsKKzMwNjM0IGIzYzhkOWM0NzJkYzkyNmJiY2UzNjBiNDkwNDRkOTNhYWQ0ZGI3YzggbGVnYWN5LXRydW5rCiszMDYzNSA4NmU3YTFmN2YyNjUyNzcwNjY1NWQ4YmQxZmMzZDAwYjYwYWI1YmE0IGxlZ2FjeS10cnVuaworMzA2MzYgN2VjNzcxODkzNDEwMmE5OWJiNjYzM2U1ZjZmZDA1MTg5Mzk4ZTJiZCBsZWdhY3ktdHJ1bmsKKzMwNjM3IGMwZDVmZTlhMGYxYzNlNDIzNzYzMzcxMDcwZDZiNzg1NmRjM2VjNTIgbGVnYWN5LXRydW5rCiszMDYzOCAxYjg4MWQ1ZTRhOTAzZTVjNDY3YmVjNTMwNzFkMjg0YWVmMmU0NjMzIGxlZ2FjeS10cnVuaworMzA2MzkgZDE4NTBhMzZhZTQxZmQ5ZGY5M2JmYWFiOTA0NzM4ZDcxZGQ4OTE0OCBsZWdhY3ktdHJ1bmsKKzMwNjQwIGU1NDg1NTI1N2E0ZjkzMGYzMWQ0MjJkYWE5ZGQ2MGJlNTc1NDBmZjYgbGVnYWN5LXRydW5rCiszMDY0MSBhY2M4MGVhY2U0ZGMxMzRlMWUzMzE3OTQyOTVmZDc2ZjZhOGQ3YTRhIGxlZ2FjeS10cnVuaworMzA2NDIgNDZhNmVkN2NjNGZlOTVlYjgxNDEyYWRjMjYyNTY5YzIwNzQ2YzE5ZCBsZWdhY3ktdHJ1bmsKKzMwNjQzIDQ1ZjFlNmIxMmE4MTNiNDNiMzk1MzMwNGU1ZjNlZjgxNDFjMzNkN2UgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMDY0NCAwNDdiNmUxNmFiMmU0ZDlmOGYxZDFhOWZiYWFjNDE3MTMxZTgyODhkIGxlZ2FjeS10cnVuaworMzA2NDUgNmRmZGIxYzAzMDhhZDFmZTg2NGFlY2Y2ODY3ODMyZjE1ZjQ3YWYyOCBsZWdhY3ktdHJ1bmsKKzMwNjQ2IDg2MTdjMjUwNmI4ZTQ1NDliMmRlYzNiZjAwMjBhNzQzYjMzYzRhYmEgbGVnYWN5LXRydW5rCiszMDY0NyBlODdkNTkwYTVkZTE4NzQ3Yzc1ZmIxMGNlNmMxZDA0ZjRkOTNjOGJmIGxlZ2FjeS10cnVuaworMzA2NDggMjJkNjYwNDk0ZjI5YzRkNzkxYzQ2NDk4ZTU1NzA3ZWFiODE0ZjY2ZSBsZWdhY3ktdHJ1bmsKKzMwNjQ5IDQ5YmNmZWNiMjk2MjcyNTZhZTI4ODNkZjBjYzIyNjUxNzFkMmU3NmYgbGVnYWN5LXRydW5rCiszMDY1MCA2NTdhZWFmYmJjOWEwYzg0ZmQ2OTg5ODMzMWU2ZDlkZWU2M2U3NGE1IGxlZ2FjeS10cnVuaworMzA2NTEgYzI2NjNjYTMxZDdkMGUzOGRhYjM4ZWQ3NzhjNGEwMDMyNTM0MTQxNSBsZWdhY3ktdHJ1bmsKKzMwNjUyIDNkMjk2MmIwMjQ5ZTU0NTFhZTFiZjU4MTMyZTY3YTYwMzc3ODNmOGQgbGVnYWN5LXRydW5rCiszMDY1MyAzMzMwYTUwOWQyYmQ4MzVjZmVkYzQwMTgwMGNhZTg0MTRiN2NlZjg4IHJlbGVhc2UyMi1tYWludAorMzA2NTQgYWY4YTMwZGU2NjcyNWEwMWFhYTAzMzAzMDk4NjFmMTU3YTFjYzhjNiBsZWdhY3ktdHJ1bmsKKzMwNjU1IDdiYmIwZGQ4ZDIzMDY4OTdhNDlhNGY1NWFjNmY1NDk1ZmI1ZmUzMGYgbGVnYWN5LXRydW5rCiszMDY1NiA4ZTIxYmNmMjE1OGFjOTEwNDdjMTYzNjlhNTYyNzExODFmM2UwNjY4IHJlbGVhc2UyMi1tYWludAorMzA2NTcgNWQ0ZjMxNmQ4NzFjMGU2YzE1YmY4MTJjZGUwMWEwYTI2MTRkYmEzNiByZWxlYXNlMjItbWFpbnQKKzMwNjU4IDgxY2RhYmJkNjNkN2NkOTk4NDQyODkyNmQ2ZDM0MWE4NDVkN2UyMjggbGVnYWN5LXRydW5rCiszMDY1OSBhY2YxYjUxMjEyYzU5YTliN2RkZTljZWU5ZDEyYzAwZjZiMTliOTViIGxlZ2FjeS10cnVuaworMzA2NjAgZTIwNGRmZjNmY2JmOWUwNGQxMGNiMzA3MDk1M2Y4ZTUxYTFjMzJiYyBsZWdhY3ktdHJ1bmsKKzMwNjYxIDkyZTkyMmU3MzI3YWUzMjczOTM2MWQ5ZDdkNGNiOGFiOWRkMTBlMzcgcmVsZWFzZTIyLW1haW50CiszMDY2MiA1NzZlMmI1ZDhjZjg4MjVhODU2N2YyNzZiMzQyNzg5MjUxOGRhNDFhIGxlZ2FjeS10cnVuaworMzA2NjMgMTM3NWJmY2I2NzdlNjIwZWUxMzVkNTU3ZWMyODViMDFkNWMxYmViMiByZWxlYXNlMjItbWFpbnQKKzMwNjY0IDQ3Nzk5YzI3NjQ2MTE3ZTk2YjE1MTJiMGY4ZWQ3MDNlZWYyMmJjNTIgcjIzYTEtYnJhbmNoCiszMDY2NSA1NmI4ZjkwODgxM2NiMGNiYzRkYjI4YjM2Y2UxOTkwYzMyNjNhNjc3IHIyM2ExLWJyYW5jaAorMzA2NjYgNWNmNDEwZTQ3MjUxNjYzMDVhYjI1NDlkZTRiNTQxZDVmMWJjMzVjMyByMjNhMS1icmFuY2gKKzMwNjY3IGUyNjVlZmNiY2JkMTY1MjA3MTlkYTM0M2FkNDU3ZTQ0OTNlMGE3ZDggcjIzYTEtYnJhbmNoCiszMDY2OCAyMjI3YWQ4NmQzM2M1MjM4MjMzMTMyMjcxOGMzNDA1MzQ4ZDFmMzVlIGxlZ2FjeS10cnVuaworMzA2NjkgNWVkODIwNjcwYWYzNWM5ZGU3NDkxZjgwNGIyYWJmOGVmZWQxMTQyMCBsZWdhY3ktdHJ1bmsKKzMwNjcwIGI5NDM1NjBlNWY3YjUyNTY3MDg0ZTVhMDQ0Y2E5ZWNjNTdmNmJhYjIgbGVnYWN5LXRydW5rCiszMDY3MSAyOWY4OWM3MjU3YmQwYzk4MDZlN2I3NTYyNDYyMzU1ZWI1NjZkYmY2IGxlZ2FjeS10cnVuaworMzA2NzIgZTE4MDA4YjcxMWIwMjJmY2I1ZjM3NzRhMWFmMDc2NjI4N2MyZjlhYSBsZWdhY3ktdHJ1bmsKKzMwNjczIGFlODM4Zjc3NGY2YzFlMWQxZjdmZDg5YmFhZjViZDI4MDE2M2M1ZjIgbGVnYWN5LXRydW5rCiszMDY3NCA4MGZjZWFiMDY4MzVlNjE5MjhiZTliYTRkN2I1OTA0MDM3YzE3NGI4IGxlZ2FjeS10cnVuaworMzA2NzUgM2Y0ZTgwZWJkY2E4MzU0YjBiMWY1ODMwNDI1ZTQyOWNkYjVhY2NhMSBsZWdhY3ktdHJ1bmsKKzMwNjc2IDU4NWE2NDYwZjU3NzZmZWI4ZmViZmZjYWI0N2M4NGI3MWRjZDU4ZWYgbGVnYWN5LXRydW5rCiszMDY3NyBiMWY1ZmRiZTYzOTcyZjc5M2JlNjcyMmM0NDhmOWY1YzRjNzI2YWYyIGxlZ2FjeS10cnVuaworMzA2NzggZWI2YjM2YjI2ZThkMmI2YTJmZTAzZjMyMmFiNmQxYWJlY2RiMTMzMSBsZWdhY3ktdHJ1bmsKKzMwNjc5IDIzMjYwMTk4ODg1YWNmM2IxZjhkNjVhZGY2NTY1NzBjNmRhZTk0MTkgbGVnYWN5LXRydW5rCiszMDY4MCBjNWQwMmQ1MzcwZDkzN2JmMDA2YzQ2YTdjZGU4ZWU5NDMwNDI0Y2MxIGxlZ2FjeS10cnVuaworMzA2ODEgYjQ5YTQwZGI3YjQ3MmEyNDVmNDBkMGU4MzU3NWM3MWNiNDc1NmQ5OSBsZWdhY3ktdHJ1bmsKKzMwNjgyIDkxMGU3NmRkMDRkYWY2NWVhYzE2NmU5NmRjMzhhN2U4MjdkZGRmOTcgbGVnYWN5LXRydW5rCiszMDY4MyA3MzRlYmQ0N2JjMmE5ZDQzMDM2MTNmMmFlZWZlOTA3Nzg4ZDY5YWYwIGxlZ2FjeS10cnVuaworMzA2ODQgMmY5M2MyMzFlYWUwZWE4Y2NjYzkxODIwYjJmMmQ4ZTE5NzMyMzgxYyBsZWdhY3ktdHJ1bmsKKzMwNjg1IGVmNDNkZTU2MmZkMWIyNTFiYjE1N2MyYmI2NGM2ZTMyYzhmNjg4NjAgbGVnYWN5LXRydW5rCiszMDY4NiAwY2FkYzI5MTgwZTYxNWNmMGQxN2VlMDYzYzY3MTU3ODAwZjlkZGJmIGxlZ2FjeS10cnVuaworMzA2ODcgN2YwOWIxOTkyY2U5ZmMzNWVhYmU5MmExYjM4YWYwODUzMzZhOGM5MSBsZWdhY3ktdHJ1bmsKKzMwNjg4IGNjZjU5ZjFhYjQzMTI4NjRmMzBiMjlhZWQwYjgyZWEwNjZhNmFlOWYgbGVnYWN5LXRydW5rCiszMDY4OSAwYmQwNzM5MWQ5MjFiY2MxNTA2NDE2ZGEzNDJiOGYyMjMxYzA4M2ZjIGxlZ2FjeS10cnVuaworMzA2OTAgYWRmNGFiM2VhYTYyMWM0NDFmYTc3YjJiMmQ1N2ZhM2M3YTU3MzIxZSBsZWdhY3ktdHJ1bmsKKzMwNjkxIDRiODlkNzZmYjIwNWFjMGRkMzM0MjY2Yjc0MTQ0MjA1MjBjY2ZiODMgbGVnYWN5LXRydW5rCiszMDY5MiBkNWQxMmVhM2E1ODA5ZmVhMjNjOGRkNzVjZWUxZDRiNzU5MjE3MWZhIGxlZ2FjeS10cnVuaworMzA2OTMgYjlmNWJlZThlYzE4ZThmZjA0Yzk4MjBkMzllNzRjMDQyNjdjNGI4YiByZWxlYXNlMjItbWFpbnQKKzMwNjk0IDBhOTc5NmE2NDY4ZWYxM2YyMzE1NjZjMzFiYjhhYzI0OGI2ODA1ZDkgbGVnYWN5LXRydW5rCiszMDY5NSA0N2IxMzRiYjUxYzMwMmQ4ZWEyZWQwMTQ2ZDY0YzcyNzMyODQ3MzQxIGxlZ2FjeS10cnVuaworMzA2OTYgMzE4YWJhOTRjMWU3YjFlY2VkOTRjZmQzODQ0NmMzZDUwYmZhMmU2NCBsZWdhY3ktdHJ1bmsKKzMwNjk3IDkyNWE3YjFmOTNlZTAwZjhlMDRlMjFmZjhjYWQyNjJkZmI0MTIyYzIgbGVnYWN5LXRydW5rCiszMDY5OCAwN2M2YzJlOThhMWNkZTFjYjUxZWZmMTZiYjVmYzM5ZmEwNzQzNWFlIGxlZ2FjeS10cnVuaworMzA2OTkgNmZlNDlkYmYwM2ZkNDZmYmY2MzY2ZThlZDVkZWJkNTBiZTgyNDA3MSByZWxlYXNlMjEtbWFpbnQKKzMwNzAwIGEwZTBjYWI1YzkyN2ZjMWFmOTJlZjBjMWI1MTZiZmNhNjliY2ZlNGIgcmVsZWFzZTIxLW1haW50CiszMDcwMSBjZGYxYmEyYWI3MTUyOTQyMjZiOGUxNWI2YWM4MjViZTA4NjM3ZDUxIHJlbGVhc2UyMS1tYWludAorMzA3MDIgNzcwNmEwNmY1ZTY5MjY5NGY1YmFlN2JmYWYyMzQxZWIwOTY1NzA4ZCBsZWdhY3ktdHJ1bmsKKzMwNzAzIDAxZDlmZDU5NTM3NWZlNTVkYmQwNGY4ZGI1YjQ5YWJmMTJmMzY3ZDQgbGVnYWN5LXRydW5rCiszMDcwNCA3MjgzODNkYzczOWVmMDBmMjUzZWY4MmI5MWUxODNlMDJiNWY3MmFkIGxlZ2FjeS10cnVuaworMzA3MDUgYzc5ODYxM2E4NzY1NWJhMjYzNTc4Mjc1M2YwMzQ2NzcyMmUzYzViMSBsZWdhY3ktdHJ1bmsKKzMwNzA2IDA0YWE4NmQ0OWQ5M2U1NTY0OTBiY2Q4OTJkNzk1OWFhODcwYWI4N2UgbGVnYWN5LXRydW5rCiszMDcwNyBmYzRiYjM4MjA0NDllM2YwZmFkZTliYmRlNTY1NDRkZDFjMDQ5YjcwIGxlZ2FjeS10cnVuaworMzA3MDggYmNhZTJhNzBlMWVjN2M5Zjg0NDAzMTM4MDUyN2ExMzBiODhlYzg2NCBsZWdhY3ktdHJ1bmsKKzMwNzA5IDdlYTQ0MzA1MjJkZjQ5M2EwODRkZDdjYmE4OWYxZTdjMzcyNWI5MGYgbGVnYWN5LXRydW5rCiszMDcxMCBkMDNjMTMwMzQ1NjBhMzYyZTRkOGQxOTI5ZDhkY2ZhZGE5NmRlYzc4IGxlZ2FjeS10cnVuaworMzA3MTEgYjI5Y2ZhZDQ0MDk3YjU4YzJiMTYyYWFkYjFkOGU3NTg0ZTViZTc0MiBsZWdhY3ktdHJ1bmsKKzMwNzEyIGIzNDYyNzI1NDRhMTgyYzE2YmQzZWQwMWQ0ZmFhZDM1YmJkMGNmNDkgbGVnYWN5LXRydW5rCiszMDcxMyA5MzQ3MzI3ODc0MTk0YmY4YWU0NjRiYTliNDk0Y2M5OTBjZDFhZTZkIGxlZ2FjeS10cnVuaworMzA3MTQgNTkzMDlkNGJmODQxYjY5Mjk2MTc3NzcwYmZlYTZkZjkxOWI3OGQ0NCBsZWdhY3ktdHJ1bmsKKzMwNzE1IDY1ZGMwMTEwYTczNWMxMDEyOGVlZjIwOWMwZDE0ZjY5NThiOWVmYWMgbGVnYWN5LXRydW5rCiszMDcxNiBkNGM4YWY5MTE5ZDE5MThmZjY2Zjc5NTdiMDI2N2JkZDNmYmIwMGE1IGxlZ2FjeS10cnVuaworMzA3MTcgYTUxZTVhZTI5ODgyYmNiMWJmNWUzNDJhMmMzYmRlMmNmOGJkMDYzNiBsZWdhY3ktdHJ1bmsKKzMwNzE4IGI4NzI0MzQxYmIxYWJjMzJmOWZmNjE1ZDhmMDFkM2Y4N2VmZDVmMjMgbGVnYWN5LXRydW5rCiszMDcxOSA3N2I3MGE4ODg0Y2IyM2I4NmZkMDEyZTQxYTAxMjhkMjdkYTNiNTc2IGxlZ2FjeS10cnVuaworMzA3MjAgOTI4MTJmNmNkNjNiNWIyYzJiYmQ4NTVlYzdiZjA3MGQyNTBmZGUyOSBsZWdhY3ktdHJ1bmsKKzMwNzIxIGRjNmZiOGE2YWYzZGVmMjc4MGVmZjVlNjk0ODAzODI2NTY0MzQwMGIgbGVnYWN5LXRydW5rCiszMDcyMiBhZTEyMjY3NWRmMWU5MGNlOTY0MTQzNjU2NDJhZjdiNDQ3ZTk0OTJmIGxlZ2FjeS10cnVuaworMzA3MjMgODFkYTczYjkzYzNjNjJmM2MyMjY3NjhkN2EyZWUyYzY3M2RjMTRiMSBsZWdhY3ktdHJ1bmsKKzMwNzI0IDBhMDM1ZjkyOTlhOTc5Zjc4OWMxYmUxMTZmNTc5YjA1NmUxMjY3YTYgbGVnYWN5LXRydW5rCiszMDcyNSAzYzhkOTFmM2Y0YzY3ZGU3ODMxN2E1NzRmMzkxYWU2ZGIyNjQ3OGRjIGxlZ2FjeS10cnVuaworMzA3MjYgNGYxOWM4NTI0ZjFhYzdlNGU3YWNiNDQxNjlkNzg5MWQxNDcxOWU1MCBsZWdhY3ktdHJ1bmsKKzMwNzI3IDZhZTM2MWRmODcwZWVhMzE4ZjdiYjAwZGJhNGQ0OWZhMjgyMWYzMmIgcmVsZWFzZTIyLW1haW50CiszMDcyOCBiMGQ1MjgzMjdjNGMxYTZjZjZjYzUzOWU5Y2ZlNDY2ZThjNjVhNzcwIGxlZ2FjeS10cnVuaworMzA3MjkgODBlYTA0OGZjMGQ3MzVmMWZkYWE5MGFlZmM3YTAwNmI2NDJlMGRiZCBsZWdhY3ktdHJ1bmsKKzMwNzMwIDQyOGVlY2RmZDU3ZmNhY2UyZTdkMTkxZWE4NjkwZTYzMDE4YzM0OTQgbGVnYWN5LXRydW5rCiszMDczMSBhNDk0ZjVhODYzOWYyOTA0NWZiNzk3MDc1YzA0YjZjMTI1NWM0ZWVlIGxlZ2FjeS10cnVuaworMzA3MzIgNGE2MmE5NDFmM2IxMmEzMDM1YWNiNzE5YmM1ZDhkMDlkYzU0OTk1ZiBsZWdhY3ktdHJ1bmsKKzMwNzMzIGRlMmM5NWQ4MTk4NDE2MGY1OWVmMDAxYWI1Y2FhMDBhYzNlMTAwOTQgcmVsZWFzZTIyLW1haW50CiszMDczNCBmOTY3NzJlMzFlMjMzZjc3N2VkMjFlYmI3MzhiOGNkNWQzOTk0MDQ5IHJlbGVhc2UyMi1tYWludAorMzA3MzUgM2IzY2U5NjRhZGM5YzEzZjJmYTU2OThhMmE3ZjY3NGYyZTE1YzNkZSByZWxlYXNlMjItbWFpbnQKKzMwNzM2IDdhNGQ3ODI3MTVmNGM3NjYyNDk0Y2U2Y2NmZDhkMjIzZTFiNDIzNWQgcmVsZWFzZTIyLW1haW50CiszMDczNyAxMGI3ZTYwMjQ1YjU2OTQwMWI5NjM2MjdlYjVmOGQwNzJiODQ3NjYzIGxlZ2FjeS10cnVuaworMzA3MzggMzhkMjIzOGM3OTVlNDZlOWIxNmU3YWIzOTkyZjI0YzQwMTU0NTI0MiBsZWdhY3ktdHJ1bmsKKzMwNzM5IDJlZDUxOGFiMmZkMjBhMmQyMjI5NDA0NDY0OWEzMTZmMWQyMjUwZTEgbGVnYWN5LXRydW5rCiszMDc0MCAxNzg3OGQ0NThjZjEyZjNkZmQxM2UyYTEwNDkwYWZmNzc4YWVkN2E0IHJlbGVhc2UyMi1tYWludAorMzA3NDEgMTExOWQ1ODI2MDlhMTRmMjRlMGY0YTdlNmYyMjA1NTAzOGM1MmMyZiBsZWdhY3ktdHJ1bmsKKzMwNzQyIDIwOWQ2NzIxMjg4M2QwMTBjMzZjNmU1NmYxZDI3MzFhMDZjOTBjY2UgcmVsZWFzZTIyLW1haW50CiszMDc0MyAyMDFjZGViMzA1ZjY0YTA5NDAzZjJmZWQ0NmM5MjllNmUxMTZjNDA0IGxlZ2FjeS10cnVuaworMzA3NDQgNDIwZWEyMDVmMDI0MWVlNDUxOTU0MDI2YzgyYTRmNWVhYTUwN2Y1NSBsZWdhY3ktdHJ1bmsKKzMwNzQ1IDVkNDJkYmE0OWZlNTA3Mjc1Yjk4MGI0ZDFkYzU5ZDQwMjgyNzY2NzIgbGVnYWN5LXRydW5rCiszMDc0NiBlYmViMDBiOGQ1MDJhMGM5OTUzYjQxYWQ5MGNmODgyZWJlYTc3ZTBlIHJlbGVhc2UyMi1tYWludAorMzA3NDcgMTFiMzQ1NjRhMGZkMDU4MjFkYTQyMjA1NmM5ODAxOTJiMzQ4ZGViYyBsZWdhY3ktdHJ1bmsKKzMwNzQ4IDNhMzNiZDBmOWM0YmZkYzc1NGVjOGZlMWUxMzUyM2M5YzgwOGRhYjUgbGVnYWN5LXRydW5rCiszMDc0OSBmMzRjMjg2NTBmMTRlMThlNWZmMjUzNWNjODQxMTVlMmQ5OTVkMzFhIGxlZ2FjeS10cnVuaworMzA3NTAgN2YzN2VkNTQyOTIwMDNlYThmMGNjNDhmZGRlM2FjMzQ1NWNmY2M2MSBsZWdhY3ktdHJ1bmsKKzMwNzUxIDE4ZjA3MmQxNDBhOWM3ZmU3NWVlNGIxNDUxNGM2YzcxOTkyZjJkN2MgcmVsZWFzZTIyLW1haW50CiszMDc1MiBmZDNiMDcxMWIyNWZiMDU1ZmFmMGJiZDgzODI3NzVjZDgyYzVmNDFhIHJlbGVhc2UyMi1tYWludAorMzA3NTMgZWViYzRmZGFjNTk0ZTY5MmNmMWYwODAwZTNhMWQ0ODhhYTU4N2IzYiByZWxlYXNlMjItbWFpbnQKKzMwNzU0IGU5ZjQ1YjhlZmQ2YjRkN2M4NzZiNDBlNWJmMjRhNjZjNjVmYTM4MmQgbGVnYWN5LXRydW5rCiszMDc1NSA4YmQ2YjJhZTI4NzRiMDc5ZmIwZTVhZjdiYzk1MWY1MTAxYmVmNWZjIHJlbGVhc2UyMi1tYWludAorMzA3NTYgM2VkZTkwZDZlMWNmMTI1YTAyMDNiNDllZjNjNzQ5ODQ4ZDhmMTc1YSBsZWdhY3ktdHJ1bmsKKzMwNzU3IDg0YThlN2QxZGFhOTc2OTgxNWQ5OWQ2ZDNlZTc5NTg1MjliNzY1YzYgcmVsZWFzZTIyLW1haW50CiszMDc1OCAzYmZkYmMzZGZiY2U5MjhjOTE3MWRjNDhhODcxNzhmNTRmMTkyYjQxIGxlZ2FjeS10cnVuaworMzA3NTkgMGE2Yjg4MTkwYjhiMWQzYmVmNTJhOWNlNDczNTI3ZWNlNWE4YTllMiByZWxlYXNlMjItbWFpbnQKKzMwNzYwIGY1OWQ4MGM3ZTFiYjRkMThmOTAwMGQ1MDFkMDMxZmJjOWRmY2Y0ZTggbGVnYWN5LXRydW5rCiszMDc2MSBmOTVlOWYzYzlmZWE3OGQ0ZDcxN2VkYTAzZDFmNTBkODY0ODc0NjEwIGxlZ2FjeS10cnVuaworMzA3NjIgYTc3MDZkNGM2OTBjMjBhZTYxZWU4MTZkMmQ5M2Q0NWE0ZmQwOGJmMSBsZWdhY3ktdHJ1bmsKKzMwNzYzIDNhZmJkNTVmYjE4ZmE0YWIxM2EzOGNmMWIxNGQyMTUxNjNlNzc0NGEgbGVnYWN5LXRydW5rCiszMDc2NCBiM2YxMDUzOTlkMjI4MTFkYmE1ZDE5OWE5NTY2MGM0NjYxZjQ0NzI0IGxlZ2FjeS10cnVuaworMzA3NjUgZDNhYjUzMmIzYjZkNmViYjIwYTcxZjZhMjVmMmNjOTVmMTY3NWYxZSBsZWdhY3ktdHJ1bmsKKzMwNzY2IGE1NmMzYzU2Mjg4YjlmZWIyN2RiNWJhOTA5ZGQ0NTJiNTcwZDhkODggbGVnYWN5LXRydW5rCiszMDc2NyA1ZGRiOTBmODE2OWE1ODkzOWFlNDQzYjA3NzI0YjdiZGFiMDJiODJjIGxlZ2FjeS10cnVuaworMzA3NjggYzQxNTBmN2Y2YTY5NjE1MjRhZTg4ODcyMDc3MDJlMmI3NzU3YjRmMSBsZWdhY3ktdHJ1bmsKKzMwNzY5IDdjMzRlNWJmMmUyMmIxZjg1ODlmODI3NWVmZWVlY2VlMzJjMTNmMmIgbGVnYWN5LXRydW5rCiszMDc3MCAxNmE4NzY3NDYyODUwYzc0NmQwMjVjMzhmYWJkZDhhYzBmNDc4MmZkIGxlZ2FjeS10cnVuaworMzA3NzEgYzk5NDkzYWJhMDk4ZDI1M2MyZGI3OGQxOTZhMTY0NTkxZWE3ZjZlMCBsZWdhY3ktdHJ1bmsKKzMwNzcyIDQwY2Q3NDc4MjYwMDgxMWFkMDI4N2U3OGM0ZDgzNzI3ZjY1ZDE3YmIgbGVnYWN5LXRydW5rCiszMDc3MyAxY2E3YjJkNjkyNDI1ZGM2N2I4NDA5MzM2Y2FhNWQzOGJhNGY0NGZmIGxlZ2FjeS10cnVuaworMzA3NzQgMjYxNTQ3NzAzNDQzZGFiNDU0MDk3YjUwZDUxNTUxYzA1Mjc0ZDZlMyBsZWdhY3ktdHJ1bmsKKzMwNzc1IGJhZmY1NmFkZmJjMzM4MjQ4Zjk1ZWJhNzlmNTc3NWE0MWVjNWRjZjYgbGVnYWN5LXRydW5rCiszMDc3NiBhZTg5YjU1NjA1MGFlMDU3MmY0YzZkZWJkNTcyOTAwNDk4NzNjYTkxIGxlZ2FjeS10cnVuaworMzA3NzcgM2ZiZmZkNzM2ZDlkMDRjMjIwODg5NmVkNDc2OTIzZDZkM2Y5YmM2YSBsZWdhY3ktdHJ1bmsKKzMwNzc4IGU4YzFhOTU0MmY2NmE2NjhkNzhmN2QyZmZiZTc4Y2ViM2Y4ODc1MWIgbGVnYWN5LXRydW5rCiszMDc3OSBmYWYyNTZhNTllY2ViMjkzNzc3ZjI3NjQ3MjQ1ZTU0YmUzNDQwM2VhIGxlZ2FjeS10cnVuaworMzA3ODAgNGNkYjUwMWFiNmEyMTc3YWYzYmRhMDg4MjI3Njg1NmQ4ZDU3ZjQ1YyBsZWdhY3ktdHJ1bmsKKzMwNzgxIGYwNTc2NGQ3MDgyY2MxYTBhMWEyYzdmYjYxNzJmOTEzYjk1YjI5MzAgbGVnYWN5LXRydW5rCiszMDc4MiA3NzQyOGU4MzVkNjdlZDgwNjM0MDhhNGYxOWVjYjUxZDhmOTdjZTM2IGxlZ2FjeS10cnVuaworMzA3ODMgN2FjZjU3NDQwZjRlMDlmZTViZWZjY2EwODU1OWM5ZGMzZDVlNDhlNCBsZWdhY3ktdHJ1bmsKKzMwNzg0IDhkMGUwN2MyNzBlZjliMzExNDc3NGNhYmVmMzdlMDU1ODhiZDk5NDcgbGVnYWN5LXRydW5rCiszMDc4NSBhZjgxMTE3MjcxN2QwYTMxMDE0ZWVkZmFlNTQ0ZDQ3YWI2NTY0YTIxIGxlZ2FjeS10cnVuaworMzA3ODYgYTlkZGFkZjc4OWVhYjhmNjk4ZGEzNzNlN2M3MjlhNzNlNjI0ZjM0ZCBsZWdhY3ktdHJ1bmsKKzMwNzg3IGI3NDQ1MDhkNWIxMjY0NmFmMjBiY2VjMjUxNGFjM2IxMTNlZTliN2EgbGVnYWN5LXRydW5rCiszMDc4OCBiZTNkMWI3ZTYyZGMyNjljYmI4NDdiZGI0MWNlMTI4N2I0MTRiOWI3IGxlZ2FjeS10cnVuaworMzA3ODkgZGJlNGY1N2U4YmIyOTU2Y2M5OGFlOWYyMTk3MzEyMjkwMzVjNGY0MiBsZWdhY3ktdHJ1bmsKKzMwNzkwIDM5MmZlZWNkMmYxYzcxZWQ4YjczY2M5MjcxZTA4MTZlZGVlMjhkM2IgbGVnYWN5LXRydW5rCiszMDc5MSA5MWQ2NzhhOTRjNzM2M2Y1MGRlOWQ5ZjY3MzAyZGMwMDRmMmNiMWM4IGxlZ2FjeS10cnVuaworMzA3OTIgNjRkM2ZlOTA0YTBhZjhkNjc0YjI0ZWFlMDQ1ZGQ1ZGYzOTM3YWNiYSBsZWdhY3ktdHJ1bmsKKzMwNzkzIGNkYTVhYjYyNTc3NGZhZGQ1MjAyOTc5NDVkOTRlMjJhNjYyNjVjZWMgbGVnYWN5LXRydW5rCiszMDc5NCBkMmFlNWFmZmRlMTRlNzk2NDAxMmE0NjE3OTBmNjdiY2E2ZmNhOTZmIGxlZ2FjeS10cnVuaworMzA3OTUgYmVkYjc1ZDkwZTAzYzM5OWYyZTAxNmY2MTgyZWEzN2FkYWMwMzEzNyBsZWdhY3ktdHJ1bmsKKzMwNzk2IDdmZGQ1ZDYyYzYxNWFmMjBhZjY0Yjk4MTAyYTVjMTk4OGZlYmU4NWQgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwNzk3IDlkYTQzY2RlOGExNjYxZTY4YzQ1NWZhYWU4ZTQ3NmZlNWI0MmFjODggbGVnYWN5LXRydW5rCiszMDc5OCBjYmYzNTVmMjhjYTlmNjg5Mjg3ODk5MTQ5YzlhMzM0MTBjN2U1ZTBlIGxlZ2FjeS10cnVuaworMzA3OTkgYzgyMzRlMjYxMTVjNjZkNGFjOWI0OGEyYmVjNmU2MTY0ZTJiNmJhZiBsZWdhY3ktdHJ1bmsKKzMwODAwIDlkZTA2NGM3YTI0N2YxMWZjMzhlMDRiY2Y5YTc0MjEwMDJlZTUxODEgbGVnYWN5LXRydW5rCiszMDgwMSA4N2I2NmI2ZmY1ZTc2Zjc3MDJlYTNlYjc0NTUwNzNlM2U1NDRkZjc0IGxlZ2FjeS10cnVuaworMzA4MDIgNWEwNTAyMDBmNzM2NTg2YzVmOGQ1MGNkZGQ3N2ZmYmY3YzllODg2NSBsZWdhY3ktdHJ1bmsKKzMwODAzIGM2ZjQ5Yjc5Nzk2M2VjYmZmOTg1YWE0YmU4YzdkYWFlZDZjNDM3ZWIgbGVnYWN5LXRydW5rCiszMDgwNCA4NjY3NTZmNjcwZmZkNTg0NTNkMTVhY2UwMGE3YjRhODc1ZDhmMTU4IGxlZ2FjeS10cnVuaworMzA4MDUgZGYyNzU0YWNhNzE3MDRmNGJhNDdlODQ0M2FhY2U0NWM1ZmNlNjJkZiBsZWdhY3ktdHJ1bmsKKzMwODA2IDQwZTVlYjllMDRlMGU4MzVhYjVjZTVmNjVlYzVjMjEwOWViOTAxYTAgbGVnYWN5LXRydW5rCiszMDgwNyAwNGU1NjEwYzVlZmU5N2FmNDU4ZmNkZDQ2NjFlYzdkNzQ2NWZhNWViIGxlZ2FjeS10cnVuaworMzA4MDggODhmYWE5ODVkOThjM2YzNjYzYTA3MzY3NmQ1MDNjZmJjMDliZTgyNSBsZWdhY3ktdHJ1bmsKKzMwODA5IDk3ZjQ5NGJmNzMxOTBhZDliZDA2YjJiYmFlNWJkODY3MWI3YTc1NjQgbGVnYWN5LXRydW5rCiszMDgxMCA3NWRhNDk5Nzc1NzFhNGVhYjlhMTkyYjAyYTZhMmFiOGYxMzEzZWI2IGxlZ2FjeS10cnVuaworMzA4MTEgZTgzYTQyYTkwZGYxNjM5NmE3YWZiZjg3NWVkNDBlOGE1ZmQ3ZThlMyBsZWdhY3ktdHJ1bmsKKzMwODEyIDcwMzkzNzUyMjZhN2YyNjI3YWYwYjU1NDU4ZGFiYTAxMjUyZTc0YjkgbGVnYWN5LXRydW5rCiszMDgxMyBkN2Y4MDAyODMwMWRlYjc0YTAxZjU4NTUxMjczZmRkNDExZDU5M2U3IGxlZ2FjeS10cnVuaworMzA4MTQgYmZjMTQwYzdlM2QwNjUxZjAzYTM5MzlhZWIxMmRlZDlmNDlmMzhhNyBsZWdhY3ktdHJ1bmsKKzMwODE1IDcwNTVmNGMxZWRjYzM0MWU3ZDRjNDU0ZDZhMTk0YzY4NTAwN2MyOGIgbGVnYWN5LXRydW5rCiszMDgxNiBiODM4NzczMGRkOGZmNDE1ZTc5MjdmNmZhMmQ0NDM4M2E4ODA3NjA5IGxlZ2FjeS10cnVuaworMzA4MTcgYzFjNDU0NzVmMTcwZTQwZTdlOTJjZGY1MjM5ZjA2ODdlODMzZGMyMyBsZWdhY3ktdHJ1bmsKKzMwODE4IDgxNTUxYWRmMTJmNmQxZWNmMjQ1Yzg5OTg2ZGQ3N2E3MzQ2Y2U4YWUgbGVnYWN5LXRydW5rCiszMDgxOSAwNWZmOTA0ZWU0ZTA3YjZjNjZjZjcyYTU4ZTIwOGRjZTc0NDdiY2ZhIHJlbGVhc2UyMi1tYWludAorMzA4MjAgNGZhOWFkODVjM2IxNWRjMmRmOGJlODY1NDVhYjdjOWY3NTViODAzZCByZWxlYXNlMjItbWFpbnQKKzMwODIxIDEzNjlkMjRiYzg2MWRjYTI2ODcxNThkZTlkMDAxNDA1ZTM2ODJiOTAgbGVnYWN5LXRydW5rCiszMDgyMiA1YTk3NWU4MmQ3MGZiNWJjMDQ5Y2Q0NDYyMGQ4ZWQ3YWFkNTk0MWYyIGxlZ2FjeS10cnVuaworMzA4MjMgZGU4MDE3MzNlYzE4ODc1YmMyY2I2ZDhkMzYyNjdkMTUyNTg5MTA1OCByZWxlYXNlMjItbWFpbnQKKzMwODI0IDBmOGQxODkzMTBiNDVhOWZkYjY0NTQzZjU0ZThjZWU5MjgwYWYzZmUgbGVnYWN5LXRydW5rCiszMDgyNSBhNTU1MjMwYmUzY2IwMDczYjNlODJkYWNhYjBiYjc4NTdmYjU4OWE4IGxlZ2FjeS10cnVuaworMzA4MjYgNzA0NjM5ZDIwYTZjZDYyNWJjMGEzMTJiNjdmNWViNGU0MTQ4ODc4YiBsZWdhY3ktdHJ1bmsKKzMwODI3IGVhNzY4MGVhZjkzN2RmNzM4MjY0MjUyZDU1NjA3MzZkMDBmMGJmNzUgbGVnYWN5LXRydW5rCiszMDgyOCBkYWRkMTc4YjY1ZmE1NjhhZTBkYTZjODVlMDc4YTBkMjk4NThhZTMxIGxlZ2FjeS10cnVuaworMzA4MjkgZmYxNzliYWRlM2YwZGMzOWU0YmQwYTk5Y2U1YzMyZDlkYTM4N2ZlOCBsZWdhY3ktdHJ1bmsKKzMwODMwIDE4NTg0NzE0MGNhNWRiZGRhMTFmZjhmMmIxZTMyNjNkOGMxYWVjYzIgcmVsZWFzZTIyLW1haW50CiszMDgzMSBhMmY4NGQyODM1ZmFmODI1ZDhlMDNlNGM2MWQ0MmE0NzJiNDllMDEyIGxlZ2FjeS10cnVuaworMzA4MzIgZWFhNjEyYTQxZGQwZDY5ZWIwZDlmMDk1NzJiYTMwYWQ1YmQ0NjRlMCBsZWdhY3ktdHJ1bmsKKzMwODMzIDkyMjAwOThmMDMyN2U5YjJjMDEzMGM0ODBlODdlZjM2OGY1Mzg5N2MgbGVnYWN5LXRydW5rCiszMDgzNCBjNjgyOTA3OTBkNTNkNmUwMWRjMzIyNzBkZDQwOTRjODExMmZjNmNhIGxlZ2FjeS10cnVuaworMzA4MzUgY2RhYjJiNzRmMzA3ZWFkNjM3OTc1NjhlNTk1NDNmNjNiMzkxZDU4MCBsZWdhY3ktdHJ1bmsKKzMwODM2IGVmYTJmOGFiYjAyYzlhNjE1YjAwNGI4OTFmMzRlOTQzMjljZjhjZGEgbGVnYWN5LXRydW5rCiszMDgzNyAzYzcwMjNjOWU4ZTI2NzFiZGNkZDc2NGJkOTU2ODkzYzZiY2U3NzNmIGxlZ2FjeS10cnVuaworMzA4MzggZDk2NmJiNTRiM2RlMGQ4ZTVkNzUwNDFmODExNWYyZjQwOTkyZjQ4NSBsZWdhY3ktdHJ1bmsKKzMwODM5IDcwNjdkMzZjM2NmNDcwMTk1NjEwNzVjY2I1NTcwOTMxYTU1ZGY4NWEgbGVnYWN5LXRydW5rCiszMDg0MCA3NWYzOGM0MTVlN2Q0ZDA3Yzg2NGJiMDAxMmJmZWFhZDhiOWMyOGRjIGxlZ2FjeS10cnVuaworMzA4NDEgMTU2MmMxZTEwYjQ5N2RhOTcxNDhjZWY5NmMyMGQ2Y2FjOTMwNjlkOSBsZWdhY3ktdHJ1bmsKKzMwODQyIDI5OWVmMmRhYmI1MmM2NjI0YzAzN2ZiMzYzMzdmOWNmZDIxNTY2MTIgbGVnYWN5LXRydW5rCiszMDg0MyA4OGJmMTAzMTM1ODRkZTQxNjdmMzg2NzQwNThmOTU3NDY4ZTUwMjgyIGxlZ2FjeS10cnVuaworMzA4NDQgMWI2MjI5YWRiM2RmOWRmMDJjNDRhNjlmMWVjNDI5YWUzNWJjNDEwYyBsZWdhY3ktdHJ1bmsKKzMwODQ1IGQ1YTMzODZjNzZmNDk0NTZjYjUwNWIxZjk4MjcyMDgwN2UyNTZiODQgbGVnYWN5LXRydW5rCiszMDg0NiBjNDA0ODc5Y2Y5OTliMDMzMDVlMTFiMTlhZDQ1MGY1ZDU3NzQyNDBhIGxlZ2FjeS10cnVuaworMzA4NDcgNDRlMzUyZDdkNTJmZmJiNDRmYWQxMGQ3MjFhZjI1MDE3NmM1NWJmZCBsZWdhY3ktdHJ1bmsKKzMwODQ4IGUyZGEwZGYzNjEzZDFjYTNhYzRhYjM4ODcyYTIwMzg2MWQ1NTk5YmQgbGVnYWN5LXRydW5rCiszMDg0OSA2ODMzMzliODUyYWJkNDliOWJkYTZiNjViZmE1ZGIwNzI0YmYyN2JjIGxlZ2FjeS10cnVuaworMzA4NTAgODcwNDVhOGVjNTQ3MTc5MTYwMzA3MTc1ZTk5YThmMDQ5MWM1MzA1NSBsZWdhY3ktdHJ1bmsKKzMwODUxIDZjZGE3YzYxMjE1NGE3Njg2ODU3OGM5ZGRhOTUyYzU2ZjU0MmMyMDQgbGVnYWN5LXRydW5rCiszMDg1MiBhMGE5MTQ3MjNjNDgwYjcxMjZjMTk5ZDZjNDJjYjI4MGEzNmVkN2QzIGxlZ2FjeS10cnVuaworMzA4NTMgNTk3YWE5OTY2ZWM2YmIzMzMwNzdhODc2NGNmMDhlMWY3MjE1YzQ4NCBsZWdhY3ktdHJ1bmsKKzMwODU0IGY0YzY5NGEwMTQyNTY4MzViN2NjYTBhYzZlZDVmNDU0Y2Y2NjE3NjQgbGVnYWN5LXRydW5rCiszMDg1NSAyMmZiNzZjNTM5MjY3NTE2ZGQ2MWM2NWFlNzI4Y2Y1Y2I1ZmFmYTNjIGxlZ2FjeS10cnVuaworMzA4NTYgMmM2NDljN2FlOGYzZjJiZjdjNGFlMWQwMGFjNmExMTI4Nzg2MmQwYyBsZWdhY3ktdHJ1bmsKKzMwODU3IGNiY2EwYmNmMWMzMWU5ZWFjZDkxZDcxOWQwOGI3NzRhYjM3YTdkYTUgbGVnYWN5LXRydW5rCiszMDg1OCBiNDcwY2E4NGZkMmI1ZWM5OWVhNjlkNmFmMWU5YmU1M2MyMjg4MmEzIGxlZ2FjeS10cnVuaworMzA4NTkgZTgwNDU2YWQxOTViNjhkODA2ZWI2NjA2YmI2MWQyMTI0MTA3ZmMyYSBsZWdhY3ktdHJ1bmsKKzMwODYwIGQzNGVmMDBkOWRhOGEwODYwODY0NDNmNzI1ZjhhODYzZDdjNGQxYTkgbGVnYWN5LXRydW5rCiszMDg2MSA4YjUzYjBjZTA2ZDQ1OGU3ZjQxYWU2MDFhYTI3MjRjNGRiY2FmMmNiIGxlZ2FjeS10cnVuaworMzA4NjIgYmE2M2Q3MTdjNzVmMDAwNGMwYmNlYWM3MTI0ZTViOWEzYjNjYTIyMSBsZWdhY3ktdHJ1bmsKKzMwODYzIDlmZTM2YWUyYTRhMmIyYTg1ZjRiYmRhZDhhNDk1M2JjMTRjNjAyMDIgbGVnYWN5LXRydW5rCiszMDg2NSA5YmUzMTQ5ZmJlZTcxN2I0NjNhODhhZDQ3MjkwYWFmOTdlYmRkZmM1IGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzA4NjYgNDEyZTY2ZTM1MzBlZTdmMGI2NzEyNzQ4ZmRkODBiYmI5ZmY0YjVjMiBsZWdhY3ktdHJ1bmsKKzMwODY3IDRmNTk5ODFmNzgxN2RhYzExNTkwODkwNDI5YjM2NDk3ZWFmNDUyNzAgbGVnYWN5LXRydW5rCiszMDg2OCAxODAwNjdjMjg4MGZlZTVjNGQ0NmNjODIyNGRjMzRlOThkOWUxNzE2IGxlZ2FjeS10cnVuaworMzA4NjkgMjA1NWQwMzcyOTVjZjA5OThjMGM5MGMzY2FkYmZiMTBlM2Y3MjFjYiBsZWdhY3ktdHJ1bmsKKzMwODcwIDMwZGE4Yzk2ZmQyOWVmMzY1Yjg4ZmM5NmFlMjk1MDRjMDhiYmE3M2UgbGVnYWN5LXRydW5rCiszMDg3MSA1YWNmNjk2N2Q2ZGQzNzE0ODYwZGMzZGM5NmYxOTBjMDM5ZjhhZTk5IGxlZ2FjeS10cnVuaworMzA4NzIgZGRiNTJmNTY3M2RiNWE4NTNlNzI1ZmViNjVmNzhlYzFiMTg5ZGU4NCBsZWdhY3ktdHJ1bmsKKzMwODczIDIyOTkyZmE1MTgzMTBmZWYxOGE4NWMxODk5NDA4MTYyZDMxMjY4YjkgbGVnYWN5LXRydW5rCiszMDg3NCBiYmYxNDE4NWJmMWU3ZTZiNmQyOTFlMTE4NGFjNTg4YmU0MTMyMTE2IGxlZ2FjeS10cnVuaworMzA4NzUgNDA2NzdmZTg1MDNkMzBlMGUxYzFiOGVlZTUyZTFhZDBkZWI5MTdjNSBsZWdhY3ktdHJ1bmsKKzMwODc2IDI3YWVkY2Y0NmJjYzkyZmYzZjE3OTRkZGNiODExNzk4ZWIwMzI3M2YgbGVnYWN5LXRydW5rCiszMDg3NyA0MjhjOGE0MjMwNDNlYWRkMzY1YjZhODYzM2E2OWIzYTRlMzU2MjAxIGxlZ2FjeS10cnVuaworMzA4NzggZGM2MTE2Mjc4MjU5M2Q4Yzc0MGRmZTFkODgwYjUzMTM4Y2EyZWEyOCBsZWdhY3ktdHJ1bmsKKzMwODc5IDhkYjJlNzRkZGIwZTVhYTRmNGYwZWNmY2VlYzhjOGYyNDc3YjcwOTMgbGVnYWN5LXRydW5rCiszMDg4MCBhZmQxZGM2MmUzNTRkZWUzM2FhMzljYzQzOGFlMmQ4ZjU2MjhiYWZiIGxlZ2FjeS10cnVuaworMzA4ODEgNThiYWQ3Njk3NzZlNTk5OWU0YWQzMzEzZjdlM2EyMDM2MjhkOTg2NCBsZWdhY3ktdHJ1bmsKKzMwODgyIDA0ZTQ1NjU4MzJiZGQzOWM4YjRiNjNhNGRmMWZmZDQxZTkyYWNmMGQgbGVnYWN5LXRydW5rCiszMDg4MyAyNzNiMmI0OWJmZDg2ODk5ODYwNGM0ZmUyYjRmNmYxY2M4NmQ0YTJiIGxlZ2FjeS10cnVuaworMzA4ODQgODkxZWM0ZDI2NmQxNzg2N2ViMGMzM2MxODQ4OTY0MWE5NTBlOGEyMCBsZWdhY3ktdHJ1bmsKKzMwODg1IDRhNDliNWFhNWQyMTI3MThjNDE0ZjVlMmY5MTdkY2E2MjE0ZjMyNzkgbGVnYWN5LXRydW5rCiszMDg4NiBlYjFlNTI5ZmRmZGYwZDRiOWMyZDIyOTI1ODg2ZDNiZmQ5M2EwOGMxIGxlZ2FjeS10cnVuaworMzA4ODcgZmRlNzhkODBlMDk4OWQyYTM0MDNhZjNjOTVkNWQzZGFkOTNkYjdmZSBsZWdhY3ktdHJ1bmsKKzMwODg4IDAwZjI5NGJmODI5OWY2MTc2MjMxZTlmNjUxMDkyY2UzZDJhZGNiZDMgbGVnYWN5LXRydW5rCiszMDg4OSA2MTQ3YmMxNGQyNzdiNmRiZDU2YWNlZGQ3MDcxYzBkZDVjNzQ4OTQ5IGxlZ2FjeS10cnVuaworMzA4OTAgZmYwZTFlZDk5OGRlZGFiM2NmNzE2ZTVlMGEwOTU4YTBmZjNlNjMyOSBsZWdhY3ktdHJ1bmsKKzMwODkxIGMxZGM1MGRmNTc4Y2RjZWJhNWYyNWQyNDYxYWVkNzIwZDEzMzk3YjYgcmVsZWFzZTIyLW1haW50CiszMDg5MiAxM2JlZWEyZDJkMjZhYTFhMWY1MWExYWM4NGZjNDk0MzQ0MDM5ZjcyIGxlZ2FjeS10cnVuaworMzA4OTMgOWM0YjQyMDdlOTc5ZGMzYmZjMDQ2MDlhODQxZjFlMWZkMjk0ZmFhMCBsZWdhY3ktdHJ1bmsKKzMwODk0IDViM2ZiZmYwNWZmZGE5YjNmY2UyMDliZTcwZDlmMmIxMTA0NTY4NTMgbGVnYWN5LXRydW5rCiszMDg5NSBiNzI1NjQ5NmM5YjAxYzc0NjNmYTFkMWI5ODQ5MmYzZmI5NGVkYmM4IGxlZ2FjeS10cnVuaworMzA4OTYgZDI5Yzc4ZDI3YzVlM2I4OGFkOGYxOWUxNzg2OWIzMTkzNThhYjQyOSBsZWdhY3ktdHJ1bmsKKzMwODk3IGJlMTc4YWZkNDE4MTQ1MTFmZWE4OGU0NDY3NTQ0ODBmZDIxN2E2MmQgbGVnYWN5LXRydW5rCiszMDg5OCBlMmQ3OWZmYTI5MjhjNDBlYWQ0ZTE1ZGRiNzgxZTUxNjBjNTg4YzhhIGxlZ2FjeS10cnVuaworMzA4OTkgODQwZTlmZWQ5MDhhMWZiODVkZmVkNWUyMTU1NmY5Y2U0NWU0NGM2NyBsZWdhY3ktdHJ1bmsKKzMwOTAwIGYzYmFiYWVkZTE4OWEwYjZhM2EyY2ZkN2YyN2E5MmRhYzEyOTljODQgbGVnYWN5LXRydW5rCiszMDkwMSA4MTU2OWNjZGU1YmRmMDBkZjY1ZWY3NWZkZGUxNGJjODg0ZTczYTk0IGxlZ2FjeS10cnVuaworMzA5MDIgYTQ1NzUzMWMwZmQ0OTUxMDcyMTc2OTUwZTA0ZjFjMTc3ZjBmNzczNCBsZWdhY3ktdHJ1bmsKKzMwOTAzIDYyOTYwM2Y2NDQxMjZjYTM1MmMxMTk5NzBjZGQxNzNiYzM3ZDgwMDggbGVnYWN5LXRydW5rCiszMDkwNCA4ZDg2OWY5MjFmMjI2NDIxMjdmOTlmMDI4MzYwNGYyYjExOWUzNjBmIGxlZ2FjeS10cnVuaworMzA5MDUgOWJjZjg1ZDAxMzVjMmU3NGFmZThjODE3MjAzNGFkMDZjOWVhN2Q5OCBsZWdhY3ktdHJ1bmsKKzMwOTA2IDUxNzRiNGE3MWU2ZTRiNzc0ZmE5NWZmNjhmMjdlNTZjYmI4Y2U4NjcgbGVnYWN5LXRydW5rCiszMDkwNyBkMzYzZjgzYzI4NDZhNTJmNTcyM2UxNTVjZDJhNjhlMTNiMDMwZjdjIGxlZ2FjeS10cnVuaworMzA5MDggOTFhNTczMjQzZDVkNzllYWE1MDgyNzhjYWJhZGE1NThlOTY5MTMwMCBsZWdhY3ktdHJ1bmsKKzMwOTA5IDAxNTY0N2M3ZTE4NDMzNjRhNjZhM2EwZjlhOTY1YTA3ZjM2ODY3YTkgbGVnYWN5LXRydW5rCiszMDkxMCBmOWM0OGVkNjdhOTNhZDZlYTc5MDk1MDQ1MGQyNmM4ODRmZWVhZjc2IGxlZ2FjeS10cnVuaworMzA5MTEgZTdjZGI1MDNkMWUwNWJhZTkxODRiMzc0ZDkzY2JjYmY3Y2ViMmZmNyBsZWdhY3ktdHJ1bmsKKzMwOTEyIGFhOTRjODIwYjNlZDAyZGNkOWI0NjJlNGI3OTVhZmU2MGI1MGMyMTUgbGVnYWN5LXRydW5rCiszMDkxMyA4ODJlM2VlYWMzZGQ3YTMwNjA1YTA2YTE2ZjQ4OWFhNzVhYTk3ZTE3IGxlZ2FjeS10cnVuaworMzA5MTQgZTdjZDNjYzExMmQzMDAxMDkyNDM1Mzc3OTc4OTJjYWM1MzNhNjIwMyBsZWdhY3ktdHJ1bmsKKzMwOTE1IDI4YjNkOWE4ZWUxYTMzNmFhOTZiMDI1NWM4YmQ4NjVlNTU5MTNlZTQgbGVnYWN5LXRydW5rCiszMDkxNiBlN2JlNjg2ODAzMzI2ZTQ4MDgxZjFjNGFkMTk2YzdkMWYwOWM0MzI0IGxlZ2FjeS10cnVuaworMzA5MTcgMTIzNTllNTM3NTEyYzMyOGNkMjNmODIxZGRmMWQ5OTE2Zjc4MjRhOCBsZWdhY3ktdHJ1bmsKKzMwOTE4IDAwNjQwNzE0YTU5YTVkODhkOGMzZDcxNjIzODkyNWY2MDVhMjM5NTggbGVnYWN5LXRydW5rCiszMDkxOSBmMWRkOTAzNTdkY2JhMTdjZDgyOWNhMGQ0MjRiOGViOTc3YmI0ODE0IGxlZ2FjeS10cnVuaworMzA5MjAgZWFmM2Y4MDcwMGIzZDVkMTliODliZmFiODk5NzllMjE2NmEwZjgzNCBsZWdhY3ktdHJ1bmsKKzMwOTIxIDQ3OTU4Yzk5NDUyZGUzNmUyZjhlMDNjM2NjYWUyOGVmNzc4YTliN2YgbGVnYWN5LXRydW5rCiszMDkyMiBkMTZhOTc3NzQ2YTIzN2M2MjRlNDk1MzkwZjM4NGUyNTRlNjJiN2IxIGxlZ2FjeS10cnVuaworMzA5MjMgZGEwYzk5MTI1NWMyZWY2NDg0MzFkMDRmZDAxZWFkZjg4NmM3NjIwNiBsZWdhY3ktdHJ1bmsKKzMwOTI0IDQxNzJiMjg2ZDY1OGM3YTFiOGE1ZTE2NWIwNzVlZWViM2ExY2JlN2UgbGVnYWN5LXRydW5rCiszMDkyNSBlOTQ1YTAzZWU1NmM2OWVmNTdkODY5ZGFhMGY4ZmJlNjVmYjUxZjExIGxlZ2FjeS10cnVuaworMzA5MjYgYWVkMmVmOTZlZDU0ZDc5NTliYzUzMWJiMjA1YmMyYjFiZjJmYzFjMiBsZWdhY3ktdHJ1bmsKKzMwOTI3IDZlYjVlMWEwOWI5NWQ1ZTZhOTFhNzNkMDY2MWUxMmI4MTMyOTA4ZWUgbGVnYWN5LXRydW5rCiszMDkyOCBhY2VkZWNkMjAxMjZhZGZiMzM3ZDQxMWMyZTk0NzBhYmI4MDFmN2ZhIGxlZ2FjeS10cnVuaworMzA5MjkgY2FhNmRmOWUwODgwNWRjYzc1NGE3M2Y0MGMwOTdmZGU4YTM2NTVkNyBsZWdhY3ktdHJ1bmsKKzMwOTMwIGQxOWJjM2IxODEzY2I1MThjNzZiZGVhMjI1ZjYwMjExMTM5OGZiZmYgbGVnYWN5LXRydW5rCiszMDkzMSBlYTVlZTNlN2JmYjEwYTc4ZmE4ODcxOTk3NzI2ZDRkZjAxYTliYzRmIGxlZ2FjeS10cnVuaworMzA5MzIgMWZkMDRjMzc0MDlhYjNlYjU0N2UwMGQ1ZjFkOWQwODUxMjYwOWQzZiBsZWdhY3ktdHJ1bmsKKzMwOTMzIGEyNGZkNDVhY2ViMThiZmIyMTRhNDk3OTdjMDNjMGQ3NzFiNjZkNmMgbGVnYWN5LXRydW5rCiszMDkzNSA1NmQ4M2QwYzU1YjYwZmMxN2Y5YmQ2NzQ0MTRlYzBhZmFlMmQ4M2JmIGxlZ2FjeS10cnVuaworMzA5MzYgNTUwYzE1YzQ5MTliMTYyODNjYzgwYmViNGE0YWQ4NTIwYjI1YTAyYyBsZWdhY3ktdHJ1bmsKKzMwOTM3IDVjMTMzZDEzZjMyNTYyY2M0MmY3NjE4MjQxYjY2MGQ4NGJlNDY3NTIgbGVnYWN5LXRydW5rCiszMDkzOCA5OTI0ZjIyZDY2MDRlNDI5NGIzMGI2Zjk2ZmFiOTA2ZTEzNjJkMzJlIGxlZ2FjeS10cnVuaworMzA5MzkgMjc0MmVhOTNhYjIzM2E0ODgyNzYxNDlmZDNkNjE5NDc1NmVjYzM4YyBsZWdhY3ktdHJ1bmsKKzMwOTQwIDIwZGYyNGExMzM0OTAyOWU2YTI1OTVkZjI2YzU5ZmFhMGZlZGMwMTUgbGVnYWN5LXRydW5rCiszMDk0MSA5ZTQzMGFjY2NkYjhmNWMwMWUwNjNiOGE5ZDI3ZWVhMmVlYTFlMjkxIGxlZ2FjeS10cnVuaworMzA5NDIgMDA5ZjNhYmJmNzI2MmEyNWFmZThjYTFkMDAzMjJhZTAxZmE1Y2NlOCBsZWdhY3ktdHJ1bmsKKzMwOTQzIGM3NGNlYTI0MzcyZThmNWYzMjFjYTEzYTYwZTYzOWZlYWYxOTI5NDcgbGVnYWN5LXRydW5rCiszMDk0NCA3ZDNjNmFkNGUzZWRjOWMyY2FmMjlhODIzZDQ0YjMzODA4Y2U2NDE3IGxlZ2FjeS10cnVuaworMzA5NDUgMGFlYWEzZDFlMGZmNzk0MmMxN2E3NmVmNDBiNzY3Yzg4MGUyNGIzMyBsZWdhY3ktdHJ1bmsKKzMwOTQ2IDI0YzhmYmVjNzYxZjIzMWQ3ZjM4ZjIyODQ5YjdlZDA0MGIwNGMzOTcgbGVnYWN5LXRydW5rCiszMDk0NyAzYzNlNGM4YzRhOWRmZjAyNmIyY2MxNmMzY2IwN2MyNzMwOTE3YzMxIGxlZ2FjeS10cnVuaworMzA5NDggOTNiYTQyY2Y0ZTUzYWNmOGIxMTJiZWNjYTlkNWI1YzE4ZTJmMzVjYSBsZWdhY3ktdHJ1bmsKKzMwOTQ5IGZhMjQ1MzhmODY1MGE1NjJjNTUwMTRlMGEyMmRiYmEwYTFkNmRhOTcgbGVnYWN5LXRydW5rCiszMDk1MCBlMjZhMmY3ZjIyNGI1OWE0MjIzODYzOWQ3NDRlMzFhN2FiNDg4MzE2IGxlZ2FjeS10cnVuaworMzA5NTEgYmYwYmM4NDgxNTAyMTQzYjFjN2RiMjEwZWJjZmM5ODE4MDMzYTg1ZCBsZWdhY3ktdHJ1bmsKKzMwOTUyIDNjZDlkZGQ1NTYyZWEwOTliYTJhYjZiNThjYmNhY2QyYWQyYWJkODcgbGVnYWN5LXRydW5rCiszMDk1MyBiNDY1YzlkMjE5NmEzY2JhODc5M2JmZTNhYjNhMWI3OGEwMzMxODA1IGxlZ2FjeS10cnVuaworMzA5NTQgMWFlMGIxNDIzNzBlNDA4NGVkYTRjYjIyMDQ5MmUzZjZiY2NhMDM5ZSBsZWdhY3ktdHJ1bmsKKzMwOTU1IGY4YTkwMDg1YWNjNDFlOWEwNjEyYmFiNzhjOGJhYmQ2MzI0NGZmZjUgbGVnYWN5LXRydW5rCiszMDk1NiA0MDQ3ODIxNDE5YjU3YTg4NTkwYzE5ZDhiN2UxMGI0Yjg2MzZjMzMxIGxlZ2FjeS10cnVuaworMzA5NTcgMzU3MzY1OTFkYzFlN2E1MzFlYzMyZDNjOTk5ZDc0YjAzN2FkNmI3YyBsZWdhY3ktdHJ1bmsKKzMwOTU4IDcxMTZjYjViYWM1MDgzZDQ5YjIyZmI1Y2UyZjU5Y2NkZWNlZjYyMWMgbGVnYWN5LXRydW5rCiszMDk1OSA0MzBlZDFjOGUwNzFkYWIwMTE1NDBmM2RhOWMyOGM5ZDI3ZjYwZTg0IGxlZ2FjeS10cnVuaworMzA5NjAgNjBmZjFiYTQyOGMzZmEwYjA2NGRlNzgyOTJiOTAwNTBkZDA3NmY0MiBsZWdhY3ktdHJ1bmsKKzMwOTYxIDkxYWUyOTJjM2E5N2YwY2QzOGEwMmJjM2IyOWZiYjViMTk3ODIyYTQgbGVnYWN5LXRydW5rCiszMDk2MiAxOGU4ZWQ4MGU4ZDE3NDhkZmY1ZjNmYjc0MGEzYjMwY2Q0NWViZjJiIGxlZ2FjeS10cnVuaworMzA5NjMgZDlkMjRjZTFjYmY2NThkMDczM2FhYmQ4MzI5MDY2ZGMwNzQzNTc1ZCBsZWdhY3ktdHJ1bmsKKzMwOTY0IGU0YTVmNzUzNTA4YmM1MGIwMTU0NDdhMTRkYjU2YmQ5Mjg4YTYwYTYgbGVnYWN5LXRydW5rCiszMDk2NSA1ZGIyY2YzZTc3ZGIzM2M5ODBmZDBlMTQ5YzgwZjY3NjZiNDdkOTFiIGxlZ2FjeS10cnVuaworMzA5NjYgNmIwZGJkZTBmZWQ3MTVhMjk4Y2I3NDIxMWFlZDFkZmY1OWMyMmVmNSBsZWdhY3ktdHJ1bmsKKzMwOTY3IDhmMTM3MjlhOTRhOTY2YTFhMThjYTQ3ZDgxMWRjNDY1OTg0NGMzNTAgbGVnYWN5LXRydW5rCiszMDk2OCAxZjYzMjcxNDBmYzIzY2ZiODA3ZDlmOTE2ZTEzNWVmYjkxNTk0Y2Y3IGxlZ2FjeS10cnVuaworMzA5NjkgYTE2MjYyYmM2MDk4ZGQwODAxN2MzNjE2OGY4NGQ0M2UyYmUyZGJkMCBsZWdhY3ktdHJ1bmsKKzMwOTcwIDkyNWVkZjhlMDAwY2E3ZGZhYTIxMGY3ODg2YTMxMzRmYzI5ZGFhMTggbGVnYWN5LXRydW5rCiszMDk3MSBkOGMyYzQwYjM4NmIxOWEwZDY3ODZlZWI4NzE5MTFmNDcxYmE1NTU5IGxlZ2FjeS10cnVuaworMzA5NzIgYjNjYmU3YTAxNDJhNzhkOTY3NTY5ZTZiZDczMmMyYWI2MzRmZTg5MCBsZWdhY3ktdHJ1bmsKKzMwOTczIDBhNDdkODMyYTY0YjViNGYxM2EyMGFjODg0MjljZGJhNjViZjM2MTkgbGVnYWN5LXRydW5rCiszMDk3NCA0MDE1YTI3YTFkMTNmMmM3NGQ2M2MyMmNmMWViYTE5NDY5NmFlYzJhIGxlZ2FjeS10cnVuaworMzA5NzUgYTIzMGQxMjAwYmMzNWIzZDI2NjVhZmQzYTk5Y2IxNjhkMDViNzRlNiBsZWdhY3ktdHJ1bmsKKzMwOTc2IDdmYjVlOGE1NDFhYjhmY2U3M2FkNjU5ZjRlNjgyMTFjMGU4Njk1MjYgbGVnYWN5LXRydW5rCiszMDk3NyAzNTA5YWQwN2QxNTZhY2I2ZTU2ODJiM2ExYzQ0ZjFiMWZhMzA5MTY5IGxlZ2FjeS10cnVuaworMzA5NzggOWZlMzIxNTRkMjg5MDJlZTY1ZjdmOTAwOWY0NDU0YzBmZmMzMDhlOCBsZWdhY3ktdHJ1bmsKKzMwOTc5IGIyY2U5YzYzN2EyYmM2MDJjODI5MDQ3MjU5NjY1ZTE1YWVjNzQxMmUgbGVnYWN5LXRydW5rCiszMDk4MCAxMTVlZTQwNTE4YTg0ZGNhZGViYjFiOGVlMDhjY2FjZDRhYTdmZTI3IGxlZ2FjeS10cnVuaworMzA5ODEgNjJjNjY4OTNjMmRiYTJhNDUwM2Q0NjRhMWE5M2FmOGViNmE2ODAxYiBsZWdhY3ktdHJ1bmsKKzMwOTgyIDRjMDNlZjA2YzNmZjcwNGZhMWQwYjhjMjhiMzZhZDc1MDIwNTFmNTEgbGVnYWN5LXRydW5rCiszMDk4MyBlYTQ4MDQwNmNjNjU2MjFjZjBlZTYyZDU0N2U2NDM4YjM1Y2Q2YWZhIGxlZ2FjeS10cnVuaworMzA5ODQgMDU1NGI3YzVmNmQ3ZDI2OTIwMzljMDBmMjUyZjExYmE0MmIyZjJkZiBsZWdhY3ktdHJ1bmsKKzMwOTg1IDg4M2FmMjhiOWEwZDA2NjBlZmJiMmY5ODcxMWM5YWI5Yzk0Mzk4ODMgbGVnYWN5LXRydW5rCiszMDk4NiAyNmE3OTIwMDc2NjUyNWI5NTJlNmFmYmI0N2Q4MGRmNDQ5OTI2MTFkIGxlZ2FjeS10cnVuaworMzA5ODcgMmVlOTc0MmFhZGQ4OTIxNDdlNTU0MzAyMmMwMmJlMjZmMTMzYjRjYyBsZWdhY3ktdHJ1bmsKKzMwOTg4IGVkMGQ0YWU2YzZjZTQwOTE4OGMwNWYxYjZjMmJkODkxMjE4YzJiMzggbGVnYWN5LXRydW5rCiszMDk4OSA4ZGNlN2E1ZTVmY2NkMjdlYzUwZGIyMDE1ZDQyNDgyY2YxMzk4NzYwIGxlZ2FjeS10cnVuaworMzA5OTAgNzY0ZGYyZmRjOWM2MzY3NWVjNTBhNmQyZTA3MmMxZWU4NzcwNThiMCBsZWdhY3ktdHJ1bmsKKzMwOTkxIGY0OTExZjdhYWQwMjUzODUyNDA2YmNmMDIwZjM0MGI0MmNlNDA5MWEgbGVnYWN5LXRydW5rCiszMDk5MiA2ZmZhZmNlZjk4ZmIzN2ZkNWY0MjE1Nzk2ZTZlOGNhMjI2MjA3NWVlIGxlZ2FjeS10cnVuaworMzA5OTMgNWM3NTQ4YmYzNzdiMjI4OGM2ZjM4NThlZDAwYjgzZWEwODRkMmIyOSBsZWdhY3ktdHJ1bmsKKzMwOTk0IDE3ZDg3YzViYTZlNGI3MTUyMDA3MmUzZDc1NjI2Y2FjODE4ZDJiMDQgbGVnYWN5LXRydW5rCiszMDk5NSAwNWY3ZTFjNjVkN2U4MzgzYjYzMTdkOTI1YzE4ODUwMTE0ZmZjYjY2IGxlZ2FjeS10cnVuaworMzA5OTYgZjRlOGE2ZDRhYTdjMzdlMWJmNjQ0ZDUwYjk5YmJiZWRiOGMyY2E1MyBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzA5OTcgZjhkMjhlODJjNGNjOTlhM2JlMTAyYTU0YWU5ZTY4OGQxNjY4OWNhYiBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzA5OTggZGU0MDYxNTg0YzgzOTE1NzIyNWZkOGM5NDEzZTY3ZWVmMTQzMmQ5NyBsZWdhY3ktdHJ1bmsKKzMwOTk5IGZjY2Q5ZTk0MzIxMWFkNjNiM2U2NjY3MTNlMWJlMGI2NDY1YjlhYjUgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMxMDAwIGI3OWMxYWZmZjExMjgzNTFhODgyMzAyODc4YzNkMzM3NDViY2JmMWQgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMxMDAxIDE1NGJhYzBiMjZhNTRlYzE5MDkyNmM3YzhiYjU1NGI2YTZmM2I3M2IgbGVnYWN5LXRydW5rCiszMTAwMiAzMTAxNGZiZTIwZGJiMDg4MzAxNDFlNmE3NGQ3NDQ1NjcwMmQ5OWU0IGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMyAzOGM3YzJkNGNkNWFjZjQzNWUzYTU2NDQwMzE5YmQ4MmMyNTk0NmQ3IGxlZ2FjeS10cnVuaworMzEwMDQgOTI0YWRlODAxMDRiMTczOTY2NmFkNTE3MTQzYzA5YzkwNDYzNWQxNyBsZWdhY3ktdHJ1bmsKKzMxMDA1IGJhOTMxMGZlZjQ5ZGQ4MjkzOGRlZjg3OGFkNWIxMGNjN2EyNzE1NDggbGVnYWN5LXRydW5rCiszMTAwNiA2ZTg5ZTgwZTZhMjY3YzUxNjQ2N2RiMmFmNWI4MDFhZDBlMmNiNTcxIGxlZ2FjeS10cnVuaworMzEwMDcgNzEyYjAxZDUyZThjZDJiM2Y5NWJhOGVlOTQ0YTNiMjRmYWNkODk0MyBsZWdhY3ktdHJ1bmsKKzMxMDA4IDE0YjE3NThkZmRkZWRhY2RhMDViODU2ZjI4NTQ5MTRmMDI4MGUwNmIgbGVnYWN5LXRydW5rCiszMTAwOSAyOWZkOWZkYWY1MmE5MDVhNzU3NDc5Zjg3OWUxMTc1YmI5OGUxNDg2IGxlZ2FjeS10cnVuaworMzEwMTAgZWUwZTUxNTQwN2ZkOTc5ZGUzMThiMWY1YTk3ZjI0YmMwMjI2NTUxOCBsZWdhY3ktdHJ1bmsKKzMxMDExIDdjOGRmZDNmNGFlOTA2ZTNhYTEwNzdlMjcwYzBkMzAxYzcyYjRlOWIgbGVnYWN5LXRydW5rCiszMTAxMiBmOTI4NGI1N2I0MjI5YWVkODZjOTFmNDZmY2JjYmI5NWY4Zjk2ZWExIGxlZ2FjeS10cnVuaworMzEwMTMgNWJhNzkzNGE3YmEwMjE4NGM1MmUzZDUwNTdhMmFlNTMxOTdiODg0ZiBsZWdhY3ktdHJ1bmsKKzMxMDE0IDM2ZjcxZmVmNWIxMDhmYzgwMzIzMGJmYTMxMGZlZmRiZGQxNTg5ZmUgcmVsZWFzZTIyLW1haW50CiszMTAxNSBlOTU3ODc0N2Y0M2RmZTY2YjcwNjU0NDliZmU2ZDJlOGE3ZjE2Y2Y5IGxlZ2FjeS10cnVuaworMzEwMTYgMDkwNGQ4NzhiOGYxODc3N2RhZjc2NTc5MTdkNjRiNmM0YWY2MmY1MSBsZWdhY3ktdHJ1bmsKKzMxMDE3IGU5Y2QyMjgxMDRhMTMwYmZkNjExODRlMjNhMjFmZmIyOTM4MzA3NTYgbGVnYWN5LXRydW5rCiszMTAxOCAzYmM3MWQyMzRhMjllOTg5OTI5OGU5YjZiM2JiNTIyYzQ1Y2IwZWNmIGxlZ2FjeS10cnVuaworMzEwMTkgYjgzZmE4ZmExMjFlODRkODMzZTYwYTU5ZmZmYmRiZWU4YjZlNWRlYyBsZWdhY3ktdHJ1bmsKKzMxMDIwIDQyNDdlNjQwZTJhNmViMmE1OGM3OWQwMGJhYmI1ODg1OTFkZTFhNmUgbGVnYWN5LXRydW5rCiszMTAyMSBhODljMDc3ZTY0OGExOGZjZDJlNDZiNDJlODQ3NmFmZjAzZWIxOTAxIGxlZ2FjeS10cnVuaworMzEwMjIgN2I3ZDNiOTA2MzYzMGU0YWZmZDE0ZjQwNzU0OTMxMDE4ZWY2MGQ4ZSBsZWdhY3ktdHJ1bmsKKzMxMDIzIDFmMTZhYmZhZjYzZTlmMGVlNDg4YTg5ZWNlNjkzYjdmYmUwYjkwOGIgbGVnYWN5LXRydW5rCiszMTAyNCBhZGJjM2ZlOGM4MWNjM2EzYTBhOTUxYmU4YTQ5ZmUzYzk4MmQxOWQxIGxlZ2FjeS10cnVuaworMzEwMjUgNWU0MzU1ZDgwZGQxNTk3MzQwZmE3NmIxNzAzMWY4ZWQwZDUzMDlhOSBsZWdhY3ktdHJ1bmsKKzMxMDI2IGU5MDViMjJlMzkyYmE1OGZlZjkzNWViNjdiYjNlNjFhYjA5ODlhZDUgbGVnYWN5LXRydW5rCiszMTAyNyBkODc1MGUwZDNmYjg4ODgzNmFiNzgzOGE4MDY1ZWQ3ZDJhMGM2MjlhIGxlZ2FjeS10cnVuaworMzEwMjggNGMzNWE2NmZjZTRkZjBlZDk1ZWI5MzkwNDQ3YWZiZGIyNTNhOWUxMyBsZWdhY3ktdHJ1bmsKKzMxMDI5IGFlMzFmY2I3YjU4ZTRjY2Q4ODExMjFmMDlmMjliMDMwNGY0ZmQyNzEgbGVnYWN5LXRydW5rCiszMTAzMCAwOTBhNTBjYjI2OTAwZTA4OWU0NTI3ZjM0MWFjNmJhM2FiZDNkZjMxIGxlZ2FjeS10cnVuaworMzEwMzEgZTQyZTMwMjViYWUzYjQ5YTU4NzcyNTlkOWY3NGE4NDExNmZjYTRkZSBsZWdhY3ktdHJ1bmsKKzMxMDMyIDYyMDUzOTE2NWU1MzA4YWM5YTg0ODBhMmVlN2RlMTA4ODM2NGFmMzMgbGVnYWN5LXRydW5rCiszMTAzMyAwZGQ4ZDhhNzYwMTVlZjBkYmI5NmJlZmQ5MmVkN2ZmYmRmNTg2MjYwIGxlZ2FjeS10cnVuaworMzEwMzQgZmU0MGZjZjQ5ZWU1NjZkZmI1ZmMyOTE4OTE3MGQxNTY2YzAxNmUyOSBsZWdhY3ktdHJ1bmsKKzMxMDM1IGI0ODBhNGY3MDdmNjE3OGIyMDYyNjgwMWZlZDA1NmEzNGUzZjE3MzQgbGVnYWN5LXRydW5rCiszMTAzNiBkOWQ1N2Y1Zjk4Y2RhNzIyYjc4NGFmZjlkZTg4YzBlZmNhZjMyODU3IGxlZ2FjeS10cnVuaworMzEwMzcgMTQyNzZlNDNlY2U2MDQ3OWRhYzY2NzIxNDAyZTQxZDljOWY4NTUwNyBsZWdhY3ktdHJ1bmsKKzMxMDM4IDQ0ZjQ2NTY4MzkyN2IzY2ZjNmRjM2MzYTZmMDM0YTQwZDk5NjBlNWIgbGVnYWN5LXRydW5rCiszMTAzOSAyMGM1ODFjMjNiY2UzMzM2ODY1MjQzNDc0OTBkNDkyZGE1NGNmOTFkIGxlZ2FjeS10cnVuaworMzEwNDAgMGRlMTQyNTJkMjZjZTZkZDNjMTQxMWZhN2FjYTIwMWU1YzgxNDY5OSBsZWdhY3ktdHJ1bmsKKzMxMDQxIGEyZDk2ZTdkOTFhMWE5ZjllYjA5MTQ3Mzc3NThmNDM1ZTQzOTFmZjkgbGVnYWN5LXRydW5rCiszMTA0MiBiMWQxZmU3ZmI1MTRiMTczYTgwOGNhNWRiOTY5ZjViNDBlZDI2NTA4IGxlZ2FjeS10cnVuaworMzEwNDMgZDYyYmQyNDA3MjkxOWFiMDQ1M2U0N2ZmY2FjMjJjZTQzZDI5MzM0NiBsZWdhY3ktdHJ1bmsKKzMxMDQ0IDBlNmRjZTFlYzIzMWNkNDdjNDMwZDJmMWY1YjI5YzRhZjJlN2VkMjYgbGVnYWN5LXRydW5rCiszMTA0NSA1ZjMyOTQyYTIyNWFkYTllYTViOTVhZGY4MGJmZGI3NWIwMDk5YThjIGxlZ2FjeS10cnVuaworMzEwNDYgNTFhYmI1ZTg2MjI2MjU1NWZjZTUyOGQzYTQyOWVhNzQ0MzA3YjdjNiBsZWdhY3ktdHJ1bmsKKzMxMDQ3IGIyYjU3NDExOGZmZGEzZmRmNzRkNmEyZmJlMmE5ZmM4NzY5OThhYWEgbGVnYWN5LXRydW5rCiszMTA0OCA4MWEyZDE4OGVhMWY5ZjZhMzNmYThiNDk1ZWUwNzljY2U1MGIwZmVmIGxlZ2FjeS10cnVuaworMzEwNDkgNjc4NmU4NmI4ZmYwYWQwYmEyNTczODJiZDNmYWFhNWM4YmYyY2U0YyBsZWdhY3ktdHJ1bmsKKzMxMDUwIDE3YmZkNWRiYzBmMTZkYzg1YzE2YjIwODhhY2M0MjgwN2Q2OTMyMzUgbGVnYWN5LXRydW5rCiszMTA1MSAwZjllYjg0MTNiNjFiNGU2MjUxZTQ5ZjA3NzYyNTk0N2JjYjIyYTJhIGxlZ2FjeS10cnVuaworMzEwNTIgYjE3M2EyYTIzMDgyNWE0MWZhYjFkYWY4ZDBjNTQ4ZTNiNGYyYjk3NyBsZWdhY3ktdHJ1bmsKKzMxMDUzIGQ1ZjQ3ZTE0NjVkNjZkZTUwMzI4MjlhYmJlMjRlMzUwZTc3MmQwMTggbGVnYWN5LXRydW5rCiszMTA1NCAwYmIxNTRmYTgwNDdjOGYwZmM4MDNiZWNhZjZhMzk1ZDE0MWJlNmZmIGxlZ2FjeS10cnVuaworMzEwNTUgZGRlZThjMTU4MzAxYzY4M2NmYjk4ZTU3Zjk2ZmQyNjllZmM5MDU1MiBsZWdhY3ktdHJ1bmsKKzMxMDU2IDJlMThkYmNkOWUwNGNhYmQ2NDdlZGMzMmI5YTBjYTc4OGMzYzJiNGUgbGVnYWN5LXRydW5rCiszMTA1NyA2ODkyNTdjYTRkMDkyYjZkNzlkODUyMDM0OWI3MGQ1ZGYxMjE5ZDRhIGxlZ2FjeS10cnVuaworMzEwNTggNjk2YzQyZGE3ODc1MzMxODIxMTMwZTA4OWViNDUxNDJiYzdmNjA3MyBsZWdhY3ktdHJ1bmsKKzMxMDU5IDU3NjVkNTI0ZGU3MWUyYWNkYjllZGJiMGEzZTUwMmZlZDQ1NTZkYmIgbGVnYWN5LXRydW5rCiszMTA2MCBkMTEyMjNkYWFmNjFkM2M1MTNiZWNhYTBhZjE5ZjkzMjlkNzNhNmJlIGxlZ2FjeS10cnVuaworMzEwNjEgMDJmMTM4YzYzOWEwODNhMTM3NGUwNzQ0NjZmZDdkNzIwODhjZjY2ZSBsZWdhY3ktdHJ1bmsKKzMxMDYyIDg0MmQ2YTI0NDk3YWU4M2E1MzY5MjgxYjVlYmFkM2FiMGJhYzdhZDIgbGVnYWN5LXRydW5rCiszMTA2MyA5OTA5OWRlYjYwMjY0MGJiOTU2ZjQzMTI2OTJlMzkzNmRjNWJhYjM3IGxlZ2FjeS10cnVuaworMzEwNjQgNzJiMzhkNWZlNjFmOWFmZWVkMmEyYzZmZDRkMTYwZTVhODU0Y2FhOCBsZWdhY3ktdHJ1bmsKKzMxMDY1IGNiYzg2MDI4ZDlmM2JhYjcwYWQ4MjQ5NzViMzFhY2MwMDg5Y2ZhZDkgbGVnYWN5LXRydW5rCiszMTA2NiBmZGM1MmIxMTk3MDkwZTEzMjkwZjk4NDM4ZTU1ODM1NjJhNjQ4MjIxIGxlZ2FjeS10cnVuaworMzEwNjcgODc5NDNmYWY0ZmQyMTZhNjEwMmUwN2Q0OTk1NDFjOGFiYzUxMThlNiBsZWdhY3ktdHJ1bmsKKzMxMDY4IDk3YjI4MTcwNjM0Y2NmMTkyYzlhZWY1NmI1ODA4OWI5ODY0NjEyNzQgbGVnYWN5LXRydW5rCiszMTA2OSAyYWRkMDA4YjFiN2QwNzVkMzMwMjc3NGJhOTlmNTVmZTJmYjIyNjlkIGxlZ2FjeS10cnVuaworMzEwNzAgODhjZWVlZWQ3MGJkMTUxZDVlYzA5MDExMTM5YmJlYzlhYzM4NGM5YSBsZWdhY3ktdHJ1bmsKKzMxMDcxIDBjODgxMDM3M2ExYTc3Mjg2NDkwYzk2MWJiNTQ1Y2Y0MDE0MWQ1ZGQgbGVnYWN5LXRydW5rCiszMTA3MiBlZDJkMjNkMmZkNDEyYjlmN2U3NjVmMjY2YTE3MDllMDVkMGM5MmVlIGxlZ2FjeS10cnVuaworMzEwNzMgYzQ3ZGU4OGFlODVkN2U1NDdhMmZkOTE2YzUzOWRiNWZmMjM5MTNjMiBsZWdhY3ktdHJ1bmsKKzMxMDc0IGY5ODIyYjE4Y2Y5MTljNTZjYmM5ZmVhNjVjYjU4MzM5OTFjZDliMzkgbGVnYWN5LXRydW5rCiszMTA3NSBiZDYzZjI4Y2U3YThiZmRhMTAwMDVjMzA3NDc4MWJiYjlmYjQ1MTZhIGxlZ2FjeS10cnVuaworMzEwNzYgY2U3NDhhZmJkNmVmZDJkNGE3MzQxNGI2MjE5Mjc3ZmQ1YjNkZGVkMyBsZWdhY3ktdHJ1bmsKKzMxMDc3IGM0MjVmNjZkYjQ1ODIyNTAzZDllYzlkNDRlMjQ1Nzc3OTZiMWJlNGMgcmVsZWFzZTIyLW1haW50CiszMTA3OCA3ZmNkZWViMTZlYzBkNjRlYmMyZmM4OWNkYWI2MDc3ZDRkNjEwMmVlIGxlZ2FjeS10cnVuaworMzEwNzkgMzE4MDc4ODBmNTk5NjU5MTRjYzAxYjFmY2Y1NTJmZWE4MWNhYTAwZiBsZWdhY3ktdHJ1bmsKKzMxMDgwIGQzYWYxZTc5MzI0Mzg5MmJkYmMyYTIwYTViM2ExZjQ1ODc1MWI2ZmEgbGVnYWN5LXRydW5rCiszMTA4MSA1MGM3MzQyNTBlMDUyOWI2NmI1NWRjMjk3ZTBjNGFmZWI1ZjI4NTg1IGxlZ2FjeS10cnVuaworMzEwODIgNjU5N2MwOWIxZTZkYzlkMDBkMWYzNTI4ZTI3Njk4YzMxNjgwMDk1YSBsZWdhY3ktdHJ1bmsKKzMxMDgzIDNhZTBhMmY4N2FhMDZjNzRkNjlhYjcwZjc5ZjA4NDJhZWQ2MzMzMWUgbGVnYWN5LXRydW5rCiszMTA4NCBjMjY3ZjI4NzI0ZGRjY2RlYmM1MzE4OGVkYTVkYTllMGNhNzIwNWI5IGxlZ2FjeS10cnVuaworMzEwODUgMjRlMzRhYmM2Mjk1MDA5NzMwNjUwYTUwZTE2N2M1NjkyMDY1MGE0MCBsZWdhY3ktdHJ1bmsKKzMxMDg2IDVlZWZlYzk0YTc4NDg1NDJiOWEwNmU4YzVmMjFjMWU4ZGRiOGI3MDEgbGVnYWN5LXRydW5rCiszMTA4NyA4ZDgzNTc4ZGJhODE0MWQ0NmZmZmUxMDI2YWFkMzVlMTQ2ODVhODQ0IGxlZ2FjeS10cnVuaworMzEwODggZmFhYmQ5ODY3ZmI4ZGM0OTk0MGQzOGMyMjk2ZGE3YTZjMGFiYmJlYiBsZWdhY3ktdHJ1bmsKKzMxMDg5IDRhYTRlNmIzZWNhNzIzZjQzNDllNzQ2ZjdiNjYzMGQ1NjE3MWEzZTIgbGVnYWN5LXRydW5rCiszMTA5MCAzYzg5MDQ5ZmU2MjhkMzRkYTFlYWExZTQ5YWE2NTA4MTJlNWRjNWIyIGxlZ2FjeS10cnVuaworMzEwOTEgZDQyZDgzZTU2ODZjM2I5NmJlZGVlNGQzYmM4NWRjODgxNDlkNTg3ZSBsZWdhY3ktdHJ1bmsKKzMxMDkyIGFiMTQzYWVkNDliOTA2ZmI4MzM2MDAwM2QyZTZkNzZlOWE0ODhmODIgbGVnYWN5LXRydW5rCiszMTA5MyAyNTY3ODlhYWFjZDY1YzAzMjMyYWMyZjFlMTQ0MDM4ZGFjMjljN2Y1IGxlZ2FjeS10cnVuaworMzEwOTQgNjIwYmIzNTUxYmI2NzQ3YTY2MGI0ZGVmYWRkZTNmMjA0NTUyNzE0ZSBsZWdhY3ktdHJ1bmsKKzMxMDk1IDg3NjNhOGY2YzBkNWJlZjJlODAwMjVjMDA0OTEyYWI3YzU2YjQ4MjAgbGVnYWN5LXRydW5rCiszMTA5NiBjMDc1YmEyYWJmN2FiYTZmNmZkZDMzODBmN2NmNTIzZTUyNjFkNGRmIGxlZ2FjeS10cnVuaworMzEwOTcgZjMzZTY0NDg0NjIwODFjNzRjYmRlMWJiMTg2OWJjY2JiOGJiYzQ0NSBsZWdhY3ktdHJ1bmsKKzMxMDk4IDc2ZmE4Yzc5YTg5ZDBhNjkwYmMzNWRlOWU5ZGI3OTI5MmRiN2U0MDggbGVnYWN5LXRydW5rCiszMTA5OSBiYTU3YzNkYWY2ZTlhMzlkNmViMDJkMjYyMDU2OWYzM2IzMjllZjAzIGxlZ2FjeS10cnVuaworMzExMDAgYmQ4ZTYyMjJlMTZhMzJhM2FmNDMyNmIwMTA5MzAzN2EyY2NkNmFlYiBsZWdhY3ktdHJ1bmsKKzMxMTAxIGYyMzVmMTM1ZjNmOGEyNzg2MjkzYTc2OTM5MDFiYTA0OWNmN2UwNzcgbGVnYWN5LXRydW5rCiszMTEwMiA2NzRmM2VlY2ZmYzUwNjllNzFjYzdhYWFiMmY4MzZkYzJiMTU4NjhiIGxlZ2FjeS10cnVuaworMzExMDMgMDE5MDg3MmViY2YzZDc3NDg0MDE2M2ZjNjY0OWUwNjQwZDUzYjg2NyBsZWdhY3ktdHJ1bmsKKzMxMTA0IDNiOWZiNTdmYWMzNGEyNWQ0OThhNGQ1NWIxM2NjNGMyMzNhNDRkM2EgbGVnYWN5LXRydW5rCiszMTEwNSAxNjA4NTA3YmNjM2ZmODQ3YWY1NjFiOTZiYjYyZjIxM2Y0MTk0OTk1IGxlZ2FjeS10cnVuaworMzExMDYgOWJjMWM4NGIyM2U2NjIzNjkzMjgzMjY2OTljZDYwZjc4YjFlODk3YSBsZWdhY3ktdHJ1bmsKKzMxMTA3IDJmMjI3ZmYxMWY1ZTNhZWMxNjRhOTU5YjM0NGFkNGM1YzdiZTI4MjMgbGVnYWN5LXRydW5rCiszMTEwOCA2ZmZiNWM4ZTY1MzhlZTg1YjhhMmU0MjI0MGEzYjc5YmRjMjU5ZmVlIGxlZ2FjeS10cnVuaworMzExMDkgZjQ3YWYyY2RiOTgzYjQxZjVlYWNiYmViZjMxMzcyNjY4NTM5NjY1NyBsZWdhY3ktdHJ1bmsKKzMxMTEwIDJkN2MwY2JjODNjZjNmNDliOWEwMGFhMTE1M2I0MzNjYTM3ODIwOTEgbGVnYWN5LXRydW5rCiszMTExMSBkMWVkYWFhOTM4ZmJlNzQ4NTJmZjU1NTJhZjQ1M2M5Y2E0ZGU2ZTE3IGxlZ2FjeS10cnVuaworMzExMTIgYTJkYjQzN2QzMTRiNDg5MzdiYTBiY2U3ODlmMDU1NTVjMjcxNjQyMCBsZWdhY3ktdHJ1bmsKKzMxMTEzIDY1NjM1YzcyMTM1ZTFhY2M5YzY3MzM1YmRmZTVjNzc2YjdkMzE0MGYgbGVnYWN5LXRydW5rCiszMTExNCBhMDU4MTQxODRlOGM2ZTUwNjFjZjBiZjMyZTAyMTRkODU3YWQ5YzEyIGxlZ2FjeS10cnVuaworMzExMTUgOTgxOTdlYmU1Y2NiN2RlZjc4ZTdiNDQ3NzliZmY5MTYyNjRjMzEwMiBsZWdhY3ktdHJ1bmsKKzMxMTE2IDcyODMxNDBkNDMxOTg2YjI0M2RhYTcwMmE4ZjNiOThhOGZjZjMzMjYgbGVnYWN5LXRydW5rCiszMTExNyAzZWIxMGExNGJhMDBkOTZiMzQwNDY0YzJlZGNmYjNiODlkMTU1ZjA5IGxlZ2FjeS10cnVuaworMzExMTggZTNmYTgzNzdmMzBjNTgwYTUwYjRiOWFlZWRjNjZmZDA1YWNiOTNjYyBsZWdhY3ktdHJ1bmsKKzMxMTE5IDkzMjEwNTY0YmI0NjA3OWYwZDYyZTE1NDYzNWY0ZTRiZTdjMGRhNWUgbGVnYWN5LXRydW5rCiszMTEyMCBkNmI2NWUzODU1YTI1MDBkOGQxNTllM2I0ZDQzNmVmYmY4MjEyZDk1IGxlZ2FjeS10cnVuaworMzExMjEgNzhlNDNiMzZlNzg0NGViOGQ0NTllOGI5NDJjNmMzOWM5YjA0NGU1NCBsZWdhY3ktdHJ1bmsKKzMxMTIyIDU3YmRmNGJhYzQzNWE3ZTY2ZWNkNWZjYzE3ZjllNjY5MDdmNGI5MjcgbGVnYWN5LXRydW5rCiszMTEyMyBlNWQxODExMjAzMDM0OTExNWViMjZkZDczMTBiNDQzYzUwNjZjNDY2IGxlZ2FjeS10cnVuaworMzExMjQgOTE1ZDMyN2EyMTRhOWFmYTliNmU4NDAxZjllMTZlZWNlY2Q2ZTRlMyBsZWdhY3ktdHJ1bmsKKzMxMTI1IDcyMjI4YTI1ZGFhYTI1OTIzNDkwOTExZTYwODk2M2E3MjY5NjllOWMgbGVnYWN5LXRydW5rCiszMTEyNiA4ZTYwZWM4OGVjYjg0ZDkyNTMwZDgzNDY0MmEzODk2OTVmZWU4YjZlIGxlZ2FjeS10cnVuaworMzExMjcgYTM1ZGZjYTkzMzE4ZDFmOWU4M2MxNzg2YzVjNTkzZmQ5N2EyZmEyYyBsZWdhY3ktdHJ1bmsKKzMxMTI4IGQxNThkMTBlZjRhZWIwMjdiNzQ0ZjU2YWFlNWQzZGFhYWVhNDlhM2IgbGVnYWN5LXRydW5rCiszMTEyOSAzMTNlOTQ0YTJjODg2MjM2YTZlMTk3YWZiMWM1YTc1YzYzZjk0NzA5IGxlZ2FjeS10cnVuaworMzExMzAgOWEzYjg0NDNkNWE2MTYxNWZmZDlkZTNmNWYzODcwNTM5MzE4OTQ3OSBsZWdhY3ktdHJ1bmsKKzMxMTMxIGM0MjE0YzIwYjIxZGMwMjBhODA3ZjYwYjEyM2Q0MjQ5OTQwOGUxZjMgbGVnYWN5LXRydW5rCiszMTEzMiA4MmE4Y2EzYzkyOGMwYWRlMzNkOTdiMjExYjAwZDMwZWI4NTk2ZTJjIHJlbGVhc2UyMi1tYWludAorMzExMzMgMWZhNDQ0MTQ5ODU4OWQ1MDE4NTczZjJhNTAyN2QyZWM0NGM2MDc0OCByZWxlYXNlMjItbWFpbnQKKzMxMTM0IDQyYjYxN2ZkOWM2OTIzZDc1NzIyODJiOWMxN2RiMTY4ZWZkYzFlY2MgcmVsZWFzZTIyLW1haW50CiszMTEzNSAyMjU1MWUxZDJjNmU3MGVkNGQ0OGJkM2JlODU5MWViZGU2NDJhMDI4IHJlbGVhc2UyMi1tYWludAorMzExMzYgY2NmYWNhZWMwOTY4OTE5ZWJiZmU4YmQ5OTkzYjA2NjBlMWJkYzc3NiByZWxlYXNlMjItbWFpbnQKKzMxMTM3IGJlYjIwMDhhM2MzMjk1ZDdlNWJmMGEyYWE0ODk1YzJhNTU1Zjg3ZWMgcmVsZWFzZTIyLW1haW50CiszMTEzOCBjOWNjYzlkMGJhOTlhODhkYmU5ZWE0NWQ5MTFhYzRmYzU5NDY1ODRiIHJlbGVhc2UyMi1tYWludAorMzExMzkgMWQ4Yzg2MjM0ZDljMmJkZjA2NDEwMjg4MDhmYjU5NDNmMGI0OTg2ZCByZWxlYXNlMjItbWFpbnQKKzMxMTQwIDA2MDIwNzhiZGNlMTIzYjAyYjAyOWZlNDhjNmNhZTQzZTg0ZTI5NGEgcmVsZWFzZTIyLW1haW50CiszMTE0MSAwNzI5ZjgzOTNiMTYwM2Y3ZTdlMjQ1ZDQzOGZlODFiYmZmMWMzZDkyIHJlbGVhc2UyMi1tYWludAorMzExNDIgNjQ3YzI5MTQ3ZDVkMjdlZTg0YmI0M2ExZjY3NDhmOGI2M2ViMTBlOCByZWxlYXNlMjItbWFpbnQKKzMxMTQzIDgzNzAxZmFiMzJmZTExNzU4OTU4ZjVkNzdhN2EyMWEyNTk1NWU5ZTIgcmVsZWFzZTIyLW1haW50CiszMTE0NCA0NWFkNzdhNDNkODdmNjliYWY0MDJiMDA1YTkyODNjZjhlMDgwYzU2IGxlZ2FjeS10cnVuaworMzExNDUgMmE4MWMxYTg4M2NiYjVjM2VjYTIwMTFmNDdiMTNkM2YyMGRiMDZmNCBsZWdhY3ktdHJ1bmsKKzMxMTQ2IDljZGMyMzNiNzIyNGIwMzdiZGNkNzY3NGI2MDgwYjliMTk0Y2Y4Y2MgbGVnYWN5LXRydW5rCiszMTE0NyA3NGQ5NjA0ZTkzNTMxNmQ3YTE2N2QzZjU3OTMyMjFlZWUxNGE3NTk0IGxlZ2FjeS10cnVuaworMzExNDggNTU4ZDBmM2I2MjU0OGJmNDM2MGY4MzVjY2IyOGIwODUzYzQ0N2UxNCBsZWdhY3ktdHJ1bmsKKzMxMTQ5IGJiZDhhYmFhMGYzMzUxMjgyM2Y2Y2NiNWIyZGZlZTkzOWVjMTM3M2IgbGVnYWN5LXRydW5rCiszMTE1MCAxOWQwYzk5OTU1NWU5MWNiZjc3MTEzYTY3OGUzODYyYmY4OTc2NjEzIGxlZ2FjeS10cnVuaworMzExNTEgNjVmZGJkNzgxY2E5OWFmMTk5ZDhlNWU5MTI1OTk4NTgwODUxMmJiZiBsZWdhY3ktdHJ1bmsKKzMxMTUyIGEyNDUyODMxOGJlOTZjYmEzZmIyMDIxNTQ0NGZlZjEyZjE5YTFmZGIgbGVnYWN5LXRydW5rCiszMTE1MyA4MjAxMDM4YmJmMzBiZDViZDFlNDEyZWM0YjcwZjhmYTk1OGRiNWU1IGxlZ2FjeS10cnVuaworMzExNTQgZWFhZWY1MTZhNjg1M2RlNzI0ODQ3MmM2ZmU2YjQxYWNmYjA5MWZkNiBsZWdhY3ktdHJ1bmsKKzMxMTU1IDQ1OTA2MjIzZWZiMjM2YTExZDBjMmYzNjQyN2YwMTI3OGJmYTRmZjUgbGVnYWN5LXRydW5rCiszMTE1NiA0YzlkMDJjNTY1N2IzNWFiZTg3MDlkYTA1MGQxY2FiZTM4MjQwMTFjIGxlZ2FjeS10cnVuaworMzExNTcgYWZjOWEwOTVhMmQ1NmY4Zjc4OWU4NGJmMDMzNGE0ZTJjZTcwMzM0YyBsZWdhY3ktdHJ1bmsKKzMxMTU4IGY3YjM4MjZkMDEzYTFkZWRiMjEzYjMwMmRkNTk1ODdlYmU5ZTgzMDcgbGVnYWN5LXRydW5rCiszMTE1OSA2NTY3ZjQ4MjllN2VjNGZmMWE1YmZkM2YwYTZiNjNlNmQ3YmRmMDBlIGxlZ2FjeS10cnVuaworMzExNjAgN2JmN2RhYzRkYzQ5NjE0YjkyMDM2ZGUyNzMyMmExNjhiZDE0ZDBjNSBsZWdhY3ktdHJ1bmsKKzMxMTYxIDY0MGU1MmRlZTFhMDNkMmEyMjU4NzFiMDY1MTQ2ZWE0ODYyOTczYzggbGVnYWN5LXRydW5rCiszMTE2MiA0ODAzMzAxN2M3OGYyMDE4Y2FkMjI1NGJiZmY0MzI4YzY2N2FjNGFlIGxlZ2FjeS10cnVuaworMzExNjMgYzQwY2I5YmZjOGU3YzNkZjE2NTg5YmRlMmJlYmZjOWU3YjcxOWYwYiBsZWdhY3ktdHJ1bmsKKzMxMTY0IGU0ZTI2ZmUyODZjMGI4OWMyYmE2MWI5MTJlYzJlNGVlYWM0ZDBhZWYgbGVnYWN5LXRydW5rCiszMTE2NSA5NzRmMTk2YWJiODdiZWNjZWI4NmU0ZDRiMzlhYWViMDM3NzM5YmU4IGxlZ2FjeS10cnVuaworMzExNjYgNjAxNTQ5YzY0MDM5Yzg0YmJlODFlNDYwNDk3YmI5N2UxZjM1OGE2YiBsZWdhY3ktdHJ1bmsKKzMxMTY3IDJjZDRlMGRmZjNhNDMyNzYwYWU5NDIxYWY4MjBlZTE5ZmFiZTI5YzcgbGVnYWN5LXRydW5rCiszMTE2OCA2MjA1ZGEzODNlNGNiNDFiNjg1MDY5OThiM2EyMzAxOGRlMzRjZGNmIGxlZ2FjeS10cnVuaworMzExNjkgMDA0MjZjN2YxNDdkMjAxYTQzMjU2ZGFlZjg3ZDMzNDczNDA0OTFmOCBsZWdhY3ktdHJ1bmsKKzMxMTcwIGRkNzNhMTIxOGY2OWE4OTY0YTBkMmJhNTRjZjU1YTgzY2JjNWY4ODIgbGVnYWN5LXRydW5rCiszMTE3MSA0ZDA0ZjQ1ZmY4YTFlNmM1OGU3MDVlYzliNWRkYzE1ZWMzMWVmYWJlIGxlZ2FjeS10cnVuaworMzExNzIgOTM0YTJiNDk3ZDFkZDJhZGU1MzMwOGU5NDgyMjYxMDk1Njk4ZDUzMCBsZWdhY3ktdHJ1bmsKKzMxMTczIDhhMTQ3YTQxYzNmN2ZhZTBiY2Y1MzMyZTI2ZTdjZjZmYjhjMGQ2NTAgbGVnYWN5LXRydW5rCiszMTE3NCBiNjZhY2JlMjk1NzVjNDVkNWFlZmE2OWFiMzcwNTlkOTliYWZhNDc3IGxlZ2FjeS10cnVuaworMzExNzUgZTk5NjE1ZGU3NjQ3NjNjOTBlMjNlNDBiMWIwNjg5MDg0MTY4ODI4NyBsZWdhY3ktdHJ1bmsKKzMxMTc2IDUyY2U1N2I3OGM3MWE4NjAxMmY4MmUxZmFlZTgyNjljMWFiZTQzNzQgbGVnYWN5LXRydW5rCiszMTE3NyBkYjc4NGQyOWY0ODFlMDViYjdlMjNiYzU1ZThiOTY2ZDQyYTVmMjI2IGxlZ2FjeS10cnVuaworMzExNzggZjYxOTg2MTQwNTAzMGFhYTgyZWU1NGZhNGYwYmU3ODFlMzZiOTg4ZiBsZWdhY3ktdHJ1bmsKKzMxMTc5IGYyNjAzNDNlY2NmMTMyMmNiOTMwNGFkNDRiZDIyMjBjMWNkYjE4N2IgbGVnYWN5LXRydW5rCiszMTE4MCA1OWI0ZWJjMjlkNTMxN2E2YjdmYzFiNjBkMzljM2NhMzcxYjBkYjdhIGxlZ2FjeS10cnVuaworMzExODEgZWQ5MWJmNjAxYjJkZTk4YWYwODRkYzk3NzJjNmVmNTg5OTRkNzcyNCBsZWdhY3ktdHJ1bmsKKzMxMTgyIDEwNmE0NGE0Yjk3NWRiNGYxYjA4NmFmNDVjZDQ3Y2U1MmI2YWE1ZDQgbGVnYWN5LXRydW5rCiszMTE4MyBhOWRkMjE3YTliYjEwMWUwOGIxMjMyNGQ4MzIzNjY1OTY0YmQwMjg0IGxlZ2FjeS10cnVuaworMzExODQgZTExZTk3NmZlZTc4MTJhYjQxMThjNWJmYmFkMzJlMzQ4MDdkNTkyMCBsZWdhY3ktdHJ1bmsKKzMxMTg1IGJhM2VhZmY0OWI3YWUwODlhODhmYzAxMjg2ZjFkYTQxZTY1MTZmZjAgbGVnYWN5LXRydW5rCiszMTE4NiA2NzMxNTAyNmQ2ZDM1OTliNjZjYTU5MTQ3MzFlYmFjODUyMzY0YWYzIGxlZ2FjeS10cnVuaworMzExODcgYjU5NWM0NzM1ZmNjYzZmZDAwM2IzYTg3OGU4OGE0MTUwNTk2OWQ0MSBsZWdhY3ktdHJ1bmsKKzMxMTg4IDBiYmJjYWNjMDVmYjllN2U4ZWU4NDcwZGRjNjMzNWRjY2Q5OGY2N2IgbGVnYWN5LXRydW5rCiszMTE4OSA2YTEzOTQ2NjAyNzA3NDE3MDI1NjZlZDg3NmM1MmEyN2VkZDY4YWJlIGxlZ2FjeS10cnVuaworMzExOTAgMzUyNzhhYWFlNzc1Y2Y5NzFjMjBlYWYyYzU1MDQwNzYzYjU1N2ExMiBsZWdhY3ktdHJ1bmsKKzMxMTkxIDNhNTI4YWEyMjJiNmM5ZDZkZmUyMTNiYmU2YzcxYjU4NThkODhlODEgbGVnYWN5LXRydW5rCiszMTE5MiBkZjM2M2QxYjM4NDI4ODU2ZmI0YjU0OTIzODJmZjNkZDY5Yzg3YTU5IGxlZ2FjeS10cnVuaworMzExOTMgNjUyZGY0NTQ5NzA4NTUyYTMwNmZmNzJiZTc0YmI1ODY2N2UxN2I3MCBsZWdhY3ktdHJ1bmsKKzMxMTk0IGQ1ZWIxMmJjY2QxZTlmNTU0NWEwZDQ2NDAwZDNiNGQ5ODQ0MTE4ODYgbGVnYWN5LXRydW5rCiszMTE5NSA1ZDc4ODhmYmVhMDA0ODRiNzUwMDFjNWU1M2Q4NWUzNDIyYzQyOWM1IGxlZ2FjeS10cnVuaworMzExOTYgZjYyZWMyNDA1ZTlmY2I1NWVmMWRkZDIwOGM1NGY1NDkzOWI3NTg0YSBsZWdhY3ktdHJ1bmsKKzMxMTk3IDhlNWRlNDM1MjliNzU3M2NmYjQ1MGJlODQyM2JjYmNlNDE2MjM4OTIgbGVnYWN5LXRydW5rCiszMTE5OCAzZTk4ZDJlMmQ4NDdmMTZjNDNjMjE1M2UwN2MyMGMyNjRkNTEwNzcyIGxlZ2FjeS10cnVuaworMzExOTkgMjAzMzBlMTMyMTFlYWRmZmU3YjViNDY3MTVkYjE3MmZkZDRhMmQ1NiBsZWdhY3ktdHJ1bmsKKzMxMjAwIDNiMGIzNmNkZDljZDk5ZTc0YWUwNTNhNjNhZjU2ZWY1ZmI2YTRmNjMgcmVsZWFzZTIyLW1haW50CiszMTIwMSBjODk0M2Y4N2M2OGI5OWYyZjE2NWZmYmUyMDdkMTZjMTM4YmYyZTA1IGxlZ2FjeS10cnVuaworMzEyMDIgOTYwODAzZjlmNjk4OTk0ZmEzZDBhYWY0NzA4OTM2NzFkN2JiOWZhNCBsZWdhY3ktdHJ1bmsKKzMxMjAzIGNlM2ZhYWIwNmRlNzUzYTZhOTE0Mzk1NTdmNzc4MTAxODhiMTAwZDQgbGVnYWN5LXRydW5rCiszMTIwNCA4Zjg0NDhmYjU4ZDZmODk2MDc1MmEzNTM5NmVmN2E2ODliNTdkZGE4IGxlZ2FjeS10cnVuaworMzEyMDUgOTVmM2ExY2QwMGUxNjBkODVmNGU4NzM4OGVmNzQzZGVhMWEwNWUyNSBsZWdhY3ktdHJ1bmsKKzMxMjA2IDUxOTlmN2VhNjc0NmYzOTgzMzVhNzkzZTk5OGI5MDg2ODk3MWZmZTkgbGVnYWN5LXRydW5rCiszMTIwNyAyNjE5MTVhNmM2ODUyYzk4NGZiY2YzYjcwNzAzYTYyZTAzYTZkMzg0IGxlZ2FjeS10cnVuaworMzEyMDggZDY5OGM1NjIzZGEwNmY1MWVjNTk3ZGRjNzAwZDgzNWU2MmIyNmJiMiBsZWdhY3ktdHJ1bmsKKzMxMjA5IGIxOWFhYWViNmQ2NDIwMzE2M2FkOWNmOTBkZTYzZjBiZDRmMDE4NTEgbGVnYWN5LXRydW5rCiszMTIxMCBlNTQ1NGZlMWFhZmQwZGNmOWYyZWE2OGJhZWY5NmEzYjhkYmRiZDRhIGxlZ2FjeS10cnVuaworMzEyMTEgNzRhYWJkNDQxOWQ0MGQ2NWJjN2ZmYmVlZDRkNDM5YTI2YWE2N2NhNCBsZWdhY3ktdHJ1bmsKKzMxMjEyIGVkMWQ0ZTc5NzEwOTViZmNjNGExZWM5MzEzNDI2M2NhYWVjNzYxNGYgbGVnYWN5LXRydW5rCiszMTIxMyA5NmZkMDA0YTU4YjBkMzJmZWVhZDhmNjI1OWMwOWI2NDkzNGMzZDlhIGxlZ2FjeS10cnVuaworMzEyMTQgOWU0N2Y5ZWQ0OWY2NDYyMmNiNzg3ZmYxOWY0NzI2Y2RkMmQ0NmE0ZiBsZWdhY3ktdHJ1bmsKKzMxMjE1IDM1OTlmNjU5M2ZlOTBjMGM5OWFhZDY4M2Y2MDljNDkwZTFmYjNhNTAgbGVnYWN5LXRydW5rCiszMTIxNiAyMGI4MDNjZjIxOWQwOTg0ZmU4YTZhOTEzZTNiNWY3MDZlNjA2YTRlIGxlZ2FjeS10cnVuaworMzEyMTcgNGM3YjFiN2Q3ZjMxMTE2Nzg2NjkwZTE4N2M2YmQzYjAzNDZmZWQ0ZiBsZWdhY3ktdHJ1bmsKKzMxMjE4IDBlYzM4OTY4ODZlNjk2YTc4OWYwZmZiOTMzMGQzNjJhMWVlNGRjYmIgbGVnYWN5LXRydW5rCiszMTIxOSA4ZjM3ODM1Y2Y0YTQxMWI0MmYwMWNkZWJjMmZmYjMyNGQwODkyMzQ3IGxlZ2FjeS10cnVuaworMzEyMjAgOWFiOTcxY2QxOTY1NzI0YWYwY2E4ODMzNTZlODQ4YWFlZDkwNTc0MSBsZWdhY3ktdHJ1bmsKKzMxMjIxIDYzZDYzNGVkOTQ1Y2MwMWU4ODcwNGVlZWQ2N2QyNWZhZjBiMTJhYjcgbGVnYWN5LXRydW5rCiszMTIyMiBhYzQ1M2JiMzcwYTJlOWM3MWJhODgzMDQ5ZmU3YmJkNDE4NDVhZmE0IGxlZ2FjeS10cnVuaworMzEyMjMgN2M0ZGRhMGMxNDVmMDQwMWI1NWUwYTFhNmM0NzE2ZDdmYjhkMTJjZSBsZWdhY3ktdHJ1bmsKKzMxMjI0IDFhMzAwZjQ3NTMzMjA1YzA4NjY1ZDg0MTAwYjczYTBhNGZjNmQzY2UgbGVnYWN5LXRydW5rCiszMTIyNSBlYjI4Nzg5NDA5MDU4NjA0ZTQ3Y2JiNmUxYmQ2MmZjNzlkOGJjMTQyIGxlZ2FjeS10cnVuaworMzEyMjYgNDMxNDNkNGRkNmIxZDUxM2IxMmU4OGFiMmNiYTBhMTI5MTI4NWVjMyBsZWdhY3ktdHJ1bmsKKzMxMjI3IDE4NjEzMzVlNzhhYTExNmM3ZDM5ODAyNGZkNGNmNjBlM2Q3NDQ4ZDQgbGVnYWN5LXRydW5rCiszMTIyOCAwZmNhNjVhMDlmMDYyODI4YzVlNTlhODE2ODkzMzk2MThiYzc3Y2UyIGxlZ2FjeS10cnVuaworMzEyMjkgNjE0YWJiYTViNzYyNGZjMzU3Zjg4NTc2NjA5ZGM5MmIxMmI0YThmYiBsZWdhY3ktdHJ1bmsKKzMxMjMwIDM3OTk5ZjY5MjRiNGU1NTMyODgyZmViOWUwY2RlYWMzNmNmMWViM2QgbGVnYWN5LXRydW5rCiszMTIzMSA4NGYyYzQzOGMzZjUyYmExOGVmMzJmOTNmOGJlZjRhZWIzZTY0YTA4IGxlZ2FjeS10cnVuaworMzEyMzIgMDQyOGQ1OTA2OWE5ODQxMjdkZjY3YjJlNzkxZjBhOTYwNDkzM2M1NCBsZWdhY3ktdHJ1bmsKKzMxMjMzIGM4Yzc4MTZkM2EyZGE2ZTMwOTY0NGNiZTAxZjc0M2I1OWJkOTllODggbGVnYWN5LXRydW5rCiszMTIzNCAwZjY3MzFkMTI2ZGViMThjMzdlZDc2OWFmMDVjNDYzNWE0Zjk1Yjc3IGxlZ2FjeS10cnVuaworMzEyMzUgNTM3YmZjZTJiNzMwM2YxYWYxZDYwODdhNTEyNmM3Y2ZhODZmZjZjMCBsZWdhY3ktdHJ1bmsKKzMxMjM2IGUwZmE1MjA2N2RiZWZiODI3M2Y3YjJiOGYxOWNjYWU0M2Y2MzYyOTEgbGVnYWN5LXRydW5rCiszMTIzNyBmODdiNmQxNmJhZTg1YTc5ZmZlMTUwYWMxNjJiZmZjZDEzN2IwZjRlIGxlZ2FjeS10cnVuaworMzEyMzggOWMzYzk5M2U5YjljZjIzMzRhZDIzZGVhNzMzZGYxMDk5ODQwZTE2NSBsZWdhY3ktdHJ1bmsKKzMxMjM5IGU0ZmUxNjhlMzVmMTQzZmJjYTUyZWUwYzk0MWUwMmVkOTlhYTYzMjEgbGVnYWN5LXRydW5rCiszMTI0MCAwMDFjZjc0ZGFjNTAxYTllNjUzZDMzNTcyMGM3YmFiMzg3ZGViYWViIGxlZ2FjeS10cnVuaworMzEyNDEgMTY4NTZjOTUxNGUwNWE4ODQ2ZDRkZDY1NDU2ZWE5N2NhYTdlNThjNyBsZWdhY3ktdHJ1bmsKKzMxMjQyIGFhZGU0YmMxMjVmOGZmMjkyNGU0ZjM1NTliMWM2ODQyYzJmZWRhOWIgbGVnYWN5LXRydW5rCiszMTI0MyA3NjM3NmU1YWYzODhkMDE5MmVhOTRiYTBkMzZiM2I3YzgyZjQzYWQ3IGxlZ2FjeS10cnVuaworMzEyNDQgZTNiNWYzMjFlZWJiMDNmNGJlZTUwNTJlODUxMTY2YTJlYjY3YzE4NiBsZWdhY3ktdHJ1bmsKKzMxMjQ1IDU5MzViODI0M2Q3NGU0ZmYxOGRkMjU0NzlmMGE5YWY0NzZiNzEwMDUgbGVnYWN5LXRydW5rCiszMTI0NiA0MTMxM2QyMGQxZGRlMjY4YWJlMzhjZjNlZDM1MjM5NzExOGRhZTYxIGxlZ2FjeS10cnVuaworMzEyNDcgNTIyZWRkNTkxZDJjZjEzNzViYTQyNzVkMGUzOTUxOTkzZjhlMjIwZiBsZWdhY3ktdHJ1bmsKKzMxMjQ4IDQ3NGNiYmRmMDBjZTdkNjQ0NzhlODA1MDlhZWE3MGE4NzNhNThiNzggbGVnYWN5LXRydW5rCiszMTI0OSAyMTI4M2I2ZWE3ZjFhNmRmYjcwODY1ZjJiMWZmMTI2YTA5ZTQ4MjE4IGxlZ2FjeS10cnVuaworMzEyNTAgMDQzODRmNDI5MGJhZjZlZmJjOGUxOTFkYzJjMTlkMjQyYzA3NDI0NyBsZWdhY3ktdHJ1bmsKKzMxMjUxIGNhZDExODVlZWVmN2MxNjhhZWExYTI5YzUwYjc3ZDgxN2E5MTFjZTkgbGVnYWN5LXRydW5rCiszMTI1MiA3MjY3MjE0ZjA3ODU2YmNlNzQ3MTg2MmM1ZjdmMDgwZWYxMjM2YmNiIGxlZ2FjeS10cnVuaworMzEyNTMgMzk4MmYxMTc2NzllZmI4MzY4Yjk4MmU2MmI3Nzc5NTYzOWU4MWI3MCBsZWdhY3ktdHJ1bmsKKzMxMjU0IGYyZjA2YjZlY2RkNzFiZDc1ZjQ0YTI0ZWMyZjhlOTJjMTk0NGJiYmMgbGVnYWN5LXRydW5rCiszMTI1NSA1ZTMxNTI5ZmRkNGZhZjk4NjFmZDJmMTM5ZjRkYWM1NzA4YzA2ZWY3IGxlZ2FjeS10cnVuaworMzEyNTYgZDUwMjE4N2IyYjA2ZTAwYTdmNWI3YjNlYTA2YjE4NzU5ZTcxYzlhYiBsZWdhY3ktdHJ1bmsKKzMxMjU3IDhkOTJhZjE0NGMxNmVjNzg3NzAzN2FhMzhjYWU0MjEyNDZhNzM3Y2IgbGVnYWN5LXRydW5rCiszMTI1OCAwM2NmYzYzN2MzOTM1ODgyZjIzYzg4N2ZmMDM0MWViYzAxNThmODk2IGxlZ2FjeS10cnVuaworMzEyNTkgYjQ2NmM1ZmI0ZDhlYWJjYTNhZWUwM2MzYjAwZGY3Y2IwOWQ2YzhkYSBsZWdhY3ktdHJ1bmsKKzMxMjYwIGMxZWNkZGUzMmY4NjNjNDhkYzgwNDNjNWY3MTYzMGExYzE3YzBjZTAgbGVnYWN5LXRydW5rCiszMTI2MSBmYTlmOWU1N2U5OGY4NjA4YzI0YWVlOTM2ZTQzOWQ3YThjNDBhY2U1IGxlZ2FjeS10cnVuaworMzEyNjIgZTVlMjQyY2Y0NmIxYzRjNzdhNTI3MDQyYmEyMGU0MGM3N2IxOTI0YSBsZWdhY3ktdHJ1bmsKKzMxMjYzIDdiMmNkODAwYzIyOTZkNDJlY2E0MmY0ZDU0MWM3Y2E2MTIwZDIzMTAgbGVnYWN5LXRydW5rCiszMTI2NCAzMmZiOTRhNmE0ZmU5YmVjY2UzMmVkOTE2YTIxOTk1MDVlYmFhMDBjIGxlZ2FjeS10cnVuaworMzEyNjUgZGI0MTZiZDE4ZDRmNzlmMmY4ZWYwMDExYzM1MjhkNjJhZWVlYzg1MCBsZWdhY3ktdHJ1bmsKKzMxMjY2IDQzNjdmODA1ZGIwOWMzZjY2MDY2YzAyN2I1ZTk2OGUwOTg0MDg5MzIgbGVnYWN5LXRydW5rCiszMTI2NyBkOGM3NjVjMDlkOGMxYThlYTY2Yjk4YzRlM2ExNzZhN2U1OGE2NWYxIGxlZ2FjeS10cnVuaworMzEyNjggY2UzNDBmYjRiNjE0OTUxMmI3ZmRiYmNlZjI1YzM5YmE3M2Q0YTBjMiBsZWdhY3ktdHJ1bmsKKzMxMjY5IDRiOWI4ZGY1NGRlOWFkODU1NDIyNGVhY2Y2NDY3Y2EzZTgxYzUyYTYgbGVnYWN5LXRydW5rCiszMTI3MCBkZjc0MTI3ZTJjOWZkMTUyMTU4OTI5NDUyY2NhMzg4YWEyYmE4OTBkIGxlZ2FjeS10cnVuaworMzEyNzEgOTUwMzY4NWZiNGU4ODA4OTI1MjYxZThlZTZkNjI3MDM4YWJmZmZiOSBsZWdhY3ktdHJ1bmsKKzMxMjcyIGIzMzFlNWU1Y2M0YWJmMzU1ZGVlZTdkZTA5NzUwMDkzNTQ5NzFlZjcgbGVnYWN5LXRydW5rCiszMTI3MyBhYmY5YTkxMmNmY2U5YzViYjgwYTc5NDgwZmJmMGVkMWFhMmJiOTJjIGxlZ2FjeS10cnVuaworMzEyNzQgYzQ5NjM4MzA1YTI4YjBkMjgwNmYyYTQ3NGE5MWJkMmRmOWY0YmM4NyBsZWdhY3ktdHJ1bmsKKzMxMjc1IDg1MzU5MjE3MDkxY2FhYzJiZmI0YmE0MmJhYTc2NjA5NjFkODEyNzEgcmVsZWFzZTIyLW1haW50CiszMTI3NiA5NDFkZTc5MWIxN2FlYjMyN2RmMGQyYzNhNjg2NDRkNTY1ZDhjZDIwIGxlZ2FjeS10cnVuaworMzEyNzcgNTlhZTQxZTA0ZmZiZTdmYzdiODU2NGU0MDc4NWQyMmEyN2YzZTY0NSBsZWdhY3ktdHJ1bmsKKzMxMjc4IDlmOTQwMDliMWFlMGNlNzhhZTI0YjE2ZDI0YTJmYjZhYTdkODcwZDkgbGVnYWN5LXRydW5rCiszMTI3OSA0N2E2OTE1ZDFjMzZiNGIzOTYzZmM5MzQ3ZmQ5MzM2ZDY3ZDNkZjdjIGxlZ2FjeS10cnVuaworMzEyODAgYzdjZjFiNWQ0NzFiN2U3ZjNlMmVmZTQ0NDcwYTNkZTFiNTY5OGU4MyBsZWdhY3ktdHJ1bmsKKzMxMjgxIDc4NTBmYTdmYjZmMWExNDlhODk3MWIzMmZmNzRkZDVkOTA1ODBlM2QgcmVsZWFzZTIyLW1haW50CiszMTI4MiAzMjlhMDA3NzdlMzIwY2FlN2VhODhhMzQwYmY0Njg2YzRjMTdiMWMwIHJlbGVhc2UyMi1tYWludAorMzEyODMgNmIxNzg5YWMyZjk1ODEzZTEyODU5MzQyZTk5M2JjMThiNmNjNGQwOCBsZWdhY3ktdHJ1bmsKKzMxMjg0IDk4YzM0Y2MxY2Y0MDBiNjRlNDhhZjJjYjQ0NDllMjJmY2MzYmI2OWMgbGVnYWN5LXRydW5rCiszMTI4NSAwMzk1NTEyY2UxYjVhYjg5YzFjNjY3NjcwMGNkMjQ1ZjA1ZmVkNDE1IGxlZ2FjeS10cnVuaworMzEyODYgMzhkMDUwNTYxOTVjOWMxODdlNzg2ZDA3ZWQ5NmYwZGRlZDdkNjk2OSByZWxlYXNlMjItbWFpbnQKKzMxMjg3IGE0YmRlOTE1MTE4YzYwNTkzNGVjYWIwYWE1MGQzYWFhMjQ2ZTFjODUgbGVnYWN5LXRydW5rCiszMTI4OCA1OTQ4MjMxNzE2NmU2YTc3MzI0NzNhZmUyMWM2YzkzMWJhZjFhMTE2IGxlZ2FjeS10cnVuaworMzEyODkgYzgxNDhkN2YwYzk4NmUwZjBkZThmNjJkMDk2MDcxM2UzNTdkYzhiOCByZWxlYXNlMjItbWFpbnQKKzMxMjkwIGE4YTY0N2UxOTI3YjU2ZTlkNjc3MjQ2YzVmYmU1YmU1NDIzYmM1NGEgbGVnYWN5LXRydW5rCiszMTI5MSBmNGNkYmE4M2JlNTYwMjhlNjVjZmFjOTM3MGRhYTkzZWZhZmNhZDlmIGxlZ2FjeS10cnVuaworMzEyOTIgZmM4ODE3NGMwYzBhZGRlMzZjYTYzODYxOTQxYWNiNGNkZmIyMTg2YSBsZWdhY3ktdHJ1bmsKKzMxMjkzIGEwMzZhNTE5NzYxMGM3YzkyOWQwYzkwNGY4ZTIwYzJkOWYzNzMzNzkgbGVnYWN5LXRydW5rCiszMTI5NCA3YjUwNDNjMGZmNDc2ODY3ODYwMmVjOTJmMzlkNmY3MzdjZjhkNGYzIGxlZ2FjeS10cnVuaworMzEyOTUgYzVhZDBhMjQ4OWI4Mjc1ZDBhMmQ0ZDAzODMxM2MzZGEzZTViZTZiYSBsZWdhY3ktdHJ1bmsKKzMxMjk2IDgyY2JmMTE3OGU0ZjRmMmE2NjAwZmQ0OWUyOWRiZTI5ZjBmYWNhYzUgbGVnYWN5LXRydW5rCiszMTI5NyAyZDU1YmUzYThlYzM0ZWNiMTkxMzJkNGJhYmYxMDE2MTRmYmJmNzZkIGxlZ2FjeS10cnVuaworMzEyOTggZGM1ZTFkOTE4MDU1ODEzNGQyODZmYjc0ODgyZDg0ZTIxOWZhNjUxNyBsZWdhY3ktdHJ1bmsKKzMxMjk5IDJjMzg5YTA0NDhhNGZiMDhjNjQ1MjZjN2NhM2I4ZWFkNDc3NTJlYTEgbGVnYWN5LXRydW5rCiszMTMwMCA5ZjcxM2M3YjdmZDkxMDBlNTY1Mzg1YzA2M2ZlNzEyZjk2M2I1Yjk5IGxlZ2FjeS10cnVuaworMzEzMDEgMzU2NmI4NGU2NmI5ZTc1NmIyMzA2YWRlNjI2MDJiMWMwMjM4MjI3OCBsZWdhY3ktdHJ1bmsKKzMxMzAyIDI0ZThjN2U1MjFmNTk4ZTVkMGVkNjcwMWE0OWMyMDQ1OGIxMWRmMjggbGVnYWN5LXRydW5rCiszMTMwMyBiZmM1MjQzNzkzMDcxMTg0MTY0NWVmNzJkMDM4YWU4MWEzMTU0Nzk2IGxlZ2FjeS10cnVuaworMzEzMDQgYzE4NDIyNzE2ZmYyNmI4ODEwNTI3MmU5ZWE4OTI4NWUwMTIyMzZlYyBsZWdhY3ktdHJ1bmsKKzMxMzA1IDhiZmYzZDA5NDRiYTc2OWZiZjI3YjRjYWVhZGY4Yjg0MTdmZmUzOGYgbGVnYWN5LXRydW5rCiszMTMwNiA1ZjY5MzFiODM1MmU0MWYwZTFiYjM1NWJmYmZhNDc2ZmEyNGE5NTM5IGxlZ2FjeS10cnVuaworMzEzMDcgMWRjNjM2NjU0M2Q0ODVlNzY0YWY1OWE1MDNhZjMwMTk4NGM0MmY3NCByZWxlYXNlMjItbWFpbnQKKzMxMzA4IGZjNWE2MGE2MWUzMmY1M2VkYzA4ODgzMjIwNWI5ZGU3YWVkODA2NTIgbGVnYWN5LXRydW5rCiszMTMwOSBkZDExMzAyNTNmMTAzYjk2ZDZhYmRmYWRkMWUyMjg3ZTQzNTYwMmM1IGxlZ2FjeS10cnVuaworMzEzMTAgY2MwMWZiNjU0Y2UzZjU1Y2I2ZGUzZTE5NGM5MzkwZGM1N2JlOTgyZCBsZWdhY3ktdHJ1bmsKKzMxMzExIDkwNGYwZTc2OTgyMDkwNWViYzc2NWMyMDRhN2Y1MmZiMjM4MjA0ZWYgbGVnYWN5LXRydW5rCiszMTMxMiBlYmNhZWQ3OTQ4ZTgwZTFjYzk3ZjZiZjUyYWIwYzVlODdkZjYwY2QxIGxlZ2FjeS10cnVuaworMzEzMTMgMjEwMDE4MmY3NGUzOGFjNTVmNDBiNDQzMzdmZmRmNzcxNzM2Yzk5ZSBsZWdhY3ktdHJ1bmsKKzMxMzE0IGMyMGZlY2I1Y2M5YzU2ZTM3ZmU2N2Y4ODk3OGY5MzUyYTFmN2JjYWMgbGVnYWN5LXRydW5rCiszMTMxNSBmMzQ0NDZmYTIxNmU1ZmNjMTM3MmE0NWFjZjU5MjYwNWRiNWQ4ZjdjIGxlZ2FjeS10cnVuaworMzEzMTYgMGJkZmQ2NWJiMTIyNTkzMTA5Yzk3NmIxMGE2YTMwMjZhOTE3OWFlZiBsZWdhY3ktdHJ1bmsKKzMxMzE3IDM5YjFiYWM4OTM2NWY4MjBjZDM5MzgyZjRiOTc3MzNkYTg0NDIzMzEgbGVnYWN5LXRydW5rCiszMTMxOCBmMmI0MzEzNjRmNmZjYmYwZmE0MjIzMmNkMTk0ZGUyNDI4MzA5ZmQyIGxlZ2FjeS10cnVuaworMzEzMTkgYjY1MGE1NGE3NmZkYWRhZWI3ZTE1MzFlNGYyZTJmMjhlNjE0NGJjMyBsZWdhY3ktdHJ1bmsKKzMxMzIwIDlhNjA1NGM2ZDQ2ZmFiNmRiM2JmZjJmOTlkYTc4ZTYxNzc3YWIxMzggbGVnYWN5LXRydW5rCiszMTMyMSBiNTZmMDBlYzgwODMxMjc4N2JlMjJlMmY4YWM1MDQ3MzU1OTQ5ZWU0IGxlZ2FjeS10cnVuaworMzEzMjIgZjA0MDlkNzU0YjkzNzdlZmJjYjlmZTVkYzE2ZTgxNTQ0ZWNhMDM3YSBsZWdhY3ktdHJ1bmsKKzMxMzIzIGQyYjAxYzlkZmYxNjgzNWI5ZWFmODE5OWJkZmEwZWZjOWJmODA5MDIgbGVnYWN5LXRydW5rCiszMTMyNCAyMDQyZTIwNTFkOTc4NDc1NjM3NTc5OWU3YTZjZGIzZTE1MmEyOGQ4IGxlZ2FjeS10cnVuaworMzEzMjUgMDQwMGJhNzhhODk3OWE0Zjg4OTgwOTZlZDQzOGE3NmFiMzkzODFlNiBsZWdhY3ktdHJ1bmsKKzMxMzI2IDYxOTczZDVmNmUyNTNjODk3Yjg5NzYxMDUwZDc3NWRiNGNiMWU5YWQgbGVnYWN5LXRydW5rCiszMTMyNyBlNjIwOTljNjVhM2MzYzFlMzQ5NDAxN2JlMWVhZjJhYjg1ZjBiMjY3IGxlZ2FjeS10cnVuaworMzEzMjggYjA1MzlhNDUwOTE3MjUwY2M2ZjVlMWZiMmI1ZjYyNzc2ZTk3NzJmMyBsZWdhY3ktdHJ1bmsKKzMxMzI5IDM2MTE5NzZjYjE3NGE1Zjk1MzQ5ZGI1YTc2YzE5ZmZkZDYzNzI2NzAgbGVnYWN5LXRydW5rCiszMTMzMCAwYzdlOGMzZjY0MmY2MTVhNTcyYTZjYTQ0NTYyMTA4YmQzYmVkYjgwIGxlZ2FjeS10cnVuaworMzEzMzEgMzcyZTM0ODNkMzI3NTQyODFjNjE3NTBhYjBlYzZmZjk3MDI4ZDllZiBsZWdhY3ktdHJ1bmsKKzMxMzMyIGM3ZGYyMjVlNGU0YTU3NTE4ZDNmMDY3MTM3OTMwYzgwMDNhODI1NjIgbGVnYWN5LXRydW5rCiszMTMzMyA4ZDFiMjcyYzllNzFjMjQyOTRkYmM3NmU3NzgzOTdjODk5OTA2NmU1IGxlZ2FjeS10cnVuaworMzEzMzQgOWVjNDdlNjUxMTdkMzlkYWEzNDM0ZjY5YjZiN2ZiMDVkNWQ4MGU2OSByZWxlYXNlMjItbWFpbnQKKzMxMzM1IGU4ODc4YzhmNTRkZjVkNWUxMWJhN2JkNTA3ZDYzYzcwODIwNjA0MzYgbGVnYWN5LXRydW5rCiszMTMzNiBiOTViOWFiYjliZjM5ZTU3MWU3MzZlMzE2ZTA1NWY4NTlkY2FlOTQ0IGxlZ2FjeS10cnVuaworMzEzMzcgZDJlN2Y0NjhmMjI0ZTgxMmVkNTNmZWY5N2RlYmEyNzEyODY2NDY1MyBsZWdhY3ktdHJ1bmsKKzMxMzM4IDhkNmVlMTU4NjZiMjE2ZDQxYWI5ZjAwYjc2MTgyYmU4YzQxOTFmODIgbGVnYWN5LXRydW5rCiszMTMzOSA1NjYzZTBjODE4NjAyZjE4NDBmYmU1MDU2ZmM5NGQwYzFmZjlkOGFlIGxlZ2FjeS10cnVuaworMzEzNDAgNDIzOTZhNzg2ZjU5MzMyZGMyNGRkNDc2NTZiYjkzZmI5ZDExZTZlNCBsZWdhY3ktdHJ1bmsKKzMxMzQxIGNkMDVhZjcwMWU1ZDY1YmI3MDIxZGJmY2I1ZTI1ZjliY2JlMGVlMDggbGVnYWN5LXRydW5rCiszMTM0MiBmNmM5NWY5MTM4YWQzNzJkOTEyODYzMDQ3Yjk5YmUxZjIxY2M5ZGY3IGxlZ2FjeS10cnVuaworMzEzNDMgNDhkYzRhNTlhNTBlZjg2ZTFhMDMwZDQzNjU5MmY1M2I4MzljNjMzOSBsZWdhY3ktdHJ1bmsKKzMxMzQ0IGNiMWVlYWViNzRhMDY2MDc4OTNhZWVlOGQ0NjM4ZDczMGE1N2YzMDMgbGVnYWN5LXRydW5rCiszMTM0NSBmYWZmYjExZjU0ZThkMGE0Zjg3OTVjNDI5ZDYxMTJiNThkMDQwNGRlIHJlbGVhc2UyMi1tYWludAorMzEzNDYgYmYwODNlMzUxODVmNTQzMGNjMWJlNWRlZTMyN2I5NjE0MzkyNzgwYiBsZWdhY3ktdHJ1bmsKKzMxMzQ3IDU5ZmJhZTMzYTBmOWQ3ZTVkZTdiMjBiYzI5NWVmOTM4ZmFjOGZkZWMgbGVnYWN5LXRydW5rCiszMTM0OCBlZTEwZDdlN2Y4MThjYzQzYmZkN2JjN2NiNDM0N2JmY2Y1M2I5ZGY4IGxlZ2FjeS10cnVuaworMzEzNDkgZmJjNDViZWFmMDM0NGNmZGRjZDMzZTU3YzFhODYxYjU0M2M5ODE5ZiBsZWdhY3ktdHJ1bmsKKzMxMzUwIGI4MDRlZTViZWI0OTIzOWRlODAzMzJhOTMxMWYxYjI2ZjE0MDNkZDUgbGVnYWN5LXRydW5rCiszMTM1MSAxOWFjMTJhYzgwNDE1MzUzYzhmYzJmZGIwYjgzYWIyMTFhMGJjY2M4IGxlZ2FjeS10cnVuaworMzEzNTIgNjUxZDExMjNlZDZlMzcyMmEzYWFmZjAyYTllOWMyNDAxYzk2MTdkMSBsZWdhY3ktdHJ1bmsKKzMxMzUzIGJkZWFjZjdiMTVjOTY2YmI1MTQxNzViMTgwMDcxYTBmNGVlOWY3NGIgbGVnYWN5LXRydW5rCiszMTM1NCAwMTFmNzM0MjU4ZGI5YmJlYjQ3MjBjMTVjNGFlYmI3NmRjMmY4NjFkIGxlZ2FjeS10cnVuaworMzEzNTUgN2RmZmNjNDk4YzQ1ODMxYjZjYmI0MzcwNGE2ZmU4YjkzZTY4ZjdlMSBsZWdhY3ktdHJ1bmsKKzMxMzU2IGMzNzdjNTZlZGZjOGQzNmIwNzdjZDM1MGI3M2VhZWMxNzk2N2IzZjUgbGVnYWN5LXRydW5rCiszMTM1NyA2YmE5NDBjZDk5ZWY5ODMxYzYyMDVhODY2NzE2OTIzM2I1NmU4MDZhIHJlbGVhc2UyMi1tYWludAorMzEzNTggNGEwMmNhNmJkYjZmNGY3Y2NjOWM3YTI0NzczOWNlOTdkYWU2YjA0ZCBsZWdhY3ktdHJ1bmsKKzMxMzU5IGJmOWNhMDg2YjhhYTYyNzA0MmEyNzhkYmE3NTQzYjQ5YmVjYTA3ZDggbGVnYWN5LXRydW5rCiszMTM2MCA2YjU2OTY1NDFiYTRlZjRhOTNlNTgyODRmOGIwMzYxOTdjOTBmNDcyIGxlZ2FjeS10cnVuaworMzEzNjEgN2YxNzFmOWRiOGFmZTQ4NDA1ZjA4YzQyYWQwMzU3NWE5OTIzMTViYSBsZWdhY3ktdHJ1bmsKKzMxMzYyIDUyM2VmZDc3MzI2MWE2NzJhYTlmYmJhYmViZjVjODNmNmU4NTM2YTUgbGVnYWN5LXRydW5rCiszMTM2MyA5NGJkMTFiMTFkZjdkNWZkYjA3NTE4YWE2OTI5NzdhMTA5OTUyZGQyIGxlZ2FjeS10cnVuaworMzEzNjQgNWQyZDI0YTczODI1OTJkMDEzZmQ5ZmEyNTczYWYwNWJlY2RhMjY4MyBsZWdhY3ktdHJ1bmsKKzMxMzY1IDIyMWVhZjc4MTRmNDRiNjI5MDYwYmIyYmRiMWEzMmJjYTQ4ZTYwMzQgbGVnYWN5LXRydW5rCiszMTM2NiAxMDI1OTEyMmJmNWYyZDEzOWFlNjc3NDk3Yzk3NTE5NjBkZjJiOTNjIGxlZ2FjeS10cnVuaworMzEzNjcgYjUxOTcwYmEyMTgwNjMzMDk0NTI5NjJiZDZhYWM1YzVhOWRjYTAxYyBsZWdhY3ktdHJ1bmsKKzMxMzY4IDUwMTczZWExZmQ0NDA3MTZhOTAwMjg1NmQ5OTE0ZDQ3N2YwZGQ3NDYgbGVnYWN5LXRydW5rCiszMTM2OSAxNWIwMzE3NDgxMTZjMzY4YzViZGIzMGMzNjdjMTcwYzljOGUyODAyIGxlZ2FjeS10cnVuaworMzEzNzAgMzE2MGQzMDQxNTIxOTRjZTA4N2Q4YzIxMjk2OWViNDAzOTBmMjU5MiBsZWdhY3ktdHJ1bmsKKzMxMzcxIDFjMTI5OWJjMzNkNjA3Mjc2Y2IzMjQ5ZjY0ODFiZjFjYzQ4ODk3NjkgbGVnYWN5LXRydW5rCiszMTM3MiAyM2Y2YjBkMDFiYzZhZDQzNGNiNjA5OGQ5ZTVkZTMyYTZkY2E2ZWFhIGxlZ2FjeS10cnVuaworMzEzNzMgZTRkYmYwZjAwOTViZTg2Y2YzNTFmNzRiYTFkZDY0ZTc2NjljYTMyYyBsZWdhY3ktdHJ1bmsKKzMxMzc0IGRhYTQ0OTVjZjYxYWIxNGM0NTg2M2NhYzgyZjk0NjgyMzBiOWZmMTkgbGVnYWN5LXRydW5rCiszMTM3NSBlOWQ3MTAyZjgyNzgwZmZiZTAyMjk0YTFjNDg5NjJiMWM2MTlhODEwIGxlZ2FjeS10cnVuaworMzEzNzYgZTBkYTQ1NzdhYWE2MjQxNTk2N2I1NmQyNDgzODRhOGMzNmZlZTZlNSBsZWdhY3ktdHJ1bmsKKzMxMzc3IGNiMmMzZmJiYTcyZWU3NmJmZWUxNmM1MDVjZGM5YmI4Zjc5ZTY4MWQgbGVnYWN5LXRydW5rCiszMTM3OCAzZWIwMzc2ZTkzZTg0MjA2NTBiNDMzMGNiNDM0ZGU5NWYxZDJiMmM5IHJlbGVhc2UyMi1tYWludAorMzEzNzkgYzVkZDA3N2RlMGZjNjQ2YTdlMTdkZDMyNzE5MzI5ODY5N2EyMzI0ZiBsZWdhY3ktdHJ1bmsKKzMxMzgwIDdhMjBiYmRiZmYzNjgyZjdmNjY1M2Q1Yjk3MDI3NTEzODU0MTkzMjUgbGVnYWN5LXRydW5rCiszMTM4MSA0Yjc1YTBiNzY4NTcxOWJmOGIzZTEzMjQ0Zjk3ZGE1OWM5MDI2ZjgxIGxlZ2FjeS10cnVuaworMzEzODIgNTYyMGIwNzg2MjcxMTliNjliNmQwMzRmODc1YzUyZjk1ZWMzMmNkMiBsZWdhY3ktdHJ1bmsKKzMxMzgzIDgxYWZjYTc0N2NhYTVjMTg2ZWQwMTg3OWU2MjA3OWI4MjM1Zjk2OTIgbGVnYWN5LXRydW5rCiszMTM4NCAwMTYwZmZjYjE5ZTMzN2JmMTNiODI5YzUyNzExYmVmZDJhZDMyZmVjIGxlZ2FjeS10cnVuaworMzEzODUgY2QxMGZhNzIxYTUxMmFjOGIzODJlMGI3ZTNjMzM3NzRlNmI0MGU0NCBsZWdhY3ktdHJ1bmsKKzMxMzg2IGE4NzgwNDc5ZDRlMDk3N2MyMjhlYjdmOGM3ODI2OTU2OWU4ZWVhZGYgbGVnYWN5LXRydW5rCiszMTM4NyA5NDUzZDhjZGQwMWU4ZjdjMDhiNTA1MzZhY2IwODlmY2I2ZDNmMTgyIGxlZ2FjeS10cnVuaworMzEzODggZTdjZDA4NjFjMjczYjU2MjY0Y2I3Y2EyNWU3ZWNjM2Q2MzJjZGM0ZSBsZWdhY3ktdHJ1bmsKKzMxMzg5IDM4NzQ2MzM3YWU2ZTA4ZTE1Mzg2YzU0NjMyZmY5YjM4MzZlYTNkMjAgbGVnYWN5LXRydW5rCiszMTM5MCBmODQ0MGJiOGVkZTVkMTlmNDlmYzJmNmZlYWM1ZWFmZjkyM2I3ODJkIGxlZ2FjeS10cnVuaworMzEzOTEgODNiYjZjOWRkNzhjMGM2M2JjNTExZDk0MDkwNmRhZWExM2Y5ZjUwNSBsZWdhY3ktdHJ1bmsKKzMxMzkyIGQxOTY2MWUxOThmNzQ3MmI2MDM2MGVkZWI0NWZlOGJlNzM3OTJlM2QgbGVnYWN5LXRydW5rCiszMTM5MyBiNGViMzQzNzJiZGI1ZTcxMmM3YjY0OGYwMzhjYWQyMGZlZDZiNzRhIGxlZ2FjeS10cnVuaworMzEzOTQgNjU0OTQ0NjlhZDNlZWZkZTI0ZGJjNjJjZmQyMjJiNzVmNjU3NDU2OSBsZWdhY3ktdHJ1bmsKKzMxMzk1IGJiYmJhMGVlNjFmYjZmMmY2MDg0NjYzODRhYTliYWU4Mzk5ZmQ2YzAgbGVnYWN5LXRydW5rCiszMTM5NiBlNmNmOTU1N2RlNDJhODk5YzlmOWFiNTQ3NmRmMzczMmZjMGRlODlhIHJlbGVhc2UyMi1tYWludAorMzEzOTcgYTUyMTM3Yjg4ZWIzY2Y2NGQ5YjY1ZmQxMGNiNWNjZDljM2U3YWE1NSBsZWdhY3ktdHJ1bmsKKzMxMzk4IDg3MGNmMTRhZGQyYWRiYzcwNmE0OWQ0N2IzNTdhZWZlMGQ5YTdmY2YgbGVnYWN5LXRydW5rCiszMTM5OSBhOWM5NmJiNDY5NTNiZGU4YjE0ZDdkMzI4YzU2MmVkOTBhOTBlYzkwIGxlZ2FjeS10cnVuaworMzE0MDAgMTAwZmI2ODRjZjNlNWY1MzQzY2EwYjA0YjY0MWNjZjUzMGVlNmUyZiBsZWdhY3ktdHJ1bmsKKzMxNDAxIDExZTYxMjNkZTZmZWQ2ZmY5MDY1ZmFlZDliNzBhNDg5YWNmZmZhYTIgbGVnYWN5LXRydW5rCiszMTQwMiA4OGE0MmE3YzIzOGE2NGU3OTAyNWVjY2RmNGU1OGExODE4ZWM0N2FlIGxlZ2FjeS10cnVuaworMzE0MDMgNmFmNzgwZTA4NjJkMDA5YzY4MGFlMDg5NDA0NWQ2OTljNTkxMzIwNyBsZWdhY3ktdHJ1bmsKKzMxNDA0IGFiZGVlYjgxOGE5YTA3YzQxMzU2MGUxNTM5YzQ2MzhmNmI5YjNiYWMgbGVnYWN5LXRydW5rCiszMTQwNSA4Nzg5ZTk4MjJhYTRjOTcxZGYxZjhlYWM2M2ExMjdmNDM2MTE5YWNmIGxlZ2FjeS10cnVuaworMzE0MDYgOGE2YzQ1OTEwZWM5MDhkNTc4MzY0OTZiZDEzYTdjODhlOGU3Y2NlNiByZWxlYXNlMjEtbWFpbnQKKzMxNDA3IGJlNzY4M2E2ZjUyMWM1YTZkMDI4M2M1Zjc0ZjEzNjQ1N2EyZWI0YTEgbGVnYWN5LXRydW5rCiszMTQwOCA4ODRmYjU1OGYyYjkxZDBiZDAyMTY3ZmEzYWFkYjY2Y2FjYzg3NzBlIGxlZ2FjeS10cnVuaworMzE0MDkgNWZlZDExNDJmZDM0YjkwNjZhNDZmMTM3Nzk5MTY3ODE0MWY0YjliYyBsZWdhY3ktdHJ1bmsKKzMxNDEwIDE0OGQ4YzBiOTY0NzIzMzlhNWIyODc5MWFmNDhkZWM4NmI4MjMwNjEgbGVnYWN5LXRydW5rCiszMTQxMSA0NjY1OTY3NWQ3Zjc5MjA5Y2ZkZTQ2MGY1NWFhOTEyMmVjMDJjNWFkIGxlZ2FjeS10cnVuaworMzE0MTIgNTIwYThjMGM5YTI1ZWM4YjcxZDM3YTQ1Y2QwOTAyZmQ2NjQxZWY2MSBsZWdhY3ktdHJ1bmsKKzMxNDEzIDIwOTRlMTk5ZmQ1NTYzMWYwYzYyZjEwMDdjNTE4NjQzNGU1MjNkOWUgbGVnYWN5LXRydW5rCiszMTQxNCBlYWNmOTc3NTkwMzhjMzU5MmQ4MGNlOGNkYjAzMzQwZmE1NjY3ZWMyIGxlZ2FjeS10cnVuaworMzE0MTUgMjA2YzVlM2I1YmU3NWIxOWNlZWNmZmVkYTY5YmZkMmQ5YmI0MWNlMiBsZWdhY3ktdHJ1bmsKKzMxNDE2IGNlZGY5ZWZhNjhmODE0ZjM4YTMxMjc5NTVhMzcyOWQzMDk1NDE0NzMgbGVnYWN5LXRydW5rCiszMTQxNyAzMWU4NTgxYmNmMjU5Mzc4ZTk1YWYyNjg5ZjQwNTJlNzQ5OGNjODI3IGxlZ2FjeS10cnVuaworMzE0MTggNTdkMGJhZDczYzhlNWEyNGJjZjE1NDFlYTBmMjYwYjIyZTFmMDQyNCByZWxlYXNlMjItbWFpbnQKKzMxNDE5IGU3ZDU5ZGI2ODM5YTcxOWFhNWY3NGFlYjQ5YWQ5ZmU0MjAyYzg0Y2QgbGVnYWN5LXRydW5rCiszMTQyMCA1YWVlMWMyNzI5MzhkNTA1MDNiMDg0ZWM0ZDM4MmVkNTMzMDRiOGMxIHJlbGVhc2UyMi1tYWludAorMzE0MjEgZDhiMDYwMTJiMzgxNWYyYTljZjBiNGU4Nzc0MDRkOWRlODliZjQwNSBsZWdhY3ktdHJ1bmsKKzMxNDIyIGE3NTkwNTdlY2YxYjMyMDU3MDUwOGM2Zjk5YmE3ZTVlOTFiZmNiYjcgbGVnYWN5LXRydW5rCiszMTQyMyA2NmZhMjQ3NzdmMGFlZmQ4YzRkNzhjZTkwNDNhM2VjYjExYmI1ZDgwIGxlZ2FjeS10cnVuaworMzE0MjQgNzQyOGMxMmY1MDNmNmQ5NjljZmQxYzI4YjM5ZTM5OGQxNDNmMmEzNiBsZWdhY3ktdHJ1bmsKKzMxNDI1IDRlMzFlNDA4Njg0OThhOGJhYjljNGE4ZTgxNWU4OTM4YzhlOTc4ZDMgbGVnYWN5LXRydW5rCiszMTQyNiBjZjFlZmNhODJiMTgzN2ZiMGMzYjU5NzgwMWUzY2NlMDAzZjUyZmQ0IGxlZ2FjeS10cnVuaworMzE0MjcgYzE2M2Y5NWIzMDBjNjQ5ZjkwNTcxOGFhYjg2ODk2Y2E3Y2E2NjVkNCBsZWdhY3ktdHJ1bmsKKzMxNDI4IGQwZjRmM2NkNGZlNDFjODU3NTJlYTlmMDI4NTk4NzRhYjNmNDUxZTAgbGVnYWN5LXRydW5rCiszMTQyOSAxOTdkNjRkYzA0ZGMyNDZmNDg3MGE0ODRmZjQxOTc1MWEyNzVjZmM3IGxlZ2FjeS10cnVuaworMzE0MzAgNTVhZGYwOGEyMTNhMmQ4NDYxZjE3ZjdhMmJmYmRjMTE2Mzc3NTIyOCBsZWdhY3ktdHJ1bmsKKzMxNDMxIDgxYjJiY2JmZTM5YmI2MDA4M2JkZDg3ZjE4NDkyMTk2Y2VhMjUxNWUgbGVnYWN5LXRydW5rCiszMTQzMiBlNTgyMGExNTBkODdmZTg0MzRlYzgwZWRkNDBiODM0ZmM0NzA1ZmRjIGxlZ2FjeS10cnVuaworMzE0MzMgOWJkYWNjZDhhOTA4YzIzMDIxNTAwNjAyMmM5Njg5NDM3MjNkODNmMSBsZWdhY3ktdHJ1bmsKKzMxNDM0IDIzM2VkNmNjOGUxNGE3MjRlYzZmOTdjN2M4ZTlkNzhlMzAxNWFkYTggbGVnYWN5LXRydW5rCiszMTQzNSBhNjgyY2VjNmI4ODBhNDk3NDc5MWNkMDBmZTBmMTJhNmZhNzFkNzQzIGxlZ2FjeS10cnVuaworMzE0MzYgM2UxNjlkMjk0Mzk1YjgxZDRhODA4ZjA3MzBlZjk2ZjI1OTMyMzJjNiBsZWdhY3ktdHJ1bmsKKzMxNDM3IDE3NDc0OWY1YjMyZmFhMTg2MzNiNjY0Nzg4MmRlM2QyZGNkNzRhYzUgYXN0LWJyYW5jaAorMzE0MzggNDdiOGNhYmFiN2IxMDNmZWNiNTk0ZDhjYzdkM2JmOTdhM2U5MjEzMyBsZWdhY3ktdHJ1bmsKKzMxNDM5IDliNDIzMjBmMWUwZmIwNDg3OWFjMGZjNTY4Njg4NmYzYjhlMzA4M2QgbGVnYWN5LXRydW5rCiszMTQ0MCBiMGRjYTkyYzI5OWE1ZTk2M2U0YTFlYjMwYmE0ZDUyY2IwOTZjZTNkIGxlZ2FjeS10cnVuaworMzE0NDEgOTViNzUwNDQ2YmI5OWQ0YWQxYTAzZmMzMTEzMTIwMWRmYzJmZjAyZiBsZWdhY3ktdHJ1bmsKKzMxNDQyIGM1ZWJhY2JiYTBiZWMwNTkzMWE4NzY3YTg2ZWYzYjkyMjBmMzliNWUgbGVnYWN5LXRydW5rCiszMTQ0MyBjZGIxYWJjMWI0MDkyOWI4MDFhMTkwNDkyYmRmYWM2OGMyZjU2ZWYzIGxlZ2FjeS10cnVuaworMzE0NDQgYzdkN2YzNTBlOTZjNDVhOTY4YTVmNGE4NzA5OTFiNTg0Nzc1ZjdhNiBsZWdhY3ktdHJ1bmsKKzMxNDQ1IGE2ZGZhYmYzYjkyYmQ3YTM1NWU4NWExMDcwODBmMjA2ODdhYzk4ZjAgbGVnYWN5LXRydW5rCiszMTQ0NiA5M2Q0NDg3MGU4YjU4YTFlY2QxMjNkNmFhOWJkOWM5NGNlOTE4ZDIwIGxlZ2FjeS10cnVuaworMzE0NDcgYzM0NmQwOTU3OTFkNzg4ODU3ZDYwZjRhNWQ4MTlmMGYyOTRmMzJhOSBsZWdhY3ktdHJ1bmsKKzMxNDQ4IGJlMzcxZmZjNGNkMDdhMWFlNTExM2E3ZWM1NTA1ZDhmYjlkYjBlOTYgbGVnYWN5LXRydW5rCiszMTQ0OSA0YjVjMmUwMjVjNWVmNWY4OTJkZjdlZDhkYmI0YTQzMmFmNDQ3YjU5IGxlZ2FjeS10cnVuaworMzE0NTAgOGU3NDMyY2RmN2Q4ZmM2NTRhY2JjOWE0MTYwZjgxMTYwNzYxNTE3MCBsZWdhY3ktdHJ1bmsKKzMxNDUxIDI3NTliMDQ4ZGE5YjZmNDA5ZGMxOWMwNDNjM2ZkODQzYmI1OTAzNTQgcmVsZWFzZTIyLW1haW50CiszMTQ1MiBlZmM0NjU4MTBlMWVkYWM5ZmYxMWFhODI5YzllMmJjMmU1ODMwOTllIGxlZ2FjeS10cnVuaworMzE0NTMgZWMxMDUyZWY3M2JhODljNDczYTQ3YWQzMjkzNmI5ZmMwNGFkN2JkMiBsZWdhY3ktdHJ1bmsKKzMxNDU0IDMwMThmMzFmNjgzMDkyM2I5MDhjZmNjZWYxODUzNjY2NTVjMzU1ZTMgbGVnYWN5LXRydW5rCiszMTQ1NSAyYzRhYjFkYTZlYjQ3ZWExOGNhNjRmNmRiODgxNjI3MTFhYzk5MGYwIGxlZ2FjeS10cnVuaworMzE0NTYgYmVkYWNhOTg1M2Y5MDRjYjNiOWI0ODEzNzhmZDQ2Y2M5MzRiNDBiZCBsZWdhY3ktdHJ1bmsKKzMxNDU3IDg0ZDMwOWI2NzZmYTdiNzcxMjhiNDlhMmNhMDAzZDFlMWQyMDI3NDUgbGVnYWN5LXRydW5rCiszMTQ1OCBlMzFiMzk5MzBhMzEyODM0ZWNkYmM4NzM1ZmQ1MDQyZjcxZmQ2YjRhIGxlZ2FjeS10cnVuaworMzE0NTkgM2RhMzE3NzhlY2Q3MjRmOGExNDBmZTc3NDZkNDQzZDFmNWEzYTIyMiBsZWdhY3ktdHJ1bmsKKzMxNDYwIDg1MGMwZGExMDFiNjNlYmJlYmM0NmEyY2U4NzRkNGU4NzFlZTNmYmIgbGVnYWN5LXRydW5rCiszMTQ2MSAyZDUwMDQ5YmQyMWRmN2NhYTExZWMyYjFkNTA1MzlkNzk5NmU5Y2NjIGxlZ2FjeS10cnVuaworMzE0NjIgNzBlMjllZjlmYTYyZjAxZDRmM2IzZjc5MmU3NWM0MGViNTc5OWIxNyBhc3QtYnJhbmNoCiszMTQ2MyBhYzY4M2FjNjc1OWFmY2ZmNTQzODRhNDcxNzkyY2ZhMDMwNzNmMGExIGxlZ2FjeS10cnVuaworMzE0NjQgNDRmM2UzMTU5MjliOWU0ZDlmZGYzM2RmOWFhOWZjMzdkMjJkZmFkMiBsZWdhY3ktdHJ1bmsKKzMxNDY1IGY2N2FiNmI2NjQ1NDBiNDJkNzBhYWQwZjRmZWExNzAxYmZhZDI2MGQgbGVnYWN5LXRydW5rCiszMTQ2NiA4NmI1MDZkYmVhMTgwMzJmZjFjYzEwZTU4Y2Y4MGE1MDg4NTA0YmNhIGxlZ2FjeS10cnVuaworMzE0NjcgMWFmYWZlZDlmYTc3NTViYzM4NjU0M2RlNzA4ZWY4Mjk3ZGYzM2ExYSBsZWdhY3ktdHJ1bmsKKzMxNDY4IDhjMjExY2NkZTJiNGI0ZDhjNTViZTM2NGE0ZjYwYWZkN2ZhOTcyMmQgbGVnYWN5LXRydW5rCiszMTQ2OSBjOTQwMWEzNmJhZTcxNGYwY2Q1ZjE0MWNkMTdmNDY3MzI2ZWE1ODdlIGxlZ2FjeS10cnVuaworMzE0NzAgOGM2Yzc5NzcyN2E5MzVmYjA1Nzk1MzFjZWMzOTBkZmY1Yzk1YWE5YiBsZWdhY3ktdHJ1bmsKKzMxNDcxIDFiZDQ4NTcxNzU2NDYyNjBiOWE0NTE3YTc3MjYxMDE2YjA0MzU4ZTAgbGVnYWN5LXRydW5rCiszMTQ3MiAxNDQ1MWRkM2FjYjA0ZDFhZGQ4MTFhYzE2ZDRjMDY2YmRhZjJjZmY2IGxlZ2FjeS10cnVuaworMzE0NzMgOTI1NWZiZGU0M2YzNjJkMWMwNGYzNGRlNDYzZWI3YTcyZjBmMTA5NCBsZWdhY3ktdHJ1bmsKKzMxNDc0IDNiMzBmNjYzNjJiZTAwNTg3OTQ0YWU5NjljNjkyYjBmYWMxZTI2NTQgbGVnYWN5LXRydW5rCiszMTQ3NSBhNjk2MmY1MmYyMzk4MWE0YzE4OWM5NDNiMzhmODQwYjk4YTAxNzhlIGxlZ2FjeS10cnVuaworMzE0NzYgYjU1NjBhZTRkOTcxZGUwNTUzMzJlYjc0Y2YwZmNlMGI2ZjkxNGQ4ZSBsZWdhY3ktdHJ1bmsKKzMxNDc3IGRhZTc5ZDc4MzIwNTc5NjA2YzVmZGNjM2IyM2MyNTlhNGM1YzIyNzYgbGVnYWN5LXRydW5rCiszMTQ3OCAwZjAxOGRmOTc0ZGJiOWM4MTEzOTg4NWZmMWUwMTVjNWJjZGJhNzY4IGxlZ2FjeS10cnVuaworMzE0NzkgZGIxZDQ1ODRhNWUxYzExNWNiMDgyYTI1ZmM5MTdjZTQ4NjdkNzk1NyBsZWdhY3ktdHJ1bmsKKzMxNDgwIGI0ZWViMGJiZGQ0OGI4Y2I0NWI3ZDE0M2YxZDI3YzdkZTNmYWE3M2EgbGVnYWN5LXRydW5rCiszMTQ4MSA0N2E3NjRlNDNlOTAxODUzYmZlOGYzNDYwNDZiM2E1OGJkZTBkZWU4IGxlZ2FjeS10cnVuaworMzE0ODIgYjU0MGU2MDhiYjhhNmJjYjE4NDYwY2U2MTVkNjY0NzZhZjdhMTIyNCBsZWdhY3ktdHJ1bmsKKzMxNDgzIGFhODhhZWYzYWIwZWVhODQwMzczMzFjYWQ4YjcyNjczN2JlYThkNDAgbGVnYWN5LXRydW5rCiszMTQ4NCAxZTc2YWUzYzExNTRkNmVmMWFmYmNhMjY4NzJhMWIzMGVmNjk4MWE1IGxlZ2FjeS10cnVuaworMzE0ODUgZjMxMDg5NDEwN2NiMTk1M2ExYmQ1YTc3OWJlZTZkYjUyN2JmYTk2YiBsZWdhY3ktdHJ1bmsKKzMxNDg2IGYzMzEwZGNlZjNmOGI1ZTA4OWY2N2M0M2ZhNzQ3MWU3MDJiYWRiMTYgbGVnYWN5LXRydW5rCiszMTQ4NyA3MGUxOTZhZjQ3NmQ0OGVlYzM1MWZmNjEwYjAzNWYyYjkwZjk0NTlkIGxlZ2FjeS10cnVuaworMzE0ODggOTFmYzk2MzdlNTZhMDljMjAzMGQ1NTFjZmZlZWYwMzYyMTEwMTBiZSBsZWdhY3ktdHJ1bmsKKzMxNDg5IGUwN2IyMWVhM2M0NWRkZjQ0OTMwZWZlOTFhMDgxNjI4ZDczNjAxZDQgbGVnYWN5LXRydW5rCiszMTQ5MCBjYzRhZDlhZmEyMWQzMzg4MGVlMmQyMjMyY2NlZjViYjE2ZWQ0YjVjIGxlZ2FjeS10cnVuaworMzE0OTEgY2IzZjE4OTA4Y2ViZWUwNWI5YzkxODQyMDBmOTBlZTU2NDFhNWYxMCBsZWdhY3ktdHJ1bmsKKzMxNDkyIGFjMTA3MjlmMDkzMmQwOWFiOTc4YjkzZDMzNzgwMWZlZWQ1MzBjYTcgbGVnYWN5LXRydW5rCiszMTQ5MyBlMjczNDJhNjQxNzM3ZjdlMDA0NjgxN2YxZTcyZGM5NGFkMGJmOThjIGxlZ2FjeS10cnVuaworMzE0OTQgMjI2NDYzNDQ1Njk3MjAzYTI3NTAzNWJkMDZiMzI5NmU4Y2MwODg2ZSBsZWdhY3ktdHJ1bmsKKzMxNDk1IDNiYWFiZDAyN2NjNGQ0MTIwZThlMTI3MGI3NTAwMzJmZTYzM2E3OGUgbGVnYWN5LXRydW5rCiszMTQ5NiA4ZGNjNTIwZDNhMjk2N2EyYmJjNTYxNjFmNmIyYzZkMjVjOGRjYTkxIGxlZ2FjeS10cnVuaworMzE0OTcgYjI4ZDRmZGU5ZTlmYjhmM2M4YjkwY2U5M2Q4ODc5MzU0YmYyZTBjOCBsZWdhY3ktdHJ1bmsKKzMxNDk4IDQzMzdhODk5ZmQxMzI0N2YzMjQyMWU0MTM5MTJiNTZkMWE1ZTNjMmYgcmVsZWFzZTIyLW1haW50CiszMTQ5OSA0N2M5NDIxMzU4ZGQwNDdkMjljMzMyMDc1MzhiMGM4NjY1MWYxNDVhIHJlbGVhc2UyMi1tYWludAorMzE1MDAgNGM4NWRlMjQ3ZWVkYjk3ZjQ0Yzk0OWZmOGQzODZjNjRlMjBlYzBhYyBsZWdhY3ktdHJ1bmsKKzMxNTAxIGUwYThjMzExNTAwNWUxYzMzOWU5MzZhNjkwMGEyN2FjZDc1ZGUzZWIgbGVnYWN5LXRydW5rCiszMTUwMiAyZTBhYTY4ZDQzNGZjYzQwNmFkYTlmZjVhMzk4YTc4NjUyYWRiMGE4IGxlZ2FjeS10cnVuaworMzE1MDMgNTNjODAyOTI3MjAyZTg0Mjc1Mzg0NDZhNDU3OTMxZWU1M2Q1MDI0MCBsZWdhY3ktdHJ1bmsKKzMxNTA0IDhmYzkxZjUwYjg2MTUwNjVkNmZjY2VlOGZlODMxOGRmYjdkODk5MzggbGVnYWN5LXRydW5rCiszMTUwNSBkMGQyOWRmMmI2MzkwMDUzZDViM2RiNDk1OTk3MDM1MjUyNGVhNWFlIGxlZ2FjeS10cnVuaworMzE1MDYgY2M5NWJiNzg3MGRjNTQ3YzBjYzhlODM1ZmQ3NDE4ZTY3Zjc5MWEzNSBsZWdhY3ktdHJ1bmsKKzMxNTA3IGQ1ZWEyYjY3YjVmNDQzZjNjNjU3NWZjYmRmYzhhNjAyNzQ3NGViYTEgbGVnYWN5LXRydW5rCiszMTUwOCAwZmUzMjFlNzhhZDMxYTFiYWFiZDk2NWQ1NTc5MTYxNzI4N2E2MzQwIGxlZ2FjeS10cnVuaworMzE1MDkgNGI5OWE3MDFkZWZlMGViNzBiNjMxOTg4MTBhNzYwNDI1MWJjYjBjNCBsZWdhY3ktdHJ1bmsKKzMxNTEwIDk2MzI3ZWM3NmQ5ZTAyYjg0MzExNThkMjQ2MWMxOGNjM2U0ZmQ4YWYgbGVnYWN5LXRydW5rCiszMTUxMSBlMDFkNWRiYjY2YTQ1OTAxMWUxNGNmYzgyYjQ3MDMwYzM5Mjc2MDllIGxlZ2FjeS10cnVuaworMzE1MTIgZWIyYTk4NGQzNzQ3M2VjZGU3MzVkMjViYmU5NjY4YWI2MzI0YTFiYSBsZWdhY3ktdHJ1bmsKKzMxNTEzIDM4N2E0MTIyY2JkMWU2NmMyZGJjYzVjZTUzMTllYjZlM2I2YmMyNGMgbGVnYWN5LXRydW5rCiszMTUxNCA5ZTBmMjI0MjI3N2JmYzFmYzQwMmYxNDYwMmI0YTY3N2FkZjExMGFlIHIyM2EyLWJyYW5jaAorMzE1MTYgY2VmN2M5NWU3NDhjMWNjNjhlOTRiOWFjYjMyNTQ5ZGZhOTM5MmZjYSByMjNhMi1icmFuY2gKKzMxNTE3IDc2NTAxOTc1OGU5NTEwMmEyYmFhMWNiMjJhMDJiYzRkODliOTkxNjQgcjIzYTItYnJhbmNoCiszMTUxNyA3MjFiNmYxODFmY2I5YTk0MjBiY2E4OGQ3YzBmNWY4NTQ3NDgyM2MxIHIyM2EyLWJyYW5jaAorMzE1MTkgYzRiOTE5ZmEwYmUzZWI5NGY3M2M3NDhiNjhkYWE1YmRkZjk2ZjU5ZiBsZWdhY3ktdHJ1bmsKKzMxNTIwIDQ4MDlmYjBlODY2MDE4ODRmOGYzZTBjYzc1ODZjODRiZDU3ZTBiZDIgbGVnYWN5LXRydW5rCiszMTUyMSBmNTk4NzA5NzYxNDY4NjBiYWJjNWQzNjQ4NjVlNmQ3ZGNmYmYxNDQ4IGxlZ2FjeS10cnVuaworMzE1MjIgNjU4NjAyMTI0ZGY1MjgyM2E2NTkyYTZkNjU4ZGFlZjUwNmExYWI3ZSBsZWdhY3ktdHJ1bmsKKzMxNTIzIDJjNzUxOTM2ZjY5NzY3YTdhZjQzNDlkMWRjZmY3MjUzZGFlOWVlN2YgbGVnYWN5LXRydW5rCiszMTUyNCBiMjZmNTc1ODQxNGEwZjEzNTA4ZjBiYTQ5YWViM2U3MjliNTczMjkwIGxlZ2FjeS10cnVuaworMzE1MjUgZTdiMjZjM2YzNTZmNTdkMzU5YzU1MDkzZjY5MmY4YTQ2Nzc0MjYxZSBsZWdhY3ktdHJ1bmsKKzMxNTI2IDBiM2RiMGVkYjE1MWVjMDA3ZmNkM2ZiNTI0YmZkNzY0Y2Y0ODIyNmEgbGVnYWN5LXRydW5rCiszMTUyNyA1MzY3Y2QwZWVjNDc3Yzc1OTBhMzBkMjBlZTE2OWFlNDAzZjk3N2FkIGxlZ2FjeS10cnVuaworMzE1MjggNDQ4OTkxOGE0Y2NkYjkwMzYwMjRjYzgzYjI3NmI4YTk5OWIwNWM4ZSBsZWdhY3ktdHJ1bmsKKzMxNTI5IGJlZWE0ZjIxYzlmMDU3YzNiMTM5ZmY5NjgwZjU4MTYyNjFiMGU4MzggbGVnYWN5LXRydW5rCiszMTUzMCBlMjY3ZWQxMDBkODVmY2FhYzk1NmMwOTAyOThmMTFiODEzMTljNzNiIGxlZ2FjeS10cnVuaworMzE1MzEgZTExYTE3OGJiNDUzZmE0NDc2ZDE0YTVkZGIxNjY2NjQxZGM3Y2Q3NCBsZWdhY3ktdHJ1bmsKKzMxNTMyIDEwN2Q5ODg5MDFhMGY5M2M0NjhhYzkxMDUwNzY2MDEwMTIyODcwM2MgbGVnYWN5LXRydW5rCiszMTUzMyA5ZTM4ZjgxNzA5MmZlZjA5MmFkZjdhYzQ3MzRkYTZjMDcxMThmZDY5IGxlZ2FjeS10cnVuaworMzE1MzQgZTI3ZjU4YTUwNzM3MDQ4MjljN2Q5YjEyN2E3OWE1M2E3YTIyOWI2ZCBsZWdhY3ktdHJ1bmsKKzMxNTM1IDhmNzA2MDJmYmViYjNjM2NlMTc3MWEwNGY5MGQwMjA0NjM4NjljMGMgbGVnYWN5LXRydW5rCiszMTUzNiAxZDkyYzE1YmQwZTcyNTg5MTM3ZGNkNjRkZTA0YjQ5Mzg5ZjYxZTY5IHJlbGVhc2UyMi1tYWludAorMzE1MzcgNzM5ZWNmYjVmMTVlODg5YzBmZjExOGM4ZTJlYTA0YjE4NGYzMjk1MiByZWxlYXNlMjItbWFpbnQKKzMxNTM4IDc3YmVmNmFhNDhlNTVmYjBkODZhOGIxOGQ0MzM2MjIyMDMxYWNhM2YgcmVsZWFzZTIyLW1haW50CiszMTUzOSAxNmIyNTAzMjIxN2ZmNTEwMTM2YTljZmZiYzcyOTFjMzJkYjVjZDQyIGxlZ2FjeS10cnVuaworMzE1NDAgZDkyZDliNmE4YTdkM2MyNjg3YmI1MWVmMDI3YjRiNWM5OTVhNDA3ZCByZWxlYXNlMjItbWFpbnQKKzMxNTQxIGViNWUyOTYxNzMxMDlkMGNjZjA5OGZmYWI5ZjE1YjUwNjlkYWU1NTYgcmVsZWFzZTIyLW1haW50CiszMTU0MiA1Y2YwOTIxZjRiOTYyNjI1ZTlkYWUyZjFhMWNhZmM5NWNjNGI1NTVhIHJlbGVhc2UyMi1tYWludAorMzE1NDMgMmRmOTIwNDlkOTI1MDE3YmJiODYwMTUyYWNmN2FiNzY4NDRjNmIxNiByZWxlYXNlMjItbWFpbnQKKzMxNTQ0IGE0ZjlkOTFhMzIxYTc5ZGY0OGI3NTc5NTVkMjZkMjE0MzBmNmFhMmQgcmVsZWFzZTIyLW1haW50CiszMTU0NSBmZTEwZWNlOGJhNjhjNGFlZmE0OGQxMzM3MzU3NjA3ZTNhZjllMTdkIGxlZ2FjeS10cnVuaworMzE1NDYgN2FhMjE2Mzg4OWFjZjg3ZjA2NTQ5MWFkYTgxNTAzOTQzZTVlMmE0OSBsZWdhY3ktdHJ1bmsKKzMxNTQ3IDBlYjk0ODM2NDk5MGZiOTkxNTI0ZGI0NjdmOTUxZDA2NGIzNGUwZjQgbGVnYWN5LXRydW5rCiszMTU0OCBmYWNmZjUyMmU3NDQyY2UwMWZhOGNiMzgwYjY1MmM1ZmQxMzhjZDM3IGxlZ2FjeS10cnVuaworMzE1NDkgNzI5YTFjMmVjNGU4ZTBmZGEyZGU1M2EzZmQ3YmExNDJhZGVkZjVjZSBsZWdhY3ktdHJ1bmsKKzMxNTUwIDYxMjg4M2VhZjUwYzZlNzFjYTE4NzAwOGU2ZjUxZTk5ZjhlYjcxNWUgbGVnYWN5LXRydW5rCiszMTU1MSA3OWFkNjE1NmQ2YzQyNDQ2NTgxN2M1YmJlNmY0OTY4ZjRiMWE0NjM1IGxlZ2FjeS10cnVuaworMzE1NTIgMDU2ZmZhNTU0NTE3YTc4ODc3N2RlZWJkMTdiMjI0MzM3ZTVlYjkxZSByMjNhMi1icmFuY2gKKzMxNTUzIGE4YzBhZjgyMjg4ODQ2ZThhOTVlYWZlNjhiMDAyZjQ2ZTMyZjFhNzkgcjIzYTItYnJhbmNoCiszMTU1NCBhMmU5NzA1ODhlNWJiNjg4MDJlYWNmOTkyODAwMjkwOGIzYWU1MWRjIHIyM2EyLWJyYW5jaAorMzE1NTUgYmNlM2RmMDc1ZjM3ODA5M2IyODBmNGYwZjMyYjU4NDFlMDMyOGUxZSByMjNhMi1icmFuY2gKKzMxNTU2IDNiYmNjM2JiYTU2MGM4YjQ2NzNmMzFmOGFmZDFmODZiZjJjZGE1NjQgcjIzYTItYnJhbmNoCiszMTU1NyBiODQ5NDgyYzcwYzZkOWYwYjU1MDJjYzJhZWEwMjk5NWJhOTNjZjI0IGxlZ2FjeS10cnVuaworMzE1NTggZmFjNzYyMjgzYWJjY2FmMTAyNmZmY2MwMGNkMGJiNzU3ZjA5ODY4MiByMjNhMi1icmFuY2gKKzMxNTU5IDFlOTA3NDYyZTgzYWRiY2Y1NGRiYTc1NGVmNDQwMTBlNjBlOGY5ZmMgbGVnYWN5LXRydW5rCiszMTU2MCA3OGM5YzRhMDE4Y2QxYTAzOGI3ZmFlNTk0MzRkYzEyYWYyYTFhYjMyIGxlZ2FjeS10cnVuaworMzE1NjEgMzJhMGMyZjQyMmYxOGRlOTE2NGUwMzAxMWU2MTM3OThhMDhhM2YzYyBsZWdhY3ktdHJ1bmsKKzMxNTYyIDIxYTUwYzMwOGRiNDU5MmVkMGY4ZmQ1ZmEwOTQ0Y2FlNDRiZjM3MzggbGVnYWN5LXRydW5rCiszMTU2MyA1ZGZhZmY5ODA5MTAwMWRkNmYyNWFiMjBjYzczNDFmNTBkZWIxOTQ2IGxlZ2FjeS10cnVuaworMzE1NjQgODcyYzZmMjAyOGZjNGI3ZjM2ZmZmZjVjMzVjZDVlZDZmNThkNGIzMiBsZWdhY3ktdHJ1bmsKKzMxNTY1IDgwODQzN2I4M2IxNTE4NjZhZDIzYjA5OGU1YjVkNTkzMGM1MDQzNmMgbGVnYWN5LXRydW5rCiszMTU2NiA2MWZhNmI1NWMxZGUyZDY1YTRlNjMzMmQxYTg5OGVlMDVjY2ExY2E1IGxlZ2FjeS10cnVuaworMzE1NjcgZTYzZjFlY2NkMjUwZGFkMzlhNWViOTE4OGE5MGI4M2E1ZWQzZGRhMSBsZWdhY3ktdHJ1bmsKKzMxNTY4IDkwNjQ1OTYxNGI1ZTcxMmI1MThjOTE2MjllODUzZmUxZDBmYmM5ZjAgbGVnYWN5LXRydW5rCiszMTU2OSA0M2E5ZWNiZDk2MDdjYTMzZDE4NzI3OTE2YTgzYTkzNWQwNWY0ZDRiIGxlZ2FjeS10cnVuaworMzE1NzAgYWJkNTdjNTM1OGJkN2EwZWEwMzEwMmU5ODAyOTAzMDA0YTczOWUyMSBsZWdhY3ktdHJ1bmsKKzMxNTcxIDZlMjBiMDQ5ZWQ2ZjZjNDVjODE5NTgzYjExOGVlMDcwM2ZkMTJlNTcgbGVnYWN5LXRydW5rCiszMTU3MiAyNWZkMjhjOGJiNmJhZTlhODFlMzM2ZjJlYjUyZDUyNTdjMGE0YmRkIGxlZ2FjeS10cnVuaworMzE1NzMgOTA0YThiODIyZGFmYmZiYzZlZmEyNDU4NTY5ZjM2ZmUxNGJmNzcxMyBsZWdhY3ktdHJ1bmsKKzMxNTc0IDUzYmVmMjBmODRjY2QyZTkyMzk5M2JjZjVjYTFmMmEyZmRhNWZkZDIgbGVnYWN5LXRydW5rCiszMTU3NSAxYzJjOTdkMzQ1NjM4NGU3MmI5ZjFiMTQwZDllNTBmZTNlYTlkYWNiIGxlZ2FjeS10cnVuaworMzE1NzYgOTE2MjRhNDc1MzdjNzAxZDU4ZTg0ZmNjODc5MzAyYTAwYjE0ZWYwMCBsZWdhY3ktdHJ1bmsKKzMxNTc3IGYzNGZjZDYzYWUyOGUwODM1NzcyNmNmOGZlN2ZmMjkxY2I1MDhjMDMgbGVnYWN5LXRydW5rCiszMTU3OCA1M2ZmYWI1ZGIwMTVkZDdhYzZhYjhhOGFkNjU3ZjdkYzU3ZDBiY2IwIHJlbGVhc2UyMi1tYWludAorMzE1NzkgYmUwOWQzMjY4N2Q4YzVlZjU3OWQ1OWQwYzEyYzQ0Y2JkODBhNGIwYSByZWxlYXNlMjItbWFpbnQKKzMxNTgwIDNkZGIwOTJhY2VhOGI4YWU1MzNlMjhiYTJkNTZlMzc0NzFjZDIzY2EgbGVnYWN5LXRydW5rCiszMTU4MSA0ZjZjNjMzMDgwNjMzN2Q1MGIyODRjZjM4YmNkOGU2MWI3ZDE0MmFjIGxlZ2FjeS10cnVuaworMzE1ODIgZDhiOWQ3YzA0MTQ2NTQzZTcxYWJkNWZjYjBmZGFjNzhiMzE1NGMzZCBsZWdhY3ktdHJ1bmsKKzMxNTgzIDFiNjUzOGFhMDk1OTFlMWU5YjQyNjA4YjdlYTZhNmRlMGQ5NDA4NDEgbGVnYWN5LXRydW5rCiszMTU4NCA0ZWEzNzhhNzFmOTY2YThiZDhmMDJkNjZjMzU4MjhjYzhiZDViMGFkIHJlbGVhc2UyMi1tYWludAorMzE1ODUgZGI5MmM3N2IwNWUyNmI1Y2UzOTA1YzdiMjIzYjU2YTQ5MmEwNjA0ZCBsZWdhY3ktdHJ1bmsKKzMxNTg2IDQ4NmEwZjUxNmRiMDNkMTdjNzA4N2ZhNDViOWVhNDM4NGMyZTY4OTMgbGVnYWN5LXRydW5rCiszMTU4NyA3ODRlZDYwNWI1MTMwYmFhNmY0M2ZiMGJhMmFmNDRhYTJjZDQzN2ZiIGxlZ2FjeS10cnVuaworMzE1ODggNzgwMmQ4YzFhZGFjODQwYjIwNDI4Mjg3MWU1N2UzMjhjZThkZTI4YiBsZWdhY3ktdHJ1bmsKKzMxNTg5IDJlOGYwNTMxOTE5YmIyZjE0NDFjMmVhNzdkNWM0ODMxZWY1MTc4MjAgbGVnYWN5LXRydW5rCiszMTU5MCAxOTJiZDZlMTM1YWFkYTU4ZjU3NWMzNzM3ODVkN2U0ZTI4ZTRiYzg5IGxlZ2FjeS10cnVuaworMzE1OTEgYjM4Y2ViYzc2ZDgyNTFmNWEyOWRiYzMwMTlhMmViZWMwZGVjMzVlZCBsZWdhY3ktdHJ1bmsKKzMxNTkyIDVhYmM1ZDA4ODE0Zjk2OGEzYWNkYjRjM2UzNzU1YTUwZTg4Y2JjNGYgbGVnYWN5LXRydW5rCiszMTU5MyA4MjNkNWIxZjMyZTEyZWI1OTk1NTMzYWE1NmUwNDdmMmU4YjljYzQxIGxlZ2FjeS10cnVuaworMzE1OTQgMGE4OWI0MDZjNzMyZjFmNmEyMzhjMmExOTg1OWJhOGJlNDVkY2E3NCBsZWdhY3ktdHJ1bmsKKzMxNTk1IDQ5OGRiMWJjZDY2NDg5NGNhZDNhYmNjMzdjYzgzNDU1NTM1YmZiZDcgbGVnYWN5LXRydW5rCiszMTU5NiBjYTViMGNkN2E1MjUwNDk1Y2RiMGFkY2Q0MzZlMTg2ZjZhZmM5MzM0IGxlZ2FjeS10cnVuaworMzE1OTcgNDAxMzQwNzBlNmE2YTBkZGJiMWY3ZWE3ODg0OWY4ZmU3YWUzZjdhYSBsZWdhY3ktdHJ1bmsKKzMxNTk4IGE4Yzg3YTBiZWI5ODAzNjEwOTE1Y2QwNjYxM2IwMzA3NmIwZjgzMWYgbGVnYWN5LXRydW5rCiszMTU5OSAxYTBjMjMxYzZiMGNhZTgwNDI5NDI2ZjE4OTlhMGMxODZmNmY3OTkzIGxlZ2FjeS10cnVuaworMzE2MDAgNzIzYzU0NTczMDdkOTM4NWFiMmFhYmVlMTkwZTk0MDE2N2ZmOTIyMiBsZWdhY3ktdHJ1bmsKKzMxNjAxIDdmOTBiNWI3MDAxZWQxZmQ4OGY5ODNkYjVmMDM1YjgxNWYyY2MwYmEgcmVsZWFzZTIyLW1haW50CiszMTYwMiBmYjc5Y2MyNjMwYzFlZTQyNDJiYjcyMTljMDU4ZDdiOGJmMjRkMTg2IHJlbGVhc2UyMi1tYWludAorMzE2MDMgZjhmYzVlMTRiZmU4N2E1Y2Y1ZGQ3NWMyZDE2MzFlNGM3MDQ4ODUyYiBsZWdhY3ktdHJ1bmsKKzMxNjA0IGM3NTY2MTQ0NDY1NTM4ODMyNWQyMDEzNWNkYmQ3NjI1ZTYyZmIxMTAgbGVnYWN5LXRydW5rCiszMTYwNSBjMzY2NWRmNjZkNmQ1YjJjOGRhOWI5NjViYjFjYzAyOTEyZTFjOTE5IGxlZ2FjeS10cnVuaworMzE2MDYgMzI0ODk2YjdmNGUxZTI1OTE4YWYxYThlOTkzNTM0NDYxZWNjYTk3OCBsZWdhY3ktdHJ1bmsKKzMxNjA3IGM2MWVmMTgzY2UyZjE1NjQ1YzRhNDAwYWMwMWZhNjVhOWE5Yzg2MjIgbGVnYWN5LXRydW5rCiszMTYwOCBkNjczMDU5MDUyNmMzMTRjNWFlMGY2ZjhiYTZhNzFlMzY0N2ExMTNmIGxlZ2FjeS10cnVuaworMzE2MDkgOWQyOTdkM2RlMzZmNTg2MWE1ZGI3NjdlOWNhNzQwZWJiZTE1N2Q3NSBsZWdhY3ktdHJ1bmsKKzMxNjEwIGY3MmMzODNiY2M0NWQ0Zjg4NDRmMzAzYzQ0NjE5NDY1YWExNWVjZmMgbGVnYWN5LXRydW5rCiszMTYxMSA4NmQ4Mzg0ZDg4MTAyZmUyODg3MjMwMTc1NjRiMTM3NmEyYjZjNWU2IGxlZ2FjeS10cnVuaworMzE2MTIgODY2OTY0Yzg1YjhlMjZkODM5NWM0MTc3NjllYTRlNTI1Y2NmMzgzMiBsZWdhY3ktdHJ1bmsKKzMxNjEzIDViM2Q1OWI5NzhhMmQ2OWYxNjZlM2Q5NzJhYWIzMjFkMmRkYzliYzUgbGVnYWN5LXRydW5rCiszMTYxNCBhOGE2NDM2NGE3MTFkNDE5ZDZhOGJhNWY2YmU4NWRlZGVhMWJmZjk1IGxlZ2FjeS10cnVuaworMzE2MTUgMDQ1NWNmODliMTIzOThhMGU2OGMzZTY1M2RjNDA4OTEwOWJmZjU5NSBsZWdhY3ktdHJ1bmsKKzMxNjE2IGIwNDYyNWNlYTA2MTNhYWQ2ZGE2ODBhM2ZmN2I4ZGYwOTJhNjFlOGIgbGVnYWN5LXRydW5rCiszMTYxNyA3ZmRjYzRjZmM3NTkxNzU1NGU5YWQ3NzMxMTY3ZGZjMmVjNzhiOWYzIGxlZ2FjeS10cnVuaworMzE2MTggMDBkZWQ2MmQyNjc4YTQzNWZkNDBkNmJjZDAwNDFiOGJkMDk2YTY4YiBsZWdhY3ktdHJ1bmsKKzMxNjE5IGZjYjM5YjBhNmUzMDZjODA1OGNmZTc0NWZhMDFmZGVkZGRiOWRmNzIgbGVnYWN5LXRydW5rCiszMTYyMCBiYjZiZDU0OWY5MmE3OTY0ZWI5NjlhZmUwNGNhYTUwOWZlMDI0NTdiIGxlZ2FjeS10cnVuaworMzE2MjEgYjhjYjkwZmMzNTIzZDM2ODQ5YTRhMDk4ODBiZDk2OTE1NTdmOGU2ZCBsZWdhY3ktdHJ1bmsKKzMxNjIyIDBjODlkYzYyNTRiZThkODc0ZWYxMGIzYzlmZjE4ZTQ4Y2M2NDE2N2UgbGVnYWN5LXRydW5rCiszMTYyMyBjZjlkOTEyODM0NWMzZjFiNDlhZGZjZGY2ZWU5Y2IyN2U4Mjk3NWZlIGxlZ2FjeS10cnVuaworMzE2MjQgYTU4NzQ0NTNiZjE3YzY2MDhlNTkyZDdmYmE4MmY3YjNkOTQ0ODcxYyByZWxlYXNlMjItbWFpbnQKKzMxNjI1IDI5OTY1ZDBkNDY1MDU5ZDMwODc0ZTZmNzgwYzU0ODRhZTEyNmNjNDMgbGVnYWN5LXRydW5rCiszMTYyNiA0NGJhMTU3MjUxOGY3MDI5ZGE1NGIwY2EzNjNiOTE2N2M3ZWVjMTE3IGxlZ2FjeS10cnVuaworMzE2MjcgZjQyZmJjN2M3ZDhlOWFjMmUwNWZkNDJlNzQyMDAyMWJkMDZhZmMwNSBsZWdhY3ktdHJ1bmsKKzMxNjI4IDI0NzQzODE1MjdiYmM5YzQyYTIwZDVlOTQ5ZDc1MjIzZDRhMDc3MDcgbGVnYWN5LXRydW5rCiszMTYyOSA0NjU0MDVhMTU5YzFmNDI3N2Y2YTRlNmQ0Njc0YzgxMTM3OTU4MzE5IGxlZ2FjeS10cnVuaworMzE2MzAgZDllOWM5NjRiNmE0NmU1MGRhZmYzNDkzNmE1YjllMDczZWIyMzc2ZiBsZWdhY3ktdHJ1bmsKKzMxNjMxIDE0ZjY1ZDY2MTA4NDhlNWJjOTU2YjQ3NjhkNDljOGM4OGRjZDU2NjMgbGVnYWN5LXRydW5rCiszMTYzMiAzYzVhODgxNDQ3MGM5YzRiZmFiNzVlYzcwZDM1NjAyM2Y0ZDg0ZGUzIGxlZ2FjeS10cnVuaworMzE2MzMgMDRhOTNiN2JkY2U0OTYxMTViMTA3OGI5N2YyOTJjYzNkOTRlNzQxYyBsZWdhY3ktdHJ1bmsKKzMxNjM0IDEyYmFiODdhM2RkMjM0NWNlOWE0M2EwMjM0MGZiOWI5MzNhNTA4NTIgbGVnYWN5LXRydW5rCiszMTYzNSA4OTlmMmQyMTBhMzRkODU0MGU2YTNmZjRkYzZlNDZkNGU5NjUxMzk1IGxlZ2FjeS10cnVuaworMzE2MzYgZDVhYWE2N2MwOTZhZjM1NjkyZTNiZGM5NDJhZWZlYmE4MGFlOGJjMyBsZWdhY3ktdHJ1bmsKKzMxNjM3IDc0OGYyZTViODI5Mzg4MmY3ZmNiYjIxODlhMjg5ZmMyYmM5NDJiMjMgbGVnYWN5LXRydW5rCiszMTYzOCAzMTAwODQzM2M3NGZhZGY4YmZhOWI5ZDE2ZWNiNjA0ZTU3YjJjNTU5IGxlZ2FjeS10cnVuaworMzE2MzkgZDUwZDFmZjQyYjVhY2U4ZDU1NjE2ZjEyMDlhYTY1MWU3M2VkYjllYSBsZWdhY3ktdHJ1bmsKKzMxNjQwIDJkNTljYTI5ZjM4NGQ3OTJiM2E4MTZiOWU1YTVlMjIyY2ZiNmVkNzUgbGVnYWN5LXRydW5rCiszMTY0MSA3ZTY0OTEzODMxMmIzZmY0ZGQ4MmRiMWNkNGY1ZGY2NWM3NDM0ZGFiIGxlZ2FjeS10cnVuaworMzE2NDIgNTRiMzVkYTk4NzllOTg4MDVjZmUxM2I1NGRjMzYzYmFiNmNhMjBiZiBsZWdhY3ktdHJ1bmsKKzMxNjQzIGFiMjcxODNjODkyN2Y2NTA5NjUxNDk5YjU0ZjM5YmI0NzI3YjM0YzEgbGVnYWN5LXRydW5rCiszMTY0NCBmNGU3MmExYTlmMTNlODZjMjYyZWY0NTNjNTUyMDI3NTUxNTdhMWUyIGxlZ2FjeS10cnVuaworMzE2NDUgNWU1ZWVmYTI1ZjNhZDFiZjU5NjhkMGM0MjcyMWI4NzBmODJhZjVmOSBsZWdhY3ktdHJ1bmsKKzMxNjQ2IGJmODY2YWIzOWRmZjJhNTc4NzQ2YjcxMzg4NDViZjQxMjdmNDU5MjIgbGVnYWN5LXRydW5rCiszMTY0NyAyZjNjZDNmNTQwYWQxYWE1MGQ4Y2VlMzFiMGIxODlmMjBlNmZlODQyIGxlZ2FjeS10cnVuaworMzE2NDggZDliNDg3YjkwMzRhNDkzZjY3NDljN2NhMjg2NDI2OTYyOGQyY2E4OCBsZWdhY3ktdHJ1bmsKKzMxNjQ5IDE1NzczZTc1OGZjNzNhYmM0OTU3NGM5ZDhkZDllNDBjZjU3NDM4NDEgbGVnYWN5LXRydW5rCiszMTY1MCA5OGQxMDcxMzYyZjA0MGQ0MzhlNTdhYjVhOGU3M2ZiZTM5MDFlZmQ1IGxlZ2FjeS10cnVuaworMzE2NTEgZGQ2YTYyNTc4YmM4NjQwNjQ0ZjliYTE0NzFiYzQxYTZiMWZhM2Q3MiBsZWdhY3ktdHJ1bmsKKzMxNjUyIGQzNmRkNDFlODkwZjJiYTE5NmMzODBlMTc2ZWU0NmY4MWRmMjRiZjggbGVnYWN5LXRydW5rCiszMTY1MyA3YTJmNjgzMzk1ZTcyODJjOGIzM2RmZTI3NmE4NjBkZGQ5NDBkOTY4IGxlZ2FjeS10cnVuaworMzE2NTQgMmM4YzJjNmIyYWI3OWIxZTRmMjYyMDg5NzlhMGY1M2NiOGFkMjcxYSBsZWdhY3ktdHJ1bmsKKzMxNjU1IDYyODg4YTdlZGYwYjU1NGYzY2RkMjA1MTg2ZDk3NmViYThkN2E1YWQgbGVnYWN5LXRydW5rCiszMTY1NiAxNDQ2M2Y0NzgyNDAyMjY4YWFkMzY2YjNlOTE3NDU5MDAyMzhkYWMxIGxlZ2FjeS10cnVuaworMzE2NTcgMmZjNTJiZTc3OTk5MTM0ZDcwZjI1NmY1MjdmODJmZjVkNGQ3ZDJjMyBsZWdhY3ktdHJ1bmsKKzMxNjU4IDkzNzhmNmU1NTFhZTcyMTZhMWQwYmY1MGUyYTgwZTUyYzIzMmI2MWYgbGVnYWN5LXRydW5rCiszMTY1OSA5YjRlZWQ0YmIzZTJlNGExODMzOWM1Mjk4ODdlNjE3NjFjNGE0NDIyIGxlZ2FjeS10cnVuaworMzE2NjAgNGY0ZjJhMTU0NDc4NDk1NWFlMzE4YTJmY2JjYjU2ZTczZWJkOGYxMSByZWxlYXNlMjItbWFpbnQKKzMxNjYxIDg2OTY5NWNiYTJjZDM3ZTYzYWQ1ZDRjYjkyY2E1NWFhZTU4YjQ1ZGYgbGVnYWN5LXRydW5rCiszMTY2MiBkMjQ1NjRlN2U5OTljZGRjYzlhYTNkMjU3NDg0ZWMwNTU4NjU3Y2ZiIGxlZ2FjeS10cnVuaworMzE2NjMgYzI0YTIzYjFmMTk4YWYwYjUzNTcxOWNiYTdhNjg2ODJmZjZjZTU3ZCBsZWdhY3ktdHJ1bmsKKzMxNjY0IDM5Y2I5MTdiNWY3YWI0YmFlOTI0MmI2MGFlMTg4MTJmY2IxNmM5MGIgbGVnYWN5LXRydW5rCiszMTY2NSBmMTk4MWVlOTgyMjNjZTVhYjI1MGU3MDA2M2E4MDQ4ZDBkMzBmMDM1IHJlbGVhc2UyMi1tYWludAorMzE2NjYgODhlNThlM2Q1ODA3NzNlNzA0ZTE2MTk1ZGI2MWZkYjk2MmEzZTQ5MSBsZWdhY3ktdHJ1bmsKKzMxNjY3IGY0NjlhNmQwNzdmMWU5NTA4ZTdiNDRlZGRkNWE0YmRhNzVkODhmNTEgbGVnYWN5LXRydW5rCiszMTY2OCA0Y2NjZWY5YjRkNTQ1NzU3YmUyYTMxNDM1NmY4YzU5N2VlYTkwZDI3IGxlZ2FjeS10cnVuaworMzE2NjkgNWY5MjMxNjUzMTlkNWNiNjhjOTU5Yjg2MzY4ZmViZmRmZDczNzYxZCBsZWdhY3ktdHJ1bmsKKzMxNjcwIDg3OTEzNTI5ZjI0ODA5OGY5ZTU0N2QyYjZiNTkzNzcyOGVhMGI5ZWQgbGVnYWN5LXRydW5rCiszMTY3MSBhMjRhYWJjZjVlYTI4MTg2Yjg1ZDZhM2MxNjA4OTNlM2E2YjI2NTc0IGxlZ2FjeS10cnVuaworMzE2NzIgYjAwOWMzZWYyN2I1MWM1Mzc5YjAzYjczOTM4MWFhMzdmMDA5Mzc0OSBsZWdhY3ktdHJ1bmsKKzMxNjczIDUwZWE4ZGVkMjlkMDE3ZjM3MjUzOWQ4YzUzOTA3NTM0NzNhNTUzYWEgbGVnYWN5LXRydW5rCiszMTY3NCAwNDdiNWQwMDBhYWE1MTY0ZGQ3OGJlNWQxMTYwNjc3Nzg2NWFmZTg0IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2NzUgMWQ2NjIzNDJlMTlhNjRiMzY5OWM0YmQ3N2UwOWE4YTc3MTEyYzc5YSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc2IDk3Yjk3ZTU3MTkwY2ZmNzM5OThmZDE5ZTIzYTlmNDg0NjZlYTk1OGEgbGVnYWN5LXRydW5rCiszMTY3NyBmOWYzMDEwZmM4NmY3NmE5MWJjMmY1NDAxOTk4NGJhM2M1ZDFlNWQ0IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2NzggOWNhNGE2N2I5OTczNmZiZWEwN2Q4YTA5NjI0NDBmMDkzYjM1ODhiYSBsZWdhY3ktdHJ1bmsKKzMxNjc5IGNkZTQ0NDE4NDMzNmZiZGM3YjY1NmE1MGNjMzI5N2Y3NDdlM2ZjNzYgbGVnYWN5LXRydW5rCiszMTY4MCBiNTM0NTVhNTFiNzgwOTVmNTNkMDc2NmU2Y2YwMDY2ODBkOWQwMzg4IGxlZ2FjeS10cnVuaworMzE2ODEgNjU1YTA4NTU3YTQzZWMxNjI0YWI2NWIyMjI2NmMxNzA4YjY0NjM4ZSBsZWdhY3ktdHJ1bmsKKzMxNjgyIDc4OWIyNGQ2NWQ0MjA0NTc3ODY3OGJiZjg3ZjQ0NjNmNGUyNjhlZTcgbGVnYWN5LXRydW5rCiszMTY4MyBlYjE1ZGU2YTRhNGNkMDZkMjBlYmEwOGZhNzMwMjBhNDE4OTE3NzE3IGxlZ2FjeS10cnVuaworMzE2ODQgYjIwYTM2ODVkMjNlMWQxYTZlMzVjZjQxZWY1YmJjZmM1OGEyNDI1ZCBsZWdhY3ktdHJ1bmsKKzMxNjg1IGY5ZGI5ZGM0NTZhYjU3MDM4MTdjZTc0ZDRhMzIyOTdiMDY3ZjdjYmIgbGVnYWN5LXRydW5rCiszMTY4NiA3ZDA0YmQ4OTc2NjE4NzQ1YTAxYzhmZjRmNDMyNzNkM2EwNWQwNGM1IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2ODcgNDFhOWEwNzJjNjgxNzZhZjZjYzhkNTIwZWRkOTc3OTc5YTlhNTkyMSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjg4IDJjYzE5YTMyNWQ2Njc2NDBlOTMyOWNmZDRhNzM4YzcyYmJkYmI0NjAgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY4OSBkYmYzZWJlY2E3YjFkYTYyZTYyMjk1NmU1NTI5MjA2ZTYyMzg2NjIzIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2OTAgMzc3OTYxZDc2NjEwNWZlZTM3ZjQwODIxMjc4MGUyZGRkODdkMWZiNyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjkxIDM5OTJjYTcwMGU2NTgwMzEzNGY2NjFjNjg3MjdiYTk2NzIxZDU5NjYgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY5MiBhM2NmMDdiYWMzNzM2OWYyYTY1ZDUyNjU1ODY4MjAzY2MzNWY5NDIxIGxlZ2FjeS10cnVuaworMzE2OTMgNTI0ZTVmOWY4NWU2YWYwMzM3Y2EzYjg5NTZjNThmMGQzNmNiNGY3ZiBsZWdhY3ktdHJ1bmsKKzMxNjk0IDg4ODk2NTRjMGRkNWQwOTlmMDU4NThmMDVkODliMWM1ODg2MDk0YTAgbGVnYWN5LXRydW5rCiszMTY5NSA4NDNkNWM3ODk1MmE4MjJlYTAxOTI3ZjAyYjVhYjAwNDNmYzVlNWU2IGxlZ2FjeS10cnVuaworMzE2OTYgODk4Y2U0ZTk2ZjU5MmIwYzViMDY1YzE1NjRjMDlkNDUxYjcxNTMwZiBsZWdhY3ktdHJ1bmsKKzMxNjk3IGY5YjcwMmM1MmRhZWEyOTk2MmNlMDM5MmEzNzVhMDZlMDVkMTQzYjMgbGVnYWN5LXRydW5rCiszMTY5OCAyODE1YzFhOWY3MzU4MzRiZTc2MTJiMDZiYzI2OWExY2M0MGU3OWQ1IGxlZ2FjeS10cnVuaworMzE2OTkgOWU3MzdkNjNmMzgwMWU3NGRiZWRmMzBjMjUyZGZhY2MzNTA2Y2MzMCBsZWdhY3ktdHJ1bmsKKzMxNzAwIDQ0YzMxMjM2NzQzYTA3ODE1MjEwZDA0YWUxMDU5N2E1N2JmNGIzYWQgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwMSAyOTQ3NDU5YjA3ODkyMzI5M2Q3NjhiYWQwNzA5YmFlYjJmMzhiZjQ2IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDIgOTAyZmNmZDVkNjVkMDk4YWU4YWIwMTEwOTdhMzk5MGVlYTc1MDgzYiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzAzIDc2ZDA2MThmM2ZlMGQ4NzkyYjg0MmU3NTU0MzIzNjExMmU2ZTE0M2YgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwNCBhODM2MWJjYTFjNWNjNzdlNDZhMTExZGI0Y2QwZDhjNzgyYzk4ZWM3IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDUgNWMwZGI0MWQzOGY5MzYwOWI4MzI2ZmFkZWExMmJjNGJiOTBlNjJmYyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzA2IDk1YWJmM2ZjMmIyZDMzNDRjNDcxNWY2N2Q2OGIwYzgzNjQwMDk4YzcgbGVnYWN5LXRydW5rCiszMTcwNyAxMmQ0ZGY3MWJkYWEzNWRmNDJlZTY0NDcxZWRiNTZmNmIxYmE4MWExIGxlZ2FjeS10cnVuaworMzE3MDggYmRhNDkwZmMyNjkxZWI5ODc3NGRiZjk0ZDhkYmQ1NTYxMzZmMDE0ZCBsZWdhY3ktdHJ1bmsKKzMxNzA5IDBkODU1MjQwOGZjZGUxOGE3NWRiYjA2MmNkMjczZTY4NDhjYWU5NTUgbGVnYWN5LXRydW5rCiszMTcxMCBlOWZjMmMxNDE2MDg5ZWI4NzAxOWY3OTMwN2I2MWYxNzdlM2JjNjEyIGxlZ2FjeS10cnVuaworMzE3MTEgNmQ3OGM2YmYzMWY3ZDJjOGZjZmFjMTc3MjY0ZjU5ZDIzMGNjMjY2ZiBsZWdhY3ktdHJ1bmsKKzMxNzEyIDE3OGQxOWNmZjE2MzgxMzJmYzczMDNmZGIzYWY3YjM3ZDQxMjI4NDMgbGVnYWN5LXRydW5rCiszMTcxMyAzZmU3MmE5OTQxMDNiMzVjZDNkM2UxOWU5MzZlNTkzYjYxNDFiMzMzIGxlZ2FjeS10cnVuaworMzE3MTQgOGE3MTMwMWFmYzJkYTYwMmI2Nzk0Y2NjMThhZGZmODQ4OWRiMGVhZCBsZWdhY3ktdHJ1bmsKKzMxNzE1IDQzYzdkOGEwODRmYmMzOWQ5ZTJlNWVjNzVhYTAzOTlhMjg2ZWZmMTEgcmVsZWFzZTIyLW1haW50CiszMTcxNiBlNDA1OTI5YzIyM2U1N2NiMmQ4YTRiM2ZkMmM2N2UwMmJjYjhkNjBlIGxlZ2FjeS10cnVuaworMzE3MTcgMjlkODAzNDBmZDQxNGY4NDMzNjMwYzcwZWQ1YjgwYjk2OTIzYTFlMiBsZWdhY3ktdHJ1bmsKKzMxNzE4IDAxYWVkNzJlMzA5ZTUyYzFkYmU2MGJjMGRkN2NjNDcyNGM5OGE4MjAgbGVnYWN5LXRydW5rCiszMTcxOSBiYTFiZDZmNmU2ZWRjNTYwOGRjNjYxMjU1ZTg3NGVhZGQ2Mjc4OTliIGxlZ2FjeS10cnVuaworMzE3MjAgYWM5NjVhNTAyZDFiNzdjNWRhNmI5ODFkZGQwYWUyZjQxNjNkMDViOSBsZWdhY3ktdHJ1bmsKKzMxNzIxIGFiODVjNzU2YzVkZjNjNjFiYzYzMzQ0ODA0ZTJhZjIzYjA3ZGRhZWMgbGVnYWN5LXRydW5rCiszMTcyMiA4OTEzN2JlMjVlN2FkN2VlNGZhMGQwYzg4YzBhNGRiOTA2Nzc3OTQwIHJlbGVhc2UyMi1tYWludAorMzE3MjMgODc3MDRmODllYTNmNWNmMzlhMTVhODM5NDljZDFkNWMzY2I4YjJlMyBsZWdhY3ktdHJ1bmsKKzMxNzI0IDM3Y2RlMDc4YjkzMzJiZDI5MjhmZGU5NGY5NjE4YjA1MjM3M2RjNTggbGVnYWN5LXRydW5rCiszMTcyNSAzMDMwZDY3ZmI0YTU2Njk3ZDU0NDNmODQxN2FkZjQ0ZTVlM2VhNjhlIGxlZ2FjeS10cnVuaworMzE3MjYgYmMyZDA3MjMwOTM0ZDRjZWVlZmYxYmExZGYzZmY4YWYzODVhNDMzMyBsZWdhY3ktdHJ1bmsKKzMxNzI3IGNlMzc2MGU4ZTY0MDZhNzc1YjI0MDRmYTIyZjBmMzUzMDg5NTVhNjkgbGVnYWN5LXRydW5rCiszMTcyOCAyNGZlMDIzOTAxYjA3YjViYmMyYTQyZTA5OWZjNzY1ZTM5OTUxYzczIGxlZ2FjeS10cnVuaworMzE3MjkgYTZjZDlkNmQ1Y2EzYTQ5MGMzZDAxNzYzNGM1ZWE2M2U5YzJmZTk0ZSBsZWdhY3ktdHJ1bmsKKzMxNzMwIDU3NzZmZDE4OGYyMDU0NTg2ODJjM2UxNjZhNzJhYjdkNjA2ZTMxMjcgbGVnYWN5LXRydW5rCiszMTczMSAzZjkwZDIxZGViZTk2ZTE4MjI1OTQyNDBhMmMzZjllMWYzMjUyZDMyIGxlZ2FjeS10cnVuaworMzE3MzIgMzk1ZWI1NjFlY2UxMzY3NmMwZjJlZDA4ZmZhZDY5NDk4NDVhOTM3YiBsZWdhY3ktdHJ1bmsKKzMxNzMzIDQ4YTUxMTNkZmVmOTgxMmI2MmVkNWY3NzBmZmY1NzIwMzgzNzA0MGMgbGVnYWN5LXRydW5rCiszMTczNCA1OWNhMzIwMGI2ZTUwMzRlMjNlMGFmMjQxMjI5MTFhNzQyZDY4ZmIwIGxlZ2FjeS10cnVuaworMzE3MzUgMGE4ZTg2MzJjNjMxOGI4YzVmMGY0Mzg1OTkzMjgwZmQ3ODU3NDdiNCBsZWdhY3ktdHJ1bmsKKzMxNzM2IDA0ZGY5NjVkNjc1YjdkN2QzY2IwNzM3YjVlZWJmMjc4Zjg2YzQ4ZTIgbGVnYWN5LXRydW5rCiszMTczNyA1ODUyMzUyZDk1MjIyYmFlNjkwYTdjMGY1MDhiZTIyODFjNjA3ODA2IGxlZ2FjeS10cnVuaworMzE3MzggY2QyMWJlODJmNTBiYmNiYmU3OGZlNjM1NjM2ZDQwZGRkZDkwMWExYSBsZWdhY3ktdHJ1bmsKKzMxNzM5IGExYjhlNjU0ZDVmZTE1Zjk5ZjNjOTkyZjQ3MjU5ODYwYjFkMDM0MTcgbGVnYWN5LXRydW5rCiszMTc0MCA5MmYxZDAyZTI4ZjBhOWE0ZjU5Yzc1MjNjMDc1NDU5ZjA2NzcxYTU5IGxlZ2FjeS10cnVuaworMzE3NDEgNzM2YWQ3M2RmNWI0OGVmZmM2N2UwNjA4NjE2YjgyNjgxMjVlYWZiMCBsZWdhY3ktdHJ1bmsKKzMxNzQyIDQ2YTgxYmQ4Y2EwY2QwMzExNGQ2Yzc4N2ZhYmY2ZGEyZjQ2YjY4NTIgbGVnYWN5LXRydW5rCiszMTc0MyAyOWRkZGMwMWI1ZWMzNzY5ZGYzNGM5NTNmYzE4N2JiN2U4MDcxZDBjIGxlZ2FjeS10cnVuaworMzE3NDQgOGU2MDcxODU2ODlhNGQ2YWFhMmUwMGQyNzY2MGZhZGMwYjQzNjNjNSBsZWdhY3ktdHJ1bmsKKzMxNzQ1IDE3ZTZlODE0ZDA5NGU5ZGIzZmI3YTdlYmE0MzRiY2UxOTZmYWJmN2YgbGVnYWN5LXRydW5rCiszMTc0NiBlNDhmYjVmYmZkZjRkYTdiYWUyZWZiYTg2YThiYjkxOGFlMDgyZmJlIGxlZ2FjeS10cnVuaworMzE3NDcgMTQ5YTU3NzJkZDBjNDYyYjY0NGQ0ODQ2NjU4NjBmYzFkNzRmMmE0MyBsZWdhY3ktdHJ1bmsKKzMxNzQ4IGZjYmM4MjRiNmUzODA5NGM3ZmQ1NGI0Yjc1ZTNlYzI5NTJiZjI1NDYgbGVnYWN5LXRydW5rCiszMTc0OSAwMjdkYzIxM2M1N2U3MmRhZTNjNmE0MmI5OGMwMGU2YjE1YmVlYjczIGxlZ2FjeS10cnVuaworMzE3NTAgNWNhNjUwYTkwMDVmYTRiMmM4NzA0YzczZmJkNTI4MWU3Yzc1MjhkNiBsZWdhY3ktdHJ1bmsKKzMxNzUxIDhmMDA4YjdjYjk3YjNjNDI0OTM0OGVjZjZmZjQ3ZTdhZDg1ODhhNGUgbGVnYWN5LXRydW5rCiszMTc1MiAyYWJkOGE1YWY2ZGRiMTE4YmE4NmY0OGFlMjY3ODNjY2UwMDYxOGE3IGxlZ2FjeS10cnVuaworMzE3NTMgYjdjMjlkYzhhZmEwZjMwNWI5MTYwMjFiNGY1MmZkYTRlZTZlMjk2ZCBsZWdhY3ktdHJ1bmsKKzMxNzU0IGVmZTI0OWQwNjliYTQxYjgwNTc5YzZhYTA5MjA5YmY4NDU5ZjQ1YTYgbGVnYWN5LXRydW5rCiszMTc1NSA4MTQxNTA0OGIyYWVmMDAxMDQ1MWY0ZTNhYjIwNzU2NGI4NjcwYzM3IGxlZ2FjeS10cnVuaworMzE3NTYgOGI3ZDllYjQ5NzU4YzU2MTJiODNhNDUxMmE2NzliMTlmMzJmNzcyYyBsZWdhY3ktdHJ1bmsKKzMxNzU3IDA3NDk3ODc5OTRkYmYzODNmZjc0YzU2NmY2MDE1NjU1YmU0MGQ0YTggbGVnYWN5LXRydW5rCiszMTc1OCBmNTdkMzBkNTA2NDhlZDgwMGZiNzkzMWJjN2E4MDY0NWE3OThmMjM4IHJlbGVhc2UyMi1tYWludAorMzE3NTkgYTdmMDEzMDJiMTZkMmIxNDdlNTU0NDhhN2Q1NDhmOTVlM2MzOGRkYyBsZWdhY3ktdHJ1bmsKKzMxNzYwIDBhYjQ1NDU5M2I1M2ExNWY1YWNjNzMzNzFlYTIzZmVmMTFmYjJlYWMgbGVnYWN5LXRydW5rCiszMTc2MSAwNTU3NWI3ZTY3MTQwODQzZWIwZTE1MjA1MDc4ZjQxMjRmOWI5YzI3IGxlZ2FjeS10cnVuaworMzE3NjIgYTM4MjI2M2RmMDFkNWEyN2YzMGQ2N2M0NDE0NzIzNDQ1ZmQ4YzdkOCBsZWdhY3ktdHJ1bmsKKzMxNzYzIGJhZDkxNTY0NWZhMjJkZmU5NjVmZDFjMzczODQxYTYyYTRjNjE0NTMgbGVnYWN5LXRydW5rCiszMTc2NCA3NzE5NjFlNDUzMTRmMDJjMWMxMGQ0NGZiODQ5OTY4NGIxNjllYjZiIGxlZ2FjeS10cnVuaworMzE3NjUgNDM5MTAxZDQ3MDViYjA1ZWJjMWY3YzE0N2ViMTBjNGZiZWRmNzg4MyBsZWdhY3ktdHJ1bmsKKzMxNzY2IDJjM2VmNDYzNTllZjQ2MDVjYjU3OGI5M2FhODUyYjhkNmRlZjdjNjEgbGVnYWN5LXRydW5rCiszMTc2NyBmYjhmNzZkZjY0ZmY0MDU1NWQzZGE1NTJiNWYzMWU1NTM2NjFmNTE2IGxlZ2FjeS10cnVuaworMzE3NjggOTJlM2I2MTFkYzlmOTIwNzIwYjcyYjYwYWRjZDg3NDAxNzQwY2IzMSBsZWdhY3ktdHJ1bmsKKzMxNzY5IDAwOGEyNmMzNTNhZjk3MDk0Y2NjODFmNmI3YWY4MTk4ZGZmNjkyYTggbGVnYWN5LXRydW5rCiszMTc3MCBjMDNiZTIyZmRkMjRjMWU1N2QyMzE0NDUxNjU1MzVlNGFiODdkMzE3IGxlZ2FjeS10cnVuaworMzE3NzEgZDRiMjYyZmJkMDRhMjA3ZTY1ZmNlNmRhYmNmMGI4MGFkMGExNzQ4MyBsZWdhY3ktdHJ1bmsKKzMxNzcyIGYyYmQwZjRkODU3NTBiOGNlZTQzYzY5NTg0NGJiYmZhNjVmYzBkNzUgbGVnYWN5LXRydW5rCiszMTc3MyBiM2MxNTg3YjJiOGUzMjJjZDcyNzE0YzJkZTgwMWQ2NTIwZmY0ZGIzIGxlZ2FjeS10cnVuaworMzE3NzQgNzNiMGRjMjhjOTFhN2FlOGMwNTRhNzM1YmY0YmIzOTQxMDMwNWQ1MiBsZWdhY3ktdHJ1bmsKKzMxNzc1IDkwNzA0MDRmMjRmYWQ1ODc0ZmVlMGNmNmQxNjZlY2ZjODI2MDkyMTYgbGVnYWN5LXRydW5rCiszMTc3NiA3YzhlODgwN2FlZDI5YzZmMmRmZWQ5M2MyYTRjZDJmY2ZiODFiNWVkIGxlZ2FjeS10cnVuaworMzE3NzcgOTk3ZDQ4MWVhNDA5MTBhMTRjNGNkMmZhMzk1ZDVkMjA5ZTAxZjlhOSBsZWdhY3ktdHJ1bmsKKzMxNzc4IGRjOTQ3NWVjNzk4NTVjYzkwODg5NmNjNmNmOWQ2MzkyODdjOGI1ZTcgbGVnYWN5LXRydW5rCiszMTc3OSBlY2E2OTdlMDZhMDdjYzI5NGIxNmU1YTc1YjdiYjM5YWJhZDVkZjdhIGxlZ2FjeS10cnVuaworMzE3ODAgNzMzYWViYjU3ZmIwMDljMGNhMzA0MzczZTUyZWUyY2ZhOGQ5M2U3ZCBsZWdhY3ktdHJ1bmsKKzMxNzgxIGEyZDc5YjkzYjUwYTBhOTNlYmI3ZGVhMDQzM2JiYjU5ZGQxNTI4OTUgbGVnYWN5LXRydW5rCiszMTc4MiAyN2FkZGVhMzNlMGNhZDQ4YWE3MWE0OTQzMjI5MWZmZjY5MGEwYTI5IGxlZ2FjeS10cnVuaworMzE3ODMgY2RlYTViMWI4MjgwY2Y5ZWY5MTYxNmQ3NzIzYWI5ZTc4MDcwMjY4MiBsZWdhY3ktdHJ1bmsKKzMxNzg0IDQzMDY2ZjY3YzVkYmE3NDE3MDA4ZjU5MzhmMjM2YmM0NDg5Njg0NGUgbGVnYWN5LXRydW5rCiszMTc4NSBiODRlNmI0ZTE4Yzg1OTljZmQzOTc1MTg0ZmZlODFiMjlhY2MwNDRkIGxlZ2FjeS10cnVuaworMzE3ODYgNmU0OWJhM2Y2MGJlNTU2MDA5ZTU2ZTNjODVhMTE2N2Q2N2MzZjBmMSBsZWdhY3ktdHJ1bmsKKzMxNzg3IGEyZTY4YWRkZThiMGY0Y2EwOTQ4YjA0OWNmM2UzZTg2ODBmZjczYzMgbGVnYWN5LXRydW5rCiszMTc4OCA0Y2FmYTUxNDEwMTI1MmQ1OTE3ZDkxNjA2NDBjODNmZTQ1YjIxNjY1IGxlZ2FjeS10cnVuaworMzE3ODkgNDdjYjg1Y2RkNWYzMWRlOGI1ZmY3ZTFlM2E5N2I1Mjg3OGEwY2M0OCBsZWdhY3ktdHJ1bmsKKzMxNzkwIGQ0NGY5Y2MyNzI5MDU1NTUzMmUxZmVlZTgyM2NiYTEyZTNmOWM1ZDggbGVnYWN5LXRydW5rCiszMTc5MSAyNzFiYWE4ODQyNGJlMjlhODgzYTUyMTlkZGI3OTMzMWFhYWNhYTcxIGxlZ2FjeS10cnVuaworMzE3OTIgNjI3M2ExNThmYjBhY2Q3MWM3NWI3ODE4ZTJlODEyNmY2MjMxMTA5YiBsZWdhY3ktdHJ1bmsKKzMxNzkzIGI1ZDZjMzhlYjE2MzZmZTYzOTA4MDMyYzcxYWRjYzdmYzNjYmI2MGYgbGVnYWN5LXRydW5rCiszMTc5NCA0OGE2MWE0YjczYTEwYmUxNTgwMDBiYTljNGZhMDY3MzFmZDk4YWQyIGxlZ2FjeS10cnVuaworMzE3OTUgMzBmYTFmNjFiMjMxYTdlZDZiODNiNGE4MGFlYjZjZTJlYjM2MTM2MiBsZWdhY3ktdHJ1bmsKKzMxNzk2IDhmMjNkMzlhOWEzMzg3YTYyODdkYmM4ODZiMzQ2MTFiZjQ4NjhhYTAgbGVnYWN5LXRydW5rCiszMTc5NyBlYTcwMDMyYTI0YjEwMjQyMWZkYzMzMjRhYjMzMWFmY2YyMDY0NDU4IGxlZ2FjeS10cnVuaworMzE3OTggMDA4OTJhZmZiNjBhZTg0ZjYwZDhjZDlmNzQ1MzM2ZDcxYTM2ODRmNyBsZWdhY3ktdHJ1bmsKKzMxNzk5IGZlMWQ1NzFjM2Y4MDNlMzczZjA5OWQ2ZWRjZTAzMGVlNmQ0MDM1YzAgbGVnYWN5LXRydW5rCiszMTgwMCBmMTNhZGMwMGMxNjUyMDM0N2E5MGQwYThiNjJjOTY1MmY1Mjg4ZjU3IGxlZ2FjeS10cnVuaworMzE4MDEgMDU3NDMyNmM3OGJiYWU0NmI3ZWZkODc2ZWM3NzU0MjYzYTMwYTBmYiBsZWdhY3ktdHJ1bmsKKzMxODAyIDU4NTU5MTViMDBmNWU1MTQ3MTMwZGIxOTA3ZDhmNGY5MmJhNDNlMzEgbGVnYWN5LXRydW5rCiszMTgwMyA1YzNhY2JmMjJhMjZmNjcyZmIwZDgxNDc2OWIxZjNhOWI2MGI5Zjk3IGxlZ2FjeS10cnVuaworMzE4MDQgNjI2OWVhYWRkNDFlZjRiYjNiOGIzMDM5MzZmYzMzZDE0MzQ5OTlhMSBsZWdhY3ktdHJ1bmsKKzMxODA1IGY5NWRmYjMzZDc2MjkzYzgwODkxMTRlOWE2NzE4ZjczYjNmYTYyY2UgbGVnYWN5LXRydW5rCiszMTgwNiBhNTlkOGU0Y2I5MDM4NjdiZjFlNzAyMDAyMDFlY2UzOWY1YjhhZDY5IGxlZ2FjeS10cnVuaworMzE4MDcgNGY2NzlhYTYyM2MyZjZjMjU2M2Q0ZmRkZjA3ODk3NDE1MDU2MWViZSBsZWdhY3ktdHJ1bmsKKzMxODA4IDRiNmQ3Yzc1Njk4YWM3YmYzMWY2NzRjMDQ2ODA1ODRjYzJhMTNhOWMgbGVnYWN5LXRydW5rCiszMTgwOSA2ZWU4ZDVhMzBjYmMyMjI0YTFkNDEyYmM1OGRiZDcyNjM3YmJlNWE1IGxlZ2FjeS10cnVuaworMzE4MTAgMzY1NWU5MWIzZGVhY2ZmMmNmYzFhNWU0NTc2MzMxNDE0N2RmZDhmOSBsZWdhY3ktdHJ1bmsKKzMxODExIDRiMWZlZjM3YWM3YmQ3YWE4YzFiNzVmZjY4OWRmYjE3MWY5ZWVmOGEgbGVnYWN5LXRydW5rCiszMTgxMiBkNzYzMDE4NTg5NDFjOTBiOGU3NmQ5OGU4MmFiMjIyZDdjNzFlZGM1IGxlZ2FjeS10cnVuaworMzE4MTMgYjI0NmNhMDMzZTNlZTdkODQyNWRhZjNjNjE2NGZkNWRhZGQ5ODVjYiBsZWdhY3ktdHJ1bmsKKzMxODE0IDAzZDNmYTNlMWQ0ZTVjYTRmYzU3NTVlYmEyYTI1YjAyZTQxMzc1MjMgbGVnYWN5LXRydW5rCiszMTgxNSBmYTE4ZGY3NDZlYzUyNWQ3NzI2YTViY2I1YWU1ZTAxNWM1Y2JhZjc5IGxlZ2FjeS10cnVuaworMzE4MTYgNWM0NmM5NTg3YTJmYTMxNzhlZjFjMGJlZjczNjBjZDg5M2YzZTQ5NyBsZWdhY3ktdHJ1bmsKKzMxODE3IDkyN2E5ODMzZjgzYjc5YWUxYmE5ODcyYmZjYThmYTNhZTEyYTE5MjYgbGVnYWN5LXRydW5rCiszMTgxOCA2YzA2NjdhYzkzOWVkZDNmNWMwNmZjN2EyYzljMjNmYTA3ZDliMWY4IGxlZ2FjeS10cnVuaworMzE4MTkgOTJiOTMwMTMwMGMzOTY4MDVlYTFmZDQyOTYxYmE3ZGYyYzExOTI5NCBsZWdhY3ktdHJ1bmsKKzMxODIwIDI3NTFjNWVmOThiZTZjYzk3OTMzZDA4NGFkOGZlZWU3ZDRlYjZkMTkgbGVnYWN5LXRydW5rCiszMTgyMSBhNGU3ZWRjNjkwNTRkNTAzYmYyMzBhYmU2ODU0NzBiZTA5OTFiYjg0IGxlZ2FjeS10cnVuaworMzE4MjIgMTU2OTExZGJhMzA2YzEyNzgzMmM3ZDc5YzRmZTcyZjhiZThmNThlZSBsZWdhY3ktdHJ1bmsKKzMxODIzIGJlYTNkMWZkYTNkY2IwMjExMjFmN2JmNmJkZGNlZWVkNzViYWE0NDkgbGVnYWN5LXRydW5rCiszMTgyNCBiNzhkOGJiNWViZDcxNDc0ZGE3OTlkMDg1N2I2ZWZkZTAwNzIyODE0IGxlZ2FjeS10cnVuaworMzE4MjUgZTI4YjQ4ZmM5MDBiZmRhYWQzMzEyMWYxYmU4YmU4NGY4ZDczZTliMyBsZWdhY3ktdHJ1bmsKKzMxODI2IGZjOTI5ZDcxYTQ1MGY0MzhkODgyM2MzYzE0ZTg0YWQzOWQ4YzBkMjQgbGVnYWN5LXRydW5rCiszMTgyNyA2NWI3MjI2NzM4MjkwOTczN2RiM2Y1NjMwOThmZDdmOGZkZDZlZWJkIGxlZ2FjeS10cnVuaworMzE4MjggZmQ5Yjg4MmJlMDc5NzViZmZkNWJiMjc0OThlNDQ3ZjAxMjNjZGRkMyBsZWdhY3ktdHJ1bmsKKzMxODI5IDdmMGJmYmVjOTg3ZmEwZGYyN2VlZDA2YTBhMGNmZGQ5YTFjZjE1ZTkgbGVnYWN5LXRydW5rCiszMTgzMCAzMzY1NjY0YjgyOTQyYmFjNjY1Yzk3MzEyMDNlMWJkYzlkNmUwMWE4IGxlZ2FjeS10cnVuaworMzE4MzEgNGM2NDRhNjBjMzBkOTM4NTVkZjFhOGJkNDAzZGMxZmVjN2ZhNzliYSBsZWdhY3ktdHJ1bmsKKzMxODMyIGIxMzU2ZGJhYWI5YTJiOTZlZmI2YTgxMTgyODE2YzhkMDFjMzZlNTUgbGVnYWN5LXRydW5rCiszMTgzMyBmYmFlMjBhMmUxMTZkZWVmN2FmMDk0NGQ0ZTRlNWQ2MTFmODAzNmI3IGxlZ2FjeS10cnVuaworMzE4MzQgMTAyOGRjNjgwN2E1Zjk4MDVjYmE5YjYyNzBjMTNhYjAxZDljMmJkYyBsZWdhY3ktdHJ1bmsKKzMxODM1IDQ1OWM0MjkxZjc1OTYzMGQ3YTE1ZTkzMzc0NmVjZjg1MDFiNTc1Y2UgbGVnYWN5LXRydW5rCiszMTgzNiA2YTJkOWFlNDMwYmVhNmMxZjM1MjA4MTg2NWE2MjRiMjA2YTZmNjk0IGxlZ2FjeS10cnVuaworMzE4MzcgYTI5NTdmZmNiNTk4NjVkMmY2MDc3NGUwZDRmOGJlNmU1ZTFiMDg2MyBsZWdhY3ktdHJ1bmsKKzMxODM4IGVmNTI1Yzk5YjRlZWQ2Njg1MGNkM2M2ZDQ4NDJhMzRmYmU3NDY4YWEgbGVnYWN5LXRydW5rCiszMTgzOSA1MWM3NGI3OTVlOWU5NDk0YzA5ZmQ3NzE2ZmQwMDZkM2NhZGM2NTlmIGxlZ2FjeS10cnVuaworMzE4NDAgMTYyZWQyYTljYzBjOGEyN2U2ODM2MzEzZTlmYTVmYzEwMGUwMTVmYyBsZWdhY3ktdHJ1bmsKKzMxODQxIDdmYzNlNjRkMTQyNDE1MzJjZTYzZDI4M2RmZDYzMzhhMTFjYWMzZDQgbGVnYWN5LXRydW5rCiszMTg0MiA3MzgxNGNiNTgyN2Y4YzVkMjM0YjM3OTQyOGZlNzg5MjhlMjhhYWJkIGxlZ2FjeS10cnVuaworMzE4NDMgOGQxMGY2OGQ3YzNiMGFmMjkxYzE1YjgxZTUyNjY2OGQwNmM2OGYyYSBsZWdhY3ktdHJ1bmsKKzMxODQ1IGE4ZDI0Yjk3YzgxM2IyMGRkYzRhNjM2NGZjYmQ2ZGZjMjI4ZWNjMjYgbGVnYWN5LXRydW5rCiszMTg0NiBiOTcyYmU4MDY0NzdmMTMxYWVjYWQxYTk2NmVlZDViNzExNWQyN2Y1IGxlZ2FjeS10cnVuaworMzE4NDcgYzlmYzM1ZDBhM2ViYWJmMGQ0YzAxNDg1YWI0YTI3NTIzYjIyMTY5ZCBsZWdhY3ktdHJ1bmsKKzMxODQ4IDIyODk3Y2ExMDI4OGRkMWMyZDU2NmExNTk3ZWE5OTU2NWI1NTc0YTAgbGVnYWN5LXRydW5rCiszMTg0OSA1YTRjN2U2ZjAwOGUyMTJmM2YwNjBjYzU0OGI3ZTFlZTA0YzhlNjQ2IHJlbGVhc2UyMi1tYWludAorMzE4NTAgZTQwNTI3NzY5ODY0Y2IyOWQ2OTFiYjFjZTM5YjI3ODAzY2RkOTFiYiByZWxlYXNlMjItbWFpbnQKKzMxODUxIDE3MWYxODYyZGVhOTU3MzU0ZTQxYzFmNjg5M2M5NDgwYjgyZjRlZDcgcmVsZWFzZTIyLW1haW50CiszMTg1MiA2NWRkOTYxMmE3NDgwODAxNjExMDdiNjQ0N2JmZDU1Y2Q5MzgyMzNkIGxlZ2FjeS10cnVuaworMzE4NTQgMGJhMTdlOTNmMTM5ZjU3NGZlM2E1YjMwMjMyZDc1Mzg1Y2VhODZkNiBsZWdhY3ktdHJ1bmsKKzMxODU1IDc2NTRjMjRkZWNjNGVkYjljNDQyYmU3OWRjMTg5OTAxNWE0NjhkZWEgbGVnYWN5LXRydW5rCiszMTg1NiAyYzIyYjVjMDlhNThkYzYxOTNlMmE3NGU3YTAzZDcxM2M1YmVjODkyIGxlZ2FjeS10cnVuaworMzE4NTcgYWJmZTRiMzgwMzA1ZWQ4YzJhOTE3YmUwOTNjYTIzM2I5YjIyNGVkNSBsZWdhY3ktdHJ1bmsKKzMxODU4IDE0MzE2ZGYxYzI5OGI3MTY1M2RjNzU0YjUxZDA4NDAyNmIyNzJjZTAgbGVnYWN5LXRydW5rCiszMTg1OSA5NjAyYzY2NGVkN2EyY2JlNjgxZjIwMTllZGFkYjY3NTk3NzYxMmExIGxlZ2FjeS10cnVuaworMzE4NjAgNzM0MzRmYTlkMjg1MmI3OWM5OTlkMjc4N2M0Y2UxYTM5YmJmNmZjMCBsZWdhY3ktdHJ1bmsKKzMxODYxIDhjMDgyOTM2ZGFhZmRhZWUzMjM5NTdhY2Q5ZGVjNWY2Y2FkYThiMzggbGVnYWN5LXRydW5rCiszMTg2MiA0NzA1MDRlZjU3OGIyMDUzNjY4NThhYTQ3YTAyMDlkOWFhNjRhMWZmIGxlZ2FjeS10cnVuaworMzE4NjMgYjE0ZDY3NDFmNDk2NTFiODZmNjIwMDAxZWQzYjY2MDBmYjkzNTljMyBsZWdhY3ktdHJ1bmsKKzMxODY0IDcwMmU1NDdmMzFlMGQ1MjVkZjU1NGNiM2VhMDQ1ODdmMDgwMTk3MGIgbGVnYWN5LXRydW5rCiszMTg2NSAyMjZjNWJkZDE2MGI5NWFlN2M3MGZkYjgxYWZhOTg2MzQ1MjA2OGNhIGxlZ2FjeS10cnVuaworMzE4NjYgMDBiZGE1NmY1NDMzMDYzY2ZiZWMxYTU1NzEyMDNmM2JhNzJiOGQzMyBsZWdhY3ktdHJ1bmsKKzMxODY3IDljMzU3MmE1NTc1Zjk5NzMyMjRkOTA1MWJhODc0NGZmY2IyZDJlZWQgbGVnYWN5LXRydW5rCiszMTg2OCA1YzlkY2RjN2ZlOGQ2OWIzYjJmNGMzZTdhMWRhMThhZjdiZDM4NDRjIGxlZ2FjeS10cnVuaworMzE4NjkgNGY0N2RmMjA0MTVjNzFlYjk5MDk2MWRjZTYxNGZmMzM2ZjM2ODMyMSBsZWdhY3ktdHJ1bmsKKzMxODcwIDI0ODlkMjIyMjhkYmJjOTdkZDEwMWExOGRiNmM3YjFmMDZhOWI4MWYgbGVnYWN5LXRydW5rCiszMTg3MSBlZjU1ZjIyMzJhMTBkNzMxYmRlYWUwN2VmZGM0OGM4NjBmZmFiYWMwIGxlZ2FjeS10cnVuaworMzE4NzIgOTBmN2ZiY2IzNzA2OTU3ZWY3Njk4ZDg2NDgwYjRjMDIzZGFiMmYwMyByZWxlYXNlMjItbWFpbnQKKzMxODczIDkxODhjYjhlMTkxYjQ4OGNhNTMwYmRmYzUwZTMwZTU3Zjc5NTQwOWUgbGVnYWN5LXRydW5rCiszMTg3NCA5Mjc4YjFjODBhNjdmMGNmY2VhZDI5NWQ0Y2I0OTU3MjI2NTM4ZWZjIGxlZ2FjeS10cnVuaworMzE4NzUgM2UxOWUzYjcyZDliMWI5NzZkY2M0NzE2NTUzMDAyOTUwY2VhMThiZiBsZWdhY3ktdHJ1bmsKKzMxODc2IDAyM2QzYjUwZTU5Nzk3NGViM2Q0MWMyYTdiYWQzZDRjZTYzMzJiN2YgbGVnYWN5LXRydW5rCiszMTg3NyBiYzM3MGI4NzUzZjEyNjBhMGY0ZDY2OWIxNmJiNGRmNWMxM2JmMTY0IHJlbGVhc2UyMi1tYWludAorMzE4NzggMzYwYTU3ODA1Njc2ZGQyM2FiOWE2NDBlYWY4NDg4NGRmMjhkMTBmOSBsZWdhY3ktdHJ1bmsKKzMxODc5IGZkNWVmNzAwMzQ2OWE2MzE4NjQ1OGNhMTdlMWFiYTJjYWM0YmVlZjYgbGVnYWN5LXRydW5rCiszMTg4MCA5MmRhZjhiMDZhYmMxODYyZjVlZmU2OGM1MTA3OGUwNDZmMmU5YTliIGxlZ2FjeS10cnVuaworMzE4ODEgOWViYzYxYjllOGJkYmE2NWEzOTE1MmVjNTI1NTUyMTUwMzFlNzdkMiBsZWdhY3ktdHJ1bmsKKzMxODgyIDY3YjIyZmE0YThmZTVmNDY0ZWZiZmNiYmNkOTM0YmVmY2RhNmZlMDQgbGVnYWN5LXRydW5rCiszMTg4MyA0ZTIyMTM2OGFmNzA3YjRiMTUzYWJmN2E4NmZlNzlmZDA0MGYwNWIwIGxlZ2FjeS10cnVuaworMzE4ODQgODUwNjI2ZDQ3NTc0OWQ0NmRlZWI3NDY1OGJhMmZjODk0YzRkN2Y2OSBsZWdhY3ktdHJ1bmsKKzMxODg1IDMzNThkZmIxYjE4YjQyMmUwYTliZWM4NDAxNmQ3MGJkY2MyNjYyMmUgbGVnYWN5LXRydW5rCiszMTg4NiAxODU4YmNiNjE3MDY4MmMzYjc3ZTNiNGU4Yjg3MTJiYjk5N2E1Mjg2IGxlZ2FjeS10cnVuaworMzE4ODcgY2RkNWQwY2ZhNmRjZTM1OGQ5MjZiOWVlODM2MWMwZWIxYmU3NGNhNyBsZWdhY3ktdHJ1bmsKKzMxODg4IDYyZGYxN2U1MDFkYzY4M2EzNjI0ODg5ZjBlNWQ1MjgwNjc5ZTAwNzAgcmVsZWFzZTIyLW1haW50CiszMTg4OSAwMmNlMjI4MzBhYjk2MDk3OWEwMjY4NWQwMjBjNmU4OWZlYmNiNjcxIGxlZ2FjeS10cnVuaworMzE4OTAgYjkxYTgxZDY4MDY4MGUwMWZkNjE0MTczYWIxNTVmZjZjNjc5MjE3MiBsZWdhY3ktdHJ1bmsKKzMxODkxIDI5MWI5ZDg2NmVjZjJhOWM4ZDdmM2VmZGRiNzk4NTljYjgxZDBiYzIgcmVsZWFzZTIyLW1haW50CiszMTg5MiBlZWMzZmQxNjRhN2RiOGRkNGM3ZmU4OGMxOWUyMjQwZGZlNzQzMWQwIHJlbGVhc2UyMi1tYWludAorMzE4OTMgOWYyODdlNWViMDM3NzUyNDllZTFkNDhhMjM5OTdiNDEyM2RlZGQ4OSBsZWdhY3ktdHJ1bmsKKzMxODk0IDcwMDAzYjBjYjgzNzk1MjBkNjgwMjQxY2ZlODA2OTUxNDlmM2U2MmUgbGVnYWN5LXRydW5rCiszMTg5NSBiNTZkMTBlZDMzYzVlODVhZjJlZWRmM2NhNWEwMGJhMTk1MmI0MTY5IGxlZ2FjeS10cnVuaworMzE4OTYgOTBmMTdjMzc0ZjU5MjcyOGU4OWU0OTlhMDY2NDdjMzI0ZDQyMGU5YiBsZWdhY3ktdHJ1bmsKKzMxODk3IDM0MzRkMWI5MjA2YTViZDhkZTk3NGMxYTUwMGJhN2Y5NTg0NDdkODMgcmVsZWFzZTIyLW1haW50CiszMTg5OCBjYzM1ZWQyYjI2YThiMmI1MDQzMzU0NGMzMGQzMjZjNTJmZTU1MjMxIGxlZ2FjeS10cnVuaworMzE4OTkgNWNmMWYyZjMwZGJkNmNjNDA2NWIzNGQ1ZTU5YzZmZGM1YmI2ZjdhZiBsZWdhY3ktdHJ1bmsKKzMxOTAwIDc5NzkwOTQ5MmMzODY3MjA0NDM3ZDFiZTVhYjFjOWZjYzRkZjYzOGQgbGVnYWN5LXRydW5rCiszMTkwMSAyNjgwOGFjN2VlNTFhZTk5MmE5YTBhN2VmN2JkZTc0MDMzNmYzNWQwIGxlZ2FjeS10cnVuaworMzE5MDIgOTgwZDZlMDExMmNlMWU0NjQzZDRkZDFhYzJjOTdmY2ZjNWI3Zjg0ZSBsZWdhY3ktdHJ1bmsKKzMxOTAzIDYxYjBmZjk4ZDk1ZGQzODFlMWNkNzNkYTlmMzA0OTJiYzRkNmU2ODcgbGVnYWN5LXRydW5rCiszMTkwNCAxNDM5MTU3NzZjYmMyZmYzMTc2MmUzYTU3OTI0YTAxMzI1ZjU0NzllIGxlZ2FjeS10cnVuaworMzE5MDUgZjVjOTdiNjVmOWU4NTY4NTc5Y2I5MzI1OWI3NDQxN2FlMTc4YzQ1ZCBsZWdhY3ktdHJ1bmsKKzMxOTA2IDFmYzFhMzA1ZTM5OTlhNDQxMDgzMGNkNDdlMjA1YTZjYjQ5MWIzNGIgbGVnYWN5LXRydW5rCiszMTkwNyBiNzM0MGIwOTU1NWQzMGJlOGJkMzRkZjVlZWVlODIwYjUwNmI5NDI5IGxlZ2FjeS10cnVuaworMzE5MDggMzA5Njg5OWY3NzRmZWFjOTI4M2FhOWI2NThjM2UzOTdmMWIxMTFkNCBsZWdhY3ktdHJ1bmsKKzMxOTA5IGUzNmZmNDkyY2JiMTYyM2MwZGQ3YzE2MzA4YmQyNzU0ZGYzYThlY2IgbGVnYWN5LXRydW5rCiszMTkxMCBkNTc0MjE2MjM0NDliN2FiMDkyYTllZjEwYmMyNGE5YjMyNzE3NWYxIGxlZ2FjeS10cnVuaworMzE5MTEgNDUwNTRiZjU5MmU1ZTAzZWQ2MTcxM2Y1YmNkMjMzNjRjYTUxZWU1ZSBsZWdhY3ktdHJ1bmsKKzMxOTEyIGRkODNhOWE1M2RiZmI5MWY4OTUzOTE1MWU4NmU5YmIyNDQyNDE4ZjEgbGVnYWN5LXRydW5rCiszMTkxMyBkMzRiY2IzY2IyMTZlYTk2OTY5M2FmYjdjNmUxYzg4YjM1ZGQ5ZjNlIGxlZ2FjeS10cnVuaworMzE5MTQgZWRkZjU5ZjVjYzU4NDE0NzdkZTYyMjJlOGU3MWI0NWQyZGEwZTcwMyBsZWdhY3ktdHJ1bmsKKzMxOTE1IDNmZmJiYjRmNDhkYTYzM2YyZWE0MzcyM2FiMjVlMTMzZjU0OTA4MjEgbGVnYWN5LXRydW5rCiszMTkxNiA4ZDdmZmU0Y2FhZDlhY2FjODQxYzU4ZThkMmQzMWFhZGQ1NDlhMmEwIGxlZ2FjeS10cnVuaworMzE5MTcgMzRlMjJjZGZhYWQyNDYzODUzODA0ODE3NjgxMjNhOTI4MzgxYTlmMSBsZWdhY3ktdHJ1bmsKKzMxOTE4IGM3Y2ViOTU2MGViMGUxYmFhMTk3ZmVjMDBjYjIyZjg5NTlhMDM4MjYgbGVnYWN5LXRydW5rCiszMTkxOSA3MjI0N2VlMjI2NTM3NGNjNTViOTBjODgyNWY5MTkwY2M2Y2JkZTY2IGxlZ2FjeS10cnVuaworMzE5MjAgNmZkZGNkZDExZjQ5ZmFkYzBjNzhhZTQ5MDJmNThmMWE4MGJjYmI1NyBsZWdhY3ktdHJ1bmsKKzMxOTIxIDMxYTUxMWY3NGIyODE2YjEwYmNiODFmOTNkM2IyODE2OGI0ZTRlZTMgbGVnYWN5LXRydW5rCiszMTkyMiBiYWIyYjI4NjNhNmUwNGMwMzhmNDMzZGZiNTMwNTFmYjVjYzcxNjVmIGxlZ2FjeS10cnVuaworMzE5MjMgOGUyNDczYWQ3YzBjYmFiM2Y2Y2IwMGQ5YmY2MTNhZDdiMTRmZDQ2MyBsZWdhY3ktdHJ1bmsKKzMxOTI0IGM5N2MxMDRjMmQyNDk2YzhiMWQxNWQ1YzczM2Y5NmJjODkzMGM5MWIgbGVnYWN5LXRydW5rCiszMTkyNSA5YWFjODcwZjAzYTI5OTAyYzFmODNiYjE1ZDg3MDYyZGZhMDBhN2FkIGxlZ2FjeS10cnVuaworMzE5MjYgZGUwMTMyNzY1ODRhZWJlZTQ5YzY3MGM3N2JkNDAwNWU1ZjRhYzY1MyBsZWdhY3ktdHJ1bmsKKzMxOTI3IGZmNzhjM2MzZWJjNDY2ZDAyOTBmOTFhYTlhOTVkMDU2MTJiOGI4YjUgbGVnYWN5LXRydW5rCiszMTkyOCBlYjQ4Mjc4YzJlMTAyNWNiMDg2NzM1YjdiNjZjZDQwMjgxODk3MGFkIGxlZ2FjeS10cnVuaworMzE5MjkgN2Y5ODFkZDdmYThkMmRjYTQ1Yzk5NTczODNmZGJkOWMwMzMzMzg2MSBsZWdhY3ktdHJ1bmsKKzMxOTMwIGZiYWU2NDU1MTNkNzQ3MzRmMWJiYjU3YjgyODA1OWQ1M2I0YTRlOGIgbGVnYWN5LXRydW5rCiszMTkzMSA3NzA4OTJkNzhmMmJiNzk4NmExZTI3NTcxNDM0MzcxYWEzZjA1NmM3IGxlZ2FjeS10cnVuaworMzE5MzMgNDU4NTRmYzcwN2Q2NDk5NDJiNjgxMDIwYjFhZDRmYmQ0OGIzY2QxNCByZWxlYXNlMjItbWFpbnQKKzMxOTM0IDMwNzQ4YzE1YTQ4MWFmNzcxNjMxZmZjM2I0NWEwNzgzMTU5ZjBiZjAgbGVnYWN5LXRydW5rCiszMTkzNSBlMzMzZDc2NWY0MWVlMWYzOTVhYTM5OTcxYmFjNDQzMGQwYWQ4ODQzIHJlbGVhc2UyMi1tYWludAorMzE5MzYgZDg3N2ZmYTRmN2YyMmFjNWZlNmVlNDlhMTQ1NWEzNDJjNjUwMDcyOSBsZWdhY3ktdHJ1bmsKKzMxOTM3IGNlNGI5MjhjODM0MGExMjI4YWE5MDQ3OTZlN2Q1ZDU1YzU4ZDdhZWUgbGVnYWN5LXRydW5rCiszMTkzOCA3OTVkNjE0NGQyZWU0Y2Q4NDMwMzlmNTUwZTdiMTFiYTdlMzBiNjk1IGxlZ2FjeS10cnVuaworMzE5MzkgN2RhMmVlM2E5YzQzYjNiOWYyNDM4MmFkY2MyMmQzNGI5YjRhNTk1YSBsZWdhY3ktdHJ1bmsKKzMxOTQwIGNhNDNhYmIwNzYzODY4NzkzMGQ3ZjBmODE0NTBlZWM3MmRjNmU4ODkgbGVnYWN5LXRydW5rCiszMTk0MSBlMGViZmEyZmI5MzY5ZGJjOGM3NDY0MjFmMWZhYjMzNDM2ZjJmOWYyIHJlbGVhc2UyMi1tYWludAorMzE5NDIgZjZiZjc4MTczMWQ0MjU2NGRiOGU2Y2Q3MzdlZjgzZDllYTA1MWM1OCBsZWdhY3ktdHJ1bmsKKzMxOTQzIGY5OWNmOWJmYmJhZjViZWVmZjNjNjI5YTcxYzM4OWQ0MTkyZTY4YTUgbGVnYWN5LXRydW5rCiszMTk0NCBiODcyMjk3NDA2YWE5YzlmYjg2ZWMxNjRjNmNmZDhlN2I1NzM3MTI5IGxlZ2FjeS10cnVuaworMzE5NDUgYjIzNDM0MjExZDAxZGQ4MDBmMjFmZDkxNjNlYjlmNjE5N2VkZTlkNyBsZWdhY3ktdHJ1bmsKKzMxOTQ2IDk0NjAxZDhmYTUxZGI2OGQ4YjQyZjlhYjI0ODQ1ZDU3ZGUwZTc3YTAgbGVnYWN5LXRydW5rCiszMTk0NyA5ODNlOTI5MWE3YjQ2MWUyYWQ2NmE0MDc1NzYxMGQ4Y2NmY2NjNGQ3IGxlZ2FjeS10cnVuaworMzE5NDggZjgxMjM5YzEyYzYwZjgwNjIyMzE5ZTZhZTU4NThlNmIxNmVjNWVlNCBsZWdhY3ktdHJ1bmsKKzMxOTQ5IDRlZGU1N2E0MmM2MjBiMmQxZTAwZTU0YmY2MzI5ZDM1MTljNzMyNTUgbGVnYWN5LXRydW5rCiszMTk1MCAzMzMxOTQ1OGZlOTk1YmVkYmU1ZjI4NmU3OTM5MmM5MDY2ODcyZDY5IGxlZ2FjeS10cnVuaworMzE5NTEgMDc2MTdkMDkwNGE2M2YzNjE3ZWIxOWFiNGVkNGE1YmViZmY4N2I2OSBsZWdhY3ktdHJ1bmsKKzMxOTUyIDVlZTI5ZjEzNjRmMzM1NzgxNWYyOGMyNGJhMWQ2ODllNTdhYzA3OTIgbGVnYWN5LXRydW5rCiszMTk1MyAxNmFhNzJhOGMyODFlZjIwYTUxZGI3YThjYjNmMDRkMjhjMzE3ZDYxIGxlZ2FjeS10cnVuaworMzE5NTQgYmM5MDc2YjAxNjk0OThhYTUzYjM3NDQ3NmYwODU1NGM3NDBmY2VmZiByZWxlYXNlMjItbWFpbnQKKzMxOTU1IDFlMGU2Nzk0NzE3NThiNTlmMDY1N2U0ZjY1ZjRhY2M1ZmMyN2Y5OGMgcmVsZWFzZTIyLW1haW50CiszMTk1NiBkNTYyODJjMjhhMWVmY2RmNWVjY2QwMTE5MzQ1NDBhMTAyZDQ0ZGRjIGxlZ2FjeS10cnVuaworMzE5NTcgNGYwMzhkM2E4ODc4Y2JmNzQ5NWI3MjRhNTFkZWFiYjI1NzQwNTIyNiBsZWdhY3ktdHJ1bmsKKzMxOTU4IGEyMTEwY2IxNjVmMTExYmZmZTk0NWI0NGMzMTcyZjUxNzAwN2M4ZjAgbGVnYWN5LXRydW5rCiszMTk1OSA2NjQyMTJhNmUyODNlMmEyYmI4MTM0YTEyNWQ1YmM3YjljZjM4ZDUzIGxlZ2FjeS10cnVuaworMzE5NjAgZWU5NGE5OGNmMzk2YzA0NDVhMzhiYTk3NmY2YWFlNzIwOWE0YzVmZCBsZWdhY3ktdHJ1bmsKKzMxOTYxIGM2YzJmMjZkZjY1YjA0ZWNkZGY3MTcyMmZlN2Y1OGU1NmNmZTYyMTUgbGVnYWN5LXRydW5rCiszMTk2MiA1ZjUzNjRhYzRhZGJjNDdjMGRjODE0OTRmZDJmYTZiZGZjNTU1NDdkIGxlZ2FjeS10cnVuaworMzE5NjMgZjAwY2Q2OTNkNGUwMmQzMjdhMTZhNDc1MDZlNTNjY2JiNWY0MmI2NyBhc3QtYnJhbmNoCiszMTk2NCBlNTMwNDNiZGI4ZjIzYWQ0ZDkxOGQ4YWQzMzhlYWFlMGExMjZiOTk4IGFzdC1icmFuY2gKKzMxOTY1IGNiOGQ0MjdhZmQyMTE1NzJjZDZjODE3Y2ZjNGFkMDVmZGMyMzY5NzIgYXN0LWJyYW5jaAorMzE5NjYgZmEzNWM4YjQ1YjI0NTZkNTMyYTRmMDBiMTk2YmNjNGYwNjQ4ZDgwYyBhc3QtYnJhbmNoCiszMTk2NyBkMWQ2MGMyZTBhZTk5M2E2YzE4YTA5ZTYxNGQzNzkzMmM3YTI5NzFhIGFzdC1icmFuY2gKKzMxOTY4IDMwNWMxNzUxMWE4NjljOTZlNzIzYjA5NDgxNmM4ZDYzOWU1ZDU3ZDAgYXN0LWJyYW5jaAorMzE5NjkgNTVkMGU5OThiYzQ2YzQ3NTBlYmU2OGI4ODdlODRiZjRkMjhiM2MyYiBhc3QtYnJhbmNoCiszMTk3MCA3MzY1ZjEzMGYxNTgzZGE2ZmM0Yjc5ODAxNzJjZDgyZDg2NTEzNzdhIGFzdC1icmFuY2gKKzMxOTcxIDkwNzNmOGZmNzI1NjJhYzc5NzFhODMxZTk4OGZkNGNlMDI0YzYzYzcgYXN0LWJyYW5jaAorMzE5NzIgNjNlZDg1MjkwNDEzMzYwOTg4OTgwZWYzMzZmN2JiMDRlZTM4MjM0MSBsZWdhY3ktdHJ1bmsKKzMxOTczIDVlZjYxMzJmM2NhYmM5ZGRlMWE4MGMyMDVmNDQ3MWY0YjQwYmE1MWMgY2FjaGUtYXR0ci1icmFuY2gKKzMxOTc1IGVjODAzY2M1NzE4NTE3ZTI2NTk4ZTUzYWUwZjFhN2E4ZTdkZTk0MzcgYXN0LWJyYW5jaAorMzE5NzYgNWIxNTJhYWM4MTNkN2RiMGJlMGVmYTVmOTJjZDU0MGE1MGY2YWVkMSBhc3QtYnJhbmNoCiszMTk3NyA4ZmZmYTZkMTU0NGE4NDM1ZTQwMGExOGNiMzUxOWU5MjExMmM4N2RjIGFzdC1icmFuY2gKKzMxOTc4IGRjZGM0NTE3NDBmYWI0Yjk1NDIyOTlkMWIyOWZhNzkxOWVmZTI4MDMgbGVnYWN5LXRydW5rCiszMTk3OSBmMzYyYzlhZWRmMTM0YTVhYTQ1Njk5NjI4MjU4ZDlkMzU1MTVhMDUwIGFzdC1icmFuY2gKKzMxOTgwIDczNjdhMzg0YTc0NTU1OGE3MDcwMDI2MTY5MDk3YTBlOGZhNjJlYWQgYXN0LWJyYW5jaAorMzE5ODEgMTFkODI3ZDkzOTA0MjliOGIxNjZmNGI3OWU0MmRjYTA2NTRkZDRlOSBhc3QtYnJhbmNoCiszMTk4MiA2MzNhNGJiZDc5N2UxN2VlODllNjQxY2ZiYThkNTAyNmNmOTViN2EzIGFzdC1icmFuY2gKKzMxOTgzIDc1NmY5ODdjMzU5MDEzYjk2NjFjMzdiMzA5NjkxMzVkN2Q1YmRmNTQgYXN0LWJyYW5jaAorMzE5ODQgMzUwZWEyNmU3ZmQ5NWU5ZTgxM2EyYjQ5ZTZkNmE3OTY0MjY3MzQyMSBhc3QtYnJhbmNoCiszMTk4NSAyMzBjY2I5ZTUwMDBlYTMyYTg4ZjRjMTgyMzZiMmJhMjhhMWI0ZGViIGFzdC1icmFuY2gKKzMxOTg2IDA3ZjNmYTYzOWQ4ZWM2ZDVlNjRlM2Q5MWU4NGZjNjUyN2Q5ODFiN2UgYXN0LWJyYW5jaAorMzE5ODcgYjA5ZGIwYjk2YTc2YmMyOGJlNjVkMGVjZDhjNDVmNzJiNzRmODc3ZCBsZWdhY3ktdHJ1bmsKKzMxOTg4IDJkYTE0ZmM5ZTcyYmNhYzhiODdkNmNlZDZlYTk2MDQ2OGU0MzE2NzkgYXN0LWJyYW5jaAorMzE5ODkgYzI1YmI5MTNhMjM2M2JmNjk3MmUyN2VlYWQzY2M1OTIyMTFhZDFkMiBhc3QtYnJhbmNoCiszMTk5MCA4ZTY3YmVmNDI5YTQwOGRkMDg5YWI5NDNiZTAwYmVjZjIwODE5NWIxIGFzdC1icmFuY2gKKzMxOTkxIDI1YTNjYzM3NjU3MmE2NzkwYmZlM2UwZWQzMWYyMjk1ZjA4NzczZWQgYXN0LWJyYW5jaAorMzE5OTIgOTA5ZmJlMjQzZjkwMjY2N2M5NDMwYmFmNTEzOGQ4NjZkNDI1ZmYwNiBhc3QtYnJhbmNoCiszMTk5MyA2ZWEyMGI4NmFjOGRjZjY0OGI3ZDljNDJjZGIzZmY4YTM5NjEyOTEwIGFzdC1icmFuY2gKKzMxOTk0IGY2YTExOTIwMTQ2ZWI1ODNjYWZmMTk2YjEwY2NlNTMyOTQ0ODI1NjAgYXN0LWJyYW5jaAorMzE5OTUgNGJjZGE2M2UxMDU0MWM1NzYxY2NmYjQ5MTUxZTE3ZjFhYWY5YTk0ZCBjYWNoZS1hdHRyLWJyYW5jaAorMzE5OTYgZjg0ZTFmNGQ0MzhlYjA4ZTc1N2UwYTNkZWViMTdjYTE2NWRiMWRmNSBhc3QtYnJhbmNoCiszMTk5NyA0NDk2MjAyMTk1OWYyOGQxMjM0NjYzZmY3M2EzZTZiMTNmOGIwMDU0IGFzdC1icmFuY2gKKzMxOTk4IDYzYWMzZDYzYjlmZTdhZGE5NDBjYzRmNjE4MGQ4N2M0ODlhYTFmNTYgYXN0LWJyYW5jaAorMzE5OTkgMTNlNTY3YWY5NGQ4YTljMjMzNzI0Y2QxMjcxNmJjZDBjYmQyZDI2MSBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDAgYmM3NjU3YWM0NmJiZTdlYWY4YThhNDJmZTYyN2YzZDFiNTY3ZDdkYyBhc3QtYnJhbmNoCiszMjAwMSA0MWIxZjIyZmNiMDE3NTZlMzAxYzYwODU3MWJjZmYwM2I3MzQyYmIzIGFzdC1icmFuY2gKKzMyMDAyIDE0NTY2MjE4MDBkNDU5NjU1NGEwYzUyNzBhZGRiODUwMDBkMDgyZjkgYXN0LWJyYW5jaAorMzIwMDMgOGU4YTkxMTNmYTJkODVkMjc0MGE2MGVjZDFmOTZkNTM4ZTZmN2RiYSBhc3QtYnJhbmNoCiszMjAwNCAzNjRiZmU3OTQ3OGY0Y2I1NmQ3NmVjNWUyNGJkZDM2YTVhNDc0YTA0IGNhY2hlLWF0dHItYnJhbmNoCiszMjAwNSBhZjE3NjQ4ODdhYTIzYzU5Y2UwZjkwZGU2MGRjMTA4ZGM4YjQ5M2M1IGFzdC1icmFuY2gKKzMyMDA2IDNlZmQ4MzRkMGZjNTJiZjFhZTE4MGM2YTcxMDU0YjI1Yzc3Y2NiMGMgY2FjaGUtYXR0ci1icmFuY2gKKzMyMDA3IDczMzcyOTI2MWM0MWEyMjY2MDU0MTBhZTIzYTE1YzdkOWI3OTAwNzEgbGVnYWN5LXRydW5rCiszMjAwOCBiMGNjYzViNWY3ZTJmMmU4NGY3YTQ0NDVhZmU0OWZiZDYwZWQ3Y2M4IGNhY2hlLWF0dHItYnJhbmNoCiszMjAwOSA2MzJhNmNhZTBiZTZmMTY0Y2UwOGRiOWZkYjFmMmM5ZTgyMzFkYWZiIGxlZ2FjeS10cnVuaworMzIwMTAgYWM3MjFlZDYxOTE0NGZiY2JkY2I5ZjFmZGI1MWZhZmM4NjBiNjMwNiBsZWdhY3ktdHJ1bmsKKzMyMDExIGUwNmM1NDBkYzJlMmYxM2FhNzViYjllNzcyMDJmMTdhNzJkNzA3ODkgbGVnYWN5LXRydW5rCiszMjAxMiBmZWEyOTI5MmI5MzFiNjc2OTc3N2E3MzgzZmNjMGVmMGExMzBjNDIwIGxlZ2FjeS10cnVuaworMzIwMTMgZjNkNGNjMjk5NmQyYzg2MTgzYmYzMDU1ODkyNzM3YzdiZmRmNjM1ZCBsZWdhY3ktdHJ1bmsKKzMyMDE0IGY1MjlkZWNkODIxZmVmZjQ4YjRiZDM3MjdiMTgzNjA1NDcwNzNjZWYgbGVnYWN5LXRydW5rCiszMjAxNSBlZDNjNzAwOGY5MGU4YzVlNDRmMjcxYjliYTYyMDk5N2YzZDZmNTJlIGxlZ2FjeS10cnVuaworMzIwMTYgMGNmNGUzMjQwMzgwN2UwYzlmMDY1Nzg2MDVmNTExYzQwYWQ2OGRkMCBsZWdhY3ktdHJ1bmsKKzMyMDE3IDU0OTZiODYxYzg5YWI5Mjc2NzMxNTA1ZWI2OGMxZjMwOTNhMzI4MmQgbGVnYWN5LXRydW5rCiszMjAxOCA3MGJkOGQ4Yzg3N2JjM2QzMDUyMjQyMGRhODk3NjI3ZjQzNzRjMzdjIGxlZ2FjeS10cnVuaworMzIwMTkgMGM4MDJlZWE1NjE1NzhhOTI4YzY1NTE1MTIxZDQyNTAwOThhYTlkMyBhc3QtYnJhbmNoCiszMjAyMCBiNmU2MmNiYmRmM2RlZDI4YTUzZjA0MWEzN2RiNjIwMDc2ZjU5MDc4IGFzdC1icmFuY2gKKzMyMDIxIGI0NTFhOWU2ZDk0MDkwZmFmNDAxNjU2OWQ1NGQ5ZDU5NjVlNzMwM2UgYXN0LWJyYW5jaAorMzIwMjIgMzM5MjhhNTFmMmYxMTJiZjM4YjNjZmQyYzI0NTc2MzU2ZTExYmJlOCBhc3QtYnJhbmNoCiszMjAyMyAxYTJmZDEwOWY2YjY5NjE5NDcxMWMxZTg0MjljNTJhMTQxMWZkMjUxIGxlZ2FjeS10cnVuaworMzIwMjQgYjU3NTQ2YjMzY2IxMzY3ZjA1NDYzMWExNGQxM2E0MmYwOTg3OTAyMSBhc3QtYnJhbmNoCiszMjAyNSBlYzYyMjFlOWI3OWFjYzQ2ZjJhMmZjM2IzN2M5Y2FkYmZjZmQyOTExIGxlZ2FjeS10cnVuaworMzIwMjYgYTkzNTEyNzAzODVhYTA0YTFjMDI2N2EyZWEzMDhkZWNiOTNlNzJiMSBsZWdhY3ktdHJ1bmsKKzMyMDI3IDMwZDFjODQ4ZDJiMDE2ODU4ZmYwOGQyNmUzYTE0YzJkMGMxMWZmMDQgbGVnYWN5LXRydW5rCiszMjAyOCBkNjU1M2QwODI3YWI5NjhjNzkwOGQzNWIxZGQzMWViZmVlMjU3YTQzIGFzdC1icmFuY2gKKzMyMDI5IDg0YjE2MzUyM2NkNGRhMWNkODcyOWEwYTIwMjQ1M2U5MGRmMGQ5ODAgYXN0LWJyYW5jaAorMzIwMzAgMTUyYmFmNGUzNTU1NTFlNzFhYmM1NDkyYTU4MGQ0NzkyODAwOTkyZCBsZWdhY3ktdHJ1bmsKKzMyMDMxIDcyMWU5ZTRlZWMxZWYwOGUxMTI3MGRkZTAxYWUxMjkzOGE2MWY3OGYgbGVnYWN5LXRydW5rCiszMjAzMiBmYTc5NWY0ZTZkYzc3NGJkNjM0OWNlZTFiZGZmYzUyN2E4MjNhNmRhIGFzdC1icmFuY2gKKzMyMDMzIGU1YzAwODk1NTM4MTExMjZjZDUyNDMxNGYwNDdjZWVmY2UzMDFhZTkgbGVnYWN5LXRydW5rCiszMjAzNCBhOGVjNzNkMTNkMDMzYzVhZmRhZjFmZGFlZTUwOTI3ZjU4ZWJhODRmIGFzdC1icmFuY2gKKzMyMDM1IGJiODViZTgzNzZiOGViYjkwN2M5NjNiOTM0ZGQxMjg5Njk5ZjUzMmUgYXN0LWJyYW5jaAorMzIwMzYgOGFkZTkwYWY2MTRjMzhjMmRlZWQzODA5ZGYzMjQxZWZmZTdkMDVmMyBsZWdhY3ktdHJ1bmsKKzMyMDM3IDJlZDdjMWM0NTdiOTNmZmY3YmI0NzhhYjYxMDFiZjBmYTg1NDk2YzQgbGVnYWN5LXRydW5rCiszMjAzOCA2YzY0NjE2ZDE3ZWRiYzliZjY3NjNjYTIxY2EyN2VmNDkwYmNjY2ZiIGxlZ2FjeS10cnVuaworMzIwMzkgOWQzYTI1ZTk5MDc1YjAzMzE0YTUyYzk5N2ZmY2M1OWQ1Y2JkZTUxZiBsZWdhY3ktdHJ1bmsKKzMyMDQwIDFiMWQ5OWRkYTJhMWQ2NDFhZDFmZWFkNTJiODNkMGM2MTE1MTdkMTggcmVsZWFzZTIyLW1haW50CiszMjA0MSA0NDU5Y2RjYmY1Mzg0MjdlYmJhNTkwZTJhNmJiNzJhNTllOTk3YWVmIGxlZ2FjeS10cnVuaworMzIwNDIgY2IzMzJkNDQ5MTcxNmUyMzg3MDZmYjBiM2MyZmU3MTVkZDFkNzA1ZSBsZWdhY3ktdHJ1bmsKKzMyMDQzIGNkNTU4ODc2MjRiMzI1ZjkxZTRkM2FlNTYyYzRmOTQzYzYxOGJjNDMgbGVnYWN5LXRydW5rCiszMjA0NCAyMTE0MzQ4NmNlNDBiMzc3Nzc2ODRiOTEwMDEwZjc0MzAxMmFhOWM4IGxlZ2FjeS10cnVuaworMzIwNDUgMDQxODJlNWE2MGIxMTIyYzIwNzYzZjQzYjY1MjcxZTVkNzQ4OTcxYyBsZWdhY3ktdHJ1bmsKKzMyMDQ2IDJlMjA2OTJkZDI4NjgxMzZmZTk1MzE0NDExNjUxY2E2MzBhY2NhMzggbGVnYWN5LXRydW5rCiszMjA0NyBlZTFjNzA5MDUwYjI0OTQ2MDU3YjBiZWZkZDM5NWE3ZDFlYmM5MTBlIGxlZ2FjeS10cnVuaworMzIwNDggNjMwNDA5ZjQxY2MzZjU5YWZiZWE4MzNiZTYxOGI2MjA1ODFlMjA2NSByZWxlYXNlMjItbWFpbnQKKzMyMDQ5IDg3MWRhNzAzZTRjMGE1YzI3YzFhMmRjZjExYjg0ZjhiMzc5YjI2MDYgbGVnYWN5LXRydW5rCiszMjA1MCA1ZGRiYzk3OWM2NTU5NTE4MzA4YTYzNWMzNjcwNTUxYThkYTY5NGQ5IGFzdC1icmFuY2gKKzMyMDUxIGQ3MDAxZmFkZmVmYzM3NzVlYjQyNWQ4NGEwMGJkZjA5ZTE5NTYxNmIgbGVnYWN5LXRydW5rCiszMjA1MiBkOTNhODQ1Y2U1YzA5MDNmZGQxYzFmMmUxOWJlMTAyYTMxYzRhOWIzIGxlZ2FjeS10cnVuaworMzIwNTMgOTM0ZGJlYjQwYjMxNzE1NzVmN2RhMWQzMWFkYWJlMmNiYzhiNmY3YSByZWxlYXNlMjItbWFpbnQKKzMyMDU0IGYyNTgwYzJlNzRkZDc5NjY4ZTNhN2IzOWFkNjFjMWRkNzRkNTM5MDcgbGVnYWN5LXRydW5rCiszMjA1NSAwMDkyYjY5ZjdmOTlhYTRhZGE0ZWYwMTBjOGJmMzhlMTM2M2ExMTNkIGxlZ2FjeS10cnVuaworMzIwNTYgMTYxYjhiZDhhMjI2ZmNmOWRhNThlOTBhOGYzZWM1NTI0ODc5NzI4NiBsZWdhY3ktdHJ1bmsKKzMyMDU3IDI0MDUzNzFiZTM0Yzk2NjhlNTIwZWYzMGRhNWZjMGI4MjhjMWE3YjcgbGVnYWN5LXRydW5rCiszMjA1OCAzZmM1NzY0MjczZDk2ZjBhYTM4ZjQ0MWVhMzc3NTc1YzI2ZjU3M2JlIGxlZ2FjeS10cnVuaworMzIwNTkgNTAwZjU0NWEyNGYwN2Y3ZjE3MmI2NGJiM2QzZjAwNGQ3N2FlZGU4MiBsZWdhY3ktdHJ1bmsKKzMyMDYwIGYwYWQ4ZmE4OGQ3Y2NlZjJkNDRjMzA2YjRmOTFhNjM0MGNjNmU2NjkgbGVnYWN5LXRydW5rCiszMjA2MSAwYTNjZTMwNmIxMWE1ZDRhOWY4MWM3ZmNiZDQwMmE5ZDZiYWE0MWRjIGxlZ2FjeS10cnVuaworMzIwNjIgMTU3Yzg3MmU2ODkyYjliM2Q2ZTU2NWYwZjlkNjJjZTE5NjA0Y2ExOSBsZWdhY3ktdHJ1bmsKKzMyMDYzIDM3ZWI4OTI5ZjBjYjQwMzBmMmEyMmM4NWU2YmE1NTgwNjk1ZTVkMTMgbGVnYWN5LXRydW5rCiszMjA2NCA1NmQ5YmJiYWU2ZjgxMGNlMDExOTk4MDkyNjY5YjgwYzBkMWMwMGE3IGxlZ2FjeS10cnVuaworMzIwNjUgMDU0NDM0MzBkN2VkM2RkNGQ2ZmE2YzIzMTA1MjA2MGNjNmMzODcxNCByZWxlYXNlMjItbWFpbnQKKzMyMDY2IGRmOWI3Y2VlMTMzOTUxNmJiODU3ZmVjYmIwNjljOWE5NGViMTc1ZDQgbGVnYWN5LXRydW5rCiszMjA2NyBmMzA3ODY1NGE1YzAyZmRmODliNWRhNjFhOThmOWU4ZjQwM2YzY2E4IGxlZ2FjeS10cnVuaworMzIwNjggMjM1ZDU0M2UwYjg0OTcxMTM1ZjRlMTM5NGZjMDcxZWMyNjQwNDIzNSByZWxlYXNlMjItbWFpbnQKKzMyMDY5IDdhM2Y3Mjk4M2E3ZWQ1NzdlZmMyYzEwNDg3NGU5MjMyZWZmNzZkNjkgbGVnYWN5LXRydW5rCiszMjA3MCA4MDQ0NzNjZjcxMjE1NDQwNTA0ZjAxZDA4Y2IwMTgyMzQ1YTE0OTExIHJlbGVhc2UyMi1tYWludAorMzIwNzEgZDhmOThkYzZlN2UwNGExN2VlZGMwYmNkN2U1ZTE1N2ZjZWI5MmYwOSBsZWdhY3ktdHJ1bmsKKzMyMDcyIDA3NmM4NjdiOTE2ZTIzMDZhNDNhMmYzNDE0MTg4NGUyNWZhZWY5ODYgbGVnYWN5LXRydW5rCiszMjA3MyBkZjY1YjAyMTdkZDdmMDhlNjgxZWQ5ZjI5MzY3YjdmMDA0ZDkwODcwIGxlZ2FjeS10cnVuaworMzIwNzUgYWYwNWY4OGI5NjQxMzU5NjVhZWY0YzQ0NGVkOWMwYmJkMzAzM2E3ZCBsZWdhY3ktdHJ1bmsKKzMyMDc2IGE4ZDY1NzZiOTVhZmFjYjFkMTUzMmE2ZTQxNTE5ZTkwMGNiYjMwZGIgcmVsZWFzZTIyLW1haW50CiszMjA3NyA5YzYyMDkyNTM2MTVmZjQwYmFjZTQzOWE0NzhkNDZjZGFiOGY3MWU5IGFzdC1icmFuY2gKKzMyMDc4IDVmYmQ4ODAxZmEyNjI1ZWIyYTg5NDI5Mjk3Mzk4YTMzZDJiM2NmYjIgbGVnYWN5LXRydW5rCiszMjA3OSAxNTkyZWEzNmE3MDIzMjdlNWI2YjYzNTZkMjUyNmJhOTdhMzY2MTcxIGxlZ2FjeS10cnVuaworMzIwODAgYWQ0MmNiZWEyMjU4YTc3MjI5NGE1ZmI4MWNmOWJlZTZhOGI2YjdjMCBsZWdhY3ktdHJ1bmsKKzMyMDgxIGM3ZjEwYTkwMGQ2MzI4ODgzYTkyYWU1YWU4OTQ3NWYwYzY5ZTU2MWMgYXN0LWJyYW5jaAorMzIwODIgYjg3MDk1ZmJiMDUxNjhkMWNlMmUxNzA2Mjk4YWQ1NmRlMGE1Y2ZkMiBsZWdhY3ktdHJ1bmsKKzMyMDgzIGZjODQxNTM1MTgwYzk4NGJjZDg2ZTUxYmQxODBjNTJkZTI5N2YyYTEgbGVnYWN5LXRydW5rCiszMjA4NCA3MTQwYTYyMzZjM2E4OGM5ODJhNDJiMWZmNWUxZmU0NDBkNjFkZWUwIGxlZ2FjeS10cnVuaworMzIwODUgNzUxZDdjZTliNGIyM2E4NGM4ZDdjMTRiZjRiOGFmOTYxNjk3YzRhYSBsZWdhY3ktdHJ1bmsKKzMyMDg2IGI2NmEyZTQxZGEzZWU5OTE1ZmY1ZGY2NDViNGM3MzgxNTVjZWIxOWUgcmVsZWFzZTIyLW1haW50CiszMjA4NyAwNGMxYmE1MWVmZGJjYmJjOTlmNTMyYjI4OGQ0OWNmOGU3YmFjZjA5IGxlZ2FjeS10cnVuaworMzIwODggODUyYWFlODRjOTgxMzczZTAyYWM0ZWY1ZDg3MGJhYmI4YmNiNzdlNiBsZWdhY3ktdHJ1bmsKKzMyMDg5IDBmNTU4ZWVkZTZjNTc3YTU4Y2MxMzliNWJjZmQzZTJmZGUxNGZmYmMgbGVnYWN5LXRydW5rCiszMjA5MCA1MDVlOGMwZmE5MmZlMmNhMmMyYjc2NDg3OGIyNTgyZTMwNGY0Njc3IGxlZ2FjeS10cnVuaworMzIwOTEgYmJiNzQ4ZjY4MTRkNjQwYTY0OWRmMzU0NDFhZTNhYmViMjMxNWViZCBsZWdhY3ktdHJ1bmsKKzMyMDkyIGYzYWRkNDE2NjI4ZGM3NDE0MzZmYTVjZjQ3NDE5ZWQ4MGE4NWUwN2EgcmVsZWFzZTIyLW1haW50CiszMjA5MyBiMWZiYjgzZTUxMzkxNDllOWI3NjU5NTJhYzQ1OTU1ZmU1ZDg2NzQ0IHJlbGVhc2UyMi1tYWludAorMzIwOTQgODgwMmRlMGRhNTMzOTExNjBmZDNlMzVkN2I5NTIzNzQyMjUxOTEyZCBsZWdhY3ktdHJ1bmsKKzMyMDk1IGUxM2E3ZTFmZGI5ZTViN2MyOGMxMmNmMjdkMmJiZTkzOTUxMTk2MmEgbGVnYWN5LXRydW5rCiszMjA5NiA4NmE0Y2VhNzA5NzNhYmViNDczMjg2MzU1NWM0NDhlNGY0NDYwZWQ3IGxlZ2FjeS10cnVuaworMzIwOTcgMTJkYWQyMDgxZTJlODIzZmU5MjE5NTY0NDVmODFlMDk5MzNlN2JlNyBhc3QtYnJhbmNoCiszMjA5OCA0YWViYWNjNzg2N2JiMWUwZmFhY2YyMjAzMWM4ZTgzMDhiYmFlZDA3IGFzdC1icmFuY2gKKzMyMDk5IGYxMTU0NDczZGFjOGE3MGRmNDM1ZmFmZWFmODcwN2Y5N2Q0M2VkNDMgcmVsZWFzZTIyLW1haW50CiszMjEwMCBhZmQ1YzJlNGI0YWY2ZGMxZWNlMDgyMDVjNGI2MzFiMjdkZjgwNjE4IHJlbGVhc2UyMi1tYWludAorMzIxMDEgMjg3ZGFhNmE3ZjRmMjIwZGU4MTA4ZjhmNTYwNzRlMmUzODEyZDRhMCByZWxlYXNlMjItbWFpbnQKKzMyMTAyIDhlZmU5NDQ1NDk1YjBiNzZkNDA2YTVhYTVjZWM5NDVkY2RmN2I2NjQgcmVsZWFzZTIyLW1haW50CiszMjEwMyA1NTUwZjVhOWQ3MGNhNzYyMDJlZDMwNzcyYWYwZTNmNWIwNTljMTg3IGxlZ2FjeS10cnVuaworMzIxMDQgYThlNWVjMDcwNDMzZjVhY2EyYmJkZTc4OTFmMzM0NWYzNTVlMTc1YSBsZWdhY3ktdHJ1bmsKKzMyMTA1IDM2MjIyZDM4MjNmMTI5ODYwMzQxMDY2NTY0Y2ZmMTFkN2Q2M2Y5NTIgcmVsZWFzZTIyLW1haW50CiszMjEwNiA5NzNmOWQzNWNmMWQwZjE1MjRkNzM0ZWI1ZDc5YTI3M2E1YzIwMmVkIGxlZ2FjeS10cnVuaworMzIxMDcgYWIyYTU0M2U4NTViYzk4OGViYmIyYzkzYjUyM2IzNjM2OWY5MDc0NyBsZWdhY3ktdHJ1bmsKKzMyMTA4IGYzOGNhOWUxYjY4M2JmN2E4YjZiODRjYjVkYzU5OTI0ODc2MTdjMjkgYXN0LWJyYW5jaAorMzIxMDkgMGM0MzM1ZjEwYzY3YTJkM2E3ODM5ZjdiNGIwMmIyMjdhMmViZTZmZiBhc3QtYnJhbmNoCiszMjExMCA0MzA4ZThhNmM0ODBkZTAwYmUyZjYwODk1ZDgzMzAyOGRiODhmNjBhIGFzdC1icmFuY2gKKzMyMTExIGRjODkwYTRjMDUyODA1NWVkMzFmYjAyM2IzYzNkNTA1MGRjY2E4ZTAgbGVnYWN5LXRydW5rCiszMjExMiBiODVhMjA1NjMxYTQ1YzAzOGE1ZmRhMzMyZjhlYmQ5ZTdhNWNjOTAyIGxlZ2FjeS10cnVuaworMzIxMTMgZjMxMWI1ZDIxZWY1NjRiMTBkYjg1YTNkYjY4ZDg3ZTBjZDU3MGFiMSBsZWdhY3ktdHJ1bmsKKzMyMTE0IDRmOGYxN2FmMzQ4N2JhYjE0YjAwYjQ2Yjk3ODdiYmFjM2M0ZjNkNTIgYXN0LWJyYW5jaAorMzIxMTUgNzM4ZTM3OGZhMGNjMTcxOGMxMGZhZjFjNjhkYzQ4YTgyNmMyNzFmMyBsZWdhY3ktdHJ1bmsKKzMyMTE2IDMyYmVhNDFmZWY2OGQwNDhhMjZjY2JhY2E1OTQ5NmMzYWI1YWI4NGMgbGVnYWN5LXRydW5rCiszMjExNyBkN2Q3YWY1ZjMyMzFmMDEyZDU4ZjUzZDQ3MGM0YTZiYWQ2YmU4YmNjIGxlZ2FjeS10cnVuaworMzIxMTggNDkyMDI4ZTQ3MjZmMTU3NTUwM2FlNWEzYzU4ZTc5YzE4YTQ1Y2JhYSBhc3QtYnJhbmNoCiszMjExOSA4MWJjYzBmNTdkNTcwZmJkZjVmMGNkYjIzNjAyNzE5OTU5MzM4OTJiIGFzdC1icmFuY2gKKzMyMTIwIGNlYjdiYjc5MTM1MzM2NjMwMDVmZTNkNmVkYjc5OGM0YmRkYjdmZDMgYXN0LWJyYW5jaAorMzIxMjEgZWQyMWQ4YjM3ZTMzZDU1ZjVmOGVhMzkwNTIzNDNhZTE2ZjY1MzQzNSBsZWdhY3ktdHJ1bmsKKzMyMTIyIDNkOGMxMjE0YTFjNzliYTc4MTQwYjNmNzRhZDQyOGEyNWU2NmRkNTIgYXN0LWJyYW5jaAorMzIxMjMgZWQ3M2Q2NTg3MjVhYTc4ZGE2ZmNlZGYzZDAwYTdmOTYxMGJkYzk2YiBhc3QtYnJhbmNoCiszMjEyNCA0MGQ5NjU5YjU2Yzk0NmM1NzE1MWVkNWIyMGZhMmNlYjBiNDQzMjVhIGxlZ2FjeS10cnVuaworMzIxMjUgM2UzOTlhODYxOGRiMzViNDdiZDUxYjgyYWJjMjdkMTI0NDhjZDIwZCBsZWdhY3ktdHJ1bmsKKzMyMTI2IDQyZGZhMDg5MWIzMzI2NjExNzA4ZDI3MzU5NTZjYWU5MGUzODU2NjggcmVsZWFzZTIyLW1haW50CiszMjEyNyBjYmEwYWVlZTBkNjUxNTMxYjlhYTU1NWY0YzhiMDNhMDkzODQ1MzU2IGxlZ2FjeS10cnVuaworMzIxMjggMDBhNTZmYmVhNjlmYjBhNzBhYjcwZTYxNGQ0NDA0ODM4NjIyMjFjNCByZWxlYXNlMjItbWFpbnQKKzMyMTI5IDBmY2Y5YWUyNWNmZWJlNzNjMTBiODEyMTBlODkyOGU5YzMxNGM1ZGUgcmVsZWFzZTIyLW1haW50CiszMjEzMCA0YjZlMjBmMGJhNGNkYTUzOWM2M2M5MDAxOGVmZmY3NzJiYTZkODhjIHJlbGVhc2UyMi1tYWludAorMzIxMzEgY2I1ZGI1NTYxY2RjYTlkMzRkMmIwNjY0NjI3NWIwNmEzY2Q4ZThlNCBsZWdhY3ktdHJ1bmsKKzMyMTMyIDg0OWRmZWExODJjYTM3NzMzOWRkYmVjNGQ5YjE0NDZiNDYwMzVlNTAgbGVnYWN5LXRydW5rCiszMjEzMyAxMTdhY2U4NTIxYTFkMjk2N2FkMWUzNmMyMWFjOTg5YWE2ZDcxMTU4IGxlZ2FjeS10cnVuaworMzIxMzQgYTA1MDNiZGIwYzI0MmNkODhkZjNmMjZlNjdiMDM2MDBlZWQxZjc2MyBsZWdhY3ktdHJ1bmsKKzMyMTM1IDgyMzNhMDI5NGM0MWUzZGUwMDU3NDRjMGRkYTE2MTA4ZjljMTA2ODIgbGVnYWN5LXRydW5rCiszMjEzNiAzNzVmZGI4MmEzY2FlMzI4YTU4MjcyN2Y0ODNkZWZiZDMyYTdiZTUxIGxlZ2FjeS10cnVuaworMzIxMzcgMGRlMGRlZDE5OTY4ZWM0NzIyMTg3ZjZkOTcyY2NhYzA2NjVhMjQzMSBsZWdhY3ktdHJ1bmsKKzMyMTM4IGFjZjM1OTZmY2MyOGQ1MDRmZmI4MTU3YTE3ZWMwNDgzNjYwNDExOTIgbGVnYWN5LXRydW5rCiszMjEzOSAxNzRjZTRjZGVjNDcyNmQ5MTE4NGM3YzdmZDg5YzQzMDBlNDM2ODQzIGxlZ2FjeS10cnVuaworMzIxNDAgOTBjNzdiOGFmMWE0OTc0NDYwZjI2ZmIyYjM3ZDc1ZGNjZDU0YWJiMiBsZWdhY3ktdHJ1bmsKKzMyMTQxIDk0MDA1MDRjYjBiMjYxZTAzM2VkZGYyODhjMjYxOTJjZmRkNTFjMzEgbGVnYWN5LXRydW5rCiszMjE0MiA0YzU5NmRkNjBjMjJkMzBkNGRlYmY4Njc0ZTE0NGE5MzRiNGRhMzg4IGxlZ2FjeS10cnVuaworMzIxNDMgNzhmODQ2ZmI1NzBhMDYzMmE3NmU3YmUyOGQ1MDI5YmNmYjM5ODQzZSBsZWdhY3ktdHJ1bmsKKzMyMTQ0IDM2OGJlYmUzMjc0MzM5MDFjNjY3ZWZlZjFiNTg1NTkzNzFjNjc3MjAgbGVnYWN5LXRydW5rCiszMjE0NSAyNWU3NDY3ODcxYzU4NzJiOWI3MWNmODQ3YzljMzUyYjU2NTVhM2Q4IGxlZ2FjeS10cnVuaworMzIxNDYgMmEzMDk1YTQxNWIxMGJhMTAzNTczNDgxYTcxYTRiMDQzNzI2MzJmZiBsZWdhY3ktdHJ1bmsKKzMyMTQ3IDY2NTNhNTYwMDJlZjlkODMxNmRiOGEzZmE0ZDYwNDkwMTQ5YmQwYTMgbGVnYWN5LXRydW5rCiszMjE0OCA5NjRiZDk3YWMxZjViZDNkOTUzN2ViMDQzOTYwNDE4OTI0MjNkN2Q2IGxlZ2FjeS10cnVuaworMzIxNDkgNDg3ZGYyOTRkMzI4MTBjOGVhZjE1MGYyZjVmNzdiZmVkZDIyMDY2YyBsZWdhY3ktdHJ1bmsKKzMyMTUwIGMwMWZkYzNhOTE4MDQyZDk0MWVkNWVjNzBkNmViNDdmYjg3ZGE0NjEgbGVnYWN5LXRydW5rCiszMjE1MSA0ZmY2MTFiMTY0ODQ5MzNmMDIzNGZkMDhjNjFmOWEyN2MxNDlkNzBkIGxlZ2FjeS10cnVuaworMzIxNTIgOTJkMDFmMTAyY2EwOTkzZWIxNDRiNWI3YzM2NzcwMTRjOGQzYzEzYyByZWxlYXNlMjItbWFpbnQKKzMyMTUzIGI1YjNlNmYzZjMxN2VkOGQ0Mzk2YTc3YTQ1MThhZDFjMWYyY2UzZWYgbGVnYWN5LXRydW5rCiszMjE1NCA1YjU0NjJhZTMxNGRkZDM1NzNlMjc0YjJjZGVlYTAwOTgzMDZlNmU0IGxlZ2FjeS10cnVuaworMzIxNTUgNWZhODM0NGQ2ZTZmMDFkNTJhYzA5NDYyZmY5YTk2ZTgzMjI3NGYzNiByZWxlYXNlMjItbWFpbnQKKzMyMTU2IDhiZjA4NGM0YWQ5Zjc0YjhhMzUxMDQyMmVmNTNmN2JkYzZmMmNmYTUgcmVsZWFzZTIyLW1haW50CiszMjE1NyBiYTcxNjIyNDk3NGU5NzY5Zjg3YzI5NmIyMjMwM2IyMDQ0NzA5ZWZmIHJlbGVhc2UyMi1tYWludAorMzIxNTggMTYzOWY2MzVkOTgzYjlmYzQ3MGE3NzM0OWVmODk0OWUwZjc2MjMwOSBsZWdhY3ktdHJ1bmsKKzMyMTU5IDg3ODM2NmIwZTk3YWM3MTVhMmFjMzUwOGI1ZTgyNzVkNjc4YzJiMmUgbGVnYWN5LXRydW5rCiszMjE2MCBmMjEzZWU2Y2U1NWVlOGZhM2MxNGI2NTkwZWZlODZlNTgyMjhmOTJlIGxlZ2FjeS10cnVuaworMzIxNjEgYjkwNjRlYTA1OTNlYTFkNzM0NzJiZjY2ZmRhYzEwOWRkODQ5YTBmMiBsZWdhY3ktdHJ1bmsKKzMyMTYyIGFlMGFlYjBkNjMxYmM1YzVjYTNmMGZlMzUyMTNjNTI5YjM2N2M1MDggbGVnYWN5LXRydW5rCiszMjE2MyA0NjlmYjZjZTk2OTM1MWZiMzA3NmZmODNhODU5MGJmMWI4OTczOTIzIHJlbGVhc2UyMi1tYWludAorMzIxNjQgYzdiYjI1NGFiODkwZTFiOTUyNGNlNGI3NWM5OGJmYzhhNTVjNGQ1NyBsZWdhY3ktdHJ1bmsKKzMyMTY1IDcxMTAzZGY5ZDY0YjA3ZGMzYzEwNzVjMTk5YjU5NjZhNDE3ZmJiYjMgbGVnYWN5LXRydW5rCiszMjE2NiBiYmVkN2UxMmI4NDIyYzA5MWVlZTIxNzQ5NTdhMzZmMzNlN2QwYTFkIGxlZ2FjeS10cnVuaworMzIxNjcgODk4NGRmMmRjMjdiMjcwZDhjMjkwMzMxNTczMDg1ZTI5YWRmY2E4MiBsZWdhY3ktdHJ1bmsKKzMyMTY4IGI2MWE5ZTIxYTY2ZGNhNTlmZTE4YWNkZmU4ODkyZjA2ZWNjMGQwZDUgbGVnYWN5LXRydW5rCiszMjE2OSAzNDQ4Mzc2OTA3OGIzMzM3MGFkZmRmNzgyMGRiNzNmZTE3NjQyYmU2IGxlZ2FjeS10cnVuaworMzIxNzAgZTkzMGJlYmVjOGMwZjVkZDNjNDBmOTBjZjNiMzVjOTYxYjQwNzkxMyBsZWdhY3ktdHJ1bmsKKzMyMTcxIGVlODg1M2NjOGNhMWY2OWE4OTczODZhOWNmYjYxYzE4ZWY0NmE3N2MgbGVnYWN5LXRydW5rCiszMjE3MiAwMTdkMmUzZWEyYWU0YmE2ZGQ0Mjc1ZjUyNTUyNmViZTkxMjVhNjI3IGxlZ2FjeS10cnVuaworMzIxNzMgZmQ0MzRiZWI1ZjU2MDc5YjM0OWQzMjJmN2M5MDc2M2YzZjAyYzZlNCBsZWdhY3ktdHJ1bmsKKzMyMTc0IDZhYTFjMDgyNmEzOWJlNjgzNDQyOTlmMWRkMDdmY2ZlNjI1MjU0MGYgbGVnYWN5LXRydW5rCiszMjE3NSBkMTBkYmI5NGM5ZWUxYmZmOWMxNGU2YzVmMDg3ODE1NzMxMmY2NTk0IGxlZ2FjeS10cnVuaworMzIxNzYgMmQ0YzFlNGU1YjM2YjU0NDk5MjE2NjU2YjY1ZjczMzAyYmE5MjQyNSByZWxlYXNlMjItbWFpbnQKKzMyMTc3IGRiNDc5OWNhMjAyMWJjZjU1ZDkyN2FmZTM0ODIzNDIzZDQ3YjhkZDYgbGVnYWN5LXRydW5rCiszMjE3OCA5YWNkYzZjNDQxNmFjNTIyODgyNTc4ZWY4NGYyM2IxMGVkZTU2NWEwIGxlZ2FjeS10cnVuaworMzIxNzkgYjM3YjI5ODIwODZiYzMzMzExODk2MjIxM2FhMTY2MTM4ZGQwYjA0MyBsZWdhY3ktdHJ1bmsKKzMyMTgwIDYyZTg4M2UyZDUxNzExZjAwOGYxMzk4M2UwZTE0OWJjOTI4ZjljZmYgbGVnYWN5LXRydW5rCiszMjE4MSBlNmJmMDhkYWRkNWMyMTc2MDVlZTlkZmNiMTQxM2ZlMTFiMDlmZTNmIHJlbGVhc2UyMi1tYWludAorMzIxODIgYjQ0ODdhM2I1ZjFhMWQxYmYzNDQyMGY5YWRkMzRhY2Y1ZWY5Nzc1OCByZWxlYXNlMjItbWFpbnQKKzMyMTgzIDc4Mzk1ZTViNDc4MmNjMzQ5Mjg4NGZjM2U5YzU1ZDA5Nzc1ZGYxYjMgbGVnYWN5LXRydW5rCiszMjE4NCBiYTJkODkyMWE4ZGEwMTliOGYyMDMyMjcyMmZiNmVmNDZmNWNhODMxIGxlZ2FjeS10cnVuaworMzIxODUgODRhY2JhMjI3OTU0MjRjZmRlNWMxNDM4M2QzMjA5MzU4NGJlZTgzZSBsZWdhY3ktdHJ1bmsKKzMyMTg2IGFmZjA4MGYyZWZiNDg2OGJmOGFhNjc2M2Y2NDk3YmRmM2QzMmY2ZmEgbGVnYWN5LXRydW5rCiszMjE4NyBlOTJjMjVkNDI4Yjg3ZjAyMmJkZGMxYmEwZDMxNzg4ZWQ2NGQ1NGUyIGxlZ2FjeS10cnVuaworMzIxODggMjFmN2NmZjE3OTBmZGM4ZDU5ZTUxYzdjM2I4YTc5ZTdlMWFiMGE2MCBsZWdhY3ktdHJ1bmsKKzMyMTg5IGNkNTAxMTIxNzE1YjA2OGEzNThjMmMwNTJmMTE3YzlhYTkwNjRmNTMgbGVnYWN5LXRydW5rCiszMjE5MCA3YTYyODE0OTNkMmM2NzEwNDdjMWRmZDU1ODUwYjRiYzcwOTQwYzEwIGxlZ2FjeS10cnVuaworMzIxOTEgZjIxY2QwNzlkMTA4MzVmNDE0MTQzY2RlNDFmODk1YTEwNTBhZGI4YiBsZWdhY3ktdHJ1bmsKKzMyMTkyIDZlN2VmZDZjMjUxMGEyYjJkMWNkMWI1ZmI3YjBlYTMwNjVjMWM4OGUgbGVnYWN5LXRydW5rCiszMjE5MyA5ZGRjNDk4YjcwMTNiODZlNzFiODhhYjYwMDM5MmZiOTUxODgwM2Q1IGxlZ2FjeS10cnVuaworMzIxOTQgYmM4OTIzZmRkODNiNTg4ZmJhY2RmNTRkMmE4M2M5MmI5Y2U3YjViMSBsZWdhY3ktdHJ1bmsKKzMyMTk1IGQwOGQ3YjRiZTUzMjAxMzIxMmZmYmIwMGE1ZTc5OWRjMGJkZGY1NWEgbGVnYWN5LXRydW5rCiszMjE5NiA3NTExMzc1OTI1MmM3ODhjMTYyNzcyOWY3MzU2YzU4YTNlMjQ3OGY1IGxlZ2FjeS10cnVuaworMzIxOTcgYmZjN2E5ZmEzNGQ2ZGIyMzRlODkxODIzMTA5Y2I0MTcwNWRkMTE5OSBsZWdhY3ktdHJ1bmsKKzMyMTk4IDVmYmRjYWVmOWRkYWEyMzI1YTc0NTRlNTkzNDZlZmIyYzIxMjIyNDkgbGVnYWN5LXRydW5rCiszMjE5OSBmYWViNzA4YmFjYzQyMTY2N2Y2MGEzYTRmNjcwNWNiOTExMjA3MjcyIHJlbGVhc2UyMi1tYWludAorMzIyMDAgZGE3NGJkZDkzNDQxYmQ0MDI0NmI5Y2Q5NjE2NGJkOTQxNGI2ZWE0NiBsZWdhY3ktdHJ1bmsKKzMyMjAxIGJlMmVjYWZiMTVhZDBlYTAyNmZhOTZiYzIxYWNmNWMxZDUzM2Q2MTkgbGVnYWN5LXRydW5rCiszMjIwMiAyMTVmMWY0ODUxYTQ2MzlhZWNmNjQyMTk3ZTczZGZjZWFmNzdlMjQyIGxlZ2FjeS10cnVuaworMzIyMDMgMWJkNTBjMjgyMDNmY2YyN2UzMGRiYzVkM2UwM2E4NTM5YjUyYjQ3NyBsZWdhY3ktdHJ1bmsKKzMyMjA0IGYzMDFlYWVkZGU4NThiZGE3ZDAwMmM4OGZlNTY5Y2ZkZWIyZDgxMzAgbGVnYWN5LXRydW5rCiszMjIwNSA4YjQ5NDQ1YzBhMGUwMzkwYmYwNWJiMTM2OTk0MTRkOWMxYWQ2MDY5IGxlZ2FjeS10cnVuaworMzIyMDYgOTgxMDMyZTY0NzM2MmYwODFhODkxZDkxMWNhNDc0ODZiYzE5M2NiYSBsZWdhY3ktdHJ1bmsKKzMyMjA3IGE1YzVkYTU0NmMyOTI4YzdkZjE1ODY4MjM5Y2EwZDFlZDEyYzY3MTEgbGVnYWN5LXRydW5rCiszMjIwOCBjMmFkNjJmNGVhOWIzMGI1YWUwM2U3YTMxYzVhMDhjOGIwYzBiY2EyIHJlbGVhc2UyMi1tYWludAorMzIyMDkgMDNiYjBjNDA4ZDU3MzE4Y2E1YmU4ZTlmOTUyZmM5MTVlMzFhNDI3MiBsZWdhY3ktdHJ1bmsKKzMyMjEwIGEwYzAwMjA1MDUyNjVhOGUzODk3ZGQ2MjQ0YzYyZDlkYjVmMWExYTkgbGVnYWN5LXRydW5rCiszMjIxMSBjMzZiZDFjODM2YjhjODBjZGY2ZDg3OTk5YWIyMDA0YmJmNjY0Y2U2IGxlZ2FjeS10cnVuaworMzIyMTIgMGQyNjhjNmVmMDBhY2RlNmEwMTgwZjBkOGZlNmIzMjQxMzMzYjVlYyBsZWdhY3ktdHJ1bmsKKzMyMjEzIDk0YTk4NjVhYTFjNjQ0MTljM2JiNDljODNiZDBhMTUzYmVjODVlMDUgbGVnYWN5LXRydW5rCiszMjIxNCA4YzkzMDc1YjljYjU1MTBiYTkzYTkxODMyM2UwNWNmNDFkODM4M2FhIGxlZ2FjeS10cnVuaworMzIyMTUgMDJjODdmMzQ4ZWRiMjJmOGU1YzEyM2Y0OGUyZjljYjgxYjMzZTgxYSBsZWdhY3ktdHJ1bmsKKzMyMjE2IGE1N2VlN2IyYTg3OWRlMDJiYjU1N2VkOGRkNWNhMmEzNDMxYmM4NWMgbGVnYWN5LXRydW5rCiszMjIxNyA5NWI2ZGQwNGRhOGZkYzFkOGRhZDg2NTc2MzZjNmE3YmQyYzIxMGJiIGxlZ2FjeS10cnVuaworMzIyMTggODgzYTY5NDc5NWY1NzAzY2I0MWVjZmI1Y2E5MmY2MDBiYmVkYzI3OCBsZWdhY3ktdHJ1bmsKKzMyMjE5IGVmMDVmOTgxYmM0YjhkYWIxYmJkODliYWE1MWNmNDUyNmVhODhjNWQgbGVnYWN5LXRydW5rCiszMjIyMCA2ZjEzYWRkZTFiNTFiYjQ5Mjk0NmFhZTBkYTI2Y2MyMzRmMzM3MGE3IGxlZ2FjeS10cnVuaworMzIyMjEgZGU1MDkzNGUxMTQ1YmY2ZDkwYjY1OTU5ZjZjZTE4NmYyZTA1MjkwZCBsZWdhY3ktdHJ1bmsKKzMyMjIyIDIyYWZkZTI2YjNkMTY2YWMwZjI2YTZhNDU5ZmZmYzZmMmYzZTJmYzEgbGVnYWN5LXRydW5rCiszMjIyMyA5ZmVkZTcwMDNjNjVmNmY2ZTFiMTk1Nzg1ODY5NDcyZWViOTg3NDA5IGxlZ2FjeS10cnVuaworMzIyMjQgZDJkMjMyZTI0MjdiZjc0ZWVmZmRjNTRiMmM3ZjFjZWM5M2JhZTkzYSBsZWdhY3ktdHJ1bmsKKzMyMjI1IDNjZjI2YjlmOTZmN2U2NDY0MDg3MjBiM2FkZDVjMGRkMzNhYWQ2Y2MgbGVnYWN5LXRydW5rCiszMjIyNiAxMTY2MGY0MzYxZjhhMzY4OTc1OWFjYWE1NjAxY2ZmOGNjMDQzNmY5IGxlZ2FjeS10cnVuaworMzIyMjcgMWFlYWQwYzg0NTA3N2UwODA3NTQ3MjJhZjI5MDI4N2NkNzIyM2ZkMyBsZWdhY3ktdHJ1bmsKKzMyMjI4IDU4ZGI1ZmJkOWMyODJhNDk3NWQ3NDVhZWEwZjcwNmU3OGI2NjkwYzcgbGVnYWN5LXRydW5rCiszMjIyOSAyMGVlNjhjYjBiYzQ3YzY3M2QwZTk5MmYyNDdiNDU3ODgyMDc0NmEwIGxlZ2FjeS10cnVuaworMzIyMzAgN2ZlMzNjMTU0MWRmZmFmODFhOTNmOWYyNmQxMGI3MWVhMmZhMDIyZiBsZWdhY3ktdHJ1bmsKKzMyMjMxIGVlZTQ5NjlhZGJhZTBkMTY0MmZhMWEyYzQ0NmM1MDczZWQ2Yjc2ZmQgbGVnYWN5LXRydW5rCiszMjIzMiA5NDQxNjk0YTcwYzdlZDM5ODM2NjA3NjQyZGY0MzNjYTJkYWU0NzRmIGxlZ2FjeS10cnVuaworMzIyMzMgNDM2ZDgxMmYyYjk0YjdkYWI3YWFkMmM5NzA1MzE3ZDFlYWJlZmNlMyBsZWdhY3ktdHJ1bmsKKzMyMjM0IGYzYjI0YTJmNmY0ZGE4NmE5MjcwZTlhYTRiNTE0YTM1NjEwMjJmNTMgbGVnYWN5LXRydW5rCiszMjIzNSA4MzIyMDc3ZDIzNGNmYWI4MGFlOTg2YzM2NjEwMzUxNjM5N2MzNDhlIGxlZ2FjeS10cnVuaworMzIyMzYgNjk1MjM3M2U4ZmU1Yzg3MmU2Mzc5MTQ4MDI2MjI5OGVjMjM4YjVmYSBsZWdhY3ktdHJ1bmsKKzMyMjM3IDY3ZDM2ZjRkZmVhMTI0YWU4NWMwYzEwZDI4YjgzMzgzM2FiNzJiMmQgbGVnYWN5LXRydW5rCiszMjIzOCBjNzFiOWJhMWYwNGMxNDgyOWZhOTY1NGQ5ZGQ1M2QwYmIzNzlkMWViIGxlZ2FjeS10cnVuaworMzIyMzkgMDc5MmNhYTYzNzFjOWQxZDI1ZDA0YmIwYzc1NzU4MTYyNDNjY2ZlZSBsZWdhY3ktdHJ1bmsKKzMyMjQwIGIxNjcxNTUwYzdlMWRjNzgyODE3MmJiMGI0NjJhNjkxYzc2NzhlYjEgbGVnYWN5LXRydW5rCiszMjI0MSA0YzY1ODUyNTNlNmYxMzI0ZDIxM2FmNGI5ZmE0NmQxZjg0OWUxNGMwIGxlZ2FjeS10cnVuaworMzIyNDIgYjRiOGZlMmE2MzJjM2JjYjQ1MmJjMDQwZGE4ZDIzOGNhODczOGE5ZSBsZWdhY3ktdHJ1bmsKKzMyMjQzIDRmMGI3YWNmZmM3ZDRjNGM3ZWI0MmQzYzBiMDhjY2EyOWY1N2I1OWEgbGVnYWN5LXRydW5rCiszMjI0NCBkNTM1N2FhZGU0YjczMDY0NzBjYWY4NGZhMGYxZWIyOTJmMGRkMmFjIGxlZ2FjeS10cnVuaworMzIyNDUgOWZkZmE3MzY1NzhkNzM2ZDcwOGE0NzRlNTNjNjVkYzhmMDdhZTU5NCBsZWdhY3ktdHJ1bmsKKzMyMjQ2IGViNTUxODhmMTYzYWNlZTdhM2M5YWU3OTEyZTkzMzBlMjY0MmRkMzcgbGVnYWN5LXRydW5rCiszMjI0NyBkZGQ5MDZlZmZkOWMzYjY1ZDBlMTNjOWQ4NTVmYzUzNjNjMTNjZTJiIGxlZ2FjeS10cnVuaworMzIyNDggODI0ZGMyOGY5MjJkMjk5YzE3NmJiNzM2OTI3MjY0MzIzZmQ3NWVlOCBsZWdhY3ktdHJ1bmsKKzMyMjQ5IDZjMDAwNDY5MDk0MThiNzIxYmNhZDQxMWY5OGI5MWU3YTRlMmM2MTAgbGVnYWN5LXRydW5rCiszMjI1MCA4MWU1YmY2MjNlY2Y3NThiYzI1YzYyY2JiMWViZDRlYzEyMGRlZDkyIGxlZ2FjeS10cnVuaworMzIyNTEgZTgwZjE4YTQ5Y2M5YWM4ZTMxMWY0MWQ4ZDYwNzEzMTRmYjA0Nzk5ZSBsZWdhY3ktdHJ1bmsKKzMyMjUyIDA3ZDhlMGVhYjNhZjQ5ZDU4ZTMyMDJiOWU4MjY5NGUxOTk4NWJlMGMgbGVnYWN5LXRydW5rCiszMjI1MyAyY2ZkOTE2ZGQzMTI0OWRmMmQ0NTU4YWUzYjliZDNlOTNiYWZjZDEzIGxlZ2FjeS10cnVuaworMzIyNTQgM2MzOTE5NWRhYjlhNDBlZjMxOTA4ZjY0ZDBmZTg0ZGRlMzhhYTNiMCBsZWdhY3ktdHJ1bmsKKzMyMjU1IDNkOTNjMzAzOWM4NzFjY2U5MTk3OGZmYzdiNDhlNjczMWRhZGQ3N2IgbGVnYWN5LXRydW5rCiszMjI1NiA4YWI3NTJkYjQ3NzVkNTUzZjczMWFmZDNkMDMxMjA5ZGRiN2Y4MDUxIGxlZ2FjeS10cnVuaworMzIyNTcgZmE4MmY4NmVhYTA5OTQwYTY2Y2UzOTM0Yjg1Njc1NTY0YjNmNTc5NyBsZWdhY3ktdHJ1bmsKKzMyMjU4IDMzOTJmMzhiZDExNGI4ZTE1OWEyMWUyMDJkZjAwYzRmNGNlYzBlYjQgbGVnYWN5LXRydW5rCiszMjI1OSA5NDdjMjkzN2MwOWUyMjEzZTE1NWIwMzVmZGI5NDNiYWYwOWExZDJjIGxlZ2FjeS10cnVuaworMzIyNjAgYTI2YjZiMjc1ZmI3MmQ5ODk3Y2UxYzk5NzliMjEwZTZmNWJmMTg1ZSBsZWdhY3ktdHJ1bmsKKzMyMjYxIDM2ZTliYTQwNTQ5MjU5ZjNlZTFlNzRlMmY0NTgzZDg2OGJjZmRlNTMgbGVnYWN5LXRydW5rCiszMjI2MiBjNjI5ZWQ4YTlkYmIzYTg0Y2MzNWZlOWMzZGFiMjdhNGZmNWM5ZWUyIHJlbGVhc2UyMi1tYWludAorMzIyNjMgMTFmN2YxMTgwNzJiNjRmZjAxZmYyMzYyNDI5MTY5ZWRjNDVhZWVhMSBsZWdhY3ktdHJ1bmsKKzMyMjY0IGFjZmEwZmY4YzVhNDAxNmI1OWVmMDU2MWQyYjlhNGMxNjFlNzJmNDEgbGVnYWN5LXRydW5rCiszMjI2NSA5YmU0MTAzODA3ZjVjNzQ1ZmY5YjI1MDY0ZmM2ZjJmNzY4YzRkMWI5IGxlZ2FjeS10cnVuaworMzIyNjYgYmUwZDRlYzZiZjVhOWI4MGU5MWNhNTNmYjNkMjczYWZjNjZiYzA4ZiBsZWdhY3ktdHJ1bmsKKzMyMjY3IDQ4MjRhYWIxMjU0OWJiMGMzN2NhODAyYTMzZTFjNzAwMTc4MDFmZTYgbGVnYWN5LXRydW5rCiszMjI2OCBhOGU2NDBiNDc3ZjY2ZDViNjE1MjJiZDc5YzljNTgwNzIwZjRhNDA0IGxlZ2FjeS10cnVuaworMzIyNjkgY2ZlY2UxODIyZTk0MjM3MWY3Zjk5YjRiMjNkMmY2NjY1ZWQxMjM4YSBsZWdhY3ktdHJ1bmsKKzMyMjcwIGNhMjQ4MjAxMmIzYzYwMGY4NjVkM2FmOWY4OTQxOGVkZWI4ZjJmZmYgbGVnYWN5LXRydW5rCiszMjI3MSA4ZTU0MWIwNzhlZGI1MDliNmNkZWYwYzIwNzYxMGRjNDk4M2MyOWJkIGxlZ2FjeS10cnVuaworMzIyNzIgYjk3NDVjZDc5MWJmZGRhNzgwMDZmMGJkN2IyM2UzYzg2NDgzMzc5MCBsZWdhY3ktdHJ1bmsKKzMyMjczIDE5M2I4YWVjMDBjZTFiZTJmMDNhYTk2OTlhNWQ2ZjY1MTZjZjc5MzAgbGVnYWN5LXRydW5rCiszMjI3NCA5ZDRlMTM4NDk0ZmIzMTJjZTI4YTg1MjRlOTFiMDVkMjY0ZjhkMzg3IGxlZ2FjeS10cnVuaworMzIyNzUgMGU4NDE2YmUyMDhlMGViNjA0Y2ZmZmU3Y2I1NzBmNjM2YjNjMDNkMSBsZWdhY3ktdHJ1bmsKKzMyMjc2IDA0YjE3Mjg0MzI5Mjk4MTIxNDhjYjFjNjhkODVkZTg3NmU1OTA4MWYgbGVnYWN5LXRydW5rCiszMjI3NyBkOGE4Zjc0NGEzZTUwOGI1ZTEzMDczNzYyNmZjNDU2NGQ5NTY1YWIyIGxlZ2FjeS10cnVuaworMzIyNzggN2ZkYTA5Zjc1MWFkNWIxYzliNDc4ZjkzZDcwYjM2NzY3NzFkNjgzZCBsZWdhY3ktdHJ1bmsKKzMyMjc5IDI4YTI5NzU1MTRjZDYxZDQzNjAwYzg1M2VmYzhkNzkyZjZkYTNiYzUgbGVnYWN5LXRydW5rCiszMjI4MCA1NjAwNmQ5N2JjZWYwYmU1MGM3YmJmOGEyYmI2NWQzNjkwOGQwZWE0IGxlZ2FjeS10cnVuaworMzIyODEgMWU5MDA0NTUzZTFkOTA1YjQxMDljZDczNjY5OWZkYmI4ZDViZDUxOCBsZWdhY3ktdHJ1bmsKKzMyMjgyIDE2ZjQ3YmQ0MzFjNDg3OTJjZWNlNzU0YjBjMGQ0ZGEwOTM0Y2YxZGEgbGVnYWN5LXRydW5rCiszMjI4MyAyZmFlNWY3NjMxZWY0YWFlN2EwYzFiZGFiNmM0NTM3MjUyYmQ2ZDkxIGdldGFyZ3NfbWFza19tb2RzCiszMjI4NCA0ZDIyNTljYjc3YTBlMWNkN2Q4NTRkZDBkNTBkNTgyZWU3M2YyYjc4IGxlZ2FjeS10cnVuaworMzIyODUgN2ZhMTRmMjBhZWE0MjIzMmI2NGE2YWUwNjQyNDE3MDUxMmM3YTY1MCBsZWdhY3ktdHJ1bmsKKzMyMjg2IDg4MzY1MjllOWU2NjcwYTU1Zjc0NTcxN2VjMjlhNTY1NWE0M2U2MTIgbGVnYWN5LXRydW5rCiszMjI4NyBlZTE2NWZlMWI0MmY2MzRjNmM5NjBiMWYyNmU1NjIxYTlmNTI2YzUwIGxlZ2FjeS10cnVuaworMzIyODggNWYxZWYxODgyYjI1MTg4ZWUwNmUyYTg0YmVjYzg3YWQ4ODlkY2I0MiBsZWdhY3ktdHJ1bmsKKzMyMjg5IDdlNjY1YzE2MDU4M2ZiNjYzNzhkM2VjNWY5Zjg0NDA2Mzc3MmVkOWYgbGVnYWN5LXRydW5rCiszMjI5MCBlZTZkZjJjNjY4ZWFjY2RkOWMwM2EyZDI0Njc3YWU3MDE0MmUwNjdmIGxlZ2FjeS10cnVuaworMzIyOTEgMTJkNDQwOWU1OWUzMDNhMzk3OGY1ZDBiNDMzYTdlOGQ2NzU2Nzk0NiByZWxlYXNlMjItbWFpbnQKKzMyMjkyIGUzM2ZlZGI1ODFmNGIwN2E5Zjg0NTdlODAxODg5ODliYzI2ODhlMWMgbGVnYWN5LXRydW5rCiszMjI5MyAyMzk0MjlkYzAyOWZjOGQ1NTdhYzY4MGNjODI0MjNiNWMyY2NkMWVjIGxlZ2FjeS10cnVuaworMzIyOTQgYTkzOGIxM2UwMjkxMTIzODJhZjQwNWY4ZGEyYjIxZmMyMDdlNGJkNSBsZWdhY3ktdHJ1bmsKKzMyMjk1IDViZmRiYzBmZDE3MjJhODQzM2MzOTM4ZGZmZDQzNzUwNGIyOWU3YzUgbGVnYWN5LXRydW5rCiszMjI5NiAwNDZiYzlkN2ZiMGU0MzNjNDVmMTc3NzI2NzQ3MTZmZmUyMmExNDFmIGxlZ2FjeS10cnVuaworMzIyOTcgMGQ4ZDRjOGRjNjhiYjg4OWJlNGQzYTVjZWY2ZjE3NmVmMjUzOWJhNSBsZWdhY3ktdHJ1bmsKKzMyMjk4IGM1NTVjZDAyYjBmOTYzY2UwNDFlNmRjYzJmZWU2NDU0NTY1YjdmMTMgbGVnYWN5LXRydW5rCiszMjI5OSAxOTI1NDEzNDMxYTZlYzI4ZmM4NmE5ZjY3OTljZDY4MmFjMzJlMWZhIGdldGFyZ3NfbWFza19tb2RzCiszMjMwMCBmZGEyZjdkNzgzYzI0YWYzYWFjMzUzOTE1MDg1MmNiN2NkYjFjNzAyIGdldGFyZ3NfbWFza19tb2RzCiszMjMwMSBkNDFkOGRlOTc2OGYzN2YxNzFlNzNhMDdhZTU3YjQ2NWIxN2RiOWVkIGxlZ2FjeS10cnVuaworMzIzMDIgMmEyM2ZjODM3MjBmYTEyNjRjM2M1ZGE1NmEzMjYzMzAzMjU3ZTg1MyBsZWdhY3ktdHJ1bmsKKzMyMzAzIGMxYmE1MDc5MGM4Mzg0ODViYmRiZDNlODVmYjFmMzk1ZGM1YTBlMTMgbGVnYWN5LXRydW5rCiszMjMwNCA5ZWI2OTY0YjRiNmM5ODhkODZlY2U0YWQxMzc3ZTY1YzI4MzA0YmJiIHJlbGVhc2UyMi1tYWludAorMzIzMDUgMTU1NmEzOGQ1Mjc4MTU0MWQ5OWE0MDcwYjQyZmI5NDNjM2M4OTFlZiBsZWdhY3ktdHJ1bmsKKzMyMzA2IDVmZjFmMmY5ZmMzNDkzZjNiYWNhMjM1N2Q1NDY3YTlmYjUyZTlkZWQgbGVnYWN5LXRydW5rCiszMjMwNyAxODE1MTY2ZTgwOTc4NzVlMjZjMjY0M2NhN2U5M2E0NjJkNDBlYjEzIGxlZ2FjeS10cnVuaworMzIzMDggMzFjYjhlMDI2MGRiNTEwMmIwYWI1MDZjNGFlZTM5YzlkMTI0MjhhZSBsZWdhY3ktdHJ1bmsKKzMyMzA5IGFiMGMwNjdmZTI4NmZiZDMwM2FjZWMxNjg4Mzc0Mjc0YjU4OTY2MjcgbGVnYWN5LXRydW5rCiszMjMxMCAyNzYzNTJiZmNiNDJiNDFhYWU5NjYxNGZhYjNkZTMyMTYxY2UzZjgyIGxlZ2FjeS10cnVuaworMzIzMTEgY2E2NGMxYmUyMzBiYWNlNGEzYmUyYjEwM2M5MzA0MDhiMjEyMTg3YyBsZWdhY3ktdHJ1bmsKKzMyMzEyIGNmNDVhZDNjYTRiNzVkZGNkYmM1MTJkNzJiOTNiM2ZjMGQ1NDE0YjAgbGVnYWN5LXRydW5rCiszMjMxMyA0NjJhNGMzMTE4YmJjMDY4MjljYWYxZDBjMjhhZmNmNGEzNjcxNGRkIGxlZ2FjeS10cnVuaworMzIzMTQgOGJkMzRkZDU4YTkyYWEzMzQ3M2Y5Zjk3ZWIyNzRjYjdjYjE2NmIzNyBsZWdhY3ktdHJ1bmsKKzMyMzE1IGM1YmQ4YTg0NTIyMzlmMzZiZTIzMThhNjM0NGM1NmQ3ODU5OTc3YTIgbGVnYWN5LXRydW5rCiszMjMxNiA3MGQ2ZjhiMGZjNjk0NWU3MWY0NDM4Y2UwN2I0YTkxY2ExMzBjMzE4IGxlZ2FjeS10cnVuaworMzIzMTcgNDBkMjg3YzNkOTA2MjBhNzc2NTMwMTU4ODlkZWQ1YmJiODQ2NGQ2YSBsZWdhY3ktdHJ1bmsKKzMyMzE4IGQwYWU2MjBhZmJkNGQ0MWI4YTY1ZjEyNTA1MmFjOTBlMjRlN2Q2ZjUgcmVsZWFzZTIyLW1haW50CiszMjMxOSBlZDVlY2Q2M2MxY2Y5YjdmNGYyOTljODEyYjg2OGRlODVhMGU3MzBkIGxlZ2FjeS10cnVuaworMzIzMjAgOTY0MmZiNGNkYTJmZTRhZjU2ZTBiOGM5OGM4ZGY1YzU1MzIyNjIyMyByZWxlYXNlMjItbWFpbnQKKzMyMzIxIGM5OTI1ZmEyOWVhMzdlNTU4ODQ4NmQ5NzUyNjU5ZGJkY2NmYTNkNDYgbGVnYWN5LXRydW5rCiszMjMyMiAwNmQxMzdhNDI3ZTk2MTFkM2ZiMjYwYTIxM2RmNDE4ZmNhZTljNzdlIGxlZ2FjeS10cnVuaworMzIzMjMgNzkyMmQ1ZjQzODU0M2E1NzY1ZGU2NGY4MDIyOWNlMzE3MWQyMDM0NyBsZWdhY3ktdHJ1bmsKKzMyMzI0IGE0MTU0ZGQ1OTM5YWE2YmIzYTExMjg5MzllOTA3NGQ2YjEzODNkMTUgbGVnYWN5LXRydW5rCiszMjMyNSBkNmFmZTE5NmVmODIwODNmZjIyMjYyMGM5YWE1OTVlZmNjNTM5ZmIzIGxlZ2FjeS10cnVuaworMzIzMjYgNjU4YjEwYzViYTJhM2Q2YmUxNjdmMmY0ZDdhMTFlM2E3YjYxNjYwZCBsZWdhY3ktdHJ1bmsKKzMyMzI3IDAxODE3MGE0YTJkN2FjMjUwYWVkZjA3N2ZiOTY4ZTZhYzk2OGM4N2UgbGVnYWN5LXRydW5rCiszMjMyOCBhZWYwMWEwNzZlZjk2N2FlNzkzYzRkNjNjNzI0NDBiNTEzMmRjMTNkIGxlZ2FjeS10cnVuaworMzIzMjkgOTc4OTAxMzRjOWM0NDM5M2JiMzZhMzgyN2MwN2I1NTZhYjIwNTM5NiBsZWdhY3ktdHJ1bmsKKzMyMzMwIDQxZjQ1OGI4ZGEyMGEzMzRlZWM2NzgxOGVkZDk4NjgyNzlhNWU0NDYgbGVnYWN5LXRydW5rCiszMjMzMSA0MmRlNTBlMTkyZGY1YjllNDgwNjMzYTIzYzg2OThmZmZjYzAwOWY1IGxlZ2FjeS10cnVuaworMzIzMzIgZDZlMTNkMTIxMGM2YjU4NTBmYTE1MTgxZDQwZGI5YjgwODk1ZjA2OSBsZWdhY3ktdHJ1bmsKKzMyMzMzIDJjZTM5YTdiZTc5ZDlhNWIxN2U4ZGNkN2QwODcxMmJmNzRhYTgyYjUgbGVnYWN5LXRydW5rCiszMjMzNCBmYTc4NzRlYzZhNzFlZThjOTljMzIyYzJiODRkYTExMGMyYTUwNmMwIGxlZ2FjeS10cnVuaworMzIzMzUgYmUxNDk3MGE5OTU1MjJmZWRhYTg5ZmJjNDc1ZmIxNDc4MjVkMGI1ZCBsZWdhY3ktdHJ1bmsKKzMyMzM2IDUyOTMwYmU5ZGZlYTVhNTViNGNkODIxYjA0YWU4YTYzZjc4NmRkZGQgbGVnYWN5LXRydW5rCiszMjMzNyBkZTc2OTA1Mjc1ODQzZTc5YTY0YmE1MTU3MmU5NWJhNzBhOGNhMzc3IGxlZ2FjeS10cnVuaworMzIzMzggZWRjZmRiMmE4NTJlOWFmM2VkOWY3YWU5NTUyMjQ3NThhNGU5MDBiNCBsZWdhY3ktdHJ1bmsKKzMyMzM5IDI5ZjNiMjM3NTA0OWVmMDY4MjdlNTNiMWMzMGQ1NzdmZTYxMzE1MzkgbGVnYWN5LXRydW5rCiszMjM0MCAxNDliZDBlZjk0ZmI4NGRlOWJjYTJhMDAwNWRiNmM3NGE3ZTJkNmFiIGxlZ2FjeS10cnVuaworMzIzNDEgODIwZDk1NzBlZGViYzNjMmJkOGZmZDA1ZDk0MTRkODBlNGE5MWZlMSBsZWdhY3ktdHJ1bmsKKzMyMzQyIGQzMTI3YjY3MWQzNmMzOGQ4ZDdiY2Q0YmQ1OGNlZDU0ZjRlZWM3NzEgbGVnYWN5LXRydW5rCiszMjM0MyBkMDhkMTVhNzAyOTUwYjU3YWQyYjVkY2M3ZmQyYWM5MjI1ZjYzMGExIGxlZ2FjeS10cnVuaworMzIzNDQgZWMyYTBmMTVjMTRjZDE5ZDQ0OTQzY2NmZmE5YjgyYTc5ZmRjNjcxYSBsZWdhY3ktdHJ1bmsKKzMyMzQ1IDFkOGU4NGQ5NmRkZWM2ZGYxNzA2ZDg4YTNiNTg3YzhiZDg3MGVhOGQgbGVnYWN5LXRydW5rCiszMjM0NiBhYjRmYmY4ZWJhYjNiMGI1ODA2YTZiNDFkZGNjMjg5MmE5NGJmY2RmIGxlZ2FjeS10cnVuaworMzIzNDcgMTNkMGEzYzRlNDY1NzViYzcyZGVmMzhjNDQ5NzQ1Yzg1NDE2N2Y3ZCBsZWdhY3ktdHJ1bmsKKzMyMzQ4IDE2ZWY1YjliYzc4OWNiOWEzODU0MGQ1MTIxZWMyODI0ZDQwZDQ3MzYgbGVnYWN5LXRydW5rCiszMjM0OSA1ZTZmZmE2NTU0NjIzNGNiMjhhMTVhNjRkY2Q4MzEwYjMzMzZlNDQzIGxlZ2FjeS10cnVuaworMzIzNTAgMDNhZjQ2ZDFhYzI4NDA1Njc1NTFkY2Q4YTEyMmRjMzBiMzM0NTkwMSBsZWdhY3ktdHJ1bmsKKzMyMzUxIDQ2NDlmMzE4ZmNiMDJkYWZiZWUyZjYxOTk0NzNmMDgxYTY5NTRmY2EgbGVnYWN5LXRydW5rCiszMjM1MiA4MTYwYmM3OGM5M2FiMWE2MjJlYjg3NWY5YTIwNDczNGQyMTBhNWRmIGxlZ2FjeS10cnVuaworMzIzNTMgODkyMDVmNWJiNDQwYmZjYWI1ZGYwZjliYzJhNDE4MDVjOTAwNmMwMCBsZWdhY3ktdHJ1bmsKKzMyMzU0IDllYTBjY2RkYmVhZDM2OTRmZjMyMDhkOGI3MjE1MjVmZGRhMWMyZWQgbGVnYWN5LXRydW5rCiszMjM1NSBkZTZkMWU3ZTk4MjU3MjQyZGNlNDQyMTJkYTU3ZWNhZDY0MWI0NGZlIGxlZ2FjeS10cnVuaworMzIzNTYgYWM4ZGJiZTYyNDMyYjk0ZjNkNjAwNmU5OGI5OGMxYTJlY2EwOTUwYiBsZWdhY3ktdHJ1bmsKKzMyMzU3IDA1MWE0ZjEyY2M0NjI1NzE3ODUzZDgzNWMzMTBmYzUxNDliMzZiYTMgbGVnYWN5LXRydW5rCiszMjM1OCBmOTY4ZTkzZTNjZTAxODcxNzY5OGFkMTRjNDI2Y2QxMzVkMDY4M2FjIGxlZ2FjeS10cnVuaworMzIzNTkgMzFjYmQ0NmYwYzdkNjhkYjBlYzM5NzA0YzgzM2RmYjhjZGJkMWY1NCBsZWdhY3ktdHJ1bmsKKzMyMzYwIGFjNTg2MDhjZDIzY2U4NmU1YmJjNTMyNWQ2MzUxOTk2MzJlM2FjMTkgbGVnYWN5LXRydW5rCiszMjM2MSA4NmY0OTMzZmE0Mjk1ZTFlZGQzYjAwZjYwNWIzMWNiYWMzMzQ1MTk2IGxlZ2FjeS10cnVuaworMzIzNjIgYmE5MDkyMzZlYjEzYjEwOGUwNTIyZjY2ZTgwOGFjMmU0NGJmODhmYiBsZWdhY3ktdHJ1bmsKKzMyMzYzIDQzZDMyZjRmODkxMzg0NzQ4OWYzNjAwZWZjZmNkZTI1ZTFhYWJkNGIgbGVnYWN5LXRydW5rCiszMjM2NCA1Yzg4NmUwM2I0M2U0MWNiNzFmNjRmMmQ2Y2IwNjBiY2VmNDFmZmNhIGxlZ2FjeS10cnVuaworMzIzNjUgN2JiYTNlMmJlNTRlN2VhYTUwMDJmNjkwM2JmMDcwNDYwMjZiYmM3YSBsZWdhY3ktdHJ1bmsKKzMyMzY2IGFhNjM0YWRiNDFhOTAwYWQ4Yzk3NjAxZTQyMGNmNDk1YWRiNDkwZWYgbGVnYWN5LXRydW5rCiszMjM2NyBkNzkyNTQ0YWIxMTFmNDQyYzk2ZWQ0YjBhMTc3YmNjNDk1NTJiMzcwIGxlZ2FjeS10cnVuaworMzIzNjggNTJmM2Q5MGMxN2U4M2RlNTM0NTRkODgxNTI2NjliYWE3N2JjNmI2NCBsZWdhY3ktdHJ1bmsKKzMyMzY5IGNlYzlkMTNjNDNmZjdkYjgyYWI4MGQ2MzBhY2IzNmM1ODRkMjlmZGQgbGVnYWN5LXRydW5rCiszMjM3MCBkMzI5N2UyOTgyMTFiOGM3YmE1MTZmNjkzMzNjMDBkMjljNTlkM2I2IGxlZ2FjeS10cnVuaworMzIzNzEgNjZjY2ViNzU2MmI1NmE5MzRmZjYwZWExZWYzMTJmM2Q0YzQxYjU3NyBsZWdhY3ktdHJ1bmsKKzMyMzcyIGJkNjc4ZTY1Zjc4NDMyMGY0M2JjM2RjMmJlODg5OGM2ZjRhZDI5N2UgbGVnYWN5LXRydW5rCiszMjM3MyA2ZTJlNTk4NTM3NWM2MjQ3ZWM2YmUwNWRhNDAwNDRmOTM3ZDNjY2M5IGxlZ2FjeS10cnVuaworMzIzNzQgMDE0Y2ZhYTdhNzg0ZmJhMGEyNjJmZDM0M2I0MjEzYTlhZTBlMGM4YyBsZWdhY3ktdHJ1bmsKKzMyMzc1IDFmOTYwNDlhNzlkNGNmOWYyOTI5OTAzMDM3ZDhiMTcxZTg0NDllMTYgbGVnYWN5LXRydW5rCiszMjM3NiBjMGEyNmM1YTc5MzY0NzBlMTljMmI3NTQzNzMyMzU4NDkzOGVkNTAwIGxlZ2FjeS10cnVuaworMzIzNzcgNTYzYmFhM2U0MjhmNjk0NjViYzRkMTg5OTE0MzMwOGEzZDIzYjdlOSByZWxlYXNlMjItbWFpbnQKKzMyMzc4IGI0OWZmMDRjMThkZTdlZDBlNGQ3ZWY1OWRkM2IyOTdkYjQ0MWU3ZjMgbGVnYWN5LXRydW5rCiszMjM3OSA4OWRjMzI2NzQ1NTRlZWQwMDU2MzYxMzM0NGEyN2VkZWMyZDY0YWJiIGxlZ2FjeS10cnVuaworMzIzODAgNzU2NTEyZmJiNTI3OGQyNTFkNDViMjk5NzI0MmY4ZGQyYzBiN2IzMyBsZWdhY3ktdHJ1bmsKKzMyMzgxIGExZDdjY2Q5NWE1ZTgzZDYxNDg5ODBjYWE4Y2I4YTM0ZDAzZDg2YjggcmVsZWFzZTIyLW1haW50CiszMjM4MiAwYWQ3NDUzYTlmODI3NzUwMzA2ZWZlNzNiZDIwYTY4MThlYWY0MjM5IGxlZ2FjeS10cnVuaworMzIzODMgMDg1ZjY4MDA5Y2FkODE4Y2ViNGQzMzEzNzBlMjU5NzhkMTJlZDFhYiBsZWdhY3ktdHJ1bmsKKzMyMzg0IDljN2FkMWU0NTU5NjBjY2U3NDYyMzdhYmMzYWZmYWJmZTc3MDA5ODEgcmVsZWFzZTIyLW1haW50CiszMjM4NSBkZDAyMmQ0MjNiOGEwODg2ZGVmNjEzNDY3MThhNzAzOWVmZGQyNmNkIGxlZ2FjeS10cnVuaworMzIzODYgMDcxNzI0MjI5NWIxMWNiMzdmYWEwOGFiMWQyYmNhNzY3Y2Y2MDZiOSBsZWdhY3ktdHJ1bmsKKzMyMzg3IDk5ZTgyZGJhZjBjY2Q4Mjk4Nzc2NGFkN2FkY2JjOTA1NDEzMTE2YzggbGVnYWN5LXRydW5rCiszMjM4OCA3ZjIzNjY3ZDNjZmM0YWRkYjQyMTczNzIyMGM4NWQ3MTgwYmRlYzgyIHJlbGVhc2UyMi1tYWludAorMzIzODkgM2RmMGNmMTZkZWZjMjI4ZjdjMzgyZGVjYmIyNzIzYmM4MGQyYTBmMSBsZWdhY3ktdHJ1bmsKKzMyMzkwIDIyZDE3NzY4MmFlMTRmZjE3ZmExNmY2ZjZmMTI2NTdmYmYyZTIzNDAgbGVnYWN5LXRydW5rCiszMjM5MSAxNzFkYmRkZjBhMDIxNjcwYjUzOGNmNTM0NTU5MjQ2NTJkMjY1M2JhIGxlZ2FjeS10cnVuaworMzIzOTIgNjUwM2FkOGRjYTg4MTdkYzEwNGFjZThiYzU4OTE3MDdiMTg2YTkwYyBsZWdhY3ktdHJ1bmsKKzMyMzkzIDYzNDhiODViY2I5ZGU4MGI1ODg2ZTFiNDdlMDYzZWE0NWY2NGQyMTIgbGVnYWN5LXRydW5rCiszMjM5NCA5YzBhZDY5NGUzZTIwYTNmMjZmZWYwYTNjOGI0MjIxMzgwNzA4OTVkIGxlZ2FjeS10cnVuaworMzIzOTUgMmM3NDQ3ZWZjMmE4ZDBlMTZlMGZkNDZlMzhiZGQ1NGVkZDRmZjlkOSBsZWdhY3ktdHJ1bmsKKzMyMzk2IDc1MzgyZDEwMjc0OWNjZTk0MGRkMzBiMzQxNzAzMzVlNDM1ODljMWEgbGVnYWN5LXRydW5rCiszMjM5NyA2MGVhY2JlYTcxOTkyYzE2NzFlNjEzOTFhODZjZThkMDQ4NDhlYWYyIGxlZ2FjeS10cnVuaworMzIzOTggOWI3OTYwNTE3MWViZDRmNTU2ODgyOTE3NGE5M2E4YWY2OWJmMmYzZiByZWxlYXNlMjItbWFpbnQKKzMyMzk5IDk0NjZiNmUyNDgzMzJlNWEyNmJhOTk4YWQwZGEwNWFjOGY4NmI1NGMgbGVnYWN5LXRydW5rCiszMjQwMCAwMGI4OTQ3MjYyMGQ3ZTRiYTg4NGVhOTVjMjNkNDEyYzZiMzA3ZTRkIGxlZ2FjeS10cnVuaworMzI0MDEgMjliNmE0OGY0YzQ1MGNmZmE3NzQ4MDdiYmEwZWZmMGZkMDUxMjU4ZSBsZWdhY3ktdHJ1bmsKKzMyNDAyIDBlYTU5OTFmNmVkYmM0YzI3M2NlNThkNjUxMzdhZjQxNzdkZTYyODAgbGVnYWN5LXRydW5rCiszMjQwMyBlMDZmMmJmNTZiNDA2ODM3NGM5MmZiMzI3ODZkMjY1YzNmNTY4ZjhmIGxlZ2FjeS10cnVuaworMzI0MDQgYzliZWUxMWVhYThiOWU1YzljMmJjYjNkMGQyMTVhZDM5ZGFmYTg4MCBsZWdhY3ktdHJ1bmsKKzMyNDA1IGJjNDIzMWViMjc1ODQxNmY2NTMxNDBlZDlkZDZmMGFmMDY1OTY4ZDYgbGVnYWN5LXRydW5rCiszMjQwNiAyMTFjMDJmYjY1NzBhZmUxYzJlZDA0MDlhOTlhYjExODI4ZDE3OTk1IGxlZ2FjeS10cnVuaworMzI0MDcgM2ViYjRiY2ViZGQ3ZWQ2NDcwNjE5NjJkMjkwNmY1OGMwOTMwODc4MyBsZWdhY3ktdHJ1bmsKKzMyNDA4IDBkNTMwMjliNzk0OTdhNjFkODcxZGJhYTA2MjExMzIyMzAxZjg4YjYgcmVsZWFzZTIyLW1haW50CiszMjQwOSA3MDhhZWE4MmFkZTg3MGFiMmIzZjIyZmVhN2YwMzRmMGFhYzRiNTYwIGxlZ2FjeS10cnVuaworMzI0MTAgNTFlZDlmNWUzNmExOGM3NzI0NjNkNTBlYTM2YmMzN2QwY2I1YmYzMyBsZWdhY3ktdHJ1bmsKKzMyNDExIDc4N2Q2NjVlMWNkYzczMDNjYmE5ZTNlMjkyZDc4NjVlNjQ5ZDExODIgbGVnYWN5LXRydW5rCiszMjQxMiAzOTVmMmI5OWM3NTJmOTA2YTdjMzUyZjI4NGIxNjNlMDllN2VhNTFmIGxlZ2FjeS10cnVuaworMzI0MTMgMmM1YmYwOTdkYWY4NTVhMGRhZWU5ZTFjYTdkYTA4YzYxMjEyODNhZSBsZWdhY3ktdHJ1bmsKKzMyNDE0IDc0OTgxOWY4YjJhZGNhNzNmNWRlY2ViZWRmMmExYzUyZGVkYjEzMGYgbGVnYWN5LXRydW5rCiszMjQxNSA2M2ViMGM5ODdkZTdkYjQwMjkxMjFiYzk3YjBiMWFlMzVmYmQ1MWY5IGxlZ2FjeS10cnVuaworMzI0MTYgOGE2ZTRjOTJiZDdmMmJkMTI3ZTIzMTQxOTI4ODQ1ZmU3NjFlZGIyYiBsZWdhY3ktdHJ1bmsKKzMyNDE3IDY4MTY3MTlmNDM5YzU5ZmQ3MjZlNTkyMTFlOTQwNWUxMTJkZjk3MzAgbGVnYWN5LXRydW5rCiszMjQxOCA1NTg2ODliNmQ3ZjBlYjUyZWYxZjYxYWJiNTM2YWQwODg2MDBmNTg1IGxlZ2FjeS10cnVuaworMzI0MTkgMDE1ZDg5MWYzODczZGMwMzQ4NDcyZDliMDEwMGNlYmEwOTM1ZGM5OCBsZWdhY3ktdHJ1bmsKKzMyNDIwIDI0ZDJhMDVmNDFjY2ExODAyYTdhZjhhY2FiZjgwMjkxNWNiNmU2NTYgbGVnYWN5LXRydW5rCiszMjQyMSA2NGQ3Yjg3NjcyMmZkODc5NDYxNmYxMDdhZmM5ZGE1NzUwNDBkMjJhIGxlZ2FjeS10cnVuaworMzI0MjIgODA5NGMwZGI5NWY4YjZhOTQ4NjgzNjBhMmNmMjU5OWZlZGY0YjIxMSBsZWdhY3ktdHJ1bmsKKzMyNDIzIDgwM2JjYTIyNGM4ZmE3ZDIxNzIwODAyMjczODQwYzE1MWRjYmQ3ZjYgbGVnYWN5LXRydW5rCiszMjQyNSBhNzZhMzY4MzAxMmJjMzdjNDAwMDJkMTUwYjI4MGMxMmFlMjA4MDM3IGFzdC1icmFuY2gKKzMyNDI2IDA1ZTU3Mzg4Y2I4ZmRjZWU4YzhhOTk3NDMzODRkZWIzMzIxYzY1NmQgbGVnYWN5LXRydW5rCiszMjQyNyA3MjViMjgxY2NlYWQzOGJmNzEyMTYzYjYyZDFkNGYyNTc5OWU2MmIyIGxlZ2FjeS10cnVuaworMzI0MjggZjg3NGE0ZDI5Y2E0MTc4ZWI1MTI5MzBhZThmZThhYzEwNDlkNTJhZiBsZWdhY3ktdHJ1bmsKKzMyNDI5IDIxNjMzZTlkZjhjYzQ2Yzg2NDUxMjE4NDIyZDg0ODgxZjM0YjkyYjggbGVnYWN5LXRydW5rCiszMjQzMCAxMTI1NDAxNjBiNjUyZTZhYzIyYjdlOWRjMTBhMTJiNzM2ODg3YjhhIGxlZ2FjeS10cnVuaworMzI0MzEgNDZkMjZhZmE4Yjk1NjNmZDEyNWFkYjM3MjIwNzlkODI4ZGUyZjE1OSBsZWdhY3ktdHJ1bmsKKzMyNDMyIDcyZGI3NTc1Zjk3MDAwYzk3YjI2OWExYWM2ZGY3MDlmZWRlZTBiOWMgbGVnYWN5LXRydW5rCiszMjQzMyBhOWI1NmM3OGUwZDY0ZWNkZTQzNGM5YWMzMzgzODU4MmNjYWM5YjYxIGxlZ2FjeS10cnVuaworMzI0MzQgMjVjOGNlZTQ0NTdlNmFkMGFmZjIxMjg3ZTAwMDcxMzJlYTBlMTJlNSBsZWdhY3ktdHJ1bmsKKzMyNDM1IGMzNGNmOWNlOTUyZjlmYTI4MmJhNjYxOGE2ZmZmYjYyMjg2ZjZhZWYgbGVnYWN5LXRydW5rCiszMjQzNiAwYzk1MGUzMzIzZWU0ZWU2MzcwNjJiOWVhYWZhNTBlYzNjZmEwNmMxIGxlZ2FjeS10cnVuaworMzI0MzcgY2E0YmRhZjVjNzU3NTg1OWVhZTNlYjQ5OWM1YjllZTY4MzRkNjA4OCBsZWdhY3ktdHJ1bmsKKzMyNDM4IDEwMmY5ZTM1OGY1MjEzOGVjZjRjNDE0MDY3NDc1OGNkZjE3MDM3ZTYgbGVnYWN5LXRydW5rCiszMjQzOSBjMGExZWZlMTAyODQ3M2NjYmYxZmQyNWQ4YzgyMzNmMzk1MTBiM2ViIGxlZ2FjeS10cnVuaworMzI0NDAgMmJhMjBmYzlmNDk1M2MwOGJhOTVhYjQ3NzZiOGZmZDgwOTcwZWQ2OCBsZWdhY3ktdHJ1bmsKKzMyNDQxIDI4YTA5NzY3YTI0ZmZhNzkxYzY3MTNlNDIzNWVlMjViZmZhZWE5M2EgbGVnYWN5LXRydW5rCiszMjQ0MiBhNWUxYjE2NjJlYzAxMTkxZWQzOTdiMGY5YmM5ZTUyNGM2ZDcwNzMzIGxlZ2FjeS10cnVuaworMzI0NDMgMmFmOTNmZGZmNjA4ODhlNTQ3NmQ1OGVmNDk2NWE1NjhlYTcyYjFjZCBsZWdhY3ktdHJ1bmsKKzMyNDQ0IDExM2MzMTg4ODc1NTYxNDY2ZDExZWMzNWUxMTQ3MzlhYTdjN2YwYzMgbGVnYWN5LXRydW5rCiszMjQ0NSBlZDc0YWMyMWMxMzMyMjBmYzJjNjRlNDY3NTBhM2MzMjBhMmU5NWRjIHJlbGVhc2UyMi1tYWludAorMzI0NDYgYjMxNjI5MzM1NjM1NWVmZjc2NTRmZDRkYTFmY2EzYmYyZjE3ZjBlMSByZWxlYXNlMjItbWFpbnQKKzMyNDQ3IDczZGNlODkzZWI0YjM4MDI4ZDNiZWI2YjMyODQwNDk0MDM2Njk4ZjIgcmVsZWFzZTIyLW1haW50CiszMjQ0OCA2YmQyOGFiZDMxYTdmMGQzZTZhOTJkMGY3NmE2YTllOGY4M2M1OTM2IHJlbGVhc2UyMi1tYWludAorMzI0NDkgOTExMzBhNGNjMWNlMGVmNDZkMjljZjg0MmMzYjZmNDA5ZDMwNjc0NiByZWxlYXNlMjItbWFpbnQKKzMyNDUwIDU3ZTYxNTg4NTcxYjIwYjEyYjAwNTJjNmVjZTk2ODQzMGY5YzliMzEgbGVnYWN5LXRydW5rCiszMjQ1MSAwNDViZDE0Zjc0NjgyNWIyMDQ4ZWQ2ZWY0NWE0NzdmZmUzNWFhZDJhIGxlZ2FjeS10cnVuaworMzI0NTIgNjBlNzIyMzg0ZDYyYzZmODA2N2QyZGYyMWE2ZDAzYWU4MTVjMDkzZiBsZWdhY3ktdHJ1bmsKKzMyNDUzIDY0Y2I2NTdiMDMzODQ0NGQyZTM4ZWY3ZGI5NzE0MjU5YWRlYThjY2YgbGVnYWN5LXRydW5rCiszMjQ1NCBkZWYwOWVjMGJjMzE3MmM1NGY3NWIxMjlhMjE1MTM4MWY4ZDY5YmVjIGxlZ2FjeS10cnVuaworMzI0NTUgNzI5NmNkM2Y0NWM3ZjQ3M2RlN2IyYTVkOTZjZTI4YTQzYWM0NmZkOSBsZWdhY3ktdHJ1bmsKKzMyNDU2IDBjZDhkNTcwYzU5MTEzOWJjNGFjNjFlMTNjMGNiNzZkMjYwMWU4YWMgbGVnYWN5LXRydW5rCiszMjQ1NyAyZmFkNTQ4MzkxZGVkNmVkNGJkMDFhNjA4Nzg3N2M5YmQ4Yjk1NjZjIGxlZ2FjeS10cnVuaworMzI0NTggOWM3ODVhYjFlZmYwM2EyNzExODhkZjNjOWMwYzViNDc5MjgwMjYwYiBsZWdhY3ktdHJ1bmsKKzMyNDU5IGRjNGU0N2U2ZjAwMjM1ZGJiYjY0MDI0MmE3OWIyNDViMDFmNTJmMTUgbGVnYWN5LXRydW5rCiszMjQ2MCBiMzdhZjIxYjc3YmUzMTVjODIwZDdlMWRlOWNhNmNhYjljMDY0ZTMyIGxlZ2FjeS10cnVuaworMzI0NjEgZTA2YWFkOTBjMGFlMjRkOThmZGJiMThiMmY5MjkyMTlhNzE4MTFlMSBsZWdhY3ktdHJ1bmsKKzMyNDYyIDFjNWFkOTM2MDM4ZWYyNmMyOWQ2MGY1NjUzYzk0NDFiZTdjNTFlZjUgbGVnYWN5LXRydW5rCiszMjQ2MyA3MDEyY2E2NGJjNzQ5NWM3M2JkMDdhMzljNmQ1MjFlN2Q5NmFlYjI1IGxlZ2FjeS10cnVuaworMzI0NjQgZTRhNWYzOGZmMDA4OWJmMGMyYjZlZmIwOGZmODdlN2M0MTY2MWU4NiBsZWdhY3ktdHJ1bmsKKzMyNDY1IGZhMTU5ZmVmMjczMDA0ZGY1YWY2ZDExNDgxZjQyN2I5YWI0ZTRlODQgbGVnYWN5LXRydW5rCiszMjQ2NiA0NWM0YTJmMTU3YjM4ZWJiY2Y2MjI1YTQ5M2RhZTY3NGExNTllYmVmIGxlZ2FjeS10cnVuaworMzI0NjcgOThlMzFjZmQyNmRjMjYxYmI0ZmYyMDBlNDVmOTBiZjY1OGVkZGQ3MiBsZWdhY3ktdHJ1bmsKKzMyNDY4IGQ4MjIzODgwODJiYWQ0NzE0OTYyYzY1MDA5YWI2NGM5Y2VkNWM3OWIgbGVnYWN5LXRydW5rCiszMjQ2OSBjMmEwNWUwNzg1ZjE0OGZhZTk3Nzc5ODJmYzVhOTU2ODk0N2UwZWY3IGxlZ2FjeS10cnVuaworMzI0NzAgMjdhZjM3ZGQ1YTBiZjUyMTg0NWE4MzJiNGM3YjA1NjIyMzVlNmE4ZCBsZWdhY3ktdHJ1bmsKKzMyNDcxIDM5ZDgyZDAzODg3ODk0MWFjMTI4MGYyMGY2Zjg1ZTI3NTc4NTY3MTUgcmVsZWFzZTIyLW1haW50CiszMjQ3MiA0OTBhZjAwZmIxODMwYzM1NGIzNjg4OTczZjY4YTMwNGM0YmZiZTRjIGxlZ2FjeS10cnVuaworMzI0NzMgZWYwNzlkZWZkMmNjMTFmNWEyODg5YmY4Mzc5NDI4ZjQ4MTMwYzkwZSBsZWdhY3ktdHJ1bmsKKzMyNDc0IGVlODE1YTZiMTFlMjAyYmViMjY1NTI4OGRmNTg2M2FjZTY5MDZiN2EgbGVnYWN5LXRydW5rCiszMjQ3NSA4NjUxMWI5NmQ5ODBjN2NjY2U2ODA2MWNlOTVmNWExMjEyZWFlZDJmIGxlZ2FjeS10cnVuaworMzI0NzYgY2Q4MjI1M2YyMGI3MGMzNjc5YTdmYzJiNjJjMGFlZGE2OTVlOGYxNSBsZWdhY3ktdHJ1bmsKKzMyNDc3IGZlYjM1OTU0YjAzODY4ZDEyZGMxZTFiNWQ1NmFkOWM4OTkzYjNiYmUgbGVnYWN5LXRydW5rCiszMjQ3OCA0YzUzYjY5NGFmYTY5ODI0ODJmZjYyNjVjMjdiZjhkMDU3MDM3ZWU4IGxlZ2FjeS10cnVuaworMzI0NzkgZjM1MWZhYjczODk3ZGRkYjhiM2I4MmM1OTU2ODY4YWQ2M2NiZGY5YSBsZWdhY3ktdHJ1bmsKKzMyNDgwIDFiZWYzZWNhMjBjZTA5OTFmMzAzNGYxN2YyZGU2MDUyNmIyZDUxYzAgbGVnYWN5LXRydW5rCiszMjQ4MSBhZTE3ZmM4MTkzMDhiM2FiNjZmNzFiNGY2ZTkzMjIwMTYzNjY3ZGM4IGxlZ2FjeS10cnVuaworMzI0ODMgNzM2YmJkZWNhYTFkZjlkNGJmOGI2MWRlNDVkMDNjOTBhOTI1OTg4NyBsZWdhY3ktdHJ1bmsKKzMyNDg0IDU0NWZhZWM3OTBjNDczMjYwYzY1MmJhYTNiY2JhMTExYjljZWYxMzQgcjIzYjEtYnJhbmNoCiszMjQ4NiA1Y2NiNTUzNmZlZmViYmI2NGEzMjkxNzU2YTU2MzhiYzI3OWIyYjZlIHIyM2IxLWJyYW5jaAorMzI0ODcgNWNkYjcyODBjMzI2NmQ5NTQ4Y2NkOGE2YjNkNDA2YTIxZjM4YzljYSByMjNiMS1icmFuY2gKKzMyNDg3IDVmYzYwZTBiODgzNjgwMjA3Y2ZiMTAwODY1YzQyY2EzYTJiMTY2MzcgcjIzYjEtYnJhbmNoCiszMjQ4OSA1NzZmYTE3ZmYwN2NjMTczZDJiMjc3ZTQ1ZTRhNGRlYWI0NmFiZDJiIHJlbGVhc2UyMi1tYWludAorMzI0OTAgMTcxZWNmZmYyNjU3OWI3NTlmODhiOWVhYzVhMTVlMzUzN2RhZDY5YiBsZWdhY3ktdHJ1bmsKKzMyNDkxIGJkY2YzN2JlOTA0ZGJkMmUzNTNmMWM3ZmFlZjMxNjJiYTYxYTAyODEgbGVnYWN5LXRydW5rCiszMjQ5MiAzMDMwZDk0YTljMDU5MGJlNDE3MjBiOWM3Y2FlZDE1MjE0ZTdjODNlIGxlZ2FjeS10cnVuaworMzI0OTMgYjYyZDg3ODE2OTc2OTU0MTJkNjg2ZWQwMDQzZmZkNzFlZDFhNDE0ZiBsZWdhY3ktdHJ1bmsKKzMyNDk0IDk4ZjViZmIxOWM4NjhiMzYzZmQ0MDA0ZjMzMmZlYjg0NmM1Yzk0ZWUgcmVsZWFzZTIyLW1haW50CiszMjQ5NSA2OGM2MTg2ZGMxYTExYmI0MTJlZTAzYWViOWQxZWJhZGQ3YzNiZjE3IGxlZ2FjeS10cnVuaworMzI0OTYgYjY3ZjVjMzk1YTY4OGU1OTA1ODM2ODA0ODkyZmRiMzZlNmNlNjI0OCBsZWdhY3ktdHJ1bmsKKzMyNDk3IDEwM2ZhYTBjMmUxZTZmNmZiNGI0N2I3ZWQyNDU0MjUwYTAwYTcxMjIgbGVnYWN5LXRydW5rCiszMjQ5OCBkYjk4NDU5MDdlOGJlZDAzOTY0NjVhM2JkNzNiY2U2ZTJlZjc4NjE1IHJlbGVhc2UyMi1tYWludAorMzI0OTkgNjQyMzBlZThlZWE1OTViZTJlNDA0ZTNlMzFkYjljM2NkYjRlMGYyYSBsZWdhY3ktdHJ1bmsKKzMyNTAwIGY1MGQwZDBmMjlhMmQwYjUyN2E1YTI4ZjEzN2FiNGQzYmI3ZTFmNDEgbGVnYWN5LXRydW5rCiszMjUwMSA2ZDg1MmViZmYzNmZmNjNiNzk4NmU2OGUyM2E2YjA2OTljNWE5NjEwIGxlZ2FjeS10cnVuaworMzI1MDIgMTYzNzQwNTJjYjVkYjNjOGM2YzI0MjRiNjUzYjc1YjMzMmFiMmVhNCBsZWdhY3ktdHJ1bmsKKzMyNTAzIDUzZmYyM2JiMzI0OGZiODQ3MjgwNzAwYmRhNjdjY2U1NDgwNzcyMTkgbGVnYWN5LXRydW5rCiszMjUwNCA3NDNhZTljYjNhODNkYmZmMjMxMDFjNDY4YTVlMTFkOTFiOGJiNTJiIGxlZ2FjeS10cnVuaworMzI1MDUgMWEwYjdmYzQ2MjViODgwM2UzMzgzYmQzMDlhNmYzNjcwOWY0MjRmMSBsZWdhY3ktdHJ1bmsKKzMyNTA2IDNhOGI4YWVkZTEwMGQ4YzhlZGE5ZDY1OGE4ZWMxMjg5Y2Y2YmM0NjcgbGVnYWN5LXRydW5rCiszMjUwNyBhNTM1MjkwOTVlOTU0MDk0Mzg0ZjczYTdjZTZmNTk3NDM4OTZhMThiIGxlZ2FjeS10cnVuaworMzI1MDggNWYzZThiY2M4YzdlYmNhNjRiY2YwMTZlNmQzYjdiNzM5YzBlZTIwOSBhc3QtYnJhbmNoCiszMjUwOSBiMWJjOWUxNzFjNjJlODI5YWVjY2FmODAwOThhYzg5NzE5OTM3ZjgwIHIyM2IxLWJyYW5jaAorMzI1MTAgMWQ5N2Y1MmJjODRmYjBkYmI5NTMzZDNhMTQ0N2VlMDA1NGMzNjVkZSBhc3QtYnJhbmNoCiszMjUxMSA3MWUxOTFiODNkMDQ2NWJjZDE3MTQ2NzdjNzhjZGU5MDE3ZTk4NGQ3IGFzdC1icmFuY2gKKzMyNTEyIGI4NDYxMjE4MjliZGIwMDdjZjU0Nzc5MjlmN2ZlMzlkZmRjN2NlNDcgYXN0LWJyYW5jaAorMzI1MTMgYTYxMzMwYTNkNTljMjFjZDYyNDk1NzdmMTY0ZjFkMGU0MDk4MTMxYSBsZWdhY3ktdHJ1bmsKKzMyNTE0IGY1NWI1NTNhMGIzNDk5OWY2MDUwNmE4ODgwMTRiNTFiYzE2ZThiMDggbGVnYWN5LXRydW5rCiszMjUxNSA2MzkyZTg0Mzc1ODg4MTMxMjA3MzU1OGI2YTNlMmU5NjZiOWQwZGIyIGxlZ2FjeS10cnVuaworMzI1MTYgYzZkNmFkODYyYThjMzMxMTNlZTc0YjJjM2E0MGIwNTg5OTIxMTI3MiBhc3QtYnJhbmNoCiszMjUxNyA2NWY3MjBmYTYyMDBmZGFmZjQwYWQyOTgwMzE4NDMwM2QyNjYwN2JmIGxlZ2FjeS10cnVuaworMzI1MTggMjQwMDcxYTJiNDY2ZTRmMmEzM2Q4MmU5MzQ0OWI3YzM4MDc4NTg3OSBsZWdhY3ktdHJ1bmsKKzMyNTE5IDg1ZjBlNjA5NTRjYTdiMDAwNzY2NjhjMWZjMzQ2Njg1ZGM2N2Q1ZTMgcmVsZWFzZTIyLW1haW50CiszMjUyMCA5ZWI1YmU5Mzc5OTBhODkyZTVhNzNhYWI2MThhNjIxZjUwNzk4ZDM4IGxlZ2FjeS10cnVuaworMzI1MjEgMGYwZjYyMzRmMmZmNGVmZGNjNzNmM2NhNjMxNzgwYTliMzdjOGY3YyBsZWdhY3ktdHJ1bmsKKzMyNTIxIDY3Y2U0ZWU0YTI5ZDFlN2NlMzU3ZWY4ZDFjMDBjNjlkNTU3YzEwYjIgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMjUyMiBlMmQyOTU2OTk5NmQ4MGQ2MDVkYTY2ZTE3YmQ0Mjk0MWUwM2UxYzk3IGxlZ2FjeS10cnVuaworMzI1MjMgMjMxOGE5ZTE2YWIwYTlkYzk4OGRmZmZlNzE1ODNhYTNmY2NkNzQ3MyBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMyNTI0IDc1YzFjZWQ5M2JiNTJjMmFiY2EwNmJmZDEyMTFlNDc0MjgxZTM0MzUgbGVnYWN5LXRydW5rCiszMjUyNSA2YzQxNzU1MmY0NzM1YzA4YzhkYjU2NjEzNDJlZWFiM2JiY2JkYTAxIGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzI1MjYgNmU5ODYyMDY2ZTI5NmVjODQ4NjhjYTdhMDIwM2QwNDY5MzdmNWMzYiByMjNiMS1icmFuY2gKKzMyNTI3IDk5ODgxYjZlYTlmN2Q5ODBiMTQxNzU4ZjJiMGI4NjlkYTY2MzQ4NjQgcjIzYjEtYnJhbmNoCiszMjUyOCBhMzQxOTc2ZmY0NzZkOGQ0Y2QxMWRhM2JiNDIxMDc1Mzg1ZGVmMDBlIHIyM2IxLWJyYW5jaAorMzI1MjkgYjE4ZDJmMmRiMThkMDkwYzYxOTBiMzMzMmUwMTUwYTFhN2Q0M2RkMyByZWxlYXNlMjItbWFpbnQKKzMyNTMwIDg5ZTM1Y2RiZWNjYzBjZjE5MmNjZjliMmM4ZDBhZWRjNjQwNzExZmUgbGVnYWN5LXRydW5rCiszMjUzMSA2ODczMzc5YjhkOGM1YTA3MTUyNWFjNWUzNWM4ODMyMjcyM2YwZDJmIHJlbGVhc2UyMi1tYWludAorMzI1MzIgZWE3NzcyNzMyZGExOWMzMTQ3ZmJlMGU4OTFkYWFjZjFkZWMzZWQ4MyBsZWdhY3ktdHJ1bmsKKzMyNTMzIDQ5NDg2YzU0NGFjZGQ1NjE3MmFkZDQ2ZThjZDI3YjIwOTRlNmIwZDIgbGVnYWN5LXRydW5rCiszMjUzNCA2NzFlNGUyZWVjNGJhNzNlODRhODU4N2M4ODJjZDBlMTY4YmFjYTMwIGxlZ2FjeS10cnVuaworMzI1MzUgYWY1MzcyOWQzY2RkNjQxMTk1MjI1NDcwNjM5NzAwMzJmYzVhZTkwYyBsZWdhY3ktdHJ1bmsKKzMyNTM2IGU0ZWFiZTViM2RhMTNkNGZhYTNkMjcxYzNhMDM4ZTVhYjlkZTdmMjYgbGVnYWN5LXRydW5rCiszMjUzNyBkMzE2NGEzMDQ1OThiMTRmMTRkYTkzYmExZGE0YWZlODBmN2U1NjU1IGxlZ2FjeS10cnVuaworMzI1MzggOTZiNmNjNWQ0MDhiODRkMjVmMWVmMjYwMWFkNGZmZTIwMWFmNzQ0NyBsZWdhY3ktdHJ1bmsKKzMyNTM5IDM5ZjRiOTdjZTgyODE5ZGMyZjExMDNhMDVhNDdkZDJkNDNkZjg4MTYgbGVnYWN5LXRydW5rCiszMjU0MCBkNWUyOTFmMGFlMzk1NWNhYTdkNzAwMWI3MzAxOGVlNjk4MmY1NWMzIGxlZ2FjeS10cnVuaworMzI1NDEgMzVjOTBkOWNjMzEzNTc1MDZhOGQ4Njc2Mjc2YTdkYzc4NGJiNDA5ZSBsZWdhY3ktdHJ1bmsKKzMyNTQyIGQzMGE2YTU3NDk3OWM4YjZmMTY1YWNkMmM1OGFhZGU5YTIzNWU0ZGYgcjIzYjEtYnJhbmNoCiszMjU0MyBiYzEzNWQ3YjdkZjE2ZmI3YWMxZGEwNjA1YjBmZThmM2IxNzQyMzk3IHIyM2IxLWJyYW5jaAorMzI1NDQgZWRkY2I3OTBlZDhkOGJkNTFmMTkwNzY2NjljMGM2MzQyMzY2NTZkOCBsZWdhY3ktdHJ1bmsKKzMyNTQ1IDJkMDY5YzE2YzhiMmQxOTEyODU3Nzc2OTQxMDRjNDViNTNkOTdhMzUgcjIzYjEtYnJhbmNoCiszMjU0NyBkMWNkZTNkYWY5YTllNjE2NjdlZjc2ZmM5ODRkODhmNDIzMzk1NzQ2IGxlZ2FjeS10cnVuaworMzI1NDggZjQyMzgwMzYwMDBjNDU1NmM0MzliZGMxODk0NzI2MjgxMDc2MjU4ZCBsZWdhY3ktdHJ1bmsKKzMyNTQ5IGI5YTMwNzNmOTM5MjhjMWI4MDExMjRiZjQ3YjZlODM1NTg0MGUzZTUgbGVnYWN5LXRydW5rCiszMjU1MCA4MWQzNzNlNTg5ODM4YzMzOWUwMzJlNmVjMTcxMWQ4ZWMxNjc3Njg1IGxlZ2FjeS10cnVuaworMzI1NTEgMjM3Zjk3YzcxNjkxYmYzZjg0MGY2ZmNkMjRjZWU1ZTRlYjg2ODY1YSBsZWdhY3ktdHJ1bmsKKzMyNTUyIDA4MWVmN2I2YmUwNDM3NjgzN2ZiMjQ1YTI3MjJlN2RiODc0MWFiOTYgbGVnYWN5LXRydW5rCiszMjU1MyAwZTM1YzE1OTc0MWI1NzFkZTUzMTA2YjVkZjVhZTcwODc2MzZjZThjIGxlZ2FjeS10cnVuaworMzI1NTQgYWFiMGRiZTNjMDA4MWZiZDg0YTlkZmVkZDZjYjI4MWJhNjgwNjI3YiBsZWdhY3ktdHJ1bmsKKzMyNTU1IDAzOWFiMzFlMTAzNDc3OTZiNGI4MDY4Y2FhYzRmMjIwMmM0YWNhODEgbGVnYWN5LXRydW5rCiszMjU1NiA0NTI4Y2MwZWRiNmRhNTRmOTYzMDMzMWY4N2Y5ZTg0ZmU1ZTMxMmQ4IGxlZ2FjeS10cnVuaworMzI1NTcgMWQxYTg1ZjBlNWU5OTk4NTdjMTAzZjcyODlmM2RjNDk5ZDEyMzcyMyBsZWdhY3ktdHJ1bmsKKzMyNTU4IGZhNTk1MGZiZTczNjc0ZDZlMDBjNWZhMTk3ZWUzYjc2MDY2MTUzZTggbGVnYWN5LXRydW5rCiszMjU1OSAxZWFjMWEzNWIzNzA0MjllNmJmNmE2YTFkMzdlZDJmZWI0MjdlNDAzIGxlZ2FjeS10cnVuaworMzI1NjAgZTRlNzJmYTRjOTE0MTJmMzYyNjgyNmUzMGUxZGQ4NzVlM2E3NDc2OCBsZWdhY3ktdHJ1bmsKKzMyNTYxIGNlOWUyYWU4ZDU5ZDY2NDE2YWVlOWEzZTUyNmJmM2Q3NGJlOTllOWYgcmVsZWFzZTIyLW1haW50CiszMjU2MiAwNmFiZmM5YzY4ZTc3MjdlZmMwYzc4ZTY3N2JmNTFmZWE5YTdmZDI4IGxlZ2FjeS10cnVuaworMzI1NjMgNmE1MWQxMWZiMWU5MTVmNzZhZDQ4YTQyNGM5YzNmN2UzYTMxMjcxNSByZWxlYXNlMjItbWFpbnQKKzMyNTY0IDk2ZWVlN2QwNGQ4ODQwN2Q3Mzk2NjZlODRkOWNhM2NiMWVkM2FkMDYgbGVnYWN5LXRydW5rCiszMjU2NSA0ZWYxMDhmODE4MWYzMGM1NGU1OTI4NjlmMzNjNzhlODY1ZGEyMTgyIGxlZ2FjeS10cnVuaworMzI1NjYgYjA0YzA3NDU4NmFhNDI2NjM0YWU0YzMxZGE0YjkzNDI0ZjlhMjNlNCBsZWdhY3ktdHJ1bmsKKzMyNTY3IDMzNDc1NjYxODIzZDM3M2Q2NWNhOTM1MTdjMjdhNTdkNjJmZGJhY2MgbGVnYWN5LXRydW5rCiszMjU2OCBmYTAwNjM5Mjg1MTgxN2MzMDhmYTI2MmY3ZjYxNjQxMTkyMzU5NGZlIGxlZ2FjeS10cnVuaworMzI1NjkgMzlhZDc2MTQzMjg4YmEyYWFkYzI5YzM1NGNjZWNiMmJkNDE2NTg2NyBsZWdhY3ktdHJ1bmsKKzMyNTcwIDE3NDFhZjQ4ZmQ5ZjNlNjlmYTM1NTkyODNjZGU2N2U2Y2E5MjFhN2EgbGVnYWN5LXRydW5rCiszMjU3MSA5Mjg3Mjc4OTE2ZTNjNWYxZjFlN2Q4ZDNlYTJmNGU1YzU1NzE5OGY4IGxlZ2FjeS10cnVuaworMzI1NzIgZjJjNzRjZmVhMDUxMjQ3NGFkYjIzNjM4Zjg4ZTUyZTQ1MzdjZTQ3OSBsZWdhY3ktdHJ1bmsKKzMyNTczIDAwZmMxMzhkODU1NjU4Nzc0OWJiN2E1MjY1ODFmOTRiYjdmNDc5MDUgbGVnYWN5LXRydW5rCiszMjU3NCA4ODhhMzExOGUwZDQyMjg4YWViMTczMmQ1ZjNmMTdiMmZkNGY5ZTlkIGxlZ2FjeS10cnVuaworMzI1NzUgMTE0OTUwZWU5YWE3MzNlZTJjMDFmZmMzZWM4ODBiNDU5ODYzZDkxNiBsZWdhY3ktdHJ1bmsKKzMyNTc2IDgzNTMzMDE2YzI4OTcxNjVjYjRmN2E2NmFjYzBkNjYyNmIxYjRhNDkgbGVnYWN5LXRydW5rCiszMjU3NyBiM2IyODQ0MzZjMjRhMjBhMzgyOWY5NzBiNjY3ZDM0NDBmNTUzN2JjIGxlZ2FjeS10cnVuaworMzI1NzggYTc2OWUwNzliYjEyZmY4M2VjOTdlZjM4MDcxMzExNzM2NzdlZGRjYiBsZWdhY3ktdHJ1bmsKKzMyNTc5IDc4M2RkZGUzNzkyYjY2OTQ4NjRlOTQ0YWU2ZGIxODRlZTkzZjU2NDIgbGVnYWN5LXRydW5rCiszMjU4MCAwYTE4MGVlMjQ3M2JkOTllYzRjZDZmYmU0YWJmM2E1ZDhkYjYzYzc5IGxlZ2FjeS10cnVuaworMzI1ODEgYzc5OGQyOGRlZTQ2YjE5ZDE2MTI2MGU3YjQxNDMwYTQ2M2U3MGY4OCBsZWdhY3ktdHJ1bmsKKzMyNTgyIDkyYTFlNTg1YWJmNzYzYWMzNTE2NDJhYTJkYmNiYzZmNTJjNWE3NTcgbGVnYWN5LXRydW5rCiszMjU4MyAxODA4MmIyZDJlYmRmMTViM2ZkM2I5ZmI1NDdkODAzYmQ4NzMzNjM2IGxlZ2FjeS10cnVuaworMzI1ODQgYTQwYjU2NzFhNTYzOTIxZDI5ZDA1N2RmYjdhMjBkNDVjYWY3ZmUyZCBsZWdhY3ktdHJ1bmsKKzMyNTg1IDZhMzExN2RmNWUxMzEyNTlhZTQyZjllMjgwMGExMTEyYjk2MDMzYzYgbGVnYWN5LXRydW5rCiszMjU4NiBkOTE4MjFkOWQ0NzA5NjcyYzBiYzY5NTUxY2Y0NDM0YWUwYjA5NjBkIGxlZ2FjeS10cnVuaworMzI1ODcgOTljZjMzNjhkNjg3ZWE4OWU3ZmE2NzNjODQ1MTc2NjQ1MDA5ZWE1NSBsZWdhY3ktdHJ1bmsKKzMyNTg4IGExMTRlZTc0MjY3YzczMTMwYjU4NzBkOTYyYjUyNjY5YWVjYTZjZTUgbGVnYWN5LXRydW5rCiszMjU4OSAyZWVlOTY1NWQ3MWIwZjg5NmQ2YmFjOWJlZTc4YjIwNzM2MDk3Mzg5IGxlZ2FjeS10cnVuaworMzI1OTAgYzVmMThkYjFjOTY2MWQ1ODA3MjUzMzY5OTU3OGIyZmJjNGRmZjg1ZCBsZWdhY3ktdHJ1bmsKKzMyNTkxIDVkNGQ0ZWJmZDMxNzFlNzUzNWM5NDE4N2M4NWM3YTg4N2M3Y2FkMGIgbGVnYWN5LXRydW5rCiszMjU5MiA0NzU2ZmE1Mzg1NjA2ZmIxMjJmNWU5YTdkMTY3ZDlkZjNmNTU3ZjE5IGxlZ2FjeS10cnVuaworMzI1OTMgZmEwNTc4MjRjOWI0YjQyN2QwOTRhMzllNTQ4MTYwY2E3NDRlYjQyYSBsZWdhY3ktdHJ1bmsKKzMyNTk0IDA1ZGE3NzI2YzAyN2U0N2YxMTA5YjE3YzliN2VkNTRjODM4ZWUwYjggbGVnYWN5LXRydW5rCiszMjU5NSAzOTM0MjlhNmZhMTZkMWQ5MDQ4NTdlYjVkYTYwOTY0ZTYxYTRlYjIwIGxlZ2FjeS10cnVuaworMzI1OTYgZTA1OWE4YjExYjllY2NiMTAwNzJmNzY5OWU0ZWE0OWRlYTM1YzI2YiBsZWdhY3ktdHJ1bmsKKzMyNTk3IGZhZjJjYjUwNzBiNGM4ZDEzYjdhYzU5YTVmOThjZjc0MTZiZjJmNGMgbGVnYWN5LXRydW5rCiszMjU5OCAwMDFhOTA1NTU3ODA4YTE1ZTg0MzliNTgzYzFmZWM2OTg5YWU3MmY5IGxlZ2FjeS10cnVuaworMzI1OTkgZGJkZWI3MzRmZjk3OTlkYTgxNmM1OTM2YzVjNDM2YzQzMWZkYWMxMSBsZWdhY3ktdHJ1bmsKKzMyNjAwIDhkZjg5N2YxNGZiODYwMjZmMzQ0NzliMmUwOTY5YzgwZjRiYzRkYmQgbGVnYWN5LXRydW5rCiszMjYwMSAzMzU5OGU4ZTQ5YjIwYmE0YjVhNzk5ZDJhMWJjMjgyMDJiOTgzODgyIGxlZ2FjeS10cnVuaworMzI2MDIgYWM0ODdhN2Y3ZjJjNzcwOTc1NzhiZWQxYzhiODlmY2M3YzNhNTQ2MCBsZWdhY3ktdHJ1bmsKKzMyNjAzIDNhOWY1ZjBjNTEyZWI0OTgwZWMxYWM4MDlmYWY2Njc0YWZlZDU2YjAgbGVnYWN5LXRydW5rCiszMjYwNCAxOTY0MDEyZjZmYjBkMjNiZjhkN2JhMzk5YmI1ZTg1NzRhMjYxYzIwIGxlZ2FjeS10cnVuaworMzI2MDUgNmM0YTA0Y2U5NjVjMjU4ZjNhOWJiMGY5NGQ5MWVjMGNhZDdiOTVlYyBsZWdhY3ktdHJ1bmsKKzMyNjA2IDA5NDIyYzMwMTgyNjViODVhODBmMDA4OTNlMTZhMjdkNWUzNmM5YTQgbGVnYWN5LXRydW5rCiszMjYwNyA5ZDVhNzU5MTY5NzEwOTU4MGM1OGRlZjYyYzkxN2UwN2U2NTFlMTVjIGxlZ2FjeS10cnVuaworMzI2MDggMTc2M2Q5ZDNmZDlkZmVlY2Q2ZDZlMjdiZGI1NjdmYTE0Yzg2YmU5YyBsZWdhY3ktdHJ1bmsKKzMyNjA5IDliNGZmNGJmMDMzYjgxNjQ3ODI2YWVlOWZjYjE3YzdlMTI1NmNmNWEgcmVsZWFzZTIyLW1haW50CiszMjYxMCBiYWVhMzE4YmU0OTljZGZjNDliNTU3YWRkMTFjZTgzOThiOTQzMmQxIGxlZ2FjeS10cnVuaworMzI2MTEgMjViMjIxOGRhMDliNTlmOTZiODk2ZWU2YjQxMGE2OGEyODAwMTE5NyBsZWdhY3ktdHJ1bmsKKzMyNjEyIDM1YTRkNzRiNWI4ZWQ5OWJkMTcwNTFmMDk3ZGIxOTIzYzY2MTZiOWQgbGVnYWN5LXRydW5rCiszMjYxMyA2Y2E5NGFlYjI5MmFjNDc3OWEzMGY3NmJiYWRjMzVlNjA3OTJhODY5IGxlZ2FjeS10cnVuaworMzI2MTQgYWMyOTAxNWZmNmE4MWVmMDQxOGRhMTk2ZDg1OWRiNGY5MzgwYzlmOSBsZWdhY3ktdHJ1bmsKKzMyNjE1IDE4OWZkYWU4ZjQ5MmJmNmNlZDNkNWFlMGIxNGEzMmMyOWY0YTY1MTMgbGVnYWN5LXRydW5rCiszMjYxNiAyNWU2NjBlNzBkY2QwNjFlOTk4MmIwMzc4YWJmMzZmMDM2N2MwYWEyIGxlZ2FjeS10cnVuaworMzI2MTcgMmU5OTU2ZDAxZGUzMzJmN2QxMmYyMTg0ZWIwZTkxYTY1NDcwMjM2YyBsZWdhY3ktdHJ1bmsKKzMyNjE4IDRiYTc2M2JjNWE1NjBkYzU3ZGQxODBiMmQ3NWQ1NmU5NmI1N2I3ODIgbGVnYWN5LXRydW5rCiszMjYxOSAzNTBlZTMxYWFiMGMwMjQyNDczZDUwYWM5MGZlMzNmYWZlMDRhZmVjIGxlZ2FjeS10cnVuaworMzI2MjAgOTk1OWQ4ZmE0ZGRmMGY4YzA0MDk2MGVmMTBhY2NlNmNjOWFhZTBlZCBsZWdhY3ktdHJ1bmsKKzMyNjIxIGIxNzRkMDkyN2YwZTI1Nzk0OWM5YzEzYmZmN2Y0MzVjMmMwNDUzN2IgbGVnYWN5LXRydW5rCiszMjYyMiBjOWM2YmE3OTUyYTgyMjdhYThkM2IyYjkyNTliZGFiZGVhZWM5NjJlIGxlZ2FjeS10cnVuaworMzI2MjMgOWY5MDIyYzIxMDU2MjM0OWY0NzAxODc1MTg5MzY1ZTY3YjY0NDFlMCBsZWdhY3ktdHJ1bmsKKzMyNjI0IDY1YmY2OWY3YzE0ODlkODg0OGFiMjQ2YmUzYmM1YWQyNjRkYWFlYmIgbGVnYWN5LXRydW5rCiszMjYyNSBjOTI0MTJkNjM0YjEwYjMwMDI4ODdmNDIzNTBjODg0YTNmMmUwMjg2IHJlbGVhc2UyMi1tYWludAorMzI2MjYgNjhmMDQyZmFmYjdkZDA5YmRmYzI2ZmIzNDZmZTQ2NGNjNWUwZTBkNiBsZWdhY3ktdHJ1bmsKKzMyNjI3IGJiMTc3MDlhMzdhM2FjMDc0OWVjMTJhNDEwMTc0MDFjYjIxYjFiMmYgcmVsZWFzZTIyLW1haW50CiszMjYyOCAzZTg4Y2ZmMDU4MjJmMmMxYjU4YTVjYzA3NDhmYmNmOThiOTFlM2YxIGxlZ2FjeS10cnVuaworMzI2MjkgNGJmODY1MThkOWFlNTAxODIwNzBmNWVjZjAwODgwM2U1N2NjNTQ0MiBsZWdhY3ktdHJ1bmsKKzMyNjMwIDRjMTM5MTY4NjQ4YzZhZGUzYzMwMWFhODg5YzI5Njk3MzM0MzBlNGUgbGVnYWN5LXRydW5rCiszMjYzMSA4M2ZlMGY1YzkzNTk3Y2M2YzE2YTU2YTAzMjFlODI2ZmM1NjFiZDUxIGxlZ2FjeS10cnVuaworMzI2MzIgY2ZjYzQ1ZjE4NTE1YTBkYTdlZWRhYTkzYmI2NmU3ZjBkNTIyZWQ0MCBsZWdhY3ktdHJ1bmsKKzMyNjMzIDU4OTJjMWU1MTViNGRhOWUxMDc0OTU3OTU0MzY2ZjQ2NDY0OGExMDUgbGVnYWN5LXRydW5rCiszMjYzNCA4MTVmZjBhYjI0ZTcyOGMxY2I2ZGMwMDkzZGJjMTMzNzNjMmM5MTA4IGxlZ2FjeS10cnVuaworMzI2MzUgMzEyZjExODZhYTM5NDU4MWI1YjE0NTAxNzQ1YTJkMDQxZjgzNTM1OCBsZWdhY3ktdHJ1bmsKKzMyNjM2IGE1ZGQ1NzQ3Y2RmZTI2OGQ0YTU2YzVmMWJmNjE5M2U5MWU5OGU0OTcgbGVnYWN5LXRydW5rCiszMjYzNyAxN2JmYTc4NjA3NWFkY2IzMDEwODg2ZTRjMDQyODFlNWI0N2E4M2NiIGxlZ2FjeS10cnVuaworMzI2MzggYjU0YTg0ZDI5YzAwMDE2ZGVhOGJmZjIwMzU4Yzk1ODFiY2QzMDhkNCBsZWdhY3ktdHJ1bmsKKzMyNjM5IDQxMzg4ZTg0MjYxYjI0MmE2MmJmZDA1MDRhODEyMWQzMzA5Y2VjNWMgbGVnYWN5LXRydW5rCiszMjY0MCAyMjJjM2QyZmU0MzFiMTM3MmJjOTcwMDlmMjc4ZDYzZGExMDc4MDY1IGxlZ2FjeS10cnVuaworMzI2NDEgODJmZTNhOWFjMzcxZDQzNDZhY2Y2ZWZlYWY2NDdkYmM3MzY0NTJhMiBsZWdhY3ktdHJ1bmsKKzMyNjQyIDYxZDNmOGU2NmQ4ZmMwNjAwOGRkNzk1NDBlYjI1YTM4NGFlZTExOGQgbGVnYWN5LXRydW5rCiszMjY0MyA0OTNmZDdlNTIyMDZhMWFlNWEwNDQxMDdjMTY0NTUwNTQ5ODhhYzVkIGxlZ2FjeS10cnVuaworMzI2NDQgY2U2YzNjYzQyMmFiNTE2Mjg0NmFiZGI0ZmZlYjI2NGYyMTdlNGE5YSBsZWdhY3ktdHJ1bmsKKzMyNjQ1IGIzNzAyYjY4M2YyYWQyYmU2YjIwYWM3Y2VhMmUxNzY5N2NjNTRlMTYgbGVnYWN5LXRydW5rCiszMjY0NiBmMWZjYWM0Y2FiYWQ4NmZjYTkxMDBjMDczMWExYzllNzkwMjczZjg0IGxlZ2FjeS10cnVuaworMzI2NDcgZDU0NjEwZjRmMjYxZGNiOWUxNjk0NmFmYzkxYjVhODI4NWQzOWMyMiBsZWdhY3ktdHJ1bmsKKzMyNjQ4IDZiMDdmMzY5Y2YwM2RhZDg0MjZjZjVkN2IwMjMzNzIwMTBmZjE5NjUgbGVnYWN5LXRydW5rCiszMjY0OSAzODBhOWE1YWZhYTBiZGIyZjVmNjhjYWQ5OTcwMmE0ZDZhMTQ4YzAyIGxlZ2FjeS10cnVuaworMzI2NTAgZWQ0YjA5OGM3YmNhMWQ5OGFmNWJmNjZhNGE5NWRiZjA2NGNkZmQ0ZiBsZWdhY3ktdHJ1bmsKKzMyNjUxIDZmY2E2ZTA3YzJmYTlhNmY1YTZhMzM5MWI4OGE5YjU2Mzk0YjA3Y2MgbGVnYWN5LXRydW5rCiszMjY1MiBlMTA3YzkyMWI4ZjMzMTE2MjFhZjY1ZDczMWRhMmE1YzhhYjMwMGYzIGxlZ2FjeS10cnVuaworMzI2NTMgNTA5NTM3ODM5NDI0NmFmZmIwMjc0YTdmMjdiZGMwZjc5YzYzNGU0NiBsZWdhY3ktdHJ1bmsKKzMyNjU0IDZjNDBiNzNjNzA0NTdlZmJjZTE2OGY5Y2Q1NzMwODE4Zjc1MDE4YzggbGVnYWN5LXRydW5rCiszMjY1NSA1MDg0MTg5OGNjMTljMGFjMzU3ZDUwMWYyMDYxNDc0N2VkZGExYjliIGxlZ2FjeS10cnVuaworMzI2NTYgMDEzZDk1YzM0NmQyMzU1NDMyZThkMTdjNmY1NjNjMDYzNmEzNTUzYSBsZWdhY3ktdHJ1bmsKKzMyNjU3IGEwN2RlZjBkYzc4NTFlYTQ4YzViMTZkNGE5MmZjZTg3NzdlNDljYjggbGVnYWN5LXRydW5rCiszMjY1OCAzMDU1YzliZGZmNWY1MTE5YTYwMjhkZGM2Y2RiNzYzMDZjZTIyZGY4IGxlZ2FjeS10cnVuaworMzI2NTkgZjllNmY5ZmI4ZGYwYzVmMjA1MjQwZGRhYmMxN2Q3YTdkOGQyZjEzZCBsZWdhY3ktdHJ1bmsKKzMyNjYwIGEzYjI2MTBiNTA0MWE5MmFhZTdkMjUxY2Q1ZmFmZWNkYThiMGNjNDcgbGVnYWN5LXRydW5rCiszMjY2MSBjMjdhNjRiMzg3NjI3ZjFiYmRkYTQzMmZkNWU2MTRjZjEzMWY0M2M1IGxlZ2FjeS10cnVuaworMzI2NjIgZDJhZmEwMGMyMGUzYzRmZTcyNTIwZmE0ZjdhOTg3MTY3NDdhMGY0ZCBsZWdhY3ktdHJ1bmsKKzMyNjYzIDliNzE2NGNjMGM5MjY2ZWQ2ZTIxYzVkMzdmMTEyMmU1ZTI4OWM2MjEgbGVnYWN5LXRydW5rCiszMjY2NCAwNDYxMzE2MWEzMmI2YmFmZmFjMDZmMTczZWQwNjZjNzhjMWFlOWYxIGxlZ2FjeS10cnVuaworMzI2NjUgZTY5Njg4ODZhOTdkYTE5MGY4NWQxMjliMWZjYmE5MGU5NDY4OTk2MiByZWxlYXNlMjItbWFpbnQKKzMyNjY2IDE1N2EyOWUxOWViOWVjNzhjMjVhMzA5ZDM1ZTVjNmIzMDZjMDM3YzQgbGVnYWN5LXRydW5rCiszMjY2NyAwNjdhOTgyMzI5YWNjMzM4NmE4MDdiMzYwNzJkYTEyMzY3NzJmMTMwIGxlZ2FjeS10cnVuaworMzI2NjggZWVlZGFjNDllODZiMzg4ZmIyM2MxNTEzNTcxNzE2ZDc0YTU3NTdlMiByZWxlYXNlMjItbWFpbnQKKzMyNjY5IDEwOTgxMGExYWRhODYwNmYyODAzMGIzY2Q3NDM5ZDNjZDc4N2VhZTAgbGVnYWN5LXRydW5rCiszMjY3MCBkNGY2NTQ0Zjc5YWNlNDQxZGE3ZWI3NDdkYzY3YTMzMWM5YjM4NjUyIGxlZ2FjeS10cnVuaworMzI2NzEgMTNkOGYyOTczN2U1ZGUyNjgyNzY2YmRiZWZhNWZmMjE3YzU0MmM4NiBsZWdhY3ktdHJ1bmsKKzMyNjcyIGRjM2YzZjMwMzhhOGNmYTk0ZjE4YWUyYWZhNTI3NzEzOWRiZTFlZTQgbGVnYWN5LXRydW5rCiszMjY3MyAwODlmMjQyMWViMThhMGJhYTgyNGU4OTcyOGIwZmFjYTRmMDEzNTVmIGxlZ2FjeS10cnVuaworMzI2NzQgMmY2NTJhNTllYmIwMWY4MmRmMzFlZTc3NTIxYzFjYTk1MTQ3MjJlYiBsZWdhY3ktdHJ1bmsKKzMyNjc1IDJmNzQzZGU4YzVlMmEyYmY3M2M3ZDE0MGEyNjgxZDhjYTc4NmMzM2EgbGVnYWN5LXRydW5rCiszMjY3NiBjYjgzMmMyY2Q1NGQ0YWE3OTc3MzZhNWFiNTg2MjMxY2I2N2Y5OTJiIGxlZ2FjeS10cnVuaworMzI2NzcgM2Y3MGQ3NWNkMjhkYWNiYzRjNjM0ODQ2ODkxOWZlNzJlYTNlM2RmZSBsZWdhY3ktdHJ1bmsKKzMyNjc4IDRkZTAyZjE4YTQxYjQyZWJhZWNiNzY0ZmU0MjAyMDViYTE3NjQ3ODAgbGVnYWN5LXRydW5rCiszMjY3OSA1NzRiOTU1MWNmYzllNjE5ZmJlMTUzMzQ0MDJmZWFlMDAzNzNiZWVmIGxlZ2FjeS10cnVuaworMzI2ODAgNmJiYTQ4ZDFjZTNiYjA2OTdiOGVkN2QwZThjMzY4ZjFjY2FkNjNjNiBsZWdhY3ktdHJ1bmsKKzMyNjgxIDFjMmU2MDNmZWUwMjMwZWQ3NWY2OGI3ODc2YWNiZTJkNTNiN2Q2MjkgbGVnYWN5LXRydW5rCiszMjY4MiA0YWVhY2FkZTY2MDA5YjE4NmZiNzE5YjNiMGZiZTQzMGI1YTU1ZTU2IGxlZ2FjeS10cnVuaworMzI2ODQgZDVlNDg3MzYyZDNhZGQ0OTY1MDU2ZGRmMjJjMDZmZGQ2OTU1Y2IyOCByZWxlYXNlMjItbWFpbnQKKzMyNjg1IGZiMTE3ZDdmNTk1MGM2NGI0ZWNjMDI1NzhlZjU3MDA5OGRmZjFlN2EgbGVnYWN5LXRydW5rCiszMjY4NiAzZjIxNGMyNjRmNjNkNWJjNDAwNjQ3MjNmNTQxNmE1ZmZhZTBiNzIxIGxlZ2FjeS10cnVuaworMzI2ODcgMTNkYjViN2RlMGRkZTc1MjNlYTE1YTQwNjc3M2Y1NjhjZTAxYWY2OCBsZWdhY3ktdHJ1bmsKKzMyNjg4IDY1NjQ5MzUzNGNjNzc2NmFhNjFmNjk3MjM2NDI2YzczZmFiYmJhNzMgbGVnYWN5LXRydW5rCiszMjY4OSBlMWQ1Y2E4YWI3ZGM4MmM3MjYzOTgyMTE5MzhhMjdiNzJiNWViNmY0IGxlZ2FjeS10cnVuaworMzI2OTAgY2NmN2UxMzhhMTI2ZGQzMGZjZjJjNjBmNjJhMzdmYTYwMDc1MWJiYSBsZWdhY3ktdHJ1bmsKKzMyNjkxIGRiOTA4NDNiMDBmY2RiODM0MjhkOTQ5ZTM3YjBiM2E0MGRkNDkzMTEgbGVnYWN5LXRydW5rCiszMjY5MiBkM2MxYTAzYTUxMzA4OTA0ZjM1Mzg5YjJiN2M0ZjcwZjEzYmMzNjY5IGxlZ2FjeS10cnVuaworMzI2OTMgNTliMWIzZTJhMjNiNWU5NGMwMjdhZDk4ZjcyMTRlZDUzMjc3MDIxYiBsZWdhY3ktdHJ1bmsKKzMyNjk0IGVmZjg2Y2Y4ZjNiYjNlN2VkYmUwYjQ4Y2I5MjMyOTBjODMyMTY0ZWEgbGVnYWN5LXRydW5rCiszMjY5NSA4MTA4OGRmMGIxZGYzNjQwZTg5YjRkNWNkOTY0NWYzYmQ4MmY5ZmQxIGxlZ2FjeS10cnVuaworMzI2OTYgMDU1OTg3N2FkYTVjZjMwOWE2MDNkY2Q5NDY1ODVmMjhjMzlmMTAyNCBsZWdhY3ktdHJ1bmsKKzMyNjk3IDhlNzlkYzM3MzFiZmZjMjZiOWNhOGRhMzZhMDMzNTM1M2Y5ZmE5YTIgbGVnYWN5LXRydW5rCiszMjY5OCA0MzAwMjIzM2NjMmNkYTAxNDNkOTRhNjMxODdmYmMxOTRhNjI2M2E0IGxlZ2FjeS10cnVuaworMzI2OTkgZGU1NjRhODczM2QyMjc1M2ZlODMwOTJkMmJlZGQ3ZDQ0ZTJmZDQ0MiBsZWdhY3ktdHJ1bmsKKzMyNzAwIDU4YzhlMjg0NTFhOTc3ZTBmYTRhNjcxMGMzYTM1MmI0YzI5ZjRhODAgbGVnYWN5LXRydW5rCiszMjcwMSBkMDZhZGI1YTNjYzk2ZGZmZTNiYjkwYTk5Njc5YmJhNGQ3ZmQ3NTZiIGxlZ2FjeS10cnVuaworMzI3MDIgNTRmMWZmYTM3NDI5ZWFjN2E1MDE5OGMxNTlmY2FlOWQ5NzdkN2JjZSBsZWdhY3ktdHJ1bmsKKzMyNzAzIDA2NDQxOTc3Mzk1NmI3MDk4YmQ0YzM5NzMxOGMyN2RhYTdhZWFiNjEgbGVnYWN5LXRydW5rCiszMjcwNCBmMjc4YjI3ZWYxMDVkMzRlZjQ0NmE0MGRmYTBiYWNkNjM1MTgyNGU5IGxlZ2FjeS10cnVuaworMzI3MDUgNzc1MGI4NDYyYThmYzQwODZmN2Y5N2UzZjhkNTRlNTcwNzdhMTJkZiBsZWdhY3ktdHJ1bmsKKzMyNzA2IDE0M2ZmZjhkMjE4OTlkMDkzZmZjODYyZTI4YmFhNzIxMmJkZGY3MWEgbGVnYWN5LXRydW5rCiszMjcwNyBjZmZiNTE3ZjRlMTVmOWQ2Yzg1MGM3Y2U0ZGY2Njg1ZmIyNDgzOThjIGxlZ2FjeS10cnVuaworMzI3MDggMmIwYzBiZGE1Y2NhN2I2ZWE3MzUzMTVlZGYwZWRmZTNlZWNiNmM3MCBsZWdhY3ktdHJ1bmsKKzMyNzA5IDZkYzgyZGNmNTU4OTI2MDJkMjRmYjgzZDc3YWJkZDNlNTNiNTcyYmYgbGVnYWN5LXRydW5rCiszMjcxMCA0NWJmYTZkNTkxZjdjYTRhNTJhZDQ5NzAwYjAyNjljMTY3YzE4YzkyIGxlZ2FjeS10cnVuaworMzI3MTEgYmFlNjdlNDE0YTEzYTQyZjA5ZGVmYzY3NTNjZmEwZTAzYzMzMDRiMCByZWxlYXNlMjItbWFpbnQKKzMyNzEyIGUwOTM5OWUzYjJjMDkwZGY0OWVjM2JkYTY0YzQ1MDE0ZGFiYzdkOTYgbGVnYWN5LXRydW5rCiszMjcxMyA5MmViZDNkYWY1MDcyZWYzMWFiNWRiNWZkNjc5NmQ5ODhlMzhjMzI4IGxlZ2FjeS10cnVuaworMzI3MTQgOTgzNWI0MTEzM2FjMDZlNjk2OGFlMjVkOGFlNGZkYmU5NDFmNmIyYyBsZWdhY3ktdHJ1bmsKKzMyNzE1IDFiYWJiYjQ5MTlhN2YxN2QyZmRiZTlhZjcwM2FhNjQ1MDI2OThmYzMgbGVnYWN5LXRydW5rCiszMjcxNiBjMDE5YWE4MjdmODYwNTY5NzZkMjkxMDBlZTAwMjgxZjdmMmQ5MzgzIGxlZ2FjeS10cnVuaworMzI3MTcgYWI3ZGM1MzhmNmY3MmQyOGEyMWI5MmVlYzA0NmM1NTg3M2IwYjFhNCBsZWdhY3ktdHJ1bmsKKzMyNzE4IDhlOTJmMmUyYmRhOWY1YjBjMGZiMGI4ZTA1MGVhMzI5NTY5OGVkOGMgbGVnYWN5LXRydW5rCiszMjcxOSBiZjE2MzRiMDIzZDVhZWNlYjg0OGQ5YTcxN2EyMzhlOGJhOWFiODQ3IGxlZ2FjeS10cnVuaworMzI3MjAgOTAzNDJmMzk1NzIxZGY2NGUxOTBjNmVkODFmOTU2ZjVjZDRmNTE5OSBsZWdhY3ktdHJ1bmsKKzMyNzIxIDA0MDY1YzRhMWM2YjVhZmU1Mzk4YTA5YTkxM2UwMzY3YmVlOTcwNDkgbGVnYWN5LXRydW5rCiszMjcyMiAxYzg0OGU5ZjYxNjYyMzFjMDdlY2RhZjg1MTQwY2MzMjgwM2Y5NjdhIGxlZ2FjeS10cnVuaworMzI3MjMgNTY0ODk3MGM2NjVmMTdmMzhkODhlZTI4YjUzMmViM2ZkN2M5OWNkNCBsZWdhY3ktdHJ1bmsKKzMyNzI0IGIxMGE3ZmFjYzFlODg2ZGU4NDIzMjljMWJjM2E2M2ZlMTRmYmNhZDcgbGVnYWN5LXRydW5rCiszMjcyNSA4NWYxYTk0YWYzNzQyMjZmNDk0NDA5NDBlNjBmNWNjYmI0YjdlNmE3IGxlZ2FjeS10cnVuaworMzI3MjYgY2Q0ODkwM2U0MWJlZmNkZTE2MTY2N2Y2YWIzZjE3MDgzY2Q2ZGI1NiBsZWdhY3ktdHJ1bmsKKzMyNzI3IGM0ZThjNjcyMWU0NTY2NTNhZDE3Y2I4YWQ2YmJlZDAwZGIwZWYxMmUgbGVnYWN5LXRydW5rCiszMjcyOCA5ODhiM2U4MDcwNDM2ZGUyM2I1Njc2NjljZjg0ODcwNjUyY2RjZTg2IGxlZ2FjeS10cnVuaworMzI3MjkgMzVhMDlkYzgwODRjOWQwYWVmOTIyOTE0YTUzMTEyMGJmMDM5OTMzMSBsZWdhY3ktdHJ1bmsKKzMyNzMwIGFkODRmZTU4ZWMyZjhhZDc3YjY0NGE5MThjOTNhNGE5NjUyZGQ5YzMgbGVnYWN5LXRydW5rCiszMjczMSA3NTRjNDFiY2M4MWEyYzgxM2FjZTU4MGEyZWNhZTJjZWVkNDg4NThiIGxlZ2FjeS10cnVuaworMzI3MzIgNzhlZmJhZDUzZGQ4NmI3N2JhMzlmNzhhOTc4YWQ1YjUzZTkyMzAzMiBsZWdhY3ktdHJ1bmsKKzMyNzMzIGY1Nzc1MWZmZDZlNzhhYmVjY2ZkYTNlNjVhMDU1OGMyMDQ2NDIxNWIgbGVnYWN5LXRydW5rCiszMjczNCA0MzdiY2Q1MmNjMDQ1Y2Y2MzY2MGNiZGE4ZjA5NTcwNjUzYmNmMzg2IGxlZ2FjeS10cnVuaworMzI3MzUgZmYxMzZmZWY3MjMxYzQ3ZjQ0ZjAyMWU1ZDBiNmM1ZTIxMzlkNGJiZCBsZWdhY3ktdHJ1bmsKKzMyNzM2IDU0MGE3NzIwMjhkMjZhNTM5YzRjYmMzZDBlMzdhZGRhNWY5MjJjNGEgcmVsZWFzZTIyLW1haW50CiszMjczNyA3MDdlNWY4OWMyMTFiMGQ1ZWYxZWZhYjZhYTVmYmJmZDYyNTIyYTQ3IGxlZ2FjeS10cnVuaworMzI3MzggY2UxZDdlMTBmNDllOWQwY2E2NjMyYWUyZmNiMmEzMGM0OGY5MGI5ZiBsZWdhY3ktdHJ1bmsKKzMyNzM5IDVhMGJiNmVhYTc3NjE4ODBhOWQxMWE0OTg2NTE0NmIxNmE1MDk4OGMgbGVnYWN5LXRydW5rCiszMjc0MCA0MzJhZGQ4NGUwNjJkY2E5N2JjYmU3MDFiOWFlOWU1ZmFlYzgxYWJjIGxlZ2FjeS10cnVuaworMzI3NDEgNTI2ZjM3ZmIzODBkODY0NzA0ZjQ1YTI4ZmIwZTgxNjRhYzI4ZWM1MSBsZWdhY3ktdHJ1bmsKKzMyNzQyIDRiMmUwNWMxNzU0ZTZkMzM0YjcwYjIxYjE2OTM3ODU4YTExZDRkNjUgcmVsZWFzZTIyLW1haW50CiszMjc0MyBhNTcxYTlkNjI1N2EyYWQxYWQwNTdlMTM1NGJmMzFlMzYyYjZmMmNmIGxlZ2FjeS10cnVuaworMzI3NDQgNWJmOTYxODZkYjMxYzUzOTgyZTQyODI5NDJhOWU5MjFlMWQ1NTY2MyBsZWdhY3ktdHJ1bmsKKzMyNzQ1IDIyMDYwMDA0Yjk0YWVlZmEwOGE1OTU5NmUxMWYyMGFjZGFkMWNhMTMgbGVnYWN5LXRydW5rCiszMjc0NiA0YWUzYzJkOTg4OTBiZDg5NzQ2MWRjYjg3YjU4ZmEwMGM4Njc2OTQ0IGxlZ2FjeS10cnVuaworMzI3NDcgYTFkNTYzMTllZjBlYjM4NDA3MzEzZTM0MDhiMjI4YTE2N2U2YzQ4OCBsZWdhY3ktdHJ1bmsKKzMyNzQ4IDIyYjg5MGQxNTdmN2RiMWI2NmZjM2I1Yjc5ZjhmNzc3NWIzYTYwM2IgbGVnYWN5LXRydW5rCiszMjc0OSBjNWU5NjU1ZWJlZDcyYjkwZWQ1MmZiN2Q0YmI2ODgyODljM2RjOTllIGxlZ2FjeS10cnVuaworMzI3NTAgM2NkNWFlYzU5ZWQyM2RhNWVjNjRkNDAxNzYxOGZlYTc4YWIyYmU2ZCBsZWdhY3ktdHJ1bmsKKzMyNzUxIGU4YjU3MDkwNTJlMjVhMmQwMTBmYmVkNTA1YjM5ZGFmMmVjNTEwN2QgbGVnYWN5LXRydW5rCiszMjc1MiAyNDgwOTZhNDU3MzJjMWEwNTE1MzU3MzBmNDRlMTA5MTU0YTg0M2JhIGxlZ2FjeS10cnVuaworMzI3NTMgNWNlNjI5NjQyMTU1OWUxZDYyYjBlYWM4ZGJiMmJkYTlhMDZhODZlZiBsZWdhY3ktdHJ1bmsKKzMyNzU0IDM0ZDYzYjhjMjc1YmI5YzMwNDA3ZDU1ZmRiOWM3YjlhMDNmZWJhNmMgbGVnYWN5LXRydW5rCiszMjc1NSAzMmU3MGFkNzlmNjZkMGNmODdiNDhmYjIzNTUwNWJiMjFmNjVkN2Q1IGxlZ2FjeS10cnVuaworMzI3NTYgN2ExYWU0NzVlMGRhZDVmZmE5YjhlNmQ0Zjk5NGZhYmQ2NGNiN2I0OCBsZWdhY3ktdHJ1bmsKKzMyNzU3IDY0YTllMWJlMzI1MTNkNTg5ZmE0MDE4ZDU0NjNmMTEzNDE2ODg1NWIgbGVnYWN5LXRydW5rCiszMjc1OCBhNWU5OWU3ZTdmZjAzM2RiODVjNWVjY2I1Y2M4MTI0YTJkMTM2ZjQ0IGxlZ2FjeS10cnVuaworMzI3NTkgMTljNDE0MTg2YjllNTA1YjE3MjVmODA3YTExZTBmYWE3MTRmOTFlOCBsZWdhY3ktdHJ1bmsKKzMyNzYwIDkxZGUzYTA5MjRhMjk4YWQ5NTI4YjRmMzU0YWQyODk2ODVlMDFjZjUgbGVnYWN5LXRydW5rCiszMjc2MSA5M2M5MmYyMGI2YmZiNmRkMDI1NjMwNWZjMzJjZTgwODc5NTBlNjVhIGxlZ2FjeS10cnVuaworMzI3NjIgY2IwMDI1NDUxNDgyYmMzNjdiYWUzYTllMDBlODA4ZTQxNTFmOWYxOCBsZWdhY3ktdHJ1bmsKKzMyNzYzIGMwNmJmNmIyYjE5ZDkwMmNmOGFiOWVmYWVlMWMyYmFlOTFhYjc4NzcgbGVnYWN5LXRydW5rCiszMjc2NCBkNmJhODE5YTJmOTAxM2I1OGFlYjg1MWZlN2MxYTk5MjRiNDRmZTBmIGxlZ2FjeS10cnVuaworMzI3NjUgZjRkNDA2YWNmMWNhMGJkNTRkYjhkNzhmM2JlY2NhNzQzYThlZDYxOSBsZWdhY3ktdHJ1bmsKKzMyNzY2IDg1NDA2MDQ1ZjAxNGRkOWRkZTI4NWU1ODcyMmMyMzY4N2ZhNDA3ZDkgbGVnYWN5LXRydW5rCiszMjc2NyA1MjM3MmRjMTkwZmNmYmZhMDc1ZTc1NDUyY2FjM2MwZTY1ODg4YzZjIGxlZ2FjeS10cnVuaworMzI3NjggNGIwMjIwMjYwZjYyZTFmNGI2NDk0MGE5Y2VlNWMyODY0NTE5NDRmZiBsZWdhY3ktdHJ1bmsKKzMyNzY5IDRmODdhODRlOWJlYmIyOWZiMGRkODc2ZmQ3OWM1NGJjMDAzZTA3Y2MgbGVnYWN5LXRydW5rCiszMjc3MCAyNDc4NmMzMTMwY2E4NzZkYzRhNTljZWRjYTg5Njk4M2Y1OTg1YWI3IGxlZ2FjeS10cnVuaworMzI3NzEgNmFjMGE2NzJiMDgyMTNmZWU3MDg1ODk3NDBiNjE4ZmZmZTk0MWQ4NiBsZWdhY3ktdHJ1bmsKKzMyNzcyIGQ3YWMxYTY0MGQ4ZjljMDBjYTYyMjI0ZGZiZWE4NjM1Y2MwMTdlZTggbGVnYWN5LXRydW5rCiszMjc3MyA3ODc1ZmNhYWU3YTM3MTJmMWU0YmZmOGUzNzhlYmRmNzFmMThiOWNlIGxlZ2FjeS10cnVuaworMzI3NzQgYWRkZDQzN2JlNzQ5MjE2MjdkY2E5ODkzNjVhNjcyMzYzMTYwMTk4YyBsZWdhY3ktdHJ1bmsKKzMyNzc1IDI5ZjE5NDYwZjA2Nzg1NWM2ZGFkNzRhNTJlODBkOTI4NDllZjA4ZDYgbGVnYWN5LXRydW5rCiszMjc3NiBjN2RmZGE5OTNiMmZhZWRhMzJjMDc5ZWIxNjkyZWFjNDRiNzQ5ZTVlIGxlZ2FjeS10cnVuaworMzI3NzcgY2ZmNmI4ZjQyMmQxN2E2NjBjYTIxNzVkMTcxZGI4YTkyZmM5MTliOSBsZWdhY3ktdHJ1bmsKKzMyNzc4IDdmNTlkY2U4ZjhjMGQ0MjQ5MTMxYTAyOGRiOTdkYmYyNDM0YmNmZTQgbGVnYWN5LXRydW5rCiszMjc3OSA5MmU1M2M4ZTdhNzI0M2IyMTQzZmE4N2FjZGVlMzE3MGJhM2FhYzc5IGxlZ2FjeS10cnVuaworMzI3ODAgNmQ5MzMzMDc3NjFjMDE1NTlmOWMwYTQyMGI2YjhhMDZlMWQyMTg3ZiBsZWdhY3ktdHJ1bmsKKzMyNzgxIGU2NjkxY2U5MWI5ZmQ5ZTU5ODk3ZjRkZWQyNWFmMWMwNGRkMDA2MDUgcmVsZWFzZTIyLW1haW50CiszMjc4MiA1MmFlYmMxNDAwNjg3ZDM0NjY4YWZmZTljNDc2NTg5NWQ4ODI2MTRjIGxlZ2FjeS10cnVuaworMzI3ODMgY2YzMzg2MzNiMDc0NmMwYWViY2ZhMDE1NmIwYTc4N2QwOTk2MWE4MyBsZWdhY3ktdHJ1bmsKKzMyNzg0IDRjYmY3N2VkZWVkNTI3OTJiMTE3MzMxYjMzZDA1ZjRkYzA1NWY4ZDQgbGVnYWN5LXRydW5rCiszMjc4NSA5ODc2YjE4ZWRjYWI0MDYwOGFhYWU2N2IzYzI0Mzk1ZGRhOWM1Zjc4IGxlZ2FjeS10cnVuaworMzI3ODYgNjZhYTEwNWM4ZDE3OThiMTk3YjNjNzYyMmQ2YTlhYzllN2QyYmUyNCBsZWdhY3ktdHJ1bmsKKzMyNzg3IDYwZTczYzUwNWNmMmMxYzI5YjYxN2U1NmMyZTE4NGY3OTY3ZDAxMTcgbGVnYWN5LXRydW5rCiszMjc4OCA1M2RkOGM0MjYzZmQzMWRmYTk5ZTJlNmE1NTFkNzU5ODEyNTQwZGJiIGxlZ2FjeS10cnVuaworMzI3ODkgMmMzNTkyZDEyZDY5NGUzYWI4MzUxOTZhMjE1ZDIxMjFlZDMzMjZiZCBsZWdhY3ktdHJ1bmsKKzMyNzkwIGMxZTgzYjhkNWI3MGZlZGU1MmI1NzMyMWI5OTgzMmRmOTY1NWFmZDkgbGVnYWN5LXRydW5rCiszMjc5MSBlOWY5YTE5NmZkZWZlNGY3MmU4NzYwYmFiMDQxOTYwZjQ2MjQ3ZGU2IHJlbGVhc2UyMi1tYWludAorMzI3OTIgYzMxMGY5ZGRmZGNiZGIxYTdiNTUzYjFmMjgwOTNlNWMyOWEzOTQzOCBsZWdhY3ktdHJ1bmsKKzMyNzkzIGFlMDRhNzNiZjhmYzFiZTcxMzA1OTcwMGMwMTRmMWQ4NjA2OGJlMTEgbGVnYWN5LXRydW5rCiszMjc5NCBlNTdlMjJhYTU2YTQ4Njc3MDM1ZDRjMDU4MjI0NWI0YTM0YWQ4NmExIGxlZ2FjeS10cnVuaworMzI3OTUgZjkzNTEyZjFlMjBmZjE2ZTU1YzQzOGJhNTkwYzZhMzhmOGIyNDk5ZCBsZWdhY3ktdHJ1bmsKKzMyNzk2IDVkYTE5ODQ4MGI2YTc2ZmUzOGExYTY2YTYxYTNkMDI3OTVkZWJiZTUgbGVnYWN5LXRydW5rCiszMjc5NyA0MzMyZjIwNTMzZmNkZjNlYTk0ZjI2MGM3YjNjODAwNDM3OWFjZGEyIGxlZ2FjeS10cnVuaworMzI3OTggNjkzMTU1Y2RhZTAzZjgyMTBiNDk4NWQ4OTNhNDcxMjA1ZDgwOWE1NCByZWxlYXNlMjItbWFpbnQKKzMyNzk5IGU2ZTEwMGVmYmM3ZDMxZWE0MWE0MWI0MDdiYmZkYTEzZjFjZjZiNmMgbGVnYWN5LXRydW5rCiszMjgwMCAyYmYyODkwNGE4ZWNhYTUzMGExNTczMmMyZjEzMmQzOTZmNDM2YWJjIGxlZ2FjeS10cnVuaworMzI4MDEgYjYxOTFjYThlZDgwNzE1OTJiYmM4ZTMyZTA0MWQ3NzFiZjJiZWUyMyBsZWdhY3ktdHJ1bmsKKzMyODAyIGJjNTIxNjg5NjNiMzIxZDBjZThhYmUxMzU1Yjc5ZTA1NWU2NGU4ZmYgbGVnYWN5LXRydW5rCiszMjgwMyBlZjNlZjg4ZTM2MTRmNmExMjcwYmMzYzA4NDkyNzZkN2RkMWRiZTBjIGxlZ2FjeS10cnVuaworMzI4MDQgNmMzMGJiM2UzMzI1NzdjNDNlODVkYWM1ZGJlMTY2NjQ2ZjAzODIxNyByZWxlYXNlMjItbWFpbnQKKzMyODA1IDhiZTlhMzE2ZWI5ZGUxNjVjNTQyOGY3YzFhYWQ2NTY5Mjc5OThjOTYgbGVnYWN5LXRydW5rCiszMjgwNiAyOTgyZTYxODI1NjYxZWYxYjliOTZjMTBiOTJjYTFkYTZmNTBkMGVmIGxlZ2FjeS10cnVuaworMzI4MDcgMTY3MjFkNzNhZDI5M2JkOTI3MWZlNmJhNjg2MTU3MDIxMTZhNTVhOSBsZWdhY3ktdHJ1bmsKKzMyODA4IDVlNmQwZGNmMTU1Zjg3MzRlOGUwZjI0YTI3ZWE2MTIxMzJiZTRlNGYgbGVnYWN5LXRydW5rCiszMjgwOSA0NmZjM2Y4ZTllZWUzMzljNWZjODIzNzNmMDJmZjU5MTdjMjAwY2QzIGxlZ2FjeS10cnVuaworMzI4MTAgOWQ4ZGU1NjVlNWRlYWNkYzdjNTM1OWFlZTkxMmM5MGI0MmI3YzFhMSBsZWdhY3ktdHJ1bmsKKzMyODExIDdmMDA3NGVlOGFiOTk1MzI5NzgxNzkyZjljZjQ5MzI4Y2Y0MmFmMDEgbGVnYWN5LXRydW5rCiszMjgxMiAwMDFkM2M3ZTk2MzcwYzY1Y2E4M2RkYWE3Y2YwMWFhZmFjYjNkNWE0IGxlZ2FjeS10cnVuaworMzI4MTMgNTMyZGUxOTMzMmE0NzkzMTA3NzliMzk4OGZiOWY1ZTQ5ZGYwYzA5OSBsZWdhY3ktdHJ1bmsKKzMyODE0IDRjMWQxYjM1OWYwNjY5YzhhNWZjNTE4MGJkOTIxMGQ0NDEwN2ViM2EgbGVnYWN5LXRydW5rCiszMjgxNSAxZDRlYzUyYjMxNmMwYjgwZDJhNzI1ZmEzZjhlMGVhZjY4YTJiNjUzIGxlZ2FjeS10cnVuaworMzI4MTYgMzg0YmRhMzQzNzI1YTBkZWQwZGNkZjI4MDE3ZDQ2ZGFjZjhjZmViNCBsZWdhY3ktdHJ1bmsKKzMyODE3IDJiYjVjZWVmOWFjM2MyZDIyMTQ3ZmJiYjA3YmIxYzY4NDJhNmMwOWYgbGVnYWN5LXRydW5rCiszMjgxOCA0ZDkwMTdlZjdiNWYzMTEwODk5YzlkNDRhM2I0ZjE2M2YxMDZkZTcyIGxlZ2FjeS10cnVuaworMzI4MTkgM2Y5YWE2ZjFhZWYwOGM0ZDIyZTYyMTgyZjY1OTk4ODg5YzdlNmY0ZiBsZWdhY3ktdHJ1bmsKKzMyODIwIDg5YjRlOGUyYzIzMGNiZTg1ZjA2NDQxZDRiZDBhNmIwN2Q0NTFjZjMgcmVsZWFzZTIyLW1haW50CiszMjgyMSA2NDNmM2FjNDMwYmU4N2RjNGUxMGI5NDQ3Mzk4ZmFjMzZhMTU2NTgzIHJlbGVhc2UyMi1tYWludAorMzI4MjIgNjU0NWU3NDk4NjM1ZWMyMTlkYjBiMGY2OGUwN2FmYzZkYTJlNTgxZCBsZWdhY3ktdHJ1bmsKKzMyODIzIDQzNGVmMTc0ZjQ3ODYyMzgyOWI2OTkzYTA1N2E4Nzc1MDEwNDQyNzAgbGVnYWN5LXRydW5rCiszMjgyNCBmMGI2NzczMWU1NDViNWI5NDQ3M2M0YWQzN2MzYjJkMjRiYTE4MGM3IGxlZ2FjeS10cnVuaworMzI4MjUgOWNmMDlmOTJiMTk4YmVkY2VmODQyN2FhMDhmYzdjNzExMDAzZGYzMyBsZWdhY3ktdHJ1bmsKKzMyODI2IDlhZTE3YjM3NzliYmIwMmQwZjI0YTliNGI5M2YyZmJlMGM0MjEzNGEgbGVnYWN5LXRydW5rCiszMjgyNyA0MjFmZmQ3YzU3YWZlZWE3MzgwMjNhZGMxNTJhZTEyOGZjMjcyNzAwIGxlZ2FjeS10cnVuaworMzI4MjggZWZlNWRkNjBjZWU4OGFiZjdjZjU4NmRjYTJiNDFlYTA4ZDlhMjBlOSByZWxlYXNlMjItbWFpbnQKKzMyODI5IDQ1ZjdkZTdmMTA1MmM4YjAxY2Y2YWRjZTM0MDIwMmQ4NjFmNzM2MGMgcmVsZWFzZTIyLW1haW50CiszMjgzMCA1NzBhN2I4YWExNTQyMTY1NjVjNzJlZjM1NzliNTE4MjZjNjRhMWFjIHJlbGVhc2UyMi1tYWludAorMzI4MzEgNGY1MzFjZGYyNDJlOGFjMmY5MWVjYjllNzNkYWYwODM0MzZhZGM1MiBsZWdhY3ktdHJ1bmsKKzMyODMyIDFkYzdjMGEwMjBkM2Q3ZTM1YjcyYTExYjA0OGVkZmE0NzQ4NzRiZmQgbGVnYWN5LXRydW5rCiszMjgzMyA2ZTk1YWRkOTJjOTliYWI4ZjNjMGZkNzIxMTg3NDBkMDJiZTczYzFhIGxlZ2FjeS10cnVuaworMzI4MzQgNDYzMDBiOWFmMDJiOTRkYWRjZTUyMTRiZDllNmQyN2FkNGQyZjZmOCBsZWdhY3ktdHJ1bmsKKzMyODM1IGY0NzViZWMzMTY5NTUxNDQ1YzdlYjVkOGU0MDk2NDNiYmViMDM5ZDUgcmVsZWFzZTIyLW1haW50CiszMjgzNiAwNTRkOWJjMGQ4NjA4YWI3MzQ0ZDA2YWQ2MDFhZDcxNmMwZGE5NWU4IHJlbGVhc2UyMi1tYWludAorMzI4MzcgZjM5YzI3MWE5YThlNmMyMjhhNDEwOTQwNDJkNDRjNGRiYjFhZGViOCBsZWdhY3ktdHJ1bmsKKzMyODM4IDlhYTA2Y2JkOWNjMWEzMDdjNGM5YzkyZGM5ZjMwMTY4YzY1NjU3ZGMgbGVnYWN5LXRydW5rCiszMjgzOSBjN2Y2ZjczNzQzYjA4YjQ4YjMzZmE0N2M0YTg3OWRhYjAyNzU5YWNkIHJlbGVhc2UyMi1tYWludAorMzI4NDAgMmFhYTM5ZWRjNTExZTdkMzAwYmEyMTM0NjM3N2RjMTg4ZDNlMTdiZiBsZWdhY3ktdHJ1bmsKKzMyODQxIDg5NmJiZDA4MDZlOGYzZjIwYmJkNTc4MWI3MmZmMmFmZjM5ZGEyM2MgbGVnYWN5LXRydW5rCiszMjg0MiBiZWUzZDFhMWI5YTlhM2NiMTU1Yjc2NjE1ODI4Y2I1MWU2OGJmODIzIGxlZ2FjeS10cnVuaworMzI4NDMgNGIxYzE1MGQwN2Q4YzViMDQxYmIzNWQ1YWRiNzEwM2FmOGE0NmMxMSBsZWdhY3ktdHJ1bmsKKzMyODQ0IDIyN2M2NjQ2Y2M2YmI1YjFhMmI0YmViMTViMWViOGQ2YjFlN2JlMzMgbGVnYWN5LXRydW5rCiszMjg0NSAxMjk3ZDQwNTE1NWJkMzZkMTU3ZTZhMWRjY2E3Yjk3MTE5M2RlNWYyIGxlZ2FjeS10cnVuaworMzI4NDYgOWIyNDI1MDZkNmRjN2Q0N2YzZGI4ZDY3NWJlNzMyNzYzNDMyZGQ5YSBsZWdhY3ktdHJ1bmsKKzMyODQ3IGQ2NjVjNmI5OGNkMjQxYmE2N2RhYWE2MmFmYTViNTM3ZDc1OTE3MzkgcmVsZWFzZTIyLW1haW50CiszMjg0OCA4MTI5NmE4MGExNWYyZTIwNWI3YzlkMzdiN2I0ZTBlMzQzNzE1MDk3IHJlbGVhc2UyMi1tYWludAorMzI4NDkgNmQ2YmRhMjU0OWI2YmQ0NjBkNWIzNGYwZTRlZmIyNWI4OTQ2OTAwMiByZWxlYXNlMjItbWFpbnQKKzMyODUwIGE5MjEwYmVjM2I1YWY5Mjc0OTE2NjcyNGZjYzEzMDg5M2FjYmY0NTggcmVsZWFzZTIyLW1haW50CiszMjg1MSAwYTk3YWRjNmE0N2ViMjQ1Y2M5YTdlYzIyYjRlMjk0NzczZmFmYTMyIHJlbGVhc2UyMi1tYWludAorMzI4NTIgYjk3NjJmMDAzZjMwOGQxNzUyNzMxYWUzZmJiZWYzMGYxY2YxZjk3ZiBsZWdhY3ktdHJ1bmsKKzMyODUzIGNkMWM4MjZjOThhMmJmYmNlNGFhZWRiNWIxZjAwOWNiM2JkYjA3NWQgbGVnYWN5LXRydW5rCiszMjg1NCAzNjFmYWQ2MzMzMmRkMjQ5MDVkMjI4MzlmMGZiNjYyY2RkZGQ5ZjY5IHJlbGVhc2UyMi1tYWludAorMzI4NTUgNzU0ZmQzNGFkOTc4NGUyYzc3ZTcxNjc5YjVjNDY2ZmUzZjkyMGE2YyBsZWdhY3ktdHJ1bmsKKzMyODU2IGY2ZTkxY2E1NmE0OThjN2Y2MGI1OWZkNzgyMGMyMWNkY2I4ODE3MWIgbGVnYWN5LXRydW5rCiszMjg1NyAzMTVhNzQ3Mjc3YmZlNzZkNTgzOTUzNzhlOWUxMDRiNTlhYTBiNDc2IGxlZ2FjeS10cnVuaworMzI4NTggYjFmNjQzNjkwYTg4N2NlMjFlZGU2OGIyZjJlOWMxNzRiYmFmZjE1NiBsZWdhY3ktdHJ1bmsKKzMyODU5IDU2ZmZjYTAyYzgyNDNiMzUxZmU3NDI0MzJmMTk1ZDY4ZmVlNjczOTYgbGVnYWN5LXRydW5rCiszMjg2MCBlNzA5NDM5MzM3MzllZmNhNjkwNjRlMWVkMmIwMDgyNTBkOWZiNDZiIHJlbGVhc2UyMi1tYWludAorMzI4NjEgNWVjYzQ4YWQ2NjM0MDAwZTdlZDYzYzQwNWIxZjViNmZjMDM2M2U2MSByZWxlYXNlMjItbWFpbnQKKzMyODYyIGZmOWJhM2QxZTI4MGNjNjIxNzNjNDhhZTJlNmJiZWRjNDFhZGQ2NzYgbGVnYWN5LXRydW5rCiszMjg2MyBkYTJjNWQ5ZGQ2MGUwN2UzMzM0MzgyODMyZWE3NzFjNjIxODBjMGQxIHJlbGVhc2UyMi1tYWludAorMzI4NjQgMzViMjc2OWIwMmI2MzQwOTk4NjUyMTcyMjE0OWJiMDI0OTNjOTg0ZiByZWxlYXNlMjItbWFpbnQKKzMyODY1IGU1YWZmMDYwMzdiNzk0ZTZlZWE4NjdiMWFkM2VkMTc4ZDk1OWMwNjUgcmVsZWFzZTIyLW1haW50CiszMjg2NiBkOWNmNTM2YzUzNDBjZWRkZTdmNTdlN2ZlZjQyYWRhZWNlYWYyNTg5IGxlZ2FjeS10cnVuaworMzI4NjcgNTg0ZGM0NmNhMDY2ZGEwMzgzYzJkZGU2NDg4MGUyMDE4MDU4YThiZiBsZWdhY3ktdHJ1bmsKKzMyODY4IDY0NjIyMTZmZTNhODdhYmMwYWQ1OTUxOTZhZTJiYzkzZGUxNjgzNmUgcmVsZWFzZTIyLW1haW50CiszMjg2OSA0YmFjNGQwZDNlM2VkMWIyODg3N2I3OTUzNmNjMGY1M2M3ZGJmOGNkIHJlbGVhc2UyMi1tYWludAorMzI4NzAgNjk5NzQ2NjMzMjQ2YzcyOTZlNTIyZDZlZGMwNDQzMmZiN2UzYzI2NSBsZWdhY3ktdHJ1bmsKKzMyODcxIGYwNWJhZTQxMmI3MWIyNDU3MDdmMDM3MTIxZTFhNzFjOWExYzYyYTcgcmVsZWFzZTIyLW1haW50CiszMjg3MiA5ODU2NzA2NTA2NGI3YmI1OTdiMjMxMDhkMDhjMjBjNjZmZTZlMjQ5IHJlbGVhc2UyMi1tYWludAorMzI4NzMgMDUyM2YwOWJiMzQ4Njc1NmI3ZWU5ZTMyMGI0ODIxNTY1NjY5YmVlYyBsZWdhY3ktdHJ1bmsKKzMyODc0IDg1NjBiMTQ2ZjQxZjFkMDdjMjY3MjQyMzQ5OTFiNjU1MjBmMTg3OWEgcmVsZWFzZTIyLW1haW50CiszMjg3NSBmMTU2MjZjNzY0MTg2NzM5ZTcxNGRiOWQxMWFmNjJlZDMxZDk2ODk5IGxlZ2FjeS10cnVuaworMzI4NzYgMjdlYzE0NzFkY2I2YTkyZjJhMTE5MTE1YTU4NjA2NWZhYzYzNmYyYyByZWxlYXNlMjItbWFpbnQKKzMyODc3IGVhMjk1OGJkNDI3MWZmMTY2MzYyZmVhOWQ1ZjhkNjBjNzM1YWE4MDEgbGVnYWN5LXRydW5rCiszMjg3OCA4NThkNTY4ZWJmNzYzMTEwN2ExZWQxOGI0MGIzYjEwYmZhNWJlMWRhIGxlZ2FjeS10cnVuaworMzI4NzkgZjNmMzA2NDU3YjQzMGVhMTlkN2RlNzk0NmI3YjdiYjg1MTQ1MGYwOSBsZWdhY3ktdHJ1bmsKKzMyODgwIDNhYWYyNGI5NDlkZmI2MjA5MTVjNjkwNTNjOGQ2N2NjN2RjNTEzNTggcmVsZWFzZTIyLW1haW50CiszMjg4MSAwNTJjNjI2M2RmMjY5YTI2NGMyMTg0ZmQ4MzhjYjZkYTQzZTI2MzkxIGxlZ2FjeS10cnVuaworMzI4ODIgMTA4YTEwMDZhOTA1M2E0ZmMzNmMxMTIwNWJlNjgxNTM2MTcwNWRhYyByZWxlYXNlMjItbWFpbnQKKzMyODgzIGY3ZGZhZWFhNGFiOTg4YTU0NmFlZTJhOGRiMWFmZWViMzdmOTY3ZDAgcmVsZWFzZTIyLW1haW50CiszMjg4NCBiZDgyMTYxYjYxZTU1Njk0NmIyNDhhMjA5MzZjYTc1OWM2Y2U2ZTcxIGxlZ2FjeS10cnVuaworMzI4ODUgNjdkNTYwZDYwOGNlZDc2YWZlMWUxYjQ1NzJkYmUyMzZkOTZhNmEyZCByZWxlYXNlMjItbWFpbnQKKzMyODg2IDg1NmM4MWY3MTIxM2RhMjNlOTYwNGZiYzhlZjlmYWU5MWQ5YjcwMjAgcmVsZWFzZTIyLW1haW50CiszMjg4NyBlYWY5MGU4NTBkMTJlOWZmMTA3YjVmYjJkNDU0MzRmNzlmN2ZiZTIwIHJlbGVhc2UyMi1tYWludAorMzI4ODggMzc3YTI5ZjZkNjg3OTNkNjg3YjE5N2VmN2UzMmJkMTgzNjQ3MDIzZiByZWxlYXNlMjItbWFpbnQKKzMyODg5IGYzZDFlZDE0MTE4ODJkNThlMWM5OTI5MTU3MjAwOTU4NzY4MTZhZDEgcmVsZWFzZTIyLW1haW50CiszMjg4OSBhYzc3YjkxMzQyNTM0ZDA5YjFlNDMyZTFkYzNiNzBkYmJlYzNhOTE5IHJlbGVhc2UyMi1tYWludAorMzI4OTEgMDY4NTI5YTkwOTkyNmQ0ZjYwM2NmMGI2ZDZhMGQ0YTMzNDRhZGRmZiBsZWdhY3ktdHJ1bmsKKzMyODkyIDc1MmZjNWVhMTZiOWJkMTNmYjE2NDAxZDI2MjBhZjU1OTkwOTM1YmMgbGVnYWN5LXRydW5rCiszMjg5MyAzNWQ3MDBkOTAxNWUwNTg4OGNiMGNkOWI2NzZiODRhYmI2ZTVmNmY5IGxlZ2FjeS10cnVuaworMzI4OTQgZTcyMTAyNWNjYTA5MzlmYTY1ZTJjMzZkYzI2NDA0ZmY0MGRmZTY5ZiBsZWdhY3ktdHJ1bmsKKzMyODk1IDM4N2Q3YzIyMTZhMTY5YjZjNjZkODRmOGU0MWIyMzQ4Y2ZhNjMwY2EgcmVsZWFzZTIyLW1haW50CiszMjg5NiBkNzJhZDA3YzczOWVhMmM4ZTM1NjAxZjk3NjJmOTMyYzVlOTc2NTJiIGxlZ2FjeS10cnVuaworMzI4OTcgNjQyMjdmOGRlN2RhYzEwNTg0MDQ0NTZjZGZlNGNlMTEzZjQ1MTZmMiBsZWdhY3ktdHJ1bmsKKzMyODk4IDIzYWQ4YjVkN2I0YTBlZjM2ODk3NGQzMDZlMTZlOWU0ZjA1YjQ4ZDYgbGVnYWN5LXRydW5rCiszMjg5OSBjYTBjODEzN2RlODQ0NTVlYWZlMTkyNDg1MzIxNjY3ZDcxYjBjZGRhIGxlZ2FjeS10cnVuaworMzI5MDAgMzliODcxNjc4NDY3NTNkMjI1NTAzMTBlOGU1Yjk4N2RkZTI2YzAwNiBsZWdhY3ktdHJ1bmsKKzMyOTAxIDFjMzJkNDIwNzQwNGE4NjQ0NWYxOTBlMDQ0ZjE3MWI3NTlmNTZiODUgcmVsZWFzZTIyLW1haW50CiszMjkwMiAyZjQyODc1ZDkzN2YyNGQ1NGQ3OTlhZjc3MzI5ZDMxN2UxYWNkY2NkIGxlZ2FjeS10cnVuaworMzI5MDMgODkzYWU1MjY2Nzc2NTNmMzBhMzVlZGFlYjU3MzQ0NThiZTAxNTM4YyBsZWdhY3ktdHJ1bmsKKzMyOTA0IDM0NjA5ZmEzNWIxMWMxN2ZiNTNhNTM0OWYyMjBlMDQwOWZiZjc4OTggbGVnYWN5LXRydW5rCiszMjkwNSAzYThiMWQxNmI3YzZjZGNkYjU1MmFkMTRkY2ZlYWM3MDg2NWViM2YxIGxlZ2FjeS10cnVuaworMzI5MDYgMGI3NjY3OWJmM2Y5OGI3NzQxY2ZhOGU4NjUyZDY5NTc1NjYzNDJmOCBsZWdhY3ktdHJ1bmsKKzMyOTA3IGI0YzkyZTk4MDNhNjIxMjM0ZGI2ZWI0OWM2ZjI0ZGM3M2Y2YjIwNmEgbGVnYWN5LXRydW5rCiszMjkwOCBiZTcwYjg0NzdmNDNkMDhhNjgyNzk4MThhZjhhMGI2OGY0ZmU2ZWU2IGxlZ2FjeS10cnVuaworMzI5MDkgMzY4OWIwMDU1YzJkYjIyOTZhOWU5YTk5N2FjMmE1MDUxOTJkY2ZmMyBsZWdhY3ktdHJ1bmsKKzMyOTEwIGI5MDlmZGYwZWRmOGRkZTBjNjc4Mjg1NzcwOWEyYzAzMjdmMWQ1ZWEgbGVnYWN5LXRydW5rCiszMjkxMSBkZWEzODExNmMzNzM1MjZkYzQ2NmUxYzcyOTg2MTUwNzFkYjdjYTY2IGxlZ2FjeS10cnVuaworMzI5MTIgMThjMDIwNDYzOTY1ZDAyOWRmN2MxMDNmZTMwZDRjOGRmNDlkNjk3NiBsZWdhY3ktdHJ1bmsKKzMyOTEzIGYxZTU2NzQ4NTE5NDQ4YmM5YzA0YzIwMmE0ZjNiY2Y2NjI5Y2ZhY2YgbGVnYWN5LXRydW5rCiszMjkxNCAxNjFmMDVmNDY4MGQ5ZDNkODI3NzVmYzljOTFhMTJmMDQ2N2U4ZjY3IGxlZ2FjeS10cnVuaworMzI5MTUgMzRmNDJlMzQ1MGI0ZDYyYzM5NTJlOTY4ZWVmYjg4ZmFlOTJiMmI2YiBsZWdhY3ktdHJ1bmsKKzMyOTE2IDdlYTU1MGVjZjQzZDc0ZWQ0MzNiNTI5OGRhZDUyYmNjMDJmZDViNWIgbGVnYWN5LXRydW5rCiszMjkxNyA0NWM2YmUzNTczM2ZkZDZhZjhiY2FkNWM3Njk5ZTcwYTEzOGFhN2JjIGxlZ2FjeS10cnVuaworMzI5MTggYTlkNzc4YmQ5NjUzNjg4MzNmMjk3Y2RjZmQ4YWFjNjlmMTA3YzY0OSBsZWdhY3ktdHJ1bmsKKzMyOTE5IDc0ZGE0ZDJlYWFkMzY3OWJlZTc1YTQ3NjViMTQwMDBiMTEyOWRlZmQgbGVnYWN5LXRydW5rCiszMjkyMCBkMjNlOTMyMGQzNTAwMmQ2OGE5ODVhZjExMzIxODAwZTQ1MTViNDg2IGxlZ2FjeS10cnVuaworMzI5MjEgM2M0ZDk1YTRjZTE3N2U3YmJkOWQ4MDA2ZDg1NzU3YTYzZDdlZTA0ZiBsZWdhY3ktdHJ1bmsKKzMyOTIyIDc4ODdmZTNhOWE4ZmY2YTlhN2FkODIxOTQwZjU2ZjU2NWUzYmQ2NDggbGVnYWN5LXRydW5rCiszMjkyMyBjNTYzMzhlMDg3Y2FjYWY4YzA0MWY2YmQwYjAxZTJhMjBlMzU0NDExIGxlZ2FjeS10cnVuaworMzI5MjQgMDg2MzA5MTliZjUyYjJlYzkzNGMxMDk2ZWUxMTg0YjZiMWI0MDk3YiBsZWdhY3ktdHJ1bmsKKzMyOTI1IDhmNzNkZjA5OTk2NzM0MDJhM2JjMDBjMWU4ZWI4NjM3ZDZjMGZkNWQgbGVnYWN5LXRydW5rCiszMjkyNiBiN2NkMWZmMDAxOWI5YWRlZGMzMjk2YTI2NTg4ZjNlNjMyZTlmNDY2IGxlZ2FjeS10cnVuaworMzI5MjcgODk3ODEyMzE4ZmY0MWQ0OTcwMmQ4NTc4YzAwODg3ZDJkNzM3ZDMwMyBsZWdhY3ktdHJ1bmsKKzMyOTI4IGRmODBhNWI2OTU3YjVlZTVhNzI2M2NiY2Y2OGIzNDEyMjcyMmExMjMgbGVnYWN5LXRydW5rCiszMjkyOSBhMDQzYWY2MDhlOTRjYzczMTEyNzk4NTk1YTNhMzljZmNmODAxOTJkIGxlZ2FjeS10cnVuaworMzI5MzAgZmVjN2YzM2I2OTdjMTg1YTY4ZTg0MjFjZmIyZjdiNWI1ZWE4MzFmZiBsZWdhY3ktdHJ1bmsKKzMyOTMxIDY2NzMwNTNlZGFkM2YzZDk4ZWIzMTI5MGEwODQzYmE0MGNmNjk4MGEgcmVsZWFzZTIyLW1haW50CiszMjkzMiBjZmJhNzZmNzc2NDM1OGZmMjQ5MWQ1MTM1NTcyYmQ1MGQzYjRiMzVjIGxlZ2FjeS10cnVuaworMzI5MzMgYjM3MmI5MDNkMTBlN2FkZDMyOTNhOTc3YzBlOTE4NzM1NDg0ZGYzYSBsZWdhY3ktdHJ1bmsKKzMyOTM0IDhmMmM1Y2Y2MTc2MzkwNmMzMmZjOGQ2OGRlZWE2YmQ3MGQ1MTliZGEgbGVnYWN5LXRydW5rCiszMjkzNSA0OTkyYzYwZDQyMmIyOGQxZmViNmIzM2FiYjhmNWFjZDE2NjU1NGE1IGxlZ2FjeS10cnVuaworMzI5MzYgYzMyNWU4ZjIwZDZlOTQwOTVmMzBlMDdhNTA4MGVhNTIzMTRiYzdjOSBsZWdhY3ktdHJ1bmsKKzMyOTM3IDdmMTMwYTQzNzBjOWUzNGM2NWZlOWUxNmFlZDNlZmZkMWE4YzlkMWEgbGVnYWN5LXRydW5rCiszMjkzOCA4ZWViMWRmNjlmMzU3NTE3NDNhZTA3YTE0ZTg3MDY4Mjk2NDgwZDY3IGxlZ2FjeS10cnVuaworMzI5MzkgOTQ5ZjQxODI5ZjM2ZjRmN2QzZmFmN2Q5NGM1MzI2ZmE0ODg4MjQyMiBsZWdhY3ktdHJ1bmsKKzMyOTQwIGE1YzhlY2E1NGFlYjAxZjMzMDZlOWJkZWQ4MjE3NWZhNTgyN2Q4YmQgbGVnYWN5LXRydW5rCiszMjk0MSBkZTQxZjNjZDY0NzQ0NTIxNGZjZjNmYmI3OTkyYzMxYjk2ZmEzOGQzIGxlZ2FjeS10cnVuaworMzI5NDIgMDQzN2NmNGI5ZWVjMWUyZjAyMzM0MmM5YWU2ZTdiM2NiNGVkMWE3ZSBsZWdhY3ktdHJ1bmsKKzMyOTQzIDgxMWFkNWYyZjcwMTRjMTFmZWNhNTdiMmM5NzM5MDVjMjdkYmM3NDAgbGVnYWN5LXRydW5rCiszMjk0NCBiNWJhZGQzYThkNGYzOTE4ZmM4YWM1ZTAzMDY4OTUyZjhiYTc5ODdiIGxlZ2FjeS10cnVuaworMzI5NDUgNzA2MjZjNTczZWQ3MWRkOWI2YzFjZTI1ZGY3ZjQ0NWZlMzBkMTUxOCBsZWdhY3ktdHJ1bmsKKzMyOTQ2IDIxNDUxZjc2MDU5NjMxY2NhOTVmMmU1ZjdhZDlkOWE3Yjg1ODcyM2QgbGVnYWN5LXRydW5rCiszMjk0NyBlOGM0YzE1ZjQ1OWUzNWVjMGM4OGM1NWI2NTJmNGNlNzE0MzJkYTI5IGxlZ2FjeS10cnVuaworMzI5NDggYmQzNDk5OTljYjA4Mjg4OThkODBlYjFkY2I1ZGRlZWI4YTBkNjI1ZCByZWxlYXNlMjItbWFpbnQKKzMyOTQ5IGQ0NjQ1OWQ4MmE3OTI3OGU1OTM4NDZhZjkyMjA2N2QyY2YxZTcyNjYgbGVnYWN5LXRydW5rCiszMjk1MCA3ZjdhMDc4MDQ2ZmI1YzEwYmYzMTc3Mjc1MzQ3NDkwNDcyZDE2M2I1IGxlZ2FjeS10cnVuaworMzI5NTEgYzFlODBmMmYxYzQ3MWEyM2NkNzY2YjYxNjNlNzc5M2ZjNTg2MmUzYyBsZWdhY3ktdHJ1bmsKKzMyOTUyIGI1NDc4ZDFkZDY3ZWRkOWQ2NmU4YWQwZTlkOWY2NGNiZGMyYjcwMmUgbGVnYWN5LXRydW5rCiszMjk1MyAwYmViMWE2NTE0NDM1ODAyZDAzMTM0Y2EwN2I1MGFiMDkzMjcwNTdlIGxlZ2FjeS10cnVuaworMzI5NTQgNzMyODM2NjY2MDAwMzIzZmVmNTIzNzc1MjFhNjZkZTE2OTI1YmIxNCBsZWdhY3ktdHJ1bmsKKzMyOTU1IDk4YWZmZGJjNDE2YzQxMDk5NGQ1NThkNTA2Njc3MWI3ZTVjMGQ1YzMgbGVnYWN5LXRydW5rCiszMjk1NiAwOGExY2JkZDAzNjdmZDAxYjI3MzhjZTNlYzViZTVhMDc2ODg3MmYxIGxlZ2FjeS10cnVuaworMzI5NTcgZTNhZWZlYmE0MTE2MDlhMjJjNzVmOTM3MDE1YTRiMWVhY2M4ZWVjYyBsZWdhY3ktdHJ1bmsKKzMyOTU4IDk4ZDgxNTk5ZWNhNzRlYzMzZWJmZGFiZmVkOTdlMzBlZmIyODc0MTUgbGVnYWN5LXRydW5rCiszMjk1OSBjM2EwMjA3NGNiZWU5YjZhZTgzODc5ODA2Mjk1YjA4NjA3N2Y3YmNhIHJlbGVhc2UyMi1tYWludAorMzI5NjAgZTZmOGUyNjg3YzZmZDU3NTI0ZWE2ZDVkOGJhNjljMTE1MzI5M2EyMCBsZWdhY3ktdHJ1bmsKKzMyOTYxIDY0NjhmMGUxZjRhODViYmVkYmY0YzUzOTUyY2JmZTdiMmFlYjFmZmIgcmVsZWFzZTIyLW1haW50CiszMjk2MiBhZDFlNjdhYzU2N2I4NzI5OTRjYmE5ZTZjOGM0YTBkYTkzNTEyYzM2IGxlZ2FjeS10cnVuaworMzI5NjMgNDYyOTRlZGRiYTU1MTNiYmI1NDE1YjMyYWU4NzgxNTUzYjhiNDE0MCBsZWdhY3ktdHJ1bmsKKzMyOTY0IDY3MWU5YzNhZjRmMzg1ZmI4OGVkZTdlNjY3Y2UxYmQ2NGU3NTVlNzIgcmVsZWFzZTIyLW1haW50CiszMjk2NSBlZDcwNzc5ZjY0MDIxYzkwZWZiZmMwMzg3NTIyYTVjZTIyMjUxY2RiIGxlZ2FjeS10cnVuaworMzI5NjYgYjE3OTJhNjE4ZTZkYmNiZTExZTQwNzYzZGFlZDJlYmQ4ZWYwMTEzOSByZWxlYXNlMjItbWFpbnQKKzMyOTY3IGRiY2U1NTZjZmM5NmU5MDcwOWY0NDYzNDA3NDQ2MjgwMTM4ZGIyZTUgcmVsZWFzZTIyLW1haW50CiszMjk2OCA1MWNlNjliZGY0MTg2ZTgyMDE0Nzk0MWRlNDcxMjkyNWE1MDRjYzQzIHJlbGVhc2UyMi1tYWludAorMzI5NjkgYzI5MWNhMjk0OWU5MjY0MWU2Y2ZhZTJjNWQ2OGYwN2NmY2JlODBmZCByZWxlYXNlMjItbWFpbnQKKzMyOTcwIDI3MmM3NWIxZDIyZWJiMDVmYzdiZTJiMDU3N2VhMDg5NDZlZGJkNzAgcmVsZWFzZTIyLW1haW50CiszMjk3MSBmNDRmYmY3NGViNjFkYzI4YzE3ZmY4NDUwMzM1MjY5YWZiODg2ZDA3IHJlbGVhc2UyMi1tYWludAorMzI5NzIgZjdmNDZkNjczYzYxYzcyY2M4Y2QwOTNjMDE3ZmUwZmZkNzRmMmUyMCByZWxlYXNlMjItbWFpbnQKKzMyOTczIDY1ZjdlZmQzNWYxMTkwMWM3MGY1Yzk3YjJhOWZkZDczZjNhMDAzYTUgcmVsZWFzZTIyLW1haW50CiszMjk3NCBiMzFjODRiYTFmMzE0NGY1MDQ3NTY1YWY0MzcxMWJkM2EwYTZjNDJjIHJlbGVhc2UyMi1tYWludAorMzI5NzUgNzc0NjI2OWI5NTFjZGQ2MmNmNjkwOGJjYTRiMTI3NTgwNWY3ZTEwMyBsZWdhY3ktdHJ1bmsKKzMyOTc3IGJmMmRjMGQxNzE0ODgyN2Q2MGE2ZmQyYzY5ZmY1YmJkZjQ4MzZiY2YgbGVnYWN5LXRydW5rCiszMjk3OCAxMmY5ZWEzMmYyM2E1Mjk3MGJiNDU5ZWYyNjY5OWE3M2JkZTMwZmU4IHJlbGVhc2UyMi1tYWludAorMzI5NzkgMDA4Y2QxMDEyNjlkZjY4Mjk2ODA0ZjMxNzRiYzk1MmM3MGI0YzAyMCBsZWdhY3ktdHJ1bmsKKzMyOTgwIDdiZWM2Mjg5OThmZTllNzU3MjY3ZTU2YWJkZTNkYmE2ODA2NWZlOGMgbGVnYWN5LXRydW5rCiszMjk4MSBlOTUwYWJjMzI5MjI3YWI2ODAwNTc0NzEwMGRjZWE2NzUwOTA0MjY0IGxlZ2FjeS10cnVuaworMzI5ODIgMzY4MmFhMjcxNDFiNDQyMmNlNmFlZjllZmU5YzliZjc0NjllNDRjNSBsZWdhY3ktdHJ1bmsKKzMyOTgzIDg3MDBhMWM3MDE2YjEwZjA5ODhkOWJhZjM2NDFhZmJkZGNkODc1MmUgbGVnYWN5LXRydW5rCiszMjk4NCA2M2FiNTBlYzRhNDY2MTVhZjBkNDY5NTcxNmZjODhhMmFjNDY1M2RhIHJlbGVhc2UyMi1tYWludAorMzI5ODUgZTQ1ODNkMTY2Y2JjZDc5ODZiYTFiNGUyYTIxMDgxMjhlMTllYzA4MiByZWxlYXNlMjItbWFpbnQKKzMyOTg2IDI5YWIxYzkyM2Y3NTcxMGEyYjk0ZGYzODFhN2EyMzA3NGUwZmMyYTcgbGVnYWN5LXRydW5rCiszMjk4NyA0N2M3MjVhMzJiMGVjMTBmOGFhZTdlNzA3YzFhNjdmOWE0M2JkNWJhIHJlbGVhc2UyMi1tYWludAorMzI5ODggYzAwMWJiMDAwNTU4MGQyYTU2OWFiMmU3MmVkYTIyN2E2ZDVmYzA3ZCByZWxlYXNlMjItbWFpbnQKKzMyOTg5IDgzYTJlNzEzM2IwMTA1NTNiNTQ3NTYwNTdjYzc4MzExODNkY2E1YTIgcmVsZWFzZTIyLW1haW50CiszMjk5MCA4OTBjZDdhMjIyM2VmYjk2ODg0NjJiZWU0YjRjZDY4YmZiZjU5Zjc1IHJlbGVhc2UyMi1tYWludAorMzI5OTAgZjRmMTM0YWQ0NmFiZDBiYzk3M2QzZjYwOTRlYTU2ZTYyYWM1YzQ5MiByZWxlYXNlMjItbWFpbnQKKzMyOTkyIGY5NDk1ODE1YzE4ZjMxOWQ5NjI5ZGY0Yjc0NTYyNTlkNjQ2YjdlMDMgbGVnYWN5LXRydW5rCiszMjk5MyBmNDA5YjMzYzI5Y2U0OTIwMGUzMTk4MTczYzM3NTI1MDM1MzQxNzA0IHJlbGVhc2UyMi1tYWludAorMzI5OTQgZmMyODZlMjg1NTZmN2Q4NmRmZjhmZmJjMjA1ZmIzN2VlODVlMzcyMSBsZWdhY3ktdHJ1bmsKKzMyOTk1IGM2OWFkOTIyN2FmZDRmOTMxYjc0Y2E1NjYwMmZlZWVkMjE3ZGZjOWEgbGVnYWN5LXRydW5rCiszMjk5NiA2YWJjYjY5MGI0N2I1NGE3YThiNTg1YmIyMTRjOTRhMDdjODM1NWYxIGxlZ2FjeS10cnVuaworMzI5OTcgZDg5YzA4MzdmOGY0MTgzMTU1ZDI1NDVmZDU1ZDgwMjY0ZWU4YjRjMSBsZWdhY3ktdHJ1bmsKKzMyOTk4IGU0ZjcwZTYwMjU5OGQ0OGJhMmI0MjlkNTc1YmVkZjIzMDJiN2I3YmIgbGVnYWN5LXRydW5rCiszMjk5OSA5N2ZkMWY0OWYwMjZhYTUwNGM1Y2FmN2EwODY3OWNlNjY5ZTMxMDhmIGxlZ2FjeS10cnVuaworMzMwMDAgYjM0NTVjNGMxNzk4ODc3OGQ3OGNhNWI5OGNiOGQ2Yzk1OTQ4ZWExMyBsZWdhY3ktdHJ1bmsKKzMzMDAxIDc1NDk0YWVhNDdjYTcyNjU0OTFlYTI0MTdhM2MwODI5ZGFlYjU0ODMgbGVnYWN5LXRydW5rCiszMzAwMiA0NTg1YWIwZGEwMDM3N2JhZjBlOWNhMGZlY2ViMGZlMzZkNTUwM2FlIGxlZ2FjeS10cnVuaworMzMwMDMgZjU4OTE0NTliODEzZWUyNDRlNWQ1M2ZhNmIwODkzZGE0OWEwNGQ4YiBsZWdhY3ktdHJ1bmsKKzMzMDA0IDJmNzMxYzU3Y2RjNjhmNTk0MGQwM2Y5OTA4YzhiYzk0ODZjZTRhN2EgbGVnYWN5LXRydW5rCiszMzAwNSAyN2JkNGNkMDJiYjg3ZTM3NzE1M2IzZWUyNDcwY2YwMzIwMTkwNGM4IGxlZ2FjeS10cnVuaworMzMwMDYgZmI4NGUwZWFiYWQ0ZTRiM2QxNjgwMzQzYjVjNmRhMjk4MDE3ZWM3MCBsZWdhY3ktdHJ1bmsKKzMzMDA3IDFhZThiNjc0MDkwNjUyMDY1Y2RkOGFlZTkxNDBiY2NhNDA1M2M5NjQgbGVnYWN5LXRydW5rCiszMzAwOCBiMTM5NTAxNDcxNGFkN2YwNmNlMmZhZGU2MWQ4ZWY0YTE1OWZlYmE3IGxlZ2FjeS10cnVuaworMzMwMDkgYjUyZTBhZDMwNTg1ODgwZTkyNjY2YTI0NzcwZjM3ZGFkNDZhYmJiOSBsZWdhY3ktdHJ1bmsKKzMzMDExIDUzZDliNGVlYzRjZTBhMjg0ZmJjNTBmZDI1MmUzYWI1NTYyZWM3YTAgbGVnYWN5LXRydW5rCiszMzAxMiBhMzY5MzM2MjI0ZGRhNDk1MzlhMWRjZDY0NTk3ZDgxMjRjNWQ1NmE3IGxlZ2FjeS10cnVuaworMzMwMTMgMjA4OTRkYmM3ZjZhOGE1NzEyNDQyNTNhZWExNzE1ODE4M2Y0NmYyNyBsZWdhY3ktdHJ1bmsKKzMzMDE0IGIxZWIyYTQ3NTZiY2MzMjkzZTkxYmYyNzFjYTk1OTc1MGZhYmI0NGQgbGVnYWN5LXRydW5rCiszMzAxNSBlZDk0OWI4MmY5NWQ5YzhhNGIxOTc0YTQ0MDBjYzE4MWUxMDM2NjY2IGxlZ2FjeS10cnVuaworMzMwMTYgM2YxMGEyOWUwZTZhMWFlMDA1YzVmMjA1ZjA5NWMzODM5MmU1NjlkNyBsZWdhY3ktdHJ1bmsKKzMzMDE3IGZkYWM5YjRkMzcxNzI1MTMyOTk3NDhhZmEzYjc5NDMyZjdlNDNmM2MgbGVnYWN5LXRydW5rCiszMzAxOCBmODJiNmQyYjczZjExMTM3MGE4Yzg0ZDI5M2E4ODNkOTkyYzM2MGZjIGxlZ2FjeS10cnVuaworMzMwMTkgYzY2MTAwYzA5ZWExMTYyN2Q0OTAwOWYyNTIxMDI5NTc2NTFhNGRhNiBsZWdhY3ktdHJ1bmsKKzMzMDIwIGUwZjA3MWI0NzZmZDE2ZmRkZDdhYjg1YWI5M2RhNjM4NmZkN2ExYTYgbGVnYWN5LXRydW5rCiszMzAyMSA3MmNlN2NjMDNmMjdmZDI2MjJlZTcyNGZmMTcwYWMyMTU1ZmYyMTY1IGxlZ2FjeS10cnVuaworMzMwMjIgMjYxNmZlNWVlZWUxNzhkMzYzYzQyNTAyM2VkY2Q2MWQxZjgyYWQzNiBsZWdhY3ktdHJ1bmsKKzMzMDIzIGNhMjBjM2NiYzk1NmVhMzIzYmI5OGRjOTA3OTljY2U5MjU2ODNmY2EgbGVnYWN5LXRydW5rCiszMzAyNCAxMjE5MDIxYzQ4NjVhZTgwN2YzMzE0MGEwNWI1NGEyNjhmMzVmZjg0IGxlZ2FjeS10cnVuaworMzMwMjUgNThjMWFkNDE3ZWU3Y2FlZDQyOGFhMjIyNjg2NTQ5OGYwOGI4MTViNSBsZWdhY3ktdHJ1bmsKKzMzMDI2IGMwMWVkYzM1ZmZkNjc2YmE0YTY2YjBkMWRjMGI1ZDk1MmU4MWQwNGEgbGVnYWN5LXRydW5rCiszMzAyNyA4YzZkNGRhNWNjZDNmODlkNWU1N2ViMTkyNjkwYmQ4ZmFmZmI5OWYwIGxlZ2FjeS10cnVuaworMzMwMjggMjBlMWFkM2FlOGJiMGNhMWEyM2ZmMDY1MzhlZmNhNDYxOTMzZTFiMyBsZWdhY3ktdHJ1bmsKKzMzMDI5IDllN2QyMjkzMGRhYTEyZjI3YTU3YzJjMGIwNjRkMmY1OTUyNTI2NzggcmVsZWFzZTIyLW1haW50CiszMzAzMCAyM2Y2MTAxY2M4N2VmMTUxM2E5NDI5NzVjZGJhMWUzNGZiNzhlYTRmIGxlZ2FjeS10cnVuaworMzMwMzEgMmUyZGQ2MTQzOTQzOTc3ZWQ3ZTczNDA1MDYwOWY5MzhmYTJlY2FlNCByZWxlYXNlMjItbWFpbnQKKzMzMDMyIDQwODFiNDkwZDU0Y2FjZjIxMDFmMjcxZWE3NjJlNzk2MTU4OGViMmMgcmVsZWFzZTIyLW1haW50CiszMzAzMyBjMDU1OTc5MzAwZjE3ODA1MjI3MTA2NmFjNGJmZmUyM2NjYjhiMGQ0IGxlZ2FjeS10cnVuaworMzMwMzQgMjRlNzRkNjg3OTgwMGJiYmIzMzNlMDc5YWY0NzVhNzgzYWRjMDY2MCBsZWdhY3ktdHJ1bmsKKzMzMDM1IDM0N2U3YjZkZmQ1M2FkOWQ3MTc3OGZmMTRmMjk5Y2RhMjhjMDExNjUgbGVnYWN5LXRydW5rCiszMzAzNiAyNGZmZjMyZWQwNjVjMzNkYWUwMzljNTlmNzk4MTRiY2IwZTY2YzgyIGxlZ2FjeS10cnVuaworMzMwMzcgMTVmMWRjNWI3ZGRjMWNmNjE0YjZiMmQ1YjAwNGRiMjdjZjFiYTJjZCBsZWdhY3ktdHJ1bmsKKzMzMDM4IDU4NWUzMDNhOTQ5MTM1MGM4MDY5MDhjYTQyZTc2N2VjMjZhNDBiYTIgbGVnYWN5LXRydW5rCiszMzAzOSAwZDU4OGZhZGMxZjgyZmZhZjU1ZTU1NTI1MTUyMzc0M2E1NWIyYTcwIGxlZ2FjeS10cnVuaworMzMwNDAgMmQzOWVjMGU1NWFhNWZhNGRiYzNjMjM4NzZhODk3YzllNjA4MTNhYiBsZWdhY3ktdHJ1bmsKKzMzMDQxIGJhZTZjZTZkMWU1YTM3ZDI2ZGMxMGE2NzNlY2E1ODk2MDFmZGZkMTYgbGVnYWN5LXRydW5rCiszMzA0MiBjZDVlY2M1YjM4ZWI4NTk3ZjY2MzYxNTQwNjc3NzNiNmZhOTVkMDEzIGxlZ2FjeS10cnVuaworMzMwNDMgZWZmMzMzMzRjYTY3MzdkMjA2MTc0MTlmYTUwMDFkMTRlZjBkNDhiMCBsZWdhY3ktdHJ1bmsKKzMzMDQ0IGRiNDZjZWRhZjdjZTIwYjIxNDQwOTEzYTQ3NTZjNzhhYzE0NmM1NWYgbGVnYWN5LXRydW5rCiszMzA0NiA4NTc0MjhjYjQxOGM3YzhlM2ZhNjkxOTRhMzZjNzdmMDJlMTU4NTZkIGxlZ2FjeS10cnVuaworMzMwNDcgNjU0OTA4ODQ3ZWVmOGJmNjBkYTY1NmZkYzBmMDQzZGM3MmU3YjA5MCBsZWdhY3ktdHJ1bmsKKzMzMDQ4IDNiMmUyYjE0NjgxYzAyZTBiYjIzMzljMTM3YjNjNjBhN2QyMGJiOWIgbGVnYWN5LXRydW5rCiszMzA0OSA5ZTFmOGZjNWU3MWQzMzQ3MjJiNjEzNzdmNzMwMGRlYjU0NTZiNzdmIGxlZ2FjeS10cnVuaworMzMwNTAgMjZlMDdhNjg0ODkwY2JjYzk3NGJmNjY4YTJkODFhMjliZWZkZDFkOCBsZWdhY3ktdHJ1bmsKKzMzMDUxIGNlMjViNGQ3NDZlYTEwMDY3ZTBjYTM1ZmM1YzFhN2VhMzQ2YjdiYzMgbGVnYWN5LXRydW5rCiszMzA1MiA5MmZmZTUwMjExMjgxOWYzM2M2NzExYjFjZTM5MWZiYzdlMzI2NjhlIGxlZ2FjeS10cnVuaworMzMwNTMgZmE2MDRhZjBjZGJmYjYzMWJmNGIxNGZmZjg1ZTZlMzcyNWMyNWY1ZCBsZWdhY3ktdHJ1bmsKKzMzMDU0IDYxZTk2NmM5ZWNlOGQ5MDhkYWZjNWMwMzI0ZWE1MWQwNTYxZGRlOGQgbGVnYWN5LXRydW5rCiszMzA1NSBlNmIwYTQwNmRjMzFlZjQyZWZmZDg2MWU3NWNiZjhkZmU1Zjc2Nzg4IGxlZ2FjeS10cnVuaworMzMwNTYgNTI1NzY2ODE3ZWI2OGI2MmRhZTEwMGM0YWY3NmJjNTFjMDhjNjVmZiBsZWdhY3ktdHJ1bmsKKzMzMDU3IGIwYTdlYWM2YzY1MTEwMWI3ZmI3MDM1OTdkOTdkYWFlMWE1NTc2NzIgbGVnYWN5LXRydW5rCiszMzA1OCA4MzIzNmY1OGU2ODEyMWUzNjUyZWU5YjFmNWEyZDgyNTI0ZGZhMWVjIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwNjAgY2YwYmFhZjE2ZTBkN2Y1MjFkZWIwMGUxZjk1Y2RkZGZiNDQwNDIwNSBsZWdhY3ktdHJ1bmsKKzMzMDYxIGEyZDRjNjRmNWI4YjMxNGI1M2U0YWRhMDY3Yjk2YTc1ZGVmYjdjNmQgbGVnYWN5LXRydW5rCiszMzA2MiBkMWE4YzczMjM1OWU3ZDk0MTJiMjBhZGNjOTRmNzIzMTQ5ZmU3MjgzIHJlbGVhc2UyMi1tYWludAorMzMwNjMgOGM1YTY4NTNhMDJhZGI4MWJkNjdlYThhMDhmNGMyNmY1MTcyYjhkNyBsZWdhY3ktdHJ1bmsKKzMzMDY0IGJlZmZjNzM2NjZmZDIwY2EzOGI2M2Q0YTNiNDYxMjRjZjNlY2NiNjEgbGVnYWN5LXRydW5rCiszMzA2NSAzYjU0ZGZmMTMzMTAxZWUyOWI5NDhiYTA4MTdjOTQ2ZWRkNGVlYjQwIGxlZ2FjeS10cnVuaworMzMwNjYgOWJiNmYzYzViMDRhM2VmOGNlYzE0ZjBlMzBmNzc0YWEyYWVmOGE4YiBsZWdhY3ktdHJ1bmsKKzMzMDY3IDMxYjJjYmE2NGIzOTliZjU5MzE3MjNlMTY2MzkxYmNjMjc4MzE1NWMgbGVnYWN5LXRydW5rCiszMzA2OCAyOTc2MDA1Njg4NGE5ZTcxNTIxZWFlNTBmZGM2YTM2YjFiMzI5ZTM1IGxlZ2FjeS10cnVuaworMzMwNjkgZjJkZjljOWYwZmNiNjA5YjZlOTY4NDY5OTgyMDI2MGMwYWI2YzNhYiBsZWdhY3ktdHJ1bmsKKzMzMDcwIGJhYzJjMGU3YzIwYTEyMjI1MDAwYWU2OTlkZDdmYThjMmY3YTFjYTcgbGVnYWN5LXRydW5rCiszMzA3MSAzNTZiYjU5YzU0ODZiMmU1ZWIyYjFmNWEyYTI5ZWRlYjY2Yjk1ODBjIGxlZ2FjeS10cnVuaworMzMwNzIgNjQzODY0NjRmNzE2OTExNzdlOWE0MmQ3MWJhNDQ4OWExZWFjZTFhYSBsZWdhY3ktdHJ1bmsKKzMzMDczIDBhNDBjNjg3YWY1ZWM5NjgwMDgwMzJlNzRkZTJiMTU0MDMyNmE4MDMgbGVnYWN5LXRydW5rCiszMzA3NCA4ODk1MWE1ZmQyYTllZWMwM2Y0NzE1OWFjMTc4YjUwYjQ0ZjYwODRmIGxlZ2FjeS10cnVuaworMzMwNzUgYWIxZDg1Zjk4NDg1Njg3NTUwYjEyNmM0M2YyNWIxOGI3NzAxN2MyOCBsZWdhY3ktdHJ1bmsKKzMzMDc2IDllMWQ3ODA5YTk5ODE2YWQ5YTA3OTUyODY2MDA5YTZiZDIyYjhlMTcgbGVnYWN5LXRydW5rCiszMzA3NyAxOWY0ZjQ4YmIwMmE3ZTZlMDE0YzNkM2YyOWZhZDUxNGIyMzYyZjM2IGxlZ2FjeS10cnVuaworMzMwNzggNWE4ZmQ1YjNlNGM0MDUxMGIwNTc4MGFjZDM5ZjVlNjFiYTg3ODUwNyBsZWdhY3ktdHJ1bmsKKzMzMDc5IGY4N2ZjZDA4NzBiZjJjOTg2ZGQxZDgwNTMwMjFlMzQzZDI0NGI3MDAgbGVnYWN5LXRydW5rCiszMzA4MCAyYmE1ZWM2YjNjZGEyZmIwZTdlZGE1NDc5NjQwYmEzZTcwNzY2NTQ1IGxlZ2FjeS10cnVuaworMzMwODEgY2Y4YWUzYjBkY2RjOTcwYWE4OTRlMmZkMGRkMDE2MDA2YzEyNjdhZiBsZWdhY3ktdHJ1bmsKKzMzMDgyIDdjNDk4MzFkMjNjNTliMDdiNjYzNjBkNzQ3ODMyOTA4MmQ5ZDdmY2MgbGVnYWN5LXRydW5rCiszMzA4MyBmYzM5MmRhYmUyZTMwZjBlYThlOTBlYjNjMmQyYTgwODY1MzhiZDA2IGxlZ2FjeS10cnVuaworMzMwODQgYjZjMjcxYmEwM2UxODE0NDM2NWEzODcyMWY2ZjM2ZWEwMGMzOTRjZSBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg1IDA4OWZiZTNhMTE0ZWY5YmVjNjRhYjU5ZDZkNzcwNTNkMmRiYjYwMGMgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4NiAwZDYxYTI3YzM4OTY5ZTA2ODQ2YWU5Y2ZhOTFiMmMxMmU3ZjViNGVhIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODcgZmZkMDJiYWFiMjU5MzIwZTczMjZjMDk3NjM3OTFiN2Y2NzdjOTQzYiBsZWdhY3ktdHJ1bmsKKzMzMDg4IDcwZDYyNWZmNTYyYjVkNjljMzU5Yjc0YzRjMmQ0NmQzYmIyZGVkM2UgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4OSA5MjNlNmZiODU1ZmY0ZjdhMzczMmIzYWU0NDBjMWIzNTViYmNiMTU1IGxlZ2FjeS10cnVuaworMzMwOTAgZWRjZmVmOTQ0ZTJmNDA2YzgyN2FiMTE2ZjgwZmI0YTY0M2JlOTVkMCBsZWdhY3ktdHJ1bmsKKzMzMDkxIDVjNTZiZjNjYjIwNTUwODUyOTI5ODRiMmUyODg1OWExMTdlZGZiNzMgcmVsZWFzZTIyLW1haW50CiszMzA5MiBjNDgxYzY4NjI3NWE3ODVhNTkzMDQ1ZjBkYTA5OTVjNWE4NmM2YTYwIGxlZ2FjeS10cnVuaworMzMwOTMgYjgwYTIyMjUwZTRmMTFhNGI0N2I1YTAxY2QyODBjODU1ZGI1Y2M1NCBsZWdhY3ktdHJ1bmsKKzMzMDk0IGVmZWQ2ODk3M2EzYmVmMzQwODIyNzM2MDViMmNkYzdkY2RiN2NiYTMgbGVnYWN5LXRydW5rCiszMzA5NSBlMmYyNDEwYzA5NmUwM2YzZDQyMGY3YTAzMDdkZGFlNWU4YWVjMjZkIGxlZ2FjeS10cnVuaworMzMwOTYgMTkzMzk3YzQ0YWU1MTY0ZjJlYzA3ODNmM2UwNDA5NWVkZGRhMzg0NCBsZWdhY3ktdHJ1bmsKKzMzMDk3IGU2OWU1NDU1MmQxMDhkYjY3NDQ0N2JkZmY4ODM5ZDk3ZTJjNWE2YzIgbGVnYWN5LXRydW5rCiszMzA5OCAwYmE3YzEwMTY0OGFjODI4MzQwYzhlNGU3MzU0ZmJiODU4MWZlNWRmIGxlZ2FjeS10cnVuaworMzMwOTkgZmE0OGE5MGVkYTEyNWFlYjJlODQ4YjFlMDk2YTNmZTZmMTBmN2M5NCByZWxlYXNlMjItbWFpbnQKKzMzMTAwIDE3OWQ1NDUyYmI5ZDlmNjExNGE0MzA4ZGZhZDczYTgxZjg3MmQ2ODYgbGVnYWN5LXRydW5rCiszMzEwMSBiNDA5MDJiNDIyOTBkYjY5NGVmZTMzYmMyMzY2MzA2ZTYxMDljZjdlIGxlZ2FjeS10cnVuaworMzMxMDIgN2I3MDA0MzkzYjViMjZmMjUzZTZmMWMxZTE1N2VlYTQ1Y2IxN2MwNCBsZWdhY3ktdHJ1bmsKKzMzMTAzIDUyYmFhZWM3ZTVjZjA4OWYzNTE2NTY4ZDYxNThiMmFmOGQ2NWFkMmQgbGVnYWN5LXRydW5rCiszMzEwNCAxNzQzMWJhOGNjNGJmYWRhMzI2ODRhYWVmNDcxNjI1Y2E1NzE1ZjE5IGxlZ2FjeS10cnVuaworMzMxMDUgNmZlY2M5OWFmYTY5ZmZkNDgwYTI5MmU2MjBkNTAxZWU2ZTc1NDczZiBsZWdhY3ktdHJ1bmsKKzMzMTA2IGJiMTkxMzRlMGE0ZDBiOWU0NDMzMmJkODVlYTk3YzMwZDQzZGFlZjMgbGVnYWN5LXRydW5rCiszMzEwNyA4ZDE2MDA5NWViNjY4M2UzYzIyYTU4OTc2MzlmZGQ2NzczMDdkODQyIGxlZ2FjeS10cnVuaworMzMxMDggZTVkMDMzNjA1NzFkOTdjYWZkZWQ0MjNjYzg2OGE5ZTYyZTA2MzM0YSBsZWdhY3ktdHJ1bmsKKzMzMTA5IGU5OTUzYjM5OWQ1NTNkNWNjOGRmMGFlOWE3OTA3NDJmNDJjMzIxMzYgbGVnYWN5LXRydW5rCiszMzExMCAyY2I5NjlmZmUxYmYyOGU1NGIwOWZjYzY0NzdhNWJlZjY1YWJmOTI2IGxlZ2FjeS10cnVuaworMzMxMTEgNWM3NjI3NTI3ODJjMjkzODI4ZDA5MTJjZDU0ZmNjNDcwNTM5ZTRjMiBsZWdhY3ktdHJ1bmsKKzMzMTEyIDJkNjlhNzA3YzQ5Mjk4NTQ5MmEzMWYzYjU3NzUzYjliMmQyNTVhNzUgbGVnYWN5LXRydW5rCiszMzExMyA1NjM0MzgxNmI1ODk3ZjhhZjcwMmYyNWEwZDE1ODBlODY5NmQzMjU1IGxlZ2FjeS10cnVuaworMzMxMTQgMDUwNThkODEzNDQxOGQ0ODg1ODQ1M2UxMTRiZjA5YjRkZmNjMjg5NiBsZWdhY3ktdHJ1bmsKKzMzMTE1IDMwMTZhMTllMzIwZTY0NTE3MDZmOWUwZjU3YzJjNDFiNzk0MmQzZDIgbGVnYWN5LXRydW5rCiszMzExNiBlZmFkNTlmMzk1NjRiY2Q5NDgxNzk3MTdjYmRmODZiMGI2ZmQ4ZDFjIGxlZ2FjeS10cnVuaworMzMxMTcgOWI3MjU1OGExZWI5ZjQwYmIyYzBhNGJlMTcxOTgxYWE3NjVhMzE4OCBsZWdhY3ktdHJ1bmsKKzMzMTE4IDZkMTYwZWUzNzE5NjU1OWUzZGM2MjM3YTc3Nzc1NDYxNTMwY2UzOGIgcmVsZWFzZTIyLW1haW50CiszMzExOSAxZjMzNDE5OGU2ZDc2M2M2YzBhYjc4ZDgwODJhYTQ3OWRhNjcxZDMzIGxlZ2FjeS10cnVuaworMzMxMjAgYjgyMmMyYThlMDhmNDMwNWZlYTRhNjdmMmE1YWRkZDViZDVlYzI5MiByZWxlYXNlMjItbWFpbnQKKzMzMTIxIDhiZWQ1NTIwMzU1OWY4ZGQ1YzVhYzM5MWI3NmFjN2YyNDFiNzllZDggbGVnYWN5LXRydW5rCiszMzEyMiAyMWJmY2I3Yzk3NmRiNWU0M2M4NzcwY2I1NjFmNTJhZjVkYTM5YTVkIHJlbGVhc2UyMi1tYWludAorMzMxMjMgOTg4M2NmOGZmMjE3YzllZDg4MjUzZGM0ZTQxYTEyZGI3YmEyOWRhZiBsZWdhY3ktdHJ1bmsKKzMzMTI0IDhiMTc2NmM4YWQzYmFiNGU5Y2IxNTBmMjQwYjgyOGQ3NmJmOTE4ZWYgbGVnYWN5LXRydW5rCiszMzEyNSAwNjJlMzQyY2NmZjU4YjYyOTUzNTRjZGJmMTBmMWQ0NWEyNDNiMDAxIHJlbGVhc2UyMi1tYWludAorMzMxMjYgNzRhMjhmMmU5NGNmOWUyOTJlZWVkODEwODVmOTU2NTU1ZmI1ZjZlYyBsZWdhY3ktdHJ1bmsKKzMzMTI3IDJjYjg5MzBjZTIyNTk5MjZhZTRhNzlhN2I5Y2QzYjljZmRhOTYyMmUgbGVnYWN5LXRydW5rCiszMzEyOCAxZTJlNTQ4MjE3ODVmOWE0ZWJlZDZlZjg3ZmI0NGQ4NWQ3YzJjOTczIGxlZ2FjeS10cnVuaworMzMxMjkgMzUyM2JhOTI0NTBjZTY0MTYwNmM4OTdkMmQ4Y2U0ZDA5ZTgxMjNlNiBsZWdhY3ktdHJ1bmsKKzMzMTMwIDA0MTVhZjYzNDEyMjU4YmUxYWE0NWQ2OTFkYzY1NjM2Y2Q4YTIzNWEgcmVsZWFzZTIyLW1haW50CiszMzEzMSA1YzViNTg3NDY0ODY2ZGQzZDczMzdjYjk1YTEzZmI0ZTliY2E1MjZjIHJlbGVhc2UyMS1tYWludAorMzMxMzIgMGNmMWVjNThlMjIwYmE2ODYyYTE0OTliNTY3OGE3NGI1NGJlZjA1ZSBsZWdhY3ktdHJ1bmsKKzMzMTMzIGE3MjFiMDk0ZjdiYzJkYmZkNzExMjU1NmJlNjBmZTU0NDFhMDU0ZDUgbGVnYWN5LXRydW5rCiszMzEzNCA0ZjA3NmZjMDE5NWFjMjYyNGFlYTQ3OGY4YmE1NjJkZjQ0M2QzMWJkIGxlZ2FjeS10cnVuaworMzMxMzUgMWFiOTk3ODEyM2JlY2VhMTQ1ZjA5MGZhMWZhMGExMWI0MTYyY2QzYSBsZWdhY3ktdHJ1bmsKKzMzMTM2IDE0YTE1NDcxMjlmYmY1ZWJiMjI4YmM4MjliZjAwYTBmMTkyZjMyYjMgbGVnYWN5LXRydW5rCiszMzEzNyAzMzFhZjQ1ZGZhMGRjMDE3OGQ4YWYzY2EyNTFhNzdmOTE4OTAxMzkwIGxlZ2FjeS10cnVuaworMzMxMzggNDg3NDYxNGNjN2EzNTcwMzkyZDNlYzlmYWZkN2U2NmNkMmY2OTk1NSBsZWdhY3ktdHJ1bmsKKzMzMTM5IDUxMDYwYjE2OWIzMjM3YTQxNzgwNjFmOWNhYzFmZTM3MDMxMDhkODUgbGVnYWN5LXRydW5rCiszMzE0MCA4OTJkZmM5ZTcyNTY3ZmRiNzc5Zjk3MjJlMGE0MTA0NDBkODQ4YWNlIGxlZ2FjeS10cnVuaworMzMxNDEgZGViOTcxNWJjOGFlN2MwMGU2YzQ2MmU5Mzk1MjYwZTExYTNjZTVlYSBsZWdhY3ktdHJ1bmsKKzMzMTQyIDgzNGNkMTIxOGYxYjRkMjQ1ODVlODAwMDM5OWQzYmJlZjU2YzlmY2QgbGVnYWN5LXRydW5rCiszMzE0MyAwODZiZDllN2QyNDQyYTBiYTZjMzVlYWQ0NzNkNjg2YmRiZTMxOGViIGxlZ2FjeS10cnVuaworMzMxNDQgMDZmMjhhZGVhNmQyYzA5MWFjODg3ZjNiN2VmMTk0NmQyZGI2NTYzMCBsZWdhY3ktdHJ1bmsKKzMzMTQ1IGJkZmY5NjVkMjYwMzI5OWFjNjYxZWMzMzQzMjhlODA5YWQ3MzE3ZGIgbGVnYWN5LXRydW5rCiszMzE0NiAyM2U3YjI1NzdhNDY4ODA1YmY2MjYwY2IxZmE2NTQ2NGIwODk5ZTBkIGxlZ2FjeS10cnVuaworMzMxNDcgMzEzM2I1MGU5OWYzMjY1Zjk5MzU5NDFlNDRkMjhiM2E1Y2I5Y2FlZCBsZWdhY3ktdHJ1bmsKKzMzMTQ4IDg3YTI1M2FhYTBkNTIxMzdjZDc1MTM2YTY1YzQ3NjMzMzc3MGM0NGUgbGVnYWN5LXRydW5rCiszMzE0OSA4MWU3MGYxMmQ2MmZjODQ3NzliNTJkMjU2YzNkODdiZmI1ODlhMTE5IGxlZ2FjeS10cnVuaworMzMxNTAgMTM4NmY4NmM1MDk1ZjQ3NTk0NjM0ZWFmYTE0ODFjYjUwMDFkN2Y1NiBsZWdhY3ktdHJ1bmsKKzMzMTUxIDUxNDNjZmU3Y2M3NWNjMDQ0ZjA5ZjUwZGYwYzE4YjJmZDgzOTkyODQgbGVnYWN5LXRydW5rCiszMzE1MiA2MGRhYmE5Mzc3NWM1MjM2MDM2NTlkNTY1YjMzYmNiNDM1YjFiNmY1IGxlZ2FjeS10cnVuaworMzMxNTMgOTcxOGRmODQ5ZGE5MjEwMmRiNWQwNjg0ZTY5M2YyNmUyMjYxYzc1YSBsZWdhY3ktdHJ1bmsKKzMzMTU0IDA4OTA0NjYwMTI3MDY1OTI5ZTliNDJhYjNkMjVjODZkNjBhMzMwMDYgbGVnYWN5LXRydW5rCiszMzE1NSA1MjIwNDc0NjYwY2U4MWQyNjg4NDhjYjc4YmU2ZDEyZjE4NDhmYjg3IGxlZ2FjeS10cnVuaworMzMxNTYgYWJjMmEyMGRjM2EzMzRjMmNmNGE4NWMyY2FkZGJhMmVkMjcyZjU5ZSBsZWdhY3ktdHJ1bmsKKzMzMTU3IDQwYzVmMWMwOGVjOGFhYjBkMWY4Y2FlMDUyMGFmNjgzMTk3ZDI0NjEgbGVnYWN5LXRydW5rCiszMzE1OCAxMDA3MDhlYjhjODJkMmM3ODdiOWQ3NWU3ZDNiODk5NDhhOTRkZjYwIGxlZ2FjeS10cnVuaworMzMxNTkgOTRmOTEwN2Q5YTYzYTlkOWEyZTkyMjU3MzMwMDVhYjQ3Mjg1YTcyNyBsZWdhY3ktdHJ1bmsKKzMzMTYwIDY1MzFjNzZiNjA0ZGNhZmUyYzI1NGNiNGM1NWYxOGI5M2RiZWRkYjcgbGVnYWN5LXRydW5rCiszMzE2MSAxNDAyZjI2NWU0OGY2MTNiYWY5ZWIzNzRjNTA0NDBkMDEwYmIxOWNlIGxlZ2FjeS10cnVuaworMzMxNjIgZDBkNGQ2OTZhYjI0ZThkNjI4M2U5NWMzMmExNDc2NzY5ZTM1YjlkNyBsZWdhY3ktdHJ1bmsKKzMzMTYzIGFhODRlZGUxYzM2NGViZGNmNTJlZjM2NTZiZWUxOTQzOTI0ZDMwNTIgbGVnYWN5LXRydW5rCiszMzE2NCA2YzZiMzIxZDFkMTBlZmQxZjA0MGQ1MTUxYWNmNzAwMzg3ZTZmZWJjIGxlZ2FjeS10cnVuaworMzMxNjUgNzFjMDZiYzVhNzNlYTFiNmU2NTM5MjZkYjEyNjk1NTc0NDE0Mzk0MCBsZWdhY3ktdHJ1bmsKKzMzMTY2IDdlMzM2M2E3NjYxZDI1NTFjYzY1ZTY4ZDNkMjQxYmM5NDk0Mzg4MDggbGVnYWN5LXRydW5rCiszMzE2NyBkNzJiM2YwYTU3YTlkZDJjNzQwNDg0YmNlZGUyYThmZDgzZGRjNjA4IHJlbGVhc2UyMi1tYWludAorMzMxNjggNWYwMWQ1MTU4ZDFmODZlMjMzY2RiMzA0OWNmYWYzM2IzYmJmNGM5YyByZWxlYXNlMjItbWFpbnQKKzMzMTY5IGRiNDMxMjk0NzQ5NDBkODA0NzliZjAxZTkxMWI3OTQ5YWRhYmFlMjAgbGVnYWN5LXRydW5rCiszMzE3MCAxMTUxOGI2Y2U1ZWMwM2QzOWY1MWJjODY2YmNiZmUxNjZhYTQxNDZkIGxlZ2FjeS10cnVuaworMzMxNzEgNTM1NTQ2ODhlNWEyMmU4ZmEyNTBlYWQ1M2NiYmRmMjJmZTk2NDNiNCBsZWdhY3ktdHJ1bmsKKzMzMTcyIDI5ZWVlNWMxZGQ0MmZjOGE0MTAzODAxYzI4MjUzMGZhYmEzN2ViNzkgbGVnYWN5LXRydW5rCiszMzE3MyAwMWU5MjUzNzFkN2M5NDA4OGNhODE4OTIzZTFkMWZkZTAxMDY0ZmRjIGxlZ2FjeS10cnVuaworMzMxNzQgZDFhY2Y4OWQxYzQ5YTZkNjAxMTVmZWYzNGZhNDg4YjYwMzBkYmZhYyBsZWdhY3ktdHJ1bmsKKzMzMTc1IDY0NDRlYTNkYzgzYzQ0ZTE1ODIxODQ3MjY5YjEwZjRiZjY0NjVkYmYgbGVnYWN5LXRydW5rCiszMzE3NiBlNTRlMmRlNDZiYzNkNTg3MzdmNGY3M2JjOTIxODlkNTBmMjQyYmVhIGxlZ2FjeS10cnVuaworMzMxNzcgY2E5ZTM1OThjY2ZiNWVjODFiM2ZkYmM5ZjlmMjY0ZGE2MzJlNTAxMCBsZWdhY3ktdHJ1bmsKKzMzMTc4IDIzMWEzNTEwZTI0NmZlMGM5NDNlNTZhYjA0Y2FlODg3NjVmODY3ZjEgbGVnYWN5LXRydW5rCiszMzE3OSBkNzYxZmY1NWIzYmVmNDFmZTUyZmEzZTk1YTY3YzhiMTljMTZkODA4IGxlZ2FjeS10cnVuaworMzMxODAgOTRhYzFkNDJhNDIwNGYyZDBiODZjYjQ4YTQ4Y2MwNDg4MWIzNWEyYSBsZWdhY3ktdHJ1bmsKKzMzMTgxIDA1ZmI1MWQwN2FkYWY1YmYzMTRhODc4NWVjODUwYTJlMDQyOWY5ODggbGVnYWN5LXRydW5rCiszMzE4MiBjNmViNTY5ZTRiNzkzMDliODUwYThjOGIyNTIwYmM5NGUyMDhjYjZhIGxlZ2FjeS10cnVuaworMzMxODMgNWQxMWZkZmE3YzAwODQ3NTAwNTQyMWIzYzFkNDUwYzAwMDRiYjcyYyBsZWdhY3ktdHJ1bmsKKzMzMTg0IGI3NGUwY2MyMWNiMDQ0ZmFiY2E1NWUyYTg4NWVkOWI0ZmJmOWJkNjggbGVnYWN5LXRydW5rCiszMzE4NSA3MGU2NDlmYTNmY2QxMzkxNmE4YWIyNTRjZWE2MDVjYWU3NzBlZWZkIGxlZ2FjeS10cnVuaworMzMxODYgODdmMzBmY2ZhZDQ4ODgxYTIzYTM3YmM2MWJmNzcxMDM5Nzk1MmU0MiBsZWdhY3ktdHJ1bmsKKzMzMTg3IGIxYWExZDQzOWNiYTM1NWVlZDkwMmUxZTJmMTY3ZDA0NTkxZDU1NWIgbGVnYWN5LXRydW5rCiszMzE4OCBmYjMzMmEwOTQ5Yjc0ZjU2MzE1Zjc0MzY3MzY5M2E2MjdiYmJmMDhlIHJlbGVhc2UyMi1tYWludAorMzMxODkgZjZkNTAzZGU0NWJkZTBmOWYxYTQzODhjYjM4NTAyYjY0NzVlMzAwZCBsZWdhY3ktdHJ1bmsKKzMzMTkwIGY2N2U0YzVhZWE5MzdkYzM4MTQ0MDg0NDhiNTc2ZTgzZDJkMzYwNTYgbGVnYWN5LXRydW5rCiszMzE5MSA3YWVlNmVmNTk2ZGRiZGU2MzgzYTk2NWQ1MTg2M2E1MGU0OWVkNDVjIGxlZ2FjeS10cnVuaworMzMxOTIgZjQ4YmI5NGYzMjg5NTgzMjg3MjZlODM4ZGNjMjRiODU0ZmZkYzkxZSBsZWdhY3ktdHJ1bmsKKzMzMTkzIGYxNzVmNzc5YmU4OTBiN2Y5ZjFkMGIwOGE1MTBiNzljMTViNjAxNzQgbGVnYWN5LXRydW5rCiszMzE5NCBlYTc3ZDQzZTIwM2QxZjU2ZjUwYzE1Yjk0ZWZlMTEyMjM3ZmM5MjljIGxlZ2FjeS10cnVuaworMzMxOTUgMmZiZDI1NmExZGIyNTYyNmJiZmY0MWRhNmM5MGY4Njk4MGNlMGIxMCBsZWdhY3ktdHJ1bmsKKzMzMTk2IDBiNTMyMmI4NTNkMmY3NTFiNjAzMTBiZDZiMjEwNTBmYTRkZDM4ZWIgbGVnYWN5LXRydW5rCiszMzE5NyA4YjAzMDBlN2YxZGNiMTk5MDE5YzY5ZjM4YjBmMDZkYmQxMWRkMmVkIHJlbGVhc2UyMi1tYWludAorMzMxOTggYzY0Njg3Y2Q1YjM3MWQyMzIzODM5MjNmN2IwOGY1NTQ2OGEzZjZkNyBsZWdhY3ktdHJ1bmsKKzMzMTk5IDM0YzA0MGRkZjllOGVhZDI0NDVhMjFkN2IyYmQwYTkxNWY1N2U4NGQgbGVnYWN5LXRydW5rCiszMzIwMCBjZDYyYjMzNTllOTU2MGU1Zjg3NDUxNTg0MjZjYzBlM2RkNDgzYjM4IGxlZ2FjeS10cnVuaworMzMyMDEgZGM2YzIxZGM4Njg0ZTA2Mzk3Y2MwMTZkMjJjNzA1N2U4NDlhZjhmNyBsZWdhY3ktdHJ1bmsKKzMzMjAyIGZhZmI2ZWIwZjk3ZThlNGM2OTQyMzUzMzBlM2JkZWJmMDk3ZWE2MzUgbGVnYWN5LXRydW5rCiszMzIwMyBjM2JjN2VkOWQzMTU5OWUwZTBmOWJkMzg4NGU2ZTY0YmRkZWNhMWI2IGxlZ2FjeS10cnVuaworMzMyMDQgMmQ0MDI3ZWZiYzEyZTIyZmRhMjc4NWVhYzNjYjNlODA2MGFmMTFhYSBsZWdhY3ktdHJ1bmsKKzMzMjA1IDY5YmM3Y2E1Y2MxYThmNTAxZjkzNjgyYTAwZjkwOGMyMWJlNTY5YzEgbGVnYWN5LXRydW5rCiszMzIwNiBlMjI4MzM2YWFmMDhkN2MzNTdhM2QwNjZmOGFhMmM5NzBhYmY1NmE4IHJlbGVhc2UyMi1tYWludAorMzMyMDcgOTE5NzI4NWEzOTMzNWUwNGIyZTQ0NGNlNDliMzI4YTNmM2I0MDRmMCBsZWdhY3ktdHJ1bmsKKzMzMjA4IDMyNTkyZjFhNmYyMmI0OTlhMjEyYzY4NjhmYzM5OWY4ODA2NTQ2ODkgbGVnYWN5LXRydW5rCiszMzIwOSA2ZmUwMjM2OTBkN2YxMGQzY2M1MDZiYmE1ZjE2YmIzNzcwMDg1OWUwIGxlZ2FjeS10cnVuaworMzMyMTAgOTQ0ZjYwMmI3OGZlNDg4OWExMjRjMmFmM2JlYzA4OWQ5ZTAyNzIwYyBsZWdhY3ktdHJ1bmsKKzMzMjExIDg3ODBhNDlkOGVmMmMxNDNmYjY1ODEyYzUxNDMxMzVmYzUyNjVkMjEgbGVnYWN5LXRydW5rCiszMzIxMiA3YzdmNDA0NWJhMzY3MWEwMjA5MDY0ZGY2OWU1ZmYyNTVmNGYyN2VkIGxlZ2FjeS10cnVuaworMzMyMTMgNGQxZmE5YzVjYjJjZjI1ZDkwY2NhNzE2MjNiZmI3N2U5N2M2YTA2NSBsZWdhY3ktdHJ1bmsKKzMzMjE0IGU5NzNkZWQ4YTkyYTg4Mjg1ZTAyOTEwMDJiYmYxOGIyYzY4ZWM1NWIgcmVsZWFzZTIyLW1haW50CiszMzIxNSA1MjAwMjg3ODg5YmQyYTQxMDRlZTM4YjI3ZDFkNTNjZDEzMTI4ZWI0IGxlZ2FjeS10cnVuaworMzMyMTYgNmE1ZTk1YzY3ZDMyMWMxMDU4OWQ5M2Q5ZTJkMDI2NDg2NmU0Mjg1OCBsZWdhY3ktdHJ1bmsKKzMzMjE3IDFhNDk4NjkyMjM1NzcyMDNlMjQzNWJkYjRmMGQwNzAyNmFkYzE2ODAgcmVsZWFzZTIyLW1haW50CiszMzIxOCA0Yjg2ZGNhYzIyMDEwNzZkNjM5NmVlMGYyMGYxYTgwMTQ1YjQzOTAxIHJlbGVhc2UyMi1tYWludAorMzMyMTkgZGUzZDQ5ZTBmNjQ5MTNjMDM4OTFhMGUxYjY3YWI0MWQ1MTRlMjFhOCBsZWdhY3ktdHJ1bmsKKzMzMjIwIDQyNzIzMjJiOTJlNWU5ZTgyNTY2ZDIyMmRjNjY4NTlhNjAyYmM4NjcgbGVnYWN5LXRydW5rCiszMzIyMSBlNWQzYjFkODljNDAxODAwZDA0ZDdhZDQwNWZjZmEyOWZmM2FhYTI3IGxlZ2FjeS10cnVuaworMzMyMjIgOTU4YjQwZDgwYjMzMTgzMGQwMzNiYWNjMmFhMDBhMGNkZTg0MzdjMCBsZWdhY3ktdHJ1bmsKKzMzMjIzIGEyOTYyMTRkMmViYmEzMTcwZDE5MTgwOGNhODNlZmNlMTEzMzVkOTcgbGVnYWN5LXRydW5rCiszMzIyNCA3MWQzZGExMTU4MzhmMzMxYWUwZjRiNThkYzhiOTc5Zjk3MGRjY2IxIGxlZ2FjeS10cnVuaworMzMyMjUgNDQ4YzE0NDE5NjRmZDYwZTliZGM1N2Q4ODk0ZGMxM2Q3MTViNjVhNiBsZWdhY3ktdHJ1bmsKKzMzMjI2IDc1NjQ2ODMwN2U2MTc5ZmU4NGYxZDhkMzQ1NzA5ZDI1ZGI1NjEyZmQgbGVnYWN5LXRydW5rCiszMzIyNyA5MTI1OWFlMzVlMjk5NDY3MjM5OTFjYTY5ODZiMzNkODE5OTQ3NDJlIGxlZ2FjeS10cnVuaworMzMyMjggOGU5MmNjMDRiNjRiMDAwNGMyMmFmNzQwMjVhYmIxZDQ4OTgyMmI3NyBsZWdhY3ktdHJ1bmsKKzMzMjI5IGQxNWUyYjdkOTkxY2M5MGIxNTU0YmM4NjRkYjI3YjdmMTNkOWNmNzggbGVnYWN5LXRydW5rCiszMzIzMCBlZDQ1YTk5NTEzMTI2OGIyNGNlMGM3MTdjZDM5NDdkZmNiZDQ4ZDQ4IGxlZ2FjeS10cnVuaworMzMyMzEgYWQwMmEzOGE5NmVhOWVkZWExZTI3MmZkZDM3YTQ2Y2VjNzMzNzE4NiBsZWdhY3ktdHJ1bmsKKzMzMjMyIGYyNmQxMzIzNmNlODRhODA5ZWMyN2I2NTFjZjcxMDNjMmNlMTZjNTggbGVnYWN5LXRydW5rCiszMzIzMyAxYWE5MDU3YzM4YjRlZDdhOGI1MjVhMWNhYTAxMTNhY2M3MjE2YjFiIGxlZ2FjeS10cnVuaworMzMyMzQgZWVkNzQzMGI3YWYxNGE3ZjU5ZTNjNWU1NDk4NGQ3YWIzODAxNjhiOSBsZWdhY3ktdHJ1bmsKKzMzMjM1IDVjODczN2JkNGNlNmQ0ZmJhNTI1MTNkZTZmNWZiM2NkMWExMjRkYWIgbGVnYWN5LXRydW5rCiszMzIzNiBlMmY3ODM0ODgwMjQ4ZDRjMzI1ZmJjMzg5ZGU4OWRiOGUyODE5ZWIwIGxlZ2FjeS10cnVuaworMzMyMzcgY2RjNzVkZTJmNWMxYTY0ZjNhZGZmMGI0N2EzZjA4MmQ4MGJjZjQ2YiBsZWdhY3ktdHJ1bmsKKzMzMjM4IGI4YjU3YmRiZmNlZGY0YzhmMTQ2MDQwMjQzMTVmMDk5MGM5NDY0MmMgbGVnYWN5LXRydW5rCiszMzIzOSBmOTNiOTE5ZTU3MjkwZWQyNmQ1MjcyMWEyYzJmNmUxZGM0ODljNDIxIGxlZ2FjeS10cnVuaworMzMyNDAgMTY5ZTAxZWMzNTk2NTlmY2UzYTYzYTQxMGU0NDBhNjVlMzdkNDRiZSByZWxlYXNlMjItbWFpbnQKKzMzMjQxIDU2MjNmOWUyYjU1NWYwZTk3MDA2Y2E4YTBjMjFlY2Q0NDY2ZTI2MDkgcmVsZWFzZTIyLW1haW50CiszMzI0MiA2MGNlNzNlYTljOTJmMzQyZjU1MmY2NzU1ZWNlMTRhZDBlYzZhMWRiIGxlZ2FjeS10cnVuaworMzMyNDMgYTlhOTNmYzUwYjhkOGFlNzg3OGI2MWM1ZGRmMTA1YTJmZmM0MDYzNiBsZWdhY3ktdHJ1bmsKKzMzMjQ0IDMxMmZiNzZiNzNjYzdjNzRkMTkxNmRmYTcyM2U1ZTM2MjU0ZjJjZjEgbGVnYWN5LXRydW5rCiszMzI0NSBlZTE0ZTViMDZlZDEzNmIxMjM4M2RhYjYxZDE2MjllYmJhYzc3NzljIGxlZ2FjeS10cnVuaworMzMyNDYgN2ZlNGU5ZjE2NjM0N2I2NDFmYTRkZWQ2ZDNjZGQ0ZDZjZDIxNDVmOCBsZWdhY3ktdHJ1bmsKKzMzMjQ3IGRhMDI0OGZjZmM1MjUxYmNkNzEwY2FiMTUxN2QyMDc4YzIwNDg1NWIgbGVnYWN5LXRydW5rCiszMzI0OCA5ZGYxZjNkODllNjAwYzQxODdlMzNkOTUxNGI2MzhjMTE0MTIyMzNmIGxlZ2FjeS10cnVuaworMzMyNDkgOGIxNjMzNzAzNzJkZGFkMGUwMzQwNjQ4OGQwNWIwYzU5OTFiYTZjOCBsZWdhY3ktdHJ1bmsKKzMzMjUwIDdmNzllYWQ3MTJmNThkNDcxZGY3YTQ0MzA2NzM1MDk3MTIzNDM0ZjggbGVnYWN5LXRydW5rCiszMzI1MSA5OTY1ZWJjZGQxNzJmOTJmNDEwOGYzNTMwYTVhNTkwZjRkOGFjYTYwIGxlZ2FjeS10cnVuaworMzMyNTIgYjc4ZDYzZGFlMDMwNzZlOWNkYTdkNWY3ZjYzNGFkOTUzZWQwY2Y4MiBsZWdhY3ktdHJ1bmsKKzMzMjUzIDg4MDdlOTAxYzUyNmNiNDRiYjlhNjYwZTM2OTc4YWNkMmM3NjMxN2EgbGVnYWN5LXRydW5rCiszMzI1NCA0YTNlZjM4MDc4ZTU1MTU3ZDM3ZWQ0YjkyODA4NTQ4NDkwN2YxNmE1IGxlZ2FjeS10cnVuaworMzMyNTUgOWEzMDQ0ZTU3ODFlYWFjNTg4NGM2YmNjYmUxOGU2MjJhMDNmYTkzNiBsZWdhY3ktdHJ1bmsKKzMzMjU2IGE0MGNmMWQwYTg4N2ZkZmI3YzZlMzI5YjNkNzEyYjdmZmZjNGI0ZmUgbGVnYWN5LXRydW5rCiszMzI1NyBlYWEwNjJmZGQ0NmFiMDI2NTYxNmM4NDA1NGQ4MzliMmExZWU4YmI2IGxlZ2FjeS10cnVuaworMzMyNTggODkxMWNhODg5ODFhZjg2MmU2M2U0YWFhZTljYjI0Y2E3YzViN2E4ZSBsZWdhY3ktdHJ1bmsKKzMzMjU5IGIzNWZmOWI1OTE0OTMxYzM4ODgwZDkyNzA5ZjRlNjk1MjJmZWM0M2EgbGVnYWN5LXRydW5rCiszMzI2MCA0NjZiNTc5ZTAwODgyMjYyYmZiMTJhMmFlMzExNThhMzE5YmE0ZTc4IGxlZ2FjeS10cnVuaworMzMyNjEgMjAxY2VhZjk1OTc1MWY0NDJhM2E2MDliNzY1YmZkMmZmYzIwNWU4NyBsZWdhY3ktdHJ1bmsKKzMzMjYyIDJiMTNiNThhZTNhOGU3NjM3YWY4NDNjY2Y3MjQ4NTUwOTI2NjllNTcgbGVnYWN5LXRydW5rCiszMzI2MyBlYTM4NGIxZDBkMTNkYmI2NzdjYzE5NmY0NjIxNGMwMWUyNTgyMzllIGxlZ2FjeS10cnVuaworMzMyNjQgN2I1MTllYTc1MDFhYWJmMjhhYjNhOTFlODE1ODFmZTQyOWM1MTk1YyBsZWdhY3ktdHJ1bmsKKzMzMjY1IGNhYThjMTIwZTJjYjJiMjk2ZDYwN2NmZTNkYmQwOWM5OTNkYzg4YmMgbGVnYWN5LXRydW5rCiszMzI2NiBmZWE4ZGVlMjczMzJmZmNmNTJmNTk1ZTFmZTlkODQxMjYyM2IzYjc2IGxlZ2FjeS10cnVuaworMzMyNjcgOGEyOTE2YzQzM2Q5NGZkYjJjOTQ3NzM2OTVkNWFhNDk4NjFhNDExOCBsZWdhY3ktdHJ1bmsKKzMzMjY4IGU0MzEyNmM0NzBhNzZlYTlmYmQzYjkyZTdlOGI3OGFmNjMxZmY3OTUgbGVnYWN5LXRydW5rCiszMzI2OSAyZDE2YzNlZmUxNDdlN2JkNDRiN2Q3OGY0ZmZjZDNmNGY1YTk4NmE3IGxlZ2FjeS10cnVuaworMzMyNzAgNjBiNTNkYjE0YWEzY2M0MWEyY2VlYzg0N2M4NTBmYmY1ZjhjMmQ0NyBsZWdhY3ktdHJ1bmsKKzMzMjcxIGJlNjIwMDA3ZWMxZjUyNjUyMDE4NjAxYmZiZTJmNTgwNTQxNTZhNjUgbGVnYWN5LXRydW5rCiszMzI3MiAwMTY5YWNkZjJiNWJjMjY5N2UxN2FlMDJkMjY1NmZjZGM4NTYzYWVkIGxlZ2FjeS10cnVuaworMzMyNzMgY2QzZjliMTcwYzM3ZmNiYzE5MmE3YzBlNTA5OGVlYjYyMmRlYTAzYyByZWxlYXNlMjItbWFpbnQKKzMzMjc0IGNhYzg1NTM4N2I1NjdiNjk2NzBhYzhkYmU2ODk3NjNiOGY2MzBlYmIgbGVnYWN5LXRydW5rCiszMzI3NSA4NjM0MmZhODkyMGRhZmUzMGJmMWQzZjk5NWJkNjE0MDc5MWRlZTYxIGxlZ2FjeS10cnVuaworMzMyNzYgMGJkYjRhY2VkNmUyMGQ4NjZjYzM1Zjg3ZjdjY2M4NDUxNTIxZDU5YyBsZWdhY3ktdHJ1bmsKKzMzMjc3IGNkMDkzYTk5MjM4ZDcyMzY0N2Q5MmUyNGM3ZDU1OWYyMzZhM2I0OGEgcmVsZWFzZTIyLW1haW50CiszMzI3OCA0NDgxYzViZGExOTY2YWQ4NjBhMTY5ZTMwMDFjZTY5NzAwOTljNDY5IGxlZ2FjeS10cnVuaworMzMyNzkgMWJhOTBkNTE0OTdiYTY4NTcwMGQ4ZjAwNGRmZWYwOWY0NDFkYjAxZSByZWxlYXNlMjItbWFpbnQKKzMzMjgwIGJhZGNkMTU4ZDgxY2EyM2Y2MTc5YTQ5NmNkMTE3M2UyMTJlZGQxY2UgbGVnYWN5LXRydW5rCiszMzI4MSA1ODI1MWUwYThiNzg3YmNlM2IzNGY1ZjVmYmMwOWJiMzg0ZGYwMGViIGxlZ2FjeS10cnVuaworMzMyODIgZjgwNjlmN2VkZDRhMjliZjZjNTA0Y2RmZGM0YTk1NDkwMTRmYmI1NSBsZWdhY3ktdHJ1bmsKKzMzMjgzIDc3ZWRhMGZiMGUxNDlkNDcyMDBlMmI4NDgxZTk4YmIyZDFhM2Y2ODYgbGVnYWN5LXRydW5rCiszMzI4NCBkZWQ5YWJjYjkxNzRhYTc3NGQyYTc1NTJkNDFlY2QxZTU5OWEzMjAyIGxlZ2FjeS10cnVuaworMzMyODUgN2QzMDU4NWE1OTM0MDU1MTVmNTE0YzQ4MzVlNGVlODY4ZGFkMTkwMCByZWxlYXNlMjItbWFpbnQKKzMzMjg2IDg1M2U2YTJiOTA2OGVlNjQzMjE0MzE3MTEzMDRkNWZmYWU5ZDNiMWEgbGVnYWN5LXRydW5rCiszMzI4NyBhNDY0MDIwZjE1ZDY3NTM4ODdmNjJhNzRiMWMwOTlkNjc4OTg0MGRmIGxlZ2FjeS10cnVuaworMzMyODggN2Q0MTc4NWZiNjBjNmU0ODI3ZWQ2YmE1Y2ZlNGI1ZDc3Y2U0MmI1YyBsZWdhY3ktdHJ1bmsKKzMzMjg5IGJhMTJkMmI0YjMxZGRiYjZhZDQ5MjMyNGZiYTE4NWU4NmIxZmZlOGUgbGVnYWN5LXRydW5rCiszMzI5MCBlMWZhMDdiZjg1NDg4ODViMDkyOTk0NGVlMGNkZGQ2OTQzZmQ4MTNiIGxlZ2FjeS10cnVuaworMzMyOTEgYmMxMjE1ZjdkYmEzODZiNWRiZjRkZjFhMjA5OWIzYTc0NDE4MGIzZSBsZWdhY3ktdHJ1bmsKKzMzMjkyIGE0ZDZiYzcxZjA5MWMyN2M5ZTRhZTkyYjcxYmZmOWNlZjcwZGUzOGMgbGVnYWN5LXRydW5rCiszMzI5MyA0MTBiM2MyMjIyMTE0Yzk4NWI3M2FhZTEyNjNiZmMwODdkYzQ0MjhhIGxlZ2FjeS10cnVuaworMzMyOTQgZjg4M2RiMjVkMzQ0NGJkZWFhMzNlYzAzOWRmYjBlOWMwMmIzMDdiYiBsZWdhY3ktdHJ1bmsKKzMzMjk1IDY3NmFhNjI4MzBkMGU5OTUyYmFkMGVhNzE1MTk5MzBhMzFlNzg0MjIgbGVnYWN5LXRydW5rCiszMzI5NiA1MzA0YmZmMjVlMTgzNGE2Mjc2OWZjYWY3N2MxYmFjNTNiZmMxMTBhIGxlZ2FjeS10cnVuaworMzMyOTcgNmFhOTcyYTIxYWM0YzE3MmQ2NTJkNTZmOGNlZDk2NDdjYjJmOWZhOCBsZWdhY3ktdHJ1bmsKKzMzMjk4IDFlY2RiOTRhMTg1MjJmODllZjdjYTEwMWU2NzgxMTllMjJjMjZkN2EgbGVnYWN5LXRydW5rCiszMzI5OSA5ZGU4MmRiYzNiZDAyYjdiYmU4N2I5MWYzMzhiMTA2ZjY0ZjVkYTQ2IGxlZ2FjeS10cnVuaworMzMzMDAgOTczYjFlMmUyNzI2MzgxNWQyOGJkZTgwZWMwMGY4YThiYTNkODU2OCBsZWdhY3ktdHJ1bmsKKzMzMzAxIDVkN2U2ZTgyODIxODdmNWQzNDE3YTNjMjRjMWRlODdmYzQ0ZTIzNTggbGVnYWN5LXRydW5rCiszMzMwMiA3ZDVhOWMxYTAxOTcwODQ2MGMxYTZlZmQzZWU2ZjQ1YWU1MDYxYjNjIGxlZ2FjeS10cnVuaworMzMzMDMgYWQyZGNhNWNmZTgxYTc3MDdlODYwODEwOWU4YTM2YzM3NzRmNDJkOSBsZWdhY3ktdHJ1bmsKKzMzMzA0IDQ5MDlhYTY0NDA1ZmIxYzIwNmYwZDc0ZTVkMjIyNzI4NjBmZDU3MDIgbGVnYWN5LXRydW5rCiszMzMwNSA1OGYxNDFkMWNjY2EyOTk1YzEzOTIyMThiZmRkNDdiNTc3Njk4ODJmIGxlZ2FjeS10cnVuaworMzMzMDYgZmE5NzI5MzUzM2E5MWY0ZGM2OTI4NmJkYTY5MzU4ZGZlZTE3ZDMxOSBsZWdhY3ktdHJ1bmsKKzMzMzA3IGE2M2VhN2M0NzVjYzVlMjgwMWQwMWY4ZGJlN2VkZjg5ZGYxZWJlNWUgbGVnYWN5LXRydW5rCiszMzMwOCA2MWY5OGVkNGI2YjU4ZDNiZmNjMjZmODRkODg3YmYwNjVmMTM1MDk4IGxlZ2FjeS10cnVuaworMzMzMDkgMDUwOWE3NjUyMTY3ZjQ4YWYzZmVhMTVkZDNkNThmYzY0NWM0MWQ2NCBsZWdhY3ktdHJ1bmsKKzMzMzEwIGQ2NjhhODMzNjc3NDc4MWNkN2ZhMDZmZTlkOTJkMzljY2NkMTU0Y2MgbGVnYWN5LXRydW5rCiszMzMxMSA0NjJkZTkzMzMyNTFjYTgwMTQwNDcxNmJkNjQ0MTAyOTJmZDVjNzBjIGxlZ2FjeS10cnVuaworMzMzMTIgOGJkMjU4MGUwMTU1NTIxZGRlMzQ3NjMxM2MxNjI5OThhMmM1YmM5YiBsZWdhY3ktdHJ1bmsKKzMzMzEzIDM4ODE4ODNiOTQwZWMwZTQzMGI0ODYzNDIxMTVhZGFmNTY2MTRiYjEgbGVnYWN5LXRydW5rCiszMzMxNCAwYTM3NTFkZjQxOTUyYjU0ZjkwNjQ5YzkwMTY4NmZkOThhZTJkOWMyIGxlZ2FjeS10cnVuaworMzMzMTUgNjA0NTQyZTU5MWZhNjgxYzY0ODg3OWJiNmM3NDZmNmZlNzdjZDBmYiBsZWdhY3ktdHJ1bmsKKzMzMzE2IDE2ZWVkMmU5OGZkOTM1NDY4ZGFkMmNhNjE4YzlkMDIyNjYwYTUzMzkgbGVnYWN5LXRydW5rCiszMzMxNyA2NmI2ZDFjZTQyZmU2MWUyMDM5NDkzNmJhZWM5YzdiZjlkYTBkNzY1IGxlZ2FjeS10cnVuaworMzMzMTggZjliOGQ0YmYwOGZiOWFkOGE5ODYxODBlMTEwODgyZGI0ZjM3YzdmZCBsZWdhY3ktdHJ1bmsKKzMzMzE5IDU4Mjg4N2JhN2E2OGRkN2NkNDI2ZmNjOThkODdkN2JhOWZlZTg0OTggbGVnYWN5LXRydW5rCiszMzMyMCA1YjEwNWE5NTAzMzQ4ZmIyZWRhZWI1YjQwMjJkMGM3MzJjOTZhYzUwIGxlZ2FjeS10cnVuaworMzMzMjEgOTU1MWNkYWY2ZTdlMWE4ODQyMjNhYmQ2ZmYzNTdlMTc2ZTAxMTk1MSBsZWdhY3ktdHJ1bmsKKzMzMzIyIDY5NjE5NTQyYTkxNmUzNDNkMmIzNzAxNDFmMDI3MDJjMTQ3OTgxYTQgbGVnYWN5LXRydW5rCiszMzMyMyA5YTRiY2ZkZGJmYTEyZjE1NDUzYmMyYjc1Zjk2YTVjYzVkZmYwNmMxIGxlZ2FjeS10cnVuaworMzMzMjQgNzkzMDNkZTlhMDVhNmVmM2M4OTMyZTZlNjUyMTE4ZGNkN2ZiM2NjMCBsZWdhY3ktdHJ1bmsKKzMzMzI1IDEzMDhkN2VjOTk1MzUwOTllM2ViZmZmNWUwMWQ0MDY2ODgwYTA5ZTYgbGVnYWN5LXRydW5rCiszMzMyNiBjYjkzYjg2MjUzMmY0OTAzMWMyZDI2MjdhNTUwOGFkMzAzZTY1YzcwIGxlZ2FjeS10cnVuaworMzMzMjcgM2NiMTgyMTI1MjFkMzQ4OWIwNWZjNWRhODQxMGZhNTI3MDZkZTBiMCBsZWdhY3ktdHJ1bmsKKzMzMzI4IGQ3NjI2YjgwZGU5NTE2OTRhZjY0NGVlYWZmMjEzOGViOTBhYzIyYWEgbGVnYWN5LXRydW5rCiszMzMyOSA3MTBjMDlmNGMwNWEyM2Y0ZTMyNGE2YTc3NzhiYjI0ZjU5NWQzZDY4IGxlZ2FjeS10cnVuaworMzMzMzAgYmE3NWFmN2FiMTM2ZjMxYTlkOGJjOGRiZGY2ZTJhNGY1MzJmMDdmMSBsZWdhY3ktdHJ1bmsKKzMzMzMxIDM2YTE3OTA0YTNlZDAwNjBlNGExY2M5N2ZkNzhhZTg4ZjhkOTUwNzYgbGVnYWN5LXRydW5rCiszMzMzMiA5NmVjYWFiNGNiYTY4MTM4YzVjNTc4OTA1ZTk3NTYxYTlkMWU4Y2MwIGxlZ2FjeS10cnVuaworMzMzMzMgYmU5OWY1OTcwNjg4OTBjYmZjZTI3YzAzZTkyZDc0Y2UwZDQ1NjA0MCByZWxlYXNlMjItbWFpbnQKKzMzMzM0IDY2ZGMwNTAxMDQ3ZDRjMjYwOTdhYzY2YmJjODk1YTU4ZTA0Y2VkMTkgbGVnYWN5LXRydW5rCiszMzMzNSA0ZmY4M2MwYjQ1ZTkyNTIyYjE4Y2Q1OWZkNTAyMjIxNTc3NzVmZDg4IGxlZ2FjeS10cnVuaworMzMzMzYgNTEzOTdlZGQyYmQ0ZDVkMzZhODU3MzI1OTgyM2FjNTU3OGVjZWIxMyBsZWdhY3ktdHJ1bmsKKzMzMzM3IGYwODExNDdjMGM4YWZhYjU0ODRkZDM4Y2U3N2Y1NThhNjhiMjVjZTUgbGVnYWN5LXRydW5rCiszMzMzOCAyNjkyYjFjOTJlOGQ5MWEzNjJjNTIwOWMyZTQxN2Y5MzIzMjUwNzQzIGxlZ2FjeS10cnVuaworMzMzMzkgMDUyYmZjYmFiYjdiOWQ5MmYxYWM5NmNlMzVmMmQ3YWI3ZjY0ZDc5NSBsZWdhY3ktdHJ1bmsKKzMzMzQwIDM2NDAyN2E4MTViOGNmMjUzMWUyNWMyOTE4NzUxMTRkOWFhYjMxYmIgbGVnYWN5LXRydW5rCiszMzM0MSAyODBmYmU1ZjRlMTZlY2M2Y2ViNjUzYmVkYTU1Y2ZmYmJkMjY3ZGY2IGxlZ2FjeS10cnVuaworMzMzNDIgZDBmMTU5NzdmMzdmNDc1MmM1YTg3NjFjNDY5OTY2YjNkMmE5MzgwYiBsZWdhY3ktdHJ1bmsKKzMzMzQzIDRlMWE0N2Y1MjA0Y2JlNDE5ODY1NGUzMzUxNTUyYzY4YTkwYWIzMGEgbGVnYWN5LXRydW5rCiszMzM0NCBjMTQ5ZGQ0Y2ZkNjZkZjFhZjFhNzkzMzAxMThkYmFhZDk4Yjk1NjE4IGxlZ2FjeS10cnVuaworMzMzNDUgOTIwNzc3NjQwZDI4OThkNzcwZDk3Y2M3ZmZhYmYzMzgxM2M4YjEzOSBsZWdhY3ktdHJ1bmsKKzMzMzQ2IGQzODgwYzIzNzYyN2ZhYzVjNTdlNGQ1Nzc0YmFkODAxZjBiOGViOWUgbGVnYWN5LXRydW5rCiszMzM0NyA2ZDllZDU0YTQ4MjE5MGM3MzUyYmMwZDFjZTE5NjAzM2JiZjUzY2E4IGxlZ2FjeS10cnVuaworMzMzNDggZWIwYjY3ZTNjMDRlYzU2N2EyOWE3ZTc0MTU3MTQ3NzhhM2Q5ZTlhYiBsZWdhY3ktdHJ1bmsKKzMzMzQ5IDM3MTA5MmNlNWMyYmMzM2NkNWY4MzA5N2I4Yzk0ZGYzZDI3ZmQ0MzQgbGVnYWN5LXRydW5rCiszMzM1MCBjNWJiMzFlNDVjNjY4NzZiMDA4NDU2MzM4YTViMTc1MjE5NWU0MDFlIGxlZ2FjeS10cnVuaworMzMzNTEgOWZlNjdmN2YzNDU5YWI1Njc5OGE1YmVhN2U0YjdhMGExYzc5ZDU4MSBsZWdhY3ktdHJ1bmsKKzMzMzUyIDdhMjc2NmM5YTdiNThjODc2OGYzYjQ5Mjk3NzQxODAxYTc0MTU5ODYgcjIzYjItYnJhbmNoCiszMzM1NCBmNGUyZTVhNWVjNjIyYjExN2I4YjZjOGIxNjk0NzA4Nzc2NmE3NTNhIGxlZ2FjeS10cnVuaworMzMzNTUgMjViOWZkNmQ4ZTMwMGI0MDQ1NTI5NWFiMWY2Y2Q4NDkwYzMxYTViMyByMjNiMi1icmFuY2gKKzMzMzU2IDcyZGNjNjNmNGRlYTZiNmYwZTFmNTU1ZDZmYjMyZGYxYmE1OGM0OTcgbGVnYWN5LXRydW5rCiszMzM1NyA4NDJkOWUzMGRiOWMzNzI2ZjA4YzQzOWEwYjdjNDY2ZDdlMTU2NmY2IHIyM2IyLWJyYW5jaAorMzMzNTggZWY3YTFkMjg1NzcxNDk0N2I2NTQzYjZiMjU1ZGZkN2JiYmM4ZGU1MiByMjNiMi1icmFuY2gKKzMzMzU5IGY0ZjExZWQzYWU0NDA5ZTc2YmZkNjIwNGVhZmYxMmI5ZTM5NTQ4NDUgcjIzYjItYnJhbmNoCiszMzM1OSBkYzFiMWM3YTZiOWU2NGY3YTIxMWVhOWU4YTdkYTQ4M2MyYmJhMTY3IHIyM2IyLWJyYW5jaAorMzMzNjEgNTM3YzhiMWFlZjdmYWM4ODY2ZTZkYmJiZTQzZGNiMjczMzZmNDJkMiBsZWdhY3ktdHJ1bmsKKzMzMzYyIGM0ZjlmZjI5MTIyOWJjODg0NmIxNWM2NjQyNjM5NGRiNDVkMmQxOWMgbGVnYWN5LXRydW5rCiszMzM2MyBkNzE2NGZiZWM3Y2UxNDAzOTFiYmE2OGVmYzAyODk2MzJlMDU5N2JmIGxlZ2FjeS10cnVuaworMzMzNjQgMjZiYTcxYWE1YjIxNTU1NmE3M2Y1NmI1YWZjNmJlN2FiOGIxZDg1OSBsZWdhY3ktdHJ1bmsKKzMzMzY1IGQwZGM5NTY0NjdiZjFiNmNjNmY5NGIwZTA5MGE2YThiMTQ0N2U5MzIgbGVnYWN5LXRydW5rCiszMzM2NiAzZWQyYzlhNzY5NjU2ODMzNTJlZWVkMTY2ZmU2MGYxMmY5NTM4MjlkIGxlZ2FjeS10cnVuaworMzMzNjcgMWQ3NjM4NjJkMWExZDcwMmQ5MDEzNjJkNzlkN2YxMGM3NzFlYmRjOSBsZWdhY3ktdHJ1bmsKKzMzMzY4IGYxYzI3OWQ3MDBhNmQ2ZjBjZmU3NjEzOGYzNDYwNjk5MGMyZWY4YzQgbGVnYWN5LXRydW5rCiszMzM2OSA4ZGJjNGVjNTcyMGRiZDVmM2Q5OWM1YTU2NDZiYWNmYzRiNzdlNjBmIGxlZ2FjeS10cnVuaworMzMzNzAgNjQ4M2VlYWVhZDgyYzBlYmNmZTI2ZGI1NjI0OGQ3NDAzNzA1NDM1MCBsZWdhY3ktdHJ1bmsKKzMzMzcxIDdiNmZhN2JiMjRmMDY0Njg0ZjM4MDUzMGQ1NDQ2ZWM3YmQ0NDUxOGEgbGVnYWN5LXRydW5rCiszMzM3MiA4ZmYwNDBlOWQ1NjY5NTEyYTJjN2UyOTc3NWYxZDk3YWM0YjUxMDJmIHJlbGVhc2UyMi1tYWludAorMzMzNzMgZDY3NzQyNGM5Y2E3MTA1OTMxNzI0YTI3ZTc3NzNlNjAzNzEwOWE3MyBsZWdhY3ktdHJ1bmsKKzMzMzc0IDg5MWU1NTAyZWM5ZTNiMTE4ZGI4MjJlZTY4MWJkMzgwZWEyYjMxMTcgbGVnYWN5LXRydW5rCiszMzM3NSAxNTM2OTQxYjU0N2YwNmQzYzhiMjdlN2RlODcxYmM1Zjk2OGJmNWE0IGxlZ2FjeS10cnVuaworMzMzNzYgYTRmZWFkMGUyNGY4YWVmY2JiOTQ0N2MxZDNmZTE5Y2Q3OWZmMThkZCBsZWdhY3ktdHJ1bmsKKzMzMzc3IDc2MmUyYTI5N2FiOTdhMjFiZDdlNWI2MGRlZDczYzA4NTBjMTk0MDQgbGVnYWN5LXRydW5rCiszMzM3OCBlMzgxNjRhYTViZTUxM2I3ZGI4YjE4Y2I3MzJlZmMxYmI3MzY5M2EzIGxlZ2FjeS10cnVuaworMzMzNzkgMWYzNTQ3ZDQ5MzlmZGM4NmU3MmE4MjhlMjUzYjY1MWE5ZGZhNjM5NiByZWxlYXNlMjItbWFpbnQKKzMzMzgwIDRkMjY1NDdlYmZjMzg4NGM2MzRiMmM5N2E0YzU3ZGE4OWY1ODdhY2EgbGVnYWN5LXRydW5rCiszMzM4MSBkOGQxOTc1NTFhMWVkYmVlZmVhZTJkOGU1YTQzM2YyMTM4NDhiMDIxIGFzdC1icmFuY2gKKzMzMzgyIGI3NTI4ZGFlNzY1NjdiMWY1ZjExNmZhNjlkZjYyMTA2NmEzODQyMDMgYXN0LWJyYW5jaAorMzMzODMgNTgxMzJjODEzZDdiZTk0NWVhNzZkOGFmOGE3ZTg5MjE4Y2I1MThmMyBsZWdhY3ktdHJ1bmsKKzMzMzg0IDhlZDJlZDc3ODY5NDE2NTJlMjhjNDcxNTg1ZjM4ZDhiNTg4ZTNmZTAgbGVnYWN5LXRydW5rCiszMzM4NSAyOTJlODQ0NjZlNzgxOTVkNGY1NjM3YzczZmIyZjVlMzc0MzU3ZmE3IGxlZ2FjeS10cnVuaworMzMzODYgYmYwNjM0Y2MwZjE3NTA4ZmU4Y2M3YmVjNzlkZmE5ODkzZjBiZTNjNSBsZWdhY3ktdHJ1bmsKKzMzMzg3IGU5NTMxZWU1ZjE4ODlmOThkMTU0MjI4YWIxYmUyZWZjYThjZTA1YWEgbGVnYWN5LXRydW5rCiszMzM4OCA5ZDMzZGQyY2NmZTZhNmU5NzZmZjExZTQzNjVlZTUxNDU3YzU5NGFiIGxlZ2FjeS10cnVuaworMzMzODkgMmE1ZTZjZTNmM2ExNTc1MjBhNWM0MGIwNTA2Mjg1ZTMxMmI0NTg4ZSBsZWdhY3ktdHJ1bmsKKzMzMzkwIDcyNGYyZWQ3OWRhOWIzZDM2ZGJlNDZlODkzNTE0M2Q4ODQ2YTIxMzcgbGVnYWN5LXRydW5rCiszMzM5MSBmYTRjZjg3OGM1Mzg0NDhjODgwNjY5YmQyOTVmYzE4Yjk5OGQ3YzhmIGxlZ2FjeS10cnVuaworMzMzOTIgMDUyZmU5NjY4NGVhYjZkODZkOTYyZjU0N2Q4OWU5OWIzMWRjYjI0ZSBsZWdhY3ktdHJ1bmsKKzMzMzkzIDA5ZTQyZjc5ZjgzMGJkZjI0OWQyODM4M2M0ZGM1YWJkNGNjMTJjOTUgcmVsZWFzZTIyLW1haW50CiszMzM5NCBhNDRkMjY3ZjAxNjI5ZmE0YzMzMDk0Mzg2MWYwNmRiNDIwM2I2MDFjIGxlZ2FjeS10cnVuaworMzMzOTUgY2RiMjE3YThlYjA0NDVkYzk4MzdiZGRjMjlkMmFjNjhiY2Y1M2IzZSBsZWdhY3ktdHJ1bmsKKzMzMzk2IDNiN2I0ZmQ1ZjdjYWQ1NmJlN2YwYWExYWQxZTUyOWMxNjRhZmEzMDEgbGVnYWN5LXRydW5rCiszMzM5NyA3ZDBhZjQ1NjFlZWQxZGUwNmQ1Mzc0MjdlMGY4ZDcxMDgyNWZjYzZiIGxlZ2FjeS10cnVuaworMzMzOTggODVlNTJlYzg1NjI5OTc2NzBjMTljNWE4ZDhlNjUxM2UxMTVmOWFjNiBsZWdhY3ktdHJ1bmsKKzMzMzk5IDk2MmY0NDNhZTFkOTFiMzg0NGY3YWM1YzRmMmQ1ZmUyOTdhZDA5ODcgbGVnYWN5LXRydW5rCiszMzQwMCA0YzkwYTYzMWQ2MzJlZGZlNGU2MTAwMWQ4OWQyYjM3NTY4NDg3ODEwIGxlZ2FjeS10cnVuaworMzM0MDEgMzcyMTZlMWM2NzQ3MjRlMGQwNWY0YWQwMzFiMzBlODQyMTUyMWNmNiBsZWdhY3ktdHJ1bmsKKzMzNDAyIDBlMTMxZTI5NDY2MjVlNzVjZjc4MmQwZmNkNjMxMjlhNTQ1YWVkNjEgcmVsZWFzZTIyLW1haW50CiszMzQwMyA0NTJlMzNhMDhkNTU3MGEwNmY4ZjNmOGU4ZGY5NGQ0ZTY2MTU4ZDZiIHJlbGVhc2UyMi1tYWludAorMzM0MDQgMTI0N2Y4NGFhNmE2YzAzYzkxNTg1YjQwZTU4YTE1ZjEzNjcyZTEzOCBsZWdhY3ktdHJ1bmsKKzMzNDA1IDM5YmU1YjI2Mjc5MmM5ODAwZGRkZmMxZjU4MmRjNDY5ZTI3Y2JlYWUgcmVsZWFzZTIyLW1haW50CiszMzQwNiBmNDMyOTZjYmM5ODUwMTM0ZTRhYmZjMTBlNDAwNWU3NjZhZjFlN2Q5IGxlZ2FjeS10cnVuaworMzM0MDcgZTg1MGNjNTFjMjhmZDg4ZjdmNWY5NDQ2YTJlMDgwYTM5MDc4ODAyNiBsZWdhY3ktdHJ1bmsKKzMzNDA4IDY1ZTUyYzI0NzVjZTUxMzU5NGVkOWJiNmNjNDVmNzJkNzhmNGFkNWEgbGVnYWN5LXRydW5rCiszMzQwOSBhNWU3MzM2YzAwOGQzOGFkYjg5ZTIxN2RkN2JhMTQyMzBmYTk0NDRmIGxlZ2FjeS10cnVuaworMzM0MTAgZDVmMjdlNjdlMWFhZThjY2NjZTYxOTE5MThiYzZmYWFlYWUyM2I1ZCBsZWdhY3ktdHJ1bmsKKzMzNDExIDNhZDg5OGI4ZjgxM2FjNTVmMTUzMWI4NGYwZTg0NzFjOGZhNTQ5ZmYgbGVnYWN5LXRydW5rCiszMzQxMiA0YzllZjJhNjI4NjRkNWFiODkxZmE3NjRmOGI3ZTYwMzI3M2VlNDVlIGxlZ2FjeS10cnVuaworMzM0MTMgOGNhOWNlMzZhMjA2ZmZkMWE4NDNiNzRmOGQwODBkYjQ4NGYxZTMwNSBsZWdhY3ktdHJ1bmsKKzMzNDE0IDY4ODM1YmYxMDFlY2IxM2NjOTU3NGVmY2Q4OGQ5OTZlNmRmYzFiMDIgbGVnYWN5LXRydW5rCiszMzQxNSBiOWM0MGZkYTYwOWRiZjc2NmJjYmNlZDA4Y2M2ZDM5NGNkNjk5MTBhIGxlZ2FjeS10cnVuaworMzM0MTYgNGY5MjkzY2EyZGU2MTJiMDM1MWE1OWZhNzJiYTg3YzdiYjdmMmQ0ZiBsZWdhY3ktdHJ1bmsKKzMzNDE3IDMyZjk2YmFjMjExM2NmMWQ2OGJmYTQwYzg1MTAzYjNjZGM4YmEyNjAgbGVnYWN5LXRydW5rCiszMzQxOCA2MWZiOTk2ZWJhNmUwZWIwMGI1OTNiYTJiMzBmMmVlMzg1YjEyZjhkIGxlZ2FjeS10cnVuaworMzM0MTkgZWI4MjhjNjRmY2M3YmFlY2EwMDdlZmZlOGRmZjkyNDRjMTY2ODM2MyBsZWdhY3ktdHJ1bmsKKzMzNDIwIDVhZjg5MDM3Y2ViYTA4MTVmNzA5ZWQzYTMwYTU3NzEyMzVmYjFlNjQgbGVnYWN5LXRydW5rCiszMzQyMSBhYzlhMWYwYTMzZGM4ZWU3YTgwYzk1ZjczNDE2M2FmODVjNzI1MzkyIGxlZ2FjeS10cnVuaworMzM0MjIgYjg2NDQ2ZjAzNTBmZjAxOGQ4NzgyMGIxMTAyMjcyZDg0MTI4NmMyMiBsZWdhY3ktdHJ1bmsKKzMzNDIzIGI1ODIxZTE3NjQ1MzgwMTJiNTExODk1NmJjOWNkNzRjZTlmYzE2ZGIgbGVnYWN5LXRydW5rCiszMzQyNCA5YTQ0MmY0YTY0NDNkZDFkNjE0NTJiOGI5MmVjMzIyZmM2NTY2NTNhIGxlZ2FjeS10cnVuaworMzM0MjUgYjQ0ZGVlZWM1YzVlYzhmYzJiMDcyM2NlZTk3YzNiMDY4YTM1NmM5NCBsZWdhY3ktdHJ1bmsKKzMzNDI2IDA3NWIyOWFkOTdjMzIxZDU3ZDYzNTdiMDJkNzFmNjQxNTY5MjQyNTEgbGVnYWN5LXRydW5rCiszMzQyNyA1OWRhNWI1N2M2MWJhY2QyMjllZDdjNTFjNTQ5YjI0NmNlZTc0MDZjIGxlZ2FjeS10cnVuaworMzM0MjggM2MxZjc4MzQwYjY1ZTg2MmYwMDYzZWI4MmNiNzE1MWIwM2Q2MTZlNSBsZWdhY3ktdHJ1bmsKKzMzNDI5IGI0OTNhN2U3NWQ5NzdmYTJhMmE0M2NiMDFlZGUzNTZlOTBlNzUxMjIgbGVnYWN5LXRydW5rCiszMzQzMCAwNTkxZmQ5NTZiOWQyODU3YmIyMjFkZjQwZWM0YWYyY2MzMGFlMTgyIGxlZ2FjeS10cnVuaworMzM0MzEgNGVjODgwYzUzZTJhMzA3ZGUwYzE2ZGNiNGNmNTU5OGQzNjg5Y2RjOSBsZWdhY3ktdHJ1bmsKKzMzNDMyIDllYjZkY2VkMTZlNmJlMDc3NjU4ODU3YzA0MGIxZWRjY2RkNWNhY2EgbGVnYWN5LXRydW5rCiszMzQzMyA3OGM1MTA5ZmZhZGEwNjMxOWI3OTA5MzM3MjJmYWU2MGU0ZmE1NDBlIGxlZ2FjeS10cnVuaworMzM0MzQgMDA1NzY1YTU2ZWMzOWIyMjYwMmE2M2YxODg3MjY0ODBkNzNhOWYwMSBsZWdhY3ktdHJ1bmsKKzMzNDM1IGI4NGNjM2M3ODA4ZjgyMzk3ZjlhN2E5OWM0ZTk5MzVlNDQwOTliYTIgcmVsZWFzZTIyLW1haW50CiszMzQzNiBmZTVlYjE3ODAwZjljMzFiNDdkNDU1YmUzZGNlNjIyYzEwOTc0NDZlIGxlZ2FjeS10cnVuaworMzM0MzcgZTllNTgzMmQ3MDZmZjFhMDkzMDg1MDFkMmNkMTEwMzNmYTRlZGYyZCBsZWdhY3ktdHJ1bmsKKzMzNDM4IDdhNDc4ZDEzZjI3ZGEzMzY5YzZlOWI2ZjY2ZTY0OTcxYzRiMmE3YTMgbGVnYWN5LXRydW5rCiszMzQzOSA3NzcwYjc4ODEzNDZkMmU1ZmYyNzc1OWNkMDE2YjE2NWY5OTgzZmIzIGxlZ2FjeS10cnVuaworMzM0NDAgZWRhNWQwMTVlMTFjMTg2Mzc3OGYzOGM5ZDgyMjM1MmMzYzUxNjYzYyBsZWdhY3ktdHJ1bmsKKzMzNDQxIDI4Y2ZhNTQ2ZjFlYzc2NGRlMjMxMDY2NjdlYmM4ZTUyYWUzYWRlMGIgbGVnYWN5LXRydW5rCiszMzQ0MiAwNzAzNDVhZDhkNzFjY2JhYWQyN2VhYjRlODg4YjdjNTM0NTJlZjE1IGxlZ2FjeS10cnVuaworMzM0NDMgMzJlZmU1NGQwZThmZmQxOGYwMzcxZDRmMGIxYmE0ZDM4YTIxZjkyZSBsZWdhY3ktdHJ1bmsKKzMzNDQ0IGRkYzI0NzQwNGRhYjNlZjBmOTU2NmYxYWNlYTNjMWU2MjE3YmZkY2EgbGVnYWN5LXRydW5rCiszMzQ0NSA4ZTI3ZTVjZGU1OWFlZDE5M2Q3ODEzYjM3NDZhZDc3YWM1ZjU1NjA0IHJlbGVhc2UyMi1tYWludAorMzM0NDYgOTM5NjEzNDY4NGNmNTljOTM0MGZhZWUxZmFiMmIyMmNmMzcyYWIzNiBsZWdhY3ktdHJ1bmsKKzMzNDQ3IGU2ZjlmNmI1ZDhkN2U3MTAxM2JiZTY3ZTkxYTM0NTI1Y2FiODZmYWIgbGVnYWN5LXRydW5rCiszMzQ0OCBmNzMzYmFjNzhmODdlNGVmZTg1NDMwMDEyMzRiMTRmYmM2M2ZkNzkxIHJlbGVhc2UyMi1tYWludAorMzM0NDkgNzA1NmNjNWM4MTY3ZmMyZTRhMzMzZmQ4ZGM0MzZmZTQyM2MwZGU2YSBsZWdhY3ktdHJ1bmsKKzMzNDUwIGNlOTg4Mzk0Yzc1NDc4ZmRlMWE3YjdlOTM5NWI2M2UxODE2NjM3NzggbGVnYWN5LXRydW5rCiszMzQ1MSAyZmNkZTMyYThhNTc5OWU1ODQzODc2YjBlOTc4ZDlkY2FmNDc0N2FkIGxlZ2FjeS10cnVuaworMzM0NTIgZGM2YTQ2NzMxODYwNmY5ODU4NmRhOTc3NTlmYzE5OWU2ZjY4YzBkNiByZWxlYXNlMjItbWFpbnQKKzMzNDUzIGQ3YWZjZGM2OWVkNDkxY2NiNTc1ZTZiNjFhNzhhYTI5YjgxMzRhYjYgbGVnYWN5LXRydW5rCiszMzQ1NCBjNzNmYWY1ZGUxYmQzZDE0M2JmYWRhYzUyNmNlYmNlOTBiNDg1ZDdiIGxlZ2FjeS10cnVuaworMzM0NTUgNDY2YTU0MGNjMjI5ZmFiMjk4NGNhNDc5OWY3YzU3YzhlOTc2NTA0ZCBsZWdhY3ktdHJ1bmsKKzMzNDU2IDRmYzU2Y2FlNGViOGMxNjVkYzIwMjc0NzMxZGNiYjFkOGU3NTgzNTcgbGVnYWN5LXRydW5rCiszMzQ1NyAzMWQ5MjM1NGY3MmYwOWRlYjljNjdmMDlkMTgxNjY2NjM2ODZiOWFlIGxlZ2FjeS10cnVuaworMzM0NTggYzhmYjRhZjk2ZGUwZTViZWUyMGQwOWM1MDE4ODAyNjNhZmFmYWRjZSBsZWdhY3ktdHJ1bmsKKzMzNDU5IDRiYWZmZTE0Yzg4NzRhMTJkOTNhZjI4OWUwMjlhY2VhZDc3Mzg4OGEgbGVnYWN5LXRydW5rCiszMzQ2MCAyZTg0ZmRiNGZlMzBkN2I5ZmQ4NGMzMmM4YjU1NDMwZWM2YjcyOWEyIGFzdC1icmFuY2gKKzMzNDYxIDkwMzVmZTc2ODY4OWQ4OWUyYTA1YWQwNzdmNzM4YjQ3YjFjMWRlZDcgbGVnYWN5LXRydW5rCiszMzQ2MiBkZWZhMWQ4MjViMDhjZDYyNGJmMGIxZmQ5NmFmZGRjZTYwOWY1NDIzIGxlZ2FjeS10cnVuaworMzM0NjMgMTAzN2ZlYWNiNTRmYzk5OGFjODcyNmNjMTg2MTEwODRhY2MzOWZkZiBsZWdhY3ktdHJ1bmsKKzMzNDY0IGM3MDA2M2MzYWVlYjhkZjc0NWZhMmVkZjc4M2FlNGI1NGJlZmQ0OWIgbGVnYWN5LXRydW5rCiszMzQ2NSBjZmFlZGRlNTBiZDY0MzI2OGVjN2NmMGJhMGZlNThjNzFlZGJmMmFhIGxlZ2FjeS10cnVuaworMzM0NjcgZTZhNzhkZDQyNWM4ZTBhYWY5MDM3MzA5MTY1NTI5M2JkMjllMGVkNiBsZWdhY3ktdHJ1bmsKKzMzNDY4IDk0ZTVkMWI4ZjY5Njk4OTc3N2RhNWVlMmNmN2UwODFmYmE1N2E4MDMgbGVnYWN5LXRydW5rCiszMzQ2OSBkN2UxYTFiZDQ4ODBiNzYxYTcwMWJmNTZmODcyNWEyOTRhYTQyOTEzIGxlZ2FjeS10cnVuaworMzM0NzAgYzQ0OTY2M2ZhMjdkZTM5YmE3NmZhODk3ODVjODE0ZWM5ODNjNjJjOCBsZWdhY3ktdHJ1bmsKKzMzNDcxIGJiYzM2ZTBlMTBhMTU3OTI5MDgxZDEzOTQ3MjFjZDdjOTMyN2U3MGIgbGVnYWN5LXRydW5rCiszMzQ3MiA1N2I5M2M5NDgzMGEzNGUyMGFiZjE3MGFhZDFiZGY2Y2Y2ODBiNWMxIGxlZ2FjeS10cnVuaworMzM0NzMgZTViOTllNjA1OTI2MTVkMmNkMDEyMDAwN2M5N2Q1NmZiNGUyOTk4NCBsZWdhY3ktdHJ1bmsKKzMzNDc0IDEyNzJmNzk1NDdiYTkxNjExOWQ4NmM2OTE2NTI1NjJhYTczNGUwYWYgbGVnYWN5LXRydW5rCiszMzQ3NSBiYWI4OWU0MDZmMzBlMjQ1YjlkN2EyOTE0MmQ0Zjc3NTU2NDQ1ZGI4IGxlZ2FjeS10cnVuaworMzM0NzYgZDI4M2IxNzMzYzBkN2E1NzdjZDZmMmI5YjdiNGNmYjBmNDdkMDNhZSBsZWdhY3ktdHJ1bmsKKzMzNDc3IGFjMGZjMDg5M2FhY2YzMzc1MzlkYzc5NzY0Zjk3ZmYxNmZlNmVhNTUgbGVnYWN5LXRydW5rCiszMzQ3OCAwZGYxMWIyYmZjYTUxOGFhNmE1ZmY5ZmNiZWRjMTM5Mzg5NTdiNzBkIGxlZ2FjeS10cnVuaworMzM0NzkgMzI4MDM1NTMyOWRkMzliYjQ5MjAwNDU2OTc1NTI4MDFlZTFiMjVlNyBsZWdhY3ktdHJ1bmsKKzMzNDgwIDViMjFjNzAwMzk3NDVlNjQ5MjIzNmNiNmQwMGI5OTU5MDI1Y2I1YjcgbGVnYWN5LXRydW5rCiszMzQ4MSBjOWM2ZTJjOWVjOTc1Yzg1YjQ4ZTQxZjA2MTBmY2Y1ZDgzNTNmZDNlIGxlZ2FjeS10cnVuaworMzM0ODIgMmIxN2FkNjY4NjY2ZTVlOGNhNjBhODMyMWMwMDZjNGI4YTUyYzNjOCBsZWdhY3ktdHJ1bmsKKzMzNDgzIDk5MTZiNTkyNjFkNzYzMzVhZGQ4YWU4MzM2ZmMzZTIxMTUwZDgxNTcgbGVnYWN5LXRydW5rCiszMzQ4NCBlMDJhNWQxODQ5ZjhkODdjYmI3ODE5NWZmZGY3OGQwNzI4NzI5YzQyIGxlZ2FjeS10cnVuaworMzM0ODUgNjQ0M2EwZmVlN2UxMDE0MzAzYzJiMDBhZGIyYjI0MGUzMjQzMmU3MCBsZWdhY3ktdHJ1bmsKKzMzNDg2IDNiNDFjNjMzZDc2OTZiOTZmNTQ2YTI4OTRkMTVmZmYzZWI5ZDBiNDUgbGVnYWN5LXRydW5rCiszMzQ4NyA3YmUyNGNjNmMyOGQ3YmE1NWM4YjNjZjBjYzQwMTA1NWEyNjIzNjg0IGxlZ2FjeS10cnVuaworMzM0ODggY2IzY2U3Y2VjMjYxMmYxOTNmNmViZjhiOGMwNDM3ODRkZDZkMzRjNCBsZWdhY3ktdHJ1bmsKKzMzNDg5IDQ4MzdiZjIxNmFlNWY1MGQ3MDBlMzkyOTE3YTNjNGQ0YTY3NWY4NWQgbGVnYWN5LXRydW5rCiszMzQ5MCBlZDQzMTU1YjFkM2M5MDc5NjU1ZThhZGZlMzY2NTg5NDEzYTExMzU3IGxlZ2FjeS10cnVuaworMzM0OTEgZDRmZmIwNDkwYWMyN2RkNGIxOWUyZjQzZTA0Yjk3ZmY5MWIzYTkxZSBsZWdhY3ktdHJ1bmsKKzMzNDkyIDA3MTUwMTgyNGJiZDhkOTMwNzQ1NWU3ODFjZjgxMzM0NzNlMDQwZTQgcmVsZWFzZTIyLW1haW50CiszMzQ5MyA4NTljYmQ3YzliNDgxNDBmMjU5N2Q4MmY3MDA3NmRhMDdiNDJiNmJhIGxlZ2FjeS10cnVuaworMzM0OTQgMWRjMTU4NjUyZTViMzczYTQyZmZlNWE2NjYxOGVjODA3MDk5ZWY0YiBsZWdhY3ktdHJ1bmsKKzMzNDk1IGUxYTZiZjQ1NjVjZGU0ZTQ3ZmM2YjIxNjFmZDcwNjc1MmZhMjM2ZjAgbGVnYWN5LXRydW5rCiszMzQ5NiA0NTY5MTJhZGE2OWZmOTFkZmNkMWJmOWM2YWZiNTI1Yjk4NTA1YzQwIGxlZ2FjeS10cnVuaworMzM0OTcgYmE1ZjBiODA4MTkyN2I0NjIyODkwZjQ0OTZiNmQ3MWM4OWM1NDE1OCBsZWdhY3ktdHJ1bmsKKzMzNDk4IDM3YmMyM2M2Y2Y2YzkyMjEyZTRiZmE1ZjRkNWJiYjVlNjEzYWY1Y2UgcmVsZWFzZTIyLW1haW50CiszMzQ5OSBhMzcxMDZhYzdjOGNjMDE3ZTkwZjA5MWIyODg5NTM2YzUzNTMyMmVkIGxlZ2FjeS10cnVuaworMzM1MDAgZTZlZGIwNDBhNzdkNGFjZTk4MTE2MmYyNDg4NWJhNDZlZTQwZDI2NCByZWxlYXNlMjItbWFpbnQKKzMzNTAxIDJlYzJmNjIwODdjYjhlYmJjMjI0ZGJkN2ZiOWM3MzM1Zjg2ZTIwNGIgbGVnYWN5LXRydW5rCiszMzUwMiA1ZTgxZDkyYmY2N2RiMDA2ZjRhNjY2N2ZkMzY2ODBkY2U3ZTE1OGJkIGxlZ2FjeS10cnVuaworMzM1MDMgMDlkYTllNTY1NTVkODBjYzJlNThhMTMyNzYwNTZhODc1ZDJkM2QxOSBsZWdhY3ktdHJ1bmsKKzMzNTA0IDQwMjlhNzI2ZmFhNjU1MDM2ODJmZThmYmYyYzI1ZGZlOTFlMWU5MTYgbGVnYWN5LXRydW5rCiszMzUwNSA5MmYxZWVhZWI0MWQ3NTE5MzI3MzFkMWU1OWZmYzQyZWU4NzgwNWRkIGxlZ2FjeS10cnVuaworMzM1MDYgYjk4MjdjMDU0NjBmMzhmOGMxOWEyMjhkNjQwMmJjY2YyZWI0OThjZSBsZWdhY3ktdHJ1bmsKKzMzNTA3IGQ0NWQzMTdmZGEzNTFhZGI1NDZlNGFlNzFiYmFhZWUwYmI1ZGM3YTIgbGVnYWN5LXRydW5rCiszMzUwOCA3NzhiMjE1MjBkYjhiOTRlYWYxOWMyNzE5MWZmMWZhZGE5ZmI1ZGVkIGxlZ2FjeS10cnVuaworMzM1MDkgOGQ0NWE0Y2VhOTM0MzdlN2M1NDE0NGRiMWJhMDhkNGQyZTFkN2JmMyBsZWdhY3ktdHJ1bmsKKzMzNTEwIGU1N2E5YmJlZWM1YjI3N2NkZjFkMDI2YzE0Y2NlODQxOThlYjMzYzIgbGVnYWN5LXRydW5rCiszMzUxMSA2NDE5NGU3NzViMGJjMjhjMjc1MGUwNjdhYTdlZjQ0ZTYwZTY2MjVhIGxlZ2FjeS10cnVuaworMzM1MTIgZmU3OWE1YWIzOTJiODU5MDVhODM4NGIzYWQ4ZDAyYmI5ZDE2ZGQxZiBsZWdhY3ktdHJ1bmsKKzMzNTEzIDJkNWJlY2Q5MDBlZWI1NjY2YTI4NzBmMzlkMWY5NzE0ODQ2ZGU0YTMgcmVsZWFzZTIyLW1haW50CiszMzUxNCAwNmNjYTMyN2JhY2RmYWI3NTUyYjEwYjNiZDcwZjllMDJjYWNjNzc3IGxlZ2FjeS10cnVuaworMzM1MTUgZGQ4Y2EwODNlYTY2Nzg4MDI0MTc1NTlkMTdhMzljMmZhM2ExNzA1ZiBsZWdhY3ktdHJ1bmsKKzMzNTE2IDAxNGNjMzYyYWE5MTIzNjBhYmE2Yzk2OTY3YzYzN2Q3ZGJhMTE0YjUgbGVnYWN5LXRydW5rCiszMzUxNyBlNjg2NzY1MjM2Nzc0YzUzYzU2Zjg4OTBlMjRkODVmOTE4NTIzY2RmIGxlZ2FjeS10cnVuaworMzM1MTggN2ZiYTMzZmYyMTM1OGEzMDViYzhmZDIwMTBhNmFhMmU5YmNjZWYxNSByZWxlYXNlMjItbWFpbnQKKzMzNTE5IGI4NWY4YmI1YzM3NTRjNjhhNzExNmUxZDNjMWQxNjFhYWU3ODQ3ZGIgcmVsZWFzZTIyLW1haW50CiszMzUyMCA1N2FkZjgyN2Q0YzdhZDY0NzQxY2I0MWY4YmM3YTVlNDI4ODY3OWEzIGxlZ2FjeS10cnVuaworMzM1MjEgMmJiNTIzYWQ5Yjc2NWI4OTZiZWUzNmZjN2RmOTgwMjEzNzI5OGUyZCBsZWdhY3ktdHJ1bmsKKzMzNTIyIDcwNTJjM2U1YWYwMjZmYmZhZWJmYzcyNTNkYTg5ZGRlNTM2MTc2YmIgbGVnYWN5LXRydW5rCiszMzUyMyA0MmU4MjYzZDM5YWM2NjFmNzU1YmY5MzgzM2U4OGI4Y2NjZmRjN2ViIGxlZ2FjeS10cnVuaworMzM1MjQgNDVkYzMzNDMzMzIzNTZkZDM5OGUxN2U5NDZkYmFlMWQxMjQwMjgzNyBsZWdhY3ktdHJ1bmsKKzMzNTI1IGNkYWIyNWQyZjg0MjkyZThiOWZkZmM1MGExNTc4YzFjODRiOTRjNDkgbGVnYWN5LXRydW5rCiszMzUyNiA4NDgzNTg0NmVlYWIxMTRkMTlkMzA4MzNjZjQ0MjFlMTI4YjE5OWRlIGxlZ2FjeS10cnVuaworMzM1MjcgOWM1N2ViNTMzN2I3MjE4MDRmNDg3MDE5OTg1YzAwZWM3ZTQ1NjIyYSBsZWdhY3ktdHJ1bmsKKzMzNTI4IDhlYjFjYWUxYTc3YmQ5NTdiYTYxZmYwOWI0MzAxZDc0MzFiOGNjYTkgbGVnYWN5LXRydW5rCiszMzUyOSA0MjFkODA1YzExZjMzZTMzMjQ5YjQ5NTU4OThhOTAxMTU4NGE2YzM3IGxlZ2FjeS10cnVuaworMzM1MzAgYmYwMGI1NmMxNGE5ODJlYjExZDQzNWI3OTgzYWIxZGRkNzczMTc5ZiBsZWdhY3ktdHJ1bmsKKzMzNTMxIDU3NzdjODM0ZjU1Y2U5MmM0YjU3ZWZjYjFmOGI4MmFlNzMyMzRhY2MgcmVsZWFzZTIyLW1haW50CiszMzUzMiA1NmMwMWM0NTA5MmMwOTI4MmQ0MmU1ZWFhM2ViYzUwMjcyZTY4ZTY2IGxlZ2FjeS10cnVuaworMzM1MzMgY2QwYmNhYTBiZDgxZmU0MDE1YjQxNWI5ZjE4MzhmZjBjOTZkYzU3NiBsZWdhY3ktdHJ1bmsKKzMzNTM0IDFiYWU3OGM4M2JlOTRiZWMyNjFiODgzMWFlOTEyMGJmMjE1OWIwOGUgbGVnYWN5LXRydW5rCiszMzUzNSAxYzNiODE1ODc2MGMzZDAyM2UxMDFkMmM3MWYxZmMxMDljOTc1MTY3IGxlZ2FjeS10cnVuaworMzM1MzYgZjMzOWYyOWIwNmNiYjc5MjUyNWRlZmRmOTM1MjEzN2ZhYjNkZmQyZCBsZWdhY3ktdHJ1bmsKKzMzNTM3IDk4YzU5YmJkZDhlYzQ3OTQyZjI5ZmZlN2NhYWQ2ZDdkM2Y5NjgyNDQgbGVnYWN5LXRydW5rCiszMzUzOCA4NGJjY2JlYWI1ZmFjNTgxMmYxODVmM2NlOWY3ZmY3ZWVmYzc0YWEzIGxlZ2FjeS10cnVuaworMzM1MzkgYjc2NjE1MmM3OTA0NWM1YzliODUzOWUzNDhjYWQ0NjkyODE5YzEwYyBsZWdhY3ktdHJ1bmsKKzMzNTQwIGI0NGViNTE5MzFkMGYxMzQ0NTk3NGIwOWMxYTJiNDM4OGFhOTk5YmIgcmVsZWFzZTIyLW1haW50CiszMzU0MSAxOTljZDc4ZDZkNzhkMzZhNmVmMGZiYTIzMmM3YmVhODNmNDE0YWRmIGxlZ2FjeS10cnVuaworMzM1NDIgNjA0ZDkzODIzZWMxZDAxMjg5NzAxMjVlZGQ4OTRkODgxM2JmYWY1ZSBsZWdhY3ktdHJ1bmsKKzMzNTQzIDM0NDJlN2NkYWNlODZlMzljNjU5ZDdkZWQ5ZTQ0NzllMzI4OTJkMDQgbGVnYWN5LXRydW5rCiszMzU0NCAwMzAyMjdkZTgwNTE4YWFjN2FlYTlkNTg1NDJjMDNkNWE3N2YxMjg0IGxlZ2FjeS10cnVuaworMzM1NDUgOTU0NzE3ZTZmZGI1MGI0NWRiODdkMWNlYjFlNDMxZjdjNTA0MjhmOCBsZWdhY3ktdHJ1bmsKKzMzNTQ2IDFhNDJiMTI4YzU4MTRhOGFmMzg5YmVjZDcwNWRmNWUyMTdkODZmNzAgbGVnYWN5LXRydW5rCiszMzU0NyBmZWUxNzc2ZTYxYzcwNTYxMTRhOTcwMzMzMmRiZGU3ZDZhNmFiNTVmIGxlZ2FjeS10cnVuaworMzM1NDggNDc1MDExODRiNTQzNWY3ZTA2MDEyYjBiMDE5NzY3Yjk2ODAwMmY0MCBsZWdhY3ktdHJ1bmsKKzMzNTQ5IDYyZjMwNjNhMWEwZjg3NmJiNzYyZjc5MTlkNTE0MWI3NjAwM2VmMzMgbGVnYWN5LXRydW5rCiszMzU1MCBhMGE3MjMxYzZmZTBlMzRmNGMzMDMwYjRhY2YxYmU2OWZmODc1MDM1IGxlZ2FjeS10cnVuaworMzM1NTEgNzJjYmM0MWNjYzJmMzgwZTM2NTJhYzc1MGY3N2VkZDE2MWZiMTEyNCBsZWdhY3ktdHJ1bmsKKzMzNTUyIDJjNTE5NGJhYTk5NDRmOWFjNWU0YjA0YzVkN2U3ZjliNjcyZGNlYTAgbGVnYWN5LXRydW5rCiszMzU1MyBlZDg3MDliMWEzZWZiMTNhN2NjNGY2NjQ3NWY4NjI4ZTY3NmM2ZmNlIGxlZ2FjeS10cnVuaworMzM1NTQgM2YyMTRiMzliNGRmOTU0OTdmNDExMzYxNjAxMDFjY2ViYTEzZGQ0YSBsZWdhY3ktdHJ1bmsKKzMzNTU1IDE5NTExYTQ5MGU3YzA1MTEzNTE1MDk3ZDNiYzFkZDI1MjQwYmM3YWEgbGVnYWN5LXRydW5rCiszMzU1NiA5MmE1ZmU1NzgzODAzOGZkYTBlNmY3OWZmOWRjNWRlMzBmZWY3YmNiIGxlZ2FjeS10cnVuaworMzM1NTcgZDM3ZDE1OTBlMWE3ZDFhMWY5MWQ2ZjM4Y2ZiOWRhMjg1ZmUwNWNiOCBsZWdhY3ktdHJ1bmsKKzMzNTU4IDg4YjkzZTA3YTFmODBhZjdjMjU4YjlmYTg5NTAyYTA3MjcyNzg1YjYgbGVnYWN5LXRydW5rCiszMzU1OSBmODlkNTQ1NTA1YzcxNTQ1NGJjODU5NWIxZmRmYzY5MGYyOTI5NzU2IGxlZ2FjeS10cnVuaworMzM1NjAgYjY4ZmI0YTQzZDBmZWNkYjk0ZGZlYTRmMzRmZDRhODQwYTc0Njg3OSBsZWdhY3ktdHJ1bmsKKzMzNTYxIDIyYmNhMjgyMzY4NTY4NjFiMGU5ZTJlYWU3MDZjZmZkZjgyNzk2YWIgbGVnYWN5LXRydW5rCiszMzU2MiA0ZTA1YzU1NTE0ZTFkNjMxNjFmMzU3ZTA0NzkyMWVkZWU5Mzc1OTdjIGxlZ2FjeS10cnVuaworMzM1NjMgZTJiNDAzMTI3NTdlZTExZmYwMmIyOWRhOTExYjAyYmRjMDY4OGNmNiBsZWdhY3ktdHJ1bmsKKzMzNTY0IGRhN2VhZTQ0ZjQ4N2I0YmNhMjk1YmM0ZDRkMGIzN2I1NmI1OThhMWMgbGVnYWN5LXRydW5rCiszMzU2NSA5Y2EyOTE4NjVmOWMxZjJhMDI3ZTJmZDU1OTUxZWMzNDZiNTQ4Yzc4IGxlZ2FjeS10cnVuaworMzM1NjYgNzllYzdlMzAyZDUzNTc3NmI2OWQwZjUwNmViODY5MmRjMTdiMTA3MiBsZWdhY3ktdHJ1bmsKKzMzNTY3IGU5ZGRkZmQyYTYyZjBjZWEyNWNjNzkyZTVlY2RjMzI1YjZhNmRkYjUgbGVnYWN5LXRydW5rCiszMzU2OCBhYzg0ZjE3OWJiODQxMzM5YzlhMmY4NmI1YzUyYmFmNjZjZGFlMDhkIGxlZ2FjeS10cnVuaworMzM1NjkgOTk0YjZiZTQ4ZTI4NzlhZjY4NjdmZDFmMmNiNzIwZDAzNjdmZjgxZiBsZWdhY3ktdHJ1bmsKKzMzNTcwIGI0N2E3Mjc0Y2U1YzE1ODM4YTVjNmIwNDliYjY1YTc3NjVjYzZiMTYgbGVnYWN5LXRydW5rCiszMzU3MSBkYmFlMDVjMjllOTM4NTQ0Yjk4NjJkYzczMjY3MzFlMjg4MzFiZWZjIGxlZ2FjeS10cnVuaworMzM1NzIgZDFhYTU3NTFmYmNmZGJhM2MxZmVhZDkwY2JiMWNlMzljMGJmMjgxMyBsZWdhY3ktdHJ1bmsKKzMzNTczIDQzNGI2Y2RhNGZhNWFmNzAxN2NiNmM1MDlhNTllZjc2Y2VhYmJiOTUgbGVnYWN5LXRydW5rCiszMzU3NCA5ZGVhYzFhYTQyMWRiNjlmYTU1ZTQzODdlZTY0ZWNhYzNmMmVkZmY2IGxlZ2FjeS10cnVuaworMzM1NzUgYTIzMTA2ZGZjOTRkM2ViZjZmZGMzN2Y2Y2M2M2UyODU0NDViNzAwZCBsZWdhY3ktdHJ1bmsKKzMzNTc2IDlmNjBjM2VlOTg1YTJhZTEwZmVkOWNiOTdkZjVjMTQ4YTA3ZWRmNGYgbGVnYWN5LXRydW5rCiszMzU3NyA4MGVkNGQ5N2YxYmFlYTBkZTk5NThkZjdhMWI5NmYxZGQ4OGM5NGI4IGxlZ2FjeS10cnVuaworMzM1NzggNzE2Mzk1YzE5NTg2ZTJhMTA2NjkyYzI1OTI3OGRhN2QxMWViMTQ2YyBsZWdhY3ktdHJ1bmsKKzMzNTc5IDhiMTU1ZTRhMTBhMjVkMmI4NzE2MTA3MGE3NGIxNWU4MzI1Y2JjYWIgbGVnYWN5LXRydW5rCiszMzU4MCAxZTJlMWM3OTMxNmUxMmZiZDVmYWM0MGJmMWEzN2NmMTY2MzZiNTdiIGxlZ2FjeS10cnVuaworMzM1ODEgNWE5NDRhYzg1MjVjMWY2MWQ1ZGFhM2ZlZWNjOTA1MDkxYmRiN2U4ZiBsZWdhY3ktdHJ1bmsKKzMzNTgyIDQ1MWI3ZTgzOTNmYzQxZWIxNDNmZWEyMzQ5ZjFkMzg0MjI1YzY1OTMgbGVnYWN5LXRydW5rCiszMzU4MyBkNTllNThiYWMzOTIzNzUwYjE0M2Q5MjQ1N2E5OTBjOTFiMDE5YjRhIGxlZ2FjeS10cnVuaworMzM1ODQgMGUyMjE1YjgyMjZkMmFlM2FiYTYzZjA3YTg2MmQxMWRiYjk4ZDlkNSBsZWdhY3ktdHJ1bmsKKzMzNTg1IDRlNjEzZGRmMmExYmQxNjU2YzRlZjc0ZGRiYjJhMTBjZDIzNTMwNjEgbGVnYWN5LXRydW5rCiszMzU4NiA0MTZkOTQ1OGVlOTdjYjNmMmUzYTFjMzA0MzYzODU0YzM5NTg5YjhhIGxlZ2FjeS10cnVuaworMzM1ODcgNTI3NjA3NTFjNjFlZTcyY2U5MGExZmUzOGM4OWIxMWI2MDBiZjMxYiBsZWdhY3ktdHJ1bmsKKzMzNTg4IGY3NzNiNTY4YjJlNzNkODI5ZWExOTJjMjEwMzU1OTI3YjI2MmY2YjYgbGVnYWN5LXRydW5rCiszMzU4OSBmY2Y2NjgwYjZhNmZiNzcxYzhiNTk4YWNhYzY4NTY3MTk5ZjNjYzk5IGxlZ2FjeS10cnVuaworMzM1OTAgZGY5ZWE3NDk0MDlhM2VlNDUzYzRmNzEzNDUwZDM3MzQ1MzNkMjUxMSBsZWdhY3ktdHJ1bmsKKzMzNTkxIDU2NGE0OWVlYTQxNGUxMDA5MzE2OTQ2YWVmYzI5MjQxNGRkYTBmNjggbGVnYWN5LXRydW5rCiszMzU5MiBlYzlmMTg2MTU0ODU2YTkwYWY1OTA0NGZiZWNhMjkwNzA4ZGMxMzk3IGxlZ2FjeS10cnVuaworMzM1OTMgN2IxNmNmNzBlYmQ4OWU0MjRkNWEyNDJjYmU5ZThjMzUyZjI4MmFhZiBsZWdhY3ktdHJ1bmsKKzMzNTk0IDBiMzQyMmI2MjExOTExOTZjMzNlNzZhNzZiZGMyOWI5OGY0OWEwYzIgbGVnYWN5LXRydW5rCiszMzU5NSAyYTQwY2EwNmEyMmM4OGQ5MmY3NzE1YmRjMDgyZjlhZjc4NDIzMDgwIGxlZ2FjeS10cnVuaworMzM1OTYgOTZiYWI3YzgyZTJjZmM5NmMxMDA2OTAzOTA0NDJiOGEwOWU2NjI4YSBsZWdhY3ktdHJ1bmsKKzMzNTk3IGM4NmIxMzU0YWM2ZjZmNzRkYTMwMGFjOGQ4YzUzY2YwNGU2OGRjZTQgbGVnYWN5LXRydW5rCiszMzU5OCAxYmMyNTU5MjI5ZGIxZGZmMzc5ZTY4NjYwMjBjMWU2ODUzZmZiZGUwIGxlZ2FjeS10cnVuaworMzM1OTkgN2ZkMjBhZTQ0MTQyZjBjOWRmMDVhZjAzMmQ3ZGYwNDljZTc1YmIwYyBsZWdhY3ktdHJ1bmsKKzMzNjAwIDhkZWMwZmIxNDI4NTRmMzZiNWQyMmNlYzI2MGNmMTczNDMzYmE4MzYgbGVnYWN5LXRydW5rCiszMzYwMSBhNzNjMjhkZWVmNmRmZmU3MzQ5MzYwNWZhZjBiNTc1YjJlMzcxZTJmIGxlZ2FjeS10cnVuaworMzM2MDIgODZjNDc2YTQyNWE3ZGM1MjczNmIyODhiNjNlOTg2ZmFjODQxMTcyMiBsZWdhY3ktdHJ1bmsKKzMzNjAzIDA4ZDI2MzZiOGU1ODQ0M2QxNzUwZjY3OGE4ZDFlYjY4OGQ0OGE1NDYgbGVnYWN5LXRydW5rCiszMzYwNCAyNTgwMGE3MjQwMTFmYjI1NDQ1NjNhMzU2YTZlODFhY2M4ZTZiMjQwIGxlZ2FjeS10cnVuaworMzM2MDUgY2ZhZDU0MjgzZTAwMDQ3NjQxMjQ0NTJkMDE4NDEyMDc2ZDY5NTE4MyBsZWdhY3ktdHJ1bmsKKzMzNjA2IDcyMmQ3YzdhNzdlMmI0N2YzYWE4OTU5ZDZjYTgyNzg2YjI5ZjU2ZjEgbGVnYWN5LXRydW5rCiszMzYwNyA2MGUzZDI5OWZjODY3OGY0NDI2MTY4MDA2NWVmMmI5ZWI5MTVkNWNhIGxlZ2FjeS10cnVuaworMzM2MDggYmI4Y2M3MjkxNWY1Njg5MmMzYjUzMTMzZGFmMDdhZjE5MTVjNmIyOSBsZWdhY3ktdHJ1bmsKKzMzNjA5IGVlN2UyMjNkYmNhY2YwNjljYjc3ZTUwYTU2ZDgzOTFhZGJmNzY3MTkgbGVnYWN5LXRydW5rCiszMzYxMCBiODQ2NDVjMzE5NWU0ODRkNjcyNmNhNWI5NzU5MTQ1YTY0N2QxNzU2IGxlZ2FjeS10cnVuaworMzM2MTEgNGQ0NDE3ZGY2M2Y0ZTgwOGJmMzIwOTUzYThkNGYzNWY3Njg2MDFhZCBsZWdhY3ktdHJ1bmsKKzMzNjEyIDAzMTUzZmQyZDNmMjE0YzFhN2EwMmMyMDc5MTQxMjBiY2U1NjRmZWEgcmVsZWFzZTIyLW1haW50CiszMzYxMyA2MjhkY2Y5MGJmOWUyZTIwMWQyMmMzNmRhYmY4NTZhNDkzYWI0OTczIGxlZ2FjeS10cnVuaworMzM2MTQgNDA3YzBkZWMyZjRhZGM5MmM2MWVhODI0NDA3NWE4Y2IxZTYwNzE2MCBsZWdhY3ktdHJ1bmsKKzMzNjE1IDI5YTYzYzVjZmJhZmI5NDQxNWIyZThhZjg0ZDAxNDk5YWU0OTdkNjggbGVnYWN5LXRydW5rCiszMzYxNiBkYTBjOTBjNmFmZDAxZmNiNmZmOGI3M2FmZGE1OGRiODk0ZWYxMmUxIGxlZ2FjeS10cnVuaworMzM2MTcgOTAxM2QzYzFkNjU1MDY0YzgwMGE3OTYzNTdmZGVjNzBiMmQzNjUwMCBsZWdhY3ktdHJ1bmsKKzMzNjE3IGQwNTRjMjk2NDdmOTBiY2NiODM0NWJkNzc5YmNhMWVlY2YyZGQ3ZjIgbGVnYWN5LXRydW5rCiszMzYyMCA4YTI5MzQ0OTgyOWQ3YmFkMDgyYmU4YjA1YmM2ZDY3ZmQ0MWRhYTQ3IGxlZ2FjeS10cnVuaworMzM2MjEgZGEzNTkyOTYyYTdhZjA3OTk3OWJiNDBiMjlhYjZiNWQ3OGQ5ZTM3NCBsZWdhY3ktdHJ1bmsKKzMzNjIyIDEwOGFhOTY0ODU3MzIxMDU4YTQyZmY2NjIyODEzOWI5ZGI4MmY2NWYgbGVnYWN5LXRydW5rCiszMzYyMyA5YTZmNWIzN2U4MWQyZDlhODI1MWQzYjgzYjJkMjA3NDEzZWEwNDVhIGxlZ2FjeS10cnVuaworMzM2MjQgY2U4YjEzOGY0NDczYWRhZGQwYjZhMTY0ZDUyYTQwMzA2YTJlNTEzNyByMjNjMS1icmFuY2gKKzMzNjI1IDMzN2Q0NDAxMDkwNzM3OGU0ZmRiNzhhNGI2NTYxOTlmZDY2MTk0ZjYgcjIzYzEtYnJhbmNoCiszMzYyNiBhZDA5Njg3YWFhYTBhNzU1MjY4NWYyNzRmYzYwM2RhMGRiZmU3YTI0IGxlZ2FjeS10cnVuaworMzM2MjcgMmI4YTU2NGUxZmQzZDAyNmExMjQ2ODYwOTg2MzIyYmJiZTEwZTFiOCBsZWdhY3ktdHJ1bmsKKzMzNjI4IGE5Yzg5OTczOWY0ODIyYmI2ZDhiOWE5YjI2OGRjMzY0YWU1MzlhNjQgbGVnYWN5LXRydW5rCiszMzYyOSAxY2JjNmI3ODM2ZGNiOGE2ZjE5ZTIyYmNjNTkxMWE0NTg3NzQxNGQ1IGxlZ2FjeS10cnVuaworMzM2MzAgMzIyNWYxZDQyODgzNWEyNzU1YTY1NGU4NzA2ZjUxYmZkYTAxNmQ0ZCByMjNjMS1icmFuY2gKKzMzNjMxIDJjNDgzZjdiZWE0YmNmODY3MTU0NzIzNDI4MWY2MzhmYmFkZDUxMDAgbGVnYWN5LXRydW5rCiszMzYzMiBiYWYyMjQxMDcwYmZkNzE3YTIzNmMzMzFmN2U0MmNkMDgzZjVjNDg3IGxlZ2FjeS10cnVuaworMzM2MzMgMDljNDU5ODUxMjY0MTQ2ZWIzMjdjODZiYTc0ZGM1ZGNkNDk5OTJkMiBsZWdhY3ktdHJ1bmsKKzMzNjM0IDVmYWVlN2NkYzVhYWIyNDc2NmI5N2NiZWIzYTE3MmRhZDBhMWQ5MDcgbGVnYWN5LXRydW5rCiszMzYzNSBjZWE3ZjhhZjhlMGJiODJlNGQ5YTk0YmUzNDJjYTNhMDQ5MzZlNTQ2IGxlZ2FjeS10cnVuaworMzM2MzYgNGJmY2ZlZDY0ZWNiOTY4Yzk4Mjg1ZGJhY2E4NjMwYjM5YjI4NzcwZSBsZWdhY3ktdHJ1bmsKKzMzNjM3IDRjMTQzY2VlZjQxOWM2NzJkMGMwMjY4YzAzZDM3YjI2M2Y3MWRkMjYgbGVnYWN5LXRydW5rCiszMzYzOCBhNTUwYWY3MTFhYmE0YTIyYjQ2YWYzMTc4ZmJiNDNiYWZjZmU5MTA2IGxlZ2FjeS10cnVuaworMzM2MzkgOTUwYjI1MDBhMTQyMjIxNGFjZDNjMDU1MDA1MDZhZjkxNmI3OTY0NyBsZWdhY3ktdHJ1bmsKKzMzNjQwIDY2OGRkMzM2ZTMwNmYxNWJiOGUwYThhYmNjZTJmMjAwYjU4ZjBhYTYgbGVnYWN5LXRydW5rCiszMzY0MSBjNDJhNzMxN2M4ODdhYmI3YjlmMzg2MDEyMzIxMTcwZTMzZDhlOWQ0IGxlZ2FjeS10cnVuaworMzM2NDIgMzE3ZjFlZTI0ZjE4NDliNzhlNzBjNzQ0NWRiOWI5YWQ3ZWI0OWFiMCBsZWdhY3ktdHJ1bmsKKzMzNjQzIDRjZjJiZmZmYTU2NDEwZjhlODIxMDEyMDJjYmU5YzJmNjM1NGRlYTQgbGVnYWN5LXRydW5rCiszMzY0NCBmZTQ5OWJjNzM4MWZiOTAzYmZkZmVlZTMyYWQ2NGRkNTk3MDE5OTU3IGxlZ2FjeS10cnVuaworMzM2NDUgYTRhYmUxN2E1ZmViOTFmNDYyMjRlOGE5NjhhZDUwYTM3NDdiZGRhOCBsZWdhY3ktdHJ1bmsKKzMzNjQ2IDEzYzc1ZmE3ODBjOGMyMjIyMjI1YTUwZDIyMjc0YmZmYWViMDM0OWIgbGVnYWN5LXRydW5rCiszMzY0NyAzMDNmNWZkYTFhMjg0MGJhMDJmODk5NzJkYWJlMmNlMmQyN2RhZGU4IGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY0OCBhNzdhYWFiMDE0NmRlNjk2ZTZkNjZlOTkzYjVjNjRlYzU5YTVkZGY0IGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY0OSA1YWRkY2NhM2Y0MzMzNDgyZmFlMzQ0ZmY0OGFkZDVmYWJkZDI3YmY5IGxlZ2FjeS10cnVuaworMzM2NTAgZTMzOWFkMjUwYWYwZjQxZmMzNGI4YTY0Y2Q5YjgzNTZlMTAxOGEwMCBsZWdhY3ktdHJ1bmsKKzMzNjUxIDgyZWUxZmFlMzgxOTRiODEwOTkwNzIzNzA3YmJlZjUxYWM5OWYzNmUgbGVnYWN5LXRydW5rCiszMzY1MiBhNDA4YWM1NTI3YzM0NTc4NzI4ZjVmMzEzMDgwYzk3ZTMzMjFkMmM4IGxlZ2FjeS10cnVuaworMzM2NTMgYjlkMGEwZWUyMjA2YTcyYTlhOTU3NzAzZDZkZmQ2OTcwMjljN2Y4OCBsZWdhY3ktdHJ1bmsKKzMzNjU0IGQzN2YxMzE5OWQ5NTI5N2I0MTExNDZkMzY3NzJhMjlhYjkxNDVhYWIgbGVnYWN5LXRydW5rCiszMzY1NSA2MTQ5ZjBhMGI4ZjU4NDIyMjg5N2I2MWQzNWI5ZDI5OGJjMDdkMTlmIGFzdC1icmFuY2gKKzMzNjU2IDIxZWRjZTA5MTA2OWY5YWNkMmRjYTJhODkxOTNiNjRiMDdhZmM0OGMgbGVnYWN5LXRydW5rCiszMzY1NyAyYzFlNzNiMmZjYTExMDdiNzE3NDExNjBmOWVkMTUyYTlhNGUzMTM2IGxlZ2FjeS10cnVuaworMzM2NTggMTE4ODA5YjFlZjIwNjEyOWI2MjBkZWEyYTM2Yzc3YzFiMjZlNjM0NCBsZWdhY3ktdHJ1bmsKKzMzNjU5IDI3Mzk1Yzg0NGUyM2I3YWQ0MGFhYzVmZDg1YjRhNjU2ZWJmZmJkZmIgbGVnYWN5LXRydW5rCiszMzY2MCA2NTQ5ZDJlNDA4ZjBjNjNiZmM2NmU4NDA5NmIwMjBhNTgyMTQ5MzBkIGxlZ2FjeS10cnVuaworMzM2NjEgNWFkNDM5NjMyZGU1NGFjMTllM2JiZjBiYmY3MzdkMzFhMDZjZjNjMiBsZWdhY3ktdHJ1bmsKKzMzNjYyIDE3Y2UxMjM2OTQ3N2E3Yzg2ZGM4NjdmYmMwZjIwYjc5NjQ0OTJiMDEgbGVnYWN5LXRydW5rCiszMzY2MyAyMTE4NzA5Nzg1NGM5MGU1MjJiMDE0ZTg0OTY1MjBiOWVmODEzNDgwIGxlZ2FjeS10cnVuaworMzM2NjQgMWJkNmU2MmZiMDZmNzc5MzdjZGFmNzRkNmIyMTFjMTlkOGJlYmZjMCBsZWdhY3ktdHJ1bmsKKzMzNjY1IDdiYTQyYzk2Mjk0Y2M2OTNjMDg0ZTk5NjMzYjRiYWExYzdmZWJhYjQgcmVsZWFzZTIyLW1haW50CiszMzY2NiBmMjcwOGVmNjAxNjliMTkyZDllMDY2ZDNjZjZhMjY0ZmU0ZDAwMmVmIGxlZ2FjeS10cnVuaworMzM2NjcgMmRhMDViNWI1YzY1MDU1YTM2NzE2YzNjNzFhNjI1OGY4YzdkNDVlMCBsZWdhY3ktdHJ1bmsKKzMzNjY4IDI5ZjA3YWRjMzAxOWQwNzVjOWIzMmE4NTNkYjE0NmQxNGM2ZWI0YjEgbGVnYWN5LXRydW5rCiszMzY2OSA4ZjMwNmQzZDZkNTZlZDhkZTM3NDI2ZDRkMWFiMWQ0Mzg4MzJjNTY2IHJlbGVhc2UyMi1tYWludAorMzM2NzAgMDAwOWEwMzgzMjIyNWE2NzVjOTA1MzkwN2EwMTMzODI5NDI0ZmVlNSByZWxlYXNlMjItbWFpbnQKKzMzNjcxIGI1OTQ5NTkxZDlkNTc0ZTA0NWUyMWQwNTgxYzIyY2RhYTAwODQ3MDcgcmVsZWFzZTIyLW1haW50CiszMzY3MiA4NmU0NzI1YTlkYmQ0Yjk1NGRmOGQ0MjllZjcyMGE5YzI3MWM1ZjA5IGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY3MyBiMzNjNjBmY2NlNzRmOWRmMGQxZjYwMTViNGNkZDU5MzVlMTI4MzNjIGxlZ2FjeS10cnVuaworMzM2NzQgMzVjY2ZjMTQwY2FjMGMyZjNjYWQ5ZWI2ODEzYWE0NzY5YWJjOGMxYyBsZWdhY3ktdHJ1bmsKKzMzNjc1IDczMGFiZmNmMjYxMGU5YzcxY2IwMDU1YjI5YmU2MzQxYzJmNTUxYjIgbGVnYWN5LXRydW5rCiszMzY3NiA2NzNiY2VkOTkxODBmZDVhYzc1MjU0ZTlhMjY5ZTBiMjZjZGY4NzU1IGxlZ2FjeS10cnVuaworMzM2NzcgYWE0NGUwNjg4ODk2YTA0NTM4NTI5OGEzZmE1ODBjN2Y5ZDFlOGRkMSBsZWdhY3ktdHJ1bmsKKzMzNjc4IDAyZTViNGI2N2E2NjMwM2M0OWE5N2Q5NmFmMGE4YzY5NmJkM2JmYTUgbGVnYWN5LXRydW5rCiszMzY3OSAwOTU0NjljN2FiZTcyNzAyMDAyY2JjM2ViYmZhNDc5MmU3NWM5MjdjIGxlZ2FjeS10cnVuaworMzM2NzkgZmNlNWM5ZTlhYmM3MjIzOTRjYjJlOTA5YjdlMmEzOTA4MGQ0NDQ4ZSBsZWdhY3ktdHJ1bmsKKzMzNjgxIGUxYmIxMjYyZjBiYzE0NjIzZDY0NmIwMGNiNTQ3NWJkMDE5ODgxMDAgaW5kZXhpbmctY2xlYW51cC1icmFuY2gKKzMzNjgyIDgzZTA2ZmUxMjRhMTkzYTUzNGU0NDg4OTliNWI1OTc1NTUwNGU0ZGQgbGVnYWN5LXRydW5rCiszMzY4MyA1M2I3NjBiMDI3Yjc3MTJiMDY3ZDI0ZWJjMDNkNTE3ZWRmODEwY2FlIGFzdC1icmFuY2gKKzMzNjg0IDk2ZmE4ZjBiOWVlYmE3ZmNkMmFmMDUxYzk0YmY3YTI0ZTg4NWRjYjAgYXN0LWJyYW5jaAorMzM2ODUgY2ZiYjdiODI2OTJkNzBmMDk3MWUzN2RmNTc1MDdlMzAwNTI3M2E4OSBhc3QtYnJhbmNoCiszMzY4NiBmODJlYjE2MDQ0MGJkYTQ5ZWMyMjg5NGZmN2M1OTI5NmU4MWVjOGUwIGxlZ2FjeS10cnVuaworMzM2ODcgNTJkZDU0OGQzYmU5YTk3YWQ3NzliYjE2NTFjYmE0YzQxNjY2NDJkNiBsZWdhY3ktdHJ1bmsKKzMzNjg4IDNhZGRhODFhMGUwYmQwNTI0YTdjYmIxYTQ5Mzk5NDliNzhkZjk0M2YgbGVnYWN5LXRydW5rCiszMzY4OSAzNWRlYTEwZGNkYzQ1ZTg1YzFhZTQ5NzIyZjdiMjU1NDVhMDE3YzAwIGxlZ2FjeS10cnVuaworMzM2OTAgMWZiYWEwNWIzNWMxYmYwZWMxNWI1OWUxMTY0YTFmNGNiZmNkNGY2MCByZWxlYXNlMjItbWFpbnQKKzMzNjkxIDhjZDk0ZDExN2Y4Nzc4OTI3YzQ0YjI5YWVmYTBmZTFkYjQ0ODJjOWEgbGVnYWN5LXRydW5rCiszMzY5MiAzN2NjZjFiYzU0ZTA0NGZiZGM2YjI0NDViZTU5OTAxYmI4ZDRhODYwIGxlZ2FjeS10cnVuaworMzM2OTMgMTVmYzgzYzUwNWUzMTQ5NzAyNmIwYTlmNTc2ZjA3OGFmNDljZGU4NyBsZWdhY3ktdHJ1bmsKKzMzNjk0IGNmYTlmMDQ5YzIwNGM2OGFhMmYyMjI0ZGM0ODk5MDk5ZTczMTkwNGIgbGVnYWN5LXRydW5rCiszMzY5NSA0YjU3MDIzMDZjNTgxYjNlZjZiY2RiZGNlZWE1ZTg5ZmY3YmRhZjQyIGxlZ2FjeS10cnVuaworMzM2OTYgZWZhMWJiNjU2YjJiNmU1MTlhNzIzYmM1NjI4NDVkMTAxOWE0YzkzOCBsZWdhY3ktdHJ1bmsKKzMzNjk3IGExMzE1MmIyNWZlOGRmOTNkMGExNjFmYzUzZGU2MzQzZDljZDZlZGMgbGVnYWN5LXRydW5rCiszMzY5OCBkZTdkOWEyYjVmYWMzMDgzMjQwNmZlY2Q4MGNmMjY5YTM3ZTM4NThjIGxlZ2FjeS10cnVuaworMzM2OTkgZWU4YmFjYzZmMDY4ZDYxNzRiM2JjMzA2ODMyNGRhMDllYjMyNTNlOSBsZWdhY3ktdHJ1bmsKKzMzNzAwIDI5MDk0MDE2Mzk3ZDYyNjBkNGVmOTRkNjExZDhmNzhhZGFmZTBjMjggbGVnYWN5LXRydW5rCiszMzcwMSA2NzRjZjVhMjQxNDdlYmI2ODMzY2EyNzVkMzMzOWY2M2QwZWYxYjM3IGxlZ2FjeS10cnVuaworMzM3MDIgMTJhN2YyMTU2NDgxNTQxN2NkOGM2NGIwZTgwYTQxYWM2ZGM0MGQzZiByZWxlYXNlMjItbWFpbnQKKzMzNzAzIDc0YTVjZTQ5YTkyZmM4MzJhZDQ0MDU4MDgzNDJjNDBmOTdkNmRmMGYgcmVsZWFzZTIyLW1haW50CiszMzcwNCAwZDc5ZGM4NTRhYzQ2OTBlZDQxNWM4MGM1ODJhMTdhYTRlMzU5ODAyIGxlZ2FjeS10cnVuaworMzM3MDUgYTYyMTUzZDljOGQ2NTE3MjUxZGRhN2FhMmZiOWEwNTc2OTc2YjQzMiByZWxlYXNlMjMtYnJhbmNoCiszMzcwNyAyMWI4MTM5OWI2Mjg0MjBhNjhjODZiOTgwMjViY2JlNjdjNTc1MTBmIHJlbGVhc2UyMy1icmFuY2gKKzMzNzA4IGE1MjAzNjE0Y2FhOTZkNmI5Y2MyZTRlMzFmMWU5NTAyMGRkNzU0ZDIgcmVsZWFzZTIzLWJyYW5jaAorMzM3MDggMThlZGM3ZDU3ZGZmYjU2YmU4Mzc0ZjM1ZTQ3ZjM5MzI5ZjVlOWQzMSByZWxlYXNlMjMtYnJhbmNoCiszMzcxMCBlY2Q4NTczMjA0Y2QyNGIxZmYxZjg0Yjc3ZGE4MjEwYjg1ZjQ1ODE2IHJlbGVhc2UyMy1icmFuY2gKKzMzNzExIDQzYjBhNDA0ZDRhMDFjYzE3OThlNDEzNTU4NTU5ZmVlODBhYTJmZTEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MTIgYzNlNjlmMzc2ZjI5YjE5MTE0MzQxNGUyZWQwMjk5MDRiMzc5ZGVjNiBsZWdhY3ktdHJ1bmsKKzMzNzEzIDNmZTgyZDU3ZDBkMTdmMWQ4ZDM5NWViNTJiMDA0MzgxYTMzOTU2ZmYgbGVnYWN5LXRydW5rCiszMzcxNCAxZDYzZTE1Mzk4OWYwMzU0NmFlOGIyYWQwZDcwYjJkM2I3YmIzMjQ3IGxlZ2FjeS10cnVuaworMzM3MTUgYjdlMmQ3MzgwY2IyMDk3YzcxYTRhZTJjMDhmZTZjNzYxZWE2MzJjZCBsZWdhY3ktdHJ1bmsKKzMzNzE2IDcwMmFhNmViMTFmOWIzZDBkMzdlNGVmNGI4ZTEyYTMzNzgzN2U4NzIgbGVnYWN5LXRydW5rCiszMzcxOSBiODJlYTBiMDdiMGFiOGI1YjQzNzJkNDdkOTIzOGVlMWZmOGU1NmMyIHJlbGVhc2UyMy1icmFuY2gKKzMzNzIwIGMzNDBiMjdkNzM5YjExMmZhNTYwNzg5ZWM1NTFkNGFkNzgyMTNlYmMgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjEgMDI1MjlmYjE4ODE1YTA4OGNiOTE1OTZiOWNhYjExNjJiZWNkOGJlZCByZWxlYXNlMjMtYnJhbmNoCiszMzcyMiBlNTlhMzZhMTgwNWVkNmNiZWE0MDhjOWE2OWZkYzVmZGE2NmQ0M2Y2IGxlZ2FjeS10cnVuaworMzM3MjMgZTRlZTk4NmFmMWEwN2Y3ZDQ4ZTI1ZjBiNTNiZTIzMjk1NzJjNGU2NyBsZWdhY3ktdHJ1bmsKKzMzNzI0IGUxNDgyOTZkOGE5Mzg4ZWZlZDkwNzkzMjk1ZjE3NTI2MWJlMTA4NDEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjUgMTg3MzFkMjRlM2QxMDM3NzFiMmI1ZGNlMGYyMDgyMGUxY2Q1Zjg4YSBsZWdhY3ktdHJ1bmsKKzMzNzI2IDJmMDNmODM5ODRiMDcxYzkwMDEzYzg1NDhlYmY3MjA3ZjlkODhlMjYgbGVnYWN5LXRydW5rCiszMzcyNyA2Nzg0YTI0MTYzMzE1MGE5ODU5MGQ5MTc4NWE3YzEyYzFkODcxZDg1IGxlZ2FjeS10cnVuaworMzM3MjggZTYyMWE5N2JmYTE2YjFkZGY1ZjBmMzBhMjNmYzQ5ZmRmNWZlNzVmOSBsZWdhY3ktdHJ1bmsKKzMzNzI5IGUyMTNjZmUxN2E2MjRkM2E2MDgxYjhjMjdmMzIzZTJkOGI3Y2MxMmQgbGVnYWN5LXRydW5rCiszMzczMCBkNzI1NDdjOTE1ZDVhNjRlZjVjYjRkMDhjYzY2MGJhYmVlMGMzY2MwIGxlZ2FjeS10cnVuaworMzM3MzEgNjc3MDM4ODczYTIyYjk0ZGVkNDhkMzYxNjdkZWU1ZWE3YWU2ZDhlMyBsZWdhY3ktdHJ1bmsKKzMzNzMyIDA4ZjM4ZGFmYzk4YTcwNjRjNGI2ZTcwYzUzYjdmZjJiYTcwOTJjYzcgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzMgOGQ4Y2RlZTM0NGFkNTY2Nzg2ZDMxNGQ3NDAwZjIzOWM2YzJmOWY1ZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNCA5ZTBkMzlhMmQzN2U0OWRlYzNhMWI2MjYyMWU0MjcyN2RkNDA4MTdlIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM1IDA0MDY4NzVjYTdmZDNiNjEzY2U2MTYxM2Y1MWFlM2YzMmNmNjc3YmEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzYgNmY2ZGU3NjFlZjliN2FkYjhjYjUxYzM2NTAzZjIzNjMzNjJkODJlZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNyAyNGU3Mzc5OGVkMDRlNGVkN2FmMWUwNTZlMzI2OWJkOTlkMmFmMjNiIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM4IDcwNThkY2Y3MzNkNDY2YzAwMmFiYWQyNGExNGYwZDFhYTg5MDE1ZGEgbGVnYWN5LXRydW5rCiszMzczOSA0M2M5NzcxZTBiZTEwYWE1MGQ4NjYyZTcyMWNhYTc4ZDIxZGVjODMyIGxlZ2FjeS10cnVuaworMzM3NDAgY2UxODUwMzRiMzgwN2RkODM1ZmZkOWQwYWRhMDgwOTRlNjg2NDY4MSBsZWdhY3ktdHJ1bmsKKzMzNzQxIDY5YzhlMzlmNmVlNmM1NmEyNmVjYzJhNTNkZWI2ZTYwOTlkOGZiNTIgbGVnYWN5LXRydW5rCiszMzc0MiAwNTA0YmE4ZWZiYjZjZGQxMWYxYTQ3Y2FmMGI0MjRmY2E0MzMyOTVjIGxlZ2FjeS10cnVuaworMzM3NDMgMGM2MjE4MDE0MDlhZjI4NjJiYmFkMWIxOWFhN2JjODM5ZDllMDIzMSBsZWdhY3ktdHJ1bmsKKzMzNzQ0IGQ4YzhmZTBjNzNlZGVlZDgzZDM2ZGM2YzhiYTI1NGIzYzEwMmJiZDkgbGVnYWN5LXRydW5rCiszMzc0NSA2NDNmZmI3ZGIxOGZkMDVmOWZlMjc4YjcxMjE5ODIyMTUwNWM4YWJmIGxlZ2FjeS10cnVuaworMzM3NDYgZDA5OTQ0Y2VlM2E0ZmU0ZWQxNDFkZWM0MzFjZjYxNTMwZDRjMTQyMCBsZWdhY3ktdHJ1bmsKKzMzNzQ3IDUyNmMxMmFiMzZhZjM5ODJmNzA0YmYyNTJlN2Q4YTY0NjJiNGU1YWIgcmVsZWFzZTIzLWJyYW5jaAorMzM3NDkgZDczOGEwN2EyOTNhMzVmNDAzM2JjNzlkYzQ5YjllMzgwY2JhNzY1ZCByZWxlYXNlMjMtbWFpbnQKKzMzNzUwIGM5YTAwNTkwYjkwMWRkZGJlNjZhYzkxNzZiODUyMmIzNGY3ZmNkNzMgcmVsZWFzZTIzLW1haW50CiszMzc1MSA4MDE0ZmI4MGQxNDQ1MzliNzRkZjMyOGRjZWExZDE2ZDE4MzViZjIzIHJlbGVhc2UyMy1tYWludAorMzM3NTIgZGI5ZDYzMDIzN2E2NTc2NTgyM2M3NWVlOWY2M2E4ZWI1OGU5ZWYxZiByZWxlYXNlMjMtbWFpbnQKKzMzNzUzIGQ4ZTUyYmNlMmNmOTAzYjQ3YWNhYzQ0MDQwMWI3MTBlOTVjNDQ2YWIgbGVnYWN5LXRydW5rCiszMzc1NCA1YTJhOTFiOTc4MTBhMWNiMzQzYzllNGNlZDI4N2E5YzQwYjFkODI4IGxlZ2FjeS10cnVuaworMzM3NTUgMmNmYWNhNjJhOTkwNzNkYWMwNGQwYWYxZGNlOGQ1NjQ4MzIzYjk0NyBsZWdhY3ktdHJ1bmsKKzMzNzU2IGFlODQ4NTg2N2QzMDcxMWFiOThhN2Q0NzAwZDVmNWFiMzM3ZmRkODIgbGVnYWN5LXRydW5rCiszMzc1NyA0OTRiMDdhNWUyZTU3Y2JjMjM4ODNkNTVhZjhkOWQxM2M4YWRjNjkwIGxlZ2FjeS10cnVuaworMzM3NTggNzgwMWIxM2M1MmM5NDYxMmM3NDI2MjkwZGE2Y2JiZWExN2I0YmQ5NiBsZWdhY3ktdHJ1bmsKKzMzNzU5IDBjZmM2Y2FiY2U4ODRhNTMwY2NlYjU4ZGI4N2ExYzMzMmQxYmViZTggbGVnYWN5LXRydW5rCiszMzc2MCBhMDMwMGVhNjM4ZGRiNDEzMDE5MDk2N2YyMTgwZmExNmU3NWEyYWY2IHJlbGVhc2UyMy1tYWludAorMzM3NjEgYjI0ZTlkNzFmYTNjZGJjN2M5MTBlZTc4MDY3YTE0MDZkNmFkMmYwYyBsZWdhY3ktdHJ1bmsKKzMzNzYyIDFkNWJlNjk4MWQ1N2VkZDg3MmM0YzUzM2U0OTZhMTlmODBkNWU0YjQgcmVsZWFzZTIzLW1haW50CiszMzc2MyBlNDc3YjU5OTkyNGRhODNmNTU3MzgwYTY0NTAwMTk4NTA5OTc5ODNhIGxlZ2FjeS10cnVuaworMzM3NjQgYWFiMTA4OWYwZjg1ZGVlYmJkNTQ1ZjljYzIzZjRmNGEyMDI5OGM2NiByZWxlYXNlMjMtbWFpbnQKKzMzNzY1IDRhZGZkNzY0NjZiYzZjMDZlNDg0YjUyZmU0YTIzODZiZGI4Mjc2ZWQgcmVsZWFzZTIzLW1haW50CiszMzc2NiAyMDAxNjVkMTFhOTQ2MjJhY2ViYjAyMWY5NjM1ODRhODE2OTQzNDQ2IGxlZ2FjeS10cnVuaworMzM3NjcgZjI2MTliZDY4M2RiM2RiMWJiNzhiMGYwNTU2MTZiN2ZmN2VlMTRlZSByZWxlYXNlMjMtbWFpbnQKKzMzNzY4IDM1NGM3ZWU0MzhiZjRlYTAxNzRmOTNhNzI5NmM3ZWRhMGUwMTc2NzIgbGVnYWN5LXRydW5rCiszMzc2OSA3YWVhMWI1Y2RlYmJhMmY3NmZmYzhiMzhmODdkMTE2MGQ3NzViMGFkIHJlbGVhc2UyMy1tYWludAorMzM3NzAgNTg5ZDU1NDVhZjQxMTYzMDI2NDQwNzFhODdkMTQwM2MxOGJiN2Q3OCBsZWdhY3ktdHJ1bmsKKzMzNzcxIDBlNjQyNDA4MDBkZDEzYzcxZDlkNDdhYzVhNTAzNGQxMzMxYjhkNTYgcmVsZWFzZTIyLW1haW50CiszMzc3MiA5OGU2YWMxZDgzNzk3MTk2M2Y0NTE4ZTJhMzg5YmY3MTlhOGIzZjhiIGxlZ2FjeS10cnVuaworMzM3NzMgYWUwMjQyZTM0NTllZWFhOTUyM2YzZTc0NjczOTFiZDA4ZDQxOGM3NSBsZWdhY3ktdHJ1bmsKKzMzNzc0IDliZDVjMDUyYjMwOGI3OGE3MmVhMjk3NmFlZDA3Y2ZiZTczYTQzN2MgbGVnYWN5LXRydW5rCiszMzc3NSAxNzE4MTRmNWRjYzYzMjEwYjYyMWE0M2I0YTdmOTVkM2Q5MTE0MzVkIGxlZ2FjeS10cnVuaworMzM3NzYgYWIxMGMwYzI1YzAzMDRhZDRhMzk4MTAzMzBkYTk3NjM2ZDQzYjMxOSBsZWdhY3ktdHJ1bmsKKzMzNzc3IDA2MWQ4NmZjMTFiYjM4MzRkYjU5N2U3Mjc3NTM0NGJhZGNhN2EyNzkgbGVnYWN5LXRydW5rCiszMzc3OCA3MzVlYzA4Njk0OTIzZmViNjA2MWNhZmEwZTEwZTc3ODNlNWE1ZGFlIGxlZ2FjeS10cnVuaworMzM3NzkgN2JkNDAyMDUwOTRjYzQ4MjNiYWYzYjk1NDRhYjg0MDMwNjk4NDgzMCByZWxlYXNlMjMtbWFpbnQKKzMzNzgwIDM2YzI3NzM4MWQ3OGIzYmI2Mzc3MDVkZjUxMDMxYWIzN2ZlYmRkZDMgcmVsZWFzZTIzLW1haW50CiszMzc4MSA4Y2M4MDAwMmZiOTAzNzA4Y2U0MTU0MGM4YThmODI4OTE0OWM5MWJlIGxlZ2FjeS10cnVuaworMzM3ODIgMmIxNGM5ODI3ZDljZDczYmE2NzdlMzU3ZGExN2VmZDBkMzMwOTU3MyByZWxlYXNlMjMtbWFpbnQKKzMzNzgzIDViMWRkYzRiNDliOWJiMWY5NjJhYzMzZWZlNzNhYzE1MDI2YWRkNTUgcmVsZWFzZTIzLW1haW50CiszMzc4NCA4YjdlMzdiNWYxZWU0NTFkMjQ5MThhOTNhNWVmMGY2ZmRjYzQwMDRiIHJlbGVhc2UyMy1tYWludAorMzM3ODUgNzYyZTFiMjA4OGU1MTg4ZGZlZTYzMDY5OTQ5YmI3OTgzYWViMjFjNSByZWxlYXNlMjMtbWFpbnQKKzMzNzg2IDU5ZmY3N2IwYWM3MjRhYjEyYTU2ZTY1NmM4ODY3MDM3YmQzNGRlOWMgcmVsZWFzZTIzLW1haW50CiszMzc4NyA4ZjkzYjA5YjJiYjVmMzRjMjQ1MTBjY2ZjZWQ3OWNmNjdkODU4MjY0IHJlbGVhc2UyMy1tYWludAorMzM3ODggN2Y1NDg5MTg0ZDk0MzMwYWJlYjRmMzYwNjM3N2NlZjY1M2I1OGJlMyBsZWdhY3ktdHJ1bmsKKzMzNzg5IDYyMTZlNzRiODhlZmJlMzY4NTlkOTlhM2E2NDJmOTRjZDQ2NmNhODUgcmVsZWFzZTIzLW1haW50CiszMzc5MCAxYzQ1MTk0ZDEyNGQ4OTUyNGY0YjZjZDg5MDBhOWNjNDBkYzA4MTYzIGxlZ2FjeS10cnVuaworMzM3OTEgYjA3NmY2OWM1ZGFjMzEyYzg2YzhiYTViYmVlYzAyMTE3Yjg1OTc1NyByZWxlYXNlMjMtYnJhbmNoCiszMzc5MiBkMDVkMGVkNDY1ZDgwMTY1ZGVhZDE4ZmY5ZjkxOGVjMmM1OTA4Y2U4IGxlZ2FjeS10cnVuaworMzM3OTMgZGJkZTNkZDMxMDY4NTJlZmQyMWYzOGI3Mjg5YjQzMzhlMzE0ZmM3NCByZWxlYXNlMjMtbWFpbnQKKzMzNzk0IDhlYmI5YjM1NzZkMTNjOWQwMzQ3NGQyNTFhODJlMTFlYWE4OWI0OTYgcmVsZWFzZTIzLWJyYW5jaAorMzM3OTUgNTNjMmZmMWQ4MWQxNjk4YWQwOWIzYjVmMzRhNGM0N2FjODQ2ZTg5MiByZWxlYXNlMjMtbWFpbnQKKzMzNzk2IGJmY2M5OGRlN2ZjYzI1MDQ4Yjg5OWQ1OGMzNDhhMDUwYjUxYmY4NjAgcmVsZWFzZTIzLW1haW50CiszMzc5NyA0MGY1ZjBiNDRjYzQ0N2Y3OGU2MDIzMDFlYTdjYTIzNDAzNzRlNDc4IHJlbGVhc2UyMy1tYWludAorMzM3OTggYmE0OGU1NzFhNGQ1Y2U5ZjYzNDFmNWM3OWZiZDg0MTFkNzA2YTM0NyBsZWdhY3ktdHJ1bmsKKzMzNzk5IDVjOGIyYTY2NjZjMzZmYzYzMmQyZmZlMGU0NWQwYWNlZDhjZDZmZmIgbGVnYWN5LXRydW5rCiszMzgwMCBhZmRlNDAyZTNhNTVhOTliMjU3YzlkMmJmYzY4YmY5Y2EwOWM3Y2I1IHJlbGVhc2UyMy1tYWludAorMzM4MDEgZDRjY2U1NTM0NzhhODEwZDA0YTkyMzUyY2VkOGRhZmUzYzYwMmMwNiBsZWdhY3ktdHJ1bmsKKzMzODAyIDBhYzQzOTZiMTg5NGEwZTI5ZDhjMGIxY2Q1OTBhNGQxZTZjZWZiYzQgbGVnYWN5LXRydW5rCiszMzgwMyA3NGVmOGI4ZTAwNjE3NGE1M2MwYjVhNjQ1Yzg5MTMwZDk2YzFlMmIyIHJlbGVhc2UyMy1tYWludAorMzM4MDQgZTNjOWI0OGRlNjBhZTI3NDA2OGI2ODQ4ZDAyM2I2ZGZkMTQwNDM4ZSBsZWdhY3ktdHJ1bmsKKzMzODA1IDA2MDE2ZDVkODFkN2Q0ZTFkNDgwYTM4MDBhNTc4NzhkNDkzYzAwOTIgbGVnYWN5LXRydW5rCiszMzgwNiAxYzRkMTliOWJhYWM2NTNmZjBjM2FiOWQ3NWI4NTk4MDIxMTVkNmNjIHJlbGVhc2UyMy1tYWludAorMzM4MDcgZDYzNzk2MjBmYjA4ZDE0YTcwNmQzNzU2ZTcyMzZhY2FjY2JmZmIyMSBsZWdhY3ktdHJ1bmsKKzMzODA4IDNkYzhmMmI0MjQ4YzJiODNlZDNhNDRjZmI5ZGJmNTZhZjliMjk3N2EgcmVsZWFzZTIzLW1haW50CiszMzgwOSAwOWEyY2RlYWI4YzBhZTgzZTI5YTA2NzZmN2NiMzE1OTU2MDA2M2VkIGxlZ2FjeS10cnVuaworMzM4MTAgNTMwZTIzYmY5ZTE5M2VlYWNmODhmZGNjYzhlZWM2NTQwMTc0MDc2MyBsZWdhY3ktdHJ1bmsKKzMzODExIDkwMDMyNzA5NWIwNTE0MDNmYTZhODg0MDI0YWI3MWU3OTgxNWE3YjUgcmVsZWFzZTIzLW1haW50CiszMzgxMiA1Mjg0MzdhM2Y1ZjdhNzVjMTkxMDg4YTc5N2JjYTJiZWY0MGYzMDMzIGxlZ2FjeS10cnVuaworMzM4MTMgNjY1ZjhhNmY0MzdkYjQ2YmNlODM3Zjc0MWRjNjkyODAwMGRiODkxYiByZWxlYXNlMjMtbWFpbnQKKzMzODE0IDQzNTNmMDQ0MjJlMzIxZmQxMjRiMWVjMDJjMmM2Y2Q4NzdjYTQ0NWIgbGVnYWN5LXRydW5rCiszMzgxNSAyNjUwNzk4ODM2Njg3MzhmNmRmNGM2NzVmNmVkYjViOTVmNDk0N2I2IGxlZ2FjeS10cnVuaworMzM4MTYgNjE2YThjMGNjOTE3MDZhYmUwNDE1NzdjYTk1NjdiMjc0ZGI1ZjUyYiByZWxlYXNlMjMtbWFpbnQKKzMzODE3IGE4OGU2ZGZiZmQ2ZDM0ZjEwN2JkMzYwZmI1ZmNlZTdlYmU2NDVmNTQgbGVnYWN5LXRydW5rCiszMzgxOCBmYjJhYmNhMmQyZDU1OWM2MWQ2ZDg4MmJjZTE3YWViNWQ0MzM4NDAzIHJlbGVhc2UyMy1tYWludAorMzM4MTkgOTJkNjgwODNhMGZkNjdiZmFiZWZjZTc0NGE5OTQ3NTVmNmI5NjQxYiBsZWdhY3ktdHJ1bmsKKzMzODE5IDhlNjNjNWEzM2Y0NzBmN2MzNjNlMzhhN2MxNjJkMjQ5ZWRjYjJiYjYgcmVsZWFzZTIzLW1haW50CiszMzgyMCA0NjEwMzBlNmJkNjc2YzViN2Q5OTdiYzcxNmI0NGE4MjlmZDliMzkxIHJlbGVhc2UyMy1tYWludAorMzM4MjEgNjdhOTFmNzUwYzYzMTJjYzRmNzg5MzNhYTIzNWIwMzA0ZWZiYjdjNSByZWxlYXNlMjMtbWFpbnQKKzMzODIyIDlmNmUyZGVlMTg5MmY3M2I5MjA2ZWFhMmM2YzU2NTFhNmNjMjlkMjMgbGVnYWN5LXRydW5rCiszMzgyMyA3YjkwNjU3MWRjNjhiNGYwM2EwNjQxMWE0MjQ5OTMyOTQ5Mzg3YzZkIHJlbGVhc2UyMy1tYWludAorMzM4MjQgZmUwNTdiZWE4ODU2NjljZDVkMGVjOWEwNTFjYmYwYjdhNTQxN2FkMyByZWxlYXNlMjMtbWFpbnQKKzMzODI1IDQwYWE0YTEwZjQ5YjZhNWJmZjIwM2NiNDFlYzE0OTg5NWU2MWU3MjIgbGVnYWN5LXRydW5rCiszMzgyNiAzNzc5ZWI0ODNlNmJkNWRhNDNmMjEzYzlhNTJlMzQzMjFiNWU3NzQ3IGxlZ2FjeS10cnVuaworMzM4MjcgNzIwZjQ0YzZkMTFjMmQxNGYwNWRjZWE1NGVlYzY3ZDQ1MjIxOWVhMSByZWxlYXNlMjMtbWFpbnQKKzMzODI4IDE5YzBmODE3Y2I0NzU3NWMwNjVlNDc0NTUzNmUyODFiZjhjOTI2MWMgbGVnYWN5LXRydW5rCiszMzgyOSA5OThiMDY3MzBjOWZiMGU1OWNkMTg1MmE0YjkyYWYzN2Q2MTdlOWU0IHJlbGVhc2UyMy1tYWludAorMzM4MzAgMjEwNjc2ZWM5ZDVmMTdlZTY0ZmYzYWQ3Mzg4OGU2NWZmYTY2YzA1NSBsZWdhY3ktdHJ1bmsKKzMzODMxIDE1OThmYmU2OTNmOTljODUyNjUzMjBlMTIyODNhOGRiM2NlZGZlMjQgcmVsZWFzZTIzLW1haW50CiszMzgzMiAyOTAzMmYzN2RjOGY4MjdmMzU5NWUxODJlYzY2NjhhODlhNzNmNDQzIGxlZ2FjeS10cnVuaworMzM4MzMgNGI0NmQ1NDQ5ZDQ5OTU3MjJiYzQ3NzQzYTQ5ZWU0ODZlZWU1NmRjMyBsZWdhY3ktdHJ1bmsKKzMzODM0IDY4NDJjZWIzOWExNDQxNmQ0ZWM3NzBkNTkwNDkyNTNhY2FjODI4ZGUgbGVnYWN5LXRydW5rCiszMzgzNSAyYzZmOTJjZGRiYWQ5YTlhMmZhNDU4ZmI1NmZmYjUyMWM4OTgzNzdmIGxlZ2FjeS10cnVuaworMzM4MzYgNTNmOTA2OWZjNjUwZWVhY2ZiZDhmZjVlZTY1ZmZmOWEzYWJkYjJlMiBsZWdhY3ktdHJ1bmsKKzMzODM3IGI4NjIzYjJjOWJjZTZhYjk2ZjMyZDkwZjZjNDdlZTE5MDU5Yjc4MjggbGVnYWN5LXRydW5rCiszMzgzOCA4MmExZDNmMjEwYWRmMDhhMGI2NjEwZmI3NmRlNzNlYzliODg4YjE0IGxlZ2FjeS10cnVuaworMzM4MzkgYzMzZDM2ODllZDViNmNhMGIwMzkyMDU5MDZmZGY3YzNkZjkyNmEwMiBsZWdhY3ktdHJ1bmsKKzMzODQwIGRlMjhkOTkyODg1NTU2ZGFlODE0ZWY5M2Q2ZmE2MTIzNTU0YzdkYjMgbGVnYWN5LXRydW5rCiszMzg0MSA1ZDBjODdiOTU3MGQzYWNiN2IxOWIzZTA1YmExYjY5ODZjYTQ1ZTI5IHJlbGVhc2UyMy1tYWludAorMzM4NDIgNTIzYzNkNjFkYmRkZTczNGEwZjU2ZGJkYjk0YTA4MDMyYjIzMDAxNyBsZWdhY3ktdHJ1bmsKKzMzODQyIDMwNGI1YTM2NTU3NjExNDIxOGI4YmMzZGFmZjg2ZDEzYTI0OTA2ZTMgcmVsZWFzZTIzLW1haW50CiszMzg0MyAxOGI2N2FlOWNmNDU4MjQzNjc2M2E1OGQ4ZGE1OTA0ZTZlYzM1ZmQyIGxlZ2FjeS10cnVuaworMzM4NDQgZGY2NTQ4NjFjY2Y2YTEwOWY0MTM1MmMzNjA0ZTZmNGY4OTVjN2UwMiBsZWdhY3ktdHJ1bmsKKzMzODQ1IGY3NDZkNTY5MGFkNmQ4MzlkZjViNGE3NzM2MWVkMmExZmJhODAxYTggbGVnYWN5LXRydW5rCiszMzg0NiBhYTVjYjhlM2I5ZWE1YjdkNGQwMWU1ZjE4ZDEzYTlmZmMwZGIwZWExIHJlbGVhc2UyMy1tYWludAorMzM4NDcgZjM2NTRjNWFkYTk0NDhjYTE1MTQ1OTEzYjVhY2JkYTExZjI1OWIyYyBsZWdhY3ktdHJ1bmsKKzMzODQ4IDQ2YmNhYjJiNzRlOTI0ODQ5YmU2YzFlNmQyOWUzMDg4Y2M2NDY0NDMgbGVnYWN5LXRydW5rCiszMzg0OSA0NTA1YTBiOTcyNGNmMTdkMDU0ODdmYmVjNzE2MWFiMTVjY2RmN2M0IHJlbGVhc2UyMy1icmFuY2gKKzMzODUwIDA1NjczYjE2YmRiOGMxZTlhOTI5MjM5YzNiZjA1ZjdiZTUwMmQ3OWYgbGVnYWN5LXRydW5rCiszMzg1MSBmNGI0YmY3ZTg3ZDdlMGJlNWU0ZmU0YWViZmRhMGZiMzg2ZjZmMjY4IHJlbGVhc2UyMy1tYWludAorMzM4NTIgZDlmMDI3ZGM2NzZkZDljZDU1MWM2YTBhYTQxOGZlNjM0ODFmNzM0MiBsZWdhY3ktdHJ1bmsKKzMzODUzIDdjYzBhMzM5NDZhMzA0MTZmNDhlNTgyOTJjZWU2NDY5NTA0ZDJmMmYgbGVnYWN5LXRydW5rCiszMzg1NCBmMGRmYmMxNDE0ODMzNmI4ZmM2YzA4N2Q3NGFmZGVkZWIyOGYwMjU2IHJlbGVhc2UyMy1tYWludAorMzM4NTUgNTkwZDhjY2FiYWM3YmQwYzA1MjVkNTg1OGE3Y2FhNjczZDExNDNkMiBsZWdhY3ktdHJ1bmsKKzMzODU2IDZkNzRmMDA2Zjg0YWNlODRjNjlhOTAxODM2ZGZjNWY4NTZiNmU3MjIgcmVsZWFzZTIzLW1haW50CiszMzg1NyA1OWJhZDdlZmZmMDIxNjk0NzAyYzg0YjMyNGI4MzE5OWM4YzdkYzc1IGxlZ2FjeS10cnVuaworMzM4NTggNTY4NmNhMjk3ZjU1ZjRmOTI3OWNjN2Q0NjAzYmUzZjhhZDZmNGE0YiByZWxlYXNlMjMtbWFpbnQKKzMzODU5IDlmNTNlNTNmMzg4MDIzYTEwNDM4ZDEyOWVkMmEyNjFkMzljMWY1MzQgbGVnYWN5LXRydW5rCiszMzg2MCAwODEzYjMzNjEwY2MzNWMzOWM4NTEzZmY3YWM4MTkxMjJiNGFiMzlhIGxlZ2FjeS10cnVuaworMzM4NjEgZTM3MzYzMGJmZWFiNzY0MGViZjE1ODM1MTk5YjU2ZWUxNDkzYzE2MSByZWxlYXNlMjMtbWFpbnQKKzMzODYyIGE0OWMxYjc2MTA2Y2U0YWM4YWY1NGNkNjJlMGVhM2ViZGFkMzIyMWIgbGVnYWN5LXRydW5rCiszMzg2MyBlMzI4MWIwZGY2YTQxYzU5NjVhOGI0MTc1ZjA0NTdmMThlZDRhZWE0IGxlZ2FjeS10cnVuaworMzM4NjQgYjY5ODIwOWI5ODI3ODgzNTRkMzBkNGEwMGYyN2M3MmM5ZTJkOTBlNiBsZWdhY3ktdHJ1bmsKKzMzODY1IDliODkxNjYzMWViNjllYzMyZTVjOWM0MjA1NTJiNmVmOWE5ZDZkZWEgcmVsZWFzZTIzLW1haW50CiszMzg2NiA0NDYwOTc5ZGVlYmY1ZWM2NTUzMjYyZDcyYmVhZjc4NjgxNTc0NjJiIGxlZ2FjeS10cnVuaworMzM4NjcgOTQxZDQ5YTY1ZjA2ZjEyMWZjNmEzMjYyZjZiNmViNmY3OGIyOGMzNiBsZWdhY3ktdHJ1bmsKKzMzODY4IDMzMjliMDU4ZGIyMDEyZWM2ZGM5N2IwZDVkNWEyMjJhODhkNzliZTYgbGVnYWN5LXRydW5rCiszMzg2OSA1NDYxN2VkMmQ4MzA4NzAyMjk2NmZmNDEzYzE3YzRmMmQ4NmFjYTZiIHJlbGVhc2UyMy1tYWludAorMzM4NzAgNDQzNTMzZDA4NzgzZGM3OGQ2Zjc0ODc2NDVlMTIwMTk5MmRiOWYxNyBsZWdhY3ktdHJ1bmsKKzMzODcxIDI5YjFkMDc2Mzc5MGFmNzBjNmE0NTc4ZDIxZjJhMGQ0OWQyNWU3YWUgcmVsZWFzZTIzLW1haW50CiszMzg3MiA3Y2I0YWQ1OTMyZTYyNmRmZTVkNzhjYTQ0YjhkMzY0NTg5ZjU1OTZhIGxlZ2FjeS10cnVuaworMzM4NzMgNDcwOGZhMDg2MTIxZjIzZDI3NDc4OGJlOGU5OWJkZTZlOGVlMmYwZSByZWxlYXNlMjMtbWFpbnQKKzMzODc0IGVmMjE2ODFhOWM3ZmI2MDk5Mjg3ODNlZTg5OTU4Njc3ODFiNDAwMzEgcmVsZWFzZTIzLW1haW50CiszMzg3NSBkYzQyNDlkZDllMzUzYTgyMjVkZWYxMmFkYzcxMTI0MGRkZjNlNDAyIGxlZ2FjeS10cnVuaworMzM4NzYgOGUyZWYyN2Y2ODhiNTM5NjA2MmY2OTAyMDAxMTM3Njg5NmViZTRkZSByZWxlYXNlMjEtbWFpbnQKKzMzODc3IDJkMjc0ZGEwOTI3NDc2OWYwYjEyZDNkMTQyMWFiNzI2MTdkYWQwZjYgbGVnYWN5LXRydW5rCiszMzg3OCA5NDJjZWViZTk2NzFhZjg2NTQzYzhiNTdjYTk0NjAxY2UyYWUzZDNiIHJlbGVhc2UyMy1tYWludAorMzM4NzkgM2RkYTUzYzMxMmE1YWFiMjNjZDA5NGU2MzVjMzJiNTkxNTRlOWQ5MyBsZWdhY3ktdHJ1bmsKKzMzODgwIGEzMzJkY2M3OTAyYjk2MGFhMDI2YTliYzM4MjdjM2MwNGEyNTZiNjggbGVnYWN5LXRydW5rCiszMzg4MSA5NDE0ODg2ZjVjN2FkYzYxOTk0OTllN2M4YjU3ZDdhODBjZThkYTExIGxlZ2FjeS10cnVuaworMzM4ODIgMmE5NDFmZjBhMTM2NjVlMDJmZWExNjg3NDE0MDBhYjE1YmZmYzU0YyBsZWdhY3ktdHJ1bmsKKzMzODgzIGI1NWQ0YTNmNDFlODZlMzk4NzUwNDRiNGE5NGI1YjFkNjViZTVkNGIgcmVsZWFzZTIzLW1haW50CiszMzg4NCAzZGI1MGQzMTM0MGQ5M2MxOGIzNTU2MjQ0ZDMzNzI5MjAxZDU5MTczIGxlZ2FjeS10cnVuaworMzM4ODUgNGZmMzg1NzJkMDM2ZTRmYTNmYTJmNGM3YWE1OWI1NjgwOGFlZDZjMCBsZWdhY3ktdHJ1bmsKKzMzODg2IDcxZGZkMWUxZjJlY2NkMjE4Y2I4NTYyMTgxZDg5NjZhNDIwNDc5ZmYgcmVsZWFzZTIzLW1haW50CiszMzg4NyA2MGFhZThhMWUyMzcyNmE0NTNhNGVmODFhZjg1MjI1Mzk0MzM3NDRkIHJlbGVhc2UyMy1tYWludAorMzM4ODggOTQ2NjUyOTFhYjFiZDMzMWRkMjczZGQwZjQ1YTFiM2Q4ZTRiMDg1YiBsZWdhY3ktdHJ1bmsKKzMzODg5IGNjYjQwZGE4YzQxMmM2MDE4NzM1ODg2MDI4MDdmNzU1OTdlZDQ5ODEgcmVsZWFzZTIzLW1haW50CiszMzg5MCA3YmM3NzI1MjdlNDRkYjhjOTAzZGFiY2Y4MTgzOThlNzM3YjUyOWU0IGxlZ2FjeS10cnVuaworMzM4OTEgYWY1NTM1YjBlMDA5ZTY2ODMwYjAwYTlmOGQzNDhiNjI4MzU3NjVhZSByZWxlYXNlMjMtbWFpbnQKKzMzODkyIDNlYTUyYmM3NGQxNzFmM2JlOGNlOGQ5YzBhMzI5NDFkNWVkMWIxZWUgbGVnYWN5LXRydW5rCiszMzg5MyBkMjc5YzQwYmQ3YjM2YmNlMzEwOGUyYTc3YTY3YjMwZjgxNmExNTdkIGxlZ2FjeS10cnVuaworMzM4OTQgYTU1ZmVlYTNmOTIxZGI1YTEwYzA0YzhhZTEzZDdlYjg1ZjIwMDM0ZSBsZWdhY3ktdHJ1bmsKKzMzODk1IGZkODI0ZDU3NGE4ZmRkMTAwNTQ3OGE4MTI0Y2M2MGQzZjJlMzgzOTUgbGVnYWN5LXRydW5rCiszMzg5NiAxMzFjNTRmMjAyZmQ4NDQ2MjQzYjU3ZDJmMzVmYWQzNzhmN2E3YjU3IGxlZ2FjeS10cnVuaworMzM4OTcgMGZhOTlkMzFmYjQ4MTIwZTQ2MWNhYTRjZTRlMWM1NTU4ZjAxNzQ1ZiBsZWdhY3ktdHJ1bmsKKzMzODk4IGMxMGExY2RjZTYyYjUxYjc5YTRmNGY5Mzg0YjZlZjEwMTc5M2RiZDIgbGVnYWN5LXRydW5rCiszMzg5OSA5YTVkNmViODFjZmFhZjM3NmJkMDQ1MzlkYzVkOWYyNGNiNTVhZmRjIHJlbGVhc2UyMy1tYWludAorMzM5MDAgM2I5MDc0YWQ3MjNlNGJmMmE1Njk3Y2Y3ZjI1MzJhMTFjMmYwOTQ5YSByZWxlYXNlMjMtbWFpbnQKKzMzOTAxIDM5ZTkyOGQwMGI2NDM5OGM3N2I0ODg3OTg5NmQwZDg1MjBhNTU1NmQgcmVsZWFzZTIyLW1haW50CiszMzkwMiBkNzg3NzkxODdjN2RmMDQ5MzczOGRhYmQzZTAyNjAwYzFiMzU0MjUzIHJlbGVhc2UyMy1tYWludAorMzM5MDIgZWYxZjI5NzNmYWQ4MDkwODI0MzMxM2JkNTZmZmU5ZjVmMDdhZThhMCByZWxlYXNlMjItbWFpbnQKKzMzOTAzIDVjNTRhNzhmMWQ1MTUyYjE1ZGMxMGE3NDNmN2RlNzlmY2U0YTRiMjcgcmVsZWFzZTIyLW1haW50CiszMzkwNCBiYzY5ZTBkZmQyYTAzNDQ5N2I1NmVjZDAzOTA3ZmNiMGZmOGQ1YjczIGxlZ2FjeS10cnVuaworMzM5MDUgNjY5NTY4ODk5MzA5ZmRiODhjODg0NWU2ZDMxY2IyZWMwZDk5N2YxNSBsZWdhY3ktdHJ1bmsKKzMzOTA2IDI1MWZhMDdmYzVkMWY1ZjJjMDAwZjcyYTMxZWY0NjNmN2FlOTMxNzEgcmVsZWFzZTIzLW1haW50CiszMzkwNyA0YzBhZjIyYThmM2QxMjZkYjdhOGVkNDdlMjY1OWY5ODg1MmVhOTdmIGxlZ2FjeS10cnVuaworMzM5MDggNDFiNmE1MzY3ZWU1NjQ2YjhlZDZhYjU2NTA1NjU2YzY0NjdmMTk2NiBsZWdhY3ktdHJ1bmsKKzMzOTA5IGRjMDFjZTJmODU1ODJkYzI0NTQ5ZTFjNTkwOGZlMzE2MjJmZDZlOWMgcmVsZWFzZTIzLW1haW50CiszMzkxMCA3NTZiNjVjNzlmNDAwMjQ1YzFkYjNkOWEyYTE5ODc5ZDU4NDZjNDJlIHJlbGVhc2UyMy1tYWludAorMzM5MTEgMGFhYzA3NjYzNDQ4ZTMwMGQ1YjA4MzgyYWY5NmUzMjg1NmJjYWFiMyBsZWdhY3ktdHJ1bmsKKzMzOTEyIGY4ZWJhZGUyZTcyNGRjNjFmYzJiNmY3M2I3ODc4NzA4MWY3M2M2ZjkgcmVsZWFzZTIzLW1haW50CiszMzkxMyBkMmU0Yzk0ZWZiYWFiMzEwZDBjNDg3N2VkYTk1OTU3NTY4Zjc1Y2E3IGxlZ2FjeS10cnVuaworMzM5MTQgYWM4NmIwNzE3YWQxOTQ2M2RlMzc5NDc4ZGYyMDUzMzE3ODEzZjRmZSBsZWdhY3ktdHJ1bmsKKzMzOTE1IDBmZTYwZmE2MTdkOGRjNzA0MWQ3NWZhOTk4MmVlMWE3ZWZkNDhiYzggcmVsZWFzZTIzLW1haW50CiszMzkxNiAyZGI4YzYzZTY5Y2Q2NGYyYjlhMmQwZDc5NTM5Yzk1YTE2Y2FkNDk3IGxlZ2FjeS10cnVuaworMzM5MTcgNmMxZTQ3ZDU0YTdhMzAxZDgzZTNiN2NlODllNTI5MTNiM2FlNTE0MyBsZWdhY3ktdHJ1bmsKKzMzOTE4IGEzODA2MTBlZWI1YWM3OTVkYTM5OWUyOWE5NjA0YTY3YWI0MGY2NDIgcmVsZWFzZTIzLW1haW50CiszMzkxOSBkMTVkNDRkOWQ2ZjVjZGQ1ZDhhMWJmODdhMTgxNjM5YzAxYmIwYzhiIHJlbGVhc2UyMy1tYWludAorMzM5MjAgNWU5M2E0ZjZkOWE5OWZhMjNhMjU5MzQ2NmI0OTBjYTAyYjMzMjVlNCBsZWdhY3ktdHJ1bmsKKzMzOTIxIGI1MTkwMzUwMDZjNzE5ODBjMDUzNjUzMTNmZjk3MzliZmM1NTc4MTcgYXN0LWJyYW5jaAorMzM5MjIgZTRmZjBkYjNiMDg4NmQwM2RmNDdkYjgxYjY1YmU2ZjMxMDQzYzUzYSBhc3QtYnJhbmNoCiszMzkyMyBhYzBkYjAzNGRkMTRiZDdmMGQ0NTA0NzM1NjE0NjNjYjljMTJlZGMyIGxlZ2FjeS10cnVuaworMzM5MjQgODQ4MWM5YmFmNzg1ZDVkMmQ3MDIyOTVlZjFmM2NlMDdjOTIyYjhjMSByZWxlYXNlMjMtbWFpbnQKKzMzOTI1IDdhYjFhNDFmMTZkYWIxNTMwMDM2YzEyNjdhNjRlN2YxMGZjYzAyZTAgbGVnYWN5LXRydW5rCiszMzkyNiAyMWQzYjA2ZGY3OTNjYjFhYzY4NTkxYzZiNjVmYjZkYjA1NmE4ZGMyIHJlbGVhc2UyMy1tYWludAorMzM5MjcgODI4N2Y1MjJiZWExNzg0Y2RkNTMxYTZmM2YyNWIxZjViN2I2MTg2NSBsZWdhY3ktdHJ1bmsKKzMzOTI4IGRmOGNiZGU1YzU4ODI5OGI1ZmNlOWIwNTczZjA4MDllZDkzMmU0OWQgcmVsZWFzZTIzLW1haW50CiszMzkyOSAwNTZmMTZhN2FiYjAzNDk2OTk1NjcyMjIzYjZhZTM0YmE2N2NiMGM1IHJlbGVhc2UyMi1tYWludAorMzM5MzAgNDAwMGNjNmRhOTI1MjIwN2FiODlmZGI5Zjg1ODRmMmZjNWQzNTMwNyByZWxlYXNlMjMtbWFpbnQKKzMzOTMxIGE1ZjYwNmY5Y2EwNTcxYTI0ZWUzZjA4MWRkZWM5MDM2NGIyNWM5ZjEgbGVnYWN5LXRydW5rCiszMzkzMiBjMDZkZmZiNmE5ODIyOTE0MWYzNDIwZGU0MWQzMjBiZjQxZDQ1OGFiIGxlZ2FjeS10cnVuaworMzM5MzMgZTgxNzM1NDIzOTNmYzQ3MzVlMTYxZWZmMjdhMDk1OTRiYjdhNDFhZiByZWxlYXNlMjMtbWFpbnQKKzMzOTM0IDI0MzQxY2IyMWZkNWNiMThmM2YzZTdjZGU1YTNhZjAzZjAyMmU2ZTYgbGVnYWN5LXRydW5rCiszMzkzNSA4MDYxNzk0MDBmMzU0ZWRiYzFlYzMzM2Y5Y2ViNjhjOGM0MTQwOWRlIGxlZ2FjeS10cnVuaworMzM5MzYgYzMwZWQxM2QzNTgyMDlhM2I4NGIyMTA4MjJmN2E3MWZiYjRmYWEzNiBsZWdhY3ktdHJ1bmsKKzMzOTM3IGEwZjUzYTA2OTQ3MDM1M2FhNTgyNDFjY2U0OWQxMTBmYjRkMjY5ZmMgbGVnYWN5LXRydW5rCiszMzkzOCAxMDlkNjNmNzAzN2M5M2EzZmRkMTFhYmFiYjBkNzk5MmQ0MWM5YWViIHJlbGVhc2UyMy1tYWludAorMzM5MzkgNDk2OTY4ZjM2NDllOGMxMzg0NDhiZjEzMTE3ZGFhOTc1Mzk3ZGM3MSBsZWdhY3ktdHJ1bmsKKzMzOTQwIGRkNDUxYTYzZjg5ZTU5YTE2MTg3MzkwYmI3M2NhNGVkN2U1YTIyOWMgbGVnYWN5LXRydW5rCiszMzk0MSBiOTQwYWI5YTJhYmY0NGYzZTk5ODQ1NGNlMzc0ZmEwMjcyYzU1YjIzIHJlbGVhc2UyMy1icmFuY2gKKzMzOTQyIGRmYmQyODExMmUwOTdjZGE2NWJiMjIwMDcwY2UyNDZiMzBjMTg4MmYgbGVnYWN5LXRydW5rCiszMzk0MyBkOGI3Njg3ODA0YjIzN2Q4NjYzMGExNDdhOGJjYzNhZDNkMTdjZThmIHJlbGVhc2UyMy1icmFuY2gKKzMzOTQ0IGM0N2Y1YWM4YjA2ZGQzZGRlYTZkZTU3MzExMDgwNzViZDk3ZWZlNjIgbGVnYWN5LXRydW5rCiszMzk0NSAzZDRhNTUwM2U0NmQ5MTJjMzg3M2EwMjk5MTM2NzEyYmMwNWEzNjFkIGxlZ2FjeS10cnVuaworMzM5NDYgN2YzNDY1MmQ3MTYxMmFlY2VhZDgzNjVjMjg3MjY4ZjJmZWMyOWY5NSBsZWdhY3ktdHJ1bmsKKzMzOTQ3IGM0NTM1ODkzNWVkM2ZmZjhmYTA5ZTE3YWVhNzM0MzRiMTgyZTFjZWIgbGVnYWN5LXRydW5rCiszMzk0OCA0MjE0NzE0YWJhY2JmMjM5NGY2YmRmN2MxYWYyOGY3Y2M1OTAwNWUyIHJlbGVhc2UyMy1tYWludAorMzM5NDkgYTU3MGJiOWYxMzNmNzA5Mjg0ZmNmNWFjOWUzY2Q2ZTQ4MTAwNGY5OCBsZWdhY3ktdHJ1bmsKKzMzOTUwIGU4MzU3NWJiMjlkYTkwNjg1ZjA4OGMxYzY3MmNiN2ZjMmM2NjBmZTEgcmVsZWFzZTIzLW1haW50CiszMzk1MSBmMWVhMzExMTI3Y2YxNTk3OTBiOTg5YmUwNThlNzA2YTUxN2E4OWUwIGxlZ2FjeS10cnVuaworMzM5NTIgM2ZiMzc0N2NlMzA0YzE5MTczZTAwMTUwMjM2OWY0OTk1MmZkNmNiNSByZWxlYXNlMjMtbWFpbnQKKzMzOTUzIDdmNjYwZmEyODhhYWJmZTk5MzE0YTgwNzIyYWQ2YTY3Yjc5ZDZkZjggcmVsZWFzZTIzLW1haW50CiszMzk1NCA1M2EzMjJjNmRlNTIyYTkwOTA0OWM0NGIwMGIwMTJhYzA1MjNjMDcxIGxlZ2FjeS10cnVuaworMzM5NTUgOWUzZDUxYmVjNTNhMjdlOTZhZDlmYWJlZGRhYzgxODQ3OWRjZmE1ZiBsZWdhY3ktdHJ1bmsKKzMzOTU2IDQ5NzY1OTQ1MDUzNDhlYTQ5NjRiY2NjYzQ1MzY1OTkwOTNhYjkxM2MgcmVsZWFzZTIzLW1haW50CiszMzk1NyA5N2YzZDY2NTU4ZmI4ZWE3MTRhN2JjMTdhMjFkODc3ZmMzYjAzMmRmIHJlbGVhc2UyMy1tYWludAorMzM5NTggOTU2OTVjYzQ1Y2RkMmVhZDVkY2M2MjI1ODJiMDJlOWRlMjBkYTFiMyBsZWdhY3ktdHJ1bmsKKzMzOTU5IDk5NTFiNmU5YTNlYTU3YmU0YjgzZjUzM2NiOTgyZTE2YTdjZmIxZmIgbGVnYWN5LXRydW5rCiszMzk2MCBiZjJhYTdkZTQzN2QzNDZhZTk4NjA5YjcwMTYwNDkzN2FjM2QyMmYwIHJlbGVhc2UyMy1tYWludAorMzM5NjEgODMwYzBjZDhmZGIyMjAyMjFmZGVhMGQ5MmY0MjBjN2Y3MGM3MTk5MSBsZWdhY3ktdHJ1bmsKKzMzOTYyIDBkZmFmYWExMDQwMWMxNWM5NGIyNjU2M2ExYjcyZDcyNGIzMGEzYjEgcmVsZWFzZTIzLW1haW50CiszMzk2MyA2NjY1NGFjNjk2MjJmMWIxOThkYWFmNDJmYzdmNjgxNGI1MjNkMDQwIGxlZ2FjeS10cnVuaworMzM5NjQgM2E1MGY4MzY5YWQ1NjRlMzY4YzJlNzE4MmM4M2IxMjI1ZjQxMmM3NSByZWxlYXNlMjMtbWFpbnQKKzMzOTY1IDcxOGUxNDg4ODcxZDQwMzE1MWMwNTQwZDJiYzc5Y2U2ZDMxMWZjYTUgbGVnYWN5LXRydW5rCiszMzk2NiBmOTYyNGY5NDA2MWE3ZTUwZTZlMmNhN2FkNTM0ODhmMGJiYTA1ODgzIHJlbGVhc2UyMy1tYWludAorMzM5NjcgZGExYjE5MWIwYTZhMmQ5NTA5M2E0ZTIyZTI2MmEzNzAyOTAwOTBmMSBsZWdhY3ktdHJ1bmsKKzMzOTY4IGE1NWViNTRhNTZkMGJjNTdjZGZlM2Y2NzhiNzU1N2E5Nzg5YjcwMjQgcmVsZWFzZTIzLW1haW50CiszMzk2OSAzN2E0NTAyZjE2MTA3NGY2ZDZmNWViZTFmOGI5YmY0NWQ2YzRlN2QxIGxlZ2FjeS10cnVuaworMzM5NzAgOWRjNWU3MTU5NmY3ZmMxMzIwMjZlMGI5MWM5YWE4ZGYxNmVmMjMwNyByZWxlYXNlMjMtbWFpbnQKKzMzOTcxIGViYjgzZjI2NmZhNGYyZDQ4Yzc2MjJkYjNiMjdmNjlhODEwMzY1MDIgbGVnYWN5LXRydW5rCiszMzk3MiAyNzAwNTJmNmYwZTFlZTBmMGU3MWZkOWY2NGQ0YzEzMWQxMjk0NDcyIHJlbGVhc2UyMy1tYWludAorMzM5NzMgN2I1NzczNzdkNTQ2ZmU2NzczZTI0Zjk2MjRiYjc4MTBiNjI1MTUzYiBsZWdhY3ktdHJ1bmsKKzMzOTc0IDk0OGZkMzRlYjA1MDk2YzAzODIwMWYzZTQxN2IyNjhkYmE5NDBiZTQgcmVsZWFzZTIzLW1haW50CiszMzk3NSAxMTRkNjkzYTViODkzZWYzNTg5ZGIzYTQwNmZjNTkxMzI0OTA1MzAyIHJlbGVhc2UyMy1tYWludAorMzM5NzYgNTE3NDQyNzk0NThmYjAwNDlhNDUyZTlmNmIwNTFlNTdjMTRmNGUyZCBsZWdhY3ktdHJ1bmsKKzMzOTc3IDU3OTUxYmE1ZTliMTA3OTlkZDA0OTEzOGNhZDliYzJiMmUyMjI2MWQgbGVnYWN5LXRydW5rCiszMzk3NyAwYzEzYmE1MzU5MTgyZjJhNDY5YWIxZTAxMGZiOGY4NjZlZGJiYjhiIHJlbGVhc2UyMy1tYWludAorMzM5NzggNDM2ZDU3NzJiODdmZmY5ZTgyM2Q4ODAxMzE4ZWY0ODQ5MGVmODk4YiBsZWdhY3ktdHJ1bmsKKzMzOTc5IDBmMjZhZjdjM2I1MmIxZWM5NjFmOGJjY2ZmYjVlZmRiMzRkZDJmZWIgbGVnYWN5LXRydW5rCiszMzk3OSA1YzBhNzA0ZTFiZTRkN2VkZDIzZTNjMDQ3YzRhYWQxM2MwYzU3MDFmIHJlbGVhc2UyMy1tYWludAorMzM5ODAgYTQwNTFhZDc2NjZlNWQ1ZjNlZmM3OTYzZTc0MmU5ZjFhOGRmMDlmNSBsZWdhY3ktdHJ1bmsKKzMzOTgxIDg5Mzc1YTEzYTE4YzhhZTk3Y2QxODRkNGE4NGE3MzhlYWIzZTM0ODggcmVsZWFzZTIzLW1haW50CiszMzk4MiAyNDRiNTVjOTBlMGYzMDY2ZTJkMzM4OTMyYjIwMmFjZWI5ZmVhZDA0IGxlZ2FjeS10cnVuaworMzM5ODMgN2QyMzI5ODFkM2UzOGM0NmYwOTNiNzY4NWJmOTIzNWVkMWViYzQ0OSByZWxlYXNlMjMtbWFpbnQKKzMzOTg0IGZmODA1YTE0N2I2YTkxODk4OGYzNTQwNGU2MzkzMDg1MDkxNjU3MDggbGVnYWN5LXRydW5rCiszMzk4NSBiMTc3Yzk2ZWUzNTAzYmE4OWEyY2JhOGMzYTJmZmNhNzAyNmRlMjNlIHJlbGVhc2UyMy1tYWludAorMzM5ODYgNjZiYTBlMGVjMjAyNjk4ZTAzM2ZjY2RjMTcxOGVjYzE0Y2NhNjMwYSBsZWdhY3ktdHJ1bmsKKzMzOTg3IGE3NGI0NjNiZjc2ZGE3ZjMxYzhmYmZmOTU0N2MwMGUyMTE5NWM5NDkgbGVnYWN5LXRydW5rCiszMzk4OCA4NDk4OGU3YmM3YjdiYmE5NTRjMmVkN2ZmZjU4MDg1ODczMjhlMjhjIHJlbGVhc2UyMy1tYWludAorMzM5ODkgNzE3Y2MyYzlmZDYwZWM3OTAwOWY5ZTU3ZjJkMjM2NzRkNTllNzUxMSBsZWdhY3ktdHJ1bmsKKzMzOTg5IDVlZDQwZjJmNjVmYjVhZGVkODI2NzQ1MDUwMWI0ZmNjZGRiMDk5OTEgcmVsZWFzZTIzLW1haW50CiszMzk5MCA5YTBhYTFkYmYzNTE0NzBjMTkyZDQ1Y2E1ZDBlMzA5OTlkZGQwMjY5IGxlZ2FjeS10cnVuaworMzM5OTEgNjMxMDBjYzNmMTVhZjQwYWZhNzEyYTFkNDY0NzQ1M2IzY2Y1ZTVjZCByZWxlYXNlMjMtbWFpbnQKKzMzOTkyIGNjMmQ5ZWE0ZWJkNTBmYzY0OGZkNWFjNGU1Y2E2Y2Q5YTI3YTVkNDIgcmVsZWFzZTIzLW1haW50CiszMzk5MyBkZjAwOTNhNTk4NWMzY2IxOGUxYmZiOGYyNTQ0ZWI3ZDVlMzRmZjA4IHJlbGVhc2UyMy1tYWludAorMzM5OTQgMjI1MDJmNzk1YjQ5YzgzNzZlNjE3MTg4ODUyODQwYmFmY2UxODdlMyBsZWdhY3ktdHJ1bmsKKzMzOTk1IDRhNTkxMjJhNjY0NmExY2IwNjBjMjdkMmRiMjYwYzgyMGU1YzFhNWQgcmVsZWFzZTIzLW1haW50CiszMzk5NiAxZDZkNmZiN2YxMGI3N2JjZWIxYzI1YTJjNjgyNzk5NDc2MTg4ZTkzIGxlZ2FjeS10cnVuaworMzM5OTcgODA5MWJkOTJlZTAxNWJjNjBkYzlmZWIwNzBlNDc0ZDUwN2Q2MTdkNCByZWxlYXNlMjMtbWFpbnQKKzMzOTk4IDRiNGI1ODFiM2IyYzgzMTQ0ZGY3MmM4OTBjNzM4N2QxOTMyOTM5MDggbGVnYWN5LXRydW5rCiszMzk5OSAyNmQzZjViODdhZDNkZmFlNzg3ZGM4ODgyMGU1MGU2ZjNlNjVlYjNlIHJlbGVhc2UyMy1icmFuY2gKKzM0MDAwIDI5MDU2NDZhMmFmMzc1N2IwOTE2M2Y2YzgwMDE1ZTBjOGE3MTYxMmMgbGVnYWN5LXRydW5rCiszNDAwMSA3OWIxYTllYzUyMjMxMDEyZTJhNGY2NzNhZjc3M2Y4NjY5NTAwMmQ3IGxlZ2FjeS10cnVuaworMzQwMDIgNjQ2ZjBmMTFjNTE5YjU2YTMxMzc4ZTYzNmE1ZGFlZTEyZDM1MjZmMSBsZWdhY3ktdHJ1bmsKKzM0MDAzIDExNWZhYzlkOTA0NTZiOWI1ODU5NWY5ZGRlYTRkMmNkNzhmOTZhZjcgbGVnYWN5LXRydW5rCiszNDAwNCA1MmY0ZjJhOGNjZTc5ZGEzN2NkOGE4YzA4ZGY4MTQzM2QzMTJhOTU0IHJlbGVhc2UyMy1tYWludAorMzQwMDUgNTVhNGE0MTcyNzNlZDEyMDc3YzI0NjcwYWYyNzdiNDEzNDIzMjZiNyByZWxlYXNlMjMtbWFpbnQKKzM0MDA2IGRkZTU5NGY3MGQ2Y2U0YzFkYThkNzcyYTQ0NmJkODY1MjMwOThmYjAgbGVnYWN5LXRydW5rCiszNDAwNyBiZmM5NzRkZWY0NzQwMWMxMzE5NjE2Njg4YzNlZDFmMmM3ZDgzM2EzIGxlZ2FjeS10cnVuaworMzQwMDggNzAwYzBjYTQyOWVmY2Q0OTRlYTM1YmM2NTRmMWZiOTM4ZjhhZjQwOCBsZWdhY3ktdHJ1bmsKKzM0MDA5IDZkZDljN2M1YWExM2Q0M2ZiNGUwM2Q3MGRmMmMwNTg1ZGJkMmM3ZjAgcmVsZWFzZTIyLW1haW50CiszNDAxMCBkYTQzNGI1Mzc2NjQ5Mjg0YmZiMTMxMTk3ZjgzOGIxNTI5ODI4MzBiIHJlbGVhc2UyMi1tYWludAorMzQwMTEgNzdkYTlmODczYTRmZTQxNzE3ZGM2ODQ3NjdlODEwMzVkNGQwMGE4MCByZWxlYXNlMjItbWFpbnQKKzM0MDEyIGY0Mjk1NTU5ZWE4MzZhYjU3MWIzZjRlZDhlYzQzNzgwODQ2ZmUwZGQgcmVsZWFzZTIzLW1haW50CiszNDAxMyBjYjI4MTUzODM3M2NhZDE2MjE2YTA1MzQwNjIyZTAxNmI1YzM0OTQ4IHJlbGVhc2UyMy1tYWludAorMzQwMTQgMjRjNjJmNTNhMWM5MjkxNGFiMDQ4MGViNzBmOGRmN2E4ZmFlNGM1MSByZWxlYXNlMjMtbWFpbnQKKzM0MDE1IDQxZmYyYzEzZWE0YTk4YTc5ZTc4OTE1ZmI0NjIxMDVlODI5YzhhOTIgbGVnYWN5LXRydW5rCiszNDAxNiAxNzkzYjY1YTYyMzBmZTQ2YWJiMzNjYjAxN2I5MzY0MTU5MmM2NWM4IHJlbGVhc2UyMy1tYWludAorMzQwMTcgYzE2YzU1Mzg2MGMyZGVmYjQ4NzM5MWVhZTVkNTg2NmZhMzNhYmVkMiBsZWdhY3ktdHJ1bmsKKzM0MDE4IGZlZDY1MDExODhkYTQyN2RhNmVmZmYyNmM0OWVjYWQ5ODVmYTIzYTQgcmVsZWFzZTIzLW1haW50CiszNDAxOSA3NGJjMzQ5M2NlMDM1MmJmYjc4ZDZiMDMxYTMxODBjY2QzOGQ4OTYzIGxlZ2FjeS10cnVuaworMzQwMjAgZjAwM2U0OGY1NjJkZDQ1YWNjYjRkNjk0ZTE4YmJhYjdhZTMyZjRhNSBsZWdhY3ktdHJ1bmsKKzM0MDIxIDdlM2ExZDNjOTBmNTMwYWUwMzQzZTFmOWU1YTc0ODQzYmZjNjQ5ZDggbGVnYWN5LXRydW5rCiszNDAyMiA2NzkwY2Y3ODVmOGM1YzNlYWIxMzRjMGY1ODE0MTE5ZjFlMjk3OGU4IHJlbGVhc2UyMy1tYWludAorMzQwMjMgMzNkZDEyYjJlYmU2ZDY2NzA2MjAwMDljYWFmNmRmMThhZGVmYjljOCBsZWdhY3ktdHJ1bmsKKzM0MDI0IDEzYTkxNGUwYzVjMTQ0YzY3OTUzZTZiN2E5YmZiY2U2OGFhMWQ2ZTEgcmVsZWFzZTIzLW1haW50CiszNDAyNSAxOTYxMWQxMDFkMjMxMjlhMWZiMTk2OGJmZTNjYWQ1NjFhMzQ4ZWFjIGxlZ2FjeS10cnVuaworMzQwMjYgYzI1MDdmZTJlNjllMTE4ODAyNmQ3OTA0NzYwODRiZjE3YTFhMjRmNyByZWxlYXNlMjMtbWFpbnQKKzM0MDI3IDc3MGZlODNiZjg5ZjY1NmQ5ZjZiOTliOTdjZTFmNmIwZmVmNTc3NjggbGVnYWN5LXRydW5rCiszNDAyOCAxNmM1OTJkMzE2YzJhOTRkMGNmMTAyMmJjOGI1NWUwOTE3YWEyNTk0IHJlbGVhc2UyMy1tYWludAorMzQwMjkgNTIxZDAyNmE4MDQ4YzkzZWZkM2Y0NGQ3ODc5YmJlNWI5YzAzOGU2MCBsZWdhY3ktdHJ1bmsKKzM0MDMwIDIxNGRmNjJiY2YxM2E4ZjlmMDM0Mzk3MzIwYWNlMTgzYjIxYzA5NDQgcmVsZWFzZTIzLW1haW50CiszNDAzMSA5NjNjNjgwZWQ5YjIwYjYyZmRjY2M1OGNmYzg2NjI0NDhlNWRlNTg0IGxlZ2FjeS10cnVuaworMzQwMzIgMGJlYTlkMzg5MjlkYzM5NDQ4MmYzZjAzODE5Y2Y4YWZmYzdmZThhYiBsZWdhY3ktdHJ1bmsKKzM0MDMzIDA2MDc1ZjFiZDk0NWI2NTM2MDUyMGM1YWQ2OTZkMWFlZjNmOTM5N2MgbGVnYWN5LXRydW5rCiszNDAzNCBkNWE2YjYzNjdiYjFjMWY2NDk0ZjVkY2RlZGUyNTU1ZTc4Mzg1YzEwIGxlZ2FjeS10cnVuaworMzQwMzUgYTY0MGJmZWViOWI1NjM1Mjk3YmY0Njg5NjNiNjFiNGVlMDUyMjA3ZiBsZWdhY3ktdHJ1bmsKKzM0MDM2IDc4YmFiOGZjOGVkNWNmZjIwNmNlYmIzZTcxMzdiYjI0OGI2MzdjMmMgbGVnYWN5LXRydW5rCiszNDAzNyAyYTgyOTE0YjA4YzVlMGUyNmQwNzRlMTJlMjQ1MDQxNjZiZDg2OWI0IGxlZ2FjeS10cnVuaworMzQwMzggN2RjYzQ1NGE3MGMzYjA3N2U1M2IzMjViMWQ3ZWNiNDUwYjE0NzBhNCBsZWdhY3ktdHJ1bmsKKzM0MDM5IDJlYzkyZmViY2QxYThmNmQ4NDM4MTQ4ZDI0ZWExMjI0ZWExZTJhYWEgbGVnYWN5LXRydW5rCiszNDA0MCAxNmNlN2U5NDdhMzQ0MmIxNTJkMmRiMGNkNmEwYmYyMTYyNDAzMGRhIGxlZ2FjeS10cnVuaworMzQwNDEgNmI4NDgwMmM5NTI0MjRjZWIwNGZhM2U3OWUwZjNkMTc1YzgyZmMxZiBsZWdhY3ktdHJ1bmsKKzM0MDQyIGI1MzMyMjRmMTM3M2Y3MzU3NzA4Y2I5NWE3OGZlM2FiZmE2ZTdkZjIgcmVsZWFzZTIzLW1haW50CiszNDA0MyAzYWZiYzMzOTc1NmE2YjdiZTY3ZjlkZDdmNTY3MWJhOWQ4OWFlNDNhIGxlZ2FjeS10cnVuaworMzQwNDQgMzg3YTllMTg0MDc0YWFmOGI1ZjExZGVlMGM1MzVhM2YyODEyMDAxOCBsZWdhY3ktdHJ1bmsKKzM0MDQ1IGM0Mjk0NGVhOTc0M2U2N2JmZjRhMjMwYmJkODY5NmMwYTJhNWYzNzEgbGVnYWN5LXRydW5rCiszNDA0NiA1NjIwODlhODY3OGYyODAyNjMwOWFmMzQzZGFmMzMwMTBiNmE0OTdlIGxlZ2FjeS10cnVuaworMzQwNDcgMDVhODUwOWNmYjNjYjE5NWE4MDMyZjg3MGRkMWQ1NWI3OWFhZjA3OCByZWxlYXNlMjMtbWFpbnQKKzM0MDQ4IDYzZGY3NDMwNWQ3YmY0YjkzMDZiM2YxYTY3YjQyMDVmZTUzY2M3NjkgcmVsZWFzZTIzLW1haW50CiszNDA0OSBhMTFlMWNiMzA2NDQ1NjgzY2Q1MjZhM2YwYWZlNmZlODM4MmNhMmEwIGxlZ2FjeS10cnVuaworMzQwNTAgOGVkMGNlNjJiODJmMTk1ZDEzOTkxOGNmYWNlNDU2MDViZTFlNjAwZCBsZWdhY3ktdHJ1bmsKKzM0MDUxIGQ1ZGFiZDE1MTc1M2E1NDAwMGIxNmVhZDQzNmQyYjdhMjY5ZGQyN2QgcmVsZWFzZTIzLW1haW50CiszNDA1MiAyMDVjYzkxOGYxYWNhOGVmYjU3ZTdiYTljMmJhZTRiODYwYjE1N2Y2IHJlbGVhc2UyMi1tYWludAorMzQwNTMgZDU5ZWNhMmVmYTZhMGQ0NGVkN2E3YzQ2NTlmZGM0NDQyMWJjYmQ4ZCBsZWdhY3ktdHJ1bmsKKzM0MDU0IDAwNDUzYTA1MDhkZmU3NjdiNWY1NTY5YjU2YWMwNDlkMGM0ODZjMWYgbGVnYWN5LXRydW5rCiszNDA1NSBhYWY2YjZhODUxMGJlYTBiZTc4Nzg0ZGRmZTI3OWJiNmUyYzE3ZWFhIGxlZ2FjeS10cnVuaworMzQwNTYgZjZmYzZkMGNmMWU1YWU3M2I4NjQ1OTFiMzlhNGI0MjQwNjgyYjQ0MiBsZWdhY3ktdHJ1bmsKKzM0MDU3IDgwNGQxY2QxYjA2ZGViNDRjNGE0OWIxYTk0NThjNThkZTUzMmFlZDggcmVsZWFzZTIzLW1haW50CiszNDA1OCBkNjE1MzYwMzQ3MmUzYzJkNTJjMThjZDAyYTA5OGNiODU4ZDQ4N2VkIGxlZ2FjeS10cnVuaworMzQwNTkgZjg2ZDg2MzY4N2M2MDYzNTE0MjY2NDAyN2E4YTNjZTE3YzhiNTZiNCByZWxlYXNlMjMtbWFpbnQKKzM0MDYwIDA4OTFkMjJhZGY0ZjRiOGM1MDk3Y2NkZTA1ZjQwOGZjYmNjNDk1N2QgbGVnYWN5LXRydW5rCiszNDA2MSAxZGUxZGEzZWUzZTg3ZGQyYmJlMDU2MjFjZjI0YzA2MjliZWVhNDUyIHJlbGVhc2UyMy1tYWludAorMzQwNjIgOGI5YThjNGRlMjhlNmI1Yjc0OTgxM2JiZTI2NjFiNTNmMzUzMThkYyBsZWdhY3ktdHJ1bmsKKzM0MDYzIDA2ZWFlZjdkMDJmMjFlMzQ0MWU4ZjI0MDEyM2Q4NjlkZGE5MWVhZTQgcmVsZWFzZTIzLW1haW50CiszNDA2NCBlNWJkNTBjN2UxOTMzNmI0NGEzMDMzNmQ0NWNjNjMyNDllMTAzZDAxIGxlZ2FjeS10cnVuaworMzQwNjUgNzUwNDgxMmZkYjdlYjFjOWUyMjk0YmZlMWRlOGI3MTU4NmRiMDEzNiBsZWdhY3ktdHJ1bmsKKzM0MDY2IGYxNGUyNTEzNjliMmQ1Yzg4Y2U3ZDFlNjNkODIyYzEzZmE2ODM1ZTkgcmVsZWFzZTIzLW1haW50CiszNDA2NyA4NWU2NDI1NDNkZGFhNmMyOTk3YjQxNDYxYjNiYTBhNWYwMzg3MGZkIGxlZ2FjeS10cnVuaworMzQwNjggNDQ1NDczNmM2YTgyZWE2M2I0YzE5YmI0YTIyNTE4ZDk1MDFlYjY4YyByZWxlYXNlMjMtbWFpbnQKKzM0MDY5IGJlOTU4MjczNGI1NmFlMWYxYTYxMzQzZTZiYmUxYjc4MzMwY2IyYjggbGVnYWN5LXRydW5rCiszNDA3MCAzOGU4NzUzNTM0Yjc5NzQwMDAzNjhhOTBmYzRhMTFjNWUyZDczNmY4IGxlZ2FjeS10cnVuaworMzQwNzEgMjFiMmEyMTU5MDQ2ZGJjZmZlNWUyMmNmMDQ2ZDI1YTEzMTQwMzJjNSByZWxlYXNlMjMtbWFpbnQKKzM0MDcyIDhkYzk0YmQ5YjgzYWUwNjQ1ZGNhZjRkNzJhM2I3YTU3YTRkY2EzY2UgcmVsZWFzZTIzLW1haW50CiszNDA3MyA4MGE0YjhmNmFlMGU1MmM0NjEyMDk5ZDVjZjE4YWIzZWFlZjU1YjYwIGxlZ2FjeS10cnVuaworMzQwNzQgNDZiZGI2NmFkY2RiNzYyMDI5ZGJjNjc1MTI5YjUxNmVjYWFlMjc0NiBsZWdhY3ktdHJ1bmsKKzM0MDc1IDA1ZThiNTAzY2Q0MTRlMmIzNmE3ZjE0MDE5ZjNkOTFjNjg3NjRmYmMgbGVnYWN5LXRydW5rCiszNDA3NiA0YWU4YjY1Y2FiYTg4ODllZDY5YTFhMWVjZGFkMjIyNTA3NmFhMzk2IHJlbGVhc2UyMy1tYWludAorMzQwNzcgYzNiMmNkNmVmMjdmODhkOTlkMWJmZTBhMWNhNzFlODQ2MDQ5ODFhNyByZWxlYXNlMjMtbWFpbnQKKzM0MDc4IGU0Y2MyMzJlZDU4MzBkYjI1ZTJiYzlmZDAxZTgzNTljZWNlZTIzMGEgbGVnYWN5LXRydW5rCiszNDA3OSAzYjc5M2NmNzQ4YzU2OTA1NzhiZTI5OGRjOTA1MjdjMmVlZDEzNjU3IHJlbGVhc2UyMy1tYWludAorMzQwODAgZGM1MWFiYzNmMTc0NmQ1MThiOTAxZTU0NzRlYmVmYmZiODcxMGY3NyByZWxlYXNlMjMtbWFpbnQKKzM0MDgxIGRiMzFkMjViMTM3YTQzMzY4NWQ2MmRkYmQ1ZGY5Y2Q2NzFhYThhZTQgcmVsZWFzZTIzLW1haW50CiszNDA4MiBjZjdmYWQ5ZDZmY2MzNGE4ODc1ZGJiMzdhYTE5ZWMzOTVmZGU4NWQ1IGxlZ2FjeS10cnVuaworMzQwODIgZDA1YWYxNTYyYzY0ZjE5ODE2YjI2ZDk1OGRiOWY0YzhmMGQ0MjIwNyByZWxlYXNlMjMtbWFpbnQKKzM0MDgzIDRhYTg0YThiMWZlNDk3ZDcyNDU2Y2M2NDlmZDY4MTM0NmU2NDZhYTYgbGVnYWN5LXRydW5rCiszNDA4NCAzZWRjY2UwZWZjNTRiOGMyNTQ2YTdiNGMxYzIwZjU1NzBhZWM1Y2U5IHJlbGVhc2UyMy1tYWludAorMzQwODUgNTE1NWIzODUwMmQ0ODMxYTNlZDUxNmYxMzFmZGM4MTVjNTQwNTNkZCBsZWdhY3ktdHJ1bmsKKzM0MDg2IDM1ZjkyNDk2NTBlNmI1YzlkNzliOGYzOWQ4MmJhZjFlNmMxYTY1Y2YgcmVsZWFzZTIzLW1haW50CiszNDA4NyAwYzM2OGVjMGNjY2I0NGRlNjVjZDdjYzhjYzIyNzI5ZDE2YWE5MjZkIHJlbGVhc2UyMy1tYWludAorMzQwODggYWNjYzI1MWNkYzRhOWVjMGFjNmYyODA1MjYxYTE2NTNmZDAzZDQxOSBsZWdhY3ktdHJ1bmsKKzM0MDg5IGE1MmEwNzRlOGFlNWRiMTU0ZjllYzAwZGE1MzkxY2RiMGJiZTdkNzQgbGVnYWN5LXRydW5rCiszNDA5MCAxOTg3Yjg1NWNkM2EwYzNlMjE1ODJmZTc0ZDE2ZjEzOGZiZDQ1ZDNiIHJlbGVhc2UyMy1tYWludAorMzQwOTEgZmUxY2QzNzk1YTdhOTNhZTZlYWQ3ZDAyNjJjNGQxNWU0YTAxZTQ2NiBsZWdhY3ktdHJ1bmsKKzM0MDkyIDk5M2UzY2EzNDY1NjBjMWUxYmUyODMyYzI5OWI1ZWE5MzAxZDg4YjQgcmVsZWFzZTIzLW1haW50CiszNDA5MyBmMTVhMTFjZjg1MzE2M2NlZWExY2I1NGYyMGFhNzQwMmFmYzg5NGQ5IGxlZ2FjeS10cnVuaworMzQwOTQgMjgwYjBhMWUzMWUzNjQxYzQ5ZjRmOTc0MmEzZjQxMTI4MWFlZDc4NSByZWxlYXNlMjMtbWFpbnQKKzM0MDk1IDFlODZmMmY3MTJmMjE5M2Y4NjEyMGQ2ZjAyMDhlNjNjYTAzM2ZiOTMgbGVnYWN5LXRydW5rCiszNDA5NiA1OGZmYjZiOWY2YzU3MmU1MTdiOTc0NDRhZDhlYzVmOTI2NzI4OGY2IGxlZ2FjeS10cnVuaworMzQwOTcgYzk3MmQ5ZTQzMTY4OGU0NDYzMTU2Y2ZjYzQ0ODhjODhiMDI4NjkyMSByZWxlYXNlMjMtbWFpbnQKKzM0MDk4IDZhOTEwMTQ3MWFkMzcxYjgxMWU3YzczYTNjZGEwNjU4ZmFkNWI2ODUgbGVnYWN5LXRydW5rCiszNDA5OSBhYTc4N2UzNjEyYmJjNmZhNWY3Mjk0YmYwYTI4ODViNmZkNDY3NTI1IHJlbGVhc2UyMy1tYWludAorMzQxMDAgMDAzOTkyOGEwZjg0MzliYjNlYjBkMTQwMzdiNjQ5YjYxODU3ODJhMiBsZWdhY3ktdHJ1bmsKKzM0MTAxIGUzOGVjNGNiODdlOWMxNjQyN2JmNTNlMzM4ODJhODM3ZTdlZTVjOGUgcmVsZWFzZTIzLW1haW50CiszNDEwMiBkMDM5YjFiYjFlYTk3ZjUyMTFkOTYwZmQyNjdhNGJkNzAzZjQyYWQ1IGxlZ2FjeS10cnVuaworMzQxMDMgNjIxNTNlODI1NjRiYTMxM2Q3YzY5MzQzYmU1NzVhZDQzYTQwMWI0NCByZWxlYXNlMjMtbWFpbnQKKzM0MTA0IGU0NGEzNTljODk4ZTBjMTUwMzA3OTE2YTRiOGI3Yjk5NGNlOTA3ODEgbGVnYWN5LXRydW5rCiszNDEwNSAxMGJhNjU2Nzg1MmZkMDY4ZmY3MDBmYzVlNDMwMGFhZTc5MTJkMjFmIGxlZ2FjeS10cnVuaworMzQxMDYgOTRmMjUyODMzZTEzMTRmMGU5NjUyNTRjMTIxZDY1ZTEwMWZmNTM2MyByZWxlYXNlMjMtbWFpbnQKKzM0MTA3IGZkMTYwMTg0MDdlN2U1MzQ0NDc5ZDg3MTlkZDY2M2JlNGZkZmI2ZDkgbGVnYWN5LXRydW5rCiszNDEwOCA5Njc1Njk0OGQxYzkyNDk0YjkwMjY4NDY1YzQxMjQ2MDdhYjgxYTY2IHJlbGVhc2UyMy1tYWludAorMzQxMDkgMTFjMzIwOTVjMzA1NjFjMTA0MWQzMjUxMWFhNTNmNDlmYTk3YTU1MSBsZWdhY3ktdHJ1bmsKKzM0MTEwIGE0MzBiZTY4M2E3YWQzM2I1YjVkMjA5OTdjMmE4YmNjZDdjMmE0ZDEgbGVnYWN5LXRydW5rCiszNDExMSBhNjg3N2ZmZDk1ODJkOGFlMDMzNDQ3NzVmMTZiZTQzMDMzMGYyN2NlIGxlZ2FjeS10cnVuaworMzQxMTIgNTRhYjE5NTVkMjQyZTM0OWQ3ODIxMzc2M2RiN2JjYzY2NmI3MmI3ZiBsZWdhY3ktdHJ1bmsKKzM0MTEzIGRkOThmMjljZmM5ODYzMzBkMjliYTI3N2NmMGZmZTc4NjM3OTNmY2EgbGVnYWN5LXRydW5rCiszNDExNCA3NzczZWE3YjFjNjc0OTFkODUzZWRhNDNiZDM5YzEyN2RmOTRlYTA0IHJlbGVhc2UyMy1tYWludAorMzQxMTUgYjg3MzdhMzEwNTBjYTNjYzVkMGJjMzczNGI2NDVjMGFhNTQ2NjA5NiBsZWdhY3ktdHJ1bmsKKzM0MTE2IDYyYWUyMTkxNDRjNGY2MmNlNWFmYmVjMDExZDZmOWU1M2VjMTQ2NWIgbGVnYWN5LXRydW5rCiszNDExNyAwNDUxNzRmNmE3OWRiMzNiYjEwNzQzNGE2MTVmM2E3MmQ3NmE1NzFlIGxlZ2FjeS10cnVuaworMzQxMTggNDFiYmJiNDg5NzY0YzhjNmY3ZGIzOWUyMjgxN2NlMWNmMmZiNjZlMCBsZWdhY3ktdHJ1bmsKKzM0MTE5IDM0YmQ1YzE5OGNhZjg3MjQ5MDY4ZGYyOTI5MmQ0ODQ4MGU5NzE1NDAgbGVnYWN5LXRydW5rCiszNDEyMCA2OGUxZjg2MDU2YmMzNDliN2VjYzNiODI1NDJlZDg3Y2JhZDJmZDUxIGxlZ2FjeS10cnVuaworMzQxMjEgNTNmMWMzMmVlNjlkNzVjMjZmNTRiMzFlYTFlNThjMzZjZjgzNzcxYiBsZWdhY3ktdHJ1bmsKKzM0MTIyIGUxN2M0NGM3OWIwM2U3MTk4NzUxMGMxYTUyMTQ3ZGFlN2QyM2JmODggcmVsZWFzZTIzLW1haW50CiszNDEyMyAzN2YwZTBiMTQwMDM4NTViOTBhMGFiYmU3ZmZhMjI3N2MxY2Y3Njg0IGxlZ2FjeS10cnVuaworMzQxMjQgMjBkOTc4ODVlNWM4OTM0ZDQ5ZDA0Y2UzZDNmMzhhMjNhZGMyMGMwMiBsZWdhY3ktdHJ1bmsKKzM0MTI1IDIzOTIxYmM4MTI0YmJjNWMwNjc5MjRlMDZjMjAyYWRjMWU2MWM4ZjMgcmVsZWFzZTIzLW1haW50CiszNDEyNiBjNjhlYjRkNGI3ODc5ZTIwNDgyZDMzMWFjY2QyYmQ0NzQwODI4MzNlIGxlZ2FjeS10cnVuaworMzQxMjcgZjQ0ZDhhZGRkM2U4NmExZWUwNzJkY2Q5ZGFlMTgxZGIzNjk1YzgzMiBsZWdhY3ktdHJ1bmsKKzM0MTI4IDEzZWM4YzQ3OWZmMTAzYjQ5YjM3MDIxMTM0MzEzMWE4OWI4ZDMxMDMgbGVnYWN5LXRydW5rCiszNDEyOSAzOWJlOTljNjc3ZDVlMjc4NTI2MTUxMzlmYTIxNDE5ZDcxNzI5NTY5IHJlbGVhc2UyMy1tYWludAorMzQxMzAgNGQyMDRmYzNhZDMyZjBhMzg0ZGQ2YzJiYzlmZDEwZTYzMTQ0ODIzYiBsZWdhY3ktdHJ1bmsKKzM0MTMxIDc0MzNlN2M5ZTJjYTQ1MzM1YzFmYjY1NjQyMWIxZjlkNDk2ZjlhNDcgbGVnYWN5LXRydW5rCiszNDEzMiA0NjI3YzE2ODQ5YWVkYzliNTViZTA1ZmVkYmY3MDFjZTM0ZjAzZDJiIGFzdC1icmFuY2gKKzM0MTMzIGEyNzRiOTAzNWQxZWFlMjM5MGE4ZDcyZjliNTlkNDA4OTEzNDdlOWYgYXN0LWJyYW5jaAorMzQxMzQgMWVkYjU0NzM4MDllNmI4ZjRlNjIxMDVkY2ZjNWU2NmVjNTkxZjQ5NyBhc3QtYnJhbmNoCiszNDEzNSA5NWFiNTVkMTQyNTZmNjgwMjkyMDYwYTc1OGQ5MmIwOTMwNTNiZTdlIGxlZ2FjeS10cnVuaworMzQxMzYgZDg2NGYzMTY4Y2FjZmNiNWQwYmE2NmFiZjZjNTc3NWZhNDg5ZTcxNSBsZWdhY3ktdHJ1bmsKKzM0MTM3IDJmNTgyMmQwZjhlMTVjMGJiYTVkNWM5MDNmMGU3MGM3NjEzN2Q0ZjkgcmVsZWFzZTIzLWJyYW5jaAorMzQxMzggNzk5MTljNTUwZGZlZGRhZTc4NTA5MTdiZGI1MTkzODhhYjM0Y2M5OCByZWxlYXNlMjMtbWFpbnQKKzM0MTM5IDBhMTUwZWE4Y2JlYTI4ZjRjYjgwYzM1ZTdmNGIyNTNjOGEwMmFmZDMgbGVnYWN5LXRydW5rCiszNDE0MCBjMmMxMGYxZWI4ZTJiNzRiYmM4NGNhNDc2ZDEwMGUxOTM0YjdmZjI3IGxlZ2FjeS10cnVuaworMzQxNDEgYzljYzM1MjQ5MzIyZDc4ZjExMzM1NmIyN2Q0NDFmNThlOGU4ZGM5NSBsZWdhY3ktdHJ1bmsKKzM0MTQyIGE4ZjA0Y2JmNjU5Y2IwMjZjYzJiODFjM2U0Y2QwYjRhMmFjNGFmMTEgbGVnYWN5LXRydW5rCiszNDE0MyBjZDBjM2Y5MTZiMzRjY2YyNjllNTZkMmU4YzQ2ZWQyNDEzNzQ4YzYxIGxlZ2FjeS10cnVuaworMzQxNDQgZTgxNDdmODQxYTRhYjJkYTNlN2RiMWM2ZTA5OGIxNjcxZjZlZTA2MiBsZWdhY3ktdHJ1bmsKKzM0MTQ1IGM5ZjllYjEzZWFjOTMwNWViYTEzNGQ4MTFkODQ1NjBlZGI2OGYyZjEgcmVsZWFzZTIzLW1haW50CiszNDE0NiAxNzI1NDcwZDBkNDNjYWIyYzhkMTcwMGZhMGNmOTg5ZmExN2EwOWE1IGxlZ2FjeS10cnVuaworMzQxNDcgZWQ4YjNjMDI4MTc0YjA1MjZiYWEzYmZkYmEzZjUyY2I3MTNlOGRhMiByZWxlYXNlMjMtbWFpbnQKKzM0MTQ4IDZiZmI4MmJmYmI1NmNkZGZjMzFhMjIxZDMxOGYxMTRlMTBiYzkzNjQgcmVsZWFzZTIzLW1haW50CiszNDE0OSA0MWMyZTE3MjNjZGRkN2FjMTdjN2RkYWQwNmYwZjQzNjg4ODYyZjU0IGxlZ2FjeS10cnVuaworMzQxNTAgZWY0YTcxZjVhZjIyMzhlYmI2YWI0OGNjMDlkOWE1ZDJmYjFjODMwNyByZWxlYXNlMjMtbWFpbnQKKzM0MTUxIDMwZTQ5NWVmZTkwYTM2NWQyMDUzMjRhZmI2OWI0NWE1MTVkMmZiOTUgbGVnYWN5LXRydW5rCiszNDE1MiA3ODRlMzhhYmVkODIwMzE2ZWIwODYzMTZmNjNmMGQyZjcwMjUxOGY2IHJlbGVhc2UyMy1tYWludAorMzQxNTMgNzZlOTk4YWVlNjQ0NjU4NWYxOGEzNGY0YjcwZDgxNzg5NWRhYTBmYyBsZWdhY3ktdHJ1bmsKKzM0MTU0IDU5YjBhNDhhNTY0NDUwN2IzYzY5M2E4YmY3NGQ5NjAyOTk2YjY5NTggcmVsZWFzZTIzLW1haW50CiszNDE1NSBmODlhYjc5ODUzYTcwYzM5ZTE5ZjUzZjNlOWY1ODgzOTRlMjc5M2M0IGxlZ2FjeS10cnVuaworMzQxNTYgMGIwYWQ3ZDFkZGQ2YTk4NTMwZjRjOGE0YzhjMWRlNDdmM2M1ODc1YiBsZWdhY3ktdHJ1bmsKKzM0MTU3IDcyYmZjNzg2YTRmODkyZDUxM2YzMDVmMDdmMDE2MThhNDFjNGNiYzkgcmVsZWFzZTIzLW1haW50CiszNDE1OCBhOGExYmVmNDA3ZWIyNmNjOGJlNGIzMTRjOWY1YzVhNmI3NWI0MzllIHJlbGVhc2UyMy1tYWludAorMzQxNTkgNjYyMjMzZTY2ZDI4MmVjYTA3Zjc2YmYxNjJlYmE5NzFiNjQzMTA0OCByZWxlYXNlMjItbWFpbnQKKzM0MTYwIDdjYjY3NDViZTUyNWMwYTg0ZWMwYjE5YjE0NDQ2YTAwMzQyNDNiYzMgbGVnYWN5LXRydW5rCiszNDE2MSAyYTQ5NzA5YzBkNTYzZTRiZGMyNDY1NTA4MWExNDE3ZTc2MjI4NjUyIGxlZ2FjeS10cnVuaworMzQxNjIgODM0YmI5YTE1NDE5YjBmNjFkOTFiN2Y3M2U5ZGYxYjMzZmUzZTRjMCByZWxlYXNlMjMtbWFpbnQKKzM0MTYzIGIzOWNiOTIxMmY1Yzg4Y2MyM2U4NDlhMmU3NWI5MTAwMzRiMTY5M2EgbGVnYWN5LXRydW5rCiszNDE2NCBiYTFlMDNjZDJmNDBmYTEyYzMxOWVmYWM3NDVkNDhmODI5YzNkY2ViIHJlbGVhc2UyMy1tYWludAorMzQxNjUgYTg1YTcwMTJkZGRhNzNjZWY1ZDBmZDZmZjI1NWZjYTM3NzE1MzUwYSByZWxlYXNlMjMtbWFpbnQKKzM0MTY2IDBjYWQ5MDk0ZTIzZTljYjcxMjc5MGVhZTkyNjJmZTU4N2M1M2UzMjIgcmVsZWFzZTIzLW1haW50CiszNDE2NyBiYmE3ZTFlMGYxYzc1M2E4MjIwMGRkMDNlMGQ0ZmIxMmRmMjFmN2UxIGxlZ2FjeS10cnVuaworMzQxNjggOTFmZjcyNzAzZWQzNWFhZGY2NWQ0ZGFhOWY0MTc3MGM3Y2IwMGFhYSByZWxlYXNlMjMtbWFpbnQKKzM0MTY5IDkyMzNhZDBlYWE5ODQ2YWFiN2U1ODg2NTVlYzJiMGZlNzA3YWJlNGMgbGVnYWN5LXRydW5rCiszNDE3MCA2MWRiYTBhYTllMzc0ZGYyMjk1MGZhZDQ5MzEyN2JlYTEzODhlOGJlIGxlZ2FjeS10cnVuaworMzQxNzEgMWQ2MzEwNmU3ZGZhNDg4M2MxYzBhNGY4MDFhMzUzYjZmMzE5NjI3NyByZWxlYXNlMjMtbWFpbnQKKzM0MTcyIGQ1YzQ1YjhkYWE1MmJjMThmZDA5NWQ3MmRiN2ViOTU3M2FkYTViNDcgbGVnYWN5LXRydW5rCiszNDE3MyA4ZDIxZmIyZTI2YjA2OTM5NzM0OWI4MzA5MTQyODE1ZmE5NjJiNjI4IHJlbGVhc2UyMy1tYWludAorMzQxNzQgNjViYWM1OWEzOTI4MDY4ZTdmOTM4NWI3ZGQyOWM5YzNkMzZjMzk3MCBsZWdhY3ktdHJ1bmsKKzM0MTc1IGNiNzIzNjk5MjBhY2FjMTZiMTQzMWFkNDI1OWMzMDk4MTAwZmNjZTQgcmVsZWFzZTIzLW1haW50CiszNDE3NiBkN2YxM2E0OWU1ZWY2OGEyYjU0OGFkMzYwOWRlODVkMGJjOTJhN2NjIGxlZ2FjeS10cnVuaworMzQxNzcgNWY5MmQ2NjA3YjlmMGJhMjQ1Njk4ZDU2ZDYyNWVhYjYxNjY0OGZlMiByZWxlYXNlMjMtbWFpbnQKKzM0MTc4IDFhODE3Njk0ZWNiZDdlNDlmYzkxNWE1ZWJhOWRkNTZjMTlmOWJiNGQgbGVnYWN5LXRydW5rCiszNDE3OSA1MThjY2MwNjRjYjlmMzJiNmE2MWY0OWM2MmQwMGViMjNjNjJhNzA0IGxlZ2FjeS10cnVuaworMzQxODAgYTM3YjIzNzE0ZDNkZGRiNTk2ZTFlZmMxNWUxOTM1NDRkZmFlMzJlNyByZWxlYXNlMjMtbWFpbnQKKzM0MTgxIDU1ODU3YWViYzI0ZjIzZjJmMmUwZTg4NTJkNDRlZDIwNDlmNmQ3MzAgbGVnYWN5LXRydW5rCiszNDE4MiAxZTFlNjg1ZDY5ZWY3OGJkYjk5MTc2NzA5ODFlYTdmZmEyZmRkNGJjIGxlZ2FjeS10cnVuaworMzQxODMgOTRkODI5MzY3NDczNzAzYjE4ZDlkYWE1NGIwM2QwM2VhMDUzMWZmNSBsZWdhY3ktdHJ1bmsKKzM0MTg0IDA4NDQwOGZlZTk2MTRlNTQ4M2VmZWYwZTZmNTkyZTVjMGEwMzc2ODIgbGVnYWN5LXRydW5rCiszNDE4NSA0MjViZjA3ZWE3MGI4YzJkMWU2YTFiYTkxZmM5YmIzYjI1MTJlMGY5IGxlZ2FjeS10cnVuaworMzQxODYgOGRkMDdmN2QwOTNiN2EwMDUyZmE3M2RkNjI1MTNiNzBjMTkzODUwYyBsZWdhY3ktdHJ1bmsKKzM0MTg4IDE4NWM1ZjZiNjE1Nzg0MGIwNTQxYWMwMWIyNzg1ZTc2YjVjMzk1ZTUgbGVnYWN5LXRydW5rCiszNDE5MCBkYmE2ZWYzMDRhYTQ0MDg4MDZmMmFkYTMwOGI3ZmQ5YjIyNGQ5ODI1IGFzdC1icmFuY2gKKzM0MTkxIDc2ZDlkMThlZjNlNDk1YWIwYjBmNmUzODJjMjFkOTk3NGQ0NDljNDAgcmVsZWFzZTIzLW1haW50CiszNDE5MiAwN2U2NDBjNDAxNmRmZTM4ZDIyNWFhNDJiZDg2OGVjMDkxZDg2MTVkIHJlbGVhc2UyMy1tYWludAorMzQxOTMgYjI5MTlhNGM1NThjNmY0MDhhMjNjYjZhM2E5ZjZlNTRiMTA2YmJhMSBsZWdhY3ktdHJ1bmsKKzM0MTk0IDJmM2Y1NmYxMjgwZmNlY2RhYzA5ZmMxMzE1ZjhkOTFkMTA2N2NiNzggcmVsZWFzZTIzLW1haW50CiszNDE5NSA5ZGY5YmQ0MzBjMzZkMmM4MzhjMTZjYTVhMDgxNmY3YmY2YmNkZDY3IHJlbGVhc2UyMy1tYWludAorMzQxOTYgNzdhYzQ1NTgwYzQwOGQ1ODYyZjQ2ZmZiMGUyYWU2Yzc2NWU0NWI0ZCByZWxlYXNlMjMtbWFpbnQKKzM0MTk3IDUxZTg1ZThiZmE0NzMyYWM5ODA2NjliMzE0ZGIyNjI3ZDYzYTg5YzcgbGVnYWN5LXRydW5rCiszNDE5OCBjNDhhMmNjOTM3ODBmNDFhNzdhYWZjZWI3YTBhODExNjM0NzAzMDc5IGxlZ2FjeS10cnVuaworMzQxOTkgMWE3OTJmMzZiNjllMzZhNGM1YmVmYTYxYTIzN2ZiZjViZTgwYjdhNSByZWxlYXNlMjMtbWFpbnQKKzM0MjAwIDAyMjU3ZjZhNjgyYTc4MzE3ZWY0NmY5NWZmMTNiZDZjZTE0NWM4ODkgbGVnYWN5LXRydW5rCiszNDIwMSAxYmM2ZWYxZjZiZGI0NzkxYTk4NDUxZjNlOGJhMjdhNWUyOTNiYjc1IHJlbGVhc2UyMy1tYWludAorMzQyMDIgZDdiZjEyMzJhODZkMTQ0ZDRiYTE3MGI1MDdiNmQyYjBmODE5NGZlZSByZWxlYXNlMjMtbWFpbnQKKzM0MjAzIGIwYzNkOTg2ZjYzZjc1ODM1MzEwZDY3ZGI5MzE5NGMzYTgxMzg0ZDcgbGVnYWN5LXRydW5rCiszNDIwNCBhN2M0YWE4MWViODVjMDEwYTdiODU5ZDM3MzMzMTEwYTE2YjUwN2M4IHJlbGVhc2UyMy1tYWludAorMzQyMDUgNzY5NzlhZmM3ODViZDYzZDAwNjYxYmZkNWRjMTJlYjAzZGI2ZTk3ZCByZWxlYXNlMjItbWFpbnQKKzM0MjA2IGFkMjUzYzA2YmFmMWQ0YWYyYTMyMTM5N2NkNjQ3NmNmMjQxM2JmZDIgcmVsZWFzZTIzLW1haW50CiszNDIwNyAwOTY3Y2I5MDUzNGNjNmE3ZWUxODYzYjg4MGUwYTMwYzQzZTA0N2ExIGxlZ2FjeS10cnVuaworMzQyMDggZTJiOWQ0MzZmOGY3YWY5Y2FiZjEwZGE2OWVlMDY0M2RlOGJmNGYwNSByZWxlYXNlMjMtbWFpbnQKKzM0MjA5IDNmMjg5NjRmOGVjY2M5NDAxM2U4NjhkMjMwYzcxZWU1Y2QyOGUyZGIgbGVnYWN5LXRydW5rCiszNDIxMCA4NzE3NzZkMzgyMTNhOTA2N2M2ZDliYWY4OTE4ZWFkYmMxN2QzODlmIGxlZ2FjeS10cnVuaworMzQyMTEgMTc3NjU4Nzg1ZmViOGQyNjMxNWE5MWRjZTg5N2M2Yjk1OGUyNTIwNyBsZWdhY3ktdHJ1bmsKKzM0MjEyIDgzNjBjNzRkMDUzYmFkNWJiZTAzMzlmYzNjYjllNDFjODhjYTY1MzYgcmVsZWFzZTIzLW1haW50CiszNDIxMyA1YzVhZGI1NDQzY2NlODk4MTRiZGUwZWQ3MzAzODBjZWQzNTY1MTM4IHJlbGVhc2UyMy1tYWludAorMzQyMTQgZDZmNGRkNWE1MDA2YjlmMTM2Njc2NTRkMzkzODU1ZjdhZDEyOWZiYSByZWxlYXNlMjMtbWFpbnQKKzM0MjE1IDMzOWM4ODA0ZjgwNGE4ZWU0NTFlYjg1YmIyYzMzMzc3ZTgzNWIzZDUgbGVnYWN5LXRydW5rCiszNDIxNiA1OGYwMWNjMGYzMDBhYjE4ZjE0ODFlYzQwNjZjZjM3OWMyM2Q2NGU5IGxlZ2FjeS10cnVuaworMzQyMTcgNThmOTZhMDBkMzhkYzAwMmFkZTgxODhlNGY0ZWU2NDBhZmJlMGYwYyByZWxlYXNlMjMtbWFpbnQKKzM0MjE4IDI1NGJkM2U4OTFmNmQ5NTkxYzkxZTBmOGJiMTk4MzEwNGY2NTAyYzIgbGVnYWN5LXRydW5rCiszNDIxOSAwZWQxZWFjZTJhNjBiYWVhNzRkY2Q1ZTE2YmQzOWRjY2NlNmM5OTEyIHJlbGVhc2UyMy1tYWludAorMzQyMjAgZjRhMDFjNDA1YTQ0YjYxNzA1YTEzY2Y3NTk2ZTVlOWJkZjIyOTU3MSByZWxlYXNlMjMtbWFpbnQKKzM0MjIxIGNlOGQxZjk1MWUxOTJmZWM4ZjQ2N2UzNTA0YWJkNDY1NTc0OWNkMzUgbGVnYWN5LXRydW5rCiszNDIyMiBkNzU1OTJmNmUyZjdjZmUwZWJkODc5MzAxNDMyNDIxNTE5NjU3MTgyIGxlZ2FjeS10cnVuaworMzQyMjMgOTU0YjYwOWI4NGNkMDk5NmZiNGZkM2ZiNGU4MDdkYTc1YmYzNzI5MCByZWxlYXNlMjMtbWFpbnQKKzM0MjI0IDc3NGE5ZjIxZWRiOTdkNDQ4ZTZhNTU5YTYzNTI2NzExYTlkYTkwNDEgcmVsZWFzZTIzLW1haW50CiszNDIyNSBlOTcyMzBlNWMxY2E5MGY3N2NhMjc1MjY4Y2VmZjQ4YWY5Mjc0OTFhIHJlbGVhc2UyMy1tYWludAorMzQyMjYgOTMxZTg4ODk5MWJhYjc0MTEwOGIwZjg2Zjk4YTAxNmE4MTlkNzhiZSBsZWdhY3ktdHJ1bmsKKzM0MjI3IGYzY2UxOWQ5NjFkZGE2ZTUzZmU0NzdiNjA4ODUwNTA2NTNiOGFhMjcgcmVsZWFzZTIzLW1haW50CiszNDIyOCA1MzgzZDU2MmEzOGQ4MWJlMmU4ZmJhNDBlN2U1M2Q5OTE0MTQxOWQ0IGxlZ2FjeS10cnVuaworMzQyMjkgNmUxZjdkYmVjZDg0ZDUzYjQ5ZmQ4MDQzN2IwMzUwZGNlZDk2YWQzMSByZWxlYXNlMjMtbWFpbnQKKzM0MjMwIGM5NzAwOGVlNzE2NjA3NGIwNDk5ODJkODkzZDYyZGQ3ZGEwOTBhOGUgcmVsZWFzZTIzLW1haW50CiszNDIzMSBiMjcyOGM4N2RmOWZiZjIzMzQ3OGEzZjc1Njg5NjkwZTY5Y2FkYzFmIHJlbGVhc2UyMy1tYWludAorMzQyMzIgMjZjYzU4NjVhODM2NjMzYmYzZjBmZmMzZjdjMzU5NDE4OWQ2NDVlZCByZWxlYXNlMjMtbWFpbnQKKzM0MjMzIGExYjk2NWUxYmJlOWQ4ZjRkODZiNGU5ZDhjMTdiMzU4NTM0ZWNiMTMgcmVsZWFzZTIzLW1haW50CiszNDIzNCA4MTZkNDg2N2YyMTA2NWUxYjM5MmE4YTk4NjhkMTdmNGZkMDA0NDg2IHJlbGVhc2UyMy1tYWludAorMzQyMzUgN2U2MGQ4MjczMGZkOGFkNDE2MzcxOWM2MjVkYzlhZGZiZjk2MDhmOSBsZWdhY3ktdHJ1bmsKKzM0MjM2IDAxODJjZWM1MDhhYWI0ZmY5ZTgxOWEyZDc3ZTE0MDUwNmYxNDgyNTggbGVnYWN5LXRydW5rCiszNDIzNyBkYjYzY2IwZmM3ZGExNzlhNGEzMmEyNGJjMmE0ZTdmYTEwMTBmYjZkIGxlZ2FjeS10cnVuaworMzQyMzggOWMyZWI0MTUxMzBmMzRkM2ZlNWVkNzQ3Zjc1MzJmMWQyMjg1MjQ3MCByZWxlYXNlMjMtbWFpbnQKKzM0MjM5IDczODlmZjU3Nzg3MzkwYjM0NzMyMTFkN2ZkNTY5MGExOGJlNDIwM2QgcmVsZWFzZTIzLW1haW50CiszNDI0MCBiOTJiMzdiMDFmZmIxNjA4MzM0ZWQ5YWUyNmMzMjAwNWNjNTcwOGQyIHJlbGVhc2UyMy1tYWludAorMzQyNDEgZTViYWNiOTU5N2Y3YjQ0YWE3ZGMwZDJkNDIwYTk1OGRiNjc0Y2MyNSBsZWdhY3ktdHJ1bmsKKzM0MjQyIGZiYWQzZWZhNDBiYmRjZjZkNGI5NmEzOWUwNTJkNjE2Y2E0YWIwNzIgbGVnYWN5LXRydW5rCiszNDI0MyA2MmM2YWZlMzdkMTIzYWEzYTg0YTAxN2M5MGJmNzc3OWQyMTUzZmNlIGxlZ2FjeS10cnVuaworMzQyNDQgOTI5ZTU0ODE3NGM1ZmFlOTNiYzkwZjUwYjYyMWEwZmFiYWRlMTk3YiByZWxlYXNlMjMtbWFpbnQKKzM0MjQ1IGRiZTgzOTFlZDA2ZjIzOWI0MzlkNWNlMTJiMmJiYjk3MDQ3YTgwNzggcmVsZWFzZTIzLW1haW50CiszNDI0NSBmYTY1ZjY1MjdmZTEzNGFhOTdlMDNlMWIyYWYzNjVkNDQzYjY3ZGM3IHJlbGVhc2UyMy1tYWludAorMzQyNDcgZGE5Yjc0MDdlNTZjMmFhZTlkMjQ2NmMwYzRhNjVkMDBiYTllNGFlOCBsZWdhY3ktdHJ1bmsKKzM0MjQ4IGExNWIxYzNjMjM2YTRiMjRjOTY5Mjg1MGUwYTQ1M2Q1NTM1OGU2MTEgbGVnYWN5LXRydW5rCiszNDI0OSA3MTcwMjRkYmJiYWM3ZDg3Y2RjNDgyM2M2MGQ5OWNhOGE2MTc3NDE0IGxlZ2FjeS10cnVuaworMzQyNTAgMmExNjVkZGYyMjJkYzQyOWI3NThlMjc3MTI1NjA3NDgyNjhkZTk2NyBsZWdhY3ktdHJ1bmsKKzM0MjUxIDUyOTBhNDkzNjE3MGRjODhmYzM4ZjhmNzM2MmEyYTRjNTgzZTAyMDEgbGVnYWN5LXRydW5rCiszNDI1MiBiYjgyNTExZDE5MDZhMjc5OGIyMDU4ZDU5MmY2YjZlODhhMDE1MWVkIGxlZ2FjeS10cnVuaworMzQyNTMgNjkzZDE3ZGZiOGZkNDhkNTIyNjRhYmQ5ODA1Njc0ODdkYjg5NjVhOSBsZWdhY3ktdHJ1bmsKKzM0MjU0IDU2MzkwODkxZDk4OGM4NzU5ZWExMGM5MDRkMzE0NTcxZTE4MjBiZDggbGVnYWN5LXRydW5rCiszNDI1NSA5Y2Q0ZjRhZTdhNGMyYjhjZGNlM2FhNjRhN2MxNDc3MGY5ZjY2YzZlIGxlZ2FjeS10cnVuaworMzQyNTYgNWVjNDIzM2VkY2VkYzQ3MjU1YTRkMTFjN2YwZDg2NjIyZWZiYjIwNSBsZWdhY3ktdHJ1bmsKKzM0MjU3IDcwMzc4MmQ5MDE2MTNjNjA4YWE2OTUyM2MyYmY1ZTU3MDliMmM4M2IgbGVnYWN5LXRydW5rCiszNDI1OCA1ZDJiYTQzN2UxYmQzYjM0YWQ1NzVjYTczZTg5ZmRiZTNjMWY5MDZhIHJlbGVhc2UyMy1tYWludAorMzQyNTkgZTJmNTBhN2NjNDk0ZjkwNzQ5MjgxZjMzYjM4Y2ViYmRkNmVmMzU4MyBsZWdhY3ktdHJ1bmsKKzM0MjYwIDJjZTlmODljNGJiYzliNTdiNGY5N2Q3NjcyYWFmOTE0Yzk5MThjMDEgcmVsZWFzZTIyLW1haW50CiszNDI2MSBkZGUyNzZhODhjODhhMGQ0YmEyNTY5MzE0Nzk3ZGNlYWI0Yzg2YzBiIGxlZ2FjeS10cnVuaworMzQyNjIgMzYxYjUwYTBkMjdmYWQ3YjRjZmVjZmZiODZmMjFlZTU2OWM2NjlmOSByZWxlYXNlMjMtbWFpbnQKKzM0MjYzIDMzMmJmZjI3NWIyMThjNGU4ZDFkNzgzYWQyMmYzNzNhNDEzZThkOGEgcmVsZWFzZTIzLW1haW50CiszNDI2NCBhZDE4ZjViOGQ2ZjRjNjFiMmFhNzc4NmM1NDc1ZjIxNDg1YTQzZWZhIHJlbGVhc2UyMy1tYWludAorMzQyNjUgOGM5ZjQ4YmE1MGZhMTY1MTI4NmQ4NmQ3MTcwNWEzNjkzOTJhM2RiNCByZWxlYXNlMjMtbWFpbnQKKzM0MjY2IDA0NTcwNDlmMjVlMGEwYTE3N2MzZTUxNjAwNDNmOGM1NzdiYjQxNDggbGVnYWN5LXRydW5rCiszNDI2NyBiN2EyMTM1ZmMxNTZhYTYxYTcxMDJlNjA2MTljYTk0NWNhN2NkZTJiIGxlZ2FjeS10cnVuaworMzQyNjggMDMyYjkyNTg4ODViNzE4MjkzZTRjN2ViMzljNDA3YjM0ZGVkYjBjMiByZWxlYXNlMjMtbWFpbnQKKzM0MjY5IGE1NjcxYWVjZjM5MDEzYzZjNjkwNTA0Yzc0ODU2YTk2YTYyYTA3ZTggbGVnYWN5LXRydW5rCiszNDI3MCBhNTY2YzQ5YjcwZmFmOWY2NzRiNDdmMjRmMTNkNGU0OThmMDE4NzZhIHJlbGVhc2UyMy1tYWludAorMzQyNzEgODUyOWVhYzUwNjVkMjE2OTdmZTdmNzVhMmIxOTEwYjM0YWZhNzE3OCBsZWdhY3ktdHJ1bmsKKzM0MjcyIGQ5NmU3ZjgyZDM5OTk5OTRiYThlNTZhNDQwODU0NTYxMDA0NDYxOTAgcmVsZWFzZTIzLW1haW50CiszNDI3MyBlMWJhYTI0OWIzZjIzZDkyMjQ5ZTViY2I0MGRmZWRmMDQzMzhjZGU1IHJlbGVhc2UyMy1tYWludAorMzQyNzQgNmYzMzQzZGU2NWIyMmM3MzE2YTc2YzY2Njg3NmMwZmM4ZmYwMzliMSByZWxlYXNlMjMtbWFpbnQKKzM0Mjc1IDEyZGEzNGVmODg1NGZiMTM0ZGYxZjg4NzY3YWYzN2JiZjg5NjE1MjggbGVnYWN5LXRydW5rCiszNDI3NiA3ZjQ4ZTg5NDM5ZTBiZWRjMzNjYTZhOTE3NTJkNTM2NDI4NmNjYjRlIGxlZ2FjeS10cnVuaworMzQyNzcgZGQ0NDg1OTQzZjIzZjQ4NWFhODA3MGY4OWNhN2ZkOTcwOWEzOGZiNiByZWxlYXNlMjMtbWFpbnQKKzM0Mjc4IDk0YjRmY2U3YTk5OGIyMzgyYmQ5MjZhMWMzYmVhN2VlNTJmY2YxY2QgcmVsZWFzZTIzLW1haW50CiszNDI3OSA2YzA0MDJkYWZiMThjYzU4YWI3ZTk5YmZiMTg1MjQ4Nzc2MzFkY2FkIHJlbGVhc2UyMy1tYWludAorMzQyODAgNjNhZTFiOTFhODY4NTVhZGRjNGFlZjQ1OTIyODQwYzI0OTA3Y2E5MSBsZWdhY3ktdHJ1bmsKKzM0MjgxIDAzNWM5NzgzYTRkZGJhZmExNzRlNjA3ZDI1NGI3NjhmNzYwYWM5NGEgcmVsZWFzZTIzLW1haW50CiszNDI4MiA4NTQwNzEyZDZlMmQzMTc1YzgxYTkxMWQwN2U2NjJiOWFhZjlmMjIxIGxlZ2FjeS10cnVuaworMzQyODMgZTE4YzEwY2E3NDA4Mjg2OGRhZWY2MmVhYjMyYWM4YjVjYzMxMzFkZCByZWxlYXNlMjMtbWFpbnQKKzM0Mjg0IDU5Yjg1MWI2YWQzM2E1N2Y1MTA1NmM3MzE2YjcwZjczMmUwZDI5NmUgbGVnYWN5LXRydW5rCiszNDI4NSBhNTNlYWJlMDI3Mjk4NDdjYWU0OGI4NDVjZmY4ZTgwM2UyZTc4YWE1IHJlbGVhc2UyMy1tYWludAorMzQyODYgN2JjNTFiZTc1ZmViZmQ3MjI3ZTgyYTkwNzYzNDQ2YjJmMTg4YWE2YSBsZWdhY3ktdHJ1bmsKKzM0Mjg3IDNkMWFlMWM4NmZkMzkzNjcxNzU0ZTMyOGUwY2E3MzA5M2MzYjQ3NDkgcmVsZWFzZTIzLW1haW50CiszNDI4OCBlNmNlYTc3YWJlZTM2ZmYxZWYxOTcxNDQ4YzRlMTYxOWVlMmY4YTE0IGxlZ2FjeS10cnVuaworMzQyODkgMDYxNjRjNmRjNTA5ZjE0YzNkYTljNDAxNWVhZWY0MDY3NmY4NjMxNyBsZWdhY3ktdHJ1bmsKKzM0MjkwIGJkNGM0YjZlMDlhMTcyNDQ3NmIxYjE5YmVkMWVjY2U1NGEyNDJhNTAgbGVnYWN5LXRydW5rCiszNDI5MSAwYzlhYTdlNTU0MTU3YzU4Y2Q4MWY2Y2RkMjRkMWUwNTlkMjJlOTA0IHJlbGVhc2UyMy1tYWludAorMzQyOTIgZmM3ZWY0ZmRlMjdhMWVkZmRmYzA3ZDU0NTY2ZGY1MTc1ZDRlNTk4NyByZWxlYXNlMjMtbWFpbnQKKzM0MjkzIGI5NTc5NzZjZDhlN2RiNDYwNWY1ZGMwMmY0ZjVkMzAyODI3YmRjNTggcmVsZWFzZTIzLW1haW50CiszNDI5NCA1OGI5OGY5ODhhMDgxOWEwZDMxNTViYmE3ZDg4ZGY4NGNiNDI5NmE1IHJlbGVhc2UyMy1tYWludAorMzQyOTUgM2VmODdhMGJiYmFkMDUyNjIyNDAyMmFjNWRmYTUyODc0MDljZDI1NiBsZWdhY3ktdHJ1bmsKKzM0Mjk2IGFiM2U3NzBjM2E5OWJmYjc3MTcyMTAyNzcyMmMzZTg0YzhlZmZhMTEgbGVnYWN5LXRydW5rCiszNDI5NyA5OGE2YjYwMTUyMjk5NjMyZTg0ODFlM2I5M2NmN2FiNmQyZThiNTE4IGxlZ2FjeS10cnVuaworMzQyOTggZDM0YjZmOTJkZDMyNWQ2YmRjNmViOGVlNzYxMGZiZGMyMzk2ZGEyOCBsZWdhY3ktdHJ1bmsKKzM0Mjk5IGRhZjhjOTMyNzg2ZDI5ODRmNWU5Mjk3NTI0NDliZDQxZWJhMDg2ZmQgbGVnYWN5LXRydW5rCiszNDMwMCAzNDE3NWU5NDA4MWNhOTZhZWY4YzIyZDVjZWE4ZjQ0NmI2ZTljNTdkIGxlZ2FjeS10cnVuaworMzQzMDEgYzk1MWY5YzMwNmYzMjRmNzdjODQ0MTFmMWM2MzUxYjNhZTc3NjIzZCByZWxlYXNlMjMtbWFpbnQKKzM0MzAyIGNkZGI3YzhkYjM2NzkxNTEzZTk5N2JiMjdlM2VhODk2YjVjMGNlOTQgbGVnYWN5LXRydW5rCiszNDMwMyA2N2NkM2U3ZDBlYWNkODljODUxZDI5YTY0YmIyYmFiZTJkNzU4ZWNiIGxlZ2FjeS10cnVuaworMzQzMDQgYjZjMGY5MDhiZWI4MDlmMWM3ZDVkYTBlMjIwNDdiYTg3NWZmZjZhYyBsZWdhY3ktdHJ1bmsKKzM0MzA1IDc0MWY3OWYxMDEyYTBlYjQzMzQ5NWQyYjZhNDI5NGRjMWQ5MGYxZTEgcmVsZWFzZTIzLW1haW50CiszNDMwNiAyMDcxMjRmNmE4ZDdiMmQ0YzE1MzUyNmU1YTU1NzkyODk2OGE3YTM3IHJlbGVhc2UyMy1tYWludAorMzQzMDcgZmQ1NDAyMjBmZmM0ZjA4MDFlZjY5YmQ0NDI4Zjg2ZWYxZGQyMmJmNyByZWxlYXNlMjMtbWFpbnQKKzM0MzA4IDNlMWJmNzUxMDY0MTEwZGUzMThhYWFlNTViZjE1MjhhYzg2MTk2OGUgcmVsZWFzZTIzLW1haW50CiszNDMwOSBjODc2YWM0ZDAzMzcxOTVmOGNhYzdkMzdlNGY0Yjg3YWVkMjYwNWQ2IGxlZ2FjeS10cnVuaworMzQzMTAgNjNjNjQwODhmZjQ5ODAwNTY1NzIxNGUxYzQ2MjZhNWIzNGEyM2U3NiBsZWdhY3ktdHJ1bmsKKzM0MzExIDAwMjhlZjQ1YTUwZWE1NWFjYTdjYmQzZWE3N2I4OTA4ZGI4Y2U3YzMgcmVsZWFzZTIzLW1haW50CiszNDMxMiA2ZDc1MzgzMjc0MzQyZjAwMzVmMGUzZjg4MzQ0OTQ1MDJhNDViYTg4IHJlbGVhc2UyMy1tYWludAorMzQzMTIgN2Q3MzYyYTcxMjUzYmZmNGZjMWIwYzgyNWMxNDU2OTc3OGRiOGMzNiByZWxlYXNlMjMtbWFpbnQKKzM0MzE0IDFiOWMzYThjNDlkYjY4YmZlYzhhYTY1NjYxYzA1NDcxYjAzNmMzN2MgcmVsZWFzZTIzLW1haW50CiszNDMxNSAwYzZmZTU4YWY3ZDEyNDc5NzIzODYzMTExY2VhYjFiYmVjZTUxNmQwIGxlZ2FjeS10cnVuaworMzQzMTYgNmY5NzgyY2MyNzUwZDI4NmVlOWM2NmYwYTA0OGJhOGMwOTVjNWJiYiByZWxlYXNlMjMtbWFpbnQKKzM0MzE3IDZjZmQ5N2Q3ZmU5OGQ3ODI2MjMzNWFjNjIxNjI4YzE0MTFiZmJiMGMgcmVsZWFzZTIzLW1haW50CiszNDMxOCBmYmY2ZWU1NzY5ZDQyYTBkZjgzZThhOTQ0NjM4ZGJmMjk4YjJkNjEzIGxlZ2FjeS10cnVuaworMzQzMTkgZDNmYjc1YmM2MzU2ZTljZDU1MTBhM2ZjM2ZiZGZkZjA3MmRiZGZjNSBsZWdhY3ktdHJ1bmsKKzM0MzIwIGRlODU1MmYwYWNjNTc2NDNkZDYxYzI4OTFkYzQzMmNkMTUwNzYwMjAgbGVnYWN5LXRydW5rCiszNDMyMSBiYmU2M2E4Nzk2OWZkYmY2NjE3ZjU3MWY1YTNiM2E2Njg2ZGRlMjY3IHJlbGVhc2UyMy1tYWludAorMzQzMjIgYzk4MzAyMjI1MjkyMGQzNDkzMGMwZjlkOWU0ZDg3ZmQ0OWI0OTRkNCByZWxlYXNlMjMtbWFpbnQKKzM0MzIzIDgyNzAwYTdlOWZhNGI0MGRlMjA4NWNhMjc1NjRkMjExZmRmZjk1NWUgcmVsZWFzZTIzLW1haW50CiszNDMyNCBhNjczZDg1ZjVhZDBhNTVhNWQ5MDg1M2M5YmQ0NWZlZWU2NDVkYjlhIGxlZ2FjeS10cnVuaworMzQzMjUgNjZmZDgyN2ZlMWQ4NGJhNjgzOWJkNDQxNzQ5NWZhMDlmMGFkYmFlNyByZWxlYXNlMjMtbWFpbnQKKzM0MzI2IDllNjE2NDE5OGM0NTcyM2IzNTc3YTZiMDMxZGI5YTZiZjgxZTFjNjIgbGVnYWN5LXRydW5rCiszNDMyNyBjNzNmMTYyMjVhNzFhZGYwMTBjMjI2MTYzMTdkYjhiOTgyZDMwZDQ3IGxlZ2FjeS10cnVuaworMzQzMjggN2JkNmM2YjUzZjg3MTcwYWVhYzAzYmQ3YjNkZjZkZTA0MGY4NmVhNiBsZWdhY3ktdHJ1bmsKKzM0MzI5IGIxYzU2OTZhZDQ3NTg1ODQ0YTJhODVmOWMzNDZkMGIwOTY1ZGE1ZGIgcmVsZWFzZTIzLW1haW50CiszNDMzMCAyNzk1OWEwMmQzOWRlOWMxYTJlOGNlOGZlN2VlNWE2ZWQ0OGVmYWZlIHJlbGVhc2UyMy1tYWludAorMzQzMzEgMTA3OWJlNTg3YmFhMDc5NjJjMzQxM2UzOWQ4ODkwMDQ4ZDYxNjZjOCByZWxlYXNlMjMtbWFpbnQKKzM0MzMyIGQ0N2NjNmY3MWYzMmEzMmMxNjdhYzk2MjZhNGViNzk1NjBlODUzYjggbGVnYWN5LXRydW5rCiszNDMzMyBiN2QwMWVmZmU4OTk1MGE4MzQyZjZmZmE3YjM5NmM5MmY3MWU2YmRjIGxlZ2FjeS10cnVuaworMzQzMzQgODQ3MzFlZWE2ZGI5MGZlMjljZjhmZGIzZmM5OWM5Y2FiOTE0MzkzZSByZWxlYXNlMjMtbWFpbnQKKzM0MzM1IGYyOWYxMDhhYjQ5ZWViNWRhMmYzNTJkYTQ2ZDM5NmJiZDI3NDgyODAgcmVsZWFzZTIzLW1haW50CiszNDMzNiA1ZmYyNGQ1ZDllOTIyYjAyZWI4ODExMTViOTIxOTdhMTJmOTYwY2NkIGxlZ2FjeS10cnVuaworMzQzMzcgZTczZjNhMDMyNzYzNmFkOGQ2NmM4MjM1ZTllNDNiZTY3ZWYwYmM3MSByZWxlYXNlMjMtbWFpbnQKKzM0MzM4IDU3M2E0MGJlYzA3MDQyYTY2MTU2M2ZjMmZhYTNlMTljNGEwNDhhMjQgbGVnYWN5LXRydW5rCiszNDMzOSBmNGRlZTAxNWJmODRjMmM2YzMyMDc1OGJlNDNmM2Q0YTFmMWZlNGFlIHJlbGVhc2UyMy1tYWludAorMzQzMzkgYmUyNTMzZmIxMGE1ODdjOGRhODliMThjNWYzODFmNDc4ZDcyMDU5MyByZWxlYXNlMjMtbWFpbnQKKzM0MzQxIGU1ZTYwODkyYzNlMzU3ZTVlNzQzY2I2NGVjNzBjMzQ1OTYyNWQ3YzQgbGVnYWN5LXRydW5rCiszNDM0MiAxOGUyMzlmMjMwMjlkODBlODczMTQ5YTE5MTNlYjQ5N2ViMzM3ZWY2IGxlZ2FjeS10cnVuaworMzQzNDMgYzRlM2E2Y2FjZmNhYmZhZWJhY2Q4ZWZhNzNlZWI4ZjllOTdmZmFmZCByZWxlYXNlMjMtbWFpbnQKKzM0MzQ0IDJlZjhkNjJkY2MwOTEwNjEwZGNmZmE5NDI3MzgzMDE3OWY5ZDEzNTggcmVsZWFzZTIzLW1haW50CiszNDM0NSA5MjAwNzEyZDMxZTc5MGVjMTljOTY0Yzk2MWE4NjFmZTMwNWU2NzBhIGxlZ2FjeS10cnVuaworMzQzNDYgODE3YjZlMGY0OGQxYmE4NzQzMzM5M2MzODVlNjQzM2I5OTE0YzU4ZSBsZWdhY3ktdHJ1bmsKKzM0MzQ3IGY5ZGZkY2I4OTdiYjY2NGE0MWE4ZjM3NDdhNWZiZGE0ZDM5NGU3ZTQgbGVnYWN5LXRydW5rCiszNDM0OCBjMWE2NzJlZTE1MzAzNTJlYTE2MDA1OWEzMzU4MTI5ZWFmYzE4YzYwIGxlZ2FjeS10cnVuaworMzQzNDkgN2ZkNTUzZmI0MzE1MDM3YzZhMTFhZjkwOWJjNGU3N2YzYjIxODVhNyBsZWdhY3ktdHJ1bmsKKzM0MzUwIDA0NzFjNjdmNjFiZDc5NzY1MTE1OGJhZmUyNTI0ZmE4Y2M4MDNlYzAgcmVsZWFzZTIzLW1haW50CiszNDM1MSAwZDQwMTc4NDYyMWI0ZjQ5ODUyMzUwOGJiNTc4NzRkN2U5M2Q3ZjRiIGxlZ2FjeS10cnVuaworMzQzNTIgYTMwMTViYmEzOTk5YmRjMDNmMzE3ZjNmMTIzZjU1MGNlYTZlNjkwYSByZWxlYXNlMjMtbWFpbnQKKzM0MzUzIDM5ZTYzNWRhMjMyNmE1N2VlODBkNGJmYTkxZmEzODI4Y2M5YTg2NTYgbGVnYWN5LXRydW5rCiszNDM1NCA1ZWEwZmQyNmJkMzY0NjJkZDY1YmE1NDdmODc5MThlZjg0ZDI1YmYzIGxlZ2FjeS10cnVuaworMzQzNTUgMTU0M2E4NDBmYzdmM2EwYWNjOGE5YmVmYjZhODYxZjc1NzRjYjY0MCBsZWdhY3ktdHJ1bmsKKzM0MzU2IDcxNzU3Y2VhMjU3ZjM2OWYwZDEyYTAzZjM0NGI3OGVkNTlmODFmOTEgcmVsZWFzZTIzLW1haW50CiszNDM1NyAwNDQ3OThkOGJiZmM3YjQ4NDVjYTAzMGNhMDU4ZTczYjAzN2U3MDExIHJlbGVhc2UyMy1tYWludAorMzQzNTggODYzMGRkOGI1Y2I0NjczMWVkYTdjN2QzZWFhNWZkZTM0OGI1ZmM4MSByZWxlYXNlMjMtbWFpbnQKKzM0MzU5IDIwNWEyOTNmM2RlMDgwMmU3MGRjZDJmZDRmZmFjMjY0ZGQ0YzdkN2IgbGVnYWN5LXRydW5rCiszNDM2MCBkMGI4YzgzYzJhNmI2OWQyMDRmMzNkMjU2Mjk1NTk3Y2ZiZGE0YTlmIHJlbGVhc2UyMy1tYWludAorMzQzNjEgYTZmYjY4MjI4MTRhYWFmNjFjNjgwNmE4MjJlNWY2NDZlYTY2YWYxZCBsZWdhY3ktdHJ1bmsKKzM0MzYyIDFlYWRlNzdlYTllYTc5ZmFjMWNmNDVlMGRjMTI0YmNiNmM3NjM5NGUgcmVsZWFzZTIzLW1haW50CiszNDM2MyBkNzliYjI5ZmY5NmNjMDk0NzYzOWFhMWJkNjAwNmQ5NGNkZTkyZGI5IGxlZ2FjeS10cnVuaworMzQzNjQgODg0MWQzNGEyYzM3ZWI5ODkyOWQzM2Q1ODZlZDRhZGFjYjg1OWVjNyBsZWdhY3ktdHJ1bmsKKzM0MzY1IGNhMDMwMzIwOTYzZjVmZDUwMTI3NzRhYjhmZmYxMTdhZWIwZGM0MWMgbGVnYWN5LXRydW5rCiszNDM2NiA2ZmRlZTNmOWVjZTNhYjdjZjk2YmFiNjY0ZjVkZDM2ZmNjMjdjZmI0IHJlbGVhc2UyMy1tYWludAorMzQzNjcgYWQ2MzA2ZDM1Y2UzYTE5NWQ2OWY2MTgxODUwYTcyNzdiM2M3MTUyNiByZWxlYXNlMjMtbWFpbnQKKzM0MzY4IDNiNDdkNjA1NzE1MTdlYzIwN2FjNjViMTc2NzMzZDI3OWE0NjIyN2YgbGVnYWN5LXRydW5rCiszNDM2OSAwNTVhODA4ODFlOTZkOTM2ZjE0NDUzMDRiMjM5Y2VlYzhjZDEwYmY4IGxlZ2FjeS10cnVuaworMzQzNzAgMGUwYmE5Mjk1NTBjMDNjN2ExY2YxNDg5ZDAzMDFlYjI1MDUzM2EwOSByZWxlYXNlMjMtbWFpbnQKKzM0MzcxIDgxNDFlZWFkMTkwNzNmNGFhOTE0MTk3MGFiN2JjYmJhMDM1YmVmNmIgbGVnYWN5LXRydW5rCiszNDM3MiAxNDRiYzhmZDkxMWVlOTRjZDAwOWVmZjhmMmI3MTA0ZDlhNTEyZDExIGxlZ2FjeS10cnVuaworMzQzNzMgZjAwYTMyZWM0MTM5MzAwNGM1M2RlOTVjNGRiNDhmOWViYTlmOWQxMyByZWxlYXNlMjMtbWFpbnQKKzM0Mzc0IGFjZWY0ZTE2Y2VhZTQ4MzBhNmI3YWQwNGEyOGI2YTQ4MWY1ZTk5OWUgbGVnYWN5LXRydW5rCiszNDM3NSAzNjk5MmNhOTE4YTM0OTMzYzcxMzhiMGVhYWFjOGIwZmU5N2IyOTExIGxlZ2FjeS10cnVuaworMzQzNzYgYmIzY2U2YWVlNjkzZWNjNGViYjQxNTJhYmMxYjg4MzA2NzJiNDY3YSBsZWdhY3ktdHJ1bmsKKzM0Mzc3IDZlZjI0NTEzNjAzODlhZjk3NzcwZjhlN2UwZDM2N2UyZGVlMzhmYWUgcmVsZWFzZTIzLW1haW50CiszNDM3OCA1YzAxNzRlMmUxNGY0NTFmNWY4NjA3ODlmMTM1ZDk5OTNkYjFjN2RlIGxlZ2FjeS10cnVuaworMzQzNzkgMjk4ODg4ZTM5NWNlMGMwNWYzNzRmYmNjNGMxMDJhOGUyMDU1ZWI0MiBsZWdhY3ktdHJ1bmsKKzM0MzgwIDQ3NzZhMDVlNjMwYjVmYzM4ZjAxZThkOTgzYzNiN2YzZDQ4NzQ0NGQgcmVsZWFzZTIzLW1haW50CiszNDM4MSA1OGZlNjRmN2ZiMTkzYWViOGYyMDBhMzE5NjQxYzNmOTE5MTU3ZDM3IGxlZ2FjeS10cnVuaworMzQzODIgNDAwNjc0OTU4MDI1ZTllNDgxNjQ4MGJmYmM0NjJkNzA5ZWFjZDA4YiBsZWdhY3ktdHJ1bmsKKzM0MzgzIDA2MmMyNTViNTdhOGUyMmU5NzM2MjVmOTFkZDg3MzA0M2UyOTVmOWEgbGVnYWN5LXRydW5rCiszNDM4NCBkNWMzMjMxYmE1YmFhNDE2MzIwMzljOGNmYTc0OWQ5MmIxNDIyODE3IGxlZ2FjeS10cnVuaworMzQzODUgN2Y2MTM0ZjhiZDA2ZmQzZmM2ODI4Y2RlZGUyZWQ5N2FjOTQyN2UzNSBsZWdhY3ktdHJ1bmsKKzM0Mzg2IGFkYzYwMDE1NjcwYWU4YzIzZGIzZTNlMThlOTQwZTM5NTc1MzUxNTEgbGVnYWN5LXRydW5rCiszNDM4NyA0MWI3ZDFmMDUwMGYwZTRjMTUwNGUyZDZmOTllMTMyOTdiMDJjNmY0IGxlZ2FjeS10cnVuaworMzQzODggNjA0ODMwZjFjYWE2NTUyNmNhODlkMThhYjgwY2UyYmQ5ZGI2NDI1NyByZWxlYXNlMjMtbWFpbnQKKzM0Mzg5IGE3NDI4MjFkOWU3NWRjN2FlYWFkOGYwNjdkZTM4M2Y2NzljYWZhZGQgbGVnYWN5LXRydW5rCiszNDM5MCBmY2U4MGFkODM0NzcwOWYxYzFhNjdkZDFiNGE2Y2M2NWUzYTkzMGI3IGxlZ2FjeS10cnVuaworMzQzOTEgZmRmMGE5N2JhYjYwMGQ1OTVkYjBjMDkyNjEwNjVhNjA5OTY0N2FkNyBsZWdhY3ktdHJ1bmsKKzM0MzkyIGNmMDJjMTdkN2Y0NDliYzVmMmE4YTRiZjg1NDkwZDU5NzYzOWVhNjUgbGVnYWN5LXRydW5rCiszNDM5MyA4MzdlYTE4NjM3YmMxOTBmZTU5Nzg2ZjcyNjkzZWJlMGU4MTdkNmVmIGxlZ2FjeS10cnVuaworMzQzOTQgNGEwYzg5ZTVlMDU2NzdiZTc4ZDQzZjczYTFmZDg4OWE5YjhlY2NlNSBsZWdhY3ktdHJ1bmsKKzM0Mzk1IGMyMjZmODRkN2E2NmUyYWE4MTY2NWUzMGVjNmRjMDJmOTkxYmMzMmYgbGVnYWN5LXRydW5rCiszNDM5NiA5NjkxY2M2NDQxNjAwN2JkZGRjMTc3YmQxYmVhNjgyNGQ3ZDcwYTY1IGxlZ2FjeS10cnVuaworMzQzOTcgNDczZjRlMjk1OWE4MDQzZDliY2JkNzQ0M2VjYmMzMTRjMTk2NWJlYSBsZWdhY3ktdHJ1bmsKKzM0Mzk4IDNiNTlmYTVkMjViMTNiNWM2NWUwOTYwNzk0OWFjMDZhZjkwODZkZDYgbGVnYWN5LXRydW5rCiszNDM5OSAwZGRlY2FmOGI3NWNiZWNhMDA2NjAwNGRmMWMzZGMzMWU1MWFiZGYyIGxlZ2FjeS10cnVuaworMzQ0MDAgNmMzODQwNmMzZmFkODQxMjhlNWZiYjc1NzUyYThlYzg3YTQ1Y2IxYSByZWxlYXNlMjMtbWFpbnQKKzM0NDAxIDAwNjAxNTc4NDRkODdiZTJhY2U3ZTk1MzI2ZDc1MjAwN2EwYTI5YmUgbGVnYWN5LXRydW5rCiszNDQwMiA4ZWE4MzI2MDNlNGZlYjE3ZTE5ZTgzODA1ZDc3YWNhYTQ0NDg5NDdjIHJlbGVhc2UyMy1tYWludAorMzQ0MDMgYjQ5MWJiZjE3ZGRlOGExODQ1NmUzNGNjMmI3ZmM0ZmYwMjkyNGYxNiBsZWdhY3ktdHJ1bmsKKzM0NDA0IDUwMWE3OTM0Njc4NGFlNjI2YThiNGYwY2QwNDk4ZGVhMDdjYTE1OGEgcmVsZWFzZTIzLW1haW50CiszNDQwNSBmZDA1MmM0Zjg4NGY0NDMwYzI4MzgwMjJlYTViY2Q4OTk1YWIxZTUyIGxlZ2FjeS10cnVuaworMzQ0MDYgMDRmNDE4YWY2ODBkMDdmNGI0MGU0OTYxYWY0MWIwZDhmYTMwNmNjYyByZWxlYXNlMjMtbWFpbnQKKzM0NDA3IGEzZTg2NjY1ZjI0NWFjNWQ3ZTVlYmZiNzIyYmRlYmZiZGMxNWM4ZjYgbGVnYWN5LXRydW5rCiszNDQwOCA0Mzg4YmJhZDBiYzM3YWU5NDhjMjNhMGJhNGUzMWUyNDdhNjYyN2QzIGxlZ2FjeS10cnVuaworMzQ0MDkgNWExZDNiYzZjYzE4MDJlMDA4MzU1NzZhZjA3ZDU3MTI1MGQ1YWJkNSBsZWdhY3ktdHJ1bmsKKzM0NDEwIDJjYjRmMzIxNzk4Y2Q2ZjA0MThjNDExOWUxMjU5ZjdhNjQ2MGRkNzkgcmVsZWFzZTIzLW1haW50CiszNDQxMSAzNDI5YjFkMzhiNDAwYzYwZTBiODUwZjAxOGQ2ZDE5MzRkMjQ0YTM2IHJlbGVhc2UyMy1tYWludAorMzQ0MTIgZjFjMzBiZmIwY2MxMjYxN2UyZWUwYTM0MWI5ZmI3NDVlOWVhZjk2NiBhc3QtYnJhbmNoCiszNDQxMyA3OTg5N2VkNTNmMDM2ZjE3OTUxNWI1NTM0MGQ0YTU3MzY4YTkzMzdkIGFzdC1icmFuY2gKKzM0NDE0IDEzNDVjMjNhMDU5MTYwNTAzYmI1M2JiOGZhOTQ2NWM3NGRjZWM2YTIgbGVnYWN5LXRydW5rCiszNDQxNSAzZTNmZDU2Y2U1OTU4Y2Q0N2VlNjBlNjdhODJlMjA2NzllZmQzMzE2IGxlZ2FjeS10cnVuaworMzQ0MTYgZWZlZDQ4OWRmNTQ1OWE4MDFiMGNiOTkzNTM0ZTQ4ODdiZGE4MGRhNiBsZWdhY3ktdHJ1bmsKKzM0NDE3IDUyMDFmNjZjOTJlZjNjZGVlYjJhMzc4YzNjNTJkYmNmNDI4ZTNhN2EgcmVsZWFzZTIzLW1haW50CiszNDQxOCBjM2RmZGI2MGI5ODhmODM4OWM5NmJhM2UyZjBiYjA5MTMzNTY1ODFmIGxlZ2FjeS10cnVuaworMzQ0MTkgYzhiODgyMWU4NzJkMWM4ZTkxNzY5OGQ3ZThlMzJkYzg4YjhlNmQ5OCByZWxlYXNlMjMtbWFpbnQKKzM0NDIwIDgyODJhYTFmOTM0MzdjNjY2YzMwZDFjNDZmYmU4ZGYzNDQ2ZmYyNjEgbGVnYWN5LXRydW5rCiszNDQyMSAwNGJjZmRjZjI5MGExNTA5Y2M3NWM4MzZiODliYmIwNmExOGU2OWJiIHJlbGVhc2UyMy1tYWludAorMzQ0MjIgM2ZmMDM0NDZmMzYyYWVlZmM5ZmE5MDcwZTZjODg4MDFkMjVhYmQ0YiBsZWdhY3ktdHJ1bmsKKzM0NDIzIGJlMGNhMjZhZDU3NDBlYzY0MzdhNzA2M2I3NTBkNmFlZGM5N2Q3MjAgcmVsZWFzZTIzLW1haW50CiszNDQyNCA5ZTIxZTU2YmY1ZjNjZTE4ZmMxZmQ2YzcxODFiYjM1NjMwZDczYzEzIGxlZ2FjeS10cnVuaworMzQ0MjUgM2E5OTI5NGM4ZTViNWUzOGQxYTE3NDAxOWZlNjBjMWY1NjQwZTFhNiBsZWdhY3ktdHJ1bmsKKzM0NDI2IDFkNWQ3MjQzNmYyYTdjNDJiYTM4OGNhNjgyNjA3ODc1ZmU5ZTA5MWUgbGVnYWN5LXRydW5rCiszNDQyNyBhMjM0ZGFmMTk4MTBhYjNhODc5Yzg2ZjM2YmRjZTgwYjhiNDQyNDJkIHJlbGVhc2UyMy1tYWludAorMzQ0MjggNjg3N2Y3OTdjZjM2MTUxYTFiNDMyZWJjMDEwYzM0NjY0Y2I2YTQ0YyByZWxlYXNlMjMtbWFpbnQKKzM0NDI5IGE2NjM0MzA5ZDcwZWU2ZWJhYzk5MzY0MGU5NjliNGYzNTA1Yjg2MzAgbGVnYWN5LXRydW5rCiszNDQzMCA5YzdlMDIyN2M4MzU2OGYzZDgwYzU0MzJjZDY2MzBjZDZiZDRjNDE2IGxlZ2FjeS10cnVuaworMzQ0MzEgYjExZDk3M2FiZWNhY2JiZGMwY2Q4NTM3NDk2MmI3ZTdjOGQ4YjM0NiByZWxlYXNlMjMtbWFpbnQKKzM0NDMyIGMxMmQ0ZjE4NTNiYzAwMmIzZDYzMDc5MjJiMzdiZjA5ZDE1MWNhOTUgbGVnYWN5LXRydW5rCiszNDQzMyAwN2EwYTA3MjY2NDk5NDY3MTBlOWFjNWRjZDFmZmJhMzFhZjFhYWZkIGxlZ2FjeS10cnVuaworMzQ0MzQgMTJlNTQ5Mjk1ZjdmNWRmZmMyNDE5YzU4MmI4NWUxN2U3ZDllZjY1YiByZWxlYXNlMjMtbWFpbnQKKzM0NDM1IGEyOGE4MzAwMzFhOWFiMzIyZWY5NWExY2JjNDk0MGYxMTM2NDg0YjQgbGVnYWN5LXRydW5rCiszNDQzNiA3ZGZkZjllOGQ5NWQzNzAxMTA4NzdhNmY3Y2ZhOGIzZDc5NzQzZDViIGxlZ2FjeS10cnVuaworMzQ0MzcgMmJjNzliM2E5NTNkZmQ4N2VhNDhhNDA4OGFkMTdmMzUyZGRhNDE3NiBsZWdhY3ktdHJ1bmsKKzM0NDM4IGY4MGQ4Mzc3ODQwZjJlZDUxMzBlMjI5OWQ2NmNiMGY2MmY1NmZlYzIgbGVnYWN5LXRydW5rCiszNDQzOSA2NTFmYzhkOThkOTliNTBmN2Q5YWFlZDdiNWNhN2I2Y2NlYTNiNWNhIGxlZ2FjeS10cnVuaworMzQ0NDAgNmYxNWU3M2I1OWYyZTNhMDNmMzE3ODc0NTM1NWNmN2VkMjY4ZjU5NCByZWxlYXNlMjMtbWFpbnQKKzM0NDQxIDk1ZGY2MDBhYjliZGViNTFjMTAxODliM2ExZmFhN2ExODBhNTk4ZDAgbGVnYWN5LXRydW5rCiszNDQ0MiBlODdkNmQ3NmUzNjU3NWMxMjk1MGQ3YmQ3YTYyZGNiNzA4ZDZiODc1IHJlbGVhc2UyMy1tYWludAorMzQ0NDMgMTAyNGM1YmY3ZmVlOTEyOTQxNTkxOTJjY2UzYzFhN2VmMmE5MmNiMiByZWxlYXNlMjMtbWFpbnQKKzM0NDQ0IGFkNTgyMjk3NzE1MmZlNzM2MjA0NWRiNzY5NDM5ZDA4M2Q4NDNkYmEgbGVnYWN5LXRydW5rCiszNDQ0NSA5NzdlZmFhODYzNGU2MWY0YjllODYyNTFiOTczYzE4NDg2ZDJiYzhjIGxlZ2FjeS10cnVuaworMzQ0NDYgYjEwOGM0NDJhMzc0NDE1NGIxN2RlOGM3NjI3Y2FlNzljMjZmNjJiZCBsZWdhY3ktdHJ1bmsKKzM0NDQ3IDBlYTQxMDQ4YjJkNDc1MjU4ODgwMmU3OThhNDY3MGExZGM4MGUyZjggbGVnYWN5LXRydW5rCiszNDQ0OCBmMGRhMGNhZDVjZDUxZjQ3ZmZhM2NmYTUyNjZmMzczYTgzOTQ5NmZlIGxlZ2FjeS10cnVuaworMzQ0NDkgNDRmOTgwMDIxODFmYjI5MDY5MzJmODdiYWNlZjEzNWY0ZjE4NzM0MiBsZWdhY3ktdHJ1bmsKKzM0NDUwIDk0NTVkZWZmMWM3YzBlZjllMDJlZTM0Yzc4ZTVkM2I1ZTFjN2NhZDYgbGVnYWN5LXRydW5rCiszNDQ1MSA5MTZmNzgyZWQ2ZDUwYzZiZjkwMjhlZjg1ZTIzOTc3OTY5ZGM1MTA5IHJlbGVhc2UyMy1tYWludAorMzQ0NTIgNDI0NDUxNzI5MjhmMWZhZjUxYWNhMTVjOGE0NDVmZTZjM2ZlYzIxNSBsZWdhY3ktdHJ1bmsKKzM0NDUzIDBlODA3N2NiM2RkNWExNjdiZjcyODVhZjMyNTJmM2EyOTFjMzFmMWUgcmVsZWFzZTIzLW1haW50CiszNDQ1NCAzOGIwYjdkNDE5MzZiMTdmZmYyZjA5NGEwNDVlNTdkZDNlMDlhYThlIGxlZ2FjeS10cnVuaworMzQ0NTUgOTAzYjMxZDc3MjFhMWQ1NmMwMGM3MzkwYzMxNDdhMTcyNTE2NDE1NCBsZWdhY3ktdHJ1bmsKKzM0NDU2IDM4Yjk0YzA1Yjg1YjkyZTc2YzE5Y2Q2ZjExNjEzZWU0MGU1OTJlNjAgbGVnYWN5LXRydW5rCiszNDQ1NyA0OTRkNWNmMGJiZTNlMjExMzY0MjM1MmUzYmQ2NWJhOWQyNDVlMTVlIGxlZ2FjeS10cnVuaworMzQ0NTggYmM4ZjIyYzUzNDJjYTM3Y2U0ZjJmZGJmMTg5MTNjMDYzODU5MTMzMCBsZWdhY3ktdHJ1bmsKKzM0NDU5IGE4MTBiYWI4NWZiYzRkMGE0YWVkYmUyNGNiNjM4NjIwNTIxNGU1NTUgbGVnYWN5LXRydW5rCiszNDQ2MCBmODc0MjQzZWUzOWJhMjZlNzFjODMxZTJmNWVkOGFkMjljMTQwODUyIHJlbGVhc2UyMy1tYWludAorMzQ0NjEgMDAxMjA5YjgxOGE2N2M5MTkxZDBjODU2NTIwNTAxMjY3ZjcyYzBkNyBsZWdhY3ktdHJ1bmsKKzM0NDYyIGRiZTc4ODIyM2NlOTY4ZWY1ZWM5NmZlM2E2ODAyMmRlOWRkNmI1ODkgcmVsZWFzZTIzLW1haW50CiszNDQ2MyAwYzYyYzFhYzk2ODRkYjMxNzg1NzhhNTNlZTk0N2FlNDU2YzYyNDgzIHJlbGVhc2UyMy1tYWludAorMzQ0NjQgNzdkNTMwOGJlZGFlMTE0NGI0OWM3YjllYmVmZTBjN2NhM2RlOGE0NCByZWxlYXNlMjMtbWFpbnQKKzM0NDY1IDYyNDhkZDVkMTkyYTgwNWRjYjk2NGI1OTJmMzgwNzQwOWQ3N2QxZjUgcmVsZWFzZTIzLW1haW50CiszNDQ2NiBmYWUzNDM1NzYxYWY5ZjU4OWRlYjk0ODBlNjE2ODljYmU5ODc3MmM5IHJlbGVhc2UyMy1tYWludAorMzQ0NjcgMWQ5MmVjZGYyYmIxNGNkOTE0Y2M2MGNmNjhjYWZiM2RkM2M5YjQ2MiBsZWdhY3ktdHJ1bmsKKzM0NDY4IDZmZGRlOTZhNzIyMjdhMmM2ZTU4MDhkYTc2ZDE0MWE2NmRiOTUxMWUgcmVsZWFzZTIzLW1haW50CiszNDQ2OSBkNzcwZGMyNjQyMTJkZTdjZTU2YjlhMWJiMGIyMmUwYTExYmJlMzgyIGxlZ2FjeS10cnVuaworMzQ0NzAgNjkxNGI1ZTIwNzZmMjI0Yjc3ZGE1YzJjNTlmNTI3NTZkZWJkZGFmNyBsZWdhY3ktdHJ1bmsKKzM0NDcxIDhiMmVhZGZiOGYwY2RkYzMyYmRkYTk5Njg3YmU0NjZmZmYwMGYyYzcgbGVnYWN5LXRydW5rCiszNDQ3MiA0ZDc5ZTg0OTBjNzZlNmU2OTQ4Y2I5Zjc5NDhiMDZlMDAyNDlmYzJlIGxlZ2FjeS10cnVuaworMzQ0NzMgYjY5MDJjMGE3NTc4MmVkYmNlOTc1ZWRhMjJmMWEwZTk4OGViODAzZiBsZWdhY3ktdHJ1bmsKKzM0NDc0IGUwZWM2NDRmNWIzNmM0NWUzYTVjZmU5ZWQwYzkzYTQxYzdmNDRjNDkgbGVnYWN5LXRydW5rCiszNDQ3NSAyNmJjMDE5NDRhZThlYzllNDQxZGUzM2IyOTVhMGZmODdiNzVmMTJkIHJlbGVhc2UyMy1tYWludAorMzQ0NzYgZjc3MmQzNDAzY2E3ZDI0ODQyZjMyOWUwZDQzYmY0YmE3MDZmYWQ0OSBsZWdhY3ktdHJ1bmsKKzM0NDc3IGEwNTQ1ZTMyZGFlNzg4NDEzYWE3ZGFmYTFhZmU4NzA3MWI4Nzc4YTkgcmVsZWFzZTIzLW1haW50CiszNDQ3OCAwZmUzMDcxMGRhODA2MGIwOGZmNjM5YTA1ZTRmNDk1MTc4M2Y1OWU3IGxlZ2FjeS10cnVuaworMzQ0NzkgOGZiYjA2MjNiODU3OGQ5NjliYjM4OWY3YTY1ZjhjMGFjODQ2NmY2MiBsZWdhY3ktdHJ1bmsKKzM0NDgwIDQ4YjljYzUxNzQyYjliZjNlOTdjNDJiMzlmNjk5MDkzMGNmZDgzNmYgbGVnYWN5LXRydW5rCiszNDQ4MSBiOTQ4ZTc3NWE3OWVlMGJjNDI1YjZmZTY3NTE4NDZiMTcyNWY2MjE4IGxlZ2FjeS10cnVuaworMzQ0ODIgZmUzZjU1OTIzMDVkY2Y0ZjYxZjQzMGNhMmRhOTJmMGE3OWViYmYxMSBsZWdhY3ktdHJ1bmsKKzM0NDgzIDk4MmUzZTQwYmYxZTU4NjQ5NDY5NDdmZWQ2MmQ4NDY5YzIxYTQ3ZjAgcmVsZWFzZTIzLW1haW50CiszNDQ4NCA3OTBlZDVjNTk5YzNmNDJmYWRiZjRhMjAxMWYzODFjZTUwMGRjZDIyIGxlZ2FjeS10cnVuaworMzQ0ODUgMjc5NzM2OTkwYTE0YmUzNGU3ZWY3MWE3MzQ5MGYzZjZiMzgzZDBkOCBsZWdhY3ktdHJ1bmsKKzM0NDg2IDJiYzk1ZDQ5ZmM3YTYwZjk5ZmZiMmM5ZGFiYWNiYzAyY2I5Y2FkMGMgcmVsZWFzZTIzLW1haW50CiszNDQ4NyBlMDg0MWI1Y2YyZmQxYzFiZThkMDIwYjZiNWE0NjFjNGMyYjFkYjBkIGxlZ2FjeS10cnVuaworMzQ0ODggYTY4NzlkMTczM2Q3YmMyZDM0NzJiODkwYTg0YzIyNTY0ZGFhYmYzNCBsZWdhY3ktdHJ1bmsKKzM0NDg5IDg5N2FmY2FjYmEwMDcyZDdhYTE3NzljNDM1MTFlNDVlMmJiMWMyZTEgbGVnYWN5LXRydW5rCiszNDQ5MCA5NWZkNTU1NDVjYWMyNjk4NDE2ZTZmMWZjMWM0ZGYzMGZlYmJiNzdiIGxlZ2FjeS10cnVuaworMzQ0OTEgMmQ5ODcxMGYyNzJlY2U2YmQwNmM2ZmIxYzExOGQ5NDVkZjhiYzU1OSBsZWdhY3ktdHJ1bmsKKzM0NDkyIDA2Mjg1N2Y2OTI3Zjc5M2IxZjI0Yzg2NDdhOWY1ODM1Yzc2Y2Q4NTYgcmVsZWFzZTIzLW1haW50CiszNDQ5MyBkZjlkOGY3ZTRjOWMzNTMwMDgwNzIwNDdkMWE1NzIwOGQxZmRiOTU5IGxlZ2FjeS10cnVuaworMzQ0OTQgNjViYmZkYTI0NmM5MzA4YzVmYTQxMjc1YzIzNjgxNjI4ZGFkYzNjNyByZWxlYXNlMjMtbWFpbnQKKzM0NDk1IDNlM2Q1Mzk2M2M4ODgxYjA3YzkyOTc2ZjliYTVlNDZlN2FiYjIzMTggbGVnYWN5LXRydW5rCiszNDQ5NiBlZWUwN2YzMGVmMDY4YzEwYzkzYmEzMGFjMzFjZjExYjc4ZTZhYjc5IGxlZ2FjeS10cnVuaworMzQ0OTcgZjJlNjFkOTkwOTVlNzMxNmY0ZjNiMjExOWNlMGY4YjExYzRiZTIzZiByZWxlYXNlMjMtbWFpbnQKKzM0NDk4IDc0NzQ3ZjYyZjI4NmE4NjFiYTFlYzVkNWI3Zjc0OTdlNGY5ODhhN2MgbGVnYWN5LXRydW5rCiszNDQ5OSBmNTFkYzkwMjZlNGRmOWJlZWNlYjA1OGVlNWI5ODg3MWM1YmQ1ODI1IGxlZ2FjeS10cnVuaworMzQ1MDAgNDgzM2E5Y2QzNzdlZjFmYWQxYmE2MDc2Njg2ZWU4ZDQ2ZDcwNTBjMiByZWxlYXNlMjMtbWFpbnQKKzM0NTAxIDM3Mjg1YTAzNDZjMTRjZWFjMjlhNjUxY2MwNTc1OWUzNmE3OTVlNWMgbGVnYWN5LXRydW5rCiszNDUwMiBkOTk2ZTJkY2JkM2E3ZTU3ZmVhN2FiNTJkNTUyYTkwM2JhMjQwM2ZjIGxlZ2FjeS10cnVuaworMzQ1MDMgMjI1ZDg0OGE1Zjk2OGM4OGQ5NmNmNzc1YTgxMGRjY2Q5ZjAzZWQ0YyBsZWdhY3ktdHJ1bmsKKzM0NTA0IGVhMDU4NTA0MTA0Y2Q3MjZkMDhjMGU3YThhYmZlYzFlODMxMWY5ZWUgbGVnYWN5LXRydW5rCiszNDUwNSBjMmFlOTFhODdhNDhhYzY1OTkzYWE0NWRjOTYyZWFhYjE4YzAxMDVmIGxlZ2FjeS10cnVuaworMzQ1MDYgODRmZjEzYmNjNzUwMmYwYjA3MWY4NmE1YWRhZTIwYWU4ZTZlZjYzMyBsZWdhY3ktdHJ1bmsKKzM0NTA3IGE2MDA4YjcwYzkzOTM0Yjc4ZTU3NTRmY2MyYjZiYWQ0YzQ5MmM3MmYgcmVsZWFzZTIzLW1haW50CiszNDUwOCA0YzlhNjdjZjI4MzNhOWZlZjE3MWQyNzRkZTdhMTU2YTZmZTQ3ODMyIGxlZ2FjeS10cnVuaworMzQ1MDkgN2JiZWU5OTQyMmEwMmVjNzdmNzU5YjFjNTE2NWUxZTEwYjkxMDU0OCByZWxlYXNlMjMtbWFpbnQKKzM0NTEwIGFjOTg1ZDc3NjY1MDE3MTA5MGVmYzY2NmE4ZGU3MmVjN2YyMGMyNTkgbGVnYWN5LXRydW5rCiszNDUxMSA0MTM5YjQ1YWNmZWQwMTdjZTc1NjFlN2Q2NjM1YWI5OWNhMzdjNTdkIGxlZ2FjeS10cnVuaworMzQ1MTIgOWRhNTM3MTY3Yjc0OTdiZmYzZjVlMmRlMDYzOTc3MjQyODFmMTc3MyByZWxlYXNlMjMtbWFpbnQKKzM0NTEzIDhlYjg5ODgxNGZiOTE3NDQ5Y2VkY2I0NzgxNTIzZDFjMTg0NjIyNTAgbGVnYWN5LXRydW5rCiszNDUxNCA3ZTkzMTQ5MjZkYmUyY2M1YjU4NmY1NTJjZmIxOWMyZGM0ZjQwMjA0IGxlZ2FjeS10cnVuaworMzQ1MTUgN2VkZTc3MmYwM2QzYmMxYjc0Njk0Y2EzZTk3NDZkZDFiMGIwMjU3NiBsZWdhY3ktdHJ1bmsKKzM0NTE2IDAzNGFlNDlmOWI3YWVhZjkxMzBlNTczZTc2YzYzNzU3OTIxYzBjNGUgcmVsZWFzZTIzLW1haW50CiszNDUxNyBhZjQ0M2Q4MjBhNTA2NzcyYzdhOTBjMmNhOTQ3YzljNWY1NTVmNWE2IGxlZ2FjeS10cnVuaworMzQ1MTggYzQyYzQwMDM0NTM2Y2M5YzI2ZjEyMDVjZmVkNDhkNjc5OTg2NTMzYSBsZWdhY3ktdHJ1bmsKKzM0NTE5IGI0Yjk0NWM1ZGE0ZDc0NWEzZTUxMGJhMGJkZmIwYjhiNDc4NTljMTggbGVnYWN5LXRydW5rCiszNDUyMCBhZWNiYmEwMjk0YmI1MDYzNzhlYjRiZTgwYjg4MDRhMWRhYjFmZmY4IGxlZ2FjeS10cnVuaworMzQ1MjEgYWM4Yzc3MTZhODVkYWZiZjJiNjc4Y2VmMzYzODBiZTYwZjhkYmQ0NCBsZWdhY3ktdHJ1bmsKKzM0NTIyIDZhODdlZDYzOTY3YzI1OWY4NDA3ZGVjMjBjYmY4MTFmOWZlOGYxZWYgbGVnYWN5LXRydW5rCiszNDUyMyA2MzExMThiOWFlYzYyYWRjNDY5NmZjNDdlYTg4ODY3OTVkZjYyZjAxIGxlZ2FjeS10cnVuaworMzQ1MjQgN2JhNDNlZmQwY2ViMzJhNDk4NjdlZDY2OGU4ZjU4OGRiYTk5ZDE0ZCByZWxlYXNlMjMtbWFpbnQKKzM0NTI1IDgzMmYzYTk4OTA1OGE2ZmM0Zjg4ODQ3ZWI0NDk0OTAxNjA4MWIyYTkgbGVnYWN5LXRydW5rCiszNDUyNiA4ZGI2NGFiZjg1NmY4YzQ0YTc1ZWI1OTkxYTdlYmVkZDBjZTZkNmY5IHJlbGVhc2UyMy1tYWludAorMzQ1MjcgMmNiYTBkZTcwZGY2MmJlYjg1YzY4NzA2YTMyZTM5OGVhOThmNmY1MiBsZWdhY3ktdHJ1bmsKKzM0NTI4IDFmYmZlOWRjMGJhOGI5MmFjMWNlYzhmOTBhOTJlZmExZWIyY2I4YzYgbGVnYWN5LXRydW5rCiszNDUyOSA3ODYzZWJjZmYxMjFmMTU3NjM4OWNiYWE4ODQwNjI0NWFjZTE3Nzc1IGxlZ2FjeS10cnVuaworMzQ1MzAgYTBkMjk3ODU2MmQ1ZTEyZjk1MjNlMWEzZTczZjgzNDY3NThmMjIzOCBsZWdhY3ktdHJ1bmsKKzM0NTMxIDU2NTI4NDlmYmUyOTYwMjExZTQ1MzA2OTdhMjUwMGRkNjZhMmEyYTEgcmVsZWFzZTIyLW1haW50CiszNDUzMiBjODA0MWIwZWViM2NiMzJiNjU4Nzg5YzdmODFiODQwZDViNDQ5YmQ5IHJlbGVhc2UyMy1tYWludAorMzQ1MzMgMDdlN2EwMjA2MWQ4N2M1NzRlNDAxNjk0OGVjMGYwZTE0NjBkYjdlYiBsZWdhY3ktdHJ1bmsKKzM0NTM0IDE1MTAyNDRiZWI1ZTBlNjgzZWRkMWQzOTRmOTlmNDZlZmY5MDdlMzYgbGVnYWN5LXRydW5rCiszNDUzNSA0NGU5YWJkMDdlYjMxZTI3MzZjZjA5ODA1ZjMxNzM1ZDU2ZGM1NTc3IHJlbGVhc2UyMy1tYWludAorMzQ1MzYgOWQ4YWNkYjU4ZjljMzg4OTJmMDE3NmZkNTJjOWVkYzIwZjhmNGM1OCBsZWdhY3ktdHJ1bmsKKzM0NTM3IDUyOGNjMGZkZGE0MWNkMWYzY2I5MDQ1MjQ1ZWZhYjBiYjEwZmE3NTUgcmVsZWFzZTIzLW1haW50CiszNDUzOCBlYzFhNGEyOWQyNWRhNDU4OGMxMzEwYmY0MjFhNTdmNjIzNDYxYjc4IGxlZ2FjeS10cnVuaworMzQ1MzkgOGNkNjkxYjczODQ1MjcyY2RhMjEwYmY4YWU2ZDIyY2RmNmU1ZTlhNyBsZWdhY3ktdHJ1bmsKKzM0NTQwIDk4Yzg1NzZiOGRhN2QyNDAwMmQ4MDc2MDAwNWVmYzMxNmViMDNkZjkgbGVnYWN5LXRydW5rCiszNDU0MSA2NDIyYTM5NTAwNDAxYmY3N2Q5OTgwZTFkOTJhMGM3MDJhMmIwODNkIHJlbGVhc2UyMi1tYWludAorMzQ1NDIgZDE1MzNjYTc4ZDhjY2E4NWMxY2VmOGZjOGE3ODUwY2U2YThlYzc3ZiByZWxlYXNlMjMtbWFpbnQKKzM0NTQzIGZhYzhjNjNjNzgzODFhYjZmMDRkYWY3M2Y2YjBmMzdmYTViZGI2YWMgbGVnYWN5LXRydW5rCiszNDU0NCBiNWY2NGJlNWIyMWZkY2VlN2Q2ZTg4ODhhNmI4YTQ2MzY0MGZjNGI2IHJlbGVhc2UyMy1tYWludAorMzQ1NDUgZTU5YWI3MDhiYmIwY2E4YmNmYjdkYWQ5NDZjZTY3MTI3ZmFhOGIzMCBsZWdhY3ktdHJ1bmsKKzM0NTQ2IDk4MzNhYTViZGYzODdjODNjYmFlMTc0MjI5YjA4ZGFhMDcyMjIyZmYgbGVnYWN5LXRydW5rCiszNDU0NyBjYmJlM2Y4YmRlZjZmMjgzYWU4YjAzODQwMGY0ODAxYmVjNjU3NjRhIHJlbGVhc2UyMy1tYWludAorMzQ1NDggODI3ZDAxZGY2MWE3MTZhOGMzM2QxMGUzMTExN2QyOTdiNjUzMDEwMyByZWxlYXNlMjMtbWFpbnQKKzM0NTQ5IDg5ZGMwNjlhYWQyYzc5Mzc3YTdjMTAwZWUxNDRjNGMxNDdmNzZmMjYgcmVsZWFzZTIzLW1haW50CiszNDU1MCAzY2Q5MjA2ZGZiNzkyOTA2NDQ1ZjlkODQ0NWE3M2Q4ZmYwN2U1NjhkIHJlbGVhc2UyMy1tYWludAorMzQ1NTEgZDZjMDlhOWQ3MjQxZDZlNjA1ZGRkMDIzYTM0OGQ0ZTZlZjM0NGQwNyByZWxlYXNlMjMtbWFpbnQKKzM0NTUyIDU2MjE0M2MxYzdhZWRhZGY1ODQwYjAxYWRkMjMzNDhhMjU0MGJjM2IgbGVnYWN5LXRydW5rCiszNDU1MyA1MjJhM2Q3ZTBhOTYyMjlkY2FhZWIyNGEwN2MyMjAxYmFjMmJhNTViIGxlZ2FjeS10cnVuaworMzQ1NTQgZTY3NmM5NWU0ODQ0ODcwZTVlNWE1ZTY4Zjc5ODVkOWNiZjVjZDA5NyBsZWdhY3ktdHJ1bmsKKzM0NTU1IDE5YmIxYjJmYjIzMzhkZjFkMDc2OWI5ZGE4NjU4YTgwOTY4MTg1MTMgbGVnYWN5LXRydW5rCiszNDU1NiBmZWVjNDRmMTllY2M3OGRjYjg5MjBhMWM2ZjUwYmE4MDA4MzU4YjZjIGxlZ2FjeS10cnVuaworMzQ1NTcgZmVmNmZkZWM1MjkyNTIzZjBjODhkOTAyN2JiOTg4NzhkOWEwZjUwYSByZWxlYXNlMjMtbWFpbnQKKzM0NTU4IGE5OTc2MTRiMzVkYzk3NWMzODU2Y2ViMmI0ZDQ2MzM3MjY1NzZlNGQgcmVsZWFzZTIzLW1haW50CiszNDU1OSBmZTlhNWEyZGQyYzE1MTRkZTYyM2NlZmUyMjcwODczYzVkZGM0NGRhIHJlbGVhc2UyMy1tYWludAorMzQ1NjAgMDhjMDJhMjY1ZGJkMGRkOWExNTEwZTAwNjE4ZTA0M2UzNjdiMzNkNiByZWxlYXNlMjMtbWFpbnQKKzM0NTYxIDRlNTZmYmE5OGYxZTQ1MDhiNmZlMjZiNjAyNDM5ZGJmMThiN2NlMjAgcmVsZWFzZTIzLW1haW50CiszNDU2MiA1N2Y3NDNmYTMyMDdlMDlhNTYzMDhmZTdjNjc2MmEwYmFiODkzODRmIHJlbGVhc2UyMy1tYWludAorMzQ1NjMgM2JlNDNhZjk5MmE2ZDcyYjljNmRjZmNhZTExYjhmNTZkZGViY2RkMCByZWxlYXNlMjMtbWFpbnQKKzM0NTY0IGU1ZDIyMWY4ZDQxMGIzNzFkZGM2MTgzOWRkOTVlYjRiNDJjMGJlZTAgcmVsZWFzZTIzLW1haW50CiszNDU2NSA5MzFhNThmMjdlYmIwODVmZTM5ZTkzNzdjZTg0NmI1ZGQxY2I2M2JjIGxlZ2FjeS10cnVuaworMzQ1NjYgMjYyODIzYTEyY2E3NTMzMjgwNWUzZDk0MjBjNTk5NDVhZDBjY2NhNCBsZWdhY3ktdHJ1bmsKKzM0NTY3IGVkMDU4YmRhZDJhZGY2ZTJkNzM2NjJiOThmNTgxODg1OGEyM2E4YWUgbGVnYWN5LXRydW5rCiszNDU2OCBkY2FlNjJkMzU4ODQ5MzQ3MmY1NTFjNmUyYTlhNDk5MWNiYTVkNDcxIHJlbGVhc2UyMy1icmFuY2gKKzM0NTY5IDA4MGRmMGVkYjBhNGJjYWM0MTc4Nzg4NjU4NWM5ZDk0OTZlNDFiYzMgcmVsZWFzZTIzLW1haW50CiszNDU3MCBhZjczMTg0NmZmNzI4MjdjMzA1YTY4ZTExNWUxMDQ1MDA0OWVlNWU0IHJlbGVhc2UyMy1tYWludAorMzQ1NzEgOGE3NWY5YmE5YmFiYjEwMGE5YzAyNmM2Y2RlZDI3MTc4YjNjNzAxYiBsZWdhY3ktdHJ1bmsKKzM0NTcyIDRlMTlhMmZmMzc2YTA1ZjlkNDQ1YmZiNmI0YTZiMDZjYjljNWFhMDQgcmVsZWFzZTIzLW1haW50CiszNDU3MyBhZGU5N2I2MDUzNTI0NWY3NzZlZjJlYTE1OWM0NWJlOGI2MzUwNzI2IHJlbGVhc2UyMy1tYWludAorMzQ1NzQgNzEzNWM3Y2E5ODQyYjBkY2YwYWUxMjAxZDhlMWRhMmY1NGQ1Mjc0MCByZWxlYXNlMjMtbWFpbnQKKzM0NTc1IDc3NmE3NzE1MDYyMGMyOTNlZThiZTNjYWQwY2UzYjc1NTMzNTUwZDQgcmVsZWFzZTIzLW1haW50CiszNDU3NiBjMzFlYWRiNjk3NzkxNGVlNDg5ZmE0MDhmMDc3YTY0MzMzYTFlY2VmIHJlbGVhc2UyMy1tYWludAorMzQ1NzcgOWY1ZGQzMDJiZDkxNTMzOGZlODY2ODk1NzdiOTU5ZTFjMmU3MmYwOCByZWxlYXNlMjMtbWFpbnQKKzM0NTc4IDgyMGQxZDA0M2QzYWNjZjRmNjJhMTM4ZTkwMzdmZWQ3YzU4MWZmYmIgcmVsZWFzZTIzLW1haW50CiszNDU3OSBjODlmZDdlYWY4NzU0NzY4ODI1MTA4OGRjYmVhYzI3MWQxYmNkODY3IGxlZ2FjeS10cnVuaworMzQ1ODAgZDQ1Zjg5ODFmZGVhOTFmYzhlMjI5ZTdhMjgwNzQ5MjEyNmY0NmRiYSBsZWdhY3ktdHJ1bmsKKzM0NTgxIDA3MGM4OWVkYTgwYmRiNTQzNWNjN2UyMGQwNWY1ZmM1YWUxYjBhMzQgcmVsZWFzZTIzLW1haW50CiszNDU4MiA2NzYwNmY5YzJkMTEzZGRlMTc3M2I4NGU2MGE1YzU0MzhlM2Y4MDQyIHJlbGVhc2UyMy1tYWludAorMzQ1ODMgNDFjNGUxNDNlNmU2ZTE4ZTQxMzFhMWVkODk1OGFjNDQ4MWE1M2U3MSBsZWdhY3ktdHJ1bmsKKzM0NTg0IGZlNWNlYTUxYTNmZmZmZjAyOWMyNjU2YzgyYTZmZDRkN2RhOTA3NGEgcmVsZWFzZTIzLW1haW50CiszNDU4NSAwNGNhNGQxZjc1MWYyYThhMDI1MmViMTZjOTI1ZTNkNmE1ZmIwNzU0IGxlZ2FjeS10cnVuaworMzQ1ODYgZGE1MDU2YTNiMTUyODQxY2QxNjU5NjA4MGQ0ZDQ3MGM0M2U4N2ViNCByZWxlYXNlMjMtbWFpbnQKKzM0NTg3IDBhY2I5NWFkMTlkYzg2N2ZiYzU5ZjViZWM5MjIwYmVjNWMwOGUzZmUgbGVnYWN5LXRydW5rCiszNDU4OCBlNDY4YjI0NTFkNTRiMDUxMzMyN2UzYjQ5ZjYxNGM2ZWM3ZmVlYjI5IGxlZ2FjeS10cnVuaworMzQ1ODkgOWQ3YjdlZTA0NDcwZTE5ZTBhYTYwYjJmNzAzNDU3ZDc5ZDBhMjA0ZSBsZWdhY3ktdHJ1bmsKKzM0NTkwIGU3MDkxZDU3NTRhZWMwMTU0ZWI4ZTk0NWE0MjU0NmIwZGIwMjY4NzcgcmVsZWFzZTIzLW1haW50CiszNDU5MSAxZGIwZGU0Yzg0NTQzMjNiZmIwODc1NTZlMGNjMzgyMWZlOGY3ZDJhIHJlbGVhc2UyMi1tYWludAorMzQ1OTIgNjgyZDFiNjdjN2I1NTI0Nzg3MjUxM2FmMTljNjdiMWUyZGNkN2VkNyBsZWdhY3ktdHJ1bmsKKzM0NTkzIDJhY2QyOGJkNGQwZjFmZTYxNGUzMTBmMjZmN2FjNDM5MTI4ZjdmODkgbGVnYWN5LXRydW5rCiszNDU5NCBlMmE5YTdmZWYxOGEzM2Y4MGQ0YWU3MWM5NzEwZTFhMmVjMDg5NmI2IGxlZ2FjeS10cnVuaworMzQ1OTUgM2ZhOTUzOGFjNDk2NzI3ZDAyMGYwZTkzMzBiODkwOWUxN2M5ZDkxMCBsZWdhY3ktdHJ1bmsKKzM0NTk2IGYwMTYxMzI3YTkwMjY3ODQxMGQ5ZjkxMGIwZTI0YWIxNjNkNWZkOTIgcmVsZWFzZTIzLW1haW50CiszNDU5NyA0ZWQ0MGIzZjg4MDIzNWU3NWNhZjk3YTBlMGFmOWQ2NThmOWNlOTdkIGxlZ2FjeS10cnVuaworMzQ1OTggZDMzODk4M2QwNzE5NDdkNjkxN2NlOWJlNDdhYWY5Y2EzYjQ3NTNjYiBsZWdhY3ktdHJ1bmsKKzM0NTk5IDJlNDk3ODQwYzQ1ODgwZDVkMDIyM2YxZjQ2NzM0Y2E3YWI0MmRmZjEgbGVnYWN5LXRydW5rCiszNDYwMCA3MmQ3MGRjYzRhZjJjN2Y3MzIwNTU3YmEwNjFiMmUxZjBhODlhOWQ5IGxlZ2FjeS10cnVuaworMzQ2MDEgMmYwZTYwZDQyMzNhNjY1YmUyZjAxZmE1MTA0Y2IwZDE0YmU3ZWY4NSBsZWdhY3ktdHJ1bmsKKzM0NjAyIGNiZDkzY2YzMmVmZmVhZTlkNzYzZDRhNjkyZWU1ZWVhYTU5Zjg4ZjAgbGVnYWN5LXRydW5rCiszNDYwMyBlNjE0MDgzYWIyMGM4ZjFkMmNjMzk5YTExMjI5OWU1MmM2ZDE1Mzg0IGxlZ2FjeS10cnVuaworMzQ2MDQgZTQ4YzYxZmEyZjk4M2UxZTBkMjY2ZDJhOGEyZTJjYTdiYjUwYjVmMyBsZWdhY3ktdHJ1bmsKKzM0NjA1IDNhZTgyOTI4YjExMzFjYmIxMDVhZjNhZTg5OTkwMjM3YWM5MDMyYWIgbGVnYWN5LXRydW5rCiszNDYwNiA3ZGI3NzhjYjdlMDhhNDQ4ZDNlYWY3ZjgzNDQ2ZWM2ODBiOGQxMTFlIGxlZ2FjeS10cnVuaworMzQ2MDcgY2VlYzY5ZDI0MGYwMTllYmI3N2IwYWVlMjBmODE2MDg3ZWY4ZmQwYiBsZWdhY3ktdHJ1bmsKKzM0NjA4IDE5OTdhMTRmNmIwODhlMWE2NTFlMWZkYjhjM2NhYzdmNWYxYmZjMzYgbGVnYWN5LXRydW5rCiszNDYwOSA4OWVjZmEyNTQ1MjgzYjE3ZmYxOTcwYWJhYWZkNTVmMmVjYjI0MjlhIGxlZ2FjeS10cnVuaworMzQ2MTAgZjA4YTVlOTVjMzdjZjNkYjcyNmQ5YmRkYTliMGJiNjcxZTk2MWMyNCBsZWdhY3ktdHJ1bmsKKzM0NjExIDFlNjg2M2RkZDg0YjllODNlN2IzYTE3NTcxY2ViNGU2ZWU5OWM5M2UgbGVnYWN5LXRydW5rCiszNDYxMiA1NDM3MTM5MTk0OTllNjYxMzFkMzRkOTc2OGUyZmJkZGU0MTYwMWUyIGxlZ2FjeS10cnVuaworMzQ2MTMgMmVkMzY4MzM4NTNhYWNiYjRlZjlkYWNjNDIyZThhMzk3ZTRkMzFhOSByZWxlYXNlMjMtbWFpbnQKKzM0NjE0IGEwYThmMTU0MDFkYjBmYjEzNzRjOWIyYmEyMmViNzViZGQ4NjZjZDUgbGVnYWN5LXRydW5rCiszNDYxNSBjNWU1MjA4Y2RiYjcyMGUwMzgyNTEzZmY2YzdiNmY1ZTc0M2FlYmQ4IGxlZ2FjeS10cnVuaworMzQ2MTYgMzdjNzc2M2ZhODNkZmE2NDNmM2U3Y2MzYTM3MDQzOGIyMjE0YjYyNiBsZWdhY3ktdHJ1bmsKKzM0NjE3IDk2MTcwZjc1ZTNlOWZlZmQ4MmEzNWVkNTBmNTY2YjYzNmJiYjVkNzMgbGVnYWN5LXRydW5rCiszNDYxOCAzMDk2ZmFiMmExOWMwNTRiNTk0YmMyYjU2ODkzMzBkMTJlMTlhNTU4IGxlZ2FjeS10cnVuaworMzQ2MTkgODVmMzgzNjUxOGZlNWQxNjY5N2ZkMWYzZjg3Yjk0NWZlNmJlNzc4NCBsZWdhY3ktdHJ1bmsKKzM0NjIwIDYwMzcwNDBhMmNjZTQ3MTI0YzU1M2QxM2FmYzljZGY3MWMzNWJmNTAgcmVsZWFzZTIzLW1haW50CiszNDYyMSBiMTM2MzUzYWRkZTZhNmNmYTVmODI2NmFiMGM2NGE3OTVhNzQ0N2M5IGxlZ2FjeS10cnVuaworMzQ2MjIgNTEwYmQ3ZWVhOTI1ZmUxMGZjNzkyZDZmZWQ5YmI1YjFlNWViZDUyMSBsZWdhY3ktdHJ1bmsKKzM0NjIzIGQyNjE4MzllY2Y4N2NmODNlMjBlNGY5NzYzMTc5YjBiNjE2MzRhNWEgbGVnYWN5LXRydW5rCiszNDYyNCAzOWZhN2I4ZmNjMDc3YWNhNzE0ZjI4MDM4YjJiYzdmNTZhYTA2NGI0IGxlZ2FjeS10cnVuaworMzQ2MjUgM2Q5YjM2ZDZhYjg5OGIyYWEwOTE1ZGE1MTFlMmFmM2YxMDAzZjFiYyBsZWdhY3ktdHJ1bmsKKzM0NjI2IGNkNzYyNGIwMjVhMGZlODJlMmUzNmJmMmM3YzU1NWM3ZmZlNzdhZWIgcmVsZWFzZTIzLW1haW50CiszNDYyNyBlM2ViZDc0MGQxZWZiNDg2OGJmZmQxODNjNzUzYTQwYzk3MjBkMjFmIHJlbGVhc2UyMy1tYWludAorMzQ2MjggYTI5YTU4NWIwM2Q5NjBmMzExNGE5YjdlNDgwMmEwZjNkOWUyYTM0OCBsZWdhY3ktdHJ1bmsKKzM0NjI5IDQzMjBjY2E0ZWQ4NDM4Mzc3MjA5ODRhOWNiNmExYzk1YzRiOWI5N2QgbGVnYWN5LXRydW5rCiszNDYzMCBkNDMyZjgyYjk4NmZiZjFiNDdkMThiMWJiOGY1MzU5MTA4ZjY0MDc2IGxlZ2FjeS10cnVuaworMzQ2MzEgNTY3ZmEwNjQ5ZTgzNWU4MWNjNGViNjlmOTgzNDY2OTVlYTE4YmVhMyByZWxlYXNlMjMtbWFpbnQKKzM0NjMyIGY2NDhjN2YxZThiODU5OGIzMDIyYTgyODA2ZTUxMDZiNTBhMDJhZDUgbGVnYWN5LXRydW5rCiszNDYzMyA4MDgxNjQzYzM3M2ZmYmFlMjE1NjhlMDhiZjY3Yzc4NWVlMmIzMzcxIGxlZ2FjeS10cnVuaworMzQ2MzQgODE3MzNjN2E5NWM4ZGRlNjExZjA3MGQxM2JjNmMyNmZkMmQ5YmY0NSByZWxlYXNlMjMtbWFpbnQKKzM0NjM1IDEyYzIyZDZiMWVjMDY4YjAzYmNhNjdiNzNkYmVmMmMwZDVhZDI0MjMgbGVnYWN5LXRydW5rCiszNDYzNiA4YWE5MjM3ZjZkZDZhYTEwOGU0OWJjNzhlYjdkNmY1MTkyMjkyN2NiIGxlZ2FjeS10cnVuaworMzQ2MzcgYTE4MTk4ZjQ5NGY0NDc4ZGRlMjFiODMzOGU3YTkxYjYxMGY1MGM1NCByZWxlYXNlMjMtbWFpbnQKKzM0NjM4IDMyMTNhYWE4MmM3Yjc5NmIzYzlmYjFjMzM2YWMyZWIyMTQxODFhYjkgcmVsZWFzZTIzLW1haW50CiszNDYzOSAwNDY4ZjlkZGMwNjlkNmZmMGYzZmE3Njk2MzVkMzE1ZTZlMDQ4ZDg4IGxlZ2FjeS10cnVuaworMzQ2NDAgYTBlY2FlMzMzMmE4YjZiMWJkMzEwODFlYTI1OWEwMDM4YTAyZDM2NiBsZWdhY3ktdHJ1bmsKKzM0NjQxIDdhNmIxYzlmYjg5ZTU0MGVkY2U2Yzg0MmRhMGQ5M2YzNjUzN2M5ODAgcmVsZWFzZTIzLW1haW50CiszNDY0MiA4N2MwNDIyY2RlNzA4YzM2OGVhMjY2NDkwNjYzMTg3Y2VhNDRkMzA1IHJlbGVhc2UyMy1tYWludAorMzQ2NDMgNTI2NjgyNDU2YThkNWE2OTE3ZjExNjRkMDIxN2FmOTg5Yjg0OGMwZCBsZWdhY3ktdHJ1bmsKKzM0NjQ0IDk2NTRlNWYyNDczZTRmOTQ5NzAyMTIwZTljYjdkMzAwNzYzMWI4NDAgbGVnYWN5LXRydW5rCiszNDY0NSA1YzRjZmY4ZmE2ZWNmOTFjNGQ0OTkwZTdjNjI2YWRlYzcyMDM4NTU5IGxlZ2FjeS10cnVuaworMzQ2NDYgYzAwYjVmMTc5NjMzY2ViZWRlMDg4YTA5NDNiMmVjNDMyOWY4ZWNiMyByZWxlYXNlMjMtbWFpbnQKKzM0NjQ3IDU0ZmY2OGU5NzNlZWJhZTBkOTkwZTFiZTUzMDZiMzc0YjBmNDg0MmYgbGVnYWN5LXRydW5rCiszNDY0OCAyODcyMDBhZjk0NmZiN2JkNTE3MzM4ODlhODk1OGM2YWIwYzE1YmU4IGxlZ2FjeS10cnVuaworMzQ2NDkgZmE2ZThkNGY4OGM2NzgyODJlNzE2ZGUwZDU5NDM5ZjYyNTIwZjI0NSBsZWdhY3ktdHJ1bmsKKzM0NjUwIDdmNjk1YzU5ODI4NzNiOTFlYzdlNWQ0YjVhN2I4ZDJkMzg0M2NjM2UgbGVnYWN5LXRydW5rCiszNDY1MSAxOWZmOTcyNDM0YjNkMjYxYmZjM2MzM2M4ZDNmYjFiNzkzMmQwMDliIGxlZ2FjeS10cnVuaworMzQ2NTIgNGVmZmNiZjgwYjQ1YzZlNDBmNDUxNzgwZGU0MWNhOTQ0YTJjMDA2MyBsZWdhY3ktdHJ1bmsKKzM0NjUzIDVkMmIwZTkwNjJkNTMzN2QwNjk3OWIyMjEzMjNiNjMxMmQ4YzUzNzYgbGVnYWN5LXRydW5rCiszNDY1NCA4OTQxZjJlZTkwOTQ5ZjAzZTExNDU5MmI0YzEyOWM2M2UxOTk1MjQwIHJlbGVhc2UyMy1tYWludAorMzQ2NTUgNTFlYmY1NDc0ZjNkYzk4NGYxY2M4Y2E5YjA5NTlmZDlkMTdiYjYxZCBsZWdhY3ktdHJ1bmsKKzM0NjU2IDgxM2E2ZDljNTg4ODI5MDdhODk5MWY3MjA1Y2EzM2RkMWIzOWM0MTUgcmVsZWFzZTIzLW1haW50CiszNDY1NyBiMjQ5OTVhOTY2NGJkNTQ4NDBhZmYzODk0Y2MxZjVmODgzOTMyNDllIGxlZ2FjeS10cnVuaworMzQ2NTggYmYxMzE5NTgxZGM0NzlmOWNiYTBhMjAxN2Q2YmZkOGY2MmI3MjJkYSByZWxlYXNlMjMtbWFpbnQKKzM0NjU5IGNiN2Q1ZTIzZGJjNzdmMTA0MTQxZjYwZjA1ODZkOWM1MDRiNGQxZDMgbGVnYWN5LXRydW5rCiszNDY2MCA3MDE4ODBkMjY2ZWNjYjQ4MTMwNGNiYmU0NjdkNmQ3ODQ1NWQyYjVhIGxlZ2FjeS10cnVuaworMzQ2NjEgNmNhMGRiZDZjY2M5OGExOTZlZWJmN2E5ZDI2Y2I1MzM3ZTcxZWE4MiBsZWdhY3ktdHJ1bmsKKzM0NjYyIDYyNTE3Y2M0YzRlNzkyMDMwMWYyODVmMTk3MWIwOWQyNWM2OTljM2YgcmVsZWFzZTIzLW1haW50CiszNDY2MyA3YmU0NWY3YTcxOGYzNTY5NDQxMzRiMzBlZWM3YmM3MDBhM2RmNzhlIGxlZ2FjeS10cnVuaworMzQ2NjQgZjcyOWM0ZDUzMDQ4YWMyMjQzMjcyNWVlOWQ0M2YxODM5NjE2OTk3MiByZWxlYXNlMjMtbWFpbnQKKzM0NjY1IDVmNDlmYzIzMWI0Yzg4NWYxMDUwNTExZTYzNjBlYTg5ZDg1YTY2N2UgbGVnYWN5LXRydW5rCiszNDY2NiAyMzM4MmExMzRkNWFiNjFhODBkNThkOGJlOTRjZGE4MGRkMTFlMTJhIHJlbGVhc2UyMy1tYWludAorMzQ2NjcgMWRhMzlhNzVlZDM4NGE4YTEzZGE0OTM5OTczNzVkYTM1MTQzZTJiYSByZWxlYXNlMjMtbWFpbnQKKzM0NjY4IDM4ZTcyZjRmM2RmNWU5ODEwZWVmZmU4NWZmM2YyYTI2Njg1OWZlM2EgbGVnYWN5LXRydW5rCiszNDY2OSAxMTYzNmU3OTg3YjYzN2ZlYzFiYjZhMTRkYjk2ZTA5ODQ4ZTQ4YjU2IGxlZ2FjeS10cnVuaworMzQ2NzAgNDVmNzA3MjhkYmFjNDgwODBlNGFlMDU5ODE0ZTQ4YjIwOGExYTZmZSBsZWdhY3ktdHJ1bmsKKzM0NjcxIDMzMTM1NzFjNjU3NDNhOWVjNDNjYjk2YjJjODRlMTEzNTBjNmU0ZjggbGVnYWN5LXRydW5rCiszNDY3MiA4ZmEzYzU4NjlmNTFhN2I1ZWRiOGVmYzE1M2U2OWU4ZWZjZTgyNTBkIGxlZ2FjeS10cnVuaworMzQ2NzMgMDdkM2M4NjY4ZjhiNDcxYzhhYWUxYTJlNjA5YjRlMzQ4NjZmODM3YyBsZWdhY3ktdHJ1bmsKKzM0Njc0IDUzZDI4MTMzOTVmNGVmODA2OWU0NGQ4MTg3NDM4Y2UyMDcxZjNkNjcgcmVsZWFzZTIzLW1haW50CiszNDY3NSA3YWFhNDBiYzJiMTdjOTRkZjJjMDU3ZWRmMzgxM2ExMjdkYTIzMDRmIGxlZ2FjeS10cnVuaworMzQ2NzYgNDZiOWZkZDI3ZWMyMWZiZmE3ZGFiYWQzMGE3MjZiZmJmYzcwMDQ0MSBsZWdhY3ktdHJ1bmsKKzM0Njc3IDE5MDRkOGIwMzhiNjY4ZDllOThkYjZiZGJkNzQwZGUxNDZhMGQ4MjggbGVnYWN5LXRydW5rCiszNDY3OCA4YWZlY2QzNmZiOGUzNTE1NzcwM2Q0NDkwYzEzYjlkNDEzOGIwYzI0IGxlZ2FjeS10cnVuaworMzQ2NzkgMzE3ZmNjNWExODRkNDhiODk0OTU1YWVkNWU4ZGFlYzAxMDI0MWJkNSBsZWdhY3ktdHJ1bmsKKzM0NjgwIDIyMTA3YzVhMTc2ZTMxMzM4ZGI4NzI2MzY2YjVkNzU5NDM2ZjdiNjIgbGVnYWN5LXRydW5rCiszNDY4MSBmMTk2MjVmM2MxOThlZWY0YTAyNDMxZWRmZWZjMTYyNDZjM2NjNWFhIGxlZ2FjeS10cnVuaworMzQ2ODIgNWJjZTk1ODllZjBiMDM2YTk3MjE4Yjc4YzI1Y2M4MTQ3MGQ2ZjBiYiBsZWdhY3ktdHJ1bmsKKzM0NjgzIDRlZGFiYzI5NzZmNzNmYzUxMzI4YjI1NDdjZWYxMzI3MDE3NTAwNmMgbGVnYWN5LXRydW5rCiszNDY4NCBkZDZhNTEwYWUwZDljMDk5NDQzNDcwYjE3YzE0YmQ2OTRkN2ZhZDY4IGxlZ2FjeS10cnVuaworMzQ2ODUgM2MxYzgxZDY0MmUwODc3ZWM5MDA1NDlhMTlkMGQ3MmQ1Y2U0ODAxNiBsZWdhY3ktdHJ1bmsKKzM0Njg2IGI2YzEzOTU0NGMxNmQ2YWI3YTI0MTI1OGRjMTU0YWRiMDQ2N2YwOGEgbGVnYWN5LXRydW5rCiszNDY4NyBlNGY5ZTc0YmE1NmRjODU3Y2NhZjY4OTQzZDkyMzU4YjRhZWNhZDAxIGxlZ2FjeS10cnVuaworMzQ2ODggMTZjNjgyZTNlNTdmOWVmMjgwMjMzYzIxMjZkMjA0ZmQ1NzhmZGEwMiBsZWdhY3ktdHJ1bmsKKzM0Njg5IDRiMmM5ZTE0YjQ0NmI2NDZkZTkwYmU4YTYzM2UwZTI4YjliNGUzNDAgbGVnYWN5LXRydW5rCiszNDY5MCBjZTk2YmRjNmZiYjhkNDA5NmNjMmJkZDIwZWU5NzQxYjY0ZmI0MDk5IGxlZ2FjeS10cnVuaworMzQ2OTEgNTNlNGI3ZmUwOTY5YzE0NjkzMmZkYzkwM2UyMjY3YjdlZmNlYjdjNiBsZWdhY3ktdHJ1bmsKKzM0NjkyIGQxMmYwN2MxYzNhMDcwNzMwODExOTAzOTgyNWQ4MjcxOTJkNTY5MTkgbGVnYWN5LXRydW5rCiszNDY5MyA0Y2UzMGQ5YTFlMDQxOWJkZjkzZDlhOTZlZDdjNzJjMjQwNTM3YmU3IGxlZ2FjeS10cnVuaworMzQ2OTQgZWFkNGM2MTIxOWQwZjBjMTc2MWEyN2M3NjIwNzY1NjgzOTgyNGE4MCBsZWdhY3ktdHJ1bmsKKzM0Njk1IDdmZTIwMTgwMWMxNDk5Zjg4NTE1OGQ4Njk3NTQ0Y2EyNjk3M2VlNzAgbGVnYWN5LXRydW5rCiszNDY5NiA0YzgxNjAwODhiMzQ3NTRhZTcyYWFiYTM5MmUzZTNmNDFjNTNkMmM2IGxlZ2FjeS10cnVuaworMzQ2OTcgODZmZGY4ZmU3ZjE3MjBkMTA2MTViNWViYzVjNTFkYmQyMGFlNzFjMCBsZWdhY3ktdHJ1bmsKKzM0Njk4IDg5MGYzYzJjMTE4MzAwNTk3YjZiNzI1Njg0YmQ2M2IyN2NhMDE2YzkgbGVnYWN5LXRydW5rCiszNDY5OSBlYjA0MjY1ZmI2NWI4NmI2NjZhNGZkYTI1NDIyYzc2YjI3NTE2ZDJkIGxlZ2FjeS10cnVuaworMzQ3MDAgZTU0M2IzZjBkOTA2MDJlMjY1ZTJhY2M0YmY4YjFhNjUyMzJhYWY1MCBsZWdhY3ktdHJ1bmsKKzM0NzAxIDMzNGVkY2QxZTVhYzYxMjUyZjMwMGU4ZDgxYWU1ZDYwZjAyY2YyNzMgbGVnYWN5LXRydW5rCiszNDcwMiA4MzBlNWZmYzZkMjVjNzA0ZjhlZGEwYjk4NGVjYTU5ZDE4NjNiYmY0IGxlZ2FjeS10cnVuaworMzQ3MDMgZmRjOGE4OGE5YTVhNDM0NGU0YWJmNWQwOGVkOTE2ODA1N2QzZDljOCByZWxlYXNlMjMtbWFpbnQKKzM0NzA0IDk2MDAxYTcwYzUwNTdmMGI2ZjkxNTE1ODg1NWVhNDI3NTIzZmE3MGIgbGVnYWN5LXRydW5rCiszNDcwNSBkOTllMDIyOTY2Yzk0MzhjNTg4ZmM2ODI4NjBkOGNjYTRiNmZhNWM4IGxlZ2FjeS10cnVuaworMzQ3MDYgY2FhMWE0OGRhNGNjZGZjZjBiNmQxMGYzZTYzM2ZhZjliNmUxZjQ0YiBsZWdhY3ktdHJ1bmsKKzM0NzA3IDRmNjM4MmQyODA5ZGY0YWU4YzIzNjNmNzIzNGMwNmE3MmJiNjE4ZjcgbGVnYWN5LXRydW5rCiszNDcwOCA4MzI2ZjY0MjQ0YzI1YWJmYzdlYTVjMTBmYmMwNDgzMGM4YTgyMTc1IHJlbGVhc2UyMy1tYWludAorMzQ3MDkgMTRkMzIxNDY2YTA2OTJmMTQ5YzNjNWFmMzZmM2VjMDAxYzAzZTZiZCByZWxlYXNlMjMtbWFpbnQKKzM0NzEwIGQ0MDE3OTAxNzYzOTVkNTllYTU0MDZiMzhkZDhhMGE2Mjc0MDllODkgbGVnYWN5LXRydW5rCiszNDcxMSA1MmRlNTgwODdiMmYzYTQ1ZWNiY2ZkNTMxNTExNTQ5MmI3ZmFkMjg5IGxlZ2FjeS10cnVuaworMzQ3MTIgNjMyYjIyM2NiOGU4Mzg3ODhjOTM0MTM3ZGQ1NzkzOTI3YWZiMjQ3MCBsZWdhY3ktdHJ1bmsKKzM0NzEzIGQ0ODI2ZTA5N2EzZmViZjI4NGI4ZjI5YTViZWJkMDkxYmFkNzMyNTYgbGVnYWN5LXRydW5rCiszNDcxNCA5ZmM1MzQxZmE2OTU2YTgzM2JjYmEyNzQ4MmM4ODY1NTY2ZDE5OTRlIHJlbGVhc2UyMy1tYWludAorMzQ3MTUgZTBhNzVhNzU3MGI0MDI4OWY4YzU0ZjM4MmYwMWIwYTczODA0ZjhkMCBsZWdhY3ktdHJ1bmsKKzM0NzE2IDE4ZGYyMDNiOGU5ODU0ODJhNGViN2YzMGU5YzZlYTE5ZTNhYWZmNzIgbGVnYWN5LXRydW5rCiszNDcxNyA0ZGE5OWY3M2ExZGY4NGQxMjM2MmE4ZDI3ZmZmYzA4YTA2MmEzOGU1IHJlbGVhc2UyMy1tYWludAorMzQ3MTggMjJiZWQyZmRmZmVhNmI5NjU4NGEzMmQ5Njc0NmRmYmMwZTY3MWIwNSByZWxlYXNlMjMtbWFpbnQKKzM0NzE5IGQ5MDE1OGRmMzljNDUzMTJmZGZlMGFiNTA4ZDc2ZTZkODcyZTQxN2MgcmVsZWFzZTIzLW1haW50CiszNDcyMCA2MjJhNzZiYzAyMzc2OTM5YjBhYTc4NzkxZTg3MmJiOTVkMDJiY2Q0IGxlZ2FjeS10cnVuaworMzQ3MjEgMjc4OTc2YjE5ZGNjYTZmODQ3M2M4NGNmYjNjNTI0NjBkNjgzYTU4MSBsZWdhY3ktdHJ1bmsKKzM0NzIyIDViNzdiYzRkMjViMWI5ZGY1OWY3ZjkwYzBjNzdiOTUzNzg4Y2FiYmIgbGVnYWN5LXRydW5rCiszNDcyMyA0Njk2YzRiN2Y3OTJiMmE3YWZmM2EyODY0ZDUxNGEzN2I2OWU4OWNmIHJlbGVhc2UyMy1tYWludAorMzQ3MjQgMWZkODE4OTRjYjk3M2YyZmU0MjViZmJhNGQwNmVlYzg0YjM3MjgzYyBsZWdhY3ktdHJ1bmsKKzM0NzI1IDc1M2Q3MmJkMjE0YjJjNWQyZjg4NmIxNjUyNzMxNDQ0Nzg1M2ZiN2MgcmVsZWFzZTIzLW1haW50CiszNDcyNiA0MjI0ZDgwNzkxMWM0YTA5ZjAyZWNhMWEyNGRkZDk4NzZmMTM0OWIxIGxlZ2FjeS10cnVuaworMzQ3MjcgNzBmMzJmMGQ4ZWNmMDY1OWI1ZjFkY2FkOTRhNzg1ZmU4YzcxZjg3OCBsZWdhY3ktdHJ1bmsKKzM0NzI4IDJkZGIxY2JhMThkNjQzOTZkMjdhNDg5NTY5OWE4OGYzZWRmMWFlMGMgbGVnYWN5LXRydW5rCiszNDcyOSA5NjI4YmI1NGE5ZTA3NGNhMjJhMjg1NjgyMTJlMDdjZmU3YTkzMTUzIHJlbGVhc2UyMy1tYWludAorMzQ3MzAgNDZkZTNkYjlhNWRiNTM0NGIwZDFhYjA1MDgzMzgxM2Q3YzY0YmQ0OSBsZWdhY3ktdHJ1bmsKKzM0NzMxIDMyYzJjNzk5YzkyNDhlM2EzZDYwYTVhMWJkODc5MzA0MGU2NzhlZDUgYXN0LWJyYW5jaAorMzQ3MzIgMjcwZDU5ZTM0NmU2YWY4OTQ5N2FhYTgxYTEwZWUyMjM3ZDFiNDJlNiBsZWdhY3ktdHJ1bmsKKzM0NzMzIGM0MTFhNzYyZDVkZDZhMmVhNmY2YWVjZGZlOGZjZjQ3YzA5ZTRmOTcgbGVnYWN5LXRydW5rCiszNDczNCA4ZDQxMzU3OGViMWFjMGE4ZTYzOTcxZGU5MDJkNjFmMDdhYjIyYWNjIGxlZ2FjeS10cnVuaworMzQ3MzUgYTRiOTEzZjkzN2NkYzkxN2FjMTNkNjI2OWRmMTA5Yzk2MGExMjY2OSBsZWdhY3ktdHJ1bmsKKzM0NzM2IDE3YWE1MzAyZTA4YjIxN2QwNzUxZTU0NDY3YWRjYjVjNjUxOTU3ODEgcmVsZWFzZTIzLW1haW50CiszNDczNyBiY2M3ODczYzcwN2U1MmVhZmUxNWY4NmU1ZDYxMDE3MjkxZTI4N2RlIGxlZ2FjeS10cnVuaworMzQ3MzggYjJmZDdhZjE3MTg2OTA2ZjMzZTRkYjgxZjRkZGI0NjJmZWMwNTZiYSBsZWdhY3ktdHJ1bmsKKzM0NzM5IGQyZWFhNTNjZWFiZWUyYTNjY2NjN2RlZDAxYzY5MzdhZGUwNTkzZTYgbGVnYWN5LXRydW5rCiszNDc0MCAyMWExMGMzNjAwYjVjNGQ0NzkyNGI5OGNhODBlNTZiZGYzNzdlOWVhIGxlZ2FjeS10cnVuaworMzQ3NDEgODQ1ZjE5YjE0NWE4ZmEwZjJjZDRmMGYzNTk0YWY2ZTFlN2NjOGJhNyBsZWdhY3ktdHJ1bmsKKzM0NzQyIDg1Y2FiZTdiMjE2YjdiZDA1NTMxYTc0NzI0MjI4ZTI3ZGE2ZDgyMWMgbGVnYWN5LXRydW5rCiszNDc0MyAwYWM0MDlkZmYzOTA5MTU5YTk3MjY2MjM5NTIzNmZmZjk2ZmY0OWIzIGxlZ2FjeS10cnVuaworMzQ3NDQgMmI2YTEwZTA2NzI3MzhiZWEyZDYzNGZjYWZkOWYwYWIyZDI1YTFhNyBsZWdhY3ktdHJ1bmsKKzM0NzQ1IDAyNGI0Nzk5YTQxZDUyNTE3NDU1Y2U4NWZlYzg5MjRkZDQ2OWNiMDAgbGVnYWN5LXRydW5rCiszNDc0NiBiZjAzODk4NmNiOGZkZjEyNmZhZGY1MzU2ZTA4MWM3ZmJjMmYxNGE3IGxlZ2FjeS10cnVuaworMzQ3NDcgZjk2NzU4OWRmNzUxMjVhNzg5ODZlZjljZGQ1MTRhYmQ3Yzc0NzA1NSByZWxlYXNlMjMtbWFpbnQKKzM0NzQ4IGNlMDcxMThlZTVkMjc3ZGNkMzVmZGU2M2IzMDkyMGM0NzljYTYxOTQgbGVnYWN5LXRydW5rCiszNDc0OSA3YzU1ZWJlYzQ4ZjU3N2E1ZGJiYTgwYzVkNTZiZDYwZWIzYjU0NjdhIHJlbGVhc2UyMy1tYWludAorMzQ3NTAgZGExNTc4Y2ZhZTE4MmU1NGJiMjY2YjkwZjIwNWY1MTQ2YzM3MmNiYiByZWxlYXNlMjMtbWFpbnQKKzM0NzUxIDZkM2UwZTZkN2JlNjE1OTk4NDEyNWQ4NWI1NmIxNmNlMzM1MmVjMDEgbGVnYWN5LXRydW5rCiszNDc1MiA0YjZjN2U1Y2I4ODliMzNkODExZWM0MDNlZTg0MzhkMDEzZWU5Y2QzIGxlZ2FjeS10cnVuaworMzQ3NTMgMmMzYTc1YzU0ODMzNDliODRjZjM0MDgzOGFiOGMzZWI2NDNhOTg5MiBsZWdhY3ktdHJ1bmsKKzM0NzU0IGZhZGNhMTcxNjRjMDZjNjIyNDNiMzJlOGUwMzdhZTZhODZlZGI3OWIgcmVsZWFzZTIzLW1haW50CiszNDc1NSA0NGFiMjQyYzliOGNmNWFlZjVjODNkODM0OGQ2OTYwMzk3NTQzZWYxIGxlZ2FjeS10cnVuaworMzQ3NTYgMmQ2OTBhOTVlNGZkMWUwMWVhNDgxYTk2ZmQ4ZjZhOWZiNTcxYjU4NyByZWxlYXNlMjMtbWFpbnQKKzM0NzU3IGY3MWEyMTY3OTQzNmE1MTBjY2M0NjUyOTg4NTViYmZlZDhjOTk3MTYgcmVsZWFzZTIzLW1haW50CiszNDc1OCA2Y2YwOWJlMDQ5MWRlODZiZTgzMzY3ZjAzZWY3NTg3ZmYwOWM3ODNjIGxlZ2FjeS10cnVuaworMzQ3NTkgNDAwOWIzOTkyNjE2YTBkNjBjMzU4YTAyNWQ0ODVjODEwMzExYzQwZSByZWxlYXNlMjMtbWFpbnQKKzM0NzYwIDZmMDE3MDBjMTgwODk4ZGVjM2VkMTM3ZDYwNGYxYTcwY2ZkZTJiOTUgbGVnYWN5LXRydW5rCiszNDc2MSA5Yzg0NmMzZGY2ZjNlMDI0ZTBlYWFiNGRkYTViOWEzODhiYmVkZjRhIGxlZ2FjeS10cnVuaworMzQ3NjIgNzNkNTIxMzMwNWQzNzZkNTA0OWM4NDhkNThiMzdjMzEwZWZlMWZiNSBsZWdhY3ktdHJ1bmsKKzM0NzYzIDZkYzE5ZTQ4MzQ3YTBiNzhmMjZiNDQ3NmIyNmY5MjhjNmQ3YmNmMDggcmVsZWFzZTIzLW1haW50CiszNDc2NCBkZDU3MDdmNzE1MjZhY2U5NGJhODU1OGJhMWEwYmFmMDliZThiNWUyIGxlZ2FjeS10cnVuaworMzQ3NjUgMGZmNjkyNTliMDA1ZjQ3M2Y0Zjc5NTZiMjBlZDQwN2M1MTVlZTJjMSByZWxlYXNlMjMtbWFpbnQKKzM0NzY2IGZkODdjZTE4MTlmYTM3OGIyMjVkYjFhMTc2YjQwYTk4ZmQ0YmUwYzIgbGVnYWN5LXRydW5rCiszNDc2NyBkNTBlMjZmMjBmMTA4NGY5ZmRmMWY1MjZjMTljMWIwOTcwOTE0MTU1IHJlbGVhc2UyMy1tYWludAorMzQ3NjggZjVlYWI2MjgzMjg2NjRmYTgzMDM0YjdhNjA1NzdhOWRmZjJmYTBmMCByZWxlYXNlMjMtbWFpbnQKKzM0NzY5IDM1NDhmMjM0ODMxZTA5OWYxOTA1MTFiNzgyODY5ZjYxZGQzOTA2MzYgbGVnYWN5LXRydW5rCiszNDc3MCBkM2FlMzI0ZjZjODk1ZmEwYmZhOTBiYmMyMDQ0ODBlNzA5MjQ4M2UzIGxlZ2FjeS10cnVuaworMzQ3NzEgNDU2ZTI3NGY4NjAyNjI2NmMwNjFmZDY5NDJmZmY0YmMxODcyZTE4OSBsZWdhY3ktdHJ1bmsKKzM0NzcyIDVkZWE3M2RjOTY4Yjg0MjdkZjllMGU3YjE5MmI2YzA1ODNiNGI2MTYgbGVnYWN5LXRydW5rCiszNDc3MyAzZDFmMGRmNzVhODBjNmNiNWZkMmIwZjM4YWUzMTQ1OTdhODNjMTk1IGxlZ2FjeS10cnVuaworMzQ3NzQgMzgzMzhjOTcwZjdkMDc5OWQzNzllZTYxMTFhNDkyODAxM2Y1YjFiMiByZWxlYXNlMjMtbWFpbnQKKzM0Nzc1IDI1MTcxNzU2NmU5MTJmOGJmYWZlMjViMmE2MzA5OWJmOTQzZGFhMmYgbGVnYWN5LXRydW5rCiszNDc3NiBmNjk1ODkxNzljNTU5YzA1OGYxZWU1OTZlNTBjZjE3M2IxZjk0NTcxIGxlZ2FjeS10cnVuaworMzQ3NzcgYmY3ZGY0ODAxMmNiMmE2ODEzZGVkNDEzMjEyZGFiMTA4MWU4MmVjYSByZWxlYXNlMjMtbWFpbnQKKzM0Nzc4IDRlMTEyNTA1NjRjYmQzZjA2MzVhNGM5NDA5NGZlMDE0YjQ3NDMxYTYgYXN0LWJyYW5jaAorMzQ3NzkgZDZjN2U1NTk2MjQ3ZWIwODliNDMzMWY4ZmVmMDY3ODVlMmEzMThlMCByZWxlYXNlMjMtbWFpbnQKKzM0NzgwIDRhMzYxYmJiNTI3OGNhNTdlMmIzYzhiNzdhMWM4NDM2ZTBhMjc3OTQgYXN0LWJyYW5jaAorMzQ3ODEgZjBhMTk3ZGQyMTJkNTM5NDQyYmM3YTYwMDZjMDZjZGNlNjg3MDhjZSBhc3QtYnJhbmNoCiszNDc4MiBmMTQzM2QzYzY0NDdkNzdjNjY5NjNhZTlmMmVmYWJiODE1YTM3NTUyIGFzdC1icmFuY2gKKzM0NzgzIGIwYmNjYjlmYjcwYThiM2E1YzYzZjhkZGZkMTFjNTM3ZTExN2MyMzMgYXN0LWJyYW5jaAorMzQ3ODQgNjRkZGRhMjU1OTUyNGFkODEzYWMxMzZiM2EyOWM1ZWJkZTA3YjQwNyBsZWdhY3ktdHJ1bmsKKzM0Nzg1IDRlMzFjMjYxYTY2ODk1YzRkNDA2NmI5MTEwNmQzNmEyOGJkNzVmZjYgbGVnYWN5LXRydW5rCiszNDc4NiAwYWM5ODg3OGNjMzJiNWM4N2M3YTIyOTk1YTA3MjdiMzMxNDVkYmJlIGxlZ2FjeS10cnVuaworMzQ3ODcgZTA1ZmUxNzc1NTIwNjRlMzE5ODYxZDA3ODYwNmE1YzZhYzk4MTM3ZCBsZWdhY3ktdHJ1bmsKKzM0Nzg4IGViNTA5ZmM0N2YwNzUwODY4YWY5Y2Q2MTEwNTQyZGQxOGNjNTEyZDMgbGVnYWN5LXRydW5rCiszNDc4OSA0MWY0Y2U2YzRlNTA0ZTMyNDFkMmMyZGE2MjcxZWVmOWU5YWZlNDg5IGxlZ2FjeS10cnVuaworMzQ3OTAgYTEwMmRhOTE2NDBlMzQ2YTlmOWRmYzgyZjU5Yjc5MDA0MzJkM2NhNCBsZWdhY3ktdHJ1bmsKKzM0NzkxIDBlYzRkM2ViZDQzMzdmMWQ4ZTc5OGYwZTlmNzM0M2FmOTI5MzNhODUgbGVnYWN5LXRydW5rCiszNDc5MiA5MzE0YmUwYmJiNjQwMTliOGQ5N2JjNTk0ZTY4MTA2YmNmYzA2Y2Q4IHJlbGVhc2UyMy1tYWludAorMzQ3OTMgNWEwNjU4YzAwODc5YWEzNWYzM2M4YTQxODhiM2Q0YzVhMjkzNWIzYSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk0IDc4MzY5NGQ0ZDRjZjBjZmRkYmQyNDViZTMwYjhkNTdhYTg3YjVhYzkgcmVsZWFzZTIzLW1haW50CiszNDc5NSBkNDUxNGNlMTRiOTY3ZjdkOTY3OThhMzFmNThlMjVjYjY2M2E2ZTE5IHJlbGVhc2UyMy1tYWludAorMzQ3OTYgZGExNGQ4MDZlODljNzUyZjZhNzI5NGEzZTRhNjliYjA3NGVjNDY3MCByZWxlYXNlMjMtbWFpbnQKKzM0Nzk3IGRlMjg1NWIzZjQxMzZiZjFjYTBiNzdiMDI4ODViN2Q1NGM4YmExZTkgbGVnYWN5LXRydW5rCiszNDc5OCA0ODY5NWM4MzlkOThiM2EyNzJjNjA5MzEwNDk1ZWExMWU2MmE4NDZhIHJlbGVhc2UyMy1tYWludAorMzQ3OTkgNWI1MTVjYzkwYjVhNDNlZmU0MmY0NjMxMmI2YmFlMTBlZjAwOTNjNCBsZWdhY3ktdHJ1bmsKKzM0ODAwIGE1MmQ3NDk0OGRkNGY0ZTNmYjhlZjExMmJiZjU0MmVjZDFkZjI0OWIgcmVsZWFzZTIzLW1haW50CiszNDgwMSAyYTZmYzRkMjYxZjhlNjhkYWI5NDhhN2Q2NjVmZGE1MmQ0ZmFjODgxIGxlZ2FjeS10cnVuaworMzQ4MDIgMmJhOWE4Njk2NTYwMmQ4ZTA1NGUwZjJkMWM4NDQyZmEyZGMzMGJiMiBsZWdhY3ktdHJ1bmsKKzM0ODAzIDYyMjk5MWNjMWUzYzU4YjUxYzU1MjFhMzJhODE5Y2Q5ZTFiZWFkODkgbGVnYWN5LXRydW5rCiszNDgwNCAzNjA2MmQ2NDVmYmI5NTYzNWViZWI1MDE1ODI3ZjJhZTZkN2NmZDdiIGxlZ2FjeS10cnVuaworMzQ4MDUgNmViNDczZDY4MDQyNGM1NDQ4NmY5YzEzZmUzNzgzNGY2ZjM0OWQzOSByZWxlYXNlMjMtbWFpbnQKKzM0ODA2IDFmMDk4MTlmNTA4YjI1ZDQ1NGNiN2ZlZmFhMTgzMGIzZGEzYzczNTcgbGVnYWN5LXRydW5rCiszNDgwNyBkMDBmMDEyMDc4MzdiNjcyMjVmNGU5YWJiODI5ODhlYTg0MjRjODgyIHJlbGVhc2UyMy1tYWludAorMzQ4MDggZTMwMjVmZTcwZDhiZDA0ZjcyMmU3Mzc5MmY4OGM0ZGQ2ZGVmNzhmNyBsZWdhY3ktdHJ1bmsKKzM0ODA5IGEyZjZjNmE2N2YyNDE0MDk5Y2M3MDE5M2JiNjAzOGY3NWI2MDc2ZjIgbGVnYWN5LXRydW5rCiszNDgxMCBiMjRkNmE3MWIwMWYxMjY1OThmMDZlZjA0NzgyMjEwYjllNjYzM2I1IGxlZ2FjeS10cnVuaworMzQ4MTEgOGRkMTU5Mjc5NTc2YTU3NDdlM2YyY2U3ZDU3ZDgxYjhlZDk5ZWFhYSBsZWdhY3ktdHJ1bmsKKzM0ODEyIDg3MDYxNWJmYWVkZmI5ZTRiMmU5YzNmZDU5NDZiYzliZjhjOGNlNGYgbGVnYWN5LXRydW5rCiszNDgxMyAyZjc5NmM3NTk2ZWNhMjNmMThjMTk0ZDhhNmMxMDdkOTNmNmNhZGJjIGxlZ2FjeS10cnVuaworMzQ4MTQgMGE3ZjFhNTNjNzczYjRhYzFmNWM4ZDUyYjIzNzVhMWU1NDQ4ODhkMyBsZWdhY3ktdHJ1bmsKKzM0ODE1IDM4NjFlYjQ2N2MyOWUwN2JhNmIzNjY5NzYwZGRmNzJjYjMzYjQ0OGMgbGVnYWN5LXRydW5rCiszNDgxNiBkZTM5MWU5ZDcwZWExNjdmMWU4MWJhNTdhMGFiM2M2ODY3NzMxYWQwIGxlZ2FjeS10cnVuaworMzQ4MTcgZjJlNzY0NmY3NzYzMTYxYmJkZGRmMjc2ZDc0N2Y1NmZmNmY0ZjMxMCBsZWdhY3ktdHJ1bmsKKzM0ODE4IDljYTlkMzE4YWY3OGI3ZDVmODNmOTU2MzdlYTE5ZDliYjJkZDYyMjcgbGVnYWN5LXRydW5rCiszNDgxOSAzMDM4MmFiMDZjZDFjMmMwYjkwNDI2M2QwZjQwNDQwYzdhMWY4NjY4IHJlbGVhc2UyMy1tYWludAorMzQ4MjAgZDM1Zjg3OTljZjEyMjIwNWRmNWY4NDY2YTNlYjMyMDYyYjc4NmNiNiBsZWdhY3ktdHJ1bmsKKzM0ODIxIDAzZjQzZDYxOWZmNGI4YTU1MGE2ZDFlYzMzODZhYTVmN2I4YjgyOTcgbGVnYWN5LXRydW5rCiszNDgyMiBiZGY2MGJlYTQxNzdhNzgwNDJjMGYwOTIzMTgzOGM0NGMyZGM3YTkzIHJlbGVhc2UyMy1tYWludAorMzQ4MjMgNzU5MjE0ZjFlYzY5MTA3MTQxZjlhMDA0MjQ5NmZjNjJkZWI1Yzc1OCByZWxlYXNlMjMtbWFpbnQKKzM0ODI0IDExM2VhZmU4ODQ4ZmY1ODcxNDFjMzdhMmI1YWRmMTA3YzQyZTFlZmYgcmVsZWFzZTIzLW1haW50CiszNDgyNSA2MWI3MGViOGQxNjBiMzE5NTE4MDRmM2I1YzY0NjVjNjk0ZTk4MDU4IHJlbGVhc2UyMy1tYWludAorMzQ4MjYgODZjZjJiODEwZjNhMmJlNzdiNDA4OGUxYTk2NzNhMWYwNmQxZjZjNiBsZWdhY3ktdHJ1bmsKKzM0ODI3IGMyM2E4NjIxNWQ5ZjdlMTc1MGY5YjVhZTRkZWQ0ZTg2MDA3YmVlMjIgcmVsZWFzZTIzLW1haW50CiszNDgyOCAyMDE0ZjljNjM2ZmJlNzU2YTk0NGFlMzdkODA0YjQxYTA2YTY0NzhhIHJlbGVhc2UyMy1tYWludAorMzQ4MjkgMGE2M2Q0ZDAxNWNmOTUwZjE4OGZiY2RmOTFiYTU1NDU3ZDQ2OGFjYyByZWxlYXNlMjMtbWFpbnQKKzM0ODMwIDkxNWFhMGU2OTQ4NTk4OWU3N2U5NDYwODk0YjBjNzM3Y2RhZDZmZTcgcmVsZWFzZTIzLW1haW50CiszNDgzMSBhMDk2ZDdiOGVjOGEyOWUxMjAzNmE1OGU1NzJiNjZjNzc5NGQ0YTFkIHJlbGVhc2UyMy1tYWludAorMzQ4MzIgOTcyZTdmYTFkNTk4NmE1YjE3NzE2NmQzYTE1YTg5MWRlNmU5ZGFhOSByZWxlYXNlMjMtbWFpbnQKKzM0ODMzIDQ1Y2IyODRiODRkM2FiMjY1YWE2ZjI0NDdhOWU3ZmFjNmQ1NGJhMjAgcmVsZWFzZTIzLW1haW50CiszNDgzNCBkNzYzMGNlN2FhOWZkNWIxMjM1YTY1MmYzOTljYTdmOTNmMGE1YWQwIGxlZ2FjeS10cnVuaworMzQ4MzUgOWQ2MjY2ODhjYTdiY2ViMDYyYmFmMWM0Y2FlMWI5YTE0ZjY1MTY1ZSByZWxlYXNlMjMtbWFpbnQKKzM0ODM2IDc0MDNlMzhhMmYxMDdjOWE5YTgyNGVlNjc3YzBhYTc5MzQ1M2M1Y2EgcmVsZWFzZTIzLW1haW50CiszNDgzNiBkMjFkNGJhMmY5NzM0NjdkMzA3OTRhM2QyYWM0OTM2NTgxODBlNTAzIHJlbGVhc2UyMy1tYWludAorMzQ4MzggNTY2MzUxOWNmMDZmZjQzZmQyNDJlNGM1ZjViMzk3NTRiNjRmYTc5MiByZWxlYXNlMjMtbWFpbnQKKzM0ODM5IGU5NmUzOWNkMmQxNDJiMWZjM2I1ODk4MTg4NTVjMDk0ZGQ4ZjI1OWIgbGVnYWN5LXRydW5rCiszNDg0MCBiYTg4NmFlMzIyZWMxNjlmZGZkM2YxZGJkNDRjMDliYmU5ZDIzYWYzIHJlbGVhc2UyMy1tYWludAorMzQ4NDEgNjBlNWQ4YjdlOTY0ZTZjYTkxNGJjZmU0YjhlYmUwNjAyN2Q3NjQ4MSBsZWdhY3ktdHJ1bmsKKzM0ODQyIDgzNWI3OWVhYzgxMmNlOTA4ZjNiNjBmZGZhMzQ4YjYxODM4OWJiZGQgcmVsZWFzZTIzLW1haW50CiszNDg0MyA4ZTgwZjU1MWIwZTk2ODFjNDViY2Y4NWM4YmI4ZDg4MzFhOGUwYmE5IHJlbGVhc2UyMy1tYWludAorMzQ4NDQgMzhiZWNjZjRhMGJiZjc3NzBmMGVkNWI4YjllNDU5YmM4MTdhM2VlYSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ1IGI3N2ZkNDY5ZWUzNTQxZmE4ZjdiZjlkODBhMGNhYjViMWExNWNkYzUgcmVsZWFzZTIzLW1haW50CiszNDg0NiA2OWRlNWFlZTFmYmI1MTBkMWQ1NmU0ZWExZmEwYWQxOTVmOWQzY2IzIGxlZ2FjeS10cnVuaworMzQ4NDcgN2M4ZGM2NDA0MjNhNTE0OGUxN2IzNDEzN2E3NjVjNDEzNmQ2OGQzNSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ4IDUzNTJhNmViYWQ5YWM0MDA5YzMwYmM5ZmU4NDcxY2MyMjFhYWFiMjYgbGVnYWN5LXRydW5rCiszNDg0OSAxN2U2ZTk4MjljN2U1MGJmMTYyNzI5OWU3ODAzODcyMTRkNWEwMDQ0IHJlbGVhc2UyMy1tYWludAorMzQ4NTAgZjEwOGRiNTllYjc2YTI2YjdhMTVhOTQyNzZjMTA3ZTQwOGUyOWI4NyByZWxlYXNlMjMtbWFpbnQKKzM0ODUxIGIwMjhmZDU0MTk0MTk4YTllMzEyMzQ1M2RmYjVkMjE3Y2RhOGRiMDYgcmVsZWFzZTIzLW1haW50CiszNDg1MiA5Mzk1Y2Q5MmQyY2Q3ZTViNjk5NmZjM2JhYjY5NDZkNDVmNzZiNDVkIGxlZ2FjeS10cnVuaworMzQ4NTMgYmU5ZWY5YjkyZDYxMzhjMGI3MGZjN2QwMTk0MzJlNmMzOWM5ZDllOSBsZWdhY3ktdHJ1bmsKKzM0ODU0IDIxYWViOTgzMmMxZDMyODA0MmM0ZmY2Y2QyZGExMTdjOTNlOWU2ODggbGVnYWN5LXRydW5rCiszNDg1NSA0MTVlZjU1MjFhOGFmZDg1Mjk4ZjAzNWJiZjZiMTZjMmUwMTU3ODQyIGxlZ2FjeS10cnVuaworMzQ4NTYgYzk1M2ZkYjUxY2RkN2VmODgxM2FiMjBiOTU4ZDVlZDBjNzBmMDY5MCBsZWdhY3ktdHJ1bmsKKzM0ODU3IGM2ZjE2NTA0YzhjMmY1YWRlOTYzNzkwOTdlMWE5YzY1N2U4ODk0MzAgbGVnYWN5LXRydW5rCiszNDg1OCA3NWI2M2U1ZjAzZjIxMjE2MjUxYjQxZGQ4YzQ3M2U0OWMxZDU4ZjhkIGxlZ2FjeS10cnVuaworMzQ4NTkgODlkMjZlMDNjNjUzMDJiMDE1ZWEzNTE4NGJmYjIzOWQ5NDYxYWU1MCBsZWdhY3ktdHJ1bmsKKzM0ODYwIGZkZTc0ZmFkZjc4MGM5YTgxMzliY2MxZmVlZjNjNjgzYzJiMWJkZDggbGVnYWN5LXRydW5rCiszNDg2MSA3YWFkMjRjYWRkYjVkMGE4Zjk1OTZkZDJkOTIzNzVjYWYyMjE3NzQwIGxlZ2FjeS10cnVuaworMzQ4NjIgNTA4OGE4MjM0MTE3ZWNkZTJjNjQ0MzEyZjNiYzc3MjhlZDE3NjAyYSBsZWdhY3ktdHJ1bmsKKzM0ODYzIGViMTI3ZTQwMWM2NDQ5ZDM3MDEzMDFkZGZlMTFhMjE2NWFmNzliNGQgbGVnYWN5LXRydW5rCiszNDg2NCA5N2ViZDFiMmY0Njg1NTdkMDNiM2FkYTI2ODQxZTk0OTdlZDY1NzcyIGxlZ2FjeS10cnVuaworMzQ4NjUgZTlmM2I4MjJjZTAyZWM5ODZjZGY1Mjk0MjIwNDRjZmE1YTU0MjljMSByZWxlYXNlMjMtbWFpbnQKKzM0ODY2IDllNzUwNzUzMDEwYWQ4MmNiYmI2ZDMyZDAxZWJkN2ZhOTIwMDE5MzcgcmVsZWFzZTIzLW1haW50CiszNDg2NyAwNTJlNGM1NzIyNjE1ZTFmNDk5M2Y0YjU0M2U3ZGQyNTA2ZmQ0Y2E0IHJlbGVhc2UyMy1tYWludAorMzQ4NjggMDE3MDQ4NTY1OTM2YjgzMmFiNWM0OTE2YmY3ZjJjYzFjNDJjNjk4YSByZWxlYXNlMjMtbWFpbnQKKzM0ODY5IGQzNjIyNzNkNDY4YmQxM2U4MTM1YjdmOTdkMWY3OTA2YmE5NmRhZjAgbGVnYWN5LXRydW5rCiszNDg3MCA5ZWQ3NTI1NTk0Nzc3ZWU0ZmQ1NDAzZGZjNDdiOTI5Njc3N2Y4YjIwIGxlZ2FjeS10cnVuaworMzQ4NzEgMzgxYWUzMjZlZTY1NTVlNzRkZjc0NDdmYjBiOTcyOTg5MjVkYjIyYyByZWxlYXNlMjMtbWFpbnQKKzM0ODcyIGRjZjViZTBmMGExZjlhYTA1ODM0OTU1ZmQxODVhMDI5NjY5YmM2ZjYgcmVsZWFzZTIzLW1haW50CiszNDg3MyA4NTE4YzQ2ODE3NzFmNzA0MDQyZmI4ODM5ZDY1MGE2MjY2NjI2MjE2IGxlZ2FjeS10cnVuaworMzQ4NzQgOTRjMWJkN2E1NWFlZjU0NDhmYzY5NWYyOGM1M2YxZTU2ODBkNzM4NCByZWxlYXNlMjMtbWFpbnQKKzM0ODc1IDYwYmMxMWUzMDA2ODJiYTRhZDA5MWU0ZDRhNDkwNGMyYjNlODkxMjQgbGVnYWN5LXRydW5rCiszNDg3NiA2MTRhZDUzODhjOWRlMDAwMzhhNTQxNzM5YTFkZGE1OTYwNGZhZjIwIGxlZ2FjeS10cnVuaworMzQ4NzcgZDFkMjhjY2E0MmMxOTdmMWViNzdjOTA1NWFkMmE3YzIzN2MxYjcxMiByZWxlYXNlMjMtbWFpbnQKKzM0ODc4IDFkZGM4NmI1ODA0MDA2MmJjNWNkOWY3Y2FkZTBiYWFlMWI0Y2E4YjIgbGVnYWN5LXRydW5rCiszNDg3OSAyNmVmYThhNTM5MjU5NDNiM2ZiYmZiYjQzNDBiOWM3OTBiYjhhNzA4IGxlZ2FjeS10cnVuaworMzQ4ODAgOTRkZmY0YTAyY2EzMDY3N2I2Y2QwMzhkZjUzM2ViNWQ4ZjIxZjhkZiBsZWdhY3ktdHJ1bmsKKzM0ODgxIDlmOGMwNTU4NzIxM2UxZDg4NTE1YzBmNWEzZjUzMDE1YWMwNTU4MjIgcmVsZWFzZTIzLW1haW50CiszNDg4MiA0ZWI1ZjBjYWIwOWU0YWQxZTY1YzlkMTcxZDQzYjc1MDMwYWRmODc5IGxlZ2FjeS10cnVuaworMzQ4ODMgZTFmMWZiNzQ0NTFiOWMwZDAxNjY2MTFlZTY4NjVkOTE0ZmYzNDM0MyBsZWdhY3ktdHJ1bmsKKzM0ODg0IDJhMDc4MmNjMTUxZjg0MDQxN2NmMTU5MmI4NzY5YjdmNmVmZTQ4NWEgbGVnYWN5LXRydW5rCiszNDg4NSA0YTEyZDkxYWY4YzNmOTVmMTQ4Nzg5NmFhMzA3YjExNDRmM2IxMjEzIGxlZ2FjeS10cnVuaworMzQ4ODYgYzcyN2FkMDAzZmRiYWNkMmJlOGY0ZGM0MGEzOTY5NjFkZGI3ODcxOCBsZWdhY3ktdHJ1bmsKKzM0ODg3IDAzNjczNzczMzA4NDQ3ZGM5MzZkZTY5OWU1ZThiYmEyMzU4ZDllZWUgbGVnYWN5LXRydW5rCiszNDg4OCBhYWIzNjEyZjJjMzUyYjBhMWE0OTA4MWUwYjI2YmEwYzkwM2U2MGU4IGxlZ2FjeS10cnVuaworMzQ4ODkgODg1ZGJmMTU3OGJjYjA2YmM1YWUxMjNhZDI2ZmUwMjZlNjMxZDlkOCBsZWdhY3ktdHJ1bmsKKzM0ODkwIDA2M2I3ZDIyNWU4YWI4NDc2YjZkMjdmMzc4M2E0YmI1MGQ1ZDNlOTggbGVnYWN5LXRydW5rCiszNDg5MSA0NWNhYmU5Y2Q5YzkyNjFmMjc3ZmI3ODhmMTg2MGZjNzc1ZWVmYjE3IGxlZ2FjeS10cnVuaworMzQ4OTIgNDg3MDJmMTljY2ZiM2ViMGJmNTRiN2Q2ZDlhZTNkYjMzMjkxM2RhNSBsZWdhY3ktdHJ1bmsKKzM0ODkzIDRjYzE2NjE1YjA3MjQ1ZmE0NzE1ZTgwNjczYzQ3ZTc4OTliMjE1MzkgcmVsZWFzZTIzLW1haW50CiszNDg5NCBjMjJlZWM4MDcyMjQ3NDJkM2IxMzgzNzhjY2NjMzhhZWJjODQ1MGI0IGxlZ2FjeS10cnVuaworMzQ4OTUgY2E4YTY5OTY5ZjAzOGY1MDYxNjIwNWI5YWU1MzgzMjM1NTU5Y2Q1NCBsZWdhY3ktdHJ1bmsKKzM0ODk2IGU0ZmI2MTY0MTU4Yzc4NGQ5M2RjNzhlMzI0NTI2MmE3NjJlYmQ1MmYgbGVnYWN5LXRydW5rCiszNDg5NyBjOWJiYzk2N2FjOWY2MDlmOTFkNjg3NTc2ZjdiNmFlMzFlYjQ1ZGVjIGxlZ2FjeS10cnVuaworMzQ4OTggODhlODBhMDQzMjhhMzg0N2NlMGZhOTVkNWI5OGM2ZTYyMzMxMjI3NiBsZWdhY3ktdHJ1bmsKKzM0ODk5IDVjYzFhNDAwYTAyYzMxMWE0ZjFjNTk4OTc4Y2RmNWYzZWFmMzdjMzQgbGVnYWN5LXRydW5rCiszNDkwMCAzODExNDBlN2U5ZDc3MTVjZmU3MWZmN2I0OWY1MTdjZmJkN2U0MjM1IGxlZ2FjeS10cnVuaworMzQ5MDEgZWVhYTM2NjA2NzFjYjZhZDY5NmMwM2JiYzM4YjI4YzM5NTFlOGE1ZSBsZWdhY3ktdHJ1bmsKKzM0OTAyIDFiYmMyMDg1ZjIxM2IwYmE2NDEyODViOWYxYTZhNTVkMTZmYTMwZGYgbGVnYWN5LXRydW5rCiszNDkwMyAyMWEyN2MyMWEyYzU3YWUzYjY3MGYxZjc5MTU0ZDk2ODZjOWQ1MDQ5IGxlZ2FjeS10cnVuaworMzQ5MDQgNDk0MmEwYjYzYzhjY2YxZmM1ZDExZTdjYmM5N2I2YzE3YzBjZTYyMCBsZWdhY3ktdHJ1bmsKKzM0OTA1IGU1ZDk3YWI3MTBhMjI1ZDNlNGNmMTZiOGNmZjllM2NkZTcwYzk2NWYgbGVnYWN5LXRydW5rCiszNDkwNiBjOTk2MjBjZDljNjU1Mjk1OWRmY2Q4NjQ5NTlmMGM0ODQ1Mzk1NzVmIGxlZ2FjeS10cnVuaworMzQ5MDcgMTBjNGNjMzUyZDEzYTViZTQ4MjYwOGYzZTE1OWZiZTdjZDIyZDEyNyBsZWdhY3ktdHJ1bmsKKzM0OTA4IDQ3ZWFhMzhiMjljYmY2NTU3OWUwYmM5ZTc5NjUxMzliNTBlZjhhNjggbGVnYWN5LXRydW5rCiszNDkwOSA3NGMxNTQ3MDhiMGNhMTljYWRmNzY1YzA1MTE4ODNiNjViYzljNjAzIGxlZ2FjeS10cnVuaworMzQ5MTAgZjI4OTgyMDYwYjIwYzA4NjNhMDU0OWZlNGYxNWEyZTg3OTk4NTNiOCBsZWdhY3ktdHJ1bmsKKzM0OTExIGYyZTBkNjMwY2YzOWZlNzRiYjc1ZTJmZTJlNGVjZDZhMTM2ZjUzNTAgbGVnYWN5LXRydW5rCiszNDkxMiBiMmEwY2QyZTlkNTUxMTI4ZDNkYjhhZmIzZDU1Y2ExYzA2ZWIyZDg4IGxlZ2FjeS10cnVuaworMzQ5MTMgYzg1YTllYzU3OTZjZDA5Yzk2YWI2MWY1M2NhYTUyMTg2MGRiNGRhMyBsZWdhY3ktdHJ1bmsKKzM0OTE0IDI5MmFkMTM1Y2VmMTQ2MjBhYjRiOGY1MDhjYzBjYTI2MjZmNzliNzcgbGVnYWN5LXRydW5rCiszNDkxNSBlNDY4MmFmN2FlYTllYzUyZDMyMjk4NmUyZmY5ZjgzNGJmMGEzNjlkIGxlZ2FjeS10cnVuaworMzQ5MTYgMjJmMDlhYjBiYWU5NDZiYmFlYmJlOTM4OTJjMzRmNjE2ZjNhNzNhNSBsZWdhY3ktdHJ1bmsKKzM0OTE3IDFhZDBkZjg3ZWQ2YzJlNTAwODgyNTQwNTAzNTljYWYyMDdjZDM0NzAgcmVsZWFzZTIzLW1haW50CiszNDkxOCA3YTZkMDgxNGI1NjFlZDFhZGZlZmUxOTg3YzljZDA0YzY3YmY4Mjg2IHJlbGVhc2UyMy1tYWludAorMzQ5MTkgMjI5YmI5ZjJlOTZmM2ZlMTVhMTFhNTFlM2JlNDU1YWE1NDdjYTcxYSByZWxlYXNlMjMtbWFpbnQKKzM0OTIwIGQ2Y2VhMjI4ZmIyNTliYTkyMzUyMGJiZjM0MjkzYjY5ZGJiZWZkZTEgcmVsZWFzZTIzLW1haW50CiszNDkyMSA2ODQ1Njk3MzUzYTMxNTI1YThhMDI1MTgwZWU4MTY0ZjI1M2FhNjEwIHJlbGVhc2UyMy1tYWludAorMzQ5MjIgZDk4MTE3NTllN2RlYmRlMDFhMmExODRmYzE4Yjk2ZmY1ZDYxZTA3MSBsZWdhY3ktdHJ1bmsKKzM0OTIzIDUwNDk0M2M4OTE5M2RhMGRjMTNmYzA3ZjY2MGRiZGY5ODFmNDUyOWYgbGVnYWN5LXRydW5rCiszNDkyNCA2M2NjOWZjZDI4NWU0YjNmYTU0MTA5Y2YzYjRhOTZjMGM3Mjk1NWJhIGxlZ2FjeS10cnVuaworMzQ5MjUgZTUwNjU4YjNkZjBlNzEyYjRmOTY3OTcxMzM4Yjg3ZDdkYzc3ZTgyNyBsZWdhY3ktdHJ1bmsKKzM0OTI2IDAyZWJlMzQ1NjU5NTMxODEzY2JkNjk2OGRkMmY4ZWUwNmU1OTBlMmUgbGVnYWN5LXRydW5rCiszNDkyNyBiZmEwMzY5ZDY3NjBiMjI4YjQzOWFhMjgxNWNhNWEzMGJjMDUyOWQ4IGxlZ2FjeS10cnVuaworMzQ5MjggZGQ3ODkwNzJkOTQ5MDMwZTU2ZDUzMjdjNTU2ZWVkMGM4YmViYjBmNSByZWxlYXNlMjMtbWFpbnQKKzM0OTI5IGNiYmZkNDEyN2UyNDc1NGU2YzU3ZmMyY2Y3NjY1ZWRhMTBmNmFkMTIgbGVnYWN5LXRydW5rCiszNDkzMCAzNzcxZmY5OWQ1ZjI4YWQwMTJhMjIwMmU3Mzg3ZTkyZDM0ZmFkNmRhIGxlZ2FjeS10cnVuaworMzQ5MzEgZjM4OGU4M2Y4ZTQzMzhlMTc1ZjI3NTNlYzhlZTVjOTEwM2ZkN2Q5MiBsZWdhY3ktdHJ1bmsKKzM0OTMyIDk0OTNkZDIyMmZiYjliMDg2YjAzZTk4OWJiYjVhYTYwNTQ3M2IxM2YgbGVnYWN5LXRydW5rCiszNDkzMyA1ZTk3NzU3ZDg3ZTczMDM3ZjA3NjJjM2QxYTgzODZiMGE5ZjZlYmMwIGxlZ2FjeS10cnVuaworMzQ5MzQgYzA2YjU3MGFkZjEyMmJiZThjMjEwODVlMTYxOTk3Y2MzNjI0ZDE3MyBsZWdhY3ktdHJ1bmsKKzM0OTM1IDRkMDc1NmExM2Y2YjllNGM4ZWRiNzFiNjI3ZGVhNGEzOTdhNDFkZTUgbGVnYWN5LXRydW5rCiszNDkzNiA1YjAzNWU2ZTQ0ZGM2OGFlYWNkZDZlMWQwNjk4NTIyODcxYTcwYjdlIGxlZ2FjeS10cnVuaworMzQ5MzcgMzYwN2YyMzM1MmI5ODU5OGI2NTgwYmUwZDZkMjk0N2JlZTQxODliOCBsZWdhY3ktdHJ1bmsKKzM0OTM4IGRlZjI3NTI3NzI4MDYxYTQxOWQwZTg5OGE3Yzc5YTg4Yzc0MzQ4NTQgcmVsZWFzZTIzLW1haW50CiszNDkzOSA4OTc2N2MxOGM2MTYwOGI2ZWI5ZGY0ZmJjMDIzZjkxYjliMDdlNWU0IHJlbGVhc2UyMy1tYWludAorMzQ5NDAgODhlMDAwMjFhY2ZmNmViOGJjZmViYTA4MWFiMzYwNjNiYzkzNWEyMCBsZWdhY3ktdHJ1bmsKKzM0OTQxIDk3MDYyZDM2NThmZTdjNzA3OTJiYzI0YWZmYmY4N2M2NjQ1NjEyODkgbGVnYWN5LXRydW5rCiszNDk0MiAwZjcwOWNlYTQzYzcxNmYxODk4ZTY1YjkzMjk3NjFiYjFiNDg5M2YzIHJlbGVhc2UyMy1tYWludAorMzQ5NDMgZWEzYzZmNmU0Njc5MWM2ZmIyZTc5NmQ3MmMwZmIwYjE2ZTA2Zjg2NyByZWxlYXNlMjMtbWFpbnQKKzM0OTQ0IGVkZTUxOGIwYjlkYTc5Zjg1NDJlOGVlYWFhZmMzZTgyZDE0ZmQ0ZTUgcmVsZWFzZTIzLW1haW50CiszNDk0NSBjMjk2N2NlN2MwMWU0NTI2ODQ2MmEwNWU3OWVmMzA0MGYyZThlNGNkIHJlbGVhc2UyMy1tYWludAorMzQ5NDYgOTU1Y2I5Njk3NzY3ZmUyOTk1MTdlNWYxNzg0ZjU1ZjRlMzM1NDU1OCBsZWdhY3ktdHJ1bmsKKzM0OTQ3IDFhOTg4YTA2YmQzMzZiNzY1NjZlMDZkOTQxZjQ4MzBkNGNkNWZmY2UgcmVsZWFzZTIzLW1haW50CiszNDk0OCBiODBhM2I4MmRjZjllMmU0MjdkNWZkODQzMDM5ZGRkMWZlODY5NjU2IHJlbGVhc2UyMy1tYWludAorMzQ5NDkgMzk1MDgyZGMyMTk0Mjk4OTFkZDcxNjQ1OGZhZDE4Y2M4NTFmMmNjMSBsZWdhY3ktdHJ1bmsKKzM0OTUwIDY0MTY2ZWFmNjIxMjRiMDEwY2NmZTkyNGZiZmM5ZTUwNmJjY2EyMzIgcmVsZWFzZTIzLW1haW50CiszNDk1MSBhNTkyMmI5ZDAzNzlhMDc2ODUwNDNjMjEzOTNmMDhlZTA0ZjRiYmIzIGxlZ2FjeS10cnVuaworMzQ5NTIgMzg4NTVmZGE0MjhhNjhkNjEyOTc0MjIyYmE0NTdhNmQ3MWEyOGQ5NCBsZWdhY3ktdHJ1bmsKKzM0OTUzIDJiMGM3ODVhYjMwYTZlMjI3ZDlkMDU2MGFmNDlhZDZiMjM1OWQ5MjEgcmVsZWFzZTIzLW1haW50CiszNDk1NCA2N2I5ZGU2MmVjYjg2OTI3NzAxYzFmYzMzMzA3MDk5NzlkZDlhNTFmIHJlbGVhc2UyMy1tYWludAorMzQ5NTUgOWEzYTE2YjgyZGNiYmU0YTBiYTgyNjJhNWU2ZWEwYWQzZmI1YzEzMSByZWxlYXNlMjMtbWFpbnQKKzM0OTU2IGZiNzU5ZTI4MWEyZjIzMDA4NTI0MWQ0YWViMzY0N2IzMzhmODhkZGEgcmVsZWFzZTIzLW1haW50CiszNDk1NyBkMDk5ZWQ5MzI5OTNmOTNkOTE4NWExNjUyYTYwNGFlOGU5ZDY5MTViIHJlbGVhc2UyMy1tYWludAorMzQ5NTggNWRjNTc1N2IxMThhYmYzY2NmNjdhNTc5YmJlZjdiZjBlZWE1YjFiMiByZWxlYXNlMjMtbWFpbnQKKzM0OTU5IGIyMjBiNTkwZTJlYThlYTc0MGNjN2JmOWYzMWNiYTdkNTJhYjA1ZTEgbGVnYWN5LXRydW5rCiszNDk2MCBhY2JjNzU2M2E4ZTdlZGY3MzVjNmY0NjgzMDhmNDcxYzRkNjAyNjc4IGxlZ2FjeS10cnVuaworMzQ5NjEgYTZmMzRmYmE5MzcwNjk4N2M3YWE5MGJlNzdhYzA0YTA0NGQ1OTFlMyBsZWdhY3ktdHJ1bmsKKzM0OTYyIDRlZGYyMDBhODExODVhNDdmYjc0NjFmNDNlYzliYzQzNjdhZTc2YmIgbGVnYWN5LXRydW5rCiszNDk2MyBmMGFlMzEzYTJhYzg2NDcyZDQ0YjA4NjRiOGQxYTU4YTdhNTNiMGZlIHJlbGVhc2UyMy1tYWludAorMzQ5NjQgM2M0YzA4NzQ5NGUwY2I4ODQxOTA0MjgyMDY5YThiMmZlNjRlMTYzNCByZWxlYXNlMjMtbWFpbnQKKzM0OTY0IGE4ZjEyODZmMjE3MTI5Y2RiNTNlMzIwZWUxMjVkMmMyYzgwZTEzNzcgcmVsZWFzZTIzLW1haW50CiszNDk2NiAyOGViMDA0NmNlOGE3NjNhOGQzYWRkZWZiM2RhZjNiNGFmYzE3NGZjIGxlZ2FjeS10cnVuaworMzQ5NjcgZGY4ZTg3OWM4ZDc2ZDUwY2VkZGYxMmNiYzFkZTc3NjhiMjljZjRiZCByZWxlYXNlMjMtbWFpbnQKKzM0OTY4IDljNmE1MWQ4NzkzMDI5NDQ2NmZlYTg2NmVjMjM5Y2NiM2YwYmQ2ODkgcmVsZWFzZTIzLW1haW50CiszNDk2OSAxY2I4N2RhZDI2M2Q3N2RkNDBjMmNlNGU5ODY0Y2RkOTE5NWQ5Y2RjIGxlZ2FjeS10cnVuaworMzQ5NzAgOGVhM2E4MmY5MTNmNmNhM2MwOTI3NWI0YjVmOTQzNThhNTEwNTNmYSBsZWdhY3ktdHJ1bmsKKzM0OTcxIGNlMTY1YmU4YzZiODk4NmJkMWYxMjVlMWY0ZDI4ZGI3ZWMxZTJlNjkgbGVnYWN5LXRydW5rCiszNDk3MiAzNTNhMTYwMzNmNmE0ZWQ2OTU4OTBlNTE5NmU5NWMyNzFiOTFkMjc3IGxlZ2FjeS10cnVuaworMzQ5NzMgMzUzOTNhOTJhY2QxZDM3MTEzNDIzMjE1NTFhZDc4NDJlZWZiMzZkNSBsZWdhY3ktdHJ1bmsKKzM0OTc0IGRmZDAxMTRjZjllY2U3YzYyMGQ0MTJmNzY2MzVkYWQyNzNiZmNiNTMgbGVnYWN5LXRydW5rCiszNDk3NSBlMTE4ZTRlOGUyMjQ4ZTRkNjViM2Q3M2JlNThhOTFlNTc0MmE2NmU4IGxlZ2FjeS10cnVuaworMzQ5NzYgODkyMTE2YTg4NmUwMDUxYThkMzJhZmMzYTIzMzJkNmEwM2E0YjkyYyBsZWdhY3ktdHJ1bmsKKzM0OTc3IGMxNDAyMTc2ZTFhNjU1YjIzNWYwNWM5ZDAzMzE1ZmEwOTQxOTM5NTYgbGVnYWN5LXRydW5rCiszNDk3OCBmNjA2NGY4YzE0NjA0ZTNjYmY3ODMzZTkxMTU2YzkzMGEzODUwMWFjIGxlZ2FjeS10cnVuaworMzQ5NzkgYTgwNzcyNmRmNGI3Zjk1NGRkZWRiMWYzYWY2NjZmYjVhNWY0MWNlNCBsZWdhY3ktdHJ1bmsKKzM0OTgwIDU1MmE1MzU1ZDhhOGY2MzVkMTdhMjg2NTdlYjczNzNlZjFlNmY1NDcgcmVsZWFzZTIzLW1haW50CiszNDk4MSA3MDZjOTZlMTUxYTA4OWYyNDhmMGYyN2NmZTZkZWVhYzkwMzI0NzU5IGxlZ2FjeS10cnVuaworMzQ5ODIgMmE4ZjVlYjhkODNlMTMwMmQ1NGM1YWJmMzY2YTNmZTAyYjFkMGZmNSBsZWdhY3ktdHJ1bmsKKzM0OTgzIGJlODgyYTlhM2Q1YjUyMjBkZGNlMDIzYWIwMTEzMDQ3MGZlYTU3NWMgbGVnYWN5LXRydW5rCiszNDk4NCA5MWI1OWYyZmVlN2MxZjExNmVhMzY0ZWM2ZDEyZGU3MjI2MzVkMmU2IGxlZ2FjeS10cnVuaworMzQ5ODUgNDcxMjkxNTJjYjcwMTBhN2NiNjY3NTQ3MGU0OTExMDUxZTEyNzdkMyBsZWdhY3ktdHJ1bmsKKzM0OTg2IGVlNTMyODA1NDZjZTdkMzM0OWY5MzE2ODRiZTMxZGNhNDU5NGQ3MzcgbGVnYWN5LXRydW5rCiszNDk4NyAxZTE2Y2I4YjAyMjE5ZTYzNjlhZDhhY2NmYjUzNGM0NzQyMWZjMzU1IHJlbGVhc2UyMi1tYWludAorMzQ5ODggY2M3ZjI5YWMyZTk4MTY0MWZhNjg3OWEwODE3NGVmN2Y5YzA5NDUyNyBsZWdhY3ktdHJ1bmsKKzM0OTg5IDkwNTYwYTljZjNlOGI5YTFmNzBmNTIzZWM1MzZhZDI4OTQ1OTlkNmEgbGVnYWN5LXRydW5rCiszNDk5MCAwYmU5MjVkMTZlMjkzZmRmZjFkM2JkYjI2NzlmNjQ3ZDE1NmE2OWI0IGxlZ2FjeS10cnVuaworMzQ5OTEgNTNhZTFjM2Q0YTdjMTg1NjVhOTg0NDQ0MmRkMjdmY2VhNDk5MDAwMyBsZWdhY3ktdHJ1bmsKKzM0OTkyIDBmZmI2MjZkNzg4ODFmZTQyNDE5NzY5MjUwZmVlY2E5YTk5NDdiYTQgbGVnYWN5LXRydW5rCiszNDk5MyBhOGUzYmIyM2Y1YThiN2M2MjBjNWI3ZWEyYjFmYzJjMzI2MTkxN2RmIGxlZ2FjeS10cnVuaworMzQ5OTQgZTI2ZmRhOWRlNjdmMjg5NDQ4NDFmMjA2MGZiZDYyY2JjZGJiMjZiNSBsZWdhY3ktdHJ1bmsKKzM0OTk1IDdhYjA4MGJiZDYwYTY4NWMzMTdmZjdmNzk0MWE1NGE2YTFhZGQxZGUgYXN0LWJyYW5jaAorMzQ5OTYgNTVkNDJhYWViMGVlZjg2NjM1OTY5NTAzNTc1YzlkY2NiZTlhOWE3MCBhc3QtYnJhbmNoCiszNDk5NyA3Y2MxMTEyNzI3M2U3ZTk0Yzc0YmE3OThjNjE0ODk1ZTI2ZGQ0NWNhIGFzdC1icmFuY2gKKzM0OTk4IGVhNmIxOWExMGEwMTY0MDI3ODdkYjAxYTA0YzgzNWY1NTE3YzZlODAgbGVnYWN5LXRydW5rCiszNDk5OSAyOWMxYjdiNmZkN2U1NzkyNTc4ZWJmOTIyNWFiMzg1ODE3MzllNDdhIHJlbGVhc2UyMy1tYWludAorMzUwMDAgMjU1MTlkNmM5N2I4NmU3MzY4ZjU4MDJmODU5NTc0NTAxMmFlNjMxZiBsZWdhY3ktdHJ1bmsKKzM1MDAxIDgwMmQ5MzdmNTk2YWJlYjA0YjMyZTkxZmM3ZWZhMWUxNTY2YmRiYzggYXN0LWJyYW5jaAorMzUwMDIgMWFlMjY3OTk0ZmEwMzUwYWE1ODY1YzUyYWYwMTRmNzEzNzcyZjZmMyBhc3QtYnJhbmNoCiszNTAwMyA2YTExNjk1ZmU2OThlYjJjODQ0YTI2NzFhNmI3N2U4MjBlNTljNTY4IGFzdC1icmFuY2gKKzM1MDA0IDA5MDgxNmJkOGJhYzAwMWQ2NTJiYzlkN2E5YzQzNjRjNDMzZmI4YmQgYXN0LWJyYW5jaAorMzUwMDUgMjRkMzRhYjRlZjc1NDljMmE3YzE1MjZhMmYyZTUzMWQ1OGJlZTc0NCBsZWdhY3ktdHJ1bmsKKzM1MDA2IDhjMTNhYjY5YmE0ZjE0N2E1Y2RlZjA0ZDVmZGY3YzYxYWUzYmZmZjAgbGVnYWN5LXRydW5rCiszNTAwNyAxZGMyNjU5ZWQ5ZmMzOWNjZWU0OWU4YjQ1OGQ2NzAyZjM1OTk2MmQ5IGxlZ2FjeS10cnVuaworMzUwMDggNmMzYzNiNzcxYWJjZmM5ZTdiZGZjZDhlMjUxMWFjY2Q0MWFmMjQ2NiBsZWdhY3ktdHJ1bmsKKzM1MDA5IDMxYTI4MDkwMjRmNTIxYjRhNjQwN2Q1MWMwMmEzNzFlNWJjYjY2NTQgbGVnYWN5LXRydW5rCiszNTAxMCA1NzU1MzE1N2MxOTY2YzI3OWJkMjNhMTFkMjk4NjFiNzkxMGMyMmM5IGxlZ2FjeS10cnVuaworMzUwMTEgMzE1OGRjMTUzMmZhMTczY2UxYTJjMDllNDQ3NmMzNTZkZjI5ODA2ZSBsZWdhY3ktdHJ1bmsKKzM1MDEyIGI4N2QxOTk4ZWYwMDA0ZDNlNTRkNmI2OTU5MjM0ZTJlYjA0NDY1ZDIgbGVnYWN5LXRydW5rCiszNTAxMyA4YjYyZjQxOTRhN2U3OTM2OTg5MGJjNTY1ZTRjZjRlZWZkOTY5NjI0IGxlZ2FjeS10cnVuaworMzUwMTQgZDZkMWVmZGNjNWZkZDQ0YjI3MGEyZDg1NjNiMGM2NjM5OGY2ZTY1OSBsZWdhY3ktdHJ1bmsKKzM1MDE1IDEzOWE2YjZjMTUwYTU5ZmI4N2Y0ZDNhMTJmZjJiZjc3N2UzOWU0ODcgbGVnYWN5LXRydW5rCiszNTAxNiA3MzY2ODc1YTNjZDcwN2NmYWRmNGYyMWQzZDIwNWU0OGQ0NDc5OWJiIGxlZ2FjeS10cnVuaworMzUwMTcgMzg5NDY1NGI0ODQ4ZTE3NTZlMjIxYTgwYTdlOGQ2NDlhNzBkYmE3NCBsZWdhY3ktdHJ1bmsKKzM1MDE4IDFjMGU0YTUyNjczYWE1ODM4ZDJhNzIxNzdiNGRlOTdhMDMxZGYwNDggbGVnYWN5LXRydW5rCiszNTAxOSBmZDRjYmJlYWNlNzllY2M0MWVkZDMxYjMzMTZiMmE1NzkzNTc3Nzg5IGxlZ2FjeS10cnVuaworMzUwMjAgMmNkOTY2MjlmZThkMTQ4MGQyMTM4NzAyNWZjN2ZmNjI4YTg5Yjk0YyBsZWdhY3ktdHJ1bmsKKzM1MDIxIGVjNGE5OWQxNGNhNDYwNGQyNDJmNzU5NjUzNDM0ZTdjZTZiMzg3NDUgbGVnYWN5LXRydW5rCiszNTAyMiA4NjhjYWNlMjIxOWZmNzJmOGVlNWNhNjZiOWZlZDAwYmE1ZDU0NWRjIGxlZ2FjeS10cnVuaworMzUwMjMgOGU3MDg5MmE5ZjI1Y2I3NDBiMmM4NTI0Y2UyMzUwMzYwM2RmOWE1YSBsZWdhY3ktdHJ1bmsKKzM1MDI0IGM4NTRhMWYyZDE5YjgxNDIyNzRlMGRhNzhhMDgwYjY4YjhjY2VlNWMgbGVnYWN5LXRydW5rCiszNTAyNSAyYzFiYTI0MWIzYzA3YTI4YzA0NTY1MzM3MDdmOWFmYjg1NzYzNWUzIGxlZ2FjeS10cnVuaworMzUwMjYgMjhkMDBiMWE4NDQ3NjA2NDBlNThiZGRiNzIwN2JhMjU5ODRkYTFhYyBsZWdhY3ktdHJ1bmsKKzM1MDI3IDI4NGRiMmE1ZjYyMGIwODVmZjFhNDMxOGM4ZTMyMTIyMWQ5ODJmM2EgbGVnYWN5LXRydW5rCiszNTAyOCAyNmVjYTcwOGI2ZGQ2NzUyNDBmMjE4MTU5MjE4NWEwMThlOWYzNzFmIGxlZ2FjeS10cnVuaworMzUwMjkgYWQzZmFmNTJlMTllNDAzYWRlYjEwMDAyYTEwZTIzZTBiMjhhN2Q0ZCBsZWdhY3ktdHJ1bmsKKzM1MDMwIDdlYTA2N2Q3NDlhMDA2NjA0YjQzMGNlMTk1ODNiNDJiNjI4ZThjM2YgbGVnYWN5LXRydW5rCiszNTAzMSBiZjg0MDJhNTZmYTQyN2IyNTUxZjMxM2RlMDIzM2MzNjFiZGEzNzYxIGxlZ2FjeS10cnVuaworMzUwMzIgNzRjMDczYmE2YzNiMmE0MjAxMGFmOWYyMTA2OTMyYTBhODA1NGExMSBhc3QtYnJhbmNoCiszNTAzMyBlNDAxYzBmMjlmNTBkODhiZTQwZDQyODc4OTc1ZmE0YmEyMTA4YWUyIGxlZ2FjeS10cnVuaworMzUwMzQgMzhiMjNlNmQ0YzRiOTY0ZmVjZjY2ZjYyODk1MmQ1NDliODM5NjI3OCBhc3QtYnJhbmNoCiszNTAzNSBlMzQ3NGVkODBhNWVmN2EwMDUzZWVjMDA3MWRkMzM1MzBhMzYzMTQwIGxlZ2FjeS10cnVuaworMzUwMzYgNmQ0MTg4MDFmMTQyZGZmMTkzMWVlNGE0NTJhZDI2ODY2M2QyMzFjNCByZWxlYXNlMjMtbWFpbnQKKzM1MDM3IDc0NDMyM2I3NjhmMGQ0YWU5OTEzNWYwOGI4YjU0NjViNjViNmRhZjcgbGVnYWN5LXRydW5rCiszNTAzOCBjNTNkYWYzNWJiY2NjMGE5NWFjMzdhM2Q0NzBiZjQ5OGE0MzA1Y2IwIGxlZ2FjeS10cnVuaworMzUwMzkgODczN2JiNDRlMjJmYThkYmY2M2RjN2I2Y2MxYTc4ZGE3OWY3NTdlMSByZWxlYXNlMjMtbWFpbnQKKzM1MDQwIDA2MWVmZmFiYWZjYmQ3ZjQ1MTQyNWMzOWYyOWE0MzI2YzVmYjE5MjMgbGVnYWN5LXRydW5rCiszNTA0MSBkY2Q3NDNlNzljZTM1NmVkNzA5NGI0MTk1MjgwMmVjYWE5ZmJmOTljIGxlZ2FjeS10cnVuaworMzUwNDIgMzM2OGE0ZDI1ZjE3N2RlZTYxOGU3NGM1ODE1MzY4MDI5OGM1ZjdkMiByZWxlYXNlMjMtbWFpbnQKKzM1MDQzIDU4M2Q1YWE4MTAxY2UzYTg3NTBiNjk0MGM2NjhjMWVhNDg1OWM5YmYgbGVnYWN5LXRydW5rCiszNTA0NCA1ZWI5ZTI1ZTYzZmQ1ZWQ4NjQwYWVjMTU5NGE1YmE5YzBjMTdmMDAwIGxlZ2FjeS10cnVuaworMzUwNDUgMGVhOGViZWI2YWEyYjhhNThlNjhlZDQwMTMwODgyY2MwM2M1MjVhYiBsZWdhY3ktdHJ1bmsKKzM1MDQ2IDgwOTk3OGMzMDRiZTRiOTZjNjg3MzFiYjZiYzJiZDY2NTI4MGM2YmMgbGVnYWN5LXRydW5rCiszNTA0NyBmZmYxZTg1ZDE5NWMxNzU1MGIzZTU0MTQ0YTBlMGM0YzYwMjdkNjU3IGxlZ2FjeS10cnVuaworMzUwNDggY2Q3YjcwYTRjNDQwMjEwYTA1MDZlZjA1ZTY3NzAxMTQ1NDdiYmJlNCBsZWdhY3ktdHJ1bmsKKzM1MDQ5IGE1MzE5MGIzODcyN2I3NzA2NDAwMzgyNjFhYzExNWY1ZWU3YmE1ZjcgbGVnYWN5LXRydW5rCiszNTA1MCBiNjc0YWI1ODA4YmFmZmIyNjA3YWI5Y2FlZTg5NGU2MWNjMzlkNzAyIGxlZ2FjeS10cnVuaworMzUwNTEgMDk5YTRhMmYxZjc3Y2FmOWJlOWViZmJlNTQxZjkxZDNjY2E2NWE3MCBsZWdhY3ktdHJ1bmsKKzM1MDUyIDMzMjk0MjA2ZDUzOWY1OWYyYjE1NjQ2NGIxZDdiN2U4ZDFjYTM4ZDQgbGVnYWN5LXRydW5rCiszNTA1MyBjYTQzNzQ2NjI2MzI0NzViZTdjYzJjMzk0ZWQwMmJkMTQxNDgyODljIGxlZ2FjeS10cnVuaworMzUwNTQgZWQ2ODlkMGM2M2MxM2IxYjRhYjQwODFmODFmMmEzYmE2ZTZjMjFlMiBsZWdhY3ktdHJ1bmsKKzM1MDU1IDk2NzIyMzc3ZDQxMmMyMTQ1NTZhYjRmNzdkMDY5OTRkZmE3YThlYjMgbGVnYWN5LXRydW5rCiszNTA1NiBjNjcwMWQ4NGEzZmExYjNmN2UwZmY0YTQzNGY2MDM3MDNhN2ZjMWRhIGxlZ2FjeS10cnVuaworMzUwNTcgYWY5NDZkYjY3YWZjNDRkNGJhNmFlMjVkNjBjZmIxNDM3MmM2MTY3YyBsZWdhY3ktdHJ1bmsKKzM1MDU4IGI0NTMyYzI0NmEzYTBlYzQxM2NjZmZmODg4OGY2M2QzOWY4MWM2MzIgbGVnYWN5LXRydW5rCiszNTA1OSAzY2MwZDhmZDRlMmI2ODFhY2M4MTgzZjYzNWNhMjYwMjdlNDQ1ZmMwIGxlZ2FjeS10cnVuaworMzUwNjAgOGM3MDkwOTA4Y2VjZmY2OTAyNGY1ZWU1MjhmMjg4MzUwNmFiNWI5MSBsZWdhY3ktdHJ1bmsKKzM1MDYxIDQ3N2YwYTI1MjE1MGQ3NWIzZTUxN2IxYThiZWRmZGMzZDg0ZjU2YjMgbGVnYWN5LXRydW5rCiszNTA2MiBhNmJjMTMxYWI2MTg4Yzg3YzU2MmU5NjI0NjI4NWU5MjdlNWYxOWVhIGxlZ2FjeS10cnVuaworMzUwNjMgYjY3Y2EzZjY4OGY3OGJhMjAyMjAxYzJlNjM4MTkwODZmZTcxNDQ3YSBsZWdhY3ktdHJ1bmsKKzM1MDY0IDM4NTE0ODgyYTVjNGM0NWQwZDA0ZmVlMThlOGZmN2Q0YTI2Njg5Y2EgbGVnYWN5LXRydW5rCiszNTA2NSBmNjY5MzlmMzg1MjM1ZDY2NGI2ODU5OTg3NmJjNGQ2ZGYzOTEzYjdjIGxlZ2FjeS10cnVuaworMzUwNjYgMGJhYTI2NjBhNTY4YmYxZjcwYmI5M2I4YTFiZWJkNjllZTc0NDI5ZiBsZWdhY3ktdHJ1bmsKKzM1MDY3IDQxNmE1ZDI1Y2JhNjhkMmExNzY3YzY2NjQ4OTBmZTBlYzA2Njc2NDIgbGVnYWN5LXRydW5rCiszNTA2OCA3NmVkOGE3ODgzOTE4NTczN2ExNDM0MDBlOGI1ODU5NzA5NjkwNmY3IGxlZ2FjeS10cnVuaworMzUwNjkgNDcyN2M4MWRiOTQ5OTA4N2VmYjk2N2YzMGU2YTU4NTZmYmJmMjc0ZSBsZWdhY3ktdHJ1bmsKKzM1MDcwIDZlYTVjY2YwNjViZTA0MmFjNjNlZGYwNjU2NWU4ZDBkYTRmNjdhNGQgbGVnYWN5LXRydW5rCiszNTA3MSA0YWM2YTAyMjFmN2Q0Yjg3ZGM5Nzg5OTQ1Zjc5YmYzZWY2MmQxMjIzIGxlZ2FjeS10cnVuaworMzUwNzIgMDU0MjNjMzI2MWQ0MTVmNTg2NzE0MGNhMTQ2NWU5MTNjYWViYWY2MSByZWxlYXNlMjMtbWFpbnQKKzM1MDczIGU4ZGZmMTFlOTM1ODc5NjVkZjQ5OTQ0Yzg4ZGU1YWIzYjZhMDQwZTcgbGVnYWN5LXRydW5rCiszNTA3NCA0OTE1ZmJlYzYwOGY0ZjAzNTVkYzE4NjRhZWJlOGMwNjI4ZDAyN2FmIGxlZ2FjeS10cnVuaworMzUwNzUgZmQ2NDk3Y2Y3MjI4ZTgyNjk4ZGI0OGQ0N2VhNzE4M2YwNTBhMjQyNCBsZWdhY3ktdHJ1bmsKKzM1MDc2IDBjMWQyMDYyZGVlMzUzOTE0NGFjYjg3YjJjMmNhMTlhOGViNjk3ZjEgbGVnYWN5LXRydW5rCiszNTA3NyBhMGFlMmQ5ZGU2OTExMWQwNjA3ZmRjY2FhY2RjYTRkMTEwYzdiYzc3IGxlZ2FjeS10cnVuaworMzUwNzggYmIzYzNjOThjYzFiYWJhMTI5MDYzMzczNWFhNjY5NmU1MmEzYmQxYiBsZWdhY3ktdHJ1bmsKKzM1MDc5IGYwZTJhODUzNjc1OWZkYzEyMGU0MzRlNzYxZTY5Y2JlMjI3ZDgxNWMgbGVnYWN5LXRydW5rCiszNTA4MCBhMGIxNzczMjgzNWEyMGIyNDhhYzg1ZWZjYTk0OTFhYTU3NzlmNzA1IGxlZ2FjeS10cnVuaworMzUwODEgYTM0MGM1MGU5MjRhMzc0Y2ExODMxYmJkOTBhY2U2MTE2NWQyMjA0NCBsZWdhY3ktdHJ1bmsKKzM1MDgyIDU1NDEyYTQzZDJkM2UxYzQyMTA2YTBlOTc0YzM4MjU3NjgzMjJjYjYgbGVnYWN5LXRydW5rCiszNTA4MyBlYWExYTRiNzQzMjg3YmJjZmI2YzQ4YTc1MmUyMzU4NmRlZTgxYjIyIGxlZ2FjeS10cnVuaworMzUwODQgYTMyYWE3OTA2MjUxNDk1YzQxYjI4NDJlZTlhNjJjZTBhZWQ5NTQ1MiBsZWdhY3ktdHJ1bmsKKzM1MDg1IGVmZTA3NTI4OTc5MzUwZWY1YTA3ZTA1MzBmMjEwYTA1NTg0N2VhNjIgbGVnYWN5LXRydW5rCiszNTA4NiBlZDIwMjU5YTFlYTU1N2RkYTUxOGQ2Y2QyOTBlMWZkMjUwM2MxYzEwIGxlZ2FjeS10cnVuaworMzUwODcgNzk2Yzk5ZjBmYTJjNjJjYzc5MWVjMzRiMGNhOGUxYWYxY2ZiZjg5MSBsZWdhY3ktdHJ1bmsKKzM1MDg4IGQ4YzJkYjc4MmJkZjVmZjM1MjExYTAxNTU3OGM4MzUxZjM3OGViMjcgbGVnYWN5LXRydW5rCiszNTA4OSA5MTQwZWNlM2RiMDM2MzM5MjM4NjI4OGVlYzk5NjBiYWE3NTRkYThjIGxlZ2FjeS10cnVuaworMzUwOTAgYzA4ODU4NGY1NTMzOWU5YWE0YTU0ZmFjNmIwZmFjNGQzNjY4NWQ4NiBsZWdhY3ktdHJ1bmsKKzM1MDkxIDU4NmE0OWMyYzY0MWU1MzhlNTQ3ZjAyMjlhM2E0ODBiNDA0NDBhMzIgcmVsZWFzZTIzLW1haW50CiszNTA5MiAxN2NhMzQ3MzAzZDNmMTNlMmMxY2EzZDU1ZmE4MjNjODQ0MDI0NzY2IGxlZ2FjeS10cnVuaworMzUwOTMgMGYzOTRmNDM5YWQ2YTA0ZjYzMTE3YzU3NWQ1NjNhMzY5ZjZkYmM5NiBsZWdhY3ktdHJ1bmsKKzM1MDk0IGVjNzVmZjhjNzcyMTIxOWQzYzQyYWFlYWQ4ZmZhOGFiZmU3OTk5MGYgcmVsZWFzZTIzLW1haW50CiszNTA5NSBmMTY2OTExZjc3OGI4NTcxY2QxMzFlMGFhZTVkYWZiMmE4MWM0MjQyIHJlbGVhc2UyMy1tYWludAorMzUwOTYgZjdhMDVhYjUwZDNiNGUyMjY3MjBhZTZkYjUyYTAyOGY5Y2QwYTZmYiBsZWdhY3ktdHJ1bmsKKzM1MDk3IGIyYTgyMGUzMjlhOTBhMzNlNTZjODdlNmI0NmU3ZWRmZjU3ZTRkZGMgbGVnYWN5LXRydW5rCiszNTA5OCA1N2JhY2IxMTlhOTc2ODI1YTJkYWFkMThhM2QwODIyM2E4ZDFjNWRjIGxlZ2FjeS10cnVuaworMzUwOTkgOTk4OTFiODg4Y2ZkMjllOWYwZWI1MDE4NmMzODg3N2I3OGU5Y2UwMSBsZWdhY3ktdHJ1bmsKKzM1MTAwIDFkZjViNmExZGJmNmE1NDAxNDJjMWUzNjEzNGViMGJiODQ3ODViZmMgbGVnYWN5LXRydW5rCiszNTEwMSBiM2Q2NTMyNmNhNjZiNDU2ZGE5YzA5ZjdiMGMzNWEzMjJkODdkZjRjIGxlZ2FjeS10cnVuaworMzUxMDIgYmYzNmMxMTYzMzMwN2ZkMTk2Y2IyOWY4ZDY2ZTgwMzBlMzU3MmNkNSBsZWdhY3ktdHJ1bmsKKzM1MTAzIDZhOGIxMjJhZWIyZmY3YTQ2YjIwMTkyNDM5NWRmYWU1N2M3M2RhYTIgcmVsZWFzZTIzLWJyYW5jaAorMzUxMDQgYTYyODRlOWYzMGEyZTZlYjI5OWUxYjEyMTdkNTAzMDlkYmEyMTYyMCBsZWdhY3ktdHJ1bmsKKzM1MTA1IGY4NGQyYmM2ODMxZDQ4NjZmOWFmNDVmYWNlOGRmNzgwMGNjMDBhMDIgbGVnYWN5LXRydW5rCiszNTEwNyA0ZTQwZWZmMWFkMTg2ZWEyODljOGJkODZkOTMxMzk1YjQ3NWZjNjU2IGxlZ2FjeS10cnVuaworMzUxMDggZDMyNThmNDNkNDg0YmYxZTI2NGQyZTU0ZDg1OWM4YzdhOTNmNTc4NCBsZWdhY3ktdHJ1bmsKKzM1MTA5IDYzMWNlMjNmODhkNmFlNTk3ZWVlZGJjN2VmNzVhZDJhMWEzYTMxNWIgbGVnYWN5LXRydW5rCiszNTExMCBmMzhiZDM5M2U5NTQ3NWIzMjllMmI1OTcwZTcxYzA0ZDAyYWZmNGIyIGxlZ2FjeS10cnVuaworMzUxMTEgOWRhOTRlNTY5ZDQ4YmJmODA5OTk5NWU1ZDY3ZTFkMzZjMTU3NTAwMyBsZWdhY3ktdHJ1bmsKKzM1MTEyIGZjNTcyMDBmNzBmMjRkZWU0YTFlOWE5NjZjYTJkMDZiMjY3ZTcxMDcgbGVnYWN5LXRydW5rCiszNTExMyA2NGFlODMyMTMxZTE0MDc0Y2MxZjc1N2I3ZDE0MTU1ZTdhNmU4ZTc0IGxlZ2FjeS10cnVuaworMzUxMTQgNDA1NTM3NWRjMDVlYTIxOThkMmVhYmM0MDI3ZDgzNzIyMzlhNjdlZSBsZWdhY3ktdHJ1bmsKKzM1MTE1IDY3YTFlZWFkNzJiYWI0YmI4N2NkNWNkM2JjYTllOTBkY2Q2NGJjYjQgbGVnYWN5LXRydW5rCiszNTExNiBlMjBmYzFiODAyMDUxYTAyMDEyZGNkNGMwYTBmODExMWRjNzM0NjlmIGxlZ2FjeS10cnVuaworMzUxMTcgNDZhZDIxYjViZDMzNGM0OTYzNzRlMzVjODc5ZjdkYjlkYTBiYzEzNiBsZWdhY3ktdHJ1bmsKKzM1MTE4IDBhYTY0NDFjN2ZlNmQ4YmZlOWZlYzRiNmU2OGQ5ODA4ZmY1ODE4NzEgbGVnYWN5LXRydW5rCiszNTExOSA1YmJlYzhmMWJmNmQ2NTBjZWZmY2RmYzZlNTQxMDBlODM1ZWM3ZWExIGxlZ2FjeS10cnVuaworMzUxMjAgY2I5MjMxZWYzYmI5M2VhZTMxZGYzZWI0MDA1MDIwNWY4NjkxMGU1MyBsZWdhY3ktdHJ1bmsKKzM1MTIxIDg4N2NlMzlmOTVmMmFlOTgxOGZkYzU5ZjlkYWY3Yjk2M2I5MGUzYmIgbGVnYWN5LXRydW5rCiszNTEyMiA0MDY3YmY0ODE1NGQzNzRiMTkwNDczZTBmMDBiYzlkOWU4MmVmN2RiIGxlZ2FjeS10cnVuaworMzUxMjMgZWMwYzkwNjIxMGJmYTMyMDUzOTZjYTMzZTFhYTVlODgwMjVkYzYyMSBsZWdhY3ktdHJ1bmsKKzM1MTI0IGFjYTFjZTFiNGI2MTQ0MjAyZDZjY2Y1OWQ2OTE0OGI2ZTJlNGMxODAgbGVnYWN5LXRydW5rCiszNTEyNSA5MTY5ZDc5ZWQzMDQ4ZTA4MTE3MjhlZDAyZGEzMThlOTQ5NTQ5ZTcwIGxlZ2FjeS10cnVuaworMzUxMjYgY2VmNjEzZDkwNDk1N2NmYmVkOGY0OThiMGQ0YmZlNmE1ZjBkOTcyYyBsZWdhY3ktdHJ1bmsKKzM1MTI3IGM5YmVkMjAwNTAwZTRmNzcwNGVhMDRkOTY4MGVkMzNkYTg3MmNkMGQgbGVnYWN5LXRydW5rCiszNTEyOCBjODdhN2U4MTNhOTlmNjNkZWZlZTdjN2I4NzU0ZjRhZTE5YzM4YTgwIGxlZ2FjeS10cnVuaworMzUxMjkgMzhkY2VjMmY3YjAzNDQ0YTUwMzM4ZGY5NWIxNjNkOTJhZmI2OGU2NiBsZWdhY3ktdHJ1bmsKKzM1MTMwIDNhYTIwYTgyZGU4NjdmNjA1NTEzNGViMDA1MmM3OTIzNWMzMDMzNWIgbGVnYWN5LXRydW5rCiszNTEzMSA0MGQ3MjUwNzdkY2IwZDQ4ZjlkZDE0YjQ5MDA0MmM4NTFhNzU0NWYxIGxlZ2FjeS10cnVuaworMzUxMzIgYjkwNTdhNjc2M2Q3ZDAxM2M4YjQ2OGU3ZWFkOWY0Y2M4MzI5OTY1NCBsZWdhY3ktdHJ1bmsKKzM1MTMzIGIzZDdlYmMxM2Q3ZDVlZWUwZTU4Zjc4ZTIyMzk2YTRiOTViZTRmNjYgbGVnYWN5LXRydW5rCiszNTEzNCAwZmNlNWIxNzNhNzQwMmVlYjBlNjYwM2JiZDM3OWM5NDE3NDk2MDhlIGxlZ2FjeS10cnVuaworMzUxMzUgMjVhODAxNjRjYzdhZmVmNGFhZWU0YTRkMmJjZjIyNzg5ZGJhZjIxMyBsZWdhY3ktdHJ1bmsKKzM1MTM2IDg5N2RlOTIwODE5OWI5NmRkNmIxMWNkMzAxNTVkYjQ4MTFhNmNmZmIgbGVnYWN5LXRydW5rCiszNTEzNyAxMmNjMzM2ODI4ZTliMjcxOTU2ZjU4YmFlZDllMWUxNTZlNmU2OGM0IGxlZ2FjeS10cnVuaworMzUxMzggOTAwNWYyNjYyYTcwZWFiMjJjYTUwOTNkNmVkNTAyOTdlNGZjMmY2ZSBsZWdhY3ktdHJ1bmsKKzM1MTM5IDc0MDdhMjQ2ZGJlMDJmODBjOTE4NmVmMDgwOTQ0YmUxYWE4OTk5N2UgcmVsZWFzZTIzLW1haW50CiszNTE0MCBmZjlhNTQ5NTNjMGJmZWE3N2U1MmQwNDM5MDUxZTQ5NTA1MjNjOTljIHJlbGVhc2UyMy1tYWludAorMzUxNDEgNjlhMzY1ZTQ3YWMwYTIwOTY1YzgwNTc0N2QyZTFmNzgyMjc1YzhmYiBsZWdhY3ktdHJ1bmsKKzM1MTQyIDFkYzU0MjI1YTRjMjI4OTlhNjk2NTk0MjY0MTY0YjVlMzNmNjc1NDggbGVnYWN5LXRydW5rCiszNTE0MyBlNzEyNGUyNjkyNWY2NGI1ZGIzMWFjNDkyZmY5MWUzZGJjMWE2NTdjIGxlZ2FjeS10cnVuaworMzUxNDQgNjkwMTA1ZmVhNTlkMzhmZWIzNDAzMWE5YmE2OTRkNGI5OGExZTkyMiByZWxlYXNlMjMtbWFpbnQKKzM1MTQ1IDZlMzc1OGVkMWVmNDEyYTkyZTE2ZDE1ZmJmZTYwNjBiMjlmYmE5OWYgbGVnYWN5LXRydW5rCiszNTE0NiBiYmM5NDRlMWZlY2NiNjExYTk0N2JjODljZDhiZTFmMWVhMDY4NDI2IHJlbGVhc2UyMy1tYWludAorMzUxNDcgMjY2ZjIyNmY0NzFkMDQ2NTI1OTg3MGI5MzhkZWMwODNiZTAyMjYyZSBsZWdhY3ktdHJ1bmsKKzM1MTQ4IGVjOGE0Njg1YjM2MDY2Njg3MWVlZWQ3OGY3NTg1ZWI1NjFkODFkOTIgbGVnYWN5LXRydW5rCiszNTE0OSAxNGRlYTZmOGIwYzM0NGZlYTVjOTFlNzY3Zjg2NzdjMzIwMDBhODczIGxlZ2FjeS10cnVuaworMzUxNTAgYzM4MGRjMjkzMDRhZTFiMzFiODgzOTUzOWNiY2FmN2RiZmIxN2I5OSBsZWdhY3ktdHJ1bmsKKzM1MTUxIGY3ZjQyZjNjM2ZiNDc1N2ViNDYxOTBlYjVlNGI3YjUyOTE3NGY4YjkgYXN0LWJyYW5jaAorMzUxNTIgYTE1MTE1MjkwZTEzYjI4ZmM4YTYzNDE4MGFjNWJmYmE3ZDI0ZTAzNiByZWxlYXNlMjMtbWFpbnQKKzM1MTUzIDdmY2IzNTU1MmQ1M2EzNGEwODdhYzJjM2IyMTViZTgzNGI2MGJlM2QgYXN0LWJyYW5jaAorMzUxNTQgMDM4MDg3OGYzZGI1NDkzMTQ5YWU0YzcyOTFhNWExNWM3MzM4MTA4MSBhc3QtYnJhbmNoCiszNTE1NSA2MDNhOWVhYTc0ZTE1NWQ4ZGZhNjliMzU3ZTEwZTUwY2U5ZGNjODMyIGxlZ2FjeS10cnVuaworMzUxNTYgYWM0YTdiYTU0NzkyOTA0YWQ4MjdmMmU5ODY3M2Y5Y2Y4MDlmZjQxMCBsZWdhY3ktdHJ1bmsKKzM1MTU3IGIxZGM1ZTExNDhlYTM0ZWZhNWNmN2I3YThmYjJlNmU0ZWZkNWVjZmYgbGVnYWN5LXRydW5rCiszNTE1OCBiZTU2ZmM0ODVlMjcwZDZlMjQ2ZmVlZDgxNzlmZjIzMThjNWZjM2UxIGxlZ2FjeS10cnVuaworMzUxNTkgN2JlNTUzODA1OTQ5M2U2M2ZhOGQxNmQ1NTliN2RiZjhlYTc2NjFmMiBhc3QtYnJhbmNoCiszNTE2MCA1NjFmZTdmNjY1MTVlMDlmOTAxMjEwMjRjYTYwZThiODc5MGY5N2M3IGFzdC1icmFuY2gKKzM1MTYxIGM0ZDNlN2ExZmY4NjlmMGZhNjVlYmQwYjBjY2E5Y2VhYWEzMzY2ZWYgYXN0LWJyYW5jaAorMzUxNjIgNjFhMjBkZjRiMGVmNWZkNzkzZmE5OGEwYzk1MDIxODMwODM0NjNkNCBhc3QtYnJhbmNoCiszNTE2MyBiODE0ODBmN2NmZmU2MTlhOTQxN2U3ZGYwOGZiMzNkOWNkMjg0ZjEzIGxlZ2FjeS10cnVuaworMzUxNjQgMTg2MzE5Y2ZmNGIyMjRlNDAzNzM4NWQ1ZjVmNmUwOGRmZjA4MWMwZCBhc3QtYnJhbmNoCiszNTE2NSA3Yzg4YTA2OWExNDM5YTA5ZTNmNWRlZjI3Nzg2NDg5NGU2Yjg2NTRjIGFzdC1icmFuY2gKKzM1MTY2IDhiNjA4NDg0OGRhMTg5YTBjNjc5YmZmNDQwOWM0MjRmMGU0NDkwYzMgbGVnYWN5LXRydW5rCiszNTE2NyA2NmE0MjMwZjk0NWIxNDhlYjNjNzM1ZTBkNGQ3NjFhYzk5Yjk1NDY2IGxlZ2FjeS10cnVuaworMzUxNjggOGY0NzI4MWZlYTdiZWE0Yzk1NWY4MTE0ODViYmYwM2JkMDZjMjk0MCByZWxlYXNlMjMtbWFpbnQKKzM1MTY5IDQ2MjI0NjkwYTM2NTVhNDNkZGI5YWYzNGFkNmE0ZjYyMTMwM2NmMTcgbGVnYWN5LXRydW5rCiszNTE3MCBmMmZkNGU1ZGRmMTk1YWMyMzM1ZDAyNTM4MzNkM2E2ZWE3YjQ1OWRiIGxlZ2FjeS10cnVuaworMzUxNzEgZTRkNzNlZThkNGUxNmJhNGM0YTgxOTY2YjYwM2E3YWY3MTkzMjhhMyBsZWdhY3ktdHJ1bmsKKzM1MTcyIDhkMDZjMTkyZjBlNmQzZWM5ZDcwYmFhMDlkMGI0NjVmMTIzNGM5NGUgbGVnYWN5LXRydW5rCiszNTE3MyBhZGI2ZGZmZDhkZDUzMTRiNDUzMTQ2MTU4MDc0NTU5YmI2MmM1MjdlIGxlZ2FjeS10cnVuaworMzUxNzQgMWViZDA2MjZkMTc2MTA4MzI5YjcwMTU3MjRmYjg3ZmQyMmVmODRkYiBsZWdhY3ktdHJ1bmsKKzM1MTc1IDI4ODBjZWI4MTE5ZGMxYjUyNWUzNTA1M2Q5NzMxOGUzMGRlZjViN2UgbGVnYWN5LXRydW5rCiszNTE3NiBlOGI5NmIyYmZhN2IyMGZjZDgxNzc0N2ExMzI4MzdjY2RiYzhkYTFkIGFzdC1icmFuY2gKKzM1MTc3IDhmOGJiYTBhNzViNGNkMDgyNmE1YTU3ODNlMzkzMjYxZTRkZDRjYWEgbGVnYWN5LXRydW5rCiszNTE3OCA0ZTdjYzUwYjMwYTE2NDM4ZjcxNGI0YjM2ZGFjYjZlZmFiNGE0YWI5IGFzdC1icmFuY2gKKzM1MTc5IDUwMWRhYWNjYmZlMGNiNjRjYmEwYTk0YzNmY2RhMGYwMGMwYzQ0ZjcgYXN0LWJyYW5jaAorMzUxODAgZDY2N2UzM2UwMjUyM2ZiN2IwZDlkYjMxMjA4ZDA2ZjFmYjg1YTNmZSBhc3QtYnJhbmNoCiszNTE4MSA2NTc3ODM1MjA2NmJmOTRmMDg4ODBlYWZjYTc0YzhmMzE4MTllOGJiIGxlZ2FjeS10cnVuaworMzUxODIgMzc0Njk3NDc4YjVhYzAyZTYwYWJiNTgzYThlZDZmMDUyNGZkODg3NSBsZWdhY3ktdHJ1bmsKKzM1MTgzIGY3NmZlYjczYTBlNDcxNjlhMzYxNWI5MjhkNjBkMDZkOTA4ZGRjNjQgYXN0LWJyYW5jaAorMzUxODQgNjMwOGFkZjE3MmY0ODAzNTA3MjRlZmEwNzU2ZmIxYzM5ZGM0YmIwMCBhc3QtYnJhbmNoCiszNTE4NSA5NTI1MTc3OThjYjVkMzAzNjZmNDk1M2IxMTI2ZjBlYjc3OTAzNmRmIGxlZ2FjeS10cnVuaworMzUxODYgNjNmYTYwZjJkNjFjYTgzNmI1ZTJkMDk1OWRlZDFjMDAyODE5NGFlZCBsZWdhY3ktdHJ1bmsKKzM1MTg3IDRhOWU1NjM2OGM2OTA0YzM5MjUxYzgyYmE3MDFlYjgwMDAzZjZmY2UgbGVnYWN5LXRydW5rCiszNTE4OCAzYzU3YTFjM2E4N2FlZjEzODg1NjRmOTA1OWNiNGE4N2YxNjIzYzc4IGxlZ2FjeS10cnVuaworMzUxODkgM2MyNjc3YzRhMmJmMzY5ZTgxZmI2ZmFmOGIxM2RjNjRkMjQ0NGZiMiBsZWdhY3ktdHJ1bmsKKzM1MTkwIDE2YjMxNWRmMTNjZTQ4ZjdiM2FjYmQ1Y2NkNmVlYmUwZWY4NGM1MzIgbGVnYWN5LXRydW5rCiszNTE5MSA0OTM3MDc2OTI2NzE5NGI3NjkxOTk4NTRhN2Y1ZDgxNmYxZGFmOGUyIGxlZ2FjeS10cnVuaworMzUxOTIgYTJmZTFhMzU4MDBhMDZkNDc3ZDI1MGMyNDM2M2Q5ODAwZmFjNzFhZCBsZWdhY3ktdHJ1bmsKKzM1MTkzIGFmYjRjOTcyNmQxYTQ1YTIzMWQ0ZmNlZDlkNTc3M2RiMTVkZmUyOTMgbGVnYWN5LXRydW5rCiszNTE5NCBhMjgyODAxYjA2YjY0OGRmMGM4Y2M0NjAxMjI4NWE3YWJmZmJjNjllIGxlZ2FjeS10cnVuaworMzUxOTUgMTIxOWYxMTYyZDFkMWE5NTg5NzEzNGY1ZTY0OTY1MWRiZmUyZThmMCBsZWdhY3ktdHJ1bmsKKzM1MTk2IDk3YmNmMmU4OGNlYjg5MTZhYzhjNTAzODk4ODcyOWVjYjM5MDVjZGUgbGVnYWN5LXRydW5rCiszNTE5NyAxNmQyNjk4NjZhNGRhZjdiYjJiZWEzMWYyMTVlMWY2Zjg5NzFiNjA0IGxlZ2FjeS10cnVuaworMzUxOTggZGZjMTgxOWI0ZWI0NzMyZjlhMTQ4NzY1NWEyODM0NThkMWMzMGEwMiBsZWdhY3ktdHJ1bmsKKzM1MTk5IGI0YmM4M2YyZmQwNGQ5ZDIxMWJmNzJiODFiMDA4MmY3ZDc4NThiM2EgcmVsZWFzZTIzLW1haW50CiszNTIwMCA5MjU2NWNjY2U5MmI4MGNhZDdhMzVmYzQ3NmUzMGZiOTc4OTBkN2ExIHJlbGVhc2UyMy1tYWludAorMzUyMDEgNjZhNTUwZTliMmZiNzVjMmUyMTIzNjFlZTA5ODRlOThmZGM1MGI4ZSByZWxlYXNlMjMtbWFpbnQKKzM1MjAyIGJiNzE0NmQxMTdmYmQzOTBiYTQ4YTIxYWZjNzA3NWZhZTE3NjRlZTggbGVnYWN5LXRydW5rCiszNTIwMyAzY2MzY2I3OTA0M2Y3MjE4MDBiZmJiMTM3MjJkN2FiYzExOTdjMDE4IHJlbGVhc2UyMy1tYWludAorMzUyMDQgZDQxNjVkMTJmNzNjMTlmOTY1MWViOWFlYThmYzc4ZjU0YjlkMmQ5NSBsZWdhY3ktdHJ1bmsKKzM1MjA1IDM3ZDUwMWI5ZTJkNWJiMGY4MjRiNmE3NWM4ZTlmM2I2ODRiZjEwYmEgbGVnYWN5LXRydW5rCiszNTIwNiA1NjY3MzdiZmFlYzk1MDU0YmRmNDVmMjIwNjkyNzY0N2U2OWU4MTgwIHJlbGVhc2UyMy1tYWludAorMzUyMDcgOGFlODhkYjc4NDNjMWYwYzBhNmUxOGEwMmI4MDgzZWNiOTJmNWIwOSBsZWdhY3ktdHJ1bmsKKzM1MjA4IGM1ODI0YzhjNmJhNzIyNzU3N2NhMmU5NTkxMzQwZWJiMjNkNDk2ZjUgcmVsZWFzZTIzLW1haW50CiszNTIwOSAwMzJjYjE3YWMyZDZjYmZiN2ZmZTRkMzY1MjE5Yjc5NWM0YjQwZWE0IGxlZ2FjeS10cnVuaworMzUyMTAgY2MxMGIwMTBmNDBiYTFlNGUyNTk0ZWZjNDVmNWM1Yjc3ZWEzNzBkYiBsZWdhY3ktdHJ1bmsKKzM1MjExIDQyMDAzYzg2MDBmNGQzZTM3ZDE3ZmY0ODcwNWJmOGMwZmE2Y2E1YmUgbGVnYWN5LXRydW5rCiszNTIxMiBkNWMwNDc4MDdjNjk3YjM0MWNjYzM1MTU3MDNkNDgxM2Y3YzA5NjAyIGxlZ2FjeS10cnVuaworMzUyMTMgYTU3NzQxMGU1YTYwZmRlNzA0MmJmZTcyOTUwYWRmNjM0OTBiMzQ5NyByZWxlYXNlMjMtbWFpbnQKKzM1MjE0IGFhYmQ5YjU0ZTQ2OWVmODgxMDFjNTVlODcyZmEyNGZkYmQ5ODk3ODggbGVnYWN5LXRydW5rCiszNTIxNSA4NWY0OTMyZDhmZmQ5OTcwMDU1NzQzYmQxNjFlNGE4NGUxZWVjNjg1IGxlZ2FjeS10cnVuaworMzUyMTYgZjA0Y2NjMjg4NTQyYjZkYjYyMzg1ZjU2NjFiYTYxNjQ4NTgyNjgzYSBsZWdhY3ktdHJ1bmsKKzM1MjE3IDQ0ZDQ0MzhlZDU3YTVhNmU4Y2UwMzk0YjQ1ODFmZGRkZmQ2Y2U5NTQgbGVnYWN5LXRydW5rCiszNTIxOCBkZTJlZDgwMGZhNTBmYTU1NjczM2M5ZTAyNWQzMzFmYTFiNTNlYWI1IGxlZ2FjeS10cnVuaworMzUyMTkgODQ5NWIwMjdiY2UzNjYwOTkyNTRhMjdiMWJkOGQyNDU1NWJiODBiYyBsZWdhY3ktdHJ1bmsKKzM1MjIwIDY2ZTQzZjI1MDQ2ZGE1ZTcwNTNiYzBjNjliMDBiNGY4ZDE5ODY0OWIgbGVnYWN5LXRydW5rCiszNTIyMSAxZGM5NmQ4Nzk3NGViNjg4YjIwZTEyZGJiNDE3OTU3MDI1ODJiYjI2IGxlZ2FjeS10cnVuaworMzUyMjIgMTc0ZGNmMTcxZGY1MmMzZjUzMjQxYTA1M2JmNWIwYjJiNDgxZGE3NCBsZWdhY3ktdHJ1bmsKKzM1MjIzIDdiMzRkODQ5YzIyOTAwNjVkMDkzY2FlOTgzZDdiYzcwMjRlZTk2ODAgbGVnYWN5LXRydW5rCiszNTIyNCAzY2U0ZmZhYzI3YWI0NGMyYTE5ZTBhNWUzMWJjMmQ4N2U2MDRlZTk4IGxlZ2FjeS10cnVuaworMzUyMjUgMzA4YzE5M2Y1MWUzMTc4NTZjYjFiYWQ0MmI2ZWQwYTRmNDRlMThmMiBsZWdhY3ktdHJ1bmsKKzM1MjI2IDI1YjMwNDM5ZmUyMjlmMDAyNmU0ZDdkNjMyM2U2ZWZjMTAxODgxNTYgbGVnYWN5LXRydW5rCiszNTIyNyBiYTlhYWRkZWI5NTY4NDdhZDA2NGVjMzZjMjQ2OGRiZDBhZWEzZDcxIGxlZ2FjeS10cnVuaworMzUyMjggZjMwYWFhYzAwMTk1ZTg3NjUzMmYzNTNhMmVlMWQ5M2Q4ZjUxNDUyYSBsZWdhY3ktdHJ1bmsKKzM1MjI5IDU3M2IwODlmYWI3MWQzZTYyNWJlOTFjODI2MzIzM2RmZTM4YTRjODUgbGVnYWN5LXRydW5rCiszNTIzMCA5MWFmNjViOTMyZDYyMjg4N2JkYjBkNmExZDA0ODI4OWNlYTEzNTRiIGxlZ2FjeS10cnVuaworMzUyMzEgZDViNGM0NGM3NmNlMDZhODRjZDUyZGNkYzJlMmUyZTdhNDNhN2NiNCBsZWdhY3ktdHJ1bmsKKzM1MjMyIGQ5ODRiM2JkMWNlYjFhMGQyYWNhY2JkMGM3MzQxODgxNTZjNDM2YTIgcmVsZWFzZTIzLW1haW50CiszNTIzMyA2NWQyOGZmZjExNzJlMTVmNzdmODQ1N2ZhYTc0ZmVjZDcxZjU2ZGE0IGxlZ2FjeS10cnVuaworMzUyMzQgNTNkZmY2MGY1NTA4OWJhYzNmZGJkZDcyN2RkNmViNDU4ODU0NmE5MiByZWxlYXNlMjMtbWFpbnQKKzM1MjM1IGUxNzhlYjQzZWZkZGVlOWI5YjMxZDMyYWUyMDJkZTFmOGU3YTIxMTUgbGVnYWN5LXRydW5rCiszNTIzNiA3MjcxMjBmYjAzNjUyZGMyODExYTY1YmRhNWJlNmRlYmU5Y2ExYTA2IHJlbGVhc2UyMy1tYWludAorMzUyMzcgZjU3ZjVjZTIyYzhkYzhkMjEzNWI5Nzk4ZDc5YjdhZmM0YTk4MjIwNCBsZWdhY3ktdHJ1bmsKKzM1MjM4IDA4ZWM0ZGI1MDY0ZWI2YTI1ZDRlODJiMjViZDc2OWJjNzgzMzU4ODcgbGVnYWN5LXRydW5rCiszNTIzOSA4OWY5MDcwZGMxYmMwYmMxMDkyOTFiMzM1ZTYzYzM2Mzc1NWE1YWU3IHJlbGVhc2UyMy1tYWludAorMzUyNDAgZmQyZDY0YWYyNjQwYWI2MTNjODEwYWIzMzEwZDczYmQ2YmQyNzEzMiBsZWdhY3ktdHJ1bmsKKzM1MjQxIGRiNGRhOTNmMGJhMGVlNGJlMGUxN2ExYjJlZDU0ODQ0MGU0YWVmZDQgcmVsZWFzZTIzLW1haW50CiszNTI0MiA4ZTIxOGNjOGVkYWIyYmRkZmUxOTNkMDNiOWViODE1Mjg5MzQzYTA5IGxlZ2FjeS10cnVuaworMzUyNDMgZmVhYmUyZmYwZTFlMDlkMmEzZDJlYmM3MzBmMzhiMjcwYTdlN2U1NSByZWxlYXNlMjMtbWFpbnQKKzM1MjQ0IDZhOGU4YTEzYzc0NTVmY2Y3YTkwNTAzNWNiNTZjMGRjM2I5M2ExOWMgcmVsZWFzZTIzLW1haW50CiszNTI0NSA0YzEyZDNiMDE2NmZjYjAyMTM5Y2E3NzI0MTMxMmE1YzkwZWVmMDE1IHJlbGVhc2UyMy1tYWludAorMzUyNDYgZmVmOWYyYTQxYzM0YzAzNzYwZjZmM2RkMzc5YTNmYzBlY2E3MGNlYiBsZWdhY3ktdHJ1bmsKKzM1MjQ3IDJiN2UwOGRjYWNiMTRjOTY3ODMzMWViODFmYTE0N2FiNmNkM2QyN2MgbGVnYWN5LXRydW5rCiszNTI0OCA1MWMzZDQ1MmFmMmYyY2ZiOGE0MDRkODczMTgyNDFhNDcwOGQyOTViIGxlZ2FjeS10cnVuaworMzUyNDkgNzVkY2YyNjY2ZDU0NDYwOTM4YjU3ZDFhNzQ4NWE3MjNkNjI0NjkzNSBsZWdhY3ktdHJ1bmsKKzM1MjUwIDVkOWEzZDc2Yzk0ZTYwMzYyZmU0YTUyMDE0YjkxNGMzNjRiOGYwMDIgYXN0LWJyYW5jaAorMzUyNTEgOGYwNjMyMDA5OGRkNjA0MTNhMzBjNjEzYThhOTJhZjdkMmVjYzRiOSByZWxlYXNlMjMtbWFpbnQKKzM1MjUyIDE0Zjg2MGIwM2JlMjczYWE5Y2FjMjVmMWExMjYzZGJjZTY0ZjEwMDAgbGVnYWN5LXRydW5rCiszNTI1MyA1OTUzOGQzYjdjZDJkNWQzZDJlMTNiNTI2NDZmN2NjOGVmOWIxZjI0IGxlZ2FjeS10cnVuaworMzUyNTQgZWI0OGIyNTAzZjIwMWQ0NGI0YWRlNjRmYzZkM2EyMDg0ZWI1YTk2OSBsZWdhY3ktdHJ1bmsKKzM1MjU1IDJhYmM1MmMzZDRjMmZjZWFjMzY1YTFkODk1NmU4ZmRmZTg5YmRhMjAgbGVnYWN5LXRydW5rCiszNTI1NiAxZjVmNmNjYTJmMjEwZDEwOGM3ZmQxODgxOWFkOGU0YjZlYTczMDNlIGxlZ2FjeS10cnVuaworMzUyNTcgZWI2OWVlY2FiNGM3YjZjMGExNDQxNTFiOTA2MjMwN2FkMTM5NWJhNyByZWxlYXNlMjMtbWFpbnQKKzM1MjU4IDM1NDEyOTE0MzgwOTRjZmNlYjBjZDY3NDhkOTc0NThiZTM5YmE1N2EgbGVnYWN5LXRydW5rCiszNTI1OSA3MTg2NDgyMDQwMmQ2NTY5ZGU0ZWM3ZGM3N2Q2MjFhMjgzZThlNWVlIGxlZ2FjeS10cnVuaworMzUyNjAgY2U1OGQxY2M2ZjQwNWYzMzE5MTQ4ZmI3MDYzOTc0MWQyZGJiYzFhZiBhc3QtYnJhbmNoCiszNTI2MCBjZGM2NjI5MmU1NWQzNjllNzRiNGIzMjI2YmNkZDgyNzFjZTcwOGEzIHJlbGVhc2UyMy1tYWludAorMzUyNjEgMjIxOTllZjY0ZmZhMDQ1MmFmZjJiNjlhZjc5OWVhYzc5NDZlZmIzNCBhc3QtYnJhbmNoCiszNTI2MiAxMDZmYTk0YjQyZGUwYzkwNWEwZmZjNGIwMDViYzViMjgyYjFhMjgyIGxlZ2FjeS10cnVuaworMzUyNjMgNWE0NWI1YzIzNzFlODg1MTU0Y2I3ODE5MWM0NDEzOTE4YWI0NDhmMSByZWxlYXNlMjMtbWFpbnQKKzM1MjY0IGVhZWVhNTg3ZjkwYTI5NTU2ZmQzMjQxZTAyYjY0MWJmYjAyY2ViZDYgcmVsZWFzZTIzLW1haW50CiszNTI2NSA1YmVkYmE1NWJhMDM3ZmUyYzJmMzhiNWFiZDA0Y2Q2YTcyYmQ2MDhjIGxlZ2FjeS10cnVuaworMzUyNjYgNTQ1MjI5ZGZkOTA5ODU4N2Q0M2IzNDFhN2VjYWE4MGExYjAyNmZmNSBsZWdhY3ktdHJ1bmsKKzM1MjY3IDcxYTI5NGJkNzk1MDljZDQyMDk3Nzk3ZTM5ZDYwMjZlZjkwMzA1ODEgbGVnYWN5LXRydW5rCiszNTI2OCA5YjNkYWVjYWFmMjU0NGQ5YzFlMGYwYzU4NWMzNTg5MGM2MzFhNjk5IGppbS1tb2R1bGF0b3IKKzM1MjY5IDE1NjAwYTIzNzQ5MmEzZmRkNTE2YTA5OTcyMTVmM2Q2MGM2NTgwY2UgbGVnYWN5LXRydW5rCiszNTI3MCBlZTQ0YmU4ZTE5ZmNjOTRhMjYyZjE0MzE3YTc2ZDIwNmM5NjFiMjUwIGxlZ2FjeS10cnVuaworMzUyNzEgMmU2MmZjOTc4ZDhhZTk3YzNlYzU2MjUwZGZlMWZmZGVhYTAwMjM1YSBsZWdhY3ktdHJ1bmsKKzM1MjcyIGJkMGFjYzQyODI5ZWZlNDM5N2FjODJkYTQ3ZmMyODUyZDhjZWE4ZTkgbGVnYWN5LXRydW5rCiszNTI3MyA1OGQ1ZWRlNWY0Y2UyZDk3ODdjNDUwNTNjMjg0YjU3MWM3ZjFmMGE2IGxlZ2FjeS10cnVuaworMzUyNzQgNmI3YjJjNjJhYjEyNjA4ODQxZjI1OTBlZTllYjMxMzIzMjA3MmVkNiBsZWdhY3ktdHJ1bmsKKzM1Mjc1IDIzOTQ0MzkzMzMyNGIwMjNmN2NlMTlkNmZjOWRiZTRlOTY4ZTBjNWIgbGVnYWN5LXRydW5rCiszNTI3NiA3NmM4MTM4OTRlZTZmMzA1NTVlZWU5ZjVjNTY5YjkwNzkxZGMwNTQxIGxlZ2FjeS10cnVuaworMzUyNzcgM2Q5MjdlMWM3OGM4ODRkMTY3YzZmMmMyNGE1NTI0YmY1ZWJiZDdmOCBsZWdhY3ktdHJ1bmsKKzM1Mjc4IDRlZjU2OGM2NTNkOWM2YmNkOGRhZjYwNzRlYzliOTg2YmUxNDA2NDMgbGVnYWN5LXRydW5rCiszNTI3OSBjZTAxMDZkZjZhNmE2MzI1ZTM0YTlmZDFlOGIzZWYyYTI5NTY5Nzg2IGxlZ2FjeS10cnVuaworMzUyODAgMjdiZjA1YjJhNGY5ZTNiNjRkYTJhMjNjY2E3MWM0MGFmNjQzYjE2NyBsZWdhY3ktdHJ1bmsKKzM1MjgxIDEyMzNiZDk1ZGExYTkzZjllMmZjZWVkYzFmYWY0YTQ1YmFkYWQ5ZjQgbGVnYWN5LXRydW5rCiszNTI4MiBiZmI0MGEwM2NjMGMwMWZkYzgwYWUxYTlkODc5OGY0NTVlMWU2YjFlIGxlZ2FjeS10cnVuaworMzUyODMgOTVhMzJjNzg2NzJkYjNlMmNiZjgwOTcyMTYxOGZhYTBlODRkZjdjZSBhc3QtYnJhbmNoCiszNTI4NCAzNTQ5NWQzNmVjOTU3YWM2NDAzZmEzMDMwYjcwOGE4NTU4ZmE3MTk1IGFzdC1icmFuY2gKKzM1Mjg1IDhkNDljMjllOWFjMWU4MWExMTdlNDViOWJkOWM2MDgxZGZmNzFiNmMgYXN0LWJyYW5jaAorMzUyODYgM2JhNGVhOGZjZTNlNTAxZjMxMWZhZWZjMDA2MWYzNTE0ZmRhZjYyNiBhc3QtYnJhbmNoCiszNTI4NyBmYTk4MTM1MDk3NmNiZWVlNWU2Yzg4OWFhMDY1N2IzODg4N2EyZjIzIGFzdC1icmFuY2gKKzM1Mjg4IDI1YTM1ZDhmNDA4MzdjMDNiZmY1MTE4NmRlMTMxMzg0NTA1ZWFlMjAgbGVnYWN5LXRydW5rCiszNTI4OSA3ODM2MmFhYTQ5MWRmZmU3YTJlY2E3YTFlOTc4N2U4MmQ4YzA3YWRiIGxlZ2FjeS10cnVuaworMzUyOTAgNDI3ZThiYWE3MDU3NGJlMmUxOWEwMmFmYWE0NWIzNGVhYmFjMTljOSByZWxlYXNlMjMtbWFpbnQKKzM1MjkxIDM1YzBhYzhlMDg3MTM1ZjVjNTU5NmQ2NjA5MjNkMjZiYzBjM2JmOGQgcmVsZWFzZTIzLW1haW50CiszNTI5MiA1ZWVlZDUxZTgyYzRkYjFjMmZhMjVlZjFhMDNkNjk5MzEzNWU3MzFmIGxlZ2FjeS10cnVuaworMzUyOTMgZjZkOGNmZTdjMDAwOTk2ZDIyOTVkNDRlZGU2ZWI4ZDMzMzY5NzAyZCByZWxlYXNlMjMtbWFpbnQKKzM1Mjk0IDdjMDUyYmU0MDE2OTNiNmUzNzJjYzE1YTg5YjJjMThhZDUwMzJjZjEgbGVnYWN5LXRydW5rCiszNTI5NSA2NGMwOGRiOGRjZTQ0NjBlYTBiZDc0OGFlMTM0YzlhMjQzNzg2NzY1IHJlbGVhc2UyMy1tYWludAorMzUyOTYgNzliYzU2YmY5MjIwNzQ3ZjdlOTliNjBjY2M2NGNkMDQ4ZDFhZjAyZiBsZWdhY3ktdHJ1bmsKKzM1Mjk3IGIwYzZmN2M1YWRlNjVhNGY0NWU1MDdhODMyNTA4Y2M4MGRhMmU5OTkgbGVnYWN5LXRydW5rCiszNTI5OCA5ZjQ1YTJkMzY2NmRlN2RkYWQ0MWIwZDc4Y2QzYTk2OTg5NmM2YTA1IHJlbGVhc2UyMy1tYWludAorMzUyOTkgMGEzMzRiMjI2ZjNhMzExZDdiMzE4NzI0YzJiNWY5OWY5OGI3M2E0ZSBhc3QtYnJhbmNoCiszNTMwMCBlYzYyMzJlZDkxMTUyNWJlNDQ0YTc0ZWRkZDVkOWMwMjNhNjhiMWFmIGxlZ2FjeS10cnVuaworMzUzMDEgZDk4ZDAyNTViYjBmZmQ4ZTRlMDM3Yzc1MWJjYzcyZjk5MDJiOTM5ZiBhc3QtYnJhbmNoCiszNTMwMiBhYjMzOWQ4MGM5YzlhZjdkYjkxNmM2YzhmODhjNmVlMGI1NmNjOTgzIGxlZ2FjeS10cnVuaworMzUzMDMgYTU0NTdiNjIwMjI2NThhOWVmOGQ4OTE2YmFhMmEzYWYxY2UzY2ZkNyBsZWdhY3ktdHJ1bmsKKzM1MzA0IDcyZTk3MGMwYWNjYzEyMjVkODQ1NmYzMGM4MWFlMWRiYzBmMThkMzkgbGVnYWN5LXRydW5rCiszNTMwNSAzOTEwMTE4NDBhMDNmNzY3Mzg2ZDA3NDM1YTU2ZDk1MmM1YmE1YmE1IGxlZ2FjeS10cnVuaworMzUzMDYgMmM4YTQzMDYzZDgyYzhkY2RiZjUzMTNlYzE0YzYwM2EyMzhjNzQ5YSBsZWdhY3ktdHJ1bmsKKzM1MzA3IDQ3MGY5NWFkNjc1MDdkYjRmNWNiNGMzOTQwNzI1MmEzZTk4MmM3NDggbGVnYWN5LXRydW5rCiszNTMwOCA5N2ViZTQwMTRlZGM5Y2UwOWE3ZjlhZTFhNzA5YzQ0NDY1NGY5OTk4IGxlZ2FjeS10cnVuaworMzUzMDkgM2RhNmMyYWRhZDM0M2NjNjA5MGQ1MjdlYjE5NjAyN2U1ODE4NTFiZiBsZWdhY3ktdHJ1bmsKKzM1MzEwIGJkZjAwNmRlZTY5ODZiODA1ZWZjYjljODAxYjU3ZGZmODg0ODZiMjYgbGVnYWN5LXRydW5rCiszNTMxMSBhMTU3Y2MyMGYxYjdkYjVlN2ZhYWU2ZmRlZDdiMmYxMDBhYjQ4NDk2IGxlZ2FjeS10cnVuaworMzUzMTIgMjI2MzI1MGQ3YjJmZDMwMjU2N2E0ZDUxY2Y4YmI0NDJlZDI0MjcyYyByZWxlYXNlMjMtbWFpbnQKKzM1MzEzIGE2ZDhkNWFjZTZhNzhkNTVjNzc5MGNmODRiYmNiMGQ4NThjMzllZGUgbGVnYWN5LXRydW5rCiszNTMxNCAzODI4MzM5YWRmODY3Y2FlNmYxYmUyNjgzYzVmY2I0YWY0MWJkY2I0IGxlZ2FjeS10cnVuaworMzUzMTUgMTE5ZDAxODJiZDVlNDMzNjRjMDk0NDJmY2Q4YmQ0OGMzMDZiNDkwZiBsZWdhY3ktdHJ1bmsKKzM1MzE2IGMzMDNlYzAxOWNiMmM4ZDEwNDMwMWE2MDc3MzgyNTcxNzRhMDZhMjIgbGVnYWN5LXRydW5rCiszNTMxNyA5Y2FjOWQwYjE5ZTMxMzFlODU4MDA1OGVlM2VhZTVlYzYwOTFjMmExIGxlZ2FjeS10cnVuaworMzUzMTggY2M3OTQzMTg5YTViY2FjMTNjMDI3ZDZkMGNkMGE5MmQxZTllNjc0NSByZWxlYXNlMjMtbWFpbnQKKzM1MzE5IGM3NWE0ZWRkMWU1MjdmMDZkNGNiMGI5NjJiZmY2MDVhNjBmMDcyNmYgcmVsZWFzZTIzLW1haW50CiszNTMyMCBmMWUwYTdjNDhmMzYwMzM5ZGI4Mzc0M2FlZTlmOWYxY2UzNzJhZDEwIHJlbGVhc2UyMy1tYWludAorMzUzMjEgNmRkMzhlNDU4NmZmZmQ4YTY3NWMwNDRjMTgxMzU4NzNiM2U2MTdkOCBsZWdhY3ktdHJ1bmsKKzM1MzIyIGY0NTdmMThmNTkyMjEzOWZhNzI1NzFiMDA3ZmVhNDMzMThhNDlmYzMgbGVnYWN5LXRydW5rCiszNTMyMyA0NzViZjRlNzkyMGVkZmNjNjk4NDNlYjkwMGE0YjMzNDNhYTM1ZmZhIGxlZ2FjeS10cnVuaworMzUzMjQgN2E3NjFjYWQ3NTEzZDM3ZDlhYTMwNjJiOWZkYmJmZmM4ZGVlYzQwMyBsZWdhY3ktdHJ1bmsKKzM1MzI1IDkxMWIzMjE1ZDBkYzQ2ZDBiMDQzODA1OGVkMGRiM2YxZDk3YjdmZmIgbGVnYWN5LXRydW5rCiszNTMyNiAxYzA2NjM3MTZkYjM1N2RiNDI3OWE4ZjAyNjIzYmVmOTBiM2UwN2IxIGxlZ2FjeS10cnVuaworMzUzMjcgOGEzOWE5OGM4NzgwMjRjM2RmMWFlYjMwY2QwNzA3ZTY0MTRiYjkxOSBsZWdhY3ktdHJ1bmsKKzM1MzI4IDQ2MzJmY2M1NTQ0YTE0NmNjZDQzYzgxY2ZmMGNiZjZlYmVkNmY4ZWIgbGVnYWN5LXRydW5rCiszNTMyOSA4MzUwMmUzMWUwNmUxOWQwNWU4YWFiNjliMDE5NzFlYTRkNzdiMjk3IGxlZ2FjeS10cnVuaworMzUzMzAgN2U0ZTMxMzdiMjUyN2EyOWZmMWRjNzI5YTA2YTY5NGVmZTNiNTk2ZCBsZWdhY3ktdHJ1bmsKKzM1MzMxIDc4Zjc1OGFiYzc5ZjI5ZTMzYTY1ZGIxM2EzYzQwMGFmYTE3MGIyMDYgbGVnYWN5LXRydW5rCiszNTMzMiA4ZWMzYWE4NzllZWVhMGZmOTAzNDdhMGEzMTMwNDQ2Zjg3YjA4NTliIHJlbGVhc2UyMi1tYWludAorMzUzMzMgM2M5YjRmYzNlZjE0N2MwOTljYzIwZDcwNjRjYzgwMTNjYzJiZDkzNSByZWxlYXNlMjMtbWFpbnQKKzM1MzM0IGMzN2M0MDdmYWY1MmVkOTJjMTJmZDc0ZDliNzYzYzhlMWJiMmI2MTggbGVnYWN5LXRydW5rCiszNTMzNSAxOWI2ZmVjMmU1MmQyOGIyNDBjYjVlNDEwZGQ2MTgyZjVlMjhlZGE0IGxlZ2FjeS10cnVuaworMzUzMzYgNjUwZWYwMDllMDhjMTk2ZmE0NmJkNzI3NGQxM2VlYzg1MjRlNWY0NiBsZWdhY3ktdHJ1bmsKKzM1MzM3IDY4ODIyOGFiMDVhZWI1NzQyNTEwYzFiZGY3OWYzMmVjNmM3YTg1MjUgbGVnYWN5LXRydW5rCiszNTMzOCA4MTgzZGQxYTRmZTZiYmNmMmZlOTY0ZTkwOGQ0ZTJmMjRmMzE4ODMxIGxlZ2FjeS10cnVuaworMzUzMzkgYTlmZDQ3NjQ0YzBmNzk4Y2U1YzIzYzg2NDIwNzMxMTE0OTU0ZDY5MSByZWxlYXNlMjMtbWFpbnQKKzM1MzQwIGYyZDk0ZmYxNWFjOGY0Mjc5ZjE5Y2YzYThjYzRmMWI5YmQ0YjJiYTcgbGVnYWN5LXRydW5rCiszNTM0MSA1ZTc0NTVmYjhkYjZiNWZlNGFiNWY1ZmRhMmZkYmY0YTU1MDBlYjNmIGxlZ2FjeS10cnVuaworMzUzNDIgMjIyMWY5NjAxODBkZjcyZWE0OGZmZmI0MTBiMjI4YzQwYTllYTI3NSByZWxlYXNlMjMtbWFpbnQKKzM1MzQzIDBiMTM3NjE4MjBiMGMxZDg4OThlZTVjY2JkYjJlNjE4ZGZiOTk2Y2QgbGVnYWN5LXRydW5rCiszNTM0NCA3YWJmNDI0Nzk4ODBlNWY1OTVhZjZlYTNkN2I3MjViYjg5MjE2YmFhIGxlZ2FjeS10cnVuaworMzUzNDUgMmM2MTIzZDkyNWZlZTk2ZmVkNTAzN2MyZmNjNWUxNDEzNTJmYzQ5NiBsZWdhY3ktdHJ1bmsKKzM1MzQ2IDU0Njg1ZDlmZmI4NzZiYTRiZjk3YTJmODhmYTkxM2IwY2Q3YWE0OGQgbGVnYWN5LXRydW5rCiszNTM0NyA0YjJkNmQxMzAwNjE5OTlhOTlkYWQ4ZmZjZGYyMDMyMmRiMDQ5MzkzIGxlZ2FjeS10cnVuaworMzUzNDggNjlhYzY3MmI0OWIzZWM3YWVkMzNkYjZkZjU4ZTk2MTI1ODhmNWU1OSByZWxlYXNlMjMtbWFpbnQKKzM1MzQ5IGNhM2M5OThhZmE1NTVmZDMzZGRjNTUxYjBkZDY0YWZkYTBkODNkNWMgbGVnYWN5LXRydW5rCiszNTM1MCBjNzIzYjBjMWE3ZTFkYjRhZWNhMjhlNTNjMjAwZjQ0YmQ1MTU3NmUwIGxlZ2FjeS10cnVuaworMzUzNTEgMjZhODBmMGFmOWYzYWU3NWEyMmQwNjA3MTA2NjU2ZGUxZjMzN2M5YiBsZWdhY3ktdHJ1bmsKKzM1MzUyIGM2NzUzZGI5YzZhZjhlMmVkMDRmYjA2OTA5NTc0MjQzYTdiZjM0ZjQgbGVnYWN5LXRydW5rCiszNTM1MyA3MDZkNmQxMWVlMzYzODE5M2VhNmNiM2UyOTM5YWY5NTY0NTdiMDJkIGxlZ2FjeS10cnVuaworMzUzNTQgMTIzNzE4ZDBkYzA5ZTQ4ODUzN2RjN2IyMmI1NTJlZTEwNGVmZWRjOSBsZWdhY3ktdHJ1bmsKKzM1MzU1IDY1YzUwMmI2MGI0ZDE5YzEyMjcxOGQwMWE0YzRjYWRkMDNiNzRiMmUgbGVnYWN5LXRydW5rCiszNTM1NiBhZjI1Y2NjNzVmZWFjYjllNjRiNzY4MjZhMTljNzhkYjg1OTYyZmFiIGxlZ2FjeS10cnVuaworMzUzNTcgMDVlMWMyN2MwYTc0ZDgxYjUwYzQyNmU1MDkyNmNkMzI5YTc5MzA2ZiBsZWdhY3ktdHJ1bmsKKzM1MzU4IGNkODdmZjZlYTgxNDBlZjNlMjFkN2Y5ODQ3N2JjYTY3YWE0YTIzMjIgbGVnYWN5LXRydW5rCiszNTM1OSBmMWQwZmE2OThiNzM3YjhjMzYyMmFmNTA5YjlkYTQ2MjViNTFhYTA2IGxlZ2FjeS10cnVuaworMzUzNjAgZDdmZjA1MTM3Y2VhM2RmNTY1MjMzYjIzYTExMmFhOTViNGNjNTRiNCBsZWdhY3ktdHJ1bmsKKzM1MzYxIGYzY2I0Y2FkNTg1ZTY2OTQ5OGY3MGNkMjAxZmFkNjcwMTNhYTA1M2QgcmVsZWFzZTIzLW1haW50CiszNTM2MiAwNmQ4MjRmNWYyYzk4ZmY1NWZiZjhkMjIwM2RhZGU1NmEzYzM2OTI5IHJlbGVhc2UyMy1tYWludAorMzUzNjMgMTU1NTNhMWI3YTE3YTEwMjc0MTAxNGNmNzcyMzBiNDkyMjFlNjdkNCBsZWdhY3ktdHJ1bmsKKzM1MzY0IDA3MWVlMGZmNzQ2Nzg5NjhjMmNjODg2NTMwM2U5OTRmMzBkOGJjZDggbGVnYWN5LXRydW5rCiszNTM2NSAyZmVkMzMxZGUwMTRhNGMyY2Y5ZTY3MDNkOTAxZDBiODc1NjQ1MzQ1IGxlZ2FjeS10cnVuaworMzUzNjYgZmQyMTAzYWU2ZjI5YTFlMDZiM2ZmOGNmNTQ4YWRiNjRmY2EyZDRhMiBsZWdhY3ktdHJ1bmsKKzM1MzY3IDhlY2VlOGY0NzEwOGM4YjVhNzVjZGVkY2RjMmQ3NjVmMDYxY2RlYmQgbGVnYWN5LXRydW5rCiszNTM2OCBhZThkYmY1MDAxNzJhMWFjMWI5MzU0YjE4ZTE5NTBjY2UxNzBjNDJjIGxlZ2FjeS10cnVuaworMzUzNjkgODBiZDJiODVlZDhhMWU5OTc5YThlNjlhNDNlN2VlNjhiYmY1Y2Q3OSByZWxlYXNlMjMtbWFpbnQKKzM1MzcwIGRmZGJjMDA1OGQ4NTkwZTIxODU5Y2EwMzY3NjVhYTRlYmZkN2VmOTYgbGVnYWN5LXRydW5rCiszNTM3MSAwOTc5ZmEwNjJkZWJmZTdkNmM1ZjA1NGMyODdjYmIyZmJhYjQzZWY4IGxlZ2FjeS10cnVuaworMzUzNzIgMjQ4YmViOTlhMzA0YzkzZWJhNDY0MGRkYTgyOGUwM2IzMGU0NjMwYyBsZWdhY3ktdHJ1bmsKKzM1MzczIDQ2ZGYwOGViMDgzOWU5Y2Y1NmE4MGYwODcwYzlhNjE5MTI3YjUyMGMgbGVnYWN5LXRydW5rCiszNTM3NCBjMmRmOGE1YzM1N2UwMGU2MDFkM2JlMGFjMTQ1MDY1MzZmZGYzMTBjIGxlZ2FjeS10cnVuaworMzUzNzUgNzM5YWI5ZGUyYTFiYWFkNWZlMTFiODc4MGIzYTZlYWNhMjExMmMyMCBsZWdhY3ktdHJ1bmsKKzM1Mzc2IDViMzg5OGQ5YmE1OTc3YWM2ODA0YmNiYjhjZjFjYWFhYzAxYmE1OWUgbGVnYWN5LXRydW5rCiszNTM3NyBlYmJhNTU4MmRjMGRiNTM2MWY0YjQyYzAzMGVmNGUyNTI2MzhhMWRiIGxlZ2FjeS10cnVuaworMzUzNzggYmMwMDY2ODJhY2IyMWExZTFlZGNlMWMwMTI4ZjVjNTA1YThkMTNkNyBsZWdhY3ktdHJ1bmsKKzM1Mzc5IDhmNjAyMTdhNzU0NzU5OWRhMjBhNWYyNDBlYTdjM2Y1YjUxNWNkOGUgbGVnYWN5LXRydW5rCiszNTM4MCA0Nzg5MGMzOTVlYmFhMjBlNGJlMWNiN2Y3NTRjNGZiNGNiY2JmNDVjIGxlZ2FjeS10cnVuaworMzUzODEgNjM1ZWViYzQ3M2IwNjVjNzU0YzhmY2U0M2Q3YTMyMzZhNDMwMTFlNSBsZWdhY3ktdHJ1bmsKKzM1MzgyIDcwODBhMDIxMGNmMTg3ZjIwOWMyMzMzYjM2YzU4OTNiM2EwNTQxNjEgbGVnYWN5LXRydW5rCiszNTM4MyBkMzRlN2VhZjRjZDZhNzQ3ZTgzNmZlZDYxY2E5MGFhZTY4YzAzYzVmIGxlZ2FjeS10cnVuaworMzUzODQgYjc5NTQzM2UwYmQ5MTk0MWQ4ZDdjMGE5MTZhZDExYjkzYTNlZDljOSBsZWdhY3ktdHJ1bmsKKzM1Mzg1IDFiMDJjNzdjZGNmZTEzNWMwYzMyNzgyNGZmODlmY2UyMjljNjEyOGIgbGVnYWN5LXRydW5rCiszNTM4NiAxNTQzYWZhYjFiNjcyYjEyNDdiMWJlODYwNWIxODc0N2ExOWQ5MmM3IGxlZ2FjeS10cnVuaworMzUzODcgN2U0ZGQ5M2Y0YjI3MTMxMjY2MDYxOTQwYTRhODg4ZDRkMWVhNGQzNiBsZWdhY3ktdHJ1bmsKKzM1Mzg4IDcyZTM4YmQ5NGU1Njk4ZjZlMzA5YWYzMjAyMDlmMjM5ZDM3OTEzMGMgbGVnYWN5LXRydW5rCiszNTM4OSAzMTU3N2MyODE1ZGU1MWQ5N2EyODQ2ZWY3NDkzMWRmNTc4YWU1YjM1IGxlZ2FjeS10cnVuaworMzUzOTAgYjRlNGRiZDI0ZmU3N2ZjNGUyZWI2YThhNmNmMmMwOThjOTBmNTczNCBsZWdhY3ktdHJ1bmsKKzM1MzkxIDIyOGQyNjRjNWZiYmQ5ZDhhYjE1MzY0NTdmYTI4OWRiZDJjZDc3OWEgbGVnYWN5LXRydW5rCiszNTM5MiBkZDY5ZTNmNTIyNWJhZmU1MDg5ODFhYzJkZDZkZjFiOWVmNWYyYWExIGxlZ2FjeS10cnVuaworMzUzOTMgNWJkNDU1NjM4YzdhOGE0OWQ0ZGYzMjlhOGEyYzRhMTczOTBmMzBiZCBsZWdhY3ktdHJ1bmsKKzM1Mzk0IGVjNmJhMDNiYTk2MjdkZWI4ZjM0NmEwNjRjMDFjYzRmYzdlZjhmODIgbGVnYWN5LXRydW5rCiszNTM5NSAwNGViMmViYjQ2ZTI3YTFmMjZmYjg3NzA1ZWY5YTg0N2Q5ZjkwMjYyIGxlZ2FjeS10cnVuaworMzUzOTYgOTViZmI2NTNmZmZiYTAxMjA4OWEyM2VkNGE4ZjM1OWU5Njg5MmM2NyBsZWdhY3ktdHJ1bmsKKzM1Mzk3IDEyNTNmNmUyMGNkZWUwNWI0ZDZkNzdmNTJjNzc4OTQ4YjgxY2RjNmEgbGVnYWN5LXRydW5rCiszNTM5OCAwZDUzZWNmMjJkOTE1MjNkYTUwMzY0ZmMzYmUzMWUzYTZlODY0ZmE2IGxlZ2FjeS10cnVuaworMzUzOTkgMDQ3MTQ4MDg5YzM1ZDU5ZTdhY2JhZmJjNTFhZjczMjhjNzcxOWNiOCBsZWdhY3ktdHJ1bmsKKzM1NDAwIDQyZjg4MjA2ODZjOWViYTdkOTlhOTBkYjg0M2IwZDFiYTBhODQwMDAgbGVnYWN5LXRydW5rCiszNTQwMSBlZWE2NzRiZjdiNTlhODZhZTIxNTk2Zjg5OTMzNTkyM2Q0ZjRkNGY4IGxlZ2FjeS10cnVuaworMzU0MDIgMzBlMzA1YmZkZGRiZGM0ODhkNzc1MWJjZTU2MWY4YWQwNjUyZmE0NCBsZWdhY3ktdHJ1bmsKKzM1NDAzIGEwZmIyN2I0NGQ3ODM4M2EzOGJmZjdiMjJmMjAzOGM1YmNiNTczOWYgbGVnYWN5LXRydW5rCiszNTQwNCBkZjA2NDc5YzZlN2NkMTFkMmQ0NzE3ZDZmYzYwYjNiZGExZDAzMWU1IGxlZ2FjeS10cnVuaworMzU0MDUgNTc2MGI0ZGQzYTIyNGU0NzdlMWYxYWU1NmE1ZmZjNTQ2OTNiZjAzYSBsZWdhY3ktdHJ1bmsKKzM1NDA2IDgzYjAzODJlMGQzNjI1YWE5ZDc0YjA3NDYzOTc0YmVlYTE1YzgxMTIgbGVnYWN5LXRydW5rCiszNTQwNyBkMTBjNzc4YWYxNjdhMGYzY2VmNWZlMDU0ZDM3OGEwMjA3MzA2NGFjIGxlZ2FjeS10cnVuaworMzU0MDggNzY5NDQwODRlNzU2YTE2YjhkNTgxYzkwNGUxNjRmZjhmODZlNDVmOSBsZWdhY3ktdHJ1bmsKKzM1NDA5IDI0MzY0MmJiZDAzZjM1ZTQ1ZTFjNmE4ZTM5NzRlZDMxMzQwNzExY2IgbGVnYWN5LXRydW5rCiszNTQxMCBiZTc4MmQwN2M1MThkMjhiMjU4MTZmYTg0MDZhYmRkZWI1MTk0ZTJhIGxlZ2FjeS10cnVuaworMzU0MTEgMzVjYjgxMTRiNDVjMjViMGU5M2EyMjQwYzc5NDJmNjQzYWJmMGY0MiBsZWdhY3ktdHJ1bmsKKzM1NDEyIGVmMDZjMjEyNGNiMDZlMWY1MDkzZDUzY2RjZDM3NjBmYTcyNWU5YzUgbGVnYWN5LXRydW5rCiszNTQxMyBmMjYwMDQ0OGU4NWM5NTA2NTc3YzYwNzViMDA5MjFhOGY5MmRhZmQxIHJlbGVhc2UyMy1tYWludAorMzU0MTQgN2ZmZmRiOTRhMTcyZGE0NWQyMWMxZTZkNmY4ZjU4MjU5MDViMDZkYyBsZWdhY3ktdHJ1bmsKKzM1NDE1IGYyNmQ4Mjg2YTQzZTllNDVjNGZmMGE5MjBmZjk3MDM0YWViYTJmMTUgbGVnYWN5LXRydW5rCiszNTQxNiAwMzY5M2FmNDZhZmJjZWJlNjZlODk5MDlmNjkwYTYwNDdlM2Y1N2QyIGxlZ2FjeS10cnVuaworMzU0MTcgMjZjZjI1ODZmMmZkMjk5ZTIwNzY5ZDA4NGUzNDhhYzU0N2EwYTE2NiBsZWdhY3ktdHJ1bmsKKzM1NDE4IGI4OTkyZTc4MTg0MGEwODVhMzQyYzUwNTEzMjhmYTY4NWRmNTA0N2EgbGVnYWN5LXRydW5rCiszNTQxOSAyMDZkODU3NWY2NDQxOWZhNjZkMzk2YTE4YjM5NjE3NTliZjFjMjQ3IGxlZ2FjeS10cnVuaworMzU0MjAgMzVmNTZlMDg3MjdmOTU5NTMzYzk2YjUzY2NjMDU0ZjkwMDMyZDI5YyBsZWdhY3ktdHJ1bmsKKzM1NDIxIDE1MmFkYWY3NjVlYjJmMDVmMDUyMTg5MDNhZTY4MjFkNGYzMmI4ZjUgbGVnYWN5LXRydW5rCiszNTQyMiA4OGU5YzA0NDRkNGRkYTdlYzc4NjNiMjcyYzU4NzA4ZGI3NmFiN2FjIGxlZ2FjeS10cnVuaworMzU0MjMgM2Y2OTNhNzcyNjk0ZTIzMTE5NzA4Zjg0ZGU4NDI2ODg3OGNhYmY5YSBsZWdhY3ktdHJ1bmsKKzM1NDI0IGJhOTg5OTZiNGQ1MGE4MWNiYjYwZTU5ZWNlYjE1ODQ4ZDllNWJjN2IgbGVnYWN5LXRydW5rCiszNTQyNSA5YTRjNDljNWFjMDNjYThiMGVkMTcxMWU0MTViMmUzZGI1MTg5OTJkIGxlZ2FjeS10cnVuaworMzU0MjYgYWU2MDM3YTNhZGNlOTk1NTZjNTIwMzVlZGRlYzhlZmQ4YzdlY2RhYiBsZWdhY3ktdHJ1bmsKKzM1NDI3IGEzODMwYWUyOTRhZTY4M2RiMjFjNDFhNDdmZTc0ODRkYzU0ZDI2YzAgcmVsZWFzZTIzLW1haW50CiszNTQyOCBhZTZmZGE5NjBkMzliYzMwNDlkYTA1NDAyOWIyOWQxZWNkNDcwMDJlIGxlZ2FjeS10cnVuaworMzU0MjkgNjA2ZjA0NzNhOTY2ODdmNDg5ZjVmYzNjMzgwMjE0OTUzNDRlNDE2MyBsZWdhY3ktdHJ1bmsKKzM1NDMwIDZiY2NhNDc5MTg0OTliNWRlZjEwODg0YmM4YzFhYWNlNDE1YmE0MmEgbGVnYWN5LXRydW5rCiszNTQzMSAwOGMzYjQ5MDU5NjFkZjYwMzJkYjY0NGQ3YTkxMzU4MjMwNzc3YjQ5IGxlZ2FjeS10cnVuaworMzU0MzIgYTZiY2Y0ZGYxYTg1NzZkYmE5ZGRlZDU3ZTVlOTAxYTE1NDdlNjk4NSByZWxlYXNlMjMtbWFpbnQKKzM1NDMzIDUzMGEwZGUzNTE3YWFmMGU5ODM3ODNlOWE3NWFiNTkxOTE1ZjQ1MjggbGVnYWN5LXRydW5rCiszNTQzNCAyODMwZDhlMWFmMTg1YTU5ZGM5MjM1ODgxYmY2OWFmYTI0NTAwYmRkIGxlZ2FjeS10cnVuaworMzU0MzUgZjczNzRlM2IyNzlhODhjNzMyMjFmMDBkYzk5NDVkYjEwYmRjNzc3ZSBsZWdhY3ktdHJ1bmsKKzM1NDM2IDJiZmM4ODY2ZWE5OTM4NjhlYzIyOWY3MTRiNTE0M2I0NDBlZmQxOTMgbGVnYWN5LXRydW5rCiszNTQzNyA3YmIwMzAwNjZlYTRiNjUwOTczMTE0ZWVkZThhNDhkYzY2NjUzMGQwIGxlZ2FjeS10cnVuaworMzU0MzggYzBhNTQyYTFmYzFjOGI5YjdiY2EwYWU2NWQ1MDc3MTc0YTJhOWNlOCBsZWdhY3ktdHJ1bmsKKzM1NDM5IGRhNzhiOTZiNmFhYmViMDNlNThmOWFjMjM1ZjlhYjYwYTM4ODdlODcgbGVnYWN5LXRydW5rCiszNTQ0MCBiYjNiY2NiM2I3N2Q1YWEwMDBmNTExNjI4YzM2YTUyN2FhNzA4MjNiIGxlZ2FjeS10cnVuaworMzU0NDEgY2U4M2FiMDdlYTA3MzA4ODY0ZjYxZDlkYzBmOGYzZDNlM2YzZDkyYiBsZWdhY3ktdHJ1bmsKKzM1NDQyIDZiNzUwNjA0NjRmNDQ2MjdmNzdkOTg1OWVlOTU3OTNhY2E2NjZiOGQgbGVnYWN5LXRydW5rCiszNTQ0MyBjMzIzODFmNGRjNmYyZTU0NDdkNTZkYjJkMGIzNTM0N2MzYzlkOTRlIGxlZ2FjeS10cnVuaworMzU0NDQgMDE2ZjAwNmQ3MWNjM2ZiYzBmZTRlZmUzOTNkNjU5ODlhNjE5ZTBjMSBsZWdhY3ktdHJ1bmsKKzM1NDQ1IGFhZmU1ZmVmNThiYWI3YzEyM2IzZGQ5NzY5NDcxYmY3OTc3OWQ1MzIgbGVnYWN5LXRydW5rCiszNTQ0NiA4MjMyNzlhZTQzZWIxMGFmOTZmMDQ0NWQ5ZmRmZGVlNTYwNzcxMGM2IGxlZ2FjeS10cnVuaworMzU0NDcgYTg4NWU0ZDY0YWQwYjg5OTQ3MjA5MjE5ZjdhMDQ5OWE5MjY3OTcyMyBsZWdhY3ktdHJ1bmsKKzM1NDQ4IGNlNzBmMTQ0NmYzOTllMTJlNzIyYjk4YTAyMjdlOTczZTc1YTA3YWQgbGVnYWN5LXRydW5rCiszNTQ0OSAwZmI1MDY2ZmMyYTdmZDQ2OGYwZTViNWE5NzA4ZWYxNzEyODBmNDdkIGxlZ2FjeS10cnVuaworMzU0NTAgMTJiZjM3YTU4MDE1YWY5MzY5Yjg5YTc3YmRjYjM0ZTIyNzU2OTJhNiBsZWdhY3ktdHJ1bmsKKzM1NDUxIDVlOGM2ZjM4ZTE1YjVhY2UxNWNhNTc5NzAwZDFmOGFhNGE3ZmNkMWEgbGVnYWN5LXRydW5rCiszNTQ1MiBmN2JmZDhmOTFjMmI5MGM3NDIzMWNmYzJkMzUzZjBiMTJlNGVlNzAwIHJlbGVhc2UyMy1tYWludAorMzU0NTMgNmQ4YTE0MTQ4MTU5YjFiZDYyYTIyMTYzYjc2MjFiMzAxNjU0MzQ5MiBsZWdhY3ktdHJ1bmsKKzM1NDU0IGFkNWM2MDg1MDIzZTI0OTMxMzllMTZjMTAxZDlhMzdhNDczZDgyYmEgbGVnYWN5LXRydW5rCiszNTQ1NSAzMzJkM2ZmYWRmMjg3ZWIyNGE0ZWNmY2NkMTA5MjE4YzQ3ZjA1ZDYwIGxlZ2FjeS10cnVuaworMzU0NTYgNTA3NDIyZWFhNzYzNTkzZTdiOTU5OTBjYzhlMzgwZTFkN2M5YzNiMiBsZWdhY3ktdHJ1bmsKKzM1NDU3IDkyZDQwMjIwOWU5MGY5NzdlZjM1YjhmMjdjZTI5NDdmMDM1MmRlMDIgcmVsZWFzZTIzLW1haW50CiszNTQ1OCBkMDg3NzI2NDE3ZWE4YTEzZWQ1MzllNWM0MWE3ZjFlMjIyZjFhNjM0IGFzdC1icmFuY2gKKzM1NDU5IDAzYjBmZDFjZDcyMjU4NGFhYjdiNmQ5NjlkZjcyNmU0ZDM2MGJjZTggbGVnYWN5LXRydW5rCiszNTQ2MCA2YmY4Nzk4NWFhMWU5OGUwYTg0ZTFiNzY1ZWVkY2U0Y2E2OGIyNzQ5IGxlZ2FjeS10cnVuaworMzU0NjEgNWU2M2MyZTliNzkyNTMxMzcwMjJhZGFkYTI2ODNlNTRhOTcwZjYxOSBhc3QtYnJhbmNoCiszNTQ2MiBjZWI2YWFkZGFiY2M1ZDlhNmY0MWRiYzViMmYxYWM3NjliMmI4ZWRjIGxlZ2FjeS10cnVuaworMzU0NjMgNWIyMjQ3Yjk1MzIzYzMyN2Q1MGIzYWE4NGZiNzYyZmQ4YWU1Y2YxOCByZWxlYXNlMjMtbWFpbnQKKzM1NDY0IDM2YTJkMGU4YTk5MzM1MDQ5ZDI2Mjk3M2FjMzFjYjJhMzIwNDdkNTEgbGVnYWN5LXRydW5rCiszNTQ2NSA5M2ZiNDA4MWQxMDdmYjRlOTliNTI1ODIxODNjZmIyNjE5ZDdkNTJlIGFzdC1icmFuY2gKKzM1NDY2IGZmYWUyZjFmZGQ0NmM4YzZkMTg5OWUxM2M1ZTkzYjU3NjM1MjI2ZWEgbGVnYWN5LXRydW5rCiszNTQ2NyA0OTBlYjY0YmM1Yzk3YmI1YjA4YTYyYWZkM2I1NTdiMzJkYThmZDU3IGxlZ2FjeS10cnVuaworMzU0NjggMTc5ZTA0MzA3ZWNkM2RhOGFmMjFlNDEyMjNmOGIwZGIzMWIyZTcxNSBsZWdhY3ktdHJ1bmsKKzM1NDY5IGNlYWFkYmQ3ZjE5YTdlMjZmNDVlYTg1MWIxN2IyZTU2OTFjZWUzNmIgbGVnYWN5LXRydW5rCiszNTQ3MCBkOTQ4ZGVlNmY0YTFiZWQ5YmUxOTU4NTg5OGUzMTliMWQzZDY3ZTA4IGxlZ2FjeS10cnVuaworMzU0NzEgMGIwMDg2ZDUzYjhlODc5NTc2MTZjNDlhYjA0NjgxNWVmM2ZjY2IyNyBsZWdhY3ktdHJ1bmsKKzM1NDcyIGM0ZWJmN2NhMWJkZDAxZmRkNmY1MGE1MGYzNDM1Y2EyYWI5ZTNlNDcgcmVsZWFzZTIzLW1haW50CiszNTQ3MyA2NWIwYzdiNTYxZGFmNDJmNjdjZjE1NDU5NzY2ODQ5NWI5MjBkN2Y0IHJlbGVhc2UyMy1tYWludAorMzU0NzQgNTJiYTFhMjJjYzJlMWIwZjgyMjI5ZWU1NGRmOGM4YmRjZjQ1NDgzOSBhc3QtYnJhbmNoCiszNTQ3NSBjZDQ3NjZiMDYzN2VhMWQyMmIyZjZiMDUxZjg2MjE2YjlhYmFjNTQwIGxlZ2FjeS10cnVuaworMzU0NzYgZDYzYzU2MmViYmU1NzQyZDM5MTZjYzdmYTEwZGMxNGRmZTIxNzdkOCBsZWdhY3ktdHJ1bmsKKzM1NDc3IDkxMjYwZmIzYzgxNDc2Mzc3MWVhZmY0NGJjN2Y4MDk3MjM3N2ExNmQgbGVnYWN5LXRydW5rCiszNTQ3OCBjYzdhOWZlODBiMWI3NTYwZjc3NjhmNWMzNmUxZGU2Njg0MjVkNGQzIGxlZ2FjeS10cnVuaworMzU0NzkgODIwYmI4MThkNjk4NGM1OWI2YjI3YzJiMzg1MDc2YWNiZGI3ODYyYiBsZWdhY3ktdHJ1bmsKKzM1NDgwIDY2MGZjMjQyYTc2NjliMDZiY2VlYzgzODcxYTZjOWNiMjA0NGZlMTYgcmVsZWFzZTIzLW1haW50CiszNTQ4MSBmZDI2ZjI5ZTdlYWI4ZjJmZTFhNDFkNTdiOTZlZWEwZTlmNjdmMGYxIGxlZ2FjeS10cnVuaworMzU0ODIgMDQyMGQzY2ZlNGE0YWFmZGMxM2Q4ZmJhZDNmNTM4OWFlMTRhNDcyYSBsZWdhY3ktdHJ1bmsKKzM1NDgzIDhlYTQ1Y2ZlMTdmYzYwMzhmYmQwYWZiMjQzZWZlZTExNzI4ZTVkYmIgcmVsZWFzZTIzLW1haW50CiszNTQ4NCBjODM3OTUzMjQwNDI3NDJjNjNjZmNkMzg4YzQ2MmJlMjAzMjZmNjEyIGxlZ2FjeS10cnVuaworMzU0ODUgZmFmZmQ5NTcyZDhkMzIzOWEwMjUxOGY2NTMzNTUyNjBmZWU1YzNiNCByZWxlYXNlMjMtbWFpbnQKKzM1NDg2IGM3NTg3NjQzMmZjNmI1YWI2ZGYxMTM2MDdhZWI2MzVlMjU5YTZmZWUgYXN0LWJyYW5jaAorMzU0ODcgMjg0NjY5NDA5YmViNDZhYmQxYzVhZGJkMzY5NTczMjhjODMzOTU5NSByZWxlYXNlMjMtbWFpbnQKKzM1NDg4IGQ2OWZiMzVmMWVhZWE0MzhhNzVjZDgyY2E5NzhlYjZkOTQwZDIwZDQgbGVnYWN5LXRydW5rCiszNTQ4OSA3YTQzNGY0OTNjM2VhOGI4OWVkYzk0ZTNjZTYxYmFmYmVmODA4ZjE0IGxlZ2FjeS10cnVuaworMzU0OTAgNjM4NjU2MTFlZDJmZTM1MjQ1MDJjZjA1N2I4ZGFkMzZmMjgzNmI1NyByZWxlYXNlMjMtbWFpbnQKKzM1NDkxIDI2ZDBmZDAzZDViMzBlZGFmNjkxM2FjYTE5MmI5NjFkNmQ0NDIwNjEgbGVnYWN5LXRydW5rCiszNTQ5MiBjNGQ5YTk2YmUyZGRjYTQ1MzViNDM3ZTk3MTNmZWVkZDQzMWFlNTAyIGxlZ2FjeS10cnVuaworMzU0OTMgNjUwOTM1NGU3ODc2OWRiOWEyYTc2ZTMzN2U5NjY0Yzg3ZTc4MWVhMCBsZWdhY3ktdHJ1bmsKKzM1NDk0IDFlYzNkNjk4NGIwZjEwODc3NjI4ZTJkYTc2MmE2MzhhODE4OTNhMmUgbGVnYWN5LXRydW5rCiszNTQ5NSBiOTY3NjI3YTJmNGZlOWM5YWQ1NGZiZDA0MDZiMDMzMjc4ZWEzMDM3IGxlZ2FjeS10cnVuaworMzU0OTYgY2U2OGQ3YzA2MjljYzM4MTY3MGVhYmExNzZhZmRlZTllNWM4OGZiZSBsZWdhY3ktdHJ1bmsKKzM1NDk3IGU4MzEyNDAyYzgxM2Q4ZThkMzA4MjE2YmVmYTk5OWQ4NmU0NzNhM2MgbGVnYWN5LXRydW5rCiszNTQ5OCBjMDIzNTAxYzM4ZDc4M2U5YTM0MGVmYjNhN2M5MjA2MTcxMGE0Y2ZlIGxlZ2FjeS10cnVuaworMzU0OTkgOTIwYWQ0NDY1YWFlYTVhMzU0MTVmYmFmOWZiNzlmOTMyYzdkZjIwZiBhc3QtYnJhbmNoCiszNTUwMCBkODk4MjMyZGNkZGJiYTgwNTgyMmZiZDNjZDAxNDA4Mzc3YzgxNmY0IGxlZ2FjeS10cnVuaworMzU1MDEgZWUwYmEwMGIyNzdjZGQyMzg1OTM1YzY2YWFmMjBmNGQ4YzQzZWQ3NCBsZWdhY3ktdHJ1bmsKKzM1NTAyIDZmY2JmNmFjNjk5YTg5MDI5Njg5YTE3OGUwYWNlMzNjNTIyNWIwYjkgbGVnYWN5LXRydW5rCiszNTUwMyA1Nzk2NWIyZGIyMGM2ZGFkOWM5NzkwNjI4ZjNlNjllNzc0OTgwMzllIGxlZ2FjeS10cnVuaworMzU1MDQgMDdhMmI0YzVkNTAzNDE3NzJmYmMyYWVlNWUzYzI4ODZmODI5NDEzMiBhc3QtYnJhbmNoCiszNTUwNSBkYmE4ZGI0MTJlMzU0OTk2YjE4Mzg1MGRjMzVlNjg0MmFiMjE1ZTgwIGxlZ2FjeS10cnVuaworMzU1MDYgNDllYzBkOGYwOGVjZDNmNzA1NzQxZTIxMGJmZmZiMTBlZWU3YTM4YyBsZWdhY3ktdHJ1bmsKKzM1NTA3IGFlMDBkMmQxMjdkMWQwYTdkNzk1ZTZiNDljZTJkOTI5NmU3ZjFjNWQgbGVnYWN5LXRydW5rCiszNTUwOCAxZjgwNmNiZTJjZTA0ODFjNzdlYWEzNTgzYjg4YjI3ZDNkNDMxZmQ4IHJlbGVhc2UyMy1icmFuY2gKKzM1NTA5IDRlYjQ1OGMzOTQxZDVlODVlNzMzNTA2ZmUxMmQxN2UzYjcxNDExOWIgbGVnYWN5LXRydW5rCiszNTUxMCAzMTAxYzAwZjc1NDdmMDFlY2U0OWFkNGUyODgxYWFjYjA5ZTdhNDA5IGFzdC1icmFuY2gKKzM1NTExIGMwNjFmMjVmNzRlMGNkZWJhN2YyNmViZjcwNTM1OTllYjlhYjdhYjAgbGVnYWN5LXRydW5rCiszNTUxMiA5MDc0NTBlNGJjNjc1N2RhMWE0YTdiZDg4NDQ2Y2ZhNjJhZmVhNmMwIGxlZ2FjeS10cnVuaworMzU1MTMgMzQ3NWU0NTY4NDcxMDk1ODg4N2FiODM0YTZlN2NmMDE0ZGFhN2IyMyBsZWdhY3ktdHJ1bmsKKzM1NTE0IDhiZjE2M2QwNmQyOWFmOGFlZTljZmFlNzU3ZmNlYmZkMmJiNDRlZGQgbGVnYWN5LXRydW5rCiszNTUxNSA3YjZjODIyOTc5OWJhZTliZjFiYmJhNmJjNTU4NWJjY2I2OWFkNGExIGFzdC1icmFuY2gKKzM1NTE2IDY3MWFkZWU2YTNlM2IxMWRkN2VjYTJiNGY4NmQzYzk3OTBjYmUxM2QgbGVnYWN5LXRydW5rCiszNTUxNyBmNTRjZGIwMWExYWQ1ZGY0NGYwOWFkMTg5MzMxM2VmZDZmYjlkMWYzIGFzdC1icmFuY2gKKzM1NTE4IDE0ZjhjOTMzZjg4YzA5OWMwMDY5NjYxMThmN2I5MjI0YTFlMmE0ZjcgbGVnYWN5LXRydW5rCiszNTUxOSBmZTU1NDFhYWUyZDhmODc0ZjcxM2NiNzYyMzM3ODFhOWY0ZTY0MzVjIGxlZ2FjeS10cnVuaworMzU1MjAgMWQzZTQ4Y2NhZDU3M2E1NDFjMzFlM2Q3OWJiNDIzNjVhNzA1NzcyZCBsZWdhY3ktdHJ1bmsKKzM1NTIxIDQ1MTQ0Y2RiNzc5NGE0YTY1Yzk3YTM2MzgzMWI3ZDg0NDAzZmU3ZGMgcmVsZWFzZTIzLW1haW50CiszNTUyMiBlZjE4MDg1NmRmNzYxOTE4ZmQ4YmRkZjBjYzdjZjYwNTdlODE0YTRiIGxlZ2FjeS10cnVuaworMzU1MjMgYzJiMDFhYTQ5MGUxNDdiNWI3M2NiY2I4Y2QzODIxNjYzYjhlNDI4ZSBsZWdhY3ktdHJ1bmsKKzM1NTI0IDJlYjMxNzVmYzU5YjcyZjJjZTlhY2NjZTZmYzg4ZThlOGRiN2MyOTcgbGVnYWN5LXRydW5rCiszNTUyNSA4YTcxNGZlY2QwNTliZGQ4MzdkODdhNjM4NWY5MGQyMzBmNDFlNzU2IGxlZ2FjeS10cnVuaworMzU1MjYgYTViZDhiNGYzZTU1ZjEzMjk1MzY2MThhNTBmNjcxMGU3NjlhYmYwOCBhc3QtYnJhbmNoCiszNTUyNyA1NTVkYzg0NjIyNmRkMjg2MTMyMjU2OWRiNjk0YjliYjRlZTBjYzlmIGFzdC1icmFuY2gKKzM1NTI4IGIzOWZkYzljODA3ZTY1YjMyODkzNzQzNzA3YTZkOTM0NzVmYWY3MWYgbGVnYWN5LXRydW5rCiszNTUyOSAxNDA3NDg0ODM2MTIwYjUzMzRmZjgxZDAwMTJkY2VjNzNkOWJhYWU3IGFzdC1icmFuY2gKKzM1NTMwIGE3MzdmN2EwZjJiOGJhZGE0ZDM4ZjBiNzgyMWQxNjhmNzBiMjcwZGUgbGVnYWN5LXRydW5rCiszNTUzMSAxNmJmNDg0YjM4NjQ5NDc0ODMxZTYwZGI2Y2NkNWEzMzMxNzg1ZjI0IGxlZ2FjeS10cnVuaworMzU1MzIgM2U0OWViMzI0NzBiYjc4N2FhY2Q0Y2I2YWQ1ZTE0NDE0YzVjMDc3MiBsZWdhY3ktdHJ1bmsKKzM1NTMzIGJlNWQyYTA3YmMyNjliYWRiMTRhN2M3ZjQ2Y2I3NTA1NmVlMWI1YTcgbGVnYWN5LXRydW5rCiszNTUzNCA5NTM2YjI5N2Q4M2MyZDc4ZThkNjMxNDYzODc5YjA0YWQ0MjcxMDA0IGxlZ2FjeS10cnVuaworMzU1MzUgZjRhNGFjNzMzMWVjOTFlODRkOGZkNGU5YjY2M2Y4NTQ3MWUwMjVmZCBsZWdhY3ktdHJ1bmsKKzM1NTM2IDY0MjZiMzdiYjJhMGZkYTgyMzJlN2M2YzFhNGUwNmNhZWUwMWIxYmUgbGVnYWN5LXRydW5rCiszNTUzNyAzNDczZGVhM2FhNGMwNTA4Nzc3YTY3OWIzOGFjYzQzNDNlZjljMjhlIGxlZ2FjeS10cnVuaworMzU1MzggNWU5MTZkNDZhM2ZiNjkyNjIwM2QyZDFlMTk1MDc3ZmRmYThlZDhiNCBsZWdhY3ktdHJ1bmsKKzM1NTM5IDI0ZTA3MGU5NWJmOGExZDE1MzczZTQyZDQ1ZTM2ZThlZmU4NTdkNDQgbGVnYWN5LXRydW5rCiszNTU0MCA3NWE5MWZkOGI1MGNmYjA2ODFjZDRlM2YwMjQ4ZmZiZTUxMWQzMTkyIGxlZ2FjeS10cnVuaworMzU1NDEgMTIwMTkyNTE2MDMzOTJjMzAzYTg0YWQzZDQ0MzkzZjJkNDkxYjlhNSBsZWdhY3ktdHJ1bmsKKzM1NTQyIDk4MTdkZWU1ZDlkZjA4NWM0MmMxYzZhYzY4MDBjNDA5OWJmY2Y4YzcgbGVnYWN5LXRydW5rCiszNTU0MyA3ZjQ2NGRkNjgwYWFjMDhlNGFkYmI3ZWEyY2JmNzVhNzM4ZDhmMjlmIGxlZ2FjeS10cnVuaworMzU1NDQgZWY1OTFlN2MzNGZkOGUwOWY1NWZkZGRhZWZlZjYxZThiOGIxZWFjYyBsZWdhY3ktdHJ1bmsKKzM1NTQ1IDc2MDUzYTFkZDQ1MjQ0ZGMxYWE4ZDM2ZGUyYzc4YjkzZmFmNzFhMDkgbGVnYWN5LXRydW5rCiszNTU0NiBmYjU1N2FjNWJiOWEyNWIxNDU1YTk5YTAzZjUwMDYwOTAwNmQyOTllIHJlbGVhc2UyMy1tYWludAorMzU1NDcgOWQ4NGNlZDY0ZDEwYzlhZTY4ZWU1NmVkNDQzOWYzYjgwYjBmMjRhYiByZWxlYXNlMjMtbWFpbnQKKzM1NTQ4IDE2NGNlMWJjYWI2ZTFlMzIwZmJhZjAxY2FkOGE1MGQ3MjlmZTlmMzAgcmVsZWFzZTIzLW1haW50CiszNTU0OSAzM2Q0OGRmOWE5Mzc4MzQ1NDc3OGFjZDlkZTRlMDZlNWEyNWZjMzViIGxlZ2FjeS10cnVuaworMzU1NTAgMjliZTcyOWIzMmMzZmU5NDE2NzlhZGRkNzI1M2YyMmQxM2RlNmNkMCBsZWdhY3ktdHJ1bmsKKzM1NTUxIGNjNDdjMWVhZjgwYWI3MjM5MDllZjQ2YWUzMTc3YTM1MjFlYTc5OGEgbGVnYWN5LXRydW5rCiszNTU1MiBjNGJhZTA4OWJmYzhmMTE1YmE5M2I1NGU1OGE0NGJjYjJmMzY2M2YzIGxlZ2FjeS10cnVuaworMzU1NTMgZWMzN2NiMWMwZWQ4ODg3Y2U0YzdiZWExZjk4NzE5MjZjN2MyOGVmOSByZWxlYXNlMjMtbWFpbnQKKzM1NTU0IGQ0NDhjYzI2MWY2OWY0YjA4Mjc1ZWMwZGU3MDllZDBkMmVkZjA3YmUgbGVnYWN5LXRydW5rCiszNTU1NSBjZTFlMGI0OTRjYTcwMjRjMjczODg5YWYzMjY3NTBkMDVhOTkyNmE3IGxlZ2FjeS10cnVuaworMzU1NTYgNmExNTA1NjEzMzU4NGJlZTM1OGQ2YTM1MTQ3MDFhNGI3MmNmN2U1YSBsZWdhY3ktdHJ1bmsKKzM1NTU3IDIzZTVjYzM0YTk4MTJlNDM0Y2QwMzAzY2M3YjhkODg5NDFlZTliZjEgbGVnYWN5LXRydW5rCiszNTU1OCA4MzViNjkwZDdlZDNhNTA3MmQ5ZTRmNWI1NGYwMTQ0ZTExNWRhOTg1IGxlZ2FjeS10cnVuaworMzU1NTkgZGM1YmQ4NDIyZDUyNmFjYmJkMjdlYTM4MTQyNjIyMTVkMGY1M2QyNyBsZWdhY3ktdHJ1bmsKKzM1NTYwIGE0ZWFlZWQ0MDk4YjRkODMwNjYyMGFiODZmZGE0NmQ5NzRmOGExZjYgbGVnYWN5LXRydW5rCiszNTU2MSBmZTk0MzM1ZjM4ZTI0OTc0ZDE3NzliNTIwMzYwZGQyYjBlZjAzN2JmIGxlZ2FjeS10cnVuaworMzU1NjIgMjAyNGI0ZTZlMzhkYTgzNTI1OTFiOWJlMTZmYTgzZGY3MDZjMzFiNSBsZWdhY3ktdHJ1bmsKKzM1NTYzIGJlZmIxZWE2Yzg4ZWIyYmQ4MTAyYmIxOTk1NjUwM2RjMTY4ODdiYzUgbGVnYWN5LXRydW5rCiszNTU2NCAyOWRhOGJkZmViNGUzMTkyYjNiOWE1OTVhNDc0NjFlMTQzOWY0YTExIGxlZ2FjeS10cnVuaworMzU1NjUgODU4Njk3ZGIxZTRiZWRjN2ZmMDhkNjI0MmE1MTQyYjBlMTMyZWFmZSBsZWdhY3ktdHJ1bmsKKzM1NTY2IDUyYzE3MjI4OWFkZDFhM2EzODcxMGQyNDAxMGJmODIxMjQyNjI2ZjYgbGVnYWN5LXRydW5rCiszNTU2NyA0Y2UwOThmMDA1ZjAwMmY3YzQzYmFiMGZmY2E2MmQ5ZjZhNzM0OTAzIHJlbGVhc2UyMy1tYWludAorMzU1NjggZjFkNDQyOTVlYmY3ZDllOTE1NThlN2JjOWQ1NTA4ZDFhNjVlNTM0ZCBsZWdhY3ktdHJ1bmsKKzM1NTY5IGJmMzc0MjlmNmQ5ZjA1MTNjYjI1ZjNmMTBhYzkzMDE5MTA5OWU4Y2UgbGVnYWN5LXRydW5rCiszNTU3MCAxYzExN2RiYjJkZWY0ZjkzYTYwYjkzMmI3MTU3OTg1M2U0ZTcxODljIGxlZ2FjeS10cnVuaworMzU1NzEgODQ2YjNlZTdlMTA2ZjEyMmY4ZDdlM2MxNzg2N2FiOTNjODU0MDBkNCBsZWdhY3ktdHJ1bmsKKzM1NTcyIGM3NjYwNmYzNzJkMTM0Yjk3Y2JmNzVjZDI4Yzg0MDY1ODMyYmZkN2YgbGVnYWN5LXRydW5rCiszNTU3MyBlNjM3OWJkYTkxZDc5NjhhZTJhOTYwZmIwMWFiYTI5OWExMzNjZTVlIGxlZ2FjeS10cnVuaworMzU1NzQgMzdkYzhjODBjYTdlZDkyMWZlOTI4MzE0NDJiYWI4NGIyODRlNjAxOCBsZWdhY3ktdHJ1bmsKKzM1NTc1IDI3N2I1YTJmMDhmNWM5ZjQwOTFkYTIwZTIwNjdhOGZjMTUxYTI3Y2UgcmVsZWFzZTIzLW1haW50CiszNTU3NiA1OWZlMDk4MjQzNjNiMGU0ZmFiZmNhNjBjYTRkMDVlNWFjZWZkYjlkIGxlZ2FjeS10cnVuaworMzU1NzcgYzA1MWRjNmFiMzc0Mzg3YmEyNjFiZTZkZjE1YmFmYmM5YjM0ODJhYSByZWxlYXNlMjMtbWFpbnQKKzM1NTc4IDAyNjFlMzgwMTFmNmRlNDJhNDc2OTVkYzdkOTVkMDM0M2RjNWNmODMgbGVnYWN5LXRydW5rCiszNTU3OSBjZWJkYTIzYWFhZGJjNjkxMzM3MDJiMGE1MTMxYzAxMGMzYTUzYzJkIGxlZ2FjeS10cnVuaworMzU1ODAgMDc4MDMyNDQ0ZWNjODljMzBjYWViNDZlYWFmMjZiMjAzNjRiNDUzZiBsZWdhY3ktdHJ1bmsKKzM1NTgxIGJjNmVjOTVmNTc5MjNkN2Y5NGY0NWQwNWExNmZhOTVmMmRlOTBkNjEgbGVnYWN5LXRydW5rCiszNTU4MiA2YzY5MTBmZDAxM2E2MjY1NTFlODQ1NzhmZTg4YmNmYWY2MTFlZjhkIGxlZ2FjeS10cnVuaworMzU1ODMgZjk4MjE1ZGFhMzVmYzI1NzA1NGQwNWUxNzk0ODk4MTg3ODc5NjA3YiBsZWdhY3ktdHJ1bmsKKzM1NTg0IDdhMTIwNDAwODg4YWVmNmE4MjdlMmJhYzViZTI2ODVlZTc0MzQ5YjAgbGVnYWN5LXRydW5rCiszNTU4NSAxYmU1NDk5ZjM3OGU5OTcwMGJiMTk4YmY2OTVkMzFiOTZlMjg2MjlkIGxlZ2FjeS10cnVuaworMzU1ODYgNGRiOTU4NzI5MThlYjkyODlmMTNjNzhiMjE4YzAzOTE5MjA3ZDc5OSBsZWdhY3ktdHJ1bmsKKzM1NTg3IDgxODRjNjc3NzEzZmQ2MWUwMTA1NTA5MjkxNzI5ZmMxMGVlMDUzZGMgbGVnYWN5LXRydW5rCiszNTU4OCA5YTExYTIzNjE1NDc0NWRmMzFhOWE1ODIxMTA4NDRlNTg2MzZlYjlhIGxlZ2FjeS10cnVuaworMzU1ODkgNGIwOTMwYjU2NTY1ZmQyMGZlMjlkNzc2NTE0ZTUyNzY4ZWM1NTRmOSBsZWdhY3ktdHJ1bmsKKzM1NTkwIDc1ZTJmNzU4ZWM1YTA2YjZkYTNhMGRmNTEzMzcxYWQyNmYxZjkzYzAgbGVnYWN5LXRydW5rCiszNTU5MSA5NDg5OTZmNjk5ZDJlMjkyYWQzZDIwYWMzMTU5MDRhYjRjZmJjMTc2IHJlbGVhc2UyMy1tYWludAorMzU1OTIgNmIxODU4ZDEyZjhjYTllYmIyZTVmNzE4MTRhNzVkODBjMjgwOGU1NCBsZWdhY3ktdHJ1bmsKKzM1NTkzIDE2OGRhY2ZiZWU2NWFhN2M5ZmNiYTE1MWM3Y2ZkZmMwMWIyNmE1NjQgbGVnYWN5LXRydW5rCiszNTU5NCA4MTcwYWFkYzllY2E3NGVkZjgzZTUyNWRiNTNhMDdhZWU5ZDJjODRkIHJlbGVhc2UyMy1tYWludAorMzU1OTUgYjA4MmI0ZDQ4MWMyNTYyZGRkMzFjM2M4MjQwNGI3ODkzODkzNTJjMyBsZWdhY3ktdHJ1bmsKKzM1NTk2IGE0YWE3ZDYxZTRhZjE5NmVmNjBiNDA5Zjg2YWVjYTFkZDE5YTRjZTAgbGVnYWN5LXRydW5rCiszNTU5NyBhMmU4MGZhNzM1OWI1NTAwMDgwZDc3MWMyYmI5NzJmODJiOTlmN2NhIGxlZ2FjeS10cnVuaworMzU1OTggMzMxZGU4YjlkMWVkNTVjNDVmYmEzOWVmNTc5NThhMDc0ODIwMmM4OSBsZWdhY3ktdHJ1bmsKKzM1NTk5IDM0ZDVlYjFlNTA3ZGMyN2FmMWI2YzY5N2U2M2Q5ZDQxZTYwZjU3MGMgbGVnYWN5LXRydW5rCiszNTYwMCBkMDc4ODM5MWMxM2JjZjIzMDU3MmI3ODhmNWZmZmIwZWExNGI5OWM2IGFzdC1icmFuY2gKKzM1NjAxIGFhZGE5MWM1ZDZkOWM3MjU2Y2FjYjYzNmFiN2RjZjM0MmE0M2ZhYzcgYXN0LWJyYW5jaAorMzU2MDIgMjI5MDg1M2FiNDBhNjJkNzk1MDQ1ODJmZTMzMjRmYzRhMjBiZGEyMyByZWxlYXNlMjMtbWFpbnQKKzM1NjAzIDU5MzI0NjlkY2IzNTkzMzI3N2NlYWM3NTliMTA1OWQzMzRmZTg3OGUgbGVnYWN5LXRydW5rCiszNTYwNCAzZWY1ODg4NGJkZDUyMWExNmVkYjU0YzkyYWNiZTIyZWFlMjE1ODE3IGFzdC1icmFuY2gKKzM1NjA1IGY0ZTVmOWMyZTJiM2I5MGM3YzkzMDAzNWNlNGEzY2QzODkxYjI1ZWUgbGVnYWN5LXRydW5rCiszNTYwNiBhNzZhZDgzYTQxM2YwZTEyMTUwYmQ0MTM3NGY4MmVmNzFmOGI4MDFmIGxlZ2FjeS10cnVuaworMzU2MDcgOWIxN2YzY2MyM2VkY2VmNmMyNGJhOTQ0NDg5NGE5ODhkOGE3NjFmZiBsZWdhY3ktdHJ1bmsKKzM1NjA4IGUyNjFlMGMyYzcyZDc1ZmQzNzEzZmE4NGExYjM4ZGUzZGM5ZTQ2YTUgbGVnYWN5LXRydW5rCiszNTYwOSA2NGUyZjdlYzU1NzZiM2E1ODQyZmFmNDU3OWFlNDZhZWUxNjljYTRiIGxlZ2FjeS10cnVuaworMzU2MTAgYTkxMGI4MjJiMTJjYjNmYzRmY2UxOTYzNzkyOTU3OGZlODQ0Y2I4NyBsZWdhY3ktdHJ1bmsKKzM1NjExIDczOTEyOGM2N2MzMGVmOGQ5ODdlNzlmNjFjZTQxZWZiY2RkODM3ZWEgbGVnYWN5LXRydW5rCiszNTYxMiA0MzM2NDJmOTNkNTlkYmFkNGM4YTJmYmE0YzE3MDRkZmU3NjQzYjRiIGxlZ2FjeS10cnVuaworMzU2MTMgZTQyY2JhZmY4MDI3ZDkxZmFhYjljZGZiNTFiNDRmODY2N2I2YWM5MyBsZWdhY3ktdHJ1bmsKKzM1NjE0IDgxMTE3OTIzYWU4ZjBjNDVjMWVhN2UyMzZiOTgzODA5ZTZmM2M1NTkgbGVnYWN5LXRydW5rCiszNTYxNSA2NzdjMGJmMDU3MzVlOGMxODYzZmVkMjRkOWUxMDVmM2JmMGQyNmM4IHJlbGVhc2UyMy1tYWludAorMzU2MTYgNGMwNmY0ZmFlZDg3N2JhYjE5YjNjZGI1Nzk0YzZiZGRjOTI0Y2QzMCByZWxlYXNlMjMtbWFpbnQKKzM1NjE3IGQyMGNiNjM1N2Y1ZWExNjFiMzVhMTA0MjRjNDI1MTE3YTJlMGJmM2QgbGVnYWN5LXRydW5rCiszNTYxOCBiMWVhMmYzZjQ2N2VmNzg1NjJkZmQ3NmQxODFmOGU2YjBiOTgxZjRmIGxlZ2FjeS10cnVuaworMzU2MTkgZmFhNzE0ZGQ4NmQzZjEwNWQzYThjMGJhZTJhYTE2YmYwMjYxZjViNSByZWxlYXNlMjMtbWFpbnQKKzM1NjIwIGY0YzFjM2U2MjdkZjhmZTg2NjMxZTI0MjljZWMxMTM0OTgwMTQzMWYgcmVsZWFzZTIzLW1haW50CiszNTYyMSA4MTRjYzlmODNmYWFiOGRlMjU5ZTY1NGNmOGEzZjlkZDI0NDQ2MWNiIGxlZ2FjeS10cnVuaworMzU2MjIgNjRjYzE2M2VlYWYxMjEzNTEzNmQ3MjJhMGNhNWE3NzM3ZTg2ZTcyNyBsZWdhY3ktdHJ1bmsKKzM1NjIzIDkyNTUyNDY3MTQ1ZWE3ZDhmMjZiNDg5N2EwMmRiMmZlNmMyMDU2NWEgbGVnYWN5LXRydW5rCiszNTYyNCBjNTdjZmE4MzI4ZDQzYWE5OWNlNjgwMzQzNGM1MzE0NTY4N2I4NTM5IHJlbGVhc2UyMy1tYWludAorMzU2MjUgYzRjN2YwZjM5ZmU5YjgzNzFlODY1MmNmMTI4NjY1NDI3MDFmMDc5NSByZWxlYXNlMjMtbWFpbnQKKzM1NjI2IDhkMzgyYWI5OWJkYmE5ZTlkMmViNWM2NzZkNDE2ODljNGNkMzVhZDQgbGVnYWN5LXRydW5rCiszNTYyNyA2OTZmNGJhOWRkZjdiMTZkNGQ5ZWE4YTc5ZTRhNzA5NWRjOGMzOGNmIGxlZ2FjeS10cnVuaworMzU2MjggYWRiNDJhNzExNjk2MDRkMzYwOWFjMmZiZGI2NGNmOGNkMWM3MjUwYiBsZWdhY3ktdHJ1bmsKKzM1NjI5IDJjZmUxNDI3NWEwNDQwOGI2M2YwZDYyOThlMGRjN2M4M2Q4OTg3ZWYgcmVsZWFzZTIzLW1haW50CiszNTYzMCAzYWQ0MmI3ZDQ2NjBhYzNjMTk1MjE1MzI3NmQ1NzNmNGRjYTk4M2YwIHJlbGVhc2UyMy1tYWludAorMzU2MzEgZjhiMjhlNGFjNDM1YTk3Nzg5NGUwMjM3YTRmZmRlZDY0YThhNTI2ZCByZWxlYXNlMjMtbWFpbnQKKzM1NjMyIDVmNjBiMjI2MDE5ZTlmM2I0MTNhZjBlZjgwZmRiYzJhYTk4YWExNGMgbGVnYWN5LXRydW5rCiszNTYzMyA4YmNiMTIxYzU0MTExYmZiYTE3MzYzMjVkNTI1NTUxMWIzZWFmOTAwIHJlbGVhc2UyMy1tYWludAorMzU2MzQgMDU5ODliNGQ2Y2U4MTU3ZDZmMjUyZWJjMjRhYmI2NTllNzg5Mzk4NCByZWxlYXNlMjMtbWFpbnQKKzM1NjM1IDBkOGVlMjhiZjZmMDNmZmNjYWE0MGZlYzI4ZjU5MzNjY2JiOWM2YWIgbGVnYWN5LXRydW5rCiszNTYzNiA1NzY1ZDY1NmUwZWZkODdkMWNjMjc4NzY0Njc4OTMzZWQ5ZjMyNjkzIHJlbGVhc2UyMy1tYWludAorMzU2MzcgNTAxMjhmZjE5OTY1OGIxNDc2OWVjYWMwYzQ4ZWZiYmY4ZjhjMWZiZSBsZWdhY3ktdHJ1bmsKKzM1NjM4IGQwNGQ3ODZhYjQ1ODEzNzk1MTBkZmE1ZjZjYzk2MmFjNTllMzRmZTEgbGVnYWN5LXRydW5rCiszNTYzOSBkYmQzZmMyMTRiNjY2YTM2ODNhMGNkOWZlNDg0YzUzYzc3ZWE4ZjY2IGxlZ2FjeS10cnVuaworMzU2NDAgMDA3MWQ2ZWI4MGExZmEyMDkzOWU4Njg5NTk3MTViMDQ4N2FlYjU5YyByZWxlYXNlMjMtbWFpbnQKKzM1NjQxIGE0MGQ3OWZlMmE2OWUyYWZlYzUzNzMzNjk2MWI4ZmM3NzZlOGQzYjcgbGVnYWN5LXRydW5rCiszNTY0MiBiNGVjOTI5OTU2MGQ4MDg5YjI0MDU1N2Q2N2Y0MDYxN2I1NmUyZmIwIHJlbGVhc2UyMy1tYWludAorMzU2NDMgNTUyMDQ0YjUwNThkMDE4ZDIyZDIwNzQzZTZjYmYxYjFkNzM5ZGViMSBsZWdhY3ktdHJ1bmsKKzM1NjQ0IDUxYWFjZWVhYWJlMTFlYWZlNzRkNjJjYjM0MjdjN2I4NDZmNzBiODAgbGVnYWN5LXRydW5rCiszNTY0NSAxNTYwMzdiZTM1NWQ5ODQ2MDc2NmQwZjAzZGFkOGJhYWZjYmJjM2E1IHJlbGVhc2UyMy1tYWludAorMzU2NDYgNWEzNmU0ZDVhYThmMGQ0MDU4NWY0NWRlYjQwM2NlOTA4YWJlNGZkNiByZWxlYXNlMjMtbWFpbnQKKzM1NjQ3IGM3ZjlmY2E5NDZkMTZiNzA0YzIzYjYwMjg1MzZlYjkzNmZiZGZkMDMgbGVnYWN5LXRydW5rCiszNTY0OCAwMjBkYzVkZmQ1YzVkODhkZDBmNDU3MjY5NWRjNGNmYzhjNDA1MmNlIGxlZ2FjeS10cnVuaworMzU2NDkgOWY1ZmU2YjIzZTU5MjBlNTc5ZDNhNmJhY2MzZGRkMDFlYmE3ZDQ4ZiBsZWdhY3ktdHJ1bmsKKzM1NjUwIDIyN2NiNzQwMmM2ZTliZjY3YTAwYTAyMzU3NTQ2ODcyMDFmZTVhYzQgbGVnYWN5LXRydW5rCiszNTY1MSBjODhkNDYxMGYyODNjYjZkMTYyYjk1ODNjZjQ3ZmZkMGQyZTE0Y2ZjIGxlZ2FjeS10cnVuaworMzU2NTIgMWZiMjMxM2FjM2NlZTU4ZmU3ZDM5NTJlMjFhN2I2NzllNzM1MjQyZCBsZWdhY3ktdHJ1bmsKKzM1NjUzIGM5MDZiYjJhMTgyNDU1MWZjODlmYzE0ZmM4NjdlMTFmNDZkZjJiNTMgbGVnYWN5LXRydW5rCiszNTY1NCBhMmZiMTY3ODQxZTgzOGMyNmJkNDc3OWNmZWQ5MTYxYzllNGVjYzQ4IGxlZ2FjeS10cnVuaworMzU2NTUgMjZlZTFiM2ViMzQ1MWE3MGI0NzY0MmNkZjEyZWRmNGZmZTg0OTUzNCBsZWdhY3ktdHJ1bmsKKzM1NjU2IDFhM2E0OGNiYjE2MjhkNDM0MGFiZDViMmU4M2FmNjFlMWQ3YmZjZDAgbGVnYWN5LXRydW5rCiszNTY1NyA0YzZmZGViOGUyZTAyMTdmMzU2YmYxYWUwYWQ5NGM1Y2Y3NDM2MTA3IGxlZ2FjeS10cnVuaworMzU2NTggZjM1YjRhY2M1OTRmOTBhOWY2Mjk4YmE0NWQxODE1ZTJmNTc1ZjM3OSBsZWdhY3ktdHJ1bmsKKzM1NjU5IDY5OTcwNjUzZWNiZmFjOTRjZTc1ODE1ZWNhYjIzNTdiOGM1NWU1NGUgbGVnYWN5LXRydW5rCiszNTY2MCBmOWNkNzk5MjZmZjc3ODgxYTIxM2M5MDk1YzA5MGI0ZDFiNTljMjNmIGxlZ2FjeS10cnVuaworMzU2NjEgOTg2NTk0YzNlNGQ5ZGMxMDM0NjJjZWM1MjNjZmQ2MTM0YjI2NzgyMCByZWxlYXNlMjMtbWFpbnQKKzM1NjYyIDhjMjY0MjBkMWYyMzUzYTAzY2NjYmUzMzZlNzJjOGJhYWI1OTA1ZGUgcmVsZWFzZTIzLW1haW50CiszNTY2MyA3YjgxNzExOWJiNjYwYjUzMWEzMzMzYjdiZGM1NjI2ZTlmOGYwMzI5IGFzdC1icmFuY2gKKzM1NjY0IGM2ODFkOTVjZjc5ZWM1MGM1Yjg1OTM0NWZlMGMxMWZmN2JjNWE2YmEgYXN0LWJyYW5jaAorMzU2NjUgYzM3MGFhZTk4MjMyMTYzNmRiOWNjZWFkYWI1MjI0NmQwMWI0Y2NjZSBhc3QtYnJhbmNoCiszNTY2NiBiNDY4NDIzNGJmMDcwMWYwOGE3NDliMWFkMmMzN2MwMTYzNWNhN2MxIGxlZ2FjeS10cnVuaworMzU2NjcgMmU1MmMyMGRlYTRmNjFkYThkYWYwYTI3ZWJkYTI4NzY4MGVhNWFkNCBsZWdhY3ktdHJ1bmsKKzM1NjY4IGRkOTNhMzJhYzMzZWZmM2NiODZkMjc2Nzk5Njg1MDRkYjA0YzI2MTIgbGVnYWN5LXRydW5rCiszNTY2OSBkZmM4YzVmNjY5NTk1ODIxNDRkYWI2ZWQ5Y2MxNmE1MmU5YzNjYTkyIHJlbGVhc2UyMy1tYWludAorMzU2NzAgODQ4YmNlMjIxNWQzNWI2ZGZmYTlkODVmYTEyY2E2NjQ3NjI4MDdhOSBsZWdhY3ktdHJ1bmsKKzM1NjcxIGM3MGJiMzIyMjdjYjNiZmU2YTBlODMzZmRiZTk3ZmY0MTNlNjNmMzYgbGVnYWN5LXRydW5rCiszNTY3MiAwODE5NzJhZTJmODQ0MjFmZDY0YTMyMDZhNDQyNjY0NGU2OTBkNDc5IGxlZ2FjeS10cnVuaworMzU2NzMgMjQxMDg5ZTQzN2UwMjllOWNhMGYyMGUzOTkwN2NkYTA4MDI5ZWVjZSBsZWdhY3ktdHJ1bmsKKzM1Njc0IDMxMGRkOThlYTA2NDYxOWNiOTg4M2Q4MGU5YzFjZjBiNmRjYzQxMWQgbGVnYWN5LXRydW5rCiszNTY3NSBjNTZlYTYwY2IzYmY3NzYzZDk1YjNkZjBjMGEwMjljNzkxMWIzMDQyIGxlZ2FjeS10cnVuaworMzU2NzYgY2EyZmI1Y2YyZmQ1NzVjNzI5YmUxMjUyYTY0NjgzNWJiYjNhNjMwZSBsZWdhY3ktdHJ1bmsKKzM1Njc3IDI3OTRmNjI3ZWJhYTAwMTVmODg3NDM4OTg1ZDI0YWVhMGRmOTc0MTMgbGVnYWN5LXRydW5rCiszNTY3OCA2NGZjZmYxMjFmN2I1ZGVkYzY3N2UwNzhmMmM0NWNkYTQ1YTc2NjIxIHJlbGVhc2UyMy1tYWludAorMzU2NzkgNmU1NGM1OTI4NTNjNjRjNzdlYTg1ZTQ2MDZjZDVkMDZjZjBkMzVjZSByZWxlYXNlMjMtbWFpbnQKKzM1NjgwIDAyNjViZjk5MTJlYTI5MTBkNTgzMWU3MWZiYjFkZTBiNjUzMTMzMjQgbGVnYWN5LXRydW5rCiszNTY4MSAzNTU0NzM1MzRjNzA2ODEwZjY3NDY2ODA5ZDIzYjA4ZGM0NjkzY2ZhIGxlZ2FjeS10cnVuaworMzU2ODIgYzQ4ODhhOGZjZjcwNjFiNjQ2YTFmNjRlNjIxMDJkZjE0ZWY4NjMwNiBsZWdhY3ktdHJ1bmsKKzM1NjgzIGU5NzUxOGM2NmFjYzA4MTU2ZDcyZjM3ZTc1OWQzYzY4ODFmYmY1ZGQgbGVnYWN5LXRydW5rCiszNTY4NCA4OTc1ZGVmYmYzYThiMGFiNGFlZjExM2Q4ZjEyYjVkODgwNWY1ZDcxIGxlZ2FjeS10cnVuaworMzU2ODUgZTc2MDkyZDQ5MDJjZDQ0ZGNkNmZjNzUxMzViYTIyMGYyMTZiNjExOSBsZWdhY3ktdHJ1bmsKKzM1Njg2IGYzOWM1NmY4Y2NjMmJlNDg2NDVhZjlkZTQwMzYwYjZmYTU2Y2QzYjAgbGVnYWN5LXRydW5rCiszNTY4NyA4OGQ2MjVkOTI4YWNkYmEwN2UwNWViY2ZmMzczNTk3NWYyMTYyZDhkIGxlZ2FjeS10cnVuaworMzU2ODggMDU4ODIxZDhhZWZkYzUwY2Q0N2Y5YmRjN2QzMzcxNTJmNDVlMzkwYyBsZWdhY3ktdHJ1bmsKKzM1Njg5IDZiMjM2OTk0Njg0YWY5MjljNDYwMDEzZTYyMWU4ZjQyM2YyYzc1NTIgbGVnYWN5LXRydW5rCiszNTY5MCBjZWM3NDBmOTJmYTQyMjUwMDM1NTA3OTY3ZjZlMTY2MWU1ZGUwNWVkIGFzdC1icmFuY2gKKzM1NjkxIGIzM2RkYjQ4YjdlMDRlMTU2ZDgyMWU0Y2E1MTFiYjYxOTc5NjlmMzQgYXN0LWJyYW5jaAorMzU2OTIgZWI2ZjU4YzNkOTcyNWYwNTBkM2RhZmMwNGFiZWIxYzZjNjIwYTRhNSBhc3QtYnJhbmNoCiszNTY5MyAxNmU3NTNmZjMxYjIyNjhjODU1NjYzYmJiNjBmODAzYThmYTc2YjBmIGFzdC1icmFuY2gKKzM1Njk0IDRhNTQzMzA2ZGZmYTE2OGYwYzVhODQxZmVlNjQ2ZDVmZDA3ZGI1MGIgYXN0LWJyYW5jaAorMzU2OTUgZjdmNDEzYzY1NGY0ZmMzYjRlNzQ3Njc3YzQ4NTI4MGI5MDJmODdjMyBhc3QtYnJhbmNoCiszNTY5NiA1NWNhOTdlN2JkMGZhMzZkMDdiMTJhN2M4MjVkZTM4NmY0MTg1ZTdhIGFzdC1icmFuY2gKKzM1Njk3IGIyNDJiNGQ3ZTE3NzQyOGIwMzUwZjQyYzIyYzZmMGMwMzM4MzI3MWQgYXN0LWJyYW5jaAorMzU2OTggZTExNDBlNjAxZTcyMjg0ZTdkNzFhZmZhYzA4Y2MzNzhhYjhiODM3MiBhc3QtYnJhbmNoCiszNTY5OSA3MzQ4NmZmNmI1NTJmMzg4N2Q4ODg4NjY3ZWE3Nzk0YWMxMjBmMzcyIGxlZ2FjeS10cnVuaworMzU3MDAgOWRmNTE4NWZjNWNhYmUxYTc3NGM5ZjAyZTkwOGJlNTRkMTdjZTg2ZiByZWxlYXNlMjMtbWFpbnQKKzM1NzAxIGE1ODZmNzUyYjJiZGNjZWY1ZjJkMTA1NGUwNzkxZjMxMmNmMWYwMjQgcmVsZWFzZTIzLW1haW50CiszNTcwMiA3MDM4OTc3Y2VhOGRlNjEzMjFhYjY5YmZiYzQ1YmM0YWRlZGM2Y2JiIGxlZ2FjeS10cnVuaworMzU3MDMgMDhhMzkxZmRlNjhkYWYzNzVjODZlOGYzZDg3NzE1NTZlYjIyMjBkMCByZWxlYXNlMjMtbWFpbnQKKzM1NzA0IDU2ZmVkMDlkMDFmMzdlZDQzNzJlZWQ4MmE4MWVjODJkMmZjNGYwN2YgcmVsZWFzZTIzLW1haW50CiszNTcwNSA0YmM2MjBmNDdmYjQyZWVlMGY1OWRiMDVlYzg5YzgyZjA1OWJlNjU2IGxlZ2FjeS10cnVuaworMzU3MDYgODE2MTlkY2JmYWU3YjU1NjQ2NmJjNTJlYWI4ZDY2NzQ4MjRkMTQxYyBsZWdhY3ktdHJ1bmsKKzM1NzA3IDNjNzk2NDEzZjA1ZTcyOWRlMzQwMzY0YTAyZWZjYzlmMzMxMDg4YWIgbGVnYWN5LXRydW5rCiszNTcwOCAzOWMzNjUyNmQxYjA4MjIzZTU4Y2VhY2JlNGI2OWFhMjFkZTcwOTI5IGxlZ2FjeS10cnVuaworMzU3MDkgZDAzYjU0ZTYwYTY3NmIxZjdkMmVjZGRjZTQxZDJmMjZhNmFlZTZlOCByZWxlYXNlMjMtbWFpbnQKKzM1NzEwIDRkYjBjODRmNWM2YTM1OWFjZjkwMjRiNjc1MDgyYmU5NzM4OTNkZDIgbGVnYWN5LXRydW5rCiszNTcxMSAzYzYxOGM2OTM5ZTMzNDI3NzJlMGE1M2VhNzFkNDhkNDJmODYzM2Q4IGxlZ2FjeS10cnVuaworMzU3MTIgZmJjYmNkYTE0YjkyZWMzMjM1MTllZDM2OTNiNTBmZGIyMzc5MzQzNSBsZWdhY3ktdHJ1bmsKKzM1NzEzIDIyYTU1MDI4YTc4ZDNlYTgwNjUzOTQzOWRiMjdlMjM2YjA1MTcwZDUgcmVsZWFzZTIzLW1haW50CiszNTcxNCA1MTg0ZDY5YzI0ZGNiOWM2MjEwN2Q0NGFkMmNlNGRkMzRhMjE4Yjk2IHJlbGVhc2UyMy1tYWludAorMzU3MTUgMDk4MDBiYTJhNjUzNDhhMzNiY2YxMDc2MTAwNzJhNjQ2ZWFjMzVmNyByZWxlYXNlMjMtbWFpbnQKKzM1NzE2IDkzOTE3ZGQ4YTg3YzIxMGNmYzQ5ZDllZDgxODExOTA5YjdmNjRiNTUgbGVnYWN5LXRydW5rCiszNTcxNyA2MDgwMjhmMzg4YzVjNDljNzc3NzhlYzJhYjNlZmQ3NzRhNTQxMDg4IHJlbGVhc2UyMy1tYWludAorMzU3MTggODg2ZDY2ZjUxMTA1YzQ3MzY5ZDdjYjgwNzMzYzM5MDgwNGI2YmQ1OCByZWxlYXNlMjMtbWFpbnQKKzM1NzE5IGY4YzBhYzViZWYwMjhjYzE1Y2VjYWE1MzVlYzNjZDlmOTEzNTVkZTggbGVnYWN5LXRydW5rCiszNTcyMCA2M2I2OGNiMmI0NDJmNGU2NjRmZmE1OGQ1OTg2OTc5NDFhZTI0ODkzIGxlZ2FjeS10cnVuaworMzU3MjEgMWYyOTM0YTMxOGI3ODFiYTU5ZjQ0MTkyY2RkZDI3MDIzNWM5OTMyNSBsZWdhY3ktdHJ1bmsKKzM1NzIyIDEwYmEyNDE2MjM5MTEwZThhZjdiMDQ1NGQ4MDkwZDM5YWYyOTg5YjEgbGVnYWN5LXRydW5rCiszNTcyMyBmZGFiYjY4MDhkNTJmYmZhMjU0YjBlMTgyMWRhNjJhZjczNzk5OTJiIHJlbGVhc2UyMy1tYWludAorMzU3MjQgMDFlYTAzZTdiMjY1ZjhiNzhmNTk3OGViYzkwYThiNDM5NDAzYTMyMiBsZWdhY3ktdHJ1bmsKKzM1NzI1IDAxZTMxNjQ4OWQ2Nzk5MjI0MzY2MGQxZDgwZTdiY2EzYmY2OGIxZWIgcmVsZWFzZTIzLW1haW50CiszNTcyNiA2NjM2ODExOGExOWJjMDM1OGIzYTkxZmRkOGQyOTgzN2M4Mzc3YzA3IGFzdC1icmFuY2gKKzM1NzI3IGYxZmQxYWU0MjEzNmEwMjNlNGYzNDdlYWJkNTkzNzBlZGJlODkyNTAgYXN0LWJyYW5jaAorMzU3MjggYzkyMTQzODI2NjVmNGNmOWIzYmI3ZTZhY2VmNTMzZDhkZTA3YmM2OSBhc3QtYnJhbmNoCiszNTcyOSAwNjAxNGY3MWYxNjM2YTljZjA0NTRlNzNlZmE2NDkwNjk3ODBjNzU2IGFzdC1icmFuY2gKKzM1NzMwIDc2NzNiZmY3NDEyMjhiODM0OTVkZDc1MTI1M2ZmMTYxMDk3ZGFjYWMgYXN0LWJyYW5jaAorMzU3MzEgNGMzNGFjOWRhOTNkNDI0NjU5N2JkZDFjZTFiYWY4Njk4ZjRmOTdkYSBhc3QtYnJhbmNoCiszNTczMiA3YzdhMjk4MTQ1NWNhOGIzYmNiNzU4ODcyMzBiMTRjN2JiMDkxMWExIGFzdC1icmFuY2gKKzM1NzMzIGZmNWEzMWE3MWQ5YTZiMGVjYzU1ODMyMGY3Mzc0ZmJiYzc0ZGEzNDMgbGVnYWN5LXRydW5rCiszNTczNCBmZjI1OGM2NzFkM2NjZDUxMmQxYTkyMjlkMjk5MDI5MDQ2NzUxYTNkIGFzdC1icmFuY2gKKzM1NzM1IGRiOGM0NWI5ZTgxODZlYzJlNTJlMzdkZmVmZjY3YjZmYTQ3NDE5ODIgbGVnYWN5LXRydW5rCiszNTczNiA5ZDE2MzNlNmM0MmViOWQzOGFhZjViOTAxMWRmZWVjMWVjYmNjODliIGxlZ2FjeS10cnVuaworMzU3MzcgMDU5NzQwZDUyYWU1YzRlOGYzZDljNGQyZWU2NDVmYWUwNmQ3MjBjOSBsZWdhY3ktdHJ1bmsKKzM1NzM4IDMyMDM1NGI3NjZlNzJkMzA0ZGMzMDYyOWRhM2JiMzM0YjcwODgzY2UgbGVnYWN5LXRydW5rCiszNTczOSAxMjZkODE1NTQ2ZDMzNzlmYjM2MmFjYmU3MzgyNTljNzQ5OTg3YzE4IHJlbGVhc2UyMy1tYWludAorMzU3NDAgMjI4ZWE3NTc3MGUzZGU4MzJhNDE3ZDhmNjE0N2M0Y2Q0ZDcwZmI2YiBsZWdhY3ktdHJ1bmsKKzM1NzQxIDMwZWEwYjM1MmZjMDJmZGIyZDMxMDg4YWFlMDdlYTNhZTIzYjY3NjUgYXN0LWJyYW5jaAorMzU3NDIgM2I0NDAzMzYwNzc1ZjA0MjIzMzMyZTFjZWYzMzM5ZjJlNGY2ZmQ1NCBhc3QtYnJhbmNoCiszNTc0MyBhYjQ5ZTZmZDc3NDY1MDBlMGEyYWQ5N2RhNDhiODhmYTIwMzc0M2FlIGFzdC1icmFuY2gKKzM1NzQ0IDIwYjVlOWE2ZWY2YjBhNWE3YWJlMmUxNzQyZTE0NGNjNjQxOGMxNGEgYXN0LWJyYW5jaAorMzU3NDUgMjgyMmVkOTU2MzA5ZmU4ZDk1ZGYwOGUzMzNiNzE3NTdhYjczNWRmOCBhc3QtYnJhbmNoCiszNTc0NiBhYWI3NzZkNDFiNGY1MTg0YWM0NWRjNWJkY2RlYjZhNzY3OGNlZGYzIGFzdC1icmFuY2gKKzM1NzQ3IGI2MWU1ZjkzZWJlMGExMzM0MDA4OGYxZWQ2ODE2NGI5YmY3Yjg2MDggYXN0LWJyYW5jaAorMzU3NDggY2U3NmE5ZDZlNjUzMDhmMDA0YTJlN2RjMWMxOGY1M2RkMDUzNGQ4NyBhc3QtYnJhbmNoCiszNTc0OSAwNjExMDhhODk1MTZmMTFmNDVhNWQyZmJkOTI1YTFkOGJmMWRiMzE0IGFzdC1icmFuY2gKKzM1NzUwIDI0NDhmNjg0Y2U5ZTljNGU5YmY2YmE3ZTJkMzA0MWZjMDc3ZThiMWEgYXN0LWJyYW5jaAorMzU3NTEgNGYwYTFlN2FkNjljYTE1OWM3Y2ZlMmZkOGMzNGE0NTYzZTBmOTVhYSBsZWdhY3ktdHJ1bmsKKzM1NzUyIDhmMWNlN2IwZTQyM2UzMjk2MDljMGEzY2NiODRjODBlNDhmNjZiNjEgcmVsZWFzZTIzLW1haW50CiszNTc1MyA2OWMxYWI2YjI2MDIxNDFiMGE3Y2E0NWE0MTM2ZWIxZjQ0OGFmNzc0IGFzdC1icmFuY2gKKzM1NzU0IDU0YWU5ZGUzOGYwYzJkZGMwMDI3ZDRhNGE2MDZkNjMxNjBiMzRmNWIgYXN0LWJyYW5jaAorMzU3NTUgMDIwNDQzYTEwYzIwMjU4ZDM4MDYxYjdmMjUyNzk4ZDU3M2Q0ODVjNyBhc3QtYnJhbmNoCiszNTc1NiBiYjI1NWY4NTU5OTllOWY2MGU1M2ZkYTdlYzQwNDU2OGViMmM5NWViIGFzdC1icmFuY2gKKzM1NzU3IDE4MjI5NTM4MWYxNDdlZmQ4MzU5NTJlNjE1NWI2YzU4NDBmNzZkNWMgYXN0LWJyYW5jaAorMzU3NTggNTQ2NWEyY2IwYWVhN2U3NzNhNmRkNTg2YTYwOGE3Njc3ZTcyNmUzMCBsZWdhY3ktdHJ1bmsKKzM1NzU5IDBjNjY3NjEyNDMwODlhNDNiOTg0NTEyNDY4MzY1ZGM4ZjE1NWM5NmYgYXN0LWJyYW5jaAorMzU3NjAgNzY1ZmUxNmY2NjViODhkMzFkZDM0OWQzOTRhMmYwYTllMjc4YTgwMCBsZWdhY3ktdHJ1bmsKKzM1NzYxIDRiZThlMDEwYmRiOWU5YzAyY2UyYjc2NTc3MDIzMmFmN2I1ODk5ZDggYXN0LWJyYW5jaAorMzU3NjIgMjAwYmY3OWMwMTU5NjA5ZDNjNzViYWQ1NmE0OTE1ZDc5N2RiYmZjYiBhc3QtYnJhbmNoCiszNTc2MyA1NmY5YjMxYWM2OWZhNDBmOTJlNTYzZGM2NDQxOWFkMTZiZjMxYTY4IGFzdC1icmFuY2gKKzM1NzY0IDM0MGU0OWUwMTU3NjY0N2I3OTM5ZmI1MDhmMzA1NTg3MWZjYTY2MDIgYXN0LWJyYW5jaAorMzU3NjUgMGFlY2MwN2UzNWQ5ZmM2MjVlYTU4ODAwNzI4MGVmNDdiZmM3NWI3YSBhc3QtYnJhbmNoCiszNTc2NyBmOTUwZWYzMDlkNzUxMmY1ZWNhYjRlODA5NzFmMzliODQzOGM1Zjk1IGxlZ2FjeS10cnVuaworMzU3NjggMzgzOGNkZWUxYTIwMWIzYzJlNTliZjJhYjZjMDg3YTE0MTQ3ODdiMyBsZWdhY3ktdHJ1bmsKKzM1NzY5IDYxNjdlNzhhMTdhODI2YTgzOGY1NDRiOWZjZDg5NjFlMzAyYWNiN2UgbGVnYWN5LXRydW5rCiszNTc3MCAwZTllMGM1MzQ5YTBkZWViMGUxNGI5Y2U5ZWE4YmEyYTM5NGU3MmYzIGxlZ2FjeS10cnVuaworMzU3NzEgOTBlMDg5NGFlYzViZWQzOGQzMzJjMThlNzQ5MzAyM2YyOWQ0MDg1ZCByZWxlYXNlMjMtbWFpbnQKKzM1NzcyIDU4MzE3ODUxOGJkMGNkMzA3ZTgxYTZkYjYxYWQ0Mzg4NmQ3MzE1MjUgbGVnYWN5LXRydW5rCiszNTc3MyBjZmFmYWVhOTNkOTA5NWRjNGE5ZjdhNzVlOTZjNDQ1YTc1NGJlMTg0IHJlbGVhc2UyMy1tYWludAorMzU3NzQgZWE5ZWU5Yjc0NjcyOWNiNTQ0ZWM0NjQxMTM2ZGMxNGFjNDMyZjBjNCBsZWdhY3ktdHJ1bmsKKzM1Nzc1IGYyY2VhMTZhMWYzODJkNGI5NzMzZDkwZjk4MjAzZDAxZjQ1ZjhkMTggbGVnYWN5LXRydW5rCiszNTc3NiA0N2VkN2JjZGYwODY0NmI0Y2ZiZDkzZDMyMDg3YTJlYmY4ZWIyY2Y2IHJlbGVhc2UyMy1tYWludAorMzU3NzcgMzM4NTc3YWZkYWI2ZDhiZDEyMjM4NjA4ZjU1N2Q1Yjk4OTkyMDczZSBsZWdhY3ktdHJ1bmsKKzM1Nzc4IDFjYTNhNjJhMDA5YWQ0YzVkZDNkNGNiZTI2OGJjYTEyNWI5M2I4YWYgbGVnYWN5LXRydW5rCiszNTc3OSBmOWZhZjU1NzE3MjAyZDMzYzRlYTgyNDUzZTlmYTgwYjU2YmEwMDNmIGxlZ2FjeS10cnVuaworMzU3ODAgZmFhN2VlYjExOGNmNDdhZGE1ZThiZDk0MjYwNTZhMzAwYTY4MDYxOCBsZWdhY3ktdHJ1bmsKKzM1NzgxIGE0OGU2MDhiYTYwNWZhMWJlNzQ0OTM4OWQ4YmNlZjllZGQ2YzBiMGUgcmVsZWFzZTIzLW1haW50CiszNTc4MiA1Y2ExMDNjMzdkNWUwYmRkODBiNmQ2NGM1Yzc0NTI3YTg4ZDNjMjdlIHJlbGVhc2UyMy1tYWludAorMzU3ODMgNWFiODEyY2QwZGI3NTYyMjY1NDgwNWQ3MjYzMjY1NzNmZjhhZGI5NSBsZWdhY3ktdHJ1bmsKKzM1Nzg0IGVmMzRkZWMwMDRjZGRmNzljNzgyNWFiNTE2N2I0MTAzYTM3MDQxZDYgbGVnYWN5LXRydW5rCiszNTc4NSAyMDRiN2JjZWFkNGM5OGVmYmNlZThlMTc2NjYyNmUzZDE3ODE5Yzg1IGxlZ2FjeS10cnVuaworMzU3ODYgM2QwNDZkMDYzYTg0YTliYTAxMzQxNjY4ODkyMzczMzg5Yzg3NzhjNSBsZWdhY3ktdHJ1bmsKKzM1Nzg3IDIyNzZkZTg5MWZlMmVmNGRjZmRhZGNiMTZiNjQzNGZkYzc5NTc3Y2EgcmVsZWFzZTIzLW1haW50CiszNTc4OCAwYzc2YTllNWM4MzgyYzNiZDYzYTJhMDNmYjljMTYzMzBkMjljNTBkIGxlZ2FjeS10cnVuaworMzU3ODkgNWMzNWIzY2E1YmE5M2Q5NmE3YjZhNGUzODUyZGViYjIyNGI5Yzk1ZiBsZWdhY3ktdHJ1bmsKKzM1NzkwIDBlOWZkYjc2YWM4NTVmOWIzY2JkYTkwN2ZjNWQ1Y2Y0YWQxMjkzN2UgbGVnYWN5LXRydW5rCiszNTc5MSA1MWUxYjZkY2ZmNjFlOTIyYzczYTdiNTlmMDk2NWQ2Yzg4Y2E5Y2U5IHJlbGVhc2UyMy1tYWludAorMzU3OTIgN2E3NDk5ZmJjNDUyOTk2NjE0NGE1MmViYzRlYTZjMWI4MjFjMzZkYiByZWxlYXNlMjMtbWFpbnQKKzM1NzkzIDZjMTJhM2JhZDdkNTM5YWY5NWRlY2RhYjI3MTdjOTQ4YjNlMjM2ZDEgbGVnYWN5LXRydW5rCiszNTc5NCA2MzBlNGZiY2RlYTI2NWU3ZTgwMmQzZDRjMzM2MDU3MDZjNTY3OWIxIHJlbGVhc2UyMy1tYWludAorMzU3OTUgYzVhNTUyNTc4MzQ0ZjVjYTdmNDQ5ZGVkYTczYzY1MjM5ZWVhZTI1OSBsZWdhY3ktdHJ1bmsKKzM1Nzk2IDliMmI3ZDNiNDJmM2E2MWRjOTBiNjZkYjFhMmY3YjZkOWJkZWU1OGMgbGVnYWN5LXRydW5rCiszNTc5NyA2ODdiMGM4MjU0ZmFhNDVkMjlkNjhmMjFhYzMzODk1ZjEwNDAyOGI3IHJlbGVhc2UyMy1tYWludAorMzU3OTggNjY2N2ExZDhhZmIxMDQ4ZDBhZWE0NGNkM2Q5MGRhMGM2OWI3ODI3NSBsZWdhY3ktdHJ1bmsKKzM1Nzk5IGE0NjI2NGI5MWE1MThmOTU0ZWVkY2MxZGNkYTI1MWExNGNhYWFkMzcgbGVnYWN5LXRydW5rCiszNTgwMCBiNjFmZTgyOGI3Mzg4NmYyNmZiZmM3ZWM1ZmE3ZWVkNjhkM2RiYWU0IHJlbGVhc2UyMy1tYWludAorMzU4MDEgNTFhNWZiNjA5MzRkNzUyMzc1YzI3ZmJhZTJmOTcwNDcxOTcxNTg2OCBsZWdhY3ktdHJ1bmsKKzM1ODAyIDIyMjkwOGRmYmY1OGJlOTgwMzc0NTMwYWFjZmQwNTFmYTY1NWZhZmIgbGVnYWN5LXRydW5rCiszNTgwMyA4NjE1ZjI3OGRhNWYzNTY4MWJmNmIyZTZiNWE1OWYzNzFlZDA5MTkzIGxlZ2FjeS10cnVuaworMzU4MDQgOWY4YmZkNTQyNTFmNzQ0Mjg5OWExMTI5YTkwOGFiMDYxMDM4OTc4ZiBsZWdhY3ktdHJ1bmsKKzM1ODA1IDhiMmE0MjlhZjQyZmYxNjQxNWNmNmE1OGFmMzE3NGMxZTUwZTc3MDcgcmVsZWFzZTIzLW1haW50CiszNTgwNiBhYjY4MGM0YWNkMzVhZjgxM2QwMmNlYzY1NzQ5MjYzYmE2ZDIxYWI4IHJlbGVhc2UyMy1tYWludAorMzU4MDcgNWViN2E4ZTJmMzQ1Mzk4MTZhYmE0NjYwNzEyOGUzNmQ2NjJlNDBjMyBsZWdhY3ktdHJ1bmsKKzM1ODA4IGI5ZjA5MTk2NTI2ZWFiNDAwNDgwOTBmYzg4ZTNmNjA3OTg2MDNiNjEgcmVsZWFzZTIzLW1haW50CiszNTgwOSBjYmJhY2RhODQ0ODBhZTJiZDg1ZDFjNjEyNmJlNzYzYzlmNzExODk5IGxlZ2FjeS10cnVuaworMzU4MTAgYTE0MmU0ZTk3ZjEzMWEwZDk4ZjY2ZjdiODEyMDBiNDk2NWVjMDg1MiBsZWdhY3ktdHJ1bmsKKzM1ODExIGU4YTMxYWI3YTg3NDhlNjE0NjBmYmFlNzQ2MmVkZmE3ZDUyZjczYTIgcmVsZWFzZTIzLW1haW50CiszNTgxMiA0ZGVlNTgzMTVjYzQxZmIwNGQ3YjU3MTFlOWVkZjdiZTg5OGY4Y2I5IGxlZ2FjeS10cnVuaworMzU4MTMgNjQ2Y2IwMTQ2OTQyZTFmNTdkMDNhYmE3MzZkNTVjM2JmYTU3YTFmNyByZWxlYXNlMjMtbWFpbnQKKzM1ODE0IDgyYmM2OTk2MTAyMmRjOWNjOWMyY2JjZWQzM2Y4ZGYyY2FmZjk1Y2IgbGVnYWN5LXRydW5rCiszNTgxNSBmNzkzYTA0NmVkOTgxNDI2ZWEyNjMyZDYxMDA3Nzg2MTA2YjZmZmVlIGxlZ2FjeS10cnVuaworMzU4MTYgZWJmYTVjZDhjYmE0ZDIzZTVjYzg0MWIxOGY5Nzc5Yzg0YTY1ZjU1MyBsZWdhY3ktdHJ1bmsKKzM1ODE3IDI2ODM5ZjMyZTcwZDA3MWJiZmQwYmY1YjljMmIwNmIxZWEzMGM2OWYgcmVsZWFzZTIzLW1haW50CiszNTgxOCA2NDA4NGY5YmFiYTFlYzA0NmNmOGI5ODY5YjQ3Yjk0ZGZhZTcxZmZhIGxlZ2FjeS10cnVuaworMzU4MTkgNGViNTc0YjEyMjVmYWFiN2Y0NDg5YTM3ZTE0NDFiMmI2Mjg2MGM1OSByZWxlYXNlMjMtbWFpbnQKKzM1ODIwIDJjYzcxNDk3NzQ3OTM0MTZlMDdmYjlkODViZWVkNGM2MTgwYTIwNzggbGVnYWN5LXRydW5rCiszNTgyMSA5ODRiMjg5OTkyYzA2OTNjMzVkN2MxYjRmMjkwZjU0ODFlMjNjMGRmIHJlbGVhc2UyMy1tYWludAorMzU4MjIgYzI0OTMwNWJmY2FjOGE1NGVjMzY3ZTczNGMwOGM5NWI2OWNjZjA1MSBsZWdhY3ktdHJ1bmsKKzM1ODIzIGU0ZjUyZTJlMzgwMDBiNDY0NWM1MTcwMjdlNjQwZDdiOTIwMDg1OGIgbGVnYWN5LXRydW5rCiszNTgyNCBlYzA5YTcxODQ5Y2M2M2FkYjI2YTZmYjYxNTZlMDdkZDM3NDBhZDM1IHJlbGVhc2UyMy1tYWludAorMzU4MjUgZTJhMGVmODdkNGQ0MGRjNDRkZGQ0OGZjNDZjNTZlZDBiMjEyZTE0YiBsZWdhY3ktdHJ1bmsKKzM1ODI2IDE0ZjdmOWI4OWRhOWM1ZGQzZmVmYzA0MDY0NTc4ZjdiNGI2MjE2YjcgcmVsZWFzZTIzLW1haW50CiszNTgyNyA2ZTA3OGY3NjEzYWQ3YWMxMWMyNGY2ODY1ODg5OGVkN2UwYzA5MWY2IGxlZ2FjeS10cnVuaworMzU4MjggNDJlMmI1YWZhNzE1NzM1M2NkNzI2ZWU4YjRjZjVmZjMwNjU0NjgxZSBsZWdhY3ktdHJ1bmsKKzM1ODI5IDU0NGYyMTcyMzYzZDIxZjdlNDg2MjliNmY0OGRiZTk5MWE2NzQ0NjcgbGVnYWN5LXRydW5rCiszNTgzMCA1MDcwOGI4ZjBkMjg3ODJmNzE2OWQxMDEyOTI0Yjg0MTU4NjE4ZTE2IHJlbGVhc2UyMy1tYWludAorMzU4MzEgYTI5YmFjMGFlOTA1Yjk0YWJmYWJhMDFkMDE0MDQ3YTgxYzU0NDI5NiByZWxlYXNlMjMtbWFpbnQKKzM1ODMyIDI2ZTA5MGNjYmI2NGMzN2QwYjcxOWJjMjI0NTQ5ZjhjM2U3NGM4YTMgcmVsZWFzZTIzLW1haW50CiszNTgzMyA1ODJkY2EwMmU2MGY2NTdhOTA1MTg2MzhiOWVkZWY3MGYxMmViNTZmIGxlZ2FjeS10cnVuaworMzU4MzQgMmQ3YjBjYTBjMjZjOTYwMzY2Mzc5MWYxMjhlMzkxNmI0MTIxZjdjZSBsZWdhY3ktdHJ1bmsKKzM1ODM1IGU5MDI2OWZjMTkzNjViMTJhYzc1ZGZjYTdjZDA0YWQwMzYzODRmM2UgbGVnYWN5LXRydW5rCiszNTgzNiAzNzEyMWM4YjY5MWRhMDhhMGJmZWE1ZTM1NjNiOTRkNjE1NGExZTZhIGxlZ2FjeS10cnVuaworMzU4MzcgOThhODA3ODg4MzVjMDY2MGU2YmM0ZTg1NTA3N2U2YjliMTQ4MWI0YyBsZWdhY3ktdHJ1bmsKKzM1ODM4IDRjODI1NThiMTVmYjNiNjQwOWYzMTYyNjdmOGYyMzcyNDIyMjE0NWUgbGVnYWN5LXRydW5rCiszNTgzOSBhMWIzNzRmZjAxODQxNjRhNDk4NTU1MTA5NGM1MDc5ODZiNWI1YTI1IGxlZ2FjeS10cnVuaworMzU4NDAgYzEzYmI3ZjRiY2QxODhhNzBlM2JmZmY2YWQ5OWZjOGFkOTFlNWM2NiBsZWdhY3ktdHJ1bmsKKzM1ODQxIDYzNWVmMTEwNjU4ZWY4ZDNjODk3NTBkNTg3NjRiNmYwNTRhZjQwYjMgbGVnYWN5LXRydW5rCiszNTg0MiBkYjZhNmQzOTFhOTk4ZjUyZTMyNWFhOGU1YTc2NGQ5NjY1MGY0MWVhIGxlZ2FjeS10cnVuaworMzU4NDMgYjU1OTRkNzI3OWRmNjllMzViZDFhN2U0NDU2ZmI1YmNlOWNjMzdlNiBsZWdhY3ktdHJ1bmsKKzM1ODQ0IGY0Mzc2Zjc2NzRhMjIyZTg2ZmU1OTc1MjNjOTVhYmNjYmJjNGVlZDMgbGVnYWN5LXRydW5rCiszNTg0NSBiOWM2NThhYzBlMjBjZDZiNmJmNTRkMDdmYmNmZDBkMTk3MWQ4M2NmIGxlZ2FjeS10cnVuaworMzU4NDYgNjk2ZDkyZWZmMDIyZmU0Zjg1OThkZmY1YTBhMWIyZjk3YTg2NjdhYiBsZWdhY3ktdHJ1bmsKKzM1ODQ3IDMzZjZhMTVkYmY2Y2YwMWQ4YTM3ODg2NTMzZWVhMjJkZTMzMWM1N2YgcmVsZWFzZTIzLW1haW50CiszNTg0OCAwMGVlYTI4MTM1ZjhmYjcxYjFhODAwZjY5YTNlMGJjODUzNmQxMTFjIHJlbGVhc2UyMy1tYWludAorMzU4NDkgMzgzMTA5NDMzYTk3Mjg0ZjcwNDEwNjRjMzdjMzM2YmFiOGYyYTJiMCByZWxlYXNlMjMtbWFpbnQKKzM1ODUwIGJhMzEyMTZlMzdjOGYyMWE1NzJjNmJiYzBlMjllYmM4YmEzZDRhZTYgbGVnYWN5LXRydW5rCiszNTg1MSAwYjMzZTM3MzdiNGNiZDdjMzc2N2U5ZDdjNGQzZTdiNTgwZDg0MDdmIGxlZ2FjeS10cnVuaworMzU4NTIgZGNiZTA0MmI4OTJkZjViYmE5ZjU1M2IyYTc3NjZjNTQ4NWE2NjYzMCByZWxlYXNlMjMtbWFpbnQKKzM1ODUzIDIyYjA4MDJhYmE3NDM3ZjI2ZWFkNjEwN2RjMDU1ZGRmZTgwODYzZjIgbGVnYWN5LXRydW5rCiszNTg1NCA5MWY3NmNmNDA3M2EyYWU5NGU5NThhNWJjYzhlOTljMmFhYTAwYjM3IGxlZ2FjeS10cnVuaworMzU4NTUgMzU4NmE3ODAxYmRhZjM2YzQ4NWI2NDVjZGI2NjhlZjA3MjhkZmI2OCBsZWdhY3ktdHJ1bmsKKzM1ODU2IGMzNmVhMDc5NDkyMDFlNzUxNzA4YmFjNDBhODdmMDllMzIxOTA3NDAgbGVnYWN5LXRydW5rCiszNTg1NyBkODAzYWZjZThhYzRlN2Y4ZjNhMmFjZTFlYjkzZjY5YzI1MzI4YzQ1IHJlbGVhc2UyMy1tYWludAorMzU4NTggMTM2ZWZiYjExMTdkZWJiM2EwNDM4M2I5OTgxZTg3ODY2NTliMjkzYyBsZWdhY3ktdHJ1bmsKKzM1ODU5IDk1NWUyMDZlNTNkYzM1ZTA0OWM1YWQ1MDQ1MTNhNzU0N2Q5NjdiNjkgbGVnYWN5LXRydW5rCiszNTg2MCA2ZGI0OGM1YmRiMjdhYmVlYjZjMWYyNGQ5MzFlNjY4MzIzMjdjYTcwIHJlbGVhc2UyMy1tYWludAorMzU4NjEgNTBkOGEyNzIxNGU2Zjg1MzhhMWRiMmYzMTQ5ZjE1ZDZlMTZhNjY4OCBsZWdhY3ktdHJ1bmsKKzM1ODYyIDY2ZWRlMDM4N2YzNjc0Mjg0YTM2YzRhMGM0YmZhYmJkNjA3OTE0M2YgcmVsZWFzZTIzLW1haW50CiszNTg2MyA5ZjZkNDVmM2MwMjNkNTcxOWZjNjQ0M2YxMTA3MGFkOWRkYWFjNWYyIGxlZ2FjeS10cnVuaworMzU4NjQgYzM4YTM5ZDM4NDg5YjEyNjRiMjJhODVhYjdmMDY3YmFhODJmZDU5MSBsZWdhY3ktdHJ1bmsKKzM1ODY1IDVhMjI0NjVmZGEyNGY5ZDZmOWFiZGIwMTg0MjAxY2M1ZWI2OTQ1MTEgcmVsZWFzZTIzLW1haW50CiszNTg2NiBlODUzNTVjZjE3NWFhZTA4NTFkMWIwYWYzODNmYjdjZTYwMDU2ZjNhIGxlZ2FjeS10cnVuaworMzU4NjcgZDA5YmFmYjk3NjlmN2U1Yzc4MzBmMTNiOGMxNGQwMWE4YjIwNjY1MSByZWxlYXNlMjMtbWFpbnQKKzM1ODY4IDhmZTFhMjY2MmFhYTUzODgwMGZjYzg5NzA0NTY0YWYxYjM1ODFmZWIgcmVsZWFzZTIzLW1haW50CiszNTg2OSBjNzljYzA0MDNhY2ZlZjM5ZDRiMDZkZjgxOTY4Y2FmZGY0YmQ0N2I3IGxlZ2FjeS10cnVuaworMzU4NzAgYzY4MDA4MGY5MDBjMTZjNjAyMDgzNmIzYWVlOWQwZjViYzI5ZTIzNiBsZWdhY3ktdHJ1bmsKKzM1ODcxIGU5YmNlODM3YzFjMzhjOWRkYjVlNjkwYmIwZDU1ZGRlNmVmMTEwNzggcmVsZWFzZTIzLW1haW50CiszNTg3MiA4NjAxYzc4NWM2ODNkZWEyMmM1OGNjNzg0OGQzODdjNDJjNTNiODAyIHJlbGVhc2UyMy1tYWludAorMzU4NzMgY2YzOTJiOTM2YTJlNDk0MjIyMGFlN2RiY2VkMjFjY2QwMDE4MjlkZCBsZWdhY3ktdHJ1bmsKKzM1ODc0IDE3YmY5NWVkNzU2MmM5ODEwNmE2MDFjZTA5M2IzYWEyMjg1ZWQ4YjkgcmVsZWFzZTIzLW1haW50CiszNTg3NSAxNTM4YThjZmIwZGRhNTRhNDI0ZjIzMWU0YzFkNTE0NGM5NDEzNjViIGxlZ2FjeS10cnVuaworMzU4NzYgNTNhYmQ5YWQxOTA5OGY5M2U1Nzc1MzBjNThkMTgxNjc4Y2M0MWU2YiByZWxlYXNlMjMtbWFpbnQKKzM1ODc3IGY2M2RkMjk5YTYwYjI3MzU5YWE5YzczMzYxZTIwZmFmYzhhZTlkMTkgcmVsZWFzZTIzLW1haW50CiszNTg3OCA3YWZlYjgzNmY2NmM1NmZlNzZmMDkxYWU5MjNjYmMxZjk0OGRmOWZmIGxlZ2FjeS10cnVuaworMzU4NzkgYTM4Y2Q2M2QxN2E3NGU0ZWIzNWEzMzc3ZDdjMTgwOWQzZjI4MTM1ZSByZWxlYXNlMjMtbWFpbnQKKzM1ODgwIDY3NThiNjMwYWNiN2VmODYxNDQ4ZTBiMTUxY2U0NmZiMzAxMzM1YjYgbGVnYWN5LXRydW5rCiszNTg4MSA2OTQzM2ZjMWM4MTZjYjIyYTE2ZmU5NjMxYzdiNTFjOTFjZjQ4ZGVhIGxlZ2FjeS10cnVuaworMzU4ODIgNDY5ZGNiMGFkNzM4YmQ0ZDAyMDg5YmI3OGM1NDYwNmY0ZGU3ZjE4ZiBsZWdhY3ktdHJ1bmsKKzM1ODgzIDYxYjI2Yjk1ZWIzM2VjYzQ3NDkyOTA2M2NjZjFlMjg3ZDYxY2Y2NmYgbGVnYWN5LXRydW5rCiszNTg4NCAxMjFhYWE0YmE5MjM1OGZlYzE5MDVlMWU0ZGZiMWZkZDJkZDM3ZWVlIGxlZ2FjeS10cnVuaworMzU4ODUgMWMyMzgxZDc5N2MwZjc1OGRhYzg1ZjFiYzk4ZTdhMjRmODU0ZmQ2MSBsZWdhY3ktdHJ1bmsKKzM1ODg2IDI3ZGE4N2M5MzE4ZjUzMzRkMmY1ODM5MzNkN2NiNDk2ZWJhZjRmZDEgbGVnYWN5LXRydW5rCiszNTg4NyAwMmY3NjlkN2U0YThlMTc0ZDU3ODRlZjdlMDlhYjZmMThlMWIyZGYzIGxlZ2FjeS10cnVuaworMzU4ODggMjRjNDYwMDE0MTZlMWEwNTI0NzhhOWVkMmIwNDlhMTA1ZGU0MDhkOSByZWxlYXNlMjMtbWFpbnQKKzM1ODg5IGIzMTlkYjM4NjlkODIyYTYyMmMyZDlkNGI4MWFmN2Y2OTVlOWYzOWYgbGVnYWN5LXRydW5rCiszNTg5MCA2MzBhMDkxNWEzMTAxYmVjN2EwODU0NDFjMWEyZDZiZTNlMmNhMWNhIHJlbGVhc2UyMy1tYWludAorMzU4OTEgYzcwMTA3NjBlOGFkMTlhYmZlZDBjZWMwNmQ1NzIwOTViMWM0NWNmYiBsZWdhY3ktdHJ1bmsKKzM1ODkyIGFiMGM4ZGRiMmM5MjUyOGY0NDFhMDllMjNiYTYwN2YwYzdmZGU4YmIgbGVnYWN5LXRydW5rCiszNTg5MyBkNjU4OWM4OGQyM2I3YTVjYzY4NDNlZTQ3NTBlMjUzMTNmZjc2MmI3IGxlZ2FjeS10cnVuaworMzU4OTQgMzE4YmY2OThlNDI1YjVkZGQ3OTAzNWU0OTgxN2YyMGE3NGVjNmY2NyByZWxlYXNlMjMtbWFpbnQKKzM1ODk1IDYwNmFhZTk1ZjEyODkyMmY4ZWYxODVmNWEyYWU0MGMyYTlkOTBiZGUgcmVsZWFzZTIzLW1haW50CiszNTg5NiA2NTdmYjJhNTBlOGVkMzM3MDRlZjJkNmUyNzRmYWI2MjkxZDBhMjNkIGxlZ2FjeS10cnVuaworMzU4OTcgNTJlMTQwY2ExNDZjNWVjZTUyN2I1MjE5NzM5YmY5YjM4NGJjYzgwNCByZWxlYXNlMjMtbWFpbnQKKzM1ODk4IDQ1YmEyYzY5YzMxZmRkYjcyY2FjYjAxOWIwNjZjZmJlOTI5MDdlYTcgcmVsZWFzZTIzLW1haW50CiszNTg5OSA1ZTE3ZDA1MzNhZDM2NDE5N2U3MzRiMjRiZDM4YjhhNWQ4YmRkYTY2IHJlbGVhc2UyMy1tYWludAorMzU5MDAgMDJmODlkMTJmMDM2ZjZhODMyMWRkMmFmZjdiZTFmNzhhOTNkY2U2MSByZWxlYXNlMjMtbWFpbnQKKzM1OTAxIDIwNjUzYzkwM2QxY2FmZGEyZDAxMmE3NTJlMmYzMjg1ZTI2NzYwNGIgcmVsZWFzZTIzLW1haW50CiszNTkwMiBmNzhkOTM4ZDdiYjA4MDRhNzZiOGEwNGI2YTk2ZjZkOWY5MTY3YzZkIGxlZ2FjeS10cnVuaworMzU5MDMgMjQ1ODM1ZWQ4ZGU4ZGYzNzczODNkMWI4NjVkOWIzYTkzYTViNTdmNiBsZWdhY3ktdHJ1bmsKKzM1OTA0IDdhZmIxM2MyZDUyNmY0ODM3M2VkYmI5MzY3MThiMWIzNDEzMzhjZTUgbGVnYWN5LXRydW5rCiszNTkwNSAwNTkzMTU4ZDE0ZjJkNWQxMjUzYmM4YmRmMDYxZjJlZjY1OGNlZGExIHJlbGVhc2UyMy1tYWludAorMzU5MDYgYWNlM2YxM2MxODM2Zjc5MGJhNmY1MmE2NzcyMWNmOTMyZTA5OTViOSByZWxlYXNlMjMtbWFpbnQKKzM1OTA4IDUyZmU5M2I2NTZjZjU5M2Q0OTk2NjMwNmUyZjY2NTc1MGM4NDdiNjIgbGVnYWN5LXRydW5rCiszNTkwOSBhNGI1MjZiNTBjMTIyMGU5MWY4ODQ0MThmNDUyMDFjOWQ1NDllZGI0IHJlbGVhc2UyMy1tYWludAorMzU5MDkgMzYzOTg2MWQwMjY0NmFmMWRhMzEyM2MyNTU2MGM0ZGIzZDdlZGJjZSByZWxlYXNlMjMtbWFpbnQKKzM1OTExIGVlN2ZjZGU1NjM2ZWExNzBmODA4MzQyNDQ5YWFiN2I1MDYzY2VhYTEgcmVsZWFzZTIzLW1haW50CiszNTkxMiA5ZmU0NTc5N2MwOTdmNDM4ODA2MGZhYzFjM2I3OWYwNGZjOWY5ZDA2IGxlZ2FjeS10cnVuaworMzU5MTMgMjgyZGJkOWIxZWQ2YjdhNjkyNTE2Mzk1ZWFmN2RiZTJmMGY3MGYxOCByZWxlYXNlMjMtbWFpbnQKKzM1OTE0IDY3NzIzOTEwODNjOWI3NTFlNDNjZDQ1NDRiZDdkOGNlYmQ2ZTQ4YmYgbGVnYWN5LXRydW5rCiszNTkxNSBkNmRlYWU4YmY3OWJiMDUyYWJkYjNhYTEzMDgzMzIyMTNiZjIzOTU2IGxlZ2FjeS10cnVuaworMzU5MTYgMDA5NDliYzY3ZTQ5YmRlOGZiYzFlYTlmNjY3ZTQzNTI4MGZkMjZkNSBsZWdhY3ktdHJ1bmsKKzM1OTE3IDhiZDMyYzUxNTQ1ZTNkZjgxNGIxNDM1Y2ViZmY5ZmRhNTNkZGI1NzAgbGVnYWN5LXRydW5rCiszNTkxOCAzZWRmOGRiNmY4YmZkOTU5N2ZlZDEwMjkwMDk1MDllODNiMWRhYjY1IGxlZ2FjeS10cnVuaworMzU5MTkgOWQ1ODQ3YjhmMzAxMWI2ZmIxMmUyNTEyY2Q2NzI2MzM5YjE4ZTA2YyBsZWdhY3ktdHJ1bmsKKzM1OTIwIGQzY2E2YmRjYmYzYzQ2Mzc2NzNlOTg3NDhmYWM0NDBiOWRhZmZiZTggcmVsZWFzZTIzLW1haW50CiszNTkyMSAxNjM4NmNiY2FiOTljMWFjMTdiZmI1NjhiYjk3YTgwYTZkNzhhYjUzIHJlbGVhc2UyMy1tYWludAorMzU5MjIgMmQzNDU4NWMzYjk5NDdlNjQ4ZGVhMzgxMThhMzE3ODgxMjkyMDY3OSByZWxlYXNlMjMtbWFpbnQKKzM1OTIzIDM3NTM4YTM2YjZlMmIyYWM4MGNlMGU0MDMzZDllNzc2YjZjM2ZjZjMgcmVsZWFzZTIzLW1haW50CiszNTkyNSBiNTI1NTU1MmFhNmRhNDlmYjYzZjgzY2FmZTQ0NzZhZDNlMTRhMzczIGxlZ2FjeS10cnVuaworMzU5MjYgOTZiNjI2OTliMjE4ZjlkZjlkZGUwMDYzZTg4MTI4MDhhMTg4Nzg2MSBsZWdhY3ktdHJ1bmsKKzM1OTI3IDY2NzJmNzMwOTNkYTMzM2M4NmMxZjRhMGZhOWVlMjZiOWJhZTg1NTAgcmVsZWFzZTIzLW1haW50CiszNTkyOCA3ZTNhMmMyNzRiMzY4M2ZmMjY5OTYwZDZiMzg3M2E1MGM4NDAxMzI1IGxlZ2FjeS10cnVuaworMzU5MjkgNGE3ZjdlODAxNmZjMjZiNWQ1ODQzNWQzNmJmN2IyMDM5MGI1ODUzZiByZWxlYXNlMjMtbWFpbnQKKzM1OTMwIDk0YjQ4NDVlNGRhOGM0OTY0ZTZhMjQ2Y2E1ZDg3OTQ1MGNlODEyYmUgbGVnYWN5LXRydW5rCiszNTkzMSAzMDBkNWQ0NjIzODcyMTVlMjAyOWU3ZmEyN2Q2OWM4NGI1ZDEyODM1IGxlZ2FjeS10cnVuaworMzU5MzIgM2FlMDFhMTEwODAxMjJmYTQ3YzU1Y2UxNjMyYjkwZjRhMDIzOWEwMyByZWxlYXNlMjMtbWFpbnQKKzM1OTMzIGZhNzUzYzE2YzYzMzNiZjNmOTkyZTQzZmMyZWU1YTc1MzAzNWExYTYgbGVnYWN5LXRydW5rCiszNTkzNCAxZDEzNTc0OTA2ZWZjYzcxOWMwMDFhYWJhMzRiNTlkYWNhMTg2MzcwIGxlZ2FjeS10cnVuaworMzU5MzUgNzAwMjNhZjIwODVhYjUwZWMzMjM5Yzg0ZmY5NjUyOWNmNThmZGRhZiBsZWdhY3ktdHJ1bmsKKzM1OTM2IDg0ZGZhOWE2N2RhMTQ2MTgzMjMxYTA5NzA3MDcyMGRiNGVhYzhiYmIgbGVnYWN5LXRydW5rCiszNTkzNyBiNmU0YmYzMzZkYjhhMjQ3NzE1NGE3MGQ5NDc4OTFlZThkMjg3MGM5IGxlZ2FjeS10cnVuaworMzU5MzggMjlhNTlmNjYyZGQxMDQ5MTJlZWUzZTJhNDNlYzA1YzMyZjAzNTk1NyBsZWdhY3ktdHJ1bmsKKzM1OTM5IDBkYTQ0ZWEwOTlmNTY4ZTFlZTQxOGNkNTJiZjkyMjI3ZWNiMzQwYWMgbGVnYWN5LXRydW5rCiszNTk0MCBkZDFlNTVkZWFmNTJmOGRiM2I5YjMzNDNmOTJkZDAwZDNmM2Q0MTExIGxlZ2FjeS10cnVuaworMzU5NDEgYzI1YThjMDRkZTNlNjE1MDk0NjBmMGMxOGVkNWY5M2Q0MzE2ZjU0YiByZWxlYXNlMjMtbWFpbnQKKzM1OTQyIDMwMmQzOTljZmQzN2VlYjFiOTdkYmJjODE5ZTY2MWQzMzE3ODMyYzEgbGVnYWN5LXRydW5rCiszNTk0MyA5NTU3N2I2MzViYjQxOTI4MjJlMzQ4OTU2OTdiOTk3NTJiMWE0OWE2IHJlbGVhc2UyMy1tYWludAorMzU5NDQgNWY0ZjJmNTM2Zjk2MWFiMjAwZGZlNzMyZTRkMjhlOGM0MjBkMWM4MCBsZWdhY3ktdHJ1bmsKKzM1OTQ1IGQxYTk4NzRjMDliNjk0ZGFjMGJjODdmYjBhYjA2NWUxZjY5MjY2YWYgcmVsZWFzZTIzLW1haW50CiszNTk0NiBiOWVkZDM0MThhMzFkOTE2NDhkM2VhZmE0ZTdjYWY0NmYyYzJlMTRmIGxlZ2FjeS10cnVuaworMzU5NDcgYjE2NjRhODAzNDhhZGFmOGFkMWIwZWYwMGFjZTdlYTE4YTA5NmViNiBsZWdhY3ktdHJ1bmsKKzM1OTQ4IGJkYTA2NmM5NmU0ZjFhMjM4ZDNiMWZiZGZlYmNhMDYxNzNkMzUyOGEgbGVnYWN5LXRydW5rCiszNTk0OSBiNWU0MGY1ZDAwMGI2YTczMGIwZDEwNWYwZWQ0NzQwNTIxNDk5NWZhIGxlZ2FjeS10cnVuaworMzU5NTAgYWZmNjlmODBmOTk4MjU0OTM0ZmU5NTBiZGQ5YjY1Y2Q3MWE4MzIyYyBsZWdhY3ktdHJ1bmsKKzM1OTUxIGI1YTFlMzY3M2U1YmUxNTkxNDZjNTE1MGU5M2Q0ZmNhMzRkYTc1ZDAgbGVnYWN5LXRydW5rCiszNTk1MiA5ZTRkMTQ1YmI1Y2M0NjQxNDRmNjk0NWQ1MTM1ZTAxMTExZWQ1MmJhIGxlZ2FjeS10cnVuaworMzU5NTMgMjc3ZDQ4M2Y1OTY4OTYyZGIxZGNiYTZhZGE4NGRlYWE5MmI5N2I0OSBsZWdhY3ktdHJ1bmsKKzM1OTU0IGI1OGQzMGYxMTZlMmE4MjRjZTM3NjcwNGFhNzMzNjQzMzIzNzE3MjIgbGVnYWN5LXRydW5rCiszNTk1NSAzMWJkYmVjOGYyODJjMDZiMWYyYjNkOWJiZThkMTQ4NTdmZDZiM2UxIGxlZ2FjeS10cnVuaworMzU5NTYgNGU1Yjk3OGU2Yjc4MDM2ZDExZDYxNzFmZDY1Y2E2MjNhYTNlNWQ5YSBsZWdhY3ktdHJ1bmsKKzM1OTU3IGMxY2ZjNWU0ODM0ZDE5M2U3NWEyNTBjYjJkYWU5ZmZlNjQ0OWNmY2YgbGVnYWN5LXRydW5rCiszNTk1OCBlMDgwMzQwN2UzNzc0ZTczYzE1NmJlOTk1OTRjYjczNjU3MzVkNDFiIGxlZ2FjeS10cnVuaworMzU5NTkgYzM5NTI3ZTI4MDEwZmMxZWY3MWI4NzEyZmZmZjE1ZTczNTdjMDRmMiBsZWdhY3ktdHJ1bmsKKzM1OTYwIGIwNTZiYmI0ZWRmOTk0ZGIwN2IzNjY0NmE4ZjZiZTM0OWVjZTI1ZDggbGVnYWN5LXRydW5rCiszNTk2MSA4OTlhMWY4OGNjNWYyNDJlOGNjNGM4MDllNDRmMWEzOTczOTFmNTFjIGxlZ2FjeS10cnVuaworMzU5NjIgMzA0YTM3YzJjYjQyNTdiNmVkM2UxN2JiZDkwOWZkMzI3MTBlODFiYSBsZWdhY3ktdHJ1bmsKKzM1OTYzIGFhMjMzMDZhM2YyNjk5NmExZWE3YzE5MzllOWFlNWYwM2EwZTI0OTkgcmVsZWFzZTIzLW1haW50CiszNTk2NCBjZTNjMjc3N2IyMjJmZjU5YWI3YzEwMGQ4MDY2MTExNmEyNTk5OGQwIHJlbGVhc2UyMy1tYWludAorMzU5NjUgMzdjYWMwNjhmMDNmZDQ2ZTAxZGU5Zjg2YTc4ZjA1ZmQ0MzAxOWU4NiByZWxlYXNlMjMtbWFpbnQKKzM1OTY2IDU5YWE1MzQ1OGE5M2I2MjRiMGRkNmM1NGM2MWY5ODJiMGNmOWIwY2IgcmVsZWFzZTIzLW1haW50CiszNTk2NyBhMTA0YWE1NDlhMDIyYTA2ZTIzOWIyMTg3ZmVkZDcwZDg3OGE3MWMzIHJlbGVhc2UyMy1tYWludAorMzU5NjggNWNiMjRkYjhmYzk1YjM1OWM2MjI1YWNlOTFiMGMyNjJjZDM3NDM0ZiBsZWdhY3ktdHJ1bmsKKzM1OTY5IGJhZWRmNWZmYjI2YjRkMmI1MDYzNTFmMjcwZWYyMjA4MTVhOTdiMjkgbGVnYWN5LXRydW5rCiszNTk3MCAwOTJhYzEzYTRjNDBhMmZhMmQxMTI1MDcxNTg4NWMyNjA5MTNhYmI4IGxlZ2FjeS10cnVuaworMzU5NzEgNjVmOWFkOWJjODI5ZGM4YjU4ZWZlYjg1NWVhNTQ3OTY5NWU5ZjI4YiBsZWdhY3ktdHJ1bmsKKzM1OTcyIDBhZmE4MWRiNGNiN2QyNGZmMmQ5OWFmOTNlZDU3OTI3NWE4ZjkwYjEgcmVsZWFzZTIzLW1haW50CiszNTk3MyAyNjY4ODRiMDQ4YmQxMjdjZDM5NDBhMGE5ZmY4ZGVmODNjNTEzMTJhIHJlbGVhc2UyMy1tYWludAorMzU5NzMgYTc0ZjkwODFjNjk3MDg3OGNhYmUxNTFmOTY5NjE3NTg3OTE1NDAwYyByZWxlYXNlMjMtbWFpbnQKKzM1OTc1IDg1MzY1OThjZjA0ZDYzNjlkMzVkMWU2Y2Q0ZDJjMWUwMjgwMWVjZWIgbGVnYWN5LXRydW5rCiszNTk3NiBlZmI4NGVkNzM3N2RkZDZjMzk1ZDRmMGMwMTc1ZjczNTM1Yzc0YWIzIGxlZ2FjeS10cnVuaworMzU5NzcgNTZhNGVjMDY2NjIxZGEzOTA0MGMyNzc3MGVjMDE3OTVmMThjZmExNyBsZWdhY3ktdHJ1bmsKKzM1OTc4IDI4NjJiZjllZjkxM2VmMDViMzkyMzk4YjI3N2RiNTYxZWE0NjQ1NTggbGVnYWN5LXRydW5rCiszNTk3OSA2NzllNWM4ZWZmYWUyMTEyY2E4YTQ4Mzc2MDg3YmUzZWIxYzZlYTljIGxlZ2FjeS10cnVuaworMzU5ODAgMmMxNjljYTVmYTY5Yjg0OWFkM2RmZTQ1MTFiMTZmZDE1NzRhODVmYSBsZWdhY3ktdHJ1bmsKKzM1OTgxIGFlYzljOThhNDdkMmU5NTM2NjI0Zjg3ZTJkOGJlMTc1NGJmNDA2MGUgbGVnYWN5LXRydW5rCiszNTk4MiBjNjU4NTVjNWQ1NmIxZDE0NzFiNmZkY2RmMjlmOTU0NThmMWZkMjIyIGxlZ2FjeS10cnVuaworMzU5ODMgZTUzMTYyMjUyZmJlNTM3OGE1MGU2ZWVhNWE3Mjg3NjQ0NzQ4Y2EyZSBsZWdhY3ktdHJ1bmsKKzM1OTg0IGZhZDUyZmZkODg5MjQzYmExZDBjNWExZGEzNzQ2OWNlMWNmZTBkMzIgbGVnYWN5LXRydW5rCiszNTk4NSAxOGQ2YThmOTk4MjM4NjE0YWU4ZjU4NmZmMGEyNjEyY2M1MGZjNDdlIGxlZ2FjeS10cnVuaworMzU5ODYgNDQ4MjhjYzEzNmUwYzBiZDVkZjJlNTRjZmUyNTEwN2YwMjFlOTE5MSBsZWdhY3ktdHJ1bmsKKzM1OTg3IGY5ZDU0ZTliMzBiYzgxOWY2NTMxZWUxZDExN2I4MzgxZDVjNTMyOGQgbGVnYWN5LXRydW5rCiszNTk4OCBkMDg3YTk1ZTgwMzIzMTkwMmIyOGMxMGUwZTIwYjRhMmU3M2RkYmY1IHJlbGVhc2UyMy1tYWludAorMzU5ODkgNjBlZjFkYjEwY2VmYmIwODIxMTY2NGI4MGMyOTRkMjc1MDY5NTY2NiBsZWdhY3ktdHJ1bmsKKzM1OTkwIGY4ZmZhM2U2YzRmMmRkOGQwMDc0Mzc0ZWEzMWE1NThmNWQxYzlkNWUgbGVnYWN5LXRydW5rCiszNTk5MSBhY2E0NDVhNmJlYjc5MWE3YTUzMmZhNmE2ZjMzMDc0YzkxZDQ2ZjkzIGxlZ2FjeS10cnVuaworMzU5OTIgOTdiOTA4YTk5NzFhNjRmMGQxY2IxM2QxZWVlZjcwZDE4ODk1YzIzOSBsZWdhY3ktdHJ1bmsKKzM1OTkzIDc0N2IyZGM4MjQ0ZmVhMzFkYjM5MTc5N2Q2OWE2NmExODg2ZGM5NjkgbGVnYWN5LXRydW5rCiszNTk5NCBjNzliZWZiM2MzMTRkNWY1YWUxYzI3ZGE2MzI4MTM4YTYyNTJkNmUyIHJlbGVhc2UyMy1tYWludAorMzU5OTUgZTJiODFmMmM4YTcwZGEyNWU3OWEyMzAxMzQ5MzhmMDQ4MDdiNDg1NiByZWxlYXNlMjMtbWFpbnQKKzM1OTk2IDhlZTVhNTZiODAzMTJiY2NhMmQ1YmYxYjM0NGE3MjU0MmZkNmJlNTkgbGVnYWN5LXRydW5rCiszNTk5NyBlYmE2YmFlZWE0ZWFhZjg5Yjk4YTgyZTE3MDRiNzkxOTQ1MjFmZDM0IGxlZ2FjeS10cnVuaworMzU5OTggZDM2MWMxMzVmYTc0ZThkOGZmNTMwZDViYWY0ODBiNjQ5OTgwYmQyNSBsZWdhY3ktdHJ1bmsKKzM1OTk5IDA0MWY4OWM5OGMzNWJlZTkwMWUzOGZjNGUwNmNiMDZiNmY3NzUxZDIgbGVnYWN5LXRydW5rCiszNjAwMCAyNzVhNzdmOWE1MDA2NjQzNDE0NWNkZDhlYjdmOWNkYWY1NjI2YmJmIGxlZ2FjeS10cnVuaworMzYwMDEgNTliYjNiMWQ2MDU5ZDMyNjAzODRkNTRjYTU2NjRiZGNlZWEzZWIxNyBsZWdhY3ktdHJ1bmsKKzM2MDAyIGYzZDA1NjhjOTQzMmYwYmFhZThmNGMxZTU2YThjOTIwYWQ3YjVmNjAgcmVsZWFzZTIzLW1haW50CiszNjAwMyAyMjY2MjU4OWM0ZTIwOTg5YzJmMDBkNTgzZmJiYWZkMmQzYWI0MjE3IGxlZ2FjeS10cnVuaworMzYwMDQgYTc5OWIwZDFjNTY4N2U4Njk5ZDY3ZmZkZTM4NGY0M2IzZGJhNWViZiBsZWdhY3ktdHJ1bmsKKzM2MDA1IGYxNTliMTVmMWY1Y2JhZmVmODk5ZmM1YjQzZDFjOGRmMTM5OWVjNWYgcmVsZWFzZTIzLW1haW50CiszNjAwNiA3YzQ2MWFlZTc0MWJlYTFiNjU2YzlmMTU5MjM1YzU4NDFkOGI0MDkzIGxlZ2FjeS10cnVuaworMzYwMDcgYWEzOWZhYzJhOWZkZjlmYTdhMGU0ZjhjMTNmMGFiMzZiMDQyOGYzNiByZWxlYXNlMjMtbWFpbnQKKzM2MDA4IGRmOWJkMTI3NzMwYWRjOWU4MmI2NzhjYmE5MjY4MDNlMDJjZWU1YjMgbGVnYWN5LXRydW5rCiszNjAwOSA3MzBhMDNmNWQ4YjRkZTJkMjA0ZGY3MTQxYmNhNjU0ZGNmMzFlODhmIHJlbGVhc2UyMy1tYWludAorMzYwMTAgYzdkOWJlNzNjN2RkYjMzNWE4NWY0OTM5OThhYjBiYmRhM2VjZjMxMiBsZWdhY3ktdHJ1bmsKKzM2MDExIDE4NWY1ZDZhM2E4OGE5YTEzYTU3ZmIyMjNjMmFjNTVhOGU0NDhiMDcgbGVnYWN5LXRydW5rCiszNjAxMiAwM2M4OTU4Mzk5NzljM2RjZmEzMTJmZDI5NWZmMDI0ZDk3NzVjZTE0IHJlbGVhc2UyMy1tYWludAorMzYwMTMgYWI1YzA4MjU3YWQ3YjRlNzc5YzVkMjJhNTQ4YzZjOTQwMWNmYmJkNSBsZWdhY3ktdHJ1bmsKKzM2MDE0IGIzYzk4MWVlOWFlOTU1ODFmYTY2MDJlNGY2M2ZkMDNkZjM2M2Q3NTEgcmVsZWFzZTIzLW1haW50CiszNjAxNSBkM2FhZDM3N2E1YTkwZDlmZjBiYThjMTM1YTkwNDMxYTRlMmE0YmJiIGxlZ2FjeS10cnVuaworMzYwMTYgODgwNzFkMjA4YjM0YWE0ZWM0MzJiZGE0M2UyMGRmMGM1M2Y0Mzc2ZCBsZWdhY3ktdHJ1bmsKKzM2MDE3IGFiNTE5ZGUxNzZiYjk0OGY0NTVjOTEwMmVkMDBmMTdkZDdkNzA2N2YgbGVnYWN5LXRydW5rCiszNjAxOCAzYTg0ZTIzYjA0MmY0NWUwNWM3OGM4MzJiNmFlMmJkZDU0ZDBkZDVhIGxlZ2FjeS10cnVuaworMzYwMTkgNmYyNjVmMmNjYjMzY2FiN2UzZjMzZTI3MTY0NGJhZGU2MTM2NGM5MiBsZWdhY3ktdHJ1bmsKKzM2MDIwIDY4MjIwMjZkM2MzYjQxOWE4YmRkMTM3Njc2MTk3MGE2ZDA4YTEwOTEgbGVnYWN5LXRydW5rCiszNjAyMSAyMmZkYWU3YmJhMWFmNzA1MTEyMmY5M2NiYWNjNDcyZWVjYWE5OTM2IGxlZ2FjeS10cnVuaworMzYwMjIgZTYyMWUyYTFhYjMxMDJkM2Q3MzIwMjEwY2M0NDkwYjU3YmMxYzFhZCBsZWdhY3ktdHJ1bmsKKzM2MDIzIGU1YjA0Nzc2NTI4NWIzNzI4NWI3MzU2ODgxMTQzODBlYzgzNDY3ZTYgbGVnYWN5LXRydW5rCiszNjAyNCBhYmQ0Yjc5NTUxZDJlYTkxZmE5YmE5MThmMTRiNmI3YWFmMmQxZDIwIGxlZ2FjeS10cnVuaworMzYwMjUgOWEzOTAxYmY2MjIyZjk5MTljMjA2YTZjOTk3ZTc4MmU1YzIwMTZjNCBsZWdhY3ktdHJ1bmsKKzM2MDI2IDZmZmRkYTRjYzIyMjE1YmMzNmJhMWY4YjhhZmExNGIwNjAxNWRlN2EgbGVnYWN5LXRydW5rCiszNjAyNyA1ZDk0MmJlZGQyOGY5M2I2YjNiMjI5ZjBjZjFkMWQ2NzViNTQ2NWZmIGxlZ2FjeS10cnVuaworMzYwMjggYjlkM2FhM2NkZThhNWMxYTQwMzdiYzI2M2IyZWU2N2NlZTg3MzYwYyByZWxlYXNlMjMtbWFpbnQKKzM2MDI5IDM3NzFlYTlhOTNhYWRhNzJlZDAwOWU0ZjZkYTkyZjYxYmUzM2IwOTkgcmVsZWFzZTIzLW1haW50CiszNjAzMCA4NGU4ZmU5MTI0NDBkNGIxYjk3NGJmNDRiYmY3NTY2NTM5NzQ0ZjBhIHJlbGVhc2UyMy1tYWludAorMzYwMzEgZWI0MWE0ODljYzJmNzhkMWQ0MTIyN2NmZGZhMTllMmNlZTFhOWNkNiBsZWdhY3ktdHJ1bmsKKzM2MDMyIDAxMDU3ZTRmMGE2MmQwZDFmZWRlNmMyZWMyOWNmMDE0OWY4ZTdjOTEgbGVnYWN5LXRydW5rCiszNjAzMyBlYjBmODcyNjhkNzBhZTFiMjg3NjYwMzY3MmFmMjkxMTljNTZjYTQ4IGxlZ2FjeS10cnVuaworMzYwMzQgNzBkZWUyYjE5M2Y3ZDUzMTE2NTY0NWFkNmRjZjQ5Y2UyNjBhYWIzZSBsZWdhY3ktdHJ1bmsKKzM2MDM1IDY0NzhlYjZhZTNjMDFlODQ2OTFkOTU0YTk0MTE5Y2QyMWI2ZmU0NzQgbGVnYWN5LXRydW5rCiszNjAzNiBiMDBiMjZjYmMzMDNhZmUxYTFmNzJhYjY5M2YyYzQ5YjEwZWFjYWVmIHJlbGVhc2UyMy1tYWludAorMzYwMzcgYzA4NjM2NjQ3OWIxZTAwYjZkMTBlZWMxZmU1ODg5MWMxODU2MjJmOCBsZWdhY3ktdHJ1bmsKKzM2MDM4IDkxZWFlMWU5MjU3ODFiNTRjMjM1ZDJkMzQxZDQ1Mzk3OGMyMDkwZjIgbGVnYWN5LXRydW5rCiszNjAzOSBmZGY3NWVlZjZhNWMzM2E4ZmYyYWM3YmFhZjRlYjA0ZTM2NTJiMDkwIGxlZ2FjeS10cnVuaworMzYwNDAgMmNjN2ZmNDJiOWEzZDExNjI4Mzk2OWZkNmM1MGUyZmE1OGYxMjViNiBsZWdhY3ktdHJ1bmsKKzM2MDQxIDNjMjE1ODg3NjE5NGExYWNjYTJjMmQ2MjZkOTVkZGE3ZDE1OWE0ZDQgcmVsZWFzZTIzLW1haW50CiszNjA0MiBlZDIyOGU4YTEzOWZiOTA4OTdjYjFmOWQ3OGQzN2I3OTk2ZGIzOWY1IGxlZ2FjeS10cnVuaworMzYwNDMgZWZjYTUxZWY3ODlkYWY1YTRjYTBkZmVmNDE1YzM0OTViMjk3MGUzNSBsZWdhY3ktdHJ1bmsKKzM2MDQ0IGIxMDg3ZTFkNDQ3OTYzYWNlYjk5NzMxNDZlODdhY2FjMjBkZTdkOTcgcmVsZWFzZTIzLW1haW50CiszNjA0NSBmZjY4ZDZhNWE0NDFmNmJkMmY1OTUzMzU3YzQzMzc5NWYwMjM1MzUyIGxlZ2FjeS10cnVuaworMzYwNDYgMTk1NGI3ZWRiZmU3MDAwMzZlYjZmNTQzZjFkMTM3YTFiY2M4MThiOSBsZWdhY3ktdHJ1bmsKKzM2MDQ3IDk5NDI0NjA0ZDM2YTM3N2QyOTFkZDExNzk4N2I4NjZlNGE5NTIzMGEgbGVnYWN5LXRydW5rCiszNjA0OCBiNzkxZjY1NTRkMjhmMmVlYWNkMmQxZjAzZDUwNmVjOWVlOWMzYzhiIGxlZ2FjeS10cnVuaworMzYwNDkgM2JmZTJmNDJiOGY5MzgzZDYwNWFmYTU0ZWE4NWJlZTk4ZjdmMzcyNCByZWxlYXNlMjMtbWFpbnQKKzM2MDUwIDI3OTY3ZmJiYTQ4ZjMxZDRhODI1NGI4NjAwMDIxZGZhZjY3NGU3ZGEgbGVnYWN5LXRydW5rCiszNjA1MSA2ZmM4ODI3YzQwM2MxNjM0MThiMGViNDg4M2MzMjIxZTk4YzljMTdmIHJlbGVhc2UyMy1tYWludAorMzYwNTIgNTI1YWJjNjZiY2MyOGMwZmI5NDMyYzliZThiMzQ3OTdmNGE2NDhiMiBsZWdhY3ktdHJ1bmsKKzM2MDUzIDA5MDEyYzZiMjA2ODA1YzNmMzVjNDc5OGQ5YWNmZjQwNmM1YWJmMWYgbGVnYWN5LXRydW5rCiszNjA1NCBlZDM3NDZkYWQ3MDVhMmI5NjZlNTNiYWViMWE3NTZjZmYxZDg3YjQxIGxlZ2FjeS10cnVuaworMzYwNTUgNmMyOGFkODA0N2YyZGZiYTkxOGVlM2U0YzVlZTQ3MmVhZGJiYmIzYiByZWxlYXNlMjMtbWFpbnQKKzM2MDU2IDhjNDA3OTA2MTcwODU4YzVlNzVhZGI5NTVkMWJjYjYxNDA1ZTk0ZjYgbGVnYWN5LXRydW5rCiszNjA1NyBkMjQ0YjUzZWNmYmViZTBjNWU2ZTcwZWNiOWQzYjk3NzgwYWMwNTM3IHJlbGVhc2UyMy1tYWludAorMzYwNTggOTY4OWRhMDAxMTk3ZmE5ZWVlOGI0YmM1ZDk3ZDExYTE5NmMxYmU0MiBsZWdhY3ktdHJ1bmsKKzM2MDU5IGU4YjRmNTRmN2QxOWVjNjc2ODhiODAyMDQ3ZmY3MDQ3NzRkNjcyMDQgbGVnYWN5LXRydW5rCiszNjA2MCAzMDBkYjgxZTJlNGFjYmVjMjIxY2EzYzM4MDEwOGQ5N2UxYWMzMWY4IGxlZ2FjeS10cnVuaworMzYwNjEgYTZlMDQ4NDcyODBhMjZkZWE1ZTY5ODk0M2U4NGY5OGJiODlmODY5MyBsZWdhY3ktdHJ1bmsKKzM2MDYyIGI5MzQ1YzM1NWYwNGI3MTk3NzM0ZTMwZTkyNmYxMTZlNDllNzIwNjMgbGVnYWN5LXRydW5rCiszNjA2MyAwYmRiNDlhNWE4ZmE2MzM2NTJjNDA5NGRiOGI0MzczMDEyMGNkYTVlIGxlZ2FjeS10cnVuaworMzYwNjQgNjk0NTI4ZTg1YTA0ZDFmYmE2M2U1ZWZmNmFhMWUzZjViMzU3NjM0MyBsZWdhY3ktdHJ1bmsKKzM2MDY1IGM4YTIyYjVjZjU4YTU4YmFhMmE2ODU0OTcyNTQyZTRkZmM2NDcyMDggbGVnYWN5LXRydW5rCiszNjA2NiAzZDY0MjRjMDM4ODgyZWQ1OTYyZTIxNmE4MTJiY2RmMDQxYTViMjdjIHJlbGVhc2UyMy1tYWludAorMzYwNjcgNzBjZmUwNjVlYWM1OTI2NDZhMmFlYmJhMzI1YjNkYzIyODYwOTNjNCBsZWdhY3ktdHJ1bmsKKzM2MDY4IGE5OGY1MGU1MGJlZmExZTUyYjA1MzAxZWZkMzRhODNjN2QyZmY3OTcgbGVnYWN5LXRydW5rCiszNjA2OSBkZjQ5NDNkMjRjYjZkZGRlNDc3MjA2NmNjZjM4YmJmYzkwOGFhMWQ1IGxlZ2FjeS10cnVuaworMzYwNzAgNzQwOWMwYzM3MGUyMTMyNThkZjgzYzY1ZDBhZDg5ZWZjMjY5ODYzMiBsZWdhY3ktdHJ1bmsKKzM2MDcxIGVmY2EzNTNlN2ZkNjc1ZjcxMTc4YWQ4YzExNmFkMmY5ODE4Yzc5YTYgcmVsZWFzZTIzLW1haW50CiszNjA3MiAyOWY4NzkzMmM3Yzc4YmNhMzY3YmI3NTdhOTU0NWE1OTQzYmI3NmNlIHJlbGVhc2UyMy1tYWludAorMzYwNzMgYTcyYmM0MjU3MzM2NTFlYjYxNDk1ZWUzNWVjZjI0YjJmZjdiYzhlMCBsZWdhY3ktdHJ1bmsKKzM2MDc0IGVjNmY5YTE5MDgzMTkzMWNmYWRkNTU3Mzk2NGQ4MzgxMDA5ZDQ1ZGEgbGVnYWN5LXRydW5rCiszNjA3NSAxMGEwMWNlM2VhMGFlMDFkYzM1NWYyN2VmZTExY2ZiMjkyNzY3MWE3IHJlbGVhc2UyMy1tYWludAorMzYwNzYgMzYzNDQxOGE4NThlODI3M2I0YTAwYWY3NTlmZDM4YTM5MjQ1N2M3ZCBsZWdhY3ktdHJ1bmsKKzM2MDc3IDJmNWYzOGY0YmMyYjkwMDg5Yjk1NjczOWFmMTg2ZDEwOWM1MTY4ZDEgbGVnYWN5LXRydW5rCiszNjA3OCA4YzAzOTRhZWM2ZGNkNDBmZGMzZTgxM2FhOGFlZjA1NWQ2NjVjNGI3IGxlZ2FjeS10cnVuaworMzYwNzkgM2RmZTgxYWMwZTdjZDBkZjRlMjMzZmJkMTRiMWE2YmI3YzM5Y2JiNiBsZWdhY3ktdHJ1bmsKKzM2MDgwIGE4MGVlMjAwNGU2Y2E0OTJiMGI5YTJlZThlNGM5Mzk0OTdkMDk2NTIgbGVnYWN5LXRydW5rCiszNjA4MSBjZGFkMDA1YmMwMzA3NzVmZWY3YmFjNjczYzM5MmQ2NTY5NDM2Y2U4IGxlZ2FjeS10cnVuaworMzYwODIgY2I5NTdlNjVmNDQ0OWI4Njk4YjQ5NDBkZWRiNmE2MjA3YjBlNGMyMiByZWxlYXNlMjMtbWFpbnQKKzM2MDgzIDM2Nzk4ZjFjOGU5YTFhNjZmZGQ3NzgwNWVmOTc2YzFhMTQ4ODMwZjggbGVnYWN5LXRydW5rCiszNjA4NCBiOWM5ZTdlOGJlN2Q1NGZiODFhMjE5NWJhODgwNzVmNTJjZTI1NzMyIGxlZ2FjeS10cnVuaworMzYwODUgYWM0ZDQyMGNjNzk5ZTVkMjY2YTdmNDZhN2RmNWE3NWQ3MzcyZmE4MiByZWxlYXNlMjMtbWFpbnQKKzM2MDg2IGJkZjIzODc5ODk0OTllZGYwNjc0OTZkOTBjZTBmZGNjODAwMDZhMDEgbGVnYWN5LXRydW5rCiszNjA4NyBhODljYzUzNWI0YzU3NTVhYWM4NmJiMWVhNDc1MGE0ZDQ0Y2YwZGRlIGxlZ2FjeS10cnVuaworMzYwODggZWVhYTdmYjJmMTZmN2EwZWQzZmEzMmJlZGY0MWEzM2RiYTBiMmQ3ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDg5IDhlNTk1OGM5M2M4ODIxNWQ0NTg3OTJhNmFmNThlMmE4M2VmZDQzMDEgbGVnYWN5LXRydW5rCiszNjA5MCA4ZWFiNzY1NTYwMWZlZDEyMTAwMGRjMGVjNDRhZmM2MGJhYmIxMjI0IGxlZ2FjeS10cnVuaworMzYwOTEgNDJiYjFkY2RmMTZlNDFiZDMzMmUwMWQwNzI2ZGYzNjM1N2Q1OWMxNSByZWxlYXNlMjMtbWFpbnQKKzM2MDkyIDQ3ZDY0Y2IwMTgyMDVlYmVkNDFiYzlhMmM1ZjIzZWE5NjA4MmFlN2MgbGVnYWN5LXRydW5rCiszNjA5MyAwMTRiMGQ4NDQyMmY3YjYzMWUwMDNmMjc5ZDA0MDM4OWUzY2Y2YmVlIGxlZ2FjeS10cnVuaworMzYwOTQgOTUyODdjZGRiYzFlY2E1NmM5NmNlNzgwMDFiMmQ5OThlNzczMmExNCBsZWdhY3ktdHJ1bmsKKzM2MDk1IDYxYWY0NzIxM2ZlNjY3NGM4MzYyNjcxOThkYTZmZTQzNGMyYzAzNTMgbGVnYWN5LXRydW5rCiszNjA5NiAxZWVhYTUwOTNmYzA0MTExNjA0MDJhN2QwMGI0MTU0MGI1MWU0ZDg4IGxlZ2FjeS10cnVuaworMzYwOTcgYWRiNTlkODliMDk5MTYwNTYzYTQ4NzNkZDk1Y2E5NTliMDVmMTYyNiByZWxlYXNlMjMtbWFpbnQKKzM2MDk4IDdlNzI3M2M4ZDIxZWI3YjY3NzM3MzZkYTAzYmRiZDQ5NzA1YmFmZTMgcmVsZWFzZTIzLW1haW50CiszNjA5OSBjMmJjMjQ4ZDNlOWM3MGI1NjViZjYzMGQyODY4OTQ4OTUxY2ViMzYzIGxlZ2FjeS10cnVuaworMzYxMDAgYzBkMTI2MWRhODQ4ZDYxZWRjNzFkZDg4NmFkNmY4NmIyYzUyNjUxNCBsZWdhY3ktdHJ1bmsKKzM2MTAxIGNiZmEwNDI4NTUyOTBhMjM4MWMxMDFjZmIyZmJiMmQxMjM2MGRmMWQgbGVnYWN5LXRydW5rCiszNjEwMiBiNjBmYzVlZmYxNTU5NGQ3NzUwNGQwZmUzMGQ3MzllY2M1YWI2ZjE5IGxlZ2FjeS10cnVuaworMzYxMDMgZmQ1MmI2ODA3OTI0OGNiMTk5MDc4MzllNjEyODc3ZGIzYjA1MDllYyBsZWdhY3ktdHJ1bmsKKzM2MTA0IDZkYmZlZTJkZWQ4OTU2ZTZmNzk1NjNmZWQ5YmE2NTUzOTRmMGVmODYgbGVnYWN5LXRydW5rCiszNjEwNSA5NGI4NDFhZGY0ODViYzk4YWFlOGRhNGY0NGQ2ZWUzZjk4NmM3ZWJhIGxlZ2FjeS10cnVuaworMzYxMDYgOTEzODhjODQ1YjE2OTVmZTQ2MzBiNjUzODI1NjRhNTMwN2E4MTdiYyBsZWdhY3ktdHJ1bmsKKzM2MTA3IDg4MmNmMTEzNzJhM2U0YmRlNDY2NDUzZTY1OTVkMTRhMTZmMzg1NjEgcmVsZWFzZTIzLW1haW50CiszNjEwOCA4NTRhMjQxN2QzNWViNTE4YWRhZWM2NmU1MTA0ZTQ0ZmRkNGNiN2Q4IGxlZ2FjeS10cnVuaworMzYxMDkgYTAxOGFlMzg2Zjk5ZTFhNDlkMTc0YzE1ZjYzYmQxY2MzODY4YzhkYSBsZWdhY3ktdHJ1bmsKKzM2MTEwIDVjNzliNGYxM2IyNmY4MjkwMGRhOWVmMTgzNjc0ZjY5ZmZlY2U1NzcgbGVnYWN5LXRydW5rCiszNjExMSA3MWIzZDJiYmU2M2JmYTc4NTQ3NjkyYmZlNzhkODlkZWE4MzllMjViIGxlZ2FjeS10cnVuaworMzYxMTIgNDBjNTI0YzFjMGZlZmVhNjdlZGRmZThlNGQ1N2Q0M2RhMGFhNjYwOCBsZWdhY3ktdHJ1bmsKKzM2MTEzIGUxMzQ1Y2UyNzVmNzlkODM0NzI4ODVlYmZhMjM5YWQzNTViNDI2NGIgbGVnYWN5LXRydW5rCiszNjExNCA2ZDdkMDBiZjFhYWU1OTZlZjY2OTVhYjIwNTFmZDJjNzQ4ZDdjY2JlIHJlbGVhc2UyMy1tYWludAorMzYxMTUgODJmZTY4MzJlNTA1ZGViMjRhNzdiNGVhNDViYWI3ZGVkMjRkZWQyYiBsZWdhY3ktdHJ1bmsKKzM2MTE2IDhhY2Y0MjQxZWU5NGY1Y2MxMWYyYmY2NjBkZWY3ZDZjNmQ1NzJjNTEgbGVnYWN5LXRydW5rCiszNjExNyBhYTBjODRkMWYwNjc3ODY4ZmM3YmQ1ZGQxOTVmMjZjMjk1OTM2MDQ3IHJlbGVhc2UyMy1tYWludAorMzYxMTggY2Y4NGRiYzZhODgxYzdiMzFjMjdiNjIxNzk5MGIzMDc0MDA3YWYwNCBsZWdhY3ktdHJ1bmsKKzM2MTE5IDI5ZDc2MWM1MTAzZTc3YjUxMTJiYjgwZjhkZTFiMzc5ODFkMjlhZTEgbGVnYWN5LXRydW5rCiszNjEyMCA5MmY1OTdhMDU1ODE1ZWUzZWFlYzNhMzllMjQ0MjlmMjY2OWQ4MDc2IHJlbGVhc2UyMy1tYWludAorMzYxMjEgYzg0ZmQ2YmU1YTE0ZjQ0MzYxYWRmYTRkMGMwM2IzMjI1OGQxYjA0ZiBsZWdhY3ktdHJ1bmsKKzM2MTIyIDQxYzU5ZDgwYmJjNWY2ZmJjYmIyYzJiMzhiYzZjYTViYTdjMjcyN2EgbGVnYWN5LXRydW5rCiszNjEyMyBlMTk2YjgyM2U2YzViYWQxZmFhYWVhMDg3Yzk5YmY4ZWYzZmMxMzhhIGxlZ2FjeS10cnVuaworMzYxMjQgYTBkOGIxNDU2ODE5MzE2NmM4NmE0YjM2ZDc4NjM5NjNiNjA0OTY4YSBsZWdhY3ktdHJ1bmsKKzM2MTI1IDE2YWNjNjFkMzNjMDJkNmNjODYxZTYzNzIxMGIzMDkyZTZiYjVmYzQgbGVnYWN5LXRydW5rCiszNjEyNiAxMzY1NmQ1OGQ0NTAxNDA1OTRjZjdkYTc4OTU4ZGIwODY5YjEyZmUwIGxlZ2FjeS10cnVuaworMzYxMjcgY2VkYzk1NDU5NjM2ZDUzMmQ3NWUwNTFhZWUwNDFlNTkxMGVhNGYxZCBsZWdhY3ktdHJ1bmsKKzM2MTI4IGVjODhmMjc4YTFhZDQ5OTA5ZTg4NmIxNjFmZjBiYzhkNzY1ODhhMzYgbGVnYWN5LXRydW5rCiszNjEyOSAzMjE5NzM3NTEyOGUyMjY1ODhjMjMyZDI3ZmY1ZjQyY2U5ZDY1NjE4IGxlZ2FjeS10cnVuaworMzYxMzAgZmM2YTczOTA1ZTZmMzhjOWQ0N2EyOWVhMTU4NTgzMThjN2U2ZmVjZSBsZWdhY3ktdHJ1bmsKKzM2MTMxIDE5MTg4ODdkMzg3YjAxMDRlM2YzYzNiM2E3OTM1NmU5NDk3NWE5NWMgcmVsZWFzZTIzLW1haW50CiszNjEzMiBiY2QyMWFiYWE1YjRmMTViODc4YjEyOTdjMjE3MjAyYTdlOTRhZDI0IHJlbGVhc2UyMy1tYWludAorMzYxMzMgNDMwMWVjYmViM2FkZmE0MTM2YzA5ODM0YzhmNDE3MzRiY2ZkNzE2MyByZWxlYXNlMjMtbWFpbnQKKzM2MTM0IGZjNDc2MmViYmUyY2Y2NzM0NzJkNmJhOWFmZDQwNWI0MmI1Mzc3ZjMgcmVsZWFzZTIzLW1haW50CiszNjEzNSA0MzllNzFhNGU1NTQ2ODU0YzU0Y2Y4OWNiNWQzYWEyYzc1ZWFiODUwIGxlZ2FjeS10cnVuaworMzYxMzYgNDllNzQxM2NkOTFjMGU1ODg2MzlmMjZjZTQ4NTU4NzAyNWVjM2UwYSBsZWdhY3ktdHJ1bmsKKzM2MTM3IDllNWFmNDVjZWZjYjVmNDEyYWMxNjk3ZmMwMTQ4YzQyMDdkODgwYzMgbGVnYWN5LXRydW5rCiszNjEzOCBkNjljODA2OGVhZTYxY2VkOGU3MTRjNTAzYTc3NDE0ZDAwOTQ0YjExIGxlZ2FjeS10cnVuaworMzYxMzkgNDE4YTBjNmJkYzdkNGEwZWRmYTQyZDNiM2NmZGE5NWI5ODlkMjU2NyBsZWdhY3ktdHJ1bmsKKzM2MTQwIGI5ZGU2YjY2NTI3MzZkNjAxNWNiNzhhYzc0MDAxOGFkZGU3NzU4ZmYgbGVnYWN5LXRydW5rCiszNjE0MSA4NzMwMmFjMDcyNTUyNDM1MTkyYTQ4YjBiZjVlZTM3NDVmYjk0NTYyIGxlZ2FjeS10cnVuaworMzYxNDIgYjBmNDU0ZjU1OGU1ZWIyZmE2ZGM2ZjA4NDFmNDUwOWI1YzUxMjZkYiBsZWdhY3ktdHJ1bmsKKzM2MTQzIDUwZjNhNTUwYjRmZTZhZWYzM2ZkMmE3N2NjMDBlNTczZWY5OTk0YWIgbGVnYWN5LXRydW5rCiszNjE0NCBjMWZiYmMzZWVkMzllNWZlYzY2OTczNWZiOWYzZTIwZjJmM2M0OGRkIGxlZ2FjeS10cnVuaworMzYxNDUgYjA1NGNmZjdiYjg2ZDZmMTI3YzA2ZTM0MDhkNTIwY2NjMjg4NmM4ZSByZWxlYXNlMjMtbWFpbnQKKzM2MTQ2IGNmMjhmNGE2ZTY3NjE4YTVhNzdmY2YzZjhjNWM1MjNkZmE2NTE2OWIgbGVnYWN5LXRydW5rCiszNjE0NyA3YTE5OGQ5YzkyNjEyZDI0NDM1NjNkNWQzMWJmNTUyM2FiZGViOTVmIGxlZ2FjeS10cnVuaworMzYxNDggMzE1MmI3NDdhMmU0NjExYjMzZmZmMjViZDUxNjViYmFlZDE3ZTc0MSBsZWdhY3ktdHJ1bmsKKzM2MTQ5IGY0OTQ3MTk1MzY4OWEzYmY4YjRmNjQ2ZTg1MTQzNDRkNWZhNjM0MDkgbGVnYWN5LXRydW5rCiszNjE1MCA2ZmVhZDVlYTRiYmEyMzcyNjJmMGIwODRlMWY2ZmFhMWUwYzg2NzJjIGxlZ2FjeS10cnVuaworMzYxNTEgNTQxMzI3Y2I4ZjhiZjZiNTU3MTU0YzI4YTIzNzQyNWQyY2QyY2E4YiBsZWdhY3ktdHJ1bmsKKzM2MTUyIDIyNTNhOGMyZWE2MmRjNWQzZmZlNTc2ZTgxNzZlZGU2MGViY2I4NWEgbGVnYWN5LXRydW5rCiszNjE1MyBmMGViNzc3OGExODMwODNmMGZlZGE4ZmYzMjZjYzYxNTk3OGM2NTAzIGxlZ2FjeS10cnVuaworMzYxNTQgNjNlOWU1YTIxNjBiNWRjOWJiYWZiOTgzNzRhMDE2ZDQ4NDQ3MGM1NCBsZWdhY3ktdHJ1bmsKKzM2MTU1IDQ0NGZhNWQ1MGMxNGQyMGUwYThlMmJkN2E2ZTU0MTIwYzYxMWM3MDMgcmVsZWFzZTIzLW1haW50CiszNjE1NiBjN2RjYjA5NzQ1ZDM1YjQ5YmJlYWI5MTU3YWJiNmRkNTQwY2JjNjQ0IGxlZ2FjeS10cnVuaworMzYxNTcgNmU0ZmU1NTYwZDgxZDQ4YWM0MWMzYjBjOGJkMjkxYThjYTAxZTQ0MCBsZWdhY3ktdHJ1bmsKKzM2MTU4IGJjOWFlNDRiMmNlNDFmYzNkYjVmOTIyZWYyOTNiYTM2M2YzYzE3ZTYgbGVnYWN5LXRydW5rCiszNjE1OSBhNjI3ZDk0OTMxNDk1MzM5OTlkMWY0NWUzYWJhYmNhMTRiOTQxZTA1IGxlZ2FjeS10cnVuaworMzYxNjAgNDA4YTQwZTY1MjQ3Y2QwYTc3MmU0Zjk5M2I1NTY3ZTJmZDk4NDFlZiBsZWdhY3ktdHJ1bmsKKzM2MTYxIGM3ZGE2OTkwYzRlZDliODg3ZTM0NzljMzNjYjZkZjI2MzdjMmE3OGEgbGVnYWN5LXRydW5rCiszNjE2MiA1ZDI3MjY5YzllMzNjNmEyOGQ4MzNmZDZiYjFmMDY0N2YzNzViNmI2IGxlZ2FjeS10cnVuaworMzYxNjMgYzlkYjc5M2NhYTgwYTI1NDk0OGRhNzlhZDYxNWIwNWM4ZTgxMzFlYyBsZWdhY3ktdHJ1bmsKKzM2MTY0IDU0YjI1N2U1NWY5OTE1MDE1NTk0OGRkM2RmZmJkNDFmNTgxMGNjNDYgbGVnYWN5LXRydW5rCiszNjE2NSA3NDgxMjllNmUxMDgyZjMzZGYxZTc4YTVjYjYxZjE4YzEzODNjZjdmIGxlZ2FjeS10cnVuaworMzYxNjYgOGIyZGY5YTA3Y2Q3MDRkZDZmZjZjNzk1OWRlNzlkMTk2ZTk4ODY5YyBsZWdhY3ktdHJ1bmsKKzM2MTY3IDA0MTMwMDVmYzBiMmNjYmIxYmNlODk4NjcxOTg4MTRmODYyYzJkNWMgbGVnYWN5LXRydW5rCiszNjE2OCBlOTUwYmZlMTg1NmUyMGY0MjcxMDMwMjkxZGI1OTBhYTk2NzRkMjdiIGxlZ2FjeS10cnVuaworMzYxNjkgOWQ4NjU1YjQ3NWRiNDhkMDQ4YzNmMWE5ZTZhYjJiMjA4ZDhhYmQwZiBsZWdhY3ktdHJ1bmsKKzM2MTcwIDQ0ZThlODRmMTI4MDgyNTJkNGU5YTUxNDY2ZjI5YzNhNzQwYzZlYWIgbGVnYWN5LXRydW5rCiszNjE3MSAxMWMzMWE5OGRmZDY5MGE4NTk0NWI5N2ZkZTY4MDIzYjBjOTRmNTI5IGxlZ2FjeS10cnVuaworMzYxNzIgMTNjZTQ0Nzg0NWJjYmQ0N2JmZWJlZDhiZDZlMDBhYmUyNzk1NzdhNCBsZWdhY3ktdHJ1bmsKKzM2MTczIDM0OGRiNzdhMDdlOTE4YzhjNTZiOGY1YjE3MDdlYTlhODU5MDg0ZDUgbGVnYWN5LXRydW5rCiszNjE3NCA0MGFjYjY4YWQyMjQ3NzNiOWY4NTdiYTIwYTZjN2FkMjNlZmRkODdkIGxlZ2FjeS10cnVuaworMzYxNzUgNTgxYThhMTI4ZTExY2ExNTM2OWExZDE3NjIxYjUwMDVlOTI5YjIzOCBsZWdhY3ktdHJ1bmsKKzM2MTc2IDEyZjI0Y2IyNzM4M2M5NzFiN2MwMjY3ZjE1YjQxMTJlNzAwNWQ1YzIgbGVnYWN5LXRydW5rCiszNjE3NyA2MTE4MGMzMWQ0YmRiM2VhYTUwNTVkZDQxNWUzOGU2YWMzMTFiMjNlIGxlZ2FjeS10cnVuaworMzYxNzggYTQ2YmRlOWUwYzc0YmI3NjFkY2U2ODQ1NDc5OGUyMjY4MzliNWEzZSBsZWdhY3ktdHJ1bmsKKzM2MTc5IDZhYjVlMDUyNmEzMmFiZDQwMTczZTQ1Mzc5NGEzOGUzNGFhZDBhNDQgbGVnYWN5LXRydW5rCiszNjE4MCBlNWJjOTQ3YzQ0Y2FlYmMwMjkxNzRiYzhlMmM4Y2YwNzFiMWUzOTg5IGxlZ2FjeS10cnVuaworMzYxODEgODZmNTk2MmZkOWI3ZWM2Y2I3ODQwMmZhNzYwNzQzOTBiNjljMGQzMCBsZWdhY3ktdHJ1bmsKKzM2MTgyIDU1YmE1MWJlZjBhODFhMDQyOTRlZTJlMjYwYTAwZjE3MDNkNzQzYjYgbGVnYWN5LXRydW5rCiszNjE4MyBhN2Q2ZmMxN2YyNTc1NTI3NjI5NDViYzI1MGVkZmI4NzI4YmMwOTNjIGxlZ2FjeS10cnVuaworMzYxODQgYjhmY2UyMjU4YzIwMDZhMzM5YmQyYTkzNzJjMmYxYmFkM2I2NmM4YiBsZWdhY3ktdHJ1bmsKKzM2MTg1IGY0YTQ4MTBmOTgyZWQ1ZTg1NGFjNjNlZDU2MjUyMDNlNTRmNTRlNGQgbGVnYWN5LXRydW5rCiszNjE4NiAzMzFlNWQ4YjI5NmY3NmEzZGRhODkxZjJlNWFhMWRiNzQyNjZjMGZlIGxlZ2FjeS10cnVuaworMzYxODcgNTA5MDcyYzNmYTI2YjkyYTI1MWU1ZjU0N2IzYjAyOTMwZDJiZjBmYSBsZWdhY3ktdHJ1bmsKKzM2MTg4IDFmZDNhYTRiYzEyM2FkMTMxOWU5NzgzNGI3NDY0OGYzYTA2MWNhODEgbGVnYWN5LXRydW5rCiszNjE4OSBiOTlhNTUyNzM4YmZhZTM3OTMyM2EyODhkNzljOTU2MTUyN2I1ZmFjIHJlbGVhc2UyMy1tYWludAorMzYxOTAgMzkxMTczYzY4YmIzYzkwNzdkZmNhYjJhYTY0NmJmNmQ5YzhlODU2YiBsZWdhY3ktdHJ1bmsKKzM2MTkxIDk2M2QyMzU1NzAyMGYyMjI5OTUxNDMxY2E1OGI2MGU4MjA3MTQyMzggbGVnYWN5LXRydW5rCiszNjE5MiAxMTk4MmRhOTg3OTJjNDc2N2YxNGVjY2Y2NjEwM2Y1MTc2MDFmYjUwIGxlZ2FjeS10cnVuaworMzYxOTMgZTQzZGE0Zjk5OTQxNTY3YzNhYjkwNTBjZDg3OWRjZjMwZjAzOWUyNCBsZWdhY3ktdHJ1bmsKKzM2MTk0IDBhZjQxNTQzYzliNjVmNzFmMGRhYzg3ODU2ZWE5NTNiZThhY2ZhYTQgbGVnYWN5LXRydW5rCiszNjE5NSBmNTM5YTliOTRmNzk0NTc0NDRjYjliZDFkY2JkZDJkYmIyYjU5OTcwIGxlZ2FjeS10cnVuaworMzYxOTYgNjM4NDA3OGU3ZWRmOTc2YmVmM2IxNGE5ZmE3MzU1YWJiYzFmYzQ5NiBsZWdhY3ktdHJ1bmsKKzM2MTk3IDQzNGQzZjJjYjgzMjgyOGUxZWFiZmMxOGYxMmE2ODMwMDExODk2ZTYgbGVnYWN5LXRydW5rCiszNjE5OCBmNzNhNjNkZDMyODg1Njc2NmVhMTI2YzE1MzNkNjU4MmVmZTA5MjVkIGxlZ2FjeS10cnVuaworMzYxOTkgYTlhNGIwZGY1MTJhZDRmOTRkYTdmZGI2NmRiNjA0YWU2OTg3OWRmYyBsZWdhY3ktdHJ1bmsKKzM2MjAwIDViZmM3NTQzZDdlZmEwZmQwMGUzNTZlMDliODc0YzhhNTdlYzlkZmMgbGVnYWN5LXRydW5rCiszNjIwMSBjNmFiMGY4ODg5NWE1YzU4ZWE1MDYzNmIwZTEyZWI4MzhlMmQ5NmE4IGxlZ2FjeS10cnVuaworMzYyMDIgNzYzMjc3Mzc4MTE0YzNkMDVhZmVhNDUyZjliYTc5ZjgwZTRmZjNmNiByZWxlYXNlMjMtbWFpbnQKKzM2MjAzIGNkZTJmZWFiN2ZlMGFiNzBkMjFjOGI1MTU1MzBhZTZjNWQ3NThmMDUgbGVnYWN5LXRydW5rCiszNjIwNCAyN2U3MTJjOGUxYTM2NDllNTVhN2M3NjY5ZGU0YjgwMDc3N2Y3ZjkwIGxlZ2FjeS10cnVuaworMzYyMDUgZWM2NGE2YmUzMmY3MTdkYmRlN2YzMjJlODczZTE4OWNjZDNlMzI5NyBsZWdhY3ktdHJ1bmsKKzM2MjA2IGQwYTZjZWI4NDY0NjQ3MDZkNjNhZTAxZTUyNjI5NTRmMDMyMGE1MGMgbGVnYWN5LXRydW5rCiszNjIwNyA2ODZlNWQzOGJlNDIxYWJjZDgyODU3OGE1NDI3MzVlYmYyNDU3NGZmIGxlZ2FjeS10cnVuaworMzYyMDggMDgxOTUwOGFhZTNhYzNlMTVjNzY1OTY3YTJkODgzZjJjODQyOTdjNyByZWxlYXNlMjMtbWFpbnQKKzM2MjA5IDVjZjUwN2I2NGYzMWEwZDAyM2RjYzEzY2RhMjNmOGMyMmVjNjczODQgbGVnYWN5LXRydW5rCiszNjIxMCBmOTU2OTUyNmU4ZDQwZDFiMTY4MGM2MDY2ODc0Y2RmZTFiMTdmYTJlIGxlZ2FjeS10cnVuaworMzYyMTEgNGM3MWJjZmFjZGUyZjJhM2UzODEyYzE2ZGYwNGVjYmM4NTM4NjBiNCBsZWdhY3ktdHJ1bmsKKzM2MjEyIDZmYzAyOTE1ZjYzN2IwMjQ0ZDIwYTY0NWMxY2Y2YmQ5Zjg2MWY3NTUgbGVnYWN5LXRydW5rCiszNjIxMyA5OGU0NjMyNzIxMjAwYjA4MDc3N2RkYjY4ODY2MzgyY2VkNjBmMmRjIHJlbGVhc2UyMy1tYWludAorMzYyMTQgZTVkZjhjOGZhYTA5OWJkMzI0YWI5ZjEzNDNlMGIxNzU4Y2ZlNDY0OCBsZWdhY3ktdHJ1bmsKKzM2MjE1IDFkNTg0Y2E1NmIzMDQ5NWYxMzkxNjY2OGY5NmVhMDFjMzY3NWYzN2QgbGVnYWN5LXRydW5rCiszNjIxNiA2YmM2YWJiYTg2NTllYWE0OWEyOGM4MmJkMjViYTg1MzhiNzAxN2I5IGxlZ2FjeS10cnVuaworMzYyMTcgMmY3NmU3MmFkMTkwY2I1OTM5NGFiMWFlNWI3NjBhMjAxMzI4NTBhYyBsZWdhY3ktdHJ1bmsKKzM2MjE4IDc1ODYxZDhjNTg3MTVhMmRiZjA0ZTRiMThhZmIxNWMyNDAxYTYxZTMgbGVnYWN5LXRydW5rCiszNjIxOSAwMTRkODdjNzMyMTAyYTdmMTE2NjgxODhkMWRjMzdkNjZjZjBkZDhmIGxlZ2FjeS10cnVuaworMzYyMjAgNDcyMDIzZDBhMTBkNjQyODdlMjZiOWNkNjEyNWEyNjI0ZDczZTU0MCBsZWdhY3ktdHJ1bmsKKzM2MjIxIDZjZTY3ZjdiMDQzMGE4ZmVkYzkwOTA2ZmIxNDYxOGM2YjFkNWRiMWMgbGVnYWN5LXRydW5rCiszNjIyMiBjZDQ3ZjYyMjFkOGQxZjU2MTgyNjBlOGM4YjY1OTEwMWFlYTAxYmVhIGxlZ2FjeS10cnVuaworMzYyMjMgMWMyYmFhZTE0ODI4MjM5Nzc5YzY5MjczY2IwYjYwZTYxNzY4MzJhZCBsZWdhY3ktdHJ1bmsKKzM2MjI0IDhjY2Q4ZWM2M2NjMjBjMmI0YTIwZjk4OTBjYjIzZjk2ODZhNjkzMDQgbGVnYWN5LXRydW5rCiszNjIyNSA3NWU1ZDFlOGI2MTcxYTJhOWY3ZDJhNmRlOGNjN2Q3YTA4Y2RjZmI3IGxlZ2FjeS10cnVuaworMzYyMjYgN2I2ZWQzNWM1ODUwZTZmNTcwMDVlOTk3MzQ0N2FjMWZmYWNmY2VkOCBsZWdhY3ktdHJ1bmsKKzM2MjI2IGQ5OWI1YmVkMDA3ODg0YjI1ZjEyNzZlMmJhZmI5YWQwNjFmMmE5NTkgcmVsZWFzZTIzLW1haW50CiszNjIyNyBhYWY5Mjk1ZWQ0NWIwMDZlYzcwY2ExZGMyM2Y5NTY5NGVhZjdmNjk2IGxlZ2FjeS10cnVuaworMzYyMjggZTBhN2M0NjEzMTFiM2RjYWY2ZmEzNTZjYThkZWExMzQxMTQ4NTRmMSBsZWdhY3ktdHJ1bmsKKzM2MjI5IDc3OTEzYmUyOTRiOTIxMTQ2N2I0NTgzN2VkYWZjMmJlZWEyNjFhNmUgbGVnYWN5LXRydW5rCiszNjIzMCA4NDQ0ODQ5Yzk0NDhlZGVhYjY0NGRmNTQ0ZDZhYzNhYjMzNTI3OTEwIGxlZ2FjeS10cnVuaworMzYyMzEgODEwMWU4ZDI0ZjA1MjhjNDExMzAwYTY0NTczNmQ1N2I3MGUzYmVmNCByZWxlYXNlMjMtbWFpbnQKKzM2MjMyIDM5M2MxNWMwYzVhNDhmNjVlYjRhMWNlNDU2Mzc0OWVmZTA5MTdkMTggbGVnYWN5LXRydW5rCiszNjIzMyBkNzExMGJiNmMxM2RjNDM5ZjRhZjNlZTJlNmFiZjliMTllMjQ5MmQyIGxlZ2FjeS10cnVuaworMzYyMzQgZmNmYjJkNDIyMGIwZTU3M2UzMjdlZDg1NzMwZDBiNjg5MzcxYmYwOSBsZWdhY3ktdHJ1bmsKKzM2MjM1IGIxZTcxYjM5Mjc5OWFhNTcxNGQ0N2UwNjgwNmY1NjZiYjhjMjZlMjUgbGVnYWN5LXRydW5rCiszNjIzNiA5NTBjZjY5YzY5YjYxZGMzZTdmYjNkNmNiNWVlYWYwMDYxN2Q2Y2M3IGxlZ2FjeS10cnVuaworMzYyMzcgMjdlMjJmNmJkM2FlNzcyZmVhNGZlNzkyNDFiN2NkYWEyOTFjMmFhNCBsZWdhY3ktdHJ1bmsKKzM2MjM4IDI1NWE3MWYyZDIxNWE4ZjcwYzFkNWRiN2E3OWZhMmI3YzBmZGQ5OTAgbGVnYWN5LXRydW5rCiszNjIzOSA4NGU1YjU4NWQyMDFiODg0YTk1ZmMwYTRiMmE5ZDIwZWJlNWRiMDNjIGxlZ2FjeS10cnVuaworMzYyNDAgYTRiYzJmZmQ4ZTcxNmE5MTQ3ODRlN2QxZDhjNTNhYTdhNmNhMjRiMiBsZWdhY3ktdHJ1bmsKKzM2MjQxIDQ4NWQyZWY0MzQxOWQxOTAwMTcwYWViYmVhOWQ2YjY4MmM1Y2I5MTcgbGVnYWN5LXRydW5rCiszNjI0MiAzZGYzNmUyZTVkZGMxMTQ5YWY4ZWI1MmUyMGJjMjI1ZDgwNjIzNmQ0IGxlZ2FjeS10cnVuaworMzYyNDMgNjQ1MzRmYjNhZmNkOTQwMGJjMzBjZjc0MjFmZWY4M2UzOTI4ZGMzMSBsZWdhY3ktdHJ1bmsKKzM2MjQ0IDNkZGM3YTIzMTc2YjYyODMxZDQwYTgzNjRmNWZiNzcyZmI0ZmFjZTggbGVnYWN5LXRydW5rCiszNjI0NSBlMzcxMTgzZDBlMTkwY2U3ZTBlNzI0YmYxYWQ1ODg3NGVmMDU5MTc4IGxlZ2FjeS10cnVuaworMzYyNDYgZjhkNjFlZDJmMGQzYTBlMTgzNmU3NjRhNjE1OWM1YzI1Mzg1OGFkYyBsZWdhY3ktdHJ1bmsKKzM2MjQ3IDkxNWIwZTgzM2I1YmZkMmJhMjVmNTM5MmVhNWE0MmE2NjZkNGRiM2QgbGVnYWN5LXRydW5rCiszNjI0OCAxYzY5ZjkwOWM1YTYxMzc4ZGEyN2YwMjYxZTQyYmIwMTM3NDY5YmY5IGxlZ2FjeS10cnVuaworMzYyNDkgZDhhYmY1ODJmODkzMDZlYWU3M2U0M2YxYWM0MzM5YmY5ZGRmNTc3MiBsZWdhY3ktdHJ1bmsKKzM2MjUwIDQ4Y2EyN2FkYTgxZTY1ZmQ3NTVkMDlhZTI3NmM0YTUwMmYzZDU5ZjEgbGVnYWN5LXRydW5rCiszNjI1MSBjN2QyYjI0ZWVmZjk5ZDYwNjUxOGRhYjI5YTY3NjM5MDE5NDE1YWEwIGxlZ2FjeS10cnVuaworMzYyNTIgMjBhZGI3Y2UxYjA4NWY0MjFiMmUzZWNiNjkzOTRhM2IyNDhhYzI2OCBsZWdhY3ktdHJ1bmsKKzM2MjUzIGRhN2MzYzYxZDQwZTAwNTBmYjBhZGFiMGVlZTQyM2VjYWQ4YjIzMzggbGVnYWN5LXRydW5rCiszNjI1NCA1ZWM3OGUyZGM0YmVjOTZlZGU3ODIzOGI1Njk1N2RlMWVjMDNkNDQ4IGxlZ2FjeS10cnVuaworMzYyNTUgZmY2Yjk3Y2RkODY0ZjRmNTBiZmNkMzFkZWNiMGZlMDNjZDUyM2IxMiBsZWdhY3ktdHJ1bmsKKzM2MjU2IDNhN2UzNGRjNmFlMjZkZThiMWZkOGExZmNhYTZmZjM0NTNlZmE5OWMgcmVsZWFzZTIzLW1haW50CiszNjI1NyBmNDdjZTIzMDRjYmIyMzU5MDMxNTI0YThiNzVmN2E4YTc3MWE0MmM3IGxlZ2FjeS10cnVuaworMzYyNTggMzhmODgzNDAzZTlmOGNiNzdhZjI0ZTkwZDQ0YTUxZWIzZjYzNGM3ZCBsZWdhY3ktdHJ1bmsKKzM2MjU5IDczMzNiZTA5MmVlYzBjZTkzNWQ4NDA3MjA1YjE3NjU1OTU1YzIyNzYgbGVnYWN5LXRydW5rCiszNjI2MCBlZTM4ODk2ZTBkMjQxNzNlMDVkYmFiYjBjNTc1Y2M4YjY3MWJjNGM0IGxlZ2FjeS10cnVuaworMzYyNjEgNTNmMjc0ZjAyZjY5ODA1OWRjZjNhYTgwZmUyNjBkMWQ5ODM3M2EwNiBsZWdhY3ktdHJ1bmsKKzM2MjYyIDFlZGMwNjg3MjEzZmUzZmRjNDE4MzViNjlkZjRmZjViMGFjODE2ZmEgbGVnYWN5LXRydW5rCiszNjI2MyBiMThmNDgwYzM3YTA3NjgxM2NkZTI2ZjE5NmZjZmM5ZDQxZWEyMGUzIGxlZ2FjeS10cnVuaworMzYyNjQgYzU2MTY4ZmFiZjhlMzNlZDliMjllYmM3NDFlMDYzNjJjYmMyZDMzZiBsZWdhY3ktdHJ1bmsKKzM2MjY1IDVhZGNhNTgxNDlmZjQ5ZGYwNWU3M2NkMWFkYmY0NWYzZmEzNWY0ZGEgbGVnYWN5LXRydW5rCiszNjI2NiA0NjRjODA4ZDBkY2RhMzhiYjgyYTA2ZTJmNmI5M2RiMmI1NjY2YWQ4IGxlZ2FjeS10cnVuaworMzYyNjcgN2RiNGM1ODZlMWQ2Y2UyN2Y2Nzc4NGU3YjE1NjkxYzg5ZjRlMGNhNiBsZWdhY3ktdHJ1bmsKKzM2MjY4IDI1NmI0OTZhZjRjNGEwNzVkNjZmOGMxNGMyZjQyZGI0MTA2NzhkNzAgbGVnYWN5LXRydW5rCiszNjI2OSBiYjAwZTEyZTc3NDE2MDU3N2E5ZjJlZThkMDUyOWNiYTJiZWZiMTYzIGxlZ2FjeS10cnVuaworMzYyNzAgMGUyOGZkNmZlYTAwYzJiZmMzMmMxOWIwMzRiMDUxMTM4Mzc3NjI5MSBsZWdhY3ktdHJ1bmsKKzM2MjcxIGQyYzFjN2FlN2NmNDMyMzY1YmNlY2E3MTI4YjQxODU5YmNhNzFlMTggbGVnYWN5LXRydW5rCiszNjI3MiA2N2ZiYzIzZGNmZGQ0YjkyNmZmMjI0OWZmZmI0MTgyNjBmZTNjNjcxIGxlZ2FjeS10cnVuaworMzYyNzMgMGY1NmVhZDk2ODE3NjU1MmI5ODA3OWJjMWQ1YTVkNGRhNTJjMTgyNiBsZWdhY3ktdHJ1bmsKKzM2Mjc0IDczMTU0YWI4NTYzYTVjMTE2MDU2ZjgxYmIxZTdmZmExYTEyNTQxMWIgbGVnYWN5LXRydW5rCiszNjI3NSBkNTAwZjcyZmIxYWNmMWI5MzhjNzJlNDkyNmNhZmNmYmVkZGJmNWQzIGxlZ2FjeS10cnVuaworMzYyNzYgNTAwNjhiMTdmNDFlYWExYWI0ZmM5OTg4ZDlhYmQ0ZmM5ZDQxNjM1ZiBsZWdhY3ktdHJ1bmsKKzM2Mjc3IDZjMTY2MTJmYjExODM4MTU4MGRhZmExMGYxZTBmMDYzNTgwZWYxZDEgbGVnYWN5LXRydW5rCiszNjI3OCBiNzNhYjMwOWFkYTdmYjJiN2E0ZjFlMzdiOWM2OGZmZjllZjlhODZiIGxlZ2FjeS10cnVuaworMzYyNzkgNmIxZWE1YzA3ZmY3M2VlYzVkYmQzNjBjNDRiZjgyMGFmNDBjNDBhZSBsZWdhY3ktdHJ1bmsKKzM2MjgwIGM0MjNlMDE4YTI5ZTAzZWYyNzY2YTc5MzRlOTgwNWU2YjMzNzJjYjQgbGVnYWN5LXRydW5rCiszNjI4MSBlM2Y4MmRmNTRjODhlMDgzNWJjYjdjY2RkNDhlNDZlN2Y5MWQxMTc2IGxlZ2FjeS10cnVuaworMzYyODIgMWI5ZGE1ZmU5MDUzOTRiZWEyZjUxN2M1ZGQ1YzZkNTEwNjJhODBkYSBsZWdhY3ktdHJ1bmsKKzM2MjgzIGQ0YTU5MjMwZTkzYTk2YTcxYWI1N2QyOWU3MzE0MjJiZjA4ODQyOTMgbGVnYWN5LXRydW5rCiszNjI4NCA3NTdhYjIwMGQ0N2E2YmE3ZGYwZGYwNjQ0YzA5YTk4MmM0YTMzNjhkIHJlbGVhc2UyMy1tYWludAorMzYyODUgYjU3NDNlNDQ3MzA5MTIwY2NjMWYwYWVmMjQ0NDA4YmY5OWU2NWRmYiBsZWdhY3ktdHJ1bmsKKzM2Mjg2IDNjNTAzNmIzZThlNjc1YjM4ODc5YjIyMGIyYmMxMzc1N2Y5NmRkOTcgcmVsZWFzZTIzLW1haW50CiszNjI4NyBkZjEzZmZiOGY0OTg2MzdlZDA2YWEzNGFkMjRhNDc3YzQ3ZjJkYmZlIHJlbGVhc2UyMy1tYWludAorMzYyODggMTg5MTZjZTQxYzI2MGYyYmUxYThjMjNmZmIwNDkwOTM0YWE0OGExMyByZWxlYXNlMjMtbWFpbnQKKzM2Mjg5IGI4NzEwZTZkOGQ3ODBkZjk3Y2IzZGIxZjMwYTNkNTRiM2YyM2JmZTkgbGVnYWN5LXRydW5rCiszNjI5MCAwNWYxMmJjMWU1YjMwMjIzNWRlYjhiZTAwNjZmM2NjZGIwN2EzMTk1IGxlZ2FjeS10cnVuaworMzYyOTEgMmZmY2Q4MzY4MTdlYWJjNTA3OTQxNmI3MmRjZmQ3MzcyZjQ0NzFkNSBsZWdhY3ktdHJ1bmsKKzM2MjkyIDQzODNkYjc3YjE5YTliODAyNTg4NzQ3YWM2MWFjYTc3ZjA2M2JhMGQgbGVnYWN5LXRydW5rCiszNjI5MyAxNGI0MTU1ZDhiMGE0NTIxMjRmZjdjZmU3NWVhMTcyYjAzN2IzYmRjIGxlZ2FjeS10cnVuaworMzYyOTQgOWU4ZjdkZjRhNmZlNzYwMTE2ZGIxOGEyNDNmNGI2NDk5MDdiZWIwNiBsZWdhY3ktdHJ1bmsKKzM2Mjk1IDc5NmNjYjkwODJlZjM1NmMzNDk3ODM0NGFmNjU2NjVjOWFiYjk3Y2QgbGVnYWN5LXRydW5rCiszNjI5NiBmYTc4YWM1NjgzMDk5ODQ0OGJhZWNkMmUzZDc3M2MzY2I2MzYyOTJiIGxlZ2FjeS10cnVuaworMzYyOTcgYmM1ODZkYjk5NDVhMGVjMDRmNDlhN2NmZWUyYzNlNWE3NDc0NTBiOSBsZWdhY3ktdHJ1bmsKKzM2Mjk4IDUwZTg0NGE0ZWVkOTBmNjhmZmUwZTFmYTQ0YzYyMjM2MDZiNDI1NTUgbGVnYWN5LXRydW5rCiszNjI5OSBmZTgwZjc3MmJmYTEyOTIwYmExZjQ2Y2Y5MTJhMjIxOTI3ZWY4ODI0IGxlZ2FjeS10cnVuaworMzYzMDAgNzdkZjFjYjQxNTMzMmUyNzZhOTQ3M2QxNzczNzIyYzJhNjc4ODUwMyBsZWdhY3ktdHJ1bmsKKzM2MzAxIGI4MzVkNWM2MWQ4NjQ5ZjQ0YmZlYWIxNGRhYjQ4MjRhOWI1ZDYxNDcgbGVnYWN5LXRydW5rCiszNjMwMiBlY2NkMGZiZTBjZDVjMjhjMTM5MjQyY2U1ZTJjZDg4ZjM0MzJjMzZiIGxlZ2FjeS10cnVuaworMzYzMDMgYzZhY2YyNjFkNjE0NzlkMTg2ODNjMDFkYTQzMGZiNmM0MzkyMWM0ZiByZWxlYXNlMjMtbWFpbnQKKzM2MzA0IGYzY2I5NWNkNDEzZjQ5ZjQ0NDg1NzkwMDI5YzRiOWFkYTk0NzdhYjkgbGVnYWN5LXRydW5rCiszNjMwNSAwMDJhYzYyNTljMmNiOWQyMmZlYTNmYTA5ODEyOTI2NzgxYzM0NDRmIGxlZ2FjeS10cnVuaworMzYzMDYgOTFjY2U3YmJhMzcyNjk2NDg1OTVjZDAyMGU4NWQwOTFmMGY4Mzc1YSBsZWdhY3ktdHJ1bmsKKzM2MzA3IGZhMjNhOWIxODk2NzYxNzZiNzA4M2FmMzUxYmNhNjBmZGY1NGI5MWQgbGVnYWN5LXRydW5rCiszNjMwOCAzOTIzZGM5MGViOGViZjcwYTA1MzgzYTFlNDhkOTk4ZDg2NGQ5MDYzIGxlZ2FjeS10cnVuaworMzYzMDkgYWIwYTJiNzRkZGZkOTY5ZWExZjg2NDc4MDBhMmQ0YTMxM2Q0N2JmYyBsZWdhY3ktdHJ1bmsKKzM2MzEwIDc5ZGY0Zjg3ZDY3ZTdhYWZhMGUzN2Y4ODNhYTU0YmQxYTIxZjFkZGEgbGVnYWN5LXRydW5rCiszNjMxMSBkYjUwM2EyNjNiNDMzY2JhYjhmYzRjN2ZlMjEwYzAyNGEzZTMwNGU2IGxlZ2FjeS10cnVuaworMzYzMTIgOTlmZGY4MDcwNmFkYWU2ZTNhMWJjYTA3NTA3ODZiMjdmZTdhMTljZSBsZWdhY3ktdHJ1bmsKKzM2MzEzIDIwMmFlMDU3OGViZWIxNWNlOThmZDI0OGI0OTg0ZWYxNTU4ZTAzYWMgcmVsZWFzZTIzLW1haW50CiszNjMxNCBmNTY1MDNhOGRiYTNjNDFkMDQ2ZjlhMWNmMjE4ZGJmZGY1YzIwNzc3IGxlZ2FjeS10cnVuaworMzYzMTUgNmNhMTIyZjI3MzZhYjg5ZTE1MWZiMzdiYmZiZGFlYzA2OWU0ZjE5ZSBsZWdhY3ktdHJ1bmsKKzM2MzE2IDljODc1MThmYWY2YjZjNGU3NGFjNTgwNDU1NWI0YzZkMTllNWQ0MmIgbGVnYWN5LXRydW5rCiszNjMxNyAwNTRlZGUwMWUzZDMwNTdlMDc5NGFhMDE5YTY5YWQxYzdhY2Y4NDdjIGxlZ2FjeS10cnVuaworMzYzMTggNTFlYjY3YTg1NjhlYTFiNWU3ZjIwY2RmNDFiNmRhZjQ1MTI1ZTYyMCBsZWdhY3ktdHJ1bmsKKzM2MzE5IDZmZTJkMjQxMDA4YTgyOWM4NjlhYzM1NmE2YWMzZjE0MzA3YTVlNmUgbGVnYWN5LXRydW5rCiszNjMyMCBmYmJkNjcyNzQwMWI2MTYyYzM4YjFhYzViNWU3ZjE1NmY5MWRmMmRkIGxlZ2FjeS10cnVuaworMzYzMjEgMGRiNjNhNzY1YTc3MDFlOWVjNzhmNWZlOGYxMjFiYzA1MDExYzA4YiBsZWdhY3ktdHJ1bmsKKzM2MzIyIGYwNGYwODFmZjIzMTEwOWUxMTU0ZWY3ODI2ZTVlMmI4YTg1YjEwMDYgbGVnYWN5LXRydW5rCiszNjMyMyA4NzQwMTY1OGViNDU3Mjk2OThjZDA4YzQxOTlkOTczOWY3NGI5NzE0IGxlZ2FjeS10cnVuaworMzYzMjQgYzRlZWZmZWExOTYwMzhiMTdlZTZlNzc0ZDE5MzMzNmU4MDQ4YmY5ZSBsZWdhY3ktdHJ1bmsKKzM2MzI1IDE5MTc5NmI3YTA1NDU2ZDU0NGZiMmYwNWEyOTQyNGY3ZDRjYjJhYjcgbGVnYWN5LXRydW5rCiszNjMyNiBmNWYwNGNlMjUxNjM1NzYxNjg0NmFkMjA3MmQyMzBmMTdhOTBiMmVhIGxlZ2FjeS10cnVuaworMzYzMjcgNjgyZjc0MDg4NjAyOGZkZWQxZjkzZmNjMzlmMDQ1NTkzMjA4NTNiMiBsZWdhY3ktdHJ1bmsKKzM2MzI4IDhlNzY4YzNhZjAxNWQ3MTI5NTc0NTdiMzQ5MDE0YWMyNGRiMzRmMDYgbGVnYWN5LXRydW5rCiszNjMyOSAzZDY4OWU3MTVkYjI0NGE5MjU0NjNmNTM2YjRlNjY3OGQ1YTg5YzJmIGxlZ2FjeS10cnVuaworMzYzMzAgNjFmOTAzNGExMGY3MWYxZGU5YTYwYWIyODQzOTIxYTkzNzIzOTdlNSByZWxlYXNlMjMtbWFpbnQKKzM2MzMxIDhlN2M5MWRlOTQ5MTk2MTcyMTAzNzk4NzU5ZjJlNmNlZjc2NzRhMjEgbGVnYWN5LXRydW5rCiszNjMzMiBjNGVkMTRmYWIxMmEzNmI3NWQ2ZDIxMjgzNWU2MjZjYTEyZTE2NWQyIGxlZ2FjeS10cnVuaworMzYzMzMgZWM5MjhlZDAxYWNjNTVlMjY5MTBiMTQ2YzI3YWY1Y2M4N2ViMThhNCBsZWdhY3ktdHJ1bmsKKzM2MzM0IGI2MWM0MWQxOTc3ODcwODhkNTQ2NWQ4ZGIwMTc3NDcwNWM0Mjc1MWEgbGVnYWN5LXRydW5rCiszNjMzNSAzMjllZTQ4MzBiMDQxMjE0Y2FiOTVmYjBjNGY4YTBlY2RmYWMzNGM4IGxlZ2FjeS10cnVuaworMzYzMzYgNDU0OWU3NWE2MjQzNGU0ODJiMjUwMzFlNjhhZjI0MmUzYmE0M2RiMSBsZWdhY3ktdHJ1bmsKKzM2MzM3IDVlNDFjYmVjMDQ2NTNmZjUxYzE1MzZkM2YxYzc2YTc3NzllNjNlZTkgbGVnYWN5LXRydW5rCiszNjMzOCBmNThjYzMzNGQxNWM0NjJjNTY1ZDZhODMzNTc1OTA4ZmVjZmM0ZjNjIGxlZ2FjeS10cnVuaworMzYzMzkgMTBlNzVlYTU5NjA1NDgzM2FhN2Q5NjYzODZkYjI4OTE0MDVkZDczNiByZWxlYXNlMjMtbWFpbnQKKzM2MzQwIDRiZjhmYjExODk0ZjRiODFmYWY3NGRiMDM2MzU1ZGMzMWM4MzRmNmQgbGVnYWN5LXRydW5rCiszNjM0MSA3MzdlODkyYTJjMmNmNjg2MDU4YmExMWE4OGViZDMxYTFmNGFkOTIyIGxlZ2FjeS10cnVuaworMzYzNDIgY2FmZDEzNGZjMWNkNDRiNjk5Y2U0MmM4ODA2YzQwZDgzYWFjN2M1NyBsZWdhY3ktdHJ1bmsKKzM2MzQzIGRhNjNlMmQ2ZWI4YTNkMWYwZWIzNTJlYjRhNTlhZTk2ZjNmYWNiMDQgbGVnYWN5LXRydW5rCiszNjM0NCA5ODdlMzZhZmI4NzlkMjY2Nzc1MWViYWMyNDQ4ZGY3YmM0ZGQyM2ViIHJlbGVhc2UyMy1tYWludAorMzYzNDUgZWM1ZDBlODczOTY0MTg1MmM4MWMwMDdjYjJkZmM4ZTk3MTBlNWU3OCBsZWdhY3ktdHJ1bmsKKzM2MzQ2IDc4YmQyNWI0MmQ0NjMxNDJjODQwZDAxZjBjY2FjM2VhM2ExNmE5ZTUgbGVnYWN5LXRydW5rCiszNjM0NyAwZGE2NjBlMDVlNjkwZGNhMTA4YmY2ODFkYjJjYzkyNjdlOGI1OGFjIGxlZ2FjeS10cnVuaworMzYzNDggNjc1MzljZmNmMDlmZThiNTM0YWU0MGViZDlmYTZmZDMwMWU2YTRmMCBsZWdhY3ktdHJ1bmsKKzM2MzQ5IDI0NzZhODMzNDI4NmI3YTBiZmUxMGFjY2NjMzllN2UzMjFmMzExMTUgbGVnYWN5LXRydW5rCiszNjM1MCAyNDUxYzk1NzJlZGY1YzAwOTUyMmNlNzA3NDYyZmZmYjkzYTg5ZGNiIGxlZ2FjeS10cnVuaworMzYzNTEgODdkMTk2ZTFjMmQwMWQ1OGYwODdiZWJkYjQ0NTRhZDA3Y2Y2NTE1ZCBsZWdhY3ktdHJ1bmsKKzM2MzUyIDkyODIwZWE1YWU4Y2JlMTNkYTBiMDIzZTdhYjZiZDBhYjQ3ZTcyZmQgbGVnYWN5LXRydW5rCiszNjM1MyAyMDE5ODZkNmQ5ZDYzNTBjZmIyYTY1OGNkYzZjMzk3MmJkZWM3YzZiIGxlZ2FjeS10cnVuaworMzYzNTQgMTYzNGY2MDExODg4NTk5NTlhMTc4YWQ3NzdlNTllMzZjYjRjZTk1OCBsZWdhY3ktdHJ1bmsKKzM2MzU1IDMyNDU1ZGI5NzEzNTc2YzI5N2ViOGNlY2U1YmQzMGU3NTU3OGY1NzMgbGVnYWN5LXRydW5rCiszNjM1NiA0M2I4MDk4MTVjN2Q3NTljMWNlZDljNzY3Y2I0Y2U3MzcxM2UyZGI3IGxlZ2FjeS10cnVuaworMzYzNTcgN2ZkNmY4N2U1ZDFmY2ViYTE1OGZlMWRjZjU0N2IwOTY1YjAzMTQ5NSBsZWdhY3ktdHJ1bmsKKzM2MzU4IDRmYWI0YTVjY2UyZjVkNDQwZTRlZTUwNWE5NjNlYmI5MjZjMzE2YmYgbGVnYWN5LXRydW5rCiszNjM2MCA3ZTQ0ZjNhOGI1Njg3Y2ZhNjEyZTJjNDVjODE4NTBiY2Q3NDE1NTA5IGxlZ2FjeS10cnVuaworMzYzNjEgN2FkNjg1ODdjOWFjYjYyNTM0NWFmZTc3ODIwYjM5YjE3MzMwMDAwOCBsZWdhY3ktdHJ1bmsKKzM2MzYyIDc3NTk3MDRlNzg3MjkyNTFhOTU0ZGY3MGQ5YTUxNTBjNTExMDRhNDUgbGVnYWN5LXRydW5rCiszNjM2MyBlYzhlNGVkMmIxNTdjYzljYjczMjU3MDAxZDgxNzIyZDIxYzU0ZWZmIGxlZ2FjeS10cnVuaworMzYzNjQgYzRkNTRjNGJhNTU0M2VhODJjZjU3NDRiMTQ1OTllYTVlNTg5NjlmNSBsZWdhY3ktdHJ1bmsKKzM2MzY1IDQ2OTNmYTE5ZTIyYmRjYTJiYTk2MzU2NDA4Y2Y1ZDg0NzJkZTVmNDkgbGVnYWN5LXRydW5rCiszNjM2NiBkMWZiNGJkNDg5MzYwNzNjMjg0MmIwN2U3ZTg2YzQ0MjI5OTBmNWUwIGxlZ2FjeS10cnVuaworMzYzNjcgZDQyNzQ5ZGI5MzM5MjUyY2EzNzA3ODYwOGRmNjg4ZWFhOTI3MzgwNyBsZWdhY3ktdHJ1bmsKKzM2MzY4IDkyODhkNTI0ZDc1Nzk5NzIyNWFiYTk2OTNlYTQ5M2U1YzgwYWI4MGMgbGVnYWN5LXRydW5rCiszNjM2OCA5MmNhNjU4ZmQ0MjAwOTViNjI4NGM5Y2U2ZTkwODJhODAyODVlYzljIGxlZ2FjeS10cnVuaworMzYzNzAgYmUxYTEyZDBiODk1ZDI1MTY5MjAyNWFiMzk0OGQ3YWE3OWI2NDU1ZSBsZWdhY3ktdHJ1bmsKKzM2MzcxIGYzZjExZDg2M2EwMmY2MTNhZjdkNTczZjU2ZDRiMTI3ZTJjOGM3NjcgbGVnYWN5LXRydW5rCiszNjM3MiBmNDZkNDllMmUwZjBiMThmZDkzMjU5ZjY3NmI1NWM4NTU0ZDk3MjExIGxlZ2FjeS10cnVuaworMzYzNzMgMzcwNmEzNzA0YWVhYzAyYTUyZDg2NGExMzVlNDEzYWQ0YzFiYzlmOCBsZWdhY3ktdHJ1bmsKKzM2Mzc0IGMwOTlhYTc2Nzk1MmQ5OGE2ZDdhMjY4MWQ1MzAxODdiMzQzMGYxMTMgbGVnYWN5LXRydW5rCiszNjM3NSA3NGMzYjcxM2UzNWE2YWZkNTU4NDdhN2JlY2M1NTQ3NTJlNmUxZDQ3IGxlZ2FjeS10cnVuaworMzYzNzYgZDkwOWEwZGRkMTkzMmRlMGZiYmUyMTk0NGI3OWZmMjdhM2M3OTIyMSBsZWdhY3ktdHJ1bmsKKzM2Mzc3IGVjMjg1NjNiMDUyZThmZDZiOWY0YTc0MTY3MzIyNDYzZDg0MzFmNGUgbGVnYWN5LXRydW5rCiszNjM3OCAwMjlkZmZiNjNmNGJmMWNhY2I3OTcxMTNlYjMwMzQ4ZWU4OGEzMjA3IGxlZ2FjeS10cnVuaworMzYzNzkgN2Y0YjY2ZGM0Mzc2MmRhOGNlZmY3OGZiNjkxOWE0NTk3NzMxYjVkZiBsZWdhY3ktdHJ1bmsKKzM2MzgwIGVjMWI1NmI0M2FmMDQ2NWQ0YmUzN2E1OGYyNmVjZTcxNGY0YTFiNGUgbGVnYWN5LXRydW5rCiszNjM4MSBlNGI5NmMzYTNlMTIyOWRhYTc4M2NmY2Y5ZDkzMGVhMjYyNjA1MWIwIGxlZ2FjeS10cnVuaworMzYzODIgNmYzNTFiMWJjZjUzNGM4Y2FhYjAyNGExYTg0MTlmZTJmZDUyOGUxNCBsZWdhY3ktdHJ1bmsKKzM2MzgzIGExNjBiOTY2OWRiMWUzMjBjZTJjYTNmZmRkYTdlYTdjY2U0Y2ViOTkgbGVnYWN5LXRydW5rCiszNjM4NCA2OWJiMjQxYjA1NmM5NmYxNTI0MjNhYWNlYmU0NGU1MTk2M2M5NTQ1IGxlZ2FjeS10cnVuaworMzYzODUgY2YxMzhjNTVkNDFiZTZiYzZlZGNmMmM5NzQzZjM1N2ZhNzMwMWYzNSBsZWdhY3ktdHJ1bmsKKzM2Mzg2IDExMTg2ODNjZDRkMWNmNWMwNWY2YzdlMGQwYTExNDYzZjk2ZWY5YTcgbGVnYWN5LXRydW5rCiszNjM4NyAzYWFkZmMzZmM0ZTZmZGI4MDdmYzZhYTViNzBjZDUzYzM0OWZhZGQ0IGxlZ2FjeS10cnVuaworMzYzODggMDA2NGY1NWJhZmE3Yzk2ODczMzg5OGIyNGQ5M2RjZDQwMGZkYzAwOCBsZWdhY3ktdHJ1bmsKKzM2Mzg5IDg0NGQ5OWM4ODhiYmExNGY2NTMwOGIzMTZjZGU2NWJhYzQxMTNlYTcgbGVnYWN5LXRydW5rCiszNjM5MCA1YzI1Y2E2ZmZhZjllNTk1NTZlYTY3NGFlNmMzMDg1NWUzMzU1MzQzIGxlZ2FjeS10cnVuaworMzYzOTEgNzBiMTUwNGUxN2ZmY2Y2YTBkOTk3MDljZmRiM2MzM2Q5MDYxZjBkMyBsZWdhY3ktdHJ1bmsKKzM2MzkyIGJlYzBjNzYxODYyNTQxZTU4OTY1YzA2ODZmNTNjNTNhMzM0NTdjNmIgbGVnYWN5LXRydW5rCiszNjM5MyA4ZWEyY2IxZWM1OTg4ZDlhMzEyYzE2NGJhNmIyMjM4MmI0YWI1YTQ2IGxlZ2FjeS10cnVuaworMzYzOTQgMTUzYzUxN2JjNmU5NmU3NGZjMjEzMTMwZGQ4OTk3OTg3NDc0OWNmNCBsZWdhY3ktdHJ1bmsKKzM2Mzk1IDIyODMyMzg5NTI3MWUwNDZlNjc1YzA0NGMyYzM5ZWUyZmU4YzA2MDggbGVnYWN5LXRydW5rCiszNjM5NiA1MTFmZmM2MmIyOThhN2YxMWIzNjFmMTUzNGFiMDk1NjE1MjZjNDdmIGxlZ2FjeS10cnVuaworMzYzOTcgODNjYmMwMjViZmM3NGU0ZTE4YTg4NzExMTgxYjg3NmM0OTM0NjYwMSBsZWdhY3ktdHJ1bmsKKzM2Mzk4IGZlZjc5MTFhNTcwNWNhZWY3MDU5MzhhMzc5ZmUxOGUxZjMxZGYyMmQgbGVnYWN5LXRydW5rCiszNjM5OSAyMWZkNmU2MmNkMjc2YjI3Mjc5MjYwNzQ3ODkxYTk5YzQ4ZmViMWU2IGxlZ2FjeS10cnVuaworMzY0MDAgNDkyZGM4YjhlNThlYzE1ZTcxNjdhYTI2N2RmNmM5NDM0OTBmNGUyMCBsZWdhY3ktdHJ1bmsKKzM2NDAxIDIzMDM5N2JjN2UzMjA0NmNhYjViMDdkODVmNDU0MWQwNGZjMGM1NmQgbGVnYWN5LXRydW5rCiszNjQwMiAwZGQ0NzNhOGU1M2MwOTIyN2ExZTlkOTExNmJjMTk5ZWUzYzg1ZGRiIGxlZ2FjeS10cnVuaworMzY0MDMgNGQyZjRhMzllYzVlZDI3NDkwNGMxNzI3OWQzMGZhOWQzYzI1NjExYiByZWxlYXNlMjMtYnJhbmNoCiszNjQwNCA3MzYyZTM3MmM4OTcwZDE2MzBmODJjZGEzNTQ2ZmQzNWJhNjM4NWNjIGxlZ2FjeS10cnVuaworMzY0MDUgZjJmMGM1ZmQ5YjZjOWQzZjMxZmMxN2QzZTdiYmU0YjE3M2I4MTFmZSBsZWdhY3ktdHJ1bmsKKzM2NDA2IGE2NGJhZTVjMzNiN2U3NmEwODQ2MWFmZThkMjI4M2I1YzgzODFlNDIgcmVsZWFzZTIzLWJyYW5jaAorMzY0MDcgZGUzMjZkN2U3NGU4YjgzNzk5ODUxMTM4ZDc0YTFlNjVhYjcwNTgxNiBsZWdhY3ktdHJ1bmsKKzM2NDA4IGEwM2JjYTE2NTRkMGEyZmY4MDM3Y2UyOTkzNDJlZGZjMWUyMGZlNWYgbGVnYWN5LXRydW5rCiszNjQwOSA2N2E4NGEzM2QwZjhjMzQzYzBmMmUwMDU5MmQ0NjlhZmFkYmQ2MjY0IGxlZ2FjeS10cnVuaworMzY0MTAgNGJlNGM2MzY3M2ViMTVjOTMxYmRhYzNhYjUwNGE3MTkxZWQ0MGJmOSBsZWdhY3ktdHJ1bmsKKzM2NDExIDNlOTI1OTU5ZmEwMWFjZWRjNjg3NzM4MTY3ZGZlZjM3ZjAxMGM0MjUgbGVnYWN5LXRydW5rCiszNjQxMiBjNzhmY2RkMDI0NjQ0NmRmMTMzNDVjNDgxZDJmMmVmNmM4NDgzNjg2IGxlZ2FjeS10cnVuaworMzY0MTMgZjNmNDc2NWVmZTY2ODMzOGUyM2QzYzM1MmE1MWNlY2U5NWU5YzJjMCBsZWdhY3ktdHJ1bmsKKzM2NDE0IDViMjVjNjQ0NmFlYjMzZjczNjQ0ZGM5ZDRjMWUyYjQ4NDU4MjJkMGUgbGVnYWN5LXRydW5rCiszNjQxNSA2ZDdhYjBjYWQ3MmRlMTZjZmMxZDc5MmYzMjQ0NTBmMDU4ODcyZTg5IHJlbGVhc2UyMy1tYWludAorMzY0MTYgZmRiOTM3NzUxM2U0MmIyOTk1NTRjZmQ0Mjg4NTRhODUzZGI2MWNmNSBsZWdhY3ktdHJ1bmsKKzM2NDE3IGY2YjQ1ZDFjYjBhMmJmNjdiMTFhYjZmNjYxNTZhNjA3ZmYzZGNkMTggbGVnYWN5LXRydW5rCiszNjQxOCBiNTI3Y2IxYjJiOWViNGFkOTQ2NmM5ODY2NTkyN2U1MGY5NmJmMGEyIGxlZ2FjeS10cnVuaworMzY0MTkgMWM1ZWQ4MWZmYTIzNWRiODkwZjI3MTg4YzE5OTgyOTYzZTRjOGNiMyByZWxlYXNlMjMtbWFpbnQKKzM2NDIwIGMxNmIwM2JhMWMyMmJlNDA0M2Y0MDU5YWJkNzEzZGZkMTc2MGNkYmIgcmVsZWFzZTIzLW1haW50CiszNjQyMSA5MGQ1Y2VlN2U2NmU0N2E5NDk4MDZkMmVhYTQ5NzhiOTRhZmJmNTA4IGxlZ2FjeS10cnVuaworMzY0MjIgNTk4YTVjZTYzMzIyZmFlM2FjZTZiNDhlMDE5NzgyNjFhNWFiNTJlNSBsZWdhY3ktdHJ1bmsKKzM2NDIzIDUwNzQ1ZDk5ZmJmMTYwODhkM2QxMmRmYTZmMjc4NzUyNjliNDExMjAgbGVnYWN5LXRydW5rCiszNjQyNCA1ZTFmNTVlYzE3ZDZjNzEwYTIwMzc2ZjM2ODU5YTJmM2Y0YjkyMDFjIGxlZ2FjeS10cnVuaworMzY0MjUgYWI5NzlmZjhiMDJhZWNhNTQ3OThhY2MxNjZhNTljNDE0NThhNTExYiBsZWdhY3ktdHJ1bmsKKzM2NDI2IDc5OWJjZGZmMmNkYzA1NjFiNjI4NjU1MTJmMzgyMjkzYzU4NzFkOWQgbGVnYWN5LXRydW5rCiszNjQyNyAwOGQ5MDQ2MGFiNGQ2MjQ4NzBiYTdhZmFiMGNmMjk0Mzg3ZmJlOGMwIGxlZ2FjeS10cnVuaworMzY0MjggNTdkMjFjNWUwZWI4YWYwYjJiYTM1NjIzMjQ0YzNmNTY0ZTM3OWMwMSBsZWdhY3ktdHJ1bmsKKzM2NDI5IGNjMWY3NGQxOWZjYmI3Y2IxOTE2YThlNDRlNjE1ZDRhN2VjMGI3YjggbGVnYWN5LXRydW5rCiszNjQzMCBjNDMxNmRmMmZlZDQ2ODg1YzIzM2M1ZGQyYzhlYTQxODkzY2ZiZGIyIGxlZ2FjeS10cnVuaworMzY0MzEgNmU5YzE4Mjk1OGY5MTcwZmIyOWViM2U5NzI3NmJlMjI4OWE0OTYzMiByZWxlYXNlMjMtbWFpbnQKKzM2NDMyIDJiMTBlMmI1ZTgxZWYyM2U2YTU3ZjcyZjlkZWZmNTFlZmRlNTA3NWIgbGVnYWN5LXRydW5rCiszNjQzMyA0ZjI0ODNhYmI2MjNhZjY0MDhkODVkZGViYTU2MWI5OTYzYzc2YTcyIGxlZ2FjeS10cnVuaworMzY0MzQgOGIzMjg4ZjYwN2UxZjgyNDA3MGNkNTcwODhiMWEzZWRlNjNlYWJjOSBsZWdhY3ktdHJ1bmsKKzM2NDM1IDU1NDZjN2FlMjRmNzBkN2Y1Y2RkODc3NGNhYjA5NTljOTQwZjMxOTkgbGVnYWN5LXRydW5rCiszNjQzNiAzMWI2NWQ4MzcxYWY4ZDI2YWVmMGUxODQyOTc4NzM3MWY4Y2E3MzE5IGxlZ2FjeS10cnVuaworMzY0MzcgZjA4MWYzYTU2OGZhODg3ZTE1YmZhZGZhZjNhZDU5MmU0MzE1YTRhZSBsZWdhY3ktdHJ1bmsKKzM2NDM4IDA5ZWFlZTcyOTczYzUwZWJlZWM4ZmZhMDgzYmZiZGZiMzY5NGJiMGQgbGVnYWN5LXRydW5rCiszNjQzOSBjNTM4YTc2NDRmZmE2Y2I3OGNlZDNjYjZlMzg0NTA5YjAyNWE4YmUwIGxlZ2FjeS10cnVuaworMzY0NDAgZTZmN2VmNzA3M2M2Nzk2MjBkOTk4ZGJlMDRhNjYxZmFkMzNlYzM2OCBsZWdhY3ktdHJ1bmsKKzM2NDQxIGFmYjQwMzM4M2Y1ZDA3YTJmZDdlYTZmOGU3NTUzODMwOTRjZTQ1NTEgbGVnYWN5LXRydW5rCiszNjQ0MiBmNjAzZTVlOTZhNGY3YzgwOTRjZGVmYWU2NzkzYTNmYzJkYjE2ZTk2IGxlZ2FjeS10cnVuaworMzY0NDMgMmZkNjkyNDA3MjlhYWU1M2Y5ZDM0YzQ4YTc3ZmQwNzFhODZjYmNlMiBsZWdhY3ktdHJ1bmsKKzM2NDQ0IDZhYmE2ZDA3NTg5OWE2MTg3ZDgzZjY3NzQxMzIzZjU0NTM4ZDIxYmQgbGVnYWN5LXRydW5rCiszNjQ0NSAxNDQ2MDk1YTk3MWFiOGEzNTZmNWU2Y2M4ZWJhNjJmYjBiNDE5YmNkIHJlbGVhc2UyMy1tYWludAorMzY0NDYgZjg2YmZjMDNlNzYzNjU0NjY0MmFlYzllMjlkMDY3MzYzYmYwNDI3OCBsZWdhY3ktdHJ1bmsKKzM2NDQ3IDczMDE2YmQwMWE3MTRhZmFjNGNhOTA0M2ZlM2RhYjY4YzBiMTNlZDEgbGVnYWN5LXRydW5rCiszNjQ0OCBkNDJlZmMyYjQ1ZTk1YzY4ZmI0NjEzMWMzMzFlMWYxZDk3NWUzYTI4IGxlZ2FjeS10cnVuaworMzY0NDkgZjlhZDVkMjAyZThlZjQ0MjMxMTc1YWVhMDU3OGZmNzEwYjY1ZWZkNiBsZWdhY3ktdHJ1bmsKKzM2NDUwIDQ1N2ZkNDFjOTYxZDJmZjhhMzE2N2U3N2FlNDQ5OTdiOWQ4ZjIxYmEgbGVnYWN5LXRydW5rCiszNjQ1MSA1MTM5ODkyYWRlNjIxY2Q4YzY3NzYwYWM0ZmNlZTA1MGM1OWNjYmRhIGxlZ2FjeS10cnVuaworMzY0NTIgNjE3M2Q5N2I4MjllNmU0YzEyZDI5NWUwNDE3YTU0YjY4ZGQzZmQ3YSBsZWdhY3ktdHJ1bmsKKzM2NDUzIDA1OWRhZTA2NTg1YmVmYmVhZWUyOTkzYTNjOTlkMzI2MDM1MTQ2MjQgbGVnYWN5LXRydW5rCiszNjQ1NCBjZTMzOTY3YTRhYjBmMzM2MzhlNTExYWE2YmVhYzZkY2YxMjA2OTQ5IGxlZ2FjeS10cnVuaworMzY0NTUgY2YwYzllMTVmNmY0ZDY0ODRmZWQ0YTkxMDlkNzM1MTkyZGRmNzg2ZSByZWxlYXNlMjMtbWFpbnQKKzM2NDU2IGM5ODY5YTE4ZTYyMTMyZDNmOGE1M2YzN2ZiYjE4ZjU5NDMzZjFlMzUgbGVnYWN5LXRydW5rCiszNjQ1NyBhYjE4ZWY4M2Y1YTYyYWM0YTYxZmQxODVjNzkxOWJiZGFjZDc2ZThiIGxlZ2FjeS10cnVuaworMzY0NTggOWI1YzYzODAyYmY5ZTJhYjY4NjQ1YzI1ZmEzNWIzNDQyM2VlMjdiOCBsZWdhY3ktdHJ1bmsKKzM2NDU5IDZmMzZlMDJiMWY2OTdkMGNjMzQ2NmNkMzRlYmZlMTk2ZDcyOTFlYjcgbGVnYWN5LXRydW5rCiszNjQ2MCA5OWFjNTMwZThiM2Y1N2I0MmY4MTVjNDhjN2ZmOGVlMTFhMDA2N2Y5IGxlZ2FjeS10cnVuaworMzY0NjEgZWYyMzk0MDE0ZDI0NWU1MWE0MzIzODNlZmYwMjQ3YjkxYzZlYzVhNyBsZWdhY3ktdHJ1bmsKKzM2NDYyIDJkYmY1OTZlMDUyNGU5NTkxMDBmMzNhODJhYWY5YWM4ZjMzMmVmMTEgbGVnYWN5LXRydW5rCiszNjQ2MyBmZGU0MzI3Y2Q0NzI0ZDRhMDg2OTlkZDYwNmVkODg3ZTdkNTE5ZTk3IGppbS1tb2R1bGF0b3IKKzM2NDY0IGRhMTgyMTBlMzExYzJjMjBlMmMyNDU4MGVlZjhjZTMxZDk2YzAyODggbGVnYWN5LXRydW5rCiszNjQ2NSBkOGYzMTdjYTgwYmQzMGNiZjZjN2ZkMmM2NjAzYzZmYzBkNzZjZDcxIHJlbGVhc2UyMy1tYWludAorMzY0NjYgZGI5OTQ4NDljZGYzZmM0MTM2ZjE1NmZhNDYxNjA5NDk1MjZjNzgxZiBsZWdhY3ktdHJ1bmsKKzM2NDY3IGNmMGJhZWZlOGQ0MDEzMGEzMjg3OGU2Y2ViOWFjZjYyZDU5MzEzNDcgbGVnYWN5LXRydW5rCiszNjQ2OCBmYmI5MDFkNjI5N2I1NWRjM2UzZTc5Mzc2MzJkNDNlZmQyOWRlZTcwIGxlZ2FjeS10cnVuaworMzY0NjkgZmY1OWFkNTg1NjhlMWY1Y2EzNTVjN2E5ZDNkY2Y0MWRkZmNkY2QzNSBsZWdhY3ktdHJ1bmsKKzM2NDcwIGU4OTkwNjBiMWYwNTFlZjE0YmFkNjA5OTk2MjFjZTFiMWFlYjdmYzggbGVnYWN5LXRydW5rCiszNjQ3MSBkYzMyZTBhOGEwZWRiMTVmMmNmYzI4MzViNjUwMjk4ODAyNWI3M2JkIHJlbGVhc2UyMy1tYWludAorMzY0NzIgOWJjMmVlYzE0NzhiNmJhNTVmMGIwN2U2ODkxMmU4NWZlZTUzMjgxMCBsZWdhY3ktdHJ1bmsKKzM2NDczIDljMzQ4NTI2YTY5OTQwN2JjZjMxMTM0NTU4YTgyOTFhYWU4YTNhMzQgbGVnYWN5LXRydW5rCiszNjQ3NCA2YzFjNTk1N2ZlZDVmOWUwZmRjOTgyYjY3MzVmZDAyYzkxZjFlNWZmIHJlbGVhc2UyMy1tYWludAorMzY0NzUgM2MyZDllN2FjNWExZjk5Zjg4Y2NhMGM1YjgyODU1YTFhOGZhNmFjZCBsZWdhY3ktdHJ1bmsKKzM2NDc2IDdiZDA0YTRkMjhiOTMxZjE4OWE2Mzk0ZWRkOTBjNTg1YjRiYjQzNDUgbGVnYWN5LXRydW5rCiszNjQ3NyA5Mjk0NDRjYTIyZDhmNmRmZWM5ZWRlYTM5OWM4ZTdjZWZlZTJjYmNhIHJlbGVhc2UyMy1tYWludAorMzY0NzggZjcyNWExOTEwZDBkMDc3MzNiN2Q1MTZiMzU1Yzc5ZmRkYTc1ODlmMyBsZWdhY3ktdHJ1bmsKKzM2NDc5IDQ2M2JmNWViZjhhMzNhYjQzMzNmNDRkOTc2Njc3ZjY5M2M0YTcxMmYgcmVsZWFzZTIzLW1haW50CiszNjQ4MCAzOTE5Mzc1NzEwNjVhZTEyNjRhYTVhNDhjYmY4Nzk2Mzg1YzcyZDk4IGxlZ2FjeS10cnVuaworMzY0ODEgYmUxNDI3Y2IwNDA2ZjYyOWY3M2ExNDRlMTI0MzFiOGUxY2ExODc1MyBsZWdhY3ktdHJ1bmsKKzM2NDgyIDNjY2EyOGFiMzg1NDQyMTU4YjBjOTJkZmY1YTJmYWFmM2UyYzU1YjggcmVsZWFzZTIzLW1haW50CiszNjQ4MyBjYTJhYTQzYmEzOGI3YWVmMjM3MzE0ZWE2ZWUyY2YxMTVhNTk5MTE4IHJlbGVhc2UyMy1tYWludAorMzY0ODQgNTg4NDNmMTg2ZTgwZmRlZmU0OTFhMzQ5YWM5NWY0N2M0YjdlZGI3YyByZWxlYXNlMjMtbWFpbnQKKzM2NDg1IGMxMzFjNzg4YTA2ZmFjODE4NTMzZGQ3YmFjMzY4MWViZWZjZDI3OGMgcmVsZWFzZTIzLW1haW50CiszNjQ4NiBlNGQ5ZDg0MGNlNmU1NTljYzNlZTVjM2Y1Y2UxY2Y1ZGU4ZmVkNjA4IGxlZ2FjeS10cnVuaworMzY0ODcgNmM1ZjAxZWMyZjc1YjZlMTQ3OWY0NTE1MWE0YjExNGQ4YmIzZGRiOCBsZWdhY3ktdHJ1bmsKKzM2NDg4IDhiZDY3YmFkMTQzY2RjNTYyZGU2MGQ5Njg1ZTk3YzEzMWY1Nzc5Y2MgcmVsZWFzZTIzLW1haW50CiszNjQ4OSAzZWI2ZDI1MzYwYTM3YTAyMjliOWZkNTAxMDFjMTQ0ZWY2NDAwNzE1IGxlZ2FjeS10cnVuaworMzY0OTAgYzEzZDkxMWFlMDViYzBmMzY1YTk3MDAzMTg5NjI4MGZlOGNjNDZjMCBsZWdhY3ktdHJ1bmsKKzM2NDkxIDk0MWMyMzljYjZkMjk2OGMwMzIwOGI3ZjA0ODA3NTlkMWM4NTI0YTQgbGVnYWN5LXRydW5rCiszNjQ5MiA1OTQ5OTZjYWZmMTBkMTNiNjZkMTI3MmRiZTg0MTZiYThkNTNjYzdhIGxlZ2FjeS10cnVuaworMzY0OTMgMjcyYWI1YTU0YjllYmM5YzYxZWQxYTcyZmM4NTE1OTYwNTQxYzgyZCBsZWdhY3ktdHJ1bmsKKzM2NDk0IGExYTk3NzZmYWI1M2VhMmY2NDAyNGVjOTYxMGMwNWI0ZjkwYmRmYWQgbGVnYWN5LXRydW5rCiszNjQ5NSA1MmJlYWZkOTM2YzgwZTU4ZTUzM2ZlNzZiMzQ0NjNmNThhYmEwNTNiIGxlZ2FjeS10cnVuaworMzY0OTYgZDJlNjZlYWE1Zjc0ZTgxZTc4ODljOTExYmJkY2U4YjlmNDQxMmVjNCBsZWdhY3ktdHJ1bmsKKzM2NDk3IDk3NzY4ZDg3Mzk0YTQ0MTA3MjU3M2RjMmMzNTc2Y2ZiOGQ2NzA3MDQgbGVnYWN5LXRydW5rCiszNjQ5OCAzNDc5NjEwZmIyODhkOTk5MmJjODRiODQ4YmNkZDhiN2YwMjU2NDhmIGxlZ2FjeS10cnVuaworMzY0OTkgOTQ5NDczZmE0ODI4NWU1Yzg2YmYyYmM0MmE3OWI3M2Q3OGIyMWE2NSBsZWdhY3ktdHJ1bmsKKzM2NTAwIDg4ZjU0MDU3NjFhZjc2MzRjNzE0MTE0YzE1Y2FiZWRkYzUzNWZlZDYgbGVnYWN5LXRydW5rCiszNjUwMSA2ODdkMmVjZmE2NDg1ZThiNzU4YjJmYTE5ZWQ1MTQ5MzAzYmFiNjk5IGxlZ2FjeS10cnVuaworMzY1MDIgY2FkYTJlOWI2ODVjODllOWI4NzBmNjg3ZWIxOWE2NWY3MDEzZjE4OCBsZWdhY3ktdHJ1bmsKKzM2NTAzIDU1ODFkNjhiM2FlOWU3MjM4NGRmNTFhZmY2OTI1MDIyZjFkNDAyN2QgbGVnYWN5LXRydW5rCiszNjUwNCBkM2Q0MjY0ODNkNzEwNDNiM2I1OTdmY2E1ZjA3ODUwZmZlNjFhOWY1IGxlZ2FjeS10cnVuaworMzY1MDUgMTA0YTdmYzA2YmRmYTJhNGRlZDRkNWU3OTkwZTI4ZDgwMGY4OGQxMiBsZWdhY3ktdHJ1bmsKKzM2NTA2IGJjNGRkMzFjNzNmZGY0Zjg1Njg1ZTE0OWRkYzY4NmVmZTgwZWU5NTQgbGVnYWN5LXRydW5rCiszNjUwNyA4ZmNmMjA1MmQxNmUyMDYyMjkyYTg3ZDBjOGE5NmM1Njc2M2E3OWVjIGxlZ2FjeS10cnVuaworMzY1MDggZDY0ZGNmYjQ5NWIyYjcxNWZkZDE2Y2MzZmRlYTIwNjU4Yzc2ZDBiNyBsZWdhY3ktdHJ1bmsKKzM2NTA5IDM1ZDQwZmY2OWViNjI2NGU5YjkxZTg2MjA2MzQ3YzNmYmI2Mjk0Y2YgbGVnYWN5LXRydW5rCiszNjUxMCA5YTNiNDIxOWJjYmVkZWJhNDljNTFiZmY3OTljZjliYmEwNTM2NmIwIGxlZ2FjeS10cnVuaworMzY1MTEgZmFlNDYwNzk0ZDNkMzlmNjBhOTQwY2Q5NzhlNzVjZWU1ZGQ3YjI4YSBsZWdhY3ktdHJ1bmsKKzM2NTEyIDEzOTlkYzYxNjcyMGY0YjAzYjNjZGMyMmFjZDYxOTNmYmNlYTNhMDUgcmVsZWFzZTIzLW1haW50CiszNjUxMyA1NzdhOWU0YzgyZmI3MWUyNmJlYzllOTIyYTQ4OGYzY2JmNzk1OWNhIGxlZ2FjeS10cnVuaworMzY1MTQgMmJmODY5ZDMxZjBjZTYxNWU3YzMzODVjYzA4M2Q2MTVmNGFlMDIzNiBsZWdhY3ktdHJ1bmsKKzM2NTE1IDVmYjc4YTJkOTRmMGFkZTBkOWE1MmFhNTczYTJkY2YzY2FmZjY0YjIgbGVnYWN5LXRydW5rCiszNjUxNiAyMTFkYjY3Y2NkMDllZDk0MzRlN2YwOTJlZmYyYTZkNzc3ZTk0YzVkIHJlbGVhc2UyMy1tYWludAorMzY1MTcgNzgwYTMzNzg3NDU4ZWNlMjEzYjM2NjdjYjg3ZDgxMDllZWExOTZhOSBsZWdhY3ktdHJ1bmsKKzM2NTE4IDNjMzgyZDkwZjMwMmQzZTU2MjhmZjc2MzFkZjdmYjljNGViNTAzYmIgbGVnYWN5LXRydW5rCiszNjUxOSBmZjI2NzE0YmY4NmRjNGMyMmI0ZTE1OGMxNjczNWI2NjE0Yzk4ODBmIGxlZ2FjeS10cnVuaworMzY1MjAgYmU2ZjJlMWE3OGI3NjNjMjZiYjEyZDM1Yjk3M2M2OTYyYTU0OTM2NyBsZWdhY3ktdHJ1bmsKKzM2NTIxIDQ5YmFhZDdiMDMyZTBiMGM0ZGFiZmRmYWU0NDA2NGFiNDRhNjMxZTggbGVnYWN5LXRydW5rCiszNjUyMiA3NzQyZjg1YTM3MjM4ZTJjNWViMGJjMDhkMmNjNDMwZWMxYjY1MTY5IGxlZ2FjeS10cnVuaworMzY1MjMgZGMyZmU3N2RkMTY3ZWRjODY1MWY1MzAyNGEwNTI2N2FmNzhjNDE4ZiBsZWdhY3ktdHJ1bmsKKzM2NTI0IDA3MjlkMWRiNTExODM4MGRkMDcwMzIwOGMyNmU2OThkZjRmZmM0ZGEgbGVnYWN5LXRydW5rCiszNjUyNSBlZDM2NjIxYjEyNmExZTc5ODU0NGQzZDJhYTE1MTEwYjRkZmQwZWU0IGxlZ2FjeS10cnVuaworMzY1MjYgZGY0ZTZjYzY2NjFkMDQ1ODg5OTQ5YzcwZWU1N2M3MGM0M2QzZWE1NyByZWxlYXNlMjMtbWFpbnQKKzM2NTI3IDRiZTI4MDkzZTQ4MGVhYzE1YWMzNDk3NDI3Yjk3NzJlM2E5YTU5MGIgcmVsZWFzZTIzLW1haW50CiszNjUyOCBhYjBiMmE1ODg4ZjllNzBkMTFmNmI3YzlmMGM3NTdiNTk1ODdjNzE3IGxlZ2FjeS10cnVuaworMzY1MjkgNTA2OWY1YmQ2NmYzZjZkNmI3MGZkMTEzNDYxOWQ2ZjBiNjE0ZDFkYSByZWxlYXNlMjMtbWFpbnQKKzM2NTMwIGQxZWY4NmY4Nzg1ZjkzZGY0OGNkYTA2ZmQ0NjExYmJhOGYzZmFlYzAgcmVsZWFzZTIzLW1haW50CiszNjUzMSBmMDg1Mjk4NzlkYjFhZDNkNWNhNDU3ZWZkYzZiYzk0MTgwN2FkOTRjIGxlZ2FjeS10cnVuaworMzY1MzIgYWJlMDRlNzdhNGIwZmQ3YTdlODc4NmZkMjQyZjdkM2YzM2RjNjhlZSBsZWdhY3ktdHJ1bmsKKzM2NTMzIDg0NmFjZTU3Mzg5YzkyYTlkZDdlNGY4ODA2ZDEzMWViYTAzMWEyMzEgbGVnYWN5LXRydW5rCiszNjUzNCBkZjg4ZmFkYmEyZjU2Y2JmZTQ0MTkyMmU3ODk0OTMzYzE5Y2UwZGZlIGxlZ2FjeS10cnVuaworMzY1MzUgYzdjOWI2OGRkZGEyOWM1NjFkYzgyODM3MDdmYjlhY2MyMjcyMDZiYSBsZWdhY3ktdHJ1bmsKKzM2NTM2IDI1NWFlMjNjNzhmYjYxOTNiZmM1ZjUzOGM2ZjZjMjM3OTc5YmUzZTggbGVnYWN5LXRydW5rCiszNjUzNyAzOGFkOWM2ZTcxN2M4YjBiOGJjOTcyZjYxZjMzODJmMmEwODc1MzdhIGxlZ2FjeS10cnVuaworMzY1MzggMTc0MDY1NDNmMTViMjdlOGFiY2I5OGUzZjM3MDlhZmJlMGU2YzgzYSBsZWdhY3ktdHJ1bmsKKzM2NTM5IDViMGM4N2RlNmQwNTA5NmVkNDE4MTA0YzZiN2M2ZGM3NzU0NjBlMTMgbGVnYWN5LXRydW5rCiszNjU0MCBmNzljZjEzYTlhN2QxMGE4MzJhYmUwMjI2NWQ3ZTExNTU1ZGNjNGMyIGxlZ2FjeS10cnVuaworMzY1NDEgMGU4OTBhYzFjMGYyNjVmNDQ3ZjI3ZmYzN2ZjZjAzMmY4MzhiYmU5NiBsZWdhY3ktdHJ1bmsKKzM2NTQyIDFiZDMzODNiYWQ5ODUwMzY0ODAzNjViZWQzMzkxZmY5NjY3MjQ3NDAgbGVnYWN5LXRydW5rCiszNjU0MyAxMDk1NTBmNWE4Mjk2MzBhOGVmZjIxMDgyYzBlMGViZjBmMDgyZTNhIGxlZ2FjeS10cnVuaworMzY1NDQgY2JiMjVmZGE5NWE1ODBmMmM2N2Y0YWE5YmQ0NDA3ODg4MmU2YjQ2YyBsZWdhY3ktdHJ1bmsKKzM2NTQ1IGQwOWRhNzE0MTNjYTA0ZmNiNmNmMzNmYWNmYTIzYzVhNDBhZmViZGUgbGVnYWN5LXRydW5rCiszNjU0NiA0ZDQzYjBhYmMyMmE4YjYxZmUyYWM1MGNlYWU5OTZmY2U3YTYzNDkyIGxlZ2FjeS10cnVuaworMzY1NDcgZWZjYTU1YmJiYTBhYjEyYTA0Zjk3NmQ0Njk2MzliNTA1MDJjMzcyZiBsZWdhY3ktdHJ1bmsKKzM2NTQ4IDZhY2Q3MDcwZWQ2NmY3YWQ2NTMxMGRiMDFhMmY4Y2JhYThmN2MzYTYgbGVnYWN5LXRydW5rCiszNjU0OSA3NTU5YzdlYjQ3ODAyNzQzNDk4NjI2OTY4YzYzYjg0NDFhNTYwYzE1IGxlZ2FjeS10cnVuaworMzY1NTAgZTRjYzc4ODg0ZmM0MjZjMjZkMjE5MmIyMTY1NTlmNDVhMjY5ZTA1OSBsZWdhY3ktdHJ1bmsKKzM2NTUxIDY5ZGFkYzJjYTE0ZGZjYmY2MmFlMWExNmJlMjkwM2ZiMDM4MDVjMmMgbGVnYWN5LXRydW5rCiszNjU1MiA4MTc4NGY2NjY3ODliOTAyNGY4NzZlNTFjYjk5ZmRkODZjNWM1NTdkIGxlZ2FjeS10cnVuaworMzY1NTMgZTEzNWU4MmNmNmU0ODkxNmY2YjlkNDY1Y2E5Y2E1N2JmZmZhZmUwOCBsZWdhY3ktdHJ1bmsKKzM2NTU0IDA3YjQ4ZWFmMmIwMWViYzQ4YzRmYTQwN2I2YjYzNzFlODUzM2M2YzggbGVnYWN5LXRydW5rCiszNjU1NSBiZWJjYjc5ZjM3Y2JjOTQ5ODM5NzY0MTNkMDQ0OTJmYWNhODczNzMxIGxlZ2FjeS10cnVuaworMzY1NTYgZGMzZjA0YWZlZjc1NzBiNjgzMWUwYWM0NTI0NDQ0M2U1MmM5NjI0OCBsZWdhY3ktdHJ1bmsKKzM2NTU3IDk3N2YyNjdiMDBmOTNlYzYyOTE5ZDc2YTUxM2IzZjEzM2M0MTkwNTUgbGVnYWN5LXRydW5rCiszNjU1OCBiMWQxNDJkNzE0ODI4OTk4NzA0NjA2ZGFmZmRmMTY1YzdkNDdlOTBkIGxlZ2FjeS10cnVuaworMzY1NTkgMmJjNjZmMWRmN2NjN2M4MjNmZGEzZWU2NGIyY2NlMjBlYTc3ZTg5YSBsZWdhY3ktdHJ1bmsKKzM2NTYwIGMzYTA5NmJmYmQ2YmU5Mzk1OTkwZTc5MDhjNWY4ODdjMzUzN2E4NjcgbGVnYWN5LXRydW5rCiszNjU2MSAyODI5MjdmN2JkZTI0MmRhN2NjMzk1OWEzM2ZlOGZiNTY0YTgwMzNlIGxlZ2FjeS10cnVuaworMzY1NjIgOGJkZDc5NGE0MTk3ZTg5NzExMzYxMTFiYTFlYzFiOTNmY2E1MTRmOSBsZWdhY3ktdHJ1bmsKKzM2NTYzIGMxYmQxYzhlNjRiNDU3NDg1OWM5MWUzYjM3Zjk3MzhiZDc2N2Y3ZDggbGVnYWN5LXRydW5rCiszNjU2NCBiNmYxMjUyYjY4MWM1MWNjMDgzYzRmZjczNjlkMDQ3NWE3NTYwODIwIGxlZ2FjeS10cnVuaworMzY1NjUgZjk3MDk5ZjlmZjFjMzFmODQ5ZmE3YTVkZjU5MTI3MzYwODI5NDIyYyBsZWdhY3ktdHJ1bmsKKzM2NTY2IDMzNzdhNzIzNzNmYmY4NWQ1NjU4Yzk2NmZjMDYyMDc1MTYwZjE0MDYgbGVnYWN5LXRydW5rCiszNjU2NyA0ZTA3ZWFjYjFiZGZkOGQ3NTRhMzg1MTA4OThiY2Q3ZmM4MDMzZGExIGxlZ2FjeS10cnVuaworMzY1NjggZDE0MzZjMjhkY2EzMmVlMmU2Nzc3MzUyMTllZWE0MTQ2NmZhYWJhYiBsZWdhY3ktdHJ1bmsKKzM2NTY5IGRiMWEyN2I2ZDc3NTBlYzI3NmI5NzNiZDFkOWNkOWI2ODA2NDM1YzcgbGVnYWN5LXRydW5rCiszNjU3MCBjMTgyNGQ2OGQxMGVhYzQzYzk4M2MxOWY4MTdmYmMxMTkxNmY1NDMwIGxlZ2FjeS10cnVuaworMzY1NzEgZTQ1NzU1MTllYzI2MjNhMGZkNTU5Mzk3N2I5ZmUxYzEyZGMzNjE2YiBsZWdhY3ktdHJ1bmsKKzM2NTcyIDA1Y2EyMjMyZWZjYmRiZDM5Njg5OWM2Zjg5NzM1OTE4ZGViNmFkNWEgcmVsZWFzZTIzLW1haW50CiszNjU3MyBiNzk1MWUxZjVkZGYyOWIwYjQ0MDMwNDNhNDM1OThmZjYxNjEwMTMyIGxlZ2FjeS10cnVuaworMzY1NzQgNWQ5ZjcyZDA4NDNlZWE5ZDhlY2UzY2JkYmNlN2I2ZTEwMGU0M2ZjMyBsZWdhY3ktdHJ1bmsKKzM2NTc1IDk1ZWI2ZTE4YTU0MjczZDM1Y2Y4OTY5Y2IzYWZhZDU0NjQzZWIyMzcgbGVnYWN5LXRydW5rCiszNjU3NiBkYmQzYTA0ZWIwYzY0ODk1ODczNmY0MDg5NmEzNzI2MTAyNWEzMzgwIGxlZ2FjeS10cnVuaworMzY1NzcgYjU0NTliZjQ4MjYyNGJhMWVmMmQ1NGI4YmNmYzJmMjNmMjM2Y2I1YyBsZWdhY3ktdHJ1bmsKKzM2NTc4IDkzOGRjMzJkZGJjNDFmMTQ1OGQyZDZiNzQ1YzM2NjBmNjFjZjE2NDUgbGVnYWN5LXRydW5rCiszNjU3OSAyNTc1NjNkY2I0NDIzNDRmYWFmOTg3Y2M4MjNjNGFiOWU0ZTgwNzIyIGxlZ2FjeS10cnVuaworMzY1ODAgZGIyNmIzZGJlODAyN2NjOWIwNTBlYzM0YzZjYzhhNWUxNzhiNTNlMSBsZWdhY3ktdHJ1bmsKKzM2NTgxIDI2Y2IwNTg5MDdmMjFiNzgxNjRhOWIyMjk0MGJlZDJiNzZhNThkOTggbGVnYWN5LXRydW5rCiszNjU4MiA4NTllYTg2MTJlYjBkYzUyOGI0YTE0ZDE3ZjBiMjNmMGIzZGMyOTM3IGxlZ2FjeS10cnVuaworMzY1ODMgZDE3NzdmNTE5MjNiYjYxODE1NDBhYzFmMWU2YjcyMjljNWQ3OWYzNSBsZWdhY3ktdHJ1bmsKKzM2NTg0IGRjYzVjMmQ1OGYzMjVmZmJjODExYmYyMDdhMjE3YTM1YzVmN2FhOGYgcmVsZWFzZTIzLW1haW50CiszNjU4NSA2MWJlOTA0YTFkNGUzNTUzZDdhMmQ3MWQyOTA1YjI5M2JjNWY3M2IyIGxlZ2FjeS10cnVuaworMzY1ODYgNzZhZDgxNGJjNjdjOTRlZWZmYjk3ODA2ZTk1M2Y4YWExNjBkMDFhOCBsZWdhY3ktdHJ1bmsKKzM2NTg3IDhhZDVhMTYyMDA5MmU0ZDBlZTYxNTQzZWYzMDU4ZjdlNDdjMTE1YTIgbGVnYWN5LXRydW5rCiszNjU4OCBlY2IwYzk3ZjFlNDI2MGRhYTcyN2E3MTFmM2ZmNGNkMjhlOTE2MmUwIGxlZ2FjeS10cnVuaworMzY1ODkgNTBlY2UzZDRmZjM3MjI4NzhiMjA2ZTUyM2ExMmRhNTM3ODlhMjE3NSBsZWdhY3ktdHJ1bmsKKzM2NTkwIGQxNTUxN2YyYWJlOGJjZjI4YTU5MDc0YmE1MzljY2JmMDU1YzI3Y2IgbGVnYWN5LXRydW5rCiszNjU5MSBhOTFlN2E0NWYxNDI0MWY2OTZlZjkxNTA0YTBmZmFlNWU4ZTllYmJlIGxlZ2FjeS10cnVuaworMzY1OTIgZmZhOGFiMDA4MWYyMTNjNDk1NzQ3OGYxYjAwNDBiODIxMTM5NjAyNCBsZWdhY3ktdHJ1bmsKKzM2NTkzIDk4M2E5MWI1MGY2ZTc4NzUwMjUyMDViNjBhZDU0Mjk0MzkyMzAxMzIgbGVnYWN5LXRydW5rCiszNjU5NCBhM2IxZDZjOTllNDYyMWJlNGY3ZDQ5NDc0MTNiMmRmY2NiNTVlNjgyIGxlZ2FjeS10cnVuaworMzY1OTUgNjJmODQzZmNiODIzNzk3YmNjOWE1OWFhMWNmNjNmNGY4ZWQ3OTczZSBsZWdhY3ktdHJ1bmsKKzM2NTk2IDJlYzQ1MTIzMGI4ZWJjYjMyNjU2NWFhOTI0ZThmZTJlN2VjNzBlYTkgbGVnYWN5LXRydW5rCiszNjU5NyBiMzAxZTVkZWU5MzhjMjM4YTAxMGQ4MjQyYjFiZWY2Y2RkYjUyNzkzIGxlZ2FjeS10cnVuaworMzY1OTggOGE5MWNkN2Q3ZTgyNTRkZDVjMWQyNzU1MmE3MDQ0NTAyOTQwMjcxYyBsZWdhY3ktdHJ1bmsKKzM2NTk5IDgyNjA2OWI3MjVkYjI2OWVhMWNkYzQ0ZjRhNjlhYTczM2IyNTRhZjUgbGVnYWN5LXRydW5rCiszNjYwMCA2ODc1Y2YwODgyZTAxMjNjYjY0NjJhYjdiZTBkY2QzMTQ3MDRkZGYyIHJlbGVhc2UyMy1tYWludAorMzY2MDEgMTNkMjAzMjI3ODdkNWEzMmFiMDE3NzE4YzNlZjNmMWJiMzhhNGI1OSBsZWdhY3ktdHJ1bmsKKzM2NjAyIDdhZjY5NWJjNTQ4MDkyNjVhYTI4YzgxNGM1MzM1NTBjYjJiOGM1MjkgbGVnYWN5LXRydW5rCiszNjYwMyAzMTkzOGE0NjNmMjg3ZThmNjc0NjQ0NmRlYmIzZjJkN2NhYjg2YTg1IHJlbGVhc2UyMy1tYWludAorMzY2MDQgNTE3ZTAwYWYxM2ExYTc4MzExNTJkMTkxNTIwNmQ1ZjY4MDQyMGNjMiByZWxlYXNlMjMtbWFpbnQKKzM2NjA1IGNhYWVmMzAyZjFlMzNjNTk0MzNmOThmODQyZDYyODBmYWI5MGQxZDYgbGVnYWN5LXRydW5rCiszNjYwNiA3OTE3ZmQyYzQyOTgzODFmMmUyNDExMzUxNTk1NDdmNTkyZDAyZmM4IGxlZ2FjeS10cnVuaworMzY2MDcgZDZlNzNlNTI4ODBlNDc3OTdlY2NhN2ZlZDMzYzhiZDIyNWI0MzJhMyBsZWdhY3ktdHJ1bmsKKzM2NjA4IGU2Yjg0N2IwNzU1M2YzY2VlNjY4YWNhMzM2Y2Y2YTQzZWEzNjk2MDEgbGVnYWN5LXRydW5rCiszNjYwOSAwMzRiM2I5MmM1ZTAzMTM5MDRjMDZhMWUzZmI3NzI1MmJkYmY1ZGRhIHJlbGVhc2UyMy1tYWludAorMzY2MTAgNGY0Yjc5NTYyODdjYWI2ODkzYTY3YzQ5YzQxNTA1MjIwNzY5YWI2YyBsZWdhY3ktdHJ1bmsKKzM2NjExIDgwN2ZiZThkMzU4NDAxM2U2NTA3MzAyYmVkOWQ4Nzg3YzM0ODhjNzEgcmVsZWFzZTIzLW1haW50CiszNjYxMiAwMDg5MjQyMGUwZGY1ZTA4NjVjZWRhNzYwZjNhOWIzN2NlM2IzN2ZmIGxlZ2FjeS10cnVuaworMzY2MTMgNmRmOTMyMmQ2YWI4MjM3ODlmOGIzMWVjN2U2MjU0ZGNkMzQ3Y2UzNSBsZWdhY3ktdHJ1bmsKKzM2NjE0IGE5NDBiNmMwN2U1Nzc1ZWJhM2JlZDc0MTlmOWEwNmExMDZkMTVjYjcgbGVnYWN5LXRydW5rCiszNjYxNSA1NWY3M2M4MmUzMDRiYjg5ZGM4ZTY0OTFmZTBmNTg0N2QwZDc2NzQ2IHJlbGVhc2UyMy1tYWludAorMzY2MTYgNzMwNDUxNDNiZTYzZThjZmZiYzZmZTBkZDdjOWQxNTE1NTlkOWYxNyBsZWdhY3ktdHJ1bmsKKzM2NjE3IDFlMjE4N2Y1MDYzMTcxNTdjMzYwOTNmMzcxZGVkZmY1MjgyYzhlOTcgbGVnYWN5LXRydW5rCiszNjYxOCAwZjljMzliM2U1ZjAyZjQ4NTU0ZjkyN2FkNGM1YWYxMDlkZGU3MDQ3IGxlZ2FjeS10cnVuaworMzY2MTkgNDZlMDQzMWM5NzAxY2FjMGJhMzBmZjhkYTE5ZGFkNDE2ODU4MjE4NSBsZWdhY3ktdHJ1bmsKKzM2NjIwIGZhNDljMWUyZDJjMTA3MGNlOTY0YzM0Yjk4ZjVmNDI5NTI4MjBkODAgbGVnYWN5LXRydW5rCiszNjYyMSBlYTU0ZmRiODY1MzBlY2U1NGQ0YWQ5NDMxMTNhNmIzYjRhOTUwNTQ0IGxlZ2FjeS10cnVuaworMzY2MjIgOTI2N2FlYjcyOTg1ZDA1MjRiZWJhZWQ5ZGNkMTI1MjYyZmMyNTNkYSBsZWdhY3ktdHJ1bmsKKzM2NjIzIGVhYThhMzdlMWU4NTBjZTY2NmZiNGI0NzU1YmMzMmY2YmUyYWI1OTEgbGVnYWN5LXRydW5rCiszNjYyNCBmZTQxNDViYTM5YmZmYmE2MTc4MjM3YWY1YjU4NDZmMjY4OTA2NDg5IHJlbGVhc2UyMy1tYWludAorMzY2MjUgMTZkZTRmOTBlZjQ0NjhjYjZmOWU3MzlmM2I3NzYxZDUyYTRjOTYzMSBsZWdhY3ktdHJ1bmsKKzM2NjI2IGQzMGQ1MWIyZWZlMDEyYThmZDVjMTE4NmQ4NzE5MmNhOWNmZjQ1MTIgbGVnYWN5LXRydW5rCiszNjYyNyBkYWMyODEzNmQ1OWIwYWM1N2I5NjFhNDc1ZjEzOGIzODIwMjczN2FhIGxlZ2FjeS10cnVuaworMzY2MjggY2RhZDYyNTMzMDk0ZjBjYTFiNzQ1N2I0Nzc4NGRlNDdjNTVhODI1NiBsZWdhY3ktdHJ1bmsKKzM2NjI5IGI4YmM1OTU3OGE0NzU2MzA4NzljNWQ5MDgxMDIxNWQxNWMwZWQ3ZWMgbGVnYWN5LXRydW5rCiszNjYzMCAzZTA0MjMzODUyZDRmYWRmZGMwMDgyNDAxYjI4OTVmOWIxNmRmYjFmIGxlZ2FjeS10cnVuaworMzY2MzEgNGE1MWNkY2Y4NjE1MzM2NjhiMGVmY2JiODlmNjIzN2Y4OTM4MDA5MyBsZWdhY3ktdHJ1bmsKKzM2NjMyIGVkYmFmNjEwMjI3YjlmMzE2MjQ1ZTlmZDJkYzRmNWM1OWI1YzQ2N2IgbGVnYWN5LXRydW5rCiszNjYzMyBiMjg3OWE3MmIzNDY2MWU5MGIyMjczZjkwMzE2OTY5NmJlYWFmOTU2IGxlZ2FjeS10cnVuaworMzY2MzQgNjIzYWUxMjkzMGVhMTZhZDY5NDhjMWQzODU3Y2RkYjA0MmVjMDJiNyBsZWdhY3ktdHJ1bmsKKzM2NjM1IDZlNzlkZWE4NTE4OWFmYTk0NGY3MjI1NTllZjcxMGJkYTVhMjgzODEgbGVnYWN5LXRydW5rCiszNjYzNiBkNWM5N2Q2OWRmYzdjMTcxYzVmMDI5OGM3MDgxYzk4MzIyODJmODg4IGxlZ2FjeS10cnVuaworMzY2MzcgOTU4MmZhMmU1ZTBkYTJhMDZmZTE4MGU4MDM1YTRmODlhYzM2NmEzMSBsZWdhY3ktdHJ1bmsKKzM2NjM4IGY2MTZkNjUzNTk5MzMwNjNjOTRjZDg0OTdkMzVlYTFkZjUzMDg0N2IgcmVsZWFzZTIzLW1haW50CiszNjYzOSBlZTdiODQxMDExNjA0ZjQ5OWYxNDgwNjMyYTE0ODA0OWU1ZjM0MjkzIGxlZ2FjeS10cnVuaworMzY2NDAgZDJhZGJhNDc4MWQ1YjA3OThhZTY4NDFlYmQyMjRmZDIyZGY3YzhlZCByZWxlYXNlMjMtbWFpbnQKKzM2NjQxIGJmNjg2ZWY5MmNiMGJkMjQyZTYyN2I4YzM0Y2Q0N2NhN2Y5MzZlN2MgbGVnYWN5LXRydW5rCiszNjY0MiBiZjZhMjA2OTA4MGM2YjFmNmNiN2UyNjNjYjc5NjMxMTE4ODNmZGIyIGxlZ2FjeS10cnVuaworMzY2NDMgZDFjY2QyZjQ1ZGEzNDE3NWM4OWZlZmQxYjZiODQ2Yzg2MDc4MWFjYSByZWxlYXNlMjMtbWFpbnQKKzM2NjQ0IDgwYWNhYjljM2MxNzYxNzdlOGNkNTVlODEzNzE5Nzk0ODBjMTAwZTIgcmVsZWFzZTIzLW1haW50CiszNjY0NSBiMzU4ZDJmNDRhNzQwMmRjNDcwOWI0NDllMzI5ZTJlMGIwZTYwZWQ4IHJlbGVhc2UyMy1tYWludAorMzY2NDYgMzgzNWRmZjJlZmRiNWFkMDJiODllYTRkYjhjM2JkYzQwODM4MmNkOSBsZWdhY3ktdHJ1bmsKKzM2NjQ3IGZiYjJkMzRmNzVhM2JmNzAxMjVmMjFkNzUzZTE3OWIwMjZmMDFiMDQgcmVsZWFzZTIzLW1haW50CiszNjY0OCA3MTYzM2QzN2U5OGU5MmNmOTY1OWJhYTkwMThiZmViYTQ2ODViOGQwIHJlbGVhc2UyMy1tYWludAorMzY2NDkgYzZjNThiNjFmNmI1YThmMDM0YTYwMTFkYzZlOTBhOTY1MjJkOTI3ZiBsZWdhY3ktdHJ1bmsKKzM2NjUwIGQ5NTY4MjA4OTUwNTBiNDk1OWNhMjhkZTIyMDBmOTAyOGY1ZTUyMDQgbGVnYWN5LXRydW5rCiszNjY1MSAzN2E3NWIyYjRjMjk0MDcxNzU5NjY4OWIxMDlkZTQzMzRiMjI1NTc1IGxlZ2FjeS10cnVuaworMzY2NTIgMDdhNTdkODliMWUwZGZlOGM5ZTczYmZjMTFjNzVhZjE5ZjY2OWQxNiBsZWdhY3ktdHJ1bmsKKzM2NjUzIGNiZDRhZTc0ODkwZDNjMTA0ZWQ2YjIzNWNmYzE3MWEwNjY4NjBlZWQgbGVnYWN5LXRydW5rCiszNjY1NCAwNjBkZTUwNGViYmVhZmMwNzY4M2JiYTgwNGExNjkxYzlmOGMwZDcxIGxlZ2FjeS10cnVuaworMzY2NTUgNDM1M2ZmYzQzN2YxOWZkODgxNDVkZGVkODM1ODA4Y2Y3OTIwYzM0MSBsZWdhY3ktdHJ1bmsKKzM2NjU2IGZhNGM3MDYzYTczNmE1YzllMzQyOGU5ODg3NTBmNjgxYTQ5ZmY1NjggbGVnYWN5LXRydW5rCiszNjY1NyBkYWM5ZDA2NjRmYzM5MzM0NTA4NTc1MDI5OGM5NDg5YWFlZDljNjRkIGxlZ2FjeS10cnVuaworMzY2NTggNzE4MzA1MTEyZjlmZDYxMWMwOTA0MDkxNjVkYmRhMTYxYzNiNjhkOCBsZWdhY3ktdHJ1bmsKKzM2NjU5IGI1OGNmNmI1ZmM5MTQzODBkNTBkMmViYzYxZTM0YTYzY2IwMmZkYzkgbGVnYWN5LXRydW5rCiszNjY2MCAxZGQzY2M5MjdkMzc3ZjVlOTM5ZjNkNTVlOGY3NDIxNGEzYzNmYzMxIGxlZ2FjeS10cnVuaworMzY2NjEgNzBlOGY2MzRhNTg5MDI5YmY4ZGU2NTFiODlhMGFmZjI3ZGRkNzJmYSBsZWdhY3ktdHJ1bmsKKzM2NjYyIDI0ZGQxZDA3YWZkYmMwNjg5ZjI0NGIyOWMxNThiYTk5ZmNmZmI1MmYgbGVnYWN5LXRydW5rCiszNjY2MyA3YjQ0YzI3ODI3OTNlOWM2MzQ5NjNlNDRiZjIxMDdlYTdjMzVkMTY4IGxlZ2FjeS10cnVuaworMzY2NjQgMjEzMThkNzY5NWY5Y2QzZjU2MmM3N2Y5ODM0ZWM2MDZlMTgzZGM4ZiBsZWdhY3ktdHJ1bmsKKzM2NjY1IDA4NTZkOThlMmE2ODNkYTZiM2Y3NWYzMzY4ODcxYmYyMTg0MjhjYWIgbGVnYWN5LXRydW5rCiszNjY2NiBkNWI3NmExNjczMjNhYTE1MzBiOWY5NjRjN2QyODkyOTk5NWY2M2RmIGxlZ2FjeS10cnVuaworMzY2NjcgZGFiM2YwODY2OGRmMjNhZTM1NmVlYzA5MzAxODk0MjFkMjFkZDIyNSBsZWdhY3ktdHJ1bmsKKzM2NjY4IGE0ZjE4Yzg5ODY1ZmI4ZDBkMmFiMmI4MmVlOWYxODdhNjZmYTE4MTIgbGVnYWN5LXRydW5rCiszNjY2OSBkYjIxMDgxZjViYzFiMTYxODgxMjFiZGE5YTBlMGYzODQ4NzRkOWM2IGxlZ2FjeS10cnVuaworMzY2NzAgODY1NTEzMTEyZjdhMGU3OTE4ZmMzMzAxNWQxM2YxNzU5MjU5ZTIyZSByZWxlYXNlMjMtbWFpbnQKKzM2NjcxIDVlNDgwYTVjNjQ3ZGE3MzQ0OWJmM2U5ODJmYTJmNWUyMGYyYWJhNzYgbGVnYWN5LXRydW5rCiszNjY3MiBlM2EzNWZiY2U4ZWMyMjE3NmQzODkzMjg1NjNlMzA0MmQxMWVmZGRhIGxlZ2FjeS10cnVuaworMzY2NzMgZTdjYzc0MTUyYzU1Mjk3YzNjYTlmOGQ2ZGNmZjE5OGUyMDRlODQ5ZiByZWxlYXNlMjMtbWFpbnQKKzM2Njc0IDA5ZTYzM2M1MjczMDc5YWQ5YzQ1YWM1NWMxZDI4Y2U4ZDU2YTE0ZTIgbGVnYWN5LXRydW5rCiszNjY3NSAwNTJhNDNhYTM1ZWNmNzJlZDIyODg1MWNhZDIwYmM1ZDdhZjEzMTQzIGxlZ2FjeS10cnVuaworMzY2NzYgMGY5NGY0ODg2YmY1NWE4YTU1MGYxYjA2OTU4ZjAxYTA1YjU4YjY2MiBsZWdhY3ktdHJ1bmsKKzM2Njc3IDE2ODIyMDFmMDViMmE4NDUwZTY1YmI2OTNiMzNlNjM1ZGRjMGZmNWQgbGVnYWN5LXRydW5rCiszNjY3OCBkY2IyNDFjODlmNDI5NzJjNzEyMGFkYjA1NTc3MmExNTg2NmIzMWY0IGxlZ2FjeS10cnVuaworMzY2NzkgOTZkOTkxNDc3YTgyOWNhNzdkMTJkOWM4MzVjZTAyOTAyZmFkN2Q1ZiBsZWdhY3ktdHJ1bmsKKzM2NjgwIDA2YTYzYzM1ZGY5ZTNjNjVjZGIyYWU4ODY2MDVhYjM1OGYwZGY0NWQgbGVnYWN5LXRydW5rCiszNjY4MSA3MjRmYjI2ZWEwNWYyNGM5YTIzYzg3YWNkM2FjNGVhODYyNjI3YjU4IGxlZ2FjeS10cnVuaworMzY2ODIgZmEwNTI2YzMwZGE4MDVmODEwZjdlODcwODM1NWU3ZWRiYThiMmQ0NyBsZWdhY3ktdHJ1bmsKKzM2NjgzIDQ1ZjMyMjJiODRlZTBlZTMxZjI3YjJiY2QyNjE2ODVhMzFiYzk1ODggbGVnYWN5LXRydW5rCiszNjY4NCA0OGVhZTIwZDcwYzU4Yjg2YzRlM2YwNzNjMGVlZjlkMDFkY2IxODExIGxlZ2FjeS10cnVuaworMzY2ODUgZmMzNjg3YTYyN2I0MzQzYzA5ZTk1MGQ2MTk1MzkyYWJhNTM1N2RkZiBsZWdhY3ktdHJ1bmsKKzM2Njg2IDlhMDBiNjVhZWNkY2M4NDM3ZTIzMDcwNWJiZWU0NTAxOTA4MDBiYmYgbGVnYWN5LXRydW5rCiszNjY4NyA2ZWEzMmIwZTk1MDdmYTI2ZjFmZDVjMmI4YjIxNTgwNDNhOTNhOWJlIGxlZ2FjeS10cnVuaworMzY2ODggNjBhNzA4YmYzNTFhZTExZTk3OTJjYjExMjk1NjAzZDQ0NTkzNzY3ZSByZWxlYXNlMjMtbWFpbnQKKzM2Njg5IGM1NzAxMGRiMTIzZWVhYzE4N2NiNGJlN2MwZTMwYWE0OTllMzczNWEgbGVnYWN5LXRydW5rCiszNjY5MCBhNTNiNWNlZmE2MGQ3ZDA1MjRmODQwM2EyZjFlNjI5YTNiMGIzM2RkIGxlZ2FjeS10cnVuaworMzY2OTEgOGQyNTgzNWY4OGFlNDQ1MGU5ZDMyOWJkOGQxOGIxZjA5ZjM2NWFiMiBsZWdhY3ktdHJ1bmsKKzM2NjkyIGJkNDZlNmY4MDYyM2JmOWQyMjk2ODQ1NWRjMmQwOTU0NDM5MzVlMGIgbGVnYWN5LXRydW5rCiszNjY5MyBjYTZlZmM1NGIxOWZmNzE5Y2YzNjgyMDE0YzhmN2JkZWExOTJlMzk2IGxlZ2FjeS10cnVuaworMzY2OTQgMTk1NjU1Mjk5ZWQzNjQ4NzRhZDYxNTYzZDJmNDFjYWQ4ODMwYzE2YSBsZWdhY3ktdHJ1bmsKKzM2Njk1IDZiZTg5NDAxNGE4YzNiZmQ2ZjYxN2Q5MTZlMzU0YzY4ZGI0ZTc3M2YgbGVnYWN5LXRydW5rCiszNjY5NiBkMDEzMzkzYzdkOTgyZjRhNmMyNGI2MzEzMTRiYzA0Nzc5OTA5Y2Y1IGxlZ2FjeS10cnVuaworMzY2OTcgZWYwOGY0OGI2M2ExY2U1NGUxYjNmNDczZDFlMmU2NjYyMDhlZGIzNiBsZWdhY3ktdHJ1bmsKKzM2Njk4IDYyYzUzYjhlNGFlYjMxYjZmMDQxNzE5NjVmMzEyZTFlZjZkZWZkZGYgbGVnYWN5LXRydW5rCiszNjY5OSBiMzkwY2Q5MWM3NmIxMWY1ODYyZjU0ZTNlYzBhMTFkYmM0NGY4NThiIGxlZ2FjeS10cnVuaworMzY3MDAgMDE4YzQzMDQ1YjUzZTYzOGVjODljNzk5OTU1NWMwMjIwMmJmNzQ4OSBsZWdhY3ktdHJ1bmsKKzM2NzAxIDI5MjlmYzU0YjQ5YTVkNDdiODViYjRmYWI1ZDg0OGNkNzI3MmEyYWQgbGVnYWN5LXRydW5rCiszNjcwMiBjYTFhZWI4YWIzODAyY2IyN2NhOGNhMmQ5OGQyZDQ3ZjMzMmE0Mjk0IGxlZ2FjeS10cnVuaworMzY3MDMgZDNkNjA5ZDY1N2ZkMjY5ZmRjNzc5NTJmMTY3YTgyZGNkNDBmYWE1ZiBsZWdhY3ktdHJ1bmsKKzM2NzA0IDUxMGU5ZTJiMDgxNzQ2MTEwZTk2MmQwYTk0YzY0N2M0Nzg3MzZjNDAgbGVnYWN5LXRydW5rCiszNjcwNSAyNmIzMDY4OTRiOWViNDYxMGM5ZjQ4OTQxYTgzOTliNzgwZmE0NjU1IGxlZ2FjeS10cnVuaworMzY3MDYgMzMxZTYwZDhjZTZkYTE5YjE2ODg0OTQxODc3NmZlYTA5NDA3ODdlYyBsZWdhY3ktdHJ1bmsKKzM2NzA3IGUyOGI4NzMzYTY2ZDdkZWFlYTU4YzUwYTc2NzAzMTg0NWNiYWVhODYgbGVnYWN5LXRydW5rCiszNjcwOCA4OGExZDg2ZDQ0MmU4MTE0Yjk3NzQ3MTNlYmY0ZGI4ZGJjYTkwM2E4IGxlZ2FjeS10cnVuaworMzY3MDkgMmFhN2FlZjRlNDAzM2MzNDBjOWY5ODdlMDEyMmViM2M1MzY5ODM4MSBsZWdhY3ktdHJ1bmsKKzM2NzEwIGIzMjNiZGJhYzdlNDc3MmI4YWM3NmY2MjczNWZhNTdiNWJkODRlMzIgbGVnYWN5LXRydW5rCiszNjcxMSAxYmU0MDMzZjg0OTgwODkxZDRlYjFlN2ZjMWM2NDIzMTcyYTgyNjgxIGxlZ2FjeS10cnVuaworMzY3MTIgYzdlMDNjZjgzMzNlNWEzYThjY2ZlOWEwZWU4NTk0Njc2MzMwN2UwMSBsZWdhY3ktdHJ1bmsKKzM2NzEzIDIwOTVjYjU5ODE4ODM0ZWI5ZWI0NjAzMzczYmJjYzBjNzEwYWZjYWIgbGVnYWN5LXRydW5rCiszNjcxNCBiOGMyYWEyYmUxOWEzMTQ0MWIyNTU1MmY4ZWQyZTUxOWYwOTE2OWE0IGxlZ2FjeS10cnVuaworMzY3MTUgYTliMjVjMjMwNzMyNzI5ZjJjZmJiOTMyYmQ5OTE1YzNmYTU0ZDg4NCBsZWdhY3ktdHJ1bmsKKzM2NzE2IDY4NWE5NDhiM2JjOWNiNWQ1OTRkNmNlYjI4ODI4OGMzZWQ1NGQ4YTQgbGVnYWN5LXRydW5rCiszNjcxNyA1MWQ3YTEyMjQ0YWYzMTM4MWZlZDc1ZDk0MTQyODFmMDkwNTljY2UzIGxlZ2FjeS10cnVuaworMzY3MTggZDA0OWExZmUyNjc2M2ZhZDcwNmE0NDMxMjNlZjcxNDE2MWZmYmUwMCBsZWdhY3ktdHJ1bmsKKzM2NzE5IDYzYWQ2ZjY5MjVjNTY4ZDRmYWFmOTNhOWU5ZDliNmJjZjI5NDI1ZDMgbGVnYWN5LXRydW5rCiszNjcyMCBhNzU4MTVlMzE1NDUxMjY0YWJjZGQ5YjJjMzVjMWU1ZmFiODQxY2RmIGxlZ2FjeS10cnVuaworMzY3MjEgMGRjOGZmYWFjMDM2NDUzZTY5ZmUzYjA1Y2VkOGE4NzVhMWE3M2RmNyBsZWdhY3ktdHJ1bmsKKzM2NzIyIGRhZWMyZDMxMWRlZjNhMDMzMzAwNzhkYTJiZTllMThhYWIwMGU4MTggbGVnYWN5LXRydW5rCiszNjcyMyA4NGVmYTAwNTQxOWFhZTI3Y2U4MTI2Y2IwNTk0MGRlZDM3NGIyMjAwIGxlZ2FjeS10cnVuaworMzY3MjQgYjhlMTBhY2I0ZWZiNjIyMjYwZWRlNzg5ZDg4ZDUxZWMwOTIzMjI1NiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzI1IGFjNzNmNjY2MmUxMTdjMmE0NGZkZmY3Zjc2ODlmMmU2ZWY3OTdiZjQgbGVnYWN5LXRydW5rCiszNjcyNiAzMGQ4NmUzNTZiZjI0ZjcxNGIxMGZkY2UzZTY5NTM5MTdiMzE4NDI5IGxlZ2FjeS10cnVuaworMzY3MjcgNzljNGU4MmVlOTk3YzhmNDEwMGQ5M2ZiODVlNDA5N2IwNDVhMDgyYSByZWxlYXNlMjMtbWFpbnQKKzM2NzI4IDMzYjhjZTY2MjAyZWM5MTk3YmNiZmYwYWNmMmRhZTE3NzY0NDcxMGQgbGVnYWN5LXRydW5rCiszNjcyOSA5MTQ2ZTJlYTNiZDUwY2Q1NjFkMjJjZTM1MWY4YmM0OGYwYzY2ZmEzIGxlZ2FjeS10cnVuaworMzY3MzAgZjQxMmZhMmIzZmRlZjdjOTNkZGQzYWY1NzgzMmVhNDUzZmRkOWY2NSBsZWdhY3ktdHJ1bmsKKzM2NzMxIGQ0ZGQ3YjgyY2M3NWJiNmI1YjlhNTU4ZDNjYTgzNDY0YzY5ODhlMGUgbGVnYWN5LXRydW5rCiszNjczMiA2NWYxMWE4ZDdjOGIzOWU3NDEyZTIyZTgwMjA4ZGMwYjEwMDhhY2NmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzMgZTIyNTc0YmU4NzY0OWE0N2Y1YWVhNjRhZGJkYTZlNjE3Y2ZlNTA4NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM0IDRjY2UwMDA0N2Y5NzQ5ODA2ZjMzNWVkZDIwNTNlZmU0ZGNjZjI0ZmIgbGVnYWN5LXRydW5rCiszNjczNSBkNjc0ZDc4ZDhkYTY2NDJmZTE4M2RjYjc3ODcyMjJmNmNlZDU0YTIyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzYgNmQxNmIwN2FkZGMzYTZkM2Y0MjAxZjhlMjE0NWU5YzY5ZjVlMDY1NSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM3IDU0NjcxNzM2YTI5ZTRlNzRkMGNkNDA4YWQ0NjkxZGFhZjk3MGM4YmMgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczOCBmNTNiOTAxYzhhZmU4YmYyMTVkZTQ3Nzc2MWYyYmU5NjRlY2MyY2E2IGxlZ2FjeS10cnVuaworMzY3MzkgNjUzMTk2MDdiZWQ4YTE4NmFhZDI2OTdhMTZmMmFhYjFhNDRkZGY0NSBsZWdhY3ktdHJ1bmsKKzM2NzQwIDY2YzU1NmYwOTE2MzdkMTllYWNjMWY3MjJlNTkzNWEzYmZhOTY3NGUgbGVnYWN5LXRydW5rCiszNjc0MSAxNTMzNzE5YzYxMzgzOWU0MmE3ZTk1ZDQ4OTUzNzY5NDlkZDI0YTkwIGxlZ2FjeS10cnVuaworMzY3NDIgMzI5ZDQ5MDZjMzNmYzdkMzg4MjM5MmY3MTkwYzU2NjY3NTI2YWU4YyBsZWdhY3ktdHJ1bmsKKzM2NzQzIDg5MTU5YTEyNjhjY2RlNWMxZWI2YTRlMjk5ZWZmNmI2YmNkZmM0MmYgbGVnYWN5LXRydW5rCiszNjc0NCBjYWM1YzhmM2U5OTBmMmU3OTZmZmM2N2ViZWRhODlkNTIwZmZlMWI4IHJlbGVhc2UyMy1tYWludAorMzY3NDUgYTk4NTZlNzNlMzJkNDJkMTdkNDVmNjk5OWZlY2Y2MGM4OWE5YTg3NCBsZWdhY3ktdHJ1bmsKKzM2NzQ2IGZmNzc3Mjc1NTVhZTUxMDQyOWUwNWI2Y2E0YjlhZDA4OWMyNGI2N2MgbGVnYWN5LXRydW5rCiszNjc0NyA0MWZhY2MzY2NkZDMzOWM5NGNlMmJlNmI4ZjE4NzU0YmJhM2I3N2VhIGxlZ2FjeS10cnVuaworMzY3NDggN2U3NDU3YTY5YjRkODFkZGVlYjhkMDQwMzI4OTgzNGVhZmI1Y2I0NSBsZWdhY3ktdHJ1bmsKKzM2NzQ5IDI1YjY2OWY0YjU2Y2Y2MmMzYjBjM2Y2NDBiYzY3M2ZkZmUwYjQ2ZDYgbGVnYWN5LXRydW5rCiszNjc1MCBiZGE5ODMwNGRlYjVkOTRmODUyNTA5YjlkZDY5NDVjNmM4ZWJiZGJlIGxlZ2FjeS10cnVuaworMzY3NTEgMzgyNGZhMjliZTQ5Y2MxYzFiNzhkYzMzNjUzNzMyOTIxYzU2NDkwNyBsZWdhY3ktdHJ1bmsKKzM2NzUyIDY5MzcwMjUzMTE1YmE3N2JkN2U2NDkwNDY3YjhhMmVjNDlkZjgyYTYgbGVnYWN5LXRydW5rCiszNjc1MyBmMWJiZjE0NzgxMGIyOTQ2MzVhNmYwYTNjZTljYjAzZmE0MjQ1MzJkIGxlZ2FjeS10cnVuaworMzY3NTQgOTM2NzEyYjMxYmVkYzhhMzI1NTI1Mzc5YjRkOGViM2E5MzhlNDcxYyBsZWdhY3ktdHJ1bmsKKzM2NzU1IDY2M2FkMzQ5NTM0YjAwODRkN2JkZGMwOGU5YWJiZWYzMzk5Mzg2MTIgbGVnYWN5LXRydW5rCiszNjc1NiA1ZjU4ZmNkN2FjY2Y2MjIxNGYzMTRkYmNkODVlOTIxOTE0MTJiYjk2IGxlZ2FjeS10cnVuaworMzY3NTcgYzMxZDhmMzhmZDdmNmYxZmQ0YWQ0YmYwMGQ0NGM2N2I4NDEyMjhlNiByZWxlYXNlMjMtbWFpbnQKKzM2NzU4IGNlNDg4YWEwNGYyNGVhMzY4ZGRmOWMxMWE0MDA2ZjllMzM4ZjQwOGYgbGVnYWN5LXRydW5rCiszNjc1OSA4YWM0ZmFhMjgyZTBiOWNmMjkxNDRmNjc3YjI1YWM3YWQxNzU0MjE4IGxlZ2FjeS10cnVuaworMzY3NjAgNWMyMTQ5ZjM2YzNlYWI2Y2EwNTUxYzNlNTEwOTEwYzAwYjZkMTJhZiBsZWdhY3ktdHJ1bmsKKzM2NzYxIGVjNzFhZTNiYzJkZGFmNWVlODgzY2MxOTdlMDI4MDMxMmQwMTBjZTUgcmVsZWFzZTIzLW1haW50CiszNjc2MiBiZDNkZDZiM2ZmOTcyNjg4Mjg2ZmY1MTVkZDAzN2IwYjg2ZDU4YzE1IGxlZ2FjeS10cnVuaworMzY3NjMgNDVhMTcwYzRjYTU2Y2VkMjZmZmNmYTQ3OTdkNWM0YTUxZDJkNDRjNSBsZWdhY3ktdHJ1bmsKKzM2NzY0IDkxZmE4MGE2NzgxMWJjZGU1MGViOTAwNmMxZDA1OTk4YjA0YjkwM2UgbGVnYWN5LXRydW5rCiszNjc2NSAyYzJmNWNmZWZhNjA1NjgzZWY3ZDE0NmFhYmE4MjJkNDgyYWJhNmUyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NjYgZGZkZTA4NTIyOGVlYTUwYjQ2ZmFkNjU3ZDVlYjY4Y2RlN2ZlNDgxOSBsZWdhY3ktdHJ1bmsKKzM2NzY3IGYwNzFhNTUzYWFlNThhNDUzZjY2Mzk0Njk2ZDYzN2Y1MGY4YzkzYmMgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc2OCA0NzNjYjBlZjgyZDI0MzQ2ZmM1MTFjODQ5MDFlMjI2YWFkY2QxZmQwIGxlZ2FjeS10cnVuaworMzY3NjkgMjY2M2I0ZjUzNWI3Y2M1OGE1YTNjZGI0MThhYTcxYzU1YmU1MDYxYiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzcwIDY1MTE4OGE2NjM4ZGMzZmM0N2UxYjEyNmY3MGRiNDllMTA2YmU1ZGUgbGVnYWN5LXRydW5rCiszNjc3MSA4Y2UzNDRmNmM5NTRlZWM4Y2YxMTA4ZTlkNWNkY2EyMTU5NjkxMWIzIGxlZ2FjeS10cnVuaworMzY3NzIgNWFhODUwOTdjYjJjZGNjOTZhODRmNGQ0YWU0MWQ0ODdlMTA2MWQ0NSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzczIDU4MmViNTFiODQ5MjE0NTA2YjAxZmNkMzBjODE5NTRhZGNkNjJjMTcgbGVnYWN5LXRydW5rCiszNjc3NCAyMmRlZDMwOTY0OGJjYmEzMzkzMjU0N2M5OTIwYjI3N2U5ZmNkM2JkIGxlZ2FjeS10cnVuaworMzY3NzUgNjZkYzIxMWJmNTA3MjFhZDAxZjcxM2VmZWRjMDU4OWI4YWU4YTc2MiBsZWdhY3ktdHJ1bmsKKzM2Nzc2IDg0YjQ3NTc5OTkxODJlMGZjYzlhNTExZTI0NmJmZmMzMzdhMmJjZDcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3NyA2M2RmNGNiNDkyYTE2YzZhZmE5ZmQ1NzNkOTMzZmJiMGQyMDgxOTZiIGxlZ2FjeS10cnVuaworMzY3NzggOWZiNTEzOGY1OGRkODFiOTE4ZDI2ZTMzNGNmM2YyYWE0NTMzYWY3MiBsZWdhY3ktdHJ1bmsKKzM2Nzc5IGY2M2Q0NWZkM2ZjZTc0NDg5NDkyZmYyMTgwZjY4NTIwYzA2ZmY1NWYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MCBlMDI3OTIxMTIyODg5YWU4ZGJmYjhmOGM4NjZhMzBkZDZlZWZhOThiIHJlbGVhc2UyMy1tYWludAorMzY3ODEgOWY4YTdiYTIxMDU1ZWJlMGRhMGQ2MDMzNjk4YjM1MDc1MGY1MDNlNCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzgyIDhiMzkwZGY3YWY4NzM3MzJkOWNkNjVmOGZiYTA2ZjViZDA5OTNkY2UgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MyBlNGZlZWRiMjA1ZjJkNmI4ZmQwMDY0ZjYzMDgxMDdlMjliZmZmMjU2IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODQgMzE0NDIyYTI4ZTNmYjg1OGI1ZjVlOTYzOGNjZTMwMWQ1MTcyYmU3OSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg1IGQ3NDFjYjM3N2Y4Mjk1ZmYxMDYzMGVkZjgxMjRkMDlmMDQ1ZDhhODAgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NiBmY2Q2OTBjOGIyY2E2ZDg0NTVlMzI5MTM3OGM2Yzc3YzU0Y2U2YmZmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODcgY2FmZDdlNGU3N2FkMDc4MmIzZTAwYTg2NDY4MDhlZjViMDMxOWQ5NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg4IGZiYjU0MjhlYmY0MTA5ZTZhYTc4YzI1MDU3ZWIyZGMxZjBhNGFhZjQgbGVnYWN5LXRydW5rCiszNjc4OSBkYjM4YzFlODM5NjUyZDFlZjU5YTU2MWRmMDk0NWVlMTAzNzdlODQ0IGxlZ2FjeS10cnVuaworMzY3OTAgYjYzOWNiNDViMTczMTNkZWYyMGM3MTcxODVjODkyODk5OWFhNjE1MyBsZWdhY3ktdHJ1bmsKKzM2NzkxIDk1M2NlNWFmMTBhMzFiMjkzNWQzMzlhOTk0NDQ3ZjgyMDAzMWU5MDQgbGVnYWN5LXRydW5rCiszNjc5MiA5ZWJkNDA1NjgzY2Q4NTcyNDE1ZjkyYjk5YWI3NWVlY2YxMWNjMjM5IGxlZ2FjeS10cnVuaworMzY3OTMgYWRmZTdkMzlhMDQ5ZDZhM2M5M2I0MmZmOWZiOTI2OTU3ODJkYWVlNyBsZWdhY3ktdHJ1bmsKKzM2Nzk0IDAyNGZmMGFiNDU4ODAzMzU1YTNkMzY3NmMwNzU0MTlhZjNlYTEwNDMgbGVnYWN5LXRydW5rCiszNjc5NSBiNTY0ODFhOTA1MTllNWEyMGExOGQ1MzNhYTNmYTI1MzE0ZWQ2MjRiIGxlZ2FjeS10cnVuaworMzY3OTYgOTcxZTUxNDEzNDQ3YzJlOGJkM2M2YWM1YjE2NzBlMmY2NGFkZGRlMSBsZWdhY3ktdHJ1bmsKKzM2Nzk3IDJiY2JmM2ZiNzAyMWVmYjY0MzA1ZGE3NGNhYWJjZmY3MGI2OTQ2MzYgbGVnYWN5LXRydW5rCiszNjc5OCBlMmZlYTIyZTBjNTEzZDYxYmM5OGE1NjkxMzE5YzQwMjNkYTNkM2EzIGxlZ2FjeS10cnVuaworMzY3OTkgMDcxZDMzODE3NTNiNjBkMjI3NjZkMTdmYjg3MjhhNTQ5OTYwMmZkNiBsZWdhY3ktdHJ1bmsKKzM2ODAwIGE5ZDU5MTk3YjE2MzFkZDRhM2JlYTBlZTA2OGFhZTBhYjk3OGNiYzggbGVnYWN5LXRydW5rCiszNjgwMSAxNTZhYzZkZTk2MjVjNDdkZjE1YmIxMTI0ZDIwZDQ0ZTVlZTM2NjY3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MDIgMGJmMGY0YmVhMTQ0MTY4OWI4MWEzNDEzYzRjNjhhMDkwMTIzZTBlMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODA0IGU5YzY0MTRkYmRiNjE1MzczNTM5OThlODY3NjcwNTdmZTE1NGQ3ZmQgbGVnYWN5LXRydW5rCiszNjgwNSAyYmMzMzI2MTZjZDZmOWZlMWFjNzQyZjI1MjFhOTgxMDVhNjg3ZGM3IGxlZ2FjeS10cnVuaworMzY4MDYgN2FhYTg1MmZhODU2ZmEzMzg0NTI2YzUzNDNkNWUwZmZkNjZiOTA5MCBsZWdhY3ktdHJ1bmsKKzM2ODA3IDVlOGUzMDljMGJiMDY5NzNkOTdiYmE2MThlNjA3MDgxY2M2NTRiMGUgbGVnYWN5LXRydW5rCiszNjgwOCAzNDFiN2FkYmE5NDQ3YTE4YmNlMzg1MWRmNDNlMmZkMDZmMGNhNWRhIGxlZ2FjeS10cnVuaworMzY4MDkgOWY2NjI1OWFlY2UzMTY1Y2MyYzcwZTBhMzM1NDQyM2JjNDBkYmUwZSBsZWdhY3ktdHJ1bmsKKzM2ODEwIDlhYzY0MzU0NDYyOWIwNDk3N2I3YTljMDhhODdiYWU5MzdlYmU3ZGYgbGVnYWN5LXRydW5rCiszNjgxMSBlYTMzOGJhYWI4NTk5ZDcxNTdmMDJmNDBkYmZiMGNkOGFmZmJjNTQxIGxlZ2FjeS10cnVuaworMzY4MTIgOTgyMWUzODhiNTlkOTNmMzk2YjczNzdmZDdlZWY1OGU5Zjk0NDhlZSBsZWdhY3ktdHJ1bmsKKzM2ODEzIGZmYWExNzVkMGFhMzM3Zjg4NDI4NDc0NzFhY2JkYTU5ZWNlYjI0YTggbGVnYWN5LXRydW5rCiszNjgxMyAwNTVmYzY5NTVmM2M2NTIyYmZlYjdlZDRjNjcxYzk3ZDViYWFhYWMyIGxlZ2FjeS10cnVuaworMzY4MTUgZTZkMDA5Mjc2YzU0Nzk2MWE0MzBiOThiYmExMzRiYmQ0ODhhMTk2OCBsZWdhY3ktdHJ1bmsKKzM2ODE2IDNlOTA5YzU0ZTMwYzkxZGQyNzdiZTc1ZGUxOWU5N2M0ZjNlNzk2NzYgbGVnYWN5LXRydW5rCiszNjgxNyBjZWIxYzNmMWFjOGFiYjQ2MWM1MGVkZDk5ODE3MTU0Y2ZlZTVmMDA4IGxlZ2FjeS10cnVuaworMzY4MTggNWY0YmZiZTI2YTRkYzQ2NGVmZDZmMTMwMWZiYWZhMGZkNjU0NmQzMSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODE5IDg0NDEwYTBkNmVhOTQxMzQwMWVhNTk2YjRjM2VmZmZlZWVlNWMxM2IgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMCBlYTg3NTUzZTI1NjA5ZjhhZmIwNjgzMWFmNjAzNDYwMDY0YWZmMTIzIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjEgYmQ0MTM2NjdhYzE2YjY3ZGQyZDMzOTU1NDc3ZTk4ZmZjYzMyNjA5NCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIyIDJlNjdjMjcwODY3MDhiMTFiYTg4ZjYyMTM3NWRjYzg0MDQ3NDhjODIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMyBiNjg5MGVhNWZkZTBmNmUwNTI5Y2ZhNzJkNzYyOGIwYTliNThjYzUxIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjQgNzk2MDA2NThiZTY4OTJhOTA1NzNjZWI3MTdiOTZkN2YxZmE5NmNhNiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI1IGJlNTg0Y2RhNTQ3ZDY0MmM4OWJkOWNmNWE1NzUxYzRlOGMyMzZjMmYgbGVnYWN5LXRydW5rCiszNjgyNiBmN2Q1MGU5MWJlZjM5ZWRkNGEyZTZlMmM1ZTQ3OTY1OGE5MzNlOWYxIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjcgMTk3NTE3ZDgwOTllNDdlMDAwNTQzYjU0OWFlZGRkZWI1NzA1NWNmYyBsZWdhY3ktdHJ1bmsKKzM2ODI4IDRjOWVmYjNhNmJiM2Y2MGM0MjBhODU1MzdjOTNhOTY1M2M5MmQ4ZDQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyOSBjMjZhNGZkNjk3NDRhZGM0Y2NlZmVjNzFkZDE5N2FlZTMwYjVkODEwIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzAgZmI2ZmZkMjkwY2ZiMzlkMjFhZmYxZDcyMDgyZGY2Y2MzZmZjZTFlOSBsZWdhY3ktdHJ1bmsKKzM2ODMxIGFhY2RkMGVjYTFlYjU2MmUzNjVkYTUyNWZhYmYwNGNlMmFmOGIxMDIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzMiA5YjE4ODE1ODE4MWY3ZjEzNjc1NDVkZDI4NTZhZjk1YzUyYTEzM2I3IGxlZ2FjeS10cnVuaworMzY4MzMgNGYwMTg5NGFiNDU4ZGM3N2FiZTE2OTM1NDk3OGY0MWJiMjQyMGU2MiBsZWdhY3ktdHJ1bmsKKzM2ODM0IDQwYzNhNTFjYjcxY2QzNTQ3NjEyMThmYTUxZDFjMjBlYmNkMWFjZDIgbGVnYWN5LXRydW5rCiszNjgzNSAzNjAwNDBkM2Q0ZmFkODIxN2MxMTY3OGY3ZmY4NTZlYTFkOWNlYTZkIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzYgNWNhYjMzNjE4MjkzMDA0YjVjNTUyZDllZDA2ODc5Y2U4YjE3OTJmNCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODM4IDY3OGQ0MGZjZTBiMTRhOTllNzYzMGY1MTFiOGNlMDdjYTMwOTE3YWUgcmVsZWFzZTIzLW1haW50CiszNjgzOSA1Y2M1NWQzNmJiMWRjZjliMDg1ZDNjNWE5ZWIxYjA1YjcwNmIyYjdmIGxlZ2FjeS10cnVuaworMzY4NDAgZTg5ZWYwYmZhMWZmOGNkNGIxMGE0MmU4MTQyYTFhMjc3MGViYzllNyBsZWdhY3ktdHJ1bmsKKzM2ODQxIDUwYzEyMmJjN2FhY2EzODgyYzc0N2Y4ZTU1ZDcyOThlYTYwNjg2NjQgbGVnYWN5LXRydW5rCiszNjg0MiBhZTg3NzJkMTVhNWZhNzE2MGEzNjYwMjllN2MwYTE5NGU1ZjVkMjdmIGxlZ2FjeS10cnVuaworMzY4NDMgNzI2ZGI1ODU0NzQ2MTRmMTE0MDAxNGU0OGI2MmY2Y2QzOGY4N2NkZiBsZWdhY3ktdHJ1bmsKKzM2ODQ0IDRiM2Y4ZGQ5MjY5YWUwNzE5MmE5Yjc0NmI1NGEyZmI0MjIyNDE2NTcgbGVnYWN5LXRydW5rCiszNjg0NSBmNTE5ODk2Y2Y1ZGNiZGUzOWQ1NDM3NjE3ODg5MzhhN2ExM2QyZmJiIGxlZ2FjeS10cnVuaworMzY4NDYgNjFjMDE3MTU3NzU2ODM0NDVmYWRkYmZhMWUzZGJlYWZhZDIzNjhlNiBsZWdhY3ktdHJ1bmsKKzM2ODQ3IDhmODc0NDBjNmU4MGNkMTJlZjlhNzhiMzYxNjViMmZjMTNjNzNmMWEgbGVnYWN5LXRydW5rCiszNjg0OCBhOGE0ODYzMzlkODA2NDZmNWM0ZDNkMmY3ZjVkMDU5YzEzNzIwNWI5IGxlZ2FjeS10cnVuaworMzY4NDkgMmVhMDk2NjJhMmQ0MGI1Y2MxMzEyN2I5N2RhODI5NjY4OWE2MWFiNCBsZWdhY3ktdHJ1bmsKKzM2ODUwIDQ0NDUwMTI5Y2UzNTZlNWYwZTlkZTk5NjM1YTA2YmZkNDlkNzJhZTcgbGVnYWN5LXRydW5rCiszNjg1MSBjOWFlOTVkNzdhNDI3Zjk4ZjQ4MWZjYTVhOWU4Y2ZlODVmNGMxNDk0IGxlZ2FjeS10cnVuaworMzY4NTIgYjM0YThkYzNjY2FlY2YyYzU4NzFmNDRhODlmNjczNDlhMWUzNjkyZSBsZWdhY3ktdHJ1bmsKKzM2ODUzIDRlMmM2NjAyMWJmMzgwZDI0MzI2MjYzN2FiZDAyNTAzNGIyNzE0ZDAgbGVnYWN5LXRydW5rCiszNjg1NCA0M2ZiZjI5ZGQ4M2E5NzhjODE0YmM0ZGUwYWE2ZmZiMTI2MmU4MGJjIHJlbGVhc2UyMy1icmFuY2gKKzM2ODU1IDI1MmM2NTQ2OTExNDY5NWM2YWZmN2Y0OWFmY2EwNWNkNWJkZDVlNTAgbGVnYWN5LXRydW5rCiszNjg1NiAxYWE0MGEwODk4MmZhNTVlZmYyMDhhZDYyYTc5MDA1OTJjM2E4MjIzIGxlZ2FjeS10cnVuaworMzY4NTcgMzAwMjU5NjUzMjRhNTgxZTA3MWMxN2U0ZWM1ZDBjYWQ3MTg5M2QwYiBsZWdhY3ktdHJ1bmsKKzM2ODU4IDMwOWJlYmVkZmM5N2ExY2MyMzFjYjI3Yzg2ZmQ2ZTNkOWM0ZmM1NjkgbGVnYWN5LXRydW5rCiszNjg1OSAyYzExNmU3ZmYxNjM2YmUwY2FmM2MwZDdmODdlYmFhNDJjOWMxYmM2IGxlZ2FjeS10cnVuaworMzY4NjAgNDQxYWIzYWQ2ZDAxYTBjYjYyYzYzODg4MDU4N2RjYzkzMjlkMDgzZSBsZWdhY3ktdHJ1bmsKKzM2ODYxIDRiZjY4NTRkYjY1NmVkOTgwYzMzNWZkZmU4ZDM3OGZhYTU2N2QzODEgbGVnYWN5LXRydW5rCiszNjg2MiA0ZmQ1OTY1MWZlM2Y5YTYyNmM5ZWFiZTIxODU2ZTJlYzg3OTVlNjY3IGxlZ2FjeS10cnVuaworMzY4NjMgMzk2ZDAxMWY4MzQ4YmE2N2ExMmI1OWU1NDJmZTEwYWEwY2RiNzk4ZCBsZWdhY3ktdHJ1bmsKKzM2ODY0IGI1ZGNmZTdhNDE1OTYwYWIwZmIzYzMyZTA1ZWY3OTg5MjdiZGVmOTggbGVnYWN5LXRydW5rCiszNjg2NSA4NjdmZWYyYjUwNjBhYzgyMDFjOTE2ZDhiYjlmMGU2MzNkYWJhNzY0IGxlZ2FjeS10cnVuaworMzY4NjYgZmEzZDAxZjBmYzQ0MjE1MmQ1MmI0MDZmNzllYzdmMTQwYjQ0NTJjZSBsZWdhY3ktdHJ1bmsKKzM2ODY3IDhkNzA3ZDQ5Y2I5YmM3ZjhiZDZkOTc2MGE0M2RjYTdlY2U5NTQwYjAgbGVnYWN5LXRydW5rCiszNjg2OCA5ZmIyZTMwZjI2YmVlNWVlMWU4NTYxNjZmYWRiMjg2MzRjYjhlNDgzIGxlZ2FjeS10cnVuaworMzY4NjkgMzY3Y2U1MTZhZDA1NGJkOGVlNzI4MDRhYjBmNGE4MGE0MDY2NGQ5MSBsZWdhY3ktdHJ1bmsKKzM2ODcwIDQ4Y2I0ZWQ0OTRhNjU4MTAyMTJhMzk1NTcxOWRjMjZkMzkzN2IwMjIgbGVnYWN5LXRydW5rCiszNjg3MSA4ZjZkMjA1ZDUzMWJjOTdlY2NjMGRmMmUxYzgzMTllMWZhMDlkNWNhIGxlZ2FjeS10cnVuaworMzY4NzIgZmYxNzYyNGIyNjQyOTI2MTlmMjQwZDJmODIxM2I4OWE1Y2Q3NzExZSBsZWdhY3ktdHJ1bmsKKzM2ODczIGIwZTBhNTM4NzBiNmY5ZjgwOTcwMjdmNDE0ZjcyMjY1NWFmZGQyZWIgbGVnYWN5LXRydW5rCiszNjg3NCA4Y2E4ZmViYzBhMGQ3NTAwOTBjNDNiOWUzMzZlZDNjMTE3YzRlZTU2IGxlZ2FjeS10cnVuaworMzY4NzUgMGJlYjc1Njk2NWRmOWNkNDY1N2NkMmU5M2UwY2UzMGEwOTFkMzE1MSBsZWdhY3ktdHJ1bmsKKzM2ODc2IGU1YjllODcyYTdkM2JhMjg1NDI2OTgxZWQxMWFkMzBjNTY2YTVkNjQgcmVsZWFzZTIzLWJyYW5jaAorMzY4NzcgNmFhMzFkNzVjNGY5OTBkOTViOGU2ZDVjY2U2Y2EyZjdkNDhjNTdhNyBsZWdhY3ktdHJ1bmsKKzM2ODc4IDVjOTQwZjk4ZTQ2NTU5YzkyMmViOGExNWViYmNkZjIwZDExZGRjY2QgbGVnYWN5LXRydW5rCiszNjg3OSBhYjkzYWZmNGM5MGE4NGJmMGMwMTUzMDk5NDQ1ZTJmYjQzMDA0NWY4IGxlZ2FjeS10cnVuaworMzY4ODAgMWYzNThhNmI0YmMzMzZlNTcwNDUxNGIyODI3ZWExODU5YmI1ZDJmMyByZWxlYXNlMjMtYnJhbmNoCiszNjg4MSAyMDRkMjlhY2JhMjgwMTAxMGFmZmE3ZjM4YmQ2MWEzYWRhOGYyMTYzIGxlZ2FjeS10cnVuaworMzY4ODIgNTIxOGJmZjU2NDQ5NGY2ZjEwYTViMmFkMjMxNjI5NGM1YWQyNDUwOSBsZWdhY3ktdHJ1bmsKKzM2ODgzIGFkODE4MzM4ZjhjMzMwNjU2OWNiYzYzNjY5MjRmZDY3MTczZjFjMTcgbGVnYWN5LXRydW5rCiszNjg4NCA1MzBjMDJiODNlZWE1YWQxNjViNmM4Yzg0MDY2MDJmMWFjNjEzY2IzIGxlZ2FjeS10cnVuaworMzY4ODUgMmM5M2ZjZWVlNDJkMTNkYWYwNTRlNjZmNzQwZmIwNjYwODVjOGZhMyBsZWdhY3ktdHJ1bmsKKzM2ODg2IDRmNTg4ZjU3YTkzYjAzNWFkMDNiOGQwNDYwODM5ZmVkY2I3ZmE1ODcgbGVnYWN5LXRydW5rCiszNjg4NyA4ODk3ZTc3Y2Q3OWE4NDFiZmU3NzVjNTcxYzE2ZDIwYzU1MDhhZmZmIGxlZ2FjeS10cnVuaworMzY4ODggOTQ2NDQxNWExZjg5NDk5MTk5MjU3ZDkwNzk0MDUzMzI2OWJiMzc4ZSBsZWdhY3ktdHJ1bmsKKzM2ODg5IDQ5YjgwODMyMDNlNmJiYzFmOTc5NjExYzgxNzM0YzNkZmUxNWI4YmEgbGVnYWN5LXRydW5rCiszNjg5MCA5ZGRmYTc0Y2IyNTBmNDk2ZjgxNDMyYWE3NWQ5ZjQ5NTQwMzcwZTQ5IGxlZ2FjeS10cnVuaworMzY4OTEgODUwMDJjZjRlMjNiZjUwZDhhODFlZDU3YTk1NmEzZmUxNTYzNmNhYyBsZWdhY3ktdHJ1bmsKKzM2ODkyIDJlN2I3ODAzMjcwMmM3YjZiYTZkNTY3ZWQxODdlZWY3ODExOTI4YzggbGVnYWN5LXRydW5rCiszNjg5MyA4NjA3YWMyZjgxYzgzOTIwZGQ0MmE0OWQwN2NjMjI0ZTRmM2IzNzk3IGxlZ2FjeS10cnVuaworMzY4OTQgMjY3NTJkZjkzOTEzOTAzM2ZhYjZjMzg3M2IwYzQ5ZTVmNmRiNzUyYyBsZWdhY3ktdHJ1bmsKKzM2ODk1IDE2NjBhNjhmYTZhNDA3YTczZGM3Y2FjNzkxNmM5YmMxZWViM2QyZDAgbGVnYWN5LXRydW5rCiszNjg5NiA3YzNkNTY5NTIyYzQ5MmFlZjdlMzk5M2I1NTQ5ODU5MThlMTJiNjdiIGxlZ2FjeS10cnVuaworMzY4OTcgYjY2OWE2MDk3YmE4OWM4MjZkNDBiMDNhYzYxZTgxMWJjYTQzNDg0NyBsZWdhY3ktdHJ1bmsKKzM2ODk4IGVlM2FhYTc5MTg0MjkyZDgwMmY1YmRlOTc1MTE3NmZjNTYwODYxM2YgbGVnYWN5LXRydW5rCiszNjg5OSBmNmIyZjE5MmUwM2I1M2ZiMzM4YjE1NDYyOTRjYTI5M2ExNWNhZjIwIHJlbGVhc2UyMy1icmFuY2gKKzM2OTAwIGNlMmExOTYyMDNjNWVjZTkyN2JlY2YwNGUyOTE4ZThlNTc1NDc5ZjIgbGVnYWN5LXRydW5rCiszNjkwMSAyMzNjMjIzODU4Zjc3YmJhYzUyZGRiNTg1OTFjYjU3NDRkNWYyNTVhIGxlZ2FjeS10cnVuaworMzY5MDIgZmVlMjAzOGI4ZmE5ZGM4MmIwNjZkMjNlM2IwMzM0NDdmMzMzYjI2ZiBsZWdhY3ktdHJ1bmsKKzM2OTAzIDQyMDQ4ODQwOGUwZTNkNjQzM2M3ZDA5NTM0MzQyODFlNDUyMjg0MzUgbGVnYWN5LXRydW5rCiszNjkwNCA1YTRkNzdiNmVmYTY1ZWE4YWUxODY3N2FiMjYzNTI3NzI5N2VmMDNiIGxlZ2FjeS10cnVuaworMzY5MDUgMzA0NWY0ZjM0ZWYyNDdiZDU0MzhmMjBhMGExYTViMTQwN2E5MTU1ZSBsZWdhY3ktdHJ1bmsKKzM2OTA2IDE3ZmM4OGExYjg3MzU3ODRjNDJjYzNkZGQzMGI0NDViZjllNDlmOTEgbGVnYWN5LXRydW5rCiszNjkwNyAxZGJkMGYzNDVhNzg4NjBjNDlhNjI3ODM2NjdmMzQ4NjYyZTFjNjY0IGxlZ2FjeS10cnVuaworMzY5MDggMjc0OTMzNGQ3MWE0NzE0M2UwMTU1Nzc1NzkyMGU3ZjlhZWQ4YjY4MyBsZWdhY3ktdHJ1bmsKKzM2OTA5IDE2MzYyMTUxN2I5ODI1NGNhODU1OGVjOTllYzYzNDZlZDczZTBkYTggbGVnYWN5LXRydW5rCiszNjkxMCA2N2QyNTIxN2JjN2YwYzQ3NDIxYzNjYWZhNTgyOWIzMDI5MWJiYWI5IGxlZ2FjeS10cnVuaworMzY5MTEgYzgxZWQwNzk1NzZmMmE1ZTdlNzFjNDU3YjFhZTgyOWVjZWVkOTdiMyBsZWdhY3ktdHJ1bmsKKzM2OTEyIGMzNDg3ZWYzYTY5YzRkMjhhMDFkYTVlMWQ3MDZmM2MxY2UyYWU3NjAgbGVnYWN5LXRydW5rCiszNjkxMyBkMGViMDk4YmUyNjQ4ZjI1Nzc2YmFjOWNlNzFjOGM1MDEyMjcwODU4IGxlZ2FjeS10cnVuaworMzY5MTQgYzQ3OGE3MWMyMzg0MDQyYjgyYzdiNzdiZmNjNDQ0YWI3OTU4MmZjMCBsZWdhY3ktdHJ1bmsKKzM2OTE1IDQ1NTY2NzE0NmQ0Yjk5ZWNiNWM0NWM0OGUzZWExYTIyYjFiM2IzY2MgbGVnYWN5LXRydW5rCiszNjkxNiA5ODUzNzVhY2E5NzA3MzEwZjA3NTQ2MjVmZWUxY2Q0ZThiOTNhNzNmIGxlZ2FjeS10cnVuaworMzY5MTcgMWFmM2FkNDlkMDZmZTBlMjIxMWIzNmYzYzEwMGZlNzVhNDdiYjcxYyBsZWdhY3ktdHJ1bmsKKzM2OTE4IDI3YWRhMjU1MDlmZjI2MjY4Y2YxODViOTE1YmM3NzI2ZDNkOTgwZmYgbGVnYWN5LXRydW5rCiszNjkxOSBmYmVhMmJlMzU1NjI4YmUyM2Y0NGE2YzcyZDdjMDVkMDFkNjMyM2JkIGxlZ2FjeS10cnVuaworMzY5MjAgMjlmYTlkNmFmZWEwMWZkOGZhYTcwYjVhZTUwZTQyZTljZmIzYzRjNSBsZWdhY3ktdHJ1bmsKKzM2OTIxIGYwYTZlZjNhODc0ZWY4ZGM1YThkYzkzZjMzMDU4ZmI1M2Y5NjU5NTUgbGVnYWN5LXRydW5rCiszNjkyMiA1ZTY5ZjdjODBlZjQyNzMzNDM4NWY2NTEyZWQ0Yzc2OWM5YWE5ZTFhIGxlZ2FjeS10cnVuaworMzY5MjMgNmYzOGUzYjY0ZWY0NzI2ZWZlOWQ0ZWM1YzYwZmMxNTkwOWMwZmRlYiBsZWdhY3ktdHJ1bmsKKzM2OTI0IDMxY2NlYTllOThhNzQ2ZmEwYmE5MWE5NzkxZjI0N2RmMTg0MmY5ODAgbGVnYWN5LXRydW5rCiszNjkyNSBlZTQzY2E0YTJjMjM4ZTQxZTczMjMzMGNkZDk0NmI5NGMxZDFmYzQxIGxlZ2FjeS10cnVuaworMzY5MjYgNzY0ZDI4ZmMzZDM2OThlYThmYmZjMDEzOWE1N2ZhYTZmNGIyZjdmMiBsZWdhY3ktdHJ1bmsKKzM2OTI3IDkwZGE3MDk4NjQwNzIzOTc0YzhhYjg4YzBlYzllYjkxMTFhMWU3NjQgbGVnYWN5LXRydW5rCiszNjkyOCAwMzA0M2IyODhiMjg3NTg2MDAyZTA3ZDgxYjU5ZDA2N2ZjM2JjYzg1IGxlZ2FjeS10cnVuaworMzY5MjkgNDUzMjlkOWZkYjhkNTQ1NDcxZTQwYTcxMTgzN2Y4NmM5OTI3YTQ3NCBsZWdhY3ktdHJ1bmsKKzM2OTMwIGNkYTA0NTViZDBhMDMxODkwMDY5OTQyZmRiODc0MGJkMTI5MzQ4MTkgbGVnYWN5LXRydW5rCiszNjkzMSAyYThjMzc1OGM0YTE5MDZiZTMxZGEzYWVkOTI1M2Y3ZmMxOTE5MmJkIGxlZ2FjeS10cnVuaworMzY5MzIgNDUxZGQ0OWRmNTMxMDljZDYyYWJiZDkxYWJiMGNkMTY2YjM0ZjBiNCBsZWdhY3ktdHJ1bmsKKzM2OTMzIDgyMWM1NTdjYTYxMjRiNWZiMjA1N2RjMzZmM2I4OWY4ZjlmZmFjZWYgbGVnYWN5LXRydW5rCiszNjkzNCA0ZTZmNGU5ZWM5YjNkM2E1NjZkYWU4OTRjZjQwNzAzZTQxM2IwYmYzIGxlZ2FjeS10cnVuaworMzY5MzUgMDRkOWZkZTExMzMwOTQ4ZTJhM2QwY2I3YmUwZTU2NzE2MmUxNGU3YyBsZWdhY3ktdHJ1bmsKKzM2OTM2IDRkZDE4MTViNDRlZmFhZjk4NTY3ZTUzZGM1N2Y3NmQ0YmUyMTQ1YzAgbGVnYWN5LXRydW5rCiszNjkzNyBiZmNjNGUzOWZjNDUyYjM1MzI2Njc2MzQ2YWM4MTFkMWU3ZDM3NDVkIGxlZ2FjeS10cnVuaworMzY5MzggOTgxZmZmNzM2M2I5MmU4ZTc0ZGYxNzk1NGFmMjIxNjlkY2IwMWQ4MCBsZWdhY3ktdHJ1bmsKKzM2OTM5IDAxY2M1ZTNmNjM3NTIyMWExYjdjOTc0MjIwYWIzZGJlOGQzNjFmOGEgbGVnYWN5LXRydW5rCiszNjk0MCA4MzZlNzcyNjZmOTc3OTEzMTQxMTBmM2I0NzBhNzdmZWU0YTNlMDIyIGxlZ2FjeS10cnVuaworMzY5NDEgNzQzYWJhYzlmOWZlMzNlY2JjZWQ5NzM5YzE1YzBmZjlkN2Q3ZmYzMSBsZWdhY3ktdHJ1bmsKKzM2OTQyIGQwNzVjYmE4NTFmZDg2ZmQ5NjA5NjM3OWEyNzg2OGM2MzM3ZDE2ZTEgbGVnYWN5LXRydW5rCiszNjk0MyAwNThlODUxZTc5M2VhZmJiMTE0ODJiOTU4YWMzMThkNjFkZDcwMjBmIGxlZ2FjeS10cnVuaworMzY5NDQgYTc5Mjg3MjZkZDhmNWJkNDRlODRlOWI0NWVjM2QwNmY3NmYyZDkyYyBsZWdhY3ktdHJ1bmsKKzM2OTQ1IDVlYWU0Y2UxMDVmY2Y0YzU2NDlmOTdkYjlkZjBhYjhlZjM0NDJmOGUgbGVnYWN5LXRydW5rCiszNjk0NiAyNDBlYWZhZTNlYTc0ZGE3MzU0YTlmNWUyZGZkYzE4ZDhjY2IzOTFlIGxlZ2FjeS10cnVuaworMzY5NDcgNWYzMzUwN2NiNTU5ODIzNzFlZmEzOTIyZTI4YWY4NjMzYTY3ZGU4YyByZWxlYXNlMjMtbWFpbnQKKzM2OTQ4IGFiZWNiZDY2YTYyODBjN2Q5OWNkZTNjYTUxOTM3YjhjNTE2OGRmMjEgbGVnYWN5LXRydW5rCiszNjk0OSA0NDQ1N2NiOGY5NzAxNDk3MmQ5MzNjNDk0MDgyODU0ZTc1NTg5MDhhIGxlZ2FjeS10cnVuaworMzY5NTAgYWZkNTQxMjZlOWExOTBmYTA0MGFmNGY0Y2VkNjZhYjU0MTQzNTY2NiBsZWdhY3ktdHJ1bmsKKzM2OTUxIDUzNDdkYTMxZjA3NmM2Y2YyN2Q0NDAxYzBhYWNlOWVlOTIwMDY2MjEgbGVnYWN5LXRydW5rCiszNjk1MiA5OTM3ZDBlNjNjYTMyNWY0N2QwYjNjZTBhNjNlMWI5Y2UzMWNkN2M2IGxlZ2FjeS10cnVuaworMzY5NTMgNGZkMTg1MDVmYzM1ZmRkN2IzMmZjNjNlN2QxN2Y5ZGQ3MmMxYjcwMiBsZWdhY3ktdHJ1bmsKKzM2OTU0IDRiMGEwZmMxYmFlYTMxZGY5M2VlMjU2ZDUwZDE3NWIzZTBmOWZlMDkgbGVnYWN5LXRydW5rCiszNjk1NSA0ODEwMGEwMWFjN2MwNTNhNDE3NWE4NjFlZDY3YmE2OTNlMjQyNGExIHJlbGVhc2UyMy1tYWludAorMzY5NTYgZGZjMjVlMWI5NjA1ODM0OGM5ZDI0NDM1YmU0NzE2YjE1YzZkN2U4ZSBsZWdhY3ktdHJ1bmsKKzM2OTU3IDIwZTkwZTUwNzk3ZGU4ZjVkMDY0YWM3YTJlOTIzZDdkOGEwMTgzZWUgcmVsZWFzZTIzLW1haW50CiszNjk1OCBiMTY2YWUyZjc3MzIxNDM3ZThmZDUzNmY5NWI3MzIzYjJkZjY3OTJhIHJlbGVhc2UyMy1tYWludAorMzY5NTkgZGRkMjRkNzJhZDZhYWM1NjlmODEwNjc3OGU3NDVhYjFkYjk4MjA4ZSBsZWdhY3ktdHJ1bmsKKzM2OTYwIDAxYTM4NTVhNGIwM2U4Mjk3Y2RlOTM0MDliMTBlOTE0ODJhYzg0NjcgcmVsZWFzZTIzLW1haW50CiszNjk2MSBjNzBjMzNmNjlhNDRjOTQ2MzA3NWFkNmM0NThlYmNkNWQ0MjIzYTMyIGxlZ2FjeS10cnVuaworMzY5NjIgM2I1ZDM3ZjdjYjVhZDFlNzdmZjIwMDhjNmRiZDI4ZTMxNDgwZDQwMSBsZWdhY3ktdHJ1bmsKKzM2OTYzIGNlMDE2ZDBlYzcwMTU1MzRhMjUwZGM0ODUyMTBkZjE3ZTI3OWMzMmMgbGVnYWN5LXRydW5rCiszNjk2NCAzNTY4ODc0MTBiZGU3NGI5OTg3NTFmMTMzMzc2MjAxOTE0MzA3YjkxIGxlZ2FjeS10cnVuaworMzY5NjUgODFlZmVjMGU5ZDI5MzZiZTg2Y2MyY2YwYzMyOTU1YWNiY2Y4ZjA5NyBsZWdhY3ktdHJ1bmsKKzM2OTY2IGYyNzkzNWI0Njk4NWFjNjFlMGJkNTY5MzAwMzM3MTRlNzI2MmZlYmMgbGVnYWN5LXRydW5rCiszNjk2NyA2YjhlNDk5Njg3ZDYyNTg2ZWE3NWI3YWMyNjhkZTQ4OTRjNDQ1YzY4IGxlZ2FjeS10cnVuaworMzY5NjggZjQ1NWJiZTdlYTdlMmIxNmQ0Nzk2MTUxMWU2YjY0MDU1MDcwYzYwNiBsZWdhY3ktdHJ1bmsKKzM2OTY5IGU1ZjZjM2Y1MDg0NjY1M2NhMjkzYjRiY2E3MjFmZDkxMjZmMzFlM2QgbGVnYWN5LXRydW5rCiszNjk3MCBiYWJkMTFlZWNkODgzYWNlYmNhZTI3NDE3NGM1MzRhY2M5ZTU1ODU0IGxlZ2FjeS10cnVuaworMzY5NzEgYzlhYzliZTk1YWY5ZTJlOGE5YjhiMGY1Njc5NTVmMjZiNTgwOTEyZSBsZWdhY3ktdHJ1bmsKKzM2OTcyIGRkYzAzMDRjMTUxZmU0ZjZlZTExZGUyMWYzYWZkNjUwYjUyYTExNWIgbGVnYWN5LXRydW5rCiszNjk3MyA0NTBmNWUyMWVhYzhkYzI0YTBkY2EyNjliOWY1Njc3NzA0ZmM1OWQxIGxlZ2FjeS10cnVuaworMzY5NzQgMGEwYzI0N2YwNTg0NDU2ZTE1MTc0MzkyY2ZlM2M4ODJkZWUxYjY4ZSBsZWdhY3ktdHJ1bmsKKzM2OTc1IDdkZTdjMTkxMGFjOWNhNDBlOWVkNGEzMDBiMTRlNDFiMTVjYTQ4YWEgbGVnYWN5LXRydW5rCiszNjk3NiBhNzdjMDM3MmExZDdiNTJjZDFjM2I1NTQ4MjMyM2ViMGU3Yzg3MTFjIGxlZ2FjeS10cnVuaworMzY5NzcgMjhlODc3ZmY3NGNmNzA2NzMzNjM4OWU5YTc4YmYyM2ZjNjdlMjZjMSBsZWdhY3ktdHJ1bmsKKzM2OTc4IGU0YTczZWZhNGQyMzRiZWZlM2MyMjJiYTU1NTI4YWI2ZmM4ODFhY2MgbGVnYWN5LXRydW5rCiszNjk3OSBkZmQzODAzZWUwYzE4MTNkOGE3MGZiYmI2NDA5NGFiYTUxNTdmNWZjIGxlZ2FjeS10cnVuaworMzY5ODAgM2E0ZTczYTVlNDM0N2YxZDE1YWExNzU0ZmM4ZGM5OGNjMjZlMzBlNSBsZWdhY3ktdHJ1bmsKKzM2OTgxIGJmNjlmYzNiZDA2N2U0ZTVlY2MxYzI4ZjA3YWU3YWM3YTYxNDRlMjEgbGVnYWN5LXRydW5rCiszNjk4MiBmNmFjNDE3YjVlYjA4YjczZjFjMDM4MjA1NDJjOWUwMWEzZTNkZTM3IGxlZ2FjeS10cnVuaworMzY5ODMgMWNmOWRlM2E4NTAzYTQzOTc4NTc4YjBhZDhlOTYxMDI3ZmY1YjMxNCBsZWdhY3ktdHJ1bmsKKzM2OTg0IGQ3ZmNkZjk3NzZjNGRmYTRiN2QyM2JmYjYyNmViOWVlNzJmZmRjNWUgbGVnYWN5LXRydW5rCiszNjk4NSA5MjBmNWY2NGYyZjBmYzgwMzhhMjdkNGUyZGE4YzE5NmJiYTM5NDQxIGxlZ2FjeS10cnVuaworMzY5ODYgMDE0MDc4NWJlZmRiMzZkMGMxYjA0MmU2MzRlZWU0YTU1ODI5MTU0ZSBsZWdhY3ktdHJ1bmsKKzM2OTg3IDZjMTZhYjQyMTRhZjhlOGU1MGE4MDMzNzBkOWJkNGZjOGYyYjE3ZDcgbGVnYWN5LXRydW5rCiszNjk4OCBkYzY0N2RmNTM5MjE3YTU5NWNlY2IxOTA1MzljZmQ2MmNiODk3MmEzIGxlZ2FjeS10cnVuaworMzY5ODkgM2E3ZjgyZTYwY2IyMjkyNDI4NTAyNzE0YWIwNzdmODIxZjljZGM3MiBsZWdhY3ktdHJ1bmsKKzM2OTkwIGNjZDAyYmQzNDRiMzhiMGU5ZTI2MjQyMzc3NjhlYTEyYjI4YjE3ZWUgbGVnYWN5LXRydW5rCiszNjk5MSBlZGRiMzdkNzAyYjVlMDUyMjM2MDZlZTFmYzQyODU1ODNlY2ZmN2Q5IGxlZ2FjeS10cnVuaworMzY5OTIgYzIzODQ2MDFhMjQxMTE3ZDFlNzdmZDU0ODJmM2Y0MDQwYmE4NDE0OSBsZWdhY3ktdHJ1bmsKKzM2OTkzIGFlOWI0N2E4ZDY0ODQ4NTZmMGM4ZGUxMzBjNDQ3YjFmNDIzNWVhNmYgbGVnYWN5LXRydW5rCiszNjk5NCA4YTI4Mjc5Nzg5NWYzZjEyNWQzNTk1ZWQ1NDgzNGYxOWJhNjAwYzg3IGxlZ2FjeS10cnVuaworMzY5OTUgODQ2YmEyOTcyZDdjMWJkZDRjNGRhNjM4NTIxMjQ1MDM0ZmE2YzgwOCBsZWdhY3ktdHJ1bmsKKzM2OTk2IGU0OTkyZTkzMGNiMmU1OTYxODAxYTQ0MTkwNDYxYmRlY2RkODIyN2IgbGVnYWN5LXRydW5rCiszNjk5NyAzZGI5YTkzMjc3NWU2MGE2YWY3ZGMyNzNkNDZjNWNlZmYyMjBiODhlIGxlZ2FjeS10cnVuaworMzY5OTggZmMxNjM3ZmM0NTg4OWZiYzkyZDc1MjM2MzA2M2IxYjM1NjZiZmI2OSBsZWdhY3ktdHJ1bmsKKzM2OTk5IDczNzVhZTVmOWRjNGQ1ZjU5ZWRmMDk3NDdlNWM1MWI0YTI2ZWFlZjMgbGVnYWN5LXRydW5rCiszNzAwMCAxZDk4MzUwODJiZTVhZWNhNmE1ZjdlYzI2NjAwNzU5YzI0YTRjNWYyIGxlZ2FjeS10cnVuaworMzcwMDEgYWQyNjhhODQwOGY0ZjZiZWI1NzJiZWQzMGY1OTJhYmY1ZGViZjVjMCBsZWdhY3ktdHJ1bmsKKzM3MDAyIGEzNWU0ZDM1ZDE0MjUxMmNkMjhkNjI4NTE0NGY0NjE0ZjBhOWJhOWEgcmVsZWFzZTIzLW1haW50CiszNzAwMyAzYmViNTRmOWQyYmJlODgyN2ZlYTc2Y2Q0ZGFiNjY2OWU0ZGE0YmM3IGxlZ2FjeS10cnVuaworMzcwMDQgMjg5M2RjOWI0ZWY0ZGFkMDQ1Mjk1ZjE1Njg4NWE2ZWIzNzMyZDIwYyBsZWdhY3ktdHJ1bmsKKzM3MDA1IDIyZmE5NmM0MTNhZWMzYTE1ODc4YTY2ZTBjNGQ0MDA1MTkzNGM5ZDYgbGVnYWN5LXRydW5rCiszNzAwNiA5NTFjY2Q4ZjM0Mjg4NmViYjYwYWM4MmIxODA4OWEyNDJiZDU0YjQzIGxlZ2FjeS10cnVuaworMzcwMDcgODc3OWM4YzRkMTgxYWY0NzUyY2I5MWQ4MTViNzIwMDQ5NDE5MDRmMCBsZWdhY3ktdHJ1bmsKKzM3MDA4IDljODQxY2FhMGU4MTRhZTZmNDk2NWRiNWM5NGQ5ODJkNWZiY2Q0YzQgbGVnYWN5LXRydW5rCiszNzAwOSAyOGEyMDVlY2I0ZGQ4MDU2NDc2MjMzNDYxN2YxZmZiZmJkMGRiZDFiIGxlZ2FjeS10cnVuaworMzcwMTAgOGU4N2E2ODM0OTQyZTRlZmE3NjEyYjE5YzU5YTJkOTFlYTlkMzE5NCBsZWdhY3ktdHJ1bmsKKzM3MDExIDhjMGIwOGIyNDc3YmZkM2E4NTFjNjViYjM3OTQ4ZWRkOTk5ODg1MmMgcmVsZWFzZTIzLW1haW50CiszNzAxMiA2MTJkZTI2OGVkNGJlMGJlMzNiNTQ5M2UzOTY5ZWE5YTAyZjU1NjJlIHJlbGVhc2UyMy1tYWludAorMzcwMTMgZmQ5MmVhOGI1YjUxYmQxYTY0NmVlNDk3Mzg5MWU0YjhjNjFmN2NhZiByZWxlYXNlMjMtbWFpbnQKKzM3MDE0IDdhYWUwNmIxZjFkZGNiMzY3OWI0MTc1YjFkODNhMzIyMTNiYTU4ZWEgbGVnYWN5LXRydW5rCiszNzAxNSBmZjlkNWE3MmQ1NGI3MjA4MDBmODhjNTQ4OGU3MDBkMmFkZWU0NDUxIGxlZ2FjeS10cnVuaworMzcwMTYgYjU1ZGJjY2VjYzcxNTA2NjYwMWRlYzNhZWQxMzExMTM5MzRhNWUxYyBsZWdhY3ktdHJ1bmsKKzM3MDE3IDRiNWI2ZTg2MWZjZjZlYjNiOTgxMjZhZmI3YzhmOTZjYjNiYWNiMWUgbGVnYWN5LXRydW5rCiszNzAxOCA5MzM1NDhmZTdiOTdiMGEyYjYzNzFhZWU3Y2YyNzNkOTIzYTIwNWU3IGxlZ2FjeS10cnVuaworMzcwMTkgYTM2MjAxNmU5NTBkNTBjNTJjOGY5ZTQ0NzgyZjFkZjkyOWUxMWY2MCBsZWdhY3ktdHJ1bmsKKzM3MDIwIDJiOGJkYjA2OWUwYWViZGQ2ZmMwOTM1MmU4NzFmZTBhNzhhNTE1NDkgbGVnYWN5LXRydW5rCiszNzAyMSBiMmY0MjdkYjIyOGIxNDZmNTIxZThlZGFmNTg0OWEyOTNlMjg4NzUyIGxlZ2FjeS10cnVuaworMzcwMjIgM2Y5ZDIxZWM1MDRiNGZiZmRhNzBmZDE0OTAwNmM2NzNiNWFkODZmYyBsZWdhY3ktdHJ1bmsKKzM3MDIzIGEwNTkzMDFhNGNkZTNkNDExZWJmMmQ2NzgzYTIyMjRmMDlhYmRiNzYgbGVnYWN5LXRydW5rCiszNzAyNCBhZTRjYjI5NDc0MDBlYjJhZjM5YzNiZTk0Y2Q0ZGIyZmM1YWU3OTIwIGxlZ2FjeS10cnVuaworMzcwMjUgYmZiMjkxZjg1ODcxNWE3N2VlMGEyN2U1YTJkODFiNDk4MGM0NzMxMCBsZWdhY3ktdHJ1bmsKKzM3MDI2IDIwOGZlNzE5Yzc0OWI1MWViMjdmODhiM2I5YzBmZjVmYmEwMDMwODcgbGVnYWN5LXRydW5rCiszNzAyNyA2ZjA5YjUyMGMwMWM1OTBmYzhhMTAzMGQ3Nzg3Mjc0ZmIyYjdiMWI1IGxlZ2FjeS10cnVuaworMzcwMjggMWQ2ZWVmYmNiYjM3NDdlMGQyYjkwOWJkNzBlYzA3OTNjYTZlMjE5ZSBsZWdhY3ktdHJ1bmsKKzM3MDI5IDM1N2IyNGMzNDZiYjBkNjY4ZWFmNmU1NmRlMTA0Zjk0ZWY3NDllMjAgbGVnYWN5LXRydW5rCiszNzAzMCAyZThkMmJkZDMzZGVjZGI2OGU4NGI5NThlM2Y1NzA3YjA5OTY4ZjNiIGxlZ2FjeS10cnVuaworMzcwMzEgOTZiZjQwMjQ4OGM3MGE2MTUzMGQ0ZjNhODNjNWJmODUxYzIzYmIyYSBsZWdhY3ktdHJ1bmsKKzM3MDMyIGJlZDQ1YTZiOTkzYmE5NGFiM2YxNzk5ZGNkODg2MDc2M2VmZjllZWMgbGVnYWN5LXRydW5rCiszNzAzMyA1Nzc4ZjYzMzEzMzRjZTM2YzNkOGZlZTJkYzMyZWViMzVkN2I5MzYyIGxlZ2FjeS10cnVuaworMzcwMzQgYTU3NjllOGYxYzZmZGU3NTJiZTA4NDViMGU4MDZiNzQ3ZGM5MzA2NSBsZWdhY3ktdHJ1bmsKKzM3MDM1IDRjZDc3ZGU1NTFlNzQ1YjFhZTEwY2UwMDY2ZmJjMjg1YTYzZWQ2NTcgbGVnYWN5LXRydW5rCiszNzAzNiAxZjk1MjIyMzhjODYzMjE3YjE1YTQ5Y2Y2ZjA5MmFjZGM1YWViNThkIGxlZ2FjeS10cnVuaworMzcwMzcgZTA1ZTlkMDU4MzBkMDkxYzNmOGY5NDMxZjNjYTQ3ZjZjOTNlMmY5MiBsZWdhY3ktdHJ1bmsKKzM3MDM4IGY2ZmE2NDlmYzRhZjc0ZDNmZDNhMzY3NWQyZjIwZjFjYTgyZWNkNDkgbGVnYWN5LXRydW5rCiszNzAzOSBhNmM4MDE3MGZjNTM4MmY5MzkyODEyMjhiNjhjNDA5OWI2OWQ1ZmNmIHJlbGVhc2UyMy1tYWludAorMzcwNDAgNDUzNmIwMzE1MTU3N2I5NTRlZmNhMTEwYzI3YWNhODFjMzIwMTEzNCBsZWdhY3ktdHJ1bmsKKzM3MDQxIDE3OTczZjJlM2UwZTg5N2M3NDlkYmIyOTFjOWU1NjQzZjE5Yzg3ZDcgbGVnYWN5LXRydW5rCiszNzA0MiA2NjY1NTdjMjkyNGRmY2ZiMTZkMmI1YWM0YTNmNGExMzEyYWMzYWExIHJlbGVhc2UyMy1tYWludAorMzcwNDMgYTI1MTRlMmQxYzc0ZTA2ZDk3YjZmNzU3MTVhMDI3MjMyMzAxZmQ5NCBsZWdhY3ktdHJ1bmsKKzM3MDQ0IGFhZDExODY0MzU5ODhiMmFiOWNiNmRlOGU5OTBmOGM2MDMxYjc0ZjIgbGVnYWN5LXRydW5rCiszNzA0NSAwZDE2MjdjNDQ3NjkwY2FmZDNiYmUwNmUzMWQ4NzFhM2VlMjUxZTg3IGxlZ2FjeS10cnVuaworMzcwNDYgMjk2NWFlOTRhMjNmZTM0MWNiN2MwZDk1ZTgyZTdjZjVhNzU1ZTQxNiBsZWdhY3ktdHJ1bmsKKzM3MDQ3IDQ0MDFkZWE3MjRmMGFmYzE2NTI2YWZlMDExYzY0NTc2YWViNTA3N2QgbGVnYWN5LXRydW5rCiszNzA0OCA4ZTkxN2I5ZTcwZTdkN2M4MWUzZDkyNWNmOGQ1MzEwMWE5ZGEzZTQwIGxlZ2FjeS10cnVuaworMzcwNDkgZmViNTI0N2JhMGM4MGIyMjY4MmU1OGE3MmE4N2UyN2EzN2E2MmYyOSBsZWdhY3ktdHJ1bmsKKzM3MDUwIDRjNzhmY2I2MGRmMzA5MWMxODgwNDY1Y2Q3NDYxNjBjNjIxOTc3N2YgbGVnYWN5LXRydW5rCiszNzA1MSAzNWJiNjJhYzU1ZmVkYTRjMmM1N2UzZmVlMjYyNDMzNTA1YzU2MmFkIGxlZ2FjeS10cnVuaworMzcwNTIgMGZlY2NmMTliMTZkNWM0YzBkYTQxODM2YzczZjM0MmFkOWU0ZGZkOSBsZWdhY3ktdHJ1bmsKKzM3MDUzIGRlODA0ZWRmOGJjZDU3ZWU5ZDAzZTI0YzE1MjJhOTMyODQxMDNhMDEgbGVnYWN5LXRydW5rCiszNzA1NCBiMGYyNjgxYmNmN2ZhNzQwZGQxNWNkY2I3NWFlYjkyMWI0ZmRkMGI5IGxlZ2FjeS10cnVuaworMzcwNTUgZWRiODUzZWQ2Yzc4YjM1MDUyNjY5MzhjMWJkZGEyZjQ3MjFiMTEyZSBsZWdhY3ktdHJ1bmsKKzM3MDU2IGJiZTY4NDc0ZTUyMjBkNzZmOWQzY2Q1Mzc5NzIwNTZmZTVjYTg1MzIgbGVnYWN5LXRydW5rCiszNzA1NyBkMjg4M2M0MmMyMDRjMDRmMjQ2N2ZlZjg3ZDg5MDEyZWNlN2QwZDE4IGxlZ2FjeS10cnVuaworMzcwNTggMDk2ZGU0NTgyN2M3YjY3NGJmZWZlNmUzNTI3Y2IwMjdkMDM5NzU2ZSBsZWdhY3ktdHJ1bmsKKzM3MDU5IDdmNTdiM2M3ZWJiZmZjYjVlOGU4ZGU0MTNiYTNlZWZhZWEwMDhlOGYgbGVnYWN5LXRydW5rCiszNzA2MCA5MzRhNWRiOWI5NWI2MTIyOWZkOGZhN2FiOGIyYjRkYTBiNmI5YmExIGxlZ2FjeS10cnVuaworMzcwNjEgN2RhOTIwMWJjOGI1MzJjNmRjMzY5OTdhMjY2NzIxNWRhNWUzODhjYyBsZWdhY3ktdHJ1bmsKKzM3MDYyIDAxNzIyN2U0N2MzZGVmMzFiOGMwMTgxNjZkOGYyYWNmN2YzMmNhZTkgbGVnYWN5LXRydW5rCiszNzA2MyBlYTQ4NzRlMDIxZTgwZWFjZTY0ZjgxMmZkZWE4NzUzOWZiMWM0NDUyIGxlZ2FjeS10cnVuaworMzcwNjQgMjY1NjMyMDQ2NjBjYmNiOGUyNDQ0OTNkNzliZjAyY2RlZjBkMzBjNyBsZWdhY3ktdHJ1bmsKKzM3MDY1IDM0N2Q3MWMwZTAxOGRkMTc5MTUwNTM0YTM3YjA4M2Y3YzAzOTMzYzMgbGVnYWN5LXRydW5rCiszNzA2NiAxZDBmNGMwMzU3ZDAwNGYyOWVmYjE1YjY1YTg2ZmVlOGI0MTE4YTZlIGxlZ2FjeS10cnVuaworMzcwNjcgZWFiMjFmYmY5YTcwZjk3MGRkOWQwYjFkMDY0ODM4ZmQ4MDE0OWExMCBsZWdhY3ktdHJ1bmsKKzM3MDY4IGMxOGFjYTdlODFjYjVmNzc3NjhlYTljNGI0ZThmMWY2NTUyMTFjMDUgbGVnYWN5LXRydW5rCiszNzA2OSA5MDU2OWFlM2UzZjNmMWNkZTEwZDdhZmQ1N2Q4N2FmYzM5ZjQyNWExIGxlZ2FjeS10cnVuaworMzcwNzAgNjk3MDA2ODdlMzBmNTE1YTY0NGE0MmMwOWExNzBiNmIxNDExZGQ2NyBsZWdhY3ktdHJ1bmsKKzM3MDcxIGJlZDYyZjM5OWRhYzBiZjU0NzFlMjY4OWVjYzMyOGVhM2ZlOTk4NzcgcmVsZWFzZTIzLW1haW50CiszNzA3MiAwNDg2NGMzOWIwMDYzMzNmMzJhYzI0OWVhMThlMjc2Mzg1Yjk5MzU0IGxlZ2FjeS10cnVuaworMzcwNzMgMzRhOGQ3NWVkZDJiMDNhNTFhN2IxNDE4MTE4NzQxNGY2Y2IxYjQ0YSBsZWdhY3ktdHJ1bmsKKzM3MDc0IDE2ZGZmMzBlNjZlYzBlNWQ4YzhiNzc4ZGFjZGQwZWU3YWUzMGIwNzcgbGVnYWN5LXRydW5rCiszNzA3NSBjOWI5OTMwOGIwZThjYmY5MGY1ODZmMDJjOGNhMTkxNDU0NjIyNDQxIGxlZ2FjeS10cnVuaworMzcwNzYgOTQyMzBmNmI1ZWJlNTJmNjMyZDEyNzMyZGY1NGVhZDcwOGIwOGE4ZSBsZWdhY3ktdHJ1bmsKKzM3MDc3IGRiMWJhZmE5YjY1NjEzNmI4N2NlN2JjMTMwNDA1MTkzNzQyNjg5MzIgbGVnYWN5LXRydW5rCiszNzA3OCBkOTc2NWViNTllZGQ3ODU1Y2I2NjRjZDNjMjQzNzI1YTBmMmEwN2E0IGxlZ2FjeS10cnVuaworMzcwNzkgOGQ3NzEzNGFhYjgyZjQwOGUyNmI4ZWE3ODA5NjRlZTMyNmY5NzQ4NyBsZWdhY3ktdHJ1bmsKKzM3MDgwIDZiNzQzY2JjNDE3MTBlNjI2NGU4Y2ZjYjQyNGNiZjkxNWJmMzMwZmUgbGVnYWN5LXRydW5rCiszNzA4MSA4MjUyZTk4OWNiYjE1YmY0NzZiN2FhNTJmMmYwNTQ0Y2ZhY2IxOGU3IGxlZ2FjeS10cnVuaworMzcwODIgMDY2Yzc4OTBjZDYxNTUzMGFhYWQzYWExOTg1OTVjMjNiMTA2MWRmOCBsZWdhY3ktdHJ1bmsKKzM3MDgzIGQ4NjFhYTg3NDUyNTU4ODdlMWE2M2E4MWM5NWZjY2NiYjcwZmZlODIgbGVnYWN5LXRydW5rCiszNzA4NCAzMjM1ZTczOWJkYTEyZWYxODk3N2MwOGNiYjE4NTEwMzgyZjg0MmYzIGxlZ2FjeS10cnVuaworMzcwODUgYWNkOWJmMmUzYmNmNTE1OWJmZmVkNzk5Mjc5NDVmYmJlMWY5NThmMSBsZWdhY3ktdHJ1bmsKKzM3MDg2IGU2MzA0ZDY2ZDk0NWI1Njk3OWQzODdiODlhNjE0MzZjYjk5OGRhYjMgcmVsZWFzZTIzLW1haW50CiszNzA4NyA4YWJkMzIyYTAxM2FiNjhjZGNhYTZkZTMxMDRiOTNlYWRiM2Y3NTAzIGxlZ2FjeS10cnVuaworMzcwODggODQ5MzEwODBlMDVjYzNmOTk5OGI3NTRiYzg5MjFlZTk5MTc3ODYxMyBsZWdhY3ktdHJ1bmsKKzM3MDg5IDU3YTY2ZDcwMGM3Y2ZiYWE2NmEzYjQ3Y2RjNmVkYTJhM2I2MDk4ODkgbGVnYWN5LXRydW5rCiszNzA5MCAwYThkMzlhY2E5OGM1ZmVjY2RmN2M5MTc2MWU3NDA0N2YwODBlNGExIHJlbGVhc2UyMy1tYWludAorMzcwOTEgYTFjZjRhMjlhYzMwMDcwODdlYTg5OGZlOTk2MjU2ZjExMzgyMzAzZCBsZWdhY3ktdHJ1bmsKKzM3MDkyIDQwYjVhZWUyMGI4MzE3MmVkMzRiNDFhODE2ZmJhN2NhNjI5YjIyOTEgbGVnYWN5LXRydW5rCiszNzA5MyA3ZmVjMDY2MmNmNGFhMmRkZmU0ZGI3ZmEwYTU0OThkYWU3YzAxNzQ3IGxlZ2FjeS10cnVuaworMzcwOTQgOWM1NzBhZjUzNTZlN2UxYjc2ZDkxYWFlNDAzYmMwM2NlNjM4YTdjZiBsZWdhY3ktdHJ1bmsKKzM3MDk1IGRlYTk4ZWVkOGNmMGM4YWZmMzYyODQxMTdjNTgzMjQ3Zjg5M2RiYTggbGVnYWN5LXRydW5rCiszNzA5NiA2OTk3NmNmNTkxNDk1ZmU4NGFlY2E5ZTViZjU2NTIxNGVmZDg0MDQ1IGxlZ2FjeS10cnVuaworMzcwOTcgNzdkMzY0MmViODdiZTdhODczOTZmMTQxMzFiYjI3NThiNzMwNjM3YiBsZWdhY3ktdHJ1bmsKKzM3MDk4IGFiMzQ5ODBmZmExNjkwYTk1M2JmMzIxMGUzYmE3M2FmNTVhZGRhYzggbGVnYWN5LXRydW5rCiszNzA5OSBmOWY0YjE5ZGQ3NTVkOTAxYWIxOTU3Njc5NTU5NzFjZjNiMTVjNDFiIHJlbGVhc2UyMy1tYWludAorMzcxMDAgMjJiNjNlZDJkNWIyMjczZmJlOWVhMGNiMDk4MDRlNzU4NzFmZDFlOCBsZWdhY3ktdHJ1bmsKKzM3MTAxIDJlMDk2NmRiZDY3OGIyOGVhODVkOWYzODgxODlkOTExOWEzOGEwZWIgbGVnYWN5LXRydW5rCiszNzEwMiBmOThlNTlmMmY4OWQwOTFlNDBhZWY1NmRjNGI2MzUwOTgzNjA3M2ZkIGxlZ2FjeS10cnVuaworMzcxMDMgZmI5ODY5MDQ0YmJhOWY3MjE3ODlhY2VjZmVkZmU4YzdjZjA2NDY0MCBsZWdhY3ktdHJ1bmsKKzM3MTA0IDcxNDI3OTE1Nzk2ZWRjMWMzMzUyODg5ZTBjYmU1ZThhYTU4OTA5ZGIgbGVnYWN5LXRydW5rCiszNzEwNSAyY2FhNmYxOWEyZTY2Y2VjZThkYjFiYjBhOGFhMjkxYjQ0NzQ1M2Y4IGxlZ2FjeS10cnVuaworMzcxMDYgNTYxNzAyMzUwZTA5ODA3YjNjNTI4Y2Y5YmEwMjk5MGFiYmY1NTgwOSBsZWdhY3ktdHJ1bmsKKzM3MTA3IGNkMmE5NWNmYzdlYjQ4YWFmNWZmYTQzZmIzNDA3ZWQxNzA1NjA4N2UgbGVnYWN5LXRydW5rCiszNzEwOCAzOTViYjM3NDZkMWQ0ZTA2NjQ3ODI1OGY3NTBiNDBjMjUwMjgyYjdhIGxlZ2FjeS10cnVuaworMzcxMDkgODRhY2M3N2MwNmI4ODhhODZmYTQ5MWEwMDJlZTE1Y2E1NDEwOTA3YSBsZWdhY3ktdHJ1bmsKKzM3MTEwIDAzNDQwMjcyMDI4Yzc5NzM0Yjk4MWYyZTUxYjJhZjU3MDFmODE2NDMgbGVnYWN5LXRydW5rCiszNzExMSA5OGRiMDlmZDQ0M2NmNjdiNWFlYjNlNmEwOGMyYzNhMmE3ZGZiNTJlIGxlZ2FjeS10cnVuaworMzcxMTIgMWY5YjljMjI2YjQzZWQyMGNiNjFlNmQyMWFlYTZjYjk2NmU4YmNkMyBsZWdhY3ktdHJ1bmsKKzM3MTEzIGM2NTQzMzRkYzk2MThlZTA1Y2ZmMjU4MzczMWIxZDA1ZTY1ZjZhMDkgbGVnYWN5LXRydW5rCiszNzExNCAxMmVmNTZmODhhOTBiZTUzNjhjMjVjNTM3MzM3MzhhZTc0ZjA3YmNmIGxlZ2FjeS10cnVuaworMzcxMTUgOTU3NDRhNDIwOGEyNzBjMDViOWM5NTQ4YzExMTY1OWJiMGQ4MzIzYSBsZWdhY3ktdHJ1bmsKKzM3MTE2IDM3N2M1MThkODQ4MzQzOTc2YjkyOTQ3OTAxMzJmNjNhMzhmMWM2ZjIgcmVsZWFzZTIzLW1haW50CiszNzExNyA4ZGQzNWY1Yzc5MjgyYTcyMmI2OTU4NGUxOGYwNmYzOTcyMDI0MTcwIHJlbGVhc2UyMy1tYWludAorMzcxMTggYjRjYjQ5ODI5ZDNlZWVkYjBmNGIxYzI3NzA2ODRlZDVkOGY1ZDgwYyBsZWdhY3ktdHJ1bmsKKzM3MTE5IDNmYmQyZDFjYTViYjYwZDNhNjcwOWIxN2ViOWMxYWYwNjZhODFkMzMgbGVnYWN5LXRydW5rCiszNzEyMCA2NjQxZDA1NDI1OTI3ZjJhZmE2YzEwMGUwZjQyOGUzNTUyMWM5YjFkIGxlZ2FjeS10cnVuaworMzcxMjEgMTFhNGZiYzg4YTgwMGM1ZTFhMzQ4YjdmNWZkNDk2MWI2MjNiMzU0YSBsZWdhY3ktdHJ1bmsKKzM3MTIyIDk5M2ZkOGFjYzkwZjI4NDczM2EwODhhNWRhMGQ4ZGEzNGFjNWU2ZWIgbGVnYWN5LXRydW5rCiszNzEyMyBiNjNiMzA4MjFlZjQ3OGQ5MGViOGFhZTcwNzQyM2UzYjMyODdjMDdlIGxlZ2FjeS10cnVuaworMzcxMjQgOTY1ZTk2ZTE1Mjk5MDU2MzdlN2JkNWYyZjE3YjliODM0YzI3MzljMiBsZWdhY3ktdHJ1bmsKKzM3MTI1IDFjZjdkNzIyNWE5OTYzODdjNzA2NTY4MTgxNDVmYzE1MjJjYzllOTcgbGVnYWN5LXRydW5rCiszNzEyNiA3YTFmYjMxNmU2NTUyMmQxNmM3Njc0YTdmYmYyZjgwNWNlMmJiYTNhIHJlbGVhc2UyMy1tYWludAorMzcxMjcgOGNkNTc3OTZhOWNmODEwYmJlZDhlMTc1NDFmZTE0M2IwNjhkMDUwNiBsZWdhY3ktdHJ1bmsKKzM3MTI4IGYxMDcyYTMwYmI1ODEwOGU4ZDc3NmU3ZmExMGNkM2QzZGI3N2ZmYTYgcmVsZWFzZTIzLW1haW50CiszNzEyOSBiMDQ1MDcwMTcyY2IyZjc1OWUzNWNhNDNkM2NhM2Y1ZjFmNTkxYTk5IGxlZ2FjeS10cnVuaworMzcxMzAgNGU5ZWNiZjQ3YjZiYTk3YzhiNzVjMmFlMWUzNTRkMDdjZDgxODNjOSBsZWdhY3ktdHJ1bmsKKzM3MTMxIGQ2NzVlM2UwZmU3OTY4ZWMxNzA2NDQ4ODMzMmZjYmVhZDczMTMxM2UgbGVnYWN5LXRydW5rCiszNzEzMiBhNDdmM2QyZmZkMjIxNTRmZjc4ZGY5NWZiNjI4ZjhiZDA2M2QyYzgwIGxlZ2FjeS10cnVuaworMzcxMzMgMGVkNGZkN2EwZTJlMGY1MDNmMmRlY2I3M2RjY2M0MjRiNzc1ZGU2ZiBsZWdhY3ktdHJ1bmsKKzM3MTM0IDMwMTY0NzFhZTU0ODliYmY5ODc5YzFkNzNjZWMyZmIwYzAzYzI2ZTQgbGVnYWN5LXRydW5rCiszNzEzNSAzZGJkYmQ1NzJkOTQxMjkyN2U4ODM2NTIwMzEwZTA2NjEzNWVkOTEzIGxlZ2FjeS10cnVuaworMzcxMzYgYmFjOTk3Yjc5YjE5MjVkNmI4OTJkM2Y4YjRjZjk4MGI4MzI3ZTVmMSBsZWdhY3ktdHJ1bmsKKzM3MTM3IDRjYTlmYTIzNTNiZmE0M2IzODZlZGJlZDJiZDk0ODA0ZjViZTMwMjUgbGVnYWN5LXRydW5rCiszNzEzOCAyNzI3NzE4ZTllOGY0MjY0ZmI2ZDE3YTE3ZGYxOThlMmJhMWNmM2QwIGxlZ2FjeS10cnVuaworMzcxMzkgYTEyZDk4NGJkOTYyZDk1MmRjYTA3ZmE2NGI0OWIzZGI5ZDQ5NGIwZSBsZWdhY3ktdHJ1bmsKKzM3MTQwIDhkMWI0Y2Q4YTEyNDU0ZWY2Y2FhMGE5YzUwMWNkNWU1ZTJlY2RiNWQgbGVnYWN5LXRydW5rCiszNzE0MSAwYzczNDkzMmM2ZjQxZWQyZDUwZmUzYzA2N2MyMGI3ZGI3ZDI3YTQ1IGxlZ2FjeS10cnVuaworMzcxNDIgMmIxMzY0NDEwMzVjODMzZWU0YmIyNWNhYTc4YzJjMDFlYzc4ZGI5YyBsZWdhY3ktdHJ1bmsKKzM3MTQzIGIyNWNiMjA0NWRhY2IwOTdkZDExM2VlOGFkZDdjMTEwYWU2Nzk2YTcgbGVnYWN5LXRydW5rCiszNzE0NCA4MjZhZDg5NmE3YTVjMzViYTA0YjUzNzI3YzUyYmE3ZDExZjI2ZDUzIGxlZ2FjeS10cnVuaworMzcxNDUgNGFmZjFmYmNlNzUyNGYxYzQ4ZjhkMTJiMTcxYjBmOTc0ZmY3MTMyZiBsZWdhY3ktdHJ1bmsKKzM3MTQ2IGVmZjc2NmUyOWM1NTI1YTA3MDVmMmJkZTZjNWRiZTdlOTkyZTYyNDAgbGVnYWN5LXRydW5rCiszNzE0NyAyNzQ3ZGJkNTkzOGI1NmY4ZDk3NTAwZWVkZjQ2YTAxYmE3Njk1ZmY1IGxlZ2FjeS10cnVuaworMzcxNDggMzQ1ZmFjNjZkYWE5YjE3M2RmZWQyZDhhMzkxYWJjMTVjNTU3NDg5NCBsZWdhY3ktdHJ1bmsKKzM3MTQ5IGVlNzAzYTA5NGRmYmRmMTAwYTlkYmQ5YzM1MDM3ZGNlNjkzMmYzZTQgbGVnYWN5LXRydW5rCiszNzE1MCBlNTg2Y2JlY2RlYmE2MjkwMzNkNzg1ZDAxNTMzNTE1NDY3OTQ2YjFkIGxlZ2FjeS10cnVuaworMzcxNTEgNDQ5MTQxYWEwMTFjOWE0MzYxMzdkYzk5OTgzMTdiYjk1MTI5NTkwNyBsZWdhY3ktdHJ1bmsKKzM3MTUyIDhhYWQ1Mjk2ZmVjOTYwMzQ3MDk1ZTFjNDc1ZjgwNGNmMjBmNDY3ODkgbGVnYWN5LXRydW5rCiszNzE1MyBmZjg4ZGE0MDA3Nzg1ODljMzI5MzgyYjllZmZkZWYyZTE3NmM5ZjJlIGxlZ2FjeS10cnVuaworMzcxNTQgOGQyNzY1NTFjZWE5NzJhMGI3ZTFjMTc0MjZhNjQyMzM4ZTY1MWY4NCBsZWdhY3ktdHJ1bmsKKzM3MTU1IDRiMDBhZTFlZmRkODZkYzM5MzQ1MzQ5MDRmNWNmMjY0OThlODAwODkgbGVnYWN5LXRydW5rCiszNzE1NiA4YTRjMzA1NGEzNmM5NDZmNDgxMzhkYzZhZThiNWYzZGViN2JhYzM1IGxlZ2FjeS10cnVuaworMzcxNTcgNWZhYjRmNDNiOTRmNzM3MWI1YzAwZGE5NmJjN2U4ODY0NGFiYTIwOCBsZWdhY3ktdHJ1bmsKKzM3MTU4IDY3ZmJiZWIxZTIxODFlMDAyZTQxMGE4NGJiOThmODkxZjI1NWU5OTEgbGVnYWN5LXRydW5rCiszNzE1OSBlMDdhNjIzNGI3M2IxZjQ3NzU4MGZiY2IyN2RhMjUxNThjNjAyZjAzIGxlZ2FjeS10cnVuaworMzcxNjAgM2UyNWQ2ZTNkYTE5NDg1YjlmZjhiMDQ5MWU4MjcxOWUzYTY3NzdhZCBsZWdhY3ktdHJ1bmsKKzM3MTYxIDk2ZDUzODQ4OGFlZWFjM2JmZTY2MzlhNzk0MTRiNjcwNzQxZjlkZTggbGVnYWN5LXRydW5rCiszNzE2MiBhMzdhZTdkYmE4MTRiNzNmYTUzMDE4NjdhNWM0NmViYmY3MjQzMjk3IGxlZ2FjeS10cnVuaworMzcxNjMgYjI5MTBlNDc5ZjA3YjExMDMxNDM0YjExNTQ0NjcyY2JiZmUwM2QyZiBsZWdhY3ktdHJ1bmsKKzM3MTY0IDc3ZGUzODUzNGQyNjMyODc2NDYzZDViZWFhOTc5NjM4OTAzMzA5N2EgbGVnYWN5LXRydW5rCiszNzE2NSBiMWMyNmU4OWM0NjRkNmE4OWM2N2JhY2VlZTE1OThlNTk0Y2EwMGUzIGxlZ2FjeS10cnVuaworMzcxNjYgZTE5YjAwOTc1ZDVlODYyZjBhZWM5ODE1ZjI1MzZjMzU5OTdlYzM5NyBsZWdhY3ktdHJ1bmsKKzM3MTY3IDUyMWI4Nzk1ZGY5YmU0ODgxMDAyYTE3NzliYTNlNTUwNjFiY2I4NzMgbGVnYWN5LXRydW5rCiszNzE2OCA0YjMyNDg5YzM0YTdhMTFkNWJjYTg5NWE2NmYxNzQ0NzUwODJmZWQzIGxlZ2FjeS10cnVuaworMzcxNjkgNzhiNTc4YzQ2NzcwZTUwZTYwMjhmY2JiZTdmNTQyNjcyYzk4MDY1ZCBsZWdhY3ktdHJ1bmsKKzM3MTcwIDdmNjE3MDI1NTY1ZTgwZjA3NTU1ZWU5Mzc3NzJjYzZhZDc0YjM2YTIgbGVnYWN5LXRydW5rCiszNzE3MSBjZDE1NjQyMzA5NDc4ZWQ1ZTBkYTZkMzUyNDY5NWQzODEzZjUyOGE1IGxlZ2FjeS10cnVuaworMzcxNzIgZjI4MDcyZTY0ZjgxNzY3NDNkYzAzOGJjM2FkNGJlNTEyYjkxZDBmZSBsZWdhY3ktdHJ1bmsKKzM3MTczIDU5ODA1MDAxN2I1ZTQwMWQwMjAyMTBhMWFhNDBlM2I1Mzg3OThkNTEgbGVnYWN5LXRydW5rCiszNzE3NCA4NTc5ODU5ZjE5OGM3OGFjMTQzZWU2N2NjY2Y5MmE3NjlkOWViNTI1IGxlZ2FjeS10cnVuaworMzcxNzUgNTliZDEyMWVlZWI3MWM3NWNlZjhhM2M4ODUzZjc4OGYyNTA4NzJhOSBsZWdhY3ktdHJ1bmsKKzM3MTc2IGJmMGVmNWZjNDlmMWU4NzcyYTdmY2QzZDVmOTkxOTVhMGZkMjMzOGYgbGVnYWN5LXRydW5rCiszNzE3NyA1NDJhNWVmYTQ4ODNiYTI2NjhkNWEwNDQ0N2Y0MDdiMzQ2MjM0MjE2IGxlZ2FjeS10cnVuaworMzcxNzggMmY1MmRmMTczOTUyOTViNjQyNjMwMzhhMGJjNzhlOTFmMGY3YWZlMSBsZWdhY3ktdHJ1bmsKKzM3MTc5IDk2YmI0NjY5MWU4NjA2MzJkMjMzOTRiM2JiY2IzODAwNWEwNjQzZDUgbGVnYWN5LXRydW5rCiszNzE4MCAwYjE4MWJmMjMwYzkzZjY2MTdiYjUwM2ZiNGIwNWIxNzg3NTVlZDc0IGxlZ2FjeS10cnVuaworMzcxODEgY2YwZWExOTg2OWFmNWVhNjQ5N2QzNTg4YThkM2FhYjRiYzE0NmI1NyBsZWdhY3ktdHJ1bmsKKzM3MTgyIGI1NzYxMmY2MWJhM2YzZWRlMWE5MmUyNzViZjA3MjVkMTVlZjMwNGEgbGVnYWN5LXRydW5rCiszNzE4MyA2ZDNiZGQxOWJlZWIzOTk0NmJjNjkwODI4Mjc4YWMzNzU2YzJiOWNiIGxlZ2FjeS10cnVuaworMzcxODQgZDViMDk3NjA4YzlkZWNhYzVkMjA4M2M4ZDY3ZjgxMmJkMDAzOWY2YiBsZWdhY3ktdHJ1bmsKKzM3MTg1IDNlZTVkZWMwY2EwN2NjYzM1ZmUxMmQxOTU0MGFjNmEzYThiYjg1ODQgcmVsZWFzZTIzLW1haW50CiszNzE4NiAxYmE3NDY5YTNiNDliNGQwZDRmMmZmMWQ3MjFlN2EyYTliNzhiMTNlIGxlZ2FjeS10cnVuaworMzcxODcgMDBiODlhYjQ0Y2ZkN2NmNDBlZjBlNDFhNGQxMDRkOWVkMzE0MTZkNiBsZWdhY3ktdHJ1bmsKKzM3MTg4IGEyNWFmNjhkNzFmYzZkNGQ3NDdiMTAyYWYxMTRjNGYyOTRlYjc1ZjggbGVnYWN5LXRydW5rCiszNzE4OSAxNzY4YWZmOTI4NjRkNjhjOGJkZTk3ODVkZWM2YzMyMjEzMDllOWMzIGxlZ2FjeS10cnVuaworMzcxOTAgNzg3ZmZmNTFiZjJhYWQyODMzYTYzZWU5Zjc3ODM2MDYyYTI3MDQzNiBsZWdhY3ktdHJ1bmsKKzM3MTkxIDU0NTJkNGVjZGRkMGM0N2ZmZGIzMjUwNGVkYzM4NzQxMDFhYTFmYzAgbGVnYWN5LXRydW5rCiszNzE5MiBmZWU1OTJmYjU2NDM2ZDkyOTE5OTg4MWNkODA5Mzc1YTg2NjE4MDg0IGxlZ2FjeS10cnVuaworMzcxOTMgOTdmY2E3MzVjOGRhNmY5ZGIxYThlNzhmZjJhOTU2ZTkzMWNmYTNkMiBsZWdhY3ktdHJ1bmsKKzM3MTk0IDIwODgxNTA1YzE0MjczOTBkN2RmYWE3NTk3Nzc3YTAyNWIyYTgzZGYgbGVnYWN5LXRydW5rCiszNzE5NSBkNTM4ZWNmMGJjNjk4NGFkY2VmYjgxNzE0NjY0NjA3MDFiMmU3MjIxIGxlZ2FjeS10cnVuaworMzcxOTYgMDYyMTc3ZGU4Njg1OGE3ZTBmYWU5NWMyMTA5ZGY1YWZhNTgwYTU5ZCBsZWdhY3ktdHJ1bmsKKzM3MTk3IGZjMGI0NTc1NTc0MzI3NjUxMTg1N2FlZDNlNTA5YTdlMzI0NWU1MGQgbGVnYWN5LXRydW5rCiszNzE5OCAwNDI0NWVmNTM5NDljMWJkMzExMTY2ZDQ5ZDllMmVjMWJjMzlkNzIxIGxlZ2FjeS10cnVuaworMzcxOTkgNTA1YzkwNjM4NTBlNGM0M2IwYWY0MTY3NzcxOWUzYjY0NzNmZGJlZCBsZWdhY3ktdHJ1bmsKKzM3MjAwIDg0ZmJhYWEyMDM1OGE3MGVmMTJlMzI2NzAyNGM0YTRkY2E2NzViZTEgbGVnYWN5LXRydW5rCiszNzIwMSAwNWMxMjVjOTg3NjcyMDc1YjU2OWEzZmQyNjQyZGUxNTY4YjU5YzU0IGxlZ2FjeS10cnVuaworMzcyMDIgMDBlNjE5ODUxYTU2OTc0OGFkNDdiYTI2MDM2YzQ1Mjc3MjQzZDNkNiBsZWdhY3ktdHJ1bmsKKzM3MjAzIGI3YWNiOTcwZjUzNjUxM2QzZTRmMTIzMThkYmQwYTZlY2UwZTIyYzEgbGVnYWN5LXRydW5rCiszNzIwNCBmMzA5OTNkMDU4OTA4ZWIwYjdhZTNlMTlhNzlmNWI5NThiZDBkY2NlIGxlZ2FjeS10cnVuaworMzcyMDUgNjhlNjhlZDQ2ZjBlOWFmNzQyYmEwMzFkZjRlZGFjZTQyMjhlMDUwMiBsZWdhY3ktdHJ1bmsKKzM3MjA2IGQ5ZTAzOTM4YTMzM2JkYjk1NDJkZjUzMjVkNzgxOWM5MzdkNjNlMDEgbGVnYWN5LXRydW5rCiszNzIwNyBkNWMzNGRiYzM2MTgyZjlmZTU0ZmE5ZDBiYjIzY2JkZTg2ZGRiYzBiIGxlZ2FjeS10cnVuaworMzcyMDggMGE3OWQ3YTkwNDBjNzY5YWZjNWViOTM0NGQwYzBlZWI5OTE4NjlhZiBsZWdhY3ktdHJ1bmsKKzM3MjA5IGU1YjRmZTk3Zjc0ZDE1ODZiMTkwNWY2NWVhYzhlNzU3MDYwYmVhMGUgbGVnYWN5LXRydW5rCiszNzIxMCAxYTU0ZmNmNDhmZTRlNjQ0ZmUxOGFiMWE1NjdiNDJkNDg3ODA0NTJlIGxlZ2FjeS10cnVuaworMzcyMTEgZGFkODI3Nzk0NzQ1Y2JjY2Q0MTFjZTg0ODBmNTUyMzQ4OTRmY2Y3MSBsZWdhY3ktdHJ1bmsKKzM3MjEyIGFkYzY2ZDMxNGM3OGVkMTZkZWExMWU0NDVlOGFiYTMzNjZiNTI1MDYgbGVnYWN5LXRydW5rCiszNzIxMyBkZGJhMTU0YzBlMDAwYWM0NTZiMGU3M2U1NTk4OGM0NzVmYmE5ODliIGxlZ2FjeS10cnVuaworMzcyMTQgYzQ0ZjA4MzQ2NWY5YzVhZWUxYWEzYzYyMDY4ZWZmYWM3NTBkNmU1YSBsZWdhY3ktdHJ1bmsKKzM3MjE1IGNmYTcyYThkZTE0Mzk5MGNhYWViYWVhY2Q0MjZkOWFlM2U4ZTM1MzAgbGVnYWN5LXRydW5rCiszNzIxNiAxMjhkNTI4NDU3ZGE1NjVmOTZkOWRjZjFmNjQ0YTRiMzM2NWViMWNjIGxlZ2FjeS10cnVuaworMzcyMTcgZjc0NzRkMzFiYTNmYTliZjBjNTA3OTk0NDZmOWJmMjcxOWJmNGQ2YyBsZWdhY3ktdHJ1bmsKKzM3MjE4IDIzZGY2Y2YyOTY1MGQ0NWFhZTFjNmI2MmE3ZjllZTU1YmIyYjgyZDQgbGVnYWN5LXRydW5rCiszNzIxOSA5OTlkMzFjYThhMTlmN2RlMDcxNmIzZjdiODNiYjMwZTA1MTc3NjBiIGxlZ2FjeS10cnVuaworMzcyMjAgZTU2MTkyZTlmZDdlN2U0OTNmYjAwMjVhNmJlMWUyZTdlMTZmOWY4YyBsZWdhY3ktdHJ1bmsKKzM3MjIxIDFkZmM5N2UyYWNkZmU0ZWQwNzBmOWEyOGNkZmQzNzc1MWMxYTI0ZTIgbGVnYWN5LXRydW5rCiszNzIyMiA5NjA0MDI1MDY5NDA3MmJiOTdkODBlYzQ4OWIyYWE5Mjk1YjBkMDI3IGxlZ2FjeS10cnVuaworMzcyMjMgYzlhODJlOWI3YjRkMTg1MTZlYTJjYzBkMjRlOGM1YzljY2I0YmYzNCBsZWdhY3ktdHJ1bmsKKzM3MjI0IGE2ZWFjM2ZlNTQyZjkzMGM4ZTYxMzE1OTNiNGYzZWNhYjBjZTdiZmMgbGVnYWN5LXRydW5rCiszNzIyNSAwM2JlMDZiY2ExNjBmYmM5YzliNThhODMxM2JlMTUzNDYyOTRjZDkzIGxlZ2FjeS10cnVuaworMzcyMjYgMjY4YzVmODNmYjg3N2FhNDE3MDNlYjNiZWQ1ODg4YjhlNDg0YTIzOSBsZWdhY3ktdHJ1bmsKKzM3MjI3IDI2ZTQyMTE4NjVlZDdiMzkwZjRlOTQxMTI4OWE2ZmZkNTY2ZTczY2IgcmVsZWFzZTIzLW1haW50CiszNzIyOCAwZjUzYmExNTllNTRlMjFlZjU1N2MwNDY4NGM4ZTY2ZmVmNzQ2ZjA0IGxlZ2FjeS10cnVuaworMzcyMjkgYjEwYjdiN2FmYzAwZDliMDhjZTgzMzkzYmQ0MjA0YTA1Njk0NTM0YSBsZWdhY3ktdHJ1bmsKKzM3MjMwIDM1NDBlMTA1MjVhMWFlYzY3YmIxNjAzYmY4OGExYzU4ODdiYjE3MjIgbGVnYWN5LXRydW5rCiszNzIzMSBkMGMwMWUwZmUyNDk2NzU3ZGNiNmZmMGI4NWFlZTFjM2M5ODdiZDNlIGxlZ2FjeS10cnVuaworMzcyMzIgZDQxMjU2YTZmMmNlY2NlY2QyMDMxNGJiMzQ0ZGQ1MzEyZjY3NzQ5MyBsZWdhY3ktdHJ1bmsKKzM3MjMzIDVmMGM3ZjVjYTZmOWYxMTk0MTExYjg3OTc1ODM3MzMyYjJhY2IyODAgbGVnYWN5LXRydW5rCiszNzIzNCBhZjY1MDA0ZjYyMmZhMGQ4OGVjYTAzMzdmYWQ3MDYyNWEwNjEzYzE5IGxlZ2FjeS10cnVuaworMzcyMzUgYWQ0M2RmMTk3ODRjNWU0NGQxNzRlMTM3OWFmNmM3NmRhMDNlOWUxNyBsZWdhY3ktdHJ1bmsKKzM3MjM2IGIyMGQ0NTU1ODY1MzZkMzQyY2Y3YTJlNzE1Njg0MGY3OWY1YjRmNzUgbGVnYWN5LXRydW5rCiszNzIzNyA3NmE5YmRhMzAyOGU4NmRhNDhhYWZjNTU4MDM4NTljMmE5MGYyNWQ2IGxlZ2FjeS10cnVuaworMzcyMzggYWRhMmE2NmI4NmE0YTE3Yjg1MWMxZWQwNGE1OTYxM2IzNGE5ZTEwMyBsZWdhY3ktdHJ1bmsKKzM3MjM5IDEyNDY0MjIyMDNlODc4NjUyYzUwMGRhOTBiNDFlNjQ5ZGE0Mzc2ZWMgbGVnYWN5LXRydW5rCiszNzI0MCA5NDY1ZmU2NzgyMjI2NjQzZDZjNTdlZDUxNWIyYzVkOTdlZmU3NjcxIGxlZ2FjeS10cnVuaworMzcyNDEgYWVlMmVlNzQ1ZjJjNWQ5OGQ4NmMwNjI3M2U2OWJiZjk3MzEzMWFkZSBsZWdhY3ktdHJ1bmsKKzM3MjQyIDc1NTFjNzI1ZmU5NmEwMWEyNDA2OTI4NmQyYzljZTg2ZjlkZmZhNDMgbGVnYWN5LXRydW5rCiszNzI0MyBmYjYxNDAzMTgwYTg1YzQ3NjkwYTVkYjU0OTc0NzlmMDYwMzMwNGUyIGxlZ2FjeS10cnVuaworMzcyNDQgYmZmZDQ5NDM1NGVlNzAyYTFiNjk5NDMzMzZmOTQyMmU0NDY0NjFjYSBsZWdhY3ktdHJ1bmsKKzM3MjQ1IGYwMDUzYTZhMmJlZGRkYjk5NjNkOTdkOWM2NDRhMGViYmQ5NWY0NDEgbGVnYWN5LXRydW5rCiszNzI0NiAzZTA2Mjg5N2QyZTdhOTEwNzM0NjJkM2NjMDk3NmFlY2I2OGYxNmUyIGxlZ2FjeS10cnVuaworMzcyNDcgZGY0NzcwYjdjYWVmYjQ3Yjk5OTgxNGMxYmJmN2M5YWFmYmFmYWRjNSBsZWdhY3ktdHJ1bmsKKzM3MjQ4IDQzODUyYzk2MzE2MDQxNDkyNzFkNDQ3NDQ5NjQxOWZiYjM5Y2IzYzAgbGVnYWN5LXRydW5rCiszNzI0OSA5ZjJkZGRlOTNhNjM5NWQ2MmRjNzIzZDVjZmM2MjA4NWFjNjNhNmM2IGxlZ2FjeS10cnVuaworMzcyNTAgYzJjNDllZTcyN2QwZGQzNDc3Yjg4ZDlhZDA1YjRkOTk4NzE0MGU0ZSBsZWdhY3ktdHJ1bmsKKzM3MjUxIDk0M2MyMmE3YzcwMWIyNzMwYmI1ZWE5ZTI2Y2E4YWM2NWRlM2MxOGEgbGVnYWN5LXRydW5rCiszNzI1MiAxMTAwNjA1ODcwZmViOGM3YThjMTI0YzAxODc4MTRhMDM4NTllZjA4IGxlZ2FjeS10cnVuaworMzcyNTMgYzkxNjhlNzllZjRjYzJkYjJlZDFmODBmZDdhZjAxOThhYjM2Mjc3MCBsZWdhY3ktdHJ1bmsKKzM3MjU0IGQxMTNjNjEzNTY3YTllNTJjMDdjNDg5ZGI2OGYzYzYwNTA1MDM2MjMgbGVnYWN5LXRydW5rCiszNzI1NSAyMjgxMTQwZDIwYzc1YzNlMmQwODc3ZmFjM2U3ZWE0Njg2OTE0ZTlkIHJlbGVhc2UyMy1tYWludAorMzcyNTYgZjgzYzVhODU3OWY4NDhiN2EwNTljMzViMTY2YjE2ZTQ0MWMxYmM1MiBsZWdhY3ktdHJ1bmsKKzM3MjU3IGViOWIzODAyNTNjOTlkMjAzNWJmYWYwMjU5ZjE1OTEwN2Q3ZmVjNWUgbGVnYWN5LXRydW5rCiszNzI1NyAxODZiNzI1NTBlNTM1MzNlZjYxNzVmNjQxMWY5MzJjMTI5ODE5M2Q3IGxlZ2FjeS10cnVuaworMzcyNTkgYjE0ZjdlZTI1ZDUwYTkzNGZkNTJjZjE1Yjk4YWRlNjc4NmQ5YjgwZCBsZWdhY3ktdHJ1bmsKKzM3MjYwIDUzNDY5M2JiMDEwYmMyZjliZTY3YzBkMTAyYjMxZTc1Y2ZmNjE4MmEgbGVnYWN5LXRydW5rCiszNzI2MSA5OGM4MDE3ZTg1MzViOTI3ZWUxYzZhYjM5NmFkODJhZGQwMjBmZDQyIGxlZ2FjeS10cnVuaworMzcyNjIgZDFmOGM2MzJiNjA1YTVmYjYwYTBjNGM3ZTc4MzE5NTQ5MDMwOTg2NSBsZWdhY3ktdHJ1bmsKKzM3MjYzIDNmYTc5Y2M5ZGE1ZGEyOTBlMTA0Mjc0NGFhOTdlNTQ2NDk2NWFlNGYgbGVnYWN5LXRydW5rCiszNzI2NCBiOTk0NTMzNWRhMjcyYzI4NjMxZGU1YjlmMGIzYjU1OTIzYzBkYzlkIGxlZ2FjeS10cnVuaworMzcyNjUgNDc0NWY4NDdjZmExNDUxNDU1MWQ4MjhlMzRiNjMzYTdhNmNmYzEzYiBsZWdhY3ktdHJ1bmsKKzM3MjY2IGRmMWNkNDA3MjE3N2RkMmU1NmZlYTExNGYxMzkwNzgyODZkYTI5NGMgcmVsZWFzZTIzLW1haW50CiszNzI2NyA1ZWQ1NjQ5M2YwYjAxNjAzNTNiMmM1N2E0N2VmZTk3NmJkNDcwNWYzIGxlZ2FjeS10cnVuaworMzcyNjggOTdjMjA3ZGI5MGExZDA3ZGI2OWViYjg0ZjU5MmI0MDRlMDAxZmEwYiBsZWdhY3ktdHJ1bmsKKzM3MjY5IDIxYzc5MzQwZGVkNWRlMDAzOGViYjc4ZGIzMGNiMGYxOWQ5ODc3YmYgbGVnYWN5LXRydW5rCiszNzI3MCA0ODNjMGI0YjYzMzI4ZjI5ZTc5ZTc5NWJjOGU5ODE4MzFiZGI3MTQ1IGxlZ2FjeS10cnVuaworMzcyNzEgNmZmMWE1YmNkZjIyZDQzMDRlNTllZTEzZjUwYzE5MWJiY2E2NTM4YiBsZWdhY3ktdHJ1bmsKKzM3MjcyIDA3ODQ1NTY4Mjg3NTcyZTA4ZmZhNjcwOGE3YTVhNGNjMDQyZDdmNjYgbGVnYWN5LXRydW5rCiszNzI3MyA4ZTIzYmQzZDViMWE3MGZhYWVjMDgzYTdlZGZlZGZmMDkyMWY5NDg4IGxlZ2FjeS10cnVuaworMzcyNzQgZmMyY2U1ODAyMTZjOGRjZWVkYWU4MGFkN2EyY2UyN2QyZjQ1ZjAzNSBsZWdhY3ktdHJ1bmsKKzM3Mjc1IDEzNmIzODg1NjlhMGM0NjBjNjM4ODkyYWFlYzkyMDc5MmQ2ZjlhYmQgbGVnYWN5LXRydW5rCiszNzI3NiBjMDkzMThiMDA5MGQ2Yjk3YjU1YjIwNGMyNjk4ZDRhMTQ0MGYzYzk4IGxlZ2FjeS10cnVuaworMzcyNzcgZTFhYjJjMTJjZDVlZjI1ZjBkMTg5ZDBjMGI2MDE4Yjc2NTBkNDVmMyBsZWdhY3ktdHJ1bmsKKzM3Mjc4IDgzODFkMDczYWQzODZiMzEzYzQ4MTQ0ZTJhZThhZTgzMjBmMGZhYzYgbGVnYWN5LXRydW5rCiszNzI3OSBkYzk3ZjU4MWYyMzM0MTE2NDM0OGU0YWIzZGYwNjUyOWI3MzAwODEzIGxlZ2FjeS10cnVuaworMzcyODAgNWI2ZmJhNjQ1NGEwOWFhODcwY2ViODhlMzZlYWYzMDUzODEwZGU2ZSByZWxlYXNlMjMtbWFpbnQKKzM3MjgxIGFkMDBmN2MwYWQwNzQyNmVkMzIyYjA3YmFlMjMxZDU2ODA0MzlhZmEgcmVsZWFzZTIzLW1haW50CiszNzI4MiA3NjdhMzhkY2IzMDA5NDQ2ZmVlZjNiZmNjNTRlOGQ2ODlhMmY2MjMwIGxlZ2FjeS10cnVuaworMzcyODMgZDlhMzNlY2JjN2YyOGFhYWIwNzE2N2E5YjIxYTU5MWE4ZGU1MmEwYSBsZWdhY3ktdHJ1bmsKKzM3Mjg0IDMwZTI3Mzg0MWJhZTBiMzhkMDY4ZTJiYjBmZTVjZGU4YzU1NjY0MjYgbGVnYWN5LXRydW5rCiszNzI4NSBiNmU4NzVhYTUwOGJmODIwMWQ3NTNmMzU4NWI5MzMxNzRlZTcyY2I0IGxlZ2FjeS10cnVuaworMzcyODYgNzEwODNhMTcyNWNiZTc4N2NiZTViMjBjODQ0NTU4ODM3OTBjM2Y2OSBsZWdhY3ktdHJ1bmsKKzM3Mjg3IGI1ZjYxMTgzMTdkMGQwMTVkYTU5MWRhNzQ0NzhlOTcxMzI3NTljOWQgbGVnYWN5LXRydW5rCiszNzI4OCA2OTMyOTQzZGU2YjFmNTliZjc2NWY5NjVkN2Y3OGFjY2Q5NTUwMDIxIGxlZ2FjeS10cnVuaworMzcyODkgM2FmYjY3ZDk3NDJiN2RjZjYyNDVmMTcxYTE5NGJmN2U0ZTNjOTc4YiBsZWdhY3ktdHJ1bmsKKzM3MjkwIGFiNjJmNzZjYThlMmNjMzg2NWZjZWZiZWZlYmY5Njk1YjZkNWU5OTYgbGVnYWN5LXRydW5rCiszNzI5MSA4NDgwYjcyYWE2MjRkYTMzODgyMzU3NGEzMzEzYjhlYmE2MzgwZTk5IGxlZ2FjeS10cnVuaworMzcyOTIgNTc0NzhhMTNmYmY2NDRkNTAzZGE2NmIyOTExMWRiMmY5NjBjMjliMyBsZWdhY3ktdHJ1bmsKKzM3MjkzIDIxMzgzZmIxYThmMjkxY2NiOTdkMTMyOTcxZjc0N2FjN2JhZTJkMDcgbGVnYWN5LXRydW5rCiszNzI5NCA5NmQzZWZiOTQwY2YzNDNjMjFiMzk1ODIwNGNmMjg2Yjg3NzA4MWQ3IGxlZ2FjeS10cnVuaworMzcyOTUgY2QwNzBmZmM4OTJkMTQwMDI5ZGQ2MmI1MWMwMzU4ZDI1MWE4ODAwZiBsZWdhY3ktdHJ1bmsKKzM3Mjk2IDRiNzA4ZmEwYTYwYWI1ZDE3MmI4N2I1MTNmNjNhMjUwZWU1MTE5MjIgbGVnYWN5LXRydW5rCiszNzI5NyAwNmFiZGNkNTdmYThkMzljMDhjZDM3OTljY2I3ZjNjNDFkMjM2NDQ3IGxlZ2FjeS10cnVuaworMzcyOTggNjg1MzhlMTI0ZWUwYTliM2ZlNjMxOGY2YjBkNmM1MTQxODcyNGY5NCBsZWdhY3ktdHJ1bmsKKzM3Mjk5IDMwNjk3ZjQ0NjI4NmQwOTFlOTllZmY4OGNlYjI0MDVlOWE4NmMzYzQgbGVnYWN5LXRydW5rCiszNzMwMCA4OTdhMzYzZjBlODZmYWE3YzA1ZmJlYzkwMDE1MDgwZTk5ZGVlY2VhIGxlZ2FjeS10cnVuaworMzczMDEgZmFjMmE1MzkwNmYxNzA1MDY1YTlmZDA4NjMxN2FkYzFiOGM5YTU4NyBsZWdhY3ktdHJ1bmsKKzM3MzAyIGEyNDMyOTY3ODZjZTc4NDAxMjBlNTM3NzNkMTQ0ZWI1YTY0MThjNmMgbGVnYWN5LXRydW5rCiszNzMwMyA2MjkyMDBkODgwZWEyOGJhY2RjMTc1ZGYyMTZhYWZiNTkxZWI0N2VkIGxlZ2FjeS10cnVuaworMzczMDQgNWIzMWI0YzNiN2JhYzVkNDFjMGExMzBhOTU1MzcwMTY1YzM5ZTU5ZiBsZWdhY3ktdHJ1bmsKKzM3MzA1IGU0NDg5ZDU2ZjEwOTAyMDc0NzI4YzViZjRmMDhmMTlhMjk0NTk4YzUgbGVnYWN5LXRydW5rCiszNzMwNiA0ZGFhN2M3MjVhNzk4ZWVjYTg3ODgzMmM2ZmEyNmM0NTUyZmU5ZDAwIGxlZ2FjeS10cnVuaworMzczMDcgZjI0YTdmYTM4ZjRmOTFiZWZiNzhlZTRmNDg5NGRlZmIwYzIzMGViYiBsZWdhY3ktdHJ1bmsKKzM3MzA4IDdiZjQzYmU4MjlmN2U3YTRkZTQ0OWJlYWVkODE3ZmQ5ZTZiZmE3MmMgbGVnYWN5LXRydW5rCiszNzMwOSBjYWRjYmY5NjJhMWZkNjdhNDJjMTZhZDczYzQ3NTljN2YyYzc0ZmE2IGxlZ2FjeS10cnVuaworMzczMTAgNjg4ZDk4MWM2MjM0YjEzNDU1YTY2OWE4ZmZlNTQ1ZDM0NjY3OGYwZiBsZWdhY3ktdHJ1bmsKKzM3MzExIDY0ZDRlNzk2YjNkZjEyNmU2NDMzZjI4YTA1NjVmZjVlNjhiMTE3YmQgbGVnYWN5LXRydW5rCiszNzMxMiA1NTcwZmFlMWYwMWNkMDUzYTJkNzFjYmVkY2Q3N2M3ZTE5ZTZlOTcxIGxlZ2FjeS10cnVuaworMzczMTMgMzI0NjkzZWYzMjBhNTg3NjQ1YjEyNTg4YWIzY2EyYTFhMTE1OGI3ZSBsZWdhY3ktdHJ1bmsKKzM3MzE0IDgxNjE4YTdkNDkwZTcxZDgxOWQ0ZmI4ZTBmZTk2NzdlOWI0NTk0NmUgbGVnYWN5LXRydW5rCiszNzMxNSAyNWZiOWU1ZjVmNDUzMzMzMDdhYjllYTQ1NDVjMzg3M2FmNGMxMGVjIGxlZ2FjeS10cnVuaworMzczMTYgZTgzMDkzYWJjOTU4ZDA0ZmM1ZTM5Mzk1NTM0MWYyZDVlNGYyZGViZSByZWxlYXNlMjMtbWFpbnQKKzM3MzE3IDdhNzUxNmU2ZmViMmY1ZjEzYWI2ZWY4OTcwNTE1ZjhiMjIyNDcyODcgcmVsZWFzZTIyLW1haW50CiszNzMxOCAzZGFhNjYzM2YwMTdlZjQ3ZjY4ZmIwMDhjZDA1ZDE1ZjNkMDZlNzMzIGxlZ2FjeS10cnVuaworMzczMTkgOWUzYzUyY2EzYTA0ZDNmMTIxZjJiM2ZkY2I3NDNlYTUzNTRiNjRmMyBsZWdhY3ktdHJ1bmsKKzM3MzIwIDQ4NzI4MGNmNzFiOTVkMDIxOWE4MzU1NTlhNDAzZGM4YzgzY2IxOGIgbGVnYWN5LXRydW5rCiszNzMyMSAwMTZkNzAxNmM2YzYzZDUwNWY5MTkwODQ1NTEyZTg4MzIzNGFhM2Q5IGxlZ2FjeS10cnVuaworMzczMjIgOTFjODdjZWE3NzY3MTE2MGRhOTAzM2Q3NjNjOWExZGE2ZjZlMTcwNiBsZWdhY3ktdHJ1bmsKKzM3MzIzIDk0OTdjNTgxMjZiZTQwMGFmYWE3ZDI3ZmRhOWE2ZGQ2MWJhNzViZjEgbGVnYWN5LXRydW5rCiszNzMyNCBkY2U2MjQ5MzNjMzg3ZWMzM2I5Y2ZmMzdlZjQ2NTlmZTI2ODZhNGM2IGxlZ2FjeS10cnVuaworMzczMjUgYzg4MjVhNzRlNDIxZjFmYjNlYzlhY2FkMGQzODNkNTVlNjliYzA4MCBsZWdhY3ktdHJ1bmsKKzM3MzI2IDU4NzY2MzZjYThjNmNjZmIxNDAyNDUzNWE4MjI1ZmI4MGI3ZWQ2YTkgbGVnYWN5LXRydW5rCiszNzMyNyAyOGVmNWZlMGI4YjVkZTMxODk4NDQ0YTg3MmRkZTExYjU2MGViZDk2IGxlZ2FjeS10cnVuaworMzczMjggZDhhMjYxYTc3MDI4M2IwMzE0YWQ3OGVjZDgwZDRiOTNiMzg2MTI3YiBsZWdhY3ktdHJ1bmsKKzM3MzI5IGViNTE3MjhlZDExZjBlMzA4ZmYwNTVjYzdiOTIxZTViOTVlY2ZjOTUgbGVnYWN5LXRydW5rCiszNzMzMCA0NzdjZDBmNjIyYjllZGFlYjFkMTRlNzI4OWUyMThjMzgyZjRlNDgxIGxlZ2FjeS10cnVuaworMzczMzEgZTIzY2E5NGVkOGVkYjFmMWQ3MzEzOGJiMDBkY2IxMTg0YTBiYTNkOSBsZWdhY3ktdHJ1bmsKKzM3MzMyIGEwNDUxNWE5ODgzMTU5MmUyMDhlNTY3ZWQ2YmYxMTJjMTE0YmJiMjAgbGVnYWN5LXRydW5rCiszNzMzMyA5MjVjZjliMzI4NWJmYjhhMzkxN2M5NzZmZmViNzBlMjhlYzc2MjEwIGxlZ2FjeS10cnVuaworMzczMzQgNzQ3M2ExOTVkMjIzMTIyMzgyMGQ0OTMwYjJiN2Q0NDRjMmM5ODA2MyBsZWdhY3ktdHJ1bmsKKzM3MzM1IDQxZGJlZTVlZDI5NTg2Y2I5ODQzZjBjMTBkOGVjNDcwOTZkOTM0NWQgbGVnYWN5LXRydW5rCiszNzMzNiAzNjc2N2ZlMjQyNTJiMTRkYTE0YzA1MzE5YTUzMzA0MTcyYzViZjc5IGxlZ2FjeS10cnVuaworMzczMzcgM2Y4NmYyYmI5YjU2ZTg0NzNjNDgyMDQyM2QyMjVmZTViZTY2OTk1YyBsZWdhY3ktdHJ1bmsKKzM3MzM4IDdmZDIyZWNkYzlkYjA5MDM1MGQyNGQ4NzY5YTBmMjYwNjU4N2U2MDkgbGVnYWN5LXRydW5rCiszNzMzOSA0ZDE2Nzg1YmE1ZGMxYzRiZmQ3YjFhNTIxMzU1Y2QyMzZlNzBjYTc4IGxlZ2FjeS10cnVuaworMzczNDAgZTgwOGNkMzFmYmRjNmEwOWVhMWYzMWZmMTFiN2U2NTM0YjFjNGY5NiBsZWdhY3ktdHJ1bmsKKzM3MzQxIGEyMjAwNzM1MzZkNjlhNzUyZTdhZGE4MjVjMzNlZDQ5NjAxYTFlYmIgbGVnYWN5LXRydW5rCiszNzM0MiAxYjNhYzY3NGE1N2NiZmZiMzNkYzY2ODk3ODIxYTlmMTIwOWE3YWFjIGxlZ2FjeS10cnVuaworMzczNDMgYjg3ZWFhNDZjOWNiZjFkZTU1NzZhMDFkNzdlZTY0ZDE3MGUyZmZiZiBsZWdhY3ktdHJ1bmsKKzM3MzQ0IDUzNzNhNWFlYjgwMDIyYjNlZDMwZWIzMDgyODM2NDgxNWJjYTdiYjUgbGVnYWN5LXRydW5rCiszNzM0NSBlYWNkYzI5NjA2ZDgxNDQ5MmU3ODNiYmQ2OWUxN2I4ZjhlNTRkZWNkIGxlZ2FjeS10cnVuaworMzczNDYgMjYyMzY2OGM1ZmY1YjRkNjA4NmZhZjhiZjcyMzk4YzkwZjJlODY5MiBsZWdhY3ktdHJ1bmsKKzM3MzQ3IGM5M2QyYmVjNjhiZWM0OGM1ZGE2MjI3ZGViMDlhYmY0NzcwNjA2ZmMgbGVnYWN5LXRydW5rCiszNzM0OCAxOGM3YzE3Y2NmODYzMTU3NTRmZmY2OWRkODc2ZDA2OGVlMTBiNzIwIGxlZ2FjeS10cnVuaworMzczNDkgODIzZDY0NWIzMmJmZTNmMzZmNGM5NjcwZTc4MWU0Y2ExYmMyMjBhYSBsZWdhY3ktdHJ1bmsKKzM3MzUwIDUzYzEzNTdjOWM2M2Q1NGU4MmJiYjUwZmM0OWY5MDM0ZjIyZmIxMTkgbGVnYWN5LXRydW5rCiszNzM1MSBjZmIyZjVlMDk3NDA5MzY2NzcyNGZmNjUzODFkYjA4YzQ2MDE4NGViIGxlZ2FjeS10cnVuaworMzczNTIgNzFlZDRiMzVmZGM0ODg3NmQxYWJlOTEzOWM4ZTg2ZTcxZTk5ZjQwMCBsZWdhY3ktdHJ1bmsKKzM3MzUzIDRjYjEwMTY1MjViN2RlZjViZDY2OWY3MjBiYWNhYjVlZGI4MGZlNzAgbGVnYWN5LXRydW5rCiszNzM1NCA3Mzg1YmEyNjgwZWI3MWJmNzlmYzU4NWMyOTExYzU1NmVjOTNlMjMyIGxlZ2FjeS10cnVuaworMzczNTUgMGMyOTljYWJmNGYwNmM4NDdkYTUyNDNiNjRlYjJiNTAyNzBjMTdkYiBsZWdhY3ktdHJ1bmsKKzM3MzU2IDI5NGQzNzBlNDNkMTRkZDkxNTRiYzdlZTI5MWI5ZGI0NGQ1ODc4NGEgbGVnYWN5LXRydW5rCiszNzM1NyA0MzM2MDZlOTU0NmMzNWI4ZTZiODNlODZjNjg5OGYxYzI0ZDg1ZTc4IGxlZ2FjeS10cnVuaworMzczNTggZDk4NGNiN2UyMzUyMzZmYTdmZjZlNjA2Mjg1MzBhMDFkNTRhNGYyNCBsZWdhY3ktdHJ1bmsKKzM3MzU5IDJkNmUxODU0MDgyZTk0ODU0MDA5NDAzY2Q1NjE5YmUwN2Y5OGNiZjIgbGVnYWN5LXRydW5rCiszNzM2MCA5ZTJiOTRhM2I1ZGNjMGYxOGZiOTNkNWRkMGZiNDQ1ZDk4MTZiZDM1IGxlZ2FjeS10cnVuaworMzczNjEgYzNhYjZmNDBiNmU4YmIyYWEzMzE4NjQ0ODE5NWVhMTlkZmIyMjdlNyBsZWdhY3ktdHJ1bmsKKzM3MzYyIGFiYmRiYmE1NmE4YjczZDAzNWY4NDBiNWM3NzM2OTNmNTYxMDNkN2IgbGVnYWN5LXRydW5rCiszNzM2MyBhNGQzNjczYmNkNjY0NzMwNjhiMmVlYTQ2MzQ3MTkyZmIwZjBkZjE2IGxlZ2FjeS10cnVuaworMzczNjQgZGExZGEzMzFmNjRlZjhlZGJmOTViZTcxYTM1OTRkNjZmNmMzOWQ2YSByZWxlYXNlMjMtbWFpbnQKKzM3MzY1IGFmOWJlZGQ1YThlNzIxMDY3ZTI2NGZjYmEyNzRlMGQ5YTg4ZmJjNGQgbGVnYWN5LXRydW5rCiszNzM2NiBhNzBiM2VlMmUzMGI4OWY1OWIwODgzMDhiNWI0YWFhNGMwMTJhNTAwIGxlZ2FjeS10cnVuaworMzczNjcgNDVjNTc0MmMxZTEzY2E0YjNlYjRmY2E5ODFjM2Q2MGQ5ZjQwYzFmZSBsZWdhY3ktdHJ1bmsKKzM3MzY4IDc4YzFjMDM3Nzk2MzdmYzY0MDYyZGJmZDIwM2ZiOTY3ZDdmZTBiNDYgbGVnYWN5LXRydW5rCiszNzM2OSBjYzBhZTAzNzQzYjhlMmRhMzkyNDUwOGYwNTJmOTlhMzhkYjFjODE4IGxlZ2FjeS10cnVuaworMzczNzAgNGI4MTk4YTc0ODczMTJiODk1MzRiZmViZjlkODU0MGE1YTFlMTU4MSBsZWdhY3ktdHJ1bmsKKzM3MzcxIDcyNWM0NDQyMWE0MmY1OWI3OWUzODI2YjJhMDNmNGRmYzg4ZGQ1MWYgbGVnYWN5LXRydW5rCiszNzM3MiA5NGY1MDBlYmY2MGE0NWY2ZTU4Y2QxMTVlNGQ5ZDgwMTdmY2I2ZGZlIGxlZ2FjeS10cnVuaworMzczNzMgMWY1NDBiZjlhOWI0MDI3YmQ4MmNjZDYyMDA1ZTVkNGRlMGQ0YTM1MCByZWxlYXNlMjMtbWFpbnQKKzM3Mzc0IDMyMjE4NGVmNzYyMmQ2N2YzYTIxMDhkMjdkMDJjNDlmNzRiNzMxMmEgcmVsZWFzZTIzLW1haW50CiszNzM3NSAwM2VkYjYzYWUwNzE4ZjRmNWFhYjA5ZDNmNThmOWMxNTM0ZTc5YjJkIGxlZ2FjeS10cnVuaworMzczNzYgMTFkNDUwMGJlNmZhNDE4ZTU5ZjAyYjVhNWNjYzRjMGEzMjBjMDI2ZiBsZWdhY3ktdHJ1bmsKKzM3Mzc3IGY0NjQwODE1ZTViYjUwMGFkMzM3ODE1N2M1MTc0NDg3OTdmZjA4ZTIgcmVsZWFzZTIzLW1haW50CiszNzM3OCA2YjNkYTQ3YmRkZDY4YTQ0NWExNzI3ZGQ0NzUzYjI5ODJkMGM2NzA0IGxlZ2FjeS10cnVuaworMzczNzkgYTc3MjU3ZTU0OTk2YWFmNWVjMmUwMTJhOGFkZWJlOWM2ODcwYzM5OSBsZWdhY3ktdHJ1bmsKKzM3MzgwIGU5ZTY1ZWY5NDZlY2FkMjZkNzg3NzBiZWNhMjZlZGU4MDZjZTViODUgbGVnYWN5LXRydW5rCiszNzM4MSAzMDEyNjViODBjNDE0NDJjYmUyOGIwZjA2YzEzZTU0NjQxYTA0MDFhIGxlZ2FjeS10cnVuaworMzczODIgZDUyOTYxNTlmMTFjZjRkYTUwZjQ1ZjNlNjFhMzZiMTc5M2M4ODhjNiBsZWdhY3ktdHJ1bmsKKzM3MzgzIDEzOWE0MDEyYmVhZGFmYzkzODNlMDU5MjI2NTE5YTZiNzQ2OGI0YmQgbGVnYWN5LXRydW5rCiszNzM4NCAzZTE3YWVkMjMyNGMzMTdjMDFkZmU4MDJhZjRlMTViYzQ3ZmFmYWU5IGxlZ2FjeS10cnVuaworMzczODUgNTVlY2E3Y2QzNTMxZGM2YTI4ZDY0NzhmNDk3M2JiZTg3M2VjMDE3MiBsZWdhY3ktdHJ1bmsKKzM3Mzg2IDA2ZjI4MjM4ZGYzMTE1OWMyNmE4Y2E0ZTU1ODBhYTAwMTdlODNiMTIgbGVnYWN5LXRydW5rCiszNzM4NyBkODM2NzBmMjRkNWNjMmMzYjRhNDI4MTlmYjk0NjUyZjg5ZTczZWEwIGxlZ2FjeS10cnVuaworMzczODggMzBkNDI4Zjk5MmY5YTk3MGExYTViYTFjMjYwYzZjZTg5NDYxOWM0OSBsZWdhY3ktdHJ1bmsKKzM3Mzg5IGQzZDZkNDIwMDlhOGM0N2E1ODk5MmI1OGMxYzYxNzhjYTBmYjVmZDUgbGVnYWN5LXRydW5rCiszNzM5MCAxNzVlZWUwOWNiOTgxODBhYjg5OWFhODBjZGE0ZjYxMTQ4ZTEzYzBiIGxlZ2FjeS10cnVuaworMzczOTEgMTgwOWFiZDM5MzQyNjM3ODAwNGQ5MTM0NzIwNWMyZmM5NWQxYzZiOCBsZWdhY3ktdHJ1bmsKKzM3MzkyIGEzZmI1ZWJjYTMwZDcxZDYzZmE2Yzc5NDVhMGU1NTRmMzUyN2NjZmYgbGVnYWN5LXRydW5rCiszNzM5MyAyNWUwN2M0NGU1ZDA1YjE4ZWQ4MGRkZTA4Y2E0NTgzMzFiOTQ0OWY0IGxlZ2FjeS10cnVuaworMzczOTQgOGY2NGE4NGZhOGU2YmVmNzJjYThmZWJmZWJlZDRmNTVhY2UzZmUyMCBsZWdhY3ktdHJ1bmsKKzM3Mzk1IDVhYzhhZmQ4ZDkwNDA2NTY5OGYxZDg1ZjA4YjFiNDFkZWVlYmQ5YmUgbGVnYWN5LXRydW5rCiszNzM5NiA2OTVlNWJiMDgzODIzOTNkOTM1NTA3MTcyMjNiYTBmYzNhZTdkMjFiIGxlZ2FjeS10cnVuaworMzczOTcgZTdmYTdiNWM5NDQxYzM5ZDI4Y2NlNWRjZmU1NGEzZjhlZjEyMWI4YSBsZWdhY3ktdHJ1bmsKKzM3Mzk4IGZlMjQyZjY5YTlkMzI4MjJhZjNlMDM1ZTJlZjQyMmU5YmNmMDVkMzYgcmVsZWFzZTIzLW1haW50CiszNzM5OSBlY2Q2NTRkYWFlYzlmMDBiMmE0OTBjMjdiODgxMmQ0ZjI1NWQxZDUwIGxlZ2FjeS10cnVuaworMzc0MDAgOTJkY2E5OGNkNDM0MzE0ZjVmNDkyYzJhOWVjMjBlMzI1NTQ1YTAyZSBsZWdhY3ktdHJ1bmsKKzM3NDAxIDUyNjQyN2U4ODNlODI0MWNjZTE5ZjdjNDdhMjc4YmZhOGUyYzBjYWEgbGVnYWN5LXRydW5rCiszNzQwMiBiZDEzYTQ3OGU4ZDYxZGZkZDM5N2JmMGI5YTE3MWM1MjdmYzliZjM4IGxlZ2FjeS10cnVuaworMzc0MDMgMmI0OWI0YTg1ZDllYjRhNGNmYTlmMjljMjFkNjQ5YzM4Mzk0NTY3MSBsZWdhY3ktdHJ1bmsKKzM3NDA0IGY2Nzg5YjdlYWI0ZTMwYmNjYjg1MWM0MmViM2M4OWI1NTgwNDk5ZTcgbGVnYWN5LXRydW5rCiszNzQwNSA3ODFhZWY5NzQ0NjM4OGIzOGZmNDNkNDc0MTAyNzhlOTZiZDhkY2Y4IGxlZ2FjeS10cnVuaworMzc0MDYgZDc0ZGRjZmYwNzI0NDc3NjY1NGUyM2EwYzkxZmNjNGRiZjljYzhiNiBsZWdhY3ktdHJ1bmsKKzM3NDA3IGEzZDc4ZDZiY2E1MTkyNDIzN2MyZDQ5Y2M3NzQxNmM1OWYzZWE3OGQgcmVsZWFzZTIzLW1haW50CiszNzQwOCBkNjA3MWEwNWJhODRhZjliZjc4MDNjYjYzYWFkYmI0MDIyZTJmY2UyIGxlZ2FjeS10cnVuaworMzc0MDkgNmQwNTVhMjc1YjRiZDM5NWEzMDZmNjQyMzcwMmVmN2Q5NjE4YTdhZSBsZWdhY3ktdHJ1bmsKKzM3NDEwIGJmNjg3MzE2NTA3OTg2YmQyM2IzNDc2NjM3YTBhNjE3ZDA0YzdhYTYgbGVnYWN5LXRydW5rCiszNzQxMSA3MDIzNjdkYTJjNzJiZjQyZTVmYTM5MzgwODM1Njc5OGY1YzdjZjA0IGxlZ2FjeS10cnVuaworMzc0MTIgZDM3NmZlODYyYjE4ODU0ZDcyZGI4NDA1ZTE0MjUwYWQwYjFiM2QxYyBsZWdhY3ktdHJ1bmsKKzM3NDEzIGVjYWYwZThmYTczNzllOTFkYzM4NzBmMzc1M2I3OGI5Y2Y5MmNkZjggbGVnYWN5LXRydW5rCiszNzQxNCA2NmI1NmQ1NmU2ODBkNGIwNTVkODVmNmI2M2UzZjk4YzA3NzM3NDRjIGxlZ2FjeS10cnVuaworMzc0MTUgN2Q3YWM0MDRjODA0OWY5MzIwMmM5OGZkNzljMGE3ZGMxYjAwMDIzYiBsZWdhY3ktdHJ1bmsKKzM3NDE2IGJmOWY5MTdlZTRmOWYxNDAwZDFmNTVkMmQwNGIwMzkxYjc1ZGU1ZmMgbGVnYWN5LXRydW5rCiszNzQxNyBhNmRjMTc2YzVkMTI5MjAyMmIxNzE4Yzg5MDEzMDM4M2FkNjM2NWVkIGxlZ2FjeS10cnVuaworMzc0MTggYTU3NzEzZmRlZDIzYjM1YmJkNGRmNGY2NjEzMzJkNTMwMTY0NGQyOSBsZWdhY3ktdHJ1bmsKKzM3NDE5IDE1YTdjYzAwYzVhMTQxZDdiOTgwNzdkNjIyMGQxMGRmNjg3NTU1NzMgbGVnYWN5LXRydW5rCiszNzQyMCBmZDkzNDc3OGY0YjQ1MWVkMGVmMjliMjA2MDU0MDYzOWQzZmY3ZWFmIGxlZ2FjeS10cnVuaworMzc0MjEgZTEyY2E1Y2RmNzQxMDVkZDUxNGYwYTM5OWJhYWJlNGIxMmNiMGM4NyBsZWdhY3ktdHJ1bmsKKzM3NDIyIGYyYTJjZWQxZmQ1ZGNiMDNkMTZiMjQ2YmRkNjIzYjQ3OTUwNDcwYzkgbGVnYWN5LXRydW5rCiszNzQyMyBiZThjZmY0YTFlY2FkYzcyNTQ0MzNjODQ2M2U4YjRjNDM3OGYyNmUzIGxlZ2FjeS10cnVuaworMzc0MjQgOTdjYjllZWEyMTJlMjM3YmFkZDY5ZTU2MzYyNjZhNDAxZTgzYWYxYyBsZWdhY3ktdHJ1bmsKKzM3NDI1IGE3NjEyNjAwMzk5MjUxOWUzNjA3YjNhYjQzZjYwY2U0ZDcyYTdjMTEgbGVnYWN5LXRydW5rCiszNzQyNiBjMzlmODNmZGQ0ZDAzMjNkMDc0ZWM4YzhlOTUyYzg4N2RjZWY4YTk1IGxlZ2FjeS10cnVuaworMzc0MjcgOGM2ZmM4NzcxMjYwNDIxMTFmNDJkNDgwYmJhMGI4OGQ4ZDdiY2FmNSBsZWdhY3ktdHJ1bmsKKzM3NDI4IDU5ODQxYzgxOWY0Yzk3NWQwMzFmY2U0ZWMwOTEwMDM5MTZmNjFlOWIgbGVnYWN5LXRydW5rCiszNzQyOSBmMjQ2ZDc0NjRiNWM4YTQzMTZhOTUxNGNlOTg0NjE1ZTdlYTNhNWYwIGxlZ2FjeS10cnVuaworMzc0MzAgOTY5MmFmMDFjMWE4MzVhYzA0NWE0ZDI0NDFiM2Q1NTE0NWUwOWEyNSBsZWdhY3ktdHJ1bmsKKzM3NDMxIGM0ZWFjNmU5MDE2MTRiNjcyN2FlYWM2ZjQwODgwNTVlNGRmM2M3NTUgbGVnYWN5LXRydW5rCiszNzQzMiA4NWRhMDg4ZTdhOGJmZDhmN2UxY2Y2MGZmZDllMjJhNzc0NGMyZTQyIGxlZ2FjeS10cnVuaworMzc0MzMgM2JkOTNiODE0MDMxOTc3YmEzMzg1Njc4YmY0N2M0NTc1OGYwZTA1NiBsZWdhY3ktdHJ1bmsKKzM3NDM0IGMzN2UyMDc0YThjNTQ4NTllNjc1Mjc3ZjA3Y2FhYWQ0MWU3N2Y1YWQgbGVnYWN5LXRydW5rCiszNzQzNSBhNTY4MmJjNzNlMDRmNjA3NmM1NzY5ODRkYjI2NDk3YzY1ODIwYTYyIGxlZ2FjeS10cnVuaworMzc0MzYgOTg2YTViNTY5YWRlZGZkZjg3YTQxMWU0Njc0MzZlYjczMzQ5NjNkOCBsZWdhY3ktdHJ1bmsKKzM3NDM3IDUwYjZmOTRhMzhhNzc2NzM2ZmZiMzFkZGZkNjI5OTgwYTRjZjE3MTMgbGVnYWN5LXRydW5rCiszNzQzOCBlNDc4ZWJlMWNiMzE2Yzg0ZDgzNGE0MGIxNDFmMDdhZDFlNTIzOThmIGxlZ2FjeS10cnVuaworMzc0MzkgZjI3NTg0ZDExM2FmM2UzODA0MjNlZWJhZDQxZjRmMmU2ZWE0NzM0ZiBsZWdhY3ktdHJ1bmsKKzM3NDQwIGMyOGZmYmZiMGFlOTA5MjkyNWM1MGZiNGE1NjQwZmM1ZWNjOWIwMWEgbGVnYWN5LXRydW5rCiszNzQ0MSAzMWJjNWYwZjRjZmNjOWZiY2U0ZjA0OWJhYTFjNDVlZDhlZDg5NmJiIGxlZ2FjeS10cnVuaworMzc0NDIgMzI1YTg4YzZlZTdkNWNkNzY3ZmM5MGZlMTBkYjlkZTQ5NDM4NTJmMyBsZWdhY3ktdHJ1bmsKKzM3NDQzIDhhNWM4N2Y2ODVjZGU5Y2ExNDczYzkwZGRiMTJmMjYzMjIyZTUzYjUgbGVnYWN5LXRydW5rCiszNzQ0NCA3NzY2MGVhZWYyNGRjNGExY2FmNTM5NzZlNWM1NjYxNTExNzllM2U4IGxlZ2FjeS10cnVuaworMzc0NDUgNjEzYTU1MzM4NTRhMGQ0MWIzNmI0YWJkNThlNDNiNzU1MzI5MTBiYSBsZWdhY3ktdHJ1bmsKKzM3NDQ2IDgwODQyOGM1NjA5Njg3NjQzMjEwNzU4NGJlMDRjM2M2ZmRhYTQ0ZmYgbGVnYWN5LXRydW5rCiszNzQ0NyAxYjZiMTA0MmNmNDU2OTU2NTU4ZDBlNmM4Mjg2OGUxZDc2NGQ1NzU3IGxlZ2FjeS10cnVuaworMzc0NDggMmJjMjM1MzI2MzE2MGE0OGEwNTJhOGE3NmE1ZDRiY2I3NzlkMWE2ZiBsZWdhY3ktdHJ1bmsKKzM3NDQ5IGRiZGM0NTU2NGQyNDAzOGE5MDU3NzBmYTI1NTljNDU4Mzk5NGRiYzMgcmVsZWFzZTIzLW1haW50CiszNzQ1MCA3OTE5Y2FkZWI5MWRkN2Y0YWZhOTNhMTI0ZmE1N2I5NzliYmYzMGQ4IHJlbGVhc2UyMy1tYWludAorMzc0NTEgMTQwODFlYTY1NmIyYzBhMTdjMDAxYTY3ZWVhMzYzNDUxMTBiYTE4YiBsZWdhY3ktdHJ1bmsKKzM3NDUyIDY4ZDExZTQzOWEwYjVhNDMxYmVmOGE4NWE3NWIzOTAyYzBiMGFlMDQgbGVnYWN5LXRydW5rCiszNzQ1MyAyMzAzNmM3YWY2ODc2ZWUyMTk4M2E4OWZhMjU3YTA4NjY0ZWQzYTVhIGxlZ2FjeS10cnVuaworMzc0NTQgOGY0YmVkOTcwZmY5NTE0NTZiYjRmY2FkMzIzODExYzVkYjcyNDk1MSBsZWdhY3ktdHJ1bmsKKzM3NDU1IDA3Nzk1NGQ0MWM1MzI1YjNkZDNjOTk2NTcyYjA1ODcxYzRiYzg4M2UgbGVnYWN5LXRydW5rCiszNzQ1NiAyZjY0MTlkMDA3YTljYjg2NDAzNzgyMjU5NmU3ZWUxOGE0MDBiNTNmIGxlZ2FjeS10cnVuaworMzc0NTcgYjQ4NDc0YmFkNzZmY2U5YzkxM2E2YmUxMmEwYWI3YjU4ODQzNGUzMCBsZWdhY3ktdHJ1bmsKKzM3NDU4IGU5MzcwYmNmMDJhZGJmM2IyNjM1NmE2MzUyMWFiNDMyNGIxMjc0NTcgbGVnYWN5LXRydW5rCiszNzQ1OSBhNzg5NWFlZjFlZTgwMWQ4ODdhY2EyNDczN2RjYjVmY2Y3ZTNhNDc1IGxlZ2FjeS10cnVuaworMzc0NjAgMGMzMmYwMWNjZDk5N2U4ZjQ1NWZiZmZlNGExZTRlMjM1NjBhZWE1NCBsZWdhY3ktdHJ1bmsKKzM3NDYxIDM1NWIxNWU0YTRkYTIzMjliYjhmZjY4ZDk0NWNkOWY2OGI2YmZiYWQgbGVnYWN5LXRydW5rCiszNzQ2MiBjZjFhYWE3ZTQwMDU1ZDljODVkMWQ3YWRmNWJhZTBmMjViZDI1NDZjIGxlZ2FjeS10cnVuaworMzc0NjMgMzJkZjFkMDVjYjJkOTYzODU1ODYwYTNkZGNlZTM5NmExZTEzZjczZCBsZWdhY3ktdHJ1bmsKKzM3NDY0IDRiNTQxNmIxODQ2NjRmZWE4ZGU5MmY2NzllMzMyMDQ2MjFhM2UzNWIgbGVnYWN5LXRydW5rCiszNzQ2NSA3NTExNTg1ZjJlNmE0NmE2Yzg5YmU1YTJlM2Q3ZmI5MTE0MzA4YTIwIGxlZ2FjeS10cnVuaworMzc0NjYgN2Q2Njc5ZWUzOWY5MGJiNjZiODE2NjZhNzkxZDA0NDk1NDNmN2JiMyBsZWdhY3ktdHJ1bmsKKzM3NDY3IGZjM2U4OTY0Mzg4ODkwMmVjY2FkMmIyYTIyMzUzNmI3YTYxZmVhZDQgbGVnYWN5LXRydW5rCiszNzQ2OCA2NDExNTJmYjdkODgyOTZkMmJhM2RlM2E4MWNlMTZlMjUwMjgzODViIGxlZ2FjeS10cnVuaworMzc0NjkgYjM0MDhhODVjODljOWQzOTI5YzAwYjFhOTNmYjBkMTA1MWMzMzliYSBsZWdhY3ktdHJ1bmsKKzM3NDcwIDRkN2IwZDIwNmJjNzNhZGViNjVlYTAzMzk1MTkwMzc2NWVkMjc4ZmIgbGVnYWN5LXRydW5rCiszNzQ3MSA1NGMzM2QwOTVlN2U0OWJjZGZlMjQ4MDRlNDc3NWIzNGRkMTBjNDQzIGxlZ2FjeS10cnVuaworMzc0NzIgZGI2ZjIxZWU2MTM1OTcyNTQxNmY5NjNlYjFkYTMyODdjMTU5YjgyOSBsZWdhY3ktdHJ1bmsKKzM3NDczIDA4NDk4OGMyMGI3NWNlNWQxOTJhNDRjY2Y4MjM3NWY2ODU1OWYyYTggbGVnYWN5LXRydW5rCiszNzQ3NCBiODkyMmEzNmYwODM4M2Y5OGMwMzdkMDI0M2RhYjVkMjE2ZmY2MThlIGxlZ2FjeS10cnVuaworMzc0NzUgYzdjMzliNzllNWI3ZThhNWFmMzdiNmY1YWQ0NTA5ZDgzOGRlYjRmNyBsZWdhY3ktdHJ1bmsKKzM3NDc2IDRlZTQ4ZTJlZmI2ODc5NzQ1YTEzODlmMTM1ZmMyNjU4Y2ZhNDU4OTYgbGVnYWN5LXRydW5rCiszNzQ3NyA3NjY0ZThiYWUxOWUyMWI1NDk3YTI2M2YwMjRkYjkzMmIxYTQwODQwIGxlZ2FjeS10cnVuaworMzc0NzggODMxMzE5ZjEwMGQwYTlmMGRjMjMyMWFjZjM2MjI3NDJkZTFjOWEzNyBsZWdhY3ktdHJ1bmsKKzM3NDc5IGIxMWY5MTYyZWQwZGQ1NDc5MzRlZmZhMzMzOTNkMzk4OTQ1NjhmYmIgbGVnYWN5LXRydW5rCiszNzQ4MCAzMWIwODY3MGViZGRiNTAxYWYwNDg3ODVjY2U3ZmNhZGY5NGRiNDhmIGxlZ2FjeS10cnVuaworMzc0ODEgMmI5YzE5ODcyYjAxNzYwZmE1ZGVhMzk0YTQ1OTZhMTk5YzZjMjYxMCByZWxlYXNlMjMtbWFpbnQKKzM3NDgyIDhlMjBlZTJlY2MwYzllNmUwMDZhY2UzYTJiNTBmOTAxOTZlZTVkYTkgbGVnYWN5LXRydW5rCiszNzQ4MyBlNjMxODA1YzcxYjA3MmY2MGQ1OTQ5OTFiZTEyZjA0YjYyZTVkMjBiIGxlZ2FjeS10cnVuaworMzc0ODQgMjdhYTBlMTE5MzMwYTM3ZWI1YWQ3NjQ3ZmY3ZDIwZDQ3MGVhMTI5NyBsZWdhY3ktdHJ1bmsKKzM3NDg1IDM0YjA3MDA4YWE3OGJlNzk5NDIxYzJmOTEyMWE3YjdhNDE0NjI4YzQgbGVnYWN5LXRydW5rCiszNzQ4NiA2M2ZjMDUyMmE5NWI1MzU1ZjkxZWM5OTk0NDEyMGZhODM4ZDFmZDg0IGxlZ2FjeS10cnVuaworMzc0ODcgOGU5ZGNmZTE0ZDgxNjJlNGRhNTA5Y2M4Nzg2OTg2MDRhNzU5MWIwZCBsZWdhY3ktdHJ1bmsKKzM3NDg4IDU3MzBmNzdlMzdlNDFiNjM0MWI5ZjZlOWEzN2U1N2EyYzE3N2YxOTAgbGVnYWN5LXRydW5rCiszNzQ4OSBmMDc0ZGIwYzE0YTg1M2Y5MDMyZTZhYzA5MTdmNDcyZDI4NDFhN2ZjIGxlZ2FjeS10cnVuaworMzc0OTAgY2Q1OGE5YjRiYTY2Mzg2NDM3NjRkNzQ0MmEwMDI5ODFhZDU1MjQ0ZSBsZWdhY3ktdHJ1bmsKKzM3NDkxIDBhZTBiZWYxMDAxNGU1ZmI4NTI3MWI3YjI2MjRiOTFlOThkZDFkOTMgbGVnYWN5LXRydW5rCiszNzQ5MiA4M2EzZTJkMTkxNGE5MGE0ZDMwMzdlYzFiNDcyNjA2M2VlNzlmOTJjIGxlZ2FjeS10cnVuaworMzc0OTMgYzg0ZGJlNzE3ZDQ5Y2Q4NjRlYmZmNDdhOGFkZGMxYTU1ZmJmNjE0NCBsZWdhY3ktdHJ1bmsKKzM3NDk0IDBmMGRkYjRjYjA0MzczNDQ4MDFlM2UyYTU5NWIyNjZkNmI3ZWNmMDkgbGVnYWN5LXRydW5rCiszNzQ5NSA2NTVmNzRlYTBmMzFmNTYxYTBlODVjMmVmNGNhMjZjZmNjN2VjOTFiIGxlZ2FjeS10cnVuaworMzc0OTYgMjM0NDRjYmRlYTU1NTBhNGE1MGUxNGY5M2YzNjRmMjg5ZWRmMzIxMiBsZWdhY3ktdHJ1bmsKKzM3NDk3IDI3OWYwMWU3MTA3MWJmNTYzNTM1NzM4MDgzNjYzMWZhZmIyOGFhN2IgbGVnYWN5LXRydW5rCiszNzQ5OCA2YmQ0YTEwNTY3MTZiNzcyYTQ3Mzk0ODFjMjQ1ZDlhY2I2YmI4YTRlIGxlZ2FjeS10cnVuaworMzc0OTkgODM2ZTkyY2M1YzRmYmRiNmE5YWIwYmI3NjA3ZThmMjQzZjM3ZDgxMSBsZWdhY3ktdHJ1bmsKKzM3NTAwIGU1ZGU2OThlY2Q0YjRlMDU5ZDVlYmViZTk3YTExZDRlYjJmMDBmMjAgbGVnYWN5LXRydW5rCiszNzUwMSA2ZjRiY2IzYmQyMDJlNDMwZmM3NDg4MTM5MjI4MmYyZjIwZjBhNzhkIGxlZ2FjeS10cnVuaworMzc1MDIgNWUxOWZkMzY0MmYwNzNlMmQzNDk4ZmIyZTEzNmY5YWQyZGIwMWQ0ZiBsZWdhY3ktdHJ1bmsKKzM3NTAzIDQwMzUwZmJlNjY1ZGZmMWIyZGE4YzZhZjBkZDUzOGRkOTMxY2NkYTEgbGVnYWN5LXRydW5rCiszNzUwNCAzMGNiMjAwZDQxOGNkZmVlYTg1NjljNTExNzY2OTM0NDdhNDRlYWFlIGxlZ2FjeS10cnVuaworMzc1MDUgY2Q3MGYxYWMzYzI1ZDY4NjBhOTZlM2I3ZmI0OTkxMTExMTE2MGQ0MyBsZWdhY3ktdHJ1bmsKKzM3NTA2IDRmYjhjODlmNjZhMGI5NzYyNWE2YjAwZTQ4NGRmYWJmMWY4M2M5ZjAgbGVnYWN5LXRydW5rCiszNzUwNyA5MTYzNGYzYmEyMTNhNTJiOTAzMGE0ZWQ1MmZkMGU4YWQyOThlMzczIGxlZ2FjeS10cnVuaworMzc1MDggMDBjMzZlMWJjNTBiYzZiMmM4NzZmYTgwMmVkYzhlNjBkZTBkZDE4NSBsZWdhY3ktdHJ1bmsKKzM3NTA5IDBjNGYwOTU4NjNiOWVkMmFiN2MyMzk5ZmJlYjJhYjA3YzI3OGI5YTUgbGVnYWN5LXRydW5rCiszNzUxMCAzZDhkNzgyMTc1OTk5ZDlkNTgyMmIyNWFkMTZkNzUzZTYzYTExMTk4IGxlZ2FjeS10cnVuaworMzc1MTEgNWEyOTJhMDNlYTQxNjc3MzcwMzEwODQ3NDc4ZmRjYWViYzRjMGI0OSBsZWdhY3ktdHJ1bmsKKzM3NTEyIDdjNTBjZGUxZTRmZDA1ZTQ4ODRkMzczMWFkN2JhMzk1ZGMyOWMzNGUgbGVnYWN5LXRydW5rCiszNzUxMyA3NDUwYmI5M2MzOTVjYjA2NGExOWMzNzliNDZkODM3MzZkYzNmZDA4IGxlZ2FjeS10cnVuaworMzc1MTQgNDg2ZTljNDBjZmI5M2ZlNGYwNjAyMmUwOTgwMDk3YjEwMmQ3ZDdlOCBsZWdhY3ktdHJ1bmsKKzM3NTE1IDk0NjYxMmY2NGE4MzJlNDY3YTUxZTE5NGQzODVjMGE3ZGY2ZTlkOTMgbGVnYWN5LXRydW5rCiszNzUxNiBjNTkxZmExZDQzNWRmMDc1ODc0YjFiZmY3YjQ2ZTdkZTI5MTg5ZmEwIGxlZ2FjeS10cnVuaworMzc1MTcgN2U0MmE4ZWJiM2VmZjExN2NiYmE3Nzk2YzhiMWUyZGRkN2M0ODY4NCBsZWdhY3ktdHJ1bmsKKzM3NTE4IGM4MTkyNWI2MTNkYWIwNjM2MTYyNTY0OTFiODFkM2M1NTk1ZDIxYmYgbGVnYWN5LXRydW5rCiszNzUxOSBjMDk3YWJkYjU1NjYzZTNlNGNiZmE3ZTg5MDFiMGQ1ZmM4MjIwMDMzIGxlZ2FjeS10cnVuaworMzc1MjAgMGI3ZTMxOGVmMDkyNjU1OGFjYmM4YWI1OGUxNTI1ODNhZGU2ZjUwOCBsZWdhY3ktdHJ1bmsKKzM3NTIxIDQ1YjE5ODhlMjY5MjRmYmFjYjMxOGM1YTVmYTViZjI5MGY3MDZiYTkgbGVnYWN5LXRydW5rCiszNzUyMiBjZTgxM2E1N2Q0NGQzYWFlODhjNDkwZGE2Y2NiOTVlYjBlZDJiZmViIGxlZ2FjeS10cnVuaworMzc1MjMgOTE4OTk0NjgzOGVlY2NkOWQ1YmM2YTQ0ZjUwNDRhYzlmNTI1NWU3YiBsZWdhY3ktdHJ1bmsKKzM3NTI0IDBiZmQzNWE3NmE0NGY4MTJjY2E2ZGU2ZGZjZWE5NmVlMjY3NGNhZDEgbGVnYWN5LXRydW5rCiszNzUyNSA2M2EwMzg5YmQ1ZmNhOTk2MDU2OGQzZjVjMTE3NDczYzNmMzU0NzQwIGxlZ2FjeS10cnVuaworMzc1MjYgY2M0Njg0MDUxYzQ2MzM1MzA1MDNhZjI1NjIwZjBiZWMyMTlkMDEzZCBsZWdhY3ktdHJ1bmsKKzM3NTI3IDU0MTIwOTZkMGY5NWRlMDhjOTI2Y2MzYzZiMjViNGRiZjRhOTlkOWQgbGVnYWN5LXRydW5rCiszNzUyOCBlMTI5NzZlOThmNjEzZjQzMGYwYmI4MGIxMGM0MDEyYmM5ZmQxM2IwIGxlZ2FjeS10cnVuaworMzc1MjkgNWRlZjY2ZjJjOWFiZWU1ZjA4ZWFhMjg0NDY3NGVmZjA0OTRmN2I0ZCBsZWdhY3ktdHJ1bmsKKzM3NTMwIGFiNTg4Y2U5ZTcxZmJmZTBjMjM3ODU2NTBkYWJhY2VkNjVlMDZhNTYgbGVnYWN5LXRydW5rCiszNzUzMSAxMThiNmY2OWUzZjE1M2I3ODc5ZTM0YWM2ZGNkYjBiNTBhMjcwM2Q2IGxlZ2FjeS10cnVuaworMzc1MzIgZWNmMWU4NTM0MDZiN2NkMmVkYTY5MzMyNjJkMTJjODg5ZWRiNWZiOSBsZWdhY3ktdHJ1bmsKKzM3NTMzIDYwYmYyYWZkNzMxMjI1NDZlZmFmMWE3YTY5ZWQwMDRmZTBiOTViMTggbGVnYWN5LXRydW5rCiszNzUzNCA4OWZhYWNkOWVjNzY5NTUyMzFhNjgzNWVjNTE0MGNkNTUwOWY1ZDIxIGxlZ2FjeS10cnVuaworMzc1MzUgMjJlZTkxNjQzYjNmMzRiOTQ3ZDAxNDkwZjJhZGZlNmQ0NTlhOTEyZSByZWxlYXNlMjMtbWFpbnQKKzM3NTM2IGIwZjNhNjkzYjg1NGI3ZmY4MjY2MWU2NjFjNjE5OGM4Mjg3OTVlMDMgbGVnYWN5LXRydW5rCiszNzUzNyBkOGU3NGEwYjQ2Nzc1ZGI2ODRhODkzZWE4N2E2NWZiZTNlZDNjYzBjIGxlZ2FjeS10cnVuaworMzc1MzggZDk5ZGU2NWY1NDI1ODI3YmI1Y2I3NjkxOTJmNjNkODUyN2I2MDZkMSBsZWdhY3ktdHJ1bmsKKzM3NTM5IGJhOGUxODU0YTg0YmFhY2Y5NGVhMTY4NjJmYmExM2VkNGUwOWRiY2UgcmVsZWFzZTIzLW1haW50CiszNzU0MCA1YWUzYTFjODBlM2ZlNzU4OWNjYTEwZmE5MjhiMzllZTE2NzgyMzg0IGxlZ2FjeS10cnVuaworMzc1NDEgMjYyZTFjZjQxZDM0YmM3NWY5Y2U4N2JmNGM0Yzg2YzYwNDgyNDYwZSBsZWdhY3ktdHJ1bmsKKzM3NTQyIGIzMWE1MTIwNjc3NDg1ODIzYzZlNDE0ZDdhMDkxZDY0Y2FiODIyMmYgbGVnYWN5LXRydW5rCiszNzU0MyA1NWZiYTg4OTMwYmM3YjgxNjY5ZDAxNTI5NDJhMTMxMGU0MDRjZGI4IGxlZ2FjeS10cnVuaworMzc1NDQgYmNhZmI2OGFkOTg1ODgwMGE1MjYyN2ZjOTEwZTYzNjUyYzc2ZTE0OCBsZWdhY3ktdHJ1bmsKKzM3NTQ1IDQ3ODRiZmM5OWE0MWJlMDM1MDdkZmZmOThiZmIyYjRiNWFjZDg5MWQgbGVnYWN5LXRydW5rCiszNzU0NiAzN2M2NWE2YjJlZjdmNDgxMmRlMTExZjdiNGNlNzg5MWI4YTljOTYwIGxlZ2FjeS10cnVuaworMzc1NDcgZmRhMzZhZjIyNmZiMmJkOTQ3ZjgxNjAxN2NlNTgxYTY1MjczY2E2MSBsZWdhY3ktdHJ1bmsKKzM3NTQ4IDNlNmY1NmU4MTA0YTJiZGMzZGEyYzYxM2Y3ZDJkZmU1M2QxMDNkOTkgbGVnYWN5LXRydW5rCiszNzU0OSA5YTM4NjI1ZmEyYjA4ZDQ2ZTU0YWM3ZjYzOTY0OWNmMTJhMDM1ODc4IGxlZ2FjeS10cnVuaworMzc1NTAgMTcwMWRhZTY0NzRlMTQ4MmYwNjUyMTM5MWU0YjFjYmJjYTViNTQxNyBsZWdhY3ktdHJ1bmsKKzM3NTUxIDY4M2EyZjhmNzcxZGM3MThkYzc1N2JiMjQ1YTkyOWE0ZDMzMjYwZmQgbGVnYWN5LXRydW5rCiszNzU1MiBhZjMwMDQwM2VkYjgyMGY0ZDExYWJlMmY2M2Q0MDI2ODgwNGVjNWI1IGxlZ2FjeS10cnVuaworMzc1NTMgYTVjODhmMmU4NmEzZjQ2N2Y3M2RjZjljM2U2ZTIzOGJjZDQ5OTU1NCBsZWdhY3ktdHJ1bmsKKzM3NTU0IDM2MTdkMWVlMjc5N2ZiZTYyZTRmYjg2YzIzM2MzZmU1NzhmMWVjM2IgbGVnYWN5LXRydW5rCiszNzU1NSBkOGZmZjcwNmE5YzI1Y2VmODE0NDNmMjJjZWZkNzNjZmU1ZDI1YjA1IGxlZ2FjeS10cnVuaworMzc1NTYgYmE5YmNmMjE0MWEyMzI5YjU3NzgzMzAyN2QzNDk5N2M0ZDFlNDA4ZCByZWxlYXNlMjMtbWFpbnQKKzM3NTU3IDk2MmZhM2UyMzIxNWJlOGYxYjI4NDk4MTFhMTBkYzI4OTc0ZTJjNDAgbGVnYWN5LXRydW5rCiszNzU1OCBiYTlmZGM0NGM3NzgyNTY2YzM1NzYyNGM3Njg2OTcyOTc3YWQzODE3IHJlbGVhc2UyMy1tYWludAorMzc1NTkgOTI0YmIyYWFkNGY0ODFiOGIxNGEwMjg5ZTg1NTg2N2VmNTg1MjQ3YiBsZWdhY3ktdHJ1bmsKKzM3NTYwIGRjM2E2NzY3ZTk2MDg0MjdmYTc3MTMxMjA2ZDk5ZGUyZWNiNzY2OGUgbGVnYWN5LXRydW5rCiszNzU2MSBhYWM0Y2M2NjE4YjU0YmI4ZWJjYjY3MDZlNjUyNGNkZjZiYzExOWUxIGxlZ2FjeS10cnVuaworMzc1NjIgMDkwZmZjYjgzZjBhYWU0NmRkYjFiZGNiZTNkMGFkNzdmYTFkNmFlOCBsZWdhY3ktdHJ1bmsKKzM3NTYzIDBjMjZkYjM4MTY3M2UyNDA1NzMyZmFlYjMwYTA1NDBhYjA4NWMyZGIgbGVnYWN5LXRydW5rCiszNzU2NCA2NjMyNzQxOWViMDA0NGJmZGM1MzQ4NmQzYjQyNThkMjZmYWEzNzgyIHJlbGVhc2UyMy1tYWludAorMzc1NjUgMDhiNzY3NDcwNjYzZTM1NjkwODIzMzQ1ODExYTY3ZmI1MzA4NjZkNSBsZWdhY3ktdHJ1bmsKKzM3NTY2IDMyNzFlYTYwYjgyZGMzMjFjZGIwN2FkNmU1ZDEwYWE1ZGI2MTc0MjAgcmVsZWFzZTIzLW1haW50CiszNzU2NyA1NGU2NTI3ZjMxNTA4OTgxMGM2NjlhNDExYTFlYTNiNDQ3M2I0OWVhIHJlbGVhc2UyMy1tYWludAorMzc1NjggMjk1YmQ4YzU1YTc4OGMzMDNmMTdmYmJlZWJiOWRmNTlhMDkyOTc0MSBsZWdhY3ktdHJ1bmsKKzM3NTY5IDg5MTA0MmM5NGFlZDAxZjQ0ZmViMTIyNzI1MGMxMzc5NmI2NzIxYzUgbGVnYWN5LXRydW5rCiszNzU3MCA0OTgxYmE1NGY0M2Q4MTgxMjE2MjgzMzk0MGU4OWZjNTc3YWIxNzZmIGxlZ2FjeS10cnVuaworMzc1NzEgNzQyZmRhYzNkNWFlMmZmNDM1ZWIwZDFlMjVkYmVjMzcwMTE3ZTdmOCBsZWdhY3ktdHJ1bmsKKzM3NTcyIDQwMTNmMGE1MzgzNTEwZjgxMjQ3YzJiNGViZmQxOWFiNzlmNjIwZmMgbGVnYWN5LXRydW5rCiszNzU3MyBlN2M3YjNhZjYxNjQ2OGEzMDJjN2Y2Y2JjMWI1NTlkNzU4YzdkM2NlIGxlZ2FjeS10cnVuaworMzc1NzQgNDYxNDQ0ZGU3YjFmZDBhMTMyYzA1NDdjMDU3MGZmYmU0OTZlZTU4OCBsZWdhY3ktdHJ1bmsKKzM3NTc1IDY2NGIxOGFhNmZjMTI0YjI1NWYwYjA5NTYwOWM5YTg2OTFkZTFjMWQgbGVnYWN5LXRydW5rCiszNzU3NiBiYWEyNjUzZjdhNzZkOTRiODM4OTAxNDJjODRhYTI1MTkxZjU1MzM5IGxlZ2FjeS10cnVuaworMzc1NzcgNTE3ZTRlYzBkZjg5Y2M1Mjk5Y2M1NjRlYjg3ZGU2YTA4MjQ0NDI1ZiBsZWdhY3ktdHJ1bmsKKzM3NTc4IDYzNWRkOGE5ZWJkOTNjMTIxMThiYTEwYTNmYTc4YzM3MjZjNGFhZGUgbGVnYWN5LXRydW5rCiszNzU3OSBhNDZiNzZlYjkwNTNjODNkM2Y4N2EyODJmY2Q4YzJlNzM1MThmMGIyIGxlZ2FjeS10cnVuaworMzc1ODAgYzU1MjQ0NmI3YmIyZjRiOWVmMzdiOTgyYmQxNzY4YzBlYzNkYjIwMSBsZWdhY3ktdHJ1bmsKKzM3NTgxIGY4Y2I4ZjBhYzhmMTNhMzUzNzkzNjRjZTcyMTJjYmJkMGI2N2Q2YWMgbGVnYWN5LXRydW5rCiszNzU4MiBlNmYxYWUxM2JlODRkZjJmNmQ3M2JlMjZlMmRiMDA1MDYyMDNhMGNhIGxlZ2FjeS10cnVuaworMzc1ODMgZjIzNGJlMTcyODAwMGU5Y2UyMzY0YmIxNzEwZDMxYzA0YjJmNzNhNyBsZWdhY3ktdHJ1bmsKKzM3NTg0IGMyYWU0ODJmZjQyZDYzZGViYjRmMjkzMDVlNDRlN2VjN2ZmOGRkZGMgbGVnYWN5LXRydW5rCiszNzU4NSAyYzc5YjUwYWZiYWI1ZTNkODM1MGYxYjEyZGU3NmRmNWJjMTYyMWJmIGxlZ2FjeS10cnVuaworMzc1ODYgNzRhNTdlNjY4NGYzOTFjZDMzNjhmOTBlNDVkYzNlMzMzZGQzY2YyOCBsZWdhY3ktdHJ1bmsKKzM3NTg3IDc2NjQxODI0Y2YwNTM1N2JmYjc0Y2MyMTA2N2QxNGRkNzhlMWNhMjUgbGVnYWN5LXRydW5rCiszNzU4OCBjN2ZlMjI3N2QxNzFkNGZhOGE1YjcwZGFjMjNlNmRiM2VkMmNiYjY5IGxlZ2FjeS10cnVuaworMzc1ODkgYzliMWYyNjk0ZTk4YWFmZGY5M2E0YzI5YTA3NDkxZDM0MTZhZWQ0NiBsZWdhY3ktdHJ1bmsKKzM3NTkwIGFjYzE5MWI3MTRiOTk3MzU3ZTljMzg0ZDE5ZDUyZmNlZTM5NDI0YWYgbGVnYWN5LXRydW5rCiszNzU5MSAwMjM2YjY1MzBjNDYzMWMzZTBkMzM1MzFhNDA5MDhhNmI1YWIxNWQ3IGxlZ2FjeS10cnVuaworMzc1OTIgYTAxYmUzNTBlZDYxNTgxYjQyNzNiNjMyMGE2MmYyZGQ0ZTBmYWYxNyBsZWdhY3ktdHJ1bmsKKzM3NTkzIDBkNmQ1NmIyMTY0YjdjZThjOTAwYjI4Mjc1NDc2NGVmYTBlNzk4ZTAgbGVnYWN5LXRydW5rCiszNzU5NCA0NGNkYWM5YmY3ODU5ZWI3N2NlNmFkNjgzNGQyMDNkM2Q1ZjRmNTFiIGxlZ2FjeS10cnVuaworMzc1OTUgNTNjNDY4ZDA5NTViYWEwOGQxZTlkYmVlYmY2YzNhM2U0ZTMzNzMxZSBsZWdhY3ktdHJ1bmsKKzM3NTk2IGQ5NDA0ZGIyOWJjNjU3N2JkNDA5YTk5NWIzZTc3MGQ5ZTY3ZGQxMTAgbGVnYWN5LXRydW5rCiszNzU5NyAzOWExM2UzOWQyNGViOWRlMGYwYmYyMDc5YzE0MWU5Mzk4MzNiMmE0IGxlZ2FjeS10cnVuaworMzc1OTggZWIzZDYwMzBkOTUwMTA3MGRjOTI3MjBiODJlNWNiM2U0ZDgxZjRiMiBsZWdhY3ktdHJ1bmsKKzM3NTk5IDEzODNjNDY5MmFmNzRkY2E3ODc4NTZlZDFmNTlhNTk3ZmMyM2UyNDEgbGVnYWN5LXRydW5rCiszNzYwMCBhODA0MjgwZTM0ZjkwZmUyMTRlMDdhZDZjNDAzMjc1ZjQ1MGQ3OTQ4IGxlZ2FjeS10cnVuaworMzc2MDEgZTRmN2QzYjBjNWQ0ZmU0N2ZkYjI3YmNmMzdhODdlMGFjZjUzNDYyMiBsZWdhY3ktdHJ1bmsKKzM3NjAyIGE0Zjc0N2U3MjEzODFjZjdkZmU3NjM0ZjFhOTE0ZDE1N2UxNjAwYTggbGVnYWN5LXRydW5rCiszNzYwMyA3NjM1NTM2MzEwMWIwYTExNTUwMTg3NWEwNDc5ODQ0MDQ1NTA1YzkzIGxlZ2FjeS10cnVuaworMzc2MDQgNDRlMTc2Y2NhMzM3MjFhZDhkODNmNTA3M2JmMTc0NGJmYTg1YTY2MCBsZWdhY3ktdHJ1bmsKKzM3NjA1IGQxZjBjNzA3OWI4Mjg3OWE1NTkzOTc2NmU4YmE1YTljMDc2NWJjODcgbGVnYWN5LXRydW5rCiszNzYwNiAxNzllNDJlYTJlOWM5NzE5ODgxNzEyODYxNjgwOTMzM2NjNDAwMjRmIGxlZ2FjeS10cnVuaworMzc2MDcgNDY4Mzk4M2U4NGIzNTVkMWFlMDQzOTIzOTVkZDJkMTA2Y2Q1Mzc2NiBsZWdhY3ktdHJ1bmsKKzM3NjA4IDk5Y2FiYTgxNDU2NTRjYTM5NWMzNGY1N2Q1M2ZiMjJhMGNhMjE4ODIgbGVnYWN5LXRydW5rCiszNzYwOSA3NGNlYjZmY2I0MzI3ZGQ4Yzg1ZTEwMGQ4ODhiMzZkNWY5ZGVmYjM1IGxlZ2FjeS10cnVuaworMzc2MTAgYTI3YjAyNzE3MTFiZDA1YmIwMzVlZWYyYmI5NDE4ZTU3MDdlYmRmOCBsZWdhY3ktdHJ1bmsKKzM3NjExIGIwZWM0YzlkNTk1YjAwYjI2NmJkMWE5MzllN2NiZjcyMDBkOWI4OTMgbGVnYWN5LXRydW5rCiszNzYxMiBiODZjN2M0Nzc0ZWRmZDgzMmViNjhmYzk0OTg3ZTE4Y2RiMTgxZDhhIGxlZ2FjeS10cnVuaworMzc2MTMgMmNjMTA3Yzk2NDZlMmJkYjAzZjJkMGEyNWJkOTc5ZjZlNGVlMzQ1YSBsZWdhY3ktdHJ1bmsKKzM3NjE0IGVjOTkzYjcyNjYwNTcyODhkZTk1M2I3OTQ5MjYzODAxNDcxNjYxYzYgbGVnYWN5LXRydW5rCiszNzYxNSBhYTJkNjA2MDQ5NWEwN2JiNGYzN2FkYThlYWM5NzQ4YzEzNDEwZjU5IGxlZ2FjeS10cnVuaworMzc2MTYgZGRjMmQ2ZTU0N2MxNTM5NGY4M2RlZTYwNGJiZmExNWRhNDZjOTY4MCBsZWdhY3ktdHJ1bmsKKzM3NjE3IDkyZTA1YjYzNDk5Nzg2OTA2YjQxZDVhNTNhMjdmNWY3YmUzYTU5MmUgbGVnYWN5LXRydW5rCiszNzYxOCAxMGIyNTQxNDYyOGNkYjgyYzgwZDI2MGYxOTNlNjNhMTczMTQzODkwIGxlZ2FjeS10cnVuaworMzc2MTkgNGY4ZGI1NWNlMTI0YTJlYTdmOGJjMTAzNDI1Nzg3ODMxYzFmOTQxMSBsZWdhY3ktdHJ1bmsKKzM3NjIwIDE5Nzc3NTJjZjgwN2JjNzg5ZDkwMGI5M2ZjMTY4MmU1YmIxM2VhMWIgbGVnYWN5LXRydW5rCiszNzYyMSA4YTUwNjFiY2Q0MTc5ZjgyNDgwMDg1YzAxNmQ0NmY0ZWE0YjVmOGRiIGxlZ2FjeS10cnVuaworMzc2MjIgZmIyNzNhODNjNzVmZDkyNTcxOTc4OTA1YWY1OGM4MDI0ZWQ0OWExNSBsZWdhY3ktdHJ1bmsKKzM3NjIzIDExZDAxZmM2NTBkYzA1MmFmZDQ5Yzc0NGM5NTBlOTM1NWU5N2VhOTYgbGVnYWN5LXRydW5rCiszNzYyNCA0NjIxN2QwNWE0NzY2YTQ2MWJmNDJjODgwYWE4YWQxMDcwYWMyMzIxIGxlZ2FjeS10cnVuaworMzc2MjUgZDEyMjgxMjdkMjk0MjVmNjQ0ZWM3OTE0M2IyMjYwNmJiZWZhYzJhOCBsZWdhY3ktdHJ1bmsKKzM3NjI2IDI2ZmQwMGIzNjhmMWQ0NTJlNzRiNjQxZTY2Y2ExNjJkNTg0NDkwOGUgbGVnYWN5LXRydW5rCiszNzYyNyAxNjZiZDMzOWQzYmZkNjE5YzRkNzA1NWFkODYxMjQwMWVmODM4MGE2IGxlZ2FjeS10cnVuaworMzc2MjggMjZiZWRmNjNlNGE4OWM1M2Y4ZjhmYjM1ZWUxOTZkNGJjOTQwOWZkYyBsZWdhY3ktdHJ1bmsKKzM3NjI5IGIzMDhlMTViZDdmYmE5MjVmMTc3NzMxMTZmOTg1ZGIyYzBjYjEyOTcgbGVnYWN5LXRydW5rCiszNzYzMCAxOTA3YWQ1NGQzNTFjZTc3ZmE4MjJhNWUzYWEzMjA3MWJmN2NiMWRmIGxlZ2FjeS10cnVuaworMzc2MzEgNTU0ODJlOWRlYjY2MzgzNjRjMjAzMmIwYjFlZWM4ODE2NGQxYWFhYyBsZWdhY3ktdHJ1bmsKKzM3NjMxIDUzY2ZmMDQyODM4NTVhZGY4OGVkMGMwZmQzNjk4ODI3Y2E4NDM2MzcgbGVnYWN5LXRydW5rCiszNzYzMyA3MmM1MTMxZDRjNGFmMGRiMzdhYjQxNTI4NzhiNThkZTAwMGViNjFkIGxlZ2FjeS10cnVuaworMzc2MzQgYzZhYWMwMzQ3NGM1ZTIzODI4NmFjZGI0MmYxNGRlZGM3ZGVkMWY5NCBsZWdhY3ktdHJ1bmsKKzM3NjM1IDg4YmY0OGMwNjlmOWMzNjI0OTViZDRmNmE2NWQyNjNmZWM2YjIwODUgbGVnYWN5LXRydW5rCiszNzYzNiBiYTc1ZmRhOTIyMGMyYTE1NGQ2NjUyZTMwMGJmNWZkZWNhNzJkN2VjIGxlZ2FjeS10cnVuaworMzc2MzcgYWIwOWRhYWM1NjkxYjc4YzQ5YmI0NDcyNTJlMjIwZGU2NjU3MzJkYiBsZWdhY3ktdHJ1bmsKKzM3NjM4IGZiYWNiYjI2Mjc4OTQ5ODE5ZTBiNjhjNTA1MGMwYjNlMGE5YTMzZDggbGVnYWN5LXRydW5rCiszNzYzOSBlMTVjMTVhNGZiZTg4MTUxMTE5YWUzM2JkMTVjNDMzNGIzZDQ2OWNjIGxlZ2FjeS10cnVuaworMzc2NDAgYzVkOTUxYTBlMGMzZTkwYTYyNWU1NzJlNjhiNGQxM2E5Njk5YjA4NCBsZWdhY3ktdHJ1bmsKKzM3NjQxIGU0YjdjOTIzZWQ1ZjI3MzdmNjYxNTZhODhmNjYwMWUxNGM2NTU3YjUgbGVnYWN5LXRydW5rCiszNzY0MiBmMWMwNDhlNzQzZTJkODA2MGFhODk0MGYzMmE2OGExMWFkYjhjMTg0IHJlbGVhc2UyMy1tYWludAorMzc2NDMgYzY2ZTZjOWZmYzJkYmQzZDAxOWE3NGQzYjFiZjY4YTA4MTE1NGZhYiBsZWdhY3ktdHJ1bmsKKzM3NjQ0IDQ2ODhkMmEyNzNkOTBiODZmYmNjMzAyM2U3NzhlYTlmMzYxYTBlYTUgbGVnYWN5LXRydW5rCiszNzY0NSBkOWQzYjQ3NWNlYjI1ODY2M2IxMzEyMWQ3NDc5ZTdlZWFkNTYyNjMwIHJlbGVhc2UyMy1tYWludAorMzc2NDYgYTUyZGU5MTFiMjg0ODE0NzE4MjE2OWNiZmMzMjJjNmY1MmY5MDEwMCBsZWdhY3ktdHJ1bmsKKzM3NjQ3IDNmZGQ5NmYwY2U4NjZjNWFmNjkyMWYzNjg0ODE1OGZhZmMwYmYzYTYgbGVnYWN5LXRydW5rCiszNzY0OCBmMTc1Yzk4MzgzNzM2ZDU4N2Y0MzYxNzc2MGI2MTI1NGE5YzNhNTRjIGxlZ2FjeS10cnVuaworMzc2NDkgODE3YzI0MWJmZmZmOGRmNGYxMTg4ZmJhNjMyZDRjZjhiMjlkMTU2NiBsZWdhY3ktdHJ1bmsKKzM3NjUwIGJkMTg4OGU5Mjk5ZjczNWNlNzExOTY0OWM5OGM3YWQ0ZjlmY2YxYjcgbGVnYWN5LXRydW5rCiszNzY1MSBiODc3OGNmN2QwZTM3Mzg3MWZlZjAzOTk3MjY0OTI3M2E3Nzg3ODQwIHJlbGVhc2UyMy1tYWludAorMzc2NTIgMzM0MmJjMjMwMGMzYWMyZTZjY2E1ZTdmNzJiN2E2NTA3OTJjMGI1NiBsZWdhY3ktdHJ1bmsKKzM3NjUzIDhkOGIzOTIzNGRlOWU2ZjBiZTk3ODI3MmNmZjUyM2FhNDE3ZjZjN2IgbGVnYWN5LXRydW5rCiszNzY1NCA4M2EwMTkxMjg5OWY2MDQ2MDBhZGFlN2FmZjExMzYyOGNiODhiNjI4IGxlZ2FjeS10cnVuaworMzc2NTUgNmRmZmRjMzNmYzZjNWMwMWYwMWNjOTZlZjdhNWFiYTgzNDYwYjcyNCBsZWdhY3ktdHJ1bmsKKzM3NjU2IGQwNjNlNGRlNTY3NjAwZWE2YzdiN2VhZDg4YjM3YmYxM2Q0ODg4NjEgcmVsZWFzZTIzLW1haW50CiszNzY1NyAyMjNkODIyNjA0NTJhYWMyNWM4NTg4MDcxMjFhNDFlZTBkNDUwNDMwIGxlZ2FjeS10cnVuaworMzc2NTggYTIyNDNkNjZkNDBiZGExZTMxOTg1YzY5M2NkOGM5ZjQwMDA2NWYyMiBsZWdhY3ktdHJ1bmsKKzM3NjU5IDY5Yzk2ODgxYWFhZGI0ODQ4MmQwMjk0OTU5YzNmYTQ1ODJjNTBkOWQgcmVsZWFzZTIzLW1haW50CiszNzY2MCA2ODE5YmEwMjM2Njc2ZmUwM2M2MmIwMTA1ZThlMWVhZmVjYjZmNGViIGxlZ2FjeS10cnVuaworMzc2NjEgYWViNmZmMzA4ODQ4Yzg3NWQ1ZTRhM2I1MjMzMGQ3MDI2YjMzZTJlNSBsZWdhY3ktdHJ1bmsKKzM3NjYyIDRmZWRjNTI5YWQzMmRiOTU3MDQ0YzFmZTgxYzY1YTIzMzU0NzQ0NTYgcmVsZWFzZTIzLW1haW50CiszNzY2MyBiMWE5ZWE2ZThhZTIwYTMzYWMwZTZjY2VjM2MwNDdmMjhmNzY3OGI5IGxlZ2FjeS10cnVuaworMzc2NjQgMTk5ZGFjZTAyNGJhMDQ0ZDQ1MGRkZjM4YmVmNmQ3OWFmZjUxNzJiMyBsZWdhY3ktdHJ1bmsKKzM3NjY1IGQ0ODVlNzhhNDNkNjU4NGJiYjkyOGUzNjE2NGQ0MmQ0ZWVmZTliY2UgcmVsZWFzZTIzLW1haW50CiszNzY2NiA1Yzg2MjQ5NmE5ZjZhYTgzMWRhOWY4N2U4MmE5NjEwYWZkYjU5MTQ4IGxlZ2FjeS10cnVuaworMzc2NjcgZDJlOTU5NDA0ODI2OTJiOGU4YmE2MTcyM2MyN2FmNzg1OGUyNDM0ZSBsZWdhY3ktdHJ1bmsKKzM3NjY4IGU5Y2JlMGFkYjI4YWU3ZmE3YWMyMzE4OWFmZWI4YzJlZjMyMzQxMjcgbGVnYWN5LXRydW5rCiszNzY2OSBhOWU2MDUxNDAwNzQ3N2YyMGNmNDg4Mjc2ZGQxNTg2ZDE0MjkzZjhiIGxlZ2FjeS10cnVuaworMzc2NzAgYTNkZmQ4MDE1MzNiNjE4NDFlZDcxYzhiYTlhOTE0ZmFiYzQ3YTkzYSBsZWdhY3ktdHJ1bmsKKzM3NjcxIDQ3YjM4NDUxOTc3NTc1NjA2ZGUyZGJkZGE1NzU2NWMxMzVjNjhiN2IgbGVnYWN5LXRydW5rCiszNzY3MiA1OWUwZmYwY2QzZDRjOTFlMmJmY2QzOWVhNjBmNjg2NWVjOTBjYWI0IGxlZ2FjeS10cnVuaworMzc2NzMgZDQ0MzUwNWU3ZWVjMThiOTQ2N2I0OTJkZjZkNTJiYTI1MGVlNTg0YyBsZWdhY3ktdHJ1bmsKKzM3Njc0IDNmZjI1MjcxNWQ5M2IwNGVmZWQ2ZjUyZWExYTI4ODMxMGExMjdjZjIgbGVnYWN5LXRydW5rCiszNzY3NSAxYzY3NmU4OTFiM2Y5YTgzNzJhMTNmNmYzMjY5Y2ExZDMwNjE1ZTJhIHJlbGVhc2UyMy1tYWludAorMzc2NzYgYWQ5MDg4OGIxN2JjMDIzNDU4OTFlMWVmNmQyYTZhOWZhNjdkOGRlNSByZWxlYXNlMjMtbWFpbnQKKzM3Njc3IGY1NDg2ODg1NWIxY2NkYWEyYTc4MTUwYmZmYzZiOTdkODBkY2MyMDQgbGVnYWN5LXRydW5rCiszNzY3OCA4MjE0MmEyNGU4NDVjMzNiZDljZjAxMDQxOWFlZWZkZTM4NjZhYjBhIGxlZ2FjeS10cnVuaworMzc2NzkgMGFmYjI1MzBlOTg2YWEwNmRkNjBmYjM3MDJmNDU3NDIzMTU0MjkyOSBsZWdhY3ktdHJ1bmsKKzM3NjgwIGIwZjBjNTdiMWUwNTU3MDIwYjIyYTE5MDBjNWQyZDJjMDJlM2JlYTAgbGVnYWN5LXRydW5rCiszNzY4MSBlZDA0MWUwZTQ1MWVmMTFjYmU5MTg4MmU5MDQ3OGZiNzZmMjVmYTMxIGxlZ2FjeS10cnVuaworMzc2ODIgYjNhMzBlMjg0MmI5Njc1YmQzZWNhMzlmMWE0NzA2ZDQ4MjNkZWE4YyByZWxlYXNlMjMtbWFpbnQKKzM3NjgzIDhkMzhmMmYyMTUxY2NhNWFhMjE5ODAwZWE1YzBlMjZhOTY5ZTgwYTkgbGVnYWN5LXRydW5rCiszNzY4NCAyYTE1MzE4YzQwMzhjMzA0N2RjOWMxYzhhMmFhNDkzY2UyMWQzNmEyIGxlZ2FjeS10cnVuaworMzc2ODUgZjE0MzI5YTc4OTgxOTEyMTUwNTZlM2Y1OWRlOGMyM2I4OGRlOWM0MiBsZWdhY3ktdHJ1bmsKKzM3Njg2IGJmMThjYWNhMDczMDQzNzE3MDRkZGEyNmE1NTNkZjZmMzFjYWIzODMgbGVnYWN5LXRydW5rCiszNzY4NyBkYjg3MTBmMTM2NTA4OGViZDAwZjliYzJjZTFjNmVkMjUzYWRkNWE4IGxlZ2FjeS10cnVuaworMzc2ODggMjliOTQ1YmMwYTE3ZjFjOWE5YjFhNmRkOGNiNjIxYWY2ZWJiZDE5YSBsZWdhY3ktdHJ1bmsKKzM3Njg5IGFlZDI1MjZkYTFmYzdlZDkzNDNkNjRjOWM4M2E2ZTM0Yjk4Njg3MjMgbGVnYWN5LXRydW5rCiszNzY5MCAyOGVmMGEzZjU3ZjZjZDc4NDhhNzZmYjJmYTk2MzFiNmQzNDA2MmNjIGxlZ2FjeS10cnVuaworMzc2OTEgZDkzOGI5ZWQzMmZmZWNhZThjNDA0OTQ1YzNjZTYyYjg5YmI0YWQ5YiBsZWdhY3ktdHJ1bmsKKzM3NjkyIDE3ZDg2NjFlN2QxM2FhZTQ2Y2M0MGM1YzkxODQyNjQxNTM4MjhiNjUgbGVnYWN5LXRydW5rCiszNzY5MyA2YzQxNjk1Mjg0ZjZmZjdjOTQ5Nzc0ZjU2MTU0ZDE0ZGJmMGMyNDdlIGxlZ2FjeS10cnVuaworMzc2OTQgMzE3MTAxY2ZmYjcyOTM0NTUyN2JkZmIzODEzYjBkZDNlMjZiZDBlOSBsZWdhY3ktdHJ1bmsKKzM3Njk1IDlmZmMzNDQ4OTFhNjI2ZWRhYTI2MDFmY2FlNDA1OWI2NDFiMzFmMTkgbGVnYWN5LXRydW5rCiszNzY5NiA2MjdmNzdlM2NlYjY1MWJhMWQwYWFkNjBjNGY1NmI5OGNiNjkwNTU4IHJlbGVhc2UyMy1tYWludAorMzc2OTcgMTA1MTJjZWJhMzBjNTVjZTY0ZDVhMjZhN2Q5MGY5ZTBkYjY0ODEwMiBsZWdhY3ktdHJ1bmsKKzM3Njk4IGVmMTQ5ZWE1OTRhNGMwZjRhODEzOGZkNGI5OWY4YTdmZjExODM2Y2EgbGVnYWN5LXRydW5rCiszNzY5OSA5OTFkMzQ5MGY2OThlYjJhZjhkMzgwNTYyNTMyZDcyN2E1MWUyOTZlIGxlZ2FjeS10cnVuaworMzc3MDAgZGM4ZWNmNzI0NDg4YzI2Zjc1ZDkwMjNiZjRhZTI2NTUxMzZmNDVjYSBsZWdhY3ktdHJ1bmsKKzM3NzAxIGJkNTU4MjExYmE1NTJjNzE0OWE4MzZjOGQ2ZjJiYjk4OGNjYWViMDAgbGVnYWN5LXRydW5rCiszNzcwMiBmZGNlM2QzOWJlYzE0ZDRkNDcwNDAxNTUyZTdhYzY2NzY2MGNiZjJjIGxlZ2FjeS10cnVuaworMzc3MDMgNGRkOTdjMzdjMmNjMmMzMzc4ZjJjOTE2YTM3Y2QxZmVhN2FkODk5YyBsZWdhY3ktdHJ1bmsKKzM3NzA0IDZmYzEwMzA2YmYzMTJiYWM5OTNjNzUyMWY2NTM3MWM5MmM1YzEwNzIgbGVnYWN5LXRydW5rCiszNzcwNSAxMDViZmUxNzY5Yjc5NmM0MjdmNWUyZmRjNmEzMDAzN2NkZjcwZTRmIGxlZ2FjeS10cnVuaworMzc3MDYgOTkzYjEyOGQ0ZTI5NGE1MTcwOTM1NGZiYjAwZmI0ZDJkMTM4ZjEyYiBsZWdhY3ktdHJ1bmsKKzM3NzA3IGFjNGZhOTQyZjkyZTc4YTZjYmRkZDZhOGQ3ZGJmZDg0ZDczZTAxMjggbGVnYWN5LXRydW5rCiszNzcwOCBlZDEzOTM3MDc5ZGYxN2NhYzI2Yzk3MDY3MmJhNDJlY2EyM2FmM2QwIGxlZ2FjeS10cnVuaworMzc3MDkgMDMyZjM0MmVmY2QyNGYyNGM2NmNlNmJmYjBlYzEzODA3N2E0NWVkYSBsZWdhY3ktdHJ1bmsKKzM3NzEwIDc5YmNhZDE0ZTk2YWFhNzc1ODk2ZDRmZTQ0ODQ3NTMzYmQ4ZTkyNzYgbGVnYWN5LXRydW5rCiszNzcxMSA1NTEwOTk1ZWEyNmZiNWQ5NDhhMDRkZjk2MTlmNzA1YzdkZGVjYjRkIGxlZ2FjeS10cnVuaworMzc3MTIgMzM5OGM1Y2U4YjdhMDk2MDc0ZTRmMWI5MTgwMDRmOGEwOGU2NTMyOCBsZWdhY3ktdHJ1bmsKKzM3NzEzIGQ4Mzk5OGE3MjFhMGEyZWYxZTQzN2YzZDZkOGEwNDkxYjFhYTcyMzMgbGVnYWN5LXRydW5rCiszNzcxNCAyNjI1NTM3YTZkZmFkZDUzNjA4Y2M3ODMyOThmZjljNTM4YzQ5Y2U5IGxlZ2FjeS10cnVuaworMzc3MTUgMmVlMDMwMWI0ODNjZTJhODRmN2UzOWI5OGRiYWRjN2ZiMmJhM2VmOSBsZWdhY3ktdHJ1bmsKKzM3NzE2IDk0Mzg2MmIyYjRkZmU1NmU1OGRjNTJlNmViMGQwODU0MWQ5ZDdhMGMgbGVnYWN5LXRydW5rCiszNzcxNyBkNDFhYzExZTljNjA0YTY1OTZjM2NmMTRlM2RiODMzNDNlOGQxMTkyIGxlZ2FjeS10cnVuaworMzc3MTggZWVjMzE3ZWU1YzM1YjhmODcyMTI1YTMxZjUwYjU0YzE1OGYyYjlkOSByZWxlYXNlMjMtbWFpbnQKKzM3NzE5IDFjZDE5ZGFhYTlkNDJmYWI3MjIzMjBhOGQ5YWZjYzMyZTkyOWIwYjQgbGVnYWN5LXRydW5rCiszNzcyMCA2MGM2MGRjNzVjNzcyNjRiOWUyYzJmNWY0YmQ2YzYxZmUzY2ZiMWE4IGxlZ2FjeS10cnVuaworMzc3MjEgNmRhMDc4NzNhMGVlMzc1NDk1ZGI5Yjg1ZmQyOTdiYWRiM2ExODBjYSBsZWdhY3ktdHJ1bmsKKzM3NzIyIDBkZGFlOGIwZmIxOWEzODMyM2I0MmJjNWI4NDYzY2RmMTlhZDhkYjMgbGVnYWN5LXRydW5rCiszNzcyMyAzMDczMjQzNDEwN2I2Y2ZlNmQ5MjhiNDQwMGQzMjJlNzIwN2NhYjgwIGxlZ2FjeS10cnVuaworMzc3MjQgMzQ2NzI4ODA4OWExZTI1ODYzZTVkM2Q3NDQxYTU2ZjQzYzRlNTNiMiBsZWdhY3ktdHJ1bmsKKzM3NzI1IDRhM2VhYTFhYTNhZmQyZjViOTRjZTJlZDBiMmU5ZGI3ZGFjMjBlYzcgbGVnYWN5LXRydW5rCiszNzcyNiBmYWNiNWEyZjRiNTNlOTdkMzEyZGIzMTkwOTllYjc5ZDQ5MTUxM2FjIGxlZ2FjeS10cnVuaworMzc3MjcgYjU4NWJjY2ZiMjUwNTQzYTY2YmI4ZWY0ZTQ1ZDEwYTMzNDEwN2VkZCByZWxlYXNlMjMtbWFpbnQKKzM3NzI4IDZiNjFhZjA4MzQ5MzMxM2I1MzhlNTE1NGQyNzZmMWY1ODc2NzU1N2IgbGVnYWN5LXRydW5rCiszNzcyOSBmMTk2NzE2ZWEwZGI0NWQ2Mzc2N2YyZDNiNzdlY2E0MWZjMTM4MjRlIGxlZ2FjeS10cnVuaworMzc3MzAgMjYzMmY0MzQwOWY0OTY1YWNlYjcxMjUzMDk5NWU0ZDQ0MjBjZWVjYiBsZWdhY3ktdHJ1bmsKKzM3NzMxIDA3ZDk0YTE2MmNmODk1MWVmYWRmNjgzNTE0OGIzNjczOGU3NzIwZmYgbGVnYWN5LXRydW5rCiszNzczMiAzMDhlOGVmMmQzZWRmNWY1NTFiZmIxMjE5OGEyNWI1MDViOWUzZjdlIHJlbGVhc2UyMy1tYWludAorMzc3MzMgMjIzZDIwYWZjOGI1ZTFlYjhjOTNmYTZhMWRhMTk5OGMzNDE4ZmNlOSBsZWdhY3ktdHJ1bmsKKzM3NzM0IDgwY2ExYThiMjMyMTYyZTA5ZDdkNTI2NjNhNTIxNmFlZGI1MjE3YWIgbGVnYWN5LXRydW5rCiszNzczNSA1YWZhNTI3N2ZjZDk3OTNhZTBiZjFjOGMxNjlmN2FkMzA2MGZjZjViIGxlZ2FjeS10cnVuaworMzc3MzYgMTgwZGM4MjllZmZmODE3NTFlZmI4MTJjZjBkYTA0YmFmYmY1ZjA4YiBsZWdhY3ktdHJ1bmsKKzM3NzM3IGJmMmQwM2RmYzM4ZTI4ZjFjNGM0OTFmOTc5MzBiMjJiOTI5ZDUzMzcgcmVsZWFzZTIzLW1haW50CiszNzczOCAwZGMzZjk3MDU1NzcwNzNhYzA1MGQ5ZTBlMTAxMzlmYzM0NzQ0NzU2IGxlZ2FjeS10cnVuaworMzc3MzkgMjRmYzNlYWExOWUwYjVkZDlhY2Y3OWRkOWQ0ODdjZDJiZjBmMTdhOCBsZWdhY3ktdHJ1bmsKKzM3NzQwIDYzM2NhZGViZjY4ZDRkZDhjZjBjOTE5ZmY1MjE0Mzc2YmViYzhjNDkgbGVnYWN5LXRydW5rCiszNzc0MSBhOGM5NzljYzRmYTY1OGQ4MjZkMjEwNDhmZDc4MWE1MjBiMDNiMjZiIGxlZ2FjeS10cnVuaworMzc3NDIgZWY1MDMwYmM1ZjY3MWM0YjA0ODFjODhjYmE5MTMxNTg0OWNhZGI2ZSBsZWdhY3ktdHJ1bmsKKzM3NzQzIDY4NzM2MmZhNDcxYzNjMDkzMTcwNTY2ZjU5ZTQ5YjNmNmIzZmRjMTIgbGVnYWN5LXRydW5rCiszNzc0NCA4YTA5YzgyZTQyNjEwYjBkNDk2ZmQzMTg1Nzk0ZmQ3ZmIzNDg1OGU4IGxlZ2FjeS10cnVuaworMzc3NDUgYmMwNDIxYjk2NTdhMDA1OGFhOTUwY2FjZThjM2IwNWU3NTg1YmFkNSBsZWdhY3ktdHJ1bmsKKzM3NzQ2IGE2Zjk3ZTBlNjMxODk2NGMyNmM4ZmJhZTBkNDA1NmMxM2E1MzVlYzAgbGVnYWN5LXRydW5rCiszNzc0NyA1ZWNhMjQ4ZjYzOWU0MmY0MDcyYzljN2RmOWFiZjljZDNmNGQzZjcxIHJlbGVhc2UyMy1tYWludAorMzc3NDggYzE5ZTgxMTEyMDU5MzE2YTY4MjQzZDcwZDM4ZjAyYjAyNzc1ZTM5NCBsZWdhY3ktdHJ1bmsKKzM3NzQ5IGE1NzZjZjFhYzZhMDRlNzgyZjdhNzEyNzMzMmI1YWM4ODZmMThkNjcgcmVsZWFzZTIzLW1haW50CiszNzc1MCA5NzY4NjI0ZjAzNWZhMjM4ZmU5NTUzZjdjNjM1YzQwM2U0NTI1MzU4IGxlZ2FjeS10cnVuaworMzc3NTAgMGNiMWJhOTIyNDFiYTI5NTc1NTA1ODI4ZWVlMjQxY2QxMjZkNDY5MyByZWxlYXNlMjMtbWFpbnQKKzM3NzUxIDBkNmRiZWJkOGI0YTJkMDQzMzk4YTI0YzE5ZTAxNjg1ZjcyZTk2NDcgbGVnYWN5LXRydW5rCiszNzc1MiA1M2FhMDE5MzcwZGI1MGEzZTAyOWM1NzQ1MjEyYmI1MTA2OWUxNGU4IGxlZ2FjeS10cnVuaworMzc3NTMgYzMwOGM2YmEwMDJmNWI1YjI0ODk3MTQ4MDhiNDM0M2ZmYTU4OGZhMCBsZWdhY3ktdHJ1bmsKKzM3NzU0IGZlYjQwMTdjYmFkNDJhNzQ1YzI1YjFjNzczZGM0YTY2MTFlODc3NmUgbGVnYWN5LXRydW5rCiszNzc1NSA3ODZkM2I4YjliZWVkYmFjNDRjZmI4YjQ0ZjM1ZWExNGUxZWEyMjBkIGxlZ2FjeS10cnVuaworMzc3NTUgN2UzODdhOWRjYzc5OTU0YTc3Njk1YWRlZjhiNTkzZGEzNWJlMTIxNCBsZWdhY3ktdHJ1bmsKKzM3NzU3IDg1ZGIwMTZlOGRhYzYzZWU5NTlhZWQ0NTVlOTE4NmIzZjA4MmUxNTUgbGVnYWN5LXRydW5rCiszNzc1OCBkNzgzZDUxNzE4MTE5ZTQxMDY4YzM4OTZjNWJjOTVlODZlOWFjYzkwIHJlbGVhc2UyMy1tYWludAorMzc3NTkgNzEwYjdlOGQyZmYyYTYwYjg2NTczZTkzZWIzMGViMDY5N2E2ZThlMCBsZWdhY3ktdHJ1bmsKKzM3NzYwIGRmYjdiMDdkY2RlZGQwMDkyYTViY2FjZjYyMGVkNmIzMWQyZDJmY2QgbGVnYWN5LXRydW5rCiszNzc2MSBhNTEyOWQ2YWIxY2M2YTUzODVlOTYyMWY4ZDdiN2Y0YzI0YjkwY2M2IGxlZ2FjeS10cnVuaworMzc3NjIgZWI5NzljM2YxNGJhOTYzZDk1NDJlMzM5MGZhZmUyNzhmOWIwOTY0OSBsZWdhY3ktdHJ1bmsKKzM3NzYzIDVjYzM4MzQwMTI5NGZiNGM1NGEzZDcyNzRjZjU1MGNmZThlMmMyMzkgbGVnYWN5LXRydW5rCiszNzc2NCBhYjZiMTA4YThjZWM4OWEyMGRiMDU3N2M0NDYzOWIwYjhhNzE4MDZkIGxlZ2FjeS10cnVuaworMzc3NjUgMjA4NzMyOTVlOTE2MDc1NzRlYjRmMTA2N2M1OTljYjA4YTVmZTYyOSBsZWdhY3ktdHJ1bmsKKzM3NzY2IDE5YzJkY2NmYWY2NTNkOTY3N2FkZTc4ZTFjYjZhYjVkOTZkODY5MjQgcmVsZWFzZTIzLW1haW50CiszNzc2NyAxMzI4OWE3NDQyYzM3ZjViNDljZDU2MjhjOTg2NTFlOTY2NTE5ZTJkIHJlbGVhc2UyMy1tYWludAorMzc3NjggMzYwMjRmYTNiZjRmNGVhNDE5M2VjNmQyOWFmZmI3NmNjZGE5ZjZjYiBsZWdhY3ktdHJ1bmsKKzM3NzY5IDhmOGM4OWJiZTQzOWQwZTE4NGU0ZWUxZGQ4ZGFlMDdhNTkxZTQ4YjEgbGVnYWN5LXRydW5rCiszNzc3MCA1ZWQxZDk3YjQ5YTEyNDU5YTBiNmJjYTcwZGJlOTBmYzhmOWJkMTE0IGxlZ2FjeS10cnVuaworMzc3NzEgN2VkODk5YjYxMTgyODA2YzliMTZkMTZkMDY3MDlhNjJlMjlmOGZiOSBsZWdhY3ktdHJ1bmsKKzM3NzcyIDJmYTg3Mjc4NGViNjIwMWIyMWVhNzNiZjZjOTFkYWYwYWI1YTZiMjUgbGVnYWN5LXRydW5rCiszNzc3MyBiM2ZmYTY0ZmY0YzY0NzAyM2EyNTM3OTJhMTVmNTAyZGQ0YzE3N2RiIGxlZ2FjeS10cnVuaworMzc3NzQgOTliOTIwMTg2MzY3MWI4ZDY5MGVlMjY1MGZkMTc1MDA2Nzk0MDEwNCBsZWdhY3ktdHJ1bmsKKzM3Nzc1IDlhODYyNDI1YTk4YTE0NmNhZDY5YTEyOTM1NTNlMjkyZjI4NGI5YTggcmVsZWFzZTIzLW1haW50CiszNzc3NiA5Y2U1NzY0MDE5YWVmMDQ0NjE3MGQxMzRhMTIxMDU5ZWNkM2E1Y2MxIHJlbGVhc2UyMy1tYWludAorMzc3NzcgZWE2ZWY0MGRjOTIyMGY0NzU3YzRiZjBjZTE1MGQxZWQ5ZTc4MDAyYiBsZWdhY3ktdHJ1bmsKKzM3Nzc4IDdlODhjMDQzN2VjYzYyMGVhN2FlM2I4ODExZjdiNjdkNDY3ZTc1NTMgbGVnYWN5LXRydW5rCiszNzc3OSAwMjAxNmQ1YTRkYzZhODM1NjlkYmJiMTgyNmMyZTZiZWY4YmVjNTRjIGxlZ2FjeS10cnVuaworMzc3ODAgMjU3MTRlMGZjODlkYjEzY2RkN2JjODgwYjdjMzFkMzc2ODYzMWE0NiBsZWdhY3ktdHJ1bmsKKzM3NzgxIDhlOTFhN2VhYTdiNzk5NWI2NTZlMWEzNmMwN2NmNTgwZGMwYTYwZTUgbGVnYWN5LXRydW5rCiszNzc4MiA4Njk4NjUzZTA1ZmMxMDkxYjU5MTAyMjhiNzI2ZDIzNjRjNWU3MjBkIGxlZ2FjeS10cnVuaworMzc3ODMgZDgyZmE5MzJiNDFiYzAzOTE2NTgxMTZiYzNlOTdiOGM1M2E5M2NmMyBsZWdhY3ktdHJ1bmsKKzM3Nzg0IDdmZDRkMzUwZmY4MjYyYjhkNTg1MDk3ZGQ3OTU2YTFiMGJhYmJkMTUgbGVnYWN5LXRydW5rCiszNzc4NSA5MTczYjllMGFiNzczNDk3MDQwZWJiYjc0MjMwNzI5MWMxYTM1YzVhIGxlZ2FjeS10cnVuaworMzc3ODYgMDE4ZGNjN2VmODg3ZGViYzdhNzhmZDlkY2M2ZmU5MjlmZjhhZmVlZiBsZWdhY3ktdHJ1bmsKKzM3Nzg3IDY2MmMxNTUxMDZlNDI1YzEwNWY5ZWYyZjlmOGIwZjY4NDkyYzRmYTEgbGVnYWN5LXRydW5rCiszNzc4OCBlNDQwNDA0NmU1NTJmODZkNzVhMWRiZjFkZTZmNmFjZWY5YTM5ZmFmIGxlZ2FjeS10cnVuaworMzc3ODkgODM5MGY5MzlkY2MxZjNjYjgzMDgyOGFmOWZlNDEzNzUzNWVkYWUxYyBsZWdhY3ktdHJ1bmsKKzM3NzkwIDgyOWVlMzI1YTE4ZTUzODdmZjc4OTM3YjJjMzRjMzg5ZjhjNzRmZjQgbGVnYWN5LXRydW5rCiszNzc5MSAwZDRlY2MzMWNmZDgzZGI1ZDRhZDZjNDc4ZmMxOWFmNDZjMjllNDc5IGxlZ2FjeS10cnVuaworMzc3OTIgNjYyMjNhOWViZTQ4NjM1OWMxZjU3N2I4ZTg2ZWRhYmYyZTQzODEzYyBsZWdhY3ktdHJ1bmsKKzM3NzkzIDRmYTFkZjNiMDYyZjQ5N2EyM2M0OGI0MTE2YjU4ZjQ2OWQ1N2E4MjggbGVnYWN5LXRydW5rCiszNzc5NCA1NDhmMzhhNTY2NjllMjJmN2NkYjM4M2IxMWVhZDhiMWNiMWUyMzNlIGxlZ2FjeS10cnVuaworMzc3OTUgNTljNDNmZDhiYTczZjA3ODhkMWFkZjY3MTM3NTI3ZWU5ZmUwZmRmMiBsZWdhY3ktdHJ1bmsKKzM3Nzk2IGViMjMxNTQ0YzFhZDVlNjA1MGI5N2EwMmRmOTZkOGI0NmY4NzExNzggbGVnYWN5LXRydW5rCiszNzc5NyAwYWUyOGMzYThkMjQwNjgzOGYyODYzM2ZjMjQ2YjkxYmRiMWM0MjY2IGxlZ2FjeS10cnVuaworMzc3OTggYWI3MzIxNzczMGRiMjMyZTNlMDlkMjZhNzlmODg1ZDllNDI5YjlmNyBsZWdhY3ktdHJ1bmsKKzM3Nzk5IGU0ZTIzZTNhNzg0NGJjZWVmMGVjYTNlMTNmNTY5ODc5ZDQ1NWEzYTMgbGVnYWN5LXRydW5rCiszNzgwMCA0ZGUzNTRjNzhhN2VmYmMwNDg1YmRkOGEyNWRjMTgyMmYzODZkYjhkIGxlZ2FjeS10cnVuaworMzc4MDEgODFjYmYwMzE1NDlhMWY5ZTBiMTA5ZDIzMjIzNWQ2OWM2ZTE5M2Y5ZiBsZWdhY3ktdHJ1bmsKKzM3ODAyIDVmYmJlODIzM2I3NjMzMzZiYTFlYTFjODgwZThjYTY2NzIxYmY0YmMgbGVnYWN5LXRydW5rCiszNzgwMyBkZmQwN2I3YmU0MDcyZjc5MzNmMTFhZjE1MTM5ZjI4NmQ1MmVlODVhIGxlZ2FjeS10cnVuaworMzc4MDQgNDYzYTAzYTVjYTIyODNlNmFiOTAzZTAzMzAyMGIzMzE5MmU0NGU1ZiBsZWdhY3ktdHJ1bmsKKzM3ODA1IDgyZDAyNTY0MTIzZGZjMmM1MTY4MjYzZjIxMzAzNjkwYTdiNTI4NDEgbGVnYWN5LXRydW5rCiszNzgwNiAzNTllYmM1NjA5M2U3ZWIyZjQ0OTVjZjQyZjc0NDViMWQ4YWM0ODUzIGxlZ2FjeS10cnVuaworMzc4MDcgOTYxNzljMDk2ZDY1YWRjYTNhOTY0MDA3YzE5MTU1NzMyN2ZkYzJmZSBsZWdhY3ktdHJ1bmsKKzM3ODA4IDkwNDc3MWJlZjNmNDdmZGJkMWY5MjcxM2IwZDg1ZWQ4YzVjZTE3OGUgbGVnYWN5LXRydW5rCiszNzgwOSBhZmVlM2MzM2FlNmQ4Yzc1NTkwYTgxNGUyMDcxZTg0Zjc0YmNkN2ViIGxlZ2FjeS10cnVuaworMzc4MTAgOGIyYTJmN2MxM2I4MGRjNzQ0YWI4NjE1YmUzOTcxMmRjOWZlZDJmYSBsZWdhY3ktdHJ1bmsKKzM3ODExIGYyY2UxNWIwMmJhM2ZlYmJkZmVjMjE4MDkzYmEwNjg2MGQ0YjYwYzkgbGVnYWN5LXRydW5rCiszNzgxMiBiOTgxOWI5YTBkYWQ1NDIxMTdlZWU0ZWQ2NzA2MDM1NDJkYTMwOGZmIGxlZ2FjeS10cnVuaworMzc4MTMgNjMzYmU0M2JlZDE3ZDAzN2JmYzlhMzZiNWRlMzA1NjNiNWFjYWEzNSByZWxlYXNlMjMtbWFpbnQKKzM3ODE0IGViMzQ0ZTAzY2M3MTI1NjJlZTEyODJlZjYwYzQzMDQzOTM0ZmExMTcgbGVnYWN5LXRydW5rCiszNzgxNSBiNGYwYWQ4MTU5YzczNGRmOTFiOTA1OTI4NjI0NTdiMzY4ZjA2MTg5IGxlZ2FjeS10cnVuaworMzc4MTYgZTFmMTQwMjYwOTQ3OGFmNzg2NDRiNTMwNzBlMmU1MjQ4ZWY2NzFlZiBsZWdhY3ktdHJ1bmsKKzM3ODE3IDBmZThhMTZhMzM2YWVhOGE0NjgxYjBkYzJiYWRkOTdiNjkwOTkxYTkgbGVnYWN5LXRydW5rCiszNzgxOCA3N2IxYzE1MTc0YjQ0ZGJmMTIxMTc2NWQ3NWUyNmZkYTQ3MzAzZTNiIGxlZ2FjeS10cnVuaworMzc4MTkgOTQyZjg3NDNhZGYwMjc4Yjc4ODJlMGU3ZTcwYTczZGZjNWQ3YmIwYyBsZWdhY3ktdHJ1bmsKKzM3ODIwIDRmNzQ1NmQwM2NiOWRlNjIzOTg1MGE2OWU2OWQ2NGQ1ZjdmOGU2YmUgbGVnYWN5LXRydW5rCiszNzgyMSBjODcxZWY5NjY1NWM4ZDM4YmRjOTQ0MzI5ZDA0OTI1M2JhZDI0Zjg4IGxlZ2FjeS10cnVuaworMzc4MjIgZGM4MDQ3NmI3ODJiNzkwZWNkYTQyNzYwODNiYWZhYmUwZmVkMzkxNSBsZWdhY3ktdHJ1bmsKKzM3ODIzIGNhZGQzZThkMzQ5ZjA5ZDNlYmI5MjFlNGIyYTBhNzU0YjYwOTIyYzQgbGVnYWN5LXRydW5rCiszNzgyNCA5NThkYzhiN2E4MjZhMTgwNWY5NWFmNWZmMGVmM2NjMjgwMmI1NzQxIGxlZ2FjeS10cnVuaworMzc4MjUgNDM3NTAwNmU1ZjA3OWY3MmI2YzljOTViMzhmNDRjMzIyMGQ0NzM0YyBsZWdhY3ktdHJ1bmsKKzM3ODI2IGZiZjMwNjQ2Y2QxMzY0MWZiNzk5YjU4ZjMzZTQ3ZGJiNTQ2NmRiY2UgbGVnYWN5LXRydW5rCiszNzgyNyBhOTFlOTJiOTgyYWNhZmYwMzhiN2Q1ODAxMDljY2U2NzJkZjdhMTQ2IGxlZ2FjeS10cnVuaworMzc4MjggODkzZDQ2NTc2NzM3YWJiYThjY2MzY2Q1NjRiMGMzNGQwNmFlNmU3ZiBsZWdhY3ktdHJ1bmsKKzM3ODI5IDA2ZWU1M2E3NmYwMTczYWMwNDBjYjk0MjVhMjNhMTBjNTUwZTdiMzkgbGVnYWN5LXRydW5rCiszNzgzMCA5YmQ5ODNjZmJlODFiYzg2NWI0ZjlkYTk5NDM3NDJjNmIyNTAzMTNlIGxlZ2FjeS10cnVuaworMzc4MzEgMDczOWYzNmFkNTQ0MTlhNDEzMTRlZDBkYmY1NGU3Yzg5NzU4OWUyYyBsZWdhY3ktdHJ1bmsKKzM3ODMyIGZlZmY0ZTRmMzQ1Y2E1ZTMzNmY3YjAwZWM4MDkxN2Q0NTk0N2UyN2QgbGVnYWN5LXRydW5rCiszNzgzMyAwMjM4MDEzMzIzOTU1ZWI0YmEyYTQxMjUwNzlmN2Y0MzllNmRhM2I3IGxlZ2FjeS10cnVuaworMzc4MzQgMjNiMTAzYWJiOGY3ZmE3YTc5NmZlMzg5NTAxODYxN2MxZjA4OGZiOSByZWxlYXNlMjMtbWFpbnQKKzM3ODM1IDUzYjNmNTNkN2EwZDMyYTlmNTUwYjk5M2IyYjcyZmEwNDA2ZTVkZGMgbGVnYWN5LXRydW5rCiszNzgzNiA0Y2I3YjkyMzY4MWU0N2FlYjZlM2U1MWJmNDQ5ZGZlOWVkYjU3MDQ0IGxlZ2FjeS10cnVuaworMzc4MzcgZDI1NjE1ZWY1ZDhmNjA1OTUxNjAzYTZkNWNmZmIyMDk4OTNiMWI2MCBsZWdhY3ktdHJ1bmsKKzM3ODM4IDIyMTNjZGIzY2FlNzkzY2IwZGQ2ZWFkMjhmMjRkOThiYWM4MGYxN2MgbGVnYWN5LXRydW5rCiszNzgzOSA0Mzk0NDYzNTEwZmIyZGI5ZTA5ZDhkNGI3ZDY4NGQ0NTBlMGVmNTY0IGxlZ2FjeS10cnVuaworMzc4NDAgZGNkYTA2Y2IwNzhhM2VmOTY5ODdiZTI0YTU4ODRiODA0NTBjZGNlZiBsZWdhY3ktdHJ1bmsKKzM3ODQxIDMzYTg0NmI3NzdhODkxYTkzYmMzZWIzY2VhZjdmMmQwOTYzNzVhNjIgbGVnYWN5LXRydW5rCiszNzg0MiBmOTI2MTZmOGMzM2M3NDUxMTE5ODI4OGMwNWUxYTI5MjJkNmQ4YmU2IGxlZ2FjeS10cnVuaworMzc4NDMgNDAwNWY3OWQyODFhZDBkZjI5ZmQ4MzI5OGJkNDE0OTcyZWVkMWQyMyBsZWdhY3ktdHJ1bmsKKzM3ODQ0IGVjMjk5NTViODU0MzViZjgxNjAyODMxZDk3ZDhhYjBhYjQ4YWVkZjggbGVnYWN5LXRydW5rCiszNzg0NSA0NjhhMTBlYmJjZDUwMWEwODRmZmZmNGMzZDI4YjBiZjJjYTI3OTcxIGxlZ2FjeS10cnVuaworMzc4NDYgNjUyNWUwMjhhZmIzYzljNzI2ZTg0OTg0OWUwZmE2MTJmNDkwMDljMyBsZWdhY3ktdHJ1bmsKKzM3ODQ3IDcwMTBhOTliNWU2MTI0MTc2ZWNlNDIxNjg4YWVkOTA4NTk1YmJmNzMgbGVnYWN5LXRydW5rCiszNzg0OCAzMmVkMjg2MWM5N2YxOGRkYzc3YzU4ZmE1Y2E2YmIxN2E4NjY2NmIxIGxlZ2FjeS10cnVuaworMzc4NDkgNDliNmU5NjZlNTdmMDg4NDZlMjdmNjJmMjIyM2E2ZDdlMjI1ZDA5NiBsZWdhY3ktdHJ1bmsKKzM3ODUwIDQ4OTY1NmRiZGY1YTdmMzExM2Y4Y2ZmMDJkNTJkYjgyZTI2ZTdlNjYgbGVnYWN5LXRydW5rCiszNzg1MSBhMDUwODVhNjNkZWM4MzY0YjE3NGU5YjI4M2MxZTJmOWQ4YTk0OTM0IGxlZ2FjeS10cnVuaworMzc4NTIgNGYyYmJkNDcxYTIxYzU4MTM4ZDBjYTYxYTEyNGJlMjRjN2MwYjU1OCBsZWdhY3ktdHJ1bmsKKzM3ODUzIDcxMzcyNDQ5NTgyZDMyNjg1NjQ3M2FkNjA3NmVjNTZmMWIyYzY0YTggbGVnYWN5LXRydW5rCiszNzg1NCBmMTNjZTBiYjYwNmMwMmQ5NDQ4NTI0MzMyOTMyYTNhZTBhZjJiMTc0IGxlZ2FjeS10cnVuaworMzc4NTUgYThkZTIxOTVlZmQ2NmJkZDg0MGZkNmMwMjRjNTY4ODBlOGUwM2IxZSBsZWdhY3ktdHJ1bmsKKzM3ODU2IDY3NzFlMTg0MGJiY2JmMDNjMTg3YjAyOTM4MDMyOGMxMTU5ZjlmYmEgbGVnYWN5LXRydW5rCiszNzg1NyBiNGFkYjEwMjExMDMwYWIyNTA4YzVjYTI5MGJlMTYzNmQxZmU1ODIyIGxlZ2FjeS10cnVuaworMzc4NTggYjg3MWI5NGYwN2I2ZDZmM2ZhYWM5NmMxNGVmNGJmNDVmODI1NWQ2ZCBsZWdhY3ktdHJ1bmsKKzM3ODU5IDM2NTYzOGRjZTVmMzQzNjAyOWYyOTExMGQwNDBjN2JlZGUxY2VmNWQgbGVnYWN5LXRydW5rCiszNzg2MCBlMDFhMTdiY2RmMjhlZTg3Y2NiZjk2YWQ2YzNiMmMxY2NiMmNhM2ExIGxlZ2FjeS10cnVuaworMzc4NjEgZjUzMTEzMDNhMzU3MDAyZDYxZjYxZmQwYzJmMGM5YTY5YjBhNGQ0ZCBsZWdhY3ktdHJ1bmsKKzM3ODYyIGI0OGNhOTZlYjQ0MDhkY2NkZmM1MDY5YWQ4YjY4ZjliYmE3OWNlYWYgbGVnYWN5LXRydW5rCiszNzg2MyA5YTEzMDlhOTBiNWRmNmQwZTRmZjA1MjRiNTNjZGE5NjgzNWE3OWVjIGxlZ2FjeS10cnVuaworMzc4NjQgYmFlMTkxOWY4NTQ4MWRiZjYwZjA5YmFkZjQ1NDRjZGY1ODE4OTBjZCBsZWdhY3ktdHJ1bmsKKzM3ODY1IGEwMGNkNjcwMzQxYmE3ZmVjZjg5ODM1ZDY5MTQ3NWFhMjgyMDc3ZGMgbGVnYWN5LXRydW5rCiszNzg2NiBlYTk1N2Q5YjM2OWNkOGRkYzM3MGZjZTMyNjhlMWI4OWNjNWNlZDY1IGxlZ2FjeS10cnVuaworMzc4NjcgMzFlNGRhMTY2NGI3ZWY2MDU2N2ExNTgwNDU4MWIwNDBlNTYyNmNjOCBsZWdhY3ktdHJ1bmsKKzM3ODY4IGQ1YmE0ZjMwNTBiNTg3MGUyOWVhNTdjMWI2YTJlMDlhNDNlZjNmNDggbGVnYWN5LXRydW5rCiszNzg2OSA3ODczOGE4OWIyMjMxMWRiNzEyNWYyMjdiMGZhY2RlMTBkMmYxOTYzIGxlZ2FjeS10cnVuaworMzc4NjkgZmY4MGQ4YmJlZjZlMTM0MjZjOGE4NWQ3ZjlkODM3YjhmOGY4OTgzNCBsZWdhY3ktdHJ1bmsKKzM3ODcxIDIwOTU1MDI1NmE3NDQxNjAxZmFiYjE3YmNhOTMyNmRhNDJkODE1M2MgbGVnYWN5LXRydW5rCiszNzg3MiBlZjdhMDJiMThlY2NhMzk5ODcwNmFhNDZhNzEyMDI3YTg5YWM5NTVjIGxlZ2FjeS10cnVuaworMzc4NzMgODIwNGE0ZDIwMTJjYjcyZGY0MmNhZmI0ZTA0YzgwOWU2Zjg4YTRkNCBsZWdhY3ktdHJ1bmsKKzM3ODc0IDcxOTMwZDdiM2I4YTI0ZjI0Nzc4OGNmMWIzNzZmNzI4MWIwYWRhMGIgbGVnYWN5LXRydW5rCiszNzg3NSA5NmY2MmM2Nzk4ZTgxYjExMTNmM2UzM2JmMGM5YjkyNTgzMDdjM2JkIGxlZ2FjeS10cnVuaworMzc4NzYgOWIwYzViZjQ3MDBjMDg0MzBlNTQ3NWMxZWM5ZGZmY2Q4YjNmNmZlNSBsZWdhY3ktdHJ1bmsKKzM3ODc3IDhkYWE1YTQ0ODQwM2E5ZmQ1OGU2MGM4ODY1OGM1ODA2MThlMDVjZGQgbGVnYWN5LXRydW5rCiszNzg3OCAyYjljMmVkNWE3NmJmZjdlM2FiMDMwYjQzNTlmZWZiOTFhZWQ1Y2MxIGxlZ2FjeS10cnVuaworMzc4NzkgMjY0ZTQ1YmFhY2Q1MzMxYzE4NDVhNWEyMjYzMzk5YTIwOGYwOTE0MyBsZWdhY3ktdHJ1bmsKKzM3ODgwIGU5NTk5ZDlkOTFjNmU3MDdjMjJiMWJjYjgwNDVmMmNiYjU0YzM2MWUgbGVnYWN5LXRydW5rCiszNzg4MSA2YmQ4MDIxZjc0MWNiODk4MWU2Y2MwMDQ5ODQ1NWRiMWNmMjM3NDE3IGxlZ2FjeS10cnVuaworMzc4ODIgYmRkMTRhYjZjNWNmMTViZmU3YzE5MGRiMWI1NzRlMzJiNzhkMGM2ZCBsZWdhY3ktdHJ1bmsKKzM3ODgzIGJlMzcwYWJiMDIwZjljOTc1YmRhNTZmYWI5NDI5ODE1N2YzYmM0ODggbGVnYWN5LXRydW5rCiszNzg4NCBjMTBhZGJhZDQ0ZmFiOThjMjdmMjIzYmIxYWNhM2NiMzNmMDhjMTZkIGxlZ2FjeS10cnVuaworMzc4ODUgMTU3NmU4NDVjNTdiZGFkZWM3N2Q0NTM4ZjNhMzY0NTlkMDc4NTIwMCBsZWdhY3ktdHJ1bmsKKzM3ODg2IGE4ZmY2ZWQ4NTZlODkzYjQ3ZjM0NzRkNDcyNTg5MmU5NjM4YjE1NzcgbGVnYWN5LXRydW5rCiszNzg4NyBjMTQ4M2YwZTgwMGQwMmU4ZWMwMTA5MDYwMDQ5YWJiNjkwOTk2ZjYxIGxlZ2FjeS10cnVuaworMzc4ODggN2Y5NWZlOThkODIxNmQyMTY4ZTg0YzNkYjhjN2I2Yzk4ZmQxOTE4MyBsZWdhY3ktdHJ1bmsKKzM3ODg5IDcxMzU4ZjY1NzViNmFmZTBlZmQxNTM0Yzc1N2U1MzBlYTI4OGUwZmUgbGVnYWN5LXRydW5rCiszNzg5MCA3ZTk5YjA2ODBhZGYxMTMyMTJkYjhjYzg3ZTI4ZWNiZTgxZTA1ODRkIGxlZ2FjeS10cnVuaworMzc4OTEgOGRhNTdjMjhiOTEwZjUxMzgyOTFiODg3NDM5N2VjYjA2YWVkNzY0YyBsZWdhY3ktdHJ1bmsKKzM3ODkyIDgxYTFmNzU0ZDMyY2QyMDhmNzM1MDFlYmFlNDMwZThkZGZhMDQ2MzQgbGVnYWN5LXRydW5rCiszNzg5MyBjODhkMTg0MTgwNTNiNTRiMzQ1MDMwZGNhZDJhZDZiZDBlM2Y0Mjg5IGxlZ2FjeS10cnVuaworMzc4OTQgNWJlMzFhMjA3ZDg2ZDdmNGVjMTViMWQ0N2M3NDg4MDRlOWM4MWI4NSBsZWdhY3ktdHJ1bmsKKzM3ODk1IDdhNWE1NmExNzM3NzU5MjZlOWQzYmUzNWU4NzViNTY2NGJiNTIxY2QgbGVnYWN5LXRydW5rCiszNzg5NiAxNjM0MDlhNjAxYmVmNDFjYmQ3ODkyM2IwNjNkYjNlMTRjOTdiNjljIGxlZ2FjeS10cnVuaworMzc4OTcgMmM4M2I2MjJhM2VlNjhjNWE5OWQyNmY5NGY5N2QyNmJmOTBiYzM1YiBsZWdhY3ktdHJ1bmsKKzM3ODk4IGM5Yzc3OTQwNjBiMGU2ZWRiOTMxN2QwMjhkYmE0MDA3NGQwYTFhOTggbGVnYWN5LXRydW5rCiszNzg5OSA3ZTk1NWU5ODdkNjljYTdkNzIzMGI1Mjk1MGYyYmIyYjlmY2VhZDA1IGxlZ2FjeS10cnVuaworMzc5MDAgZDMzYjNhMmIwOTRjYjgzYzhjOWQwOGRhNjZjNGQ3MmExMWJhNWM1YSBsZWdhY3ktdHJ1bmsKKzM3OTAxIGQwNzE2YWIwM2Q5ZGRjNDUwN2I4NzExNDczMzQyMjlmNmM2YjAzZjMgbGVnYWN5LXRydW5rCiszNzkwMiA2YTgwNmZkYTY2OGQ2YzVmNGFlMjM5MDg4ODkzYzhmNDgzMmRhYmE0IGxlZ2FjeS10cnVuaworMzc5MDMgMjgzMGU2Y2I0MTU3NjViMTUzZTYzYmVhN2YxM2Q2YWEzM2VjOGU1YiBsZWdhY3ktdHJ1bmsKKzM3OTA0IGZiZWE3MTQ4MDJiM2RhOTYyMGE1MTEwNmQwZWZiMzU2OTQwYWYzZjcgbGVnYWN5LXRydW5rCiszNzkwNSA3YTEyOTA0NDM4ZDZjYTc5NzEwNzFlNTJlYTVkMzRiZmQ2ZDg1ZThhIGxlZ2FjeS10cnVuaworMzc5MDUgZjMxZTE4ZDMxM2M3YTRmYzY2OTE0YjJkMjdlMTMwYTBmNzJjMGI2OSBsZWdhY3ktdHJ1bmsKKzM3OTA3IDcxNjMwN2Y3ZTYxN2M0MTg1MTNhZjBiOWNhMTFiZGFkYTc4MDk1YjEgbGVnYWN5LXRydW5rCiszNzkwOSA2M2FmYzJkMWIwZGEzNzIyZTMwNThmZmY2MjI5NmUwYTgwNDYwMTgyIGxlZ2FjeS10cnVuaworMzc5MTAgY2YzZjhiZWU3ZjdhYjEyYTkzYmU0NzI0M2E2NTJhM2U4MDVjMTFkNiByZWxlYXNlMjQtbWFpbnQKKzM3OTExIDJlY2RjODNmYTg2Y2QyYjkzYjExZTUwZTAzZDE4NzJiZGY4OTU3OGUgcmVsZWFzZTI0LW1haW50CiszNzkxMiAzODQzMmFkMTFjMmE0MjI2YWU2ZjMyOGY1Mzk1ZjBhYjNjNmU2ZmZjIGxlZ2FjeS10cnVuaworMzc5MTMgYWVkMWZlZDM3YWQ1ODY1NjczZmNhMDY5YzVjM2M4ZmFlMmY3NzllNSBsZWdhY3ktdHJ1bmsKKzM3OTE0IGZkMWJlNDk0YzMxYjYzZTYxMTAxNWQ1YWU0YjUxZDdjNDM0MWE5OTIgbGVnYWN5LXRydW5rCiszNzkxNSA4Y2VjYjhkYzQzYTM4MDdiY2YzYWU5NTY1NTliNDgzNDg0ZmY2ZDg3IHJlbGVhc2UyNC1tYWludAorMzc5MTYgNzlkMmFlMGE2MmVmZWI3NDBkNjRmZGYyMDRlYjZlMjUwNGVjN2Q1ZSBsZWdhY3ktdHJ1bmsKKzM3OTE3IGE2ZTI1MWRlNWU0MWJkZDgyZDg1NjdmNzUxNTYzZWI2OWQ2ZDRkNWIgcmVsZWFzZTI0LW1haW50CiszNzkxOCA3MDI2ZDAzODUwODExNzIwYmFjZDViNmFmMDI1Y2Q5M2Y2MzJjYjA4IGxlZ2FjeS10cnVuaworMzc5MTkgMWM0ZGJlNGEwNmJkMDU0OWMwYjQzNTljNDkxNTIyNTdkY2JhZDAxYyByZWxlYXNlMjQtbWFpbnQKKzM3OTIwIDIxN2Q3NDEwNDljMGQ2MjZmNDdhYTUzMjcxYWQ3ZmI3ZDU2NjY3OWYgbGVnYWN5LXRydW5rCiszNzkyMSBjODcyNjFjZTdhYzkzMjc1NGM2ZTllN2U3ZjNhNGJkNTE1NjZiNGU0IGxlZ2FjeS10cnVuaworMzc5MjIgOGVhZjgwOGZkOTgwYzEwN2VkNDQ3OGRmYmI5Y2Y5NTkwYTdlZWRjNiBsZWdhY3ktdHJ1bmsKKzM3OTIzIGU0MzUzMmI4NDhkNzVkODAzYWVlZDZlYjQ3ZDM0NmZhNzg3ODFjNzcgbGVnYWN5LXRydW5rCiszNzkyNCA3ZTY0ODJhYjk0NTVkYTE3Nzc1MzRlMjBjNDE5N2I1YmY2MDE1ZThhIGxlZ2FjeS10cnVuaworMzc5MjUgNmJmYjBhYjg4M2YyMGY3NmJjZjQzZTIwM2Q3ZjY2MGQ1NDliOTkxZSBsZWdhY3ktdHJ1bmsKKzM3OTI2IGRhOTY3ZmI3YTdmYjRmNDNhMTU4YTlkOTQ4M2E5YmE3Njk3OWE2MmIgbGVnYWN5LXRydW5rCiszNzkyNyAxNzJiNDdmZjJlNGJiMzgwYmVmN2FhZWViZTI0ZjI2ZGIxNGI4YTkwIHJlbGVhc2UyNC1tYWludAorMzc5MjggY2VjMzFlZGVhNDE0ZmVmNGU5MjA3ZWJhZmNlNTZhNjU3MWY0OGFkYiBsZWdhY3ktdHJ1bmsKKzM3OTI5IDRlMjU0ZjAyOGI3NmZjMWJhYzRjZDhjODBhY2JhZGQ3NDZkODk3NDcgcmVsZWFzZTIzLW1haW50CiszNzkzMCAzM2Y3NDhlNWQxNDIxYzgwMzU3MjE4MTg4Y2FlNWVmMmE4ZGFhMzJkIGxlZ2FjeS10cnVuaworMzc5MzEgOGM4MDIyYjgxZjAyMGE2ZWNiY2YxZTM5MDBkMDkzMDU0NTkwZjU3ZSBsZWdhY3ktdHJ1bmsKKzM3OTMyIGFiZTNlZTVmYzZjMzdkYTBjODZlM2MzODI2YmQyYjI5YzMxOGZmOTkgbGVnYWN5LXRydW5rCiszNzkzMyBmMThhNGQ5MzcxNDJhMDUyZTgwY2Q3NjVlNTUyNGVhMDExNDcyNWJkIGxlZ2FjeS10cnVuaworMzc5MzQgOGJmNzY1YjQ4MGI4MGY5YTBiZDBhZTA5MWI3OWI0NDQ5NTM5ZmMyNiBsZWdhY3ktdHJ1bmsKKzM3OTM1IDUwZTBjMzQ1ZDQ5YjNiYjdiZjA5NzI0MzA4ZmNjNDg2MWI0YWU4ZTkgbGVnYWN5LXRydW5rCiszNzkzNiA0YzgxMDZjMzU4Y2UwYjhkOGE2M2UwMjMyNDhlNGFhNTA2YjYzZjA1IGxlZ2FjeS10cnVuaworMzc5MzcgMTU3ZmFlNzY5NTM2ZTYzM2E2NGJmNjkxYzQxZWIxOTI4YWE1YjgwNyByZWxlYXNlMjQtbWFpbnQKKzM3OTM4IDYxMTU2MWNjZTc0MGZmYzhmODdmY2M5ZDJlYjBiOTE5M2U5NWJkZjEgbGVnYWN5LXRydW5rCiszNzkzOSBmYmY2ZTA0ZGVmNjkwMjRjMjQ0NDkxOTVhZTUzMTA5YjI3OWQ1YjkzIGxlZ2FjeS10cnVuaworMzc5NDAgNDNjMDBmMGU2MzA1NTU3N2U3MDg1MzQwNGQwNDQyZjRjYjkwZTFhNyBsZWdhY3ktdHJ1bmsKKzM3OTQxIGY3MzI4MDk2ODMyMjc5MDgxYjg4YTcwZWUzNjYwMjI0YzM2NDVlNmUgbGVnYWN5LXRydW5rCiszNzk0MiA0YjYwMWJkMzQ2YTRmNDNiMTM4YzNlOGJkOWZkYjg0MGI3NTk2ZTEzIHJlbGVhc2UyNC1tYWludAorMzc5NDMgYzRiMTNmYTE4YTEwM2RhMTdmODU4YjM2NTQ2ZmM4MjVjOGEwMDhiYyBsZWdhY3ktdHJ1bmsKKzM3OTQ0IDYwOWJjZGFlMTA4YTY1NzgzMWIyNTI5N2VlZjkwOTJmNGE0MjdlZWEgbGVnYWN5LXRydW5rCiszNzk0NSAyMzk5NjMyZmQ5ZTBlMjdmNzBhODhmOTRjOTk5ZWUyNzNiNjA1MjRhIHJlbGVhc2UyNC1tYWludAorMzc5NDYgZDJmMjZlYWFjZTJjMWYzMjAxMTVhMjNhMTYyNmYyNWRlY2YyMDFlYiBsZWdhY3ktdHJ1bmsKKzM3OTQ3IGQ2MjAzZmJkYTI1MTdkMzg5NDI2OGZiN2RiOWJjMWY3MjYyZDNlNzggbGVnYWN5LXRydW5rCiszNzk0OCA2ZTBkYjA3ZmJmOTE4NWQ5MWMwZTg0NzIxMzFjYzIzMDkyNTM1MmU0IHJlbGVhc2UyNC1tYWludAorMzc5NDkgY2M5Y2U2ODM3ZWE5YjczZWM0ODAzNmJjMWVlZDcxY2M1MzQ5NTM1YiBsZWdhY3ktdHJ1bmsKKzM3OTUwIDk1ZDI3NmQ0ZjllNDY1Nzk2YWVkYWI0ZGMxZDE1MDUyMWFkODdmNDMgbGVnYWN5LXRydW5rCiszNzk1MSA2MjRlOTYzNWMzYWQxMWQ3MjljNTI4NjBhZGQzMWUyMzBjNjc5YjJjIGxlZ2FjeS10cnVuaworMzc5NTIgZjAyY2QwZDRhMmEwNWE3Yzk0NjljODZjMjY0ODc4MjkwYmQxZDlmNCBsZWdhY3ktdHJ1bmsKKzM3OTUzIGVkYzIwZDUzOWExODE1ZDU4Mzk0ZDgzZmU4NWFjYTE4Yzc2NTBkYTcgbGVnYWN5LXRydW5rCiszNzk1NCAxNzVmNjEyNTU0OWNhZDcxYjhhYjUyYTE0ZDA2NWRjMTNmYzRhZWZiIGxlZ2FjeS10cnVuaworMzc5NTUgMGVjMzQ0NjYzZjZhOWVjZjg4YjMyYjk3Y2RkMTA2NmY1NGU2ODQ2OCBsZWdhY3ktdHJ1bmsKKzM3OTU2IDhjZDMxNzZmZDZmMDMwYjYwNDIxYWQwNDhlZmFkNWMxMzIyMjQxZTcgbGVnYWN5LXRydW5rCiszNzk1NyA4ZjkyOTUxMzk5M2M5MWRmYzY0NmFlZTA3NzJlMGU3M2M4ZWZjYThkIGxlZ2FjeS10cnVuaworMzc5NTggMjRmMGRhOTIwMDEwNDRlODI0OWIzNDk3YjBjMDdkODY0ZGMxZGMxMiBsZWdhY3ktdHJ1bmsKKzM3OTU5IDUxNzJjMjhjMGIzYzhjOTgyNTA3ZDYxMjEyZTJhNTIxOTkwMjk5NzIgcmVsZWFzZTI0LW1haW50CiszNzk2MCBjZjU1NWVjNjk4ZWJjZTRmZDZkY2NjNjNiYmFhNTE1ODIzNzBlN2M0IGxlZ2FjeS10cnVuaworMzc5NjEgNTNjNmE5NTlmOWNmZDVlZDhmMDNhZGJjNTYyMmQyODIzNWY1YTFmMiBsZWdhY3ktdHJ1bmsKKzM3OTYyIDBkZmU2MDhlZWNmYWMyMGNmNjk5YmI4NGFkNjk3Yjc5ZDQzYjI2ZTkgcmVsZWFzZTI0LW1haW50CiszNzk2MyBiOTY2YWFkZTU0OGNmOGIxM2E3MGU0NjA1ZTE5MDM3OGU4NWE3YjdlIGxlZ2FjeS10cnVuaworMzc5NjQgOGZkNzY2YmI3NmM5ZTQ4ZTEwMmQ1NDRkMWQyODllYTBlMjlhOWRhMCBsZWdhY3ktdHJ1bmsKKzM3OTY1IGY0MDlkNGM2ZGM2MDQxZWI1NGY0YWNiMzNjOWYxNjA1ZjNkNjZjOGMgbGVnYWN5LXRydW5rCiszNzk2NiBjZGRkMDE2YWUwNmFjZmU5Y2MzOTRjMzAzODg4NDU0NzY4MjRhY2Q3IGxlZ2FjeS10cnVuaworMzc5NjcgMGY1NmE2NjU1ZWJmYTI4MzAxYTZmMjAxM2Y1YzA0ZmY2MjY2ZTMwMiBsZWdhY3ktdHJ1bmsKKzM3OTY4IGVmNmQxZTVlYjRkMzI5ZTNmOTJjZDZmMWZkYjUyOGYxZTA2MDUyYjMgbGVnYWN5LXRydW5rCiszNzk2OSAyNTU3MWVhNWVjYTYyZjA4NWI4YTAxNzcyNWYwNGQwMWFjMDg0ODlmIHJlbGVhc2UyNC1tYWludAorMzc5NzAgNjk4OTA5MmNkOTZkNWNkOTMzMTQ5MDY1YjNkNWE0ZTExN2ZkZDU1ZSByZWxlYXNlMjQtbWFpbnQKKzM3OTcxIDQyMWE1ZGY1MDhiODc3MDNmMjdlYThlYzZiODhmM2Y0OWVjODRlMTcgcmVsZWFzZTIzLW1haW50CiszNzk3MiAxZDFkNjM3N2FjYjEyM2QxOGM4MmMxNjlhNzMzNzcwODVhY2UzMzM4IGxlZ2FjeS10cnVuaworMzc5NzMgOTU3NDI5YzQ2YmJmOGQ3NTBlNzZhOGM5MGY3OGFlMDU2YjFhMmI4MyBsZWdhY3ktdHJ1bmsKKzM3OTc0IDA1ZjhhNGZlYzM1NjI5NDZmYWZmZTU1M2RhNTk2MzVhNjVlODc1NDggcmVsZWFzZTI0LW1haW50CiszNzk3NSA3M2IwOWMyYjc4OGI4YTIyMTJkNGUyNjVmZWU4YWI5OWZmOTU1ZmJiIGxlZ2FjeS10cnVuaworMzc5NzYgMWQwNDkzNmE2NDU2YTA0YTlmZjEwYzI1OTU1YTljODBhZWU0YTNhMiBsZWdhY3ktdHJ1bmsKKzM3OTc3IDljMWViMzNmZTExMGJjY2QzZDllNDk0MTExNjg2ZjJiMjY5OWVhZTkgbGVnYWN5LXRydW5rCiszNzk3OCA5NjcyMWEwM2FlMzAwMjRkNmVmMWJiODE1ZTEyZGUyNzcxZmFjYWZjIHJlbGVhc2UyNC1tYWludAorMzc5NzkgYWI4YjBiNzMxNzE3YTU4MDMwY2I4MWE5MzlhNTgzZWNkZjc4YmY2ZiByZWxlYXNlMjMtbWFpbnQKKzM3OTgwIGYwZmM2YmVmYjA2MDdhMzFhNzhhMjZhOTU0MzZkZTM1ODNlMzIzNTIgbGVnYWN5LXRydW5rCiszNzk4MSBjY2M1MGUwYjQ2NmQ0ZWNkOGQyMDBjNGFlMGMxMDY0MTJkOThkODFhIHJlbGVhc2UyNC1tYWludAorMzc5ODIgNDk3OWE0NDM0NTQzNDA5NmYwOTBlZjRlMmFlYWM4MDM5OTg2ODgzNSBsZWdhY3ktdHJ1bmsKKzM3OTgzIDYwZDQ4MmU4Zjg0NTAxN2MwYWQ1NWE5N2NkODE3NTM2MWQ0MDBhM2UgbGVnYWN5LXRydW5rCiszNzk4NCAxNTMxYjI1ZWJkY2QzYmYzNjA3NmQ0ZjY2NTE1N2I3YTJmNzg3OGJmIHJlbGVhc2UyNC1tYWludAorMzc5ODUgZTQ2Zjk4ZTczZTUyNzJhYzA4MTZmZmI3NDc1YjkzY2E4MDBlNWUxYSBsZWdhY3ktdHJ1bmsKKzM3OTg2IGZlZDVhNzM0NDY1ZDM2NGY3NzUwNWU3YThlMDZmOTU3OThlZjdmOWMgcmVsZWFzZTIzLW1haW50CiszNzk4NyA0ZThmYjEyZjgzNzg3MjJhYmEwNjg5YWFkNmNmOGZkNjZjMWYxOTMxIGxlZ2FjeS10cnVuaworMzc5ODggNGUzOGVjZDE5MTJlNGE2NTYwYTMyYTQzYmVhMTkzZmI5OTg0NzgzZiBsZWdhY3ktdHJ1bmsKKzM3OTg5IDFhOTM4ZjQ1NjA1Mzg1MTEwMmM3ODNhOWNkOTVkYjVmYjJiZGM4ZmEgbGVnYWN5LXRydW5rCiszNzk5MCA3OTA2NmVhMzhjNTAzMTNkMjFkYjQ2MDY1OGYzNTA2ZWQ5YTYyODk0IGxlZ2FjeS10cnVuaworMzc5OTEgNGRjZDc4ZjNiNWQxYmExNmI5ZTMxZGQwOTA5MTc0MjhhNjlmOTY1MSBsZWdhY3ktdHJ1bmsKKzM3OTkyIDcxMGIwYjBlMDdlZWQ3MmEyNDA3NzQzMTQ2MjUzNTgwNGRjMWRlYTEgbGVnYWN5LXRydW5rCiszNzk5MyAwMTViODkyYzk4ZWUyNDY2YThiNDNkYzJhZDc4MjIwMjgwMjJhMzU0IGxlZ2FjeS10cnVuaworMzc5OTQgY2U0YmZiZDlhMTZjZDU4OGEwYjdmZThkZWIzNDE3MDRhYWE1MzA3NSBsZWdhY3ktdHJ1bmsKKzM3OTk1IDU5MTJiNDE4MTU4NDYxOWU3YzVjN2E5ZGFmNWEwODZlNzgwNGQwNjIgbGVnYWN5LXRydW5rCiszNzk5NiBhODU3YzI1YTM3Yjk2OGY1ZmExYjU2NjY1ZjVlODdjZDZiY2M5NWI5IGxlZ2FjeS10cnVuaworMzc5OTcgMGE2ZGQzZjJhYmM3ZDM4YzlmYTczMDM1NzRlMzg2YmEwMDBjNmIyOSByZWxlYXNlMjQtbWFpbnQKKzM3OTk4IGFmZTkwZTllNGI0ODRkODc5YWJmMjM3NDM3YjFhODQ4YTRmYWVkNzggcmVsZWFzZTI0LW1haW50CiszNzk5OSA0OTI2NTM4NTc3ODJmZTYzYWNhYmZmN2IxZjM2Yzc3N2FhNzdlYzIyIGxlZ2FjeS10cnVuaworMzgwMDAgMjFhYmVjZWFhYmFkNmQ2MWI5Y2E1YTA4OTM4NGIwYjk3ODkwZGIwZCBsZWdhY3ktdHJ1bmsKKzM4MDAxIGYwNWRkMTgxNmMxZjdjZGY1YTQ2OGVkMTgxMzA4ZDM5MTA1MDRiYmUgbGVnYWN5LXRydW5rCiszODAwMiBkMGEwOWM3OTc0MDk2NGUyMGYxOTcyMmVmNjgzNjY3Y2M2N2E3N2MzIHJlbGVhc2UyNC1tYWludAorMzgwMDMgZGI4ZjY5OWZmNzgyNWY3ZjE3ZjVkZDZmZGE3MWNiMDA2MjJhZDM3ZSBsZWdhY3ktdHJ1bmsKKzM4MDA0IGIxMzJiYTkyNTlhYjE0ZjVhNGVlN2U5MzU1NDY5NzVjMDA3ZDcxNTUgcmVsZWFzZTI0LW1haW50CiszODAwNSA3MWQ3MTBlMzM2ZGZjYWI5OTU2NTI2MmI1MjJmYzcwNDNiMzExNmE4IHJlbGVhc2UyMy1tYWludAorMzgwMDYgYmVkYjM0MGYxMmY5NzBhMDI4MDM0ZDIxZjg2OTY0ZDJkODFmNTMzMCBsZWdhY3ktdHJ1bmsKKzM4MDA3IDc1MmZhODZmMDZkMjVjMzAzNThmZDQ0MmY5MGYyOTJlMmZhYjVjMTEgbGVnYWN5LXRydW5rCiszODAwOCBjMmViYTA0ZTMwNDE1MTA4M2JmYWU5ZDM4NDg0OWRkNGY0ZTZjNTdjIHJlbGVhc2UyNC1tYWludAorMzgwMDkgNzVmM2E1MWE0ZTMzZGI2NWZkOTNjZjU0MmVlZjZkN2E4NzJhM2RjZiByZWxlYXNlMjQtbWFpbnQKKzM4MDEwIDE2ODAzYjAzOTY0ZTRkNTJhNTY2MGRjYjZlYTk1MGY3OTk4NjI3NzcgcmVsZWFzZTIzLW1haW50CiszODAxMSA2NTc0YzUxNWUwMzU2NmJhOGI2Mzc5M2EzOTU2MWVlY2JkMTI2Y2Q0IHJlbGVhc2UyMy1tYWludAorMzgwMTIgYmU0NTBhMzM1ZTk2OTZlM2RiMWRmZmE2OTBkMzczNjkyY2UzM2VmMSBsZWdhY3ktdHJ1bmsKKzM4MDEzIGE2NTliMGNlY2I5MmY3ZGUzNjgxODRhNzYwYTA3OGE5ZGI4MmE5ODIgbGVnYWN5LXRydW5rCiszODAxNCBlNjkyZTc3Y2FkNWQ1YTQzZDVjZTc5YjkxYmZkNTg1MWY4ZTI4YmExIHJlbGVhc2UyNC1tYWludAorMzgwMTUgZGU0NzAxZmMxNzZmOWU0MDA4ZjUwMzZmNDJmMTRkYjEyZGU2MmM2NSBsZWdhY3ktdHJ1bmsKKzM4MDE2IGJiZGFhY2M0NGY2ZjRhMGIzZjljZTgzYTM1ZmRmZTE2YmFiYTg4NTkgbGVnYWN5LXRydW5rCiszODAxNyBhODY4NjZiYWMzNjZiOGQ4YWNkNDU5Y2E4NWUwYzQwOWZkZjNjM2FhIHJlbGVhc2UyNC1tYWludAorMzgwMTggNTFiMGQxOGRhNDQ3YjczNTMxMzE3N2FkZmNjMzIwZGQyMWM1NTNkZiBsZWdhY3ktdHJ1bmsKKzM4MDE5IGMyOTRiMTEzMjNkMTdhNDdkMjMxZjY4ZjUxYzhjYThlMjM5NTRkODAgbGVnYWN5LXRydW5rCiszODAyMCAyNTg1NjBhZGM0M2IzMWI1ZWY4MGU1MjllMWUxYWE0MzdmZjEwZTQ4IGxlZ2FjeS10cnVuaworMzgwMjEgZjFlZGI0N2NlNGZhYjQ2YjlkOGVjMDQxODZjNzMxYWRkYmZmMzQ2MCBsZWdhY3ktdHJ1bmsKKzM4MDIyIDM2MjZkYjQzMzEwNGUwNzFkMzM5MWVmNGZhNDQyMWQwMDNmZGRlNTAgbGVnYWN5LXRydW5rCiszODAyMyAwZjAwNzI3YTI3YjMwYmU5OTIwNzFlNWJkYmFhMjFkZjA2MDMwMGYzIGxlZ2FjeS10cnVuaworMzgwMjQgNjk2MTFjN2NkMjNiZGY0N2M0MDY2NTAwZWFmMWM0ZmI4YWQ3MTVmYyByZWxlYXNlMjQtbWFpbnQKKzM4MDI1IGNhMmNhMWFlYjA4MDUzYjY5N2YyY2RkZjdmODQ4OTY5MmFhNDk1YWYgcmVsZWFzZTI0LW1haW50CiszODAyNiA4YjExNDRiYTczNGVmYWUxZmZiYzU0MGZjYWNkZWI3ZTY1MGY4MmVmIHJlbGVhc2UyNC1tYWludAorMzgwMjcgY2I1NGYxMTUzYjkzNTRlOTgyZWU5YmY0MmEwYjA2OTNlOTY0MmFhMSBsZWdhY3ktdHJ1bmsKKzM4MDI4IDVlYTAyNWM0MjFkN2JiODc3N2Q1MzI2MTAxZDk2N2QyMTMwMDNiNmQgbGVnYWN5LXRydW5rCiszODAyOSBjMjBmNWIzOGZhMjA5NjRhZDcyZGY1Y2JlMThjZWFjNjA4MzRmNmI3IHJlbGVhc2UyNC1tYWludAorMzgwMzAgZTUzNjkzYTAyY2YwNTVkMGRmOTI2MjZmYTZlYzg5Mjc2NGEyNDc2YyBsZWdhY3ktdHJ1bmsKKzM4MDMxIGZkZWNiYTI2ZmM4N2RiZmVkOWVmNDUyMjQzMjcxZjQ2YmQ1MzMxMjUgcmVsZWFzZTI0LW1haW50CiszODAzMiBiM2FmYzAxYzA1YTA1YTU2YTNiNDYwZGFiZWNhMDk0YjgyZGE2ZmM1IGxlZ2FjeS10cnVuaworMzgwMzMgZGI5YjY0OTM5ZDQ1YzcyOGVkYzQ0ZDlhY2JjNzBiZjMwMzQwNzVkZSByZWxlYXNlMjQtbWFpbnQKKzM4MDM0IDgwZjAxZmRiZWRlYmM0OThiMjk3YjIxOWRmMzBlNzhjNDJiZTE4YzUgbGVnYWN5LXRydW5rCiszODAzNiA2YzAyZmY5MDJmODIwZDYyZDg1MzRiNTMwYjBjMWFmMDcyN2NhOGEzIHJlbGVhc2UyNC1tYWludAorMzgwMzcgMTMwMjFkMzUxMzU4NjNkNWNmMTY3ZGNjNzhkY2Q1ZTkyMzZiNzEwYyBsZWdhY3ktdHJ1bmsKKzM4MDM4IDIxNDRhMzUyYWEzN2ZjMGIxY2E3NzEzMDFiNTZmZjFhMmMyOTliNTkgbGVnYWN5LXRydW5rCiszODAzOSAzMGI5N2MxYmIxMmRkZjMyZjllYWI0M2Q2ZjdhOWI5ZjA2MDRmMzljIGxlZ2FjeS10cnVuaworMzgwNDAgOWMzYTY0YzI4MWUxYjM1YTAxZmEzZjBhYzgyNWMzMzc5NDE4ZDk1MiBsZWdhY3ktdHJ1bmsKKzM4MDQxIDA1YmM4YWNhZjBiYjRjNmJjMjFlOTgyYzMxZDJiMDYyYWI2ZWQ5NzUgbGVnYWN5LXRydW5rCiszODA0MiBlODliMWEyNDBmZjdlZDE1MmI1N2E1ODI5MGY0Zjc3NWRkMzJiNjg1IHJlbGVhc2UyNC1tYWludAorMzgwNDMgYzEzOWE0OTk3ZDlmMTRjNDM4OGYxYjMwYzM2ZjFhOTA3YWQ1NzQ4YyByZWxlYXNlMjQtbWFpbnQKKzM4MDQ0IDhmZGFhOTdhOGFjMzQzNWVlZWE2YzRkZWFhMDdiMjQwODY0MGJmYTUgcmVsZWFzZTIzLW1haW50CiszODA0NSAxMWRiMjhlOTIwOWZlZDNlMzE1MDFlMTk0YTRmYTNhNjBhYzBiZjVkIHJlbGVhc2UyNC1tYWludAorMzgwNDYgMGVmY2MxNmY1YTBkMTY1OGFlOGM1ODZmZmFmMjMzZmUyZThhNjRmZSBsZWdhY3ktdHJ1bmsKKzM4MDQ3IDQ3MTRhZmY0YmY3NTI4N2ZmMzFhYWY0Mzk4OTA2NTQwYjYxNDQ4NGQgbGVnYWN5LXRydW5rCiszODA0OCA5ZTgxOTVlMjFkYTY5ZWIyYzIzZTgwYzBjZjY0OTZhNThiYTNhZDIzIGxlZ2FjeS10cnVuaworMzgwNDkgMzZjZjk0ZjU3NDE1MWY0YmRiMzViYjEzNmY5NjUwZGE0ZmIyYjkyMyByZWxlYXNlMjQtbWFpbnQKKzM4MDUwIDZmNGE2ZTlhZDZmMzNhYmJmYTJhMzU5OGExNmZiYTVjMTMwNzY4Y2UgcmVsZWFzZTI0LW1haW50CiszODA1MSA1MjFiZWM2MGViMzAyZmNiYzM1MjAwNTA5MDY0ZjA1ZWYwMmY1N2E4IGxlZ2FjeS10cnVuaworMzgwNTIgMDQ3MGQ3NTQxN2ZmMTU1YTc0MzA0OGU3ZjIxOTNjNDdjYTA3YjM1NCBsZWdhY3ktdHJ1bmsKKzM4MDUzIGQwNDcwMWU1OTg3Mjg0Nzk3N2VkMWM2YTc4ZTM5YTc0NTRiODk5YTAgcmVsZWFzZTI0LW1haW50CiszODA1NCA0NGViZjk4YTU4NjgyMDNkMzZiNGVmNTc0Mjc4MzQwNWQ4MmY4YWU2IHJlbGVhc2UyMy1tYWludAorMzgwNTUgYTRiZDVkMjFjOGIyNmNiMmFmMWIxMzI1ZjA1OWM0ZTJjM2U4MzNhNCBsZWdhY3ktdHJ1bmsKKzM4MDU2IGNkNGRkNmRkOTcyMWJkYTcwZTJiMDE3ODAxOTQyODdlYmRmMTM5NmUgcmVsZWFzZTI0LW1haW50CiszODA1NyA5OGQ3OWI0NjllNzRkMzFmZDcyZjgwNmU5MmU1NzgxOTgzMjkzOGE4IGxlZ2FjeS10cnVuaworMzgwNTggMTI4NWNhMTM0NWQ1YzMxMzFkYjc0NzMxMTJkNzY4NTUwNjQxNDM3MCByZWxlYXNlMjQtbWFpbnQKKzM4MDU5IGEyMzQyODRmOWUwNjAyZjFjNWQ0ZGIwZWNlNWZmOTNlOWVkODdkZTYgbGVnYWN5LXRydW5rCiszODA2MCA0NmZhMGUyMGNiY2ZlNDA4NmY4NzZlZjczYjI1YWRmZDRhOTIwMDE0IHJlbGVhc2UyNC1tYWludAorMzgwNjEgMTk5MGY3ZWMwZDlhZDBiMGE3OTIxMzAyMTVkMmU1OTZjM2JjNDU5NCByZWxlYXNlMjQtbWFpbnQKKzM4MDYyIGRhYmQ0M2JmMGRkZGZlZWQ1ZmU4OWRmYzNlZjcwNTJlZWQ4YTI3N2EgcmVsZWFzZTIzLW1haW50CiszODA2MyBiZTk3NmRkZjBmZjcwNzIxY2U0MGEzNDE3NGViNjAwMWFkYmQ5ZTVlIHJlbGVhc2UyMy1tYWludAorMzgwNjQgZDQ3MDJlNjdlMTE5N2ZiMjkzYzkwMTg5MDdkNDRiNTczZTk4OTMyMyByZWxlYXNlMjMtbWFpbnQKKzM4MDY1IDdmYjY3YWU5MzEyOGUxOTUxNjU3OTVmNDIwZmQ5MWIyMGJjNTJmMmUgbGVnYWN5LXRydW5rCiszODA2NiBhMGM3ZGY1MmJhNDE1NzMxYTkyZDY2NDU2ZDg4MzNhOTI2YjNkMDBlIHJlbGVhc2UyNC1tYWludAorMzgwNjcgOWNiOGM2ODdmM2Q2N2ZmYTdiYjZjNThlOGQyMjM4YjFkM2QxMjhmMiBsZWdhY3ktdHJ1bmsKKzM4MDY4IDMwOGVmZDcyNjhjMjZjZWFhMWVlN2ZhOTZlYTk5NThiZDc3YWRlYjcgcmVsZWFzZTI0LW1haW50CiszODA2OSA3ZDVkNmJkYzRmOTc5ZDVhODVhODA2ODMxM2Q4MTBhZjYwMjE3YWNmIGxlZ2FjeS10cnVuaworMzgwNzAgZWEzNDAwMDZjMWYzMGI4NmUxMTgyN2Y2MGE5ODNkYzI1OWNiM2I1ZiByZWxlYXNlMjQtbWFpbnQKKzM4MDcxIDg2YTYwZDRmYTg3YTM1NmFjYjY3NDBkZTBmZTdiNTBjM2E2Y2FmMTIgbGVnYWN5LXRydW5rCiszODA3MiAxOTI4Njk5NGY3NGYzMmEzMTYwODFhZmVkZTU2NjVhNzNkOWUxMDdiIHJlbGVhc2UyNC1tYWludAorMzgwNzMgN2M0MTNkM2E0MGE1MmJhMGNlMmFjYTNhYjU3ZDk3NzA4ZWY2MDVlZiBsZWdhY3ktdHJ1bmsKKzM4MDc0IDAyZmNiNWViODRjYjZhMWZiYzZmZjY4NjE4ZTFlNTBkMzVmNjdjNTQgcmVsZWFzZTI0LW1haW50CiszODA3NSAwMzRjNjExYjJlODQ0ZTBjZTVhZWNjNmUwZTQ2NWFlNzE3M2JlNzRiIGxlZ2FjeS10cnVuaworMzgwNzYgOTg2NTRiZmE4MGVhNWRkYjI0MzM4OTM1MDc1MTNhNDk4NDI5MDdhOSByZWxlYXNlMjQtbWFpbnQKKzM4MDc3IDFlOGIwMzNmOTFkYzNiYWE5OWY5OGJmNjRiMmNiYzVmZWViNzM3MjkgbGVnYWN5LXRydW5rCiszODA3OCBhNmJhMjhkMWQ4MDZhYTgzMTQ4NTMyYjBkMWFiNWFjOWUyYTZjM2ZjIGxlZ2FjeS10cnVuaworMzgwNzkgYWJlMzE0NWRkZTRlN2NmNjg3ZjljMjE3ZjAyN2JmZGNhZDQ0YTdhMSByZWxlYXNlMjQtbWFpbnQKKzM4MDgwIGI2NjE5NDIzYzE5NjEwMTk1MjAxOGY4MzJiNWYzZDY2NzdhZjg5ZmIgbGVnYWN5LXRydW5rCiszODA4MSBjMWI0NDBlYWNiYjE4MGJmZDlkZDk0NGExYTgzNmU2NWNkNzJkM2IxIGxlZ2FjeS10cnVuaworMzgwODIgOTllM2RkYjNhNzRhYWQ3OWZjMWZjMzgyN2MwYmVlYTY5Mjk1NjFjYyByZWxlYXNlMjQtbWFpbnQKKzM4MDgzIDhkNjAwNzdlOTk1MTQ5MGE4ZTI4NGU1ODA5YmYwNmZmZDQ5MGYzNGYgcmVsZWFzZTI0LW1haW50CiszODA4NCA2NzE5MzY5MDgzYzFlYjkyMTllNDY4MmZkZWYzZGRiOTAxODkxMDVhIGxlZ2FjeS10cnVuaworMzgwODUgOWRjOTZhYzk0MzQyMzgyZGRjZmIyNDU0YjEwNjAxZmQwZDIxMjg5YiByZWxlYXNlMjQtbWFpbnQKKzM4MDg2IDJhYTk2ZWUzZmNiNWM5MGI3MmQyNTAwMjQxMjk0MzM4ZWYyZjZlYmIgbGVnYWN5LXRydW5rCiszODA4NyA0YTBjMWU1MTdlNmJiMGY1OGZkNzMzOWI4ZGM1NjYwZmUwZTAzOWQ0IHJlbGVhc2UyNC1tYWludAorMzgwODggMzkxMTcyNmFlY2I5MDAxZTcxOTVkN2M2NWY4NTUxMTlkYjBmMGNlZCByZWxlYXNlMjQtbWFpbnQKKzM4MDg5IDY0MmRiMWZiMzQ4MWIzM2RhZDA2OTc2NTc1NTBlODQ3OWQ1NDU5YzUgcmVsZWFzZTI0LW1haW50CiszODA5MCBiYmRjMWQ3MzEwZjQ5N2E3OGI1MzE2YjJlNDg4YmE0NmI1YjVjYTM0IGxlZ2FjeS10cnVuaworMzgwOTEgZWMxOTI1ZjA3ZWM5N2UwMmMzZDE3NmI4M2IzMWY3Yjc0NTE2NWZlYiBsZWdhY3ktdHJ1bmsKKzM4MDkyIGUyMDg4YWUwZDY3ZmQ2NjdmZmIzYjQyYTYzM2EwYmFmYTBlNTU2ODkgbGVnYWN5LXRydW5rCiszODA5MyA1N2IyM2U1NzVmZmM2MzBjMjljNDRmZjAyYTJjNDI4ZGNlZDVkODZjIHJlbGVhc2UyMy1tYWludAorMzgwOTQgOTViYmU5OTFmY2MzMzE5ZjhmOTk2NjRkMTYwNTkwNTRiMWNmMmRhNSByZWxlYXNlMjMtbWFpbnQKKzM4MDk1IGNmZGJmYTU0ZGM2YTcwMWNiNTkwMGUzM2Y3YzhjOTY4ZTE2YjhiZWMgcmVsZWFzZTIzLW1haW50CiszODA5NiBhN2ZmZGMwOWYwMDI2N2Q3NjQ4ZjRiY2NkYTYwYTc3ZGU5ZDM4NTQ0IHJlbGVhc2UyMy1tYWludAorMzgwOTcgNjk0NjcwZjY1MjUxZDVjZjgwZmQxMzNkZDc1MzE1YWE0YTk3MmVlMCByZWxlYXNlMjMtbWFpbnQKKzM4MDk4IDkzYjFiMGJlYmE1OWY5MDM2MjQ3YTY1NzYwYzFjMjE1ZTg2ZDBiNmEgcmVsZWFzZTI0LW1haW50CiszODA5OSBhYjFhMTdjNjMzYWViZTk3MDRhNDk5ZWNkOGY1ODdmYTJhMDVhNWUxIHJlbGVhc2UyNC1tYWludAorMzgxMDAgYTRkODY5ZWNlZjMzOGJlYjMyZWYyMjFjZGM0N2UxYWFlN2JhMTdiOSByZWxlYXNlMjQtbWFpbnQKKzM4MTAxIGMwY2M2NjAxZGRhZGEyZWE1MjBlNTFhZTVkMjIxZjZjMjI0NjQwY2IgcmVsZWFzZTI0LW1haW50CiszODEwMiA5MGNkMjRhMWVlMTI0OTYxMDI0Y2JlZjNlNjFlMTBjYTRlZWY4NTU2IHJlbGVhc2UyNC1tYWludAorMzgxMDMgYWVhMjIzN2IzODhmZjcyZmU5NjhmYzExM2VkNzM4ODRiNTMxYmFmMyBsZWdhY3ktdHJ1bmsKKzM4MTA0IDI5MjA2OTFmNjNmMDY4N2NiYzUwMGFjMzIwMjUzODUyZmYyYmEwZjggbGVnYWN5LXRydW5rCiszODEwNSA5MTQ1MzRmNmVmNjEyNmE0NjJmM2Y2Y2U1YTgxYTg3MWI3NWZhNTAzIGxlZ2FjeS10cnVuaworMzgxMDYgYTE1ZmEwNTlmOWYwMzAwN2QxNzM1NmU1NWY0MDBlODMyYTViNmMwOSByZWxlYXNlMjMtbWFpbnQKKzM4MTA3IGM5ZTVkMWQxZTg4N2NjMDNhYzVmZTg4MDljMTQ4OTgzMDMxNWYyZjUgcmVsZWFzZTI0LW1haW50CiszODEwOCBkZjBjMmYzYWNjN2M5NjFiMDk3MDQ5ZWI0YTgwODkzMWUwYjIzN2RkIHJlbGVhc2UyMy1tYWludAorMzgxMDkgYjA0NDczNWM5MjdiMTA0MjYxMjc4NjdhMTUxODAyODQwN2ViNGVhMCBsZWdhY3ktdHJ1bmsKKzM4MTEwIDQ2MzUzNTY4ZTQwZDk5ZDNjZWI1MzFmNzEyYjZmMjg4ZTVjNzVkMmUgbGVnYWN5LXRydW5rCiszODExMSA5OWViZWMyYmUwMzEyOTIxZjgzNmJiYzVhODczMjU5MTcyOTI4Njk0IGxlZ2FjeS10cnVuaworMzgxMTIgYWFiYTFjZTRiM2NhMDVmZDkyMGQ2Y2Q3MmY2MjRkOTVkY2RhZjk5NCByZWxlYXNlMjQtbWFpbnQKKzM4MTEzIDg2YzNhN2M2YjAwYTFhYjI4MDJiMjU1NTlhZDEyZDkyZGIxNTJmOGEgbGVnYWN5LXRydW5rCiszODExNCBmNTRlMTQwMDBkNmJkMGUyYWYxYTNjYzliNWYyYzE5Mzg1OWU0MzNkIGxlZ2FjeS10cnVuaworMzgxMTUgZTgyZDE4MzI1OGY5YzEwNjRhOGZlNWQzNjczMTFlZjczNDdkNWZmYSByZWxlYXNlMjQtbWFpbnQKKzM4MTE2IDU3OThhYTY1NGVjNjQwZDhkYTk5NTMxMzE2M2JjMDg0ZmI0YTc2MTcgcmVsZWFzZTIzLW1haW50CiszODExNyAyODg5MWRjMjU1ODBjYWFjODdiMGMwYzJhYjBmZjI5MzkyNjliODFiIGxlZ2FjeS10cnVuaworMzgxMTggNTg0MDIzZGFjNDA2OTE1YjU2ODcyZDFjODhhMzVhN2FlMjhiMTI0OSByZWxlYXNlMjQtbWFpbnQKKzM4MTE5IDRlYzAwNmNhMmI5MWJlYTdlNTJkMTgyNDVhM2QwMTViMTUzYWQ3ZTQgcmVsZWFzZTI0LW1haW50CiszODEyMCBlODExNTIxNTI0MzNmYjE4YWRkNGU5YWQwMjk3ZDcwYWQ4ODA3NzM3IGxlZ2FjeS10cnVuaworMzgxMjEgYzcwMjM5MGE4ZTEyMjJlOTc5MDA3ZTFjYTUzYTlkNjQ4NGM0ZTg5OSBsZWdhY3ktdHJ1bmsKKzM4MTIyIDBkOTE2M2RhNjFhM2JiMDAzNTQ5N2JkMDAwYWMzYzZkOTA1NWQ4YjQgbGVnYWN5LXRydW5rCiszODEyMyA2NDYxOTViNTkyMDU3N2Q0ZjViNjJlYzU4ZmVhYjJkZWRlOGEyNTQ0IGxlZ2FjeS10cnVuaworMzgxMjQgNzRhOTFlNDU1OWNhNWIyNTMyMDM1MzU1YjhkODBjYzY4NDM5NmY5ZCBsZWdhY3ktdHJ1bmsKKzM4MTI1IDMyMWJjMmQ0OWE1YTJlMTBmZWM0ZTQzZGMwZGJlODUwYzE4ODI5MjUgbGVnYWN5LXRydW5rCiszODEyNiA1ODZhNzZmOTZiMDlkZDRmMjRiYzM5ZTc4NzQwMzhkZmY2NGVkY2FmIGxlZ2FjeS10cnVuaworMzgxMjcgNTg5ODFmZTkwYmVmYTRlNzAwODQ3OGM5ZjJkOGQ2MjI0YjAyMDljOCByZWxlYXNlMjMtbWFpbnQKKzM4MTI4IDE5MTRjNGRiNGIyODYwYzk2NTYzZTUwYjhhOGI4ZGQ3MzQwZTMyMTcgbGVnYWN5LXRydW5rCiszODEyOSBiMmVjZGE0ZGQ3MGZkZjY4YzA1MGJlZDhhY2ZkOGIyMmQ5ZTg2ZWIzIHJlbGVhc2UyNC1tYWludAorMzgxMzAgYWYwMTMzNmZmMTlkYjMwNjgyOTZhOGE2ODMyYjYyOWJhZjZmYzA0NiByZWxlYXNlMjMtbWFpbnQKKzM4MTMxIDA0NDI3MTc0Y2Y2YWIxM2Y3ZWY5YmY4YTE3NTEyMjE0Yjc5M2FmM2MgcmVsZWFzZTIzLW1haW50CiszODEzMiAwNTVkZDdmOTBiMWVhOGI2ZWU2Y2Y4NTViZWI4YzVmZmQ1ZDBjY2VkIGxlZ2FjeS10cnVuaworMzgxMzMgYTlhMDMzNjgyOWJhMDQwM2VjN2MxM2ZiYThjMDVkMzJjNWY1NWQ2ZiBsZWdhY3ktdHJ1bmsKKzM4MTM0IDAwMDZiMmRkMzdjMjM2OTFkNjIxZWI0YjMwNTMzNGQ5ZjM2Nzg4YmEgcmVsZWFzZTIzLW1haW50CiszODEzNSAwMDU2MmRhYmZkNGYzN2I4MzA4N2M2NWI0NTM3OTMzYzRlNmJlMjhhIHJlbGVhc2UyNC1tYWludAorMzgxMzYgNGFjZjdhYmU1ODI1NzdlZTZlZWFkNzE4ZGM3OTY4NjJmZmQ0YjI4NCBsZWdhY3ktdHJ1bmsKKzM4MTM3IGExM2Q5NDRjYTc2Yzk3NjRlYzFlYjFkYjRlZWIxMDdjZDUyMzM0OWEgbGVnYWN5LXRydW5rCiszODEzOCAyMWRkNTI0YmUwMzZhY2E0ZmZiYWRiYjZjODVlOTU1NWU4ZGI5MjRlIHJlbGVhc2UyNC1tYWludAorMzgxMzkgNzJjZDkzZjQ2M2I1YWQxOWEwYjQ3MDk2MDgxYTlkYTU3ODU1NmZkMyBsZWdhY3ktdHJ1bmsKKzM4MTQwIDkzNzcyYjcxNmUzZjkxNzhjYzZkYzdjMDQzNmE2MTNiZTcxMDk4ZWYgcmVsZWFzZTI0LW1haW50CiszODE0MSBkOGVjNGFmYTFmZmIwYWYyZmMwOTE0OGI1OTc5NGQ3Yjk3ZGUwMjBhIHJlbGVhc2UyNC1tYWludAorMzgxNDIgZTljZWRlOTFkM2MzMmY2Y2QxYmVlNDcyOTliZmVlODk0ZDZhOTIwOSBsZWdhY3ktdHJ1bmsKKzM4MTQzIGFmZDliODJlNjhmMWY4ZGE1NDYxNWMzYmJmYmVjMTcxNjhmMGI4MjcgcmVsZWFzZTI0LW1haW50CiszODE0NCBiM2FmN2M2ZGIxYzYwZGRkNzE3MzViYjAzODY0NTIwMjFkYTVkY2VhIGxlZ2FjeS10cnVuaworMzgxNDUgYmE4YzNlYWE0M2E1OTcyNmJiNDE3MmQ5YWI1NGM1Yzk1ZjI0MTBjNSBsZWdhY3ktdHJ1bmsKKzM4MTQ2IGIyYzk5ODE5ODMwNDljNzgyMWVhZGFjZjQ1MzExMmJiNmZmZTdjZGIgcmVsZWFzZTI0LW1haW50CiszODE0NyBlYWIxNzRkMGVkMDMxYWQ1Y2Y1NDRkZjc1ZWVkNjNiNWVlOTUyYTljIHJlbGVhc2UyMy1tYWludAorMzgxNDggYThhNGFmZTE4YjYxMzRhMzAzNDM1N2VmNzMzMjJmOThlMzNjNDU0MCBsZWdhY3ktdHJ1bmsKKzM4MTQ5IGUyMjFkOTk1NDYyNjg5NWFlNTAwOGIzYjlkZjBjZWZhMDU3OTQ5OGQgcmVsZWFzZTI0LW1haW50CiszODE1MCBmNzVhYzg2YmNlZjQ0ZWY0ZjgwZjQ1NzY5OWVhZWM0YzllN2E0ODVmIHJlbGVhc2UyMy1tYWludAorMzgxNTEgNTdiZmViNTNmMmZhMzRiMjIzZmQ3ZTU1MDAzODE3MTQwNmNmNTZmOSBsZWdhY3ktdHJ1bmsKKzM4MTUyIDNlYzU0YzVmNzA4MTQ4Y2IyNjJkZDIxYzhhMzUxZGE1M2Q3NDI1YjIgcmVsZWFzZTI0LW1haW50CiszODE1MyA1ZGMyNzRlMTU4MjI3NjZiYmNiMTM2ZWU5YmQ2OTIyNDM1NGNiMGY0IGxlZ2FjeS10cnVuaworMzgxNTQgMTgxMGRmZDYxNWFlN2RmZDhhZjE3Zjk4ZDk1NzlkOGFlMTY5N2ZlNCByZWxlYXNlMjQtbWFpbnQKKzM4MTU1IDc2MjI5MDk2NTFjNTNkNzhiYzlmN2FlYzJhZmM2ODc2MTFlNzdkNmYgcmVsZWFzZTIzLW1haW50CiszODE1NiA1MzY4ZDJiN2Q2NmEwYTU3ZTlmYWFhYjE5YTdiNTY4M2Y0M2I0ZTBmIHJlbGVhc2UyNC1tYWludAorMzgxNTcgNGQzODNiOTk4YmI0OGY0NzY5NDIwYTFlNzc1NjFjMWRiM2E3NzQ3OSBsZWdhY3ktdHJ1bmsKKzM4MTU4IGNkNTE3NzAxZmQ5M2M5NDQ4YzU4MjM3MTQyN2FhODRmMDU3MTU4YTYgbGVnYWN5LXRydW5rCiszODE1OSAzZTlhNGQ1MzFlNTYzZGQ5NGQ4MzZhYjk0ODEzODNkMDQwNTY5YzRiIGxlZ2FjeS10cnVuaworMzgxNjAgNDA3MjVmMzA0ZTE4ZDczZDk0OGFlMWEwZWU5MDUwNGQ2YTNhMzQ0YyBsZWdhY3ktdHJ1bmsKKzM4MTYxIDY3ZjIxOTBlMWY2ZDliNjUwNTUxOTAxMmFhOTkwNDMyMDVhYTNkYjYgcmVsZWFzZTI0LW1haW50CiszODE2MyA1NmU2MTAzMjdiODE2YzViZTdiOWRmOTRkZDcxNmEwYWM1OWJlZjUwIGxlZ2FjeS10cnVuaworMzgxNjQgZGM5ZDBhOWVkZTg4NjRkM2JiNjc5MzZkYjRlNzE0YWQ5N2FiMGMxMCByZWxlYXNlMjQtbWFpbnQKKzM4MTY1IGRmMzgwZTE5NmM0YjVhYTM0NDVhMDY3MWQyMzI4M2VmOTUxOTZmNDYgbGVnYWN5LXRydW5rCiszODE2NiAxZDYyNWRhZWQ1OTQ0MjgyMzY5Yjg1ZWI4MGU1MTI5YTYzMmRhZjlhIHJlbGVhc2UyNC1tYWludAorMzgxNjcgMWY3Y2Y4NTIxYmI1ODg2YjVhMGY4MjQyM2I0ZGM0MGYyYzNhNDk3YSByZWxlYXNlMjQtbWFpbnQKKzM4MTY4IDk5OGZiMWUxYzhlOWE2ZDIzY2EyZTY2MzJiMzNlZTVjZDdjYjY5NDMgbGVnYWN5LXRydW5rCiszODE2OSBjYjMwY2ZjYjM5ZTc0NDU3MmE0Mjg3Y2ZiYjNlM2YwYTg0MmM2ZTk1IGxlZ2FjeS10cnVuaworMzgxNzAgOTkxMDQxZjc2NDQ3OGM5MDVhZWZiMzkzMGU3Mzk2Yjg0MzMyMDZiMCBsZWdhY3ktdHJ1bmsKKzM4MTcxIDBjMzI2MzI3ZTcyMjM5MWI2YzY0Y2MzNWM1YmY3MWU0N2NmYjBkZGYgbGVnYWN5LXRydW5rCiszODE3MiBmMWMzNWRhNjRkNTU0ZDNkNmE1YzA1NGE4MTQ0NDMxMmFmODE5ODg4IGxlZ2FjeS10cnVuaworMzgxNzMgZjAwYmMyNzNhZTcwZDFlOWRiYWUxY2M0ZDQ5ZDFhNDBkMzYwNjg1ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTc0IGU4YmY2MjA4M2FjNDQ0NmYzMjZmMTkzNDljZjFjMGZjNWNiNjRhMDIgcmVsZWFzZTIzLW1haW50CiszODE3NSA2MGE0YjA2NGEyNDgwYTcwOTdjNmQyZDI2YWFmNTc1MTU0MzZkMTRkIHJlbGVhc2UyMy1tYWludAorMzgxNzYgYmJjZDgxMjdiMzI2ODI5NDY1YmI0NGFiMGUzZGJjZTk4MjA3NTFlOSByZWxlYXNlMjMtbWFpbnQKKzM4MTc3IDYxMjdjMDg5YTA2YzllMjJiNWU0Y2RlNzkwMWEzY2Q3YTM0MDZkZDcgbGVnYWN5LXRydW5rCiszODE3OCA3OWFkZTJkZGQzMDY4ODFkMTQ0YTI1MTVkNzVjNjQ5NDY3YzU2NTRlIGxlZ2FjeS10cnVuaworMzgxNzkgNzI0MTdmYTIxYzdmY2Q3NWU5NWI3YTliNWY1MDU0NmUzNWU5ZWYwOCBsZWdhY3ktdHJ1bmsKKzM4MTgwIDMyMTYzYThjM2I2OWQzODcwYjVmZGY0NDNjZmMyYjY3Yzk4NDYxZmIgcmVsZWFzZTIzLW1haW50CiszODE4MSBlNThjZTA0MDY2Y2Q4MjJhMGNkZWE0YjMyZWU2MTVmNzQyYzdjODBkIHJlbGVhc2UyNC1tYWludAorMzgxODIgYTZjODFhZDFmNDRjYjc0MzBiY2ZhMDY0OWQ5MzAyYWU4NjI5NGZjMCByZWxlYXNlMjMtbWFpbnQKKzM4MTgzIGFkOGY5ZTc1ZjYxZDI0MjA4ZjU0ZWVmM2U4Mjc5ODVhNDY4YzQyNzYgbGVnYWN5LXRydW5rCiszODE4NCAyYmJjOGI0YjViOTM3NWMyMzRiODViYTM1MTBiODBlNWU1OGIxMTBhIHJlbGVhc2UyNC1tYWludAorMzgxODUgMDk3NDM3NjM0OTY4OWJiMjYxNjU4ZjIyY2JlYzU3Y2RkNjM4YTQyYSByZWxlYXNlMjMtbWFpbnQKKzM4MTg2IGYxYWU0MWU4YWJmMzg5MWU5NmE2NzZiZWM5NTg4ODRkYzI3YmRiMjggcmVsZWFzZTIzLW1haW50CiszODE4NyBiNjQ3ZWRkM2I5NmI4MWY1YzVjZDc3NGFhMWZkN2I4MjY3MmJmOGFiIHJlbGVhc2UyMy1tYWludAorMzgxODggNDFjYTdiNzY4YjRmZjRlZmU1ODRmN2U0NDg3NjliNzVhMWQ4OThjYiBsZWdhY3ktdHJ1bmsKKzM4MTg5IDNhOTUwZjFhZmM1NWZmMzc2Yjc4YmNjNWRlNmY3MWYxZWUzMTBhNDEgcmVsZWFzZTI0LW1haW50CiszODE5MCA5ZGQ4N2JhNjE3OTU1MDFhMDc5NDY3NTU1YjM5NGMxMzI0YzYyMTRmIHJlbGVhc2UyMy1tYWludAorMzgxOTEgZWU4MDhlMDhkZDZmYjg5OTU1YzA1NGRhNjY1NjE1ZTZhZWZjMjg0NCBsZWdhY3ktdHJ1bmsKKzM4MTkyIDA2NjQzZjA3MTMzNTA5MzA0OWJmYWEyOWVmMjQyNzQ4MTRkMmZhOTYgbGVnYWN5LXRydW5rCiszODE5MyA0ZTVmMDZjNGY5NTc5Y2JjN2JiZDU2ZjRjNDE1ZmM4OTI3MmM4OGI3IGxlZ2FjeS10cnVuaworMzgxOTQgZmZlNzU0MmY4ZjFmN2E3ODQ1NDdiYzE2MzcyNDBmNmI5ZWRmNWVhNiBsZWdhY3ktdHJ1bmsKKzM4MTk1IDljYWY5Y2Q1NDUzZDllOTYyNTYxZTVkMjdiZDI1NTFhM2UxYWFkNjUgbGVnYWN5LXRydW5rCiszODE5NyA0NDYxMWU1NDk5ZTdjMjdlNzZlZDYyMjE4YzM0MTA2NTRjZDdiZDE4IHJlbGVhc2UyNC1tYWludAorMzgxOTggM2ZjOGVjZTlkMmI4MGE0MDBhYWYwODhiMDEzMmYyZTliYmRhMjM2YSBsZWdhY3ktdHJ1bmsKKzM4MTk5IGE2MmIzYjRmZjUyY2I5MTg5NzkwNTQyNGFjMTBkOTdjNmI1N2JlZTIgcmVsZWFzZTI0LW1haW50CiszODIwMCBhZWM1OTY2NTAyOTIzNDQyNmNmMDIzNGY2OGZiNzEwNGZmNjA5MWI3IHJlbGVhc2UyNC1tYWludAorMzgyMDEgZDkyNmI4YTVlZjZlMzRhMjQzZmMwZWY0MjU2YmE0MGMzZWM3MGQ2MCByZWxlYXNlMjQtbWFpbnQKKzM4MjAyIDg0ZjQzZDNhMTUzNTRhMjQ0ODU0Y2M0ZmJkYmE5ZDVlMzA1Y2MxOWEgbGVnYWN5LXRydW5rCiszODIwMyBlNmJmMmU3Mjk0MWVlMGVlZjM1MWIwNzUwZjFkYWNjYzNiODk0ZWI5IHJlbGVhc2UyNC1tYWludAorMzgyMDQgZTE1Y2I2MmIzZmZiZGUwYjI3YTBkMTI0ZjM5YTNmZjE3NGYzODg3ZSBsZWdhY3ktdHJ1bmsKKzM4MjA1IGJhMjRhMDMyNGEwMzNhZWNkMzdkNjA2Nzc1ZWViNjI2ZGJhMWQ5MTIgbGVnYWN5LXRydW5rCiszODIwNiBkZjk1YTQxNTE1YzQxNDRjYWFjNWFjOTgwMjk1MTBhMDg1NTdiM2RlIHJlbGVhc2UyNC1tYWludAorMzgyMDcgYmU0OTI5ZTUxNzliYzBiMzI5YjExNDlkNDAyY2UxYmMyZTE5NDljYSBsZWdhY3ktdHJ1bmsKKzM4MjA4IGY4MGJiOGFmZjQxOTJmY2QyMjQ0M2Q2YzVhNDE1ODkxNGNkNGM5ODEgbGVnYWN5LXRydW5rCiszODIwOSA4ZjhmNTYwY2VjOTdlYzViYmI4ZDE4NDEwOWYyNTA1YzJjNzAxZGU1IGFzdC1icmFuY2gKKzM4MjEwIDIwODBjOGM0NzcyOTc3ZDg5ODViZjM2YjU5NjBhMDA5MTVkNjQ1NTIgYXN0LWJyYW5jaAorMzgyMTIgZjQyYTdjMzM1YTViOWFiMDBjMDM0MjEzYWVjMjE2MDg0M2EzOWE5MCBsZWdhY3ktdHJ1bmsKKzM4MjEzIDgyNDNlNTFhMjJkZWVmZTY1MjRjM2IwM2Y1ZDlhZThhYTQwMGI5NzcgbGVnYWN5LXRydW5rCiszODIxNCBhMGMwY2QzZTgxZmQ0NzdiOGNmNWUwZTA3NmE1MTY1ODI3YTYzMDRiIGxlZ2FjeS10cnVuaworMzgyMTUgYmFlYjA5ZjYwYzgyODI2NWFlZDBkNWMzYTgzOGZlZTFhNmVlOWQxNyBsZWdhY3ktdHJ1bmsKKzM4MjE2IDNmZWU3YzkxMTZjOTFmZDk1MGJjNmY2NjMwNWE1MDc3ZjY1ZWM5N2IgcmVsZWFzZTIzLW1haW50CiszODIxNyAyNmNjY2YzZTg0ODI5NjI2ZjViMDIxYjc1ZGFlY2QzNWE5OTE1NTlkIHJlbGVhc2UyNC1tYWludAorMzgyMTggYThlY2Q0YTk2ODI1Njk1MWY5OTBjNDdjYzA0YmVjNjAwZTkxMzdiOSBsZWdhY3ktdHJ1bmsKKzM4MjE5IDYzZjM0NDVmMmY1OTczNTA3NzhjOGQ3NDRkMDc3YWVmMDFiOWJiYzkgcmVsZWFzZTI0LW1haW50CiszODIyMCA1NmUwY2M0MzdiOGI1MDVmMjJhNGNmNDYyMDhhYWExMzlkYzBkZmUxIHJlbGVhc2UyNC1tYWludAorMzgyMjEgNjgwMDYwMDI3OWVkNjNlMWM1ZmVhYTVkZGE2Y2VjZGNjZTc1ZjZhNyBsZWdhY3ktdHJ1bmsKKzM4MjIyIGYyNjNmOTQzZWY3YjIwYWEwZjc1ZTRjYTRmMWI1YzE5NmFjMDE4NTAgcmVsZWFzZTI0LW1haW50CiszODIyMyBhMTIzZmI0ZDQ1YmY0YTY3ZDQ1MDI1MzJlNzY0ZDg1MTAzOTNmYWNlIHJlbGVhc2UyMy1tYWludAorMzgyMjQgY2E3ZjQzMTViMjEyNmY3YzY0ZjIzNTMyMzE0ZGZlNDJhMmUyMzI2OCByZWxlYXNlMjQtbWFpbnQKKzM4MjI1IGU1MWE4MjE2Mjg0NjRmMjVjYmFiNjdiNGEwOTY1OGI3MzA1MDE1ZTAgbGVnYWN5LXRydW5rCiszODIyNiBiMmQzODc5MDA0Y2QwNmRjMzE1YjVkZWYyMDdhNjU4MTZhZmJhNjZjIHJlbGVhc2UyMy1tYWludAorMzgyMjcgYjdiY2JlMzk4YmFhNjg5YWRmMjg0NWI3ZDI0MDhjMDgwMTVkMjg0MCByZWxlYXNlMjQtbWFpbnQKKzM4MjI4IGIxYTg0MjMzZDg1NTdkM2UyMTlmZGQwNmE1MmU3ZWMzYmNlMzUxMTEgbGVnYWN5LXRydW5rCiszODIyOSBmMGRiOWIxODZmM2RkYzBlMWM3MWRiMGNhOTcxN2JiMGRmMDJkNDQ3IGFzdC1icmFuY2gKKzM4MjMwIGQ4MWI2MTczZjA1MGJmOThjZDI4MTY0MmExNWVkMjZmNWNjZjEwNGQgbGVnYWN5LXRydW5rCiszODIzMSAyMzM2Njg4OWM2Yjk0YzJhYmI3YjVkNzhhMDUwN2YzNGY5ZTNmZTBiIGxlZ2FjeS10cnVuaworMzgyMzIgODYxODE2OGRjYTI3MDU0NWJiNWVhZmIwMGRhZGUzYzdlMThkNDEzYiBsZWdhY3ktdHJ1bmsKKzM4MjMzIGNjMjdiMjQ5NzU1ZGU2ZWVkYTUwNTZkYWUzMDljNTUwNzk4MmM1NGMgbGVnYWN5LXRydW5rCiszODIzNCAzNWYzMTc5MGM2Zjk2YmFmYTkxNjg1NTAxNzA1MTZlZDYxYmI2NDllIGxlZ2FjeS10cnVuaworMzgyMzUgMTllNjFhMmE1NjMyMGM2NTA2MWY0NDY1ODliMWM4NzIyOTU4MTA0OCBsZWdhY3ktdHJ1bmsKKzM4MjM2IGFhMjQ2YjlmNjE4NGZiOWE4ZmVmZGQxYjliMDIzMTkwY2I2YzI2YjMgbGVnYWN5LXRydW5rCiszODIzNyBiMjJlYmZjNDg4ZjMwMjRmMGQzODFkY2JjMzUyZGE4YzMxYjI0NTU3IGxlZ2FjeS10cnVuaworMzgyMzggNWNkNGZmZmFmOTEwNWFmODM0NjZhOGQ5MTMyOTM5NDdiOTI1MzY3MCBsZWdhY3ktdHJ1bmsKKzM4MjM5IGRiYmU4M2MzMjk0YTNlMzFiMGEwOTdkNzY3ZGYxYjVjNmFkYzFjNDggbGVnYWN5LXRydW5rCiszODI0MCBmZjczZTE1YTNmYjkyM2ExOTkyYTY3NDYwOWM1YTg0NDBhNGUyZmFjIGxlZ2FjeS10cnVuaworMzgyNDEgY2UyMzIwNzJlYWU2NDkzYmQxNzRmYzQ1NmFjZDI0MDQwNzc2NTQ3ZCBsZWdhY3ktdHJ1bmsKKzM4MjQyIDhhOGQ4NDQ3NjdiNjY2MmYwNTU3MjJhZTk5OTNlZGIxNjRlZDJmM2EgbGVnYWN5LXRydW5rCiszODI0MyBjZGFhMTY4Njk2MDg1NWRkZDg4NzVhNjNlNTkyMmMyMDg0MGYwZWRlIGxlZ2FjeS10cnVuaworMzgyNDQgYjg5ODgxMzQ4Mzc1MzVkOTEyZWMxYTc1YWMzMzIzMDVlYjQzYzVjOCBsZWdhY3ktdHJ1bmsKKzM4MjQ1IDllMzBkOWUyYjQzMzYzOTI1NTc2NmE3YjU5MWM2NjZmNzgwOTljOTkgcmVsZWFzZTI0LW1haW50CiszODI0NiBjNTk3NTQzM2FhNjg3N2Y5ZDgyNGJmY2E1MzdlZWQ5YTFiYTJkMGI1IGxlZ2FjeS10cnVuaworMzgyNDcgMmI0ODU5NzRiNDcxNWJjNjI2YWJlODNhM2YzNzllZmYyZGZmNzIyZiBsZWdhY3ktdHJ1bmsKKzM4MjQ4IGE5NGRhMmM2YTYyNmU0ZDM0ZDliNjkxNWY4ZWNhZWRmNDJiYWE2Y2IgcmVsZWFzZTI0LW1haW50CiszODI0OSBhMGJjNDQxOTY2M2MzMTA1ZWExNDM4ZjIxYTY1MzMxNzE3NDQ3NzNlIGxlZ2FjeS10cnVuaworMzgyNTAgMjg3ZTcxZjQ0ZDc5Njk4ZDI2NTM1OTAxZDBkZDZmMDEzMGY4MTU2YiByZWxlYXNlMjQtbWFpbnQKKzM4MjUxIDFhZWE4MTU1MWEyMjJmNmJmYjIyOWZkNWRkZmQ3YjY0YzUwZTkwNDYgYXN0LWJyYW5jaAorMzgyNTIgYmE2ZTE3MjcxYzYyODkxNjkxMTIxNWRlMDc1NzYzZTFiY2MwZjc2YyBsZWdhY3ktdHJ1bmsKKzM4MjUzIDRiZDE4MGQxNzFjYzAzNDQ4NTcxMGVmM2U0OWNkZGQ0MTU5M2UzZmIgbGVnYWN5LXRydW5rCiszODI1NCBhMzE2ODFhNmNmODg3Mjg3ODNmZjAwNDliNjE5OTIwMmYzZWRlYmM3IGxlZ2FjeS10cnVuaworMzgyNTUgMThjZmYzZWQ3NGQzZDk2ZGY5Y2YwOTZhYWJhNmM5YTBlM2M3ZTlmMyByZWxlYXNlMjQtbWFpbnQKKzM4MjU2IGEyMTYwMDNjZWYwNDQwMmQ4MGUxNTVkYWY1YTMwMDcwZGI3ZjRhMjYgbGVnYWN5LXRydW5rCiszODI1NyAzNTMzZTNjYjdiOTdhNTdlOTMyMzk1ZmQ0YTRjNTcxNjEwMDE4NTg0IGxlZ2FjeS10cnVuaworMzgyNTggOTFkNTVhMzAzODJjYmIwODE0NzlmMjM4NjQ1ZWJlNDA0ODc3OGJmYSBsZWdhY3ktdHJ1bmsKKzM4MjU5IGYyNWRjZDdmM2U0ODgwYzA0ODdiMTgwMDIxNTJkZDI3ZmNhNWY4ZjkgcmVsZWFzZTI0LW1haW50CiszODI2MCA1OThkMTZmYTAyYzE5OTEyMTQ4YzRkMzJlN2Y5OTU3MTBkYTZhNThhIGxlZ2FjeS10cnVuaworMzgyNjEgNzM5MWUxOGIwYTdjZGRlZjY0NDc0OTZhYmM3ZTMzNTFlNTBiMDE0YyBsZWdhY3ktdHJ1bmsKKzM4MjYyIDI4Zjg0OTM4NDY4ZGVhMWU1M2MxYTNmNDBiMzNiYzg3OTIzZmYzM2MgbGVnYWN5LXRydW5rCiszODI2MyAwYTE2MDhhNWViMDVhZWU0OWE0ODM5NTcwNDNhNjJmOGEyMTQwNTFjIGxlZ2FjeS10cnVuaworMzgyNjQgZTJjMTA5N2Q3ZThmYjBiZTUxNzgzM2QzOWViYzdiY2FhMGI5ZmRhYSBsZWdhY3ktdHJ1bmsKKzM4MjY1IGI2ZWMxYjNiOWZjZTc5Yzc3ZGYxNzI2NzU4NTZmZWU2NjdmMDRhMjggbGVnYWN5LXRydW5rCiszODI2NiBiNDgwYWJhZjFmNmY2ZTZhYjdkMmE1M2EyMTc2Y2ZkYTk1NmQ1Yzg1IGxlZ2FjeS10cnVuaworMzgyNjcgNmMwMmJiM2ZjY2E2NzkwOTgwOTgyZTBmMWQwOWQxM2U2NTVhOTBkNSBsZWdhY3ktdHJ1bmsKKzM4MjY4IDcwNTlmYjhiOWViMzkzNGU1ZWY1MTcwNmQ3Y2NhYzM1ZDAwNWMzODggbGVnYWN5LXRydW5rCiszODI2OSBjNGRiOTkyZjg0MGYzMDRlZGNhNjBhMjczMmM5MjQyOTRmM2E2ZjRmIHJlbGVhc2UyMy1tYWludAorMzgyNzAgNDVhMzIwZjM4YzQ4OTAxZjM1YmM0Y2ZlMjEzNTVmZTVlN2RiYzQ4MiBsZWdhY3ktdHJ1bmsKKzM4MjcxIGQ3OTY4NjIxZDI4ZDJlN2NkMTk1YWU4YzEzMjJjZTEwM2EwMzMyMjQgcmVsZWFzZTI0LW1haW50CiszODI3MiA4YmI0NmZkY2U4ZmQzODQ0MWVhN2MyNDU1MjhkNjYyYTk1NjYzNDg5IGxlZ2FjeS10cnVuaworMzgyNzMgYTk5ZjVhZDI5ZWFjNjRhMmJmMDQ3YmFiZjlkYTQ1ZDI4OWZiNjQzMCByZWxlYXNlMjQtbWFpbnQKKzM4Mjc0IDhlY2E4ZDk4MDI2MGRlZDI1YTJjY2UxODg3YjFjZTM1Y2JjZTE4ZTcgbGVnYWN5LXRydW5rCiszODI3NSAxM2E4NTgwNmJhNDhjOTc5MzMxMGE3Mjg0N2ZkMzRiODE2YzM5NDczIGxlZ2FjeS10cnVuaworMzgyNzYgYTg1OTljNzg4MjE4ZDg4ODUyMjdhZTM5ZmY1Yzg5YzljOWM5M2I5ZCBsZWdhY3ktdHJ1bmsKKzM4Mjc3IDQyODJmODgyYjI4NTk1NmUzYmVhZDdiMTBiM2M0YmRiZDY4ODUxNmIgbGVnYWN5LXRydW5rCiszODI3OCBiOTM4NDVjZTQ0NTQ5NWUzYjQ4NWNiNmIzOWFlZDVmMTgzYjcwMTEwIGxlZ2FjeS10cnVuaworMzgyNzkgYzg4YWIyOTJiZjA1MjhhYTk1YTY3MTJkMGYxMjU5YTAyMTI4NWQ0MSBsZWdhY3ktdHJ1bmsKKzM4MjgwIDcyZmQzNzNjZDBmOTVhMWMyZjZlZDQ1YzZhMTk3MGE2OWYyMjBmY2UgbGVnYWN5LXRydW5rCiszODI4MSAxZDg2NmMwMmE4Y2FiMjA1YmIxYTQwMmJhOTc3MGFlNDVlYTRhOTQzIGxlZ2FjeS10cnVuaworMzgyODIgYTcwZGQ4NzY3YjA3MWIzNDI2NmRkYmIwNjJlNWM2MzIyZjRmODg4ZSBsZWdhY3ktdHJ1bmsKKzM4MjgzIDAyZjM5OGZiYjBmMDZkMTdjNDViM2FiMDZlNDI4YmM4YzE1OGUwNzMgbGVnYWN5LXRydW5rCiszODI4NCBiMzJhZTBlZWNkZWU3MWFkMGZjNGI3ODQ5ZWNiZTcyZjQ5ZGZlNzQ2IGxlZ2FjeS10cnVuaworMzgyODUgOGY1NzMwYTNiYzRhYmY3MjdlOTQzNzM0NjY5NDVkNjk4MjA2NjNkOCBsZWdhY3ktdHJ1bmsKKzM4Mjg2IDM0NzM5MmM4ZWI4YjM2YzUzY2I1ZWVhMjBiMjExMzY2ZGMzMzYzMzMgbGVnYWN5LXRydW5rCiszODI4NyA4ZmMwMzBjNWM3MGFiZTI5MTkxMjQ1NDY0ZmM4OGUzYTliOTNlZWQwIHJlbGVhc2UyNC1tYWludAorMzgyODggNTYzY2JmNGQ2YmU0NjU2NWY0NWYwNDA1YmVkODNlMjFkNzVlMDk0OSBsZWdhY3ktdHJ1bmsKKzM4Mjg5IGZlN2ExNTQ3ZjJmYWVhNDQ4ZmVhYmU2ZTUxNmMzYmU0NjczYWQxMWUgbGVnYWN5LXRydW5rCiszODI5MCBmYTY1ZTM0MjVhNGM1YWQ2ZDFhMGVkNjA3MWQ0ZTFjMDU4OTA1YTI1IGxlZ2FjeS10cnVuaworMzgyOTEgNjUyYjg1ZDM1YTc1ZGRhMTBlMmQzMzFhNTc2ZTkzYTBmNzM3MDdlZCBsZWdhY3ktdHJ1bmsKKzM4MjkyIDI2OWEyYzE0YmM1NzA4NGQzNmQ4M2NiZDFjZWM5ODMyYWJmZmVkMTIgbGVnYWN5LXRydW5rCiszODI5MyAzMzE2YWE1NDBlNjhjODA3Mjg0MTkxZWU5NjJmZjFiNjJkNDQ5NzdjIGxlZ2FjeS10cnVuaworMzgyOTQgMTM5MzQzNDNhNTNiODMyNjMyNDI3MTU4YmU1YWM4YTQ2MGRlYzVlOCBsZWdhY3ktdHJ1bmsKKzM4Mjk1IDU0NDliN2Y4MDZmYjdkZjJjMjJlZjM4MDFlZWMxNTdkYTQxZmUzYTEgbGVnYWN5LXRydW5rCiszODI5NiA1YmQyYjNlNGZkY2M0ZjU3MTMwOTIwY2JlNTA1NTMwY2JmNjIwZWUyIGxlZ2FjeS10cnVuaworMzgyOTcgODQzNmEyOTU1OTFiNjhjYTgwYTkwNDFmNmY2NGQ0OWZlYTVkOWE2YSBsZWdhY3ktdHJ1bmsKKzM4Mjk4IDRiOGZhOGIwYWY5MTZlZTVkMDQyZjJhZTJhYjdmYmNmM2ZmMDFkNzIgbGVnYWN5LXRydW5rCiszODI5OSBkYzA5Y2M5YjJlZTZjNzhkMjg0ZDUzZWE1MzNlMGUwMWY3OTIzYTBhIGFzdC1icmFuY2gKKzM4MzAwIDY4OWMyMzM4NWU0ZjlkZDEyM2Q3OTJjNzExMzc3YmE5YjcwYWRhMDkgYXN0LWJyYW5jaAorMzgzMDEgNGFmM2JmZmU1NjIwM2FlZDIyY2NlMTQ1OGNiNDhkMTI1ODc4Yjk4ZiBsZWdhY3ktdHJ1bmsKKzM4MzAyIDcyOGVkZWZiMWUxNzM1NmU4ZjdkNjJiYzA3YTY1YmMyNmNkZTZiOGIgbGVnYWN5LXRydW5rCiszODMwMyBlMTMwNTg5NGJmMDk2YThjOWM5NmVjYWI3OTgzZTA4NDI0MzkyNTU3IGFzdC1icmFuY2gKKzM4MzA0IDQ5MDE3ZDllZjZjOTg2YjY4NzM4ZjRmMWU4MWM2YWE4OGFmMjAyM2YgYXN0LWJyYW5jaAorMzgzMDUgNGI3NGZmMDc5NjUyYmY1ZGIwMjkxYTk3ZjdmMzMxNjIyMzk4NWY3MCBsZWdhY3ktdHJ1bmsKKzM4MzA2IDY5YjY4ZjkxY2M3NzY2OTBjYjYzMjNiNDllNDMwMGI4MTBjYTE0NTYgbGVnYWN5LXRydW5rCiszODMwNyBmNTY0NjM0OTRiZmQ5NGVlNWE3ZDA5NzAzZWQ5YzE4ZTY2OWU1MTUzIHJlbGVhc2UyNC1tYWludAorMzgzMDggMDM5ODA3ZTFlNGQxMjgyYjk3MWY5MThmYTcxMTRlMmFjMWEwYmNhNSByZWxlYXNlMjQtbWFpbnQKKzM4MzA5IGUxYTdlYjgzMmNiNTFhYmY4YjdkZjUyYjVmZmYwMjcwZjBkNTIyMWIgcmVsZWFzZTIzLW1haW50CiszODMxMCA0YWE1NTRiMDBjYjBiNTU2ZDAyODNjMTM5ODA0YjU4NzgxODhlY2QzIHJlbGVhc2UyMy1tYWludAorMzgzMTEgMjI0NmFiOTIyZWI0OGU0MDAwMzdhZjE4NDdiMjliMDNmZDlkMjM1MSByZWxlYXNlMjMtbWFpbnQKKzM4MzEyIDk1NWRhMDgwYjBjZjM2ODBjYjlkOTdiNjcyNjE3ZDkxNTI1YjNlYTMgcmVsZWFzZTIzLW1haW50CiszODMxMyA3ZDk5OTgxYjJlY2UzMmVkN2E4NzIwY2NjNjlkOTBjZGE4NzFmNDczIHJlbGVhc2UyMy1tYWludAorMzgzMTQgNmZkYmM0ZTgzM2UyMGZmOTQ2NzI2OTZmY2Y4M2YwZWEzNGJmNmE1YyByZWxlYXNlMjMtbWFpbnQKKzM4MzE1IDc3NWE3MmI5ZDUyY2RjNzY4YTI5ZTg1MTFhZmU5YmI5OWEyZjZjNzAgbGVnYWN5LXRydW5rCiszODMxNiBlZDRkYzA1ZWE0YjhjMTI2YWE3MDdhYjBlMzY5MTk4ODhiN2NiNjU5IGxlZ2FjeS10cnVuaworMzgzMTcgMThmNmNlYmU0N2FhYWU3MzU5OWQyZTNlY2E5YzQ2MWViM2FhYjAxYSBsZWdhY3ktdHJ1bmsKKzM4MzE4IDY4MzcxOWUwNDIxODE4MmIwMmVkNmEzY2Q4NDBhNzdjNzBiNWM1M2YgbGVnYWN5LXRydW5rCiszODMxOSBjZDZiNTRiYTI3MmZiNDc3NGJmN2Q5ZGM0Yjk0ZjcwZmJiMTkzN2Q2IGxlZ2FjeS10cnVuaworMzgzMjAgZDkzYjY4YTk5Zjk2ZTM4MTU2NDJmZTM2NDEzYmVmZWU0MmQ4Zjk2NyByZWxlYXNlMjMtbWFpbnQKKzM4MzIxIDZjZjM5OWFhZmM2NjhlNDQyNjNjMGMxMWMyN2I4NDE2ZjM5ODdkYjEgbGVnYWN5LXRydW5rCiszODMyMiAyMWRkNzMzZWIxMThjM2JhZmU3OWY4NzhjZjYwY2M3Yzc3ZGY0YzMxIHJlbGVhc2UyNC1tYWludAorMzgzMjMgOGMwZTNjMGEyMzNjYWMzYWM0N2YwYTU3M2FiNGYxY2U4ZDE2ODliMCByZWxlYXNlMjMtbWFpbnQKKzM4MzI0IGEwNjNmMGQ2ZGIyODBlNGU0NWZkYjlhNDhjNjY2MzQyMTQ1MjA5OTYgbGVnYWN5LXRydW5rCiszODMyNSBhZjYzMGViMjZkNTliN2YxY2Q5NDhjZmI2MWRlODE4ZDJkNWMyZDFlIHJlbGVhc2UyNC1tYWludAorMzgzMjYgMjkzMWY2NTA0YWY1YzNkNjBhZTJiZWE2YmNjMGM1YzZlMjEyZGVkYiByZWxlYXNlMjMtbWFpbnQKKzM4MzI3IDJlZWU5MGVmMzJhYmM3Mjc1YTdkNjY4NThhNjdmZjI0N2UyYzhjNTkgcmVsZWFzZTIzLW1haW50CiszODMyOCBhZDEyNjA1NGFkZTU3NTAwYzllNDc5OTgzZjY2ZjAxZGUwMzdkM2JlIHJlbGVhc2UyNC1tYWludAorMzgzMjkgNjcwZGUzMDFiODg3ZjEwMWJhZjk0NWUyMzg0MmQyMjlmYTYwZGQxZiBsZWdhY3ktdHJ1bmsKKzM4MzMwIDU5NTIzZWIzNWMxZDcxMjZjMDE3ZjFkMjQ0OGZjNGQ5MjNjY2NlMzcgbGVnYWN5LXRydW5rCiszODMzMSBhMDkzYWViZjFiNDBlN2QxMTZjN2RmMzQ4NmViN2M3MzFlM2Y2YmM0IHJlbGVhc2UyNC1tYWludAorMzgzMzIgNjYwNWUxMmJjMTZkNzEzZTM3OTI2MDIzMTBkZDk0MTQxZTE0MjkyNCByZWxlYXNlMjMtbWFpbnQKKzM4MzMzIDUxYTBmMGFkNDZhYzBkOWMzMTdjNWY4MjlhZWE1ZWVlNzg0N2VkYTQgbGVnYWN5LXRydW5rCiszODMzNCA3MGEwNDQ5NzU1ZTI2MWRiODNiZmNiYjg5NWJkN2Q4YWY0YzQ2OWFmIHJlbGVhc2UyMy1tYWludAorMzgzMzUgMWY1YzIzNTE2MDVhMTU3ZGNlMWM5Yjg3MjAyYjY0Zjk2MjI0MmU2ZCBhc3QtYnJhbmNoCiszODMzNiAzMjk4YWU2ZjM2NjU4N2MwNTc4ZTMxODUxOWM0MTRmOTUxMjE0ZTc4IGFzdC1icmFuY2gKKzM4MzM3IDhiNjU0OGY1ZjI3OWRkOTRhMGQ4ZWFhNjM1NWExMjU5NGU5Nzg2YTIgcmVsZWFzZTIzLW1haW50CiszODMzOCBjYzNiZDRlNGQ5ZjBhNTYzMTUzZTFiNGNiYTQ3NzllNzAxNDUzMGU3IHJlbGVhc2UyNC1tYWludAorMzgzMzkgMDEzM2IwMjI2MjZlYjJjYjQ1ZmU2N2I2YmFlZTU3YjAyMTEyYzA5YyByZWxlYXNlMjQtbWFpbnQKKzM4MzQwIGQ1ZGRkMDZkNTVmYzlkYTNmMWY0YTA0ODdmYzAyZjNhZGU1ZjlmNDIgcmVsZWFzZTIzLW1haW50CiszODM0MSA5ZDc2MzkzN2EyNWI0YjQ4YWY0ODAwYzI2Y2FkYjRhMjliMGQ4YWFjIHJlbGVhc2UyNC1tYWludAorMzgzNDIgZmY1M2QxNDcxN2M1MjgxMzVhNDU0NDQ2N2VkNTQzZmRmOWE5ZGYzOSByZWxlYXNlMjMtbWFpbnQKKzM4MzQzIDdkZjA3N2Y0NzA1NjkwZDI1Y2Q3YTU3ZGQxOGY5MDg2OGM4OGRkMDUgbGVnYWN5LXRydW5rCiszODM0NCBkNWNlODhlYmRiYmQwZDc1MDE5OGM0NDdkZDAwY2M1Y2JhZmViZWU5IHJlbGVhc2UyMy1tYWludAorMzgzNDUgODNjOTc1YjRhMmMzNzIyYTA2ZDJiNTkzMzk4MjJlNmM4MzUzMGU1MCByZWxlYXNlMjQtbWFpbnQKKzM4MzQ2IGM0NDEzMzA3YTJmMzEwYmNiNzY3NWUyNmE1NzIxOTJiMWFiM2ExZWMgbGVnYWN5LXRydW5rCiszODM0NyBmNzM4ZDY0YzgyN2QzMDg3MTgwNmZiNzA0NjIzMzQwZmFkOWIzNjU2IHJlbGVhc2UyNC1tYWludAorMzgzNDggNjNmY2Q2N2UzMzI5YWIzYzEyMDZlM2QxYzAyZDM4NTJlYTI2NDUyMiByZWxlYXNlMjQtbWFpbnQKKzM4MzQ5IDJiMjU4ZjBjYmMzMWNiOTVkMWYxMmNhYjA5MTg3NDQxYmRlOGM0Y2QgbGVnYWN5LXRydW5rCiszODM1MCAwZjQxZmUzZmFkZjQ1ZTFmODljYjRiMDJhMGQ3NzYxNDhjMDhmMTg5IHJlbGVhc2UyNC1tYWludAorMzgzNTEgZjI0NmU0NDg1NjM3YTk0ZTQ0MTA4MGU2NWI1OTVkZDc5NzBjMjg2YiByZWxlYXNlMjMtbWFpbnQKKzM4MzUyIDdmNTI0MTdlNTMwYjM0ZGIyOTA2OWJjMjhhMjU0ZTljYjFkMzMyMjggbGVnYWN5LXRydW5rCiszODM1MyAyMzY5ZGZlMmRhZDQ2OWVhNWM5ZDBmMjg5NzI5MTlhM2RhM2MwZDMxIHJlbGVhc2UyNC1tYWludAorMzgzNTQgOTcyNDE3NDI2MjI0N2EzYWFlNzA3MGRkNWRkNDE2OWYyMWI2YWNiYyByZWxlYXNlMjMtbWFpbnQKKzM4MzU1IGI3NDU1OTVkNDFkMWYxNjM0MTgwMGRiZDBlYzQzZmJkNjQ0OThiMTUgcmVsZWFzZTI0LW1haW50CiszODM1NiBlM2Q3NDgzMGVkMmZhN2Q1ZjNiYzYyYzk3OTA4MjgxMzc4ZDAyNTRhIHJlbGVhc2UyMy1tYWludAorMzgzNTcgYjliYzQ5YjUzZjRkNjI1ZDVjOTQzZTY2YzFmOTU3MmFkZWQzNmQ0NCBsZWdhY3ktdHJ1bmsKKzM4MzU4IDM2YWJkZDQ3OGUwNzQxZjI0MGI0OTlkNjc5MjI5OGIzMmM3Njk5NjcgbGVnYWN5LXRydW5rCiszODM1OSA5YzYyZTdkNjkwYTUyYWE5ODVkMGJiYjZmNzg4NzYxZDRmOTVlYTgyIGxlZ2FjeS10cnVuaworMzgzNjAgZTg1MmNmNmFiNWI1NTIxN2E5ODUyOTVmMDZjOGFiMzkwMzBlNjYyMiBsZWdhY3ktdHJ1bmsKKzM4MzYxIDRhMWZlZmRmYzc5MzA0NjMzMzFmODNlZjc4NjU4NGQzMmZhYzE3YjggcmVsZWFzZTI0LW1haW50CiszODM2MiA4YzllM2VkNTk0ZmVkMmM4NjYxOWMyOWFlZjU0OWUwYWMzOTgxNWE3IHJlbGVhc2UyMy1tYWludAorMzgzNjMgYmIwNjU0Y2Y1ZTUyMDVlMzczOGRmM2RjZWNkNjYxYzkxM2JkY2Q0NyBsZWdhY3ktdHJ1bmsKKzM4MzY0IDRkMjllYjNhM2RkYmYyYzMzYTBlM2NjNDE2NmFkODc1ZjJlZTZlYzYgbGVnYWN5LXRydW5rCiszODM2NSA0MWYyOWUyNmY2OGY0NDgwOGQzN2U2MmIyYzE1NTQzYWNiY2E0ODRhIGxlZ2FjeS10cnVuaworMzgzNjYgNDIwOWVjMTcwNmFiYTE3NTdjNDFhZmMyM2I3MWE4Njk2Y2QxNjdkYiBsZWdhY3ktdHJ1bmsKKzM4MzY3IGE3MmVlNjNjNmM4NDkwMjE2Yzk3MmNjZWFjZWEyODk1MzRjOTk1YjUgYXN0LWJyYW5jaAorMzgzNjggZmM1ODBmZjAwZjZmNTcwYzlkYzFlNzBmYjdiN2JhY2JmYjU5ZjczOSBhc3QtYnJhbmNoCiszODM2OSA2YjFjN2IxOGY1OWQ4N2I1ODFjYjIzNzQ3ZWZjYjQ1Y2E4Y2YxZDMwIHJlbGVhc2UyMy1tYWludAorMzgzNzAgNmU3MDMzYzc0YzcwYjdjMDhlOWRjNDZlMzFlNWY4ZmQ5NWMwNjQ4NCBsZWdhY3ktdHJ1bmsKKzM4MzcxIDY4MDIwYmQxYjllMmUyZWM5MzE0ZjNiN2Q3OTUyZDc0OWUzOGU0YzEgcmVsZWFzZTI0LW1haW50CiszODM3MiA2YjZlNmI5ODJhYzg1N2JmNzViYTdhY2MwNDY4NDM1YzBmZWFmOTViIHJlbGVhc2UyMy1tYWludAorMzgzNzMgMDhlM2NhOGZiMDcxZjU5YTdjMDJjNzEwZTk3ZjE5NjhlZTU4ZTkxZSBsZWdhY3ktdHJ1bmsKKzM4Mzc0IDRkYTQ2MjU4YmZmOGNlYzk2MWYxNjZjMjY3ZTYyZGI3NmMyNmQwYzcgcmVsZWFzZTI0LW1haW50CiszODM3NSBjOTMzN2M5ZDJmMmE5NDY2MWQxZTBhYzA4MmQ3YTdlZTJjM2IwZDU5IHJlbGVhc2UyMy1tYWludAorMzgzNzYgOGY2MDllYWFjM2YwMDJhMzBjMDVmZGQxNDBhNDQ0ZTQyZDdhOThiMSByZWxlYXNlMjMtbWFpbnQKKzM4Mzc3IDUxNmNhMGI5Mjk3MWI3MDM5ZWRiNWY2MDQyMzMzZTJiODA1ZmRiY2IgcmVsZWFzZTIzLW1haW50CiszODM3OCBhYmIzYzFhZDAwYTdiYjUxYzNjZWY1NTU3NDNlMDdmN2ZiOGIwNjE4IHJlbGVhc2UyMy1tYWludAorMzgzNzkgYWU3MzI4Njg5N2EzNGEzOWUwMWE5ZjE2MzMyOGUyMjcyZmE4ZjkyOSByZWxlYXNlMjMtbWFpbnQKKzM4MzgwIGMxNjQxZWVkYTdjOTI4NTUwNzI2OWFjYmZlYjFjYTQ2OGVkN2YxZjcgcmVsZWFzZTIzLW1haW50CiszODM4MSA0NDBjMjViZDk5ZGY4NWM0OTRhOTYxY2U0YmFkZjJhNjA4M2Y0NjFiIHJlbGVhc2UyMy1tYWludAorMzgzODIgODcyMjRmMmM1ZTEwMDAyZGE0ZDBkYmQ0M2JkNjQ5MjFmZTdjYTgyOCByZWxlYXNlMjMtbWFpbnQKKzM4MzgzIGM0Zjc2ZWQyZWFmYTNmN2E1YjdkZmQ4YjI5MmEzYmY5NzE3OGU5NjAgcmVsZWFzZTIzLW1haW50CiszODM4NCBlOTQ5ZDQ2MzU3MmNlNjYxMWMzMTczNDQ2MzYzZThmNjZkY2I0ZThhIHJlbGVhc2UyMy1tYWludAorMzgzODQgMjYzOWIxMGRhYTk4NWIyMGIzY2FiZWM0NTE2OWQ1MjNjYWMyOWQ2OCByZWxlYXNlMjMtbWFpbnQKKzM4Mzg2IGJkYTkzMzg3Mzc1OGU1NGUzY2Q2ODkzNzQyNTFhZDNmMzFkODViYTEgbGVnYWN5LXRydW5rCiszODM4NyAxOGJhMDg1Y2M4YmJiZjVmZWFkM2I4YzU2ZDVhNmJhMTMyOGE0MTA0IGxlZ2FjeS10cnVuaworMzgzODggMTMxNzZlZDUyZTY1YzQ4NGRiY2Y0ZjgxZmI4ZTc4NDVmM2EzMWZmZSByZWxlYXNlMjQtbWFpbnQKKzM4Mzg5IDZmMmRkMDgxZmUwNTEyNjY4MjA2MTAyYmZkYmQ4MjAxYjNiNGYyMWQgcmVsZWFzZTIzLW1haW50CiszODM5MCAxYzM0OTA2MGFjMDhmMzcwYmE2YzIxNGMyMzUwNzE5NGVkYmYwNGZiIGxlZ2FjeS10cnVuaworMzgzOTEgOTEwMzg4MDFlYjQ1ZmMzMmJhYmM4NDM0YjBhNGYzNzUzYTdiY2FiMyByZWxlYXNlMjQtbWFpbnQKKzM4MzkyIGNiNzg5NmQ3N2RlNTIyZjI0YjkxYzcwNWJlZGZlODIwYmNlMzBjNGEgbGVnYWN5LXRydW5rCiszODM5MyA5MjVkNTRkZjkyYmU5NTBiZDVlZGI3ZTY3YjViNTY5NDQ1MWYwMmNjIHJlbGVhc2UyNC1tYWludAorMzgzOTQgNTQ4MTM0YmEyNzlmZWMyOTQwM2VjNzg0ZmY2YTI3MjdlZTJmOTU1YiByZWxlYXNlMjMtbWFpbnQKKzM4Mzk1IGUzMDc0ZTk0ZmI3NTVlMGQxMGFmZmVjMzI1MmEzM2E1ZmFiMzY2MGUgbGVnYWN5LXRydW5rCiszODM5NiA2NTg1MTI3NzQ0NjgxNTE1MTIxYmIyMWZiM2EzYWJiZTVjMTMxOWQ4IGxlZ2FjeS10cnVuaworMzgzOTcgOWI0ZTMxOGQ2YzcyNjc0ZWRiYTllMTc2ZDk1OWYyM2YxYzFmNWNkMiByZWxlYXNlMjQtbWFpbnQKKzM4Mzk4IDZjOTBjYjc2NmU2YmE0MGUyM2VkMjRhM2NhOTNhOWZiZDg1YzYxOTAgbGVnYWN5LXRydW5rCiszODM5OSA4OGMyOWU1MWIwMjlhMThjMjkyZDI4NDg4ZWNiNmJiN2ZhYTZkNmJiIHJlbGVhc2UyNC1tYWludAorMzg0MDAgNWZkNTA2NTE2MzYxNGRkZmIyYjIwZDViMzZjODEzYWFlNWY1YWUwNiBsZWdhY3ktdHJ1bmsKKzM4NDAxIDgwNGM1NjczNjQzZTZlZjUwMzhlZWYyYzI5NzdmNjhmMDU0MjRkOWYgbGVnYWN5LXRydW5rCiszODQwMiBhNDIyNWNkYzIwNDdmZDBkNjJhNzhiYzcyMmZlYmQ4MmExOWVlNGZjIGxlZ2FjeS10cnVuaworMzg0MDMgZjQzMDcxOGY4YjQzMGU1NTUxOTUwNTJlMzYxY2VjY2ZiNTU2YTAwNSBsZWdhY3ktdHJ1bmsKKzM4NDA0IGYwMTM0MjMyYmQ4NGRiMzMyODdiMWNkYWRiN2RlMmMyYmUwYjZlZDQgbGVnYWN5LXRydW5rCiszODQwNSAwYmUxNzI1OWFhYzg4NmM1YzVkNGI4MzcyOGQzZjBlMWQxNGQ0ODJlIHJlbGVhc2UyMi1tYWludAorMzg0MDYgNzM3NjQ5YTZjOTM1YzlmMGIwOGY1NmNjOTFiMWIwNTNkYTIwMzk5ZCByZWxlYXNlMjMtbWFpbnQKKzM4NDA3IGI4NDZkZDFiOTc1MTBhZTkyM2JhZmY4YzA4NjcxYzQwM2M1ZDZhY2MgcmVsZWFzZTI0LW1haW50CiszODQwOCAxYzA3MjYxNWU1Yjg2ZTM2ZGZjOTQ0YmE3NDMxMGNjMDk4ZWUwODYzIGxlZ2FjeS10cnVuaworMzg0MDkgY2Q3NDMyMWVjZGM0N2E3MTMxNThiNjVlZmJkMGMyODBkMzliY2I0OCByZWxlYXNlMjMtbWFpbnQKKzM4NDEwIDY5ZWQ3ZTkxMmIzZDI5NzAxNjFlODczODU3YjBlOWI0NWRlNmI0ZWMgcmVsZWFzZTI0LW1haW50CiszODQxMSBjY2Y2MjcyZWVkZjQ4NGM1NzQ5NjhhMTYyMjA2OGQxZGI1ZGRkOTI4IGxlZ2FjeS10cnVuaworMzg0MTIgMWI3OGZjMjk2ZmM4OTU4ODlhOWRmMmIxN2UxOGQ3ZmQ2Zjc5OTk1NSByZWxlYXNlMjQtbWFpbnQKKzM4NDEzIGM2OGJlODY1OTA3NWJiYzk5YmE4ODVlNzU3ZjYxZjcxZTk2N2Y3OTUgbGVnYWN5LXRydW5rCiszODQxNCAzZDAwYjY0MjU1MDU3ZWNjOTk1NzA4YTAwMzQ0ZjcxOGNiZDM2ZWY0IGxlZ2FjeS10cnVuaworMzg0MTUgM2Q5OWFkZWZiZjNjMDUwZDU2NTE4Y2E5MTRiYmU2ZjcwZTJlNDdjNCByZWxlYXNlMjQtbWFpbnQKKzM4NDE2IDMyMGM3NjQzZjhlOWVmOTkzNGM0MDY4YmUzYjEzZTQ1ZTE4NTMxZmUgcmVsZWFzZTI0LW1haW50CiszODQxNyA0MTc0Zjk3OGU1NjQ3MzJkNGVhN2U5YTZiODA5NTBkYzliZWMwZjQ0IGxlZ2FjeS10cnVuaworMzg0MTggMzdiMmYxMWMxYTAwNWY3MWRjZTkyNTdjNzU2ZWE2M2YyZjE2NjM4OSBsZWdhY3ktdHJ1bmsKKzM4NDE5IDgyNTlmZjNlZTQ5MzYxMjdhMTA3YzdhNDU0NjFhMjJkMzQ0MTMxM2UgbGVnYWN5LXRydW5rCiszODQyMCBjYTkxNzk5Y2VjYmEwMTM0YmMzOWY4ZDI1MzQyODkzYTJjYmU5NTZlIGxlZ2FjeS10cnVuaworMzg0MjEgOWVlOTlhMzU1NjhkMDFmYThiYWY2MmEzZjBlMmQ2OGYwNTAyNDY2ZSBsZWdhY3ktdHJ1bmsKKzM4NDIyIDQ2NTcyNDQyNTM3MDA5ZTM3ODM0ZjE1MWE4NDc1M2UwZTYxZTNhODkgcmVsZWFzZTI0LW1haW50CiszODQyMyA3ZTUxMDNiNGIyODlkN2FiYTg5YjJlZmU5NTU1MWJmMDIzMjM0NWJmIGxlZ2FjeS10cnVuaworMzg0MjQgZjI0MTE3YTM2MjhhYWRlNjAzYjAxOGM2YjYxNTMwZTQ3NjZhMGZiMiBsZWdhY3ktdHJ1bmsKKzM4NDI1IDlkNjZmYmE3ODQ0NGYxYjIxN2Y2NjQxMjVkZDEwNzQwMzNiMTE0MDcgbGVnYWN5LXRydW5rCiszODQyNiA3YzhmMzM3OGY2ZjYxYWVlOWE3NGE3NDUxZTE2YTVlM2E3MzVhZTFkIHJlbGVhc2UyMy1tYWludAorMzg0MjcgODM1YjY0NWExNjhmNzRjMDFhNjU4Nzg3NjEyY2IyNDA4ZjZmZDJmNSBsZWdhY3ktdHJ1bmsKKzM4NDI4IDFjMjk0M2Y5NTQ2ODYzOTYwM2JhMGFmZjMyYzNlMmI2NzFkNGIzODAgcmVsZWFzZTIzLW1haW50CiszODQyOSA2MzE0ZTk0ZDBkMzVkOTdiYTJkYjgzYTU3MzMzMmEzNjY3NmI1MmQxIHJlbGVhc2UyMy1tYWludAorMzg0MzAgNjg1OGMyNDg0MDEwODIxMzEwMmIwYWViNjBiOTA5OTk0ODc0MzFjNCByZWxlYXNlMjQtbWFpbnQKKzM4NDMxIDAyOGY5MmU0NGI0ODE0N2ZiZjM0NTc2NDk3MTYwZmM3ZmNhOWZmYzEgbGVnYWN5LXRydW5rCiszODQzMiBhMjRlNzBmNDY4NGIxZDBiZjY5YjkwMTI1ZTg5YzI1NWZmN2E1YzJiIGxlZ2FjeS10cnVuaworMzg0MzMgY2QwNGYyZDE4YTZmY2NmOTE4MjQwZjg4MGJhMzA1OGM4OGNmNjkwYSBsZWdhY3ktdHJ1bmsKKzM4NDM0IGM4NzhiZDAxYjgxYTE2MzQ3ZjY2YTYwYzY0OWQ3MDlkNDNiMTUwZWQgbGVnYWN5LXRydW5rCiszODQzNSA5M2YyNjY1ZWFkNWUyZGNkZWMxYTA2OWRiN2IxNTg1Y2VlM2U1YjZiIHJlbGVhc2UyMy1tYWludAorMzg0MzYgNmEyNDQwZDA1ZjUwYzMyNzJlNjczZjgyMDc2NGY1Y2QyYjFlNjdhYyByZWxlYXNlMjMtbWFpbnQKKzM4NDM3IDNjMTQ0YTNjOTExYTdiZTFiYjQ5YTM0MjhkZmFjMWYwM2MwNjZiNzMgcmVsZWFzZTIzLW1haW50CiszODQzOCBlNjFhYTg2MjE1YmNhNzk3ODNmYzEyMWU5ODIxMWI5ZWNkMTM4YjRjIHJlbGVhc2UyMy1tYWludAorMzg0MzkgYmI3ZjM2YWM5ZjNhODc4ODk3MWU2ZTJlNjBmODNlZGJlOTczYjI0YSByZWxlYXNlMjQtbWFpbnQKKzM4NDQwIDI5ZTZiZDcwOGZlNzVkMzY0MGYyYTM2NGUzZDE3ZDQyODk5YjRiZGUgbGVnYWN5LXRydW5rCiszODQ0MSA0MDQwYWEyMTZiOGFiMTZmYzA5Y2M0OGQwZjZjMzNhZGM3YTdkNzk0IGxlZ2FjeS10cnVuaworMzg0NDIgN2ExMjc3ZmFkMDRlOTI2NTdmYzk3ODM4NDllMjBiM2I1NjAwMDg4YSBsZWdhY3ktdHJ1bmsKKzM4NDQzIGY3Nzk2NmRhNmRlNWRiYzJjODAxN2ZjNzg3YmI4NTM2MDdlOWY1ZTMgcmVsZWFzZTIzLW1haW50CiszODQ0NCA4OTFjMzFkYWRhNGViOTI1MTFiYmZmMWZlYzc3ODBlM2YzMWUyN2I3IHJlbGVhc2UyMy1tYWludAorMzg0NDUgNzA1YjdmYjkwMDU2Y2FlZmM2YjRkZTZhMDIyNjExOGRiY2YzMDU5ZiByZWxlYXNlMjMtbWFpbnQKKzM4NDQ2IDM3YjZkZDM4ODU2ZGRlMzg4NDIxODllYTNjNWY5MDJlOTdmNDYzYTUgcmVsZWFzZTIzLW1haW50CiszODQ0NiBkMjI4NTA5NDI0MTcyZjk3N2VkYWQ0Zjc4NjBhOWM3NDdjZDY1NWM4IHJlbGVhc2UyMy1tYWludAorMzg0NDggZmYzY2E2NTZjMjgxZGViZmQzNjBmMzdkMDIwMmY1M2QxMzFjNGM4OCByZWxlYXNlMjQtbWFpbnQKKzM4NDQ5IDg5YjhjY2YxNGMwYzAxNWVlOWM2Nzk3MzQ0NmQ1ODYxYjlhZDgwYzMgbGVnYWN5LXRydW5rCiszODQ1MCA5YzY2YWI1NGMxZWNmZjllYmRlZTYwMTU3M2I1MzFlNzNmM2Y5ZjlmIGxlZ2FjeS10cnVuaworMzg0NTEgZTY3YjU4N2ZlZDc3OWMyMTEzMzhmMTg1OWYyZTAzOTgyMWYyYzlhZiBsZWdhY3ktdHJ1bmsKKzM4NDUyIDNjMTcyYzgyNmVlZDM2NGQzYzlmMmM5ODI0ODdhYTRkMGM5MTZmN2UgbGVnYWN5LXRydW5rCiszODQ1MyAxOTMyN2RiNzVkMWM5MmUzNmMzNjFiZDExOTJiMWVmNTQ1NzU5OWFmIHJlbGVhc2UyNC1tYWludAorMzg0NTQgMzY5ZThlNzFlYTMzOTE2NzhhYWRjMDg0ZTI2ODhhMTQ0ZmRiY2RmNiBsZWdhY3ktdHJ1bmsKKzM4NDU1IDQ1NDVhMTU0ZmFjMTU4M2JlNDFiYzc5ODg4MmJjMGUyYmI2MTEyZjQgbGVnYWN5LXRydW5rCiszODQ1NiAzZmRmYmNiNDAxMzBjZTNhNTQzZDVlOTdjYzA5ZTQ2MDcwMWE0OWEwIGxlZ2FjeS10cnVuaworMzg0NTcgNzdmYTMwZTdmMTJiMDZkMzZjNjhlMGVjMzUwODg1N2M2NjMzOTk3YyByZWxlYXNlMjQtbWFpbnQKKzM4NDU4IDYwN2M0OGI1ZWZkNzI2MTU1MGFiZDIxOWY5MWVhOWI2YjcyMGY0ZjQgbGVnYWN5LXRydW5rCiszODQ1OSA1YzI2MDg1MDQ5NjdhMmExNzg0YzNjNmQxNDMzZWJjYzhkZDM1NDAzIGxlZ2FjeS10cnVuaworMzg0NjAgY2E3YzE4ZWY4YmRjMTAyY2I2NDg0NTI1OGMxNjMwZjBmYmY3MjZiNSBsZWdhY3ktdHJ1bmsKKzM4NDYxIGNiNDdkNjIyYWExZTJmYzExOWZjYWRjYjQ5ZGIzMTkyZWEyM2FjOGQgcmVsZWFzZTI0LW1haW50CiszODQ2MiAwYTZlNzc5ZDM0N2Q2ZjE3NWUyOWRjY2MwN2NjNjEwNzFmZDBjOTg1IGxlZ2FjeS10cnVuaworMzg0NjMgODZhYjNhNzVmZjA4NmI5NmU0ZDdmYWIxY2NhMjZjNjE1MGE0YmM3NCByZWxlYXNlMjQtbWFpbnQKKzM4NDY0IGI5NGYyMjQ3Mzg4ZTkyYmQwZTlhMTczN2VlMDAwY2FmYzQ3ZTEzMzUgbGVnYWN5LXRydW5rCiszODQ2NSA5ZjE4M2EyNThiZWQwZWU5ZjYyYjNhNDA1M2YyNjA4MmI3NzQ0NmQ4IGxlZ2FjeS10cnVuaworMzg0NjYgN2U3ZTg2ZjQ1MjU1YTk1OTQ4MjBmYWRlNmJmNzlkZDRmZWQ0Zjc5NyByZWxlYXNlMjQtbWFpbnQKKzM4NDY3IGU5ZWMyY2UzNDBmZGM0NDIwZDM2MWY1MzgyZWJiZmMxNTEwOTNiZDcgbGVnYWN5LXRydW5rCiszODQ2OCA3MGNiMGMzZmU0YTc0NzVlMmY5ZTk3MjRlNGNiMzQ5YWZlY2RkYTBkIGxlZ2FjeS10cnVuaworMzg0NjkgYTg5OWQ2OTBmMjY0MDc0ZmViNWEwYmUzZTRlZjIwZTdkMmJkYTUwMCBsZWdhY3ktdHJ1bmsKKzM4NDcwIGZmM2RlZjc3YjEyOTVmMzMyNjk4YzZhMjM4MWEwYmIxOWFmY2M2MTEgbGVnYWN5LXRydW5rCiszODQ3MSAxYWUyYzNiNjZlNTdhMzQ2MzdmOWU0ODNhZWI3NDEyNmI2ZjcyYTAzIGxlZ2FjeS10cnVuaworMzg0NzIgZmE1MmYxZmZjMTYxMTU1NzUwNjkzMTA4OTVjMGQyNWRmOWM4NmM2ZiBsZWdhY3ktdHJ1bmsKKzM4NDczIDM3NmE3MWY4OTc5YmExZDU2M2M4ZDlhYzg1NjFiZmEwMzIxNmI3ZTQgbGVnYWN5LXRydW5rCiszODQ3NCAzMmI4OTYwNmYwY2RhMTdhZTY0ZWNjYTY0NWUxZTNiMTQ3Zjc2NGZlIHJlbGVhc2UyNC1tYWludAorMzg0NzUgN2Y3YzNkZmJhOTg1NjIwYzZjNDkwMDE3N2UxMjlkNDcyYWUzOTAwOCByZWxlYXNlMjQtbWFpbnQKKzM4NDc2IDFhOTg5ODNlNTk2MzBkY2MwYWVlODAzOTBjY2MzMTY5NGUxYWM5ZjIgbGVnYWN5LXRydW5rCiszODQ3NyA3ZmJhNWNjYzk2MWUxNGFkOGYxM2IzMGVhZTc1NjkyNTJiY2Y0NmIwIGxlZ2FjeS10cnVuaworMzg0NzggNjc5MzdhMzg1MmZlNDQ4MmVkMzZjOWNlYzA4OWMyZjg3M2Q5Y2RjMCByZWxlYXNlMjQtbWFpbnQKKzM4NDc5IDVlN2FkZWQzMjUxZWQyYmVkOWFmNWRmM2VmZTM1NjQzYjMxMjY2MzkgbGVnYWN5LXRydW5rCiszODQ4MCBkODA0YTUwYTIwYWI1Mjc5ZTcwOGVjYzI4ZjIyZTYyMGIwODYwOTU3IGxlZ2FjeS10cnVuaworMzg0ODEgODA5OGM3YzI3MDk3MWUyZDJhMzIwYjViYjY5OTBlOWYwNWZmOTgwYyByZWxlYXNlMjQtbWFpbnQKKzM4NDgyIDI0YTMzMzc0MWNlYzk5YTA5YzllOGU2NzQ1NzJjNjgwZTUxYjhjNTYgcmVsZWFzZTI0LW1haW50CiszODQ4MyA3ZGFlMWE4MWNlZDgzODA1ZjI4NjhkZmI2NDdmZmZkMWRlMzE4ZjBmIGxlZ2FjeS10cnVuaworMzg0ODQgNzc3MDNlZDU0M2ExMGYyZDFhYWEyY2I4ODM4OTViY2IwMzFlY2FkZSBsZWdhY3ktdHJ1bmsKKzM4NDg1IGQ0MzljNzQ4YjQ1NDUxY2RiNDc2MjczOGFkOTBhZGY3OWEyN2JkM2MgcmVsZWFzZTI0LW1haW50CiszODQ4NiA4YjRkZDJjMWMyYTA2M2YwM2I3MDBhNzQ4OGU0Zjk3ZmQwNzlmZTkwIGxlZ2FjeS10cnVuaworMzg0ODcgNGIxMjA3Y2IwMWVhNjZmY2M3MjRmYjY1N2NlNmNmNWIwMzM2YjZkNCBsZWdhY3ktdHJ1bmsKKzM4NDg4IDgxMzAzMGU0ZDdiMGExZGFjZGU0MjFhNDYzOWU2YjJkZDhjZGY2YjUgcmVsZWFzZTI0LW1haW50CiszODQ4OSBjNjBmZGU4YjAxMDZiMDk4OTJjNTQ0MjRkYjZlYWZmYzM3YTFiN2Q5IGxlZ2FjeS10cnVuaworMzg0OTAgN2M1NzMyNjUyYTIzY2JkNzFlOWJmNmRjYThiNWNlNTczMDA5ZDNlYSBsZWdhY3ktdHJ1bmsKKzM4NDkxIDYxOGNmMjRjMzI5Zjk5ZmQ1YjAxN2JiM2IwN2NhMzFhYmIzYzlhODcgbGVnYWN5LXRydW5rCiszODQ5MiAwN2NmMWExNjQwZGE0MTIzNDlkZjQ3MDc3YzhiMTI1M2JjMjMxM2U5IGxlZ2FjeS10cnVuaworMzg0OTMgYTRkMTM5NzRmNmViN2M0ZGY5MDEwNDEwMjAyNWI0ZTNiNDBkYmVhNyBsZWdhY3ktdHJ1bmsKKzM4NDk0IGFjNmRmYzY3Yzc3ZmY2ZDFkOGFjYTYxYzEzOWY2YWJjNmYxOGQ5NDAgbGVnYWN5LXRydW5rCiszODQ5NSBhMzZjNWZkMzBlMjEyN2FlMTJkZDUzOWY2Njk0Nzg3ZTkzYTFmMGUxIHJlbGVhc2UyNC1tYWludAorMzg0OTYgOWYwMjI3NmQ1NGNiNGVjMzJlYzM5YTUyODIxNGI5OTk1ZjIzNjBjNiBsZWdhY3ktdHJ1bmsKKzM4NDk3IDAzODZjYzFlZTk2NGU0ZDQ4Nzg0MjdlZTNhYWZjNzg3Y2YyZTFlMDUgYXN0LWJyYW5jaAorMzg0OTggZTBmNGViNjRkMDAzOTFlM2M0NmI1ZjI4OTA1OGIyOWZmMmZjYWNlYyBhc3QtYnJhbmNoCiszODQ5OSAyNjc2ZTA1YzAxZjIxYWE4NWNlMWNiZTVjN2Q1ZWI3ZWRkMDg4NWQ2IHJlbGVhc2UyNC1tYWludAorMzg1MDAgYzk5YWU4NjM1ZjNiNTRkYjg4MzkwNGQzYWJjZDczMGYxMjhiOGJmNiBsZWdhY3ktdHJ1bmsKKzM4NTAxIDBkZDE0NmZlZDlkZGEzY2UzZmI5YWNmOTUxZWQ4MzEyMTY1MTM1OTggbGVnYWN5LXRydW5rCiszODUwMiA1NTZmNmYxMDU2YThmNmQ1ZDAzYTI4ZWJmZjRiYzMzZjk3NDUzZTdiIGxlZ2FjeS10cnVuaworMzg1MDMgMWVkZWE0YzJiMDExYjUzYWZiYmI1M2M5M2M0MDIwMjliMzI5Y2M0NyBsZWdhY3ktdHJ1bmsKKzM4NTA0IDUxNmJiOGZkNzViNGJkNTc5ODFhY2YxYTc3ZmNjZTMzMTc4YmIwZmQgbGVnYWN5LXRydW5rCiszODUwNSA3NmM5YWI4NWY1YTg4NzQ1MjQ2N2ZiMjE1MzJlNGNkMTFmZjJmYTMzIGxlZ2FjeS10cnVuaworMzg1MDYgNWZkZTE3YjM1NDcyNTRiYWJhNjQ5OTlkMjEwMTllNjQyOTljZTVlMSBsZWdhY3ktdHJ1bmsKKzM4NTA3IGM1YTQ5OGMxMDcyMzU5OGI5YjRmMTk3NGM2YWVmY2U5YTE2ZTU5ZDkgbGVnYWN5LXRydW5rCiszODUwOCBmY2FjZjlkNGI4ZjBmYWViNzU2MmY5NmNlODY4YjE4MTU4NGY1NzNjIGxlZ2FjeS10cnVuaworMzg1MDkgZDI1OTk4NDk2MjA2NWZlNThiODc2ZjQ1NTgyMGVkZGQwYzA0NjM1YyBsZWdhY3ktdHJ1bmsKKzM4NTEwIDNlN2EyMGMyOTdhNjBlNmU3ZGRlNTAxYmFmYzlmOWU0MmUzZGI3MmEgcmVsZWFzZTI0LW1haW50CiszODUxMSAwODBkOGNmZWQ5ZDRhN2E1NGQ1Y2NiZWVjN2UwYWM1NjAyYjJiZTFjIGxlZ2FjeS10cnVuaworMzg1MTIgNjYwNDE5YmRiNGFlZjliYjVkZTI4NWM3NjVhZTZkZWUxNDJmMGM5NyBsZWdhY3ktdHJ1bmsKKzM4NTEzIDQxNmI1MzRlOWNjOTY4ZWZmZWJjYWYxNzU1YmU5ZTNjZmUzODJmNWQgbGVnYWN5LXRydW5rCiszODUxNCA3N2I1NzA4N2ZlNDVkYjI0NzE3OGYwZTIzNWU0MjZmN2U0ZDI4ZjkxIGxlZ2FjeS10cnVuaworMzg1MTUgNDMyOWExYTAwNDY5ZDE2M2NhNTg0YjdlMDgwMzExN2IzZTIwZGY1OSBhc3QtYnJhbmNoCiszODUxNiA4OWNmMjVlMzY3OWFlOTlhNDkwMmJhYzA1MDE1YmViODYyNzc3YjcwIGFzdC1icmFuY2gKKzM4NTE3IGQxYjM1YWYyOTI2MzBiNjA5N2NmNmIzYmEyMDMwNWRjMWVkZGViYzAgbGVnYWN5LXRydW5rCiszODUxOCBhMmI3Y2I3M2Q5YjFkNzBlYmI0ODM1M2Q2NGNjZWNjODIzNTdkOTU0IHJlbGVhc2UyNC1tYWludAorMzg1MTkgNWYyNjI5ODgxMWI3MTQyYTZmNzMwODY3OGQ2ZDcyYmZmODZjMTQ1NSBsZWdhY3ktdHJ1bmsKKzM4NTIwIDNkMGJiM2IwNWQzOWYwYmQxNGQ5ZjhjNjllMTc3NTE4NDFkNDc0YmYgbGVnYWN5LXRydW5rCiszODUyMSAxMTc2ZjFiYjRlMWFlYTJmZjUxODI3MjBjNDZhYmJmNjBjMWYxYWMxIGxlZ2FjeS10cnVuaworMzg1MjIgNGEwYzIwMmVlNzg5YTM3M2Y2NDdkZDAwOTM0ODY0ZWUyOTc5YjI3NyBsZWdhY3ktdHJ1bmsKKzM4NTIzIGQzY2U3YTk0NjE2ZTkxN2NmZWRiZTAwMzZiNGYxMGZiMWNiODA2ZjkgbGVnYWN5LXRydW5rCiszODUyNCA2MzZkNmQ0MzNiNjI2MzdhZWQ0ZWZiMThiMzA3MWJkNDMxMmQ3NjI0IGxlZ2FjeS10cnVuaworMzg1MjUgZmQ2ZDM1OWNhMjY2MjIxYjdhZWY5YTYzMjY2ZGY1YWVlZjIyMzcyZSBsZWdhY3ktdHJ1bmsKKzM4NTI2IGI1YTI1YzU2YTg1MjNkN2Y5NDhhYjA2NjkzZjk2YzkxMGM4NWExNjkgcmVsZWFzZTI0LW1haW50CiszODUyNyA2MDUwYWU4NDJjOGYxYzg4YjlhYWEyMzU2MjVlYzRkODNkOWQ1YmM1IGxlZ2FjeS10cnVuaworMzg1MjggYzUwNWNiYjI2Y2VkY2QwNTBmNDZkMGI3ZTUxYjViNDBmYmM0NTk1MSByZWxlYXNlMjQtbWFpbnQKKzM4NTI5IGZhM2NkZDRmOWNkMDE3YTdlZWQ5N2UxNTdmMjRjOGQ3ZTY3OWE5OGUgbGVnYWN5LXRydW5rCiszODUzMCBiNDMxNWU2N2VkZjUxMGI5MmY2YmIyM2U5OTU0YTIzNmE0YzNjNjQ4IGxlZ2FjeS10cnVuaworMzg1MzEgYTlmMTYxZTM2YmY5MDQxZWUwZGE4NjllMTlmNWE4ZTU0NWIxZTU0OSBsZWdhY3ktdHJ1bmsKKzM4NTMyIGQ0OGZhMGFmZGNiYWZkNTBlMTQzMzkyMWI1N2RjODI5ZWM2ZWQ0NDMgbGVnYWN5LXRydW5rCiszODUzMyAxM2E5NTBhMzYyNGJjYWEyYjRkMjBiMGQ0ZDRkOWY1OTY2ZjJkM2ZmIGxlZ2FjeS10cnVuaworMzg1MzQgMTFmY2RiYjI3OWRlOTJhZWZhZDg5M2Y2ZDYyMTcxMmY5ODdiYjdiYyBsZWdhY3ktdHJ1bmsKKzM4NTM1IGQ5OTI3YTY1ZjVmOTJlMjc2ZDkyMjg2ZTZjNDNkOTMxYzExMTZkZDggcmVsZWFzZTI0LW1haW50CiszODUzNiBjYWMzMWI0YjVlNzhkNGQyNTc4OWRhMzUwNTM4MWUwZGFkZjgzZjQ4IGxlZ2FjeS10cnVuaworMzg1MzcgODYxYmU5Y2QwNGQ3ZWNkNDhmYzNlYzQwY2Y3ZTRjZWFlODQ2NTA5MCByZWxlYXNlMjQtbWFpbnQKKzM4NTM4IDRhYWZiMWM5YTcwZDkwMGU4NzFlZWUzMTM0MDc3NTcxYjE1Y2Y4N2EgbGVnYWN5LXRydW5rCiszODUzOSBlNDhiNWE2MWQ4MGJkNmViZDU1ZmE4ZDFmZmJmYjk3YjYyYmMyZTFmIHJlbGVhc2UyNC1tYWludAorMzg1NDAgYTZkMjMxNTEwOWE0ZjJhYzlhYmY2ZGI4NDUxN2JjYTkzMjI1NzkwZSBsZWdhY3ktdHJ1bmsKKzM4NTQxIDJmZDliODViYTY1ZmRlZmNkNWYyZmYwZDhkMGNmZDUxY2Y0ZWFjMTggcmVsZWFzZTI0LW1haW50CiszODU0MiBlNjQyMjUyNWMyNDAzMTg5NWNkNDkxMWE3OTkwZWE5OGVkMGI0MGJiIGxlZ2FjeS10cnVuaworMzg1NDMgNzU1NjQ1MzBmNTBjMWVmYjQwNWRmYjkyNzY2OGNmYWU2NzkyZmUwMiByZWxlYXNlMjQtbWFpbnQKKzM4NTQ0IDkxOGJjNmQ1NmQyNmY2NjEyNWZmNTRmNjkyNGE1MWNjNzE3OWMzZjYgbGVnYWN5LXRydW5rCiszODU0NSA5ZmE3NjhhOThjNWNhMzYxYjgwOGMyNjJjYmE2ZjBlODcyMWZjOTE4IGxlZ2FjeS10cnVuaworMzg1NDYgYjQwNTg2MTI5YmIwODcyYjVlMGMwNGJjMTE3NDVlMjc5MDA2ZWU2OSBsZWdhY3ktdHJ1bmsKKzM4NTQ3IDlkNjA4NDE5Y2RmOGQ1MzZjZWU5NDU1ZDIxYWYzYTNlZTk0OWU1NGEgbGVnYWN5LXRydW5rCiszODU0OCAzNzg1NjEwZmY3NjMwMWY0ZGY5OWI2MWRjZWVmODYxNmE4ZjBiZWViIGxlZ2FjeS10cnVuaworMzg1NDkgNDYzMDBiMWFhMmY2ODI1ZmRmYzQxMmQzNzA5ODdhNjYzZWM4YTFmOCByZWxlYXNlMjQtbWFpbnQKKzM4NTUwIDQ4MTJmNmE3ZjczNTU2ODNiMjJiNjJhYzczYWIwY2E1YzgxNzE4ZWMgbGVnYWN5LXRydW5rCiszODU1MSA4YzM1NjNkMDhjNjIzZGVhOGNiZmM3OWMyOTU4YTc4MmZiOTg2NzljIGxlZ2FjeS10cnVuaworMzg1NTIgOWIzYTJjNDMwMmFhYzA2ZTA5ZTlhZTg1NmZhNDJlMzIxZmU3MWFlMCByZWxlYXNlMjQtbWFpbnQKKzM4NTUzIDBkNDEwOGQzYTNhOGI3N2RmZjU4ZTEzNTFiMGIxNmMzNGZkNTcwZTAgcmVsZWFzZTI0LW1haW50CiszODU1NCA0YzY2YzE3YzRiMjgwOWIzNDRlNWM3ZjRlZDI5NDcwNDE2ZDU4NDU4IGxlZ2FjeS10cnVuaworMzg1NTUgZGI3YTgzMTBiMTlhOTRkNjE3YTk1YWYwZmU0NzUxOTE0NmZmYWRiMyBsZWdhY3ktdHJ1bmsKKzM4NTU2IDA4NWJjMjdmOTJiNzUxOWFmMzM2YTgzZDYzNDMzMWY2ODA4NmZkMzMgbGVnYWN5LXRydW5rCiszODU1NyAwMGU0N2ViMTM2YjJjMDk1MTUxYmNiMjU3NGQzNzExMWYzMGVmZmZlIGxlZ2FjeS10cnVuaworMzg1NTggN2ExYThlYzZkYzUzNDRjMGQwMjNiMDM4N2E2N2EyZDllNmZiOGYzNCByZWxlYXNlMjQtbWFpbnQKKzM4NTU5IDhmMDQ1NjQyNTcxNTgxNTEwMWQ5MDE0NjUwMjA4YzZiNDIyMjE1NWEgbGVnYWN5LXRydW5rCiszODU2MCA0YWJmMjFiZTE3ZDM1NDE5NWMwOWEzNzMzMDkxM2VhN2EzNzA3MWRmIHJlbGVhc2UyNC1tYWludAorMzg1NjEgZTlmZmFkNmQ4ODIyOGVjODNkZDc5ZWU0ZDBkOWUxMzkzMjFkYjJjMiBsZWdhY3ktdHJ1bmsKKzM4NTYyIDUxYWZiNmU3NzQ3NDA4ZTZmZTk3MGUwNzdmMWFiMWVkNzdiOGIyMjEgbGVnYWN5LXRydW5rCiszODU2MyA4MTk4MjU4NGM2MWJjNTYyNDZmNTllNmI2MjVmNzZhYTkxNTVhOGM5IHJlbGVhc2UyNC1tYWludAorMzg1NjQgNDgxMzk3NjgzZWFjZWYwZTliM2E4MWE4NTBkZmY0OTYzMDhmMmRkYiBsZWdhY3ktdHJ1bmsKKzM4NTY1IGVkNmVjMDAwYTEzODg5N2U1YzE3ZTY1YjdjNTg1NDNjZDQ3ODg1ZTIgcmVsZWFzZTI0LW1haW50CiszODU2NiA5MDMwNDVhNzBjM2ViNjA0NWJkOGYwYWViY2M2ZmMwYzVlMjg2YTNmIHJlbGVhc2UyNC1tYWludAorMzg1NjcgMGM0MDgwM2U1ZTRkNDA4ZTJjN2YxNzJmYmExYzYyZmNlOWU4ZmMwOCBsZWdhY3ktdHJ1bmsKKzM4NTY4IGY4N2E4ZDBkZjEyNTJiYjkxNTQ4ZTFkNGJiMWVjMGJkNjliYzM2OTYgcmVsZWFzZTI0LW1haW50CiszODU2OSA0OWQ3YmIyZTk2ZDJmNWNiY2NlYTFlNzQzMjczMGU5NDNlMzBlZTdmIGxlZ2FjeS10cnVuaworMzg1NzAgYWUwNjFmYzYzMThkY2UwNzI5ZjNkOTVmNDI3MzUzNzllYzE4NDJlMSBsZWdhY3ktdHJ1bmsKKzM4NTcxIGVhYzAxY2JjYWFkYTliYmQ3YmZkNTUwM2MyYzA1NDE2OWQzNDBlYWUgcmVsZWFzZTI0LW1haW50CiszODU3MiAxYWMyNGU5MTgzZTUxNzdkNjA4MmE3NmNlNWYzZmE4MjdmMGI5YmFhIGxlZ2FjeS10cnVuaworMzg1NzMgNGVhOWRlMDFkMzExNTZkYTcyNzdmMmFhNzhmNmY5MTA5MWNjNTZlMSByZWxlYXNlMjQtbWFpbnQKKzM4NTc0IGMyYjU5MWQ3ZjI5ZWZkZjlmM2JjZTU2MGYxY2YxNGU2ZjhiNDJkMmYgcmVsZWFzZTI0LW1haW50CiszODU3NSAwNzI1ZjBkNWE1Yzc1ODhhZjA5NTUwZDRkNzA1ZTM0ODgyOTg4MTZkIGxlZ2FjeS10cnVuaworMzg1NzYgODE3ZTIyNTA2ZmE4ZjljOTZjZTVjZTliOGM5M2VlNTAzYmVkMDdlZSBsZWdhY3ktdHJ1bmsKKzM4NTc3IDYwNGZmOTg5MTVlYzgxODU0NmIyZGFjZWJmMDFmMjYzMDZkMjM0MjEgbGVnYWN5LXRydW5rCiszODU3OCA5ZjA3OGQ3NjY4MDQ0NDc3NDI0NzI1NjQ0YTljMWNjYWJmMmZjMmE1IGxlZ2FjeS10cnVuaworMzg1NzkgYzA1MTc4ZjQxZGIzOTA3ODViMzI3MTNkOTM2NjZhYzc1YzBiOTQ3OSBsZWdhY3ktdHJ1bmsKKzM4NTgwIGEwZDNmNzczNTQzZGIyODFhNzY0NjQ4N2U5MWNkMzI3Zjg1ZTQ3MTkgbGVnYWN5LXRydW5rCiszODU4MSA3OTMwMmU1MDkxMGVlY2UyMGYyMTQwNjUwYjQyMmYzZTY5YzhhYTBiIGxlZ2FjeS10cnVuaworMzg1ODIgYTkxYTQ4YzlkZTAwYzlhYmE5ZjJhNjZhZWJiZDgzMjU4NjBjMmExMSByZWxlYXNlMjQtbWFpbnQKKzM4NTgzIDQxYTljYTg2NjAzODIwMzY0NGJhZmFhNjQyMDhhMTE5MTUxNjM2ZjkgcmVsZWFzZTI0LW1haW50CiszODU4NCA4NDg1OWI0YTYyYzZlY2RlNTY2NTE4MDFjZjU0MjY1OTg5ZGQzNjE0IGxlZ2FjeS10cnVuaworMzg1ODUgNWQwZDc2ZDdiMzFmZDg4MmUxYjFlMjdlMDJiZGE4NGRhYTBlODA2MCByZWxlYXNlMjQtbWFpbnQKKzM4NTg2IDEzMDlmNjliNGRiYmRlOGI3YzU3MDY1MTMxOWQ0N2E1NDY4OWViOWUgbGVnYWN5LXRydW5rCiszODU4NyA3ZGU3NmYzNGIzZGEyZjA5Njg1YTFmNGY5MWRkOGU1N2UyYjczYWI1IGxlZ2FjeS10cnVuaworMzg1ODggZjRkYTQ2Yjk0NTcwODkyMjM1YjEwNjNlZjg5ZTNiODRjOTIxMzJmNCBhc3QtYnJhbmNoCiszODU4OSA5NWI2NmQ5ZGIyZWU2NTlhMGMyYTI5OWQzYzQxNGE1NjJlOTYwMGNhIGFzdC1icmFuY2gKKzM4NTkwIDMwOThlZmU0MmEwZjIwODZjNDQwNTg0Nzk0MzllNTQwNjg2YjVmMDggbGVnYWN5LXRydW5rCiszODU5MSA3ZDJjOGRhYTQwM2I2MTljZmY3MGM4ZjU3MGM2OGMzOTA1MDFlMGY1IGxlZ2FjeS10cnVuaworMzg1OTIgZDY4N2E4YTA5YTcyZDc0ZDY0OGQ0Yjg5MGNlNjdiYWE3YTE2MTU4NyBsZWdhY3ktdHJ1bmsKKzM4NTkzIDBkNDRkOTA3MWU5N2ZiYzEwNjM5Y2E2NDVmNGYzMzdiMWUxZWNhOTkgcmVsZWFzZTI0LW1haW50CiszODU5NCBmMWZhN2JiMmJmOTk5MGY0MGNhMDliYWJkZTczNDhhM2IwOTQxNjgxIHJlbGVhc2UyNC1tYWludAorMzg1OTUgNjk3YjllZWM1NWRhODJjNGQ3YTBiM2Q2ZDk2NTU2NmFiZTJkOWE0MyBsZWdhY3ktdHJ1bmsKKzM4NTk2IGQ1NDQ5ZjFmODQwZWNkNGUyNjUyZGQyNjI0ZTg5YjM0ZjhkNTBiZTEgcmVsZWFzZTI0LW1haW50CiszODU5NyBmMjkwMTIxODFjZjAxN2I4ZmJhNWZiOGU3OWFhMmEyNWYyNDczMDJmIGxlZ2FjeS10cnVuaworMzg1OTggZTVkMTkwMzFhMjk1ZDc3YmQ4NjAwYTQ1MjllZmE4NTZjNDNmOTUzNiByZWxlYXNlMjQtbWFpbnQKKzM4NTk5IDZiNjg3NWVkZjYwN2UzMmI1ODhjZmVkZWRlMDgxY2ZiZTJjZTA0ODggcmVsZWFzZTI0LW1haW50CiszODYwMCA4NDcxM2Q0YjE5YWYxMzZlNGE0YTNmNTZjMDVmODA3NTJlNjhiNWUwIGxlZ2FjeS10cnVuaworMzg2MDEgNDRmMTQ4YmZjNmI4ODE3NWFiNjcwNDNlNjZlZmNlOWZjZjVmMmI5MCByZWxlYXNlMjQtbWFpbnQKKzM4NjAyIGRkYzIyNzZjMjQ3ZTY4NmY4ZjFhMDg0ODFiZWNmYTZmYWJmM2NjMGEgbGVnYWN5LXRydW5rCiszODYwMyA1MTZmMTU1MjE1OTg0ZGIzYjZhNDk0YzQ4N2VjMTNiNTFkMTVkNjI1IGxlZ2FjeS10cnVuaworMzg2MDQgYjU0MzNkM2M2ZGM4ODQ3NmYyMjgwOWZiYWM0OGQ0MzE1NWM5MzVlMSByZWxlYXNlMjQtbWFpbnQKKzM4NjA1IDIxZTY1NzdmZjA3NGUxMTZkZjZhNzMyMzJlOGRhOWI2M2JkZTYxODEgbGVnYWN5LXRydW5rCiszODYwNiBiMTIyZmQ5M2E1YjUxNmUwMTkwZGZiMzYyZTdkMDA1OTMzMGQwZTk3IHJlbGVhc2UyNC1tYWludAorMzg2MDcgMTZjZWYwOWE4MzQyZGFjY2FmY2I4NTgxOWEyZGJmZTE3MTQxNDkzYiByZWxlYXNlMjQtbWFpbnQKKzM4NjA4IDk5MDZlNGRhMDg2ZmRjY2Y0NGM3ZWZlNTM5NTY0NTNhM2QyYzNjNjcgbGVnYWN5LXRydW5rCiszODYwOSA1MmI2NTFhOTc1MGQ1ZGIzNGNhMDIxZWE0YzNhZTdjNjQ2MTU2OTA5IHJlbGVhc2UyNC1tYWludAorMzg2MTAgNDMwMzU2ODM5ZDI4NTkxZTYyMmZhODI2ZmUzNmQ4NjBhYjgzNzhlYyBsZWdhY3ktdHJ1bmsKKzM4NjExIDJjNzMzNjdmNTRlZWVjODk2MjYzNWEwZDE2NjQwMDRmMzE4MDFiZTEgbGVnYWN5LXRydW5rCiszODYxMiAwMzQ5MjU3ZTFlZDUyZTFmNzkyZjg2MDU3MmE5MThiZjc2MzY4NzA1IHJlbGVhc2UyNC1tYWludAorMzg2MTMgYjE0MjdjZmYyZjgzMjExYjcwYWNhMzJjMTQ5OGE1M2M4OTQ1ZjNjOCByZWxlYXNlMjQtbWFpbnQKKzM4NjE0IGNmYWU0YjEyMDZmOGFjOWQ1MGIwYjRmNzYyZTY3NTQxMjMwZGE1NDMgcmVsZWFzZTI0LW1haW50CiszODYxNCAxMTk1ZjliYTM0MzkwOTdjYzViNWEzNjdlM2FlMWI0M2YxNTdiMjY0IHJlbGVhc2UyNC1tYWludAorMzg2MTYgMGJlMDVlYmExMTZkODE4NGQ4NmVhMWMzMjk4ODMzMWU2NGJlYmEyNCBsZWdhY3ktdHJ1bmsKKzM4NjE3IGVhMDI0YTRiMjliNmQxMTEyZjZiOTE3ZmRmZGYyNWRmYzU4MDM2OWQgcmVsZWFzZTI0LW1haW50CiszODYxOCAxYWZlZmNmMTRmMDYzOGMzYTU1OTM2OTEzZGQxZTY5NmRmNDY0ZGI1IGxlZ2FjeS10cnVuaworMzg2MTkgZTgzMzA5ZDQzYTgyZTk5YTc1MDFiNDk4N2IyNjAzMjA3YzQ5MDMzMSBsZWdhY3ktdHJ1bmsKKzM4NjIwIGQzNTVkYTFkN2M4ZmQxOWJiMjA3ZGIyY2FhM2M3ODA2MmY3NDgyOTAgbGVnYWN5LXRydW5rCiszODYyMSA2NWU4YWFjYjBlOTRiMTYyMzljZWQ4MmI0MjExMzAzNmMzOThiZmVmIGxlZ2FjeS10cnVuaworMzg2MjIgODFiNWExM2ZhMzhhMjQ5MDI3M2RhNjYxMWMwYzBkZWRiZWU4YjViMSBsZWdhY3ktdHJ1bmsKKzM4NjIzIDhkOGJhNjY3ODBlZDc3ODUwMmNlMzhiNjY3NGFlZTNmYjEwNDdhYTEgcmVsZWFzZTI0LW1haW50CiszODYyNCA0NTNkODllYWI3MzkzNmZiOTE1Zjk4OTU3OWM0YWIyYjJjM2YyYWY3IGxlZ2FjeS10cnVuaworMzg2MjUgMGM4MmE3ZWY5NTU0ZGFkOWZhYzg3OTI4OGUwYTc3ZTcyNTllNjNmMiByZWxlYXNlMjQtbWFpbnQKKzM4NjI2IDNiYjc1OTQ5ODc2N2Q2OTBmZTZmMmMyOWNiYmRjYzIzODI1ZTE1MzggbGVnYWN5LXRydW5rCiszODYyNyBmZGYyZjhmYWQ4ZDQ1NzM2Mzg2Y2EzODU2OWMwMDdjODJiYTk2MzA2IHJlbGVhc2UyNC1tYWludAorMzg2MjggNmY5YjM2ZmMxMTFjOWFmZGFkNDJmOTg1YzMxMzhmYzJmODJmYTk4MiByZWxlYXNlMjQtbWFpbnQKKzM4NjI5IGI4ZDkwNWNhOWU5OTk5NjZkNjc3YWU2NDU0NzY0YWZiYTNhNjA2MjUgbGVnYWN5LXRydW5rCiszODYzMCAzZDk3ZWIzYjdjZWNhZmY0NmZkZWUyNjkwMDVmNjdlZGE0OGM4ZTYzIGxlZ2FjeS10cnVuaworMzg2MzEgNzJiOWViNzQyMjYzMDdiZjJhYmI2YzAzOWQyYjY5YTJkYTZkMDAyNCBsZWdhY3ktdHJ1bmsKKzM4NjMyIDNmYTM0NzU5NTQ4NzIwYjZmOTYyNmZjM2E5NzllMGE1NDc5N2VhMWIgbGVnYWN5LXRydW5rCiszODYzMyA1MTgwY2ZjYzg3YmZlNzI2NDBlNTI4NmQwM2IxM2RjZDY3MDEyMzAxIHJlbGVhc2UyNC1tYWludAorMzg2MzQgZGZhMDk3Y2NiYzQ5ZGE0NTM3MDYxMTVlYjdhOTNkNDMyNjIyZGI4MSByZWxlYXNlMjQtbWFpbnQKKzM4NjM1IDIxOGE3NjI3NTkzMmVkNjhkMmE2Nzk3OGYyODg0MmY5YmY5Njc2MTQgbGVnYWN5LXRydW5rCiszODYzNiA2NzljMTYxMTU2MTMxYzlkNDU3MmEwNzY3MTAxODRkNzQ1NzRlODJkIGxlZ2FjeS10cnVuaworMzg2MzcgOTYyODAwZWUzMGVmNWY0MmEzMjVlYTYyYmU2MDNjYzRmNTBkNTMxZiByZWxlYXNlMjQtbWFpbnQKKzM4NjM4IDA0YmFhNjQ0ZmYwMDMzOTFkZWJmZGMyYTY3YTAyN2RiYTQyOTVhZTEgbGVnYWN5LXRydW5rCiszODYzOSAxMWI0MzUwYjU4NzkyZGE5Zjc4MTc2NTYwYzUzYzM2YzkwMDY5NmIwIHJlbGVhc2UyNC1tYWludAorMzg2NDAgZTUyNzgzMzFkOWE5MDU4ZmFkYTdhNGI0YTEwNmMyYzNlY2M1ZDg3MiBsZWdhY3ktdHJ1bmsKKzM4NjQxIDZmMzdkMTE2MDI2MTA5OTI4MzQ3YTcwYjZkZjc5MjAwNzE1MzBiYzggcmVsZWFzZTI0LW1haW50CiszODY0MiA3ZjdjYmRiMmM2MTEzN2RhY2M0YmI2ZWZmNmM0ODE4MTFlNDI5Yzc5IHJlbGVhc2UyNC1tYWludAorMzg2NDMgNWY4OTNhNGNkZTZmZDhkNmRkZThiMzM4Mjg3NzEzNzczMmFiMTM1NyBsZWdhY3ktdHJ1bmsKKzM4NjQ0IDUwNTA5ZWU5NjM2NGM3ZTg2MmI2YzAzN2ViZmU0MjhlMjM1ZWFjZjggbGVnYWN5LXRydW5rCiszODY0NSAzMTNlZDI4MTdkNjgwOWUzM2Q0NDdiOWMwODg3YTE1OGU3M2Y2ZjJjIGxlZ2FjeS10cnVuaworMzg2NDYgNGRiNWVhOTU3N2JhYmRjN2NiODRiZDk0Y2M4NzVmNWUwOGQ5ZjU2ZiByZWxlYXNlMjQtbWFpbnQKKzM4NjQ3IDA3NzQ1MTY2ZjU3MTNiYTU2YzFiOGFlODEyYjlhZjRmYmM2Mzg4OGUgbGVnYWN5LXRydW5rCiszODY0OCBmY2I1MDc0MTRjNDE0OGY0MWJlYTFlOWJkOTA2OGE2ZTAyZDc3ZjAzIHJlbGVhc2UyNC1tYWludAorMzg2NDkgMjNjYTI2MzA2NTdjNDg1MDljMzViNmIzODQ1YTZiMDRiNDBiNjcyNyBsZWdhY3ktdHJ1bmsKKzM4NjUwIDZhNjQ5ODE2MTI0YTdjZTQ1YTVhMTNjNjk4OTdhYzQxOTVjMTRhNzUgcmVsZWFzZTI0LW1haW50CiszODY1MSBiYzE1OTI5NmQyNTM1Njk2ZDA0MDg1MWFkMzhiOGU0YzAyOWY2ZWRmIGFzdC1icmFuY2gKKzM4NjUyIDUxMWU3YTkzYTFlOWYxMDVlNjQyMmNhYTkzNTUyODViNjg1ZjNhODkgcmVsZWFzZTI0LW1haW50CiszODY1MyA4NGViNWUxODU1NDc2MTY2YmYyOWVjN2QwZmI5ZmM5ODAxZmFmN2IwIHJlbGVhc2UyNC1tYWludAorMzg2NTMgMzMzY2YzMDM1NDNiNjgwZWM1ZTNmZGY3ZThjOTY2MWY5NDg4YTUwZSByZWxlYXNlMjQtbWFpbnQKKzM4NjU1IGJlYjFjYjc4NWUxZDU0MDZjYjAzNWY1MmQ1MmI0YTM0ZWNjNjdkODEgbGVnYWN5LXRydW5rCiszODY1NiA3ZDc0MDRhNmE1ZWEzZDI0Mzc3MTZjZWYxOWNiOWExNmJjNjI0M2YyIHJlbGVhc2UyNC1tYWludAorMzg2NTcgNzE5ZWIxMDJlYTQ0ODg0ZmZiOTk2MmNlZTQ1YTBiNWI1MDE5OTdmMSBsZWdhY3ktdHJ1bmsKKzM4NjU4IGZiMzlmNGVlYWVhNDc2Mjc1YzAxODRhNzA3MDVkOGMwYWRjM2Q3NzggbGVnYWN5LXRydW5rCiszODY1OSAyZWU1NzViOWI2MGU1ZDJhOTUwYWFkM2Q0NGI3OGFiNmZkNWI5OTEyIGxlZ2FjeS10cnVuaworMzg2NjAgZmRlNWExYzZhNDk3ZTU0NTZkNmNmNzU1ZjEzOTM0YTgwMWM5YWI2MyBsZWdhY3ktdHJ1bmsKKzM4NjYxIDlkODBlNjMwMDRjZGM2YzUxOTc4YjIyYWJjZjAyOWVjMzVkOTE2YjIgcmVsZWFzZTI0LW1haW50CiszODY2MiBhMzA1ZmVkY2ExYmZmZjUzNGI2YjY3NjU4ZGQ4MjI0NzI5MjZjZTExIHJlbGVhc2UyNC1tYWludAorMzg2NjMgMDRmYTEzMmM5MDIzZGVjMDRhZTgxY2MzNjkwNjA3ZDY0ZGNlZGE1MSByZWxlYXNlMjQtbWFpbnQKKzM4NjY0IDMzNmZlYTQwNmZjZjA2Yjg4ZjNmZmVhYjcxNTNmYzc1MWMyZTE0YmQgcmVsZWFzZTI0LW1haW50CiszODY2NSA0YmNlMmU1MDk2MWUxY2I4MGRkZmI5MmY4YTcyZDFiZTQxNGVmNjJiIGxlZ2FjeS10cnVuaworMzg2NjYgOTk3YjI1NWUxY2NjODhiZWY5MTgwY2FiOTA0ODczMjc3Njk3MTU0NyByZWxlYXNlMjQtbWFpbnQKKzM4NjY3IDc2MzAwYzVmYmNlYzhmNTg3OGY1ZjJiM2I3MTI2ZWJiYWZjYTM2MDkgbGVnYWN5LXRydW5rCiszODY2OCBmZGVlODdiNzAzN2EzYjYwMDNlYzgyZTIwZDBiYmEyZTFjZWU4ZWRlIGxlZ2FjeS10cnVuaworMzg2NjkgMGE2YTRjY2Y1Y2NmOWZkZDBhOWI2MzdlOTg5NGQ0M2YwM2FlZDZiNiBsZWdhY3ktdHJ1bmsKKzM4NjcwIDIzZTNkZmMwYzY0N2E4ZjUwZWI2YWMxOTQ1ZTJlNTVlOTJmN2MzMGQgbGVnYWN5LXRydW5rCiszODY3MSAyYjM4ZWQ2NmM2N2ZmNzY5ZTBmNDRkNmQyZDk0NGIzZGU5NjVmNTRiIGxlZ2FjeS10cnVuaworMzg2NzIgZGM2ZjMxNWYxZjdmMTVmOTZiOTVkMzRlOTk5ZjUwYWMzYWI1NTAwNSBsZWdhY3ktdHJ1bmsKKzM4NjczIDEzYzFjMzMxNmM2ZmRlZTQyYTRkZWFkZTZlNDRkOTE1NTU5N2JhMzYgYXN0LWJyYW5jaAorMzg2NzQgY2Y0MzAyYzIxZTAwM2RiOGE3M2NmNzFlMzIyNmUzZWY3YzIzNjNlNyBhc3QtYnJhbmNoCiszODY3NSA2ZDFlZTlkYjE1NDNlZjI0MDA2YzdkMmY3MmRjNmQ0ODVlNGIwN2U4IGFzdC1icmFuY2gKKzM4Njc2IDlmNDU0YWYxN2Y3YTM4ZmI3MjY1MDA2OTEzMGQ5ZDEzNGE5YjkwMzggbGVnYWN5LXRydW5rCiszODY3NyAzZTJlZTIxOTcyN2QxMDBkNjJjZmIxMzc0MTBiNTA0N2Y5YWYxZDcxIGxlZ2FjeS10cnVuaworMzg2NzggYjE0YzhlNjMxMGU3MTJlNzU2ZGMyMzY0OTc1MmEyNTJmYzdjNGJlMCBsZWdhY3ktdHJ1bmsKKzM4Njc5IDlhZWE5ZjhiZGIyYzQ3ODFkOWI0NWQ1NmM2NDQ3ZmMyZjczM2I0OTIgYXN0LWJyYW5jaAorMzg2ODAgMTA3ZTFlOGM4ZmM3ZTVhMGQxNDNiYjQyMzRmZjMxNWZlMGJiODdmNyBsZWdhY3ktdHJ1bmsKKzM4NjgxIDIzYjNlNzkwNmUwZjYzOGZhOGY5MmNiYzI0MTJjNTY2ZGUxZGEyOGYgcmVsZWFzZTI0LW1haW50CiszODY4MiBjMDZjOTBiZWE3ZGIwNzAzOWZlMmQ2YzljYWIyZTQwMTkwOWJkZGY1IHJlbGVhc2UyMy1tYWludAorMzg2ODMgYmJiNjBlMjY5Y2U4ZGM1MDg3Y2JiOGU0M2RmY2U2NzEwYzQ3OTBlOSBsZWdhY3ktdHJ1bmsKKzM4Njg0IDNkYTIxZmRjMmVlNzIyMzU1ZjA2MjdkZmVlOGFlMjBlZmRiMjMwODcgbGVnYWN5LXRydW5rCiszODY4NSBmM2Y5OWFjYWU1OWZmODcwZmExZDA0M2E0Y2MyYjAzNzEzZGI0ZjE2IGxlZ2FjeS10cnVuaworMzg2ODYgNGMxM2IwMTQ2YjNmNmJiNDI0NjkzNWE3NTNiNjI4NTA5MzgzNTcyNyBsZWdhY3ktdHJ1bmsKKzM4Njg3IDZkMjAwMGJhZjNkZTlhYWViNDY4ZDFhZmUxYjY3NGUwOTBjOWFmZDYgbGVnYWN5LXRydW5rCiszODY4OCBmMTNmMmNiZGY0ZGUyOWE1YTY5OTljYTAwYjM3YzZjNmYyYmNlNGQwIGxlZ2FjeS10cnVuaworMzg2ODkgMDg1MmQxOTZiNTkwNDNlZmQ5MWEzYzRlNDI4ZjIxNDE0YWJiYjM0OSBsZWdhY3ktdHJ1bmsKKzM4NjkwIDc5MzM1MzFkMDJiNDYyMTQyMzIwYjUzYWRkZWIzMjkyYWFhZWVkNzQgbGVnYWN5LXRydW5rCiszODY5MSA2OWUxMGU2MzU3YmQ3NmY2Y2Y1OWFhNmU3NTI4ZDkzZDE1ZTI2ZTBkIGxlZ2FjeS10cnVuaworMzg2OTIgY2ViZmJhYjAxN2E2ZTYzMzUwMjkzNjNkZWU0YzI0NTFiOTJhZTY2OSBsZWdhY3ktdHJ1bmsKKzM4NjkzIDcxOGIwYjVhNjQxOWY4ZTVhODAxZDM5YjY1YWIxY2U0MjAzMTVjZDUgbGVnYWN5LXRydW5rCiszODY5NCA5OWMxNmU0NGU1ZDQ2Zjc0NmM1ODY2NzhkZDA1ODhkMDc2NGMxY2E1IGxlZ2FjeS10cnVuaworMzg2OTUgZDU1ZGVhZTQzMTBkYzIzZDFhNzk4MTJmZDA1YzIyYjAxYTJkYjZhYiBsZWdhY3ktdHJ1bmsKKzM4Njk2IDhmMjFlYzMyNzRmMWM0NjliYjE2ZjgzZTAxYjZmOTVlMTc3YjM0ODcgYXN0LWJyYW5jaAorMzg2OTcgYjhmZjliYzAyM2U2NzU5YzdmYWY3NGRkNWJlNTNhZDEyNDE0OTZmMiBsZWdhY3ktdHJ1bmsKKzM4Njk4IDRiOWRmNDg1NmYzN2E2MzA2NTc3YmU1NjYwZTkwNDU2NDUwMzQ1YjkgbGVnYWN5LXRydW5rCiszODY5OSAyMzgwZjlkMWViYWI5NWVkNGIwYTQ5Y2U4MjlkYWZiMDg2OWQ0ZWY0IGxlZ2FjeS10cnVuaworMzg3MDAgNTU0N2Y5MDMwMTA5ODM0NWQyZjk5NTVlMWJhZDEyNzExMjlmZmM4YyBhc3QtYnJhbmNoCiszODcwMSA5MTUyM2NhZWUxODM5MDVlNjQ2ZDA2ZjlmYjQ5ZDBkNDFlMmY4M2ExIGFzdC1icmFuY2gKKzM4NzAyIGUwZjUxOTg1M2E5ZjI4MDg2MTBmOTNjMGUwOGFhNzY3ZGJkZTJmNDYgYXN0LWJyYW5jaAorMzg3MDMgNTdjNmE2YTgwMmEwODMxNjdjZWJiMjFkMmY2MmVlNWJjOWU5MmJiYyBsZWdhY3ktdHJ1bmsKKzM4NzA0IDNjN2IxOTY4OTQ3OWQ4YWM1ZDQyMWFmZjIxMTgxZjk0ZGExZmYyMDYgbGVnYWN5LXRydW5rCiszODcwNSA4ZmM4ZTdhNjA3MWM1MDQxNjkwM2M4NTI2M2E1NWFhZmVhMTMwNzE3IGxlZ2FjeS10cnVuaworMzg3MDYgNDllMzBjNmM5MWM4Y2U1YWZiZmFlYjJmYzQzN2EzNGViYjcwMDM2MyBsZWdhY3ktdHJ1bmsKKzM4NzA3IGIwMTYyMzZkZmJkOWRkMDJjYmU0Y2MzZTQ1NDQ1NDEyODQ2ZjE4YzAgbGVnYWN5LXRydW5rCiszODcwOCAyNmYzMjcyZDllMTEyZWExZWFhYzMwZDYzYjQyOGM3NjQ1MDQ4YzE0IHJlbGVhc2UyNC1tYWludAorMzg3MDkgYTQxMjYzODk1MGExM2FkMzQwZGE5N2E2NGJiYTcwMTAzOTk5ODZiNyBsZWdhY3ktdHJ1bmsKKzM4NzEwIDcyMWU2MGY0NTRmM2M4OTA2NTRjOTljN2QzMDM1MjdmNzhjOTc3MmEgcmVsZWFzZTI0LW1haW50CiszODcxMSAyOTU2ZGY4ZTBhNDA0NWMwZmYxM2M2ZGVhNDJkMmFmYmRjYWMxNzcwIGxlZ2FjeS10cnVuaworMzg3MTIgMDdhNGU4ZDhlYjY5MjIxMmQ5MGRkNDAzMjRlOTExYjA5ODAxNzk5ZSBsZWdhY3ktdHJ1bmsKKzM4NzEzIDRlYWFiMzg1NjZjOTRmZjg0OWY0MDBiOWNkNjhhMTc0OWFiZDdlYmQgbGVnYWN5LXRydW5rCiszODcxNCAwMWJhM2I0MDQzMWYyOWZlZDYyOWU3YTIxMDE4NTA2MmZhNDAxOGM0IGFzdC1icmFuY2gKKzM4NzE1IGYxYzYzMDMzMjFkNzBiYzM1ZWY1ZGY3ZGFkYzY1YzI3ZWMwNWI4NTggYXN0LWJyYW5jaAorMzg3MTYgZDY5ZmRlNDBjNzE5Yzk1YzZkNTA1ODRiMDYwN2E5NzJjODFiY2VmOSBhc3QtYnJhbmNoCiszODcxNyA3NjExZGYyMWE1OTAwOWQ1MzQwYzE3MTZiYTQxMjU3OTlhYmE5ZmM5IGFzdC1icmFuY2gKKzM4NzE4IDkzY2FhN2RlY2VlMzYwNjUwOTM0MWNiYzMxYWM1YWU0MGM2ZWQyMGYgYXN0LWJyYW5jaAorMzg3MTkgYWI4MWM4M2E5YWM2Y2NhYWFjNGUyN2VkMTZkODM2YThmM2ZhMjY2YiByZWxlYXNlMjQtbWFpbnQKKzM4NzIwIDY1M2NjMDlmZDkzMTAxNjIzMThkYWFkOTY1MDFiZTBiNzhhZWI5OTYgbGVnYWN5LXRydW5rCiszODcyMSA0N2M1ODAzYWFiNDU4MWI5ODc3YTEwZmJkYjg5ZWFiMzhlMzRkNGUzIGxlZ2FjeS10cnVuaworMzg3MjIgZWM4N2ExMTY0MGQwMDJiYzI2ZjBlMGE0YzQ0YzE3NDhmMjc3ZDg2MSByZWxlYXNlMjQtbWFpbnQKKzM4NzIzIGY5MmQ4NDVmODcwMzMzNGQ4OGZhMTU4YmUwZDdiZGJmMjliMDFiM2IgbGVnYWN5LXRydW5rCiszODcyNCBhNTBmZmU2NTkxMWIwZDQ5ODgwYTZhMTA1OGVmMDU4MzVlOWRkMjhjIHJlbGVhc2UyNC1tYWludAorMzg3MjUgMDBmZmRiZmNkNWE5Mjc4NjkyZWU2ZTcxMTUyZDU1NmJmYTBlMmE5NiBsZWdhY3ktdHJ1bmsKKzM4NzI2IDVjYWY4MGY1NWM4NjM4ZDhmOTU1MDc0N2RhYTY2NDVhYWE4MTk3YTEgcmVsZWFzZTI0LW1haW50CiszODcyNyA5ODVkZDdmMDY0MjA4MWVhOTRhMzRmOTk0ZTlhZGQ5ZjJmMWQzMDAyIHJlbGVhc2UyNC1tYWludAorMzg3MjggNGYwODM4YjY4YmJiZjFkZTI5ZDc2NmIzZGUzNjI1YzI5NjkxYWM1ZSBsZWdhY3ktdHJ1bmsKKzM4NzI5IGI3MmRmOGFlZTU2ZGE4ZjljZDI3NmU4NmNkYjAzZWU5YWRkMGYwOWEgbGVnYWN5LXRydW5rCiszODczMCAyODg5MmU2NTEyYmE2YjliNzMxOTc2MDZmM2YyZDhmNGQ5ODIzOGY3IHJlbGVhc2UyNC1tYWludAorMzg3MzEgMzNhOWU0MGE1OGQ1MmEwMjBjMmI1Mjg2ODA3OTQ4OTUzMjU4M2E4NSByZWxlYXNlMjQtbWFpbnQKKzM4NzMyIGFkMmRkODg0MTM3ZmY1NzAzOGQ0ZTA1MzY5YzEyODAxNmFiNmMxNzYgcmVsZWFzZTI0LW1haW50CiszODczMyBiYmEwMzlmMmUwNTI5YjE2YTNlZDU2MjhiMTJiY2IxNWNjY2Y4MmFkIHJlbGVhc2UyNC1tYWludAorMzg3MzQgN2NmZGE5ODk4ODYzOTY4MzFmNTJlM2E1ODI1MGI0ZWFmZDhjYWI4NiBsZWdhY3ktdHJ1bmsKKzM4NzM1IDNiY2RkNDQ2YTEzYjljYjc5ZDI4YzZlN2U4ZDRkM2IyYzhiYTk4NjggbGVnYWN5LXRydW5rCiszODczNiAzMDZmN2Q0ZGI1ZWZjY2FmMTc4NGU3ZmMzMmQ0M2Q4Y2RiYzc1ZmI3IHJlbGVhc2UyNC1tYWludAorMzg3MzcgYTZjNTg2MjY2ZGVhNThmYmMxNWEyMTI1ZDhkZWI3ZGViYmQ0MWI5NCBsZWdhY3ktdHJ1bmsKKzM4NzM4IDdlMmQ4ZTE3Y2YxNGE0MTFiMWU1NjA1NDhkNzgwZGNlZjJkZjM4YzYgbGVnYWN5LXRydW5rCiszODczOSAzMGIwMmM3ZWY4YmE2NzAyZWJmYTZlNmIyMTY5YjVkM2NkNTM4NWU5IHJlbGVhc2UyNC1tYWludAorMzg3MzkgZjkwNTRkMjM1ODcwMDI5YWZhMzNlZjk0NWJjYTdlY2U5OTYxNmMxMCByZWxlYXNlMjQtbWFpbnQKKzM4NzQxIGYzMTQyM2M0OTVkNjdmMDI0M2UxMzRhNWM3NTk5MmU1OGFmM2YzZDkgbGVnYWN5LXRydW5rCiszODc0MiBkZTEyMTg5OWQwMjE2MTYzNDBiZjg2NzQwOTdiNTdjZDFhM2RlNzMwIGxlZ2FjeS10cnVuaworMzg3NDMgNWRkYTFmOWU2MmE3MzZjZmI1ZDBiYjAxMGE0MDVjMTBiZGQzYmZjMyBsZWdhY3ktdHJ1bmsKKzM4NzQ0IDA2NThlNmVmZmFjNzA0OGYxZTk1MWU3NmRiYjkxYzIwNzgyZmFmZDEgbGVnYWN5LXRydW5rCiszODc0NSBjZDJjMDQ0ZjY5OWQ3YzhjY2VmNTExNmM4MTRhYWIxYmJiMTdlNmE0IGxlZ2FjeS10cnVuaworMzg3NDYgMTNkNWNhYTFlOWQwMmFhOTk5NzAzZTI4ZDMzNzViZThjNjAwOTY1OCBsZWdhY3ktdHJ1bmsKKzM4NzQ3IDUxYmE4Y2U4ZDkyYWZkZjAzYjY4YTgxMTAyZGNmZmMyYWIyNzViNDIgcmVsZWFzZTI0LW1haW50CiszODc0OCA1OGYzZjBkMDQ1ZjU0NWFkYjlhYzNmNjA4ZWZiNzY0MWFhNDM0ZTQ1IGxlZ2FjeS10cnVuaworMzg3NDkgODQ0NTMwNTA4NDc1NjdmODAxNzI5ODM1ZjFiZjViMzAwMTg3Y2YzNCByZWxlYXNlMjQtbWFpbnQKKzM4NzUwIGFlZjcxM2RlN2EyM2M2NDUxMTg4Y2VkYTkwNDZiYzllNzQ5YWJiZjMgcmVsZWFzZTI0LW1haW50CiszODc1MSBlYWQ1ZTczYWJiNTNjOThmM2M2OGE5ZDNiNjNkNTdjOTZiMzdmZDRhIHJlbGVhc2UyNC1tYWludAorMzg3NTIgNjNjNWQ2Y2UwNzYzNGQ2NjJlMTRlODc3ZDJiYmQ1ZGZiNjI3NGQ5OCBsZWdhY3ktdHJ1bmsKKzM4NzUzIDdlMWEzMTMzZmZmMmVhNTkyZjMyODE5OTdhNjgyNTE4ZjM5MGU4OGIgcmVsZWFzZTI0LW1haW50CiszODc1NCA2YWZmMjI2MDBlMTVhYTM2NmFmOGU2YTkxMDAxMWMwZWI2M2ZiMWQ1IHJlbGVhc2UyNC1tYWludAorMzg3NTUgMTFmZDI2MzdlNWJiNzQ0ZTNmZGRmZDQwYTRkYWRiYTJkYTIzN2RjYyByZWxlYXNlMjQtbWFpbnQKKzM4NzU2IGViNmMyOTE1YmFkZDM1YzM0OGViNzFhN2RkYzNjZWQ1OTBjZjU3MzkgcmVsZWFzZTI0LW1haW50CiszODc1NyBhOTUxMWMxNTEyNGJlNWE1ODAzMmViZWZjMTdkYjUwYWFhYWIwYTA5IHJlbGVhc2UyNC1tYWludAorMzg3NTggMmVhM2Q2OTE1MjA0MTAzZDk5Y2EwZGQwNTc1YTAzZTgxMzRmMmU5NCBsZWdhY3ktdHJ1bmsKKzM4NzU5IDM5MzZjZDdmMTZmMjU1ZjExYzljMjQzODlhZmQ3NDM5ZGMzYWMxM2IgbGVnYWN5LXRydW5rCiszODc2MCBiODVlODEwNDYwZWZjNWI0Mjc3MWE3NTg1ZTc1Y2I4NzQ0MzEyYmEyIHJlbGVhc2UyNC1tYWludAorMzg3NjEgZmU1MzFiNWRjZmQ2MDkyYjE0NDQwMDQzOGYzYTRlZGE3YjU5ZmMyMSBhc3QtYnJhbmNoCiszODc2MiA4MGNjNDRlYWJkZWUyNTlhMDA3NTAxOGMyNmE2M2RkNWZiYWViN2NhIGFzdC1icmFuY2gKKzM4NzYzIDZiMjFkYzk0MzhhZDVjMWVmOTk5NjI3ZjhmOGU1NDJlOWM2YWZmZDcgYXN0LWJyYW5jaAorMzg3NjQgY2E0ZDhiNGZiYjA1ZGIzMTA2OWE2ZTgwNzVhMTI3MTE5OWM4YzE1OSBhc3QtYnJhbmNoCiszODc2NSA1YzFlYmI1YWU1MjE0Mzk2ODE0MzgzOWFmN2RmOTEzYzk0NmIwM2E0IGFzdC1icmFuY2gKKzM4NzY2IDVlOGM4Y2IxMWU1YmRjMmYzZmI3MWNjNzZhYmEwZjE0NjcyYTY4ZGMgbGVnYWN5LXRydW5rCiszODc2NyBhYjU4MjJmNzUxNWE1ZmVjNTcyZjAzMmNlOTkxYjMyMzZjYjIyYWRiIHJlbGVhc2UyNC1tYWludAorMzg3NjggNzFmZDdlZTRiN2Y1MGJjOTMzZjcxMTQwODFhZjkzMmRlODhhYmQyZSBsZWdhY3ktdHJ1bmsKKzM4NzY5IDM0Y2RmYzVkZDdlYTM0ZTU3NjZkODg5OGUyNGUwMWIxYTgxNzNjMjUgbGVnYWN5LXRydW5rCiszODc3MCBiNDlkMzkxMTFjNDg2Y2VkODM5MWM3OWNhMzVmMjg1YWVjOGUxNmU3IGxlZ2FjeS10cnVuaworMzg3NzEgNTUzNWNlMGZmN2Y5ZjZmNWRlOTgwMTQyNjhlMDBiNTc1Zjg4MGYwMiBsZWdhY3ktdHJ1bmsKKzM4NzcyIGRhNDYwODQxYjYzY2I4M2Q2MTdiYWRmODhmYmRiMTJkOGRhZGFjOWYgcmVsZWFzZTI0LW1haW50CiszODc3MyBiYzlmYmMyM2NkNGE1OTkxOGRiMTI3MWIwODY0ZDQwYjRkZDk1NmEzIGxlZ2FjeS10cnVuaworMzg3NzQgYjY0OTk3M2QwOTYyZWIwN2I1ODliZWYzNDI1ZmFlNjNmZGQ5OTQzNSBsZWdhY3ktdHJ1bmsKKzM4Nzc1IDZkZDJkMTM2ZTg0NjYxYzA3ODM4ZDQyMzM5MzQxNDA1ZTliMmM0NTUgbGVnYWN5LXRydW5rCiszODc3NiBlNzYyZmVhNzhjYjIzNjNiZTE2MzVlZTc0NmZlYTJmOGM5MTRlNTRiIGxlZ2FjeS10cnVuaworMzg3NzcgMDE0M2Q5OTBkNjBjYzYwMTIwZTQ2YjRhMTEzMDdhOTczY2JjNmMwYyBsZWdhY3ktdHJ1bmsKKzM4Nzc4IDE4ZGM5MTU4MTYwZDViNzg3OTQ3YTMwYzc2MDU4ZjY2MDMzZTE3YTMgbGVnYWN5LXRydW5rCiszODc3OSA1YTUyMjIyNWM0ZGIzNTlmYjdkNTgzODVlMzRkYzJjMzM2MDlkYzE3IHJlbGVhc2UyNC1tYWludAorMzg3ODAgMjBiM2M3MjM1MDJhZDRiMzlmMzgzODFiOGU0NGMwYmVjYjFkOGNkZCBsZWdhY3ktdHJ1bmsKKzM4NzgxIGMyYTljM2ExODQ3NzZmYzYxNDI2NTZlNTAwYjIzY2U3MjNjZmEyZDcgcmVsZWFzZTI0LW1haW50CiszODc4MiA5YTdmNDZjNDI3NzMxNGY3NGQ1OWY2YmMxMjRkZmE0N2I2OTVkOTFjIGxlZ2FjeS10cnVuaworMzg3ODMgYjk5Njc0N2MwOGI2ODkxNTAyMDY1NDFkYjUyYzgzOWExZTFiYjQ5YiByZWxlYXNlMjQtbWFpbnQKKzM4Nzg0IGFmNWQ0ODAxNGIzZTYzNjU4NmE4NjZjNWQ1MTgwN2IxN2ExMmY3MmUgbGVnYWN5LXRydW5rCiszODc4NSA1YmM5MWJiMjQ0YjE5MDJmZjQzMWY3MTVjYmZiNmI3ZjQwYjY0MzY0IGxlZ2FjeS10cnVuaworMzg3ODYgNjRiYzVhOTIyZjU3OTFiNGI4NzVjZWMwZGFlN2IxODU3YTc1Nzc0NiBsZWdhY3ktdHJ1bmsKKzM4Nzg3IDE0M2NkYTVhOTM0ODFmZGYwNzMyZWY0Y2M2MDE4NGY2OTRmMDI1NWUgbGVnYWN5LXRydW5rCiszODc4OCAwMzYxMzA5N2I5Y2IzNDU0MTBmNTQ3ZjQ2MGIwNTU2YjYzNzAwMGJlIGxlZ2FjeS10cnVuaworMzg3ODkgNzkyMDFmODIwZWQwNGE5MGRhYWNkY2FkNDYxNmY1YWYwOWQ4ZTJiMiBsZWdhY3ktdHJ1bmsKKzM4NzkwIGFkNmFhMmVlY2I1NjliMTQ1MjYzZWU5ZDEwYmIzYTk0Y2YyODNmYmMgbGVnYWN5LXRydW5rCiszODc5MSAwNzZhN2M3ZmUyOGI4MTBiNTAwMDA1OWVkODBjM2QzYjkzM2Y5NWU4IGxlZ2FjeS10cnVuaworMzg3OTIgN2MyNzgwYzllNTFiZGYzM2E1ZWIxYTliZjgzNTQ2ZTUwN2IyMzEzZCBsZWdhY3ktdHJ1bmsKKzM4NzkzIDg2MmViYjYyMTM1NTEwOTI1OGFiOTQ5NGVlNzE3OTE0MjcyZGQ2YTYgbGVnYWN5LXRydW5rCiszODc5NCA5ZTY1OWNiNzI3ZWE2OGM5YTU0MzllOGM3OTY2NzUxNWQ5MmIyMDA4IGxlZ2FjeS10cnVuaworMzg3OTUgNDQ0NjhlZmI1MjVlZDU3ODZkYjk4ODI3ZDIxZDlhZTY3NGM5MWE5MSBsZWdhY3ktdHJ1bmsKKzM4Nzk2IDQ4YzcxZmYzODU3ODJjYzIyNzI1M2UyZDBjZTg1YzBiNDNlNmRhM2IgbGVnYWN5LXRydW5rCiszODc5NyAxOTI0YTA3ZjdmMjNhZjdlOWJjOWNiMTUxMDQ1N2Y3OTA2YTM4YzFmIGxlZ2FjeS10cnVuaworMzg3OTggNDMzZDczNzhkZmMyZmMyMzEwMGYwYTZlOTFiMWEzYjdhOTBjMTQ5OSBsZWdhY3ktdHJ1bmsKKzM4Nzk5IDYxZWM4Yjc5NTY0MWM0ZDJlYTU0MzJmM2NiY2EyN2VkYzE4MTdkNzYgbGVnYWN5LXRydW5rCiszODgwMCAzYmMyOGY2MzUxN2E0ZDAzYzM0NjA1YzAzMDM1ZGZlYjFlNjFmNWVkIHJlbGVhc2UyNC1tYWludAorMzg4MDEgZDUyMDc0ZDg5NGRmMjkyOTQ4NzY5MGRhYzI2MjYxZTM0NDZhNjA4MiBsZWdhY3ktdHJ1bmsKKzM4ODAyIGZhZDFlOGUwOTQ1NmQwZDUxZWVjYzQ5NTZlNDA0MTU1ZTdkNWEzZjUgbGVnYWN5LXRydW5rCiszODgwMyBmYmNiMWRhNDgwZGQ0YjFhZjJiMTdkNzcxZWQ3YTUxOTc1YzVlMTc1IHJlbGVhc2UyNC1tYWludAorMzg4MDQgMWFjOTE0ZDNiZGMzOTQ4ZDM0NWU1NmJiNzhjOTk0Y2QyNWRjZWFiZCBsZWdhY3ktdHJ1bmsKKzM4ODA1IGRhZDJiNjIwNDk3NDU1NTllZjhkNjgwMWJjNWY4YTMzMTRhZTgyNzQgcmVsZWFzZTI0LW1haW50CiszODgwNiAzNGY5YjJhZGFlMmM2YmZiOTU5YWRhZTM4NGE2ODdhMDJjMjg3Y2UzIGxlZ2FjeS10cnVuaworMzg4MDcgMzhiNjU0ODM2OWZhZTg1YzJlOThmMDc1Y2YyMDliN2Q3YjRjY2Y3YiBsZWdhY3ktdHJ1bmsKKzM4ODA4IGNkM2I5NTI3MDhhZjBmOWFiZTg4MDliNjk0OTQwOGNkMGNhYTBmMGMgYXN0LWJyYW5jaAorMzg4MDkgNGU2MjllYmQwZTNlNTdiMGY3OTc0N2QwOTZmZDIzYmZlNDQ5ODA3MCBsZWdhY3ktdHJ1bmsKKzM4ODEwIDAyMGVkNjcxYWE2MjE1ZWE5MTE2MmZlNTY3MWY0ZGE3ZjJkOTFlMjYgcmVsZWFzZTI0LW1haW50CiszODgxMSBkN2EyMTE3ZmNhNDI1MzUwZTI4OGUxNTE2NzEzNjU0MDJiZmI0ZGFiIGFzdC1icmFuY2gKKzM4ODEyIGM2MDcyOWE1NzkzMjVmNDMxZmQ0MzVkYjJmYTA0MmZiNjIyNzUyYmMgYXN0LWJyYW5jaAorMzg4MTMgOGU2Y2Q1MDBjOGZiNWE1NDA4MDdiZjczMzQzMmUwNDczODU4YmNmMiBsZWdhY3ktdHJ1bmsKKzM4ODE0IGZjNDQyYzJlYjBjZjZkYmQ4YWRhMWRiMTVlMTdiZmRkODY3ZTM1YTggbGVnYWN5LXRydW5rCiszODgxNSA5ODZkNDZjNGZhZWIyMjkwOThjNzYyOGU5MGMwZTc4YTYzM2Y3MDlhIGFzdC1icmFuY2gKKzM4ODE2IGM4YWZkZDkyNzE1YzMyNzc1MTQzNzdlMzJmMTBkN2Q0NTE5NDIwMTUgYXN0LWJyYW5jaAorMzg4MTcgNjA4MzBhZDYyNzVlMmM4MDBlNjY3N2E0NDdlYmI5NjlhODFiZjIyZiByZWxlYXNlMjQtbWFpbnQKKzM4ODE4IGE5OWVlMjUwZTEwYzFjNTYzM2I4YzlkMDczN2I3MzI0MTMyNDIyOGUgYXN0LWJyYW5jaAorMzg4MTkgMzBmMzdjMGUxNTkyNTZjOWM4MzY2MWNmYzUzOWQxMTcwMmJiNjRmZCBhc3QtYnJhbmNoCiszODgyMCBhOTZiNTAxNDk4YTgwOGYwMjJjZWI4M2YwYTZhNjAyZTkzZDUyMGM3IGFzdC1icmFuY2gKKzM4ODIxIDVjNjBjYmI2NTMzMGNmYWE1NzhiMDU0NGU5YzFkMzE4ZGQxZDRiNGYgbGVnYWN5LXRydW5rCiszODgyMiA3MjY3ZmM0MGFkYWMxNTNiNzgzZTM3MzcyMGIxYjgzODg4N2M0ZjhjIGxlZ2FjeS10cnVuaworMzg4MjMgZDQzNWQyMTRhNTkyNDE0NTIwN2NkNWI0MTIyNTIxY2VhMmVkNDZhOCByZWxlYXNlMjQtbWFpbnQKKzM4ODI0IDg3NzE5YWU5Mjg4Y2VkYmI5OTgzZWRlNTFiY2M2NTFiZDE0ZDNkODQgbGVnYWN5LXRydW5rCiszODgyNSAwZjMwNjFmNDlhOWU4OWFiNjhmODBjYThhOTgxOTQ5Y2Y5NDU5MDA1IGxlZ2FjeS10cnVuaworMzg4MjYgYWY1OTBmNjIyYzBiYzNiZTZmZTI5MjEzMmViMjY0OTQ5NDFjNzg2ZiBhc3QtYnJhbmNoCiszODgyNyBkNGZmYzc3MWU5ZmY5Njg4ZGM0MTYyNGQ1MDY1OTZlNDQ0ZGJkZTkyIGFzdC1icmFuY2gKKzM4ODI4IGI0NzdjNGQ3YTIwYzFhNjgyMGMxN2NiOTI4MzRiMGU2MDFiYjk4NWYgcmVsZWFzZTI0LW1haW50CiszODgyOSBjNGVhMTdjZjUyMTExNTY0M2YxZTNkOTI2NGNmYWRhYjE2OTlhNWU2IHJlbGVhc2UyNC1tYWludAorMzg4MzAgOGIwM2IwOTE0MWQyODcxNzFmMWU5NjNmMDZkNjdjZDg3MTYyYzI4OCBsZWdhY3ktdHJ1bmsKKzM4ODMxIGExMzA5NmI4NTk4YjlhNjdkYjUzNjAyMjY3MDU4YjdlZThhNjg3ZGMgbGVnYWN5LXRydW5rCiszODgzMiA2YmRjMzQyNmQ0MTEzZjEyNWUwYmNhNDllMDExMTg3NGU1NWEyZjgxIHJlbGVhc2UyNC1tYWludAorMzg4MzMgZjllMzFkYjZjNzAzNjAzNmVhNWJjMzZmNDQxNzk0MGI5NDNmNTJjOCBhc3QtYnJhbmNoCiszODgzNCBmYmIyZjNiYjhjY2NkMTVmNDFlODk2MGM2OWQxYmNhZTlkNTY5YzE5IGFzdC1icmFuY2gKKzM4ODM1IDI4MDRhYTA0MzhjYzhkMzZmYzNkZTFjODlkMjBmOWUxYTUzZjMwOTAgbGVnYWN5LXRydW5rCiszODgzNiBhZTI1ZDQ1Zjg5ODc2MzU0YmY4NDMyNTZmZTM3ZmI2ZWQ3MzFlOTVjIGxlZ2FjeS10cnVuaworMzg4MzcgNjdhODliNDNkY2M3MjNhNTViOGYzMzZiNjNjYzRjMTFiZTA3MmMzOSBsZWdhY3ktdHJ1bmsKKzM4ODM4IDRjOGU1MjQzY2E0MjUzMWU0MzhmOWIxZTA5MDI0NWVlOTcwYTgzMzMgbGVnYWN5LXRydW5rCiszODgzOSBkMzRiZGVkMzE5YWFlNWNmZmY0MGI5YWNiM2NmOWVhZDViN2QzMThlIGxlZ2FjeS10cnVuaworMzg4NDAgYmMxMjNiOWNlZjdmYTk2OWM3YjAyMjlhMWYxZTIzYWI2NGJhM2U2MiBsZWdhY3ktdHJ1bmsKKzM4ODQxIGM2NmE3ZmJlMTZjZjllNTFjOWIxMTA0OTAzMmM1NjQ5MDBkYWE1YzIgbGVnYWN5LXRydW5rCiszODg0MiAxMzMxYzc3OTk2NDA5MzYyZGRjN2E2OTQ2MTQ4MDBlOWIwMWViNDdhIGxlZ2FjeS10cnVuaworMzg4NDMgN2Y3MjEwOWRmYjRmYWZjNzhlMjExM2EyZDI2NGFkOTI1ZTg4MzE4ZiByZWxlYXNlMjQtbWFpbnQKKzM4ODQ0IGQwNTVmOTRkMDkzNmE2OTBmMjFmMWQ2ZWE3NTEzNmQ3NjIxMmE1OTggcmVsZWFzZTIzLW1haW50CiszODg0NSA5ODU3ZGFhMjI4MDdiNzM5YmIwNWE5ZWRjNTZjYzJlNjJkOTNmNzI1IHJlbGVhc2UyNC1tYWludAorMzg4NDYgMzU4MTg0MGM4MmU3MDFiNGI0MWRhMzkwYzU5ZWZmNDQyNzBlY2M4MyBhc3QtYnJhbmNoCiszODg0NyAwOGUyMGU5Yzc2ZmJmM2VlMzdkOGFhMTgzMWMxYjViYjZlZGI2OTE5IGxlZ2FjeS10cnVuaworMzg4NDggMjk0ZGFiY2IzNzliNTFiZTdjYzQxYWMyMzFlMGIxMjcyNWViZTIyZiBsZWdhY3ktdHJ1bmsKKzM4ODQ5IDlhMWIxZTFhZTY1M2ZjOTU2MzEzNDczMjJhYjRmN2I1OWMzNDU1N2QgbGVnYWN5LXRydW5rCiszODg1MCA0OWM2ZGNlZDA4YzIxZjQ0M2I2YTU0MTQxZWRmMWFmMTY2YjM3MDk2IGFzdC1icmFuY2gKKzM4ODUxIGMxYThjMmQ3ZTUyOGJkYjc5NzBmNTJkNTgwNDhhYzkyNWU1YzdlYzQgbGVnYWN5LXRydW5rCiszODg1MiBhYWVhYjI0OWM4NmFkMzI3ZWYxMjcyYzMwZmY3YjA1NDg2OThkMTU3IHJlbGVhc2UyNC1tYWludAorMzg4NTMgZWM5N2U0YzM3MDU2M2FmOTdkMjY0ODg0NDY2OTVmMzk2ZTYwODQ2OCBsZWdhY3ktdHJ1bmsKKzM4ODU0IDVjY2M4Nzc3Y2VhMjcxNTc5NmUzM2QyNmM2MTFhYjhmNjQxNDExYmUgcmVsZWFzZTI0LW1haW50CiszODg1NSBhNTE4NWFjMWU0ZWM2Y2FmYzdkMmU1NDgyOGU3NTI2MzAzYzNhZjE5IGFzdC1icmFuY2gKKzM4ODU2IDEwYWYxNjU4M2I3NTU1ODljYzBmNDYyNGY3NGIyOWI0MDMwYjBkNmYgbGVnYWN5LXRydW5rCiszODg1NyBkYWJhODVlZjY1NGE0OWFiY2FiMGExNDc2ZGIyMjM0ZjM0NzRlNmM5IHJlbGVhc2UyNC1tYWludAorMzg4NTggYzBiNGRlNzQxYjM4M2RmYzM4NWRhODU2M2RjMWI2Yjc5YTYxMDFiMyByZWxlYXNlMjMtbWFpbnQKKzM4ODYwIGExMjkzZWU2ZTFkYjlhOTRjOGZhZTkyZTIxZTZhYjViYzYzODRhYWUgbGVnYWN5LXRydW5rCiszODg2MSAzYzY3OWQwMDg3OWViYjFiNTEzYjE4ZWY2YWViMTQxMmNkNDIwZjc3IGxlZ2FjeS10cnVuaworMzg4NjIgNDc1ZjhhZGNiMDMyOTQwZTZmNjZlNDA3ZDE1Y2VlYzQyNzgxNDc3YiByZWxlYXNlMjQtbWFpbnQKKzM4ODYzIDcyODdiNDExNDVhZTM3NmEwZmNlYTcwMTIyMTc2MDVhZWI3MDY3NjcgbGVnYWN5LXRydW5rCiszODg2NCAyYzc0OThjMmFlNzA3ZmRhMzcyY2Q3NDRkZDVmMmZkYTllOGQ4NjJlIGxlZ2FjeS10cnVuaworMzg4NjUgNzRjMTJjMWYzNjkyOTQ2MTkzNTg0Mzg0ZWI3M2IyMzhmN2JiZjlmNSBsZWdhY3ktdHJ1bmsKKzM4ODY2IDlmZTc4MDFmYzlhNGEyMTg5M2E5Y2E0NmUzMjI3ZTQ0ZWUxNWEzZTkgbGVnYWN5LXRydW5rCiszODg2NyBhMTcwMDFmOGUxYjRlYjQxMWQ0MWNhMmVhNWM0MTkyYmRjMTI5ZmM5IGxlZ2FjeS10cnVuaworMzg4NjggOWM5MTcyYmUxZjY5NzVlYmI1YjQyNDI0NmExN2I0ZTk0MWYwNDE2MCByZWxlYXNlMjQtbWFpbnQKKzM4ODY5IGU0ZTBjZmYxNmJjN2U5N2I5NzQyZTdjYzNmZjU4ODhjZGMxZjk5NDYgbGVnYWN5LXRydW5rCiszODg3MCA3NWY1MTk2MTA5N2I5ZDk3NThkMDQxODM5NTY3ODUyNjA4YjQ0ZmI4IGxlZ2FjeS10cnVuaworMzg4NzEgMWU3YTZhNWMzNjE0M2U0Y2Y2OWU5NjdiNjNiZGUzYzNjYzNkYzQ4YiByZWxlYXNlMjQtbWFpbnQKKzM4ODcyIGIxMTYzMzlkZGYyNzg1ZjM0MTE3MGY4YmQ5NWUzNzlmYjBiYThhYjcgbGVnYWN5LXRydW5rCiszODg3MyAzNjU4YTdlMTFjMTQ4ZDgzYzA4YWI4M2YwOWEzYjVlYzBlZDcwNzk1IHJlbGVhc2UyNC1tYWludAorMzg4NzQgYWU1ZjI3NDQ2ZjgxOTI0NzUzZGRkZTFiYjJhNDEwM2JmZjZmODYwNCBsZWdhY3ktdHJ1bmsKKzM4ODc1IGYzMzAwNzg2NDI0M2YwOTYwNjY4OTE2MDc4ZTgwMGM0Y2E1MDU2YzYgcmVsZWFzZTI0LW1haW50CiszODg3NiA5MzM5Yzk5YTI5ODI4MTA3YTdhYzkzZWZhODJmNGNkY2FjMGI1NGUwIGxlZ2FjeS10cnVuaworMzg4NzcgNDA0MDg4NTAzYTc4MDI5NmExMWQyZDEyMTA3MzM0OTAyOTFjZmZhNyBsZWdhY3ktdHJ1bmsKKzM4ODc4IDM3NjdjZGFhNjcyODI0OGNhZWVhMTZlOTRkMjM2ODU0ZGE3MWZlNGMgbGVnYWN5LXRydW5rCiszODg3OSBjOTFlNWUzMWM1ZmYxYzJhZmJiMGM3Zjc1ODM2ZDA3MDk2NWFlYTI2IGxlZ2FjeS10cnVuaworMzg4ODAgNmJhMjkzYjcxMTViNzllZDIxZTljNzYwMzgxNTliZDZlMDcyMTcyYSBsZWdhY3ktdHJ1bmsKKzM4ODgxIDgwZmIyODkxYjMzYmZjYjExM2IwYzQzMzgyNTk3Mjk1ZDc1NTY3ZDYgbGVnYWN5LXRydW5rCiszODg4MiA0YTMzYzU4YzMxOWMwOGI4NjE4M2E1ZWE5MjE4YzgwNGY3OTNiMzk4IGxlZ2FjeS10cnVuaworMzg4ODMgMDQ3NDM0YWNiNWE5MTlkMzY0MDYxYTY2ODkzNzdlMjY2NzM5ZGUzYiBsZWdhY3ktdHJ1bmsKKzM4ODg0IDUwYmVkNjc4ZWRkYTJkN2YyMDgyYjZjODM2NTU3YWEyMGE1YTEyYTEgbGVnYWN5LXRydW5rCiszODg4NSAxZWE4MDc3NjkzMjkyZDAxNzBlMzY1YWM5ZWJiNzAzZDc4MGYxZmU3IHJlbGVhc2UyNC1tYWludAorMzg4ODYgZjZhZjk0MzAxZWJjMjc1MTkzZGJlMDQ5Y2NiYWIyYTM0YTkwZGRlNiBsZWdhY3ktdHJ1bmsKKzM4ODg3IDE0NWMwM2E4NWVhODM4NzI1MWUwYzA5NTMzODdhMzhkYjZlZjQyZDkgcmVsZWFzZTI0LW1haW50CiszODg4OCA5MzYyOTc3MGE5M2Y0Njc5ZDRkNmE3Yjk0ODIzMmI2ZDI2NzYzYzk2IGxlZ2FjeS10cnVuaworMzg4ODkgODZmNGIxODE3Y2FhNjljNmFhMGM1NDE0MzljYjZlNDZiMDY2MWEzNiBsZWdhY3ktdHJ1bmsKKzM4ODkwIDY3MmU1ZjY1MTcyYzJmMTY5YTFiZDQ4NjQxZTNjNDc5YmM2ZWI4MzkgcmVsZWFzZTI0LW1haW50CiszODg5MSBkNDUxNTU0Nzk5NzY2NmMwYWY4ZWNmMmJlMDgzYzRlMGM2Y2Y0ZmI3IHJlbGVhc2UyNC1tYWludAorMzg4OTIgMDkwNTgxMmRmNGE1ZjE0OTI1ZDUxMTdkNDJiMjk3YzJlYjE2ZTI0NiBsZWdhY3ktdHJ1bmsKKzM4ODkzIDFkZDhhMGQ2NDQzMjFjYmQwM2U1OGFmNDk2NzdmNTIwODFiZGNhZWMgbGVnYWN5LXRydW5rCiszODg5NCA5MTY1MTY5ODEyNjEwNjFmZTA2NTJlYzQ2ZDY2MWU1ZmUzYmMyMTY0IGxlZ2FjeS10cnVuaworMzg4OTUgMzhkMDRlZDAyOGQxZWY1YWZmNTMxMTNhMzIzYWM4ZTA3OGVkZmM5MSBsZWdhY3ktdHJ1bmsKKzM4ODk2IDVlNTExZGRlZjQ4YjJkYjVkNmI5MGQzYmMwOTk4NTg3ZTFjZDVjODUgcmVsZWFzZTI0LW1haW50CiszODg5NyAxODczZThhZjVhOGFjMjE1NGQ1MmFmMDU4Mzc1ZjZmYzc2NGExNWI4IGxlZ2FjeS10cnVuaworMzg4OTggM2NhYmE4MDcyMDRiYmM4ODBiZmI1ZjE2NWU0ZDY5ZWIzZDlmMThjOCBsZWdhY3ktdHJ1bmsKKzM4ODk5IDBiMDFlZTg2Y2NmZDg4ZmJmOWZmNTUyMTBlYWEyMGZiZmZkNjIyM2QgbGVnYWN5LXRydW5rCiszODkwMCBhMjkxYWQ5YWE2YTEwYzAxODFhOGE4MTViMzk2NzcwMjBkNzFjZjdjIHJlbGVhc2UyNC1tYWludAorMzg5MDEgOWEwN2Y2ZDQ4MTZhYjFjZGIxOGYzYzE1MmM0Mjg5NjM3YTk1ZDQzYiByZWxlYXNlMjMtbWFpbnQKKzM4OTAyIDE4NGYxMGUxMTZmZmY5NDM1NTFlNWVmNWFmYjI3OTI0OWIzYzA0NTYgbGVnYWN5LXRydW5rCiszODkwMyBlZjkzMGNhZTYzYThlMjFiZTUyZDk5YjI3NGFhYTIwMDU2ZmRkZGQyIGxlZ2FjeS10cnVuaworMzg5MDQgNjZlMDQxNGNkZmE2YWIwODhjMjllNTcwNjZmZWNhYWZiMTQ0YThjYiByZWxlYXNlMjQtbWFpbnQKKzM4OTA1IDE2OTlkYzUxYTViNTc2OWM2NTk4NWVkZDdhOGUwMDQxZWIyYmE3OTMgbGVnYWN5LXRydW5rCiszODkwNiBiMTQxZDU3YzRmY2E5NmMwMTg1NGE0ZDk3YjZhN2VlNzY3Y2MzNDcyIHJlbGVhc2UyNC1tYWludAorMzg5MDcgOTg1NDQ3MmI5MjFiYTQ3YjE3YTk2NjM5NTg4NGMxYTE0MDM3Yzg1OCBsZWdhY3ktdHJ1bmsKKzM4OTA4IGVmMTg0NTYyZThlMDNkZTk2MWIxODc2YWJhOGU5YmY2MjAyYTJlNDYgbGVnYWN5LXRydW5rCiszODkwOSBjMDk1ODg4ZmM1NDNjODBjOTUwYzAzMGRjZjkxMGZiM2QyNDlmOWQ3IHJlbGVhc2UyNC1tYWludAorMzg5MTAgYjMxNzM2ZjYyNWJhN2Y5Yzc1MjgwZDUxNTMxYjg2NzEzMGQ1NDVlNiBhc3QtYnJhbmNoCiszODkxMSAwMmYxM2UwMGUyZWQxMzAzNTg4ZWE4ZDc5ZTdmYmY5ZDNjMTMzZmJhIGFzdC1icmFuY2gKKzM4OTEyIDhiMDVhNDczMmNmMzYxYTM4NzUzZTA5YTA0ZGRmOWJhNzIwNDE5NmYgbGVnYWN5LXRydW5rCiszODkxMyAwMGNkMzUwY2Y3YmYwYzYyZDNmZTJlZDFjMGVjYzZiYmQ2Y2JlMmY5IGxlZ2FjeS10cnVuaworMzg5MTQgYzBlYWQyOTE4Y2Y3NDU0MDI0MWNmY2MxYzlkZTM0NjVhOTRjZThjMSBsZWdhY3ktdHJ1bmsKKzM4OTE1IGY3MTNlOGFiZjE0ZTNjYTYyM2Y5MmM5ODg2ZDRmZThkYzU3Y2ZmNDAgbGVnYWN5LXRydW5rCiszODkxNiBhMmIyMjI3NzczZTdmZTk0YjczODQzMjZjMjNkOTlhM2MyZDFiNTIxIHJlbGVhc2UyNC1tYWludAorMzg5MTcgYjQyM2I0MjdlMTdlOGQ2MWIxZWFmNjBkMTM4ZjQxNTQ0YjVhMjBlOSBsZWdhY3ktdHJ1bmsKKzM4OTE4IDdiY2FiYmI2YjRiN2VmNDNkYWRiOGEzMzE2M2Q3NmQ3ZmQwOTJmZjQgcmVsZWFzZTI0LW1haW50CiszODkxOSBlM2FjNWYwYWQzZTNhY2I5ZWQyY2M4ZWQxNjEzOTA5M2Y4MmY2YTVmIGxlZ2FjeS10cnVuaworMzg5MjAgMjEyNTFlMjIxZTU2MmYwZGNlYzJjMTk4NTllM2I5YzBkNDFkYWI5MSByZWxlYXNlMjQtbWFpbnQKKzM4OTIxIDI1YTBlMWZhYThhNWVkOGYwOTFmY2YxYTBlNmExMWJlNGMyNjM5NzQgbGVnYWN5LXRydW5rCiszODkyMiBmY2QyYzM4NDc4Njk5ZjIzMWNjOGVmYjY0MTMyMGY1YmI3ZGE2MDhmIGxlZ2FjeS10cnVuaworMzg5MjMgMWNkYzAzMzRkODc3YzcxYWJmZjEyZmQ0ZDY3ZmU5OTlmMTQwZjJhYiBsZWdhY3ktdHJ1bmsKKzM4OTI0IDE3YWEyODk2MmI4NWRhYTM5M2IxZmNiYWI3MDdlMzYxOTA2YzQ5OTEgbGVnYWN5LXRydW5rCiszODkyNSAxY2E3YWU0OGE5MzE1MWI0NWVmYzVlZjYzZWNkYjRhN2E3NjM2Njg1IHJlbGVhc2UyNC1tYWludAorMzg5MjYgNTJmZWQyZDA2NDFhNWJkOGVmYTRkNzhhNTA2ZDc2MjhmMTAyYjc4ZiByZWxlYXNlMjQtbWFpbnQKKzM4OTI3IDg4ODBkOTFjZGIwOTM4M2E0ZmZmMzIwMTc5Nzc0M2FjY2EyMWIwNGUgbGVnYWN5LXRydW5rCiszODkyOCA3OGQwYTU1OGIwOTM4MzRlODY3ZDMwNjJmMTVjMmU0ZDA5NWVlZjdjIHJlbGVhc2UyNC1tYWludAorMzg5MjkgNjVjOTVhZDY3MmFlOGZkNTdkZTM0NDAyN2E2NmJmNWY1Zjc2M2EwZCBsZWdhY3ktdHJ1bmsKKzM4OTMwIGRlNzZiMzQzZDljODJiMmI2YTcyZThlMGJiZDhjZTYyYjVjN2ViMWUgcmVsZWFzZTI0LW1haW50CiszODkzMSA0NGUzZjIxZjA1MjU5MGRkZmFiYzEyOTA5YWY1MTg4YTRjZDg5ZDhjIGxlZ2FjeS10cnVuaworMzg5MzIgMWZiNzY4ZWJkOTBlMmIyYzZmNWQ2NWIxNWE5MGQ0Y2FiZTQwYWZkYiBsZWdhY3ktdHJ1bmsKKzM4OTMzIDhlOTY4MmZkNTdmOGVhNjkwY2E0NzAwZThhMzVkZmMxNGVhYjIyOTYgbGVnYWN5LXRydW5rCiszODkzNCBiNzRhMWE1MTI5MTc4YTYxZjMyNDQ4NTdiZjFjMzc0MDRiZTAxYTMyIHJlbGVhc2UyNC1tYWludAorMzg5MzUgZTM5NGY3ZThhMGMxNWY4NzA0YjI3Y2Q3MTA4NDc2Nzg0NTU2NDc1MCByZWxlYXNlMjQtbWFpbnQKKzM4OTM2IDRhMDJhNDMxNzY1NTViYWNhMzA0NWQ1NTUyYTZmYzcwYWVjMjI4ZDQgbGVnYWN5LXRydW5rCiszODkzNyAyNzU4NDM2MzA1MjI4NmUxOGM4NzYwMzJiZmQwZjJlZWIxMzkzMjI5IGxlZ2FjeS10cnVuaworMzg5MzggOTBmY2EwODE0NWQxMTQ5N2U2NWEwZjY2MTg0YmQ0MjYyZjYyYmRmMyBhc3QtYnJhbmNoCiszODkzOSA2MmVhYzhkOTUzY2YxYTBmMDYxOTU1OTM4NzA3ZjE4ZDU0OGM1NWM3IGFzdC1icmFuY2gKKzM4OTQwIGJhYzg5OGQzOWI1MzhmMTI4MmY1NWJjYTE3NDlkODhiMGJmOTQzODEgbGVnYWN5LXRydW5rCiszODk0MSBiMzhjMmFhNjZlZTdiM2U0YTc0OWZkZTIwNDUxY2Y5NDhlMGI0NDA5IGxlZ2FjeS10cnVuaworMzg5NDIgNzVmZDlhNTE1NGM0NjFlMWQ4N2RlYmViNmQ3NjE2OTRlNTAzZDllOSBsZWdhY3ktdHJ1bmsKKzM4OTQzIDQwZjdlMWRhMWJkZmU1NTJlNTZmODc0MzUwMjU2MzZkOWQyZDExMzEgcmVsZWFzZTI0LW1haW50CiszODk0NCBiYTQ3MjdkYTA3ZTU0ZWJhNGZhOGUyZjI0OGNkYTYwMDQ1MDdlZTcyIHJlbGVhc2UyNC1tYWludAorMzg5NDUgY2IyYmU0NDI5YTRjZmQzYWM4YzE5NTI0ZTYxOWRkNmQ0YTM3YmM2YiBsZWdhY3ktdHJ1bmsKKzM4OTQ2IGVhNWMyMjgwZjkxNTc0MjM3ZjNkNDFhYTE4OGZlMDJiNWI5NzAyNjMgbGVnYWN5LXRydW5rCiszODk0NyAwZGYwNWVhYTFlMDk2ZWVjYmQwMjEyN2YxZTY1YjU5MzQ3Mzg0MTNkIGxlZ2FjeS10cnVuaworMzg5NDggYWM1NmQxN2JjM2QxNzBjYjFiZjZlZTlhNWIwZjFlODcxOTk4NGM0ZSByZWxlYXNlMjQtbWFpbnQKKzM4OTQ5IGZjZjAxMGMzNzBjYmNlYjc3YzM1ZmFhNDhiNzYxZjQyNTEyOGIyMDggbGVnYWN5LXRydW5rCiszODk1MCA1YTFhMzFkOWUzN2UzYzEzOWRlOTdiOWJhZTRhZTgxOGU0NzE1NmQzIGxlZ2FjeS10cnVuaworMzg5NTEgMjE1Yjc4ODVlMTA4NTRjNTE5OTc3NjZjMWUzYWNhZmI3YTc5MjRkZCBsZWdhY3ktdHJ1bmsKKzM4OTUyIDMyOWIyOGE4NTk0NzRhMzUwN2ZhM2YyNTFiY2EyNTZkOTk4MGQ4ODkgbGVnYWN5LXRydW5rCiszODk1MyBlMDM3MTQ4MDQ4NDViOTI5ZThjY2U1ZjAwMGE2MWQ0ZTUyODIxMGJlIGxlZ2FjeS10cnVuaworMzg5NTQgOGJmZWJjZjA2MzYzNzAxNDUxMWUxZTRjMGY3OWM3ODBmNzA3MTBhMCBsZWdhY3ktdHJ1bmsKKzM4OTU1IGE0OWI4OGU1MDMwNTk4Zjk0MzIzNDk1ZjRjZWRmMWE2YTlmZDczMDkgbGVnYWN5LXRydW5rCiszODk1NiBiNzNmMTMwYzdiODQwNThlNjdhMzUyNDRlNmI0NGY4MGRiYWY1ZDFiIGxlZ2FjeS10cnVuaworMzg5NTcgZDRkYWFiYWJhYTQ1YTVmZGY3NDVkZjBmZGZmYzgyYjg3MTczNTk5OSBsZWdhY3ktdHJ1bmsKKzM4OTU4IDI5ZDNkZWYzYTU2YWI1YTJkYzQwYTg4MzVmZTcwM2I1NTMyZWE3OGYgbGVnYWN5LXRydW5rCiszODk1OSBmM2IwMjIyMmE4MGEyMDQzMjJlZDc3ODFkYThmMjFmMTJmOTIwMTU1IGxlZ2FjeS10cnVuaworMzg5NjAgYzU1ODk5ODYzYjljNzllOWMwNjIyNzk5MDQxYjk3NDFmMzIxODIzMSBsZWdhY3ktdHJ1bmsKKzM4OTYxIDE5YTUwOTFmMjY1ODA2NDA2NTA3OGUwNThjZmIyZGU1NGVmMWNlMzkgcmVsZWFzZTI0LW1haW50CiszODk2MiA1NTU0NTExYjM3MjU0OTExYTY4NjQxNjIxYTE1M2YxNDM4NThkMWZmIGxlZ2FjeS10cnVuaworMzg5NjMgMDg3NzM1Zjg2NzAxYzE5ZDQzMDFhYzA5MDdjOTIwMzA2Mzc2ODUzMyByZWxlYXNlMjQtbWFpbnQKKzM4OTY0IGQ2MDQ3ZTU1ZjdhZDNkNmNlMWZjZGNjYzkyYWE5MjExMmY3NjVkODQgbGVnYWN5LXRydW5rCiszODk2NSAzYjQxYmQ4Nzg5MThkMDMwOThmMzQxYWFlMmQ3MWY5NTg5NWVmY2FmIHJlbGVhc2UyNC1tYWludAorMzg5NjYgMTQ5MGY4MTFmOTNhOTRhNTYxMTA5ZTY2YjBlMDgyNmFlM2Q2ZmNiNSBsZWdhY3ktdHJ1bmsKKzM4OTY3IDczZjI0ZjVjNGUzZjkzMjU4ZjBhM2RmZjJmMDAwYWE4ZDFkMDk1Y2QgbGVnYWN5LXRydW5rCiszODk2OCBjMDVlNDVlODcyNGUyZmU0YTJhZDQwNTY3NmU1NTM4MzNjYzU1NTYyIHJlbGVhc2UyNC1tYWludAorMzg5NjkgNTU1NDVlMDIzMTk5ZmMwNmE1MDE2Y2YzZTI5NGI5MDc2NDQ0NTBmYiBsZWdhY3ktdHJ1bmsKKzM4OTcwIDU2MDg4NzQ5NzIxYThhZDdiN2E4N2U3YzljZTI5NzM1YWFmZDYzYzkgcmVsZWFzZTI0LW1haW50CiszODk3MSBkNDMwYjI5NjQxYmE0MGJlNGYzZjdkMTc2YzcxMzE1YzJmODhlYTIzIGxlZ2FjeS10cnVuaworMzg5NzIgNjYyNDg4ZDQxODdkYjY4OGEyNTI1MGZlYThiNzNlNjgwN2YxZTI3MyByZWxlYXNlMjQtbWFpbnQKKzM4OTczIDgyMzczZDI1MjVlZTBiZGJhNDk5NGQzYzU1MGZiODA3ZTg5ZTM0MjMgbGVnYWN5LXRydW5rCiszODk3NCA1Zjc2M2Y5ZTUwZjkzNzBkZTgzYjhiN2IyZDZkOTIxMjBiOTJjNjhlIGFzdC1icmFuY2gKKzM4OTc1IGYyMzAwN2Y5MjE3YjEzNWUxMGViYzhlNDA3NGRiOTFkMWQxMWJmMjYgYXN0LWJyYW5jaAorMzg5NzYgOGFlOGU2NGNhOWJkNGQ4NzU0YzllZmI5OTE3NDNmNzU4YjUxODA5MyBsZWdhY3ktdHJ1bmsKKzM4OTc3IGU3OTc5M2E4ZWVlYWI1Yzk4NTJmNWNjNmNjNThhZTBiNGQyZTQxNmIgbGVnYWN5LXRydW5rCiszODk3OCA0ZmRhNDA2M2NjOGNjMmM3Y2U1ZmU5ZDI3M2NhMDMxZTcyMWY3MjZmIHJlbGVhc2UyNC1tYWludAorMzg5NzkgZWM0YzE2ZmU3Mzg0Y2VkNTY1YTliY2JjZWY4YmNmYWI2NjJmNzI3YiBsZWdhY3ktdHJ1bmsKKzM4OTgwIDVlNDVkY2JmN2NmZmQwNGMzZTJmZjQzMWFhNDI3NTFjYjhiNzQ3MmIgbGVnYWN5LXRydW5rCiszODk4MSA3NDhjOGUyZDQwZWVjMDVjZDVmZTE5YWMyODk4NzcxZjY3MjZlYmM4IGxlZ2FjeS10cnVuaworMzg5ODIgY2E1ZWY3ZWUzZjQxN2FjMzExY2NmMTA5NDliZjQ3MWZhODRmYWEzMyBsZWdhY3ktdHJ1bmsKKzM4OTgzIGVlOTlkYjA2YzBlYmNmZDg2YWM1ZGI5M2M2NjJiNGUzYjEwMTYzZDEgcmVsZWFzZTI0LW1haW50CiszODk4NCBjNTU1MTBkYWViZDI1MmQ0MTdiNGFhNmI2MDBhN2YwMmZkMDJjMDk0IGxlZ2FjeS10cnVuaworMzg5ODUgODA3NjQyNGQ0NTVkMGViMzdiNzFlMjQzYjRhN2FmZGM5ZGMxZjgwYyBsZWdhY3ktdHJ1bmsKKzM4OTg2IDA3OGRhNDc0YjMwMjEzM2EzMWM5ZjgyZDdjZTlmM2E5MDZmYWQyZDggbGVnYWN5LXRydW5rCiszODk4NyAyZWI1NjliNmNlMjM0YTg2ZDY5YmZkZGE0MGUxZDkxMjQ2YmI4ZjMxIGxlZ2FjeS10cnVuaworMzg5ODggOTI0ZTAyODJiNTdlOTgzNWVjNmExMWY4N2ZlNDgwZjFjYmIxZWIxNyBsZWdhY3ktdHJ1bmsKKzM4OTg5IDkyY2Q5NTFjYzRiMThkOGIyYTNjODkzOTRkYTRiOGYzZWIyZTA3ZTMgcmVsZWFzZTI0LW1haW50CiszODk5MCA4NTE0NThmZmZkMzQyMTBmNjIwZWIzODBlMTFjNmFhMzMzNDk2YTNjIGxlZ2FjeS10cnVuaworMzg5OTEgMTczZTkwZTBkMmUzMWQ3ZDhiNDA2NjYwMDQ2YzQ2NjM1NzdlYWZkNSBsZWdhY3ktdHJ1bmsKKzM4OTkyIGFhMWM1MzY2NjA3ZDZmNWE5NGU5ZDMyN2FmZGFiZDRhMWNiZjI1YzAgbGVnYWN5LXRydW5rCiszODk5MyBhMmI1MDQ1ZGY0Zjg1NjgwYmYwZmQ2ZDAwMzgzODBiY2U4ZjhlNTk1IHJlbGVhc2UyNC1tYWludAorMzg5OTQgNzRhODQ1OGIyMjc2MDJmOWI0ZDU1ZjhkNTBhYWNhOWFmZWQ5ZTk1MSByZWxlYXNlMjQtbWFpbnQKKzM4OTk1IGFiZTVhNWUzOWNjYzdkYWQyM2ZkZWE4OWM3NjdiZjliZTQ3OTk1ZTkgbGVnYWN5LXRydW5rCiszODk5NiA5MWI4Y2RiZmQ3YjQ2NTk0MDFmOWFmMTc0OGFmNDE3NmJmNmY1YmE4IHJlbGVhc2UyNC1tYWludAorMzg5OTcgMTMzMmYyZTcwNWIyMTZlZDFmNDVlYjliMjM3YzZhMmIwOWE3OGNlMyBsZWdhY3ktdHJ1bmsKKzM4OTk4IDgzNWFiMDY5ODRhOWM4ZDhmNjVhMWMxMjc0NTNhZGUxZjNjODQxNDcgbGVnYWN5LXRydW5rCiszODk5OSA1ZmIyMTYzMjMxZDMzNWQ1OWMxNWFmNjQ1YjcxYzBhZDRlM2I2ZDAxIGxlZ2FjeS10cnVuaworMzkwMDAgZGIxNjc2ZmRiNWI5MWMwNjQwMGMzNzI0YTgyYTZjMjQzNzBiZDQ1MyBsZWdhY3ktdHJ1bmsKKzM5MDAxIGY4OWNiZTY5ZGI2M2ZhMjViYWM4YWVhNjg2ZGIyYWY2NzMzMDdjNjkgcmVsZWFzZTI0LW1haW50CiszOTAwMiA1MWZlMjQxMzg0ODZlOTU0Y2MyNmJiOTQ1NjNlMGIzNWU5YzhjODM3IGxlZ2FjeS10cnVuaworMzkwMDMgYzQyNWNkYzhhZThhN2NhODg2YzFhODRkMjRhNTU1ODhlYThhMjRjZCByZWxlYXNlMjQtbWFpbnQKKzM5MDA0IDRmNWQyNmY1ZTNlNjQ1MmZkMjE1MzMzZjQ0OWFlOTU3M2E5MDNkYWQgbGVnYWN5LXRydW5rCiszOTAwNSA0NjY2YjQ1NzRjOWNiNTgzZmZhNjUwM2MyMzkzYTQ4YTgzNWZkZGI1IGxlZ2FjeS10cnVuaworMzkwMDYgNjk2NDU4MjQwYTY1ZWM0YzM3ZDgwNTZlYzgyODE5M2I4OWEzYjk2NCByZWxlYXNlMjQtbWFpbnQKKzM5MDA3IDBhOWE0MTBiZjc0Y2JiMDM4YjU0NmQ3OWVkZjgyYjhjOGMzMDlhNTcgbGVnYWN5LXRydW5rCiszOTAwOCAyYjUxODZiNTk1YjFhZGRkZGE3ZjA1MjJlOTJiMDQ1YWU4NDE1NzAyIGxlZ2FjeS10cnVuaworMzkwMDkgMjdhYTVlZWM1NDAwNGQ3YzMyM2U2NTc2MmQ5MzM4NTRiOWY4ZjcwNSBsZWdhY3ktdHJ1bmsKKzM5MDEwIGQxYmFjMjBjMGI5ZjRlMTJiZmMxODgwZjQyOGViNTUwMWVmNzMwYWIgbGVnYWN5LXRydW5rCiszOTAxMSBhYmU5Njg2MzI1YzM4YmEwODM2YjMzNzVlMjJjZTBjNWFlNzFjY2I1IHJlbGVhc2UyNC1tYWludAorMzkwMTIgMjAxNWQxNmQyNjQ3MDQ2YjUyZmJmZjA1ZTc2YzRmNjI4YmE5MWY5OCBsZWdhY3ktdHJ1bmsKKzM5MDEzIGM2YjdmYWRmMGFkYWUyN2ZlYzU1NmEwYTQzMWYyMTFhNmJhNDUyYmEgbGVnYWN5LXRydW5rCiszOTAxNCAxN2NjYWM2OTU0MTM0MDAwYWM5OTM5ZjQ4ZmRiOTRkN2YxZWU1M2MwIGxlZ2FjeS10cnVuaworMzkwMTUgNGE1ZjE4MWFjMzI0MDhhZDFmZWFmNmJiOTZiMzU4NjU0YzZlNTg5NSByZWxlYXNlMjQtbWFpbnQKKzM5MDE2IGE1MzU4NzI5NWYyMDU5NjU5NjIwM2VkMWY5YmVmODEwZWJlZTAxMDYgbGVnYWN5LXRydW5rCiszOTAxNyAzMjM4YWU2ZDJiMzA0MjMzMzlmMzcxMzk0ODBjNmQzMWEzZmI2ZWRjIHJlbGVhc2UyNC1tYWludAorMzkwMTggNDM4NGU1ODc5MTI2MTQxOTljMTM5M2QyYTc0NGQ3NTk3NTVjYzU5MiBsZWdhY3ktdHJ1bmsKKzM5MDE5IDY4YmNlNjhjOGY5MzI3OGZmNWJkZWRjMmM1YTBmYjkwNTE4YzY0NTYgcmVsZWFzZTI0LW1haW50CiszOTAyMCBiMmJkMDVjMDFhMzUxY2Y4M2IyYjExYjE3N2Y0NDAxNTU1MWFjNjM4IGxlZ2FjeS10cnVuaworMzkwMjEgOTgxNzljODI4MWNkYjYxMzI2MGFjNGQyYjM3ZDFiODJjNDk4NjlkMyByZWxlYXNlMjQtbWFpbnQKKzM5MDIyIDgzNDFjZWZkZWNhY2U4YzMyYWFmZTk5MmIyMThkMGYzYTQxNmVkMmYgbGVnYWN5LXRydW5rCiszOTAyMyBmMGFlMTE5NGRiNjllYTVlNWUxN2EzZDgxY2Q2MGE1ZmM4ZTI3NWYxIHJlbGVhc2UyNC1tYWludAorMzkwMjQgODYwZDdmOTNlNmI0YzlhZWE0NWIzZDIwZDAxZTkwMjE0ZTYwMjBlYSBsZWdhY3ktdHJ1bmsKKzM5MDI1IDU2YWM0M2Q5ZDYyNThiMWE2MDZhNTkxMGY5ZjdjNjdlMzM3ZGU4NDEgbGVnYWN5LXRydW5rCiszOTAyNiAxNzE0YzI0OTkyOGVmOGEwZDVhNjY5ODUwZTM3OWI5ZmQyMDRiMGE0IGxlZ2FjeS10cnVuaworMzkwMjcgMmQwNjkzYjlmMGJkOGM3OTRkNDlmYTMwNWQwYjQ5NzJlZGM4Nzk5MiBsZWdhY3ktdHJ1bmsKKzM5MDI4IGY1NTg5ZmMzZDk3NzE0ODNiM2RhZjgyNjlmN2YwMjhkMDUzZDA0NmUgbGVnYWN5LXRydW5rCiszOTAyOSBhY2Y2OGY2N2I5NzVjNzUxYWNiYmM2MGFiZDVkOWNhYmI1MjQzM2FkIHJlbGVhc2UyNC1tYWludAorMzkwMzAgMjM0YjIyYTJhY2YzYjc5NjJlYWEwNDc0YjdjMmU3ZTU3MDA1N2NiMSBsZWdhY3ktdHJ1bmsKKzM5MDMxIDJlOWU2NDJhNThjZWQxZjg5YjRlNGQ4Nzg0YThhOTI4MDE3Yjg5OGIgbGVnYWN5LXRydW5rCiszOTAzMiA0YzIzNzYyMDExMTVkNWFhYjkyNDIzMGM5OGQ4ZmQzYjc0MzM4OThhIGxlZ2FjeS10cnVuaworMzkwMzMgNTIyYzlhNDkwNDQxM2M5ODkzNWUxZDI3NzMyM2UxNWJiM2ZiNWYwMCByZWxlYXNlMjQtbWFpbnQKKzM5MDM0IDA5YTkxMGNiNmM4ZmYwM2I4MTU3YjI4OTc5ZGQwN2M2ZGQ5MjIyZDAgcmVsZWFzZTI0LW1haW50CiszOTAzNSA5NzNhYTRlZTE2MTUyYWRhMzc2NjJhYzZkMGY2YmU1MjVlYzM5OTA3IGxlZ2FjeS10cnVuaworMzkwMzYgYjZkMmE5ZDFhOTMzYTdjMGY4YjM1M2YzNDIxMjc0MGMzMmMzMzk0NSBsZWdhY3ktdHJ1bmsKKzM5MDM3IGYzZDMxNTFmODQxNzlmMWZmYjZlZGYxZjUyMWUwNTFmNTBmOTA0ODUgcmVsZWFzZTI0LW1haW50CiszOTAzOCBhYjgzYWIyN2M4MzdiNjQxYzBhMzljNGIwZTIxYjhlNWMzM2VkZjhhIGxlZ2FjeS10cnVuaworMzkwMzkgNTg2MzIwOTJlMDIzMjcwYzlhZjM0MWJlNDNiYjc0YzExYmRjNjZlMyBsZWdhY3ktdHJ1bmsKKzM5MDQwIGFkZjE4OWViNGY1OGE4ZTU5NzM3ZmZmMDZlODJjOTQxMWZjMDY1NTAgbGVnYWN5LXRydW5rCiszOTA0MSA1ODUwNTlkZTJiNDA0YWRmYzlhOWI5ZDI2NDdmNjZiYmE4YjI3ODRkIGxlZ2FjeS10cnVuaworMzkwNDIgYmZjOTFkNGFmNjQ1MzJhMGUxZGE4NTcyNjZmMGY1MGU2NTEzYTUwYSBsZWdhY3ktdHJ1bmsKKzM5MDQzIDJmYjBjNzZkMDI1MWExYTcwMjY1ODgyZmQ4MTExNTc2ZjU4M2Q5OTYgbGVnYWN5LXRydW5rCiszOTA0NCA3ZWEyYmUyYzBlMWRlMGY3YWM4YmNlODYwMGNiZDJiMTQ0NzFlY2I2IGxlZ2FjeS10cnVuaworMzkwNDUgMmQ4MzMxMjNiMTE5MDYzOGI4OGNjZGY5MjAyYmQ4OTc3ODVlZDI4ZiBsZWdhY3ktdHJ1bmsKKzM5MDQ2IDA0ODY4OTU5ZjFmZTY4MzJjYzk5NDlhM2NiYjVlM2EzMzU3YTdiZmMgbGVnYWN5LXRydW5rCiszOTA0NyBkYTc3MjAwN2QzNGQ4MDU5ZDk2MjNiMjYyNGU4YmE2MDNhN2Q4ZjYyIHJlbGVhc2UyNC1tYWludAorMzkwNDggMGVjNzExNTJjN2UyYmUxMDFlMTU5MmRhN2M2ZjkzMWY4YTQxYjAwZSBsZWdhY3ktdHJ1bmsKKzM5MDQ5IDJlZTYzZmY0NTk3MGZkZTMzNzAyMjgwOWNiOTA0OGZlNTAxOWZhNTcgbGVnYWN5LXRydW5rCiszOTA1MCA1MzRmOGVhNTczNzdlYTg5MzFkNWIyOTdiNmM3Y2I1ZTc0OWQzMDU4IGxlZ2FjeS10cnVuaworMzkwNTEgZGIyY2Y3NTk5NDhhZjI1MTJiNWMyMDNiMGM2ZmU2NGE1ZDk0ZGI5ZiBsZWdhY3ktdHJ1bmsKKzM5MDUyIGNkZWM5NzhiOTE2Y2UyNWI3MTUzMGFmZjIwNWM4ZDgzZjhjNjU4YjMgbGVnYWN5LXRydW5rCiszOTA1MyA3MDY4MTI2N2E3NGE5YTYzNzYxNTMxNTVkNzg3YjU5Y2NlNWMwODc4IGxlZ2FjeS10cnVuaworMzkwNTQgM2UwZGQ2MmVlMzFiZjdjZDg2NDQ1ZmNmMzk5OGYzNmM2NjhmZTBjNiBsZWdhY3ktdHJ1bmsKKzM5MDU1IDAwODdhZjA5NTNmNGRjNWRhOWUyNzVkZWIyMTVlMzliZGQxMmM0MjYgcmVsZWFzZTI0LW1haW50CiszOTA1NiA1ZDMzZDgzZThkZWM4YTk0YTBkOWNhMzllNmYzZDcyZTY4YTFiMjQ1IGxlZ2FjeS10cnVuaworMzkwNTcgNmU5MzQ0MmUyNmRkMDNmNDliNjU1YmNjZGM2OTY1MjcxZjQ4YmFiNiBsZWdhY3ktdHJ1bmsKKzM5MDU4IDAxMmEwYWRhMGQwNWZlODJmNGEzMWE4MjcxNTY4NWVhNjk4Y2E5ZGYgcmVsZWFzZTI0LW1haW50CiszOTA1OSAyY2I2Mjg2MDAwNWY2MDBhNDA5YWRiYWYwMDBjNzE1NzRjM2Y2MWNjIGxlZ2FjeS10cnVuaworMzkwNjAgODZlOWY2MTY5N2Q4YWZkZjQxNTc1MjE0ZGU0ZTcyYWM1YWE5MjJhNCByZWxlYXNlMjQtbWFpbnQKKzM5MDYxIDc3ZGUyMWNjZDIxMGU0YTJkMjY5YjNmMmY0YTY5ZTI2ZGRiODRkNjYgbGVnYWN5LXRydW5rCiszOTA2MiBkYzY4ZGU3MDM3NmI0MDdlOWFlNzEwNDcxN2I2YWVkYWJiN2NhZWYyIHJlbGVhc2UyNC1tYWludAorMzkwNjMgMzliYjhhNDBhMmM4NWU1ZDhhZTBiMjRkYTBjMDg3MjI1Njk4NDBiMyBsZWdhY3ktdHJ1bmsKKzM5MDY0IDgyOWY2NmQ1NjE0MGMyOWYzZjA0ZGQyZWM5YTg4NjQzNGQzNzRmMDQgcmVsZWFzZTI0LW1haW50CiszOTA2NSAzZGQ4ZDQxZWMzNTAzMDIwODA0MDJhNmRjYTY5ODdmNGVhYjM5M2RkIGxlZ2FjeS10cnVuaworMzkwNjYgMzNhNGQ3ZTVjODJmMmJjYmU0ZDVkNDViZWNjNjIwZjUzZjM2OTI3MyByZWxlYXNlMjQtbWFpbnQKKzM5MDY3IGJiYjg0YjU4NTZmY2U0ZGVjYjVmMmZlY2FlNjkwNTUxMzllZmNiNTggbGVnYWN5LXRydW5rCiszOTA2OCBmYjJmNWFhNGQ1YWIwMWY1ZjU2ZGNkYjQ4Zjc4Mzk1NDI2ODYzNGY3IHJlbGVhc2UyNC1tYWludAorMzkwNjkgOGRiYjczMWJhYTYwZjA2NTRhYmM0ZDg4YTYzMWI2ZTBjNGI4MGFhYSBsZWdhY3ktdHJ1bmsKKzM5MDcwIGQ2MGE1MGE5MGZkMTUwZWU4MjM1M2M2ZmJhYmQ3ZjFkYWE3ZTAxMGMgcmVsZWFzZTI0LW1haW50CiszOTA3MSAzMjUzZGJkNzJiNjBhY2RhZjg2MmM1N2E3NjAyM2I2YWNkODE5NzhlIGxlZ2FjeS10cnVuaworMzkwNzIgZTVmNjJlMDQ5YzZmZDkyMTBiNDgwYzQ0ODhiOGE1OTQwNjcwNGJhNCBsZWdhY3ktdHJ1bmsKKzM5MDczIDkxMGI1ZGI0NjIzZTMxZWEwNTAxZWJmZTFjMzgyMTI2ZDIyNzQxZjUgbGVnYWN5LXRydW5rCiszOTA3NCA5OTMwOTgwMmQ0OTA0OGVmY2ZlNjg4ZGY0ZDg3YmZkZGI4ZmUyZTQxIHJlbGVhc2UyNC1tYWludAorMzkwNzUgMjk4NWZjNjMwOWE4NGE5ZTZjYjJkOWExM2I0OTAzZjJiZjA5OTE3NyBsZWdhY3ktdHJ1bmsKKzM5MDc2IGY4NDBmNDQ3MDMyNTE5ZDExNTQ1Y2NhZmQ3OGJkNGRiZjk0YzUyYzEgbGVnYWN5LXRydW5rCiszOTA3NyBiODQxMzhkOThjZmEwM2ZkOTAxNTAzNjFlOGUzYWYyYzRjZmI3ODY4IGxlZ2FjeS10cnVuaworMzkwNzggNzI4YTBkZTg4Mzk1YzIzMGY2NmE0MmE5OWY1MDQ0YjNiNjkyOTYwZSByZWxlYXNlMjQtbWFpbnQKKzM5MDc5IDA2Yzc2MjcyMjg5MmI4Y2NkMmJmNTA1NTJkOGJlMGQwNmJlYzJiYTEgbGVnYWN5LXRydW5rCiszOTA4MCA0ZDFkYTYzNjEyZWI1YzlkZTg3NDRmNWI3ZjhjNDI2ZGI4MDRjOTQ5IHJlbGVhc2UyNC1tYWludAorMzkwODEgYTMxYTc3MGJiNzc4NTg3NGU0NDcxMTgzN2EwZTNhMGI1YzBjMmE1MyBsZWdhY3ktdHJ1bmsKKzM5MDgyIGY1NDczYTc2MmI1MDE2YjYyYWE1M2M4NmZiMjRjYjgxMTY5NzMwMjQgcmVsZWFzZTI0LW1haW50CiszOTA4MyAzYzZhZWQzZjNhMzEwMmJiYjFjMzJiZGZlMjczMmNhYmNkMzkzNTIxIGxlZ2FjeS10cnVuaworMzkwODQgODFjYTM1YWQ5MTk5ZTg4MTQ4MmQxYWY5OTllZmJmMWY4MzU4NDFlMyBsZWdhY3ktdHJ1bmsKKzM5MDg1IGRhZWJmZGUwZTFjZjFjNDNlOGFjYjYxZDFiMjZmZGI0N2QyYzNhYzcgcmVsZWFzZTI0LW1haW50CiszOTA4NiBjODJiNzQ2YzQyOGY4YjNiYjQ3YTg1ZmM0ZjAyNTIzYzdiMzU1ODc4IGxlZ2FjeS10cnVuaworMzkwODcgZjdjMDg4YThiNWQzYzgxOWQzOTI5NzkyNzM3OWZkOTg0MmJmNDgwMSByZWxlYXNlMjQtbWFpbnQKKzM5MDg4IGIzM2E3MjY0NDU0ZjA2MDE5ZWI3MTk3ZDlhYmZmMzAzZjdmNTEyYzIgbGVnYWN5LXRydW5rCiszOTA4OSBjNTc0MjgyZDUwYmZlZTQwYzNiNGVlMTcxNzU0NDQ5YzkwOGRiZmZjIHJlbGVhc2UyNC1tYWludAorMzkwOTAgOThmOTZmMDdkNTQ5ODg1MzgxM2EwMzlhNjRhYzBkMWE2YTE4YWFlOCBsZWdhY3ktdHJ1bmsKKzM5MDkxIDlhODEyZWI4YTBhYjI4NmU2YzZiMzMwZmRhMjRjMGJiOWY5MmQ5YjAgcmVsZWFzZTI0LW1haW50CiszOTA5MiA3MzkwMzJiZTk2ZDVkOTA1ZmQzOGIwMTVmNTQ3NWZiZWJiMmY4NTQ4IGxlZ2FjeS10cnVuaworMzkwOTMgNmFkM2Y4NjAzNDZlOTkzYTJlMjczYTNkYzI4OTc3MTJjYTY4ZTBiOSByZWxlYXNlMjQtbWFpbnQKKzM5MDk0IDAyMWE0YWJmN2YyNzRiMzI0NTM2NGM5Yjc0MTg0NDgzMDNkMzUzODcgbGVnYWN5LXRydW5rCiszOTA5NSAxYTcwY2JmNzU5Y2FlNTIwN2EyZDJhNzljNDE5NWU0ZGJhYmY3YzU0IGxlZ2FjeS10cnVuaworMzkwOTYgZDU3NDI4ZTg1OGZjMGQwNGZjZjAzYTE1Yzc5MThiYjExOWQyMjI3YSByZWxlYXNlMjQtbWFpbnQKKzM5MDk3IGVhZmExM2JlZWYyNjQ2ZGMzYTVhNDYxYTJkOTFkY2E4YTYxMDNjMGMgbGVnYWN5LXRydW5rCiszOTA5OCBkNmExOGEzM2JkNjI1NmY3MjIzZmEzOWQzNDcyOGQyN2I1NDcyODYyIGxlZ2FjeS10cnVuaworMzkwOTkgNzk5MDQ1NWU2YWUwYTBkNmQzYWExNjA5M2IzOWI5NWFhYjNiNzBmMyByZWxlYXNlMjQtbWFpbnQKKzM5MTAwIDllNDkyNzNhMTMzNDM5NmEwN2YyM2I5Zjc4NzFmNTJlYjBlMDhmODAgbGVnYWN5LXRydW5rCiszOTEwMSAxMjI4N2VmYTg3NzdmNzIyYTdhNTIyMWFlYWQ0NzhjMmFiOGQwZWQyIHJlbGVhc2UyNC1tYWludAorMzkxMDIgMGZjMjkwMDI2OTM5YTZjMGQ4MzA3ZDkxNWQ0ZmMzZTU5MzFiNTM0MyBsZWdhY3ktdHJ1bmsKKzM5MTAzIDhmYzVkNmJjMzVmZmRlMjIzZGQ5ODVhMTUzODk4NzA2Njk0MDg5ZTggbGVnYWN5LXRydW5rCiszOTEwNCAyN2E3MTgyMjFlNzJlNzg0ZjQxYTE2MTg3NmZlY2YyOTYyMTllZWIyIGxlZ2FjeS10cnVuaworMzkxMDUgY2Y3YTg0OWNlNjFmYTYwNWY5NDFkYWRjNDExMDE3MWM0YTliZDQ2ZSBsZWdhY3ktdHJ1bmsKKzM5MTA2IDY5NTI4M2NiZTQzZmM5MGMzNzg1NTQ3ZTJjZTk5YzllYzQzOTM2NmMgbGVnYWN5LXRydW5rCiszOTEwNyAxNmRmZTE1MmI5ZTZkYTVmNDIzZGMyMGZjNTQzNzA3ZTVkZjcwMWRmIGxlZ2FjeS10cnVuaworMzkxMDggMzBiMTM0MDFjOTEyNTY0MDg4MzQ1ODk3MWU4ZDQzNDI0NTU2N2YzMSByZWxlYXNlMjQtbWFpbnQKKzM5MTA5IDllNGJmMjllNmMyZmNkM2E4YWU0N2Y2MmI0OWFkNDBiNzRlN2Q1NzcgbGVnYWN5LXRydW5rCiszOTExMCBkN2M1YmQ1OTY5OGQwNjg4ZjA5MDE4N2EzY2MzZDNjYzM0ODY4ODEzIGxlZ2FjeS10cnVuaworMzkxMTEgZTZiMDc1YmQ3ODU1YWY1NGE1NjVkYzMxYTU5YzQwN2I4MDMxMGZiYSBsZWdhY3ktdHJ1bmsKKzM5MTEyIGIwNWNjMTJhMjE3OWYyOTQxNzM2NTQ0MWIwZDRkYzFhMWY2ZDkzZjIgcmVsZWFzZTI0LW1haW50CiszOTExMyBhMjA0M2FmZmQ1NDMzMDIxMTQ1Yjk3OWJjY2Y0ODUzOTk1NjNiODQ5IGxlZ2FjeS10cnVuaworMzkxMTQgNWQ5NzdkN2NjMzM1Njk3MTRkZjA3MzUyYWMwNWQ1YmIwMDI3MDNlZiByZWxlYXNlMjQtbWFpbnQKKzM5MTE1IDE4MTg0ZDgyZGFlYWExOWFiNDg4NzU4ODEwNGM4ZmY5NDkzMGVlZTcgbGVnYWN5LXRydW5rCiszOTExNiA5ZDFlNDYxMTFkOWE3MDgyNWRiNGMwYjk2Y2RiYjU3ZTg3ZmFmMTk2IHJlbGVhc2UyNC1tYWludAorMzkxMTcgZjhmMTVlNmFlZjNhNGFhOTM4MzAxZGRmNTMzZTVkODE3ZjNiZjQxOSBsZWdhY3ktdHJ1bmsKKzM5MTE4IDhmN2U0N2EwYWFjYWI2YzgwNTI5YTBkODQ3YzlhNGQwODgwZWEwYzQgcmVsZWFzZTI0LW1haW50CiszOTExOSA2ODI2NjgwM2MwMTM0ZDQzOThiMzk1NDA0Y2YwMzI4YWFhMjY0MDM5IGxlZ2FjeS10cnVuaworMzkxMjAgZDA3ZTljMzdiZWEwOWUxYjgwYjBjNDc2M2Y0YWI0NDAwMzIxMTg1NyByZWxlYXNlMjQtbWFpbnQKKzM5MTIxIDIxMGNhMzgzYWJlNzYyMGQ3OGY0MjIzNWQ3ZmE1OTA3Y2FiNWZlMWUgbGVnYWN5LXRydW5rCiszOTEyMiA3ODA0YmJiMjY0OTI4ZWRjMDRmMGQyNWNjYmFiNzEzYzY4N2I2MmExIHJlbGVhc2UyNC1tYWludAorMzkxMjMgNDc0MTg1MDI5NDJhODVhYjZhMzE5NWViYTgwZTYxMTQ2OWFlZWIyMiBsZWdhY3ktdHJ1bmsKKzM5MTI0IDJmOWNmZWNhMjc5OTZjZGZmYTJjNzFlMjQ1MTIzOWQ2M2ZiMTgyODIgcmVsZWFzZTI0LW1haW50CiszOTEyNSBjZDg3OWNhODQ2MjQ0ODZkYzFkYTQ4NTcwM2VmNDZmMzViYzZmZTdiIGxlZ2FjeS10cnVuaworMzkxMjYgNzI2YzliYzQ5YzA0OGFhZjIxZmY5MDA5YjZhYjk5YmQzZWUwZDNiYiBsZWdhY3ktdHJ1bmsKKzM5MTI3IDVkZjFjNjkyYmI0MTY2NjQ0ZWJjMGVkOTE3NzZmYjdiZmViYzkyMjEgbGVnYWN5LXRydW5rCiszOTEyOCBlMDIwODdhYzQ3OTI2ODAxOTZmMTkyNTFmNmFkNjhmNzJkNzlhMGYyIGxlZ2FjeS10cnVuaworMzkxMjkgMzM0MDUzNjQzNmY1YTBlMjgyNTUwNDFhOGQ2M2ZkN2NmOWYyNDMxMyByZWxlYXNlMjQtbWFpbnQKKzM5MTMwIGM1ODg4NDEzNDEyYjk0ZWJjZmMwNmUxY2UyMzhkYjg5NzY2ZGQ1NTYgbGVnYWN5LXRydW5rCiszOTEzMSBmOTRkNWJmYWQwNzhmODFiYzI1NDg2NTE0Mzk0MzU1YTNhNWVhMjQwIHJlbGVhc2UyNC1tYWludAorMzkxMzIgZTI2MzZkMTA4ZDdkMDlhNjVkOGU5OTZmYWFkMDMxMzFlY2JmOWJhNyBsZWdhY3ktdHJ1bmsKKzM5MTMzIDg5NzEwODA1YmMzZGVmZTg2MjRmZWYxMmFjNWVkMjRlMmM0N2FiODIgbGVnYWN5LXRydW5rCiszOTEzNCBkNmM4NzYxZDdmMzE0NzVlMDFkNWQ3MTVkNjI5ZWZkYzdiZGRhOWU2IGxlZ2FjeS10cnVuaworMzkxMzUgNjY2YzBlZDRmYjlkNDgwZWVjY2IyY2JmMWU4MzUzM2E0ZTNkZmExMCBsZWdhY3ktdHJ1bmsKKzM5MTM2IDg1Nzg3MWM3MWMzYmI5MDc2YjBiMzllMzdkZWU2MTBlYzNkYWQzYzAgbGVnYWN5LXRydW5rCiszOTEzNyBjODU3MDcwZTk3ZThkMWUzYTc1NDQ5NDhiOGRmYjY3ZDgxYzk0M2U0IGxlZ2FjeS10cnVuaworMzkxMzggYjNjYjY0Mjg5ZDJiZTI0NzY4MGZjMmIxYWQzZmU2MGExOGRkODRlOCBhc3QtYnJhbmNoCiszOTEzOSAyNzYwYTJkOTkyMzhmMTIxYzE5NDJmMDc3MWIxOGZiMjc5MjM1OWE5IGFzdC1icmFuY2gKKzM5MTQwIDViMjNhNWRjYzZhM2ZmMmI2Zjg4ZTZlYTA5YjI0ZWQ2NDJiZTM3MDIgbGVnYWN5LXRydW5rCiszOTE0MSBmZGNkZTU5ZGZhMWJkODlmMjZmZjEzY2I1YTNkMGQxNmE2YmIzNTZjIGxlZ2FjeS10cnVuaworMzkxNDIgNzNlNmNiNWY0MDM5ZTZjMGRhNTk1ZTgzZWQyOTlhN2Y1Njc1YTY0MCBsZWdhY3ktdHJ1bmsKKzM5MTQzIDNiNWY1NDY2ZjEwNWVhYWMyYzdjMzk1YmQ1MTI0NmIyYjlhZWYxYjcgbGVnYWN5LXRydW5rCiszOTE0NCA3MzQ5MjViNDZiYTdlNDdkZjdiOGVhODdhNWU3NmVhMmM1OTE4NDdhIHJlbGVhc2UyNC1tYWludAorMzkxNDUgOTI0MTIxODk5MmMxZTA2NzE2YjNmZjgxMWFiNDBlM2UyMTVjMWM3ZCByZWxlYXNlMjQtbWFpbnQKKzM5MTQ2IGI4NjM5MmY1NWI1OTdlZjQzMzc2MDE3Yzk4MGEyMWQ2NDQwZGFhNWUgbGVnYWN5LXRydW5rCiszOTE0NyBiOGM5MDc2ZDE3NGU5MmM1M2RhMDFlODI2MTQ4OTExMmI4NGUyNjMxIGxlZ2FjeS10cnVuaworMzkxNDggNThkNWE2YzdiNjI5MGZjMDA4OGNlMTk2ODRjYzc5M2MzZTEwOWIzNyByZWxlYXNlMjQtbWFpbnQKKzM5MTQ5IDRiZjk5ZWYwNmQzOGRiMzY2MTcwYWE0ZDA3ZjljMTc5NWQzOTc2NmYgbGVnYWN5LXRydW5rCiszOTE1MCAzMWQ5NTVhYjIyMzJlYzllZjYxY2E2MjdiMGY3NDQ5MWVkZWZiZmU5IGxlZ2FjeS10cnVuaworMzkxNTEgOWMxODhmZjYzMTMxOTc2YzI4ZDRmZDg3NzVjYjQwMzg5MjM0NDVjMyBhc3QtYnJhbmNoCiszOTE1MiA4MTI3YTU1YTU3Y2I3YmQ3ODBhNTRkMTQxMTRkMTg3N2JjM2I2NDdlIGFzdC1icmFuY2gKKzM5MTUzIDllY2YwM2RmZDVkNjE3N2IyM2Q2MGZlMmM3ZDA1YTdkYWQ2NWZjMGMgYXN0LWJyYW5jaAorMzkxNTQgZDI1NjU2YWIzZTFkMDNhZTgwYmMzNTlhNjMxM2IwZDU3MDM0YWRmOCBhc3QtYnJhbmNoCiszOTE1NSBhYTJmMmZhZWY3ZDI5MWRhN2RjMDQ3NmY2YmNlN2U4ZGFiMmNjMzNlIGFzdC1icmFuY2gKKzM5MTU2IDhkMGQzOTVjMjExZWQ3OTZhOTJhYTFlMDNkOTQ1ODdjM2MzYmQwZDcgcmVsZWFzZTI0LW1haW50CiszOTE1NyBlMDU5ODk4M2YwYTVmNjIzOTc4NzA5YTg2YmEyMTYyNTI1ZTA3ODQ4IGxlZ2FjeS10cnVuaworMzkxNTggZTFmN2ZjYTc4NGYzYTZmYTM0NTIyN2NjMjE5NjU2YzFiNjQ4MjY0MyByZWxlYXNlMjQtbWFpbnQKKzM5MTU5IGRkZDc4ZWEzNTE5YzUxYWNiYWFiODQ3M2FiNThlNDE3Mzk3ZDI0M2EgbGVnYWN5LXRydW5rCiszOTE2MCA5NTVkNGJhZGRiZmM4NjU5YTI4N2Q2ZTE4NzE4Yzg2N2ZiY2I0OTJkIGxlZ2FjeS10cnVuaworMzkxNjEgMjE0Yzk2ZTU0OTA1MGJhYzNhYTlhMGJmNjhhNmVkZjMyNDg3YWM0NyByZWxlYXNlMjQtbWFpbnQKKzM5MTYyIGI2NzAwYjNkZTY5NTVkNTFkMmI2MDlkNGVmMzQxZmZhNjEzZTAyMDEgbGVnYWN5LXRydW5rCiszOTE2MyBkYjc2ODMxMjk5ZDAwMDg1ZjlkYWQ3MjRkMzIyYzExYmE3NDBiMzE1IHJlbGVhc2UyNC1tYWludAorMzkxNjQgMzU1OTJiYWQzNDViZGVkN2E0OWM5OWFhOTUzMDA4YzA1N2JhY2JiOSBsZWdhY3ktdHJ1bmsKKzM5MTY1IDc2M2U4NWIxMDdiNDBkYmJhOTU2NTFjYzVkYTQyMGU2NGU4Mzg1MTggbGVnYWN5LXRydW5rCiszOTE2NiA1N2E0ZDI3NDY2MzIzODQ2ZDk3M2E1ZmEwYTgwNzZjY2VmZDA4MWYyIHJlbGVhc2UyNC1tYWludAorMzkxNjcgODQ3ZTU4ZGRiN2Q5ZWU2ZjhkOGM3MmJlYjJlZDUxMWMwYTdmYmUxYiBsZWdhY3ktdHJ1bmsKKzM5MTY4IGFjZTdkODM2MDgzZmU3NDEwMTczZTYzY2UwOGJmNDYwMWFiNWYwMDYgbGVnYWN5LXRydW5rCiszOTE2OSBmOWM1YWU2OWMxNmVlMmI1YTFkMjhkZDAzYjY3MjAxYmRmZWExZWIyIGxlZ2FjeS10cnVuaworMzkxNzAgZDBjNjk2NWI1MjVlY2JhZWU4N2IwZWIzZTE2YjdmNzU3ZDQ5N2Y5MiBsZWdhY3ktdHJ1bmsKKzM5MTcxIGMwODhlY2E5MGE2MzUwOTIxNGFjYzQ5ODJjODZhOWUyZmIxMjEzMjkgbGVnYWN5LXRydW5rCiszOTE3MiA1MjZmYWFhYjAwZWI5NTE5ZGZlN2YwZDlmOThlY2VjYmM0ZWJiY2MyIGxlZ2FjeS10cnVuaworMzkxNzMgMWZkYmNhMzUxNDk4OWQ4MTdkMmZkNDkyZDBkNGEyM2NmMmJjNWQ0OCBhc3QtYnJhbmNoCiszOTE3NCBhMGMzMWI3MGJkMTgwZjc4ZjY4Mzg1YTJlZTcxNjE1Y2FkMmZmNjNkIGFzdC1icmFuY2gKKzM5MTc1IDA5ZTg4ZmQ3ZDU1YTY4YTFmMTBkYTRhZTc1NWM0MDdiOWNlOTM3OGEgbGVnYWN5LXRydW5rCiszOTE3NiBiNzM1ZWI0MjY3ZThmOTRjYWQ5MDEwZDEzM2Y3MjZjNDQxMjhiYzRhIHJlbGVhc2UyNC1tYWludAorMzkxNzcgN2I2NDM2ZDIzNDRkMWY0NWZiNmNmM2ZjZTcwODhiZjE5YjE3MzVjYSBsZWdhY3ktdHJ1bmsKKzM5MTc4IDc0YzM3MTc2NjEyMWM4MTYzZTA1OTY0YWNmMTk2YmMwYWFlZTY0MWIgcmVsZWFzZTI0LW1haW50CiszOTE3OSBjZDU5NWE2OWRjYTVjYTJkOTQ4NjZhMjE4MDViOTZjMTBiYjU3YWZmIGxlZ2FjeS10cnVuaworMzkxODAgOTE5ZjJkMTMxOTgyYjhiMTVkZTlmMDQ1MjI4NWE0MWVjMTQ3NjNhMCByZWxlYXNlMjQtbWFpbnQKKzM5MTgxIDU1ODE2M2NiNzBhOTY4MmYzNzM5N2VmYmQwZWMyMDhhNjFhYTI0ZmMgcmVsZWFzZTI0LW1haW50CiszOTE4MiA2MmY4MTk0ODMyOTM5YmUxNGYyYmVkYTdhYjRkN2YyMmJlMzRiYTZmIGxlZ2FjeS10cnVuaworMzkxODMgMTk0OTcyMmYzNzg3NGQyMzY3OTFlNTQ0MjBlOWFlMDY3NmYyYzViYiBsZWdhY3ktdHJ1bmsKKzM5MTg0IDg3NTY5NzNhNmI5OTEyNGM5Y2QwOTVlYmIxNzJjMjZkMTJmZjYwMzEgcmVsZWFzZTI0LW1haW50CiszOTE4NSBjNmI2OWM2ZDAxYTM3N2Q0YzkzNTVjNjEyY2U2MjI0Y2ZiZTgzNGU4IHJlbGVhc2UyNC1tYWludAorMzkxODYgOTVhOWZmNDdiMTFkMDM5OTI5Nzk5MzkxNTg2ZjJmZTYzZWYyZTFiYiBsZWdhY3ktdHJ1bmsKKzM5MTg3IGE0OThkY2FhZTlkNzgyNjliNDQ1MGFlODhhNWU5ZGUyYTk2OWJjZWQgbGVnYWN5LXRydW5rCiszOTE4OCAwMjdlMDAwZDFmNmRmMGUwNDExM2ZhYTJjY2M0NGMxYzkxNTI3OThhIHJlbGVhc2UyNC1tYWludAorMzkxODkgMzJkZTdhOGQ4ODZjY2RmNGM1OWVhZmM1ZTJkMTdlNjU3M2UzMzU0ZiBsZWdhY3ktdHJ1bmsKKzM5MTkwIDA3YjAxYjMzNDBmOWMyNTQyNmI5YzIwYjQyNzBiODNmOWJmNmU3NTcgYXN0LWJyYW5jaAorMzkxOTEgM2E2ZWVmMzFlOTVhZTI1NTA3ZmMzMDMxMjMxMmY0M2ExMzVhODU0NiBhc3QtYnJhbmNoCiszOTE5MiBkNjFlZmNkODdjOGUzODM2Y2M2NTFmMjhhMzNkMTc2NWU2NGQ2N2RmIGxlZ2FjeS10cnVuaworMzkxOTMgZDQ3NmU1OGNjN2U3NDVjOWMwYmE0NjM5MDM2NGYzOTM1MzU5NjdkZSByZWxlYXNlMjQtbWFpbnQKKzM5MTk0IDkyYjM3YzcxZjkzNWVhYmM0NjFjMDcwZjJiODAyZjk0OGM0Mzk5ZDEgbGVnYWN5LXRydW5rCiszOTE5NSA3NGY4MjAyZDgzMTUwMTM3YzhjMzllZTExMGFkOTFhZTk1NDRkM2YyIHJlbGVhc2UyNC1tYWludAorMzkxOTYgYzUyY2QxZmQ5NGZjNTRiYjg0ZWQyNTZkZDJkYmUzMmZjMmI4YWY1YiBsZWdhY3ktdHJ1bmsKKzM5MTk3IDNmODZmOGNiYTA1ZWQ1Njg5MDI4NzFhMTc3NmQzZGUxNmFlNzRhOTQgcmVsZWFzZTI0LW1haW50CiszOTE5OCA3ZTFjMWQ2ZGVhMWMzMTY5YTNiMGUxYTg0YWQzNTk2NDgwZGNhMWMxIGxlZ2FjeS10cnVuaworMzkxOTkgOTY4ZDk0MjJhZjc4N2ZlNmZmMWE3ZjMzMDE0Njg5NWY4M2I2NmMxNCByZWxlYXNlMjQtbWFpbnQKKzM5MjAwIDcyOGY4MmJlYmMzZWJkNjYzZjIzNzIxOGQ1ZmQ3MmQzOWE1NTQ3ZjMgbGVnYWN5LXRydW5rCiszOTIwMSA4NzljODc2YmM1N2EzODk4MzYzZjVhNzFiZjhkMDcxNjMxNmM1ZmViIHJlbGVhc2UyNC1tYWludAorMzkyMDIgYjQzMWVkN2JjZGMyMjUwYWYxNmQ5MDM0NTA2OGZkODY0YjFiMTNjNCBsZWdhY3ktdHJ1bmsKKzM5MjAzIDg2MGUwZmQyZmVlOGVmNjliOTRhY2ExZjA3MjZkZjcwNTJhZjk4ZWMgcmVsZWFzZTI0LW1haW50CiszOTIwNCBhZWVjMzlmZWQ4YzVjMTZmNzY1YWMzOTQyNWQxZjIxZjY4NzIxMWZhIGxlZ2FjeS10cnVuaworMzkyMDUgZmFhZDA5NmRlY2Y2YWI0ZDFlNGZhZWIxMGUzODc4NDY5YjE3ODNhMSBsZWdhY3ktdHJ1bmsKKzM5MjA2IDlmNDM2NTUxMjMyNjAyNDFlMDI2NWEzNTY2ZTdkNmViZjRhYjQwMzcgcmVsZWFzZTI0LW1haW50CiszOTIwNyAyYjExN2ViMTg5NDRkMjI0NDljY2JjMDliNjI3ZjkzNGQ3NGQ2Mjk4IGxlZ2FjeS10cnVuaworMzkyMDggZTc4OTcwM2ZlNGJlZTRhYTIyNTY4NzJmOGFkN2JiN2VmZjg1OTJjYiByZWxlYXNlMjQtbWFpbnQKKzM5MjA5IGE5MTdlMmM0NzZmNjYxODgxMmRjNTkzM2QxN2FkNDI5NjcyNDU0NTUgcmVsZWFzZTI0LW1haW50CiszOTIxMCAxYWMyYzNhMWMzYWMzZDM5ZDRkN2RkY2YwZWMwMTU2NjBiODhhNzc1IGxlZ2FjeS10cnVuaworMzkyMTEgOWQ4MzhkZDk2N2IyYjIyYWZmMWYzMzE3OWY0ZDU1ZGRiZTdlODRkNCByZWxlYXNlMjQtbWFpbnQKKzM5MjEyIGJlNmFiM2Q4NmMyOTI1YWQ4ZWQwN2U2YmQxMDg2MmFkMTZiODM5YzAgcmVsZWFzZTI0LW1haW50CiszOTIxMyA1M2FiNTE2M2MxYWFhMTk1M2ViYjFhZDFkMWU3ZDExYmY3YWQwNjY4IHJlbGVhc2UyNC1tYWludAorMzkyMTQgNGFkYmQzMzFkMzM1MmViNWZhZmQ3MmZjYjU4OWU1MTJmNGIzNWRiMiBsZWdhY3ktdHJ1bmsKKzM5MjE1IDZlYmM0MjNmMmQ4MWNlOTBhNDQ4OTBlNmZiZjVhMjhkZGNhNTE1ZjYgbGVnYWN5LXRydW5rCiszOTIxNiA5NzA3YmEyNzg4OTQxYTAzZTNkNjkyYmY0YjNiNTg2MDI2YTg0NjJhIHJlbGVhc2UyNC1tYWludAorMzkyMTcgNTJhY2JiODU4NGVhZWI0NjFhNzk2OWEwZTgwYzdmOGE4MjM4OTk0YyBsZWdhY3ktdHJ1bmsKKzM5MjE4IGNhNjZhMTZjMzc5ZGMyMTA3MzljMTAyZDVjMDU3NzFiMTBlZGQ2ZjEgcmVsZWFzZTI0LW1haW50CiszOTIxOSA0MmNmZTQ2MDNjMzBjMDAxNzI5MzVjNmY5OWM4YzljNTlhMTM3Y2EwIGxlZ2FjeS10cnVuaworMzkyMjAgZWRmMjVjMWE0ZjYwOGM0ZGIzODk1NWU5N2U2MmVlMjQyZGY4OTk3NiByZWxlYXNlMjQtbWFpbnQKKzM5MjIxIGY4ZTYwYTNmMzQ0MDllOWY4MWZiYWNjNTI3NmY1Njc5MGY1NWZjYTcgbGVnYWN5LXRydW5rCiszOTIyMiBjOGJkM2I1MjMwYzQyNWNhNDg1YmQ4NDY1ZmM5N2I5ZTRlYTMwYTRlIGxlZ2FjeS10cnVuaworMzkyMjMgYjRlNTcwMzM3YmY0NzdlMjM2ZDdkM2Y2Y2EyNWM5MDM5NTI1OWM1MiBhc3QtYnJhbmNoCiszOTIyNCAzMTQ0N2FkYjFiMzVlYzBiYTA5MzQ4MjlhY2RhOWJjYzA0MzUzM2Y2IGFzdC1icmFuY2gKKzM5MjI1IDE3NzRmZTdlYzBjN2M3MGQ4NTA5YWMzNjViOGI1NDkwNzg5YWYxMmEgbGVnYWN5LXRydW5rCiszOTIyNiA4NWEzNWY4NzAxYjNiYjY5YTE1N2NkMGUyNTFmNDZmMzFkZDFlZmEwIGFzdC1icmFuY2gKKzM5MjI3IDI5OGQzZmE0ZWMzOWRkMTgwMmVmNzljM2EzN2I5NDJjMzA5MWRlMzQgbGVnYWN5LXRydW5rCiszOTIyOCAyZmVlZGY4NTA3ODlkMDc1M2UyZjFkZDQwYWI5MmI1YjY0MWViYmFhIGxlZ2FjeS10cnVuaworMzkyMjkgNjM2ZTVmMWRhNzMzZDdiNzQ3YmRhOWM3NzNkNDY3NTRlMTczNzVlMiBsZWdhY3ktdHJ1bmsKKzM5MjMwIDdhNTBiZDgyZGYyNWYyYmU5ZTNmYWFhODIyMmU3ZDc3NWI1ZmZjZjUgbGVnYWN5LXRydW5rCiszOTIzMSAzNDlhMGZkNTk4ZTA3OWQyMTdjZWRlOWQyYjgyNjM4YmRhNjY1ZDBiIHJlbGVhc2UyNC1tYWludAorMzkyMzIgYzZjMjRmZjFlM2RhNTkyOGFjMWY4MGMyMjg4NTEyNzJhNDg0MDE0OCBsZWdhY3ktdHJ1bmsKKzM5MjMzIDM1YTY5ODMwMmM2M2M1YjFmMDY4NTlhNzhhZDg3MWM5ODM4YzRiMTYgbGVnYWN5LXRydW5rCiszOTIzNCA4ZmZmYjRjOTU0ODdlZTIzNzMwODdiNzIzNjhmOTkwZDFiOWMzNDNlIGxlZ2FjeS10cnVuaworMzkyMzUgM2YxYjQ4ZjlmZjBkYTlmMzQ3Y2QwMTE1NDYxOGFjNGU4Yzk1MjI0MiBsZWdhY3ktdHJ1bmsKKzM5MjM2IGYzMGViZGMzYmRkZjc5YjFmY2JiNjM3ZjdmMjFjODhjZWNhMDFiMWQgbGVnYWN5LXRydW5rCiszOTIzNyBkOTE5NjRmNWZlMGQ2YmNiMGQyYWU0MDAyNGUyNzRkMGUzYTJhNzFjIGxlZ2FjeS10cnVuaworMzkyMzggMjZiZjZjMjdlOWNlYTVlZjUzN2U4NmVlZGFmYjFjNTk2MWRlMDUwMSBsZWdhY3ktdHJ1bmsKKzM5MjM5IGIyZmU1ZjhmY2ZkZGM4NGIxYTAzNGM0MjQ1Yjc4NDJjMzIzYTdmNzMgbGVnYWN5LXRydW5rCiszOTI0MCA1YTkxMzRmZTU3MDkwNjBhMjNhYTI3YmU2YTI5NThlNWVlNzliYTkzIGxlZ2FjeS10cnVuaworMzkyNDEgMDk5MTI4ZmZhYmU2MzE5YTAwN2ZmZDQyMjIzN2IyMTQwNmM2ZGI4MyBsZWdhY3ktdHJ1bmsKKzM5MjQyIDMwODY2MjBkYjQ2Yjk3ZmMyZDA4MjAxN2U3YmZjY2Y3ODcyNDQ5YzYgbGVnYWN5LXRydW5rCiszOTI0MyBiNDhmMGIyZTBkZjYwOTVkZjU5Y2Y4ZDg5MDNiYTViZmI2ZTlkZWE5IGxlZ2FjeS10cnVuaworMzkyNDQgYjM2M2EyOGVkMjRmOWIxMDNjNTRmOTRhMDkwNzQwOGVlYTZkNTU3ZSByZWxlYXNlMjQtbWFpbnQKKzM5MjQ1IGFiZGUyMTdjNWQ5MGQxYTY1MWU2NTRiYWNjODlkZWNlOTZiYjZiNGIgbGVnYWN5LXRydW5rCiszOTI0NiAzNzYwMDIzM2RiNzY4ODFjOGY4OTk3NGVkZmJhOGNmODRjZjUwMzg1IGxlZ2FjeS10cnVuaworMzkyNDcgNDU1YzNiNzY1ZGMzYThmMWI5MWM4YjE5OGUxY2I1N2VmMzE3YzI3MCBsZWdhY3ktdHJ1bmsKKzM5MjQ4IDI1OTBmYTBlYzdlODgxYjIzMDhjYTBlMTkzNGM1YWM0NGMyZGU5NGMgcmVsZWFzZTI0LW1haW50CiszOTI0OSBkNTMzZjA4YTlkZmFhYzczZjdmM2RhZmU2MTMwMDNkZmMyZWEzNWY2IGxlZ2FjeS10cnVuaworMzkyNTAgNWZlOWNlZWNhMTExODgxNGM0NGY0YTY2ZGUxZWJiMTE4NmY5NWQ2MCBsZWdhY3ktdHJ1bmsKKzM5MjUxIGYzOTk2YWE3OGNkZWE1YjU5NmYyOWRhMTYxNjkzNjBiNjU1MDcxZDcgbGVnYWN5LXRydW5rCiszOTI1MiA1NDFiZmJiMTAwMzBiZmZhYWNjY2YyNjA0Yzk1MTc2NjI5YTllMWYzIGxlZ2FjeS10cnVuaworMzkyNTMgOGFhOWJkODAyODZiMjIwMWU3NWYxYTM3MzI0MTNkYzE3ZjRiMzQ3MyBsZWdhY3ktdHJ1bmsKKzM5MjU0IGE2ODlhMjBmNThmNzYzYWRhMDMyZGM3YzlkYWNmZDMyNWVmOWY2Y2UgbGVnYWN5LXRydW5rCiszOTI1NSAxZDg2MTFkODU1NWM1Y2FmZTAwYzhkZWZhMDZmYzMxOGE5MWM2MWVmIHJlbGVhc2UyNC1tYWludAorMzkyNTYgYTZjYmZjZDBlNjkxYmEwYjFjNWE1N2M5ZTRlMGNiOTlmOThkNmU2OSBsZWdhY3ktdHJ1bmsKKzM5MjU3IGNlMDk5NWUwMWQzYzc0NTc0M2NlYTc2ZWJhNDliYWE0NmU5YzQ1MGUgbGVnYWN5LXRydW5rCiszOTI1OCBmZDAwNDYxODYxYzkwNzA2NDVlMjZiNjlmZjlmOTAyYTE4NzZjZjAyIGxlZ2FjeS10cnVuaworMzkyNTkgMjYxMmU5NmIxN2JiYzViY2FhYzcyYWVhMTBmMWRmMjFlNjA1MzJiNCBsZWdhY3ktdHJ1bmsKKzM5MjYwIGJkOWFmMjYwZTkyNzk0MmFmNWUwZDk4MDIzMjczYTMxZThiMzY3MWYgbGVnYWN5LXRydW5rCiszOTI2MSBmYTk1ZmU5MWNkZjc2MGJlM2RiMTIwNDJjN2E3OWRjNWYxMjcxODI1IGxlZ2FjeS10cnVuaworMzkyNjIgYmRjYjAxYTliNjBjNTc5ZjcxNmFiMDRiODg0NDYzYjc0OGFkMDdmMyBsZWdhY3ktdHJ1bmsKKzM5MjYzIGI5MmE4NWMzYmRjODE2YWFmOTI3N2NlNGRkOWYyZGUzYjI4NWI1OGEgcmVsZWFzZTI0LW1haW50CiszOTI2NCAzZmE1OGU1YmRkZmIyOWE1YzA0MGYyMmQwNTg2NDIzZDFlMTIwNTVlIGxlZ2FjeS10cnVuaworMzkyNjUgMTdlMDQ0NGRkMTJkYWVmZTFjZGVjZDgxOGVkYTY5ZjQyMGIzYTk5MiByZWxlYXNlMjQtbWFpbnQKKzM5MjY2IGFjOWMwZWUxOTlmYzk2ZWVhMWU0YmMzYjMyMjA4ZTA4MzRmMWUwMGIgbGVnYWN5LXRydW5rCiszOTI2NyAzMDk0ODQzZTdiOTJjYjEwM2FlMGZiZTFiM2I0NjQ4ZGJlZjJmYzQ2IGxlZ2FjeS10cnVuaworMzkyNjggNmFhNzNhMWYwY2JhODQ1NDAzYzdmODE2NjlmNDQ0ZDMyOTZkNWM0MyBsZWdhY3ktdHJ1bmsKKzM5MjY5IDBlZjY0YTkzZjNmMjVlMGQ2MzgxZTgzMzgzMDA4YjdjYjY5ZmNjNGEgbGVnYWN5LXRydW5rCiszOTI3MCAzMDBmM2FhZjg1M2ZiODg4YTRkZmM0M2VmZGM2MjlkMWI2ODEyZjA3IGxlZ2FjeS10cnVuaworMzkyNzEgMDQ0YTVjYTJjZGI4MmNkZjY3ZmU3YTU2YzM0NmZkZDhiMTgzNWI4MCByZWxlYXNlMjQtbWFpbnQKKzM5MjcyIGVmMTFjYmMwOGRhYmEwZmRhNDkwYzE5NjczODllOGRkNTVjZDNiOTMgbGVnYWN5LXRydW5rCiszOTI3MyBmZDAyYjg0ZmIyZGIyMjliZThkNzhiY2UyZDljZGQ4NmM2NDFhMGYyIGxlZ2FjeS10cnVuaworMzkyNzQgZGM4YWU0OTllZmNmMzkzODY5NzE0OGE2ZjQ4MzMyNWYxMTE3ZGUxZCByZWxlYXNlMjQtbWFpbnQKKzM5Mjc1IDcyNTY3MWRiNzc5YTY4MTgyYmQyNmMwN2MwZjg4NmVkNzViNzY4YjIgbGVnYWN5LXRydW5rCiszOTI3NiA5YjIyMjdhNjBkYWVjZGY1OTJkOGQxZWZiNGQwNzIxYzY4MzUxNmIzIGxlZ2FjeS10cnVuaworMzkyNzcgNTAzYzM2OTc1NzhmOGM5ZTQwZDJkZTI4NGE4OWMwM2JiZmVjNjIwOSByZWxlYXNlMjQtbWFpbnQKKzM5Mjc4IGRlZjQzNGUyYTgxYWZiZGM0YjAwNDJkNGNkNzk5ZDg0Mzk1MDc5YmUgbGVnYWN5LXRydW5rCiszOTI3OSBkNjU3NWNkMWFiNjdmYzY2MzJiMGUyNTVkNjQ0OWY5MjUwZTA5NGU0IGxlZ2FjeS10cnVuaworMzkyODAgMDI4ZTk0YTZlZmM1NmE5ODc3YmI3ZjgwMDE3OTUzODY3MGMzMzRjZCBsZWdhY3ktdHJ1bmsKKzM5MjgxIGI4YzVkMjIyMmVkNzU4M2JkZTEwNzUzMjhhMTIzYjFlZDQ3ZjFmYTUgcmVsZWFzZTI0LW1haW50CiszOTI4MiBmNmI0NjJkMmEzYTM2YzUzNjM2NzQzZWJjYjFjYmQwNTg4MDRlN2YyIGxlZ2FjeS10cnVuaworMzkyODMgM2MzYTQ1YTk2NTc3MjFmMGNhMTA2NjM1NGNmMTk2NTk4NmVjNTIzNSBsZWdhY3ktdHJ1bmsKKzM5Mjg0IGRkNDM1N2E1ZGE3Y2I3ZDcwNDc5N2JiOWZiMzNhNWY2N2EyM2Y1Y2QgcmVsZWFzZTI0LW1haW50CiszOTI4NSBjNTQ5OWYyNTY3ODZiMjgyMWY4MmYxNzMxZTNhYmQ0NWNiNDk3ZjlhIHJlbGVhc2UyNC1tYWludAorMzkyODYgNzAwZjA4MzY5MDkyNzg1ODIwYzhlMzZkOGQyM2U1YTRjMzcyNWIxMCBsZWdhY3ktdHJ1bmsKKzM5Mjg3IGRkMjM1Nzk1M2ZlMzg3MTQ4NGQ4OGIwY2Y0NzRjODZlODQwMGU5OGQgbGVnYWN5LXRydW5rCiszOTI4OCAzOTgyNWNhMzQ2NDczZWQ1NjgwNTQ2OTQ1ZDE4YjcxY2JmMTliZGE5IGxlZ2FjeS10cnVuaworMzkyODkgMmYxYmY2NGI4MzdlZjVmNDllMWNmNDZlMzVlN2QyZjI0MzFkYzViMSBsZWdhY3ktdHJ1bmsKKzM5MjkwIDZmMWNkMjhkNmI4NzUwMTJkMDM0MGU1MDYzMmFkZmEzM2JhZGFkMDAgbGVnYWN5LXRydW5rCiszOTI5MSA3MjliZThjYzAwOThiZjVlMTdlYTYzZjFjM2I1ZjMyYzAyYzllNzM0IGxlZ2FjeS10cnVuaworMzkyOTIgYzFkMjJkNGMwODY1NTI4MGNlMzdlM2I1MWE3MDQyNjdkY2FkM2RhZSBsZWdhY3ktdHJ1bmsKKzM5MjkzIGNkOGQ4ZTYzNGFiODA2ZTAxMGU2Yjc2OTZhZDBhODE0NDZiMDEyYWYgbGVnYWN5LXRydW5rCiszOTI5NCBlODgwNjA5NGQ2NDQ4ZGZmMGRlMWY4YmQ2ZGYxOWUwMDZlNmZjYTAwIGxlZ2FjeS10cnVuaworMzkyOTUgZGUyZDg0ZTA0NDdlZWVkODYxYjU0YTlmNWUzNTY5MTRlZGE0ODcyMSBsZWdhY3ktdHJ1bmsKKzM5Mjk2IDRmZDAzODczN2UyMWQyYWNiOGVmMTAwOGY3MTc1ZjdjNWU4NWFmZWQgcmVsZWFzZTI0LW1haW50CiszOTI5NyAzYTJmZmY2OTA1NThkYzA0M2JlMmJlMzQzMTIzZTJlYTdkYmNiNzgxIGxlZ2FjeS10cnVuaworMzkyOTggODc3OTE2ZDYzMmUwNzA2OWI4NTc3NTdiZThlNTA1ZTFkYmNlZjEyNiBsZWdhY3ktdHJ1bmsKKzM5Mjk5IDIwYjE4YjdmODMwOTU3OGUwYzUwMjljMDZhODI5YTk0MjEyNDJkOWEgcmVsZWFzZTI0LW1haW50CiszOTMwMCBjNWJmNTY4NTI2N2I4ZThkYTY5Mjk2MTBiOWI0MTljZjE3ODM3ODg2IGxlZ2FjeS10cnVuaworMzkzMDEgZDdmMzllNjIwOGJhOWFjODg1YTQ4YTZjYzBmYmM1ZTUyMGQwZTI3YyBsZWdhY3ktdHJ1bmsKKzM5MzAyIDY2MDU3ZDU1MDYyOGFlNzY1YmM3MjI5YWVhODlmNTYzZGEzZTBkOTIgbGVnYWN5LXRydW5rCiszOTMwMyA1MDI4M2E0NDE3ZDk4ODcwZjhjOWJjZjliOTY4NTFhOWE2OTEyZWJiIGxlZ2FjeS10cnVuaworMzkzMDQgZjIwNjkxOTU3NTc4MTEzMzhkMWUyMDM1NzhkZDQxNWY1MTVmYTI1OCByZWxlYXNlMjQtbWFpbnQKKzM5MzA1IGFlYjg1ODBhMWFmNzQ4OTg4NzJjZjFlYWZlMmNhYWExZDBlZDQ5N2UgbGVnYWN5LXRydW5rCiszOTMwNiA4YjA3ZDczMWJlNjAzZGVkNDgyMzQ4MWI2NWUxODhiMjJkMWVjMmYzIHJlbGVhc2UyNC1tYWludAorMzkzMDcgM2VhOGY1OGE4YzhlYzY0MzRmMDRmYWVlODY2NzVhOGZlZDkxOWFmZCBsZWdhY3ktdHJ1bmsKKzM5MzA4IDRlNTg4NzI1YzNkNzU4ZTdkMTFmMzIxMWU5M2RlMTJiNzMzODFhYmIgcmVsZWFzZTI0LW1haW50CiszOTMwOSBjZGUyNzc4MmExNjkyYWQ0MWNiZDE3MWYyYWE5MmY0NmFiMDM4ZDc3IGxlZ2FjeS10cnVuaworMzkzMTAgZjU3MTNlMzAzODBjNDM2YmE4ZGUxMmE4YTZmNDg1MWQ2OTYzNTA4NSByZWxlYXNlMjQtbWFpbnQKKzM5MzExIDdmOWE0MzBiOGNlNzFlYzk3YTc4ZGNjNzM3NjY0MGZjYjM1NjljNzkgbGVnYWN5LXRydW5rCiszOTMxMiBjZTEyNDUxMjIwYjQwYTkyN2I2MmZlMzdiNGUyNGIzM2JjZWExMGU0IHJlbGVhc2UyNC1tYWludAorMzkzMTMgNzZiMjcyMjgwNmFiYzVkNzk1M2NhZDg5ZTUyN2NiOGI4NGFhOTY3NiBsZWdhY3ktdHJ1bmsKKzM5MzE0IDA4NGQ0MmRmN2JhZDRlOTQwMzk3YzZjYmIzYTY5ODA5YmJkZDljOWQgcmVsZWFzZTI0LW1haW50CiszOTMxNSA3OTdkODJlZWM2MjUyMWI2YTY4ZGY5ZDM2ZDhiMjkyNGM2YzJhNGJlIGxlZ2FjeS10cnVuaworMzkzMTYgNjI0OTE4ZTFjMWIyZWZlZTllNGI3YmVlMzFkZGI4MjIxMmQxMWIzMyBsZWdhY3ktdHJ1bmsKKzM5MzE3IGE0NjczMjU3MWYyZThmMDVlZGNkNWJiYTc5NmRmOTI1YzhlYTY0NTEgYXN0LWJyYW5jaAorMzkzMTggZjg0Y2Y4NTM0NjRhYWFhNjdiMzFiM2QxNGIzZjU5ZmM0ZjBmZTdkMCBhc3QtYnJhbmNoCiszOTMxOSA3YzE0YzdkOGIzOTZmZjYxMWRlOTc5NDIzZWVmMDc1NjAyYTY3NTVkIGFzdC1icmFuY2gKKzM5MzIwIDQ2ODAwZjJhZDMwOGE0ODg4N2FlYTRlMmJlZmE2N2Q4ZGNmY2ZmZWYgYXN0LWJyYW5jaAorMzkzMjEgMDAxNDU5NmI4NDBjNmNmZGJlOGQ1NjZiMzgwNDVmMjg4YjVkY2FmMyBhc3QtYnJhbmNoCiszOTMyMiBiNDYzYmI0ODI1OTQ5YmQ0MjYxMGE1ZmYzOGY3M2I2ZDkwZGRjZjlmIGFzdC1icmFuY2gKKzM5MzIzIGU3ZWQwZTZhZWQyZjI3Mzk0NGMzMTdlZWIzNmQxN2I3NjBiMmI4ZTYgbGVnYWN5LXRydW5rCiszOTMyNCA0NDhjNmZiZmY2NDEzMTIyYTU3ZTVjZTIwNmMwZjNiMDAzYTM2Mzg2IHJlbGVhc2UyNC1tYWludAorMzkzMjUgOTMzMDA4MGEzZDQxNzU4ZTI2YTM2ZmM3YzNiYjg1ZjY1MjNhYmM1MCBsZWdhY3ktdHJ1bmsKKzM5MzI2IDkyNjE2OWZkZTVlNjMzZjFlMmJhODgyN2U2NWNjM2NmMGIwM2U0Y2MgYXN0LWJyYW5jaAorMzkzMjcgZmRlYjRhOGJjYjRlMjUwOTlhMDM4YTc3MGNmYTg1YTAyZWU5ZmQ1OSBhc3QtYnJhbmNoCiszOTMyOCA0MzIxMWJlMGRlNDE1ZmRhMWJkN2M2YTNmOWFkOTAwZTliZWE2MWYwIGxlZ2FjeS10cnVuaworMzkzMjkgZDY4Mjc5MGQ1ZGIwZTI0YWIzMzdkYmMyZjc1M2JiMWY3ZjJiYjIwZCByZWxlYXNlMjQtbWFpbnQKKzM5MzMwIDBmMWEyMzFjMmM3Y2FiNWQyMWRmZjkzYmYwN2NlOTkyZTQ5NGE2NmYgbGVnYWN5LXRydW5rCiszOTMzMSA3ODc0Nzg5MjNlODJmMjdlM2JiMDU2YmM1MzQ3OThhY2EzMmRmYWM3IGxlZ2FjeS10cnVuaworMzkzMzIgMDRkZDViMDZkM2M4ZWQ1M2RiZTk4ZTk2MjQ0YmU3ODUzMDYzMGZiYyBsZWdhY3ktdHJ1bmsKKzM5MzMzIDM0ZmY3Y2E0Y2VmODUyN2UzYjFmYmNiYzk1MGY3NDIxNjUwZDljYjQgbGVnYWN5LXRydW5rCiszOTMzNCBhNmU3MDAwNGU5ODcwY2Q4N2VmMzFiMmRjMGUzNGMyMGRiYWI1MjdmIGxlZ2FjeS10cnVuaworMzkzMzUgMzg4MjRiNmUzNjAwN2MzNjk1MWZjZDUxZjM5ZWY0ZjQzNGViZjk5YyByZWxlYXNlMjQtbWFpbnQKKzM5MzM2IDBlYjM4NmVlOTQwZTMwMzI2YzQ3YmNhYWJhMTViOTIxZjA4ZTUwM2MgbGVnYWN5LXRydW5rCiszOTMzNyAwNzEzNzI4Njc3M2NhZmY2ZWYwNzU5MDM2Mzg5MmE4NTdhYTYyODlkIHJlbGVhc2UyNC1tYWludAorMzkzMzggNGFjZDMwNzYxYmMyMTc2MzAzYmY0MmM3NGJiYjI4ZTA5NmZjYzRmNCBsZWdhY3ktdHJ1bmsKKzM5MzM5IDZiMzdlYWJlMmFjNDM3YmZkNDQ4NDlkZjBhZDVlOTAzZTA2NGZhZjcgbGVnYWN5LXRydW5rCiszOTM0MCA1ZjQwMGZiMmRkOGE2OWI3Y2Q2OWEzMTg5MWNiYmU2NDQ0NjA4NjBjIHJlbGVhc2UyNC1tYWludAorMzkzNDEgMzk3M2Q2M2QyNjY3N2MwNjc0NjEzNmYxYjE1MjY1NzEzNzgxMWE1YiByZWxlYXNlMjQtbWFpbnQKKzM5MzQyIDkxZDk2OGI3NzU3OWE1YTM2NjFiYzQ2ZTAxZmVhOWE2ZDRiNDk1ZDkgbGVnYWN5LXRydW5rCiszOTM0MyA0M2NmNTllN2E2MTQ1YWM3MThmZTk1Mzg0M2Y0MjBhY2M4M2ExZDdiIHJlbGVhc2UyNC1tYWludAorMzkzNDQgNGRhNmQ0ZTBjM2Q1NjI4YzBjZjFkZWY1YWUzNTBjZWY2ZWFkZTFlNiBsZWdhY3ktdHJ1bmsKKzM5MzQ1IDEyYTliYjI0YjZkOTY0NjYwNzQ5NGQ2MjhlY2E4OWVjMGZhZWQ4YWEgbGVnYWN5LXRydW5rCiszOTM0NiBiZWQ5M2QwNDE2ZGRlODJhMzQ5OGUyZGU3N2MzOTkzZTdmYjg0M2E0IGxlZ2FjeS10cnVuaworMzkzNDcgN2YxNjI3NzY2NjIxNmMxZTc4N2IyMDE3N2JiY2RkMDk0NGE3NzRiMCBhc3QtYnJhbmNoCiszOTM0OCAwMWVmZjYwNzlmOTBiNmZhYWZiYTc0NjVkZjc4OTA2YWIxYjExN2EwIGFzdC1icmFuY2gKKzM5MzQ5IDE3MDg0NzlhZGU0ZDViYWNkNDAyZGQ2MzEyZTM0ZTg0NzUxNmI3MDggbGVnYWN5LXRydW5rCiszOTM1MCBjOWViMjVmZTM5Y2JiZTA1ZDVhZDJmZDNjOGY1MmJkNDljMjA1Y2Q4IGxlZ2FjeS10cnVuaworMzkzNTEgOWUwNWVhM2IxYmYzYjg1ZjNhMjk5ZTRkMzQyZDRmYjE5NDcxOTVkOSByZWxlYXNlMjQtbWFpbnQKKzM5MzUyIDVjN2NjYTI1NDcyZGVmZmVlNDZkNzVjYTk4YzcxNTJmZmExNWY4M2EgbGVnYWN5LXRydW5rCiszOTM1MyA2YzA4NjViZWFhYjczMTI5MjA4MGZhMjJkZTRhYWJiYTAxN2Y1NDMzIHJlbGVhc2UyNC1tYWludAorMzkzNTQgODgzN2RkZmFhZDQ1ZWFmODM4MTdhZDgxYWQzMTc1YTlkN2E2MmQyNSBsZWdhY3ktdHJ1bmsKKzM5MzU1IGY5NjI4N2QxYjVmNmY5OGJlNzg1YzRiODcyYzk4NWI2NGJlNzI3MGQgcmVsZWFzZTI0LW1haW50CiszOTM1NiA2MzRjYTRkOGEzMDZhMjIyMjE5ZDZhZWViMmE2MjIwZmIwYzYxMjFjIGxlZ2FjeS10cnVuaworMzkzNTcgYjcwOTdkOTFmMDRkMWViZDU2ZTQ3YjBlN2QyMDFkYTU3ZWZkN2I0MiByZWxlYXNlMjQtbWFpbnQKKzM5MzU4IDViMWEyZmI4NjRhNzYyNmMxNjQ3YTBiNTMxOTc2MWQ5YWNjYTg1NjYgcmVsZWFzZTI0LW1haW50CiszOTM1OSAzYmI5MzI4MDFiNjQ1MmY4OGI3OWJkMmVlYzIwZmM1OTk3M2VlYzZkIGxlZ2FjeS10cnVuaworMzkzNjAgMzc0NWUzYzZhM2UxMzYwMTY4OTY4NDI1ZTQ5ZjA1N2U1ZWVmNWZlMyBsZWdhY3ktdHJ1bmsKKzM5MzYxIGRkZTA1NmE2NjZkZGVmNTJhZDMyMDMyZGEzOGU1OTFkMzI5YWY5OTUgcmVsZWFzZTI0LW1haW50CiszOTM2MiAzZWVjOTEwMzhmYmNhOWY0MzlhYTJkYTk3NDY1YjlmNTVmNDMxMjdhIHJlbGVhc2UyNC1tYWludAorMzkzNjMgMGE2ZGJjYjRlMDU2NjIzMDVjYWQzODhhM2FiMzUzMjRhMDZmNmViNSBsZWdhY3ktdHJ1bmsKKzM5MzY0IDRkMDVmOWU3ZTZlMjk0YTllNDE3ZGE1NzYwNmZiZjMzMTBmNTJiZGYgbGVnYWN5LXRydW5rCiszOTM2NSAxNTZhYmRhNGU0NTczYThlMmY0ZjFmYTA3YTkwNmVkMTI1MDg2NzFlIHJlbGVhc2UyNC1tYWludAorMzkzNjYgZmYyZTY2ZmMwYTI5MjkwNGRjMDRkMzcyMDJjODhiZGNlMDVjMWQzYSBsZWdhY3ktdHJ1bmsKKzM5MzY3IDQ4OTZmODMzNGJmZjI0NDUzMjY4YTVjYjU4ODBiZGJhOWY1MTliNDUgcmVsZWFzZTI0LW1haW50CiszOTM2OCBlNDhmY2Q0YzM1OGQ0OTdjMDdmNjA3M2I2YjU1NGI5YzQ2N2QwMTc4IGxlZ2FjeS10cnVuaworMzkzNjkgMzdmYTdiNmRjYTliYjg5YmFiMmQ5MWVkMWQ2NWNmMDBmNDJhYTRkMyByZWxlYXNlMjQtbWFpbnQKKzM5MzcwIDJhNmI2OTQyYTdmN2NiNjA0MDYwNTZiZjkwYzliNDIxNDdlM2VjZTggbGVnYWN5LXRydW5rCiszOTM3MSBjNGU1ZWQ3YTJiYTM3ZDY1MTAwNDQxYmYyMGViM2E1YTFhNTRiMDE0IGxlZ2FjeS10cnVuaworMzkzNzIgODVmMGE2ZTgzODBiNWRkNzkyY2Q1ODcxMjRiNjcwZDE5ODIzZTIyOCBsZWdhY3ktdHJ1bmsKKzM5MzczIDQ4MTQ2M2E1YjIwYzg5NmZkOGYxNzc2NmU0ODI2YjA2OTFiMmJjZDQgbGVnYWN5LXRydW5rCiszOTM3NCBmZTMyMzVmY2RkNzcyNTJlZGFlN2JhMTQxYzUwYzc0ZTNlZTU4ZTEwIHJlbGVhc2UyNC1tYWludAorMzkzNzUgN2NhYWJjNzQ5OTc1NjdlZWEyODE0ZjY5NDIyZjA0MTQ2ZmM3NjY5OSBsZWdhY3ktdHJ1bmsKKzM5Mzc2IGQ1ZGY1MjIyZmQ2ZDU0MmM5YWZiNWNjNjhiNWE5MWQ0Mjg3Y2MwMjAgbGVnYWN5LXRydW5rCiszOTM3NyAxNjUyMGZjYzA2MDk1MGNiMGY2YTNlYTU4MDQxNzllMDJiYWYwOWU4IGxlZ2FjeS10cnVuaworMzkzNzggNTVlMjc1OWQwMjExMzcyNDlmMWFmNGNjNTc0Njg3Y2Y1YTlkYzk3MSByZWxlYXNlMjQtbWFpbnQKKzM5Mzc5IDI0NWU4ZjRjYmExZGIyNDg2YTRhNGJkZTMxNDRiY2U0OTc3NzdjODYgbGVnYWN5LXRydW5rCiszOTM4MCBlMGJkNmYzMjRmZDZhMWQyOTVjNzU2MDYzZDYwOGM4NWQ5NzhhMDNkIGxlZ2FjeS10cnVuaworMzkzODEgMWI3YzRmYmVlMGI4YmUxMGYzMDg4MjA3ZjlhYWUyZGQ1NzRiODMwNCByZWxlYXNlMjQtbWFpbnQKKzM5MzgyIGMxZjBmMTcwOTM2ZDU1NzJiNGE2ZTc1ZGY0Njc3NThiZTEwYmVkM2QgbGVnYWN5LXRydW5rCiszOTM4MyAxMzBiNmNlOWJiZjNkYzEyNzYwODVkZjJmZDE0NjhlZjUwYWE3MTI1IGxlZ2FjeS10cnVuaworMzkzODQgZWRkY2U0MGVkMWIxNmUxN2Q2MjcwYWZiZmI0N2QxOWQxN2ZjZWJlNSByZWxlYXNlMjQtbWFpbnQKKzM5Mzg1IDdkM2U4YzJhZTMzOTEzMmU4NmNiYWRjOWE3NDRmZmRhOWM3NDNiZmQgbGVnYWN5LXRydW5rCiszOTM4NiA5ZDM0M2JjODE4NjM4MTZiNWI2MWRhNTdiMmYxNjUzZjVjOWNiMWY0IGxlZ2FjeS10cnVuaworMzkzODcgNGE1MDc3ODczY2JhMGJiYTk5ZmY4YmVmY2Y2YmFkNzYzNThhY2JiOSByZWxlYXNlMjQtbWFpbnQKKzM5Mzg4IDNkMDNkMmNiZTFhZDE2ZGU1OTRmMTk2ZGE5Y2RiNWY2N2YyMGQ4ZWMgbGVnYWN5LXRydW5rCiszOTM4OSA2NTIzOGM5YTdhNjYwMTA4MGQwNWE2ODYwNzcwNjAyZWY2MjM3ODU5IGxlZ2FjeS10cnVuaworMzkzOTAgMTcwN2M5NDVkNmMyNGRkMDg3NzlkNmYzY2U4MTlhYzcyZDZhOTFkMiByZWxlYXNlMjQtbWFpbnQKKzM5MzkxIDU5NTQ1MWMyYzhlY2RjOTljNDA2ODExMzc3ZjExNTVlZWRlZGRjN2IgbGVnYWN5LXRydW5rCiszOTM5MiBhMTcwMTIzNDVhZjZhYTI5ZjBjMDVjYzAyMDVhZTQ4YzA4MGViZTZmIGxlZ2FjeS10cnVuaworMzkzOTMgZDBlODY1NzZmMGI1ZGY1Nzk4OWM4YTYyOWNjYmE4ZjJhZWU2M2Y2NSByZWxlYXNlMjQtbWFpbnQKKzM5Mzk0IDQ0NjEyNTkzNDcxYzk2MGI3MzRmMzllMmU2ODY2ZGI5ZGNlMDRjN2UgbGVnYWN5LXRydW5rCiszOTM5NSBjYjQ5OWFlZTM2ZTc4YWNiZmE3ZTJhODVlMjYyM2I4ZWRkMWU5OWM5IHJlbGVhc2UyNC1tYWludAorMzkzOTYgN2EwZDBiNGM4N2QwNjQ1MTE1NjA5OTJhZjg4NDVkNGE4Y2VhMmViZiBsZWdhY3ktdHJ1bmsKKzM5Mzk3IDU4MmM5MGRlZGE5ZGZlMzA0MjVjYTZkYTA1YTY1ZDViMmM1MzNkMWQgcmVsZWFzZTI0LW1haW50CiszOTM5OCAwOTk5MjkwYzY3NTg4YTEwMjVhY2ZjYTc1YjQxMTY5YTE2ZWQzMjdhIGxlZ2FjeS10cnVuaworMzkzOTkgNTMxNjg2ODU0ZjA4NmVhMzYwZWRlYmQyZTViYjI0YmQ4MjI0YzQyNSByZWxlYXNlMjQtbWFpbnQKKzM5NDAwIDFmZGZkMDEzMGUyODE5MjEzOGVmZTBkMzI3Yzk2N2IxNjZiZDkxM2IgbGVnYWN5LXRydW5rCiszOTQwMSA5N2M5NzE5NGU2NGJiODcyM2U2MjgzMDliZGYwMWU3YzE3MWY2NjE5IHJlbGVhc2UyNC1tYWludAorMzk0MDIgMzY1MTRiOTUwMDJhYjFkNTkyZjA1NmJmOTY4OGRhZGY4MWFjYzIwOSBsZWdhY3ktdHJ1bmsKKzM5NDAzIDU5YTYzYjA5YTRjMjY5ZTUyNjc1YWUzMzU3YWI4ZTM5YjBiNmFlNzkgcmVsZWFzZTI0LW1haW50CiszOTQwNCAzODU1YTk2MGE2YWE5NmNhOWVjODU5ZmU5YTEyMTA3OTFiNjI4NThhIGxlZ2FjeS10cnVuaworMzk0MDUgOWE4MzczODBjM2M1ZjEyN2ExNzhkYjZkMDYyMmU4YmM3MzAwMGMwNiBsZWdhY3ktdHJ1bmsKKzM5NDA2IDhhM2Q3ZjlmMDJjYzJmZTFkMTVmMzZlM2VkMDQzZmY0M2IzMDMzNDcgcmVsZWFzZTI0LW1haW50CiszOTQwNyBjZmNjMjY0MWE5MTA5ODBkMzJiODcyZWQ4YjM4OTNiMmZhZWJmOGM2IGxlZ2FjeS10cnVuaworMzk0MDggOWQ0MWFmYTYzYjc5NTMxMzNlNDY0ZWYwMDYyYjRmMTA5ODc1YmZhMCByZWxlYXNlMjQtbWFpbnQKKzM5NDA5IDM4ZTU4OGQxZDg4NTNiOGE0OWJkMzllYjU2MGY2YzZlOTM4NjJhYTEgcmVsZWFzZTI0LW1haW50CiszOTQxMCAwODUyOGZiZDQ4MDQ5ZmJjZWRkNGNlYjZmMzFhNjU0ODg3NmU2OGZkIHJlbGVhc2UyNC1tYWludAorMzk0MTEgOWJlOTJmZThhN2E4MTAxMjBlNTUwNGNkMTkwZDU2NGVmYmU1ODk3NiBsZWdhY3ktdHJ1bmsKKzM5NDEyIDAzNTQwOWVmMDkwMTFmNTViNTZkZWViMmU5NjcwYzQzOTdhY2U1Y2UgbGVnYWN5LXRydW5rCiszOTQxMyAyNTZlNzM4NGYyNGRiZDMzM2NiMzVkMmJiOWJiYjkwMTcxNjgxMjU2IGxlZ2FjeS10cnVuaworMzk0MTQgMTMxMjk0NmYzMmFiNWNlMTE3M2E1ZTJhZjFiNDI4NjRlYzZkMWJkMCByZWxlYXNlMjQtbWFpbnQKKzM5NDE1IGFkZWRhOWZiMzQ4NWQ2NzRjNzBjZDIwMjY3ZWUwOGEwNjZkZWM2YzMgbGVnYWN5LXRydW5rCiszOTQxNiAzZTVjMDdmYWFiMTExMzk5YjI0MDJjZTljZTViY2I3NzFlYTZjNTY4IGxlZ2FjeS10cnVuaworMzk0MTcgNTIzM2QxOWZmODdmMjc3ZjFkMjY0ODU0MmY1YzUxOThlYTNlZTZkYyBhc3QtYnJhbmNoCiszOTQxOCA3MmQzYWQwOGIyYzYyMGJhYTY2MGNkYjFmNGE5YzRjY2FjZmIzODNkIGFzdC1icmFuY2gKKzM5NDE5IDY5ZWFiODUxNzRmYmEzZDg2MmNmNjA2YjkyOGE1NzZiNzg5OTRkZmEgYXN0LWJyYW5jaAorMzk0MjAgMzNmNjYyZjY3OTVmMzNhMWUxOWM3OTQ3MDZmYjAyZDZjMzhlMjY3ZCBhc3QtYnJhbmNoCiszOTQyMSA3MTNjY2ZmNzFmZGZlNGI3MDMyMzNlZjJmY2Y2MDU4ZTM5Njg0MjI5IGFzdC1icmFuY2gKKzM5NDIyIDg1OTYwY2E0ZmMwODllOWExNmY0YmE5M2I2NjA1MDljZjkxM2MzNWQgbGVnYWN5LXRydW5rCiszOTQyMyBkYmExZTJkZmQ4ZGVhNzg0NWViYjljZDcyY2QzNjU4MzZhZmRkMjY3IHJlbGVhc2UyNC1tYWludAorMzk0MjQgMjAwZTJlZjRkYmRjNjQzYzQ3ZjQ1NGY2OTExMzc1Y2QzYjQyNzEyOCByZWxlYXNlMjQtbWFpbnQKKzM5NDI0IDBmNDA1YTFjNTM0MDU0OTQyNjRmOTdiNGRkZTgyZWUxYTY4OTA0YzEgbGVnYWN5LXRydW5rCiszOTQyNSBhYWEzNjQ2ZjQ1NjcxMjZiMDBiNDQyMTJmZGI4Y2Q5MmQ2MjE3MjVlIGxlZ2FjeS10cnVuaworMzk0MjYgMDIzNGM4NGE3ZDhkYTgyNmEyNTE3NGQ4MjE2NTk2ZDE5YmM2ZmZmOSBhc3QtYnJhbmNoCiszOTQyNyBlNTJlZDg3OGM1ZWUwYWRlMjA3Y2QyOWU5NGY0NDYzMGI0NjhiMWYzIGFzdC1icmFuY2gKKzM5NDI4IDQ5NmQyOWIwYmE1YmJhZjYzOTZjYjIyOWM5YTEwZGEwYjk4NjkwMGYgbGVnYWN5LXRydW5rCiszOTQyOSAxMWUxNWY3YWI5NDA2ZWVjNWM2MmFkMWM0NmYyYTVhMzE1OTFkM2Y1IHJlbGVhc2UyNC1tYWludAorMzk0MzAgZDkyZjBlZDZhN2YyZjlkN2VlYjViN2MzNWIwMzU2ZThkYzJkMjA0YyBsZWdhY3ktdHJ1bmsKKzM5NDMxIGE4NGNkYWJiOGFmMDZkYWJkOTdlOTM5NDhhMTRhZmI2M2M3MjlmNWMgbGVnYWN5LXRydW5rCiszOTQzMiA4OWU4YTVlYzNkYTA1NzdiNzJiMTRkYTRjM2QyN2Y5ODBlMWE3OGMxIHJlbGVhc2UyNC1tYWludAorMzk0MzMgNjc2M2M5MWZjZmVmNDA5OWU5YzQ2YmY1ZmZjMmU0MmU5NTRmZDRiMCBsZWdhY3ktdHJ1bmsKKzM5NDM0IGJhZWQ4YjdkZWI1NmQxYzk1YWQ5NDBjNTViOTAxY2MzZTkwN2FjOWMgbGVnYWN5LXRydW5rCiszOTQzNSA5YjIxMDQwMTFmNzAyNmE1Y2M5NjFlMGY1ZWUxMjhiMTJkNjExMmI0IHJlbGVhc2UyNC1tYWludAorMzk0MzYgYmI2NzcwNzlmODI3Y2UyMDE2NWFhMGNjZjMxMGRkYzZiMzBmYTBkZSBsZWdhY3ktdHJ1bmsKKzM5NDM3IDBlODk2NGY1MzczMmJkYzkyMGM2Y2YxMGVlMjlhOWMxYmI5YzVmMzMgYXN0LWJyYW5jaAorMzk0MzggNTE2ZWQ2MGE4ZjljYWY2NzBmM2QwOTcxODNmZWU0MTUwNDU4ZWJhMyBhc3QtYnJhbmNoCiszOTQzOSA2MDYxYWFhNDRlYmM1MzVlNDliNmI4MzcyYjM5MTQ4MTQ1NGNjYzc2IGFzdC1icmFuY2gKKzM5NDQwIGQzMzJiMjE2OGNiMjQ3MjY5YTQ2ZmM2YTVmYWJhY2ZkNzM2YTQzNTggYXN0LWJyYW5jaAorMzk0NDEgY2Q3ZDZjNmYyZGIyMTc1NGUyYjIwMzk3N2IyNDU3ZTI0OWVhM2VmMyBhc3QtYnJhbmNoCiszOTQ0MiBlMTU4ZjFlMTdhYjRiNzE1OWFjMWZlZjYxYTU2ODI2ZmY5NWI3Y2ZkIGFzdC1icmFuY2gKKzM5NDQzIDA2ZWZlZWM3NGQ1OWE1MjEyNDk4ODdhOGViN2Q3M2Y1MDAyZWYxMWEgYXN0LWJyYW5jaAorMzk0NDQgMzQzOGVlYmE1OGMzOGE4ZmQzNjYzNGNlZDYwM2IzNWU0YmU2OWUzZSBsZWdhY3ktdHJ1bmsKKzM5NDQ1IDgxYTA2YTlhMWFjNDdjNDk3YjljOGM4NjMxNTA0N2E4MzAzNjRmNWYgbGVnYWN5LXRydW5rCiszOTQ0NiBhYjNkZGJiZDA4NjJjOGY0M2VmNzEzYzg0ZjA3MjY4Y2E5ZDZmZjY1IGxlZ2FjeS10cnVuaworMzk0NDcgYmJmODE1N2QwMzk4NGU5NmE5YTg2Nzg4OTg4MDVmZWEyNzE5OTM1OSByZWxlYXNlMjQtbWFpbnQKKzM5NDQ4IDRmYzdhN2VkY2I0YjZhZmJjOTQyNDE5NmExMzAyZDBmNTE1ZDAxYTggbGVnYWN5LXRydW5rCiszOTQ0OSA2YjhjNTU4Nzc3NTVjN2ZkZWUwNTQzNGE2ZTk4OTFjMTg2YmI1ZjA0IHJlbGVhc2UyNC1tYWludAorMzk0NTAgMWEzY2Y5NmM4ZDQ2NGJkNTQ1NDg5MmQ2NDc1MGUxZjFlNjIzYTZkMSByZWxlYXNlMjQtbWFpbnQKKzM5NDUxIGJjZDk4MTEyMzVkNDk2MmJlMDRmYjZkODc1OTk1OTljODg3OTdiYTEgYXN0LWJyYW5jaAorMzk0NTIgYTE1OTU4NGRiNjVjMTM0MTU3ZDU2MTI4YjBmMDMzNzgxYjU1YWU4YSBhc3QtYnJhbmNoCiszOTQ1MyBiYTg0NGJkN2EzMmI2YmI2NTEwNTMxYTYzYWIwZGMwMDI5MDhkNjY4IGFzdC1icmFuY2gKKzM5NDU0IDQ2ODFhOGZhNDZkMDZlY2ZjN2E0YzY3NzQ0ZmQzNTgwY2NkYzQ1OGYgbGVnYWN5LXRydW5rCiszOTQ1NSBjZTViNzUzMjUyMGE4N2Q5NDY3NDAzOTYxZjZiOTg4YjNhNDQ5NzQ5IGxlZ2FjeS10cnVuaworMzk0NTYgMGVhZTUyMTlmM2I4MjRkMGZlNjI3YTFkN2RhNDczN2FiZTQ4ODg0NSBsZWdhY3ktdHJ1bmsKKzM5NDU3IDNlNjIxMjExM2U4MmEwZGNiYjA5ZTllMDk1OTU3MjJmNjU1MTUwNDIgcmVsZWFzZTI0LW1haW50CiszOTQ1OCBhMTg1ZDY5NjMwYjM4YTI3OGNjNzQ2NTAzMTJjZDFiZGE4YjhkZWVlIHJlbGVhc2UyMy1tYWludAorMzk0NTkgYzM1M2MyNzgyYWUxNTk1ZDVlNDc1NDc5ODJkMDQ0OTIyNzM1YWZkZCByZWxlYXNlMjMtbWFpbnQKKzM5NDYwIDk3ZGM4ZjA2YzRmYWI3ZDk1NGFiNTNkNjIwMDAwNGQ5MzcwYTYzMDUgcmVsZWFzZTIzLW1haW50CiszOTQ2MSAwYmNiMzAzYjM0MWI2NjRiOWUxNjU0YzRkNWE4YWM1ZTBjM2UxNGZlIGxlZ2FjeS10cnVuaworMzk0NjIgMGZlODExN2I3NjFkNzRhZDFhMmVmNzIwNDhmZjUxYWIzNGNhY2QzZSBsZWdhY3ktdHJ1bmsKKzM5NDYzIGZlMGNhNjA0ODI2NzAyNzcyMmNiMTZkODE3YTM4ZmQ4YWIzY2Y4Y2IgYXN0LWJyYW5jaAorMzk0NjQgMDc5NTZkNGE4ZTRhYmJkZDc1YzFmNmFjM2YzOGNlZDdkNTFmNWY4NCBhc3QtYnJhbmNoCiszOTQ2NSAxMjlhYjIyYzRiMTlhOWNhNGQxOWU3Y2UyOTVlNzliZDUzZjFjNzk3IGFzdC1icmFuY2gKKzM5NDY2IGY1NGU1MGM1M2E3MmQzOWM2YWRkN2Y2M2I5YjMxNTc0ODg2NTI1MjMgbGVnYWN5LXRydW5rCiszOTQ2NyBjODkzY2FlYjExMzcwNTc5Y2E2MzY0ODM4ZTMxZTIxNTg4NDNhMjYxIGxlZ2FjeS10cnVuaworMzk0NjggMjJhNDA5M2I1MTUxYzY5Yjg3Mzk1Y2VjMjY5YWMwNmY2ZmFjY2NjYyBhc3QtYnJhbmNoCiszOTQ2OSBkYWYzMzhlY2RjY2M2YmY2MTBhM2Y2NDY4MmM3MzBkNDQ2MjZlMTE0IGFzdC1icmFuY2gKKzM5NDcwIGI3MjAxMDRiN2RiOTE2NWEwMzhhNTUzNzhiMWU3ZjQ1M2ZmYWQyNWEgbGVnYWN5LXRydW5rCiszOTQ3MSBiYTQ0ZTllMmI1NTQ3MjlmNzIwY2RkN2NjY2VmOWVhMDBjYjIzOWEzIHJlbGVhc2UyNC1tYWludAorMzk0NzIgOGZhODNhOWViYzZlY2NlY2ViYjlkMDk1YTE1OTFhZjcwYmRlNjRjNSBsZWdhY3ktdHJ1bmsKKzM5NDczIGVkNjVlMGFkMjIxNTk1Yjc4Mjk2NDRmNDI5NTlkOTNhMWQ0ZGI1OGYgbGVnYWN5LXRydW5rCiszOTQ3NCA3NzE4NDdjYmUzYjZjYjY4NjAyNDQ3YWQwN2FmYzBiYjhhMWM1ZWE1IHJlbGVhc2UyNC1tYWludAorMzk0NzUgZjYzZTY5NjBjNWNmYmUyNmIxYjU5YWYxYWEyMjE5YmZhOGVhZWRjMiBsZWdhY3ktdHJ1bmsKKzM5NDc2IDBiN2ZhNmYwNTUyYWJlOTA1MWVlNGY0YzMzY2RjZjY0NzllNjExNzIgbGVnYWN5LXRydW5rCiszOTQ3NyAyNmJhM2Q0ZjRmYzQxNTU3ZmQyNmUzZGZlYzJkM2Y2YWZhOGMxOTdlIGxlZ2FjeS10cnVuaworMzk0NzggYTU3ODAwMmM4ZjY1OTkyMjBkMGJhYTBiNjAzODhiZmM3ZWI4YWNlOSBsZWdhY3ktdHJ1bmsKKzM5NDc5IDE1YTg5NzVmN2ZhOTNkNWEwNjhmN2UyYmZiNGIyNjRhNDdiMDk1NDYgcmVsZWFzZTI0LW1haW50CiszOTQ4MCAxZjJhZjI1OTk2OGI0NTVkNDBiMzVhZDdjNDUxNGVjZTQzOGNlNzk2IGxlZ2FjeS10cnVuaworMzk0ODEgMGEyOGQ0ODYzNmM4NjQzZmRmY2ZjOGI3MjA1MTc1MTkwY2NhMzM2MCByZWxlYXNlMjQtbWFpbnQKKzM5NDgyIDVkNTg0NDNmNDg5YjRmZDI5MTBhNDBmMDFkYTM1NmE1YjEwYmYxNzAgbGVnYWN5LXRydW5rCiszOTQ4MyBlN2ZkODU1NTBiYzBiNTliOGY5NjZlYTJlZjVlOWFlNDMzZTIwOTQxIGxlZ2FjeS10cnVuaworMzk0ODQgOTUxNmJhNTRiOWRmNDQ3NTdkZTQ4MjhiYmZhMjdiNDA2YjAwMDg2MCBsZWdhY3ktdHJ1bmsKKzM5NDg1IDVkYjI3MzE1ZWRjZmZhNWE2OGViN2ExOWNlMTVkODNmNGU4MTQ3OTQgbGVnYWN5LXRydW5rCiszOTQ4NiA0YWJhZjY5MjM0MzcxOTRkYmM2MzIwYWY2YTUxMmVlZjQzNGZlZWMyIHJlbGVhc2UyNC1tYWludAorMzk0ODcgY2VhYzAyNzc4NTIzNDliZTY1ODljMTNkYWNiYjBlZWNhMDk5NWM1YSByZWxlYXNlMjQtbWFpbnQKKzM5NDg4IGRlMWM1ZDE3ZmRlNmM2MzBlOWY1MGFhYTVmNDYxZWRlZjMwNjM5ZWMgbGVnYWN5LXRydW5rCiszOTQ4OSA0MzZiZTJjODkxNDAyZjRkY2VkM2ZkOTY2MjcwNTFlOWY0OTU5ZGIxIHJlbGVhc2UyNC1tYWludAorMzk0OTAgN2RkNDMxNzUwYmQzNjVmZDVkMzcxMWQ0MzcwNjNlNzc1M2ExYjA4MyBsZWdhY3ktdHJ1bmsKKzM5NDkxIGVjZDYxYzkyYWRmMzE2MmU2MzEwMjczZmY4ZWUzNjc3MTkzODMwOTcgcmVsZWFzZTI0LW1haW50CiszOTQ5MiA5NTIxZTM4MDM4MGYwZWEzZWM0MzNlMmZiYjVlZmQ5YWNhNTY1MjZjIGxlZ2FjeS10cnVuaworMzk0OTMgNmJkZTZjZDIzOTU0YzcxMjU3MzU0YWIzMjMyYTc5ODFlMDhhOWQwYiBsZWdhY3ktdHJ1bmsKKzM5NDk0IDE3YjFkZmQzY2JiYmQzM2ZlYzE2NmI5ZTk4NDcyMWNlNjQwZWY2ZmYgcmVsZWFzZTI0LW1haW50CiszOTQ5NSBjYzk0MTZlZTU4ZTE5ZjI4MmFiZDRjMTFjMjU4MWE3MmM4YzEzNDg0IGxlZ2FjeS10cnVuaworMzk0OTYgZjczNzhlOTdiNjZhMjQ3ODdjZDY3YjdkYTVmYmQ1YTJkOWI4MDRiMCByZWxlYXNlMjQtbWFpbnQKKzM5NDk3IGU3M2FjY2YzZWRkYjRhMzJmOWNjNjUxNTBhOGFmZDI0NjA0ZDM3YjcgbGVnYWN5LXRydW5rCiszOTQ5OCAzMzZiNjY0YTIyMTBlOTJkOTRiZTFkOTZiMzMzOGExYjcwZjVhN2I5IGxlZ2FjeS10cnVuaworMzk0OTkgNTgyNDEzMGI3YWMzNTBmZjI3ZGRhZGE1OTBhYTE3NDNmMzgxNzQxMSBsZWdhY3ktdHJ1bmsKKzM5NTAwIGE3Y2NjYzM5MTIyODAyMmE4MmI3MjEwM2Y5ZWM0NjhkNjBlYTRlNjggbGVnYWN5LXRydW5rCiszOTUwMSBkYzg1Mzg4NDViMGM4OTBlYTc5Mjc1NGI0ZjUyZGI0Yzk5NDkwNzJhIGxlZ2FjeS10cnVuaworMzk1MDIgMzYzZTZkZDA3OWZjYWMzOTdmM2U5ZDEzNmJiMzUzY2IyN2UzNDA2YyBsZWdhY3ktdHJ1bmsKKzM5NTAzIDM5ZGJlM2JlMzI3YWFhZmM3YmE0Yzk4NDhhOGZhNTI1MjgzZDhkM2QgbGVnYWN5LXRydW5rCiszOTUwNCBkNTA0YTMwMmJmNTNlM2EzZGFjYjRjZWQ5NGM3MTA4ZTBlY2Y5MWU3IGxlZ2FjeS10cnVuaworMzk1MDUgZjE3ZWQzYjYyYWRhYjE1NjY5NDc4Mzc4YjBkMDgxY2NhZDRkMjlmMyBsZWdhY3ktdHJ1bmsKKzM5NTA2IGVhNTNlN2Q5OGIwMDZhYTIzOWY5MzM0MzE3MzU4MjVhZmRlMzU2OTcgcmVsZWFzZTI0LW1haW50CiszOTUwNyBmYTczNzY1ZThlZjUxZDg1NzM2OWFmMWMzNzU5ZmMxMGQyODRmYTdmIGxlZ2FjeS10cnVuaworMzk1MDggNDZmMGE0NGY0OWU2NDNmZTdjYTJjMmFkMzVlNzUwZGZlNjkwOGNjNiBsZWdhY3ktdHJ1bmsKKzM5NTA5IDk2NmRlYWMxNWE4OTBkZjczYTBlNmU1MGJiNTg2Mjc4YmY4Y2I4NGUgbGVnYWN5LXRydW5rCiszOTUxMCA4NzU3MzlkNzJmYzFjN2I5ODZlZTYwNWRlNWM3OTViNDBlMmExYWE4IGxlZ2FjeS10cnVuaworMzk1MTEgYzBkNmJhZTM1YjRlNzhmYTIwZjc3ZjMxNjM3ZGYyYWI3NTRjZDBhZCByZWxlYXNlMjQtbWFpbnQKKzM5NTEyIGU0MWZkYTlmMGZkMTAzM2NmMTkxYThhZGVmYjRiMTI3YTIwMTcxNDggbGVnYWN5LXRydW5rCiszOTUxMyA3ZDBhNWFjMjQ2NjlhYjZiZTQ3MGFkOTlhYzcxZGI4YTBhMTRmZmEwIGxlZ2FjeS10cnVuaworMzk1MTQgODEyNTkwMDliYTJjOGYwMjQxMTFjNzMwOGJjNzc0NzZlNTQ3MDg0NSBsZWdhY3ktdHJ1bmsKKzM5NTE1IDI1Mzc4YmRiMWIzYTBkYThjZGRjZWY0MjA4MDdjZjk0ZTA2ZjllMzggcmVsZWFzZTI0LW1haW50CiszOTUxNiBhY2ZjMGUyMmNkOGZjNThlNmIyMjI2YTY2ZGUwZGVhMTI3OWEyZWMyIGxlZ2FjeS10cnVuaworMzk1MTcgNzZlMjk1ZWE1MTUyYzk4NDZmMWUwOTY3M2FlNDcyNzc5YjY2OGE2NCByZWxlYXNlMjQtbWFpbnQKKzM5NTE4IDExYTI2NTBlODU2OGRjMGE3NTFiZGE2Yjg0ZDdkMDU2ZjAxMzAyOGMgcmVsZWFzZTI0LW1haW50CiszOTUxOSBiYmJiN2RkYTMyZjNlZTA4NTliODYyMzNiZjZmMzdmNTdjYjI1YWQxIGxlZ2FjeS10cnVuaworMzk1MjAgZDc5YWYwNjUxMTU1MDZmYmQzMDgzZWIwODMyMzQxZjNlYjU5NWUwNSBsZWdhY3ktdHJ1bmsKKzM5NTIxIGIxOWNmNzNjNTRhNzgwMDFkNmQ2ZDVhMTNkZmIwNWQ5N2E3MWIyYTEgcmVsZWFzZTI0LW1haW50CiszOTUyMiA3MjRiYmQ0ODlhZDQ3MjdlOTA1MmM2OWI1NjM0MWIyYjViMmNkMmE5IGxlZ2FjeS10cnVuaworMzk1MjMgNTdmNjMwYTlkZTI2MTk2MTZmMmIyMGFlMWMzNTdmYjQzZTAxMjg1MiByZWxlYXNlMjQtbWFpbnQKKzM5NTI0IDliN2QxMTdlYjRiYzk2ZGNjYTc0YzZjOGNlZThhYmM5MTg0OTE5MmUgbGVnYWN5LXRydW5rCiszOTUyNSAxMTc0NGY3YmI0N2E4MmQ3OGIzNjlmOWJlMzdlNmY3MzAwYzI5ZWFlIHJlbGVhc2UyNC1tYWludAorMzk1MjYgNjhhZDUyYjA0NDViZGI3ZjIyOGFlYzc3MWNmNzgzOGI1MTMzMzk0NyBsZWdhY3ktdHJ1bmsKKzM5NTI3IDQxNDEzZjIzMzQ1YjRmNzVlMDQ1NjcxNDgwYjgwOWNkMmEzZDk2Y2EgcmVsZWFzZTI0LW1haW50CiszOTUyOCA4YTZjOTlmODY1ZWJkMzljZmU3OWM1MGVhZGY4NDE1OTk0ZjFkYjVkIGxlZ2FjeS10cnVuaworMzk1MjkgOGFkOWEyZmE4ZWIyYTYwNzhmOTZhZjMwYzgzZTJjNTU5ZGFiMWVlZCByZWxlYXNlMjQtbWFpbnQKKzM5NTMwIGJmYmUyYzliMTIxNTk4YjZlNWEzZmMxNTgyN2YyMDQxNDQwZTc0MWMgbGVnYWN5LXRydW5rCiszOTUzMSBmMjM1ZThlZjBkNTY5MDRmZTIwNGFkYWJhNzM3NWRkNzI3MmE2MmZjIHJlbGVhc2UyNC1tYWludAorMzk1MzIgMDdlYWY2MGY3NTY1MGIxNzBmMzVkMzliOTNhZTVmMWRhMjlhZGJlMCBsZWdhY3ktdHJ1bmsKKzM5NTMzIGI4ZDFiNDUyOTIwNzExNjMzNjhiNTdjY2U3MWI0MGMzZTM3OTMwZTEgcmVsZWFzZTI0LW1haW50CiszOTUzNCBhYzg4MDQ0Y2RlNDg2YjAwYTNlNDc4ZDc3ODViN2ZkN2FkMzJiZGY4IGxlZ2FjeS10cnVuaworMzk1MzUgZGZhYmYwYzdmMWFkZmQxN2M0NTI2Y2YyYmQ5Y2EzZGNiODAyZmI4NyByZWxlYXNlMjQtbWFpbnQKKzM5NTM2IGM4NjU1ODg1ZTQwNjVkMzU1MzM4MzQ5MDkwOTEzZjg1Y2FmZmRmMzUgcmVsZWFzZTI0LW1haW50CiszOTUzNyA2ZGJmYmVlNTg1Y2M4M2ZlMzMyMzI2NDZjNmQ3OGE4Y2E4NGJiNWJlIHJlbGVhc2UyNC1tYWludAorMzk1MzggMTUyYWU3MTkzYzlhNzdlYTJiYTBjODdjNGM3NDc2MGQ4MGJlNjA1OSByZWxlYXNlMjQtbWFpbnQKKzM5NTM5IGZhMDg4MWZkNDliN2E5NTA1ZTE3Njk2NWNmYTdhN2M4NjQ3MDQ5MjYgbGVnYWN5LXRydW5rCiszOTU0MCA4YmFkMWJmYzMzMTk5MmM4ZTFmMzQ5ZWQ1MmJhOWUxNjQ1Zjk5YjExIHJlbGVhc2UyNC1tYWludAorMzk1NDEgMjY5MWNiZGFlNTliZjM1NjE3ZjFhMzM2ODA1MDYzZWRmYWY0YzI3ZiByZWxlYXNlMjQtbWFpbnQKKzM5NTQyIDkwOTMwZDJkMGMxOTEwNzZhMmEwMjdkNTlkZDdmMjdlZjMzNDk1YmYgbGVnYWN5LXRydW5rCiszOTU0MyAzNWM0MzY3NDA4M2E5YTM0MTMzZTdhMGZhMjRmMzEyMjc0NDFiMWQzIHJlbGVhc2UyNC1tYWludAorMzk1NDQgMWIyNWZlODgzNGFlZmQ3ZWNiZWNkYjkwMDNjNDI2ODQ5N2I1OWFiYyBsZWdhY3ktdHJ1bmsKKzM5NTQ1IGZkNTFjZThkMzVhYjRmZDQyYWY1ZWZmNjFkMDJkY2MyNzBiNDQzYzEgcmVsZWFzZTI0LW1haW50CiszOTU0NiBjZDMxMDI3YTcxNjdhMzc1NDhmMjg1Njc5YzVjOTY3YTBiYmVhYzZlIGxlZ2FjeS10cnVuaworMzk1NDcgZDNhZTc5MzBjYjkzOTUzM2ZjZmZkNDRkMTY5NWQ5MzYyZWQwYTRjNyByZWxlYXNlMjQtbWFpbnQKKzM5NTQ4IDczZmUyMTYzZjBiMzBkMzNhMDI2YzhiYTZkMjUyOTBlYTUyNTkwNjIgcmVsZWFzZTI0LW1haW50CiszOTU0OSA1YTZjNDgzZWQ2ODlmNDEwNTg3ODQyODgyMDdlYjk5MGRhMzEwNDZjIHJlbGVhc2UyNC1tYWludAorMzk1NTAgYzI4ZDBlZDg2ZmYwNThiOTgxMDBlNmI3NzEzMDRkNDJkMTE1MTY5OCBsZWdhY3ktdHJ1bmsKKzM5NTUxIDhlZjUwMGM0NTA2YzcyYjc0YmY5ZmEwNTAwYTk1OWZkZDNkNTBmZjUgbGVnYWN5LXRydW5rCiszOTU1MiBmNGMyYzYxY2I1NjA5NTk1Mjk5NDEyNzJlMTgwZGU0NjMyNjFlMjVjIHJlbGVhc2UyNC1tYWludAorMzk1NTMgMzc4NTljNmFkNWJiNWY3ZWJhZDE5YTE2OWQ5OGRlYTQyNmMxMjE1MiBsZWdhY3ktdHJ1bmsKKzM5NTU0IDUyYzY1ZDczZmI3NDAxOWY2ZjlhYjU0N2MwZmIxODUxMDliMmIwYmYgbGVnYWN5LXRydW5rCiszOTU1NSAwOThlYTFlMThlOGQ5NzYwNGQ4ZjZmMThkMGFmOWRhMWE4YTM1YjkwIHJlbGVhc2UyNC1tYWludAorMzk1NTYgMGFlMzA3MjEyNzU1MGFlMjRiNzQyZjFiMzJiY2QxYzQxNTJiMTJmYiByZWxlYXNlMjQtbWFpbnQKKzM5NTU3IDBkYTM5NzVmYjBiYmZjZjc4MmQ4YzBmNjdlNjVlNTAyYjEwNmE3NDcgcmVsZWFzZTI0LW1haW50CiszOTU1OCBlNjExOWQ1NzdjZDM1ZmQ4ZDUzODVlNTBjYzFmZGFiZTRjYmU0Nzk1IGxlZ2FjeS10cnVuaworMzk1NTkgMDJhOGMwNjQzZjViY2UyNjZiZWFiNzUwYWI5MWM3MDM2ZWY3ODE3YyBsZWdhY3ktdHJ1bmsKKzM5NTYwIDFjZjE3MDM3YTJjYThjNzU4MTc3Y2I3ZGFhMTQxYTAzOGE0NjE4MjMgcmVsZWFzZTI0LW1haW50CiszOTU2MSA1ZjI3ODU3MjJjYmFkMDM5NDFhMjE2NzcxNjdjNzk2ZjczZjNmZWEyIGxlZ2FjeS10cnVuaworMzk1NjIgNDgwNmNiMDA5YTljZTYyM2NlZjhjMWExMWFhOTgwMTNkMzQxYTYwMiByZWxlYXNlMjQtbWFpbnQKKzM5NTYzIDlhMmUyMDMxOGM5ZjVmYmRiNzhhOTE5NDRhZjA4OGQ5ZWZjY2QzYWQgcmVsZWFzZTI0LW1haW50CiszOTU2NCA2MjA5OTJhYTBhOWVmNTgzZDM2YmY5M2M0YzExOWNkYzI4MmVhMDk3IGxlZ2FjeS10cnVuaworMzk1NjUgYjY4YjEzNWI0NTUyNjFkMjgyOTk3MDdjNjZlNTMwY2Y5MDg3NDlkNiByZWxlYXNlMjQtbWFpbnQKKzM5NTY2IGJjZDA1Y2YyZDYxYmE4MGNlOWI1NzRiOTM4N2EyZGIzMjU1M2Y2ZTcgbGVnYWN5LXRydW5rCiszOTU2NyA4Y2NhZDczMjMxNWY4OTJkYjUzYjNkYjUxOWQ3N2U4ZDAwNGU0YWNmIGxlZ2FjeS10cnVuaworMzk1NjggYWZkYWRkNTY5MTk3MDVjMWUxOTE5NTFmMmJkNGNiNTRhM2I3MDcxNyByZWxlYXNlMjQtbWFpbnQKKzM5NTY5IDVjMGMwNmUyMjZlYzA2ZWE2NGY0YTkwNmQzNjkxZTYwNzA4MDhhN2IgbGVnYWN5LXRydW5rCiszOTU3MCA0MGRkZjM2NmY1YTE1MmY2YmQyMGU5ODIwOTIxOTI5YmQ5MmNmMzQxIGxlZ2FjeS10cnVuaworMzk1NzEgOWI5OTRjNjdlOTA5YzA4NmYwMjYxNzExYjk5YjY0YTc3NGI5MTAxZiBsZWdhY3ktdHJ1bmsKKzM5NTcyIDg3M2ExYjJlZmRjNzM2NTc2ZGEwNDg0ODE0Y2Y2NTYwODljMDFjZWQgbGVnYWN5LXRydW5rCiszOTU3MyAyYzI4MGU0NjYxZDBhMDY5NDQ0Y2EyMTAxNGI1YTRhZDU2NmZmN2JhIHJlbGVhc2UyNC1tYWludAorMzk1NzQgMzllYjZhMjIxY2YzMTI0MjIxYTE0YjM4ZTYzZDQ5OTFjZjBjZDhmYiByZWxlYXNlMjQtbWFpbnQKKzM5NTc1IDIxYmM2MjYyZWI5OTIwYWM4YzJlNTdlYTFlM2YwYmZjN2RlNmEwYTggcmVsZWFzZTI0LW1haW50CiszOTU3NiA4OWNmMmUzZmU3MjhhNjhmNGJjNjZmY2E5YzBhZjc5ZTBlMDg1YTlhIGxlZ2FjeS10cnVuaworMzk1NzcgZjg2Y2QyNzc4NmFiMzE5YjczNjU1MTBiNTYwNTAzZjY2NWEwZmFhNiByZWxlYXNlMjQtbWFpbnQKKzM5NTc4IDc3NTcxZjcxYjNlNjdiMGJmM2Y1ZDg5YTQ2M2NiZTMwNTAyYjkzMGEgcmVsZWFzZTI0LW1haW50CiszOTU3OSA1YThiZjhlN2QwMTAyYzBlMGIxZWZkZDgxYWQwMGI3MjA3MWYyMWJlIGxlZ2FjeS10cnVuaworMzk1ODAgYTY3MGE1ZGQxZmM2YWE5MTdiYjYyYWQ0NTYwNGMzZmNiNjgzZjQ5YSBsZWdhY3ktdHJ1bmsKKzM5NTgxIDIzZGRhOTJkZTk5MzhhMjhmZjU1NWVjODEzOGY5NDQ2MGIzMTIwNTEgbGVnYWN5LXRydW5rCiszOTU4MiAxZjIzNmU1OThhZTk3NjMxZDRkYjQ0NzIzMDI1MDBmZjMzODQxYzNiIGxlZ2FjeS10cnVuaworMzk1ODMgYWYzYTA2NjI1YTZlNTljMmRiZjkyYjQwZWFiYjc0YmMyZDQ1NjgxYiBsZWdhY3ktdHJ1bmsKKzM5NTg0IDM1YTk5ZWNjYWNhNjc5MzI2ZjVlNWM5OTBiM2I5ZjZhNjk0Y2Y5YmQgbGVnYWN5LXRydW5rCiszOTU4NSBlY2I3ODg2M2E0ZWU3ZjMxNDMyYjc5ZmNjMTQzNjE0OWMwNTUwZGMxIHJlbGVhc2UyNC1tYWludAorMzk1ODYgN2IyYjhkYjk4MTM2MzM1MDdjZTU5NjVkZjM4N2QyNDU1YjdlMDRiMiByZWxlYXNlMjQtbWFpbnQKKzM5NTg3IGM2ZDdmMWZlOWQxZWJlOTFhNmFiYjhmMzI1ZTBiOGNlNTkyMGQ4ZmYgbGVnYWN5LXRydW5rCiszOTU4OCA5MGJiNzExMjIyNTdjMTEyM2NlYzg5YjU1MDliN2I5MjgxZWZjZjQ2IHJlbGVhc2UyNC1tYWludAorMzk1ODkgNGQxYmQ5ZDBjMDA2ZGI2NjNlY2U1NzljOGEyNDBlZTZiYTM3YjA3MyByZWxlYXNlMjQtbWFpbnQKKzM5NTg5IGQwMmQzODc1NTRlMjAwYmVmY2VlYzk5OWI3ODhmNDU5M2I0MzRiNDkgcmVsZWFzZTI0LW1haW50CiszOTU5MSA3MDkyN2M3OTlhMjFlMjZiM2I1Y2QwZjZmYzEwNWNiYWY5NzFjZGY0IGxlZ2FjeS10cnVuaworMzk1OTIgOGZmZWVkYjYwNmQzMzBjZGQzYTRkMTZiYTY3NmExYTZlYTMwYjRjYyByZWxlYXNlMjQtbWFpbnQKKzM5NTkzIDZmM2QyMDk1NTVlYjU1ZmY0OGY1NWExZDk0NWQ0ZWZmMGFhMjFlNDggbGVnYWN5LXRydW5rCiszOTU5NCA3MjY2MGMwODY2YTE5ZjAwMzZlNzIwODE3OThiZWJiOGY2ZTFlZjFhIGxlZ2FjeS10cnVuaworMzk1OTUgNzc0YmY5YTM4YjJhYjk0NjY2YzVmYjY1NGRhNGUyNGUyNGE1Y2EzNiBsZWdhY3ktdHJ1bmsKKzM5NTk2IDE3YTgyYmE0NTQ1MmFjMWI1YTEyZGU5ZGRkNDMzY2ZhNjM5YTM3NWQgcmVsZWFzZTI0LW1haW50CiszOTU5NyAzOTljNDExNzZiYjc5YTJmMjQ4NWM5ZDRhMzgwN2E4YzIwOTVkNGE1IHJlbGVhc2UyNC1tYWludAorMzk1OTggYTk1NzY1ZjY5MjgyNTFkODZmMGQxMzU3ZWI0NjY0MWFjNDgzMzkxMiBsZWdhY3ktdHJ1bmsKKzM5NTk5IDRlMGQyYTdmNWYxNTQ0MWJkYzE1MmZiMWUwY2E0ZTAwYWZmYzA1ZjcgcmVsZWFzZTI0LW1haW50CiszOTYwMCA3NzdiMjlkOTEzYTYyMmEyZTk5ZjgzYTdlZWEyM2VhZmIwZjY3MDlhIHJlbGVhc2UyNC1tYWludAorMzk2MDEgNDk1ZTdmZmFkN2U4Y2MwNjQ3YmZlMmRjMzA0ZTkwY2NkZWZhM2ZjMCBsZWdhY3ktdHJ1bmsKKzM5NjAyIDY4N2ZhYTljZjZlYjA4YzE2MmVlMzkyZjU1MDRmNDg4YmMzMjY2MzAgcmVsZWFzZTI0LW1haW50CiszOTYwMyBjMjYwZDNiN2Q1ODI5ODMwNDAzZDE1ZmJkNTRhNzQ0ODk2MDQ4Yzg5IHJlbGVhc2UyNC1tYWludAorMzk2MDQgMDNjZmRjYmM0ZDFmM2EzNTNkYzM4NTA3ZmE0MGMyZmY3M2QyYTBhMSBsZWdhY3ktdHJ1bmsKKzM5NjA1IDQ1YWFhNDM2Yjk0NTEyNjA2MzEyNDIyMGJiZDUxOGVjODg4MzdjYmQgbGVnYWN5LXRydW5rCiszOTYwNiAzMDI4ZTMwYWE4MzU1OTAzNWNlZjI3MmI0N2RiYjBiN2RiYjA3MTAwIHJlbGVhc2UyNC1tYWludAorMzk2MDcgMjdlMTQyNmI3ZjMxZDY0MmU0MTE0YTJmYmY2MTNkOGRmNjQ4NGYyNCBsZWdhY3ktdHJ1bmsKKzM5NjA4IGUyMjMzNGIxZGE2N2ZiMjkxNmU2ODZkM2M0ZGY5Y2U2M2I1Yzk3ZjcgbGVnYWN5LXRydW5rCiszOTYwOSA3ZGQ0ZTZjYjlkMjc1MjgzZWM1ODBhYjcxY2ZhM2M2MTllMTBhZmVkIGxlZ2FjeS10cnVuaworMzk2MTAgNjhkYmNiZjA1MTZjNTc2NTg2MjA3OTNlMjg0NjNhNzgyMjA4OTk2NSByZWxlYXNlMjQtbWFpbnQKKzM5NjExIGUzMTU2NGM3YmRiZjdhMjZiM2Q4MzFhZTgwOGFjZmFjNTYxNzE4NjAgbGVnYWN5LXRydW5rCiszOTYxMiAxZTdiNzU1MTk0YTRkZGI3NDk1ZTQwODFjZWE2NzdhOWY1MTMxNDM2IGxlZ2FjeS10cnVuaworMzk2MTMgNDA3YWM0OTlhNWEzOTFmNjYwZTRjZDY1YTNkZTNlOWYxOTJhMjU5MiBsZWdhY3ktdHJ1bmsKKzM5NjE0IGUwYTlmNjZiNzAxNDY3MTZiNmMxNzRlZmZlMTY0MzhkZmRhOWU0NzIgcmVsZWFzZTI0LW1haW50CiszOTYxNSBhZTUzNmU2NmU4NmY1ZjAxYzE4Y2Q0MjVlMDJkZmY2N2RmNzcxYzMxIHJlbGVhc2UyNC1tYWludAorMzk2MTYgYjY0NjM5Y2VhM2VkODdmZmY0ZWMwZTRhOTJiNmU0MzE1YmJiN2NjZCBsZWdhY3ktdHJ1bmsKKzM5NjE3IGY1YmQ3ZWFkMTZjNDcyMzcxZDU1YWExOWFlMjQwMzY4ZDllZDFmNmQgcmVsZWFzZTI0LW1haW50CiszOTYxOCA0YWU3ZGFhZjBhNjYxMTg4NDQ5YWI4M2RmYTlhMzc2Y2RhZDk4YTgxIHJlbGVhc2UyNC1tYWludAorMzk2MTggOGQzNzI3NmZkZjA3N2Q2ZDIzZDk2M2QzZjdmOTUzODFkMDBmMTkyNiByZWxlYXNlMjQtbWFpbnQKKzM5NjIwIDZiNDJlZWI1MjE0ZGE4YTAzMjJkMzE2MmU1M2ZlZTMxOTJiOTdjYzQgbGVnYWN5LXRydW5rCiszOTYyMSA4ZjJiZjE4Njc0Y2JlOTMyODIwZjNlOWQ0MGQyYTI4M2ExZGM5YmJiIHJlbGVhc2UyNC1tYWludAorMzk2MjIgZDMzZjRmYzg0ZDRhZjJiMTllNjNmNjAzMjM1YTkxNDk3OGJlY2M5MiBsZWdhY3ktdHJ1bmsKKzM5NjIzIGMzNzgzYTEyYTFiYzE5ZDNkMGViMjgxMjQ4NzdlMjFiZWMyOGEzMmEgcmVsZWFzZTI0LW1haW50CiszOTYyNCBjYTg0NDUxN2M4NDk1MmM0NTY0MzBiZDU1YjYwNGIwMzcwZmVmNTc0IGFzdC1icmFuY2gKKzM5NjI1IDZhMjA4MzFkMzU3ZDU3Y2Q2MjRiYWI5MGRlMzczM2U1MWViNTEzMTMgbGVnYWN5LXRydW5rCiszOTYyNiA5ZWYyNWM4OWQwZDZjMzA2OWNkODBhYjk1OTdjMGEyNzAwZTE2MTU3IHJlbGVhc2UyNC1tYWludAorMzk2MjcgYjVhMDEyODJkYWRhZmM5OWNjYTRlYTYxMTIzNDQwNTNkYjg2NzgxYSBsZWdhY3ktdHJ1bmsKKzM5NjI4IDhlYjc1YzI4ZWQ5NDFjNDMyZjVkMTNkYzE1MGZjMzdjZGI1NjEwODIgcmVsZWFzZTI0LW1haW50CiszOTYyOSBhMmNmMjU2NDJjOGVjZGY5NmE4ODZmNDIzZmQ4NjJhYjczNTFiOGVlIGxlZ2FjeS10cnVuaworMzk2MzAgY2JhMTBjNmQzNGUzODU5M2U2NmQ2YTk2OGQ1MWUwYjg3YmUwMTBiOCByZWxlYXNlMjQtbWFpbnQKKzM5NjMxIGE4M2U4ZGYxMzQ5ODYyYWYzMTg0YTYyMTlkZTU0N2VmYTdmZWY3ZjAgbGVnYWN5LXRydW5rCiszOTYzMiAxZDRkODVjNzM1ZTdjNGY4YTE5ZTYwZWRhNjJiY2I1MTE0ZmQyYzY3IHJlbGVhc2UyNC1tYWludAorMzk2MzMgNmQwNGNiMmNkZDRhZmNjYWY1ODhjNGVhZTRhYWQxMjRlNWJmZTk5ZiByZWxlYXNlMjQtbWFpbnQKKzM5NjM0IDg1NjUxZWIzZDlhOTBkMTIxYTBmNDJhNWIwNGI3NDEyZjE1MzZlMGQgbGVnYWN5LXRydW5rCiszOTYzNSA2Nzg0OGM4NzE3NjhiNTU5YzNmMjM0YTk0Zjk2YmI0ZmZjMmQ4N2Q2IHJlbGVhc2UyNC1tYWludAorMzk2MzYgNTYxMWRiNDUxYTM5YmEyZWY3YjhhNTBiYzJhYTI0NTg2MGNiYjVlZiBsZWdhY3ktdHJ1bmsKKzM5NjM3IDBiZTAwNzc1YTgwYzQ1MWMwNTE2MDFhOWM0MDVkNzY0YWZmM2M0MzEgcmVsZWFzZTI0LW1haW50CiszOTYzOCBkYzVkNzA2MjgzZDYyZmViYzQ1ODdhYmQ5YjljMjkyYmUyMjAyZjNjIGxlZ2FjeS10cnVuaworMzk2MzkgYjhlNTcxZTZkZTJlM2U1NzY3ZWIwZWFiZDY1MGEyYjk2NTRlN2U2MiBsZWdhY3ktdHJ1bmsKKzM5NjQwIGU0NTRkNmMxYjNjMWYzZmMzYzMxNzAwYjg3MGJhYzM0M2M0ZTdiMWQgYXN0LWJyYW5jaAorMzk2NDEgNjMwZmY1NDQwZGZjNmU5NDNjZDQzMTM1YzZlODViN2Q5NjkyNDc3NyBhc3QtYnJhbmNoCiszOTY0MiA3NTM0NTc4Nzk0MjU1OTBhNDEzNTk2MDg4MDMyYTFkOGJmNWYwYzExIGFzdC1icmFuY2gKKzM5NjQzIDZjM2QwYTBjMTk1NjAwODdiNTQzNTNkMjU0NmRhZTQxZWM4Y2JkOGMgcmVsZWFzZTI0LW1haW50CiszOTY0NCA4NDU0MTczMWIxNjZhNmM0NTUzYWE4Y2ZiYzlkZjc5N2YwMWY5NzI4IGxlZ2FjeS10cnVuaworMzk2NDUgZjZhMjA5YjY5NTBjYWI3M2FhMDIyYjk5YjU3YjI1MmNjYmZhOTVmOCBsZWdhY3ktdHJ1bmsKKzM5NjQ2IGNlZWQzM2VhYzQzNjE2ODEyYTI2NzFlZWE2NWQ4M2VhZjhmOTdmNDYgbGVnYWN5LXRydW5rCiszOTY0NyA1ZDUyMzZlYWU4YmQzZDYwZGY4MDM4Y2Y1OTdlMDYwNjM0NDE1ZDRiIGxlZ2FjeS10cnVuaworMzk2NDggNDEyZDIxZTMwYzEzMGUyMjc2Yjk4NDcwODlhNjE3NTQ4ZmU4N2NlMyByZWxlYXNlMjQtbWFpbnQKKzM5NjQ5IDYxMmExMjE3OGU0N2I3MDg0YzZlMTAzZDUwOTVlMGYxZWY0NjkxMmQgbGVnYWN5LXRydW5rCiszOTY1MCBkMTQ4MTNlNzhhNTAwZmIyYjkxYWM1NGNlNWNhMWQ0ZDMxOTAzZDY3IHJlbGVhc2UyNC1tYWludAorMzk2NTEgOWQ0MzM4MWMxODRjYmJiYzdkYWNjMmEyNmVkNWUwMDg1YTQwOWE5YSByZWxlYXNlMjQtbWFpbnQKKzM5NjUyIGUxZGY0OGYyODQ3YWQ4ZThkZGY2MDJiN2YyOTQwOWE2OGVjOWFmOWIgcmVsZWFzZTI0LW1haW50CiszOTY1MyBlOWJhZTJmZWJhYzgwMGUwM2JjYmNlYjdiNGU0OGFhYTNkMDk3MjUwIGxlZ2FjeS10cnVuaworMzk2NTQgZjA5NTFmZGFlZDM3YzBhZjMzODU4ZGEwYTdmZDQwNmViMTQ2YWQ0NCBsZWdhY3ktdHJ1bmsKKzM5NjU1IDE3MmZjZDljMTk1MjYxNWM4MWZkMGNhODFkOGUxMGU1NTUwNmZjZDUgcmVsZWFzZTI0LW1haW50CiszOTY1NiA4YmRkOGMyYzZjNDk1ZjhhNmY1OGE0MWZkNTRhNmQ2MzIxNmQ0OWE3IGxlZ2FjeS10cnVuaworMzk2NTcgM2UwYmI3Zjc1YWI3NjVhOWM4YTU3YjkwMTFiODIxOWE3ZjYxNWMwOSByZWxlYXNlMjQtbWFpbnQKKzM5NjU4IGU0NjZjMGE1NTBiODhjYjg3YmE0MmE1MWJiMzdiZWNkZTI4N2IxOTYgbGVnYWN5LXRydW5rCiszOTY1OSAwMmZlNWQ0OTZmY2U5OTI0NmM2M2I1MjMwYTI3MmYyZGRkYmZiNGVlIHJlbGVhc2UyNC1tYWludAorMzk2NjAgNjkwN2U0NzFiZGFjZTQwMGQyMzBhMDk0YzZmNjMwNjc2ZTRhMjRlNyBsZWdhY3ktdHJ1bmsKKzM5NjYxIDNiZTgzNTM1MDA4Mjg2MmI1YWU2ODgzZGViNDAwZjJkY2MzZTBlYmEgbGVnYWN5LXRydW5rCiszOTY2MiBmOTg3OTIzNzg5NTQxN2I3ZGQ4NTI4MTE5YmNmNDg2N2Q4YTg1ZTU4IGxlZ2FjeS10cnVuaworMzk2NjMgMjk4NWU0MmViMmQyYjA5MWNhZDE4YTYyZjNkZmViYjRiOTk1ZjQ3NCByZWxlYXNlMjQtbWFpbnQKKzM5NjY0IDMzMGMyMzA3NTA1NDE5MTA2ZjcxNjczNmUwMTIzMTUwMGZmMWJjMmMgbGVnYWN5LXRydW5rCiszOTY2NSAyZmRhN2IxNzQ3OTRkOWMwMDc4ZTliNjU3NWZlMDhmZDQxZmM5OWQ0IHJlbGVhc2UyNC1tYWludAorMzk2NjYgNTQ4YmFkMjE1NDI5ZjM5YWY5MzczN2VhMTk1Yjk1ZGRhMDJhODJiMyBsZWdhY3ktdHJ1bmsKKzM5NjY3IGUyOTk1NTYzNjEwZjcxNzk0ZWVkYzVmOWFiY2FkMDIxY2UwOGI4YjUgbGVnYWN5LXRydW5rCiszOTY2OCA3YTdlODc5YjJhYTFiMmUwNTkxZWI1NDRmOThhNGM2YjhlZmZmYmZiIElETEUtc3ludGF4LWJyYW5jaAorMzk2NzAgYjYxY2RkNGY4ODhiZjlmNjEyOGYzNjYyMjUxMzU4ZjExMTMwZGIxNCBsZWdhY3ktdHJ1bmsKKzM5NjcxIDA4YTU1MWU3NTYxY2MyYjQ2M2RjNzcyNWFmYTI4YmQyZmViMzg0ZDMgbGVnYWN5LXRydW5rCiszOTY3MiA5NWMwZGQxMWFmYTc4ZDJhNWZlMThjNjQyNTY0YmNhYjc0NGYxNTQ2IGxlZ2FjeS10cnVuaworMzk2NzMgNTg2YjQ4ZTNjYjk4YTAzM2EzZDczMTEyMGFiYjAxNmVmODBhNDYxYyByZWxlYXNlMjQtbWFpbnQKKzM5Njc0IDkyMWFmZDA4YTVkY2JkNDIwMTI5ODdlOGIyYjdjZGUzOWYwZDgxOTIgcmVsZWFzZTI0LW1haW50CiszOTY3NSBkMGFmN2IwOThhOTlkNjJlZWIyZTY3ZjYxNzNiYzI4NzA2YjA5YzRiIGxlZ2FjeS10cnVuaworMzk2NzYgOTIzNzIzYTljNDNjYjk2ZTgxODUzMmUwMzJhMTk1NzBmNTE1Y2JjZSBsZWdhY3ktdHJ1bmsKKzM5Njc3IDM1NzIyNDljMWU3NzEwMjk0Mjg4ZDFjZDU5OTYzMjMzMzZlNGExNzMgbGVnYWN5LXRydW5rCiszOTY3OCBkNDNkZmU2OTVkMDhhNGE3NDNiNmRlMjUxNzc5YTIzNDhhOTQ3OTdkIHJlbGVhc2UyNC1tYWludAorMzk2NzkgZTE2YjZiZGYzZjg5OWE3Zjc2YjgxNzNkYjVkYjc5M2Q5ZTRhNGUzZCBsZWdhY3ktdHJ1bmsKKzM5NjgwIDIyYTcyMGIzNTMxNGQwMTI5OWFkYWVhNmIyZmEwNTExYTNiMzMyYzIgbGVnYWN5LXRydW5rCiszOTY4MSBlNzhlODRmMWE4MjQ4N2ZjYzQ1M2VjM2U0NGQxZWJjZmM1YjgyOWE5IGFzdC1icmFuY2gKKzM5NjgyIDc2NjM1YWI3YjcwNzRkODU2MzUxYmJiODdkMzRkZjk3ZmMxOWViMDggbGVnYWN5LXRydW5rCiszOTY4MyBhNjRiZTEzOGYwZjZjNDgwNjBkNjQzZGU4OTRmOTI4MTRiZGU1MzA1IHJlbGVhc2UyNC1tYWludAorMzk2ODQgNmUwNGE1NTdhZTIwY2Q2ZWZjMmRjYjY4MThjN2IxNDcwODhlMGNkYiBhc3QtYnJhbmNoCiszOTY4NSA0ZTM5ODgzNzM3M2M5YWQ2ZTM3NTFmNTlkOGEzNDc0MDkwNTcxNzBjIGxlZ2FjeS10cnVuaworMzk2ODYgYWFlMzc0MzBmNTI1OTYzNDc3YTBjNWFhYzNhMTNiZmE2MGQ2MzRiNCBhc3QtYnJhbmNoCiszOTY4NyA4NTY3ZWIyM2U2NWRlYjRmM2IxMzZiYzE5NTdlZDBkYjNjOTNjNjMyIGFzdC1icmFuY2gKKzM5Njg4IDBlNjkwNzhjYWQ5MDBmZDM3YTI1NTNiN2U4N2IwOWIzM2FkYTQwODEgcmVsZWFzZTI0LW1haW50CiszOTY4OSA1Njg1ZWM1OWYzNWI4NDEzMDIxZjE0M2Q4ZTg0NjM5NmQxY2ZlNTYwIGxlZ2FjeS10cnVuaworMzk2OTAgYWFiMWQ1ZmRmNjRkZjY1NmVkZjNhMjVmMzYzZTJkMTI3ODc1MjAxZiBsZWdhY3ktdHJ1bmsKKzM5NjkxIDhlODZkYmFkOGM3MTRlOTg4YzhhMDkyMWI4YjFmN2ZlMTNhYWExYjggbGVnYWN5LXRydW5rCiszOTY5MiA1OWM0YTY1NjQyYzU2N2FkODBhMzhjNTU0N2Q1YWMwMjg0Nzg2OWE5IGxlZ2FjeS10cnVuaworMzk2OTMgNmU3MGVkNmRmYWQ2NzU3OTcwOWIyMjE5N2I3ZTA5OTEwZTZmNmE0ZCBJRExFLXN5bnRheC1icmFuY2gKKzM5Njk0IGU5ZTMwZDkyODcxZTlhMjdhYTNhNjc0NDUwMmFhZjcyZjZhYzA4ODkgYXN0LWJyYW5jaAorMzk2OTUgN2IzNWMyOTA0MGM5OTJmYWJlOTQyNGUzNDdlZGZkZmNlYzMxZTE2NyBsZWdhY3ktdHJ1bmsKKzM5Njk2IDdiN2ViM2U3NjIwZGY5MTAwMTg4YjNiOWNhMzE4YTY2MjMwNTEzNDYgcmVsZWFzZTI0LW1haW50CiszOTY5NyA3MmZlYmVlNThlN2I5ZTM2ODA4MDVhYjZiMTlhNDNkZTJjZTIzMmEzIGxlZ2FjeS10cnVuaworMzk2OTggYzM4ZTRlYzdiN2YxMWQ1NmUzY2NhMzQzNmM2MmMwNTRhOTBhZjBhZiByZWxlYXNlMjQtbWFpbnQKKzM5Njk5IDdlNzk4OWI2YWMzNmM0YjkxNTU5N2E4YmNlYWY0M2YwZDNjMGEwM2EgbGVnYWN5LXRydW5rCiszOTcwMCA1YTYyNjg2ZjdkZmRmNjRlYjZjMTNlZjMzZWEyZGJlMzVlZmZmN2E0IHJlbGVhc2UyNC1tYWludAorMzk3MDEgMzA3YjdlZWUzZTNkOTIyMDczYTY2YzdiZTQ4YzllOGVjM2VhMTVhZiBhc3QtYnJhbmNoCiszOTcwMiBkOTQ3ZmJlYzM1ZDNmMDRmMTQ4ZGU0ZjBhZjRmZjgyNmY5MDViYjNhIHJlbGVhc2UyNC1tYWludAorMzk3MDMgNzI1OTVhNjE1NTcxYjQwNjcxZTkzM2QyMzMxZTcyYzZjMTcyZmI0MSBsZWdhY3ktdHJ1bmsKKzM5NzA0IGMzZDY0YmM3ZjY5NjIyODZkNGE0MGIwOGM3NTM0M2JmMzU3NzQ0ZjIgYXN0LWJyYW5jaAorMzk3MDUgNTdmNjJlNWEzOTIxNjY2MDBlNGMwNzZiNjA1Zjc4OTllNmFjMWIyZiBhc3QtYnJhbmNoCiszOTcwNiBjN2E3ZTNkMWJmYTcwYTQyMDhkZDA5NzgxYmM1OTFhNzA5MDczMjY1IGFzdC1icmFuY2gKKzM5NzA3IGFjN2Y1NDA3MjQ2ZjQwZmQzZmFkNDhkNTA2OWVmNTkxNmFiYTVlNjMgYXN0LWJyYW5jaAorMzk3MDggZWY3Y2RkZWIzMjdjYzhjNGNkNzA1NTVkNDUwMTRlY2QzYjdlMzM3OSBhc3QtYnJhbmNoCiszOTcwOSBiMTA4MWM0OTVkNDY3MzNiYmZhN2QyYmNhM2IxMzIwODBkZGE0N2RkIGFzdC1icmFuY2gKKzM5NzEwIDE3NDVjMmVkYzUxNGQ5MjMyY2U1NGY5NTFlOTc0MjhkMGVlYWZhZmEgbGVnYWN5LXRydW5rCiszOTcxMSBhNDQyOWI3Nzg3ZDQ0ZTViOWIyZjg2MTI1MWUyMGQxYzZlZWNmZWRkIHJlbGVhc2UyNC1tYWludAorMzk3MTIgMjM0MmNkYjkyNjk1NmIyZDhkOGRmMzA1M2M1NzVmMGU2YzQxZmViOCBhc3QtYnJhbmNoCiszOTcxMyBlY2U1ZWI2ZjJiNWEzM2RkMjhhOTE2NWRmMmIxMTU2NGRiYzY0ZmUyIGFzdC1icmFuY2gKKzM5NzE0IDNiZDc0ODI0YTNhY2QwYTFlNDA2YjUzOWRjYmZiZGEzN2IwNmVkNDkgYXN0LWJyYW5jaAorMzk3MTUgZDIwNDRlNWEwNmM3ZTYzOGEyY2EzYWI3MGY3ZDAyNTFlOWIzNGJjMiBhc3QtYnJhbmNoCiszOTcxNiBhNGJlYzdiNmI2NDA1YjNlYWFjMjhlNDVmMjE1ZTg0ZGM5MmE1MWMzIGFzdC1icmFuY2gKKzM5NzE3IDMwZTg4YTE3NWZkYzkwYzc5NzUxOGQ2OWRjOWMzZWJmNjdkNDY5OTQgYXN0LWJyYW5jaAorMzk3MTggNTI1ZGFjMGQyODViZjJlMjQ4ODAwYzUyM2RlY2JkMmQwZDYwNmE3ZSBJRExFLXN5bnRheC1icmFuY2gKKzM5NzE5IDc2YjkxYWNhZDVlODhjY2Y3MjRjNGFmMTQ0ZTM2ZTQ4YjFhY2UwMzcgYXN0LWJyYW5jaAorMzk3MjAgYmM3ZjZkZWFiMzQwYWU3NTczODQ2MmVlN2NiYWRkYWY5NGU5YmVmZCBhc3QtYnJhbmNoCiszOTcyMSBkZDI5MjYxY2I0MzgyMGViZDliZTg2MGM1YTRlNzUzMjhiY2NjZTc4IGFzdC1icmFuY2gKKzM5NzIyIDllYjQ0MWE3MDcyNDZiZGExZTdhZjFkYjM4MTAxZWE2MTkzMGYxNWYgYXN0LWJyYW5jaAorMzk3MjMgY2RhODczNTcxODVmYjkzY2YwYTc5MzBjY2M4YzE3MWYzYjJkN2Q5NSBsZWdhY3ktdHJ1bmsKKzM5NzI1IDU2NjkzMDdjMTMxYzUzODQ2NjU2YWNlOWE2ZjI5YzFhMTY5OTY5NGIgcmVsZWFzZTI0LW1haW50CiszOTcyNiA0MmQzYTQ0MDBkMzg2NmNhODY0NWMwZmRkNjQ2M2UyM2Q4ZWY3ZDFhIGFzdC1icmFuY2gKKzM5NzI3IDIxNjExZmY1NThhNTAyMzgzYjU2OWViYWI5MjRkYjVjOWE1MGY0NzMgYXN0LWJyYW5jaAorMzk3MjggYWU1MzlhZjRhZmM1MDFkNDM5NmQxMmVmNjBjYjQ0MzliNDRkZDAwNCBsZWdhY3ktdHJ1bmsKKzM5NzI5IDYwZGZlMmY1NWMwZjUzZmM2NDkxNjhhNzUxZWRmM2ZmNDk5YjE4MWEgcmVsZWFzZTI0LW1haW50CiszOTczMCA2Njc5MmEyZWYzZGJkMDQzY2E0ZTk2ZDM3NDFiNDdhYzY0ZjQzOTQ1IGFzdC1icmFuY2gKKzM5NzMxIDA2YWQ2MzQ1NjQ5ZmRkYjZhNDhhYWI2MjdjOGRkYjA1Y2E5OWU3MmMgYXN0LWJyYW5jaAorMzk3MzIgZDdmNDA3MDllMTU4NTQwZGFmYTc1NjE4MDkxM2I0ZWU1ZjQ5MmVmMSBhc3QtYnJhbmNoCiszOTczMyBiYjViYTU0MzU5ZTViY2QzODJmOTk4OTcyMDA3NGE1MGJhNGQxNDIzIGFzdC1icmFuY2gKKzM5NzM0IDQ5NmViNWRlZDVlNDViM2VjODI0ZDMzMmYyNGRmOTRlY2MwOWQ5ZjkgYXN0LWJyYW5jaAorMzk3MzUgYzlmYTg1YjQwNTNiNzViNzkyNDk0Njg4Y2I1MzYzOWM2MjY1ODNmYSBsZWdhY3ktdHJ1bmsKKzM5NzM2IGViMmMwOWQ4Nzg3MDE4M2Y3OWY3NDQ5ZWI2NGMzM2VkNmM4YjBkODYgbGVnYWN5LXRydW5rCiszOTczNyBmZTEwMzczY2Y4YTI3MWRkYWJkN2Q1OWZiMWI4ZTRmZmEzMzkwOWZkIGFzdC1icmFuY2gKKzM5NzM4IDgzZjI0NWY3MjgzMmUzOTFmOGZlYTRhMmQ0ZDcwMjNkYWE2Mzk4YjIgYXN0LWJyYW5jaAorMzk3MzkgNTM2NTkwYzMyMzExODUyYTMzYTE4OGZjZDcxZWQ2ZGNjOGQ2YzljMiBsZWdhY3ktdHJ1bmsKKzM5NzQwIDU3NDdjZWQzNTQyNGE2ZjEwNjVhMjA5NzJkMjIxZWI3YmIxMGM4MDYgYXN0LWJyYW5jaAorMzk3NDEgY2I1Y2M0OGI1YzI5NWFmMDgyYTk3NzUwNDdmZTVmZTRlYzk3ZTJjNyBhc3QtYnJhbmNoCiszOTc0MiBiYzdjYTE2MzM0YmFiNTRhZDg4MTFiYjAwNTk4NzFkZTU5ZGNjZGQ4IGFzdC1icmFuY2gKKzM5NzQzIDllZDQzZTYzN2FlN2I1YWVkNWIxYWRjOGRjZjliOGZjZjdiMTEzYjcgbGVnYWN5LXRydW5rCiszOTc0NCA2OTEzYWJiNzA0N2FlZmYxOGE4MjBiMzMzMzhlMTA1ZGI5YWJjNmIyIGxlZ2FjeS10cnVuaworMzk3NDUgOGJlYzEyMGRiYjE2YTY3OTQ0ZWIzZGVmYjRhNjYyMzk0M2ZkOTExNCBsZWdhY3ktdHJ1bmsKKzM5NzQ2IDBiODI2OGUwZDcwZTc3ODI5OWFhMmYyZjljODg0YzQ3OGFiYTFmNmUgcmVsZWFzZTI0LW1haW50CiszOTc0NyA0ZjI4NDNkZmEyM2M3OWFjMjdhOGVhNjAyMzVhODE0ZTBkMmU4OGQ4IGxlZ2FjeS10cnVuaworMzk3NDggZDEyMDFmYWUwNmE4NTAwNzNlMTUzYTNlN2NlYjU2OTE4YTAzNTUyYiBsZWdhY3ktdHJ1bmsKKzM5NzQ5IGRmYjhmYzM3N2I1OGU2OGRlNjBkNzhkYTI5N2IwZTc3NDRkMTJlOTkgcmVsZWFzZTI0LW1haW50CiszOTc1MCBlYTY4MDhiYTE2MzdiYzI3ODdhZmJlM2QwMmY1ZTZkNTkyMzNhZmZkIGxlZ2FjeS10cnVuaworMzk3NTEgN2VkODcwNTBlMTY5NzQ2NmMyMjE0ZDU4ZWRjZjMwZTM1ZTJhYTIyOSByZWxlYXNlMjQtbWFpbnQKKzM5NzUyIDUzOTBkZGM3N2ViODY2ZGZmMzcyZDFhZWEyZDJiNTFiZTc0YjMyOWEgbGVnYWN5LXRydW5rCiszOTc1MyBlMDE4ZmNlMTRmMTAwNjU0MWUxMGI4NDEzMTQ5Y2IwOTIwZDM4ZGJkIGxlZ2FjeS10cnVuaworMzk3NTUgZDAzOTkzNzlkMGNiMjY0YzM4MjMxMzAzMGMzNDMyNzVlNDNhZDZjYSBsZWdhY3ktdHJ1bmsKKzM5NzU2IGIzMmEzOTA5MWFlZGNiNmIwNjljZjBjZGRlNmU5MzA0Y2RjMDFjZjcgcmVsZWFzZTI0LW1haW50CiszOTc1NyAzNzE2MDUxODMwYzJjYzVhYjBkNWMxYzgyMjllMDUwNTFkNGRjOWY3IGxlZ2FjeS10cnVuaworMzk3NTggMWM0ZDE5MmYxNTY4ZGY4Y2FlMmQzNTE0MWE3MjkyNDc1NjRhM2NmZSBsZWdhY3ktdHJ1bmsKKzM5NzU5IDA1YjcxNTgyMmJhNTk2ZTI3NTU1NTVjNTE1YzhkMzcyYzA4MDQzZjAgbGVnYWN5LXRydW5rCiszOTc2MCBlNzgxNTQ5NWJiMjc5YjE5MmVjMTRkZTUzYWNkOWFhOTlkM2U1ODVjIGxlZ2FjeS10cnVuaworMzk3NjEgNDA3YzNkYWNiZDdjMzA1ZmM2NzQyMzAyODZhMjdiYWIyMzllMWRjYSBsZWdhY3ktdHJ1bmsKKzM5NzYyIDcxOGU5ZGUyMmVhNzI1ZTI1YjQwZmI1Nzg1YmFlZGUzMGRiZWMxYjUgbGVnYWN5LXRydW5rCiszOTc2MyBmZGNiNThjYmZmNGRmMGQ2ZDAyMTc2ZmVlOWQ1ZmQyMDg0MTYwNjEyIGxlZ2FjeS10cnVuaworMzk3NjQgMjViYTJmMzMxM2M5MWNjNGU3OWY2NzczYmViMmI1Nzg5NGMyNmE3NCBsZWdhY3ktdHJ1bmsKKzM5NzY1IDE3ODI4YTAwYTQ1NDRmYTNmYjQyMDY1YmI1MWQ2MGJlOGY1NjUxM2YgbGVnYWN5LXRydW5rCiszOTc2NiBhN2E0OTNkYjYyMzEzZDAzM2JkYmM0YzY1YTg4NzdmMzRiOTU2ZWRkIHJlbGVhc2UyNC1tYWludAorMzk3NjcgZTU2MTQ0NzA0ODA4ZDdjZTZjMzA1YzBiNGYwNTE0ZTFlYmJkYmE1MSBsZWdhY3ktdHJ1bmsKKzM5NzY4IDQ3NDk2ZTdkYmYyZmNkMzA2MGM3OTAxYTEyM2ZjNjFiMWMyNzYyZmUgbGVnYWN5LXRydW5rCiszOTc2OSA4MWViZDZlMTc3YTNmOGE5MDQzNTdkOGMwNzBhNzA3YTNiODMwMDRlIGxlZ2FjeS10cnVuaworMzk3NzAgMTQ0MDliODIwOTMzZmM3N2JkNWNhYjliMTFhM2FlZjI1YTE2NTY3ZSBsZWdhY3ktdHJ1bmsKKzM5NzcxIGMyOGMxYTM3Yjg2YWUxODAwODE5NjMwOTkyNjQ2ODVhZGQ1NGM4NjUgbGVnYWN5LXRydW5rCiszOTc3MiBiNzJiM2U1MTdhNGRlN2EyNGRlOWIyMzNlN2Y1YzY1OWI1NDc0MGU2IGxlZ2FjeS10cnVuaworMzk3NzMgZWIxNWNkZDRhMmYxMDAxNzkyMDc0Y2EwNzg5MDI2OTg5NDUyZmY4MiBsZWdhY3ktdHJ1bmsKKzM5Nzc0IGUwZTMyMGYzNmM5MzYzZjZkNWY4YmZjNDA3M2RkNmM1Mjc5NDRmOTkgbGVnYWN5LXRydW5rCiszOTc3NSBkOTFlZDcxMDdmZDJkYTAzZDM1NmFjYmM1MjQzYTY4ZDBiNTA1ODUxIGxlZ2FjeS10cnVuaworMzk3NzYgNzljNWI4MTdmZWRjMTE1NzkzMGI5MGUwMWYyM2ZiOTYwNmNhMzVjZSBsZWdhY3ktdHJ1bmsKKzM5Nzc3IDdhNWFjMjAzMTU0YWFhMmQ3NTc1YTFiZDkyNWQ4ODQzZDdlNmUyMDIgbGVnYWN5LXRydW5rCiszOTc3OCAzZjYzMzQxZDkzMTJmNjkyMjFkNjY3MGQ1Y2ZlNTkzZDk3MTQ3YWE5IGxlZ2FjeS10cnVuaworMzk3NzkgNTI4ZTAzODgzOWEyYWFlN2QzZGVhMmU1N2I4ZjQ1NGU3NmE5OGUwMiBsZWdhY3ktdHJ1bmsKKzM5NzgwIDRhYWY1MDZhN2QwOTkyYjhjMTU0YTUwYWI1NjQzOGQzZmRmMmYxZTcgbGVnYWN5LXRydW5rCiszOTc4MSBmMzc2MjIxYmJiNzZjMWQyNzJlNDIzODQwYzM0OGExYzVjMjNkYmI5IGxlZ2FjeS10cnVuaworMzk3ODIgMzRlZjlmMTM4YzMwM2I3NjJhZDg2ODJhMGJhNDg1MGIwNWI5MzM2ZSBsZWdhY3ktdHJ1bmsKKzM5NzgzIDdlZTY4ODBjYjE2ZjI4NTJlMDdmMGRmNTEzZDcyZDRlMmUxNzVlZGEgbGVnYWN5LXRydW5rCiszOTc4NCA1NzZiOWE5Y2U1Nzk3Y2Y3YzY3MmE5NzQ1NmQ2OTIxZGExMDJkYTk0IGxlZ2FjeS10cnVuaworMzk3ODUgN2QwNjU0MzVlODZjMWI4ODJjZmZhYjBjZjRkYzkwY2Y4NzI3N2YzOCBsZWdhY3ktdHJ1bmsKKzM5Nzg2IDlhN2MyZDFlNTZkZTMxZGFlYTIwZmEzNDliMjFlZDAwNDlkZWNkMjkgcmVsZWFzZTI0LW1haW50CiszOTc4NyAwNDRkOGUwZjY1ZjJmYjllMzYxMTU3YWQxYjM4MjUzMTcxYzI1ZmQzIGxlZ2FjeS10cnVuaworMzk3ODggZjY0ZmIyODRlZDE1NGQ0ODcyOTVhODkwY2E1ZjI4MjQ4MjIyNDNmYyBsZWdhY3ktdHJ1bmsKKzM5Nzg5IDBhZWYzNTEyMjNkYWVkOTg0YzM4NWQyNThkNmE2ZWY5NWNkNzY0YmYgbGVnYWN5LXRydW5rCiszOTc5MCA2NmI5MDc1ZDE0MmI4ZWM1M2I0NmEzNGZlZDk4ZDc2YTQ3YzE2YTNhIGxlZ2FjeS10cnVuaworMzk3OTEgMTQ0YjUyNTM1NDM0ZmQzNWUxOGQ3OTgxYzcxZDhlNjNiMmUzOTE0OSBsZWdhY3ktdHJ1bmsKKzM5NzkyIDg5M2JlOTRjODg5MTgyYTkwOTFiNzkyMGFkYjRlM2QxZDM3NzI0N2UgbGVnYWN5LXRydW5rCiszOTc5MyBlZmU2MDczMGExZWVhYjZkMjYyMmEwZjJhODVkNjZmYmRjZjdmOWI2IGxlZ2FjeS10cnVuaworMzk3OTQgOTVkMGE4NTdhZTUxZmExNWE1OWVjMDE5Y2VmOTgwMzNmMzJiYTc1NCBsZWdhY3ktdHJ1bmsKKzM5Nzk1IDE5ZDc5NmJkNzQwZjRhMDk3NDk2NjIxYzJhODM5MTBhNTcyYTAwODAgbGVnYWN5LXRydW5rCiszOTc5NiA3MmNiMDQxY2NkZTNhYzdiZWIyOTZkNDliZmMyMDNhNWU0M2FmN2QxIGxlZ2FjeS10cnVuaworMzk3OTcgMzFkMzZkZDU5NTljZTlkOWU2MjRiZmEyMmFlMmQ1MGQ2ZDJlYmE1MyBsZWdhY3ktdHJ1bmsKKzM5Nzk4IGFhZTQxMTM1MmZiZDZhNGMzMGI5NzQ1YTcyM2JmNzg2OGJjMGZhZDUgbGVnYWN5LXRydW5rCiszOTc5OSBiMWEwZTFhMmIyOGZhY2JiZWVhN2JiNzk4NmQwOGQwOTU0OTUzMTcxIGxlZ2FjeS10cnVuaworMzk4MDAgYzZkYmY4OGU0YjE0Yjg2ZDAyMTZmNGM3NzVjNTI0OGUzZjQzZDUxNCBsZWdhY3ktdHJ1bmsKKzM5ODAxIGRjYTcwZjRlYzc3YjY3NDI5NDgwMzA2OWZhYjUwYjcxZjc4MDA3OTQgbGVnYWN5LXRydW5rCiszOTgwMiBhMGJiMGZkNWUxNDNhOWM4NDg2OTAwOGEyMTc0MDU4NDEzODQzYjEyIGxlZ2FjeS10cnVuaworMzk4MDMgMTY2MWU3M2MwN2FiYTM5OTk5OGQ4MzBiNTc4Nzk3NTRiY2JmMTAyMCBsZWdhY3ktdHJ1bmsKKzM5ODA0IGRiOWUyZGVhNGMxMTNkNmJlOWZiYzcxODBhMGY5ODJiODkyOTUwODIgcmVsZWFzZTI0LW1haW50CiszOTgwNSAxOWEzN2E5ZjRlZjk0YjI2YzE2NzAyOTRlZGI3NzUxZWJiYTliZWFiIGxlZ2FjeS10cnVuaworMzk4MDYgZjdiMGNiZWE5MDViNWIzNDhkMTBiNzI3OTUyZDJhZjNjYzkwZWUzYyBsZWdhY3ktdHJ1bmsKKzM5ODA3IDFhYzllZDFiNWEwM2MxOTM1M2Q3NmJiN2Q4N2Q0YmI0YjFmZjliNjcgbGVnYWN5LXRydW5rCiszOTgwOCBiOGIxM2IxZmZlNzU3MWI0YWY1ZjViYzhiNzlhZjEzZDAyODIzZTJlIGxlZ2FjeS10cnVuaworMzk4MDkgOTE0ZWMwYWZhNTFjMjE1YjEwODc5ODhiMjNjOTI3N2I0NTliMzQ0ZCBsZWdhY3ktdHJ1bmsKKzM5ODEwIDM5ZjM2MzBhNzEyNGQ5MGY3YjU3OWY0OTYyNDY2MmIzOGY1NGM3OWEgbGVnYWN5LXRydW5rCiszOTgxMSBkYmM5ODhiZWE1NWQ2ZjZjNTE0NTY1MWRiNmM1OTdiYWRkZDZhODIxIGxlZ2FjeS10cnVuaworMzk4MTIgZmQ2MzAwNDJhYWQ0M2RlY2Y1MGFmNjQyMjRiNmEwN2QxMzRjMGJlMSBsZWdhY3ktdHJ1bmsKKzM5ODEzIDM3NzgwODNmZTJjODYyYzQwZDkzZWQyM2M2NzExYjM0MjMxNmMwZWUgbGVnYWN5LXRydW5rCiszOTgxNCA4NTdmNjhmYmEyNzU0NGRhY2EzMjhiMDlkM2NjZGI2N2MzYTcxZTJmIGxlZ2FjeS10cnVuaworMzk4MTUgODQyY2FhMjQ1OTE3ZDg4NWNkOWMzNjBmMTBjOGRkMTM4MDI3ODlhZCBsZWdhY3ktdHJ1bmsKKzM5ODE2IDRiZjY0NTljOGUzYmI5NjQzMzI2ZDVhYjlkNjE3MjQzODdmYjkzNGIgbGVnYWN5LXRydW5rCiszOTgxNyBlMTdhMzA3YjEyMTY5NDA5MDVkYjNmMWNjMzMyOTBhN2QwOTZiYjAyIGxlZ2FjeS10cnVuaworMzk4MTggOGRhZWZlODQ5OTQ5MzRkZTNlNjU4NGZjZmYzMDUzOGQwNWYzMWM4ZiBsZWdhY3ktdHJ1bmsKKzQxMzM4IDE5MzMwNWM5ZGJkYjM1NDlhZDU5NjNmNWY4MmRhNzQ3YTYyYzU1NGEgbGVnYWN5LXRydW5rCis0MTM0MCA3NmE2ZTkwODYyNGQ3YzVjZGI3ZTc3Zjc3YWJjN2ZlNjRjZDY3ZDk1IGxlZ2FjeS10cnVuaworNDEzNDEgNTJmNjU4OTg4NzRhNjg4ODViMzI3YjdmN2Q4NjRjNjljM2RmNTJjNiByZWxlYXNlMjQtbWFpbnQKKzQxMzQyIDQ0ZmUxNTcyNTViYzRjZDhhMDVmN2YwNjAwYzhmZTI3OGYyZTAzYWMgbGVnYWN5LXRydW5rCis0MTM0NiBkZmIxMTM5ZWRjNTVhMWIwZjdmMjcyZWQ3NzM1Y2Y1NGE0MDA0NmRmIGxlZ2FjeS10cnVuaworNDEzNDcgYzJhOThiYTM3MWM4YTkwYzBiZGMxYTQyYzcyNzM5OTIyODgyNzlhZSBsZWdhY3ktdHJ1bmsKKzQxMzUyIDg4NTIzMDE3NDE0YzE4NzNkY2YzYzJjMTU4MTU5ZjlkYzY2ZmJmMTkgbGVnYWN5LXRydW5rCis0MTM1MyAzOWIxZTc0YmExN2M1NTQ3MTg5NmUxYTQ0MDQ1MTI2OTg2MjBjZTgyIGxlZ2FjeS10cnVuaworNDEzNTQgOWIwZGQxZjUzYWUyMTg2ZDlmMjhlZjIwODVkYTJkNmJjMDJjYTczMiByZWxlYXNlMjQtbWFpbnQKKzQxMzU0IGFiYmZlOTE3ODczMTliN2Y5NDU0M2Y0MGVhN2JhMTVkOTlhZDZlMGIgbGVnYWN5LXRydW5rCis0MTM1NSAyZTI1ZTk4MzIzYTdmNjUxZmE5MjVjNTQwNzRjZGE5MjA4OGJlNWQ2IGxlZ2FjeS10cnVuaworNDEzNTYgMTNkZWVjNTI4MWVmY2IyMGE1ZDQyNDMwMGFhNDhhMGU0MTY0YzYzYiByZWxlYXNlMjQtbWFpbnQKKzQxMzU3IGViOWEzOWMxYTc4YmI3M2VkZjNmMWUzZDk0ZjRhMDUxY2NlZTgxZTUgbGVnYWN5LXRydW5rCis0MTM1OCBhMDAwZjMyMmRkMDVkYmZhYmM1ZDY2MWYzNTVlZTc2OTMyNWIxNWZiIGxlZ2FjeS10cnVuaworNDEzNTkgZWQyNDdmNmU2ZjA3NTRkZjgwY2NlNTkzYzllMTg3ZDU2OGYyNmUxMCByZWxlYXNlMjQtbWFpbnQKKzQxMzYwIDIwYmI3ZmYxNjk1Mjc3YmNjZGE2ZTUwM2FmMTY0MjMwNzUyNzg1N2MgbGVnYWN5LXRydW5rCis0MTM2MSBhNDk3ZTEwYjIzZTQ3MGNjNzZiMzZmMjdlZTcwNGFlNTA4ODJjYzJjIHJlbGVhc2UyNC1tYWludAorNDEzNjYgNjkwMzRhMDhlNWEzYTM0ZjlmOWU3MmE4NGE3NzQwNzc2NGRjNjBhOSBsZWdhY3ktdHJ1bmsKKzQxMzY3IGI2NTJmNTM1MjAxZDZmY2RmNzRiMDg4OTM0ZTMwNDQyNDgyMDI3MzcgbGVnYWN5LXRydW5rCis0MTM2OCA2Y2QxMTA3NDNiZDIwODlmMGQ2NTNhYTk2ZjI5ZDRkNTdhZDNhY2FiIHJlbGVhc2UyNC1tYWludAorNDEzNjkgOGIwMmQ4YTVlNzA3ZjI2ZjAyNDJmOTY3YzNmZjE1MDVkMWFlY2Y1ZiBsZWdhY3ktdHJ1bmsKKzQxMzcwIGY5ZTUwZmY5NmZmODVlYmY3NmI0Y2Q2YWM4YjM2NzEyMWQ1ZTA2ZTMgcmVsZWFzZTI0LW1haW50Cis0MTM3MSBjYzE3YTU4MjUxOGFlZmQ0MmEzMzc2MGU5NThmZDAzNDE3NjBkYjI3IGxlZ2FjeS10cnVuaworNDEzNzIgMGVjYmZmYmFkYzAwNTY4MjNlNTkzZjIxN2FmZjM1MjRmZDg0MjVjYyBsZWdhY3ktdHJ1bmsKKzQxMzczIGFiM2QxZTZhMDIzNzI3MGUyYjAxNTI3NmIyMzdkOWYzMjI0ZThiYWYgbGVnYWN5LXRydW5rCis0MTM3NCBiZmZhZTJmODEyZjc0YWVkNzViMDIwYTIzY2ZiMmE0OGQ1YmRhMzkyIGxlZ2FjeS10cnVuaworNDEzNzUgZjNjYWY4MGJkNjZkMjFiYTgyOTRhMDY0OTMyNDM0YzliMTI1MGM4ZCByZWxlYXNlMjQtbWFpbnQKKzQxMzc2IDAyOWI2YzVmMjU4ZTVhYjQ2YmUyZDIwNzk5OTY3MzY4YzMwMjY5ZWEgbGVnYWN5LXRydW5rCis0MTM4NSA2NDZiYTc2MTE1YWNiNDM1MGNjMzBmNWVjNWEwZDc4YWQ2N2FkYTU0IHJlbGVhc2UyNC1tYWludAorNDEzODYgN2JmNDg0MDBmMjRhOGU3ZDkxNDRjZjJlNmRkZmNjMTE3MDgxMjA1MSBsZWdhY3ktdHJ1bmsKKzQxMzg3IDliMWVmYjBlZDYzNTkyZGUxMmQ1YmVmYzY3NDViNjI5YWMxNWRiN2UgcmVsZWFzZTI0LW1haW50Cis0MTM4OCA0MThhNjFlYWQxMWI4NWRlYmNlM2ZhNTFhMmRjZjI0ZjJhYTA5ZTIxIGxlZ2FjeS10cnVuaworNDEzODkgMjBhYTFkNWIzYjA4MzI3ZWE2NDNhMmU3OTMxODNiMTNiNjIwZWUxOCBsZWdhY3ktdHJ1bmsKKzQxMzkwIGZkMDg5MTgzOTRmOWMzYjExMTkyZjY1OGZhNDZiZWYxNjYwNjRjOTYgcmVsZWFzZTI0LW1haW50Cis0MTM5OSBhODY0OTg2OWNiNjBiYmVhMDk1ZGZmNTY0MWFjZGRkZDU5NWU3NTIyIGxlZ2FjeS10cnVuaworNDE0MDAgNDliYWY4YjA0NjgxMjU1YWY0NWMwMTk2ZTE0MDk5ZTU3YzY0NWU4ZCBsZWdhY3ktdHJ1bmsKKzQxNDAzIGRlMDkwYmY2N2E1OTg5ZGJmZjI1ZGFhNTVkZWNhMWViODVjNThlYTQgbGVnYWN5LXRydW5rCis0MTQwNCBlY2Y5ZjRlZDEwOWU1Y2QwMGRlYTYyMmIzNDQ3Nzg3ZWM3Njc0ODYzIGxlZ2FjeS10cnVuaworNDE0MDUgNmUyYjI4MjQzNGQ0OTUxMDk0NGZjZDE0MjkyYzk4NGJiMTc3OWJlMiBsZWdhY3ktdHJ1bmsKKzQxNDA2IGY4NWRjMzFmMWYzZTRmZTBmODY0ODVkM2RiY2JiYWFmZjVmMzRhMjIgbGVnYWN5LXRydW5rCis0MTQwNyBkODEyZTM5YWU5MDdhN2Q1OTkxZjg2NWZlYTcwMmM5MzY2MGFkZTczIGxlZ2FjeS10cnVuaworNDE0MTIgY2FlYTBjYzA5YTQyZjkxYzkxNjZjNDc5NzZkN2MxYzIxOWZjYTI5OSBsZWdhY3ktdHJ1bmsKKzQxNDEzIDFkMTk1N2Y1NTYyNjc5MGRlYzhlZDBjMWNiODMxYjdiMjFkNGY3N2EgcmVsZWFzZTI0LW1haW50Cis0MTQxNCBmYTFkNTY5NDczMDEzMDdmYWE2NzA4NmU0MjkzY2MzM2UwZmEzYTRiIGxlZ2FjeS10cnVuaworNDE0MTUgZjBlMzM1NTIzNWE1ZTUyNWM4MmZlZTY3MmQ2MWE1MTllMWU4ZTkzYiByZWxlYXNlMjQtbWFpbnQKKzQxNDE2IDVmNzFhNTAyODlhMjU1NmJhZDdjZGFkMDc5OGJiZGVmNDlmZTlmNjkgbGVnYWN5LXRydW5rCis0MTQxNyBhZWY4NTI2ZmM5YmJhNmY5ZDNlYzBlOTI1YmNiMDQ4ZDczODRiNjA5IHJlbGVhc2UyNC1tYWludAorNDE0MTggZjZkOGIwZGUxMzRhMjAxMzhlNDk1ZmIyZGUwZmIyZGQ3NzU3ZDQyNiBsZWdhY3ktdHJ1bmsKKzQxNDE5IDQxM2M2OGIzMTQ4NzFlYTQxYTk1NTM1OGJkNWQwMWUzMGZiY2NiNjIgbGVnYWN5LXRydW5rCis0MTQyMiBlZTNlMGVlMWVkY2E3ZDM0ODJjOTE5YjA3MjliNTAwYWY3OTc4MWZhIGxlZ2FjeS10cnVuaworNDE0MjMgMmE5MmQ1Y2UwYzBkOGM0OGY3Y2ExZGMwNTE1MjYxZGYxZWJlNzU5MSBsZWdhY3ktdHJ1bmsKKzQxNDI0IDdmMzdjY2Y2OThjZjViMDE0NjMyZDY4YzE2ZGE5ZjI2MmEzMjAwNWMgcmVsZWFzZTI0LW1haW50Cis0MTQyNSA2ODg4ZGRmMWVhOWQ1M2Q0NGZhYTU5MTc0ZWVlMDIxNThkMjNiZjNlIElETEUtc3ludGF4LWJyYW5jaAorNDE0MjYgNDI5ZjUzN2NmNmQ2YjdlNTkyNzk2ZjE0MjUxNDEyYmEzYmYxZTdlMCBsZWdhY3ktdHJ1bmsKKzQxNDI3IDQ0NjI4NzFhNmRjZWMwMTNkYjI4N2JmZTA4NTAxMDhkYzYzZGZiOTcgbGVnYWN5LXRydW5rCis0MTQyOCA4N2UyMjEwZTA3ZjQ5YWQ1ZDUwZTViZTljZmQ2NGQyMGZkZDBlMDg1IGxlZ2FjeS10cnVuaworNDE0MjkgNmEwMThkOGM1OWM5MWUwNDZjYjY3MWQ0NjU5ODI5NjY4NTllNjAzYyBsZWdhY3ktdHJ1bmsKKzQxNDMwIDYwMTVkZjEzNmIwMGQxYmNjYzQxMmNkYmUyMDg4YjFjMDQ1NTZlNDMgbGVnYWN5LXRydW5rCis0MTQzMiA5Yjg4NWM5MzQxNDRiNzA1NWUzNmJkNjE3YTBlMGFjOGUxMjA3ZDE0IGxlZ2FjeS10cnVuaworNDE0MzMgM2U2MzRlNDFiNmVjM2M3OTcwMWEyYWNmMmJiMTZiZmMzNmQwYjY2MCBsZWdhY3ktdHJ1bmsKKzQxNDM0IDY4Njc5OTVhMThhN2RhOTAwZTc5ZDIyMDc2NWZkMThhYTVjZjI1YmEgbGVnYWN5LXRydW5rCis0MTQzNSA3OWYyY2UzMjAxOTI1YzlkNjNlY2IxNjQ0ODg3NmY1ZGZhYmVmYTlkIGxlZ2FjeS10cnVuaworNDE0MzYgZGJjOTNlZTUzZTJmZWZmY2JmYjllZWU0MTU3Nzg0YjNlOTM1MDZkYiBsZWdhY3ktdHJ1bmsKKzQxNDM3IDYwMGJiYmE1NmY5YmFiMzgyYmQ4MDVjNTQwNTc4NTdhYWVmMDkzM2YgbGVnYWN5LXRydW5rCis0MTQzOCA5ZjczZGMwOTUzZDIwMjA0YTU0OWM4Yzc4MWE0YzQ4ODRiMjIyY2VhIGxlZ2FjeS10cnVuaworNDE0NDAgZjQ4NDJmNDI3MDBiZGI3ZjczZGI4OGM3YWY2MzNiMTE3ZjRhODkzYiBsZWdhY3ktdHJ1bmsKKzQxNDQxIDM3ZGE5NjlhZDExNmM1YmE5YjczNTVjMjNmM2JkZmZhMDcwZmVmMDggbGVnYWN5LXRydW5rCis0MTQ0MiA5MDAzODM2YTAzNmYxMzM1MmI1YmFiMWIyZWM3MzcyYTIwZDhlMjRkIGxlZ2FjeS10cnVuaworNDE0NDMgZjUzMWMwNWNkMjQwODY2ZTQ2MGVlZWNkZDEwMDFiODZlZWZkYmU1NiBsZWdhY3ktdHJ1bmsKKzQxNDQ0IDk0NzY1NjYzMGIxMjhkZmU4ZWUyMDdjNzZkNmZmNDRhMjE1NmExZTIgamltLWRvY3Rlc3QKKzQxNDQ1IDNhY2I2YjM0MTA3NWM5YTZlODM0NjI2ZGQ3ODkxYjBiYjk0ZTdhYjIgamltLWRvY3Rlc3QKKzQxNDQ2IDRhYzNmYTE1ODkyNzkwMjMwN2VlYzJmOTA5MzQ3NjY0MTNlNGJmN2QgbGVnYWN5LXRydW5rCis0MTQ0NyA1ODNjZTljMGM2NjRlYmJhOThkMmI3MWEzMDUzMzI4YjU0OGQ2NjkzIGxlZ2FjeS10cnVuaworNDE0NDggNzZlZDdmZGM5ZDg1YmRmNTgyOTEyMjRjMDU5MmRmMmMxMDI4YjZmYSBsZWdhY3ktdHJ1bmsKKzQxNDQ5IDQ0ZDYzZWVkZmFjYWYwNDcwZjMyNTQyNjllMWE5YjM1ZGI4YzA0YWMgbGVnYWN5LXRydW5rCis0MTQ1MCAwODZjYWNjZmZmMGU3NjZhYzNjNzU5OGMwZWU5ZTM0NTFlYzI4YWRlIGxlZ2FjeS10cnVuaworNDE0NTEgZjMzNGVmZTc2ZjZhNTQ2MjAyNWJmOTIyOWYyZTIxNzEyZmQ4NDViNCBsZWdhY3ktdHJ1bmsKKzQxNDUyIDZkOGNlNTU3MGNiNzAyMGNkY2JjMDMwOTcxYjZkMTg0NTI1OGI0ZWUgamltLWRvY3Rlc3QKKzQxNDUzIDQwZjNkNzliMjEyNTBhNDE1Zjc5OWQyNDExMmZlZmRkMjFiYzQ2MzEgbGVnYWN5LXRydW5rCis0MTQ1NCA5NGE0MDlkYTRiZDQwYjczMjZmNzFhYTZkODY1NDUzZjU1NmE5NTViIGxlZ2FjeS10cnVuaworNDE0NTUgMWY5ZDRhYzM1MDEwMjgyMzEyYjlhZjM4ODkzOWZlNTBlZmMzOGViMSBsZWdhY3ktdHJ1bmsKKzQxNDU2IDBkMWUyZTczYzNlYzAzMzc3YTkxZTZmMWM5YzRmYzU2MDY3NDZmMTggbGVnYWN5LXRydW5rCis0MTQ1NyAyOTQyMGJkM2I1Y2JiMThhNGU4OTIwNjRjODEwM2YwZWZiYjFhMDBiIGxlZ2FjeS10cnVuaworNDE0NjEgMzIzNmI1ZmIxZmI3MGYzMDk3MjMyOWY5YWI2ZjcxNTM4ODUxNDY5NCBsZWdhY3ktdHJ1bmsKKzQxNDYyIGU3MTY0ODNjYjNmOTE0Y2IxOTZmYWQ2MjZiNGMxNjhhNWQ0ZTdjZDUgbGVnYWN5LXRydW5rCis0MTQ2MyAwMzg2N2ZjNmZkODA3OGNjM2I0YjU2OWFjMzcyYzMwZjk1ZTZmY2MzIHJlbGVhc2UyNC1tYWludAorNDE0NjQgNWI4MjEyMGNiNDlkNjEyMmRkMGFhNmUzYmZmNDhhMmYxNjE3OTZhNyBsZWdhY3ktdHJ1bmsKKzQxNDY1IGY5OWQ2Y2I4OGY2ZjIwOGJlOTYxZjY1OGFlYzkxMTAyOTQ3NTgyZDggcmVsZWFzZTI0LW1haW50Cis0MTQ2NiAzOTU2ZDYyMGFmMDliYTAwZDA2N2VkMTAxYzMzODkwZTliODgxZGFjIGxlZ2FjeS10cnVuaworNDE0NjcgNDc4OWU3NWE2ZmU3ZDA2MjA2MmQyMmE1OTNiZDI4ODIxNTdjMDYxYiByZWxlYXNlMjQtbWFpbnQKKzQxNDY4IGUyNDczYzRmMmVlMGQ3ZmQ3ZWRjMmJjZTEyZDE2NzY3MTllNjU4NmMgbGVnYWN5LXRydW5rCis0MTQ3OCBmNDE0ZmYyODc4MjNiNjBmZjMyNzIyMWZlNTQ1MWVhMWNjOWE2MmEwIGxlZ2FjeS10cnVuaworNDE0ODAgOGZkNDZiNjYwZTY2OTUwYjY5YjZhNDlkNmUzNTdiMWY2MTA1MThhZSBsZWdhY3ktdHJ1bmsKKzQxNDgxIDcxZWE2YjdmNThjZTM4ZDIyNTA1MDlhN2M1NGFkYzdmYzdhZTFkMDcgbGVnYWN5LXRydW5rCis0MTQ4NCA4MjU2NTViZmRmMjA2NDUwMGVhZjA2MmY3ZWYyNWFkZmQxOTY0YjkwIGxlZ2FjeS10cnVuaworNDE0ODUgMDQ0NTQyZDcwNWMyY2FlZWRhOWZiNTc3NGZiNDE1ZTRkMzFiNzMyMCBsZWdhY3ktdHJ1bmsKKzQxNDg2IGZlNGM2MjdiMjA5NjVlOTA1OTY0M2VjZjliOTcxNzhmMjY5MDM1YWUgbGVnYWN5LXRydW5rCis0MTQ4NyBlNGE1YTg0ZTVlYmIxMzk3M2RkMzUwZmIwMWVmMjgzODAxYmY0NWE4IHJlbGVhc2UyNC1tYWludAorNDE0ODggY2U5YmEwMWViN2VkNWZmZDEzYmUyMWEzNTc2NzRlYzhkYWY2ZDcwMiBsZWdhY3ktdHJ1bmsKKzQxNDg5IGQ3MmRiODJhNzBjZDdhZGVjYzZiNTAzNDUxY2Q2MDQ5YmUzNjY4NDkgbGVnYWN5LXRydW5rCis0MTQ5MCBkZjU5Mjg1NThhNTdiNDBmZWNkNjkxYjg2ZmFmOGZhMjgzMzZhZDIxIHJlbGVhc2UyNC1tYWludAorNDE0OTEgZTliZTllNjE4OGY0ZDRlMzI2ZDdjMTRlYWI0ZTcyZTBlNzM3NTc1ZCBsZWdhY3ktdHJ1bmsKKzQxNDkyIDJiMGNmNTBlNzdlYzk4YTE1NGU3NWY4Zjk3Y2MwODQ3NTNiYjdkMTEgbGVnYWN5LXRydW5rCis0MTQ5MyA5ZmQwY2QzNjJhZmZjNzA5MmZkNmQxNGUyYzFkOGU3N2RkMTNhMTJmIGxlZ2FjeS10cnVuaworNDE0OTQgODAwZjQ4YTE0YThhMzgxMTJmYTExMDM4NjczY2Q5MWMxNTRmY2VkOSBsZWdhY3ktdHJ1bmsKKzQxNDk1IGE2YmY3Y2FlZDEzNTcwNTY0ZTJjNmU1ZWVmYzdjYzZmMDhhMDQyODMgbGVnYWN5LXRydW5rCis0MTQ5NiAxZGZkNWQ2MmQ3NjRlZGVjNWM3MmIyNmY3ZjFlNTNiYjBiODVlZTljIGxlZ2FjeS10cnVuaworNDE0OTcgZjkzNzM4N2Y0ZGYxMjFmOGYzZDFmOTBlOGJjMDcwOGU2Njg5NWI4YSBsZWdhY3ktdHJ1bmsKKzQxNDk4IDRkMWQyNzcxNzhhNTdhZDNjNTM3MmI1ZGZmY2MwYzZiMjgwOTJhODAgbGVnYWN5LXRydW5rCis0MTQ5OSA0ZTVlMTZhM2JlMGQzYzM4ODVkOTI3OTVkZWQ5YzJjNjVlMzVjYTcyIGxlZ2FjeS10cnVuaworNDE1MDAgMTFhMWJjMzUyOTE3YTNlZGYxYWFlMmNhNTJkMDE2NzNjNTIxYzgyMyBsZWdhY3ktdHJ1bmsKKzQxNTAxIDhmZWFlZDA3ZmNjZDcxNDUyNmJiYTg5MzAzNWNlYmM2Nzc3YzJkNWUgcmVsZWFzZTI0LW1haW50Cis0MTUwMiBjZjE1NzE0YzljOGFhMzUzZjZkOTIzNzQzN2JkZmRjZDlmNzRjODVmIGxlZ2FjeS10cnVuaworNDE1MDMgNjhiMzk4YTg1YTM4NzRiZDQyZTZlOGM4MGRjMzE2NWM2ZTQwYmMwZCBsZWdhY3ktdHJ1bmsKKzQxNTA0IDEyZjIyMmI2MTdiODlmNmNlMTAzMzJlY2YwYTU5YTUzZTM2MTE2NzAgbGVnYWN5LXRydW5rCis0MTUwNSAzZmQ5N2RlMGE3OTA4M2U0ODgxMWViNTdkMmExNjNiZjg3MDFhNTFmIGxlZ2FjeS10cnVuaworNDE1MDYgZjEzZmMwYzlhNmIzYTU2ODQ2YmI1YTJlMGQxOTJlMjM0YmE1NmFmNyByZWxlYXNlMjQtbWFpbnQKKzQxNTA3IDUxZjRlZTRmOTdlYTFhYmY5NzJmODNlOWY0MDM4NmRiMmJiMjhmMjQgbGVnYWN5LXRydW5rCis0MTUwOCAxZmFhMzA2OTkzYzA1YWY1MTg4ZDU4MjFmMThlZmY2NmZmNGNlMzJkIHJlbGVhc2UyNC1tYWludAorNDE1MDkgOWZjNmJmNjU1ZjljYjAyOTRiN2Q2Y2FjMDVmODhiNWZlNzRjNWI4MSBsZWdhY3ktdHJ1bmsKKzQxNTEwIGQ0YTZkMjU5MWNmNThhMTE4ZjA1YTAwZjExYzJjNGU3ZTE3MjhhY2EgcmVsZWFzZTI0LW1haW50Cis0MTUxMSBlMTEzMjMxODljODQ5MTJlMGVlMjZlOTEzMzFjOWNkNTMyOTM2YmJmIGxlZ2FjeS10cnVuaworNDE1MTIgNzRlNTYxYTdlODJjYWQ3YWUzOGQ4NWMzMjdlNzZkY2ZkNjlkNjdlMCBsZWdhY3ktdHJ1bmsKKzQxNTEzIGM5NDI2ODI3N2RlOTM4MzY4NWJlODYzY2NlMDE4YTJhNzZkZDcxMTcgcmVsZWFzZTI0LW1haW50Cis0MTUxNCAxZjc3NDUyOTJlNTBlZDg0ZDM4ZTI3YjZkNTA3OThjMjJlMGNiNTZkIGxlZ2FjeS10cnVuaworNDE1MTUgZjI2MDVmNWE2ZDQ2ZjgzYTc5ZGVlMDlmYmIyYThkZDA2YzliMDBhMCByZWxlYXNlMjQtbWFpbnQKKzQxNTE3IGMyYmJhNWY0NmFiNmVhZTE3N2E2ZTQ5ODU2Y2YyMTI1ZThhNjJmODYgbGVnYWN5LXRydW5rCis0MTUxOCBmYWIzNzEzNmRkNmRhNTNhOGEwOWEyOTkwYTkxNTFlMzA1MTYxMmQ1IHJlbGVhc2UyNC1tYWludAorNDE1MTkgOWY2ODUyZmYzZDE5MWU0OGE0YzEwMTFkYzRlMmI3NDFlZjI3MzM2YyBsZWdhY3ktdHJ1bmsKKzQxNTIwIDFlMWMzZjU1MzI4YTA4NjE0MDQ3ZTJiNzAxMjE4YmMxNWFiMGRiMjkgcmVsZWFzZTI0LW1haW50Cis0MTUyMSA3MmQ1YzYwZmE0NWQ5ZWRjMzk1YmQ5YjdkODFhODAyODJjNDA5MmM2IGxlZ2FjeS10cnVuaworNDE1MjIgOWU2MzBjYzFkMzA5MGI5ZWMyMGU1ZmQ3N2IwZWJhMGEyOTQwM2Q3YSByZWxlYXNlMjQtbWFpbnQKKzQxNTIzIGNmMmI0YzhhZDFhZDRlNDZmNmYyZTZmYTVjNjc4YWY2YThhZTIxN2QgbGVnYWN5LXRydW5rCis0MTUyNCBiN2M2YzQ2MWE4MDgxODBiMGJiZmI3MTQxMjM1MDkyMDYwYzE3OTc1IGxlZ2FjeS10cnVuaworNDE1MjUgZTBkZGVhODgxZjRhYmY3MWM0ZWNhNGU4MTMzNzBiMjA5YmY5YjBiYiByZWxlYXNlMjQtbWFpbnQKKzQxNTI2IDFmZGViYmQ2MGQ3ZGRkYTBlZTBjYTNjN2NmM2FiM2Q0OWVlODVjMGIgbGVnYWN5LXRydW5rCis0MTUyNyA3Yzg4MDBiODFjNTBjOWY2NTlhY2Q3NDFhODhmZWFhZDQ4YjQ3OTFjIGxlZ2FjeS10cnVuaworNDE1MjggMjE1MGFmODRhMTg1ZTkwOGQ1ZWM1OGZhNGE1YmI1N2NkYzRjZWQ1NiByZWxlYXNlMjQtbWFpbnQKKzQxNTI5IGU2ZDMxY2JmMmVkMzhjNWMxYzI5YzZmNTUwMmI0MjliM2UwMGE5MTAgbGVnYWN5LXRydW5rCis0MTUzMCBiYjgwYjhmMzkzZWZmMWQyZTE5ZGRjMTllNDBmNWY1MjAwMTA3ZGJjIGxlZ2FjeS10cnVuaworNDE1MzEgNzkzNzRlYjZkYjUxNmNjYTlhODRiZGY5NmI0N2ExNzg1ODg4ZmQxNyBsZWdhY3ktdHJ1bmsKKzQxNTMyIGNiMWZmMmE4NWUzZGRkMjI4MTU4NjQ5OTJiMWU3MTc5ZjE3ZjRjOTkgbGVnYWN5LXRydW5rCis0MTUzMyAwMzNiYjRkYjVhZThjMWE2MjRiOGIxZTM4MWQxYjZiYWVkYjM2ZDExIGxlZ2FjeS10cnVuaworNDE1MzQgNmQ2YzdjZDQ1Mjk4OWU1ODE4YTBiYTBlYmM3YTdhMzA2MWRmZjc1NCBsZWdhY3ktdHJ1bmsKKzQxNTM1IDVjOGRjNWQyMThkOGQ3MGYyZjAzYzg5ODAzNzYwOWQxMTNmYzc5NGMgbGVnYWN5LXRydW5rCis0MTUzNiBiNDZkYzZkMTA5ODY3NTQzMWRhMGFmZDEyY2NlOTgwNzVlMjJmOGQ2IGxlZ2FjeS10cnVuaworNDE1MzcgZTgwYTFhZjY3NjIzZjBmNTcyOWMxY2RhYzNhNzFmYTdhMDZlZWZjOSBsZWdhY3ktdHJ1bmsKKzQxNTM4IGIyZWIxNTg5YzIyYjUxMzdlZTEzMWRmYTI4MDdmN2ZkNTIyYTk2Y2EgbGVnYWN5LXRydW5rCis0MTUzOSA0NTcyZmI0ZGZiYjNmMGZiNmFkNDU3MzI5NmQ3OGNiNjU4Nzk5ZWU3IGxlZ2FjeS10cnVuaworNDE1NDAgZWY2MDhiNThiZmQ4YWQ1YzEzZDk1ZWNhZWFhNTJkNTk3MGZlMzc5NyBsZWdhY3ktdHJ1bmsKKzQxNTQxIGY4MDU2MzI4ZjAxYTE2M2RjZDBlNTM3NjZkMmFjYWQ2MGJmOTgxM2UgbGVnYWN5LXRydW5rCis0MTU0MiBiOWM2ODJlZDkxMGNkYzYyYjM3Njk0Y2UwNzQwZTc3MjQ3NDIxZTljIHJlbGVhc2UyNC1tYWludAorNDE1NDMgOTA3OTcyMzMyMDhlZmUwZmExNjU4ZjU3MDg1N2M2NTcwNjkzOWNhNSBsZWdhY3ktdHJ1bmsKKzQxNTQ0IDQ4MzUzY2Y1MTM0MDNhMWRjNjEyNmIzNDVmM2NhZTdmMGY1NzgyYmQgcmVsZWFzZTI0LW1haW50Cis0MTU0NSBkN2Y2M2VkZTQ5NWU4NWUyNTUxZWI3MWFkNTk0M2MyMjRiZTA1NmIxIGxlZ2FjeS10cnVuaworNDE1NDYgZDdmNTJmYzQyMjQ1OGExNjU5N2FiZGQyYWRlMTljNzg4YzBiM2Y3MiByZWxlYXNlMjQtbWFpbnQKKzQxNTQ3IGQ5ZDhiMmUyZTYwYWRmMDZlZTA4YzM4ZTIwYzcxNWU2NmI4ODQzOTAgcmVsZWFzZTI0LW1haW50Cis0MTU0OCA3NWE3OWNjNGNmN2I2OTA2YzUyMDNiYmJlZThlODE0NDllYTIxYzhmIGxlZ2FjeS10cnVuaworNDE1NDkgOWZjN2RmZTg2Zjk2NjM2MDViZThmNjUwZmZmZjMxNDNkOTBjOTkzZiByZWxlYXNlMjQtbWFpbnQKKzQxNTUxIDFkOGVmZmRlODJmMWI0M2VmNWM4ZTU5NjE1N2RmNjI0OTY5YjZiMjUgbGVnYWN5LXRydW5rCis0MTU1MiBmY2E3MzM3NzEwZmQ3YjM0MTdlNDc0MzY3ZWNmODUwYmVkNTVkYmE5IGxlZ2FjeS10cnVuaworNDE1NTMgNjU4NDQ0YmFlYmEzN2VmYzhlNDk1YWY3YjFhMjMxNGRkNWMxNWJiMyBsZWdhY3ktdHJ1bmsKKzQxNTU0IDcyNTU1YTk2N2Q2YTg1Y2IzN2NjMWYxM2YxYjJiMTY5YzM1NTViYTggbGVnYWN5LXRydW5rCis0MTU1NSA3M2ViZGM2MmJmOGYwZDFjOTEzYjE2NGYzMTBhMTMwZTZmYmUwN2YwIGxlZ2FjeS10cnVuaworNDE1NTYgNGQwNjE2MmFkMjA5YzgyYTVkYmNlNDZiYjRlMTVhZjkxZmQ0ZTdmZSByZWxlYXNlMjQtbWFpbnQKKzQxNTU5IGQxNzJjYmE5NjRiNzgxYmEzZTdlYjQ2MGU4Zjc5ZWU4NTU1Mzk5MTAgbGVnYWN5LXRydW5rCis0MTU2MCA5ZDllNGVlNGRhODlmZWZjNGE2NzBiOTM0MDBhZDA3NDM2YmZhN2QxIGxlZ2FjeS10cnVuaworNDE1NjEgOWM0NzY1ZTlkYzkyNzIzNjUyNTUzNWQ1ZGE2ZGIwZTI0ZWE2ZmI5NyBsZWdhY3ktdHJ1bmsKKzQxNTYyIGY5OTcyMTM4MzZiYjI5MGQ2MWQ0ZDFmOWEzOGY3YmZkZGMzN2M3N2IgbGVnYWN5LXRydW5rCis0MTU2MyBhMWI2ZTY3ODRjYTU4MGU1YTMwNGE1NjMxNmQ1Y2UyOGNkYTUyZTQ0IGxlZ2FjeS10cnVuaworNDE1NjQgMTVjYzYwMTY3OTVlMDM0NjZjZTgxNWI0MDFkMzY4NWJhMzc2ZjQwMCBsZWdhY3ktdHJ1bmsKKzQxNTY1IDc0ZTlmZTA2OGM0ZGQyMTg0M2Y0Y2YxNWUxYzNkYzZhNDk1MDc5MGMgcmVsZWFzZTI0LW1haW50Cis0MTU2NiA0ZWFhNzJiYTE5YTJlNzI3YmQzMGI1MmQ0OWQ3MGMzODI5ZTEwYWY1IHJlbGVhc2UyNC1tYWludAorNDE1NjcgYTE3Y2NmYzM3MmU5OWE5ODQwNGZlYjM0MzM1MDFlMGE4NzFlNTQyYyBhc3Qtb2JqZWN0cworNDE1NjggZTY3NWZkMjk1YjRiOWUyNjUxMzFjNDRhYjM5M2ZjNzI4MDhmNTEzZiBhc3Qtb2JqZWN0cworNDE1NjkgY2NkOGEwZDI4OTUwOTY2ZDg1M2Y1ODYyYTY0ZTY3NWJmZWQ2OTQyMyBhc3Qtb2JqZWN0cworNDE1NzAgNWIwZjVkOTc2MzI1OGY5YWY4N2ZkMTY3OTUyZjFkYjliYjZjMjk4OSBsZWdhY3ktdHJ1bmsKKzQxNTcxIGE1ZDhmMDViYWY5OGNmMmM1MGQ4ZmY1NzM2ZjNhNzRlOTc0ZTUwY2IgYXN0LW9iamVjdHMKKzQxNTc0IDk2YTRlODA2NDI1ZTQxODU1ZTc1Y2Y1MzMyY2NjNGFiZTFhNTA3NTMgbGVnYWN5LXRydW5rCis0MTU3NSA0NjUwMTQ5MDI1MmRiN2FhYTMxZGM4Y2E3OThjOTgxOTE4NzQwMDMyIGFzdC1vYmplY3RzCis0MTU3NiBlYjY2ZWFlOWMyYzhjMzQyMDQyMDFmM2NiM2E1M2JkYmZiMmMzYzFkIGFzdC1vYmplY3RzCis0MTU3NyA4NTA3ZDU4MjUzNTRhZjc5NWJiNWI1ZmU2YTA0NjkxYjY4MzhkMzU0IGFzdC1vYmplY3RzCis0MTU3OCA5YzA0OTA5OTdlNjYyMDBjZTM4Y2ZlOTAwNzQwOWQ4NjRhZDI4Yzg4IGFzdC1vYmplY3RzCis0MTU3OSBhYmZlYWI3M2M4ZjE5Y2NlZjcyZTg0NDBhNTFkZTc3Mjc3MDRiZTAyIGxlZ2FjeS10cnVuaworNDE1ODAgODA1NjNkYzEzNDg3NWYwZmFhZmM4OTY1NTRlOWRlMWNlNWE0OTQyOCByZWxlYXNlMjQtbWFpbnQKKzQxNTgxIDZmNDYxMGY2OTJlMGVhYjg1NWJiZTgzZTJkYTQzYTczZmM0MDAzYTEgYXN0LW9iamVjdHMKKzQxNTgzIDdhYWEwOWYxYTA0NzI0MzMxYzNmNWY1NWE0NDI0YjNiMWUzNzgyMTEgYXN0LW9iamVjdHMKKzQxNTg0IGM1OTNmMzM2NDNkZGY1MGJlZDUwY2IxZWU2ZTA3ODUzYmI0NTlmYzIgYXN0LW9iamVjdHMKKzQxNTg1IDgxYzk0NGMzZDEzYTA1OGY1ZmY1YzdlY2VjNzFlNjQwMjAyZjk4ZTkgbGVnYWN5LXRydW5rCis0MTU4NiAxOTFiNTk5MDlkZWQ4ZDQwMzhjMzdhNjMxYWU4ZWU4ZDA2OGFmNDM4IGxlZ2FjeS10cnVuaworNDE1ODcgZTcyYmM1ZGFmZTE2ZWJlZWU5YWZiNTVlMTNkNWU3ZWJjMDA4OTAwZCBsZWdhY3ktdHJ1bmsKKzQxNTg4IDVkOTZhNTM2YmJmM2U2NWQyM2RhODAyZjM5OTY3NTRhYjY1NTVkODcgbGVnYWN5LXRydW5rCis0MTU4OSBhZDBmMDM4NWM2ZjM5OGZjNGRhZWI5YTIwYWYwNGZlMzQxMTg1MzZhIGxlZ2FjeS10cnVuaworNDE1OTAgY2YzMWIyYzhlODU0NjBmMGQ0ODQ5ZGVkMGQwNzQ0OGVjOGY4YWQ0OSBsZWdhY3ktdHJ1bmsKKzQxNTkxIDAzYWUwYjhlYjZjYmZiNGIxY2JhZWY1NDg0MjA4NGY3YTJhZDg4NzggbGVnYWN5LXRydW5rCis0MTU5MiBlMjZkYzMzNDg5MDliZjcwMDUyNzU0ODZlNjlkN2NiNzg2N2MzN2E1IGxlZ2FjeS10cnVuaworNDE1OTMgMTZlMDNjZmI5YTAyMmFlMWQzOTNiNmViN2NhMzkzZmVhMGVjZjhhOSBhc3Qtb2JqZWN0cworNDE1OTQgNzVkNTM2YjI0N2VhYTljMThiYmE1MDJmMjM1ZTM1MjBhZDkxMzM2NCBsZWdhY3ktdHJ1bmsKKzQxNTk1IGEwODdlN2JmNTBmMWRlMzc4NDQwMWFlZDA0NjAxYTQyNWRhOWJkYWQgYXN0LW9iamVjdHMKKzQxNTk2IDUwOTk1NmE1NGYzNzYxNzYxODZkNjM3NjNiNzg2N2ZhMGZiMTBmMDYgYXN0LW9iamVjdHMKKzQxNTk3IDNhNDIxNGJmYjZlNDRiMDA1ZWUxMmJkODE1ZmY1NzUxNmZmMWNhNGUgbGVnYWN5LXRydW5rCis0MTU5OCA1MjI1MTIyNGNiOTk1ZTFiZDc4OTZlZDk4MDg1ODY0MDA5ZjEzMmU2IGFzdC1hcmVuYQorNDE1OTkgNWJhOTIwZWVmMDE2MDQzODEzOTA1N2FjNzk2NmQwNDQzYjQwMjRjZCBsZWdhY3ktdHJ1bmsKKzQxNjAxIDhlZGExYTU4YTQ5MDM3MGEyNmYyMjQ5ZmVkZTRhNTcyMjUxOWZkMmQgbGVnYWN5LXRydW5rCis0MTYwMiBmMDIwYTdhZGU2YjVkNWVlYzdkYjQ4M2NmZTQ1MGNkZDQyYjYxZTBhIGxlZ2FjeS10cnVuaworNDE2MDMgMWUxMjg3YjZmNjUyNmY1OWNiM2YxZDA5NDBhNzkyMTYzMzE2NzM0NiBsZWdhY3ktdHJ1bmsKKzQxNjA0IGNiM2FlN2NlYTEwNjY2MjQ5YzNmMmEwMzFlZjRmYmIyYTNlZGMwZDcgYXN0LWFyZW5hCis0MTYwNSA1ZDAzMWJkMjIzMDdiY2I0NTg2Y2FjYTk1ZTA3ZjJmYTE3NWMzNWYwIGFzdC1hcmVuYQorNDE2MDYgM2MyMWQ1YmQxNWJlNjNmZjVmZGQzZDQ4ZGY2M2U4NjU5MDI0MWM2YSBhc3QtYXJlbmEKKzQxNjA3IGM4OTcwN2RhYTAxMTQ0OWM0MTU5YTNiNWZjZWEyYzUwZjIyNmMwODEgbGVnYWN5LXRydW5rCis0MTYwOCAwMWJkMTQ2ZGM1MjA3ZjdkN2MxN2JlMjJjMzRjN2FjYmViYmM2MzQ0IGFzdC1vYmplY3RzCis0MTYwOSBjODAwOWJkNjExNGZhNjViMDg2YmVjOGQxOGM4NjBmOTcxYzYxYzRhIGFzdC1hcmVuYQorNDE2MTAgZWU1NTQzMGU1Y2ZlNzc4ZGNjYTY2NzM2YzA3YzUyN2YxNDFjNTAwOCBhc3QtYXJlbmEKKzQxNjExIDU1MWQ1OGIzZDBjZDNjNzZjNTMwZmFmZGQ1ODYzODYzMDM1NjZlOWEgYXN0LWFyZW5hCis0MTYxMiBhYTVkOGU0YTAwYThhNDg2Mzg2NDVkODU0NDBhOGM4ZTY1NzI3YTFkIGFzdC1hcmVuYQorNDE2MTMgYzFlNjc4ZTdiYjEyODM5YmJhMzhmMWU4NzRlZTIxY2U0M2Y1YjRiOCBhc3QtYXJlbmEKKzQxNjE0IGEyOWRjNThhOTlmMzg5NGVhNDllM2RlMzk1YmM0MmI0ZWViNWZlNmIgYXN0LWFyZW5hCis0MTYxOCAxMWVlOTgyZjhjOGQwZTQ2MGY0ZjFhNGQwZGFmZmFjY2FmOWZkYTMzIGxlZ2FjeS10cnVuaworNDE2MTkgZDQ3YWJmOTc1OGM5ZmVhZTc1OTdjNmZjNGI4MmVlOWE5ZWI2MmVmMCBhc3QtYXJlbmEKKzQxNjIwIGM2Mjk4MTI1MDM5ZTRkZmIxMzg3YmIwOTExZWFiMDk3ZjJlYTlkMWIgYXN0LW9iamVjdHMKKzQxNjIxIGMwYzEyYWE3NTdlNzA5ZjA5Yzc2YmQzMTc2MjMwNzc3ZjJhNWUyZmQgbGVnYWN5LXRydW5rCis0MTYyMiBhYmUxYjMzMmVhYTAwZjcwNzQwOTMyYzFmNjk4NjBjNmE2MzdhOWM0IGFzdC1vYmplY3RzCis0MTYyMyBjMjM2ZWI2ZDk5MzQ1Mjc1ZjlkNGZkYWVhZjM3NmUwYWE5ZGRjYjYzIGFzdC1hcmVuYQorNDE2MjQgMWU2OWU2M2FlM2EwOGI0OWY5OGViNzVmMDEzYTkzOGFkOWFiZDVmYyBhc3QtYXJlbmEKKzQxNjI1IGFiOGFiOWJlNmY0YjQ3Y2EwYmIxYWU2OWE5ODEwYzQzYjRhZTk4ZTIgYXN0LW9iamVjdHMKKzQxNjI2IGEyOWM4OWI0ZThjNjMwOTVjNzJjMTRlMjVlZTgxOTM5OTkwYWVkMzcgbGVnYWN5LXRydW5rCis0MTYyNyA4YWQzMTlmM2E5MzVlYzVkNGFmYTBmMWM1ZTI4ZjljZTg2ODAyZDYwIGFzdC1hcmVuYQorNDE2MjggNTFlM2E4MzhhZWJlNzQwMWRjODYyOGM4MjE2NmMwMDJkOWNmMjAyZSBhc3QtYXJlbmEKKzQxNjI5IGFiNDMxYjMyNGE0YmQ0Mzk5NzMyMmZhZjlhZDNiNTYzODE3NTIyZjggbGVnYWN5LXRydW5rCis0MTYzMSBiNzdlZGNlZTg4OGNhMzQ1MWE3MDViYmYzNDFkMDk4ZDJkM2YwNWZiIGxlZ2FjeS10cnVuaworNDE2MzIgZGJjYzg5MTJhMjRkZWM0NGQ2ZWNhM2QwOTAyOWQ3YzM4Y2FhNmQ3MSBsZWdhY3ktdHJ1bmsKKzQxNjM2IDY0OWMzNDE4MGEwZjUwZTAwNTUwNGJkZjk0ZTA0MmZjOGFjNzAxNmEgbGVnYWN5LXRydW5rCis0MTYzNyA5NmQxZmEzNjk2NGQ0ZTExYTAyNzNiNDllNGYwNmRjMTJmYjk1N2M0IGxlZ2FjeS10cnVuaworNDE2MzggOTU0MTM2OWIwZGNhZjA0OGYxYmQ5ODZhMjhjOTZmZmVlZTM3ZjgwOCBsZWdhY3ktdHJ1bmsKKzQxNjQxIGNjMzI2MTU5NzEzNmM2MjU2ZjkxY2E3NjMwZGRjNmM5MzI5MDdmM2QgbGVnYWN5LXRydW5rCis0MTY0MiA2MzIxNjY5ZjJmNGQxMGM2YmNlNWJlMzVlOTFjMTdkOTkyMzU1MTYwIGxlZ2FjeS10cnVuaworNDE2NDMgMGViNmVmOTJjNTZlMjU3OTZiM2IyOWNkY2MxOTA0OGQxM2NlYjNiOSBsZWdhY3ktdHJ1bmsKKzQxNjQ0IDUyZjFkNTdmMjM3ZGJiZGM1ZDgzNzQ0ZGY2ZDEzZjQ2NGJkYTYxMzEgbGVnYWN5LXRydW5rCis0MTY0NiBlNGI2MjFlMWVkYTY2MjIwNTY1MGRkYzExNDZmNWFhNTE1NDU1MmNkIGxlZ2FjeS10cnVuaworNDE2NDcgMzJlN2ZlOWMyM2I5MWNiMmY1MTE4OGZiODI4NTFiODdhYTZiNzI2NiByZWxlYXNlMjQtbWFpbnQKKzQxNjQ3IGY2ZTczNGIxZjI2MWM1NDZkODBlOTg0OTAzODA1NGJmMDk3ZmY4NGUgbGVnYWN5LXRydW5rCis0MTY1MSA2ZjUwMmQzNWZjNzc1YmU2N2I4MzFkNGRiM2U1YTU5OTQxYTEwODYxIGxlZ2FjeS10cnVuaworNDE2NTIgMTAyMTQwYzNhMzYxNGRiM2U5MzI1YWIwMjEyNDU3MTRlMWRkZDE2ZiBsZWdhY3ktdHJ1bmsKKzQxNjU1IGE1YWQ3NmE3OGY0YjI5YThhYTdmNzQ3ZGRiNmYxNmE4MmRjZTM4ZmQgbGVnYWN5LXRydW5rCis0MTY1NyA1MjJlMDA3M2Q5YzllOGJiNzUxN2JmYzY5YzJlYjNiYzNiZDlmMjQ1IGxlZ2FjeS10cnVuaworNDE2NTggZjk0NDE4NzE1ZTU1MzEyOTlmM2FiN2NjZGMyMTVjMGEyYzMwY2IzNyBsZWdhY3ktdHJ1bmsKKzQxNjU5IDA3ZmRiNGQyYjhmNjIzMzdkMzkzNjRhNTY5MzU5NmY0ZjFhZDEwNGYgbGVnYWN5LXRydW5rCis0MTY2MCAwN2NlOTM4ODU3ZTFiYTJmMTg1YzU4ZDNhMmRlYTk3NjFlMTI3N2MwIGxlZ2FjeS10cnVuaworNDE2NjEgMTY0NzBiNzIyZjIwOWMwMTI1NDNlOGE5MDBlZDliZDcxNDY2NGQ5MCBsZWdhY3ktdHJ1bmsKKzQxNjYyIDQwMzY3ODc0Zjg2MTZhYzcwNDU3YTgzM2YxZGViZGJkMmMzYjk0ZjIgbGVnYWN5LXRydW5rCis0MTY2MyAzNzdkZjM5YmNkYTFmMjZmZDMzZjdiZjc3N2IzYmMyNDMzMTYwNDBiIGxlZ2FjeS10cnVuaworNDE2NjQgZWQzNDdjNDM2ZDU4OTY2Y2JmZDg0ZmViYzE0MGM1MzA5M2FjZWZiYyBsZWdhY3ktdHJ1bmsKKzQxNjY1IGMyNTNlOTkzZGY4YWNlODIxNjFlYjJkZDczMjllY2RhMDdjNzZkNmEgbGVnYWN5LXRydW5rCis0MTY2NiA2ODgxNzMxNWI3NGNhOTY5YTRjNzZlNTMwZDY3N2IxODJjNWU2MDMwIGxlZ2FjeS10cnVuaworNDE2NjcgYmZkNmE2ZmM3MGVhZjUzZDZjMTBiZTBjYjQxMmVkNGJhNGFiZmJmNiBsZWdhY3ktdHJ1bmsKKzQxNjY4IGNmODg2MzZjZGY0YmU5OWQ2YmVlOWNlYjI1NGU5ZjI4ZDMzYzM0ZGEgbGVnYWN5LXRydW5rCis0MTY2OSBhMTRhN2Y2MTRhOTZkYTRiYjliZjQ2MDQ1OTI4ZTlhMDc4YWZiOGE4IGxlZ2FjeS10cnVuaworNDE2NzEgYmVjOWZhYzlmNzdjNzMwMzQxZGFiNjc4OGRkYmRkN2VmODZhOGY5NiBsZWdhY3ktdHJ1bmsKKzQxNjcyIDI3ZGYyZmJlMjcwNjY0Y2EyMjg1ZmRkNzJhZTMwMDFkNmQyOTk1NWUgbGVnYWN5LXRydW5rCis0MTY3NCBkYjFjMGFhYmM0MDVhMDJlYTU1YWRjYmVhYzY2YWMxN2FjOTQ5YWY0IGxlZ2FjeS10cnVuaworNDE2NzcgZTAxZDg1MjRiNmY2NDJjYmIzOTA5NDFhZDQ3M2ZkNTgwYmMzYmFlYiBsZWdhY3ktdHJ1bmsKKzQxNjgyIGNkOGI1YjMxZTAyYWE0YmI4YWM5N2ZjZjk2NzdhYzZkMTQ3NTcyYTAgbGVnYWN5LXRydW5rCis0MTY4MyA5MzAxYTdjMDMxMmFjMDNiNzY5NTM5YjAyOTMzZTc5MzMyYzMzOTkxIGxlZ2FjeS10cnVuaworNDE2ODQgMzVmZTkwMzI1ZjViN2EyMmNmYTRiMTI0MjM2YWMwMDU5YzY5MGY1NiBsZWdhY3ktdHJ1bmsKKzQxNjg3IGYwYTUzMzBmMmIzZTExYjFmNTcwY2ZlNGFiYzRkNDM1M2Y4NTA5NjQgbGVnYWN5LXRydW5rCis0MTY4OCA2MzVlMGQ5MDk2NDVlZjY1YTMxMzJhMzgwY2FmMzM5ZjdhOTU5ZjQ4IGxlZ2FjeS10cnVuaworNDE2OTEgNmQ3ZDFhOTk2YTAyM2E4ZGEzNWVmZDk5YWE2MTZjNGFiYWUxNDYzYyBsZWdhY3ktdHJ1bmsKKzQxNjk1IDI0OWZmZTEzY2FmOGE1NGM2ZmQ2YmMwMGRiYzkzYzg0OTQ0MjZmM2QgbGVnYWN5LXRydW5rCis0MTY5NiBmZGYwYWMzNmViNzQ2MTJmYTQ2OGIzMWU1ODQ5N2ZjNmQ0MzhmYjU4IGxlZ2FjeS10cnVuaworNDE3MDAgNGJmY2Q1ZGNkMGJmYTI1MGE1OTkwMzUyMmIzNmQyYjUxZmMwOGM3NCBsZWdhY3ktdHJ1bmsKKzQxNzAyIDc1NDhkNzY1NmQ4OTg2NGIzYWUwYjNmMWRmY2U5YWRmYmYwYTM2ZjIgbGVnYWN5LXRydW5rCis0MTcwMyBkZTY5YTUyNGY0ZWRiYzZjM2IxMjVlOTg4Nzg0NDUxYzUxYTg0NjdkIGxlZ2FjeS10cnVuaworNDE3MDQgNjRjNmFiNTY3MWU3ZDc3Mjk2OThiMDkxOGIxN2U2NGM0ODE1MjNjMiByZWxlYXNlMjQtbWFpbnQKKzQxNzA1IGRlMGMyZmVhNjVjMjFiYzlhY2JlZDM4ZDhhMDAxYTdlNDA1MGEyNjggbGVnYWN5LXRydW5rCis0MTcwNiBjNjkxZmQ2M2ViM2MwOTVjNmVkMGJiODk2ODk0NmFmMzU4ZDlkM2Y5IHJlbGVhc2UyNC1tYWludAorNDE3MDcgMThkMjdjNDQ0N2QxMTM2Y2RjM2IxM2UwMDZlYTMwM2RmNjZiNjVmYiBsZWdhY3ktdHJ1bmsKKzQxNzA4IGMxMTUxMzY5M2NiOTcwM2NlNjlhNjE0MjExZjEzMjllOTlmZDFhZjIgbGVnYWN5LXRydW5rCis0MTcxMCA5ODY1M2Q5ZjljYzM5YzNlNTkzYjQxNGJiZWNiYjhkYTE0M2M0YzgzIGxlZ2FjeS10cnVuaworNDE3MTEgNjUyYmQ1ZTViNzc4MmY4NmMwN2MzYTE1MjEzNjZlYTEwOWZlMDc0NCByZWxlYXNlMjQtbWFpbnQKKzQxNzEyIDE4ZjA5YWM2MTllODkyZjJlOWQ1YjBjODM1MDU4ZTIyOTdlZGI0MWUgbGVnYWN5LXRydW5rCis0MTcxMyBhNTU4MzFkMzI5MTVhMDVmNjFhMWNmOWVkYWMzYThhOTE2ODkwNzU3IHJlbGVhc2UyNC1tYWludAorNDE3MTQgNGRiMTdhMDBiZGNkMzUzMDdmMzY4NzIwMTFkNWJkMzVjNjNjNGVkMyBsZWdhY3ktdHJ1bmsKKzQxNzE1IGRlZTI1M2EzMTE2YzQ1NmY5Yjg2Y2Q3NzgxZTI1ZGQzNTE0YjU1NTYgcmVsZWFzZTI0LW1haW50Cis0MTcyMiA0ZWM2MDExMTA5MDYxMzc2MWU5OTBmZWI2ZTNkY2QzYzhiNzE2NWY4IGxlZ2FjeS10cnVuaworNDE3MjMgNjU4NmNkOTkyMGU3ZTNmZjZiMWNlMDQ5YTQ1OTQzZDAxZDRmODg3YyBsZWdhY3ktdHJ1bmsKKzQxNzI0IDliODk3ZmI3YWM2YTIyMTZkNjg5OGNlYzA4ZGQzYjUxMDY3OTAzNDIgbGVnYWN5LXRydW5rCis0MTcyNSBmODkzZDQwM2E5OGMxZjgxOWMwMjE2YTYzZjUyOTM5M2ExYzVmZmIwIGxlZ2FjeS10cnVuaworNDE3MjYgZmEwOGM2OTdhMjc1OGRiM2ZlY2ZkMGQ4Zjg5MjIwYmI1ZDFhNzUxMyBsZWdhY3ktdHJ1bmsKKzQxNzI3IGFkZTY3ODY4N2QzYjMyODA1YzQyNjk5ZmE4Y2ZhM2IyMjA2OTg3MTcgbGVnYWN5LXRydW5rCis0MTcyOCAzMjFlZmQwMzc4NTljY2NlODNkZTY2M2Q5YzM2N2MyZmZiZGQyZjJlIHJlbGVhc2UyNC1tYWludAorNDE3MjggZjFhZTExNDU3ZDM0YmMzYjBjNjdmN2NjMDM0M2U4OWVjZDUyOTZjMSBsZWdhY3ktdHJ1bmsKKzQxNzI5IDg3N2I1ZDRjYTM2ODE3MjEzNGZhNzBiMjE0NGY0YjBhN2U5YWIzNzkgbGVnYWN5LXRydW5rCis0MTczMCA3MzEwMzJkMTAxNTlmYmMwZDUyNDI0NTNkNjgyNzc5ZTE0NjdmNTc5IHNzaXplX3QKKzQxNzMxIDI3OTE5Y2Y4NGRjM2RkZjBjZGIzMGVjMTEzNGNkNmM3YzhhOTIyYzIgc3NpemVfdAorNDE3MzIgY2VjOWMyYzE0ZTI4ZDQ0ZjQwNjA2NTI3Y2U4MTEyYTRjNjc4Y2FhMCBsZWdhY3ktdHJ1bmsKKzQxNzMzIDllYzViMTY1ZmVhMDgxNGEyN2JhYThiOTY1ZjE1MjkxMDlkMTFhM2YgcmVsZWFzZTI0LW1haW50Cis0MTczNCA3OTYzMTBjYmZmZWIyMzI0ZTk0NmZmNTllMmVlMmU1MTI2MjYwNjIzIGxlZ2FjeS10cnVuaworNDE3MzUgNGMxNWE4ZTkxYWU3NGZlYzViZDBhYzUzMGRjNjZmZjMxZjFmYTkzNSByZWxlYXNlMjQtbWFpbnQKKzQxNzM2IDgxZDU5OTU5NTFmZDQxMGNhODZkYzNmNzRkNTBkZjE2MzY1ZDBkZjUgbGVnYWN5LXRydW5rCis0MTczNyA5ODA1NjE5NThmMWQzOTMzZmQ2MjEzNTFmOWFkZDNlZDI5OWMwYzQ2IHJlbGVhc2UyNC1tYWludAorNDE3MzggZmI2ZTY0ZWI4NmMwMzhmMzAyY2UyOGYzZDlmNmY3MmM5Nzg5MTE2YSBsZWdhY3ktdHJ1bmsKKzQxNzM5IGVhMDgzZWZkYzk2YzczYTk5MjA0M2VmZWM3ZGNlMjc3NzFlM2QxZGMgbGVnYWN5LXRydW5rCis0MTc0MCA3MTliYTAyZDJlMmNhNjNkMTUxMjJiNDQ2ZGMzZjI5M2ZmZWQ0YzYzIGxlZ2FjeS10cnVuaworNDE3NDEgN2JmYjA5N2Y5NTk3NmY0ZWJjNzZhMzc5NWNlMzAwNzUyNWRmMTg5OCBsZWdhY3ktdHJ1bmsKKzQxNzQyIDNkMWJhZjcxN2M1YWY1ZDllZjg5MTg2ZjUwMzc1OTRlNzI2YjlhMGYgbGVnYWN5LXRydW5rCis0MTc0MyBkMDIxNGJiMWZkNTEyYjY3ZjFjZTRlYmIwY2UyM2ZjMWUxMTk2ZjI5IGxlZ2FjeS10cnVuaworNDE3NDQgOTY5N2VlZWFmMjQ2NjMyZWM0MDkzYTc3NmE4NmE3MDA2MTI3OWE4ZSBsZWdhY3ktdHJ1bmsKKzQxNzQ1IDQ1ZjdiNzM4M2E0ZTIwYTk3MTBmNTJkOWNkOTZlNTgzNzI2ZjY1NzYgbGVnYWN5LXRydW5rCis0MTc0NiBkZTE2YTg1YzNiNGNmMzhlMmU1NmE3ODgzNmZjNzU3MWJkZDIxZjI5IGxlZ2FjeS10cnVuaworNDE3NDggMTViNThlNDVmMWExMzE2YWNjMTViNzRkMTdlMzgwMGU5ZGY3ZjBlNSBsZWdhY3ktdHJ1bmsKKzQxNzQ5IGRhMGJhYjVkZDc0MDg5ZjcyN2I4NmZmYzcyOTIzZDFlZTcyZjczZGMgbGVnYWN5LXRydW5rCis0MTc1MCBmNjdjNGFiMzA0ZWNlYTgxYWE4YTQzOTQzYWY1YTMyNjczMDgwOTU3IGxlZ2FjeS10cnVuaworNDE3NTEgYWE3ZDdkZjg1M2Q1NzA1OTA2NmQzZDVlNWE5ZmE3MTNkM2EyMjMzYyBsZWdhY3ktdHJ1bmsKKzQxNzUyIDNiOTAyNThmZWM5ZjZiMmU2YjNjOTgzOTQwYmNhMDE0ODRkNmQ3NTcgbGVnYWN5LXRydW5rCis0MTc1MyAxZmY0NzkwYjc2MDUwMThjNjQxZmNjYzQ1OTY5MjE0N2E1M2QwMTUyIGxlZ2FjeS10cnVuaworNDE3NTQgOGViZTM0ZWIzZWI3NDgwMmE0OWYyZDc3MTBmN2U0ZDY0NGE2NGQ0MSBsZWdhY3ktdHJ1bmsKKzQxNzU1IDEwNDQwYmNmYTA2MTcxOWM3YjdlOWVmZjc1ZDIxZTc0NzAxOWVlMmUgbGVnYWN5LXRydW5rCis0MTc1NiAxOWQ5NmMyZDdkZjU0ZTI5ZjBlZjU4NDMxM2FlYjFiZGU5YTExZjUwIGxlZ2FjeS10cnVuaworNDE3NTcgM2YzNThhZmJiM2QzZjM3YWYyMDMyM2M2YTcwNzg0YzEzYjdlMDJjOCBsZWdhY3ktdHJ1bmsKKzQxNzU4IDRjYmYyYTAxMGQ5NDViNmJjZDk1NWZhMDUxODdjMjU3OTk3MGViMDAgYXN0LW9iamVjdHMKKzQxNzU5IGUzZWNhNjVhZTE0NGY1ZGM4NDBiODQ2NTQ2ZGQ0ZGU2NTk5MTA2OWEgbGVnYWN5LXRydW5rCis0MTc2MCAzMDFmYjBhOTkzNzE0NGVjOTdiMzIzYTViOGY0NTNlYjhiNWJlNzU1IGxlZ2FjeS10cnVuaworNDE3NjIgZmE2OWYwZmEzNmZlZjliMmU5YzZhNjIxN2NlNGQxMzM0YzRiM2QxMSBsZWdhY3ktdHJ1bmsKKzQxNzYzIGUxNGY0Nzk2NDc0ODFlNGZkOWM1MTgzNjE2MmYyOThjNzMyNzZhOWQgbGVnYWN5LXRydW5rCis0MTc2NCA0OWEwNDkzZjI0NWUzZmI4NGU1NWRmMTllMTlhMmU5MDczM2ZiZGEwIGxlZ2FjeS10cnVuaworNDE3NjUgYTlkNGZiODYwN2QyOWZlOWYwMDA4ZDQ3ZWVkY2RjYzc0ZTk3NGEzOCBsZWdhY3ktdHJ1bmsKKzQxNzY2IGVjMzQ1Mjg0MGI5NjZlNmQ4ZGUyZDNjZmJmYTRiYzcwZjcwYWMyMGEgc3NpemVfdAorNDE3NjcgNGFhMDE4NzlhOGY1YTliY2U4MzM5MTUxMzkyZjU3MjFkNWI3YzQ3ZiBsZWdhY3ktdHJ1bmsKKzQxNzY4IDhjYjY4NmRkNmU2NDU4ZmY0OWU2ZjgzZWU1NDg3YjljNTk5ZjEzZGIgbGVnYWN5LXRydW5rCis0MTc2OSA3YzRkNWIzOGM1NWU2NjJhNjQxMDg4NjRhMzRiOWU0ZTZiMDk5Nzc1IGxlZ2FjeS10cnVuaworNDE3NzAgYjcwYjNlNWIzY2QxYzk2YjcyOTliYmI0YWYwNmEyYzJkMzRjYmU5OSBsZWdhY3ktdHJ1bmsKKzQxNzcxIGI4YjM3ODJiMmRjMDc1YmUyNzk0NmJhNWJkMDY3NGRmYzczODc5NmEgbGVnYWN5LXRydW5rCis0MTc3MiBlOTBlN2Q5ZTk4OTEwOWExMDE5NzkwMmNiMjM4NWQ3ZjA3MTRlYTIyIGxlZ2FjeS10cnVuaworNDE3NzMgMzU1OTYzMDdlNzg2MDIxYjEwYjRjMmZmYTE3YjQ5NWE0MGFjZGUwMiBzc2l6ZV90Cis0MTc3NCA5NjNkNzQ5Yzk3NzY0MGMxOWVjNGU3MmZhODlhMTI3NmQ0NWJiMDIxIHNzaXplX3QKKzQxNzc1IDVhODc2NDRhMzkwMDBmNTVjMTY5ODY2YjJlN2U2NDM0ZTI1MGIxZjQgc3NpemVfdAorNDE3NzggOGRkMzVkZDZiMGU4OWNjZTU5MmM3MTFlN2IyOTEyMTJjYmVhZDg4MyBzc2l6ZV90Cis0MTc3OSAzYmEyMzBjNzdkNDAwMDMxMDNjOWUxM2RjMDU4NmMzNTRhMjUxYTUyIHNzaXplX3QKKzQxNzgxIDE2ZTNlZWI4NTIwNmZkYTJmMGJkMWJhYmI3NzdhN2ZhNmIzODJlZjAgc3NpemVfdAorNDE3ODIgNGQxZjNlYzRlYWQ1OTY4YTcyZTVjZDk0ZTZjNTE1OWVkNzdlYTlmNCBzc2l6ZV90Cis0MTc4MyBkNmVhMTUzMGRhMzAwNDM1NWI2MzdlM2E4ODM4ZjMxNzZhZGQyOWZiIHNzaXplX3QKKzQxNzg0IDQyYWNmMzNhYTNjOGEyOGYwZTQ4MDNjMGQzMTZlYTU4ZDdlMjIyMTkgc3NpemVfdAorNDE3ODUgMDhlODBhMmJmNDBjZjg1NWQzZjNmN2U5ZmE1MGRiYjAxMTExYzlhZSBsZWdhY3ktdHJ1bmsKKzQxNzg2IDk4OGZkZjAyNTJiNzk0ZDcwNmNkNWEwMjIwNzNlYmMyOTA5NzFkY2Ugc3NpemVfdAorNDE3ODcgNjE3MDZlNTgxZWY5Y2E0NDk5MTRjNzNiOWYyOTQ2NTk2OWY5YzM2OSBsZWdhY3ktdHJ1bmsKKzQxNzg4IGYyZmE0MGU4ODM2MzBiNjNlY2UzZTQ5NWE1NGFiNjYxZTY1MmNkZTQgcmVsZWFzZTI0LW1haW50Cis0MTc4OSA5MTNhODBmNDU4ZTY4NzQ3OWE2Yjg4ZDUyOWM3NzY4ZGMyZDNmMzliIGxlZ2FjeS10cnVuaworNDE3OTAgYzgwODk3YmI1MDUzY2VlZDg3OGYzMWFiNjNlMzQwZTdjMDIzYzdiOSByZWxlYXNlMjQtbWFpbnQKKzQxNzkxIDJhNWU2MDA5YTQ0NTI3MDMyMTVjODQ1ZGYxMDRjNzI5MTUwMjU2YWUgbGVnYWN5LXRydW5rCis0MTc5MiA1MGZhNThhMjRlNjBmNDE3MGU3Nzk1OTZiYjU1ZTk2ZDgwYzFmZWQ0IHJlbGVhc2UyNC1tYWludAorNDE3OTMgMGNmMzI0OGUyN2U2NThhNmVhNDgxMjljMGEyNDY1NGI0NmRlMjU4MSBsZWdhY3ktdHJ1bmsKKzQxNzk0IDNlZDVhNGFjYmU3Y2IzYjljYmZmYTdmMmFkZWJmYmM5MTRlYzEyMWQgbGVnYWN5LXRydW5rCis0MTc5NSBhOTNiZTUxOWY5ZWM0MDcyNGM3YTBiYjE4MTRjMDk3ODE2ZDIzYWUwIGxlZ2FjeS10cnVuaworNDE3OTYgN2VjYzQwZDIwNTg2NDFmYzdjYjMzMWZiZTZjOGUzNTg2MTkzNzE5MSBsZWdhY3ktdHJ1bmsKKzQxNzk3IDc0YmVkZmQwYmQ2YjJmZmNhMWVhYTMyOTNhMTRhZGFmY2RmOWM2YmYgbGVnYWN5LXRydW5rCis0MTc5OCA1Y2U0NzEwM2Y4NDc5NDllMzU5ZDIxYTUwMTY2NjZmYzQ5NzAxZGUxIGxlZ2FjeS10cnVuaworNDE3OTkgM2EzOTQzMWE1NGE1M2FiNzYzM2NiOGE5MjI5MWFkNzIwOTliMjA1OCBsZWdhY3ktdHJ1bmsKKzQxODAwIDM0YTUxNTRlNjExY2MxMDY5NzA3YjhhNzg4MDk1NTk1Mzc4ZDZmNTEgcmVsZWFzZTI0LW1haW50Cis0MTgwMSBmMDExMjUzZDNjNDcwZDMzOTFlMGVjNzAzMDc4MjQ5ZWZiMDk5N2Q0IGxlZ2FjeS10cnVuaworNDE4MDIgNjMwZDAxZmVjZmVjNjQxZTRmY2FjMDRhMmM3ODgzYThkMmI2YmZkZCBsZWdhY3ktdHJ1bmsKKzQxODAzIDU2ZGRmM2FhMTJiMTFjY2JhYTNjZWU5ZDkxNWRjMzEyYmFjYzMwZTQgbGVnYWN5LXRydW5rCis0MTgwNCA5OGUyNTk1ZDczN2YwMWMzMzk5YjJhMjZkZTcwMjg3OGMyYzIwM2U1IGxlZ2FjeS10cnVuaworNDE4MDUgZTlhMTBmNzRjZjg4YWM3ZTM3YzI4ZTA5NzhhNGYxZDE0ZDRhY2RlNyBsZWdhY3ktdHJ1bmsKKzQxODA2IDAzZGJlYzBkOTUwNDZlMWExZjkxMzZjYTJjNTg3ZGZhM2Y0OWQ4NmIgbGVnYWN5LXRydW5rCis0MTgwNyA3Njc0MWU3M2JiNjQ5NzhjOTY3YTgwZmMyOGFjMDAyYTNjMjQzZGFiIGxlZ2FjeS10cnVuaworNDE4MDggN2Q2YWI5ZjM5OTk2Y2NmYTI5NzBhYjBmYWY4NDFhNWUzOTMwM2Y1MyBsZWdhY3ktdHJ1bmsKKzQxODA5IDA0NGQzNWNhMzQyNDdiNmU3OTIxZDhlMmFkYjdkOGEzNzVlM2RmZmYgbGVnYWN5LXRydW5rCis0MTgxMCA2Y2I1NzM5YjcxY2UwYjg0Y2NlMTcxOTEzZmZjNzM3YmM3NTc0MTE1IGxlZ2FjeS10cnVuaworNDE4MTEgNDNiYzdjYTJkOWRmYjg3OWJiZTAzNGFjODY2N2Y5NjdhZDc0ODUzZiBsZWdhY3ktdHJ1bmsKKzQxODEyIDY4NjMwNmE2N2U5YjI0NjI1ZmFmNTBmY2M5ODIxNmUwY2MxY2NiMzMgbGVnYWN5LXRydW5rCis0MTgxMyBjYWRjNzc4YWVjNzk2ZjIzNTQ0N2M0NTU1N2QxZmNmMmY1ZDg5MTY4IGxlZ2FjeS10cnVuaworNDE4MTQgNmYwNjM4ZTdiZDIzNjg4YTQ4NmMwNWU5MzAwZTBmODA5ZDE1OTlmYyBsZWdhY3ktdHJ1bmsKKzQxODE2IDUzNmYyNGUxNmFmMjQ2ODAyMTk3YmFlZWYzYjEzNDY4NTg3MWM5YWUgbGVnYWN5LXRydW5rCis0MTgxNyAxNjI3NzcxOGNlYjlhZTY2MzFmMjk3NTU3ZjVjODE5OWJiZGM1YWFkIHJlbGVhc2UyNC1tYWludAorNDE4MTggMjNlYjg2NzdiZGFkMTM4ZmY2ZGVkN2IzODk2MThjMzczM2U4OTk4ZiBsZWdhY3ktdHJ1bmsKKzQxODE5IDc2ZDUxMTk3MjYxNjI3Nzg4YWQ0NGM2M2ZlYjFiNjQyNDkyYzE4NTIgcmVsZWFzZTI0LW1haW50Cis0MTgyMCBlNDMxNmRhMTljZmMxZDk0YWU4YjZmZDU1MmM2NTViNzkxODlhYWVlIGxlZ2FjeS10cnVuaworNDE4MjEgMjE0MzM3MWJiOTFmYzIzN2UzZjlkNWM5N2M0YTUzOTAyZDYyMGI1MCByZWxlYXNlMjQtbWFpbnQKKzQxODIyIDE1NmRmNzdmOTkyZWJlZmRmNmU4OGUxZWRlNGFkMTJlYzAzNmUzZGEgbGVnYWN5LXRydW5rCis0MTgyMyA1OWE4OWI1ODhjMzA5NmEzNmJlNjkwZjRmMThiZGJjNzNkNWI0NmE5IHJlbGVhc2UyNC1tYWludAorNDE4MjQgZTA2ZGY1ZTEzZGI5ZGI3MTczN2VjZDc5MzM0MGE2MWQ2YjljZGYzYyBsZWdhY3ktdHJ1bmsKKzQxODI1IDczMGY4NGMyZmRkYjViMTE2NDlkODc5YWFhNDBiNmE2ZWMyYWRkZjQgcmVsZWFzZTI0LW1haW50Cis0MTgyNiA0OWQ2M2YzNzdmZTcyZDcxOTVmMTkyMmJiY2VkM2FlYTlkOWM4YjkzIGxlZ2FjeS10cnVuaworNDE4MjcgMTRmMDAyY2QwMzcxYjRhODdlMmZhZjk4NzMwMzQ4OWYxNDg2MmQ3MiBsZWdhY3ktdHJ1bmsKKzQxODI4IGM4ODZjYjE2YTE1NjQ2NTY4ZDIyYjZiYWQ2OTRkZjEyYmY4ZDk0ODggcmVsZWFzZTI0LW1haW50Cis0MTgyOSBmMzliZGJmNGIwYzFiN2ZiNGE5OThmYTdkYjllZWJiYzVhYmYzNWFkIGxlZ2FjeS10cnVuaworNDE4MzAgYTZhZTEwMmE2ZTExOWVmMzE3YzY0ZDc3Y2YwMmY2MmFhZTZhNzQ3OCByZWxlYXNlMjQtbWFpbnQKKzQxODMxIGI1NDBiNjA3NmZkOTkxNWVkOGQ4YWUzZTYyNTA4NGI1MzU1YjRlZGIgcmVsZWFzZTI0LW1haW50Cis0MTgzMiA3Y2MyMTVmMGMwOWIzYmYxZWMyN2Q0MTZiYTAyZDNhYjY0ZTBiZGMxIGxlZ2FjeS10cnVuaworNDE4MzMgMjMzOTc1ZGEyNDdlMjJhZTY4YzBmN2Q5M2Y2NDQzZTE4M2U5Y2ExOCByZWxlYXNlMjQtbWFpbnQKKzQxODM0IDhlNDM4YmY3NmNiYmYyNTA2MmE1NTRhYzg1NzlkYzY5NjY4NmQ2MTQgbGVnYWN5LXRydW5rCis0MTgzNSAxMDFiNjFhOWVlZDJlNTE4YzhjM2E1ZjA5YjNhYzg2MGQzM2FlZjY4IHJlbGVhc2UyNC1tYWludAorNDE4MzYgODJhNTJhNDY0YWEyNTZjYmFiNzdlNjVkZjdiNDkzOTUxOGQ0YjI0NyBsZWdhY3ktdHJ1bmsKKzQxODM3IDc0ZDE2ZWIyY2FiZGQyZWE0M2QzYjE3MTExMTFlNjQwZTRiNjVkZTkgcmVsZWFzZTI0LW1haW50Cis0MTgzOCAyMmRiZjU4MThiMGIyOTRlNDFmNDc0NTllOTAwN2NkMTBjMTZmZWJjIGxlZ2FjeS10cnVuaworNDE4MzkgODUwZjdkMWU0Y2EyNzY0NWYzMDk1YjY4YTNlNjViYzE1ODQ3NTMzOSByZWxlYXNlMjQtbWFpbnQKKzQxODQwIGFhNzA3MDQxNTA1ZDg5OWMzMzQyODc3MTFhY2M5YmJmNWQ0MTBjN2YgbGVnYWN5LXRydW5rCis0MTg0MSBlNDRhODMzZWNhNDMzNWQ4NTEyMmEyNjY3ZjNjYWQ3YzJjNjZiMDk3IGxlZ2FjeS10cnVuaworNDE4NDIgMmViNzhmNWQxNDUwMGU0NjUyZjNiY2Q1NzM4YzZjZjNlNDRkNGNiYSBsZWdhY3ktdHJ1bmsKKzQxODQzIDczZGE1OTFmOWJkYmRkNWNlOTc4MDcyNjE1YWFhN2ExZGY3YjAxNDIgbGVnYWN5LXRydW5rCis0MTg0NCBmOTI4MTI4M2IxMDlhNDliZDQyN2JmNjc3MjFiZGJkMDlhYTVjODczIGxlZ2FjeS10cnVuaworNDE4NDUgMDQyZWIzZDFjZTNmMzM4YWU2MWUzNWYzYzVlYmY3NGRhNTBhNTJlZiBsZWdhY3ktdHJ1bmsKKzQxODQ2IDk2M2E5OGQ4ZmUyZTRkMmNmZjI3ZDY4NzI1NDM0ZTcyNDEzZDdlZDEgbGVnYWN5LXRydW5rCis0MTg0NyBmZTliZDIxZjI3ZjIyODlkNTBlZTI2MTQzNzE3NDU1ZDQ4Y2E1Mzg3IGxlZ2FjeS10cnVuaworNDE4NDggYzcxY2ExY2QzNjNiNzVmMzQ4ZWE3NjRiZmY0YjczYTQxYjlkNWE2ZSBsZWdhY3ktdHJ1bmsKKzQxODQ5IDk2ZWIyYTVjZmJlZjYyM2VlZmQwYjYxMWFkZjM4NzE1YzgzOTc5NmIgbGVnYWN5LXRydW5rCis0MTg1MCAzNDUxYjEwOWEyNGM1NjNlOTFhYzk4MDg0YWVjODJmNTIzNzA4NjUwIHNzaXplX3QKKzQxODUxIDI5OGZjMzI2OTMxMGJlOWQ3YTE3OTdlOTVkNmZhNTViMjVmMmM3NWIgc3NpemVfdAorNDE4NTIgMjYxMDdjNWQwNTdjMWZmOGM4OTFlNzQ1NDg2YTAzNzhmNzA4YjU4YiBsZWdhY3ktdHJ1bmsKKzQxODUzIGY0NTA3Nzc0ZDRlNDFmZmU0ZWU5NTQwYTEwMjRlNDAyMGI4MTMzMTUgcmVsZWFzZTI0LW1haW50Cis0MTg1NCBkOTkzYTNlZTg5MWVkODJhNDFjNTM3ZDZmZjQ4MDhiYmZhZDY2OThmIGxlZ2FjeS10cnVuaworNDE4NTUgY2ZkMWUxZjRmZGRkYjEyNzY5NzVmYjhmZDI5ZmQ2MjJlYjI3NWU5YSByZWxlYXNlMjQtbWFpbnQKKzQxODU4IDFlNTk1YjZjOTI0ZTE3MDhmNWJiMmNmMGJmYzlmMjZiMTkxYmZlN2YgbGVnYWN5LXRydW5rCis0MTg1OSBiYjUxZDZjNmEzZTAzYTM5M2VjODM2NmUwNDZkYzAzM2EwZDU1YjA5IGxlZ2FjeS10cnVuaworNDE4NjAgNTA4ODZkNDJiNDQ0ZTQwZDdlOTM2M2MxYWI2MmEyNDAyOTEyOTA3MiBsZWdhY3ktdHJ1bmsKKzQxODYxIDE0N2MzNWY0MzVhMGI1YWQwODE3MjA4YzZmYWVkNjY1NTdkOTNmMWEgcmVsZWFzZTI0LW1haW50Cis0MTg2MiA2ZjI1MDI5ZGU5ZGI0MzY4NDcxOTUyOTk2Zjk4YjcxZGI0ZjZjMjJiIGxlZ2FjeS10cnVuaworNDE4NjMgODM0ZGQ2NjRhZWZjYTlmZTM1MzJmMDkxNTAyZGNiNTQzZjQ2NWZiNSByZWxlYXNlMjQtbWFpbnQKKzQxODY0IDhhMmFiNWY1MTkzMmZlYTNhMTIyYTZlMzg5MmRhYTk2NjdhNTM0MDIgbGVnYWN5LXRydW5rCis0MTg2NSA2NTI0MjljNGYyYTQ5MmY3M2NlNWE4OWE0MDQ4MWZhOGZjNzgyZTYwIGxlZ2FjeS10cnVuaworNDE4NjYgMjY2YmJkZjkxYmI1M2U3MmIyMmZjNWRlOTdlZmQzNmY5MDhjNmRhMCBsZWdhY3ktdHJ1bmsKKzQxODY3IDAwZGYwNWZhODE2MTRhZTYwOTIxZGY0MzEzOTBiMmJiMmE3YThjZGEgcmVsZWFzZTI0LW1haW50Cis0MTg2OCAwOWVkNmM5YmRiZDlhMjk1YzVjMmM4ZTAwOTNhYzA3NmFiOGUxZGI4IHNzaXplX3QKKzQxODY5IGMxODUwNGNlZjJiYTY1YWMzMjUxMzUyMTM5ZjQzOTFmNGI3MzFmMGUgc3NpemVfdAorNDE4NzAgYzNhZGM3N2ViMjg5MWUyMDRmMmJjZWQ3ZWYzMTQwZmRlMmZmMjQ3ZiBzc2l6ZV90Cis0MTg3MSBmNTQ0M2JkZjliMGRmOGMxOTNmYWE3NmFjZmY4YjY1NDZhMTBmYWYyIHNzaXplX3QKKzQxODcyIDEyNDg0YjY1OWZhODY3YTg0NDgzM2EyNmNlYzI2OGY0MjkyOTNiOTEgc3NpemVfdAorNDE4NzMgNDZmZjVjNTg2ZDg2Mzk3MTBlYjMzZDFhMzJiNjI5YTY5ODM2MDdmNSBzc2l6ZV90Cis0MTg3NCBhMjI3ZWYyNmExOGRiZDQyZDg5MmI3MDQ2NWQ0OGNlYThkMDJjOWVmIHNzaXplX3QKKzQxODc1IDUwYTQ3NTIxYjQwZjQzMGU1ZWJlYTQ3YjhjOTgzYzIyMGE1MTc2ZjIgc3NpemVfdAorNDE4NzYgYzg4YTgzMGQ4MzFjMWJmMzcyNjBmNDUxMDUwYTk3ZWM2ZDhhZTNhYiBzc2l6ZV90Cis0MTg3NyAyOTI0MzVhNzMyZThjMjQ5ZjkxZTljYmZiM2EzMGI0YWQyMzBjODU5IGxlZ2FjeS10cnVuaworNDE4NzggYWRlNDYzNzFmMDRiMDVjOWEwZjY2MjAzOTYzMWE3OWEwNDU4ZGRkNiBsZWdhY3ktdHJ1bmsKKzQxODc5IDZkZDYyNTQyYjZlNWRiZjhlMWYwZGUzNGMxYTNmODM5ZjUwZWM1YmUgc3NpemVfdAorNDE4ODAgODViMmQ4MDRhYzBhYmM3ODk5NDc5OTZjZmM1NDNmOTkzNWRkYzFkOSBsZWdhY3ktdHJ1bmsKKzQxODgxIGI5MDg2NTQ0MzgyZTIyMDgyMzVmNzQ5Y2UxNzFlOGUyODQ0MmY3MjkgbGVnYWN5LXRydW5rCis0MTg4MiBmMzIxYmUzNGI4NWQ1ZjU1ODQ3ZWYzYjUwOTk3NzI4YTljZDgzYmJlIHJlbGVhc2UyNC1tYWludAorNDE4ODMgMDNhMGIxOGE3NWJmNWRkYzgwNGRmMjllZjgwNDM1Yjk0MzUxYTU1NCBsZWdhY3ktdHJ1bmsKKzQxODg0IGE4MTFlYmEzMGZhNGRmM2FmYjc3MDI4MWVkODkxZGU4OGYxNzZhZmQgbGVnYWN5LXRydW5rCis0MTg4NSA5YjljZWQ0ZDc5MjFmNmNhMTM1ZTQyNDBkZDM4ZDE5ODNmZDE4MmI4IGxlZ2FjeS10cnVuaworNDE4ODYgM2Y2MmQzMWQ1OTg1YWIyOGQxNmYwMTYwZmEwYmE4ODEzNzY3YzNjNSBsZWdhY3ktdHJ1bmsKKzQxODg3IDQzMWQ2ZTg3YjlmZTBiZjRiYTRjZWQ5YWIzNjZjZTFlYzA2Njk3NDYgbGVnYWN5LXRydW5rCis0MTg4OCBiMjY0OGNhMjMxZTgwMjUzMmQ0MDI2MGFlNTM1YjkzZDRiYmM0MmNlIGxlZ2FjeS10cnVuaworNDE4ODkgNzk3MGUwMmZjODQ3Yjg1MTYwYjdlNmZlZjlmOTZmZDM5MzZiZTE1ZCBsZWdhY3ktdHJ1bmsKKzQxODkwIGM4Mjk3NWU5MWU5OTg1YzlmZGY1MTNhZjY4MmI0NDMyZWE5NWM0NjYgbGVnYWN5LXRydW5rCis0MTg5MSBiZjdlZWY1MDcyYjY5MTY5M2IzNjFjMmRmYjc2OTMyMjQwZjI1YjM5IHJlbGVhc2UyNC1tYWludAorNDE4OTQgODFmYTQ3ZDJkNDc3YmQ5YmY4ZTY5NDgxNTlhNTk4NTE4NzdhNGZlNiBsZWdhY3ktdHJ1bmsKKzQxODk1IGVlOTg0ZmU5ODFiNGVmYmE5ZTNiMjkxYjA1ZDJhNmU2MjEzZDc5NzggbGVnYWN5LXRydW5rCis0MTg5NiBmODBlZTE0MjcyN2E4NjJkMmRlYTliNTc1Y2RkY2M1Y2ZkMzllNWRjIGxlZ2FjeS10cnVuaworNDE4OTcgZGVlOTJlY2I4YTExM2NmMjhiNTI1OTY0MGJjZjM0MTUyZDhkNDc2MyBsZWdhY3ktdHJ1bmsKKzQxODk4IGFhNDU2NDQ5MjY2MDNiMDRjNTE1MmU3N2U2ZjI0NjY3OGQ3MTc3OWMgbGVnYWN5LXRydW5rCis0MTg5OSA3OWU3MGZhOGMyMTJmZWM3MDIwZWEyZWNhMzEyNWUxMDc2YjE3M2Y4IHNzaXplX3QKKzQxOTAwIGNlZWZjYWNlNmYyNDk5ZGI1MDE0MzY2MmZkZTg2ZmIwYmM1MjNhY2Egc3NpemVfdAorNDE5MDIgNmM4MTQ1ZmU0OTVlZGM5MDU4YzhjMTQ3ZWVhMTE5NmMwM2FhZDVlYSBzc2l6ZV90Cis0MTkwMyBlZjJkN2I5ZmRlN2NmOWU0ZDk1YWMxYTIwZmVjMGFhMjhmYTljZTRiIHNzaXplX3QKKzQxOTA0IDY5MWVlNTI0ZjAyNzU0YTliZGQyNzhiMTU5ZWVmMTUzMmM4OGE0OWMgc3NpemVfdAorNDE5MDUgNzY1NGRhMzZmZTljY2E4NjllMDNkMWExNjA1MzA2M2ZlMzM2N2E4ZiBzc2l6ZV90Cis0MTkwNiBmMDYxMzNiY2MwNWU2NjdiMDUzNWM5MDkxNzdkMTZhODc1MjQ0NzJiIHNzaXplX3QKKzQxOTA3IDUyYTc0YTMyMzY4MjA2NzdjZTExMjc1OWYzMTg0NjVhNzE4ZjA5OWMgbGVnYWN5LXRydW5rCis0MTkxMCA2MTQ5NDgzZjdhM2Q1NTQzYzhjNWQ3NzMwMWRlN2U1NjY0OGY5MjM3IGxlZ2FjeS10cnVuaworNDE5MTIgZWNmZWQxZjc0NzhjY2RiODc5MjEyNDJlOTc5MjhhYWQ5MTU1MjQ3MiByZWxlYXNlMjQtbWFpbnQKKzQxOTEzIDkyMDhhNzlmNTY4M2NkYmI0OTU4YzkyNzU5OWM2YTU3MzFkNDJhZjkgbGVnYWN5LXRydW5rCis0MTkxNSAwMzYwOGQ2NmU1OWYwYzU0NDAwMWJmZDhlN2ViOGY1Y2ViYzNkYWUyIGxlZ2FjeS10cnVuaworNDE5MTYgMGIxMGU4NTVkYWRmNjQ4MjBlMzZhMWViNmVkZTFhYTIwYzZlM2ZkNyByZWxlYXNlMjQtbWFpbnQKKzQxOTE3IGVhNmNkMWJlOTgzN2I1Mjg5NTM0YmM1MTdjNjFkMDEwZDVjODg4NmEgbGVnYWN5LXRydW5rCis0MTkxOCAyNmJlOGIxZDE4NTMwMTdkYzQ4NWQ5YmYzNTM5M2Y2MmFjZmU0NGU3IHJlbGVhc2UyNC1tYWludAorNDE5MTkgOTJlZjU2Yzk3Y2RmNDIxMGVkNjNlNmM0YWUwMTAyYWI3ZmVkM2Q2YSBsZWdhY3ktdHJ1bmsKKzQxOTIwIGIzNDgyMTY0YTEwMDM4MTQ1YjE4ZTdmZjBmMWJjNTg5M2VlOGUxYWUgbGVnYWN5LXRydW5rCis0MTkyMSA0NGYwNzYwZTI0YTE2OWVkYWI4M2Y0NDVlMmI3OWZiY2Y3MGFkZjQ3IHJlbGVhc2UyNC1tYWludAorNDE5MjIgMzhiMGZlNTFiMGI0Zjk5NWU1YzlkNWZkNGU4MGJiY2M3MGRlMjk0OCByZWxlYXNlMjQtbWFpbnQKKzQxOTIzIDQ0Y2ZjYTYxMzZjNjM4MmE2ZTlhYmJhOTMwYjFjYzEyMDk5YjEwNzMgbGVnYWN5LXRydW5rCis0MTkyNCAwMzI5MjRlNzVjMjRiYTAwZGJmMTYxYmY4YmM2YjY2OTlkMWFiM2ViIGxlZ2FjeS10cnVuaworNDE5MjUgMDFjYmVkNWU4NzMxMDcwYjE3ZjM0ODhmNWQ1MGM1YWE3YzAyOWE4ZCBsZWdhY3ktdHJ1bmsKKzQxOTI2IDg3OTFlOGM0NDhiMzFlMzAwNzRjMzE3NzgyNzg5MzAwYzFiNTBiNDcgcmVsZWFzZTI0LW1haW50Cis0MTkyOSA4MjVhMDQxODEzZmJlZTA3OGEzYmZmM2YxMTNkZWYzYTRlYWU5Mjc0IGxlZ2FjeS10cnVuaworNDE5MzAgMjE1MzFlMzkyMTE2YTA2MWZlYTMxODU1ODlkNDU2ZmNlM2JlMTE3MCBsZWdhY3ktdHJ1bmsKKzQxOTMxIDAzYTU3NDFjZmVhOWY2MGFiZWYzY2NlN2ZiYWIzZmJhZTcyYjk4MjYgbGVnYWN5LXRydW5rCis0MTkzMiA4MzM2NDc2M2M3YjJjNmE4MzkyMTEyNTUzOWM1OTliNzUzODBjMzQxIGxlZ2FjeS10cnVuaworNDE5MzMgNmQ3NDNlNWJhZjE0N2FlNGI1MWM0MmI5MmJmMjQ2MDliZmYyNDFjZiBsZWdhY3ktdHJ1bmsKKzQxOTM0IGNlZTA1OTgwZjFmZDFjNTIzZjM0MjM3MTY1ZmY5ODg0MmEyM2MxOTcgbGVnYWN5LXRydW5rCis0MTkzNSA5Yjg4ODVjOWU1NTFjMzljYTQzODk4MGE3MjQzZjBmNmQxODQzNjAzIGxlZ2FjeS10cnVuaworNDE5MzYgYzlkYTA4ZDQ4MmMzNmFmZmE5OTE2NWIyY2U1NDU3ZjQ3YmU4NjYwYiBsZWdhY3ktdHJ1bmsKKzQxOTM3IDI0MTA3OGVlNmU4N2FlODYzZTNlYjExNGZkZTE1ZjMzNzg0OGM0NTkgcmVsZWFzZTI0LW1haW50Cis0MTkzOCA2NWRmMjU2NzRkMWFlZjcyZDIxNzE2NzIzMjZkODQ0MDJiOTIwNmE0IHJlbGVhc2UyNC1tYWludAorNDE5MzkgNzdiNGFhYWQ2OTAzZWJiOGZkZTFjZTk0YjQzMWZmMzQyZjUzMzFiMiBsZWdhY3ktdHJ1bmsKKzQxOTQwIGY3MjNlMTlmYTNiNzFhMjBiMjFmZGU3NDAyZjllYjU4OGJiZGFmZjAgbGVnYWN5LXRydW5rCis0MTk0MyBiMTM5Yzk5OTY2NWQ5OTc5MjY4OWZjM2IyY2NlY2UwNGE0MjQ1MmQ1IHNzaXplX3QKKzQxOTQ0IDEyMjA1OGRmYmE3NjhhOTNkOTJmZGJhMTlhODU5YzU5ODc1NDFkM2YgcmVsZWFzZTI0LW1haW50Cis0MTk0NSA2ZTE3OTY4ZDRkZTkyYjE2MzJhODNmZjg2MjVmMzgyZjI0NDJkMmQ3IGxlZ2FjeS10cnVuaworNDE5NDYgYTFiMWU0NTFkODJlODVlNzk0ZmFjZjkyZTcyYWQxYmYzM2Y3NjlmNyBsZWdhY3ktdHJ1bmsKKzQxOTQ3IDRjOGE3NGEyMDIyNzgzNDgzYzhjMmI3MzhhNGM5YmNiMjBlMzA0Y2IgbGVnYWN5LXRydW5rCis0MTk0OCBjZjY5ZTMxOTEyMTgyOGI0YTc1MmFiZDgxZmZiOWJjMzI1YzZhYjAxIGxlZ2FjeS10cnVuaworNDE5NDkgMTY4NWRjZDJmOTI5OTNjZjUxZTVlMzNjOWVmYzAyNDNmZjczYWU2ZCBsZWdhY3ktdHJ1bmsKKzQxOTUwIDU2YWQ5ZjI3NWJlYzE5M2QyOTYzYzBiYTIyNTZhMGE1ODMyNjc2ODAgbGVnYWN5LXRydW5rCis0MTk1MSBiYjZmYTRhMzFmMTUyOTc2MDM5ZTNiNjdlMWEzODdhYzA4NmRiNjFlIGxlZ2FjeS10cnVuaworNDE5NTIgMDI2YWUxYjhhN2UzYmEwNWUxNGNhYjEwZTBmMWZmNmJjYTEzYmRiOSBsZWdhY3ktdHJ1bmsKKzQxOTUzIGU3Yzk2YzFkMTQ0YmE3NDI4NTQzOGUxMzc2MWNlNWVlODBkMmE2ZjQgbGVnYWN5LXRydW5rCis0MTk1NCBlOGRlYzc4Y2ZhMmUzZTZmNGYzMjhjZjEyYzRmNzc0ZGRjNGVmMTdhIGxlZ2FjeS10cnVuaworNDE5NTUgZGVkNGE0OTdlYjc2ZmI4N2JkZWM4MmVjOTJiOTlhNTFkOGZjNTRiMCBsZWdhY3ktdHJ1bmsKKzQxOTU2IGQzZjRjNDY3ZTQzOWEyNTc4NTNlZTVlMjg5ODI5ZGEwOTIzZTMxODIgbGVnYWN5LXRydW5rCis0MTk1NyBhNzdlNWIwNDZhNTA4NzYzMzhlOGMxNzdlZTdmZDBhYTMyZmQ1OWUzIGxlZ2FjeS10cnVuaworNDE5NTggYjlkZDQ4MWIzOTcyZGQ2NDAxM2I1Y2I2Y2M5ZWVhYzFjZTg0OTY5NSBsZWdhY3ktdHJ1bmsKKzQxOTU5IGU5NGVlNTlhMmQ0NjFkOTUwNGFjN2ZlOTExYzNlZWI5MjczN2NlOWEgbGVnYWN5LXRydW5rCis0MTk2MCA5ZjY2YmRkNWEwNjEyMzkyNDFjODdmMDVmNjM5Y2E4MmVlMWM2NTViIGxlZ2FjeS10cnVuaworNDE5NjEgZWNkNDIzNzE4YTMyN2RmNTZkOTk2M2I4ZjNlOGMxNjVjNzVmMjhlZSBsZWdhY3ktdHJ1bmsKKzQxOTYyIDhhYjc4ZmI0ZDE3ZWQ0YWMxOWU2ZDdlOTU4NTljMWYzMDA4NGJlNTkgbGVnYWN5LXRydW5rCis0MTk2MyAwZjhjNTU0NmQzYmY0NGI3NTRmM2UwZmQ4YWQwMjc0ZGQ5ZTBmZGMyIGxlZ2FjeS10cnVuaworNDE5NjQgOTJlMjQ2OGJkYjRhNmE0MDMxN2NkZWJlMzhlNTczNzg2ODlkNGRmYSBsZWdhY3ktdHJ1bmsKKzQxOTY1IDAwYmRjMDhhNTA3ZGVjOWRhMGM2ZGU2M2ExMTRjYzRmMzVmZTYzYzcgc3NpemVfdAorNDE5NjYgYWY3ZDQ4NDIwOGU5MjcxYTRjYmFiZTQ1ODI1ZTY2M2I3OTY2MWU1NyBsZWdhY3ktdHJ1bmsKKzQxOTY3IGQyMjI0YzhkNDU0OTI2MjU0OTNjOTYyN2E5MmNmOGMwNTE3NmQ5ZTIgc3NpemVfdAorNDE5NjggNTU3ZTliNmVlN2UxMWU2ZjdlYTVlYTA0MjdiZmIwNDdiMGU1NDc0ZSBsZWdhY3ktdHJ1bmsKKzQxOTY5IDBmNTE4OTYwNzI2NDBhZTExNjc5MmIxNDYwZmZjYmIzZDkxYzdlZmYgbGVnYWN5LXRydW5rCis0MTk3MCA2MGE1YTFhYTE2ODJiNjcwZTIzZTdmZGQwOWJiZDkzYzMxZWQ2NjU5IHNzaXplX3QKKzQxOTcxIGE5YWJkYjE0Y2YzYjc4YTQ3YTllYmMzNGNlYjZiYTFjMWZiYzdlNTIgc3NpemVfdAorNDE5NzIgYTI2NDMyNTNhYzc5NjI5NGIzYzY4ZDkxOWQ5NGU4ZmY2ZjE0MWZjMyBzc2l6ZV90Cis0MTk3MyAwOTY4ZjA2MmYzNTA2OTg4Yjg4NmE0ZjljMWI1MmU0YzI2N2YxZTMwIGxlZ2FjeS10cnVuaworNDE5NzQgZTc4ODBmNGY1M2E0MGQzMTNjN2EwNDdkNTA0MjUyMzM2MjI0YThiOSBsZWdhY3ktdHJ1bmsKKzQxOTc1IGQzZTY4Y2I3MzlmYjI1NzVmYTU5YTRjZDQ4YjM4ZTE1YTFhZjUyMTcgbGVnYWN5LXRydW5rCis0MTk3NiA1OTFkZjU0ZDJkMzBmMTRlMDYxMjQ1YzY3OTg1NGE0NTI4ODBlZGE5IHJlbGVhc2UyNC1tYWludAorNDE5NzcgM2JhOWZmNzliYjI5Yjk0N2ViOTdlOGY5OTM1MDkxZDg1M2QxNmZlNSBsZWdhY3ktdHJ1bmsKKzQxOTc4IDgxMWQ2NDRkMTkxNzY3NzEwNTQ3NjFhMjdkZmFlODE1MGQ3MTZiZDAgbGVnYWN5LXRydW5rCis0MTk3OSA0YWM5YjhmY2Q2M2VhOGQ4NTMxMjY5OTQ0OTM1NGUyZGVkN2FkNTlhIGxlZ2FjeS10cnVuaworNDE5ODEgZjA5ZTYwOTFhNzYyOWVlZmZiNzYxNjViMDc5OGIzMGUzZDIzMjMxNCBsZWdhY3ktdHJ1bmsKKzQxOTgyIDhkZjE5NDI5NGM5MGRjNGExMWRmOTBiYjVkMmVlMzIyNTk1ODViNGYgbGVnYWN5LXRydW5rCis0MTk4MyBkNDM0YjNjNzM5MDE2MGYzNTIyMDk0M2Q1YzQzZWQ4NmRlYWNlOGJhIHJlbGVhc2UyNC1tYWludAorNDE5ODQgMjdiZGMxZTI3ZWVkYjdlYzQ1OWJjYjllM2IwNDM0YzhlZmQ2ZWI5ZiBsZWdhY3ktdHJ1bmsKKzQxOTg1IGMzYjQyYjdiZDZkOWRhYWRjNGE5NzY4NmZlYmQ4NDdlY2JkODA2NGYgcmVsZWFzZTI0LW1haW50Cis0MTk4NiAzYzE1OTc2ZmY2MTg3MmI1YjkwMmJjMmJkM2ViZWRhYTA2YTIzODY0IGxlZ2FjeS10cnVuaworNDE5ODcgNmNmN2QwNGRjYzFmNTdlNjczMzdkMTYwOWVmN2U2ZTU0MTBjZWZiZiBsZWdhY3ktdHJ1bmsKKzQxOTg4IDA5YzIxYTZiZTYwNDE4NDc4YzdiYzk5ZGZjMTVjNjMwMzQxNWIyOTggbGVnYWN5LXRydW5rCis0MTk4OSA5ZjZlZGM4NzQ1NDFjZDI5YzI0NDJlNDkxMTQwYjliNjBlYTk2YmMzIGxlZ2FjeS10cnVuaworNDE5OTAgMjZlNzhiMTk2YzE3Mjc4YTg2MDlmM2VlYTA2ZjA4MjMyODY0ZGJlYyBsZWdhY3ktdHJ1bmsKKzQxOTkxIGNhZDU5MWQ5MjFlY2IwMmQ0MDFkZDkzMzkzNDc2MmI0NzlmMDM4MWMgbGVnYWN5LXRydW5rCis0MTk5NiAzMDNkZWE4NDc2MzkwNGZiODU0Y2NjOGI4ZTZmNzcxNGUxZjVhYmQ1IGxlZ2FjeS10cnVuaworNDE5OTcgNzZhMWMyMGU4MzBlNTVjMDIxYTI1ZDM3YjhmYThhYTAzMjA0YmNmNCByZWxlYXNlMjQtbWFpbnQKKzQxOTk4IDNjMDMwZWRmZjk4NWE2YmM5OTliZjNmNzJjNzc2YWEzMjZiNzNhZGEgbGVnYWN5LXRydW5rCis0MTk5OSA5ZGYzOWM5NjBiZjFjNjgwYmIzNGYxN2ZjZmJlZTYwM2JlOThmNmJlIHJlbGVhc2UyNC1tYWludAorNDIwMDAgNzkwZjhkOWU0OTg4OTgxMTY4MDJhNzJmZTc1MDRmYmYyYjAxZjkyZCBsZWdhY3ktdHJ1bmsKKzQyMDAzIDQxZWYyOTEwZGQ0OThiMGY4NGU4ZjRjYmEzYTgxZTNkZDNhNTU4OTggbGVnYWN5LXRydW5rCis0MjAwNCAzNWRmNmRkODA5MTEwYzdiNGVkYTMyMWZiNzdjODdiYWJhZTFiMzJhIGxlZ2FjeS10cnVuaworNDIwMDcgMGQ1MzM1Mzg3YmE3MzJjODRkZjhlNTlhMTYzMmM1MWZjZjlmODg3NCBsZWdhY3ktdHJ1bmsKKzQyMDA4IDQ3NWI2NDVlMTJmNWVjMDU4YzMyODBiZjQwMjU4NmFkNTRjNmUxM2EgcmVsZWFzZTI0LW1haW50Cis0MjAwOSA4NzQ3YmY0Yjk1NDIyY2IyM2NmMDU1MTIxNTFjODIyNGRmMzM4Yjg0IGxlZ2FjeS10cnVuaworNDIwMTAgMjFlMTc4YjkzMDMwZDFiZmEyYmFjNjNjOWRjMGIwNzRhYzIzNWE0NSBsZWdhY3ktdHJ1bmsKKzQyMDExIDg0YmEyOTllMmI1ZmVmNDExYjBhNzFmYjgxNmVkNTQ3MjYwNmNjM2YgbGVnYWN5LXRydW5rCis0MjAxMiBkMDEwNDM2NGY2ZDFjODQwODI3NzE4NGViYmRiMGEzMmIyM2U5NTBkIGxlZ2FjeS10cnVuaworNDIwMTkgNWQ4MTY5MjhhMjI0NWUxNzQ1MzFlZDczZGFjNzA2NTYwNWVjZTg0YiBsZWdhY3ktdHJ1bmsKKzQyMDIwIGUxZmQ3YmQyODk1YjA3ZDQ4ZmZlM2FmOTA0YTBkNjU5MTE2ZTMwZTYgcmVsZWFzZTI0LW1haW50Cis0MjAyMSAxOTJlODM4OTRlODk4Y2FjNDAzNjQ4NWRjMDZkNzgxM2RhZTc0MTJjIHNzaXplX3QKKzQyMDIyIDhiOGYxYTUxNDY4YWQyNDgxMTJhNjVkNGNmZjdkOTY1MDRjMGQzYjcgc3NpemVfdAorNDIwMjMgMGZlNzVhMDQ2YzAwNTQ4MGYyNGIwOWI1YjRhZDRlNjE3ZWI5MGRiNSBzc2l6ZV90Cis0MjAyNCA0Zjk1MDdiZTU4NTc5YjQyY2QyOTY3MGE1NmIxYzUwNzkzYjQ4MDY0IHNzaXplX3QKKzQyMDI1IDY2MmM2Mzk1NGRmMjk0Yjc0ODQ0MDAxNjY4ZWQ2ZDQ3ZjRkNTk0ZGEgc3NpemVfdAorNDIwMjYgZmQxYjEyZDNhYmI2OWMzOWFmYzg5MWM3YjMxODExNDg4ZWU2ZDk4NSBsZWdhY3ktdHJ1bmsKKzQyMDI4IDUyNzc3NzBiYzlkMWJhNmFiYjdiNDgwYTA1YjQ0NDliMGExNTdiOTAgbGVnYWN5LXRydW5rCis0MjAyOSBhYjEzMGQ1NjY5MzE5ZThlYTgzZTZkMGM3NWUwMGYwZDBmZjk1ZTc2IHJlbGVhc2UyNC1tYWludAorNDIwMzAgNWUyYTU4Yzg2N2Y3MmMzNzFiZmJiY2I1ZjY2YjQ5MDYwMjliZDVkYSBsZWdhY3ktdHJ1bmsKKzQyMDMxIGRhMDk5NWNhMWYzMDdlNzg3YzI0ZjgxY2MwOWQ2NjUxMWZiNjJlYWUgcmVsZWFzZTI0LW1haW50Cis0MjA0MSA3OGE2OTc1OTU0N2ViZTgwMTNmZWQwMGU5M2ZmNmU5MTc3NDZkNTY2IHJlbGVhc2UyNC1tYWludAorNDIwNDIgMjFkMzBmOGU0MWZmZGU2NzhjYzQ0MGUyMmE5YTFiOWRiYTkwNGUzNSByZWxlYXNlMjQtbWFpbnQKKzQyMDQzIGU2MDlmZWE5MmQxZTE4YTVmZWUxZmFlZWIwNGNhYTk0MTQzN2IzZmUgbGVnYWN5LXRydW5rCis0MjA0NCAwYjIzMWMwNWE3ZWRhYzE2NmQ0N2I0MjdjOWIwZGExMDNjNmUzMmE5IGxlZ2FjeS10cnVuaworNDIwNDUgODY5Nzc3NmJiNDIwMzdjMjMyNTMxNTg0N2RiNWQ3ZWNkMjVlMWIyNyBsZWdhY3ktdHJ1bmsKKzQyMDQ2IGFlNDQ4MDkzNTAxNjBlNTgzMzI5MTY2NTMyYThlZTFlYTdjZGE5YzIgbGVnYWN5LXRydW5rCis0MjA0OCBjMTI4MDAwMjEzOTY5OTMxZDVkYTE0ZGY1ZTcyNDgwNTNmZDI5M2FjIGxlZ2FjeS10cnVuaworNDIwNDkgYzllYTU1NzBkYWM3ZTZjMWY0YzBmOTQxOWZhMWViOGVlYjJkMGVmZiBsZWdhY3ktdHJ1bmsKKzQyMDUyIDdjYTUxY2I3MGMyZTI0ZGE2MjlmOTlmMjM4YmUwMmIzYWQ2MmMzODAgbGVnYWN5LXRydW5rCis0MjA1MyBiOTRlZTkyYTZkNmI1ZWI1OWU4NGM4ZTQ5OTQ4ZWIzZmM2ZWUwNDkzIGxlZ2FjeS10cnVuaworNDIwNTQgMDdmYmQzNGYxZjZlZDEzMWFmY2I0NmU0NmYyY2YzMTczOGZmOTNhNyByZWxlYXNlMjQtbWFpbnQKKzQyMDU1IGVmMWQ4ZDZhYzZiZWZiNmU0ODdhZTQxOTBmMTdlMzI2MzUzNzEyMjggbGVnYWN5LXRydW5rCis0MjA1NiBlZjNiNDM1NzhhNWZmYTc3MTQzNzNiNWYwZTlhMmU5Y2Y3MThlZDRiIGxlZ2FjeS10cnVuaworNDIwNTcgYTIxMjUzZmIwOGM5NzJkMDA2MWEyNDViNzFhYjFiYzVhNzcxYWU2NCBsZWdhY3ktdHJ1bmsKKzQyMDU4IGU3MDMzZGZmZDYwY2FlODM0OTU2MTc2N2MzMGRmZTMyM2UwN2UwZTEgbGVnYWN5LXRydW5rCis0MjA1OSBjN2NmZWExZWJiMzIzNDE5ZTI5YWZkY2IxZGVkNzVkYjViMmM0ZWNjIGxlZ2FjeS10cnVuaworNDIwNjAgNmQyYmUzYjc2ZjJlMjgzNjU3MzQ1NzRkY2M2M2FmY2NiYzFlZDRlMCBsZWdhY3ktdHJ1bmsKKzQyMDYyIDllZWFhMzNmOTY0MDYzM2M2MTYyOGJkN2FkZjU5OTZlNTBjNmNjYzQgbGVnYWN5LXRydW5rCis0MjA2MyBiMGQ3ZDI4Y2Q3NDYxZjJmMWMzNGQzNTY5MGMxMjhkZmFlMDNkOGM5IGxlZ2FjeS10cnVuaworNDIwNjQgMzg4ZWJjNmUzZGUxMTc5NzMzMTUwN2QyMjkyYjhhYjExMTY0ZTEzYiBsZWdhY3ktdHJ1bmsKKzQyMDY1IGU4ZmM2MGM0ZmFhZDdlM2E3N2UyZjg2OWZhZjM4MDJmM2U2ZTQxZWIgcmVsZWFzZTI0LW1haW50Cis0MjA2NiA0MDVhYjBkYzljYmMzOTEzZjg4NDllOTAzMTUyNTFlYmMwZmJkZWEyIGxlZ2FjeS10cnVuaworNDIwNjcgNDNiMTZlZWZmMjI2YjJlZWRjY2Q0MzUwMjkyYzZkZmUxYWM4MjFhNiByZWxlYXNlMjQtbWFpbnQKKzQyMDY4IDJhZmJhYWU2Yjg4ZTBiYWNkMmYwMjdkZjkwNzRhZjNjM2UwY2Y0ZDQgbGVnYWN5LXRydW5rCis0MjA2OSAyYzg2MzBiNmJjMzU5OTU4YjJhMDdlNjU3ZjNjOGM1NDY0NTAwZDFlIGxlZ2FjeS10cnVuaworNDIwNzAgMDI5NGU2NjYyNzQ5YWQ0YzUzZWVhYTlmZjdmYTA0ZDRkZGEyNjkyYyByZWxlYXNlMjQtbWFpbnQKKzQyMDcyIGJlY2ViOGU2NmIwYmEwNGFkMGQzMDljMTRiZDY4OTc2M2UzNGVlZTYgbGVnYWN5LXRydW5rCis0MjA3MyAyZjdiNTQwMjJiM2IxZWUzYzZjZDQzZDdhOGE1M2EwNTQ5MjYwMGFlIGxlZ2FjeS10cnVuaworNDIwNzQgNGRiYTYxZTQ5MDM3ZmViYzkwODY3NTVlYjY0ZjJkNTc5ZDYwMmUzZCBsZWdhY3ktdHJ1bmsKKzQyMDc1IDIwZjIxZGM3Mzk2ZjIzZGU5YzdmMGIxMDkyN2NiNzc2M2E3Njc2MzkgcmVsZWFzZTIzLW1haW50Cis0MjA3NiAzNzA5Y2UzN2ZlMWM0ZjFlZDZhMWRhYzUzZjY1MTcyOGYzZjRjOThlIGxlZ2FjeS10cnVuaworNDIwNzcgNjVmZTlhY2VkMDAyYmM4YTUwYzY5MWRkOGY5OWJhNjQ1ODZhZDBjNyByZWxlYXNlMjQtbWFpbnQKKzQyMDc4IGJjMTgzYjVmOGJjMTlkZWZlNzFmZTNhODRhYTk1ZDQ4YzViNWNjYjcgcmVsZWFzZTIzLW1haW50Cis0MjA3OSBlMzY0OGJhOTE4ZWU0MDA4MDVlY2QzZjQ2ZDYzOTI5ZTM0MTk0ZjY1IGxlZ2FjeS10cnVuaworNDIwODAgMmFlNDE2YWFjYjg4Nzc1N2RkOTRlOTU3NzM2YWY2MjA4ZTY0Zjc4NCBsZWdhY3ktdHJ1bmsKKzQyMDgxIDdiYjY0YWNlYWRkN2M4YzY5M2NmM2IxOTQ5MjlhYjI1YzVmZWI0MmEgcmVsZWFzZTI0LW1haW50Cis0MjA4MiBjNGM5M2JkZTE4NWM3ZmY0NDUxYjAyODEwODJlOGQwYjEwYmM0NTJlIHJlbGVhc2UyNC1tYWludAorNDIwODMgMWVmNTA2M2EwYzZkOTU0ZWYzZmVjMjhlZjFkNTdhZmVjYmRkNzZlMiBsZWdhY3ktdHJ1bmsKKzQyMDg0IGY2MmQ3ZDJjNTBkZWVkMzRmOGI2ZTQzMDU1ZDRmMTUxMWFlMDQ1MDggcmVsZWFzZTI0LW1haW50Cis0MjA4NSA0OTY2YTM2MWY5MzY0MjQ2NWZiZDdkYTJjZTU4YjFmYmViYjJiZjFmIHNzaXplX3QKKzQyMDg5IDg1YjVhMmNkYmFjMTA3YmZmMTc0MDVmNDcyOGY4MjJhMzZjODhmNDUgbGVnYWN5LXRydW5rCis0MjA5MCBhZTA3YjBlN2Q3MGE4OWEwNzdjMDQ1MDAzOTU2YWFkNzQyOGE2YWNjIGxlZ2FjeS10cnVuaworNDIwOTEgYzU4MzIxNGQ0YzUxMDk0YzhhNDZkOTdkOWMxYzg0MTVjMjVlZDM0YyBsZWdhY3ktdHJ1bmsKKzQyMDkyIGQ3OWYwNDMyODRiZDUwNmZjYThmMGMzYzdmZTY0OWFmYmIzN2UxMDEgbGVnYWN5LXRydW5rCis0MjA5MyAxYWY3ZjcxOWVkMjhmMjc3NzViMWFhYzk5YTg1OGQwMThhYWIyMjc5IGxlZ2FjeS10cnVuaworNDIwOTQgM2VmMTM4MGZkODNjMmViNTc3OTJmYTBkZGMxZjExY2NhMmI5ZmEyMiBsZWdhY3ktdHJ1bmsKKzQyMDk1IDJlMTUxYmM4MjBmNzE4NDA5OGUxYTdmZjk3Mzk0YWNjZGQ3MmZmNGIgbGVnYWN5LXRydW5rCis0MjA5NiAyMTJiYzIzNjMyYWI1ZDQ3NDkzY2QxNWZkYTMxMmE5YjlmMzFlYmE2IGxlZ2FjeS10cnVuaworNDIwOTcgMmQzYTFjM2M5MzA1NjkxM2IyYmM2MGZmMzViMjIyY2U4OGRhYjBmOCBsZWdhY3ktdHJ1bmsKKzQyMDk4IDY4NzRmMjY5M2ViOGEwZWVmOWQ2OGNlY2ViZTEzOGE5OTE2Y2Q5NTYgbGVnYWN5LXRydW5rCis0MjA5OSBhNTMwMTc2MTg1ODY1ZWY5ZWJiMDQyMjlmMWYxMmM2MTAwZjY3ZGQyIHJlbGVhc2UyNC1tYWludAorNDIxMDAgYjU4NzYxMGUyMDY5YTRkOWM0YjY3OWFlOTRlYjRjZTc1NDFjMTczMSBsZWdhY3ktdHJ1bmsKKzQyMTAxIDFkNzY0NjM4YWJkZDgwMzE3NmEwNWMxMzIzN2I1NGFjYWU1YWEzMjkgcmVsZWFzZTI0LW1haW50Cis0MjEwMiBlYTZhNDZkOGM1MWVjMGFiYzk0ZjJiZmU0ZmEyYzU0MmNiZDdmYTAyIGxlZ2FjeS10cnVuaworNDIxMDMgOThmYWFjMWRmNWJiZWRmNWViMGZmNWYyNzA0MTU0MTk0Njk4NTRkNCByZWxlYXNlMjQtbWFpbnQKKzQyMTA0IDA3MGJiNDIxYTMwM2JjZTIwMDI3MzQxOWIwZjEyYTgyNGRhYjliNWEgbGVnYWN5LXRydW5rCis0MjEwNSA5MjhkZTRhM2JlNmY1NDlhMTBiODA0YzY4MzljNjg5NWIwMjFjNThhIHJlbGVhc2UyNC1tYWludAorNDIxMDYgNWU4YWYyNDIzNTc1MDYzNDFiNzIyM2Q4OTZlZDNmOTRlNDZhNmE3NCBsZWdhY3ktdHJ1bmsKKzQyMTA3IGZkYTkxMmZlOGI5YWRjNDA3OGIxNmQyYTdmYjZiYWU3Mzg1Njg0MjkgcmVsZWFzZTI0LW1haW50Cis0MjEwOCA3NmFiYTNmYTRlMmY4MTdiNWU1MzFmMzM5N2RkOGRkMTUwMTEzOWFlIGxlZ2FjeS10cnVuaworNDIxMDkgMTdmMDk5NDc5ZTZiNzNkY2VlNWQ2NzI1NjBjN2U3MmI5ODc4Mjg1MSByZWxlYXNlMjQtbWFpbnQKKzQyMTEwIDRiY2Y1ZmU1NGQ4MzQwYWFkNzRjZTNiMjVjYzYwM2RiMmM0MmI5ZDkgbGVnYWN5LXRydW5rCis0MjExMSA5ZWFlMzJiZGY4MDFiNjcwMWJjN2I5ZjhlOWQ4ZDIzMDM1MDk5ZmNjIHJlbGVhc2UyNC1tYWludAorNDIxMTIgYWE3YWM5MDg3YTFjMzA2MzJhYmZkNzk1MDIwODY0NzUwMWFiNjcxZSBsZWdhY3ktdHJ1bmsKKzQyMTEzIGMyYjE0OTczMTBkMTAxNTliYzNjNTM0ODVlYTcwYTk0Y2ExZTEzNTMgcmVsZWFzZTI0LW1haW50Cis0MjExNCBhZWQzMmNlMzViODJkZmZhZDdlNWIyOWNhNmJiMmUxMzNhODA2ZGNjIGxlZ2FjeS10cnVuaworNDIxMTUgZDQ4ZjRhNGEzMDZmNTkzZWYwYTExNGRjMTVjMzYwZTE3MDA1ZTUxMyBsZWdhY3ktdHJ1bmsKKzQyMTE2IDU4MjUxYzk5MDRlMTg5MjcwNDQ2ZTYzMzVlYTMwYjI1NWRhN2E3OTQgcmVsZWFzZTI0LW1haW50Cis0MjExNyBlYjRhNDdiODE5NDI0Y2NmMzY5ODExY2Q2YjMyMmFhODBhNmI3ZDUwIGxlZ2FjeS10cnVuaworNDIxMTggYjBhOWE4ZDE0YWIyMjI0NGMwYWIwNGEzYzUzMDhlYTJiYjBmZjgxMyBsZWdhY3ktdHJ1bmsKKzQyMTE5IDMxNWY0NDA3YWIxMmQ1NzdlMDA3ZThhN2M3M2M2YTcwYmI4MjRhNTYgbGVnYWN5LXRydW5rCis0MjEyMCBmOGZjY2FlNmEwZjVkYzgyODdmMDZlYTc3NjUyYWM0ZTBiMmRiYmI1IGxlZ2FjeS10cnVuaworNDIxMjEgNmUxMjcwNzM3MWExMzBlZWQ0MmRiMTIwMjAwZThlNmY2ZTYxMjg1ZCBsZWdhY3ktdHJ1bmsKKzQyMTIyIDE4YTJkNzVhM2M2OTY0NGY3MTNjMjU1OWJjM2U5OTU4N2Y1YjExYmUgcmVsZWFzZTI0LW1haW50Cis0MjEyMyAzYTkyZTU2NTQ3NDg1YWQ4OGRmZDZiOGRjYjFlNGFjNzVhOTA0YWEzIHJlbGVhc2UyNC1tYWludAorNDIxMjQgYmExNjA0NjRhOGM2YzE5Y2ExMzM5OGRjZmU2Y2U5Yzc4YjA1YzBmYyByZWxlYXNlMjQtbWFpbnQKKzQyMTI1IDA0YTk2Y2M4ODU4M2VjM2MyMWY5MGYzYWY0YzdkMWQzMGZiMzFlMTcgbGVnYWN5LXRydW5rCis0MjEyNiAyNDQ1NjMzODAyNmMwNGYyZDVkZjgyMDNhY2VkNTI0NTg5ZTlmMmQ3IHJlbGVhc2UyNC1tYWludAorNDIxMjcgMWU4ZjQ2NzNlNDQ3NDczYmFjNGM0ZTE0MWQ5ZjY2ODI2Y2Q2N2FiNCBsZWdhY3ktdHJ1bmsKKzQyMTI4IGIwNWM0Y2E4NTk0MzRkYjc2MWZmM2NmNTAxMGM5ZDdlZTg5NzJkMGUgcmVsZWFzZTI0LW1haW50Cis0MjEyOSA0NzQ2ZmFiMzQwMTI0NGZmYmY0YmY4Y2M2Y2JiMzc0ZmQ0NjA5NWFiIGxlZ2FjeS10cnVuaworNDIxMzAgYWMwMmY2NTViMzFlMzgwOGUyZmFhNzdiOWZlZGM1MmJkYWE3NzIxOCByZWxlYXNlMjQtbWFpbnQKKzQyMTMxIGNhNmM4MDBhZDVhMDJjMTE5YmIwYzNhMzlkZDcwYWVmNmNhMTNiNjUgbGVnYWN5LXRydW5rCis0MjEzMiA2ZmNiNTQwNTA3NGU3YTVlNTg0OWRiZjRhMGYzN2Y3ZTc2MzcyMzJiIGxlZ2FjeS10cnVuaworNDIxMzMgOTc4ODVhZGY3M2I1NDcxYWM3ZGEzYTQzMmYzZGY4MWQwMmNjZjdhYSBsZWdhY3ktdHJ1bmsKKzQyMTM0IDc4NzAyYTUwMjhhNDFmODVhYjgwZjRlYzcwYzFkNWY4MWE1MDJkNDAgbGVnYWN5LXRydW5rCis0MjEzNiA5ZjdjZTI4NDZjMzA5NTljNTQ1ZDkxMTQ2ZjgxNzQ5NTUzYTkzM2Q4IGxlZ2FjeS10cnVuaworNDIxMzcgNjFiOGUzZTNkNjQxODNhY2MyODA2NDRlYjY0OTkxYzY0YmQ0YjljNCBsZWdhY3ktdHJ1bmsKKzQyMTM4IDI4MDY1MDc5MmVmNzJiN2NlZThiOTM4OTgzYjFhZjA3NGFlMDNiODQgcmVsZWFzZTI0LW1haW50Cis0MjEzOSBmOTQ5OTFkNWRkMjA2OWNiZGFiZmY5ZDQ4NTlhZjA1ZGI0MzQ0NmZjIHJlbGVhc2UyNC1tYWludAorNDIxNDAgZmRmMWJlOWNmZWRmMmIzMDE5NjAzMmQ5MzMzZjlhNTc0ZjMzNjk3MyBsZWdhY3ktdHJ1bmsKKzQyMTQxIDAwZWUyMTcxNTM3Zjc1ZGU3YTcwOTU4ZmI3OTg1NDdlNGQ5NDUzNjYgcmVsZWFzZTI0LW1haW50Cis0MjE0MiBmMDE1NDNlMTVmODVhNDk5MWUzMjAxMWQxYTJiNWExM2U0MWMxNjVlIGxlZ2FjeS10cnVuaworNDIxNDMgNDMxNWM1M2Y1MWJjYTYwNDI5ZGE1NmRiM2U1YjMxNjM3ZDA2NGE0OSByZWxlYXNlMjQtbWFpbnQKKzQyMTQ0IDRkMmEwOWE2NDg1ZDNlOWM5OGNiOWExYTZmNjU5NzVmMTMxMjgyZDMgbGVnYWN5LXRydW5rCis0MjE0NSAzYjYzYmM5MDRkOTJlN2I1YjUyNTA0M2UwNjYxOTJkNzBkZDkwMDUwIHJlbGVhc2UyNC1tYWludAorNDIxNDYgNGYxMWIyM2UzNjFmNDU0ZDllOWE5ZWI3N2E5NGU0YTY2NDk4NDhmYiBsZWdhY3ktdHJ1bmsKKzQyMTQ3IDQ0NmNiNWZjM2QyODBiZjdmYzQ2ZjJkNmRhZDJjODEyNjAyOTg1YzggcmVsZWFzZTI0LW1haW50Cis0MjE0OSBhMTdiNzM4MjZmOTc4M2E4MDE2OGU1NDc4ZTdiMzRjNDQ1MGQ4N2YyIGxlZ2FjeS10cnVuaworNDIxNTAgYzgzYzAyMmEzNDkxZWIxNmZlMWFmZjVhNzhlNDFlY2U2OTczM2RjMCByZWxlYXNlMjQtbWFpbnQKKzQyMTUxIDgxNDBmMDAwZTlkNDU5ZWYzNGYzMjlkMzViNTlmMGNjMmMwY2VjMWEgbGVnYWN5LXRydW5rCis0MjE1MiA2MDRmZTg3YWQ0N2M3YzBjMTkyNGViMzlmOWRhYTdjYTg1ODJlMGU3IGxlZ2FjeS10cnVuaworNDIxNTMgOTlkNDkxZmFhNjVjMmI5ZGY3ZTE0ODgwOTcxYTZkMTEwNjUyYmNmMSBsZWdhY3ktdHJ1bmsKKzQyMTU0IDdiM2Q5MTViNmU5ZDAwMTIzZThmYzdlNWNmOGFkNDcyYTI2NGZiNmEgbGVnYWN5LXRydW5rCis0MjE1NSA0ZjkwYzdjMDUzNjRmNDI0YjYzZDYyZDRkMTJiMTNmY2QyNzE2ODJjIGxlZ2FjeS10cnVuaworNDIxNTggODM4YjVmNTkyNGVlMTcxNDE0NjdlOTE4ODE1YTNkNTNlMGRlMzgxMyBsZWdhY3ktdHJ1bmsKKzQyMTU5IDNiNGI0NDU0ZmU4NjY0YmM0YmVhZjE1Y2M4ZTFjMTk3M2U4MzA2M2IgbGVnYWN5LXRydW5rCis0MjE2MCA1ZWU0NmJiZWQxZjlmZTA0NjllMTZlMmRkNDQzZjRjZDY1ZTYxOTA4IGxlZ2FjeS10cnVuaworNDIxNjEgNWM0ODdjYjYzMjk1MDc4ZGIzZjMzOWVhZTNjNjcwZTZiNmQ4MjdhNiBsZWdhY3ktdHJ1bmsKKzQyMTYyIDdmMDU5NzRjOGI4MDMxN2YyODcwNjkyMThlMjAwMGUxMGE3YzUwYzkgbGVnYWN5LXRydW5rCis0MjE2MyAwMDA2YWUxMGI3ZjBjOTJjOTFhM2UwOTAyNzRjMmE4ZmE0MDI1MDM5IHJlbGVhc2UyNC1tYWludAorNDIxNjQgNzhiZDc4YTFjZTc0YjQ2MWYyNThiNTZiNTU0YjVmYmZlMDdjYjcxNiBsZWdhY3ktdHJ1bmsKKzQyMTY1IDIwMTJjNTQ4Y2U2OThjYmY0MGJiOWU0NWM2YTgzODEwYWQwYTcxOWMgcmVsZWFzZTI0LW1haW50Cis0MjE2NiAzMTE0ZWIwNjBkMGFlZDJlYTc4NjVlMmYzYjQyZDE4ZWE5OThmZTYzIGxlZ2FjeS10cnVuaworNDIxNjcgNzRhNTk4OTY0Yzk2MjhkMGE0N2Y5Y2RkZTRhOGU0NDJiNjUyYTgxNiBsZWdhY3ktdHJ1bmsKKzQyMTY4IGEyOWNjMjNiYjg5YzRjNWY3N2JlZTIwYzMwOTRiOTg3NTZlY2UzOGYgcmVsZWFzZTI0LW1haW50Cis0MjE2OSAwMzcyZTI1ZTQzMGVjYzU3MmYyZjhhOTJmNjllODFiODVhNDIyODVjIGxlZ2FjeS10cnVuaworNDIxNzAgYTUwZjU2MzVhNDk0OWM5NTZmZTdjZmIwYWIxMmY3ODZiNDJjMDIzYSByZWxlYXNlMjQtbWFpbnQKKzQyMTcxIGQ2OGY3M2Y5NmYzMWY3MmUzNDQzOWM1ZmJmNGY4Yjk1OTc2ZmZkNDYgbGVnYWN5LXRydW5rCis0MjE3MiA2YWI4MmM0NzA2MzM4ZjFlNDY1YjJiNWExYmI5ODBmMmZiNTQ1NDY0IGxlZ2FjeS10cnVuaworNDIxNzMgMDU1ZmNkYzY1MmRkNDM1NmNmYThjNDg1MGZjNzZiMGM0ZDAyOTJlMyBsZWdhY3ktdHJ1bmsKKzQyMTc0IDFiOWViOTYzMmM4OWI4YTA5NGIzMWJhMDcxOWRhYjRjYzQyMDdmMTIgbGVnYWN5LXRydW5rCis0MjE3NSBiZmIyNDdkN2JjM2Y3MjUyZjMzOTkxODkxZjQzZDRjODY1Yzk5NzlhIGxlZ2FjeS10cnVuaworNDIxNzYgZDU3MzRkYzA3ZDRhYmQ5OTVlMWU5NWRmYmM0NTFhNzBhZDZmNDA1NyBsZWdhY3ktdHJ1bmsKKzQyMTc3IDUxMjM0NTM2OTBlNTFhMTg4ODZmZWExZWQ1MTQ0ODMzZWQzYWQ3YjQgbGVnYWN5LXRydW5rCis0MjE3OCBkNjJkYTM2YWFlMTU1MTI1YWNmYWMzYWM5NWE5ZDc3N2ZmNjJlYWY5IHJlbGVhc2UyNC1tYWludAorNDIxNzkgZTdmMTllZDFlYTJkYzBjYTFiYzIwMDA5ZDQzZmM3ZDdjYjJiYzEzOCBsZWdhY3ktdHJ1bmsKKzQyMTgwIGMwMWQyMjcyZTZjM2E2ZmI0OTc0ZjhlNWUyZTQ4YjRiZjgzYjBiNzAgcmVsZWFzZTI0LW1haW50Cis0MjE4MSAzZGY2MzQ2MWIxMTZkMzc5ZDdlZTg2MzdjMGMzNzI3M2UxMjIxMzk2IGxlZ2FjeS10cnVuaworNDIxODIgZTAyODlmYmE2ZmYxZWE5MzkxYjZjYTM3NGZiNjAwY2ZkNDYzOWI0ZCByZWxlYXNlMjQtbWFpbnQKKzQyMTgzIDA0MGQ3ZmI0ZWI1Njg0N2FkZGUxMGQ4YmYzYjZhM2JhNjZkOWQzNmIgcmVsZWFzZTI0LW1haW50Cis0MjE4NCBlOTc4MThiYzI5MTk0NGFmNmQwOWUxZDY3YjJiMDRkN2I3YjhiM2M1IHJlbGVhc2UyNC1tYWludAorNDIxODUgMTM1OTYwNWYzNzEzZmI1OTIzOWVmZmMwZmEyNTM3YjFkMTkyNzU3MyBsZWdhY3ktdHJ1bmsKKzQyMTg3IGFmNjg0ZDczZjNhNjczZGY5NzMxYTczMTBlYjA2ZmVjYThjODlhY2EgcmVsZWFzZTI0LW1haW50Cis0MjE4OCBjM2I2NzI4ZDg4NmI4NzdjYmQ0MWZhNDBkYzJmZTY4ZjJmNmEzNDI4IHJlbGVhc2UyNC1tYWludAorNDIxODkgY2RlNmVhMDkxYWFhZmNlNDVlMzE1MmI5NGM5YmE1M2FlYTUyOGQ5NiBsZWdhY3ktdHJ1bmsKKzQyMTkyIDA2MDI4ODdkYWRmNWY1NzQxZjM1NTQ3NmQ2YjAxODE5MDFkNTY2ZGUgbGVnYWN5LXRydW5rCis0MjE5MyBmMGFkYTZmMGY2Nzg5OTI5M2E5YzQyMTk3NDExMjRlNDA5MmExMWM3IGxlZ2FjeS10cnVuaworNDIxOTQgYTYyNWU4ODc2NDA3MDM4MThlMjNmMzAzNjBmZTU0NjdlM2I4MzA3MyBsZWdhY3ktdHJ1bmsKKzQyMTk3IDk1MGUzZTM4NDNiYmYwMDQ3N2MzMWUyZTQ0OTZiMGY2MDJiZGY1M2IgbGVnYWN5LXRydW5rCis0MjE5OCAwMDA0YTlkMDRkMDM2NjU3MTQ2YTJlMjFmNGY1YWIzOGQ2OTQ0MWUxIHJlbGVhc2UyNC1tYWludAorNDIxOTkgMjI4OTk1MDIxMTdmZTY4OTFmNjkyMWM3YWMxMDkwOTg4NjFhYTQyMiBsZWdhY3ktdHJ1bmsKKzQyMjAwIGZjMTJjY2E3M2MzNWQwYmNkMTZmYmQ4MGM5NGM3MWI0MWQ3YjY4YWQgbGVnYWN5LXRydW5rCis0MjIwMSAyOWJmYmI1ODhkOTNmODg3NzE3YWI2MWUxMTNlMTBmZWU3MjNkMDRiIGxlZ2FjeS10cnVuaworNDIyMDIgMjNmZTQ3ZTkzMzdkOGY5YzY4NDEyYTFhNjVmNGY1MmQzYjI3MDlmMiBsZWdhY3ktdHJ1bmsKKzQyMjAzIGJmYTIyNzI2N2Y0ODE0ZTgyZTlmYmFjZWE5YTMyMWU2YTExYWZjOTQgbGVnYWN5LXRydW5rCis0MjIwNCAwZjJkODIwMDNhMGZiNzRkNGQyYWU0OWI3MWIzNTdiZWYyOTk1N2U4IGxlZ2FjeS10cnVuaworNDIyMDUgMjgwZDYwMTljZjQyNmMwYTAzNjYxMjhjZGE3NmIzNGE4NzEyOWJmNSBsZWdhY3ktdHJ1bmsKKzQyMjA2IDM4YTk0ZTU4YTY5NTZjNmFhOTcwOGM4ZWY3ZTI4M2MwNTMxMTUwNzYgbGVnYWN5LXRydW5rCis0MjIxMiAxNmJmZTkzODYwNjhjZmJlMThhMzVlZTljMjk5MmU2MWNlYjliNmY4IGxlZ2FjeS10cnVuaworNDIyMjEgODE5NDJmYzlhMjBkMTY2OWU4NzI2OWZhNmE2YmYyNjgxOTRkZjk1NCBsZWdhY3ktdHJ1bmsKKzQyMjI2IGQ2ODBmYTUyNTUxMjI2YzQwZjI1NGM5YjRmNmIxMjg4Zjc1MWM2MDAgbGVnYWN5LXRydW5rCis0MjIyNyA2YThkNWUwNTRlOTcxZDNkYjRkZjBhOWNjYzJmOWRiYTljOWQ3NDczIHJlbGVhc2UyMy1tYWludAorNDIyMjggZjIzNjYxMDhiY2IyODFjNmQ2Y2Y2YjllYjM0M2Y5M2Y3MzNjM2ZjMCBsZWdhY3ktdHJ1bmsKKzQyMjI5IGJkNDRjN2MwOTc3ZjU3NjcyOTE2NWY3YTU0MGYxMDRlMjFkYmQ3MTIgcmVsZWFzZTI0LW1haW50Cis0MjIzMCAyNmUwZjY4ZGU4NmU2YmFiMTAwMDhhMzMzNGU1ZmY2ZGIxN2M4OGU4IGxlZ2FjeS10cnVuaworNDIyMzIgNjU1ZmEyMjYwNjc5ODQ2M2YzZmYxNTNhMGFkOWM3Yzc5NzEzZDg4MCBsZWdhY3ktdHJ1bmsKKzQyMjMzIGU2NjIyODU4MGVhMjY0ODQ4YThjZmEzNDQ3ZDM2OGUwMmI0MjI3OWIgcmVsZWFzZTI0LW1haW50Cis0MjIzNSA5NGQyN2UwMTgzM2RhNDc5YmRmOGVmNThiNmUyMTdkMTdlM2JjOWQ0IGxlZ2FjeS10cnVuaworNDIyMzYgY2IwZGJhZTcyYThlNzYxYjE5ODk0YzkyOWIxNzE4MGM4ZjY4YjFkMiByZWxlYXNlMjQtbWFpbnQKKzQyMjM3IDVlMmFjZjc0NDFiZDY5YmNmY2RlNWJiMWU0YjM3MjA1N2IwMWI2NmEgbGVnYWN5LXRydW5rCis0MjIzOCBkYzMyNDYzMDE1ZjFiY2Q4NDI2ZWEwYTMyYjQ1OGFkZTViZDA3YzA2IGxlZ2FjeS10cnVuaworNDIyMzkgOGUyM2E3Y2NmNjE1ZDE5NGJjNGNiMzNiNjBhM2QzMjZkZDk3YjBiZCByZWxlYXNlMjQtbWFpbnQKKzQyMjQwIDlhNGZmNmQ2ZTcyNDY0MTNjODdhMWU1ZWJiMTc5YmVhY2E2MjY2MzAgcmVsZWFzZTIzLW1haW50Cis0MjI0MSBhMDdmYjJlZjUyYWU3NTk5YzZhZjQzYzg2MjU5YmY2MTcxMjZlYmFkIGFzdC1vYmplY3RzCis0MjI0MiBkMWVmMjNhMTY3NjBjMjMxMzRiODlkNTZhMTNkNGE0MjZkODU0Y2FkIGxlZ2FjeS10cnVuaworNDIyNDMgYTMwNDZkNDNlYjUyZjJmMWNhZmM4Yjk5ZTU2YjQ4YzZlNDU1Y2UzYiBsZWdhY3ktdHJ1bmsKKzQyMjQ0IDAyZjA3NDRhOWNkMDJkZDgwMTM2ODA0NTI4NmM1YWYzMmJiN2Y5MDMgbGVnYWN5LXRydW5rCis0MjI0NSAzZWRiMWJjZDQzNGQ0ZGExYjljYjM5Y2IyZjFmYTdmMjI1YmYyMDU5IHJlbGVhc2UyNC1tYWludAorNDIyNDYgMzg4YTU4M2U3YTYzNDRkNWUwZGU1YTA5ZTIzYzNjNmNlYTQyYjkxOSBsZWdhY3ktdHJ1bmsKKzQyMjUwIDRlZDMwZWFhMDI1NjEyNWE0MjEwYzBiMjUzYTBiNTJjMWEzYzJkODkgbGVnYWN5LXRydW5rCis0MjI1MSBjMTkzMjgzZTYzYmNiNzYxMjUzYWQ5YTg4MzVhZTIxZmU3NDc1NmVkIGxlZ2FjeS10cnVuaworNDIyNTIgODQwNGM5ZWZkYzM1ZWJmZjcwMTVkNTUyZTY4YzdlZWVmNzdjNWQ0MSBsZWdhY3ktdHJ1bmsKKzQyMjUzIDc3ODljYzU1N2UxZWZhNTRjMDhlYTlkMzZhMzBiZDE2OGI0ODUxNjMgbGVnYWN5LXRydW5rCis0MjI1NCBhZjY3YjYyNjVhZjZhZTBiZGZkNWFlZmMzNjlkNmVhZTgyNTE5NDU5IHJlbGVhc2UyNC1tYWludAorNDIyNTUgMDAyZjliOGZlYzIxZTcwYjZlZmQ1MDEwYTVjOWQyZjQ4ODk2OTI1YiBsZWdhY3ktdHJ1bmsKKzQyMjU3IDBhMmE0ZjE0MTEwYjk0YTg0MWRjZWRjMWEwYWE5ZGY0ZmYwYWUzYjcgbGVnYWN5LXRydW5rCis0MjI1OCA1MWY3NjAyODgxMDQ1MjlhYTdkMDQ1Zjg1ZjY5NWRlY2QzNWIxZmQxIGxlZ2FjeS10cnVuaworNDIyNjEgZjM4YjYzNTI2M2QzYTFmZmY2YWVkNGQ3MDQxZDc5N2IxYTgxNjRiNSBsZWdhY3ktdHJ1bmsKKzQyMjY4IGNkNDQ1OWQwOGVlMjM2OGU2Y2U4ZDBlMmI3NmJiMjAyNjAyOTRkM2YgbGVnYWN5LXRydW5rCis0MjI2OSAzYWJmMzMyNjQxNDYzMzYxZDhmOWI4ZWYwYTJjYzVhOWFjNzFmMmQ3IGxlZ2FjeS10cnVuaworNDIyNzAgZWE1NGVhZjkyMDE2MDMxODg1ZGJjZmI1N2ExZWExYzEyZTMzZWM5ZSByZWxlYXNlMjMtbWFpbnQKKzQyMjcxIGQ1OTYxOWEzNzFjMjE3OWMzMjBmZTdkNmQ2MDU1N2JhYmRhYzJiNDYgbGVnYWN5LXRydW5rCis0MjI3MiBmZGFjZjcyZDQ5NzYzMDJjOTJiNDU1MTlkYTQ1OTQ1NmJhMDIzYzk3IHJlbGVhc2UyNC1tYWludAorNDIyNzMgNTUyNDY0ZDgxZTFiMjE2OTYxZWEyYTc2YWVlNTgxNWI5MmE1YmQ0YyBsZWdhY3ktdHJ1bmsKKzQyMjc5IDg0MTZmYjMyMDQwMzkxOWE2ZGQwNjZmMDI4NmQ5NWJlOGMyYWI1ZGYgcmVsZWFzZTIzLW1haW50Cis0MjI4MCAzOTdmNjM5ZjdlNmI4YWZkMGI4MzIwNmEwYzhmZDlkMTgwMzYzMWJiIHJlbGVhc2UyNC1tYWludAorNDIyODQgNGMyZDZlYjhkNWU5YzNjNjI3ZWFhOGY5YmU1YWYzOTQ3NGM2NmNkNSBsZWdhY3ktdHJ1bmsKKzQyMjkwIDg5ZjFkYTEzNDJjYTQ3ZGY4YWJiZGEzMDA5NDczNTVkYTE5ZjdlZWQgbGVnYWN5LXRydW5rCis0MjI5MSAzY2Y4YTllZDQ0NmIzZTRiMTA1OTExNTk0ZDEzMTI1YjI1ZmYzZmMyIGxlZ2FjeS10cnVuaworNDIyOTIgOTNlZmE1OWIzMjk3Y2ZmYWM3ZjkwNmVlOWE5MzkxMzc3ZWM1MGQxNSBsZWdhY3ktdHJ1bmsKKzQyMjkzIDA1ZTMxNGVlMjZmNzcwODg1ZGQ3Nzk2NjczODY5ZTY2OTAzZjkwNjggbGVnYWN5LXRydW5rCis0MjMwMyAxNjUzODliMTRkNmJhNzE5YmNjMTUxOWZlNDE3NGY1MGY1MDNjNGQ2IGxlZ2FjeS10cnVuaworNDIzMDQgODFmNDRkMTJiZWY3YTE4ZTM4ZjY2ZTU5MTRkMDMzNWY4Y2I5MzdhYSBsZWdhY3ktdHJ1bmsKKzQyMzA3IDdiMTlhNTMzY2U5YmFkOTVkZjg1N2IzY2E0YWRkOGFjZTc5YzBkYmYgbGVnYWN5LXRydW5rCis0MjMxMSAwYzVhZTg5MjQxMDRlZTY0MTdkYjBkNDVjMDViNzUxOGZkYWU4YmY4IGxlZ2FjeS10cnVuaworNDIzMTMgMWMzYjE1ZGY2N2EyOTM5ZmYzMDFkYjhkZjBjN2U2YWExNzY3M2Q0MiBsZWdhY3ktdHJ1bmsKKzQyMzE0IGMwNzNkZmZiZTcwZWM5NWMyM2JiNDBlNDBlMDhiMGE5OTljNDNhM2MgbGVnYWN5LXRydW5rCis0MjMxOCBkMjE4NzVkMzU5MmI2NDk3NGIyNmIwYTAwMWVjMTQzZjRjN2UzMWM4IGxlZ2FjeS10cnVuaworNDIzMTkgZTJkNDYwOGY1YzFkNmQwZjhmNDU1ZWY4NDdhOGVlMGE3NzkyNTk5OSByZWxlYXNlMjQtbWFpbnQKKzQyMzIwIGQ0OTZjMDc2NGFkNjE0YTdlNThkYTk4M2I3N2M0ZmRjMWVjODZlZmQgbGVnYWN5LXRydW5rCis0MjMyMSBhZTFkYTUxMjQzODI0YThkN2NhMzdlYzcwMjc3M2ZmYTc4ZmRiM2E1IHJlbGVhc2UyNC1tYWludAorNDIzMjIgNmM2YjQyOWE3MDMwYzY1MDA5ZDhmZGYxOGY3Y2U2MWU5ZGUwMTRjYSByZWxlYXNlMjQtbWFpbnQKKzQyMzIzIDUxMjk3ODMxYjVmODkwOWVlMzY0ZjRiODJhOTdjYTFmYjYyNWI0NmEgbGVnYWN5LXRydW5rCis0MjMyNSBiNDhhMDQ3MjljYzQ5OGIwYmQzZThkYTMzZjg2YWQ1MzhlZTMxOGFiIGxlZ2FjeS10cnVuaworNDIzMjYgMjBmNzVkNWU3OWU5NTNiZTQ2ZmExNWYyYmJjYTQyMDlhNjEyNDZlOCBsZWdhY3ktdHJ1bmsKKzQyMzI4IGMwMDcwZDc2YzBkYjNlMDU1MzFlMmE5Nzk2MmY2YzA3ZDMyYTRhYzIgc3NpemVfdAorNDIzMzAgMzZlYWUzZmMzNzNkNTAxMDUyYWQ0ZjJmMWNhYzA5M2EyZDk5Mzg3MyBzc2l6ZV90Cis0MjMzMiA3MTUzMDkyMWNlOTNiM2UzN2U1YmQ0YmE5OWRkODZhNzI1N2E5ZTk3IHNzaXplX3QKKzQyMzM0IDJhMzIzMWZlNzJlMjk4YWQ5Zjk5MTNmZDk3Y2RjZmJhN2VmNTgzMmIgc3NpemVfdAorNDIzMzUgOTlkZmRjYzZkNjEzZGRlNDRiODlhODE0NmMzOWU2MmNkMDc5MTYyMCBsZWdhY3ktdHJ1bmsKKzQyMzM4IGM0NmRlMWU1YjlhMDMyMDE4MDg1Y2FkNmY0NmQ1YzAxZmU3NGJkMDEgc3NpemVfdAorNDIzMzkgNjVhZTczMGI2MjMxNDNhOWI1Y2UyYTFiZjE1MzkyYzc3YmU5YzhjYiByZWxlYXNlMjQtbWFpbnQKKzQyMzQyIDA3YmE4YWFlM2RjNjcxYTg2MTkwMTkyMGJhMmQ0ZWVlZWM0NmU3OGIgbGVnYWN5LXRydW5rCis0MjM0MyBhMmI2ZGRhYjY2ZDc4YTBiODk5ZmI4Nzk0ODdkY2I3Zjg2MTI1OThkIHJlbGVhc2UyNC1tYWludAorNDIzNDQgZTQ3MWYxZGYyZDAzMWYxMDY2ODgyOTk4OGFmMThhNTJkNDJjMTA3NCBsZWdhY3ktdHJ1bmsKKzQyMzU0IDc0YjI1MzNiNTliOGJlYjQ3ZGFiMjc1NTRjYTdjMTJjNGQ2ZmUzZTQgbGVnYWN5LXRydW5rCis0MjM1NSBjN2FiNDE3YzU5YmM4YjAzZDg2Njk1YjRjMmI4ODdlNzUxYTAzMTFlIHJlbGVhc2UyNC1tYWludAorNDIzNTYgYWNkNzAyZTMwNmZiNDE0YjlkYWU4YjYwMTJiYTZlMjc2ZjY5NWQ1NCBsZWdhY3ktdHJ1bmsKKzQyMzU3IDU3NGMyNWZlNjAyODQ1MjBlZDI1M2UzMzRjMjc1OWY4OWNlMjNjOTkgbGVnYWN5LXRydW5rCis0MjM2MiAzNDQ3NTQ0OTdjYjNmNTg4ZTY1ODc1ODEyNDU2ZGIwYTE5MDVkZjdiIGxlZ2FjeS10cnVuaworNDIzNjUgMjIwNDk3ZTA4OWNlOGRlYjViMGM5NjM3ZjExMzFlNDA3YzM3MzRlZSBsZWdhY3ktdHJ1bmsKKzQyMzY4IGRiMmZjYTllYTI2NDA2MjgxODZlMzYxZDBhNTUzMjhlYTM3NjMzMGEgbGVnYWN5LXRydW5rCis0MjM3MSBjMGMzNmJiZDVlMGMxOTQzNzY4YjBiMzk5M2I2YzUxOTRhY2RlMjE5IHJlbGVhc2UyNC1tYWludAorNDIzNzIgMTdlYzE3ZGQyYWIzZDdmYzQ2NjQxMjRmYjQ3MThkMzNlYjBlZmNiZiBhc3Qtb2JqZWN0cworNDIzNzYgOTY2ODVmMTEyNzA5NDQ0NDUyZDQxMDQ0MzdmNmZkNjhkNzRjZTFiYyBsZWdhY3ktdHJ1bmsKKzQyMzc3IDM1ZGU4YmNjZmQwZWQ3MjhiOTliYzQxYWNmYjVlMjIyOWU1MDgzNDYgbGVnYWN5LXRydW5rCis0MjM3OCA5OGY3Yjc0M2Q5MWIwMzViZWYyNWE0OTY2ZDkxMzA0NWRlNWQyZjQxIHJlbGVhc2UyNC1tYWludAorNDIzNzkgYzAzNGNkZDc5NjBjZWM2MTQ0ZWEyYmY2NWE0NGRlZjBmODE5ODliZSBhc3Qtb2JqZWN0cworNDIzODAgMzYyNWM4YjE0M2Q5Y2NjZDU5MjhjZjkwY2ZlMWJjYWE3MGFmOGZiOSBzc2l6ZV90Cis0MjM4MiA3ZmRjNjM5YmM1YjRkM2MwOTJjYjNmZDdkODdmNzNkYjNkNDdiYTI3IGxlZ2FjeS10cnVuaworNDIzODQgYjhlNzNjMmQxZjE3YjI3NTBjNjUzNzFmMjc3MjU5OWQ4MzUxN2NhNiBsZWdhY3ktdHJ1bmsKKzQyMzg1IDc5OThkODU2NDljOWUwMDBiMzdiYzBkMWYwMTZkZjQ2NjNjNzY4ZmUgbGVnYWN5LXRydW5rCis0MjM4OCBkYTkzZjlmMmQ2ZThhODFmZGRiZDUzYTBhOTUxNjZmZTlkM2E3OWI2IGxlZ2FjeS10cnVuaworNDIzODkgNTgyNWM2YWNlMjhiNjBlYjU3YTVkNTQyNTU5M2NlZjNiZTFjMDYyYSBsZWdhY3ktdHJ1bmsKKzQyMzkwIDc3NWRlZmJhNGVlNzRiNTYxYmY0MzhkZmQ3MWU0MmJjMzQxOGNkZjcgbGVnYWN5LXRydW5rCis0MjM5NCA3NjdhZGMwOTg0MTYxYmY2MzMwNTI0MzYwYWIzMDdjNmI1MjUxNzllIGxlZ2FjeS10cnVuaworNDIzOTUgNzMyMmRjY2JhMjI0MjhhNDJhYzg5OWQ1MGVkOTRlOGQ5NWYyNDE2MiBsZWdhY3ktdHJ1bmsKKzQyNDAwIDEzZTk4ZTM2OWFiZDlmODZhZWM3NGJiMzRjMzNjMTVjODc4YTczNmIgbGVnYWN5LXRydW5rCis0MjQwMSAwZjM4OTRiYjJhZGFhYzhhOWE1YTU2ZGMxMDRjYTAxZGU2OWZjM2RkIGxlZ2FjeS10cnVuaworNDI0MDMgMTU5NmZmNWM3OWI1MDJlMWIzYzRjOGYyYzM4NTI4YjVlYTJiYmFjMyBsZWdhY3ktdHJ1bmsKKzQyNDA0IDMzNTBmODVjODg5ZmQ4MGJkM2ZiZWJhNzhmOTUxMmQwMmQxYzYyZTcgcmVsZWFzZTI0LW1haW50Cis0MjQwNSA0NDVjMGFhODExY2E3MGRkOWQ3YjgwNzgyNmM0NmExYzYyNTRjM2Q2IGxlZ2FjeS10cnVuaworNDI0MDYgOTE0ZjViMGRhNTRlZTFmNDAyMzEzZTU5MTEzNDE1ODQ5MTQwNDhiMiBsZWdhY3ktdHJ1bmsKKzQyNDA3IDdjOWNmZDNiNWQwZmE2ZjFkNDRlNWNmMzRjMWM4NTlmZmI5ZWVhNGMgbGVnYWN5LXRydW5rCis0MjQwOSA3ZGMxZmU3NzcxM2YyZDIwY2M5NDE1NWZiOTE5ZjhmMDJhYzEwYTcwIGxlZ2FjeS10cnVuaworNDI0MTAgOTEzMzFhODg3MThlMDJiZTIxMWI0OTczNDEyZmNlOGZiNjhlNzZiNyBsZWdhY3ktdHJ1bmsKKzQyNDExIDlmM2Y4N2U5MjBhNmQxZTE5NTU3NzE5MWExYjUxOWM5YjFkNjk1ZTYgbGVnYWN5LXRydW5rCis0MjQxMiBkNmQ0MTVkZjBkZjBhYWMyYTFjYTdmMzFiNDk1OGY5NjQzZTAxODcxIGxlZ2FjeS10cnVuaworNDI0MTMgMjY0NzBjZGVlYTNkNmZiZWNhMGMzMzdkZDVlN2NmMTQ4YzU3MzI5OSBsZWdhY3ktdHJ1bmsKKzQyNDE0IDMwYWVmM2NlMmIyNmMwOTE5Y2FmN2NmNmJiYWZhZmFkYmE1OTQ0ZDQgbGVnYWN5LXRydW5rCis0MjQxNSAyNzkxNjc2YjM4MjU5MDA3NjMwZDk3N2IxNDQ2YTk0NjJiZjM2MDU3IGxlZ2FjeS10cnVuaworNDI0MTYgNjcyYzMwYmY5NWU2OWE3ZGUxOGMxZDc3YmM1YmYzZDU3OTI2NmQxZCBsZWdhY3ktdHJ1bmsKKzQyNDE3IDRjODYwNjE5MWMwY2YzMjJlOWU3ODUxNzg0MDA5ZDdmMmUyZDcyMjAgbGVnYWN5LXRydW5rCis0MjQxOCAyMjk3YjI3MGZjZjY4ZDk2MGZmMjFjYTA1NDk2ZTQzMDAxNzIyNGQ4IGxlZ2FjeS10cnVuaworNDI0MTkgMDBmOWM2ZTE1MGJhMjU4N2M2OGYzMmYxY2U4NTY3NzFkN2VmYjhmYyBsZWdhY3ktdHJ1bmsKKzQyNDIwIDlkZjYxYjk2YWE0MjY0YmQ5NDI1OTkzYWMyYjhlNzhhMzYwZTE5YTcgbGVnYWN5LXRydW5rCis0MjQyMSA3NmNlODgwZGNlNDllMTExM2RlNmUzMGY1MjY2NzcxYjk3Y2RmODRiIGxlZ2FjeS10cnVuaworNDI0MjIgNDQyYzBmYjNjNGVkMTExOGQ4YjFkMmI1ZjBkZGNjZWJhZjU3ZTBkYSBsZWdhY3ktdHJ1bmsKKzQyNDIzIDkyYWZmOTc0MTdjNDZhMWFhYTA2ZDYzMDkyZDFmM2IzNmM2Y2M3MDIgbGVnYWN5LXRydW5rCis0MjQyNCA3MWU2ZjZiNDE1YTRjMjYzMjk0ZDJjMjQwN2RmODZmYzQ5YThkZjM4IGxlZ2FjeS10cnVuaworNDI0MjUgMGMwOTZiZTI3MDAwM2RhY2FhM2U1YzY4NjE3YTA0MjUxZTkzYjY3NSBsZWdhY3ktdHJ1bmsKKzQyNDI2IGVkMDdjMWE1ZTI0YzYyNzYzOWEyZTEwMWVjNzc4NGI4OTk1ZjRkNjggbGVnYWN5LXRydW5rCis0MjQyNyA4NjI0OTNjZWFlNGIzMjM3OGQzYTMwYzUyNjBhZTNmNTZmZGNjMDA1IGxlZ2FjeS10cnVuaworNDI0MjggMjZjYWMzNzFkN2I2ZWY5YWZiOTFkNmFhNTgxY2IyZTY3NWJiNmRmNSBsZWdhY3ktdHJ1bmsKKzQyNDI5IGMwNmVlMGM5MTIwOTU3YTc3MjYxYmFmOTc3Yzc4YjMyYTQ1OGYzNTQgbGVnYWN5LXRydW5rCis0MjQzMCBmZGFiZGYxNDgzMzYyMDVlZTU2MmVkNDBhNWFiOWQ5MzZhMDE0OWRjIGxlZ2FjeS10cnVuaworNDI0MzEgMzE2OTM4YjRmOGQwMDI4M2M5YmExYmMzNjI2NTM2ZjJlNGY2MGJkNiBsZWdhY3ktdHJ1bmsKKzQyNDMyIDBkNDg5MTI4NDQxYWY2Yjk3NmM4MzljZTQxOGEyODllNWViZjcxOWUgbGVnYWN5LXRydW5rCis0MjQzMyA3ZGIzY2I5ZTgzOWZhZTM1YWQyODcyY2MwNjc4NWUzZTdkN2FiYjQ1IGxlZ2FjeS10cnVuaworNDI0MzQgZjdmMGQyYTViMjBiODI1ZjI3MGY2YWRiZDBlOGViYjM2ODc0ZmMwYiBsZWdhY3ktdHJ1bmsKKzQyNDM1IDk3YzgxZGMwM2RkZGJlNzYzZjhjYjAxZTJhYjI4NzFmNzAwYzc2N2MgYXN0LW9iamVjdHMKKzQyNDM2IDA1NmU1YjQ2MDZkYTQzMzFhN2Q3Zjk2ZTliYTJlOWJiMzYyYjFjOGIgcmVsZWFzZTI0LW1haW50Cis0MjQzNyAzNjMyNWNhZWZmOWM2NWIxNGIxYzU0NjhlNjBkMGI5ZDZlODA0ZGUxIGxlZ2FjeS10cnVuaworNDI0MzggMjNlMjNlMTVlN2U3YzE0MDFiZGExNzIyNjg1MGEyYzlmNDY0NDc5ZSBsZWdhY3ktdHJ1bmsKKzQyNDM5IDEyMzJlODdjYjgxNjA3OTk0YzM4OGRkYWRlZDZmZTYxMjAyNGU0ZDEgbGVnYWN5LXRydW5rCis0MjQ0MCA1YmQwMmRhMDM3YmZjM2NmNjNiMTYyZGYyOTljYTZkYTkyZGMzZjg5IHJlbGVhc2UyNC1tYWludAorNDI0NDEgYzkxODc5MTJiNTllOTkxN2YzNDBkMjFkN2IzMGQwMDI0MzY1MTM3NyBsZWdhY3ktdHJ1bmsKKzQyNDQyIDY5M2RhODY3ODk0NmI2NTYzMTkzMTk3YzI3YTI1YjBjMmVjMzExMDMgbGVnYWN5LXRydW5rCis0MjQ0MyBhZDNjNGIyYzE3MzAwOTQyY2I1ZmRiOTAzOGZhZmRjZWJjYzQyODBiIHJlbGVhc2UyNC1tYWludAorNDI0NDQgYmNlM2YzNTZjZDdiOWQxYjIzOGIzZjZlNWYzMzNhNTYwNmFhZmFlZiBsZWdhY3ktdHJ1bmsKKzQyNDQ1IGE5ZjlkYjlmYTk3NGFjODI0NjhlNzMzMGVlODQ4OTc5NDJhZDAyNTUgbGVnYWN5LXRydW5rCis0MjQ0NiBjNTY1MGRiZjkzNmVjMGMxMTYxYzIyMzJmNDE5MWFlNjA0ODU2NDcxIGxlZ2FjeS10cnVuaworNDI0NDcgNWIzOTYxNDgxN2EzZTljMzUzMjYzNTRjNDAxOGE5OTY1MmQ1ZjEyMSByZWxlYXNlMjQtbWFpbnQKKzQyNDQ4IGJjNDdmMWE2YWNiOTllNWJhNTY1NzBhNGFmYjZjMzQ1NWMwMzY1MmQgbGVnYWN5LXRydW5rCis0MjQ1MCA0NjY4ZGY0NTA2NzJjMmVmYjk5MzA1YzJjOWU0MDQ4ZmQ0ZTZkMDEyIGxlZ2FjeS10cnVuaworNDI0NTEgMTU3NmY5YmViNTAzYmM0OGVjZGE5YTIwZWNlYzEzZWE5YjBlNzM1MCBsZWdhY3ktdHJ1bmsKKzQyNDUzIDc4N2ZlYmFlMzBkYmYzYzZhM2U0ODRjMjllZmRiMmI3YTdmZDAxNDcgbGVnYWN5LXRydW5rCis0MjQ1NCBkMzY4NWY5YjdiNzFiOTc1N2FlOTA3ZWNiOWRhZDc5NjdhYjZhYTkwIGxlZ2FjeS10cnVuaworNDI0NTUgMDkyMzAzNTdmOTI3OTExODc3OGUxNDQwNmQyYjFkOTk3YWFmODYyNCBsZWdhY3ktdHJ1bmsKKzQyNDU2IDlhODM5NmY0NjBhZmZjYmRiOTIwOTVjNjI1ODdmZjk3YzMwNjk2MTAgbGVnYWN5LXRydW5rCis0MjQ1NyA2YmY3OGQyYjUzYjQzNWZjZWZmZGI2MTFlNDU1Mjc2ZjkzODNiY2NkIGxlZ2FjeS10cnVuaworNDI0NTggYTEyMzI2MDIyNjJjYmZhZDE1NWQ5MmM3ZWI2MzIyZGQ3NDFhOTFiZCBsZWdhY3ktdHJ1bmsKKzQyNDU5IGI5MzgxYTU2MjNlMmJlNzZjYTFiNmEwZDYxMjZkMTlhZDZlNjc4NGQgbGVnYWN5LXRydW5rCis0MjQ2MCA4ZGU1ODI0NmZlZjhlMGM0ZjE5YjBlNDhkZDg2ZTBmMjhmYTA5N2M4IGxlZ2FjeS10cnVuaworNDI0NjEgOTQxNzg2ZTYzYWM4ZTZhNWM3NWFmM2I1NmQ4NjA2MjBkZmIwZTNkNyBsZWdhY3ktdHJ1bmsKKzQyNDYyIDBlZjdjZjUyMjJiMDhhZDdjMThjMWI2NDk2ZmI4ZWI2YzZjZmY2ZWIgbGVnYWN5LXRydW5rCis0MjQ2NCA5ZDI5ZGFlY2I5ZmFhZThhZjRiNGFmZTIyNDhiODJlYzZkYjZiMzlkIGxlZ2FjeS10cnVuaworNDI0NjUgNWNlMzJhNWJkMjQwYTc0OTJjMDY3YjhlYzU1OGM5Mjk1ZTE4NmRiNCByZWxlYXNlMjQtbWFpbnQKKzQyNDY2IDIzODZjMTA1YTg5NDM2NDEzMmM2YTZiODNhNGU0YjA2NjIyYTJmNWYgbGVnYWN5LXRydW5rCis0MjQ2NyAzZTFkOGQzYjRiNmVkODkzMjIyMGU1NTM1OTZhYzk5YjNlMjFkMDA5IHJlbGVhc2UyNC1tYWludAorNDI0NjggMTg0NTg3MTFlYmVkODZjNWJjMjQ4ZTQwZTY4ZTMzMzU3ZDI5MmNkZSBsZWdhY3ktdHJ1bmsKKzQyNDY5IDhiNGNiMjI1YjQ5NzU3ODg4OWMyMDY2YjEzZGFhMGNhZGU0MWNiNzAgcmVsZWFzZTI0LW1haW50Cis0MjQ3MCA1OWI1MzJhYjMzNzY5MjMyMGFlZGY1MjEzMjBiZjVmMTkyYzE3ZjllIGxlZ2FjeS10cnVuaworNDI0NzEgNTcyOWI0YmM5YjhkMzk2OWE5ZTQzNmU2NGI0NWNjMDk5OWJiYzVhZSBsZWdhY3ktdHJ1bmsKKzQyNDcyIGI2MGM1MGIxNjEyNmI1ZGNlNzA3NmVhODM3YjNhMjRiZjg2NGUwYWYgcmVsZWFzZTI0LW1haW50Cis0MjQ3MyAzM2FkYzVkZDJiZjIxOThiNzZlN2JmNDcyNDA4Y2MzZmYzYmNiOWQzIGxlZ2FjeS10cnVuaworNDI0NzQgOTIwMDQ5MTNiNDEyMjA2M2FiOGJmZjVjNmEyNzBhMWIwNGQ2Yzk1MCBsZWdhY3ktdHJ1bmsKKzQyNDc1IDgxZmZkZWVhMWQwNjYwMWZjZjRiOWJmNzQ1Yzg0YjE2YTNlOTlhMmQgbGVnYWN5LXRydW5rCis0MjQ3NiAwMmEwZWIxYTJiMjFiYjk0OWMxMWM3OGY3MmQ2NGEwY2NiOGE0ZDI0IGxlZ2FjeS10cnVuaworNDI0NzcgOGUxMzIzNjI0M2RkMzRjZmVkMzlhNjA0ODJiMmRiYWIwMGMwNjNhYSBsZWdhY3ktdHJ1bmsKKzQyNDc4IGRjNmRlYzE1Njg2OTgyZDU5MzI1YmM0MDQ4YWY1NjQ4NzNiMDQzMjEgcmVsZWFzZTI0LW1haW50Cis0MjQ3OSBhNjQ1MGY5ODhhYTQ0NTcyZThmYzM4YWM4OTg1MDE1MDAwZTEwYTExIGxlZ2FjeS10cnVuaworNDI0ODAgMGYxZmM4ZWZiNzBiNTgyYWMxMjRlMTZmMGM0ZTZmMjk2NDY3NGJjNyBsZWdhY3ktdHJ1bmsKKzQyNDgxIDk4OWFhMjg1ZWRiOWJkZGY1NzQxN2ViMDA1ZTI5NDM2NzM2YmVhZDMgbGVnYWN5LXRydW5rCis0MjQ4MyAxOGYyNzJmNTM2OTkxMjhhNWIyMDlmNTA3MzdjZWJiMmVhZGZjMTRlIGxlZ2FjeS10cnVuaworNDI0ODQgMjQ3NWZlOTU3ODJkMDA1NjVlZjk0ODkyY2RhZGE0NWEyODk3ZjY1YSBsZWdhY3ktdHJ1bmsKKzQyNDg1IDgyYmJkNWRlMDJmMWM4ODY5OGI3YjQzZGQ1NTQ2NzYxMWIyNzhlY2QgbGVnYWN5LXRydW5rCis0MjQ4NyBjNmJkMDFjN2E1NjhjNTA2Y2UwOTM1MjAyM2I0MjM5OTJhOTUyNTM5IGxlZ2FjeS10cnVuaworNDI0ODggMjEwY2ZlOWQzMDc3NDEyODZmMWJmZGY5MTMxYjkzMDE5ZDE4ZDliNiByZWxlYXNlMjQtbWFpbnQKKzQyNDg5IDBkNWY4MDc3YmQyNDE5NWEwOGJjMTU1Mzg3YTRlNDQzNDBjMzE2ZTEgbGVnYWN5LXRydW5rCis0MjQ5MCBhMWIzMGZjZDllMjhlYjg0NWYxY2EzNGI2ZWQxYWZmZTY4NTljNGE1IHJlbGVhc2UyNC1tYWludAorNDI0OTEgMDVlZTA2YjdiNTQ3MzcwMGRkYWM1NzlmOGZiOTgxZTc0YjAyZmVhZSByZWxlYXNlMjQtbWFpbnQKKzQyNDkyIGJkN2YyZDhlOGRlYWJiZTA0MjVkM2Q0MTRhMGZjYWI4MzQ1YmRlOGEgbGVnYWN5LXRydW5rCis0MjQ5MyA3ODE2NTRiZTU1ZWYwYzhkZTNhNTk4M2IxOWNmZGUxMDgxMjRmNDRmIGxlZ2FjeS10cnVuaworNDI0OTQgYzZmYmE0NTYyMjdiOTczZmQyNWM2YWEwZGFjZjM5YzNiMTAwOGM1YSBsZWdhY3ktdHJ1bmsKKzQyNDk1IGU1NzM3N2YwYTE2N2YxNDZkM2MyZWMyMzUzOGFmZGFhYTgyYThjN2MgbGVnYWN5LXRydW5rCis0MjQ5NiAzOGY0YjA5OGVhNjkwYzk1YzdmNjMwNTY2NGRiMDEyOWFmM2FiNTQ0IGxlZ2FjeS10cnVuaworNDI0OTcgOWQ5N2M4MzM4ZDRjMjRjMzAyMWE1YjYyMzU3M2Y0NjE0M2Q5ZWRiOCBsZWdhY3ktdHJ1bmsKKzQyNDk4IGM1OGU3OWIyY2EwNWViOTQ0NmEzN2NjZDEzMThlNjIxZjYzMDU2ZDcgbGVnYWN5LXRydW5rCis0MjQ5OSBlOGE0OWViODUxOWMzNTY1OWI4MTI4ZDA4Y2YxOGViYmU1Y2I0ZDBiIGxlZ2FjeS10cnVuaworNDI1MDAgMmMxODcwYWJiNmNlNTZkZDVjY2YyM2FmOTdhODU2N2ZkZjA0NGQ0ZiBsZWdhY3ktdHJ1bmsKKzQyNTAxIDljMGZkNTg2NDc1YzE3MDY0NDI3MDhmYThlZmI3NjFmYmVmZjkwOTIgbGVnYWN5LXRydW5rCis0MjUwMiA5NDZjZjZkNThmZDExNTk1NzczN2M3YjBkZWMzYWFmMzM0ODkyOTgwIGxlZ2FjeS10cnVuaworNDI1MDMgZmU0YWUwYzQxN2M3YjI5NjY2ZGE2YTY1MjRkYzEzYmNkNzcxNWZiNCBsZWdhY3ktdHJ1bmsKKzQyNTA0IGNhYjM2YWFlZTJlM2Q1N2E1MjkxNWY4OGI5ZWU0NWY3MzVlMGE4YmIgbGVnYWN5LXRydW5rCis0MjUwNSBmNmQ2ZTUyMjA4MjNlMTZhNGY2MGE1OTMwZTE2YTBjMTVhZmMyY2Q4IGxlZ2FjeS10cnVuaworNDI1MDYgMWE5ODc5OGE0YjFkYTcyMTljNTM0ODkxMTQwNDlkMDRlNDQyZjI5MSBsZWdhY3ktdHJ1bmsKKzQyNTA3IDNhNWY3MWQ2YmJlZTk0MTExZTc4NTcwNGMwMjBiZWU5MDMwNWUwYjIgbGVnYWN5LXRydW5rCis0MjUwOCA0NmVjOTQ4Y2JkZThmNzk2OWYyNzc4Yzc0Njg2NmU3ZmY2ZDI1MTBlIGxlZ2FjeS10cnVuaworNDI1MDkgMDY3MWYzYzQ2MmQ1MDA2OGU0ZGYyODliNDI3NDg0ZTY5NDdlOTM0OSBsZWdhY3ktdHJ1bmsKKzQyNTEwIDRkNzY1M2U1Y2IzYmNhYWFhMjk2ZTFhMDM2NDBjZDMyZjM1YjFlNTQgcmVsZWFzZTI0LW1haW50Cis0MjUxMSA5NTIzYTk0MTVlMTgxMGUxMmQ2OWYzMmQwODVhNGM4YjQ4MjkwNDNkIHJlbGVhc2UyNC1tYWludAorNDI1MTIgZGNmNjIxMTNjMmUzMmMxYzUxM2U5Yjc2ZWU0MDM0YWQ0ZGFkNjMwOSBsZWdhY3ktdHJ1bmsKKzQyNTEzIDdkMjkyY2JjNzEzYWIwZmU5OWU5MDYyZGI5ZTIxMjlmZTE4NjUxMDEgbGVnYWN5LXRydW5rCis0MjUxNCAzNjFjNjU4YTU1ZTZlMzFhMzBhZWFmZGEyNmRmOGViY2E0OTEyYzkxIHJlbGVhc2UyNC1tYWludAorNDI1MTUgYzM2ZTM3YTE4ZjFhMzk2OTRiMjUxZTkzYjVlZjA4OWI0NDhjNDJjMCBsZWdhY3ktdHJ1bmsKKzQyNTE2IGE5ZDZiMWFlYzA5NjNiNGNjZDhlM2NhOWMyNGI2Zjk0ZGJhNDU2YmUgbGVnYWN5LXRydW5rCis0MjUxNyA2ZDNiYTAwNGQ1ZTU5NzFiMGU0NjhkNTljNmZiYzhlZTExNGE3MDkyIHJlbGVhc2UyNC1tYWludAorNDI1MTggYjc2NmVkMDNkNDI1NmE2ZWY0ZjdkNDlkMmMxYzQwMjRhYTc5YmNjYiBsZWdhY3ktdHJ1bmsKKzQyNTE5IGM2ZmRlOGEzYjlkZjhhMDVlYmE2NmIxMmFkZGMzNDc0N2MxOGQwNDEgbGVnYWN5LXRydW5rCis0MjUyMCA0YjRlYTM4ZGE5OGVkMzE5ODQ2NjMwYjlmZjFhZjFmNzE5YjhlMzA1IGxlZ2FjeS10cnVuaworNDI1MjEgZDAwODA3NTA1NzNiNjNjZGM3NzZmOTNlMGNkMmM2MzI5NjFiMmJiMCByZWxlYXNlMjQtbWFpbnQKKzQyNTIyIGQxMTJkYTc5NjRkNjI5YTJhMjg1OTJhNjIyYzZiMjM5ODVkYWMxYjEgbGVnYWN5LXRydW5rCis0MjUyMyBmZjlhZmViMDViMzQyNjc0ZGE3OGJkMjQ5NWMyNmZhYWYzOWE1Mzk5IHJlbGVhc2UyNC1tYWludAorNDI1MjQgYmRkYzEzZDU3Yjg4MmQyZmVlMmIzMGI1MzMzZDhhMGM0NThmYjU2NyBsZWdhY3ktdHJ1bmsKKzQyNTI1IDFlMzk2OGZjYWM2ODE5ZWU0NjUwMWMxMTc2MTljZmFhYjQzYmI5MzQgbGVnYWN5LXRydW5rCis0MjUyNiA4YTZmYWVkMGFmMDRiNWM5NzMxNTI5MDFkMmI0ZDk5OWU3NDM2NzcxIHJlbGVhc2UyNC1tYWludAorNDI1MjcgZDRlMTc2MmI4ZTE1MzQwZmZjYTFlOTdmNWRmNzEyZDQ5ZTJmNTk2MCBsZWdhY3ktdHJ1bmsKKzQyNTI4IDI4NDEzYzA4MmMwODc2MmUwYjU4YTUxODU1YjYwMzhhMWU4ZDAxYzggcmVsZWFzZTI0LW1haW50Cis0MjUyOSBlYjA5Nzc5MzJlMmRlODY1ZWY1MmI3NGU3ZGU1N2MwYThiMmM1MzRiIGxlZ2FjeS10cnVuaworNDI1MzEgNDlkOWMxMjAzNTdhZDEwMTVmOWIxZmI1ZTFlZmNjM2VlNzQzZjI3OSBsZWdhY3ktdHJ1bmsKKzQyNTMyIDRkOTg4ZGRhNjQ3ODY0NGI5MWQ2MWYzZGEzYzlhYmIyMjU5OTZlYWIgbGVnYWN5LXRydW5rCis0MjUzNiAyMGM4ZmExZTA2NjgzOGYwNTlhZGRkZDU4YjlhOWZlNDYxMWJjZmFmIGxlZ2FjeS10cnVuaworNDI1MzcgOThmNmI1OWE2ZTBhMDlkYTZiNmY3ODYxYzQ0ZWY4ZmIxMDJiMjY0YiByZWxlYXNlMjQtbWFpbnQKKzQyNTM4IDE0NWQ1ZmM5YTZhNTFhMjY0M2Y1ZGUxMjFiNWEwODBlNzBiMjBlMWQgbGVnYWN5LXRydW5rCis0MjUzOSA0ZTUwYWE3YmIxYjUyZDFjMTNlMDM1NTQ1ZWFmMmI2YWRhY2ZlNTFjIGxlZ2FjeS10cnVuaworNDI1NDAgZDBlYmNiNGY2MDMxMzliMzQwMzlhNWUyZWRkM2UxMDUyYzA4YWU2NSBsZWdhY3ktdHJ1bmsKKzQyNTQxIDY5YzBiZWMxMTAwYWM4M2M3OTgzODVhMWI1MTgyYjIyN2EwMzc4NmUgbGVnYWN5LXRydW5rCis0MjU0MyA1ZjJjYjQ0NWUxYzU0OWVkZDlkNWMyZTZiN2YyYjZkM2QwOWMxMDQ3IGxlZ2FjeS10cnVuaworNDI1NDQgZTBjMmFiZDU4MWM1YjBiNTVlNDI2Y2ZmOWI0MDhlNDFlYmYzODQ5YiBsZWdhY3ktdHJ1bmsKKzQyNTQ1IDM2YWUzZDkyOTgzMmQ0ZmY4Y2FlNzNjNjk0NmJmNTRhZGQ5Y2M1OGIgbGVnYWN5LXRydW5rCis0MjU0NiAyYzhkYzM1ODFiNzBmMmQxMWE0NGVjNDlhNGYyMTM0MjljMGZjN2RkIGxlZ2FjeS10cnVuaworNDI1NTAgMDlkMTkzN2YyZGE4OTVmZThkYzQwYzU3ZGZjYWI2MjMyMTU1MzFkNyBsZWdhY3ktdHJ1bmsKKzQyNTUxIDgxZjFiMGRkYzhhMTZmMWFhM2U2MmUwYWZjYWNjMGNiZDYwNWE0NTEgbGVnYWN5LXRydW5rCis0MjU1MiA1YTgzNjk4NjIwNmRkMzkwZGFhNmExNTRlMGU4ODM3YjA3YTNiOGJhIGxlZ2FjeS10cnVuaworNDI1NTMgMjE2MjIxNjEzOWI5NTY5NTQzMmUxNzQ4NzlhZmI4OTk4NTQ2YmE2NCBsZWdhY3ktdHJ1bmsKKzQyNTU5IDkxMWM3ZmE0OTViMjQwNDcwNmY4YWE0NWNjY2UwYTlhMTRmOGFhYTAgdGltLW9ibWFsbG9jCis0MjU2MCAxNDNjMzQ4ZmY3MTc2OWQ2MGIwZGFmNGJlZjIwNzQxOWZlMzMyNWU1IHRpbS1vYm1hbGxvYworNDI1NjEgNDEyNzYxNGY3NTJhMWY0MzZjOTllYzc5YWE4NGFjNjk1NjI3Y2IwYSBsZWdhY3ktdHJ1bmsKKzQyNTYyIDk1ODAwODc1YmQxMjU5NGIzMDQ4MmM5ZjhiMzIwNzlhZGM2OWYxNmEgbGVnYWN5LXRydW5rCis0MjU2MyBlMWMzZmZlOTI2YzExNTYyZGFjYzQ3NjgwOGMwMzQ5Y2U0MGRhOGNkIGxlZ2FjeS10cnVuaworNDI1NjQgNWQ4Mjg3MDNjNmExNzMyYWRkNDQyMDFkM2YzZTQyZDg3MDUyYjQ4MiBsZWdhY3ktdHJ1bmsKKzQyNTY4IDYyNTY0ZGM3YmQ3MjYyZDEwMTA4NDFjMTUwZWIwNjZiYTcwNzNiY2YgbGVnYWN5LXRydW5rCis0MjU2OSA4ZGI5ODViNDA4NmUxOGNlZTczZDZjOTE3NDBlMDM1MGIzOWYyYTE3IGxlZ2FjeS10cnVuaworNDI1NzAgMmZkYTRkMTUwYzNkYjQ2ZjY0NzAyOWJiNzE3NTAxZWQ1YTE4YTVhMyBsZWdhY3ktdHJ1bmsKKzQyNTcxIDZiNDI5MjBhY2NjOTI2NGY3Y2FiZmY1YzM4NjE3MmMyMjRmMzQ1ZTcgbGVnYWN5LXRydW5rCis0MjU3MiBjNjUwNjQ0MmRmZTAxNTIyZWQ4YmRjMTg2YjNhOTEzMWFlZTAxOGYzIHJlbGVhc2UyNC1tYWludAorNDI1NzMgOTJjZThiYjhiMTJhN2ViNWY0YTkzMmQ2YTQzYmRmOWUyZWQ4ZTQ4NiBsZWdhY3ktdHJ1bmsKKzQyNTc0IGM5OTZhMTIyMzRjMjU5YzBmY2EwZjM1Mjg4YWM5YTRhNDA1ZGM5NDQgbGVnYWN5LXRydW5rCis0MjU3NSAzOTI0YWZjZjk1ZTdmZDliNTEzYzFjNTcwY2I3MjE1ZTU3MmFjOTEzIGFzdC1vYmplY3RzCis0MjU3NiBjOWZiYjA2N2MyYTZjOTBlMzBhYjkxN2MxYzg2MGZlMjI1NDg5ZWE1IGxlZ2FjeS10cnVuaworNDI1NzggYmI0ODExNWU2ZGFiMzM1MzA5NmMyYTM3NjQyMTBiZTRlOWUzNGQ2MyBsZWdhY3ktdHJ1bmsKKzQyNTc5IDNjMGIyNjExM2RmNmVkNWIzNmE2MDY0OWQyZmQzMTI2MmU4NjgxYTcgbGVnYWN5LXRydW5rCis0MjU4MSA3MTBjYmRkNDc4YTg1MWIzNDBhY2Y0ZWYzODEwZTk3MGVjZDVjNjMzIGxlZ2FjeS10cnVuaworNDI1ODIgMmFiOTI3MGVmMTlhZWFmN2YwZWE4ZjQ4YzQ1MTA2NmIyNmQ1NDQ0NCBsZWdhY3ktdHJ1bmsKKzQyNTgzIDU3ODhlMGE2ODllMjU3N2U4YTVlMzA2ZjQ4OGQ2ZDA4YjYzYmM3NDYgbGVnYWN5LXRydW5rCis0MjU4NCA3YmZiZmIyZWY0ZTIxNDVhNTkzNDM4M2JkZGU4NjAyMTAxZDUwMGE5IGxlZ2FjeS10cnVuaworNDI1ODUgNThhODQ1MWZmNzk1ODdlM2U3OGIyNTQ2MGI1ZDBiZWZlMGQ0NzE5NCBsZWdhY3ktdHJ1bmsKKzQyNTg2IDYxNjU5Mjc0MzFkNmE2ODU1MDhmZGU0MDg2ZTY3MWU1Y2FjZDgyZDIgbGVnYWN5LXRydW5rCis0MjU4NyBkYjU3MWY5Y2FkNmY4N2JmMGQ5MGQzMTZiZGEzMzJiMjA3NDBmOGIyIGxlZ2FjeS10cnVuaworNDI1ODggODQxMGYwNmFkMzZlMTg4NTk1ODk0OWQxOTc1OGRmNDc2MDg2N2JiZiBsZWdhY3ktdHJ1bmsKKzQyNTg5IDk1MDRmN2FjMzY2OWMyODFjZTIxNGUxODc5ZGE2ZmMwZTU5NTlkYjMgbGVnYWN5LXRydW5rCis0MjU5MCAyOTZjZGE5YjNlMmY4MDlmNDU4ODg4YTNkZTk3OTQzYWQzMWI5M2EwIGxlZ2FjeS10cnVuaworNDI1OTEgNTg0NjM3ZDgzMWUzZmNiZWNkYWVkMjQ4M2UyZTBlZWZmMGIyNjc5NyBsZWdhY3ktdHJ1bmsKKzQyNTkyIDZjMGI2YzFjZDFmNDY5ZDU5NDk0M2EyNTVjNDAyZWVkYThlNzBiNTkgbGVnYWN5LXRydW5rCis0MjU5MyAyZGRlYTU1MzVmMDg2NDllNTY1Y2I3NDIyMDhkNGU3N2IxMmQ1MjlhIGxlZ2FjeS10cnVuaworNDI1OTUgNzgwYjdhZmU2MTc4NWFmN2MxNDdhOWI3MTg1YjAyNGZjNTYxYWIzOCBsZWdhY3ktdHJ1bmsKKzQyNTk2IGRiYTY0OTQ3MzVkMDJhNTUzOTJlNWNlYTE2OTAyODQ0MTcwZDI3ZGIgbGVnYWN5LXRydW5rCis0MjU5NyA2N2M3NGVmYWQ4YzIzZjdmY2E0N2Y0ODc0ODJlMDA0Y2ZkYjBjMDFmIGxlZ2FjeS10cnVuaworNDI1OTggNTIzMGM0YzI5ZWJiMjc4NjQzZTdlYzIwNjc2MjRlZDgyZWE4MWZmYyBsZWdhY3ktdHJ1bmsKKzQyNTk5IGFjNDk4OTUzY2U1NzhmYWE5MDI3MjIzYzdlMjMyNWVmYjRmMmMzNGMgbGVnYWN5LXRydW5rCis0MjYwMCBlMTM5MTkxMGIwMjY1MmQ4MzRlMTE4NDYwMzk0YzYwZThlOWI3NWFjIGxlZ2FjeS10cnVuaworNDI2MDIgNTRlYjViMWZiMzYzMmVjOGJhYzNjYzRlMTQ0NDZmNDllNDlmYTc3NSBsZWdhY3ktdHJ1bmsKKzQyNjAzIGU5ZjBkYjQyOWYyYmJhZTNiZTE2NTBmN2FjZjIyZThmYmRjMWIxNGYgbGVnYWN5LXRydW5rCis0MjYwNiA1MmNiYzQ0N2UxYzlmYmVlN2FmNTAyZmQyY2U3NjBkNDVkNjRhMTA0IGxlZ2FjeS10cnVuaworNDI2MDcgZGEyYTEwNDkyMTVkNjMxOGJmM2Y3ZjIxZDIxNDhkNDgyNTNiYzc3OSBsZWdhY3ktdHJ1bmsKKzQyNjA5IDBiZWJlYjM5MzA0NTQzM2QwYWZjNDE1MjkwODA4MWU3MmI2ZjhhMDEgbGVnYWN5LXRydW5rCis0MjYxMCBiODczZWM2Nzg1NjA1MTM2YzNjNjRlNDM5NWRhOWU0ODAzNTEyNzZiIHJlbGVhc2UyNC1tYWludAorNDI2MTEgODYxMWYzOWNkODJiZmMyYWYzZDQ4YzE5ZDE0M2U2NGJmMTJlNDQ0NiBsZWdhY3ktdHJ1bmsKKzQyNjEzIDdkMGYxMjM0MGM5ZTRmNThiNjFjMDY4ZTkxYzlhNDBlMDQ2OWVjODggcmVsZWFzZTI0LW1haW50Cis0MjYxNCBlMGZlYWRjN2FmZmI3MmJmODFjZDVhMWFkMTg1NDU4MTYyNmY5N2MzIHJlbGVhc2UyNC1tYWludAorNDI2MTYgMTE0ODRhNzJkOTY2ZmQ4OGViZmY5YTc3ZWI0Y2U2YWVlZDEwMzJlZiBsZWdhY3ktdHJ1bmsKKzQyNjE3IGFjYWE3OWU3MzEzMzNlNTJkMGEwZTU0MmQwNGJjNWI2ZDFmYjNmNWEgbGVnYWN5LXRydW5rCis0MjYxOCBkZDNlNWE5NDU5NjJjMWVjOWQ4MTE1NjJkY2U2NGVjZjc2ZjAzYThjIGxlZ2FjeS10cnVuaworNDI2MTkgMzAxNzEwNTM1ZDE1MDI3NDgxYzBjYmNkZDA3ZDhiMWFhNDczM2MzMSBsZWdhY3ktdHJ1bmsKKzQyNjIwIDE4MGRiZmNmM2JlZDA2NTA1OTg1NjMyNzk0NDMwNzJjNjcxM2U3YjggbGVnYWN5LXRydW5rCis0MjYyMiAwMTUxYTAyMzc0YTgyZTI1M2EzNWY1NDIyZThjYWI4MjEwNTI1ZGMyIHRpbS1vYm1hbGxvYworNDI2MjMgZGZhYjIyYWU0OGUzNjdmNDA5MzllMzUxMDMyNGUxYjZkMGMwZGViOCBsZWdhY3ktdHJ1bmsKKzQyNjI0IGI2ZDJmNmZkM2UxMTZiOWI5ZmU5NWJjOTgyYWM3NjNjMzU5ZmYxMDMgbGVnYWN5LXRydW5rCis0MjYyNSA3YjU4ZmJkZTVlNWRmYzFiZGQzOTgxMGM2NzVlZDQwYWM0MDFkM2Y1IHRpbS1vYm1hbGxvYworNDI2MjYgZTBhNzcwMTBkMDMzYmM5MzIyYTc3Y2RkMGVlMjViYTdkMjcxNTgyNSBsZWdhY3ktdHJ1bmsKKzQyNjI3IDc4ZGU1ZjZiMmY2N2IzZTg1MzkzODhiNzdjYWUwZTMyNGVhNzg0MWEgbGVnYWN5LXRydW5rCis0MjYyOCAzMDU2N2JlOTBjODUxMzExZTkyYWQxMDBiYzE5MGNkZmM0OGVhOWJhIGxlZ2FjeS10cnVuaworNDI2MjkgYWEwNDA0MTBmYjlhMmRmOTlkMGEzODNiMzhkYjZmN2ViNTQ1NjgyZCByZWxlYXNlMjQtbWFpbnQKKzQyNjMwIDJhMmQ0NmQxOTI5YTQwNmFmZTY1YjEzZTNkN2FjMzhjMjM2MGVkNDAgbGVnYWN5LXRydW5rCis0MjYzMSBlMzI0OGYxZmM1NGRiNzE4YTk0MjM4NDI3OWJmNDhkNTZiZTUyNWY5IGxlZ2FjeS10cnVuaworNDI2MzIgMzVkYmJjMWFiNDQ4N2RmZjg3NjQ5ODc4MWYzODg5YzQyYTkzNDM5MiBsZWdhY3ktdHJ1bmsKKzQyNjMzIGMzZTI4NDA5Njg2Y2JlMmMzYTY3OTAwZWJiMGRiNzgxZGY1Y2VlYzMgdGltLW9ibWFsbG9jCis0MjYzNCA2NjQ1ZGIwOTQ5NDNkZDJiNDQ0ZmMxZTAxZDQ4MTg3Njc4M2I4M2YyIHRpbS1vYm1hbGxvYworNDI2MzUgOWYzZTU4ZGJlYTYzMWJjNjY1MzU5NDA3NTNhNTI4ODk2OGQ2MjUyMSBsZWdhY3ktdHJ1bmsKKzQyNjM2IDNkNjhmMzUyYzJmZjAxZjIwN2Q2YTkxY2NmNGM3MGMwYjczNmNjOWYgbGVnYWN5LXRydW5rCis0MjYzNyA4ZmYyOGZjZjg3MmUwYTliOTVjNmM5YWFiMDVhMDc3NDNjZjY4YTExIGxlZ2FjeS10cnVuaworNDI2MzggYjZiMWM0NGQ5MTEwNTI4NTNjN2NkZjFmNzQzZTgzZTdiZGRmZjU0NCBsZWdhY3ktdHJ1bmsKKzQyNjM5IGNkODQ3ZTcyNjgzNzJlNGU3ZWJiZGIwNDFmMDE5ZDYwY2RhMjc5YjkgbGVnYWN5LXRydW5rCis0MjY0MCA4MWJlMTViODQyNDQ1Mzk4MjZhZWYxZTZiYmJjMzY3MDA0ODE2N2I4IGxlZ2FjeS10cnVuaworNDI2NDEgYmVhOTQ3NTQ0NDFiMWE3MGI3MTNmZWVlZWM4MWU2YzZlZTk5ZTQyNyBsZWdhY3ktdHJ1bmsKKzQyNjQyIDI1ODk5MDI0Mjg5OGU2YzYwM2U3MzY0ZmE1ODE0YzcyOGE4NGJmNDcgdGltLW9ibWFsbG9jCis0MjY0MyAzYzA3YjZjNWNmNzg4YjdiZDBjOGZlYThhOTk0YTRjNmM5MTUwODAzIGxlZ2FjeS10cnVuaworNDI2NDQgZjE1MzAyZDhiMmRlNTlmMWExNDEyNDFkZWE4MDNjYjJkZWRhMWRiNyBsZWdhY3ktdHJ1bmsKKzQyNjQ5IDVjMzZjMjIyZTdjYTUzMTBlNWNjOGI4ZGIyODNiZDY2OWQxZTI0ZDQgbGVnYWN5LXRydW5rCis0MjY1MCA5N2VlN2I1MzM2NjQ4MTc4MGI2ZjMzMTU1MGQ2NjRhYzg2M2Y2NjgyIGxlZ2FjeS10cnVuaworNDI2NTMgYzM0NDViMWNmMWJmMWVkMDRkYmQxYzJkZjVhODE1MWI0MTAyZDE3OSBsZWdhY3ktdHJ1bmsKKzQyNjU0IDQyOTJiNDI2ODNjNWZjYzc1NTQzMzhiYmZkODQ3YmI1M2U5MWFjNTIgbGVnYWN5LXRydW5rCis0MjY1NSA3MWQ4NzMwNTRkMjllZGJkMjIwMzJjOGM5MTVjZjBlZWNiYjhiNWMzIGxlZ2FjeS10cnVuaworNDI2NTYgYWUzOWZjZTBmOWExNmVjMGE1ODhkNzE4OTlkZDQ2Yjc3ZDUxNDYxMCBsZWdhY3ktdHJ1bmsKKzQyNjU3IDQ1ZTZmOTAxOTAyY2E1ODU3ZWVlOTFhYmEwNDhkZjdkZDU2MDE4NjQgbGVnYWN5LXRydW5rCis0MjY1OCA2NmZjNWIyNjI4NjhiZWU3ZDIzMWM3NTk4NDZjMWZlZDNjZDVlZGVjIHRpbS1vYm1hbGxvYworNDI2NTkgOTQyYWUyNWNiMzkxNTA0MDkxMDJkNGQ2NjZlMzczMTQ4OTVhNDJkMSBsZWdhY3ktdHJ1bmsKKzQyNjYwIDQwMmRlMGZlZjExNmQ4ZTdjMTRjMDJjNTZkZGUwY2ZlYjVmNzRiNWQgdGltLW9ibWFsbG9jCis0MjY2MSAxMTU5NjA2NDBmMjVkZTViMDFkMjI5YjMyMmI3OWU3NWY4YjIwYWE2IGxlZ2FjeS10cnVuaworNDI2NjIgZjdiNDcyNmFkYTZjNTA5YzAzOWY2NzYyZmUwYWExYWIzMTZiM2JmMiBsZWdhY3ktdHJ1bmsKKzQyNjYzIGM0MGEzM2NhNjViOTE2M2I5ZDgyZGM5M2ViOWIxNzJmMzZjM2JiZWUgbGVnYWN5LXRydW5rCis0MjY2NCBlNTgwYzhiMGRjZWFiNDBlYmYyOWY4NTg2OWE0NjVjNDhlMGM2YWZmIGxlZ2FjeS10cnVuaworNDI2NjUgNWYzODIyYzJlNzMxMDRiYmU0ZjlkN2NhMDgxYmIwYjMwMzg1MjQzYSBsZWdhY3ktdHJ1bmsKKzQyNjY2IDk5MDY2YmVhMTdmOGYwMzJlODA3OGQ1YWQ3OGM2YWNlYjc0ZmMwZDQgbGVnYWN5LXRydW5rCis0MjY2NyBiYmYxNmZkMDI0ZGY3YmNlYmMwZjZmZTg4MmI3Y2M4Y2Y5NzYwYjU2IGxlZ2FjeS10cnVuaworNDI2NjggYzA2NjEzZTUzZmFkZjM3NDliODkxZThmY2ZkNGFjZmNlOGUyOWM0NiBsZWdhY3ktdHJ1bmsKKzQyNjY5IGYyYTg5NWQzM2E1Y2FlOTEzZjZlZGM4M2EwNTE1YTBiOTc1ODEyNTcgbGVnYWN5LXRydW5rCis0MjY3MSBkNmNiYzcxYjgwMTA5MDk5ZDJkMzY3OGJiYTZlOGU5MmE2MzJiMjhiIGxlZ2FjeS10cnVuaworNDI2NzIgODc3MDY0MzhkYzNjNDFiYTI3YzdkYzk0ZGQxMzU2MjIxMTc3ZjEwZCBsZWdhY3ktdHJ1bmsKKzQyNjczIGZkNTQ5N2I2NDIwOWMyNDExN2E0N2M4NmUzZTg3OTU4ZmRkOThjOWMgbGVnYWN5LXRydW5rCis0MjY3NSA4YTJhNWY3MWI4YjNkN2UyNzAwNmExMjA0NzQwMjRjOTlmMzk5YjhkIGxlZ2FjeS10cnVuaworNDI2NzYgNjU4M2M4Njg4MTdhYWE0YzliOWNlMzdjMzVkYzEzZWZiN2UxMmVkNSBsZWdhY3ktdHJ1bmsKKzQyNjc3IDRhNGUwYzU4ZDQzN2U4N2YwYzMxNTk5OTVjZDdlYjU4ZTBhODAzZDUgbGVnYWN5LXRydW5rCis0MjY3OCA0MTc4MTUwNjIzMzc4YTFlOTE1MjVjYWNjNGQ5YWE3NzYyNTRjY2IwIGxlZ2FjeS10cnVuaworNDI2ODUgYmJjZThlYzJmZjgxZDBkY2Y5ODM3MTYxZjE2OGZiZTIwNDc1ZGVhZCBsZWdhY3ktdHJ1bmsKKzQyNjg3IDhiNjg1MTM4MmUyNzUzNThmYThiMjhjNTJlZjdmZWM3OTIyYmM0NDYgdGltLW9ibWFsbG9jCis0MjY4OCBmYTkyZmUxNTI1MWEwNTEwODU3YjIwMjllNmZkMmI3NWMxOTU5NjYyIGxlZ2FjeS10cnVuaworNDI2ODkgNDNiOWQ1ZjA5MDFiZTY2Mjg0NDVmNWFhNTMwOGM3M2NkOWEwODBjZSB0aW0tb2JtYWxsb2MKKzQyNjkwIDQzYzcwNDYwY2NkNTkwZDBiNTk0OGY0NThkYmI0YzgxYWRmYzMxZjkgbGVnYWN5LXRydW5rCis0MjY5MSA3OTZkMTUwZTQ1YTk0YmZmMTIwNTg3NDIwMjMzNDk3YjdjNzBiN2RlIGxlZ2FjeS10cnVuaworNDI2OTIgYTNlNGJkNDc1YWQ3Zjc0ODU4NDBlMTNhNDgzMmZiNGRkMjI5YTEyMCBsZWdhY3ktdHJ1bmsKKzQyNjkzIGMwOTgyYjgxNTVjNjJkM2ZmNDVhODIxZmQ2YWQzMTViNTcyM2JlMGYgbGVnYWN5LXRydW5rCis0MjY5NCA2NThmOGZmMmE0NDJkMDE4MTU2ZTU1ODFhY2IxOTc3OGM2ZjBlNDYzIGxlZ2FjeS10cnVuaworNDI2OTUgMzEwNTFhNzBiMjk3MmQ4ZjJjZTQwZTQ4OWNlZGVhOTQ5NDY0MDBkYiB0aW0tb2JtYWxsb2MKKzQyNjk2IGRiZjljYzZjMzZlYmQ3MWNiYmQ5MjMzN2ZjMjNiZWI2OWI4ODMxNzAgbGVnYWN5LXRydW5rCis0MjY5OCBhMjEzOGRmYjU5NjUyNjQ5NDU1MjZlMDEyYzdmNWUyODFlYzI5N2Y3IGxlZ2FjeS10cnVuaworNDI2OTkgM2ZmYzFlMWQyZjU3NmY2NGY2ZDcxODFhNjMzNjUzMjZlMGFjZWZmMCBsZWdhY3ktdHJ1bmsKKzQyNzAyIDkyMjUzOWRiZGM0ZTVkOWM4NmM1MGY1MzhiZjAzM2ZiN2Q3NjMxZDEgdGltLW9ibWFsbG9jCis0MjcwMyBlODIxYjkzNmYzZmE3NTZhMTc2OGNlNjNmYTQ1YWNiZTBiODljODYwIHRpbS1vYm1hbGxvYworNDI3MDQgOGRmNTUwMTRjOGZiMGNkMjcxNGEzM2RhM2I0MWIwODMzYWVlYmJhOSB0aW0tb2JtYWxsb2MKKzQyNzA1IGVmNTI0NmNlOGZlNjU2MDBmMGRmYTVhYTlhZjRhZWFmZjQ2MThiZTIgbGVnYWN5LXRydW5rCis0MjcwNiBkYmE3NzA5MmQ0NmViYWYyYmI4ZjI0MmJjMmFkMDNkODc3YjRmNTc5IGxlZ2FjeS10cnVuaworNDI3MDcgMGY3Mjg0YzQ5MWEzMTdiZDdmZjY0OWU3NmNlYWJmODExNTBhNzYyYiB0aW0tb2JtYWxsb2MKKzQyNzA4IGMyOTQyY2RkODhiMzI1MDdmNTVhMzk0NDRiYjhkODAxOThmMjYwNjYgbGVnYWN5LXRydW5rCis0MjcwOSAwYjVlOWFjZTJlODdiMzg2ODI1MGYzZGQzNTE0Mzg1YzlhMmUzZDIyIGxlZ2FjeS10cnVuaworNDI3MTAgOTJiYTcyNDg0ZmYzODQ1MjQ4ZWU5OTdiMTY5ZmQzYTZlMDY1MDU3ZSBsZWdhY3ktdHJ1bmsKKzQyNzExIDhlMDRkZTI0ODBlNDllYTg0Njc2YzE4YWIzZmQ2NWY3YWM2NGQ5YTIgbGVnYWN5LXRydW5rCis0MjcxMiA3YjY2YjJkY2M1ZTk2YTY0YTE4ZGYyMWQxM2JhOWYyYWYxMWI0OGQ1IGxlZ2FjeS10cnVuaworNDI3MTMgMWU4M2YxODJiNWY5YWY4MTFkNDc0OGVkOTFhZWFmZDM2YjQ1MTMxNCBsZWdhY3ktdHJ1bmsKKzQyNzE1IDJmMTliOTgxYWMyNDdjMzIzZDA0MDQxOWViNjE3Y2YzMmVhN2E1ZTAgbGVnYWN5LXRydW5rCis0MjcxNiAzMmUyYjhiZGE1MzViOGE2ODcxNWQxNzI1NDM3ZjM5YTM2MmZlYmUwIGxlZ2FjeS10cnVuaworNDI3MTcgZDBjYTYzMDJkZDNjOThjY2YwNzFkODNjNjFiYmI3YzdkODM0ZGNlMyBsZWdhY3ktdHJ1bmsKKzQyNzE5IGM0MTM4YWQxZTA5YTBlMzljNzgyMzA0ZWQyZGM5ZTgwYmQ2ZTFmYTIgbGVnYWN5LXRydW5rCis0MjcyMCAzZTE5MjcxZWZjNDZlNjkyNjM4Y2JkMzYxZDdlMTBlYTUyYTE0NjUxIGxlZ2FjeS10cnVuaworNDI3MjEgODNiODYwYWNmZTk1ZTZmMDE3Y2NkNjIwMjkzZjc1NDM4MDNlNDY5YSBsZWdhY3ktdHJ1bmsKKzQyNzIyIGEzNjZkZmM3MDM1ZmQxOTIwYzFhYTAzYjI3ZjM1NDdhZjE5ZTQ4ZGEgbGVnYWN5LXRydW5rCis0MjcyMyAzZGQ5MmQ5N2E2N2ZmODIxZGYyZTM3ODE5YjNjZDg2ZTkyOGJhYTc0IGxlZ2FjeS10cnVuaworNDI3MjQgMjJjNTE2MzJiNDU5ZDc3MDJlNGFjODU2MTVhZmEyZmIwNjYyYjcyMCBsZWdhY3ktdHJ1bmsKKzQyNzI1IDVlNDYzYWU3MDcwNzZkZDI4NzA4ZDc2N2QzZWYyYjJjMzRiNDQ4NmQgbGVnYWN5LXRydW5rCis0MjcyNyA5NWE5MmIyYjUzZWU0OWFjNjM3ODZlZWE3MzFiZDJjOGE1OTI5ODNhIGxlZ2FjeS10cnVuaworNDI3MjggMDY3NDc5NmI2OTZjYzVhMjA2MGNiYTIzMzk2YmYzZDM5NzIzYTYxMSBsZWdhY3ktdHJ1bmsKKzQyNzI5IDFkYWExOTliNzg0YmU0YTYzZjUwYzgwNWY2YWI0M2E5YzY3OTZlZGYgbGVnYWN5LXRydW5rCis0MjczMCBlMzY0YmM3NmJkYzhkNDYzZjY0ZmI3MjNiNmMwMzUwMDE0ZGM3ODc1IGxlZ2FjeS10cnVuaworNDI3MzEgZDZjMzBjZTM4NjhiMTNkN2M5ZGRkMzM3ZTk2NTlmZmFlN2IyZDAzMSBsZWdhY3ktdHJ1bmsKKzQyNzMyIGFiMWI1M2Q1NDkwMWE4ZGE3MTY3ZmVhMjRjZjkwOTc4Y2M2ZTQ2NWIgbGVnYWN5LXRydW5rCis0MjczNCA2MjM3NjM0NTdhNGU4Zjc1NzAxNjM0OGIxYjQ2NTU1MzhlOTY1MjQyIGxlZ2FjeS10cnVuaworNDI3MzUgNGNjOTVmY2U2NWRhNzYzOTY3OWZlNWFiYTlhNzIzOTIyNDJhZWU2NSB0aW0tb2JtYWxsb2MKKzQyNzM3IGY4ZmZhN2NiZjk2MDVkZTU4Y2M0Y2Y3ODdlNzdhNWRmNTJhNDk4ZTkgbGVnYWN5LXRydW5rCis0MjczOCBhZjlmOWI1OTNhNTM2ZDcyOGQyYzQ3OGRlNjZmMDU4NmNkNTAxNDQ4IGxlZ2FjeS10cnVuaworNDI3MzkgNjRmZjNiMjI1ZDQ4NTE2MTU0ZDQ1MWNmZWU4YzRmMDRkNzNkMjBlYSBsZWdhY3ktdHJ1bmsKKzQyNzQwIDM1NjEyYTEzMWFjNjI0ODE0OTk4MjVkZGFjMjEwMWI5ZDJhZjgzYTQgbGVnYWN5LXRydW5rCis0Mjc0MSBhNTQ5NDgxODBhM2RlMjI5ZTVlMWNmODM1YWMwM2M1YmNiZDZiZTBmIHJlbGVhc2UyNC1tYWludAorNDI3NDIgMWFlYTNhZWNhNTM1YTYzMGNhZDYzNGQ4NDViMjQ2YmVjYzViZGY1ZSBsZWdhY3ktdHJ1bmsKKzQyNzQzIDEyMTFhNjhiMjhkZDM3MTc3OWRjNDJhNTgzMjZjNDdhZjJlNGQzZDAgbGVnYWN5LXRydW5rCis0Mjc0NCBjZDdkMjkxOTE3OGM3NTc2Mzc3N2UwOTUzYmUxMTlkZTUzYzc0ZWE3IGxlZ2FjeS10cnVuaworNDI3NDUgYTdiMzYzMmQwZTA1MTUyNWJmNTg3MWZmNmY2ODQxYmQyMjE4NmYwZCBsZWdhY3ktdHJ1bmsKKzQyNzQ2IGEwMGE5ZWVmNjA2M2FjZTk5N2ZkM2UzNzhjZjVjNTlmOWVhMDZkZTUgdGltLW9ibWFsbG9jCis0Mjc0NyAzNzY3OTJiZmI1N2VmOWI4MzQwZjRiYTQ3ZjlmMzI1ZTJmNWEyZDEyIGxlZ2FjeS10cnVuaworNDI3NDggMjVmOGU2ZGRlNGEzYjA5NmIwNWFiMzA3MzZhMWRjNjM0NjE1NmFiYiBsZWdhY3ktdHJ1bmsKKzQyNzQ5IDJiNjU5MjY4YTczYWEzZTY4NDUxNjg5ZWY0MjBkN2U5NmFlZDJlMWQgbGVnYWN5LXRydW5rCis0Mjc1MCA5NjViYjRhNTQwOTY2MzJiZjE0NDFkYWRjODEzNjk2MDA4NzU0YjY3IGxlZ2FjeS10cnVuaworNDI3NTEgZDg1M2JjMDY4NDdlNjZkYTRhNWRhN2QyZjYwNGZmYTVkNjExZWQ5YyBsZWdhY3ktdHJ1bmsKKzQyNzUyIDZlMjg1YzY5ZWZjMDViN2Y4YmRiYjA5OTBhZWE3YjBjOTNiZjhkNTYgbGVnYWN5LXRydW5rCis0Mjc1MyA1NzMyMmNiMmNhMTExN2I3ZjBkMmI0YzBkZDU0NjAxZTBiYmQyZmFhIGxlZ2FjeS10cnVuaworNDI3NTQgMGNjNThkYmQ4N2ZlYmUxODIwYWIzNjQ5ZDUzNjIxYmRiZjM5NjU1NCBsZWdhY3ktdHJ1bmsKKzQyNzU1IGMzYzVkMDZmYWEwMWVjZDFmNjdiZWE1MTVhM2YyYjY4YWI0NWQ2NWYgdGltLW9ibWFsbG9jCis0Mjc1NiBmNjY2YmM5ZjYxN2Q4NzAyYzQ1ODIyOGZjNjQyYWZmODIxM2IxZTYyIGxlZ2FjeS10cnVuaworNDI3NTcgMDlkMTc0MzBmNGMyNWFjNDk0MmFkZjZiMTYzNzFhYTcyNWYwYTBiMSB0aW0tb2JtYWxsb2MKKzQyNzU4IDBlMmNkOTRjNTNhOThhMDg0M2ZlZjdiZmIyMWJkMTE5NWZkNDcyNmMgbGVnYWN5LXRydW5rCis0Mjc1OSA0OGEyOGIzNWRkNjQ1NTY1ZWEyYzI0YTM0YTRjZDM1MGVjMjNhNGI0IGxlZ2FjeS10cnVuaworNDI3NjAgMDJkOWI0NzY5YTg4ZTg2ZWRlYzJhODMxMDdiZDdmNzhhMzlhMjUxNCB0aW0tb2JtYWxsb2MKKzQyNzYxIDYwNGExMjZmODNjMjE0ZjQwOTVkMTk1OGQ2MGZhMmExNjYyOWQ3OTIgbGVnYWN5LXRydW5rCis0Mjc2MyA2ODg3OTU4NzNmZjFjZWExNDA4ZjRmMmJmOGFkMjQzMjk4NjY1YTRhIGxlZ2FjeS10cnVuaworNDI3NjUgMWU4Y2I0N2JlYWFhNDhkZjg1NmY3ZGZiYzY3M2YzNDg0NmI1YzgzMiBsZWdhY3ktdHJ1bmsKKzQyNzY2IGRmODQzYjA3ZjVmZTBhOGMzMjRlNDEwNTI2YmQ2MjNjYzhlMTg0MDMgbGVnYWN5LXRydW5rCis0Mjc2OSA4OWQ2OWQ5MjEyYTJkY2I5MGZjODRmMmEwMGU1Y2Q3YTBjNmY4Mjg5IGxlZ2FjeS10cnVuaworNDI3NzAgMDQ3NDcxY2I5ZTRkOTdiNTczODczYzcwYTQ4MGFjMGQ4NzllODNiYiBsZWdhY3ktdHJ1bmsKKzQyNzcxIDcyODVjMzdkNzYzM2U0ZGUzZGI1N2I0ZDlmOGQ1MjEzNGMyYjM1NDMgbGVnYWN5LXRydW5rCis0Mjc3MiA4ZGRjYWFhMDhmZGRlZDNmMWY4MWUyZTVjYjU2ZDRjZWNmZDc3Y2UzIGxlZ2FjeS10cnVuaworNDI3NzMgNDI0ODdkOGNmMzM4MDA4ZjgxNDczMWVjM2RkM2JjYWIzNzJiMTFiOSBsZWdhY3ktdHJ1bmsKKzQyNzc0IDA0ZDE4YmNmNzUxOWY4MmRhYWU1OWQ4ZWQyYmY5MmQ4MzY3ZTg2NTAgbGVnYWN5LXRydW5rCis0Mjc3NSA1MTVlZjdkZDE2YmQ5N2Q2NzI1ZTY3YzI0NjRmZWM1MDRhYzUzNTIzIGxlZ2FjeS10cnVuaworNDI3NzYgODhkZmQzMjgxZjcxZDdjYWQ1MTY4MDc5NmNkYmM4MDg0ZTU2M2ZmZiB0aW0tb2JtYWxsb2MKKzQyNzc3IGJkMDY0MWQ2MjQ2MjUzN2VkNDllZjNlODc4ODM4ODc1NDExZGYwOTYgbGVnYWN5LXRydW5rCis0Mjc3OCA4ZWFmOTUzMWEyZGVkMjk2ZDAxYjY0NTg3ZGI1OWVjYTc5MDdjYWY5IGxlZ2FjeS10cnVuaworNDI3NzkgNjU4MmE0NDkwZDFhYWIxNWM1YWM0ZTc2NzMwYmQwYjM3MDBkM2VlYSB0aW0tb2JtYWxsb2MKKzQyNzgwIGM1NTJmMjI3NTc4MmNmNjJiOGFiNGNjODE4N2YxN2JiNTRjNjM4NjQgbGVnYWN5LXRydW5rCis0Mjc4MiBlMDFmMTdjMjdlZjMwYzlmNGM4MzczMzYyNjMxNTcwNWIxNDRjMDM4IHRpbS1vYm1hbGxvYworNDI3ODQgYTAwYmQzY2RiNzI4N2FhZmIzNmM0YmI0ODVlYzBjOGFmZmU2ZDI0MCBsZWdhY3ktdHJ1bmsKKzQyNzg1IGQ1ZTVhNWQ5ZmU3YzAyNTQ3ZjE5OGQ5ZjM5M2QyMzgxZmZlOGNjNmUgdGltLW9ibWFsbG9jCis0Mjc4NyA3MDk5ZjZlNjgxODNlY2E2NDlmODEwMGMzOWFmMWMyZjAzYzNkNTMyIGxlZ2FjeS10cnVuaworNDI3OTQgZGU0ODE2ZDM0NGVlYTQ4NThlNmY0YzcyMmQzYTNlYjRhYTAxNGM4MCBsZWdhY3ktdHJ1bmsKKzQyNzk3IGIxYTNjMjIzOGY5N2UxYTY1NTJmOTVkMDQ4ZTUzNDY3MmZmOTliYWQgbGVnYWN5LXRydW5rCis0Mjc5OCAyYzJkZmZlMDcwZGYyODM2MTI4NDA4Y2ZiMjJiNTc0Yzg1Yzk2OTA5IGxlZ2FjeS10cnVuaworNDI3OTkgZWY4Nzc5ZDQ1NWVjNWNjOTY0ZTlhYjdhNWRjNWM3NjY3Y2I5YzNlOSBsZWdhY3ktdHJ1bmsKKzQyODAwIGFiYTczYjQ2ODAzYzc3OTBiMWJjOTViMjQ5NjE0OTIwOWI1MjJmMTggbGVnYWN5LXRydW5rCis0MjgwMSAxZDA1NWViZDgzMjI5ZmE3NzBiYmQ2ZDYxYTEzZDk4NTBhNjE0YjQyIGxlZ2FjeS10cnVuaworNDI4MDIgNTQ3NTRmMGQyNWM3MmY3YTVmMWE5ZWY5NWE1YjQ2Y2RkMTMyZDdmZiBsZWdhY3ktdHJ1bmsKKzQyODA1IDdhMzBkYzJhZjMyOTM4NTgxMDVkNDUxNjk2ODU3NjA5MjMwNGIyZWEgbGVnYWN5LXRydW5rCis0MjgwNiA2YjdjYTNiMjAxZjNlZmRmYWNkODdlYzdlZWU3NGNjMmEzNzNlYjQwIGxlZ2FjeS10cnVuaworNDI4MDcgNGYyYWY1NmQ4ZWJlNGQwMjdlMTMzM2RhOTllMDNhMWU2NTMyY2YwZCBsZWdhY3ktdHJ1bmsKKzQyODA4IGJjMDc5N2IwNmE5OWViYzZlYTY3NWI1MTcwODMyYmRlYjdjNTg2ZTAgbGVnYWN5LXRydW5rCis0MjgxMCBkMzhhYjVjYWQ5NDViMzU0YzMxZjEwMTE0MDM0YjY1ZjBhMDgwMjA4IGxlZ2FjeS10cnVuaworNDI4MTEgYmI1ZTMwNDY3ZmU0ZDE3NjJlNTA4MTgzOTU1ZWQ4YTczNDE1MmE4MiBsZWdhY3ktdHJ1bmsKKzQyODEyIGMxYzQ2MjEwYjRiN2U0MGVjYzVmNTM3Mzc2NTE0MjY5YzI4MWRiZjggbGVnYWN5LXRydW5rCis0MjgxMyAxMmJjZDE2YzMxYWRlNmZkNDUzY2E5NDQwNmNiM2ZiYTZmNGMxMGJkIGxlZ2FjeS10cnVuaworNDI4MTQgZDAyYjRjZmVmYTBhMGJlNjBjZGVmYjA3MjAzNjRhOGEwODUzYWI4MCBsZWdhY3ktdHJ1bmsKKzQyODE1IDdhNmIxNzRkZGVmMmYxOGUzMGQ3ZWZjNzk0NTQ1YzMxZDhmYTliMDggbGVnYWN5LXRydW5rCis0MjgxNiAwN2YzMzBhZDFiNDc1ZTJhYjc1NmJjNzMyMDBmMmFiMjQwZGY5NDk1IGxlZ2FjeS10cnVuaworNDI4MTggOWI5ZDgzOTFiNjcxY2M1ZjBlNTY1MGIyOTNhZTRiODAwMjk0ODhkOCBsZWdhY3ktdHJ1bmsKKzQyODIwIGRiNjEzMWM1YWU1YWJmMjA4ZmRlMWIzODRmOWVhNzBjNWMwMWUwYWUgbGVnYWN5LXRydW5rCis0MjgyMSBiMjQxNmZhYjEzZmU2ZDNmZDNkNTdlM2EzNGExYmFlMmEyMDMzOWM1IHJlbGVhc2UyNC1tYWludAorNDI4MjUgMWY1ODQxNjRlMDEzMTc2MWE1YWMyYzFhZWYxNTFkN2YzMjFmNWRjOCBsZWdhY3ktdHJ1bmsKKzQyODI2IDY1M2Q4NTg1ZjA4MGEwMTc5NjE3OWJmNTRmODYwODIxMjVjYTg3MWUgbGVnYWN5LXRydW5rCis0MjgzMCA3NDcwMWU0ZmNkYWQwZjk0ODU5MjA1YTExMTE0M2I3MmVmMWZmNjU5IGxlZ2FjeS10cnVuaworNDI4MzEgYmFjNmJkMzQzYTEyNDdiODA3NWIyMWMyN2RmNzU1YzZmNmMzMWZmMSBsZWdhY3ktdHJ1bmsKKzQyODMzIDNjNTE5YTYxMmJkYjdlY2EyNDMyMTM3MTk2ODQyZDc3ZTcyZjNlOWYgbGVnYWN5LXRydW5rCis0MjgzNCA5ZTgxNzg4YjBkNGI1OTEyZDMyZjlhMDU5Njc3MzcyNDRmZjUyMDk2IGxlZ2FjeS10cnVuaworNDI4MzUgMGI3ODA5NjYwNDU2Zjc5MjJkMDYzMDY3MTViNjc1ZDU5MTVkZTk2OSBsZWdhY3ktdHJ1bmsKKzQyODM2IDkxMDliMWEwZDI2NWUxYWVmYzZmYjI4M2Q2N2VmODI4ZGNhOThlMDMgbGVnYWN5LXRydW5rCis0MjgzNyAwMWJjOGVlM2QyZmY4NDZjNGY3YTMzYTYxOWUwYjI4NmI1YjI1ZDFhIGxlZ2FjeS10cnVuaworNDI4MzggM2EzYWVkNDliMjQ1NmU5MTdkOGI2NjIwNjM4ZDYyNTE3OWY4YmUzZSBsZWdhY3ktdHJ1bmsKKzQyODM5IGRlZGMyYzk0ZDExMjYyNDQxODU2MmNlZDAzYzA0YzliYzUxYjZmN2QgbGVnYWN5LXRydW5rCis0Mjg0MCA3YzFhY2E4ZTNkN2Q3YTVhYjkyNTViZjMxZTQ5NTRiNWU1ZDUyZDdhIGxlZ2FjeS10cnVuaworNDI4NDIgYjE5MjllOGQxNWY5OTk5NDRhNTJhN2NhZjY3OTQxZTdiNDVlYzE3YyBsZWdhY3ktdHJ1bmsKKzQyODQzIGQzZDBkZDkyYzczMWFiN2UwYWM0N2JmMmFkNDFhN2U1MjRlZGM5NjIgbGVnYWN5LXRydW5rCis0Mjg0NCBhOTY5YmQxNTc4OGY1MTQwNTE3N2Y5NDMyYmFmNjEzNWJjZDcyYzM1IGxlZ2FjeS10cnVuaworNDI4NDUgMTg0OGQ3NWJiZGIzOGJkNWM0NGJkMjc2MDAwZTllYzFlNDkxMTJlYiBsZWdhY3ktdHJ1bmsKKzQyODQ2IDQyODRiMzMyNGNlMmU0YjY0MWQwYTI3OGM0NzM0NmQ5YjBjZjljOTkgbGVnYWN5LXRydW5rCis0Mjg0NyAzOTFmNzRjOWMyNjM2ODA5NzAzNmZjNGRkNDA5MDQ1YzMzMmNhYWE3IGxlZ2FjeS10cnVuaworNDI4NDggYWRiYWE5ZWJhOTc1NDNkN2ExMWQzZTk1NjU3ZTNjMWRlYjA4OTM0YSBsZWdhY3ktdHJ1bmsKKzQyODQ5IDRjY2VmNDc4ODFmNzlkOTM4ZjkxMjU5ODgxODkyOGEwNDkzZWQxMGYgbGVnYWN5LXRydW5rCis0Mjg1MCAyZDFkZjI0ZTMzZGY3MTBlNGQzNjdjODgyZjFjNjdiMDdhNmUxZDA5IGxlZ2FjeS10cnVuaworNDI4NTEgM2I2NzVhYzlhOTI1NGUxMjA1ZDAyNTA0Njc3MzcyMDU5OGJjNDg5OCBsZWdhY3ktdHJ1bmsKKzQyODUyIDhjZDE1Mjc0NjM5ODc5N2Q4NmQwZTc2YWEwNjYwNzI4MzcyOWRhYTYgbGVnYWN5LXRydW5rCis0Mjg1OSA2YWFhZGJhYjM1MzAxNTVlYzE5ZDgxY2RhM2JkYWJiMzA2MWZjNmYxIHJlbGVhc2UyNC1tYWludAorNDI4NjggZjgwY2E3MTNiYjRiZWEzNTM5MzkwYzIxMTM3NTY3YWViZWQwMTljNSBsZWdhY3ktdHJ1bmsKKzQyODcwIDliMTNkYTY0N2E1ZWJiNTUyYmI4N2YwOGE1OWUwM2M2Y2Q5MzYxOGEgbGVnYWN5LXRydW5rCis0Mjg3MSA4ZTBmMGZiMTRkMzU4YjdiZmMyNWFjYmFmZmZmM2MzZTRhNTY1MTFmIGxlZ2FjeS10cnVuaworNDI4NzIgMjA0YzMwN2IwMWNlNTdlYzM3ZmViMWJmZjNkZGM2MzJlZTZhZmQzZiBsZWdhY3ktdHJ1bmsKKzQyODczIGZlMDczNmNjYmE3NTUxODA3MjM0NjM3M2I5ZjMyYzU4NzE5ODllNGUgcmVsZWFzZTI0LW1haW50Cis0Mjg3NCBjZDcyZWI1NWQ1ZjhkOGNjYTcxYjkwYjQ1MjRjNGE2NTA1OTY4M2ViIGxlZ2FjeS10cnVuaworNDI4NzUgN2ZhYzVkNzlkMDQzYmZhZTk3MTExZjA1NzRiYzlhNzBiMGRiNGMyYiBsZWdhY3ktdHJ1bmsKKzQyODc2IDRmNjI4ZWNjMzBjYjJlYjRlMjNlOTQ1ZWMwMjVjMjdjOTcwMDFkNmIgbGVnYWN5LXRydW5rCis0Mjg3NyA4ZWJmNzk5N2M2Y2Q1NmU4M2M4M2Q2ZjMwZTQ4NWE3MGU1M2NjNTQ2IGxlZ2FjeS10cnVuaworNDI4NzggODk1MDc0ZTVlZDNhYjgwYTQ2M2IxMGU2YmE5OGNkMDY1OGZhZjFhMiBsZWdhY3ktdHJ1bmsKKzQyODc5IDFlMDQzYTEyNWJlNjgzZjViNDEwNDc4ODM1NDcxYzdiZTg3ZTYzYzMgbGVnYWN5LXRydW5rCis0Mjg4MCAyZDI0ZjNhMzdhMWIzNWY1MzQzZTBhMDExMTY4NWQxM2JlY2E2MzZmIGxlZ2FjeS10cnVuaworNDI4ODEgMWUxOTEzOTJlYzVjNjE4MmVjNjZjY2UxNjM5MzYyOGM4NTAwYTU3MyBsZWdhY3ktdHJ1bmsKKzQyODgyIDE1ZDMzMjk1NjE1ZjZmMGE0NGE5ZmY4NzgwNzMxM2YwYTc5MTkwYzAgcmVsZWFzZTI0LW1haW50Cis0Mjg4MyA5ZWIyNGY5MmE3ODRiZjBjZWE2NmNjMmJjYzY2YzFlZGVmMmE0ZjBlIGxlZ2FjeS10cnVuaworNDI4ODQgYTczNWRmNTUyZjAyZDlmYTE5OTYzMmIyNDQwNDg2ZTA5ZWI1NmI5NCBsZWdhY3ktdHJ1bmsKKzQyODg1IGU2Mjc2N2U2NGRlODE5NmM1MjEyZjg0YmZjMTlmOWYxMjhhMmMyNTQgbGVnYWN5LXRydW5rCis0Mjg4NiBjOTEyMTU2NDJkY2Q0NWRlMDBlMjdjZDczZjFlNTNiOTQ4M2Y4MmFjIHJlbGVhc2UyNC1tYWludAorNDI4ODcgNDU1NjcyYThmODc3NjFjNzBlYjY0YjAzZjg4ZDA4ZjhjMDhkODExNCBsZWdhY3ktdHJ1bmsKKzQyODg4IDI1N2FkODlkOTJkZjg0NTIyMzZiOGZlZDY3ZWI4MGFlNDI1NmIwZmEgbGVnYWN5LXRydW5rCis0Mjg4OSBiMTZlNTA0NDEzYzNiODM0NmM1OGExNWZiOGYxNWEzMThjODQwYTRmIHJlbGVhc2UyNC1tYWludAorNDI4OTAgNzhjOWFjYmI0NjNjMzNhZjNhZDU2Yjk2ODQxMDA2NDE1MTU5YjE3YSBsZWdhY3ktdHJ1bmsKKzQyODkxIDliYjU5MGEwYjdmYjA0YTY1NjBjNzNlMzdlZTJjOGIzMWI2Y2FkZDkgbGVnYWN5LXRydW5rCis0Mjg5MiA2OGEwOTQzZGJiZTUzM2RiMjhjYjI2YjdjZmQxNzE1YWRmYjc4YzQxIHJlbGVhc2UyNC1tYWludAorNDI4OTMgY2E0YmJjYmJkMGQ1OTUwZjEwMTFiYzkxZDY2MGRkNjE2ZDAyMThlYiBsZWdhY3ktdHJ1bmsKKzQyODk0IGU5YTdhMjc4NGUxN2VmYmJhMjMwOGUxYWNhZDY2N2ZjYmJlZmQyODMgbGVnYWN5LXRydW5rCis0Mjg5NSBhY2NmYjE1NmY5Y2M2NDFlYWY0YzIzYTM5ZWU3NGExMmNkOTI1ZTIzIHJlbGVhc2UyNC1tYWludAorNDI4OTYgOGQ0MWRkYzMxZTYxZTYzYjIyZTEyN2YyYTViZWRkZDg4MTY0NmZiMSBsZWdhY3ktdHJ1bmsKKzQyODk3IGIyMmM0OGZlNjJhNGIyODY0MzhkYTc0NGEyYTM1NTI4MjJmZWJlMjYgcmVsZWFzZTI0LW1haW50Cis0Mjg5OCA0NzA2YjdhMTI1NmMyOWM3NDk3ZTk0Yjg2YjdiNzQ5NTM3MTkzYzJlIGxlZ2FjeS10cnVuaworNDI4OTkgNmE5YzcxNjViMTdiZGI3Yjg1MTM2ZTFlZTEzMTU4ZGFjMjgwNjQ3ZiBsZWdhY3ktdHJ1bmsKKzQyOTAwIGIxN2RhNWUwYTY5N2EwZmZkMTkxZDVmODBlODE2ZTY0OTE4NmE0OTMgbGVnYWN5LXRydW5rCis0MjkwMiBjZGU3NTczMzU0OTI5ZmJiOTY1ZTUwYmYzNjIxNzRlMTEwMDQ2OGIzIGxlZ2FjeS10cnVuaworNDI5MDMgZGI1NmY1NzBiMGNhMTIwNWYzZTQ0YmVmMGNkYzFjYWMzMzA2ZThhMiBsZWdhY3ktdHJ1bmsKKzQyOTA0IGQzNDJiMGRjNDkzNDE0ZmIyMzRjNTk5MjIzODI5MTI0ZTliZjM3MzEgbGVnYWN5LXRydW5rCis0MjkwNSAxM2I5OGQwYTdiYWE4YjZlZmJlMmQzZjFiZGUzMDE0MWFmYTg0Mjk0IGxlZ2FjeS10cnVuaworNDI5MDYgN2NmNWQ5YmE1Zjk3ZWFhM2E0ODY3YTAzYjljYmYyOTQwYjdlOWRmYSBsZWdhY3ktdHJ1bmsKKzQyOTA3IGI0OGJhN2NmNDU3NmViNWNhMjg5OTJlODI4ODA4MDQxNzIzMTQ3ZWEgbGVnYWN5LXRydW5rCis0MjkwOCBmNmI3ZTBjMzg0ZGE5ZmRkYzMwZjUwMjA5OTg4Y2Q4NzQ2NjE1Yjc1IGxlZ2FjeS10cnVuaworNDI5MTAgYTk2OTdkZTVlMThiZmY0MjAxM2JlMDQ4ODhiYTg5ZjMzMDQ1YzczZSBsZWdhY3ktdHJ1bmsKKzQyOTExIDYzMmE0ZGFhOGQ0YWZlMTUzNzNkMzNjMzJjZDkzOWZlOTQyZGYxOTkgcmVsZWFzZTI0LW1haW50Cis0MjkxMiA0YjM0N2M2NTQ2MzVmNmE1ZTUyZmMyZWJkMTMwNzlmN2QzZjQzMzZkIGxlZ2FjeS10cnVuaworNDI5MTMgNTUyZGQ1ZmRiOWQ4NGZjNzgxMTVmNGJiZWQyYzUzNDBkMGY3YWIyMiByZWxlYXNlMjQtbWFpbnQKKzQyOTE0IGZkNzM1NTk2ZjY5YzFjYmMzODA2Y2UwODM5OTdiMTM5NTRmN2ViODMgbGVnYWN5LXRydW5rCis0MjkxNiA0MzVmN2YzYzhiNmRhNDc1ZWFlNWQ0NjllMmNkOTYyMzIzMzIxZThhIGxlZ2FjeS10cnVuaworNDI5MTggNmYyZWRhNDk1ZDlkZTZiNjhmMTg1MmUwZWI0NDYwMzRiMzc4MTUzMCBsZWdhY3ktdHJ1bmsKKzQyOTE5IDI3OTA1ZWJhZGRhYjVkZGFjNWZlMDI5NTUxYTRlNjdjNzU0NWJkZmUgbGVnYWN5LXRydW5rCis0MjkyMCAwMDIzYzBjZjhmZWJjMGI5YWYzYzEyNTE2NTAxNDIwMTdlYjllOTc5IGxlZ2FjeS10cnVuaworNDI5MjEgOTIyN2FlM2RiN2VkMWUyYTRhZjQzYjJjN2MyODcxNzIxYmYzMTYxZiBsZWdhY3ktdHJ1bmsKKzQyOTIzIDEyYjA4MTIzZWNiY2NkODJlMTg2NDhjOTgwZTUwYmIwNWRkOGMyMjEgbGVnYWN5LXRydW5rCis0MjkyNCA0ZGVkYzA1YWQ2YjQ3NjRhYTUyYmQ1MDQ0OTg3ZWU0NGRlZDFiN2UyIHJlbGVhc2UyNC1tYWludAorNDI5MjUgMjEwMzNiYjdlY2JlMTlhMTE0ZTc1ZTM2YTc1MWIyZmNmZWMzMDQ5MSBsZWdhY3ktdHJ1bmsKKzQyOTI2IDU2YTRjZjJiMDJmZGRjZmRkNzY2ZjM1Yzc2MmFkM2U2MDFmMDk2ZjMgbGVnYWN5LXRydW5rCis0MjkyNyBjYTI5ZGRhNTYzYjdhNDZhNGZjZTMyN2M1OGViMzE0MmExYzJhMWZlIGxlZ2FjeS10cnVuaworNDI5MjggOTAyZWYxZGMyOTc5YjZjYmY4MjgxN2UzNWEzODBkNGE3MThkNzQwYSBsZWdhY3ktdHJ1bmsKKzQyOTI5IDY5ZWI2ZDFiOTlmNTZkNmE2NDQ5NTJjZDA4Mjc2YWFiNWM1ZGY0NzUgbGVnYWN5LXRydW5rCis0MjkzMCAzZTJiNTc0NzAzOGZmZmQ0NjU3ZjM0Yzk5NzBiM2JkMWQ0NzdjNzQzIGxlZ2FjeS10cnVuaworNDI5MzEgMGJmNTM2MzkwMTRhOTRiYjNlMDgzZmQ0MTk5YjkwMzM0NDAyNjhjMCBsZWdhY3ktdHJ1bmsKKzQyOTMyIDkxYTllMmUzMWU5MzBkNDYxNmViZjA3YjJlOTMzYWE1YjU3YzI3N2IgbGVnYWN5LXRydW5rCis0MjkzNCBiNGU4OWQyOWJlYThjNDVjZjJiYWFhY2M5ZDFmMTBiOGRjMmUxMzc0IGxlZ2FjeS10cnVuaworNDI5MzYgYjIxODRkOTEwYTAwZjgxNjk2MzY0MjhkZTY5MjQyMTAwMjBjODE5MCBsZWdhY3ktdHJ1bmsKKzQyOTM3IDBlMzZlN2M2NmI4ZThhNWEzZmUyOWZiMTA5YTAzZGM3OTRmYThkZGMgbGVnYWN5LXRydW5rCis0MjkzOCBmMWVhYWU3Zjk2MmQzZjdhMWFhZDMxMjk0YWM1NTJhMDEyNTMxMTU3IGxlZ2FjeS10cnVuaworNDI5MzkgMThmOTExZGRlM2UyNDAwZGRlYjBiZGQwMmVjY2VlYWZjYzRiZDg2NSBsZWdhY3ktdHJ1bmsKKzQyOTQwIDUwMmE2ODg4Nzc4Mzk5OWJhZjU4NDg0MTAzNTBhOGMyMGQzZTgzY2QgbGVnYWN5LXRydW5rCis0Mjk0MSBkNDBiNDhkZjgzZTc5NGQ5YTJjMDQwMGE5NTg1MDFmZjBiMzBjYjBhIGxlZ2FjeS10cnVuaworNDI5NDQgNmU5YjM2ODc4OWRmMGNlNTY2M2UzMWE1MjM5M2ZkMmRmZWMyNjkxOCBsZWdhY3ktdHJ1bmsKKzQyOTQ1IDM2NTJiNTEyOGI3MDdkZTgzMzExNDBiNmVkNzIzYTMxNmQ4YmJjOGIgbGVnYWN5LXRydW5rCis0Mjk0NiA3OWQ1YjdmNzdhYzQ1OTRmMzM3ZTY0NGMwZmM4ZmE5MzEwYzVmNzg4IGxlZ2FjeS10cnVuaworNDI5NDcgOTdkMzg3OTdiOGJjMDk3YWIzZjBhM2I3MzFiZTFlMDlhZDkyNWM4MCBsZWdhY3ktdHJ1bmsKKzQyOTQ4IGQzZDJmOWZmZGMwNjU0MGM2YjllYWE4Mzg2YTcxYTkxOWE1Yzg0MDggbGVnYWN5LXRydW5rCis0Mjk0OSA4MDU4MDAxODFlMGUxOWZlNmNhMmNjMDFjYmE4OWU3YmVmNmMxZGZmIGxlZ2FjeS10cnVuaworNDI5NTAgNDhlMGE1ZTM5NDAzYmExZmYwZTQ3YzNkYzcxMWY5NTc2OGI1MWZiNSBsZWdhY3ktdHJ1bmsKKzQyOTUxIDdjMTdlOTIyMWY5NDFmNmExY2RkNDA3MWRjZWNmYTJiZGQ2MjMwMWUgbGVnYWN5LXRydW5rCis0Mjk1MiBmYzEwZmYzMjJkZjFiNzkzZWQ4NWZjODI0MjVhNWIzNDkyZDM4ZmY2IGxlZ2FjeS10cnVuaworNDI5NTQgMzI2NmEwMjBhMGRhYjdmMGE3Mjk0YmFlOTgxZjZlNDRiOGFmYTIxZiBsZWdhY3ktdHJ1bmsKKzQyOTU1IDExZjhiNWI4Y2UyMDE4Nzg2OWE5ZTk3YTJiYTA3NzZlZjc1ZmQ0YzcgbGVnYWN5LXRydW5rCis0Mjk1NiBmYWI0NGM1YzhkZjQyYjk1MzExZTc1N2UzMDVmNzkxMWI4ZTVkNzA1IGxlZ2FjeS10cnVuaworNDI5NTcgMmE5MDU2ZjRjMTY0NzY2MzQ2NjA5MTYyN2MyZDZmZGQxNGVkYzBlMyBsZWdhY3ktdHJ1bmsKKzQyOTU4IGRiNDY1MDQ5M2MyYjhlMzkyYzk5MmFjNTIzMjQ0ZmRmNmUxYmRmNDcgbGVnYWN5LXRydW5rCis0Mjk1OSBhZTU5ZmNlZDJlMTQyZDRhYmZkMjJjN2IxOTc0NzIzNWViM2I3NzkwIGxlZ2FjeS10cnVuaworNDI5NjAgZWJlYmE3MzUzODk0N2RmMzI3MDBmODM3Yzg1ZDQ1YzIwMTgzMTllZSBsZWdhY3ktdHJ1bmsKKzQyOTYxIGYxMjBmNzQwYWJlNDFlNjc3YTYxYWYzODA5N2ZjNWNmZWU4M2JjYmQgcmVsZWFzZTI0LW1haW50Cis0Mjk2MiAwNmUzZjYyN2FkOTk1ODk4OWI1NmVkODlhMGRjZWQ2NTNhYTQ2MWJhIHJlbGVhc2UyNC1tYWludAorNDI5NjMgZTI1NmI1MzAyYjU1YzM4NDcxZTNjMjU3MzNjOTcxZmJlMDA5MmI4YyBsZWdhY3ktdHJ1bmsKKzQyOTY0IGRmNDNjMDRkMjU1NDVlZDRiYmRlNWMwM2RlOTRkMjljYjQxYjA3ZDUgbGVnYWN5LXRydW5rCis0Mjk2NiAxZGQ2NTIwNGMwOWZlN2Q3OTFmNjE5ZmViNWI1NGNhZDExNjcwOTY5IHJlbGVhc2UyNC1tYWludAorNDI5NjcgMDNlZjk4NzA0M2NlMDBlOTA0NDkwZmNmOWY2NDI5Mjg3NDQxOGQ4ZiBsZWdhY3ktdHJ1bmsKKzQyOTY4IGU0NDY1ZDI3MzdjNGU3NWRkNmU0MWMwNjEzNWE2ZTRlYWFlZGM3ZmQgbGVnYWN5LXRydW5rCis0Mjk2OSA2NzE4NzdkMjJhMWNjODgyOGYyNzNkZjIyYjFjNGMxMGU2MjM2MWM0IGxlZ2FjeS10cnVuaworNDI5NzAgNGI4NjdlNjU0YThhNGNjMDczMWViYzM1ZmFmMWY1MzU4NTUxOTZhYSBsZWdhY3ktdHJ1bmsKKzQyOTcxIGYwNjEyNWE5ZDQwNjM1NzE1ZDk2ODUyZTNiZjM5Y2Q4NTMzMzZlZTAgbGVnYWN5LXRydW5rCis0Mjk3MiA3MzUxYWFiODdlNmRlMGZiM2JlYzdlNGQ5ZWI4NWRmNzBmYTVjMDk3IGxlZ2FjeS10cnVuaworNDI5NzMgMGYxOWE2ZmM5NzU2MDdhNjBhNDAyNmRmOGIzYjkzYzAxMWYzM2UwMyBsZWdhY3ktdHJ1bmsKKzQyOTc0IGZkYjA1YzhhZDUzMzNhMzkxNzgwN2U1ODZlZjQ0YTVhODNhZDJiZGMgbGVnYWN5LXRydW5rCis0Mjk3NSA0MDI1NmI1NGM3OTA2MGI2MDRkNjAzZGMxMjNiMGE4Nzc2OGI2OTcxIHJlbGVhc2UyNC1tYWludAorNDI5NzYgNjkxM2ViYTc4ZDQwNzkxMGMyZmU2ZTlkOTFmMjg3OTE3YWJlZjYxYyByZWxlYXNlMjQtbWFpbnQKKzQyOTc3IGM3N2VjZTY2NzA5ZDE3ZTU3NDk1NTJlMjE4MjA5MzIzNDNhNTNjNjMgbGVnYWN5LXRydW5rCis0Mjk3OCBhYjAwMzE5YzM3NDQ4NjEwNTRjYjEwYjllZmJhMmFmYzc5MWYwZTZkIHJlbGVhc2UyNC1tYWludAorNDI5NzkgOTdmZWQ2MThiNWU3MjNhNGZhM2FjZTQzNjliMTllMGNlZDg1OTNmNCByZWxlYXNlMjQtbWFpbnQKKzQyOTgwIDFhODQ2NWJhZjA3ZGQ0ZjcyOWFiZTI0ZmVkNzU4NjU3NGFiZmQ1ODIgbGVnYWN5LXRydW5rCis0Mjk4MSBjOWU0OTEzOGY2NTliMWUxNDk5MDdjMmFlNTI2NDgzNmJiMGIzNTIzIHJlbGVhc2UyNC1tYWludAorNDI5ODIgZGI1ZTcyMGIwY2VmOWUyOGZiY2MyM2U3ZmMyNDc1YTBkMmZjYWU0NiBsZWdhY3ktdHJ1bmsKKzQyOTg0IDk1ODQyNTAwN2VhNmE4YTY5MzVkNmE0NTg4M2ZkMTMyMzRmNjdlNzcgbGVnYWN5LXRydW5rCis0Mjk4NSAzYmUyNDI1ZDc3NDAwZDg4NzI3ZTQ5ODY3MWNmMzFiOThhMzA1MGFmIHJlbGVhc2UyNC1tYWludAorNDI5ODYgY2I5ODRhOGIxMTM0MmYwYmUxNjFlYjQ4ZGQ5MzdhMjk2ZmZjOTQxYyByZWxlYXNlMjQtbWFpbnQKKzQyOTg3IDQzMDliM2ZiNWI0MzVlZWE5MDIxYTExNTljNDI4ZTAwOWE0NzU0YzcgcmVsZWFzZTI0LW1haW50Cis0Mjk4OCAzMmI4NjhhNDk2NTkzMDljOTU5MzE5YzIwYmY4OTk1NWE5MzZmODhmIGxlZ2FjeS10cnVuaworNDI5ODkgM2FkNDJmOTlhNmRiYjdmZGMwNDdlMGM5MDY1YjUxMzZiYjk2OTdlYyBsZWdhY3ktdHJ1bmsKKzQyOTkxIGRkYTQyNDFmOWFiYzdlYTFlZGQyOWY4NzViNWExMmViMjE0ZTliNjIgcmVsZWFzZTI0LW1haW50Cis0Mjk5MiAzZDdhZGY4ODc0YWM1OGI4Mzg2ZmNmOTNhYmRmNzUzZjkwNzgxZDA4IGxlZ2FjeS10cnVuaworNDI5OTMgODI5MmUzZTZlY2ZlYTk3YWQyOWUxN2ZjYzAwMDM2YjFjYTAwYTM2MCBsZWdhY3ktdHJ1bmsKKzQyOTk0IDdlYjJjMGYwZDBmZDY2NTEyNmQxYTVlMjhkZjVhN2NiNGE1YmMxNzMgbGVnYWN5LXRydW5rCis0Mjk5OCA5YTA4NzI0MTEwZDBiZWI5NmRiODFjMzI5NmI2ODY2MjBhMGNmM2VlIGxlZ2FjeS10cnVuaworNDMwMDAgMzIxMDNjNWRiZWZhYzNlMmJjZGJmZDQ2OTI4MDkyYjA3MzBmYTE0ZiByZWxlYXNlMjQtbWFpbnQKKzQzMDAxIGE4ZmQ5MWNkMzE3YWNiYjg5MTA4Y2U0NjU3Mjc1MTAzMTU4ZTY1ZTQgcmVsZWFzZTI0LW1haW50Cis0MzAwMiAxNWE0NTgxNzFlYjAwODkwNjM1YTkxMWRhNjRjNjJkZDllYzA2MjI1IGxlZ2FjeS10cnVuaworNDMwMDMgMGMwNDA4MzUyZWU2OWNhZmVkY2FhNDY1Y2ZhMWMwMjdlM2UzZjZiZSBsZWdhY3ktdHJ1bmsKKzQzMDA5IDAzNWNjODQxNDdmYjA0ZTQ4OWZhMDdhZDkyYjFhZWNjNDY0MTliZjIgbGVnYWN5LXRydW5rCis0MzAxMCA4NTE4OGU1YjQ5MTJmNTRiNzEwMDQ4YmJjNjAyMDk5MjdmNTk5YjEyIGxlZ2FjeS10cnVuaworNDMwMTEgYjVhMTM1NzA1OTJkZGM5NDcwN2M2YzhmMmFiYmE1ZDgxMmM5MThjMCBsZWdhY3ktdHJ1bmsKKzQzMDEyIDZiMWIzMmE4NWY0NzYwMWQ4ZmM5NmE5NzgwM2EwOWVkNjRkMTNlNjMgbGVnYWN5LXRydW5rCis0MzAxMyAyOWU2ZTdhMTA3ZGUzOTIwNWM1NDBhMjg2N2M0YzI2Yzg2ODc5OGQ0IGxlZ2FjeS10cnVuaworNDMwMTQgYmRhZmNhMjE5MmQzN2ViMWYxYWYzMDA5NWY4NTU1YmUzOWI0ZGFkOSBsZWdhY3ktdHJ1bmsKKzQzMDE1IDhjMWJmNzk5OTUyY2YxZDAzNDViMDcyYmMwZGI0MmIzYWRiNzczMjMgcmVsZWFzZTI0LW1haW50Cis0MzAyMiA5NTQ2OWU5N2ZkOTAwMGFiMjhjNzBmOTk2NGI3Mjc5ZmUxYjIwMThhIGxlZ2FjeS10cnVuaworNDMwMjMgNDgwOGVlNjJiMTU2YTYxOWE1OWMyYTgyNTQ4NjUxMmExOWJkZWFiYiByZWxlYXNlMjQtbWFpbnQKKzQzMDI0IGIzYzM2NDBkOTJmODRhMTJlMDVlMjk4NDU4MTU1YzA3MGYzNDYxMzMgcmVsZWFzZTI0LW1haW50Cis0MzAyNSBjOGZmYzkxM2QwMTQzMDU3Yzc1MDMzY2ZjZTEyM2MwMjRiNWM2NzUzIGxlZ2FjeS10cnVuaworNDMwMjYgZmYzMDI0MjU5ZDkxZDcyYmFlN2E3YzNjN2NlZGUyMjMyMjBlODkzYiBsZWdhY3ktdHJ1bmsKKzQzMDI3IGUyYWI3NTVhZTY4NTgwZTBjMDIzMzhiNTg5MThlYjkxMDNiZTdmMWYgbGVnYWN5LXRydW5rCis0MzAyOCAyMmZmZjFmM2M3OGFlNTQ1MTg4MWQwNzE5NjVhMzIzYTkzOTZjZWNjIGxlZ2FjeS10cnVuaworNDMwMjkgY2RlNThjZDA3ZTdkODUwNDNiZWU1ZjMyYjY4YzhlNDc4MjcyYmQ2ZCBsZWdhY3ktdHJ1bmsKKzQzMDMwIDRhODk2ZmMxMjM4NDI3MjQxOTM5YmY4MGRkNDBiYzBmYTA0MmQ0YmQgcDN5aworNDMwMzEgNTcwYzYxNmFjZjBjMTRlYzdhOGVmMjc0MzdlMTQzNmYzYjI5YmMyMCBsZWdhY3ktdHJ1bmsKKzQzMDMzIDM3NWNlMWMwNGU2NmI1OWIxZjcxM2Q1YTU0MzZkNGQ0Y2U1YjA4NzMgbGVnYWN5LXRydW5rCis0MzAzNSA0OWM2ZWI2ODg5MDZiMWRkZGFiZjU3OGYwODEyOWU2NzI5ZDYxNTFmIHAzeWsKKzQzMDM3IGFiYTgxNGFhNGM2YTdiZDgyZDFhMzNmMGM0YzA4ZTFjODExOWRmZjUgbGVnYWN5LXRydW5rCis0MzAzOCA2OWNiZTBmYjdhNmQyMDRiMDE5ZjJiYzMyNjczMzRlOTEyMzRiMTgxIHJlbGVhc2UyNC1tYWludAorNDMwMzkgOGU4ZDBlMDNmMDc2YTI0MmMyYjQwN2NmNzk1ZDFlNTMwZTgzZmE4NSBsZWdhY3ktdHJ1bmsKKzQzMDQwIDI1MWY5MjFjYzgxZGNjMWQ5YTU1ZjI1ZmIxYzY0MWZmNjA2YmIyMWMgbGVnYWN5LXRydW5rCis0MzA0MSA1ZmI1NGVkODU0M2JiMDczYmJmODkzNGQzMDVmZDg4NjFiNDVlMTNhIGxlZ2FjeS10cnVuaworNDMwNDIgZDk2OWUzMzlhYzFlNTM3ZmZjNjQ1YzBiYmQyODE1YTkwYjZiMTFkMCBsZWdhY3ktdHJ1bmsKKzQzMDQzIGY5MTQ2MzBmNDE5YzFjNGU2ODEyMmZiNmRjN2NhNTc0ZWQyNGEyNTcgbGVnYWN5LXRydW5rCis0MzA0NSA3ZmE0YzI5ZDcwMzAxNWE3OTgxNzllMmQ4MWJmOTYwYzlhMTA5OTgyIGxlZ2FjeS10cnVuaworNDMwNDYgOWQzYTJjZGUwZGJkMzBmOWM3MDVlMTA4MzM2ZjYzZDdiNGIwMjIxNSBsZWdhY3ktdHJ1bmsKKzQzMDQ3IDQ1MWRhM2E1MjkxMzE2ZGExZTg4NzU5ZjYyYWE0OTk1ZWRlYmI1MDAgbGVnYWN5LXRydW5rCis0MzA0OCAxNzkwODQ4OTlkOTY5YjM3OTU1NmRmZTYwY2VjZDMyNzA3MzNkNjAzIGxlZ2FjeS10cnVuaworNDMwNDkgODZmMTMzMDFjM2RiNDE0Y2ZhZGNhNDU5YmUxY2MwM2U3Yzg5NzY1ZiBsZWdhY3ktdHJ1bmsKKzQzMDUwIDU1ZTRmNDc2NTc2M2VjZjY2MjBhYzNjYjlkNzI5YjJmNWVjOTVkMzUgbGVnYWN5LXRydW5rCis0MzA1MSA1YjM4ZGM1NTFmODZmOGM1YmViMjMzYTA3MGM0ZWU4Y2JmZTA5MWNjIGxlZ2FjeS10cnVuaworNDMwNTIgNGY0NDQxMmU5ZjZjMTI3Y2I1YTIwMGRlMTdlOGJiODlkNzI1ZjRhMSBsZWdhY3ktdHJ1bmsKKzQzMDUzIDNiZjIzMDYxZDg2Y2Q5NDM1ZjU2YzQ5NDJjMzM4YjAzZmE3ZTJhNjUgbGVnYWN5LXRydW5rCis0MzA1NCA2NzM4ZjdiMjgyZjY1YzVjOTFjMDVjNDI1YmZmMDk0YTFmMjQ4MDljIGxlZ2FjeS10cnVuaworNDMwNTUgMzU0ZTIyZjNkYWM2ZjMyMmRhYzg0NmY4NjlkMmU2YjM1NzNkN2YxOSBsZWdhY3ktdHJ1bmsKKzQzMDU3IDFkZGYwZDgxZDZjNTkwY2NkY2IzMzUyMDdmZTNhNDg3NzMwYzRjYTcgbGVnYWN5LXRydW5rCis0MzA1OCA2MTRkODBkZmZjMWY4OGUyMDBmYzk3MDZhOGU3N2IxOWZmZmE0ZWU4IHRpbS1vYm1hbGxvYworNDMwNTkgNjg1ODQ5YmQ5MDVjNGFiM2QzYmM2MjUyMDM1MDM0MGFiYTkzMjUxMyBsZWdhY3ktdHJ1bmsKKzQzMDYxIDk3ODdmODMwZDAyNWI1ODVjNGFjNzQ0ZThjYzczODcyNzcwZWY5ODQgbGVnYWN5LXRydW5rCis0MzA2MiA2MjQwOWExYmM0ZGIzMmU0ZmUwYzk0ZmU5MGZmZjYyYjBkYjBmNGU3IHJlbGVhc2UyNC1tYWludAorNDMwNjMgYWIxN2RhNjg0MjZiYTg1NDI0MGEwZTlmOTE1Mjg1ZDMzZjdlYThjNCBsZWdhY3ktdHJ1bmsKKzQzMDY0IDVkMmFiNDgyM2YzY2M3ZmUyZjdhNzJmZGUxN2JmMDk4NmY3NGQ0NWQgcmVsZWFzZTI0LW1haW50Cis0MzA2NSBmMGIwYWEzNTdkNDllNDM0OWFmNWI0NWQ5YWQ3ZjBkNWU5NWVlYTNmIHAzeWsKKzQzMDY2IDI1MDA3YzE1NTY2OGRkNzRlM2QxMmNkNjJmZmU5NDQ4MDFiYWRjNzEgcDN5aworNDMwNjcgNTYwYWMxYmE5OTI3NGZiZWQ5ODdkYTJmYzYwM2ViMTYyZWQ0YjgzMSBsZWdhY3ktdHJ1bmsKKzQzMDY4IDRhZTBiYmZjNjg2NmUxOTU0Nzc3OThhZjczYTcxNjRiYWQyNGYzMTEgbGVnYWN5LXRydW5rCis0MzA2OSBkNjgzNDRkOTMyYzQ1OGY4NzY3OTExYTUyOGUwYTQ1MDA2YzU2NzhjIGxlZ2FjeS10cnVuaworNDMwNzAgODVlYWYwY2E2NGYyZTRmZjZjM2Q2NGIzMTA3NmFkYWNlZTY4MTlmYiBsZWdhY3ktdHJ1bmsKKzQzMDcxIDdkYWQ4M2NhNzAyZGIyYjA5ZGZlMjdjMjkxN2Q2YzExNjdlMjI0MjkgbGVnYWN5LXRydW5rCis0MzA3MiA0OTIwYmQ0OTJkOTg2YjVhYWQwMmExZWQ2ZDY4NTI5OWRiODdhNmMyIGxlZ2FjeS10cnVuaworNDMwNzMgNDcyN2YyNjBmNmY4ZDk2OTM1ZTBkYzljNzVjZjQ1OTZiMDBjMzYwMyBsZWdhY3ktdHJ1bmsKKzQzMDc1IDBmNmI0Y2VlYTU4MDUzOGM4Mzg2NGEwNjMyN2Y2YzIyZGY0ZjdjYWYgbGVnYWN5LXRydW5rCis0MzA3NiA0OTUzNDRmZWQyNTViNWFiOGQxYjMzYWJhOWVhMThmNzMwMmU1ZGNhIGxlZ2FjeS10cnVuaworNDMwNzcgZjcwYzAzNjQ4OWVjNDMxNzgwOGE4NDEyNGQwODQ1NDhlYjVkOTkxMSBsZWdhY3ktdHJ1bmsKKzQzMDc4IDAzODk0YTdhMzJlY2QzZmZmNDM5N2ZhM2RhMGMyMjFkNGQxZmUzOWEgbGVnYWN5LXRydW5rCis0MzA3OSBhMmE2MDQ5MzFmZjY4MDQ3ZmM2MDZjYTI4ODA4MDFkYTJhYzE5MTkyIGxlZ2FjeS10cnVuaworNDMwODAgMzAyMDNlMmI5N2Q3MzJkNWRmZjYwOTViOWJlOGE2MWI3NDFkNWNiZiByZWxlYXNlMjQtbWFpbnQKKzQzMDgxIDkyYmUyZTExNzAzMzE5NThjNTVkYmIwMmZmMDhhMjk5ODZmOTk0MTkgbGVnYWN5LXRydW5rCis0MzA4MiA4MmY3MDBmYzRkZTIwZGU1OGI3ZWRiYmNlYzZlNDNkYTJhNmRjNzcyIHJlbGVhc2UyNC1tYWludAorNDMwODMgYTI1Mzk1OGJmYTRjNDJiMzAyZGRkZTRjODlhNjVmN2QzNGUyYjAxMiBsZWdhY3ktdHJ1bmsKKzQzMDg0IGU3MjFkNjhkYmY2ZjEyODM3ZDhjNmVkYjdiNWZmMzZkMmU4NDM4YTQgbGVnYWN5LXRydW5rCis0MzA4NSAzYjMwNzIwZmE1N2ExMTRiMmYwYTA4MmNkNGExNDI5NjdjNzViMmEyIGxlZ2FjeS10cnVuaworNDMwODYgYzBhZWIxMDY1NGIyZjY2OWNlM2UzYTFlMmQwZjFiNTMwMjJkYTUyYiBsZWdhY3ktdHJ1bmsKKzQzMDg3IGZmZjRlZWNkZWY0NWY2NDE4ZGU0OWQ4MWVjMGRlMWM3MTFkZjdkZDUgbGVnYWN5LXRydW5rCis0MzA4OCBiY2U1YzdhZTY1OWE1MjUyM2VjMDZiYTA3NzUwNjg2ZDI1ZTg5NjFiIGxlZ2FjeS10cnVuaworNDMwODkgYzQ0OTk0NDA2OGQyMjhmNmUzNDQ3OTYzYzRlMWIzZDkzNGU4ZjdlZSBsZWdhY3ktdHJ1bmsKKzQzMDkwIGJmYjc0YTQyMGFjOGViMzUxNTJkMDc2MmQ5NTM3ZDQwYjQwZjdhY2MgbGVnYWN5LXRydW5rCis0MzA5MSBlNDE1ZjFhODc0YjEwOWVmYjQ3MjAzZjU3MGNhNTlmMjRlN2IxMjBjIGxlZ2FjeS10cnVuaworNDMwOTIgYTljM2M5MzgyNDY1M2UwNjg5MjFmNzBiYzM4MTVmZmI3NTYzYjY0MCBsZWdhY3ktdHJ1bmsKKzQzMDkzIDUzYzgwNmY3YTI1MDg2YzI0M2Y3ZTk3YzllZDJmYTRiM2FlZTVjZDkgbGVnYWN5LXRydW5rCis0MzA5NCBiZDM3MTUzNTNhMDliNTYyNjY3OTQ1MmI0NDAzMDE5NmU3MWQ5N2Y2IHAzeWsKKzQzMDk1IDdhZGExNmExNDk2ODY3NDYyMzE0M2QyZDA4MTE2NTkwNTI2Y2VkN2MgcDN5aworNDMwOTYgY2QxODE4ZWU3ZWE5YThjZTgzOWJmMWI3NjEwMWZkYmZjYWI3YTVjNCBwM3lrCis0MzA5NyBmZjM4MWIzODhjZmY0MmM5NzU0NDg3ZjZmZWE2ZmE2NmJiNmMyMTdkIHAzeWsKKzQzMDk4IDA4MWI0ZjBlODFiN2JhYTY4MDI1NGEzMGI3MmM0NTQ1MWQ3MWI3OGQgcDN5aworNDMwOTkgMzM0MmIzYjU4NjMwNDA1M2E3NmEwZjYzZGQ5NTBlNTEyYjZjZWFlYyBwM3lrCis0MzEwMCAzZTFlZTZlMTZjODFmOTEyZjY5MWMyNDRhZjE0NjZhMGRiNTE3YjlhIGxlZ2FjeS10cnVuaworNDMxMDEgYzA0OGEwOWQwNmZmODY3NGUwNTA5NDk0YTVlNTg2YWFjZTI3M2MwNCBwM3lrCis0MzEwMiAxMTgzOTc3NmM2NmMzMjQzNjZhNzdjMjA4OTFjZDFmYzAwNjA3ODZhIHAzeWsKKzQzMTAzIDQwNTExYmY1OTI5Nzk4M2U0OTY3NGJlZjlhMjcxMWVkZmI4Njk5MGUgcDN5aworNDMxMDQgYTAxNjcyYTk2ZDQ3MjcwNDYzNjYwYmY1NTcwOWY4NWY5ZDk2NTg1MyBwM3lrCis0MzEwNSBjZTI2N2Y2ODA2NWUyMjA5MmYxNzhlYzE3NjM2NGE3ZmMzMmFjNDRjIHAzeWsKKzQzMTA2IDllZjNmYWM1ZDJjMGEyYTk0OTYyMmU1NGY5OTMxMGUwOTBiMDEwNGUgcDN5aworNDMxMDcgZWE1YjY2YWY2MjQ1YTQwOWUyYzIzZDc2NjIxNWY4N2Q0ZTgzNTA5ZiBwM3lrCis0MzEwOCBmZGMwNWIxNjcyMzZlNzU3MjE3ZGM1OGQxNTkzZTcwZDFmYzhhNWRkIGxlZ2FjeS10cnVuaworNDMxMDkgNWFlY2VkYzk4YWY2NTU5ZTA0NTM5YWM1OTM1NDFlN2UwZTQ1NGUyZSBwM3lrCis0MzExMCBmN2ZkMTFhNzVhNmE0ZGNiOGEyM2IwZjYwYjNjYjQ3NmJkMzJiMTE0IHAzeWsKKzQzMTExIGMyYzEyODE0Zjg1NGFiZjBlMDgwYTExNWZiYWE0NTgwOGZiN2M2NjMgcDN5aworNDMxMTIgMmIwNGI5YzdiNThlYjJkMDA2ZTViNzYxMTllMzVmNTFkMzE4MzYyYSBsZWdhY3ktdHJ1bmsKKzQzMTEzIGYwMmEwMzI1NGI5MWU3N2NhNzQwMmM1OGY1NzczMTgwZjA0Yjc1MDYgbGVnYWN5LXRydW5rCis0MzExNSAyMDNjMDZmYmIwNzU0NDc0M2MyZDZkZDRhZGRjYjUzNTI0MWE5MzJmIGxlZ2FjeS10cnVuaworNDMxMTYgZDdkMTJkN2ZjYzM5MmY5Nzk2YWM3ZjhkZTk3OTM4MGI4NTU0MTBkMCBsZWdhY3ktdHJ1bmsKKzQzMTE3IDIzMDQ1ZjFlMzlmMmY5MWM4ZmQxZmE0NTNlMzQwMTgyZWQzODY0YjMgbGVnYWN5LXRydW5rCis0MzExOCA2NGM4M2UwZjY4M2U1NjZhYzZkZTAwOTZlMmI2MjRjZGY2ZTIzYmJlIGxlZ2FjeS10cnVuaworNDMxMjEgYjAxYzgwZDg4MjY3ZmU1MGFmYmIzNDY3NGJjZjNjYjM3MGM1Zjk4MSBsZWdhY3ktdHJ1bmsKKzQzMTIzIDRjODA0YWI4N2VhZGFjMGFhYzYwMjRmNmJjYjNjNjQzYjUyYWZlZDMgbGVnYWN5LXRydW5rCis0MzEyNCAxZjQ1NDk4NjVhYWRiZTU1NGFlZDQyNTk1YWVkOGFlZDFiMjU2YTQyIGxlZ2FjeS10cnVuaworNDMxMjUgZTQzZDVkMmNhNTBhYmNlYmY0YzY3ZWY2YWY4MDY0NzNhNzMxMjA1YyByZWxlYXNlMjQtbWFpbnQKKzQzMTI2IGRkNDk4NDdhNjBkMzAwZDE3NjBmMTYwN2M1MDQ0ZGEyNjUxZGU3MmQgbGVnYWN5LXRydW5rCis0MzEyOCBiMzNkOTE2Njg2OTYxNWNmMjk3NGRjODdlODkyYjY5OTE4NTZjYzYzIGxlZ2FjeS10cnVuaworNDMxMjkgOTk0OTMxYjZiODc1NDg5MjliYzM2MTJjZDhjNjU1ZDI2NTEyZDYwZCBsZWdhY3ktdHJ1bmsKKzQzMTMwIDQzYzM5M2IyZmU5ZmE0NzlkMDdkYjRiNzljZWQwMWVhNTU4YzM1NGQgcmVsZWFzZTI0LW1haW50Cis0MzEzMSA4MWQwZTkzMjA4ZDllODEwNWQyNzBkYzY2NDJkZWQ0YTYyZjE1Y2NlIGxlZ2FjeS10cnVuaworNDMxMzIgZDEzNDMwYThiZDJjZTI1OWVlOTUyODVlM2Q4YTg1YWJhNjUwYjg4YyBsZWdhY3ktdHJ1bmsKKzQzMTMzIGI1NWY1MzA0MTk2NTM1OTY0NGNhYmRjOWZiYmM1MjM4NDA4NWQ0ZWEgbGVnYWN5LXRydW5rCis0MzEzNCA2ODVlMjEyMzg2NGQzZjZhZjA0Yjg2N2NjOTA2OWE5MjMxODU1ODY1IGxlZ2FjeS10cnVuaworNDMxMzUgMzg0MDBiNjYyNDA0NzVhMjk1OWQyMTBiMmUwZjA1MjAyNmIxNDNjNyBsZWdhY3ktdHJ1bmsKKzQzMTM2IDNmOTBhOTNmZjVkMGVhOTE4ODI0YzUxZjA4MGFjNjdjZWQzYTFlZTQgbGVnYWN5LXRydW5rCis0MzEzNyA5MmNiNGE3ZmM1NTRlZmZhNjkxNmI3MWFiZDIyNWE2ZGI5ZjRmZWE1IGxlZ2FjeS10cnVuaworNDMxMzggNjc3MWYwZTA4YjYwYTIzNmYyMTZlNjY3ZmViNDEzMGIxMDhmOWQ4MCBsZWdhY3ktdHJ1bmsKKzQzMTM5IDkyOTUyYWM4ZTg5MTFmMDY3ZjU2YmViYzQ5YWNlZDhkOTU3NGNhZmUgbGVnYWN5LXRydW5rCis0MzE0MCBiYjQ5MWU1NWZiNGMyNDMzYTUxY2NiNGUxZWVmZjU2MDc4OTQ0ZjFkIGxlZ2FjeS10cnVuaworNDMxNDIgODQzOTI4YzZiMjRjZGRmNmRiOGMyNTg3Y2QyNzljZmQ4MzhhY2YwMyBsZWdhY3ktdHJ1bmsKKzQzMTQzIDZjM2VjMzczNmM1MTRkZjdhYzFkZDA4MDFmNTc0YTA4YjlhOWI5MDYgbGVnYWN5LXRydW5rCis0MzE0NCA5OTEwZmY2OWFmOTczYmUzMzljMmE3NTc5OGIwYjBlMzQ1YjFhZWFiIHJlbGVhc2UyNC1tYWludAorNDMxNDUgM2I3YjI5NWNjYTkwMmJmNzEwZmZiNzMzZGVkZGU1MDcxYTZjOWI2NyBsZWdhY3ktdHJ1bmsKKzQzMTQ2IGMwMTFhZjRhMmIwMWZkMjUxN2VlZThlM2QyYTIzZTY1YTkyZGU5NTUgbGVnYWN5LXRydW5rCis0MzE0NyAwN2FiNTU3NjI1YjljZWVmZWZjN2FlNjQzOGQ1YTM5NmVhNTk3ZjdhIGxlZ2FjeS10cnVuaworNDMxNDggMjMzNTdiODhjMDNlYWZhNmJlMjk4NWRkZjU1NmNlMTUwNWUzNWFkNyBsZWdhY3ktdHJ1bmsKKzQzMTQ5IDFkMzA4MWNiM2VhNjczNWJiMmNlNmNhOGE5NTdiZWZiYTE2NDczN2EgcmVsZWFzZTI0LW1haW50Cis0MzE1MCA3YzIyYjVhYTM0Mzg3MWRiOTRkNWVlNjMxZjRlMGFmM2E3NzY0ZGJjIHJlbGVhc2UyNC1tYWludAorNDMxNTEgOGQ0MmY2NjFmZWM4MDI5ZTFhMjBjMzQzZGJiZDdiMThhN2M2OTkwZiBsZWdhY3ktdHJ1bmsKKzQzMTUyIDc3NWNkNjlmOGEyMzdkYWZlZGI5NDcyOWU2YTEyZjY1ODkwNzkzYTUgcDN5aworNDMxNTMgNmI1MTZmMzIxZDg1MjRjYmJlZTE0ZDFlNjYxNzk4NDJjOGY5YjFiOSBsZWdhY3ktdHJ1bmsKKzQzMTU0IGIzMWI3ZWM1YTZiNDM5NDBjYjhlOTAxMGJiZTljMzJhNTg4OGU4MWYgbGVnYWN5LXRydW5rCis0MzE1NSAzZGFiZDliYjQ5NmU5YTY4Y2Q2Y2Q5NGI3NjIyOTczZmM3NjY0MDVhIGxlZ2FjeS10cnVuaworNDMxNTYgYjRkMGY4ZDk1MTc5YTQ2YmNjYjQ5ZDgwZGQ1NjEzZDA1YWUwYzI0ZCByZWxlYXNlMjQtbWFpbnQKKzQzMTU3IGRlOGY1ZDFjZGY0ZDk1ODI0YWVkM2IwZTMzZDc4ZDcyZjNiOWI1MDYgbGVnYWN5LXRydW5rCis0MzE1OCBkNjJiMTM0ODg5NDNkNzhjOWM4ZDgxNzMyMjkzMjMyYTg0Yjc5MDQ3IGxlZ2FjeS10cnVuaworNDMxNTkgODUyZGUzM2VkNDI3ZDZhNDMwZjYxY2Q4OWQzNjIyZDlhMzkwNWE4YSBsZWdhY3ktdHJ1bmsKKzQzMTYwIDJkYzYzY2RiMDljZjBkYTgzYmYxNDlmZjM1MDcwYTJkNDMzMzcyOTggbGVnYWN5LXRydW5rCis0MzE2MSBkYjk4NmJlMmMwMGM1ZDAzYTVkZTU0NWFlNjMxZWQ4MmMwNWNiZDc4IGxlZ2FjeS10cnVuaworNDMxNjIgZTgwZmRiM2EwZjQwYTk2MzliNDgxZmFmOGY2OGZkMjFhYmFmNDJjMiBsZWdhY3ktdHJ1bmsKKzQzMTYzIDc5ZTRkYmU0YmRjNmE2Mzg4MDRjNmY1NWNkOTRiYjMyYmU3ZDc2ZmYgbGVnYWN5LXRydW5rCis0MzE2NCBhMDZjOWZkMjUxMjA4Y2FkMmRlYWRiYjU5ZTk0NWMwZDgzYmRlOGI5IGxlZ2FjeS10cnVuaworNDMxNjUgZDg2MDMxMWY4YTk3MWU3MmE5ZWIzMzI1MjhmZmUzOTRjZGRjNjA1OCBsZWdhY3ktdHJ1bmsKKzQzMTY2IDM2MDUyMThkMDNmYTA0MzdhZTRmM2IzM2VkYTExYTVkMTUyYmFmYjEgbGVnYWN5LXRydW5rCis0MzE2NyBkZTJiOTQyZjM3Zjk0OGUwY2M2YWY2ZGI0YmU5YjkxYjNkZGY1MTlmIGxlZ2FjeS10cnVuaworNDMxNjggNWE3NzUwZGIwOTc3OGUwMjI3ZmVhMWVmMjFiOGFhOWYwNmQ0ZmVhMyBsZWdhY3ktdHJ1bmsKKzQzMTY5IGEwYWM3NzI1OWI5OWNlN2ZjNjlhMDI3ZmRjZjYzODIyZTI3MWM1MjQgbGVnYWN5LXRydW5rCis0MzE3MSBkODU5MjI3NmIxMzc0NWE5MWI4YjM0ZDM0ODFkNmQyNzQyNWI2NjRjIHJlbGVhc2UyNC1tYWludAorNDMxNzIgNDkwN2ZiODc5Y2Q5YzdhNjM4OGFhMzc5YmY3Njc4MjA1NmEwN2RlZCByZWxlYXNlMjQtbWFpbnQKKzQzMTczIDY0MTJlZDY5NzVkZWVlOGZhOGQ5OWVlYWI1NThmMzlmMWMzNmFkNTQgbGVnYWN5LXRydW5rCis0MzE3NCA4N2VkMWYzZDI3MmU0ZWMzMjAwZjBmOTU4ZWYyNzUxNTllOWYyYzMyIGxlZ2FjeS10cnVuaworNDMxNzUgODJhZWI1NGIwYmFhYjNmMWQ2ODFhNzA3YzMzNDJiZjAwNWI1MmNjZCBsZWdhY3ktdHJ1bmsKKzQzMTc2IDEzNmI0NTdiNTQzYWI2NTc5NmJiNmZhNjQxZTFiM2RkMWMwOTRmYjkgbGVnYWN5LXRydW5rCis0MzE4MSBmNzk5M2RjNmJmMjY0ZjhiYjMwOTQ4ODFkN2YwM2U1YjJlZTEwZDdjIGxlZ2FjeS10cnVuaworNDMxODIgZGIzMTdlNDM1N2FkNTRlNmM3NzBjZTJmNjc1Y2Y3NzY3Njc5YWEyMCBsZWdhY3ktdHJ1bmsKKzQzMTg0IGRiMjk3Yjk0NDJlNDBjYTU2NjU3YWYxMjVjYzAyNDgzNWEzYzc2MTEgbGVnYWN5LXRydW5rCis0MzE5MSBlNzNiMzVkODE2MTdiZWIxZGQyODAxMjQ5Yzg2NmFkYTgwNjJkZTZiIGxlZ2FjeS10cnVuaworNDMxOTQgOGRjNDRlOWQ1YzkzOWI4MmQ2MjQxMWY0YzIxY2U0ZDM1ZGRhNjZmNCBwM3lrCis0MzE5NSBhOWMxZTUyYWRkZjI4YmJhZDgwMWM5NGY3NDcxNzA2N2YyMmJmNTRkIHAzeWsKKzQzMTk2IDI1MWVjZWMwNGYxYmZmZDYzNWI1NzBmMWQ2ZThkODNmZmQ2OGI4MzggbGVnYWN5LXRydW5rCis0MzE5NyBlMzQ1MDZlNDRlNjc2ODJiN2QzMzIzMzUwZGU1NGZjOGE3NGY2M2MwIHAzeWsKKzQzMTk4IDUyZGQ0NWRiMWU4NTA0N2FiYmNjMGU1NmY3ODhlMmFiZTgxMjEzMTMgcDN5aworNDMxOTkgYmFmNjVkYzYzOWMxNGZlMGUzOTUyZjdiNTA0Y2U3YWYwMDkzNmI1ZSBwM3lrCis0MzIwMCAwOGNmOGI5ZWMyMDg3MjM3YjRiMjMxODc4NjRhMDkxN2JmOTAyOTgwIGxlZ2FjeS10cnVuaworNDMyMDMgMmY0YTRmOTZhY2QxZTZmNDgyOWMxODgzMjg0Njc5ODRkNmM4Y2RlNSBwM3lrCis0MzIwNCBhYTAzOWRlODkxYzk4N2ZlNmZlMDQ1ZTU5ODkzNWZhNDkzMWI5NWE3IGxlZ2FjeS10cnVuaworNDMyMDUgMGJiNzcwMDU5M2Y3NWEyMWU3YTdjNTZhNTc4MWI5NmJmZjcwMDIwMSBwM3lrCis0MzIwNiA2ZTkyOTIzOGUzYWM0N2IxODI5ZjMxNTkwZWZlZWIxMDI3ZTUyYjc1IGxlZ2FjeS10cnVuaworNDMyMDcgYzllZTMyYjc5M2U3ODg0NmVkMmM2NDY4ZDJiMjczOWQyZGNmZDU5NyBsZWdhY3ktdHJ1bmsKKzQzMjA4IGU3MmQxYzdjODU1NDg5MDljMmZjZmU5ZmRkMWZjODJiNTk5YjZjN2MgcDN5aworNDMyMDkgM2Y4MjQxNDFlZWI5OWViZDgzNGFkZDMxMTcyZWExYTRlN2M5Y2VlNSBsZWdhY3ktdHJ1bmsKKzQzMjEwIDdkYWRkM2ZjNWVmYWM2YmIwYzlkYTk5MTAzZjE5ODQ4YzU3N2I2ZmYgbGVnYWN5LXRydW5rCis0MzIxMSA3MWM1Njk0ZTM0MjNiMjQ1ZjI0YzgyNTU4MGU3ODViYzIyY2VmZmI2IGxlZ2FjeS10cnVuaworNDMyMTMgNjE3NzQzMTE0NjAwYmI0ZjNiYmM5YjkxNjk0ZjVmMjg3ZTA5MWY0ZCByZWxlYXNlMjQtbWFpbnQKKzQzMjE1IDc2N2U2YmU1ODlhMDQwZGJlNTQ2ZDc2YWU2MDk0MGZkNWI1NDFmNzAgbGVnYWN5LXRydW5rCis0MzIxNiBkYmFmMGJjZThkNDYwMmQyMGE1NTFhZDQxNmE0ZmIxNTQxNWZhNTllIHAzeWsKKzQzMjE3IDdlYWMyM2M4ZTRlOTg5M2UwNzRmZTU5NjI2YTE0MDBhYzc5YmIzMzggbGVnYWN5LXRydW5rCis0MzIxOCA0ZWY5OTY5NWY3YmJiZWVkOTk1YjNkODMxYzFlMWFkOTUxM2M0YWMxIHAzeWsKKzQzMjE5IDcwNDlkYzBjNjIxYTNkMmIwMmIzMjFjODU1Njc3NGFkODQ2NWIyMzQgbGVnYWN5LXRydW5rCis0MzIyMCA1MjE3YzcwM2E5NGY4YWJlYTUxOGRjYTM1NjFhYzA4NzBhNWZiYjgzIHAzeWsKKzQzMjIxIDkxZGQ0ZDQ0ZDNiYzcwZGE2ZjU3NGY4YWQ0YzI5MWZmZWNiY2RjZGYgcDN5aworNDMyMjIgZDc1MTNmMzhiMjJmOTllYmQ0ODQ1OWY5NDI1NWVkMzRiMjA3ODkzZSBwM3lrCis0MzIyNCA2OTFkZDA1OTE2OTE3MTdjN2Y2YzVmMjc5YzgzOGMzZmEwYjAzYmRjIGxlZ2FjeS10cnVuaworNDMyMjUgMDA1Nzg2MmEzYmRiZGFmNjFlYTg4ZGEyMThiMzk2MWYyNGJmOWFhNyBsZWdhY3ktdHJ1bmsKKzQzMjI2IDJkOTJhYjdmNWU4OWUwZDhiYmY0YTI5OTZmOTlmZDc4MzFhMTQwZjUgbGVnYWN5LXRydW5rCis0MzIyNyA0ZDgwNjA3MDMzZmIzMTVkZTU2ZjAyMjcyYjQxY2QwYTQyYTZkOGQyIHJlbGVhc2UyNC1tYWludAorNDMyMjggMTBjY2UzZjY1MTcwMjlhYWE5NzFjZjRiNTI1YzA3MGEwYThhZWFmZCBsZWdhY3ktdHJ1bmsKKzQzMjI5IDM1NDU4MTEyMzliNDBiYTM5ZGU0N2IzMTE1ZjZjMTMwOTc3OTU3YjEgcmVsZWFzZTI0LW1haW50Cis0MzIzMCAxNmI4ODU5YjA3NjA1YWI2ZDFmOWJkMWQ1MDA4NmM1ZmVlNzFkMTk1IHJlbGVhc2UyNC1tYWludAorNDMyMzEgOWFkMGU1MTc1MjdmZjQxYjc3MzcxN2FhNDAzMzM5MTYxNWM5MGMxOSByZWxlYXNlMjQtbWFpbnQKKzQzMjMyIDgxNDlkMGE0MjRhNTVlMDA1NTBlMTkyNjNmY2MwMjk0Njk2MTI5MzUgcmVsZWFzZTI0LW1haW50Cis0MzIzMyAxYWYyNDVmYWM5MGE2YjZmYWVmODhhZmYwMDRkOTUzNDMwZDI0YWUzIHJlbGVhc2UyNC1tYWludAorNDMyMzQgYzFlNzAyZDI4Y2YyODdmYzY0YWY2YTNmZjQxY2U4NzkxOWJiNDJlMCByZWxlYXNlMjQtbWFpbnQKKzQzMjM1IGE5NTA0NTBlZjRlYjkyODcyNjRhZmYxOGM5YzdhOTAzZDA0NmQ5YmIgcmVsZWFzZTI0LW1haW50Cis0MzIzNiBkMTE3MGU5YWE3ODliM2E0YWQwMTUzZGRhMmQwNzNjMmNlNGRiMzVlIHJlbGVhc2UyNC1tYWludAorNDMyMzcgN2M1YmU3YzBmZGZkYmJjMGFjMWQ5MWMwNzAzOGJjODE0MTJkYTQxMiByZWxlYXNlMjQtbWFpbnQKKzQzMjM4IDNlMDljODU2NmRmMWFmZDcwYTU1NGRiMDYwNTJiZjM1NzE0NzRkODMgcmVsZWFzZTI0LW1haW50Cis0MzI0MiBiMmU2ZDZhYTg2ZDFjMWIzMjJhYzM1MDRmOTIwY2NjYjM0NTlkYmU1IGxlZ2FjeS10cnVuaworNDMyNDMgYjRkOTJlZjJmMzM4MGRlZGIyOWUzMGZmZjQyODAzMjAxYWZiZDZkNCBsZWdhY3ktdHJ1bmsKKzQzMjQ0IDBjNjAyOTM4ZWQ4ZTg3OTc4M2ExZDY0MjViOTRjM2VkNjRlZDA5YTcgbGVnYWN5LXRydW5rCis0MzI0NSAyYjdlY2U3OGUyOTMxNDc3Nzc2NDM4NjVmNzNjMTdhN2U2YWMwYmYzIGxlZ2FjeS10cnVuaworNDMyNDYgNDVkZDkzOGI3ZmViMjBmZDkwOGNjZGYwMDJiNjE2ZDkwZGU4MGRjNiBsZWdhY3ktdHJ1bmsKKzQzMjQ3IDAyN2M2ZmNlZWUwZGFmOTgwZTNlNGU4MzYyNTQyNzM5Y2Y0YTVlMjYgbGVnYWN5LXRydW5rCis0MzI0OCA0MWQ3MDU3ODU3OGEzODExNjBmNDhmOWIyZjIyM2YwOGNlMDQ4MDE0IGxlZ2FjeS10cnVuaworNDMyNDkgNGY5N2I2YTIyOWNlMDMxNWY0MzkyM2FhNTJlYWRhNzBiZWMxNDc0ZCBsZWdhY3ktdHJ1bmsKKzQzMjU1IDA2NmM5Y2U0OGMzMDAyYmVlZDRlM2I2ZmZlNmU1OTAzN2FlYzYzNjkgbGVnYWN5LXRydW5rCis0MzI1NiAyOWRmNGZlMTI4YTBhYmVhYmYwMTcwNmY5NGRlMGU0MmQ1MDdiMWM3IGxlZ2FjeS10cnVuaworNDMyNjAgNzJhNzIwZGQ2NGZiNGI3MDlmZjY0MTVlYzIzMDQ0ZjQxNzA5YjcyYSByZWxlYXNlMjQtbWFpbnQKKzQzMjYxIDFlZDdiOGRjNzc3YWNmZDVmNmVmNTNiZmFkZjQ5OTNmYmI0OWJkMWYgbGVnYWN5LXRydW5rCis0MzI2MiA5NzM1N2ZlMzQyMjI3YmQ5YmVhMGUwNzhhOWZmZGNlYmU3OWRmMjMxIHJlbGVhc2UyNC1tYWludAorNDMyNjMgN2UzYmY4NDkyYzAzYTY5NjVmZWY1NTJlNmZlNTI3YWNkZDA1MDc1NyBsZWdhY3ktdHJ1bmsKKzQzMjY5IGExOGFhM2ZiZGQ0YWIwZDgxZTcyNTI2OTEzZmY4MjcyMmQ5MDhjY2YgbGVnYWN5LXRydW5rCis0MzI3MCBmYjQ4MWUwZjU3ODZlNTFlZTNlMWUyNjU1YTE2MzM1NDk4YTljOTkwIHJlbGVhc2UyNC1tYWludAorNDMyNzEgYThkZTBiOTYwMDI3NWJjNDY4MzA0OTExMzRhNTU3OWE1OTRhMWM1NiBwM3lrCis0MzI3MiAyMzFkNjA0ZGVkODQ2ZTBhNDFiNGMzYzExYmRmZTMxNjkxYzY0Yzk2IHAzeWsKKzQzMjczIDUyMGU1NWJkNzZkNmMyM2M5YmU2MTkzMzhjMGNjODk0ODJiYmU5MjkgcDN5aworNDMyNzQgNjRhZTMyYjA3ODI5OWEyNDBiNjFmMzI2NGI3MDY2ZjJlNTU4ZjBiYyBsZWdhY3ktdHJ1bmsKKzQzMjc1IGNhYTlhZmYwODVhNjY2M2QyM2Q5MDRhOTkzMjAwY2YxZjRlZDg4YzEgcDN5aworNDMyNzYgZjlmMDQxMTVmYmI1ZjUwMDNkYjFjMDQ5MjcwYWQzZTZjYzRhZjA3MSBwM3lrCis0MzI3NyBiMmEwNWVhN2VhYzFhZDJkYzU2NDg0ZGU3ODdkZjJlOTljZjA0ZjFkIGxlZ2FjeS10cnVuaworNDMyNzggODY4YWIyYTY1YzczMGVlYjQ5NjBmYzM0MzYyMmM0ZDAyYjkxZTJjZCBwM3lrCis0MzI3OSA2NjhhNWJhNzdkYzZmM2RjZTc1OGMyNzdjODQ2ODVhMThlYTI4NWNlIHAzeWsKKzQzMjgwIDM1Y2M1ZTE4MGFhM2U2NjRlN2M3Y2IzNGY5Y2U5NmJhNDYxYThmMmQgcDN5aworNDMyODEgNjNjNjFkYjU1M2E4Njk2ZGMzZDMxOGI4NGI2MTUzMWRmNzkyZmU4YSBwM3lrCis0MzI4MiA3NjBmZmIwZmJhMzczN2Q0ZWViMGU0ZjFkMzJmMjM2MThiOWRhMWQyIGxlZ2FjeS10cnVuaworNDMyODMgYjg1NjdiODRjNTMxMzdmNDc2YWE0MTAxYWU2Mjg1NThmNzJjZGE4MSBwM3lrCis0MzI4NCAwYWQzODdmYjYzMTQzMjNjYjVkZjU5M2VmMzVhNDZmYmM1OTU2NzdlIHAzeWsKKzQzMjg1IDRiZmU4YWZlOGY2NWVkMTMzZTEyMTMzMzM5NTExM2JkODA1ZTljOTMgcDN5aworNDMyODYgNTkzZThmYjlhM2NhZmU1YzQ3N2NkNTYzN2ExZGMyN2E3NTcyNDU3MyBsZWdhY3ktdHJ1bmsKKzQzMjg3IDdmMzIyZWY2ODQzODdkYTFhNzlmNGRiODk1MGU5MGIzZWE1ZmZmODEgbGVnYWN5LXRydW5rCis0MzI4OCBlMzhmZjIxMTkxZGU1MWU5NTI2ZWZhODVhOTQyMzg2MTVmZmI2MzdjIHAzeWsKKzQzMjg5IDI0MzYzMzAxYTI5OWM1MTA3ZWZlNWVhYjAzNjk0M2MzYTdjNWQ1ZDcgbGVnYWN5LXRydW5rCis0MzI5MiBjMWE2YmE3ZWNiMjM0YTk1ZTA4Y2E0N2Y0MjAyMDM0YmFhYzQ2ZWZiIGxlZ2FjeS10cnVuaworNDMyOTQgNjQzMTdjNzFlZDZkMzkzNjFlMDczNjUxMzNlY2VjMzY0ZWVjMzRhNyBsZWdhY3ktdHJ1bmsKKzQzMjk4IGJlZDNmNTJmMGRjNjNmN2YyYTBjYTBhMjQ3OTU4YzQxYjlhNGE5M2IgbGVnYWN5LXRydW5rCis0MzI5OSAxYjcyZDBlNGY0YWEwYWRhOWYzOWZkOGQ2OWJjZDVkNjk0NjAyOTQ1IGxlZ2FjeS10cnVuaworNDMzMDAgOGFiMDFhOWMxNDBiNzAyYTI5N2ZhMmY0ZWQ5NDU2OTgzMjIwOWZhOCBsZWdhY3ktdHJ1bmsKKzQzMzAxIDM5NWFkMGQ1NDIzZDYwYTQxY2Q2MmMwY2RiOGE0YjA2NjcyZWNjNmIgbGVnYWN5LXRydW5rCis0MzMwMiBmNWNkMzA5MWQ5OWY5YWNmMTFlN2NiYWRlMzk2M2QyM2U5YWE5ZDc5IGxlZ2FjeS10cnVuaworNDMzMDQgYjM5YzNkN2E1YWQ0NTBjZGIxNmFiZWIxMzk5MzY2MWViNGYzMWRiNyBsZWdhY3ktdHJ1bmsKKzQzMzA1IDY0MjVhNDNiZjNjNmU5ZWY1OGZiMzY2YWFlZjcxM2E3NTM5N2E3NjkgbGVnYWN5LXRydW5rCis0MzMwNiA0OTYyMmQ2NWMyOWQyYWYxNzgwZjY1Yjk2NGMwNDBjYTIzNGU4NGFjIGxlZ2FjeS10cnVuaworNDMzMDggNTFkZjk5NDg4NWU5NzhmMzY0YTQ2ZTVmNjk1YTAwNzJmNDNjZTE2MyBsZWdhY3ktdHJ1bmsKKzQzMzA5IDk2ZTRkNTMxMjhjOWU3M2U4NTgzMWExZjAzZDk2NTJjYzlkOWE5MjggbGVnYWN5LXRydW5rCis0MzMxMCBhODJlZTMyOThlMWFkMmI2NDI4ZTBmNzc0NjIyOGYyZDdiNzkxZTI5IGxlZ2FjeS10cnVuaworNDMzMTEgYzg0NDMwNWFhOGVkMWYyMmUwODBjNWU5ZWIxOTFmMjkyZTY3MGMxYiBsZWdhY3ktdHJ1bmsKKzQzMzEyIDY5YzM1OGJmNmEzNDU2ZDUzOGNkYTMxMDMyMGFiMjQxNmI2NTdmMWYgbGVnYWN5LXRydW5rCis0MzMxMyAyYzFmZTc2MWYwMTk0MTk5ODBiMmU1MDRlYjRmYTkwNmExM2M1ZjAxIHJlbGVhc2UyNC1tYWludAorNDMzMTQgMDZkNzYxM2EzNTIzMTljMjk1NmY0ODU3MjAzNjBmMTA0YThhOGIwMyBsZWdhY3ktdHJ1bmsKKzQzMzE1IDUxNTExOGMwZTMzOGI4M2NhNTk5MmVlODY5NjBiZTE1YzBmOWM4MTYgbGVnYWN5LXRydW5rCis0MzMxNiBiMzQ0NDA0MTliNjc5ZTdlMTEzN2UwZWFhMTA1OThkYjA5YjZiZTI5IGxlZ2FjeS10cnVuaworNDMzMTcgMzBmYWJiODdmYmNjMzBmZmRmMTdkZDY0ODgxM2NjNjc1OTM5MzViMSByZWxlYXNlMjQtbWFpbnQKKzQzMzE4IDU0YWE1YWE4ZjJjYjI2YTdkYTkzYWIyYTRjYzVkNzkyNGQxODRkMzUgbGVnYWN5LXRydW5rCis0MzMxOSA0NjE3NmZmYzhiZjVkZGNkZmMxY2ZmZDFlNTRlOWJiNWE0NDc0MGIxIHJlbGVhc2UyNC1tYWludAorNDMzMjAgZTIzNGZmOGJlYWEyMDIxYjJlMTJmNDllNzc1NDM5NDJmNDg1YTM4NiBsZWdhY3ktdHJ1bmsKKzQzMzIxIGQ3YTZlYzlkZTg4NzU1ODEzZDllMjVmYzU0MjI4YmIwMjM2Yzg4MmQgbGVnYWN5LXRydW5rCis0MzMyMiA1YmJmNzIyN2FkNmU5YjkzYzMxMjU5NzNlYmVmNzhmYTU3Nzc5NDM1IGxlZ2FjeS10cnVuaworNDMzMjMgZjE5ODkwYTg2YzQzMzJjNWVkMzZkNDUyN2UwODlkYTcwN2ZiNzViYiByZWxlYXNlMjQtbWFpbnQKKzQzMzI0IDQxNjM0ODc0ODQ2MDQ0ODlhYTBmNDFmZDJhMTYzNjdlODhhZDJiZjIgbGVnYWN5LXRydW5rCis0MzMyNSBjMDgxOGYyMWY2NWEyZGFiYWZjZDk1MGRiYTlhMGVlYWVjOTZjNzE0IGxlZ2FjeS10cnVuaworNDMzMjYgOTIzOGYwNGVlYWE2Y2U4NTQ0OTU5YmFiNzBiZTJjNWM3NWQ2ODJjZCBsZWdhY3ktdHJ1bmsKKzQzMzI3IDhhZGRjMzEzYWIwZmM3MjAzMmE3NDE3Zjk2OWVjOThiZGE1YTcxYzkgbGVnYWN5LXRydW5rCis0MzMyOCA3OTliNDBjNGEyYzYxYmE5YTE1OTAxZTc4OTRlNDZlODUwNTAyZjc3IGxlZ2FjeS10cnVuaworNDMzMjkgOGQ1N2QyNWU2NTQ4NzljODY5ZGQ5ZmVjZTkwOWQyNzRhYTA1NzI3MiBsZWdhY3ktdHJ1bmsKKzQzMzMwIDhmN2MwM2FjYWRkZGJjNzYyOTIxOWM3YTY5MDdlNjJhOGM2MzE1YTIgbGVnYWN5LXRydW5rCis0MzMzMSA2ZTFhODk5Y2FjOGVlNmRkMjNmYWI2NmE1ZTVlMzUyZWQ5ZWQyMTJmIGxlZ2FjeS10cnVuaworNDMzMzIgYTRkMmY3Yjg0N2IxZTgyODk1ODJmYzI0NDg0YjczZGU1ODlmZWQ1ZSBsZWdhY3ktdHJ1bmsKKzQzMzMzIDk0ZjU0ZWM2MmQxNDM4YjA0MzA3NjM5N2ViOWJkZjBlN2IzNTM1OTEgbGVnYWN5LXRydW5rCis0MzMzNyBlNWNmZDRhM2U2NWM2MTcyYWJlOTEyNjY3MjIxMDFkOTc3MWZiMGQ3IGxlZ2FjeS10cnVuaworNDMzMzggMDA5OGU3MjY0ZWFhYzU0YTNlZmFmOGUyYmUzODIxMzZiZGVjMjI4ZiBsZWdhY3ktdHJ1bmsKKzQzMzM5IDM0ZjIwYWI0NGNlZmQ0OTA5YWEwZmUyNWI1M2NmMjhmY2VhYjM4MjkgbGVnYWN5LXRydW5rCis0MzM0MSA5ZDhiMzNhZmY2MGMxMDBlNTUyOWZhMDViNWI2MmNkZmY5MmIxNTQyIGxlZ2FjeS10cnVuaworNDMzNDIgYjA1MjI0N2IxODA5ZmZlYzU3M2I5Mjk2ODA3ZDIwNDY4ZGY2OTVhNCBsZWdhY3ktdHJ1bmsKKzQzMzQzIGVlMzZjMTZkOGQyYmIxNWU5ZDQzY2QwYThhOTE0ZTJiMjgxYmMzNTMgbGVnYWN5LXRydW5rCis0MzM0NCBjMDQxYjM2MmJiMDRkOGNmMTc1M2M0N2JiYjI2YWRlNDE2ZGE4NjU4IGxlZ2FjeS10cnVuaworNDMzNDUgZGMxODM1ZmI5ZTdjM2IyOGE1YWNjNjE5N2U2ZTc2NjJhNTRiMDhkNCBsZWdhY3ktdHJ1bmsKKzQzMzQ2IDQzNDUyZjFmZWE2OTM0Yjk0MzgyOTllZjY0N2QyOGRhODA2ZTliM2MgbGVnYWN5LXRydW5rCis0MzM0NyAzNzNmN2ZlMGU3MzNmNGJhYmQxMDQ0NjgzMGJiNzFiY2I3MTE4YTI4IHJlbGVhc2UyNC1tYWludAorNDMzNDggMjIzNDVkMWU2ODUyNzAzZDdmNDVlZTgyNWFiOTljZjhkOGM4MDU0YiBsZWdhY3ktdHJ1bmsKKzQzMzQ5IDI2MTExNmY2ODg5YzJjNGM3YTk0ZGFhZWVhYzYzYWYzOGY5NzMwNTYgbGVnYWN5LXRydW5rCis0MzM1NCAzYjYxZTRhYTdlZGUxYTdhYzBiMjlmMGZhMzIyNWVkMjhlZTRlZGE5IGxlZ2FjeS10cnVuaworNDMzNTUgNmViOWIxNmQ2ZTIxNTg2M2QyM2FhOWJiMWQ5MDc2OWIxMzA1OWU4MSBsZWdhY3ktdHJ1bmsKKzQzMzU2IDQxYTJkNzhkNDNjNjk3Y2NjMDI4NTMxZmViNzQ1ZjY3ODQwYmZkNzkgbGVnYWN5LXRydW5rCis0MzM1NyAwNDkwMDRkNzlmZWZiMTgwMmI2ZTVjODI4YzU4MWJmMTRkMDBhY2M2IGxlZ2FjeS10cnVuaworNDMzNTggMDBlOWQ1OWMyM2I0ZTM5YTI1NTIyOTVjMzA1Y2EyNjgwYmRhYTE2NyBsZWdhY3ktdHJ1bmsKKzQzMzU5IDM1MjBmOTcxNGU4YzEwNDJkMThhNWJjNjBjMTlmNzk3ZTMwYzJkYjcgbGVnYWN5LXRydW5rCis0MzM2MCBjOGY4N2YwOGZlMGJkZGYwOGQxZDI1NDExYWRlZGYwZTUxYTE3MTVjIHJlbGVhc2UyNC1tYWludAorNDMzNjEgYzExZmUyZTI5ODRkOWIzNzU4OTg4YzRhMjdjMTlkZGQwYTY1Y2I0ZCBsZWdhY3ktdHJ1bmsKKzQzMzYyIDUyZGViYmMzY2MwOGEyZWEzNzBlYjJkNDllZjk3ODcwNGMwMjg4YWEgcmVsZWFzZTI0LW1haW50Cis0MzM2MyA5MzM0NGRhNzZhY2QwZTVmNDEwYTIzZmY3ZmJmMThjNzQzNTdiM2M1IGxlZ2FjeS10cnVuaworNDMzNjQgYTc4MThjMjg3NDlmNGFhNzI2ZWYyYTgyZDc1YjE3YTk1MTI2N2NlZSBsZWdhY3ktdHJ1bmsKKzQzMzY1IGY0Y2EwM2I4NzE2MGJlNmRkZDRkODEyOGRmZTE3NjQyNjEzNzllMjQgbGVnYWN5LXRydW5rCis0MzM2NiA5NGYxNjEzYjg3ZDViMmJhZjA5YTk5MjI3YWUyYjgzOWQ2ZmE2ZWI5IGxlZ2FjeS10cnVuaworNDMzNjcgMDM0YzBjZjUwMDdiMjg0MjRmZWI2MTI5NWJmOWM0ZGE2NzMzNDE3ZiBsZWdhY3ktdHJ1bmsKKzQzMzY4IDdiNTI0ODBjMTJjNjJiZWZjNjVmNmQ5ZTM5NmUyOWM4NWI0YWQ5OWQgbGVnYWN5LXRydW5rCis0MzM2OSBhZjI0ZWIzYmJmY2ViN2RlZTcxY2EwNDc4YzAwMjY1ZWZmNzJjOTM2IGxlZ2FjeS10cnVuaworNDMzNzMgZTEyZTQ5M2I1MjQ0NDU0YWY4MmU3YTYwOWMyNGM0YTlkMTNkY2M5ZiBsZWdhY3ktdHJ1bmsKKzQzMzc0IGJjNTE2MWYyOTJiNzcxMzAxOTM4YTk1NmU1ZjlmNDVjN2VhNjUwODkgcmVsZWFzZTI0LW1haW50Cis0MzM3NSA1YTNmMjI4MDg3YWZkZTNhYjM2OWYwNTMxMjRjNzMyZTdhN2ZjZGFlIGxlZ2FjeS10cnVuaworNDMzNzYgYjc1NDQwY2JmZDM0ZjE1ZTlmNWM1OGUxNGNlYzJiZDcxMjhmNWUyZCByZWxlYXNlMjQtbWFpbnQKKzQzMzc3IDYxNDYxZWViZDU4ZjdlM2JjNDBjYjgxYTdlMGI2ZjA3M2YxODRjNTcgcmVsZWFzZTI0LW1haW50Cis0MzM3OCBhMjg0N2JiMzI4YzBlNmUyZTUzYWJhOTFkMjQwNWFhMjM5ZDk0YmIyIHJlbGVhc2UyNC1tYWludAorNDMzNzkgNWQ2MjVmNTg5ZjJhN2NjN2Y4OTQxZWVhZGU5Y2E3NWIyNmE2ZjkwYiBsZWdhY3ktdHJ1bmsKKzQzMzgwIGQ4ZGU3NTAwMjkxZGQ0NTc2MWMxZmEzMTZmNDgxM2YzMzhjNjc1MjQgcmVsZWFzZTI0LW1haW50Cis0MzM4MiBhNzgzNDg0NGRjZjYxMDE2OGNhZGVlMzNkYTMyZWZlMzQ0YjI5MWZhIGxlZ2FjeS10cnVuaworNDMzODMgYmFkYWE3ZTkxZDlhN2U3MGRhZTYzMzE0MzFhOGY4NzQzOGE0ZjFhMSBsZWdhY3ktdHJ1bmsKKzQzMzg0IGEwM2M5NTVmZmVkMTBmZmViMzYxNGQ4YzllNGI1ZjJiNmU4NTVmMzMgcmVsZWFzZTI0LW1haW50Cis0MzM4NSA4MGM0ZmMwM2ZmOWI3ZDY4YmZlZjYzZDFiODM0MjU0OWE0MWU5Zjg2IGxlZ2FjeS10cnVuaworNDMzODYgZGNkNDU5YjAzNjcwNmM3NDcyNGJmMmQ0M2I5YTc0MmEzNGRlNzRjYiBsZWdhY3ktdHJ1bmsKKzQzMzg3IGI5NDI2MDkzZDdlYTY3YWQxOTljZTljMTk0MzMxZmYxZjZhMmU2N2IgcmVsZWFzZTI0LW1haW50Cis0MzM4OSA2M2M0NDIyNjY3MDU2YjZjMWMxMWFlNmQ2ZTk3YTQ5NzcxZjQwYTA1IHJlbGVhc2UyNC1tYWludAorNDMzOTAgOGNjYTI0OTI2MjZjZTQwOGNkNTY3MTEwODExYzA2OTJmZDFkMzdkZCByZWxlYXNlMjQtbWFpbnQKKzQzMzkxIDc2MmU1YjhkMTg5ZGFlYTA3ZGYxNGU5NzcwYWI1ZTg5ZGFkZWI5ZTAgbGVnYWN5LXRydW5rCis0MzM5MyBlZmQxNDFjYmY2Y2IzNzY5NDAxMDg2MDQyMGE0YjQyNDE0YzI0NWEzIGxlZ2FjeS10cnVuaworNDMzOTQgYmIxYjQ4NTE2MTMxN2ZlYzBhMmIyNzA5MGQwZmQxMDc1MjBhMzQwNCBsZWdhY3ktdHJ1bmsKKzQzMzk1IDRlMWFmZjBlMjBkMThmYjc0ODI4MGNhM2RhN2ZmYTc3ZDEyZDQ4MmUgbGVnYWN5LXRydW5rCis0MzM5NiBjY2JkY2ZjNDBjODFjNDY4YjgyZDc1MDQ2NzNhMjIwZmE2YTAxMTRmIGxlZ2FjeS10cnVuaworNDMzOTcgZWU0YTYwYzcxMzU3MTI3ZjdlNTgxNDYyN2FiYmU5ZjdkMTkwZTgzMSBsZWdhY3ktdHJ1bmsKKzQzMzk5IDljNjkzNzg1MTZhYjBmYmI1ODgyYjc4ZTk5MzFlMTkwN2M5Yzc1YjMgbGVnYWN5LXRydW5rCis0MzQwMCA1MjAzMzc2ZjE1ODkyY2JkZTk0ZmEwMWU4OWY3N2Y4NmEyNWNkMzYyIGxlZ2FjeS10cnVuaworNDM0MDQgZWY4MDU5Zjg3ZmQyZjkyZWJkNDExMzc4MTE2Nzc2NTg4ODMyZTJjNyBsZWdhY3ktdHJ1bmsKKzQzNDA1IGExNTdmNWE2OWQzNWM2MDkwOGVhMDYzZjlhN2IwOWRlYTY5Mjc0MTcgbGVnYWN5LXRydW5rCis0MzQwNyBhYjNlZmJjYTVjOTIwOTg0MTg2ODc0MGU5NzY3MTg5Yjk0ODhiMTA2IGxlZ2FjeS10cnVuaworNDM0MDggZTQ5NDU1ZTk0YmVlMjg4ZjA5NGY3OTM0OTI4MjRlMzVkYTBkN2ZiZCBsZWdhY3ktdHJ1bmsKKzQzNDA5IDFmNjFhYTQ2ZmVlNWIzZDMwMjI4MDE0NTRlOTliMTE0NzdhMDk2YTAgbGVnYWN5LXRydW5rCis0MzQxMCA0MzdkMjc2YzczMmM3YmRhNzkzNWRhODA2MjhjZWQzZjdmNTY1NmYzIGxlZ2FjeS10cnVuaworNDM0MTEgODkxNDJjYWRjZmI5ZTc0NzY5MTM4Y2U1NzllYzdlNDc5NDU5ZWY4MSBsZWdhY3ktdHJ1bmsKKzQzNDE0IDkzYmExNTYxOWY1YWFjOTI3OGVmNGY0ODI5MjAwY2VmMzFhYTYxYmYgcmVsZWFzZTI0LW1haW50Cis0MzQyMCA2MGJlM2YzOWE3MmJkZjg1OGExODA4NGMxOTc1ZGU0NzYzM2I1NWQyIHJlbGVhc2UyNC1tYWludAorNDM0MjEgMWNhMDEyY2U0MjdlMzM2NGFjNTBlYjYxZjU3NDdlMmZlZDVjYWRhYiBsZWdhY3ktdHJ1bmsKKzQzNDM1IGI4NWFkMjE2NmMwMWJlN2FkMGVlMjBlNGMzNDQyYTYzZTUxZDBhOTcgbGVnYWN5LXRydW5rCis0MzQzNiBiOGQxYTQ1YTMwNTczMjk2MzhlZmI0MmJiODMyYjExYjYxNDk2YzUxIGxlZ2FjeS10cnVuaworNDM0MzcgODFkNjExOWRiYzY2YjU3ZGFhOTMzYzA0MGEwMjk4ZGZkMDEzMzg2MCByZWxlYXNlMjQtbWFpbnQKKzQzNDM4IGVmYjA5ZGJhYTQwZTY3ZGI5OTYyZDRhZGQ1YzBkNzkwNjE1ZDA1MzkgbGVnYWN5LXRydW5rCis0MzQzOSBhY2NlMDQwZTBhMWFhYmIwY2JmNDAwMjBjN2VhYWE1MjdkNzBkZTlhIGxlZ2FjeS10cnVuaworNDM0NDEgNDRlNmZjOGQwMmUxYzFmYzhmNzkyMGYwYzgxMTcwOWM0Yzg4MmUyMCBsZWdhY3ktdHJ1bmsKKzQzNDQzIDI0MzQ3ZTQ2NTZhNGZkMjVkM2IxZWYyMDQ4M2M4MmY3YTNhOGNiYjYgc3FsaXRlLWludGVncmF0aW9uCis0MzQ0NCBlOWU4MDk4ZjY1NzI0OGU2MWIzYTgyNGExODAxY2Y5MDY2ODI1MTA4IGxlZ2FjeS10cnVuaworNDM0NDUgZjI4NGU4NTRmZTcyZWM0N2MzMGE1NjhkNDBmOGQ1ZGQ5YzQ1ODFlMyBsZWdhY3ktdHJ1bmsKKzQzNDQ2IGUxNTZjNTgxNGZjY2JjNTA2NWFlNDNlMTNjOGNkNGYyYjBlYjYwMjAgc3FsaXRlLWludGVncmF0aW9uCis0MzQ0NyAwOGJmMTEyMmMxNDQwZjI3NWIzYWNkMGY5YmVmNDQzMTU1Y2RiYWE3IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDggZmI3YjUyYzQxMTZjMzYzZmY5MTIyMjdhMzNmNjZlZDEwYTI5YjgzOSBsZWdhY3ktdHJ1bmsKKzQzNDQ5IDEzM2Q0YmI2MWJhYjJmM2ExMTM5MGYwNDQ0ZGQzYzMwM2ZmMzVlMDEgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1MCA5NTVhODZmOGExNDBjMDI2ODBkMTkwZGY0YTJkNWExZTlmNTRjM2NiIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTEgNzhjYWMyMGY5NjQyZDcyZDYxMGMyYzRhZGQ2ZmIwMzE2NmJhZGQ5YiBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDUyIDY5MTg3Nzk5YTlmNmJlN2RmODBmNjJjNWI1ZTljYzkyMTdmYmI2ODMgbGVnYWN5LXRydW5rCis0MzQ1MyA3OWEwZjA4MGY4OThjMjU0YmNhOTk5YjlkM2MzMzczZDFjODlmNGJhIGxlZ2FjeS10cnVuaworNDM0NTQgNWUxYjZmNTUzNzYzMTNjNWFjNWJhOGEyNWU0MTJiYzYwODc3YzY2YiBsZWdhY3ktdHJ1bmsKKzQzNDU1IDg0OTY3YTE5NjJjYmIyYTVjNzQyN2EzZWE0NGE3ZjUzMjUzY2QyNTcgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1NiBjZTU2YzVlM2NiMjA1MGVhZWQwYWFmNDUxZTgyYjFjZjg4ZWM4NjU1IGxlZ2FjeS10cnVuaworNDM0NTcgZTU4YTcxYTg1NTBlN2M5MzdiNjIwYWRjMzg4Y2RhNWM3MWMyZmU0ZSBsZWdhY3ktdHJ1bmsKKzQzNDU4IGFhYTA0YmZhZmM1ODU1YTFmZDVmNDQ3MzM0NWFkZGNhNjE2MmMwNDIgbGVnYWN5LXRydW5rCis0MzQ1OSAyMzVmNjM1YWM0NWEwNDg3MGJkYTg4ODA5MmRkNDY4MTE3ZDJkYjdhIHAzeWsKKzQzNDYwIDM2MTkwZDdmZDhhYjJlYWFjOThhNjQ1YzMxMDEyZjNmNjQwN2ZhNTAgbGVnYWN5LXRydW5rCis0MzQ2MSAwODk5YTgwNGE1OTRjY2Y5MjhiYmU2OTJlNTk4MzFlN2ZlOWNlZTVkIGxlZ2FjeS10cnVuaworNDM0NjIgNjE0NTJiZDEyNWU1ZTEwNmFkOTQ2YTE4MjU5MmUzM2Y0MGRmZjgzOSBsZWdhY3ktdHJ1bmsKKzQzNDYzIDIyOGUyNWM5M2E5NzkzYjY4OTVjYzQzNmMzNGVkMjE5NjJjN2E2ZDAgbGVnYWN5LXRydW5rCis0MzQ2NCBjNzJiYzg0NzBmNmM5ZWI4MjRmN2M5MDU5ODY0YTEyOWM3NjAyNjU1IGxlZ2FjeS10cnVuaworNDM0NjUgMTkwNTlkZjQ1Y2ZlOTAyZjBlMDkwOTg2MWQxZDM5NjE5NTBjZTU0YiBsZWdhY3ktdHJ1bmsKKzQzNDY2IDA0OTYwNjkzMzMyOGU4OTA4MjFlMTMzMjkwYmM5OTc0ZDUzNTcwNDYgbGVnYWN5LXRydW5rCis0MzQ2NyBmNWU3OTJhOTNjNDMxYTRkYjBmZmY1NTU2OGI4YjgwMmVlMTA5OTJlIGxlZ2FjeS10cnVuaworNDM0NjggOThmNWM5MThhMjRhY2I5MzFlMWY3N2JlYmYzMDg0MzkwNmY0NDU2OSBsZWdhY3ktdHJ1bmsKKzQzNDY5IDIwMmZlNGFhZmNiYjJjMDgyMzBjYTk5NmJiYzMxYTRlZTdlZTBjMTIgbGVnYWN5LXRydW5rCis0MzQ3MCBkMTk5M2VlOGFjNDExZDFmYzEyMTc2ZGI0MjhjZDAyYTBmYWU4ZDVhIGxlZ2FjeS10cnVuaworNDM0NzEgY2IyNjQ1YTU1NGQ4ODJhZjdhMmI3YWZkMmNiZTEyNzNlNTg4OGMxZSBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDcyIDBkM2U1YWMwNzJiMmExN2I0OWUzNzMwMjUwNTkwYWNhODM3NjNkYTkgbGVnYWN5LXRydW5rCis0MzQ3MyAzMmU3Njc2OTkwMDE0YmQxYTk1NDEzOTc1NTdjMWNhNGFmYjYyMGM2IGxlZ2FjeS10cnVuaworNDM0NzQgMTY0Zjk1ZThlMGNjYjUwNjhkZWNkMjBkNWFjZWEwMGFhZmY3ZWRjMyBsZWdhY3ktdHJ1bmsKKzQzNDc2IGM0OTg4YWM1ODk5OTc5MGU1MWZmNDNhZWE2NDY4NjdiMTA5YzI3ODggbGVnYWN5LXRydW5rCis0MzQ3NyBkNjVhOWM5YzhhN2EyZWEzNzE3MzQ2YTRjNGYxYWNmMDNiNmVjY2YxIGxlZ2FjeS10cnVuaworNDM0NzggNTk5MTJiNDgxMmU2YWQ4NWVlNGM2NzUxY2JlZTczMmUwYTY2ODU4NiByZWxlYXNlMjQtbWFpbnQKKzQzNDc5IGZiN2Q4OTVhODg5N2Y1M2UzNmU4ODRiM2M0Yzk0ODc1NjNiZGQ5ZjkgbGVnYWN5LXRydW5rCis0MzQ4MCA4NjZkYTdmMzBlNTY4NjBhNjExODZjODBhNmUxNWNhMWI5OGU0ZTEwIGxlZ2FjeS10cnVuaworNDM0ODEgNjcxOTJkYTNlNjljOTg1YmIxMjcyZGE5MzJkN2RlNjA3MzAzM2ZhZCBsZWdhY3ktdHJ1bmsKKzQzNDgyIGM3NzExNWRkZGJlMTZkZjUyZmJmNjgyMjQ5ZGZhMmEzYmM1YjU1ODggbGVnYWN5LXRydW5rCis0MzQ4MyBhYWMwMDVlOGJiODAwNzkwM2VkMmU1MGU3MWY1OWZiOTg5ZDU2MDA2IGxlZ2FjeS10cnVuaworNDM0ODQgYjgwYjVmODRhZTU0ZjJkNDUyMzE1Y2Y2ODhiZTQxNzc0YzA3Y2IzZSBsZWdhY3ktdHJ1bmsKKzQzNDg1IGE3ZWM3OGY4ZDA4NjZlNjg4MmY4OGQ1OGYwM2JmODAwZjFhNmNjOTQgbGVnYWN5LXRydW5rCis0MzQ4NiBhNDk1MGVhNTU2YjUzNDM5Yjk1ODE3MmFiZjliOTE2YjA3MGM0NmU0IGxlZ2FjeS10cnVuaworNDM0ODcgNzVmOWViMDExMjI2ZTFmM2VmN2FlMWM1NmFhNjBhNjExZmYwOTBhZSBsZWdhY3ktdHJ1bmsKKzQzNDg4IDZjNmIyMDA0NDNlMzZjN2I0NGUwOTE2MWNkYzdiMjg1NWU1NjE1MTAgbGVnYWN5LXRydW5rCis0MzQ4OSBjOWE2MjczNzc1YjUwM2M0MWY2ZGJjNmQ1ZjdjNGM0MDI3ODM4ZWM2IGxlZ2FjeS10cnVuaworNDM0OTAgZGE3NzA2NTlmNzdiODQyZjEyYWU0ZjZlMGY4ZWIyYzQ2ZTY3MGI2ZCBsZWdhY3ktdHJ1bmsKKzQzNDkxIDZmZWY5NTc3MTJiOTA2Y2YzY2QyNDYwZjkxNDA2YmZlYTAyZDZjY2QgbGVnYWN5LXRydW5rCis0MzQ5MiBhNjFkM2FmZGZjNGI0OTNjOTgzMDRkNzdmNDZmMWI5MjVmYTJhY2VmIHJlbGVhc2UyNC1tYWludAorNDM0OTMgZjMzMDA0OGQ4YmRmODIwMjQxNGEzMzY0Y2FkMjRmMTk1MTIwZTZlZSBsZWdhY3ktdHJ1bmsKKzQzNDk0IGQ2MTBmY2RiODlmN2ViYjFiZjgwOWY1MjIyMGE1YmNiNmFmOTk5OWEgcmVsZWFzZTI0LW1haW50Cis0MzQ5NSBmZTNiOTNjMjI0ODE0ZjM2MGViNjBiMzViMTBkMWM5OGI2ZDJjOGYxIGxlZ2FjeS10cnVuaworNDM0OTYgYzZjZjExYWNiNDFmYjMwYmU4NDRmMzdlNGE1M2FmOWNjYWQwYTI0NiBsZWdhY3ktdHJ1bmsKKzQzNDk3IGU2MGM4YjliMmI0ZjNlZGVkNWM5MGMwMzFlYWYzMGUxZWUxYmI3ZTAgbGVnYWN5LXRydW5rCis0MzQ5OCBjYzM1ZDNhODc5YWQ0OTRjZTMxNThmYzJiYjY1NGRhZjEyMmFiYjQ1IGxlZ2FjeS10cnVuaworNDM0OTkgMzg1MGE0NDM0ODNhMWZhMmNmY2RjMDVjYzhlM2Y0NTE2Njk4MmMyYyBsZWdhY3ktdHJ1bmsKKzQzNTAwIDM3MDQwNDU5YmYyZTQxYTg0NTA4MWFmNzliZmExYmM4NjM3ZTMxZDggcmVsZWFzZTI0LW1haW50Cis0MzUwMSBhMjRjYmY5NGJiOGUwY2Q0NTgzNTI4NmMyZTQ3MzllYWFmNTM4NTc3IGxlZ2FjeS10cnVuaworNDM1MDIgYmY2NjRhMTYwZmMwYWRjNzQzY2RlYjhjZDhhOTRlOTk0NGZmYmQ1ZSByZWxlYXNlMjQtbWFpbnQKKzQzNTAzIDI5MTRlN2I0ZDI1YTQwMDcwZmI1YTgwZTNmOGFmOWNmODYzN2UyYTkgbGVnYWN5LXRydW5rCis0MzUwNCA0MzZiMDNmZmE4YTI0OGZkNjI2MTFjY2RkOTZlYzE0NGMxOWU0NDUyIGxlZ2FjeS10cnVuaworNDM1MDUgNGE4ZWY3MGRlMjEyZTQyYzJjZWExOWZiNjY2ODZjMmMzMDJlN2ViZSByZWxlYXNlMjQtbWFpbnQKKzQzNTA2IDAxNmQzZDIzZmY1MmRjNGRiZjBjNDEzNDQ1YWYwYjE3MjJkYzdlOTAgbGVnYWN5LXRydW5rCis0MzUwNyBhN2Y4YjBiZTU5N2U1NzM4NGYxZWYxZjFhOTMyMTUyMWNjNGZiYjJmIHJlbGVhc2UyNC1tYWludAorNDM1MDggNDdmYmJhODQ5YTZjODE5NzMwODhhNGY5NGJiMTlkYTU3NTFiZTIwYSBsZWdhY3ktdHJ1bmsKKzQzNTA5IDg2NzBhMjcwMWEwZjk2ZjJiODZkNTk1YWEyNjE1YTRiYjk4MGNmNTMgcmVsZWFzZTI0LW1haW50Cis0MzUxMCBmYWI2NzJjM2RkZTY1ODc0MzI1OTdjY2UwOWY4NWZlZGYzYTBlNDg0IGxlZ2FjeS10cnVuaworNDM1MTEgNDYyYzlkMmEwN2JiMzdjYTI4NmNiMmM0NmY0NTI5MWYwNGVlZjA1NyByZWxlYXNlMjQtbWFpbnQKKzQzNTEyIDk4MjUxNzgwMjM2ZDdmNDRhYjRiMDI5YTAwYzMyOGI3NzNlZDExZDkgbGVnYWN5LXRydW5rCis0MzUxMyBmMDViZDk4ZDkzNWQ1NmY1ZWMxOGI1NTVhMDU2ODNhYzE0OWI1ZmMyIHJlbGVhc2UyNC1tYWludAorNDM1MTQgZTU0NjI3NGQ2NTAzZWEyMjEzNDU4MGI1NzY4MDdiMWIzZmIyNDk1NCBsZWdhY3ktdHJ1bmsKKzQzNTE1IDU5MTg1ZmZhODYxZGEwZjE2MGUzYTljMjYwZGYyNWY0NWMxNzUyZjQgbGVnYWN5LXRydW5rCis0MzUxNiBiNDdkODIxOWVjZDYxZmRhZjkwNjc4NzYwZTgzMzIyMGZkZDM0NTM1IGxlZ2FjeS10cnVuaworNDM1MTcgMzVjZjkxMjk3NjkzZWYwNGZmZjZhNDRkNTIwNDk2NjhmYjI3ZDMyMiByZWxlYXNlMjQtbWFpbnQKKzQzNTE4IGI4MjNmNWZlOTgwY2MzOWYwYjg0NTEyMTExNGZjZWY4MjQ5MTAwZmIgbGVnYWN5LXRydW5rCis0MzUxOSBhNTMzZDViNWRiODQwMTRlNzM4NWEyYjMyMTk0NzMyYjVjZjgzNzgxIHJlbGVhc2UyNC1tYWludAorNDM1MjAgMDU5MTRlOGRlZDczZWRiOTllYWEzNGZhY2QyMzM0ZjUwM2I4OTcyZSBsZWdhY3ktdHJ1bmsKKzQzNTIxIDg1OGFlOTU0ZjA1NTg3NjQ3MzM3OWY5ODc2YTg2MjhkNmZiMmJjMWEgbGVnYWN5LXRydW5rCis0MzUyMiA4NzBkNTZhM2EyMGJlNDg1YTZjZjJjMDdhZDFmNzRkMDA1NzcxYTY2IHJlbGVhc2UyNC1tYWludAorNDM1MjMgNDkyMDQ0MDM0YTg3YmJiNGVhNDVkOTVjN2JhYmMyNmY1MzhmZmVhMCBsZWdhY3ktdHJ1bmsKKzQzNTI0IDQyMzEyZTVmMTFmZDExNWIzMDgyMjUxYmUxYzUyMjM1OWRjNzEyZjIgcmVsZWFzZTI0LW1haW50Cis0MzUyNSBmNjQ4MTJiMmI1YzFjYjRkMTk2OTJjYTgyNmEzMjU0ODA3NTBiYmY3IGxlZ2FjeS10cnVuaworNDM1MjYgYjA2OGFlZTFkZmI1YjM1NjI0ZTAxOGNlMTJlZDg0NGEzYWVjYWZmMCByZWxlYXNlMjQtbWFpbnQKKzQzNTI3IDZmMDg2M2JlZGNlYTMyZDFjZjMzZGQ0YTgyYzdhOGZjZTZjMWZhMGIgbGVnYWN5LXRydW5rCis0MzUyOCBiMDk4MWYwYzE4ZmViNmVjM2U3ZjYxZTYyNzQ1NGMwMWVmNjE4OGZiIHJlbGVhc2UyNC1tYWludAorNDM1MjkgOGQwNTc5ZDJiNjYyNzkyYTNlOTA1ZDAzYTYzMWIzNzUwZWFmMWI5YiBsZWdhY3ktdHJ1bmsKKzQzNTMwIDgyM2M0OGQ2ODcxZWM3OTNhZjNhYjU4NGIyMDJhYjVmOTkxZDRiYjYgcmVsZWFzZTI0LW1haW50Cis0MzUzMSAyY2NlOWJjZGM5ZjY0NTk1YmE1MWNhOGVmYTg3MmUzZTY5MzMxMWQyIGxlZ2FjeS10cnVuaworNDM1MzIgNWYzNTdlNjBjZGRlYTU5Y2YxNTFkYjA5MjcyNzFlNmMzNWQ4NDYxZiBsZWdhY3ktdHJ1bmsKKzQzNTMzIDkxZTlmYjVjZmUxNDI1NWIzOTYzOGRlNzdkZjFiMGY0MmUzYThjMzcgbGVnYWN5LXRydW5rCis0MzUzNCA4Mzk4ODM1NGI2NGQ5YTg4YmZhZWMzMDQ2MWM1OWQ3NGNkZDlkNjFmIGxlZ2FjeS10cnVuaworNDM1MzUgYjczMTc0YWYyNmE5YjVkN2VhOTNmMGZiZjg4MmYwMmZmODEzZGU5NyByZWxlYXNlMjQtbWFpbnQKKzQzNTM2IGZhYjQ2OTM2MWJiYzBlNGI5OThiNWRlMTJiMWQwZDY1MGRhMTBjZGMgbGVnYWN5LXRydW5rCis0MzUzNyBhY2U2N2UzYmNhNjgzMmUxNGJhNGVhYzVhNWRkYmIwYmFhNzc0ZWZkIHJlbGVhc2UyNC1tYWludAorNDM1MzggM2E4MWRjZWFhOWE4YmU0MTNhN2VmN2U4YzMzMWIzMjc3NTJiNWU1NSBsZWdhY3ktdHJ1bmsKKzQzNTM5IDRhYjhlYzllNTlkZmFmMzQ5MWMzNDA1MTU0ZmZlNWMxYWI4ODA0YzQgbGVnYWN5LXRydW5rCis0MzU0MCAwZTRiM2NhZDg5ZmU2YzIyNmYwYWIzNTY3NmMyMTE4Yjk0ODE1NTUyIGxlZ2FjeS10cnVuaworNDM1NDIgM2Q0YTNmNGZjOThlOGIxZmFlYTQzZTFmMDY3Y2U2ZmMxMDgxNGNjMiBsZWdhY3ktdHJ1bmsKKzQzNTQzIDVlMWNmMjFkNGFiMjMxOTBlYTUzZGE1OWZhNjE3MmE2YjQ0MDE1MjYgbGVnYWN5LXRydW5rCis0MzU0NCA0YjY1YWI0MWM3NzE3ZmQ1ZWFkMzQ2MGQ4MWY2MjJlMzU3YjRjYjQ2IGxlZ2FjeS10cnVuaworNDM1NDUgZmU5N2MwMDE2ZDRiMTNmZmI3NTdmOGQ5MmNlNDFiNTQxNWQ4N2Q2ZiBsZWdhY3ktdHJ1bmsKKzQzNTQ2IGE2YmNlN2FlYmUwNWJjZmQzYTExM2E2NTAzNzlhNjJiZDlkYjRiOGEgbGVnYWN5LXRydW5rCis0MzU0NyA0YTIwNmZjZTVmZTdhODQyOGQ5YWIzZDQzNzBiNWMyZTNjOGE3MDA2IGxlZ2FjeS10cnVuaworNDM1NDggNWE2YzdkNmRlZjBjOWNlNTVjMGU2ODVkZGU3OTJmYTUxMzgzZDAwOSBsZWdhY3ktdHJ1bmsKKzQzNTQ5IDNhYTBhNDgyNzg4OGIyNDQ0ZTkwZjExYmNmN2JhNjlkMGQ1MDIwZmUgbGVnYWN5LXRydW5rCis0MzU1MCA4MDY4YzIyYzM3MjRlNmNmZTM0MDg0OWY0ZTcyNjk2ZDdkNTQ4YjZjIGxlZ2FjeS10cnVuaworNDM1NTEgNTNlZjZjMzc3MjcxZGY4ZGM4ZGIzYTU0OGUwMzRjYjdlMTAyZjEzOSByZWxlYXNlMjQtbWFpbnQKKzQzNTUyIGY0ZDg4Y2ZhZWM2MGFjNTIwZTc2ZDIyYTUyNDA4MjE1OWQ2NWUxYzIgbGVnYWN5LXRydW5rCis0MzU1MyA0ODM3NzIyYTYwZjAzZDk2NTZmYThlMDQ3NGU3MDY3ZWFlNmZmOTkyIGxlZ2FjeS10cnVuaworNDM1NTQgY2YxMGYyNDQzNTQyZjZkMmJlNGU2ZDk3NDVjNGNlN2U3ODVmYzY5ZSBsZWdhY3ktdHJ1bmsKKzQzNTU1IDJjZjNiNWM0NTFkNzQ1YjM1NWMzYjJjYTZiYTE4MjFlZGFiNzI4NTcgbGVnYWN5LXRydW5rCis0MzU1NiAyNjBlZTM5MWY5MDhmMjNlMmVlNjk3MDYyNzRjOWMzMTVhY2VjODQ5IGxlZ2FjeS10cnVuaworNDM1NTcgYTA2Njg1ZjA4ODg2N2ZhN2JhYzdiODdiY2M4MzAzNTY0M2JlY2U1OCBsZWdhY3ktdHJ1bmsKKzQzNTU4IGU5NTUyODRjZDY5NDAyZGFiMjU4Nzc2M2VjMWYwZmUyMWYzNzFlMGYgbGVnYWN5LXRydW5rCis0MzU1OSA4NWIyNmY0ZmEyYTUwNGZkYjUzNGM5YTUxMjY4NjllYjAyYjc2MzljIGxlZ2FjeS10cnVuaworNDM1NjAgMjgzNGNjZjU1MmYzN2Y2N2NlN2FhZGJlODYyOWY3Y2U0NDhmYTQyNyBsZWdhY3ktdHJ1bmsKKzQzNTYxIGE2MGE5NDQzZThkYWQ5ZTJmZDA4ODY0Y2Y4YmFlYWRiYjJhMjQ5ODggbGVnYWN5LXRydW5rCis0MzU2MiA5YzJhNDYyZDY2YmI3M2FhYzhhODQyZDYxYWU5NTMwODJkZDRjODY2IGxlZ2FjeS10cnVuaworNDM1NjMgNDAyMGNmNmMzODNlMDYwNmU2ODVhNDk1Y2JiMGYwMmI5NTgyMTkyZSBsZWdhY3ktdHJ1bmsKKzQzNTY0IGVhOWEwM2I4YjlmNmIxZWU2MGNmMzVmNTIxNGUwNjNhNmIwNDIyYjEgbGVnYWN5LXRydW5rCis0MzU2NSBkZmMzM2VjN2Y3M2E4NWZlYWIwODI5MDhjYTFhODA3OWFmZjg4YzIzIGxlZ2FjeS10cnVuaworNDM1NjYgNzgyNjA0OWFjYjRiMWQzYWMxMTJjOGI1ZjdiMGMyMjM4ZjVjYWVkZCBsZWdhY3ktdHJ1bmsKKzQzNTY3IDUwMWZkYTUxMWIwYWJkNGQ3ZGFkN2Y2ZjIzNGY5MmY2NDk0YTRiYjcgbGVnYWN5LXRydW5rCis0MzU2OCAwOWI4ZTVhMTIxNDZjYzk4Zjk5NzMzOGZjOGI0NWEzMDMwODkxOTNkIGxlZ2FjeS10cnVuaworNDM1NjkgNTQ2YjYzMTkyNDAwNjJlOWU2NGE3YmFjMmM5MThkNzJkNjJmMDIyOSBsZWdhY3ktdHJ1bmsKKzQzNTcwIDEwMDQwZDE4N2MyMTA0ZjU4ZmJiZDRiNDZmZDM1MjBhOGExZWRhMzIgcmVsZWFzZTI0LW1haW50Cis0MzU3MiBjZWE1NGM5ZDkyMWQ1N2E5OGU0OTRlM2IzZjFmNGJlZGI0NzY3NGJmIGxlZ2FjeS10cnVuaworNDM1NzQgZTgyYWE4MDQxODIxYTM1OTMzMDUxYTcxNWMyZGYwODFhNWVmZTJjMSBsZWdhY3ktdHJ1bmsKKzQzNTc1IGEzNDgxODcxMTMyY2U2NTVjMTQ0NzQyMjU1YzdmZDg0ZDI3YmQ3ZTAgbGVnYWN5LXRydW5rCis0MzU3OCA3OTg2YTViMTMxZWQyYzA3ZDQ5ODIxNzFhMjAwNzNjMWZlZmZmOWViIGxlZ2FjeS10cnVuaworNDM1NzkgZTk1NmUxNmU3NDQ0ZmIyNGJjOGZkMTQyNjdkZGE2YWVhNTNlNWI0ZCBsZWdhY3ktdHJ1bmsKKzQzNTgxIDU3YjFmZjEzODk5NWU4NzAxOWE1NWQ1ZGM1M2Q0ZTdiZmYyMDY0NDUgbGVnYWN5LXRydW5rCis0MzU4MiAzZWVhNjViYjg5NmVkYzA2M2YyN2FiZjA1NDg2Nzk5ZWZiNzQ1YThmIGxlZ2FjeS10cnVuaworNDM1ODMgNTEzM2I1YjBiNGE4NDU4ZGQ1ZTg1OTc1MGJhNDUxNzZkZmY5ZjE1OSBsZWdhY3ktdHJ1bmsKKzQzNTg0IGUxNDI1NWRmN2ZkMTYxZTg4MGI0NTdhYWZkNmY5YjkwMDlhOWNjYzUgbGVnYWN5LXRydW5rCis0MzU4NSA5MmExN2EyODIxZTA0ZTE2OWJhYzE0NTk4MjIxMDhkYzAwZDgxMGQ2IHJlbGVhc2UyNC1tYWludAorNDM1ODYgZWI2OWQyZTMxMzRjZWIwYTUzZDQ2ZjJiOTcyZTdhNjJhMThhNTA2NCBsZWdhY3ktdHJ1bmsKKzQzNTg3IGU4MTRhZDk3MGZjNmE5MTY1ZDA1ZjQxMzhhMzI0ZmZmMTkyYmQ0MzQgbGVnYWN5LXRydW5rCis0MzU4OCBmYmM2MmRiOTdlNDM5YzViZmYxNTIxNWRiNjgyODRiNDRlYzdhNjVkIGxlZ2FjeS10cnVuaworNDM1ODkgYThjZDkwNWZkOTZjZDNlYWQyZWUzYjRiNTM3ZDU1MmNjODljODgyYiBsZWdhY3ktdHJ1bmsKKzQzNTkwIDc5NmFjZGU3MDE5NTQxMWYxMzA2YzFmMTFlYTE4ZTEyZGEzNTE0YmEgbGVnYWN5LXRydW5rCis0MzU5MSBiZGJlMDdkOTZiOGVmNGRiMzVjYTFhNDdiMTFjM2NmMzk1ZjY0MmFhIGxlZ2FjeS10cnVuaworNDM1OTIgMDFmZDA5M2I4NzhjYzc3MDIzZjQ1YTZkMjMzOTJjMTA5NzJhMGYyZiBsZWdhY3ktdHJ1bmsKKzQzNTkzIGJiZTFjZGM5MjYwNTFhZDgyOGM4MDQ1ZTMwYzAzZGJlYmFlYTJlNmEgbGVnYWN5LXRydW5rCis0MzU5NCAxMTU0MjhiYjFkM2Y2NDViZThmODg3ODBkZWM1OTU2ZWE2ZmY1MjI3IGxlZ2FjeS10cnVuaworNDM1OTUgNWNjNmQ3MTUzN2EzMWE5NWYzZDM5MGIxYTY3MzdkZDA0NGZkMmJhNiBsZWdhY3ktdHJ1bmsKKzQzNTk2IDZkNTBmZDM2NGNmNWNiNTk2ZDNmMGQ0MmU3YzU2OTE3ODUxODViZDkgbGVnYWN5LXRydW5rCis0MzU5NyBlNDU3YjI0Zjk4YzUxZjczZjgwNjllZjFiNGYyOTI4NzNhYmM3ZjhiIHJlbGVhc2UyNC1tYWludAorNDM1OTggMzVjNGIwOTMzYThiN2U1OWQxNjRiYmI0M2E1ZDNlN2E2NTE5NjdiMCByZWxlYXNlMjQtbWFpbnQKKzQzNTk5IGY1YWQzYzdlYzJjYmY0NTNiZmU1YjhhMjI5Yjk1ZjM4YzYzYWQzMWQgcmVsZWFzZTI0LW1haW50Cis0MzYwMCBiYzlkNTNjMDBkYWQ2YzM2MzAxMDQ3OGRkMzA0MTYwMmQ1YTFiMzE1IGxlZ2FjeS10cnVuaworNDM2MDEgZTJiM2E3ZDlhY2E5MThhZDVjNTI2MjcyMjVmOWY2Zjc1YWI5NWI3MyByZWxlYXNlMjQtbWFpbnQKKzQzNjA0IDEwNDllOWFlYjM4NTA5ZmVlZTFkYTUzYmEwZDFiZWRjNDgyYjFlNjkgbGVnYWN5LXRydW5rCis0MzYwNiBhMzgzMDM3N2UxYTc5NjIxOWMxMjRiZmRjZjI5MGJlMzMwMTI1MWNiIGxlZ2FjeS10cnVuaworNDM2MDcgMmNkMWU1YjE1ZTA1MGRlM2JkNmU0YTNjYTdjMzY1YjJhNmU2MzNhZCBsZWdhY3ktdHJ1bmsKKzQzNjA4IDI5YTA2YTJmM2YyZDhmMjU4MzdjNjc4MDVkMTBlMGYyOWRkOTQwNjQgbGVnYWN5LXRydW5rCis0MzYwOSA2MGJlZDY0MWI2ZDAzMzAwNDQ1M2Y4Yjc2OTQyY2VkNDEwZjM5YzI1IGxlZ2FjeS10cnVuaworNDM2MTAgNWFhM2NlZjRhOGE3YjQ5MjJhYzgzYjlhNDUzZDVhYWYwN2I4MTJkZCBsZWdhY3ktdHJ1bmsKKzQzNjExIDZkYmVhOTExZTg4MTBhNGEyNTMyNWE2NmE4MDRmYWQ5YzYxZGVmYjcgbGVnYWN5LXRydW5rCis0MzYxMiAwZjNiN2FmYTE4N2FlNjZiZGMxNzYwZDBmZWVkYmJkYWM4MjM2ZDhmIHJlbGVhc2UyNC1tYWludAorNDM2MTMgNDlkYmVkZmIxZDc0ODMwZTZhMTU1OTkxNzM2ZDlmMzNjMWE0ZTk0YiBsZWdhY3ktdHJ1bmsKKzQzNjE0IDE2YTY0ZTM5NDYwMjJmYjhiMzFmNmFjNTI0MmFiYWFlZTljZTllMmEgbGVnYWN5LXRydW5rCis0MzYxNSBlZmY2YzUzNDgzZmYzOWEzMjY0NjNkNDcwOTlkNjMzZjYyM2VjMjI2IGxlZ2FjeS10cnVuaworNDM2MTYgMDdlNDRmZDA2Y2Y3NjM5ZTc4NTE5NTJjYzdlOTcyZGZmYTY3OGNkZSBsZWdhY3ktdHJ1bmsKKzQzNjE3IDJmNTdkYTkyMWFlZjdjMWVhNjc5OWM3OTlhNzJlNTRhYzU3OGI1Y2MgbGVnYWN5LXRydW5rCis0MzYxOCBkY2NlODFiN2U2NGQwM2M4NTU0MTljMjIwN2Y0MWY3YzlmN2MxNGZlIHJlbGVhc2UyNC1tYWludAorNDM2MjAgZDI3MDU4YzQwOWRmM2M2OTVjZGM1MDczOTk3MzBkNmRjZWQwNTg5NCBsZWdhY3ktdHJ1bmsKKzQzNjIyIGMxY2VmMWQyZGNjZjRiOTg0MWY2ZDBlNDQ4NzA3YzdhMzVmMjVhZjUgbGVnYWN5LXRydW5rCis0MzYyMyBkMjY5N2M1MmNjYWU1OWI5MmIwMGI3M2FlZWFhMDYyYmJiOTAxNTNlIGxlZ2FjeS10cnVuaworNDM2MjQgNmFiMTVmYzg1YzJkMGM2OGM3N2NjNjk1Zjg3Y2QyNmJjZGU5YjdmYyBsZWdhY3ktdHJ1bmsKKzQzNjI2IGI2MDMzMDcyOTJmYzc0YWU4NmFmNmE1NThlZTEwNDM3YWRjOGEzYzUgbGVnYWN5LXRydW5rCis0MzYyNyBhZGQwMDc4NzBiYmRhZDM5MDkyMWQ5MjBhNjRkM2QyYTI1ODI2NzkwIGxlZ2FjeS10cnVuaworNDM2MjggZDM0NTE2NTg4MjcyYWVlMWM4M2I5OGU0ZGI1NDNiZmE4OWZjZGE3OSBsZWdhY3ktdHJ1bmsKKzQzNjI5IDJjMzhlZTRiZGQ4YWIyOTVlNDk5YWI1MzM3NDRiMmVjY2NjMWNkYzMgbGVnYWN5LXRydW5rCis0MzYzMCBjMTE1YjNhZTFjMTg3OWEzYjAwYmVkMGU1N2JiN2FlYzk3MTA0YTZmIGxlZ2FjeS10cnVuaworNDM2MzEgMWYxMDlhNDk1M2M2OWEyMzkxNjkxMTQ0ZjY2OGIxMWViN2Y5MGVmZSBsZWdhY3ktdHJ1bmsKKzQzNjMyIDA0YWZiMzY1MDg0NzYwZWFjZWE2ZGQ4YWRjZmEyODI3ZmEwNGZiNjQgbGVnYWN5LXRydW5rCis0MzYzMyBhMTdiNTI5NGU5OTNjYTk2ZmMxMDFjZTViOThkZjk5YzkyMjEzMDQ3IGxlZ2FjeS10cnVuaworNDM2MzQgOWVjYmNlNTVhNDU0NjVkOGEwNGJiZTRkZTk0MDdmOTI3MjZlYjc3YiBsZWdhY3ktdHJ1bmsKKzQzNjM1IDhlZmRlZjJlY2YzYjE5NTg1ZDEyNWJiZDAzMjI2ZDY0MDkxZjc5YjEgbGVnYWN5LXRydW5rCis0MzYzNiBmOGZjMzBjMGZjN2MzNDUyMTkzYTFmOGMzZjNiMWU5YjhhODZiNzc5IGxlZ2FjeS10cnVuaworNDM2MzggMjBmZmMyY2EwM2UwY2E1MWJhZjg5NjYwZDhmYjljM2U2OTY2MjAxMSBsZWdhY3ktdHJ1bmsKKzQzNjM5IDYyNTY3YmJlN2Q4OGRhNThiMDE0ZTkwMzljMGNiZWM0NzNlN2Y4MDUgbGVnYWN5LXRydW5rCis0MzY0MCA1OGI4ZDI5ODIxNDRmODhkMzY1Y2I0OTkyZGI5YWFmYTk0NDYzNjYwIGxlZ2FjeS10cnVuaworNDM2NDEgZTY1ODI5MDVlZWJhNmI1NmJjN2YyNWEzYWRiODY0MTQ4ODhhYjcyOCBsZWdhY3ktdHJ1bmsKKzQzNjQyIDkwM2UzMTYyMDk5ZTI5MGY4OGIxYmU1MTcxODhlMWNjOWU4MDNmZGQgbGVnYWN5LXRydW5rCis0MzY0NCA4NTJmMWMxYTg5YjRkMzRlNjE3OTg3MTQ4MTYyZGI3YTkyZDAwZDMxIGxlZ2FjeS10cnVuaworNDM2NDUgZTcwOWU2Mjg4NmU2MDM5NDUyMzk1MjA1MDM1OTEzZGZhYTI1N2JkMSBsZWdhY3ktdHJ1bmsKKzQzNjQ2IGQ2ZWNiYTU5NmUxZTY4OTFkMDRhNmExYmQ4ZTY3OWYzOWFlN2IwZGYgbGVnYWN5LXRydW5rCis0MzY0NyAyOTYzOTJjNzEwNjkwZTYwZGQxNGQzZDRlYmIxMTNjMzdkNWY5MzYxIGxlZ2FjeS10cnVuaworNDM2NDggNGE5OTljNmUwMGMwMmZkYTVhZTAxMzU1ZTU4YzVkMjZkODk2N2YzNiBsZWdhY3ktdHJ1bmsKKzQzNjQ5IGE5ODJiMDJiZWMwYmYxODQ1MDYyYmY1ODVhNGZkMWE2YTFhNTE1YTYgbGVnYWN5LXRydW5rCis0MzY1MCAxMDVhOGRkMDE4NTE2NjUzYmQwMTVmNjY2Yjc4M2FhZTNjNzkwNjg0IGxlZ2FjeS10cnVuaworNDM2NTEgODk2ZjlmZWFkMTdlNzIwZWM0YTIxZGUzYWMyMTQ1MThkYTg0ODQ1ZiBsZWdhY3ktdHJ1bmsKKzQzNjUzIGEwZjJjMzhkODVmNDUzYWM5NmU1OTZlZmYyN2UwYzA0MTMzMGM5YjUgbGVnYWN5LXRydW5rCis0MzY1OSAzOTViMWY1Yzk3NTE0OTNjYWU3MWI0ZTg0MTQwY2FkZjE5Mjk0NjY4IGxlZ2FjeS10cnVuaworNDM2NjAgNGI3NjFhNjMzOTljNDI3YmI3OGI1M2QyZjg3NjJmMmM4NDdmYTQwOCBsZWdhY3ktdHJ1bmsKKzQzNjYxIDY5Zjc5NTE3NzYxZDEyYTYzZWVmMDZkZGRlZDc5MTAwYTFmNTFhMWYgbGVnYWN5LXRydW5rCis0MzY2MiBkYmY1YjJmMmE0MjkxNjg3MDE3NDI3NmQxYThjNjVmMDM2NDMxNDVhIGxlZ2FjeS10cnVuaworNDM2NjMgNjUzMzM4YWE2OWYyZDdkYzBkMTZiZjcxZmVlNjk4YzIyMmIxZTkyMiByZWxlYXNlMjQtbWFpbnQKKzQzNjY1IDA5OTkwNjYxMjI2ZGJhYTVjMzBkZTE0Yzk0N2RiNGQ2MDEwNWFkZTMgbGVnYWN5LXRydW5rCis0MzY2NiBlZDZmZTcyOTEwODM5OThlNTZjMzU5ZmY2NzIxOTRjMDcxMGU0MzJiIGxlZ2FjeS10cnVuaworNDM2NjcgOTc2YzAxMDkxYjM4NWRlZDkwNDUyZTFiZjVmNTg0ODI1MzVhZThhMyBsZWdhY3ktdHJ1bmsKKzQzNjY4IGQzOTY5YWViYTc3N2QxMDA2Y2RmOTlkYjQ2MGE4ZGM4YTQwZTM4NzIgbGVnYWN5LXRydW5rCis0MzY2OSA0ODk4ZjE5NmEyNGRlYmNlZDViNDg1ODc1NjA4NzQ1YTM4M2FhNGQ0IGxlZ2FjeS10cnVuaworNDM2NzAgM2Q0ZjM1M2MzZDRmYjI2OTQ5NjJiMjU2NGQ3OWVkOTc3YjIwYjJhZSBsZWdhY3ktdHJ1bmsKKzQzNjcxIDQ4ZDEyZGVmMzJiM2M4Y2ViOTk0NDdmMDBmN2ZhYmI2ZGU3YTNlN2YgbGVnYWN5LXRydW5rCis0MzY3NSA5N2JjMzQ4ZGJjNWRmMmQ5ZDg2MTkwY2FhMzQxOTY2MTA5ZTRlYmMyIGxlZ2FjeS10cnVuaworNDM2NzggNWVjODg4M2EyZWY5YTE2NDJiNmMwN2ZjYmQ3NjhmNDA3ZDcxNTRmNyBsZWdhY3ktdHJ1bmsKKzQzNjc5IGY2NjM1ZjMwNDY5NWU2NmJmNTk1OTM4ZGY3NzNjMjA5ZWQ5YzRkYjAgbGVnYWN5LXRydW5rCis0MzY4MCA0OGNkZTJmOGQ1MGUxZjEzOTMyMWQ0NGNmM2ZmNzc4YmZjYTQ3ZmY4IHJlbGVhc2UyNC1tYWludAorNDM2ODEgMzY5YmI1ZjY3ZWY2ODU3ZDMxNTBiNDBiM2I1N2FlYTgzYTIyMDhiOSBsZWdhY3ktdHJ1bmsKKzQzNjgyIDk2MGJmNmFhODU0ZGQ2NjVjY2ZhYjlkYjM4OGE4YjExMGU2MDg2ZjEgbGVnYWN5LXRydW5rCis0MzY4NCBmYzhjOTBhNDRlNjhiNzkzMjc5YjNmNTBkZmMzM2I3ZDFjYzZiZGMyIGxlZ2FjeS10cnVuaworNDM2ODUgMWRhZjRmN2IzMDIxNmExMWRiYjIxYzE2OWNlMmE2MTNkZGZmZDNhZSByZWxlYXNlMjQtbWFpbnQKKzQzNjg2IDViMTE5ZjI1NmNkZTVlYjExYTZkZjJhMjFiZjZhMGY1YjRlYmY1NjcgbGVnYWN5LXRydW5rCis0MzY4NyBkNWNiNzcyMzIyYmY2N2MzMzM0YzMxMDU4ZTM4ZTA1MTNmOTExNTExIHJlbGVhc2UyNC1tYWludAorNDM2ODggM2YwOTVjNTVjMmQ5YjFkNGQ3YzE3ZTE3YWU0OTE4MzhiMDE0MGE0YiBsZWdhY3ktdHJ1bmsKKzQzNjg5IDQyODQ4NzlhMThlYWQ4NjNlZmY0Y2Q3MTI4NzMwMjczNDg1ZTNhNjUgcmVsZWFzZTI0LW1haW50Cis0MzY5MCBhZDRmNzU1MGQ4YTQwNjI1OGFlOGM2YjljZGQwYjE5NTgyOGU2NDEyIGxlZ2FjeS10cnVuaworNDM2OTEgZDFkZGExMTQ4ZjEwOTY5YjhlMTI1ZjE0N2E0MDAwZmE3MjI4ZjM3ZSBsZWdhY3ktdHJ1bmsKKzQzNjkyIGQwMzIwMWYyZjljMjRhNTkzYjg5ODg2NGYzODY0Y2M5OTJlZDcyZDkgbGVnYWN5LXRydW5rCis0MzY5MyAyYjBhNWVlYzAyOGIwN2RmY2RhYTBiNmMwN2U4N2RjMjE0MjQ4MmNkIGxlZ2FjeS10cnVuaworNDM2OTQgYzE2Yjc1MmVlOTNiYzJhZGE2MWY1MWUzMzcyMjhlYjdmNGVlNjE0MyBsZWdhY3ktdHJ1bmsKKzQzNjk1IDdjZDNiZjIzOTllNjIwYTYzNDJiZmJlYmE5MjBlZDQwZmY5M2YwZTggbGVnYWN5LXRydW5rCis0MzY5NiBjZTRhZjU0MTZkNzY1ZWI1ZmE4OTdkZmUxOGE1ZTRjM2NmODVjMDg4IGxlZ2FjeS10cnVuaworNDM2OTcgNzlkM2M0YWQ5MzEwOWI3OTlhOWI5ZmUxMGYwMWUxZmU4YTJmZGZlNyBsZWdhY3ktdHJ1bmsKKzQzNjk4IGZmNzE4N2RjYTJmMWFmNDExYTNlM2UwMzM2OTQ5NTc2MjUxNWM0ZjcgbGVnYWN5LXRydW5rCis0MzY5OSAyMTE0MTAzN2ExMjMzYmQ5NGVlMjhiZDA0MGQzZmZlYzMyYzg3MGFkIGxlZ2FjeS10cnVuaworNDM3MDAgN2M0MDQ4ZWMwYzY4OGM1ZTU2YTQ0OWRhMDZlNzU0NzQ5N2MxYTg1MyByZWxlYXNlMjQtbWFpbnQKKzQzNzAxIDU1NTZjZTk5ZjIwYzQ4NDZmNzhkNTZhYTczNTRhYTQ3NzE5N2VkNDYgbGVnYWN5LXRydW5rCis0MzcwMiAwYTAxNDg4NDAxN2NkY2M2M2UxZTUzM2EwNTA0MGMzODFhYzRmNTY4IHJlbGVhc2UyNC1tYWludAorNDM3MDQgMDE4NDVhMjQ3YzhiMTU1ZTZhNjYwMzA0ZmVjZGViOWM4MmZlYTI5ZSBsZWdhY3ktdHJ1bmsKKzQzNzA1IDhjNzgyODhkMGRiYmIxNGI4MWYxMDg4NDRmMzZlZmI2OGM4ZTk2YzYgcmVsZWFzZTI0LW1haW50Cis0MzcwNyBiNDNkYjg3YTk3NTIzOTdlYjE1ZjViODU1MDU0NzFhNzFhZmY4YTM5IGxlZ2FjeS10cnVuaworNDM3MDggMGFlMWZhZjQxMWZmZjIyNDE1YWM4ZWU0ZDk2MWIzMzJlMTJjNTYzMSBsZWdhY3ktdHJ1bmsKKzQzNzA5IDBhNDVjYjMwYjY0ZTBiZWMwOTNhNmQ3ODkxZjlmNThhZmZjMjNmOWIgbGVnYWN5LXRydW5rCis0MzcxNCBhOWRmOWIwYmE0MTY1ZTRjOGE1ZTBlZjE5NWIzYzlkMWI4NWYwZWI2IGxlZ2FjeS10cnVuaworNDM3MTUgM2M3ZWE1MDUxOGJlMjIxNWNjM2IxMjE5NmZiZjlkODhmMWQwN2I4ZCBsZWdhY3ktdHJ1bmsKKzQzNzE2IGQyMmNiMTRkYTY3MTQzZTc4MDhhODIyNjEyM2I2MDA1ODVhNTFjODcgbGVnYWN5LXRydW5rCis0MzcxNyAxNTgzZDNmZGRkY2Q3NmE4MDI5YjhlYzNjOGRiYmQ2NmY5ZjgyYmQxIGxlZ2FjeS10cnVuaworNDM3MTggYTk0NzBlYjYzN2YxOTQ4ODA3NzFjODAxNTRjMTNlYWNjOWQ5Y2NhNCBsZWdhY3ktdHJ1bmsKKzQzNzE5IDg2OWYzYzlkNzQwMTQwMGVlMTBjNGE5NWJmNWNiZjNkNDhiYTBjOTUgbGVnYWN5LXRydW5rCis0MzcyMCBmOGM0YWE1NDEzZGJhMGY2ZDhjMjM3YWJiNTAxOWQ1YWFiMGQ3YTAyIGxlZ2FjeS10cnVuaworNDM3MjEgOWJlZDMwZGY3YTRhZWE5NDgzNmU5NmVjNTVjZDk5MzAwMjQ5OWNmMiBsZWdhY3ktdHJ1bmsKKzQzNzIyIDViYzJiNGUzZmZjMTY0NWYyYmUzY2ExZGNmYWRjYWM2NGE5MWFkYWEgbGVnYWN5LXRydW5rCis0MzcyOSA5MDA2ZjkyMjNkODBiNWM0NmQ2ZTU0YWNlNDZmMTcxMmNjNGMyNTJmIGxlZ2FjeS10cnVuaworNDM3MzAgMTQ5ZmU2ODRlNDAxNjA5NmJkNmE1MmQxZjc3YmU4M2I1ZmRjMWVlYyByZWxlYXNlMjQtbWFpbnQKKzQzNzMxIGIzNjY2YzVkZGQ4YTBhOGJjOGNiMmVlNThiM2U0NDNiNjhhMTQ2YTIgbGVnYWN5LXRydW5rCis0MzczMiA3MDczMTI1MmRhMzQ2OTMwNjU0NjNjYzRjMGRmODdhZTA2MDk3Zjg1IHJlbGVhc2UyNC1tYWludAorNDM3MzQgYzE3YzUyMTkzMTY5ZWU0NGM3NTIyMWYzOTJmNzAzMGUwNDMxMTBhOSBsZWdhY3ktdHJ1bmsKKzQzNzM1IGE3ZDY4OGViZTNlMWEyMDMyOGY5NDRlYTg1ZTZjZWFjY2E1MjNlNjAgcmVsZWFzZTI0LW1haW50Cis0MzczNiA0MzE2MTNiYzkzNWU5NWEzNjhmZTEyZWUwZTdjYmEyMzI3MjFjMDU2IHJlbGVhc2UyNC1tYWludAorNDM3MzcgNzA5MjY2MjZjNmEwYTM0MDAwZTQ0ZjJhZTZjZGMzMjhmZjc5ZTljMSBzdGRsaWItY2xlYW51cAorNDM3MzggYmE4ZjI3NjRhYTRhYzA5MDAxZmU4OTkzMThiZjQwNDE3NmZiODU2NCBzdGRsaWItY2xlYW51cAorNDM3MzkgYThkNDkyODI5MmQ4YjJiMjI4YWIwZTVhMmE5NThiMmE4ZDIwMDhmYiBsZWdhY3ktdHJ1bmsKKzQzNzQwIGVkYzZhMGNjODQ2NmJlNjFlZjRlMTg4MTExNWUxZGEyOGUwNDI5MTkgbGVnYWN5LXRydW5rCis0Mzc0MSA0ODMxMTQwMWEyMGVhMzY2YTVlMTVmYmE3NTNiMGQ5MGFkYTc3ZTc3IGxlZ2FjeS10cnVuaworNDM3NDIgZjFjNDQwNmJmNDgxZWFkMjM0NTlhMmE3ZWIzYTI1OGZhYjE2ZDBiMCBsZWdhY3ktdHJ1bmsKKzQzNzQzIGIwNTI4ZThjNmI3ODQ0ZDk1MzY3ZTI3YmQ3MTYzZWY0MjNlOWI5ODkgbGVnYWN5LXRydW5rCis0Mzc0NCAwMzQyYzVmMGY0ZmY2NWMzNmYyZjg1ZGIwZGY2NzI1NzA5MWIzOTY1IGxlZ2FjeS10cnVuaworNDM3NDYgMDQ2ZTZlMzQ4MzgxNzY5NTQyN2IyNGQ4MzkwZDdmODBiODZmNmQzYyBsZWdhY3ktdHJ1bmsKKzQzNzQ3IDJjZGY1MjdiNThmNmEyOWFiYmY2MTYzMjE5M2RmZmMxNGJiYzQ2MTAgcmVsZWFzZTI0LW1haW50Cis0Mzc0OCAzOTU5ODEwYmM1NDkxMzI2OTJjM2Y0M2EyZDRhM2NkNDdjMTNmMWI2IGxlZ2FjeS10cnVuaworNDUyMjEgMzZiY2I4M2VjYmFkNTNlYjYzZTIzZGE0MzQwNDk5NGM4ZjA5NjAxNCBsZWdhY3ktdHJ1bmsKKzQ1MjIzIDIzMWU0MmQwMzYyZWQyNjdkM2IzNTMyNTg0YTZmNzQ5NTk4OWFiNGEgbGVnYWN5LXRydW5rCis0NTIyNCA5YmRhNWJhNDE2NzdjZjZiMzE0MDNkNWViNGY5NTg5ZGI1ODBmOGU4IGxlZ2FjeS10cnVuaworNDUyMjUgNmFlNGFkZWZjNTczYjhlYjA2YzlkYWE1NThlNDllZDg5Yjc2ZDgzNCBsZWdhY3ktdHJ1bmsKKzQ1MjI2IDI4NmM4MTY4OTgyNmNhYmIxNTc3MmYyYTE5MjFhODY1MDg0NDFhNDYgbGVnYWN5LXRydW5rCis0NTIyNyBhNzhiYzBiYjM0NTk2MmU2OTAyOWNlM2MwOTkwODg4YjE0YWRjYTc5IGxlZ2FjeS10cnVuaworNDUyMjkgZWIwYjk5MjdmZmZkMDI1Mjc2YTk2ZGRjMjQwYWFlMjg0OGE4YzQ4ZSBsZWdhY3ktdHJ1bmsKKzQ1MjMyIGJkMzc1Nzc3OTMyZDkxYTNmYjAwOTQ5MmIyMDhmZGRhZjk3ZWE3MDkgbGVnYWN5LXRydW5rCis0NTIzMyAwZjJlODZkMDhkOGFmZjIyZjA5MjljN2Q5OTE3YjZkOTBkMjE1ZTlhIGxlZ2FjeS10cnVuaworNDUyMzQgNDIwMjNmNWI3ZDZkMWRkNzNiMWU0OTFlN2Y5NzMyMWQ4YTI4ZGZiNyBsZWdhY3ktdHJ1bmsKKzQ1MjM1IGM3ODJjZjZiNTE2ZTQyZTg3NzE0YTlkN2M1ZmY2NTQ3YmYzYTA3ZDggbGVnYWN5LXRydW5rCis0NTIzNiA4MDk0Y2MwYzk4ZDdhNjQyY2EzOWFhNzA5ZDBjYjg4NDU5N2E0ZDM0IGxlZ2FjeS10cnVuaworNDUyMzcgMzM0MjNiODQ1NTU0MDk2YjIwMjFhM2UxZmY4YTg0YzA4YzQwMGQ3YyBsZWdhY3ktdHJ1bmsKKzQ1MjM4IDNkNjAxNTEzOTJjMjI1N2Q2YjZhNTc5ZGEyOTlmNzAxNmYzY2ZmZGEgbGVnYWN5LXRydW5rCis0NTIzOSAyMTNjNDE5OGZlMjNkOWJkNTg1ODVlNjFmMzhjNDcyNzcxYTY0Y2NjIGxlZ2FjeS10cnVuaworNDUyNDAgYjc0NDBhYjVjZDcwNmY0OTBmYWM4NzA0N2IzZjI3YmI5OTlhYWE4NiBsZWdhY3ktdHJ1bmsKKzQ1MjQxIDViMzUxZGQ3ZDA4MTVkZTBlMjE4YjY3ZjhlNWQwYzliZWZlZjM4ZTAgbGVnYWN5LXRydW5rCis0NTI0MiAwYmMzZjc0YTRhNDcxODQxOWViMmNlOTYwZmFkMmVlN2NkYmIxYTIwIGxlZ2FjeS10cnVuaworNDUyNDMgMmUyMzRmNGZkNzYzOTkwNzM2ZGU2ZDQ5ZDQzNjIwOTgwN2Y0YTc2YyBsZWdhY3ktdHJ1bmsKKzQ1MjQ1IGY2YTFmNTVkM2U1Y2U2YmI5M2RjODhlNTg4YjE3ZTg0MzYyNmVjYTcgbGVnYWN5LXRydW5rCis0NTI0NiBkZDA4NWMxM2M0OWE3NWU4NGJmNzU2YWJlNGRiMGU2ZGEyYzY2MTRlIGxlZ2FjeS10cnVuaworNDUyNDcgZGM5YTM2YzhiNDczMGFiYzhmOTM1ZmVkYTZhNjMxMzRiNGQ0MWQzYyBsZWdhY3ktdHJ1bmsKKzQ1MjQ4IGQxMTM2NmY3ZTFlN2E1ODY5MjEyNjBhMGE1ZmNhYjlkMzkxYzU4YzAgbGVnYWN5LXRydW5rCis0NTI0OSA3Y2I2YTMwNDQ2MGZjMDBhYjBiOTQ4ZDY5ODZlMmI3Yzc1YTdiNDQ4IGxlZ2FjeS10cnVuaworNDUyNTAgZTI5Y2RmODY3OGZlOThlMmRmMGRlMTcwZTM3YjljNWJjYzIyOTg2ZiBsZWdhY3ktdHJ1bmsKKzQ1MjUxIDAwYmY4ZjAwZWM2MzI3NTcxODZjNTkyMGFhNTkzZGNiZThlMTUzNjIgbGVnYWN5LXRydW5rCis0NTI1MiAwNzIwNTA2MTVmYzBjMTY2Y2I3ZDUwZDc2NGNlNzkzZmU3YzU2YmJjIGxlZ2FjeS10cnVuaworNDUyNTMgYjExMmQ4Yzc5ODhjMzE3YzBkZmE5YjY5NjI1MDBlYjFiZGEzODE4NiBsZWdhY3ktdHJ1bmsKKzQ1MjU0IDBhZjdmMTgwODdhMWZmZmFmNDI3OGFjMzZiNTBjZTExNzczNDAyNTYgbGVnYWN5LXRydW5rCis0NTI1NSAxYTNlNzk5ZDA2MzQxYjQxMzk1MTJhMDEwNjk1YzZhYjEzMzQ3MGFhIGxlZ2FjeS10cnVuaworNDUyNTYgM2I0ZmRjNzViZTEyY2U3MWFhNGUxMTk1YmM2ODA3YzlkNjUyNmZmMSBsZWdhY3ktdHJ1bmsKKzQ1MjU3IDI5Mjg1NGM0M2I5OWI5ZjM1OTFhY2YzY2VmMmQ3ZmE4YTdhNjBhMmEgbGVnYWN5LXRydW5rCis0NTI1OCAxY2VkNzlmMDgwNTA5YzQ0NGRkNTE0MTE1NDdiNzEzMTMxODA5YTI3IGxlZ2FjeS10cnVuaworNDUyNTkgYTg0MTZhZDFhNWM1OWMzNDA3NzNlNWE3ODUzN2YxYmIwNmM3ZDBhOCBsZWdhY3ktdHJ1bmsKKzQ1MjYwIDEzZGQzMDk3NGFkNjkxMmU5ZDE4NjkwMTliYmVkN2MzZDYwYmYyMmQgcmVsZWFzZTI0LW1haW50Cis0NTI2MSBhZWVlODViNmE1ZGQ4OGFkMWVjODE1MjNkZmVhMmRhYWRiOTRlMTYwIGxlZ2FjeS10cnVuaworNDUyNjIgZjc3ZGJjMGY5OGUzNDM1MjFmYmQ4NDYzM2VkMGZkYzdkNzhkOTY2MCBsZWdhY3ktdHJ1bmsKKzQ1MjYzIGFkZGU5ZGUxMDI4N2FkNDVkOTcyYjU4NmNkN2M2NDNjN2U5NmQ1ZWMgcmVsZWFzZTI0LW1haW50Cis0NTI2NCA5MjQ1MDRiMDAxOTY0OTA0MWZkNTNlZjI3NDI5YzgwZDdkOWRlMGZlIGxlZ2FjeS10cnVuaworNDUyNjUgYWVkMWMzYzM1YjgzNjNlODM1ODdlOTEwMTMyYTFjMWRmMzFhNWNjNiBsZWdhY3ktdHJ1bmsKKzQ1MjY2IDZkZDBkOGI0YmFjNTc0Y2U0ZDA2ODUyOWRhOWRiMTRhOTIyZTA3NzggbGVnYWN5LXRydW5rCis0NTI2NyAwNTkxZDAzMjJmMDRjMjRkYTVmYjhiNzMxOGMyN2VkY2RmYjgxNWEwIGxlZ2FjeS10cnVuaworNDUyNjkgMWIwNzg0OTNkNTM4MmI4M2Y1MzMzNjdmYzJhYzViZWQ5YTdlNGNmNyBsZWdhY3ktdHJ1bmsKKzQ1MjcwIDJiMmU5YzM4OGZiYmUyMjU1NmM5OGVmOTcwN2QwMzE2ZmJlNjlhNDEgbGVnYWN5LXRydW5rCis0NTI3MSA1NmUwMGM5YjUwMTE3MzQ2NDkyMGI0Y2Y1ZTdiZmY0YzFiNjI2ZjYwIGxlZ2FjeS10cnVuaworNDUyNzIgNDRmYjAzYTZhNTI0OTcwODdlMGVkMmI2NmNiODczMDk2YzAyNmZiOSBsZWdhY3ktdHJ1bmsKKzQ1MjczIGM0YzVlZWIwNzczOWFiNDEwNTUzNzZlYWU1N2UzNzQ2NzFmMzQwNWEgbGVnYWN5LXRydW5rCis0NTI3NCBmNzZiNWQ5ODczMTRkNzQ0NzU4MGY1NWU3YWU5ZWFlYWUwZTg1OTViIGxlZ2FjeS10cnVuaworNDUyNzUgY2E5NWFkNWIwZmJjNjFmOWVkMTE1ZWU2MDA4NmRhMjcyN2U3YTM4NyBsZWdhY3ktdHJ1bmsKKzQ1Mjc2IDM4YWNiOTE4MjRmY2M1NzM1NGYzYzdiZmI1ZGM4Zjg1ZDM2NjNmMTYgbGVnYWN5LXRydW5rCis0NTI3NyBjNzMyZjY2YzkxM2ZkMzYyYmFiYTFjNWIxYTRjMDVkODI2NDI4MTI2IGxlZ2FjeS10cnVuaworNDUyNzggZTA3MGMzMTZlYjQ1NTlhOGZlODk5MzRlMDNjNmI3NTYwNmI3NWQyNCBsZWdhY3ktdHJ1bmsKKzQ1Mjc5IGY0NDhkMDA3NTY5MWY5NTJkN2NkNGJmOGIwOTBhY2ZlNGNjMDlkZDAgbGVnYWN5LXRydW5rCis0NTI4MCA0ODBhNTYyNWUyODY5MjAxNzQ0NzAyMTQ1ZDI2NWU0OTk5OGIwYWY2IGxlZ2FjeS10cnVuaworNDUyODEgYjc0ZDNhZGJmODg4NWVmYmRhMjRmZTkyOGQzMWMxNmNkOTk3ZWJiOSBsZWdhY3ktdHJ1bmsKKzQ1MjgyIGU2MGIzMTY0N2E2YjMxZDA3YTE3NTE1OTY1NzllM2FkZjZkODU2NDIgbGVnYWN5LXRydW5rCis0NTI4MyA3ZWQwZjAwM2JhNjMxMzZhMTU4ODIwMzE4N2JkNjFlMzFlOGNjYjA0IGxlZ2FjeS10cnVuaworNDUyODQgN2FmYWE3NTJjNzcyMDhlMzNmN2QwZDVmNzY1OTYwYTZhODgzOGM4ZCBsZWdhY3ktdHJ1bmsKKzQ1Mjg1IGNkMTk1ZTA3M2RkNDY1ZDBmNWEwMGZiZTJiODg2MTA2NDZlZTQ1ZWMgbGVnYWN5LXRydW5rCis0NTI4NiAwY2E1MTEyZTNlMTI5YTNkMDg0NTA4ZDBlNTdhNzdlNGRjNDJjZDBmIGxlZ2FjeS10cnVuaworNDUyODcgNzJjZWIxYjMwZDRiYmMyMmFlZWRjNTU3MDIzNzQzNzNmMTc0Yjg4OSBsZWdhY3ktdHJ1bmsKKzQ1Mjg4IDE5ZDk5YjMxNTU1Y2ViY2YwZThjZjQ2MGVhM2Y2N2Q4OGE0NTU1YzAgbGVnYWN5LXRydW5rCis0NTI4OSAxZTlkN2U2NmMxYmNmYTZiYWNjZmRmMjU4NTEwNDgxYWQwY2IwZWQ3IGxlZ2FjeS10cnVuaworNDUyOTAgODk2OGIxMjQyZjE4OTk0YjM5ZDMxMTRhNWJmNTFiNjVhYjE5YzljYiBsZWdhY3ktdHJ1bmsKKzQ1MjkxIDZmYmMxMWEwM2JjYzJhM2I2ODQ5N2ZjNTAyMjk4ZDdmZWVhMTFiNWUgbGVnYWN5LXRydW5rCis0NTI5MiBmMTlhZGRkNjlhZDkzOWYyMGE0NTM0MmI3ZGNiN2VmYmMyODk1MDQxIGxlZ2FjeS10cnVuaworNDUyOTMgYjQzYTk3MDI2NDc5MDNmNTI0NTkyZDgzZGY5YWU0ZjUxZDI4ODA4ZCBsZWdhY3ktdHJ1bmsKKzQ1Mjk0IDE1NzE3OWQyYTRjMzUyMmUyZjQ3Nzc2MWE1OWFhMzgwNDcwMTZiZjEgbGVnYWN5LXRydW5rCis0NTI5NiA4YTE4ODAzNmI3MTNiNGFjZjgwMWE5ZTg2ZDdjMTQyM2U2OGQ0ZjdjIGxlZ2FjeS10cnVuaworNDUyOTcgMmZkNmFkNTgyMjAzMmZiYThhZTZkNTJkMDA4YWE1NzkzOTk5YTMxYiBsZWdhY3ktdHJ1bmsKKzQ1Mjk4IGU4MDhlMmFmOTFmNjM0OWJkM2RmY2YxYmI3MDZhYzQ3NTNlMWVhMjMgbGVnYWN5LXRydW5rCis0NTI5OSBjOGEwOWZkNGYxMGRhN2VlMTAzYmQxOWIzYmJmZmIxOTY5NjdkOWY5IGxlZ2FjeS10cnVuaworNDUzMDAgYzI2ZjVlMjA2ZGU3OWQ1NDg5YzQ1MThkNGRkZGZiMDk2YWZiOTYwYiBsZWdhY3ktdHJ1bmsKKzQ1MzAxIGE1MzkyYmIwNzQ0MDI5Y2YxNWIxNzE3NDZlMzE3MzIxZGU3YjMxMWEgcmVsZWFzZTI0LW1haW50Cis0NTMwMiAwZGQzMmE2YjI5NjRlMjM0MjEwODFjMzc5NmUyM2U1ZmRiNDZlMmVjIGxlZ2FjeS10cnVuaworNDUzMDMgMjg5MTE2YTUyYmIxZThlNjdhMWQ3MjI1MzQxODFlYzRlMTJiNWYxZSBsZWdhY3ktdHJ1bmsKKzQ1MzA0IDFlMTJlYzQ5ZGY5YjRkYjk4NDMwNDQ4NDg3YzBkMmI1MWQ3MDY2NTkgcmVsZWFzZTI0LW1haW50Cis0NTMwNSAzOTlhOWE3MjA5NWY5MzBhMjMyM2E2NjgzZTc3YWY4ZTM5ZmVkYjFmIGxlZ2FjeS10cnVuaworNDUzMDYgMTdmOGFkY2M3M2VkODZiOGY1OGMyZDdkYmE2MzAzMDg1Y2EyZDU5YSBsZWdhY3ktdHJ1bmsKKzQ1MzA3IGFmMDU2YjYzY2U1MzYwNDMwYzEwMWY4MWY1ODdlNWMwNjYxN2ZiMDUgbGVnYWN5LXRydW5rCis0NTMwOCA4ODMxZmQ4MjJiNjA1ZGRhYmViOGM4NDQzYjA0MjFmYjNiZTgyNzEwIGxlZ2FjeS10cnVuaworNDUzMDkgNzY5YzYyNjEzNTVlOTM5YTJiZTA2YzMwYTI5NjdiNjRhNTQ2MDQ1MSBsZWdhY3ktdHJ1bmsKKzQ1MzEwIDJlOGFiNzk3Y2VhZjlkNzQ4ZDg1Y2VkMmFhNWRjYjdkNDY0YTQ0YmMgbGVnYWN5LXRydW5rCis0NTMxMSA5YTZhMDM3NWVmMjI5NWVhZjkxZDIwMzQ2YWFjMjI4YWQyNzU3ZWRjIHJlbGVhc2UyNC1tYWludAorNDUzMTIgNjVlY2I4M2VhN2RkZmQyMzJlZTgwZTFiNDk0NDljM2VjNGE3NTVjYSBsZWdhY3ktdHJ1bmsKKzQ1MzEzIGJjNGZiYmIyZGIzMDA5ZjBhYjdjMGZhMDg5ZjY3MDlkNTI1MGRhYmIgcmVsZWFzZTI0LW1haW50Cis0NTMxNCBmZWQyOTdjMjA2MmQ5MjhhMDA0NjUwOTliNzFkZTU2MzNiOTEyMzZjIGxlZ2FjeS10cnVuaworNDUzMTUgMzZlMTc2MmVhZDg2YjgwYjBhY2Y5NmQ3YjI4NTY0MjIyNjk4OGRiOCBsZWdhY3ktdHJ1bmsKKzQ1MzE2IDIyZjJjOTJhMWRhN2Y5NjVmYWZjY2VmNjYyY2I2NjZiMGU5Y2RjYTggbGVnYWN5LXRydW5rCis0NTMxNyBhZDQ4NmU0ODc1YzZlMTgzYjUwZjMxZDc3NGJkMTg2ZjE0ZjNlNmY2IGxlZ2FjeS10cnVuaworNDUzMTggYzZlMTFmODA0ZDAwZjc2M2Y0MDE1Zjg4MmEzNWUzNTlhY2M3NTkzYiBsZWdhY3ktdHJ1bmsKKzQ1MzE5IDJjMDY1ODhhZTY5ZTYyODJlZmZkZTVjNjYzMGVhNjk5ZTRmNmNjNmYgbGVnYWN5LXRydW5rCis0NTMyMCA0MjJjZGQyNGFmNDZjNDc0ZTQzOTc0ZTI2Nzc2NDE0M2QxMjk2MjhjIHJlbGVhc2UyNC1tYWludAorNDUzMjEgMTBlNDdmMjdlYTM5ZmEwNzY4NmIwZDYwYjY1YTA5Y2QxODQyNzdlYyBsZWdhY3ktdHJ1bmsKKzQ1MzIyIDQ1NTFkYTg0NzY1MWFjYzI2MWEzM2JmMmNmZWU3ZWE1ODEwMDRhMDAgcmVsZWFzZTI0LW1haW50Cis0NTMyNCAyMWZjYzg2ZTQ4MjA4MmJlYzZiZDhkM2QxOWQ1MzE1YzAyNTQwNjI4IGxlZ2FjeS10cnVuaworNDUzMjUgOGM5OThjNzYwMTkxMGVkNGVjYTUzZThhMDMyMGViYjhhMGE4ZDFjNiBsZWdhY3ktdHJ1bmsKKzQ1MzI2IDc0ZDA0ODM4Y2QxMTI3NGZhNjE1MzgwMjA4YmMzNmJhN2M4ODdkMGEgcmVsZWFzZTI0LW1haW50Cis0NTMyNyBiNWY4OTljMTg3ZDRjNWNlN2ExN2RhMTY5ZDlhNWIzMDU1OTk0N2Y2IGxlZ2FjeS10cnVuaworNDUzMjggMTI1NjcxODllZjI1NzFmZGZhOTYyZGYzODViMmEyNzE0NmExNmY5MiBsZWdhY3ktdHJ1bmsKKzQ1MzI5IGRlYzI1OWU0ZDg5MTZjNjVkMDAwNWFlMjQwZjAzNzhjYWM1YjdlMjggbGVnYWN5LXRydW5rCis0NTMzMCAyZjNmMmUzMmRmZDlkNzZlNzE5ODYzZWUxNWJlYjAxMTk5MWFiY2Q2IGxlZ2FjeS10cnVuaworNDUzMzEgN2RmMGM0NGYzOTg2MjM2OThkY2YzMGZiOGU3MzcwNDFjNzllODYxZCBsZWdhY3ktdHJ1bmsKKzQ1MzMyIGI2MzE5YTY5OWRhYmExZDU5ZWU5NjAyYjk0OTAwYTMyNDA4ZDUwNTcgbGVnYWN5LXRydW5rCis0NTMzMyAyYzA4NGQ4MWM5NTE0MDFkZDA5ZTAzZWFkODIxZjJmNWJmMmRmYzM5IGxlZ2FjeS10cnVuaworNDUzMzQgMDU0YWNlZGYzYzBkOTBjMTQ0MTliOWRlMDE0ODBhMThkNDRiYjkyYiBsZWdhY3ktdHJ1bmsKKzQ1MzM1IGY0NWJjMjQxZTIwMDBiMmVhMmM3ZTM2MTYxY2EyMTU0ZWU3MTVlZDkgbGVnYWN5LXRydW5rCis0NTMzNiBiMWM2YTM4NjRiMWU4YzE2OTA4ZWE3MzBjOWRmYWNkMDMyMmU3NDhkIGxlZ2FjeS10cnVuaworNDUzMzcgMDY3OGNlOWZiNmIyYjExMTBmYjZiNjY5M2UyMzk2YWIxNWM2NWYwZSBsZWdhY3ktdHJ1bmsKKzQ1MzM4IGE4NDBlOWJhZmY5NmNjOTcyNTZkYWMyZTVmNGQwMWQyNjYxZmY2ODEgbGVnYWN5LXRydW5rCis0NTMzOSBkMTNkZWQ5MTY1ZWM0NDE0MWYwODBhMTY5MTk1NDAwNmIyZTNiNGZhIGxlZ2FjeS10cnVuaworNDUzNDAgNjY2NzZhOGVjYjUyY2U0YzAzMjBkMDVjZTQ4Njg2YmYzMmFkZGZjMiByZWxlYXNlMjQtbWFpbnQKKzQ1MzQxIDVhOWZjZDY3NmIzZmU5ZWQxMDg3MWRjZWJlMWYyMzNmZTkxN2IxZDAgbGVnYWN5LXRydW5rCis0NTM0MiBiMTcyNGU5MjZlMDdjNDY5NWY0ZDBlNTViNGQ5ODhmNGNjMDA0NmJhIGxlZ2FjeS10cnVuaworNDUzNDMgNDM0MmU0NDFiMTFjY2I1NTAyOGE1YjNjZjIwMDA3M2MyZjNlYjYzNyBsZWdhY3ktdHJ1bmsKKzQ1MzQ0IGI5M2MwNTk2MGExNWZhYjZjN2Y4NmFjZmZmZWYyNDU4MmMzNWIzNDggbGVnYWN5LXRydW5rCis0NTM0NSAzNmJmZTQ2YzVjNmE2M2NiYTkxZjYzM2Q5MGMxZDMzZGIwYzc4OGMzIGxlZ2FjeS10cnVuaworNDUzNDYgM2Y5NzM5ZGU2NjAzMzM1M2MzODQ1YzI3ODFiMTNiODRhZjQxODEyNiBsZWdhY3ktdHJ1bmsKKzQ1MzQ3IDBhMjhmMTU3ODc1ZTJjMTE0NGY4OTIxNmI2MTNjMzRjZTk1MjkwZjIgbGVnYWN5LXRydW5rCis0NTM0OCA2MDY4MThjMzNlNTBmZTY3MjMwODMwZGQ3NTViNDg0ZGVmZmZmODAyIGxlZ2FjeS10cnVuaworNDUzNDkgYTQyMzFhYTMyMDFhZTFhMzk0ZWU2NDNjNWE0N2M3YzE5NGY2ODRjYSBsZWdhY3ktdHJ1bmsKKzQ1MzUwIDg2ZGI2ZGYyNDE3NDQ4ZGFhYzBhNDJmYjVkOGI4NmVhMDAwOTliM2YgbGVnYWN5LXRydW5rCis0NTM1MSAzYTM5ZWQ1OTdiNjhhYWY3NjAzMDA4YjNkNDg2MmJlODkzYWFmYjFjIGxlZ2FjeS10cnVuaworNDUzNTIgZTc5NWQ2Yzg2YTVlZGU5ODQxYTBhYWE0Y2Y5NzNhY2MxZTg3OWU0YiBsZWdhY3ktdHJ1bmsKKzQ1MzUzIDMwZDZiOWVhZjAyZGI4ZTI5ZjNmYWY2M2VhOWIyOWNkYzIzNWVhYzEgbGVnYWN5LXRydW5rCis0NTM1NCA1ODY0MDk4M2ZkNjZjNjllNzliZTkzMTM3MjVlNTdlOTc1Njc1ZWQ1IGxlZ2FjeS10cnVuaworNDUzNTUgZmU4OGUwMWZmNmRlOGI0OTI3YmQ4NzJlOTkxZWVkZGYyYTljMWRkMCBsZWdhY3ktdHJ1bmsKKzQ1MzU2IDIzZWRmMjkwYjY3NmYyMGI4ZDU1MDA3ODhlYjlhZDJhOTc3MDdkZDYgbGVnYWN5LXRydW5rCis0NTM1NyA1YTRiOTY0MTIzMmY4NWZmYzUwODk5YjE3MDk0YTNlNzM2NjZiNjdlIHJlbGVhc2UyNC1tYWludAorNDUzNTggNDEzM2U4NDFmMGNiOTFkZDE4NTI0ZjRlZjdhMWE1ZTM5YWY4OTBlYiBsZWdhY3ktdHJ1bmsKKzQ1MzU5IDM5OWIxMTljMDU4YTFiOTZjZTQyNmJlYjQ5ZWFiMDQxNjIzNGNiYjkgbGVnYWN5LXRydW5rCis0NTM2MCA1ZTcyYjBjNzQxMDBkNzUwZDNhOWRlOWYwNTg5NTE3MGQ1M2FiMjQ0IGxlZ2FjeS10cnVuaworNDUzNjEgOTUzZWIzZGMxOGU1NDMxZjEwNDY1NzIzOWViOTk3M2E3NTM2ZjU2OSBsZWdhY3ktdHJ1bmsKKzQ1MzYyIDk5NzUxMjg5ZWEwM2JhZDM1ZjU5OWU4MTVlYWJhMDY4Nzg1ODcxYTcgbGVnYWN5LXRydW5rCis0NTM2MyBiMzUwZTlkNzkxZTZlMmVmNzMwZWYyNzdlZTQ3Mjk5MzY0Yjc1ZGU5IGxlZ2FjeS10cnVuaworNDUzNjQgMWI1YjE2Y2RiZTBlMWEwYmNiYjM3NDI2ZDYyZmNjNTM0OWNkNjM2MyBsZWdhY3ktdHJ1bmsKKzQ1MzY3IDc1MWY3Yzc5YjVmZDE0NTk0MjU4YzVjMDEzZDY2M2JlNTU1OTYxNmUgbGVnYWN5LXRydW5rCis0NTM2OCBlYWM4M2ZlZWIxMWY2YzhjYjQyMjgwYWU5ODA1YmVjMjgxN2IwYjFiIGxlZ2FjeS10cnVuaworNDUzNjkgNGQ3YjIyMzdmYTA3ZjM3MWY4OWZlOTU5MDc1ZjYwZjYzZWIxZjk5NCByZWxlYXNlMjQtbWFpbnQKKzQ1MzcwIDMwOGUyZThlZDY3NjYxYTIyYzg5YjlhMTQ1OWUyYzI5OWMzNmVjYWIgbGVnYWN5LXRydW5rCis0NTM3MSA5MWFlYzQ3NDYyMTg1ZGU0Mzc0MjhhMzJlMzRjYmM5MTgwNGU5MGU3IGxlZ2FjeS10cnVuaworNDUzNzIgYWM3OWU5MDM3ZTA2Y2YzNmQyZjkzZGJiNjk0MzcwZGUxYWU1MTRhYyBsZWdhY3ktdHJ1bmsKKzQ1MzczIDcyMDQ3NDhjMjkyMTVkOGNmNGQ2NWJiZDY3ODUzODFlNzU1YjJkYTUgbGVnYWN5LXRydW5rCis0NTM3NCA3ZWU0MDY4ZTJjNjJhMjUwZTJhOWVlYzJiZjk4YmIwOTIzZGQ2ZDBhIGxlZ2FjeS10cnVuaworNDUzNzUgMjU0Y2NjYjdlZjE3Njk5ZDljODMxNjAwYmNhODdlOWM3Y2RiYTQ5MSBsZWdhY3ktdHJ1bmsKKzQ1Mzc2IGUwNTdhZjJkZmZjZWMzMThlMDdlMWMwMTEzNzA5NjFiZjYzMGY3MjggbGVnYWN5LXRydW5rCis0NTM3NyBmYmNkZjdjMGNjNzRkMzEzNWNiZTNlNDg1ZDI4Y2RlNzcxNTRhNmM0IGxlZ2FjeS10cnVuaworNDUzNzggMGEwZDg5ZDcxMGE0ZGYxNWJlNjJjNWZkZWQxMTg5ZTA1MDFhYTEzMyBsZWdhY3ktdHJ1bmsKKzQ1Mzc5IDliMjJkOGI3YmNhYWM0MzM1NjE4MGU2MGY2ZDk3NTJhMjZmNDk5OGMgbGVnYWN5LXRydW5rCis0NTM4MCBlZTU3MzQ5NzQ0ZjM3MTFhYjNkZTBlMGM2ZmFlYzJkODk2MzljOTJjIGxlZ2FjeS10cnVuaworNDUzODEgYmIzZjkwNzZkMDc5YzVmNDQzZWVjMWQ1NzJjMDg2MjllNmNjZjExNSBwM3lrCis0NTM4MiA5MTUwZTI2MGM0MTc0YTc1OTk0MDgzYWQ1ZTVhZmE0NmVkNTg2NzRmIGxlZ2FjeS10cnVuaworNDUzODQgZDcxZjI2ZTY0NDg5ZWIxZjdlZDM5NGZhODdhZmM1YWRlMDIzNTYwZSBsZWdhY3ktdHJ1bmsKKzQ1Mzg1IDc4NmQwMzU2ZGU1MTNhMmZiMzRmMWUwMjQ4OTcwYWVkZmE3MTA1N2EgbGVnYWN5LXRydW5rCis0NTM4NiAyMzBmZmY2ZTA2MThkMjQxYjFlYzI3NmI2OGVlN2Y3MjMwYjhlYTBmIGxlZ2FjeS10cnVuaworNDUzODcgMzdhOGViNzRjNTA0NjUxMzZjNTU0NmE5OWFkZmM2ZjkzZDhlN2E4MSBsZWdhY3ktdHJ1bmsKKzQ1Mzg4IGNjYjNhZjQ5YmNiMzAxYzcyNWZhODU5MWEzNTFiMjYxOWVkZDJlYmMgbGVnYWN5LXRydW5rCis0NTM4OSAyMzNiMTBlY2ZjZWY2NjJlZWI5ZjFjYTk0YTUyYmMyMjY3ZTU3MWQ0IGxlZ2FjeS10cnVuaworNDUzOTAgOWJlZjFkZWJjYmFhN2Y3NzY5NTMyNGEyOTE1ZTIyMmJiM2E5OWM2OSBsZWdhY3ktdHJ1bmsKKzQ1MzkxIDkxZDE2YTg3Y2JlOGVhNzZlNzI4MjViOTdmMDNkYjhmM2RjYWMxM2YgbGVnYWN5LXRydW5rCis0NTM5MiBlYzk4NmFhYmUxZmRlZjI3MTAzYWZhNTE3ODNhOWQ5ZWZiNzZhMTEwIGxlZ2FjeS10cnVuaworNDUzOTMgYWZlNTZiOWI2NjRiMjQxNzc2YzU0NTM4ZWJhZTJmOGQxYzA1MDkwNyBsZWdhY3ktdHJ1bmsKKzQ1Mzk0IDFkNWE0YzgyMDYxZTY4ZGEzY2QxZDhkODI5MTM5MmE4ODcyOTU3YjAgbGVnYWN5LXRydW5rCis0NTM5NSBkN2RjMDA4NWRkODVjOGM0NjQ1MDA3MzNhYjNjOTgwZjkyMmEwZTQ4IGxlZ2FjeS10cnVuaworNDUzOTYgYWY0N2RhNWU5Y2UxNGRiNGFjZTIyMGFiOWZkYTA4ZTA0OGFlMzA5OCBsZWdhY3ktdHJ1bmsKKzQ1NDAxIGNmNzFjMzgxNGIwYjMxNzdjOWMwMjkwOTQxYWMyYjliYmVhMDA2NGEgbGVnYWN5LXRydW5rCis0NTQwMiAxMzY2YmZhMDg0ZWU3MTcxYTRmMDI3ODFiYmU5NzliYTg5ZGRlNWM1IGxlZ2FjeS10cnVuaworNDU0MDYgODU2YmVlMTUwMGJiY2RlYWMwMTY2YTYzMDllMzdmMzgxN2FmMDdmNiBsZWdhY3ktdHJ1bmsKKzQ1NDA3IDY0NDFmNmZhNjU3MWE3ZDJiYTI2NTBmM2YzNGU2ZTkxMzgwZWMzNjMgbGVnYWN5LXRydW5rCis0NTQwOCBiOTQwYWM0Zjk1NTg2YWJjMGE3ODRhYTM1YTQyYzllZWFlMmQ2ZTlmIGxlZ2FjeS10cnVuaworNDU0MDkgMzE5MjlkYTBiMDVhZmExMjk1NDYxN2U0MTBlMzg1ZTY2YmY0OGU1MyBsZWdhY3ktdHJ1bmsKKzQ1NDEwIDZlOWFiODdjNjA4Y2Q5MDU1MzdhOWZjYjA3ZGQ1MjE5Njk2NjAyNjYgbGVnYWN5LXRydW5rCis0NTQxMSAyN2E2MzljNDQ3MWE0ZTAwNzNiNjA5ZDBmNmZlOTFlZTY1YzMzMTM2IGxlZ2FjeS10cnVuaworNDU0MTIgNjJjOTAzOGE1NzhhOGE5MjI3ZTcyYzBiZTExMmM3OWE0MjFjNDJmMyBsZWdhY3ktdHJ1bmsKKzQ1NDEzIDU4OGY5N2IyNGJmOWUxZmY2NTY3MDRhZDQzOWQyNTIzZmY2NWQzOTAgbGVnYWN5LXRydW5rCis0NTQxNCBjNmRmNWU3OTU0MjMwMzljMzg0OGVhYmM1NzkxMTI2NjE1YjBjYmEwIGxlZ2FjeS10cnVuaworNDU0MTcgNTMwNDA1OWU3ZGUzYjFiMzNiMjQwMmZkOTA5MTIyZGQ5Y2RhOGRmMyBsZWdhY3ktdHJ1bmsKKzQ1NDE4IDliMTZlODE2MWRmNzc3ZDEwMTg2ZWI5ODYzNTg4NWNiYTJjMjAwNTIgcmVsZWFzZTI0LW1haW50Cis0NTQxOSBiZmM0OGFkODFlODA0Y2IyNWQ2NTkzMjk0NjcyMGY1ODg1YzcyZDg2IGxlZ2FjeS10cnVuaworNDU0MjAgOWY4MjEwMzI1NGZhNGViZWM1MTc4YzQwYWJlYTAzNjBhMTMzNTMyNiByZWxlYXNlMjQtbWFpbnQKKzQ1NDIxIDRjNmQ0Njk4YTExNWRjNzc3NDUwMmVmMWE1MjcyNTk0ZDgwMmJiZmEgbGVnYWN5LXRydW5rCis0NTQyMiAwNWFmMzlhOTA3NTQzNWRmYjFmYmE0NjZhOTA5YzBmM2M5MzBkNTBmIHAzeWsKKzQ1NDIzIGIwMjcwYzY4MDQyZWQ0Nzg0YWNlYzdhZTAxZjEwODY2N2I4NDkxNmEgcDN5aworNDU0MjQgMGExM2E5NjU4NWMzZDM2NzYyOTA2MmRlYmVkYTIwYzcyMjRmNzg3NyBwM3lrCis0NTQyNSA0Y2MzNGFmMDE5ZDJjMjYzYjc2MGZhMWU4Nzk1NjJiNmY0NzUxNTEzIHAzeWsKKzQ1NDI2IGZiMmFmZjE4NjJlNDZmMThkMmNjYmIwMmFkZTU1NTU2YmM4NWU2Y2YgcDN5aworNDU0MjcgOGRhYWU3YmEwNzhhNTU0NTNhYmM0ODA4NTExYjg1ODM1MzM1MTNiMSBwM3lrCis0NTQyOCBhNjdmMjE1OGQ2MWIxYWVhZmY5YmMzNzhhNTdhNzU5ZWUzNjYyMmI3IHAzeWsKKzQ1NDI5IGM0N2NjY2NhMGJmNDM4NmY4NWUwNmQ4NTQ1MDA0YzM5YmZlNGFlZWYgcDN5aworNDU0MzAgN2NhZTYyMmVkY2M5NzhkNDFkMzE4YzNiOTczMmJhNjBjZDA4MjlkNCBwM3lrCis0NTQzMSBhNWM5NzdlNmY1ZGExNDhiZTc4MzZjOWQ4ZjVkNWMwMGJkYmQ4NDFjIHAzeWsKKzQ1NDMyIDM1M2ZlMDZkYWI1YjM3MjVjN2E1MDRmYzVlY2EzY2JkZDc2YzQyNGMgbGVnYWN5LXRydW5rCis0NTQzMyA2MzZjYTgwYThjYmVkYzcwNWJlNmM0N2ZkMDE1OGQxODkzZmUyOWVkIGxlZ2FjeS10cnVuaworNDU0MzQgYTU5MDJlMGVjMDdjOGJhODY5ZTliNzc1Yzc5NGM1MTBkNTgxODEyOSBsZWdhY3ktdHJ1bmsKKzQ1NDM1IGQxNTQ3NDI2YWI2MTA2ZWNhZDJkM2JiMGVmMzYwZjQ3ZjZjNzQ0YTkgbGVnYWN5LXRydW5rCis0NTQzNiAyNDAwOTg5MzVjZDVlYmQxOGRkYTMwZDFmZjQ5ZDhlMmI4ZDFlZWM3IGxlZ2FjeS10cnVuaworNDU0MzcgNjMxNDVjMDZkZWVlYjQ4M2YzNGJmOTI4MWMwOWM0YTFkNmE2ZDBlYSBsZWdhY3ktdHJ1bmsKKzQ1NDM4IDFkMDIzNzRmNGM3ZTFhNWE0NjIyMWMwNmQxZTg2NzUxZDk5Zjc0ODAgbGVnYWN5LXRydW5rCis0NTQzOSA3ZjcyNzkxZjBhZWMzMmY2OTA0Nzg3YTcyYjk3M2E3NzliN2Q2NjI3IGxlZ2FjeS10cnVuaworNDU0NDAgYWJmODI0NjFlNmI0ZGY1MWY1MTE3ZjEyNTM2MzE4NTJmMTZjODVhMyBsZWdhY3ktdHJ1bmsKKzQ1NDQxIDllMzgyZjJmNDM5ZDk3NzUyMzA2NmU2ZjVhZDdhODEwYjdmY2QxMWMgbGVnYWN5LXRydW5rCis0NTQ0MiBiNzM3M2JjM2IwOWYzMzkyYmJhMzI2MmQxMmNlZjcwYTVlNzE0NDQ2IGxlZ2FjeS10cnVuaworNDU0NDMgN2IyZTQzNmE0YTIxMWMyZTU3YmY0YTg0YmUyMWYxYTVjYWNhYzliOSBsZWdhY3ktdHJ1bmsKKzQ1NDQ0IGUxMzg4YWJhOTg5NjIzY2EwMTZjNjc5ZjRiNGM2YTZjNzVmMzRmNmQgbGVnYWN5LXRydW5rCis0NTQ0NSA5Yjc4ZGMwN2IxNzBjYzY2NTA1OTQ5NjAxNGRmMTAzNjAyMzE0ZGY3IGxlZ2FjeS10cnVuaworNDU0NDYgMzUzYjU5NjUxZTQ1MGUxNDI2MjQwOTQxNDBlNGE0NDMzMmY0MjQyZiBsZWdhY3ktdHJ1bmsKKzQ1NDQ3IDllYjRkYzFjYzgzZTdhNjMxMjRhYjhjYzgyYzhmY2IwMzkzNzIzZTYgbGVnYWN5LXRydW5rCis0NTQ0OCA4MzNmMzg0ZWJkNDFiNjMwMmYyYjcxZGQzNzZkNjI4MGY4NjRjNTkxIGxlZ2FjeS10cnVuaworNDU0NDkgYTM5Y2M4NGZmMTg1NmM3YWNjNWJjNzgxYzY3ODYyYjcwYzcwM2ZmZCBsZWdhY3ktdHJ1bmsKKzQ1NDUwIGI3YTM5NzJlOTkxNTcyN2U5NzNhODQ2ODRmMjBjY2FkNWU0ZGEzOTUgbGVnYWN5LXRydW5rCis0NTQ1MSA5NmFkZGFhMjU4Njk3MGIwODA5OGY4ZGVhNWQyMjczZTA3NjVmMDdkIGxlZ2FjeS10cnVuaworNDU0NTIgMGE1NGMxNWFhMTQzYzRkNjAwMjA4MTM2ZDAxZTc3NmI5ODY3YTY1OCBsZWdhY3ktdHJ1bmsKKzQ1NDUzIGYxYzk4NTNkZjBmN2Q0YWU2YTRkYjQ5N2MyZWJhYWY3YmJkMDBmNmEgbGVnYWN5LXRydW5rCis0NTQ1NCA3Y2MzMTUxNmY4MjU4ZmYxNjI4ODAxMDdkZGJkM2FjNmVhNzQ3MWY5IGxlZ2FjeS10cnVuaworNDU0NTUgMzhkMTdkNTFlYTk1ZDQ0ODc1MDQxYjg5YzA1MDE2N2YyYzc1MTYwYiBsZWdhY3ktdHJ1bmsKKzQ1NDU2IDAxZTUxZjVkYjg4MWI4NWJhMWU3YWM5ZGQxMzY1OTEzODQ1OWVhYzQgbGVnYWN5LXRydW5rCis0NTQ1NyAzMWRjYzMxMTExMzNiZTcwMThkYzA0ZjJkMjFmN2E4YWI2MWJjY2Q3IGxlZ2FjeS10cnVuaworNDU0NTggMDg0ZDE4OGU3ZGJlZjdhZWQ2OTlhYjI3YjBjNzA4ZmI2OTc5NjViZSBsZWdhY3ktdHJ1bmsKKzQ1NDU5IGI5MGE3YzYwMjFiY2M0MjM4MmRhNjg4ZjRmNWFkMGI0NDI2ODMxNDcgbGVnYWN5LXRydW5rCis0NTQ2MCA2MDRjOWJjYjMwNmM2ZDI2YmQzMWIyMmI5NjY3OWYyMDhhY2QwYjJiIGxlZ2FjeS10cnVuaworNDU0NjEgNWJiNmU1NGY5NDA4ZjYxNzZjOTA1OWQ3ZjNiOWQ2ZWRiNjlkMjUxYyBsZWdhY3ktdHJ1bmsKKzQ1NDYyIGQ4YjIzYmE0YTI3NGVjZjRlZDc2ZGRjNThlZjAwMzkxNDJmMmJhNzggbGVnYWN5LXRydW5rCis0NTQ2NSBiMDA0NGJiNGRmMmFlZGNmYmYzMTFkZjU5OTFkOWNkYjVkNTJiYWI3IGxlZ2FjeS10cnVuaworNDU0NjYgZDRhZTVhMjYxNTc4ODJlMWQxMGY3OWE0MjY2ZDlmNWY5MTliMDVkOCByZWxlYXNlMjQtbWFpbnQKKzQ1NDY3IGJlMjM4Y2IyNmQzMjVlMzU4MzJkN2U5ZTFhZTUwZGNjMTg1M2E0NzIgbGVnYWN5LXRydW5rCis0NTQ2OCA3YmJiOWI1ZjdhZGNmZDhlMTk5NDQ2NTU0MWI3ODQ3OGY4ZTYyYzM5IGxlZ2FjeS10cnVuaworNDU0NjkgYjk1YjVjMzNjYjNhNTMzMWJlYTdjNWFjNWY3ZTMxOTMwMGE1ZGFjMyBsZWdhY3ktdHJ1bmsKKzQ1NDcwIDMwMGJmMWM0ZGVlZGU3YzFkM2VhZjdjNzVmZTkyZjM1ODhkYWY2MTkgbGVnYWN5LXRydW5rCis0NTQ3MSBkZGY4YzkxNDVmMTM2M2U4MmY4YzQzYzdiMGEwOWZiZGQzYTkwYWU4IGxlZ2FjeS10cnVuaworNDU0NzIgYjVmY2VmMTU4MTMzYTk3NmY2MWZhYmU2NTJmMzgzMWI1NDZkM2Y5MiBsZWdhY3ktdHJ1bmsKKzQ1NDczIGUyMzlkNzQ1YzY0NzQwMzc2MDBjYTE0ODNkYTJjNjVmMWM4YTdkNTMgbGVnYWN5LXRydW5rCis0NTQ3NCAyYzc2ZjcxYjIyM2RlNzVhODhjYWY5ZmNlNjcxMmUyZjJkOTI1MzM2IGxlZ2FjeS10cnVuaworNDU0NzUgNWM0NTMzMDJkNWY2YTBlYzQyMTQ5YWE2NmU3YzVkNGU0MjE4Y2MwYSBsZWdhY3ktdHJ1bmsKKzQ1NDc2IGVjMDBiNzk4YWI1NjllYWU4NDdlYjZmNmFjODdmMTc4YjBkNThlYmEgbGVnYWN5LXRydW5rCis0NTQ3NyAzMzUyMjM0MjIxOTljZTQzMzI4Njg4MDZmMmE4MmZkZDAxMTViODMzIGxlZ2FjeS10cnVuaworNDU0NzggZGRhN2NjODhjMDVhYWJjMDYxYjliOTVmYzgxOWFiZjQxNTgzMTFkZCBsZWdhY3ktdHJ1bmsKKzQ1NDc5IGMwNDEzNmE4MDYyYTFkYmQ1MjVmODNiNmFlYTYxYmRjNzBjOGIyOGIgbGVnYWN5LXRydW5rCis0NTQ4MCAzODRlOTEyMDI1NzhmOTE3MDVkZDEwYTk4MzJlYzM0MmY0NzI5ZjZjIGxlZ2FjeS10cnVuaworNDU0ODEgZTgxOWI4NmExNTA2YTAzNzM1MTNlMzI2YjJjMjkyYWZmOTE5ODliMyBsZWdhY3ktdHJ1bmsKKzQ1NDgyIGM5NGQ3NzA1MDg1YTU0NWMzZjgxZDc2YTU1ZThmYjJhY2E4ZDg1NDEgbGVnYWN5LXRydW5rCis0NTQ4MyAxOWMxYmFjMTViZGVhMTQ4NzMwZDQ5Y2JhMzA1NGJjOTczZDVhMDQwIGxlZ2FjeS10cnVuaworNDU0ODQgYjM3NDE0MGU0NjdkMmU5YTNmYTFiMjU5ZTc4NWFjZmFmNDE5NGQ3NSBsZWdhY3ktdHJ1bmsKKzQ1NDg1IGY3OTkxY2U0MzFlNTJlZjY3MDdhNWU5Y2I1YWIwMjlmNTBkY2Y2MjcgcDN5aworNDU0ODYgNmYzNWY3YmUzNmMzZDQ1Zjc5MzgxMzZlZTc3NDIxOTQ1MTlkNjhhMCBsZWdhY3ktdHJ1bmsKKzQ1NDg3IDgxYmY0ZDM3OGI5ZTY3OWQ3MDQzYjZiMzdmYjhhMmFkMmFjMGQ3N2QgbGVnYWN5LXRydW5rCis0NTQ4OCA3MDJkNTk3ZjJmNjg5YzJjZmQ0YTliZWY4MDcxN2MxMWY3NzkzMGJiIGxlZ2FjeS10cnVuaworNDU0ODkgZjExN2E1ZmRlNGU1OWJkYWVjYTIwZTQ4MjBkNGJkZTQ3ZGEwMTVkMSBsZWdhY3ktdHJ1bmsKKzQ1NDkwIDRkODIwOTNlMmUxOTc4MzY3MTY2ZDJlMzg4NzMwNzJhODkyNjQ4NWEgbGVnYWN5LXRydW5rCis0NTQ5MSBmYmJjMGJlZmZmZjc3OGZhOWEzOGE4YjkwNmFhOThlZjk0YmI0MDhmIGxlZ2FjeS10cnVuaworNDU0OTIgMTlkMjQ3N2MxMjgzMTY4YjgxMzUxYzllOTU5NjBkYjM4ZjUyNTgwNiBsZWdhY3ktdHJ1bmsKKzQ1NDkzIDZjZmU0OGU2NzJjNGUwOGI4NGFmNDc5ZjlkMDUzYzc0YjYyM2FiMjIgbGVnYWN5LXRydW5rCis0NTQ5NCBlZmU3NDkyMjViYWUyYzY1MmY4MTk4YzU1ODgwYmYwN2FjMzVkZjQ4IGxlZ2FjeS10cnVuaworNDU0OTUgZGY5ZWNhY2IwYmY2N2MwYTUzODQyY2E0NmZkNmViZjhiYjdhYzJmZCBsZWdhY3ktdHJ1bmsKKzQ1NDk2IDVmNDU3ZjQyNmQ5MTZjMTk5ZGFiZjFjYjUyMmRiMzY3OWVhMWU5NDIgbGVnYWN5LXRydW5rCis0NTQ5NyBjY2MwYjU0MTI3OTllYTkxMWE5MzZkN2E5MzY0ODM3YzA2MmI2ODVjIGxlZ2FjeS10cnVuaworNDU0OTggMDg2ZDg0MzRjN2Y3ZGMyNDg4Mjk2ZDBjODcwNDFkMzQxZGFhMTUwYSBsZWdhY3ktdHJ1bmsKKzQ1NDk5IDU5OTdkN2NlZDE3ZDdkZmYzNzhmYjMyMTJmODE2N2M4ZjAyZGZmZTEgcmVsZWFzZTI0LW1haW50Cis0NTUwMCA2ZDhlM2U2NTk0N2YyYTI1OWJjMWUwZDk2Y2M2Y2JkNmY1M2RlN2Y2IHAzeWsKKzQ1NTAxIDkyNzQ4NzlmMDQ4NDI4YjhjZTY4NTY5MmIxZTEzMWRhY2M2OTcwMzggcDN5aworNDU1MDIgODU2OTVkZTYwNDllMDEzZDA0YWY5ZGUzYjExZTU5OGY3YzFhMzRhMCBsZWdhY3ktdHJ1bmsKKzQ1NTAzIDg2MjVlNGE1Y2U0ZDBiZGE0NTIxNzg5MTQ3YmFjNjA0YzE3NGYyMjQgbGVnYWN5LXRydW5rCis0NTUwNCAyMGNiMTNiZGYxZjAwOWQ1ZTljZjdkNjJhN2Q3MDgxMjEzMDY2NDQyIGxlZ2FjeS10cnVuaworNDU1MDUgYWNiNjE4MzZmN2ZhYWQ5ZDEzNmM4ZDA0MWYxNjAyMGYzMTk1ZTg3MSBsZWdhY3ktdHJ1bmsKKzQ1NTA2IGNjOTE5MjUwNWI0MDViYzljNzIyNmZkYmQyNTZhZjVlYzI3NTNmYjIgbGVnYWN5LXRydW5rCis0NTUwNyAyZTMyNzZkYzIzMWY3NjA1ZTNkYjMzZDE0M2UyZWQ1MGM4ZTQ1OWJmIGxlZ2FjeS10cnVuaworNDU1MDggNjFhYzFlMzIyZGE3NmQ5N2VlMzA3ZDE0OWU3ZmIyMjA2NjUwMGRlZiBsZWdhY3ktdHJ1bmsKKzQ1NTA5IDZlYjg2YTcxZjVjODE2NzNjYWQyN2ZmMjk1YmY5ODU0NTNkZTRkNjUgbGVnYWN5LXRydW5rCis0NTUxMCAzMTM1NjQ4MDI2YzRhZWQ1MjFmMmRkZDRmYmEzYzdiYTJmN2M3Y2MyIGxlZ2FjeS10cnVuaworNDU1MTEgM2VkZTE3NWVhZDM3YTg5OTZkNTRkMjkwMmQ0Y2JlMGVlOWNmYjMwYSBsZWdhY3ktdHJ1bmsKKzQ1NTEyIGE1ZTg3OTg3Y2FlNjNlYThjMGI0MTNiN2NmMTkwM2Q2ZGUwNTNmNDIgbGVnYWN5LXRydW5rCis0NTUxMyBlMjU0YjkyMmM0ZjM0ZWYwZDFiOWQ0MDM2MGYzYmZlNDFjYzgwNjFjIGxlZ2FjeS10cnVuaworNDU1MTYgZmM1ODk3NDE4ZjMxYmQ0ZDY2ZGJkYTZmZTdkZTgyZDg2MGRjOWQzYyBsZWdhY3ktdHJ1bmsKKzQ1NTE4IGY1ODMxZmY3Y2ZiZDJiYWY0OGY2NDc0OGEwNzEyMGEwMmY4NzhlYjggcmVsZWFzZTI0LW1haW50Cis0NTUyMCA0NTc3YjI0M2I5ODEzNzhkZmNhMzI0MTA4ZTQ4MGQ3ZmQyZTc4ZmVjIGxlZ2FjeS10cnVuaworNDU1MjMgYmUyYTdlYzQ2MmZlNDE3OWYyZDQzMTMzZWRiZDkzYzJmNTc0YzBmOCBsZWdhY3ktdHJ1bmsKKzQ1NTI1IGYwNDgxMTZhYWRlMDU3OGNkMmNkODdlODhhY2MyNThlMmRlMzgwNmQgbGVnYWN5LXRydW5rCis0NTUyNiBlODkyYjU0NDI4MzUwOGFlZDU0NmQxYWUyOWM1ZjFiNjYyZTU0ZjRhIGxlZ2FjeS10cnVuaworNDU1MjcgZDgyZGNlZDZmMWZhNzQwN2EzZWExMzFiNjM0ODFlODQ5OTc3NzU2MSBsZWdhY3ktdHJ1bmsKKzQ1NTI4IDE3NDA2MmY3YzFiZTAwNjhhOWJmNTc4YjhhNWIzMjgxMmIyZjYwZmMgbGVnYWN5LXRydW5rCis0NTUyOSBlZTkwYWIyNjA4NmFhNDM1Mzk4NmRiYmI3N2FmMjQ3ZmQxOWIzMjc2IGxlZ2FjeS10cnVuaworNDU1MzAgMzFiMGNkYTExYTZkNmVjOTIxN2EyNjVlMGZjYzg1NTMwYzk1OTFmOSBsZWdhY3ktdHJ1bmsKKzQ1NTMxIGQ0ODgyNDRkZjI4ODRiMTQ1ZGYzODAyYThhMjQ4YmJmZTVhZmVlZmEgbGVnYWN5LXRydW5rCis0NTUzMiA2Mzg2NDQ0NThmYzc1MjljNmIzODlmN2ViYzdkZWJlZjU1NmUyNDA4IGxlZ2FjeS10cnVuaworNDU1MzMgMTdjY2NhNTkwYWU5Mzc3NWU4MGIwMGI2MWNjZWM3OWM4YjRmZTBhNiBsZWdhY3ktdHJ1bmsKKzQ1NTM0IGNjNDg5ODVjMzI2NmM0OGQxMzczZjU1YTE2OGNlMzU3ZTg5MDAwMzMgbGVnYWN5LXRydW5rCis0NTUzNSA5MTNkMzc5MGZkOTllOTFmYTk1MWIzMjAwNGNmODhlODI0NjMzYmI3IGxlZ2FjeS10cnVuaworNDU1MzcgZTBhNjAzMWRmN2MwZWRkZjM1MWU2ZDdiMjY5MTdiMDk5NzY0N2YxNiBsZWdhY3ktdHJ1bmsKKzQ1NTM5IDBjMDEyMmJkMGVhMzFkNmM0ZTY5ZjM4ZjkxM2MxMWVkMTNiZTAyYTIgbGVnYWN5LXRydW5rCis0NTU0MCAyNDBmZTQ5NWQxODY3MGEyMjJiYzI2M2JmZTVhNzk3Y2FlOWYxYWQ2IHJlbGVhc2UyNC1tYWludAorNDU1NDEgNDg4ZmJiNGNhOGU1MTRkNmZmMGNkOGE0OTNhZTg4M2MwNDcwYTNiNyBsZWdhY3ktdHJ1bmsKKzQ1NTQyIDg3MjViOTA3YWNiYmZlZGZkZmYyZDQ5YjNhYWYxNDI3MGJlYWJhM2QgbGVnYWN5LXRydW5rCis0NTU0MyAzNWYyN2JiZDlhZDhhMmRmNWY3NzM3MmJjNTkyMzQyZjExNTcyZDk3IGxlZ2FjeS10cnVuaworNDU1NDUgZDY0YmFkYWM2Y2YzMTI2NWM5YWU2NTc0ZmIxODZkNWM5NzlmOWFhYSBsZWdhY3ktdHJ1bmsKKzQ1NTQ2IDEyYWIyMGNkN2MyNzNhMWMxYzMzNmVjZDkxZTJhMzNlYWQ0YjMyNzQgbGVnYWN5LXRydW5rCis0NTU0NyBkZDQxNTZjMzY3MDNmYWNkNzI2ZGZiNzQxZjE0ZTNkZTFjNzAwYmUwIGxlZ2FjeS10cnVuaworNDU1NDggNDFmMTNiNTZkYzMyYmNlODQ5NmY3MTUwMTcwNTg0MmY5M2Y5ZTk5ZiBsZWdhY3ktdHJ1bmsKKzQ1NTUwIGViZTU5Y2QxODI3MzAyZGVjZTgwYzA5NzA4ZWU2NDdmMjk4MzgxMjYgcDN5aworNDU1NTEgMTkwNDVjNWYwYmEyZGFjNjM4NTg0NWFhYTgyNzkxMWM2Y2RiZThjMCBsZWdhY3ktdHJ1bmsKKzQ1NTUzIDgwZTAwMzQ5NjQ3ZDBkMzYxNmIxMDYwZTczNGFlMWJmNGRmY2U3NTcgbGVnYWN5LXRydW5rCis0NTU2MCAyOTI1N2VmNmFiZWI3ZTAxZDEzOGJlMWIwOWYyMzVmOTIxMzY3NjYxIGxlZ2FjeS10cnVuaworNDU1NjIgYjdkNDcxZTEyMDQyNzZhZjI4ZTRjZTI4ODE2MGUwOGI1OTlkZjdiNyBsZWdhY3ktdHJ1bmsKKzQ1NTYzIGRjOGVmZDcwYWI1Njg2ODEwZjFhNjY5NTc1MTdmNDMxYmE0ZmRmZjUgbGVnYWN5LXRydW5rCis0NTU2NCBhY2Q4ZmJhNjE5NDMwZjgxYmVkMGFmODRhNjJiNGQxZTMxNmNjNjk1IGxlZ2FjeS10cnVuaworNDU1NjYgYTRkNWNlZmMyZGU0MDg1MWM4MDcyMmI4ZWIzMDU2OTE0NDA5NGVlZCBsZWdhY3ktdHJ1bmsKKzQ1NTY3IDc0ZjQ1OWEyODliZTlkZDBiMmY4ODQwYzUyNzc5MGQ2N2ZmZjA5ZDYgbGVnYWN5LXRydW5rCis0NTU2OCA1NjRlYzk3MzY1ZjlkOWZhY2RjMzRmMjI1ZjdkMzdlYWE3ZGQ1YWIwIGxlZ2FjeS10cnVuaworNDU1NzMgZDRhZTljMDMyNWIxYTc5ZmQ5MzllMjZmNDQzYzJkNzEwZmMwMWU4ZCBsZWdhY3ktdHJ1bmsKKzQ1NTc0IGU5NmQxY2FkNDY4MjA1YTM3YzdjMGJiYjNiYjIzMzMxODU5MzZiNWYgbGVnYWN5LXRydW5rCis0NTU3NSA0N2FjNTI0ZGI4YTdjODNlOGRlNGE4OWExNDFmMjA5ZjM1YTdmNDk1IGxlZ2FjeS10cnVuaworNDU1NzYgNDc3YmY5MzBmM2U3ZjRlZDExZTVhYmJiNGQwMGE5ZGY5ZGRiMjE0YiBsZWdhY3ktdHJ1bmsKKzQ1NTc5IDc1ZTcwNmMzNmM4NjRhMTQ3ZjZlMzRjYWI2MjMyNmFkNGQwZjMyZGYgbGVnYWN5LXRydW5rCis0NTU4MCBkM2U1Yzk1NjU4MWNlMmVjZTgwNjc0ZGQ2YjExNzZkMGQwOTJlYjQxIGxlZ2FjeS10cnVuaworNDU1ODEgYjBmMzdmOWZjNjNmZjliNjcwNGYzZThkOGMwZDg5MGRhM2IwMzBmMSBsZWdhY3ktdHJ1bmsKKzQ1NTgyIDRjODk0NTUyYjk2ODBmNTViOWM1YTM3ZWQyYjdiNjVlYTA5MjBjNzIgbGVnYWN5LXRydW5rCis0NTU4MyAyZmIxNmE2Mjk0MTU3OGRiMDc4N2YxZmRhNjU4ODUwOWQzMDYwNjUyIHAzeWsKKzQ1NTg3IGFjMTI3Y2Q4NjZhMzEyZjJhM2JjNzFhMzE4OTRjMmUyZTMzMzY0ZjkgbGVnYWN5LXRydW5rCis0NTU4OCBjNDM0MWU2YzZhMDNkZTRiOGVkY2ZkMzlhNThiZGJlOThmOTMyZTg4IHAzeWsKKzQ1NTg5IGE0NzExN2ZhM2NhODhjNDYwYjVlZjI5MjMwYjcwY2E2ZWU1Zjc3NWUgcDN5aworNDU1OTAgYjBmODgxNDNkYzVjOTUwMzM1YjM4ZWYyMDUzNmEzZjg4MTYwOTc1NCBsZWdhY3ktdHJ1bmsKKzQ1NTkxIGQzNWRiODRjYTA3MmNmNDlhZTIzZjk3NTMxNDk0Y2JkNjRlODE5ZTkgbGVnYWN5LXRydW5rCis0NTU5MiBiOWFhZDZhNzQ0NTJkYzViNzEwZWI1YWViZTM4YzUzOTM1MzhjODZhIHAzeWsKKzQ1NTkzIGE0YzcwZjM5NjhiZTdkOWY4MGE2M2EyYjI2OGUzNzU1ODMxMjM1NDUgcDN5aworNDU1OTQgOGRmNjA3OTYzMzU1OGU0MmUxOTc0MTA3MTNhZjAyMGIzNzVmMjc3MyBwM3lrCis0NTU5NSA2YTQ1ZjI2ZWE2MTllNTcwNjkwMzcwZmY4NTU4ZWFkZWM4NWYwMmZkIHAzeWsKKzQ1NTk2IGI2OGQyMTM2NDkxNjcxM2I1M2NiZjY3NWYyMTUzNzYzODg4MGIyMTQgbGVnYWN5LXRydW5rCis0NTU5NyBmNzMxODU5ZTliM2I5MTI2NGIzMTJhODJjMzEyOGQ2NmE0MmQ4ZmZjIHAzeWsKKzQ1NTk4IDk2YWE1Y2U4NjQ0NTgwN2JlNDczZmU5MzM1MDU5YjFlZjViY2QwYzcgbGVnYWN5LXRydW5rCis0NTU5OSA3MDJkODVkOTQxOGE3NDU2MDNhZmE4NTAwYzA0MzY5MGJmNjM2MWNlIHAzeWsKKzQ1NjAwIGIyNzI0YTEyZGRjZTRmZmM2ZjM5MjY1OTYyNzJjMjJmYjRmN2ZkYjIgcDN5aworNDU2MDEgNzIyNDUxNTkyOTllMDE1M2FmZTJiYzE5N2Q3N2YxMWI1MmM4OGYzZSBwM3lrCis0NTYwMiBiNDk4NDNhM2ExZGY0YTRiZjUyZDIyNTdlYTAwOTQ0OTkzZWU4ZTk1IGxlZ2FjeS10cnVuaworNDU2MDMgOWJiNmUzNWMxY2M0MThiODI1YjQ1Nzk4MTZiOGQyMGMzZDE2MTA2NSByZWxlYXNlMjQtbWFpbnQKKzQ1NjA0IGMyOGY3NGJlZDgzYmY4NGJkYTBmNmM0YzgwOTBjNjhiNWEzOTNhNzggbGVnYWN5LXRydW5rCis0NTYwNSAzMDFjNGVkZTQ5ZGQ2ZTYzM2YyOWRkN2FmZTUxMDIxOTBlMjhlZDVhIGxlZ2FjeS10cnVuaworNDU2MDYgNWJjOTE1ZmVlZDE0MGExZmI4MWNhYTA3Y2VmYzNhODY1ZjI4NGFmNSBsZWdhY3ktdHJ1bmsKKzQ1NjA3IDgxMDI1NTdhZmRmMTc2NmUxNGZiMTk5YzdiY2E5YzMzNTRhNjI1MmMgcmVsZWFzZTI0LW1haW50Cis0NTYwOCA3NDlhZDJhMzY5M2YyMmJlN2QwMDM1YjJiY2I4ZmYxMTJkZTQxODNhIGxlZ2FjeS10cnVuaworNDU2MDkgZDYyYzlmNjQ2NjM4MWU2N2Q5YTBjNTA4NTE2MjQxNjkyZTA2YTVkYyBsZWdhY3ktdHJ1bmsKKzQ1NjEwIGJkNzg1MzM5NGM3YWE1ZmEyOTZhMGExMjJjZTlhYjQ2OTBkYTYyNGMgbGVnYWN5LXRydW5rCis0NTYxMSBkMThhMmM4NjY2MDk1YTM3ZWVmOGRkNmY4OGUzMWM1NDI4YmFiZjhiIHAzeWsKKzQ1NjEyIDczZDhlODk3NzdlMzMwMjc3ZWE0ODNhZjQwNzQ5ZDczZDE0N2QwMTcgbGVnYWN5LXRydW5rCis0NTYxMyA5MWEwOTgxZWM0YzJjMTA1M2U5NjgzYzM4ZDI5NDFkZTQyYWE1NDVlIHAzeWsKKzQ1NjE0IGY5ZWNhMTMzY2Y4ODY5Y2M1ODIzZDdlNzVmZmY4ZjZiYTA1MDAwZTIgbGVnYWN5LXRydW5rCis0NTYxNSBhMzEyMDJjOTQ4NWRhY2ViNmQzZGY0MTQyZTRmYmE3MjkyMDNiZWVkIHAzeWsKKzQ1NjE3IDc4MTQwYmU1MzE1YmM3ZmZhNDBmYjllYzZmNGFlNDU5YTM5MTU4NzEgcDN5aworNDU2MTggMzdjMjhhNmFkNTAxMWM4N2U3ZmU0YjhiNzdjYjJjOGQwODM4OWQ2ZSBsZWdhY3ktdHJ1bmsKKzQ1NjE5IDUwZTBiZDJlNDU4ODE2YTIwZWZkZTY1OWJhOGI4ZTFlNWFmZjJkYTEgcDN5aworNDU2MjAgZmQ2ZjE5MGUyNmE4YzExOWU4MDY0OGM2NGJhZDEyMTUxOTJmNTcxZiBsZWdhY3ktdHJ1bmsKKzQ1NjIxIDUyNTUxMjIxYTEzMmQ1NTE3OTJiOWJkYTYzMGJlOWYzN2MyNWY5MjIgbGVnYWN5LXRydW5rCis0NTYyMiA1NjA4OWZhYmEwNTZhMGMwN2JlZTE1MTU1YWNkOTQwMmIwNDdmY2QxIGxlZ2FjeS10cnVuaworNDU2MjMgMDZkY2RlZGZjOThmYTdmZWQ0NjU4ZmE3MzdhNGFjOTM2YTk3NGE0NSBwM3lrCis0NTYyNCBjMmFlNmRiMzA1NzJiMzg0ZTY3NTAzN2EwMjYxOWE2MjM4NGYxYWI1IGxlZ2FjeS10cnVuaworNDU2MjUgZmQyOWFkMGJlZjcwODM5NWM0Zjc5OTY0NjdiY2M3MWMyMzcyNDk1OCBsZWdhY3ktdHJ1bmsKKzQ1NjMwIDBlMGUzMTViNDIwMjM1N2NlM2M1NGYwZGJiMzA4ODVlOTI3MzJkY2UgbGVnYWN5LXRydW5rCis0NTYzMSBjN2VmOTJiOTA0NWM2ODhhMzdhNDRjNjY2NDQ0N2E1ZDc2NjdhM2MwIGxlZ2FjeS10cnVuaworNDU2MzIgNzIwNGZiYWM1NzljYzhhYzQ1YTJkMzBiYzRkNzVkMzM5ZTg0ZGY4NyByZWxlYXNlMjQtbWFpbnQKKzQ1NjMzIDZjNjM0YzZkNzdkZDhkM2EwMDE4ZGE4YTBiM2FmYmNhNGY1ODUwMTEgcmVsZWFzZTI0LW1haW50Cis0NTYzNCAzZjE0MzFhOWVkY2I3MWU5Njk2ZWJlYjM5ZjkxNDRhNTUxN2UyY2ZiIGxlZ2FjeS10cnVuaworNDU2MzYgNjI4ZjQxYThiMWNlMDM4MzgwZGQ0YjBmOWYxZmJhMDFlNzE4YjJhNCBsZWdhY3ktdHJ1bmsKKzQ1NjM3IDU0ZjE1NTM2OWE5YzEyOWMzMWNmOTczYjA2YTA2ZTBjNmUzNWYzNzAgcmVsZWFzZTI0LW1haW50Cis0NTYzOCBmYTZiNDliYTlhZTliNTE4ZmJmMTc1ODI5MzEzZjUyNTAxNzI0ZTJkIGxlZ2FjeS10cnVuaworNDU2MzkgY2UyZWM4YzgzNWU5MzVlOTA5NzI5MDU1NTFhYTdlNWRkNDgxYTAzNyBsZWdhY3ktdHJ1bmsKKzQ1NjQwIGRlNGE1ZjU1ZTIxZGUxM2E2ZWU0ODFiMDBlOGJiODdkMGRjYzVlMjQgbGVnYWN5LXRydW5rCis0NTY0MSBmYjE4MzdlODhlNzJiNjNiNWJmMzRlNGYyZmRiN2IwZTI1MzI5ZTFhIGxlZ2FjeS10cnVuaworNDU2NDIgMTBmMjQxZmM5NTkzOWY5YzlkN2M4YjJkMWMyYWRjMWU4MTZkNDc3MSBsZWdhY3ktdHJ1bmsKKzQ1NjQzIGFiNGU2NWM4MDllNmZmMzAwZTZiNDlhOThjYjM2YTNhZTgxNWRiOWMgbGVnYWN5LXRydW5rCis0NTY0NCBjZTU1ODVhZmMyMGY5MjE0ZDQ3OGMyMDk1OWU0YmQwNmE1YzZkYzU2IGxlZ2FjeS10cnVuaworNDU2NDUgNWY5ZWE3NmUyMDcyNDQ0NGU0ZDA2NTZiYTRmNGY5NTg0ZWU4ZWI3MiBsZWdhY3ktdHJ1bmsKKzQ1NjQ2IGY0OWEyZGRhOGU3NDU2ODZkNDU3NDM1YzVmNDg4OTg3YmViOTc2MmYgcmVsZWFzZTI0LW1haW50Cis0NTY0NyA4MzRmZDliM2NlZWVjMjAyMDhjNzEwODRhMGE3MDYxYWNiY2Q2M2M2IGxlZ2FjeS10cnVuaworNDU2NDggOTA0OGQ3NmJmMDFlNmRmNDlkOTk0Y2IxYjAxYjRiMDM4NzkyOTNkNCBsZWdhY3ktdHJ1bmsKKzQ1NjQ5IDdkZTI4NDk1ODg4MzYwNTE2ZjAyOTc5YjhiOTFkYmVjNTQwNGI2NWQgbGVnYWN5LXRydW5rCis0NTY1MCBmZDgwOGVlNjhlYjk4NTVlZTE5YjEzNGE2MGI1NGU2MTcwMjY4MTRiIHAzeWsKKzQ1NjUyIGE3ZjM3NjVlYTQ2NDI5YjRmOTJkY2JjNWU4ODA0NDk5ZDZiZjMyYzUgcDN5aworNDU2NTMgYWU2ZjUwNjAwYzQ2YjNiZjU3NzRlN2U2MzhmOWQ3ZjUyNmZkZTIxYiBwM3lrCis0NTY1NCA4OGRhODQ3NzYxMTkyOTFkYjhmNDMyM2Q0ZDI1OWIwMzM0Zjc0ZmNjIGxlZ2FjeS10cnVuaworNDU2NTYgZTEyNTJjZWE0MzljNjVlYjg1ZDBlZmViZTE2NDRkZTI0MTQ4NDIwNiBwM3lrCis0NTY1NyBkMGU0Y2VkNDg3YjM2N2U0MjRlNTJlNmVlZWY3MjFlZDk2YzdkZjZmIHJlbGVhc2UyNC1tYWludAorNDU2NTggYTBhYTkxMWJlOTZhMzFlYWMxNWM0OTdiYzkwNTlmYWZhYTljYjYyMSBsZWdhY3ktdHJ1bmsKKzQ1NjU5IGJjZjcxNWE5ODc3NGIwNGQ4N2EyMTkzYzg3MWM5NTA0ZGI2ZGZmZWMgcmVsZWFzZTI0LW1haW50Cis0NTY2MCBlYTY3NjI4ZGRhZTU2NTUxZjMwMGRmYjM5MjUyMmE2OWYwY2NjOTRmIGxlZ2FjeS10cnVuaworNDU2NjEgZTNhOGE4ZGUzNTVlM2ZiOTZhOWEwOWM0NGU3MGU4M2E1NDY5OGQ3NyBsZWdhY3ktdHJ1bmsKKzQ1NjYyIDc5OTU5YWYwZjllMGYzMWU2ODI5ZDZlYjJjOThkZGY1ODhiNTM5MzEgbGVnYWN5LXRydW5rCis0NTY2MyA5NzdlN2E3ZTE1NWFkNDM5NDZjMTY2MWM0OWI3ZmU4NDQ0YzZjYTk2IGxlZ2FjeS10cnVuaworNDU2NjQgN2RhNGFmOTVlYmFkYTEyZDdjZmQ3ZmJlMmViNzdjYjlmZDBhODI0OSBsZWdhY3ktdHJ1bmsKKzQ1NjY2IDdiYmIwNzExM2IyOWZkMWJhYzhhN2I1NzY3ZmVlM2U5MTNiYTY5YWMgbGVnYWN5LXRydW5rCis0NTY2NyAyMjJiNDdkNjdkNDMyYjQxODgzN2YwNjc4ODgxZjFkYTNhNjY5MjhhIGxlZ2FjeS10cnVuaworNDU2NjggZDZiMWUyYjMwODdmMzg0MDNkMjQwNTU1NDU3NDI3ZjNlZjM0ZWVjZSBsZWdhY3ktdHJ1bmsKKzQ1NjY5IGMyNWRkNzVlMDY2NzllZWYxYTlhZjI4ZGEzZDE5ZjRmZTAxMjNmNDQgbGVnYWN5LXRydW5rCis0NTY3MCA5OTEwNjY1NzY0MzQ3YTQ1NjEzNDBiNWRmZGE0ZjMxNDExZTVhMWMwIGxlZ2FjeS10cnVuaworNDU2NzEgNTA5YjUzMTcxOTU0YTgyZGU2NDRlOThhODc5ODYzZGVlMTdkZDFmNiBsZWdhY3ktdHJ1bmsKKzQ1NjcyIDJmZDQ3N2I2MTRlM2Y2MmViOGYwM2Y3OWIxZjY1YTVhMDM2NGRlZDUgbGVnYWN5LXRydW5rCis0NTY3MyA4NDc3MTBlNWQ3ZTE2NjFjZmJjZjljZDg2YWYzM2YwY2MxMGE4NjY2IGxlZ2FjeS10cnVuaworNDU2NzQgMWIxOTIwMzdiNjJmMWZiOTU2OWU5YjFkZDRlYjZlMGVlOTRiNmRjOSBsZWdhY3ktdHJ1bmsKKzQ1Njc1IDU4ZDEwZDdkMGFhMTFjZWM4M2I3OTI5ZTdkN2RiYjY2MjQ4Nzk2YjQgbGVnYWN5LXRydW5rCis0NTY3NiBiNmQxMGRkM2Y5OTc5NWQ2MTA5N2NhMGRhMGUyMzE1MDYyZjliNzA3IGxlZ2FjeS10cnVuaworNDU2NzcgNmY0ZWRkOTE0YzU4NmExNjFmM2Y5NDE2NTM1MTEyNDI2ZTA2NmY0MCBsZWdhY3ktdHJ1bmsKKzQ1Njc4IDcxNjdjMWMwZTAxMzE3MDVmY2Q4NTU2NWQ3ODYyNGI0YWY1NzI2M2EgcmVsZWFzZTI0LW1haW50Cis0NTY3OSA5YzA0MWM4OGViNjc4Mzc4NWQ0MzM3NmZmMzRlNjc0ZjkzMDI2NDM4IGxlZ2FjeS10cnVuaworNDU2ODEgZDYwZmJjNTRjMGQ0ZGZlYjJhODI2NTdkMDE3NTUyZDYxNDczMzdkYyBsZWdhY3ktdHJ1bmsKKzQ1NjgyIDlhY2I1NTUyODY4MDM5OWU2ODIwZWNmMWIxYTgyODhiMmIyNjk5ZmQgbGVnYWN5LXRydW5rCis0NTY4MyBhZGIxMGFmZGE1NWI0ZWRhMzQwYjY0ZmZiZGVjZGVlNGI4OWNkY2E5IGxlZ2FjeS10cnVuaworNDU2ODUgOTdlNTlkMmU2M2RmNjM3NzUzMWMyODE4NTY1Yjg1MTRhNTVlZjJmMCBsZWdhY3ktdHJ1bmsKKzQ1Njg2IGRhZDliMzNlNzhlNTNkOTFiYWRhNjI4MzRjZTRlOWU5MjdhNGU1MmMgbGVnYWN5LXRydW5rCis0NTY4NyBjNzhkMzA2YWFjY2Y5MTI1MTUzYmRjZjdkYmQxNzU2NzYzYWUwMTY0IGxlZ2FjeS10cnVuaworNDU2ODggMmY0ZDE3YmNjOTc1MWE5YzRmY2ViYTI5YzRkMWVmNGZlNGVmMjdiOCBsZWdhY3ktdHJ1bmsKKzQ1Njg5IGUwYjdlMzRiNTk3MTMzMWJhNjU1MWZlYzQyMjEyOTJmZjQzZDBhNGUgcDN5aworNDU2OTAgOGIwZjA3MzViMjQ2ZWUxNTYzZTgyMzAxNjRjY2ExMzQyYjc0NDc5ZCBsZWdhY3ktdHJ1bmsKKzQ1NjkxIDdlMmQ1ZDM3NGUzYTJmNDVhY2U5MjYwNGNhZDZjNjFjM2VjOGViYWQgSURMRS1zeW50YXgtYnJhbmNoCis0NTY5MyA5MmYyMThhNmIyMGI4NDRkMzVhMzBjZTZkN2E4MTdlNDVlN2JhMGZlIHAzeWsKKzQ1Njk3IDYxMjI4ZTU1NzkxZjNlZjcwMDcwNmMxNDFhNmQzZDg5MTgyMTg0Y2UgbGVnYWN5LXRydW5rCis0NTY5OCBhY2Q1ZTU1NTllM2MyNzhjZDdlYmI3ODcxODI4MDEzMzJkMjE1ZjkxIGxlZ2FjeS10cnVuaworNDU2OTkgMzAxNTUyMGQ2N2ZmMWJiYWJmZWViMWVkZGJhNWRlMjBlMDZiMzQ2ZSByZWxlYXNlMjQtbWFpbnQKKzQ1NzAwIDg5NWI3ZGFiYTJkNjA4NGFjMDQ1NDhmOGZiNDIwMWIyZDhiYTVkYTggbGVnYWN5LXRydW5rCis0NTcwMSAwMGRkMWRhZTc4OGI3ZDExODJjMmI5YzRjOTAwNTMxMmU1MWI1OWViIGxlZ2FjeS10cnVuaworNDU3MDIgZjMzZTRlZDU1MGI4YTRmNzEyODU3OGNlNjQ0MmRmZjFjZDcwYzE5MSBsZWdhY3ktdHJ1bmsKKzQ1NzAzIDQ0OWQ0YmEzY2Q0NDI0N2FiMGQ3YzE5N2IyNjllMTBmNWNjYzc0MjQgbGVnYWN5LXRydW5rCis0NTcwNCAxNGNiMmVlY2M2Zjg5NDRkMmVhYTI3MmFiZGYwYTdlOTc3M2Q2NzkwIGxlZ2FjeS10cnVuaworNDU3MDYgYWY0NGRiMmE5NTIzYTA1M2FlM2UyZGFhZTQ1MTAwY2M3MzI1ZmE2YSBsZWdhY3ktdHJ1bmsKKzQ1NzA3IDZjMTI0Mjc2YTFmMGNhZmNkZjRkYTVhNWQ1YmU2YjdjZWVmODIwMmIgbGVnYWN5LXRydW5rCis0NTcwOCA0NWY4NDkyOWIyYWViODY1MjQ5NThiOTkxYzY4ZmZkM2IxZWNjM2VlIGxlZ2FjeS10cnVuaworNDU3MDkgOGUxNDE0ODM4NmVjMDRlOTYwZDIwMjc2OTQ5YzU3YzY0MzRhNGYwZSByZWxlYXNlMjQtbWFpbnQKKzQ1NzEwIGE4NjhjMjE4YTIxMzFiNmI2NmZlMzU1ZmI3MWNmOWE3NTFiODdhZDUgbGVnYWN5LXRydW5rCis0NTcxMSA4ODYzZmVkNmM4ZDcxOWQ5YTBmODE0NzFlNjY1ZTRkMDAzOTNkNjllIGxlZ2FjeS10cnVuaworNDU3MTIgMTg0MzcxMGYzMmU4MzIxMzY3YTg0NTU2MWQ4NTE1Y2FkYzYzYjQ5ZiBsZWdhY3ktdHJ1bmsKKzQ1NzEzIGU1ZmViMDUxYzMyZmRjM2VhNjRhMDM1N2RiNGJkYzFlMDAxMWYyYjYgbGVnYWN5LXRydW5rCis0NTcxNCA3MDRiODA1Mjk2NjRiYTRlOTg5N2M5NDFkMTg4ZGU1NmU0N2QwNTU4IGxlZ2FjeS10cnVuaworNDU3MTUgYjUzNWMxOTFhNDRiMDgyMDgyMWEzYzdlZGE4NWRhYzJmYWNlNjg2NyBsZWdhY3ktdHJ1bmsKKzQ1NzE2IDc4M2NhYjY5MzM0NzdjNDFjNzQ0MWIwN2FhNDYwMDc3MTliYmYyMzMgcmVsZWFzZTI0LW1haW50Cis0NTcxNyA2OGE3YzAxNWE1NDc0Nzg0MDFiOThkMWQwNmFjZDQ1Y2YyYmVkMzM3IGxlZ2FjeS10cnVuaworNDU3MTggMjY5YzYyYzdmNjZhNTMzMzVmYjFiYzc3ZGMzNWI1MDk2MTllZjBkOCBsZWdhY3ktdHJ1bmsKKzQ1NzIxIGQ4ZDkwMGQwZWI4YTQ2ODRjZmU3Mzg2NWVlMzU2NTVkNzRmYzc1NzkgbGVnYWN5LXRydW5rCis0NTcyMiAwOWM0MjVhNWFhM2FmM2NlYzE5ZGQyYTg4NTlhZjBlNWUyNGI2NGY5IGxlZ2FjeS10cnVuaworNDU3MjMgZDVlNmU0OWEzODc5MGFlYWExN2Q0MGRjM2YyYzE1ZjVhYmJlNzcwNyBsZWdhY3ktdHJ1bmsKKzQ1NzI0IDA2YzA1OWI5MmQwYmFjNzdjM2QxMGFkMGUzZDJhMzU4MjM3ZTVhODMgbGVnYWN5LXRydW5rCis0NTcyNSA4ODM5ZWE5M2I2ZDcwNDI5NDc5MjdiNTU2OWRjZWMwMmE1NmFmNmM0IGxlZ2FjeS10cnVuaworNDU3MjcgZjgxY2Q3ZTlkMDAxZjA4MDljYjVhN2E2NWNiYWQ5OGNkZjBmMWE1OSBsZWdhY3ktdHJ1bmsKKzQ1NzI4IDU1NjQ0ZjBhNDAxYmI5MzVmNWY5ZDFiM2JiYjc5OTE4NWI5YjI5YjcgbGVnYWN5LXRydW5rCis0NTcyOSAxNjQ5NzA0YTIyMWExYTYxMTc1NmExNzQ1ZGNlMjBmNDhmOTRiOGUzIGxlZ2FjeS10cnVuaworNDU3MzAgOGRjMmE0ZDhhMjJlMDA2NmY3NjQ5MGNjNDJiMWQxMWMyMmMxYWExNCBsZWdhY3ktdHJ1bmsKKzQ1NzMxIDM1ODY2MmUyZjI3M2EyZGJhOTA2MGI0YjBiZjEyMzc0ZTYyZWNlZTUgbGVnYWN5LXRydW5rCis0NTczMiBmZWQ2ZTM3YWQwM2QxMDUyZTdiODg2MWJhMjE0ZWE1OGU0MDg0NTZhIGxlZ2FjeS10cnVuaworNDU3MzMgOWNjMTJiYjBiNzBhODY2MzRiODdmYjU4MTRlYzNlNDJhZTg4ZGE3MSBsZWdhY3ktdHJ1bmsKKzQ1NzM0IDIyYmI1YzYzODYyZWM2MjJhOTZmMTY5Mjc0OGYzZGFhZjIyMGFhNzQgbGVnYWN5LXRydW5rCis0NTczNSA3YzIyMmNlNTFiZDdmZTBjZjI1NWE4ZDI5NGZjYjk4NDQyZWE2NzRiIGxlZ2FjeS10cnVuaworNDU3MzcgODVjOWNhNWUwMzVhZGZmODJmN2Y3M2E0Y2UzY2IwNjQzODc3NTYwZiBsZWdhY3ktdHJ1bmsKKzQ1NzM4IGFjMDY4NDUzYTc4YTgxMjYxZGNjOGNmN2ZmMTY4OWQzZjZiY2RkODUgbGVnYWN5LXRydW5rCis0NTczOSA5NGQ5ZTBkZTRlNDllMzIwZTA5ODQyMmI2MDFhMjdiNTFiMjAzMjAzIGxlZ2FjeS10cnVuaworNDU3NDAgMGU4MDliN2E4NGYxNzhmODQ5ZjdlN2ZiYzVjNTBjODRiNjQ4ZmM1YSBsZWdhY3ktdHJ1bmsKKzQ1NzQxIDI2ZDA3NzBmMmI3ZWUyODlhMzlhM2I1NWRjZWMxYzFlZTY1ODQ5YzUgbGVnYWN5LXRydW5rCis0NTc0MiA1MDg1Njc4NTczMjA1ZTVlNDBiZTdmZDgwODBkNjkxODY0ZTAxMWVhIGxlZ2FjeS10cnVuaworNDU3NDkgMDk5MjdmMmY3NDc4ZTYzY2RiNGFiNTgwOGE1MGU1MzEwYjRmYmE0ZiBsZWdhY3ktdHJ1bmsKKzQ1NzUwIDkyMzM1MzJlYzhiMzUxMzU4MmRlYjIyMWNmODJkOWY5NGNiMDU3ZWEgbGVnYWN5LXRydW5rCis0NTc1MSBjZDllZDI3M2E2ODc5NjMzYTJlZThmYTYwMjA0NWQ2ZjNjZGViYzRlIGxlZ2FjeS10cnVuaworNDU3NTIgMWUxYjUzNmM2OGI2NTYwNWUzMTFjNzQ5NGE4NDAyZDY1NjQ3NzlhOSByZWxlYXNlMjQtbWFpbnQKKzQ1NzUzIGRmYmQ1N2Y0YTcxMTJmOTJmNzQ0NjVjOTlkNWYzN2NmZjMyYzc5NjMgbGVnYWN5LXRydW5rCis0NTc1NCBhODRhNjIxZWM1YzI0YjljNzI3NWFkZGE0MzQ5ZGQ5YWM5OGY2ZWM4IGxlZ2FjeS10cnVuaworNDU3NTUgMDkxMzQ3N2JkMjRlYTQwYjQ0OThmMDc4YmYzOGYyZWMzZjgwZjNiOSByZWxlYXNlMjQtbWFpbnQKKzQ1NzU2IDc3ZmVhMDZlYmMxMGEwYjcyOTRhMThhMjdhOTIzNWU4ZTBlOTVlZGEgbGVnYWN5LXRydW5rCis0NTc1NyA3ODhkODY2NWZmNThjNTQ0Y2M5NjNmN2YxMjM4NWQyYWFkM2I1YmM3IGxlZ2FjeS10cnVuaworNDU3NTggNGRhMGY3NjIxMzI1YzI2N2EwNzgxMGQ1Y2VjNDIwMjVmMGFmYTNhMSBsZWdhY3ktdHJ1bmsKKzQ1NzY2IGFmOTUyYmM3ZmViMjYxNTlhNmVlZWRhODBiYmRiYTUxYTRhOTQzNzUgbGVnYWN5LXRydW5rCis0NTc2NyA5NDBjZTVhNzZjNWZmODVhYmZmNzg0M2M4MDUzOTZhZWI1MDhkMDFlIGxlZ2FjeS10cnVuaworNDU3NjggZDU1MTRhN2VhYTRjY2VjZWY4MmJjNzhjOTYxOWY5ZjE1Yzk0YTg1OSBsZWdhY3ktdHJ1bmsKKzQ1NzY5IDBiOGU3ODJiODQ4NGI4OGRkM2NlZTIxOGY0Y2JmNzRjMmU2NzdjNTYgcDN5aworNDU3NzAgYjVlN2Q1YjNjNDQyZTc5ZGIxMjg0YWJiMzU5OWFlYzJjYjE2ZGI1YSBsZWdhY3ktdHJ1bmsKKzQ1NzcxIDM4NDVmNzBlMGJhZmRhMDRhZmE4Y2EwYjgzYjY4YmQ5MDJiMjM0YjQgbGVnYWN5LXRydW5rCis0NTc3MyBiYjZjNWMyMDBhM2YwM2JmYzkyZGNkYjZiY2NhMDBmMDhkYzNmN2E2IGxlZ2FjeS10cnVuaworNDU3NzQgYjVlNzE4M2FkMTEyMjVmOTMyNjE0MWU5ZDU3NmI5ZTUzZTY0ZjVmZiBsZWdhY3ktdHJ1bmsKKzQ1Nzc1IDM1MThlOTRhYTY2MzcyMTk0ZTU3Y2UwZWRhZmYyNDk3ZTQ1ZjNlNzkgbGVnYWN5LXRydW5rCis0NTc3NiAxOWFkM2QzNWZhYzRhODRhNWYyMjk1Y2ZkZjRiMGVjNDJlYzgwYzFlIGxlZ2FjeS10cnVuaworNDU3NzcgOGJjNGE3ZTVmZWY4NGY3MThiYTNhNWJiZDcwY2Y3NDJiYTExMTJlZCBsZWdhY3ktdHJ1bmsKKzQ1Nzc4IDYxYzdlYzk5NWFkZjU3ZTE4MzhhM2FlZDNkMjdhZGY2ZGYxOTczOWUgbGVnYWN5LXRydW5rCis0NTc3OSBlOWE3MGIxNDY4NTc4ZDhlNDYwNTE1ZTBmNDhkMDE4M2E3NjQ1N2I1IHJlbGVhc2UyNC1tYWludAorNDU3ODAgMzRkNjk2YzFlZWJjNjhjMTRhZWViYTE0ZGY2ZTY0ZWZjMjQ4ZjA3OCBsZWdhY3ktdHJ1bmsKKzQ1NzgxIDhlNWI2NGE3YjMzZjJhMWUzOGE2ZGIwZTE5YzUwOGM3YWQ4YWZlNTcgbGVnYWN5LXRydW5rCis0NTc4MiAzOWViNWI1MjI1MjM5Y2RlYzUwMGRmMTljMGE4MzAwNDk4ZThhYmU4IHJlbGVhc2UyNC1tYWludAorNDU3ODMgYzEyNDcxNjlmM2ExNjZkOGIwNWNmYzM3OGFjMWFmNWNjMWM0Y2RmZiBsZWdhY3ktdHJ1bmsKKzQ1Nzg0IGRlMmVlOGRlZGNlODk5YWMyMmQ4NjhhOGZjNjc5MTQ4ZWFlYWVkYmEgcmVsZWFzZTI0LW1haW50Cis0NTc4NSA1NjViZmZkZThiZjE4MzA2NDhmZjMyMjZmNTQ4NzI3MDU3OGMxMTlmIGxlZ2FjeS10cnVuaworNDU3ODYgNDczZjM3ZGUxM2ExMzdmNDFmNzQ0NGE4YzJhMDE1ZmE0M2Q4OWI5YSBsZWdhY3ktdHJ1bmsKKzQ1Nzg3IDI1NDZjNDc3MzRhMDE1ZjhmOTVjNjc1ZTdlYTUwOTY2N2I3NTg0ZDIgcmVsZWFzZTI0LW1haW50Cis0NTc4OCA4YmRiZWQ2N2FkZjc4NmU4NTk3ZmEyZmQwMmM0YzBmYjY0NDc4NzEyIGxlZ2FjeS10cnVuaworNDU3OTIgMzg5ZTkyMmE2NDdjMTEwMmY1ZjFmZjI2YTZkMzFiMTMxYTgyODY0YSBsZWdhY3ktdHJ1bmsKKzQ1NzkzIDg3NGQ3N2VlZmNlNDMxYzBkODA5ZWZlMzlkMTA1MTE0Zjg5NjFiNDEgcmVsZWFzZTI0LW1haW50Cis0NTc5NiBmMjc0MmFjYTJhZDA3ZjQ0MjRiNGNiZTljN2ViMzM2MzAxYjM5MzljIGxlZ2FjeS10cnVuaworNDU3OTkgZjA4MDk0ODNiNGQwNWYxYjdmMmYwY2EyZWU0YmZmNTcwNDdhM2JjMiByZWxlYXNlMjQtbWFpbnQKKzQ1ODAwIDM2YzdhNDQyMmUzMDc1OTQ1ZTgxNjBlNWQyOTNjMWM3NDM3OTYxNDcgbGVnYWN5LXRydW5rCis0NTgwMSA1NzM5OGViOTc4YzI1NGU2NzBhNzAyYzk4ZGFjZGRkOWZkOTNlODEyIGxlZ2FjeS10cnVuaworNDU4MDIgODQ2OWQzZDhkNGVkYjc0NmY5OTVmNGY1NmUxYTBkYzI2ZTE0MDZkNSBsZWdhY3ktdHJ1bmsKKzQ1ODAzIDg4NzNkMzBhMTQwZjg0NDBiNzk2Yjc4MjRjODExZTc3OTM1ZjNkZGUgbGVnYWN5LXRydW5rCis0NTgwOCA1YzIyNzdhMjk0ZWE0NWUzYjRjMGYyMWIwZTFlOGM2MDEzMjhkMDEzIGxlZ2FjeS10cnVuaworNDU4MDkgNTFiNmY4ZTA0MmRmYmY5YmY1OWYzOWRjMWVkNmZiZjlhMzE2NTNkYSBsZWdhY3ktdHJ1bmsKKzQ1ODEwIDNmNTFmZmQ1ZDhiZjc3YWE5MmZiZWIwNDhkODM1Yjg5NjYyNGUzMDggbGVnYWN5LXRydW5rCis0NTgxMSBmNjI2ZDUyZmFiZjA0NGMzYWQ4OTAzYjA3NjE5ZTI2MTBhZDAxZDlkIGxlZ2FjeS10cnVuaworNDU4MTIgNDY1ZjViM2EwMjM0ODRhMzM1OGNlZDRhM2Q4NWVkNDFlZjljYzI2OSBwM3lrCis0NTgxMyBhY2FmMjc2MzlhNDExYmZiY2YwYTRmNTI5OTczNmY5NjUzZGZjNzBmIHAzeWsKKzQ1ODE0IDYxNGM5MjE3MDdmOTU0YTZmMjRhODVkOTQxZmZkYWE3MDA0NmFmZGUgbGVnYWN5LXRydW5rCis0NTgxNSAyYTI4OTE1NjE2ZDUwMWJhYTVjNTkxZjM4YmViMGUzNzA3NjQwMDk5IGxlZ2FjeS10cnVuaworNDU4MTcgMzJhMTg3ZjNkNWJhOTM2YWNjM2YwMWMzODk1MmEyNTJkN2I0OTBkNSBsZWdhY3ktdHJ1bmsKKzQ1ODE5IGU0ZTg0ODIxNGQyMzg1MWJkM2ViNGVjZmJjMzU4NzRjZmMxOTJmYmUgbGVnYWN5LXRydW5rCis0NTgyMCBhYjUzYTM3OGVkYThmOWIzNzMzYWRmMjFkZDU2MDdjZDc1NjZkZWM2IHJlbGVhc2UyNC1tYWludAorNDU4MjEgZmNjNjE4MzVjNmFjOGU2ZjM5ODU4YzQzMzg4N2M1NTQ4Y2U3OGNiYiBsZWdhY3ktdHJ1bmsKKzQ1ODIyIDY5ZjA0NTdjMTdiYjE4MDg1Nzg1NmJiY2U0Y2QwMWE5M2Y4NmIzMWUgbGVnYWN5LXRydW5rCis0NTgyNCA4ZjdhYmMyYmE3ZDBhMjJkNWYzMDJhMzM3NjZhM2U4MzZjZTEyZWY2IGxlZ2FjeS10cnVuaworNDU4MjUgOWFiZWFiOTZhZjU3MjM2ZDNhZmRkYjE3YTM3ZTBhNjQxOTZiYTNiYSBsZWdhY3ktdHJ1bmsKKzQ1ODI2IDdjYzdjN2ExMzY5N2JjZjAyYmZlMjUyYzBlYjA1YzQ3NTdkYmNjZWMgbGVnYWN5LXRydW5rCis0NTgyNyA4MWQ5MWZmODAwM2I5OTQzYjFjMzU3YTI2MzkwYzA3ZWMwMDdmYTUwIGxlZ2FjeS10cnVuaworNDU4MjggZjg5NDEwNDQ4MDFjYmZiM2RmNDMyNTE3ZDlmZGI5MDhhODM0NWIyNCBsZWdhY3ktdHJ1bmsKKzQ1ODI5IGZjN2I2MTgxZDA5ZWFlMzE3ZDkyZGM0M2EwMDQyMmZkMzg1YTUzN2UgcmVsZWFzZTI0LW1haW50Cis0NTgzMCBmNjJiZDUxMThjNzhjZjM0NWI2ODM4YmMwNTk0Mjg0NzNkNDFiMzFmIGxlZ2FjeS10cnVuaworNDU4MzEgMDczNmIyNWM1N2M1NzY4MTNjZjAzZTE3MTMzMmQ1OTg0YjBkN2NlYiByZWxlYXNlMjMtbWFpbnQKKzQ1ODMyIDEzNWIxNzc4ODNjMzQyNWJlYTZlYjRhNTFmMTU1YmRiMWVmMzkwY2IgbGVnYWN5LXRydW5rCis0NTgzMyBiODUwN2RlZDRkMTVjYzM4YTg4NzM1Y2NmNjg4ZjU4NjNmZDE4Yjg3IGxlZ2FjeS10cnVuaworNDU4MzQgZWZlZWJjODc3MGU1ZTYyMWIxZjQyNWQ4MTBjYzU2NTZiMjhmYTdiZSByZWxlYXNlMjQtbWFpbnQKKzQ1ODM2IGNhNmM5MTUzMWE5Njc4NzA0MDU3MWQ0YzQ1ZmZlMzgwMjk3ZGRkNzMgbGVnYWN5LXRydW5rCis0NTgzNyBjZjE5YTEyM2E1ZDlhY2NjNjI0ZjE3MGNlNTI3NGJlZjlmNWZhYjgyIGxlZ2FjeS10cnVuaworNDU4MzggOWI3NWFkMjM2ZjAwMDA4MGQ2YWMzYmQwOGVhM2Q0NDk5MjhiYzcwZCBsZWdhY3ktdHJ1bmsKKzQ1ODM5IGQ3NmI5YWE3MjI5ZmM2OTYxODYyM2RkZDRlYjEwMGI4ZjAzY2NlMWYgbGVnYWN5LXRydW5rCis0NTg0MCBlZTk4ZWNmMDU3NzNhNzA3MTc3ZDMzNTUxZmZlY2I4ZjhlNDk1MmZjIGxlZ2FjeS10cnVuaworNDU4NDEgNjM1MWNkMGY3YzI4NWY5Mjc5YWRkMWI1NWRhNmZkMDcyOTY3MTFmMyBsZWdhY3ktdHJ1bmsKKzQ1ODQyIGVkMzM1ZTUyZDE3MDU0OTRmY2E3MDc2NDMyNjg2MWFhYjA5ZmFiMWQgbGVnYWN5LXRydW5rCis0NTg0MyA3YjgzYjY4YmU4YTY3YTQ1YWFkZjYwMjBkOTIxODIxZDQ3MGQ0NDk1IGxlZ2FjeS10cnVuaworNDU4NDQgMTI4YzAwNjFiNWJiMjZiMjllYmQ1MzYwNjNmNjlmMzIxYWUxMTgwZiBsZWdhY3ktdHJ1bmsKKzQ1ODUwIGM5MjAyZjFjNTZjMjc0ZTMwMTc3NzJlMmI4NTExMmQwYzRkMGE4ZTkgbGVnYWN5LXRydW5rCis0NTg1MiBiMWNiYzYwNWJlYzljZGY5YTQ2ZjAzZGRlODdjMjIzNDk1Y2FmOTFiIGxlZ2FjeS10cnVuaworNDU4NTMgNzI4YzE2ZjE2MjY3MWYzNDFiNzljMmFlNzUxOTRmNjI1ZGUyNTcyMSBsZWdhY3ktdHJ1bmsKKzQ1ODU0IGI4ZWM2ODljYjJmYmNjNGY2YWNiZDFjMGQ5ZTFjNzVjOTE2ZGNmNzkgbGVnYWN5LXRydW5rCis0NTg1NSBiN2I1ZjBiMzRkMjVjY2RkN2MxZTFhMWZjODYzNzMwYWQ0YTRjNzFlIGxlZ2FjeS10cnVuaworNDU4NTYgOWExN2I4MmVhZmM5NDEyN2EzN2ZhYzlmZjJjYjJkY2IyZWRiYTljOCBsZWdhY3ktdHJ1bmsKKzQ1ODU4IGJiM2UwYzg4OTYzMjVhNTEzMDExYTM3MDYwMjMxMjM0OGM0ZTFhMTQgbGVnYWN5LXRydW5rCis0NTg2MiBhODEyZDBmYWU3NGE0MjhhMTcyZWUwZmFhNTllOThiYjlhYzgwNjUzIGxlZ2FjeS10cnVuaworNDU4NjMgZmUyOTM5OGY0OGM5OGRmZTBiOGI3NmZiMzljZjE4OTM5YzNlODA1ZSBsZWdhY3ktdHJ1bmsKKzQ1ODY0IGFjNzI5MDBlMTkxOWExZmViZWNhNjZmYWNhODgzNzNkMGJhNDQ4M2UgbGVnYWN5LXRydW5rCis0NTg2NSBiNzA2YjEwMGM4ZmMwYTAzODUxM2YxMDVmNjg2MTgyYmEwMTEyNjc3IGxlZ2FjeS10cnVuaworNDU4NjYgOGFhZjU3YmNjYmY4YjU2ODNhOGFkZjc4NmIzNTM3YTkwZTdkYTY2ZSBsZWdhY3ktdHJ1bmsKKzQ1ODY3IDY2ODc1YjljODlmNDU0NWY1NDhkYTMwZjM3NTVlMjM0OTQyM2VjNGQgbGVnYWN5LXRydW5rCis0NTg2OCA2NmYxYjNlYmFlZTNhMjE5ZjI5MTMzMjNmZTZlNmY1Zjg3Y2M5Mzg0IGxlZ2FjeS10cnVuaworNDU4NjkgNmUwYjA1M2M2Y2Y3YjE3NmFiNWUxYjZlMmI2NTE3Y2MxYjEyYzNiZSBsZWdhY3ktdHJ1bmsKKzQ1ODcwIDBmYTNiYWQ0ODlkZDQ3N2ZjOGYzODhhMDMzYTk0ZmZmYWM0NmM4ODAgbGVnYWN5LXRydW5rCis0NTg3MSBiYzQ4ZTZiMWU2NTQ1NWM3ZWU5MDBjODA3NDVjMDIwMjk5MGE2MzEyIGxlZ2FjeS10cnVuaworNDU4NzIgNmExNDY5YjM5ZDczNzg1M2JjZDA0MTQ0OGU4ZGU1ZjQ3OWIzYzdhMSBsZWdhY3ktdHJ1bmsKKzQ1ODczIGViMDM1NjJkZjRhNzk2ODQ3Y2EzY2NmMDQ2ZjlkMTViODgwYjVkYmYgbGVnYWN5LXRydW5rCis0NTg3NiA1NDU3YWI5Zjg1OTkxN2IwNGIxYjM5Y2Y1NmZkYzFkM2Q4ZGM3NGUyIGxlZ2FjeS10cnVuaworNDU4NzcgZTVkMTFkZmIyZDA4ZWM2YzFmOTUzYTgwN2JkMTdmNzZlOGMxNGVkZSBsZWdhY3ktdHJ1bmsKKzQ1ODc5IDIzZDRhYzMzYWMxNmU3NGMyMWRlZDlkMmI5OTVjYTUwYjJkZDZjNzYgbGVnYWN5LXRydW5rCis0NTg4MCBjMDZhNjJmMDU4OWZiYTRhODM4NjQ3YWMyNTUxNmU5MDVmNTQyMTYyIHJlbGVhc2UyNC1tYWludAorNDU4ODEgNGY3MmE0OWQ3MGM4MDVjMGY5NzE3NmU3YjI5YmQzYmU5N2RjMTA4MiBsZWdhY3ktdHJ1bmsKKzQ1ODg3IDZiYzFlODNhOTdhNjlmYjg5OWFhNGRlYTQ3MDlmNDg0ZWM1NDQyNTYgbGVnYWN5LXRydW5rCis0NTg4OCBlOTJhOGI4ZWVjNzNiODNjYjU2NWJlOWZhOTQyMzYyN2E3OGM4MDJiIGxlZ2FjeS10cnVuaworNDU4ODkgYTA2YjY5ZjhjMjc2YTg5NDFkYmNlMmVlMjFlMzBlNjQ5Y2UyYzViOSBsZWdhY3ktdHJ1bmsKKzQ1ODkwIDg4Yjg5Zjk2Yjk3ZmYwNzk3N2Y0Y2ZmYzg2YmI1NzE4ODEzMWNjNTcgbGVnYWN5LXRydW5rCis0NTg5MSA4YzM4M2VmNzgxOTg0OWE4YzhiMGJjZmExZmFmOWMxZmJmODQ1MmYwIGxlZ2FjeS10cnVuaworNDU4OTIgMDI1MThjZjE3YTY2ZWE3NjE3YTdjMTNkZmQzNDk2Y2I4ZWUxMzYyZCByZWxlYXNlMjQtbWFpbnQKKzQ1ODkzIDI5NDI1MDg2ZTlhYjYyOGIzMTkyNGNmNmNiMzIyZjViZGYyZjYzZTkgbGVnYWN5LXRydW5rCis0NTg5NCAyMjBhZDIwMzk0ZGYwYjMxYTRkZTU5ZjEwMjkyYjgyOWJhYjBmYzRiIGxlZ2FjeS10cnVuaworNDU4OTUgOTFhNjQzNmYwYTU4NGUxMmQ0YTZiZTM4NGVkN2JkZTg1MDAwNWU3ZiBsZWdhY3ktdHJ1bmsKKzQ1ODk2IGNlMmE3ZmFkYzJiMDRlMjM4OGUwODk0NjZmZTMwMThjOWU1NmY3ZTIgcmVsZWFzZTI0LW1haW50Cis0NTg5NyAwZTdkMzRhYWVhNjEzMWVkOTdhMGMxYjg2NmIyZTYxOTdlYThjOTcxIGxlZ2FjeS10cnVuaworNDU4OTggYmU0OTY0NWUzOTg0MTBhNjZiOTJlZjliMTI5MDUwYTg0M2U1YmMwMyBsZWdhY3ktdHJ1bmsKKzQ1ODk5IGI1OGY3NTBkNTIxMDFmZTM3Nzc5NTE3ODE5YzNkOGRiMmYwNGNiODIgbGVnYWN5LXRydW5rCis0NTkwMCA3OWM4YTJhOTg4Y2IzOTQ0NzlhYTJhMDYxNTJmYjAwYzIyNzljNzA5IGxlZ2FjeS10cnVuaworNDU5MDUgYTZhMTM1OWFhYjg0ZGY1MzFkN2QwMzdhNzg0MmE4MWNjOGFjZWQ4YiBwM3lrCis0NTkwOSBiZTBjY2E3MGNjYWFkYjMxMTUyZTU1MjVjNzFiYmNhMGU4YTc4NDYwIHJlbGVhc2UyNC1tYWludAorNDU5MTAgNTdiZDdjN2Q5MWUzYWJlMDIxYWU1YjMwN2I2YTM2MTFmZThkMWZiYSBwM3lrCis0NTkxMyAzNjE4MTI2YzYzMDRjNzFhODMzODEzZTFlZjQ1OGI0NGQ0ZjMwMDQ2IGxlZ2FjeS10cnVuaworNDU5MTQgYzAxYzMzN2FkNjE4OGVmZTAyNWE5MTYyZDExODQ4ZTNhZDlmZWYwMiBsZWdhY3ktdHJ1bmsKKzQ1OTE1IGE1OTZlZDkzY2Y0MjY0YjI3ZGNkZjQ2NjIwMzNiZTE3NWRkNzVjZjEgbGVnYWN5LXRydW5rCis0NTkxNiA3NDFmYjgzYjRlYWI0NzYxMmQ5MDhhNzAyMTk5Y2MxYWI5ZmI4OWJiIGxlZ2FjeS10cnVuaworNDU5MjAgYzMzNDJkODhhZWZkNGNiNjc5N2I5MGQ3NTgzZjViM2I5Y2FjM2RkMCBsZWdhY3ktdHJ1bmsKKzQ1OTIxIDJjNWU3NGM2NDVlMjhjOThkYzY1OGIzYmVjY2Y4ZTI5Y2M2MDUwOGYgcmVsZWFzZTI0LW1haW50Cis0NTkyNCBjM2EzNmQ0NTZkZWEwYmYzM2I0OTU2YmU0YWE1NTg5MDEzZjkzYjRmIGxlZ2FjeS10cnVuaworNDU5MjUgMGQ4NzliZmYyNWY2NmM3MjBkN2Q4YTc5NTkxZmFlZjc3ZWQ5NTk2NiBsZWdhY3ktdHJ1bmsKKzQ1OTI2IDkwZGQ1N2ZjZDI0ZTEyYmFkMzFkNjMwNmFhM2Q5NDU2OTkwY2FkYTcgbGVnYWN5LXRydW5rCis0NTkzMSA0YzM5MThmMjMwM2I1YTk1YmY3ZGE4MDY1ZWQ4ODJjNzhmZDRmODQ1IGxlZ2FjeS10cnVuaworNDU5MzIgZTcwMzUyNzUyNDViYWUzNjZmMDU1ZWNkYTkzZDI3NWM5ZjQ3NzgyMSBsZWdhY3ktdHJ1bmsKKzQ1OTM0IGQwMTcwMjc2YzVkZWQzMDRiZDQ0MzhmMDk2MDJjYzhmNDRkYjQzODkgbGVnYWN5LXRydW5rCis0NTkzNiBkZGYwMDY5ZjYxZjkyZDdlZDVkOGM2YjYxZDY0ZjY4YjdlZWM2NzUzIGxlZ2FjeS10cnVuaworNDU5MzggODIyNWFlZTkxOTA0OTUwOTNhZDg1ODYyNzNlY2JlOTdlZGY2MzA2YSBsZWdhY3ktdHJ1bmsKKzQ1OTM5IDZkMWUyNDBjOTE4YzEyZjA3NGNjOGE0MzMwODFlYzQ0ZWRmZjk0NjkgbGVnYWN5LXRydW5rCis0NTk0MCBiNDQ4NTlmMGIzMDhiYzg0OTYxMzJiMDQ0Zjc3OTQ2MmUzY2NlNjAwIGxlZ2FjeS10cnVuaworNDU5NDEgZWI0ODc5YzA4NWFhYTg3ZjJiOTY3OTBmMTQ4MTRhYTcyYWUyY2MwNyBsZWdhY3ktdHJ1bmsKKzQ1OTQzIGNlMGI0N2QzZTVkMTBjNzAyOTZhZWQ5ODUxOWMzMjQ4MDk4MjdlNmYgbGVnYWN5LXRydW5rCis0NTk0NCAwNjA2YjljMDhhYzI0ZjFkZGI3ODU3ZTUyZmMzZjZlOGY5N2UzNDQ5IGxlZ2FjeS10cnVuaworNDU5NDUgZjNhNWUxNTNjMzI5NDliODExNzE2ODJiZmVlNDg1YWQyMjBiY2IwNCByZWxlYXNlMjQtbWFpbnQKKzQ1OTQ2IDRjOTkyMmQ4ZGNkZDEwN2ZjMTg5ODdhODZhNmVhM2MwOWE5ODU0NWYgcmVsZWFzZTI0LW1haW50Cis0NTk0NyBmMWUyNDQ1MmRiYmE3YjFhZWQ0NjliZmEwNWU1OGJhOGQwNWZkMzVlIGxlZ2FjeS10cnVuaworNDU5NDggOGRhMDhkODVmY2IxZTY5MmUxMDI3NzIwMDA3ZWJmMjY3NjRmYTNmOCBsZWdhY3ktdHJ1bmsKKzQ1OTQ5IDk3ZGIzZDliMTQ1ODAwOTFjNDNlNTgxYjRiNzhjNTdjNjc0MzU1MWYgbGVnYWN5LXRydW5rCis0NTk1MCA4Yzg2Y2E4ZjI2ODI4ODAxZDc0NDk2MzcwYzMyYTU4MTQ2N2I4NDYwIGxlZ2FjeS10cnVuaworNDU5NTEgZWVhMTc2ZTY3ZjIyODg0YzU1Njk2OTdkODEwYTJlYjViNjY2MjBhYyByZWxlYXNlMjQtbWFpbnQKKzQ1OTUyIDE0NTczMzZkNDMyZmU0NTliZWE4YzA1NGI5ZDE2NzkwMzM2Y2RiMWMgbGVnYWN5LXRydW5rCis0NTk1MyA0MjcyOGNiMThlYTI1NjBjMWRhNjVkNzZmZTUyMTQzM2E2NzQyYjcyIHJlbGVhc2UyNC1tYWludAorNDU5NTQgZjYxYzg5MmNhZGFjOTc3NDE1NGE0ZDQ5ZmQ2MWM5NDhiNzBmODE5ZSBsZWdhY3ktdHJ1bmsKKzQ1OTU1IDdmZTQ5ZGJjYmJkYWIxYzk1OTllNGU1ZDY1NjM5N2I4MjJiYjI3NmUgbGVnYWN5LXRydW5rCis0NTk1NiBmMjZmYzNhZWVmOTZjYjQ3OGViOGZlYmVkZTVhNzMwMDRlZDk5Y2JkIGxlZ2FjeS10cnVuaworNDU5NTcgNjcwMTMwOWVmYTc2ODZlNjAyNzIyY2QzNTE3NDM3YWRlMTFmNmI0MCBsZWdhY3ktdHJ1bmsKKzQ1OTU4IDg2YTA1MWQyMjY0ZDJhMjkwNTgyYjRlZjA4YTI1ZjU4NWVlYzExOTQgcmVsZWFzZTI0LW1haW50Cis0NTk2MCA5ZDRmY2MzOTAyMzZlNGFiNWQ4MTAwNWQ1MmRiZWNhNzRhMmQzMmFkIGxlZ2FjeS10cnVuaworNDU5NjMgOWE2MzdiZjRkZjQyN2FiYTNhZmNhMDc2MmMzMjMxZTBkMGU2OThkNiBsZWdhY3ktdHJ1bmsKKzQ1OTY0IGUyZWY2MGZlYzNkYWQ5MWE2ZGYxZTQ1MTRiMDIwZTU3ZjUwYTcxYTIgbGVnYWN5LXRydW5rCis0NTk2NSA0MDgyZDFhMTE5MTdjMTBmMjA5M2Q4MmE0Nzg4ZGRiYmNlMzRlYTE5IGxlZ2FjeS10cnVuaworNDU5NjYgOGY0MDhhYTJhN2VmYTQ3ZjRhNWIwNzA0NmQ1YWY0ZTEwODVlOTU1MyByZWxlYXNlMjQtbWFpbnQKKzQ1OTY3IDJhOWI0NWRjMzExNDFkOWViYjQxNTlmNzllZDA2MzA5ZWJhZTRiZmIgbGVnYWN5LXRydW5rCis0NTk2OCBiMjFiZTlkMjM0MWE5MDcyOTc0ODUzZmRlZDk1ODA0YTNhZWFhMTNkIGxlZ2FjeS10cnVuaworNDU5NjkgN2ZjOTNkOTUzMGJmNjBkZjg1MjgyNjAyZDM1NDQwMDQyNmUwYTFkMyBsZWdhY3ktdHJ1bmsKKzQ1OTcwIGM0YWE1NmQ3YTVjMTA2Mzk0MzY3NWI5MzhkZTRhYTY3MmQ2NjNhMGMgbGVnYWN5LXRydW5rCis0NTk3NCA1ZTM1NDNiNzgzMzdiYTM3NmIyMWE5Y2FiOGE2MmNiMjdjOTU3MmI3IGxlZ2FjeS10cnVuaworNDU5NzUgYmYzNzM1MjA2ODcxYmQyN2U5ZGExYzM4YWNlMDg2ZGM1NzAwYjlkNSBsZWdhY3ktdHJ1bmsKKzQ1OTc2IDA3OTUzNzJhODRhYmZlMGRjNjI1YmMwYTdkZWJkMzk3NzNjMWYyZTMgbGVnYWN5LXRydW5rCis0NTk3NyA3ODkwZjZiOTJjMTQ5Y2Y5YjE5NjRhYTkxZTBhMjVhZDM3YzMzN2M5IGxlZ2FjeS10cnVuaworNDU5NzggNGRlMzE1NWUxOTJiYzk5MDhmNmZkZGM4YzgzZjZiZDE3MmI5ZWI1NiBsZWdhY3ktdHJ1bmsKKzQ1OTc5IGNmNzhmOWM0NzkwZWUxMjk5YTk0Y2QzZDUxMzc4M2Y4OGVlZGFiZGEgcmVsZWFzZTI0LW1haW50Cis0NTk4MCA1NzRmZmM0ZDdiZjZiYzc3NzQwNWJmMDQ0YWY1Y2RmNmJkMWQyNjU2IGxlZ2FjeS10cnVuaworNDU5ODEgYmI2MDkyOTk1NDA5OTM1MTM2YTAyYzlkMGU5ZmI4M2U4MTdlMWRhZSBsZWdhY3ktdHJ1bmsKKzQ1OTgyIGE3OTdlZmI0ZTdmODNmZWYyMzUzM2JiNGMwNDc3NWU2NzUzMWIzMzggbGVnYWN5LXRydW5rCis0NTk4NyA4NWM4Mjg4NzgxODhiMzVkYmRlMDRkYTU3NGE4Mjk2MGNjY2MxN2VjIGxlZ2FjeS10cnVuaworNDU5ODggOGI2MDE3YzkzN2FjMjdmMDA4OTNhYTFlOTk0YThlN2YxNjZiOGRhZCBsZWdhY3ktdHJ1bmsKKzQ1OTg5IDUyNTYyNGU5NGU3OGFlNzZkYThlODUzMmFhMzk3MWMyYjRkYmM4ZjcgcmVsZWFzZTI0LW1haW50Cis0NTk5MCAzMjQ3MmVhNWYzY2RiNjA4ZjM2NzAyZGZiYjJkZWRiMDBlMTU5YjJjIGxlZ2FjeS10cnVuaworNDU5OTIgMzgwZGFkMzk1NTk5MTRmOWQ1NDc2YWZkZmQyZjgwODQ0OTA5YWVmZSBsZWdhY3ktdHJ1bmsKKzQ1OTkzIGViZDU3MzIxMGUyNTAzOGNlNDRjMDUwNjhlMTY5ODVmZjVkNmJiN2EgbGVnYWN5LXRydW5rCis0NTk5NCA0YmRmMjdiZDczZDIyYWQ1ZTc3NGIyNjIwYTdhM2VlODNmNGEwOTgxIGxlZ2FjeS10cnVuaworNDU5OTUgY2RmOGY1MzM0NDI2OWU5MjA0ZDY1OWFkNzY3YzE0YjgxYTQ4ZWQyMCBsZWdhY3ktdHJ1bmsKKzQ1OTk2IDY3NjQ5MmE5M2M4YTdiZjdkZWM1N2IxZjZhOTlkMjM1ZjA3YjE3MzAgbGVnYWN5LXRydW5rCis0NTk5NyBlZjgyYzVkMDE0NjA3ZmJiNThmYzBjMTBhNzk1Zjk1NWI4NjQ1N2JlIGxlZ2FjeS10cnVuaworNDU5OTggZjI1MmM2YWUwYzQyNjQzNjI2Yzk0NjI1YTVlNzA2MDc1NDUxMmNlZCBsZWdhY3ktdHJ1bmsKKzQ1OTk5IDI5YjczNmYwNzNhMzVjM2ZiOGU0MDQwMjE2N2ZhYjUzZmZhMGY0YjQgbGVnYWN5LXRydW5rCis0NjAwMCBhYjcwNGI5OWUxNTBjZjAzNzU5ZTdlYTZlZmViY2RjZDY4MDMzYmZmIGxlZ2FjeS10cnVuaworNDYwMDEgZDgzNTVjY2NmZjRhY2ZjMjk3YzI2MDgyZjJjY2QzZjYyMTg3MmNhNyBsZWdhY3ktdHJ1bmsKKzQ2MDAyIGZlYTVkMmZkOWI4YTQ4M2M3MTE5NjhjOGI3MTBmMDVhMzk4NDkxOWYgcmVsZWFzZTI0LW1haW50Cis0NjAwMyBlN2QzMGQ3NWRhZTdjMmJmYjQwODU4ODQwODI2MzZlNzRmODQxMDNjIGxlZ2FjeS10cnVuaworNDYwMDUgYWQ4Yjc2ZTk5MjYxMDUyYjE5MTZkMzAyNzNjNjczZTg5NTE1MmQyNyBsZWdhY3ktdHJ1bmsKKzQ2MDA3IGNhMTA1MDdhNmFmYmYzY2M3YjZmYmMzMjcxYTNiYWVlNjE4YzU0MzYgbGVnYWN5LXRydW5rCis0NjAwOSAwYWU0YmI3NGU3ODFhODM0YzNhNGQ5MjNiMjYxZWQwZTY3YmM4YWNlIGxlZ2FjeS10cnVuaworNDYwMTAgMzM3OWFkNjZiMGUwNzNhNDVmYzc1MWVhYjU1OWMzZDA3NWIxYzEzNiBsZWdhY3ktdHJ1bmsKKzQ2MDExIDNiNWNkN2M2NmRhMDkwOTc4NzViZGQ5NzA5OWM4ZDMwN2YyNTE0MmEgcmVsZWFzZTI0LW1haW50Cis0NjAxMiBkNmQ4NzlhZjM2ZDM0YTVjNzBhMjFhYWE3NjU2ZWNhNTU4MmU2MWJiIGxlZ2FjeS10cnVuaworNDYwMTUgZjgzODVkNmM4ZjVlZTE2MDQ1MWU3OWVmOTkzZWJlOTFiZTcwNWRlYyBsZWdhY3ktdHJ1bmsKKzQ2MDE2IDZjZjQ2NjI3NjNhMWEyOTNjNDY0NDZhZGJjNzAxMDg4YTIwMGFiOTkgbGVnYWN5LXRydW5rCis0NjAxNyAzNjU2M2IxM2NlNzkyYTcyYmIwZjgwYWUwZDUzYTcwY2ZmMzNmYTY5IGxlZ2FjeS10cnVuaworNDYwMTggZjkxMzUwNTAwODM0NmY0M2QxNmRjYWUyOTA5ZjJhOWNjMGU1ZDBiNiBsZWdhY3ktdHJ1bmsKKzQ2MDE5IGQ2ZWE3ZDQzZWJmYzBhYmM3NjAyNjQ1ZTRlMjhiYTI5Y2ZlYjEyMmEgbGVnYWN5LXRydW5rCis0NjAyMCBhYzUwNmUyZGYwNGQ1Mzk2YTQ5NjdlNGU3ODMwYTlmNTVmNGJjODg4IGxlZ2FjeS10cnVuaworNDYwMjEgMjA0ZWMzODNiNDQ1YWJmMzliZjc1MmRhZWQ0MGJiMjc4MDZkZWEyNCBsZWdhY3ktdHJ1bmsKKzQ2MDIyIDMwMTg4YzUyM2JjNTU4ZGFkMDc3YjM1ZGNkMjhiYzdhOTUxMjZhMjUgbGVnYWN5LXRydW5rCis0NjAyMyBhYWUyZmYzM2UyN2MzODU0MGRhYTc0ZTcxYjM5MmNkYzcwYWUxMTU4IGxlZ2FjeS10cnVuaworNDYwMjQgYWIxZGM3ZTIzYmZlNTEzOWU1NjQ1NzFlOTY2MGI3NjllYWFkZmQ1NiBsZWdhY3ktdHJ1bmsKKzQ2MDI1IDdjYWE2ZDMzYTRjNjc5OGQ0ODA2MzQxYTJhNzcwZWMxY2FmYWM0MzMgbGVnYWN5LXRydW5rCis0NjAyNiBiZmI3NmFlODJjOTEyMWJlMDgzYTMwYThiYmUyNTUwYjAyYWMwNWRiIGxlZ2FjeS10cnVuaworNDYwMjcgYzJlM2I1YzM2ZGU0NTJiZDBlNGU3NDcyYWRhMzA0MTdhNjA3ZjJmMSBsZWdhY3ktdHJ1bmsKKzQ2MDI4IGZhM2M0ZWE5OWQ5NWNhNmVkZWQxYTdmOGU1MzljNzk1Mzg2NzgzYjggbGVnYWN5LXRydW5rCis0NjAyOSAwYjQ3MzEwNDliNzFjZTg5MGJiYmVkMzM5YTc5NzZiYjkyZDNmMTQ3IGxlZ2FjeS10cnVuaworNDYwMzAgMDdhYmM2Mjg0ODk5ZGZhMWYwYTM1NDBmNDAyMGY2NGQzNGYxOTQxMiBsZWdhY3ktdHJ1bmsKKzQ2MDMyIGI3M2YyNGUyMWIwYWI2NGM1YmI5ZDhkOGYxNzhhYmFmYjA4YTBiYjMgbGVnYWN5LXRydW5rCis0NjAzMyBiMjg2ZWQ0NTQzOWQ2NjBiZTBjOTAwNzcwMmIyMzRjN2VkZDI5NWMwIGxlZ2FjeS10cnVuaworNDYwMzQgYjM1Y2RhNTVkNjBjNmExOTcwOTU3YThhYWI3OGY5Njg5YjQ2ZGIwZiBsZWdhY3ktdHJ1bmsKKzQ2MDM1IDczYzdhZDVlODdkZWJhNzlmODZkYzgwNGQxMzYxOTk2NmUxM2Q0YmUgbGVnYWN5LXRydW5rCis0NjAzNiA2ZmVhYTQyZWZmNjlmNGQ1MWYxMmViMmU3YjI4OTY5NmIwYWEwODgwIGxlZ2FjeS10cnVuaworNDYwMzcgNDJkNmJhYjg4MDc5ZmY2MGRlMjFiMTc3NjBiZmQ0MzhkZmY4ZmE1NyBsZWdhY3ktdHJ1bmsKKzQ2MDM4IDgxZTM4NWE2NDFlZjhiMDcwM2FlZWI4NWY3ZjlkNmY2MDJkNmY0NDUgbGVnYWN5LXRydW5rCis0NjAzOSA0Y2I5ZGMwZGMzZjllYmQxYjU4NmJmNjBlZDk5NWQyMjRhNzk3Y2JlIGxlZ2FjeS10cnVuaworNDYwNDAgYzY0Y2QyNzFhY2VhOWFmYzQ1NmQ1NzdhNWQxNGIwZDZhN2Y3MWE4MSBsZWdhY3ktdHJ1bmsKKzQ2MDQxIGMwN2E1YzIzMDRmM2ZjZjk2OTcwYzcxZGRhZmY1MGFkYmQzNzkwZDcgbGVnYWN5LXRydW5rCis0NjA0NCAyMTk1OTcyZjczOTFkNGVjNDE2YmM4Y2Q1YTY0MWU3YTE3ZGFhNWRmIGxlZ2FjeS10cnVuaworNDYwNDUgMjZmYjU2Mzg4MWM5M2Q5OGJiNWI0MGQ1ZDU2YjI4ZjE3Yzg2NWFjYSBsZWdhY3ktdHJ1bmsKKzQ2MDQ2IGNiZjJkNTYyZTMyMjkyOTEwNDBjYWEyMGFjODJjOTA5ZGE3ZTIxZmIgbGVnYWN5LXRydW5rCis0NjA0NyBjNDkwN2Q5OTBkYjVkNzBhOGUzZGI3NTg1MjIzZmVhZGE5YzNiMDQzIGxlZ2FjeS10cnVuaworNDYwNTAgMjg1MTE1NTRkZmYxZmY0ZWJkNTI5YTY0MDI5ODQ1M2FkYmNkY2VhZCBsZWdhY3ktdHJ1bmsKKzQ2MDUyIGIwYmE0ZTgyMjlmNzc1MTk2NDcxNGQ3NjVhYjQwNDBhZWEzYjJkMmYgbGVnYWN5LXRydW5rCis0NjA1NCBhY2NkZjExMjRiYTJlZGYzYmUyNjMyZGY3ODAxOWZiMWE4NDRhNzg4IGxlZ2FjeS10cnVuaworNDYwNTUgMTA5NDM3YzRjYWM0NzYwOTczODg4ODEyNTY1ZmVhYjExNTk3ZmU4NCBsZWdhY3ktdHJ1bmsKKzQ2MDU2IGY5NjEyMTc3ZDA4ZDFiYjMzMTk0Y2FhNjllY2Y2ZTE1ZGZlODI0YmUgcmVsZWFzZTI0LW1haW50Cis0NjA1NyBjYzA1NTZhZGMyYjBjYmYxMTdjNGM1ZDNkMGI0NTU2MjNhNTcyYmYzIGxlZ2FjeS10cnVuaworNDYwNTggMmQxODJmY2ZhYjZiOTgwNDBkZmFmMGYwYThiZWRkNmI0MzM2ZmRjZSBsZWdhY3ktdHJ1bmsKKzQ2MDU5IGI0YmRiZDdiMWY1ZWU3NjI3MjhjYThhMTBlMDM4MWNkZWY2YWRjMDMgbGVnYWN5LXRydW5rCis0NjA2MSBjYTFmMWMyMTg5ZTc0ZmFkMGRiYWI0NWQxNmQxOTgxMDE5NWJiNGM0IGxlZ2FjeS10cnVuaworNDYwNjIgYTY5ZWU1YmFkOWIyM2M2ZWI4NjllYjViNjQzYzFlZTYzMThkMjY3NyBsZWdhY3ktdHJ1bmsKKzQ2MDYzIGRhZTBlNGMzOTBlNzcyMTQ1YmZlZDViODg4NjJiNGU4YjQxODJiNmEgbGVnYWN5LXRydW5rCis0NjA2NCBhYTYyMDg1NmU4YTNmNzVjYTY3ZmZlOWQ5M2JkZGQwNTYxYjUxNmUzIGxlZ2FjeS10cnVuaworNDYwNjUgOTU5MTBiYzY1ZjZiOTkxZjQ3YzdlY2M4NjcyOWQ5ZDlhNzM0ZDY5YiBsZWdhY3ktdHJ1bmsKKzQ2MDY4IDEwNTVkNjI2ZWQ1OTRkNjM4ZjA0MzMxMjU3MWRhOWFjMWFkOTc1NTYgcmpvbmVzLWZ1bmNjYWxsCis0NjA2OSA4ODJiNjEyYTVmZTljYjdhMzVjNzhmZWYzNDEwNmRkMzE0YzUwNWI5IHJqb25lcy1mdW5jY2FsbAorNDYwNzAgMjdjODAwNTgxNzNlOGE3YWYxYTJjNmY4NDAwZDgzYjJhNDIxYmU3MSBsZWdhY3ktdHJ1bmsKKzQ2MDcxIGZiNGYwZmQ3ZWJhNGViZTM1NzU4ZmRkZWIyNWU0MzA3YmMxZThmODIgbGVnYWN5LXRydW5rCis0NjA3MiA1MTI0MWNjOTU4ODNlZGVkNWM4ZDc1ZDNkODk5Y2E0YzQyNzIxMjA3IHNyZWlmc2NobmVpZGVyLTY0aW50cworNDYwNzMgN2UxNmZjY2UzNGExMzUzOTUxYTk1YzZlYjI0N2I2Y2M2MTRjZTA2MSBsZWdhY3ktdHJ1bmsKKzQ2MDc1IGQ3MTBjMmRiYTNlODgwYzkyMGNmZTg5ZDAxZjkwMTM1ODhjOWMzMDkgbGVnYWN5LXRydW5rCis0NjA3NiBmZWIwMGRmOTE5MjIwNmM0NDRjNDJjYjI5NDVjNjVhOGY4NzdlMjc4IGxlZ2FjeS10cnVuaworNDYwNzcgY2NlZDgzYTkxNTc3OGFmN2QyMGEzMmExNTg3ZjIwMzFlODg0NjBiYiByam9uZXMtZnVuY2NhbGwKKzQ2MDc5IDYwNGFmODY3YzY1ZmI4MTI1MjQ4M2VmNWRhZTRhZDI0YWE0OGFjZWEgbGVnYWN5LXRydW5rCis0NjA4MCBjZDM0YTA4ODMwNTM2ZTNiMTQ0N2ExNTM5ZjllZDMwYTU5OTNkMWEyIHJqb25lcy1mdW5jY2FsbAorNDYwODEgZWM1NGM2ZGY5MDQwMmJmZWYxYmE2MTAxOTU1MzY5ODBlMmYzMmVhMyByam9uZXMtZnVuY2NhbGwKKzQ2MDgyIDAyYTBjNjkyOGM1MGE3YzFjNjkyMWI5ZDBlZDI5YTRmNGJhMjhhNWIgc3RldmUtbm90cmFjaW5nCis0NjA4NCAwMzczYTA3NDAwNGMyZWE5YTU0OWYyZWVmMWFhNjJkODUwZDUxN2M2IGxlZ2FjeS10cnVuaworNDYwODUgNWVhZjhiOTU4N2Q4Njk5NDFjNDhhYmQxMTRkNzAzMmZhNmJiNjA1NSBsZWdhY3ktdHJ1bmsKKzQ2MDg2IDg3MjA0MmEzYjEzNDNjOWE1MjJjZGUyZjhlODViZjhlMTZlZDUzMzcgcmpvbmVzLWZ1bmNjYWxsCis0NjA4OCBmYjgxNmRmY2QwMzE1NDMwZTJiZmZlNzQ1MDNiMGJiODAwMmMxZjJlIHJqb25lcy1mdW5jY2FsbAorNDYwODkgNGNlYWJiNTQxNGQ1ZjJhMjQzM2YyYTM4NzY0OWFjNjkzZjU0ZmQyZSByam9uZXMtZnVuY2NhbGwKKzQ2MDkwIDlhMjhiZmE2Zjc4N2M0NjM3M2E4Y2JiYjAwZWU3NDI5NTFiNjg0NDEgYmxhaXMtYnl0ZWJ1ZgorNDYwOTMgMDA0NTZmY2EzN2M0MjQ0Y2RlZGRiMjFiODQ1NTNiZjNlN2U3MmVlMyByam9uZXMtZnVuY2NhbGwKKzQ2MDk0IDBkZTlhNzg5ZGUzOTA0ZTVjNjk4YTA5YWRjYWQ2YjFlMmVhZTdjZjkgbGVnYWN5LXRydW5rCis0NjA5NSAwYmE3MTFhNDk2ZTZiMDAxOWQwMzQ0NDdkMmZkOWFlNGQ5ZDI2ZmEwIGxlZ2FjeS10cnVuaworNDYwOTYgYTYzN2M3OGJmMTE5NWVmYzdiNWY0YTk0N2JmMWUwZmIxODk0NDBhMiBsZWdhY3ktdHJ1bmsKKzQ2MDk4IDZhNmM1NDkyYjlhZDJlYWQ5YWVhOGUzMDIzNzc3N2FjZjQ1ODcwNDUgbGVnYWN5LXRydW5rCis0NjEwMSBlZTIxMzk5MzVhMWQzYWY1MmQ1MDA5Yjc0NzE5Mjg2NDAyMjE2ZmMyIGxlZ2FjeS10cnVuaworNDYxMDMgNWI1ODcxOTBmNGM2ODU3N2EzMjUyOTYzYzg1NzZjNGY0M2Y4YzE2NCBsZWdhY3ktdHJ1bmsKKzQ2MTA0IDMwNzhmZGI3Y2YzZGY1NWM3M2Y0M2FmYjUzMjc5NTI3YTk5MTE2ZmQgbGVnYWN5LXRydW5rCis0NjEwOCBiN2FhZjIxYzQ3NTY0MDNmMDE4MjhhNzliZmNiMjZiNzJmYTNhYjk0IGxlZ2FjeS10cnVuaworNDYxMDkgNzZiZWRmOWVkMjJmZjI0ZTNkNTQzN2M2NGJmNTBiMGU5NzYwMGRmOCBsZWdhY3ktdHJ1bmsKKzQ2MTEwIGNhMzQ1MjFiYjEzYzM4MzdkNjUxZmNhOTBjMWRmMGM0YmNlMjkyMjIgbGVnYWN5LXRydW5rCis0NjExMyA3NWJkZDQ0Zjg1ZGNkNGFkYTg2Y2ViMDllMmY3MmM0NDc3Y2YwZWRiIGxlZ2FjeS10cnVuaworNDYxMTUgOWE5MDc1M2Y2YmZiYjIxYTlkN2JmMjEzZWM5N2I1ZjE3NDQ0NzEyNSAuLi9iaXBwb2xpdG8tbmV3c3RydWN0Cis0NjExNyA2NjdhMmNhZTc5ZTYyNjk2NTE2YjkxMjAzMTZmMGYzZmI5NmQ0Yzc2IC4uL2JpcHBvbGl0by1uZXdzdHJ1Y3QKKzQ2MTE4IDU4MzE3ZGY0ZDMwYmJjYjQyZGFiMDM3Mjg5NTU4NjViNDRkNDhlYTMgYmxhaXMtYnl0ZWJ1ZgorNDYxMjMgNGIwZmY3ODhlOWZkYWUwYTdkYmI2ZWRjZDUyNTUyODdmZDRmMzI1YyBydW5hci1sb25nc2xpY2UtYnJhbmNoCis0NjEyNSAwZjBmMDQ2YTI5ZmJhNDhkYzdmN2U4M2FhMzhiNGNjZTlkYTg4OWFhIHJqb25lcy1mdW5jY2FsbAorNDYxMjYgZmY1MGFlMTNkYjllNjhkZmY2MGI1M2Q4NTJhMTcxOTM0MDVkYTdmZCByam9uZXMtZnVuY2NhbGwKKzQ2MTI3IGVhYWU2OTkwZTJkMThkMmE4ZGI0N2Q2NmFiMDliNjE5N2U0OTc4YTUgcmpvbmVzLWZ1bmNjYWxsCis0NjEyOCA0YmQyOTlkMDBlNGM2ZjE3M2NiZmYzNWRlZjkzODBmNDkzOTRlOWU4IGxlZ2FjeS10cnVuaworNDYxMjkgYmY1ZmI2ZTc1MjdjMmZmZTg1MWE5OWQ1MjBkY2ViZjM1NzFhYmM4OCBsZWdhY3ktdHJ1bmsKKzQ2MTMwIDQ5NWEzNGU1NGQ2MGE1Mjc4NTJkODcwNGE0NGFmYWQzOTIwZmJhZjMgbGVnYWN5LXRydW5rCis0NjEzMSA5ZWZjY2Y1NmQ0ZTcxZjRkNDczZWYwMmI0ODNiZGYxZDNmNDVkOWJlIGxlZ2FjeS10cnVuaworNDYxMzIgYWY0NmM3ZWQwNWViNzkxYjFlNDM2NWI3ODA4MjQyZWJmYmUyNjg0NCBsZWdhY3ktdHJ1bmsKKzQ2MTMzIDlmZGQ0MzQyMTZlZjgyZWRiMmVmN2E1ZmE3YzI2N2Y4Y2YxZWJkYzIgbGVnYWN5LXRydW5rCis0NjEzNCA4OTVkYTQyNDgwZjFjMzU3MzcwOGFjMTI4OGRkZjQ2ZjhjMWU0NTljIGxlZ2FjeS10cnVuaworNDYxMzYgYzFjZTBiODMxNjM2NzAzZDEzZDgxMDdlZTZkNDA1MzFjMGU0ZmFjYyBsZWdhY3ktdHJ1bmsKKzQ2MTQxIDI3ODgyYThlNDNhOWU4OWIxMDMzYjIyYTM3MzE3YTA0YWVlOWU5OGQgbGVnYWN5LXRydW5rCis0NjE0MiA2Yjc5ZmZmYmJlMWYwNDMzZDFiZDVhYzE1MGU4NGU2NDU5MzU1YmEyIGxlZ2FjeS10cnVuaworNDYxNDQgZWZiN2U4NzI0ZWVmYTZjZTc2MDQ3YWE5NWFmNDRkY2NmMWZkMTVmNSBsZWdhY3ktdHJ1bmsKKzQ2MTQ4IDMzNjMxYjZiMDgwMTQ3NTk2ZTYyMDVmNTNlYjlhOTlhNjg0MWE4NmIgbGVnYWN5LXRydW5rCis0NjE0OSA3ZDgyY2RlZDhhYjE1MmViMTk1NDhmZjk5OTg5Mzc2NjE4NTA2NDNlIGxlZ2FjeS10cnVuaworNDYxNTAgNzRjODJlYmM0ZTQ0OTkxY2I1YTVhZDcwZWE5NDc1ZjM1M2Y0NWY0ZCBsZWdhY3ktdHJ1bmsKKzQ2MTUxIGNmNWE5MDU3ZWQzYTkyMDRlYjg3NTZkYjljNDRkMjM1YmE3MGFmMzkgbGVnYWN5LXRydW5rCis0NjE1MiBlMDdkYzEzNDhkYWQ5ZDRjNDQ3ZjJmMjIwMWVkNGM5N2Y1MjdkMmZhIGxlZ2FjeS10cnVuaworNDYxNTMgYjhiZWY1YTA3ZGY2Y2NmYjUyMTJkZTdmYjdjMTEyN2ZlYzA5MDllOCBsZWdhY3ktdHJ1bmsKKzQ2MTU1IDFkYzU2NTdmMTc0NTNjNzBhNzhiZTZjYTc2ZTI2M2YzNGRjZDg1NWMgbGVnYWN5LXRydW5rCis0NjE1NiAzMTRkNjY2YzdhZGJkMWQ3ZWMyNDk4YjMxNjBmZDA3ODYxOGM5Mzg5IGxlZ2FjeS10cnVuaworNDYxNTcgZGU5ZjFhMTQwNjExOTM3MmRmOWVmMjNhNDIzZDhiNjJhMDg2OTVlNyBsZWdhY3ktdHJ1bmsKKzQ2MTU4IDlhZTY5YmNhYjlmNzIyMTdiYmMxNGVhOWY5ZTUzODM4MWYzNzYxMDkgbGVnYWN5LXRydW5rCis0NjE1OSAwNjkxZjNmYjM5Y2FhMWQwZDlhNDhkNGVlZTRlYTg3YzE1YzY4MTc4IGJsYWlzLWJ5dGVidWYKKzQ2MTYxIDJkNTVlOTc5MDAzNThiYjdiNDUzM2RkMDk2Nzc1ZDc2Yzk3ZjZlZDQgbGVnYWN5LXRydW5rCis0NjE2MiAzNTdiNTQwM2U4MWFkM2M5ZjYzNzIzMzc2OWU5Y2E3YTRmNjFhZGZhIGJsYWlzLWJ5dGVidWYKKzQ2MTY0IDA0MmVkNmY4MDg0N2NjMDRiYjNhNDAxMDMzYTM3ZmZjMzlkM2RhOWQgYmxhaXMtYnl0ZWJ1ZgorNDYxNjUgYTU4OWI3NDQxNWMwMjJmNmUxNmU3MDE0ZGM2ZjYzYTVhNTQyMDgxMyBibGFpcy1ieXRlYnVmCis0NjE3MCA4OWIyY2E1MTIzMDcyM2UyYThlYTMwZDE2NDQyYWUwYTAyYzEzNjkwIHJqb25lcy1wcmVhbGxvYworNDYxNzEgMGE5NTRmNGUzZTM2YTJhY2M5NzY3YmQwZmQyMTEwOTQzZWMxMDU0NCByam9uZXMtcHJlYWxsb2MKKzQ2MTczIDQzYjE0NzRiNTEyYmJiNGNmMDA4ZmFkYjhmYzNmYTE5OWNkM2NlNGEgbGVnYWN5LXRydW5rCis0NjE3NSA2ZGEzMWM0OWViMGE2ODYzNjFlMWE1NjVjYjg4OGYzNzQ1YmE2YzBkIHJqb25lcy1wcmVhbGxvYworNDYxNzYgMjI5OTVjMTA5ZWZkNjdlNWMwNjZlY2E2OWNmM2NhMGQ0ODRmM2FkMSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTc3IDhhZDllMTQ0ODlmZmYxZjFiNTU4ZTFiOGM0NDZhYzg5ZjQ1Y2NkMmYgYmxhaXMtYnl0ZWJ1ZgorNDYxODIgYjViMjU2OTY2ZmU5MmI0MTViNzRiNzAzM2Q4ODg1NGIwZmJmNDYzMiBsZWdhY3ktdHJ1bmsKKzQ2MTg0IGI4MjVlNjIyNzM2NjZlNmQyYjExMzhkNTk4MmUwOWY3ODM5ZTAzMzcgbGVnYWN5LXRydW5rCis0NjE4NiBjMjZiOWZkYjY1ZmIzYjU3NmI2MzVkNTMxN2IyZjlhNDE1NzM4NmEzIGJsYWlzLWJ5dGVidWYKKzQ2MTg5IDI2MGQ1YTZjZTMwZjRlMjU2OWFiODAxN2MzNjg3NzU3MTJkMWZhYmUgbGVnYWN5LXRydW5rCis0NjE5MCBmZWY0OTZhZDdmNmNkMmJkYzFmMjVkN2FjMDViNDc5OTliZmQzZTdlIGJsYWlzLWJ5dGVidWYKKzQ2MTkyIDUxZDZlMjcxODI0MzY4ZWVlYWYyYmJjNjg0NzczOTNjY2ZmMGU0MDggYmxhaXMtYnl0ZWJ1ZgorNDYxOTMgYWFjZTMxNDhmN2ViYWYwMjI5MjZkM2QyNzg3OGVhYzFjNmEwOTI0NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTk0IDNjZmFlM2EwZTY5NTkxMDcxZDE3NGIxNGMyYmFhMjczMTg5ZjM1MGMgYmxhaXMtYnl0ZWJ1ZgorNDYxOTUgZjdhNzc0MmFlZjgzYjg1NDIzMDc0ZWJlMTllZTBjYmQxMTFhMWJhNSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTk3IDU4ZDIwZmViNmUwMzliYmE2ZjE2MTg5MzdmOGUzODBlMGVhNzk2NDggc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5OCA2ODYwYzM2ZjdkYjc1MTRmNWNhZDliZTM1NWI4MjhlZDg2NzI4ODM2IGxlZ2FjeS10cnVuaworNDYxOTkgOTFmZTFiMGFkYmYyNjE0ZjllYjBiYTk3NGY2ODFiNDIyMTUzZDdiZiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjAwIDMyYmEzYTBjNjA0MDkzODNkOGRkMzM0ODZiMTllZjcxNjFjMGUwNjQgbGVnYWN5LXRydW5rCis0NjIwMSBiMjQ5MWZkMGE0ZGM2YzY3ZGI0YjI5YWE1YWQ5YWYyMzE0MmI4OWI5IGxlZ2FjeS10cnVuaworNDYyMDIgMWM1ZWU5NjMxYzZiOGI4OTY2YmU4NTc5ZGUxNTllNjViMDliMjM2NSBsZWdhY3ktdHJ1bmsKKzQ2MjAzIDg4Y2M3ZTRmMDFmZjRkMGY1N2YzYzJhMGFkMTk4YTk2ZDdjZTYzZGIgbGVnYWN5LXRydW5rCis0NjIwNCBiY2VhNzRiMzVkMWZlZGUwZjc5MTdjMTQzYTNjYmRhNTUxZGNhYzFlIGxlZ2FjeS10cnVuaworNDYyMDUgNjYzMjJmY2E5MWI0MWJiYmMzMjQzZWMwZWIzYjM3YzEwOWYyYWRhMyBsZWdhY3ktdHJ1bmsKKzQ2MjA2IDA0M2UyOWExZTM5ODVlY2NiMDEwMWZhNjUzZGU2ZDdiYWNiMTRhZGYgcmVsZWFzZTI0LW1haW50Cis0NjIwNyA0NTc4ODEyOGExYjE1NDQ5ZWE2YjJmY2FiZDg0YjA4NzdjMTJjZTEwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyMDggNjk4MTk4Y2FiYmM1YWI3Nzc1MWI1OTA5YzEzOWZkMjhkZjk0NmJmZiBsZWdhY3ktdHJ1bmsKKzQ2MjA5IDhjNTE0NmM1MWUyZGYwMGU4ZDI3OGQxMGYwYjRjZmQ5ODhjNGMwYmMgbGVnYWN5LXRydW5rCis0NjIxMCA3NWUxY2QyMmI1NmJkZGM0YWYwZTgwMDNmODQyYTBhYzQyY2ZjMDIwIGxlZ2FjeS10cnVuaworNDYyMTEgM2RlNzA2NGRmYTU2NDE0YWM0NWM5ODA4YzUzNTA0NWZhZmJjMjZjZSBsZWdhY3ktdHJ1bmsKKzQ2MjEyIDliYjRjMTllNTYxMzRjNjg5MWI5MGU4YWQ0OGFiN2UwOTQ1NjliOTQgYmxhaXMtYnl0ZWJ1ZgorNDYyMTQgYWQxZTI0MzhjZmFhNWJmNDVlNDhjOTk0OTZlOGViMDQ0NjU5NDU3NyBsZWdhY3ktdHJ1bmsKKzQ2MjE1IDdiM2Q0YTgxZTk0ZGU1YWFhYWM1NmRkODNjNzRlYTI3NWZiYjUwMzMgYmxhaXMtYnl0ZWJ1ZgorNDYyMTYgZTE1YjE0YzdmYTE0ZDVjNDQwMDUyYWYxMTA1Y2IxOTE4MWFlZTljZiBsZWdhY3ktdHJ1bmsKKzQ2MjE3IDY4OGYyNTc1NzEwNDMzMTNmYTEwYWY4MDhjYjFlYmUwOGRmY2QxOWUgbGVnYWN5LXRydW5rCis0NjIxOSA0MTc2OGRlMTdlYWQ5MDkyYzQ1NGFkZjk5MTBmOWQ4ZGJiODUyYWM3IGxlZ2FjeS10cnVuaworNDYyMjAgNGMwYzNlY2ZmY2FjMmIzMjE4NDNiMTk3ODk0ZjMwMTMzMjNmZjIyZiBsZWdhY3ktdHJ1bmsKKzQ2MjIxIGJhNzEzZDMxZDAwYzY2OTkyMWIzNzMzY2Y0YzllZDA1MTEyMDhhYWEgbGVnYWN5LXRydW5rCis0NjIyMiAyOWNjZDc3MTA0MTNmZWZkOWVhNjkwODIwYWJiNGViMDQwM2IzMmVhIGxlZ2FjeS10cnVuaworNDYyMjMgOTg2YmVlMTZiYjQ0NTFjYjFkODIzNWFiN2ViNWVjNzhlMzUwYjcwNyBsZWdhY3ktdHJ1bmsKKzQ2MjI0IGFlNmJiZjJmMmE0MTJiNmM0MWQxNTQ0YzIwZTQyNDM3M2VkN2Q0OTUgbGVnYWN5LXRydW5rCis0NjIyNiA0MTgwOTQwNmEzNWViYTA0ZjkzYWZiNGY0NTRhY2MwNWVjOTg0MTBhIGxlZ2FjeS10cnVuaworNDYyMjcgZGNjYmNiYmQ2NzIwOGEwNzgyMzBlY2M4YTgwM2E4ZDk0OTA2MTFlYSBsZWdhY3ktdHJ1bmsKKzQ2MjI5IDljMDhhN2JkYmMzMTBhNzc0NjA4NDU5OWY2ZGNjNThlY2UzYWMwZmQgbGVnYWN5LXRydW5rCis0NjIzMCAxN2VhYThiNTdlMDUyZjUxNDY1Y2IzMzFmYWJmYzNjNWEzMzdlNzFjIGxlZ2FjeS10cnVuaworNDYyMzEgMDU0OTZkZWViYTY0YmU3MDQwMTBiYzYxZjNjOGU1ZGUyZmQwYjVhZSBsZWdhY3ktdHJ1bmsKKzQ2MjMyIDZmYzFkYzA4NjQ1OTQwMjU5N2Y3ODMwMWI5OTRkMGQ5ZjVhYjcxNDEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjIzMyAzZTZkNzc1NTJiZTMwMmJlYWMyNTYyZDRkNTI3OTcxMmUwNGQ2OGY1IGxlZ2FjeS10cnVuaworNDYyMzQgYzVkNjE5NjVjYWQ0MjE5YThmN2EwMmNlM2FiMmUzY2FjZjdkODdlYSBsZWdhY3ktdHJ1bmsKKzQ2MjM1IDVhNjMzNjkwNTZhN2ZlNWZjM2MwYjVmZjBkZTEwODdiMTk2NTA3MTggbGVnYWN5LXRydW5rCis0NjIzNiBmMjc5ZDAzMWYwY2VhM2NmOGJjNGYxMDE4YWQ5ZmE5ZDI1ZThkODY2IGJsYWlzLWJ5dGVidWYKKzQ2MjM4IDc0YmViMTg5ZmQ3ZWU0ODRjZmMyZDIzMzhhZWEyNDhhYmRiZjVlYjYgbGVnYWN5LXRydW5rCis0NjIzOSAyYWE5NDA5MzUxZDYxZjkzMTdjZTExZGE3NzUyZTA5NjVkNzJkYjNiIGxlZ2FjeS10cnVuaworNDYyNDAgODUwZDRmNzcxN2I4ZGVhMGY5YmRmNTkwMGU1MDIzYzE1MGFkNmNhMiBsZWdhY3ktdHJ1bmsKKzQ2MjQxIGM5ZGMzMDBlZWU2ODJhY2UwNWY3N2I0ODhkOTAzNTM2NDZlZGZmZjAgbGVnYWN5LXRydW5rCis0NjI0MiAwNTMyNGFhNDQ0YmRlMWMwYjZmMGQyOTk0YmEzZmY1MTg1NTE4ZjgyIGxlZ2FjeS10cnVuaworNDYyNDMgNGE4YzlmOWI2NmU2OGVjOTcwNWMyM2RiYTVhZWMwYTQ5ZmJkNzBkYSBsZWdhY3ktdHJ1bmsKKzQ2MjQ0IDFmZGYyOWE4OGYwZWUwYjEzYjI4OTIxYTVmYmZiMTc1MWI1ZjBjZjMgbGVnYWN5LXRydW5rCis0NjI0NSA5MWM2Yzk0NDkwYjFjNTY0NGRhYjY4Zjg5ZTRjNDFjZTQzMzhlNTY3IGxlZ2FjeS10cnVuaworNDYyNDYgMmYxNmUyNzE1MjIzNWI3ZmYzY2I4N2IxNTExMzU1Zjc4NTdjNWEyNyBsZWdhY3ktdHJ1bmsKKzQ2MjQ3IGVjZjJiZjQxODJhZGY0OTMzZjEyZDA2NGM4NTFiODZmNWE5NzAxMGQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI0OCA2OGEzNDhjOTg2OGRiOGIzNTg2MTViYjQwNDcxYmFjYTI1YTUwMjFjIGxlZ2FjeS10cnVuaworNDYyNDkgYzAwNmMyNzIxMTZmZmFhNmE4MzI3YTM5YzRhMDNmZGI0YTgyOGMwNSBsZWdhY3ktdHJ1bmsKKzQ2MjUxIGMzNTA4YTk0MTU2ODM2NTk2YTAzZThhOTA5MzI2NGNjMWRjZDg4YmMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI1MiBlMTZiNDE1NzY4NmNiOWE0ODg4NTJkNDQ4MGYyMjc1MjYxNGYwOTNiIGxlZ2FjeS10cnVuaworNDYyNTMgM2Q0NzdkMTU4NDAxYzcxYjEzODQzZDcwN2ZmYTZkYmRjMWZmNzc3OSBsZWdhY3ktdHJ1bmsKKzQ2MjU0IGVhMGFkNGQ0ZmY4ZWRmMGFjYjk4NTE5ZTJmZTVkMzBlMTVkZTJlOGEgbGVnYWN5LXRydW5rCis0NjI1NSBjNzdkYTI3MzZmYjI2NWQ2YTQ0NTdhYjBjMmNlODg1MzY4NzQxNzY0IGxlZ2FjeS10cnVuaworNDYyNTYgMzU4N2VlMzEzYjAwNjEwMmFlNjEwYTU5N2U4NGU0ZTc4Mjk2YTBjNSBsZWdhY3ktdHJ1bmsKKzQ2MjU3IDA0ZjM5ZWNiYzczYzc2YTU1YWU4Y2MxZWY1YjUzZGY1YjdlZmQwYzMgbGVnYWN5LXRydW5rCis0NjI1OCBkMzNkOGE4YjU0NWVlZWIxNTBkMWI0YzU3OGM4MGU5MzJmNDRmYjQ3IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNTkgOGE1OGFhNDBkY2MwNWQ1ODA0MWE2YjRiZTZmMzhkMTY0MWIzMGUyZiBsZWdhY3ktdHJ1bmsKKzQ2MjYwIDU1NjYyMGNkN2IxZGUzYzExODY1MTUyZDc1OWRiMDBjZWE1NDUzZDAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI2MSA5Zjg4NGQzNGEwZWNkNGI5OWU3MjI4ZDU5OGY1YjI5NTdkYTg0Njk5IGxlZ2FjeS10cnVuaworNDYyNjIgZTllYjUyNmI3MTExNTgwZDE4M2Q4ZGZkN2ZjZWQ4YjJiZTU2ZmFkYiBsZWdhY3ktdHJ1bmsKKzQ2MjYzIGNlZWJlNmNjNDU3MDRjOGMxOGJmYWE0ZDdhMWQ5OGEzODVkZTQ5NzUgbGVnYWN5LXRydW5rCis0NjI2NCBhYjAyMjE4MTE3NzE3YmI2MWIwYTc2YzRjNWI4NjYxYmEwNTMzMmI1IGxlZ2FjeS10cnVuaworNDYyNjUgMDg3Mjg3MDA5NjU4ZWVjNzA5OTU3MmFmNWI3ZTIzZGY3ZDlkYmRhOCBsZWdhY3ktdHJ1bmsKKzQ2MjY2IDdhNmFmNGExNDNjNjJiYzVmNmU0ZmY4OTBjOTk3MjJlNWUwMDM0NjQgbGVnYWN5LXRydW5rCis0NjI2NyA4YTljZDk5OTUzNWQxNzk3NDYwY2U2YzA1NjBmOGI4Y2M3YTI0M2EyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNjggZWIyMzdhMzdlYTAyZGViMzMwZTJmZTVlMWY0MzcyOTcyYjA4OTA3NiBsZWdhY3ktdHJ1bmsKKzQ2MjY5IGRkYzIwMGFmZGUxYTgzMWIxYzJiZGE3M2Y2YTEzNmE1MjQ3M2U5MWEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI3MCBkNmQ1NTNiOWQ0Njk3N2ZiZGNjZWQwMWFlMjEwNDNlNTFkZjA3Yzc1IGJsYWlzLWJ5dGVidWYKKzQ2MjcxIDQ2ZDc3YmIzMmZiMGRhOGI0MWE2NWMxYjI1MDFiNGZhMTFjZTE5YmMgbGVnYWN5LXRydW5rCis0NjI3MiA1YTE0NzM2NTUyN2U1Mzg0NWEwZjdhYzFhM2NmNmVlNjk4MDkwYmFiIGxlZ2FjeS10cnVuaworNDYyNzMgZjkzMzJhZDQyODdhN2Y2ZDg2MjRkOTA4N2NiMDIxOTAxZDQ3MzVhYyBsZWdhY3ktdHJ1bmsKKzQ2Mjc0IDgyYjY4MDg0NmRmODg5N2ZmNzI4YmNlN2Q2ZTY1ZDgwM2Q0OWIzODMgbGVnYWN5LXRydW5rCis0NjI3NSA4MWI2NDFkYTVjNzk1MmE3ZTA0MDVmODNiOTZlOWFmMDFhMWU0MDc0IHJlbGVhc2UyNC1tYWludAorNDYyNzYgMTAzNWEyYjMxZTZkZjI2MTZjOWE0MjA4ZWViMWFhOTRlMGZhZGY2ZCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mjc4IDk1OGY5MTY4NDIwOWQwMGMzM2Q3ZmVmYTY4Y2U0NmU5ZDAzYTljZWYgbGVnYWN5LXRydW5rCis0NjI4MCAxNjcwZmY3MjZlOGZkN2Q3NDc4Mjg2MTVmMTAwOWEyNzQ1MjVjNDc1IGxlZ2FjeS10cnVuaworNDYyODEgMzA5MWE3NWViNTYwYzU2ZGU3N2Y4NjlmZmY3ZmYxODE5MTY5NzAyYiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjgzIGRkNDE3MzFkZWU2ZDRiZDJjOGQwNWFiNTRlNDQ0NTE0OGQyNTJhYzUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI4NCAyZjRmYjY0MTRlODcyMDhhYmMxODMxZDM1YTY1NmIwMmI1NzE3OGU1IGJsYWlzLWJ5dGVidWYKKzQ2Mjg1IDhhOTljZGVmMGM5NGFjYjU4MWY1M2ViMjVjYzIxZjE0Yjk2ZjU5YjggbGVnYWN5LXRydW5rCis0NjI4NiBhNjU0ZDYxZDM2ZDUzMTk2NzFiMTBiMGIxZTUyMTg5MWIxNzljZTc0IGxlZ2FjeS10cnVuaworNDYyODcgNTM4MmFhZjNhMGRhYzVmY2YyZTU4OWQxZjQxZmZmMGIyOTkzNmU2ZSBsZWdhY3ktdHJ1bmsKKzQ2Mjg4IGM4ZTRiM2IzOTc3NDMwNWZhYzhhN2E1MTM5Nzc2ZDk3ZDlhM2Q1ZmYgbGVnYWN5LXRydW5rCis0NjI4OSA4MzVlYTU5OGE0MDYwYmE4MWI5ODhkYzE2MzNkZTk5ZGMyOTI2MjBmIGJsYWlzLWJ5dGVidWYKKzQ2MjkwIDY2MTBkNGJlOGZiZDkwMjUwNTQwM2Q5MmMwYmZjMzYwMDc5MzYwM2UgbGVnYWN5LXRydW5rCis0NjI5MSBmZTY1M2UyMjQ4OGM5YTBiMDgzMzFkMDU0YjhmMGU5NjEwYTRiMDYxIGxlZ2FjeS10cnVuaworNDYyOTIgOTJiMGZjNTRkMjMwMGQwNThkMDJiZTcwNGUyYjcwMmZlOWU3MTQ4MiBsZWdhY3ktdHJ1bmsKKzQ2MjkzIDZkODYxNWY5ZjFjY2E5NzgzODViNzk2MzhiYzgxMjM0NWJmYzIyNzYgbGVnYWN5LXRydW5rCis0NjI5NCA4ZDI4ZTYzZThmMjE2NjQ4M2YwMDJlNWRmNjQ5NmE4NWIxY2U5NmZiIGxlZ2FjeS10cnVuaworNDYyOTUgYWQyZTRkZTQ3ZDA5NjM2NWRhZWQ3ZTE0Y2ZiZWU0ZTE3YzA4OWM4MyBsZWdhY3ktdHJ1bmsKKzQ2Mjk2IDJmNDVhZDY2Y2QzNjUwNThiMDBkZmQyMWY2NmQ2NDAwYjc0OGU5NDIgYmxhaXMtYnl0ZWJ1ZgorNDYyOTcgM2JlZjI0MDg2YWNlNTFkYTMyYTIxZTY1NWZhZTU1MjVlZmRkZjc3ZiBsZWdhY3ktdHJ1bmsKKzQ2Mjk4IGI3Yjc2MTVlYTVmNWYyMDczZjRmYzEyZjgyMTBmNmUwZTczZDRjZWUgbGVnYWN5LXRydW5rCis0NjI5OSA5ZjdiMWI3YWRmMDEwZTJmYmZkYzU3OGY4MTIwODcxMTQxZDA0ZjM3IGxlZ2FjeS10cnVuaworNDYzMDAgMzZjZDRhNGFiOGY3ZThmNzJiYTgwMjBjYjU3ZDBhODI1YThhMTg1NyBsZWdhY3ktdHJ1bmsKKzQ2MzAxIGMwN2E5NmY2OTgzOTYyYjRiMmE1MTg1ZjFiMjRhOGZkZmUwOTk0NmUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwMiA5NTc3MjdmMmZmMDlmMzkzNzM3MjcxNzVkOTJlMzE4ZDM4OGNlNGM0IGxlZ2FjeS10cnVuaworNDYzMDMgOTg4Mzc5MDE0NDc3MzA4MmIwYzVmMTVmMTk4NzVhMGQzM2Y1MmI1NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzA0IDM3OGJhNjc3YjU3OTcwNzZmZDM0ODUwZGQyNzJkY2E1NWI5MjkyNDAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwNSA3OGM2MGU1OTlhZmRiN2JhZGY2MWE0ODQzYThjODFlNTY1ZTBiNzIwIGxlZ2FjeS10cnVuaworNDYzMDYgMzFiOWM3OGEwN2YzNjlmZDFkYzEwZWU3Njg4MmFiYTAyYWUxY2EzMiBiaXBwb2xpdG8tbmV3c3RydWN0Cis0NjMwNyAwNWJiYmRkZmNlM2Y3YTI3YjI1MTUzOWRlZGQ3YTk3ZGM2NDdjMzlmIGxlZ2FjeS10cnVuaworNDYzMDggYmU3NDE1YjBhMzE4NTFhM2M5M2JiYmNmMDRiYmFiNjEyMDE1YTJjNyBsZWdhY3ktdHJ1bmsKKzQ2MzA5IGUzZWUzZWIxODY3OGRjNmU4MzdmM2JlZTZiNThkZmJlMGJjODY1NWMgbGVnYWN5LXRydW5rCis0NjMxMCBkMmRmNGEzNTllMzUyYWY3N2MwZTM4MzE3NWZmNWJkOWQ2N2FjYzQyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTEgYTRlZTQ1OWZmMjg4YTQyZTg5MmVkZDgwYTkzNTQzZjYwOTg1MTlkZSBibGFpcy1ieXRlYnVmCis0NjMxMyA4OGU5ZDg2NzcwMDY2ZWNkMGZiYjFjYTkzZjBiMDE5Mjk2YTFiNjJmIGxlZ2FjeS10cnVuaworNDYzMTQgNDU0YmRlN2U0MTZlNDliYTdiYjBlOTdiYjdkY2MwYjMyYjczYWEyZCBsZWdhY3ktdHJ1bmsKKzQ2MzE1IDg5MGY2MTYxYzk4YTVhOTE1N2YwODQzMTViYTIwMGJhMjk5MjQ4NDUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxNiA2NTMzZDhhZTFmZDk1MTJlZjE3Yjk0ZWE4OTAxYjYwM2RjMzhhOTJhIGxlZ2FjeS10cnVuaworNDYzMTcgYTA0M2M1ZDcxZWFhMThiMzZhZmVhNTBjNzc3YWY4YWU2NTNmMmQ0YiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzE4IDc2YjMwMWFjNGE1ZTYzNDE4NmY4NGRlZmZkNGVlMWY0YjgxMjU0MDMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxOSA4YTM4ZGE4ZTEyOGY3ZGJjNjQwODkzZTU0NDJjOTNkMzAxZWQ0NjcwIHJlbGVhc2UyNC1tYWludAorNDYzMjAgNTIxM2I2MDY1MTk3OTZlOTAwZTU1YjcyODFmNmNjODQzOTM0N2JhYyBsZWdhY3ktdHJ1bmsKKzQ2MzI1IDFhMTEzMDUwNjkwYjc0MWYzMjc2YzcxZGU5MDRlMWVjNmEyYjk5NmEgbGVnYWN5LXRydW5rCis0NjMyNyBjMDA4MjcwNWYyZjIzNDNhMjQ5Mjk5YjRlNDEwMGFkZjVhZmUyNzY4IGxlZ2FjeS10cnVuaworNDYzMjggZjc0M2UzYzZiOWJmMTZhODY3NzBhZWVkYjUwYTEwZDE0NzQ4NjUwNiBsZWdhY3ktdHJ1bmsKKzQ2MzI5IDJlZDRiNzU3YzBjZjI2M2Q4OWVmZTIzNzU3ODA3NDM4OTQxNjQ3MDYgbGVnYWN5LXRydW5rCis0NjMzMCA3OWM4ZGNjMjc3YTVmMjYzZTNiYWNkODlhZTkxOWUxYjlhOTZhZTNmIGxlZ2FjeS10cnVuaworNDYzMzEgMTNlMGY3MWE3MGQ1NDRlNGFhOWE0NzEyNjQzMDgwZjE0NDliYTYzOCBsZWdhY3ktdHJ1bmsKKzQ2MzMyIDA5ZDJlOTY4ZDA3NDcyOTMyOTVhNjczYTAxZGU4ZmQ1ZWM2Njg1YjIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMzMyBmYTk4YjhkZjBmZTIxNzY4NDE1NDhlZmQyNzM1MWFiZGRiMjhmNDRjIGxlZ2FjeS10cnVuaworNDYzMzUgYTRlNDMzYzEzNmRhNDNiMDE4ZDc1YWIyMTJmM2E1MmZjMjhlNDVhNCBsZWdhY3ktdHJ1bmsKKzQ2MzM2IDMxZDQyMTU0ODBjNjk5OTU5MDdiZjdjNGNjY2UzYjAzMmM5OTc1MjEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMzNyBkMmIzOGE2MWRlNzEzNTM0ZTlhMDI4MzE5ZTI5M2ZlZmY2NzM5ZTQ4IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDAgYmVmNmFhYjVmOWIzYTNkMDE4YTUyYTUwYzI4YTM3ZTNmZjYzZmY1MCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQxIGMwZGJmZWE4YzBmYjViOTA4NDY3N2ViMzA0MzdiNWJlMWE0MzQ0NmQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MiBkMTA5YjA4MWQ0NGJlNTQwNjg5ZTAxOWFmYzdiNzkyMmEyM2Q0ZDdmIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDMgYzE0ZTBjODlhOGIwZDA3ZTU4MGJlNmE0ZjIwMGFhMDk1NWI5ODFjMiBsZWdhY3ktdHJ1bmsKKzQ2MzQ2IDJlN2EwMGViYzMxOTI2MDU4NWU5MWVhNDM4ZjQ5N2ZhYzU4ZTM0OTAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0NyA1ZTRkY2U3OGYyM2RhOWIzMzBjZGM3MTMyZTUyOTI4Yjc0YWIwYzZiIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDggNjI0YjRiYjkzZDkwMjZhMmY1OGQyMTgwZDhhN2QwMzVmMmZjZDQ2YSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzUwIDQzYzg2ZjM0OWQ0Nzg0YzdkNjQ3N2I1OGZlZWMxNWFlZWQ4ZThkOTEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM1MiA0YmZlYWIyMzBlMzg1ZDY3ZDQxNGIxZDEyOTE5NDJhNzI4YzhhMzg0IGxlZ2FjeS10cnVuaworNDYzNTQgMWJhM2U0MGU4NjQ5NmEyNzM2YmZhYTkzOGFhNWVkOTNjNTUwM2RhOCBsZWdhY3ktdHJ1bmsKKzQ2MzU1IDUyZDEzOTllMWM2ZDkxYzdhZTFjNmY1MzBkMGY3YWE0NzVkZmQzYzIgbGVnYWN5LXRydW5rCis0NjM1NiBhMTY5NDhlOTkxNWVjYTU2ZDgzMDQ4OWZkNWQ5NzFkNmY0OTc5YTRmIGxlZ2FjeS10cnVuaworNDYzNTcgMGI4YjI4ZjBmMzAxNDNiMTA3NTdiZGE2MzUyODQxMWE3Mjc5NjViZiBsZWdhY3ktdHJ1bmsKKzQ2MzU4IDcyOWZmODAwOGM5ZTU5ODMwNzRjZTE5NWJkYTRhYjQzYjYwY2RlOTQgbGVnYWN5LXRydW5rCis0NjM1OSBkMzdkNWM1NTIxZTM4NjQ2ZWE1OWE3ZWU0NjZiNzMxZDg5MjNlOWVjIGxlZ2FjeS10cnVuaworNDYzNjAgMmU0YTI3NGUzMTA4YWViMzYyMzI2YjljZWQyOWQ1MGE3ZTYyZmUwMiBsZWdhY3ktdHJ1bmsKKzQ2MzYxIGE1ZjUzZmVjZmNlNjZjYjE5ZDExYjY3YTRlYjcwMzk0Njk3ODllZjAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM2MiBiMzJmOWJiMmUwNzcyN2ZhNmQwNDhlN2Q0M2NlMWJlMzNlMzMyMzk3IGxlZ2FjeS10cnVuaworNDYzNjMgZjcxMGVkY2FhNjc1ODk5ZWE0YjdiZjhhNWQ1MDRkOGFhNGNjZmU2MCBsZWdhY3ktdHJ1bmsKKzQ2MzY0IDA1NzQ0OTE3YjdjMzliMjM4NmQzNDM3YjM4ODhjNGQxOTExYjVlMDIgbGVnYWN5LXRydW5rCis0NjM2NiA5NjQxNTEwNWMyOWUwMWVlYWUxMDAxMWU1NTEwNzI0YTdkZDIzMjI2IGxlZ2FjeS10cnVuaworNDYzNjcgMzg5MGEzYzc5MmI5MDM3M2VlMTc4Y2YyOTA2MmVkN2Q1NjY4MGIzYyBsZWdhY3ktdHJ1bmsKKzQ2MzY4IDM1ZjQxNzMxYmVlOTRlNGJhYTQ1YTQ4OWY4MzA5NzMxOGQ3NDZmMWEgbGVnYWN5LXRydW5rCis0NjM3MCA0ZDBhYmI5OWM5ZTU0OGQzYjljMGQ3NDE1M2NjN2FhYWU3MWMzNWJkIGxlZ2FjeS10cnVuaworNDYzNzEgMmY3MWQxYTY5MmJmNGEwYmIxNjFhMDIxZWJmNzlkYTYzYWMxYzA1NiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzcyIGQyMTg5NmIyZGQwYWQ3MWVmN2IxNTIzODMxYTM5ZTIzYTJiMjQwNGYgbGVnYWN5LXRydW5rCis0NjM3MyBkODViMzYwYWE1ZjZmODFkOGE0MGFlOGQyZDc2NTlkNGJkMTAzZDhlIGxlZ2FjeS10cnVuaworNDYzNzYgMWFiMzI2MTdkYWRkZjY2N2I5MDY0YjExNmRiY2EwZThjYWU4NGMzOCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzc3IDc2ODA3OTAyYTJmNTA1ZTU3ZDBlNTI5YjI2ZTEzNThhNDk0YjAxYTYgbGVnYWN5LXRydW5rCis0NjM3OCAyM2Y3OGU1YmQzZTNhZTVjNzQwZjA3YmYwODk4ZGVhNzFlMjEwZGRlIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNzkgZjcwNjUzYzFlNjMzYjY4YTlkOTQyNDkyMjFkZTgyODIxNzZmYzU4ZCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzgwIDc4NzcxZDY3M2I0YjczMTI2MjVkNTI2OTBiZTQ5NDdlNjhmMDMzYmEgbGVnYWN5LXRydW5rCis0NjM4MSA4MTZmOGU2MDA5N2E5ZGE3ZDdkMjRkODQxODJlMmRlZjQ5NDkyODE1IGxlZ2FjeS10cnVuaworNDYzODIgNDFmODM5ZTg5NTMyNWQzNjI4MGYzMDNmYTFmMDk1ODExYWI0NjgyZiB0aW0tZXhjX3Nhbml0eQorNDYzODMgMGY2MWMzYzYyYjhiZjgxOTE4ZDNkNDUzZWY2MjMzOGNiYjhkYzBjMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzg0IGNmYzlhMDA3ZThjZWIzMGE4NWJiZjVmMmU1Nzg3NWE1OTgzN2QzYzUgdGltLWV4Y19zYW5pdHkKKzQ2Mzg3IGIyMGU3Y2JkYTQwOTEyYzgzNGQ3OWI3NTVhYWI3ODg0ZGYzMGViMTIgbGVnYWN5LXRydW5rCis0NjM4OCBkMTUzZDJmNjY4ODRmYzMwMTg1YmMyMWIzYjU4OTUwMzVjNDNjYjFiIGxlZ2FjeS10cnVuaworNDYzOTEgNzBjMGZmZDIxYmYwYTczMDBlMThiYTllYjUzMjhkM2FiMWM5NzkzMyBsZWdhY3ktdHJ1bmsKKzQ2MzkyIGRmMDRmMTkyYTJhMjdjNGYwMDliYmNkZjQwMjRmMWI5MGY1OTA0OTcgbGVnYWN5LXRydW5rCis0NjM5MyBhYzQ1ZWNhOGMzNWMyNDZkYjg2ODYxMjcxNjYwYTViN2IyOTA5OWQyIHAzeWsKKzQ2Mzk1IGIxODk2NjU2ZjIyZTQ2OTA2M2YyOTQxMzcxMDZkNzMwYjY3ZTVhNGEgcDN5aworNDYzOTcgZGJiMTk1YzlkZDg4ZTI1NDY2MjlhZGY2MmUwM2JjZGNlOThlNDk5OCBsZWdhY3ktdHJ1bmsKKzQ2Mzk4IDMzYzMyODg5NmY1MjdlYjVmMGM3NjVjYmVlNDg3MDJiOWYxMGI2MTIgbGVnYWN5LXRydW5rCis0NjQwMCBhZGMyMTRmYzFlMWMxM2MzOTgwNmQzODE4ZjU3ZjMxYjY4MTkwZGI0IGxlZ2FjeS10cnVuaworNDY0MDEgNWRkYmQyMDUwMGZjNTA0OTFmNzhiODExZWEyYmYwN2E5MDUzOTk3MyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDAzIDZiMDNhNDdlYjU0ZGY3ZWRhY2NhMWUxMTM1NjQxMGJhOTAwMjk2MzMgbGVnYWN5LXRydW5rCis0NjQwNCA2ZDk5ZGY1NTYwNmUyNGQwZmNlNjdiNzZjZTZmNGMwMWJlM2Q3ZTZlIGxlZ2FjeS10cnVuaworNDY0MDUgZTgzZTFhYWFiMWEzYWUwNDYxM2VkZWI2NTYwODkyM2E0NjFmYjMzMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDA2IDUyZjJjOWY3NGY1YWQ1YTc2YjJiMWY4YWQ5NjJlNDVlZjJhMDc4YzEgbGVnYWN5LXRydW5rCis0NjQwNyAzMTI4Y2ZhZGE2YjRhN2NkOGFmZWIyM2Y0NTljNzQxYTQzMTgxNTY0IGxlZ2FjeS10cnVuaworNDY0MDggNDAyZjNhYzQwNTJmZmFmZGQ4MTRiOGQ0YTU2ZGU0ZGQ5YWRmZDA2NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDA5IDhmN2M3YWVhYzNhNTgzYTNiOTJmYThlYWU0N2JjODg5OGM4ODY2NmUgbGVnYWN5LXRydW5rCis0NjQxMCAxZGIwZDczNzQ5ZWQ5ZWRhNWVkZTAwYjc2NmVlOTE0MWZjNmQzODVhIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MTEgNTYwN2FiNmM2N2RmZGIwZGE2YWU5ZDVhMzY1MjNiYjRmMWI1OTk2ZSBsZWdhY3ktdHJ1bmsKKzQ2NDEyIGZhNjc1YjNkNzVjYTgyMjVlZDk0NzE2NDg1NGI0NTcwNDFkOTQ4ZjggcmVsZWFzZTI0LW1haW50Cis0NjQxNSBlN2FmOTdlMjc4YzQ0YTcxMGRiNDE5ZTA5NzA3YjhjOTMxYWFkOGQ4IGxlZ2FjeS10cnVuaworNDY0MTYgNDY5N2QxOTU4Y2NiMDViYTZkOWZkMzE0NjEwZGExNTM0OGVhNzhjYiBsZWdhY3ktdHJ1bmsKKzQ2NDE3IDYzMWI2NjQ4ZmRmNDFiZTJjNDU3NTk1MzI1N2RkODkxMTY4NDZmY2QgbGVnYWN5LXRydW5rCis0NjQxOCAyYmVlMTUwYTBmNzUyMjlhMTBjYjkwN2Y5YjI0ZTVlMzAxMjhiMzI5IGxlZ2FjeS10cnVuaworNDY0MTkgZmVhNmZiNDU1NzExM2JjNjExNzI2MmM5MWYzY2YzOWI4YWQ2OWY1NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDIwIDRkYzYxZDdkYjNhMjlmZjg2YWNkZTVmMmVjYjA5NTY1OGE0MDFkNjQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQyMSA4ZTJkYzNlNDE4MDExYTZlMjVkNzYwMmRkYWVlY2MxMGQ2MGU3N2NmIGxlZ2FjeS10cnVuaworNDY0MjIgMGVlYmQ5ZWViNzE3Y2EzMTMzYzdlMWNkNGVkZGY0YzcwOGJjYjQzZCBsZWdhY3ktdHJ1bmsKKzQ2NDIzIGNlNjM4ZDRiNGZjOGNkYWYwYzRiNjNhMTY0ODUzYTI3NjNlZjZlNTYgbGVnYWN5LXRydW5rCis0NjQyNCA5MGVkYWYwZDkwNjIxODIxOGJiOTRiZmNjZGRlM2UwMDFlZDFlOWZlIGxlZ2FjeS10cnVuaworNDY0MjUgZTBlNDNlNTYxNTEyYmM5NjA0MTBiN2M3ZDEyNmQyMWVhYWI2ZjAxYSBsZWdhY3ktdHJ1bmsKKzQ2NDI2IDcwOGVhZjA4OTZiZjQ1NDRkNGQ1NDM1MzgzMmYzMzAwNzFjYWE2NTggbGVnYWN5LXRydW5rCis0NjQyOSAzOGU5YWYzOGYzODFjMjdlYzYwNzBiNWM2MmE1MzljMzhmNDZkMzI5IGxlZ2FjeS10cnVuaworNDY0MzAgNDk5Y2Y3YzJmNzc3M2VmOTZmZWE0YjQyNGIzYzkzNGJlY2M1ZDU2ZCBsZWdhY3ktdHJ1bmsKKzQ2NDMxIDQyMDlhM2QyOTVlMzQ3ZWVkNmZlNTQxMDI4YTg5YTEzYzNjNDMxMTEgbGVnYWN5LXRydW5rCis0NjQzMiBkZmJkNDU3Y2E2N2FjNmE4ZjA5ZGYzY2RmNTk1YmRkMGZjNTc0ZThkIGxlZ2FjeS10cnVuaworNDY0MzMgNjhlMWEwMmE1YjI5MWQ4OTM4MWJmZjhkOTUwNGUwMzEzNTBmNjRlYiBsZWdhY3ktdHJ1bmsKKzQ2NDM0IDEwYTU5NzNlMGM5YTczNzRmMWMxYzkxMjdhNDcwMjFkN2JhYmZjZDkgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQzNiAzZDgxZmFmNDdhZjc3ZGQwOWFmZGJlZDBmNDliMmM4MjMxNWUwM2E5IGxlZ2FjeS10cnVuaworNDY0MzggY2E2NTdlMGJkMDljMDM3NzhmMDE2YzBkMGNjZTQ3ZDVjYTRkMmZjOCBsZWdhY3ktdHJ1bmsKKzQ2NDM5IDlmMzM3NWUzM2RiOTVkMDhlYzRjMmQ5NzNhNjNlMTI1NDQ3NGY3NTIgbGVnYWN5LXRydW5rCis0NjQ0MCA5OWQwNjFiYzMxNDMxZDFmZmExYzYyMTQ3MGZhNTlkMDE1ZGRlNDdiIGxlZ2FjeS10cnVuaworNDY0NDEgOGI0ZDJhOTA3NWFmNWIwYzNmM2EwOWFhYmYzNTBkMWRjMzc0NTI0MyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ0IDU0OWNhZGE0ZTM2Y2M1N2EzZTVmMmFlNDE5OTY4Y2YxZWY0OGQyYjEgbGVnYWN5LXRydW5rCis0NjQ0NSAzZmYzZDJmMjIwMTIyNDZmYzE4MDY3NTIyY2RlMTZhODg5ZjQyZGEyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDYgMzI4NzlkMjYxMDlkOTY5NjA2ZDc4N2E1NTE1NTMwODNhYWZhYzE1NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ4IDE2YTFjYWQwZjk0OTk5MjU0NGJmOGJjYTVjOGI2OTJlZTlhNDlhZTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0OSBjZTNlM2M2M2ZlNWFkZGUzMGVkMGY3OTYzYWNkMmUzYzRlYzQzYWZjIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTAgMDAzNDMzNTExZTRkZDg0YWZhNGMwNDFiMmFhNzY3ZTcyZTBiZjc2YyBsZWdhY3ktdHJ1bmsKKzQ2NDUyIDczNDI2ZTcxZjY3YWI1NzYyYWYzMGQ5MGJhNWEzMWRjZTgxMmNjODQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ1MyBhNWQ1ZTczYjJlZGJiNWZiM2ViOTk3OTcyNWUxMDBiZGQxNDYwMmMwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTQgNzk1ZDFjYjFkZjAxM2NkZjM0NWE5MjZiYWY1MDY1YmQwMTVhMGIxNSBsZWdhY3ktdHJ1bmsKKzQ2NDU2IDRjMDgyM2YwYTBhMTU3NGVhODJjMTlkZTlkNGMxZTJhMWE1NjA5ZjUgbGVnYWN5LXRydW5rCis0NjQ1NyBhNTZhYThhYjQ4OWI3MGM0NWM1MjczMDZlOTRkZjE0NWQ2OTMzNDdlIGxlZ2FjeS10cnVuaworNDY0NTggY2ViYThmMmVhMjRlZWJhNTA4NzVkNDQzZjQ2ZGZiOTcxZDZkMjlmNiBsZWdhY3ktdHJ1bmsKKzQ2NDYwIGNjZGMwYmMxMWRjZjJlMjhmNmM0YmM5NjQ0MGRmZjE0ZmE2NDk5ZjYgbGVnYWN5LXRydW5rCis0NjQ2MSA2MDYzZTRlNmVlMjBlMTdkOTQ5YzIxN2UzNzk2MjMyZjY3MjY5MjMzIGxlZ2FjeS10cnVuaworNDY0NjIgMzBlNGVhNDIzMzY5MDlhYmNlMDY1ZGQ1YzQ4NjkyYzVkNDM5N2FkNCBsZWdhY3ktdHJ1bmsKKzQ2NDYzIDc4MWJkOTRjZWJhZDU1ZTI4Zjc4OGRjOTIyNTQzZjM2ZmQ5NDRmNzggbGVnYWN5LXRydW5rCis0NjQ2NCAwNTMwNWQzYWEwNGQxZGI2NDM4MmU4MGI4OTY1NDU1ZGVhNjRmN2QzIGxlZ2FjeS10cnVuaworNDY0NjUgNTA2ZWY5MTMwMjM4YjVlYjlkYTJhNzkzYWRjZDZlZDE1ZTYxMTc2OCBsZWdhY3ktdHJ1bmsKKzQ2NDY4IDViMDc1M2I5ZDE2YWMzODc2OGMwNjVlZTBkNDI0ODVjNWI3Yjk1ZmMgbGVnYWN5LXRydW5rCis0NjQ2OSA3MjMyN2Y4ZjRhNzk2ZmU1NmE0N2I5MDg0OGIxYmVlYWM2NzRjZjlhIGxlZ2FjeS10cnVuaworNDY0NzAgODAzOGU0MWY0NmNjMGQyNDM0MWIwYmZlODgzNjIxMmQ1OWY1ZGE1NCBsZWdhY3ktdHJ1bmsKKzQ2NDcyIGVhZTZkZTFiNDM4MzgwYTU1NzAyZmIzMGYxZmJiMDFkMTBlZDA3NzQgbGVnYWN5LXRydW5rCis0NjQ3MyAwOGJmMDgyMmM1MGEwZDczZjlmZjkzNTZkYzJlNDQwNDI1NDJlMTA2IGxlZ2FjeS10cnVuaworNDY0NzQgOGRhZWI5YWY4NDIyY2JkNDdjMjkyNDEyMDU4MzhiOWJkMzU0Mjc5OCBsZWdhY3ktdHJ1bmsKKzQ2NDc1IDlhNjVmZDQyNTVhMzdjZWE3MmVkMDEzODA1MTFlMDllMDZjN2QxNGEgbGVnYWN5LXRydW5rCis0NjQ3NyA4MDc1NDBjZjc3MTRjOTg5NGQyOWFiMDZkZWY4MzFiMjgxZWZjYjE2IGxlZ2FjeS10cnVuaworNDY0NzggZTk1NzE1NWFlOWJkZGMyMWNhNjY2MWVhMjVjMDExY2M0MGFmNjQ0YSBsZWdhY3ktdHJ1bmsKKzQ2NDgyIDAzOGJiOGQwMDU4YjI1Mzk1NzJmMTk1ODBkMGU4YzlhYWM0M2M0MjIgcmVsZWFzZTI0LW1haW50Cis0NjQ4OCA0NTU2YzJjOTMwZjRiMDI1ZTc5YWIxYTFlYWJkMDRhYWQxZTIyMTBlIGxlZ2FjeS10cnVuaworNDY0ODkgM2RlZDA5MDhlOTUyZjY0NmQ0MDBlOWU1NWM2ZjhjNjhjYjQxZjQ1YiBsZWdhY3ktdHJ1bmsKKzQ2NDkwIDBmMmY3YTBkOWI3ZGQyMDE1YjRkNzA0ZTEzZWUxOTE1YTBkZWMxMzQgcDN5aworNDY0OTEgMjlhZTVlMGZjMzQ4MjhiNWU2M2YxODRmMzAzODQ2MTE2NjhkYmVmZCBwM3lrCis0NjQ5NSA2MzFjMjA3YzM2OTIzZDAyM2Y4NGNkMGE5MmIyODliNmI3MGJlNmQwIGxlZ2FjeS10cnVuaworNDY0OTcgMWEyMzcwNjEzOWNhMGZjMjc4Njg5NDgzMjVlMmY0MjE1MWFiY2E0OCBsZWdhY3ktdHJ1bmsKKzQ2NDk4IDNmZWMzY2UyMDQxMzg0YWRlYmQ5ZGM3M2VlZTYzMjk2OTkyNDVjMjUgcDN5aworNDY0OTkgNTUxODE0ZTRiNDcxMTdiMzJmNjI3NGMxZTM5MDhjNDY0Y2Y4MjE0NCBsZWdhY3ktdHJ1bmsKKzQ2NTAxIDIzNjcyNWY2NGEzNDFmZmU5MDEyOWIwOTc5MDNmZTEwYTU5Mzk0YjEgbGVnYWN5LXRydW5rCis0NjUwMiA3ZmE3Y2I2ZDhiZTgxZTI5MGFhMmE2ZThkMDI0ZTM4ZDc0ODI2ZDNhIGxlZ2FjeS10cnVuaworNDY1MDMgMDIwM2E4YWY3NGE3NWE5YWJmNjBkZmQ2OWRmOGFlYjMyN2FmMzkxOCBsZWdhY3ktdHJ1bmsKKzQ2NTA0IDZiYTU2NzhiZTdmMjYzNTQ0NmI5ODU4ZjNkMzJmYzZiODFiN2FhMDUgbGVnYWN5LXRydW5rCis0NjUwNSBmNzZkM2U2OGQxYWMzN2IwMGIxZDk1YmRmYmQ4YmFkMzM4NDA3ZGZlIGxlZ2FjeS10cnVuaworNDY1MDYgNTEyNTVjYzhhMGRjMDRhYmU3MzA1ZTU0ZGEzYTMwZjVmYzRjMTI0ZSByZWxlYXNlMjQtbWFpbnQKKzQ2NTA3IGU5ODllZTVkNDA0YWJlNzc2MjE0YWIwODBlMjc2MjBiZWRjMjdmMGUgbGVnYWN5LXRydW5rCis0NjUwOCAzMjA0YWE5ZTJiMjI1OTZhOTYyNDg5OTA1YTczNWU4NmZjMmNiYzMzIGxlZ2FjeS10cnVuaworNDY1MDkgNzE4NjFjMzc4MDkzNzEzNjFlZGQ5ZWExOWQ5MWNhZTZlZTZmN2Y5MCBsZWdhY3ktdHJ1bmsKKzQ2NTEwIDU5M2FjY2RkZTAwZWYzMzNkM2ViZDU5Yjg4ODJhY2JlODY1MmU1NmQgbGVnYWN5LXRydW5rCis0NjUxMSBmMTdkMzc5MjBmNmExYmRmY2UwODYwOTI3ZTE3Yjg1N2U2MzhiZWJiIGxlZ2FjeS10cnVuaworNDY1MTIgOTVmYjJjZDFkM2JhY2U0NzVjZDI0MTU4NGQxZDAwOGM4MjZlMTc5YSBsZWdhY3ktdHJ1bmsKKzQ2NTEzIGUwY2VhNjA1NDE3ZTQ1YzU1MWYyNzZhYzRkOWVlNTNkNjc3ZDc3ZTIgbGVnYWN5LXRydW5rCis0NjUxNCA5MjY4YzMwNzgyYzBhZmY3MWY0ZjMzMDliYWYzNTAwMDViNTUxNjE3IGxlZ2FjeS10cnVuaworNDY1MTUgOTM4YzBmY2Q1YmNjYjZjNzNjYWJjOWFkM2Q2YTMzOTMzMDc0ZmQ0ZiBsZWdhY3ktdHJ1bmsKKzQ2NTE2IGQ2MGM3ZjZjMmFhMDA0YmUzYmI5NDJiMGRhMGEzMTg3YTgzNTU1ZjkgbGVnYWN5LXRydW5rCis0NjUxNyBiZjMyNjU4MWM3NDIyMjYyYThhOWY3YjA4NzQ1ZTY2MThhNDRjNjA3IGxlZ2FjeS10cnVuaworNDY1MTggOWYzMjg0YzkyZWIzMGYxMDcxMGM5YjZiOTJjNmQwMDc2YzdhZWFlYSBsZWdhY3ktdHJ1bmsKKzQ2NTE5IGQzMzgzMDYzNDkxZjU5ODNjZmMxYzU5ZjE2MzhlYTBkZTYyMWUwMzAgbGVnYWN5LXRydW5rCis0NjUyMCBhYTA2NWY4MjAyNTI0NmJhMTdlYjIzMjU3YzBkMDE4NjkwN2IzZjhjIGxlZ2FjeS10cnVuaworNDY1MjIgNThlOTlmMmE2NGVjYTFkZTJhNmFhZTU4NzU3YjMxNWM3MTcyNjRiMiBsZWdhY3ktdHJ1bmsKKzQ2NTIzIDU1MzE5NTU5OTNlZDQxNjQwNmQ1MjQ2NjQ3ZGExMjY1NWU3Y2M5NzYgbGVnYWN5LXRydW5rCis0NjUyNCA5YjAwMWViZWFhNWU0ODY3Nzc1ZDEwZGZmNDkwMzFmM2IzYzQ3YjE2IGxlZ2FjeS10cnVuaworNDY1MjUgM2QxYTk5YjM5ZmNhMjVhZWI2MTQxZTU3ODVmNTJiOGM3M2M0ODI3MCBsZWdhY3ktdHJ1bmsKKzQ2NTI2IDY3NDNhNmEwNmYxNTZkMWRiZmU4OWU3OTUzYWQ4MjUzZDMzOThlNDIgbGVnYWN5LXRydW5rCis0NjUyNyBmYjU2YTM5OTI2MDRiYTg1OTc2Y2RkMTE3MTY3ODRlMDc2NmIyMjExIGxlZ2FjeS10cnVuaworNDY1MjggZjY0YjEzYTAwZjMzYjI4YzhlZmFhNTU4YTAzMGNhODA3NzMzOTMzOSBsZWdhY3ktdHJ1bmsKKzQ2NTI5IGRjZjkyZGQ3NDA4YTNmMGJkMmFmNTQ0OTQ5ODgxYTM5NWY2OTQ1MjggbGVnYWN5LXRydW5rCis0NjUzMCA4YWM2MDNlNTcwYTA1NThmOWEyNzU3MTQ1NjgyNjE4OTRhOTE3MWFiIGxlZ2FjeS10cnVuaworNDY1MzEgNWExMmMwYzUxODNlODhhMDVmYjkwMzVjZDgyODZhM2M5YjAyYjgxNSBsZWdhY3ktdHJ1bmsKKzQ2NTMyIDQ4YTZhZjg3ZjNlODYyYThiMzM3NzA4MjM1ZDE0NjIwMjJkNTg5MTUgbGVnYWN5LXRydW5rCis0NjUzMyAzZmUzY2NkZjAxNTU1MjE2M2M0YzkxYTFlOTQ2Y2IxMTE2YjZhYjBiIGxlZ2FjeS10cnVuaworNDY1MzQgYTUyOThmMzcxYmU3Y2QyYWQ5MTk0MjIyMzAzNTUwNTA1ODBmODliMSBsZWdhY3ktdHJ1bmsKKzQ2NTM1IGMzZjJjNjY3NmIwNjFjYTcxMjg5YmRkYzdjZTA1MjMyYWNkNGNmYjkgbGVnYWN5LXRydW5rCis0NjUzNiBkNWJkZmQxMjAyMzI3MDgyNjdhZGRjNjQ2YmVlMzZhMGU3ZmM4MGQzIGxlZ2FjeS10cnVuaworNDY1MzcgN2Q1MTBlNGYzYzk4ODUwNWQwNmJjNTkxYzU5MDk4ZTA1NGJiMTM2MiBsZWdhY3ktdHJ1bmsKKzQ2NTM5IDRlNGU2NTNhODBiZjRhZjY0YWYwOTliMTZlYjI5OGY4NThiMWEyNzcgbGVnYWN5LXRydW5rCis0NjU0MCAxNzMxZmJkZjAyOWQyMDllNzZmYThiODUyODg2NDNmZWFjMjZmNThiIGxlZ2FjeS10cnVuaworNDY1NDEgNmQ3OWFjZGM4MTJkMjAxMGQwZDJjZWRmMGZmZmZhYmE3MzQzMWY4MyBsZWdhY3ktdHJ1bmsKKzQ2NTQyIGE4MmZkN2IwNDRkYzdhN2Q2ZDVkNjkxYTg2MWEyNmJjOGUyZDAyMDQgbGVnYWN5LXRydW5rCis0NjU0MyA4ZGZiYTA4N2RjMDc3YTYxZjUwZjNhZjZhMjgzNGNjYTI0ZGMzNGUyIGxlZ2FjeS10cnVuaworNDY1NDQgNDk0Y2FiNTYzYzExN2ExMzliZGExMzg5NDk5NmYyOGNiZTU2ZDI1YiBsZWdhY3ktdHJ1bmsKKzQ2NTQ1IDlmODYyZDlmNzc4NWRkYTc1MTBlMjJhYmNkM2JjODlmN2Q1MTRjZGIgbGVnYWN5LXRydW5rCis0NjU0NiBlYzVkYzhhNDllZGZiNjU3NDAxZGI1YzIxMTY5M2Q3Y2E5NGI2ZWNhIGxlZ2FjeS10cnVuaworNDY1NDcgYzQ1MDFmZWZkMzI0ZmI0MzYzYzk0NTZmN2ZiZjcyZDJjOTA2ODQxMyBsZWdhY3ktdHJ1bmsKKzQ2NTQ4IDUxMDY4MmFjNWU4OWRkNWI2NWJkNDdiOGFjOGUwZWZjMmM2NDM1YjMgbGVnYWN5LXRydW5rCis0NjU0OSA0NDE3MTFjYmZlMzQxNzFkYTY3NDM2ZWZmMTg1Y2E0NjMxMTA5Y2EyIGxlZ2FjeS10cnVuaworNDY1NTAgNGY4NTg2OTQ2YzhmNTYzMmE0NjU3ODNlNGE4ZjY5ZWFjMzhmZjIwNyBsZWdhY3ktdHJ1bmsKKzQ2NTUxIDBhYmE2M2ZmN2Y3M2UzODY4M2RhNTU1ZmM4YjRiY2VmZWNlODFjNzggbGVnYWN5LXRydW5rCis0NjU1MiBkMjAwOGIzMWZkNjJhMjRkNmE0ZmVlMTU2NWIzNTVlZDA0ZTAyMTc2IGxlZ2FjeS10cnVuaworNDY1NTMgOTk1NjRlNjJhZWE5MmRlMTQwODkyZTE3ODMyZmUyMTdhNjNlY2FiMSBsZWdhY3ktdHJ1bmsKKzQ2NTU0IGUxMTU4ZTE5NTFkYTUwZjZlYWRmODgyNGM0ZWU3MDc3YjI0MmM5NmQgbGVnYWN5LXRydW5rCis0NjU1NSAxM2ZlZGQwZDBmMjZjNjY0ZWQ1OTY0ZTRlYWE3NThlM2QwNDU5ZTg2IGxlZ2FjeS10cnVuaworNDY1NTYgYzc0N2FkNTNlMDllMGY5Mjk0NGM1NDYzNThjNzg1NDA0ZWQ3NTdlOSBsZWdhY3ktdHJ1bmsKKzQ2NTU3IDE2OGViNmUxNWI4YzdjOTUxZGQxMjFkOTNmOGQ3MWRhOTZhZTY0NzQgbGVnYWN5LXRydW5rCis0NjU1OSA3ZjFmMzZiM2M5ZjlhYWMzOTE4ZWQ2ZTg2ZjNlM2JmMWU4OTE0ZThmIGxlZ2FjeS10cnVuaworNDY1NjAgZWNmNzE3M2U3OWZmNTY2ZjRmOTU4YmFkYzE4OWU1N2I3MGYyODYwZSBsZWdhY3ktdHJ1bmsKKzQ2NTYxIGJiMGQyYjk1NTQzOWYzMmU0ODEyMzcwNzAzZjg4ZTYxZTIyNDY3MDIgbGVnYWN5LXRydW5rCis0NjU2MiAyZmUzMjMzYmQ0MjYxMmY0YjE3MzRjMWFlOTNkZTI2MTBmMTU2NTg4IGxlZ2FjeS10cnVuaworNDY1NjggZDJhZTU4MDg4MGI0YmJkZDY4NWVjN2Q5MGY0ZDM5ZmJmOTI0OGNhNiBsZWdhY3ktdHJ1bmsKKzQ2NTY5IGY5ZDE4NDBmYWQzNDg1MjU0MDkyNWVmN2FmOWJlOWY5ZmFkOTcxNWMgbGVnYWN5LXRydW5rCis0NjU3MCA2MjllYmY3ZDNiNWNhY2E1OWRiZjBjMTNkYzlhOWY5YWY2OGNmNTVmIHJlbGVhc2UyNC1tYWludAorNDY1NzIgMWE1NmRhODZjMTFhODc5ZmE3MTk1MGNiNDJlMmVmZmExOGM2MzkzZSBsZWdhY3ktdHJ1bmsKKzQ2NTczIGJhZGMxNzM3ZGM4MDE5Y2YyYjMwMmQ1MjAwMDVmMDM1NzEyYTBlYzcgbGVnYWN5LXRydW5rCis0NjU3NCBmMGYyOTFmYTliNDY5MTg0MWVkZWVlNWVlNTM4MDAwZWQ4ZTJjZWRjIGxlZ2FjeS10cnVuaworNDY1NzUgM2ZkODAyNzg0NWY4MDJjOWEwZDg4MDhhYzY2Zjc0YmQ2NzA4NmQ5YiBsZWdhY3ktdHJ1bmsKKzQ2NTc2IGY1MGQzYTUxZDY0NmYzM2JlZmY1YjQyYmJlNjA1ODZkNGM0NDAyZTUgbGVnYWN5LXRydW5rCis0NjU3NyBkMjVlMjc5YzdlYTliMjU3Y2RjNWExYjEyYTNmNzM1ZDQ5YWI2MzBjIGxlZ2FjeS10cnVuaworNDY1NzggZjgzMWU4YmM2YmQzNzg5OTM0NDc1OGE4NWY2ZTAyNzc1MDk1YzUwMCBsZWdhY3ktdHJ1bmsKKzQ2NTc5IDVmNDQyZjdiZjQxOWU0ZmMzYzEyMDk4MDMwN2Q5MWI2NjVjM2U4OWYgbGVnYWN5LXRydW5rCis0NjU4MCBlMDk5N2ZmYTM1NzI0NjhiOWVhMGVhMGNmNjJiMTY4MTdjYTExMWY2IGxlZ2FjeS10cnVuaworNDY1ODEgYTdmMjI5NWE3OGFjMTM5NTBiZmZlODc4NGJmODQ5MmYwYjJjYmIxNyBsZWdhY3ktdHJ1bmsKKzQ2NTgyIDQ0N2E5NGIwMzlkZWI4MGNhMWRhOTMzM2JhM2FjODEzYjg3MGM5MzkgbGVnYWN5LXRydW5rCis0NjU4NCA0MjhlOWNiYjQzNDYxZTBlZWZmZjJmNzQzMDA3NWE4NDc1MjY3ZmViIGxlZ2FjeS10cnVuaworNDY1ODUgZGIyZDhhYTlmZTNkNDIwOGI5OTI4N2YwNTNiZjQ4ZDEzZmFlYjNmNCBsZWdhY3ktdHJ1bmsKKzQ2NTg2IDMwMzFhNzExMGRhOWE4NzU5NzMyZmYyNjAyZmMzOTkyMjMxYWY5NDEgbGVnYWN5LXRydW5rCis0NjU4NyBiMWViNGE2NzQ5OTgwNTRhNmU3NTFhMTZlM2E3ZWFmM2JlNzJhYzBkIGxlZ2FjeS10cnVuaworNDY1ODggY2Y2NzdlOTc4ODUyZmE2Y2ViZWIwOTNhNTA0ZTVkNGI4NDhiOTMwZiBsZWdhY3ktdHJ1bmsKKzQ2NTg5IDE3NWNiZGY5YTVmYmQwNjU3Zjg1MTU4NjBlYzUxMDgzYmU0MGNiODMgbGVnYWN5LXRydW5rCis0NjU5MCA5OTVlY2QyMzFmN2M1OThkNWI0MTUxMzAzZmQzMjY0YzhkMDcyOTM2IGxlZ2FjeS10cnVuaworNDY1OTEgYzVkNTA4NzJlZmY0ODJhNzM3ZTQ5MTRiMmM2Mjg0MTY3YmE0NDE4ZCBsZWdhY3ktdHJ1bmsKKzQ2NTkyIGI5YjAzNmYwMjIwN2UyOWIyMjE1MzQ4NjZkNzBkMmVmMjlkNGZkNmIgbGVnYWN5LXRydW5rCis0NjU5NCBkN2RkNTI4NDI3YzBkMTRhYTQzYjBmOGZhZDUyZWI1NTUzODZlOWRlIGxlZ2FjeS10cnVuaworNDY1OTkgZjM3ZTY3YmQ0MzkzMTg0YTFlYmFhZWVjOGQxMWIyMTlkNTUxNzk5OSBsZWdhY3ktdHJ1bmsKKzQ2NjAwIDI2MzJiZDU1YzI5ZjI1NDRiZDk4NzQxNmNmMmNkNzllNjM1OGRiMjUgbGVnYWN5LXRydW5rCis0NjYwMSA3NWQ2ODExNTkzMjlkOThmMTY1NWRiZTBmMjdlNTYxMGQzZmU4Zjk0IGxlZ2FjeS10cnVuaworNDY2MDIgNjk3ZGQ4NDhlMWYxMzYzNmU1NTQzZmRhNWZjNjFkNTA3YTQzMzI5ZCBsZWdhY3ktdHJ1bmsKKzQ2NjAzIDIxZThkZDNlMzk0NTc3YzU4MTY2YjUxNTAxMDJlMTBhYmRmYmEzODggbGVnYWN5LXRydW5rCis0NjYwNSAyZWI4YmUwZjg3MzEyOTcxNjA3NmQzNjk0N2VlMGFhNTM5NTg1MjJhIGxlZ2FjeS10cnVuaworNDY2MDcgZjljMzAxZGM1ZmI3NGM4YzJlMThhNWRhZjIwZGQwOGY4Mjc0MWQwNCBsZWdhY3ktdHJ1bmsKKzQ2NjA4IDM4M2NkOTRjMmE2N2QzN2YyYmExYjFjMTcyNjUwYTljYjY4NDE3NzUgbGVnYWN5LXRydW5rCis0NjYwOSA2ZjliNTM2ZTk2ZjY2MzUzYzFmZTllNzU1MjM4YTkwMjNlM2U5YzU5IHJlbGVhc2UyNC1tYWludAorNDY2MTAgOTY2ZTc0NzBmZTIzNzMzM2I0ZTBlZjFkNTRjNzk1MjgwNDA5ZjdmOCBsZWdhY3ktdHJ1bmsKKzQ2NjEyIDJiNWE5ZGM0OTA1YzkzOWJkNGQzZDY0MmUwYTc3MTIzZjFiYzc1ZjQgbGVnYWN5LXRydW5rCis0NjYxMyA2NGI5Mzc5ZmE4MGRiMDg4NDEzNTlkMWVhNDM4OGM2MmUyMzZhNGRiIHJlbGVhc2UyNC1tYWludAorNDY2MTQgNDY0MjY1YzFkMDhiMWNhNjdkNDU2Zjg4ZWM1NzRjMDNjNzI4NzgxZSBsZWdhY3ktdHJ1bmsKKzQ2NjE1IDM0NzNmY2YwYmNlZTg0NjFmNmY2NmZkNjY2MDVmZGJlZDg3ZDY3NzYgcmVsZWFzZTI0LW1haW50Cis0NjYxNiBhYWJjMTM2MDI0NDBhZjNlNmY4YjUwY2NlZDJjNGI1ZTlkZTAzMDczIGxlZ2FjeS10cnVuaworNDY2MTcgODU1OTkzYjA5ZmQ5MjA4MmI0MmE3ZDY1NTU2OTBmMmJlOTQwYWEzZSBsZWdhY3ktdHJ1bmsKKzQ2NjE4IDMyZjcwNmZkNDUwM2U5ODkwZTdmMTFiYzg0NDgxY2YzYmQzN2I1M2MgcmVsZWFzZTI0LW1haW50Cis0NjYxOSA5NzA1MjZjMWE3ZTJmZjM2NDRlZjJjMjQ1NjMzMmNiZmE0NzJhM2E4IGxlZ2FjeS10cnVuaworNDY2MjAgMTI5YWI4NDZhNzFmYWZmNjEyM2MzNTVlZDA1NjJjN2UzMmVmMjhjYyByZWxlYXNlMjQtbWFpbnQKKzQ2NjIxIGQ0MTQwZjc5ZjFjNzA3OThhMzAxMjQzZjY0YWEwNmFhMmQ2NTFlNGQgbGVnYWN5LXRydW5rCis0NjYyMiBmN2Q0MjNjMGJjZDg2YTNiMDNiYzliNTk2NDYwMDAyZDMzM2E0NjA5IGxlZ2FjeS10cnVuaworNDY2MjMgZjBmNWRjYTI5OTkwN2E0ODIzY2I5YjlmYmMwNTQ5MmYzMTY2MzM3YSBsZWdhY3ktdHJ1bmsKKzQ2NjI0IDM0NzE0ZTQwZDQ2NTZkZjAyNzY4NjY2MTRiZGViMDZiMjMwODRjMDEgbGVnYWN5LXRydW5rCis0NjYyNSBkMWZhY2E0ZjBiODAyNjEyNWIxZjFkMjI5MWY3NTk5MjkwOTRiZWFjIGxlZ2FjeS10cnVuaworNDY2MjYgYTQ2NTQ3NzFlNWIzMDE0NGNiODE4ZTg2MGQwMzg0OGIwNTBiNmY5NSBsZWdhY3ktdHJ1bmsKKzQ2NjI3IGJlZjAyMzZkN2JmYTZmMTM2ZTNmNTc4ZWY1NTJkNWRjMDgzN2Q4ZDYgbGVnYWN5LXRydW5rCis0NjYyOCA0ZWM5NDJjZjhjOTJlZDc2ZTQxNGFhODNjMjU2NGEzNjcxNTQ5MTY4IGxlZ2FjeS10cnVuaworNDY2MjkgODA2ZjNlMTQxMTlkNzdkYzgzZmQ3NjE2MGE0MjI0ODU5NGZlYzVlOCBsZWdhY3ktdHJ1bmsKKzQ2NjMwIDcyMWE3ZWIyM2ViZjljMDlkY2E4YjdjMzgzMDJhYTcxMThhZmUzZGUgbGVnYWN5LXRydW5rCis0NjYzMSAxNjMxODI0OWFhMzMyNDYzNzMyMGJlMzQ1ZTYxNDJmMjdkMmRkNTE4IGxlZ2FjeS10cnVuaworNDY2MzIgMjQ4ZDEwNmY4OTUyZWZkNGZkNzFiYzdiOTQ2NjY3ZjQ4ZmZhMDhlZCBsZWdhY3ktdHJ1bmsKKzQ2NjMzIDA3YWNmNmZhNWFhMGVkZmZlZWIxZTAxYjZlOGIxZGRmYWY1NjE3NDggbGVnYWN5LXRydW5rCis0NjYzNCAzYWFkYzZkYzRiMWE2NDIwNTVhYWU4YzA0ZGEwNzFkNTFmZjBhYzk5IGxlZ2FjeS10cnVuaworNDY2MzUgNmY3NDA0ZjNmYzU3NjViMzdkMmE1MTM3MzI0M2M2OGM3MDQzMzU3YiBsZWdhY3ktdHJ1bmsKKzQ2NjM3IDU3MjJmMTEyZDVkYTU0YmQwNWIxMGI1ZGVkNGFlMGY3ZTA4MmQ2ZTcgbGVnYWN5LXRydW5rCis0NjYzOCA4MjA3MmE4ZjUyNjc0ZjAzNTRmNjM4NTRmNWMwZWY2ODhlNzE0NzE4IGxlZ2FjeS10cnVuaworNDY2MzkgMDdlNTAzZTg1OGVmZTI3ZDRiMDgzMTIyZjgzZGNjNmMwZTIxNWYwOSBsZWdhY3ktdHJ1bmsKKzQ2NjQwIDBiMmIwNzZlNTkwOGVhM2MxMjM0YmI3NjUzNTM4NTIxYmE0ODcyY2EgbGVnYWN5LXRydW5rCis0NjY0MSAxOTQzMGNkZmYyYmQ2YWE5MWYyOTk5MmNlYzA4ZjE0NmRiYzAwODU5IGxlZ2FjeS10cnVuaworNDY2NDIgYTExNDAwM2FhM2QzZWIwNzEzMzQ0M2IxYmJhYmJmOTcxYjBmMTJlNiBsZWdhY3ktdHJ1bmsKKzQ2NjQzIDcyMzlhMWE4MDQ4NzkwMGEzYmYxMWQ2YWQ4MDI2ODdmN2E0YmQ1YmEgbGVnYWN5LXRydW5rCis0NjY0NCA0NzIyZDM3ZmFhMTQzNzhiOTRhZGUzMDYyYmQyODU1OTFhNjI3M2JjIGxlZ2FjeS10cnVuaworNDY2NDUgZTAwZTY4ZGQxZGRmYTg2MWE3OWY3NzUyNWRjNGRmMGJiNDExOGY5OCBsZWdhY3ktdHJ1bmsKKzQ2NjQ2IDVlYzg5NzNkZDIyMTM5MWI5YWM1OGNjYjdlODA5N2M5OTUwODViNzEgbGVnYWN5LXRydW5rCis0NjY0NyBkYjc5Mjk3NzI2M2FjZWU2ZjA0ZDU4ZDFhNDQzMDU4NzE0MGRhZmM0IGxlZ2FjeS10cnVuaworNDY2NDggOWUwYjA1MGNlNDZmMDVjMGU3N2UzNjU5OGQ3NTBhODQ5MDUyMmI4NSBsZWdhY3ktdHJ1bmsKKzQ2NjQ5IDIxOTY5YjcxYzM2ZDA3MjFjYWU4YTM2Mjg0N2E5N2M1NzE4MThmNzMgbGVnYWN5LXRydW5rCis0NjY1MCA1ZGZiMjFhMzdmMTlmYWY5MGI1ZTUxNTBjZDY3N2FlYTU1NGVhY2M5IGxlZ2FjeS10cnVuaworNDY2NTEgN2QzMWQwMzFmOGUxMzM1MDlhYTExN2ZlNGVlNWIyMzA5YzFkM2NlOCBsZWdhY3ktdHJ1bmsKKzQ2NjUyIDkxM2U1ZTg0ZmFkZTc2ZDY0YjNiOTk4MTA4ZmY1MTNlNDE0ZGM0MjYgcmVsZWFzZTI0LW1haW50Cis0NjY1NCBmMTZkNDRkMzAzY2Y4NDAwOWU0MjkwNGY1Zjg1MGEwZjljZTIwNGIzIGxlZ2FjeS10cnVuaworNDY2NTUgYzQ1ODdhNWY1ZTk0ZWU2YzZhY2MxODUzYmViNDRlMTFhOWQ5YjY2ZSBsZWdhY3ktdHJ1bmsKKzQ2NjU2IGQwMDczYzZmNmY1NmUyZDgxNTM1MzIwN2Y0MDFjZDRhYzE5NTk4NmUgbGVnYWN5LXRydW5rCis0NjY1NyAxYzIzZTk1YTgwYTJlZjg5NGM0MzlkN2ZiZmU2Nzg2ZWRlYWFmOGMzIGxlZ2FjeS10cnVuaworNDY2NTggYjAwY2JiMDhlMGNjMTFiZWUwZGVhYjQ1N2E5ZmE0ZTNhNDgzN2FhZSBsZWdhY3ktdHJ1bmsKKzQ2NjU5IDU4ZGU2MWJlZGRmY2VmM2ZmMmEzZTNmMTllMGNhNmVkZjgwOWFjZjUgcmVsZWFzZTI0LW1haW50Cis0NjY2MCBjMDVlZjA4ZTFiYTk0ZDljYTE3OTg2OTMwYmJlNDA3OTJiMGMwZDU4IGxlZ2FjeS10cnVuaworNDY2NjEgMjM3NDU2MDYyYjgwZjczNmNiODcyMjEzMzFjOTM1MmM0YTA5OTZmZSBsZWdhY3ktdHJ1bmsKKzQ2NjYyIGNiM2Y1MTM4ZWNiNTc4MGE0ZmRiNWMwYWNlYjQ4ZTg2ZjE3ZGE1NGIgcmVsZWFzZTI0LW1haW50Cis0NjY2MyBjOTA4YWFhOTFlYWUxNzg3YzMxNTM0N2E1NWU0ZmQzYTU4MWY1N2RiIGxlZ2FjeS10cnVuaworNDY2NjQgMWM5ZDgwNzdlY2ZiMjFmOWNmZDc2NzQ4Nzk2MmExNTliZDBhMjY2NyBsZWdhY3ktdHJ1bmsKKzQ2NjY1IDVhZGJhNzA5NjA2YjNhNjRkMjJjYTliMmI4ZDNmNTFlZTc4N2Y5NGYgbGVnYWN5LXRydW5rCis0NjY2NiA5OTA2NDdlMmFiYzRiMjQ1MmIyNWU4Nzc4ZDkzZGNmMzA0ZjNiMzNhIGxlZ2FjeS10cnVuaworNDY2NjcgYTRiNThhYjY1MjAyM2M1ODEyOTA1MzQ4YzdjY2ExNjQ4YWQyYmZhOSBsZWdhY3ktdHJ1bmsKKzQ2NjY4IGYzYTY3OTk4NWUwZDU0OGRmMzA3YTk5YTc0YTQ1ZjFiMDIxNzc1YjcgbGVnYWN5LXRydW5rCis0NjY2OSAzMDYwNWJmOTVlZjhiOGJlN2FiMDdjMDRiZDE0MDE1Yzg4ZTY1NjQ3IHJlbGVhc2UyNC1tYWludAorNDY2NzEgMDJkNDc1NDA1ZTNiNWYyOTBiNjA0YWYwMzMzMTExMGE1ZDNlZjgxYiBsZWdhY3ktdHJ1bmsKKzQ2NjcyIDY2NDliNTFlMjQ1ZjkyNWRjNzc0MTEwMWMwOTc1NTg2MjdhOTZjYzMgbGVnYWN5LXRydW5rCis0NjY3MyAyMTc3YWVjZDkxZmNiYWIzZGE4ZDc3MzBhNWE2M2EzYTE5NzZjYTYxIGxlZ2FjeS10cnVuaworNDY2NzQgMDg1NWRhMTRhODIwYzBmMTZhNWU3YmNiOTBhNjg1MTQ0MjlhZWMxMCBsZWdhY3ktdHJ1bmsKKzQ2Njc1IDk2MzljYjEzYjk0MDUzMGQxMzkwYTdlZDQ2MWY3MTA0MTdlMDA4NjUgbGVnYWN5LXRydW5rCis0NjY3NiA2ODdhYWNkNjRiZTk2Njk2MWFkNzQ3MTE4MDM2MGFlMmUyYmQ3NzljIGxlZ2FjeS10cnVuaworNDY2NzcgMGRjYjkyMjhjYjNmZDg1NTAyNDBkOWFkOTQ0N2IxZDE0MGViMDIwNyBsZWdhY3ktdHJ1bmsKKzQ2Njc4IDY1NGYwMzgzZGJjYjJlM2NjYWU5ODFjMTM4MmM1NTUxNzIxYjRjZGIgcmVsZWFzZTI0LW1haW50Cis0NjY3OSBjNGI0NDIyMmE1OTk0YjA3YWNkNGU5ZTc2OGVhMzY5MWRmZDZlYzU0IGxlZ2FjeS10cnVuaworNDY2ODAgMThkZTUwYjU4ZmIxZDc4ZmZjZTc2MTIxNTFhODdlNzYxZDllMzAwZCBsZWdhY3ktdHJ1bmsKKzQ2NjgxIGYwMDUxOGJiNWI0MzM1Nzc1YzA2ZTI2OWJkNTRmNmMyMjMyZThkMmYgbGVnYWN5LXRydW5rCis0NjY4MiA4MGE2MjczNDBjOWYyM2Q3OTgwNDdmZTM4YzVlODFmM2NmMGY1N2JkIGxlZ2FjeS10cnVuaworNDY2ODMgMTFmNjY3MzE1NTRkYmE3ODBlNTA1MDU0N2FjMWM1YTBjY2E3ZDI5OSByZWxlYXNlMjQtbWFpbnQKKzQ2Njg0IGE2MGFkZjBjYjJmZDc0ZmJjN2Q5MjRkMzM2OGMyMzBlZjllNTU3ZjEgbGVnYWN5LXRydW5rCis0NjY4NSA3MDgxZThkNTMyOThlZjNjNDQ5ZmNkN2E5MjQzMWQ2ZWE0MjBiOTY3IHJlbGVhc2UyNC1tYWludAorNDY2ODYgNmFlNDE4ZTRiMzZhOWE2N2NjZGU3MjNiZmRhMjA5NWZkYjQ2ZTY5NSBsZWdhY3ktdHJ1bmsKKzQ2Njg3IDFlMzhmZjgxYzhhOTUyZWViZjdjYmJmMzY3MjU3ODUyYThjMDNlZjIgbGVnYWN5LXRydW5rCis0NjY4OCA4MjhjMTA2ZDVlY2M5ZmQ3NGNkMTZmOGJmZDFhOTI4NmIxNmRjMjBhIGxlZ2FjeS10cnVuaworNDY2ODkgNWZiZWZiNWM4YTIzZTY5Y2QwMmE2ZTM5OTM1YzUxYzljMjM5ODFlMSBsZWdhY3ktdHJ1bmsKKzQ2NjkwIDBkY2I2MmQ2ZDk5YTI4YTQ4MDc2NjRhYWIyYzM1ODlhNTY5NTA3YTcgbGVnYWN5LXRydW5rCis0NjY5MSA5OGU4MWFmNDAwMDdlZmQxOGVhNjY2ZWM0ZGE1ZDUyYWQxNmY0ZjY3IGxlZ2FjeS10cnVuaworNDY2OTIgMWMwMTZmOWNhNWE3NGFkMTM3MzZjYjcwMTNkZGNmZDJmMTM4MmVkNSBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2NjkzIDI4MGI4ZWFlZTFjMDM0ZGRhMDVhYzJkODcyYjA2YTI4YzdiMDJhZGMgbGVnYWN5LXRydW5rCis0NjY5NCBjOTg5ZmFmZmYzZGM2YzUyZGJhMmYxNDhiMjMyMTEyMTE3NGQ5OWMxIGxlZ2FjeS10cnVuaworNDY2OTUgMzExZjc1MWFjYTdhMzMyZDg4MTViMDVkMTQwZmI5NDZjNzg4YzNkYyBsZWdhY3ktdHJ1bmsKKzQ2Njk2IGNiM2I0MzljMjljY2ZkYTlmZTA4MWY5NTE5NzZkYjFkNjI0ODFmZGUgbGVnYWN5LXRydW5rCis0NjY5NyA5MzFhZDA2YmVjNTYxOTY5ZDE0NGU1YTkwM2VkZDg4ZWFmMzQ4YWIzIGxlZ2FjeS10cnVuaworNDY2OTggNjI1YzJkOThhMWY4MDVkMTc5MzdjMzZhODM5YTU1OWVkMzA3MzBlOSBsZWdhY3ktdHJ1bmsKKzQ2Njk5IDdiZmFmZGVmZmVlMjYwOTU2ZWMyOGFmZGQzYmYxNTM2YmE3ZDI4MDMgbGVnYWN5LXRydW5rCis0NjcwMCAxZThiNTkzODllMmUxMGI2ODI2OGU5OTMxOGYxNGE3Yjk4YTdiZDM2IGxlZ2FjeS10cnVuaworNDY3MDEgMWU4NTY1N2YwNDc0MGQ2MGI2OTdkZjIyYjQyY2VmZWNmYzk2ZTIyOSBsZWdhY3ktdHJ1bmsKKzQ2NzAyIDNhMzZkNWY1YjEwZmQzMDRlNTE2ZjhjOTg4ODY1NGIyMGZiMmI3OTAgbGVnYWN5LXRydW5rCis0NjcwNSBlYTk5NjZjODg2NTc0MmQyODA0NmE4M2Y0MTg3OWRlYjJmMmJjZjUxIGxlZ2FjeS10cnVuaworNDY3MDYgMGNkMjI3M2JjM2IxNzU2Yzg4YzNmNmI2OTIzYzE4Y2U5NmM1NTQ0NyBsZWdhY3ktdHJ1bmsKKzQ2NzA4IGRlZmIyYjk5MzQzNGZmMWY2NjE5NzVkNjI5ODNmN2RmMGYxY2E4MTEgbGVnYWN5LXRydW5rCis0NjcwOSBhMmNmODcxYjc4MDBlOGRkYzM3M2E5NDBlYjZjMzU3MDFiNjU0ZWRmIGxlZ2FjeS10cnVuaworNDY3MTAgM2ZiMzgzNTFkZDM5Y2I3M2U1ZDJiYjNiNDY3NTg4ZjEzNjM3NWVhYiBsZWdhY3ktdHJ1bmsKKzQ2NzE2IDJhZjU3NTdkZTdiMWU5YWQ2NDdhOTkyZjJlNmM3MzMyNGM4Mjg2ZWUgbGVnYWN5LXRydW5rCis0NjcxNyAxY2IyZWNlNGI5ZTFkZTBlYWJkMzlkNmFlNDFhMjBmZTQ5MzYxM2Y4IGxlZ2FjeS10cnVuaworNDY3MTggYTM2NjhlOTRmYzZkNGQ0NzcyYjRjMzQwMzRiZTUxNTNhMjAwOWY0NCBsZWdhY3ktdHJ1bmsKKzQ2NzE5IDFiNDdkMDMwYzNmYWU1YzdmNWFiM2IwNmJkZjc2ZmIzM2EyZTY5YTEgbGVnYWN5LXRydW5rCis0NjcyMCA3NzA0ZjM3NTQxZjQyMzFmZWJkNjAyY2UzMTMyOTNmNTYyMzQwZDA5IGxlZ2FjeS10cnVuaworNDY3MjMgODcyZTk5MWY5YjcwMTU0MDllZjU3YTc5ZjIzNWIwNzc2MmM4YWY2MiBsZWdhY3ktdHJ1bmsKKzQ2NzI3IDExMDBiNTJjNTVmZGZlMzY0NWJmMTM5ZTU2MDRmY2FjZTdlN2E0NzAgbGVnYWN5LXRydW5rCis0NjcyOCBhMDc2MWNlYjg2MzNhODFhMzRkODRmOTBmZDNjNmM2ZDkyZGRjNmE1IGxlZ2FjeS10cnVuaworNDY3MjkgMGI0ZWFjNDA1MGI4MDAyOGJmMmY1NWEwZWMxNzkwNDFiZjNhMTAxOCBsZWdhY3ktdHJ1bmsKKzQ2NzMwIGZjM2JjZDRlNDRiOTY0YWU3MjgwMjY5ZDJlOTEyODQwZjk1NmUzYzEgbGVnYWN5LXRydW5rCis0NjczMSAwZTdiYWZiMWI4MmY5YzFhMTlkMjdiOGVhN2Y3OGM4ZDI2ZDQ4MWNkIGxlZ2FjeS10cnVuaworNDY3MzIgN2QzMWI2NjkyYWI3NDgwMWRlYjM1YzY1NjEwNDIwN2FmYTAyMWJiMiByZWxlYXNlMjQtbWFpbnQKKzQ2NzM1IGUzYzA4ZjA2NmViODBkN2U4MWVkMWQ4OTkwZDAzOGQxMDU1NTlmMDAgbGVnYWN5LXRydW5rCis0NjczNiBmY2JmNjNjOWI0ZjZmY2VkYTYyNTI1ODdiYzFlZGZlZjEyM2JmZDU5IGxlZ2FjeS10cnVuaworNDY3MzcgNGIwYTNkMGQ4NTg0MWI3NTBmN2YzMTRiN2U3ZDMzZDBlOWM2OWI3NCBsZWdhY3ktdHJ1bmsKKzQ2NzM4IDFlMDcwNGNkOWVlODFhYWE1ODgwZjVhOGRiMDIzZmE0YzhiMGU3MTcgbGVnYWN5LXRydW5rCis0NjczOSA1YzU4ZmRhOTVhYTVhMmJmZDQyMWM3YTFlZDRjYmNlOThjNTQzNGQ0IGxlZ2FjeS10cnVuaworNDY3NDAgZjI4ZjljMTVlMmQwZjhlMDIzMTdlODcwZTY2YzY1ZDY2OTAxMzVjNyBsZWdhY3ktdHJ1bmsKKzQ2NzQxIDM1ODFkMWRjNDI1MzM3MjIzMDU5NmVjODQ5YTZiZjBlNjEyNWQxNzMgbGVnYWN5LXRydW5rCis0Njc0MiAxZDIzOWM3ZThkNjA3NWEzMTg2MDE4YWI2YjRmYTQwZGZkYWQxYjMyIHJlbGVhc2UyNC1tYWludAorNDY3NDMgNzJjOGYxOGUwMzExODNkYmU5YTdmY2U5ZmU2NjAzMTExZDk2MDk5YiBsZWdhY3ktdHJ1bmsKKzQ2NzQ0IDc2MTkyMTZiYmMxOTRjMzQzMWY4MzcwOWFhYjk2ZjlhOWFmYmFiZWMgcmVsZWFzZTI0LW1haW50Cis0Njc0NSBkM2Q5NjFmMzg4YmUyYjAzYWY2NGIxNDhjNzNmMDJmNDY3M2NlYTdmIGxlZ2FjeS10cnVuaworNDY3NDYgZTJiYTVhZTRiODEzZDlmZDJjMmQyNjhkOGJhZjZjMjY4NDI1NTg1MSBsZWdhY3ktdHJ1bmsKKzQ2NzQ3IGUwZDI5NTg2MjEyYTM3N2VkZDkyMjczNjhmNGMzYzZkNzBjZjMyMTUgcmVsZWFzZTI0LW1haW50Cis0Njc0OCBkZWU3M2ZhODExMGYzZWFkNDMwMGY5MTY0NWY2NWRiOGM4ZTNlNDVlIGxlZ2FjeS10cnVuaworNDY3NTAgMTlmZDYxNDE5NDBkNWIwYTdiNGZiMmM0MTM4OTEyYWJiMDI4M2Q5OCBwM3lrCis0Njc1MSAyNDkzMGUzYjYwNjE5YWVjMzE5Y2RmMzNiMmNmNDBiYzkzMTE4MjZiIGxlZ2FjeS10cnVuaworNDY3NTIgMzY1Y2EwNGQwODU2NGEwOWQxY2ViYWFkYWU3NDViMDhhNDc3NmM2OCBsZWdhY3ktdHJ1bmsKKzQ2NzUzIDA5OTk3YjJmNjNhMmMzZGFiMmU2Y2Q3ZWE5Y2JmYmZmMWJmYTFiMmYgcDN5aworNDY3NTQgYTE5YzIwYzVlNWM3NTY2MjE1N2IxMTAyZTM2YzA3ZDFlMmMwMWFiOSBwM3lrCis0Njc1NSA2YmE3ZDQ2Njc5ODY3YmY5ZDRhYjZlZTk4ZTE1NWZjZDAxMTdjYWQ1IGxlZ2FjeS10cnVuaworNDY3NTYgMGUzMTk2Njc0NTVjMzVjNjIyMjQzNTViMzcyOTNlZGU0ZTUwMjNiOCByZWxlYXNlMjQtbWFpbnQKKzQ2NzU3IDViYzcyNzJiODFlNTQ3ZGZjY2VhMGIwZmZiODAzNTIwOTdjZjc1NTYgbGVnYWN5LXRydW5rCis0Njc1OCA5MzVhYzIyZjBiM2YwMjZlNTNmOGRiYzdjYjFiYzlkNjUxMzcxNjJlIHJlbGVhc2UyNC1tYWludAorNDY3NjAgNWYxOTU0NDNlMDBhYTkwOWM5MDVmZDE1MWMzOWZjZTc4ZWRkODQ5MiBsZWdhY3ktdHJ1bmsKKzQ2NzYyIDRlNzk4Y2FhMDgyZTVjZGQxMmEyZDdlMWY3MmZjZWUxYjdiY2MwNTkgbGVnYWN5LXRydW5rCis0Njc2MyBjMjAzODQwNTdhMDZjMjdiNzM2MjU1YTBiODJiODRkMTlkYTU2NTk0IGxlZ2FjeS10cnVuaworNDY3NjQgYzNjNTJmMTU5OTk5YWU5NDYwYWZkZGI0ZDYzN2NjMTIyMWY5MGZhOSBsZWdhY3ktdHJ1bmsKKzQ2NzY1IGVjYTRmZTEzMjk0MGJkM2M1MmFhNmRiMTEwZTg5ZWI0MjM1NjEyYzMgbGVnYWN5LXRydW5rCis0Njc2NiAyZWEyNjNiNjI4OTcyZTQ1MjczZmQ5ZmRlYjhiZTFlZTk2NjViNjI0IGxlZ2FjeS10cnVuaworNDY3NjcgZGViYzhkNzgzZjg2OWU1YThjOGE3Mjk4ZjcyNDBjYWMxY2Y5YTI3NyBsZWdhY3ktdHJ1bmsKKzQ2NzY5IDBhMWJhZDMyYWJmZTM5ZDlhMGRjMGJiMjZjYzRjNTBmNTZlYjgwZTEgbGVnYWN5LXRydW5rCis0Njc3MyA2N2Y0MzBkOTJiMzhlNWNhNDRjMjJjNzYzYTZmNDMxN2Y5YWZmODM0IGxlZ2FjeS10cnVuaworNDY3NzYgNDY1OTlmYzQ4NmU4ZmRhYWYyMWY4YmI4M2I5YTg4YjRkZjIwNGYwNSByZWxlYXNlMjQtbWFpbnQKKzQ2Nzc3IGM1NzMyMWM4NDIyNmM5MTY3OTZhOGVkNWMwN2VjM2I1ZWQxNmIyNmUgcmVsZWFzZTI0LW1haW50Cis0Njc3OCA3N2I2NTg5ZmFkYjk3ZDg1ZTBjNjQ1YzgxNWM5ODlmMzRlNTU2NGJmIGxlZ2FjeS10cnVuaworNDY3NzkgNGVmMWM2ODViY2JkY2U0NDQzYjMyOGFlMDdjOTc3NzAzOWZmMzBmNSBsZWdhY3ktdHJ1bmsKKzQ2NzgzIDA1YTQ5Yzg5ODVmYjA5ZjQ3NWM3YTJhOWY0M2I5ZDE4M2E5Njk5NzYgbGVnYWN5LXRydW5rCis0Njc4NCBhYzI1ZWVlOTAyNTQxNzUxMjFiY2VhMTU3NjM1ZTllZGYxZjkyZDc2IGxlZ2FjeS10cnVuaworNDY3ODUgNzJlMzdhZGE0MTcwNzJmYjFhMTMwMzA4Y2U4ZTMwZTNmMGI3YWNhYyBsZWdhY3ktdHJ1bmsKKzQ2Nzg3IDcwYWFjMmI5M2UwOWEzYTQ4OTAwYjI1YmQzYmM4ZDViYmVjZWMyMGQgbGVnYWN5LXRydW5rCis0Njc5MiA2ZThkOTk3MTgxNzAwZDQxYzIyMzI2ZmNkMzQ5ODI4ZTZjMWNiOTg3IGxlZ2FjeS10cnVuaworNDY3OTQgMTM1ZDE1ODZiMzVkNTRiYWM4MWQ3MWZhNDZlMmQ2YTc5ODQ4MjM5YyBsZWdhY3ktdHJ1bmsKKzQ2Nzk1IDFjYWZiY2Q3ZjU1Y2NjYTkxYzQwODViMWY1YTZlYTVhZjlhZjJhZTUgbGVnYWN5LXRydW5rCis0Njc5OCA3NmFkMTE4ZmZlM2I1Zjg1NjI4Njc1OWYwZWRjNzUzZDQ4ZWY3YjQ4IGxlZ2FjeS10cnVuaworNDY3OTkgNWE3NDE5MzQyOWYwNjRlMTI1ZGU5MzYyY2MxODYzNjQ0ZDhiYTQyYSBsZWdhY3ktdHJ1bmsKKzQ2ODAwIDA3ZjI0MTk3Yjg3Y2Q3MGQyMTE2OGFmMWExMTRjNWYzNmNhY2ZjNDAgbGVnYWN5LXRydW5rCis0NjgwMSAyNmE5N2U1YmRmMjEyMTUxMTAzYTdiODMwYTQ1MzdlYTE3NDY5MWExIGxlZ2FjeS10cnVuaworNDY4MDMgYjEyOWE1MDI3MWFkZmVjNzkyMDYyMzZjYzJlYzUzOTQ0YmVmY2U1NCBsZWdhY3ktdHJ1bmsKKzQ2ODA0IDE4MjhhZjVkY2M5OTQ0YTJmNzg1NWI3ZmNiMTY4NjRiNzhiM2JhOWQgbGVnYWN5LXRydW5rCis0NjgwNSBiYTZlZWJmN2M3MTlkZmI1OGE1ZTM5NTRhOGNlNWIyNGJmYTM4OTA5IGxlZ2FjeS10cnVuaworNDY4MDYgMTZjNzk4ZThlYWUzMjdiODVhNDYwY2JiYTFjZWJmYjQ0MTk3NjM5MCBsZWdhY3ktdHJ1bmsKKzQ2ODA3IDQ5M2ZiNTc3OTMyZjJkODgzMWE0M2I1MzE5YzRlYzk3ZjI4YTE3ZTkgcmVsZWFzZTI0LW1haW50Cis0NjgwOCA0MmZlNmRlMjQ2MDJmZDQwZjQyZTM5M2VkMTM0NDFjZjU0OWEzZWU3IGxlZ2FjeS10cnVuaworNDY4MDkgYWQ1ZDQ3MzViZWRjODQ2YzZhZWYyMWMxMDJlY2RiY2NjZWE1YzMyMSByZWxlYXNlMjQtbWFpbnQKKzQ2ODEyIDY3NDUwZGIyNmY4MTY3ZTc4YmJjM2UwNTA5NzA4MTQ3ZDU1N2NiZTUgbGVnYWN5LXRydW5rCis0NjgxMyBlMTVmYWZhNDEwN2QyMGQ2YjBkNDE5ZGZiN2JmM2RkOWIyZGU4NWMzIHJlbGVhc2UyNC1tYWludAorNDY4MTQgMDhiMjRjODhkNTE5MDEwZjUxMzNiODM5NDM4N2MxMjc2ZTQ4NGY1ZSByZWxlYXNlMjQtbWFpbnQKKzQ2ODE1IGU3ZDA4NGNmNjViYjliNDA4NDBjZWU5MzNkYWYxYmJjNTUwYmE0MzggcmVsZWFzZTI0LW1haW50Cis0NjgxNiA0NTRhYTBlYzBlYjdiM2E2Y2IzNDFjYzIxMDMwNDZhMzI0M2FiNmUxIHJlbGVhc2UyNC1tYWludAorNDY4MTcgODIzMzFmMTFhMTU2MGJmZTNjZWY0MTk4MWJiYTk0YTRkNWZkZTBlYyBsZWdhY3ktdHJ1bmsKKzQ2ODE4IGUyZDJkYzUwNjUyODc3OWJiZDI1ZDY5NTAyNDFhZGQxMzNhNzYwYTAgbGVnYWN5LXRydW5rCis0NjgxOSA0MjgwODUyNjUxMWM5YmI0OTIwYjFlMTA3MjIxZjhlYWQxNzNlZmY2IGxlZ2FjeS10cnVuaworNDY4MjAgYjIzZWViODAyNzgwNTIzYjY1NDk2ZTRiYmY1ZWE2YzgyNjJiM2VhNiBsZWdhY3ktdHJ1bmsKKzQ2ODIxIDMxMjUwOTliMzQ5NzFjMzBjNzY5NzgzZWQzOTAwYTZlNTFjZWEyMTYgbGVnYWN5LXRydW5rCis0NjgyMiAyZGQxOTcwMTQ2MTIyYWRlY2VjODc2OTI2ZDI0OGI1NTI2NWFhZTgxIHJlbGVhc2UyNC1tYWludAorNDY4MjQgYWE1YTFiY2EyOGRkODhjY2MyZGVjMTRiNTllNDNhNGQ4MWU2NzBmOCBsZWdhY3ktdHJ1bmsKKzQ2ODI1IGNkNWYyYzViYWI2NTNiNTU3MzZlNzczZWFlMzg1YWI0MzJjMmY4ZDEgbGVnYWN5LXRydW5rCis0NjgyNiA1MzhjZjE4OGY4YTZjYmMyMjA4YTUyMjYyZWI5YWJkYjlmMjYwNjQxIGxlZ2FjeS10cnVuaworNDY4MjcgYmMwOTExODFiODQxMzk1NTA3YTc3ODAyMWY0NTk1ZjFiMWU0YjI0YyBsZWdhY3ktdHJ1bmsKKzQ2ODI4IDAxNDI1MzZiNTJiNjRiM2E4MzZhNjI3ODA3N2Y2ZjA1YmNlNGJjMTkgcmVsZWFzZTI0LW1haW50Cis0NjgyOSBjNWFmZDQ0MGE0ZDA5ZDBkZTBjNzczN2U1MzcxY2QyZDM1ZTcyZTdiIHJlbGVhc2UyNC1tYWludAorNDY4MzEgOTI0NDBkZTg2OGU5M2ZlZjEzYjMzODNiZTljYzUxMGU5N2ZiNGRmYyBsZWdhY3ktdHJ1bmsKKzQ2ODM0IGExZGQyNWVjMmY1YmM2NjU1OGMzMzg5ZGFiNTViMGJmMzEyZTc5ODcgbGVnYWN5LXRydW5rCis0NjgzNSA3MzY2NWY2ZmVjMzE1YWVjZjMwZGNmN2UzMWFmNDY4ZmZhN2Q5YjQ1IGxlZ2FjeS10cnVuaworNDY4MzcgN2IzMThlOTZmODBhYTk0OGRhYTQwZjFjYTA3MWU5OWUxYjNhMmNlOCBsZWdhY3ktdHJ1bmsKKzQ2ODM4IGI4ZjIyODUxYzFmZjFlNTk5MjRjNWU3YjI2NTgwYjkzYTkwMjY1NTYgbGVnYWN5LXRydW5rCis0NjgzOSAwYjNmZTJiNzM0YTFkZmYxNDA2NTVmMTNjMzBjODNkYjU1MzZlNjQ3IGxlZ2FjeS10cnVuaworNDY4NDAgYmY0ZTQ4NWJlY2YzNzc2MjJiMGZjMmJhZTllMmViZWU3YzJjZDMwZSBsZWdhY3ktdHJ1bmsKKzQ2ODQxIDE5NWEwZDNlZWNkNDVlYjc0M2FiMjA0YmY4YTJlNjMwN2ExZTYzODQgcmVsZWFzZTI0LW1haW50Cis0Njg0NCA5ZDg0NzhmNzMyZDVhZGM5MWYxYzdkYzhjYjI5OTQwZWZmMWI0NzdjIGxlZ2FjeS10cnVuaworNDY4NTAgOWE5NDQ2NzY3MzJhN2RiMGU0MGJiNjVjOGRlZjY2NWMzMzI4Mjg5YyBsZWdhY3ktdHJ1bmsKKzQ2ODUxIGU4MDA5N2JmNzNiNjBmYWQ4ZTdmMTQwZjMwMzY1ZDEzNTYzYWVjY2YgbGVnYWN5LXRydW5rCis0Njg1MiBlNjE1NzU1Y2E4NzI1ZmIwYjlmOGZjZDcxNWNjZGQzOWNiNTZlYmNiIGxlZ2FjeS10cnVuaworNDY4NTMgMGE4YTM5MmUxZmFlY2YzMGY4MTM1M2U4MzE3MjUwZDM5MzhiNTZkNyBsZWdhY3ktdHJ1bmsKKzQ2ODU0IGFmMTc0MmE4MDQ5ZWM3ODg2ZTg0ZDUxMDVlZWY4OTNmYzIwZjRiMGQgbGVnYWN5LXRydW5rCis0Njg1NSA1MDFlZTJhMDVmZWM0YjhmZDBkZjViNmMyODhlYWI3MmIzNWQ4ZWU5IGxlZ2FjeS10cnVuaworNDY4NTYgYWRmMjA4OTJkOGNmYmMwY2VmZmRjOTdiZGIxNzdmMWFhYzk5M2FiZSBsZWdhY3ktdHJ1bmsKKzQ2ODU3IDQ5MDI2YWY5ZDFkNzljNDFhMGE3YWE2NGIyZmViZGJkMTM0NTNmYTQgbGVnYWN5LXRydW5rCis0Njg1OCBlODQ2NGFmZWY0YTQxYWE5YTdiMmY2MTVjMGNjMzFiODgwZDcwY2JlIGxlZ2FjeS10cnVuaworNDY4NTkgMWIzYjZiMTk4MmFhY2QwMzE0ODg4ZWZmYjgxYmJlZDVjNjUxNjczNiBsZWdhY3ktdHJ1bmsKKzQ2ODYwIGFiMjUzY2Q0OTdkMjEzNzY3MzAyYmJlYjZhMjVmODhhMmMwMDA0YTggbGVnYWN5LXRydW5rCis0Njg2MSBmYzRhZmVlNDBjMmIzYjg1OGE5NTk3NGJjMzQxNzg1MTkzNzM3NWFhIGxlZ2FjeS10cnVuaworNDY4NjIgYTc4OTM5MGQ4ZWE3ZWRkZTdkMDYzNGU3Y2FhODQ1NWFiN2E4OTRjMCBsZWdhY3ktdHJ1bmsKKzQ2ODYzIGI1MGFiMjg4YWUyN2ZmNDg5NTcwYmUzMWI4NmEzMzY4YzM4OTFkZjcgbGVnYWN5LXRydW5rCis0Njg2NCBkNjdkZWQ3YTI5MTRlNGNmM2Y5YzE1YTE4MjQ3MGFiNDMxYWRlMGY2IGxlZ2FjeS10cnVuaworNDY4NjUgZmNhMWU0MjRkMDIzOGY4OTUyYjA4ODNmN2ViOWM3NzQ0NTRkOTkwZiBsZWdhY3ktdHJ1bmsKKzQ2ODY2IGNiZjI3MmY0NzlkMTA3YjMyM2VjYTQwNjM5NjMyYTA5OWQ4ODk2MmQgbGVnYWN5LXRydW5rCis0Njg2NyA1YTk5NGQyNmEzY2Y4OTRiYTlhMTZlYTg4NWZhMGI3ZmMwNWE5OTY1IGxlZ2FjeS10cnVuaworNDY4NjggMGFjYzUyZDNmYmYxZjQzNWEzZmMzYmU3YjJiZWUxODdiNzlmOGM4YiBsZWdhY3ktdHJ1bmsKKzQ2ODY5IGU2YzgwMGE0NjNiMTMxMjlkM2M3MTgwMmNhYTVkNDM3ZDMxNjFmZjggbGVnYWN5LXRydW5rCis0Njg3MCA4YmE5N2NjYmY5M2E4M2Y2ZTZiZmE4MDYyZTVkYmJlYmJlODU2MDcyIGxlZ2FjeS10cnVuaworNDY4NzEgNjZjYmNjZTQyMjc4ZjIyZDIxNGI2OGE2ZWIyZWZlYzc1OTg5M2E1ZSBsZWdhY3ktdHJ1bmsKKzQ2ODcyIDFmYTc4ZmQxZTkzMzkxNDc0ZmM4OTUzMTcwOTZlODVlMmU0NDcyZDEgbGVnYWN5LXRydW5rCis0Njg3MyA2MGQ3OWEyYmM5OTdlOGNjMGMzMzA0MDhlMzE3MzEyYjNiN2M5OTEyIGxlZ2FjeS10cnVuaworNDY4NzQgMWExMWE0YTQ5ZmI4NWEzZjk2ZjRlMzRmMjcwYmZiMGZkYjA3OTQ1ZiBsZWdhY3ktdHJ1bmsKKzQ2ODc1IDNlZWU3YmQ5YTBkMDcyYjQzYmRjNmVkNzBjN2Y3NTBlMjQ5YTZkMzQgbGVnYWN5LXRydW5rCis0Njg3NiA0MTU3MGYwOTlhNGMzZTY1MWY2YjJkNTdkNzljMDliNjcwNzY2YzFjIGxlZ2FjeS10cnVuaworNDY4NzcgOTJkOGNkYzRiOTBjMDJjNGQxNzVmYTZhNDcwYTczNzk4NTEyNjQwNCBsZWdhY3ktdHJ1bmsKKzQ2ODc4IGYxNGFiNzBjMzIwZTQ4ZmQyYjUyZTMxZmM3YTg3YmMyNTA3MDVlNmYgbGVnYWN5LXRydW5rCis0Njg3OSA2OWU4OWMyOTA0NGUyYmRkMGZiOWI3NTUzYjBmOWI1ZjkzMmZhNzc4IGxlZ2FjeS10cnVuaworNDY4ODAgNDdkOGQxOWNjYWRjNzA1MmJhOGMyYjUyNDY5YTAxZWM1MzA3YjRjOSBsZWdhY3ktdHJ1bmsKKzQ2ODgxIDc5OTgzY2Y2MzRjMDI1YWI0YTVlNzFlZTg3ZDdjOThmMzQ4MGU4YjAgbGVnYWN5LXRydW5rCis0Njg4MiA0NmYzZWI0NzRjODQyZDBiMDBhZTkyOTFjYjM1N2Y3NjExZTI5YTRhIGxlZ2FjeS10cnVuaworNDY4ODMgYTkxZTczOWNlMzMzMjVmYTRhYWYxMDAyNGZjZDhhMzg4NzNkMDk2ZSBsZWdhY3ktdHJ1bmsKKzQ2ODg0IDE4OTMwNGM5ZDA3ZWFkYTRjZDRjMjE5MTcyYWI1ZWU1OTBjMmY0OTAgbGVnYWN5LXRydW5rCis0Njg4NSAyYWIwMzk0ZTZlNDliNGYzNTNiODZiMDNjZWY5NjNkNWE1M2U2ZWQ2IGxlZ2FjeS10cnVuaworNDY4ODYgNjE4ZDA4OGQ5NjY4OWNmN2RkYWU3ODNlMmM0YzhmOTM4NGNiYmNjZCBsZWdhY3ktdHJ1bmsKKzQ2ODg3IDFkYTg0NTZlYmQ0ODcxOWE0ZWJkNzg3ZTRmYmIzNTY1YzMwMzA5MTUgbGVnYWN5LXRydW5rCis0Njg4OCBkNTc3MWEzODliOGViN2E5ODU3OGNkODA1ZWRkM2UxMjYwZmQ1M2Q5IGxlZ2FjeS10cnVuaworNDY4ODkgMTcwM2VmZGE1Nzc0MmQxODFiZTA0NWYyMDcwOGQ2NWQ5MmRiOTlkMSBsZWdhY3ktdHJ1bmsKKzQ2ODkwIDUxNzMyZTgxYzc5NjE0NjdmNjgzMmViNmZiOGMwM2E4N2UzY2YzOGYgbGVnYWN5LXRydW5rCis0Njg5MSA4ZmUzNzNmYjIxZDQzMGM0YTY0ZWI0NTRkMDFlY2JkMmRmYjViOTQ2IGxlZ2FjeS10cnVuaworNDY4OTIgOTcxYWJmM2FlY2Y0MTE1OGNjNzBjMWRiNzkzZDE0NTRmMTVhZGUxOCBsZWdhY3ktdHJ1bmsKKzQ2ODkzIDk3YjYxZDZmNmI3NjgxNjIwNDdhOWM2NDg2MWExN2M1MGM1MzM4MzYgbGVnYWN5LXRydW5rCis0Njg5NCA0Yzc0ZWM4MzFhNmMzYmZlZTNmODQ0OTNmYzgwYmI5YmI3NmViNDJkIGxlZ2FjeS10cnVuaworNDY4OTkgMzgxYTcyYWI1ZmI4Mzk0YTJkM2VhMjhiZDcwYzEwMGQ2MzZjN2QxYSBsZWdhY3ktdHJ1bmsKKzQ2OTAxIGM4NjE4NDczY2RjNmU4MTZiNjljYjBjYWUwYzhhNTQ5MmQwZDMyZGIgbGVnYWN5LXRydW5rCis0NjkwMiA1MWYzMzQyYjcwZDNjZmE3MzllZDIwZmRmN2Q0NDVlMGMyMmM2NDMyIGxlZ2FjeS10cnVuaworNDY5MDMgNzY1ZmIxY2NjM2Q4OTRkYmRiMWFkYTkxZDNmZTk0MzY4YjYyNmRjNyBsZWdhY3ktdHJ1bmsKKzQ2OTA1IDliODUwN2NmYmU5NTAxMDU5ZjI3NzBmY2VkMjk1ZDFjOWI3YTdiZGIgbGVnYWN5LXRydW5rCis0NjkwNiBhNDU1MmYwOGQ1M2IzNDI3M2VmNGNjNDQ2NTc5NThlNzQ1OTNmMTg3IGxlZ2FjeS10cnVuaworNDY5MDggOWM1MmVmY2FmZjY1MWRlZTg1OTIxMzdmOTljN2YzYzczNzQ1NDI5NSBsZWdhY3ktdHJ1bmsKKzQ2OTA5IDcwYjE2NmNhMWM0OWUyMzc4ODU1MjJlODI0ZDgwZmE5ZGU4ZDRmNGQgbGVnYWN5LXRydW5rCis0NjkxMCA5MTRkYTEwMzZlZWQ1ZGI2YjA2OGE2YzgwOGVhOGNmY2QzMmU3NTZjIGxlZ2FjeS10cnVuaworNDY5MTEgOTM2NDI5ZTEwYjg3OTZlYjZiZWMzMWFmZDMwOTUwZTI0OTI5NGJiMiBsZWdhY3ktdHJ1bmsKKzQ2OTEyIGVhMzcyM2IyZDQ2YmQxNzgwNDY4NGJiYWQyODgxMWUxMGJlNjc2MGIgbGVnYWN5LXRydW5rCis0NjkxMyA2NDU2MDkyYzEyMzVhMTcwMWE3NjRhN2NlZGY5NjdiZDQ0MjFiYmZlIGxlZ2FjeS10cnVuaworNDY5MTQgZTFiMTg0NzljZTkzMDdkM2Y1ZmE4MTI0OTEwYTUzZDRkODhjM2NjOSBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTE1IDk4MTIyZDIxNzZmMTQwYTFmNTAyNzdmOTMyN2YyMjYyNTk5NWQ3YTIgbGVnYWN5LXRydW5rCis0NjkxNiA1ZGIxZmE2ZTk2ODE4MzVmNTJkMGNjOTc0Zjg0MTg1ZThkZDI5NjBmIGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MTcgOTkyMTI2YTI5ZTBmZDM4ZDRkZmMwNGRkNzE0MTBhMTFmZTBhMWQ1MSBsZWdhY3ktdHJ1bmsKKzQ2OTE4IDRlNzRkZjk1OTUxOGE0YjczODNjNmVkNGVjY2Q2NjZhMjRkZjEyM2YgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkxOSBmN2QyM2JjYTU5OWZlYmNiZDFlNGUxOWMxMDFmZTgxZjFkM2I0ZWM2IGxlZ2FjeS10cnVuaworNDY5MjAgYTcxNGYyZjEzZTI1ZjIyNzA0ZjE3YWExODI0NDBiZTU1NDlhMjc0ZSBsZWdhY3ktdHJ1bmsKKzQ2OTIxIDNlOTZlNTAyNWQ5ZjdhYWU0YjA0ZjM2NTc4NmNjNTc2ZGE1MjE5YWUgbGVnYWN5LXRydW5rCis0NjkyMyA2ZjJmMThmODYzODc0M2Q0OWFkNDdkMTI5MWU0NmE1ZWEyYTViYzU2IGxlZ2FjeS10cnVuaworNDY5MjQgNmYzMDYxMWYyODNkY2JlNzJlZjc2MDkwNmY3MDVmMTgzYmVmNDc5NyBsZWdhY3ktdHJ1bmsKKzQ2OTI1IDVkNjIyZTQ4M2ZjY2ZhNjJkZjU3YjQ0YzM0NDkzZTFjMzI1Njg5NjggbGVnYWN5LXRydW5rCis0NjkyNiA1MTI1MDc2NmQ2ZjVkMjUxMzIwMjA4NmI2ZmNiOTRiODUyYzFhZTc0IGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MjcgYmIxZjAyZTk3MTFkYTVmNTNlYWQyN2I3MjIzZjVjNGFhMDRiYWEwNCBsZWdhY3ktdHJ1bmsKKzQ2OTI4IDIxNjcxMDUxMjNlNDQ3OGJhYWM3NTNjMTQ5NjQ3YWJkOTliYjQ5YWYgbGVnYWN5LXRydW5rCis0NjkyOSA2ZTBjMGM3Y2YwNjg5YWQ0ODBjYzVlZmUxNzJhNWZkMjBlYTljNGIzIGxlZ2FjeS10cnVuaworNDY5MzAgNzBjMmVmYTAwMDA3OGYyOWM0ZGNlZDI1ZjI2OTk1MWM1MmM4ZjIzZCBsZWdhY3ktdHJ1bmsKKzQ2OTMxIGEyNDkwZjc5MzFkMzExMzllYjVkN2RmZWIyMGY0Y2E5OTFiNDgyN2QgbGVnYWN5LXRydW5rCis0NjkzMiBiYjY4NGEwYzIyZDk2MzRhMGNmMGMzNzYxYjBmNjg5Zjk2ZjI5NDc2IGxlZ2FjeS10cnVuaworNDY5MzMgNzRiZjU3M2JmZjRjMzVlN2E4NWUyOWU4NTExOGFhYzIyMmRhMWMyOSBsZWdhY3ktdHJ1bmsKKzQ2OTM0IDBhNWNmMjU5NDVlMmI2NzVjZDUyZGRhMTljMDk0ZDNmMmE1YWI4MWIgcmVsZWFzZTI0LW1haW50Cis0NjkzNiAzZTVmZDJiNzBlNWE3MGQ1ZTU3MTM5NGZmMTUyMWMzMTRmNzY0ZDljIGxlZ2FjeS10cnVuaworNDY5MzcgZWNlOGE2NzUxZGI3NDg4YjdiODA3ZjZlMzE4MTg3MDc5NjdlMmVlMyBsZWdhY3ktdHJ1bmsKKzQ2OTM4IDZmN2U2NGI3MmE1ODc5ZWE2Y2RjODAxNTI2ZmNlN2ZlMTI4ZTdkNTMgbGVnYWN5LXRydW5rCis0NjkzOSA0NTU4OTE2Yjg0MWYxY2ZhNzgyOTkxOWQ3M2M1YjJkNThiZDBiNzRiIGxlZ2FjeS10cnVuaworNDY5NDAgNjJjZjZkNThiYjUzZmI2YmRlYWEwNzBhNTViZTU0YzZlNTE3ZTViOSBsZWdhY3ktdHJ1bmsKKzQ2OTQxIDU3OTZhY2ZiYjZkYTE2Nzg0YmQ4MjExNjUwYmZjMDRhNWM5MGZlMjQgbGVnYWN5LXRydW5rCis0Njk0MiBiN2EzNjIwZDNkYmI3NjcwNWQyOTcyZjYzYTQ0NmNmNDMxYzliNDgzIGxlZ2FjeS10cnVuaworNDY5NDMgNmQ4MDc2ZDM4MDU5N2E2NjlkZjRjMTJhMjFhYzdmYWVhNWZlMzBlZCBsZWdhY3ktdHJ1bmsKKzQ2OTQ0IGQ4NTdhMzIwNzVkNGJlYzA3MTI5ODNjM2EzYzM5Y2RlZGJiMWMxODMgbGVnYWN5LXRydW5rCis0Njk0NSA1NDljNTQ3NzAwYWY4NzI1ZTUwNGViZGMwOTVkMTU4NWY3ZGQxOTVlIGxlZ2FjeS10cnVuaworNDY5NDYgMDY5ZmYzYTcwNjk0MTA0YTQzZjFjNjFmNDkxZmI2ZGFjYzI0YjNlYSBsZWdhY3ktdHJ1bmsKKzQ2OTQ3IGM5NTlkZTY0YThkYTE4N2UxZWU4N2UxNzYzODAwYzk3NDY1MjkwNGUgcmVsZWFzZTI0LW1haW50Cis0Njk0OCA0Mzc3YjE3ZGRiMmNmZTUwM2RhYjgyYzVlNzQ4ZTNjYzI2OWI2ZTRkIGxlZ2FjeS10cnVuaworNDY5NDkgMDY5MDYyODU5Mjk4YzUyNDJmMWM5YzZiNTk2ODczNTE0MDU1OTY2MyBsZWdhY3ktdHJ1bmsKKzQ2OTUwIGM1MjBlZWNlMDFiMDM5Njg0YjVjODJiN2E3YTU5YzdhZWM4ZDRjYjMgcmVsZWFzZTI0LW1haW50Cis0Njk1MSBkNjg3NzgzNTc5MWQ3YzY0MmEzZGYwOTJhNWM4NmQ5NDY3NWU2Nzk2IGxlZ2FjeS10cnVuaworNDY5NTIgYjdmNGJhNjAxZGY5N2FmN2NlNWMzYWNjMzVmMjIwMGFjZmQxYjA0OCBsZWdhY3ktdHJ1bmsKKzQ2OTUzIDkxN2JlZWE1NTU5NWQ5YmIwNjUwZTBjYTk3NTg0ZGM2OWQ2YWJmZmMgcmVsZWFzZTI0LW1haW50Cis0Njk1NCAxNmUwNWM2MDYyNzVlYjg4ZmY1ZTgzN2Q4YjliN2M4Yjc3MjVhZTk5IGxlZ2FjeS10cnVuaworNDY5NTUgZDFhZWM3YjRkYmI4NjkzZjQzODkyZmY3YTZhYjE4MTJlMjYxYzVmNSBsZWdhY3ktdHJ1bmsKKzQ2OTU2IDAzYzA1Y2FiNWYyMTI3N2E5ZTFiMTliZjdjZGI0OGE1ZThkYzZhNDUgcmVsZWFzZTI0LW1haW50Cis0Njk1NyAwZjc2YTU2ZDUwNmNjMjAwYzk0MmRiNDlhYWUxMDFhYWFjMDFkZTM3IGxlZ2FjeS10cnVuaworNDY5NTggMGNmMmViM2NjNTBhNzNiNmU3NDYyNDgzNjdkMTY4ZDZkMGU5ZDQ3NSBsZWdhY3ktdHJ1bmsKKzQ2OTU5IDg2ODA4NTNlOWVlNDA5NzYzZmUxOGQwYzMxZjA4YjQyNWU4ZGFlZWMgbGVnYWN5LXRydW5rCis0Njk2MSBkMTVkZjAyZGIxY2MxM2Y3YWM0NDE4YTQ4YTEzZjk0YzdhNTJiMGUxIGxlZ2FjeS10cnVuaworNDY5NjIgZDdiYzY0NzBlODM4MzVjYmRlMGYyMjc2ZmRmM2Q0MjQyODEyY2RmYSBsZWdhY3ktdHJ1bmsKKzQ2OTYzIDMyYWRhYWQ1OWZiMzdkNzlhYjM1OTk1NDIxMTgyNWYxNmMwOTdjYTIgbGVnYWN5LXRydW5rCis0Njk2NCAwYThiODUxYjAzNzUyMjllYmVlMDYzZDYxM2MxY2U2YzgxOWZjMDc0IGxlZ2FjeS10cnVuaworNDY5NjUgNzdiMDFjOTMzMzA4OGFmYTZlNGMxZDQ3YzQyMTgzMzM4MjVjMDgwNyBsZWdhY3ktdHJ1bmsKKzQ2OTY2IGE5ZjliNTA3NWJjMGNmMDNjZWNiZWM5NWQzOTFkNWZiYmNmNTFkNWMgbGVnYWN5LXRydW5rCis0Njk2NyBmZDQxMmEwMGEwN2RmNDU5YzJhYzM0OTAyNDIxOTUzMDQ5ZWMyMzgzIGxlZ2FjeS10cnVuaworNDY5NjggZDRiMWY5YTMxYzI5Njk4NTAzMzNkMjVkNWU0ZmI0NjI1YjA3NjExNSBsZWdhY3ktdHJ1bmsKKzQ2OTY5IDk5MzdmMDlkNzZlM2EwZGU4YWRmYjk0NjVjM2FjY2JlMjU4NjViZGUgbGVnYWN5LXRydW5rCis0Njk3MCA3OTNmMDI2OTkzYmIyOWQ2Y2M5MTU5MjY1MzI5ZjIwNmVkNjcwYmVjIGxlZ2FjeS10cnVuaworNDY5NzEgM2I2NWVlZmJhZjc2ZTNkYmQwZmM3ZGE4YTJiMWMyNzAyOTg4N2U0ZCBsZWdhY3ktdHJ1bmsKKzQ2OTcyIDM0YjY5NzA0MTE5MWFlNzFlMjY4N2I0NjVlNzUzNGZhYWViNTc0ZDQgbGVnYWN5LXRydW5rCis0Njk3NCBjNzdiZTVjNDA2M2IzMWU0Yjg3YmQ3ZjNiNjY5YThlMjVmM2I1NWE1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzYgOTkzODc3NzRlYjFkZGExMThlMjg3ZjZiMDExOGVlNWE1YjZhNTM4NiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc3IDU0ZGYzNWU5YzY5OGE3ZjhkODViYjFlY2JmYTBhM2M3MmM1NGI5NWEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3OCA5ZTQ4MjgwMDBjZmE5MjhiYTExOWQwZjVkZjFmZGEzYzE2N2QzZTQ1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzkgN2RiYmU3ODZmZGNkMjNkZmE3OWI4YTVjMDM4MDVmZWM0NTRjYzY5YiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTgwIDM3MzA0M2ExYmRmYmI4NTAxZTk0NWNmOTQ2NjEwNTYzYjA0NGNlYTQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk4MSA5MmViNmVkMDNjMmUxY2M4NTAxMjI4NDg1ODg0ZjA4NjdhN2IwZTdlIGxlZ2FjeS10cnVuaworNDY5ODIgY2FjZDQ3YTYxZTc5NmRmYjM2NzQ0MTdkNDAyNWNiMzczOWYxMDE0YSBsZWdhY3ktdHJ1bmsKKzQ2OTgzIDFmOTQ3ZjEzNDFkMTk0N2IzMmFiZGYwOTJkMThlY2VjYTQ4NmJmMDkgbGVnYWN5LXRydW5rCis0Njk4NCA5YTlkNTc4MmU0MzY3YjlhMDE4ZGM2ZjQyOTM3OWU1MDlkZTU0MDZmIGxlZ2FjeS10cnVuaworNDY5ODkgOWU4MjdmZDgzMWQ3N2M4NDhmNzY0YWFlY2JhZmIwMGVlMGI4M2FmMSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTkwIGI1ZWZhMjNjYzk0ODhkN2FkMzY2YWZkYjAwZjY0NzJkZWY2Mjk2Y2YgbGVnYWN5LXRydW5rCis0Njk5MSBlNzZiNmYzYTQ0MTkzOTM1MDI0MzkzZDA1MWJiMzgxMGM3ZTkyZWQxIGxlZ2FjeS10cnVuaworNDY5OTIgNmI0ZGE0ZWU3MTQ2ZWI5MDY2YmI5ZThjY2RmOGI2ZmRiYTc0YzI3ZiBsZWdhY3ktdHJ1bmsKKzQ2OTkzIGUwYzNmNWE0NDQwZmQ0MzQxYmM3ZDQ2ZTQyNWEwZTU1ZDc0MmIzYWEgbGVnYWN5LXRydW5rCis0Njk5NSA1NTdlNjIxMjZjYjFkYzIyZWI4NWIwZTU5Njk0MWE2ZWRkMDYwZWU0IGxlZ2FjeS10cnVuaworNDY5OTYgYjJhNGJlNDczNzI4MjMwMGM0ZjBmNTU1N2RmNTZlNWY1YjkzZGE4YiBsZWdhY3ktdHJ1bmsKKzQ2OTk4IDhhNTBkOGU5MDE4Yzg0Nzk1NzAwYWVkOGQ5YTdkOGMyODM5MmYyYTMgbGVnYWN5LXRydW5rCis0Njk5OSBmNmRjNTVkMzJmNzAyY2UwOWNlNjQ4ZTRiYTI4YTFiMmUyNGJjZmU4IGxlZ2FjeS10cnVuaworNDcwMDAgYWZmNjYyOWQxZDFjNDExZmZmNDY0MmNhMWQxOTI5OWI5ZjRjODMyOCBsZWdhY3ktdHJ1bmsKKzQ3MDAzIDAzY2Y1ZGQ3YzkwNjE1YmY4N2ZmZDhlZDk2ZTczMmE4ZGQyNDcwNjggbGVnYWN5LXRydW5rCis0NzAwNCBhMGIwNjJmZjI5MzljOTJlYmUzN2NmYjVkYTc2OGQ3OGJjZTRiYzI5IHJlbGVhc2UyNC1tYWludAorNDcwMDUgYzUwMjY3MDM5MDg4ZTAyMDk0ZDdkMmNjMzkzM2FmYzgwMWVjZjJmYyBsZWdhY3ktdHJ1bmsKKzQ3MDA2IDAyNjUwYTQ3ZWU4YmUzOTM4NDI2OGZmMzgzYjBlZjk5NTEzNTRjMTAgcmVsZWFzZTI0LW1haW50Cis0NzAwNyA5NmUxYjBjOGZmOWE4ZGExYWEzMzM4MmMzMTc5MzUzNDUwMWM0OGJmIGxlZ2FjeS10cnVuaworNDcwMDggMTI1OGU5M2JiMWQwMDU5NGQ0ZDEwMmI3ZjRjMDBkNzc5MjkxOGY4ZSBsZWdhY3ktdHJ1bmsKKzQ3MDA5IDQ4NGQzZDViYTdmOWE1YWIwMzMwMWU0ZTJiZDY1ZmUwNDc2NGVlMzkgbGVnYWN5LXRydW5rCis0NzAxMCBiOWQxNDQwYzJkZDE2MzFkNGQwODc2MDdjYTk0NzljZTdkNjhkMWNlIGxlZ2FjeS10cnVuaworNDcwMTEgNmE3ZjFmMTJlYWFmN2Q0NGU4ZDNjOTMzNmUyMzFkMWY4NDQ0NmEwMyBsZWdhY3ktdHJ1bmsKKzQ3MDEyIDQxMWQwYTM1M2ExNWM4NGZkN2UyYjBlNWNmYTY3YzY2NjIzYzZjOTEgcmVsZWFzZTI0LW1haW50Cis0NzAxMyAzMGQyMzMzODUyZDUwZjAxZDNkMzhjOWVlMDc4NjI2YjFiNjhmNjY4IGxlZ2FjeS10cnVuaworNDcwMTQgYWQ1YWRkOWUwMzY5NmQzYWJkYWYxNmMwMzMxYmRmNjQ1MTE1N2M3NyBsZWdhY3ktdHJ1bmsKKzQ3MDE1IGY0YjQ0MTI1NjQ2Nzg5ZjU0NTkxMDkxNWQ1ZDVhZjAwODg1ZWNjZjEgbGVnYWN5LXRydW5rCis0NzAxNiA5M2NjM2ZjMjUwOTk5OTllYWE1ZThmMjY1MjI5YmQyNjAzODk5M2VjIGxlZ2FjeS10cnVuaworNDcwMTcgYTNjNjFjNjQ4ZmM4MTk0ZGM3OTViYzZjMTc5YjhkOGNiMjAxYjM5YyBsZWdhY3ktdHJ1bmsKKzQ3MDE4IDgwNWY0MTg4MWUyNzBlMzgxMmY5MWQ0NzE5ZWI5NjAwY2QwYjM0YzEgbGVnYWN5LXRydW5rCis0NzAxOSAyODQzYmY3MGE5Y2ZkNGY5OWUyNjM5M2ZmM2NhYWNhNjY3NzZiZWJlIGxlZ2FjeS10cnVuaworNDcwMjAgNjcyOWMyN2QwMWZlOGRiOWYxNDUyY2M4ZDRmMTcwYmY0YjdmYjk4YiBsZWdhY3ktdHJ1bmsKKzQ3MDIxIDExOGM2NTBlMmM5YjNiNDRlZGQyYzhjNmU4NTEwNjMzNTI4OGMwYTIgbGVnYWN5LXRydW5rCis0NzAyMiA0YTc2NjAyNDA0M2FlZWU1OTJhNmMwOTM3ZGUyZGI0YjE1YTBhNjcyIGxlZ2FjeS10cnVuaworNDcwMjMgMGI5NWEwYWFhYWVmOTg2YWI0ZWNlMzE3YzE2N2ExMjJmOGEyYzYxNSBsZWdhY3ktdHJ1bmsKKzQ3MDI0IDBiZjllMzA5OWM1N2JjNzMwZmRiNjViMTZmNWI5NWE1N2U1NmQ1YjggbGVnYWN5LXRydW5rCis0NzAyNSBjNjNkMmI2MjYzYjU4YjcyMDcxMzdiNjY0MDM1YjdiZmU0OWI5M2I0IGxlZ2FjeS10cnVuaworNDcwMjYgNDgzMGQ2MTQ3YWFmMDk5NTI0ZDdjNGFiZDBiZGE2NTlmNDExMmY2ZSBsZWdhY3ktdHJ1bmsKKzQ3MDI3IGE3NDYyMDVmNTk3NTljNzMyOGQ4OThlNzhiOGNkYmU5ODM0MWJjMzAgbGVnYWN5LXRydW5rCis0NzAyOSBmMDg4NWZlMTRkNDJhZWVhMWU3OWI3NDgwNjE3NzNhNWUyOWE1NzA3IGxlZ2FjeS10cnVuaworNDcwMzAgNDA4ZDJhNTk2Zjk5MjM0NTZhNzJjNjk4ODAzNjBkODU5Yzc4NDg4YSBsZWdhY3ktdHJ1bmsKKzQ3MDMyIDViOTg3ZDIxMjMxYmZiNjU0NjYyMzYwMGMzNjU0MjFhNmQ0ZmVmMDUgbGVnYWN5LXRydW5rCis0NzAzMyBmMTllODc3MjgxZTQ5MDM3MTFmMTU3N2ZmZTYzNjA4NmM3Yzc5ZDc2IGxlZ2FjeS10cnVuaworNDcwMzQgZDQ5YjE5OGY1NDVjZDgyZmJmNzM1YTIyOTc5YzMzMmI4YTk3ZWVjYiBsZWdhY3ktdHJ1bmsKKzQ3MDM4IDUyMzc1ZjIwMzI0NDhmZTQ3YjA2ZTU5YTYyYzI5MDU3YmU4YWEwYTggbGVnYWN5LXRydW5rCis0NzAzOSBmODcxNmI3NmE3MWVmN2EwN2EwN2ZkMjg0NTg1ZmIxZDE4OGM3NDc1IGxlZ2FjeS10cnVuaworNDcwNDAgM2FmMzMyZmZmNTI3OWE3YWU1NjRjOWZjNGFjOTMzOGJlNmI2ZWNjYiBsZWdhY3ktdHJ1bmsKKzQ3MDQxIGZkY2NjNmIxNGZhZDZlZGE1NTliYWEyNTM5NmM0YWNhZjg3NGFiODEgbGVnYWN5LXRydW5rCis0NzA0MiAyNmU0YmYxOTVhZTI5MmZkOTg5NDMxZjBmMzJhYzZkMTU5YzQxNGQyIGxlZ2FjeS10cnVuaworNDcwNDMgYTNiYTFhMzdiNTM3NDhiZmE4NDQ0NGEwZGE5Y2QyNTFmNmVlNGEwNiBsZWdhY3ktdHJ1bmsKKzQ3MDQ0IDg2ODEyNmUzYmNmNmQwMmE1NGZiODg1MTQ3MjFlYThjYWU3MTIzYTAgbGVnYWN5LXRydW5rCis0NzA0NyA0ZmZmZTY3N2Y1NTI5NmNiNzlhYmJjNGVjMmJhMzg2N2U4N2RlNjg2IGxlZ2FjeS10cnVuaworNDcwNDkgNzAyM2NlZGNjNWVkMDRhNDViOTljZjdmOGU1YTNlYjE3YjMyODIzYiBsZWdhY3ktdHJ1bmsKKzQ3MDUzIDA1MWNjMzlhODAwODQzMjdkYzBhZGNiZmVhNjk5MWUyZWU0NTdhYmIgbGVnYWN5LXRydW5rCis0NzA1NCA1M2IwNGMxOWZlNDE2Y2NhOTBkODY2MjI1NzA4MGYwOTAzNzhiOGY3IGxlZ2FjeS10cnVuaworNDcwNTUgOWIwZjk0MzBjYmNiZGJiNDk2NWFjNjAyNzIzYmM0MWVmMmMwNDI4MiBsZWdhY3ktdHJ1bmsKKzQ3MDU2IDE0OTFlNTJjODU5NzBkMjUzOGM4NDE3ZjI5ZWM1ZTBjYWZiNTYwMTAgbGVnYWN5LXRydW5rCis0NzA1NyBlM2FjNzM5ZDQ4ODk1NTVjZmQ0NWU4Yzk2ZmI2OGQ1OTIzNGYyOTRiIGxlZ2FjeS10cnVuaworNDcwNTggYTRkZDZiMjA5YjY1YTJhNmU4NmFmZjJhYTE5YmYwYjAwNDE1M2U3OCBsZWdhY3ktdHJ1bmsKKzQ3MDU5IDY5ZWYyM2ZjZjVmODNmMmExZTQwMTM4YjhmYjc2ZTQ0ZmNjMzFkZDIgbGVnYWN5LXRydW5rCis0NzA2MCAxNTJlYzIyYzRlNjk1ZGExMTZmOGI4ZTFhYjU1Njk0ZDE5NDk0M2ViIGxlZ2FjeS10cnVuaworNDcwNjEgNTA2Yzc2ODQ3ZWM3MTYyNWQ2ZTM0OWNlYzI1OTgxN2YzOWQyMDYxOCBsZWdhY3ktdHJ1bmsKKzQ3MDYyIDNjZGRlNDVhNDY4ZDU5YjNiN2M5NGYyYzRiMzY5OTM3ZTBjYWNkNDYgcmVsZWFzZTI0LW1haW50Cis0NzA2NCBjYjcyMjVlODQ4MDU2Y2MwN2YzNTE1ZGEwMjIwOTczZTUyOTA4YjI0IGxlZ2FjeS10cnVuaworNDcwNjUgYWNhMzZmN2YzYWU4N2NhMGEzNzgzOGNlMDRiNGUxOTBhZTU3MDA5MSBsZWdhY3ktdHJ1bmsKKzQ3MDY3IDA0MWFkMDA2ODU3MDExNmZjZWI0MWQzYjA0MTIxNjAwZDU3MzQ2NWQgbGVnYWN5LXRydW5rCis0NzA2OSBlYmVlNTUzOTMwOGFlZTc3OTI0YWQ2NTU4ZDliMTAzZDBhMTZlOTkwIGxlZ2FjeS10cnVuaworNDcwNzAgYWVkODA5NDQzMjA1M2QxNzRmMWRhOTFhNWM5OWI5MzA3YjVhMzUxMSBsZWdhY3ktdHJ1bmsKKzQ3MDcxIDIxMTRlYjczYWViNTE3MjdhYmE0MWJlZjk5ZGZiYWY5NTBlYWMxN2UgbGVnYWN5LXRydW5rCis0NzA3MiA1ODAzNDA4NGVmNDRhZTQ1ZjJiODE3ZWY0OWU1M2FhNGVhN2E0NDQ2IGxlZ2FjeS10cnVuaworNDcwNzMgNjUzNTNjNGRiOGMyMWI5M2M5NWFhYzU1YjNmMDk3ZDc1ODY2YWM4YiBsZWdhY3ktdHJ1bmsKKzQ3MDc0IGFmYzQ3NWQwNTY3ODY5NTQwZjYxY2E3ZDZhMzg1MDFkNjRkODMyZDcgbGVnYWN5LXRydW5rCis0NzA3NSBhZmNiNTgyZDkyZDgzMDQ4NDczNWRjOTQ5N2QwNmI3YzA1M2E3MjkwIGxlZ2FjeS10cnVuaworNDcwNzYgNzg4MTZjNWNmZjA1MDhjNGEyOGI1ODVhNjdmZGRmY2RjYzAwYTM5NyBsZWdhY3ktdHJ1bmsKKzQ3MDc3IGJjZWFhNzcyMGNjNzExY2Q1M2VlZGViODNhNWE1NGY5ZWJhZmMyMzQgbGVnYWN5LXRydW5rCis0NzA3OCBkODQyMjQzMjBmODI4YTBiNmQyODM5MWQ0MDVjMzQ3Zjc5ZjAwOTVhIHJlbGVhc2UyNC1tYWludAorNDcwNzkgOWI0NmE0ZjUyZDBjMDMxNWZmODYyNjg0NzQ3YWRkYzRiYzc4MDcwOCBsZWdhY3ktdHJ1bmsKKzQ3MDgwIDMyM2RhNDc2ZjE3ZWUxN2YyODUzOWZlMDcyMzFmMzg4YmI5MzAzODYgbGVnYWN5LXRydW5rCis0NzA4MSBiYWIwYjFlNmM2ZDQxY2JmZTJlNDZhMzhhZDA4Njc5Yjg0NmE0NmQ0IHJlbGVhc2UyNC1tYWludAorNDcwODUgNjRkMWY2NmEyMzlhNjA5YzQ1MjlmYWY4ZmYyOWM5NTgwNTUxZjM4MSBsZWdhY3ktdHJ1bmsKKzQ3MDg2IDZmMDQyZjViZjk0ZGU3ODQ2OTJiMzM5YWRlOTg5YmFkNTYwNTA5NGMgbGVnYWN5LXRydW5rCis0NzA5MSBjNzUzMjg1NmZkMTc1OTI1MjVlYWY5ZDg4YTBlNGJmMTFmMDY4MDc2IGxlZ2FjeS10cnVuaworNDcwOTIgMTM0MmRmZDUyNzMzOTAwOGVlZWQ0MDgzZTgwYWJmNmIzOWFlMTQ5NSBsZWdhY3ktdHJ1bmsKKzQ3MDkzIDA5ZDE2MDZlNzUyNDljYzAxMjBkZjEyNTg1OTg1YTAzZjRhNjVkOGIgbGVnYWN5LXRydW5rCis0NzA5NCBhZDU5NDkxNTI3MTE2ZDNhMDIyN2E2ZmY1N2Q3MTdiZDFiNWIwZTdmIGxlZ2FjeS10cnVuaworNDcwOTcgYjlhNjRiN2EzMjYxMmRiNjI5ZTk4ZWI4ZGFiOGFhMTU1MmJjYTU0NiBsZWdhY3ktdHJ1bmsKKzQ3MDk4IGI4MmM0MGRjMDhkODJjZDAxNDA2NjVhM2JlYjI1MmMzZDY3MzVjNjUgbGVnYWN5LXRydW5rCis0NzA5OSA4MTY4ZDA1ZjliNDllNjBjNDllNjM0NGNiM2MyOTBlYTA1YWViMWQ2IGxlZ2FjeS10cnVuaworNDcxMDAgZjJjYzE1NmViOTI4ZTNmZGZmZjM5OTc0MGNmNTZjZDgzYWFmZTlkOSBsZWdhY3ktdHJ1bmsKKzQ3MTAxIDU4ZjQxOWQ4YzY0NjFmYjkxN2IwNmNjYzljMjI3Mjk3YjRlNjg3NjggbGVnYWN5LXRydW5rCis0NzEwMyAzNWNmMGY4Nzk4M2VkZWNhODA1OTZkODExZGI1ZjNiMWYzNDMyNjcwIGxlZ2FjeS10cnVuaworNDcxMDYgZjI2NjEzYmQ0ODRkN2RlN2Q1MTY0NjhkZjNmZjNiMjY5ZWU1N2M3MSBsZWdhY3ktdHJ1bmsKKzQ3MTEzIGI4YjIyNTUwYWNhYzAxNDU3MjBjNTM1NTZlYjI2N2M0Y2M3Nzk5N2QgbGVnYWN5LXRydW5rCis0NzExNCA3NDEzMTMwMjlkNjNkOTY5NDQ3M2IyNGUwZmE1ZDAxZTRlZmE3OGYyIGxlZ2FjeS10cnVuaworNDcxMTUgMjI1NDc5YWNlOWE3MGQyNzlhZDc0ZjIzMmU1N2RlMTdhZWVkOTg5MiBsZWdhY3ktdHJ1bmsKKzQ3MTE2IGNlZWE4YTk4NjU4NDQ3N2EzMGM5NDU5N2M3NmRlYmE2ODFkNDNlMGQgbGVnYWN5LXRydW5rCis0NzExNyBjYjgzOTk5NmEzODZlZGEwMTc3YmMwYmE4ZWJiNjk4NjIxOGY4YzNmIGxlZ2FjeS10cnVuaworNDcxMTggNzIxY2VjN2YwMTg1NzQ3N2Y1NmYzNjIwM2UwZWFlZjg5OTQ2ZWI1ZSBsZWdhY3ktdHJ1bmsKKzQ3MTE5IDRkZWE1ZjQ2ZWU5ODU1NDI0OTgwYzVhOTcyZDQzYmFjOGE1MmUyYmUgcmVsZWFzZTI0LW1haW50Cis0NzEyMSBkZTQxMDI1MmI5ZmRhM2I4ZDU4MzM4YmI1MTFlZTNkNzY1NDMxODU4IGxlZ2FjeS10cnVuaworNDcxMjIgNTIyNTBlZWFmNzkxZDY2NDNkZjBiMTM3MzI1MDJjMDRhZThiNDUyZCByZWxlYXNlMjQtbWFpbnQKKzQ3MTIzIDA2MDI3NzFiOGI0OWI3YzMzNDBkZDRkMGJhNDM2ZDdiZGMyOWRkMDggbGVnYWN5LXRydW5rCis0NzEyNSAwOTU1NDZkZGIyZjE2YzY0NzM0N2NjZmMwZjZiMzY4YTNhM2U3NjNmIGxlZ2FjeS10cnVuaworNDcxMjggN2M4OTkwY2NjZjliMmFkOWJjZmQyMDgyOGU2ZjAxYjMzNjE3NDhjNiBsZWdhY3ktdHJ1bmsKKzQ3MTMxIGFjM2Q0YjcxYmNlMmIyNmM5ZmE3OWJkZDM1YTNmYzQzMWM3ZDBmOTIgbGVnYWN5LXRydW5rCis0NzEzMyAzY2YyMThlOGI0NDkyNTczYjIyOGIzZWEzMTkyMjk2YTMxMDhiYjI1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzQgMDM4OGM3ZGNlNGQ0MjY2NmQxZWY1MzJjZmFkY2ZiMDI5MDU3M2VlNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM1IDRiNGVkMjMwMmQxY2Y1NmVmMTYxOTMwNTQxNWJiMGRlMmQ3ODcxMjQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNiA4NTFmMzc4YWI5Y2RjNWI3NTY0YzQ3ZDJmZDc0MzA3NTY2OWE2MTllIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzcgZDc0OTA4ZTc0ZDMwNzIwZjVjMTBjMzMzMmI0M2IwN2JiZDA2NWQ2YiBsZWdhY3ktdHJ1bmsKKzQ3MTM5IDU2YmY1NmY1YzgyMTQ3NmQ1ZDY3Y2I0Mjc3OTBjZjFhNjkwOTVlZTIgbGVnYWN5LXRydW5rCis0NzE0MCBhNDI2M2M0MjQ4Y2I2N2U3YWQzYmRjNjNiZjRjNzE3ZWFhY2RjNzllIHJlbGVhc2UyNC1tYWludAorNDcxNDIgNWI4MDc5NjYwZWM0NWU0YzhiMjYwZmNlZmE2NmZkOGI1MTMxMDNjZCBsZWdhY3ktdHJ1bmsKKzQ3MTQzIDU4MjcwYTY5MGY0M2M1ZDE5MDA5ZGUyMDYwNzM3ZWY2OTQzYmU4YTkgbGVnYWN5LXRydW5rCis0NzE0NyBmOTlmYmZiYTg5ODM0NjAxZDQ0NzA0YzFiOTRjNjYwOTk4MWJiNjg4IGxlZ2FjeS10cnVuaworNDcxNDggMmVlNWJkYTkyMGEyNDVhZTA4MDJhYjZlMTg0MWM2Zjg4MjM2Y2Y0MSBsZWdhY3ktdHJ1bmsKKzQ3MTUxIDFlYWI1YWUzYjFmZmJhZWU3MmU1OWZmZGI3ZTVjZjhlZTQ0OTFhOWYgbGVnYWN5LXRydW5rCis0NzE1MyBiM2VmNzQxZTI2MTcxYWZmMTFmY2UxMWFmYjljMGU4NGIzNDU0MTM4IGxlZ2FjeS10cnVuaworNDcxNTQgM2M5ZDNhMzEzZDgxZGU1MzkxNjg0N2IzNDI1Y2MyZjBiYTFiM2UxMCBsZWdhY3ktdHJ1bmsKKzQ3MTU1IDE3ZjgyYmQ2ODg3ODUzMmZiMjk5MzQxODFiNmY1NGNkY2VmYmY3N2MgcmVsZWFzZTI0LW1haW50Cis0NzE1NiAyOWU0M2M1ZTExOGY3YjA5MDE0MjNmZjY0ZTI5NzJiZGE1M2EzMzM2IGxlZ2FjeS10cnVuaworNDcxNTcgMWIyZGYyZWNiYzYzNmEyYzhiNzIyMzNlODI1YWM2MGViNzlkNzM4OSByZWxlYXNlMjQtbWFpbnQKKzQ3MTU4IDBhODNkYzM1MjlkMTVhZjQ0OTM0ZjViMzQ4MWMwY2I4YTAzM2ZjOGMgbGVnYWN5LXRydW5rCis0NzE1OSBmNDljYzI5MDZjZDAwZjYwNDc4NmQyZDcwZWUyYmFhYTgzMzg1MDQ4IGxlZ2FjeS10cnVuaworNDcxNjEgYzZkMDRjOWMzYzRhZTc3NGM1YTI5MDAxNjQ2OTMxMWNlY2Q2OTJhNCBsZWdhY3ktdHJ1bmsKKzQ3MTYyIDk5YjE1YzI1Yjg0MDE2OTM4YWE2OTVlMjlmZjVkNWU2MzFmOTJkYjEgbGVnYWN5LXRydW5rCis0NzE2MyAxNWZlOWRiYzVkMzllZjEyOGY5ZDg5MzVlMGFhOGQ0MDAyYzgyMjA3IGxlZ2FjeS10cnVuaworNDcxNjQgZGEyMmI5MDVkZmJlYmQ5ZTlhY2Q4ODhjMzU0MTZiOGZmYzgyOTQ3YiBsZWdhY3ktdHJ1bmsKKzQ3MTY2IGEyMWU0MjBhNTk3Y2M5NTA1MTcxODg0ZmEyNDNhY2Y0N2Y0YjdjZGQgbGVnYWN5LXRydW5rCis0NzE3MCBkODU3MDg3NjlhYjFkOTRiY2QyYjQwNDY4ZjgxYTY2NmU5ZWI5YzY5IGxlZ2FjeS10cnVuaworNDcxNzEgMTM5MjU2MWQ1ZGQ3YWUzZGUyYjRiZDU1MjJkNDA3ODg2YjIyZjZmYiBsZWdhY3ktdHJ1bmsKKzQ3MTc1IDI3MmYxOTVhMjg0ZTdlMDE0Y2E5NDJmZmIxODU4OTYyYWZmYjcxM2MgbGVnYWN5LXRydW5rCis0NzE3NiA0ODUwNTZlNTNjZGI5OWNmMTU2ODg3M2IzODNlNmNkZjY2OTNmNThmIGxlZ2FjeS10cnVuaworNDcxNzcgNmIwYzYzYTk3NTE0N2E5NGY2OWIzYTAzODgzOGM5NGU3NTUwNGI3NiBsZWdhY3ktdHJ1bmsKKzQ3MTgxIDVkMmM5ODJhYmJiMzllNzg0MjYxZmM2MTAwZTFjMjJjMmExNTBiMjEgbGVnYWN5LXRydW5rCis0NzE4OCBkNGRiZmJmM2YyYjkwYzVjMjM5OTBmYWI3YWZhZmVjNWUzYmQ2OTFkIGxlZ2FjeS10cnVuaworNDcxODkgYjY2NGE5MDhiZmYzNTBlZDFiNTZiNTYwZjRmMDcyZDJhMTViNzQ2MCBsZWdhY3ktdHJ1bmsKKzQ3MTkwIGM1NDdmNmU5MWM1ODRiOTQyNjIwNWZiODZhMzAxZmZlNzdkNjQzZWUgbGVnYWN5LXRydW5rCis0NzE5MSBlMDc2ZTNkNzZmNzcxMGEwMDAxZTFlMzhjZjU2MmRjNDI1N2E2ODhjIGxlZ2FjeS10cnVuaworNDcxOTcgNWRkNzM2MjY4ZmY0NDAyM2RiNjY1YzZiYTcxYzQ0Y2Q2ZDE4YjIwOSBsZWdhY3ktdHJ1bmsKKzQ3MTk4IDY5NzViZDQ4ODRlYmMyYzgwMDRiZDk2OGJhZDdiZjQzMDAwNzk1N2EgbGVnYWN5LXRydW5rCis0NzIwMyAwZjNiYTNkZWYxYWQ4MGFlZDFmYzRiNTFmZjQ3ZDU4M2E2MzZlYWUyIGxlZ2FjeS10cnVuaworNDcyMDQgYzAxMjMwMDc2ODU5YzFmZTY2Y2VhZmYzMTcwMDg0ZmU5ODg5ZTk5OCBsZWdhY3ktdHJ1bmsKKzQ3MjA1IDg4OTRlZWZiYjBhNDlmYzVlYWY1NDllNTU3ZDljMWFiNWUyM2YzZGYgbGVnYWN5LXRydW5rCis0NzIwNiA2MzgyNDFmZjg3YmRkYmJiZTBlMjIwNjUyNzcwOWFlNmI5NTcyNzkwIGxlZ2FjeS10cnVuaworNDcyMDcgMjc5NzM5NjJmYzlmYjYyY2Y4ZjZjYWFmMDY5YjIzODc1NmE1MGRkZSBsZWdhY3ktdHJ1bmsKKzQ3MjA4IGIxNjE0ZjY3NGIzMjcwNDM1Yjk4ZmQ4MGMzZWYzM2VjMTFlNjE0OTMgbGVnYWN5LXRydW5rCis0NzIwOSBlNjFhOTM4ZmU5OThkNWY3OTk3NGIzNzYzMTJmMGJhYWMwMmFiODNkIGxlZ2FjeS10cnVuaworNDcyMTAgMjUzN2RlZGEzNTFmYTg5MTJjZWZjZmRiOTJiZjIyMGE4NGIxMTY0YSBsZWdhY3ktdHJ1bmsKKzQ3MjExIGI5NDcwZDY3ZDk2YzJlMjcwMmU4MDlkNDFmODhkNzRhODcwNmFmMTAgbGVnYWN5LXRydW5rCis0NzIxMiAwZThhOTRiYTIxMDY2ZGE2NWRmOWQ2NjA4ZTdlNDhiYmE2MzkzNzFhIGxlZ2FjeS10cnVuaworNDcyMTMgZTlkMzljNWZjYzI3NDYxNGJjMmI2ZTNlYjkzNGU5NGVhNzMxZDAyZCBsZWdhY3ktdHJ1bmsKKzQ3MjE0IGYxMTY1ODJmNjYyMjQyNWU5OGNjYTk5ZWJjYjcwOTI1N2MzZTJkYWMgcmVsZWFzZTI0LW1haW50Cis0NzIxNSAwOTMxNTY4OTlmNzVhYjJjYjA2ZDA5MGRkNzk4OTRiNzY0MWYzZTA1IGxlZ2FjeS10cnVuaworNDcyMTYgMTZiZjM2NjQ4MzIzM2IwOGRmYmNlM2I5Zjk5MjY1MjU1NTk3ZGY4NiByZWxlYXNlMjQtbWFpbnQKKzQ3MjE3IDg2NzVhNjA4NDI0MGY4NTU3MWQ0MGU5MDMwNWM0MzU0YTA0MzEzNDQgcmVsZWFzZTI0LW1haW50Cis0NzIxOCBjNWJlYmNiZTQ1MzkxYTNjYmIyZjhiOTExYTNlZTY0ODA2MjE5NTI5IGxlZ2FjeS10cnVuaworNDcyMTkgODEzMDRjMDE0NjNhMmU5YmQ4YTNlN2VmODZhMTUzNDgyYTQ2ZDAzNCBsZWdhY3ktdHJ1bmsKKzQ3MjIwIDYzYTMxOWYwNzMzY2EwNjY2YjZmMjFhMzNiNDAwZDRmZGNkOTA0NzYgbGVnYWN5LXRydW5rCis0NzIyMiAwMWQ0YjA2ODUwNjc2MDY4MTA5ZTJjZDlhZTkxOTZlNTM3NjFlMTMwIHJlbGVhc2UyNC1tYWludAorNDcyMjMgNzViZGIxZWIwNzY2NTk1ZGEzMTY5MjNiZjFjYjViNjhkZDhlMzlkOCBsZWdhY3ktdHJ1bmsKKzQ3MjI0IDljOTIyZTMxYjZhNWM4OTEwNGM0NmIyMGYwNzBkNjkzZjMyZjNiY2IgbGVnYWN5LXRydW5rCis0NzIzNCBjODIzNzVkNTYwYjNmZThhMjhhMjc3ZjkxOWU2MDE2Mjk0ZGE0ZGNlIGxlZ2FjeS10cnVuaworNDcyMzYgNDFmYzIwM2EzZTkxZjE2MTVjMTRhNmZiMzgwODNkMDE4ZjQ3NDhhZCBsZWdhY3ktdHJ1bmsKKzQ3MjM3IDE4OTg5ZDA5ZDU4NGU2YzNlODRkNDA1YzY2NDExYWFlOGRmYmVmMTMgbGVnYWN5LXRydW5rCis0NzI0MSA2ZDllMjJjMzMwZTRiNzY0MDMwMDQ2OWZmMzljNTlmNjNhZDQ1MGU1IGxlZ2FjeS10cnVuaworNDcyNDIgMGM0ZTVhMGMxOTE0ZjdiMjJkZmIwYjBlM2NmZGY4NTY4NTczYTMzNiByZWxlYXNlMjQtbWFpbnQKKzQ3MjQ0IGQ5ZTc4MzE5YTE5MjkzODEyNjcxNGU2ZDdiMzdkMDMyY2I0NGQwNGYgbGVnYWN5LXRydW5rCis0NzI0NSA3NTUwNDQ3MTNlOTdjYTI0M2JhNmRhYmVkNmU3YThmOWRmNWUxNzIzIHJlbGVhc2UyNC1tYWludAorNDcyNDggYjkxNTViYjI2YjI4MWU4ZTMzMTFkMzZjN2FkZjQwZTRhY2JhMWZhMSBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3MjQ5IGIwYmQwYmNlOTQwNmVkYTRiMTAzMjc0OThkOTU0ZmJiNmIxM2QzMmYgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI1MSA5ZTgyMTQzNWE2MTJkMWU5NzJiMzU5NmUyNDhkZWJlYTkzNjk5YjVhIGxlZ2FjeS10cnVuaworNDcyNTMgNTAwYWU5NTIxNTBiNzY2OGUzMDA3NjU0OWVlZDA0MDQ5YzBjMzM4ZSBsZWdhY3ktdHJ1bmsKKzQ3MjU0IDg3ZTViMDEwYjNiMDlkNWI1YjljNTRmNzRlMzkwODhkYjNmMDQxY2UgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzI1NSA3MWVhZGMzNWYxNjM3MjYxMTY2OWE4ZjY0Zjk5NjNkNTQyMGFkZDRhIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcyNTcgNDE1NjFiMDAxNGM4YjY4MTU2NDhlNTA0MjA4MWZhNjhkNmFlZTgzYiBsZWdhY3ktdHJ1bmsKKzQ3MjU4IDQwZjA1ODY3MzE3MGI4YTZhOGFkZjAzYjZhZTVjMDdjZjFhYTcwYWIgbGVnYWN5LXRydW5rCis0NzI1OSBiODUxYWZjYzE2NDk2NTY3MDNhNzJkMGVmZDVjMmY5ZmE2NjliZmNhIGxlZ2FjeS10cnVuaworNDcyNjAgZTNjZmY2MWI3Nzc5NjFhZjQ2ZjQyZTNjMTdlZmY4NDhjY2UwODRlMSBsZWdhY3ktdHJ1bmsKKzQ3MjYxIDRkZDFhOTM4M2U0NzdmYzY3MmM5NTQ0MzMwMTI1YWM3NDgwNTdkZTEgbGVnYWN5LXRydW5rCis0NzI2MiBkOGNlOWJjNDA1ZTQxYjY5NTQ2YTE0NGQ3MTdjZDVhYTA5MGVlNWQwIGxlZ2FjeS10cnVuaworNDcyNjMgNjhjOWU4YTU1MzY4M2IyYzIzNDhjY2YyNzk5ODQ4ZjhmZGIzMGQ2NiBsZWdhY3ktdHJ1bmsKKzQ3MjY0IDIwNzNmMzJjZjcxZmM3ZWE0NDg1NmViNTI3OGQ3MDljZWUwNGE5M2IgbGVnYWN5LXRydW5rCis0NzI2NSA2OTdkMDU0ODAwNTNkNmZkZWZlNjQ1ZTA4OWZjYzE0NmRiMWNhODEwIGxlZ2FjeS10cnVuaworNDcyNjcgZjRlMzNiMTJiYjU3YjEwMGIzNGMyZjkyNjkwNTJmNDMyMDk1MTA0YSBsZWdhY3ktdHJ1bmsKKzQ3MjY4IDM0YTY2ZTJmODk1OTgwMjVhZDFjNzNhNDlhNGFiODNkMWJhNWQ1NzMgbGVnYWN5LXRydW5rCis0NzI2OSBmNjhlNTFhNjczZGY3M2YyYjFmNDc0OWU3NDZjZjM5YmMwOTlmMjYyIGxlZ2FjeS10cnVuaworNDcyNzEgMzRjYjlhNmNlMTJkODdmNmFlMDMxNjY2MTA3NWM4OGIwOTI2NjExMCBsZWdhY3ktdHJ1bmsKKzQ3MjcyIDM3NGMyMjlkOTBlOGYzNjZlNTk1NTk4NGM0NTYxNTkxMWU5Njc2NWYgbGVnYWN5LXRydW5rCis0NzI3MyA1YTRhYjM4MjA1OGE1ZjEwZjM0ZmYyNTIwYTYwNTQzYTA0NzUxNDYwIGxlZ2FjeS10cnVuaworNDcyNzQgZWViYzk1Zjk1OGU0OGYzNzdkZmQ5OTVjZTYzY2JhYTRhMDY3NTU1ZSBsZWdhY3ktdHJ1bmsKKzQ3Mjc1IDIzOGUwYjIwMzdmYzI0OGFhN2U2M2RlNmVkYWU0MTVkYzQ2NjMyYTIgbGVnYWN5LXRydW5rCis0NzI3NiAzNDQyNTFjZDhkNzY0NDA5Y2MwM2M1OTY3ZmIxNWY3OGMyN2Q1NDI2IGxlZ2FjeS10cnVuaworNDcyNzcgM2ZhNzkwYjBhYTY4MTVjMWUxZGFlOGYyMzBhYzg1ZGFiZTgxOTlkOCBsZWdhY3ktdHJ1bmsKKzQ3Mjc4IGY5M2RiZmNjNjYzYjMzMDczYzgyYmVkYmZjM2U1ODVjMWQ0MGU3ZTEgbGVnYWN5LXRydW5rCis0NzI3OSA1OGM4OGE3YzkzMjYzYzQ4YmJlYjFlZWQzYTIyMDNjMjA1MDBiYzZiIGxlZ2FjeS10cnVuaworNDcyODAgOGZlZmE5OWU4N2MwZDM4NTY0NDhmYzc2NzNkMjdkZThmOGQxMDZmZCBsZWdhY3ktdHJ1bmsKKzQ3Mjg0IGVkNDMyNDNjODg2MDVlZmM4ZTA5YWQ0NGFmYzFhMjdmNjU2NjRiZjQgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI4NSA0NTI0N2I5M2E1ZDlhMTAxOTIwN2ExZGUyMjI5MGVkNjVlMDYwYzE2IGJjYW5ub24tc2FuZGJveGluZworNDcyODcgYjNjMGUwNzU5YWMwOTgwNDQ2MDkyZTQ1ZTc3ODRkM2YzYjNhZGNhZCBsZWdhY3ktdHJ1bmsKKzQ3Mjg5IGRhNTk4MzYxNGZhYzIyODE5Y2FlYzA5NWJmZTIzOGYwMWY2MzdlNTggbGVnYWN5LXRydW5rCis1MDQ3NyAxMDhkYzJmMWU3ZGEzMmNmMWExYzdlN2ViZjVkZGZjNGVhNWUxYzY1IGJjYW5ub24tc2FuZGJveGluZworNTA0NzggYmIzMDUwMjYzMjQ0MjJhZTdhYzQ1ZGIzZmQwOWU0MjJiZTllMTk1NSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDc5IGI4YThlZmMwMGIxZTI1ZTJmNGFkOWQ3Y2RjNDY1YTEzZWU2ODFhMDQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4MCA5MDNmOTg2NzY1NGExN2EzOTQ3NGNlYWUzMjkzMTY2NzVkNDE0NDM4IGJjYW5ub24tc2FuZGJveGluZworNTA0ODYgMzVhZmU3YzQ2NzcyMDZjZDM1YmEzN2EyMDg3NTc0ODNlMTRlMjM4OCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDg3IGI0MjgxMmM3NzRkMGM5NDliMGJhNzdjZjVjM2Y2MTgwNzAxMzgyZWEgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4OSAwNjZhYTQyY2U1ZjI0MDk3OGMxNjU2ZjVlY2I2MDY2OTVlYjgyYTA1IGxlZ2FjeS10cnVuaworNTA0OTAgYWJiMmM3NmE1ZTA1MGNmOGQwNmMyNjA3M2NmMjI2NWIyZjA0MmJjMiBsZWdhY3ktdHJ1bmsKKzUwNDkxIDFjNWJkYmM3NTgwY2ExOGNlNjk5MmIxOGI3MmI0NjI2MDJiNzc1MzkgbGVnYWN5LXRydW5rCis1MDQ5MyA5ZjcwZjZiYTdiNjljYmU2YmFkZDExZmQyOTA3MzI0OTM3NTZhYWYyIGxlZ2FjeS10cnVuaworNTA0OTQgYmJjNzhmMDIxMDA3YzBmMDQyMThkOWNhMjZjMGJhNzliZjA2ODBiNSB0aW0tY3VycmVudF9mcmFtZXMKKzUwNDk1IDY0Y2NkNzQ1ZWE5MjBiZTFiOTkzODkxZTQ5NjM3ZDFmMzUxYzQ0OTQgbGVnYWN5LXRydW5rCis1MDQ5NyA5NWY5ZTAxODQ1NTU2Zjk2MTI4MTYxZGE0ZWFlZjYxYjNiZjU2YTJiIGxlZ2FjeS10cnVuaworNTA0OTggM2Y1NTYxYzVkOTU5NTViMTM5Y2M2NGVlMjcyZmUzZjA5ZTM5NTMzNSB0aW0tY3VycmVudF9mcmFtZXMKKzUwNTAwIGNhM2Q5YTY3MTI2YmY4ZDkxNGE3NjYxYjdkYTIwMDExMTZkMGQ5MjAgbGVnYWN5LXRydW5rCis1MDUwMSA4Y2M5Nzg0MTMwYTBlODNkMDYyNzdlNTk3YWYwYTY0ODYwZTc5NmVmIGxlZ2FjeS10cnVuaworNTA1MDMgYzAyZmExODdlMGY0OWNiMmRjYTdhOWM0NDhkYjUzNjE4YTY2ZTY5MSBsZWdhY3ktdHJ1bmsKKzUwNTA0IGM2N2IyMzM5N2YzMDY0OWFmZTc1NGU1NzMwN2M4ZGFmNzg3NmM1NjIgbGVnYWN5LXRydW5rCis1MDUwNiAwZmUwOGFlZGJkOGM0ZmNiZGZiNjBhM2MyMzUyNDY4MGMxMjQ1OWMxIGxlZ2FjeS10cnVuaworNTA1MDkgYzU0NzY0NWFiNzM2NGMyOTQ3NTY2YWRhZWI5N2IyMzAzZGI2MWY3NyBsZWdhY3ktdHJ1bmsKKzUwNTEwIDUxNDI4YzM3OGNjM2UyNmYxZmIyZGM3M2ZjYWM4NGMzMjVhNGNjNmMgbGVnYWN5LXRydW5rCis1MDUxMSA3ZTQzZDAyZWUyMWE2MWVkZjZjZTM3NGU0NWNiOTRmZjcxNDQ0OGQyIGxlZ2FjeS10cnVuaworNTA1MTIgYzFmNGJmOGZmNzQ4YzAxZjZjMjM4NTczMDU4ZTkyNDM5NzY0NzNhOCBsZWdhY3ktdHJ1bmsKKzUwNTEzIDM1YzRmZGE0N2RmYmQ4ZjczMDg1ZjEyMWIzOTQwMGI1OTE0MWVmYmUgbGVnYWN5LXRydW5rCis1MDUxNCAwMjU5OGM1N2NhMDljYzBlOGVhOTI0MGEyMzViM2RmMDg1Zjg3OTlhIGxlZ2FjeS10cnVuaworNTA1MTYgZjM3MzY0Njc5NTAxODI1NTg5OWZiYWRiNzdlODA2NjViMDljNzAxZiBsZWdhY3ktdHJ1bmsKKzUwNTE3IGFlNTY0NWM3NmQ1ZWEzM2VjYjhhZTU4MTNhNjE3ZTMxNWVmYjFmZmQgbGVnYWN5LXRydW5rCis1MDUyNiBiOTc4YWZlN2NhYjY2YWVjZmZkYTdjOTg3Mzc0ZWNlYzBmNjcyNGI0IGxlZ2FjeS10cnVuaworNTA1MjcgOGFkZGM5MTMxNzFlODgzNDhjM2Y0OTc3OTEyNGJlYmY0NmUxMGE3YyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNTI4IGYyYWMzMWZjMzY5ZTYyZmU3N2ZiNWI1Yzg5MjQ3MTBlZmI0MmMwYjYgbGVnYWN5LXRydW5rCis1MDUzNyAzYjM4YWI5YzRiMDM2OTVhMzMxNTg1MWM5ZmJjOGZjNzI1MGM2MDRlIGxlZ2FjeS10cnVuaworNTA1NDAgYzg0OTk3ZTFlY2M3NjkyNTQ4OWJkMzAxZGNlNjMwZDA3Y2VjM2JlYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTQxIGI2ZmQ0OTllNDM0M2ZiNzc3OTBjZmU0YjczNTI3ZjEzMzhiMmYyMDQgbGVnYWN5LXRydW5rCis1MDU0MiBjMzYxOTE1ZGYyOTEzYzYxYWY3OTBhMDYxN2YyYTBlNDQxN2NlZDQ3IGxlZ2FjeS10cnVuaworNTA1NDggZmNiZjQ2MjExOTAzYTRmMmEwZDc2NDA4Njg3ZWJlMWE4ZTRmODA2OCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTQ5IGU0MDI0NGY1ZmViOTRkMDE1NGQzZTAzYjAzYjg3OWMzYmNjMTEwZTYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU1MSBmYTZjYTNmNWYyMjZlNTgwZWJiZGQ2OWUxMWFmZjk5Yjg1YTBlYmM2IGJjYW5ub24tc2FuZGJveGluZworNTA1NTMgMWNhMDE1YmU3MGFlMjJmODVhZWQ3MGY4YzllZDY4ZjFlMjdiOWVkNCBsZWdhY3ktdHJ1bmsKKzUwNTU4IDJkNTdlNGIwOGNlNjhjZjdiMThiMzZkOGY1MTZiN2E1YjhkZmQ3YTUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDU1OSBiMjg2NTM2MjIwOTM4MzAyY2NlMTZlYjUyYzBmYzYwY2QwN2I0YjU0IGJjYW5ub24tc2FuZGJveGluZworNTA1NjAgZTMxZWRlZTViYzNmNTRlMzQyNjYyMDI5Nzg5YmM0ZTVhYzY0MTc0ZCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY0IDIxNmE5N2EyZWQzNmYyNTlkYWVhZjJmOTExNTkyMDMyNGYxMmE3NDcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NSBkYWVlOGY4YzAzNWY5NmFlMTlkMDgzMGU3MmIxMmExMDIzYTQyMDljIGJjYW5ub24tc2FuZGJveGluZworNTA1NjYgZTNmNjA2NmNlNzVmNTgyZDk0ZDIyODA3OWEwYjc1MzM3NzFhYzM3YyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY3IDUyYTg3MzhmNWFiNGQxZTY4MDBkMzNkZTAxMjdjZDZmNjI2ZTQ4OTUgbGVnYWN5LXRydW5rCis1MDU2OCAwM2I2ZmU1N2NkNmRmNWJiMzRjYTE5ZjRiNzYwYjk0MzE4NmNjODA2IGxlZ2FjeS10cnVuaworNTA1NjkgMDBmOTc1ZWFkMzQ0YWZiMmNhZDE0YTJjZTU5NTE5ZDk4YjFjNmM1YyBsZWdhY3ktdHJ1bmsKKzUwNTc1IGQ2NDYzZThlZjljNDdkMzI3M2QzZTkwNTVkYWFkMTE2OTM5YjBkMGUgbGVnYWN5LXRydW5rCis1MDU3NiBmNTBiOWRhNWUzNjE5NTNhZDQwYjNjMjQzYTBhNmY0ZDc0ODBmOThjIGxlZ2FjeS10cnVuaworNTA1NzkgYWUwYzMyOGFjNWJmOTFiZjhlNjhjNWQ5NDEyMWVkZDg2YmM3ZjMzNSBsZWdhY3ktdHJ1bmsKKzUwNTgyIDIxNGIyOGQ3YTk5OTMzNGQwNDFhYzcwN2YwZmRlOTk2M2E1ODA2ZTUgbGVnYWN5LXRydW5rCis1MDU4MyA2NTUyMjk5MjNkNDJmOWYzM2IzYzM4MjEwNDk3MGVjN2ZiY2NkODNiIGxlZ2FjeS10cnVuaworNTA1ODUgYzdkZDY2OTZlYzhjYjE3MGExN2M3YWUyYzcwMmQxYmFlODVhZjVkYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTg2IDZmNjlhZmI3ODVkMGJmOWM1YTAwMDdkNTc0Y2RkODkxNGFlMDUyOGYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NCBlNmYxNmI3YTU4NGYyMzY2ZDExYTc4YzdmMGY3YTUzMDY0YmVjYTI5IGJjYW5ub24tc2FuZGJveGluZworNTA1OTUgOTMzYmUzZTBhYzZjYjA1NmVhNjRhNTAxMjIzNWJjYjlmMDVmNjJmMiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk2IDcxN2E3ODg3ZmQ3YTc2ZDcxNGI4YzEyZDZhYjkwOGRjMWI3N2RiY2IgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NyA3MTgyYzI3NzVjMWU0NTQyY2Q3ZDQyNjIwNWM0OWQ2NWIzZDgwYmM1IGxlZ2FjeS10cnVuaworNTA1OTggYjFiYjE3OWE4YWIwNTdkYmMyZDc0NWRjOTA2NjgwNjIxM2IwNjlhMiBsZWdhY3ktdHJ1bmsKKzUwNTk5IDQ3NmNkODM3NzdmMmJhNzJlZGM3ZWZlY2EyNTU2ZDZiOGRkODUzYTAgbGVnYWN5LXRydW5rCis1MDYwMCAyYzNlYzcyMGFhN2JlYjBkYTQwMDJiODQ3Y2M1ZWQ3ZGM3ODI1NjZjIGxlZ2FjeS10cnVuaworNTA2MDEgYjA5NWU4Mzg4YjJlNjQ1MjVkZTI4MzVjNzIyZWJiYmQyYzYxNTk1ZiBsZWdhY3ktdHJ1bmsKKzUwNjA0IDM2YzVkMDg1Yjg2OTIwNzQwM2NmNDFlNjFiN2EyMmQ0YjcxZWM3ZDkgbGVnYWN5LXRydW5rCis1MDYwNyBjNDhiM2E2OGY2OTYyYTY5NWIyOWJkMTYyYjI0Mjg5OWY2M2E4ZDdhIGxlZ2FjeS10cnVuaworNTA2MTAgYjU2MmZkNzk1MDBkMWQzNzBmNjk3Y2RlNTJkZTQwOTdhNmI2NGU4ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjExIDJmMzA1MTVjZjY2Yjk2ZTkxYmFhMWM3YjQ2OTlmYzQxNDM0ZWYxMzggYmNhbm5vbi1zYW5kYm94aW5nCis1MDYxNyA4OTJiN2FjMjZkM2JiNTkwMDg0MjVjZjM2ZWE4MjM4NzY1MjIyMTljIGxlZ2FjeS10cnVuaworNTA2MTkgZTRiNmE0ZjJjZTE0MzdkYTYxNGI5ZDIxZWRmZjA1ODlkYjVhYWFlMSBsZWdhY3ktdHJ1bmsKKzUwNjIwIGNkNDU5YzkyMGY5OTBjOTQzZjYxMDYxZTJiMmYzMDEzNDhhNDFkMGEgbGVnYWN5LXRydW5rCis1MDYyMSBhNzc2OGZlZjU5YjJjZDFlYmQyYmM3OThiMTM5N2Q3YzY0YWIxNDhlIGJjYW5ub24tc2FuZGJveGluZworNTA2MjIgZmM2OWZhNmU1NGM4NmRjMmUxNGQ4NDA1MThmMzEyMzU3NTNiOTc4YiBsZWdhY3ktdHJ1bmsKKzUwNjI3IDE4Yjk3OTZiN2JhNThjNzRlYWEzMjJlNTlmODkzZTMwMzIxZjdhYTYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDYyOSBjODcwZWUwNjZjMTI1NDhjOGU5N2EzODExOGRkNzYxM2RlYzhhZWY1IGxlZ2FjeS10cnVuaworNTA2MzAgZjcxZjI4NDM2MzFmZWNmYjNiYTA5NTQzMTIzMjZlM2JhMDg1ODc5ZiBsZWdhY3ktdHJ1bmsKKzUwNjMxIDJhODRiNDZhZDY0Y2E2OWZhNGVkY2Y1ZmUwZTVhZTMwMTJiNmY1NTQgbGVnYWN5LXRydW5rCis1MDYzMiAxNmYzYzAyZWRlMDI1MzFiMWRiNzgwZDRlZWZjYTg0NWJmMjhjYmQ1IGxlZ2FjeS10cnVuaworNTA2MzMgMGRlNThiY2U0N2VmMzJhMzBmMWVlN2MxOTRhZWMyYWFmMDNhNWE5MCBsZWdhY3ktdHJ1bmsKKzUwNjM2IDdkZmM3NzZkZDgxYmNlZjY4MzAwMzc2Mzg1Mjk5ZjQ4MWYyNGZjYjkgbGVnYWN5LXRydW5rCis1MDYzOCA5ZjJjM2RlNzQ4NTZkZGQxM2JmYWU2ODgwYjA1NzFjMDQ0MTVjNjg0IGxlZ2FjeS10cnVuaworNTA2NDAgODVmZmMwYmZjYzk4MjllYWYwNmZmYzQwYmY3ZDY5YWIxM2RkZWFmYyBsZWdhY3ktdHJ1bmsKKzUwNjQzIGI2MzI1NjM0OWU3NzkwMDUxYWM3MTc3NDRhMmJmOTdhMGViZjkzNWUgbGVnYWN5LXRydW5rCis1MDY0NyA3ZjQwZWY4NzE3MzExMTQ2ZjcwNDkzN2I1ZWI1MzlkNjYyZTcyNWZiIGxlZ2FjeS10cnVuaworNTA2NTUgNmIxZWQ3YjcwNDhlNWU4YjkxODBiOTE5OTc4ZWQ1ODQ3Mjc0NWVjNyBsZWdhY3ktdHJ1bmsKKzUwNjU2IGJmNDc0ZjlkNTIyNWU3ZTdlYTYwYzQxOWU0NDlhODE3YWUxODEyZTAgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY1NyA1ZWNmMjJhNGU1ZGZjMjA0NDVkMzQ3ZGEwNTQwZDY3OGM0Y2Q1YzNjIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA2NjAgMDUyOWE1ODUwNjRjNGQ3NGQ0NjViYjFkYWNkYjY4NzBhOTMwOGFkYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjYxIDE0NjcxYTgwYWJlZjA5MDc0MjZjOThkZTZjYzc2MmRiNmQwZTU1ZjMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY2NCAyYTc2ZWMyZjBiNzlkMGQ1NGExOWM5YWIwMzY2NTIzYTQ5NzVkYTJjIGxlZ2FjeS10cnVuaworNTA2NjUgMDYzMTY0MWZkZWZmNGVlNDUwYzJmZjY0ZjUxMTNjM2NhYmM2ODA1MyByZWxlYXNlMjQtbWFpbnQKKzUwNjY3IDAwNzE1MzUzZjgyYzU2NzdmN2YxMzAyMDU3YzAxNzk2ZGI2ODY5MGMgbGVnYWN5LXRydW5rCis1MDY3MSBjMTM2ZmY0ZDQyNmRmYmNiNzMyN2Q0ZTM1NjA5NjI5M2QwNzhkYzUyIGxlZ2FjeS10cnVuaworNTA2NzIgOTEwYTk0OGUwMjkwZjE4MTcxNzhhNDhmODg3YzM0YWVkNGJmNWFhZSByZWxlYXNlMjQtbWFpbnQKKzUwNjczIDc1NmQ1N2FjZGE4NWJjYmEyOGYyMzBlNDVkNzE0OGY4Y2ZjY2ViOTkgbGVnYWN5LXRydW5rCis1MDY3NCBiZGE5M2I0NWNhNDEzZWIzYTUxMWQ1M2JjZWVhMWRlZTVjZTM3Yjc3IGxlZ2FjeS10cnVuaworNTA2NzUgM2RkYjU5NDgzZjEwMzM1ZjE2NTE2OWM2OGEyODJhZjljMGFjNjE0MCBsZWdhY3ktdHJ1bmsKKzUwNjc2IGFlZGI4NWVlNGZlYzJlZWE3MGE5OTJjNTY1ZDcyMjU1ODkyYWFiYTEgbGVnYWN5LXRydW5rCis1MDY3NyA1MGIwYjU0ZmIxN2Q3ZTNmYmU1YWJjMDJkMTU3ZGFhNDViMjMwYmYwIGxlZ2FjeS10cnVuaworNTA2NzggNzc1Zjg1Yjk4ZTY1OTgzOTYzOTM0YTI4ZDQ1ZDlmYjAyYjQxODUxMCBsZWdhY3ktdHJ1bmsKKzUwNjc5IDkwZDVkMWZlYTRmMmMxMTU2NzgzOWFhZTdmNWY5YjcyZmYyM2Q5OTEgbGVnYWN5LXRydW5rCis1MDY4MCAzNWQ1MGZiZTBiODg5OTgwZmZiMzY1ZGU4ZWEwM2NmOTQ1MDNhY2Q4IGxlZ2FjeS10cnVuaworNTA2ODEgOTM0YmE1YmU4ZjNmMGMyNzEyMmFkMTczNTIzYzcwMjJhOTVjMDY2NyBsZWdhY3ktdHJ1bmsKKzUwNjgzIGE1NTE5N2JkNzIwMGRlMTEzMjNkYWRiOGM5NWYxNjg0OGY3N2I1NGEgbGVnYWN5LXRydW5rCis1MDY4NCA2MDY0Y2IzMDEyMDljOGVjNzM3ZTdmYjUxYjdlOGJkNTZkNmZkN2JjIGxlZ2FjeS10cnVuaworNTA2ODUgYWE4NTc5MWY1OTkxM2YxYTEwNmQ3YTk4MmExMmFjM2MyNzE3NmIzYSBsZWdhY3ktdHJ1bmsKKzUwNjg2IGQyYmZjYzFhYWMzZDRmYWU5ZTI5MzdiODcwOGYyN2UzNjk2ZDAwY2QgbGVnYWN5LXRydW5rCis1MDY4NyBiYjE3MDcyNjVkZTdlMjY4MjRiYjVjMDA4OWUyNzBiODQ1MTE3NDgxIGxlZ2FjeS10cnVuaworNTA2ODggMDA4OTQxNTIxODA1MDJkY2E2NGM3NDRkNWUwNTMxZmZhMjE1OTVmMSBsZWdhY3ktdHJ1bmsKKzUwNjg5IDY1NGE1YjI2MjcxN2UyN2YyOWMyNDk0ZjFkMDFjZWM2MDY0YWE3MzYgbGVnYWN5LXRydW5rCis1MDY5MCA2MjhiODUxMGZlZmJiOTc4OWRkNzJmMDhiMTc0NjAwZGQ3MWY1NmZmIGxlZ2FjeS10cnVuaworNTA2OTIgZmRhM2NiZDc0YzcxOGVmY2U2ZjdmYWQ0NjVhYjExN2E1MWU1YWUyMyBsZWdhY3ktdHJ1bmsKKzUwNjkzIGZmNTM5NzA3YTFlZDM0N2JiZDk3YjA5NTQyN2FmNzM3Y2UyNmM5MzUgbGVnYWN5LXRydW5rCis1MDY5NCBlN2QwYTc1ZTMxNDU1M2Y2MDUxZjVmMTJhMTc0ZmVkODA1ODY5NmI1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA2OTUgMjQ0ZmI1MjRkZGQ0MWI1NDRiZjU3NmJiZjgzYzk1ZTFkMjM4ZjVjZCBsZWdhY3ktdHJ1bmsKKzUwNjk2IDk3OWUzOTBlMmJiNGM1NjVkMDY4ZDNmY2U4MTY5YmYyNDIxMDdlZTkgbGVnYWN5LXRydW5rCis1MDY5NyA5NzAxNjMzODE4YjRiYjIwMjZiZjRkNzJhZjhiMzkwMGI0MTgzZDExIGxlZ2FjeS10cnVuaworNTA3MDQgOTVmYThmYzhhMDY1YzM3MDRlODM4ZjY5NDgzNzI4NTQ4MzZkNGIyYSBsZWdhY3ktdHJ1bmsKKzUwNzA2IGFjZmYxYzM0Y2NhM2MzNWY3MTA2NzVkM2FmOWI3MWQ2Y2YyM2JiNjEgbGVnYWN5LXRydW5rCis1MDcwOCA4NWIyMzk2NWVjNGMwNjkxYjNhMjUxNTM4Y2Y5OTUyMzg3NTYwYmQ1IGxlZ2FjeS10cnVuaworNTA3MTAgMDhmMzVhYmVjZjk4MGZkYTU0ZTVjZDljNmJhYzIyYmQ1NDVkMGQwNyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzEzIGM1NzU5YjVhNTdmMGM2OTA5MjlhOTk3MGFiNDVmYmYwNGY0ZjZmZWIgbGVnYWN5LXRydW5rCis1MDcxNSAxZDdkYTg2MDgwMzFiZmQyZjBjNzRhMmQwOWI2ZWM4YjllYjU4MDk5IGxlZ2FjeS10cnVuaworNTA3MTYgNWZmNWE1ODNiMTJlOWM2NGQ1MGZiYzUxM2UyZmZhZmU5NDY3NzA4NiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNzE3IDg0ZTkxNjZiNzEwOGYxMGQ2MjI0NTIzNjBiYWZlOWExZTA2MDAzYjIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcxOCAzYzVkYjJiM2Y4OTNhZGEyN2RmYWM1ZDBjNWZmMDRiMDlhNmEyYmNiIGJjYW5ub24tc2FuZGJveGluZworNTA3MTkgNWM5MDNmNjUwNzE5OWUzZDYyZWIyODBmNzA1NjA1MGEwYTg4MGZiNSBsZWdhY3ktdHJ1bmsKKzUwNzIwIDhmZTY3ODZmNTE0NDViYTRiNDYwNzFkYjYxYzYwYjRhMTNkYzgxNjAgbGVnYWN5LXRydW5rCis1MDcyMSA1YWI3NmZiZjIzZjNjZjIxN2JmZmRlN2E1YTE1YzExZWQ3YWUyMzE5IGxlZ2FjeS10cnVuaworNTA3MjMgMmExZmVmYjE4NzY0Y2EzMmQxZjY4YjE1YzUxZDBlODBkZTg5ZTk0NCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzI1IDE0MDUzMWIxMjRmODVkZjU3MjkyNzQxZTI1MDQ2YmM5NTg4NWQ3YWMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDczMCBiZTE3MzRjYzZkYzAyYzU3NDg5NmExNjAyNmI1OTBjYjQ4YWMyMTc3IGJjYW5ub24tc2FuZGJveGluZworNTA3MzEgYTMyZjIwZWNjMDI0YjdiY2I5NzU2Yzc0MGM1YTFhZDU1YmM2YmE0ZiBsZWdhY3ktdHJ1bmsKKzUwNzM3IDU5NzY5YjUzNDc4OWU3NTNhNTQyMDZmMDVlOTE4ZjIxZjcxMmQxNDMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDczOCBlYjQ0MGVjNzRhMTNlYmY1NTMxMzJjNzYwNGZkYWE3YzI1YzQyNWFmIGJjYW5ub24tc2FuZGJveGluZworNTA3MzkgMDYwNzBhMTJhNmIwMmI1NzBkZGY3OTc4ZjdmNWFmZTQyMTc4MTlhNyBsZWdhY3ktdHJ1bmsKKzUwNzQwIDM1NzJmYWE5YTI5ZTA3OGMzMjE3ZjY5ZjFjYjg0MGI5MjhhNDdjMWMgbGVnYWN5LXRydW5rCis1MDc0MSA3ZjM4MTczMjUxYmJjNmIwMDVlYTBhZTUzNTdjMDcxOGZiNzFiYTE2IGxlZ2FjeS10cnVuaworNTA3NDIgYWY0YTNhMGQ0N2NjZmU2ZjZiNzQ3MzQ1YzQ3OGMwODliNmYxZTcwNSBsZWdhY3ktdHJ1bmsKKzUwNzQzIGYyMDMxZjE1ZDk5ZDgxMjhhZGYxY2IzYTcwYmFiNzFiOTdjMGRlYTMgbGVnYWN5LXRydW5rCis1MDc0NSBiYWE1NDMzN2MzZDllOTVmYmFkMzU5NjE1NzEyZDRhNDFiZmE1Mjc4IGxlZ2FjeS10cnVuaworNTA3NDYgN2MwOWI2NmYwNGJkMTQ5MWIwMzY3Yzk3NzFhOTQyMTk5N2ZkN2Q0ZCBsZWdhY3ktdHJ1bmsKKzUwNzU0IDQxN2NkZWRlMDY4ODBmMWQ1NDk4MzNkNmJjNDc4MTIyZDExOWI4ZTkgbGVnYWN5LXRydW5rCis1MDc1OSBkMGE5NTY1NGY4MDMyMWNlMjM1MzljOWFkMmJhOGMyN2YzNjVjYmI2IGxlZ2FjeS10cnVuaworNTA3NzEgMDc5ZTQyZTBiODI2YTg5MGNmMGYwMzU0ZjRiYjAxYmJlMjc2YzdkYSBsZWdhY3ktdHJ1bmsKKzUwNzcyIGYxYTI3NzdlNWM4YjNkNjg1NGM0MWM0MWI4NmY4YTYzNTQ0MWU4MTIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDc3MyAxMmU5NzNiZGZlZWUyOThmOTEyNGIwNTAxZGJlYmZiODc3ZjZmMWRhIGxlZ2FjeS10cnVuaworNTA3NzQgZWU2YWIzMzE3NTgxYmY3ODQ1ZDg0YjVhNmU5NzdkYmY4OTkxMDUwOCBsZWdhY3ktdHJ1bmsKKzUwNzc1IDgzMmZjZTUwZGE5MzYyZWE0NDQ0M2ZlYzllNmUyNDk1ZTZhMjI3ZTMgbGVnYWN5LXRydW5rCis1MDc3NiA3MTMyZjk4ZWYwN2IzMmQ5OTQ0OTMzZjJkYmU3ZjhlNzQ4MGNjYzE5IGxlZ2FjeS10cnVuaworNTA3NzcgNzVhNzEwNjY2MmEzZmQ2MjcyOWUzZDIyMjM4OGRmNTMyNjIyMDFjOSBsZWdhY3ktdHJ1bmsKKzUwNzc4IDE4MDVlNjg0ZGM5MjU3Mjk3NTQyNTdmNjBiZWIxMWVmZDdlOGU5MDMgbGVnYWN5LXRydW5rCis1MDc3OSBiYzVkODMxZjFkZGE1MDljYmY1NmJmZmVjNWU3MzY3MGFhYTlhODI3IGxlZ2FjeS10cnVuaworNTA3ODAgY2RiYjQ0YzNkZTg3MTVhMTBjMGRjZGE4ZjA4YTliYmVjNjlmM2U4NSBsZWdhY3ktdHJ1bmsKKzUwNzgxIDBlMGE5N2NlZDhlOTFmOTJlMjNhOGVhZWRkZDJlNmU0Nzk4M2EzZWQgbGVnYWN5LXRydW5rCis1MDc4MiBlOTc3M2ZjMjdlOWIzNmE1OTVkZTUxM2Y3NWJlM2ZkYWRmMjM3ODcwIGxlZ2FjeS10cnVuaworNTA3ODMgOTU3YmYzMTE5MjQ3ODQwNjIyODVmMmZiZjliZjQ2ZDg2ZWM4ZmNlMSBsZWdhY3ktdHJ1bmsKKzUwNzg0IDlkMThkOTY4YTU4YjMzMWZlN2YyMzVlOTYxNmMwMTI4NDM5NjNhN2QgbGVnYWN5LXRydW5rCis1MDc4NSBlM2RhNWY4N2ZlNjQxZDhiMzkyZWFlNzUxZmNhMGFjM2ZmNjlmNWRmIGxlZ2FjeS10cnVuaworNTA3ODYgNTRiYjcyMDYzMmM0MmZkMTg1YWRlODk5OWU4YzBlMjg4MjNlNmFiYiBsZWdhY3ktdHJ1bmsKKzUwNzg3IDBhNGFkODNmZDY1NDkyMjUzYzI4NzM0OTgxNWQ2MGJlOGJkYjYwYjAgbGVnYWN5LXRydW5rCis1MDc4OCAzYWM4NTA5NDM3ZGZkYmMyNDUwMDk2OGNhOGQzZDgxNDljZGQ3Njg1IHJlbGVhc2UyNC1tYWludAorNTA3ODkgYjU4Zjc5NTJlMzhhZTg5MWQyYTEwMzU0Zjk2MTAzMzlmNGEzMTdhMyBsZWdhY3ktdHJ1bmsKKzUwNzkwIDc4NjQzYmUzY2Y0MGJiM2E5ZjRkNDM5MzU3MmVlMDIyMzJjNjNlOWUgcmVsZWFzZTI0LW1haW50Cis1MDc5MSBhM2ZkYTg0MzIzNGU0OGQxY2E2YzgyYjI1ZTYzY2E0YTQ0YTk5M2NhIGxlZ2FjeS10cnVuaworNTA3OTIgZjg4MTliZDRlNDM3OTc3MDVkYWNlMDExN2UyMmM1NjJhYjQ0OTk5YiByZWxlYXNlMjQtbWFpbnQKKzUwNzkzIDUzNDE4Y2JhZDdmZDRjMzYyYjllNzQ4ZmM5ZDU2NWIxMzQ4YzFjM2QgcmVsZWFzZTI0LW1haW50Cis1MDc5NCBhNGM0YjdlYTc5YzBhNzRmMzY5MTMxOTliNzQ2NzgzYjFlMTE3OGRiIGxlZ2FjeS10cnVuaworNTA3OTUgODMyZDVhMzQxMzBmYTUzNjQ1NzA3NDBkZTc1MTA2OTBhMWJjM2E1YiBsZWdhY3ktdHJ1bmsKKzUwNzk2IGE0ZmM0ZTc1MjYzNDY4MjUyN2I3ZjBkMWZlZTI1YmMzMjhiZDViMDQgbGVnYWN5LXRydW5rCis1MDc5NyA2M2FlYTY4OGI1YmIyNmRmY2NkYzQwZTU2NTcyOGRiMmFlZWM3MzhkIGxlZ2FjeS10cnVuaworNTA3OTggMWIxZmQxOGIxYWRhNTM4M2MyNWU1NjI0Zjg2MWJmMDUzZDU4NjEyOCByZWxlYXNlMjQtbWFpbnQKKzUwODAwIDAyZmExMDE1Y2JjYzRjOTM0Yzg0MGEzZjlmZDJmZTYyMDAxZTk3MmMgbGVnYWN5LXRydW5rCis1MDgwMiBjYWFmMzdlNDVkNDdkNDdlYzQ3ODM1ODZiOTYwNmU5NDBlOGQwMTg4IGxlZ2FjeS10cnVuaworNTA4MDMgODllMDkwZmVmOTg1MzAyMWNhYjY5OTZiN2Q4NDY0YmUxOGRiNDEzMSBsZWdhY3ktdHJ1bmsKKzUwODA0IGVmZGU1ZWU4OGM5Zjc3NzlmMDFjZTViM2ZjNjMyOGYxNzM0MmY5MzcgbGVnYWN5LXRydW5rCis1MDgwNSAwYzAwZTJmNTA5ZTAwNzkzNDdhM2RhNWQzZDhjNTE0ZmJlNzE4NzM0IGxlZ2FjeS10cnVuaworNTA4MDYgN2NlN2VkMmVjZDljYWQzNGYyNjc3Yzg0MzE3NzQ1Y2NjMmUyYjQ4ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwODA3IGQ3MWQ0NjY5NzRlNTg3YmIzNjM5NTdhMDk5Y2ZhY2VmZjg3ODcxZjcgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDgwOCBlYWVkY2NjMDI4M2Q3OTEwZTQ5ZmYyZTc5OWFmZTkzMzgyNTFmYjIwIGxlZ2FjeS10cnVuaworNTA4MDkgMDdjZWUwMWE0ZmNjYzM4N2YwZmMxZDkyOGZhNTBmYTgxZWU3Y2UxMSBsZWdhY3ktdHJ1bmsKKzUwODEwIGE1ZjhkMWQyNTVhOTc5YmM3MGY0ZjY4YzA3NDM5YjZjM2VkMmQzODkgbGVnYWN5LXRydW5rCis1MDgxMSA5OWFhODQyMjRmMTgxOWQ1NTI3MjZhYTkxMWVhODU3MDk0NTRmNDdkIGxlZ2FjeS10cnVuaworNTA4MTUgNjNhNDRjOTFhNGQ1ZWJjZTMyNWZjMGY4MjJjMmU4ZjgyZGYxMmUyNyBsZWdhY3ktdHJ1bmsKKzUwODE2IDYyMjgyZmRhYWM1YTBhMTM1NjU5NTAyYmYzYzM0Yjg1Zjc0NDE2ZjggbGVnYWN5LXRydW5rCis1MDgxNyA3OTBhNzgyZDk4M2NjNzQ0NjQxODU0MDIyMzBiYzhlYjIxNzlkYjk3IGxlZ2FjeS10cnVuaworNTA4MTkgNjYyMWVkZmQyOTZhYjhkZTE3MGYxNjA5ODgxNzBjNjcwN2YwMjI3YSBsZWdhY3ktdHJ1bmsKKzUwODIyIDJkNGM5YWNjYjhmY2MxM2M0Mjg2ZjE4MDlmZjIwN2VlMWMzZTkyMjYgcmVsZWFzZTIzLW1haW50Cis1MDgyNSA4MzdmNTY5NTBjZWE4Yjc0MmE0NjNkNzQ2OTg2MDE2MzQ5MmZlYjJmIGxlZ2FjeS10cnVuaworNTA4MjYgZmY4ZTdjNDZlNDI5ODAxZjA1NmQxMWYwZTMxNGFjN2U2NmM2Zjk2OCBsZWdhY3ktdHJ1bmsKKzUwODI3IDk1Mzc2NzUyZTY3Y2Y5M2JiMTNmNTRjZmZiMzgyYTk0OTlkYzE3ZGYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDgyOCA5MDNmZGMzOGQ1NjQ1ZTRjMmUwMTg5MjAwZjVmMDU0Y2Q5NjE3YTcyIGxlZ2FjeS10cnVuaworNTA4MjkgZjkwZjMyODYyNzU2MWM1ZDY3MWE4NGFlMzhkMTIyNjE5ZDZhZjMyNCBsZWdhY3ktdHJ1bmsKKzUwODMwIGI5MTUxYzhjNzllOGY1M2U5ZDMzOWQwNTA0MTA2NzUzNmNmMDJkMmQgbGVnYWN5LXRydW5rCis1MDgzMSA1ZDExNjJlNmJjMzdmNDhkNWYyOGY5YmFhZTRhZWY2NmU5M2MzMjNhIGxlZ2FjeS10cnVuaworNTA4MzIgNDBlOGNhZWY4NDBlZjI0OWI1NjcwY2UwODFiYjE4OWE0YmRhNmE2ZiBsZWdhY3ktdHJ1bmsKKzUwODMzIDE0OTA1MjllNzRjZTNiYWI5MjgzYjg1NTMzYmQzM2M5NmNjM2EwNmQgbGVnYWN5LXRydW5rCis1MDgzNCBiNTViZjJhZGZhZTVlOTE0M2FiYjhjOTlkYzQzZGY4MzNjODY4ZWM0IGxlZ2FjeS10cnVuaworNTA4MzYgNWYzMzEyMDU0Y2VkZTYxZTgzNWU0ODQxMzNlM2U3OTU1NDRiMDdhOCByZWxlYXNlMjMtbWFpbnQKKzUwODM5IGNmYmY1NzU3MjQ1N2RjMDM1ZDA4YjE0YTQ3NWJjMDE5NGEyMzFlMDggbGVnYWN5LXRydW5rCis1MDg0MCA2YjIwMGI4YzYzZDMzMjY2YzNjYjNmYmM3NGViOTllOGQwOWY4ZGExIGxlZ2FjeS10cnVuaworNTA4NDEgNmQxODRmYjhjNTM1MDk4ZDk5YTE1M2FmZWE2NmZmMjk3Zjk0N2I1OSBsZWdhY3ktdHJ1bmsKKzUwODQyIDdkYTZmODFhZDRkNTNlNTIxYTk2Y2Y1NzU5NDg5NjRjNGIyMmE3MzYgbGVnYWN5LXRydW5rCis1MDg0MyAxN2Q1NjcxZmZmY2NjM2NhOThkOGM2YWM3MWExYzBlMzJmMDRjNDA2IGxlZ2FjeS10cnVuaworNTA4NDQgOWM2ZGM2ZDA5YjA3MzYyM2UzMWY4ODFhMzVmMWFlMWM4MTBjZmE0NiBsZWdhY3ktdHJ1bmsKKzUwODQ1IDlmM2YxZWRkOWMzNTA2MzhkMTlkMDNkOWJmNTU0NTMxMjc1NjNlNmIgbGVnYWN5LXRydW5rCis1MDg0NiAyNjcwNjUwNzZmMDU5ZGVmMDQyMDE1ZTg1YWZkNDllNWY1MDU4N2VmIGxlZ2FjeS10cnVuaworNTA4NDcgMjcxYjJiYjJmYzkyM2NmMGRmMDMzYWI1YTUxMGExNWRhNmIwOTVjOCBsZWdhY3ktdHJ1bmsKKzUwODQ4IGYyOTJhMmIxNGJhZjQ4MTJjMzQzYTc5ZDg5NjFjYmFiOTY1MjQ0MTQgbGVnYWN5LXRydW5rCis1MDg0OSBhY2Y2MDA0NzEzNjlmNDNmNGIzZjcyYjM0ZTQ4YjQ4NzdmZTY5ZmMxIHJlbGVhc2UyNC1tYWludAorNTA4NTAgZjA4YzViYmI4MDQyMWNkMzRiZTdiMWI4MGZiMjBlZjZiZmNiOWMzOCBsZWdhY3ktdHJ1bmsKKzUwODUxIGI4MTY0MmU1MjI4N2YzNmJmNmExZTBmOWNhYjFiMWY1MmM5ZDQ5YzcgbGVnYWN5LXRydW5rCis1MDg1MiAxZTAwZWYwN2JlYjI3MTk4NDgyM2I4ZDJmMzYxODA0YWNlNWQzOWMwIGxlZ2FjeS10cnVuaworNTA4NTMgMTg1ZjQyODNhM2I5Y2Q0YjY3MGQ5YjBhYmRmMWYyYmJjYzQxNjJlMSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwODU0IDI5YzJmZWU2Yzk4NDhlOGEyNzc4OWQ3MWE3MGJiZDUzNDhkMWU5ZTIgbGVnYWN5LXRydW5rCis1MDg1NSA0MGI0NDZlZDNmMTI2MmQ5NjJlMjNlMWFmYzNjMTliYmIwMGVlMzQwIGxlZ2FjeS10cnVuaworNTA4NTYgNWVlNmQzZGEwZTY0NTY0ODdkMTA2ODNiZjc1Njk3MTEyNTgwMDRjNyBsZWdhY3ktdHJ1bmsKKzUwODU3IGJjZWZiYzVlNjcxYWZkN2ExNjg0MjVjYWVhZDMyZDA4Y2ZhN2VkZTYgbGVnYWN5LXRydW5rCis1MDg1OCAwYjBjYzdhNDk2ODJjYzBhZjgxZWQ0ZTQwM2ZlMjNkNmJkMWRiNTcxIGxlZ2FjeS10cnVuaworNTA4NTkgZDc2NTc3NWVkNzlmODU2M2ExOTk1NWNmOGU1YjA1YWE4OTU3ZWY4NSBsZWdhY3ktdHJ1bmsKKzUwODYwIDhjYTMwNjhlYTM0M2EyNGFlNzNhYWIwZjQxNDEwYTUxMDhjZjQzMGUgbGVnYWN5LXRydW5rCis1MDg2MSAwMjVjMjdiODEyZjY4YzQyNGE2NmViYjY4YjE4MWRkYjQyOTg3MGVkIGxlZ2FjeS10cnVuaworNTA4NjIgYjAxMWJlY2Y4YzgyMmMyYmI1NjU0Yzk5MWQ3YTc2ZDIwMDFlZDIxOCBsZWdhY3ktdHJ1bmsKKzUwODYzIGMxOGE2Njk0YTA2NmM3ZTk1ZDE1YzY3YWFjNWI0ZjY2NjlkMDdlYzggbGVnYWN5LXRydW5rCis1MDg2NCAwMGFjZTZlNDA4YjAzNzFhMGYyMjU4ODE1NzA0YzYwZmY5MjRjMjUyIGxlZ2FjeS10cnVuaworNTA4NjUgYTExMGE0NDYyMTg5YTIwMDAyYjhkOGQ0ZjA3NDJlNjU0YWY0YzcwYSBsZWdhY3ktdHJ1bmsKKzUwODY2IDYxYzBmZTQ4Mzc2YTEyZDhhMzNjNWI2NDM1ZTFmYzVjMTk1NGJiMjggbGVnYWN5LXRydW5rCis1MDg2NyA2MDUyMmRmZTYyNTk5MGIwNDVhNDBhNDExMDA3ZDk4OWNlMDMwNThmIGxlZ2FjeS10cnVuaworNTA4NjggNzJhNTJlNmZjNmYxMGU1M2Y1MGI2ZjEyMWYyMDY0MjUzMDQ0ODEzNyBsZWdhY3ktdHJ1bmsKKzUwODY5IDg3OWJkNzUxMGZlYTAwZDIxMjY5N2JhZTIyYzM5NzVjODZhOGJmMDEgbGVnYWN5LXRydW5rCis1MDg3MCA2YjNkNGEwZjJhYzU5MTU3ODA3NGQ1ZmQzNzg0ZWI0MmU2ODc3OTQ0IGxlZ2FjeS10cnVuaworNTA4NzEgYzRhNzU0NmE1MDlmMTc0YzM4OGRlNDM0NTZjM2ViYzA2ZDBlODZlMiByZWxlYXNlMjQtbWFpbnQKKzUwODcyIGNlNGRmZjJhOTUyMzgwMGNiNjUwNzE0MmViMDk5Y2ZhNjQ4NjJjZDEgbGVnYWN5LXRydW5rCis1MDg3MyBlZWE2NzQyMTFkMzJiYzFkNTYzZTAyZDJlZmRkOTkzZTM5NjI3NGIxIGxlZ2FjeS10cnVuaworNTA4NzQgMGQwZDgyZTQwYjkyN2U1M2RhYjg2M2VmNjA0ZGIyYTVjNTUxNWQ4OSBsZWdhY3ktdHJ1bmsKKzUwODc1IGM2ZDRjMGFmMmExMjIyNjlhMTkxMGQ0YWIxYTUzM2FiMGZmYmQ2ZDEgbGVnYWN5LXRydW5rCis1MDg3NiBhYzAxYjYzNTliNjIxNTg4Y2Q4ZmIzYzRmNzMxZDNhZDY5NmE4MjA4IGxlZ2FjeS10cnVuaworNTA4NzcgYjBjZGNiY2M1ZjQ1NzhkYjY0ZTRjNzEwMzgwNGE2ZTRkYjg1MTFmZSBwM3lrCis1MDg3OCBhNzUzMDAzNmYwNTVjYmQ4NDIxODAzOTE5NjZmYTE2YTYyZjY5YjA5IGxlZ2FjeS10cnVuaworNTA4NzkgZTE5ZGE5YjAwMmRhMzFjNjJmMTg4M2FkYTEyZDZhNDUzZWQ5NmVlMyBsZWdhY3ktdHJ1bmsKKzUwODgwIDZlYjM3NTdjMmM5OTFkMzY4OWViNTg3NDdiMzNhNjgyMWRlZjkzZjIgbGVnYWN5LXRydW5rCis1MDg4MSAyOGNkZDQzZTA1NjkwMmNmZmI3YzBjMDJlYzZjZTYyY2M0NjI3ZWU1IGxlZ2FjeS10cnVuaworNTA4ODIgMDc4MTcyZWVhYWU1M2Q2MTQxMjMwNzQwODQ4NGJhOTgxYTJiZDJlMyBsZWdhY3ktdHJ1bmsKKzUwODgzIDBiM2ZkMDRjZGZiNDg4NWM3MzY5NWQ0NjcxZWFhYWEyNjYzMGRjN2EgbGVnYWN5LXRydW5rCis1MDg4NCAxMTJmMjE4ODIxM2IyNGNiMjM3N2EwZGUyZTBjYWZkZmU1MmNjYmZlIGxlZ2FjeS10cnVuaworNTA4ODUgNDBjZWJhZmFlNTZmZjYwM2Y4MWNkZDllMGUyZTI1MmExZjc0YzZiNyBsZWdhY3ktdHJ1bmsKKzUwODg2IDM1MDQzZmJhN2FlZDgwMWNkZGE1M2E4ZDI3MGI3MjhmMzgwMzJmZjUgcmVsZWFzZTI0LW1haW50Cis1MDg4NyBjZDhmMjBkNDAwYzFjNjVhMzMwZDczZTRjZjQ5N2JhNGQ2MGJkMmJhIGxlZ2FjeS10cnVuaworNTA4ODggZWYxZTdmM2Q5ZjlkODJlYzljZGRiNzU5ZGQwMzhmYWFkMzdiMmFlZSBsZWdhY3ktdHJ1bmsKKzUwODg5IDYxYzhiNDEwNGFlZmFlYTUyMTFmNmY5Y2YwYzg1NDFlODdlYzRlYTkgbGVnYWN5LXRydW5rCis1MDg5MCA3NTQzMWIwYmZiMGU3MjEzYjBiMzRiMDk2MGZlZTA5M2E2MzQxNzdmIHJlbGVhc2UyNC1tYWludAorNTA4OTEgYjlmMzUzYzJjMDIzZTViOTg2MzMyZDc4NjhlZDZhY2MzMjA1MDlhZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwODkyIDY5N2FlMzYyZWQwMjQxNTJhMTA4NzgzYzYzOTY3ZWEwMDExN2Q3MTQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDg5MyA0Mjc2ZDBiNDY5YWZmZjI0ZjJiN2UyNzEwMWUwNmU4YjVmNzJiZGJjIHJlbGVhc2UyNC1tYWludAorNTA4OTQgMjc3ZDdhZjU1YzQ5NDVhNzgwYWIzODRkNzZlZjIzYWJlNzQ1M2Y3OSByZWxlYXNlMjQtbWFpbnQKKzUwODk1IDRhNmFkZTljZTc4MGRiOTA1NTdhMzZhMWNkOWMwNTI5NmU1NGU0MzUgbGVnYWN5LXRydW5rCis1MDg5NiA1NTg2NWQ3YmM2ZWE0OTE0NDVhY2FhNTMxMWJlMTk5YTU4ZjFlZmM3IGxlZ2FjeS10cnVuaworNTA4OTcgYmYxOTg0YzEzZTJmNzk4NjQ0NjQ5ZGZjYzA4MGU4MTgwMWEwZDYxMyBsZWdhY3ktdHJ1bmsKKzUwODk4IDZkYWNkYzFhMDA1NGZhOTM2OWM3M2E5NThmNTkxMmEyZWJjODY2OWIgbGVnYWN5LXRydW5rCis1MDg5OSAwZTlhMjY5YTIxODkwYjEwMDVlOGI4MDkwZGM2NzZmMTc2MGExMjhkIGxlZ2FjeS10cnVuaworNTA5MDAgZDE2NjRhNTAxZGE1Y2JkZTBlMDAxMDdlOGZmYzk5NjFlOGFiZGEzNiBsZWdhY3ktdHJ1bmsKKzUwOTAxIDBkZTlkNzE0NDRmNjI5NmViNTg0MDA3MTYxNjBhMTQ2M2EzZTVkNzYgbGVnYWN5LXRydW5rCis1MDkwMiBhOWIyZmQyZDRjOTYxN2NhNTQzNDA5NzNlOTIyNDYxYTY2M2U0ODc4IGxlZ2FjeS10cnVuaworNTA5MDMgYzgzNGNiOTU2MzdhY2RiMTdkMjNkZDE2ZDZhYWMzMmRhNmEwZDU0ZSBsZWdhY3ktdHJ1bmsKKzUwOTA0IGMzYmI0YjIzZWI5YjNmYmFjYTI2MmM5ZjgxZWMwOWZjYWY2OTIwOGUgbGVnYWN5LXRydW5rCis1MDkwNSA0MDZjMWVmZTdiZWVkMzQ2OWY2OTFlNjliMTNjYzliYzMzZGI3MDU1IGxlZ2FjeS10cnVuaworNTA5MDcgMDRkZjBhOTcyMWIyYzc0Y2JmMzAxNDI1YzYyMWViOTUzZjQyMzJmNyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTA4IDFiNTk3YzgwMTU3MjIyYzQzMjkxMDhkNGM3MzQ4ZmY0NzQwNDRiOWYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkwOSA5ZmRjNjg0MWMzZWI2OWM3MmVhMTdmYjM0YTAxYzU0M2YyM2ZhMDFhIGJjYW5ub24tc2FuZGJveGluZworNTA5MTAgMzA4YmE2NDMxNzNhMDA0ZjNmYmNiOWRhNGE1NmJiMjMyODM3ODQzYSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTExIGVjNTE2YmFmOGEzMGM1ZDU5YzI1YTIxZTJkODJiNjQ0YTM5NjU0NjMgcmVsZWFzZTI0LW1haW50Cis1MDkxMiBmM2Q1NDA3NTFhZGUwN2RkOThjYWIxMDg2M2VjZDJmZGFiNzExNzE1IGxlZ2FjeS10cnVuaworNTA5MTMgYzRhYzZlYTQ5N2ExMDVlZDM1NDQzZTRlNmEyNDI3NmM2OWQ5M2I5NiBsZWdhY3ktdHJ1bmsKKzUwOTE0IDg3YzllMzMxZDVjOGQ2MTEyYzgxM2RlODFhM2RmNjRhYmQ4NWYyNjcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkxNSA2Yjk2ZDhjOTIzYmVjNWIxNWVhNDg1MGIxMzM3MjliODE1ZDRiZjg0IGxlZ2FjeS10cnVuaworNTA5MTYgM2Y0NDg1YjIwZTc5OWU4Y2FlMjdhMGY3YWE4MmNjMjc1MDk0ODhhNCBsZWdhY3ktdHJ1bmsKKzUwOTE3IDVlODVlZWUzMzU4MjhkODM1ZDhhODA0OTU0Nzk1M2JlZGQ4ZTBjODEgbGVnYWN5LXRydW5rCis1MDkxOCAxMmNmYTFiY2Y4NDNkNzRiY2JlMTNlODQyNTI3MWUzZjRiM2ZkMTFmIGxlZ2FjeS10cnVuaworNTA5MTkgOGI5Y2NkNWQ5MzFlMGYyNDM3YjVhZjM0MzQ3ZWUwNDBjNmI0NjE5OCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTIwIDkyNWFiNDc4Mjk5NDI0OTcwOTczZTI5NmZkMjY5NTQzOWQ5ZTJiMjQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkyMiBhNTRhZTI1ODNiNzAxMDBjYTIwOGZlMTEzNWU2Yjc4MzdlNTAwYmVhIGxlZ2FjeS10cnVuaworNTA5MjMgZTc5NWUwNWQ2ZDU2NWM2MmI5MzJhMzdjMDJiNjcyODVmMjg5YzAwOSByZWxlYXNlMjQtbWFpbnQKKzUwOTI0IDZjOGJjN2NkNzJhNmM5ZmM3ZjQ4MWUwM2MwM2ZlZTBhNjFlOWEyM2QgbGVnYWN5LXRydW5rCis1MDkyNSBmYjZiY2NmZmJlMzEwYTRiMDg4MjYwZmRjMzJkYzQ3MGNjN2JhYmQ5IGxlZ2FjeS10cnVuaworNTA5MjYgY2RiNDc4NzIyNmFmM2I1NTMxMGFlODA1YTk0OWNmMzE4YTMwNTExNSBsZWdhY3ktdHJ1bmsKKzUwOTI3IGQ0NTM0NDBiMzNjNmU1MTczM2YxZDNmYjJiYmFhMDBmYTU1NmE5NDMgbGVnYWN5LXRydW5rCis1MDkyOCAxZmFkNGYzZTM2YmE0ZmIwNDQzOWQ0NjljZjFiNTQxOGE3MWU3Y2VjIGxlZ2FjeS10cnVuaworNTA5MjkgYWIzNDk1ZGY0Y2NlY2JhNmUxZDYyOGZkN2E4YzczZmE0MDcwZTA2ZSByZWxlYXNlMjQtbWFpbnQKKzUwOTMwIGJkMjZhMTk1M2MwNWJlMmVhZmQzYTZkZTU2ZDY4MzgwNzk0YmFmODUgbGVnYWN5LXRydW5rCis1MDkzMSBhOTk1Y2ZmODQzYjM0MGUxZjVhYjhjOTc3ZDIyNGZhZmMwY2M4YjEzIGxlZ2FjeS10cnVuaworNTA5MzIgM2ZlZDdmYjZiYzk2NDQ5MzljZDdlZjNjMDE3MjYxNmE0YTUwZTI0NSBsZWdhY3ktdHJ1bmsKKzUwOTMzIDVmMjE1NDNjMzNkYzRlY2E3YWUzZWEyNTMxZTc0NmZiYjA5MWZkOTYgbGVnYWN5LXRydW5rCis1MDkzNCAyZjNkODcxYmY2ZWYyMmYzOWEyNTdjNjY2OTM0Yjg3M2U0NWNkY2M4IGxlZ2FjeS10cnVuaworNTA5MzUgNmZmNzJhZDkzYWQyYmE2MTdjNTE1MWYxNGUxZTE4NGNhNWI0Y2I5YyBsZWdhY3ktdHJ1bmsKKzUwOTM2IDFjOTRmNjYyMzc3NzliNTZiYWE5NzFlMTcxZmZkNWEwZWJiZDEyODggbGVnYWN5LXRydW5rCis1MDkzNyA2YTg5OTVjMmU4YmM5OTFkMThjYWNjMzQwNjAyMjFmMjQzODYwYjFmIGxlZ2FjeS10cnVuaworNTA5MzggMDY5MWQ5MDFkODljYmYzYmFjMGQ1M2JhNTg3MWZhZjdkMjQ4NmQyMiBsZWdhY3ktdHJ1bmsKKzUwOTM5IDBhYmE2YjFmNWEwMWMzYmRmNWRmMWRhMTJiNDNiYjVkZTE3N2IzYzAgbGVnYWN5LXRydW5rCis1MDk0MCAxYTIyMmYxMTBhYWFmOTlkZDEyMTgyNTg4NTY0ZTExZTExNTI1OTEzIGxlZ2FjeS10cnVuaworNTA5NDEgY2IxZTQzMmI0OTE5ZjEwNjQ0MDZhNjhjOGVmMTYwODM1OGJkNjUyNCBsZWdhY3ktdHJ1bmsKKzUwOTQyIDRkZDUyYmE1MmRlODNlZTEzYzMzZWU3NzRlYTEyZmQ0NzY1NTlhNjUgbGVnYWN5LXRydW5rCis1MDk0MyAzYTJkM2VkYTNlMTZlNWQ0ZDk2ZDhmYTVkNTU3ZjQxMDdiY2JjZjAxIGxlZ2FjeS10cnVuaworNTA5NDQgMzQ5ODNjMGIyNmJjMjkyNjYyOWUyMTI2NzRjODhmMjYxZjg0MTA3ZCBsZWdhY3ktdHJ1bmsKKzUwOTQ1IDgwNjlkNzNhY2JkZjhiNWU5ZDNiODdjNmFlOTIxYWI1ZjhiMGI5ZDcgbGVnYWN5LXRydW5rCis1MDk0NyAzNTU4M2Y1NWM1YThhNTVhMDY3YTFiZTFjZmI0MGVmMWFlNGQyNjRmIGxlZ2FjeS10cnVuaworNTA5NDggNzI4MTQyOWEwMWQ2N2Q0YmI3MDk4NmYyZTU3NzE5NWQ2YmM0MzJmNCBsZWdhY3ktdHJ1bmsKKzUwOTQ5IDM0YzIwZDNmMjUxMDY0MDczZGZkNmViM2QyOTAzMjliNzgxNGEwMTIgbGVnYWN5LXRydW5rCis1MDk1MCA4OGRiNjAyZjIzYTZkMWU1ZDQ1YTg0MTI0MDNjMGFlOWM1NTc5NTk0IGxlZ2FjeS10cnVuaworNTA5NTEgNDVhMzU0Zjc0ZDgwZDY1NDA5YTBkZjJhNWEyYTU5MmI2YmRiNDQ2ZCByZWxlYXNlMjQtbWFpbnQKKzUwOTUyIDRkYjlkOTUzM2IxNjNkMTc5YzA5OTljMGI0YmU2N2I1NzkxZjZiNTMgbGVnYWN5LXRydW5rCis1MDk1MyBkODg4OGM4Yjg3MmIxM2E3Mzc0ZDQ2M2EzNjY4ODcwZGRjY2ZhZjE1IGxlZ2FjeS10cnVuaworNTA5NTQgNmE1Zjc5YTRlNjg3MzNlMTM2ZjEyNTZjMGMxYjkxMTcyNWY4ZmY1NiBsZWdhY3ktdHJ1bmsKKzUwOTU1IDVhZDZlMmE3MmIyYWMyYTE0MjM5N2Y0MjM1OWMxZTVmYzlhODExOTAgbGVnYWN5LXRydW5rCis1MDk1NyA2ZDFmNjczZjA1OTA3YzY4M2I3MTk0NmY3MGMxYWEwZTUyNDc0NDU4IGxlZ2FjeS10cnVuaworNTA5NTggODA1NTEyY2YxNGVmY2E2NWVkOGNiYmUwYWEwYzkyZmIxM2YxZjllNCBsZWdhY3ktdHJ1bmsKKzUwOTU5IDQ0MDdlNTE5M2E0YjBjOTE3Mjg1ZjIyZmNjMDg0N2VjOGUwNmM0YzQgbGVnYWN5LXRydW5rCis1MDk2MCA0ZTNhZDY1ZjU1ZThlZTI3Y2VhMDEyMWJiZGE5NjRlY2FkMmIzYzQ1IGxlZ2FjeS10cnVuaworNTA5NjEgZWZiYWVjOTY3NGRmZDFmOTk4ZDA2NTYzNDMyMmM3ZjFhYWU4OWUxYSBsZWdhY3ktdHJ1bmsKKzUwOTYyIGRkNTFlNTZiNmNiMGE1ZDI5ZTg5N2JiYzI1YTAwZTMxNjQ5ZDQ5ZGUgbGVnYWN5LXRydW5rCis1MDk2MyAxNTIzYzM4Y2Q1MDVmZjIxOTIyYjZmOGI0N2RlMWQzZDcwMGZmMjY5IGxlZ2FjeS10cnVuaworNTA5NjQgMzg4YjdkOTBiYjg5NjNlOTdlNGJkY2ViMWU2ZDE4NzRmYjJkODgzZCBsZWdhY3ktdHJ1bmsKKzUwOTY1IGY2OWQ5MWE3Y2Y3MTQ4OTRlZGQwNDZlZTU3ZTMxNDIwNmNhM2E3ODUgbGVnYWN5LXRydW5rCis1MDk2NiA3N2YzNjUzYmZjMTQ4M2Y3NDBiMTIwYzc3OWE4ZTNmZTNhZGI2MWI4IGxlZ2FjeS10cnVuaworNTA5NjcgYWVlOWYwZDVmZDJiMTY3MjQ1M2FkZWU5ZGU1MjBiNjNjNzNiNmNjOCBsZWdhY3ktdHJ1bmsKKzUwOTY4IGI3NDViM2ZkNjZhNjQ5YTVmYTU0MGJkZjQ3OTcxYzI2YWYwYTk1OWUgbGVnYWN5LXRydW5rCis1MDk2OSA3ZGM1ZjNlZGU0Y2RjNjJiZmVmYjFkNzBiZDBiYWViY2Q5NzU4MzY0IGxlZ2FjeS10cnVuaworNTA5NzAgMDQxZWI2MjMxY2RjMjQxNmQ5Yjk1ZDA2NWE4MmVjYjFhMTQ3NTU1MiBsZWdhY3ktdHJ1bmsKKzUwOTcxIDFiNGU1ZWIyMTA0OWZiNWU1OWEzYjI0NDY4YmM4ZGM4OTcwMjBhOTkgbGVnYWN5LXRydW5rCis1MDk3MyBjZWJlZTFmODUyMjIxOTExYWRiMGJiMDk1NmIxOTc1OGQ0ZmFjNjJjIGxlZ2FjeS10cnVuaworNTA5NzQgMWViOTIxNTY0MWE4ODQ0ZWE2NDJjMTQ3NzhjZDMwMzA1ZDNlMzJiOSBsZWdhY3ktdHJ1bmsKKzUwOTc1IDIxNjg3N2I4NmJjMjg2NWY3NWFmMWEzOTUzZWM5ODhjYzUyMjk1ODUgcmVsZWFzZTI0LW1haW50Cis1MDk3NyA5Mzc3YzY2MDQ1NDJjZTZlYWJmNWQwZTYyY2Q0NDM1ZGU2ZDFlYzllIGxlZ2FjeS10cnVuaworNTA5NzggMzYxZWY3Y2VlZjI4ZDlmNjNlYjNlNWM3ZTU1NzU4M2YwYTEzNTQzZCBsZWdhY3ktdHJ1bmsKKzUwOTc5IGJkZTU4YTc4ZmM3MTJlMmE5NzI1ZDQ3NDU4MWMxNGM5YjMwYTFlMzcgbGVnYWN5LXRydW5rCis1MDk4MCBkOTNhMDQzNDBlNmJiYTU3NDdlZjBiMmZmMDk5ODA1MWU2ZmM5MWUzIHJlbGVhc2UyNC1tYWludAorNTA5ODEgNjVlN2I0MjIzNDQ0ZjM2Yzg2N2Q5NzAxMmM0MGU5NGQ0ZTMyZjEzMSByZWxlYXNlMjQtbWFpbnQKKzUwOTgyIDliOTU4MDk4MjAzNTViNmYxZTQ4NzQ3MWJjZTFlYjkwNGQ3NDA3MGEgbGVnYWN5LXRydW5rCis1MDk4MyBjOThhMjM1Mjk4M2E0OTZkMTRhOThkMDk5MzBlNjRlMWZmNzE1M2ZiIHJlbGVhc2UyNC1tYWludAorNTA5ODQgMjljNzYzNWQwMTk5YWM1YmUyYzk3OTk0MmVlMTAyYjA5Y2IyNDZlMSBsZWdhY3ktdHJ1bmsKKzUwOTg1IDdmNDRkNjM0ZjM3N2JkNjg5YjM5ZGQ0ZmIyYWZiZmU4ZGZlMDkyYzkgbGVnYWN5LXRydW5rCis1MDk4NiA0YWVkNDM2N2FkZDI3Y2VlYmZiZGQ3ZDg1M2YyYjAyNTBjMDZhOTkyIGxlZ2FjeS10cnVuaworNTA5ODcgZDBlNjE3MDcwNGRlZTg1MDk2MDE0YjMzN2VkMDQxZDMyY2IzMWFhZiBsZWdhY3ktdHJ1bmsKKzUwOTg4IGM4N2EzOTUxZGZjNTBhYTA3MThiZmQ4ZTIwYjA5YzY2OTFmMWQ1MDkgbGVnYWN5LXRydW5rCis1MDk4OSA0ZWQ1ZDRjOGU2NTQyNGY0YTgxMWEwNTdhYTU3NzAxZjJkOWVlMGEzIGxlZ2FjeS10cnVuaworNTA5OTAgMzk1ZDE1ZTgzNzRhNzBhMDZhNDZkYzQ3ODMyODBkMzNjMDg1M2UyZSBsZWdhY3ktdHJ1bmsKKzUwOTkxIGFlYzY2NjhjNThkMWUxZjg5MDJmZTg1ZDUyMDY3MjIxZDljOWViNTIgcmVsZWFzZTI0LW1haW50Cis1MDk5MiBjZjA0NmUyMmQ3ZGQ1OWM0Y2EzMmQyNDczNDNkNjhiZDEwMWEyZmJkIGxlZ2FjeS10cnVuaworNTA5OTMgOTMwYmIxZWI4ZGQ1ZDFjYWM1Mjk3NDE1MzQ4ODE0YmY3NDdkODUyMCBsZWdhY3ktdHJ1bmsKKzUwOTk0IDNkZDQxMDFjYjdlOTc3OWZmZjQ0NTIzYzdiYTlhZGE2Y2M3NTliOGMgbGVnYWN5LXRydW5rCis1MDk5NiBmN2YxMGE4Yjk2ZWU3ZDYwMTRmNzY0ODdkZDdlMDM5NWNlNTAzN2Y1IGxlZ2FjeS10cnVuaworNTA5OTcgN2YwNDc5M2ZlMTM1ZTVlODg0OTU3YTU3NGY0NWUyNWEzMzg0Mjk5MSBsZWdhY3ktdHJ1bmsKKzUwOTk4IDkxMDE1MTUyNGY1ZWViMGQzMTUxMTNjYWY1Y2EwMTBlNjhhYWIzNWEgbGVnYWN5LXRydW5rCis1MDk5OSA2NjI4MTQ4OGU5MDIzYTgyMmQ2OTdhZjk1YTc5ZWVjMmVkNzAyMzgxIGxlZ2FjeS10cnVuaworNTEwMDAgYjc5YjY4YjgyYTQ0NWMzMzExZTI1OTIwYzg3NTU3N2Q4ZjQ5ZDU0MSBsZWdhY3ktdHJ1bmsKKzUxMDAxIDg2ZTgxZGVmYzI4NTZlNjAyMDgxMGY1OGVlNzc0MjdhMGRlOGJkOWYgbGVnYWN5LXRydW5rCis1MTAwMiAzYjc4OTU3Yzc3OTE5OTg0YjAxM2JiOTZkYjgwNTM1ODUxMzhhYzFiIGxlZ2FjeS10cnVuaworNTEwMDMgZjNlMDg5MTViODdiNDQzNTYxYjNjMzNiMTQxYTY1NGNkMThjYTFmMyBsZWdhY3ktdHJ1bmsKKzUxMDA0IDg2YzM2MThhNDljM2YzYTU5MjQ1OGY1ZWU5Yjg0NzNjZDFlOTk4NWUgbGVnYWN5LXRydW5rCis1MTAwNSA0OTY2YjE3OTYzYjQxZTdlN2U2MDYxZTRkZWU2ZTQ1ZDBjYWEwNDlhIGxlZ2FjeS10cnVuaworNTEwMDYgM2RlOGE1OGFlMGI5ZThlMTJkZWUyNDEzYWI0YjZmZGI5NWVmM2QyOCBsZWdhY3ktdHJ1bmsKKzUxMDA3IDM5MzhlNmVmYTc5M2Q2YjMxNzZlNjVjMDM4NzMwMjNlNDM0N2M4MjMgbGVnYWN5LXRydW5rCis1MTAwOCAzMTVhNjZkMjI0N2E3OTFkM2IwY2Y0MGE3MzI1NDQyNTQ1MDgxODMzIGxlZ2FjeS10cnVuaworNTEwMDkgZmYyMjNiOTVmMjA3ZTA5ZDMzYmM1MDhkNmUyNGU0ZGEyZmM4ODAzZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEwIDlkN2M0NWQwZDFiZjdlYzM2OWZlNzgzYzE0N2I5OWEyYzJhZDAyOTcgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMSBlZTJkNDZhYzJmNmU3YjViOWYxNmU0Nzc3NzU5ZDlmODkzYTM2MDQ2IGJjYW5ub24tc2FuZGJveGluZworNTEwMTIgMWMwYzEyODM4ZTYyNTNlZGYxNTExODgwODFkMzEyMjk2ZWIzZmVmOCBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEzIDgyYjY3NTdmZmZmNDc2YjU2MTQ1NzVlNjJmMmU5YjRiNzQyNTkxYjYgbGVnYWN5LXRydW5rCis1MTAxOCA5MWNhNmVlYWViNGFjYzU2NGUwZmFhYzM5ZWExMGIyNzMzYjRlNWIxIGxlZ2FjeS10cnVuaworNTEwMjAgZDM5YWVlNmNkZDMyY2ZhYmQxY2JkZWEyYjYxNzdlMmYxZDZkYmI3OCBsZWdhY3ktdHJ1bmsKKzUxMDIxIDUzZDA1NTJhN2E4YzUwNzE1MTNiYjEwNjc1ZTkyMDk2YWM0NmE1MGYgbGVnYWN5LXRydW5rCis1MTAyMiAyOTE1YzA3MjlmMGE4Y2U2ZDMxOGIzMTM5NTZjMWY1MmM0YmNiMDBmIGJjYW5ub24tc2FuZGJveGluZworNTEwMjMgN2UwMzE4M2ViN2E1MmExYzk0YjBkYzU3NTQ3OGZlMDUwZDhhZDgwNiBsZWdhY3ktdHJ1bmsKKzUxMDI1IDE1NjdjMDFjY2E3M2Y5ZjY4NGUzYmY2NjBmYjlhOWIzNjZlNGE1MTggbGVnYWN5LXRydW5rCis1MTAyNiA0NjM3N2IwNWUxODE1ODkxNWI2NDc4NWUxYTBlNzk2Y2Q2YTgxZDdlIGJjYW5ub24tc2FuZGJveGluZworNTEwMjcgMmYyMjFiZGQ5ZjQ0YjhmOGM5MTM3YzcwMmU2MTM0YjU5YmY0OTgxYyBsZWdhY3ktdHJ1bmsKKzUxMDI4IDIzMmQxNTZiZWI4MmZjNmFkNDJlMjg5MzA4ZTBlNzZhZmY1OTVjMzcgbGVnYWN5LXRydW5rCis1MTAyOSBkMjBiOWEyZDhlZTczMDIwNGJhMmFkYTdmMTRkOWRmZmRlYWVhMzkxIGJjYW5ub24tc2FuZGJveGluZworNTEwMzAgY2Q4MmViZmM2NmFmZDQ2NGY3NGVmZTIyYjgzYmIyYWVhODVkYTdhMyBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDMxIGJkNTBhNDJiN2RmMGQwYTZlZGYxMjUxYjI3MzgyYWJlZTI3ZTM2ZTcgbGVnYWN5LXRydW5rCis1MTAzMiA0ZjE1YWJiMTIwZGM1MTYzMjM4NWIwZWQwMjEwMWMyMTEyZTNjZmJlIGxlZ2FjeS10cnVuaworNTEwMzMgN2Q2Yjk3MTU4MTgwNWE3NTBiZWY0ZjViNDU5MjU5OTA2ZGI0NWQwMCBsZWdhY3ktdHJ1bmsKKzUxMDM0IGZhMmRhYzM5MjZmZmMxNTlkYTEzOTZkMGE4MDgwNTBlNGIwZTA4M2IgbGVnYWN5LXRydW5rCis1MTAzNSA1OTc2MmU3OTYyODEyZmE3ODY0ZWQ5NDIxZmVkNTJhN2JhMjVlYzljIGxlZ2FjeS10cnVuaworNTEwMzYgMTJmZmVkOTI3YTNkNDVkMTk1MGFkYzUwYjY5ZmZiNjYwNDVjMTVkNiBsZWdhY3ktdHJ1bmsKKzUxMDM3IDM0NDM2NGI0OTIwODU2ODg2OTM2ZTFlYTVmOGY0ZjkwM2ZmMWQ1NGUgbGVnYWN5LXRydW5rCis1MTAzOCAwMDM1MGNiZTBhOWU5NDg3Y2I2ZjY1ODA1YWY1ZDg5ZWI1NjgyMWMxIGxlZ2FjeS10cnVuaworNTEwMzkgODVmZGNkZmNhODVjMWNiYTFiOTdiZWM2ZmUyY2ZmOGYyNWEzMjhjNiBsZWdhY3ktdHJ1bmsKKzUxMDQwIDVmOWZhMGI4NjNhZWU4MGY5OTIzZmVmNWUwOGUxNDNlNDY3YmEyOGMgbGVnYWN5LXRydW5rCis1MTA0MSA4YjkzMTc0ZDUwMWE0Y2I5YjRlMGRkODAxYzM3YTQwMDY4Nzg1MGMxIGxlZ2FjeS10cnVuaworNTEwNDMgMWVhZDQxMjIxYmQ4ODBlYzE5YWQxMjU5YjI5ZjNhMDU2YTRkN2QyYiBsZWdhY3ktdHJ1bmsKKzUxMDQ1IGNlMTBlM2NjN2FlYmU4OWYyNGI3NDc4YTUwOGI3MDhjMzYwMTE3OWYgbGVnYWN5LXRydW5rCis1MTA0NiA4MmY1NjIwNzY1MmY2OWNhYjJhOWMyMzA2NTU2N2VjNDA3MWVjNGQ4IGxlZ2FjeS10cnVuaworNTEwNDkgYzBhYmIxODI5OWI0NDJlMTE2MGQyZjk1OGJjZTE4ZjY2ODUwY2FhOSBsZWdhY3ktdHJ1bmsKKzUxMDY1IGNkY2YyYmNhZDYyNGVhOGJhYzYzNjU2M2RmYjgxOTMwMDQ3NDBhN2EgYmNhbm5vbi1zYW5kYm94aW5nCis1MTA2NiBjMzg5OGE3M2IzODYwNzg3NTEzN2YzZjM3ZGE5ZDcxYmJkNzI4ODhmIGxlZ2FjeS10cnVuaworNTEwNzkgZWM0ZjM1ZDJhNjkzY2UxOTUwMmYwNmQ2YWI0ZjRjNWI1ZDE4ZmVmMyBsZWdhY3ktdHJ1bmsKKzUxMDgwIGI5MGE4YjAzOTViZDQzZmQxOTM4NDI0NTFkMGM0OTU3M2I0ZDcxNjYgbGVnYWN5LXRydW5rCis1MTA4MSA4ZWYzZjhjZjkwZTEyMWEwYjQwYTBlM2ZiN2MzMDg2YmMwYTkxNDQwIGxlZ2FjeS10cnVuaworNTEwODIgNzViZjc3MzY3ZGEzMjBiMTI1OTM5ODlmZTkxZWJlY2Y3ZWJiMjRkOSBsZWdhY3ktdHJ1bmsKKzUxMDgzIDgyOTZmYjk2Y2MxODRmNjRhMDA3ZmE0NWY1NmY4MGViNzc5NzE4MGQgcmVsZWFzZTI0LW1haW50Cis1MTA4NCA1NWY4MzAxODM1MzI2ZTZjYmFiZmYyYThmODc3NzMzOWMwYTIwMTU3IGxlZ2FjeS10cnVuaworNTEwODUgODQ5NzRjNjc2OTAzMWQwZjU3YWZjZTU4MTg3ZjcyNWI3Yjg0NDBhYSBsZWdhY3ktdHJ1bmsKKzUxMDg3IDc3Y2YxOGI4YjFjZTEzMzAwZGM5ZDFmODc0YzU4ZjA0NzczZWIzNGMgbGVnYWN5LXRydW5rCis1MTEwNCAxMDA0YTE2YjBmMDkxYmI3ODNmMjg0MTk1MTkxMmIwZmJlZmE3Y2E0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTExMDkgZWIyM2QwOTZkNjk0Njg5NTE5NDc2ZjZhY2NjYThhYjZkMTIwMjNmZSBsZWdhY3ktdHJ1bmsKKzUxMTEwIGE5Yzc0MmQ2Yzg4OGVlMzM1MzFiYWRiZmVlOWZkNGQ3MzE3MWYxMmMgbGVnYWN5LXRydW5rCis1MTExMSAwMjM4MTY2ZjA3YjcwMzVkYzY2YTI0MGYxMjNiNjc1ZDZkNTNhZDMzIGxlZ2FjeS10cnVuaworNTExMTIgNDA1ODVmYjM4N2JiYWE4MjM5OTA0YTYyN2EzYWY1NDlkZTVlODZhNSBsZWdhY3ktdHJ1bmsKKzUxMTEzIDQ2NWEwNzhkMmNhNmI3YTM2ZDg5MTNmMzQ0ODAzMjYyODRmN2ZmMzIgbGVnYWN5LXRydW5rCis1MTExNCBhYTBjYzc1NTA3NGViODkxMDFjMzZkNWE1MDA0YTdjMDQ2NDM2YTdiIGxlZ2FjeS10cnVuaworNTExMTUgZWZhODA2MzMzMDlkYTg3NDVjMjNkYmNjNmM3NjMxM2JhNGM0OTcxMyBsZWdhY3ktdHJ1bmsKKzUxMTE2IDY1NjdjMzJhYjg4MTU1MGUwZTBjMTUyM2IyZDBiZGU1OWQzNDI2ZWQgbGVnYWN5LXRydW5rCis1MTExNyA5OTlhNDkxNGQ1M2NiNDFmN2RkZmYzNDBiZTkwZWY2MTVjNmMzM2VmIHJlbGVhc2UyNC1tYWludAorNTExMTggZmY0YjE1NzgwMzk2ODMzZjVhOTRkZTlhNDQ0MGM3NDkwMGVmZTc3YiBsZWdhY3ktdHJ1bmsKKzUxMTE5IDljYjQ1NjVlNjBjYWI0MzIxMWFjNDViYjBkZTU0YmEwMmQ1YWY4YjAgbGVnYWN5LXRydW5rCis1MTEyMyBmZTQ0ZGNiZTEzZjJjMjc3YmFiYjJhNDk2MGVkYTIwZTgwNjI2NWUxIGxlZ2FjeS10cnVuaworNTExMjYgM2JmZWYzZGIzMmIzOTJhNGY2MGIwZjFmMzljZjViMmQ1YThiMTMzNSBsZWdhY3ktdHJ1bmsKKzUxMTI3IDQwNDE1ZGY1YmE5ZGU1ZWI2NzRjNzRkZjdhYTNiMjZhNGU0OGQ4NGEgcmVsZWFzZTI0LW1haW50Cis1MTEyOCBiOTBmZTRhZTMwMDgzNDYyZDc5ZmUyODZlYWY0YWE5ZjNiZGFiOGEwIGxlZ2FjeS10cnVuaworNTExMjkgNTAwOWRlNTA0ZjkyNDAyMWE0MDMyZWQ5NjdlOGY0ZmU2NWU5ODViYSBsZWdhY3ktdHJ1bmsKKzUxMTMwIDIxNGU0YTQzODRmMTJiMTJmNDJhYWJhNDUxOGQwN2M5NTIzYWU5ODkgcmVsZWFzZTI0LW1haW50Cis1MTEzMSAyZTYzMGIyZDViNDQ2MGVkOWE2NjJjOGEwOGQzMTA5MTg5MDRmZTE1IGxlZ2FjeS10cnVuaworNTExMzIgNzJhM2Y3MjNlZmQxNjk3MjA0OTZiN2EyMzUzNGM1Y2UzZjcwYjM5NyByZWxlYXNlMjQtbWFpbnQKKzUxMTMzIGZjMTAxY2MzNTRhNzlmYjY1MGRhNWIxNTliMjg3YTkzYjgwYjFmOWMgbGVnYWN5LXRydW5rCis1MTEzNCBiN2VhYjFjMThlOWQzN2JjN2UzODNmZTE4MmI3ZDEzMTg4ZTY5MDI1IGxlZ2FjeS10cnVuaworNTExMzUgNTk0MzI5NmE1MTgyMTVkNzAwMzY3YjUyMmNhZmYxZTBiMDNlNzczMCByZWxlYXNlMjQtbWFpbnQKKzUxMTM2IGI1MDI2OGY0NmZmZjlhNzYwZjMwNWU5MTc0ZWQ4NGRjYjdkOGQyMDIgcmVsZWFzZTI0LW1haW50Cis1MTEzNyAzMzUwNDc0ZjM0MzNjOTlkMmRlMGJmNDAxMmUwZjdlMGY2ODA0NzczIGxlZ2FjeS10cnVuaworNTExMzggZjVhN2Y0ZGQ5M2UwZDg3NWQ4YTYzNWI0MmFlNzY1YTlkMDc4NTFkZSBsZWdhY3ktdHJ1bmsKKzUxMTM5IDk5Nzc4OGRlODY2NzMzMGNlOWYyMmExNmU5MDc5ZjFjNGYwM2VhODMgbGVnYWN5LXRydW5rCis1MTE0MCAyNDg1ZWY0YzVkNDlkMmJlMDliNjMzMmY2YmZmNTI3NzdkMzYxMDYwIGxlZ2FjeS10cnVuaworNTExNDEgMGJjNmNmYjZiNWZiMjFhZDE1NjhjZWI4MzRkZmM0YzAyZGU0OTQxYSByZWxlYXNlMjQtbWFpbnQKKzUxMTQ3IDllZDU2MGIzNTEzOTgwZDRjNjQzY2JlNTM3ZGQ1ZTA5ZDg5Mjg4NTkgbGVnYWN5LXRydW5rCis1MTE0OCAyOTBjNTgyYTIyZDA0Mzk4MjM2MTY4NThmN2M5NWViOWQ3ODVjNzI1IGxlZ2FjeS10cnVuaworNTExNDkgYjY3ZjUyMmQ3NmQ3OGQ4MDAyOWU1NThjNzMzNmU5MWZmNDhlOTY4NCBsZWdhY3ktdHJ1bmsKKzUxMTUwIDE0Yzc2OTQ4OTUzZDVjNWY3YzY0ZDIwZTMxYTRhMzYyYzk3MWI2MTMgbGVnYWN5LXRydW5rCis1MTE1MSAyZjAzMTY0OGU1ODc4NDQ5N2VlMjVhYTIxOTExYjAzZTZkYzJkMTc2IGxlZ2FjeS10cnVuaworNTExNTIgZDE1NDI2MGY0NmU4ZjdkNzc3ZDllZGE0ZGYzMzUyNDViZWMwYTY0MiByZWxlYXNlMjQtbWFpbnQKKzUxMTUzIDU2YzBlMmY1OTZlNzZmMWQzMGYzM2YwMWJkYzM2MjkxOGMwYzBhMjggbGVnYWN5LXRydW5rCis1MTE1NCA4ZGM2YmUzZTExZTAwYTdjNzZlMWViODU1MzgyMmFlOTYwYjhiNDBlIHJlbGVhc2UyNC1tYWludAorNTExNTUgZGU0OTdjNDFlOWFkZWZjOGI2ZDQ0Y2QxMWNlZWYwNWE5NjM2MWZjNyBsZWdhY3ktdHJ1bmsKKzUxMTU2IDU2OTE2MjQyNjlhNWE2MDY3NmZiYTVjNWY2ODQwMGMxN2YyZGZhZGIgbGVnYWN5LXRydW5rCis1MTE1OCA5ZDA4OWFhNThlMmY0YjVjZTRjYWQ5YzRmNTFkMzkxYzNjMmFiNjVjIGxlZ2FjeS10cnVuaworNTExNTkgODAyMjkyN2MxN2E4NDY0Njg1ZGU1MmZiNjRhZjBiMzIzNTQ1Yjk4NCByZWxlYXNlMjQtbWFpbnQKKzUxMTYwIDViOTY5MmY2NjI5ZjQwN2FkZTk0YzliNzg4M2VhZjBjOGYwNjAxZWYgbGVnYWN5LXRydW5rCis1MTE2OCA2Zjc3NTE4YjYzN2RiM2I4ZmY5ZmUwOTFiM2VmMzliNTc5OTYwODYzIGxlZ2FjeS10cnVuaworNTExNjkgYjk1YjlmNDE1N2E4MjIxMzMwMTIxOGY1NWQ0ZmRiNzYzNTAyOThkZSBsZWdhY3ktdHJ1bmsKKzUxMTcwIDVjM2Q0OTM4NTgxNmQ3MDZmN2EyMmQ5N2E1MDg4OGFmYjlhY2ViZTcgbGVnYWN5LXRydW5rCis1MTE3MSAxOTkzODhiNDZjODNhMDBiZWQyZjE4ZmY2YjEwZmZjMGI5NjQyYmVmIGxlZ2FjeS10cnVuaworNTExNzIgOWE4MDgxY2Y0YTcwZGFiNDZiYTBmMTA2MzEwY2MyMTkwY2JiOWQzNyBsZWdhY3ktdHJ1bmsKKzUxMTczIDBmM2FkNWI5MzZhODU3MmJmZTdjMDdkOGUzNzUzODY3M2YyMjg3ODQgbGVnYWN5LXRydW5rCis1MTE3OCA3NGQyM2NkMDQ0MjEwNGZmOTc1Yjg1ZTFiNzRmNWU0ZWEyM2Q2ZTJiIGxlZ2FjeS10cnVuaworNTExODAgN2Q2YjJlMDRlNDM5NTQwNjAwZTk4NTkwYTI4MzFhZDg1OWYyODgxMCBsZWdhY3ktdHJ1bmsKKzUxMTgxIGZlZWU2NTgyMDExZjE3NzZhNmUxZGU4OTVmYjMyYjNlZTkwZDdjYTUgbGVnYWN5LXRydW5rCis1MTE4MiA5MjIyZDBkYWFiM2M2YWVkZWIwMWE5NDc1MTQ3MjUyN2Y4NjEwNTRiIGxlZ2FjeS10cnVuaworNTExODMgMTU2YjI4ZjBmMmQzNWFjMDBlODJjNjNkMmExNDAxODJjOWM3ZWM3NiBsZWdhY3ktdHJ1bmsKKzUxMTg0IGRkZWE0ZDM3YzgzY2E0NTFjMzA3OWNhZDg1NWQwNGU1ODliODMxZTkgbGVnYWN5LXRydW5rCis1MTE4NSBiOGUzN2UwMjY4ZjJjYWMwNDJkOTJkMTYyMDE2YTQzYzEzOGY0ODYxIGxlZ2FjeS10cnVuaworNTExODYgMjZhNmJlZGQxN2UyMWRiMTA2OTczNmRlMzI1MjU2NmM1NmRlM2NjZCBsZWdhY3ktdHJ1bmsKKzUxMTg3IDNjMmJmNzk1MjZiZTg5ODE0Y2QwMjE3MTA0MDM0MTg3OGJiZDNmNTggbGVnYWN5LXRydW5rCis1MTE4OSBkOGZhODEwY2ZkNTRkZmQ4ZjI3ZWVhM2JjMjJhMTUxOGQwM2IwMWMwIGxlZ2FjeS10cnVuaworNTExOTAgOWYwODUxNmE0ZDBjOWU5OWQ3ZjRiZDRlNDc5MjIxM2UyMmE4ODNhMSBsZWdhY3ktdHJ1bmsKKzUxMTkxIGVhZDQ4YTgyMjI5NWM4M2UxZjFlODE0MWM3OWJiZWFhYWMyNzBjNWMgbGVnYWN5LXRydW5rCis1MTE5MiBlNTVmNmQ3MjI0MDRmYTkyYjJhNDNjNzJmZjIxMzI3ZDdhNDcxNGIyIGxlZ2FjeS10cnVuaworNTExOTQgOWIzMjYwZDgzNTU4Nzk1ZDFhMWQzMWRiOTU4ODFiNjI2N2VlY2VhZCBsZWdhY3ktdHJ1bmsKKzUxMTk1IGRlOWUxYTVkY2E5MzY2MWE3MDEwZTc3NjAxMTg3Yjc2OWQ5NzNiOTggbGVnYWN5LXRydW5rCis1MTE5NiA4ZWQ2MmRiMTkwNWM0ZDNlMzhiNzVhZjcxYjVkOTEzOTUzZjE3N2ZlIGxlZ2FjeS10cnVuaworNTExOTcgMmFjYTRmMDQwMDEyY2ViMDhhY2YwNWNlOWE3ZGMyYjM4NjUyMzczOSBsZWdhY3ktdHJ1bmsKKzUxMTk4IGJlMTA3YjA0YzI1MjViNmI4MTEyYTIxYmE2NTQxMmRmMzAwMDA1MDkgbGVnYWN5LXRydW5rCis1MTE5OSA2YWFmNTVmNGQ3YTNiNmQzNWZkOTEzNzA1M2QzOTViYWE4NDI0OTUxIGxlZ2FjeS10cnVuaworNTEyMDIgNmFiNGMzOWZkN2EzODNmZDlkOTQyZmNkOGY5YjdiZTg4NDU4NjA3ZCBsZWdhY3ktdHJ1bmsKKzUxMjA0IDg2NDE3MjUxNWVlNzZhM2I0NWRmMTQ4ZjY2ODJlOWMzOTMwM2I4ZjQgcmVsZWFzZTI0LW1haW50Cis1MTIwNSA0OGZkMzg4NzM0NjM2ZGExYWQwMjNiZTg4NGMzNDRhYWE2MTNjMzQyIGxlZ2FjeS10cnVuaworNTEyMDYgMTA4N2RmMDBhNmU4N2I5MWQ2Njc4NzI1MmNkNWE2YmRlMDBlYWMwMSBsZWdhY3ktdHJ1bmsKKzUxMjA3IGU3Nzg3NTdkMzMzMDcyMDE0NWU3NGZkYzVkYjAzZTJhOTVmYWEwMDUgcmVsZWFzZTI0LW1haW50Cis1MTIwOCA3NzkwY2QwY2FiZDA0YzlkMTFkN2U4NTZmYjM2NWU3Y2M4MDRlYjk0IHJlbGVhc2UyNC1tYWludAorNTEyMTEgNjU0YzM4MGNmOGI5ZjA3OTE1NmUzMjExMWQxNjJhZDgwM2M4OTMxOSBwM3lrCis1MTIxMiBmNjliZTNjNmEyZDQ2MzY0OWJjNTY4NDY5Mjg4Mjk0OGEwNmM5NDU2IGxlZ2FjeS10cnVuaworNTEyMTUgYjk5NWUyNzYwZGE0NzJjM2I1OTBkMzY5M2I4ZmQ2NTY5MTQ3MzRlMiBsZWdhY3ktdHJ1bmsKKzUxMjE4IGUxMWNhYWQ3ZTAyOWRjOTBiOGE3ZDNiODY5NGM4MmQ5NDc1MWQ4MzQgbGVnYWN5LXRydW5rCis1MTIxOSA5ZjM5MDg4MmEyYzNhNTFlMDg3ZDFjOTE1OGQ5MjA4Nzg5NGM2YWUwIGxlZ2FjeS10cnVuaworNTEyMjAgNzFiMGFjODBhMTM1ZTNlMmJhY2EzNjEyYjIzMWI3NmU2OWNlYzc5NiBsZWdhY3ktdHJ1bmsKKzUxMjIxIDIxNzlkOWYxNDI3ODE3M2JlOTVkYWIzZGUwYmFlYzcwNWU3YjdiNjMgbGVnYWN5LXRydW5rCis1MTIyMiA4NDJiZDYxMzRlOWQyMWEwMTNkYTdmNTkxM2M1YjZlNTU4ODEyYmZjIGxlZ2FjeS10cnVuaworNTEyMjMgYTgwZGY1MzMwNmYwZGNmZjc5ZGMxOGQxOTZhYmRiODg2Mzk3ZGVjNyBsZWdhY3ktdHJ1bmsKKzUxMjI0IDZkNTM2ZDQzYzFhMDY1NGM0NjY0MTk5MzQwZWFlM2I1M2YwMWE3MGQgbGVnYWN5LXRydW5rCis1MTIyNSA4MWM2YjBlZDMxODhkZGNjMjlkMjFlMDdjZjYzNmRmNzRmMjE2ZDA4IGxlZ2FjeS10cnVuaworNTEyMjYgMjdmOWI0ZmVlMTRmN2I2ODA4YzdhZjI2YTA0ZmIyYmVkOWNmNjcxYSBsZWdhY3ktdHJ1bmsKKzUxMjI3IDlhMTI4OGQ4MjAwZjhjYjNjZTIyMGE2ZjJkNzlkODhhYTJkMjc2NDIgbGVnYWN5LXRydW5rCis1MTIyOCBlZDY1NzY1ZWI2NzliNTAzMzE2NGYwYjRjYjE0MmFiOWE1MjA2MzA2IGxlZ2FjeS10cnVuaworNTEyMjkgNmE4ZjAxNjYwYTNiMmRlNGYwOGJiMjJjNTNjNjMyYjcyYmUzNDg2OSBsZWdhY3ktdHJ1bmsKKzUxMjMwIDhiOTFmZjY5OGY0ZmYyZjNkZjU1NmJlNTIxZDEyMDFiZDY0ZDhjOGMgbGVnYWN5LXRydW5rCis1MTIzMSBkZWI3NDhmMzNjMWRiNTJlYjA4NGYyYmFlM2VjM2QxY2RjNGI4ZDdmIGxlZ2FjeS10cnVuaworNTEyMzIgY2UxMWM2YzE5MzlkYjY4NGYzMDY3ZWE2NDRiNmQ0N2JjOTFlNDVkYSBsZWdhY3ktdHJ1bmsKKzUxMjMzIDE1MTA4NjZjOTIwZWI4MmU2Mjc3M2I1YjA4Yjc1MWMxODgxYzNlNTMgbGVnYWN5LXRydW5rCis1MTIzNCAyZGJhZDUzZGUyYjEyNzE3YzA3OTBiYzY0MWIwMzQ3YmJmZWYxYTUxIGxlZ2FjeS10cnVuaworNTEyMzUgNjhiZWQ1MzQ4NDU0MDIzY2NlYmI0MDJmNWIzNzA1Y2U4MjkzN2ExZSBsZWdhY3ktdHJ1bmsKKzUxMjM2IDZjYWZkYzgxY2ZkZTg2OThlNmI4M2U2ODJmYTI0YTI2OThmNjIxZjggbGVnYWN5LXRydW5rCis1MTIzOCA0OGYxZGJjNTc4NDUwNjFmYWE1MGE1YzIzMmVjNTNhYjE2NTJlMzY0IGxlZ2FjeS10cnVuaworNTEyNDAgZWNlOTdjZmU2MDgzN2IxNzg2ZWRmOTM3MmY5ZTJkOWM3ZjJjYTEwYyBsZWdhY3ktdHJ1bmsKKzUxMjQ1IGM3ZmYwMmMxNTU5ZmQ4NjZjYzA4N2FhYzA2NTg0OWIxY2NhMDNmYmYgbGVnYWN5LXRydW5rCis1MTI0NiAzYmU2NjI3MzIzYjlkM2EwNWVhNzBlMTNkOGY2YzFhMmEyMmUxZGViIGxlZ2FjeS10cnVuaworNTEyNDcgNTc0ODIxNzZlMTAxMTY2M2UzZmM1MDkyM2M0NGIzODhkZDhiZjliOCBsZWdhY3ktdHJ1bmsKKzUxMjQ4IDcxYmFhMDY3NjdkZGMyOWY3ZDY5MTFmYTljNmU1NDVmZWE3NjcwYjkgbGVnYWN5LXRydW5rCis1MTI1MCBkYWVkYWFjZjdlMTEwYTNjZDFhMjM2Njg5MDE0OWI3MzJiMWMxY2NjIGxlZ2FjeS10cnVuaworNTEyNTEgNTMxYjM2NGJiYzBlMGQ4MTVjZmVlYzIyZjA5ZTI4MTYzYzQ3ZDE4ZSBsZWdhY3ktdHJ1bmsKKzUxMjUyIDgxNThiNGUwYzdiOWI1YzNiN2QxYjk5MGE3MzQ5ZmY4N2QwZDFkZmUgbGVnYWN5LXRydW5rCis1MTI1MyBiYzc0YWZiOGU0ZWY2MWQ0OGJkOGYxOWRiNTY2ZmQ2MjliOGU3MjQxIGxlZ2FjeS10cnVuaworNTEyNTQgMjRkMmNjMzMwMDBjYjE4NWY1MWVmMzVlM2FkNGQxM2M3ZjA4OTYyMCBsZWdhY3ktdHJ1bmsKKzUxMjU1IDI0OWE1OWFjYjZlZmNmMDIwNGYwOTY5ZTc2ZjU2NTZkNGIzZGI0YzEgbGVnYWN5LXRydW5rCis1MTI1NiA3MTIzMWJjNDg2MjJlMzZkZWUzNjAxMTdmYzIxMjc5NWQ0MDk0M2JhIGxlZ2FjeS10cnVuaworNTEyNTggMDM1NmRkOWNjMjc0Mzk2MTg2YzU4NTNhZGJiNzZlMTc2YTQ3ZjBjNCBsZWdhY3ktdHJ1bmsKKzUxMjU5IDMxNzYwNWYyY2Y2Zjk5ZTFkMTZkNWIwOWQ3ZmVlNjRjYTIyNTQyMTkgbGVnYWN5LXRydW5rCis1MTI2MCBkNTIzMWVjNmRhYzM5OWQzMzBkMzliMjNhMmJkNTc4OGIxZDYxZmQ1IHJlbGVhc2UyNC1tYWludAorNTEyNjEgZTc3MDFiMDVmZDllMjNmZDI0MDQ3NGRmOTkyNWY3MDY3MjA2NGJmYyBsZWdhY3ktdHJ1bmsKKzUxMjYyIGRmOTQ3OGJlMDYyNzlhMDQ3YTFkYTNhNjU1OTc2ZTVhYWQyODI0M2YgbGVnYWN5LXRydW5rCis1MTI2MyA4YzE2Y2JlZjc5MzI2MzU3MDIwZWFlZTZjZGYxZjYxMTFiMDIxMTE3IGxlZ2FjeS10cnVuaworNTEyNjQgYWI4NTM5YzA3YjFiM2M2ZTkyODNiNWU4ZTY3OTFlYTFmZTZlM2JjOSBsZWdhY3ktdHJ1bmsKKzUxMjY1IGMwYTU4YTg1NWFjMGUzODEzNmE1ODhlNzUxODZkOWMzMDAxMzQwMTEgbGVnYWN5LXRydW5rCis1MTI2NiA0MjE4MjZjOTQxMDRmMTNhZmY3NGM5MDdkMTVlOGNkNTVmMWYzMDkzIGxlZ2FjeS10cnVuaworNTEyNzQgYTZhNmRmZjE3OTM1NmUyOTgxZmI1NTJmMzkyZTQ0NGVjNTM3NDE0MSBsZWdhY3ktdHJ1bmsKKzUxMjc2IDYzNWIwOWIxZjU0MmUyOTE3NTI5NzZlM2Q5N2YxMmVjMGJmZTY2ZjIgbGVnYWN5LXRydW5rCis1MTI3NyBhNTUzNjllMjNmMDY5NGE1ZTc5MzNlMjAwMGVhYTNmYjZjZTE3ZDYzIGxlZ2FjeS10cnVuaworNTEyNzggNGU1YjgzYmE3YzJhNmFmOWNhMDFiY2Y4MzUzMjUwY2IxNWU2NDVmOCBsZWdhY3ktdHJ1bmsKKzUxMjc5IDY0ZmI2OGRjYTg5NjQ4YjU5ZDAxNjM3MTgzMWVhODIwMzIwYjk2MzYgbGVnYWN5LXRydW5rCis1MTI4MCAyMzEyZTE3OGIzNGQ5Nzk4OGNmZDZlNWJkZDY1ODRkODljODNlMWIwIGxlZ2FjeS10cnVuaworNTEyODEgMjU0YTE4NjkzN2E5YjQ5OWU5NzE4MmUzN2M3YmVjYjQ3ZDc5M2NjZSBsZWdhY3ktdHJ1bmsKKzUxMjgyIDE2MGI4M2M3MWQ3YTBhYzk2MDdiOGM5YTA5NjM2NjQ1MzU4N2FlMjEgbGVnYWN5LXRydW5rCis1MTI4MyBhOTUwOTAyODEwMzIxMjFhMDAyZTc2ZjQxYTZiYTU3YWRiNzIyYmFmIGxlZ2FjeS10cnVuaworNTEyODQgMTRlYzljZmQ5NzYwMGUyNjE0NjY2NDExZmMzYWQ2YjdmNjU2MDY3OSBsZWdhY3ktdHJ1bmsKKzUxMjg1IDM1MmZmZTc3YjcxZGQwZTdjYThmNjY3YTllNmEyMDg2ZGFhM2IwNjAgbGVnYWN5LXRydW5rCis1MTI4NiBlYTFmOGExMWE3MmI5YTJhMDAwYTI1NDRmODdjMTFmN2M2ZTM0MDE1IHJlbGVhc2UyNC1tYWludAorNTEyODcgOWQ2NGJkNzQ4MzIwYWRiNDBjN2UwM2JhYjkwNGZjMDg1NGFhZjA5YiBsZWdhY3ktdHJ1bmsKKzUxMjg4IGNkNjdlMTExZTFiODViN2UxNWViMWJlNGY1OWQxOTQ3MzM5NmExYzUgcmVsZWFzZTI0LW1haW50Cis1MTI4OSAyMDdlNDg3ZjQyNWRmZTQxYzYxOTkwOWU2YWQ4ZGYwOWUxNTVlOTM3IGxlZ2FjeS10cnVuaworNTEyOTAgZThjNDZjYzk5ZGY1ZWRkMmI1MzIzM2E4ODMxNDJmOThmNWQyZWUzNyBsZWdhY3ktdHJ1bmsKKzUxMjkxIDc5OWJjZjBjY2JmZDMxM2ZmNTk3MjdiNmFhOTdjZTBlNmFkY2JmNzAgbGVnYWN5LXRydW5rCis1MTI5MiAxNDlkZTcyNTY4NjRjZjkyMDBkOTcyMzJiNmYyM2RjOWQ1ZDc4ZDkxIGxlZ2FjeS10cnVuaworNTEyOTMgODQ2NzhmMDc1MGI4NDQ4MDQ3MDhlNGYwZDc0ZmQyMWQ1ZGQ0YTljOSBsZWdhY3ktdHJ1bmsKKzUxMjk1IGU5MGU3ZTc2OGNiMzUyN2FiZjIwYjRiMTE4N2Q0ODYxZjc3NDFmNDggbGVnYWN5LXRydW5rCis1MTI5NiBlNmZjNGY5OWE2MWJlMTlhYWI3YTNlYmMxZDkyYzFiZjMxOGVhZTlkIGxlZ2FjeS10cnVuaworNTEyOTggNGY5MGMxZDUzMGQ5NWM5YzkwNjgyOThkMDliMjFjOGE2OGNlNWViNyBsZWdhY3ktdHJ1bmsKKzUxMzAwIDY0YjMzMDYwZWYwOWQ1YTQ3MGY0MjY3MGE1MzY3MTMwMDZjOWQ0Y2QgbGVnYWN5LXRydW5rCis1MTMwMSBiZjViYWUxZjAwYWQ0ODVlNDMyMGUyOTU1ODQzYWExMDg2ODFiYjBiIGJjYW5ub24tb2JqY2FwCis1MTMwMiBiZTkwZmE3YWFjZGE3OWNjNzNkZGRkZmMzYWJhMjA5ODllMjkzNzVmIGJjYW5ub24tb2JqY2FwCis1MTMwMyA5NWY2NTY2OTBhMDAwODg5Y2I3NDQ0YjhhYzdjMzQ4MDEwZjcxYWU3IGxlZ2FjeS10cnVuaworNTEzMDQgMjA3ZTc3YzE0MzMwNjRiNmNjZTI3MWVhMDZhNjY0MzgzOTk2NmYxZCBsZWdhY3ktdHJ1bmsKKzUxMzA1IDkwOTdlY2ZlYjM0NTBjMDNiNWEwYTQ4NWYzYjllN2M2YTA2NzIwZjEgbGVnYWN5LXRydW5rCis1MTMwNiA2ZTdiM2RkNThmOTg3MTAzYmM3NWNmMTY0MDA5N2U3MmU2MzQ2YTRjIGxlZ2FjeS10cnVuaworNTEzMDcgOTEzMzA3NmMwYmY5NzFlOTZiZWRjMmU0ZTg5NThkZjkzY2I5MjY2ZSBsZWdhY3ktdHJ1bmsKKzUxMzA4IDJkZmUxYzYyNDM5N2E0ZGExNjI2Njk0NTI4MDFhMWE2ODk5MWU5MDggbGVnYWN5LXRydW5rCis1MTMwOSAzNzFiOWNkM2FmMTU2MDI5NWQwM2RjNTdlZTQ0ZTIyYzg1ZmE2ZmExIGxlZ2FjeS10cnVuaworNTEzMTAgNzk4YmVjYWIzOTAzYzRhYzllZTQyOTA5YmE3Nzk4NjQ3OTE5Zjg3ZCBsZWdhY3ktdHJ1bmsKKzUxMzExIDI0Y2FiMjI4YjAzOTZiNzAwMjVjYjk3Mzk0MjRkNzY0MzAzNDNkOWQgbGVnYWN5LXRydW5rCis1MTMxMiBiNTA3M2I0OGM5MjVmMWE5NzYzMDM2MjNiNDdlMjQyZWY3MzgxMzVhIGxlZ2FjeS10cnVuaworNTEzMTMgZGE0YmUwNDA4YjYyNTcyOTZhNjg3NGRmZTVlMTJiNWZmMzRhMTczZCBsZWdhY3ktdHJ1bmsKKzUxMzE0IGEyN2JkNTBlYjBmZDg3YjBjZTM5MDZiZmI0ZTU5MDYyN2Q4ZmRjYjEgbGVnYWN5LXRydW5rCis1MTMxNSBjOGNlMzk5NDVkZjVmODc1NzliMGI2OWMyMzNlMGRhZDBkNDNkYTZhIGxlZ2FjeS10cnVuaworNTEzMTYgYTVkMGY5ZmJjYmY0YjgyNDI1ZDAyNTBjZDA1OTNlZjFmNzlhZjU0NCBsZWdhY3ktdHJ1bmsKKzUxMzE3IGQyM2I2NjdmMDRkYTJiZTFlNmMxNzc2ZGVhZWEyMTU0YWE1NjRjYzIgbGVnYWN5LXRydW5rCis1MTMxOCA0YmIzNGViNDg3MzY3NDcwZDRjZjI2ZDJlOTIzN2FhNWU5YjljNWVlIGxlZ2FjeS10cnVuaworNTEzMTkgMTM1ODQwNGQ2ZGQ5ZWU5NDUyZmNjMjk0OGZjMWE5YjdjM2FjYWRmMyBsZWdhY3ktdHJ1bmsKKzUxMzIwIGZmZTdkM2FiMzVhODM3MGQxNjMwMDMyMjIyYzQ5MDQyNzdiMjk2OGEgbGVnYWN5LXRydW5rCis1MTMyMSBmZTgwYmIxMDJhYjZkNTFlMGY5NGVmZTA1ZWU0NTIxMjg0MWE2ZjhjIGxlZ2FjeS10cnVuaworNTEzMjIgZDgyMjE4NTU0ODk3MWFiN2Y4MDgzMzMyNjE1Mzg3OTAzYjc3YWY1MSBsZWdhY3ktdHJ1bmsKKzUxMzI0IGVkZDgzZjE2MjQ1M2FhMzA4ODhhNjU3ZTQzMmJhNmYyNDBmYTc5NTkgbGVnYWN5LXRydW5rCis1MTMyOCBhYWZlMWFkNzNlZDc0OWJmZmE2M2ZlYThiYjJjN2Y1YTIyOGYzZjQ3IGxlZ2FjeS10cnVuaworNTEzMjkgZDk2NjBmNTFiMDU2Yjc0Zjc1NGJlZGEyZDE3NTQ0NThmYTczMzc4YyBsZWdhY3ktdHJ1bmsKKzUxMzMwIGE2YWZlMGVkYTcxMWQ5OTZiNzI2YTU0OGMwNTc5M2VjNTViNmU4ZWIgbGVnYWN5LXRydW5rCis1MTMzMyAyZGM2NGQ1NzBlOGQ3YTQ0OThhYjg1MDEwOGM4NTcwOWMyNzZkZjkzIHJlbGVhc2UyNS1tYWludAorNTEzMzQgYTM1OGFmMjFhNTRhOWJkMzlmNTA2ZDcyOTFkZjM0Mzg3OWQxN2E4MCByZWxlYXNlMjUtbWFpbnQKKzUxMzM1IDhlODhlY2JkNDA4YmZjOWNkMGJmZDM1NjFkNzZkZGVmYTRmN2ZmNDggcDN5aworNTEzMzYgOGY1Yjk5ODJiZWJhMDQ4YjRiZTU2YjA2Yjg3ZGJmMTNkZjNjNjg5OCBwM3lrCis1MTMzNyBlNGE2NDI5YzEyMTRlZGU5MTFjYWE1NWYwZDgwNjAwNTg0NjljMDNmIHAzeWsKKzUxMzM4IDg0MWUwYzg2ZTAwZTQyM2Y4MTcwOTJlMmZmNWNkYWZhNGI4MTAxNDEgcDN5aworNTEzMzkgY2I2NzNlZDUwN2E3OTQwMjViZWI0YTM3YWY4N2RlZjE2ZGQzODBhYyBwM3lrCis1MTM0MCBiMmZlMzZiYWMzYTE2NDRlMjViZDVkODZhOGQxNDE1N2Q1NzMyYmFlIHJlbGVhc2UyNS1tYWludAorNTEzNDEgMWE2ODliZTI3MzI5NzMyNGMzZmEzZGQ1ZDBiODA5OWZhNTBjZTllNiByZWxlYXNlMjUtbWFpbnQKKzUxMzQyIGVkYjE2MjEwMDk3OWI4NzkyN2JkZmVkMTU4Y2ViYjk2NDRlMDU3YmUgbGVnYWN5LXRydW5rCis1MTM0MyA5YmMwYmMwYWQxYmZlNmM5MDk2ZTdiMWNjMmY0NzhjYTlhMjJjNTgzIHAzeWsKKzUxMzQ0IDAxMDM0MDE4ZThiMmY4MGQ4ZmQ1YzgyOTg4ZDIzODJhYTNkZmIzMGIgcDN5aworNTEzNDUgNGFiYjQ2ZGQyYjYwN2Y5ZWFhOWRhZDU2NzZlYWM4OTM3NjY5NDQ3ZCBwM3lrCis1MTM0NiAxZWRkZTIzNDlmNzg0NjZmYmMwMDljNDE3MjM4NjczYzI4Mjg3ZGViIHAzeWsKKzUxMzQ3IGY2ODI2OWVkNDYxZTVkNjIwOThhMzI5NTE3ZjU4OThlOTU1NjBkNTQgcDN5aworNTEzNDggNjdlNDU3MDRjMDdlYTVhMDRhZjBlN2IxYmRhMDJkZDgxN2RlMTMxMyBwM3lrCis1MTM0OSAzMDIyY2Q1ZTAxMDA0NGMzYmFkMWQ2YjgwMDBhMDE1M2M2M2ViNGVmIHAzeWsKKzUxMzUwIDViNmY4MjEwMWM0MDViMTc1NmRjODAyZmYyMjE1Mzk0YmVhODBmMTYgcDN5aworNTEzNTEgYThiYjFhZDdmYzZmYWRjOTE0NGY2MTcyMmMwODYwNjEwMThiMzJkNyBwM3lrCis1MTM1MiAwYTFmODdhODU1YjNlNjE1YjdjOTgyMmFlZTBjMjQ3MTBkYzY2MGQxIHAzeWsKKzUxMzUzIGZhMjc1ODQ1ODY2YzhhN2Q1ZTVlOWIwZmU3MjM0NzRhNTA1NWQ5ZTkgcmVsZWFzZTI1LW1haW50Cis1MTM1NCBhODczMjBlYmQwZTY2ODk2NGJlOGE3NDUzOTUzMGY4NmI0MDE3ZmE2IGxlZ2FjeS10cnVuaworNTEzNTUgMWZmOTNiYTQwNDUwODgzNzBkZGYwNGQ0ZjIzZTNmNjNjOTlhYjM2NCBsZWdhY3ktdHJ1bmsKKzUxMzU2IDMxYjlhNGI0MjUyOGVjZmE1MWZhMmNkNmI1MGViNjBhYWI4ZjVjNzAgbGVnYWN5LXRydW5rCis1MTM1NyBkZjg3YjYwNTY3Y2ViNTI0YWI5YTIzMzRlNjkwYjNkY2ZlM2ZlYjhkIGxlZ2FjeS10cnVuaworNTEzNTggMDQ1ZTIwZmY4OWViYjcwOTMyMTQxMjdjNjVkNzMyMzA4NDBiMDkwOSBsZWdhY3ktdHJ1bmsKKzUxMzU5IDg5YjczMGI3MTQzNGY5Y2VhNDg0OGFiYzg2NmNjOGU4M2M4Y2Q0ZmIgbGVnYWN5LXRydW5rCis1MTM2MCAyMTBjNWI1NTc1Y2I1Y2EwMWQxYTAyYzliNjk0ZGNiZWI2YWFhYzc0IGxlZ2FjeS10cnVuaworNTEzNjIgYjVkNGYzYTczZGUwNGY3MGU3NWE1M2RmMTc4NGI4N2U5ZGEyZTU2YiBsZWdhY3ktdHJ1bmsKKzUxMzYzIGYzZGVlNjI1ZmM0ODNhNjNkZmU1ZjQ3ZDUzODgzODIyMDJjY2FiZjEgcmVsZWFzZTI0LW1haW50Cis1MTM2NCA0YzZmNzdiNTY0NTJkNmE0OGNmMmFlY2I1OTAzY2ZkODQ3ZGY2ZDQwIGxlZ2FjeS10cnVuaworNTEzNjUgY2E3N2RlMzVkYjYyMGExNzUwN2RkNzM5MGMzOTE4YWE4NzYyN2M0MyByZWxlYXNlMjUtbWFpbnQKKzUxMzY2IDdmYjU2YWFmNTJiYmNlYTU1YzIzYTVmNzE5MzAxODg1MmQzNzkzNmUgbGVnYWN5LXRydW5rCis1MTM2NyBiODdmZTExZmI3ZTI4YWUyOTNlZjhiZGE2ZWY4ZDcxNTI4ODdlNTFiIGxlZ2FjeS10cnVuaworNTEzNjggMGFkN2U4NWM4YzA0ZThhNjdkNzE1NjdlNjdjOWU3YTM0OTM4ZmI3ZSBsZWdhY3ktdHJ1bmsKKzUxMzY5IDc5YmJmYTFkYmQxYmIwYzZhMWZiYWZmMDcxMjBiNTk0ODcyMTEyOTcgcmVsZWFzZTI0LW1haW50Cis1MTM3MCAxYWMxNGQ0M2VjNjQ0MWU2Y2IyMjBiMzE4ZjI5ODY3Mzk4MDg3ODlkIHJlbGVhc2UyNS1tYWludAorNTEzNzYgYzRlN2I0MDcwZjA3NTQ3ZmRiMTM0ZDVlNmNiOTUzYjMyNjljZThhYyByZWxlYXNlMjUtbWFpbnQKKzUxMzc3IGU3YTViMjg3ZjI3YzFhOWVlOTAxZDUyMTExODg0NTZhMjY4NWU0MDIgcmVsZWFzZTI0LW1haW50Cis1MTM3OCBjYmI0MzVjNWMyMWM2NzAzZjE5NzAzOGU3NDdmNTE0ODk3ZDljMzhhIGxlZ2FjeS10cnVuaworNTEzNzkgZGU0ZWYxNzcyNzhiZmY4NTdmNzExNjNkNDcwZTFkN2YwNTgxYmU5ZCBsZWdhY3ktdHJ1bmsKKzUxMzg4IDI1NTFlYjU2NzFhNDFkOGE0NmI2ODEzZmYxNDg5M2E5NDE5MTk4OTggcDN5aworNTEzOTAgNjMyMzdmY2VmZDk5ZWU0ZjY3NTcyMmQ1YzI3MTA2NTlhYTVkZDhjYiBwM3lrCis1MTM5MSBjZmIzODQ3M2NhMTE5OWQ5ODMyYjNhZWJjMjM1NGFkNjExNGFhYTA4IGJjYW5ub24tb2JqY2FwCis1MTM5MiA4NDUyZDVlZTdiMDNiYzJlYzA2NDkwMDY2MDhiZDE0NmMwOTQ1Nzc0IGJjYW5ub24tb2JqY2FwCis1MTM5MyA0YzY3NGEwN2IyM2MzNjBmZjliMTg4YzgxYWZhZmZlZmFiNWM5ZWIyIGJjYW5ub24tb2JqY2FwCis1MTM5NCBkMjNiN2NiMTcwMGI1MGVkYWJkNDVkMGFkZWY4M2FhZjQzNjIxNTAzIHAzeWsKKzUxMzk1IDBiNWQ4ZWFlM2VjYTA2MWI3ZWJkZTYyYmEzYTgwM2Q2YmYzODdjZTcgcDN5aworNTEzOTYgYzU1N2Q0NDc0ZjBmNGYwN2Y5YjBlYzJhZTc5ZDU4MmMyZDg2OTVlNiBwM3lrCis1MTM5NyAzZWJmNTYwNGY2MzIwZTViMWVlMmEzNjQ0Mjk1MzkxZDFkY2RjYjZkIHJlbGVhc2UyNS1tYWludAorNTEzOTggYjg4YjY5Zjk3YWNjMDA2MWFhY2QzYTY4YjIwOTZkYjM2ZDVkMTJlZiByZWxlYXNlMjUtbWFpbnQKKzUxMzk5IDdjYmNiMjJjOGI4YjJjOGE0YjYzNjBhMDVhMmI3NDkzNDA3MGE1ZTAgcmVsZWFzZTI1LW1haW50Cis1MTQwMCBhNzQ1YTJiZDQ4YWYwYjk0YjFmY2NlZDA0NWY0OGYwMDU2OGFiZThjIGxlZ2FjeS10cnVuaworNTE0MDEgMGFmNGZmYWJhMDNjMzJiNGNhNGMwNGZhOWMyZTMyNGM3ZDQ2YWU2ZCBsZWdhY3ktdHJ1bmsKKzUxNDAyIDg3ZDE1M2ZmYmI5OGI1YTgzYjVlNjhjZjIyMGU3YmQ3NmYyMGE1MjMgbGVnYWN5LXRydW5rCis1MTQwMyBiMGUwYTVlYjkwOWYxOTc5YmExMTQ1MDE4ZGM5NTNiOGQzMWQ4NmI5IGxlZ2FjeS10cnVuaworNTE0MDQgMmM0MDI2NzY5OTQ1NDk5MDdjZjgxYzVmMjJkODJhNDlhM2I5MzhiNiBsZWdhY3ktdHJ1bmsKKzUxNDA1IGJiZWYyZWNkZWUzM2ViYjgxOTAzMzIwOTVmOGRhOTQ3ZDNjMDYzNDcgcmVsZWFzZTI0LW1haW50Cis1MTQwNiBiZGVlNDU4ODhiNjQwYzk1NjFlZDNiOGU0ZWNkYzZiMDNmOGQ0ZjIyIHAzeWsKKzUxNDA3IGQyNDBjZTU2OTZmOWZlOGY4NTYxYTU1ZmY4ZDEzZGQyODE2MjYzOWEgcDN5aworNTE0MDggMTJjNDJmZjk5NDM3YmY3MmFkZTY3OTI2NzBiZDBiOGViZGUxODcyYiBwM3lrCis1MTQwOSA4MjcxN2I4NDg4OGUwNDZhYWI5Y2UzMTA5M2Y0NWYwNWYzNDM1NGE1IHAzeWsKKzUxNDEwIDBmMTM1YWZmYWJmMmM3YWY0MTY3MzZjMWIxMjQ4N2JhYmVkNDQ3OWUgcDN5aworNTE0MTIgNTk5YWJjMzFmNzcwYWQ3NWE3NmNmNzZiOTc3ZTU1MmNiZWFmOWYxYyBwM3lrCis1MTQxMyA5NjM0OTZjYmYzZDNjMGYxY2NlM2YwZmZkZTYyZjQ1MDA2MTAzYTZjIHAzeWsKKzUxNDE2IDQ0NjIyZWI1OGEyNWI2YWYwNjE4ODBmY2MwNTdhMWQ0NTg1MTliNzUgbGVnYWN5LXRydW5rCis1MTQxNyA1YjJjMWI2NWQzNWVlYTk4ZTA0YTQxODgzZmUwMjFiMTE4ZGZjNGFlIHJlbGVhc2UyNS1tYWludAorNTE0MTggYzMzMTkyZTJjMjViMTk0ZmRjYjg3MmFhNDBkMWRmMmI4YWJhNjU0ZCBwM3lrCis1MTQxOSAxNTRmMjU2ZmZmNDI5OTVkOWRhMTNkNzY3NGIzMzFjNGFiMjhmMTIxIHAzeWsKKzUxNDIwIDIyYzJlMjVlZDBlNDBiZWNjY2Q2ZGExZjAyOTE4YTJhMWFlY2UzYzAgcDN5aworNTE0MjggNWUxNDM5NDQ3NzBiNDFjYjI0ZWQyYzE5ZDllNTVlMTk2NDBhMzg5MyBsZWdhY3ktdHJ1bmsKKzUxNDI5IGVlZGEyNzA0MTMwZWY1MGIwNzNkOWU4YjYwODQ0MWViZWQ4NTIxZjUgbGVnYWN5LXRydW5rCis1MTQzMCA3M2EzMjkxYzU4ZGMxZWViNGVjNjUzNWY2MmZhNDBlYzZiMDIzMmU3IHAzeWsKKzUxNDMxIDQwYmJlNjY5YjA4OWVmYTcwZDZhMzFkNWMxNTRkNDU5MzlkN2NhMjQgcDN5aworNTE0MzIgOGRkNTdjNTNjY2Y2YjI5M2MzNGRkZjgxY2QzMzgwYzA1ZWNjODlhOCBsZWdhY3ktdHJ1bmsKKzUxNDMzIGRiNDJlODdjOTc3NmY3MDI0NzNhYTQzYjZlOGQ0NDg0YmI5MDdmNWYgbGVnYWN5LXRydW5rCis1MTQzNCAyZmZkZWUxYzM4ODQ0YWIwMTJiNmY5MjNkNDU1MjRjZWNjN2JkNzdhIGxlZ2FjeS10cnVuaworNTE0MzUgNmYxMDIwNzQzMDc3NGYxMzg2YzA2ZDY2N2I1NTRkZTk5NWU4MDg2MSBwM3lrCis1MTQzNiA4ZGQ3MTU3ZDJhMjJhMTkxMDJlNTQzYmJiZDUyNTk2MWIxZmE1YWI3IHJlbGVhc2UyNS1tYWludAorNTE0MzcgY2Y0MmE0NGM1NDllZGEwMTM5YmFkNDVlOWUyMmQ1MTgxODRhMTAyMyByZWxlYXNlMjUtbWFpbnQKKzUxNDM4IDM2NzRmMjBhYzc4MWY2NTdjN2ZiZTZjZTQzNDQ1YjdmYmM0NTE0ZTYgcDN5aworNTE0MzkgMTdmMWRmMTU1M2M5YWU0MjVkMmFiYzMxNTk0YzI1MTMyZmE4MDgwMCBsZWdhY3ktdHJ1bmsKKzUxNDQwIDUxMWRiNzFiNWMxNDg5YTM4NWFiNjFiMmQ0NjdjZDJjMjljMTZkZTYgcDN5aworNTE0NDEgNTM5MTRkNTQwYTY3ODAxODZmYzk3YWM3MWJiMjZkMmM1YThlY2MyZiBwM3lrCis1MTQ0MyA5ZGVlODFkY2I5YjQxOWI5Y2E3NzFhYTQ0ZWRlMmI1YjYwYTljMDdjIGxlZ2FjeS10cnVuaworNTE0NDQgNzgzYzVlMjgwM2Y5NTgwZmM4Mjc2YTBhY2E3M2U4ODQ3NTg1MjY0ZiByZWxlYXNlMjUtbWFpbnQKKzUxNDQ1IGM0MGZlODY1NjNmYzg4MWNlYTllMjIxYzBlYWFlMWMxNWVjOTA3MTMgcDN5aworNTE0NDYgZWQwZGIwZDZjYTk5MzgxYTI4ODdjODgzNTM0MzQ4YzM5MTViMjk3NCBwM3lrCis1MTQ0NyBlNjFiMjJiZjdhYjQ3NzI1NzBjOTcxYThlZmEzZTM1MzM1MzM1YTJmIHAzeWsKKzUxNDQ4IDAyYmJlZWMyNzE0ZjA0OTFiMDUxNTU2ZDEyNmM1ODA1ZTY0MGU1NzcgcmVsZWFzZTI1LW1haW50Cis1MTQ0OSAzOTgyNDc1YzUxNDRiYmM5OWUxOTgyYjZjY2NhNGRlMmYzYzAyMDA1IHAzeWsKKzUxNDUwIGU4YTY1YmJkNmEyOTJjODc0OGViMjA0NTY2NTY1MzM2NzIwNGRlNzIgbGVnYWN5LXRydW5rCis1MTQ1MSAzY2JlZDEzYzQ2NGQ5YzFkZTRjNWU0NDdjZDNlOTY3OWNhZjhlMTAwIHAzeWsKKzUxNDUyIGU3YjFhM2RiMWZlM2NkYmM3NjBlOWRmNTdiZDFjY2ZmMDNhNTk3OTggaW50X3VuaWZpY2F0aW9uCis1MTQ1NCBjNmQ5ZmE4MWYyMGZkY2QwMmMzNDNhYTYyMDI0ZTAxNWQ1MTNjNjIwIHAzeWsKKzUxNDU1IGYxOGQ3NzljN2NlYjY3MmVlMzdlNzgzZmQxZmVhNGFjZWRhZGVjZTggcDN5aworNTE0NTYgNWZkZGRkZDUxNmNiN2NjM2NhOGJkZTYzODYzY2U0MzhmZGRmMmY2YSBsZWdhY3ktdHJ1bmsKKzUxNDU3IGM4ZmY0MzgwMmYzMTRjN2Q2ZThkMjhiZDM5MzdmNDBhMzdiYmEwODIgcDN5aworNTE0NTkgZTg2YzBiMjliNGEyNmE0MmU0Y2U2NDY5ZjJjYTNlOWJmY2MzMDk1YSBwM3lrCis1MTQ2MCA3MTljNWRiN2JmYWQ0NWE3ZmE5MTdkMTViYTU2MzMxZmEwNTUzNDk0IHJlbGVhc2UyNS1tYWludAorNTE0NjEgOWNjNmE1NDhkZWM0OTQzZWMyZGM2MjY2YjA3MzMzYmFiODQyNTUwYSBsZWdhY3ktdHJ1bmsKKzUxNDY2IDJmNmI0MmFlYWQ5NGY4MWNlMmU2MGUzZjJhY2VmZThmMzRhOThkYmUgcmVsZWFzZTI0LW1haW50Cis1MTQ3MiA4ZDcxZjlhNmMxYzNhMmVhZjMyNzgxM2JhZGYyMGU5NGIwNmJhNWQ4IHAzeWsKKzUxNDczIGQ2NWU2ZGNmZGNiNTdlYmQwMTA5MzlmYmUxOThhOWE0Y2FkMzAxY2MgbGVnYWN5LXRydW5rCis1MTQ3NCA5ZjI3ODAwOTAyNmRiMzgzNGI1ZTJmMDYyZDQ3MGZlN2E0ODVmMmI2IHJlbGVhc2UyNS1tYWludAorNTE0NzYgNWZmNjk2ZjJhN2E1YWEyNTc3NzYxMTVkNDYxMzc3Mjk3ZTcwMzI4ZCBpbnRfdW5pZmljYXRpb24KKzUxNDc3IDQ0ZGEzZDI5NzEwNzliYmY3YjE2OTE0YzQ3YWRhODUwZGI5ZTVjN2EgaW50X3VuaWZpY2F0aW9uCis1MTQ3OCBkOTE1ODViMmNkYzEwMDc5NzhkYmZiYmIwNTQ1YTFkY2UzM2JmZjYzIHAzeWsKKzUxNDgyIDNlYTUyNzU4NzQxMzFlMDgyZTEyMzQ3ZWRiMDU5MzhmNTgyY2UzOGEgcDN5ay1ub3NsaWNlCis1MTQ4NiBmMGY0OTdhMDUwNGNjZjUyNWYyMmJlZmQ0NjgwMDk2MTllZGE2N2NmIHAzeWstbm9zbGljZQorNTE0ODkgZjhhOTBkMTgyNWNlMDAyYjgxMWQxNTRiNDRjN2U4Zjk0MTg4NWUxYSBsZWdhY3ktdHJ1bmsKKzUxNDkwIDUzZGYzZWZmOTRlM2U2MTgyZWU4YTdkYmE4YWU4OTNkYzQ2NGNkNWIgcDN5ay1ub3NsaWNlCis1MTQ5MiAxODRmN2IxNmQyMDM2ZjZjNGU0NTZkNDkxNzkyNTE5MzkyMGUxN2MxIGludF91bmlmaWNhdGlvbgorNTE0OTQgYTVmMzQzZjcyNDcxMzVmYTE4M2U4NTJjYTNlMjkyZDczYzU3ZTNmMCBwM3lrLW5vc2xpY2UKKzUxNDk1IGNlNWU0NWU0YzVkMDY5Y2RhMGY0MzNkMzhlZDA5Nzg4OGUzZGU5MjggaW50X3VuaWZpY2F0aW9uCis1MTQ5NyBhNTliYmZkODA4ZDk3MjcwODZhMWEwYWRhMzhiOGFlMjZlNWEyMWYxIGxlZ2FjeS10cnVuaworNTE0OTkgZTZlMWI0MDM4MjdlNWU1Nzk0NGVlZDhiZGY5MzgwYTVmMjNlMzJhNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNTAwIDg3ODJjYzBmYjVlMGZlYzBlOGFjN2RmZDhmYmZjYWYxN2EzZmU2OTAgaW50X3VuaWZpY2F0aW9uCis1MTUwNSBhYzdmMzkzZmQyOWIzNDJmMDM2MTkwMTM5ZmNiYmI1NGQzNzIzZjA0IGludF91bmlmaWNhdGlvbgorNTE1MDYgZDE3NDNiMDgyNzM0NzE0NGFmZTM4NDVkZDFjZGIyYmZhMmY0MTk0NyBpbnRfdW5pZmljYXRpb24KKzUxNTA3IGJjYzQxNDM3OGYzMjA3Y2NkNTJkMjQ4YjQzMjlmOGM1MWMzYTQ5NWMgaW50X3VuaWZpY2F0aW9uCis1MTUwOCA2ZDQzNWRhOGI3OWIzMTg2YWMwNGQ2MTdlOWRjNWVkOTRkOWQ2MDQ5IGludF91bmlmaWNhdGlvbgorNTE1MDkgZjI4YmU1ZGI1MDA1YmE5MmJkODNlNDZiYTMxZjVmZWZmNGU2NTMyNSBpbnRfdW5pZmljYXRpb24KKzUxNTExIDA1MGZiOWEwOTdjZDdjZjBjZTA4MTA4ZmM0NjQwMThjZmE3ODE2ZTQgaW50X3VuaWZpY2F0aW9uCis1MTUxMyA0NzJjYTcwMDZmNzBmMmEzY2FlNGEwOTYyYmYzNDU5YmQxYTUzZGVkIHAzeWsKKzUxNTE1IDQ0OWJhMGVmYjZiZDI3OTExZDlhNWJiZGU5NzUzYjIyODI1ZTA4OGIgbGVnYWN5LXRydW5rCis1MTUyMiBlMjgwMzFhZmVmZjVmMmZhOGJiYzU2MGFlNDgyZDFhMjk1MmZjZjJjIGludF91bmlmaWNhdGlvbgorNTE1MjUgZDVmYTRhZmQ2NjIwZTZlNjdlMDFjNTViNDMwOGI5OGVmZWY2NTQ3YiBsZWdhY3ktdHJ1bmsKKzUxNTI2IDVjY2UwMjg4NzRiYzc4ZTEyMzBhOTRiNDI3NzdkNTRiMzQ5MWI1MzEgbGVnYWN5LXRydW5rCis1MTUyNyBmNDU0NTE4MTk0OTFiNDY1ZWNhNzYxNDg5NWYwODU5ZjM1YjA4YTRhIGxlZ2FjeS10cnVuaworNTE1MjggYWFhNzQ1ZmM3Yjc2N2U5NzEwMWU3ZTAyODE5YmQ3MGE2OTJjNzk3YiBpbnRfdW5pZmljYXRpb24KKzUxNTMwIDk4MTE4MWQyYTRmZTA3NTU3ZDNlODcyNjIzMjhlMTkwZTUxM2RkOGIgbGVnYWN5LXRydW5rCis1MTUzMSAzZGQ2MWZmZDA0OWUxNTdlMjYyOTY0NDZmMzJlNTUyZTFkMjA1ZTJiIHAzeWsKKzUxNTMzIDEzZDVlNWYwZTk5M2FjN2E2NGMzN2M5MjNkNDdhNDRmOThmMmQ3ODkgcDN5aworNTE1MzUgOGI5ZWMzNDRiZWQyZTU3MGZkNmUyYTQ4MjJhYzVjZjEwNmE5MTkxZCBwM3lrCis1MTUzNiBjZTIzZDg2NzMyYjBiODlhZjIwNDlmZGJhZWIwODk4NjRjMTZhNWU4IHAzeWsKKzUxNTM3IGRjZWVhNDFmNGE2ZGFlYTIxMjg1ZGU4ODczZGIxODk5ZDIzNWFhMmEgcDN5aworNTE1MzggZWZlM2YyYzBkYTVlOGVkNTJiNjI1OGRiOGJiM2IwMTVkZGE2YzZmZSBwM3lrCis1MTUzOSA3NDk2Zjk0NzU0ZmYwZWIxODJkNjZhZmI4NGU2M2EyOGQ2MGI1NDQwIHAzeWsKKzUxNTQwIDY5ZjYxZjkwYzRmYzA4YTU1NjQ4ODA3NjBmOWYwYTU4NmZlMmMyZjcgcDN5aworNTE1NTYgMWEwZjQ0N2U2MGE4YWZiMzY3MmVjMDAzNmQzMGQ4NWY3NDQ0NTczYiBpbnRfdW5pZmljYXRpb24KKzUxNTYxIDFjZjUyODVjOGFiOTQ3ZjU4NWE1ZDNkZWQyNTc0ZjMzY2VmZjFkODIgcDN5aworNTE1NjIgNTFjZGMzOThlMGIwNjNlODY1YzgzMDUzODM4YTJkNzc2MDM4MWMyZSBpbnRfdW5pZmljYXRpb24KKzUxNTYzIDMxN2RjYzU5MGZmZDhhMjZiNjc4OWFhOTI4ZmE0N2VlY2NhNmNiN2UgaW50X3VuaWZpY2F0aW9uCis1MTU2NCBlNGRlZWE5MzhkZWYwODJhZmRlZDcwODZmYTM2YjJiZDViY2NiMzFhIHAzeWsKKzUxNTY1IGE4OGJjM2JhZDY1MWIzYWZhYjY4ZWNjZDQxNzViZGUzNGNmNTA1N2MgbGVnYWN5LXRydW5rCis1MTU2NiBhZGJmZDhkNTg1MWNjNjJiNThiMDEzMmVjMjM0NGM5NTFjYTNiZThkIHJlbGVhc2UyNC1tYWludAorNTE1NjcgMjgwYzZkYjMxYzVhM2QyMDMyZjBhOTNlNmNjNWQ5ZDU2MjI2ZmMyMiBwM3lrCis1MTU2OCA5MzQ4ZWE2M2IwMmRmZGVjMDM3MmY5YzZmNmNkYTRhZGI2NTFlZDdhIHAzeWstbm9zbGljZQorNTE1NjkgMDgwMDViYTZjZWI5MzBkYzczN2Y0ZmIxMmEyZWY3ZGJhMWRhMjAwZiBwM3lrCis1MTU3MCA1MjNlNmNjZTQxODcxNTBkZDlhMjdiNDFhNWVmN2Y5YjU3MjZhZmRiIHAzeWstbm9zbGljZQorNTE1NzEgN2VkNWNlODlmMjZhZTdjNDk1YWZhZTU3ZTc4ODM2MThhM2RhNTM0NyBwM3lrLW5vc2xpY2UKKzUxNTcyIGViYWQ1OWM3MjMzZTNhODA1YTY5YWMzOTNkNGM4MTc3NWJmYmJiOTkgcDN5aworNTE1NzMgN2JjNDE5MmE1Mjc4YzU4YmNhOTVjZmVkNTQwZjNhMzc3NzcwNWE2MCBpbnRfdW5pZmljYXRpb24KKzUxNTc0IDg0MzM1Nzg4ZDljYjIxMjYyYjc1N2Y0MjFmMTAxMDVkY2E0ZmExMzIgaW50X3VuaWZpY2F0aW9uCis1MTU3NSBlNWVjMWFkYjA2MWY1YWI1ODNkMjYxYWE3NmM4ZTc3M2IxZjkzYjU4IHAzeWstbm9zbGljZQorNTE1NzYgYmY0MmM4MWRiODA2ZWYyMTJmMjVhMGE5MGVkZWI1MGM4Zjc0YjI1MCBwM3lrLW5vc2xpY2UKKzUxNTc3IGE1MDQ4YzhkOGYzMzMyYWI3ZDQ0NmFjZGE4MDA4YjhjNTFhMjYxOTQgcDN5aworNTE1NzggYTI0M2E1MGRhMjNhZTJlZjUxMGI2Y2JkMGUzOTVlZTdjNWFlNGYzOCBwM3lrCis1MTU3OSBmOWU3NTYwZmUwMGQyMTg5ODk2MzVmMDc1YTU2MjI5YWIzN2JjNGUwIHAzeWstbm9zbGljZQorNTE1ODAgNzZhOWE1MTMxYWFlYzk2MzU0YTkyN2E2OGFkOTMwOGFkYWYxZTkzZSBsZWdhY3ktdHJ1bmsKKzUxNTgxIDQ0YWY0YjM3ZDVmZjQwYTJlN2NjZWVkZjFhOTU0YTIzNTdkYzQ0ODMgcmVsZWFzZTI1LW1haW50Cis1MTU4MiAyNmQyOTVlNzlhZTg3MTYzMzcxODg0ZDFhZTQ3ZmRhZTYyMWUzMGM3IHAzeWsKKzUxNTgzIGU2ODRmOTdhZTNmYWZiMTQ4MGEwODUxMmRhY2ZmNWMzOTBhZjkwZmYgcDN5aworNTE1ODQgZjE2YTU4M2M1YjA5MDQ1ZDhhMmQzYjQzNDc3ZDM4OTY5YjJmMDEzMCBwM3lrCis1MTU4NSA0YTM4Y2QxYTE2MDYxYjFmM2UyMDVjYmU2Y2JhOTcxYWE5OGI4ZjU3IHAzeWsKKzUxNTg3IGY1MWVkYmNkNWNjMDAwOGIwMzNhMTM1MjVlZThjNGE1MGNmNzU2YTIgcDN5aworNTE1ODkgOTJjZjM5NzRkMzJmYmNlZTc2MTlhM2EwM2E1YmI2MWQ2NmI3OTNjZCBsZWdhY3ktdHJ1bmsKKzUxNTkwIGVkZWM3OTYyYWYyODdlOGMwZmFlNTZlYWMxNjQ5ZWQxMmM4MzdlOWQgcDN5aworNTE1OTEgZTA3NmNjYTRkOWQ3YTBjOWNjM2NmOWI0ZWY1MzQ1MTY4YTNmNGFiOCBwM3lrCis1MTU5MiBkYmI1OTU0ZmRkY2NjYjAzOTc3NTM3ZGY0YjYwNjQ5OWIxOTgxM2M2IHAzeWsKKzUxNTkzIGYwNzhlN2U0YjlhMTUwNjIyMTM5YWNmNjc5MjFkYzExMjA0M2YxODcgcDN5aworNTE1OTQgZmY2OTNhODYxYjcwNGZkZTE3NTBlYzlkZGYyMTc4M2FkNzkxNDVmYyBwM3lrCis1MTU5NSBmODExNWY2ODZlNDAxMWM2OGMxNDJhM2Y3NzMwODFhYmFjYTM2ZTAzIHAzeWsKKzUxNTk2IDY5MjdhY2JmYTAxYjQ3ZmFiYTg0NDJjMjAwZjI3Njg1MDgzNThjNGYgcDN5aworNTE1OTcgNGU1Yzk0ZDAzNjQ5M2RmNzBjZDJmNDY5MDBiYzVlZmM4NzY5ZTk5MCBwM3lrCis1MTU5OCBlYjJmNzBmZGJmMzI0MGI5OWQyNjA1MDZhZWUyYWFmYTM5ZGY0MDhlIHAzeWsKKzUxNTk5IDc4NTY0ZTI2OWQyMzBiMmY1Mzc3N2UzM2JiNzI4MTk0N2UyMzM1ZDcgcDN5aworNTE2MDAgZjg3YTNlNjE4NTNkNzJiMWQxMzM5OTJmOTkxZTM5N2IzMWFhYzhlOCBwM3lrCis1MTYwNCAzYmZjOGJiNGU3MjZmMGE3MzZjOWM1MDJjYjhhOGEzNWE5M2VjOTY5IGxlZ2FjeS10cnVuaworNTE2MDUgY2EyYjJjYzIzMDdlNDQxM2ZhMmJmZjViNmFhYjA5MjczOTA3ZmM3OSBsZWdhY3ktdHJ1bmsKKzUxNjA2IGY0OTc2NTBhMTQ5MDZmMjc2MzhkZmMzMzBkYjFhYjMwNWU2ZDNmZWEgbGVnYWN5LXRydW5rCis1MTYwOCA5MTZhZTYzNmE4M2U0YjgwMDJjMDcyNGJjNjhhYzc0ZDg0Mzg2MmVjIGxlZ2FjeS10cnVuaworNTE2MTYgYmIwNzM4MDVmYmFiYTAxMTUzNzc0ODY5MjdjMjVkMDFjYTI5YTZlYSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjE3IDkwNDk1ODIxNjgxMzFkOTg5ZmE1YzJlYzYxZTM2YTdjMGIwYjc1N2IgbGVnYWN5LXRydW5rCis1MTYxOCA1NTQyNzU5MjU0YzBiMjgwY2RiZmU2MDU1YjVhMTM4Mjk0OTMwMjBlIGxlZ2FjeS10cnVuaworNTE2MTkgMWI3MzVhOWQyMTA3MTBkZTRiOGM0YWFiMzQwMjA5NzZjYWU5ZDQ3NyBsZWdhY3ktdHJ1bmsKKzUxNjIwIGFjYTcwOWYzM2E2YTE2OGIxOTk4NjQ1ZGMxN2I0Zjg4YzFmZDc4ODQgcDN5aworNTE2MjEgM2Q3Nzk4ZmVhZmM1OThmOWViYmQ3NjE0Yjk1OWMyMTU4Yzc0ZDk3YSBwM3lrCis1MTYyMiA2YzE4NGZhNTUxNzBhMjY4NmUxOTMyMzBlN2FlYTc0ZTRkOWFiMDY1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE2MjMgZWJlYjM0YWRkNGE2MmNkY2U2NTg4ZDA0OTFmYzY4YTdiNzQzODQ2NCBwM3lrCis1MTYyNCBkMGVkN2RiYWFkNTZlMGEwYWVhNTJmYWI2ODlmZDhiZDZkZWFjZjBiIGxlZ2FjeS10cnVuaworNTE2MjUgMGNiOWU1N2VjNDA2NDc4YzdkZjNiNmUwNWFkNzU3MWIyMzY0NDYwNCBwM3lrCis1MTYyNiBjNGQ4YzA1NDYxNmMwMDlkMGFjMDI3OTUzZjgxZTUzMjllZGU2YTE3IHAzeWsKKzUxNjI3IGMwOTM2MzNiZWJlY2NmZTA0ZTk0ODMyNWI2MTYwYzRjZmNiMWMxZGMgcDN5aworNTE2MjkgNTQwYzk1OTI3MjllNzRkODJhZDMzMWY2NzQzZWQ0OTUxOGFjMmE3MSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjMxIGQwYjgzYzQ2MzBjMDkyNGRmNjYxMDYzNTQzZjNjNTQ3OGM4YzM1YWMgcDN5aworNTE2MzIgZGEzYTlmNDAyODg2MDY1OGFiNzljNmRlMzZiMzM2NmI5OWExNDcyYiBwM3lrCis1MTYzMyA0Zjc2ZjYzYTMyZjM2YmFhZjE3MTc5YWE2Y2JlOTRmMmZiMTJmMzNmIHAzeWsKKzUxNjM0IGQxNGYxMGE0ZDlkNDY2MGRjZTEzYzg3NGI1OWE2MjEzNTFkMTVlZGUgcDN5aworNTE2MzUgMDVhYzljNDkyOGE0OGYxMjk0Y2I5ZWRmYzk4MTE2ZDcxNjUwZWFlOCBiY2Fubm9uLW9iamNhcAorNTE2MzYgNmUxOThjNjU1ZWVhYWNmMzU1OTA3NTE3MmRiNDgzZmY2MjNiOWRkYiBiY2Fubm9uLW9iamNhcAorNTE2MzYgOTBhOGVlNmMzYTg2NzZjYzViOTQzYjJiMWRlYmMzY2EwZjE3YmFmMSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxNjM3IGI1NjNiMTJlNGMwMDM2MzkyYzRkYjgxNTI4ZTg5MGFjNmQ4YmJhMzUgYmNhbm5vbi1vYmpjYXAKKzUxNjM4IGZlZjAyZGJhOWI1ZjMyNjg3MWU2Mjc1NDViYzg2ZjFkMmU2Y2IwMzAgYmNhbm5vbi1vYmpjYXAKKzUxNjM5IGVjNDgwNTdhMzRiNjAxOGY1N2JiZjRmNDk3NDY1MjAzNTVmMjk3MzQgcDN5aworNTE2NDAgMDdlYjgwMjY0ZjYxNTExZGVmNTcyOGRmNWM2YTc1N2VkNjhkOWJkNiBwM3lrCis1MTY0MSBmOTc0ODkwYzZjZDJhN2M1MmQzMDA3ZDFkNmNiMzE2OGQ0Y2YxMWFmIHAzeWsKKzUxNjQyIDIxOGI2ZTkwMGE4ZDQ0MjViZDlkOTJhNTgyMDVhZTM4ODMzYzc3NmYgbGVnYWN5LXRydW5rCis1MTY0MyA3NTkxMjI4MTUxZDcwMmVjNTMzYmZiYWJiOGEzODM1ZTZiOWIwOWExIHAzeWsKKzUxNjQ1IDg5M2FkZDU1NDU0MTk2NzA4MDBlYjExNzZiOGRiNGJjZmZkMzUwMDcgcDN5aworNTE2NDYgYWE1OTQ2NmViZDljMTYxNjFjNTFjMTE0MDA0NzQxMWRmNDEzMjFmOSBwM3lrCis1MTY0NyA3NTRhNzI5ZTk3YWY1YWM2NDg1YTVmYTU4ZWU0YTg5YmRkOWQ0MmYwIGxlZ2FjeS10cnVuaworNTE2NDggZjBiOGY3MTE4NWY1NWQ2ZmQ4Y2M1NWUyYWU5OTkxNzA3OTQ3MWE1NiBwM3lrCis1MTY1MCA0MTYxMDdhMzUxODUzZDhlYjMzZDVmYTRmYzk2MTUzMzk1Yjc4YjBlIGJjYW5ub24tb2JqY2FwCis1MTY1MSAxNmQ0ODZjN2RhODI0NWMzNTYwZmM0M2U5OTlkNmFlYjliNWNmMjVhIGJjYW5ub24tb2JqY2FwCis1MTY1MiA4ZjczMjFhYjhmNDBmNzM3NzYyYWMwMzIwNThlZTMxYzU4ZTM3MjEzIGJjYW5ub24tb2JqY2FwCis1MTY1MyA0ZDIzZTlhMTI3MTAzODU1ZDgzMzc5YjQwMWNjMTdmNjFkZGYzZGZmIGJjYW5ub24tb2JqY2FwCis1MTY1NSBmMTBmZWRiZTZjMTM5NjFiOGZiNjNiMDk1NjE3NTQ4MDA3NWYwN2NiIGJjYW5ub24tb2JqY2FwCis1MTY1NiA1YjAyZWI1ZjY1ZjFiZmY2YTQ1ZjA4ODZkZDQ0ODE4YTdmYzUxYzhkIGJjYW5ub24tb2JqY2FwCis1MTY1NyAzNTU0OTYyZDhiMjFkN2U1NjU2OTVhYjg4ZDMyYzBkMzE5YzI2MzNhIGJjYW5ub24tb2JqY2FwCis1MTY2MyBlODVkNWIyMGVhNjBlZDQxODEyNmJiNzdhMGQ1NzBmODkwZDVlNWI0IGxlZ2FjeS10cnVuaworNTE2NjQgYTgzOTU3YzkxZmRiOWJiNzcxNzA3MGY5YjA3MmI1MTdhNzYzNWZhNSBsZWdhY3ktdHJ1bmsKKzUxNjY1IDFmMTcwNTcwNTg5ZWE1ZmI1MDM2MDM2MzkxYmIxMzNlOTQ4MGMwMjIgbGVnYWN5LXRydW5rCis1MTY2NyA2MGMxMTkzNDcwOWVjNzQyNzg0YTNmMmFkMjAwYWNlMWFmYTg1YTYyIGJjYW5ub24tb2JqY2FwCis1MTY2OCBiY2NjOTE1ODA4ZDgwMWZmYWE4YTUyOGJlZjNlYzVjZTQ3MDVmZWRmIGJjYW5ub24tb2JqY2FwCis1MTY2OSBkZDUxNGExNzc4NDhhZTZlNTE1ZGQ2NzQxOTAxNTZjZjEyNGFjZTAwIGxlZ2FjeS10cnVuaworNTE2NzAgODkxNzZlNjVhZGQyYzk4NWIwMDM1ZDkyZDZiMGRhOWE1YWI3ZTdkYSBwM3lrCis1MTY3MSA3MjFjMzk0ZWIwYmEzM2U5OWQ4MDI5NTc5MDg2Y2NhMzY5ZTA0ZTNhIGxlZ2FjeS10cnVuaworNTE2NzIgNTYyNmIyZWU4Y2U0Y2JjNWM0MTM4YTU5N2NmMDZkMTQ4Y2VjZjYwOSBiY2Fubm9uLW9iamNhcAorNTE2NzMgYWE2NDFmYjE3Njk4ZWQzMjc3OTAzOTBmY2QzNWY5MWY3OTNiMTNlMyBiY2Fubm9uLW9iamNhcAorNTE2NzQgODIwODFiYTlhNWM1MDdjMDQ5YWI3NjQxODhiNWEwOTkyY2M4N2MwNSBsZWdhY3ktdHJ1bmsKKzUxNjc1IDExZjcwNTMwNTFmZjllYWRmY2NmNWQ2Njk5YzQwNjdhMjA2ZjM4MzIgcmVsZWFzZTI1LW1haW50Cis1MTY3NiA0YTc5MDZkOGRlODYxMDdjYTEwMGMwNmQ3MzIyMjgxY2RlNGY5MzI4IGxlZ2FjeS10cnVuaworNTE2NzcgNzFlYTJiZTdkOTEyNmE4YmNhYWUzYmY2OTU5NTMxN2JmM2FjOTE1YiBsZWdhY3ktdHJ1bmsKKzUxNjc4IDE4NGMxZGJmNzE5NGU0MDQ4YTFiMmI4MTE1OGQ1Y2ZiMWMxMGE4M2UgcmVsZWFzZTI1LW1haW50Cis1MTY3OSBiYTgzNzU0NWNjMmZhZjA3OGMzYzk4NDdmYjdmZGI5OWI1Mzg5ZWJlIGJjYW5ub24tb2JqY2FwCis1MTY4MCBhNjY2ZDc1ZjNkZmZjMzkzNGU2Y2U1ZDI1MzRkYjJhY2VjMjg0NDY0IGJjYW5ub24tb2JqY2FwCis1MTY4MSBkMTk4NmQzNjlmZWZiODg5Yjc1ODhjY2VlOTNlNjc1YmM5NjNjNmE4IGxlZ2FjeS10cnVuaworNTE2ODIgODQxOGYxYjkwOTBlODdlZWFhOWQzZWZhMzE1NTczOTQ5M2FlNGVmYyByZWxlYXNlMjUtbWFpbnQKKzUxNjgzIGU5MDVmNzhlYWZjYTU3MjFhNjYyMWViZjgzYzhhZDAzZjA1NzVjNDQgbGVnYWN5LXRydW5rCis1MTY4NCAxMzUyYWQ5YWZjYzBiOGRmM2QyMGFhM2IyNmRiOWUzMTU3ODAyMTYzIGxlZ2FjeS10cnVuaworNTE2ODUgMmYwODZkNThjYTEwZjdlMTExMzFjN2Q4YzljZDA2MjcxZDAzMDhmMyBsZWdhY3ktdHJ1bmsKKzUxNjg2IDhmZTE2ODcwMzM0OGI3NGM5YWJiZTA5ZjU2OGM1NWY2ZmY1NjFmMmQgbGVnYWN5LXRydW5rCis1MTY4OCA3NjkzYjY5OTNkZGFmM2Y4MDMwMTdmODgzY2JhNmU4ODY0NzRmZjlmIGxlZ2FjeS10cnVuaworNTE2OTAgMzE0YzRlN2EzNmQzZWYzYzYzZjk5NmRlYWUyODE5OTlhZWJjNWEwMiBsZWdhY3ktdHJ1bmsKKzUxNjkxIDFlYzdlZjBmM2I4ZDA0ZjRjYmQxZDQxNDljYWFjMzljZjk1NDE4OGQgbGVnYWN5LXRydW5rCis1MTY5MiAyMTE5N2NiZWQ1MWRhYzg4ZjMxZDQ1N2Y1NWFjNDU0ZGE4NDY1ZmYwIHJlbGVhc2UyNS1tYWludAorNTE2OTMgYWE4ZmVkZjZiYjI0OGVkZGIzZmQxZjc0Y2MzMzU3MmFkNmI0MjM5YyBsZWdhY3ktdHJ1bmsKKzUxNjk0IDg4MzJiOGMyZmM0OTlmNDc2NDk3MTQ3NzllOTQ5MTNkZjE3YzAyMGYgbGVnYWN5LXRydW5rCis1MTY5NSA0Y2VjNDViZDY2NjM5ODNlZTJmNzZjNDk2NmRlZjkxN2M2ZTdkNDA3IHJlbGVhc2UyNS1tYWludAorNTE2OTYgMDYzMzBkMGI0NjRhZjI1MzM1ZDcxMTZkNmQ5M2JhZmFkZjM2ZTRmNCByZWxlYXNlMjUtbWFpbnQKKzUxNjk3IGNiNjY0MmRlZDRlNzU4MTMyZjZkNTk1MDUwNzY4ZjZlMzQxMTQwNWYgbGVnYWN5LXRydW5rCis1MTY5OCAxMDFlMDRhNGY0MDNhYWU1YzVlNzQzN2M3MWU0MjE0ZGFjYTcyNjZkIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE3MDIgYzZmZWY5NDRhZDk1ZGVhZmQyYWYwNjgwN2U3Y2MyMTJhN2ZlYTkyNyByZWxlYXNlMjUtbWFpbnQKKzUxNzAzIDU4OTk4MGM3ODAyNTQ2MDhhZDMzYWI0NTRmOWFlNGI3MTE3OGQ5YTggcmVsZWFzZTI1LW1haW50Cis1MTcwNCBjZmI3N2ZmZjAyNDAyMTA4MmFkODExYWQyMjRhZjcxOGRjMTI2MThmIGxlZ2FjeS10cnVuaworNTE3MTAgYWJjYTRlNjI2Y2I1ZjZhOGIyNjI5OTYwNmNhYTM2NzIxNjU4NzdmMSByZWxlYXNlMjUtbWFpbnQKKzUxNzExIGY1ZTc4YWU4ZWMwY2I4ZWNjZjFlOGM4M2E2NDA3M2QxYWYyZTM5MWQgcmVsZWFzZTI1LW1haW50Cis1MTcxMiAwMGQyYzkzYjg4YmZlZDU3YWVhZTFhMjYxN2NhMTNhN2JiYTY3MGQyIHJlbGVhc2UyNS1tYWludAorNTE3MTMgYzZkNDRhOTc0OWRiNDg2YjY2ODI3OGJiMzcwNTA4ZDMzOWY3OGU5MiByZWxlYXNlMjUtbWFpbnQKKzUxNzE0IDljYTE5ZGIxN2ZhZjc5NTAwMzE5ZjVhYjAyNWNiNzcyODlhYjQ3NjIgcmVsZWFzZTI1LW1haW50Cis1MTcxNSAyNDRjNzM0ZjFkOGQxZGI4MGNlN2FlNjkyODBhYTQ5NDE4MzdiOThmIHJlbGVhc2UyNC1tYWludAorNTE3MTYgZTFhYTlhMjllZDE1MWZmYmRmMTZlNDQ3MDZiMzY2YmFlNmRiMmY5NyBsZWdhY3ktdHJ1bmsKKzUxNzE3IDk5NTc0NjdmYWY0N2MzY2UxNmM3YTFiM2YwMTc4OWMwYzcxN2NkODMgbGVnYWN5LXRydW5rCis1MTcxOCBkMWI0OTdlYzE5MGExYWI2Y2U5MzRlM2Y0MWJhODMyZTk5ODg0MzhhIHJlbGVhc2UyNS1tYWludAorNTE3MTkgYjM1MTQzODJjMzI3NDdjYzgxNDFlODE3MGRkNGExMzY3ZDQ3YjNhNSBsZWdhY3ktdHJ1bmsKKzUxNzIwIDA4Y2E0NzZmOGEzNDI0ZGMyNjNhN2UyMjJlYThkOGQzNGU3MjAxNjggbGVnYWN5LXRydW5rCis1MTcyMSA5N2QzZWFiOGNkYTJmOTIwYjUwNDc5YTBlNTgzNDY1N2I0ODYyYzQ1IGxlZ2FjeS10cnVuaworNTE3MjIgOWQ0NDc5MjA2M2JiZmRlOWM2M2ZiNjk5YThmODYxYzgyMjhiMmUyNiByZWxlYXNlMjUtbWFpbnQKKzUxNzIzIDYyN2EyMWNjZjI0ZmM0MDNjOGNiNzlhNjQ1MzU0NjI5Nzk4YzM2ZjcgcmVsZWFzZTI1LW1haW50Cis1MTcyNCAzMDBmZTUwNmEwYWE0MjBiMDNjYjZkMjJmMGQ0MDQ4OGQ3MGNlZDc5IGxlZ2FjeS10cnVuaworNTE3MjUgODI2MzljMDU1YTZmYTg0NzUzZjQyYmU0NWU1MzFlMDYyOTc0NmQyNSBsZWdhY3ktdHJ1bmsKKzUxNzI3IDE1NWNiMTU1N2I5NzUwZDQ5MTExYjEwZTMxODllNzkwMjI4ODVkYmQgcmVsZWFzZTI1LW1haW50Cis1MTcyOCA0Yzg1Y2U3MDQyNmUzOWY0YWExOTBkMTQ1MTljNGIxZWE4M2ZjYzJhIGxlZ2FjeS10cnVuaworNTE3MjkgOGRjYjg4MmVjM2UxYWFjN2QzMzZhNDBhYTY0ZWM2NjU2MWZjM2RlYyBsZWdhY3ktdHJ1bmsKKzUxNzMwIDMzMDBkNzQ5MmYxYTEzY2E2MDRiZmFhM2ZlMjk3YTRmMzMzOGQwZjMgcmVsZWFzZTI1LW1haW50Cis1MTczMSBjNTkxZDk5NTRmYjM5MzMwYzIxMzZiMjI2NjA5MDg4NGZhNjYwYTBiIGxlZ2FjeS10cnVuaworNTE3MzIgM2Q5NjhiNWZjYWY5YmVlNzhjNmM4ZjBkNzA2M2Q5MWJkMTZlMDFjOSBsZWdhY3ktdHJ1bmsKKzUxNzM0IDZhNTFjYjgwNjhmNWNlZWU1YTMwMDA1NmQ2OGJmNzgwMGRkMzc1YzggcmVsZWFzZTI1LW1haW50Cis1MTczNSA1ZDZlOTZhMmZlNmU4NmRkNWY4ZjZhMTIzMjM5OWEyNmRkMTc5NmM3IHJlbGVhc2UyNS1tYWludAorNTE3MzYgOWYwYjNmOWM3MGRhMWM3MjJmYjliZDU0OTZkNDk4NTlmNWY0ZjNkOSByZWxlYXNlMjUtbWFpbnQKKzUxNzM3IDE1MTA5NzgxZjAxNjhlYmQ4NTEzZTRlYzkxNmFlMjdkZGYyMGNmM2EgbGVnYWN5LXRydW5rCis1MTczOCBlZTBjNzU3YzQ5OTBhYmFhYjIwNDlhOTM3YzYyZDBiZDFkMTI2Y2IyIGxlZ2FjeS10cnVuaworNTE3NDAgZGVkN2I2OTBjMzA2M2IwYzdiMzljNDA0NzM5ZjBjZGFjMzY0N2VlMiBsZWdhY3ktdHJ1bmsKKzUxNzQxIGNhOTViZDU1OWU3MTY3ZWYxNTBjZTViOTVjMmI3OGFjYmRlOTQ3OWYgcmVsZWFzZTI1LW1haW50Cis1MTc0MiA2ZDdhOGI1ZWI1NTFmYzUxOTcxMzZhZTgyMmQ5MjRlMzcxNmRlMjM3IGxlZ2FjeS10cnVuaworNTE3NDMgOGZiNTk3Nzg0ZjE4NTUxMTI1ZDQzZDljMGRiYTIxM2Q3OGIzMjNmZSByZWxlYXNlMjUtbWFpbnQKKzUxNzQ0IDcxYWM3OTZhMDE4YzYzMTk5ZWI2OTM2YzM0ZTA1MTBjODBmOTM3YTggbGVnYWN5LXRydW5rCis1MTc0NSA3YzVlMjkzNjI4MDNiMWZmM2FiOWRmY2UxZmExNDJkZDg1OGU1ZjRhIGxlZ2FjeS10cnVuaworNTE3NDYgZThiNjhkZjkwYjg0ZWQ1Y2E1ZTYyYTMwYWUyYTI5MjMzNmRjMTQ3OCByZWxlYXNlMjUtbWFpbnQKKzUxNzQ4IGE1MjQ4OTk4MGI1YjQ5M2E1ZDg5Yzk5ZDczYzEyNWEyNTY2MmJlY2UgYmNhbm5vbi1vYmpjYXAKKzUxNzUxIGU0NjZmZmZkYzlhOTFjNTNjNmQ4ODRlZmEwYmVlZTdjNDM4OGU1OTkgbGVnYWN5LXRydW5rCis1MTc1NSAxYzQyNWE4OTBmNmNjYTMxNTc5ZGEwYWZmNTU1NGU4MmIxZjA1OGZkIGJjYW5ub24tb2JqY2FwCis1MTc1NiBjOWNjMjliZTc1NTg3OGNiNmFiNjAwMjg4ZjZiNzQ2Njg3Y2VhNDI0IGJjYW5ub24tb2JqY2FwCis1MTc1NyA3NmI4YTc1ZGJlNmEzZDc0ZTM0YmJmNDAyOThiNDk1NzBjM2IxZDYyIGJjYW5ub24tb2JqY2FwCis1MTc1OCA0NjdjNzE2ZTJmODE4YmI0MDcyYWJmZmI2NWMxMzE3MjFiNGY5Yjc1IGxlZ2FjeS10cnVuaworNTE3NTkgOGEyMGM5NGQ5ZDk5ZTIyYjk0MTMxNTU4OTc0MWJiMTEwYWY1ZTk5MyByZWxlYXNlMjUtbWFpbnQKKzUxNzYwIDJhNzMwZmI2ZjM0YjQzMWE3NWJjNGI4N2QzNTAxYjFhOGE1OTIzYTIgbGVnYWN5LXRydW5rCis1MTc2MSA5ZGViMDhlZjRiYTFkZjM1MGU1MDY2YjRiMWY4ZTc5MGJmODRkNjkxIHJlbGVhc2UyNS1tYWludAorNTE3NjIgOThjZDdiMTY2NmZiNDhjZjUxZjFlMmQxZjBlNjJkMDVkNDc4MzUwOCBsZWdhY3ktdHJ1bmsKKzUxNzYzIDZkY2M2NDg3OTM0MTM4MWJiMTNlNjc1MmVjMGYzMTgwNTVmM2ExMTkgcmVsZWFzZTI0LW1haW50Cis1MTc2NCBhZTViOGE4YjkxMWUyOWQ5YzBiMzM1MWI1MmM3MGYzNjY0ZDNkOTAzIHJlbGVhc2UyNS1tYWludAorNTE3NjUgMzA3YTExYzA4NWI0NjEwZDg2ZWY5MjJkMjNlMzdmMWI4OTYxMTA0MSBsZWdhY3ktdHJ1bmsKKzUxNzY2IDgzOTRkMmU5YmZkNjdhZjRlYjA0M2Y4MmFhOTZlMjhjMTZmOTlhNDggcmVsZWFzZTI1LW1haW50Cis1MTc2NyBiOGZiZDMyMjc2MGE5YmIxNWEwYTMzZjMwZTFhYjQxYTBlMGRhYTUxIGxlZ2FjeS10cnVuaworNTE3NjkgZDcxOWZhYjc5NjY3ODc2Y2QxNDU2NWE0MjdkNzY5NjBmZDI4ZjU5YyByZWxlYXNlMjUtbWFpbnQKKzUxNzcwIGNiODgzZTdlMGI3ZTE3MmNmN2YxNDUxZGYwNDg5Y2Y1N2NjOWIyNWMgbGVnYWN5LXRydW5rCis1MTc3MSBjOTRmMzcwNTRmMTk3MGY2ZmMxNjJiMTI1MWVlZjI1NDA4NThlMjNjIHAzeWsKKzUxNzczIDdhMGFkMTEwZTkxZTc5MTYzMWRmODg5YzEyZjU1ZjA3NmI5OGYzYmUgcDN5aworNTE3NzQgM2I3NWVkY2M0YTZmNDg3ZGZjN2NhZWUxMWY3YmZjNTY3NGU0ZjI1MSByZWxlYXNlMjUtbWFpbnQKKzUxNzg1IGRjZTE3YjViZDM4N2NhM2JhNzc4ZTVkMWI5NzY2NGZkNDE4YmQ0NGQgbGVnYWN5LXRydW5rCis1MTc4NiA4MWI0NjdmZTkyZWU1MDk2NGM1MjhmZGVlMGYwOWQzNzU5NzFlOGI2IHJlbGVhc2UyNC1tYWludAorNTE3ODcgNGFhOTg0MTQxZmVmY2ZiNjdiOTg1NzVlODJkNmIwZGUxOTdkNzViZSByZWxlYXNlMjUtbWFpbnQKKzUxNzg4IDI1MjdhNDgzNTA5OTI5M2I5ZDkwMmI2NTU4NTc5NzFiOTFhMjU5MzggcmVsZWFzZTI1LW1haW50Cis1MTc4OSBjZDNiN2YyNTY0OWQ0ZjM3OTRmMDAwYjdjMGM0ZmNmMTQyMGEyMTE5IGxlZ2FjeS10cnVuaworNTE3OTIgNTZlN2Q2OTUyOTg1MTU1Y2JmZjVmMGRlZDQ1OTRiZGNhMjg1ZWU4NSBwM3lrCis1MTc5MyA1ZTUwMmRlMGNlZGFjZmQ1ZWFhZjkzZTY1YzcxMGNmZjA4NGZlYzk5IHJlbGVhc2UyNS1tYWludAorNTE3OTQgNmQ0N2M4YmMwNTEyNzFiNDk5NDkwZTljN2Y3ODFkMWVkYzcwZWFjMCByZWxlYXNlMjUtbWFpbnQKKzUxNzk1IDZlNmJhZjFhZmIxMmMwNTYwMjZhOGRkNzZmZDcwMzY0MmNkNjU0NmYgYmNhbm5vbi1vYmpjYXAKKzUxNzk2IDk0MjA0NTQ5YjUxNjA5M2Q3M2Q5NTUyZDM1ZDAxMTVlNGI0NzA1NGYgYmNhbm5vbi1vYmpjYXAKKzUxNzk3IDM2M2VmODA0YTA5NmY1MTg5YmJmMmM5Y2FhNzk2YzQ0ZDFiMmVlZTggbGVnYWN5LXRydW5rCis1MTc5OCBlZjBmNDJiZjJhMDg1MzUwYzkzOTNiMDMwNWYzNjRhMjM0YTk1ODI5IGxlZ2FjeS10cnVuaworNTE3OTkgYzY0M2IwMzFkNTI2YzgzNTc1ZDFlNzMyMzQ3OGZjMDBmMWM1ZmZlYiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODAwIGU4MzcyMmFhNzhkZDQ3NTMxNDc5ZGMyMzVkOWEzNWM5ZjYyMTVmODcgcmVsZWFzZTI0LW1haW50Cis1MTgwMyAzOGJhOTUyNDc4M2ExZWFiZThmNjc3YzAwN2Y2Y2U1Nzk3YzRiMDkxIGxlZ2FjeS10cnVuaworNTE4MDQgY2Y5ZDNiMzgyNTFmOTJhZDZiYjA2YzM0N2FmNzIzZDFjZTY2NDQxZiByZWxlYXNlMjUtbWFpbnQKKzUxODA1IDFlZWJiNjQ3MzEwZmI1ZWNmYWNjNWRlYjc1YzZkNTFlYmUxNzM5MzQgbGVnYWN5LXRydW5rCis1MTgxMSA0MDU4MDQxOTJhNjgyODI1ZGY4MzcyZWFmM2NmZjdjOGEzMmU3ZGRkIHJlbGVhc2UyNS1tYWludAorNTE4MTMgYzNhMzUzYTA3MTQ2OGI1OGE3MjFmOTgzN2M5MDE1MWIwNjhjYmVhNyByZWxlYXNlMjQtbWFpbnQKKzUxODE0IDQxYzFlNTQzYjllOTY5NzYxNDVkNTIyNWRjODUxNWU3YzIyZWZlOWIgbGVnYWN5LXRydW5rCis1MTgxNSA0ZTgxOTc0ZjdlMTQwM2M3NGE3NGVmNjY5YzUxOWQ0YmY5ZTU1NzBmIGxlZ2FjeS10cnVuaworNTE4MTYgZDk2NzNiNjJjZTM1ZDlkMGQzYmYzMGE2MmJkMDRlZjc3Y2M2NTE4ZSBsZWdhY3ktdHJ1bmsKKzUxODE4IDQzNGFmYzcyOGY2Zjc0YWY5MDUwMzE0ZGIxMjE4NmU2ZWEwMzgzNTYgYmNhbm5vbi1vYmpjYXAKKzUxODE5IGEwNjViNTVlMWZiMWQwNmYwNmRkNTVlN2ZmZTkzMzgyZGMyZDI2OTEgbGVnYWN5LXRydW5rCis1MTgyMCBkNWM2ZmVhMjUyZjA0ODgyNjVlNzdlODJjZmE0ZmU0MWEzODhkOTRmIGxlZ2FjeS10cnVuaworNTE4MjEgZWM2ZmQ5Y2ViZGExODU4N2I2MDZkNjVhMTZiZjQ2ZDFhMGI4ZjEwMCBiY2Fubm9uLW9iamNhcAorNTE4MjIgNzAxMDhjNjNjNmU1MGU4MzdkNjljZGE2ZjYwNzQ3MGExYzkwZGRjMyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODIzIDMyMzlmOTNjZjRkMjNlZDY5ZmM4ODE3Mjk0YzI4MmUwMTc0ZWZjYTQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgyNCAyNjUzZjgzMzU4Nzc5Mzg3ZDFkZDQxMWZmNjc2MDU5ZTFkYWY5MmM2IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MjUgODkxZTMzMmNkMmQ2YTI2OWMwY2EyYjFkNDkwMzAzYzJmYzFiMTEzZiByZWxlYXNlMjUtbWFpbnQKKzUxODI2IDAyOThjYzZjMjljZDZlY2RhY2Q1NGVjMjRlMTE3MDA2MWU4YzNmYTAgcmVsZWFzZTI1LW1haW50Cis1MTgyNyBjMDMxNGM4OTM2ZTUxMTZkM2JiYmIyZjdkYTVlMDBjNjY2YjljMWJmIGxlZ2FjeS10cnVuaworNTE4MjggZDRlNTNlNzBjZDc4Mjc0ZDA1Mzg2M2M4ZjU2YmFhNTYwYTJiNWUyZCBsZWdhY3ktdHJ1bmsKKzUxODI5IDdiZTMwY2JmYzliMjgzYWEzODhlMDc0YTA4ZGZmY2I0NzNiMmZkZDEgbGVnYWN5LXRydW5rCis1MTgzMCA1MjdhM2QwMDUyYzkwMTEyMWI1OGJhYWI5NjA4ZWNlYzM4MWJlZGI0IGxlZ2FjeS10cnVuaworNTE4MzEgNmE4M2IyNzQwZmM3Y2NkYTAzZDk2MTBlM2NkMGI4OTQyOTMzOTFjOSByZWxlYXNlMjUtbWFpbnQKKzUxODMyIDQwNzM1ZDVmOGFjZGJlNzc4ODFkZjljZWJkMjE2ZmE3YTg1OWVlYWMgbGVnYWN5LXRydW5rCis1MTgzMyBiNTI3NTg4MmEzZTBkNGIwY2M0MzE0N2IzMzNlYjM4NzQyNmE5MDc4IGxlZ2FjeS10cnVuaworNTE4MzQgYTRhMjE0YmRmOGVhYzBlYTBlOWMzOGQxYTJjODk0NzRhZDVjOGI0NyByZWxlYXNlMjUtbWFpbnQKKzUxODM1IDZmNmU1NWZkOWI3OTFjMmE3ZGNhZDg4NTYxNzUxZTcxMmFmMzUxMGIgbGVnYWN5LXRydW5rCis1MTgzNiAwZWIzZjBmNTRhMjY3NGZlZjY4MGFiNTI5MWFkZTFiNWZiOTZlYWI5IHJlbGVhc2UyNS1tYWludAorNTE4MzcgYzJmZDk3OGRmMzkyMjQyNWY1ZmU4NzkxZGQ0OWRhNTVkMDkzMzA3ZiBsZWdhY3ktdHJ1bmsKKzUxODM4IDllN2RjNjQzMmE0NDY1YjYzNWQ3NzFlNmU4MmE2ZTE4Y2M3MTE0ZDcgcmVsZWFzZTI1LW1haW50Cis1MTg0MSA4MDRkMTcxYzJjYjcxNTVjNjkzMjJlN2E5Njg3NTIyOGMxMTdjMDZkIGludF91bmlmaWNhdGlvbgorNTE4NDcgMGZmZTdmOTJhYjJmZGVmYTJmODg1YTJkMTk5YjhlZTY0NThiNmZhZCByZWxlYXNlMjUtbWFpbnQKKzUxODQ4IDM5ODZiMzZiODQ5NTIzMzQwZDMwOWM5YzA4NWNmMDY1YWQ2YzJiZGUgcmVsZWFzZTI1LW1haW50Cis1MTg0OSA1ZWYwNDA2ZTZkNTI0YzZjY2Y2NzFiMjg0MDkyOGQ1NzU1MzlkNjk0IHJlbGVhc2UyNS1tYWludAorNTE4NTAgZTRlOGYwYTRlZGE0ZmUyOGJjNzUxYWNkZGFlOTZjMTUzYTdkN2IxNSByZWxlYXNlMjUtbWFpbnQKKzUxODUxIDU0ZDRmZDA4ODM4NWM3ZmRjMWU0MWY2NDA2Y2Q1NTc0Y2YyMWYyYjEgcmVsZWFzZTI1LW1haW50Cis1MTg1MyBkMDZiMmI0MmQxMzg4MTZmZWI4OTI3NzUwODU5MjlhNmVkMzU1MWY1IHJlbGVhc2UyNC1tYWludAorNTE4NTQgMTVhZDZiYTJlMWE1NDI3ODFiZWFiYTEyNDAzZGY3Y2I3NDAxZTJhNyBsZWdhY3ktdHJ1bmsKKzUxODU1IDY2ZDAzNTcwMjliNTVhYzYxNjhmOWEzMDE4Mzk5N2U3ZjI1NzhkYTkgbGVnYWN5LXRydW5rCis1MTg1NiBjMGEwNzFkZjQ2MjFhNTc5NGQ0NWE5MmU0YTU5NTM2ZDdjYjNlNTZkIGxlZ2FjeS10cnVuaworNTE4NTcgMGY3ZWU5OTI1YjdjNDI5NjJiNjE1NjRiZDBkNDQ5YTMzY2EyM2ZiYiByZWxlYXNlMjUtbWFpbnQKKzUxODU4IDBiYWM0MGU0ZDBjNjQzYTc4YzE4YjQ2ZmNiMGY0OGM3ODcxYWQxZmQgbGVnYWN5LXRydW5rCis1MTg1OSBjNWM5ZGJlZWFmYTc2YTFkZDRiZjI2ZjIyNjAxY2FkNmZkZDM3MjRjIHJlbGVhc2UyNS1tYWludAorNTE4NjAgY2MzY2IzYTgyMzdlYTU0NWRiOTE3ZDg0YzQ5ZDhhMGE1ZTE3NWNjMSByZWxlYXNlMjUtbWFpbnQKKzUxODYxIDdkNDBkMzdlNGNjMzVkNjE5MTk0MDgyZDlmODIzOTE0ZmMyMmY3YjQgcmVsZWFzZTI1LW1haW50Cis1MTg2MiAyNDlmZGI1OWRjNTJmOWI1M2E1MjkyYWRlYjMzODJkNTY3YjkwOWFhIHJlbGVhc2UyNS1tYWludAorNTE4NjMgZGM1MGQ0YWM5NWQ5MWZjMTgwMDE4NzA0MDQxNzU3ZTlmMjlkMzU2OCBiY2Fubm9uLW9iamNhcAorNTE4NjQgOTVjZjMxZTY5MzM1MDFmMmQzZjI5NmRiYjA3ZDI2NTExMzBiM2Y4YSBiY2Fubm9uLW9iamNhcAorNTE4NjUgNDE3NTAxZWUzZTg2ZmZhY2ViZGYwZTZhOGIyZDFlOTc0NTk0ZjVjZCBsZWdhY3ktdHJ1bmsKKzUxODY2IGU1N2Q4YWU0NTY2OWY0ZDdlMmQ0Y2UzZDdmOGE2MWVlYWYyZTE2ZDkgbGVnYWN5LXRydW5rCis1MTg2NyA1NGI4MmJkMjU2OTNlOWQ3ZjJkZjY4YTM4ZjE5ZWQ1MjlkOWY4Yzg2IGxlZ2FjeS10cnVuaworNTE4NjggNTA0NGQwNjliNTMyOTJlZTAzMGQxNjNmMTYzZjBlODJkZjY4ZmFiMCBsZWdhY3ktdHJ1bmsKKzUxODc0IDEwZWIxZjZiMzA4MDkzNDI2MjdjYTE0NGUwMDNhYmZkZjI0YzM5YTMgYmNhbm5vbi1vYmpjYXAKKzUxODc1IDBiYzM5YzEzMTlkZGMwMzdhYjJhYjQwNDQ5ZmYzY2Y4MjkyZmNhYWQgYmNhbm5vbi1vYmpjYXAKKzUxODc2IDA3YTQ0YmZmOTY3ZjU4MjZjMzUxMDgxZDZjZWRiNzEyOWQxMzIzNmIgcmVsZWFzZTI1LW1haW50Cis1MTg3NyA3NGU0MjRjMTc4ZjQ1YzIzOWYxOTU5YWU0NTZkNTJhZTU3OTc1NjI3IGxlZ2FjeS10cnVuaworNTE4NzggMmIwNWVjNWRmNzc3Nzk3ZDQ4ZWQzMWJiMGQwNTY4MzhlNWZlNGUzZCBsZWdhY3ktdHJ1bmsKKzUxODc5IGEwMjM1ZDQzNWVkNGU3MmQ0OWM1YTUzZjJjMTU3ZmY4Mjc1YjI1ZDIgYmNhbm5vbi1vYmpjYXAKKzUxODgwIDc1MTc5YzJlY2FjMWM1YjBmMzVjNDY3NzIxNDI5YjAyOWE1ZmRhYmIgYmNhbm5vbi1vYmpjYXAKKzUxODgxIGRhZGEzNGI0ZDZiNmE0ZTJkN2E4OWYwYWMwM2MwMGMzYzc0NWEyMjQgYmNhbm5vbi1vYmpjYXAKKzUxODgyIDM0YWIwNTI3NDVlYzJhNzBlNGEyMWNiNzYwZjVhYTA0NTNhZThmMjYgYmNhbm5vbi1vYmpjYXAKKzUxODgzIDBlY2UyOGNiNWI5ZTczZThjZjBmNjVlMjNlYTNhMjY5NTViYWY4MTUgbGVnYWN5LXRydW5rCis1MTg4NCA4OTlkNGRjMTJjMzc4ZGJlMjViNjg5YzQ1MWViNTQ1ZmQ2OGMxNDdlIHJlbGVhc2UyNS1tYWludAorNTE4ODUgYjY3MzNhMzZlZWNkZjY1NTZhODM4YzE3YTQzZTdlZjYyNGQzZjEyMiBsZWdhY3ktdHJ1bmsKKzUxODg2IDg3Mzc1OWIwYjEyNjE2YTgwNGUwMWU5ZmFhZjQ3M2ZiZWUyZjZmZGYgcmVsZWFzZTI1LW1haW50Cis1MTg4OCA0ZjM2YzQxNTk2YjE4ZDBkZmY3OWNjYzFkNGYxYzU5MWJiNGY0YWMyIHJlbGVhc2UyNS1tYWludAorNTE4ODkgMmU5OTVmMjQ0ZDZiNjJjOTQwOTA5ZWMwMjFjNzdiZGJkZDkyOTdhZiBsZWdhY3ktdHJ1bmsKKzUxODkwIDJhMzQ5OGQ4NzQxYjQyYzUxYWE0YjM3OWQ0NmEzNGE0YTY2ZWE0MzggcmVsZWFzZTI1LW1haW50Cis1MTg5MSBmOWM5ZjhhMDVhODk0YmQxNDA2MmNiMDQxZGQ1MDJjZDk5MDEzM2UxIGxlZ2FjeS10cnVuaworNTE4OTIgOGQzYjc2NDM1OTkyMWFjZDczMDEyZjg3YzcxNGNiODcyYzUxMzc1OCBiY2Fubm9uLW9iamNhcAorNTE4OTYgMzMwYmRhMjQwNWVlNmM2ODIxODNkYzVlYWE1MzEwYjg4OTIzMDQwMyBiY2Fubm9uLW9iamNhcAorNTE4OTcgMTY2MGVhYTBjYzI2NjMzMzBjMzEzOGIyZmNiMmIxZWRiZTIyOGU0OCBsZWdhY3ktdHJ1bmsKKzUxOTAxIGY1ZjRkMmZkYjYyYzI5YWY5NDQwM2EyMWI3M2Y0YjRjMWE3ZTQwYmUgYmNhbm5vbi1vYmpjYXAKKzUxOTAyIGQ0M2Q5NDIyYjdhYzc5ZjNiNmUxY2ZmZGRiZmNiNDMxMDc1M2I5NzAgcmVsZWFzZTI1LW1haW50Cis1MTkwMyBjZWRlYTllMjNhOTU1Yzc1NTljMjdhZGUzMmVjNDBmZDAwMDdkZTNjIGxlZ2FjeS10cnVuaworNTE5MDQgYmI5ZTkxNGVkZTA1MWZhYjAwYjIyY2YwMjg4ZmY0Y2Y3MTY2NzVmMiBsZWdhY3ktdHJ1bmsKKzUxOTA1IDU5MGE5OGE3MGJmOWQ5NDVkYTZjMWY2YzRhZDUzZDQzMDhkYTVjMDggcmVsZWFzZTI1LW1haW50Cis1MTkwNiA2YjAxYTljNDU1ZGJkMjY1ZGRlZmI3YTc1OGJiZTM1MmMzZjZjNDczIHJlbGVhc2UyNS1tYWludAorNTE5MDcgNzY3OTYyZjg4ODM0NjA5ZjhlODk0ODI3ZTg4ZGZiNDQyMTFhMTk0YSByZWxlYXNlMjUtbWFpbnQKKzUxOTA4IGMxMGE3MWNmMTZlNDcxNDI1ZTZkNzU2NGUzZjdhNjQ4ZjE0YjcwMmUgcmVsZWFzZTI1LW1haW50Cis1MTkwOSA3ZjVmNDZiNTY2MTFjMTUzYWVjN2IwNTNjMDBmMWQ4OTAzZmExZWVkIGJjYW5ub24tb2JqY2FwCis1MTkxMCAyMDE0NzQxNWU5N2Y5YjBjZDk1MWMxZWU1ZDY4YWYyOWEyMzg4OGQzIGJjYW5ub24tb2JqY2FwCis1MTkxMSBjZTI0Nzc4YTY0OWYxYWU1M2Y1ZDAwNzU4MjE0NDViYTI0OTE1YmY1IGJjYW5ub24tb2JqY2FwCis1MTkxMiA3NzUyMzc4MDc3YTUzN2NiM2NkMmE0YzBmYTk3NTI3YmM3MTA2MDA4IGJjYW5ub24tb2JqY2FwCis1MTkxMyBiNDQ3MGE1NDk5M2EzODdjNTc5YmY2NzliMjNhMWM1NDY3ZWQ5ZDM0IGxlZ2FjeS10cnVuaworNTE5MTQgNzgzOTQxYTAwZTllMjk1MjI5MWMwOGM4NDI3ZTY5YWVjYmYxN2Q2YiBiY2Fubm9uLW9iamNhcAorNTE5MTUgZTcwYTdiNzE5N2I2ODQxZDc4MzY3MDgwYjZlZjYzMDFmMGFmNWFkMyBiY2Fubm9uLW9iamNhcAorNTE5MTYgYjZlZTRkMzU0MWMwYTUyODgxMjFkMjg4YWRmZDIzYTk4MTIzNjY4MCBiY2Fubm9uLW9iamNhcAorNTE5MTcgMDk0ZGFlNDlhYmViYjM0ZGEzOGMzYjA2NDNiYTgwNzZjNzljYmYyOCBiY2Fubm9uLW9iamNhcAorNTE5MTggZTAzNmZjOWM2ODI3MTQ3N2M5NjVmYTY5MjNiYjJlZWU4MTJiM2Y4YSByZWxlYXNlMjUtbWFpbnQKKzUxOTE5IGJjNzcyZmI1MTM5Mjk1ZDE1OGI3Mjc0NTQ2ZjhhZDZkY2ZjYjA3ZDYgcmVsZWFzZTI0LW1haW50Cis1MTkyMCA3MWI4MDI0MGFjM2RkYWU0MTkyYTJjNTBhMWNiYzU0ZGI2Y2RkZmJiIGxlZ2FjeS10cnVuaworNTE5MjYgMDE3MTEwOGFiNTE1NThlYjA2YjdhYjRlNzNkMDZmNTFjODMzODNmNSBsZWdhY3ktdHJ1bmsKKzUxOTI3IDQ4ODhkMmQ0ZDI5MmVjMzhkNWUzZTk0MzE5MTM5M2UwN2NmMzJjYzcgbGVnYWN5LXRydW5rCis1MTkyOCA3MWUwZjNmYzU3ZGE3NzhmNGZlMDg0OWI2NGE2NWVhYTYxMWRkNTg1IGxlZ2FjeS10cnVuaworNTE5MjkgYjMwM2QyYzJjNmM1NjQzNDNhMDM2N2UwZmY4YTZhY2U3YWM1OTczOCBiY2Fubm9uLW9iamNhcAorNTE5MzkgZWEyNGE5YzhlZGEyNThiOTNhZWY1OTEzYzI4ODNkYzQzNTZkZDEyZiBiY2Fubm9uLW9iamNhcAorNTE5NDAgMDAzMWZjMmUwNWUyODZlMmJhZjg5MzdlN2IzM2M3MmJlZTk3ZTJlZCBiY2Fubm9uLW9iamNhcAorNTE5NDEgMDE1MWMwN2M1M2U1MTA2MjczMmMwMzdlMjU2NDViZTIzZjBkZjdhNiBiY2Fubm9uLW9iamNhcAorNTE5NDIgZGU0OTI0ZDAzOTAzZjc0Yzg1OWZjMjMwN2ViYjJkYjNiZmU0YzkwNyBiY2Fubm9uLW9iamNhcAorNTE5NDMgMWY0ODk3ZjVmYjJiZWJhNjE4OGY0ZTIzNGUwMmY0YjBmMjhlN2RhMSBiY2Fubm9uLW9iamNhcAorNTE5NDQgNDNiYWY2YmIwZjhiMGI0ZTczZDBlMDJlOGViZTBmYjNlZWQ0MDViMiBiY2Fubm9uLW9iamNhcAorNTE5NDUgNTZmMGVjNTBkNzM3MTc0OGM5ODllNjFjZDliMjZiNTcwZTUyMzllMyBiY2Fubm9uLW9iamNhcAorNTE5NDkgOTM2Mjk3MDQ3YzE3OWVkODc3OWZjMjNiMWU2YjQzNmYzMjQ2YTI1YyBsZWdhY3ktdHJ1bmsKKzUxOTUwIDY5NTMwYWEyMWI4YTY0OWZmNzQ3MGFlMTRmOTgxYzNjYWQzYzJhNjYgbGVnYWN5LXRydW5rCis1MTk1MSAzNWJmMTZlN2YxMWNkZTE2YzQ1ZDZjMDdmMzhjNTMyOWNhYTg1MmFlIHJlbGVhc2UyNS1tYWludAorNTE5NTIgZWZmODhjNmFhYWMzNzQ3NmRjYmQ5Yzk3NzhjYTYxMWQ4NTJhNDY5MCByZWxlYXNlMjUtbWFpbnQKKzUxOTUzIGRlNDg2NmQ0NGYxMzc3NWM1ZmRhMzJkM2ZiNzE5Y2IzYmI1NzMxNTQgbGVnYWN5LXRydW5rCis1MTk1NCA3ZjZiNGZjNjdiYjZiM2YzOTE3OWViODFiODQwYTBhMTU5OWIzMWQ0IHJlbGVhc2UyNS1tYWludAorNTE5NTggZGY5OGQ5NzMxMzkwZjE0NzY4MTdmOTQ0OTQ0ODVmN2FkYzBhMGViYyBiY2Fubm9uLW9iamNhcAorNTE5NTkgMDg5ZGRmMTg3N2NjMDc4ZDYxNDY2ZDE0MmRkYTEyZDk1NGE5N2FlMCBiY2Fubm9uLW9iamNhcAorNTE5NzEgMjRmOWExMzA4NGIwMTc0NzQ0MzkyZmQ4YzA3YmI2M2I3ODhhNjg1ZCBsZWdhY3ktdHJ1bmsKKzUxOTcyIGI4Y2I3MjAxMzc5YzY3OTUwZGUxMWFlZmQzYzAzMTExMTQ0MzQxY2IgbGVnYWN5LXRydW5rCis1MTk3MyBhZWExOWMyYTQ1YmZjOTRhZTE2MTU3OTNiYTYwYWM5NDkwZjM0ZDI0IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3NCAyNjYxODUyOGZhM2I3NjRiMDhkNjc4MWIzYjgzMzUxYmE2NjlkNTMxIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3NSA5NGE4Y2Q1ODg4ZTcwYjA3MDNiNTZkNjRiMWExMTQ0MTM0M2Q0MzhkIGxlZ2FjeS10cnVuaworNTE5NzYgMGI2M2MyODU5MzRmYTA1MGZiZmI0YWI2N2I3ZjJmYjEyMmJlOTllNyB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzcgNjliZTAxNWE0YjUxYzAzZDI0OTBhNDk1NzQzZjNkODhjOWFmNWRmNCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzggYzc4MWM5ODBjOWEwZGQ4ODBiOTMxZGYxYTVjOGZlYzA0MmIyMzY5ZCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzkgMDc5ZjliZWIxZDdmYTM1OTIyYjI4NjgwY2NkY2E2NzUxZWEwMGI2MiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODAgNTg3MmJhYmZmNjM4NGY0NmU1M2U1Mzk5NGQ4MWRmZWJjMmQ2Mjc4ZiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODEgZTNjNWYzYjU5MjcxZjAyZWFmMGMzNmM5MDg4NzdmZGY2M2U4ZDI0YyB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODIgZTI3NDMyMjI1ODFkMjhkYmU5ZmE4ZmIxYmY3ZjA0MjAwMGViNjgxZSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODMgNzQzOTdiMDA5OTE0MWZjYWZkOWVjMjJjYWY3ZWRlNzlmNWVjMzYxNSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODQgYjk0Mjc4ZTFiY2IzMTQxYTUwMmQ3MzYzNWQ0MzcxOGEyOTY2MzQ1NyB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5ODYgMDRjOTk4ZmYyOGI3ZDQxY2QzMjk3NjQ3MjFlODU2MGQ0YjRiZjg1ZiBsZWdhY3ktdHJ1bmsKKzUxOTg3IGNhYjA1NjkwM2IzZGQyNjQ5MmYwNmVhOTMyOGZlNWEzM2Y5NDBmMzcgbGVnYWN5LXRydW5rCis1MTk4OCBjMjBiZDc0YWM5YTY3ZGRlYjIyNzVmMDQ0MTgwNWFiYTZlYWEyNzY1IHJlbGVhc2UyNS1tYWludAorNTE5ODkgNDc5ZTM4OWNiNDYyZjhkY2JhODg1Y2ViYzlhMDI2NWVhYTcxODY0NyBsZWdhY3ktdHJ1bmsKKzUxOTkwIDdmNmRkZjU1NWMxMjBiYzkzNWE4MjllNzUwY2RmMTFkZDBmZTMzMTkgbGVnYWN5LXRydW5rCis1MTk5MSBkOTk3NTMzMTQ0NTMzNTNkZGVlYjk5NmZiN2QwNzU3MjI5OWRkODAwIGxlZ2FjeS10cnVuaworNTE5OTIgYjUyOTJmOTY3ODc3Y2MzNDlhMTQzNTkyYTU1YmNmMTUzYTJmOTM2ZSByZWxlYXNlMjUtbWFpbnQKKzUxOTkzIDI1YmNkZjNjZDE5NDIxZDQzNDQ3ZTRlZjZiMTg0ODljYjA2OGRmOTkgbGVnYWN5LXRydW5rCis1MTk5NCAzNDc4YzE2MDIwN2I3OWQ2ZjhjMTg1ZTQyMzBjNjJlODI1MDI4MjdjIHJlbGVhc2UyNS1tYWludAorNTE5OTUgZWNhYWZjMzJjNTAwMDYzMTQ0OWE2MDFiODQ4NjE0MWFiYWY2MTg1YSBsZWdhY3ktdHJ1bmsKKzUxOTk2IGNjZGRiMjI2MTFkYzZmMGQ1NjAwY2ViMTE1Y2VmOWYwMjQwYTg3MjIgcmVsZWFzZTI1LW1haW50Cis1MTk5NyA2MDNjZGU1ZWQxZWJjNTdmNjk1OTE5YzI3OWFhMzgzNGIzMjY0ZWNiIHJlbGVhc2UyNS1tYWludAorNTE5OTggM2M3ZjE4ODFlODJhOTZhZTQ2NWJjMDJhZjJjZWU5ZWIyZjQ0YTFhOSByZWxlYXNlMjUtbWFpbnQKKzUxOTk5IGRlYzdkOTkzYjY4ZjI0MTQ5YWQ4OGYxOTI4MmVlYzJlMWVhYjU2YjQgcmVsZWFzZTI1LW1haW50Cis1MjAwMCBmOGE3ZGZiZjgxZDA4OTIyYjEwNWY3NmRlMzAzNThmNjA2MzgwMDQ3IGxlZ2FjeS10cnVuaworNTIwMDUgNzhjNWEwMzlmYTNhNjQyM2NlMDgwZDA0OWFiNDhhMzQwNTIyODg0NSBiY2Fubm9uLW9iamNhcAorNTIwMTAgNzhkNGU1ZTQ3MGNmODI0M2E5YzY3YTA3Yzg1ZmFlYWFiNmJlZGJkNyBiY2Fubm9uLW9iamNhcAorNTIwMTEgYjA3MjIyOGM5NWEyMDQwNTAxMDdlYTIyNTk4NGQxY2Q4NWFiMTBjNiBsZWdhY3ktdHJ1bmsKKzUyMDE0IDc0ZGNmZDM2ZjdjNGEzOWIyNTY1YThhM2YyZDI2OWQxOWI1NmMyNWQgbGVnYWN5LXRydW5rCis1MjAxNSBlNmE0ZTA2Nzg5OTNjZTg2ZDBkYTdhOGFmZjMwOWQ3YWE2MGUyZmI0IHJlbGVhc2UyNC1tYWludAorNTIwMTYgOTM0N2MyYjQ1MWJhZDliMWRhM2ZiYTI3YmE2NDViMmE4ZmY1MTMwYiByZWxlYXNlMjQtbWFpbnQKKzUyMDE3IDZmYjQ2ZTg3ZDVmOTRjNjBlNTQ4ZmMxNDNjNTg0YTA0ZGE1NDFhMWMgcmVsZWFzZTI0LW1haW50Cis1MjAxOCAzYjcwZGE5ZWUzNjg3NTkzMDJlN2RiYzU0N2E3NjllNzE1NTAyMDBmIGxlZ2FjeS10cnVuaworNTIwMTkgYTUyMTQyYmMxNThmNjVkNWUzNjdjYjZiNzI0N2U3ZDAwNzVlODI4MCByZWxlYXNlMjQtbWFpbnQKKzUyMDIwIDY4YTU2YTE1ZDc1NTkzMzZjNmE1YmZlNWYzMTBhN2ZhMTQ2NGRkZGQgcmVsZWFzZTI1LW1haW50Cis1MjAyMSA5NGRmYmI5ZGFjNTc4YjAzN2RmYmQyODRkODEyNDZkNjc0NTNjZmMyIHJlbGVhc2UyNC1tYWludAorNTIwMjIgYzQ5ZjAyYTUwY2FkZDZmODAxY2I1ZTI3ZDhlYWEzYmRjZWI2NWY2YSBiY2Fubm9uLW9iamNhcAorNTIwMjggMTY5NmQ4NWJhMDQzNTY0NWEyYWNmNDc1NDI0ZWQ4OTI5NThjOGUxNiByZWxlYXNlMjQtbWFpbnQKKzUyMDI5IGFmMzE4NmM2NDA5MjA3YzU4Y2U3ZDI1MTYxOTFjZDhkNTFmYTY1ODQgcmVsZWFzZTI0LW1haW50Cis1MjAzMCA4ODRkMWNiNzAyMjE1YmI3ZDAyZDY0NjY3MWI4NTMxNTMxOTZmOGM1IHJlbGVhc2UyNC1tYWludAorNTIwMzEgMTI4NjlhYWU5ZjZkOWVkZmJlOGI2OGI0MjJmMDFiMDY2NWZjOGY0NSBiY2Fubm9uLW9iamNhcAorNTIwMzIgZjkwYmEzMDZjMjg3YTQ4ZGIwMTAzNTlkMmNhYzlkOTFkYmI4ZDM5MyBsZWdhY3ktdHJ1bmsKKzUyMDMzIDM1MDc3NzVmNGVkNDFkNTZhMmE3YTg3OGFmZWQyODY4Zjc2MzFmZWQgYmNhbm5vbi1vYmpjYXAKKzUyMDM1IGZiMjg5ZWUxY2Q2MDdiMzc5YTAxZWFjMjYwOGU5NjkzYTQ5ZTRhZTAgcmVsZWFzZTI0LW1haW50Cis1MjAzNiBhYjc5ZWQwZjkyODE3NWUxOTA3NTIyMWE2OGJkMTk2MDNiY2NlZWU1IHJlbGVhc2UyNC1tYWludAorNTIwMzcgY2MxOGZkYWQxMDhiN2Q3MjAwNzk3ZWIwNWUxYzUwYzM3OTA4MTEwNiByZWxlYXNlMjQtbWFpbnQKKzUyMDQwIDRmMTE3NDVjN2U1ZmNlODg4MTQ4NmNjOGZmNjQ3ZmMzNWZjOWI4MzcgcmVsZWFzZTI0LW1haW50Cis1MjA0MSBjMTFjYWUyYjlhNzVmMmE4MTQxZDg3YTAxNjUwMzg4MDE3ZDQ5YTdiIHJlbGVhc2UyNC1tYWludAorNTIwNDIgMjYzMmM5YWY2NGFiYjI1Mjc2MTRiNGNhMTZhY2I4OTI4ZjZmYzVjNyByZWxlYXNlMjQtbWFpbnQKKzUyMDQzIDE1ZGRhYmU2M2Q5NTJjNjdiMzUzYWNlM2QyMjgzNzgzMGZiZTU2YjUgcmVsZWFzZTI0LW1haW50Cis1MjA0NCAxZTVmMGIwNDY2ZDhkZjBkYmE5YzRmMDAxNjE0ZTVhNjUwM2I4OGIxIHJlbGVhc2UyNC1tYWludAorNTIwNDUgOWUwZmI5NTQ3OTFlYzkzNDkyZWNhN2FlMjJmZjkzOGNjYjE1MzI1YyByZWxlYXNlMjQtbWFpbnQKKzUyMDQ4IDA1ODYxNzQ5ZWFjZDIxMWFmYjJjZjEzYWQ5ZDBhZDNmZjgwN2RmZjEgbGVnYWN5LXRydW5rCis1MjA0OSAwMWMwM2E3MTFiMTVjYjFlZDAxZmQzZjBkMzE0ZDMwMDUzZTY2ZjhlIHJlbGVhc2UyNS1tYWludAorNTIwNTAgNTJjZGJlNGI3NjQ0ZDcyYWE5MmNhMGZjNjU0ODc4NjE0Y2MxM2Q2ZSByZWxlYXNlMjUtbWFpbnQKKzUyMDUxIDBlZGYzOTk5NjE4YWUyOGNmOTY4YTliMDBlZGIwMjcyY2YxYjEzYWIgbGVnYWN5LXRydW5rCis1MjA1MiAxZGMyMmNjMjAxMzJmMmFjMDU5OTc3YTVjNGM3ZmEyYThjMzA4NDgyIHJlbGVhc2UyNC1tYWludAorNTIwNTMgZGU3OWYxODcwYWU4ZjFkODZkMWY1ODUxODY4MWQzNDZlZmUzNWZlYSBsZWdhY3ktdHJ1bmsKKzUyMDU0IDVkZmZhMzVjYzY0MzAyYzJjM2RkYTNhZTFmY2RiYWM4ZDZmYzgyOWIgcmVsZWFzZTI0LW1haW50Cis1MjA1NSBkODMzODA2YzczNTFhNTkxNzI2MmM4ODkwMGM1MmZjODFkYzY1YTY0IHJlbGVhc2UyNS1tYWludAorNTIwNTYgYzQ3N2EwZTJiMDY3OTlkYWFkODk0NTJkOTgxYzc1ZGNjNDljMzlkMSBsZWdhY3ktdHJ1bmsKKzUyMDU3IDJjODI0YThhMWZiOGNkNTZhYThlYjZmZWZmOWNhNTZkMzUzMWZkYTYgcmVsZWFzZTI1LW1haW50Cis1MjA1OCA0OWZiZGRmYjEyMTcwMWRkZWUxNjRhYzc1MmIxMzIxMjgwZmJjZjY4IGxlZ2FjeS10cnVuaworNTIwNTkgMTNjZjM0NGRlOGM5ODk4NGYzNWY4ZDM4MTljMTgxNjg0NDE1MTRjNSByZWxlYXNlMjQtbWFpbnQKKzUyMDYwIDUyNDYwYjA5MmI1YTY2ZDVhMzU5M2ExNmYyZTRjNzYzMWI4OWQ4ZjYgcmVsZWFzZTI1LW1haW50Cis1MjA2MSBlMWFiNDY1M2ViYzA5MzI1OTZiNmIwNjQyYzJmMGU4OWIxOTJjMTNiIGxlZ2FjeS10cnVuaworNTIwNjIgMzk4NmJmZTUzMTAxZGIzMTI5MjI5NDNhNmM5MzEzZjdlOTk3NDljZiByZWxlYXNlMjUtbWFpbnQKKzUyMDYzIGU3YTU4MzQxYjJlOGY3NTM1ZDc3Y2QxNGMyMjdiMmE3MThkMzM1ZTEgbGVnYWN5LXRydW5rCis1MjA2NCAxYmY1MWQyZjQ2OWQyZDJmYWY3ODNiYzY4ZjUzY2VmOWJmMjg0NmI5IHJlbGVhc2UyNS1tYWludAorNTIwNjUgYjlhMmVmMTMwMmQ0N2NjZDUxNTBkNTkzYTE5YzYxZTVhMDNiNjI1ZCBsZWdhY3ktdHJ1bmsKKzUyMDY2IDk5ZDFjOTM2NzY3OTRkMmQ0YjU4M2I2NDg2MjdiYWU2YjRmY2U2YjYgcmVsZWFzZTI0LW1haW50Cis1MjA2NyAzMzBkYmNhZGI5MzE3MWY2MjM3ZWIxOGQ3YWE4MWI5OTc0ZGVmNDZhIHJlbGVhc2UyNS1tYWludAorNTIwNjggZmZiOTAxMzc0YTM4MjUzOWE5MDY1N2E1NGM4OWNjZGUwOGZmMmNmNSBsZWdhY3ktdHJ1bmsKKzUyMDY5IGQ5MTgyNmJhYzY1NTVjYjBhNjE0NmI3NTVjNjZjYjQ1ZTNjNGNmNjkgbGVnYWN5LXRydW5rCis1MjA3MCA5NWQyNDczZjc3NzBjYjEwYzZmODkzNWMwMjExNmNkYjc3ZDE0MzZjIHJlbGVhc2UyNC1tYWludAorNTIwNzEgOWNhZjVhOWRhNTU0ZDBiYWIzYmExYWM4NDk2MmM0NmIwNzU0YmZjMCByZWxlYXNlMjUtbWFpbnQKKzUyMDcyIGI3YWU4OTc3ZDA2ZTQ5N2Q2ZmRhZGVhYTBjODZkMzM2YWVkY2VhY2QgbGVnYWN5LXRydW5rCis1MjA3MyA5YmUwMzIyNmE3YmY4ZGE5OWVkZjE3OTBhZTU1OTg2MjMyZmViYTMyIHJlbGVhc2UyNC1tYWludAorNTIwNzQgY2Y1OGZiODQ1MGJhMzA1ZDRmYzA1OWQ5MDk1YTVlYWEwMDI5N2NjZSByZWxlYXNlMjUtbWFpbnQKKzUyMDc1IDQwZTJmZWUwM2E5NDkyMjUwOThiYjg3ZDRiZmI0MjhmN2ZjZGNmYmEgbGVnYWN5LXRydW5rCis1MjA3NiA1MTMwYjY4YjU0ZTk0YThiMDkyMjNhZDk1MmNhYTE3MDY1M2YwZjEwIHJlbGVhc2UyNC1tYWludAorNTIwNzcgZGZkODA5ZGNmNjgwMDBmZTZhNGE2ODBhMjUwYzFmOWViOThkMmVjMiByZWxlYXNlMjUtbWFpbnQKKzUyMDc4IGM4OWE3NTZjMDk2NWE5MGQzNWNhNjIxYjMwYjdkNDUyMWEyNmVlNTQgbGVnYWN5LXRydW5rCis1MjA3OSA5MDcyOGRmYzMzZTg1ODg0ZGNjZWNiODM2ZTViMDE0NWVhZWY4NDczIHJlbGVhc2UyNS1tYWludAorNTIwODAgZDc0MzM4MTEzMWQ2YzlmMWI4OTNlMTM2YTE2ODRlZWU3NzYxODliYiBsZWdhY3ktdHJ1bmsKKzUyMDgxIGJmNDdkZTZkOWM5MThlMjA2YzNhYjdmY2RlY2Y0NTFkODZmZDFiMTggcmVsZWFzZTI0LW1haW50Cis1MjA4MyAyNTdkYWYzOWIwOGM2OGU2MmY0ZTcwZDU1MTM4ZDIyNjlhODA4YzIxIGxlZ2FjeS10cnVuaworNTIwODQgODllNGFlYmJmMzFjNDYwOTNiM2NjYTdjODE4MjNjODcxZGNiNmVjOSBsZWdhY3ktdHJ1bmsKKzUyMDg2IDAwYWY2OTg3MDI2YTZkNWMxZTJkM2UxNjQ1ZGQxZjZhOTdiMzkwYTYgbGVnYWN5LXRydW5rCis1MjA4NyAxZGEwNGM4ZWU4ZmYwMDMwODg3MDc4YThiZGE2OGUyNDVmNmFkN2VmIHJlbGVhc2UyNS1tYWludAorNTIwODggOWZjYWE4ZWU4YzIyZmRiM2VkNjNjMzNhMzYzNzkwODU3NmJhNWUxMyByZWxlYXNlMjQtbWFpbnQKKzUyMDg5IDE2OTdkMGQ0ZWYzMzdhODgyMmI1OTM1MGE3YmFhMDE1YWUwOTQ3YTcgbGVnYWN5LXRydW5rCis1MjA5MCA1YzM2ZWM1ZmQzYzIzNmViNmMwNDQwY2ZiZTVmZDc4ZTk5Zjg5ODQ2IHJlbGVhc2UyNS1tYWludAorNTIwOTEgYzBlNzFhNGI3MWM3NDZmMGI4YmRhYjUwNThjMWI1YTIzZWJmZjQxZiByZWxlYXNlMjQtbWFpbnQKKzUyMDkyIGNkYzM2N2FiM2JiZmNiMTFmZGQ0ZjVjY2NjMmRlZTg3MTRiMTYyNTcgcGVwMzAyX3BoYXNlMgorNTIwOTMgYjE0NDlhN2UxNWVkZWVhZDg1N2Y1M2NiODBmZjVkZTkzNmZmY2ZkYiBwZXAzMDJfcGhhc2UyCis1MjA5NCBiNDU1M2IxMmUyNWJlOWFjZjYzYmRiMTFhMzZjN2Y5MWYzMGY3ZTMwIHBlcDMwMl9waGFzZTIKKzUyMDk1IGIyMmJhYTE1NDE0NzRmNTFmYTJjY2Y1MmJjMzIyOWQ5MjljOTZlMmIgcGVwMzAyX3BoYXNlMgorNTIwOTYgODRhZmEzNjZlZWU3YTJiMDY1NDFlOWRiODNhMGEzNDE4YzcxMjMxMSByZWxlYXNlMjQtbWFpbnQKKzUyMDk3IDQ1ZGJjYjBlOWZhOWZkNGY5MTg2Mzk3MDIxNGE5MGIwNmUwOGY0ZTggcmVsZWFzZTI0LW1haW50Cis1MjA5OCA4MTgxMThjM2EzNDBkZmExMjdhMmZlYTNjZmRhZmUzMzUyNzJjMTQ2IHJlbGVhc2UyNC1tYWludAorNTIwOTkgNTgwZjZhNjk1MTcyMzk3NWM1ZWM4MzFmNTQ2ZTkxZjAwZjVlNTU0YiByZWxlYXNlMjQtbWFpbnQKKzUyMTAwIDJjODlkNjE2YTllZDM3YzAxZjJiYjU2N2U4MDA3MDU0NGJlYTZhMGEgbGVnYWN5LXRydW5rCis1MjEwMSAyZTFjNDkzOTViOTYxZjY1NTU0ZjlhMWE2ZDY3OTI5NTRmN2ZmOTM2IGxlZ2FjeS10cnVuaworNTIxMDIgNGRhNGRlOTU0MDEyYjQ5ZjM1OWI0MWI5ZTU0NTdiZjc3YWI4OTZlYSBsZWdhY3ktdHJ1bmsKKzUyMTAzIGYwMTllNGY4NjI4NzdhYTdiMGI5NDA5NjJiY2E5ZGIzMmVkNjc2NzUgcmVsZWFzZTI0LW1haW50Cis1MjEwNCAyOGE5NGJmN2Y2N2YzYzRiMWIyYzhmZjBkZGUzYjBmZjcyMTA1YjRkIHJlbGVhc2UyNC1tYWludAorNTIxMDUgZGU3YzBjYjVhODcyOTVjNmExNDAzNjdhZjBiYjJlYTRjNGZkOTEyZCByZWxlYXNlMjQtbWFpbnQKKzUyMTA2IGIzMzJlMWFjNjZjY2Q3YzZlZjdmMGZlNjYzYTA3YmNkYmVkYjJjZmQgcmVsZWFzZTI0LW1haW50Cis1MjEwNyAwNjI5MWVhZGRlMmRiNWEyZWNkMzNhNGIyNzE4NDFmMzVjMzZmNGZiIHJlbGVhc2UyNC1tYWludAorNTIxMDggNDQzYjg3M2Y5ZWI5MDg1NWVlNGMyZmI1Mjc2ZTlkNDNlZjhiZmMwZiByZWxlYXNlMjQtbWFpbnQKKzUyMTA5IDVkZDZjOTBkNDIyMmNiOWU2ZDc2YTNiNmY4ZTQyYzc4NzdhNDA0ZWUgcmVsZWFzZTI0LW1haW50Cis1MjExMCA2YjFjNGQ3ZDNhMjZjMzA1NDVmZmYwM2Q0OWU1YWU1ZGEzOTU1NTlhIHJlbGVhc2UyNC1tYWludAorNTIxMTEgYjdlMzRmYmM4MGFkNjliY2ZmY2Y4ZTAxMDhmZjg0OGEyYTYyZjE4YSByZWxlYXNlMjQtbWFpbnQKKzUyMTEyIDUyZTk5NjRlZjkyMmQ3NzMwNDhmYmE4M2YyN2M3NTYwODk3NGZmODQgcmVsZWFzZTI0LW1haW50Cis1MjExMyA1NGQxNzdlZGU4ODM4ODAyZDY5YjBlOTgxZWM2MjhmYjY0OTk2YmM2IHJlbGVhc2UyNC1tYWludAorNTIxMTQgOGM4M2ZkNzljZWU1YmUzMDY0Njc2MjEzNDE1NTQxOWIwNTA0YjE0MSByZWxlYXNlMjQtbWFpbnQKKzUyMTE1IGVmMDllMjZlZjA5OWE0MzkxNWIwOGM5ZWE5YTA4MzFhOTQ2ODA4ZjUgcmVsZWFzZTI0LW1haW50Cis1MjExNiAyZjIzOGEyY2QxODlkZmMzN2Q1N2I1M2E3MDBlNDA4YmQzNThmNzFkIHJlbGVhc2UyNC1tYWludAorNTIxMTcgMGI2YjM2MGU5MjE3OTUxMzExNmRkOGU0ZTRlYjc0YWFkODE5NGJjZiByZWxlYXNlMjQtbWFpbnQKKzUyMTE4IDllNzYzYmNkMTNjYjlmZWJiYzM2Nzg2NTRiYTdkY2NkZTI4NjRiNGIgcmVsZWFzZTI0LW1haW50Cis1MjExOSAwZDM1YjlmOTRiMTUxNmNmMmY1ZWUyNmUxYzFiMWE1MDY1ZTY2Y2E3IHJlbGVhc2UyNC1tYWludAorNTIxMjAgOTE2NzkyODdjYjk2Y2Y5ODZjMDI3MjQzYmQ4MDEwZWFkZTU1YmNjOSByZWxlYXNlMjQtbWFpbnQKKzUyMTIxIDQ3YWIwYzI3ZGQxZjkyMmY0ZjYwZGIzN2YwNGI1ZTU3ZTlkMjM3OGMgbGVnYWN5LXRydW5rCis1MjEyMiAzNjBkMDk3MWE2ZWVmMWQ4NzhmMGEwZDUzNGE1ZGEzNTVkMTM4NjRjIHBlcDMwMl9waGFzZTIKKzUyMTIzIDllMzViNjJlZDRkMmRmOTc1NzI1OTFjNGQxYzVmYTg1OTI4NjI1OWQgbGVnYWN5LXRydW5rCis1MjEyNCBmZDE0YmI1ODMxY2RhYzRjY2RhNWQ3YTk0MmMwMTI0YTdlYjlkYzVmIHBlcDMwMl9waGFzZTIKKzUyMTI1IGFkYTU2YjU0ZGI5YTc5MzRjYWFjMDk0MzIxYTM3N2RmYjBiYTQ1MDIgcGVwMzAyX3BoYXNlMgorNTIxMjYgNjYwY2QwNzIwODBkZjNlOGIwNDU2ZDAyMTBlZGY0YTk3ZTBlNDMxNyByZWxlYXNlMjUtbWFpbnQKKzUyMTI3IDc5YjY0NGJmMDExNjQ3YTUzMWQzZWZkMmE2M2Q1N2U1ODM5MGQ1NWQgcmVsZWFzZTI0LW1haW50Cis1MjEyOCBkYjZjYTNlYTUzZTViNjdhZTQxODQxZTUwZTc1Y2YyMDgzODU1M2JhIGxlZ2FjeS10cnVuaworNTIxMjkgZjVkN2RlNTAzMWFhNGUyMjdkZGVkMjI3MTk1ODM4ZjYyZmUxZjdiNiBsZWdhY3ktdHJ1bmsKKzUyMTMwIGNhODg3ZDU1YzU5MjEzZDM0ZGU4NzgzNDMyOGFhZjkxM2Q5MjAyYjkgbGVnYWN5LXRydW5rCis1MjEzMSA4YTI4NTNiZjllY2FkM2IxNjVmZGY5N2NlOGFjZDc3NDU2NzQ1NTk1IHJlbGVhc2UyNS1tYWludAorNTIxMzIgZTAzOWNmNmI3ZDQyOWNlNTkwNWE3YTFhODJjNzVhMjEwMGZkNGQ1NCByZWxlYXNlMjQtbWFpbnQKKzUyMTMzIDFiNjFlODI2NjBiYTljOWMwMTIzMjJmNDlkNDcyODFlMDQ1ODhmZWUgcmVsZWFzZTI0LW1haW50Cis1MjEzNCAxMGJiN2FjYmJkYzgzN2UyOWE5YjExZjEzODdhNmIxYjJjYTA0NWZiIHJlbGVhc2UyNC1tYWludAorNTIxMzUgMmFkZDQ0YzBkZTZjN2RhYTY0N2U3ZDhkMjkzNjFlYjQ5ZThhNjU0NyBsZWdhY3ktdHJ1bmsKKzUyMTM2IGE5YjFmNDA0ZTg4YjU5Y2U0ODFmM2JmODI3NjMyZmYxMDMyNjhjMWEgcmVsZWFzZTI0LW1haW50Cis1MjEzNyAwYzhlOWY5MjcyZDVmM2UxNDQ3MWY1NTBiMDQyMGIwODdkMjY3NGY0IHJlbGVhc2UyNC1tYWludAorNTIxMzcgMGMzNjQxMGMzOWU4ZGRiYjg5NTE4NTdkYzRhZGYzM2YyOWZkYzM1YSBsZWdhY3ktdHJ1bmsKKzUyMTM3IDRlYjI4NmU5MzFhOTVkZGRiMThkM2VjYzY5YWM5NzMyNDc1ZjRmM2UgcmVsZWFzZTI1LW1haW50Cis1MjEzOCA3OTg5MzVlMTI5NWU3ZmEzMjQxMDk4MzA4ZTU3NTAyZjUxNWFlZWRmIHJlbGVhc2UyNS1tYWludAorNTIxMzkgNmJhNDAyYjYwMDQxOGE1Njg0NTNmYWI5ZWVlN2YzY2I4YWExNDBhNiBsZWdhY3ktdHJ1bmsKKzUyMTQyIGJmYWMyMzM4OGEyMjRlNzk4YmMyMTFmNWE2ZmI1NmE3OWRkMDE2OTkgcmVsZWFzZTI0LW1haW50Cis1MjE0MyBkZjdhNTQzNWVjYmI1Y2ZmYjU2MGJmMjA5MzMwNGFlOTg1ODUzNTIwIHJlbGVhc2UyNC1tYWludAorNTIxNDQgNDJhYmZiMzkxMzAwYTI1MDc2NTdhOWY1NTIwOWVjYjc1MjIxZTJlNCByZWxlYXNlMjQtbWFpbnQKKzUyMTQ1IDA0ZWMzOTE0MTBjYmU0NmViOTJmZDA5MDMzNTMyNDBmNzdhNzg2YjcgcmVsZWFzZTI0LW1haW50Cis1MjE0NiA1MjcwYjFlMzY2NDhlZjA0Mjc4YWFjZDM4NmFmMTM2Njg2MTFjNTg2IHJlbGVhc2UyNC1tYWludAorNTIxNDcgNDQwNGEzOTgxNDcwNjQxZDMxN2I4OTlhNTU5OTA5MTkzNWY2MjYxNSBsZWdhY3ktdHJ1bmsKKzUyMTQ4IDhhYWEzZDkxZWVmYTdmMjk2Y2YyYzdjM2Q3OTFiZmI3ZTM2MjY2NDIgbGVnYWN5LXRydW5rCis1MjE1MiBiMWU3Mzc3ZWNmMDQ0NjAxMDQzN2MyNGNiY2ZkNmRkMTcwYzFmNDg4IHJlbGVhc2UyNC1tYWludAorNTIxNTMgZTg4YzQyNjdhY2QxYzc5MTc0YmQwYTZhMTM4MjM4M2YyNmM3ZWY2MiByZWxlYXNlMjQtbWFpbnQKKzUyMTU5IGE0YmJmY2E0MGM3Y2Y3NmYwMWI1ZDgyNGFkNmI3MDAzYTJjZTY1ZWYgcmVsZWFzZTI0LW1haW50Cis1MjE2MCBmNmJiZThkNmZhMzMwMzU1ZTJmYTYxYTdkZTgzMjIwNTNhNTRlMmNhIHJlbGVhc2UyNC1tYWludAorNTIxNjEgMWY1ODhhOTgyY2M1NmM3NWViYjgwYWUwNGQ1ODkxNGRkMDkwOWE2YSByZWxlYXNlMjQtbWFpbnQKKzUyMTYyIDgwMTdiM2YyMWY2MmU2YTA0Yjc5OGQzYTYyMmJlYmE0Mjc0MWQzM2MgcmVsZWFzZTI0LW1haW50Cis1MjE2MyBjMjdkOGY4OWFhODkxNTUxOWMxMGZkYTdmZDViNzFhNjIxZjJiZDFiIHJlbGVhc2UyNC1tYWludAorNTIxNjQgOTgxOWNkZDJmY2IxNTY5YWRiYTkzZmMzMjhlZDA1MDIyN2I3MjdjYSByZWxlYXNlMjUtbWFpbnQKKzUyMTY1IGE5ZmVlMWY2MmYxNzYwNjc2NjZjMDhmN2E2ZmFhODhlZjQwNTQ1MjYgcmVsZWFzZTI0LW1haW50Cis1MjE2NiBhYjEzNTc2Mzc0YjFhOTVmZjcwZDllOWEzODVkMGVhMjJhZjBlNTYxIHJlbGVhc2UyNC1tYWludAorNTIxNjcgNWUyNDQ5OTRlNDJlNTM0Mjc1ZGUyNGJiZjFhNWI4NDkzZDVjYWI0NCByZWxlYXNlMjQtbWFpbnQKKzUyMTY4IDVkOTNlNWNjYjMxZTc0Yzc4MzQzOGRkYzc3OTQ4ODE1NTc4MzUwYmYgcmVsZWFzZTI0LW1haW50Cis1MjE3MCBjZDZjZTY2NmVmZjkxYmZhMjEyNjUxMjkwNGI0NTE5N2M0ZDg1YTA3IHJlbGVhc2UyNC1tYWludAorNTIxNzEgZTY1ODM2ODE1NzkxYzdiZjZmZjAwMTIzMWYwNDA4MWMyNDhiYzllNyByZWxlYXNlMjQtbWFpbnQKKzUyMTczIDNiNTdlZWNkYzUwNGExMDBiNWZkMzRkMTZiNDIxOGE5MDk1NTBhNjggcmVsZWFzZTI0LW1haW50Cis1MjE3OCAyYTQ2Yjc2YmViOWViZDlhMjU2MjQyZWRmMDZmNzMxN2EzNTIyNDIxIHJlbGVhc2UyNC1tYWludAorNTIxODYgNDY2M2FjZTIzNDk5Y2U2N2FmMGI0Y2I1ODI5ZGZjYWViOTk2ZmUzZCByZWxlYXNlMjQtbWFpbnQKKzUyMTkwIDdiYmZmMmU5YTljMjE5YzVmOTBlZDUxYjRjYmFiMTMxMmMwNWZiYTIgcmVsZWFzZTI0LW1haW50Cis1MjE5MiA1YmVjNGE2N2ZmMGRhODhkY2Q0NzM4Mjc1NGY4MDg3Yjg2NzllYmI4IHJlbGVhc2UyNC1tYWludAorNTIxOTMgNDVhYzljZTBiYjE1NzE2ZGMxY2RlNDQxNDk5NGJlMTkwMTk5MjhhMiByZWxlYXNlMjQtbWFpbnQKKzUyMTk0IDZiYjM3NWY1NTljZTQ2NzRjMWNlN2MzNDMwM2FhZTk2NjYzOTI0OWUgcmVsZWFzZTI0LW1haW50Cis1MjE5NiBlODFmZjlhZjY0MWRiMjVjYmMzY2EzOTVjYjlhMDkzNGFiMzExZmUyIGxlZ2FjeS10cnVuaworNTIxOTcgNmIxZGRmMzg3YmQxOTVlNThiYTMyNDNjZWFiM2Q2NjY2MzViMzBkZSBwZXAzMDJfcGhhc2UyCis1MjE5OCA1NDM0ZWQ0ZmU4NjIyNjcxZTNhYmRkOTU0YzE1OTQ5NjhiMDA5ZGY0IHJlbGVhc2UyNC1tYWludAorNTIxOTkgNDcxM2Q5OTAwZTllOWNiNzE2MGFkMWE4N2FkYTEzZDhiODM1OTVlNyByZWxlYXNlMjUtbWFpbnQKKzUyMjAwIDc3Njc0YzBmOTIxNDEwNjk3NTZmZDg2ODNjZDNmOTcyNzNmNGZmYzkgbGVnYWN5LXRydW5rCis1MjIwMSA3OGQ3YmVhM2MxMjIwYmEyNWE3YTM5OTNlNjEwOTNiOTlmZjIwNzczIHJlbGVhc2UyNC1tYWludAorNTIyMDIgZGQ1NGJkNmE2YjFlY2E0YzVmMzA3NjY5MjZkYWNmM2NiY2RhNjMyYyByZWxlYXNlMjQtbWFpbnQKKzUyMjAzIDA3NmMyMGNhNWQ3YjZmMzU5YzNmOTU2MTlhNWMyYzRiZTdmYjhlYTIgcmVsZWFzZTI1LW1haW50Cis1MjIwNCAyNmMyZmY3MjgwMjdmZjg5MmUzYWVmMTM2ZTU2YWQyYjE5ODYxYmNmIGxlZ2FjeS10cnVuaworNTIyMDggNWFlYThiMWZkMjYyNTQwZDg0ZjhlYjE3ZDk0OGYxYzFiZjhmNmIyNCBsZWdhY3ktdHJ1bmsKKzUyMjA5IDM1NzE0NzAwY2Y4N2M1NGIwNDMxYWI4NTQ5ZWNiYjI1ZmI1ZjU0ZTQgcmVsZWFzZTI1LW1haW50Cis1MjIxMSAwZTlmZGIxNjRkMjA2MTJkNjViODYyOGQ1YjU1NWZkNzNlYjNiNTIzIGxlZ2FjeS10cnVuaworNTIyMTIgOTk0YWQ3NTBiMGUzYmMwNThjNTg5M2IxYmQ1ZmY5MWQxNzJhYzM1NyBsZWdhY3ktdHJ1bmsKKzUyMjEzIDVkODM5OTRjZDhjZGY0MGE0YjMzNWE4M2FmYWRjNjVlMTQwNThhMzUgbGVnYWN5LXRydW5rCis1MjIxNCBkMjRlYWFlZGE3NDhjNDE2ZjY3MjZkY2I4MmM4NGQ4NDgxMzgzNTk2IHJlbGVhc2UyNC1tYWludAorNTIyMTUgOTExOGVhNzgxZmQ1MmFmNGRhNjQ5NDQxNTIwNjUwMjYxZDU2ZGRkYiByZWxlYXNlMjQtbWFpbnQKKzUyMjE2IDJhMDVlZTRhMjNlMDcxZDFlZDI1ZjhjODA5MTk5MDNhZDYwMjY5MjUgcmVsZWFzZTI0LW1haW50Cis1MjIxOCA3YzM0OTQ0ZDRjODBiZTk3NThjMDBjNmUyYzY2MjE1ZGVkZmYwYTc4IGxlZ2FjeS10cnVuaworNTIyMTkgYTJmMjZmOTQ0YjY1NzE3OWFmZTM2ZDNlNmQ2ZmZlOGEyODJiOTM0NCByZWxlYXNlMjUtbWFpbnQKKzUyMjIwIGVkODhkNmI3YzFmOTY2OTAzYmQ5MWQ5YTllZTdlMDM5MWFiMjMyN2EgcmVsZWFzZTI1LW1haW50Cis1MjIyMSAxNmUyODkyZTFlM2MyYTI2OTE1YzI2MThlNzA1Yzg5YWJkNjQyYzk5IGxlZ2FjeS10cnVuaworNTIyMjIgOWUwNDMxZmQ2NzRhMjRmOThkYjFiY2FiN2FjYjNjNjFlOTAyZjhiYSByZWxlYXNlMjUtbWFpbnQKKzUyMjIzIDM0Nzc5NDM5MWNlNDM0MGJiNWMyMWIxZTgxYzY0NjIyYWQ1ZWVmYTggbGVnYWN5LXRydW5rCis1MjIyNCBkM2MxOTQ3ZDE2NjY1MzFlMWJhMWI5ODFmODEyNmIzZDViMDBhZWM2IHJlbGVhc2UyNC1tYWludAorNTIyMjUgOTNlMmIzMTEyZDc5ZTEwOWVjNWI2NDBhMGQ0MzM1MzViMGYxMjY1ZiByZWxlYXNlMjUtbWFpbnQKKzUyMjI2IDY5OWNjNmE1Yzg2ZWI4YTU5YWIwNTY5MWQ4MDk1YWVmNTFjZTVlNjAgcmVsZWFzZTI0LW1haW50Cis1MjIyNyBiOWQzMzAxZTVmMTk1ZTYwZDk5MzdiYTdhOTllNDViY2MyNDFiNDNhIGxlZ2FjeS10cnVuaworNTIyMjggZGVlZWE0ZGExZjM1NDllZjMzYWRlYzYxOTYwNDljNzRkNDc0YTgyYiByZWxlYXNlMjUtbWFpbnQKKzUyMjI5IDIwNDc0ZDllNzVlMTRiZGMyMDQ0NjlkYWQ0MDZiOGZlMzk3NzhkNjkgbGVnYWN5LXRydW5rCis1MjIzMCBmODA1Y2NjZTJmNTY0ZTA1MmU2ODY4YzBiYjZlMjc0Njk4MjNjN2E0IHJlbGVhc2UyNS1tYWludAorNTIyMzEgNjkzZmY1ZDczNDEyNTFmOTYzMTZlZDE2NWViNGVlZmM0NmQzNWQ4NCByZWxlYXNlMjQtbWFpbnQKKzUyMjMyIDBkYzI2MWQ4YzU3ZmE4NDUzMWYxZDI4M2UxOTNhMDRiNDExZjNiMmEgcmVsZWFzZTI0LW1haW50Cis1MjIzMyA4Mzk2NTk3N2YzNGExYWUzOTQ3NTAwMjBjMzk5ZDg4MzZkMDdkZWY0IGxlZ2FjeS10cnVuaworNTIyMzQgNzY4ODk0ZjMzZjFjMzQ3ZjQ0MDRkZTk1ZGJmM2JlZTM2MzFhZWNlMiByZWxlYXNlMjUtbWFpbnQKKzUyMjM1IDcxMTdmNmU1YWM4Mzk4ZGU3MWJhZmNkMjU2M2MwYjgzMWQ2MGVlNjggcmVsZWFzZTI1LW1haW50Cis1MjIzNiA5MWJlOTY2NDY0MDczMjhhYTc3ZmQzYzQ4MDJjYmM4OGM5ODAwZTYxIGxlZ2FjeS10cnVuaworNTIyMzcgMjBkZDEzYWVlMjMzNDkxMjI5MjFhY2IyMmU3ZTM0NDJjYjg0MWM2NSByZWxlYXNlMjUtbWFpbnQKKzUyMjM4IGMzMzlhMWExNmVjNWI2NDE1NmQyNjBmYzYxOTBkM2Q2ZGYxM2JmMzYgbGVnYWN5LXRydW5rCis1MjIzOSA0NzUyMjhlZDIwNTRjNzgyY2U1MjNjZGE2NjQ0NjhjOTQ1MDQzMDNjIHJlbGVhc2UyNS1tYWludAorNTIyNDAgMGFjZTNjODA2MTE0MTJkYjg4MDFlN2EzNDA3OGNiMzc5MGM2OTJhNyByZWxlYXNlMjQtbWFpbnQKKzUyMjQyIGFlZWU5ZjVhMGIzZWMwZTVjNWI2MmJhZDM2NGY4Mjg3M2IwYjMzYTcgbGVnYWN5LXRydW5rCis1MjI0MyBkZTJiNmExYzliMzExMTE1NTFjODZlMGRiOGE4MWE3MTQwZmVkNjRlIHJlbGVhc2UyNS1tYWludAorNTIyNDQgYTYwNDk1YjM2ZjM4Y2IyZWM0YjViMTBiNGU4ZDU4YmYwZWI2MTJiNSByZWxlYXNlMjQtbWFpbnQKKzUyMjQ1IGMzODc3YjY0MzBiNWQ4OWUyZTA5YmMxYTRlODc0NjIxMWI3ZjY3MTkgbGVnYWN5LXRydW5rCis1MjI0NiBlZGE5MzFmMzk4YzBkNWVmY2EwZjQ4ZWQyOGI3YzI0YzU3ZTBjMGE3IHJlbGVhc2UyNC1tYWludAorNTIyNDcgZWRlMDVkMzRjNTE4M2ZlMzE2YTRlYmMwMGM3NDg4MGYzZGE5YzNjMCByZWxlYXNlMjQtbWFpbnQKKzUyMjQ5IDRlZWZjZThiYzJmNzQ4YTMzN2RhN2ZiYzAwN2JiMjI0YTE5ZTA4ZDcgcmVsZWFzZTI0LW1haW50Cis1MjI1MSA2NjVkNzc5OGExYmM4YTYwYjY4YmRmMzJlZWEwMzk0MmVhNGM2M2VkIGxlZ2FjeS10cnVuaworNTIyNTIgYmY2YTAyYWRhNDQ5ZTRhMmM5ODJlNTM2MzQ2Mzg0NWU4ODYwYTBiNyByZWxlYXNlMjUtbWFpbnQKKzUyMjUzIDM4MzU2OTUxYzE5Zjk4YWE2NGVlNDRlNjdjMTQ1ZWM3NzBiMzBjYTUgcmVsZWFzZTI0LW1haW50Cis1MjI1NCAxZTRlMDE1YzA3YzA3NGRlN2RiNDk4MDM0NmQ4ZDExMjUzOWI0YTY5IHJlbGVhc2UyNS1tYWludAorNTIyNTUgZjQ2YmFkYzhkYzIxMzM5ODJlMzI4ZTQ2MGM5YzA4M2EyMjZhMmEyMCBsZWdhY3ktdHJ1bmsKKzUyMjU2IGQzM2U0MDExZTIwMjk0NzlhYWE1N2VjYjBiYzA5ZmRlNzdjOTc5ODQgcmVsZWFzZTI0LW1haW50Cis1MjI1NyAyOGRiNjExMDE0NjM2ZWVhMWM4OGQwY2QzZmMyY2RiMTRjODg0MzJkIGxlZ2FjeS10cnVuaworNTIyNTggOGNhOWE3YjExYTdkNDI2MWJhMGMyYjhlNmEzYWIwN2QzNmVhMjNlNyByZWxlYXNlMjUtbWFpbnQKKzUyMjU5IDUyYjY1ZjI4YmUxNzE3MjAzMWMzMzAyMzg1NTEzN2U4YTQ4ZWI1YzQgcmVsZWFzZTI0LW1haW50Cis1MjI2MCBjZTUxNTAzMmZjZTM3YWExYjBkODc2OGQwNzc2MmQ3MWIyZWUxNWYwIHJlbGVhc2UyNC1tYWludAorNTIyNjYgMzA5MDllMWNhZjc5YzhkNTQ0NjJkNWQ1OTMyYWE2YWZlYmFmOTMxNyByZWxlYXNlMjQtbWFpbnQKKzUyMjY3IDBkYWM2ZGUwZmU3OGFkZmJmOThmZGVlYTQzMTgwZmZlODgzOGM2ZjUgcmVsZWFzZTI1LW1haW50Cis1MjI2OCA2NmI4M2QxYmEyZmM1Zjk5Zjk5MjU3YWEzM2Y3ZDgwNjNjN2YxZTQzIGxlZ2FjeS10cnVuaworNTIyNjkgYjJlZGQ1MTI0MWFlMjIxYTk0Y2IxZDE0NjY2ZDFmNmYyOTM1N2QxNSByZWxlYXNlMjQtbWFpbnQKKzUyMjcxIDU2YjkxMWRjYzE4NWFjNjBmYWU5YmU4MzRlZDU2M2VmYmJmODlkMGIgcmVsZWFzZTI0LW1haW50Cis1MjI3MiBmN2ZiZGM1NjJkN2FkZjY4OTdhM2Q2OGE3ZDFiOGI0MjNiMTgxZjQxIHJlbGVhc2UyNC1tYWludAorNTIyNzMgNWJjYWI0Y2E2NjA4MDQ5N2ViZDdjY2NjNzdkOTJiODBmMjM4NzU3NSByZWxlYXNlMjQtbWFpbnQKKzUyMjc0IDk4NTEyNjg3Mzc0MGRlZjU1NzczYmRlNTQwYzZkMjYyMzFjYzQ2YWMgcmVsZWFzZTI0LW1haW50Cis1MjI3NSBhMWMzODFjMDVkZGVjNDY3NzA4ZWY0OWQ5ZWQyYzBkYThkZWY1OTdkIHJlbGVhc2UyNC1tYWludAorNTIyNzYgYmFhZWVhNzIyYjFjOTdjYTAzMTc5ZTVhMDJhNDcxN2U3MDE3YmEyYSByZWxlYXNlMjQtbWFpbnQKKzUyMjgyIGEwNDU0ZjFmOTdjNmNhYmIzNmM0ZmFjY2M1ODkzOGM5ZGJmMDk0NWEgcmVsZWFzZTI0LW1haW50Cis1MjI5MyBhYzY1MGFkNmM4MTdiZTJhNTY2ODdhYTBjNzkzZDExZDkzNDM4MjY5IGxlZ2FjeS10cnVuaworNTIyOTQgNjhiNGQwZGFiNDlhZDFlZWQ2YjYzODZjOGU2MjBkZjY5NzI4ZjM0MCByZWxlYXNlMjUtbWFpbnQKKzUyMjk1IDcwMTQwY2NjZDNkYTczYmRkNDI2Mzk4Y2ZiNWExMDAzODExOGIwMzggbGVnYWN5LXRydW5rCis1MjI5NiA2NjcwZGRhNGIyN2Q5ZjJkMTIyMGViNDk0ZTJiZDhmMTZlODRkMGM1IHJlbGVhc2UyNS1tYWludAorNTIyOTcgZGViMWEwYjVkYmNiOGVhYjdkODQ5YmYyMTRkNTE3NjE2YmFiNGNlMSBsZWdhY3ktdHJ1bmsKKzUyMjk4IGM2OGZhYzFlYjZjYmU0NzhiNGM2NTgzOTE2ZTcxYzQxOTA5M2RiZDUgcmVsZWFzZTI1LW1haW50Cis1MjI5OSBjMDIwODE5NWE1NTg1MDc1NjNhOGJkZmM1MzcwMmQzMzQ0MGQzNzQ5IGxlZ2FjeS10cnVuaworNTIzMDAgNzY0MGE1NzgyMmE2N2FjNmFkOTQxOTJjZGY0ZTdiMzRlOWY2N2M3ZiByZWxlYXNlMjUtbWFpbnQKKzUyMzAxIDY0NzU5OGMxYTlkOTI0M2JjNmZkYmEwNjdiZTQ4YWExMTczMzI0NjIgbGVnYWN5LXRydW5rCis1MjMwMiA2ZTZjMjIwYzJmYTYyMmFjMjY4ZGQ0Zjg1NzE1MjM4YmNiNWMxZjdiIHJlbGVhc2UyNS1tYWludAorNTIzMDMgZDI3ZTc2MzI2ODE5ODdhZTU2OTliNTFkODdjMjYwNGIyNzE0Mzg4ZCBsZWdhY3ktdHJ1bmsKKzUyMzA0IDE3ZjQxNzgwOWUyMzk4M2MwM2Q2NjYyZmJjZTRjNDk2Y2NiM2Y3NjIgcmVsZWFzZTI1LW1haW50Cis1MjMwNSA0MTU5Mzg2ZjhkYmRmYzA1NTZkNjMwNzZhZWY1ZTZkYTQzMWEzNzlkIGxlZ2FjeS10cnVuaworNTIzMDYgYTBiZjcyODFiZDIwYjY1YTU4NGY0YTYyOTljYmVjZTI1OTU2ZDgzNCByZWxlYXNlMjUtbWFpbnQKKzUyMzA3IDEwYWJmY2I2NmU2N2JkZWZhN2Q3YzU3MDlkOTU3MDY3ZmUyNGZlMjcgbGVnYWN5LXRydW5rCis1MjMwOCBjZDVmN2NkMjA5OGViM2Y3NGFiZThmYjg0ZmZhOTEwYjJmMTA2ZWI2IHJlbGVhc2UyNS1tYWludAorNTIzMDkgZjQ0MzBiZWMzMDEzZTI4ZjkxMTE0NWRhNWFlNmMwZDY5MTcwODFjZCBsZWdhY3ktdHJ1bmsKKzUyMzEwIDFhMWE1OWY1MGI0YWUyMjhmOTYxYzljMmRkZjM1NjVjOWU3NTIxMDIgcmVsZWFzZTI1LW1haW50Cis1MjMxMSBhMjQ4MDFkYTkyZWUwZDUyYjYxMDMwZmFkN2E3MGU1ZTZhZjFiOGI2IGxlZ2FjeS10cnVuaworNTIzMTIgMWU4ZTkwMGQ5ZjQ5ZDI3YjQwYjI1YjY0M2E0M2NhYjk1Yjk2N2M5YiByZWxlYXNlMjUtbWFpbnQKKzUyMzEzIDdmYWJiYzRhMGM0ZTg2YjY2ODAzZTg0NjJkNzdjNDk4MTc5ZTYxZjkgbGVnYWN5LXRydW5rCis1MjMxNCAzY2ZhODhmYjBmNDUzOTc4YzBhNmYyMGIwM2MyNjZmODI4NDM0MTJlIHJlbGVhc2UyNS1tYWludAorNTIzMTUgNjM1NDM4YjI5NjczZmQ2MTFmMjI5OWJkN2M4NjllZjIxNGJlZGIxZiBsZWdhY3ktdHJ1bmsKKzUyMzE2IGM0YzRlZWM2NGMxMzY0YmM2ODg0YWMwYjU0YTZiZjcwODY4MzE0ZTYgbGVnYWN5LXRydW5rCis1MjMxOSBjNzdkOWE5ZmU3MDQzNjkyZjNjY2UyY2FlMTIxMjE3OTRjMWFkNjk5IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MjMyMCA4ZTY4NWIyMzg5ZGNlZWFmMzkxNGE1MTQ2MDk2MTM0ODViNGM2Y2RiIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MjMyNyAzOWI5OTFiYTg3OGY3OTA1YzY4NDI4NTQ1MzE2NWRkZjZmZTgxYmRkIGxlZ2FjeS10cnVuaworNTIzMzEgMTA5ZjkwYzI2NmZiYzI4NzM2YzQzNWE1ZDk5MDM1ZWYzMDdiYWJjYSBiY2Fubm9uLW9iamNhcAorNTIzMzIgMzk4NWQ3ZTIwNjdkYjc1ZjE3MGUwODkxOTk0YjBmZDcwOTYzZTQwYiBsZWdhY3ktdHJ1bmsKKzUyMzMzIGI2MWE5MGU3NDdlN2M5MjkwMjUyOTgzYzY1NmE0MjcyYzc5ZjdmMDYgbGVnYWN5LXRydW5rCis1MjMzNCA4NGQzYjcyZGMzMzkyYTZkMTBkZWNmOWJhY2UwYjViYjdhYzEyMWY5IHJlbGVhc2UyNS1tYWludAorNTIzMzUgYjk0YmNiN2FlZDNkZDNhYTdhMGM5ZTdhMDJkZDg4ODllZjhkMjAwZSBsZWdhY3ktdHJ1bmsKKzUyMzM2IDNiYzRhOTQwMWExMTYxN2I1NjU3NjJmYmQwMTBmZjUzMDI4ZDU1YWIgbGVnYWN5LXRydW5rCis1MjMzNyBkYWU3NGE4MDk0ZDkwYTNiMGM1MjY5ZmU2NjFlYWEwMDViMmNmYmI4IHJlbGVhc2UyNS1tYWludAorNTIzMzggYmIzNWM1NWJjNDY3MGJkMGRlYjI5NTc2ZTE5YzZmODVkZGYwMmY4ZCBsZWdhY3ktdHJ1bmsKKzUyMzM5IDBmNTA1ZWM4Yjk3YWEyMWUwZmFhMTZkNDQwZjQ2OTBmNzNkNTFlMjUgbGVnYWN5LXRydW5rCis1MjM0MCA0NWVmZTQzNTZiNjFlZGEwMzA5NjdmMTE5OTc4NGE4ZmY0YzA5YjljIHJlbGVhc2UyNS1tYWludAorNTIzNDEgYzAwNmQyMjc5NDhkZWVkNDlkYzgxZTEzYjA2MzU2YTJlMDY5OGMxOCBsZWdhY3ktdHJ1bmsKKzUyMzQyIDA1YzBjZDI3YWJjYTA4NjYxMzQwY2E3Y2U4MDM0M2NmN2I5Yjg2MDIgbGVnYWN5LXRydW5rCis1MjM0MyBkZTg4YzM2M2Q2MjIzNjI4NjMzMjhlMjZlMmJhMzJhZDhjMmQyYTIzIGxlZ2FjeS10cnVuaworNTIzNDQgYTI5ZDEwMGM3ODE1M2MxMGEyYTI0YWU3MGJhOGE5NWFlODkyNjdjMSBsZWdhY3ktdHJ1bmsKKzUyMzQ1IDU2MTVlYWM4YWE3OTc2ZmNlNjY2MmQ4ODQ2NmM0M2FiZmMzYzQ1ZTIgcmVsZWFzZTI1LW1haW50Cis1MjM0NiAyYTFhNWRjMjU1YWRjOTJiNzExNDg2ODE1NzVhMWFiYzFmNDkxNjY2IGxlZ2FjeS10cnVuaworNTIzNDcgMWU1NTVmMDQ4ZTNkNGJiZTBiNjMwYzk0MzJjNDM2NWViNmIxZTk2MiByZWxlYXNlMjUtbWFpbnQKKzUyMzU0IGZhOTZiZmY5M2JjYWQwMGFkNzNkNjkyNzQ4Zjg2ODM5MDMyZTFlNTAgbGVnYWN5LXRydW5rCis1MjM1NiBiZjhkYWY0YTZlNzFhMWVhMmU1ZGU1MWZjNjQ4ZGY3NWU1YWE4ODQxIGxlZ2FjeS10cnVuaworNTIzNTcgNDY5YzJkNmM4MTY1YjI1Njc1MzM1YWE1ZWEzOWU4OTBjMzk3MGFhZSByZWxlYXNlMjUtbWFpbnQKKzUyMzU4IDg1MDUwODM5MWQ0NmJkZTRlMDAxNzJhNDk0OTFjMWFiMjk2MDBhODMgcmVsZWFzZTI0LW1haW50Cis1MjM1OSBlMWNiMzI2NDVmNzdlMWY5N2VmOTE3N2NjMTAxMTFkNzE4MGVhNjBlIHJlbGVhc2UyNC1tYWludAorNTIzNjAgN2M3ZWIxOTBiMjY2MzBmYzYyZTY0ZTg5NTUwOTUyNmRiNmMzZjI1NSBsZWdhY3ktdHJ1bmsKKzUyMzYxIGE2NTExZTgyOTdmMDQ4YzUzMmE4NzQ5NTZjZWRhNTVmZjk1ODZlY2EgcmVsZWFzZTI1LW1haW50Cis1MjM2MiBmYjVkYjEyZjAyNjc2MDIxOWM4YWM2MzQ0MTUyYzQ2MTY5YTQ1MjEzIHJlbGVhc2UyNS1tYWludAorNTIzNjMgMTQ1MTNkYjBkNjJkNTBmZjIyYTIzNzYxZTMzYjkzNTg3N2ZmMmVmYSBsZWdhY3ktdHJ1bmsKKzUyMzY1IDUyZmUwZWNmNTVjMWExODEwNWZmNWMyZDc3OWE4NzFmN2ZjYWY1NDggbGVnYWN5LXRydW5rCis1MjM2NyA0MDUwZjI1M2E2ZjhhNWYwMjc5Mzg4Y2I2ZWExMDc5OWI2NzlkM2Q3IHJlbGVhc2UyNS1tYWludAorNTIzNzIgMzQ1NTU0MjJkYzQ1Zjg4ZjUyOTNmYjlmYmEzMTliNTU5ZTg3NmFhOSBiY2Fubm9uLW9iamNhcAorNTIzNzcgNDk4Y2Y0YjA5ZDhhYzAzZTQ1ZjNhMGUyNmE3M2NiOTEzZmU3Njc4MCBsZWdhY3ktdHJ1bmsKKzUyMzc4IDY2MDlmMDIwNjQ5ZjBkMGNmNjUzZTY5ZThhMTkwNmE4NmEzY2E0ZDMgbGVnYWN5LXRydW5rCis1MjM3OSBhMWE2NzkxMDUyODg2Yzg5MGEwZjExOWM1MjVjM2QyNzE4ZjI3YzRjIGxlZ2FjeS10cnVuaworNTIzODAgYjFkNzA4YzMzZWFiNDI5MDI2MmU5Njg1M2NmYjQzNDVmOWUwNzMwYSByZWxlYXNlMjQtbWFpbnQKKzUyMzgxIGZiMGM2YTY3YTkzOWU4YTJlYTI3NzlmNzllMzJjM2I3Njg5YzM3ZTQgcmVsZWFzZTI1LW1haW50Cis1MjM4MiBlZTY2YTE1YTkwMzAyMWNhMjUwNGEzMjMyNGQzZGNiYzQ2ZWE4YTliIHJlbGVhc2UyNC1tYWludAorNTIzODMgNTkyYWM5MzUzMmVmZGZhOWE0MGY0N2I5NmIxYzEyMzFkMmVhZTBlNSByZWxlYXNlMjQtbWFpbnQKKzUyMzg0IDEwNDM0ZDFiNDI2NjFiNzAwMTg4YzgyZWZjMzUwNzFmODI0Y2MxZTQgcmVsZWFzZTI0LW1haW50Cis1MjM4NyA0MTBjMWM3OGVkNTFlMTJkYzNkZTk1Nzk1OWY2Yjc5NzBjMzc5OTRhIGxlZ2FjeS10cnVuaworNTIzODggZTJkZjEzNTYzNDlmMTY4YmFlYmIzMzVlMjFjMTU4MzMzMDQzZDRkZiBsZWdhY3ktdHJ1bmsKKzUyMzg5IDA1MDlhYjE0YjJkOTdjZWVlZmUyNWU5NjQzMmY0ZTM3M2VhYWI4MmUgbGVnYWN5LXRydW5rCis1MjM5MCAxOGMxMmQzNDIxNDM4MmZhZjhjNWZhNWNiM2M2MzY0OTA1Mzg0MmM2IGxlZ2FjeS10cnVuaworNTIzOTEgMTlkZTMxNjQ5MmU3MzhjZWVkZWNiOGVjNTgwODQ3NTEzNmRjNjZjMCByZWxlYXNlMjUtbWFpbnQKKzUyMzk0IDNiODUzMzM0MjhmOTg2ZGQ2ZDkxZDU3ZjA3Y2U1MDcyMWIwMTg1YjUgcmVsZWFzZTI1LW1haW50Cis1MjQwNSA4NmVhODhjNTIwNWJmNTA0NTFhMzIzMGY2NzM1ZGNjMmYyM2M5NjNhIHJlbGVhc2UyNS1tYWludAorNTI0MTQgODI2ZTg2NzRhMTFkNTg5NTdmYmFlYWRkZThjMDk2NGVlYzA3ZjIzMSBsZWdhY3ktdHJ1bmsKKzUyNDE1IGEwZDlmY2Y2ZjIxNTNmNTI5N2ExNGJlMmUxOTdkYjk1YTE3MTk4OWQgbGVnYWN5LXRydW5rCis1MjQxNiAzODRlZjg3ZmNjMjU3OWVhNmQ1ZTliNzc4NTAyYTBjNGZmOGM1MTIwIGxlZ2FjeS10cnVuaworNTI0MTcgYzU0NDJiNDI0YTg2OTM4NWUwMzNjZTdjMjhmZTdhYTYwMjdkZmE2YyByZWxlYXNlMjUtbWFpbnQKKzUyNDE4IDUwMzBmYjRhNDAwZmViYjlhYzhjZDQ3OTJiODY3NmI4ZTU5OGQ5NTUgbGVnYWN5LXRydW5rCis1MjQxOSBlOWM4NDRjNGQxYTFjOTU4N2VmZDc2ZDllMTFiN2FkNzk3YWFlZmNiIHJlbGVhc2UyNS1tYWludAorNTI0MjAgNzQ5ZDg1NWVlMzU3MWFiN2U1N2MyZjQ5MThkNTUxMDIxY2ZhNjNjMSBsZWdhY3ktdHJ1bmsKKzUyNDIxIDEyM2MxNGVkMzA4YTE1MzgxZDQwYjA4MzlmNTM3ZDA4ZWVmZThjYjYgcmVsZWFzZTI1LW1haW50Cis1MjQyMyA0ZWNmMTY2MjQ0OTg0NGU2ZTBjZGM5OWI0NDgxN2NkM2Q5ZDkxY2IwIHJlbGVhc2UyMy1tYWludAorNTI0MjQgOGNkMGI3MTEzYTcxYTA1NTFlMzgzMGNmZmZmYTU4YTAxODE2YTA0ZiByZWxlYXNlMjMtbWFpbnQKKzUyNDI1IGIyMTQyN2ZmMjY0NzVmOWM3ZjRhNzAxZGEzMjRlOTUxYzJiMTYyZmUgcmVsZWFzZTIzLW1haW50Cis1MjQyNiBjZGQzNDc2ZDFiMDZiM2I0ZWNjODllZDM1ZDViNDhiNmRmYjYwM2E2IHJlbGVhc2UyMy1tYWludAorNTI0MzEgZTgyZTY5NmMwM2RjOGFkNjM2YTczMzE3NTMzMmYyN2M1YzdjNjdiNyBsZWdhY3ktdHJ1bmsKKzUyNDMyIDA1MDA0MGNiYTI2YTQ1YTgxOTk4YmQ3OTVhMmE2ZTJkMDMzNGY1NmEgcmVsZWFzZTI1LW1haW50Cis1MjQ0NiA5MTg2NTk4Mjk2Y2IwOWUxNTk1NWE1N2QxODlhMjcxZjlkN2U4OWVkIGxlZ2FjeS10cnVuaworNTI0NDcgOTQ3MzY2ZTEzMWZkYWUyMDEyZDhmOTZiMmQyOWZmOTYxYjYyOGNhNSByZWxlYXNlMjUtbWFpbnQKKzUyNDQ4IGQ3OGE3YTYwNTYxOTM5NjhlODg1NmNjODI3ZDgzZDExMzlmODg0ZTQgcmVsZWFzZTI0LW1haW50Cis1MjQ0OSAxNTg2ZmFiM2M4NDhiOTQ0NzI3ZTFjNGZkZDk3YWZiMzk2M2I2N2UyIGxlZ2FjeS10cnVuaworNTI0NTIgMGMxY2I5MmRhYzk3ZWYzOWUxMTVmOWM1OWNhMzM0OTM5ZThiYzhlOCBsZWdhY3ktdHJ1bmsKKzUyNDUzIDBlODNmOGM1ZDcwYWVjMzQ3MzFiMGI4ZTFmYzVhNzBhY2ZjNjI4MjIgcmVsZWFzZTI1LW1haW50Cis1MjQ1NCBjMGY1NmYyNDYxZjUyOThmYmMxMzkxNGY3OWVhM2M3MTQ2ZmY4NzY5IGxlZ2FjeS10cnVuaworNTI0NTUgNWRjNDczMTY1MDhmYjRlOGJmMjZiZDAyZmRhNTVlMGVkYWEwMWU0NiByZWxlYXNlMjUtbWFpbnQKKzUyNDU2IDAxNWY4OWE3MzkyOWU0YmIzY2QyYjQ3ZGQwMDIxYTIyZjM1ODQ0ZWMgbGVnYWN5LXRydW5rCis1MjQ1NyAzNGRjYmM3NDYyNDNlNjdjMjE2Y2M5YzlhYTQ4YWVjYmIwMDY5YjE4IHJlbGVhc2UyNS1tYWludAorNTI0NTggZTVjYjRjYjU2NTQxYjk3Y2IwMjdlZGFhMmViYjRkYmEzNmE3M2U2NCBsZWdhY3ktdHJ1bmsKKzUyNDU5IGQzZGJiMzI2ZmZiYWM3OWE1N2MzOWY2Yjc1Y2E5NTRlNGY2NGI1YjMgbGVnYWN5LXRydW5rCis1MjQ2MCBhZDRjOWJhMWRiNTdmZDFlMDJjMDRkNjY5NzkxZmI5N2U2YjVmMzUxIGxlZ2FjeS10cnVuaworNTI0NjEgNWExMDZiNGJjZGQyOGYyM2FjM2JmOTQ5ZmNlMTkwZTAwYTk3ZTE5NiBsZWdhY3ktdHJ1bmsKKzUyNDYyIGU1NzgyZTJhNDEyYmExOGUzMmJiNjk2YzRjZThiMTE1MzRjZjE3OWMgbGVnYWN5LXRydW5rCis1MjQ2MyA3YWY5NGEyNzIzZWNiMTM0ZmZlMGIwZGJiMDNhZWExYWU5MjM1ZjdhIHJlbGVhc2UyNS1tYWludAorNTI0NjQgMGQ1MTc2ZTJiZmU0YjQ0YTkxZTc0YjIzNjFkMmYzOTMzODVjMzJhMyBsZWdhY3ktdHJ1bmsKKzUyNDY1IGRkYjFkYjU2NTYwODkzYzRiN2E1NjBlNTkwMzU1YTllNWNlNmUxMGIgcmVsZWFzZTI1LW1haW50Cis1MjQ2NiBlODY3YjU5NTA3OWU5MjdlNGYyY2VkZjlhMGJhNDJiNTExNzkwNTljIGxlZ2FjeS10cnVuaworNTI0NjcgYjU2YjU2MmUzYTdiN2M4MWYxMGUxNjk2YWZhY2UxOWQyMDUyZjJjNiByZWxlYXNlMjUtbWFpbnQKKzUyNDY4IDc2MmRjYWQ3MjBiNTNlYWNmMTRhN2MzNzA2ZjcyZWU1OWMxNWQwYmYgcmVsZWFzZTI0LW1haW50Cis1MjQ2OSBlMmU4MGEwMTY5NDUyMjA5YTZlNGQyMmJjOWNjYWQyMDAxZWQ0N2JiIGxlZ2FjeS10cnVuaworNTI0NzAgYzVhNmFjZTNmYzdmZDI1NGIyMzhkN2JjMGI0YTIyOTljNDEyZDE5NiByZWxlYXNlMjUtbWFpbnQKKzUyNDcxIDU4ZGI5NjhkMTQ0ODJlN2M5NDU1YmIyYjc3NmZmMmQ2ZTBkNzkyNWEgcmVsZWFzZTI0LW1haW50Cis1MjQ3MiA2YjkxYzBkY2VhNThhNjY2Yjc5MTFjZjhkZjBjODdjMGY3ODZkNDBjIHJlbGVhc2UyNC1tYWludAorNTI0NzMgOGY5YWQzNTgxMzZmMDM5MTQyOWQ0MWI1ZmJhZDM2NmI2MzAwYzJiNCBsZWdhY3ktdHJ1bmsKKzUyNDc0IDI5YzAxZTYyY2U2YmNhZTY4MTY5MGMyNmNkMmE1MmUzY2MxODFjZmQgcmVsZWFzZTI1LW1haW50Cis1MjQ3NSAxOTU1NTljNWJhY2RmMDZjMjYyZjYwZGZlZmY0MTcxMzg3ZDhhZTVhIHJlbGVhc2UyNC1tYWludAorNTI0NzYgZTNiOWM2Mzk3NzIzNDgyY2QxYWViOTYzZGQ0M2JlZmJjMjA1ZWZlMiBsZWdhY3ktdHJ1bmsKKzUyNDc3IGY0NWIyZjBjNTQyZmMzYzJiOGFlYTc1ZTk2NmUyMjBmNWY5NjBjYTYgcmVsZWFzZTI1LW1haW50Cis1MjQ3OCA3NzBjNzE4YmM5N2UwMmEyYjNjYjI3ZTRkYjljZDM1MGFlMWRkNjNhIGxlZ2FjeS10cnVuaworNTI0NzkgYmIwZGI0NWYyMGVhMmJjMzc3ZmI0NmVhYjU0NzZkZTI1ZTJmMWYyMyByZWxlYXNlMjUtbWFpbnQKKzUyNDgwIGZiOWE3YjI4OGRjZTI5NDM1NTZlMjU1NzNkMTA3YTJhNmIwOTFjYzQgbGVnYWN5LXRydW5rCis1MjQ4MSA5ZDY5MWQzNzU1ZDBkZTRlMWViMTI3NDliOWMzMWY3ZDlhZjY5N2FkIGxlZ2FjeS10cnVuaworNTI0ODIgYjkxMTY2ZThkMzhkYjBjNzFjM2VkMzllNmNmOWM5YTQzM2U3ZjM3YSByZWxlYXNlMjUtbWFpbnQKKzUyNDgzIDk4ZTkwMDQ5OTA0MzQxNTQwY2IyOTAwNGQ5ZDNlNDk5NTRkY2I2ZmIgbGVnYWN5LXRydW5rCis1MjQ4NCA4NjI0OTA5ZjUwMzFmNDBkOTI1NWY3ZTY3N2Y4ZDcwOTExMjlkZjEzIGxlZ2FjeS10cnVuaworNTI0ODUgOTg4ZDk1ZmYxZmRiNzJhZDA1N2M4MDdmODcwNmE3MzkwYjZmMGExZiBsZWdhY3ktdHJ1bmsKKzUyNDg2IDE4ODcxYTEwZmZjMWZhNTRmY2IyMDlmODJhNTlmMTY1ZjIyMTgyMTggcmVsZWFzZTI1LW1haW50Cis1MjQ4NyA0M2E4MjY0NjdhZDNjZWFiZmI0MTQ0YTc0YTA1MjAxM2UxYmM5NTBlIGxlZ2FjeS10cnVuaworNTI0ODggNWQ1ZjE4NDQzNjY0ZDE1NzIyZDJhNzZmZDQ0OTAxMmQ0YTkxNWU1OSBsZWdhY3ktdHJ1bmsKKzUyNDg5IGRjMWU0MzYxNzk3MjgyMmYyN2QxN2JiYzI3NzcxYTVmNGZhZjc3YmUgcmVsZWFzZTI1LW1haW50Cis1MjQ5MCBkMGJkOGE4YWZiMDEwM2M2YzEzYzUzYzVmNWZiODE5N2M0YTEwOTE0IHAzeWsKKzUyNDkxIDFjY2UwNTI2ZDliMGE1M2Y0ZmY5NTcxM2RkZTE1M2RjNzBkYWUyZGMgcDN5aworNTI0OTIgMjE5MDhjNzBkMjY0YmNmOTMyNzM4ODM5YzQzZjRhMTNkNjBiMzc1NiBsZWdhY3ktdHJ1bmsKKzUyNDkzIDEzYjhhZDY3OWRlZmM3NDM0YjFiYTFjNWUzM2ExZmIyMzQ5ODA4ZmMgbGVnYWN5LXRydW5rCis1MjQ5NCA1MTMzOWQzOWE1OTZhZmYwMmFkMTVjMzg4NDY3YWJkNzFiMzYxMDU2IGxlZ2FjeS10cnVuaworNTI0OTUgNjk3MjhhN2QyMzEyMzljZWM1MTUwZWI3YjE1ZGJmNmU4Yzc1YjUxMiBsZWdhY3ktdHJ1bmsKKzUyNDk2IDdkMGJkZDZlMWM0NjhiMmI1NjFhNjM1NTQzYjhmZTJmYTdiMzEwMWMgbGVnYWN5LXRydW5rCis1MjQ5NyBjMzgxZmNmOWQxMDgxYzY1NWQ4YzY2ZTk1MmY5ZmZlMjk3Zjg5MGRjIGxlZ2FjeS10cnVuaworNTI0OTggMmQ1YTVkZWRkOTc1OTY4MWU5ZWIyM2IxYjk3NWQ0Mjg3OWZmODAxZSByZWxlYXNlMjUtbWFpbnQKKzUyNTAwIDRjNTNiMjQzYzM5MjJhNDU0MzE1YzNlZTU3NmM0ZjIwN2RlZGQxMjggbGVnYWN5LXRydW5rCis1MjUwMSBjNThkMWI5Njk4NDM4ZTZhYzBmOGY0YmQwMTRiZTA1YTZhOTRlMjc2IGxlZ2FjeS10cnVuaworNTI1MDIgNzk2MzA0ZWZhMjY4YzA1ZDJlM2U5N2Y4OGM2MjA4ZGQ1NzZmYzMzMSBsZWdhY3ktdHJ1bmsKKzUyNTAzIDYxZTRiNTlhZGEwYzI5ZWY5MjRkMTFhODYyZjBlZjU2MjMzM2IxMTQgbGVnYWN5LXRydW5rCis1MjUwNCAzNjA4NjA1YTc0ZDU4ZTU2ZWE4YTJhOWUzYjE1ODJiNTc4NzdjYWE3IGxlZ2FjeS10cnVuaworNTI1MDUgYzRlNWU1M2JhNzNmMzU4Yjk4OTQwMWNmMzQ3M2JkNDE2ZWVmMDQ3NSBsZWdhY3ktdHJ1bmsKKzUyNTA2IDMyMWMwNzVmOTVjZmRhYzdkMWUxOGJiMDUxYWUzODBmZGJiZjIyNWIgbGVnYWN5LXRydW5rCis1MjUwNyBhMTg2MzgzM2M0ZTZmNzBhYzg5Mjg2OTk2NTk4MjA3ZTc5Y2QxZjdiIHJlbGVhc2UyNS1tYWludAorNTI1MDggNGM2MWY0MDBjZTMwZDBjYjlmODU2YzBiOGYxNDM0ZThlZmZhZDUxNCByZWxlYXNlMjUtbWFpbnQKKzUyNTA5IDM4MGEzNWQ3OGM2MDg5NmI4NjlmMjcwZTkwY2QxOTFkMWEwYzU0YTggcmVsZWFzZTI1LW1haW50Cis1MjUxMCA5YWNjMTc3NWQ1NzE0YmJmZTIxOTAzYjE0ZWY1NmZlMmUzM2MxYTM1IHJlbGVhc2UyNS1tYWludAorNTI1MTEgNmE2NDY5ZTI5NGU3MmZjYWJjOWE0MGEzNThlYWNhMDg3ZjE1YWRhNCByZWxlYXNlMjUtbWFpbnQKKzUyNTEyIGQwMjBlMmY3MDhiZTgyOWYzNTk3YzQxZTg4NjJjMjk0YzE5MDNmOGMgcmVsZWFzZTI1LW1haW50Cis1MjUxMyBkZTI2MWY3NjNiNGNjMDQ5NTkwNDdmY2FlNGI5ZjYwMmY1NjMxZmJiIGxlZ2FjeS10cnVuaworNTI1MTQgNDgxYmJhNDFmOWY0NTBlMjY1ZjFhOTE3MmEwYjQ2YjZkNDQ5YzIzNiBsZWdhY3ktdHJ1bmsKKzUyNTE1IGQyMWRkOGNiYzcxNjE2N2EwNDE2Yzg3MzY5NGIzNjUyY2NjOWRmZTIgcmVsZWFzZTI1LW1haW50Cis1MjUxNyA3YzQwNTg2ODEyMjQ5NTVkZTZhZWEyZmFiYTRhMWFhZjIzM2MxOWU0IGxlZ2FjeS10cnVuaworNTI1MTggZDI0NWVmYzdlYzg5MDA0OGFlYzcxYmVjOWNjZjE0MjE0ZDgzZWE1ZSByZWxlYXNlMjUtbWFpbnQKKzUyNTE5IDZhODYwYzgxYWI3ZDA4Mzk4Mjc4YzdjYTZkNjk2M2JlNDM2ZDFlYzkgbGVnYWN5LXRydW5rCis1MjUyMCA0ZDgzM2ZjYTM2NzAyY2JlYWM0NzM2MTYwMjM0ODhkOTA3ZDFlODY0IGxlZ2FjeS10cnVuaworNTI1MjEgMmExZWFlNmMwZWI4NjJhNWE4NGRiZTUwMGIyMGJkYzUyYTg0YzE3ZCBsZWdhY3ktdHJ1bmsKKzUyNTIyIGE3MmQ5NzBjMzg0YmQxMzU5NGM1NjMxNWI4YTVlMmFiM2VhZWE0NzkgbGVnYWN5LXRydW5rCis1MjUyMyAzZDNmMTI3ZDNlMGM3OWJlODNmYjUwYjJjZmYzNTBmNzMwZmUwZjdjIHJlbGVhc2UyNS1tYWludAorNTI1MjQgZmQ4YTVmOTI1ZDRkNTEzOWNlMjYyMzcyMTEzYmZkZjEzMjI1YTY5MyBsZWdhY3ktdHJ1bmsKKzUyNTI1IGVkMjJjYThmNzhmZjAzYTUzMGIwYmZkNTA2MzNmZGE0ZGE5MGVkY2QgcmVsZWFzZTI1LW1haW50Cis1MjUyNiBjN2Q3NzhkYTE2MmM5MjBmYWFlYzJiM2UxM2ZiODllYTM1NTEzMTFiIGxlZ2FjeS10cnVuaworNTI1MjcgOTY2MzEwMGM5NWNhMmQyNjEyMTcxNTRmNzQzNjRhMGU3YzcwMWFlYSBsZWdhY3ktdHJ1bmsKKzUyNTI4IDdjNDQxNDQ3MTRmNjhmOTJhN2FiNzQyMzNkNDQ1MWY2OTljNGI4ZDUgcmVsZWFzZTI1LW1haW50Cis1MjUyOSBlMTY4MDBhYzFlZWExNDFmMGQyM2U0M2MzMjAzZDUzMDQwYWQ4MDljIGxlZ2FjeS10cnVuaworNTI1MzAgODI2OTVlNzM2ODIzZjAyODQ2ZWNlYzA1MDdjYTE4NDExODkyYzdiNiByZWxlYXNlMjUtbWFpbnQKKzUyNTMxIGY0OWNiNjA5MDQyODczYjY1ZGY4ZWIzNTcyMWM3YzMyNGFmOGE5ZjYgcmVsZWFzZTI1LW1haW50Cis1MjUzMiBkYTc5YzRlOWE1YmJmYjU3NGEyY2YwMmRjNzEwMWRiYTM4OTAzMzExIGxlZ2FjeS10cnVuaworNTI1MzMgOTM2NjdhNzg1YjgzNDY2MGYzZTVlZTJkNTBiZTNiMTI1YjViZjg3NiByZWxlYXNlMjUtbWFpbnQKKzUyNTM0IGM2Nzc0ZWIzYTA2NzM2NWZjOTg5NjQyNDdjYzk4YjhjMmY5OTI2OTYgbGVnYWN5LXRydW5rCis1MjUzNSA5YWI3YTc3MzZjYTA1ZDM1MmJhOTk4ZDI1ZWIzNDliYzBmYWU1YjdmIGxlZ2FjeS10cnVuaworNTI1MzYgYmY3OGJlNjNmMjBkNTZiZTRlODAzYjcyYzg0MTAwNGZjMzJhZDdlNSByZWxlYXNlMjUtbWFpbnQKKzUyNTM3IGQ5YThkNGYxZDY1MTRjN2ZlOTQ3Mzc2NTMxYjA3NmFjNDIyYmFkZWUgbGVnYWN5LXRydW5rCis1MjUzOCBmNTZiMjUxNjgxNDJjOTQ1NGRkMDg5ZTk3NzU5YzhkMDgxNzdhNDM0IGxlZ2FjeS10cnVuaworNTI1MzkgN2NlODcyYmYwMGEzZjlkYTE0YzA1ZDU0NmExNTU3ODJmYzgxMjRjYiBsZWdhY3ktdHJ1bmsKKzUyNTQwIDQxNGVjMjYyZDYwOGU0ZGFhMWNkMzhkNTQwY2RmMTAxMTcxYTlmMWMgbGVnYWN5LXRydW5rCis1MjU0MSA4ZDZkMzE1YjJhZjNiOTVmYWE2NWQwMjY1NzNlM2Q2YzNjYWJhNWJiIGxlZ2FjeS10cnVuaworNTI1NDIgY2EzZDFkM2M0ZDhjMmNmMzJmNGE3Nzc4MTEzMzc0MmI4NmYzY2RlZCBsZWdhY3ktdHJ1bmsKKzUyNTQzIGMzNzA3ZGE4MGFlZjM5ZTk0N2I4ZmRiMWZkOWIyZjAzMzA1YTYzMWEgbGVnYWN5LXRydW5rCis1MjU0NCAxMDA3MzI4ZjlkYjUxNGVlY2QxYjkxZWY2YjhhYWZhZTNjNDFjZGRmIGxlZ2FjeS10cnVuaworNTI1NDUgNzU1MDY4MTBjYmJmNGNjMDVhY2VjNzhmYmZlNjFiMWI5YjU4NWVkOCBsZWdhY3ktdHJ1bmsKKzUyNTQ2IGZmY2M2OTZlMWRhM2MyNDI4YzZkZTE2MDAxNDNmZWRjODQzNDA2MTkgbGVnYWN5LXRydW5rCis1MjU0NyAwZDBhZTg0ZGQxYjdhZWFlYjgxMGY2MGRjZjkzMTRmMTE5MGYwYzAyIGxlZ2FjeS10cnVuaworNTI1NDggMTcxNWU2YTBhZWU5YWQwZmQ3OWZmMDEzNDNiZjgxNjg5MTg0ZDkzNiBsZWdhY3ktdHJ1bmsKKzUyNTQ5IGM1YTJmNDMxYzY5OGVmMzBmNDhmYzFmZTY0OWNlN2I0YmY2Yjk1OTggbGVnYWN5LXRydW5rCis1MjU1MCBhOGE2ZTJiODRiYmFmNjhkNDdiOTA1NmJiOTRiOWFkNzUxZWVlYjIyIGxlZ2FjeS10cnVuaworNTI1NTEgYjg4NTBhZWMwNDY2ZmZlZDM4MmM1ZmViZmY2MWJhZDQyMzNjYzE3MiByZWxlYXNlMjUtbWFpbnQKKzUyNTUyIGJjOGZmYzNlM2NkYjRlOWNmNTliYmQ2ZGZjYTUzMDEzMTIyMzllODYgbGVnYWN5LXRydW5rCis1MjU1NSBiODIwNDA2ODUyYTBhOWNkMGJlNGQ5MmIzZGJmNjNlNGU0MzRjODYyIGxlZ2FjeS10cnVuaworNTI1NTYgMzM4NDBjNDA3MmI3NDc0MjFmZDc0OTA3OGYzZWY3OTA5NWViNzMzYyBsZWdhY3ktdHJ1bmsKKzUyNTcyIDFhYmNmZWZlYTNlZWE2OTczMTgyZjMxZDM2YThiOTVmYzdiZTQ4ZjUgcmVsZWFzZTIzLW1haW50Cis1MjU3MyAzYjZmYjU0MzljMTA2MWE5NDE0MDEyNDUwNzZjMzE1YmVhZmNjNzg3IHJlbGVhc2UyMy1tYWludAorNTI1NzQgYjY3NTUzYzE0ZmJjYWUxZTIwNGI3NTZkYzRjYzkyZTFkNGFkYzdjNCByZWxlYXNlMjMtbWFpbnQKKzUyNTg4IGEzYmU0MGMwNzI1MDMwMzdiNmVmZmY1YTMxZWU4ZjEwYjM2ZGU0MjQgbGVnYWN5LXRydW5rCis1MjU4OSA4NzFiMDVkMjUyYmUwYWExMWRhZmUxODc1NGFkMThiY2IyNmIwZDY3IHJlbGVhc2UyNS1tYWludAorNTI1OTIgYWU0MTFmZTFlZWMwMWIyYTI1MjcxMmIyNDEwOTFkMzE4Yjc0OWJhOSBsZWdhY3ktdHJ1bmsKKzUyNTkzIDNlNGUwYmU0MGY1MjA5Mzg1NzZlNzY3NmZmMDQ1NzgzMGI2NmIzNTIgcmVsZWFzZTI1LW1haW50Cis1MjU5OCBmZjY3ODY2OWFhNmUxMzFlY2QyYWU4N2YwMjMxMTQ4ZWQwZTVhNDc1IGxlZ2FjeS10cnVuaworNTI2MTkgNTMwZDdlYjBjNmM0OGYxZDUwYWQ1NDQwZTVkYTBlMzVlODA4NDBhYyBsZWdhY3ktdHJ1bmsKKzUyNjIwIDZkZjRhOTE0M2RkZjg4MDRlZTk1OGUzNjdkNTM1N2Q0MTdiOTdkMjcgcmVsZWFzZTI1LW1haW50Cis1MjYyMSBlYmFmMzQ3ZDQyZmIxNGQ3M2I4OWJiOWQyYWEwNzE5MWZjNzJkYzI2IGxlZ2FjeS10cnVuaworNTI2MjIgMDAzZDgzZGE5OTMyNjI1MDJiMTg4N2MwYjczZWIzNjhmODRlZGE1ZCByZWxlYXNlMjUtbWFpbnQKKzUyNjMwIDFmMDU1ZmNiNmNhNjYwYmQ3YTNkMGQ5ODdiYzEwNTgxMTVjN2RhNWUgbGVnYWN5LXRydW5rCis1MjYzMSBkNzg1YzI5ZjUzNDAzNWJlMzAyYjBiZDI1NjIzNWY0OTA5NmUzMDZiIGxlZ2FjeS10cnVuaworNTI2MzIgMWEwZjQ2ODgzZWE1ZjBmMTIxMjEzZjMyM2M1NThmNmIzN2I1OWI2NSByZWxlYXNlMjUtbWFpbnQKKzUyNjQ0IGNiZTEzM2Q3MmUzOTcyZDcxZDIzZmYwYTVlN2I0ODU3YTBjNTVmM2MgbGVnYWN5LXRydW5rCis1MjY0NSA1NTMxZjQ2MjMyYjdhZjRiYTQ1NWQ4YTdhZjY0MDJmNWU5ZTY0MDYwIHJlbGVhc2UyNS1tYWludAorNTI2NDYgMjQ0OThkNDMxMjZjYjg5ZDcyZWY3ZDMyNjcyNTVjOTVkZDc3NmRiZSByZWxlYXNlMjQtbWFpbnQKKzUyNjQ3IGVkMmFjODA4NGUwNDg1MGQ1YzAxN2JlMjZlNzIxOGY2YTZjZWY2OTkgbGVnYWN5LXRydW5rCis1MjY1MSAxZGU1ZTczOWY5ZmY1OTNkZTkwYTIzZTY1MTM5M2U4ODFkZDk0MWU1IGxlZ2FjeS10cnVuaworNTI2NTMgM2NjMmVhZjBlNTgxNDk5ZGJmZmIwMzk0N2I5YmJlMDZlZTc3YmJkZSBsZWdhY3ktdHJ1bmsKKzUyNjU0IGY4ODYyOTk4MjcwZmJmYmEwODA2ZTg4MTk2ZTg0MzNkN2NlOTNkZmYgcmVsZWFzZTI1LW1haW50Cis1MjY1NyA5NjMzZjUzOGM5OGRhNmVmNWRjMzQ4ZjMzZjBjYzA2ZTE4MzY2NmZhIGxlZ2FjeS10cnVuaworNTI2NTggOGQ2OGIyMjRhOGYwNThlMzEzNjRlYmQxMmVmOWZkNTdhOWUyOTE2OSByZWxlYXNlMjUtbWFpbnQKKzUyNjYyIDYxY2Q4Yzg3Y2ZlMmMzN2U0ZDM1NzdjYWVmNTdjMWIwZjI5MjRlYzggbGVnYWN5LXRydW5rCis1MjY2MyA3OGM3NWIzZDNkMGJiMTQyMDE2ZjRhNDY0OTY4NWNjYTc4YTljYTdmIHJlbGVhc2UyNS1tYWludAorNTI2NjQgZmE5MDI5YTQxY2U4YWIwOWM4Mzk4OGNkZGY5MGZhOGRkMjFmNmFiMiBsZWdhY3ktdHJ1bmsKKzUyNjY1IGJkMTYyM2QwNGJmYzQ0ZTE3OTE4MjBmMWVkNTUyNGYwZDRiMTg2ZDQgbGVnYWN5LXRydW5rCis1MjY2NiA0ZjhlYmFjZWM1ZjA1MzYyOGM4ZjI0ZDE4MjcyMjc3NzNjMDhmOWUxIGxlZ2FjeS10cnVuaworNTI2NjcgMDJjMzY2YjJhYWMyY2FjNjVmMzA3ZmRlZjhjZWE2OGFmMzUzMWYxMyByZWxlYXNlMjUtbWFpbnQKKzUyNjY4IDBkZWEzN2JjYmVmZjRjMDBkMjFjN2NjMDAzM2Q1NzMyMzAwNzk5MzMgbGVnYWN5LXRydW5rCis1MjY2OSA3Yjg1MTIwNmQyNGNlMzRjMzQ5OWVkZTNjMmYzNWVlMjgzMWUxMzhjIHJlbGVhc2UyNS1tYWludAorNTI2NzEgNzBjNzU2YWE5MjczYzIwODYzNzFjOTU2Zjc4NGE3MDk3MzBlYTFjNiBsZWdhY3ktdHJ1bmsKKzUyNjcyIDM1N2M5OTUzN2U4NTJkZDMzOWEyZGIwNjE5ZjE5ZDE1NTg0ZjlkZWUgbGVnYWN5LXRydW5rCis1MjY3MyA1NzY3NDIxMmMzN2NmMmM5NTYwZTZmMjRlZDViNTgxOGJhNjgzMDMyIGxlZ2FjeS10cnVuaworNTI2NzQgMjRhNWRjNzc3OTMxNjY0NmUwZDIwYmYzMTI2NTZhN2I5MmIxOTVhNCBsZWdhY3ktdHJ1bmsKKzUyNjg2IDUyNmM5NTg0ZjI1Mjc4NjcyNjc2ZDA3ODc1NzU3NjZmNjJlNWUyY2YgbGVnYWN5LXRydW5rCis1MjY4NyAwMjViMjRhMjYxMzE0ZDEwZWExZGVlYmU2NTZiYTBiN2FiM2MzM2EwIHJlbGVhc2UyNS1tYWludAorNTI2ODggMDdiMjliY2ZjMDEzNTIzNjkxMWQzMTU3MDRiYjViZTIxODczMDUyOCBsZWdhY3ktdHJ1bmsKKzUyNjkwIDZkOTk3NjJjZDgxODgxZDdkY2I0M2VlODdlZWJlMjI5ZjA3NmU3MzYgbGVnYWN5LXRydW5rCis1MjY5MSA2YzA2NzcyNzNjNWFiYjNiNThiZWM2ZDUwMTk5MjM4YzhlNThhOWE0IHJlbGVhc2UyNS1tYWludAorNTI2OTIgYWQ3OTZmZTQ3MmNhZWZlNDcxOGZkZWU1YTFmY2NjZTgyMDYxODcxNSBsZWdhY3ktdHJ1bmsKKzUyNjk1IDcwNTlkZjdjMTVkZjgyMzE2YzE4OWQ5YTM1Njc5Njk0MGU2MGI3ZWYgbGVnYWN5LXRydW5rCis1MjY5NiBjMzBjNTg0Y2M2YWE0OTZiMWE5OTVlMTE4NmRjMmU4YmM1ZGU0NGU3IHJlbGVhc2UyNS1tYWludAorNTI3MTIgNTYxZmZhNzU3ZGZiNWE0YzIyNjFhYjY1M2VhMDAwNmRkY2IzYTQzOSBsZWdhY3ktdHJ1bmsKKzUyNzE2IDU0ZjYyMmRkM2IyNjY2NGE1MmE5ZTEyNjEyMmJiZGFiNDVjOTE3NmMgbGVnYWN5LXRydW5rCis1MjcxOCA3MzI0MjVlM2I5Mjc0YjczZjVmNzdlMWZlNjVlMDQzZGNjMzAzNzZkIHJlbGVhc2UyNS1tYWludAorNTI3MTkgZDc1Y2JlMmI5NjAxOWM5MjA5MWJiYzM3ODUxYmY3Y2U4MzdlMTZmYyBsZWdhY3ktdHJ1bmsKKzUyNzIwIDBlNWYyZDA1NDhlYjZjOTY2YTcyMTY4ZWYwODllMTJlMzhlNDQ4OTcgcmVsZWFzZTI1LW1haW50Cis1MjcyNSA2ZjI5NzA5MjJjNDRjZDg0ZmNjNjBjODc0ZTNiODhkNjY2MjQ0ZTY3IGxlZ2FjeS10cnVuaworNTI3MjYgNjE2YTIwOGY0YjgwNTE0MDFjOGFjNGNiNzA2Y2IxNzIzMmZiMWI3MyByZWxlYXNlMjUtbWFpbnQKKzUyNzI3IDEwYTk3NzRiYjNlMzQ3ZTBlZTdkMGRkYTY5M2RlY2NjOTdiNjhiNzkgcmVsZWFzZTI1LW1haW50Cis1MjczMSA0NDYwZWMyNGRhYzkwZjljOWFiNjlkMGQyZDBjZjJlMGU3MDVjMDljIGxlZ2FjeS10cnVuaworNTI3MzIgMzVjZjEzM2FjN2Y4ZjAxM2FhODFhNzlhYTcyM2VhODdlZDQ0OTZmOCByZWxlYXNlMjUtbWFpbnQKKzUyNzMzIDJjZjE4ZjEyNzY2M2M3ODE2MDJlNDk0OGZiNTNiMDY0NDVkNTQyNGQgbGVnYWN5LXRydW5rCis1MjczNCA2MzM4MTJlOGNhMWI2YTlhNWFkMmY1ZWMwNDZiNDE5MTA5MzQzZjhmIHJlbGVhc2UyNS1tYWludAorNTI3MzYgOTBkMzU1ODI5YmJiNzg2ODg1ODkzZTFjMGVhMDY1Y2MzOThiZjcwZSBsZWdhY3ktdHJ1bmsKKzUyNzM3IDlmN2ZjNjhhMjBhZWRkY2VlNmI5Y2U5NWVlMDY3NmU2ZDQ0Y2NiNzggbGVnYWN5LXRydW5rCis1MjczOCBiZjRkMjA0NzZhODYxNGU5YTFiZGIzOGUzNWExZWNjMmE1OTlkNDY4IGxlZ2FjeS10cnVuaworNTI3MzkgZWNiZTkxYjVlNDZhNTM1YTg1MzUxOTgxZGQxY2Q3ZTQwYmRiYTk0ZSBsZWdhY3ktdHJ1bmsKKzUyNzQwIDU5MWRhYTUzNjJiMmQ0OGEyNzIxMzVkZGVlYTE1MWY1NTkzZmE5NDkgcmVsZWFzZTI1LW1haW50Cis1Mjc0MSBkNDllMGRlNDAxOWQxZjU1ZTAxY2MyMDdjOGUxOGVmNjliOTA4NTkwIGxlZ2FjeS10cnVuaworNTI3NDIgZWZmMTFlNDM1ZjQxMDNhNmU3NTE3MTNmY2U2NGJmM2I2NjU2MzdhNiByZWxlYXNlMjUtbWFpbnQKKzUyNzUzIDdlMGNmNmUzNjUwYzhlOTNjNDE1Y2UzYWZhODg2YmUzNGJlZDQyY2MgbGVnYWN5LXRydW5rCis1Mjc1NCBmOTFiNmQ4NWNhYjU2MjJjYTRlYjEwMmRlMGVhYjZlNmY4NmVmNDExIGxlZ2FjeS10cnVuaworNTI3NTUgYTFjMGI1MTRjYjUzOWEwNzgzNjk1Mzg5NjY5ZmM4ZDI1YTM1NjhlNiByZWxlYXNlMjUtbWFpbnQKKzUyNzYyIGI4MGEzNjg4NTNjNzVhNzYwYTY2MTlmOGY0ZTA3YmM1ZjY0MTFjZjUgbGVnYWN5LXRydW5rCis1Mjc2MyA4YTM2NWZkY2RjNDhkY2VlNTk2ODlkYjIwZGU1Y2IxNTk5NzE2MTI5IHJlbGVhc2UyNS1tYWludAorNTI3NjQgYmE1NjNhYjdhNTdhZTJkODdmNmVkYWQ5N2YwN2RhZDFlYTUzYmI1YiBsZWdhY3ktdHJ1bmsKKzUyNzY1IDI1MTVlYzRiNWIzMzY1NjUxYzU4YmY2MTg4OTE2MTVhNzhjZTk1NGEgbGVnYWN5LXRydW5rCis1Mjc2NiBlMjZjNTE3ODA3Mzc1MWNiYzRjMWIyNmQwZTdjZDQxZTM1OGZmYjE3IHJlbGVhc2UyNS1tYWludAorNTI3NzYgN2NlZTk0MzQ5ODFhMmFhOGZiZTdkNTI0YjBlNDRmZTYzYTU3YjU2ZCBsZWdhY3ktdHJ1bmsKKzUyNzc4IDRjNjJjODI5MGQ0ZjU4MmY0YTRkMzIxYzAzZDU1ZGY1YjU0ZTViOGYgcmVsZWFzZTI1LW1haW50Cis1Mjc4MCA4OWYyZThkYTBmMGY5ZWRkNjFjOGY1Mzc5YjM0YzcyM2E4ZmM3NmU2IGxlZ2FjeS10cnVuaworNTI3ODEgYzFhYzhiZGU1ZTE3NmQzNGE4ZTJiZGY5YTNiZTk5ZmFiYWFjMDdkNiByZWxlYXNlMjUtbWFpbnQKKzUyNzgyIDVjMDhkY2I3ZDI4MDlmNDRjZDQzYjRiY2UzMGIxMTM1YjIyZTZjN2EgbGVnYWN5LXRydW5rCis1Mjc4MyA3OGMwZTcyZjE2ZDNkMDc3ZjkyMmU4MDEzM2E0ODhjMGUyNDMxZGNiIHJlbGVhc2UyNS1tYWludAorNTI3ODQgMzIwZGZkZWU4OTY4OTdjNWM3MmM0N2MzOGQwYjE2MDQ0ZTFmMmFkYSBsZWdhY3ktdHJ1bmsKKzUyNzg1IGEwNDA2ZTkzM2E4MTczN2RiNWFkNmY4Zjg2MmZjNDRlMDgyMjgxNjcgcmVsZWFzZTI1LW1haW50Cis1Mjc4NiA1ZmE1ZWY1NTlhMmYxM2I4ZjNhMzY2ZmY0ODgyMmZjYjExMzEyYTUzIGxlZ2FjeS10cnVuaworNTI3ODcgYjg3MWU3YmQ4MzU1YjI5MjJkYzliNzIzODAwZTg2MzFlYzFhNTQxYyBsZWdhY3ktdHJ1bmsKKzUyNzg4IDBmZGMyYjgyMTFmOTJlNTY2MTllNmViZTE3ZTM4OWVmNWE4MTkzNDUgbGVnYWN5LXRydW5rCis1Mjc4OSBiZTJmNWIyZDUzYjNiZDI2MWM2OTE3MzJkMjhkMDdlOWFiYTBjODBkIGxlZ2FjeS10cnVuaworNTI3OTAgNDAxNjZlNTAxMWY4MTkwYThiOTAwNzE4YWVmZGI1MThjOTQ2ZWVhMCBsZWdhY3ktdHJ1bmsKKzUyNzkxIDlmZDEzNTRkYTZkYjZiMmJlODZiNDdhMTk1OWE1Mjg4NmM1YmM1YjkgcmVsZWFzZTIyLW1haW50Cis1Mjc5MiAyNzExMzM5ODFlNjNlMWJjNzhmODllNzcwMTNkMTAwYTdjNzk5MTJjIGxlZ2FjeS10cnVuaworNTI3OTQgNjRlMGFjODM5NmEzZDZlZTIzZTBmMzU0ZTA0NTI4ODU5MDJlYzI3ZCBsZWdhY3ktdHJ1bmsKKzUyNzk1IDYwNmUxZjBlODdiZGFkNmNkMjQzNTk1ZTFiY2IxNDA4NDM2ZmEzODAgbGVnYWN5LXRydW5rCis1Mjc5NiA0MmVhZWQ4ZDJiNDU0MmFmZmNlZjAxMDM1YjdhMDM5NTI5OTgxNjcyIHJlbGVhc2UyNS1tYWludAorNTI3OTcgZjNhNjMxODU3NTQ0NzVjZDU1YjA4NTY5YjE4YWQ1NmUzZmZmZTIxZCByZWxlYXNlMjQtbWFpbnQKKzUyNzk4IGQ3YWMzYjhmMjEzOTIxOWVmOGQyNjY3NzdkYWI1ZjE4YmQ0NjVjMzMgcmVsZWFzZTIzLW1haW50Cis1Mjc5OSA4ZmRhNWM4NmNjMTZjZWE4OTMxMTRjNWNmMDU3YWY4NTZhYjE4OTdkIHJlbGVhc2UyMi1tYWludAorNTI4MDAgY2YwZTY4NTYyNjA0ZDlhMmEzNjYzYmQzMGYyZDNjYTI3MzM3ZTk3OCBsZWdhY3ktdHJ1bmsKKzUyODAxIGNlNGNjZjg3ZjU2ZTQ2Mzk0ZWJmMGYzMzI5Y2U2NWUxNDcyMzcxNTQgcmVsZWFzZTI1LW1haW50Cis1MjgwMiBjN2E4Y2IwOTVjNDg1MWY4MTkwZGRjMTc0N2IwNWRjMWY5N2NlZDkyIHJlbGVhc2UyNC1tYWludAorNTI4MDMgOTVhZTc0MWUyODdiYWY3YjcwOTFiYTVlNjFjMmJmMDBiMmE2NTllNyByZWxlYXNlMjMtbWFpbnQKKzUyODExIDk5Y2IzODM1MWZmYzQwYmJjMzAxZjdjM2NmMTNjNTVkYmViZDMyNmIgbGVnYWN5LXRydW5rCis1MjgxMiBhYjE4ODVmMzQ0M2E3ZGFiM2E4ZTQ5NGRmYjRmODE3YWJiZTlkNmE3IHJlbGVhc2UyNS1tYWludAorNTI4MTMgYTI3ZWRlMmNhNjA2OGE1MTY4YjU2MmRjNGY5YjY1YzA3ZjFjYjJlMiByZWxlYXNlMjUtbWFpbnQKKzUyODE0IDYxYjA2OWI4NGQwYWZjYzUxMGQyNTc2MmNlNjMyZGM0MzE4ODMxN2MgbGVnYWN5LXRydW5rCis1MjgxNSBiMGMwOGVmMWMzMDMwOTA3YTY2ZDg3YjdjZGJlMmUzYzAyMzBjYmNmIGxlZ2FjeS10cnVuaworNTI4MTYgNmUxYjkwMDdiYmRjNjA0OGI4MjRlNmRjOWIyMTc3ZWZlYjU4NGExZSByZWxlYXNlMjUtbWFpbnQKKzUyODE3IGQxODNkODEyNDgwM2QwMjcyZTVjZGRlNDNlYThhZmE5ZDBmMGE4OTAgbGVnYWN5LXRydW5rCis1MjgxOCBhMDM3ZmE4Zjg0NThlMzFmMzFmMmE3MTc5MGUzN2I4NzdjOGVkYWQxIHJlbGVhc2UyNS1tYWludAorNTI4MTkgMjU5ZDI2OTAwODYxN2NiYzE3ZDkxMGYwMDRmMDQ5MWFiNzNmMDBhOSBwM3lrCis1MjgyMCBkNzViMGNhYTY3ZGI5ZGU2MTIxMDk3OGJkYmFmMWU2YWE0ZWJlNGMxIHAzeWsKKzUyODIxIDkzZGJmYzY1NGI2YTIyMmZiZDUyYWI4ZmY0M2JlYjc5MTFmYmY2MDMgbGVnYWN5LXRydW5rCis1MjgyMyA3ZjMzZjI0YTdjNDE2N2M4Mjc5ZDY4ZWRjYTQyZWE5YjZlM2QzOTQwIHAzeWsKKzUyODI0IDI1Y2M2MTYxNDcyMDYzYmFjYzZhM2ZlZGQ1OWVhZTAyZTZiMzZkMDEgcmVsZWFzZTIzLW1haW50Cis1MjgyNiBhM2UwZjFlMTEwODI4ODhlOTNkMGM4Mjg1ZWFmZjI1OTY4ZDg1ZGVlIGxlZ2FjeS10cnVuaworNTI4MjcgYjZiMDI1OTMxNDUxMzMzNzdkZTI4MzFlYWQ5YTBiMGU4Y2Y5OGI4MCByZWxlYXNlMjUtbWFpbnQKKzUyODMzIDI5MWU2MzM2ODY3YjY3NGYwZjg0ZmQ0Y2MwZjQ2MzYyMWRjYzY3MTUgbGVnYWN5LXRydW5rCis1MjgzNCBjZDNkNmI5OGNhZWFkMjY2YjkwMDJjOGNkNzcxOTVjNmQ4ZWJmZGUwIHJlbGVhc2UyNS1tYWludAorNTI4MzUgMDA0NjJjYTQ4ODQ1NDgwZTljYTg0MjNhNGJmNzViNzA0N2IyMmZjNCBsZWdhY3ktdHJ1bmsKKzUyODM5IGU3MDcwZDY3ZGI4YzdjOWZlMzNmMGM3OGI5ZmQ1NjQyMDRmMzVmMDUgbGVnYWN5LXRydW5rCis1Mjg0MCAxOTMxNDZlNGQyNzZjMDQ0ZWY3YWEyMWIzZjVlYzRkM2I3OGVlYzQ4IGxlZ2FjeS10cnVuaworNTI4NDEgOTZiZTlkNzRhZDM2NzUwNDBkNjAyMWMzZTc5NjkxZDVlNWUyNjQ0NiBsZWdhY3ktdHJ1bmsKKzUyODQyIDU4NmRkOGVlZGI3NWZlZjg3OWE2Y2ZiNGZiNTAwMjZkOTE0NDdjM2UgcmVsZWFzZTI1LW1haW50Cis1Mjg0MyAyNTA4MzVkYzU0NGFhNjAwM2QyMDM2NjA3NmEyNTJlM2Q2NTMyZWMzIGxlZ2FjeS10cnVuaworNTI4NDQgMjBiZTQzMWU3NTQwMWFmZDliNzZmZjQwYTFmOGNhY2Q1YmZhNzM4NCByZWxlYXNlMjUtbWFpbnQKKzUyODQ1IDQ1NGVmZjI3MDZkM2I4YmIyNzFkY2NlMTQ3ZjVlNzlhODE0OWYwMmEgbGVnYWN5LXRydW5rCis1Mjg0NiBhNTVkNDY1ZDQwY2ZkMjRkZTVkNTJjMTA5Y2MyNjdmMWE2ZmU4NjVkIHJlbGVhc2UyNS1tYWludAorNTI4NTAgZWYxNTQ3MDE2NzAzM2M3NGFlNTA1ZDdkNDJhMGRmYjZkM2RkOWVhYiBsZWdhY3ktdHJ1bmsKKzUyODUxIGExMDE1MzAyZDdlNGQ0MmEwYWYxNjk1YzA4NmQyZWZhODI3ZDA4ZWYgcmVsZWFzZTI1LW1haW50Cis1Mjg1MyA4ODEzMzQxN2RmZDA1YjRlMTU2YTZiY2U3MTRkMmFmMDE5YzVjYWI4IHAzeWsKKzUyODU1IDc4ZmI3OTkwYzVhYTU5NWJmYmM0ZjE3Y2E4MWQ4ZmRjMjhhNjM0YjkgbGVnYWN5LXRydW5rCis1Mjg1NiBhMWZkOTNiNTg5MTIxMDg3OGFjM2I0YWM3ZTRmOTA2NjQzM2U0OTNmIHJlbGVhc2UyNS1tYWludAorNTI4NTcgMDJkNTEzZTg3MWZlOTU3MmQyMmYxNjIwMjY0OTg5NmU2OGUzMTg5MSBwM3lrCis1Mjg2MiA0ZTM2OGU4MmM3MGQ2YTFlMzEyMDg0MmZiZTI0MWFiMzI5NjVjMmZjIGxlZ2FjeS10cnVuaworNTI4NjMgMzlhZDk5ZGQ2N2U0ZGU1Y2ZhOWIzMTU4Mjk0MzJkMTEyNTE0NTQ2YiByZWxlYXNlMjQtbWFpbnQKKzUyODYzIDk4YTFlY2EzYTkzMDgzY2NmMDFmNDVkMDlhMjYwOTZiZGU0MTA2ZjkgcmVsZWFzZTI1LW1haW50Cis1Mjg3MiBmZWY1Yjc3NDgxOGJkYzRlNjI2MmEyMzAwNGVhMmZkZDNiOTA0NTViIGxlZ2FjeS10cnVuaworNTI4NzUgMWUzZjUwMjBiYjU1NThmMDI3Nzc5YTNlMjFhODZiZDM1MjcxZjE0ZCBwM3lrCis1Mjg3NyAyZTUwMTFhY2I0MTRkNGIyNjc4OGMwMzU3YTA1YjFhYTU0YjcwZjcyIHAzeWsKKzUyODc4IGIzZWQwNTNjYzZhMWYyYjFmMmFjYzAxY2FlOTUzNGVmNzkxOWJkNDIgcDN5aworNTI4OTAgZDgwMGQ2NzM3NTU2NDE0NDRhMmZhNmNjNzhiZDg2MjUzMzkyOWExZiBsZWdhY3ktdHJ1bmsKKzUyODk5IDBlMmEwNzNjYmJiZmE3Y2Y3ZGZhYWY1ZDRmZDE2NzNjYWVhNGI0NzYgcmVsZWFzZTI1LW1haW50Cis1MjkwMCBjN2U3ZTcxOTZhNGNjZjM1NWZhZTkxMmYxZDllOTI0MjY2NjQyZDJlIGxlZ2FjeS10cnVuaworNTI5MDUgM2FiMTJkMWExN2QyZWUzNDhmZDhhYmYwZWRmNTUwNmE3N2ZjYjAxZiBsZWdhY3ktdHJ1bmsKKzUyOTA2IGM0Mzc4N2U2ZDcwNjFkNTdmZDcwODE2NGQwZWYwMmZjMDBkOWE1NjIgbGVnYWN5LXRydW5rCis1MjkwNyAyNmI3MTNhMTk1MzRmMjhlN2RlMmFhYjlhZWRjNjlmZTE3YzVjZmIzIHJlbGVhc2UyNS1tYWludAorNTI5MDggM2VlOWQxYTM2ZDQ2NDMwOWNmNGNiYzE1MjhkNjUxNzBmOWE3NThlMCBsZWdhY3ktdHJ1bmsKKzUyOTA5IGEwMTQ2OTJjZmE2NjhkZWQxYzBiY2JhNDJiZTkzM2M3YWQxMTlhNTkgcmVsZWFzZTI1LW1haW50Cis1MjkxMCA3M2YwZmMyZjhmMjdkYzA5N2FmMWEyMjRhMTgwNGY1ZTIyNjMwYTQwIGxlZ2FjeS10cnVuaworNTI5MTUgYzFhNmQ5NGI4MDI3NzY4ZjIzNjNhMDFkODZhMWRhNDNkM2YzYzY5NiBsZWdhY3ktdHJ1bmsKKzUyOTE3IDBjYWMzZTUzMWM1YTE1YjFhMjkzOTQwZTJkZjkxOTQ1MGQ3Mjg5NzcgbGVnYWN5LXRydW5rCis1MjkxOCBmMWE2YWIzNTc0ZWZkYmRkNjkxZTZmMTNjY2Q0OWU1MGMwMDlhMDYzIHJlbGVhc2UyNS1tYWludAorNTI5MzggZWIzMGQzMGYyMmExODU3OWVmZDFmMDVhYTc1MTMyMmY3ZTM3YzY3NyBsZWdhY3ktdHJ1bmsKKzUyOTM5IDlmZjJiNzQ1OGM3MGQwYWJjNzk3MjQyM2MzNTU1ZGYzNzNlMDc0NTQgcmVsZWFzZTI1LW1haW50Cis1Mjk0NSA5ZmU1ODU1YjA1ZGRhOGY3ZGVmZDIwNjkzOTdjNGRjNWJmYmU0ZWFiIGxlZ2FjeS10cnVuaworNTI5NTEgZDU1NzY5NzEyZjczZGY1ODg1YzgyYTE3OGE2YzU2NTg4NWQyYjExMiBsZWdhY3ktdHJ1bmsKKzUyOTUyIGVlZjcyNWE0MGE2Njc4MTE1YjJlNTlhYjA1MGMzYTJhZWJlN2JiM2MgcmVsZWFzZTI1LW1haW50Cis1Mjk2MiBlNWNlNWEwNTM0MTE2OTZiZDA2NmE4MDYxYTIyODczYzNkMjg0MzVkIGxlZ2FjeS10cnVuaworNTI5NjMgNmU5MWZjODhiZjk5Y2Y4NTBlMWZlOGZhMWMyMDRhZmI0ZjIwODhlMSBsZWdhY3ktdHJ1bmsKKzUyOTY0IDZiMDJmZTFiMzgyZmRmYzk2ZTRhNGVhNzk1MDJhNGRjYjRhMTdiMGEgbGVnYWN5LXRydW5rCis1Mjk2NiBhMTViZDgxZWZkYjYzNjk5NmQzMTc0YWQ2NTIyYzRhNzI4M2YyNjdhIGxlZ2FjeS10cnVuaworNTI5NjcgZmEyODBkN2M3ZDVlZDJiNzExOGEyMjFhNWE3OTRmMTQ5ZmFjYmEzMCByZWxlYXNlMjUtbWFpbnQKKzUyOTY5IGFlOTJjOGQwZjA4ZDU5NGI1MDk0ZTY5ZTU4NjdmY2Y1NTYyNWViMzQgcmVsZWFzZTI1LW1haW50Cis1Mjk3MCBjZjg3YzhmMzNmOWY3MmY3ZjRmMjRlMjdkNGNiM2MwYmUxYWM0NzAzIGxlZ2FjeS10cnVuaworNTI5NzEgYjg3YzU2MzliYzNiODBhNDkwYzJiZDExOTA0YTFjOTM3ZTU3YjdmNCByZWxlYXNlMjUtbWFpbnQKKzUyOTcyIDlkNDcyNTU1YjkwZDdmYTQ1NTQ0YTdkOWU3NmUzNTVhYmI5MjlhMzggbGVnYWN5LXRydW5rCis1Mjk3MyA2OGVmMDdkOWM4MWUxYzE1NTFhMDM5MmRmODY3NzBlNTU4YTdjZDBlIHJlbGVhc2UyNS1tYWludAorNTI5NzQgZDliNGVmYzRlYmVmZmZjOGY4NTc2MjczOTZmOTkwYjU0NGFkMWI2MyByZWxlYXNlMjUtbWFpbnQKKzUyOTc1IGQ0ZWI2N2QxZDkzMThlNzg2ZWVkNGYyNDBlYzZlMmY1YjBmMDk3NzkgbGVnYWN5LXRydW5rCis1Mjk3OSA0NDdlZjBlNzQ2Mjk5NzExMzg5MzFjY2Q1ZWQ1ZTQwNjc0NDM2MWFhIHJlbGVhc2UyMi1tYWludAorNTI5OTQgMGM1MWIwMDVjMjE0NGE0NDk2Nzk3MDI0YTNjMTE4ZWY5YzM0YzUxMSBsZWdhY3ktdHJ1bmsKKzUyOTk2IDNkNWIzMDc3Mjg5MmFjYTZhZmE4NGE1ZTNlZTIzNTYyZWUyMGNkMDQgbGVnYWN5LXRydW5rCis1Mjk5NyAwNGZkZjlmZmIxODgyZTliY2ZhMDhlYmNmYzUwMGY0ODQxY2E2YzhjIHJlbGVhc2UyNS1tYWludAorNTI5OTggNjEzMDcyYjhmOGQwOWMzZDZhZWM3MjljOWJkZjgwMGNlYmM1ODYxZSBsZWdhY3ktdHJ1bmsKKzUyOTk5IGEzMTFhMTBiYTBiZmQ2ZjA2ZjY3ZTJkZTM0ZDViZmEyY2M1ZDE2M2YgcmVsZWFzZTI0LW1haW50Cis1MzAwMCAzMTVjNWE2MzNiMDViZjI1NGYzZmM2NmE0NjJmYjhlY2M5Mzc2OGQ4IGxlZ2FjeS10cnVuaworNTMwMDEgYjMzMzJlYzI5M2YyNmQ5YjBjYmIyYTkxMjE0NGQ0ODJkODc5OWUwMSByZWxlYXNlMjQtbWFpbnQKKzUzMDEyIDgxMDA4MTgxMjk5NmQ4ZmU3ZTI1ZGJkMzVkYWI5ODAzM2MyZTNjYTIgbGVnYWN5LXRydW5rCis1MzAxNyBjYzk5MmQ3NWQ1YjNjOTkyYTllZDA5MWUxMTg5MmExMTNjMTM0NWU5IHAzeWsKKzUzMDE4IDY0ODIyNjFiMTA5MjE2MGExZmY0OThlYzZkZWEwMmY0NzgxNTBkMzcgcDN5aworNTMwMTkgNTBjZTU2YjI0Y2JlMzEzNzMxYjk3ZGY4ZGVlZjQ2YWMwMTFjZjZkYiBwM3lrCis1MzAyMyAxY2I3YjNhZTQxNGQwNWMyMDE4YTJhNDZmZmE4ZmQwN2JhMWI1ZmMxIGxlZ2FjeS10cnVuaworNTMwMjUgNTZlODhiYmFkOWEwZThkYjExNWY3YzRmMTdlMWNkNWQ4OTM5OWU3ZSBsZWdhY3ktdHJ1bmsKKzUzMDI2IDQ4MDc4OWIzMjk0ZGM1YmJjZmI0MDVlY2FlZTJjODRhMWViNWFhZDYgbGVnYWN5LXRydW5rCis1MzAyOSBlNGYyYjkyYzc1N2M5NWQ2NGRhNGFjODMwNzVhNjg0NjYwMTI4NzM3IGxlZ2FjeS10cnVuaworNTMwMzAgY2VlZWQwMjg3MjE2ODIzMmZiMDBhNGE2ZWQxYWQ2MWJhZGJiMmQxMSByZWxlYXNlMjUtbWFpbnQKKzUzMDMxIGE5MTBhYmU3ODE1OTBhNTU0YjdmMTk4MzAzOWUwNzNhMTY1Y2JhNzEgbGVnYWN5LXRydW5rCis1MzAzMiA5ZTM5Njk4YWZiYTU2Y2E2OWY0MTQ2OTZiZWJhM2M2Mjg0ZGEzNTcyIGxlZ2FjeS10cnVuaworNTMwMzMgZWU1ZTQxZGVhOTQ5MmViNTk5NmQwZjQ5ZmUyODI2MmNkYWE0ODM4ZiByZWxlYXNlMjUtbWFpbnQKKzUzMDM4IDBkZGQwNTkzZDQwYmVlOTI0MGZiOGQzNTc5MDBjMDAwOWYzMjU3N2MgcDN5ay1ub3NsaWNlCis1MzAzOSBmYTk5MzQ2MjY0MTA0NDJjMWIyODEwMWE1NzViMDVjZjIwMjEyNTllIHAzeWstbm9zbGljZQorNTMwNDAgNDY3YjM4MTE4YjI5YTJiNmFlOGUzOTE5ZjBiNDAxZTI4OGU5NTFmMiBwM3lrLW5vc2xpY2UKKzUzMDQxIDgzMzg0YTY5MjVhNGM5MmNiMTgzZTU1OWE4MTUxZWQxODM5ZDM4MWMgcDN5ay1ub3NsaWNlCis1MzA0MiA1OTdmZTg5NWE5NTgzNjJmNmVmY2FhMDYxMmJiZGRlYjg1N2I3MGJiIGxlZ2FjeS10cnVuaworNTMwNDQgNGY3ZjcyYmMzNDBhN2U1ZDMwMTg5Mzg5NWQ0ZjQ3YTkwMGJiNjUxYyBwM3lrLW5vc2xpY2UKKzUzMDQ1IDc0NTczZmRlNGYwY2U3NzFhMGZlMTA2NjM4ZTA3NDgwNWYzNmZmZDQgcDN5ay1ub3NsaWNlCis1MzA0OCAwZDY0ZjI5ZWYyNzNkMmMyMzM0Yjc4ZjgxNmY5YjIwNjc4ZjYxOGM5IGxlZ2FjeS10cnVuaworNTMwNDkgN2Q3OWZkMTgxNmE4NDVkOTcwOGZjZGExMWM5MzdmNzk3MGFhYjBmNyByZWxlYXNlMjUtbWFpbnQKKzUzMDUwIDgxY2NmZWRjMWM5OWU3ZDhkMGYxMDViZmZmOWI0YzU2YWZlZmJlMmIgbGVnYWN5LXRydW5rCis1MzA1MSA4ZTNmMmIwMjJmNzI3NzFjNzBjNWIwNmQ2NDYwZDQ3MDlkMzQzZGE0IGxlZ2FjeS10cnVuaworNTMwNTIgMzhhYTFhMDEwMjE5ZWVhYzQ4NmUzNDUyZDlhYWNkZWUyMzY4ZjdiYSBsZWdhY3ktdHJ1bmsKKzUzMDUzIDU2ZGM3MmMxYTFmNDNkZWVhYzQyNjFlNGY0ZTM4NjFhMjU0ZjdhMWQgbGVnYWN5LXRydW5rCis1MzA1NCBjZGY2MzUxM2E4Y2RmZmMzNDM4MmIyZDVhODUxYjc2NDRkNDBhMmU3IHJlbGVhc2UyNS1tYWludAorNTMwNTYgYWRkMDNhOWQ3NzhiODI4MTlhMWIyOTlhMmZmZjgyOGNiNTM5YjY5OSByZWxlYXNlMjUtbWFpbnQKKzUzMDU3IGZlMmEzYzk2NmM4ZWFmMWE3Njg0MTU4YTkxNWY3NjM2ZjQ2YjY2NDYgbGVnYWN5LXRydW5rCis1MzA2MyBlYjNiMjM5YTRkMDc4MDYxNjZmMjg5MmQxMzdmNTU2ZTJiMjJmMDVjIGxlZ2FjeS10cnVuaworNTMwNjQgOTU0OGNhMGU2NTYwZWNkNDQ0ZWJkYTg0OThlZDM3YTk1ODM5YmUxNiBwM3lrCis1MzA2NSAyMTQ4MGQ4OWI0N2YxMmQwY2Y1MTlhY2VmYzFmMDcxYzUzOTRmNTY0IGxlZ2FjeS10cnVuaworNTMwNjYgYjI3ZDVkOThhNTU2NzZjNjU5NjQxNWZmYjQwZjY0ZDY2NzMzNGE0YSBsZWdhY3ktdHJ1bmsKKzUzMDY3IDE3ZTc0Y2UyYmMzNWU3OWI2NTRjMjE1MjFkNWJkOWRjODVjZDhkNmYgbGVnYWN5LXRydW5rCis1MzA2OCBkY2M0MGI5M2JmYmVjYmEzYjA0NWQ0NGI3MTM4Y2U3ZmQxMGFjYjEzIGxlZ2FjeS10cnVuaworNTMwNjkgMGIwNGNiNzUxYzFhMjIxMTNkYTM2Njk5MGUzZTY3ODFlY2NmN2ViMCByZWxlYXNlMjUtbWFpbnQKKzUzMDcwIDE2NDRiYTdkY2UxZjA1ZGUwNmRhNDlkMzA5Zjk2NTJhMTkxYTZjMjEgcmVsZWFzZTI1LW1haW50Cis1MzA3MSBmOTgzNDBlMzZjMzExNWVkNzYzZTE1ODdjNmQ0OGZkMGM3NDU4MTYwIGxlZ2FjeS10cnVuaworNTMwNzIgMzBmMDk3NzZlZDU1NjAwYTBjNDg2M2Q0NzM0YzIwODEyNTgxMmM4YiByZWxlYXNlMjUtbWFpbnQKKzUzMDczIGZlNjk4ZDA3OGNmOTdlNzc2N2FhMWIyY2EwNDkzMzZiMTEyMDliOTYgbGVnYWN5LXRydW5rCis1MzA3NCBhOGZhMjZhM2EyY2ExYzlkYWYzZGQ4OTJhMDRmNjY2ZTY5NjRmYzRkIGxlZ2FjeS10cnVuaworNTMwNzUgNmY4NjRhOTFjNjEyYzllZDcyOWYxMTA2Zjk0NWQ3NWYzMWU1MjBkYiByZWxlYXNlMjUtbWFpbnQKKzUzMDgwIDg1NjVlM2ZlYTliNjJhMmJjMzg3ZjcwZDZhYzk1MmE5NzAxMDY2OWIgcDN5aworNTMwODcgZDRmY2I1NjU2MzE2MmMyNzVjZjQ4OGY0OTE5ZGRiY2I5ZWI5ZWE3YSBwM3lrCis1MzA4OSBmMWE0Y2UxZmU1YjEwYjVkMjA4NjdmNDg2MTg4ZjM4MjQxZTQ1MzE0IHAzeWsKKzUzMDkwIDUxMzk1YzBiNTQ4MmY4YzQwZmZmMDcwMTVjYjZhYTc3MzA4ZTFhODEgbGVnYWN5LXRydW5rCis1MzA5OSA5NmQ1MzNlZmJlN2RkNGM3ZjA3YjU0YjViOTdjNWU2OThkNmQ0NmNjIGxlZ2FjeS10cnVuaworNTMxMDAgZmU5YjU2OTkwODk0NDhlY2Y5NzViY2M5YjAwYzRhZDEwZDQ0OWIyOCByZWxlYXNlMjUtbWFpbnQKKzUzMTAxIDAzN2YzY2VhMjY1NTAyYzk2ZjY1ZTkwM2VmM2ExN2RjYjk3Nzk0YWMgcmVsZWFzZTI0LW1haW50Cis1MzEwNiAxMjUwZmU0MmNlNWM3OTEyNDA3Nzk4YjM3YWRkZjFmOGUzYzUzYTNmIGxlZ2FjeS10cnVuaworNTMxMTAgOGZiMzM1MDBlMDY3MGI4NThkNWEyZjg1OTRiMDNlOWRjNzU1OGFjOCBsZWdhY3ktdHJ1bmsKKzUzMTEyIDc5MDlhNGVlNTY2YjA1ODM0MmIxNTA0ZmE1M2I3MjAzYmU1OTRmZTEgbGVnYWN5LXRydW5rCis1MzExMyAyZDVlZDI2N2E0MGZhMWFjZmQyOTk5ZGMxYTA0ODM5YWI5OWY4MmYwIGxlZ2FjeS10cnVuaworNTMxMTQgODNmNWU4MGNlMWYyOWMzMTFhMDc2MGIyNGNmNzYwZWVjNDViOWM5YiByZWxlYXNlMjUtbWFpbnQKKzUzMTE1IGE4NTk1ZGVhZDU0YWQ1ZDdmYTliZWM3M2M3YjM0NzI4ZjVjNDZiYjUgbGVnYWN5LXRydW5rCis1MzExNiAyMmE1N2Y0ZmZiY2QzZDRlZTk1MWE4MTYxNDVkNThiZDZjZmVmZjI4IHJlbGVhc2UyNS1tYWludAorNTMxMTcgMzVjNDhmNjliYWNlYzc5NTgyN2ZmNDgxNWE2YzBlM2RjMDAzMjk0YyBsZWdhY3ktdHJ1bmsKKzUzMTE4IGQyZmE3ZGFhYTU5YmYzMDg3MDg5ZDIwNjYzZGYwODg0M2ZhOTBmNTUgcmVsZWFzZTI1LW1haW50Cis1MzEyMCAzZDY2NjlhZGVjZTRhNjQzNzhhYmU2ZmVjMzNkNDQwYTFmMWVlZjdmIGxlZ2FjeS10cnVuaworNTMxMjUgZThlMjNlZDZiNjdmMTM0Y2FkMWJmYTQzYjNkZDdhNTM4YjQyMGY3MSBsZWdhY3ktdHJ1bmsKKzUzMTI2IGZiNWUzZmM0MjI3YmU4MjJiM2U3ZmFhZjg5OGJmZjkwYmUxZDZhMjIgcmVsZWFzZTI1LW1haW50Cis1MzEyOSA5NGViZjRhMmY3MzhmMDExZTU5Y2MxZjY2MjRiOWMzMmNkYTUzYjEyIGxlZ2FjeS10cnVuaworNTMxMzEgZjk0ZTJiMTk1MTg5ZWRjOTU2NzNmODU0MWVhMGQ4NDI1N2ZjNjRkYiBsZWdhY3ktdHJ1bmsKKzUzMTMyIDM3ZTcxZmVhZWEzZDJmYzIwNGI5MmI3YTE2YmE1YWE2YTU0ODg0NjggcmVsZWFzZTI1LW1haW50Cis1MzEzNyA4ODE2MjVjMTNjMjA2Y2I3MjUxZGFlOTJjYjM0ZTk0ZDMyOWI0YTUwIGxlZ2FjeS10cnVuaworNTMxMzkgNjYzYzlmMWNlM2FhYmY4ZDg0YzM1NzViNjUzZTMwYTUzNTVhYTBmMCBsZWdhY3ktdHJ1bmsKKzUzMTQwIDJjNTA0YzYyZDRkOGRkNTQxODA3NTkxMTViNWI3NTU0NzRlZGU1ZmQgcmVsZWFzZTI1LW1haW50Cis1MzE0MSAyZjg0YjZlODE5MDJhODQxNzQwNDg2MjkxNmUxN2YwMzUwODk4ZWUxIGxlZ2FjeS10cnVuaworNTMxNDIgZjkyNmJiYzJmZDYyOTI3N2U2YTNhM2Q3ZmMyMDkwNjJlYTNlOWViYyBsZWdhY3ktdHJ1bmsKKzUzMTQ1IDVjNjc0ODRjNGNmNWVlMTcyYzU3MDVmOTM3M2M2MzkwZjdmMzdiYTIgbGVnYWN5LXRydW5rCis1MzE0NiA5MmYzZWY4ZmE0YWZhMDgwNjc2N2RkMTllYzIxZTYwZWE5NDg2MjNlIGxlZ2FjeS10cnVuaworNTMxNDcgMDlmNGI0NjBiYWViN2U1ZmI0Yzc4NDQ3YjFmOThiYmE0Zjc5MWY0YyBsZWdhY3ktdHJ1bmsKKzUzMTQ4IGRlZDk5ZGI3MGNhNjc4ZGQwOWIzZGVjYWNmODY3MjM0ZWYwYTgwZDkgcmVsZWFzZTI1LW1haW50Cis1MzE0OSBlNGIwZmY0NDkyMTVmMjVmMmFkNTVkZDRjZDNkMjUzMTZhYmIxZGQyIGxlZ2FjeS10cnVuaworNTMxNTAgMjg5ODE5ZmRlM2FmMGVjZjQ5NjQwODdiMGI3MjdhMGRkZDhjNTY5OCBsZWdhY3ktdHJ1bmsKKzUzMTUzIDVjN2VhOTM0NmYxMjc0NTE4OGU5MjRmNjE5NjQyYTllYThiZjI5YWQgbGVnYWN5LXRydW5rCis1MzE1NCBhYzhhOWE0MTIxZDE3YWE3MWRiYWY1YWVkYTczYmQ2YjE2ZjM2NjJlIHJlbGVhc2UyNS1tYWludAorNTMxNTUgNjc2M2U0NWM3ZjdkMzQ4MzU0MmU0MmI0M2I3NWJlOWM2YWI4OTI2NSBsZWdhY3ktdHJ1bmsKKzUzMTU2IGVmNGI4ZmNkMTRkNzJmZTM4YmMwMDI3OTgwOTNiYWY2MDFhMTc3ZGEgcmVsZWFzZTI1LW1haW50Cis1MzE1OSAxZTFiOWMyZTJhZjBlMzIyZDMxMTkwMjExMDljNjFjZGQ5NTUwNTc1IGxlZ2FjeS10cnVuaworNTMxNjAgMTJhZjY3ODhkOTExNTU5YzljZWY0ZTgwYzllZTQ3OGNjM2E1NGY0OCBsZWdhY3ktdHJ1bmsKKzUzMTYxIGU4NWNhM2ZkNGJkNjNmMzgwYTBhYjMxYjhlYjQxMjg0NmRhZjg1ZTAgbGVnYWN5LXRydW5rCis1MzE2MiAyNjc2ZDgyODdhMTFiMGU5YTJmZDkyMWNmZjVmNzk5ODY1OTk2ZGNlIHJlbGVhc2UyNS1tYWludAorNTMxNjUgNmY4YzZmODMwYjUxY2U2NWUyNWQ4ZjU1NGNlYmJkMDk0MDVmNWVlZSBsZWdhY3ktdHJ1bmsKKzUzMTY2IDRkNzdhMmM2YWE1NTMzNzNhNjQwNWFkODYyMzk3NzU5MWUzYmFjM2UgcmVsZWFzZTI1LW1haW50Cis1MzE2NyAxOTVmNjg5YWY1YWZmNGJjYzA2NWZmNWY3NDg4ZjY1ZWIzYjM0Njk4IHAzeWsKKzUzMTY4IGJjZTdlNGE5MjZhOTFiYTViNDNiNmVhYTEwOWJiNDU1YzkwOTlmOTIgcDN5aworNTMxNzAgNTRjZDQ3Nzg4ODExYzAzYzVlZDUxNGFhMGQwMTAzZDQ2YTRmZTE4MSBwM3lrCis1MzE3MSA3YTM1ZDNkMWFjNWEzMDFlZjNkYzUyZjkxNDA4NDRmMDQyMjAxMWE1IHAzeWsKKzUzMTg3IGQ2M2ZhOTBkZjllYWQ4NDQ3Y2VhZDNiN2ZlNDIzYzExYWMxODAxYjYgcmVsZWFzZTI1LW1haW50Cis1MzE4OCBhMzIyMjA3NWY1YzY2YTEzY2JjYmQ1NzZjMjZiOWUwNWEyYjM2NTA0IGxlZ2FjeS10cnVuaworNTMxODkgYjE5ZWQ1NDNkNjk1YTAzMDVmYTAyODE0OTY0MzhlNDE5Yzg2NDU0OCBwM3lrCis1MzE5MCBiOWZjYThmYjBmYjM1MThmMTkxNDUzYmVhOTY2OWNjNTA0OWY2Yzg2IHJlbGVhc2UyNS1tYWludAorNTMxOTcgOTQzNzVkODE0ODdkYTgxODBiMGJkOTgzZTFkNzZmNDI1NzJkMTY5NSByZWxlYXNlMjUtbWFpbnQKKzUzMjAwIGMxYTRkYzcxY2RkMzc2MDEyMDVmYjY2NGQ0OWM0MjJlMjc2MWNiMTkgbGVnYWN5LXRydW5rCis1MzIzMiBiZTgyNDBjZTUyZmY3ZjM5YmExNjYxZmRiN2FiOTY1ZTM1ZTA0OGRhIGxlZ2FjeS10cnVuaworNTMyMzUgMmIxOWIyYWRjNWMxYjhhODcxNDAwZTkwMTBjNGIwMmU4YTgxMTFjMiBsZWdhY3ktdHJ1bmsKKzUzMjM2IDdhMTM4MzljNjM1ZGM1NWNkZTQ3ZTIxZmU5OTNlZDYxZDg3ZDYzZjggcmVsZWFzZTI1LW1haW50Cis1MzI0MyA5Y2M3NjFiOWUyYWM1NjBmNDhhNGNjNTg5MjRlNjkxZDNlYWI2ZjNmIHJlbGVhc2UyNS1tYWludAorNTMyNDQgZGM3ZDRlNWQ4YjQ5N2UyYjAxYmJkODZkMjcwOWUzMzk4MThhNTZlMSBsZWdhY3ktdHJ1bmsKKzUzMjQ5IDQyMDNmOGU2ZTg2YWI0MGJmZmQyYzNiODM3YTJmNDBlYjc4ZDNjMGIgbGVnYWN5LXRydW5rCis1MzI1MCBkOTc0OWMzZTYzMjZhZTE2MjNmOWQxZDRhZTRiZjQ4Yzk3MWE2NDViIHJlbGVhc2UyNS1tYWludAorNTMyNTIgZjliMjc4MjA3OThiNzQ3NGYzNmNmMzQxYWIxNzIyYTE4NmY1NzMyMSBsZWdhY3ktdHJ1bmsKKzUzMjUzIDY5ZmU2ODNlY2U1NjZjODQyMzA3N2JmMTQyZDYzNTI3NTc2Y2YyYWUgbGVnYWN5LXRydW5rCis1MzI1NCBhZmFiZmZkNTYyZTk0Y2JkZTI0ZTEzOTFkOGY2OGFmNDcyZTQ0ZDMyIHJlbGVhc2UyNS1tYWludAorNTMyNTUgNDVjNzMxNTJiNGFjNTgzMTQ1NTNkMTA1YzYzNGU2N2E4NDQwMmNmYiBsZWdhY3ktdHJ1bmsKKzUzMjU2IGNhMjk1YzI3MGIxYzNmMmMxNTVhOTUyYTlkY2RlMmUzNzFlMzRhNTIgcmVsZWFzZTI1LW1haW50Cis1MzI1OCA0Mjc0ZWRmZGNlOTgxOGU1NDY4NGNkZTIwZTdiODE3ZGE0YTRmYTgyIGxlZ2FjeS10cnVuaworNTMyNTkgMzBkYTA2YjIyNWFmYWMzYmIxOGMwOGQxNzVkOTdmM2ExM2NhMTlkYSByZWxlYXNlMjUtbWFpbnQKKzUzMjYwIDk2ZDc2ZDA5YTRlOWMyMjUyZGZhODk3ZmQ2Y2E4ZjllYWM3NDRiNzkgbGVnYWN5LXRydW5rCis1MzI2MiA3Zjc2OTk2YzdiZjRiOGVjNzRiZjQ2YTA0ZDQ0ZDBmNTk2NTE2OTBiIGxlZ2FjeS10cnVuaworNTMyNjMgOTA5MzdkMzE3NGNiZTU2ODZjYTkxZGRlOTBjNzFmODE1Yzk5ZDVhYyByZWxlYXNlMjUtbWFpbnQKKzUzMjY0IDkzMzRiMGRjM2ExN2Q5MGUyN2VmNDU3OTc4ODk3MDA0MzY0YTVjY2QgbGVnYWN5LXRydW5rCis1MzI2OSAzYThmZDM2MzhmMjYwYTFjNTVlMWE1NzhiYWVkNWEyZjNhNzczZjRjIHJlbGVhc2UyNS1tYWludAorNTMyNzAgODRhY2VhOGUwNzJlNjZlMzFiNDBiNzVjZWU1MGNmNmYxMWQ3OThiYyByZWxlYXNlMjUtbWFpbnQKKzUzMjczIGY3MDI3OWYwMGRmYzgwYzBkZmI5ODg5ZjZlODM3OTYxODIxZmU2NzUgcmVsZWFzZTI1LW1haW50Cis1MzI3NSA2ODQ1ZTBlNjI5MDBmYzIxOTU1OWIxYTc4YTI2Y2ZiYjRkMjc0NDBjIHJlbGVhc2UyNS1tYWludAorNTMyNzkgMTY3ZTdiYTc0NzU2MTNjMjI2ODBjYWI5NmJmYWZlZGJhYzA1N2IxNCBsZWdhY3ktdHJ1bmsKKzUzMjg1IDA3YzQ3MDIwMjBkYzkyYWRlNjViMWYxYTFmYzhlZGRmMmE5MWIzZDkgbGVnYWN5LXRydW5rCis1MzI4NiA0MTA1NTcwZGEzMGFkMmIyMTA4OWNkMDE1ZjFjNWRhYjdjMjQ5MzFjIGxlZ2FjeS10cnVuaworNTMyODcgMTUyMGJhYWYyN2JmNzRlOTc5NzlkN2FmMDc1MjEyZmU4NGFiZmY4NSByZWxlYXNlMjUtbWFpbnQKKzUzMjg4IDZiZDY1Y2I1Yjk1MjA2MmUzMGVhMmUyMzZkYzUyMTU5YzBiOWIwYTAgcDN5aworNTMyODkgOTk1YjdmY2MyOTZkZjU2ODRhYzczOWEyMWNlNjRhNDUyYjg3MDRiMyBwM3lrCis1MzI5MSBjYzk0OWM2MDU1NzRkYTc1ZGM4NTkxYjcyZjlmZWY1ZjRiMThmOTFmIGxlZ2FjeS10cnVuaworNTMyOTMgN2ExMWEzYWJlNjRjMWY2ZjdjNWMyMzc3YmI4Y2VlZTViMjVlZTFlYiBsZWdhY3ktdHJ1bmsKKzUzMjk0IDQ0YzYyMjBiMWRjM2ZmYTY2ZGFkZmRmMjk5MGM1ODNmZmRkODQ5ZmIgcmVsZWFzZTI1LW1haW50Cis1MzI5NSA5OTA5M2I1MjdjMDFjYTNmZjU5MGVhMmMzOTgwZGZiMTVmMmZlYzgxIGxlZ2FjeS10cnVuaworNTMyOTYgMDM1NDdhNGNkMzBhZmExMGEzOGJhOGMyMmE2ODU1NjJjODVmOGE1MCByZWxlYXNlMjUtbWFpbnQKKzUzMjk3IDk0MGZmNWM3N2YzYTkxMDdlZWNiMTY4MGFkNzJhM2ZjYjk5NDZkZTEgcmVsZWFzZTI1LW1haW50Cis1MzI5OCA4ZGE2ZGRhNjc5ZjhiMmE4ZTVkZGY2YjVlYjM5YjI1YzA0ZmU3ZGYyIHJlbGVhc2UyNS1tYWludAorNTMyOTkgNGRjNzllMjgzMjA5NGQ1MmE4MjczYzgyZjhkYjUzM2Q4OWU1NWIzMSByZWxlYXNlMjUtbWFpbnQKKzUzMzAwIGJkN2U0MWRlOTgyZjYwZTlmMjk4MDg4MjRjYzNmNWU1ZTU3NzQ2NjUgbGVnYWN5LXRydW5rCis1MzMwMSA5YWZkMmM3ZmFlZGU2M2E3MTc5NWQzMWE2NTdlOGU4NGJkYzY1NzFmIGxlZ2FjeS10cnVuaworNTMzMDIgMWVkM2VkOWFmMzQ4Y2ZiYTRjZTc5MzE3Njg2Yzg5YmE0MGQ2MTNiZiBsZWdhY3ktdHJ1bmsKKzUzMzAzIGRlNTA0MDI0YTZlNzdiNDU5YjA5ZWE0MDY4N2EwNjlkNTYxMzY4MzggbGVnYWN5LXRydW5rCis1MzMwNCA5MmRkMmJiOTRjYTljODc5MTQwN2ViMjdiMDIwMzRiZjExN2Y2NzVmIGxlZ2FjeS10cnVuaworNTMzMDUgNWQ0MzEwMjVjOTk5YTk2ZTBkMjc1NzY4YWM4MTgxNTdhMGMwOWUwZSBsZWdhY3ktdHJ1bmsKKzUzMzA2IDYxZDYzNGEwYmQ2YTIzZDkwMzc0MTM4Y2E2NzRjYjc3MWUyZWZkYjEgbGVnYWN5LXRydW5rCis1MzMxNiAwZDkyY2FhMmQwZjQyYjJjMzkyY2RkZmM5MTYxYTgyM2E0ODg0YWQyIGxlZ2FjeS10cnVuaworNTMzMjEgNmRkYjYzNmY5NWMwMDk0NGM2ODYzMGFkYTJhMmI3OGNlYTZjZjI1YSByZWxlYXNlMjUtbWFpbnQKKzUzMzI5IGI4MWY0ZWU5NGIwNGNiOTZhZjRkMTljYWZhMzIyOTMyNjY2ZDUxZjUgYmNhbm5vbi1vYmpjYXAKKzUzMzMxIDQ5ZGM3ZmM2NmJlZTM4MmEwNTVjMjgwZjc2ZWY4NDliNTBkYmEyNTcgYmNhbm5vbi1vYmpjYXAKKzUzMzMyIDY3Mjg3Y2E0ZTFlODUzZmNkYTcyMmYzYjk5Mzk2ZjJkNGU4ODlmNmQgcDN5aworNTMzMzMgYmIxZWVhOWNlZDcwZGFiNzg0NGYzM2I0NTgxZTA1YmI5MThmY2ExOSBiY2Fubm9uLW9iamNhcAorNTMzMzQgZjMxZmVlMjYyYjUxNDVmMDQzYzViMzgzMjE4NjA5NDEyNjhiZWIwNCBiY2Fubm9uLW9iamNhcAorNTMzMzUgNjliYzgwNmQ5NjYxNjUzYTM2YzI5NTRlM2M3NzM4OTc0YzVlZTk5MiBwM3lrCis1MzMzNiAwYjc5N2E3YjUzMTMwNGYyNTA5MGQ5OTUzOGM2M2ZhNDUyYzQ1YmE4IHAzeWsKKzUzMzQwIDY2N2JkMDI3ZDgwMDk4ZDQ3MGI5Y2U4ODU1N2Q1ZDZkNDQzMTc5ZTIgbGVnYWN5LXRydW5rCis1MzM0MSBiNGJhNzI0OWFiYTU2ODMxMTA1NmQ5ZjBkYTNiOTAxNTJlZDdhZjM2IGxlZ2FjeS10cnVuaworNTMzNDIgNmIxOGEwOTVjMmU3YWI3YzNlMzNhMDY2YzhhNzQ1OTI1YmVmNDRhZCBwM3lrCis1MzM0OSA0YmFiNjVmY2NhOGU2MzY5OWIwMjI2MjQyZGZlMDgyMDI0NTlkOTg4IHAzeWsKKzUzMzU3IGZmNzFiODJmNmM5NTYwODNiMGNkMjhjYjIyYzQ4NjhmZWQzNjlkMTUgcmVsZWFzZTI1LW1haW50Cis1MzM1OCAxM2ZjMTk0MjA0YzRlNzRjNmU0M2M2NmI1ZTQxN2UzY2Q4MGY5ZTFmIGxlZ2FjeS10cnVuaworNTMzNjAgNDY4YWUzZTM5MmEyYTJiNjQ4MGY0YWRmNmI0Nzg4ZGFkYjFiMWMwYyByZWxlYXNlMjUtbWFpbnQKKzUzMzYxIDkwOTQ2ZDU0MzRhYTMyYTc3NjdiZTdjOTk1OTQ1MTM0OWQzZTBhMmUgbGVnYWN5LXRydW5rCis1MzM2MiA1ZjEzMDI3MWYzODY5NWVmNDk5NjcyZDZjYzYzOGVhMWM0ZjRiMzNkIGxlZ2FjeS10cnVuaworNTMzNjMgN2UyNTAwMjI2YzQzNmM2NWExZGQ3OTMzNjhmOGM4NWJlZjEzMWE5OSBwM3lrLW5vc2xpY2UKKzUzMzY0IDhjMzY5MzQ2YTRjYzUwOGM5ZGNkMzc3YzYxMjdiZjA1NGUyY2I1YzggcDN5ay1ub3NsaWNlCis1MzM2OSBlMWU0NDkzZjZlOGYyNDdhZjI1OWFlMjQxNjRjYzkxYWNhMWM4M2U0IHJlbGVhc2UyNS1tYWludAorNTMzNzAgNDZmYzc1NjE1ZGE1MjJiYzgwOGM1MzRiNTZhMDRlYzI1YTQzM2JmMiBsZWdhY3ktdHJ1bmsKKzUzMzcxIGI2MGI0MjA5N2I3OGI2YWNhNGRiZWNiZDFmMzdhYTU2ZTU4ZDQ5NjMgcmVsZWFzZTI0LW1haW50Cis1MzM3MyA4MTNkY2M4M2U0MmMyN2RjMDZhM2UwZDQzYjg0MTA3NGI1OTU4YzJkIHJlbGVhc2UyNC1tYWludAorNTMzNzQgNDNjNzVlNTQwZTkyMmZiNmU4Zjc4NjA3MjRjOGNmM2ZkMTdiYmI3MSByZWxlYXNlMjUtbWFpbnQKKzUzMzc1IDIxMTE5ZGI1ZTA5NjY1MGQ0M2FjNTVjNGU3ZTE1ZjkyMWM4Yjk4MjAgbGVnYWN5LXRydW5rCis1MzM4MCAyNjg1OTkwMGZhNWRlN2U1ZGE2YjM1ZTkxZWIxMjE4MGVjZDg5MDk0IHJlbGVhc2UyNS1tYWludAorNTMzODEgN2RhM2RiYzgxNDViODRkYmFhMmUyMzdkNDE5Y2NiODhiNTEwNmVlNSBsZWdhY3ktdHJ1bmsKKzUzMzgzIGJlMTkzYWYyMmYwNDdlYjBhZjc2M2NjZDNiM2NkOWU0YmZlNjVhZDEgcmVsZWFzZTI0LW1haW50Cis1MzM4NCBlMThhZjI4YjQ5ZGE5YTU5MTM2YWYzYzJhNDY1MWIxMDE1OGIyMGE1IHJlbGVhc2UyNC1tYWludAorNTMzODUgNTNjMGIwOWM0OGMxMWY0Y2MwNGExZjNmYWIwNzdjNDBhMTk3YTZlMCBiY2Fubm9uLW9iamNhcAorNTMzODcgMWM0YmJlNjNmZGZjNDg3NzI0M2FhYTdhYWZlZTc1MzI3MWRlNWQzMyBiY2Fubm9uLW9iamNhcAorNTMzODggN2Q4ODY4Y2ZiYTdjNWU5ZGY0MGY2Y2I0MzM5YzM1NmZiYmM1MTcxYSBsZWdhY3ktdHJ1bmsKKzUzMzg5IGEyZTE3Yjc1MTVkM2EzNjNlMjUyNzAyMGRkM2Q2YmI2ZDI3ZWZkNTEgYmNhbm5vbi1vYmpjYXAKKzUzMzkwIDY4OTliNzQwZThlYWU2ZGRkN2RjZGQ4OTk4YmVkMjU0Y2IyOGEwNDggbGVnYWN5LXRydW5rCis1MzM5MSA3OGNkMzg0ZDNmY2Y5MDlhYzg1MmRlMzg3NmE0NTJlOTQ0ZDBmYmRjIGJjYW5ub24tb2JqY2FwCis1MzM5MyBjN2JkODkyYzA1NjdkNzJkMjA3YzNlMjY1YzczMTA5YWVkMDdkYWE4IGxlZ2FjeS10cnVuaworNTMzOTQgNmQxNmViYzcxNTY5NWMwOTA5MTlmMDk4NTNjM2U5OTU1NmRjNTA1ZSByZWxlYXNlMjUtbWFpbnQKKzUzMzk1IDE4MDJjZjkzMjU0YmY2NjQ1NDVmMGZkMTRiNWQwNGQwNTZmZThjOWQgcmVsZWFzZTI1LW1haW50Cis1MzM5NiA4YmY2OGVjYzc2NzZhZjFmYmQzNGI4ZWQzYjBiYzZhZjdjYjU2MzkwIHJlbGVhc2UyNS1tYWludAorNTMzOTcgMmM1NzFmNmNlMjNhYjI3NjY4YzJhZTEyZDRkYjY0Mjg3N2I0ZWQ2ZSBsZWdhY3ktdHJ1bmsKKzUzNDAxIGU4YWRlOGE2ZTVjYjljYTRhMjEzNWExZmViNjdhZjliZGQ1OWMzODUgbGVnYWN5LXRydW5rCis1MzQwMiBjZjhhZjZiNzU5OGJjNTM1NTg5ZDc1ZDY5NWIxZGNiNzMzMDAyMWZiIGxlZ2FjeS10cnVuaworNTM0MDMgY2E1MzdlOWJhN2E3ZjFhNjEwNjhmNTA1YzVmMzNlODU2MWFlOTA4MSBsZWdhY3ktdHJ1bmsKKzUzNDA2IGIzMDNmYjM4M2ZhNDY5NDgzNzUyZTNmM2FhNjdmN2JlZWFkODBjOTEgbGVnYWN5LXRydW5rCis1MzQwNyBmMjdiODg5OWI2MTM1MjMyYTdhMmFlOWQ2M2UzMTQ0MTFjYTZkODI5IGxlZ2FjeS10cnVuaworNTM0MDkgZWQ3YWNmMTg4MWE5NDBmYzY1YzdkMjU5NWM2MWYzNWNmZDI1ZDQ0NSBsZWdhY3ktdHJ1bmsKKzUzNDEwIDJhNDc2Yzk0YmUyMDA0MDVhOTFlODI1MzllMmVkYWZhYzNkMjM3MDAgbGVnYWN5LXRydW5rCis1MzQxMSA2OGI0MWMyZDY2NjMxYWFjNGI0MTRiMmNhNmM2MWZlZmVlMzQ3Y2M2IGxlZ2FjeS10cnVuaworNTM0MTIgMmRmODBlNzE2ZTVjOWQ5MjY2ZmZlZDBhOWYyM2I4ZGQ2ZjQ3YTUxOCBsZWdhY3ktdHJ1bmsKKzUzNDEzIDE0MDllMWYyNzNiNTA4NTEzNTYyYzg2MzkwZWQzM2U2YjAyMTViYTEgcmVsZWFzZTI1LW1haW50Cis1MzQxNCA3M2I5M2RjNWU0NDBhYzA4ODkyNjM1ZGUwZWExOWMwYzM2N2YxOWNlIGxlZ2FjeS10cnVuaworNTM0MTUgZjMyODMyOTQ3MWRmNTcxMzk2YTNiYWNjOWRhYWYzZjBjMTJmYjc1ZiBsZWdhY3ktdHJ1bmsKKzUzNDE2IGNhMWI0MGNjNmI3NGMzNTk5YTI0NmNhZTk1NDQ1NzVhYWZhODM0M2UgbGVnYWN5LXRydW5rCis1MzQxNyA0MjZmMWQzNzNjZGQ2NTc4MGY4Nzc5ODEzMmNiNDliOWMxM2NiMGE5IHAzeWsKKzUzNDE4IDRlYmYwYjgwNWNlODRmN2E3OWYwMGNiOWQwMTYzZTJkNGU4NmE1N2UgaW50X3VuaWZpY2F0aW9uCis1MzQyMCBiOWQ0Y2VkMjM1MDYyMWY2NjhjZmY5NDJmYzQzNTAyMzBlYmQ5YTgyIGxlZ2FjeS10cnVuaworNTM0MjEgNGFlZTNmNjcyZjc3ZTBmZWFmMDJjY2RhYmQwMWVlZDhiNjMyMzZkZSBwM3lrCis1MzQyMiBkYmZkODZjM2M3OTEzYWExY2QyNDI3ZmFmMTk0NmFlYmY1MTE2YThlIHAzeWsKKzUzNDIzIDkwYzM4MjcxNjg2YjEyMTMxNDQzNWIzODlmYzJiMTdlYzg5OGIzNWYgbGVnYWN5LXRydW5rCis1MzQyNCBhMDA0YzNiMDE5Y2ExNTMyMjUwYzUyYzVhZmFjZWI5MDBhZTQ0OThmIHAzeWsKKzUzNDI1IDNkNzliYzZlZDZlY2U3MjI4OWExNmJjOGZhMzgxYWMwOTk0ZTAyYzYgbGVnYWN5LXRydW5rCis1MzQzMyA5OGQ1ZjkwY2I5MDVhZmViY2ZjZmQxY2QzN2JjMWUyNzM4MWZlMTNlIHAzeWsKKzUzNDM0IDZlZmUzYTRiMTBhYzk4YWQyZTI1Nzg5MjgyMmZhOTU0MTIyOWZjZjAgbGVnYWN5LXRydW5rCis1MzQzOCBkYjhjMTc1ZDEyODNkN2ZiNzY2MjAzMDAyYWQ2MGYxNzA5NjQ0MDdhIHAzeWsKKzUzNDM5IDhlMmNhNTQ0NDkwMDFlY2IyM2FlNWFhNTE4Nzc0ZTEwZWZmZTcxZmQgcDN5aworNTM0NDAgY2Y5ODM0NWI5ZDZiMDIwYWYwMGU2Nzc3MGIwZjNhNzEyM2JkZTY5ZCBsZWdhY3ktdHJ1bmsKKzUzNDQxIGYzNzY5NmU2NDZmYWM1ZDUzNTYzZDM5ODc5OGY0ZDgwMjBlMzMzYTMgbGVnYWN5LXRydW5rCis1MzQ0MiBjYzVjMDcxYzg0MjMxMWU4M2Y2Y2VhMDg4M2Y0NDliODg3N2Y1ZWY1IGxlZ2FjeS10cnVuaworNTM0NDMgODZjZTFkZjZhODhlNzBjMWEzOTBhMzNhMDhkYjdkZTQyODhjMDYyNiBwM3lrCis1MzQ0NCA4MmI5YjViMTIyNTZlNDVlMGNhNDkxZDI0YmQ2ZWM1ZGE5YzkzZTFkIHAzeWsKKzUzNDQ1IDZmNWIzMzk0NzI3NGU4YjRkM2ZjNTFlYzk0NTNhMmUyMWYyNjQ3ZTQgcDN5aworNTM0NDYgMzQyNTMyZjQ1MzZlNjE4NDg5YWM1MjgwMDkzZjM5NzNiNTU2MmQyYiBwM3lrCis1MzQ0OCBkMDJkMjljNTIzMmExY2FiY2IyNzAwMzQ3ZDg0ZGE5ODY1MWQxZThhIHAzeWsKKzUzNDUxIDQ3ZjllZmRjMDg1NWE4ZDE3NjFhMGE0MjQ3OTM1NzYyZjQyYzM1YzMgcDN5aworNTM0NTIgMWMyNjUwNWMxZGU2ZWI1MGVhODY0YTk3NzAyOGJkZjY5NTc4YTk3YyBwM3lrCis1MzQ1MyAzZjc4Mjc0ZjJhMzQ5NDM1Yjc0NTJlMmQyNDJmYjYwYTU0NzM2NjgyIHAzeWsKKzUzNDU0IDRhNGJjNWM3NmU0NTkwYmRjOGU1ZTdhZGEyYmMzNGY0ZWNjMDY0Y2IgbGVnYWN5LXRydW5rCis1MzQ1OCA5YmU2MmM0NWYzYTg3OTQwZjFiMGNkZTNiM2I3NmRjZGRkOGE5MzY1IGxlZ2FjeS10cnVuaworNTM0NTkgZTViNjQxZTcwMGYyMzU0NWEzOTRjMGE4MzgwZmMwMTc1MjAwY2ZhOCBsZWdhY3ktdHJ1bmsKKzUzNDYwIGE0Y2RiOWM4YWYyNWJkNjdhMzliMTQ5MmMzOGMxYzNjMWIyNWFlZjYgbGVnYWN5LXRydW5rCis1MzQ2MiAzNzlhZjQxOGZjMzY3NTJkZTk1ZjRhYTJiYjdiZGQ1OTU4YmU4MTExIGJjYW5ub24tb2JqY2FwCis1MzQ2NCA0OGQzOGQ3NzcwMjQ5NjI5ZWI1MTUzYjM5MDYwZjE1MTVkMjk1ZjI1IGxlZ2FjeS10cnVuaworNTM0NjUgMDNhNWYyYjA2ODI1M2ZhZTA1MzQ0YTRiZDJiYzRhMzZkYmRlNWNhMSBsZWdhY3ktdHJ1bmsKKzUzNDY2IDY2NzgyZTViOTkyZjU3ZjRiNzIxYjFjOTU2NGE5OWM1NDQ4ZWZhMTcgbGVnYWN5LXRydW5rCis1MzQ2NyA0YTk3ZjNiZmI1NWNlMWU1YmRjY2Q5M2NmNTlmNzA3ZjVhOTA2ODE5IHJlbGVhc2UyNS1tYWludAorNTM0NzEgYjczMzhmM2IxYjAyMjQ1ZWE0Y2ZjODY5MGRjMzQ2MWUwNTg4YjNmNSByZWxlYXNlMjUtbWFpbnQKKzUzNDcyIDA5MWRmNDM2MDM4ZDc0NWVhOWQ2MjdmODgyMDJiMzA4NDBmNGQ1Y2IgbGVnYWN5LXRydW5rCis1MzQ3MyAxOTFlYWFlNWEyOWQyZWMzZjRhNWY2MzI5ZWZiNjZjN2QxMWZlNTUyIHJlbGVhc2UyNS1tYWludAorNTM0NzQgNGQ4NTdkYTdlNmM0ZjQxMzI4NzU0M2Y5NjZlOTVmM2EzZGI5MTEwNCByZWxlYXNlMjUtbWFpbnQKKzUzNDc1IDc3MzI5YjEyN2Q0Mzc0ZTQxNjg2MThmMmQ0ZjBiMjZmZWZlMGY3MzIgbGVnYWN5LXRydW5rCis1MzQ3NiA5NGNhMDZkOTU5MzA2ZjgyYzVlYjEzMzgxYzRlMzBlNmMyYmNiNDdiIHJlbGVhc2UyNS1tYWludAorNTM0NzcgOTAxNjA0OTBjNmQ0MDUyZDNiNDc1MTlkNzMzNTM3ZWM1OWIyMTE4NCBsZWdhY3ktdHJ1bmsKKzUzNDc4IDIyM2ZmMzVkY2ZmYzFiMDZhZDQwYmYwNzQ1NDU2NDFkZTkyNjIzNmEgcmVsZWFzZTI1LW1haW50Cis1MzQ3OSBlZTg3ZWVmOTU3ZjM1OTEzNjMyNzcwMzQwN2UzYTEzOWQxNDMwMGU1IGJjYW5ub24tb2JqY2FwCis1MzQ4MSBjYTYwN2Q3NDhmNjRlNjYwNGM4YTVhZTA2MDJiZmJhNDVlY2RjOWY2IGxlZ2FjeS10cnVuaworNTM0ODIgOWJkZjM0YjNmNzJlYjBmZWUzYzJiMTliMzlmMmQ4ODlkNWQzNjdmYiBsZWdhY3ktdHJ1bmsKKzUzNDgzIDNmMWRmYWYyOTNmYTFkYTBlZjliOTQ5MDc5ZjY4OGZmOWYwNTUwNGEgbGVnYWN5LXRydW5rCis1MzQ4NCAwYmM0MmMxNTZlOWY1ZWZlZTc4OWM5NTJhNGQwZTg4NmY2ZTQ0ZWEwIHJlbGVhc2UyNS1tYWludAorNTM0ODcgOWZlOTJmMThiYjZhNDJhNzQ2OTNkNmFlOTgwODNjNjFhN2JkNDhlMCByZWxlYXNlMjUtbWFpbnQKKzUzNDg4IGI4YWNlYzRhNGM4OWNhNmJkM2FmODU5YjdmNjdiNDI0MTdjOWViNGIgbGVnYWN5LXRydW5rCis1MzQ4OSBiMDUxZDE5N2Y3YTQ5MzdmY2NlZmM2N2FhZWI4MGMyMTZhNDU1Mjc1IGxlZ2FjeS10cnVuaworNTM0OTAgMDVhODk4NmQ5NTI2NzM3YzkyNDIzMmM1N2RjNTMyY2I4MDc0YWNmNyByZWxlYXNlMjUtbWFpbnQKKzUzNDk2IDY4MGQxN2E2YjE1ZjBhMDQyNGEwM2Q2MDRkMGQ0NTIzMWVlMTZkMjIgcmVsZWFzZTI1LW1haW50Cis1MzQ5NyAzOWIzYTVhM2M2NDViODliODBmNWYzYjVjMGQ0YTM0ZDFhZTRkNGRiIGxlZ2FjeS10cnVuaworNTM0OTggNjBkMzFhMTJiMTUwZDUwOWNmZDcwYmYxOThkMDZiY2FmNjVmZWJhOCByZWxlYXNlMjUtbWFpbnQKKzUzNDk5IDJmODBhZjY3NDA3NGFmYzI1MjZhZTAwMWFhZDhjNGI1ZTYzODRiYmIgbGVnYWN5LXRydW5rCis1MzUwMSA1YmY0ZjA1OTAzYjIwYzYwZjc4ZWJjNDUwNjYwZDI3NDZjYTdhZWEwIHJlbGVhc2UyNS1tYWludAorNTM1MDIgNTljZjg5ZTVmMjM3ZWRhYTUxNjA4NDMxMzEzMjFmOGY4NGFjOGM0MiByZWxlYXNlMjUtbWFpbnQKKzUzNTAzIDdiMzhmOTk1NWM2NDY1OTQwMTQ3NzU3MWI3MWFmOWI5OTNjNThmYWYgbGVnYWN5LXRydW5rCis1MzUwNCAxMGJmZmQxOWI1MzVhNDQ4ZTQ4MmUyOWVmZmVhZmM4NTlkMmIzZjEyIGxlZ2FjeS10cnVuaworNTM1MDUgM2FlNGY5MzBiZjI3YjRjZGMwYzc3ZmUxNmJkZjUwNDE2YTg3OTY1MiBsZWdhY3ktdHJ1bmsKKzUzNTA2IGFjNGMyZjVjM2ZjMGU5OTM0MzM2NDY4YjNjOTA5OTI3OWY5ODljOTIgbGVnYWN5LXRydW5rCis1MzUwNyA1ZjhhNTRjODA0ZmY2ZjBkZDMyYjJjMjU4MTkyZGE5M2E5YTZlZDY0IGxlZ2FjeS10cnVuaworNTM1MDggMGJmZmNhNjRjY2M0YmEwNGU0MTMwODhkMDc0MGVjODJmNDg0ODExOSBsZWdhY3ktdHJ1bmsKKzUzNTA5IDc3ZTBmNDcxOGE3Y2E2MTc3ODdlNzBmYjNhOGY2ZmJkZTdiYTA1YzYgbGVnYWN5LXRydW5rCis1MzUxMCBjODZkZjMxMWU2MmNlY2UyMTAwNmJlNmJjMzYyMDlmYWVmMmI0YjhjIHJlbGVhc2UyNS1tYWludAorNTM1MTEgMmZhNmU4MmIxZjE3YjdhZWY4NzYxMzc5NzJhNzNiN2MyZmZkZTc3NyBsZWdhY3ktdHJ1bmsKKzUzNTEyIDU3M2E0NjE3NjE3NTM5NTJhMGIwNTJjMjE1MDQyMzA1NGQwNzU0MGMgcmVsZWFzZTI1LW1haW50Cis1MzUxMyA2NjZmYWY4OTEyZTA1ZjM3ZmUzYWI0ZDgxM2RhMjQ5MjE0NWJjZGFlIHJlbGVhc2UyNS1tYWludAorNTM1MTUgMTY3OWE0YWRhMTcxMmIwZDg4OTlhNThmZGFjOWFkMGZjZjkwNDdkZiByZWxlYXNlMjUtbWFpbnQKKzUzNTE2IDNiNmFjNGY0YjQzNzI0MGJkZmEwZjg1MzQwYWVjZGM1NmJiYjE4MzkgcmVsZWFzZTI1LW1haW50Cis1MzUxNyBiMjM3MTFiZTJiM2UwMzQyMTM4ZjQ3NGZmMzE2NjQ4NDg4NzBmZDRmIGxlZ2FjeS10cnVuaworNTM1MTggYmI0YzBiYmJhMjcyZjhkNzhmNzUyNmZkMjRjNjIwODI4MTQwMDhiOCBsZWdhY3ktdHJ1bmsKKzUzNTE5IGIxNmI0Zjk3NmU3MGFkODdmNjYzOTcyYzJjYWZhNDA3OTNmNDc4YzEgbGVnYWN5LXRydW5rCis1MzUyMCBlY2UyYWY3NjQ2MjFkMDU3ZTQyNTY0YTRiNDRkMzQxYjk2ZWNhNTQ1IHJlbGVhc2UyNS1tYWludAorNTM1MjEgZGUyYmJkZWNlODNlZGFmZDJhZTFkYTQ4OTE4YTQzMjczNTg2ZjIwNSByZWxlYXNlMjUtbWFpbnQKKzUzNTIyIGQ3YmUwM2ViZjQ2NjczMWNiN2JlNjFjNDc0YzY1MWU5NTFmZjQ0NGYgbGVnYWN5LXRydW5rCis1MzUyMyA5ZjIzOTNlOWVhY2FiZjQzODA2M2ZkYWYyOGYyZjRmMTc4NzllODMyIHJlbGVhc2UyNS1tYWludAorNTM1MjQgMDgxY2E2MDgwZmYxNDUzMDRlNGQzNGYxMTg5MTk5NjQzNTJjZjUxNSBsZWdhY3ktdHJ1bmsKKzUzNTI1IDI5YjhiNjViYWUzZmFiNWUwZjRiOTcwYmQ5NmJmYTNiZTAzMGUyMTAgcmVsZWFzZTI1LW1haW50Cis1MzUyNiA3ZjQwNjVlZmE0NGVlMjM5NjUxMTE1MTVmNGMzMDcyZTI1ZTJhMzNhIGxlZ2FjeS10cnVuaworNTM1MjcgODZhYjJmMjBhMzMzMzhkYzBhMmYwMTBhZjBjOTI5MzE0ZWI2ODgzYiBsZWdhY3ktdHJ1bmsKKzUzNTI4IGQyZTJlZGQwNzA4MmM0ZmJlZGU0OGIyN2IyZmViM2JlNzY1ZTM4YTQgbGVnYWN5LXRydW5rCis1MzUyOSBkYTMwYTI2ZGZlYjM5Y2I1MDFiNWIwYzI4NWFkZWRjNWRkZTdiZmE1IHJlbGVhc2UyNS1tYWludAorNTM1MzAgNjg2MGJhODhkNjdlYTlkMzBmNzllZTgxYTI5Mzg2M2YxMjczMmNkOCByZWxlYXNlMjQtbWFpbnQKKzUzNTMxIGRmMjk0YmM1Y2U2ZTgyNjk4NzY1MjE2N2MxMmYzODk1NDJiY2Y1N2YgbGVnYWN5LXRydW5rCis1MzUzMiAwZTk1Yzc3NTEyZjU0YTEwYzI5YzA3MzgwYjAyYTcxZjA1NDY0OTE2IHJlbGVhc2UyNS1tYWludAorNTM1MzMgMjkzMzExZTYzYTczMmUyMWRhN2VmNjYzMGZmZjI1ZDk4MDA4MDQ3ZiByZWxlYXNlMjUtbWFpbnQKKzUzNTM0IDAzMTQ0YzQ4Njc4MmMxYjEzZTFiYTYwODc4YjU5ZjQ4ZTBmZjE2MDEgcmVsZWFzZTI1LW1haW50Cis1MzUzNSBkYmJkZmMwMzhkYzk0N2NkOTI0MGJjMjk3NWY4MjgyNWU3ZjI3Y2FlIGxlZ2FjeS10cnVuaworNTM1MzYgMzhkOTQ0ZWZlNjAwYzZjNGVmNjk3ZWZlMzk1OGY0NTNmOTBiNjI2YyBsZWdhY3ktdHJ1bmsKKzUzNTQzIDQ4MDdhNmFiZjkwNjI0Yzk4Yjc5YzU1M2IxM2JjMDUwMmUzOWI2Y2EgYmNhbm5vbi1vYmpjYXAKKzUzNTQ1IDBkMDk2YjE0NmI0ODY4YjMyOGI1ODAwM2E3NTZlYzAzZGIyYzExNWYgbGVnYWN5LXRydW5rCis1MzU0NiA0MTU4YmE3ZjQ2YTAzNWFhNDFjZjIyOTFkYmZiNzZmNGY3NzEyMGUwIHJlbGVhc2UyNS1tYWludAorNTM1NTYgYTViMjY5Y2UwNzlkZWRjNmIwZmY0YzhiNDMxOTRlMDVlMDkwMDk5ZCBsZWdhY3ktdHJ1bmsKKzUzNTU4IDY1NmRkMDA5NWY1MmVkYzE4ZGVlOTVkMjNkNjliYWNiMTlhYWJkYzIgcmVsZWFzZTI1LW1haW50Cis1MzU2MyBlNDM4MTZkZGM0ZjA1ZDMxOGQ1NDA5ZTcyYWNhOWRjNzNkYzdhOWE4IGxlZ2FjeS10cnVuaworNTM1NjQgMTVkZWNhMzllMGU2YmJjNzljYzQ4MTYwNjNkYmNlMjIwMGIyM2YyZCBsZWdhY3ktdHJ1bmsKKzUzNTY5IDRmYTljODBmYjE3YWI4NmMxOWQ0ODg0YTM1NGZjNTI1OTIzOWIzZWIgcmVsZWFzZTI1LW1haW50Cis1MzU3MCAxMTYzZjU1ZGFkOTVmODBjZjdmMDVlZjE4YmI4NmRlNTdmMmU3YzVkIGxlZ2FjeS10cnVuaworNTM1NzIgMmJiZjE3YzFjNjljYjlkMWJkY2NhMTRkYzM4NDQ3MTAxZDUwODE2OSByZWxlYXNlMjUtbWFpbnQKKzUzNTczIDEyODU1MDAwZTEzYmRlYWI0ODg3Yzc0NGMzZTE2NTk5NTU2NzU5YWMgbGVnYWN5LXRydW5rCis1MzU3NSAyMzQzYzY4Y2ExYzg3YTNhZmY1MDIzYWIyN2Q4MWIwZThjYWI1NTA3IGxlZ2FjeS10cnVuaworNTM1NzYgMTc1MWNhM2ZlZmZlOTZiNDQ4ZjZlMzYyYjRkMTYyY2M5ZmI3ZjI5NSByZWxlYXNlMjUtbWFpbnQKKzUzNTc4IGM5ZDdiODZmOTM3N2NiMThiYmYxMzZmY2FiZjljYWNlYWVlMTBhZTMgbGVnYWN5LXRydW5rCis1MzU3OSAyNDMxZjgyYTZhMTc1NmZhNzRhZDIyY2UzYjcyMDE3ZGE0ZmExZmZiIGxlZ2FjeS10cnVuaworNTM1ODAgYWQ5MzZlMGI2ZmNmZDFiYjJkYmY5YTdhMzk5MGYxY2EzNzk4MzcyMiByZWxlYXNlMjUtbWFpbnQKKzUzNTkwIDE3ODJiNjIyYWFjNzFiOWIwZTNhYWQ5MTNhOGY2NWM5MWRlMDZkOTkgbGVnYWN5LXRydW5rCis1MzU5MSAyZDgyMzlhYmZhNjBmYWUzYzFiZTc1ZWJjMGRiYzQ0YzhlMmQ1YjhjIGxlZ2FjeS10cnVuaworNTM1OTQgNWZjODE5YzZjMTNlMmVmOWU3YmQ1ZDZlNzA2MGRmNmNiZjBmYTViOCBsZWdhY3ktdHJ1bmsKKzUzNTk2IGQ2MGFkOTE0ZDgzM2VlOTZjZGJlYjM0Y2Q1YWNjNmI0YWNkMTBjNjIgbGVnYWN5LXRydW5rCis1MzU5NyBhYjljODY1MTk2MjgxYWZhMmE3NTc3Y2Y2NjQ5ZTc1Nzc4ZTdjMjA2IGxlZ2FjeS10cnVuaworNTM1OTggZmZiOTU4MGY5NjdiYWE2Yzk2MjI4NWQ1ZDgzNjZlZjgxNWUwYTc5NCBwM3lrCis1MzU5OSBkNWJhYmIzMjZhNTBkMTAzYjAxNTRiZWM0ZDZjMGIyNTEwODMwOGZmIHAzeWsKKzUzNjAwIGEyNjQ0MjIyODA1ODU1YzgxN2RmMWQ1MzZjMjQ4MjdmZjJjNDE2OWMgcDN5aworNTM2MDEgNWRhZTBkN2Y2ODNhYjM3OTY5MmZkNGNiNDVhOTE5MWRkOTJjZTIwZCBsZWdhY3ktdHJ1bmsKKzUzNjAzIDRiMTAwMWRhMzk5Mjg2YTg2M2FjNjU5OTkyMjE1ZWFhYmE1ZDk4MTQgbGVnYWN5LXRydW5rCis1MzYwNCAwYWNhMDAzOWNjMWI1ZWQxNWYxMGE5ZGY0MWUyNjU4NDdkMDM3NTc4IHJlbGVhc2UyNS1tYWludAorNTM2MDUgYmQzNzM5YTg3MjU5NWEwNzE2ZDhmNjE3NzdjMzBmYjY5ZmU4NGJhOSBsZWdhY3ktdHJ1bmsKKzUzNjA2IDAzN2FiY2E4MTdiNjM4M2JkYjQ4YTc3NjEzODQ0NmE5MjU1ZTQwODYgcmVsZWFzZTI1LW1haW50Cis1MzYwNyBjMTQ3YzZiYzU3OWYyODE4YWQxMzEzMmRhMDg0MWVjZDMwYWFmMzFmIGJjYW5ub24tb2JqY2FwCis1MzYwOCA2N2VjNGFmZmJkMTRjMGU0ZDg3MTVkNWFhZjBkYjA2MjBjNDUzZmZjIGJjYW5ub24tb2JqY2FwCis1MzYwOSAwZjIwYzNiYzYyNzA2YTIyZmMxZWExMTkyZDZlYWJiMDdhMDJjYTE5IGJjYW5ub24tb2JqY2FwCis1MzYxMCA2ZWJhZDJhNmI5OTA3ODZhYjYxMjNiYzk2YjYxNjczMTUxN2EyYmEyIHAzeWsKKzUzNjEzIDU4Mzg5ZGVhNjUxY2Q2OTMxZThhNDFjYTM3MWVmZTFhYWVhNzhjZTQgYmNhbm5vbi1vYmpjYXAKKzUzNjE2IDcyYzBjNmFlYzFlZDE4NWM2MzZjZTEzZjA0YTVhNzA2MzVjMjIwMTIgYmNhbm5vbi1vYmpjYXAKKzUzNjE3IDUzYTM2ZGIyYzM4NzY0MDk4YmU4ZjYxMGFmNjAzYjk0YTA5ZDRkOGIgcmVsZWFzZTI1LW1haW50Cis1MzYxOCAyYThlOWVmYjVkMjBjM2JjNWRjYzcxOWVlMjcxNGU2ODliMDNlYWM5IGxlZ2FjeS10cnVuaworNTM2MjQgYWQ4Y2RmYjY5ODcyMTNlZDBjZDZkNWQzZGU0OGY1NzVjMjA4MDI1OCBsZWdhY3ktdHJ1bmsKKzUzNjI3IDg0ODA5NjhmNGY0YTE0ZTkyOTFhYjUwMTU1OTlkMTkxN2Y2YWE5MTkgcDN5aworNTM2MzQgZjE3MDFiYTI0NTJiNDBlYThkYjg5YzIzYjJjM2EyYzdjMzMzYTM4MSBwM3lrCis1MzYzNSBjY2FjNjM2YjE1MmNlNjgyZmI0ZjI1MjUyNWJlNDVkYWJkZjhkNjgzIGxlZ2FjeS10cnVuaworNTM2NDEgNmQ5Y2E5MGQ4YmY3NDlkOTViZDk4MGFmZDExN2RkMDJjYTZiZWU1OCBsZWdhY3ktdHJ1bmsKKzUzNjQ0IDFhZjhmZWUzMzAxM2MwZTc2MmIyNDBhNTg0MzRlZTllMTcyYmEzMmMgbGVnYWN5LXRydW5rCis1MzY0NiBkM2U4ODYzMWY5MmJiNmEwN2JhNzBlOTVkOWVjMjNhMWQwNWNiYjFmIGxlZ2FjeS10cnVuaworNTM2NDcgMjY1YzUxYmEzOTEwMjMxNDljNjlhZDA1YzUwYTU4YzU2MTZkNmVlMSByZWxlYXNlMjUtbWFpbnQKKzUzNjQ4IDA5ZGNhY2M4YTBiYzJhMWUzMGZkODQ3YTAzNjdkN2NhZDU4NTQ2NjkgbGVnYWN5LXRydW5rCis1MzY0OSAwNTI4ZDZmOTRlYjZlZTYzZjhlNDhjMGQxYWYyNzA3YjM5ODcyZjEwIGxlZ2FjeS10cnVuaworNTM2NTAgNmM0MWIwMTIyNzQ3YWY1OWQ1MWZlNzk0YWIwYTU4ZDdlMWI5ZDI0ZCBsZWdhY3ktdHJ1bmsKKzUzNjUxIGQ1OTRlYzg1OGZlOTc0ZGM1ZDkyYzE3MDEzNmIwZjIzNjk0ZDZmNDkgcDN5aworNTM2NTIgZjgzZDZhYTM5MGYxMDZiOTJmYjhmZjJkZmUyZGE0ZWI4ODU4ZDhkZiBwM3lrCis1MzY1MyBjNzc5MzM0NWEwYzU0NGMyNDgyN2NhNWNiYTM2N2Q5MmRlYjZhZmVlIGxlZ2FjeS10cnVuaworNTM2NTQgNDk5YmYzMDQwYWY3YmY0NTNiZmQzMWRlMjNlNTliM2JkNWFhMWI0MiBsZWdhY3ktdHJ1bmsKKzUzNjU1IDU2ZGJkYjdiNDA0YTM5YmU3YTVjMjgzM2E2ODI5ZDNkZDM5NGVkMGQgcmVsZWFzZTI1LW1haW50Cis1MzY1NiAwNzg3NTU0OThjZmUzNTUwYmI2MDEyZGVjMGI1NmEzNWEyNzc5NmYzIGxlZ2FjeS10cnVuaworNTM2NTcgZDUwOTk0NjkzYzkyNTZmZDFlMWJjYmQ3MGVlY2VhYzg5NTFmZTQ4MyByZWxlYXNlMjUtbWFpbnQKKzUzNjU4IDQ4N2VmMGY5MDNlMDE1ODQxN2M3ODViOTRkMWMwMzk4ZGNhNjhjOGMgbGVnYWN5LXRydW5rCis1MzY1OSA4ZWIwM2IxMTgxNjQwZjE5ZTU0OTliMjJjMmQzZTI0ZmJlMjNlNGRmIHJlbGVhc2UyNS1tYWludAorNTM2NjAgMjkwMGM3NTY0MDU1ZDYyYzJkZjgwYTY3YjI3Zjc0ODVmNjI2NmVmNyBsZWdhY3ktdHJ1bmsKKzUzNjYxIDMwMjI3NzhlZTBjYzZkMzZmYjU0ODY3MTczODdkYjNkMGIxM2Y0MjUgcmVsZWFzZTI1LW1haW50Cis1MzY2MiBmZmFhYWUwMmM2NjI5Y2M1NTY4OGVkOGUzNmVlMDE1MTU5NDA3ZmRkIGxlZ2FjeS10cnVuaworNTM2NjMgYTJkN2Y0YzI5ZTViMDg5MTNkZmU3ZmM5OTQzOThiZmVkNThlZTQ5NCByZWxlYXNlMjUtbWFpbnQKKzUzNjY0IGM5OTRjMjQ1ZDlhYjVjZjk2NTcwNTQ4NDRjYzEwMzg3MDdkN2UxNWQgbGVnYWN5LXRydW5rCis1MzY2NSBkOGZiMGY2YWFhZDQzY2IyZjgyMDM4OGIyMDNjYjliMWRhY2VjMTdiIHJlbGVhc2UyNS1tYWludAorNTM2NjYgMWFkMDU2ODczN2Y2MTAxMzI0YTU0NzUyZmRhMTcyYjllZDc1NmRiYyBsZWdhY3ktdHJ1bmsKKzUzNjY3IDQ3YmIyODAzZWIxYmUzNjlkZjM4YjljZjY4MWM0MjdhZWUxMWE5MGMgcmVsZWFzZTI1LW1haW50Cis1MzY2OCAxZjcxYTMyZjk4ZDIzYmMwMzA0MWFkNmVhNzY2MGZhODc5MDE5MThlIGxlZ2FjeS10cnVuaworNTM2NjkgYTA0Yzc4MTU0NmVkMmE5N2IzZjViNmJiYzg1M2QwYzNiMTAwZDg0ZCByZWxlYXNlMjUtbWFpbnQKKzUzNjcwIDlmNWVhZWEzYzc5NTQwOWJjMzM1OGZhZmI0ZjllZGM2YTkxMTA5MWMgbGVnYWN5LXRydW5rCis1MzY3MSBlNzc2YzgzYTBjMTllMjczZTcyMDhmMWNmZDJhOTYxYjBhNDRmYjkwIGxlZ2FjeS10cnVuaworNTM2NzIgNzE1NmNmZGMzNjY3ZTNiZmQwNTJkNDE4YmRhMzZmOTJiNTk5MWM3YiByZWxlYXNlMjUtbWFpbnQKKzUzNjc5IGY3ZTkwNzFjM2ExZjAwZWQ3MTI0ZjFkZTBkZTBhMjhlMWRlNmM4ZjcgbGVnYWN5LXRydW5rCis1MzY4NSA3OTNlMDMyM2Q0ZDY1YmZjODliNDBkNzgxNjJjZDc3MWM1NzVhMThlIHAzeWsKKzUzNjg2IDRjZGYyMWEwZGJiY2U4OTFlNzVhOTIwZDRmYWY0YzBlY2JkZDgzMzIgcDN5aworNTM2ODggMWQ1NDNhMzIwMzQ2MTA3MzA1YzQ5MTNkODI3ZDE0OWYyMGE0MzQ4NyBwM3lrCis1MzY4OSBmNmYzOTFkMWQwNTBmZTM2ZDAwMjhmZWMyZGNlMTIyYmYzMGM0NGU5IGxlZ2FjeS10cnVuaworNTM2OTAgODNlZmZmNGQ1YWU5NDI1OGVjNjkyY2ViZmIxODJiZmNlZWY3MGM1YiByZWxlYXNlMjUtbWFpbnQKKzUzNjkxIDRkOTE1NjQ2NDY3MzZkZjcxMDc4MThhMjk5YWRjYWI1NmM0Mzk4M2QgbGVnYWN5LXRydW5rCis1MzY5MiBiNzA0MmJkZjkwYTliYWU0MTRmNDE0MTU4YTYxMzc4MWRlNjhkZmY1IHJlbGVhc2UyNS1tYWludAorNTM2OTMgOTg0MDQxZTc0NDZkMzFjNmEzYmEwNGI1YzU5YTAwOGM2ZWFhZDU3MyBsZWdhY3ktdHJ1bmsKKzUzNjk0IGQyZmU4OTNhNDg0MzcyNTcwNTk3MDNkMDYxOGU2OGI2ZmEzMzdmZWUgcmVsZWFzZTI1LW1haW50Cis1MzY5NyAyNjZjMWIwZjllMTZjNjg4NjY0NmFiMjkzN2UwNDQwYjY2ZTZjNDE2IGxlZ2FjeS10cnVuaworNTM2OTggYmUyOTU4NzgyNTZhYWJjZjNlZTA2M2RjMGVkYjZiZTUzZGEyOTU3NyByZWxlYXNlMjUtbWFpbnQKKzUzNzAxIDIyNzYwZDUzZDRkYTVkMjg3N2Y4MTRmYTE5ZGQ2MWJmNzAwNmFiYTYgcDN5aworNTM3MDIgMGNlMTRjNGNhMTMzN2QxMDY4M2E0NjlhNzdhYzQzYWM4OGJlNGJkYSBwM3lrCis1MzcwMyA2OTE3YzY3NmM5MmZiYjQ5Y2QxYjEyNTIyZDkzYTczYTM4ZmQ0ZTlhIHAzeWsKKzUzNzA0IGU5YTYyMzRiMjZhZmQxZTAyNTM5NjMyNTUyM2FjYmEzZDFhM2ZhZjEgcDN5aworNTM3MDUgZThiMjkxM2Y5Mjk3ZjQ3Zjk0MmMxNWQzYTkzZjFkYjAwNjQxMjI5YSBwM3lrCis1MzcwNiA4ZDlhMGVjNGQ5NzYwMDc3NjM5OGU5OTZkZGQyZDI4ZDBlMDkxNmJkIHAzeWsKKzUzNzA3IDlmZDk2NDA4OGUwNzA1ZjUyZTg1MDU3ZWEwMmVlYjE3NTM5NjdkODYgcDN5aworNTM3MDggODFlNDAzNGFkODgzNzYxMjAyNmZmMWVkZGY4MWVlMzU1ZjE5ZTQ2MiBwM3lrCis1MzcwOSBjMTVjZmYyZGQxOGY1Y2VkOTU5YjQ1ZjExN2QzYjE0MDkyMzEzMDhhIHAzeWsKKzUzNzEwIGI3Zjg5ZGI5YTFkMDVhYTg2NDVhNTc4YmI2OGE3YTQzY2FjZWU4NmMgcDN5aworNTM3MTEgNDNlMzY5Y2MwMmM1NWY0NzNmNmQ0YTc1NmY1ZmZjOGQ0MTg5MzcyZSBwM3lrCis1MzcxMiBjNGJlNDkzZGNiNmY5NGI1NmJiNmM1Y2RiZmQ3MTMyNmUxNzY1Nzg1IHAzeWsKKzUzNzEzIGZmZGM4ZDM5OGU0OTExYjdjNDFjOGVjY2M3NzJhN2Y5ZDVlNmJjY2UgcDN5aworNTM3MTQgNzIyNzdlMTk2N2IyYjZkZmNlMjI0M2NkN2VlOTEyZjRiZTExYjdkMyBwM3lrCis1MzcxNSAwNGY1Y2JjNzQ0MjQxZGJkNDY0ZTQ5M2VlYjBhODVlZGFhMGU5M2NhIHAzeWsKKzUzNzE2IDY3NTI1ZWZjOTljNTdmN2E5NzRiOGUzNDBmODI1MWE1OGRmYmYzMzMgcDN5aworNTM3MTcgYWU4ZWU5ZTVlODE1MDM4ZmNmNjA4YzA0OWQ5NDA1MTlmOTMwZmVmNCBwM3lrCis1MzcxOCA1NjIyYTEzYWQ4YWIxMWQ3MDEzZTExNmJhYTNlNmZmMjE1YjJhMWY1IHAzeWsKKzUzNzE5IGUyODAwZThkZDljNDg0YzRhOTg5NWZjYmE2OTU4YWQyZjdiYjhkNGIgcDN5aworNTM3MjEgNDM1ZWQ2NDFhMzMzZjgzMzk2MzNhZTcxMTExMjlmYmUxZjNmODJjYiBwM3lrCis1MzcyMyBlYWVkZjg0ZWFiY2RmNjgzOGRkZDg0OWFhNDE2YzdiODdiZjcyOTlmIHAzeWsKKzUzNzI0IDdkYTJhZTFhNGY3MDlkMGYxNGQzYTllNThhZDZmZDhiMmU3MWE5ZWEgcDN5aworNTM3MjcgZjIyOTY0NWQ2MDdkZGUzZTkwZjEzM2QzNDhlMDIwOWQ2Y2Q5OTgxOCBwM3lrCis1MzczMSAzNTNjMDA5ZjZjNTM4NTI1NDBmYWNiYTBkMzFjNjUzZWNhNzZkYzk4IGxlZ2FjeS10cnVuaworNTM3MzIgZjM0MGNiMDQ1YmY5MmQwZTc3NzIzODVhNzE5N2U5YjBhZjM3ZjBhOCBwM3lrCis1MzczNCA0YTAxZjZlMDIwMTY4ODY0MWRmNWFmOTY5NGQyOTgxMDQ2ZWRjNWMxIHAzeWsKKzUzNzM1IDVkYmNlMmVhMTMzYzNjMDFlNzZiMGM2ZDNhNDk0MTY5NWFiYmE5MWIgbGVnYWN5LXRydW5rCis1MzczNiA5MDUzNmJlMDkzZjdkYTVmOWRlNjYzOGIxZDY1MTFkYjAzYjc3Y2NiIHJlbGVhc2UyNC1tYWludAorNTM3MzcgZmNmNjkwMmYyMTBlZDNiMDZiOTViYzUyMDQ1MWU3NDliZWJjZmZkOCByZWxlYXNlMjUtbWFpbnQKKzUzNzM4IGNiODEyM2FiMmEwNjVkOGEwOTBkMTQyM2NmYWExMjEzY2NjZTNlNDIgcDN5aworNTM3MzkgNWRlNzU0N2E1YTIzNzExMTEzODY2MTJhOWE5YTJmYTYyM2MwNjRlZCBwM3lrCis1Mzc0MCAzZDE4ZDhmMzY2YjExODRkNjE5YmE3NDk1MGEzZDcxNThkNjRkMjU5IHAzeWsKKzUzNzQxIDI5ZDY1NzQxZjZjODk2ZjJlMWMxOTNlMDIwY2Y3ZGRiNDEyNzI5YjEgbGVnYWN5LXRydW5rCis1Mzc0MiBhODQ0NjBlNTMxNjA5M2QwMDMwZmViOGM3NjBhYzFjM2E5ODg1NzI0IHAzeWsKKzUzNzQzIDVlZjcwYzQ5ZDg1YTI0MzM1YjQzYWY0M2MzZjA5YjZkZjYzMTkyYTMgcDN5aworNTM3NDYgZTY2ODVjODQwZWUzYzExYTkxZTBhMzM3MjFhNTdiMTdjZjUxZjgzNyBwM3lrCis1Mzc0NyA0MjlhNGJjMzFjOGUzNjcwZTcwMDBmYTU0MDljN2UyYjgwZjU0NzUwIHAzeWsKKzUzNzQ4IGRjYTliYzg4MzA0MDk2NThmYjc3MmE2ZDBiMzA1M2M2ZGQ0MzQ1ZDUgcDN5aworNTM3NDkgNTAzMzBkMThkMWNkNzE0MWJhZmMyYzhhOTk4MGE4YjhjYTg4M2Q3NiBwM3lrCis1Mzc1MSAxODBkNGU4OTk2ODM5MDY5ZmNhODgxOWNmOWYzY2NjNWVhMmVhM2UxIGxlZ2FjeS10cnVuaworNTM3NTIgZWMxZWJkZjU0ZWFmZDlhYmIxNDI0MThkYzY1Y2JhNGE2MmRkMzAwYSBsZWdhY3ktdHJ1bmsKKzUzNzUzIGJiZTZkZTNhOTc0NTAwNmY0MTI1YWFjMzI3MmNlYmM0MzNmM2UzZWMgcmVsZWFzZTI1LW1haW50Cis1Mzc1NCA3MjRlMGI2M2E3OWI1ZDRiMGNiMTY3YWI4Zjk2MGVjNTFlNmIzOTI4IGxlZ2FjeS10cnVuaworNTM3NTUgN2FkMjllOTllZWM4NTcyNjIwZmNmMDk4NzAzYWE1NWQ2MDRiOTc2NSByZWxlYXNlMjUtbWFpbnQKKzUzNzU3IDMyZDQ2YWJhYThhYmE0YzVlN2E5Y2E4Mjk1MjUyM2NkY2Q4MWQ5NjggbGVnYWN5LXRydW5rCis1Mzc1OSA5ZDI1M2NkMzhiNWI2NWEzZDZjNjRjNDhmOGNhZjM0NWU1NWU0MjZiIHAzeWsKKzUzNzYwIDI4YzRkOWI3NzQwZWQwMTAzODU3M2VmYWM3MDFmZTcwMTc4Y2IwNDUgYmNhbm5vbi1zYW5kYm94aW5nCis1Mzc2MSAzNWMwZDM4YWNkY2UwODAyZjNiYmQwNDdkNmMwMDNlY2MwMGMxNDg5IGJjYW5ub24tb2JqY2FwCis1Mzc2MiBkNGE2YTY3YTAwYTBiYTM1YmMyMWI5YWMzMjAzZTliMDg1ODBiMGI0IHBlcDMwMl9waGFzZTIKKzUzNzYzIDgxZDY4ZGQ4NGFhMDVjZjhkNThkZjU1YWYxNzQ2ZDgxYTk5OWZiMTQgbGVnYWN5LXRydW5rCis1Mzc2NCAxZGJhNjFjMDc3MDM0ZTE2ODdhMWZmNjE1YWMyZGI3YmFmMDg3MmVhIHJlbGVhc2UyNS1tYWludAorNTM3NjUgZGFmMDYzNTI3Yjk3MjE0Yzk1ZTI3MzI3ZGRkOTkyZWMwN2U0ZDAyZSBsZWdhY3ktdHJ1bmsKKzUzNzY2IGQ5NDk5MzNjZDZiNDZjNzJjZjdjNDAyOTE0MTJkMmM2ZWI3YWY2MTkgbGVnYWN5LXRydW5rCis1Mzc2NyBiZDI0ZDM4MjZjYzgzZGYwYzliNThjZGRmMWM3ZTJjNGM3MzI2MmY0IGxlZ2FjeS10cnVuaworNTM3NjggMTc3YTdiZWU2NGU5ZWIyZDM3NzJjZWZmODFkMTljMmM5YTlhZWRhNCByZWxlYXNlMjUtbWFpbnQKKzUzNzY5IDNiYmVjOTFjNWI4ZmU2NmVjMzRmMGY4ZjFhYjA4ODRhMTRhODkzMGUgbGVnYWN5LXRydW5rCis1Mzc3MCA4ODVhNzdmZDVjMDFjN2RiZjgzYTI5ZDVkY2JlOTlmNTk2YTA5MDcxIHJlbGVhc2UyNS1tYWludAorNTM3NzEgMzk4M2VlMGY2Zjk2NGRiYjIyOGY1ZTFiMTUyZGJhZGU5OGFjNTU5ZCBsZWdhY3ktdHJ1bmsKKzUzNzcyIGQ0NzY4YmZmNjQzZWE4MTNmNjZlYjZkNzk3MjE1ZDJiNTJhNWEyZTggbGVnYWN5LXRydW5rCis1Mzc3MyBhYmZkOTUxODVhYjk5MTkzNjk0MWRhZGM0MGRhZGY1YWQyMWY2YmI0IHAzeWsKKzUzNzc0IDkwZTIyZmVhODM2MzQ0NTY3ZGM1NWRlOGE5YThhMGRhYjdjZTgzYzkgbGVnYWN5LXRydW5rCis1Mzc3NSBkYzU2Nzg5YjI5ZTlhNjNiNGY1NzA0ZjBkODE0NTEwMzk3MWYxODljIGxlZ2FjeS10cnVuaworNTM3NzYgYTY1NDZjMjczNjlhNmM0ZjEzMGU2ZGYxMGVjNjdhMTViYmZkZjIzMyBsZWdhY3ktdHJ1bmsKKzUzNzc3IDA5NzJjMjE3NmFmOWI5YTkwZjhmY2IwZmM0ZWE1ZGI0MWIyYWRhYzUgcmVsZWFzZTI1LW1haW50Cis1Mzc3OCBhNjIxODRiMDNmMGYxNTAyZDBhYjhlN2RlZjkyYzliNjY2YmZhNjgyIGxlZ2FjeS10cnVuaworNTM3NzkgNzM0ODFlMDc3NzU4YTk0MTkzZmIwMTFmZTk2NmFjNTk3OGVlZGM5MSBwM3lrCis1Mzc4MCA1MDJkZTA3OWFiM2EyMDUyMDMzNTFhMGZmNTAyYjhkODQwOTY5NjAyIHAzeWsKKzUzNzgxIDFkNTNlYTBmYzIzZjE1ZjVkMmM2MDU3NmU5NmMzMDViYzBmYTcyNjcgcDN5aworNTM3ODIgNDhiNmQwMTUzNDBhZTY5Nzg4YjU5NjkzNGYwNDNmM2YxZjU3MjIyNyBsZWdhY3ktdHJ1bmsKKzUzNzgzIDdlNGI2MzVmMWQzMWRiYTBkN2VhZTFlMTNhYjNlODBjYzRmYTNhMjkgbGVnYWN5LXRydW5rCis1Mzc4NCA5OWIwZTA0YjJlYjFjYTAxMWY4ZmE4M2IzMmVjNDc4MTNkNWMzNmI1IHJlbGVhc2UyNS1tYWludAorNTM3ODUgMmEyNTMyODgzZDgwZmIzNzJkYjJlM2VlYThlMjdjZWU5NmQ3NzdkNiBsZWdhY3ktdHJ1bmsKKzUzNzg2IDkxNGRkNTA1OWYzOGYzMjI1NTdhODI0NDNjZTI4ZjYxZjVjZjAyYTMgcmVsZWFzZTI1LW1haW50Cis1Mzc4NyA0NzQ5NzdjZDRkOWM4NDQxNDI4YTkxNDNkMzdlYWFhMzcxNjMwNzViIGxlZ2FjeS10cnVuaworNTM3ODggMjlmYjhkYmQxMGI4NWY0YjI5Zjc5ODlkMDQ1ZDk2MzI3ZDNiNzlhZiByZWxlYXNlMjUtbWFpbnQKKzUzODAwIGJjMmJkMGYwMWQ5NWI1NDM0OTZmZmExNmM1YmJmNmE0MjU0YTU4ZTMgbGVnYWN5LXRydW5rCis1MzgwMSBiNGIzMjc4NDBmYjE1MTBlOTdjNTQwOTQwNjE0NjYxNGY1NzUzYmYwIGxlZ2FjeS10cnVuaworNTM4MDkgZjRmNjk1YTc1NjY0YWYzYmJmMmY3ODVkMDUzM2UzZDZjZGNlNWQ0YiBsZWdhY3ktdHJ1bmsKKzUzODExIGQ3OTVhNTVlOWJlNDFkNmQ5ZDUyMGQyNzNiZjY1NmRmYzBkYjI2NjkgcmVsZWFzZTI1LW1haW50Cis1MzgxMiA3MzZmM2Q5MGU0ZTI4NDg2ZjcwNzVjYzAzODM3NDA2OThkMmFkMjUzIHJlbGVhc2UyNC1tYWludAorNTM4MTYgOWUzNTY0NWFmNDBmNjgyZWNjMmY5MWY2OWU0MGNkNzFkZDU4NDQwNyByZWxlYXNlMjUtbWFpbnQKKzUzODE3IDM1YWUyODI1N2EyODA1YjRhNzFlOWViMTNiMTc4MGYzZWQxZjA4ZTAgcmVsZWFzZTI1LW1haW50Cis1MzgxOCBiMGY4ZTliMGNjMTk5MjhjY2Y5NzNhNTUyOGZmYTQzYjc3NzdmZmFjIGxlZ2FjeS10cnVuaworNTM4MTkgODFiNWRmNTc5OGMyN2E1YTRiMGM5OGUxY2VmMThlY2ZmZTVlYjg5OSByZWxlYXNlMjUtbWFpbnQKKzUzODIwIDM2ZDdiM2I2ZWU1OTZmZTgxODgxODBlODkyZTZmZWRmZjA2ZmQ0MDUgbGVnYWN5LXRydW5rCis1MzgyMSBkMzg2YjQ2MDk5M2I3M2I4NmZmZGFjYzA4MmM1MjUzZWVjNDUwNTJiIGxlZ2FjeS10cnVuaworNTM4MjIgZGYwMjA0Y2E5NzM5ZjE1NzVlZjAzYTljYmQzZDIzMGE5ZTU2Yzk2YSBsZWdhY3ktdHJ1bmsKKzUzODIzIDBjYzQ1MGI4OTgzODkxNmQxNTIzYmI0N2NlMGU0YmY4NTU2MWVmMjAgbGVnYWN5LXRydW5rCis1MzgyNCBjOWU0MTNiMWQ1NDA2YTBhOGJmN2I5NDQ2YzRmN2JkYmNiNGUzNTZhIGxlZ2FjeS10cnVuaworNTM4MjUgNTc3YmYyMWIyYzg2ZGNlMDViMDAzMTQ0Njk5YWExOGMyNzAxYjJjYyBsZWdhY3ktdHJ1bmsKKzUzODI2IDUzZmQxNDRhM2YxYWIzY2I5ZjI1ODMwMmFiNWY5OGE2YmU4NTQ2N2YgbGVnYWN5LXRydW5rCis1MzgyNyA2NzJiOTA3NTc2NDcxM2RhOGQ1NjBlNzk4ZWJhMGFiMDM3NTU5ZDhiIGxlZ2FjeS10cnVuaworNTM4MjggYzM0YmQ2NTg5ZTFlZWJjZDM5NzUzMTczNjljYzcyZDZkOWM4NzRjYiByZWxlYXNlMjUtbWFpbnQKKzUzODI5IGQ1YTE1Zjg1M2RiNzRkZTc2Y2U5MjZiNWI1MzU1ZjExYjVlZTY4YTIgbGVnYWN5LXRydW5rCis1MzgzMCAwMWQ1NGI4OGJmNTg2ZTNiOGQwYjRhNjM0OWUyMmQ2NzQ2MTUwYjliIHJlbGVhc2UyNS1tYWludAorNTM4MzcgNmZhMGQ2ODJlMWU1NTBhYTAxYjNkMzNjMWJkNzIxNmQyNTE5NjkxZiBsZWdhY3ktdHJ1bmsKKzUzODM4IDgxMjg2MTllOTg0ZGU5OGNkNjcxNDA1NGE4ZDJhNjQ3NmQ5OTU3ZTYgbGVnYWN5LXRydW5rCis1Mzg0MSA0Mzc5NzM4NDExNWU1OTg4ODFlNjExNmEwM2RiMDc3NDM0ZDc5YzFmIHAzeWsKKzUzODQzIDU1ZGViMWRhNGNiOGRlMTYzNTMxMmU0ZmRkMWZjOTUxMWVkNzc4MzggcDN5aworNTM4NDQgZTY4YjQ4YzM5ZDhhY2I1M2YzZjMxNWY4NzlmMThiYTNlMzk4MzFjMiBwM3lrCis1Mzg0NSA2MDg4M2U2MTQyOThmMzFhNmNlNjlkZjQ0NGY4OGVjNjc2MjRhNDUxIHAzeWsKKzUzODUyIDNmYmNkNmUyYmNiNzdkZGQ5Y2QwODI0ODI0YWMzYWRkOTkzYjMxYTggcDN5aworNTM4NTMgMzQyN2E5NzM0NWZjZmU3NDhjZDRjODkxYTYzOTRiYmJlOGRmMTJiMiBwM3lrCis1Mzg1NCBjMTY0YjBiNzU5NzE2MGVmNTIyNDg4MjIxM2NiZjQ0Njk3ZTc1NzVkIHAzeWsKKzUzODU1IDEyNDg5YTVkZmI0YWIwMmVmNjM3M2ZiM2RhZThhMTBkYjUxNWVjZWMgcDN5aworNTM4NTYgOTA5NzY1ZWIzODFiZGY1Yjc4NGJjYTg5Y2M1NzY5YTQwNjc5NWY5MCBwM3lrCis1Mzg1NyAyOTk4NzI0NDkwNWRmZmQ0NGJhM2U1YTA3ZjMxMmZjODk1YWNmOGQ3IHAzeWsKKzUzODU4IGM1MGUyNjMzMDFkYWJiNTFmMGE3NmNmZTE0ZDY5NDdkOGIyNWQ1MTcgcDN5aworNTM4NTkgMjBlMDhhODc5MTVhNTVhYTg1MmJmNjI2MzU2MTY1MGUwMzdkOGY0OCBwM3lrCis1Mzg2MSBmM2E1OWFjY2E1MWZmZTg3MjQwODdjNjhkNGQxNTAwODMwMzg2YWYyIGxlZ2FjeS10cnVuaworNTM4NjQgYzkzZjkyYTdkOTIwMmUyYTUyMGI4MTQ0ZjAxMjllMzUzMjUyOGYyYiBsZWdhY3ktdHJ1bmsKKzUzODY2IDMyYzQ4OTdiNWQ0NmMwMGVlZWNlZjFiYWVjN2RjMjFkMGQxYmI1YzEgcDN5aworNTM4NjcgM2JhYzQ5MjU4YTRhNTgwZjhkOTk1MDU5NGY1OGNmN2YxOTVlZWU4OSBwM3lrLW5vc2xpY2UKKzUzODcyIDBlYTI0ZjRmMjQ2N2FmYzQ5M2QxMzRmNTU4YWE0NzBjYmU4MDQ3ZTggcDN5aworNTM4NzMgYmQxNDE5ZTk0NzczZjA4YTBiZWQ2MTE0MjQwZmEzZTIzOWIxOWM0NyBwM3lrCis1Mzg3NCBiMDU3OTBkMDY2YjQ3NDRlNTJkM2M3MmQ5MjliZGYxODdjYzE2MGY0IHAzeWsKKzUzODc1IDU4M2ZlNzUzZTcyMTI5NzkxMDFiNGVlMzJlODVlMGQzZDE1MzExMDEgcDN5aworNTM4OTIgYjU4YTQzNzRhYzIxZTQ1YjFhMDYyZjBlN2ZmYzAwZDAzM2Q4NWI5OSBwM3lrCis1Mzg5NyA0MmU3OWM1OTIxMmQyMmQyNTJhMDRmODU1YjdmNzliMzJiMTQwMzY5IHAzeWsKKzUzODk4IDkzMDQ3ZWU0ODZkYTRhMDlmNGRkYTJkM2M2YTNkM2Q1MjE1MmE0NWEgcDN5aworNTM4OTkgMmU0ZGFjMDU5Y2M1NGIzYTQwZTIzN2NkY2E1OThlMzg3YTU3MzQzMyBsZWdhY3ktdHJ1bmsKKzUzOTAwIDY1Y2QxZjI4MGU2M2MwYjY2ZTBlNjg3YTAwNTc2OGY5YWFmOGViYmQgbGVnYWN5LXRydW5rCis1MzkwMSA4ODJiOWMxNDg5NWMwY2NlNWU4ZTM4MDFjOWYzYzlmZWFhNTAzNGMxIGxlZ2FjeS10cnVuaworNTM5MDIgMTkxYzQ4Y2E4YmY5YzEyNjgxOTU0MjhiODY3OGViODYyZjM1M2M5MSBsZWdhY3ktdHJ1bmsKKzUzOTA2IGU4NTQyNzE0OTVkZTEwNDRjYWY2ZGFhYTA5NTlmMjU3MzEzZDdhYjcgcDN5aworNTM5MDcgODMwODhhZDgzYTZiMGYyZGE4MzJhY2JhZDVkNjFmYTJhODc0NDMwOSByZWxlYXNlMjUtbWFpbnQKKzUzOTEwIDBjNDEwYzc4NTMxY2YzMDIzM2FhODE3NTk3NGNmZTE2ZWZkNTkzMzcgbGVnYWN5LXRydW5rCis1MzkxMSBkMDFiZDM3YmY1Y2U1MjYxODBkMGFhMzFjYTM5MmY3MzY5NzhiNDdkIGxlZ2FjeS10cnVuaworNTM5MTIgZjJmMGI0MWYyNzBkYWU0YzY5OGYyY2FmYThlNDUzMGYxZjM5ODk5ZSBwM3lrCis1MzkxMyBlYWFlZTc4NWViODZkNzhmMjQyY2Y0M2NlMTgwNGZhNmQ1Njg3YjA3IHAzeWsKKzUzOTE0IDk3Yzc3YjFlMzRiZjI0MzEyMjU0M2UyZTQxYWY4NWMwY2U3MjA3YTYgcDN5aworNTM5MTUgYThjM2FhYWIwMGVhMjMyNGE2ZjAxODA2Nzg2ZDcxZTc4ZTAyNjE2YiBwM3lrCis1MzkxNiAxOWFmYjAzMDJhMDZlYjFlNmFiYzc1NWYyNGY1M2RlMjJhN2M3NGRlIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5MTkgZDg0MmUzNWY1YTMxMGU1NDZlZTU2YTA1YmQxMDU2MWU1ZGJjYjcwZCBsZWdhY3ktdHJ1bmsKKzUzOTIwIDA3MGI5YTBiNGMwNDA0MDdmMzdiZTI5ZTRjMzk5M2ZhNWIzNmFhYTkgcmVsZWFzZTI1LW1haW50Cis1MzkyMSAxM2YzOTMxYjlmYzQ2OTI5NDJlM2VjZTYyZGQwZmI5YjY5MDY3MDk3IHJlbGVhc2UyNC1tYWludAorNTM5MjIgZjU3OTBmOTZhY2YzYzM5ZGRjYzdkMWZjMTdhZWVhMmNlNzg5NjFmOCBwM3lrCis1MzkyNiA1YmQzYTIyYmE0OTZiMWM0MDkyYzJkNDJhNDA1MGRkZjRiMTRiNTQ3IHAzeWsKKzUzOTI4IDFiOTcyYjdlMzUyYWRmMzEwNTI5MTUxMjcwZWQxOWE5ODkxYzk1ZDUgcDN5aworNTM5MjkgNDBiMTdhZmM0YWE3YmY3MWI1MDRjOTQ4NzY2ZmZlNDBiODI4OTc2OCBwM3lrCis1MzkzMCAwZDJkYzM2MTFlM2IzODI2ZmZkOTMxNTY1NDA5ZTFjMThiZGViMDBiIHAzeWsKKzUzOTMxIDYxMGM3YWNjOTk4MjhlNjJlMWZkMzdmYjBmNjdiODZlNDUxMmE5M2YgcDN5aworNTM5MzIgYmU0MWRhNjZjZTM3ZjY0MWY1YjY1NmRmYTllOWY1MmI2OWI1ZjVjMSBwM3lrCis1MzkzMyAyNWE4NDkwMGUyMDU1YzE0Yzc2NjBlNGNlNjM1YjU2NDg3NDVmZjExIHAzeWsKKzUzOTM0IDAzODgzYWNiNjUwYjgwOGM2OWRmNDYxOTI3ZmRhY2QzNTBkMTdkY2UgcDN5aworNTM5MzUgNjIxNDQzZmMwMWJiYTE1NTlkMDhiY2JiYjRmYzU2MmMyNjNiYjc1OSBsZWdhY3ktdHJ1bmsKKzUzOTM2IDlkMWIwYzI5NWViYmMwZmMxNzhjNjJjNDFlOWY2MWIxMzBkMzVjNDggcmVsZWFzZTI1LW1haW50Cis1MzkzNyA5M2Y1ODI4MDM3MzMwNGRlMjE5YzhhMDVjNjZmZTM5MTBiNGI5ODg2IHAzeWsKKzUzOTM4IDdiYzdmNzQwZjY5ZmRjOWY5MmZkNTQ4ODIwN2EwZjNiMzAzZmExNDkgcDN5aworNTM5MzkgYzM0NTFhNzdiZmQxNjRkZjVkZmNkODM3MGQ1MDk4N2Q4OTkzZmQwMiBwM3lrCis1Mzk0MiA5MGM4MDdlZTg3NjdiMWJiNjUwODFiNmJhY2JiZDI2NDkxN2Q1NmFiIHAzeWsKKzUzOTQzIGVjZThhMzlmYTI4MmVkYzYyZTE0ZmI3NjljYjEzODNiNmZkNzQ4ZmQgbGVnYWN5LXRydW5rCis1Mzk0NSA1NWQ3ZThmYTVlYThkNGZhOGU3MTcwNzMwZGY1NTZhYmQ3ZDFkN2EyIHAzeWsKKzUzOTQ2IGEyNjI5YmUxYjFkMDE1OTkyNzE5MmEzY2FkZTUxNWRkZTUyMTg2OWEgcDN5aworNTM5NDcgODliYTkzYzcwMWM4ODQ3Mzk2ZDgyZjk2NWM2NzVjYWQ1YWI1ZWQ5OSBsZWdhY3ktdHJ1bmsKKzUzOTQ5IDQ1YWZmYWU0NjVlNDExOTI5MTgxNDJmZWZmNzQ2ZjIwNGY1MWZmZTMgbGVnYWN5LXRydW5rCis1Mzk1MSAwMzc2ZjEzYTFhZjkxMzA3MDQyZGM0YTViMmY1ODdhM2VkOWJiMmQzIGxlZ2FjeS10cnVuaworNTM5NTIgNmFhMWJlNWRkMDA5OGIzNTcxZjM1YmE3MjM5OTcyODI0ZTI3ZDFkZiBwM3lrCis1Mzk1MyAyYzAzZDcwNjgzNWU0NjBiYmRjODg4MTFjNTQwZjkxMDc4MzRiMDAyIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NTQgMDQ3ZWUyM2MwZjg3OGU5MzNlYzI4NDgyMWFiZmZkOTczYTRkOTQxMyBsZWdhY3ktdHJ1bmsKKzUzOTU1IGM4YzA2NzMwMjY1OTliY2Q2NDBlZmFhOTUzNmQ0ZDI5MzZkNjk5ZTAgbGVnYWN5LXRydW5rCis1Mzk1NiAxODUzY2YwNmUzNmJhMzEyYWJkMTIzZThjMmQxNjk4OThiNDc3ZDI4IHAzeWsKKzUzOTU3IDJjYTE0ZDZhMzY5YjcyNWIxM2Q0OWIwYWUzNzdiMzNiMjUzNDI2ZGIgcDN5aworNTM5NTggODY0NzE5MGRiOTZjZDFhYThiNDNiMjY0ZjMxYjU4YmQ4YmMwNDJlMyB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTU5IGZjMjNmYzg2MzliYWYwMGRlNTFiNDQ2NTE3ZmVlOTZhMjQxZDcxMDIgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk2MCA0YjlkMGRhYzc5Y2NjMDliYzFmN2I0NjIxMmM3MDJmMTQwMDQzNWMzIHAzeWsKKzUzOTYxIGM3OWU2MjM0ZmIxOWVmNmEzNGNlYTVhMjU5Y2QwZGQ2YmY2YjM0YTAgcDN5aworNTM5NjIgYmI3M2QzYTA0NTdlOTc3ZDg0ODk2MGJkZWVjMmU3OTU4Y2VlNjYyNyBwM3lrCis1Mzk2MyA3ZjcwNzRkNGY4MmNmNzBjYTFkNzA5OGQzY2QyMzg2Nzk0Zjk2ZjU0IHAzeWsKKzUzOTY0IGQ5NzZjOWE2MzExMTRhOGZhYjFiMGY1MTEzM2JiNGNhMTIwODJkNDkgcDN5aworNTM5NjUgYjA4MjZlOGU0NWM3OGVmNTQ4OGJmOGE0OGI5Y2VjODc3MzYxOWJlOCBwM3lrCis1Mzk2NiAzMDkzZWE5YjQwMjQ5NzI4MTlkYzA3NzQyZWMwMDNkYmMwNjhhYmU1IHAzeWsKKzUzOTY3IGU3NTlmZDhkOTVhZTdiY2NjNDYyNTllMWUwNGQxYTVhZmQ4NDM2NGIgcDN5aworNTM5NjggMWU0ZTI5MjQ4NmI2ODg4OTg2MmE4MDQ3YzgwMTA5NjQwMTBiZGIzOCB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTY5IGYzZjBjNjk3YWE1YjE2MzJlZDJlMGM0YWYzZGQ5MGRlMjNlMzM4YzkgbGVnYWN5LXRydW5rCis1Mzk3MCBlZTM2MDJjN2FlMDQxNDc0YThjNzVkYWQwNGRjYmQzZGZkYTA1MDllIGxlZ2FjeS10cnVuaworNTM5NzEgNDMwODExYmRiZmVmNjZiYzlhODVlYzk0Y2NiN2FiNjk5ODlhYWNkZSByZWxlYXNlMjUtbWFpbnQKKzUzOTcyIDk0YzRlMzZjMzEyNDJiODllMDI2MDE1MGIxMmFlYjJjMWZkMTIxMjUgcDN5aworNTM5NzMgZGE3M2I1YTBmZDkwYWJhMzJjNGNiMWQwOTM0ZGQwNGEzZDcyOGQ4OSBwM3lrCis1Mzk3NCAyY2UyMjlhN2JhM2Y2OWVjNTQ3ZTc5ZGM0MGE1YjJkNTdmNThmNDA2IHJlbGVhc2UyNS1tYWludAorNTM5NzUgYzgzYWNmYjFhNjMyZjc5NDZmMzQ2ZTcyMmY3MGRlNzkxZjNjMjM0NiBsZWdhY3ktdHJ1bmsKKzUzOTc2IGZlZGIwM2VhYzZhZDZkMTEwNDUwNDhkMjg5NmIxZTdlYjBhZjc0MmUgbGVnYWN5LXRydW5rCis1Mzk3NyBhYTE5NWExYWE5NTUyOGI4ODUzMjJkZmZhYmI0YmUzMDQxOGEzNzExIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NzggZTVlOTgzN2RhNzBiNzg2MDBhODBhNTJlNzcyNmZjMjM5MjRlNzFmZiBwM3lrCis1Mzk3OSAwZWE1MjU1OGJkZmVjMjlhZjljZDljOThlMGMwNWRiMmJkMjVhMDIyIHAzeWsKKzUzOTgxIDU0MWE4YjFiNWRhNzVkOWFmNTQ5NDM0NzA0YjFhYjU2M2I3MjA3NzIgbGVnYWN5LXRydW5rCis1Mzk4MiBlNjZkZGI2ZTM0ZTg0NDY3NzY1YTc2ZGU3Y2NlM2NlYjMzNDlkNjRjIHAzeWsKKzUzOTgzIDQxNjI5MmM4MjQ5Y2U4YzkwODBjNTQxMTFmYTc4ODQ3MDVmYWVjODUgcDN5aworNTM5ODQgYzI0ZTk1ZDExNzUyMDFiNTc0NzA0MTVhYmMzYjBlMmEwY2I0N2FhZCBwM3lrCis1Mzk4NSBkNTU0NmYwOWYyMGU3NjM4Yjc1ODI0OGU1ZDU0ZjFiODc2ZTJhYWQyIHAzeWsKKzUzOTg2IDMwZTVjYjNhNTVhYzMxNDdkOWU5MmVhMzg4ZjRmNzk0NTYxNmU3NjcgcDN5aworNTM5ODcgMTQwZjM1MjQwMjdmMGUwYjVhNzBjZTJmZjE1OTRmMzFiYTI0NmM4ZCBwM3lrCis1Mzk4OSBhOWU2YzczZTBmYTViMjEzMmMxNTMxYzMxYWFlZjRjZmZlNGQ1MjZiIHAzeWsKKzUzOTkwIDJkOWQxMDcwMmVjNDRlMmZlNGNmODE0OWM2YzZmMjVhNDM0ZWRjMjIgcDN5aworNTM5OTEgNmMwZDBiZTgyYjQ3YmFmMjlhNTgxMTg0MWM1OGM4ODI3MjlhYmRlZiBwM3lrCis1Mzk5MiAxMTc3N2M4ODdmN2NlMDBlNGJkN2NlYWVjNjEzNjlmZjhiOTdlNDU1IHAzeWsKKzUzOTkzIGEyYzllYjlhYjYwOTY3NGI0NTJmM2RiYjQ5OTkxYjI2NzVjMzYxNmQgbGVnYWN5LXRydW5rCis1Mzk5NCAwYjQ3NDQ2Y2M0MDg0YTAzODBkYjk2NzcxOGU0N2Y3MWRlNDM1OGUzIGxlZ2FjeS10cnVuaworNTM5OTUgNDZmNzcxZTI2N2JjODE1ODI4YjZlZDA2ZTAyM2NkNWMzZDRkY2FhMiBwM3lrCis1Mzk5NiAzY2FiYmZhNDM5ODQwOTNiMTNkN2NjNGIzZGY5NDg5OGM1MTFlNzVhIGxlZ2FjeS10cnVuaworNTM5OTcgZDYyODA1YTk5M2M1MDg4MTk4MmZmNTFlZDAxNmU0MWI2OWFjNTZkYyBsZWdhY3ktdHJ1bmsKKzUzOTk4IDVlYWQzMjEzMGY2NDZlOGIyZTZhZmNlMGQ5N2IzMjM1ZDc2MTAxYWUgbGVnYWN5LXRydW5rCis1Mzk5OSA0YTRmNmYwMjZmMWM1OGY0OTlhYWNhODI2NmVjZjExNzJiMmNlMTc1IHAzeWsKKzU0MDAwIDYxZmVlMTg1M2NhODhmMzgyMGJmN2EzYzYzZmJmNDVhNzI1NjFkMmIgcDN5aworNTQwMDEgODBlODYxZTdmYWJlODg4NTg2ZWNkYTI3ZjY4YzQ5OWNjNGY2Y2UzOCBwM3lrCis1NDAwMiBjM2IyOGJhOTE4ZjgzZWJmZjJlNGNlODExNjU0ZGE3ZDRiM2YyMzE3IHAzeWsKKzU0MDAzIDFmNzkwZGE3OTg0MDlkOTFjZTg5Y2JkMGIwZDdlZmVmNDc2OWE4YjQgcDN5aworNTQwMDQgNDMxYjMyMzg1OTNlYWNiYWM2NWE1OWYxNGNjYjRkOTllYjgxNTc2ZiBwM3lrCis1NDAwOCA3NjI5NjRmOTk4NzEwNDdiZjAyMzkxOTRjYTcyNTRkMWQzMmQ0NmE1IHAzeWsKKzU0MDA5IGMwMzQ0NzBlM2MwYWViOTE2NDc0MTM3MmE1NzBkOWViMTRjMDc3NDIgcDN5aworNTQwMTAgOGJlYjc1NDAyZTc0YmY1NTQ3ZDRmZjQ5N2I3YjhkYTAwY2Y4ZDgzOSBwM3lrCis1NDAxMSA5MzAzMWU3MTY1YWIwMTI5ZmJiZDhhMTA5ZjZiZWFiMDM0ZThmNGQ1IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDEyIGJhOTJlOWFkZTM2ZjExNzhhZDQ1NjQ3NTY4MzM4NzU1YjZiMzEzYzMgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTMgNmQ5MWU3NGZjZjU1ZTUyMDg2ZDhhZTNmZjRiMmMxODI1MTA5MmJiMSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxNSAzNGE3YzI5ZTY1ZDE2MmFmMWE3MDg1MDEwOGViNzRjYzA2NWRiOTk4IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE2IGUxMDNiOTM3ZDc0NzUxMGU0ZWUzMTIwZWFmYTNjZDRkZTg5NjIzMTMgbGVnYWN5LXRydW5rCis1NDAxNyBhMWFlZTgxMGI3Mzk2ODYwNjBkZmYwZGVlMjcxYjJmOTM0YTBjNGYwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE4IDk1MzNlYjBlODdjZmZjYmY1MmYyY2M2ZjEwYzJiZmViZDM0YTg3NGQgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTkgZjI1MjQ2ODA1ODUwN2VjN2Q5NDRkOTg0MzY4MTgzMDViYmVkMDg5NiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyMCBiZDM1OTBiOGM3OGVlNTkxZTA0MWVjNWViMzYzY2RjZTI3MjMwOTcwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDIyIDlkZDg2ZWFkNTFjMzc3NmNkNmE0YWExYmM2NGIxN2JhZjAxYmQ2NzkgbGVnYWN5LXRydW5rCis1NDAyMyAxNjU0NjFhZDM4ZGI4ZTA1ZTE4MTUyYmFmYjkwNWU5MGUwN2MxNWIwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI0IDgzYjhjNzBlZmQxZTVmMWJlYTU4MzQyNzI2YWM1YzhkYjcyNGY0YmQgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjUgOWViNjBhMDcyODVhNDdlZDM0NzI2Yjg3YTNiYjZlMWU3ZjM3NDEwMiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyNiBhOGM3OWIxZTY5NmFlN2VkMzJiMTg1NDViM2UzMjUwMDdiMWJlMzRmIGxlZ2FjeS10cnVuaworNTQwMjcgMTY1YmJlZDMzNzlkNmQzZjQ1YmUxZWRmMmFlMTJmNTg0NzI4NjEwZiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyOCAyYzZjZDk4ZGIwYjhmM2UzZTc3YzM2YzA5ZDdmMjI2OWI2MzdkNzhhIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI5IGIzNWNmZDhiNDkxMDYxNGQyYmRkNzAwMTNlZTA4MmJjOWU1MTUyZmIgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzAgYWMwZWJhZTQ1ODcyMjJkY2EyMWRkMTQ3N2VhZjRjOTQ2YTY1NzkzYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzMSA0YzU2ZmNlZmIyODNiN2Y2YmE0NWI0ZTVhZmUzOTNjYjNiMDM5YWJiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDMzIDQwODdjMGVjNzMzYmJhNTRlODAxMzcyN2VkNjRmMTczYjlhNjE3NWYgbGVnYWN5LXRydW5rCis1NDAzNCAwMWRkZWNiNzc4MTU0MjYzODM0ZTliMDBiMWNkYTJhZDY0MDkwZTVlIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM1IGU0NzZhNWE3OGIyOTM3ZTc2NzIxMjJmMDFhYjY2NDU1ZGIwYTkzY2YgcDN5aworNTQwMzYgNTZkNTFmNTk0ODY1M2RhMmExZTk5NzllZmM0YjExZTJmNmRhZDFmOCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzNyA3ZDdmMzIyZjJjYjY3ODcyOTBiZjY3MzU4M2Y3ODkzMTVjNzJmNDU5IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM4IGUyMjA4ZDRmNWE3ZmM5Yjg2YjM1NTZkNTNiY2M4NzAyMjY5NGYxYjAgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzkgNzQ3MmY3YjdkOTAzNDQ2MTYyYjFhNmIxZWQzZDIxMTZlYzg0NWZjZSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MCAxZGNlMjUwMjU2NzkyMWIyNTJjOTMwMDRmM2NkMjg1ZWU1Y2UxZThiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQxIGJkYjUyNzI4YjAyZWY0YWI3MmQ4OTcwZjQ4MzQ1YzVmYzczYjlkZmMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDIgNDU1NTk2MWM1YTJmOTZhYTkzZTgyYjk3YTQ0OWIzNjJkY2Y1OTQ4ZCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MyBlMTYyNjhjMjczYmIyNjY0YzYwOTllZWM1MDJiZmI1YTRhNTYwOWViIHAzeWsKKzU0MDQ0IDRhZTA0OTBlMWEwYzBmMzQ5ZjY3ODFjMDY0NWUyMjlkNDZiMTFjNzUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDUgZGUyYzlmOWFlYTFlZTc2ZDU5ZDNlMGU1MmI3ZWYzYmNmM2FhYTc5MSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0NiA2OWNhNjU3YTY0ZTdlZGJmMDVlYjJjMzQ5MGNkZmE1NWQyNGExODc3IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ3IDRjMWUyYzMzZmFjZDA4Y2VlYjY3MGVjOGM0MzVjNzhiNzc3Y2QxZTMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDggMGMxNGI2NmFjYTcwMmI0ZDFmOWZlYWRmYzNhNjIyNjcwNWNiNjRmNSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0OSBlZTQ2MjE3Yzg3YWY3YTg3MzgxOWFhM2RjYzczMzEyNGY5NjU5ODUzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUwIDI3YTIxODZmNDVjYjRiMjM3MTYzZTZlNzViMjhkOTRhZTYwMWQzMWUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNTEgOTE4NWM3MGExNTg1ZTlhNmZjMGMyZGZkZWY3NjU4MTk2NmVhZDkwMyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MiBkOWIxNTM0ZWM3OWZlNzUwNDNjMDA4MTk2NTFhNDk1MjcxOTJjOGM4IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUzIGI0NmM2ZDI3NjI1ZTNlNmMwMzk2OWMzNmI2NDkyNTVkMDI0N2YyODYgbGVnYWN5LXRydW5rCis1NDA1NCA1MmU0NTMwNzczYzk3MDFhMDZjMTFlMTE1NzdlZGU5YmIxZGYyNjBkIGxlZ2FjeS10cnVuaworNTQwNjAgYmU0NGJmMmRiMzUwZTRhYTJjNDI1NjkxMWYzMDIxNjM1NWVlZTEwZSByZWxlYXNlMjUtbWFpbnQKKzU0MDYxIDg4ODg0ZTdiYWM2ZGMyYTI4ZmE4OGIwODYxNGFjN2U2MDYyMzI0MjMgbGVnYWN5LXRydW5rCis1NDA2MiA1MmU5NWZiMDg5MDE3ZGFiODlmNzYwYzVjNTFhMWFkYzljZTU0NTg2IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDY1IDMyYTRlNWVlMmQ5OGMxNDU3OWJkNTFmNTJlODZhYWEwMzVjOTgyMzYgcDN5a19ub19hcmdzX29uX2V4YworNTQwODAgMWM1ODYxMWM1MWQwY2E2ZmE1OTgyYjVhMTI4OGNhY2ZhZDA3MzA2NyBsZWdhY3ktdHJ1bmsKKzU0MDg1IGJlNjhkYTU2MWRjZDY3ODcwZjk2NWIxNjRjOWIyN2I2N2MyNWZlMWEgcmVsZWFzZTI1LW1haW50Cis1NDA4NiA0ZTM0ODE5NjFmYmJjMmVjZTE2NTAyNWNiY2MwODliMjE2MTEwZWRjIGxlZ2FjeS10cnVuaworNTQwODggNjhhNDg3ZDIxYzA2OWE3NWMzM2VjODZjNWZjNmYzOTAyZDU3NzdhYiBsZWdhY3ktdHJ1bmsKKzU0MDg5IDMyNGE3MWExMDNlYzJkZmVjY2QzYTUwOTllODA5ZWMyMmRkZTZkOTQgcmVsZWFzZTI1LW1haW50Cis1NDExNCAyZjJiODkzNWE4MWUyNjIwMjZiYTFmNTJiZjFkZTg0ZDhlYTYwNmRkIGxlZ2FjeS10cnVuaworNTQxMTUgNmRlZjgyYjhjZjIwYWEyMjNiYTdhNWVhYTk5YzRjODk5ZDRlYzFkMyByZWxlYXNlMjUtbWFpbnQKKzU0MTI0IGZlOWE5ZDM5YTM1MTdmZWY1ODkyNDNlNzlmYWU1N2U5NzAxNjgyNTQgbGVnYWN5LXRydW5rCis1NDEyNSAzYjFlZmNlMzU4YTM2MDEyNzMwZWRjMTZiOGRmYmZkNDg3MDFkMTBkIGxlZ2FjeS10cnVuaworNTQxMzYgMzcyMDcwYmE2ZmQzMWY0ZTM4OWE5MGNjYjNjYjA2MmZkODE3YzdmOCBsZWdhY3ktdHJ1bmsKKzU0MTM4IGUxYjAwMGJlZDQ2MmYzOGJkZDBmMDdjZWExNzVmNTM3MjZjZGRhZDEgbGVnYWN5LXRydW5rCis1NDEzOSA2ZDM0NTRjMzcxZGQ0M2FjOWYzMWI0YTMzNmYxNDQyZDQ2ZGJmOTQ4IGxlZ2FjeS10cnVuaworNTQxNDAgODkxYzI4ZDUzNTY5NjliMDQ5MjVhYWE2ZjQ1YmU2MWE4NTYyZWM2YiByZWxlYXNlMjUtbWFpbnQKKzU0MTQ5IDA4MWI0ZThiNmY1YjgyMTY1YzMwNWUyN2Q3ZGIyMzhjYzE2ODFjMjggbGVnYWN5LXRydW5rCis1NDE1MCA2MDU4NTUzMGYzMGI4YmNkYTA1NWE3MGExNmUwM2Q2MDFjNjUxNjdmIGxlZ2FjeS10cnVuaworNTQxNTEgZTQyMjgwMjIwMmJlMGEyMDVlMDUwYjM0Mjk4NDEwOTMyYmIzMDJlYyByZWxlYXNlMjUtbWFpbnQKKzU0MTUyIGYxZTg4YzM1MDJkOWYxYWFmODBjNDVjZmU5Njg4ZmE2YjhhYmE2N2EgbGVnYWN5LXRydW5rCis1NDE1NCA0ODI1NDczOTE1OWZmYWViYjY4MmRmYmNhYjE4ZDMwNGMxNWVlMTdkIGxlZ2FjeS10cnVuaworNTQxNTUgMzNiNDNkZWJiOTdlZTc2NzdiNjYzNmVkNWYxMGQ2YWQwNGU3NTA1NiByZWxlYXNlMjUtbWFpbnQKKzU0MTU2IDVjMTk2YWE2ZWNmNDhkYjljZDllMzVkYzhmZWYyYjAzOGI0ZTgxMzQgbGVnYWN5LXRydW5rCis1NDE1NyBiNmRjYjc3ODMzODU3ZDk5YTk0NmY1Y2MzZmQ3NjUwZGQ0MzY5NzE5IHJlbGVhc2UyNS1tYWludAorNTQxNTggMTA4MGRlNDljODFlOGRmNTY0YzhhMDQ3OGJmNjA0OTFkNzU0MTIzMCByZWxlYXNlMjUtbWFpbnQKKzU0MTU5IDVjMDhlNjQ2MGRjNTU0Zjg4MjE5ZWIxNGQ1Y2M1OGQ5ZGEyOWIyM2YgbGVnYWN5LXRydW5rCis1NDE2MCBiMGYyNmE3ODEzYzkwOTZmNDlkNjRkZWI1MzNkMmQ4OWQzNzU5NjFmIGxlZ2FjeS10cnVuaworNTQxNjEgZjgzZTU4MjJlNjcyNmJlOTg5MDY3OTQxZTA3YjgwZjlkN2IyZDM4ZCByZWxlYXNlMjUtbWFpbnQKKzU0MTYyIDA5ZDA4ZmNiOGY3YjlkMjIyODQ5ZmM3NzBjOWVkNzY2NmQ0ZjYyMmYgbGVnYWN5LXRydW5rCis1NDE2MyAyZWUzNjZhMmQyYjg5MWY3YmZiNzlmNmYzNjczY2EwYWFiNmNlNWE5IHJlbGVhc2UyNS1tYWludAorNTQxNjQgNGU4MzVkZjJiNGJhODhjYjlhZDE4NWM4OWM1YWY5YTk1YjQ1MTE5YyBsZWdhY3ktdHJ1bmsKKzU0MTY1IDk2M2MwZTQ0MjgzMjExNGJhZmViN2IyMWI2MjIyMDI2NGQ2MmUwMmMgbGVnYWN5LXRydW5rCis1NDE2NiAwNjk5MmU2YjIwNWE0NDk2MTRlNmQ4ZjRiMjVjZTgzNGE4NDA0Y2MwIGxlZ2FjeS10cnVuaworNTQxNjcgM2NmZGI4MGJjNjhlODc0Y2U2YWMzODJhNDU4YTZiYjU3NGUyMTJiMSBsZWdhY3ktdHJ1bmsKKzU0MTY4IDFlYTE5Zjc0NTA0Y2JjNjBhMTI0OWVlYzRjNjM2MzYyNmRjZDM0YzggcmVsZWFzZTI1LW1haW50Cis1NDE2OSBkNDU3NzIxNTUzOWRkZDM3NDE5MGU5YjU2MTE1MGZhNzU0NjYxMDAzIGxlZ2FjeS10cnVuaworNTQxNzAgYTZhMDk1YmY2NDU4NWQwMTQyZjQ4NTI2MmI3MzYzYTMwNzE2N2Y1NCBsZWdhY3ktdHJ1bmsKKzU0MTcxIDY3Y2MwZTk1ZThhNTc4ZmIwYTQ2ZWMyYjYzYTY1ZmY5NWM5ZmFmNTkgbGVnYWN5LXRydW5rCis1NDE3MiA0MWVkOTRiZTZkNWNhYTBmYjE5YjRmY2JlNWUwYzJkNTMxYTE0OGQxIHJlbGVhc2UyNS1tYWludAorNTQxNzMgNmE1OTlhZWU3Y2E0MGExMjYxMDI4MGMyZWIyNTNmMDQzZDExYTMyZCBsZWdhY3ktdHJ1bmsKKzU0MTc0IDYxNGJjZDM3YzZmM2E0ZWZkMmU1NDUxNDQ5MGIzOGMxZWYwOTI0YzIgcmVsZWFzZTI1LW1haW50Cis1NDE3NSA2Y2QzNjZlNmJlZWNjNThmYmUzODJmZDM4MTcyOWM0MzY3ZjY3ZjU0IGxlZ2FjeS10cnVuaworNTQxNzYgZTY2Y2ZjNzI1ZThkYjBlMTBlMWI5MmQxNjllZjJhZmIwMjQ0MThiMyByZWxlYXNlMjUtbWFpbnQKKzU0MTc3IDZkOGRjYWQxMmZkOWJmYjg0YzBlMmU1ZWQ5NTZmYmVhMjM1NDRjM2MgbGVnYWN5LXRydW5rCis1NDE3OCA4MjgwYjdjNDA1NTc2MDIyOGQ5M2IyNzJhMjc3ODdjZGIwMGE5MzhlIHJlbGVhc2UyNS1tYWludAorNTQxNzkgZWZhMGE3NjE5MThjMjhjNzJmNTYwMjA3YThhOWEyZjY2MzJkYzdjYSBwM3lrCis1NDE4MCAzYWMyNGMwMTEwZTk2ZjhhNTFkMjQyNTIxMjdiZTI5Y2E1MDRkNTU0IGxlZ2FjeS10cnVuaworNTQxODEgMWMxNGIyM2I5YzFiY2Y2OTcxZWJkMDRhOGE3MGU4NmVlMGJjYWRkMSByZWxlYXNlMjUtbWFpbnQKKzU0MTgyIDc1N2U5M2E0MDk2YzUyNGJhOWUzODg4NTFiNWU2ZTAxYTlmZTA2OTcgbGVnYWN5LXRydW5rCis1NDE4MyAxNmMyMTVlNDNiYWQwYTNmNDFlMmRhMDE2OWI2ZDdiZjI3ZGIzYmE0IHJlbGVhc2UyNS1tYWludAorNTQxODggNzI4YzYwZTg1ZWZhNTk0ZmNkM2IwMTU0NGExOTI0YmQ2ODQ3MjcyZCBsZWdhY3ktdHJ1bmsKKzU0MTg5IGM4ZWQ0YWVhNmM1ODMzMGQ5NmE3NjQ5NWEwZWU0MGFlMGE3MjE4MDAgbGVnYWN5LXRydW5rCis1NDE5MCAyMTIzM2MyZTVkMDkzOTk0MDc0ZGM4YWI3OGZmNzRhMmZlMzUyODBmIHAzeWsKKzU0MTkyIGY0NzliOWM3NGI3ODE5OTc5MWQ2NTc3MDY1NzY1MGI1MzczNzAyNGEgbGVnYWN5LXRydW5rCis1NDE5NCAxMjlmZmZmMmNlNmRjNDVmMzUyMDZlZjEzZmU1YTJlNGQ0MGYwZGQwIHAzeWsKKzU0MTk1IDI0MmRlMTZhNmQ0NDJjMGQ1Njc1OTAyNWY2YzM3MDYxMjU4OGRhZWUgbGVnYWN5LXRydW5rCis1NDE5NiAxYTBjOTA3OTI4YjQwMTM0M2I2NzE2NTYyYWZjNDNmNzdjNjJhYzI4IHJlbGVhc2UyNS1tYWludAorNTQxOTcgODUwYzMyZGIyN2U2NDQwNjU2ZjI4ZmEyMzQxZGM5ZTBkMDdjZjMzMCBsZWdhY3ktdHJ1bmsKKzU0MTk4IGUxOTYyYWIxMmZjZTlhYmE4OTQ1ZmE3M2U2Zjk3M2FjNGMzZDlkOWQgcmVsZWFzZTI1LW1haW50Cis1NDE5OSA3ZGEyM2JmODk0OWZjNGE4ZWI4ODkxNWJmYmUyYTEwZDY2NGRjMGMyIGxlZ2FjeS10cnVuaworNTQyMDAgODFlNDg2YjMwMDc4ODVjMDU3MTk0NTFlMzI2YWExZGUxM2ZlZDBjOSByZWxlYXNlMjUtbWFpbnQKKzU0MjAxIGIwOTJiMmM4M2FiN2U4NTk2N2IzM2Y3NmEzNWY1MDQxMzQ1ZGRjNTQgbGVnYWN5LXRydW5rCis1NDIwMiA1MTAyMzM2Y2EzNDM1NDRjZDY1Y2YyNWUzNTc5N2Y0ZmRhYTJjMDVjIGxlZ2FjeS10cnVuaworNTQyMDMgNDIzYjM2NDg0M2NkYzFjYWUwMDI1Y2Y4ODlmMGM4MjkxNGFhZTlhNyByZWxlYXNlMjUtbWFpbnQKKzU0MjA0IDk4YmJjOTNiZDU1YmEwYTY0OWY0YjdjMDZiODFhNzc3OGJkMzE5NjUgbGVnYWN5LXRydW5rCis1NDIwNiAzYjUzOGFjZjc2OTRlMTMxOGJjYWY2NDE5YWY0YTExMDJjNjEzOWJjIGxlZ2FjeS10cnVuaworNTQyMDcgNDZjZmFiYjdkNTQ0NjNlNjllMmRhM2ZhYjZjNzU1NWFiMTE4NTFjNSBsZWdhY3ktdHJ1bmsKKzU0MjA4IGU0MmM2M2Q3YzIzMGE4ODBkN2E2NzkyN2RjZDQ4OWYzNTQxNzQ1OWEgcmVsZWFzZTI1LW1haW50Cis1NDIwOSBiYWFiZWY2YzAwZDY4ZTI3Njc1NmFkOGMyOGQ1MDRkNmRlNGQ5NzYyIGxlZ2FjeS10cnVuaworNTQyMTEgYmZkYmQzZWMyN2Q4NWE1ZWY0MzRiNDQ2NmZlNGFkMTM4NTQwNmFjMyByZWxlYXNlMjUtbWFpbnQKKzU0MjEzIDRhMGUyMjhjMzZlNTdmNzIyMTM0N2ViZTMzNDVjYTQzMjVjMDY3NWUgcDN5aworNTQyMTQgNmUxY2Y0ZDI4YWYzNGViNTJkNWM4YjRiNGMwNzVjOTBkZDc4YThlMCBwM3lrCis1NDIxNSAxNTcyNjBlZjY3N2NhZDRjZDRlZTYxMGM5NDY3OGViYjhmYTRhMWY2IHAzeWsKKzU0MjE2IDYzYWYzN2MyZDBjMGVkMjg5YmE4NWViZjIwZWI2OGZlM2I5MDBhMDYgcDN5aworNTQyMTkgOTE4ZWRhYmFhYTg0ZTYyNWI4Mzk5MDU4NjM5ZTBjZGQ1OTQwMWQ1YiBsZWdhY3ktdHJ1bmsKKzU0MjIwIGMxYTk3YjA4MjEzYTlkYjUzNGNmNDkxMmViMDJiOGQzNmY4ZGRjNTUgbGVnYWN5LXRydW5rCis1NDIyMSAzMmFmOTU4OGExODJlZjQ0OGMwOTg5NTQ4ZGY3MTUyYTY1OTMwZTQ4IHJlbGVhc2UyNS1tYWludAorNTQyMjIgOGFhN2NiNTFkMzU4NGY4ZjkzYjJmOWNiMTQ4YjM2YWRhYTViOWQ1YSBsZWdhY3ktdHJ1bmsKKzU0MjIzIDJmNWQ4NGRjYjY1NTdkYWQzNWZkN2E5YTI5ZDUwN2NkMTM3ZjgxZWMgcmVsZWFzZTI1LW1haW50Cis1NDIyNCBkOTQ4YTJjMGZjZmRkZDk1MTIwOGYwYzA1NjQzODEwOTRhY2I4YzY2IHJlbGVhc2UyNS1tYWludAorNTQyMjUgNTU2NTllNjQyNzdiZTZjZDQwNjQ0OTA2ZDBhOGFlNGFhOTAyZDliZCBsZWdhY3ktdHJ1bmsKKzU0MjI2IDliNTZlYWQzNTMyY2Q3OGU5YzY2MmUxOWFlMTQ5NzhlMGRlYTQwNTggcDN5aworNTQyMjcgMGJiOTY5ZjE1MTE4YTM4ODBlYzFiZTc5YmMzMjgwYjAwNzQ2NjBkYSBsZWdhY3ktdHJ1bmsKKzU0MjI4IDgzNDAwZGY5NzM3OWFlMmY1NTU3MzhlY2UwYjllYzQxNzY2M2ZmMWYgcmVsZWFzZTI1LW1haW50Cis1NDIyOSBhN2M4YTRkMWI5NDA3ZDI5YjA1ODBjODQ5MDA2ODU0NWVmZDlkMjNjIHJlbGVhc2UyNS1tYWludAorNTQyMzAgZjJiYTgxMmY3MjAwNzYwYjY1YmZmNzViMzFkYjAwM2Q3NGI1YzhkMSBsZWdhY3ktdHJ1bmsKKzU0MjMxIDNiZTIxNzViYmIwMDA3NGQyNDNjODRiZjljOWRjZjU2ZjY5YTliMTcgcDN5aworNTQyMzIgZmYwYzQ2ZmIxOTVhMzU2YTkyZjJkMmRjNjQ0OWMzMjFlYjcwZTBjOCBsZWdhY3ktdHJ1bmsKKzU0MjMzIGJlMWUyZjc0NTY2OWRjMDk1Yzc1NTRjNTM2ZWJiN2ZjMTE0ZTNhNDYgbGVnYWN5LXRydW5rCis1NDIzNCA5Y2ZjOWNiYTY3NjhiMTZmZDZkNTJmOTM5YTkzMDQ0NGMyMzVkYzczIGxlZ2FjeS10cnVuaworNTQyMzUgMWEwZjZhMTI4NzRjMmFhYzMzZjcwNjQ1YzNkOTA2ZmRjMjNiZDk5NSBsZWdhY3ktdHJ1bmsKKzU0MjM2IGU4MzEwODU1ZmNjN2E2NzQ0ZDgxNTAwMDU3Yzk3MjVkYjdmYmQxNjEgcmVsZWFzZTI1LW1haW50Cis1NDIzNyBmNzU0NTdkNzUzMmNlMGNlN2I3ZDU3ZDQ3MDNkOWFjMzQ1NzFmOTdjIGxlZ2FjeS10cnVuaworNTQyMzggN2Y2ZDUzOTBhMTFhYjJkZDc1YTJmODM2YjdhZDU2OWEzY2E1ZjBhYiByZWxlYXNlMjUtbWFpbnQKKzU0MjM5IDc0NDZhZDZjYjU4YmRjYmZjZTgxODkzMWRhMGJhZmM2ZGNkM2I1NWIgbGVnYWN5LXRydW5rCis1NDI0MCAwOWJmYzBjZGZmOWZlZTNiZTQ4OGRiZTFiMjA0YzkwZGI0NzdjMWRkIGxlZ2FjeS10cnVuaworNTQyNDMgMjg3Nzc5ODQzYzVkMzk5NGEyMWU1ZDMyYjBlM2Y4ZmFkYTVlNjY1OCBsZWdhY3ktdHJ1bmsKKzU0MjQ0IDM3MTdiMTQ4MWQxYjk1NzM3OWFiMjFiMGZmYmQ2OTIwOWM5NjE1NDEgbGVnYWN5LXRydW5rCis1NDI0NSAxZmVlOWY0MmIxZmFkZDk3NTE0YTc1OTE0ZDQxYTAyNGUyNzZjNDJkIGxlZ2FjeS10cnVuaworNTQyNDYgYjEzMjZhYTA0YjJjM2RhMjQ1NjhhN2Y4NmY4YTVkYTUyOTM2ZjE0NSByZWxlYXNlMjUtbWFpbnQKKzU0MjQ3IDQ3YWMxYmZlYTMwNDdjNmNlODBiZjE1NzkyNDMwNGYxNWE3MGI1ZjggbGVnYWN5LXRydW5rCis1NDI0OCBmZWRkNmNjYzVlNWI0Zjg2NDdjYjhhNDJiYTA1MDU0NmI1M2VjNTgyIGxlZ2FjeS10cnVuaworNTQyNDkgNGFhOTE4N2I1MTU5Y2NkZTM1ODY0MTA0ZTVmNmIzNTA2Y2NiMzE4NSByZWxlYXNlMjUtbWFpbnQKKzU0MjUwIDFhZjM4YWYzMTRmMjcyNzNmODQ5MjY2ZDIyMzIzNTA4ZTUzYWIyNjcgbGVnYWN5LXRydW5rCis1NDI1MiBiZTBkNDkxMzRlNGZhMmU4NWY2ZjA2YzNmZDE1NzJjOTVlYmMxNjM5IGxlZ2FjeS10cnVuaworNTQyNTMgMWJiZDY4OGE2ZGUxNmY1N2M5OWQ2NDgzOGEyZTVhOWYzNDMyNmU4MiBsZWdhY3ktdHJ1bmsKKzU0MjU0IDAwMjM3ZjUxNGYwNjI5MmEwNGIyMTc5Nzc1YWJhMWVhMmRmY2Y2YmQgbGVnYWN5LXRydW5rCis1NDI1NSAwMWM4ZjNlMzMzMmNhYTE4YjkyZjk1MGY1Yjg3NWQ4ZmZmNTE2MDkwIHJlbGVhc2UyNS1tYWludAorNTQyNTYgNzE4MDljMDg5YTI2Mzk1ZTllNzAxMGRlMTdiNzU4Y2Q2NzNhM2IwYyBsZWdhY3ktdHJ1bmsKKzU0MjU3IGQzYTM1ZmUxMzgzOGEyMTk2N2E3NjM1N2RmYWZlNzc3NTAyODZjMWQgbGVnYWN5LXRydW5rCis1NDI1OCA1OTc4ZTA3MjkxZmU3NjgwZDVlMDA4ZWI4Y2FkOWJlODMzYmYzYjVlIHJlbGVhc2UyNS1tYWludAorNTQyNjAgYTNmMzExMzA0ZWE2MzJlYmIxMjE5YzU0YjhmNTZhZDYyODAxNGJiMCBsZWdhY3ktdHJ1bmsKKzU0MjYxIDJiNTFiMDRiMjU0NTRjYTEyMjgzMDI5OGUwMmQwNmYyZjRlYTE4YzQgcmVsZWFzZTI1LW1haW50Cis1NDI2MiAxMDFhMWFiNTczZGI0ZWIyNDc1MTUxOTdjY2ViMTRjZmZhMjBkODIwIGxlZ2FjeS10cnVuaworNTQyNjUgY2Y0NTIwMjcwNzNlMjhjY2UzNjViYzY1OTYxNjJjZWQ4ZTc0ZTgwZSBwM3lrCis1NDI2OCBmMTE4YWFkYzExMjA1Yzc1NGNkNmFmMjIyZjk5Njk2MWJkMDE0YWQ3IGxlZ2FjeS10cnVuaworNTQyNjkgYzliNDBiMGFhMzAzMjAxZDc1ZmE4YWUwMGZhNDQ5NWRlOTVhNzM0NiByZWxlYXNlMjUtbWFpbnQKKzU0MjcwIGE4YWUyYzI5YzY2YWUyZDYwZGRhNjAwMDBkNzQ5NTU2ZjkwMDU4MGEgbGVnYWN5LXRydW5rCis1NDI3MSA1YWI3ZGM4ZTczMWE5N2FhZTI4MWM4NDkxYjE4MTJiNWVmMWJmN2JjIGxlZ2FjeS10cnVuaworNTQyNzIgZDRlYTA2OGMzODIwNGQ4MGQxNWQyYzliYzcxNzg5YWVkYmQ3ZWZjZCByZWxlYXNlMjUtbWFpbnQKKzU0MjczIGQ3MDQ0NDY1Yjc0M2JmNTE1YTA3YzQ2ZDNjMzNlNjBlMzQxNjgyNzcgcmVsZWFzZTI1LW1haW50Cis1NDI3NCA2MGEzNWMwN2QzMmRmMzQxYTRlYjg5Zjc3OTkyOTVlMWZiNmFmZjUzIGxlZ2FjeS10cnVuaworNTQyNzUgNWI2ZTFjMDA4Y2EzMjNkYzcxNDZhZjIzZjQ3ODNlNzMzNDcyNWQ2MSByZWxlYXNlMjUtbWFpbnQKKzU0Mjc4IDlhMGNjZGJiYzU2OGRjZTgyYjA5MzVhZTEwNmZlMGMxYzVlNGIyZmIgbGVnYWN5LXRydW5rCis1NDI3OSA3MmM1YjU1Y2FhMWRiMmUzNzNkNDA0MjlhNGM5Yzg1NzZlNTVlMmMxIHJlbGVhc2UyNS1tYWludAorNTQyODAgZDg1MGJmNTZmZGY2Y2EyZmRkODRmMGYzM2VkY2FhNDQ4Mzg1YTM1ZSBsZWdhY3ktdHJ1bmsKKzU0MjgxIGRjZTk0MGQ5YThlOWNkZjBkNjU1OGQzMzgyZGU1ZTZhYzUxNmI5MjIgcmVsZWFzZTI1LW1haW50Cis1NDI4MiA0N2VkZTY1ZTJlZmQ4ZmZlYjEwOThjZTM4YWJhZjk0YzNiZDcxMGFhIGxlZ2FjeS10cnVuaworNTQyODMgYWRmNjEyZjcwNmU0ZTkwNjRiYmRlOGUwMmVjMTJjNzkyMTkxYjgyZCBsZWdhY3ktdHJ1bmsKKzU0Mjg0IGE3ZGFhMDIxOGNmMGMwNjNhNWVlM2QwYzA5NjdkNTBiMDQ0ZWU0NWIgcmVsZWFzZTI1LW1haW50Cis1NDI4NSAzZWU5NWZkZTdjZmFlNDA0OTQyM2FkMTIzNDZhNzZkYjg1YzFhOTJmIGxlZ2FjeS10cnVuaworNTQyODYgMjExMjAxZTZiMDQ1ZWQyYzUxMTVlMDAyMTM1OWNiZmRjMjE1OGY5MCBwM3lrCis1NDI4NyA3MTdiYzJhNGVlZTc3YjZmMmRmMDBkMmZlZGM5OGZiYWNkMGFlNWQyIGxlZ2FjeS10cnVuaworNTQyODggYTg3YmNjMzdiZjBmZWE3N2FkMjk5Y2E2MTdhOWU1YTBiOTU3NDNjOSBsZWdhY3ktdHJ1bmsKKzU0MjkwIDcxMDBjNTkxODJmZjMxNmRmODc3YTQ0YmU1MWQ1NjNmZWU5NGFkZTcgbGVnYWN5LXRydW5rCis1NDI5MSA0NWNlMzg4ZWM1OWE1ZDIzYmUwYjM4YTAwMmI0YzExMjMyZjgxN2NjIGxlZ2FjeS10cnVuaworNTQyOTIgMmNiNWZiN2NkMzU3ZTRiODEyZTI5MWM2NTJmNTc2YTcyYTQyZDBiYSBsZWdhY3ktdHJ1bmsKKzU0MjkzIDViZTNkMjE3NzM0MDVkZjY3YjdiODcxNjExZDY4NGQyNWJhNGY3MjggcmVsZWFzZTI1LW1haW50Cis1NDI5NCA2NmYyNjVhYzRlYzRmOTBiNWViMjY4MGJiNGZmYTcwMGQzNDJiNTU0IHJlbGVhc2UyNS1tYWludAorNTQyOTUgMWUxMmJlZDdhMmZlNWE0NmIyNzM2Y2Y1ODhjOGM3NWNlOGI3YTVkNyBsZWdhY3ktdHJ1bmsKKzU0Mjk2IDAxMzU1MTI0Y2U0MDUxNWJjMTgxYzJkZTEzYjJhMjdiYmVjNWJkMzcgbGVnYWN5LXRydW5rCis1NDI5NyA5MWE4MGU1MmQ4NjNlZDViMmFjZTUyZTU1NWE2ZTI3ZTZlNzBkN2M3IGxlZ2FjeS10cnVuaworNTQzMTUgOTFiZDczOGE0MjA2N2ExM2FjM2NhNTNlMjI3Mzk2Y2I1ODFiNmM2MSBsZWdhY3ktdHJ1bmsKKzU0MzE2IDg0NDc4ZGViNGFkOTZhOWFjZGU5OGU3ZDA4YTViMWQ1OWNmMGYwYjMgbGVnYWN5LXRydW5rCis1NDMxOCA0NzlkY2JkNzliNTdmMTVlZjhhMmU2MWE0ZmNlYzNiMDAxN2Y1ODljIGxlZ2FjeS10cnVuaworNTQzMTkgZjlhMjZhYTNkMDljNDRjMjZkOTUyYmE3NjE0MGI2Yjc2YzY3MjhiYSBsZWdhY3ktdHJ1bmsKKzU0MzIxIDlkYjNlMzI1ZGQ4OGQ0YjE3NzRhYmY2MzQ0YzMxYzM1YTZiZjdhMWQgbGVnYWN5LXRydW5rCis1NDMyMiA3Mjg2ZDgzMmFkMjcyNzE0NWFmNDQzOTA1YjkyMDQ2ODc1YzBjYTJiIGxlZ2FjeS10cnVuaworNTQzMjMgZTJjZWVkZTIwZDhjMjk0MjRjODg2ZDY1MjA1MDZjZDdiMDAxZWE5NCBsZWdhY3ktdHJ1bmsKKzU0MzI0IDE2ZDdkY2Q3YTY5YzQyZjc1ZDdmMzE4OGY0MGM3YzI2NjgwYWM5YzAgcmVsZWFzZTI1LW1haW50Cis1NDMyNSBiZWQ1N2RmZjNkYjg2ZTY4ZjBmYzk0NDdlODY0OTFlYTU5NWIyMTE4IGxlZ2FjeS10cnVuaworNTQzMjYgN2EzMzFjN2Y5NDA0ZmNkMDAxYWMzODFmNjliODUyOGM1MThiNDZlOSBsZWdhY3ktdHJ1bmsKKzU0MzI3IGJiYWY2YzkzNTY2MzZmYTUzN2FkZTA1MjQ4NmI2ZmZjOWRkYzVhOTkgbGVnYWN5LXRydW5rCis1NDMyOCA4ZmE0ZTk4MGI1ODk5ZmI5YmQyMTUzYThlZmEzMzlhNTIwMThjYTE5IGxlZ2FjeS10cnVuaworNTQzMjkgYjg5NDM3ZTNiYzhlYmQ3ZDZiN2U4YTJhMzdjNWMwMmI4MzNiMzE3NCBsZWdhY3ktdHJ1bmsKKzU0MzMwIGFkZThkMWM4MTAwOTNlNTg0NGY2ODUyNmI1MjQ4OWFhZTU1MTFiMTkgcmVsZWFzZTI1LW1haW50Cis1NDMzMSBiMTNlNjEyOGVmYTcyYTRlMjY2N2UwY2UyODk3Y2JhMjZjMjA5OWFjIGxlZ2FjeS10cnVuaworNTQzMzIgYjZjMTAzODQ1MDU0ZjE4OGQyYWI1MTkxYjFmZmU5MzFiZmY5OGE4YSByZWxlYXNlMjUtbWFpbnQKKzU0MzMzIGM2ZjQxNTI5MGY4MDZjYjA1NWZmNmE5YjZiYjU5Mjg1MzM4YTU3MTIgbGVnYWN5LXRydW5rCis1NDMzNCA3ZDMwZDYyYTkwMWFhODFmMTI0MDljZmQ2Y2FjOTk3M2FlYmE2ZGQ0IHJlbGVhc2UyNS1tYWludAorNTQzMzUgNWEzYTFiMDI0MThhZmQwY2I5ZjNhMTRjYzY1MzMyOWUyMWY1NDIzNyBsZWdhY3ktdHJ1bmsKKzU0MzM2IGE0ZTBjNzkwMTVkODJmZTI5ODVhOWRmNzgyYzVhYTU4ZTdmZmI5NWMgbGVnYWN5LXRydW5rCis1NDMzNyA4MWU1YzVkMTk5ODg3Yzk1YjAyNTcwYzRlMDY1MTFmOWRjNmQ2ZjJjIHJlbGVhc2UyNS1tYWludAorNTQzMzggYTM0MTljNmMwY2ZlZGY2YWZiMTc0ODZkZDBkNjAzNmJkMDI0YjIzNSBsZWdhY3ktdHJ1bmsKKzU0MzM5IDUzZWUyNzk1Mjg3YjQ0YzZjOTZhZGRkOTVhNTMxOTI4MDgwYjllODcgbGVnYWN5LXRydW5rCis1NDM0MSAxZDgwZDg0Yzc3OTI0OTc1YmNiMzkzZWQyZGRkMGM2M2NjODI5NTBlIGxlZ2FjeS10cnVuaworNTQzNDIgYjkwZDhiMmU1ZWQwNzE3NGM0OGVmNmFjODRhOThiMzE3ZGVmMzliZSByZWxlYXNlMjMtbWFpbnQKKzU0MzQzIDBjMTIyZmU4MjdkNzhhNDZlMjIyZjQ3MGViODRhNWVmNGRkMDBlOGIgbGVnYWN5LXRydW5rCis1NDM0NCA3YjM2YTY0ZGNiMDhkMDI2NjIyMjdiMjMzZDllZTQ3Y2Q0ZWM4MGQwIGxlZ2FjeS10cnVuaworNTQzNDUgYWM3MWRiOWZhZGM4NmI5YWUxNjlmZTY5ZDIwYTA1N2VlYzYxNTExZCBsZWdhY3ktdHJ1bmsKKzU0MzQ2IDI4YjA0MDNmOGM5MmI3MWRjM2M0MzQ3MGMzMThlNThkMDBiODhhYjEgbGVnYWN5LXRydW5rCis1NDM0NyA5M2U2N2QzNjJhODFhMjlhOTc5ZjY2Njg5NDQ0NTA2OGRhZGQxYzIyIGxlZ2FjeS10cnVuaworNTQzNDggZDk2ZWJiMjBkM2UxZjYxMDVjOTM1YzgxZDkyNGVjZDI5NDY1NzQ5MSBsZWdhY3ktdHJ1bmsKKzU0MzUyIDRhNzlkZDE1YmE1OWY2NWUzOTE4NDRhZjJkOTg4ZWE2MTYyNTQ3MzAgbGVnYWN5LXRydW5rCis1NDM1NyA0OTNjYWU3MDVmOTE4OGMzYmI3MDljNzc3NWZkOTYzZmUxZWI0Yzk4IGxlZ2FjeS10cnVuaworNTQzNTggNzg2ODZjN2EyM2E3ZDUwM2U4MjI2YzQ5YmE2NzVmZmM1MDM5ODE1YyBsZWdhY3ktdHJ1bmsKKzU0MzU5IDkyMmI3NzA4YTgwYWZlMjA5NmQ4MDg5ZDRjYWI1MTljMjBiYjAwNjUgbGVnYWN5LXRydW5rCis1NDM2MCAyMjZkOWZjZjlkNTljZGE0NzdlMjkwZDAxYmQxYjFlZGIzZGI1MDZjIGxlZ2FjeS10cnVuaworNTQzNjEgZGJhNWEzM2EwZTc5OTUyODE0MDIyOWI1M2NjZDY0YzBlNjFmY2NlNCBsZWdhY3ktdHJ1bmsKKzU0MzYyIDIwOWQ2ODhmM2NhNWVlYzJlMTg2MTFhMWU3NTIxY2FhOWNiNzhkOWIgbGVnYWN5LXRydW5rCis1NDM2MyBlYWZiZmE4YTJiMzAwYzNhYmE5MWQ1ZTZhNDUyZTNjMTc3ZTA3NzQzIGxlZ2FjeS10cnVuaworNTQzNjQgZjFmMTg2NDYwMjUwYTJmNTMwOGVlNDY0MDBkMDYxMTM1OGFjODMxZiBsZWdhY3ktdHJ1bmsKKzU0MzY1IGNhMzM4ZDU2M2E3YWQxNmZmOGNkMWM5YmU4MzBhMDBmZWViMjU0MzEgbGVnYWN5LXRydW5rCis1NDM2NiBkMzExMDEzYTE2MzhhOTRjYjM2Y2ExMTYwNTZjMTMwMzZlOGE3YmQ3IHJlbGVhc2UyNS1tYWludAorNTQzNjcgNWExYTBhYTlhNGJiYWUxOTc2YTQ3Y2IwMTU4ZjMwZTE2MWExNWU2YSBsZWdhY3ktdHJ1bmsKKzU0MzY4IDg5NDY5MWNhNDgzNTNmMGM0MWI4YTViZWExMTQxMzJkNGVmOGQwMTYgbGVnYWN5LXRydW5rCis1NDM2OSAxZGNkYmMyNWRlYTdjNjU5OGVjZmI0M2Q0N2E5MTQ3YTM4N2U4NTY0IHJlbGVhc2UyNS1tYWludAorNTQzNzAgNTJhNjlhMDY0NjM3YTU5OTUzN2U0ZDM1MmFjMDlhMDg3NzI0ZmQ0YyByZWxlYXNlMjUtbWFpbnQKKzU0MzcxIGRlMWQwNWM1NWI2ZmRmM2NlYTIyNWVlNzg1MTk0YmQ4ODNkMDM3N2IgbGVnYWN5LXRydW5rCis1NDM3MiBmZjlkODFlNzZhNzZmN2Q1N2U2MmU5ZDJkYmE1MzRhMDlkN2QzMWJhIGxlZ2FjeS10cnVuaworNTQzNzMgYmMyYTVhNTRiNWNhZjNmNGUxZjBmNmRhYTYzZTA2MTg0MzI5NWUyMyBsZWdhY3ktdHJ1bmsKKzU0Mzc0IGI1MDA3NjFiNGI2MjZkYzFmYjkwYzMwOGUwOGY5N2FhYTU4NjQyMmEgcmVsZWFzZTI1LW1haW50Cis1NDM3NSA1NmIyYjkzM2JhYWUyYzQ1ZGZlNTI2ZmUxMWM2MGM1MzdmYjg3YzIyIHJlbGVhc2UyNS1tYWludAorNTQzNzYgYzMwMWI1YmNkZmRjNTEwZGZiOWE4YjM1NDUyYzg4MDIwYTVmZTYwOSBsZWdhY3ktdHJ1bmsKKzU0Mzc3IDkwZTU3ZTJjN2EwMzMzZWI3OGRkYzJjNTM2NDRiNWE3ODE0OGQ2NWQgcmVsZWFzZTI1LW1haW50Cis1NDM3OCAyOTAwZWMwNDAzMWQ5NGMzYWY4ZDZhODg5OTNkZmJlNjJjMTkwYTM4IGxlZ2FjeS10cnVuaworNTQzNzkgZmM1ZTA0NWNlYWU0MzhkMjM4OTBkM2Y2NTY5ZGUyNjBiNTYwYWI4NCByZWxlYXNlMjUtbWFpbnQKKzU0MzgzIDUxNGFlZmY2M2M5ZmZiNTUxMTAwOTk3ZGI0YmJhNmVmM2QwYWY3OGIgcmVsZWFzZTI1LW1haW50Cis1NDM4NiA2MjgwNTUyYzEyOTcyM2UzN2Q3YjM4OGI0YjU4MjY2MWExOGJlZjNjIGxlZ2FjeS10cnVuaworNTQzODcgOTk0M2FlYTRmMmQxZGYyMmM3YTYwY2UzM2M5YWI5ZGNkYTUzNjRmZiByZWxlYXNlMjUtbWFpbnQKKzU0Mzg5IGJiY2UyZDhmZjczZDU0ZTBmOTc3OTBhMjZjZTM4YWFlNGRhNDQyNDggbGVnYWN5LXRydW5rCis1NDM5MCA0ZWI0Y2ZiNjI1NGViYjdiOGYzZjBhYzI0OWJkMTNmN2E1ZGQ2NGU4IGxlZ2FjeS10cnVuaworNTQzOTEgZDE1NWFlNjM2NzI4NDhlYWExNmJlMDZkYzU3MDEzYTUyNmM2YjdkYyBsZWdhY3ktdHJ1bmsKKzU0MzkyIDBhNmM1MTM1ZDJkZWY0OThlODI5NTg3MTEzNDhjMDhjZWJlNDE3OWYgbGVnYWN5LXRydW5rCis1NDM5MyBmYzUyN2ViOThkY2U2ODU1Y2E5Mzk3ZjY4MTRkMzEwNTNjMmY2NGNkIHJlbGVhc2UyNS1tYWludAorNTQzOTQgMzc2YjQyMzVkZDQ0NDQ4MWI3ODY0ZjM1ZDg2NmEyZmI2MzYzZGE1ZCBsZWdhY3ktdHJ1bmsKKzU0Mzk1IDRhY2I0NWMyOTdlZDFmYjZiOGUyOWQ1MzZhMGEzNTA5YTcxY2YzNmMgcmVsZWFzZTI1LW1haW50Cis1NDM5NiA4ZDk3ZGVlNmRmNjQ0NDQxNmUzY2M1NmY0NDZmYTBlMmJmNWExY2ZjIHJlbGVhc2UyNS1tYWludAorNTQzOTcgNDIxN2YzODUwZjBiOGE1YjZlNzM2MDA1OWM2MGY3ZTM2ZTQ2MjU2YiBsZWdhY3ktdHJ1bmsKKzU0Mzk4IDUyYzMzOWMwY2IzOGJjNjlkNjc4M2U1ZGFlZTZhNDk2OGY3MDFiMDggcmVsZWFzZTI1LW1haW50Cis1NDQwMCBhMzc3Zjk0MmVlMGFkYzE4OTg1Zjk0YjllNGVjN2IzZTM2ZjgyMGE4IHAzeWsKKzU0NDAxIGEzMTJjMjc2YTVlNzliY2ZiMzcwYjc0OTk5OTgzMjIzYmRiMzcwMjEgcDN5aworNTQ0MDQgYjQzYTUyZjcxNjk2YTA2NTNiMjk1MjY3OTliYzdhYTdjMGM2ZGVmMCBsZWdhY3ktdHJ1bmsKKzU0NDA1IGQ4MzU4MDlmNDVlYzQ0OTE0ZjRiY2QxMDgxOWZmNmVkYmM3MTY4NTYgcmVsZWFzZTI1LW1haW50Cis1NDQwNiAwMTk1MWY2YjgxOWQxM2VhYjIzYjY3ZTVhYTE0NjM0ZDZjZjgwZTM0IGxlZ2FjeS10cnVuaworNTQ0MDcgOTQyMDU5ODZhZDUzMDhhOTQzZGYxNzgzYTYyMTAzYTdjYTczNTNmNCBsZWdhY3ktdHJ1bmsKKzU0NDA4IDI2OTBkZTRiZWFhMTNkYTRhY2Q5NmYxMGNmMTIyNzcxNmFhOTRiMjQgbGVnYWN5LXRydW5rCis1NDQwOSA2NDUwNzBiODM5NDI2YmYxZjkzYmM3NTg4MjBiNTI0ZmQ3ZmQ4OWZiIGxlZ2FjeS10cnVuaworNTQ0MTAgYTY5NzlhYzk1MzNmYWU2Njk4NzZhYzJhZDlkMTQ1ZTEwNzM4YTE0ZSByZWxlYXNlMjUtbWFpbnQKKzU0NDEyIGM1N2NkNTQ2NjEyZGQ4M2U4N2RlYzMxN2FjNDY4MDk5NmI2NTlhN2MgbGVnYWN5LXRydW5rCis1NDQxMyAwNmNkNjBiMGJkMTY0YzczZTIyYTVkNDkzNTI5ZTc1ZjQ3ZGVlNjk4IGxlZ2FjeS10cnVuaworNTQ0MTQgZDFiYTgxMzQ1MjhlMjhjMGJhYjNjNGU0OTM2MzVmM2ZiMDI0MjIzMSBsZWdhY3ktdHJ1bmsKKzU0NDE1IDcyZGE0OGQ5NjI1N2ZjMzBiMDMyYTJiNGY1ZjkxNDViYzIxMWQ1ODAgbGVnYWN5LXRydW5rCis1NDQxNyA4YmI1NzBhZTRjNDVjNzJlOGVjMjJmOTljNjg4ZTc4NzZlZWU2NDYzIGxlZ2FjeS10cnVuaworNTQ0MTggNzU0OWM0YjNhYTM2YTAxZDM4ZWQwNTVmZmZlZWM1MTNiZjBjN2U5YSBsZWdhY3ktdHJ1bmsKKzU0NDE5IGYzZDQyNzRkMDYzZDMwYmNjODA5NjAyMDQ1MTMzN2Q1MmM4MThlZjAgbGVnYWN5LXRydW5rCis1NDQyMSBlYmU1MmRiYzM1NTNmN2VlNjA4OWRjM2NjZWE4MWE1OWViN2RmMjU5IGxlZ2FjeS10cnVuaworNTQ0MjIgOTEyNjg2NzhkNTdmOTZkNTEwMGMyNjQxNTE1ZGJlOWU3YmQ2YmU0NCByZWxlYXNlMjUtbWFpbnQKKzU0NDIzIDEzNzNhODMwODNiYjIxM2E5ZmNjMzZiYTE4MThjMDE2NmVmYzhlMDYgbGVnYWN5LXRydW5rCis1NDQyNCBhMmFlMjRmZmE2MGE5MDM1NTg1MThjYjBlZDI0NDFlYmQyOWRjYzkxIHAzeWsKKzU0NDI1IDNjNzNhOGEyMDgzOTVmYzhmODlhNTFhMDlmOTcyOGNjYTZkODM3OGQgcDN5aworNTQ0MjYgZTNiYTYwZGUzZDg0MmUxZDc0YzIxMDRiMjc2M2U2NjgzNjk5NmYwNiBsZWdhY3ktdHJ1bmsKKzU0NDI3IDM0M2JlMzk2YmJkN2M2MTI5YzQ2MTJmNTk3ZTZjMjY4ZWRlZjE1ZDcgcmVsZWFzZTI1LW1haW50Cis1NDQyOCAxOWY3ZmY0NDM3MThmN2E5ZGExYWVhOWVkYmYwMGExMzVmODYwODgzIHAzeWsKKzU0NDMwIDVlMjRmNjM2YWM3NTc2ZThiMzVmZGQ4ZDg3OTNiYjE1NGExZWQwODMgcDN5aworNTQ0MzIgMDcxMDE2YzcyOTM5MmU1NTNjYTNjOWY4OWQyNDhiOTM4MDAyMWViMCBsZWdhY3ktdHJ1bmsKKzU0NDMzIDFmODQzODkwYTRlNjFiNDcxNWQyYzNhMTRhNWVjMmIxNWRkYzAxZTQgcDN5aworNTQ0MzQgYjFhMThjN2VkNWNhNjc5YWVhODhmMDc0NTEzMThlYzdkNjZhYmM1OCBwM3lrCis1NDQzNSAxNmZlOTM2Zjg5YjE5YTU1MTEyMzQwZWM1ZDRhODhkMDc3Yjc4ZTgwIHAzeWsKKzU0NDM3IDhkNzk5YTk5Y2Y2OGY0ZDY4ZTczYTYzZmQxNWI5YTE2MWMxOGExODQgcDN5aworNTQ0MzggMDM3ZmU2YTQ0NGQyZmU5ODI3NGViYWFjZWU0YzcxZDkwNTlhZmQ3ZCBwM3lrCis1NDQzOSA4ZDA2YzExMjFiMzMxYTUzZjI5MjYwMzBmNDAwNjBmOWU3OTI4NTMxIGxlZ2FjeS10cnVuaworNTQ0NDAgNmM4YzMzYTQzYTE1NTViODFlY2VjOTExMGY1ZWRmMGQyNDk1OTBiYiBwM3lrCis1NDQ0MSA5ZjA3ZDQxMGM1NTU0Njk2NzQyNTllMjZhNzhlNDUyMWRiNTUwN2FjIGxlZ2FjeS10cnVuaworNTQ0NTEgYzdjMjc1NGZmMmQ2ZGRiOWE5MGYxODI3NzBlN2EzYjliMjJlZmFlYSBwM3lrCis1NDQ1MiBmOTk3M2E2ZTFhZmUwMWUwZmIzYmM5N2Q3YTQwZmEwMWY3ZDE3OWVmIHAzeWsKKzU0NDU2IDhkMjk3ODE0MjU5MzM4OWZlYTQ2NzY5YTk4Y2NiNTc5NjBkYmY3OWEgbGVnYWN5LXRydW5rCis1NDQ1NyAyMzZhZjIxNjFlYjY3OGFkNDRkZTQxYmQxYzU5ZjM5Y2MwYmM5YTU5IGxlZ2FjeS10cnVuaworNTQ0NTggNjAxODE5NGFmYmJkZTEzZTFmYTNkMjQ4ODhkN2MwNDc4MTgxYWY2OSBsZWdhY3ktdHJ1bmsKKzU0NDU5IGM5OTdlOTA3YzRjNjcwNjBkODM4MWE3NmE5MTE1MzVkY2VlNTdkYmEgbGVnYWN5LXRydW5rCis1NDQ2MCAzMDdlNWQ0MTY0ZjNhM2JiMTIxNTBiNzA3YmFmMTk4YzZmZDYyMmMwIGxlZ2FjeS10cnVuaworNTQ0NjEgNWE3NzFiNGE4Yjc4Y2M0M2Q3NTYyMGY1OTdkMjJiN2E2NzkyYzQ5MiBsZWdhY3ktdHJ1bmsKKzU0NDYyIDQ1NjY5YzQxNGRiNDU1Njc1NTI0NmU5NzEwYmJlYzU1NTRmNzMzM2QgbGVnYWN5LXRydW5rCis1NDQ2MyBiOGIxN2EyZmFjZTVhYWYzY2Q3ZjczOTBjYjdjMzhiZWJmZGZhZjljIGxlZ2FjeS10cnVuaworNTQ0NjQgYjQzYTJkYTgzMmE3MGQ3YTg5YzJmYjljYWE2MzE2Y2Y0NmY1ZDA3MiByZWxlYXNlMjUtbWFpbnQKKzU0NDY1IGVjNmZiMDkxMDM5YjQ1M2MwYzBlOTIxZmVhNDZlYzdmMWYxMGJkY2QgbGVnYWN5LXRydW5rCis1NDQ2NiA1MGE2YjMzYzlkMmM1YzA3MTMxYTA5YzFmODc1N2NhNjY2ZTliMTIzIHJlbGVhc2UyNS1tYWludAorNTQ0NjggOWQwYzA1NDExNzM0ODMxNDAwOWU1ODk4MTU0MDIxZTg0OTRlODNiYSBsZWdhY3ktdHJ1bmsKKzU0NDY5IDdmMjliZTFjZWZiYTEyNTYzNDA4MWMzMTBiZGUyYTA4Mzk3NGU1NmEgcDN5aworNTQ0NzAgZTEyYzUwNGU0NjZiNWI2ZTlmMmM4NjBiYzcwNzIwYmJlM2JiNzZlZiBwM3lrCis1NDQ3MiBmMjlmMWE4Yjc4NjkyZDFjZmYxOTM2ZTBhMDQyMDIwYTY4NTUzOGJjIHAzeWsKKzU0NDc4IDg4MTI3MTg2NjllMTk3OTIyMTNjZWE2ODY4ZjMzNGM0NGUwMzdiYTkgcDN5aworNTQ0NzkgYjc1MmExZTA5NDRiNDM2MDhlYjM4MDE5NGVkNmZjNjQ4NmMwNmU1YiBsZWdhY3ktdHJ1bmsKKzU0NDgwIDljZjIyYzVlZWUzZDdmYTAwMDEwMjIzODBhZjdmMzljY2EwMTg2M2IgbGVnYWN5LXRydW5rCis1NDQ4MSAwOGQxNjE4M2E5YzE1MDUyMmFlNmFlN2MwZjE2YTViY2Y2NTQ3ZmI4IHJlbGVhc2UyNS1tYWludAorNTQ0ODIgMWRjNGM0Y2UyZGI5ZmYwMjBmMmI5MjAzOTlmNDY4NzhjOGFiMTIwNCBsZWdhY3ktdHJ1bmsKKzU0NDgzIGQxNmFiZTVjOTJkZWJmNTU1MTZlOTBhZTRmNTkzY2FmNThhMGM5N2YgbGVnYWN5LXRydW5rCis1NDQ4NCA4NTJjOTg5NmZlOTIzNjUxYWFlOGZkNTYwMDQ3ZjdmYmMxMGEzNjAzIHJlbGVhc2UyNS1tYWludAorNTQ0ODUgNDU5ZTM2YjJlYTQ1MWZjZGUyMjBmYzBmYTI2M2I2ZDVmYzg1ZWQ2MSBsZWdhY3ktdHJ1bmsKKzU0NDg2IDViNzExNjMyY2FlMTMyYWI4ZmRjM2Q1ZTViNTJiZTRiZGZhOTc3NzcgcmVsZWFzZTI1LW1haW50Cis1NDQ4NyBjYjZlYjEzMmFjY2YyNjY4OTRmMGIxZGYyYWJkOGU3Y2ViYTYyY2QxIGxlZ2FjeS10cnVuaworNTQ0ODggNzM5M2M3MTBkNGJiYmVkZDlhMjA3ZTJlNjkyZTE5NDI3NDEwZTRjZCByZWxlYXNlMjUtbWFpbnQKKzU0NDg5IGU1NWJmYjFhYzFlN2NjYWRlYTA2MzZhZDg5Mjk3NmMxZDQ2MTRjZGIgbGVnYWN5LXRydW5rCis1NDQ5MCA1YmQ5NjYzNjIwYmM5NzhhMTI3OTcyYTdjZTdhYmM2ZjE2NDdiYmRiIGxlZ2FjeS10cnVuaworNTQ0OTEgYjFlOGJmZGZlNGI3OTVhMDJkZWU2Yzc4NWQxNGQ5NDAxNGZjOWVjMCBsZWdhY3ktdHJ1bmsKKzU0NDkyIGNjYzQ0N2E2ZDkxNjQ4ZjcxMTYyMTE1ZjQ1ZDBhZDc3OTlhZGVjYjEgbGVnYWN5LXRydW5rCis1NDQ5MyBkMjVmNzc1NzQ4NjYzMWU4NDRiMWE0ZjUwZTk3MmUwMTRhOWIzOWEwIHAzeWsKKzU0NDk1IDE1YTdlMGI3ZTQyNTZiNWM5MGY4YzIyNThhZGVkNjlmY2RhNTcwMTMgbGVnYWN5LXRydW5rCis1NDQ5NiBmODg5ZjY1YTQ4NjFiZWI1ZmMwMTkxN2NjMmQ1YWE5NTY1M2Q1NGEwIHJlbGVhc2UyNS1tYWludAorNTQ0OTcgNDA4ZGZjN2UzMDE4NGMyMTVhMDYzODRhMWQ1OWY4MWM2M2M0YjQzNSByZWxlYXNlMjUtbWFpbnQKKzU0NTAyIGQ0MjhlMjFkNmVhZjU4MDY0ZWY0Y2FhZjcyM2Q2Zjc1YzY3OTZmMWYgcDN5aworNTQ1MTAgYmZjNGU4MDQ2MTAyMzhiOGIwMGMzOTJlM2RhY2IyNzM2MzEzZjJiMyBwM3lrCis1NDUyNCBhY2Y5YTU1Yzg4NWQ3OTEyNzY5ZTY5Y2M2ODJkOTIzMTJiYThlZDJiIGxlZ2FjeS10cnVuaworNTQ1MjUgNTJlMmZjZDUzYWQzMzk2NjNlZWJkYWZmY2IxMzliYjU4MDNmMTg0YyByZWxlYXNlMjUtbWFpbnQKKzU0NTMyIDE3NTdmODBiNWZkYmFlNDc5ZGRmNjA0M2I3MDk5Mzk3NWI2YmY1MjMgcmVsZWFzZTI1LW1haW50Cis1NDUzMyBhZmIxYzZjYjJjODg0MjI5MTRlNjhhZmEwMWJkMGU4NWNjZDlmOTRmIGxlZ2FjeS10cnVuaworNTQ1MzcgZmUxODQyYjQ4YjY2ZmZlYzhhNjk4NjQ4ZmFhZTcyZmExMDIwZjQwYSByZWxlYXNlMjUtbWFpbnQKKzU0NTM4IDQyZWI1YmI3NzY2MTU3YWYzNTBiYTU4MDIzYThjNGRmZThmMjZkODcgbGVnYWN5LXRydW5rCis1NDUzOSA4ZGViY2UyYzRmYjFiNGU4NzI5NGI1YzZhMzY1OTI0ZTY2OGVlMzY5IGxlZ2FjeS10cnVuaworNTQ1NDAgNTFmYmYyYTc1NTQ4YjFhNjQwMDg3ODA3NmEwNzVmYzAxNTRlNDFlOCBsZWdhY3ktdHJ1bmsKKzU0NTQxIDhmMWM5ZThlZmJiYmZkMTlmOGYyOWJkMWQ1NTNkZGM2YjM5ZjQzODggbGVnYWN5LXRydW5rCis1NDU0MiBkODc0ODY3M2ZkOWY5YTVlYWE2YjdlNzkxZWJjNjEwZTViNWI3OWExIHJlbGVhc2UyNS1tYWludAorNTQ1NDMgMDI1NzRmNDg1YjE1YzNlYmQ5ZmMxZDYyYjBlOTk5YmM2ZjU5ZmJmZiBsZWdhY3ktdHJ1bmsKKzU0NTQ0IDBlYTU1OTVkNzVkYWQ4YTNhMzM1MWExMjBjYzk1ZjEyOGUwOTc1MTMgcmVsZWFzZTI1LW1haW50Cis1NDU0NSAxMmM3MDU1ODA3NGU3Y2QwZWIzMjk3MzVlNDFiMTVlNzJmNWQwODVmIGxlZ2FjeS10cnVuaworNTQ1NDYgYTczYWEwYjgyMWNhNTg4NGNiM2YwNjI1ZTI0OGVmZDJjYjhjYWEzOSBsZWdhY3ktdHJ1bmsKKzU0NTQ3IDNiNTZlN2U4OTQ3MDJlMGVjMGRjMDI1ZTI1YTU0MTc5Y2U5M2VlMmMgbGVnYWN5LXRydW5rCis1NDU1MyA3NGQyOWI2MzU0MTZiODlhYmM1MGNhY2JkMGE1MDJhYjczYTAzNzJhIGxlZ2FjeS10cnVuaworNTQ1NTQgM2ZmNmQzZmE4MTIyOWI5MGU2MmIzOWZkYzYxOGMyMTI4OWEwZWNmMSByZWxlYXNlMjUtbWFpbnQKKzU0NTU1IDE4OTk1YmQ4YmM4YjNhYTZiOTU4YzhlYjNkYTgxOWNlMjY2MWYzYmYgbGVnYWN5LXRydW5rCis1NDU1NiAxYzNlMGQyYzM2ZGM5NzYyM2Y5YThjYzFmNTNmY2U3Y2NjZTA2ODk0IGxlZ2FjeS10cnVuaworNTQ1NTcgZWY3MGNkNGRiYTUwYjY1NzRhZDFhNWI3MTFkZTE1NWVjNGE1NTk3MiBwM3lrCis1NDU1OSAzOGEzZGEwMjZkNWU1NzQzZGU2N2E1ZWQ4YjM1OTIzNDNkYzA1MDU1IGxlZ2FjeS10cnVuaworNTQ1NjAgZTkzOGU5ZWY0MzRiODJlNjFmOGI4NWNlMDMyMjNkMjcwYWI5MDQ4NCByZWxlYXNlMjUtbWFpbnQKKzU0NTY1IDMyZjcyZTU3NjE4Y2MxNWIyZWY2MTJjZDQ4Yjg2YzFmNjMzZjI4OGIgbGVnYWN5LXRydW5rCis1NDU2NiA4ZmM2Mzk2ZjA3NmE1ZWNiYjIxYTUzYzU4ZjljODk1NzZkYTNmYmQzIGxlZ2FjeS10cnVuaworNTQ1NjcgNjUwZWUxNzlmM2NlYzIwYTdiYWU2ZGZmMjI0NGEzOGEzYTVhMjMxYiBsZWdhY3ktdHJ1bmsKKzU0NTY4IDgyNThmMjVkNDNkNzk2NDkwMzRlNWYzNmY1ZDcxYmFiZGMxMzkwZmQgbGVnYWN5LXRydW5rCis1NDU3MCAzYzA5MTNiNjVlOGQ2ZDU1ZTdkNjE0ZjlkOGQzOTljZDk2YWRkNmFjIGxlZ2FjeS10cnVuaworNTQ1NzIgZWIyNWM4ZTJiNGExZWJlMjQ2YTJlNjRhYmY2MjNiMjk0ZjJmMTEyYyBsZWdhY3ktdHJ1bmsKKzU0NTczIGEwN2Y5OGNmZmJkZmVmOTUxMzYyNjVlMWQ2NGVkZWFkYjhkYTlkZDkgbGVnYWN5LXRydW5rCis1NDU4MCAyYmUxMzMwMTNiNzFjYWIyODNlZjQwOTNkNzdjYWQ1NGU4ODFmMzcyIGxlZ2FjeS10cnVuaworNTQ1ODEgOGJlNzQ0ZDVjNTY3Mzg5MjM1NWJjY2QwZjRkODQ2ZTRmYTIwZmQ0MCBsZWdhY3ktdHJ1bmsKKzU0NTgyIDAzZDVkYjgzMjVmNDExYTZiNzgzYTBhNmQ5OWIzZGU3NmUyMzI0Y2IgbGVnYWN5LXRydW5rCis1NDU4MyBhMzFiMGIxOGNhYzYyZDhmZTM3MzVmNDVjMjE3YzA3NGJjYWVhZmFiIHAzeWsKKzU0NTg1IDY1MzI2YTM4MTVmNzYwYWU4ODc0MTk5OWU0NzBhODJmZDJmZmJkMzQgbGVnYWN5LXRydW5rCis1NDU4NiBlNDg5M2VlOWE4ODU3OTY0MDA1NmY0MDIxNGMwMWFiYTFlYzZmMDdkIGxlZ2FjeS10cnVuaworNTQ1ODcgNTA5NWFmZWUwODBmMTAwOWE1ODI5YzhhZDc0MDdlNzNhZGMyNjY4OCBwM3lrCis1NDU4OCA4MzRkYTUyZWIyYTRlYmU2ZjgwZTA1OWQxMTNhY2YxYjA0OGQzMjhhIHAzeWsKKzU0NTkyIDQ1YTI3NjFjOWIxNmNlM2IzZTQ3YjNlOGQ5YmY4ZTkyZDBhMmYyOWUgcDN5aworNTQ1OTQgZDE0NGY4MTU3NGMwODVkZTE1YjgyOTFjMGIwMGJmNWJjY2RhYjcyMiBsZWdhY3ktdHJ1bmsKKzU0NTk1IGQ0MTZkOTcxNzE4MTViYTYyOGU0NTcxMTVhYTI0M2QxZmQ2YmI4NTUgYW1rLW1haWxib3gKKzU0NTk2IDNlNmQwMzIxN2EwMmIwNTk5ZjY3ZTNhMzk2OGM0ZDRjZjQzODFjYjkgYW1rLW1haWxib3gKKzU0NTk3IDQ2YWQyMTkzOTY4ZWZhN2EyOGZjYzU4ZDA2ZmM3MzYwMDQzM2RkODcgYW1rLW1haWxib3gKKzU0NTk4IDczMDU0NWYyNDA4NmRkOTgxOTM3NjU4ZjFjZDE3MDBmNzJlYTA4MWQgYW1rLW1haWxib3gKKzU0NTk5IDJkMjk2NjU2NzllNjc0NjYwMzQ2NTI0NTM2YTNiNGVkMjA1MWNiM2QgbGVnYWN5LXRydW5rCis1NDYwMCBlZmRjZThkOGRiOTkwMDI4YTQxMmRjNzcxOGU4NDUzMGFiZjExOGFiIHAzeWsKKzU0NjAxIGY5ZGZiYjVkMzVjMmYzMmU2MjBmNGQ0MjhhN2ExY2Y1Y2E2ODBjODIgcDN5aworNTQ2MDIgYjg5N2I3N2EwMDRmN2E1OGQ4NjcyMGU5MjUyMzIxOWFlZjAzZjQ1MyBwM3lrCis1NDYwMyAzOWU0Mzg2ZDcxZjY1MjVhYjY1NDA3ODM3M2E0NTY3ZmEyOTgwZWRmIGxlZ2FjeS10cnVuaworNTQ2MDQgZjU3ZThlMzI1NDc1ZWM1MDY2MzhiMDQ2NTMwZTkzNTQ5NWRkY2NkZiBsZWdhY3ktdHJ1bmsKKzU0NjA1IDVhOGNhOWRkODlkYjM0N2NmZTI4N2ZlNWQ5M2UwNmY2ZjcyMWEzNmUgbGVnYWN5LXRydW5rCis1NDYwNiBlMzM0OWQ0MTI2ODFlZTZmMGY0MTgyYjFlZmVjZDA1YmNkOTcyZWVkIGxlZ2FjeS10cnVuaworNTQ2MDcgZmEyMTgxYmQyNzA0OWJkOGZhM2M5MTI0MjQ0ZjlkYmM4YzZiZWM1NSByZWxlYXNlMjUtbWFpbnQKKzU0NjA4IDNmZDhmMDY1NzdmZmY5YTUxMDcyMGE5OGNlMmMyNzYwNjVhMDIzMzEgbGVnYWN5LXRydW5rCis1NDYwOSA1MTllNzJkNjMwZDIwODczODk2ZTZlNGQ2N2ExYTg3MTcwZjUwOTVmIHAzeWsKKzU0NjEwIDg4YzJhYzU5MDQ0MWMyZTUzY2M2MDY3OTRjZjQ4MTI3MDQyZjM5MGQgcDN5aworNTQ2MTMgY2NkYzViM2I5YjExN2FjOWRhYjRlZGEwODlkZjRkYTNhNzZjYzEyYyBsZWdhY3ktdHJ1bmsKKzU0NjE0IDM3OGIyZjQ3ZTgwOGY3MTMxMWEwNmFlMTRkZmNkYjRkNjhmNjkxY2EgbGVnYWN5LXRydW5rCis1NDYxNSA2ZjllNjkzZDc2YTE4NDg0OGE0ZmMyZDk2ODQ0MmViZTQ4NWFmYWFmIGxlZ2FjeS10cnVuaworNTQ2MTcgOGUzYzdhNWFjYmNkZjAwMTQ3ZjIzYmEyMGIzMjRlYTYxYjc5NTczMCBsZWdhY3ktdHJ1bmsKKzU0NjE4IDgzZTFiMDYxMTcxNDZjNmRmODdiMWEwYTExZjNhODQzMWE5YTU1M2MgbGVnYWN5LXRydW5rCis1NDYxOSA0ZTYwZTNhNjBmNTA0Y2IzYzFiZDM4YjYxZDA4YmY1MDE1N2RhNzFiIGxlZ2FjeS10cnVuaworNTQ2MjAgYTUwNzVhNTI3M2RmNzhkNGIxOTc4NDQ3MjgxZjJlYWNlNDBjNWQ2MiBsZWdhY3ktdHJ1bmsKKzU0NjIxIGNkYjI1Nzk4Y2YwYmEwNWE0ZGQ1YmE4ZWYyMDljN2ZiMjRiYTkyYzQgYW1rLW1haWxib3gKKzU0NjIyIDU4NDI3ZTFlNTFiZGM2MDY4OWZkNDhkN2E4MWI5M2M4YjVkZWJhYzEgcmVsZWFzZTI1LW1haW50Cis1NDYyMyBkYzZlOWY3OWNjNGFmYmZjNjgwNGE2Y2MwOGQ4ZWQ3OTYyMDA2MWJlIGxlZ2FjeS10cnVuaworNTQ2MjQgNTAyNjMyM2Q5OTI4ODMzNDYzNTg5OTE1NDdkZWZiYTY2NjQyOWRhMyBsZWdhY3ktdHJ1bmsKKzU0NjI1IDU1ZWNjM2E0NTY4NjYzODcyYTc5NTM3YTZmYjVkOWQ3N2MzYWQyMTUgbGVnYWN5LXRydW5rCis1NDYyOSBjMWY2N2UxZWVlNThiNjE5MzEyNzkwNjE1M2U4ZmM5OWYxMjQzZWU4IGxlZ2FjeS10cnVuaworNTQ2MzAgMzhhODYxMTgxZmRkNThjMzVkOWUzODQzMWY5NDBhOWRjMDdkMjNiZiBsZWdhY3ktdHJ1bmsKKzU0NjMxIDQxZGIzZjMwYTNmOWYwZDFjMTFjNjEwZDJmMWFhNThjN2I0MTY1ZWMgbGVnYWN5LXRydW5rCis1NDYzMiBkYjllYWRjMDc4MjY0MjM2MWJmNDYzNzgzYTk2Njk3YzVjZDA1ZjBmIGxlZ2FjeS10cnVuaworNTQ2MzMgZjg2NTU3ZTUwM2YzYTdkMTNlYWZjYWRmMDA2NjNjMWYxNTU4YzRlYiBsZWdhY3ktdHJ1bmsKKzU0NjM0IDkzNDc4NzQ0MTAzODc5YTg1YjQzMWIyMzkzMjQ1YTY2MjkwYTY3MzIgbGVnYWN5LXRydW5rCis1NDYzNSBjMmJmM2Q2NDZlZmZhMmIzMjkwMGY1MzNhOWQ3OWM0MzhhZGI2OGExIHJlbGVhc2UyNS1tYWludAorNTQ2MzYgMmNlOGU4MDUzOWNmNzkxNjNiZGFhMDY1NWE0ZDVlMGRiY2I0OTQ1OCByZWxlYXNlMjUtbWFpbnQKKzU0NjM3IGZjN2ZiY2YyYWU1MTc3YWZkZjI1N2NkYTYzYWQ0MjgyMmE4ZWY4ZDEgbGVnYWN5LXRydW5rCis1NDY0MSBmMjE5YmI3ZTc0YzkyMTcyYThhOWIzNDBiZTVlNTY3ZDFmZmUyODk1IHJlbGVhc2UyNS1tYWludAorNTQ2NDQgN2RlZTdmN2QyOWYwOGM5ZTgwMzdiYTMwZTI3MGY0YmU0ZWRiNDhhMiBsZWdhY3ktdHJ1bmsKKzU0NjQ1IDIyMTE5NDI0OWZhODZlM2M1ZDEzMTZiMWI2OTgzZWU0ZDM0ZjRhMjQgcmVsZWFzZTI1LW1haW50Cis1NDY0NiBiNWI3NTBjZjg1YzIwOTU2ZTZiZTZmYzcyNTNiOGEyMDcyZmY2ZjI5IGxlZ2FjeS10cnVuaworNTQ2NDcgNjk2YTY2NmRmZTYxNDE2OWU2NTdiZjQ4MDI1ZWEyOWU5OGM4ODAyMSBsZWdhY3ktdHJ1bmsKKzU0NjQ5IGVhNmYyYzVkMjc0OTJmMmM1NWI1OTc3MzA4MjUxYTE5NjZiYzRhZjMgbGVnYWN5LXRydW5rCis1NDY1MCBlOTVkMmJjZmViNDYzMWU2MzJhMDNmNDQwNTA5ZGVjZWZhZmUzYWNjIGxlZ2FjeS10cnVuaworNTQ2NTEgYWNkYjRmM2MzZDYzMjJhM2E5N2I5MDEwYTJkM2M1NzU5OTg0ODBjOCBsZWdhY3ktdHJ1bmsKKzU0NjUyIDFhNWRhMDc4YzQzNWYyZjc1NTgwMDViZDAzZmUyYzM3OTgyMmNiODYgbGVnYWN5LXRydW5rCis1NDY1MyA5MGM0YzNmMDQyMDU2YWZiZWRiZTQ0NjBhOWRjOTBlNDJjOWNmZDc2IGxlZ2FjeS10cnVuaworNTQ2NTQgMzViZGM2MWFjOGVhZGU5ZjJiZjA0ZWI5NDkyNTM2MmU3YTcxMmMwMSBsZWdhY3ktdHJ1bmsKKzU0NjU1IDQ3ZDA1ZjFhZWJkZGZiZGMyZTAwZGM4NWU1MmNjZDUyYTcwMWYzYjEgbGVnYWN5LXRydW5rCis1NDY1NyA4MWU1OGYwMTAxZGI3YTEyMTRlOTEwNTUwNzJmOGFjMmZkMTA0YmYxIHJlbGVhc2UyNS1tYWludAorNTQ2NTggZjc2NGE3NTUyMTYyZWZjMzA5MzhiN2VkODhlNTFhY2RjMzFiY2E3YSBsZWdhY3ktdHJ1bmsKKzU0NjYwIDEyZmYyMDk0OGEwMjI1NzM3YzUyNGRkYTcyMjVmYWMzNzFiMzU3ODEgYW1rLW1haWxib3gKKzU0NjYxIDY3NjBmMzhlOWVkNjc2MWJkZjY4YWE5MTAwNDg4ZGMwZWNhOTYxMzIgYW1rLW1haWxib3gKKzU0NjYyIDZhM2RkMWM0YTdkZjAxNDE1NTQxYWQ5M2JjYTk2ZjczYWMyNmMzMGUgcmVsZWFzZTI1LW1haW50Cis1NDY2MyA0YTAzODYwYWUwOGI1NzA3ZGVmOGMxNjhmNzFlZjlhZWE2OTYxZDQyIGxlZ2FjeS10cnVuaworNTQ2NjQgZWY1ZDNlNTM5Mzg0NzIyMDVjZWVmZTQwYWJiYzFjNDA0YWMzNWJiNyBsZWdhY3ktdHJ1bmsKKzU0NjY1IDk5YmYxNDU1NThkMzViMjU1OWM4ZTc3MmU3MWIzMjc1MTkxMTRjMDEgcmVsZWFzZTI1LW1haW50Cis1NDY2NiA0OGQ4ZDVkMzE3YWVlM2FhMmNjNjY0OGVjZGU2MWQ0MDY5NWE3MTQzIGxlZ2FjeS10cnVuaworNTQ2NjcgMzQzZWVmMzQyNzc3M2JlMDkwMjMyMGYzZGI5MTM1NmViNTFmMjVlOCByZWxlYXNlMjUtbWFpbnQKKzU0NjY4IGU2ODViZmE2YjRlYWI4NzUwMjRkNDIxNzViZDU0MDgzZjkwYTY2ZDEgbGVnYWN5LXRydW5rCis1NDY2OSBmNzFmZWVjN2Q1NDc4OWY5NGEzZWU5OWRmOWUzNzlmZDU0NmY1NTU4IGxlZ2FjeS10cnVuaworNTQ2NzAgODkwYmI5MDAwY2U1NTUzM2ZhNmY1NTczM2ZiNjBhYWUyYTgxMGIwYiByZWxlYXNlMjUtbWFpbnQKKzU0NjcxIDIyYTE2N2M0Njc4YzJhODVlZjdiYTZkZDk4NDhjNDc4YTdlYzNkMDMgbGVnYWN5LXRydW5rCis1NDY3MiA4NTExMmRkNTAwNTk1ZWUyMzNkZjUzMzZjYTYyMTliYmE0NjkxZDYyIGxlZ2FjeS10cnVuaworNTQ2NzMgY2ZhYzY0YTAyYTNkODNlMTYzNDQ0YTFkY2NlMjczNjNhMDllNDZlYSBsZWdhY3ktdHJ1bmsKKzU0Njc0IGM3MzgxODA0NDQ3YmMzZDQxNGIwZjkzM2M0MGE0ZTQ2Mzc5ODc0YzQgbGVnYWN5LXRydW5rCis1NDY3NSBhYzI1NWE0MmVjMGUxYTkxNDMyZmFkYzFhOWNkZDdmZDM1OTMxNmNjIGxlZ2FjeS10cnVuaworNTQ2NzYgZDQxZDFiYTIwOWM5NDJhZTA3MWE2NzUyYjNiNDExYzIwYjgzMGE0NCBsZWdhY3ktdHJ1bmsKKzU0Njc3IGNiNmNjZTRkNDIzMmJmNDI4ZDI0MGRjYzVlZGU3ZWQxODAxNDc1ZmYgbGVnYWN5LXRydW5rCis1NDY3OCBlMWFiMjVmZDViYWQ4MTQ1NWY0Yzk0Yzg0YmUxMzQ0M2Q0NmJiN2FkIGxlZ2FjeS10cnVuaworNTQ2ODEgZGQ3YzY5YmQwYzUyYTEzNWIzMTM2NzQzNWE3MzkyZjE4OWM0MjMxMiBsZWdhY3ktdHJ1bmsKKzU0NjgyIGU3Zjc4YTM3YWU1MGIwYjlmMjkxMzM4YjFlOGM5MTU2YWM3OGUwMTIgbGVnYWN5LXRydW5rCis1NDY4MyBiN2UzNzhlOWQwMmQ1NWMzZThkYjJjZGY5ZGJjODM2YWEyYmI1MTJiIGxlZ2FjeS10cnVuaworNTQ2ODQgNTg2YTdlODc3NTAwZTIwZWRkYzI2ZTVhN2ZkNWNmOTUwM2RhYzQwNCBsZWdhY3ktdHJ1bmsKKzU0Njg1IGQ4Y2Q4OGY5MzA5ODBkZTBmODZlY2IwNTM0YTRjMDJhYjkyNDBiZDggbGVnYWN5LXRydW5rCis1NDY4NiBiMDAxYjY1NDc4ZmFiZTk4MzYxMDgwNGFkODk5MzkyNTE3ZmZmZjI5IHJlbGVhc2UyNS1tYWludAorNTQ2ODcgNDMyNTAwMTgyODVjMmJiMjE5OTE4MmNjMTRhMTBjNmFjOGMyOGNjNSBsZWdhY3ktdHJ1bmsKKzU0Njg4IDcxMmExNWVmY2YxOWI3MzY5MTJkM2VhZjAwZWEzYmU2NGFmZWRjMDggbGVnYWN5LXRydW5rCis1NDY4OSA1MTJmNTZhZmE0YTA1MTNlNzBkNDA2MDUwY2E4NzIzYmI1YzgwMWI2IGxlZ2FjeS10cnVuaworNTQ2OTAgNGM3ZWJjMzk3ZDk0N2M3MTI2ZDc2YmRiYTIwZDdlYTNjNDRmMjMzZCByZWxlYXNlMjUtbWFpbnQKKzU0NjkxIDgxMjAyN2YxZWVhNTM1YTNhMzE5MWQ3ZTBlY2Q5YWZhZjI3ZjM4YzMgcmVsZWFzZTI1LW1haW50Cis1NDY5MiAyOGFlYzEzNThmNTk0ZTE0YmY3YmU2ZDg2YjBkYWI1MjUxNWZjMmQ2IHJlbGVhc2UyNS1tYWludAorNTQ2OTMgNDc3N2M0MDA3YjViMTk0NDIzOTUzZDQxYjFlNWU2YWRhYWJhNmM1ZCByZWxlYXNlMjUtbWFpbnQKKzU0Njk0IDgxNzBkNDRkZDkwNDg4ZGUwMjc4ZTUxMWMwMzdkYjMxYjI5ZGM1YTYgcmVsZWFzZTI1LW1haW50Cis1NDY5NSA4MGZmNzVmYTI3NTRlYjBmOGI0NWMwNDcyZTRiZjExN2Q2MWMxYzQ1IGxlZ2FjeS10cnVuaworNTQ2OTcgOWE1MGUyYjZiNjg1NzQ3ZjhmOTA1NzU0YzkyN2MxYjg1YjZmOWE0MiBsZWdhY3ktdHJ1bmsKKzU0Njk4IGVhNmZiZjQwNGMzNGQ5NjMxYjgzMDc0Y2E0MTZjZWVhZDdiYThlZmEgbGVnYWN5LXRydW5rCis1NDY5OSA1ODFkMTI3ZTgyMmI3MTk0NmUxNjRlYzg3YjFhMTU2NjkxYmQzNWVhIGxlZ2FjeS10cnVuaworNTQ3MDEgOTEyMDI4MTI0MWI4MmNlYzEwMWVhZGNhNWE2OWI0YzQ3MTUxYzU3NiBwM3lrCis1NDcwMiBiYWQ1ZjgzMjgwOWZjMjk0MTkxM2U0MGZjMThkOWIwMmVhMDBjMGVhIHAzeWsKKzU0NzAzIDU4ZDQ5Y2FlODg3ZjJmOWEzZGZiZDc2MTI0MTkxOGRmYTUxYzdkNjUgcDN5aworNTQ3MDQgM2IxMzk2YjAxMjM5MzgyMDI5MGZjMzA1MDhlMTNlMTQ4ZjQ5YWUxNiBsZWdhY3ktdHJ1bmsKKzU0NzA1IDIzNDg2OWRkMjc4NGVkMGY2ZmZiYmFjYjJhNTA5OWFlMzI4Zjk1YmYgbGVnYWN5LXRydW5rCis1NDcwNiA5NDA4ZGNkM2NlODhmZGYwMmYxYmY4NzQ0MTdhNzFiMjNjOTc2ZjY1IGxlZ2FjeS10cnVuaworNTQ3MDcgYzdiODMwYzg2ZjQyYmJkMzgxY2ZmNjJmMTkyYzg1NDQyNzAwZjhiNSBsZWdhY3ktdHJ1bmsKKzU0NzA4IDAyMGZkNmRlNjUyNWRhMzRjMDZiMDFlMmVjZjE3MTkwZjJmODU2ZmQgcDN5aworNTQ3MDkgYzU2NjAwNTViNDI1ZGRiYWFkNmZhNGI3OTQ4ZWQxNzBlYzA2MmNmNiBwM3lrCis1NDcxMCBkOGIxNDk5NGQ4NzBiNjhlNGQwYjc1OWRmMTIzNmM4ZjgzYjVjYWY2IHAzeWsKKzU0NzExIDgwZjVlZTIxZTU0NTU4N2RkNTBiZWYzY2VmMGIzMjg1ODRkYzM2NzcgbGVnYWN5LXRydW5rCis1NDcxMiBjYzAwYmNlNmM1OWQzN2EzNzg0OTMwNzY1ZTE4NjE4MzYwZjczMTJmIGxlZ2FjeS10cnVuaworNTQ3MTQgYjkxMjRjMGVmMTdhMzIxOGRlNDczYzQ2Yjc4ZTY2Y2RkZDk4ZWJhYyBwM3lrCis1NDcxNSBhZjUxMWQyNDQ2MzY5M2NmNDQwZDExYzg4NjM5YmJhZGZjZDlmOTExIHAzeWsKKzU0NzE3IGUyOWZhNGExY2JkOTMxYjNmZWE3MjUzNDBlYzY3NzgyMTE3ZDlhNWQgcDN5aworNTQ3MTggYTU3MDdiZjRmNmQxNDMzOTJlZmI2MWM4YzQ5ODA5ZWFjMjZhNDk5ZCBwM3lrCis1NDcxOSAzMzkwMTVkOThiNzg2NDIyNTc3YWZmNGI1NTU1M2QwMGU5NTdkZDk3IHAzeWsKKzU0NzIwIDUyMmIzZjM1ZDBlYjdkYmI2Mzc1MzJkYTc3Zjg1ZTE2YmY1YzA1NDggcDN5aworNTQ3MjYgNGQ1MGZhZDk1NzY4MjA2MmY0NDk3NTE0MGRmOTRiNjZiZTBlZjljYyBsZWdhY3ktdHJ1bmsKKzU0NzI3IDY1NzNlYzFlNWRjMGNkZmY0YWIyMDZmN2I5OTU4NjJhYzNmZTFhNzYgbGVnYWN5LXRydW5rCis1NDcyOCBmNDM5MWFiZTViMDIzNDVmMjE1NmJjNDM1N2U1OTMzMTJjMGEyZjk2IHAzeWsKKzU0NzI5IDg1NDM5OTI5N2Y5NTdlODUyNTEyZmE1OGU1YjRiN2E4NTg5YWE5ZWEgbGVnYWN5LXRydW5rCis1NDczMCA2N2Y5MDBkMmYyZTYyMTRlYzgxMWMyNTc3ZjA2ZWZjZmU4OTNlYzU5IGxlZ2FjeS10cnVuaworNTQ3MzIgYWU0Y2VkMjhhODM5MDJiYjIxZTlmMzJlNTI2NTU3OTk1MDc5NTJjOCBsZWdhY3ktdHJ1bmsKKzU0NzMzIDRmNzcwMTYyNTRiYzg0YmY1MWZlMjUwN2JhZmYyZjY1MzQ1Zjc5MDAgcDN5aworNTQ3MzcgYzkwZDc1YTVlMTkxMTRiYzdhYWVjMmE2Y2FlZmI0NGI1ODQzNzMzZCBwM3lrCis1NDczOCBkNDEwOGFjYTg3NjQyN2E5YWJhNWViOTlkMzJjYzMyYzQ1NzA2ZmI4IHAzeWsKKzU0NzQwIGJhMzFlNzEyMTBkNDY5ZDMzNjE3ODZmODQ3MzZkODE3MzMwMGM2ZGYgcDN5aworNTQ3NDEgZTdkOTc5MTAxNDMwOGE4NzUxOWE5MzliM2I5NTBjYjg4MWM1YjY2NiBsZWdhY3ktdHJ1bmsKKzU0NzQyIDdjNjk3MmYzN2ZlMzUzMjBjYzFmYmNiYzJmNTgzYjdmZDQ1MjBiNTggcDN5aworNTQ3NDQgMDQ4NmRlYWFhZGUzZTQwZTg2YWE1ZTMxOGU2MzE2MmEwNGY4YWE4YiBwM3lrCis1NDc0NSA0NTYxZjZkYTNiN2QzOTQ3ODY4ZjU1MWZiYzdlZGVlOThlNmM2ODE5IHAzeWsKKzU0NzQ2IDQwMTEwZDA2ZTgyYWUyM2I2NzkzZTZjZDIyOWM5YTk5MTc4YjQ0NTggbGVnYWN5LXRydW5rCis1NDc0NyAxNWYzNGFkNDY4MWI4ODU0NWEzNzZhNWVlZTZmMzc2YzBlN2RmODdjIGxlZ2FjeS10cnVuaworNTQ3NDggNzNjMDE2Njk2YTgyZjg0YmVjN2M1ZDAyZjJkY2U2ODA0YzAxYjM5NyBsZWdhY3ktdHJ1bmsKKzU0NzQ5IDI2Y2JjZDc5YTE1MzEwMTU2NTAzZTQ5OWIyODE4MDdiM2EzYzJlNzggcmVsZWFzZTI1LW1haW50Cis1NDc1MCAyOGJjN2VkMjY1NzQ3MzA1YTUyNjEyNDdlNWEyMDAyZjlmZjEwNTEzIHAzeWsKKzU0NzU0IDk4MWEzMWZmMTk2NmRmMzI1OTM0OWQxZWQ3NmIwNWQxZmNlMGI3YWEgcDN5aworNTQ3NTUgMDBkOWY1MGJkYzMxYWE5NGNiMTVhMjY3MDJjNjgxYzQyMDZkYTRjNiBwM3lrCis1NDc1NiBmMzkwNzkzZTc1ZGVjM2Q5N2E4MWYwMWI2MDMyMDFmMzdkNjlhZmZhIHAzeWsKKzU0NzU3IDQ2ZDBmNDA1NzcwNWIwOTdlOWExNzA4NzFmZDAxYTViNjIxMWRkMDYgbGVnYWN5LXRydW5rCis1NDc2MCAwZGZhMmE1NjQwNzYwZTY4OGY1NDdjNGE0YzBjYWM1YzRmZjNiMDFjIGxlZ2FjeS10cnVuaworNTQ3NjEgMzY2N2QxYThjOTE2ZjFhM2RjODFhOTAzZTBjZGJmODMyNmE2N2FiYSBwM3lrCis1NDc2MiBhMDFjYjNkZjM4ZGRmMzQ3NDFiMjQ4MmRhNzNkOTk3ZWRkMjEwODRjIGxlZ2FjeS10cnVuaworNTQ3NjMgYzRmNDAzZjQ1MGVkYTY1ZTlhMjE2YzcwOWEzOTJmMDk0MGUwNDBhMiBsZWdhY3ktdHJ1bmsKKzU0NzcyIGNlZGM4ZDdkMWM3ZmViNTJiMjZmZWJlZDllY2M3OWMyNzU1NTYxNDAgbGVnYWN5LXRydW5rCis1NDc3NCA4NmM0NmRjNmE3NzRhZTk3NDVhNTA0OGU0NDI4ZjgwYWUxNzdmMTMxIHAzeWsKKzU0Nzc3IDY1Y2I2YjFmYTM5NTFmMzQ1MDgwZDFjODJhYjczN2I3OWE3NGI3ZmMgcDN5aworNTQ3ODQgYzM0ZDcwNWI4ODRlNGU5ZjA3MzM3OWI1MWZlMGFjYTJlNWZlYTVjOSBsZWdhY3ktdHJ1bmsKKzU0Nzg1IGMwYzQ0MDdkMzUzMWM2YmFmNTRjYzA4NTk0NGRmZWVjY2Y3YjkwNjMgbGVnYWN5LXRydW5rCis1NDc4NiA4NDQ3MzE0ZjUwMGE5N2NjNTVjNGZkODQ2OWFiZmFjOWZkMTAzMWI1IGxlZ2FjeS10cnVuaworNTQ3ODcgOTUzYmRlZmQ4MWZmNTU2YWU2MjFkN2ZmODZkMTE4MzI5MjRkNTI1ZCBwM3lrCis1NDc4OCAzNTY5NTg3YmVmMDY1ZWI5MDNjY2M4YjM2MjI3ZmUyOGQzN2EzNjY1IHAzeWsKKzU0Nzk3IDQ1OGM4ZGIyZTk0NjE2YTJhZjMzYzQ3NzAzNzEyYzlhODYyOWY4NjAgcDN5aworNTQ3OTggMGEzODliNDdmMTI5ZThmNmQwNmViYjhkMTJkY2VmMzgxODY4MTRiZSBwM3lrCis1NDc5OSBkMWMzZGQxODRlMzg4MmI5OTQ0Mjc0MzZlYmVhYTQ4MDllZDM2ZmRlIHAzeWsKKzU0ODAwIGUyZDdhNGMzOTM2MGE4ZjFjMTM3YjA4YTUxYTQ2ZGQ5NjZiYmUwMjkgcDN5aworNTQ4MDEgM2MzMzlkZTgwMDEwNTZiNmQyYTA3NGEyNDA5ODMxYThhNjc4ZTEyMiBwM3lrCis1NDgwMiAzNWY5ZmZjNmI1MTBmOGY5YzY2YzY2MmNmYjIyOGQ2ZWUwMzUyMDc1IHAzeWsKKzU0ODA1IGI4MjJmYmQ4NWFmZWIzYjdhYjI0Nzc0NzY1OTBkYzQyYjk3MjcxMjQgcmVsZWFzZTI1LW1haW50Cis1NDgwNiA1ZGZkMmY0YmM4MzRiNjgzMzNjNWYxOTZlMDEwODIzMzU1NTE5NDUwIHAzeWsKKzU0ODA3IDUzNGU0YzcwN2U5MWU2YmRhOGNkMzI1ODUzZjk2MTAyNWI2OTBmZWIgbGVnYWN5LXRydW5rCis1NDgwOCBiYWI5YzM4MTcwOTI2YjM3NmIxNTAwYmNjZTAzMzVhYmU2OTNlMmQyIHAzeWsKKzU0ODEyIDBkMWU0MTVlYzM2Y2NkMzY5ZTQwNmQxZGJiZTk3MTQ0MDQyMWZiOGIgbGVnYWN5LXRydW5rCis1NDgxMyA4MmYyNzkxYjdjMDIyMTY0YWYyZDgyM2I4NWJjM2Y0MDZjMjM0NGE3IHJlbGVhc2UyNS1tYWludAorNTQ4MTQgZWEzY2E0OTVmMzIxMWQzYjFlODVmNjA0MGRiMjJiZmRmODMwYjRmNiBsZWdhY3ktdHJ1bmsKKzU0ODE1IGVkODIwMjM5Zjg3ODc2MDZjZmI4NDA4Yjk0YjQyNjcwNDEzMTYzZmEgcmVsZWFzZTI1LW1haW50Cis1NDgxNiA4NDIzNzcyMDk3Yzc0YTZjYzBhZGVkODdmZmU1MzJiNDZmMzRmMzgzIGxlZ2FjeS10cnVuaworNTQ4MjUgNWY4YTg3ZmI0ZGYzMzJkOWY5YjNlNzRiZTRiYjljZTE0ZTlhZTUxYSBsZWdhY3ktdHJ1bmsKKzU0ODM1IDA2MGM3OWY2ZDkxOTY3ZmVkM2MyNzk1YzhkYTA5MWU0NGUyZjIyODggcDN5aworNTQ4MzYgZDY3YjVkOTUzYjQ1MjNiMjhiYjYxY2MwNmEyMzk1NmIzODE4OWNjYyByZWxlYXNlMjUtbWFpbnQKKzU0ODM3IGJjNzVjNTIzYjlkODE3MTY0ZTdmMWQ0NGVjM2FlM2U2MWFlMDc4ZTMgcmVsZWFzZTI1LW1haW50Cis1NDgzOCA1NjIzZTIzM2U5Y2NmZDQ3YmUzOTY3OGUxMTc3OTNhMjcyMGMxZjA2IHJlbGVhc2UyNS1tYWludAorNTQ4MzkgNDU3OWEyNzRmZDZlMmE1OWVmNmZiNDNjMWM5Nzk5YTZkYzBlOGEwYSByZWxlYXNlMjUtbWFpbnQKKzU0ODQwIDJmZTkxZDIwMWIwNTIyYzFjMzE3NTVhZDI2ZGViNmQ4N2Q1YzFkNzMgcmVsZWFzZTI1LW1haW50Cis1NDg0MSAzMWM5MjgyOGFlZmIxYjI0ZTkwMDU1YjE0OTdlMDZkOWVkZmJhMjlmIGxlZ2FjeS10cnVuaworNTQ4NDIgM2U1ZmRiOTNjOTVhN2NjMmU5ZDc2MDBjNmQ0MTUyYjM0NjdlNzU2YiBwM3lrCis1NDg0NCBjYzcwN2YxYWUwYjZlZWQzZDMyNTQyNzRjYjVmZmM1MTNlNzIxOWZlIGxlZ2FjeS10cnVuaworNTQ4NDUgYTQ5ODU5ZjQ0YzQzMGM2NTQyMDZjN2U1Y2I0OGQwMDU1ODY1MTFjOSBwM3lrCis1NDg0NiBiNWEyZTc1M2I2ODIzMWIwZDFjM2Q1NjRkODQyYjk1ZDg0MGQ1MzAyIHAzeWsKKzU0ODQ5IGUwMTE2OTY2MzY1ZTJiN2Y2ZDk4ZmE0MzZiNTM1YWRmYzA1NmRmZjMgbGVnYWN5LXRydW5rCis1NDg1MCBjMWNmZDBhZjVmNTczMjcxNDdjMzM1ZDI3ZTllOWJhODQ3YWJhNzFjIHAzeWsKKzU0ODUxIDA5MDk3MmMyMGE0NzJlOWIyZDViOWMxMTI2YjcxOGU0NTI3ZTJlZmUgcDN5aworNTQ4NTIgYTMwYWY4MzNkMzg5YjgyOGRlMzM0NWJmNDE3MzY2OThlZGI1ZmU0MCBwM3lrCis1NDg1MyA5NjU3Mzk1YzI1ZTU4YmNkZWU2MWJmZDkxOTU3MGYzNDcxNmM1YjY3IHAzeWsKKzU0ODU0IDk5MDI3YzJiM2ZkMmRlNDlhOTY3ZWJlMDA4ZGE1NDIyY2E0NDhkYTUgcDN5aworNTQ4NTUgYmVhMGE1NTkyZGIzZmRlOTdmNjlkYjJmY2MxNDUyMGQ1NWRkYjkyOSBwM3lrCis1NDg1NiBhNWU0MTA2MzllMjQ4NjM1NTgwNzFjYmQ4YmFjNGI0MmFkMjMxMWM3IHAzeWsKKzU0ODU3IDYxYzI4ZDc3OGUzNzkzMmIzOGFhYTBiZDdkMzQ2MGI0MThmMzMwOWQgcmVsZWFzZTI1LW1haW50Cis1NDg2MyA0OTBkOGMwOWFiY2I4MTQ5NTBiZTdiYjdhMjVjM2ZmMjA0N2M3ZWI1IHJlbGVhc2UyNS1tYWludAorNTQ4NjQgNGUwZTg0ZjlkMTRlMmI1ZDI4NjRiMWIzYjFlMTUyZDIwYzEyYzA1ZSByZWxlYXNlMjUtbWFpbnQKKzU0ODczIGMzMmM0YjNkYTkzZmQ0YmZmNjQxN2Q2NjQwOThjNGFhMDBlOGFhZTkgbGVnYWN5LXRydW5rCis1NDg3NCA1ODUyN2I5YjI0MmM3ZDRiZDUxOTgwZGQ1YTEwYTExYWI2ZWJlOTc0IGxlZ2FjeS10cnVuaworNTQ4NzUgNWE2ZDkwM2FiN2I1YmE0ZWYwZDFkOTFkMmMxYjBlZDZiMWFhNDg5YyBsZWdhY3ktdHJ1bmsKKzU0ODc2IGRhNDAzZDJiODg2YWI1OGJmMGRmMWMxMWRjNzFkZGMzZGE1ODk3ZTUgbGVnYWN5LXRydW5rCis1NDg4NCA3NmZkM2I5OGQwMDdmNmM0OGNhZTkxOWIzOWJkYzEzZTg3Y2MzZTBiIGxlZ2FjeS10cnVuaworNTQ4ODUgMTdlNDM2M2VmMmI1MzBmMWFhOWEwYmMxMjg0MThlZTYzZjdjNDRlMCByZWxlYXNlMjUtbWFpbnQKKzU0ODg2IDBmNjc1YTYyOTc3MGFhMWMyZmJhZDAwMjdjMjU1OTA3ZmIxYWM5ODEgZGVjaW1hbC1icmFuY2gKKzU0ODg5IDAxZTZkODRlMzg5MjQ1MjQ3MzIzNmYyM2VlYWVmNzRlZTk5OTM2YWUgcmVsZWFzZTI1LW1haW50Cis1NDg5MSAxODc5NWQ0OWI4ZDJhYzQwYmRkMzg4OTAzNDdiNzQwMGM0ZjQ1NDg5IGRlY2ltYWwtYnJhbmNoCis1NDg5MiBmNDM2NjRlOGExZmE0YzlmZGM0NTBkMDU3MjRlNzJkOTRlYzQxODFlIGRlY2ltYWwtYnJhbmNoCis1NDg5MyBiZmI2ZjEzMzJmYjRlMzNkNWM3MjRhNmJiZWFmNTQ2YTUwOTY2NGU0IGRlY2ltYWwtYnJhbmNoCis1NDg5NyBmNzc3ZDFkZDRkY2RkYTI1NzdkMmZhZjQyZDE0NmZiYzRhOWM5Y2EyIGJjYW5ub24tb2JqY2FwCis1NDg5OCA2YjQ2NWNjMDI1YjNmNzVjYmZiYzZlYjdkNDkxNjUzZGM4OGU2MjFhIGJjYW5ub24tb2JqY2FwCis1NDg5OSA4NGI1YWNlZDUzNTYxMzg4ZjMxMTczNDkzZDhiOTBkNWIwMzk2NTc3IGJjYW5ub24tb2JqY2FwCis1NDkwMCBhZjcyNmZiNjgxZmFhYWViODgxNjYyNGFjNjE1Y2U3ZDQ5OWEyNWVkIGJjYW5ub24tb2JqY2FwCis1NDkwMSAwYjcwODMwZWQ3NDNmY2NhZDhlYWRhMzQwNDc5ZTYxY2UzYmYxNWQ0IGJjYW5ub24tb2JqY2FwCis1NDkwMiBiYjYwYjk1Mzk4Mzk0MWU5MjI2NGIyN2UxYjNmYTI1Njc0YmVhZDQyIHJlbGVhc2UyNS1tYWludAorNTQ5MDMgOGNkMDkzMjc0ZDU3ODEwZDZkMTY4YTMzZDc4NmE1ZDNjODJkNmQ2NiByZWxlYXNlMjUtbWFpbnQKKzU0OTA0IDFjYzZiZjIzNDllNGUxZTAzY2QwNzVkNmI5Yjg4Yzk1MmYyZjUwYmYgcmVsZWFzZTI1LW1haW50Cis1NDkwNSA5YThjM2Q5ZjQwNWE4YTVmYzY3ZDE3ZmZkMzcxZmIxYTMzMjNjMzgyIHJlbGVhc2UyNS1tYWludAorNTQ5MDYgNmM2YzhhOGFmYjM4MWU4YWE0NDVkOGJmNzcwMDQ3MWFjY2M4YzU2OSByZWxlYXNlMjUtbWFpbnQKKzU0OTA3IDVhNDYxOTIxNDA0M2QwMTY2MzJlZTg0MmUwOGQ1ODgzYzY3OWEwMjggcmVsZWFzZTI1LW1haW50Cis1NDkwOCBhYTNjN2JhNTNmOWQyZjQ2OTZlMGVmMjIwZGQzMjMwMDZhNzdmOGUzIHJlbGVhc2UyNS1tYWludAorNTQ5MDkgMGE2ZTUzN2I4ZDk2YjM2N2E5NDRmNjQxZWZmMjk2YTljNzZjYzUwMiByZWxlYXNlMjUtbWFpbnQKKzU0OTEwIDBjNTAxOWFmYzU1YjVlMmFlY2Q4ZDFkNjdiNjkyNzkwZTBiM2FmZDkgcDN5aworNTQ5MTcgMWUyOGM2OGI0ZTQzZmIyZjk1NmQ4ODJiMDAzNWRhNDNmMzRiY2Q1NiBwM3lrCis1NDkxOCAyODA0ZTQ4ODYxYmE2MjdmNDg4ZGU1NjZkZjEzYjhmOWI4ZjVmZDU5IGxlZ2FjeS10cnVuaworNTQ5MTkgNDU2MzhiMzdiODJjODEzOGU1ZDY2ZjVkOWM1MDFkMzYxMDMyYjA1ZSByZWxlYXNlMjUtbWFpbnQKKzU0OTIwIDNjY2I0YzE0M2QzYjhiMjUzZWYwMTRlYWNlMWZiZTExMmI3NjkzMmUgbGVnYWN5LXRydW5rCis1NDkyMiAzYzI2NzA5MmYxMzFlNWFiNzZlNTdlNWY1YjkxYTI5ZGQxYWJmZTBkIHJlbGVhc2UyNS1tYWludAorNTQ5MjQgZjU1MjZkMmViNjU0N2IxZDhjYWJjY2EzOWFkZTI5ZmUxNTkyZWM4YyByZWxlYXNlMjUtbWFpbnQKKzU0OTI1IDU1ZDc2MWFjZGNiY2Q0MTJkOWVmMTRhY2YxOTc5Yjk3NTMwZjhhMjEgcDN5aworNTQ5MjYgMjZkZjU2NmY4MGYwZGQ3OGZjNDUwZmNjZWViZjMxMDRkNTlkMDU2MSBwM3lrCis1NDkyNyA4MTBkMzMzYTczYTEwZGRlMGY2MDNmNWZhZmI1MmFjNWFkYTBkMDBiIGxlZ2FjeS10cnVuaworNTQ5MjkgM2MxMjA1Y2E0NDJiNmJjODc2MGNkOGRkNjIyZDdhODU5ZTZhNGI0ZiBsZWdhY3ktdHJ1bmsKKzU0OTMwIGZkMGZiZmZkNmQ1MGY3ODVjZmQ2MDk5ZmRkNDAwNTdhNWZkNzE0NjYgcmVsZWFzZTI1LW1haW50Cis1NDkzMSAwOWRkYmFkZTY1ZmVkYTM5MDJjZGNlN2FjNmI2NmZiZjI5MjRlMTZmIGxlZ2FjeS10cnVuaworNTQ5MzIgOTFmMzEyMTc2ZWFmMzc4ZjA3ODVhN2YzYTk5M2FiZjA2N2YzNjViMiBsZWdhY3ktdHJ1bmsKKzU0OTMzIGY0NDYxOTM4ZjUwZTM1YmUzODY2NGY4YjFlNTQ0NTJmNjUxN2RiOTIgcmVsZWFzZTI1LW1haW50Cis1NDkzNCAyZjg3NmE1ZmZhMGQzZDRmMmM1ZmJlYjBlNmUzOWQzODU1MDllMDZmIGxlZ2FjeS10cnVuaworNTQ5MzUgZDM2YTM2MWMwNWZkMDI3ZDNiNzgxMDZiOGE1M2M0MTBlNjMxZDhkOSByZWxlYXNlMjUtbWFpbnQKKzU0OTM4IGY1OGMwZDExYTc1YzMxNTM5NmQ4MTA4ZThjODBjOWQwMjFmYjk1Y2UgbGVnYWN5LXRydW5rCis1NDkzOSA4ZDUwMThkNzUwOGEyYTdiM2E2YjE4N2E0ODkzZWZiYzY1ZTgwODE4IGxlZ2FjeS10cnVuaworNTQ5NDAgZDA1ZDk4NjRiNjNjNzllYzYxZmEzOTY2ZmZmM2I3YjVlYzRmOWYwNSByZWxlYXNlMjUtbWFpbnQKKzU0OTQxIDdlYTU5NDk3MTRhZDE1Yjg2ZTA3ZWI1N2JmZWZlOTk5ZTEzNmQzZDIgbGVnYWN5LXRydW5rCis1NDk0MiBhYmZhNzA1NWI4ZjMwOWIyNTA1YTcyNTM3ZWQ3MDg3YjVjMTVjMjVkIHJlbGVhc2UyNS1tYWludAorNTQ5NDMgN2U5OWFmODY5YzkxNzZkYjQ2ODFhYmIzNTRhOGUxZjBiYThiOWRmNyByZWxlYXNlMjUtbWFpbnQKKzU0OTQ0IDUxOWYyMzEzNDUzYjcxYmQ4MjUxZGRlYWViYzhjY2RmODA0ZjZlZjEgbGVnYWN5LXRydW5rCis1NDk0NSBiNjgyNzI0NDlkZjRiMDMxMWJkNzBjOTRhMjdhNDczNTM2YTM1NWI1IGxlZ2FjeS10cnVuaworNTQ5NDcgNzA4YzhjNWZjMTczMjM2YWNkMjhjMDhkOWY0NTc1ZTdhMTRmNzZlMiBsZWdhY3ktdHJ1bmsKKzU0OTQ4IDFiYjFmYTdmZDE3NDFiMzdiMWU3ODlhMzczNTg0MTc3OWRiNWI4ZDYgbGVnYWN5LXRydW5rCis1NDk0OSA0N2FlYjI0ODgyYmQ3OWQ1YWZiODlkN2UwNzY0OTg0NWFkNzRiMWY0IGxlZ2FjeS10cnVuaworNTQ5NTAgM2VlODQ5NzQ2YzFiZjViNTMwMGFhMTljOTIyZTgyMTU2OTNlNTI5NiByZWxlYXNlMjUtbWFpbnQKKzU0OTUxIDM3OTdiOTgwOTJjZWEyZGE4ZmRhNjkyYmQwM2U4MzVmNGIyY2M2MmIgbGVnYWN5LXRydW5rCis1NDk1MiBjYTQ4OTgwNGFlMjAxMDYzZDQyZTIyY2I0ZjA1NWI0ODc5MDU1ZTAxIHJlbGVhc2UyNS1tYWludAorNTQ5NTMgNGI5ZmE4MDkyZTgyNzEwM2JjZDFiMWIyZjVmOTY3NmNlZDQwYTgxOSBsZWdhY3ktdHJ1bmsKKzU0OTU0IDdkZWQ3ODdlNjMxMTZjYzljMjZiNjk1Y2FjYzk2ZTkyY2EwNGUyZjggcmVsZWFzZTI1LW1haW50Cis1NDk1NiA2YzRkNzY3OGFmNWUyZDE5MzdmYzhmYjE2N2Y0MWEyMTA2MWM2ZTkzIGxlZ2FjeS10cnVuaworNTQ5NTcgMTAwMmY0MmUxMGNkZjJkMmJiNWU4MWZiN2NjZGM3OTNiMWY4MzgyZCBsZWdhY3ktdHJ1bmsKKzU0OTU4IDcxYjVjMWUyYzA5YzIyMWYxMTMzMzdlYzgxYzhjODg1ZWVmMmFlZGMgbGVnYWN5LXRydW5rCis1NDk1OSAwMTk5MDRjNjQ3MTdjODY4NzM4YThkYmFkN2JiZTczOTM4ODcyYWIyIGxlZ2FjeS10cnVuaworNTQ5NjAgMWYxZmI4MTg4OGFlMjhlNWRiNWQ5MzdiOTcyM2U0NmIyM2IxMTk2NyBsZWdhY3ktdHJ1bmsKKzU0OTYxIDc2MWNlMzk0NmI4NmViODM2MzExNTBlZTRjMDc1ODAyOTEwN2FkNWQgbGVnYWN5LXRydW5rCis1NDk2MiAzZjQzZWJmYTkyZGNmMjNkNTY0YjA3YWZhYzUyZDA0ZjNlYTY2ZjVkIHJlbGVhc2UyNS1tYWludAorNTQ5NjkgMGYyOWExYTA5NzJjZGZhNDNlY2QyNDVmY2U0OTRlNzVmMDM5NDYyMiBsZWdhY3ktdHJ1bmsKKzU0OTczIGU2MTZmYTEzMGMyZmNjM2QwNTNjYmUwN2U5NDZkMTliOTg0NWZlYTMgZGVjaW1hbC1icmFuY2gKKzU0OTc0IDA3M2Q2OGMyOTA0OTM4M2IwZmMzZjU2OTYxMzRiNTI5M2Y5NDlkMmYgbGVnYWN5LXRydW5rCis1NDk3OSBiNmU4YWRlYzA1NGM3ZDdjY2QzYmVhNmQyOTk0NjQ3MThkMDE3N2I5IGxlZ2FjeS10cnVuaworNTQ5ODAgMDBiZjE0NzYwMWU0OGQxNWZlOTQyMTAxOTJiNWNmOWMyOTYxZTZkMSBwM3lrCis1NDk4MSBmNzY2M2M2NzM0YmJlNGU0MzJhZWJmNGJkYThmYWVmNmUwMDU3ZWZhIHJlbGVhc2UyNS1tYWludAorNTQ5ODIgZDlhNDg3YzJmYTk2MTYwMTA2ZGE4YzU5NGY0MzczMTk1M2Q3MzZkMSBsZWdhY3ktdHJ1bmsKKzU0OTgzIDY4NzdiNzhlODEwZDAyNDU2MjllZWZmYmRlMDk0ZjU2ZmRkMTljOGEgbGVnYWN5LXRydW5rCis1NDk4NCA4OTA1ZGY2MTc2MTNlMWMwZThiZjE4ZGZlY2Q4M2Y0ZjE3NTUyMGE0IGxlZ2FjeS10cnVuaworNTQ5ODUgN2NjMzEwMzJlMjA2M2ZlMDYxMzg0ZjhlYzVhZjNmNDcwZjBjOTRjOSBsZWdhY3ktdHJ1bmsKKzU0OTk1IDkzOGM1YWU4ZGMzMTRiZTI5ODkzZGJlMGJlM2NlNDIyMzIzODc2ZTUgbGVnYWN5LXRydW5rCis1NTAwMSAxMjY0OWE3MzRiZTYyODNlMGFiYWRmMGM3ZDk3ZTQ0YTQ0MDg5OTlmIHJlbGVhc2UyNS1tYWludAorNTUwMDIgY2M5YWZlZGVkMjNmY2ExNjcwNDA5NjE4MDg0OWFhNWM1NDY1MzhmYiBsZWdhY3ktdHJ1bmsKKzU1MDA0IGFkZmFiYzU3MzYxZDM3Yzk5OTlmYzE1ZTRiY2Q1ZmJlM2NiNWE3Y2MgcDN5aworNTUwMDUgMDYxNDVmYmM3YWI5MzE4MzQwNGZlZDZmOGM2M2FlNDMyNWYzNzgyNCBwM3lrCis1NTAwNyAyNzAwODY5OTRmNDg0ZTk2MTk1MzBjYjk5NGE4NzJiMTk2Y2JiOWE4IHB5M2stc3RydW5pCis1NTAwOCBhNmE0MzZhYWVmZGJlZWVlMjg1OGRlNTBiNzgxNDNhZDZjZjExZWMxIHJlbGVhc2UyNS1tYWludAorNTUwMTEgNzZlMzc1YWI3NTI1NzQwNjI2ODE1NmJmYzA2MzBhM2EyZmJkM2Y1MCByZWxlYXNlMjUtbWFpbnQKKzU1MDEzIDI5YWU2NjdmMzIzOTQxMTY0NzgwNmMyNzY1YTE3ZDJjNWEzMjg5OTggcHkzay1zdHJ1bmkKKzU1MDIxIGFkMWQ1NmMwNzQyMzM5NmYxYmI2ZWQ4M2Y0NDI5ODlhMGJiZjRhMjcgbGVnYWN5LXRydW5rCis1NTAyMiA1MjExNjBjOWIzNjlkMDRhOWNmOTk5NDU2NTgzYzYxNTAyOTE0OTlkIHJlbGVhc2UyNS1tYWludAorNTUwMjQgNGY4MDFhNzU4OTM2ZDQ0NjY0NDJiMTUxMmM0ZjMzNTkwNGNjODY0NiBsZWdhY3ktdHJ1bmsKKzU1MDI1IDZhNTZhZWRiZTI4MDhhM2E2Yjk4MTBhMTYyMTk3ODczZDViOWVmMjMgbGVnYWN5LXRydW5rCis1NTAyNiA4NzNkZmI1MmMzMzQ2MDZhMDliYzI3ZWFlYzk1NDJmMDVkNDgzMDZiIHJlbGVhc2UyNS1tYWludAorNTUwMjcgODJlNzk5ODNjYjBjMjk5ODQ4OWQzOGU2NzA4NWY0NDk0MDFkYmVjZCBsZWdhY3ktdHJ1bmsKKzU1MDM2IGI4NmJkNzdkM2Q0MDQwZTNkMTVkNDYzZDFhNzAwZmY4NDFiMTFhZWIgbGVnYWN5LXRydW5rCis1NTAzNyBiYzdhMDM3OWQzYjE4ZWIzYjQxNzNjNDFjNmE0MTJiZjdmYmMxMGIzIHJlbGVhc2UyNS1tYWludAorNTUwMzggODZhMjMyZWE4YmE0NWRjZWJmNGUzZTFhN2IzNGNiNjQ0MzY3ZTI2NiBsZWdhY3ktdHJ1bmsKKzU1MDM5IDAwZmU0YmIwMjkzNjRkN2ExYWUxZWVjYjYxYTFiZmI5ZTQ5NmYxMjQgcmVsZWFzZTI1LW1haW50Cis1NTA0MSAyYjJkNTdkNmNjN2ViODA1ZTU4NTk3YTM2Yjc0YjcyMTYxOTIzMmE2IGxlZ2FjeS10cnVuaworNTUwNDIgZDNkZjMxZDQ1NDU3MWJhODViYjhhNmY1ODY2YjU2MTdmNmY2MDhlMSBsZWdhY3ktdHJ1bmsKKzU1MDcwIDM3NjlhNTE5NjAzNWEzMDc1MDg0YzM4OWM3NzNjMTUwNWYwOGE2NDYgbGVnYWN5LXRydW5rCis1NTA3MiBlNTBkODJjNDE4YTcyZmU0NTFkN2ZlODgyMTczMWVhYzQ0ODIyYmE3IHJlbGVhc2UyNS1tYWludAorNTUwNzMgYTNiZjU1YTAzZjY2ZjdiYjJjNDMzZTIzODYyYWNjMjY0YzE5NmNjNSByZWxlYXNlMjUtbWFpbnQKKzU1MDc0IDM5ZTk1MzgwNTE4NDkzN2Q0YTZmZmI5NjYwMWE4NjYzYjk4OWUzZDIgcmVsZWFzZTI1LW1haW50Cis1NTA3NyBlYWIyOTVkOTNjOGU2NTA2OTMwYzI0MTYyMDE2Y2U3ZDk4MmJjYTcxIHAzeWsKKzU1MDc5IGJlYWNmNDBiNTk2MDdhNjJiZTliNjdjOThlMmJhMDk1MmNhNjg2ZjggcHkzay1zdHJ1bmkKKzU1MDgwIDk4MGZmMGIxYjk1Nzg1NTRkZmIzYTQxYTQ1NGY1NGY2Y2E0M2U3MGEgbGVnYWN5LXRydW5rCis1NTA4MSAzZDcyYzEwOTFlNWEzOWJhZWViOGE4MDg4MzBmYTgzZTI1MGMxYTkxIHJlbGVhc2UyNS1tYWludAorNTUwODMgYmM2YTBmZTMyMzUxN2VkNDgyNWU3ZTJlMmFkYWY5ZmU1ZWNkM2IwMCBsZWdhY3ktdHJ1bmsKKzU1MDg2IGQ3MDU2NTQ1N2VhYmIwNGU4Mjg0MWE1ZTE4NzBhZjBjYjQ2MjMwNmEgYmNhbm5vbi1vYmpjYXAKKzU1MDg3IDdhNGYxNzRkZjg0NDEwOTRkMzg2MjhjYmFlZjM5NWRhOWUxOTcwZWMgbGVnYWN5LXRydW5rCis1NTA5MCBhNjg0NjdjYzA2ZDNiNGEwNTJmZDJlYmUxM2UzZDgzZjk4YTU5ZjBlIGxlZ2FjeS10cnVuaworNTUwOTIgZTliZWY1YjQyMDAxNTU0ZGEwODkwZDc5MTNjODVlNDIwNDQ2MzY4ZSBsZWdhY3ktdHJ1bmsKKzU1MDkzIDI1Y2MxY2VlNWU2OTA0MWFkMDBhMjdjMmI5YTM1MTdmMjFkMjg5ZTUgbGVnYWN5LXRydW5rCis1NTA5NCA3Yjc0YTE5NzYwOWI4NjIxODYwN2E4ZjU5ZDRiNTY2YzUwMGM0ZWQyIGxlZ2FjeS10cnVuaworNTUwOTUgYzFmNmY5ODQ4YjE3Y2MxOGU3OGExNjQ4NGM1NjRjZTNhMzhjYTc2MiByZWxlYXNlMjUtbWFpbnQKKzU1MDk3IDgyNWQ5NjYzMzhlYTcwMDA2MWIzZjVmOGJkMGI2ZWY0NDkzMzc5MmQgcHkzay1zdHJ1bmkKKzU1MDk5IDM2OGZlZDlhZjc2MTc5OTExNTc3NDRhMmM3MzA4ZTYzYjZhNzRlZmIgcHkzay1zdHJ1bmkKKzU1MTAwIDE1YjgxMGUyMWZlOWE5MGI0MTRhYTM3OTlhNjQwY2E1ZDExM2IyNjMgcHkzay1zdHJ1bmkKKzU1MTAxIDliMDFkZmQwM2MyOTQ5YzBjOTY0ZDM2NjMwNTE1YzVjY2FiYmQyYWMgbGVnYWN5LXRydW5rCis1NTEwMiAzN2Q4MmJlZTdhMTYxNWNjNWFmZGNiMzI1NGJkZTQxYWEzYzA0NTliIGxlZ2FjeS10cnVuaworNTUxMDMgMWMxNzA1YmYzNmI4OGI3ZDQxYjU4MzEzMTM2ODFiY2I0YTE1MDI1YiBsZWdhY3ktdHJ1bmsKKzU1MTA0IGE4NWQ3MTUwMDllY2MxYTgwZTUzYzVlYTM1ZGJlZjJkZGU0MTUyMzMgcHkzay1zdHJ1bmkKKzU1MTA1IDFlNWEyYTJiMThlZWRiODljY2E3ZTgzMWVhNzI2NzZiZmFhODY0MmIgcHkzay1zdHJ1bmkKKzU1MTA2IGRjNWExNTY3YWY5ODRkNWU2ZmNjODljYmFiZmJmMjBhOGQyMjU4MDggcHkzay1zdHJ1bmkKKzU1MTA3IGY2ZmE0NzA4YTRkYjQ3MTFmOWM0MzZlNDIwYjA1MDQ3MWI2M2MwZDcgbGVnYWN5LXRydW5rCis1NTEwOCAyYzU0NzYzYzQ1MDQyMWQwYmYzY2FiOGEyZWVjZjc4ZGE4YmY4NDY5IHB5M2stc3RydW5pCis1NTEwOSBjZmIzZTAwMjFiM2JmOGQzMmJmYWY3NjE3YzJkODBiYmUwZjYxY2RlIHB5M2stc3RydW5pCis1NTExMCBjYjNjOTIwNjJlYzQwNWU5ZDgxODcwZWJhZGY5ZjI3OWRmZDkwYzY4IHB5M2stc3RydW5pCis1NTExMSBjYTQ0OGM2MDdiMTQwMWNlODBiNzhkYzViZGJmYjI2OGE2ZTVjYWVkIHB5M2stc3RydW5pCis1NTExMiBhMTRmZjM3MGI2M2Q5MzJiNmE1ODBjODRkZTU3ZmZlMTU4ODhjODkzIHB5M2stc3RydW5pCis1NTExMyBhYzE2YmVjZTFlNWZiN2Y1ZTRmMjExZjcwMGRkMDBiNjc1ZmI0NmQ5IHB5M2stc3RydW5pCis1NTExNCBiMzlhYmNiYmJiYmE0YjU0MmFiNWU1MjkyNTYxYzVlZWQ0ZDU4N2I1IHB5M2stc3RydW5pCis1NTExNSAxZGU1NDk0NzE3MjFjMzhhMjI4N2FkM2E5NGFhMzcyYTc2NzUzNDMxIGxlZ2FjeS10cnVuaworNTUxMTYgNDk2ODZlZDU2ZWM3ZmU4NzE3ZmJjOGUyNGUzY2ZjMzVhMTY4Zjc0ZiBweTNrLXN0cnVuaQorNTUxMTcgNWI4ZWY5NGJiODEwZmQwMjdkN2M1MGRlMTk4ZmZiMjIxM2FhMGM3MCBsZWdhY3ktdHJ1bmsKKzU1MTE4IDExNjI1MDJhMDlkYTc2YjFlZDg0OWExYjAwYTYzOTRmNGZiYTEwMmEgcHkzay1zdHJ1bmkKKzU1MTE5IGEzZTMwMDFiMzViZjBhMTVlMmViNTFkZGFlZDc2MTQ3NTBiMmYwYzYgcHkzay1zdHJ1bmkKKzU1MTIwIDdmMzZmOTZiNmM3NjU4NmY4MzgyMDQ0YTlkMDVlMjhlMTlkMGE3YzcgbGVnYWN5LXRydW5rCis1NTEyMSAwNTJiZjBkZWU2Yjg1NDcwNjQ4MDE4MGYzMDNmMzdhY2Q4YTBlNDIwIGxlZ2FjeS10cnVuaworNTUxMjIgOTJlYWQ4N2JmOTg0M2M0MWU3MWM3NzY5M2M5ZTI2YjAzMjgxMGUzYSBweTNrLXN0cnVuaQorNTUxMjMgZTc4ZTFiNjE2YzcyZmM4MmNlZmY2MTk1MmU5N2Y4ZGJmNDllZTIwNCBweTNrLXN0cnVuaQorNTUxMjQgYTczMjNjNzJiNWM3MWY5MDNhY2QyZTg5NDk0YTM1NTE3ODI3NTEyMiBkZWNpbWFsLWJyYW5jaAorNTUxMjUgYmU5MDM5YjU3NGQ5N2NlYzllZmYzMjZiYWU5ODk1ZDQ4ZGEzOGU5OSBkZWNpbWFsLWJyYW5jaAorNTUxMjcgYzQ4ZmU0ZGMzNGE5MTQyMzA2ZmE4NTYxZDBiYTNlMThmNzQ5YWM5ZiBweTNrLXN0cnVuaQorNTUxMjkgMjEzMWUwMzcyMWVmZGM5YTc3MDhiM2YzMjRlY2JjN2JkZTJiZTlkYyBsZWdhY3ktdHJ1bmsKKzU1MTMwIDUyYjk5YTkxNWZhYTVlNzk3ZDgyODgzMmFmOTFkNmM1NTIxM2QzMzggcHkzay1zdHJ1bmkKKzU1MTMxIDhiNzQzZjU1NTk2MTA4ZGM1NzkxNmFjODhkOGE1ODg5NzM0MjQ3ZjYgbGVnYWN5LXRydW5rCis1NTEzMyAwNzhiNGYyZmRmYzk0NzZhNzlhMzk1NjhhMzk2ODU2MTkxM2Q1YTQ5IGRlY2ltYWwtYnJhbmNoCis1NTEzNCAzYjU3ZjBiN2VkZGZmOTE1ZWM4NGY5YTA1MmJmMDQ4ZjBjNGQ3ZjU0IHB5M2stc3RydW5pCis1NTEzNSA5ZTFkZmM4NTU4OTA1YmRiODc4MGJlYzE5MmIxMjc2ZGE4OTYxY2Y0IGRlY2ltYWwtYnJhbmNoCis1NTEzNiBlMmIxZDAyMjJhZmVjZjI1MWQ5MWUyMzlkNGQxMTM1OTA0YmNlNzc1IGRlY2ltYWwtYnJhbmNoCis1NTEzOCBkZjQ2MDExYzU5MzYyNTZmYzQwMzUyMDZmNzg3YWMyYjk3Mzc4NmNjIGRlY2ltYWwtYnJhbmNoCis1NTEzOSA4NjgwOTcyZWQ4ZjAzNmViZjI3YjJlZWM5ZjhhM2VmNmJjNjYzNTEyIHJlbGVhc2UyNS1tYWludAorNTUxNDAgNjE1Nzk1ZDUyYjlmZDk4YTRmYTIxYzY0N2ZhYjQ0NzI2YmQ4OTRkNiBsZWdhY3ktdHJ1bmsKKzU1MTQyIGJlN2ViM2ZkMzc3NjYxMzA3MWI2ZDNjYWMzODA5ZmFmZjc0Y2EzNWYgcDN5aworNTUxNDMgMjY2ZTEyMzk0Yjk3ZDJmYjMzNGQxZWU3ZjUwYzNkZWMwZGM4YzlkMiBwM3lrCis1NTE0NCA5NDZmZDU0YjQ1N2Y1ZTQyNmFkMGU3NjAxMWNiZDE5M2MwZjllMDA3IHJlbGVhc2UyNS1tYWludAorNTUxNDYgNjFhY2ZiODMxNjMzYzhlNzJkMzM0MzhhOTNiMTE3MmYxMzAwNGExZCBweTNrLXN0cnVuaQorNTUxNDcgNmI3ZDE3ODJhNTc0OTk3MGFiZjA3ZTgyYjAyN2Y0NTJkMzRlZmY3ZSBweTNrLXN0cnVuaQorNTUxNDggODM4Y2FiMzc5Mzc2ZTdiZmEwMWZhNmI0YjkxMGMzNGQzMDUzOTYzOSBweTNrLXN0cnVuaQorNTUxNDkgMTA3YWFjYjljNTk1ODgzMWNiMjA3ZDFkNzNlYjRhMGU5NGNlZTE0MCBweTNrLXN0cnVuaQorNTUxNTAgNmJjMTU2ZDNjMDBlYzI1M2NiMWMzODEyYTU1ZTE0ZmJlOTM2MDRhYSBweTNrLXN0cnVuaQorNTUxNTEgZTI1ZGNkODc0YjgyNzk5Y2VjM2M3NGJlOTViNTI4MWIwMmNjYmQ4ZSBweTNrLXN0cnVuaQorNTUxNTIgNDZiMDBjNzNlMzJmZmI1MmZmYjFkM2Q2ZDU0MWMyNTEzNmNmM2U3YSBweTNrLXN0cnVuaQorNTUxNTMgMTQ0MGJiYjY3MTUwYTcwMWZjYTI2YTI4ZGMwOWJhOTVlMDg0NGE5YiBweTNrLXN0cnVuaQorNTUxNTQgZWE1Y2NlZTZiMjg1NGJlMmE1OGM4MzQxNjY5MmJiODAyOWU1OGJiNyBsZWdhY3ktdHJ1bmsKKzU1MTU1IDJkMzc3NDA4YTk4N2JjYzdlZDM4ZDY0ZWQ1NTg2ZjI2YWE1Yjc1NzQgcmVsZWFzZTI1LW1haW50Cis1NTE1NiA1NTRmZjI3MTQ1ZTE0YWZlYzY2NTFkMzRhY2MxYTUyNGI3NWU5NWVkIHB5M2stc3RydW5pCis1NTE1OCBmMzIwMmZlNzg1OTgxOWE0YWU2YjIzNjY3NmJiNDRmNTZkMmU3MDNiIGxlZ2FjeS10cnVuaworNTUxNjIgODcyOGNkMDEyYmQ4N2U3NjQyYmY2MWNhYjcxZDI5YmQzODQ0MzI5MiBwM3lrCis1NTE2MyBjNzkxYTVlMmUwOWU4ZmUxZDdlOTg0MDM0MTRjZmYwMjA2YjQ0ZTZlIHB5M2stc3RydW5pCis1NTE2NCAyZGNjMDVhODA5MDVmZWU0NmFlNTZhOTljZGY4ZTJjZTlhMzBjYzEzIHAzeWsKKzU1MTY1IDBjM2EzMTQ4MjA4ZTBiOTY0ZjU2NTYyNGI5MzlkOWQ1OWMwOWZiNzEgbGVnYWN5LXRydW5rCis1NTE2NiBkNGJhNjYzMjc3ZjhmYmMyNzM0N2VkZGQ4MmYyZjIzN2E4MDIyYjNjIHAzeWsKKzU1MTY3IGMxMDc1ZjA2NjUwYTc2MWViNTI5ZjBjODgzYzIwMjMyOTc2YTM4NTQgcDN5aworNTUxNjggNWQwOTY5MTY3ZjZkYjc2ZDcxZjAzMWRiN2I5MDFiNjM4M2RhZDUzYiByZWxlYXNlMjUtbWFpbnQKKzU1MTY5IDU0MTc5NTM4YTM4NzcyNTVkYzY1YThhZjVhZjhhYjY1ZTJlOTU0ZWYgbGVnYWN5LXRydW5rCis1NTE3MCA0NDMxMDJiZjU4OTUwNTQ3YWI4N2JhYmRlYTc1NWUwOWM4Yzg2YjljIHB5M2stc3RydW5pCis1NTE3MSA0MTEwMjczYTI2MTEwOWYyNDY2NzA5OGMwNzc4NGEzOWM1MzI1ODMwIHAzeWsKKzU1MTczIGJlMWU3MDhkNWQzZGYxNWI4ZjNiZmYwMTk4MWNmYzVmNDhlMTEwZTUgcmVsZWFzZTI1LW1haW50Cis1NTE3NCBhNTIzNGYzYzc1NTExZWQyYmMwZGU0MmU4Y2ZlYzJiMzYzOWVhYTRiIHJlbGVhc2UyNS1tYWludAorNTUxNzUgODQzZDBjY2IwMDk0ZGY3OGNlNzI0M2IxOTM3YTY2OGVhYTM0NmYzOCByZWxlYXNlMjUtbWFpbnQKKzU1MTc3IGZkZmRlZTE5MWE2MTJiOTRiMzMxMjRhNjQxOWVjMzEzMDc0NjQ2M2YgcmVsZWFzZTI1LW1haW50Cis1NTE3OCAyMDU4NzFjOTcxNWRiNjNjMTE3ZWJjZDBjZDk0YWZkOGRkMzQ5YWM2IHJlbGVhc2UyNS1tYWludAorNTUxNzkgYTE1M2YyMTRmYTFiODQwOGQ1NDUzNjllZTU0MGY1ZGVkOTcxYzY4NyBweTNrLXN0cnVuaQorNTUxODAgYTZlYjZhY2ZlMDRhYzJiZjMwNDQyODVhZWY1NTJjMGI3ZGZlNGJlYSBweTNrLXN0cnVuaQorNTUxODEgYzY1Njg1NTBiMWM2MTBkYzRiNWY4NzdlNTdkNDhhMmJlYjA2YjBjMSBweTNrLXN0cnVuaQorNTUxODIgOGU3YzYwYjEzNTZiNzM4M2ZiM2NjOTg0OTg0MzAxYWQ0MzZjNGU4OSBwM3lrCis1NTE4NCA5Y2M0YzNmMGI1ODA3NWE0MzgzZTIwNDJlYzNmODA2YmJlZWI3ZGU1IHB5M2stc3RydW5pCis1NTE4NSA3MDQ3MmMxNTdiYjljMDA1Mzg0ZTc4ZGI5NWRiNjZiNWIyY2U3YzIyIHB5M2stc3RydW5pCis1NTE4NiA4Zjc3Zjk2MDcxMTM4ODA1YzJmY2NkMGZiMzFmNjIwOWI1ZmE0OTU0IHAzeWsKKzU1MTg3IDZhMDE2ZjNlMDA1MTY2N2MzZTMyNDVmMWVmNzgxZDlmYThhYzU3ODUgcHkzay1zdHJ1bmkKKzU1MTg4IGM4NDAwMDk2ZDJkNzFjOGY1MzdiZDFjOGZkZDBlZmY4NWM3ZmY3OTggcHkzay1zdHJ1bmkKKzU1MTg5IGJjNmFkNjNjZDVmMWY2ZTA4NzliM2QyZTgwZWU3YTBjZDQzODc0YWEgcHkzay1zdHJ1bmkKKzU1MTkxIDJkOWU1OGM1YWQzNDNkNDQxNDQ4YjQ3MTM5MDQxZDRlNjZjNGYwYmYgcHkzay1zdHJ1bmkKKzU1MTkzIDIzYThiM2RmYmU5NTM3MTBmZGNjNjdmMDdlMDhkMTFkNzU5YTFmZWMgcHkzay1zdHJ1bmkKKzU1MTk0IDQ0ZWJhZTRmNjFjNGEyYjAwMGVjNTNlOTI0OTg1NzNmNDgzYWRmYWEgcHkzay1zdHJ1bmkKKzU1MTk1IDA1MGM5OGNkNDFjNGY3NGFjZDJjZTkzYzFiM2EwNzhjM2Y4ZTlkNmEgcHkzay1zdHJ1bmkKKzU1MTk2IDUyNTMzMzcwZjFhZDQwM2MyMzM2NjFmMmZhYjAwNTIzNjQ1OWEzYzEgcHkzay1zdHJ1bmkKKzU1MTk3IDM3MGI5MTUzM2M1M2Q4YzAwODU5NDU4ZTM4NTllOWNmNGQ5NmVkOTUgbGVnYWN5LXRydW5rCis1NTE5OCBmMGRhMWI3YjhlNWEyYWU0OWRkYjMyOWFlYzdiODFlYWY2OWYwM2Q4IGxlZ2FjeS10cnVuaworNTUxOTkgNzZlNjNlMDMzMzU2MDVkYzYzYWQ5MjRiOGU1OWVjZTY5NTE2ZmFjMiByZWxlYXNlMjUtbWFpbnQKKzU1MjAwIDVjNzI4NTM0OTcwYzFlMjYyYTc4ZGMwZWM0ODA0ODQwOWM1NGJiNzAgcmVsZWFzZTI1LW1haW50Cis1NTIwMSA3ZmU2YWZjYmQzZjJhNmE2NzZkOTAyMjg4NjZjY2NiMThmMzgzMTgwIHB5M2stc3RydW5pCis1NTIwMiA2NTBmZjhkN2NjMzgwYWExNDVlZGY2OGZhZGZmZTE2ZWJlNjFkNjVmIHB5M2stc3RydW5pCis1NTIwMyAzYTRmMDZiYzI1NGJiNWVkZGIzODg2YmU2ZGQxNTE1YWQzOTdkNjM0IHB5M2stc3RydW5pCis1NTIwNCAwMmU2OTg5ODg1MjFhOTk1Nzg1N2FlMzkyZjEyZDU4YmE4Njc3NThmIHAzeWsKKzU1MjA1IDliMTRjMWU1ODkzNjFiY2EzZjdjMmNlNzk0NjlhOTRhZTFlMjBkZWMgbGVnYWN5LXRydW5rCis1NTIwNiBkZDJkNDA3ZGNmZDBjNDdkMWUxYTAyMjBhZTU5ZTg1YzQzMThmYTRiIHJlbGVhc2UyNS1tYWludAorNTUyMDcgNDc1YzdjNTQzN2ZjNjJiODNkMGQ3MGU5ODM2ODUwYmY1ZjY4MWIzYSBweTNrLXN0cnVuaQorNTUyMDggYTM2M2NlYTMyYjliYWFhMDJiMGZjMzhiMTQzYTI1NTNmOTI1YWNhYyBweTNrLXN0cnVuaQorNTUyMDkgYTMyNDhmZWZjMGRjOGI2YWVlMDU2Yzg1NTI0NjIzNGUwOTM0ZDU3OCBweTNrLXN0cnVuaQorNTUyMTAgODVkNTFjYjhhZTVlZDg1MjdkNjM1ODZlMTc5ODM5NDMwMjlhZjE4MCBweTNrLXN0cnVuaQorNTUyMTEgNGE5NTMzZTkzNjVlMGQ5NzgxNjc0MTI5MTgzNTBjZTc3NDA0OGNkYiBweTNrLXN0cnVuaQorNTUyMTIgYjFiYmU4MDExMTUyODkzY2NjNTE4ZDY3Njg0NGVkYzI1MTE1YmI2ZSBweTNrLXN0cnVuaQorNTUyMTMgZDEyODExZGVjZjk0ZDM3ZDk5ZGVkZWU2MjE4NDkwNmE3NzkzNTE0NiBweTNrLXN0cnVuaQorNTUyMTQgNjg4ZTJiYzIwODAyNjM4YWVkNTg4MzVlYmVjYjgxN2ExNDkwMTY4ZCBweTNrLXN0cnVuaQorNTUyMTUgN2E5NmM4NjQwNTc1MWJkOWVjOTk4ZDdlZmVmMDJjY2I1ZDdlMGM5NCBweTNrLXN0cnVuaQorNTUyMTYgZGQzYWMxY2QxYzkxOTZmMzJkMTI2YWIwMzM4ZWEyYzFhYTEwZTFiNSBweTNrLXN0cnVuaQorNTUyMTcgNWYyMDI4NmIwZGE5OTM2Mjk4YjE2MTZiOGVkNGI1NTQ5MzFjMjkwMyBweTNrLXN0cnVuaQorNTUyMTggMjQ4ZGZjMWJkNDRjMDI1YmFjOTAyYmZkNzNlMTBlMTI5OTI1MThlNSBweTNrLXN0cnVuaQorNTUyMTkgMjk3NzM0ZjhhNjI3YWNkZjZlYmFkODU2ZjBiNTVhM2RkMjRlY2FjZCBweTNrLXN0cnVuaQorNTUyMjAgOTE1ZDUyNDU1ZmZjNGJmZWZjMjJiNmQzMWU3ZTkzNjA0NDk4NzkxMSBweTNrLXN0cnVuaQorNTUyMjEgYzRhOTk5M2YyY2U2Y2VhYTIwOTdmMjg2NWRhYTdkNWI5MjFiNjA0NCBwM3lrCis1NTIyMiA5OTE0NDZmZjZiMTVjMDhiMGRmMmZjY2M0ZjRhMjRkNzNhMWVlNzYyIHJlbGVhc2UyNS1tYWludAorNTUyMjMgNzc1ZDQ0YTU0Mzk5NTUwYmQ1OTFlNmExMWMyYTU0MTM1MTNjMTIwNSByZWxlYXNlMjUtbWFpbnQKKzU1MjI0IDk4NzA5MTg5ZDllMWMwMGFjOTRlNjE5YWUwYmY5OGY1OTUxYzA2ZTYgcHkzay1zdHJ1bmkKKzU1MjI1IDEwNDA1NjhmOTAyY2EyYjFiODVhYWEzNmRlZmQ3OTg1OTdhNTFmNGYgcHkzay1zdHJ1bmkKKzU1MjI2IDFkMzM0OTEyYTEwNDBkOWZlODU0ZmU0ODEwOGMwNTVlZTE0MzY5MDEgcHkzay1zdHJ1bmkKKzU1MjI3IDc1OTQ3MDllNjMxYjMzMzdlZTRiYzZmZWZmNjQ3N2UyNDg1M2FjN2IgbGVnYWN5LXRydW5rCis1NTIyOCA4YThiZjJjMDc0ZTA0ZjBiYjMyNDQ0ZWU0ODhiYjI1MGIzNWU4NTVjIHAzeWsKKzU1MjI5IGM1ZWJmOWMyMTliZTQ2NTIwNjBjNGZhMTEwMjYyZjdiN2JiMDJhMWEgcHkzay1zdHJ1bmkKKzU1MjMwIGZiNzA1ZjE4YmYzZDc2NjVmNjY4YzYwYjNiODY3ZjVlODEwNzM1ZWIgcHkzay1zdHJ1bmkKKzU1MjMxIGJhYjhhOWM3ZjQ5ZWI2MjAxNzJmYmNlNDI3NThjMjc4NWY3MjA2M2EgcHkzay1zdHJ1bmkKKzU1MjM4IGE2ZTRmMmNiZWZhOWJkMGIzNTFhZWY0YzYzMzliMTNlNTgzMjdjMGMgcDN5aworNTUyNDEgNDM2N2I3YWY3NTMxOWJkNjVmN2U3ODFiOWU5OWZlYjQwNzBlMjY3YiBsZWdhY3ktdHJ1bmsKKzU1MjQyIDhlZGQ3NDYyOTFmZWZkZWU2ZmRlYzJkODI3NzU2ZmUwZDEzZGE0YjkgbGVnYWN5LXRydW5rCis1NTI0MyAwMmQyNDg4ZmVjNjBjYTE1Y2I5YTY1YmYyYzQ1ZTdjNjc2ZTUyNDgwIHJlbGVhc2UyNS1tYWludAorNTUyNDQgY2Y5ZGQ3ZjBmNGEyMGYwMjZhMjk0N2UwYmQyNTM5NDA3OGVkYzExYyBsZWdhY3ktdHJ1bmsKKzU1MjQ1IDZjNGFhNDYxMWM4ODFkYzYyY2U1YTljNGQ2NzhlNTgyMTEwMTUwMTEgbGVnYWN5LXRydW5rCis1NTI0NiBjYmE4YzZhNWVjZjAyNjE2NzQ2OTdjN2Y1ZGY1ZTQ0ZjMxODAwMDM2IHAzeWsKKzU1MjQ3IGNmNzlmZWU4YjcxYTEwYThkNjk5YTVlMzIzMDcyZDY1ZGM4NTJkOWIgbGVnYWN5LXRydW5rCis1NTI0OCAwMTEyNzgyMWFmNzU2MTRlYTU3M2E3NzlmZjA2MGZlNzFiNzU1ZDM4IHAzeWsKKzU1MjQ5IGQyMzE2ODVlOWVhN2Q1NGEyZGM0ZjhiZmQ2YzNmODRiODRlN2E5MzIgcDN5aworNTUyNTAgZjIyM2E0NGRiMTNhNjg4MzdmZThmZjBlMTBhMGQ1MGI3NjZlODQ2MCBwM3lrCis1NTI1MSA5YjljNTNjMWFhNWMwOTVmMDlmYjliYmEzODZkNWExNWU1M2IzMThkIHAzeWsKKzU1MjUyIGRjMzliZmM1Yzc0ZTYyMmJjNTQ4YjJiZDVlZjQ0NWUxYmY4NTAxYzAgcDN5aworNTUyNTMgODFkOWY1MjcwZTg3NTJkNDdjMWRhZTAzYzQ1NjUwNDI2MjZmMTc2MCBsZWdhY3ktdHJ1bmsKKzU1MjU0IDNlZWUwNmNiMTVhM2VlMWJlZTM0NDMxZjE5YTA0NWZiNDk3MjJjMjEgcDN5aworNTUyNTUgN2Q5OGMxMmEzNDRkYmIwMzBjNDgxNDk2NzI2Yzg1N2E4ZmIwMmM4ZiBwM3lrCis1NTI1NiBkOTFjYzhkNDkyOTRlOGFmNDJlMTM0OGJjMWJlMGUzYWIxZjEzNzY2IHB5M2stc3RydW5pCis1NTI1NyA0NTQ4Y2ViMzFjOTQ5Mzk5MTVlZjdjYjRmMTRkY2NiMDdlYTA4ZTNiIHJlbGVhc2UyNS1tYWludAorNTUyNTggY2QyNDAzZDM3MGUwZjY3YzQxYjY5ZmUyN2EwMWYzNzk1M2JiODk2YyBsZWdhY3ktdHJ1bmsKKzU1MjU5IGI4ZmE0YWM2YzVmMDdjNjA5ZGVmNzNmNmM4NGIzZjQ4NDdkMjc2NTUgbGVnYWN5LXRydW5rCis1NTI2MCAzZmE0MGI1OWI5YjY4ZTJmZWJiZDA1YmU0NzJmMmE0NDdkY2UxOGZkIHJlbGVhc2UyNS1tYWludAorNTUyNjEgNTFjNzQxMjI4OTU4M2ZmZWExNDUxMWEzMjlhNjE5YzQzOTg1ZTU1NyBwM3lrCis1NTI2MiBiY2Y1N2ExNTNiMTFhNTcwZmUwZTU0NTUzZGJlMjA3MmJhMTZhODAyIHAzeWsKKzU1MjY0IGQ3YzdmZTliNmU5NzJlOTI1ODY2MmEzZGQ2NDJkN2RhY2QyZGJmNmQgcDN5aworNTUyNjUgOTE1MzkyZDVmMGI4NjQ2YjE2ZDUxNDRiYjlkZTdkMzc2ZTk4Y2Q1MyBwM3lrCis1NTI2NiAzMjY3M2I4ODhjMjQ0Y2UxOGNjZjQxZWNlMGE1OTgwMTE1OWQxNzg2IHAzeWsKKzU1MjY3IDVhMmY1OTIwY2Y3NTBmY2Q1OGNkZGJmMjU5NDhlODAyNTlhMzI5MzYgcDN5aworNTUyNjggN2Q0OTAzOGU5OWM5OTE0ODEyZDljZTQ0NTY4ZWZiZjJiNjAzOWFiOSBweTNrLXN0cnVuaQorNTUyNjkgZWU0N2ZkNWMwZTVkNzQ2N2ZlYjI4ZWVkMTYxMGY4MjUwMGVjMjNjYyBwM3lrCis1NTI3MCBlMTZjOGU1YzVjYTRjMTExYjY1ZjkxYWU5YTM4NGE5ZDk3N2YwYzJjIHB5M2stc3RydW5pCis1NTI3MSAyNzE5ZTE3YzkyOGQzNjY4MDhiOTQ0YjBjY2NkZTlkMWUyMzA5ZWYwIHAzeWsKKzU1MjcyIGRkYzRiZTI3ODZmZDI1ODM1ZGY4ZTY2ZTMyNDIzYmE4MzhiZDkwYmIgcHkzay1zdHJ1bmkKKzU1MjczIDIwYjhiMjk1OTNjMGQ5OGQ0YzgxOWZmNGQ4ZmQyYzFmZDUwZWIxZDEgbGVnYWN5LXRydW5rCis1NTI3NSBlMDZlMTk2YTA1Y2ZmMzgxYmM0NmVjMzY2MDUyODc0MmI3YjRkZTc3IHB5M2stc3RydW5pCis1NTI4MCA5NzA2ZjNiNDkwNjcwZjMxODk3MGM3NmFlMTUxZDVhODdkNzUxYzFmIHAzeWsKKzU1MjgyIDc5OTNmMjNhZDQ2Y2E1NGYxMGZiOWFjNTk1MDFjM2NkZDc2NTgwOGUgcHkzay1zdHJ1bmkKKzU1MjgzIGQyMzdmNDdmMjkzZjI5YjlhYTYwNTBmYjE4MGE2MWEyNzZkZjZiYzUgcHkzay1zdHJ1bmkKKzU1Mjg0IDkxNzA0MGRmZWM1ODM4YzdmZDExM2U3MWQxMWM5ZjFiNmQ4MDZiZTcgcHkzay1zdHJ1bmkKKzU1Mjg1IDI2MTcxMzNjN2FmYTI3MzgzNDg4MjY3ZTE4ZmYzMTcyMjAxNDc2NDQgcHkzay1zdHJ1bmkKKzU1Mjg2IDYwMjZiOGEyNmMwNWZmNGQ0ODZjNGUyMzI1ZTg1MTgwOGVhMGZjYWIgcHkzay1zdHJ1bmkKKzU1Mjg3IDQ4MmI1OTkwZDJmYjNkZjY4Njc0NTQzYmRmZmZhNWIwYjIxMTVmYTMgbGVnYWN5LXRydW5rCis1NTI4OCBjMTdkNzYwY2I2ZDA2ZjA5NjBjMTNiZGRmYTBiZjhiYWEyYzhmMmFmIHJlbGVhc2UyNS1tYWludAorNTUyOTAgN2JiYjk3ZTE0YWQ2ZWQxMmU3ZjFjNGZiNjYzMDEwMjE3ODY4ZTc4OCBsZWdhY3ktdHJ1bmsKKzU1Mjk3IGE0ODkzYzQ4MDI2NDhiNzdhYzI2OWU1NWNmMDNjNWE3MTJiOTNjNDMgbGVnYWN5LXRydW5rCis1NTI5OCA5MmViNWFlNGMxOGYxNTFhNTg5NTZhZWNlMjczZGU0ZGE4MDAzZWVlIGxlZ2FjeS10cnVuaworNTUyOTkgYTE2MGI0MzdmZjM1ZmUxNjgyNGZhYmJiNjdlMmZjZDRmNTU3NjYyZSBsZWdhY3ktdHJ1bmsKKzU1MzAxIGI0NjAwODQ0Nzk5MzMzOTFmODE5ODQ1OWZhZDNmZTM0YjBkYTE1NjEgcDN5aworNTUzMDMgYjdlOTEzNmQ0YzgzOGY4ZWNmYmE3YWViNDYzMmVkOTc4ZjM5MGVjOCBwM3lrCis1NTMwNSA3ZDI0YTY4ZDBhMWM2MTYzNjIyY2Y0NzQ2MGYwNDQ2MTdiODQzNzVkIHAzeWsKKzU1MzA2IDY1NjY2ZWM4M2MyYzAwYzcxM2IyMDkxMjdlZWU4Y2RkOGJkOTUxMmYgcDN5aworNTUzMDcgYWFlNTQ5ZWJhNzA3NWY1NDZlN2M4ZTIxMWU3NmRmYzBmYTYyMzNjOCBwM3lrCis1NTMyMCBjNGQ1N2RjNjBiMDE5YjVlM2U4ZmIyMzVjMzE2NWNhM2NmZTc2NmNiIGxlZ2FjeS10cnVuaworNTUzMjIgMTUyM2FhODI3MTQ2NWU5ZjI2NTljZWI1ZDZhOGM5NmQ2NjUwMDQyNCBwM3lrCis1NTMyNSBmNjBjODc3ZDUyYzhhMDk3YTVkODExM2Y5ZGIzY2ZlYTNlMmNiNDY0IHB5M2stc3RydW5pCis1NTMyNiBjN2Y1NDY2MGVhMTdlZmFmZmJjZGNjMDkyNDBmZmE2ZDZjODc1MDFiIHAzeWsKKzU1MzI3IGQ2ZTZmOTgyYzYzN2I2OTgwN2QzODc0NDFlZTU2MTczOTlmYzg2NzcgcDN5aworNTUzMjggMDBjMDJjNDQ4OGNlZjkxMWUwZTIxMzQwNWI4YmFlOTRlNzQ2M2ZiYSBweTNrLXN0cnVuaQorNTUzMjkgZjMyNTZjOGM3MmNhODEzMGRlMzFhNmM4OTdjZjUyNTQ0MGZjZGVlMyBwM3lrCis1NTMzMSBiYzQzY2IyMzE2NDA0MDg5MjMyYWNkNmRiMGJhZTYzMjAxYjI4NTE5IHAzeWsKKzU1MzMyIDU1ODUxOGZmOWQ5MWFiNjI0MjZkMGNlNzY0YWJkMmUyYzQ3MjZkYjcgcDN5aworNTUzMzMgNmRlYjRiYjEwMDU5ZjkxY2NjYjhiZWYxYzUyNmYyYTAxYzY2YzI1ZCBwM3lrCis1NTMzNCAxZGIzMTk0MWUwMTM5MWU3OTZkODcyMzhlZGJmNzcxNGZkYjhkMTc2IHAzeWsKKzU1MzM1IGI5YzcyNGRkNzJjODE4ZjFhMWQzNzJjZTVmOTA0YTAxZjM1Y2E0YmEgcDN5aworNTUzMzYgZDgxM2ZjMzZiOTcwMWY1MjRiNGU3YmVlMDI0YTczYjEyM2UxZTJiYiBwM3lrCis1NTMzNyAxYzlhMjk5NjU2YmUzNzFhMWEyOTdjZjVlYjA2MWQ4ZTdhZWU3MTY1IHAzeWsKKzU1MzQzIDlhZDg0MDcwYjIyZDg0ZjE3NWEzYjg5MDM2N2NmOTA2OTJiNjQxOGMgcHkzay1zdHJ1bmkKKzU1MzQ3IDZjYTNkNWYzZDFiZTEzMWZmNjY5N2E3OWRmMGU4NGJjYTZjNDkzYWUgcHkzay1zdHJ1bmkKKzU1MzQ4IDNlMWViN2FmNGVhMGQyMWU3ZjFlOTMwNWRmMTc1MGYxNzdkOTU2Y2YgbGVnYWN5LXRydW5rCis1NTM0OSAyYjcxMTJhNjM1NzFiMmVlMGM0OTQ3ODQxMmEzYjg4ODg3ZmMzMThlIHJlbGVhc2UyNS1tYWludAorNTUzNTAgMjYzNDlhNjRlZjcwMTViYzIwYjk5MzIyOWYzNTBjNGZiZTFmN2Q4MCByZWxlYXNlMjQtbWFpbnQKKzU1MzUxIGQzY2QyOTIwYmViNjg3YmYyMTcxZWY3OTYxMzgwZDMxNmJjZDIwZDggcHkzay1zdHJ1bmkKKzU1MzUyIGM5YzUyYjg3YzMwYjVmYjMzYWMzYWY5NDlmYzAzZDk2ODQxMWQwMDcgcHkzay1zdHJ1bmkKKzU1MzUzIGE4YjdhODE1OTlkMDQ4YWFhMTQyNGQ2NTQ1MTRiM2MyZTAwMzQzMTggcHkzay1zdHJ1bmkKKzU1MzU0IGQxMTQ2ZDRkYjU0OTQ2ODQ0ZjQ5OThhZjhhMDg5MmI5NjY2Yjg4NTAgcHkzay1zdHJ1bmkKKzU1MzU1IDIwMjg2ZWNhNDc0MzE1YTk2M2IxZjYxMjI0MTk0NTYzN2FlNTU1MWQgcHkzay1zdHJ1bmkKKzU1MzU2IDQzMGI2ZWQ4MDE0OGU5YjAwOTNlOWQwY2M5N2JiOTIzMTlmOTJiZTggcHkzay1zdHJ1bmkKKzU1MzU3IDZlYTkzNzAwZDc3OTIwNzA2ZmNhNTRmMGIyZDczZWM2MDljMWY2YjMgcHkzay1zdHJ1bmkKKzU1MzU4IDI5Njg1OTcxMThjMTM5YzhiYjdiMzdlZDczYjAzZTIzYzg4NGQzMmEgcHkzay1zdHJ1bmkKKzU1MzU5IDI5MzdmNTM3MTMyZWEzZmZlNDM1ZmU5NTM0ZDY2MDNkODA0ZmNkM2UgcHkzay1zdHJ1bmkKKzU1MzYwIGM3YjE1NWFkMzc5MTE5MDRlNTFjODVmZWY0YzgyYTEwNjc4MWNiZDAgcDN5aworNTUzNjEgMzc4N2EzZmJjNDU4ZDhkYmI5Yzk3YWNiMmJmMjc5ZmE5MWQ3ZDU5YSBwM3lrCis1NTM2MyA3OGQ3NjQzNWRhOWFjOWNlM2YyYTAwZWM1ZWU3OTQ4OWE2NDY2YmM4IHB5M2stc3RydW5pCis1NTM2NCBiYmIwOTlkNGVjODAyNGJmODAwZTAyYzA2MzVmMjhjNzlkMTdiMTg1IHB5M2stc3RydW5pCis1NTM2NyAwNTJkNTVlOGFmNzczMGE3NGYyNTA4MmE3MTQzZDE3NDM4NjIyOGZhIHAzeWsKKzU1MzY5IDkyZjcxOWZhOWIxNmU5MGNhYmI5NTVhNDBjMTU2NWQ0NDJhNjcwNTkgcDN5aworNTUzNzAgNGU0MWI3MmRhMGZjNjYzNzI0MWY3YzNlYTM0NGI3ZDExZjMwY2JmMCBwM3lrCis1NTM3MiAwYWQ2OTUxYzE4ZjdjNTc4MmJjYzYyN2RlNGI2NGY5YzY5N2Y4ZTMzIGxlZ2FjeS10cnVuaworNTUzNzMgNjllMWY3ZWMwY2U5MTZmMWY2ZTI1MTM5NGM2YjYxZjViYzFmZjE5ZCByZWxlYXNlMjUtbWFpbnQKKzU1Mzc0IGQwYzA3NjY2OTczMmZkMmY4NGYwYWM4MzgzMTNkMDI3Mjg1YjdjNDIgcDN5aworNTUzNzcgMDQyNGE5ZmE0YjBiNGQ0Y2ZjMzY4ZThiMDY3MjdmZTFkMTFlYmRmMyBsZWdhY3ktdHJ1bmsKKzU1Mzc5IGIwMTU0NmYzNmEyMjYzMDRjOTE5NTgzZjNjYjc3N2MyNmY4YmYxM2MgcDN5aworNTUzODAgMDdmMDgzMjI5N2IxZTcyZTVmZmU2YWU2NDY5ODRlZjk0ZTE5MTE5YyBsZWdhY3ktdHJ1bmsKKzU1MzgxIGNjYTllMzJlZTU1MDFiZDhmOGRkM2RjMWFjMzU2ZjZhZjAyMWYwNjAgcHkzay1zdHJ1bmkKKzU1MzgyIGRjNmI1ZjM1NWQ1YThjYmIxNWY1YzIzYjdhNTQwZmEyMGE2OGIyYTAgcHkzay1zdHJ1bmkKKzU1MzgzIDliODI5M2JmOGZlYzhiZmY5ZDM5ODk2ODMxNzcyN2JkZDYzNzNiYzYgbGVnYWN5LXRydW5rCis1NTM4NCA3NTgxZWMxNjIzMGVmMTgzMTgzYWViYWFlYzNkYTY2YTc3OTJmOTg2IHJlbGVhc2UyNS1tYWludAorNTUzODUgNjFjNGMyMjJhMzI3MGQ4MzEyNWRjYTI1OTQ1MDA2ZWIzM2RiN2JhOCBiY2Fubm9uLW9iamNhcAorNTUzODYgNmYxMjkzYWIzYWM0OGU4MzY2ZWE0ZmVmMjA0NWRhZjFlNjM1NGFhZCBsZWdhY3ktdHJ1bmsKKzU1Mzg3IDY5M2I4ZDkxNDc3MTcwODA5YWU5MmIzNTRkOGNmNDU5YTQwNGY4ZDEgcmVsZWFzZTI1LW1haW50Cis1NTM4OCAzODhlNGYyMWU3NDllMjdkYzAzZjhhMDQ0NzVlY2U2NDJmODg3OTc0IHAzeWsKKzU1Mzg5IDJlY2MyOTY0NDNjMzJjM2MxMTJmMzZjNzExMjBhMDQ0YzJhMjZiNzYgbGVnYWN5LXRydW5rCis1NTM5NCA3NTZlMWQ0MDRjYjg2MWI5ZTFkYWEwZjQzMDBkMjY4OTRkMjhmY2FlIGxlZ2FjeS10cnVuaworNTUzOTUgZTNlYTg4MWIxNGZlZDJiNTNiNjg0MDlhNDYyMzBjZGRlYWM5N2JiZSBsZWdhY3ktdHJ1bmsKKzU1Mzk2IDc5ZGQ5MDc4NzA5MWRmZTNkMWUwYzY0NjUzNzFhZGQ4MzJiZGZlMDQgbGVnYWN5LXRydW5rCis1NTM5NyBjYzZmNDdmMWUxM2E0NDZkZDUzMjcyOGY3NjUxMjFiM2ViYjk5MjFjIGxlZ2FjeS10cnVuaworNTUzOTggNmYwZGJhODA3NzM0YWZjNmFmOTBmNDcyM2ExZTAwMDRmOGU4ODdkYSBsZWdhY3ktdHJ1bmsKKzU1NDA2IGMxMmEzMDk3ODdkM2NjOGYzOTQzMDViMmJkNWNmNWUzZDZjZjZiMjMgcDN5aworNTU0MDcgYjA4NWViNjZiN2Y2ZGE2ZTI0MzcyM2FiZDExYmFhMzE5MjAzNmM2MCBweTNrLXN0cnVuaQorNTU0MDkgNDFhMTgzMGVlZTE2NTE4ZGMzMjY2Mzk4MDJjZjU3MWY2OWY3MTIxZCBweTNrLXN0cnVuaQorNTU0MTAgZWRhOWU2MGM5NzQ1NDc4YmM2OWYxNWNkMTg1YWZjNjRiZTQ1ZTIzMSBweTNrLXN0cnVuaQorNTU0MTEgNGQxNWFkNDE2NTFlNGMwZjY4ZWNlZDNmZGM1OGVmOWExMzQ2MmI3NiByZWxlYXNlMjUtbWFpbnQKKzU1NDEyIDE1MTE4OWM3MmEzNzJiOWEyMzQ4ZmE4N2VkNGYzYmU5YTBjYWUyMTIgbGVnYWN5LXRydW5rCis1NTQxMyBhNjc5NmEyNDQ4MWNlNTAxMzNiN2EzMGRiNDdlOTc0MzkyZTEwOGFkIHAzeWsKKzU1NDE0IDY4OWJhZTA3NjdlMjBjMWVkYmY2YmY3ZjUwNmIyOGY2ODYzMTNiYWMgZGVjaW1hbC1icmFuY2gKKzU1NDE1IGMyNDExYmRiNjI4NmNmZTE2MzYxMDBjMTFiMDdkODE3OWI1MjI4YTEgcHkzay1zdHJ1bmkKKzU1NDE2IDYwOTQ1YmRiMWI3NTQ4NTZhMTk0NzNjMTI0NGY5Y2RiOWUxN2IyYWYgcHkzay1zdHJ1bmkKKzU1NDE3IGIwYjUxNGJhZGYwYjBiYTlmYzllY2E1Y2E3NmQ3YzFlZTU3NjE0MmEgcHkzay1zdHJ1bmkKKzU1NDIwIDEzYTZjNmJlZjYwOTcwMWE3NzViMmE2NjM1NjYzZTU5MTdmZmVkYmUgcHkzay1zdHJ1bmkKKzU1NDIxIDBlYWQxMDY0ZWFkMDAyZDdmZGVmOThhYmM0MzM4NjFiNGRjNDhiMzIgcHkzay1zdHJ1bmkKKzU1NDIyIGVkYjRjOTAyOGJlMDAyYTNlYWUwNDQ0NWFkMDIyMzVmOTdjZWEwNWEgcHkzay1zdHJ1bmkKKzU1NDIzIDFhOWNkNzYzNjRlM2Q2YTIzY2RmZjIyNjlhZjNhNTRmMzczMGU3MmQgcHkzay1zdHJ1bmkKKzU1NDI1IDVkOWRkMWI4ZDkwOGI3OGNjOWJiNDIwODcyMjk4ZjVkM2NkY2YxMTQgcmVsZWFzZTI1LW1haW50Cis1NTQyNiA0N2IxNTlkNjQwYTQ1NGRlY2Y2YTNiNjQzY2ZkY2ZjYzYzOWFiZDIwIHJlbGVhc2UyNS1tYWludAorNTU0MjcgZjQzZTlkMWZhYmFhOGI2ZmJlNDA2NTY2MjU1ODA2YzczNzgwMDQ3ZiBsZWdhY3ktdHJ1bmsKKzU1NDI4IDhmZTk4ZjYwZWI2ZTM3OTdjMzU0YzRiOWNlZDczM2RjMGI2MDQ3MDIgcHkzay1zdHJ1bmkKKzU1NDI5IDE0MWUyYWVmZmJhYTQzZWIzOGFiMTcwZGJlMzhkZThkNGZkMDk1YjkgcHkzay1zdHJ1bmkKKzU1NDMwIGNlNjBmNDdiMTdhMjU0MWM5YjRiZDgyYzgwMDlhNmQyYWJiNmNhZWIgcDN5aworNTU0MzIgNjVjM2I0MzJmNTAxYjdmZjNkZTY5MTNmNDIzNGQxZTk0ODIyMzU3YyBwM3lrCis1NTQzMyBkNmFhN2VkZjIxN2E2NTIwZTYyNzE4MDgxNjdjODA4NjZlYWVlZmEwIHB5M2stc3RydW5pCis1NTQzNCA0N2RjNzE2MDUzNDFkM2E5N2RkZGQxNjZmOTM2YjllYjgyNGU3YmFhIHAzeWsKKzU1NDM1IDhhZDFjODhjZTFhYzY3ODRkNzQ3YWRiOGZjMWI2OTIxZDI5MzIwYzMgcHkzay1zdHJ1bmkKKzU1NDM2IGI1OTI5ODVhOTUzZmY5MGRkNzdmMjc5OWMxMjFkNTQ5YmRkNjk5YzMgcHkzay1zdHJ1bmkKKzU1NDM4IGIyOWQ3MWQ0M2M4MDkxZjMyNTMwMWY0MWVlMzlmMjhlOWEwOTBhMjEgcHkzay1zdHJ1bmkKKzU1NDQxIDY1MWZhMmM5YzJhYmU1ZjM0M2MxYWJmN2RhYmVmZWQ0ZDZhYTk0ZjggcHkzay1zdHJ1bmkKKzU1NDQzIDZkOGQ2NjA1MDAwM2YxZjg4M2VlZDljMDYyYzM3ZjYwNjFiMGI3OTcgcHkzay1zdHJ1bmkKKzU1NDQ1IDEzNjQxYWRiYTZlY2M2MDRkZjgwN2ZhMThkNGY1OWExZWMyZmM3ZDEgcHkzay1zdHJ1bmkKKzU1NDQ2IGYxOWU2MzFiZTEwMWI3YWY4MjI4ZTQ3MmJlM2E4OGZkODQ0MjZmZGEgbGVnYWN5LXRydW5rCis1NTQ0OCA0YTNhNjM3NjlkMzRhOTM0MGRkYjk1MDc0Mzg4N2FmMTVmOTAzZTg4IGxlZ2FjeS10cnVuaworNTU0NDkgZDRkYjYyNmMyMjkwNzY2Yjg4NjJiZDUwYmQxYjY5NTdlYTdkMDZlZSBsZWdhY3ktdHJ1bmsKKzU1NDUwIDMxMmMxMTE5ZGMxNDZhN2EzYjYxYWZmY2I3ZGVkN2Q1NTE2ZDlkN2YgbGVnYWN5LXRydW5rCis1NTQ1MSAyOTk4NzhkNjJlMmY3OWU2MTg0ZmRhODQ3ZTU1ZWE3ZWVjNTY3ZWIwIHJlbGVhc2UyNS1tYWludAorNTU0NTIgMGY5M2I3MDBjNGM5ZjAxZjEwNWVlNTM5NzBiMmI2OGMwYzY2NzFiMiBsZWdhY3ktdHJ1bmsKKzU1NDUzIDUxNWUyNTY0ZWNhN2ZhODFhOWY3ZGYzYWQ0N2I2ZWNjMTJjMDI1NWQgbGVnYWN5LXRydW5rCis1NTQ1NCA0YTY3ZjEwMzgzM2ViOGM1MmZmNWQ2MjIyOTlkNzVjNWRhOGM2MWViIHJlbGVhc2UyNS1tYWludAorNTU0NTUgZjE0YTViMDA1YTFlMmM0ZTM4Y2Q1ZjY1M2JkZWM5YjJjYjNhNWM0ZiBsZWdhY3ktdHJ1bmsKKzU1NDU2IGJlZThkMDFlZjQyYzdiMTJhZmE5NTk4NjI4Mjc2NTBjYzdkYjhhNTkgcHkzay1zdHJ1bmkKKzU1NDU3IDEzMjZiMGIyYWZhMDkxNTNjYmM4OWVmMWJlNjRhODgwMDg2MzQzOWQgcmVsZWFzZTI1LW1haW50Cis1NTQ1OCBiN2ZiOTQyYjQwM2U5ZTkxYjJhZGI1NmFiZTg5MGY5NGM1MjJiMDM5IGxlZ2FjeS10cnVuaworNTU0NjAgYzJkMzJiNWFlOTBiM2EzMTNmZDhlYzc2NzM4ZWRhZjZjMDQ3Mjg5OCBwM3lrCis1NTQ2MyBkMWMzOGFmMDY1YmYzOWMxOTQ4NDgwNzQ0ZWM0MzExMDg1MWY1NmQyIHB5M2stc3RydW5pCis1NTQ2NCBlY2M2ODU5MjViNTJkM2MwNDM1OTk2ZmFhYWFkYjAyZGY1MjNmMjdhIHB5M2stc3RydW5pCis1NTQ2NSA2ZDI0NmFjNjMxOTgyZGE1OWFjMmYzNTI0OGZjOWVlYjdhMTcyN2JiIGxlZ2FjeS10cnVuaworNTU0NjYgMDA0MTNmNzBjZTVjM2ViYzY5NjI0NDQ2NjM5MzZhMDRlMjc5MmQyNiBweTNrLXN0cnVuaQorNTU0NjcgNzc5YTIxMDUzNzc3OGQ1NGQwNzIwMjUxZTU3NjQyZWU0NTU2ZjdkMCByZWxlYXNlMjUtbWFpbnQKKzU1NDY4IGMwMjhiMjc3NWE5YTRlZmZhNWRhMDY2M2Y5MmMwMmJmYWVlOWI4YjcgbGVnYWN5LXRydW5rCis1NTQ2OSA1YmVmMmMyMmJmODU3MDZlMmI0YWI0YzIwODEwY2Q1MmFmNDM5NDhkIHAzeWsKKzU1NDcwIDMxMDI5ZjZlYmNhMmE4N2VlMzJlYzc3OGFkOGMzOTIyNDk1YTY1YzAgbGVnYWN5LXRydW5rCis1NTQ3MSA2N2NiODE4MzYwZjBkYzQ3MGI0NDMxYTRjYTk3MjY5MWQ5MTZhM2FhIGxlZ2FjeS10cnVuaworNTU0NzIgNjJjZjJjYjc0ZTM1MWE2YzE3ZmFmMWM3ZjkxM2VlZWUyM2Y1NzNkNyBwM3lrCis1NTQ3NCBjMGU4OWQwZWUwZTViYTgyYmJlOTg2NzQ0OGViZmI4YmI0YjBjODJlIGxlZ2FjeS10cnVuaworNTU0NzYgMmMwMGExOTEwMjcxY2I1N2Q0MmUxZTVjN2Q3N2UwNGQxZDdlYmU2MyBsZWdhY3ktdHJ1bmsKKzU1NDc3IGE1OGJhNjdmYWYxYWJmMzg5NGFhMzU2MzM2MjU5NjllMzgzZTY1MzEgbGVnYWN5LXRydW5rCis1NTQ3OSBlMzVmMWVlMjJhYjg4OTMxOGMwNzI4Yzc0ZDUyOGE2YmZlNWE4ZWFhIGxlZ2FjeS10cnVuaworNTU0ODEgYWM4YTZkZWVmOTc0MGQ4ZDUyZTQyNjNhMDZmZmZhYjcyNmFkZTZlNSBsZWdhY3ktdHJ1bmsKKzU1NDgyIDM1ZTE4YTBkMTBmMjZiY2Y0MDM0ODAxMzNhZjhlYWUwN2NhZGI2NzIgbGVnYWN5LXRydW5rCis1NTQ4NiBkMjRjOWU0MzJkNTI0ZmIwMmM5MWFjOGVmODQ0NWMzYmY1NDYyZjdhIHAzeWsKKzU1NDg3IDI2NzFlMDZiYWE0YzA3YjMxNTk5MDRkNWM0ZmEzZTdiZTk1NmE3NDEgbGVnYWN5LXRydW5rCis1NTQ4OCA5OTNmOGE5YjhhYjM5OTc0MTg1ZjM1ZjIzMTA1NzE3ZDUyMjMxM2VlIHB5M2stc3RydW5pCis1NTQ4OSA5NDU3YjlmNWJkZDEwOTMyZmIyYzEyYmMyODY4YjZhZDYzN2YzZWZiIGxlZ2FjeS10cnVuaworNTU0OTAgODFiMTc4ZjBiMWVmMzc3OGVkYjVhNWVmYzFiN2I2MzU3M2NkOWU2MiBsZWdhY3ktdHJ1bmsKKzU1NDkxIDNkM2JmMjc0MDllNjIwMmJmOGI0NzVhMDBhYWZiZTIxZDk0OWQyZjggcHkzay1zdHJ1bmkKKzU1NDkyIDE0NDZiOWZjYTAxZGJkMzY0ZWI5ZmMwODNmMjBjYzViNGU5ZmY3ZDYgcHkzay1zdHJ1bmkKKzU1NDkzIGViYjBiNmQ2ZGFkYTI4MDIxYjhhYWVkYmY3Yjk1MTg2MjVkYjYxYjIgcHkzay1zdHJ1bmkKKzU1NDk0IGVlMjk1MTQ0NGE4OTY0NjQxNmZjMDMwOGNlNGMzZTkwNjgyZThmNjMgcHkzay1zdHJ1bmkKKzU1NDk1IGE0MDU3MzJhMjYyZGM3NGYyZmI1MGY2ZDdjMzE1NTVjNmMxNjVmOGEgbGVnYWN5LXRydW5rCis1NTQ5NiBkN2Y2ZDZmNDU2MmVlNjFlMTZmMDdkYjZjZjVjMTU0YWRhMzczZGU2IHB5M2stc3RydW5pCis1NTQ5NyA4ZTA2MmU1NzJlYTRkNmFlNjE1Nzc5ZmNjY2YyMjllODYwOWU3NjgyIHB5M2stc3RydW5pCis1NTQ5OCBmOTk0OWI2M2VhYjNhMTI2MjE5OGZhNzU1N2Q4MmJiYzNhNDY0MTRjIHB5M2stc3RydW5pCis1NTQ5OSBkMDdkMzRiNTNkYjU4MDhjNDg0ODk4NjExMmM4ZjMwYTNjMDUwY2FhIHB5M2stc3RydW5pCis1NTUwMCA1MGRhZmEyMmI4YTRlN2I2YjQwMmE4ZjM3NzRiYzJiNWVlY2RlNThjIHB5M2stc3RydW5pCis1NTUwMiA3YzlkZGQ0YTA4MTQ2ZjZkYzNjNWNjN2QwMzc1N2M4NTcyOGQ0N2ExIGxlZ2FjeS10cnVuaworNTU1MDMgM2QwNTg1ODc2OTFkZDQ5YjhhYjg1NGU4Yjk1MjA4MzlhYzdhMzg1MyByZWxlYXNlMjUtbWFpbnQKKzU1NTA0IGE5MjI3ZDdhMzRmYThlNzE0MDc2YTdiNzJhZjFhOWQ3ZmMwMzYxZmIgbGVnYWN5LXRydW5rCis1NTUwNSBlYzgzZDIxMDY1YWEzNmZiMWViYjQxM2RlOWE1N2YwNjhkYzBkZTE1IGxlZ2FjeS10cnVuaworNTU1MDYgZWE3YWU4OTFmOTM4OTRjYWUwZTNiZTExZGY4NjgzMzFlMGFiY2RmNCBwM3lrCis1NTUwNyBjODk3NTU5YTg5ZmM5NDY1ZDQyOThlMjEyOWMyYWM5OWYzMTc3MzBkIGxlZ2FjeS10cnVuaworNTU1MDggYmZjNzNkODQ5ZTI4YTlkZWIyMDA2ZTVlNzhlYjQ2ODIxYTQ5Yjg3MCBweTNrLXN0cnVuaQorNTU1MDkgZGI0OWExMjQ3MzlkZWZlNjMzNGE0MjdlNmI0MTg5ZmYxOTMxZWJkYSBweTNrLXN0cnVuaQorNTU1MTAgYjVhY2EwMjk1Yjc5MmZhYTc5MDk2MzBmYzk0Mzc4YzE3Y2VkOWJmNCBweTNrLXN0cnVuaQorNTU1MTEgYWU2OTEyMjdmZDM0MzdmOWU3YjQ1MzhmYmJmNzg5ZWYwMGJmZWI0ZSBweTNrLXN0cnVuaQorNTU1MTIgOThlZjVmZmNmZjI4NDNiNDVhNTg0ODM2OTQ3N2RhZjMzZWZkOTlkYyBweTNrLXN0cnVuaQorNTU1MTMgZGQ4MGE0YzVmNDdkMDRkMDVhNjI0NDczNDY0MDdiOGE1Yzc2NmMzMyBweTNrLXN0cnVuaQorNTU1MTQgMjRiNjA2MjJiOTQ0ZDA0ZGZlMTJmYzY4MjkxN2NiZTdiOTA2OWUzNyBweTNrLXN0cnVuaQorNTU1MTUgODQzZjdlZmMwNThmMjNjOWZmMTIxYzNmYzNmOWRkODdkMTRmYTdiMSBweTNrLXN0cnVuaQorNTU1MTYgOGMzZTQwYjE3OWJmNDE0ZmFiMGI3YmRhMjhmNzkyYTViMzFiNjBmNyBweTNrLXN0cnVuaQorNTU1MTcgZWI0NWY4NWM0Yzc5MjYzYmU0YTYyOTU1MWViODdmNDc2OWIwMDYzZSBweTNrLXN0cnVuaQorNTU1MTggYTdiZTE0OGY3YzU2MDgwNjQwOTFlYTEyYjZjODI4MmZkYTFlMjY3OCBweTNrLXN0cnVuaQorNTU1MTkgZjdmMmE0OWMxZjJlNTRlM2M1ODg0ZDQxNTdhNTdkNjIxZDJhYWJkZCBweTNrLXN0cnVuaQorNTU1MjAgNzJkN2MwZjNiZmZlZThmMDdmNDI5Y2YzNjI0NWVkMjdhNTU5ZTBlOSBweTNrLXN0cnVuaQorNTU1MjIgZmY3YmVmZTkxOWI1YjE2NmI4MDc5ODdlYzQ3NWJmYmE4ZGYzNzE1NiBsZWdhY3ktdHJ1bmsKKzU1NTI1IGEwZWUzYjJiYTM2MWMzZWUzMzk0ODE0ODU3Mjc5NjhhMzRmYmVhMTAgbGVnYWN5LXRydW5rCis1NTUyNiA0Y2JmOTQ5NDM2ZWI1N2FkNmVmYWRmODFiZjk0ZWFhMDI5MjZiMzYyIHAzeWsKKzU1NTI3IDhjMzU3ODkzNGRmNmRhODdjMjYxNmQxMDNhZmQ2ZDZhOTE0ZmQ0NDIgbGVnYWN5LXRydW5rCis1NTUyOCA5YTQ0NzUxNDg1NWYxMTcxZjQ2MWE5NDNhOGU5YTU4OTM5NjZmYmQ1IGxlZ2FjeS10cnVuaworNTU1MjkgYTZjOTJkZWVhZTI3ZjJmZmZlYTAwM2UxNTY3MDJhYmNjNmVkZDVhNSBjcHlfbWVyZ2UKKzU1NTMxIDgxNDA3N2U3YWRlZTNhY2Y3MjAxODJmMjllODZjYjcwOTM4NmM2YjQgcHkzay1zdHJ1bmkKKzU1NTMyIDcwOWY4MmUyYTU1Y2I0NTRjMmQ2ZGI1NWEyMzk0YTQ0YWI2MWYyZWIgcHkzay1zdHJ1bmkKKzU1NTMzIGFiMzk2NjJlNDU0YmNlNGIwZTQ5MGIwNGE2NWNhOWY1M2M2ZThkNzkgY3B5X21lcmdlCis1NTUzNCBlMjQwZDIwZGEzZWM4ZmVhODU1Mzk0MDdjMzE2MGIzZTI0ODNjZjljIGNweV9tZXJnZQorNTU1MzUgZThmNjI0ZDQ4ZGEyZGRmMWU4NGU0ZWIyZmZlODE1ZjA2MTI5NzU2MyBweTNrLXN0cnVuaQorNTU1MzYgNTZlOTAwNzI4OTI5NTMwNDYxY2IxNTdiN2NhYTk3MGNjODE0YWE4MCBweTNrLXN0cnVuaQorNTU1MzcgMjMzMjM3NzA3ZWJjOTk3OWNhMDkwZDQyNTAzN2NkYjY4MWY2M2FlMCBweTNrLXN0cnVuaQorNTU1MzggYmZlOTUzMDQ2ZDA1YjIyNmZkODk2YzkwNzAwN2JhMzlhZGE0NGJhYyBweTNrLXN0cnVuaQorNTU1MzkgNTIzZGYxZGUwYTVjMmI4ZWMyMDY2MDA5M2I3ZjQ4ZjM3YzMwOWIyZSBweTNrLXN0cnVuaQorNTU1NDAgZWIxODhkN2ZlYTVkOThlNDY2NzJiZWMzYjIxMzNmY2U1NWMzNDQ3NSBweTNrLXN0cnVuaQorNTU1NDEgMjExZGM5ZDYzNjczYjVkYzdmOGZjNGZjYmU0NmU1YzI5NTAzOGNjMiBjcHlfbWVyZ2UKKzU1NTQyIDEyOWY5NjUzYjBhMjM5ZjJkN2Y2MjFhMzk5MjRiNzE5MjUzYjdiNjAgY3B5X21lcmdlCis1NTU0MyAxZjc4OTFkODRkOTNmZTM2NGJhOGIyMjJmMWU0M2I4MzJjNjdlNTdkIHB5M2stc3RydW5pCis1NTU0NCA0Nzc0YTk0ZDJlNmQ2NjVlOTQ5ZjQ2ZjhjNTBjY2VjY2QwNjgxN2NiIHAzeWsKKzU1NTQ1IDgyZTVkYjQ5NjBlZGZiMzRiMTA5MTk1ZDMzYTQyOTgyMzlhNGE3YTYgcHkzay1zdHJ1bmkKKzU1NTQ2IDljZThmYTBhMDg5OTcyN2JhMDNhMzczMGJhZDIzNDFlNjI0YWIwNjYgcHkzay1zdHJ1bmkKKzU1NTQ3IDMwOGU2MzI3MDJiZmE0YWU4ZDVjNmRhNDU4YWU5N2JkZjUxZTYwMWUgcHkzay1zdHJ1bmkKKzU1NTQ4IDIxZGM0NjI5YjcxMjE0NTgyODFhZDhhMDc1MDMzNzk0MjdmZWY0ZWQgcHkzay1zdHJ1bmkKKzU1NTQ5IGNmMTUxOTY3ZWVhM2NmMDE1NDBkMGQ0MzZhOWI0M2Q5MGEzZGMzMjMgbGVnYWN5LXRydW5rCis1NTU1MCA2ZjhmODIyODA1NDVkZDkzZDA2MTIxNjFiZDM0ZGMxNjU0ZTY2MWNjIGxlZ2FjeS10cnVuaworNTU1NTEgMzk3OWY5ZTJkMDI2Mjg3Zjc5MDEwY2RjYTk4ZmY1MTkyN2QzYWNiNyBweTNrLXN0cnVuaQorNTU1NTIgY2YwODkxZjFkNjBhYTlkYjA1NThjZTM1YzdlNzE5NThkZTlkMzg1OCBweTNrLXN0cnVuaQorNTU1NTMgZTYzMTAxZmFhZGE2OGMyMWVjNzg5MGQ3MmEzNDY2NTgzYzEyY2NhMiBweTNrLXN0cnVuaQorNTU1NTQgODZhOWQ1ZjQzMzA3NzQ0MjM1ODg3NDRmM2Y0YzJiOGRiMGJhMmNjYyBweTNrLXN0cnVuaQorNTU1NTUgMTA0MjZhZDVhNmUwYjEzN2U1MTYwYTYxZTk1NzM2YjcxOTRmN2UzMiBsZWdhY3ktdHJ1bmsKKzU1NTU2IDA1N2E5YzNkMDY3ZDExMzQ2YzdkZjQxNTg4YmNlYjFkYzE3MDAwYmIgcHkzay1zdHJ1bmkKKzU1NTU3IDQxY2ZjZmRlMDhhOTlhNzQ1ZjdhYjNlYWZiZjQzYzUwMTg2ZWNmMzEgcHkzay1zdHJ1bmkKKzU1NTU4IDJmNDhjNTZjNWU4MTY5MTUyZDU4YmJlNTQwYTg1NzNjZGM5ODBlNjQgcHkzay1zdHJ1bmkKKzU1NTU5IDk4YzY2ZWZjOTU1MzMzYTViMzIxODBlNGE5NDliOWU0NjcwZDc3ZGEgcHkzay1zdHJ1bmkKKzU1NTYwIGU0ZThiMTI3NzBlNDA2YmIzZTFhOGRlODBkYzU5YzRjYWExNTQ5NmEgcHkzay1zdHJ1bmkKKzU1NTYxIGU2ZmM2N2FkOWM1NGJjMWRkZGIyMWE2YzNiMjVjM2FiMjRkMzk0YmQgcHkzay1zdHJ1bmkKKzU1NTYyIDk2OTg2OGRmMTkzOGJjNDgyZmNjOThlZjRiNjc0ZjdhYjZiZjgxN2EgcHkzay1zdHJ1bmkKKzU1NTYzIDQ2YTk0ZWFkM2Q2OGRlM2IzMWNkN2EzZjYwNTM4NTUxMWE1MGI5OTcgbGVnYWN5LXRydW5rCis1NTU2NCAyNDkwMDc2Nzk1MjQ0ZDA1MmRjMWVmOGMwNDY5ZTJiN2FmZDY2OWJlIGxlZ2FjeS10cnVuaworNTU1NjUgOTllMzMwNjhjMzM0N2RjMjllZWEyODg4ZThmZDc3MTI4YjFlMDc3OSBweTNrLXN0cnVuaQorNTU1NjcgY2VjMmE5YzIwMGJhMmNhMmNiNmFlNTg3YTI1MTkyZDAxMzE3NzYyNiBsZWdhY3ktdHJ1bmsKKzU1NTY4IDUyMmM0OTM4YmRmNjgxOGU5OGZiNTBmOWYzZDk2OGM4YWNmMDhkNGQgbGVnYWN5LXRydW5rCis1NTU2OSAyYzhiYTNmYWFmNDBjMDU5NTI5MzY4ZDExNDk1NjM5MmY1YWU1ZDdhIGxlZ2FjeS10cnVuaworNTU1NzAgNjMxOTI3MWMyMzI2MTdkOGFlYmQ1NTk3YjcwNzZjYmJkNjNkMGE4NyBsZWdhY3ktdHJ1bmsKKzU1NTc1IGY1Nzc3NWM1ZDBiNDIzNjYyOGMyOTAwMTFlY2E0Njk2NzVkMTUzODYgbGVnYWN5LXRydW5rCis1NTU3NiAxYTM4NWQwYWU4MmJhMGVhNTBiNzQwMmJlNzdjNTA0MDI5MTdkZjExIGxlZ2FjeS10cnVuaworNTU1NzggMGU4MGZiZDczMDA1YzZlY2Y2YTkxNGU1ZjAxNDliNjczMmZiZTRmYSByZWxlYXNlMjQtbWFpbnQKKzU1NTc5IGNjMGFlZWU1OGE0ZDg3MjlkYWEzMGNhOTJiOTkzNzQ5ZWM3MmM5YTUgcmVsZWFzZTI1LW1haW50Cis1NTU4MCBjZWM2ZDk2YzA4NGExNjk2ZGYwODUwYTg1NzlkMmQzYzNkY2MxZjZiIHJlbGVhc2UyNC1tYWludAorNTU1ODEgMzRlOGUwM2U5MjFmN2U0NzdhZjZhMGM1MGRhMDZjMzgwMTBkMTQ1YSByZWxlYXNlMjQtbWFpbnQKKzU1NTgyIDJmNGQ5MjBhNTZmYzBmNDFlMjBjZGI1NGVmMzNhZjk2ZTMxNzQzZTIgcmVsZWFzZTI1LW1haW50Cis1NTU4MyBkY2I0M2Y0MDM5MGJhNzkyZDZlNjliNjY2ZDYxNjgzZDdiZmI3MDhmIHB5M2stc3RydW5pCis1NTU4NCAxZWMxYWZhMmJkYjU4YzM4YzQwOTQ2MGRmNTUwYjgwOTY3YTk4YjE3IHB5M2stc3RydW5pCis1NTU4NSAwODlmNDQ5YTIwY2RhMDE5MzRmZDNlNzIwZjk5YmQ4N2Y1NjZhMzcxIHB5M2stc3RydW5pCis1NTU4NyA4NWM5MzVkYmJlZjI2YmY0MDQ3ODE3MmE1NTFkYjJjZTE4ZmZiNGE1IHAzeWsKKzU1NTg4IDA0Nzg2YWU1MmRhZDQyMTI3ZDViMGQ3MjVlNzFiNzMzNDc0MmQ5NmQgcHkzay1zdHJ1bmkKKzU1NTkwIGJlZGZiZGNhZjM1NTdjZDAwZmE0MTg1NTk2ZDRiNTljOGQzZDVlYmIgcHkzay1zdHJ1bmkKKzU1NTkxIDk2NTdjMzMzYzRlYThmYzBkNzZjOGFkZmExYWQxMWU1NTU1ODA1NDIgYmNhbm5vbi1vYmpjYXAKKzU1NTkyIDM4NzdmMzdjOTg2MTBiY2M2ZTY3YzMyNGQ0ODgzNWZkYmFiZmJhMTQgbGVnYWN5LXRydW5rCis1NTU5MyBlNzQ2YTA2YjNlYWZlOWJhMDkxOWMwMGNhNWQ3ZjZmMzU2M2Q4YjhhIGJjYW5ub24tb2JqY2FwCis1NTU5NiAwMGY5NGQzNWM2MWNlN2ViYjFkMzE3MTE1ZTk2NDFmOWIyMmM1MjU2IGJjYW5ub24tb2JqY2FwCis1NTU5NyAxZWE0YjNjZjlkOTgxNGU3NTQ5ZjE5ZTVhZjZiODhkZjdkZjQ0YmRiIGJjYW5ub24tb2JqY2FwCis1NTU5OCA1YmM3ZjU2ZjVjMzNkZWY4OGFmN2VhNWQ3MDIyMzEzZDkwNDc4YjU4IHAzeWsKKzU1NTk5IGFkYmY2ODFmMWJiMmViNzUxNjg5MDUyMzU2NzEwMTQzNDBjNWQ3NTkgcDN5aworNTU2MDAgMTA1NjUzMDYxNmFjM2IyZDgzM2ZhMTM0ODFlMDg5OTZiMWY4MjgyMyBweTNrLXN0cnVuaQorNTU2MDEgZTcxNjJiNmNhN2EwNDBkOGFjYWY4ZTQ3ZTg0ZTU0MGQ3OGY3N2RkNCBsZWdhY3ktdHJ1bmsKKzU1NjAyIDM4OTA3N2E1NGZjZTNlYzg5ZTdlN2ZhNjQ3ODFmMWM0NmY0ZGQyNmYgbGVnYWN5LXRydW5rCis1NTYwMyBmYmYzNDJiY2I3ODQ2NTI1MWFlOTEzYmFkNmZmOTM1ZjI4MmZjMzIyIGxlZ2FjeS10cnVuaworNTU2MDQgZWMzYjhlOTRhMzU1NzFlNTk1NWI1NzlmYTFmMTIzMmIzMDY1OWE2NiBsZWdhY3ktdHJ1bmsKKzU1NjA1IGYyOGJlZDI2NGIwMmNiMzIwMmFhMjA3ZDc0Y2I1ZTAwZWVlMDVjODIgYmNhbm5vbi1vYmpjYXAKKzU1NjA2IDVlNDNjNzM2N2Q1NDVhODZiMjYwM2I2ZWJhY2RlMGJkZjZlNGI0NDYgbGVnYWN5LXRydW5rCis1NTYwNyBjMzZjODg3OWE4ZGFkOTg0NTcxOWVhZGI2ZWY2ODA0ZTY1MTY2MjBhIGJjYW5ub24tb2JqY2FwCis1NTYwOCBhYTczMjA2YzljZTY3NTZlYmI2MzQ3YTI1NTk2ZDk4MjljYWRmNWFhIHB5M2stc3RydW5pCis1NTYwOSBmNmE5ZTAzNGNjNjI4MjQyNjNlZGE0Nzg3NThkODYwZWJjMjgzZmI1IHB5M2stc3RydW5pCis1NTYxMCAyNDliNTI1ZTFhYzBlOTgwYjQyYTk4Y2ZjNmFiNGE5N2IwY2FlMGNiIHB5M2stc3RydW5pCis1NTYxMSBiN2NmYjNmZDhkYjA1OTk0ZGYzYTNkODQ3OTU4ZTk0Mjc4OWIwMjZmIHB5M2stc3RydW5pCis1NTYxMiBjMzI4N2UxOTVhMWQ1ODNlY2EyZWZmMzcwODU5MzNhZjI0NDNkYTc0IHB5M2stc3RydW5pCis1NTYxMyA5YmFlYzJmNTQ1MDlmNjgzNTRkZGI5YTAyZTU3N2NlNWYxOWJiNDlkIHB5M2stc3RydW5pCis1NTYxNCA0Y2FlZWI0MTMxODYyZmVhMWM5YWU3ZTYzYWE2ZWZjY2NlNmI3ODYzIHB5M2stc3RydW5pCis1NTYxNSAzZmRhOWU2YTBiNmQxZWQzYjc5ODljZWY3ZTU3YmU1MTQyNGQwOWMxIHB5M2stc3RydW5pCis1NTYxNiA4MWQ1YjAwNzExNjlhYzNiMTQzMTg0YzU4YjcyNDA4OWIwYmIxMjcxIHB5M2stc3RydW5pCis1NTYxNyA5ZGU4NzU2OTE4MWNiOGYzMWZkMWZhMDc0ZjkwY2I4MGQyMDk1NmEyIGxlZ2FjeS10cnVuaworNTU2MTggYWRlN2IwNjkzZTA3NmMyMTM5M2QxMmNiNDY2NWU5YmY4OTcwNjRmMCBsZWdhY3ktdHJ1bmsKKzU1NjE5IGE5ZWJjNTA0ZjY5ZDhjY2I5MjhiMjJhM2E3NjI4YjAxNTQ2MDlmMmIgY3B5X21lcmdlCis1NTYyMCA3NTg2NjZlMjdmYmVmYjQxNjQ1ODEzY2Y1YTA3ZjhkOTQzNDE2YTU5IGNweV9tZXJnZQorNTU2MjEgOGI0ZmI3MWZmZjFkMzY2MzcxNjMzMDA4YTE4MGM5ZDI3NTRkNDFkZiBjcHlfbWVyZ2UKKzU1NjIyIGFlY2Q3OGFmYTVhMjZlOTQzODdiNzA0YTRkMjkwNjk5N2M5OGZhNTkgY3B5X21lcmdlCis1NTYyMyAwZTdjNzBkNDFhMTliMDZlOTNkMzdkYTZjMWM0MDQxYmVhMDQzZGMxIGNweV9tZXJnZQorNTU2MjQgNDg5MDYwZTk3ZDE3ZmE4NzRjZThhNzFiODhjYjg3ODU0MTA4NDNlYiBjcHlfbWVyZ2UKKzU1NjI1IDhkNjM3ZDgxNmY3NTQxN2IwOTkxZDdjMmE3ODcwZmJjMzliZmY1YjggY3B5X21lcmdlCis1NTYyNiAzNzAwNTJkYzg5OTJmMzQ1MTU0MjZjYWJmMzI5ODVjODI2ZDljMzgxIGNweV9tZXJnZQorNTU2MjcgNmRkOTc2NzYzN2JiNDNkN2ZiMDc5ZWFkZTc4NmZlODUxMGM0MjE3ZCBiY2Fubm9uLW9iamNhcAorNTU2MjggZDVhZDkxNDkzNjBiYjk0ZDYxOTYxZWI5MjVlOWY5MjlhOGUxMGU0NSBiY2Fubm9uLW9iamNhcAorNTU2MjkgMzdjYTRkZDhhYmVmNDY5M2RjMmU2ZjQyODZmYTJlZDJlMzU3M2ZiNiBwM3lrCis1NTYzMCBkZTUxYWFjNDZiMWJjODk0NTNlODY0YTBjNzk2YzRkNjIxNzUxZjQ5IGNweV9tZXJnZQorNTU2MzEgYmE3ZWFlZTMzODIyNzkxOGI2MDVhMmM1YTAyNDYyMGJkZjZhNTFmYSBweTNrLXN0cnVuaQorNTU2MzIgNWFkMmQ3NzAwZDNjNTA1MDU5M2E1ZGZiOTIxYzU4MWQ2NzdlZjcyZSBiY2Fubm9uLW9iamNhcAorNTU2MzMgNTM4MWI0ZTcxYTA0MDZjOTIyNDk0ZjdkMjk0YjA4NzdlYWY0ZmE5OCBiY2Fubm9uLW9iamNhcAorNTU2MzQgNTAzZjVhNTY0NmQxN2EwOTkyOGIzNWExMmVkMTc0ZjJmODEwNWM0NCBsZWdhY3ktdHJ1bmsKKzU1NjM1IGUxNGVjZTc3N2I4YjQ1YjhmOTkyZWY3MjczMDFlNzNhMmI2YjIzYmUgbGVnYWN5LXRydW5rCis1NTYzNiBjNzgzNDk3MTMxN2NkNDliYTJiNjUyZTgxMzNlODEyOWQ4MWFmNjE4IHAzeWsKKzU1NjM3IDg4NWQwZWY5MGUwZjQ0MWNlNTdiMmExZmJiMmIxMjU1MTcyNzk5YWUgbGVnYWN5LXRydW5rCis1NTYzOCAwNmU2ZDYyMTVjNWI3OGJkMTNhOTFiNTllZTAyYWUzMDUzNDhjMWFiIGxlZ2FjeS10cnVuaworNTU2MzkgNzY4ODdlM2U4ZTU3YTZhZDRkOGFhMmNhNGEwMmU2MjE4NmYyMzY4MSBwM3lrCis1NTY0MSBhZTgwNTc5OGZhNjc4MmM2YmQ5NWNmMDZhZjc5ZjAwODY0M2ZhMjI3IHAzeWsKKzU1NjQyIDY3ZWU0Njk2ZDE0OWFiNjdiNWRjOTBmN2U5YWUxMGZhN2Q2ODAwNDIgcDN5aworNTU2NDMgMzc3YjVkZDYyOTNkYTk5NjYyNWU5YWJiZDY5NDU5NWI4MzU4OTliZSBwM3lrCis1NTY0NSBhMWVlMjU2ZmJjOGY4NDU5OGFhMjUwNTBjOTQ0OWY3YTdmMTk0ZGI1IGJjYW5ub24tb2JqY2FwCis1NTY0NiAyYWU5OTc1YWNhMjA1ZTZhMDFiMDQ2ZmU3MjgxMTNiZDBlMmJkODU5IGJjYW5ub24tb2JqY2FwCis1NTY0NyA4YjFjZGY5MzIxZmQxMzYwYTEwMDU1MWEyOWI2MzE1MGUzN2UwZmFmIGJjYW5ub24tb2JqY2FwCis1NTY0OCA5Mzg2MmFhNzZmN2MyYTA3OTYyNTY1N2Q3NWVkOTkxZjk5Y2YwZDIxIHB5M2stc3RydW5pCis1NTY0OSA5YjFmZmNlMjU2YjlhYWU2ODY1OTZiOTY1ZDVjNjBjMjE5Y2E0MjRhIHB5M2stc3RydW5pCis1NTY1MCA2YzJmYTcxZGM0NTlmMzg1MTBlNWE4ODNjNmZkYjY5OThlYjYzMzFmIHB5M2stc3RydW5pCis1NTY1MSA0OTI2ODc2OTVjNjZjODM1NjJmYjY0M2IwODZjN2Q1MDZmNWNjMDgwIGJjYW5ub24tb2JqY2FwCis1NTY1MiAwOTgyZmIwOGU3OWIxZDgxNDM1MGY2Y2Q2MjdmNTYzNDJiZjA0MGFjIGJjYW5ub24tb2JqY2FwCis1NTY1MyAwMDNjZTM2ZGQyMDIyMzQ5MDhjNWE3N2EyMGU5Y2VjZWJjMDVmYjJlIGJjYW5ub24tb2JqY2FwCis1NTY1NCAxODgyMTZiNDNlZjZhNzRiMzcxZWI0NmY4YmFkOTJkMTU2MzZiMmZkIHB5M2stc3RydW5pCis1NTY1NSAzN2EyODU2ZDhmMGUxZDkxY2ViNzMxNmI4OGVmMTA4NjhhNDg3ZGZmIGJjYW5ub24tb2JqY2FwCis1NTY1NiA3NWI5Y2UxYTc3NDVmM2NmNDE4NzhjODdmN2E4NzMxZGRkNjgzN2UyIGJjYW5ub24tb2JqY2FwCis1NTY1NyA2MmUzOTRkNTBhYTA2MTEzMzk2MTk3MzM4OTI0ZjQ5OGE1NDI5NjM2IHB5M2stc3RydW5pCis1NTY1OCA2Nzk2ZjBjYjBiZWE0ODEwMDhkZTExNDVmMWFiMTkwODI5ZDVlNWFkIGJjYW5ub24tb2JqY2FwCis1NTY1OSBkZWZlMjUxM2I3OGUxNzEwNTQ3YmZmNmQzZTRmNGQ5ZjNmZjAxZDQyIGJjYW5ub24tb2JqY2FwCis1NTY2MCBjZWJhZjdjM2FiOGM3NTBhODE2MWU5ZGVlM2RlMjFkN2M0ZmY3NzgyIGJjYW5ub24tb2JqY2FwCis1NTY2MSBiNmYwNDk3NGQ4YTc3ZmZkOGEzNjJmN2EzZDQ0MGI2YjBhZmZjMDg0IGJjYW5ub24tb2JqY2FwCis1NTY2MiA1NjI2MDJjOTEwMWQ5ZjFlZWFmY2FhYTZmYTg5YTQxYzU0MTdiMzdlIGJjYW5ub24tb2JqY2FwCis1NTY2MyAzNmEwNTY5NmJlODIxODA5MjY1Y2RkYmMzY2I1Mzg5MWU5MGM3M2M0IHB5M2stc3RydW5pCis1NTY2NCBmNDBmZjJkNzM4ZWE0MjY0YjMwZWI4Nzk0YzM5ZWM2ODI5YTk1OTg4IHB5M2stc3RydW5pCis1NTY2NSBjNDBiZmIzN2ZhMTU0MjRlOTA0ZDNhZDczMThmZGNlOGEyNmVjZjkxIHAzeWsKKzU1NjY2IDQxODA1OTk5NGU0NzIyMmNiYTlkNDg5YjI2ZjI3MTc2YTFlYjFlMmQgcDN5aworNTU2NjggYWE0YjcyNTQ5YTY5NjgyN2UwYzQzNGExN2IwOGRlY2ZkMjBhOTY3ZSBwM3lrCis1NTY2OSBkNWJiZjk3NTcwZTM2MjZkYzE4YzExMjBjZWIzMTE1ZTM0YzYxYTA5IGJjYW5ub24tb2JqY2FwCis1NTY3MCBlNzFkZTU3NTEzZTFiZDNiMmNiNWU1ZjlhNzliYzYzMTFiODM4ZDYyIGNweV9tZXJnZQorNTU2NzEgMDYzNWE2Y2ExOTgwMDIyMGU3ZGQ0NjQ5ZTIyOGZiNDQ1ZDNlYzM3NSBsZWdhY3ktdHJ1bmsKKzU1NjczIDdkMzc5YzQ3NjAwNzQyMTQ1Mzk2Mzc3OWQ1NjY1MjRmMjhlMjA1NDUgcDN5aworNTU2NzQgM2FmZmNlMmVmNzgyY2JlYWM0NWRkM2U2M2ZhMGY0OGQ2NmEzYWU0NSBwM3lrCis1NTY3NSBkZDM5NjM1NDBjZjc3MDk0MDkwYTI5NDQxNTJiYmIyMTRhMGUwNzBkIHAzeWsKKzU1Njc2IGRkZjA0NzFhNmRlMzczYjk0YzRmYzZiYWZmZGZmMmU2OTBmMWRjNWUgbGVnYWN5LXRydW5rCis1NTY3NyBhYWYzYjZkODJiNjNmMzZkZDg3NThjZjc3MmJjYjVlZTQ2NjM1NmYwIGxlZ2FjeS10cnVuaworNTU2NzggMjc1ZDg3YTQ3ZjY0MTRmZTY5ZjM0OTM4NDAxZDVhYzAwNzFhM2Y0NiByZWxlYXNlMjUtbWFpbnQKKzU1Njc5IGNkZWEwOTRjZjA0NTFmNjcwZjY0MjM2OGZlNTNiMmEyYTA3NzI4ZmEgcDN5aworNTU2ODAgMzk0YWI1ZmYxODU0ZTQxNmFkM2QyNjczOTkzZmYwNWZhNjNiYzI1MyBjcHlfbWVyZ2UKKzU1NjgxIGJhOGI1YWQ4ZTc2ZWJkN2VjYTVkMGFjMjhhNWRkM2QwMDYzMjA4YWEgY3B5X21lcmdlCis1NTY4MiA1MTY3ODU3ODUxYzEwOWQ0YjI2NGFhZDdhMDkzMDI1NTFjMWIyMDJjIGNweV9tZXJnZQorNTU2ODMgNDFjN2NkMTZiMTk4YzAwNmRhMzQwMTIwNmM1N2JmZDcxNDEzMmZiNyBiY2Fubm9uLW9iamNhcAorNTU2ODQgYWNkMWUyNjI0OTlkZDI4Y2ZhM2I0ZGY0NDI5YTY4YjcyMzRjYzYxNyBiY2Fubm9uLW9iamNhcAorNTU2ODUgYTYwNDJjN2Q3YzU1ZmEyYzFiMTJlYWMwNzhmYjBmMTVlNWNkNzYzOSBiY2Fubm9uLW9iamNhcAorNTU2ODYgNWMyOTQxMWEwNWE1ZjU5YzVlZjgxMGM4ZDY3ZTFlMGM1YTg0NzZmOCBsZWdhY3ktdHJ1bmsKKzU1Njg4IGFkNmM1Yjg4YjVjNGIwMTk3MGUwYzEzNDBhZWE4NjYyNTU3MGQ5MzQgcDN5aworNTU2OTAgYzJkYzRkMTdlOThiYzQwNGQ0Njk0NzYxMjhiZjU3MzgxNTg3NjE3YSBsZWdhY3ktdHJ1bmsKKzU1NjkyIDE3Njk5OTMxMTc5ZThmMzA1NmI5NTQ3MzlkYTkyMGY4Y2IxODI2MjAgcDN5aworNTU2OTUgMTIwMGMwZTA5NTUzNzY1OTEyZGIxOWRiMjIzOTNjNWE2ODAwZmJmZiBjcHlfbWVyZ2UKKzU1Njk2IDBlMjliYjgwZTIyNzhlZjYyZTVkMjM0MjY5MjNhYTk2MmJlMzFiMDUgbGVnYWN5LXRydW5rCis1NTY5OCA4ZTdlY2JkOGFhYWIxODc2ODYwMTczMTAxMDE2OGViNTgzNmM4NjVkIGJjYW5ub24tb2JqY2FwCis1NTY5OSAwZjQyNGRlNDU2ZGI0NjA5OTBlZTc1NjRkM2IxM2ZjYjY3OGUyYTA3IGNweV9tZXJnZQorNTU3MDAgYmI5NDJiNjBiMGZlZjJiNjJmNTk3NTI2MzIyYThiYjQyNjRkOTBlMiBjcHlfbWVyZ2UKKzU1NzAxIGRmY2U5YTI2MzVlOTZjZjEyYTUzNTJiYTgzZTMwYjIyYjUwNTliMDEgY3B5X21lcmdlCis1NTcwMiBkZjNmNzZhY2UyZDc0ZDczZGU5MDNmMDU4ZGNhZTg1YjNhODZlM2IyIGNweV9tZXJnZQorNTU3MDMgYWYwYWM4MzYwMmI0Nzg2YTIxMTVlNWJkMTM2YTU0MDdkZGViOTE1NyBjcHlfbWVyZ2UKKzU1NzA0IGQ4YTZhZmE2ZThjNjBlZTc1ZDVhMDQ5OGY1NTY0NzI4Njg5OTc5MzUgYmNhbm5vbi1vYmpjYXAKKzU1NzA1IGQwYjRiYmFhZmFhZTRjNDE1YjU1ZjliN2IwZjk3Zjg4NTI3MDRhMjYgbGVnYWN5LXRydW5rCis1NTcwNiBkZDQ2ODlkMGVjODViNmMxMDNhNTYzM2Q0MDBjOTY2OWNlMWYyNTFmIHB5M2stc3RydW5pCis1NTcwNyBmMjg3Yjg4YzNjMjFjZmJjNTQ0MjUzMjFlYWFlMjQ1YTA4ZmYwNzg2IHAzeWsKKzU1NzA4IGM0NTExMTUwZWY2MDcxMjBlNmMzOWZlM2Q5ZjdjNGRiNDRlM2RhYzQgcDN5aworNTU3MDkgNzFkODYxZWU5ZmYwZGJkYWUwN2FlM2M0MGIzMmVlYzE4YTMwNjZiYSBweTNrLXN0cnVuaQorNTU3MTAgYjhiZWY5YTFjZGYwMWNkODFiNGQ2ZTc1MWE2ODA2ZjRiNGJkMzQ4NiBweTNrLXN0cnVuaQorNTU3MTQgZGJkMmNmNDA1Mjc4MjVmYmYxMTRlNGE5MzZhMDZlNzJmYjY1OTVkOCBweTNrLXN0cnVuaQorNTU3MTUgMTI3ZjE1MWYzMTdiNzdlYTYxMzM4ZDY3NjdiZDg0MDZkOTBlYTI3NyBweTNrLXN0cnVuaQorNTU3MTYgYjM4MGM5YzQ5NzM4YWNhMDVhMTUzZWQ2NWNhNmM3YTM4ZTY4MjZlZSBsZWdhY3ktdHJ1bmsKKzU1NzE4IGNlZjA3ZGIxY2FlZDFhMDgyN2U0OWJkOTE3MWU0M2I1MmFlZDk4ZDkgcHkzay1zdHJ1bmkKKzU1NzE5IDkxYmIxOTgxM2NhNjExZmNhMjEwODFkZjJjMDNlMGQwNTVkNDQ1NzggbGVnYWN5LXRydW5rCis1NTcyMSBjNjFjYWFmNTYxNjMwYTFlYTcwZDRhNTA0ZThlNzg2NzZhMjE4ZTJlIGxlZ2FjeS10cnVuaworNTU3MjMgNjY3YzFhNzI3OWM5ZjdjYjQ4NzgzNmE1NzY5ZjdiMWVkYmUyMzAxNSBiY2Fubm9uLW9iamNhcAorNTU3MjQgNWNhN2QxNzBlNDMxMmY1NDBiNGQ2MDJiOGVlMjJlOGYyMzQ3M2FhMCBwM3lrCis1NTcyNiBjY2YyMDk5MjUzODM2OWU3Zjk4MjA2N2M1NTQxMGQzYThhMDM2MDJmIGxlZ2FjeS10cnVuaworNTU3MjcgOTY4NjFhMDQxZjU0NmNmNDc4Zjc2OTY5ODYzNGZkMzc5NzQyMGEyOSBwM3lrCis1NTcyOSAyOTM0YWYwNWY4YmZiMDkyYmNkMWMwNWRhZmE3NGVhMTJiZWM4NzUyIHAzeWsKKzU1NzMwIDlhY2IzOTQ3ODBkZjkzNjE5YmRiMDRlNmQyM2UxYzU1MjZhYWVmOWMgcDN5aworNTU3MzEgMjRlZmEyZTQ0OGJjZTJmYWUxMGFiNGM3N2ZhMWI4MzRiYmY2N2FkZSBsZWdhY3ktdHJ1bmsKKzU1NzMyIDkwNDg3YTg4N2JlMTM2ZmJlOTI0MWJlNzdlMWVhY2ZlNzlhMTU2ZTEgbGVnYWN5LXRydW5rCis1NTczMyBmZWMxMjk2NTQ0YWI5NmMwZWY1MjgyYmRlNGIyNGNkM2NmYzM5YzE0IHJlbGVhc2UyNS1tYWludAorNTU3MzQgZjAxMjFiMjE1ZDM4OTYwMzEzMzc0ZDdjZmI2YWIxNTkzODJiZTQ0MyBjcHlfbWVyZ2UKKzU1NzM1IGZiYmY4NTFlMjMwYTU5ZTVmZDYzOWM0NDQ4NDk4ZjhiNzhmZWE3NTcgbGVnYWN5LXRydW5rCis1NTczNiBkYTUxZjdmOTA4Y2FkOGZlN2ZkOTFiOTIxZGMzOGY4NTM3NDVlMTk3IHJlbGVhc2UyNS1tYWludAorNTU3MzggZGZmNjI0YjJhMjQ5MTA0MmU3MjhiMjE1ZTRhOTIyNWIyYWZjN2ZlYyBwM3lrCis1NTczOSBmOWY2MDAwMzI3ZTI3YmQyZWI4ZDRhYzViMTE5MzRiZmQ0OTkzNzRhIGxlZ2FjeS10cnVuaworNTU3NDEgMzI4ZTQ1OWViNjcwMjk2MTFmZGY4YTM4NzU2MDMzMzgyZmYxNTFiMSBwM3lrCis1NTc0MiA3YjNmNjRiM2U3MzkzODhlZDQzZmQwYjRkYWVlYTg0YzA3OTk5Njk4IHAzeWsKKzU1NzQ0IDA0ZjRiNTU3ZDNjNDUxMWIzY2UxMGUzMWEyNjRkZmE5YTA1MWY4MDUgcDN5aworNTU3NDUgMDQxODZmNTIxOTJkZGIxM2UzZTJlZjMxMDMxNTViODg0MWQzODM5NCBwM3lrCis1NTc0NiA3ZTBjMjIwYjU1YTY0MDMzYzgzZDg3YjYxYWRjOTkzY2M5ZTllOTIzIGxlZ2FjeS10cnVuaworNTU3NDcgYjRmMTNjN2ZkZmQ4OGQxNjhhMTVkNTIyMmRiMGEwZDkzODM3M2M2YyByZWxlYXNlMjUtbWFpbnQKKzU1NzUxIGUzMWQyZjk1ZjIyNTRkMjQ2ZDNlNTlmMjQzYmJjOWUwZTM1ZmRkOTcgbGVnYWN5LXRydW5rCis1NTc1MiBlMTk5NzI4MzQxNzA4OGRhY2I2NzljNWFmMjEwYzFkZjhjNzliZTMyIGxlZ2FjeS10cnVuaworNTU3NTMgODJiOTNmYTkxZGNmMzQxM2QwMmI5N2ZmMmVjZDE5MDljMzZlMTQ2MiByZWxlYXNlMjUtbWFpbnQKKzU1NzU0IGFiZGUwODM4NDNjZDJjYTMyMTlhZmVlODU0NzJmZWRmZGY5ZDg2MzUgcDN5aworNTU3NTUgYjhhYmRmYTFjOWFmYzEwMDJkMTIyOTUwZjNiMjlhNTVjNDBkZjAzYyBwM3lrCis1NTc1NiBmNmZhYjFjNzA3ZTkwOWZmZDA1Nzk0Y2ZlMWY2ZGY1ODJhMDFjZTdmIGNweV9tZXJnZQorNTU3NTkgNTAxNGY4ZGFhNTdmYWQ1Nzg2YmFhN2RmNDNhMGQ0NjU0Y2UzZWJmYSBweTNrLXN0cnVuaQorNTU3NjAgZTRhYjA4MDM5Yzc1ZjgwZmQ4ZjhlZTk1NWY2MDE3N2Q1NTY3ZGMwNiBweTNrLXN0cnVuaQorNTU3NjEgNzNkZDJkYTMxZDM3ZWJkODNlZmNjYmI1MGNhODUyMjM1ZTI3YzUwZCBweTNrLXN0cnVuaQorNTU3NjIgOGJjZmM0NmU0NDRiNTgyNjZiZGNjYjFmMWFhNjBiZmJmZTEzOWM1OSBweTNrLXN0cnVuaQorNTU3NjMgNTM5NjNhMmY1NjUyOWJlOGMxNjU0ODRlNWRlNmNkZmQ4OWE4ZjQxNyBweTNrLXN0cnVuaQorNTU3NjQgNTc5OGEyZmJhYjAzMDRmMTM2N2JmMTU4NjkyYjg5YzRkYmYxNDcxZiBweTNrLXN0cnVuaQorNTU3NjUgNzE2MDRkNDlhMzg2MzllY2ExNDcyZjE3ZDc2Yjg1ODM5MTFhNzdlNSBjcHlfbWVyZ2UKKzU1NzY2IGMzNmFjNjdlZWY1Yjc3NmExMmMwNDc1M2Y3MDhhNWRjOWFjZmJlZTAgbGVnYWN5LXRydW5rCis1NTc2NyA0YjM0ZmFhYTk3N2RlODk2OWIyZTJiOTQ1OGU5MTE1NjkyNjkwMTJhIGNweV9tZXJnZQorNTU3NzAgYjZjMWExYTE1YTZjZGI0NTAxYTA1OGZlMGQzOTYwOGJjODk5MWJhYSBsZWdhY3ktdHJ1bmsKKzU1NzcxIGUzZmJkZDdjYjk2OWNlYjhiMmM4NDM5NmJkZWM4ODM5MWY2YWMwMjcgY3B5X21lcmdlCis1NTc3MiA3NjE5NGU2ODJlMjFjYzZhZDUzZmQ0YzQzMGUzNDUyYzNkYzhlZDk2IHJlbGVhc2UyNC1tYWludAorNTU3NzQgYzVjZjlhNGY0ZmE5NzljZDE3NTU1OTE5YjZkMjg3NTE0Mzk0OGI4ZCByZWxlYXNlMjUtbWFpbnQKKzU1Nzc1IDM1YWNjZWRiNWQwM2I0OGUwMWQ3OWY4MjQwMDNmMWY2YmVmOTA5MTIgcmVsZWFzZTI0LW1haW50Cis1NTc3NSBjZmJjZmY2NmU3MjVhYjQyOGUzZTlhMmIxNWEyYzc3OTYzODk2Y2FlIGxlZ2FjeS10cnVuaworNTU3NzUgMDE4MTM4NDFkNjRiZmI0MzY2Y2UwZGQxMWE2ZTBmNjgyOGQyZjYwYiByZWxlYXNlMjUtbWFpbnQKKzU1Nzc2IDM5YTFhMjJmOTZjZjYzZjEzNDI5ZDc1YWE0MjBlNzgyYzBmODg0MmQgcHkzay1zdHJ1bmkKKzU1Nzc3IGIzZjYxYmFlMTBjMzhjZDg1OTRhMGVmMzEwNWIxYjZmYzcyODFhZTIgY3B5X21lcmdlCis1NTc3OCBlZjM3NDMxZWJmMmM5NDVlMWUzYWM4MTNiZmVhNDJiZjk2MWRkN2JhIHB5M2stc3RydW5pCis1NTc3OSA0YzVmYmU2NWI3ZGU3OTM1OWQ0ZjE1NzU2NGYyOGQxNjg2MDY0ODc1IHB5M2stc3RydW5pCis1NTc4MCBiMzBjNzVkMjJmMzRiMjM5NzBhNGU4ZTM4ZDI4ODZjNGZiNDU5OTJkIHB5M2stc3RydW5pCis1NTc4MSA3MDE1Y2NjZjI5ZTNiYmQ3NWRjMjc0NzYyYzIwOWQzYjRmMjNhMGViIHB5M2stc3RydW5pCis1NTc4MiAzMGU2MWFjMWQ2NmM2MmNjZjU0MDlhNTU0NmI1NjQ1MDgwZmFkNTBjIGNweV9tZXJnZQorNTU3ODMgOWFmNTI0ZTM1MWYzMjUwZjMxZjBkNjQ5MDc4NzdiOGViNzFhMmMyYiBsZWdhY3ktdHJ1bmsKKzU1Nzg0IGYyMjc3NDM5ZGNkYzlmOGFkNGE4ODM5YTQ5Nzg5OGMwMmM4M2JjODEgcmVsZWFzZTI1LW1haW50Cis1NTc4NSA1ODg2ODZkNGMyY2Y4N2ViOTY4NGI3NmRjNWRkMjkxOWMwNzcyNmMwIGxlZ2FjeS10cnVuaworNTU3ODYgNmZkOGQ1MjRkNTZiMmU2OGVlYjY1NDIzODgwZTU2NTE0MjM2MDg4MCBsZWdhY3ktdHJ1bmsKKzU1Nzg3IDExOTMwZGNmOWQ0ZmI0ZGFlNmM5NGVmNGI3YzUwZTQwNjE2MWM0N2YgcHkzay1zdHJ1bmkKKzU1Nzg4IDdlNTJiNWJlYzVhNDI2OTk3NjM1NjUzNTlmZWFjYTg5YmE2ODAyYTEgcHkzay1zdHJ1bmkKKzU1Nzg5IGNlNWFmOWE3NDZjYjIwOGMzZTJjMzZjMGIyMDkxYzkxMWQ2MjkwZmIgcHkzay1zdHJ1bmkKKzU1NzkwIDQ1OTY3MjdmNmMzOWJjNThmODFmMTdlYjhiM2Q1YjMzYTljYTkzMTggcHkzay1zdHJ1bmkKKzU1NzkxIGIwNWM2ZDQyZDRmNzIxZmI2NmJkOTM4MDkzMmI2NGUxN2FiNjBiZWUgcHkzay1zdHJ1bmkKKzU1NzkyIGYxNDFjNWY3Nzg2MGUzMGRjMzk2ODZlNDU5NWU5NDU0YjU5MGMxNWQgbGVnYWN5LXRydW5rCis1NTc5MyAwNTg3OWFiODdlNWI0ODRjOTk1YjVlNjVlNDQzMWI0OTVmNjY4ZWVmIGxlZ2FjeS10cnVuaworNTU3OTQgN2IzN2E0MzcyMzYxNjNmOGI0M2E5NjZmODNhYmJiY2U2YWY2NGNlNCBwM3lrCis1NTc5NSA5ZDAyYTRhZGY1NzQ4MWI2MGQyZjk3NWI2YzU3OWYxZDZkMWFkNTk5IHB5M2stc3RydW5pCis1NTc5NiBiMzkwMGE1MTM0NmI1MmM0ZDExZGU5OTZhZjAwODdiZDhkNzk0Nzc0IHB5M2stc3RydW5pCis1NTc5NyA1OWI3ZTkzNDY4ODVjYzYwY2JhZWQ4ZjA2YzcwYWRmODRkYmVlZjlhIHAzeWsKKzU1Nzk4IGM2MzkyMjhjZmUyM2Q0NGE5Y2ExNTkxMTZiOTM3Nzg2NmNiMjVmNjggcDN5aworNTU3OTkgYTMyNjFjZGUzYTM3ZTY4M2IyMjcxMDRjNWRlYzczZjY2NjBlMzY3MiBweTNrLXN0cnVuaQorNTU4MDAgZmVlNzFjN2FmNTJmNGYwZTA5NmVkYmE1NTkzYzExMmI3OWE0NmJiOSBweTNrLXN0cnVuaQorNTU4MDEgOTQyZDgzMDJmNGQ2ZjE1NDM5NDAyNDA2MzMyYTRjNzM0ZjZjNWY4NiBweTNrLXN0cnVuaQorNTU4MDIgYzhiMGUzYjhiNDU2YmM4ZjJhYjU5ZDQ1NWU2NzlhMzFlNGU0NzRmMyBsZWdhY3ktdHJ1bmsKKzU1ODAzIGMyYWMyMmM2Zjk4ZDAzZmNkMjg0Njk1MTRiMTcwN2JhOGE4NmExMWIgcmVsZWFzZTI1LW1haW50Cis1NTgwNCAxYmM5MDFkZGI3ZGMyMWIzYWRkYTdlOTdmMTAyMGI2YThlNmQwNGQwIGxlZ2FjeS10cnVuaworNTU4MDUgODIzYzJmNzU5MWY1MDJlYTg0ZTAwMGM0MzUzZTg5M2IxZjlhYzQ4ZCBsZWdhY3ktdHJ1bmsKKzU1ODA2IDgxNTBkMWYwMTBhYWM1NjZmMjNkMDJmYTY5ZTk1NWM3NjdlMWU3ZTcgcmVsZWFzZTI1LW1haW50Cis1NTgwNyAxNDc0NWI0ZmE3MThhNTlmNWQ1MWRhNDRjZjZlOTg4Yzk1NDk3MmI0IHB5M2stc3RydW5pCis1NTgwOCA4MjdlYzc2ODAxOTk1MzRmYzljYzRlOWJkY2ZjNGNkZDIxNjVjZGE1IHB5M2stc3RydW5pCis1NTgwOSBjZDhmMTY1YmQ3ZTI5N2E0YTFmYmJjNmFhMGFiMjkyY2Q1MDExODA1IHAzeWsKKzU1ODEwIGM2YTBiNzVkYmVjMjI4ZmY5MDc1MmNmMmI1ZTNkOTMzZGQyOTg5NDMgcHkzay1zdHJ1bmkKKzU1ODExIGVmMDljYjAxMTk1OTY0YTNmZGQ2MjFkN2UxNWY4MWQyYjBjOWIyZmYgcHkzay1zdHJ1bmkKKzU1ODEzIDU0ZWY2NDVkMDhlNGZiYjZjMzkzOTRiMGE1ZGJjNzA5MThkYWVjYzIgcHkzay1zdHJ1bmkKKzU1ODE0IGM0MWZkNTcyMzg2MDk2MDA5NzE0YmM3OGY5NDg4ZmVmMGExNmU4YzEgY3B5X21lcmdlCis1NTgxNSBlNDIwMDM5MzY4Yjc5YmUyYjE5MmQ0MDI1NTNhZDAyODI1YzFiYWZjIHB5M2stc3RydW5pCis1NTgxNyBhZTZiYTYxODhkMzhkNDA0ZTMwYWFjN2Q1MTJjNmIwNzUyMzMwZWMwIHB5M2stc3RydW5pCis1NTgxOCA2NDY0Y2M2MzhmYWEwZDE0OGY2N2UxNzBhNmEzMmI4MWNlZjNmYTE0IHB5M2stc3RydW5pCis1NTgxOSBlNjZkYWZhOTg0MDNkNjI1NjQ0NjIyNTgwNWE4ZWQxMzMzYjk1MDE1IGNweV9tZXJnZQorNTU4MjAgMTRlYzk2NzNmODk0N2M3M2YzMmRlZWRiNzQ1MmJiOGRlN2QyY2Q3YSBweTNrLXN0cnVuaQorNTU4MjEgMjQ1M2I5Mzc5MjVlODkzZmU4NjczMmQ3OTUwYzc5OWI3ODkwNDNiOCBsZWdhY3ktdHJ1bmsKKzU1ODIyIDI5ZDFhZjIyMGMzYzdhNWI1YzRhOGZkMGUxY2MwMzMyZjhkNzg0ZGIgcmVsZWFzZTI1LW1haW50Cis1NTgyMyBlMTUzYmEzNTJiNTEzYzVmOGM3OGE4ZGI3MTczOWVmODgwMmYwYWEzIHB5M2stc3RydW5pCis1NTgyNCBmNDhjMTk3ZjljMzhmZGU2ZjY0NTYzYmNhMzNiYjM3OThjMTQ4YTQxIHB5M2stc3RydW5pCis1NTgyNSA1OGExMzMzMGRmZGU5OTY3ZjkzODIyOWVmYzVlY2QxOTY0NGVhYzQ4IHB5M2stc3RydW5pCis1NTgyNiAwZDgxYTY1NjQxMmExN2Q0MWFhOGE3NTdhNjcyMDAyNzUyYzE0NDc2IHB5M2stc3RydW5pCis1NTgyNyAxNGI2NWRlOWI3OTg1NDkwYTE3OGI1NmIyMjRhNmNkODE2NWY5NDc1IHB5M2stc3RydW5pCis1NTgyOCA1MjJhNDk0NWRlZjgwZTYwYzcyM2U3YjVmMzM5MzVlMDVlNGU1MWMwIGxlZ2FjeS10cnVuaworNTU4MjkgMWJiY2QzOTI0MTdkY2E1NzNiZGMwZDI5MjMyNDIyNDhmODY4YWE0NCBsZWdhY3ktdHJ1bmsKKzU1ODMwIDEwZjhhOGE5MTllMmEwZDA5N2I3YTJjNDljMmI0NGQ1MzEyYzAxNjcgcmVsZWFzZTI1LW1haW50Cis1NTgzMSA3Yjg0ZTg5MTliMDAwYzUxMzI0YTRiYTU2ZWI3NGU0ODgzY2FhNzVlIGxlZ2FjeS10cnVuaworNTU4MzIgYjRmNGVlODRjMzBkN2FhZTgxMmRjY2Y4NmUwMzEwZDk1OWYyNjZlZSBsZWdhY3ktdHJ1bmsKKzU1ODMzIDg2OTFjYzc2ZDQ0MTkyNTBjZTUyZjJjODg2NTFhYmMwMzBhMDgwNGMgbGVnYWN5LXRydW5rCis1NTgzNCAwNjcyZGJlZDVmN2E5NzhlMTU2NjNkMmZhNjRmOTdhMWUzYjZlZDgyIGxlZ2FjeS10cnVuaworNTU4MzUgZDYwZDBkMGVlNGY4YzljODM3MjljM2JkNjdhYmNiNGRjYmIxMGE3MiByZWxlYXNlMjUtbWFpbnQKKzU1ODM2IDJiZjRkYzlkMDY0N2JjYWU1NjEyNDM4ZDY2M2FiOWQ5MmZhMzQ3MmYgcmVsZWFzZTI1LW1haW50Cis1NTgzNyAwNTI3YWI5NDNhNGYyMjJjZjg2MTgxMmNiNzc5MjMwYjg4OTY1ZDhhIHAzeWsKKzU1ODM4IDc5ZjEzYmY4ZGQyN2EyODU3OGRhOWQ2YTA5N2RmOGNjNGNmMzBlZjIgcDN5aworNTU4MzkgZTYyYjYwNmVmZjBiODM2NmVmMDBmOWFmNjZjNTI2ODdkOTU0ZDgwMSBsZWdhY3ktdHJ1bmsKKzU1ODQwIDJiZDk0MTdkYWNkNWM1M2FiZTc4NTRlZWQ2NDQ4OWMwNDliMGRmMDkgcmVsZWFzZTI1LW1haW50Cis1NTg0MSAxNmNlZTY3NGE0MTBlNTkyNjI1YmU0NjBjYzhjZmEwNWY1NzE2NDgwIGxlZ2FjeS10cnVuaworNTU4NDIgZTg0MTM5NzEyMTJkZjk0NTA5MGE0OGViZWRiNjU0ZDA1NTFlNTU4NiBsZWdhY3ktdHJ1bmsKKzU1ODQzIDI4ODA1YTcyMDQ1NDAwMmM4YjM2ZDdiNThhNmIwZjk1OTU3MzEyYWIgbGVnYWN5LXRydW5rCis1NTg0NCA3YzkyMjVkYTVmNjExNTliNDM2OGYzNDgyMzg1YmE3ODgwNzc4OTQ2IHJlbGVhc2UyNS1tYWludAorNTU4NDUgZTJjMzlhMzBlMDhkZDZkYzQ5OWY1YjVjNzAxZDc2OWU2YWQyMGFiYiBsZWdhY3ktdHJ1bmsKKzU1ODQ2IDczMWI2OTk0MjMxNzgwMTlmMDYyZjYwYWNkNjEwY2ViYjUzY2ZkNGMgcmVsZWFzZTI1LW1haW50Cis1NTg0NyAzZGM1MDdjYTJlMmJlYmI1MTAzNGRkZGY0MjlmOTM0OWIwN2MzZjJhIHAzeWsKKzU1ODQ4IDU5YzZmNGNiYjMyNjhlYzJhNDA3ODM5MzdiN2Y3ZWQ1NDg5ZmUyMTYgcHkzay1zdHJ1bmkKKzU1ODQ5IDAyMjI0ZGE2MGZkMTgzYmZlMTVhYWU5ZGZhZjFmNTZkMGQ4ZjgzZjAgcDN5aworNTU4NTAgY2QxMjVmZTgzMDUxYjRlNTA4Nzg5ZGI4NjQ0NzFjNmMyZjIxMTdmOCBweTNrLXN0cnVuaQorNTU4NTIgNjQ0Mzg1M2JhMzE0ODkxZTdjZGU3YzFlYjE0ODkxNWQxNzFhZDU2YiBwM3lrCis1NTg1MyA2YmViNzVlZWU5YzUyZjJiMTJjOWI0N2NjMWQxODg2M2UzNmI2MjNkIHAzeWsKKzU1ODU0IGIxYjhlZTgwN2JkYWRlMjE5ZjMwNmMyZTIzMTgxNTBiZjdjODU3NjEgbGVnYWN5LXRydW5rCis1NTg1NSAzZGRhYWY2MTQ4MDQ0YWI3OWUwNjc3YjIyZDUyNzRiNDBiOTFmYjVjIGxlZ2FjeS10cnVuaworNTU4NTYgYjIzOWEyYmNiMjRmMzUzYzE4MjEzNzc0ZDQwNTQ1ODY0MzQ1ODg0ZiBsZWdhY3ktdHJ1bmsKKzU1ODYwIDdlYWNjZjUzYWRiZDE0YzNhOGI3MGExOGQxZDhlOWIxZmVmNTlmNWUgbGVnYWN5LXRydW5rCis1NTg2MSA3OTkwYmIyNzU5Y2IzNzk0YzcxZTk3MWM1MGM2MzhlNjFiMDNkMjZlIHB5M2stc3RydW5pCis1NTg2MiBmNWI2NTczMWJkNmM5ZmI2MWFkYjZiNTZjNzRjM2ZkMzcwYTQ3NWVlIHB5M2stc3RydW5pCis1NTg2NCA2YTQzODJjZWI3MWUyYzkzY2ZlZWQyZTQ1ODgwZDdlZGQyODg3NTc5IHAzeWsKKzU1ODY1IDBlOWIwYjhmYzNlN2NmMWQ2ZmJhZDVjMTQ4YWUyMjVjZGVmZjc4ZTggcDN5aworNTU4NjYgYjM3YTU2OGZkNDQxZWI1NWEyYWU5NTU4NjM5YmI3NmFkMGViN2MyMCBwM3lrCis1NTg2NyAyZDVlMjM2NWM3ZGIwNWI4MzBlNTIyMmQ0ZjJiYzQ0Y2VkNzhmMDNkIHAzeWsKKzU1ODY4IDllODU3YjZjMWU1NjNlNzc0ZjQ0NDMyM2NkMDJjYTU4NDc4NmQ0ODAgcDN5aworNTU4NjkgMTlmYTljN2QzYzRmMDlkNGMyMzhjNDRmN2Y2NzAzZGQ5ZWFjZWY1MiBsZWdhY3ktdHJ1bmsKKzU1ODcwIGUxYWZlNTZjYTZiYTMwODA5MjEzMjI4NjdmMjM2ZDkzOGM2OGQyMDIgbGVnYWN5LXRydW5rCis1NTg3MSBiN2Y4ZGRkMDcyYjg1OGZhMzRkYTlhYzMyOTIwYjQ3MDBjNjllMmRjIHAzeWsKKzU1ODcyIDU5YmM4ZGEwMWM2NTljZjgxNDU3ZjBmZjBhZjAxOTE0NGFiODUzYWIgbGVnYWN5LXRydW5rCis1NTg3MyBkZGU3YzM3ZjQ1MzY0ZDc2NjFmMzgwYmFiZDhiYWUwYmRkMGJjZTQwIGxlZ2FjeS10cnVuaworNTU4NzQgYjk0ZjI4NDgwNWJlNzA4MjZlMWE1OThjNjI3MTdjZGZjMTIwY2YyMSBsZWdhY3ktdHJ1bmsKKzU1ODc2IDM2YjhkNzRkZWI5ZTkyMTAyYzliYTVmOGM0NmZjZjFkNzI3ODkzM2UgcHkzay1zdHJ1bmkKKzU1ODc3IDc1ZWZlNmJmOGEzZWNlZDg0MWZiZWZkNmE0N2I5YTYwZjE1ZGYzMWMgcmVsZWFzZTI1LW1haW50Cis1NTg3OCA3MWYzMTkyOTE1ZTEzMWUyZjkxYTlkMjg3ZmUxMzY4ZThiZDBhNDc3IHJlbGVhc2UyNS1tYWludAorNTU4NzkgNDMzMjJmZjVlMzEyYzRhNTQ5MDQ1Y2U2NTZkMTI2NDRmMTljMTA3MSBsZWdhY3ktdHJ1bmsKKzU1ODgwIGM5ZTNjODI4MzhjMzM4MzNjZDQwZjc1ZDg2MzQzM2M1MmJhMDJjMmUgcDN5aworNTU4ODEgNzNiNmNlYmM2ZjcyN2ExYzljNGFjMDRlZmQ3NzczZTEwNGIwMmJmNCBsZWdhY3ktdHJ1bmsKKzU1ODgyIGIzNTZmODcyMDk0MWIyNTkyYTJiN2QyYzdlNDUyNmFkMjE1M2RhMDMgbGVnYWN5LXRydW5rCis1NTg4MyA4MjE3OGE2MDgyZWFmYmQxNTIxNGZmNDY4NTRmNzU5MzdmYTdmOTA0IHJlbGVhc2UyNS1tYWludAorNTU4ODQgNmYzYzMzNWVmNzE2ZmZlMDRkOGQxY2FiMjYyMDQ5NmZkY2NjM2Q2YSBwM3lrCis1NTg4NSA5YjZjNDY5NDZlMDJkZDVjZmYyYWQwOWM4MjAxNzU2ZTA1MDFkNmExIGxlZ2FjeS10cnVuaworNTU4ODYgNjQ0OTg1MGM1NzU5YTUwYWMyNmUxMzYyYzgyM2UxMmU5YzliNTQxMSBwM3lrCis1NTg4NyBkMWQ3OWM3MWZmNjJjYWFkODhhNGUzYWNjNzBhMDFjYzEwOWUwYWM2IGxlZ2FjeS10cnVuaworNTU4ODggOWQ0MDVlMTMzZDBiMjQ3NzZjY2YwMzdkNjFlNmM5YzBmODc4NDVlYiByZWxlYXNlMjUtbWFpbnQKKzU1ODg5IDliYmZkODQ1NjdkNTBhNDA5ZGJjZjMyMGNmYTljMDJjYTVkOTk4MjUgbGVnYWN5LXRydW5rCis1NTg5MCBkMGU0YTMyZjZiNzg5NTEyZWI5NDQ2YjVhOTRiNWE4MWE4MTJkZjM2IGRlY2ltYWwtYnJhbmNoCis1NTg5MSAxNjBiNzMxOGEzY2FiNmUyZTIxMTRiM2RiNjUwZjJmMDkwMjEzMjQzIHB5M2stc3RydW5pCis1NTg5MiAxODA4NDZiODc1NWY5ODRmYjE5ZWZhYTQ4MzFjMmEyOWFlNDY5MTVhIHB5M2stc3RydW5pCis1NTg5MyAwNTY2MjdjYjBlNDBhMGZjZmU1MWE0Y2M1NTQ2MGVlMjUxZTdjMjU1IHB5M2stc3RydW5pCis1NTg5NCBmODNjYzliMzFhOTc3YmRlOTczNWFjMmQzNjczNGIzMjNiYjFmNzY0IHB5M2stc3RydW5pCis1NTg5NSA5NmVlZmM3YTY3YTBmYzU3ZTFiZGE0NWVkOGFkMGI5ZjFlZWYyYTEzIHB5M2stc3RydW5pCis1NTg5NiAzZTY0ZDBlYWM3NzQ4ZWM4ZjVlZTUyNTkyNzA3NDE5ZjYyMWNlNGNlIGxlZ2FjeS10cnVuaworNTU4OTcgZTBmOTI3NDE0ZGZhMzlhMTYyNjgxM2VhYmI1MTIzNDk2NTU0NmRlNyBweTNrLXN0cnVuaQorNTU4OTggNjFmZDU0NDRkOTVmODBiZTE0NDgxZjg4ZDVjNjA2YTM3MGZlMWNlMiBweTNrLXN0cnVuaQorNTU4OTkgZmFhNjI2ZDZlNjc1MTcyZGFiNTZkMWJiNDdiZjZlNjRhNjNjNWU2YiBweTNrLXN0cnVuaQorNTU5MDAgMTcxZjBlMDczNjcxMjZhY2NmYmMyN2ZkOGQ3YTVkYjYyZWM3ZDY2MCBweTNrLXN0cnVuaQorNTU5MDEgOTViZTZjM2FkZTZlOWM5NWUzZTUwMThkZjU0NDJmZGY5MjNjZThiZiBsZWdhY3ktdHJ1bmsKKzU1OTAyIGQ2NzhiYTAxNzdkYWZhMWQyMTFjYTVjMjZmMTcxYWY2M2UwZmVhZjQgcHkzay1zdHJ1bmkKKzU1OTAzIDM5MTA1MzNiNjZjN2FkNDgzODdmMzg2ZWM1Y2UxZTUxNGQ2ZjhkN2QgcHkzay1zdHJ1bmkKKzU1OTA0IDNjM2Y2MTVlZGNmZmY3YTA1Yjk1ZWUwODg2MmU4YjY1N2QyZDg5Y2QgcHkzay1zdHJ1bmkKKzU1OTA1IGM2MzBlM2E2ODg4M2RjMzQ5MDQ1NGVhN2MyZTM4Y2NmYjU0MGY2YTUgcDN5aworNTU5MDYgNTdjMzQ0MTQ5NzI3ZjJlNGY5MWNlZWJlOTJlNjI5MjEyMWE0ZTcwNyBwM3lrCis1NTkwNyAwMmQzZWQyY2MzNDc1OTAwMjJjMDhhNzI4M2Y3NTU3ZjI3NmFmNTkwIHAzeWsKKzU1OTA4IDE5MGUyZjA2OWIxODE4MDJhNjMxMGMxYmNlZGQwMDcyMGRlNjdjMTQgcDN5aworNTU5MTAgNWUxNDY5Njg2OGY5NzEzOWY2Mjk0YjEwNDE5ZTgzYjE2ZmVhY2M2OSBwM3lrCis1NTkxMSA2ZjcyMjA4YzY0M2I1ZTQ5MDFhYjEyNGU1N2U4MGM1Y2JjNmNhOGU0IHAzeWsKKzU1OTEyIDVjMjZmZTA3ZGVkZjVkODY4NWJjMTM4MTM1MGUwNjQ5OTJhMmRlMGIgcDN5aworNTU5MTMgN2JmODM2MDk4MGYxZjNjMTgxMjQzOGU1NzFkMThkMGE5OGUxNWM5MCBwM3lrCis1NTkxNCA4ZGIwNjk2NzYyYjRmMTdkNzNjYzZhZWI0YTk2M2NiZDljOTNjOWM1IHAzeWsKKzU1OTE1IGNhNjkzZjRmZDA1ZDBlMjliMDgwODMzZDBjNjNhNDUzZTg4ZTg1MTIgcHkzay1zdHJ1bmkKKzU1OTE2IDg4MTIxNjJmMGY4MmE2OThjMTE2NTE3NjRlNzAwNjEyNmE1NzE4ZWUgcHkzay1zdHJ1bmkKKzU1OTE3IDg4MWFiMWQ0MTdlYmUzZmVkYjQ3YjhmM2I4Y2U0YzIwYTVmOTkxOTUgcHkzay1zdHJ1bmkKKzU1OTE4IDgwMmM4NGY5OWFhZDE1YjY2MGI0ZWY1MDkzMzJhOTQyZDJlODAzY2EgcHkzay1zdHJ1bmkKKzU1OTE5IDA2MzUzMGZjYzMyZTllMTQ1Y2VmMmNhMzNjMzQ2NmY5M2ZjNTBlYTAgcHkzay1zdHJ1bmkKKzU1OTIwIDZkNjQ3MjFlY2QyNjhjZTE1ZTFlN2ZjNjg3NDdjOTY3MDFiOGNhYjYgcHkzay1zdHJ1bmkKKzU1OTIxIDNmYWE4YzgwOTcwMjZiZTVmMWMwZDYwNDBlOTVhMDI3NzdmYWI4MTMgcHkzay1zdHJ1bmkKKzU1OTIzIGE5OWE5NmI1YjNmNWNjMTYyNzdjZGM0ZjUwZDkxNjRjMDk3MWMwYjcgcDN5aworNTU5MjQgMTcyZGNlNWZhYmExZGJhYTU0NzJmODAxZDVlZTQzZWQ3NjUwYmViOSBwM3lrCis1NTkyNSAzNDczYTY4NWU1ZTdmOGU0NGU5YjUzNmFmZjI4OTljMzhmYjE3MDQyIHB5M2stc3RydW5pCis1NTkyNiBhZjI2MDgwMDQwMjFkNmVkYjIwN2U0ZjVkMTk1MmQxOGY5Y2ZmY2NmIGxlZ2FjeS10cnVuaworNTU5MjcgMDQ1OWI4OGUxNGI0MTQ4MzcyNDQzMDYyZGMwM2RiYTAwMzk4OTYyZCBsZWdhY3ktdHJ1bmsKKzU1OTI4IGJhNWQxYTM5NzdlOTNkMTBkZTI5NzllOGJiZDA1YWZjMzg5YWU0NDkgcHkzay1zdHJ1bmkKKzU1OTI5IDBiZDc1OTE2ZWM1ODE5MTJjYTBkM2UzZGI3NmFjOTA5YjUyYmE1OGYgbGVnYWN5LXRydW5rCis1NTkzMCBkMGNmZmY4OTMwZTU1YWVlNzBlYTEzOGU1YmY4YTA3YmY1OWQxMDkwIGxlZ2FjeS10cnVuaworNTU5MzEgZGM3YTgyYzdjZTllY2I1ODVjMjhjMGQ1OGI4ZGYyZjFkZWM1MTQ4NiBsZWdhY3ktdHJ1bmsKKzU1OTMyIGJjOTBmYzliNzBiNzYyMzk3YTFmODRhNDU0NjRiY2FhZmI4MDhjOGIgcHkzay1zdHJ1bmkKKzU1OTMzIDQ4NzcwMDgwNzRhOTFiODA0NDkwNGNlNTQzNTZlNDViNWQxZmNiYTkgcHkzay1zdHJ1bmkKKzU1OTM0IDY1N2ZlNzlhNmRmZWJiM2E1MDc2ZmViOWQ3MzNmZGYxMGI4MjM3ZTYgbGVnYWN5LXRydW5rCis1NTkzNSBlOGIyMDYwY2NiNTljN2FiNTA5YTA4ZjViZmI5YWFiMzM3ODgxYmQ4IHB5M2stc3RydW5pCis1NTkzNiA0NWJiOTdhNGU4YjY3MTE3OGI2NTNkMDExNTBiYmJmYTZhOGZlZTFjIHB5M2stc3RydW5pCis1NTkzNyA0ZmI4NWU2ZjgyZTVlMmYwMzIyYzY1YjIyNzVmNmIzNDYwNWQxYWNmIGxlZ2FjeS10cnVuaworNTU5MzggZTlmYjA2YjQ0NDZlMGU5ZTk0ZTk2NGM1Y2JjNmYyNGExYThlNjkwNyBsZWdhY3ktdHJ1bmsKKzU1OTM5IDU2MDU3MTliZWVlM2NhZjUzODNjYzVmNThiMDhiMTc1Y2QwNDdjNmMgcDN5aworNTU5NDMgODI1MDQxZmM4ZTJjMWVkNGEzYmZmMTc2NDA1OGI4NTNlZmRmODQxOSBweTNrLXN0cnVuaQorNTU5NDQgY2U2M2E1ZGNiMGFmMTM0MTVmOWJmYTQ3NTUxY2E0ODc4OWNiMDI1ZiBweTNrLXN0cnVuaQorNTU5NDUgZjgzM2I0M2MyNzU2ODllYjI0NGU2YmQxZDQwODUyNTYxZjBlOGNlOCBweTNrLXN0cnVuaQorNTU5NDYgZmJhYmRiMGQ3ZGQyMmM0YTYxNjc1MWU4N2U5MTcwZDM3MGNmYWEwMSBweTNrLXN0cnVuaQorNTU5NDcgOGNhMWQzYTdmNGYwZjlkZjdlODQyOTEyYWU3Nzg4NTVmOTM2M2E5MCBweTNrLXN0cnVuaQorNTU5NDggZGU4ODAzODE2NTRhZjZmNzIwZWZkNDMzMzEwYmExNTM5ZTc4NWY2MyBsZWdhY3ktdHJ1bmsKKzU1OTQ5IDAzMThhMGY1NDUyMGU0MjcxYTk4YzFiNzkwMTZkMTcyN2E5YmQwMmUgcmVsZWFzZTI1LW1haW50Cis1NTk1NCA2MGJlMjc2MTA1N2JmZGQzZTQzMThjYTUwM2FlOTRkYzg5NmQ5NjBkIHAzeWsKKzU1OTU2IGI1MzkxMjE0ZGYzNWRlZTdlNjVmNjlmOWE0YzQ4YTYwZTE1MTM4MTIgbGVnYWN5LXRydW5rCis1NTk1NyAzZDllMGVmY2E1ZDM1Mjk2NDNkYmFjOWRkNzcwZjMyYTU0NDgzZjhhIGxlZ2FjeS10cnVuaworNTU5NTggNTBiZWJlZGM2MTRlZDU0ZDU0NDM5YzViZjYyZTA4M2NkNWExZTIxNiBsZWdhY3ktdHJ1bmsKKzU1OTU5IDllMTE0YjFmZDk0ZTgzODA4ZmY1MDgyMGNmNGE4OWRhZDM3MTI2YzIgcDN5aworNTU5NjAgMDVmMWZkMzEzNDRkZDhiZTY4MDhhNGQwZWUyOWVmZmUxMmU5MjM4NCBweTNrLXN0cnVuaQorNTU5NjEgZmZiMWFlNzIzM2EyMjk5OGYxOTkxYTUwYTM4Y2U0Yjg1ZjdkYTk0MSBweTNrLXN0cnVuaQorNTU5NjIgMzcxODllMzc1ZWM3OTZhYjE2MDdjNWQzZjk4MTkzM2NhNzZlMDA5ZCBsZWdhY3ktdHJ1bmsKKzU1OTYzIDIyOWMyOGNiOWFmYjIzMjljMGY1NTdiYWRiZDVhZjA4YjM0NjJkNzMgcHkzay1zdHJ1bmkKKzU1OTY0IDUzNjk4ZjlhNGViNzZlNTQ4YjJhMGI2NzZjYWE3Nzg1M2Q2ZDBiMGUgcHkzay1zdHJ1bmkKKzU1OTY1IDU2NzVmNmMzZmY4M2QxZjMwN2YxMjlmMDJmZDBjYWQwZjhhOGFmN2QgcHkzay1zdHJ1bmkKKzU1OTY2IDk3Mzk5MmE3NDQwYTFjYzU4MjEwODUyNThjYzY2MzZlZDI5MmFjMzcgcHkzay1zdHJ1bmkKKzU1OTY3IGI3ZTU0OTg1NzMyMTU5N2JhOWQ0N2QzNTJlMzdjYzRiZGE5NDY1NTkgcHkzay1zdHJ1bmkKKzU1OTY4IDBlMDEwZGIxMjJjNzFhMmUyM2M2MmUwNTBhZTJkZWZjZGE1Yzk5YjAgcHkzay1zdHJ1bmkKKzU1OTY5IDg2OTM3YjBjZDU2YTZjMGFhYjk5MDM0MzZmMTc1Nzk1NDg1ZDZhMmQgcHkzay1zdHJ1bmkKKzU1OTcwIDcyZmM3ZDAyOWQzZDJiM2MxZDZmMTA4M2Y2OTQyYmZhNmY3NDA2NDAgcHkzay1zdHJ1bmkKKzU1OTcxIGQxN2EyNzI0Nzk4NjMwMjY1YWQwMzU0ZDk2NDY0NzYwYmQ5NzYyYTYgcHkzay1zdHJ1bmkKKzU1OTcyIDM2NTY3ZmUwMmVhNWQxMTE0ZDEzYWFlNTM3Zjk1ZDQ3MGExMTczMmYgY3B5X21lcmdlCis1NTk3MyA0OTdmYWRlMWY4NzM0ODI0NmFhNDA2ZDdjNGU4MzRjOWM3MjZmYjc3IGNweV9tZXJnZQorNTU5NzQgMmNmN2NlNDFlYzYwMzU5YjI5YzBhOTdhZTdkMGVmZTMxMDU1MDg4NCBjcHlfbWVyZ2UKKzU1OTc1IGZkOGRkNzQ0NzBmOTU5MDQ3ZWY5MzRhOTlkNWYwMzQ1NDI1OTk1NzggbGVnYWN5LXRydW5rCis1NTk3NiA0NGI0NGIwYTlmZTI1N2M3NDhmOTM3NTFkNTc0MDBjY2I0ZWFlYzBiIHJlbGVhc2UyNS1tYWludAorNTU5NzcgMjcxZjY4NmY2MjE4MTFkY2M2MzI4MjM0OTM1YjQxMDY4Y2U5ODlhNCBjcHlfbWVyZ2UKKzU1OTc4IGY2NTY3MmI4ZTdkMWZlZTk0N2U2ZmI5MWE4NWM5MjMzMjNjMjQ5ZmQgcHkzay1zdHJ1bmkKKzU1OTg0IDg1YzQ0NmY0YjE5NjIyY2M4OGM4YTdhZmI0OGU4OTE0MzI1NTU4NWEgbGVnYWN5LXRydW5rCis1NTk4NSA0ZjZjZTk4YjA2MGQxZmM2Yzk0NTZjYmQ2ZjU0ZjFhNjVlYjRhMWQ4IHAzeWsKKzU1OTg2IDI0NjMyNGIzOTg5NmIxMzBiZDcyZWQxODhjNTlhNDlhOWY3ZjRmMGMgcHkzay1zdHJ1bmkKKzU1OTg3IDU4MzhiZWM3YzExNThhZTMwMDU3NjVlNjA3ZTk4N2QzYjA0ZTQ5YzQgcHkzay1zdHJ1bmkKKzU1OTkxIDY3MjdjYzllZDA5ZmYxZjViMDVkYjMxNmI3MDQ5NDlkOWZjOGJjMzYgcHkzay1zdHJ1bmkKKzU1OTk1IDQ4Nzc0N2Q5MTBjNzYyYzAyZWEzZGU3YWZkNmQzOGZlMTk0MjkyNmIgcmVsZWFzZTI1LW1haW50Cis1NTk5NiBkNmQxZTg2YWQ0NmMxZTkwZDdlOGUzMTQ3MGZhNGU4MjVhMDU0YzllIGNweV9tZXJnZQorNTYwMDEgZWQ2YzgyZGExYTZjZWViMWQ5NWQxODc5Y2QwNDEzZDFmYjYyNThiMyBsZWdhY3ktdHJ1bmsKKzU2MDAyIDliYTk5MmY2NGU5NTdmMDc4NmMwNTg0NDYwNWQyYTNhYjVmM2JjYTYgY3B5X21lcmdlCis1NjAwMyBlNGU2YTRkN2MxNmU5NThjZTQ5MTQwMjUzOTFjOTFiOGNlMjJiOTU1IHAzeWsKKzU2MDA0IDdkN2M0ODA1NjNlMjFjY2ZkYzA1YjhhN2VmMTgzNTQwZWEzYzU4YmYgcDN5aworNTYwMDUgOGU4NjA5NDMyZTU2Yzg5MWZhM2E4MWI1NzUzNGI0OGI1N2E4NTA4ZiBsZWdhY3ktdHJ1bmsKKzU2MDA2IGNlZDhkYjYxOGU1YjZiZWE5NTk5NjgxNDg2NDc0ZjEyNGM5MGFkZWQgbGVnYWN5LXRydW5rCis1NjAwNyA0MWQ0NWMyMmYxNDc4NjFkMjg5OTVlYzc1ZmNjODBkMGUyOGE5YTk1IHJlbGVhc2UyNS1tYWludAorNTYwMDkgODUzYjg0MDkzMTUxNDZmNDEzMjQzZjBlY2U5NjRhMDM0NjQ1MjE1NyBsZWdhY3ktdHJ1bmsKKzU2MDEwIDU2ZWMzNDdkYThlNDJmNGQ2NDhmNzU5YTJlNWEwYjIyNjgwNjUzYWQgcmVsZWFzZTI1LW1haW50Cis1NjAxMSBhOWFlY2JmNWIxM2YwMjNjN2RjOTg3MjIzMzM4OGI0NjU5MjAyMDQwIGxlZ2FjeS10cnVuaworNTYwMTIgMDJkYTYzMDU4ZDZiMTRlOWExMDY0NDI5ODk2ZWJiYTQ2ZmRiNWQ5OCBsZWdhY3ktdHJ1bmsKKzU2MDEzIDU5NDk3ZWMyOGNhYWJlMTM0MmE2NDUxMzJhMzcwMTViZTQxZDIzY2EgcDN5aworNTYwMTQgMDgwNTE1NzczNGY4ZDlkYzIwZjhjNzNkOTQ5NTRmYjM1MTMwNDI1MyBwM3lrCis1NjAxNSAyNTlkZTM4NzQ0MjA2MDIyMjQ2NzkwNDJlNDg2OTI4YzNhN2M5YzAwIHAzeWsKKzU2MDE2IDgyODIzZTEzYjY2Y2Q5ZTYwYjBhNmFiMmNhNDk4YWE2ZDgzMDhlMTQgcDN5aworNTYwMTcgMGUyMDQzNjIzMjllZGU3Mjk1NGUwM2U5NzMwNjQ2ODUyZWY5MmVhZSBwM3lrCis1NjAxOCBiNDU2NWUwOTYxMzFmMWQxZGYwNDE3OTg1N2Y3MDM4YzI1NmI0OTliIHAzeWsKKzU2MDE5IGIyZTczMzZmZWI4MjZhNzZkYmFkOTZhODE2ZmFlNGJkYmQ2MzZhMzYgbGVnYWN5LXRydW5rCis1NjAyMCBlNGY2NDljNGY0NTcyNWVkZjZkOWJiZGM2ZTY2MThmYmM3MDM5NjY2IHB5M2stc3RydW5pCis1NjAyMSAzMmZlMmI5ZTlmMTExNDMzYzc3ODgyMTExODllMDA5YzZjMTE5MzgzIHB5M2stc3RydW5pCis1NjAyMiBlYmM4N2I5NGU2ZWFiNWQxMDM4MDMwOTk1ODNiYmJjMzIyMzgzZmU2IHB5M2stc3RydW5pCis1NjAyMyBhNGFlNjI2NTNhNWNiMTY5Y2RlMGY1YWVmZDUwYmExNGJlMGFjNzExIGxlZ2FjeS10cnVuaworNTYwMzcgN2M4OTJlNzNlOGU0OWY1MDU1OGEyNjA5MWYyMTY5YWFmOWI0YzZlNSBwM3lrCis1NjAzOCBhYWI5MDgwYWM0YzdlYTM2OWUyZDc4YTBkMTY0YWEwZWY5NTUzNmQwIGxlZ2FjeS10cnVuaworNTYwMzkgNjZjODM0N2E2NGRkYWVkMDVjMWRkODU4NjgwNmI3ZTg2Njg5NTgxYyByZWxlYXNlMjUtbWFpbnQKKzU2MDQwIDA0YTQxODViZDRkM2NjMTY1MzVkMDZjOTFkOTY1ZjVhNmUzNGI1N2QgbGVnYWN5LXRydW5rCis1NjA0MSA2N2Y3MDk3YzM0ZjM0OTk4MjgwNTFmYWM2ZWQzMjQ0OTNkMDUxN2U2IHJlbGVhc2UyNS1tYWludAorNTYwNDMgNzBhMDgzMWZlZGE2OTBlNDRhNTI5ODEwZjI4YmYyOThjYmNlYjMwOCBweTNrLXN0cnVuaQorNTYwNDQgNGRiMGEwY2M1N2FiZWU5NTQxMWNlMGQxOTkzNzRjZWYyZjI4ZDQyZCBweTNrLXN0cnVuaQorNTYwNDUgMDQxMzllMzBlNjRkYTk1MWVmN2ZkNTg4ZjNmYTI3Yjc3MGMwNjY5ZCBkZWNpbWFsLWJyYW5jaAorNTYwNDYgODQyNTMzNDc3Y2VhNTQ0NDllYjE3NzdjNjI1NjIxMWY1NTE0MjUyNiBweTNrLXN0cnVuaQorNTYwNDcgMWYwNmQ1ZWU0MGJkN2YyYzFhYzg3YTMwMWY2Yjg5NTIzYTA1ZTI5OSBweTNrLXN0cnVuaQorNTYwNDggNjcxMGY0NTNjZjRhOGEyZTk1NzU5YjdiZjNmZTg2Mjc3ZDIwZmY4NSBweTNrLXN0cnVuaQorNTYwNDkgMzgzYzg5MDdiZWEwNDQ4MDMxZGZiODRmN2NlNTE0M2VmOGU0MjdjNiBweTNrLXN0cnVuaQorNTYwNTggNmIzMjViMDY1YWVkYWVmMzFkYWNlNWJhOTZlNzdjZDNjMWExOTBmZSBiY2Fubm9uLW9iamNhcAorNTYwNjAgMzllYWE5YzAyNDZlNGEyYjIwODM4ZDQ0YzZlZjJmYjg5MGM5YjZiYiBwM3lrCis1NjA2OSBlMTNkNWIxMDUzZWY4MzE5ZmU2ZjFlMjA4NzYzZDg0MmUyMzY2ZDA5IHAzeWsKKzU2MDcwIGJlOWRlMDViYjg4OWNjMmI5ZDExZWQwNTc4OTU4MzQ2ZWFmODhiODAgcDN5aworNTYwNzEgOTU5Mjc2ODQ0NzZiZTE2YmRiM2ZhMDdlZjUyZTRhNzFkYjgzOWI1MCBwM3lrCis1NjA3MiBmOTdiNjZlOWFhOGYwZDdiNjZmNmFkMmMwZmI0YTZmMmVkOTM5NmI3IGRlY2ltYWwtYnJhbmNoCis1NjA3MyA0NTkwMTI5ZTRjMmI1ZGY4ZDRkMjY3ZGE4OWUyZGM2ZDAzMTc1NGY2IHB5M2stc3RydW5pCis1NjA3NCA3OWMyNjU2MDU2ZjY3NWVhYTg1MGEyNWI0ZTAxN2NlNTJkZjdkNDkzIHB5M2stc3RydW5pCis1NjA3NSA4ZmM5MzIxNWMwY2NmYmIwNDA4ODE0Y2E3M2ZmZWYzMDNmYjg2ZGI3IHB5M2stc3RydW5pCis1NjA3OCBjMjkxZDJmNmQwMTdmMjUxNWZjZDcxOTRjZGM3NWU5MGNiZjQyNGE3IGNweV9tZXJnZQorNTYwNzkgYjliZjdjNzYwYTEwMjViYmFlYzdjMjkxNDQzMjhhZDBkZGZlNzI5ZCBjcHlfbWVyZ2UKKzU2MDgwIDliNTZjOTE2MjUzNDc0YWE3NmIxNGI3ZjY4YTNiOTk0ZTBlN2UwZWYgY3B5X21lcmdlCis1NjA4MyBlODc2ZjY0MzlkYzdiYzVjMmI2NjVlZGY4NjhkZTQ0YjU3Y2VhNjQ4IGNweV9tZXJnZQorNTYwODQgNDFlOGFkMmM5YmE5OTFjOTVhMDIxMzk0YzlkYzViZjI4NDM2OWQzMiBsZWdhY3ktdHJ1bmsKKzU2MDg1IGQ4MzdiNTg0NmQ0MTRmY2Q4MGY2OWY1MTM4ZmMwZjYzOGIwMTE2M2UgcmVsZWFzZTI1LW1haW50Cis1NjA4OSA5YTZhYzlhN2UzYTRmZjlmYzY5MTNhMjkyNDMxMzIyZGE2OGI2ODFkIHAzeWsKKzU2MDkwIGRiMzIwODcwNGFjMGFmOWQ0OTM3NDRhMGRkMjYwNDVjYjE1Y2MxNTcgYmNhbm5vbi1vYmpjYXAKKzU2MDkxIDcwNWJjNzNlZTQzMzFjOGMzMGM4Y2MyM2YyMDgxZjBjMzk2OWJkNjUgbGVnYWN5LXRydW5rCis1NjA5MiBiMDA3NGZkOTI2MjFjNjczYzE3MmJlNjM5MmEwMDI3YmQzZGE4YzQ3IHJlbGVhc2UyNS1tYWludAorNTYwOTUgYmY2ZWI4ODQ3YTQyNDQwMjlkYjBmZGE1M2I2OGE1ODUwOTU1YTg4MSBiY2Fubm9uLW9iamNhcAorNTYwOTYgMTU5MDMxZGI4ZTlmMjg1NzMwNzVlNWVhNWE2YjJjNzVmMzE5Zjg5YSBiY2Fubm9uLW9iamNhcAorNTYwOTcgNjMzYjA0OTQ3YWM0NjA1YzA2NGI5YmY4OWMyYzBkNzZmOTU4MWNmMSBjcHlfbWVyZ2UKKzU2MDk4IGJiMDllYWQwNDg0MDUzYWRhOTU1ODcwNzJkODEzZjJjYmYwYWZmNTkgY3B5X21lcmdlCis1NjEwMCBhMjAwMjQwZGVhOGFiNzYzOWU1YmNhZTQ1NjI4ZDg5ZmUwMDFlODViIGJjYW5ub24tb2JqY2FwCis1NjEwMSAzZjU4OWM1NjQ0MjZkODdjMWQwNTcyZDMwMmRlNjA5NTIzNTFiZWI1IGJjYW5ub24tb2JqY2FwCis1NjExMSA3YTExOGFjMTQ5YTA2NjcwMDNhNWVmZjNkYzI2ZjM5YWU4NmVmM2Q2IGJjYW5ub24tb2JqY2FwCis1NjExMiA1MGQzMjY0N2IwMzU2NTJhYjI3NTJiNzMyMDA4NmQyN2VjMmM1ZWZmIGJjYW5ub24tb2JqY2FwCis1NjEyMyA1ZjE0OGY2ZTBhNDY3OThlYWViMjU1ZGJkMjhkMTAwN2ExYTE0MTI5IGNweV9tZXJnZQorNTYxMjQgMzE0YWRjM2I3YmI0Nzk5OGI5ZGU2OTNkMTI2YTQzNmFmY2Y0MTZlYyBwM3lrCis1NjEyNSA3ZmYzNWFkNDY2ZWM1NWU4ZGIzYmYzM2M3MGM5YzdmNjFhODYwMzdjIHB5M2stc3RydW5pCis1NjEyNiA4NjNlZDdjZDQ1ZGM4ZWQ1NjYxZDM5NzFjZjBkYTc2MmQwNzBhMGRiIHB5M2stc3RydW5pCis1NjEyNyA0MTY3NjgwYjNhZTI0ZjNmNjJjMTA5YmM0ZGY2ZjJlYjMyYjYxNGM0IHAzeWsKKzU2MTI4IGE4NTgyZTI1NzQ4YjcyOTU3ZmNkNDdkMjlkYTE0M2JmNDJlNmI2MzEgcHkzay1zdHJ1bmkKKzU2MTI5IGRhNGNjNjc2NzNhODUxYjY4OTYxMTdjMjlhMDQwMDI5MmVhYTMzNGQgbGVnYWN5LXRydW5rCis1NjEzMCBjNzZhOTQzMjJjY2M4OGNmYzQ0MTk3YWZiZGY1MjY3OGViOGUxOGEwIHJlbGVhc2UyNS1tYWludAorNTYxMzQgNzhiYzA3OGM3MzUwZTJmOWZmNjIxYWY0MzM2MGUxNjBmMzFhZDg4NiBweTNrLXN0cnVuaQorNTYxMzUgODM3NTM1OTk0MjBkYzkzOGIyY2I1ZTA1MTQ3NDBkMTUxMGFkOWRjZiBwM3lrCis1NjEzNiAyODk5Y2Y4Y2E1NzI1ZjBhMDQxOTlkMjhhZTZiM2Q5YmUzMmM1MDBhIHAzeWsKKzU2MTM3IGRjY2YxNGZlMDBlY2QzY2MxZTY0N2FlMTIzMTBkNzI5MzIwZjZhYzAgbGVnYWN5LXRydW5rCis1NjEzOCA5MDg1ODBiOWM4ZTEwYmYyYjQzM2NiZTlmYzRjYzEwZWM3ZjcwYzgxIHJlbGVhc2UyNS1tYWludAorNTYxMzkgZjUzNTcxMjRjZWZlNTQyMTJkMjA0MmRkNTczYWRiYzdjYjJkNTg1NyBwM3lrCis1NjE0MCAxZjdiNjZhOWZmYjBkMjcyYjE3YjBkOWQ2MDkwYWI3ZDg2YTgxMzgwIHB5M2stc3RydW5pCis1NjE0MSBlM2JjYjk4NGIyNGM4ZTlkOTE5YTRlYTY2OWI3ZjIxNTU5MWJlMzhmIGJjYW5ub24tb2JqY2FwCis1NjE0MiBkNGM0Zjg5Yzc3N2Q0NTM5YWRlZWViM2NiYzAwODAxMjg5NzFjMmQ2IHAzeWsKKzU2MTQzIDQwN2QxNzRkYjZkZWM3ZmY3N2E0YTdiMDY5MzQ2M2I3NDdhMmQwMWIgbGVnYWN5LXRydW5rCis1NjE0NCBjM2VhMjc3OWM2MzU4YTUyNTM1YTJjZTY0NjI3NjdiZjhjMDZhM2ZjIHJlbGVhc2UyNS1tYWludAorNTYxNDcgNjA0YmZhNjNjMTEzODlmZGE5M2JhYjdkZjE0NGZlOTk4ZTAxYmU1NyBwM3lrCis1NjE0OCAyMTM3NDM2OTM3NWMxNjU5OGY3MTE1YmZjM2MyMGJlOGJkNDRjODdkIGNweV9tZXJnZQorNTYxNDkgYWI3NGJkYmY2ZGFhZmRiN2UxY2Y4Zjc1MTA2N2Y3ZDM4YWVjNzNhYiBjcHlfbWVyZ2UKKzU2MTUwIGViMmQ1MjU4NjAxNzU4NzlmYWQ1OTU2NWY0MmZjYzgwMTM2OWY3ZTcgY3B5X21lcmdlCis1NjE1MSBmZWIyNzZjMDg5MTcxYzhkZjI4M2ExZDFkOGJlYTZiYjViZTdjN2U1IGNweV9tZXJnZQorNTYxNTIgYzJjYzEyMDNiZDY5Yzk2ZWQ5ODIzYjNhYmJlMzkyYzZhOWYwNGQ4OCBjcHlfbWVyZ2UKKzU2MTUzIDgxN2NiZmY5ZmJlYjRkYjQ0NWVhNDI0NTI0ODk0YmY2MjU0MDMwZjQgY3B5X21lcmdlCis1NjE1NCA4YTE3ZTRjNDJhMzVmYjk2OWI5YTdlNDY0ZjViMDQ4OWVjMGZmNTc0IGNweV9tZXJnZQorNTYxNTUgNWIxZTc0ZmM0MmI4MWZiNTA2YzE1NDUzNzkwOWExY2Q0MGY5YzBhMiBwM3lrCis1NjE1NyBhNTNlNDhiZTZkZjk1NTJjNjJmZDYxMzA0N2MxYzY3Yzk3MWQ0NTkwIHB5M2stc3RydW5pCis1NjE1OCAwZGM2MjY0N2FmZjBjY2RjNzk1NDFiYjQ5YTY5NzFkODI5MGI2ZTk0IHB5M2stc3RydW5pCis1NjE1OSBhZTg3MDIyOGQ1ZjMzNGUzOTE3Mjc1NjNkYWM5OGVjZGMwNjhhYjEzIHB5M2stc3RydW5pCis1NjE2MCAzMWY0NzdiMDg4YzlmNjIzYmJmYTFlMzFjMmUwM2MzMzAzZjUxYzMwIGNweV9tZXJnZQorNTYxNjEgOGVlYWE5OTIzOTAxZjM4ODQ1MjIwOTc3ZmRlYjcxMTczNWU5ZjM1OSBweTNrLXN0cnVuaQorNTYxNjIgMDEwMmY1ZTUzNzAzOWY2MjY4NjQ2NzdmOGVlMjBlOTdjZTQzZjc3MiBweTNrLXN0cnVuaQorNTYxNjQgNTE4N2VkNjhhYmUwYjhkM2UzZTcxYTFhZGQ0NGUzNjgyNzVhYmQ2NyBweTNrLXN0cnVuaQorNTYxNjUgOGE5NGNlNTAyMjA5YjA5NTVhNDFlYjYyNzUxODVkMjQxMWZhY2NjMiBweTNrLXN0cnVuaQorNTYxNjYgZTQ3Njk5NzA0OGEwYWI1MTNkNTdmMjIxZWVhMDEyYWMwZTgwYWMzMiBweTNrLXN0cnVuaQorNTYxNjcgZTZjNWZmYTZkYzY3MzgxNGVmYzk0OGQ4Mjk4ZDllYTQwMTljZTZhNCBweTNrLXN0cnVuaQorNTYxNjggNDBhNmI5M2Y5ZTBiZThhMTE2ZGM2ZjZhOGM5YjFjMTRmNmUxMjcwYyBweTNrLXN0cnVuaQorNTYxNjkgM2Y3ODI3ODEwMjBiZTIyZjk1MWIzMmNmNDJkNmEwODIxNDc2ZmNlNiBjcHlfbWVyZ2UKKzU2MTcwIGIwZWFiYThiOWYwMjkzNTYyMzNhZTFiNzcyYmQ4ZmE5YTdiNDIwNzAgbGVnYWN5LXRydW5rCis1NjE3MyA3OTZjNzk2MjM5MzgzNjc1MWM5NjIwY2QxMjRjMmE1OGNjNDYwMWMwIGNweV9tZXJnZQorNTYxNzQgOGIyZmViZmRhNWY5OWEzOWVlNzYzYWRmMzFlMGZlODk2YjQxOGE5ZSBjcHlfbWVyZ2UKKzU2MTc1IGM0MDQ0ZTQ3ZmMxYWZlZDBlNzRmNTlmYmQ0YThkMjViNzMwZDJkNDUgY3B5X21lcmdlCis1NjE3NiA5ZTVhMzk2MDlhMjA4ZGQxZWQwYTQ5ZWRmNGRlNzAyZDIwMmI5YWRhIGxlZ2FjeS10cnVuaworNTYxNzcgZDYzNjJlZDU0OGIwYjE3MGRjNTIzYjlmYjAzMGU5NWIwMGViYzIzZCBsZWdhY3ktdHJ1bmsKKzU2MTgxIDcyMjRlNDIwODFiZDM4MWJiOTg4YWM2MGI1OTQ2OTkwMTViNzE0MGEgY3B5X21lcmdlCis1NjE4MiBkZDg5NjA1MTI2ZTU4NWNkZmQxZDdkMDY4OGQ0YjhmYzQ5NDk4MTUwIGNweV9tZXJnZQorNTYxODMgZGJjNzUzYzAyMDA3MzYyZGU3MDU4YzgyYWEyY2Q0MWRkM2Q3MTI3NSBjcHlfbWVyZ2UKKzU2MTg0IDljMDhkOTE2OWMxY2Q0NDkyMTQxMTMxMzExMzFjMTc4M2U3NWYxYjkgY3B5X21lcmdlCis1NjE4NSAzNzQxM2Y2MjExMjBhMjhiMDQ3NWI5NjA4OTdkNGQ2ZDQzOGZmNDJkIGNweV9tZXJnZQorNTYxODYgMDRlMjRiNzkyMThhZjI4OTFkODI4ZDdkOTRkNDZmZWU5OTY0NjEwZSBjcHlfbWVyZ2UKKzU2MTkzIGU2MmUyYjgxMTM2YTIyZDk2N2ZhNDcyY2Q0MjhiMmRmNWZjMjkzMjYgY3B5X21lcmdlCis1NjE5NCBiMmZmYzAyODU4NWZiMmQwZmE4NDk0MWVmOWM0OWEwMmUxMmIzMmYxIGNweV9tZXJnZQorNTYxOTUgNGZhNjgzODdiNmIzNTllOWMwNTBlNjJkN2UxNTg3NTIwOTM2M2JkMiBjcHlfbWVyZ2UKKzU2MTk2IGFhMzBiMmIwNTk4ZTQ4MDdjYmI0OTVkY2Q1YjdiODI5YzU3MTAyOTkgY3B5X21lcmdlCis1NjIwMiA1MzdmZThkYjgzMzQ5ODlkMDMxMTc5NzRmYjYyZjJjYzAyOTc5YjFhIHAzeWsKKzU2MjAzIDc0ZDExZDQ0Mjg5ODVjYTg2NGQwOWNlOGE0MzE4NjBhZmUwYmIwMzQgcmVsZWFzZTI1LW1haW50Cis1NjIwNCA3ODJmNGIzZTRkYjA4ZTM2MGQyYTBjMmY5ZTVhMzYxNzcxMDE0ZTUxIGxlZ2FjeS10cnVuaworNTYyMDUgMjYzOGI5NzQ5MzcxNDdiODgxOWM2YTRjZjlmZjRiMmJiZjAwOTAzMSByZWxlYXNlMjUtbWFpbnQKKzU2MjA2IGVjNGI3M2NiMjQ0Mzk0NzY3MWIxNzNkNDhiODc3MWMyMjk2MDEyNTAgcmVsZWFzZTI1LW1haW50Cis1NjIwNyBkODlkOTAwYzVkNzgyZDZmMDQxYTIyMDA4MmIxZjJmYmYyMjUxOGVhIGxlZ2FjeS10cnVuaworNTYyMDggYmYyMjJlYmZmMGU1NDc0M2M1YzRiN2M2NmFjZmE4ZmRkYjg1NzVmMCBweTNrLXN0cnVuaQorNTYyMDkgMGViODQwZjJkYWZhOWQ5YTIxOWU4YzVhMGRiYTIwNTQ4NTlkMGVkYSBweTNrLXN0cnVuaQorNTYyMTAgYTYyZWNjYjUzZjMwMWJiMzFiNGZiZjk2ZDkzZjg1ODgyYmFmMmFiMCBweTNrLXN0cnVuaQorNTYyMTEgYmZmOWViYWJmYzE1NTkzOWM0NTI3ZWFkODYyMWEzNWJlNjdlODkyYyBweTNrLXN0cnVuaQorNTYyMTMgMTZlODNiZjgxZGU5ODg5ZWI4Y2QwMmIxOTFlYzlkYTEyMzk4YjJkZiBweTNrLXN0cnVuaQorNTYyMTUgZGZiODg1OGMwNjY0MGRkZTQ2ZmYyYWVmN2YyZmUyMzQ2MTliMGZjNCBweTNrLXN0cnVuaQorNTYyMTYgNzgyMDMyOThiNDJiNzk0NGI1YmFjZjllZWJhY2E2YmExZjMxOGZlMSBweTNrLXN0cnVuaQorNTYyMTcgMjliYTZjMzk5MDkwMWRlNjkwNGRjNTcwYzY3MjYyMTBmNThkMGNmNCBweTNrLXN0cnVuaQorNTYyMTggNmIzMGJkMTMwZGMxN2Q4YzBlN2QzNDQ0MGQ1OWZkZGJmMWY5YTM4NSBjcHlfbWVyZ2UKKzU2MjE5IGY0Yjk5MTk1NjYyZmRlYjVmODk5MTdhMjNmYjcyNGJiNTBlZmExNmIgY3B5X21lcmdlCis1NjIyMCAzMzUwNmQxM2RkNzkwZGRiOGM5ODc0NWIwM2I5NGNhYTE3NmI3OTE5IGNweV9tZXJnZQorNTYyMjEgZDlkNDgyZDAzOGQ1ZGIyMWQ5ODU3ZmM0NWQxZTYxYjZiNWI2MWRiYiBjcHlfbWVyZ2UKKzU2MjIyIDQwMmEwNmVjYzYxMzEwNmYyOTE3NDgzZDRiNWE4OTcwMThiOTA1ZmYgY3B5X21lcmdlCis1NjIyNSBmMDk3OWE4NjY3MGY0N2M3OGQzZGU0MTFiNDMwOTkyODg2MjNkNTJjIHB5M2stc3RydW5pCis1NjIyNiBlMzgwNDc1NTAzODM0YjY4YzJiNDFiMzA1ZDFhMmMyMDcxMTE0NWQ5IHB5M2stc3RydW5pCis1NjIzMCBhY2QxZjY0MjcwNmYyYzc3Nzg5YTQ0OTAxZjlhOTM2NDg2MWY1NTRlIHB5M2stc3RydW5pCis1NjIzMSA5ZDBkOGNhZTFjYzczYWZiMjI1OTg4ZjdiZmQ5ODNmMmVhYmI2M2NjIHB5M2stc3RydW5pCis1NjIzMiAzZGIwMDgzZjY2ODM3ZDAxMmQ4NjBkNjEyN2M4NDU4YjA2MWU4YjhiIHB5M2stc3RydW5pCis1NjIzMyA5MWFkZTY3YWIyMzBkYzUwY2ZmOGE5ZWU5NmQ1ZGZmZjc0ZjczMTQwIHB5M2stc3RydW5pCis1NjIzNCBmMGE5NjEzZmNkOTMzYmFjYzQ1OTc1MGFhOGExMmNlOTA4MDc3YzNlIHB5M2stc3RydW5pCis1NjIzNSA4Y2ZkYWQyMDQ2NzYzNzk3MWY4Y2Q1NzdiZDY2NTgwMjcyNzdjYTAyIHB5M2stc3RydW5pCis1NjIzNiBkZGI5MTlkY2I0ODIwZmYwNTIyYmZkMjA1ZTE1NTliOTUzMDg3ODQ0IHB5M2stc3RydW5pCis1NjIzNyA4ZDRiNjllMzE1ODFiZDRkODEyMjZkNzE3ZjE0YTg2MmU2ODRlNGFlIHB5M2stc3RydW5pCis1NjIzOCBiMmRjMzE3MThiMDNmMjY0MDdkZmQ1N2RmNzAyNmY5MjI1NjExNGYxIHB5M2stc3RydW5pCis1NjIzOSBmNGExYjc2YTVhNjNkM2FhNGQ2YTQzM2E3YzM3ODUyMTkxYjFjMTNlIHB5M2stc3RydW5pCis1NjI0MCA1NjIxNTA3MWM3NDJlN2I1MDljYzdiNDZkMTY2MmJjOTY5YzQxNGU5IGNweV9tZXJnZQorNTYyNDMgOWY5OWVhNGY4MWU5MmZjOTA1OTZiNDE5N2E3MWNjYjgzYzUwMjViYSBweTNrLXN0cnVuaQorNTYyNDQgMzY0MWEyMDYzMGYzYzhjOTM4ZjM2NTEzOWNhMmEwMGRkODE4MDljYyBweTNrLXN0cnVuaQorNTYyNDUgMGU0NDYwODAzYjRhODA5MzU0N2YyOWQ3MzUxZjAwNjc5ZjQ5Nzk0YiBweTNrLXN0cnVuaQorNTYyNTAgOGIzMTYwN2NhYTBjYjE4ODhmNzdmZGVjYjg3M2RlZTdhM2JmMDQ2ZSBweTNrLXN0cnVuaQorNTYyNTEgOWIzODY2MDQyMWVlOWI5ZmQ0NTEzMDc2NTBmNTM1M2IwOTdmMTljYSBwM3lrCis1NjI1MiBiZjVkMDRlMGRhNGM3NTIyNGQyYzMyYTZjMmU0MGI5ZmI3NzQ1NTdhIHB5M2stc3RydW5pCis1NjI1MyA2MjI4MDYyOTA5ZjM0N2RiMDc3MmEyZTQwMDE5YjQwZTVmNzZlZmNiIHB5M2stc3RydW5pCis1NjI1NCA3NDdiMTUxOWEzNmNkZmUwNmZlZjdjZDM5NzEzOWZkMTNmNjg5Y2QwIHB5M2stc3RydW5pCis1NjI1NSAxZGNmMWYxMDg2MmMwMjIwNWJkNWNmNDUxNjljMDUxMjJmMzc2NGVkIHAzeWsKKzU2MjU2IGU5YmZiMjRmOTZlMDYzZDUwNGE1NzhhZWQzYTRkMjU0MDNmMGM0OWUgcDN5aworNTYyNTcgOTBmY2QwODJkYTBkY2FjZTg3YzVmY2QzZDQyNzZjNTdhMzlkOTI0NyBweTNrLXN0cnVuaQorNTYyNTggODE5MzBlYWFlNzE1OGZhMzA4YjNiM2E5MTc0YTE4MjhhMjFlNDJlZSBweTNrLXN0cnVuaQorNTYyNTkgZTg0MGE0Y2ZiNDFmNmU4NzYxMzAxNzFjYjM3Yjk5NWZhYzI4YTc0MiBweTNrLXN0cnVuaQorNTYyNjAgOTYzZjUwZWQyYjRmOGJjNzFiNzhiNDY3MDZiNmVlY2Q4MzQxNjA0YiBweTNrLXN0cnVuaQorNTYyNjEgYzZhOGE3ZGYzN2VmNjVjZDM5MDA5OTA4YzQwZDdiZjA3NjRlNTE2ZCBweTNrLXN0cnVuaQorNTYyNjMgNzkwODJjYzE0YmYxNDRiMjRhMDk5N2E2ZTdiZmQxZmQ1NDBlM2Y0OCBwM3lrCis1NjI2NCAxYWMyYzFiODAzMjQwNTRhMDhmNDI2MzFhNzNjYmVjNzJhMmYyYjg1IHB5M2stc3RydW5pCis1NjI2NiAwOTA1ODhhMTc0OTAzM2JkMmY1MzFkNWM4MmNiNzg3ZDU1MDRhYTVmIHB5M2stc3RydW5pCis1NjI2NyA3NWQzY2FhNDZhOTM2YjEwZjUzMDlmMTA4YjA2ZWEwOTgwN2M3ODhlIHAzeWstbm9zbGljZQorNTYyNjggZGY0Nzk1MGM4MzcwOGU5YmM4YzE3Yzg2YjVjMWQ5ODUwMjljY2FkMCBweTNrLXN0cnVuaQorNTYyNjkgYmQ0ZTM3MmY0Nzk4NTQwNDY3NGQ1ZTg4OWU0NWU2ZTE0YmZkYjhmOSBweTNrLXN0cnVuaQorNTYyNzAgYTM1NTM1OWU0N2I0NTg3MWE2NmNhMTU2ZDJhMWM2ZGM5YzgzZjVkYSBweTNrLXN0cnVuaQorNTYyNzEgNWIzOTMxYWUyNjJmYzdkZTA3NGRkMjBmNzE0OWY0NWY0MTE1MmI4NiBwM3lrLW5vc2xpY2UKKzU2MjcyIGE4MzhiOGM2NDEwMzYzYzhmYjU0NDA3MjFmNjIzYzM5MzYyYTgxNTIgcHkzay1zdHJ1bmkKKzU2MjczIDUxNmRjNzIzYzg5ZWJiNjk2YzdkNzg1MTcwYjQ5NTBkM2EzYWIwMGEgcHkzay1zdHJ1bmkKKzU2Mjc0IDNiZWZiNWFkYjM0ZWJlNmNhZWJiNjk2NmQ3NDI4ODFhODkyZTkzNjEgcDN5aworNTYyNzkgYzFhNjBiNGI4M2QzOWIyOGQzNWU0NzIyNzMwMDJlNjc1NTdhNWNhZCBweTNrLXN0cnVuaQorNTYyODAgMDliZjM1NzkzYmNkZDU5MzY5MzY5Y2ZiN2YzOWFjNTJkZWNiYTlkNCBsZWdhY3ktdHJ1bmsKKzU2MjgxIDdhMjRmZTcwYzE2ZGJiNGRmNjMwMWE2NzA0NmNiMGM0OTAwMmJmOWYgcmVsZWFzZTI1LW1haW50Cis1NjI4MiA4NTRjYzRkNWEzM2Q4YWZkYzdjZGIzYWZkZTI2ZTZjNzYxMmViZDUzIHB5M2stc3RydW5pCis1NjI4MyBiYmMwOTRjMzI4ZWZkOTFkOGU2ODQxNGY4ODBlZWQ2YjhjOGMwYjM1IHB5M2stc3RydW5pCis1NjI4NCBlNWNjZmViMTFjZDY3MTE5OTE0MGI0MDMxODljM2MzZDNjNTUxZTI4IHB5M2stc3RydW5pCis1NjI4NSA5YjcyZjA2MzY5ODY0YTAzYmE5YmYyY2QwYWYwZDllYzAwNWY3YjZjIHB5M2stc3RydW5pCis1NjI4NiBkMWM3YzI1NDM5MDNiOGQ3MjVmOGFmNDg3NTkzYjdhNGExODcxYWI4IHB5M2stc3RydW5pCis1NjI4NyA3YzZhNzk1YjUyNWFjZjQ4ZjBjM2JlOGMxOGZjNDAwOWNjNjkzOTAxIHB5M2stc3RydW5pCis1NjI4OCBjYTNjZmIzNGUzYzI2MzU5NzVkNTFjZTE4ODZhOGUzNzI3MTJlNWFmIHB5M2stc3RydW5pCis1NjI4OSAyM2YxZDJjMzZkMTJjZjM4NTJlMzhiNTQ4OTcwYjlmOTdhZmZkMmM0IHAzeWstbm9zbGljZQorNTYyOTAgYTVjMjM0MjJhZjZjNjhiYTVmZjRlNmNhNDQzNTBlODM3YWIwNWE5MCBweTNrLXN0cnVuaQorNTYyOTEgY2EwNjViNTFhNjE2NmQ1NzNmYTAxODdjZWI3NjBmMTA0NzFjNjY4YSBwM3lrLW5vc2xpY2UKKzU2MjkyIGQ1Y2YxOTE2OTkwNDYyNzNiNzAyN2IxMTdlYzNmNTg4OTZjMTU1OWEgcHkzay1zdHJ1bmkKKzU2MjkzIDI1NWJkNDNjYTc4Zjc5Mzc5ZjYyYTQ4MDRlNWUzNmEzNDRkZTc3ZTcgbGVnYWN5LXRydW5rCis1NjI5NCAyM2FjOGQxNDBhOGEyZTk1YzQ4NzlkZGRkZDMyNmQ3ZTZmYThmMTQ2IHJlbGVhc2UyNS1tYWludAorNTYyOTUgMTk2ZTVjNjMyM2EzNmI4ZmViMjk5NjA1MjNlM2E5Zjc5ZGE1OTI3NyBweTNrLXN0cnVuaQorNTYyOTYgNjMxOWFkYjAwNDFkNmVlZmVjMjBiY2M2MmYzZDBlNDZmYmEwZmFjNyBsZWdhY3ktdHJ1bmsKKzU2Mjk3IDhiODE1ODBhZDBjMTA2MDc0ZWE2N2Q1YjNkNzgzODY1MjgyMTkzZTEgcmVsZWFzZTI1LW1haW50Cis1NjI5OCA4NmQxZGJmYzU4MzMxYjYyMDUzM2JkNDJkZjIwNTZmYjk0ZjUzMjUwIGxlZ2FjeS10cnVuaworNTYyOTkgYjQzZTVmMzM0OGFlYTk1MmFjNGM5MjRiZjVmYjdiYjVmN2FlNWI1NyByZWxlYXNlMjUtbWFpbnQKKzU2MzAwIDI5M2I4M2Y5ZGE5ZmRkZTY3NmRlOTRhYTY1ZGQ0MzY0Zjk0OTNlNzQgcDN5ay1ub3NsaWNlCis1NjMwMSA3YzM3ODRiYmZjMDlhZThiYjA3MTNiOGMyMjNiOWQzNDg0MmIxOTE0IHB5M2stc3RydW5pCis1NjMwMiAyNDhhMjA2OTkwYWUwOWI5YmVkMWQ5ZDhmMzc0ODMyM2IyZjUxMGZlIGxlZ2FjeS10cnVuaworNTYzMDMgMTBlOWM5MGVhZjAzZTZkZmM5Mzc4YzdiMmNiNzhlZjE4NmE0NjkwZiByZWxlYXNlMjUtbWFpbnQKKzU2MzA0IDJjMzNkZjA5YzFjNzFmNThkMjEzNmI3MjE4NjI0MDRhMjVkNzY0YmEgbGVnYWN5LXRydW5rCis1NjMwNSBjMjU1YzEwZGFjNmE2OTFlYjY1NGMyNGRmMjVmZTIxMTY2MDJmMWI2IHB5M2stc3RydW5pCis1NjMwNiA0YzQ5Y2Q2NWI1ZjE3MDUyY2NhOTMyNGVjNTA5NzI1MDQ4Njc0MzJkIGxlZ2FjeS10cnVuaworNTYzMDcgMmFmM2YwNjdhNDMxMDJkY2IzYTU1MDcwNmI2N2Q2MWYxNmUwM2UyOSByZWxlYXNlMjUtbWFpbnQKKzU2MzA4IDM0M2I2MGI2MDRiZDkzZDBlNjYxODBhZWZlN2UwOTc1OGNiZjMxM2IgbGVnYWN5LXRydW5rCis1NjMwOSA3MmM1ODMzOGIyMmI2MzliODk5NmZmNGM1OTBkOTY3OTU1OWFiMTlhIHB5M2stc3RydW5pCis1NjMxMCBlYzc0MDg0YThjYmEwYTA3YTEwMWE3NmU2Nzg0ZjdmZjg1MDdkNDAzIHB5M2stc3RydW5pCis1NjMxMSA2Y2I5ZWZiNWNiZTViZTg3Njg3MjM1NWYyYTllODA5MzRmMzE5OTVkIHB5M2stc3RydW5pCis1NjMxMiAzZTA2ZjJiOTAxMDI2NDEyZGZmZjg3MDhhNmY0ZmY3OGUwOTE5YWMxIHB5M2stc3RydW5pCis1NjMxMyAzZmQzNTUzZTI1ODg1NGVhMzgzNzlhN2JjMWQwNjRhY2ZkZTg3ZjQyIHB5M2stc3RydW5pCis1NjMxNCA1ODY2MWE4MjMzOGU4MmNmMTAyZTMxNmUwMTc4ZWI3Y2IyMmIzMDkzIHB5M2stc3RydW5pCis1NjMxNSBlNzE1ZTIwODE2MzcxYTE0N2VlNWZkYjBiY2ExNzEyYzhiMDBiYTg3IHB5M2stc3RydW5pCis1NjMxNiAwYjg5Nzc0MTFiMDdiNGU2ODgyNTg3NjAxODI2OTYwYjk1Mjg3MjljIHB5M2stc3RydW5pCis1NjMxNyA4NGEyMTc1NzlhZTU5ZDUzODQ4Y2RiZTE5ZDFlMGZiNWE3YTQ4OWVlIHB5M2stc3RydW5pCis1NjMxOCA4NDIyOWE5MDY2ZTJmODY2MDBiNTJhNGNjYmEyZGNkMDQ2NmQ5Mjg3IHB5M2stc3RydW5pCis1NjMxOSAwNjgxMjMzMzQ0ZDkzZmQwZGU5ZTVlMzQ2MWM4MTYwNTRlMTE3YjY3IHB5M2stc3RydW5pCis1NjMyMiBiNDVjMGY0NDQ4MTMxZGNjYjIzZDU4MTdmZTFmNGU5ZDE5NWU2MmUyIHAzeWsKKzU2MzIzIDJhY2M2MzU5ZDA1ZDQwNTVkNjJlNmQwODNlZjlkMzViMjZkYzE4NDEgcDN5aworNTYzMjQgNDhjNWE4NDlhMGMyZmNlZmE1YTdkZTMxMGE2NjgyNzE2OTc3Yjk4NyBweTNrLXN0cnVuaQorNTYzMjUgNzM4NDZmOTYyOWM1NjdlYmFmYTBlYjAwYWIxY2JkMGM5N2I5ODAyMCBweTNrLXN0cnVuaQorNTYzMjYgNDg0YTAwOTZiYWU5MGY2NjE5YWZjNjkxNmIzZmY5ZmYwNjJmYjVlMiBweTNrLXN0cnVuaQorNTYzMjcgMDQ5NGFlNzM1MDU4MmI1ODE4ZDA5NjFhNWZjMDU0ZThhODc4ODJiYSBwM3lrCis1NjMyOCBmYmFlMDEyZmYyOTVkY2FmN2JiNDAwNGM1ZDc1MzVjMzRhYjgzOWRhIHB5M2stc3RydW5pCis1NjMyOSA3NjllNzA3OGEyYWE3ZjI0ZDllOThmNDQ0MDNkZDNmOWEwMGViZGNlIHB5M2stc3RydW5pCis1NjMzMCA3Y2M4NDk2ZjIzNDgwYzA2YmRmM2E4Y2IyNDAwMTg3MWQ2YTgwNjZmIHB5M2stc3RydW5pCis1NjMzMSAyZmQxNDY5NzIzYTA3MDJlYjA5ZWQ2NTYxZjY3MDAzYmI5YjlhODNmIHB5M2stc3RydW5pCis1NjMzMiBhZmU4NzE1NDdiMWEzOTBmMjJiMmE3ZmMxMTMyNDgyMmE4ZWUyMTljIHB5M2stc3RydW5pCis1NjMzMyAxMGRlNmE5MWRhNGRhMTkwY2FiZjU3NDgzYzVjMDM2MTJkNjU1ODZlIHB5M2stc3RydW5pCis1NjMzNCA2YTA5Nzc3MmVhODZiNWE0MDE3NTg3ODE4MTVmZTJhYmYzY2I3MmJjIHB5M2stc3RydW5pCis1NjMzNSA2ZTY1ZjA4ZjEyNzYyODYyMWNlMTZiNjg5ZGFlYjg5YmVhZmQ0YmU1IHB5M2stc3RydW5pCis1NjMzNiAxYzM3OTBjODMxZmMxNjU1NmFmMTBlN2JhY2E3OGRjMzY0Yjc1NzBiIHB5M2stc3RydW5pCis1NjMzNyA4ZWFmMDNmYzNmMTI5NWQ2MTQyYzhhMDI0ZjEwYjgxNWU1OTQxMjg5IHB5M2stc3RydW5pCis1NjMzOCAyMmQ2NTg0Yjg3MTI2YzhmYjg5OTM4MzgzNTBiOTBiMGM5OWViYmQyIHB5M2stc3RydW5pCis1NjMzOSA1ZDE2ZjQ3ODQ2NWE1MzU1OGYyNmRkMDI2ZmY5ZDQ2NzBjYmFiZGQwIHAzeWsKKzU2MzQwIDBjMGQ3NTBlZTc1ZTRjMjUyMWY2YThkMzU2NjYzZTg3NGVhMTRhZTUgbGVnYWN5LXRydW5rCis1NjM0MSA3YmM0NzIzZjU2MmZhY2UxMWRjOTcwN2JlOTg0N2Y3MjI0OWRiMjMyIHB5M2stc3RydW5pCis1NjM0MiAwOTgwMDM0YWRhYTcyMmI0NjQ4NTMzZDY4M2VkODNjZjEzZjRmN2NlIHB5M2stc3RydW5pCis1NjM0MyA2OTNiZTI3ZjYyNmZiYmE5NmNhMTgyZjU1MzZkNmUzM2I0NjEzNmY1IHB5M2stc3RydW5pCis1NjM0NCAxN2JiMzk4MDQ4M2VjZmJkMjA2MWNhZmQxNjNkMTQwYWZhMzc1NGQ1IHB5M2stc3RydW5pCis1NjM0NSAxMDg5YTRmNTdkMjA5NWI5ZmJkNWNhM2RhMTE1MmNhNzA4ODcxNDI0IGxlZ2FjeS10cnVuaworNTYzNDYgYzI4MDY0N2MzMzBjZjJhYWQ5MjQ3NjM3NDY1ZDRmNGM2YWZhNjVkOCBweTNrLXN0cnVuaQorNTYzNDcgN2MxYzkwMmQ3MDAwMzEyZDFkODkwNDI0OWMzZGU1NWY3NmU0ODI3OCBweTNrLXN0cnVuaQorNTYzNDggNzYwMjFiYmI4OWM3MzgzNzZjYjM5YWE3ZDc5YzQ3YTMxYzg5ODZlOCBsZWdhY3ktdHJ1bmsKKzU2MzQ5IGNiODY1ZTM5OWU4NGM2NWE5ODEyZTM0OGI2N2ZhYmRiMzgxMGNiMzggbGVnYWN5LXRydW5rCis1NjM1MCBhZWFkMTM2Y2E0OWUyOTk1Nzg5NzFiOWYyMjcwYjQ3MTM2ZmQ5NDFhIGxlZ2FjeS10cnVuaworNTYzNTEgMGQ2MmNkZDM1NTdkNWFkZjg2Zjc0MTU5ODYxMDVmZjBkOGFlY2FlZCByZWxlYXNlMjUtbWFpbnQKKzU2MzUyIGI2ZWFhNjkxNjg4NGNkY2YxZjgyZjQzZjhlM2M0YjdiNDlkMzc1NWEgbGVnYWN5LXRydW5rCis1NjM1MyBmMzM2NThkYTA2Mzc1NDYyYjcwYjY3ZjBlOTVkN2Y1ZWQ5ZTg2MDYzIHJlbGVhc2UyNS1tYWludAorNTYzNTQgM2Y4NzlkNzI2ZDE4OTgxNGMwMTQ4MjRjMmFhNGM4Y2Y2NDMzYTc4NCByZWxlYXNlMjUtbWFpbnQKKzU2MzU1IGY4Yzc1ZTg0OTk1NjA5NDY1MDY2N2QxODAzODg4OTFjOGUxODlkNzYgbGVnYWN5LXRydW5rCis1NjM1NiBmMDFhYTNkMThjOWQzYWMwMDZkMTNlYjZhMTJmZGZiMWJkMDFlNzExIHB5M2stc3RydW5pCis1NjM1NyA0Y2YwNDU5NDEwODU0NTBkMjE4ODY2MDI5ZmUzNzRkYWNmMTBjZDdiIGxlZ2FjeS10cnVuaworNTYzNTggNTk5ZWE5ZTVjNmM1ZDhlOWEzNjU4NmRjYTlmZGExOTk4ZDIxMWExYiByZWxlYXNlMjUtbWFpbnQKKzU2MzU5IGQ4YmY0MjY3MjMzMDU2ZDVhMzdmNTgyOGMzYTlkMTI2OWFjYWM4NWYgcmVsZWFzZTI1LW1haW50Cis1NjM2MCBjMjliMGRiZGEzZjZhZGY4YTIyNGMyOGI1N2U0YjJkYTA5NGYyZGYxIGxlZ2FjeS10cnVuaworNTYzNjEgMGJmZjRiNmI5MmJlMmI3M2ZmYTM5Y2RkNjc3Mzk1MTQxNDc0NjY0YyBwM3lrCis1NjM2MiA2MTQxMmUyNWU2MWUzMGQxY2FkYTQ3M2M0MmY2M2YyZDAyMGUzZTg0IHAzeWsKKzU2MzYzIDIwMmMzNzgzNTYyOGI5MTVhZDRlYWRiZTE0MzYxMTFiMGU4MGU3M2QgcmVsZWFzZTI1LW1haW50Cis1NjM2NCA4Y2M2NTA3YjA2MjZiYjRlMTBkMzg5Yjg5MmI3OTU1NzEwZjJlM2M5IGxlZ2FjeS10cnVuaworNTYzNjUgZGEyZjg5NDhjYzE4ZDIwOGFhODE0ZDlkY2Y3NTc2NjJiMTcyYjgwMSByZWxlYXNlMjUtbWFpbnQKKzU2MzY2IDY5N2MwYTc4ZDhjOTAwNWQ5ZGYwMWQ1ZWJkMWNlOGE4MGFiZTMxMWYgbGVnYWN5LXRydW5rCis1NjM2NyA4NWQ0YTAyZDBhYmIwYzY3NDE3YTQzZWZhMzE1NTNjMjk3OWIyYzY5IHJlbGVhc2UyNS1tYWludAorNTYzNzUgY2Y4OTBlNDFhYzEzNTFmNTQzYTRiNDkwYWY0MDZhYWZkY2VhMjQxMiBweTNrLXN0cnVuaQorNTYzNzYgNTA2NmIwMDI1YmYwODY1MDFjOWFjMTRmYTljZGIxNGFiNzg0ZDM1ZSBwM3lrCis1NjM3NyBhNWEzZGY0OWFjZjMwMjllNDJiZjNmZTVkNDBiNjA2MzU0ZDMxZWU3IHAzeWsKKzU2Mzc4IDJkMjI1MDQyODMwNTczODk1NjE4ZWY3ODE0OGYyYTgyNTQwMGU5NDEgY3B5X21lcmdlCis1NjM3OSAwOWNkM2U1MDMyMzVlNjVjNmVhMWY5M2U4ODdiODZjYzcyZGU4NDg2IGNweV9tZXJnZQorNTYzODAgYTVlOGRkNTk5NjBkZGQ5OWQxNWUxZDA4YjQxNTYzMjU2ZmM1YzE2ZiBsZWdhY3ktdHJ1bmsKKzU2MzgxIDQ1YzdkNDczNWRhMzZjMjNmZjE0OWJkYTk5NmYxOTg0NWQ3NmQ0ZTkgcmVsZWFzZTI1LW1haW50Cis1NjM4MiA4YWYwN2UxMWYxOTdlMjYxMzRkYTFhZGQzZGI1ZWI2YTZhYzI4NWUzIGxlZ2FjeS10cnVuaworNTYzODMgZGFhZTI3ZmJiODE2NmVkZTFkOGY1N2QxZWRiODhkODhiYzQ3ODE4ZCByZWxlYXNlMjUtbWFpbnQKKzU2MzkyIGMyM2Q4YzI3ZGM5MjIyMzg1MDcwYjcxMDUzNTNjZjUzZjYzNTg2YWUgbGVnYWN5LXRydW5rCis1NjM5NSAxOGU1YWU5MWJkMjk3OWUwMmQyNjE5ZDIzMjhiYWJlMWMyYmI4NzcxIHB5M2stc3RydW5pCis1NjM5NiBlYmU5NjBkMWQ2MjdlZWQ2Y2ZjYjkzMjg3YmUxMzBhYmE5YzFiYzgyIHB5M2stc3RydW5pCis1NjM5NyBmNzE1YmFjZGZkMDBmMzNiYWNkNWQxZjY0ZWMzMzJlMjZhZjc3MjYxIHB5M2stc3RydW5pCis1NjM5OCAxOTE5OTliZTZjZjU4ZWZhNjgyMmRkMDljYmYwM2IzNjUyY2ZlNTM5IHB5M2stc3RydW5pCis1NjM5OSA1YWU3NzRjYzI2ZWJkZDcwNzY5NzAwYzlmOTY3Mzc5Zjc1YjZiMDU0IGxlZ2FjeS10cnVuaworNTY0MDAgZDA2MmY2N2MzMjYwNGQ0MjBlNGQzYmYzNTYzZWM2M2UxOWU2NGQ4MiBweTNrLXN0cnVuaQorNTY0MDEgZjViNWRhY2I5YWUyOWJiMTJiNDcxOTYyMmM2OWQ5MGI0MjU5ODViYiBweTNrLXN0cnVuaQorNTY0MDIgM2YyNDIwOWYyNTFlM2FkMTEzYzQ2NDE2ODA3YWE2NzBmZDQ5MTVhMyBweTNrLXN0cnVuaQorNTY0MDMgMzc3MjEwMzIwMGVjODliYzg4YmIzYjJmMWI2NjdmY2U1MGViNjk5MyBweTNrLXN0cnVuaQorNTY0MDQgODQ3N2ZjMzg4ZWVhZWUzZThmMjVhNTExZGFiYTg4M2U0YmYxNWJlMyBweTNrLXN0cnVuaQorNTY0MDUgYThkNDMwODVhODU3MGIwY2UzMzFhNjA5NTc4ZjI1ZGIwMmMwODkyYyBweTNrLXN0cnVuaQorNTY0MDYgNDRiYzQ5YTA3ZTUyNDk1OGU4MmE4Yjk5NDc4YzQxOWJmNjM2OThlZSBweTNrLXN0cnVuaQorNTY0MDcgNTMzN2MzYTRhMjczZDkwNzdkOGJlNTM3MDY1ZmVhOWJjNDcwMjNkOCBweTNrLXN0cnVuaQorNTY0MDggZjUxZDNiZTQzNWRmNjhlM2QxZDUyNWIxNDY3MmMwNTg1ZjVhNjZlYiBweTNrLXN0cnVuaQorNTY0MDkgMDU4YWJmODc4YWQ0ZGY5OGZiYzMzMDZmN2VlY2I5MjI3ZDZiYjQwNCBweTNrLXN0cnVuaQorNTY0MTAgM2JlYThmYWMzYTdjZjZkNDNkNmY0NGRiYWI5ZDA5MGUzOGQ3N2FmOCBweTNrLXN0cnVuaQorNTY0MTEgYzRhYjNlZjYxOTRmNzM3MjE0Nzc2ZTliMWI0YWQzNTExMzI5NjY0ZCBweTNrLXN0cnVuaQorNTY0MTIgZjY1OTIxNDZjN2ZhNjhmN2ExNTk0MTc3ZjQzYmIyYTQ5MzViNGJlZCBsZWdhY3ktdHJ1bmsKKzU2NDEzIDU1MDE0MWZkNjdjMjNkZTg5NTM1YjVkMjkyMjQwZDQxYTU1Mjk5OWYgcDN5aworNTY0MTQgYzhlNjI0NTc5YTRkNjNlNmJkNmVlZDM1ZTllMjRmODg4MGZmOGZhZCBjcHlfbWVyZ2UKKzU2NDE1IGY5NDBlNDcwZTU1MDI2ZTEyZDM0ZDcxNDM0MDBmZjIwNzdiNDM1ZjQgcHkzay1zdHJ1bmkKKzU2NDE2IDY3YjAxYjA1YTgxYjYyMzQ4N2ZhMmY0OWZhMDVkNjJlOWJiYzc3ZjggcHkzay1zdHJ1bmkKKzU2NDE3IGEzMDljZGI3Y2IzMzBkMTBhZjFmOGI5M2RmOGI5MDQzYjE5OGQwMmQgcHkzay1zdHJ1bmkKKzU2NDE4IDdkMTZiNDJmY2RiZGUyY2M1MTNmY2RiNDI3NzU2YmM5ZjBjYWQzNTEgcHkzay1zdHJ1bmkKKzU2NDM4IGQwNzE5NDA2YjJjNjU5ZTdkYjQzODk2MmI2YjViYzU0YzYwYmFlNmIgcHkzay1zdHJ1bmkKKzU2NDM5IDdjZWQzZTg1MTlmMTQxODg5MWQzMDM3NzdmNWQ4NWYxNDhmNzE2YWUgbGVnYWN5LXRydW5rCis1NjQ0MCAzNWViNzIyMTU2MzBhZjFhZmU0ZmMxYTBhYzM5ODM3NTUwNGZhNGRlIHB5M2stc3RydW5pCis1NjQ0MSA2Nzc1ZWU2ZDg5ZDNmOWZkYjI5OTdmYWNlMWM5ZjJmNDI1NTJkNGYxIGxlZ2FjeS10cnVuaworNTY0NDIgMTQ5ODE1YmEyODRjY2RmZDNkOGJiMWNjZjVjNDE2ZGFlOWI4MmJiMSBwM3lrCis1NjQ0MyBiZDZhY2ZkYjQ3ZDI1YTZjZmVjMWZhYjBhM2Q5MGMxODgyODUzMzUwIHB5M2stc3RydW5pCis1NjQ0NCA0YzY1ODM3N2I5MDg0NzU0OTE2ZTBhZjE4OTNjNDE4Mzk4MmQ0MzczIGxlZ2FjeS10cnVuaworNTY0NDUgYzFlOWVlZWRhMzRmOWJmMjgzYThmYjVhMGE2MDBhMDYzNDc0MDJiNyBjcHlfbWVyZ2UKKzU2NDQ2IDFhZTVmMTAyZmQzZDZlMjUxNWZlZjg1OGRlZmVhMGQyODg3ZWQ2NzYgcHkzay1zdHJ1bmkKKzU2NDQ3IDAwN2VkNmNkZDFmN2JjNzRiZThkOTMxMWQyMTk1MDJkZGYyNjY5ZWEgcHkzay1zdHJ1bmkKKzU2NDQ4IDA4NjQyYmQxYmUxODRhZTEyYzJlMzdmZDY3ODZmY2NhYTgzYTU1OTcgcHkzay1zdHJ1bmkKKzU2NDQ5IGRmYWNiNTFkMTM4NjE2MTIxNzk1YzEzMTI4MzgyMDlmNTZjNzdhZjkgcHkzay1zdHJ1bmkKKzU2NDUwIGJkYzY3ZGMxYTk1ZTJlNDAzNDdlOWM4NWRjMDU5YjE5YWM5NDY4YjEgY3B5X21lcmdlCis1NjQ1MSBkMDFhZTY5OGNiNTgzOGY3NWNiNTA3OGI2Y2JkNjRhZTM1NmM4MzM5IGxlZ2FjeS10cnVuaworNTY0NTIgMjhhZjk2MTAzOGRlODI2YTUwN2Q2ODVhZjhhNmNkMjEzNzFiODQ3MyByZWxlYXNlMjUtbWFpbnQKKzU2NDU0IDM3OTAyZWE0MWExN2I0MzJhZGI2MDNiMGEyNGViYWQ1N2Y1MWYwOWYgcDN5aworNTY0NTUgN2Y3NjBkYjRlNzQ2YmFlZjE4YjM1NGRmMDk4NTNlNjUwZjljNTc4NyBwM3lrCis1NjQ1NiBjMDJhMzM3ODhhOGY1ZWJkMzIyZjk2ZTVhYzViMzM5NjM0Zjk4ODVmIGxlZ2FjeS10cnVuaworNTY0NTcgM2ZiNTk2NjZiMjgxMGE0MWQwMmUxNjY0NjY5ODQ4MTNjZDY0ZGMzYyBwM3lrCis1NjQ2MCA0OTk5YTA5NDczNDM0YWNkNDNlNDQwZDk2YjJjODg2YjFhZDkxNWY3IHB5M2stc3RydW5pCis1NjQ2MSBhYzM2ZjA2YTYxMmI4MGUwYjExNDVhMzc5MmU5YjRlZmU1NzZhODJmIHB5M2stc3RydW5pCis1NjQ2MiA2Mzk1NWUzY2Y5OTNiNjE5NTMyMTBjODQwYTFlMTEzN2MyNjljOTQ5IHB5M2stc3RydW5pCis1NjQ2MyA4YzRhMzMwNzljYTYwMGQ4NzJiNjQ2Mjc5Y2Y3OTA0Yzg5NmVhYTNiIGxlZ2FjeS10cnVuaworNTY0NjQgM2UzMzIxNWM2NmVkZThmZjJjNTY3NGI3YTdiMWFjZDEwNjFmMzYzZCBweTNrLXN0cnVuaQorNTY0NjUgMTE2MjUxYWRhOTA1OGZlNjA3ZThjODIyNTM1N2FmMzM4MDEzYjc4NCBweTNrLXN0cnVuaQorNTY0NjYgNjBiNzE4YjZmYzliMTYzM2NjMjRhOWRkZjdmMjU2MzYzYjdlNzhjOCBwM3lrCis1NjQ2NyA0YmJiZTBjNTVmYTIxNThmZTIxNjUzN2M4ZmNkZmIzZWJhZDc0MmI5IHB5M2stc3RydW5pCis1NjQ2OCBjNDZmMGFmYjQwM2M0MDdlYjk5ZWU4NDJkZTIyMDU3ZWEzNWJjNTJmIHB5M2stc3RydW5pCis1NjQ2OSA5NjRjNGJmODZkOWE2OTY3NTdlZTBkMjM0NGJiNjM5NGM4MjA4YTEzIHB5M2stc3RydW5pCis1NjQ3MCBhMmM1Y2ViZDBkYzUxZjE1YjdiOTk1YWJlOTBmNWZkZWJiZmQxNTk4IHB5M2stc3RydW5pCis1NjQ3MSA1N2M2MmJkMzZiMTliYjgxYmRjOTQxNzI3YTFlOWEzNTE4YjYwOTU4IHB5M2stc3RydW5pCis1NjQ3MiA1YTllM2QzN2Y2NjFmMTNlZmRlMTcxY2JhZWE3MTg0MDI3ZTI4MzFjIHB5M2stc3RydW5pCis1NjQ3MyAzMzNmZjA1ODQ5MzhjNTYzMzlkZTc1NjViMzM1Y2I2Nzk2ODJiYjQ5IHB5M2stc3RydW5pCis1NjQ3NCA3YTBkMWJhYTRhNTNkZWQ0MjQ1MWIxODA5MmQ2YWI1NDk1OTEwNjJkIHB5M2stc3RydW5pCis1NjQ3NSAyYmUyNTFkZDJjYmRmMTYxMzNjNGI1NDkxMDIyMTFhMmI3OWI4ZGFmIHB5M2stc3RydW5pCis1NjQ3NiA2NjIwYTUxMGU5YTk1MTEwZGIxMzkxMmQ2NjU1MThhZGU3ZGQ3ZDlkIGxlZ2FjeS10cnVuaworNTY0NzcgZTM3MTcxYTRiMTQ3OTU5ZjZmMjNlYzJhMDhmMjJkNGRiNjczMjdkOSBwM3lrCis1NjQ3OCBmZDM0NThhOTJhODk0MGRiZDdhNjc1MTFhMjNmZmFkOThlNzdhOTc0IHAzeWsKKzU2NDc5IDRlODk4NzJmMDgyZTA2YjhmZTg5MjYwNWE3ZTYyMGMzNjEyODljOGYgcDN5aworNTY0ODAgNTMxZTE4MWY1YjUzMGY5ZTQ1Mjg2MDU0MDQ5YjI2NDRkZTczN2UyMiBwM3lrCis1NjQ4MiAxMmRmOTA2MDAzZWE5MjI2ZjIyY2UzMThkZmIxZDkwZjNiOTkwNGMzIHAzeWsKKzU2NDgzIGU3MGNkY2UwZThiMjk1NWM0NDAwOGE0NDhmMDkzNWI5ZGU3ZDE4NWUgcHkzay1zdHJ1bmkKKzU2NDg0IGM4Yjg1MGI1YTA2NjY5MWZhODhjZmU1MmVkMzVlOGI4MmEzOTllZTggcHkzay1zdHJ1bmkKKzU2NDg1IDAzYWI4YzhiYjBhZTE4NGNlOGM4MmYwNmU1ODFkZWM0MWZkZGM5YjMgbGVnYWN5LXRydW5rCis1NjQ4NiAyM2JmZGI3NTcxYTdkYWQxY2U4NWFhNjVlZWIxNjQ1YWM4YmU4MjM2IHAzeWsKKzU2NDg3IDg4ZWUwYTU1NjJlZTIyMTkwZGY3MWYwMDE4Y2ZlNTg5ZDM3ZTE5MjIgcDN5aworNTY0ODggMzhkMWJlYjY1MGJhY2ZlMmJkZWMzMjY5OGEwYWI4ZDI1OWIyNGJmYSBsZWdhY3ktdHJ1bmsKKzU2NDg5IDgxMWM5YWE2ZWQ4ODJlNDA1NzUxZGM2ZjRlOTViNzE5NGY1YjEwM2YgcDN5aworNTY0OTAgMjc4NjM4Y2RjNjQ3YWEyODRlYTBmYWYzY2ZiZGJiYjBjZjVjYzZlMiBwM3lrCis1NjQ5MSA2MTg1OWEzOWE4N2U3MjY0NTFiNzE4NTRhN2UwMWM2N2YzODQ1ZmZhIHAzeWsKKzU2NDkyIDdiZmU5YTEwN2IyOTc3NzIwM2Q2NDIyMDY2NzcwNmU3NjdkYmFhNjQgcHkzay1zdHJ1bmkKKzU2NDkzIGMxNTJjN2ZhMTdjNGQwMjg3M2M3ZjA2NjRmYzY1NDQyYzE1YjdkNGMgcHkzay1zdHJ1bmkKKzU2NDk0IGY0YWY2ZjRiNTFjYzM2MThmZmIzMzhkMTJlOTU3MDZlZjE5OGZiNzEgcHkzay1zdHJ1bmkKKzU2NDk1IDE0NTc0MTAxNjg0ODgyYzdiZGRmNTAxNThmMjFkMzFkOGFjYjc2MGQgcHkzay1zdHJ1bmkKKzU2NDk2IDYwYzc2NzE4ZTA0YTAwNWZjNzc2ZjA3N2MxY2VjNGM4ZGZiYTdjNDkgcHkzay1zdHJ1bmkKKzU2NDk3IGYzMmZiZjlmYTYwYjFjODk0MDhkYzVkYjA4MTBmNjY0MzY2OTgwNGEgcDN5aworNTY0OTggNDA5OThmMThjNWRjY2JjMzAxN2UwYmEyNTUzYWM1Y2Y4OWQ4MWMzOSBweTNrLXN0cnVuaQorNTY0OTkgODM2NzBjMmYxZWE4NGM3MTFiMWQ3OTAwODNlMmM0YWU0ODczYjY3MyBweTNrLXN0cnVuaQorNTY1MDAgOWNlNTRjZjBkYmUyYTY5ZGRhZmZkZmYwYjhlZDc0NGIzODIzZDM0MCBweTNrLXN0cnVuaQorNTY1MDEgMzZiNjcwMzBjYTQ3MmRhMzRiYTM2NGZjZTkzYWU0MTVhNDI2YjRkNyBwM3lrCis1NjUwMiBiNTkwZjRhMDZiZjg2NDdjYTYyN2Q4NDE3NzUwNjY4NWRiZmQzODE3IHB5M2stc3RydW5pCis1NjUwMyA1ZTY2YmI2OWMxZTNlNDg2ZTdiZjc0NWRjNzQ2ZGQwYWE3NTJjYmQ2IHB5M2stc3RydW5pCis1NjUwNCBiZmUwNDFhZmFmZTY5MGMwZWI2ODUwNTQ2YTI4ZGNlNDNiM2U4YjdkIHB5M2stc3RydW5pCis1NjUwOSAzZmU2NDNkNjJlY2M0NWViMDRjMDQ2ODNlYTAzYTgyNjUzOWM0YjU3IGxlZ2FjeS10cnVuaworNTY1MTAgZmQ2NzA1MzljMDg1ZDU2MDIyNmI5ZTNjZmNkZTk1ZWE4ZWNmYjczYyBweTNrLXN0cnVuaQorNTY1MTIgZTUwZTMzYjdlMGUwY2NiNzExNDA1Mjg2OGIwY2VhM2Q1NDQ0YmM1YyBweTNrLXN0cnVuaQorNTY1MTMgNjQwOTUyZGY0NDMxNGI0YmEwZGFiNTllZDc1MmU2OGRjN2MyZGExOSBweTNrLXN0cnVuaQorNTY1MTQgOTU5ZTUyYWUyNjI3YTA4OWFkNThiMGVlOGM1YjUzZDFkMjQ1MGRiNyBweTNrLXN0cnVuaQorNTY1MTUgMzZmYmNkYTgwYjFjNDU3ZmI0ZWQ5YTIwNjNkYTk4OWNiZWRjMTNiOCBweTNrLXN0cnVuaQorNTY1MTYgNWI5YzhkY2U0ZWRkN2U4Y2Q2YmUxYzM1YWFmOWUyZTc3ODdmN2U5MyBweTNrLXN0cnVuaQorNTY1MTkgZDk0ZDViNDE2YTk0N2FmNGY4NWU4MjNmMWQyZmM2ZDkyOTEzMzQwMSBsZWdhY3ktdHJ1bmsKKzU2NTIwIGJjOGU1ZTE1NzFhY2NmMGVlZTc4ZGU0ZGVjYWNhZjM2ZDM3MmQ0NmMgbGVnYWN5LXRydW5rCis1NjUyMyAzMGUxMTIzNTBlMjAzYTM2OWY0Y2Q1ODQxZTQ4MGU4ZTA3Zjk5NjA1IGxlZ2FjeS10cnVuaworNTY1MjkgNzQ2YTUwMjFlMWFhODcxMWU1YjQ4OTgyNGE1NzY3ODQwYmQyMWY1NyBweTNrLXN0cnVuaQorNTY1MzMgMGUyZmE0YzZhNDI4MzU1MzcyMjBiN2Y5ZDUzMThhYzE1YmRhOGE4MiBsZWdhY3ktdHJ1bmsKKzU2NTM2IDExMzc3MjQ5MzBhNzJiMzg4ZDRlOTQ3NGJmNWQwNDg3MzExNGE0NjUgcDN5aworNTY1MzcgZGE2MjgzNmRkOTlmNzczZDY0YTFmODFhYTkwMDQ0ODVlZTczNWM1YiBwM3lrCis1NjUzOCAyZmRhNTUzYWM2ZTE2M2RiMTRmMjg4ZDMzOGJhNTdlYzc0M2M2YmU2IGxlZ2FjeS10cnVuaworNTY1MzkgZTk4OTFkNzg3ZWRkODI2OTJkMThiODQzZjIzYjFhMGNjYjI3ZmFmZiBsZWdhY3ktdHJ1bmsKKzU2NTQyIDEyMDVkMzAzNDYxYzMyM2I5ODE0NTRlYWY2M2Y4ZTI5YjM5OGNhZjMgcmVsZWFzZTI1LW1haW50Cis1NjU0MyAyNzg2NGExODFmMDFiMjM5MmNjOWY4ODlhZjExNGYzYTQ5ODI4N2MzIGxlZ2FjeS10cnVuaworNTY1NDYgNzk1YTVkY2RjOTgyMDMwMzJlNTIyMjc3YjExOWExZDgwNWNhMmZjZiBweTNrLXN0cnVuaQorNTY1NDcgZDQ4YWNiMjg0NjY0Yzc0NGIxOGYwZjc1OTcyZWRlNjkwNTk0YjFiMiBweTNrLWJ1ZmZlcgorNTY1NDggNWYzZjU0YzBjNmM4ZWIyMGQ2YjgxM2JmYWY1NjJhYmM3MTQ5MTJjNSBweTNrLXN0cnVuaQorNTY1NDkgOGZmODk5NjQxNTYzNTJmNzdhYWZlNGQ5MjBiZDYwNDFkN2E3MzNlMSBweTNrLXN0cnVuaQorNTY1NTEgNmZhN2Q4ZmIwNzczMThmOGNmYWViZmM4OWRiMjg0NWY0ZWJmNWY0ZiBsZWdhY3ktdHJ1bmsKKzU2NTUyIDQzNGFlNjZiN2RlMDRlOWJjY2FmOTc3ODE3YzhjZjMyNmYwZTlmNDkgcmVsZWFzZTI1LW1haW50Cis1NjU1MyA2NDkwM2ZmNzZlZGUxYTA5NjllOGIxNjZkODFhNTRhMTZlNDU0ZTA3IGxlZ2FjeS10cnVuaworNTY1NTQgNTdmYWNmMzRhNzE4NjEwYzU2OTNiNGU5ZmUzODVhNDM5MGZiMTVkZiBweTNrLXN0cnVuaQorNTY1NTUgYTU0MzRmYWRhOWZmNDljNDA3ZTAxZTI3Mjc3ZjYwYjc4YjRlZjQxMSBweTNrLXN0cnVuaQorNTY1NTYgMmFjYzg5MDI3NjhjNDQ3ZjAzMzY2Mzg4OWM4NjVhOTViYmE2ODBhMyBjcHlfbWVyZ2UKKzU2NTU3IDA3YTU3N2I2MjBlYzY5MTgyYzQ4NTM3MTAwOTZkYmI2OWZhNjM4MzggcmVsZWFzZTI0LW1haW50Cis1NjU1OCBkZWVjNDEyNmZmYWNlYjA2ZTI2ZmFkZTZhMGE4ZmI4ZTI3ZWI4ZWJiIHJlbGVhc2UyNS1tYWludAorNTY1NTkgYjAwYmQwOGEwOTQ5NDkxMjI3OWI4NDk3OWQ1MmJkYjM0YTFkODBjYSBweTNrLXN0cnVuaQorNTY1NjAgMjc4YzUyMTM0MTQwZjYxN2RjZmYxY2FhMDdkY2RlODQwOGFjODQ4OSBweTNrLXN0cnVuaQorNTY1NjEgMTA3MWY3MDc2ZThlMzhjNzM0ZmI1OGNmYzM0YmZiOWMxMGVlOWZjYiBsZWdhY3ktdHJ1bmsKKzU2NTYyIDIwYmQ1YmUyNGFiNTZiOWI5ODViYzhhYmYxYmQ1NjkwMDY4MDViYmEgbGVnYWN5LXRydW5rCis1NjU2MyA4NjI4NWIzOTdiNGQxMDRkNDk3ZWEwZGM0ZDRhMjAxNzQzNTllY2E3IHB5M2stc3RydW5pCis1NjU2NiAwNTQ2YzExNWE5Y2YzYzcyYjM2MDUxYjhiZWJkMDNlZGZmMjQwOTUzIGxlZ2FjeS10cnVuaworNTY1ODQgOWU4NGI0ODY4OTg0NjgxZThlMWZjYzFlN2I4M2JjYWMzMGIwYWY3NyBweTNrLXN0cnVuaQorNTY1ODUgOTBlNDJhMGIyMjAyY2Y4NTZkYzVhMTM4MDkzZjVmMjJmYmFjN2I0ZSBweTNrLXN0cnVuaQorNTY1ODYgZjY3MjA3MWQ4MmZiODM4ZGM4YjY1ZDY2NTEzODcwNGI4MTc1YzA1MCBweTNrLXN0cnVuaQorNTY1ODcgMzU3Y2I4OTY3ZTg1ZWUwZjc4Y2NkOTIwMWM1NjM3Y2U2MTc5ZjA1OCBweTNrLXN0cnVuaQorNTY1ODggZTk5MTZhNGUwNmE0ZGQzYTUxYzFiNWU1YTdlNDIwYzRhZGEyMDQ4YyBsZWdhY3ktdHJ1bmsKKzU2NjAwIDdlN2RjZTMwODllMzdhOWMxMGZiZTIxYWI2MzI2Y2Y2MDhjMjVkZDMgcmVsZWFzZTI1LW1haW50Cis1NjYwMSA4NWI3ZjQwZTFjMWNmMGE1YjU1ZjY2Mzc5MmExNjcxZTYxYjZmNDMyIGxlZ2FjeS10cnVuaworNTY2MDMgZDM0NzFlZjZmZTM4YTljODhjYTUxNmYyMTQ3ZGYzNzRhOWY3YTc2ZSBweTNrLXN0cnVuaQorNTY2MDQgZTMxYzQ4MjE4YjBjYjkxYTBjOGNkMjZhNDk3YjFhNTA3ZjZjMDA5NCBsZWdhY3ktdHJ1bmsKKzU2NjA1IDc4NWRlMjI0OTk1ZDUxMTVhZjc1ZDMxZjk3OGVjOWVjYjM4NWVlZWEgcHkzay1zdHJ1bmkKKzU2NjA2IGUxZGFlODYyNmMxMWE2ZGUwOWY3YzZmNWY0NmFkNmIwMTYxNGY5NGYgcHkzay1zdHJ1bmkKKzU2NjA3IDg2YzEzY2U2MGFhZGU1ZDk3ODczZDM5NzFiYmVlNjk2OWQ2OGQ1ZmYgcHkzay1zdHJ1bmkKKzU2NjA4IGQ1MmJlZjU1MmFhNDA3ZjFhNjIyZDJmOTJhMzJlOWJhOWEwNzc1MzEgcHkzay1zdHJ1bmkKKzU2NjA5IDMxMDViN2NmMzViZWE3MDc3ZmJhOTc2ZTg0YWRjYWNmNmVjY2YzMzYgcHkzay1zdHJ1bmkKKzU2NjEwIGI5YWRhZDU2OTVhMzlhZDEwODlhOTQ4MGRmMWZkMzAwYmY0Nzc5NmQgcHkzay1zdHJ1bmkKKzU2NjExIGU5NGQ1MDYwYjBjMWM0YTI0ZjYwNzI1YjEwMDI1ZTRjM2FjZDI2YjYgbGVnYWN5LXRydW5rCis1NjYxMiBmMWYxZjVlMTM5NWM4YjQ5ZWNlZDA3M2MyNTQxNzcyMzAxOGY5NTA2IHJlbGVhc2UyNS1tYWludAorNTY2MTQgNWNkNWYzMmI0YTI4ODY0ODgwNjJlMDE2M2Q1NDExYWI3OWIxOGI0NiBsZWdhY3ktdHJ1bmsKKzU2NjE1IDM2NWU5OTFhNjMxYjRjNTY1ZDY1NTBkN2ZhYTIyNWE4OTI5MTUwYjkgcmVsZWFzZTI1LW1haW50Cis1NjYxNyA4YWQ4YTMzNGJlMGYzNTVmZDA0NzkwMGYxNjM3MzNjNTUwNTE5MDUxIGxlZ2FjeS10cnVuaworNTY2MTkgZTU5ODE3M2Y5NWU4ODA0MWY5NTBmMTUyNDhiMmY2MWIzYTdmYzIzNiByZWxlYXNlMjUtbWFpbnQKKzU2NjIwIDI1MTAzM2ExYzJlMzI4NWRhMjc0ZDg2Y2Y2ZjQ1ZDMyYjViN2FjYTkgbGVnYWN5LXRydW5rCis1NjYyMSA3ZTg0Njk2MTdiMWMzZDI1NmU3ZTkzODVmNjEzMmRjODUyM2I5MDZiIHB5M2stc3RydW5pCis1NjYyMyAwYzMwMGIyOTIwMGMyMjg5YjVmOTU1MTlmNjdhMjM1MzdhYTIzZWQzIHB5M2stc3RydW5pCis1NjYyNCBjZTdmYzA4ZDVmNDc4NTMxNDE2NDAwNjYzNjJkODMxYWUxN2FmMmE5IGxlZ2FjeS10cnVuaworNTY2MjUgNDhjZmFhYTgyODczMGRlMWExYTE1OWNhNTQ1ZDIxY2NjMjE2OTNmYSBweTNrLXN0cnVuaQorNTY2MjYgNDY4NjIxNTY5YmU4ZTk1ZWNkOTMzZmM5Yzg2ZWM2YmEyMTYzMzU0ZiBweTNrLXN0cnVuaQorNTY2MjcgYmQ4NDU2Yzk1NjlhYzI1MzE0NGFlZDc4MWQwMjU2ZmY4Y2M1Mzg3YSBwM3lrCis1NjYyOCA4ZTY5YWMxYmQwNDJjY2FkZmRiODRjNjBmZGI0ODJlY2ViZDRhNWNiIHAzeWsKKzU2NjI5IDUwNDA4NGMwNGFjMDAwY2RkM2NiY2RkN2ZiYTkyYmIwYjc2ZmE0ZWEgcHkzay1zdHJ1bmkKKzU2NjMyIDNhMDE1MzU1YjA3YWEwMzUwNDEyMjgzNDA5NGUwYWMyMDkzYWRlMjQgbGVnYWN5LXRydW5rCis1NjYzMyBiNjA2OGRkNmFlMDBjM2UxNTc4OTA4OGQ4OTkyMTZhNzUxMTBhZTkzIGxlZ2FjeS10cnVuaworNTY2MzUgZWYyZGM2MmQyN2ViN2Q4ZjMxOTkyNWIzMWUzMGYyOGJlMzNhZjc2NiByZWxlYXNlMjUtbWFpbnQKKzU2NjM2IGUxYzBhYTk0YzA5MmY5YzIwZTNkM2QyYWRiNDEzMGY2N2ZkYWE4ZjQgbGVnYWN5LXRydW5rCis1NjYzOCAzZjc4YWNjMDEwMzk4MTViNmZiZDk1MjAyNTEwMjFlMTg4NjEyYWNiIHAzeWsKKzU2NjM5IDhiNTZhMDY5NjE0ZWY0YTIxNTBkMmYwODEwMjM2OWIyNzlmYTM0MDAgcHkzay1idWZmZXIKKzU2NjQ4IDM5MmY5ODIyMWQxM2VlYWM0OGVlZTAzOTI0NTQ3NjkzZDI3MWRiYTggcHkzay1zdHJ1bmkKKzU2NjQ5IDhjMTY1ZDIwNzA5ZjYzZmM2M2I1ZjJkZDBkYjhjOGQzODNkNDlmNTcgcHkzay1zdHJ1bmkKKzU2NjUwIGE2ZDI2YTRkNjcyZGVhM2JkODNmMjQ0YTgzZWU0Njc4NWQxNjdkYTYgcHkzay1zdHJ1bmkKKzU2NjUxIDk4OThhNjY5NjViY2Q5ODc4NTk0Y2E2MmFmYmE1MWRmMDAxNWUzOTYgcHkzay1zdHJ1bmkKKzU2NjUyIGQzYTVjNzk2YzhiYTAwZmY1ZjAxMzFhMmJiYjEyZmRkYjg3OTBjZTEgcHkzay1zdHJ1bmkKKzU2NjUzIDY3MDU5Yjc4YmNlNDc1ZDNhZmE1NGY1ZDVhYWUwMjZkNWJkMGQzYzYgbGVnYWN5LXRydW5rCis1NjY1NCA4MDFhZDJmMGQwYjU4MDU5N2RjMmM4MWY5MDQ1YmUwNmQwOTRiNzg3IGRlY2ltYWwtYnJhbmNoCis1NjY1NSAwN2MyZjgxYzI2N2Q2MTliYzc2M2RhZWM5Y2M0NTE1MWEyZDQ4ZThkIGRlY2ltYWwtYnJhbmNoCis1NjY1NiBjZjQ1OTY1MmMzNTIzNGI3ODNkZjQzOWViZTY3YTU5ODg2NmM3MWJiIGRlY2ltYWwtYnJhbmNoCis1NjY1OSA2ZjIzMzBlMDkwOWJlYzRiN2IwNGI2ZDRiYWNiZDNkMDQzMzdlMTJkIHB5M2stc3RydW5pCis1NjY3MiAwMmMyNzE3N2RmNzkzNGJjY2ExZDZjZWFkM2E3ZGI2ZDU0MThhZmI4IHB5M2stc3RydW5pCis1NjY3OSAwY2JiYTQ0MjZjZDNjNGQyYWE5ZWI4MGFjMWYzNDZkYzBhMDBmN2M0IHJlbGVhc2UyNS1tYWludAorNTY2ODEgZTIxZDY0NzQ2YmQzY2M0ZjUwNmFlOTVjMjE2Y2IzYTE0YTRjYzMwNSBsZWdhY3ktdHJ1bmsKKzU2NjgyIDc1NWUzMWRlYTQ3ZTU5NmYzMGE2NDcwYTc0MjBlYTI5MWEyN2IyNDYgZGVjaW1hbC1icmFuY2gKKzU2NjgzIGMzM2MzN2JhOWNiM2I1OWUwN2IxZTk5OTA0MWNlMWM4NGM3NzQ1NWEgZGVjaW1hbC1icmFuY2gKKzU2Njg0IGIxZmY1NGY4ZjlkODMxM2E1MWI5NDQ3OWM4ODQ0ZWQxNTU2MWQ5NDkgcmVsZWFzZTI0LW1haW50Cis1NjY4NSAzYWRiMDMzNWRlNTA2Y2RlZDIxOWUwNzZkOWZkMTlhZGY5ZTQ3NWFjIHAzeWsKKzU2Njg2IDE2OGQwNTUxNjBkYzE5ZjkxMTE3NGM5M2MwMmJkZjBlYjcwMzJkODcgcDN5aworNTY2ODkgNzIzY2I5ZTNmYTUwMGU3NTBlMGNmMGRlYjJkNDU4ZTYyNTkwZDIwNSBsZWdhY3ktdHJ1bmsKKzU2NzAzIDc3OTRkYTEzMzRhMDFmNzg0OWU3MDdhNDNjNzM3ZWZlZDkxODQwYTcgcHkzay1zdHJ1bmkKKzU2NzA0IGFlNzJiZjVhZTQ2NTE4Y2E2MWQ1YjUwOWI0ZjNjNWQ0YTEyM2VlYTQgcHkzay1zdHJ1bmkKKzU2NzA2IDQ2NjI1ZTYxMjJlOTliZmUwY2E0MWY2OWYyOWZjNjI5MTZkYjAyNWMgcHkzay1zdHJ1bmkKKzU2NzA3IDgxYWRlMDE0NDI0N2Q3ODc1ZDMzZDg1MmQzMjQxNDEwYzNiNTAyMWQgcHkzay1zdHJ1bmkKKzU2NzA4IGIxYmYxYmFiOTc3OTY2MDMxNTEwZGY1NDExMDEzYWM1YmJhMDE1MGYgcHkzay1zdHJ1bmkKKzU2NzA5IDZjM2ZhNDNmMWQxZDI1MTE5NmNiMWY5NDJjZjAzOTY1ZjQ2OTRmMDggcHkzay1zdHJ1bmkKKzU2NzExIDc0MDFmZjc4ZWIyOWMwM2JjYThkMzExMzdiODFlMGM3OWIyMzQ4OWIgcHkzay1zdHJ1bmkKKzU2NzEyIDUzNWRhZTA0ZDZjZDY3NDY0NTgzYzJlMDFjYjU4M2ZmZmFlNzhkMjMgcHkzay1zdHJ1bmkKKzU2NzEzIGUzMTlkMmQyODViYTNkNjc1YWY2ZjAxNzcxMmYzNTYwYmY2YTM5NTYgcHkzay1zdHJ1bmkKKzU2NzE0IGMzNTE0MDU1OWY4N2U4ZGE4Y2U2MThkNjk3YmJhYWU1M2U5YmE0NDEgcHkzay1zdHJ1bmkKKzU2NzE1IGY2Y2M3NmU0Y2EyNTFiZGFjN2Y5MDdmMTcxZGU0MGRjNGY5YjlmMGYgcHkzay1zdHJ1bmkKKzU2NzE2IDNlZDAyMGU5NWI0NDRlMzBlMzkxZTk1ZjY3MDM1MjA4YWExMzliNjAgcHkzay1zdHJ1bmkKKzU2NzE3IDNiZTI5NzJhMjljYWM1YzcwZTkwNzgxODcyMTZmOWQ3ZmFhYjAxNTcgcHkzay1zdHJ1bmkKKzU2NzE4IGFkZTVkMWFjMWEyYzhhNTAzOWFkZTA2YjUwZjRhZGMyMzc2YzIwMGQgcHkzay1zdHJ1bmkKKzU2NzE5IDcxMzA0ZWZiYzMxNmE2ZDJmNDJkMzViNjRhNWNhMTE3MGQ0YmQ4MjggcHkzay1zdHJ1bmkKKzU2NzIwIDA1NzI4ZTUyYjI4MzIwZDE4MDE4MmY2ODVkZDI4Nzk1NmQ2MTdlNDUgcHkzay1zdHJ1bmkKKzU2NzIxIGI2YmRiYjYzMjZkMmYwYjllMTk3ZjQwNjFiNWZlMzUwMjliNzA2YmEgcHkzay1zdHJ1bmkKKzU2NzIyIDBmYTg0ZmZiYTc2OThhZGViMjg1Y2VlZWEyMjllZWQxNDc1ZTYyN2EgcHkzay1zdHJ1bmkKKzU2NzIzIGM2MTk0NDgwYjFkNTk2MWQ0ZWRmMzRhOGUxMjkzMWYwNDllYzk3ODIgcHkzay1zdHJ1bmkKKzU2NzI0IDEyZGJhZWNmYjQ0YjkxNDdlODMzOTg2NDczZjk5NTU3MjQ4YTE5MWUgcHkzay1zdHJ1bmkKKzU2NzI1IDEzMzM1MDM5ODcyMjEwYTkxZGZkOTQ4ZWJkMDllMWE2MWI5MWY3MmYgcHkzay1zdHJ1bmkKKzU2NzI2IDhkNjlhMDg0ZTM2NTVjYTU1MzBiNTllYWU2NTRkNDYwMDViYTQ5MzcgcHkzay1zdHJ1bmkKKzU2NzI3IDNmZTU3ZGFhYTYwODEzNDk2NzhhYWM1ODBlMjJiNmJmZDVkYjdkYTIgbGVnYWN5LXRydW5rCis1NjcyOCBiYTY0ZmNhYjUyMTQyYTVmYjg3YzllYTBkMDRmZjNjNTVlZjYwMzAxIHJlbGVhc2UyNS1tYWludAorNTY3MzUgYWE1ZWU2NTMyOGZiNjk0OGE2MzgxOTY1YTRjMzY4YWJhZTgxODA3MCBkZWNpbWFsLWJyYW5jaAorNTY3MzcgZWQzNzU0MmY0NzNlYWUyODY1ZDcyZTBmNDE2YzFlNzg2YWJhMDk5ZCBweTNrLXN0cnVuaQorNTY3MzkgNTI4YThkOWVmMjAyZTU0ZDYzN2U2ZWI5MzdhYTc0NDc0MjEwODcwYyBweTNrLXN0cnVuaQorNTY3NDAgYTQwYWVkZGMwYzgxYmQ4ZTQ3YTljMjhlNTgyNjA4NjIyNTRjNTZmYyBweTNrLXN0cnVuaQorNTY3NDIgZjQ0MDljNWQ3OTk0ZDNhMGZlY2ZkY2I2YTE4YjcyNmI5NWY1NDI5MSBweTNrLXN0cnVuaQorNTY3NDMgZDIyMzVhZWUyZDI1NTAyY2FjMTk2MmRiNjljZDBkZTQzMGEzYzhjZiBweTNrLXN0cnVuaQorNTY3NDggYTg0ZWFkZjYzNzJlMzhiMjM2Y2JmZWIwODdkM2ZjNDI5MWI0YTkzYyBwM3lrCis1Njc1MCBmZGJlZDczZTVkYTdmNWNiMTEwOTM4YTRhODgwZmI4N2Y4YWIwM2U1IHAzeWsKKzU2NzUxIDY0ODU3N2NjNjg4YWY2Y2ViMDc5NzI5YTU3YmZhZjFlODY2NDFlNGIgbGVnYWN5LXRydW5rCis1Njc1MyBkZDc0ZTAyMGExMzIzODZkNDE2OThmYTg3MmVjZWQwYWRhMjE0MDdmIHB5M2stc3RydW5pCis1Njc1NCA2MjkxODU5OTJhYTIxNTBiMDI4ZDk4OWNhYTQ1YzI0YmFiZjY0NDQxIHB5M2stc3RydW5pCis1Njc1NSAwODBmMmFhMTgwMTU4ZTcyZTkyODhiODkyZmNlYTA3YjhmZDQxYTlkIHB5M2stc3RydW5pCis1Njc1NyA0OWQ1MWMxZmMxNzc4YzEyZWY2NTE1ODZhOWE2OWFhZmZhNzM4ZDBhIHB5M2stc3RydW5pCis1Njc1OCAxNzgwMDM1ZDU4MTIzYzc3ZmNlOGIwNTRhNzQ2NjdkYzY1ZWZlNWE4IGRlY2ltYWwtYnJhbmNoCis1Njc1OSA4OGQ3YTNkZjVmNzllNTI5OGFlNjI0MGFhZDRiYjVmOWMzZTYwY2FhIGRlY2ltYWwtYnJhbmNoCis1Njc2MCBiNDUwMDU2NDFiY2E2Mjg5ZDkxNDViZjRlZjY3MGNlZTJhZmY2NDk2IHAzeWsKKzU2NzYyIGRiZmMzY2YxNTIyZDA3YTRlNjk2YzdhYzIzMzZlZDE5Zjc1YjYzZjMgbGVnYWN5LXRydW5rCis1Njc2MyA5YjI2ZWU2ZTZkMGE0NWRmYzlhYjI5MmQ4MzgwZTE5NDlhYmVlZTA3IGxlZ2FjeS10cnVuaworNTY3NjQgMjU4ZTJiN2E3OGU0ZmUxNzQ3ODQwM2ViYTlmY2YyMTRlYTI5YTZmYSBsZWdhY3ktdHJ1bmsKKzU2Nzc1IDBhZGI3MjA3ZTRiZWI3YjRkM2YwOTc2ZTM1YmNmZjMxYmNmMjYxOGQgZGVjaW1hbC1icmFuY2gKKzU2Nzc3IDhiNDVmMjI5N2RiZDE0OWIyOTIxYzJkNmVjOGVmNDczMTQwZjM4YTkgcHkzay1zdHJ1bmkKKzU2Nzc5IGIxMGJhMzhlNmI4MDgxMjM2YTU5MDNhMmExOWQ2ZGI5MWZlNDg0YTIgcHkzay1zdHJ1bmkKKzU2NzgwIDIyOTM2MTE5OGU4ZDVlZDgzYzY1OWE0ZDA4MDY2ZGI2ZDZkNzg0NWQgcHkzay1zdHJ1bmkKKzU2NzgxIDQ0MDE3NmYwNjE0Nzk0MjQwNjFhODdjMjZiMmNiNTJkMTYxMGM2ZjggcHkzay1zdHJ1bmkKKzU2NzgyIDNmYzNjZWRjNDljYTNjNmE4NWIxODU4MDcxNGVkOTE0YTg2ZjI1YjggcHkzay1zdHJ1bmkKKzU2NzgzIDgxYTM4MDNmNDNjZjk4OWViZDg0ZmMzN2ZlY2M3ZjNjNTFmOWU0MzMgcHkzay1zdHJ1bmkKKzU2Nzg0IGY0Yzk5Y2FkOGQyZjY0YjI3ZjkzNmQ1M2UzOThkNTllY2YwMTczOTAgcHkzay1zdHJ1bmkKKzU2Nzg1IGY4MjgxZGMyZTY4ZGVkN2YzYjZmZjc3ZTFjNjRiN2I4ODdiYTc1ZWEgcHkzay1idWZmZXIKKzU2NzkwIDJhYjE4ZmZiNDAxY2YxYjdhZDA5NDNmNzRkYTkxODQ5ZmUyNmJhOGUgcHkzay1zdHJ1bmkKKzU2NzkxIDJhMTEzYTgyNjRiMTYyMTA2OTk0YzY5NzRlZDVhNGQzMzMyNjYyZTQgcHkzay1zdHJ1bmkKKzU2NzkyIGYzMjQ4YzMyMGRkMDNhMWRjMmM2ZTc4ZmE2N2MyMjg4NWFkNTVjNGIgcHkzay1idWZmZXIKKzU2Nzk3IGZlNWEwNjIxZjkxODgwNmRiZmExMmUyYmE4ODczZjZiOThmMWFmZjUgbGVnYWN5LXRydW5rCis1Njc5OCA3ZDA3OGZhMzRiYmY2M2JmMmEyYmFlOWQ1NTA0YzZkMDg0Yjc3MmI5IHJlbGVhc2UyNS1tYWludAorNTY3OTkgYjIyZDlmZDRhNzg1YWRmYWEzMmE1N2Y0OWU4MGU2ZjJlMWM3ZGExOCBweTNrLXN0cnVuaQorNTY4MDAgNmJhMmU2NzU4MGZjOThiODAyZDUwMzRiOWE5OWZkZjk1ZDE4YzUyZCBweTNrLXN0cnVuaQorNTY4MDEgMzQ1YzgxMmYzMzY2NWVkZjMyZWVjMGZhYWJjYWZjMmZlMjhlNzI0NCBkZWNpbWFsLWJyYW5jaAorNTY4MDIgMjk3MzU4OTljYTE1YTA2OTZhODU5M2ExMmJmY2UyNTMwZDA0MjZjOCBweTNrLXN0cnVuaQorNTY4MDMgNmZkZDFhZjYzZmE2YTVmZmI3YTc0NTQ0YmRlOTUyYjEwMmUxY2IwYyBweTNrLXN0cnVuaQorNTY4MDQgZTdmZDMyN2UwYzE5YTI4OGYwOTU1ZDc1NzhjYTcwODk1OGYzMWI3YyBweTNrLXN0cnVuaQorNTY4MDUgNDlkNGM0Y2RmMGM4NjI4M2MxYmNlYmM1Yjc5NmQ3MDE0MTlmMWQxYyBweTNrLXN0cnVuaQorNTY4MDYgOWYxODQ4ZjU5NmUwY2M2NGQ1YzY0OGQ2OGQxYTM0NWFkZmRhY2Q5MyBweTNrLXN0cnVuaQorNTY4MDggZTExNTBhYWUwZjY0ZDZkYjk2NGRhMzliYTJlNTdlODQyODQxNDI2ZiBwM3lrCis1NjgwOSAxM2RjODM2ZDRhOTlhODVlMDc5MjQ4MTNkN2JlMGEwYWRmZDdlZDExIHB5M2stc3RydW5pCis1NjgxMCBiMjBjYzFjMGNmMTBlNDQ2MWU3NjQxZjEzZjY2ZmQxZmFmYThmM2I2IHB5M2stc3RydW5pCis1NjgxMSA0ZGVhM2I2OGIwMTNiMGU4ZGQyYzgwNzFkOTM4YjNlOTlmMWUwOTMwIHB5M2stc3RydW5pCis1NjgxMiAwNGExNGRmNDA3M2E0ZWY4ZTAxZmFjZGNmYzg4ZjFkYTFjOTFiMGEwIHB5M2stc3RydW5pCis1NjgxMyBjMWVkNDkwYmQyNjY3NGRjZDk0Nzc0N2I3ODMxNjNjMTA2MGMxYWFhIHB5M2stc3RydW5pCis1NjgxNCBiNjVmNmFjNTI5NjhjNjYzNDc0ZTViYWY5ZThkMzUwZmU1NzY3YTYxIHB5M2stc3RydW5pCis1NjgxNSAzZjFmY2QwODBlYzRiNTAxMGIwMzc5N2FhZjczMTM5ODAwZDRhNzM5IHB5M2stc3RydW5pCis1NjgxNiBjOGEwOTFiODQyZDZlZGNmMzAxYjdmZjdjM2Q1ZDFiOGIzODkyYTk3IHB5M2stc3RydW5pCis1NjgxOCBjOTZiNGMzODY1MmMzOWUyNDgzMzNiZDZmY2UwM2I5MzA4Y2Q4ZjM2IHB5M2stc3RydW5pCis1NjgxOSA2NjhhNWFkY2M4N2NmMmNmOTdlNTg5MGVmMzc3N2FiOGYyZTk0ZTJlIHB5M2stc3RydW5pCis1NjgyMCBiNTZhOGQ4MjJmMjFiNjVhMWU2NTczZTdmYzQ0MzIwYjg1N2RiMmJkIHB5M2stc3RydW5pCis1NjgyNCBhOGYxM2E0M2VhYTFlNTNkYzJmMWQ2NmVkNTUyZjk3ODlmMDY0YzE4IHB5M2stc3RydW5pCis1NjgzMCA4NmZkMzljMmM2NzY4ZGNmMmFhOTNhYmUxNDI0MDMzNmVjNWM1Zjg1IGxlZ2FjeS10cnVuaworNTY4MzEgODljODFmZDcwMzhlNjMxNzNmNDE3NDFjYWQ2YjQ4ZDE1ZTRjZDBkNyByZWxlYXNlMjUtbWFpbnQKKzU2ODMzIDNmNmJlMTJiOTUzNDIzZmRiYzE1ZTY3ZjBlZmQwMjMzZTdmYTg0NDYgbGVnYWN5LXRydW5rCis1NjgzNCA1N2NkMDcwYWQzMDQyZjEyZWQ0MjAzM2E4MDczZTBmYWU2MmU3OWY2IHJlbGVhc2UyNS1tYWludAorNTY4MzUgNWY2MGM5ZTQxNDQwM2FlNWE0ZjRhMTAxZjg5NTM0OGMwODVlNjdiOSBwM3lrCis1NjgzNiBmNGUzNjZjMzkyYmU3MDZlYzNjOTFmNzkyMmU0NjhmZTJmY2FmZTk3IHB5M2stc3RydW5pCis1NjgzNyAxN2NkYmVkYmIxNWQ0NTRhM2RhNzVkN2RhMzQxMTRiNmYxMDdiYzUzIHB5M2stc3RydW5pCis1NjgzOCA5NWQzYTY1Y2I3NGM3MGY4YmZhMTZjNDFkYmE4MzI3YzYxYTFiOGVkIHB5M2stc3RydW5pCis1NjgzOSA5NjA5OGFiYzhmOGY2NzY2YzVjZWNmNjZmYTY3MGIwMDRjYWUwNDI5IHB5M2stc3RydW5pCis1Njg0MCBjMzIxYzJiNTk4ZjE3NDgwOTAxN2FhOWU1NjcyZTFlZjkwMzY2ZmU4IHB5M2stc3RydW5pCis1Njg0MSBmNjA2OWY5ZGQ1MmRmYTljOWI2ZjEyM2JmZjZiYWI2MWUwNDc5NzczIHB5M2stc3RydW5pCis1Njg0NyA5ZWRmMzBiZmMyZWJlMGFkODEzMDhhNjc4MTNhYWVmNTlhN2NjM2Y3IHAzeWsKKzU2ODQ4IDk5MTg5ODliNzMzYjVlYzdmNTUxNzM3Yjc4ZjNiMzliNTkwY2JmMzggcHkzay1zdHJ1bmkKKzU2ODQ5IDIzZDk2M2E3NTY5NjJlYTEwYjQwMzE0YjRhN2RjZDZhNDJlOGFiYjIgcHkzaworNTY4NTAgNWZiZDE1YzYxYjEyNTA1MTdjZTFjNjc3NmZkOTkwYjlkM2I0NDZhMCBwM3lrCis1Njg1MSAzZTFhMTUxODVmOGNmOWVlYzA5YzY2NGIzOTliNmZjODgyMGE2NTBmIHB5M2sKKzU2ODUyIDI2Y2EzZDZmNDczYWQ2ZGU1NjdmMGExYzdlMDk3Njg0MjE5YzlkNmUgcHkzaworNTY4NTMgZGIyNTlkMTQxZTdhZWMwMmY2YWI3ZThiOGJjNzVkZmM0ODMyZGUzZiBweTNrLXN0cnVuaQorNTY4NTQgNGFhZWEzNWRjY2NmOGQyMTRlYThjZDUwODNiM2I1MWE5MWU2MmExNCBwM3lrCis1Njg2MCAwYzg5NDA5YmRhN2FiYzYwZjM5ZGJkY2NmYTI4NDMwNjdkMTA2MzEzIHB5M2sKKzU2ODYyIGRmNGNkOTI5NzA5ODE5NDdhMjlmNWQwZmIxYjBkZTY1MWVjYWYwMjAgcHkzaworNTY4NzEgNDg2NWI1MTBjZjU0ZThkYTFkZjNiNjNlNmZlNzkxZDgxMDJmYzhmZCBweTNrLXN0cnVuaQorNTY4NzIgM2RhMGE0ZGIyMTAyNGRlNWI2NzUwYzMzMjI1YTA0ZGUwM2IwZGE3MSBweTNrLXN0cnVuaQorNTY4NzMgNTIyYTNlM2EwM2E5NmNlMTliYjg2YThjMTllNGY2MjcyZjZlYjE3NCBweTNrCis1Njg3NCAwNDNhMTAyYTE3MGVlMmVmM2JhMzJlYWU0NWQwYmU2ZWUwNjFhODYzIHB5M2sKKzU2ODc1IGRjZjI3Mzg1ZjEyNTE5MDIwNjc4YTg4N2Q1ZTE4YmNjNGMxMDMwOGYgcHkzaworNTY4NzYgMTY2Yzc0MDUzNmI1ZjczYWI0NzZlNDk4Y2M4MzVlNjY4MDZiMDg1NSBsZWdhY3ktdHJ1bmsKKzU2ODc3IDgyYTVjMzBjMTc4NjIwNmFkYzVkMWQyNDRhNGExZDc2MjRhYzQ2YWIgcDN5a19ub19hcmdzX29uX2V4YworNTY4NzggYmUzZmVjZDJkMzM5NDI5YzM4NTA0MmY5ZjhhNWFhODgxYjkxN2Q3MyBweTNrCis1Njg3OSBhMjRlMjdmMDVlNDgyOWNiODcyMzhmZDk2OGJkYTlkNmVkMjlkNGI1IHB5M2sKKzU2ODgwIGMwZGJmNDVjYzIwNzI5OGY0YzA3MDE4M2RkMDVkNTk5OTFiZTk5ZTIgcHkzaworNTY4ODIgMDg3MGU4ZTllOTlmNThmNmFkZWY2NDZmN2FiMzhkYzFmZWU0ZjNhOSBweTNrCis1Njg4MyBmMGNmZWQzOGI5ZDllMWY1NDg1ZDYwNjMwMTgyOGYxNmUyYjc2YjRjIHB5M2sKKzU2ODg1IDBlNWFlYmEzYzY3ZGIyYTVjNDg2YjM4YmY3MjcwNGFlMGZiMTg5YjkgcHkzaworNTY4ODYgNTA3ZjU2NzFlMzg4NjI4ZjVkZTgxNjM0MDM3NWY3OWVkMjc3ZDI5MiBsZWdhY3ktdHJ1bmsKKzU2ODkwIDBhYjM0MjFhMDkwNjc3YzkwOWI5ZDdmNDhmMjM1YmMxZDUzYzdjN2IgcHkzaworNTY4OTIgOWQ0ZTIyMDIyNGZiNWRkN2ZjNTI3MzBjNTJhMzU0ZWU4NjAxZTAwMSBweTNrCis1Njg5MyBjYzI1ZDE2MGYwZjdlZTEwYjBhMzcyYzBjYmQ5MDY4OTU3NzI0ZTIxIHB5M2stYnVmZmVyCis1Njg5NCBlZWIzN2M5NzkzZWE1MzQzNjhkMDQ5OTgyMTk3YTQ3Y2VlMjQyY2YwIHB5M2sKKzU2ODk2IGYzNzAxNmQ0MjcyOWZiZWY5ODU3ZWRjOTI5NzcxZGY4MjAyZGU3YjMgcHkzaworNTY4OTkgNzcwMzE4N2M3YzZmMTE3Y2M5YjAxNWVlODk3NGZmZmVjYzIxOGM3MyBkZWNpbWFsLWJyYW5jaAorNTY5MDAgOTMwNzM2ZWU5M2Q5NDkwYTkzZDI4ZmExY2IzNjJkYzcyNmFiNjE4MSByZWxlYXNlMjUtbWFpbnQKKzU2OTAxIDM0NmQwYjg0MDMwYjlkZjk1OGZhZjg1NDFhZmNkNTM5MmVjYmRmNzQgcHkzaworNTY5MDIgZTY0Mjg2MDUzYjI1MjI4NTE1ZmY4ODNjYjA1NGM5OWY5MTc2ZTA5ZiBweTNrCis1NjkwMyBkOTViMTVhNTVmMmMwNjMwZTBjZTU2MDYwMjk0ZjU1Mjc3NWM5ZWU0IHB5M2sKKzU2OTA0IDNlYzIwYzRjMWE0ZmJjNTEzMzY5MmVmMDZmNjIxNDVmYWRhN2MxYmQgcHkzaworNTY5MDUgYWZmYjFlODc4ODFhNWYxYWY2M2YyZmMzMzkxNzc1ZGJjODBmZjRmNSBweTNrCis1NjkwNiA4MWJkM2U5NGNmMGMzMWQ4MzQyYjY2YTBjMmIyZmIwM2M2MWMyYWFiIHB5M2sKKzU2OTA3IDM4NThkMGI4YjBlZjc2ZmJkMGRhYmUxNTM2ZDQxMGFkOWZiZGFlM2IgcHkzaworNTY5MDggM2ExNTcyZDFmZjFhZDU0ZmVjZGFlYTA2Y2IxNWU4Yzg4NGQzMDA4NyBweTNrCis1NjkxMCBmODI4ZjM1MDE0YWUzOWJhZTUwODRkOTE4MWZlOWY2MDdhZjg3ODQ5IHB5M2sKKzU2OTExIDZhMDk0MjMxNjRmZTYyNGY1NjdjYTE0YjEwMmE3NTU0MTUyMjc3MGQgcHkzaworNTY5MTIgNWY5ZTc5ZDFlMTU4NGI1OWZlODFlZTljOTFmNzYyNzQwOTY1MDBkZSBweTNrCis1NjkxMyA4ZDY4NjdjYjhhOGRiNzE4OTUxOGVkMDVjNWI4MjVmZDczMGY3MDQ0IHB5M2sKKzU2OTE0IDZjZGRjZTQwOTZhMjI3ZTIwY2E5NTE0MDQ4M2Q0OGRiYzcwM2UzYmMgcHkzaworNTY5MTUgNzRhM2M2ODI2NjgzZTRmNzQ5YTIxOGUzNzYyNzc5ZGMzMzM0NjJlNiBweTNrCis1NjkxNiA5YzNlNjQ0MGY1NGMzMjNjNjgxNTIxNmU0Y2IxNTkyMjAzOGRkNzgyIHB5M2sKKzU2OTIyIDQzZTMyYjJiNDAwNDgxY2EzN2I4NjM4YzNhYzZjYzZjYjdhZTkxYzEgcHkzaworNTY5MjMgNjhmZjkwOThiMmRjODM2ZDViMGQwYjRiZDYyMzExOTE3NTQ3ZDY5NiBkZWNpbWFsLWJyYW5jaAorNTY5MjQgYWFiNjg3OTM2ZWNkODI3NGJlNDg4MDI4OTNmYzBkOWFiZjBhN2ZiNCBweTNrCis1NjkyNSAwYzlhZDBiMmZhYzU0YWI5MGEyN2ZiMzQzYjJjZWJjMDJkOTk4MjY1IGRlY2ltYWwtYnJhbmNoCis1NjkyNiBkMTg1NWQwZTRlMDNjMzkzNzYxMDc2NzI4OTQxZmNiMGJjMDhiYzRiIHB5M2sKKzU2OTI3IGNmYWRkN2NjOWM0NTc3YTU2YzkxYjdkNTI0YWVlMDg3MjU3YzkzNjkgcHkzaworNTY5MjggYTQ0YzU2NDAyNmI4MzE0ODYwNTVmYjE0ZWJjOGM3ZDQ1NWYzMTI2NCBweTNrCis1NjkyOSAwNzdjNjgxODZlMjM3N2Q0NWFhMjdiMmE2YjVhNmI4NjBhOThkNTMxIHB5M2sKKzU2OTMwIGNmOTEzNzdlMjQ0NGU0MTRhNWFlNDIyN2JlNmU3YjI1M2YzYWJmMTUgZGVjaW1hbC1icmFuY2gKKzU2OTMxIDQyMWY5ZjM1OGU0ZmJiNGI5NTc4MzZhNjQxYTVlYjk0NzEwODJkODYgZGVjaW1hbC1icmFuY2gKKzU2OTMyIDBjMGUzNTVjZjc0MDdjZDNlYzQ2NTJmN2EwMzlkYzkxYTFiYmI4YjkgcHkzaworNTY5MzMgODQ0N2VjZDFiZjQ1ODFiODlhNTNmZjdmOWY0NzU1MTZhYjZkN2ZmOSBweTNrCis1NjkzNCBhOGM3NDI0MjUzNTYyY2Q0ZjRjMzE4ZDQxMWY2ZTFmMTk4NzA0ZDI5IHB5M2sKKzU2OTM1IGUwZjYyMjg2YTlhNDU0YmQzZjkzZWZiYWU3MjBlODY5NjFhNjMxODIgcHkzaworNTY5MzYgNjVmMWQ0MTlmNjMxMDlmZTc3MWViOGFkYjdjODRmODY4NjJmMGM1OSBweTNrCis1NjkzNyAyNzYzMzBmNDJlNzkzNmI0NmYwYWFjNGRmZjdhYzFmYzQ5YzgwNTg2IHB5M2sKKzU2OTM4IGI2NjI1ZDJiMzc4YWYxMmRmMzI1OGJmMTk4OTYxZThlN2ZlZjk5MjIgcHkzaworNTY5NDAgYWMxOTJmODljMTA5M2NhMjAxYjIxZjEzMmQ1YTZjZjM3ZDQwNTcwNCBweTNrCis1Njk0MyBjNjlkMTIyNjQzZDUwZDNkM2I1NGIxZjQ5YTlkNGNjYjEwMWYxMDc4IHB5M2sKKzU2OTQ0IDdhYmFjYzllMzk5NThmMDg1NDNiZjYzZTBmYzRmZjFhNWZhYjhjOTkgcHkzaworNTY5NDUgM2U2ODJhZTlkMjk4ZWYxMThhNTkyZmVjNTc3MGE2MWNjOTdjNGViYiBweTNrCis1Njk0NiBiN2IzZjRlMzI1MzNlYjNmZjAyNjZhOTQ1NWEzY2VhZWYwYmEyODMyIHB5M2sKKzU2OTQ3IGZlZTVjNmJiZTE0NGRhYjgzNGVhZWY0OWI0NjdiMWQ3M2RkNGYzZGQgcHkzay1idWZmZXIKKzU2OTQ4IDRiNDk5NWM4ZTNmZDY3NmUxYWFjNTk4NzMyYzBhNmVkMTFiOWNiN2QgcHkzay1idWZmZXIKKzU2OTUwIGMzYjM0YjBmODIxNmFlMzllMzE2MGYyMjdmYzFkMWZhOTY0NWNlMmIgcHkzaworNTY5NTEgMzQ2YWZhNjU4ZTQ0NjAzODUwNjUzOWZhYjA4M2M1YTJlNjhiNzFkMyBweTNrCis1Njk1MiBlNzgxMDg1YWM5ODllNGMwYzFhM2YyNTRmZWUyY2M5ZDExNDQzZmQ5IHB5M2sKKzU2OTU0IDdmOTQ5YzE3Y2MzNjdiYmNiMzRjNTUyNWY3NDA5MDliZWQ0ZmVjOGQgcHkzay1idWZmZXIKKzU2OTU1IDBmY2MxOGFiYTM4NWRlNGM5NjAxZGI4M2Q4ZjBmMDdiYmFmMGFmMDggcHkzaworNTY5NTcgZDAyMGI5YjFkOThiNmFkNTdhOTYwOTZhNjBlZjY3NzZlMWM3YzZkNyBweTNrCis1Njk1OCBhZTljZjQ4ZWQ2ZjcyOGZkN2IwMzI1N2ExZjE4NDgyODBjYWY4ZTRmIHB5M2sKKzU2OTU5IDBkOTk1M2Q3YjgyNzU3Y2ZjNDkzMmM5ZWMxNzZhYmE1YzEyZmU1NDcgcHkzaworNTY5NjAgMTUwMTllYWUzOWU4MjdmNDE0MGEzYTJlZWEzZTAzZDVjOWVmOTJjOSBsZWdhY3ktdHJ1bmsKKzU2OTYxIDEzODEwNDZmZTg5NDViZDdjMzU4MDNmNDQzMzU1YzJhZTk3YWY3MTAgcHkzaworNTY5NjIgYjkwYzIyMDQxNjM1MWE1ZTZjNTgzMmVhNzBjMDQxYzZiYzk4Yjk2MSBweTNrCis1Njk3MSBlYjJjMDY3NmM3M2YxYjE2ZGYyYTc4NzVjNThjMTgyM2UwMWE1MGRhIHB5M2sKKzU2OTczIGQ0ZWU1NGE4ODQ4NTBiY2U2Yzg2MmNmZTIzNTI2ZTk2NjkzOTFmZDYgcHkzaworNTY5NzQgNTNiNzNjMjcxMWI2YzY4MmE0ZTEyYTk1NjQyNjhhOWFlMzU2Mjk4MCBweTNrCis1Njk3NSA1NDI2MTYzNGFkNDZkNWU5NmYwMjhkMjM5ODQzZWY5NGNiZTc3NDg5IHB5M2sKKzU2OTc2IDdhNDVlOGI3OGQ2M2ZmNDRlZTlkMDFhY2NkOWI5MDAxNWI1MWY5ZjIgcHkzaworNTY5NzggYTcyNDI3OWZjOTMxYTVmMWEwZmVlNjAxNWNhNTZkMDA2MWY1NDk3YiBweTNrCis1Njk4MiBmYjA2OWVhZmFmODlmNTMxYjJjYTFmNjllZTFlMTdiZjE5NzRhYmUwIHB5M2sKKzU2OTgzIDRiY2U5NGQ5ZWMzMWU0NTM4YzMwNmZmZTRjMTc4OWNlMmQ5YmY1ZWIgcHkzaworNTY5ODQgNmFmNmJiNDgyNGQ1YmU2MWMwY2YwN2NmZjc3MDEyZDI3YmNiYWNjZSBweTNrCis1Njk4NSA0N2FhZjNmNGEwMzhjZTk0YWI4NGZiNzI5ZGI0N2U4MjQ3ZjZlMjU1IHB5M2sKKzU2OTg2IDBlZDNkMTgyOTIwYjhmOGQ2NGJkZjM0OGEyYjcyNzMwYTMzM2Y0YjIgcHkzaworNTY5ODcgY2Y5YjNiNDg3ZmRhMWY2NWJkNDBhNDYzMWJjOTE1Y2U1ZTZiMmRiMCBweTNrCis1Njk4OCAzNzdiNDgzODFhNDljMDMzNGNhMmE1NzA0MWFjNDI5ZDI2Y2I5NDJlIHB5M2sKKzU2OTg5IDVhZWIyNjFkZTBiZGFjYzhmN2I5ZWE2ZDQ1ZjVlYTM3NWE1NmZmZWIgcHkzaworNTY5OTAgMWU0OTM2OTY0Nzc2ZjU3ZmY2MDkyMWRlYmNkYWZmNzA3YmM1ZDc0NyBhbGV4LXB5M2sKKzU2OTkxIGJiY2VmNmRlNDY3NDA1NmRiNmFlY2MyNTViYzZkNmQ1Y2JjMjBmNTYgYWxleC1weTNrCis1Njk5NSBkNjhhNzFjOTY1ZWMxNTA1YjcxZjVlMTM1Y2I5ZTgwYTI2NTJkZWQyIHB5M2stYnVmZmVyCis1Njk5OSBiZmUyMDJiZmZkZjQyZmI0NDRmZTA0M2ZkM2MwZGYxNjc3ZTk2YWQ3IGxlZ2FjeS10cnVuaworNTcwMDAgYmRjNDAyOTNkNzVlZmI4ZWIwZjFmZTM0OTcwYjhlNmMzNDQ1MjA3ZSBsZWdhY3ktdHJ1bmsKKzU3MDA0IDljY2Y5ZDY3YmIzNDhjOTVjMDFkMGU1Nzc5MmJjMTc5MWNkMjNlYTggcHkzay1idWZmZXIKKzU3MDA1IGQzMzcxZmQ0OTEwMjQ1ZWMyYThhNDc4Y2EwOWVmYmQxYzI4MjlmYzggbGVnYWN5LXRydW5rCis1NzAwNiAyMjlkNjM0NWE3M2ExMTI0NTMwNzc3ZGZlMjZmODk3Y2YzYWUwZDExIHB5M2stYnVmZmVyCis1NzAwNyA2NzkzN2ZlZTc1YWY2YTI3MDg4MWE2ZDNlMTM0YWU3YjE4OTFjYWU2IGxlZ2FjeS10cnVuaworNTcwMDkgYjYyMzc3N2YyMmIwZGE0MDNjMTdiOTllYTlhYmZmYzkwZWIyZTFlMyBweTNrCis1NzAxMCAzYzFhMjAzNjVhMDViYzFhMDRiMWJkZGNhY2IzNTdiMGI3NTBhOWQ3IHB5M2sKKzU3MDE3IDIxOWZlMzllZGU5OWY3ZTQyMzE4ZDRmYjY5ODNlODY1ZmZiZWJiZTYgbGVnYWN5LXRydW5rCis1NzAxOSAyNzRmM2FlNGRjYzc4MDM0MDc1ODVjMzY2MjhjYTVmMmNkZGEwYWI3IGFsZXgtcHkzaworNTcwMjAgYjdiZDRhMjY4OWMxNmNlNWQxMTNjNjJiNjJkYjBhMjlkOGJhNjc4NiBweTNrCis1NzAyMSA4NmZhZjIxMTNkMzZmNThkYTdiMjA1Y2JhMDYxOTkxOWVhN2RlMjRhIGRlY2ltYWwtYnJhbmNoCis1NzAyNCBhNTI4ZjdmOGY5N2EyOWMwNGYyZGQzY2U5ZDE2ZTRmODk0OGMyYTdhIHB5M2sKKzU3MDI1IDFiOTFmYWEwZGUyZDFlMzZlOGUxZGFiZGU4Mjk3YWE5M2E3NGNjM2YgcHkzaworNTcwMjYgOWIwMjEyODUyMWUyNzA0YWVlZDBiM2I2NzRiMWNmZmVjM2UyZGFhZiBweTNrCis1NzAyNyAzMGMwZDU5ZGIwYzY0ODUyN2ZjZGZjODk4ZDczN2EzNjZjYzZkZjE2IGxlZ2FjeS10cnVuaworNTcwMjggNTM5MWI1ZjhjZDdhMGUzNmFmNWE4NmFmYjg5NDVmZmJlMzE5NDhkYyBweTNrCis1NzAzMiAxM2IyM2FkZGVmNDFkODIwNjE5NjM3MTc1ODUyYTMyMzZjNGFjMTE3IGRlY2ltYWwtYnJhbmNoCis1NzAzOCAzYmVlZjE2ZDgxNjcxM2MxZDc5MzNmMjlhY2RlOWI0Y2M2YjQ4MzE5IGRlY2ltYWwtYnJhbmNoCis1NzAzOSA3YzY2ZjExMTllNTU0ZTAyMDkzNzY0ZDdmNGI2MzFjMjY5OWU3YWU0IGRlY2ltYWwtYnJhbmNoCis1NzA0MCA0ZWJlYTZhZmRjODcxMTAyOGM2MWNjOTExOTE5MDM5NzdmMzFlYmRjIGFsZXgtcHkzaworNTcwNDEgZWQ5ODlkZDk5NWQyNDQyMTJiYzY0NjVkODI2ZGI4OWU0OTA5Mjg0ZiBhbGV4LXB5M2sKKzU3MDQyIGFjNWNlN2M0M2VlNzU5ZGU0OTU2NzA4MTZmMWJiYTdlYTBjNDUyN2UgcHkzaworNTcwNDMgZjZhZjBiMjU5OGNhMTJjMWRjNTM0ZjYzOGFmZWU2MGQ0MzBhNmVhOSBweTNrCis1NzA0NSA5ODAzMDhmYmRhMjlmOWM4OTA2NDZiMTM5YjIzNDRhOGFhMDkyNjk1IHB5M2sKKzU3MDQ5IDIwNDc3Y2JmZDk5Njc4MDg1NGE5NmQwNzBlYzNiNTYyMzg2YmNhMGIgcHkzaworNTcwNTQgZjY4YjZiZjQ2MzY2MWUyYmRlMjJkYWMwYWUwNTVlOTYxNmNiM2NhNyBweTNrCis1NzA1NiBmODI4YTk1YTlkYTZiYTkwOGM5YmEwYzI2NjNkZDIyYTNiYThkNGM5IGRlY2ltYWwtYnJhbmNoCis1NzA2MCA0NjIwNjYxZTA2YWZhZjQ1MTkzODU4NjAzYzRjMWFlZjgwNmNiNjFhIGxlZ2FjeS10cnVuaworNTcwNjEgMTdiZThmYmVjMTU4YzQ1YjM3MjBlNTExMTRlNzNmMjUwZTllZGQzMCBweTNrCis1NzA2MyAyNDQ5NzAxOWM0MDczNTY0ZDY0OWFlMWIyYmRmY2ZkNTczYTFiMzE0IGxlZ2FjeS10cnVuaworNTcwNjQgNzE3ZmZiMTZiNWQxMjU0ZjI3OTNlMzVjNjRhY2RmMDk5OTQyNDAzNCBweTNrCis1NzA2NSBjNjJmNjY2OWFlMjJiODc3OTViYTM2NDk0NzUxNjMxNDAxYWE1YWZjIGxlZ2FjeS10cnVuaworNTcwNjYgOWUxNTI5YmYwNDQyMjhiN2Y3YjhhMTZjNTM3ZGI5MTc4NTY0ODBlZCBweTNrCis1NzA2NyA3MjYxYTkxYmUwMDM2ODMwODM1ZjdlNGFjYzJhOTc2YThlOTIzN2VmIGRlY2ltYWwtYnJhbmNoCis1NzA2OCBiMWFiZjg0NmNlODE1MmMzODAzMDMxMjY5YTZkYTVhNWNhN2Y0ZTI1IGxlZ2FjeS10cnVuaworNTcwNjkgYTNlNzY0MzE3MDViMjYzYzg2NjRiMTUxYmVjMDUzNzAxODQyMjdkYyBsZWdhY3ktdHJ1bmsKKzU3MDcwIGVhYjc1YWUzMjEyYmRiMmQ0Y2JmODhlZmJlYmY5OGU0M2M5NTQ4NTkgbGVnYWN5LXRydW5rCis1NzA3MSAzY2MyY2M3OTU3NjVmYTk4NGNhZGQ4M2Y3NDNkN2VhYjRkMGI2ZjljIGxlZ2FjeS10cnVuaworNTcwNzMgZDMzNjJjNDk1Mjk2MGI0YzIzZjBlZWM2NTJiMzJhYmY4OWViZTcxMCBsZWdhY3ktdHJ1bmsKKzU3MDc0IDc5MjZhOGNhOTI5MDQyZWE3OTE3OGE3Nzg2Mjc4YTZjZTgxMTlkMzUgbGVnYWN5LXRydW5rCis1NzA3NiAxMjEyMTNiYmYzNThmODZhOTFkZGQxN2E5YzliN2JlZWExZWE3MWRkIGxlZ2FjeS10cnVuaworNTcwODIgNGE0ODcxOTFmYzU0YzBhMTcwOWVlMGRjNzIyODk0ZDdiNDc2ZWY4NyBweTNrLWJ1ZmZlcgorNTcwODMgNjZhNThjMWMyODNiM2U1OWU3NjVlOThhZTljN2E5ODA3MzUyNDI1MSBsZWdhY3ktdHJ1bmsKKzU3MDg0IGJiYjRmNDY2M2NkMzIxMmM4ZDEwMGMxYWRhYmFiNDgxYjY5YjMxZjIgcHkzaworNTcwODUgN2E1NjJhMDA5NzNlZDRkMzUyOGQ4Mjc0ZTFhZTliNTdhNjE2NGE2OSBsZWdhY3ktdHJ1bmsKKzU3MDg2IGNlZDI3YjhmMDg5YmE1YjA3NjNkOTM2YjA1MTM5M2E4YWUxZjU3NmEgcHkzaworNTcwODcgY2I4YzFkZDdlZTMyYjAyN2E2ZWMzN2M5ODg1MjFlZDgxYjc4Y2E1YSBweTNrCis1NzA5MiA2MDNkYzUzYzQ3MTYyMGU5NTlhODk2YmFkN2NjNzMzZjBlMDY4YTg2IGxlZ2FjeS10cnVuaworNTcwOTMgMTM1YjNjZDVlNzIzMmVlZmYyMTkxZmUwZTQ1ZWE1MDc3OTg3M2E5ZSByZWxlYXNlMjQtbWFpbnQKKzU3MDk0IGQyNjQxMDdjN2RhNmY2YTFiZDYzNDVjOTRmMDU1ZmQxNWJlNGI0ODQgcmVsZWFzZTI0LW1haW50Cis1NzA5NSBhMTc2OGJiZDc2ODE5ZWRiNDk4N2UxOThkNjY5NTBjNGFjMTY3OTUwIHJlbGVhc2UyNS1tYWludAorNTcwOTYgZDk3ZmQ0NDc3N2IyYzEyYzg4ZmU2MGM1OTgxMzJlZGVhZGU5NmM1OCBsZWdhY3ktdHJ1bmsKKzU3MDk3IDRkMmFhNGJmYjJkNjAxNGJlNjFhMjQzZTY4NmUyNmNkNDVlODZkZTMgcHkzaworNTcwOTggYWYxODBkNTQ2ZWMyMjAyOGUzZTE0ZjMxYTYyMjNmMjFiMjAyODRlYSBweTNrCis1NzA5OSA4ZGJjOTgxZjA0MGI4YzRkNmY1NzU4MDg4YzZjNTZiODM3MWQzZDgyIHB5M2sKKzU3MTAwIDEyNGJkMjgyNDkzZDU1NmQzM2FhYTVjOTFmOGQ1NDA2MDk1NzE0MzAgYWxleC1weTNrCis1NzEwMSBkM2E4OWQ5ZDJmNWUwNmFmMTdjNWQ5MDk0YTk5NzlkZGY3YzliNjJjIGFsZXgtcHkzaworNTcxMDIgNDUxODNkMGIyMGE3OTdkODFmYTNkNGEyZjJjOWI5MTQ1NTg0MWJjYiBweTNrCis1NzEwNCA4OWEzY2JhMWNkNTI0MjMwN2Y0NjNkMGZkZTcyNGIyMWVkNjM5YWYzIGFsZXgtcHkzaworNTcxMDUgZjFhMmQ1MWYxY2FiMjg0ZjE2NzhmZmM3NTJjMGY0Zjc1MWUxM2EzNyBweTNrCis1NzEwNiAxODEwNGRiYTg1ZTMzNzNlODE0MGJjZDcyMDI0ZmI5NWFkYjUxN2ViIGFsZXgtcHkzaworNTcxMDkgZWNiN2IyZGQzYWY1ODAzZThjMGMzMzgxMDBlODEzMmE5OTQwMjk0ZiBhbGV4LXB5M2sKKzU3MTEwIDM0MTI0NjEzYmM0ZGRhYmZhNzExMjA5YWRiYjNmMmYzNTA2YjYzYjggYWxleC1weTNrCis1NzExMSA0NmY0ODBlMTE2NmM4NGE3YmZlZTNiMTNmOTNjZGEyNjlkOWZiMzdhIHB5M2sKKzU3MTEyIDBkZWJmOTQ1NWNkYzE3NzU4NDhkNzg5MDQ3MjlhMmVkMzM5MjFkNDkgcHkzaworNTcxMTMgYTZjNDg5MjVkZTUzYjA4NjBkYWY4NzhiNTNiNDAxMjE3YWUwNjQ4YSBweTNrCis1NzExNCAyMGFlYzlmMzQ1OThkMzUzOTExZDVkNjVjN2Y3NmI0N2E5MTk1NWUxIHB5M2sKKzU3MTE1IGEyODU5YWU4OWRhOTFhMWJlYjhhYzc3YTYwNmIzZWE1MGNlMjNjN2YgcHkzaworNTcxMTYgNDhhMzFiMGJmNTAxOGIzNjBmMWM4ZjkxMjU3NWRjOGNhODkwMDUyNyBweTNrCis1NzEyMCBiN2E1YmM2OWQyZWU1YmI5NDM3MWY5ZmY2ZjQ4NWU4ZDM4NmNhZmRmIHB5M2sKKzU3MTIzIDdiMzkxYTRlZjg5Y2UyZDEzYzI5ZDEyMTI5NmU1MzE5OWE4NWYyOGYgbGVnYWN5LXRydW5rCis1NzEyNCAxMmRkNjM3N2ZmODViZWQ3OWFmMWFhMzc0NzU0NzFmMzZmZDNhZDcwIGxlZ2FjeS10cnVuaworNTcxMjUgMjgxYjUxOGU0YmNjMjhjYTQzZTdlZDY0ZjA4Yjg1NTFlNDI5NmM5ZSBweTNrCis1NzEyNiBmZjVhZGIzMzc0YWRjZGVjYzU1NzUxOTE2NjhjMjg4ODE2YzdmY2RjIHB5M2sKKzU3MTI3IDIwNTZkODM1M2E2ODliNTE0ZmFjMDIxYTQ1OTg2NDVlODM1ZmE1MTAgbGVnYWN5LXRydW5rCis1NzEyOCAyNjA2YWVhYTg2ZDQwNjVkNGI1ZWNkODY3YzNkZDBmMmJhOGQyMDI2IHB5M2sKKzU3MTI5IGZjZjZkYzUxYWY1NDMxZjQyNDA1ZWIxYzAwMzM3MmQ1ZTk0MDlhZjMgcHkzaworNTcxMzEgNGM1ZWNjMmNjYWJkZDUyYzVlZjM5ZjQ3ZjM0MDgyYmY5MGU4M2ViYiBsZWdhY3ktdHJ1bmsKKzU3MTMyIDlmYzIxYzhiYWJiOTZjNzYzZGQ5MTRjZTBiZDliMmJjZGRhZTdjMzggcHkzaworNTcxMzMgNmY0OTIyODAzNDExNjZhMmE0N2FjYjMwMzI0MGZhN2MwMzIzM2VhZCBsZWdhY3ktdHJ1bmsKKzU3MTM2IDg2MTBhMWNhNjUwYjM0MmFlZjgwMWE0MzE5OGU2MGQ1YzBjYmFiMDYgbGVnYWN5LXRydW5rCis1NzE0MiBhNWU5ODRlZGE0NWEyMGNlNzAwMzg4YTUzMjc1MzJmNjcyZjg2ODM2IHB5M2sKKzU3MTQzIGUzOTQ0OTA5NWNjNWFiNmFmNjE2YWUwOTFkYWFkMjc0OGViYmRiZDMgcHkzaworNTcxNDQgY2M3YjViYzI5N2M0ZWQ1MmE3NTIwY2U3OTQ0YmM0OWQyNDQwYjc2ZSBweTNrCis1NzE0NSBhOGNhMTRjZWMxMWNkNjhjNjAxMGQyNGJiNmYwNGZiYzMxMjQ1ZjRlIHB5M2sKKzU3MTQ2IGM5MTY3MzEzMjFjMGIwMWU4Mzk5YmQ5NjMyYjM1YzY2MGYwZjQyZjcgbGVnYWN5LXRydW5rCis1NzE0NyBmMmYwZTk1YTc5N2JjNzdmZTJiMDM5NmNmNmE3NDI5OTY2NjVjNzVmIGxlZ2FjeS10cnVuaworNTcxNDggNTZkOGM4NzFkYzg2YjM5ZGJkZWVlYzk1MmY5Njg1ZTA2MTNlMzQyZSBsZWdhY3ktdHJ1bmsKKzU3MTUwIDljNGY1YjFkNmI5ZGI1ZmFkZDI4ZjFlNzE2ZTk0ZTU2YTA1M2IwZjMgbGVnYWN5LXRydW5rCis1NzE1MSA5ODY3NzY0NTY3OTEzNjVlMDdiMzI1ZmNiMjhlYWM1YjgwNmFkYTRlIHB5M2sKKzU3MTUyIDc0NDQ2NTA5ZjBmMjc2ZjAyYTY1YzAwMTg2ZGVmMGE4NDNlMmQxZTYgcHkzaworNTcxNTMgOTI1MTViNjQ5YjkyMjdlMTQ0NzYyNzY1ZDY3MDU5NDk5ZmYxOGU0NSBweTNrCis1NzE1NCAxYjRjOTU5NzRhN2RhNzJkZjg3OWM3ZGEzMjU4NjUxZGVkOWQ0ZmM5IHB5M2stYnVmZmVyCis1NzE1NSAxNzIxZmY1ZTI4NjRkNWMwN2IyMTEzYTFiYzU4Nzg4MmJlNWM1ZDdkIGxlZ2FjeS10cnVuaworNTcxNTYgNjg3NmFlOTE3ZmIxYmFjNzFiYzI5NjAxYjZlYjgwYjQ2ODUwMmU5OCBsZWdhY3ktdHJ1bmsKKzU3MTU3IGFkMDYzMjdlMWYzOWE3M2NjZGM5MzliZTAwODlhZmFiYWRlNzJhMDMgcHkzay1idWZmZXIKKzU3MTU4IGJjMzFkZmNmN2RmYTBkNDE0YzRkNWE0ZmRkNzUwZmJiZjIyMDQzZGUgbGVnYWN5LXRydW5rCis1NzE1OSAzN2Q3MDg1NGQyNTUyY2U3ZmE5NTUxMTI4YjBhY2UzNmE5YTU4ZTFjIHB5M2stYnVmZmVyCis1NzE2MCAzOGRmZWRmMWQyYWE4YTU2YmYyN2U4OWFlMzYxZGQ3YjA4NGQyNjU2IGxlZ2FjeS10cnVuaworNTcxNjEgYjgwNTQxMjUxZTBlZDFlZmUzOTJiYjhiZjJjZGQ5NjIzM2VhMjNiMyBhbGV4LXB5M2sKKzU3MTYyIGQ4ODU5MmRkM2E2MTA5MmFjNTFlNTg0M2QwYzJjMTQxYzA4MDRlNjQgYWxleC1weTNrCis1NzE2MyBjNTlmOTk0MjY4MmJiMWRjZWNlNzI5YzEzNmUzNGM5Y2YzYTJlNDJiIGFsZXgtcHkzaworNTcxNjUgZGZmYmZlNjA3Nzc0ZjA3M2ZmYzg5YzdlODZjY2M3NjMzNmExNTBlOCBweTNrCis1NzE2OSBlMGNjODMzZmRkM2ViZGU5NzI0MGJlNDIwMjZmMDQ2MTA4Zjg4Y2M2IHB5M2sKKzU3MTcwIGE1NGQ4NjZkYzdiNGVmZDJlYjdhNzc5MDhkNGNjOGY2YWUzMTA4MTMgcHkzaworNTcxNzEgYWYxMmE0NmRmNzM3YWQxNmE2YmM5MzRhY2UxOTFiNmUzYWFjYjlkNSBweTNrCis1NzE3NSBhOTMxYzYwMTViOTE3YTdmYzY3YjAzZTI0MzJiMDg3NDJhNTUwYmY5IGxlZ2FjeS10cnVuaworNTcxNzggNjk3NTBiMDk4ZWEyNDdlZDkzNzY0NmI3M2E3ZTJiZmU3MWVkNzE5YyBweTNrLWJ1ZmZlcgorNTcxNzkgMDY5NTBiZDA0ZTY5NjkyYzI4ZDRmMzE5MzYyMzM2MTdmNGQ0MzQ5MiBweTNrLWJ1ZmZlcgorNTcxODAgYWQ0Nzg4ZGY1MDRlMDk2NDFlMzk1NjMxYjgyYTVlYTg5OGVkNTJhMCBweTNrLWJ1ZmZlcgorNTcxODEgODVjMjJiNGQ0NDU1OWIzYzVmNDI2OTg3NGVjYTZkNzNjNzViOGM1NiBweTNrCis1NzE4MiBiM2NhN2Y1YjUzN2M1ZDcyYmZhMGY5ZmNmNjMxY2Q5MzEzNWQ2OTc0IGxlZ2FjeS10cnVuaworNTcxODYgODFiNDVjMGRhMmM4YjhhNjViMzEzZjIxMjcxZTNmMjU0NjBkMjcyOSBweTNrCis1NzE4NyA3NmUwNDk3M2IxNWRmZDBjZjgyMDZhZmRmYThjMTAwM2IzMTJhYTQ4IHB5M2sKKzU3MTg5IGVkOTdhOWQxYzM0NzM0NDEyYTI0NGQyNzRjOWMwNWE3NTdkYTc4ZDUgYWxleC1weTNrCis1NzE5MCAwYmM5Y2YxY2Y5NTkxODk4Mjk1ZGJkNmEwZDUyZDdkM2M1ZmNkNjFmIGFsZXgtcHkzaworNTcxOTEgOGRjZTZlMjg3MGU4MDkzZTU2M2ZiZjUxMGM4N2JhNWI4YzEwODlhNSBhbGV4LXB5M2sKKzU3MTkyIGY3OGJmNTg0Mjc5ZTZkZDczNzcyYzU0NDdkZGZlYzYzNTYzNjM5NjkgYWxleC1weTNrCis1NzE5MyAyYzUxYmU5OTA0ZGUxY2NlNDY4MmI3MDJlOWU1YjM4MGY0NTQxM2Y1IHB5M2sKKzU3MTk0IDdlNWVmZjg3ZDY2NGEwMDlmOTgzZTBhZmZmNTg5NTdkNDE5OTNjNjcgcHkzaworNTcxOTggZmNhMzU0MTYwNDU4NTE4ZGM5NzgyMmI2NTdiZWI4ZjBmMzFhZWIxNyBweTNrCis1NzE5OSA2YjUzMGUwMjliM2MzZDgzZmI3NWZhYWRkN2Y3MGMxMDRkZDIxNTZhIGxlZ2FjeS10cnVuaworNTcyMDAgOTViMzdjYWU0N2M0ZjdlYzE2NjMzOThiNGM1MjdkMjIzYTlhNjk1NCBhbGV4LXB5M2sKKzU3MjAxIDczOWQzMTA1MDk3ZmUwMjJlYjM0YTYxNDkzMTk2ZDBkMjk1NzNlNGEgYWxleC1weTNrCis1NzIwMiA2OTJmNTdhNWRjNzZhMTlhM2Y5NmJiMTg3ZTM5NGNkYjhiNmZlMWQ4IHB5M2sKKzU3MjAzIGQwM2ViNzc0NTc2YTNlNmU0OTE5MmYzOGEzOWY2OTBiYWFmOTdjOTcgYWxleC1weTNrCis1NzIxMSA3MDU0NjE1ZjM3ZmU2MDNhNjZjNGY2ZjAwODJkMzQ3ZGZmZWQ2YjRlIGxlZ2FjeS10cnVuaworNTcyMTIgY2Q0NTkxYjc1NGUwMTFkMzZhOGEyNTliN2FhZWVjZDhmM2ZjYzkzZSBweTNrCis1NzIxNCA1ODVkOGJlY2U4MjY3ZDA1OTk4NmZjZjdiMGFiYjI1ZDIzZWZlZDNmIHB5M2sKKzU3MjE1IDlhMmYzNzk0MWIyYjA1Y2I1NDEwMWE1ZmMwNzkyZDcxYTVkODI1NWMgYWxleC1weTNrCis1NzIxNiAwZjUwZTA5MWEzNmZlYzZiN2Y1NjRkZTIwMzE0YzQwOWQ2ZDIwYjUzIGxlZ2FjeS10cnVuaworNTcyMTcgMTUwNDdiMmFjZDNkNTU0MDkyOTgzYjliZGUyZmJlMjE4N2Q3NzM5NCBhbGV4LXB5M2sKKzU3MjE4IDA0OTkzZDk2ZTczODE2MzBjYjkwZmVjZGRjNGJmMDgxODQyYzYzY2EgYWxleC1weTNrCis1NzIxOSBjMjNkY2Q5NGRjY2UwMWI2MDRlMmFkOWMzZWYzMjYxMDFhOTI4YjVmIGFsZXgtcHkzaworNTcyMjAgMzY0NWYwYjk0OTA4YmJhZGJhNzM2NTNiNzYzOTBjMTI1OWZlZjNhZSBhbGV4LXB5M2sKKzU3MjIxIGFmNmE3MTkwY2FiY2IzYWNmOWMzMWI3MmZmN2U4ZTAxYWI2YjYzMDIgcHkzaworNTcyMjIgZTcxYzMyMjM4MTBmMjQ1YmUwZGQ1M2VlNmRkN2EzMjJjOWRkYTgxZCBweTNrCis1NzIyMyAyZjQ2NzkzMDExMzJlODVlNDhiNmVlNWQ4NTcyOTRkNDhmZmU3ZGU0IHB5M2sKKzU3MjI0IDVhYmE5NjQ2NGI4Nzk3ZWExMjAzZWY1ODg3YWU1YzA0M2YzNTc4M2QgcHkzaworNTcyMjUgNWMwODQ3MmNmYzM0NWM4ZjZiNTBmODNkMjJhMjg5ZjBjNjkyZjI1NCBhbGV4LXB5M2sKKzU3MjI2IDk1NDJlMmU2ZWYwMmIyZjhhN2M3M2NmN2Q3ODU3MWM0YjNmYTBkNDQgYWxleC1weTNrCis1NzIyNyA0M2IzNTRhOGY3NzNjZjUyN2IyNDcyYzQxMzk0N2U5N2U5YTQ4ZmJkIGxlZ2FjeS10cnVuaworNTcyMjggZDBmM2QyOWI3MDhkMzA4YmEwZTY0MzJhYzBlNjBhYmU4M2IzODRmMSBhbGV4LXB5M2sKKzU3MjI5IGRkZmY1MjFhYzdmMWE5MTE2MDU1ODNiNTc2NmMwZjc0N2I4MmFkZTIgbGVnYWN5LXRydW5rCis1NzIzMCA4ZDdmYThhNWE3ZTM4ZmU1YjYyYzIwY2Q1MzdlNWY5OTEwMzBkNjgzIGxlZ2FjeS10cnVuaworNTcyMzIgMmI0ZmVlMWQ0ODYxYWMzY2I4MWY4ZjMwNzg4MTRmYWRkNjRiODk3ZCBhbGV4LXB5M2sKKzU3MjM3IDQ0NzRmZjEwYmIwYTIyYjk1YWJlZWM4ZWQ1NGNiZWVmNGU1MGQ0OGIgcHkzaworNTcyNDQgYWI3YTZlNzRiYmYyMzgxNDY5OWVjZjQzMzQ4Y2Q0YTAzNmE1Nzg5NiByZWxlYXNlMjUtbWFpbnQKKzU3MjQ1IDRmMTEyNTU5NThiZTlmMjQ3NjljNWQ2NWIzODFiM2JjYmEyNzYyZTEgYWxleC1weTNrCis1NzI1MSBjMDQwZGJiNjlkZjcxYzkxMGIyNzE0MjM3MmE3NjQxYjU4NjdlYTUwIGFsZXgtcHkzaworNTcyNTMgZWU5ZWJiZjVmM2RjOGIwMmQyNWI5YjQ3ZjQ3NGYwOWU2ZGI2YmM4YiBsZWdhY3ktdHJ1bmsKKzU3MjU0IDYyZWVlNzlkZTkyM2FjN2Q0YzExNmU0ZTljMzUzNzZjMGYxZTYxM2QgbGVnYWN5LXRydW5rCis1NzI1NSAxZWZlOWIxMGM0YTZmMzJhYmE2YzU0ZWRjZTYwOGMyYjk2NmRkNTU4IGxlZ2FjeS10cnVuaworNTcyNTYgZmFjZGQ3NGEwYmRkMWI3NGQzMzIwYzgyMjBmYjk1ZWY2OGE3YzI0MSBsZWdhY3ktdHJ1bmsKKzU3MjU4IDViZjY4ZmM3MzkyM2E5Njk4N2I3MjBmYjQyNTFkNTAzZjQ2ZWU3MTggcHkzaworNTcyNTkgZjMxODFlOWZkZTRkN2EwZTViNDY2M2UzMzJiNTgzZTVlZTUwZDM5MSBsZWdhY3ktdHJ1bmsKKzU3MjYwIGRlNmYzMGM2MjczMDU0MzcwNzJkMmE5MjVkZTRkYWZjMDNiNjk2NDEgYWxleC1weTNrCis1NzI2MSBkOWUzN2QyNmY3OGU5NTkyMzVjODNlMjY4OGJlZjE3ZTNhYzNhMTMzIGFsZXgtcHkzaworNTcyNjIgNmQyNTI4MzhkMjMwNjM5N2QxYjA3YWRjMGU4OTEyMzU1YTYwYzNhOSBhbGV4LXB5M2sKKzU3MjYzIGI5Mzc5MmNlZDllODBmMTY2YmFkMWQ4ZWYwMmI2N2UwMmQyNGFkY2UgYWxleC1weTNrCis1NzI2NCBhZWNmZjllMGVlYWU0ZDlmODQ3MDM2NzE1OWY5NWFjMGFiNGIyMjQzIGFsZXgtcHkzaworNTcyNjUgNjA1NGQ3ZDIzNDlmMDQ2MjQ2YTFmNTQxNDEzOTRmZTIxNGU2YzE5OSBhbGV4LXB5M2sKKzU3MjY2IDIwODExMTYxMjVjZWE5ZjU2ODJkYzBmZWM0YjZmNTU1ZjIyYjlhN2YgcHkzaworNTcyNjkgZTc2OTZmY2UzMzc2MTBiYTNkZTFhOTQ5YTNmYzMyN2UyNjRlNmUwOSBweTNrCis1NzI3MyBhMDNmMzc4YzNiZjdiZjJjODFjZTVkNmE4OTMwYTU1NmU0MThiNzQ3IGFsZXgtcHkzaworNTcyNzUgYzk0N2EwNDc2OGU0NWEyMzExZGMwZGFhMWQyNjE0NjUyNWVjOWQ2YSBweTNrCis1NzI3NiBlMzFiMzg3ZTZkNzc1YzEwNWFiMGRkZTkwMWIzYzllNDg2ODRlNjEwIHB5M2sKKzU3Mjc3IDAwODFkYmFjYjdhYTYxMjJjYzNlMzU2OGRlNjBkYmIxYjZkNTMzZjYgcHkzaworNTcyNzggZDgwMGE5Y2RhYjc2NDY0MTM4ODBkNjI2ZjFkNGY0MzA5NzBiYzA1ZSBweTNrCis1NzI3OSAzYjRlMzllODMxOTMyMTJjM2U1NjYzYTE3ZDM5MDg4NjljMTBhY2MwIGxlZ2FjeS10cnVuaworNTcyODAgODRjNWMwNTI0ZDNjZWY3ZGNkODI2MWZiOWNiZGFiMzI1MzhjNDRmMiBsZWdhY3ktdHJ1bmsKKzU3MjgxIDI2NzNjZGVkODg1NTQ1MTBjMDBmYmQxNTNlOTdkN2NmMmI2YTRlZDggcHkzaworNTcyODIgNzgyMzcwYzkzNTc1OGU2NDMzNGM0YjNlMjA5ZTFkMDgwNTM0YjQxMSBweTNrCis1NzI4MyA4YmFkODcyMmYwZTY0MjhkMmFiN2EwOWNlMWM0YTc3OTY0YzEyMTU0IHB5M2sKKzU3Mjg0IDA5MmYwMmNmMDE4ZjlkOTM3OTAwMzAyMjhjNDI4ZTZkMmRlYzdhODQgbGVnYWN5LXRydW5rCis1NzI4NSAxYmYxNzg1NWU4ZTg1ZjFmMzc2MmUxYjEyNWJhYzU1NmZhZGY4YzhjIHB5M2sKKzU3Mjg2IDhiNjQwMGY5NzE2ZmVlM2RiZjk0YjgyMmViMDE1NmMwNDBlMWE3ZWEgbGVnYWN5LXRydW5rCis1NzI4NyA1YTIwZWU4MDU4MTk1OGIwMTVjMjkzZmM5MzEzZDc1NzdjMzY2OTA0IHB5M2sKKzU3Mjg5IDBiMDYwNjk2NjBjMjJiZWMyZTdkNzQ4NTk1Yjg5ZTQ5NjA3YjNlMjUgcHkzaworNTcyOTAgOWU4MWIyMjY4OWQyZDE3ZGMzZDIxNWE0ODE0YmI2OGM2N2UyNmRiMCBweTNrCis1NzI5MiA2ODhjZDQzOThmNDQ2ODU2MDZhMzQyNjI4MmZiODFhYjRiM2ZlNjE2IHB5M2sKKzU3MjkzIDUwOThjNjg3OTA5MTZmNGRjMjdjY2IyMDk2MTMyNjRkZGI4YTcxZWIgcHkzaworNTcyOTQgNTg5MTc1MTRlNDIzZWNmMjFmMWFkNmRiN2M2MjJjN2IzNDE2MGU3NyBweTNrCis1NzI5NiBhYWQxN2IxYWIwYzkyZGIzYmE4MWZiZTcwNDVmZGViMzUzYmZiMThhIHB5M2sKKzU3Mjk4IDJlYzE2YjZiNGQwNDQyMzZiNTg5OGE0N2Y4Mzc5MDQ1MGRmYTJlYjMgcHkzaworNTcyOTkgZTRhZGUxNmE2OTRmZjU0NmUwYTUzZWE1ODg3MmU2YWIzZjc0YmUxYiBweTNrCis1NzMwMCAyNmIyOWY3YjhmZmQ4ZWY5ZmFhYzNhODA4Zjg1MTNmYmIyN2U3MGE5IHB5M2sKKzU3MzAxIDE5OTUwNGZiOTFjNTgwZTZjNmFmYWRmM2RkYzM5ZmZmNWRhNGU2YWIgbGVnYWN5LXRydW5rCis1NzMwMiA3ZmUyODQ4ZmQ0MWQ3NDZjYjg5NDg0ZjAwYjE2Yjk2OWQwNzFlOTY4IHB5M2sKKzU3MzAzIGFlODNlZmI3MzUwNmQyNTdlYzMxM2FhNzAwZmUwNDQ4MzU3NTQ0NDIgcHkzaworNTczMDQgZWFlMTBkOWM5YzRlZWRiNTE5ODEyMTg2Yjc0M2RkYjllZjUxZjJkZCBweTNrCis1NzMwNSA1MDZiOTE3ZDIzNjNhODcwZmM2MDE2NTFlYzc4OWEwOWMwYjU2ODE1IHB5M2sKKzU3MzA4IDMyODQzMDdhNzM1MTlhOWQ1YmY0NTcyM2IyMjgzNWVkMmY3NDYyZTggcHkzaworNTczMTAgZjM0NzZlOWJiZTZhYjM2MTA2MDNmMzkwOTAyNjI4NTRkYzY0ODBkMCBweTNrCis1NzMxMSA3ZjRkOTNlMDI5NWNhYzViNWZkMGViY2U3OWNiMDU1NmYzMmI2MzM2IHJlbGVhc2UyNS1tYWludAorNTczMTIgZmE5YTQwZWYwNzgwZGQ3N2ZjY2FjN2Q3YjhmODE4YjVmNWRiOTIwNCBweTNrCis1NzMxMyAwNmRlNjJmMzNjMzc3ZDYzM2ExYmZjNDA2Y2M4MjVkYWFkYmE1MDY1IHB5M2sKKzU3MzE0IGE5YTRjZjkxY2I3ZTdiNWNmZWFiMTVkYWJiMzBhZmVkMzEzZTJmZTkgcHkzaworNTczMTUgODBiYzY4ODUwYTA4NjBkYjFjN2VmZGMxN2ExMTVlMGRmNjc5ZDgzOCBweTNrCis1NzMyMCAyNDgwYjg2NGJlMDM5N2E2MDVhOTY4MTI5NTI2M2E3NGM0NmEzMzA0IGxlZ2FjeS10cnVuaworNTczMjIgZGUxYmFjZTgxZTZlZDJhNGU1M2I4OGEzYjZjZTg5NjE4YmY0ODk5ZCBkZWNpbWFsLWJyYW5jaAorNTczMjQgOGU4N2Q5ZDZlODEyNzVjMTI0ZjVhN2IxNjA4ZDJiNTEyYWUwYjgyMSBsZWdhY3ktdHJ1bmsKKzU3MzI1IDdhNzVjZDI4YjEyNWQzYjZlYjk5M2FjNjJmMDk2OTE4NmYyODgwNDYgcHkzaworNTczMjYgYjM0ODU1MGEyYmZjNjg4ZDZhYmU3YTQ3ZDM2YTIwOWE4ZWM5NmFlOCBsZWdhY3ktdHJ1bmsKKzU3MzI3IGJjYmRjOTVkZmJhOWFhNTQzZjA0MTNlZTM5NzM1YTk2ZjZiMGEyOTYgcmVsZWFzZTI1LW1haW50Cis1NzMyOCA5MDg3MzM3ZjNhM2Y4OTkxZGZlMTJmNzE0ZDhlM2FhYmZjZTAzNzhhIGxlZ2FjeS10cnVuaworNTczMjkgYTkxMWNkOWQxOTg5M2JlOGY0ZGY4OTQ4ZDM5Y2JjMDdkYTcwYzkzNyBweTNrCis1NzMzMCBkZGVmYmRiZGJjYjUxY2UwYWIxODdhNTI1NWYzMzkxNGRjZGNlMTQ4IHJlbGVhc2UyNS1tYWludAorNTczMzEgYWRiODNmNGFjNGNiZTVlMjVjMGEyYWNlZmFjNWM2MjFjMTJkNTU3YiBsZWdhY3ktdHJ1bmsKKzU3MzMyIDcyOWZlOTliNDBhNTcyZGVjOWVmYWNhZjE2YzNjNDVhNmE5ZjNlZmMgZGVjaW1hbC1icmFuY2gKKzU3MzM0IDRlZGZjNTliNzJiMmI0ZjFkYzljM2M4ZThkMDRmY2U3MjRjZmQwMDMgZGVjaW1hbC1icmFuY2gKKzU3MzM1IGFmOGZjNDZkNGI1NjE3OGVmZjM2MjAzMzAwNDU0NjIyNjFjNzhhMmUgZGVjaW1hbC1icmFuY2gKKzU3MzM3IDcxYzY4ZGUzYjFjNTc0ZDhhYWFhNmM3YjAxY2Y0NjA1ODc3ZTY4MjIgcHkzaworNTczMzkgZjUzZjFhMWFjMDE2NDBmOGIzYzNiYjgwN2MxZDdlMWQ2ZjA0MGNiZCBkZWNpbWFsLWJyYW5jaAorNTczNDEgYTJjYzAxOGYzNzAwZGQ0MTlmZTNhYjRmNjNjNDdjMDllYjAzODM3YSBweTNrCis1NzM0MyA5MDgwY2M3NmRhOThmMGUxMDhmMWVlOWFjOGZmNGUxYTQ0ZjE0NTYzIGxlZ2FjeS10cnVuaworNTczNDUgZTFjZGQ2ZWU5MTBlN2RiMjNmNmI3YTM4Zjg3MDE2OWU2ZjUzN2JjMCBsZWdhY3ktdHJ1bmsKKzU3MzQ2IDAwZjhiMjQ4Mjc2NGNmNmNmY2I4ZTIyY2I0Mjc2Nzc4MTVhOGRiZmUgZGVjaW1hbC1icmFuY2gKKzU3MzQ3IDAzMThhYmNmYWYzNmE2ZmQ2ODRmYjgxMGFmMTc2MTRlY2ViZTQwY2MgbGVnYWN5LXRydW5rCis1NzM0OCA5NTIwNTc5Y2MzMGJmZGNhOWE3NzM5N2VjODM3MjFkZWU5NmEwMTNmIGxlZ2FjeS10cnVuaworNTczNDkgODE4ODZlMDVmZDQwMTZhYmM0ZWJjMGVhODFkYWU0MjA3NTc4Mzk0ZSBsZWdhY3ktdHJ1bmsKKzU3MzUwIGExNTY1NDA0NTk5ZTVlZDg2ZjY4MDlkZWU4OGVjMDY2NGI3MDk0NjkgZGVjaW1hbC1icmFuY2gKKzU3MzUxIDI2NTAwYmEwOWY3MGM2MjA1Nzg0YmM4YTFjMjBjNDFjMGRiZmE0YWMgbGVnYWN5LXRydW5rCis1NzM1MiBlMjA0MmVjMzMwYTQ1NTUyMjlhMGYxYTI0ZWViYzI4ZWYxMjVhOWYyIGxlZ2FjeS10cnVuaworNTczNTMgOWEzNDdiYTE3Y2FiMGU4ZjhhZGIyZTAwOWExZDJlODU4YTUxYmQzYiBsZWdhY3ktdHJ1bmsKKzU3MzU0IDNlZDc4MTRjY2EzNjZkMDlmN2UxZTZiNTRlYzQ2ZGNiODMxYWYwNzcgbGVnYWN5LXRydW5rCis1NzM1NSA3N2NmMjgwOGVlYTYzNzUxMWU2MTZmMDUwMjZhOTU2ODU2MGI0MWVhIGxlZ2FjeS10cnVuaworNTczNTYgY2U1MmNkNzFhOGQ5YTI3YzEwYzVhOTA5ZTEzMWQ4NzZiZTMwZTRhMCBweTNrCis1NzM1NyAyMDczZWEzMDA1YTc4NzllYjU5NzA0OWQ0N2U3ZGRmNmJiNjNjZTUyIGxlZ2FjeS10cnVuaworNTczNTggNzkyM2JmZjE5MjEyYjAzOWMzNWE3ODE2M2VkMTU2YjQ0NWYxN2Y4YSBweTNrCis1NzM1OSAwNzdmZTc4NjBjYzliMTg2ODU1ZjU0M2YxYTI2ZTQ0NWRkN2E3YzMwIHB5M2sKKzU3MzYxIDFjOThiNDQ1ZDg0NzA5OWMyNjUyYTc1N2Q0MzUxNGY3MGQ4MjUxZjAgcHkzaworNTczNjMgNDJiMzljYjUzNmQ5ZTRiNTlmNDk1OWY2OWZlZDAyOWVlYjgwZDdlZiBweTNrCis1NzM2NCAwYjYyNTM5YWNmYjhkZWQ2NzI1MWM3NTQ4YzY2YWM4YzZkYjM0YmI4IHB5M2sKKzU3MzY1IGU3NDRhMjBlZDhhNmFkYmYwNDYzMmI3YjI2MmNhZTUwOWUyNjUzNWYgcHkzaworNTczNjYgZjk0YzY4ZmNmNzlkYzUyNjJjZTVjNGEzYTAwOGVlNzZlNDE4ZDJjNiBweTNrCis1NzM2NyAyNzNhY2UzNTllNTVlNmNiYjU2NzA4YTRiYjM2ZDg1NDk5MjAwY2NmIHB5M2sKKzU3MzY4IGUzZTA2YjM4OTQwNmE5MGEzNGU1OWQ3NDc0ZmE1NmVhMWJkZDY3NzkgcHkzaworNTczNjkgNTY3YzkyM2NiMWM2MWQ5MmU1Yjc0OGI5NDI5ODU0Yzc2YjU1YTk2YSBweTNrCis1NzM3MiA4M2M4NDQ4YzZkZTQxMTVhZDkyMWVkMGRjODI4ZTU1NjAzOWVkNGE3IHB5M2sKKzU3MzczIDY2ZjczY2U5N2IzMmQ3MTRhMDk4OTc5ODk5YjZhZDZlY2U3NjZmNjEgcHkzaworNTczNzQgYjYyNmI4NGI1MDcwNDUxMDFlMmMyMWJmMjAwY2VjYzJhZjRkYmU5YiBweTNrCis1NzM3NSAxOWRhNDFmYzExN2EwM2FkNzg2OWVjZTk3YjFmN2UzNDgyYTIzMTAzIHB5M2sKKzU3Mzc3IGIxOTdjMWMwNGJhMTU4NjkyMTI0NDUyZDlmOGIwZTZkMThjNDAzMmQgcHkzaworNTczNzggMDVmZTAyN2UyZDgwOTgyODRkZDg5NzhiMzI5YTk5OTUxMTMxMzc0MCBsZWdhY3ktdHJ1bmsKKzU3Mzc5IDMxNDE1MTVmNmM0NWEyOGVjZDFjNjJlN2E3NmMzOTYxOWMxOTc2NWUgcmVsZWFzZTI1LW1haW50Cis1NzM4MCAyYjliMjE0MDI2NTA0MGQwMWI2NTQ0NTEwMWU5ZDQ4MTE0MDljOTY4IHB5M2sKKzU3MzgxIGQzYmFhYjIwOTYyNjQ5ZTJlZjQyMzlhZDQ3N2ViZjQ5ODliZDMzMGYgcmVsZWFzZTI1LW1haW50Cis1NzM4MiA3MzIzMzMxODc2ZGQ0Mzk4ZGMyZTFjZGExYzU1NTNkMDVhM2Y3ZGZhIGxlZ2FjeS10cnVuaworNTczODkgODkwMWE3Y2U2YzA3NDViMmVjYzgyNTNhZjZjNzI3NWQxZTllZGRkNSBsZWdhY3ktdHJ1bmsKKzU3MzkwIDNmYmExNGVjOWFhZWI0ODNjYTlhMTBiNGRjYjU2YWFjMjQ2MmJiOGUgcmVsZWFzZTI1LW1haW50Cis1NzM5MSAyYzQyMmE0OTcyZjFjOTU2MDZkZGZlNmZjZWYwMGQxM2ZiYzM2ODhjIGxlZ2FjeS10cnVuaworNTczOTIgZDc1MTdjMzA2NzkxNDVhYTBjY2Y4NmYxNmU2ZDgxMmQwOWE3NDQzYSBweTNrCis1NzM5MyBjM2I1M2UwNzRlZDExYjNiOGFkZDJlNmRhOGU3ZWJmYzAxYzNiODE1IHB5M2sKKzU3Mzk0IDk0Mjg2MGY4Y2Q5N2U5YzU4M2E4ZWI5MWZiYThmNDNkNTFlNmJiZDMgcmVsZWFzZTI1LW1haW50Cis1NzM5NSA1OGYzNWRmMGY2ZjQ4ODZkNDg5YTcxMDRjODg2NzRiZjU4MWU3NzU0IGxlZ2FjeS10cnVuaworNTczOTYgNGI3MDM2ZGM3NmQ1NTkyMTk3OGQ2ZDA2MmMzMTFmN2JmOGIxNzk0YiBweTNrCis1NzM5NyBlMjU3OGYzMDQyYjJkNTI3NTY0Y2I3NTVlODVkYzZhM2MwZDI4NmRjIGxlZ2FjeS10cnVuaworNTczOTggOGIxYjMyNzI1NGMwZDM1MTk5ZGZkMjFiMGIzOGZmYjE4N2Y5MWJlOSBsZWdhY3ktdHJ1bmsKKzU3Mzk5IDI1NmE0ZDNjNTgxZjcyZDY0ZWQzMzRlNGQ0ZTIzYTFlYjk1NmQ0MjIgbGVnYWN5LXRydW5rCis1NzQwMCBmNzk4YzM2NjI3MGMwZmJjZTM2ZDAzYjE0OGM3NDgzMWJiMzE4M2U5IGxlZ2FjeS10cnVuaworNTc0MDEgOGM1Njk1Njk3MWFkZTNlZDY1Njg5NzJlN2MxMjgzNzg0Zjc2NjgxYyBsZWdhY3ktdHJ1bmsKKzU3NDAyIDMwMjVlNjc2ZTY2OTE4MzgxMzkzZTM1NGUzMWE2YTY0MDMxM2JmNGIgbGVnYWN5LXRydW5rCis1NzQwMyAwNjZkMzlmYWQ0MDhlMWQxZDU3OWUyYmYzOGU1MzRhMDgyNDIzYzBiIGxlZ2FjeS10cnVuaworNTc0MDQgNDhkOTFmMTU1OGEwMDlkOTVlNWE2MzZmMzlmNjk2NWMwMWExMDU2YyBsZWdhY3ktdHJ1bmsKKzU3NDA1IGM2ZDYzMjFkYzdmOTQyYzE4ZmY2NDg4NmYxMTQ1NDM5YmRhNDcxYjcgcHkzaworNTc0MDYgNzIxYzNlYTEzZDg0YTNjMDU5YTEzOTNhOWUyYTNhNDQ0MzExMmVlZCBsZWdhY3ktdHJ1bmsKKzU3NDA3IDYxMjRiMmVmNjUxMjAxNjE5ZTQwZDY3YWIzOTU2NTUxNGM2MGY2YzAgcHkzaworNTc0MDggYTZlNWIzODY4ZjNkODI0MjQyMzBjNGE3MmNhM2Y1ZGYwN2YwN2NhZiBsZWdhY3ktdHJ1bmsKKzU3NDA5IGU0MmU3ZDAzMTczYjMxNDNiNzVlNWQwMzM4N2UyNTcwN2FiNDA4Y2QgbGVnYWN5LXRydW5rCis1NzQxMSA2MWZiNTk3OTE3ZDFjZjk3NmJlYWIwMGUwN2I5ZWFjZWE3MjkzY2EwIHB5M2sKKzU3NDEyIDg0NjE4YjIwNjRjMTZhYzM2M2U1ODkyNWE0MmI3YzEwMTEzYzgyMGQgcHkzaworNTc0MTQgNmNmNmI4MzFhYjM2Y2UwNmUwYzU0ZmZiMThiMTczNWMyYWQzNjc4OSBkZWNpbWFsLWJyYW5jaAorNTc0MTUgY2YyYjM3YjkwYzY2ZjU0OTQ3YzZiZjExMTRiZTdkMDA5OTgyMDIwMSBsZWdhY3ktdHJ1bmsKKzU3NDE2IGUxYTM2NTU5ZDhiNjg5NzhhZDY2YzI4MDNiNTQ2ZWJkOTdjY2M3MzAgcHkzaworNTc0MTcgOGU5NzcxMWZhZGMxNDcwMDcyMDU0MTYwYzNjMGJiNzk5YWM1ODFhZSBkZWNpbWFsLWJyYW5jaAorNTc0MTkgMzgzNjIwZTYyZWU2NGM0ZTRhMDdjYzJiYTUyMDA3NzliYzE3Yzc4MiBweTNrCis1NzQyMSBiMGE3MWJmZmEwYTFmNzEzNmYzZWM4NzBkMDk4MzY4MWJjZmE5Yzc2IHB5M2sKKzU3NDIyIGQwMjYxMGIwYTlmM2FjZGM1ZTYyOTcyMjc4OTQ4ZTlkMzgzMzJlNjUgcHkzaworNTc0MjQgOGU2MTcyN2RiNTI5YjViMTY4ZDczZWExMTYwODEyNGE0YjM4MDliMCBweTNrCis1NzQyNSA0MWRhNDljOTdhNTllYzZmODI3MTYxZGE2ZmNiN2U1NWVhZjU0YzZhIHB5M2sKKzU3NDI2IDAxZWU2MzExYmE0Njk0YzJjNTdjZDM4ZWUxMmI4ZjQzNDVhZTA3NTUgcHkzaworNTc0MjcgMDk5NDk1OGZmZDRmZDRkNzI4YzExZjVmYjUyYmZiYmM5Zjk5MmNkMyBweTNrCis1NzQyOCA2OWI4ZTI5NzY1NTY1YTc0MzFkZGI5Yjc4NjVjMmU5NGQ4YmYyYWY5IHB5M2sKKzU3NDMyIDNjZDYwZjc0NGY4ZTkzYjYwMGQ0Nzk4MzMzOGQwMDU1NDM2MDU0MjggcHkzaworNTc0MzMgM2NiNWRlZjE4NjVkYTY1ODBlZTJiYjg3NzdjZDJhNTg4ZTE2MDE0NCBweTNrCis1NzQzNCA3OGY3ZWQ3ZDgwNjQ5YzExNGFlMDc2MDdiMDc5ZDM0ZmVjNWEwZWQzIHB5M2sKKzU3NDM1IDU5OTUxNDI4OTIyNmUxYTQ5OTBhYThjNmU1ZWFjYjBhMDJiNmQzNWQgcHkzaworNTc0MzYgMDBlMTI4YjUyNzJmNTVlYWY2NzIzOGQyNGMwNzk4NDc3MTZhNTM2NyBweTNrCis1NzQzNyA3NzZiOGJkNjhiMzAxYTA2NmI1MDNiZmU5ZDI0ODQwNTYzMzA4Mjc1IHB5M2sKKzU3NDM4IDJjMmU5MDU4OTRhMzgwYzY1Njg4OWE2NjJkNTIyMWEwMmM0NmMzYzIgcHkzaworNTc0MzkgYTk5ZWM0YmVmZGE4YWRmZjUyNmVhYzA0MGM3ZGQ5ZmJkZTZhNjI5ZSBweTNrCis1NzQ0MCA3NGI5OTNhOGFkNmZlZjczMTk0MzY1OWExOWMxMGI4MTUxMDQ3OTk3IHB5M2sKKzU3NDQxIDNkNWQwOWI0NTFiNjZhMmY4NWU0YzcyZGM3MWExZmRiYmFkZmI4NjAgcHkzaworNTc0NDIgZjgxZDk0YzA1YTBlY2RhNDFkZTBkOThhYzRlNzlhMjZiOWY5ODM3YyBweTNrCis1NzQ0MyA4NzJjN2MzZjBhZjM1NDAwZWZjNTA2ZmI0MmYwMmNhMDNhYWQwODBmIHB5M2sKKzU3NDQ0IDUzNTUzMzc3MDllMTA5NTBiYzZlMjU2Zjg1YzQzYzg4MjE0YWI4N2UgcHkzaworNTc0NDYgZmI1OGZiM2JkZGMxOWI5ZGQ2OTI3MWU4NTk3MzY1NTgwZGIzYmJiYiBweTNrCis1NzQ1NSAxYjQyMGU2ZTAwZWIxNjRhNWZkMDA0N2FkMzAzMjA5NTBlMzIzMmZlIGxlZ2FjeS10cnVuaworNTc0NTYgMjJiYmFmYTY5MzNiZDlmY2QwMDI3OWU3ODUwZjMxMTY0ZmM5YTZjZCBsZWdhY3ktdHJ1bmsKKzU3NDU3IGJiMjg4ZTA0YjhlNTg4NDZjOWMzYjEzYWY3OGM1Njk5Yzc0NjliNTMgcHkzaworNTc0NTggMzAyYWVlZTMyZGE4M2E0OWZjNzQ4ZWQxMjA2YTY3ZDcyNDUyMTViZSBweTNrCis1NzQ1OSBiZDkzYWMzMGM3Nzk1MmJmOWQyMzc2NzE2MDhlYjhjYTc4Y2Y3YTgxIHB5M2sKKzU3NDYwIDE4NGY4MDBmZGJmNjc4NWZjZGQ0NjVmZDdmZjVhMGYyYWQ3ODUwYzMgcHkzaworNTc0NjEgNTQzZjJiYTk3ZmFiOWQ3ZDFlNjRmZTE2M2U2NjAyYjI1ZWY5MDk1YSBsZWdhY3ktdHJ1bmsKKzU3NDYyIDc4MzQwY2NlYTE0YmU0MmU3MGYzNzMyMGExMmZjMDdmOTliNTZjNWYgcHkzaworNTc0NjMgNmQxM2UxOGY3MDZhZTM5NjlkZmU5Njk1YzBhMDk4NWM2MWJhNWNiZSBweTNrCis1NzQ2NCAwOGI2Mjc4YWExZjQwOWZjYWIwY2JjY2NkZjNmMTgzOTU5MTI3ZmFjIGxlZ2FjeS10cnVuaworNTc0NjUgMjQxMDUzNzM5NzMzMzI0NjNhZDEzNGRhZWZiZGUzYzRiODQ2MjE3MSBsZWdhY3ktdHJ1bmsKKzU3NDY2IGJiMzM2YTY4YTQ3ZjI1MzQ0NmJkNzM3ODliNmQwZDEyOGIyODE5NjUgbGVnYWN5LXRydW5rCis1NzQ2NyA0Y2QxMWU4MjU2NDQ4MDllMWI2NjE4ZmVlMGI1NzRhMzA5NGUzMzU2IGxlZ2FjeS10cnVuaworNTc0NjggY2FmZTFmNjUzZGIzNmI2MzFkNDY2NzNmMzI3NzNmNjAwMGU4NGI5NyBweTNrCis1NzQ2OSA2YTE4MWFiZmM4YTQwNzBjZjNmMzE0MDk5NTI1NmYwMmQzZWI0YWQ4IHB5M2sKKzU3NDcwIDIwZTFjYzc0ZThjYTUxZjI1ODg2YzlmNDY1M2U2OTkyZmY1ZWEwNDQgcHkzaworNTc0NzEgNWE5YjdjMmYzNTg5ZDk1MTA1Mzg3NjVmMDVmOTAxNzU3MzA3MDNjZiBweTNrCis1NzQ3MiA3OGNmMmJkYTg4NTcxODgyZmM1ZWMwYTVjMWI4NzYxMmYyZTBlMTZjIHB5M2sKKzU3NDczIGVmZmVlYTdjZjg5ODQ4NTFiNTI4MjU4ODQ2MmI0YjZkNWQyYmM3YTYgbGVnYWN5LXRydW5rCis1NzQ3NCBkOGE2M2I2MzI3NDEyZjhkY2ZmNDA5YWJhZmYxZmJhMmY5MzU0YjBkIHB5M2sKKzU3NDc1IGMzMWMyMDdiOGM4NmQ1NTc3YzY3OTAzNWQ3NjE3MGE5ZGFhMTc1ZWIgcHkzaworNTc0NzcgMDU0OGRmNzgxMGEwY2I4MzNjMTJhZTVlODQyODQ2YjYyN2ZlNTcwNyBweTNrCis1NzQ4MCAzYTY4OWY4OGM4Mzg1ZTExZDMwZTg5NGExYWFkODU1NWNkODAyNzFiIGNweV9tZXJnZQorNTc0ODEgYTliM2NlMDY2NWMzYTM1ZDMyZjkxYzUzMDIzOGJkYjhjNGY4MGRjYyBjcHlfbWVyZ2UKKzU3NDgyIDY3M2NiYzg1ZDhjNDBiYzIwZmUwMTQ3YjE5MWU4MDA5ZWI0YjIwMmEgbGVnYWN5LXRydW5rCis1NzQ4MyBlYjE5ZjJmYWVlYTEyYjIyZDc1MzQ2M2M5ZWJlZGMzYjY1YzgzM2MwIGxlZ2FjeS10cnVuaworNTc0ODQgMzRlNmZhNzhiNjQzMjg4NTJhMTkyOTVhM2MwNTU4YmI0MzRiZTJkMSBsZWdhY3ktdHJ1bmsKKzU3NDg1IDZlNzM1OTEwNjcxODFhMzMyNTM5MTYzNzI4MjlmYzBhZDkxMWZiN2EgcHkzaworNTc0ODYgMzE1MmRmNzA1MTdhNmYxMjE0N2E2MWM0Nzk3Y2VkY2NlYmY4ZjFhYiBweTNrCis1NzQ4NyBiNTVlN2M1MzI1M2MwZDExNDkzYzkxZTY5NTdhMmQ2YjA3ZDdlOTgyIHB5M2sKKzU3NDg4IDdmZmFkZGQxZGUzMDUwYzRkZmM1NDc0MzRlZTQzM2RlOWVhNDcyZTcgcHkzaworNTc0ODkgZWQxZDM1MTE4ZWQ4ZjBmNDE4ZTY0MTgzY2I2OWIwOTU2ZmM2M2RkMyBweTNrCis1NzQ5MCBiYmM0NDMyNmI1M2Q2OTllMGNjOGI0NzhjYzJiN2FlYzFiYzc3YzMyIHB5M2sKKzU3NDkyIDAyN2M3ZDA0NGNmZDdjZDhkNDM0NjdmMjg4MjQ4N2JkMTJlNDI0MDggcHkzaworNTc0OTMgNjM4MGY4OGUzZGVlZGIzMmQzYWNhOTY3NDVkNWY3YmIzMWYzMWJiNiBweTNrCis1NzQ5NCBmZWQ0ZjcyYjA0Y2I5ZDk4MjY5Nzg1MTMyYWZkNTYzMGYzYTcxOTRiIHB5M2sKKzU3NDk1IDEzOTBjMTFlNjQwYjFhNmNjZGQ0ODZlNzcwYzBjODhiY2EzNzkzZjkgcHkzaworNTc0OTYgODI0YjlkNTJlMDA2YmNhYzliZTVlYWQyNzJjMGM3ZDljODNjNDdkZiBweTNrCis1NzQ5NyBkNWI1MmQ1NmJlYmFmYmRlZDQ2ZjZmZDA2M2U3MTlmYmQxYjFjMzczIHB5M2sKKzU3NDk4IGYzYjNmZmQxMzk1NDllYWExOTM2Y2E1YmY5OTQ5Y2YwOWY5ODVkMjIgcHkzaworNTc0OTkgZWY1NjI4MWYwM2I0NWQ0NThiMWVmZmQxOTU5MzBkN2U1ZGZkMjZkNSBweTNrCis1NzUwMCAxNTQ3ZGUxNmZlYzk1MWE2YmMyM2NmOWNmZjNlZDhlNDQ0OTI3MzgyIHB5M2sKKzU3NTAxIDAzNjU5OGRlNDY2MGQ2MjRmOWRjOTg3NTljY2I5YzQ0OTY4MDQ0MzMgcHkzaworNTc1MDIgYmYxYTUzY2M2ZTY1MWY3ZDUwZTYzYWExYjdiYTlmZGE0ZDQ0NTJjZCBweTNrCis1NzUwMyA3OGUwMGEwZjYwMTVlNWExYjA3NDMxODZhNjM0ZWVmMjBmZTBlMTE0IGxlZ2FjeS10cnVuaworNTc1MDQgZWQxNTk0YTE2YmRiN2NjMzA3ODg0NGEyM2E5NDdmOGU5MGEyZmViOSBweTNrCis1NzUwNSA4NGZhOTQ3ZmY2OTY2MDJhZDk4OTFmYzk4OTBkYmYxZmQyYTc1YTQ1IHB5M2sKKzU3NTA2IDFiMWY3Y2EzZmQ0OTMwNWRlMjk1MmQ3YWRmMmE3MGY0NzhmYjdkZjMgcHkzaworNTc1MDggYTA5NzI4Yjg5NTMwMjMyZDAyODcwMjk5YTM1YjYwOTFhYWE4NTEwMiBhbGV4LXB5M2sKKzU3NTA5IDNlYjVkZGFkZmJmNzhiZWI5MTA3MzE3NWQ5ODA5ODZjYTQ4M2FjYzMgcHkzaworNTc1MTAgZDZkNDkzYjYxN2UzZTUxYmNhYTczYmRkMGUzMzVmYjNkMzUxMDQ0MSBsZWdhY3ktdHJ1bmsKKzU3NTExIDQwM2ViZDE0NThhZmZiNWRmYWZjOGU2NzE0ZWY3ZGZmZWUxNDdlMDQgYWxleC1weTNrCis1NzUxMiA2ZGVkYjMzZDJkYTM4NDliYWFmOWQwOThlOTlmODlmOWU1MzAxZGVkIHB5M2sKKzU3NTEzIGJhYjc1ZTRjNjQ3ZjZmNDFmZDg0ZWU2OTdmY2IwZmVmZTUzODNiZDIgbGVnYWN5LXRydW5rCis1NzUxNSAzODk1YzEyOWU0ODYyMjM3MTE0ZGE4MTA2NjgyODExZjE0ZTAyZDgwIHB5M2sKKzU3NTE4IGMyYzc2YTA0NDZmYWIyNjg1MzZiYWY1MWMxMzU3Mjg5M2Q1NWViZTQgbGVnYWN5LXRydW5rCis1NzUxOSBhMTM0ODVhM2I0MDc4M2Y0Yzg2YjNkODgyNDgyYjE3MjcyZTE2MTM0IHB5M2sKKzU3NTIyIGZmM2MwYmU3MWRjMmIzN2MxNDIxOTdhMjA2ZTQ2NTVkMTVmODQ3MTMgbGVnYWN5LXRydW5rCis1NzUyMyBkOGFkMjljNjg3NjNlYWI0MmEzNjQyNjc1NDE5YzVhMTFhZmVjODE5IHB5M2sKKzU3NTI0IDg1ZWFlY2Y5ZDY3ODM0MWM2M2NjMmY0Y2U1NDJhODAzODFiYzI4MmMgbGVnYWN5LXRydW5rCis1NzUyNiA1ZmQ2NWUyNTA4NDM1NWViNWNhM2UyYzM2MDNmNGM4YTBkM2JmMGQ2IHB5M2sKKzU3NTI3IDU2YmJkMTc2NzA1NzVmMzBhMzMyYWE1NTM4NjQ3YjdjNzRmZGZhMTMgcHkzaworNTc1MjggYTQwZGZiNTFkZjkxNTRiMDk4NzQ0MDVjMmNmNWRjMGYyYzM2NGY0YSBweTNrCis1NzUyOSA0MjZhZGJmZjQ5MWRkNTZiMjgxZTlmNDM1ODM2YWFlMTc0YWJhZjcxIHB5M2sKKzU3NTMwIGQ5MTE1YTQ1MGYxYzY5YzViNTRhYjgyMjM0MDFiOWMwNDFlYzg1ZDkgcHkzaworNTc1MzEgODAzNjVkZDQ1NWZhNjg4OTk0ZmRkYjk4MGUxZTllZTExNWM2ZDJlNSBweTNrCis1NzUzMiA0Yzc4YzA0OGMzYmEwNGRiYTQ1ZDA3NDNjNzRkZWUzOTg4NGIwMzExIHB5M2sKKzU3NTM0IDI1MTk3NTE1MzJhZjc2YjY3YTQwMzZmYzQzNTdkYWUyY2E1NGNhZTMgcHkzaworNTc1MzYgMTlkYzJlZWFjYmMxMWEzN2U2OWQ2MzcwNWVkYTRjMDFiYmExZjRiMyBsZWdhY3ktdHJ1bmsKKzU3NTM3IDhlMTJkNTZkZDYwM2VhY2FmZDQzYjk4OTQ0MDdhNDA3ZmZhZWNkYzIgbGVnYWN5LXRydW5rCis1NzUzOCBiYjYyNDkyYjU4NGViNmY1NTZmMmEzZTI5NzhjMGFiNGZiM2U4YzRlIGxlZ2FjeS10cnVuaworNTc1MzkgZTY0ODQ4NWNmM2FmZTI2NzU3MzI2ZTM5NzQwNWNmMDZhZDk4ZTAyNCBsZWdhY3ktdHJ1bmsKKzU3NTQwIGQ1ZmJiODQzYjBhOWRkMDI5YTZkOTc0ZWJiODhmNmZhY2NkNjZlNTIgcHkzaworNTc1NDEgZTk0NjEwMGJiOWZkOWNmM2IzZWJiNjQzMGVmZGU4YjVkMjdmMmI1MyBweTNrCis1NzU0NiBkZDA2NzBjNjAxZDlhYmFiNDY1YjVhM2RhZjA5ZTk5YmU4YjFiNzZhIHB5M2sKKzU3NTQ3IDkwNDY5N2JlNjhjY2I1ODU3MzcwYzEzNzVhYzU5NDc4ZTU1ZTVmYjYgcmVsZWFzZTI1LW1haW50Cis1NzU0OCAyNTJhODQyODBiNzMyYWVhOGVmNDhhMTgwYWNkMWY3Njk1YjU3YTY3IHB5M2sKKzU3NTQ5IDliMjk0ODQ2ZDIwZDBiYWY5N2FjZjAxZWI1Y2VjN2EzODUwNDRlYmQgcHkzaworNTc1NTIgMmMwMmJhNzI3MTRiOTQ0ZTZkZTA1NDM2NmQzY2EzYmYzNzQ0MTYwYyBweTNrCis1NzU1NCA2YjQ3ODFkYzgxZmZmY2NjYzlhNDI3NTNkZWRhM2U0YjVmYWJjZjkwIHB5M2sKKzU3NTU1IDU5NGY4OWVjMDYwNzc5ZTI3OTAxMjZlZTQ5ZTdlZGM1MGVjOGM0OWYgcHkzaworNTc1NTYgN2JmOGYyMzM5ZWM2OWJmYzJkZjY4OTYxYjc5MWM3OTM3NTk0Zjg5OSBweTNrCis1NzU1NyBlMmZmYTBjZDk3Yjk3YmZjNzU1Y2FlMmI1NDVlODJiYjZmOTg4ZDU3IHB5M2sKKzU3NTU4IDAwMjBiYzc4NGM3NjlmOGIwZWJkYTAzM2I0Njc0NTUzNWI1NjBiN2IgcHkzaworNTc1NTkgYTQ5NjY1ZjhkMmY0ZDA3MjMyY2M1OWNhYTI2NjdlMjIxYTVjYTBjMSBweTNrCis1NzU2MCAxOTE5NmNjZTE0MzEzMGIyMTNmZTg5MGJhMzFmMDg0MTljN2Y5Y2ZjIHB5M2sKKzU3NTYxIGMwOWMzMjY0YTkwMDk1MGM3ZWNmNThiYWQ0MTE2ZDliN2VhMjJlMWMgbGVnYWN5LXRydW5rCis1NzU2MiA2Mjg3NGIzNGQ5NWQ5OWM3MmQzYmExNDg0ZjAyNzA5ZGE0NTliMzU3IHB5M2sKKzU3NTYzIGZiMzI2ZmQ5ZDE4NDJkM2NkODcxYWZlODE2MDljNWQwMWUyOWNhNjYgcHkzaworNTc1NjQgY2QyMzUwMjdlNjRjMzdiZjJlNGU2MGZmMDE1YzRmNjU3N2RjM2IzOSBweTNrCis1NzU2NSA3ZWE4YTZjY2RjNDJkZDE0ZTYxZTQ0YjA3NmZhZWU0MjFmMzcyNDU4IHB5M2sKKzU3NTY2IGI5N2ZhNDA1NTM0MzhkZDY0MzQ3ZGFhMjQwY2YyMDJiYmQ4OTEzYmIgcHkzaworNTc1NjcgMDE3MDQxOGRhZGVhYmIzZWVjN2ZlMjQxODUwMzNhODU0YTk4NzBlZCBweTNrCis1NzU2OCA1ODA1ZmUxN2NiMmRjNjA0MWVkYWJkMzNmZmQ0YWNjN2RkN2E4YTM5IGxlZ2FjeS10cnVuaworNTc1NjkgN2E2MmMyNDY5ZGVhMmU0ZTljM2Y2OTQ2NWYzOTJmZTY2N2VlMDJjYyBweTNrCis1NzU3MCAyNGEwNTMyNTY3OGIxM2FlM2QxYWMxZjViNGI5ZDA4NjgxOWMzZDBiIGxlZ2FjeS10cnVuaworNTc1NzIgY2IyOGUxNGVlODA4MGQ1MjhlMDFhOTQzYTYyYjE5Y2QzNDc5ZGM5ZCBweTNrCis1NzU3MyAwNDRiNjI4NTgxNWYxOGIyMzFkMTM1M2E3OThlNmNiOGE4YjE1NjhiIHB5M2sKKzU3NTc0IDc5NzMxMDQwMjE3YjVmNjVlZjViZTQ1NDNhZTE1MDI1ZjljMTI4MzYgbGVnYWN5LXRydW5rCis1NzU3NSBlMjBkNWI2NDE4OWM5NDNmZjBkMTk0MWRhMzk2MDk3OGQ5ZDc0NzZjIGxlZ2FjeS10cnVuaworNTc1NzYgM2YwZjFjNzc1ZDlkNDJmYTE4MGMzZDViYTFkMjkyOTE3ZTAwZTJlZSBweTNrCis1NzU3NyA5ZmI4MzMxY2VjMmNmZTczZGU3NTM0ZjU3ZDc1Zjk2OTBhNjkxMWNkIHB5M2sKKzU3NTc4IDhlMDFmMjYyNjJjZjllNGQwMGE4YmI3ZDQzMWVkYzY3M2M3OTFjMGIgcHkzaworNTc1ODAgOTIyMDkzMWU0NzQxYmYwNGY5Njc1YWFmNDhiZTBiNDIyMzYzNzEyZCBweTNrCis1NzU4MSBjNzJhM2NjMjFlZjczZTEzMjM1MmMyOWYzMjNjOWUyMWE0MmI1NzA0IHB5M2sKKzU3NTgyIGFlY2JmNTY3ODcwNDVjMDk2ODMxODFkNDg1OTUzNDcyZmE0MDYyZjcgcHkzaworNTc1ODMgODcxN2I0ZjhlMWU1ZWQ4MzMwNDQxYmJkYjI1NTljMDE3YmU2YjAxZSBweTNrCis1NzU4NCBiMTEwYmFjOWRmNDA5MDIzYjc0YjIwYjZmNjRjNWJiOGIyYzUzMzViIHB5M2sKKzU3NTg1IDM4NGY5ZDljNzVhMDJmZmU4NjdhMDE0MmIxMjQyNmE2YmNiZTkxOWYgcHkzaworNTc1ODYgYjRiMTRjNGJlYjgyY2FiODdlM2EzNjViNTNhYzlkMGJjMzk3ZTUzMSBweTNrCis1NzU4NyAwMGNiYjMzY2I4NjQwZjhmZGQ3OTY4MzNmZWNlMGNkODM3MGRiZGNhIHB5M2sKKzU3NTg4IGZkMWZjYmE1ZTE2YjA1NjMyZTAwNTJjNjJjMWM2NTBiZWMwYTZhNzUgcHkzaworNTc1ODkgZjNiMGFjNGU2ODRmOWRkY2E5NDU4ZGYwYjViMzRiNzRmMzA2YzNjNCBweTNrCis1NzU5MCA3YmUwZTAwYjAzNjZkOWRkY2FjN2VkODM4ZmE1OTc2MGI0NTVmZDNiIHB5M2sKKzU3NTkyIDExZWM0MDk3ZmFmZTcxNTRhMWQzYmJmMjQyYmI0NWFmNWFmYTJjZDIgcHkzaworNTc1OTMgY2JkNTBlY2UzYjYxMmMwOGE2NjlkMjBjZmUzZDgzNWEyNTViMzk3MyBweTNrCis1NzU5NCBhZWUyMWUwYzlhNzBmMzkwNjAzZGRlY2I1ZmNmMWZmZWE4N2E2NzRiIHB5M2sKKzU3NTk1IGFhMzk1MGYxMTFkOWYxMmE0YWQwYzBiMzc0YzE1NGViOTY5MzVlZTkgcHkzaworNTc1OTYgYjg0NjVmMDJmY2IxZWU2ZmMyNDY1NTJlZDAwMjA1NTQ5MWZjN2U2ZCBweTNrCis1NzYwMSBmZGVmMzJiYmJjYjg0MDc5YWZjOTNiZjc2ZTMwMzg1MDYyNzk5ZThjIHB5M2sKKzU3NjAyIDQ5ZGNlM2RhMGU4MDNjZjNhMmVjMzk2NmJiOGYyYzk1OWUyNzVlOTEgcHkzaworNTc2MDMgZTBiNmI2Mjg3YzZiMjNmN2IzOTY0ZjE0ODYyYTUxNThjOWY1YzQzZSBweTNrCis1NzYwNCBiYzk4YWY5NzI2NzhkODhlYjczOGJiM2RhZjljNDVjNjc3YzQzYTk1IHB5M2sKKzU3NjA1IGU4MzZjMTJjNTRjMmY0NDYwZjkzZjJiOTI1N2FlODFiNTJmYTk3YzIgcHkzaworNTc2MDYgODNjMTMxZGZkZDg0YzE4ODk0Y2NjODMxZGRiMjY4YWM4Zjg4NTE0MCBweTNrCis1NzYwNyAxZGZlNjg1Yjg1NzZiZmVhMTg0YTVkZTVlYmY1ODQ3MmI0ZTFlMTY1IHB5M2sKKzU3NjA4IDE3MWI5ZjE1YzIyM2E0YmQ5ZTg4ZWQxYTE3YjA5NWQ1YWVkYzg0MjggcHkzaworNTc2MDkgMzI0MzIwZDk0NjEwMmYxMGI5YjFmOWNhYzc5NDU1N2EzYjcwODRjYSBweTNrCis1NzYxMCA3MmFmYWY5YWIzMGJhNzliZTU0MTcyNWE4MDA5ZWI3Y2VlYjE4OTdlIHB5M2sKKzU3NjExIDhiMDZmNTE0NzQ0NTg2MTlmM2FhYmQ0M2ExMWU4NDFiNGNjNjIwZGQgbGVnYWN5LXRydW5rCis1NzYxMiA2OGZlMzUwOTA3NTkyODE4ODEyNGY2NDc4NzFhZjRiYTIwZGExMmUyIGxlZ2FjeS10cnVuaworNTc2MTMgOWExM2U4ZmIxYTNiNmNjOWM3OGQ2NDk2ZGI4ZmNlMTAwNGUyZjg3ZSBweTNrCis1NzYxNCA5NmRhMWI5ZGVlOGRiMmMxOTY2OTczOWNiMmQwYzcwNDJlZjEzY2RlIGxlZ2FjeS10cnVuaworNTc2MTUgNGVjYmFlMDc0ODFmMjE0YTExZGQ1Mzk5NDcxMjA4N2VkZjQzYmJkMiBweTNrCis1NzYxNiAzYmYyY2FkOGYyMmE5Y2UxMDE3NzJlZGE3ZjU5ZTBiMDIxYTE5MjJkIGxlZ2FjeS10cnVuaworNTc2MTcgNjZlMzZjZTVhNTZjNmYyNjJhYTIxMGQxMDRlMzEwZjJkNDMyZDFhNCByZWxlYXNlMjUtbWFpbnQKKzU3NjE5IDk2MjAxMzQwMTBhNWFkMmU1N2Y5YWUxYmQ3NmZjM2NlMmI3YTJmNDcgbGVnYWN5LXRydW5rCis1NzYyMCBkMTc4OWQ0ZmYwMGM2ZWM2NmUwY2YzOWVmM2E0ZmJlNzhiZDVlN2FjIGxlZ2FjeS10cnVuaworNTc2MjEgY2FhZDM1ZTgyMTNiOGE3ZWZkNzRmMTliNTViNjI1MTEzMWNjNTNkNSBhbGV4LXB5M2sKKzU3NjIyIDFlZGM2ZTE3YWUxODVkNDIwZDcyYzY3MmQxODFhNTcxZjgzNmM0YzkgbGVnYWN5LXRydW5rCis1NzYyMyAyNWE4OTNkNjdjNjQxODQzMDU5NjljZDE2MDdjNWZlYzU1OWFhZGQ2IGRlY2ltYWwtYnJhbmNoCis1NzYyNCAyN2YwMjg5YjY4MzUxY2U4YzQyZmJiMjE3MGUxYWExYjA3OGMyNDZiIHB5M2sKKzU3NjI1IDMwNTExMDY4ZDNkNDgyZTkxNGU2ZDY1NTQzOTI2YjcyODM0YThiNWUgcHkzaworNTc2MjYgZTZhOWZjZDFiNDRlODE1NGZiMjVhZDllYTdhODQwOTZiOGZkZDk5YyBsZWdhY3ktdHJ1bmsKKzU3NjI3IDUzM2ZiNTMyMWQ2YmMxZDRjMDhlYzBjMGMzNjM2MTQ3NjdmMjFmNjEgcmVsZWFzZTI1LW1haW50Cis1NzYyOCA4YmIxZmUxYTcyYTRhMzJiNWU4MGJmZTRlNGE2NzRjYWMxYjY3OTIwIGxlZ2FjeS10cnVuaworNTc2MjkgODljNGZmOTdmZDg5M2VjYTA3NWFjYWNhMTI0NTU5ZjExMWU2ODdlYiBhbGV4LXB5M2sKKzU3NjMwIGQ2OWQ4MDYwMGNmMTcyMTc2NjVkZDQyNDMwNDYwYzZhYTQ5ODJjZjMgYWxleC1weTNrCis1NzYzMSBmYjJjZjZlOGNkODYxMTUzOTczOWM4Njc5MjM1MTZmZGNhYjk0ZmFjIGxlZ2FjeS10cnVuaworNTc2MzIgZGVjMmVjODI2ODc0MTE3YWIwOTM0MTk5ZjY0YWM4YjA5N2QwY2U0OCBweTNrCis1NzYzMyAxYTIzMGNiNzdmMDVjYmVjNmQ1NTBkYTc2N2ZmZTgwMzBkMmFmYjc5IGxlZ2FjeS10cnVuaworNTc2MzQgYjkyZmIyNGM1ZDRiNTA2MWI2MjlkOGMxNWQwM2U5YjU4MDA5YmZkYSByZWxlYXNlMjUtbWFpbnQKKzU3NjM1IGIyZGY0NGI5YzI1MTM0OGQ3ZjE4ZTg0YThiZmQ1ZWFiM2U4YTEyN2EgcHkzaworNTc2MzYgYTc5NTFhYmI4NTM0YjMxMDJiOTYwNTdiOGFhYzYzNmZmMTBhMGI3MiBweTNrCis1NzYzNyBkMWExN2NkMjZhNGIwMmNmZWYwNWNkZDA3NTM0YjMxZjRmYWVkODExIHB5M2sKKzU3NjM4IDM3YmVhZTA5ZmNiMGZkNWZlYTliM2RjNzhhMTM3NGZjOTM1ZWY3ZmYgcHkzaworNTc2MzkgNTBiNzg3Y2JhOGYxY2Q2ZDc1YTZmNjk3YWNhODU1ZTNhZjY1ZGViZSBweTNrCis1NzY0MCA3MTNmYmEzNGQ2NmI4OGI0MTFkZmU2NzlkZTE5MDcxMTY4OWNmYWM2IHB5M2sKKzU3NjQxIDBlNTEwYWZmNWU5YWUxNTQyYjgzZDBmZjNjYjUyZGEwODMzOWEzOTUgcHkzaworNTc2NDIgY2I1YWUwMjBhMDYwZWJhNzZiODkwZWUyOTcwNWI0NDg3YWE0NjBkMCBweTNrCis1NzY0MyA5Zjc0YjY5OTA1NmE0NjU2ZDc3ZGMyM2U3NWMwZDI4Yjc3ODgzNzU3IHB5M2sKKzU3NjQ0IDA1YzQ3MzhmOGE0M2M3MzMwZDcyOTgzNjEyMWJlOTk4YWVjYzg0ZmIgcHkzaworNTc2NDUgMWNlODlmMjU3OGNmODFkZmJjNjAxMzc2MWQwMTE1YTcyYTU0NTVkNSBweTNrCis1NzY0NiAwZTkwNjUxMDI2MmQxYTk4ZTQ5OGIxODVkNjkxMGI4OThmOGE4ZDE4IHB5M2sKKzU3NjQ3IDcxY2Q1NTk4Yjc0ZDZkMGI4MDBhODEyYjQ5ZTBiZTA4OGU3YmM2YjkgcHkzaworNTc2NDggNmIzZThhYTU0ZGQ5ZDkxODc5OWQ0MWY3YWIxN2NiNWNlYmUzOTMzMyBweTNrCis1NzY0OSA1NDJiOWIxMTE5MTVjZWQ2NDBiNTk2ZjAyY2VjZWY2MGIwODlkYzA3IHB5M2sKKzU3NjUwIGRmOGVmOWM4MzcxYTQ1NTAyOTA4NDllMmE1NDcwMzlkMWJjOGRiN2MgbGVnYWN5LXRydW5rCis1NzY1MSA4MjYwMjMxNWVhZWI5ZTcxMGVlZTExNTBhMmY5ZTlmNDdiYWNkZmNlIGxlZ2FjeS10cnVuaworNTc2NTIgOWRmOTExZDY1NGFmY2JjNGIyOTVjOGEzZWY3NDhkMGJlMWUwMGM2ZSBweTNrCis1NzY1MyAwZjgyZmM0MmZkNjgxYWY5MjQ5NGIxYzFkMWZmOGVlZjU1N2YyOWUzIHB5M2sKKzU3NjU0IDdmZGU2ZWRmMmI5MjAxMjgyNjVhOGQ1YmRmMWNiY2MzOGMwNTUxOWIgcHkzaworNTc2NTUgNzkxOTFiZGZhMjNiNTJjMjlhYWQ2ODE5OTg5NTQxNGEwMjEyMDY2MSBweTNrCis1NzY1NiAzYTU2ZTczYWU5MTk1NzQ1OWExMzM5YjQ1OTU4MzBjNThkYzRjZTc3IHB5M2sKKzU3NjU3IGY0ODUxZGMwZGYwNDE3NDU3NmYxMjAxZDYxYjBlZWE1YWMxNGMwZjYgcHkzaworNTc2NTggNzA3M2Y0ODE0N2JkYWZjMGIwYjQ4ZjhlNDFlN2IzMjk5NmE2ODZlMCBweTNrCis1NzY1OSA0YmViYjIyODE3Y2ZlZWRiM2YyNTA2NjljZjVkNGFhMmJiZjkzZDI4IHB5M2sKKzU3NjYwIDBkMjhhNTIwYzliMThlYTE5NmMxNzBiM2E3ZDI5YjIyMDFhNDk0NTkgcHkzaworNTc2NjEgMTcyMjQ1OTI1YWU2MDNkMTYxMmRhZWVkYmEwOTQxNmMxZDU2ZmNkZCBweTNrCis1NzY2MiBhMDM1MzI2MDdkMWNhN2E4M2QxNWEwY2U3OGYxOWM5N2E1M2I2YmJiIHB5M2sKKzU3NjYzIDMzZTg3Zjk3MGEyMmMwMzIzOTUyZDhmODlkMWZhNDUyZjJhM2U2ZTkgcHkzaworNTc2NjQgZWNkYTMzMDUxNzM5ZDk2ZTlhZWZkYTZhMjMzYjNlYWQ2NjAzNDYxYiBweTNrCis1NzY2NSA5ODg1NGM3NjI5YzhlMDMzZjNmOGMzNDU5MmY1OGRhMDYzOTI0YWZjIHB5M2sKKzU3NjY2IGFiZWE1NjUzMDQwNDk5NjVjOGE4ODIyZGYwOTQzYzgwN2U5ODY2ZTEgcHkzaworNTc2NjcgMjUwYTlkMDdjMmNjMmI2ZjM4MzMzNWYyZTI3YTkwZDhkNjg1ZmUyNyBweTNrCis1NzY2OCA0ZDZjMTM0NDM0MGMyYzcyYTBiZjM0MjBhZjg2MWE1ODg4NjJiNjM1IHB5M2sKKzU3NjY5IGI5MjI2Y2FkOWRmZGIwOGJkYmM3YjQxZDllMzBjOGI1MzA5NTU5N2MgcHkzaworNTc2NzAgZGNkMjg1YzA3ODEzNWM1OTkzODU4MGQzODIwZDMxMjc0NWYzYmIyMyBweTNrCis1NzY3MSBkYzBmMGZmZDQyNTcyOGU3MjA3ODY0MTkzYjZjZjQ1MzY1Y2ZmNjE1IHB5M2sKKzU3NjcyIDk2YmRlMDg4MmU1ZjRhNDc4NDgwNmI1YzcyNTkzZjMwMTA0MzBlZjUgcHkzaworNTc2NzMgZWFmYzhiMjM1ODlkMTNhMDA4NTBiODEzZWU1ZTJiYjY0NDEwNDkyNSBweTNrCis1NzY3NCBlMTQyY2Q0YjU3MTAxYzVjMjM0ZmQyOTYzNjU2ZWVlOWE1NDk3YjlkIHB5M2sKKzU3Njc1IGNkODBlYjk4OTcyODNmMzU4M2E2ZDJiNzY2ZWM4ZTBhYjEwMDM3ZTUgcHkzaworNTc2NzYgYWE1N2NlZTExNjMxM2Y2YWZlMTE5NTUyNmY3MjkzYjAzMjI3YzA2MiBweTNrCis1NzY3NyBiNzU0YzA5MDg4OTdlYmIyNjM5MmQ0MWU4MzNiOGJkYTUwMTkwMDU4IHB5M2sKKzU3Njc4IGFjOGIzODlmMDAyNWQ3MzdiNDRjZDQyODc5MDc2NzlkOWYyNDhiMWIgcHkzaworNTc2NzkgNWZkZTVkNjk2NGQ3Y2Q3MTk0NWVmMzY3ZTU2OGI3NTMwYjcxYTk1OSBweTNrCis1NzY4MCA0NzcxNjM5ZmMwNDk5NjM5ZmNmOTcxMTk4ZjA4NGU3ZGU1MTYwYWI5IGxlZ2FjeS10cnVuaworNTc2ODEgMDdkNjdhOTcyNWE3OGUxYjE2NzYwMzllZTgwNDEyNzVmMWMxOWRmYyBweTNrCis1NzY4MiBhYjg5ZTEzMGQ2NGE4NGZhZGYzMWQ2MTk5OTI3Nzk3OWNmN2Q4MDU1IHB5M2sKKzU3NjgzIDZlMzVjN2MxNzYwNGU2YWYyOGYwZTI3ZDk2YjVjNTMxNTRiOGIyYmQgcHkzaworNTc2ODQgMGRjZDdmMDg3MzlhYzgwNzI3NDUyNGZmZDhiMzFkMDZhN2M1N2I2MiBweTNrCis1NzY4NSA4OGJiNDU5ZmRiZjU3YzcyODYxZjkwMDAxMzBiZDYwZGEwMTY3YjE4IHB5M2sKKzU3Njg2IDk4MzQzMDFhMmZkM2UwMTc4NzJmZjEzZmE5ZmMxMmI1ODdlNDM4ODQgcHkzaworNTc2ODcgMGNkNDAxYmYyYWE3ZGRhYTc0YmYwMWUzMjUxM2VlMDJiY2FhZTRlOSBweTNrCis1NzY4OCA5NTA4NDgxMTczOTdkNzI0ZDQ0MGNhMWE5YWE3NmRiYjUwMGU3Y2Q0IHB5M2sKKzU3Njg5IDAxMDRkNzk5ZGQ0NDU0MmIyNTgxMjJjYjAxNGZkZDVjMmJmYWFlMjggcHkzaworNTc2OTAgMTY1OTM0YmM0NDI5NjEwNDYwNzQyNDkzZjlhM2I2MGZlYTlkOGE0NyBweTNrCis1NzY5MSBkNWYzYzJmNDE2ZjJhODhiM2U0YzY2OGNjMTE3MDJlODlhYTgwMTJmIHB5M2sKKzU3NjkyIDkwN2E0NWRmMTI5NTNhNThhY2E4YjQ0ZGU2MDdiMDc1ZjNiZGFhNjEgcHkzaworNTc2OTMgYTM0NjQ0YTY1N2Y1YTI2ZmY2ZDUyYzY1NGZlZDQyOWU5ZjI1NGMzMCBweTNrCis1NzY5NSAzOTE4YThhNTFiZDE5N2U4Y2ZjNTMxZGI0YWQwNjA1ZWYyYzQ0Nzc0IHB5M2sKKzU3Njk2IDk1MmJmNmE0NGMyNzdmNzAzOWVmOGUwZjRhNjMwNjUxNDYyZTNhOTEgcHkzaworNTc2OTcgMTMyMWJhMGI2NzBmMTAxMDIwNzRlN2UwNTc2NGRjNzhiYmUwN2RhYiBweTNrCis1NzY5OCBiOTZjYTM1MDg5MWQxZGEyZjJlZjNiOWQ5MzBhNTdiZmZjNjQzZjc1IHB5M2sKKzU3Njk5IGE2ZDM5MzBiNTYxMzgwYWE2ZGIzYzE4Y2JkMjY1MDQ0ZWE5NWM1YmMgcHkzaworNTc3MDAgOTA3NTcxMmRlZThmZDQ4NmUwNzU3YjE1N2MwMGY4ODJjN2RhMTg2YyBweTNrCis1NzcwMSA4MDc3ZWU0OWZhZGZkY2QzNmIxZTAzZmQzMzk1ODhiOTJlNDkyNjZjIHB5M2sKKzU3NzAyIDcwODAzM2VkOTUxNTk0OGQwMTNlYjk2Y2VjNWQxODNjNDQzODI0OTUgcHkzaworNTc3MDMgY2MwZmUwNTZiYWJkZjVhOTZmNDFhMzhlMjkxYTI5ZmQ2ODkxMWEyNCBweTNrCis1NzcwNCBhYzJkNWQzNDYyNTJhMjQ0NzQ5NzBlZmY1NDJiZmJkMTcyOWRlN2U0IHB5M2sKKzU3NzA1IGI1ZDljMTk1YTBjNTNhOTdiMjVkZDUzMzM4YmUyN2Q2ZWQzM2MyNjcgcHkzaworNTc3MDYgZTA5M2NhNTU5YzIzY2ViZmVlNzY1M2FkZmI4N2VkYzM3ZDc4ZDEyMiBweTNrCis1NzcwNyA4Y2NmNmY0YzdmMTI1Njg1NzA0ZTdmNTRhYjVkMDUwODQ0OWZmMzM4IHB5M2sKKzU3NzA4IDQyNzU0MjA4YTY1NDRjYTE5MzY0ZjQ0N2NjZGE4Yzk0ZjNmOWE0NTQgcHkzaworNTc3MDkgZTgyYzgwYTA0NDhkNWI1NjVjNmZjMzVhMDY1MTVjMDI4NzdhOTQ5YSBweTNrCis1NzcxMCBjYzdlOTE0YTIyZDljYzc0MGY2YzI5OWY4MzhkZGQ0NjM5YWUwNTg0IHB5M2sKKzU3NzExIDZlMTAxM2I5MjNlM2MxYzgyYWMwNWViMWMxYjk2NmQxYzU4OWZlZGYgcHkzaworNTc3MTMgZmZhNDIzM2RlODY2MjI3YWRhMGQyNzRkYTRkNDU0YTk5ODFhYmU5NiBweTNrCis1NzcxNCA5NjI0ODMyZjMxNTZmMzZmNzc3YzFjZGY3YzgxMGRjNGRhZDk1YjFiIGxlZ2FjeS10cnVuaworNTc3MTUgYTExMzY3MzE3Y2EwZmNjZmFlOTRkMjE5ZDI2NDYzYjk0ZWI5ODFhMyBweTNrCis1NzcxNiA4YjBiMTE0NmQ5MDgwNWRlNTRiODlkMWZkNmYxYmQ2OWExYWNmOWY4IGxlZ2FjeS10cnVuaworNTc3MTcgMTEzMjIwZGFjZTY0NmJiMzEwYjc1M2NiYTM3ZGU0MDdkZTgyYTgwZSBsZWdhY3ktdHJ1bmsKKzU3NzE4IDM5ZDllNTAwMGU3Y2Y0YzJjYTQ1YjBkMDNkYTA1ZWM1ODEwNThkZDIgcHkzaworNTc3MTkgZGY1M2M1NzZjNTMxZWNlMWQ0N2JjMDUxZDk0NzY2NzYzODkzYzAwNyBweTNrCis1NzcyMCBiNmUzM2I1ZWFjNDBmYWUwNTJlMWFjMDcwZGY5YzczYWE4OTZkMGFjIHB5M2sKKzU3NzIxIDA4ZjdhNmIyNWM4ZjJiZDQ2NjA1NzJlZDVhNzhmZjVlNzI5MGQ3ODUgcHkzaworNTc3MjIgNjUwMGM4YmQ3ZmVhYjcwNTAxODdmNTk3NTI4NzkyZjUxYzdiZmQxNyBweTNrCis1NzcyMyAzYTdiZGIwYTU5NDgyYmEwMTMxYWE1OGU2MzM0MzgxMjM3NGE4ZTI3IGxlZ2FjeS10cnVuaworNTc3MjQgNTZhZmRkNmQ2Y2Y3OGU5MWEyNjZjMDJhY2ZiMDhmNjI1NGJlZGNkNCBweTNrCis1NzcyNSAyMjdjY2RkMGY4ZGI3YWYyOGJmZjNmN2NhNzY1OTBjNzFjOWUyNTYyIHB5M2sKKzU3NzI2IDk3M2RhMmViYzJkMGYzN2QwYWQwNTc4OWViMjI2ZGYzODA5Y2YyNDkgbGVnYWN5LXRydW5rCis1NzcyNyA2ZmNiODczZjM5NmM2ODg5ZGVjNTlhN2FhNGE3OTA4MWQ3NDcxNzIwIGxlZ2FjeS10cnVuaworNTc3MjggZDgzYzJiMjFhYzI2ZWMyZWNmNDJlOGNjNDVjN2EyNjNiY2Q5Y2ZkYiBweTNrCis1NzcyOSA3ZWE2ODg4NTYyZDFkMzg0NzAzM2MxMTY2YzMxNWUwYzg0ZjY5N2JlIHB5M2sKKzU3NzMwIDNiZjFiOGIzNDA4MDMyZDkwN2NhZjlmNTRjNjUyMmI5ZmEyMDRkZTYgbGVnYWN5LXRydW5rCis1NzczMSA3ZGZlZDFjZmU3NjJjNTRlNjQ0NWEwZDE2NDFmZWZmZDY2YjIxMDU5IHB5M2sKKzU3NzMyIDViN2FhZmFkZjIyMzAxOTRkZTRlNTdlZWIyNDQ4NThiY2Q1MGMzOTEgcHkzaworNTc3MzMgMGEzOGMxMjk3MTdhMzE1NWU3NmE5YmM0MjZjZGVkMGMzOGMwMjE2ZiBweTNrCis1NzczNCBkNjAzNjdhMTMxNmY0MzkwZDc3ODI1MjgyZTNhNGQ2ZTA0MzhjOTZiIHB5M2sKKzU3NzM1IDc4M2VhNjgyMWUwNDcxYTM1NzdjOGE5NGE5YTdmOWQ4NWY2MDViNzQgcHkzaworNTc3MzYgMWE5MDFiMWM3Y2QzMTg2MTUyNzI1YTYxY2IxN2QzYTU0YzVlZTNkNSBweTNrCis1NzczOCBlN2EzOTBhMzZlYzhmNzNiYzA0ODExYzhkNGUyNzk1MDY3NjU0MTY5IHB5M2sKKzU3NzM5IDAyZDFiNWU3YmVmNTY4ZmNhMmJhZjUzMDA2NmZmOWJmOGJiNzE5NTkgcHkzaworNTc3NDIgMDkzZmQ4NGZhNzdjNDU0OTNkYTE3YzI5Mzg1YTdlMTNiNjQ1OGYzZCBweTNrCis1Nzc0MyA2YzIwM2I3YjFlMGExMTk3Y2ZkMWE3NjczZWYxZWVjNjNkZTYxYmY0IGxlZ2FjeS10cnVuaworNTc3NDQgNmJiZWNjMDI4YmNlMjY2YTA3MjNjNzk3NzcwNWU2NmJhN2VhMTJlMyBweTNrCis1Nzc0NSBhNTUzMjRjOTYwMmQ2MjFmYWUzZDExMWI1NWM3ZmU2MTJiNjFkZjE4IHB5M2sKKzU3NzQ3IGJlYWY2NjMwODE0ODg0ZmNlNzM4N2E3YTYxOGQ2MzkxZDcxNmVmYWQgbGVnYWN5LXRydW5rCis1Nzc0OCA2NmE1YzRiYTkzOGVhY2FkZjQ0NTVmZTFiMmU2NzFlMzQwYzc3NWI4IGxlZ2FjeS10cnVuaworNTc3NDkgYzRhOTZkZTVlNDRlNTlmOGI3ODk2MTk2ODVmZGQ3OGJmNTJjOWFmYiBweTNrCis1Nzc1MCBmZjkxOGZjYzU3ZDJhYTM5MzEwMzNkYTg2ZDVlMTUwNTZlNWZmNjQxIGxlZ2FjeS10cnVuaworNTc3NTEgMjMzNjQ0OTZkZjMxMzc0YzI1MTExMzYyZGQ2NTcwZTE3MmNkNmQwMiBweTNrCis1Nzc1MiBkYjlhMTc2MTkwZDM2MGQ3ODk1MWQyZGVjZmIwZmEyYjBiMmRlMzZkIHB5M2sKKzU3NzUzIDUwNGMxNWYwNWRmMzU0NGEzOWY2ZTgzMzFjMmM3M2EzNTI0N2FhYmMgcHkzaworNTc3NTQgMGZkMWI0ZTJmNGVlNThhZWRkZGRjN2NhMDYzMTlhMjRhMzRkODViNCByZWxlYXNlMjUtbWFpbnQKKzU3NzU1IGRjZWRkMzJmMDZkZTM3MTFkMGQ1MWQ0ZTQyOTE3OGRkMzFiZWM0MzMgcHkzaworNTc3NTYgM2UzYmM4NDEyMmQ3YmY3Y2Y0ZDFlZWJkY2JlODNhNjI5NTEyMzlhZCBweTNrCis1Nzc1NyBiZjExZWQ0MGIxMDU4ZGI0YTAyNWQ3NDQ0NzNlMGY3ZGRlOGRlZDA3IHB5M2sKKzU3NzU4IDg3YTBmZGNhYTg0YTY0NDlkZjJkZjE4MDI4MmY5NTFiZThiNTc3ZmUgcHkzaworNTc3NTkgYWU5MDQyMGQyNjM1NWUyNzE4MWU5MTRkNzJiNzA2ZDNlZTQ4YzU2YiByZWxlYXNlMjUtbWFpbnQKKzU3NzYwIDY4ZjhiMjM5MzI0Mzc3ZTJmYmQ1MTAxMTMwMjNjMTRkMWU5YWJjNzEgbGVnYWN5LXRydW5rCis1Nzc2MSBhZmJmNmZkNzc5ODA3OWRlMjZkYzIxNmYxZmJhYWZiZTE2NDllOTkxIHB5M2sKKzU3NzYyIDIwZDhkMTFjOWIyMTM4MWY1Yzg2OWE1NWE4ZmIyZWJlMTlhNGNkNzAgbGVnYWN5LXRydW5rCis1Nzc2MyBjYjI1MGIwNDczZmNiNmY3Njk5MmNjNmIwNmYwYjMyZmJhZGI2ZmY5IHB5M2sKKzU3NzY0IDVkMzE0YzNlOThlZGU1Njg1ZjA0NmQwMGE4OTk2NDY2ZTQ2NTJjY2QgbGVnYWN5LXRydW5rCis1Nzc2NSA4ZGZkMTgwODM1NDBkOTBiZWE4Zjk4ZTQzYzVjOTdiZjE2ODZlYmUyIHJlbGVhc2UyNS1tYWludAorNTc3NjYgMWJjZGVhMWRjOGM3NTBmN2RjNzNkMGFlZWFmZDQwYjg4ZGY1ZGY3NyBweTNrCis1Nzc2NyAyZTNjMDJjNjI1ZGVhYzM3MDVhM2I3MTI2ZjBjMmIwODA4NDc1OTVhIHB5M2sKKzU3NzY4IDhjODliOGM0OGI2Y2I5MGZlMWQ1OGRmMTA4NWEyMWE4ZTk2NjkxYTkgcHkzaworNTc3NjkgYTZiZDNkYWIzZWI4YzRlYzRhMGI2Yzk2NWY5MmFmMDM4NmMyMmJhYyBsZWdhY3ktdHJ1bmsKKzU3NzcwIDkyZTQ3ZDMzODg0ZTQ3ZTg5ZjNhNmIxMzY3ODA1ZjM4NDExMDAwOWIgcHkzaworNTc3NzEgMWQ1N2ZiN2VmYjE1YjBkYmE0YjY3NDBjMTczNTYwZjg5NTE3NjE1OSBsZWdhY3ktdHJ1bmsKKzU3NzcyIGRkMDY4ODc0MGQyNDNkYjg2MzlmYzhiN2RjODA4NDA3YTgxOTdkMmMgcHkzaworNTc3NzMgNGEwN2EyODhmNWM0OWFmNGUzYWU4YTE4MjRiYjdiMmYwNDFkYTFlMSBweTNrCis1Nzc3NCA2OTg5MDZjMmY0NjkxMzBhYmIwOWZhZWRlN2RmYTgxOGNmNDUxMmNmIHB5M2sKKzU3Nzc1IGE5YWNjMDZkYTU3YWI0NDQwOTZjNzVlM2EwN2NhZGRiZDA5MDZmNWMgcHkzaworNTc3NzYgNTRkZWYxOGViMzFmZGZkMTZhNTcxMWQ3NTM2MzVmNjhlNmIyNTI0NSBsZWdhY3ktdHJ1bmsKKzU3Nzc4IDQ0NDFjMzg3NjUwZDljODYzMjAzNTgzZjhkOTk1OGE1ZDE1MmQ5Y2EgcHkzaworNTc3NzkgNGU2YjRiYTYwYzNiMjg0MjBiYTRlMmM1YmYxNmZlMjM4ZTEyNDM1MCBweTNrCis1Nzc4MCAzYzQzMjk0MzFiYmM0ODgyYmY5ZWUzYzM4MWYxNDMwOWQ3YmYwYzhjIHB5M2sKKzU3NzgxIDMyZjZkZDk1ZDFiYTdjYTdmMmIyNjIwMWQwMGEyNzUwNGU4MGRhZGYgZGVjaW1hbC1icmFuY2gKKzU3NzgyIGU5MWQyYmY3MWZkZWQ4N2FjM2QxMzFjYmM0YjVhMGE5YjI0ZjBmNWQgZGVjaW1hbC1icmFuY2gKKzU3NzgzIDk4MWVjYzUyNjcwMzAzZDdkMjMxZmY3YWE5NTVkZWYyNzE4ZDU1NzggcHkzaworNTc3ODQgZDJlOWRhZGVkY2M2ZDlhYzhhMjdlNTNlMzBkNzZkM2JiYmI0ZmUyMyBkZWNpbWFsLWJyYW5jaAorNTc3ODggZGVlNGM3OGVhOTEwYzg0YmQxOGFiMTZkOTY5MzExNGJkZDQzZTJiOSBweTNrCis1Nzc4OSA2OTFiNWNjZWYwYzgxMWJiZmIxZDQ1OTY3NTY5NTY0YTdlYTc3MDdkIGRlY2ltYWwtYnJhbmNoCis1Nzc5MCBkZDZjZjAwYzE3OTQ5NGE3ZWNjYzc5MjhhZTIzMTU4NmJmYjliZGZiIHB5M2sKKzU3NzkxIDlmYjAzMjdiMzExMDA5M2M5YTQyMzUzZDI1ODRhMTc3ZWJjNTM5YWQgcHkzaworNTc3OTIgZWVkMTVlYzZiNzU5OTViY2U1MDY1ZWI1NWNmOTYxZGQ0NWI3ZGZiZiBweTNrCis1Nzc5MyBhODlkNDY5ZTFmZjc3NzE2OTE0Y2UxYTQyNDRmYTUyOWE3MWNlNjhhIHB5M2sKKzU3Nzk0IDU3ZTNmNmYwYTU4OGMwMmYyNjEyZWUzMDk5MjQ1YTkyMjhkNWI4ZGIgcHkzaworNTc3OTUgMDEzNWYwZTY3NmJkMDFiNDExM2FhYTQ2YzNjZWRmZGU1YTU3ZGQ1MiBkZWNpbWFsLWJyYW5jaAorNTc3OTYgZWVlNWJkZDM3MTU4Nzg0MDkyZTRjMmU3ZjJmMzgwOTYzNDYyYjAxNyBweTNrCis1Nzc5NyBjZGI3YjlmODJjYzQ1NjA4N2Y4MWM1OTRhODA0NmJlY2E2NjE4OTIyIHB5M2sKKzU3Nzk4IDdiMDIzN2NiZDBlZDExOTQ2NDBmOGUwZjgxNTM5NDA3YTVhNmFmZWMgcHkzaworNTc3OTkgOTBjNzE1YmM3ZDMwNWRhM2QxNzM3M2E2N2Y5NTRmN2E3ZmU5OTcxZiBweTNrCis1NzgwMCA3ZWMwNGNiMjYyZDIxZTI0ZGU0M2JlODRkY2E0ZDIwMmQ4MDA4MWIzIHB5M2sKKzU3ODAxIDg0NTRhMmJmYWUwNDQ1NmYwZjQ1MGI5ZTBhZTMzMjA3MTZmNjkyMDEgcHkzaworNTc4MDIgOTVkNmZlMmU4ZTBlOTFmMWM5MzZhM2RiZjMwOWE4NDYzYTllZjI2OSBweTNrCis1NzgwMyAwY2Y3MDA0NjQxNzc2ZDcyMzdkZjQxNDFiMTQ2ZDY0ZjhmY2FhMWRlIHB5M2sKKzU3ODA0IDdlYTEzNjdiYTI3NTg4YjQyYmRlY2UwN2M0ZTdmZDYwNzBmNmI2M2QgcHkzaworNTc4MDUgODhhYWEzODBmMDkxN2MyNzAwNzRkMGFiOGUyZTc5Yjg3ZTUwOTY3YiBweTNrCis1NzgwNiAxNGVlNjcwNTU3Y2YwMDA4MDE1NTBjMTc2YWY0NDBmMWY1MGFlOTljIHB5M2sKKzU3ODA3IGZlYzJjMDI5OWE4Y2JhZDIxYjJkZWY5M2ZhODYxYjg3OWZlN2Y0OTEgcHkzaworNTc4MDggODgzNGU2NTY4M2U3YjQxMjg3ZDZkNzg0ZmJiY2I4YjQ0MmViYzA0MyBweTNrCis1NzgwOSAzNDI0ODAzMzM3YTM3MGQ2OTljZjIxNmJmY2JjZGIxMzllMmNhNTEyIHB5M2sKKzU3ODEwIDg1YTY3ODU3OTk4MzE0MThiNmJmYmI3Mzc4MTA5MWVkZjZmZWE4MjAgcHkzaworNTc4MTEgNzI3NTM5ODY1ZjA0NjVjY2I5ODU1ODA5ODE4YjY2ZDdhYWI0OTE2ZCBweTNrCis1NzgxMiBlYThiOGUzZDhjOTMyODdlMTA1MmViOTRiNjQzNDgwMmI0MTQzYWU0IHB5M2sKKzU3ODEzIDM0NDkxZGMxNDNlN2NkODQ2Y2IzZDdkMDNlOGNhYTVlMTYwMGVkYzAgcHkzaworNTc4MTQgZTE0MDU1ZTgyZGI5OTFlYjc1NzY5YWRiNTAwOTFlZmNmZGFkYjQ4NiBweTNrCis1NzgxNSAyMjFmZmFkYzFhNGMyNjk1MDA4OTZhMTZlYTMyYjdkMzNiMWFkYjg2IHB5M2sKKzU3ODE2IGM5MmQ0MjZlZWU3NTFiNDFkZDFkMThiNTlmYTc5OWYyYzExZDRjMTggcHkzaworNTc4MTcgNDcyOTBjYWY3ZThlODNkMTg3YjE0YTVhN2E0YWQ1NjA5OGExZjdjNyBweTNrCis1NzgxOCBkMTVkOWM2YmVkYTdhMTA0YTQ2ZWFlZTE5YjM5MGM1MmUyNWEyNWZhIHB5M2sKKzU3ODIwIDVmYTViMjEzM2ZlYmQ4YTQ3NThkZWU0ZGRhMTBiODUwOGYwNDM2NGMgbGVnYWN5LXRydW5rCis1NzgyMiBiYzE4YWNmOGI2MTgyZGExOTg5OTJkZTNjNjk0NDkzOTYxMzAxMjY2IHB5M2sKKzU3ODIzIDQzMDc3YzI3OWQxN2M4NjZlM2Q5ZTY1YTkyNDRhYmU5MjRjM2M0ZGQgcHkzaworNTc4MjQgZDY3Yjk0ZjQ5ZGZjY2NmMDNhNTg4YTMxYmI2MTA1YzM3ZDFhNGQzYyBweTNrCis1NzgyNyA5OThkNzU3ZjNmYjBhZThiNTIxN2NjY2IzMjAwNGQxZTUzMzJmZDRkIGxlZ2FjeS10cnVuaworNTc4MjggOTU4YzRjYzU5OTNlMWU2YTEwNGQxN2Y4MDIwYzhmNjI3YjY5ZjU1YSBweTNrCis1NzgyOSBhMTJhMDJiOWY2NDlkYWNjNzk2YTM0NzE4OTljZTRiNDcyNDdmNjBiIHB5M2sKKzU3ODMwIDExMjZlN2U4NWYxODA0NTg4NmExNTljMDhkMGMzZWQ1YmNlYjA5NmYgcHkzaworNTc4MzEgYjVmMDZlNTdhMjRmNDk4NWJlYWQyMjY4NzI2OTNjMjFlM2E2YjEzZiBweTNrCis1NzgzMiBmN2Y5NDQzNzQ0MzhjMDNjMzc2ODNmZDYyYzczYmZiMWNjOWExM2Q0IHJlbGVhc2UyNS1tYWludAorNTc4MzMgNzExMjUyNDAyYjJmNTY3M2E2ZjM3YWE5MDVmNzVlMjZjNmUyYjJmZSBsZWdhY3ktdHJ1bmsKKzU3ODM0IDc3MDAwZjI2NDFlZTkxNjk3YTIyMTVjZDM2YmMyY2YwNzVjOWNhZmQgcHkzaworNTc4MzUgNWMzMGYxNWE2Yjg3OTk3YmI5MzU0Mjk1ZDY3ZWE5NzVjOTAxOWU4NCBweTNrCis1NzgzNiAyMzYxYWFlYWZjYmNjODU5ZTZjZTVkMjE0NDk0MmQzNWIzNDdiNGNmIHB5M2sKKzU3ODM3IDA4MmNlZjNiZTI5YjMzOWYzYTU1ZGFiNzFiZGJkYTY5NTFmMDZiYjEgcHkzaworNTc4MzggMDZkYzQzMjFhNTZhMGIzOTllMTMwNzI3OTk4YjliMjY0YzZiZDQwNiBweTNrCis1NzgzOSBhN2Q1NDQwMzUzYzM1ZDQzOWY4YzNjMDgyZDI1ZjdiYmVkOWRmOTliIHB5M2sKKzU3ODQwIGZmYjEwMGJlMDMxMGRhNTg0ZjY4Zjc2M2Q0MDIwYWZhZmUwYzllODEgcHkzaworNTc4NDEgMWJiNjNhMzJhNmM4ZDkxYWY5NjZlYTJjOTM1OWRlNWI1ZDVhZTE3NiBweTNrCis1Nzg0MiA0MjMxNGQ3ZDYwODNkNGZlYWYzMDMxYjliODMxYTI4NjAxNmNhNWFhIHB5M2sKKzU3ODQzIGE2ZjNiYzIxNmMzNzBiYzY4YWU4MzBmODRjMDBjMThjMjFmM2ZlZjAgcHkzaworNTc4NDQgYjVlMGY3NzIxMDE0YTZjNGUxOWQ0YjEyZmUyOWU2NWI5ODg5NDE2ZCBweTNrCis1Nzg0NCBjZDNmNzgzY2QwOGExNjc4MWUyMzZjMGI5Y2I1NzE3ZDFkOTk1ZmE5IHB5M2sKKzU3ODQ2IDMzNWVmODZhOGM1Y2FjOThjODgxOTUyMmViZTEyZTA2NDNlMTQ2MWUgcHkzaworNTc4NDcgOWZmMTEyNmYwOTZjMmE3NTgyNzllM2ZlNmFiZjYxZTViNGMzMGQ4OSBweTNrCis1Nzg1MCA4YzFjMmQ1YmVkMzIyNmY1ZDAzNWFkN2MyYjYzM2YxYmI3NTExMzI3IHB5M2sKKzU3ODUxIDFkMGY0YjNlZWZhYjM3NzJjNDAwMzYyYTY3N2RiZWExMTk5YmQ5ZGMgcHkzaworNTc4NTIgMjBhYmRiOTE2Y2UzMjNlMTk1M2RiZWFjYWU5MGNjOWFmY2Q3NDk1YyBweTNrCis1Nzg1MyAyNzVmODk0ZGJmMTIxYzQwNDk2MGEzMDgzZjM0YjlkZDVmNTA5ZWRmIHB5M2sKKzU3ODU0IDljZmFkOWE1YzgzYjM4MGUyZGNlODRlZTRlN2ViNGUyNWU2YzY3MjEgbGVnYWN5LXRydW5rCis1Nzg1NSA5YWY5YzhhNzFiZmU4M2QyZmE4ODk1MWQzYjQ3YTExMGJhNGQ0MDMwIGxlZ2FjeS10cnVuaworNTc4NTYgNDdjODgwZTQ4YmY2YjJlOTJjZWQ0Yzc5OGRjOGQ4NTNhZWYwNGE3NiBsZWdhY3ktdHJ1bmsKKzU3ODU3IGU5YjY3MzZjMTYzMjA4NWI2ZDY2ZDEzODI3NmY0MzZlZGNjNTMyNDYgcHkzaworNTc4NTggNjZjNzUxZTgxYzkwZTZkNDQ5NjVhMzBhOTZmZDU3NGZmZTcyMmIxYiBweTNrCis1Nzg1OSA1MWFmYzFkNTY1ZjgzMmJmZDFkM2VkOGYzMmJmOGQ2NWVhMzY2MjA2IGxlZ2FjeS10cnVuaworNTc4NjAgYmQ5OWZlYWZmOTk1OGNiNjBiMTBhZmE1YmQxNzAwNGU0N2FiZmE5MyByZWxlYXNlMjUtbWFpbnQKKzU3ODYxIDYyMGRjYTY3NTEzN2ExNjRkMGQ0YTYyNWY0YTIwZjlkNzY1YTk3YTggcHkzaworNTc4NjIgZWUxYjNlYjdhMDEzNmRjYzEyNjkzM2I1ZDRlM2NhNzIyYjkyYzM3NiBweTNrCis1Nzg2MyAwYTBiODIyNjU3MDYyMjgyYjM4ZTczZmM2YjExNjVmMzg3ZmQyNjE1IHB5M2sKKzU3ODY1IGJlZDBmNTBlYzcwYjdmOWVmNDVhZTY4ZjY4MTFmOWFjOWNiZTEzZDggbGVnYWN5LXRydW5rCis1Nzg2NiBkODQyNDU3ZTRiMGUzOWZiMmIxMzJlMTRmMjJjZGVkY2E0NWZlNDA2IHB5M2sKKzU3ODY3IGJmM2M5NDIxM2Q1ZDFlMjQzNTkzN2UyYzg1ZWY4YThkMTQ4ODU3NzMgcHkzaworNTc4NjggNTgzZTQxZDEyOTRiNGE1M2EwMjBmN2JjN2EwMWNkNzY2Y2M0MjA5NSBweTNrCis1Nzg2OSBkYTI4NWQzYjA2NWFjMmFkMGFiMDk3ZjRlZDViODI3NmY2NmE4MmNlIHB5M2sKKzU3ODcwIDgwOGYzMmEwZDk5YzJlMDJjNGNjYjczOGFlZmUzODMzYjgxZmFlNmIgcHkzaworNTc4NzEgYjdiZmE3ODBhODgyOGVjNjY1ZDIwODM5NGQ3Zjk1NDQ4ZTYzZWM2MyBweTNrCis1Nzg3MiBmNGQyZWQ1MGRlODU5ZDkxZDk0MDRjNzIyZmEzNWIzMmFjYmM5NWZkIHB5M2sKKzU3ODczIGM0ZjYzYmI0ZDM4YTJjNDNmNjY1OTY5ZjdlYTc5NjY4OTFiNGI0MGQgcHkzaworNTc4NzUgYWNhY2U4ZWIwYmQ4MjZkMDMwYzkwYjU3MmUyMDQ5MTM3M2Q5NmI2ZCBweTNrCis1Nzg3NiA5ZWJhNjg5ZWNmMjg3ZGM3NzNlM2Y5NWI5NTVkYjEyOTQ3ZWMwNGYxIGxlZ2FjeS10cnVuaworNTc4NzcgMzIwYzZiZWY4ZDMwYzI5YTk2OWRlNDk5MGZiNzRjMjFjNWQ4NjY1OSBweTNrCis1Nzg3OCBjYWYwZDdlM2IyOWE1ZjZmOGRjN2JlZTE1MGMxNmU4OGY1MWY4Zjc0IGxlZ2FjeS10cnVuaworNTc4NzkgYWQzZDVhY2FjZjAzZGU3MGJmNTM4Y2U0Yzg3Yjk2ZWU3NGFmNDUyOSBsZWdhY3ktdHJ1bmsKKzU3ODgwIDliMTgzM2ZjNWM3YjIwN2IyY2M2MTA0NWVjZTZhZDY2YzQ4NGZjMWYgbGVnYWN5LXRydW5rCis1Nzg4MSBjZTNhMDcxMzUxZmNjZDUwZGE3N2VjZTk2NTNhODljN2FjMjA4NDQzIHB5M2sKKzU3ODgyIDE0ZTliODdiNzUzYjI3OWIzNzIyNTliZmIyODc5YTU1N2MxNzEyOGUgcHkzaworNTc4ODYgMzg2YzIyZDkzYWI2NWI2M2IwNWNhZDg5Mzk0MDAwNTlmNjc5ODdlYiBweTNrCis1Nzg4NyBkNDQyOTg0ZjI5MGI5YzI1ZTBkZTI4N2NkMTNlODkzZjUxNGQwZjU2IHB5M2sKKzU3ODg4IDNhYzIzN2JjYTVlZTUzNzljMzVmZWJmODFhNTRlYzRkYjRlZDVkYjUgcHkzaworNTc4ODkgZDg2NjcyYmRlNjQwNjU2NWFkZWVjNTMwZTE4MGU1ZjRhZDYzN2M1YiBsZWdhY3ktdHJ1bmsKKzU3ODkwIGVhMTg0NTEzNjYwYjVkMjgxNmE3ZmE3ODJkNWQyYzFiNDNmYTY2MWUgcHkzaworNTc4OTEgMjc5Yjk1NmEzYTk2MzVkZjFiNjQxYjg5ODZkODkxOTQxOGZmZjhkYiBweTNrCis1Nzg5MiAxNDc4Njg4ZjQ1NjU4N2E1MGVkZjU5OTE4NDczZDE1NDhlMjM1YmU4IGxlZ2FjeS10cnVuaworNTc4OTUgMzZmNTZhM2VmMzZmODA5MDFjMDY1MGJiMzk4ODNhZjUyNmI3NzUyYiBsZWdhY3ktdHJ1bmsKKzU3ODk2IGI3NTE2YTM0NmYwZjM5ODg0MzE0YzNiNjBkMTE0ZDAyNjRkMjdmMGQgbGVnYWN5LXRydW5rCis1NzkwMyAxYjBkMTU0NDRjYTVkNDI2ZGY4YTEwMWNhNGI5MTBhNjAzZmNmZmNkIHB5M2sKKzU3OTA0IGNlMGNiMmQ4NjkxOTlkZjhiNzJiNWQ4OTM1ZjhmNWNmMmI3YWUwYmQgbGVnYWN5LXRydW5rCis1NzkwNSAxYjViMDU0NmE3ZGQyZDljZDViMWIyOGM0YzZhMGY5ZmU1NjNjOTU5IHJlbGVhc2UyNS1tYWludAorNTc5MDYgNDYzYjM0MWE5ZDYzMWVjNGRmMjM4NDg3MjNmNmY4ZDE1YTFjYTJlOCBweTNrCis1NzkyMyA0OTAyNjcxZGQ2Nzg1Mjc4OWEwZTYxZmQyNzQwZmZkZWQxZTUyOWM0IHB5M2sKKzU3OTI1IDdjNmU3ZDE5ZmY1M2JjNGVkODI2ODY2MWFiYmM2MTA2MmMyMmUzN2EgbGVnYWN5LXRydW5rCis1NzkyNiBiNWY1MzVjZjEzNWZjOWRjNDIwZWM5MTM0ZmY5MThhOTIxOWI2Y2UwIHB5M2sKKzU3OTI3IGI1MWFjMmQyZDUzOGJkYTBmNmY1N2RkMWVlYTAzYzg4Y2U3MDEwMjIgcHkzaworNTc5MjggNTY0YWU1NmJkMmRhNjFjOGYyNDVlMzk5OWEwZmJjNTkxNzQ4YmQyNyBweTNrCis1NzkyOSBmNGZiNzRmNjM4MDY3ZjNkMGM0OTEzN2MzZjY0ZDMyNDQxNDQ0NjNkIHB5M2sKKzU3OTMxIGRkMGM2NTNiYTI5ZjIzMDhmMjYyYzY4ZjYzNThmOTc5Zjg0MzIzMzMgcHkzaworNTc5MzIgNTc4YjE3NDYxZjZiNmI5YWJhMTdiMDNkYzkyMTg1NGZmY2MxYjM3ZSBweTNrCis1NzkzMyAxMTk5M2JjYjBiYTNkMWQ5YTQ2YmE5MzkzNDk2YTAzMzlmYmRlMzgxIHB5M2sKKzU3OTM0IDQzNTk3Nzc4ZWYyY2JjNTEzMzRkYTFiOWIyZjU3ZGJkOTgwY2ExODggZGVjaW1hbC1icmFuY2gKKzU3OTM1IDdlYjk1NDM1MWE0ZmQ3ZGQ0NzdmMGI1MDZmYzRjY2YyNmVlOWZlM2UgcmVsZWFzZTI1LW1haW50Cis1NzkzNiBjNDhjZDZlMDZhY2E1MzlkMDUyOTA3Njc2MDQ1MzhiYzBmY2EwZjdiIGxlZ2FjeS10cnVuaworNTc5MzggYTlmYjY1YzhlYWNiMzgxZWUyNDhjMTU1M2I5M2M1MGVmN2JkZWJmNCBweTNrCis1NzkzOSA0OGVlNjM5YTc1ZGQ3MmZlZGFkMTk0YWI0M2VlNTgwNmFkNzBkNWZiIHB5M2sKKzU3OTQwIGUyNTNiMjA0NTI1MDY5ZmVlYzRmYzNiMjFiYTA2NjQyZjZmZjdiNzkgcHkzaworNTc5NDEgM2NiYjRmOTIyMGY0MTkyNWIxMDhmZmI3YWFhMzI0Y2Q3YTZhNWU3YSBweTNrCis1Nzk0NyBhMzExYWIyZmMxYTcwMDUxNTBhNGJmZjQ1MWFjZDAwN2M4MWNlM2NkIHB5M2sKKzU3OTQ4IDM0MzZkYWY0NTUxNmFlNzhjOGIyMmZmMzUwNTBkN2FiNDVlMjc5OWUgcHkzaworNTc5NDkgNDI4ZDkyMTgwNGZhNDNjZDhlNjFjNGM0MThiOGYzMjY2ZTg4MTRkNiBweTNrCis1Nzk1MCA2NTUwNzFiZjZjNDVjNmQ4NjViNDQzZDRhNWM5ZDExMzU2MmExYzJkIHB5M2sKKzU3OTUxIGExY2M5YjU4OWUyMjJlZjI5OWMxNWY3NjMxODYwNTk5NTRmMmE1NTkgcHkzaworNTc5NTIgYmJkNGQyOTZmNzRhY2U4ZjI4ZTJiNjk0ZjRhZDhmYmY4NjIxNDU4NiBweTNrCis1Nzk1MyA5NzhjNDJiNTM4ZDFjOWI0ZTkyODdjN2UxYzcxZWNiMTJiOGQ3OWFkIHB5M2sKKzU3OTU0IDIwNTJmNTRjZWQ0OTY2MGIyODlmNGMyOTE4OGZlOGU0MmU3NjRiMjUgbGVnYWN5LXRydW5rCis1Nzk1NiAwMjk0YmIyZTk1ZGUzMjliZjU5MDc5ZDYyNmIyYmViZjYzZWE2M2RkIHB5M2sKKzU3OTU3IDM4ZjNmOWVmMTkzZDJhYTQ0OTNjMjgxY2M0YzFjYjI0MzczYjUzMjYgcHkzaworNTc5NTggNDdkOTJkYjdjZDEwMjIyY2Q3ZmIxMjY3NzhiZTkxMmIzNzc3M2Q3NyBsZWdhY3ktdHJ1bmsKKzU3OTU5IGM5YWM1YjhlNGE4MTY5NWVkZmMxYWM4ZTQyMDgzNTE4MjkyOTMyMzggcHkzaworNTc5NjAgMWEwYzczNTgwNjY1ZWY2ZDQxNWJhMzY2YzliNTJjNTNjZWI2OTBlYiBsZWdhY3ktdHJ1bmsKKzU3OTYxIDZhMDQ4ZmYzMDQ4ODg3OGEyZmQyMzhkMmQ5MmUyNGUwNjJlZDA1YTYgbGVnYWN5LXRydW5rCis1Nzk2MiA0MjUxMjdjMWQxMTNjNGZhYWFmM2FiM2JlZjAwOWUxMmI4Nzk0OTkyIHJlbGVhc2UyNS1tYWludAorNTc5NjMgOGU3MGZkNmE3ZGNiMDk1MjNlZjA0ZWY0ZjFlNTY1ZDk2NWNkMzk3ZSBweTNrCis1Nzk2NiAwODFlMzYyMzI1ZGE2OGUzYjM3NzEzY2UyNTQwZjg4Y2MyNDJkNDEzIHB5M2sKKzU3OTY4IDM0YmM2MzhhYzcwNzZlYzE1YmExNzNmZmY1ZTVlOTU3ODYyOWUwMDEgcHkzaworNTc5NjkgNDlkNmZhOThkYzc4MTdmNTEwNWMwNzllZWU0NGQ1NmU3ZmRhYzM4MSBweTNrCis1Nzk3MCA3OTA0ZmJhZmFiM2RlNTA4NjU0ZmY5MTFjYjAzOTQ3N2UzOWEyYTIxIHB5M2sKKzU3OTcxIDM0ODQzNTBhNGY2OWRmMzc2NDIyNjRkMmIyY2IxOGRiYmRkZjVhNDUgcHkzaworNTc5NzIgODBmZmNjMTYxYjMwYzhmNjhiMjg5OThmNWJmNWM5YmFjOThjZGI1NiBsZWdhY3ktdHJ1bmsKKzU3OTczIDUzYjhmYzA3OTA3N2Y0OGJlYWIxYjhjMmNmY2MwZjM1OTM1OThmYjQgbGVnYWN5LXRydW5rCis1Nzk3NCBjNmIxMTIzZTBlNmNhNGJlMWQwNTIwZjAyNjIwYjE5NGYwNGU2MWI3IHB5M2sKKzU3OTc1IDI5NGUzNTQ1MmQyNTc5ODUyOGU0YjRiYTU2NjJjOTE1OGMzYmU3YzYgbGVnYWN5LXRydW5rCis1Nzk3NiBlOTQ2MDczZGVlMzhiMDY1ZDZhZGU3MDYwYzEwNjMyNDI4OGNiNzFmIHB5M2sKKzU3OTc3IGU2ZGU5YWRkN2MwNzViYzk3MGZjNWEyZGY0MmFiNmY0NDNmZGZjMWQgcmVsZWFzZTI1LW1haW50Cis1Nzk4MCBlMmI0ZmM5NjA4MzBmYzIyYmUxZjdhODQ1NzM5ZGRjMDQyOTRlMzg5IGxlZ2FjeS10cnVuaworNTc5ODIgNzkwODBjNDg4OWJjMjdlOTVkOGNjOWIyMWE3NmFiZGJlOGYyODNlNSBweTNrCis1Nzk4MyBjYzQ0NDI3NTQ1MTA1ZTMyM2ExMTczMmE4NWVhOTdiODg3ZGZlMjg4IHB5M2sKKzU3OTg0IGQzMTA0N2ExY2UxOTc2ODRmMmY1NTI5NmM4OTcxNWVlMmJmMjAyYmUgcmVsZWFzZTI1LW1haW50Cis1Nzk4NSA0NTMxMjIwZTUwYmE4YzE0ZmIxN2FhMDMzM2JiOTZiZjJlNzExOTRjIGxlZ2FjeS10cnVuaworNTc5ODYgNWZkMDQ1MWU3NDA2MDlmYzZhOWZiYTk3MGU1N2M1OTFlNGFiMmJiZSByZWxlYXNlMjUtbWFpbnQKKzU3OTg3IDdmYjljZDkxZTY0ODYxZDNkZTg5MzVlNmEzZGQ0Njg4YjJjYzc4M2UgbGVnYWN5LXRydW5rCis1Nzk4OCA3MWMzZTViNjllMTRlNzFkZTMzNDVkNTU1MDM3ODk3Mzg4YTM0ZjNlIHB5M2sKKzU3OTkwIDNjMmE0ZjZhY2NkNTZhZGQ0MzlmZTZhYzU2NDVkNGRlZGIwYmRjOWIgcmVsZWFzZTI1LW1haW50Cis1Nzk5MSA1OGFmNjY3NTAxOTg2MmRhYjQ0OWFiNjQ1OWY4ZjVhODljYmU5ZDk3IGxlZ2FjeS10cnVuaworNTc5OTIgMDhlMTA1NTRlNDMwMzgwNzAzNmE5MTg0OTM1OTg1OWUwZjM3YmEzNyBweTNrCis1Nzk5MyA5MWM5OTAxMWQwNjk0NGE2MTcwMTgzZWFiYzhmZGFmMmQwNDY4Y2E4IGxlZ2FjeS10cnVuaworNTc5OTUgNzJhOTZlNmE3YzJmYmM1YmI4ZGUxODRhZGVlYWIwYzYwMWRhM2JjOCBweTNrCis1Nzk5NyA4ODU4MTNjY2JmNDU0Y2MwZDkzZjU5NjZlMDRmMjE1YjA3ZDZkYzJhIHB5M2sKKzU3OTk4IGE0YmQ4YTQ4MDVhODAyNDc3MTZmMTgxYmY4ZWY3YTVlYWJiMGMyZjAgcHkzaworNTgwMDQgMGEzMWQxYzQ1YTg5MmJhOWQwZGQzZDUzMWVmZDcxN2M3NDlmMTNhYiBsZWdhY3ktdHJ1bmsKKzU4MDA1IDg4N2UxZmVhYmRiZGU2YWM5YTE2YTUwMjgxNzA2OGViMGUxMjBlOGYgcmVsZWFzZTI1LW1haW50Cis1ODAwNiBmZGM2NzVjYjVlOGFlYzAzNzg3NzhhZDk0NGZhMzk2MGZkZjdlZTYxIGxlZ2FjeS10cnVuaworNTgwMDcgYmU4ZjdkM2NkN2NjMTNiMmY2ZGY2ZDE5ZGRmNzhjZmY3NTBjYzJmYSBweTNrCis1ODAwOCBmY2IwMmNiOTZjYTIwMWMxNzI1NTczMTFiNzM1NTAzOGVjOGEwMjdlIHB5M2sKKzU4MDExIGI0YTJmMTBiMzlkMjBmMTIyMjU1N2I3MTgxYzBmYzYxNTUyOTcwODQgcHkzaworNTgwMTIgNzlkZGE1NjhmNDI1YTM5MDk4NGFjMjllMmYxNDBlM2E2MDY4M2VkNyBweTNrCis1ODAxMyBhYzNmYzJhZTRhYmNmZjBkZTFkMjIwN2JiZTBjNzdjZWU3MGY0OGY0IGxlZ2FjeS10cnVuaworNTgwMTYgYzc2YWNhNGUxMDBkZTExNjJmNDI3ZmQ3MWMxNjU0OWM3NGVjZTY0NiBweTNrCis1ODAxNyA3YzJmNWM2MmY4Y2EwZDkzNzMzZjY1MDI3ODM3OTc0OWUwNWRjODAxIHB5M2sKKzU4MDE4IGVkZmJjZjFmZjczNDA3NTEwZTZmZDYzN2Q1MDI2YjlmYWM5NzY0YTcgYmNhbm5vbi1vYmpjYXAKKzU4MDE5IGM5YzYxNjVmN2MwZDFlMDRjYzZiNzQ4ZDVjMmM0MzU4NThjZTg2YTcgYmNhbm5vbi1vYmpjYXAKKzU4MDIwIGU3ZmQxZmQ5MWM1M2ZhYjZkYTg1NGQyOGRlNmM4MDU0MzkxNDZmZGIgcmVsZWFzZTI1LW1haW50Cis1ODAyMSAyZGJhNWFjOGNlMTU5ZjFlMDdiYTJhNDM2ODFhMDVlNTM0ZmExMDAzIGxlZ2FjeS10cnVuaworNTgwMjIgYmEwOGY3ZjM2ZThlZDRjMDdmNzQzNGJjMTBlYjc5NjI1YzU3NjQxOSBsZWdhY3ktdHJ1bmsKKzU4MDIzIDU1NjU2OWFiM2Y5ZGQ4NTU1MGQ4ZjcxNjMxYWJjMWE5MjRmMTE5ZTAgbGVnYWN5LXRydW5rCis1ODAyNCAxNmNiODVmZWZjNWQwMjVlMzA0ZTUxYzJkNDRiZDVjNTI4NTA3MDc5IHJlbGVhc2UyNS1tYWludAorNTgwMjUgMWJjNGE4ZDU3YjMxMjk4NWY0ZjI5Y2Q1NTdlZDdlMjA0N2JjMWYyOCBweTNrCis1ODAyNiA3MDUyNTkzNTc0YmY0N2I0NDMzNjc3NTkwMDJmYjUwM2FlNjIwN2YyIHB5M2sKKzU4MDMxIDU3ZWFiYjA1MWNmZGNhY2VjOGY3N2E4YTU5ZjExNTU4OTA2YTMzYjcgbGVnYWN5LXRydW5rCis1ODAzMiAzYmMzZjEyY2FlMjhmMDJiMzU3MmFhMmJlN2ZjYjI1MDI1ZWYwN2U1IGxlZ2FjeS10cnVuaworNTgwMzMgODBkMmRhZWM2MWNjOGNhYzVhYWNkOWRkMGY1NjgyNWU0OWIyNTQ3NyBweTNrCis1ODAzNCAyODcxNmRkMTRiYzVmYTI3MTQyY2E1NzllY2FlN2I3OGYyOWFlNjk5IGxlZ2FjeS10cnVuaworNTgwMzUgN2RhZGQyMWZhODdjMTJiMDI5YTk1NmQ2OTAzZWJmM2FhZGU0Y2MwNiBsZWdhY3ktdHJ1bmsKKzU4MDM2IGY2Mjg1NzUzM2NiZWFhMmI5NGFhYWJiODAzMWI4NjVkYTgwZDlmYmMgbGVnYWN5LXRydW5rCis1ODAzNyA0YjIxMzRlNDczMGMyMmQ1ZDE3MjEyZTNhODVjNDRlZTcwMzUyNDA2IGxlZ2FjeS10cnVuaworNTgwMzggMDZmNjY4MmIyMTY2ZTMwN2MyYWExZjJhN2IxOThkZTY0YjhlOGI5MSBweTNrCis1ODAzOSBmYzQ3MGJiZThkMjQyYjg3YjI4MGU1ODM2MjFkYThiYTM2ZGMxMjUzIHB5M2sKKzU4MDQwIDFmOWVlZTA4YWIzNWU5NTdmZjU2NWZmYTUyYmIwMjZmNTIxMjliODYgcHkzaworNTgwNDEgNzU1ZmE1MTg3ZDFiYzEyZTlkNDBiOTUzMDljMzZjYzYwYzQxNTc3NCBweTNrCis1ODA0MiA4ODVmYjE3YzVlMzE5NjgyNWZmZTQ3NmZhYmM5M2Y4NmQ2MmEzYWZhIHB5M2sKKzU4MDQzIGZhNTVkNDJjOGQ5YzhkMmU1N2E2NzI2NmZjN2I4OTU1NzgwOWEyYzAgbGVnYWN5LXRydW5rCis1ODA0NCBiOGE4MjA2YzA4NDkyNTA1ZjNkZDgzNTgxN2Q0NTQxNzk4NTRhNmZkIHJlbGVhc2UyNS1tYWludAorNTgwNDUgYjM2N2Q2ZTQyMjMxNWE5MDRiZTQ1ZDg2ZjY3N2IyNWVhZDBmMDc0MyBkZWNpbWFsLWJyYW5jaAorNTgwNDYgMWY2MjI3MzY1YzM2ZGFiYWJhYTE4MThhNjNjNmFmMDcwZTdhZjRjNCBkZWNpbWFsLWJyYW5jaAorNTgwNDcgZTg1ZmFhMDIxOTFjNDdjOTUwYzE5NzJiMzM3ZTE3Zjg3MmUzMWFiMCBweTNrCis1ODA0OCAwODgxYWJhYjkzNzM4NDFlOGQ2NDdmMDBhYWFmZjBhZjkwZjk5MjJmIGRlY2ltYWwtYnJhbmNoCis1ODA0OSBmZmEwNzQ3YTdjYjdhMjA2MTQ3MDgzMjQ4ZmRiMzI4MDk1ZWRkZmY2IGxlZ2FjeS10cnVuaworNTgwNTMgMmFlNmRiMGJjN2ViY2JiYmM3MzEyZGI2ZTAzYWEwZjU1NzY0MjVkNyBweTNrCis1ODA1NCA4NzZiN2VmNDc3NWQ4ZmJiOWU0YTVkYTNmNDRmMDlhODMxODc5YzZiIHB5M2sKKzU4MDU4IGJhZWI2NmNlN2I1MWRkYjM2NzJjNDU1NmM3MzA0ZmJkYTM0ZGQ0Y2IgcHkzaworNTgwNTkgNzhmMWMzMjljOTgzNzEzYTQxZjMxYTg1YTQwZTg4MzZmYzRjMWYyMyBweTNrCis1ODA2MSBhMDllYTJjZmU3NmEzMDViMDM3MTI5YzFjZDgxNDk1ZDFmNjM3MmU2IGxlZ2FjeS10cnVuaworNTgwNjIgNzVjZDU0ODYzMjUwOWEyZWFjYTdmMGMzMGY3Mzg3YTZiNWIzZGVjNyBweTNrCis1ODA2MyA3NmMxY2M2NzBjNjMzZWZlZDk4MTdhYTAzMDkyYmI2MGVlMGY3NzNjIHB5M2sKKzU4MDY0IGExMWI0ODg1YjQ0NWYyNzgwY2I4MDYzNTAyZTY1YjI0YzFlMTU3OWUgbGVnYWN5LXRydW5rCis1ODA2NyBlOGFhNzI0ZGE5MDU4NGQzNDJiYzg3M2JmY2U1MDUyMGZhODRlMjdlIGxlZ2FjeS10cnVuaworNTgwNjggYjM1NWQyZGJhOWI2ZTI1YTM5YTdlMmY5Zjk1MmIyZWM3YTU3Njg2ZCBweTNrCis1ODA2OSA4MDdhZGMwMzA2NTM1MTUxZmM4MWYwMzYxZTk2ODVmODg3ZjJmYWFjIHB5M2sKKzU4MDcwIDNkMTQ5NjQ4OWY1ODUxYzYwZjVlNTcwOWU1NTdlYTc1NmQ4N2I3MjkgcHkzaworNTgwNzEgOTE3NmE1M2I0YjYyNTBlYWM4NTM2ZDBjZjBiMThhMWFkZjhlMGM0MCBweTNrCis1ODA3MiBmOGE1ZmJhMzVlYjM2YWYzNGE5YjAyZmYzOGNiMjkyOWM4ZDNiOTkwIHB5M2sKKzU4MDczIDc1YjI2NWMwOGM5MTBiZTVhODViYzQ0MzA4NWEyMTMzOGY0NDYxMzAgcHkzaworNTgwNzQgOWY3ZjMxNDcwMzFjMjY4NmRhMjZjZDQwYTEyMDlhYzA3NjYyM2YwNiBweTNrCis1ODA3NSA4NzUwNTJjMmI3YjM0NmZjZGZiM2M2NDNmZDBkYWY3YTUxZGQzMjg3IHB5M2sKKzU4MDc2IGIyN2QzNDkxNjJiZGVlZWQxNmRkYzM2ZTA4MzNjZmY1ZWM1NTJkZDkgcHkzaworNTgwNzcgMDkyODdmMjA1NWFiNWQ4ZGYxNjRlYzc5NGNiODNhYmJkYzM4ODAxOCBweTNrCis1ODA3OCA4N2Q0MTFlYmJhZTBlMjQyN2E5YWVjYWJiNTdkZGI4MjhmNGE3NjZjIHB5M2sKKzU4MDc5IDA5OWFiODIzYjg0YzRhMWVhNGFlMTBhNzVlMzE1OGJkNjc3MWU4YjAgcHkzaworNTgwODAgZmEwMmNkMmNjMzNiOGIzOTM1OGJmZTdjMDUzNmQ1MDUzZjYwNmQwMyBhbGV4LXB5M2sKKzU4MDgxIGE3ZGI5ZWJlZDI4YWQxMjllMGQ3YjBkMmE1ZjlkNjk5NjYwNGQyNzcgYWxleC1weTNrCis1ODA4MiBkOWZjOTI4ZGIxZmFmNTY0NGI1OGYwOWQ1N2Q0NjU2NGJmMzgxOTYzIGFsZXgtcHkzaworNTgwODMgYTY2ODk3NDE5YTM0ZWZhOTc4YWNhYTFjM2JlM2FkMmNmOGQxYTYwZCBhbGV4LXB5M2sKKzU4MDg0IDVhNTFkMWI2NTYyOTk1ZGExZTJhMTlhODFmOWNlYWJlY2JlYjgxNzkgbGVnYWN5LXRydW5rCis1ODA4NSBkMTU1MmMxNTBlOTE0ZDdiY2FjMjBiNmRhYjQyZmYyN2E4YmZjMGJjIHB5M2sKKzU4MDg2IDYwZmI5ODYxMmE5ZTdkYWNkNjJiNDVjNDYxYzk1ODc2NDljZjlkMDAgbGVnYWN5LXRydW5rCis1ODA4NyBjZWE2YTgwYmZmYjI5YjBmODNmMjhiZjVkNDZjNWIzZjcyMjBkNmNhIGxlZ2FjeS10cnVuaworNTgwODggMzRiNTAwMDFkZDJjMzU3NzI2YjlkNGQzZjA1OTM2NzI0ODliYTJmOCBsZWdhY3ktdHJ1bmsKKzU4MDg5IDg2MmFlNDNjZmIyYjJlMjE2Y2U4MGM2YWRjOTZlMjFkZDkwMDBiMTQgbGVnYWN5LXRydW5rCis1ODA5MCA3OGE3Yjk5ZDlmNDJhMGZjMzEzYmY0YWZhYjYxODJmMzRhYjY1OTIwIGxlZ2FjeS10cnVuaworNTgwOTEgY2VkMjRjY2M0OWRkNmJiMzdlNmM4MGVkNDU5OWU2ZjI5M2VjN2M0NyBsZWdhY3ktdHJ1bmsKKzU4MDkyIGFjMTk4ZmJkMzcwMDRmY2E4MTk0YzU1ZTAwNjhlNjM3NjQ2MThlNzAgcHkzaworNTgwOTMgMjgyZTJkMGMyOTM3MWMxMTM0MTNhYTcxN2ZjMGFjOTUwMWY3MWZkOCBweTNrCis1ODA5NCA1YmZmYjZjNzljMDYxMTI0MGNjNmNlMzlmYmEyNjExNTI4ZmIyN2Y5IHB5M2sKKzU4MDk1IDI2YWUyMTA5NjljMDVlN2JmNTRhMTQzMzdhMTkyNDc0OWFmYjY3M2QgcHkzaworNTgwOTYgNGE2Yzc4ODIyNmY1YzJmZDgxMTFhMDMzMDdlMzVjZDY3ZGI0OGY3MiBsZWdhY3ktdHJ1bmsKKzU4MDk3IDE5MzAyMGJmNTJkYzM1NmM5ZjY4YmU0YmU1NjczZTliN2MyZTA2NjggbGVnYWN5LXRydW5rCis1ODA5OCAxZGFkNThlMDBjM2E1MGFkN2Y5NjczZTA3MTYxNGJiZDRmMDIzYjQwIGxlZ2FjeS10cnVuaworNTgwOTkgMzM4MTdkYTUzZmQ3NDNhOTRlOTZhNzY1NDlmY2U4YTZkODFiNGRiNSBsZWdhY3ktdHJ1bmsKKzU4MTAwIDIwYTgwYjgzYTZjNTI2OTZmZmRhM2ZhYzM5MzkwNGVkMDQ3ZDZkMjMgbGVnYWN5LXRydW5rCis1ODEwMSBiM2E0YTE0ZDhhYzMxMjMxOTViOTA5MzcxNzdlY2EwYjFiNjdhY2IzIGxlZ2FjeS10cnVuaworNTgxMDIgZWJkZjJjMDljMTg5OTA4NzQyZmE5NDQ2NjJkNzczNDRhMGVhNTkwYSBsZWdhY3ktdHJ1bmsKKzU4MTAzIGJmZTE4YjkwN2Q4NzM1ZTUxYTk3NjM5Yzg5ZTQwYjM5OTRhOTZkZGQgbGVnYWN5LXRydW5rCis1ODEwNSAxOGQ1YWE1MTM1Y2EzYTUzM2RkYWIwMzM4ZmQ0M2JmY2Y2MzhkYjdmIHB5M2sKKzU4MTA2IDNmZjI0OThjZjU0OGE3NzE3MmE5Y2NjNDlmOTFjZGUwYWUwNGQ0ODYgbGVnYWN5LXRydW5rCis1ODEwNyBlODI4NzZhNjIxYjVmNDM4MjI0MGViNzI3MDNlY2FhODc4Njg3MzAxIHB5M2sKKzU4MTA4IGM1YjZhZTk0NDBiNWRmZjQxZDVlMmVhMTc3NGU4NzA5MDgxMzU0YTIgbGVnYWN5LXRydW5rCis1ODEwOSBlYWQ3YzNjNmJlMWI5YThkOTA5YWJiYjkwNzdiNzA5OTE5ZTlhNDExIHJlbGVhc2UyNS1tYWludAorNTgxMTAgMjc0ZmU0YmJlM2UwNzBkOGM0MjYyNzQ3NjE1NjcwM2UyOWZiMjcwNCBkZWNpbWFsLWJyYW5jaAorNTgxMTIgMjVlYTRlNjZmOWEwMDQ4MGM1MWI1MzQ3YWQ3MGY4ODE4MGEwNGE1NSBsZWdhY3ktdHJ1bmsKKzU4MTEzIDYzN2JmYjBjNWRhZTg1Y2ZiNzA0ZGYxZWZhNjc0MGQ0MTk0YWU0ZTggcHkzaworNTgxMTQgY2EwNmM0YTMwOTFlZTc0YjVjYTIyODYyYWM5M2YzZGU5NDQxOWQ1YSBsZWdhY3ktdHJ1bmsKKzU4MTE1IDU1NTNmOGI0ZGVjMGRlMDgwNzg0Y2MwMjdkMjhjMjQ0NDJhMTQ5ZTAgbGVnYWN5LXRydW5rCis1ODExNiBiNTc5NWRhN2RkMjYzYTUxNTEyNDIzZDZkYWZmMDg3MWE0NzViNWFhIHJlbGVhc2UyNS1tYWludAorNTgxMTcgMDg1ODg4NzZlNGE3NGNmNTgxMTU2NGU1YWY2YzQ0ZjAyNWI3MmRhYSBsZWdhY3ktdHJ1bmsKKzU4MTE4IDIwMzk4YjU1MjY2Yzk2YjVmMWZiMTY3ZmEzN2E3ZTkwN2FlOWM4MDggcmVsZWFzZTI1LW1haW50Cis1ODExOSA4NDBmZjU4ZDFlOWVmYTQ4ZjAzMzg3ZjQ2OTc0Mzc4OWEyNTE4ZWY1IGxlZ2FjeS10cnVuaworNTgxMjAgNzU2YTdiN2NkYzRlNWFkOTk2MGJmYzE0ZDUwNGJjY2Y5ZTM3OGVhMyByZWxlYXNlMjUtbWFpbnQKKzU4MTIxIDkwMDcxNTRhN2M0OTE1NzZmM2E4YWQ4ZmI0ZWY2ZTIzOWNjYTAyNWUgbGVnYWN5LXRydW5rCis1ODEyMiAwNmVmZTgzNTgwNGEyZDJhNmE1NDY1MGQ1YjliNWM0MDZiODc4OTJhIGxlZ2FjeS10cnVuaworNTgxMjMgYzM4ZTM1M2U4NzYxZTg0MDA0NmI2NDdjNjc2ZWRjZmY1YWE3YTNjNSByZWxlYXNlMjUtbWFpbnQKKzU4MTI0IDFlM2Y1N2U3M2UwNGMzYWYzNmU2YjZlZDA2YzQyZWFhOTk4NzhkZjkgcHkzaworNTgxMjUgYTBkMjAxMmZmNGMxNWI1ZWNjOWNjMTViMGI5NGJlNjM3NDUzNDc5NyBsZWdhY3ktdHJ1bmsKKzU4MTI2IDg0ZGM4NmYyMTE5NjRiNzM3NGUxMWM3ODE1Y2ZhZTA1MWUxOWUwN2EgcHkzaworNTgxMjcgNWFiNWE1YzczNjY4ZmRiOWJlNWQyY2VkNDJiODcyOGY4NmNkNTJhNCBweTNrCis1ODEzMSA5NDJmYTFjNGE5ZDBlZjAxMjY2ZDVmNzYzYWE4NGRmNWE1MDkyNTgyIHB5M2sKKzU4MTMyIGJmMmQ4Yjc5NDkzYWEyMDE3MmMyYTQwZjY4ODM1MzVlY2NiYWQyNmIgcHkzaworNTgxMzMgNzEwN2YzOWMyZjY2YzIwZTQzMGJhN2E1NTg5NGI0ZGE0YjAwYTVjOSBsZWdhY3ktdHJ1bmsKKzU4MTM0IDM5ZWJjZjBhOThiNGQxMzQ3ZTc3ZjZiZTI4OWJjNmQ5MjAwMzRhYmQgbGVnYWN5LXRydW5rCis1ODEzNSBlMTAwMzcxYTNmNjJkZTUzYWUyZjBhNWM4MjU1YjBkNjFhN2E1MDkyIGxlZ2FjeS10cnVuaworNTgxMzYgOTQ5YTM1YjI3ZDIwNDJkZmJkYzllMGQ1MDM0YmUwYjJiNDZhZWY2ZSBweTNrCis1ODEzNyBiMmRjZDc1N2E2YTM3NWVjZmVlMmE2NWVmNjY5Y2YwYWMwZDcyOWNhIGRlY2ltYWwtYnJhbmNoCis1ODEzOCA1MjdjNDRlZjI2Y2NkMmUzODNiMjFlZDM5NjljNzYxNzZmZDkyMGNkIGRlY2ltYWwtYnJhbmNoCis1ODEzOSBjNzlhMmYwYTcwMzQyZDQ0YzJmODc3Y2I3ZWRkMGQ4ZWY1MmViNDA1IGxlZ2FjeS10cnVuaworNTgxNDAgYzY3ODUxMTMwZmM0YzZlOWFjZmM4NWRhMjdjYmUzNDlmYjhiMmI5YiBkZWNpbWFsLWJyYW5jaAorNTgxNDEgZjE0ZmI3YjAzZGNhMWViNzY5NjU2MTIxM2I1MGZiZDA4NjA3NTFiNyBkZWNpbWFsLWJyYW5jaAorNTgxNDIgOThiYTVjMjIxMTk4NmNjMmFiOWZmNDlmMzA2N2RkMzdmYzQ4MmJiZiBkZWNpbWFsLWJyYW5jaAorNTgxNDMgNjNmMzE1NGM3MzFkMDIyY2JiMDk4OTkzOGVjNjY3ZDFjNmM4ZDM3MSBsZWdhY3ktdHJ1bmsKKzU4MTQ0IDYzYzk1NzYzYTQzYmU0ZTkxOTQ0ZGFmMTllYTBmMDM4ZTc3NWNiNjUgcmVsZWFzZTI1LW1haW50Cis1ODE0NSBjOGM3YTk0N2E2NDE5N2I4NmVmZTk0NDVkZDNmODg3MDkzZWViOWY0IGxlZ2FjeS10cnVuaworNTgxNDcgMmY4YjNlYTYyYTJlMWVhY2FiNGVkOTAyMzk4NzQwODliMTI5NDk0NCBsZWdhY3ktdHJ1bmsKKzU4MTQ4IGRmOGQzMmQ1ZTQ0NDEwZDY2YTEyZTI0M2Y4NmUxNjliZmJhMDQ1OWIgbGVnYWN5LXRydW5rCis1ODE0OSA2MmMzYzEwNGNhMDEyMDM5YjY5ZjdkOTQyNWI1OWYxNmE5Yzc5YTBkIGxlZ2FjeS10cnVuaworNTgxNTAgZWI5OGYyMjNkNmVhZWFkNDVmYjE4NzUzN2JiY2M3M2M0NGM2YWIzYiBsZWdhY3ktdHJ1bmsKKzU4MTUxIDhiNmRjNjZlMGViNTRlYzdhZjZmZWExNDZiMzFlYjM1NWQzMTA1ZWMgcmVsZWFzZTI1LW1haW50Cis1ODE1MiBlMGY1YWYxNGM5ODgzY2E0MDA1ZmJjYzAxMzA3MjA2OGVkZTZjMGE0IHJlbGVhc2UyNS1tYWludAorNTgxNTMgZTUxZWRkZTI4MDdmMWVhMTFlMWI3MzY5MGFhN2E0N2FmYzQ3ZWM3MCBweTNrCis1ODE1NCAwNWQ3YzNkMGI3N2EyMjhhZWU0YjgxZTNlNjIwZDJjZGY4NTQ5M2MzIGxlZ2FjeS10cnVuaworNTgxNTUgZmRmZjQ4Zjg3ZjM1ZTkwNzU3OGRmMGFlNzRhOWYzNWQyNzdkNTUyYSBsZWdhY3ktdHJ1bmsKKzU4MTU4IDEzMzkxZjlkMjBlYTQ5OTI2MmZjY2Y0NTdhZTY5MWZkYjk2YjU2MGEgcmVsZWFzZTI1LW1haW50Cis1ODE1OSBlMDAyMzM5NWU1MzkzMjhiOTgxOTBkMTc3YmJlYmJkZWY3ZTdkODcxIGxlZ2FjeS10cnVuaworNTgxNjAgNzNmMmM5ZDE2Y2Y0ZDc1YzRjZWE0ZDdmNjYyYzFjYjk1ZTU4ODExYyBsZWdhY3ktdHJ1bmsKKzU4MTY0IDkwNDE5NjVhOTJmMmVmNjZmMDVlZDA1MTg3NDZiNTRlMjVhYTEyNDQgbGVnYWN5LXRydW5rCis1ODE3MyAxYjY2ZTJhNTc5NmYxOGM5NDc1YTZmYzZjNDgwMGQ4MmUxZWM1YTFjIGxlZ2FjeS10cnVuaworNTgxNzUgMmU3ZGQyMDFlYTFkMmM3ZWE5ZTg2MjhhN2JlNTFhNDc1Y2VhZGUzNSBsZWdhY3ktdHJ1bmsKKzU4MTc2IDc2MzAyNDhiNTkzY2RmZDIwMzA3MjA3MmM3MGU1NTk1YzU1NGU2NzEgbGVnYWN5LXRydW5rCis1ODE3NyBhZTk4MjI5M2MxYWUwODljYjdmMTYzZDkzM2YxYzhhZDZiOTE2OGQ2IGxlZ2FjeS10cnVuaworNTgxNzggZTMxMzc5NWVhMTc0MmRkZmFlMWM1NmJjNmJmODAzMTc4YTJlNTM1MCByZWxlYXNlMjUtbWFpbnQKKzU4MTc5IDljYzEzMmM4NDYxZWM2NDU3MWY0MjI2Nzc3OTAwNjg0YTQ5OWFiMDkgcmVsZWFzZTI1LW1haW50Cis1ODE4MCBlMDFkZDJiZjA5OWE1YWRhMGE1NzIzMTNjODMxNWQzNzcxMThlZjQ2IGxlZ2FjeS10cnVuaworNTgxODEgODg5MGJlOTM4NmI3YWM0N2E2MDg3OWRjYmY1ZWU2NWQ3OWE5OGVmMyBsZWdhY3ktdHJ1bmsKKzU4MTgyIDRlNTdjMzZmNmQyZTM2NjIyODMyZTQzZmY5ODgyMTg2OTU1NzcyNmIgcHkzaworNTgxODMgNWQzNDI4ZmY3ZmZhMTgyM2RhZjIyMjUxMGQ5ZmMyMmY5Y2YwYTU3NyBsZWdhY3ktdHJ1bmsKKzU4MTg0IDM2MzIwM2Q3NWQ2OWYzZGY4NzM2OTZiZTA0YjM0MDVkYTgwNTgwYWEgcmVsZWFzZTI1LW1haW50Cis1ODE4NSBjNTQ5MGE5ZWFhZTJmN2VmYzNlYzNiMDM0MDU3NTNkM2U1OTY5NWIwIGxlZ2FjeS10cnVuaworNTgxODYgMmZkZmYwYjViZWI2YWI3YzZmMWM3OGM1MTdjNmU0NWI1OGFkNzEyMiBsZWdhY3ktdHJ1bmsKKzU4MTg3IDRlNTQzZmFlMGRlZDg5ZjhhMjEwYzg3NGRiOWJlNzU3NWJmOWZhNDUgcHkzaworNTgxODggNTMzNWY4OWRmMDgxYmFlNDg3YWQ0MjE4YTZhMDYwZTljYWVmZmUzNSBweTNrLWltcG9ydGxpYgorNTgxODkgZTM5NWE2MzZlZTRhN2NlZTYzZWU3OGY5MWMxNDk2Y2I3MjFiM2JlZiBweTNrLWltcG9ydGxpYgorNTgxOTAgNjQxZDRjYWM5NzU2ZDhhNzE3M2NhZDk3Y2VkNTA3ZWE5MWZjOWMxYSBweTNrLWltcG9ydGxpYgorNTgxOTEgYzFiY2I2MzM5MzU3NzRhMDk4ZmNlNWFjNTVhZTcwZTIyMTExMjA0ZSBweTNrLWltcG9ydGxpYgorNTgxOTIgNTk3NWE3MzE2YzA2NTMyMmU4OWU1YzFjMWM3NDczYzM4OGM4ZmVjOCBsZWdhY3ktdHJ1bmsKKzU4MTkzIGI5MjM2YTc1YTZlNWFlZDRhOTk3YzBjMTdiY2IyY2E2N2Y1ZTA5MjAgbGVnYWN5LXRydW5rCis1ODE5NCBlZjIyMzU0NmI0YmQ2ZGUzMzg4Y2RjZTYxMzhhNGE2OGM4NTI1ZmQ4IHB5M2sKKzU4MTk1IDZhMGVhMDY1YTk5YTJmOThlODEyMGU0MWNhYTI5NmIwMGNlNjdlNzEgcHkzaworNTgxOTYgZjE5MjQ0MmY0NGQ4MWQ4YTRjMmYxNjcxOWJlYmU2M2UzNGUzM2UyZSBweTNrCis1ODE5NyBiMjk1ODJiZGM5M2NkNmNjYmFlYWYxNDZkZGRkYzY3MjgxZDk3N2ZjIGxlZ2FjeS10cnVuaworNTgxOTggN2RkZDQwNTAzZTFhMWQwMDI2OTI5NmE0ZTVjMGZmY2MyM2U1N2NhMSBsZWdhY3ktdHJ1bmsKKzU4MTk5IDc1ZTZiZmEyZDRkMjIwZTdjMWFiZTZiY2VjYjI1YTk4YmQ2YTMyOGIgbGVnYWN5LXRydW5rCis1ODIwMCAzZWQyZjc3MTYzZmMzMGY4ZjkyN2JlZjRmY2VlOWY3MGExZTA3M2JiIHJlbGVhc2UyNS1tYWludAorNTgyMDEgZjJlZjhhZTBiYzE4NzUyOTU1NDcyZTgwZmZmZDg2M2ZiODAwYmQxMyBweTNrCis1ODIwMiAxYmFjMzg2YzE3Y2M2OWI5OWQzMzE1YjlmYWExNTA1MjZjOWZmNjE3IHB5M2sKKzU4MjAzIGViMzk2ZGU4MmMwMzBmYzcwYWZiZTFjNDc2NjIxYjBlN2U0MWE4MGQgcHkzaworNTgyMDQgOGUxM2QzZWFjYWNjYjRiZTdjYmFmNmVhYzc3YTMxMDk1YmVjZWQzNiBsZWdhY3ktdHJ1bmsKKzU4MjA1IDY5MjQ5Mzc3MWFlMzIyYzVkNjg4MDY1ODc1NTY1MmIxMTgzYzQ4YjQgcmVsZWFzZTI1LW1haW50Cis1ODIwNiBkMWZhODIwYjJkY2EwZDFlYWQ3NzU3MTNkYzNkMDI5ZGE0YTU3NDQzIGxlZ2FjeS10cnVuaworNTgyMDcgYzE5ZWM5NTE1YTMzNjc2MjViYTQ2MzgwN2FmYjIwYzVhOWU0ODJmOCBsZWdhY3ktdHJ1bmsKKzU4MjA4IDM1N2Y1NDAxNWEyZDNiYTEwY2RmMTMxYzgzNDM2Y2EzYjRlMjJmNWMgbGVnYWN5LXRydW5rCis1ODIwOSA0NGFhNGZmZGMxYWM5NmY4ODFiNjI3M2QyMzQ4YjBmNmM2NzM5MzMxIGxlZ2FjeS10cnVuaworNTgyMTAgODE0Nzg0NjVmZWYzYjE0NzM4NDU5ZmI3Zjg1MzMxZTVlZGFmY2I0NSBsZWdhY3ktdHJ1bmsKKzU4MjExIDM1N2NmMDdhMjNmZTM2NmJmNmFiNmRlYmI1NjEzYjk3MDQ4OGZkM2IgbGVnYWN5LXRydW5rCis1ODIxMyBiMDZiMTkxYjdjZmEwYjg3YWVlZmU4Y2ZkNDMyZTNjNzVlNTJhMzdhIHB5M2sKKzU4MjE0IGE1ZDM3Y2RjZDMxNjE3M2ExMzVkM2M3YjhlYzczMjJkZmUxNmI1MmUgcHkzaworNTgyMTUgNTIxYmY4N2NlYmJkOWUwOGFmZGNjMTdjNGVmZTAzODViOTA4Y2VjZSBweTNrLWltcG9ydGxpYgorNTgyMTYgZWYxNzIxODM2MTc4MmEwODE4NzRmZDI5OTI1OTk2MTQzNjBlN2Y2OSBsZWdhY3ktdHJ1bmsKKzU4MjE3IDQwOTA5MWIyOGM3ZTlkNjgzNDZiNDJjZDE4ODVhNGZlOWI1YzA4ODYgbGVnYWN5LXRydW5rCis1ODIxOCA3ZDE0YTMxODg4NTAxZGMxZDkwMTg3OTM1NjY0MGVhODVlMzJlZjZmIGxlZ2FjeS10cnVuaworNTgyMTkgZTFjMDlmYTZmYzBmNWQyNmZlMzJiMjk5MDg5Yjk5ZDc2ZTUzNzVkYSBsZWdhY3ktdHJ1bmsKKzU4MjIwIGRjMzlkZGRlYTMzMDA0NWU5NDU0NjYzMWM5MWI2N2Q3YmZiNzY5OGUgbGVnYWN5LXRydW5rCis1ODIyMSA0NmM0NjdkZWU2NTkzOGU3M2U5YjQzYTJkNzM3NGExOTVmMmYwZDMzIGxlZ2FjeS10cnVuaworNTgyMjIgMGM4ZmVjNzYxMTFjN2ZhZWM2MjFjYTg5YzRlZTk5NjA4ZTQyNDcwNyBweTNrCis1ODIyMyBkYTk1MTk3OTdjNjEwNThhMTlhYTBlYzI5ZTQ4Nzk5NzUxZTZiYmRhIHB5M2staW1wb3J0bGliCis1ODIyNCAxODM3Y2FlOTBlNTJlNTUwZmJhYzRlNTU2NDcxZWFlZjIxZmM3NDk2IHB5M2staW1wb3J0bGliCis1ODIyNSBlYzg0NmViYWIyZWZhMGM1NzUxNjFjMTBkYWY0YzhkN2YwODliODdiIGxlZ2FjeS10cnVuaworNTgyMjYgMGZmNDFiMTYzZjViYTFmNWQyODk5OTJkNmFhMTQ0Y2VhNWY1YjZjZSBweTNrCis1ODIyNyBmMzFkNDE1NTU0Y2RiZmM1YjU0OWRkMzc2ZTJhZmRkYTE5MDZiY2VkIHB5M2sKKzU4MjI4IGY2Y2JhYjc1OTI4ZjY4NjQ5YzQ1NmMwOWQxNjJlYjk3ZjBkNWJlNDMgcHkzay1pbXBvcnRsaWIKKzU4MjMwIDczZDI2Y2Q4ZTBiNTY0ZjEwODMyYjdiZWZiNTk5MmFkMzAyNjg0MjIgcHkzay1pbXBvcnRsaWIKKzU4MjMyIGZjMDMzNmY0NDdhZWFmMGI1ZmYzZWQ2NDRlYWJhNDJmMTUwZWEzMjggbGVnYWN5LXRydW5rCis1ODIzMyAzN2ZmYmI3YTE5NjI5MzBmNzJhNWQ0YjBmOTVlMjBlZjIyZGE2Y2I1IHB5M2staW1wb3J0bGliCis1ODIzNiAwNDc2YTJjYzU2NTg3NDQzY2Y0NmZkZWJjZjg4NTExMDYxMWM4OGZmIHB5M2sKKzU4MjM4IGNlZjJlZDgyOTJiNmNmZGJiODU0NjEyOTg1YTJhNmU5NTczMDQ1MzAgcHkzaworNTgyMzkgNWY3MzM4YTRkMWRkZGQyNjE4MWY2MGFkYWFhZDQ5NmM3MDFiZjg3NCBweTNrCis1ODI0MCA1NWE2NjMxNmM4OWVkMmNiMTYxNGMyN2E1NTYwZmJkNDViZGYxNDY2IHB5M2sKKzU4MjQxIGE0ZGUzMTIyMTU3ODQ3ZjMwOGRiZDYyYjNhMWIwMWYzNTE0ZmM1MGEgcHkzaworNTgyNDIgYjRlNjg4ZmQ2NjAyYTU2OTAxNTAzZTI2NDZhOTdlZDcyYWQ5ODE2NyBsZWdhY3ktdHJ1bmsKKzU4MjQzIDk4ZmY5YjJmZjc1NzY1MWQ1ZDJhNmZiMzYzOGUxMDU1YjA2NzJjOTcgcmVsZWFzZTI1LW1haW50Cis1ODI0NCBiOTNlZDA0M2YyNzIxYjViY2ZjZTBlMDAyZmE4NDhmODFjYTM2ZWVlIHJlbGVhc2UyNS1tYWludAorNTgyNDUgZTk4ZTExZDc3NjhjNjViNjgyMTgyNzJkZGFlM2EzZDUxMDFlY2E0MiBsZWdhY3ktdHJ1bmsKKzU4MjQ2IGI3MGVkYjVhNzY4ODQ5MWM3M2Y1NTg1MTViYzVhNzIyN2ZmZjgzY2YgcHkzaworNTgyNDcgNzczZTk3NmJhYjNhZmI1MTQ5ZDI0YTNlMWQxNGNmMTMxY2M1ZWY0ZSBsZWdhY3ktdHJ1bmsKKzU4MjQ5IDBiNjE0ZmQyZGMyYWUwNTZiNmUwOTAxYTY5NzA4MWY2NDljMDBjZTIgbGVnYWN5LXRydW5rCis1ODI1MCA5NDYzZGRhMTkxNjAxM2FmOGRjNzVhYTI4ZDQ0ZWY2Y2NmZDgwMTlhIGxlZ2FjeS10cnVuaworNTgyNTEgNTNmN2M5MmI0MDI0NzU1ZjYyMGQ5MzcxMjAxOTIwNzQ4N2NhODc4MyBsZWdhY3ktdHJ1bmsKKzU4MjUzIDJkYzBlNmUzYWQyMDBlNmFhZWMzY2E5OGZjYTQwNzQ0N2E3ODY3ZDkgcHkzaworNTgyNTQgZjgxZTM5YzQzNzNkYTU4M2RjNDUzMzhjNTNhNTFiOWI4ODhiYTgxZCBweTNrCis1ODI1NSA3OWIwZGIwMzU2ZDMxYzlhNjRhNWQ4OGNhYTRhYjUzYzQzOWNmNThlIHB5M2sKKzU4MjU2IDhkN2U5M2I0N2NhYmQ1M2Y3M2MzNzc4ZDhhNmY4ZjY4NDhkNTc1MjcgcHkzaworNTgyNjAgMWE3OWE0NTAwM2Y1ZGI5NDI2ODA5MGFjZTYzZGEwYWRjMTViODg3MCBweTNrLWltcG9ydGxpYgorNTgyNjggYjkwMjg2YWI4NjI5YWYwMjQxMzgxYzA0MGIzN2U4NDE3YmU5YzE1NSBsZWdhY3ktdHJ1bmsKKzU4MjY5IDg1NmY4ZWE5MjJkZjUxMjk0MmRiZmQ0M2JkMjkzYTIyMWFmYjljMjMgbGVnYWN5LXRydW5rCis1ODI3MCBmNTMwMDU5OGIxMWNhZDEzMTFlMzA4YjJjMDUxMWM3MWJiYWI1NTA3IGxlZ2FjeS10cnVuaworNTgyNzEgMTk0NGY3OWRiOGFkMzQ0ZmU1ZWQxZWU5NTc3OWQ1ZWU4NWU5NDc1YyBsZWdhY3ktdHJ1bmsKKzU4MjcyIDEzYmFhZGEyYTYwMTcxZTQyMmE0ODdiY2E5ZDFmMjY3ODRhZTAwNTkgbGVnYWN5LXRydW5rCis1ODI3NiBhN2M0OGFiODA5ZWM0ODgxYzkxYmNiODM0ZDc4ZTg3ZjkzNWNkNWU0IHB5M2sKKzU4Mjc4IDBmZjQ2ZWY5NDZiMTNkYzUyMzM1MzIyNjY3N2IyM2MxMGZkNzhkNTUgcHkzaworNTgyNzkgOWJjOTg1NTgyY2IyODU2NzBjMTk4YzQ3YWViNGNmMDdiNzRmZjk2OCBweTNrCis1ODI4MSA3ZmNkOTk0NWQxYmZlMzg0Nzc2MzdkYmVhODIyODUwOWRiM2RiZDI5IHB5M2sKKzU4MjgyIGU4OGY4M2MzYjI1ZThjOWU1MjNhYTJkNTBhZGI2ZWNhYTllOGIyMGYgcHkzaworNTgyODUgODY2NzE3MjY5Y2EzODIzNTEzNDRjOGI4OTM5OWQ1ZDMwOGY5MWQ0NyBweTNrLWltcG9ydGxpYgorNTgyODcgODgwYjBiMjJjMTVhOWY3MWJjZjJkZTY4MmMwMmEwMjEyZDdjNDRmMSBweTNrLWltcG9ydGxpYgorNTgyODggMzgxZWQ0MTAwM2U3NjdhZjI5ODRjZWE1Nzc0OGEyNzc1NjM2MjFkZCBsZWdhY3ktdHJ1bmsKKzU4Mjg5IDEwNmE3MWM1MTQ3NzUxYmJmZTA1NmJiMTI3OTRlZTIwZmJiODNkY2MgbGVnYWN5LXRydW5rCis1ODI5MyBhMWNhNGVhNDFlN2U5ZmQ1ODA5NzkyYmMzMjQ2MTUxMzgxMWNiNzg5IHB5M2sKKzU4Mjk0IDlkNmQ5YWM5NWFlMTc2MGQwMTAzYWY4YjRmN2JmNjFiMzAwMWY1OGQgbGVnYWN5LXRydW5rCis1ODI5NSA3OTQzMjYyZTVmYzQzNzY3ZDA0OTViZGM1OTUxZDJkYzAyZWFlYzk4IGxlZ2FjeS10cnVuaworNTgyOTkgYzliZjZlNzAzMDhlNzY0MWFjYmI3M2RhMWFjZGM4ZDM3NTdjNzZhNSBsZWdhY3ktdHJ1bmsKKzU4MzA0IGIxMmNmNDY3YjA1Y2MyZDM3NzJmMDQyNjlhYTgzNTk4MTJjMjI3NWEgbGVnYWN5LXRydW5rCis1ODMwNSAzMzNiMDUyZTlkYTlhMGEyMGNkY2IzYmY1ZjQ2ZjA5MjM3YjRiZTdlIGxlZ2FjeS10cnVuaworNTgzMDYgY2QyODFjMTI4MzZkYzRmMDg3YzU0YzA2NzQ1NzE4NzNlZTA4MzU5YyBsZWdhY3ktdHJ1bmsKKzU4MzA3IDczMmNhMjdhNjc4Y2ZlYzFlZjQ0ZTVjZWJkMmIzMjk2MTRmN2VkZDcgbGVnYWN5LXRydW5rCis1ODMwOCAxYjFhNTY1MmZlZDhmNzc2ZjhlNDFiNzBlM2M4ZTQ3ZmJkNGJhNzU1IGxlZ2FjeS10cnVuaworNTgzMDkgOWFlNGU4YTUzNDg2NjJkZWNhMDJkNmRmYWI1OWE4ZmQzYjc0MWE4ZiBsZWdhY3ktdHJ1bmsKKzU4MzEwIDE3NmI2MTMxYjBiYWY0MTAzZGZmNDEyODZjZWRiMjNjNjdlMGYzYjYgbGVnYWN5LXRydW5rCis1ODMxMSA2NWIzNjU0YzY3ZjYzMWM2N2U0MzYwYTBmNmZhZjk4ZWE1MDY1YWJhIGxlZ2FjeS10cnVuaworNTgzMjUgNWI1MjQ5ZGQxNmI0NTA3OWIxOGMwY2Y0ZWIwNzdiNmNjMDA2MjQzNCBsZWdhY3ktdHJ1bmsKKzU4MzI2IDczZjQ5NjU2NDIwYmNhNzcxNTcyZmEyMjE0ZmE2MzliMmUxMjU4OGIgbGVnYWN5LXRydW5rCis1ODMyNyBlODY5NGFiNTNhNWVjYTNmMjFmYTYzZDgwZDFkZWZjODlmY2FkYTc5IGxlZ2FjeS10cnVuaworNTgzMjggYzBhYmRkNTc5ZWIyNmFmZjQ4NzFmY2M1MmQ1MmY3NWI4ZWJkYjQyYiByZWxlYXNlMjUtbWFpbnQKKzU4MzI5IGYyYzlmMjRhMGY1YTg5ZDRkOGRlM2JhMjJhMzkyNTBhNjM4N2ExMTIgbGVnYWN5LXRydW5rCis1ODMzMCA5OTU2NzcyMTlhNjU1ODJhODQ4NmRjMjdmNDY0MjNhMTMwYjAzZWU2IGxlZ2FjeS10cnVuaworNTgzMzEgMjc1MTE1OTk5YjU4MTIxZmQzMWQ2YWQ5OGU4MTM3MjgyNTlkNWUyZSByZWxlYXNlMjUtbWFpbnQKKzU4MzMyIDFiZWE2ZmFmY2M1MDU3MTA5NjUzZjFlNWViMjYyZGE0ZTg3OTc5NjUgbGVnYWN5LXRydW5rCis1ODMzMyBhNTQzMDA2MzA4YmI5YmQ5NDBlYjViMThiYjlmYjk0OWY3OWI5NWZkIHJlbGVhc2UyNS1tYWludAorNTgzMzQgZTg0MTE5N2MxZDE3ZjU1ZjBiMjdlOWIzOTNmMzliMGI2NTVjNTllZCBsZWdhY3ktdHJ1bmsKKzU4MzM4IDE3YjA3MzcwYTc4MjkwMWFkZjE4MjY4ODg1YzA2NmIxNGEwYzRhMDQgbGVnYWN5LXRydW5rCis1ODM0MyA2OGZjMTA3ZGRiNTBiOThhZmQxMzY4MTZlOWI2YTViNjAzM2E2ZjRkIGxlZ2FjeS10cnVuaworNTgzNDQgZjczNTM1OTViN2ZhODE5Zjk2ZWNjZWM2MzMxZGFkMjMwOWZjOWI0YyBsZWdhY3ktdHJ1bmsKKzU4MzQ1IGFjZGFjNDFmNzEwOTcyYTkyMjUxNWU2MjhhNWU5M2NhY2QxYTBkMWIgcmVsZWFzZTI1LW1haW50Cis1ODM0NiBlZDQ5OWUzNDhhMTE5ZDI3N2RkZmUyMTg5MzYxNzc5Zjg0YjMwMDQzIHB5M2sKKzU4MzQ3IGFlMmE5OWZjNzNkYTZkMmJlYjFhMmJiMDlkMWUyZGEyMzc4NTliNzggcHkzaworNTgzNDggZjM2ZDBmNzA3N2ZjYmY1Zjk3NjNlMjc0Mzg2MTc0Yjc0MDI0MDNkOSBsZWdhY3ktdHJ1bmsKKzU4MzQ5IGFkMzY2ZTMxNmUzMDY0ZjNiNDY3ZmYzYTMzMTdiMmZkMzc1MjhiZWUgcmVsZWFzZTI1LW1haW50Cis1ODM1MCAzOWY0YzUwNmNkNzE4YjA0MzdmODBmYjAwMWNhZjU0ZTc3OTE5YTI3IHJlbGVhc2UyNS1tYWludAorNTgzNTEgM2NkMTQ2M2M5MzhkNmY3YzgzMjgwZjc5NmUzMTI0ZjY4ODk4NDhkOCBsZWdhY3ktdHJ1bmsKKzU4MzUyIDA3NDEzMGEwNzNiNjY4MmFlZDhlODFlZGVhYmUzNDJlZDk5MjU0Y2QgcHkzaworNTgzNTMgMjMxOTJiMWI3MWUyNzU1NGRlNmRmMzA2NDNkZWMxY2ZmOWVmODFmMiBweTNrCis1ODM1NSAxNGFkZGRhODMzNDQzMzc1ZTI5MWVkYzVhYTY3MTUyNGIzMDQyNTgzIHB5M2staW1wb3J0bGliCis1ODM1NiBmNWM3OWY0M2JiZjY5NTg2ZTJmYWFjYzA2YjlmMDg1YjlhYjNjOTM0IGFsZXgtcHkzaworNTgzNTcgYTNiYWQ2OTRjMjgzOWRhM2VmN2RmNWU1NTU4ZWVmYzc3OGJlMzM2NyBhbGV4LXB5M2sKKzU4MzU4IDk0ZTUzNmMzNjQ0OTNmYzhhYzYyNjI1YzVkYTdhNjljM2JhZjJiYzIgYWxleC1weTNrCis1ODM1OSAzMDRkMmNlYTEzNzgzNWI3NGQxMjk1MzEwNDJjYzFmOWI1N2Y1NzkzIGFsZXgtcHkzaworNTgzNjAgOGMxMGFhYzM3MDM3OTI1ZGNjYjdiYmRmYjRiNzE0YjYxYmZiM2ZmYiBweTNrCis1ODM2MiA4YmE1MzAwY2I0YjNiNWQ2YjM4MDcxYzc1NjE5NjVkZDQ1YWVlMzE2IHB5M2sKKzU4MzYzIDc2N2UwYzMxMGE2YWFmYTdmMDliY2RkN2I1N2JkZWM0NGJjYzU0OTEgcHkzaworNTgzNjQgZjYxNDNjNDExNzEzNTY1MDFlNDZhZWNhYTdkYWYwNGU5N2Y4NWQ4ZSBhbGV4LXB5M2sKKzU4MzY1IGY2MDYxYzcxYTRkMjM2YjZlOGQ1M2I4Y2MzN2Y3ZWJkNjE5MDI2ODMgYWxleC1weTNrCis1ODM2NiBmYWI0MDg5ZGFiOWY5ZjBkMTc1ZWRlOWI5NDA0YzcyOGRjMzYzNDQwIHB5M2sKKzU4MzY3IGRlNDFlOTc5YWViZWI4OThjYjY2YTlhMmRlNmEyNWVkNTFmNTE1OGMgcHkzaworNTgzNjggMDQ1OTUyZmYwOGY3NDNiMjMxNjM1MjljN2VlMmEzY2JkNTkwMTQ2NyBsZWdhY3ktdHJ1bmsKKzU4MzY5IDllNjAyMGJiMjM1MjJiMzFjOGU5NzJkMDBhNGMzNTQ1OTI5OThmNGQgbGVnYWN5LXRydW5rCis1ODM3MCA0ZGI1ZGFiN2YyMzU4OWRhYzc4NDQzZGFiNGVjYjQwZTBhYjdjZjIzIGxlZ2FjeS10cnVuaworNTgzNzEgZmY0YmJlNjgyM2ZjOWI5MzBhMmE5ZTFkMTk5MzcxNjgzZmZlMGQxNSBsZWdhY3ktdHJ1bmsKKzU4MzcyIDkxOTA0ZjNlN2JlMWJhNGU3OGUzMTE5N2U1YWEzMmNlZjI1MTU2Y2IgbGVnYWN5LXRydW5rCis1ODM3NSA2NjE0ZDQyZDdmMGEzMzVkOWIxZDQxZWEwNTFjYWQzOTU1NWVhMGQzIHB5M2sKKzU4Mzc2IDBiYTM4MTAwY2RhOTAzMjUxNWE3N2I4YjE5Y2MwZmE3MjYyMzMxZjIgbGVnYWN5LXRydW5rCis1ODM3NyA4YmQ5MTAwMzZjOTdmNzQwYjcwYjQ5YzExYThjOTk3YmFjOWM4Zjg4IGFsZXgtcHkzaworNTgzNzggNTcxM2IxNzZkZGI2OTg0ODdlZThkYjA2NGE1ZTEzNTE4OTNlOTFhYSBweTNrCis1ODM3OSAyN2FmNDUyNDlhODAzZDE1YzYwMWY3NzI0NDVhYThiMWE4ZGY5MTMzIGFsZXgtcHkzaworNTgzODAgNjU5ODdiMzhkZjJlMzU4Y2QzMzJjZWUyZDg0ZWY3MjAzNTE4ZjhkZSBsZWdhY3ktdHJ1bmsKKzU4MzgxIDk2NWU3MTU0MTc3YzY5NTA1OTM4MTA4NTYxMmJjZTk1NWY4YTUzYzUgbGVnYWN5LXRydW5rCis1ODM4MiBlYmYyYTVjZjEzZmJkZTFlNDVkZjBlMjZmMDg3ZjUxODJlZTVhOWFjIGxlZ2FjeS10cnVuaworNTgzODMgOThmNjE4MGI5YjMzMzBiMTAxZjRjMTA2MzYyMWRlNjA4M2ZlMGQ4YiBweTNrCis1ODM4NCAzMzAyMWU0MDNmM2M2NTlkYTMzYzcwNjFhYjRhNjZkMjcxMzhiNzNiIGxlZ2FjeS10cnVuaworNTgzODUgOWMzMDE1ZmM1YmY0NTk5NzAyZGE3YWNmMGE5M2VmMzlhNTNjMzY2NCBsZWdhY3ktdHJ1bmsKKzU4Mzg2IGM0OGY5MzgxZGRmMTMwZjY3NDdjMmI0ZmY4NWVjZmEwMWNhYjZjZDIgbGVnYWN5LXRydW5rCis1ODM4NyBkYzZlMmFkZjhkZDJhMzA2ZTk4NmI3ZjZmZjM1MzE2MGZiMjI2ODAwIHJlbGVhc2UyNS1tYWludAorNTgzODggYTFiNzY3NTdkNjJlZTBmYjA2MTc1NmIzM2Y0MTJhZjUxMGM3ZDZjMSAuLi9jdHlwZXMtYnJhbmNoCis1ODM4OSAyNGQxMTE4MDk0ODAwOTRiMzcxM2IwOWU0Yjc3MTcxNzI0NWE0ZDMyIC4uL2N0eXBlcy1icmFuY2gKKzU4MzkwIDQ3YzAyNzkxZWM2YjJjNmJmMTYwY2NiNzc2N2I3ZDM4Y2Q0MTgwNGEgcHkzaworNTgzOTIgNGE3MmZjNWRmYjc5YjNkMjBhNzdmNWFjYzEwZTMyY2ViNDI1ZmUzNiBweTNrCis1ODM5MyBjOTRkYTg0NzY1ZWUzMDI1MmFiODZmOGEwODgwMzM5MjdlOWI2MWEyIGN0eXBlcy1icmFuY2gKKzU4Mzk0IGZhOTNkZDRlMzRiYzIzMDQ2N2IxOTAwY2JjNjk2MzJmZWY4OTFlYjAgbGVnYWN5LXRydW5rCis1ODM5NSBiYzI1YmFmYTMzYjFmYzQ2ZjhkODFhMzcwZThhMmJlMmY5ODc3ZDE4IHB5M2sKKzU4Mzk2IDM3ZDgyNzBhYzhkOTYxYjQ4M2I4NTlmOGEwMDFkODgxNDQ5M2E1ZmMgbGVnYWN5LXRydW5rCis1ODM5NyAzNDBlNmZkNWQ3NWYwNTU1NTI4ODQ2YzQ2OGRmNzA4YzA5MzVjYWQzIHB5M2sKKzU4Mzk4IDQxNWIxYmFjZmVkN2FmMDBjZDM1NTY1YzBlMzNkMDBmNjA2M2JjZGIgcHkzaworNTgzOTkgOGM1ZTYwZGRhYTgyN2I1ZjAxNzM1MTVhM2IxMTE4ZmRkMWRkYWYyMiBsZWdhY3ktdHJ1bmsKKzU4NDAwIDhkNDBjNTM0OGNhOWQ5M2QwMmQ4ODBhYjc2ODFkNDFjNjJmZTRkNTYgcHkzaworNTg0MDEgZGE1MmI0Yzc3NmE0NTRmYTFhMGQ5MGE1NjMwYTNiZGM3NTEyYjI0NiBsZWdhY3ktdHJ1bmsKKzU4NDAyIDA2YmE0MmMyYzBkMDc0NmE1NmQ1ZjZjM2ZkMTkzMzYxNWYyYWRmOTUgcHkzaworNTg0MDMgZTVkNjg5M2RiYjM2ZWY0NGU5MDI4YmI2ZmMzMzViNjFlM2ExZDM5ZSBsZWdhY3ktdHJ1bmsKKzU4NDA0IDFkNTJlNzgzODQyZGExYTgwNjcxMDgxYTllODM3Yzk1OWQwMWE4YjQgbGVnYWN5LXRydW5rCis1ODQwNSA5ZjdkZTE4NDMxZmU5NTBkNTM5MWU1Nzc0ZWVkMWNkMDQ1ODEwOTk5IGN0eXBlcy1icmFuY2gKKzU4NDA2IGZmZWM0OWQzZDIxNTQ3MWZiZGZlYWQ3YjExZGU2YTJjY2Y4ZmJiYzUgY3R5cGVzLWJyYW5jaAorNTg0MDcgNGY5ZWNlYTgxNzdjYmVkOTdiOWE2YzE4ZjUyMTJmYWQ4YmRhMGM4NiBweTNrCis1ODQwOCBiNGQ4ZjcxNDU5ZTk0OWJjZDA1NzI1MzIxM2FjZDQwOTdhNmRmZTZhIHB5M2sKKzU4NDA5IDRjMTg5YzcxNDRiNzk0YjQ2N2IzNGFhYzhjZTQ1ZTZkMzE4ZjA3MzIgcHkzaworNTg0MTAgMmYzMGJmYjdjNzM4NWYzOGQwNDc3ZGJkOGU4NWNkZmE0NTlhMDgzMSBweTNrCis1ODQxMSBiOWQxOWQ1MWRlMzY5NzVhNWU3YzQ1NzA1ZDk2NTU2MGQ0MzExYzEzIHB5M2sKKzU4NDEyIDZlNjBmNjVmZjM2NDdjOWYxNzA4YzViNTRhZjY2Y2UxNjc2MzU5MDIgcHkzaworNTg0MTMgMmI3NDZmMjhiMzk5YTcxMDY5N2Q4YTMxMGFjMjBjYWFkNmU5MmQ4ZCBweTNrCis1ODQxNCA5OTM3MWJkMmNhOGY4N2Q5YjViYmM0Y2U0MGVlYzVjODMxN2I4NzY1IHB5M2sKKzU4NDE1IDAyNzEwYjg5NzAxZTA4Mzc1MzE3MTVjNjRkOTAxNTI4OGY3ZTlmNjYgbGVnYWN5LXRydW5rCis1ODQxNiAzOWM5YjU2MTI0NTFhMjcyNzM4NDYzYTgxMGFkMGMyNTZjYzBlNDk1IHB5M2staW1wb3J0bGliCis1ODQxNyAzOWNiNWQ5NmNlNzcwMDRlOTcyNzRhNDFlZjA5MDZhNmIyZmJlYmUwIHB5M2staW1wb3J0bGliCis1ODQxOCA4YzVhNDMzYTlkOTBlN2RhMzUxZWM1NTQxMzJjZjQ3NjFjZTQ4ODNkIHB5M2sKKzU4NDE5IGJmMTAxNDQ0OGM0MTdkOTQ4NTZlYjNjMTM3ZGNjMmMzY2Q0OWU0YmEgbGVnYWN5LXRydW5rCis1ODQyMCBiNjM3OGZhNmUxNjQ5MGE3MmE0ZjZmZDU2ZmRjYzRjMGRiNzAxMzdhIGxlZ2FjeS10cnVuaworNTg0MjEgY2E5YjA4ZTdkYzIzZGEwMTBiMGYxZDFhN2VmZmEyNGQ1YWQxNDg4YSBsZWdhY3ktdHJ1bmsKKzU4NDIyIGU0OWFlOTk4MDgwODIyZTM0NzFhOWQ0YWNhYjdiOTUwZjg2NmE2ZDMgbGVnYWN5LXRydW5rCis1ODQyMyAxNmQ0YjkwNDg1MWZlMGExYjE3NDYyNDZlN2YyMzZlNjY3ZTRlNjFhIGxlZ2FjeS10cnVuaworNTg0MjQgY2RhMGI2MjUyNzVhNjFiMWE2YjFkY2UyNGE0ZThjMjZmYWVjMjY1MSBsZWdhY3ktdHJ1bmsKKzU4NDI1IDliNmE0NzNjZmEyMjhiMmQ3MmU2NGZkNmM5YmMwZWIwNjMxM2ZhMDkgbGVnYWN5LXRydW5rCis1ODQyNiBhNDRlNGNjMzNmNWUwM2RjZWU1OWNkMjRjMzFjYWNkZDVlOTI2MWZlIHJlbGVhc2UyNS1tYWludAorNTg0MjcgYTI2MjE3OGMxYzBhZjQ1MmNjNzE5ZmYzZjhlZjI1MDkyZWQzZTJlOCByZWxlYXNlMjUtbWFpbnQKKzU4NDI5IGEzZmQ2ZTU5YmE4MzZlY2Y0NzEzODA4MDY2YzJlNzhjNjk4NTdjNzkgcHkzay1pbXBvcnRsaWIKKzU4NDMwIDgxZjU5OGE3NmY1OWZhMzQyODBlNjZhMDQ5NmMxMDhjODVkNzU4YTEgbGVnYWN5LXRydW5rCis1ODQzMSBmYzA0OGI3MmJmM2QwOGFiYTQ2ODQ5NjViYmQ3MzJlZTQ3OWQ5Zjk3IHJlbGVhc2UyNS1tYWludAorNTg0MzIgZDBiYTM5ZGU3YWI3ZTUwYzgxMDAzMGFmNjhkYjIwZGI0ZGYzMTI5ZCByZWxlYXNlMjUtbWFpbnQKKzU4NDMzIGZiMzEwYjg2MjBlY2UxZDE2NWM1NzYwNTUwYTlhY2QyNmUyNWQwZWQgbGVnYWN5LXRydW5rCis1ODQzNCA5NjAzMjIxYmJhOTAyYWIwMzJkMGViNDYwYzIyYzY3ZjIwMDBkYmZiIGxlZ2FjeS10cnVuaworNTg0MzUgMTA0ZDJmMjlmODg2YjhjOTJlYjc1NTMyMjRlYTVmNTFmMzJlYmJmNSByZWxlYXNlMjUtbWFpbnQKKzU4NDM4IDZhOTdmNzI2MGNhZDA5ODVmMzhmMGRlNGIyYmUxY2ZkYjc2ZmViN2YgcHkzaworNTg0MzkgODMzYjBlNzgxNTA2ZGFkMGEyOTI0NWNjM2FhNjcxYmVkMWZkYzM4NSBweTNrCis1ODQ0MSBmYjlkNTMwNmY0YzcyMjQwYmNmZDRkMjQzYzQyMzMyNmNlY2ExN2U5IHB5M2sKKzU4NDQyIDk5M2UyNGM3MjRiOGM3ZDMyYmNiOTNkMTVlYWNiMThmZTU1NDQxNGIgcHkzaworNTg0NDMgNGVhOTQ1Y2JiYjZkNDlkMWU0MTM1MTMyOGNiZTk0OWNlOGYwZTA1OSBweTNrCis1ODQ0NCA0ODNjYjQxYTU2OTFiYjU1NmFmNTIyOWQ3N2RjNTk1N2RkMmRmNjAzIHJlbGVhc2UyNS1tYWludAorNTg0NDUgMzU4NjYzMWQ4ZDIxYzU5MzY3NTgzZDdmMjc4YTZhYWE0NTg3Nzg5MCBsZWdhY3ktdHJ1bmsKKzU4NDQ2IDlmMDM2NjI2MGNmYmI0ODczNzA4ZWYxYTA1ZTI0MzM0ZDAzMWZiMTIgcHkzaworNTg0NDcgNjQ0ZTI4ZWE5YjIyYTQ2MGZmYzBjNTcyY2I0NjczYjM5YmEzOGY2OSBweTNrCis1ODQ0OCA4ZTcyZGFjZjdmM2E1MjdiMTI1YTY4OTg5NWFhMDdlY2FiODYxYjBlIHB5M2sKKzU4NDUwIDAyYTMzZGNhNDAwMWE1OGZjOWQ1YWVmMjc4MGQ0NmJmZjcxY2Y4NjYgbGVnYWN5LXRydW5rCis1ODQ1MSBjM2EyNTgyMGY1MTIzNWNkNGJlN2Q0MjYxZDlhNWJhY2U3MzdmOTFkIHJlbGVhc2UyNS1tYWludAorNTg0NTIgOTkyNWNlMWZkN2JlN2RmYjQ2Nzk4NDcxMzAyM2UxYWZhMTNmNjQ4MiBweTNrCis1ODQ1MyAzMDZkNTM5NWRmYTI5OTgwOTllNDk1M2Q1YTFmNWQ4Y2Y2N2U5ZjlkIGxlZ2FjeS10cnVuaworNTg0NTUgYWM2MmViMjY3MjA2ZTE1ZDM5OTQ0YjY2M2E3N2I2MDllOThkNjAyYSBweTNrCis1ODQ1NiAwMDE1NTcyZDExYmNmOTg2M2YxMTA2MjY4ZDIxYTJlYWJhYzc4MjA2IHB5M2sKKzU4NDU3IDlmYmY3MzNhMDYzOWJlYTc3ZDkxMDViZWMxYTg3ZGRiOTdhZWMyZWMgcHkzaworNTg0NTkgNGUwNWMyNGUyNmY4YTUzNGI2NGI2OWZlYTFhMzRkYTMwMDdlOGNhMyBsZWdhY3ktdHJ1bmsKKzU4NDYwIDdlMjdkNTBjODY3MjFlNjFmZmZmZTk3MDRiZDY2M2FlODM2N2I3Y2MgbGVnYWN5LXRydW5rCis1ODQ2MSBiNDAzNWQzNjY1YmI4MzAyMjBiMWMzNWQ1N2RmZmQ1NmNiZWY2MmY3IHB5M2sKKzU4NDYzIDEyNmQyZmI3MzViNWEyNjRjMDZhNWY4MTUzNmE2MzMxMjNkMjBhZTggcHkzaworNTg0NjQgNWFkNTc4YWU5ODczZTYxNzQ2NzgwODNkM2VhMzAzMzczYjIyN2UxMCBweTNrCis1ODQ2NSA5MDI5NGQ4MGEzYzViY2ZkZTZhMjM5OTA0NTIyMTUyYzJjYjk4NmVhIHB5M2sKKzU4NDY2IDE5MzE5ZTcwZmMzZWRiYjQ1YjJkMDA3MTYxYzFiM2ExZGUwOTQxODEgcHkzaworNTg0NjggYTVhNGI3ODZiYjIxNWI2YjBhOGJhOTQwYjg0NmMxMWUxNGNmNGQ2NyBsZWdhY3ktdHJ1bmsKKzU4NDcwIDIxOTVkMWYxNzk1ODNhZjZmMGMzZWU4NWZmNTk3Y2U2ZmJkZWRkNjcgcHkzaworNTg0NzEgNjk3NDAwZmNlN2M1YzA0YjViMTdkZThlYzcwZGU3ZGMyMjhjMzVlYSBsZWdhY3ktdHJ1bmsKKzU4NDcyIDUwNTk5YmJiMGM2NzIzOTkyY2U3NDI0N2FmZjZmYmU4OTA5ODg0OTQgcHkzaworNTg0ODEgMTZlMjM3ZWNlMjdkMzlkNDc4MTU0ZWM4ZWEwYjA1NjAyMTQ0Y2RlZCBweTNrLWltcG9ydGxpYgorNTg0ODUgYzllNjFkNjZmZjY1MTgyODFlYzY0MGQzZTMzNzBkNmRkZmFjNWM1NCBweTNrLWltcG9ydGxpYgorNTg0ODYgNmNiNjM5N2QyMjFhZjJhOGEzNzNkN2Y2ZWIzYTAzYzE5MjkzMmIzYyBweTNrCis1ODQ4OCBkNzEzODRjYjU2MDQ0ZGExOTkxYWZlZmYzYjdlNzZhMTZjNDdlYjRjIHB5M2staW1wb3J0bGliCis1ODQ5MSBlNzJhZDRkMjU2ZTg0MGJiN2Q5ODQ1MDU1MDczZjBiMzgwMGM5NzdjIHB5M2sKKzU4NDkzIDY5N2NjMzFhODNmNjVlOTIwZDJmMjIzZWNkY2RkYjkyNjg4ZWQyN2QgcHkzaworNTg0OTUgYWNlNDViMzYxZTg3M2UwZTE3ZDgyMjA5NmJiYTMzNDY1OTE0YTUxYiBweTNrCis1ODUwMCA0MDYwMDQ3YjNmMWQzYjIwY2YwMTQ4NzJkYTExMWI0MWM2ZjM5NTQ1IGxlZ2FjeS10cnVuaworNTg1MDYgMDQ2ZWRhYTE1NjZhN2I4ODVkNjhiNTg0YWNlY2NkYzgxYzYyYzIwYSBsZWdhY3ktdHJ1bmsKKzU4NTA3IDdjYTBiYzBhZDk2MDM1YmNjZDA1MWFiMjRiMjQ0N2U5MzJjZjg1NDEgbGVnYWN5LXRydW5rCis1ODUwOCAwMTZkYThlMmY5NGI4Y2MzODNjMGQ5NDQ2MTYxN2YxNWY5MmJjNzQzIGxlZ2FjeS10cnVuaworNTg1MDkgYzhlZTI2MDczMDUwM2U5OTFmMjFhYWY0ZTAwY2ZlYTE3OTZiNzI3YyBsZWdhY3ktdHJ1bmsKKzU4NTIyIDYxNTdlMGQyN2VlZjYxMzk0YWZkZDZjODNhZDRlZDFjODkwZjEwNGQgbGVnYWN5LXRydW5rCis1ODUzMCBkYTQ0MzM0ZWJlYTI0NTJjYjIzMDJiODM4ZWFmOGNlMDYxNmUxN2RkIGxlZ2FjeS10cnVuaworNTg1MzEgZjFmNzAxYzIyNGMxYzBiOWU0YmRkNjllNGI1ZWI2MDAyMWZiMGI3MiBsZWdhY3ktdHJ1bmsKKzU4NTMyIDI3YTRkMjI0ZWExYjkwOWFhY2I4YWNmODk4MGE5Yzk5NmViYTc5YWIgbGVnYWN5LXRydW5rCis1ODUzMyBiODMzNDZmM2JmYWZkYTRjM2YxNzE5MmEzMWY3ZTExNmIzZmZlZGUxIGxlZ2FjeS10cnVuaworNTg1MzQgMTQzYWNiYmZhZmQ3YzcwNmVjY2Y4NzljOTk2MDRhMjgyNjg2NWVhMSBsZWdhY3ktdHJ1bmsKKzU4NTM1IDZkYjdiYmU4ZjI3Y2U2NzI0MmU5NmYwMmI2N2EwZWJiNTRhYWVjMTMgcHkzaworNTg1MzYgZDIxNjVkYzFiMDhkZmMwNjUxOTZkZjRmOGQwZDI3NmRiMmFiMjlmOCByZWxlYXNlMjUtbWFpbnQKKzU4NTM3IGNjMTU4MzZiNjgwOGI5OThmYmVkOTQxOTZmNjc5MGViMjg3YTFjMGEgbGVnYWN5LXRydW5rCis1ODUzOCBlOWFmNzA2Mzg4ODhkZmQwZmQwOWMxYmYxZTc1MTgzOGYzOGI3ZDNhIGxlZ2FjeS10cnVuaworNTg1MzkgZjI2Nzc4NDMwNDcwMDRkZTYzNjAzNDJiZTZkZDliNjc3ZjgyYjE0MiBsZWdhY3ktdHJ1bmsKKzU4NTQwIDQ0NTA3YzRkZWMyYjVmMjg0NDg3Y2VkMzA2MTQ4MTVmODM0NzBiZjUgcHkzaworNTg1NDEgZDM3YzAwNTE0MDZlNjZlNDgzZjk1MmJhYzgyYTljNjQ0ZWIzZjA5NCByZWxlYXNlMjUtbWFpbnQKKzU4NTQyIDU0OGQwNmU5OGY1NjQ1Y2Y3MDY0NTA1NDI1ZWY1MDQ5YWQyNDJjOGIgbGVnYWN5LXRydW5rCis1ODU0MyBiYjVjYjg5ZWZlMThhZThjMGU0NTU0ZGJlN2QzMTA2MWZiNjAyOTZlIHJlbGVhc2UyNS1tYWludAorNTg1NDQgOTZhZjQxZTUwZTU2MTE3Y2Q2ZWFjN2U3ZTI2OTk3M2ZjMTYzZjRiMCBsZWdhY3ktdHJ1bmsKKzU4NTQ1IGJkZDkyNDI1MTgwZjRiZGYzM2JhYzJhNDIwZjJlNzU5MDVkYTU1YTIgbGVnYWN5LXRydW5rCis1ODU0NiAyMzIwY2Q0ZjY4YjU4YmE3ZmViMTI2ODk3MTEzY2ExOWJhMmY4Njc0IHJlbGVhc2UyNS1tYWludAorNTg1NDggOGEwMTY3NDE2MjIzMjA1OTI1ZGY1YzU0NjBiYjQyZTkxNTM2NjYzNiBsZWdhY3ktdHJ1bmsKKzU4NTUwIDgwNzQ0YzhkMzRkOGIxNGNjNTJjZjIxOTQwNjIwZmUxNTQzZjc4NmQgbGVnYWN5LXRydW5rCis1ODU1MSBkZDAzYWE3NDFmNTY4ODljNTEyNjI4ZjYyNmY1MWYxMmZmYmVjYTNkIHB5M2sKKzU4NTUyIGIxOGY2MDkyZjZlMDE3N2VkMjdlZDhlZjZjZjIzNjhiZDkzNWU4OGYgcHkzaworNTg1NTMgYTJiYjc2ZDExZDY2YjMxM2U0YTk1OGZkZTUwMjgxOTdjZmM3ODE0OSBweTNrCis1ODU1NCA1N2YzZjEyNmYzZjcwMTJjYjJjZWUxNDI3ODVlNGM1NzM0YjUzNzNhIHB5M2sKKzU4NTU1IDc1OTM0MzYwNThkZDUzMTAxNDJmZjQ1MmMwZTRiYjliZmZhMzRlZDIgcHkzaworNTg1NTYgZjBiY2MxMWNhOTY1NjU5ZDQzMWM5MjhjMmE3YmVhYjc4ODgxZmIyNSBweTNrCis1ODU1NyBkMzc4YWNkYzMwZWVkMjJjZThkNjhiNWJmNzhmYTVmMzk3NmQ0YmVmIHB5M2sKKzU4NTU5IDY1ZmUxOTU1MThjYjJmZDBiZmZhNDgxOTM3NzU3MmZiYmEzMjE4ZjIgbGVnYWN5LXRydW5rCis1ODU2MSBjYjk0ZWJkOWFmYTdhMWFjZjZmOTU1ZDRmZmZhYWUwN2VjMDBmZjYxIGxlZ2FjeS10cnVuaworNTg1NjIgYTIxNDBlYjVmYzZhY2VmMTRlOGRkYzk3OTc3NDFhZjE0YTc3NTdiMCBsZWdhY3ktdHJ1bmsKKzU4NTY0IDNjYjY3ODYyOGFmMzhlODU2Y2VlM2QzNmI4MDZjODNkZDEwYmU0YzcgbGVnYWN5LXRydW5rCis1ODU2NyAyNTJiOWQyMmNhNTU1YzcwYzJiOGYyMGMwNDRiYmQ2OWQ3NDBlMDQ2IGxlZ2FjeS10cnVuaworNTg1NjggZDcyNzljMzIxYmI3Y2M4ZTI0ZGMzY2E1ZmZhNTBiNzkzMDdhZGQ1MSBsZWdhY3ktdHJ1bmsKKzU4NTY5IDIwMWRkMDk0OTk5OTBlZjEyOWFhMGVlNWI0OGM2NmQ1YThjYjIyNjcgbGVnYWN5LXRydW5rCis1ODU3MCBjNGNjM2MyNDg5YTA0ODI5NTBiOTgxZDFmMTc4OThjNzJkYzhhYTVhIGxlZ2FjeS10cnVuaworNTg1NzEgODg5OTdmMDgyMTc0OWFkMGZlMTU2YzcxNTFiMjBmMzdhZDc3MDY1ZCBsZWdhY3ktdHJ1bmsKKzU4NTcyIDVlNDIxMTdmOWNiY2MwMTA1MzUwYjE0YjI5OTM0N2QwZWI1MDQ5NGQgbGVnYWN5LXRydW5rCis1ODU3MyAyNTI5NmVjMDJiMTljNTFmZDJkMWY0NmVlNGM1NzYwYWIxZjI0ZTA4IGxlZ2FjeS10cnVuaworNTg1NzQgNWNiYTE0YTU2NGZkZGZhZWQ4MDAxNmQ3NTYxZWJkMzAxZDRlMjNiMSBsZWdhY3ktdHJ1bmsKKzU4NTc1IDhmZTIyNjkzMWVlNzIxYWUzZGNhMTE1YWQ0Yzg3YTZmMjZjN2Q2ZjggcHkzaworNTg1NzYgN2MzNWE1OTMxNzU1ZmQ2NWQwMGY4MDkwOTRjNjEzYjEyNWE5MGE1MSBsZWdhY3ktdHJ1bmsKKzU4NTc3IDFiZjQ3NjIzOWYzOTU5ZTIwYmMwZDA1OTVkNTM3MzM5MzQyNjI1NjkgbGVnYWN5LXRydW5rCis1ODU3OCBhNTc2MzUxMDBkYzM5NDZiMTY2ZDJhZTdkODBjZWI1OGFkNGZiNmVmIGxlZ2FjeS10cnVuaworNTg1NzkgNDgyMjBkNjQ0YzhlMTA5YTJjMDEzYTQwMmY5ZTc3M2ZjMWI5NDcwOCBsZWdhY3ktdHJ1bmsKKzU4NTgwIGZhZjVkZTY5ZTk3NzFlNjc2NmEwODQwYWY1MjMxMDY3OGFhOTIwOTIgbGVnYWN5LXRydW5rCis1ODU4MSBjNWM5N2Q3YWU5MGNlOGY0ZjVlN2U0OGU3ZTY3MWEyNWZjZjhiMzk2IGxlZ2FjeS10cnVuaworNTg1ODIgNGY2NjJiYTA5ZjFmYmUzODYxZmNkNWFlODVjMGMzNTI2ZGUxYmUzMyBsZWdhY3ktdHJ1bmsKKzU4NTgzIDZkZjk4NTc0NGQ5Njc4ZmE4YjA4ZjI5YTlkYzlmODZhNDcyYTY5ODkgbGVnYWN5LXRydW5rCis1ODU4NCAwMzA1NjM2NWExYjY2MmNhZjI4NzZjNDNhZDNmZTVlOGJlNzM4YjIyIGxlZ2FjeS10cnVuaworNTg1ODcgMDA2N2E2YWI0ODU0ZTcxNjU3YTViYjkyYjcyYWUyNzE3ZjI2YTI2ZCBweTNrCis1ODU4OCA5MDIxMjViNTk0Y2M4OTlmODhlNzA1Nzk3OWVlOWQ5NDUwNWE1NTVkIGxlZ2FjeS10cnVuaworNTg1OTAgMTc4MjU4M2YxMTU4YmYzNTkwMzU5N2Y5NGJmZTI4ZGJlZWRlMjUwMSBweTNrCis1ODU5MiBhNThmMzE5MzdkYWY5Y2RjZGE3ZGM5M2VmZWI0MWE3MmVhZmY2Y2QxIHB5M2sKKzU4NTkzIGU4MmQ5YTg4ZWQ5ZTQyODUyYzVhZGVmMWQ0YzM1YWU3YTc4YTBhMzcgcHkzaworNTg1OTQgYjZhMjlhMGVhMzA3ZDM5MzlkZTc4NGUwOWViMjBiOTU3YmE4YjlmMiBsZWdhY3ktdHJ1bmsKKzU4NTk2IGIxMDU0NDgyN2FmNzBiMzU3MDNjMmE0ZmYzZmI0MzkzYTNiYTg3NzYgcHkzaworNTg1OTcgYTMyZTdlYzkzMzk0ZTE1MjVkZWNjZmFiMjFlOTY5ZmIxYzljMjI3ZSBweTNrCis1ODU5OCAwNDA4OGFiZjRlNGZkMDNlNzg4NTQ1NmZlMzhkMTdmYzNmODQ0YjZjIGxlZ2FjeS10cnVuaworNTg1OTkgNTNlZTg5NDNkMTY1OGRhYWMzYTgwZmY4MTk3MTc1MDI4OGJhZjRmYiByZWxlYXNlMjUtbWFpbnQKKzU4NjAwIGRjODFiY2ZjMzUxYWUwMWJhMzdlM2YzYjY3Nzc0NDA4N2ZhNzdjNjkgcmVsZWFzZTI1LW1haW50Cis1ODYwMSBlYjkwOGExOWMwNWEyNGUwODAzMDY2Yjg2NWM3NTM4YzhiM2RhMTUwIGxlZ2FjeS10cnVuaworNTg2MDIgOTVkOGM5MTNlOGJmMzYxMTJlYzc3YmE2MzZjNzExYmIxZGQxNDEzZCBweTNrCis1ODYwMyA5OTUyNmM0MDE0N2IxNDViNGJjMjBhMDE3OWRhYmRkYmI2Y2FiYWEwIHB5M2sKKzU4NjA3IGNkNWIzODNhMzk3ZTZlMjEyZGY2ZmZiNWQzMjZiZGQyYTJjYWNiMjYgcHkzaworNTg2MDkgNDQxZDYwOWQwOTZiNWRmNjYwM2UxNGY3NDhjYmE0Nzk2Mjg2MjQ5ZCBsZWdhY3ktdHJ1bmsKKzU4NjEwIDYzNGMzZDQwNDhlN2Q3ZDcwZTY1MTk2M2IxYzVkOGFlZGU4MWM5YzkgcHkzaworNTg2MTEgZjliNzk1NGQ3ODhkNjBjZDA0ZDUyNGVmMjI2ZjZmZGFkYTg3NGIxYiBjdHlwZXMtYnJhbmNoCis1ODYxMiBkYTgyMzBmYWYyYWViYmZhMzE4MGI0ODhhYWM1Mzg5YmIyZjJhZTYzIHB5M2sKKzU4NjEzIGM5ZjI4Njk3ZTE5OTViOTMwMGQyMDY2ZGI1NWVhYmU3NGUzMzk0YjcgcHkzaworNTg2MTQgNzk5MDRlODQxZGYzODBjNjBkYmFjNzBmODk4NmI0YzFiYTNlNGYwMCBjdHlwZXMtYnJhbmNoCis1ODYxNSAzNDc5MmI5ZTRiNDI4ZGViMTRkNjY5OWFmYzFiN2E0ZmQ4NDU0ZjM3IGN0eXBlcy1icmFuY2gKKzU4NjE3IDAwM2QzNTIxNWVmMmFjNjI2N2VmZDFjYTRjNWNhNWQ3MWZmOWQzZWUgcHkzaworNTg2MTggMGNhMWQyOWI4M2MyYjZkYTlkYWFlOWQyYjE3MGI4ZGE5OGRlZmNmYSBsZWdhY3ktdHJ1bmsKKzU4NjE5IDBjNzZlNTNjMWQ2NTJlMTM3ODgzZDE5YTc1ZjUxYzc5NjhkYmQ0OGUgcHkzaworNTg2MjAgYTA5ODNmNTVjOTU3NWNlY2ZmZTBkMDRmOTU2YWVlZTQxYzMyYmViMyBsZWdhY3ktdHJ1bmsKKzU4NjIxIGE3NjBjMWEwN2QyNmYwYThmMTE1NjVmN2JhM2U3Y2U4MmMxNzNiN2MgbGVnYWN5LXRydW5rCis1ODYyMiAzNmIyYWFmNDU3YjRhZTJiODQyY2RmMWVlZDE4NDc4M2FiNTYyYWMzIGxlZ2FjeS10cnVuaworNTg2MjMgMDhlZTI1NmE5YmQxMTkxNjQyMzAzMjZmYzI1NmE5OWY3N2ZhYmZlNyBsZWdhY3ktdHJ1bmsKKzU4NjI0IDc0MDhlMWFlOThjNGEwNzViY2E4YWJlY2E3YTc4NmExNzViNGEwM2IgbGVnYWN5LXRydW5rCis1ODYyNSA5NzRlNjRjYzA4M2RjYTkyNmNkNDMxYzM1MDU0NjQ5NTI2OTBlMWZiIHJlbGVhc2UyNS1tYWludAorNTg2MjggM2ExNGM5MDRkYTIzMjdjMDQxMGRkMjBhNDdiZmEzOWI0MjJhMzEyYiBsZWdhY3ktdHJ1bmsKKzU4NjI5IDczMjI3NWM0MDI2YjUyMGJhNGUxNjRlNmNkYzkwY2Q1MjMwMmU4MDAgcmVsZWFzZTI1LW1haW50Cis1ODYzMCBlNTNkOTVjM2MwYzRkYjE0ZTk5ZWJhM2FjYzE2OTlmMmI2NTY0ZTNlIHJlbGVhc2UyNC1tYWludAorNTg2MzkgM2RmNWM3NDYxNjAzY2ZhOWE1NWJlYzc5ZGQwZjE1N2NiNzRlNTgxNyBweTNrCis1ODY0MCAzM2VmYmZjMjhkMmIzNzliNTNjNTJkMjc3Y2MyZTZiNDdjZWZlZTlkIHB5M2sKKzU4NjQxIDU5MGExYmVlZWY4OWQxZGFjMWRjYjEyNGJlZjMzY2FjN2Q2YTM3YzggbGVnYWN5LXRydW5rCis1ODY0MiA3YzdiNDJmNjRmNDFkNDE4ZDgzNTg0ZDg3ZTY0YjJiYzdhYzk1MmM2IHB5M2sKKzU4NjQzIGJhYzM0M2FkZmZkOWQyNzMyZjdiYTQxZWM2ZGYxMmYzYmMzMjQzMDcgbGVnYWN5LXRydW5rCis1ODY0NSAzZTYzNDhiYzlhMjgzNzQ5MTA0OWViYzY5YTdiYjE4ZDg1MjkyMTE5IGxlZ2FjeS10cnVuaworNTg2NDYgOGRlYTU5OTc5YmEyZTk4OGJhZWQ1MmVlNWEyM2ZkYjc0OWE5NDNlYSBweTNrCis1ODY0NyA1N2MwZDA4ODQzMDY0ODU5ZWUxZGZjYjZhN2UxY2NlZGJhODdiYjJiIHJlbGVhc2UyNS1tYWludAorNTg2NDggNTFiYTEyZTBhMWQ1MGUyNzMzMTFlNzQ2ZTEyZTYyZTFlOGQ4NTBlMSBweTNrCis1ODY0OSA4ZmUyNGU1ZWVlZmZiOTlkM2JhY2M0OTViOWIwNjA3Yzk3OGUzYzNlIHB5M2sKKzU4NjUwIGQ2NjAxOGVkM2RlZDU5MGJhMWY2YzY2NzA1ZWMzYWIwMDQwMzdkZWMgcHkzaworNTg2NTEgOTAwZWYwZWIzZjk0YjUwMTI1MDFmNDAyOGY5YWVkZjExNTk2MDA5NSBsZWdhY3ktdHJ1bmsKKzU4NjUyIDM1ZGE5MTVhZGVkY2FjYzFhMDMyYThhODRiNWMxN2U3NTg3ZWYxNWYgbGVnYWN5LXRydW5rCis1ODY1MyA4MjM3NzJmMWQyYmU5MDhiNWM1NDkyZTBiNzRiMzhiYmRiOTkyYjllIGxlZ2FjeS10cnVuaworNTg2NTQgZmVkNjQzMTRkOTQ0OTgzZmIzZmZiODMzODA5NDk5YjdiYTcyMmI4NSByZWxlYXNlMjUtbWFpbnQKKzU4NjU1IDUzMDU3M2NkNGY3YTc3ODE2OGJkMDYxZGZhY2E4YTIwMGZlOTgyN2QgbGVnYWN5LXRydW5rCis1ODY1NiA1MDlhNzM2ZWJkYjk3MDYyMDY2YTFkYTU3MjBiNGZlOWIyOTMwZjY1IGxlZ2FjeS10cnVuaworNTg2NTcgYTg4MThmZmUyNGQxMWYxMDE0NWMzNTFlNGM2OGE5NWM3NTgwODkyNCBweTNrCis1ODY1OCA3MDc1ZDQ2NGQ5Mzg0NTNmYjM4NjQyOTQ2NzY1ZmFmNTFkYmUzYzllIHB5M2sKKzU4NjU5IDA2YmRiODQzOWUyOTg0YzI3NjQ3NjA4Mjk1MDAzOWU5YzhlMzE3YWIgcHkzaworNTg2NjAgZDNiZjAwOWZiYmE5OGQzYjdjMzIyZGNmMWVjZWFkZTYzYjg2OGY3ZiBsZWdhY3ktdHJ1bmsKKzU4NjYyIDRiYjZhMGMzNTNhYjY4NmU3NjU3MTJmMjViMTY0ZWQ4YWUxZDE5ZGYgcHkzaworNTg2NjMgNWIxMmIwYmQ4MTg4MGU5OGYwMGU5Yzk3MzYyYWZkYjU3ZTM1ZDRhMSBweTNrCis1ODY2NCAxOTk4ZWUwZWZmMmMxMjY2YTkwNzVmODBjMmZkMjE0MWEzNTc3YzQ4IHB5M2sKKzU4NjY1IDZhYjY0ZjZiNGMwMzE3ZTcxMGFiYTc5ZTA1YzFjOGE2ZmEzZWUzNzAgcHkzaworNTg2NzMgMDY1MzE4NDhhMzk0NmVhZTg5OTNhNGM0ZWRhYzA4OTExMGJkMGE5MCBweTNrCis1ODY3NCA2NGNlM2JmM2E2YTlkMzhkYzg1MGM2MWExZDI2N2UzYzI0YmVlNjNlIHB5M2sKKzU4Njc1IGZjNmJhMDg4YmQ3N2NhYjE4ZDA5MjhhNzI5ODcyZDkyOTE5MmQ0ZWUgbGVnYWN5LXRydW5rCis1ODY3NiA1YTRlOGJkYWRiODUwNGNiN2ExN2FkMTE3MmFlMGJjZWQxNTY0OTc5IHB5M2sKKzU4Njc3IDUwYTM0NzVkYjQ2NmI3ZDlkM2JhMWRkY2E3MjcxYTYwMzY1ZDhlMzAgcHkzaworNTg2NzggMDUwMmE4YzY0ZWYyMGVmZjhiYjg5YzU1NTc5Y2NkNmE3NDk0MTI2YiBweTNrCis1ODY3OSA3ZmI4NjgwMjNkNzVhZWY4NWZiMjFlMWUzNDIwYWU4MmFlZWMyNDc2IHB5M2stcGVwMzEzNworNTg2ODAgMTcyNmE0YzkxNmYwMTMxNDNkYjBjODA5ZWM2YmVkZjhjOTdhYTljZCBweTNrLXBlcDMxMzcKKzU4NjgxIGZhN2NkOGVhYjJkMmMzZTA3ZWJhYWQwM2QzYWEyOWM3ZmU2YTFiYTAgcHkzay1wZXAzMTM3Cis1ODY4MiBiMTAyYjgzNjFkNWU5M2NlZjU0MWY3OTllYWUzM2RhM2M5ZmQxMTBhIHB5M2sKKzU4NjgzIDA0MGY1MjJmZWUxMTIzOGYyMDZjOGEwNjFiMGRlYTdhZjZkMGY1NGYgcHkzaworNTg2ODQgMjNlNmVjMWI1ZjM1MGQ2ZjU2NTRjYTc5NmRlYmYzM2UxNDdjMWIwZCBweTNrCis1ODY4NSBmZmFhNmNlNGJmYjQ3ODliZWNmYjlmNmY3OTY3ZmE2YjMzNWQwOTI2IHB5M2sKKzU4Njg2IGQ0NmEzMWY1YzVkZjI2YjA5MTNkNjJlM2FkOGUzM2U2YjA2YjI5MzAgcHkzaworNTg2ODcgZmQ0ZDEwZTk5M2I3OWM0MzhlYjFiMmM2NzBlYTdkNTg1YTY1N2I2OSBweTNrCis1ODY4OCA5N2UyZTg5YzY1OTEyZjJkNjIyYTU1OTAzMzljZDMzYWE0NTBlYTc5IHB5M2stcGVwMzEzNworNTg2ODkgZTE4OWQzMmIzNzE5MDY4YmFmNmJmMjdlZGI2NDcwMjY2ZDRhMDI3YyBweTNrLXBlcDMxMzcKKzU4NjkwIDYxYmM4MmRmMzVmZjkwNmE3MzRkZDJiM2Y3YTVjODM1Y2EwODQ1MDIgcHkzay1wZXAzMTM3Cis1ODY5MSA1ZDBiZTk3ZjE3MDQwY2YzZTRiZGM3MGQxNDA3YjU0ODk3MjQ0OGM4IHB5M2stcGVwMzEzNworNTg2OTIgMmU5ZWRjZGRkZDQ0M2E1M2NkOGZkNWE3NTM2NWRhNjVmMzlmYzAzYyBweTNrLXBlcDMxMzcKKzU4NjkzIGRhY2M3MzBjNzI5OGQ1OTAyNjE5MTgzYzEyN2FiNjZiN2RkYjg4MWQgcHkzay1wZXAzMTM3Cis1ODY5NCA4ZmQzZGI2NTMzMThlYmVkZDgwNjg3YmYwZGM2NDRhZjRhZjI2ZDM5IHB5M2sKKzU4Njk1IGRjOTgxNjJlZjg0NGYwYTZmMWQyZGUwNjkwMTIyNjUxNTVhMDA4OTAgcHkzay1wZXAzMTM3Cis1ODY5NiBmNWJjOTQ4MWY4ODNmY2E2NGI5NWUzYWYyN2RmNjgxM2UyM2VkNzEwIGxlZ2FjeS10cnVuaworNTg2OTcgNjA4ZWU0YjgyMGFmYTcyMGNkYTM4MTNiZWU4ZmNiYTAyMWRhNDcyMyBsZWdhY3ktdHJ1bmsKKzU4Njk4IDM2NTkxM2Q3YWY3ZDY1ZDQ4YmRmNDhmNjdlMTMxMjY4NWZhYjdiMDcgbGVnYWN5LXRydW5rCis1ODY5OSA5MWZkNjUwNDVlZWU2OGFkYmY4NGVmZjNkNjYwNmQ2NDE5NzdjMDBhIHB5M2stcGVwMzEzNworNTg3MDAgNzM2MGMxMmJkODFkNDllZDhiYWM1MWQwZjc3NTkzYzIyNDYwOGU0MSBsZWdhY3ktdHJ1bmsKKzU4NzAxIDUxYTczNzQxMDVhYzRjM2Y1Y2I1MzE4NzAyOGZiYjBmNjliY2VlMTcgcHkzaworNTg3MDIgM2Y0NjdhY2NlY2QyZTQ2MmIwZDdiNWJkZjhlYTViNmRmY2E4OTU0MiBweTNrCis1ODcwMyAxMmQyMGZkZmVhNjJmNTE5NzRjNTA1Yzk5YjIyNTNiMjk2NmM1ZmY1IHB5M2stcGVwMzEzNworNTg3MDQgZDhmNzQ0MmI4Y2FlODY2ZmE4ZmE1MTJmOTczMDA4ODE5NDhmNTE3ZiBweTNrCis1ODcwNSBjMzQ3MjA3NzdjYjY2ZmYzNGFhNGJkZThlZGIwN2FkYzc0Njk3MGRiIHB5M2sKKzU4NzA2IDQwZTNhMmRiNWQ5ZTMwM2RkN2E5ZWUwNTQxODBjMTgwOWMyMzM1NGUgbGVnYWN5LXRydW5rCis1ODcwNyAzMjM1NDg3MGRmYjJiYjhmZjYxMjZhNmNjMWUzNWE1ZGY0MzczZTczIHB5M2stcGVwMzEzNworNTg3MDggNzZhNTVmN2I1MDYwMDc1MmExYTI3YTUxZmJkODc1M2E2NzMxNmYyYiBweTNrLXBlcDMxMzcKKzU4NzA5IDEyNGNiZjFhMGUzZWE0ODA1MTkyZTllODdjNWNlOGJlN2M1YjQ0N2UgbGVnYWN5LXRydW5rCis1ODcxMCBhNWRkMjc4YjBjMWZiYTQwZGQ3OWY0Y2M0NzhlNDYwNDg5NTRlYmFhIGxlZ2FjeS10cnVuaworNTg3MTEgMDBiMTM2YjdkYTg0NGQzMmRlODhkMmVhYTVkOTIxYTJmYTkzZGE4ZCBweTNrCis1ODcxMiA0N2M1NTNlYjc1ZDkxZDI2YmEyNjI3NTQ2M2RhOTkxZjAyNGI0MjRmIGN0eXBlcy1icmFuY2gKKzU4NzEzIDhmN2Y2Yzg1MGRiZDI2MmI2OWMyYjUzYzg0ZjIwOWNlMmU5YzZkNjUgcHkzay1wZXAzMTM3Cis1ODcxNCAyNmZlNzA4OWYxNGFmMWViZDIzN2RiZmU3MWRkYmQzNWQwMjNjZGQ4IHB5M2sKKzU4NzE1IDMzNDgwNzY1ZjY2OTMwMWZiNDIxZmI1MGExZDdkMzBjMDMzZmQxMTggbGVnYWN5LXRydW5rCis1ODcxNiBlMmZlNTg2MDRjYjFjZWJmNzhlYjQ2NGEwMGI3OTFmNDI1MTJiZjhkIGxlZ2FjeS10cnVuaworNTg3MTcgOGVkZWI1MTY4YmY1MTY2NDE0NjczZmQ4YjdhYjc4OTNjNWQ1YjEwZSBweTNrCis1ODcxOCBjMTIxNGJkNmVkMTYwNTJlOTllZTFlY2UwMTU0Njk4NTQzODhkMmZhIHB5M2sKKzU4NzE5IGU1MTBiNzE2YmQ4MGI3YTc2OWNmZDViOWJjMTM0NjZhYTZhODg5MjQgcHkzaworNTg3MjAgMDQ2ODI2ODc4MTdlYjk0NGFmMDk5NDhiNTdiMWNmMWRjYTg3NjVmNSBweTNrCis1ODcyMSBlOTE1MDZiNGI4NWY4YWJkMDNlZjhmNzUzYmE0NGJjZTgwMzA0ZTY1IHB5M2stcGVwMzEzNworNTg3MjggNzhhOGFlYTZjYjBhZTUxZTMyZDVmYzI2MmEwOWQ2M2Y1MDU0ZDJmNCBsZWdhY3ktdHJ1bmsKKzU4NzI5IGUyMzRkOTc2YjVkNDdiNzAwMTdjOWI0M2Y3MmY3N2Q1OTYzZTY0YjkgY3R5cGVzLWJyYW5jaAorNTg3MzAgZTNhMDFmNDkzZTk0ZjM1ODM4MDhhOWNkYjViNDYwYzA0NzJjZTU4MiBweTNrLXBlcDMxMzcKKzU4NzMxIDQzMWM1YTFhNjI5MDExMGQxMGVlOWEzMGNkYmQwMDBiNTRkMWFkYjIgbGVnYWN5LXRydW5rCis1ODczMiBiY2Y2MjllNDMwODI3ODNiMjUyZWUwYjM1MDExYWI4ZmUxMzE4ZDY4IHB5M2sKKzU4NzMzIDUyNTMxYjRmNTM1ZDNiOTQ5NjllYzA3NGY5MDllMDkyYTM5YTExMjYgcHkzaworNTg3MzQgZWViMzcyODE4OTU5NTU3ZjNmZmQ0Y2U4ODMwMDAxZDgzNmY3ZjRhZSBweTNrCis1ODczNSBmZTU3MGNkNWIxOGYxZjJkNjY3MGQ1N2I5NWM4YWQ0NTNiMTIwNjJjIHB5M2stcGVwMzEzNworNTg3MzYgZDQ3YTA0YTJlMGJiNDVlNWU5MTY3OTE1YTU0NWI2ZDJhOWM2YmI1MiBweTNrCis1ODczNyBlYTY1MDExMzQyODY4YzQyMmI5ZTcyOGU5OTU5OTY1MWI3MDRjNDEwIGxlZ2FjeS10cnVuaworNTg3MzggNjBkOTYxMjA0NjBiMWM0NzJlYTlkZjQzMjhmMDBlNWFlNzc0ODljMCByZWxlYXNlMjUtbWFpbnQKKzU4NzM5IGU0MjBhYTdmNTBjYjUwZGIzNTQ1NDhjOTJmOTAwZTk1MGQ4YjhmNDMgbGVnYWN5LXRydW5rCis1ODc0MCAzZTczOGU1MmEzY2ViMTFiYmVhNDU3MzQyNWY1Nzc3MDJhNjYwNmZiIHJlbGVhc2UyNS1tYWludAorNTg3NDEgYmVmODhkYTgyMWE0YzJjNzI2NjlhMGU0Y2Q1MzZmZDVmM2Y2ZTNlNyBweTNrLXBlcDMxMzcKKzU4NzQyIGEyZjllNmNlZjAyZjc4YTdhNmU0ODcwZmY1ODU1YjMyM2RiZGU5YjIgcHkzay1wZXAzMTM3Cis1ODc0NCBmYmM2ZmM2ZGM0ZmZlMWIyYzI3NDdjNzI1MGFiNTU4MTdhNzU5OGE4IHB5M2stcGVwMzEzNworNTg3NDUgNDMxYmM5MDk0MDE5NTVhMjEwM2NkMGNkNmRhZTNhNmEzOTNiMTkwNiBsZWdhY3ktdHJ1bmsKKzU4NzQ2IDAyMWNlZTE4OWY5ZTFhYmU1YjdjMjAwMDcyMjE5YzA1MDAzYzBmYTUgcmVsZWFzZTI1LW1haW50Cis1ODc0NyBmZDY4NWQ3ZTg1OWFhMTBkYmQ0ZDZlMzk0NWM4NDhiNzc5MjJhOTY5IHB5M2sKKzU4NzQ4IGY4N2RjNmEwNGNlYWJhMzA3YzIwOGJmMmMxYjAyY2JhMDg1ODg4OWUgcHkzaworNTg3NDkgM2U1ZWRmMTlkNWYwNWQyZmZhMWQwMjFkYTc4MTYxNWZkMmQ4NWYwNCBweTNrCis1ODc1MCBiZDJmOGJiMTFiY2MzNjI1MWIxZjBjNDQwYjU1Njg4NjE3OTk2NzE3IGxlZ2FjeS10cnVuaworNTg3NTEgZThkMDAzYjM4NzBmMDNlMTZkNTI5ZjhlM2UwZmZmODZkNDI1Zjk4MiBsZWdhY3ktdHJ1bmsKKzU4NzUyIDNkODY2NTc5MTE3ZGE3MDg5NzhkZDc5YTdkMmJlYTU5ZTBhOTgzNjEgcHkzaworNTg3NTMgNzlmNWNhOWVlMTU0OWMxNWY1NTg4Y2EzZTdkM2EwMTEzYjRjZDlmNiBsZWdhY3ktdHJ1bmsKKzU4NzU0IDBmNzQxYzg5ZDgwM2FhMzhlMjc3YWFmZDU0ZDlhMzZhZGJkM2MzZDkgcHkzaworNTg3NTUgYzAwZGM3NTg2NzE0M2U3OTg5MDNkYjkyZjVjNjE1ZDc1ZDg5ZDYyYiBweTNrCis1ODc1NiAyYjdhYWRiY2VhMzRmNjVlNDgzNTNhZTY5ZTlkOGM4NjI5MWZlYmYwIHB5M2sKKzU4NzU3IDE1N2JiMDI4OTJiYzk0ZjcwOWI0NmFlZTBkOGUzZTc3M2RlYWE0OGYgbGVnYWN5LXRydW5rCis1ODc1OCA1YTFjZDNjYTBiMzkxY2I3ZTQ1ZTQxZDZmNTU5YTU1YjUxZjIyYTIxIGxlZ2FjeS10cnVuaworNTg3NTkgYzE5YjY4NDk0MTFjMDMyNDA4NzYzOWU0YzA4Nzk1YjViYjlmNTQzNyBsZWdhY3ktdHJ1bmsKKzU4NzYwIGVkM2MyYWFhMDAyYTJhN2IwOWIxNDFmMGRiNzU2MWJmMzgyOWUyYmEgcmVsZWFzZTI1LW1haW50Cis1ODc2MSA5OWZmOWRjZjM3NjBlMTI4ZDk4OWY5N2QzYjRiOTlmZTI4MDc0MjY0IHB5M2sKKzU4NzYyIGU1ZWI5M2EwYTIwZTA1MjMxZTgyOGE1YTUyYTU1OTRmODBmNWI5OTIgcHkzaworNTg3NjMgMzI3NjdiNGI3OTIxYTljOWU5YzZjMmI5YzQzMmM1YWY2M2UzYmRjMiBweTNrLXBlcDMxMzcKKzU4NzY0IDhhYzI4NGI2NWUzN2UwNjhiOTgyYTcyMmUyYzQ0NTI1MGRlMDFjYWUgcHkzay1wZXAzMTM3Cis1ODc2NSA4YTQwYjgzMWFiNjg5OWM1MDQ5Mzk0NDc1OTdmNTc5NmI4ZWMyNzk5IGxlZ2FjeS10cnVuaworNTg3NjYgYzQ2MjRkYzBkNDFiMTA3YmJhYWUwOGQ5MzgwNDA4YmRiN2IwMzVmOSBsZWdhY3ktdHJ1bmsKKzU4NzY3IDU4OTBkNTEwYWE2Zjc0NjUxODkxZTQ2ZDk1ZWYxMTBlOWY4YWNmYjEgcHkzay1wZXAzMTM3Cis1ODc2OCA4OTQ4Zjg4MWU0MDNmYjJkNTFlNWE4Y2I0MDdkMjlkNTY3MTM3Y2UyIHB5M2stcGVwMzEzNworNTg3NjkgMjc0ODZhMDJhZTY0ZmQ1YTg5NTM3NTAyZTgxMjlhN2MwOTY1YzRmYiBweTNrLXBlcDMxMzcKKzU4NzcwIDg3MGY3MDU2MGM4ZjI4OTFiMzQwZTkxOGVkMDc5NDg0ZGZhYzNlZjEgcHkzay1wZXAzMTM3Cis1ODc3MSBiNmM4YTY2OWM3OWNhMzY2MDhmMDgxZjQwZmVhMjgzODM1NGNiZGM3IHB5M2stcGVwMzEzNworNTg3NzIgMDRiZTg5ZmE3NDk3YzI5ZTJhM2IwNTFjZmY2ODEyYjI2MzA5MTA0MiBweTNrLXBlcDMxMzcKKzU4NzczIGQ3YWI1YWYzYzk4ZWE5NjVlNTZmMGVmMDE0ODkyNDBiZDg5OTYxZDAgcHkzay1wZXAzMTM3Cis1ODc3NCBiNGU4ZTUyM2I4ODJlZTI2ZDZlMTc0ZjA0NWMzYTY1ZTJjZjE4ODI3IHB5M2sKKzU4Nzc1IDViM2JlNGFiMmZlMWQxMWUzM2FkYzFlNTAzNGQxZTQwOWQxY2QxOTUgcHkzay1wZXAzMTM3Cis1ODc3NyBlZTFiYzgzNGQ4YzZmY2Q2NTA1MzU2YzhmODBmNmY2ZDA3ODNlZGY3IGN0eXBlcy1icmFuY2gKKzU4Nzc4IGM1MGU2ZjkyNDE5ZjNhMDJmMGQxNzY5YzEwNGVkMDc3MmU2ZjY3ZTggY3R5cGVzLWJyYW5jaAorNTg3NzkgMTFjMmZkZTc4ZDU3NzFiNzNjMmFkOTNmYWNhNDc4OWVkMGQ3NzlhYSBweTNrLXBlcDMxMzcKKzU4NzgwIDg5MDRhMGJjYmY0ZmY5MjI2YWM5YzY4MWUzZTQ5NzYzMzRiMjMwZmMgcHkzay1wZXAzMTM3Cis1ODc4MSAyYTkzOTRmYjUwYWMxNmM3OTY3YjYwOWM1MWQ0NTFhZDhlOGM5OTBlIHB5M2stcGVwMzEzNworNTg3ODMgOGM3ZGFhYzBkNGIwYjNmNDQ2YmM3MmQ2YTgzZGIyNWIzM2Q5MTY4YiBweTNrLXBlcDMxMzcKKzU4Nzg0IDVmY2I2NjAyYzQ5YTljNWRjMTE0ZGM4ZjJlYjY3YTAxYTY0NGM1MDUgbGVnYWN5LXRydW5rCis1ODc4NSBhN2Y5NWUyYjkzNTgyNGNiMWJiY2ZiMjdjNGMyOWVlMjIwYmRkNzRmIGxlZ2FjeS10cnVuaworNTg3ODYgYjYxMDgzNzc0YzA4YzQwNTRjYzNjYzhhNjRkYWIyNjc4YzJjMDg2MCBweTNrLXBlcDMxMzcKKzU4Nzg3IDA2MDQ2ZDE3OTBiOTMwYjk0ZDUyOTllOWE5YjI4N2Q2ZDQzODkxOTIgcHkzay1wZXAzMTM3Cis1ODc4OCA5MGQ1ZDg0Y2EyN2Q4MWY0YmJhODlmZmQ0OTM3YWZiMzA2ZGEwY2MyIHB5M2stcGVwMzEzNworNTg3ODkgYTk4MjM0NDUxNjY5ZTg1MjMyMWUwZGYzMTc4ZjZhMmZkZjlmNDRiNSBweTNrLXBlcDMxMzcKKzU4NzkwIDZkYTkwYTVhZTlmYWEwMzhiYWYxOTUyNjNlZjBlMDkyYzU1YWYzZmYgcHkzay1wZXAzMTM3Cis1ODc5MSA0MjY0YTA3YTM5ZDEzZjY5NDY1OWRiMjY4Mzg1YTUyMjdlYjA4MmQ2IHB5M2stcGVwMzEzNworNTg3OTQgYTAzMGVjZWE0YzI0Yjc1Y2FhZjhlZGMzMThlOWExN2U1MjRiNGFkYiBweTNrLXBlcDMxMzcKKzU4Nzk1IDI4MDNlOTZjYzY0YWY4YzQxNzBjZDNkMDBmMDRhNzYwYmZmYTRhMGUgcHkzay1wZXAzMTM3Cis1ODc5NiA0YjM2MjM1NjhlNmNmODRjODliNTM2ODVkMjA5NWE3NTUzYjVhMjZiIGxlZ2FjeS10cnVuaworNTg4MDAgODQ0YWMyY2RmN2E4ZTA1OTExZGM0YTY5ZDJkODkxNWVjMzgyYTMyYiBweTNrLXBlcDMxMzcKKzU4ODAxIDdjNDNmNGRjYzdjN2MwYjg2MDllNDJhYjRjYTg3Yjk5ZDUyYjdlYTcgcHkzay1wZXAzMTM3Cis1ODgwMiA2ZDQ2ZmViMTY0YjZiZGY2N2NiODM1Y2YwYjBjMWQ0MGM1MzM0MzAyIHB5M2stcGVwMzEzNworNTg4MDMgMDBjOTg0NjY2MTViMjNhZjU2ODNlNmYwOWIzMTllZjMzM2I5MjQzMiBweTNrLXBlcDMxMzcKKzU4ODA0IDhiYjNlNzc2OGNhNjhmZjIzOGZmZGZkZjM2ZmU3MzM5MzI1MDFkYjAgcHkzay1wZXAzMTM3Cis1ODgwNSBhZDhjM2Y5ZWMxYjI5Nzg2MmE2NDNmOTAyOWY3OTQ1MzFhN2NiZDU0IHB5M2stcGVwMzEzNworNTg4MDYgN2VkYmYyNThjYWQwMDExOTMyMzk1ODI2YzBjYTUyZjZmMWQ2ODk1NSBweTNrLXBlcDMxMzcKKzU4ODA3IDExOWY4NDFiYjgxNjRhZGZiN2MwZGVjOTk3OWU0MTMzNThlNzMwOTMgcHkzay1wZXAzMTM3Cis1ODgwOCAwMTEzNWRkZDcyNmRjYTllMTlmZmI2NGNhYjFiZDU5MjEzODhkODQ5IHB5M2stcGVwMzEzNworNTg4MDkgMzU3NTI4NDg1NzQzNTMyODJjZWYyZmIxZDFiM2JiNjYzOGE0ZGI3MiBweTNrLXBlcDMxMzcKKzU4ODEwIGI0OWIzMTA3ZTQyMDMwY2JkZjdiZmViODA5NGE1OTc4YzFhZGJhMzIgcHkzay1wZXAzMTM3Cis1ODgxMSBhOGU3Y2I5ZTM3Yzk0NWQxMmYwMzgwNGU0ZDlhMTc0ZGUwMGU0ZmVlIHB5M2stcGVwMzEzNworNTg4MTIgMTQyZjI2OTQ3YWJhN2Q4NDIxMTliMDdjNDY2MWQ1YjdjMWE2NWRiNyBweTNrLXBlcDMxMzcKKzU4ODEzIGQyNDk1NDViYTc5MjI0YTRjYjI2OGZkNzJkZTRmNTk0OThiMTcwZDUgcHkzay1wZXAzMTM3Cis1ODgxNCBjZmNmYWQ4N2ViN2QwZjRlMTI3NmIxZGI3YjgwNDRkMTNlZTdjZjdhIHJlbGVhc2UyNS1tYWludAorNTg4MTUgNzA0ZTY3MTFlNTBkY2U1ZTYxYTI3NTAwZGQ3MjQzNWVhNzgwNGVlOCBweTNrCis1ODgxNiBkMmJhMmJmNGU3NmJhZGE1ODRhNWY1MTg2OTUzOTMwMjcwMTY0MzlhIHB5M2stcGVwMzEzNworNTg4MTcgMzE3YmE1M2NkNDVjOGU2ZWIwYmE1Zjc0MjQwOWU2ODI3OTBmNzNkNSBweTNrCis1ODgxOCA1MjJiYmI5MDA1YTQxN2RjZDE3ZWRhOWM2Mjc0ZGYxNWU2MTM0ZjQ3IHB5M2stcGVwMzEzNworNTg4MTkgMmZmMGU4MWU2OGZjYTIzMDZlNTBiN2EzYzc1N2ExMDMxN2Y1Mzg1MiBweTNrCis1ODgyMCBhNDE0MGEyOGMzZTc2MWNiMjNmN2VjMTVkMWVlNWI5NDY2YmU5ZTNkIHB5M2stcGVwMzEzNworNTg4MjEgODdkMzhmNDJkMTYzNDQwY2E0MmM0NmJmNjhkNWNmMGY1ZDNhNWM1ZiBweTNrLXBlcDMxMzcKKzU4ODIyIDZlNDkxZDEyNzY1YzVmN2I0Y2YyNTFiMjFiNTM0ZjQ5YWQ2M2Y5ZmMgbGVnYWN5LXRydW5rCis1ODgyMyA0NDkwZjMzNWJiY2QzOGJiNzIwZjY5ODI4NDliNzU0ZTJjOGEzYTA3IHB5M2stcGVwMzEzNworNTg4MjQgNmFkYzk5YTY4ODhmZGVkMGQyN2MzNTUwYzlmZGFmZGY4ZmRlYTkwNiBweTNrCis1ODgyNSA4ZmQ2OTRkMGY5MDJiODY0N2I0Y2MwZTAzNGQ1MjliM2I0NDQ4ZTEzIHB5M2stcGVwMzEzNworNTg4MjYgMGM1MTcxNzljYjhjNDA1YzU2ODAxYzZiOGFiYmZhZmMzZWNhYzJhOCBweTNrLXBlcDMxMzcKKzU4ODI3IDkyMWFmN2YyNzYwMGY3YzQ5NDM5Y2U2YTA1MmU3NDhkMWM3NmEyNTkgcHkzay1wZXAzMTM3Cis1ODgyOCA5ZGUwNzI3NWIwMDg3YTY2ZWU2NjIzYTkxZjljNzc4ZTc2YjhhNDdiIHB5M2stcGVwMzEzNworNTg4MjkgZmQxYzEwZDIxYzllZTQzM2Q1MWU4MjU4NTk3MDk3NTM2NTk5ZDFjMSBweTNrLXBlcDMxMzcKKzU4ODMwIDNjYmM3OGMzYTQwMzU0OTVlNGIyZjA0NzM4N2RiOGQ3N2Q0OTQzMWEgcHkzay1wZXAzMTM3Cis1ODgzMSBmNjFhMGVlNzQ3NmZhYzYxMjM0YmVhMDczMGNjODZiNGI2NzY3NGRiIHB5M2stcGVwMzEzNworNTg4MzIgNDhlNzc5MjI0MTFkOWM1YTU4Y2NkYzVhMzQzM2NiOWE0NjBlNDI2NiBweTNrLXBlcDMxMzcKKzU4ODMzIGIzZjg2YzQxZDBhM2EwNzI1Yzg4YzI0MzE4MzU3ZDM2YWViMWMwNGYgcHkzay1wZXAzMTM3Cis1ODgzNCBmN2I0NTI5ZDA5ODQyYTNkNmRhOTE4MzM3ZGY0MDFhYmM1YTE2MzdlIHB5M2stcGVwMzEzNworNTg4MzUgMTRkZmUyZjEzNTgyMzI5OWU3ODkwYTM1NjJjOGNhZGIwNjI0MzEzOCBweTNrLXBlcDMxMzcKKzU4ODM2IGU5MDA2NWUxNzIxMjAyMDc4NmIyNTFkMzZjNGFlNDEwYmY0YjJkNzYgcHkzaworNTg4MzcgNjU4Y2QzNGE4YzVkYmUxOTY4Y2M4ZTdhY2FiZmM5MjA1N2Q2MjM4NyBweTNrCis1ODgzOCBkZTNiNjNmOGIxN2I2Y2RlNjRhMWYxMDE3NDE1ZWIxOTJhOWNlYzljIHB5M2sKKzU4ODM5IDAzYzNhNTQwNzJkOTFlZjQzMWJiYzU3ODEyNjQwMzI1NDllMjhhN2YgcHkzay1wZXAzMTM3Cis1ODg0MCAxODkxMjU3ZGZkMTEzZGE2ODIyNDE3M2JmMzdiNjcxOTU4MWUzYTU3IGxlZ2FjeS10cnVuaworNTg4NDEgMDlmOTIyYzRmODg3MjVlNmFkN2U5NTkxNGY4ZjZhYWE0ZGU3YjZiOCByZWxlYXNlMjUtbWFpbnQKKzU4ODQyIGVmMWQzZTg3Mjk2ZjM2NTg5MTA1OTc3Y2VmMjRlN2RlOWRmODcxNTAgcHkzay1wZXAzMTM3Cis1ODg0MyBmMWZkZDZiNzAxNWYwMDVjNTJhZjExZjIyY2U4OTMyMmYyODBhMmU4IHB5M2stcGVwMzEzNworNTg4NDQgNTg1YWQ3NzEzZWZlZmVlNDIwYTI2NTIxNzk1NzA0ODkxYjg3MGI5MCBsZWdhY3ktdHJ1bmsKKzU4ODQ1IDQ0N2QyYTQ1MDFjYjcyYTY1YzFlNzhmNDc2OGJkYjY4OWM2YzFhZDMgcHkzay1wZXAzMTM3Cis1ODg0NiA1MDQyM2Y0NGU2ZGNmZmM1ZDIxYjE3MDY3Yjc4NGQ2ZDliMjJkMDNkIHB5M2stcGVwMzEzNworNTg4NDcgNzFmODQzNTc1MWJhYTVjNzFmZTA4M2VjZDMzZDk1ODdiMjk4NTliMCBweTNrLXBlcDMxMzcKKzU4ODQ4IDE1M2MwYzc0NDFhYWY2ZmUxMTQwODFiOTY2YTg4YzA2Y2Q0ZGY5NDIgcHkzay1wZXAzMTM3Cis1ODg0OSA1YWNkOWRmMjcxMDg1MjgzZjdjMjg3OTA1MzU0ZDllNjU2ODliZDA3IHB5M2stcGVwMzEzNworNTg4NTAgNTFhMGRlOWJhYjM3NDZhZjFhNWQ3Zjk2MzFjYjZlZThhNWQ2ODI3NiBsZWdhY3ktdHJ1bmsKKzU4ODUxIDhkNGU5YzRmMDM1MGExZTBiNGNhMWMzNjc4MDM0MzFlODZlOWRlNGEgbGVnYWN5LXRydW5rCis1ODg1MiAzNzQyM2M3NmUyMDg1ODY4YTk2ZGQ4YWIwMDVhYzNmNmMzNjE0YTZlIGxlZ2FjeS10cnVuaworNTg4NTMgMGZkMWNhYTg1MjI1ZmFjYTI1OWZlMzg4MDE2ZTM2ZDZlMDYwMDRkZiBsZWdhY3ktdHJ1bmsKKzU4ODU0IDM3MTU2OTQ1Y2EzNTE2ZTViN2I4YTY1NTljNzM4ZWRkMDlhNmQ4NzggbGVnYWN5LXRydW5rCis1ODg1NSAwMWU2MzMzZjNiNmNlZjIzODc4YmZjZDAxMDA4NDgzZjNjODdiODRmIHB5M2stcGVwMzEzNworNTg4NTYgMTk4N2RiZTdlYjZlN2Q3MTdjNzA4NGE0YjAxMDVjOTVjMDkyZTk2ZiBweTNrLXBlcDMxMzcKKzU4ODU3IDA4ZWUzYzczYjZiZWNhYzE2MjU1MDVkNmI4NmY4OGYxNmRjOTk3MzMgbGVnYWN5LXRydW5rCis1ODg1OCA3MGVmMGI2YTgzNDVmMTIyYTk1OTg1MGIxNjllMjU3MGY2YzUwZGUyIHB5M2stcGVwMzEzNworNTg4NTkgZmU5YzIyMzNjZDA0ZjgzMjhmOTE5NDZmN2I3ODI5NmNmZTA0ZGRjOCBweTNrLXBlcDMxMzcKKzU4ODYwIDMwNzg4MTQ2ZjBhNmMwN2FiMTM4MjZkYTA0NDE3ODI5MDc3YTJmMWQgcHkzay1wZXAzMTM3Cis1ODg2MSA3Nzg4MjNjMGZmYjYzOTliM2FjNzhhZWIwNmM1MGUyMWQ5MjgyM2ZhIHB5M2stcGVwMzEzNworNTg4NjIgZjNjMzM3ZTlkMWU1OTdjM2FkNGEzOTNhMWIzZWM3ZWIxMTRhODZhYiBweTNrCis1ODg2MyBmOWQ0MDFmMWUxZWYwYjBjN2JmYzU5YWQ5M2FiMThiZDEyZTJlN2ZlIHB5M2stcGVwMzEzNworNTg4NjQgYzQ5MGFlMDhkNjA4YjAxNjA4MzhiYjYzMzk3NjBlODE3NzFhMWRkNSBweTNrLXBlcDMxMzcKKzU4ODY1IGMxNTVmMWRlZGE2NWQ4NDdhYWRmYzIyZjViOGU5Y2EwMGZjZDU4OWYgcHkzay1wZXAzMTM3Cis1ODg2NiA3OWZlN2QwNjIwNmMxOGY0NDBjNGU1ODFhZGFlMWJlZGQyZDM3NDFlIHB5M2stcGVwMzEzNworNTg4NjcgNTNhZjA0NmNjMmM1MmUyZTgzZTc0OTJhNzVkMjdkNWZmNzViNDU2MCBweTNrLXBlcDMxMzcKKzU4ODY4IGQ3ZGI0NjdjZDk0MDdhYTA5NjQwNDdhNGIyZDViM2RlYTY0ZTlkMzkgbGVnYWN5LXRydW5rCis1ODg2OSBhNDk0YTkxNTEyZWM5ZWU0NTgyZWE2YzZhNWZkZjE4NmZlZDcwZTdkIHB5M2stcGVwMzEzNworNTg4NzAgOGQzMWEzNmYwY2FhZTUwODlkZTBjZjkzNDhjMTRlYWQ0YWE1Y2JlNCByZWxlYXNlMjUtbWFpbnQKKzU4ODcxIGQyNDg1MmI4NmQ3MGJjMjY0ZTkxYzk3NDBiNmE3NzJkYTExMjYzNGUgcHkzay1wZXAzMTM3Cis1ODg3MiAyOWE1OThlNjkzODI2MGY4NjcwOTE3YjljMjFjMTIwYTUzMzAxNTE0IHB5M2stcGVwMzEzNworNTg4NzMgODcxNzhmMzVkNzAwNzQ5NTc5NmE4YzViMTUxYjJkOTM2OWM1ZTlhZiBweTNrLXBlcDMxMzcKKzU4ODc0IDU1MzEzODQ4MDkxODUzNjVmNjFhZjhiNmFmOTBlYWJhZWFhNzIwNjMgcHkzay1wZXAzMTM3Cis1ODg3NSBjYzY1YjY0MDE5ODk0NmU0YmZiYTMyNzVhMDAxMjkxNmZlODA4ZWVkIHB5M2sKKzU4ODc2IDBiMjA2NzkwZmViNjQzZWNlM2NmOGUxMGRiNTNhZmVkOTI2NzAzMDYgcHkzay1wZXAzMTM3Cis1ODg3NyBkODI0YzMxNWZjYWMyOGU0NWRhZjRiYjM2YTY1NzU2NTlhYjhjMTE5IHB5M2stcGVwMzEzNworNTg4NzggZGU5NzM5MjZhMzVjZmQyNTMyMzg4ZjhlZDk0ZDJkNTU1YTM0MThlZSBweTNrLXBlcDMxMzcKKzU4ODc5IGM5M2FkNmM0MTdkZjI1MWJmYWE2YjIzZGMyOWFkOWE0NzVkZjViZDQgcHkzay1wZXAzMTM3Cis1ODg4MCA5MWJhMTY5OGEwMTE4NmMyZDZiN2M1YWE5NWQyZDlhMjJlODIwYTE5IHB5M2stcGVwMzEzNworNTg4ODEgNmRiMzgwODUyZjYzZmUxY2VmMmJhNmIyZDUyNWNmNTg3YmYxMWJiOCBweTNrLXBlcDMxMzcKKzU4ODgyIDkzMGM2MGY4YWFmZmE3Mjg5OGYwOTQyMDEyNDcxNThhY2YyMTg2YzEgcHkzay1wZXAzMTM3Cis1ODg4MyBmYzNiZWMyMGVjMTUzODg4YjE2ZDYwNDVhMGVkYTQ4ZDI4Y2NlYmEzIHB5M2stcGVwMzEzNworNTg4ODQgMDIyNTdlYzU0ZDc5MTNjZjc4MmFmNDE2ODBjNjQ0MDIyMzNjMGY2ZSBweTNrLXBlcDMxMzcKKzU4ODg1IGNiOGVmMjU1MWQwZDBlMzRmYzkzYzhlZTU0MGZmY2M2ZTJmNGI1ODUgcHkzay1wZXAzMTM3Cis1ODg4NiBiMzEwZmQyYjAxODQ3YTBjOTFkMDdhOGZhYjA3ODVjMjcyZTFkMGVjIHB5M2sKKzU4ODg3IDkwZDBjMzc2NmU5MjhhMzJiNjBiY2E2M2ZlYWRmM2EzYTk1YjNiOTUgcHkzay1wZXAzMTM3Cis1ODg4OCAwZDQ2MmQ3ODliMThlYzZhNTllYmUyMTE2Njg4ZDViNjk4NWMyMTVkIHB5M2sKKzU4ODkwIGNmZThmY2VkOGExMjI2YWZmMGYxNDRiMGY5Yjk0ZjIzZjg3NDUwMjggcHkzaworNTg4OTEgYzVmNzA4YmM0Y2I3ZmMwMjlhNzYyOTM3MzAxMWE0M2Q5ZmQ1ODFlNCBweTNrCis1ODg5MiA3MzQ3Zjc1YjljMzQ0MmJkNjMzYWRhZTUzMjY5OGYyNGMyYTJiZTA3IGxlZ2FjeS10cnVuaworNTg4OTMgZGE1OGNmOWJjYjAxYjVhNzI2YmMzNjY1ZTFjYTQwMzU2NDdiODliMSBsZWdhY3ktdHJ1bmsKKzU4ODk0IDA2YmI4MTA3NDdlMWQzNjA3MWZlZWEyZGJkYjFkOWQ0YjhiOWVjMGUgcmVsZWFzZTI1LW1haW50Cis1ODg5NSA5ZjE3YTlhNWI1YWVlZDc0YjJiZTFlZjBiYjZiODFkOWU4YjZhOTEzIGxlZ2FjeS10cnVuaworNTg4OTYgOGZjYzNmNDZjNjlkZTE3M2YyODczN2JlNTc5Mzg1M2FlMDBjM2ZlNyBsZWdhY3ktdHJ1bmsKKzU4ODk3IGZhODJlYzljODBjZDY3ODY3ZmZlZDIyMzk1NTcyYTk5YjVkYmY0ZTYgcmVsZWFzZTI1LW1haW50Cis1ODkwMCBkZTYzZWYxODZjMWVjNTAwMTg4MTVmNDMxZmU2ZmYxY2QyZDQzYTQwIGxlZ2FjeS10cnVuaworNTg5MDEgZjQ3NGRlOTczNDA0NzhlYWM3MTE3OGE5Mjc2YWNiZWQxYWIxMDk5MSByZWxlYXNlMjUtbWFpbnQKKzU4OTAyIDdiZDcyYzU2ZjZhNDBkMmQ0MzQxYmYxODJjOGNjOTk0MWY0YzA4Y2MgcHkzaworNTg5MDMgMTI0N2QyNGIyODdiOGM2ZGQyMGUzNWYzODlhNGRhZjRkMjI1MWM0MSBweTNrCis1ODkwNCBkYmEyNDkxY2Y3MTc2MjViMWFkNjlmYzVkOWEwOWU4OWI5NGNhNGY4IHB5M2sKKzU4OTA1IGRmYjQ2MDAwNGNmZTJkZjcwMzk4NmFhMTNiZjhhYzNkOTA4M2Y1ZDkgbGVnYWN5LXRydW5rCis1ODkwNiAyZjA0YWJkMTMzOTQ0ZGUzMTM3ZjAwZDZiNmFkNDBiYTFmNWIyMTk1IGxlZ2FjeS10cnVuaworNTg5MDcgMmQ4ZDY4NTVhNjAyNDE5ZWE5YTk5NmU3NmQ4M2ZlMmNjN2ZlZTU4YSBweTNrCis1ODkwOCAyYjNhYmUzZDNhZTZlYTMzZDJiMzlmMjk4MzQ4ODBjYjUwODQyMWVkIGxlZ2FjeS10cnVuaworNTg5MDkgNjZkMjc1ZjI5YWM1NTBlYWY1YjdmMmE2MWZjYmE4OGVkNDgyM2NhMyBweTNrCis1ODkxMCA3MDIyYWZmZDdiZDA5Y2YxMTU1M2MyMmY4ZTBhZmQ0MzdhM2VkY2ZjIHB5M2sKKzU4OTEyIDZhYzYxODgyZjkzNzBjZmZmYmRhZmI0ZmNmOGNlNjI4MmJjNDQ4M2QgcHkzaworNTg5MTMgNmQzNDc3Nzk1MjFiNWIyNTIyNzFlZWEwNzVmOWM4MWM4NGViNTk5ZSBweTNrCis1ODkxNCAzNjBkZjY0MTI0NGQ5ZTgxMWVmZDg5YWQwNjIyYWQ0NmJhNjZmZWZmIHB5M2sKKzU4OTE1IGIyMmYyN2UwNzAxMTQ4ZWI2M2IyMWVmMmMzOTE1NGMwM2ZlYzE1YjIgbGVnYWN5LXRydW5rCis1ODkxNiAyZjdjNDAxY2I2MmUwNDk3MzFkYjM2YjllNWIwMTJlNWM5MjU5YWQ0IHB5M2sKKzU4OTE3IDNjMWY4NTkzYTE0ZTRjNTVlN2MwMDY0ODBjMzZlZDQxYWI3ODRmOTYgcHkzaworNTg5MTggYWRlNTY2M2U4ODg2OGEzMWMwNDQ1Y2I5OTVmNWE3MDQyOGRkZWVlMyBweTNrCis1ODkxOSBkNWMyNWJmMjY5MmVlYWNmZTljZDliMWRiYjEwMGZmMDM5YTZiN2I1IHB5M2sKKzU4OTIwIDgzYzA1ZDJlMTBkZWNkMDYzMzA0ZWU1N2VlOWU3Y2M0ODVlZGFjYTcgbGVnYWN5LXRydW5rCis1ODkyMSA4MWUzM2JkZTZlZTIwYWM0NGEwMTY5NjFhYTgxNmU5YzkwZmI4ZGFmIGxlZ2FjeS10cnVuaworNTg5MjIgZGRjN2QxNGJlMWU5OTM5NDE4YjM0MzI3ODM5YjQ4MTY5NjM0ODI2ZiByZWxlYXNlMjUtbWFpbnQKKzU4OTIzIGMxZjg4MzExNTVkZTBlNThiODIzM2JiMTVmNDg5ZWY3MzVkYjZkOWYgbGVnYWN5LXRydW5rCis1ODkyNCBhYWVlZTUwYTA2NDAxNjcxYmY1YTA3OTMzNjIyOTYzMWE2ZGE1YWY4IGxlZ2FjeS10cnVuaworNTg5MjUgYWMxMmFjODhhZWVhOTNhMTA2YmI2OGU3NThmYjE5YmNmYzFjZWM0YyBsZWdhY3ktdHJ1bmsKKzU4OTI2IDIwZGM2Nzg2ZjlhY2ZlOWZmMDdkMzM0NGMyYWM4ZWFlYWJjMTkzMGEgcHkzaworNTg5MjcgZjgyYTIwZGRhNDY1ZWYyMGQ4MTk3MWM5ZjEwMDdmMTc1MzYxZTFhYiBsZWdhY3ktdHJ1bmsKKzU4OTI4IDE1NjE3NjNjZGE3MmRlYzZjYzIxOTM2OTQ1YWM0YWE0ODEyOGZjMTIgcHkzaworNTg5MjkgMTk3ZmZiOTk2ZmI4ODk1OTliN2JmMmU1YmIzYmRmOTMxNzAyMGQ1MCBsZWdhY3ktdHJ1bmsKKzU4OTMwIDg1Y2YzMzRiMzJjM2FjMjFlYmM0MWM1MTU2MWQ2ZTNiN2Y2Y2IxMjEgcHkzaworNTg5MzEgNDg3ZjM3MzdlYWVmZDAyMTNiMGUxOTExMDNiZTk2MzM2OTA0OWZkMiBsZWdhY3ktdHJ1bmsKKzU4OTMyIDFhZGYwNjZmMTg3OWE0YjkzN2FhODlmMWUxYTRlNDYyOGFlZWNiMTAgbGVnYWN5LXRydW5rCis1ODkzMyA1YTE2OWRlMzZkZTc4Y2JiNzU5ZjVjZWRiYWY1MmM2OGJmZGM4YzViIHB5M2sKKzU4OTM0IDA2ODY1NTA1NGIwZDBkMTM2MmFhNzJiMWMwY2Q3ZGRjM2NmZTI2MGIgcHkzaworNTg5MzUgZDJmOWUyMDEyMGY5ZTkzNTc0OWVlZTg3OTE1ODUwYzNhNjQyYWQxNyBsZWdhY3ktdHJ1bmsKKzU4OTM2IDAxYTViZGMyODIwYTAxMWZhN2M2MDg5Mzg4Yzc5NjQ4YjhmZTczZGQgbGVnYWN5LXRydW5rCis1ODkzNyBjNGUyOTM2ZDEzMDc1MjMyNDY1MDljMDNmMWRhNmNlNmQzN2MxYjgxIHJlbGVhc2UyNS1tYWludAorNTg5MzggNTVjYmQwYzdhYWNmYzM4NzQyMGJmMjkzNTdlNDYyMWM2YWYzZmQxMyBsZWdhY3ktdHJ1bmsKKzU4OTM5IDRlZDE2Y2E0ZDk4MDA4ZGExMDA3YWFiNzNlODVmMTYwYTQ0ZjMyMmEgcHkzaworNTg5NDAgMjliZWNlMTQ3ODkzOTFkZjFiMzQ4NDMxMGZjOGVlNTM5ZDI3ZmE5ZiBsZWdhY3ktdHJ1bmsKKzU4OTQxIGFkZTU4ZWI3YzhjNzVjNWJlY2MzYjVhMTI5Y2Q4Mzg1NGQ2OGE4ZDMgbGVnYWN5LXRydW5rCis1ODk0MiBhZjM0MjhmYWUxNWZkODMzOTA4ZWFhMDkyNjY3ZWRhMDU1ZDBlZDU0IGxlZ2FjeS10cnVuaworNTg5NDMgMDBlNjE2NWY0NDgyOWRlYWJmMDc1ZjNiZmVlNWVmOWRjNTgzOWMwOSByZWxlYXNlMjUtbWFpbnQKKzU4OTQ3IDdiYzRjYzk3MmIwYjNjNjFlZTQ0NmFjMGRlZjAwYmI0NTE2YjRlZmYgcHkzaworNTg5NDggOGVkM2E5NWNhMTE0ZmIxYzJkMjQwMjA1NzZmZWFhOWM1ZTRjM2U3ZCBweTNrCis1ODk0OSAxNjRhNmFjOTRkM2M4MWY0MjI3NzhmYWVmYWQwZjNjZWUwNDc3YzgzIHB5M2sKKzU4OTUwIDU5MTJiNjZjY2MyZDVmZjc1YjZhZGJjYTdhMjA5NDgzOWVhZWY0ZGEgcmVsZWFzZTI1LW1haW50Cis1ODk1MSBjZTc3ZDkxZWExZDBiYmRmZmExYmZjZDQ2YTQzMGYwYzkzYTY2Zjg3IHB5M2sKKzU4OTUyIGQ3ZTliZWMxZmVhYTlhNWQ2MDc1MzE1NGRlZjBiZGVkYmU4NjQyMTMgbGVnYWN5LXRydW5rCis1ODk1MyBhMjIxMzA2MGQ5ZGRiMDQ4ZDFkYTIxNzk5MmNmMTRjNjFiMmQ5ZGU3IHB5M2sKKzU4OTU0IDFkNmRiOWRkM2U3N2E3Y2M4ZDg5ZmM4Zjg0ZWEwODdjNGJhZmRjZmQgcHkzaworNTg5NTUgYjMxZjYxZDdmOGIwZWUwMTRlYmIwOWFjN2ViNjRiMmE4NjgwMTg0ZCByZWxlYXNlMjUtbWFpbnQKKzU4OTU2IDFlMGVhMWYwMzA1OGI1YTI1MWRmMTNmZDM4YWYxN2YyNGMzYWIwNDcgbGVnYWN5LXRydW5rCis1ODk1NyAwODExMTgyYTljZTlhYzFkZDJhMDllZWZhNGRkODI3NTkzODM0OGNjIHB5M2sKKzU4OTU4IDczYzhlMjdlYjljZWY0MDJmYWNmOGE5Y2MzMWVmOTMxZjhmZGEwNGUgcHkzaworNTg5NTkgY2NjZWFlYzExNDQyZjk0YTg5MzAzMzNjM2E2ZTk5ODYxMGIwZDYwOSBweTNrCis1ODk2MCAyNDEyODExMjNmZDgzNTFkMTBlMDIxOGQzMjM5YTViZjFmMTBlZmYzIHB5M2sKKzU4OTYxIGEwNjBiM2NjMmM2MmIxMjk2ZTFjNWNlOTE1NTQ2YmEyYTA2NzY5OWIgcmVsZWFzZTI1LW1haW50Cis1ODk2MiAyYzk3ZTI0YjE2Y2ZjYTkzMzQ4YTg4NTIwMzFiNDg5YTVjOGZmMDRjIHB5M2sKKzU4OTYzIDc2ODQ0YTBhNTc5Zjk5MmUyYjA0OGJhODdjYmIzZDYzZjQyZDBkZDUgbGVnYWN5LXRydW5rCis1ODk2NCBkNWZjNmU5NjA5MWZiNmZlZDIzN2E0OTI0M2Y4MjMwMDk5ZjNkYzYzIHJlbGVhc2UyNS1tYWludAorNTg5NjUgMDM3N2JhOWJjMzU5MTc1MmI3NzEzYmY0OGI0N2EzNzMxZTliOTBhNSBweTNrCis1ODk2NiBlMTYyZTg4MWVhNWY0ZTNkYTVjNDFkMjM5MmNiMmRhYzE3YTQwMWQyIHB5M2sKKzU4OTY4IDI0Yzg0ZDU4Y2I4MDEwYjE4ZTYyM2U3OTNkYTcyZmJkYTE4N2E3ZmUgbGVnYWN5LXRydW5rCis1ODk2OSA1M2ZjMGY0MWY2OGQ3ZjE2NjZjMDY5MTk2Y2U5MzY1NjEwZjk0NjM5IHB5M2sKKzU4OTcwIDlhMTI4MTM5MWM0NmU5YzUzMTM2NzY2YWJkZTAzNjBhZmVmZWExZmIgcHkzaworNTg5NzEgODk5OTg5M2E2ZTIyMTUwYzg5ODk3YWU0MWIzODZmYzViMjlmMjJjMCBsZWdhY3ktdHJ1bmsKKzU4OTcyIDAzYWQxZGI3YzgwZTQ1ZDZkZTY2OTVlYTgxYmQwYzY1MjdmODhkYTEgbGVnYWN5LXRydW5rCis1ODk3MyAzYzI5ZDczYzc3Njk0ZTZjNzM1NzRjZTYwNzJjOGZiNmUyMjVlMTg3IHB5M2sKKzU4OTc0IGVlMDgxNjA5Y2VlOGNkMzQ1MzE5MTI0Mjc2M2JkMmUzNDFjZThhMjcgcHkzaworNTg5NzUgOTg3OTU3MzhiNGMyNzkzZjBjZDhjZDhhODIxOTVmYzFjNDk1ZGE2NSBsZWdhY3ktdHJ1bmsKKzU4OTc2IDBhZTkwNzg3ODZiNDAyZTNmMmJkN2Y2MTk3NDZjNWEwZDkxMGQ3MjkgbGVnYWN5LXRydW5rCis1ODk3NyAwMTk4Mjk4MDM4NDhlNmYxMWVmZTAxOGMzZmY4MzRhNmE2MGE5NjliIGxlZ2FjeS10cnVuaworNTg5NzggZGQzYzRkZDNlY2ZkMTRjZGRhODdiNGY4Y2RjOTJhZWIyNDRkNzhiMSBsZWdhY3ktdHJ1bmsKKzU4OTg1IDE3OTE4NjVhNjY4YjlmMmRiNGEwZDhjN2NmODljMWFjNjUxZmJjMTggcHkzaworNTg5ODYgZmE2Y2RmNTVkZTU4ZjM2YTI3NDIwYWE2OTA5MGRhOTMzMTcyNGFkZiBweTNrCis1ODk4NyBkNGY5NzA2Y2I0NmIzYzJiMTIxZTNlNDM4NzMxY2EwZmNlNWIxMWM4IHB5M2sKKzU4OTg5IDUxNjA0MWQ1MjY1NmQ0ODFiMTU3NWUxZTk0MWFhMjIyYjY4MjViYTggcHkzaworNTg5OTAgZjRhM2I0ZTE1NWMyNTkzNzRjOWRjOTVkM2MwOTVmZDRiYTRiN2ZkOSBweTNrCis1ODk5MSA5YTM1ZTkyNjYzNzliY2FhOTViMzYyNTZkYjU1MGJlMGY3NzY1NWNiIHJlbGVhc2UyNS1tYWludAorNTg5OTIgOGVkMDI4MGMyYWI2NzQ4NTNlYTE3ZTBiMmUyYWViYmJiYzMxMTQ0NCBweTNrCis1ODk5MyBmNDQ0ZTI1OTM0MWE5NmUzOWM1NDc4MWM2ZDM0ZTNkM2E2ZDc2M2JjIHB5M2sKKzU4OTk2IGRlNmIxMjZhOGQzNzQ5NWI2OWEyOTM4ZmIyODI4Mjg3NjgwNWVhNTMgcHkzaworNTg5OTcgYjU5ODI1ZDlkYjhmOTllNjYwYWVhMWJhNTdhOGJjNThkOTM1M2FiMyBweTNrCis1ODk5OCBjNzhkYjQ5Mzg0ODJjN2I2YmMwY2I4NjNiMTY2YTE2MTYyNTU4MDRiIGxlZ2FjeS10cnVuaworNTg5OTkgNTkwOTMwZTE3ZTBjOThmODdlYmQ1MDU3Y2NlZDNkNDI3NWEwODVjNSBweTNrCis1OTAwMCBkNDE5MzMzMGQxYmVlYWY5MmIyMDFiMjYyODdkYmU5NTM4NmEwMGNhIGxlZ2FjeS10cnVuaworNTkwMDEgMTczOTg2OWNiYzZlN2UzNTQwYTY0NTQxN2I3OGZjYmNlMzZjOGY5ZiBweTNrCis1OTAwMiA2YjAxMmYwMWE4ODkwOTMyOWE3ZjA1ZmZlNTQzOTc4MjkxNjZhOGJjIHB5M2sKKzU5MDAzIGUyMDIwM2QwMzMxY2MyOThmMTUyYjFiNGRiNDE2ZTlkMDBiOTEyNTQgcHkzaworNTkwMDQgMTdhYWY5NWFmOTA5YTE2MmUzYWFiMmU0NTY5Y2VmMGJjM2I1Nzc4NSBsZWdhY3ktdHJ1bmsKKzU5MDA1IDExNjVkMjYxZmIwNWRiNTczZjgyY2VjZGNmZmEwOThhMGNkODFkYjQgcHkzaworNTkwMDYgYzMxNTk0ZmIxZWQ0NGYwMzZhYThkNDVmOTgzYmZiYzYzMzMyOTM2OSBweTNrCis1OTAwNyA1NTkwMTU3ZjRmYzYxNzU0OTdmZGViNDA0NjY2MTY5NWIxOGJjZGYwIHB5M2sKKzU5MDA4IDRhNmE3YWVhNTdmNGZkODg2NGU4MjZiNjM1MzY2NDI4NDdlNDhiZTggcHkzaworNTkwMDkgNzBjZmM3YjUwNGMyODYzNjI0NDEwMjIzNTRjMWEwZjM3NjgyZDQwZiBweTNrCis1OTAxMCBmNmNjYTRiMjI2MGNhYmZjODJhMTMwMDdiNWY3NzRjYzkzOWEzZThmIHB5M2sKKzU5MDExIGRjMjI1NmUzMDFhOTIzOTJjOWM1NWZiMzMwODRlYjg2YjlhYmI1NjAgcHkzaworNTkwMTIgNzFlNzQ1NjJmYjY0MTI4NThlZWQzYjRiMDU2ZDBlMzA1NWY0NTJiYSBweTNrCis1OTAxNiBhOTlkYTg5M2YyMGMxZWFkZmEwMmIzN2U3ZjMzNDMyZTI4YzRiOTI2IHB5M2sKKzU5MDIwIDI1YTVmNmEzMDI5MjVkNTc0OTIxZDY1MzIxYzMyODhlMDY0NjdlZDEgbGVnYWN5LXRydW5rCis1OTAyMSAyZGY1M2YwNTM5MmNjMWFlNzg0YzhlZDUzNjUzMDk1ODUzZmQyOGJkIGxlZ2FjeS10cnVuaworNTkwMjIgMWZiMzUzNzc2ZGZiNGU4NjA4YmYwOTY2N2M1YWIwZGMwMzhkMWI5OCBsZWdhY3ktdHJ1bmsKKzU5MDI0IDE0OTRiZGU1MTBmZjk0ZWQ5NmFkNTBjYTJjNDIzZjAwNGRkYWVhMzkgbGVnYWN5LXRydW5rCis1OTAzMyA5OTVkMjVhYWMxNmFhYTkyYmM5NTNiNzYwN2YyM2M5YmU1NTZiMTJiIGxlZ2FjeS10cnVuaworNTkwMzUgMzhmNjM0MTlhYmQ2NDczYTQ0ZTljODhiN2YzYTI3MWQ4NGE5MTc1MyBweTNrCis1OTAzNiBkNTBjNzA5OWQ0YWE0YzBjZDQ0ZjdiYWRmNjZmMWE2YTZjZTY1MDE0IHB5M2sKKzU5MDM3IDQ4M2U5NThkMTNjNzZiNjY0ZGUxNmIzNzY0MmI1OTU0ZWI2YWEzMjQgcHkzaworNTkwMzggMTMzMjQ1MGJjOTUyMWQwMzhlNzRlMzZkMjljYWFjN2VmOWEwZWM2MyBweTNrCis1OTAzOSA0Y2VjMGM2MzkyYzEzYWQ1YmE2ODlhMDZlYTA1NzQ4MGJhMWJkNzY5IGxlZ2FjeS10cnVuaworNTkwNDAgNTIwZTJlZDk0YmNjNTMwZDVkZDRkMjcwOTIwZmE1NTM1ZWNhYWY5YyBweTNrCis1OTA0MSA0MWY3YzEzZWYxNjExYzViZDIwMTFkZmVjOWE2NWFjZTVlMjg0MzIyIHB5M2sKKzU5MDQyIGI5MWZkNzRmMzJkOGU5YzRjYzE4Y2ZjNmFhNWQ2ZGFhNzc1MGEzMTggcHkzaworNTkwNDMgZmNkNzYzMzlmZTFmZTZmNzRmOWE5MjQzN2NhYmJhZDUwMDQ1ODVkMCBweTNrCis1OTA0NCAzYTczMGY0OTA4ZTNmMmRiM2U4ZjNlOTAzZmE5ZDZiYzRlY2RlNzVkIGxlZ2FjeS10cnVuaworNTkwNDUgNzBkZGJlNjdkM2M0NjBhMWM4ZTQ1YWJjYjAzODViMTAwYTMxZjUyNSBweTNrCis1OTA0NiAxOWY5OTY1NTMxODQ4MDZiOWM3OTZjNmMzNzgwNjgwMTczZWFiNGU5IHB5M2sKKzU5MDQ3IDZhYThlMTM1ZDlmODRkZjQwMWQyMjE5Y2M3OTZmZjI5MjVjM2U2NzIgbGVnYWN5LXRydW5rCis1OTA0OCA0OTY4MWQ0MzZkZjkyMzZhNjM0ZGQ2MDI4NmQxMDQzNTUxNTYxNWU4IHJlbGVhc2UyNS1tYWludAorNTkwNDkgMGU4OTc5MDVlZTk0M2Q5NDIyNDJhYjA5YzhhMjQ4YjVjMGVkMmQ2MCBsZWdhY3ktdHJ1bmsKKzU5MDUwIGU1ZDQ4ZmJlMTY0NjJjNDBkYzIyZjcwZjBlYmZhYjQ0NTViMWY5MjIgcmVsZWFzZTI1LW1haW50Cis1OTA1MSA3ODBjNzI4NDA2ZTY3NWYyYjRmYzk5ZWM2ZWQyZWQ5ZWNiMzIxNzFhIGxlZ2FjeS10cnVuaworNTkwNTIgZGE4ZGNkNWNmNWEwMWEzNDMwNTcwODE5ZDVhNzRlMzk2NWRmM2QwYiBweTNrCis1OTA1MyAxYWU5MjI0ZjRlZTdmMDFhNWE0MDdjZmRhNDRlOGY1ODA2MGEyNDRlIGxlZ2FjeS10cnVuaworNTkwNTQgNTRiOTczZjBmNTViNWI1ZDZjMDU2YTJjZTMzMjhlMTc2ZjM2NGEwZiBsZWdhY3ktdHJ1bmsKKzU5MDU1IGI2ZjU3ODFmNWMzZjBmNTVjZjc1MjE1Zjk2ZWM2YzBiOGVmNjE1Y2UgbGVnYWN5LXRydW5rCis1OTA1NiA0NzQ3ZWY5NjQwYWU4YjEzNzUyMTcwMjM0ODAyYzQ2MDRjZDc2MjBhIHB5M2sKKzU5MDU3IDYxZWY5MGExYjM1ZTI1N2NiMWEwNzRlNWU4ODdlMTRjZDM0YzEwOTkgcHkzaworNTkwNTggNDBkZmM0ODViMGJlMzdlYmFhMzFjNmU4OTEwNjllODcwNWI1YWE1MCBweTNrCis1OTA1OSA2OTY5OWNmZGQyNmVkMGU1M2JjZjAzNWVmOGQ0MWU2ZjQ1M2FiZTFmIHJlbGVhc2UyNS1tYWludAorNTkwNjAgYjFiY2Q1OTk2NzFmMDUxODFkYzk1MTU2MjQwYjRhNzQ0OGQwZmE2YSBweTNrCis1OTA2MSBhOTE1ZjJiMTM1YzA5NWRmZTk0OTI5ZjgzYjZhZDMyMGE0OTkzMzlhIHB5M2sKKzU5MDYyIDE0NmJhOTdmZmUxYWIyYzlhZjQzNmIwMjNjNjNmYjk4Mzg2MWZlYjEgcHkzaworNTkwNjMgOGVhN2Y1OWRmZjZiYzYzYWM4ZmM1MGIyZTY3MDMxOWFmNzZiMDFiYyBweTNrCis1OTA2NCBmZGYxNDE3MDMzN2FkNzhjNWRkYzQzZTgwYjEwNTQwZGU4M2IxN2RlIGxlZ2FjeS10cnVuaworNTkwNjUgMmEzZDczNDk1ZjE4NGRjYjFmZDI2ZWM2YTY4YmNkNzYyNGIyNDIwZCBweTNrCis1OTA2NiAzMmQ0NTdhNzg4NWJkZjM4MjZiZWJkZGVhNDk5NDE0ZTk0YzA2MWNkIGxlZ2FjeS10cnVuaworNTkwNjcgZDNjYjE2YjMyMWQ1NWMzZmJmZDdhODUyNGZhNGY5YWQ2YzY4ODExZiBweTNrCis1OTA2OCA3NGYyMjk1NGYxODk5ZGI0YzQ5ZDBjZjk2ZGRhZDI1YzE2ODk5YzdhIGxlZ2FjeS10cnVuaworNTkwNjkgNmNhMDA0NDc1YWEwZmM4NDM3OGIwNDgyODRjMDI4YmQ2Y2JkZTYyOCBweTNrCis1OTA3MCAyZGU3ZDAwZmJmMTkyYWMzYTZmZmMxOTgzZmEyODVjODVjMTM0ZTRmIHB5M2sKKzU5MDcxIDU1NzYxNGM0ZmYwMGYzMDk4N2I2Njc5MDAzYWNkNDBlNzM2ODQyNjUgcHkzaworNTkwNzIgMjliMGY0OTc1ZDlmMzFlMmQxMDZlYmI0ZjM1NjRmMTI0OTg5Nzk1OCBweTNrCis1OTA3MyA3YWI0OTA2NGQ0MzBhYTVjOTMwNDYzNThhMTExMGFiMmQ0MzJkOGFmIGxlZ2FjeS10cnVuaworNTkwNzQgZjU0ZWNmNDk0Y2I3MTEwNTAyNjA4MmU4Mzk5NDljOGY3MzQwODNkMSBweTNrCis1OTA3NSA4YjdkNDMxM2ViYzA1NjljYWM5MmZlMzc0MGQzMzdiNWFkZDMyMTVlIHB5M2sKKzU5MDc2IGU4YWMxYWU0NTAzY2Q3YTgyODA3MjI4Mjk1ZDQ1NTllN2EwZTIxYTQgbGVnYWN5LXRydW5rCis1OTA3NyA5YzRiZjE4ZTVkMzBlNjMzNGNjMzQ0NTg0YjBmZWJlYzM4ODAwZDA0IHB5M2sKKzU5MDc4IDcxYTE3ZDRkM2FmYTBkYTQxNjg4NjcxZTBjYzQwZTFiZWU4MTk1MTUgbGVnYWN5LXRydW5rCis1OTA3OSAyYmE1YWIzODY4YzkwZmIxZjQ3ZDk0NmVkNWNmNGEyOWQ5MWZmZDZiIHB5M2sKKzU5MDgwIDM4YjFkZWI0ZTRlYmRmODM5ZjdjOTE2Zjg2OWE0Yjk3NjJjY2M5MGYgcmVsZWFzZTI1LW1haW50Cis1OTA4MSA4ODM4ODRmZGFhZThlMTE0M2NmYTI5OGM5NTMwMGFhMTY5MmExNWY1IGxlZ2FjeS10cnVuaworNTkwODIgODYzNmRjYjgwMWNlMDYwM2U0N2E2NWZiZDQ2ZjQ5NjM5NmM4ZWZhNCBsZWdhY3ktdHJ1bmsKKzU5MDgzIDI1ZDljZTI4M2IzOTRmMWFlZDY5Zjc5M2ZmM2M1ZGQwNDM2OTI0N2EgcHkzaworNTkwODQgM2ZiN2VkNWMyM2RkNjkwZDQ0NDBiZGQ2NmQ3OTUxNGVjNDExNjJlYSBsZWdhY3ktdHJ1bmsKKzU5MDg1IDNiMDQ4OTQxMTZmZTIyMmY4MjE0MzU1ZGZiZDZlYzZhZmVmNTQ1OGQgcmVsZWFzZTI1LW1haW50Cis1OTA4OCA3ODJjYjQwMzc4ZjQ0Zjg3YTE0YzZhYmE1MTdhZDA0ZmE0NWNlNzIyIGxlZ2FjeS10cnVuaworNTkwODkgMmRiY2QzOTBiNmYxNTM3ODgzYzE5ZDNjNDFkY2Q0YzhhODdkMmI1ZiBsZWdhY3ktdHJ1bmsKKzU5MDkwIGIwOTlkMzljMzQ4MmQ5NWNhZmY3MmVmMmU4NGNmMjMzYTJjMWQxZGUgcHkzaworNTkwOTEgMmZkN2M5MTExNjMyYTI1MDBhMTBmODI2NjdmM2RmMzU1NzFiZDllNSBsZWdhY3ktdHJ1bmsKKzU5MDkyIDZjOTY3YzI2ODQxYTkxNDU1MmJkMDZlMWY1YzdlOTYzYWNmOWM2ZWYgcHkzaworNTkwOTQgY2JjOGIzYmQzMTU3ODFlNTNhZmI4OTAyNmU1NGQwMWZjMDZkMTMzYiBweTNrCis1OTA5NiA4ZTBjNGM3MTAzNzVmMmRjOTE4YjI0MzZmYjI2NDVlY2YwODFlNzdhIHB5M2sKKzU5MDk3IGVhOTg4NGYxNDU0NTk4ODViYjUxNGYxY2UwODVkNzkxOWIyOTgxMjUgcHkzaworNTkwOTggMmEzY2E5MDAwOGZmZmVjMWVjYzMwMWNkYTdhNDhhZjZhNTkyOGQ2OSBweTNrCis1OTA5OSAzMmJmZjdmMjk3NWQ4MTBhOTlkNjlkOWIzZGFiOWUxNWQ4ZGE2N2ExIHB5M2sKKzU5MTAwIDZmMTQ5NTI2ZTg2NGM0MTA0NmU0ZGRlYTNiNTNmMmU1N2M0NWEyYzAgcHkzaworNTkxMDEgZGRiYzVlMmM2ODlhN2E0MTExMDJkOGE1OTA2MmE5MWM5NDMwMWRmNiBweTNrCis1OTEwMiAwOTJiNTMwNjk4M2Y3MjBiYmUwMWViM2UxYmVmOTc3MjIxOTU4OGNkIHB5M2sKKzU5MTAzIDc1MzY0MzY0NDA4YjY5MzFkODNkODliYzUwNWYxZDJlNTJmZWRiNDUgcHkzaworNTkxMDQgZmU1YjJlZGZmYWU3NjlhY2NhNTA1YjI4ZjMzYTgwN2RlYWI0NDU2NiBweTNrCis1OTEwNSAyM2JlZmU1NDBkMGQ1NDZkZDE2OWU3YjU1NGJkOWJjNjA2ODBkNjc4IHB5M2sKKzU5MTA2IDEwM2I3Zjk1NTAzNmVhMzZmNWZlYzVkM2JkNjY4MGE1NmNiZWM3YjIgbGVnYWN5LXRydW5rCis1OTEwNyAxMjA5OTcwNjEyZGZlMTgxMTYwNjAxNGQxZWE3Mzg0ZGNlNGZhOTVjIHB5M2sKKzU5MTA4IDk4YjQ5NjY2NDlkNTFiMDkzZTE5MTk3ZTFjOTJhNmRiYTRjMTIzMmEgcHkzaworNTkxMDkgYjIzMWJkYTY1M2E0ZjliMzVmNjFkY2QyNjUzZGVhZDhhZGFkNjhiZiBweTNrCis1OTExMCAyNTllOGEyZDZmOGMyNzA1OTQ1MGU4MmRkNzhlZjJmYWI2M2U4YmJmIHB5M2sKKzU5MTExIDE0YzRiYjNjNjVhN2M3ZWVmN2ViYmYxOTAxZTFmOGM5Mjk5ZmNhNzAgcHkzaworNTkxMTIgMjY1NWQxMTMxMjMyYzFjZmQyNWNiMjA5MzU0OTM2OTMyYzFjMzFjZiByZWxlYXNlMjUtbWFpbnQKKzU5MTEzIDQxYjJmMjZjN2IzZGJjNTA4ODYxYmVjNDE0M2ExOTVlNmIwNjE3MDMgcHkzaworNTkxMTQgZDIzODI5YTlkYjIxMTkzYzZlNGYxNWM0Yjk2YzNiMTRlNGFhM2E1YSBweTNrCis1OTExNSA4ZDFlZWYzOTE5ZjA1MWU3OWQ1NzliNjk4YTY2MGE3NzI3YzJmMGYwIHB5M2sKKzU5MTE2IGQ5YmNkOTRlNTkzNWU2YjVmOTFhNGIyMWFkYWM4ZjE0MTZmYmE2MzIgcmVsZWFzZTI1LW1haW50Cis1OTExNyA4YmNiZjMyMmMyYjVjMjc5MGU3YzA5ZmM1ZjU1NzA4ZTNiN2I3M2U2IHB5M2sKKzU5MTE4IDRhNzU1M2IxNzZiNmExYTNjZDRjMzAxYTI2NWQyY2FmNGNmMjQ5MjQgcHkzaworNTkxMTkgNzI5NjJhYmQ5MGExNmFiODU2YmE2OWUyM2VmMGYyZWRiZjVjN2ZjNCBweTNrCis1OTEyMCBhOGRkODg3NGZmMmQ1MWViYjc0MGEzNDM5MTVjMDBjODVmMDAzMWUyIGxlZ2FjeS10cnVuaworNTkxMjEgZjYzMjcyMGQ4MTAyN2NlODlmMjQ2MWE0NTA3MjUzY2Q2ZTI0MWE4NCBweTNrCis1OTEyMyBkYTQ3ODQ3MWYxYjZiODY4NTc3ZmM4NmQzOTdhYWE0NzhiZGU2YmIwIHB5M2sKKzU5MTI0IDZkNmI2MDllNDU3YzgwNzUyYWM1ZGUwNTcxYzUzMWNlMWY3MDBiNzggcHkzaworNTkxMjUgODc0NGU0MWRhZjU0NWNkMTg2YzEyNWU1Y2MxMmM4MGU1YWMzYjg3OCBweTNrCis1OTEyNiAzYzcyNWE0M2FjOGNkOGU2NzMxMmE0NjRlYWNhODA2ZWU2NDI1NjQ2IGxlZ2FjeS10cnVuaworNTkxMjcgOTM1MGU0MjVlNWYzYmI3ZTViNjRmZmYwZmJkOGE5NWE0YjQyMDVmZiByZWxlYXNlMjUtbWFpbnQKKzU5MTI4IDQ5Y2VmZWNjZjkzZWJmNWFiNTJmZWFhMWU2ZDc4ZDA2N2Y1ZDM2MzkgcHkzaworNTkxMzAgNmZmNjg1MDUxOTlhZTE4NTFmZDZiYjY3YWRhYTRmZTkzNmVmY2ViOCBweTNrCis1OTEzMSA2MmNmMDhhNjRiYzIzMTQwNDE5M2U3ZDgwYjc0MjIzNDdhMzQxNWJjIGxlZ2FjeS10cnVuaworNTkxMzIgNWY2YThlMmI5ZTljYTZkZDQ0NjI3MmU5YmI5ZTFjNTI2MWYzNjE4YyBsZWdhY3ktdHJ1bmsKKzU5MTMzIGU3MjUxNjZjOGM4MTg0ZjgwZmZkNmZkZWNlYzk0Njc1MGNkNDFlMTEgbGVnYWN5LXRydW5rCis1OTEzNCBhZjM2MDM4MGFhMTZmZjM3ZTY2MGVmMWY1YTQyMjM1M2M5ZWZjYjgxIGxlZ2FjeS10cnVuaworNTkxMzUgMjIzMGYxNmU0MDJiMTA1MTMzZDRiOGQxN2E4ZjZhZGI1ZDU1YjU3OCBsZWdhY3ktdHJ1bmsKKzU5MTM2IGVkMjliOTE2MmFlOWU5YTczOGJhYWYzMDcxM2UxNzcxYWUyMmUwNTYgbGVnYWN5LXRydW5rCis1OTEzNyBiNDgxYWRiMDQ2OTlhYzNkNjI3ZTU5ODJlNGZlZmI1NzgzMDRjMGI1IGxlZ2FjeS10cnVuaworNTkxMzggNGQwZmU3ZGE0Y2Q1ZjZmMjBmNGRkMTEyOGJlN2MyYmI5ZTU3YmE2NyByZWxlYXNlMjUtbWFpbnQKKzU5MTM5IDM1ODZhNjYzNDhiZjg0Y2EwZGM5MDZiNzM3MDU0YWVmMmFiNzQ1NDYgbGVnYWN5LXRydW5rCis1OTE0MCA0ZTFhMTliYTNkNGE2MzhmNWFkY2QzNDhlMDZjZDZmZGYzYzEyNGM0IHJlbGVhc2UyNS1tYWludAorNTkxNDIgNjhjYWE0N2Y1ZTE1M2UzNTU3MzA4YjMzNzY2MWFiZjVmNDgwMjYwNSBweTNrCis1OTE0MyAxMWUzZTJhZTIzNjQzZDIyMWM2MDEzMjZmNDllNzkwMWNjMGYxMWVmIHB5M2sKKzU5MTQ0IGE0YTE0MDQ4NjY5MTAzZGYyY2FiZWIzYjM3OTMwMDYxMWY2ODQ2MzMgbGVnYWN5LXRydW5rCis1OTE0NiA1NWZhZmI0NmZhNDU1ZjViY2E2ZTBhYWMwZDQ2NzA4NWU3MzFkNDdlIGxlZ2FjeS10cnVuaworNTkxNTQgYTljZjc4MGY2Mzk2YTcyZTljZmY4MDdmYTk1YjNmODY0ODVlMWY3ZiBweTNrCis1OTE1NSBiODZlNmJmNzQzOGY4OGYzMzljYmM1YjdlNDdhMTllODg2NTZjMzNkIHB5M2sKKzU5MTU2IDE3NDc5YTA5ZWM3Y2NkNTUxOTA1NzJhODRjZTcyMjllODJkNWRiZWIgbGVnYWN5LXRydW5rCis1OTE1NyBiYjFlMTViYjdiNTllYzg1OWI5NDU2OTMyOGRhNTM5ODZmMWU5MTZiIHB5M2sKKzU5MTU4IGI5Yjk0Nzg1YjJjNzJmYzVjOGJjNzRhOTA4MmY5MjYyYjhjYjEyZTAgbGVnYWN5LXRydW5rCis1OTE1OSAxNTVlOTcyNWRhMmY5MzQ3NTk1NTJmY2QxZGJiMjBlYWRjYmQ3OTdiIGxlZ2FjeS10cnVuaworNTkxNjAgY2Y2MDM4ZGY5ZDUyNjljOGUxZWRhNzc0YzllMTI4ODM2OTkwNTY0NSByZWxlYXNlMjUtbWFpbnQKKzU5MTYxIDQ5YTdjN2RiYThjYWZmNGRhOWYwNzAzYjhmNDkyYTQ1OTgwODFmN2YgcmVsZWFzZTI1LW1haW50Cis1OTE2MiAwYjUzNTdjYzQxNmI4ZjM1ODI0YmYzMzQxMTIwZjJmZTEyZjg3ZjM5IGxlZ2FjeS10cnVuaworNTkxNjMgMmJlZDg0MTU4NWE5Y2E2NWIwYjc0Yjc3MjZlNDc0ZGRiYmY5NTk0ZSBweTNrCis1OTE2NCBkM2JlNmU2MTVmOGM0NmRhYTY1YWY4Mjg3ZmMyNjU4ZWY2Njc3ZDk1IGxlZ2FjeS10cnVuaworNTkxNjUgZWRiNzVjMDk4YTRiMDU5ZDg0MjA3Njk0ODU3MzU0ZWQ2MTI2MTJjMyBsZWdhY3ktdHJ1bmsKKzU5MTY2IDZkNjE0YjhjNTEyNTMyZWNmODA3MTEwMzE0YzczZGYyMGZkZDBiMGEgbGVnYWN5LXRydW5rCis1OTE2OCBjZjIyMDU5NjBjYmJhYWQ2ZTQ1Y2Q3MzU0YTViZmQ4YWQ1NjI4YjU2IHB5M2sKKzU5MTY5IDIwNjhiZjc3ODkxZDBiNDI0MDkyNGNjOGM4NDU3NWQxMzFiZGU4ODEgbGVnYWN5LXRydW5rCis1OTE3MCAyMTgzZDcyYWJmYWFjZmNkZTVjYTNmZjlmMzRkODVhNmUyMGM1M2FhIGxlZ2FjeS10cnVuaworNTkxNzEgNGNmOWJiOWNlZjkxZjUwM2ZjNjE5ZGFjNzAyMzc0OTUyODAxNmEyNiByZWxlYXNlMjUtbWFpbnQKKzU5MTcyIGQ1NjAxZWJlMTVhOTQ3MGQxZGQzM2U4NWQ3MzUyN2M1NjM0ZDNhMDYgbGVnYWN5LXRydW5rCis1OTE3MyAxNGFhM2U0ZTczNzU5YjdhNjY3YmM3YmVmZjE2M2YyM2ZmYzU3YjEwIGxlZ2FjeS10cnVuaworNTkxNzQgZTA0NjViYTBlOTVkNjhiZjE2Mjk1MWZmZDQyYmI2YTM0YTRlYWU1ZCByZWxlYXNlMjUtbWFpbnQKKzU5MTc2IDdkZDc5NjFlMGVmZjNmZjRjN2ZjMjJmZWQ2M2NkMTliNjA0OWE4MTYgbGVnYWN5LXRydW5rCis1OTE3OCAyMmUwOTkwNWU0MDAwYWU3Y2ZmNDg2Y2JmYzY3NTIxYmVjNDI5ZmQ2IHB5M2sKKzU5MTc5IDdiNGU5NGE3YjkyZTllZTAxYWFmNzc5ZTQ1ZGQ4Nzg4MGVjMzI3YzggcHkzaworNTkxODAgYTdjMThiOTI0MjM2YTA3ZTlhNjNmNTE4M2QxZDgyOGFiNTFjMmFlYyBweTNrCis1OTE4MSA3YjMwMTExMjQ3ZjY3MjAwN2MyNmVjN2UzNDI5OTRkZjMzMDg5Y2VhIHB5M2sKKzU5MTgyIGU2MTY1ZTM4OWM1MDIyYjQ2ODczYTVmMjlkZTgyNzkxMDgwMmFhNWUgcHkzaworNTkxODMgZmY1ZGYxZmMwZmNjNGE2ZGYzMzhhOGNlYzVmMTg0ZDA5OTRlNzA5YyBweTNrCis1OTE4NCA1MmJiZTMzNjVjNzJjMjcwZjc1ZDE3M2MwYzY5OGViNGNlNjAxNjA0IHJlbGVhc2UyNS1tYWludAorNTkxODUgNzNmODM4OTllYjlkOWVjMDBlNjIyY2RiMDBlMTdkODI2NWI5NzZjOCBweTNrCis1OTE4NiBlNGIxZTA1Y2UyNjM1Mjc1NWMwMmQzM2Q5MTE5ZjdhNGVmMzE1MTU2IGxlZ2FjeS10cnVuaworNTkxODcgZWJjNzM4OTI5N2Q2OTFjNmUxNTljNTk5OTllN2UwMjg1ZjBkNTY2ZCBweTNrCis1OTE4OSA0OGFmNjM3NTIwN2U3MDhkYjQxYzE5YjYwMzczYmM2MWRmMDNmZWIwIHB5M2sKKzU5MTkwIGY0OGQyZWY3MmU3ZTM5NDI0YjA0YWEyNTU4YjliZjYwYmEwOWJjYTIgbGVnYWN5LXRydW5rCis1OTE5MSAwNDc2NDU3ZmZiMzkxZmQyZjA0NjhjNzIyZTdiYzVlNjM3NTQxNTYwIHB5M2sKKzU5MTkyIGU3ZmVkN2E1OTU3NjhkY2UyOTNlNWQwNjNlNjBkZjhjODIwYmNhMTggcHkzaworNTkxOTMgYjRkYTcxYTg4ZmMwMTVlZDQyOGE3ZmVlY2RhMTgzOGYwOTU1OTljYyBweTNrCis1OTE5NSBmMmUyNDc5YWZkZjBiMzMwOGYyNzViYTY4ZmZlNzY4NTYxZjQzOTI2IGxlZ2FjeS10cnVuaworNTkxOTggOGY5MmI0ZWU2ZmM0Y2Y1OTU0ODliYmM1YjhiOTJiMmQ1ZDFmMmExMCBweTNrCis1OTE5OSBiYTMwNTYxMTliMjgzYzBkMzk0MzhkMmU1OTMxMDYzNGYxNGMzNjU1IGxlZ2FjeS10cnVuaworNTkyMDAgNWQxMDQ5ZDRjM2M2NTg0NzBkZTAzNzEzYmRjMmU2YmM5ZmRkMTNkZSBsZWdhY3ktdHJ1bmsKKzU5MjAxIGJmZTAzN2UzZmQ1NWZmMmZiODdkYjYwNWZmZjllNmE4MzE1NGZiYjAgbGVnYWN5LXRydW5rCis1OTIwMiA0NWNlZDZhYjA2NmQ1YmM2MTNkMThlZmU5NzAxYzBmZWY2NDBlNDhhIHB5M2sKKzU5MjAzIDYwZTZlYWEzNzhkOWY5MWJlMmI0OThkNjYyYTU2ZDVlY2FiZGExOTcgbGVnYWN5LXRydW5rCis1OTIwNCBkNDRmZmZkYTJjZDA4NzU3ZGVkNTliNzNhYzQyOTdiMzg1MTcxNmEyIGxlZ2FjeS10cnVuaworNTkyMDUgMTJlNzI4MDM1ZTJjNmNmMmJmZDEzMzM4NjZmZjQ5ZDYzMWIwYTZhMyBweTNrCis1OTIwNiA3MWY0N2Y4NjQ2OTFlODQ0ZjM2YzQ4MWJlM2JlNzYxYjBhZjdjZjNhIGxlZ2FjeS10cnVuaworNTkyMDggN2U4ZTg3OTdmOWQwYTg1MThiNTZiMTMyODliMTUzNmFmZWZkOGQxZiBsZWdhY3ktdHJ1bmsKKzU5MjEwIDkxOGJiZWUzYTU0NTg4MDBmMmJlMWVmMWJmYjM4ZjY3NjAxNTliODUgcHkzaworNTkyMTEgMWYwMjRhOTVlOWQ5MTZhMzk0NTNlM2Q2MzlmZTA3ZWM1NTA1OTgwZSBweTNrCis1OTIxMiA1M2IwOGZkODhiZjQ3NWJiNGY2Nzk5OTFlMTE0ZGMwNGMyMTFjMGFiIHB5M2sKKzU5MjEzIDUzMGZiOTg1MmM1MDQzZmVjMGJkMzczYmIzZDJlMjVlZTEzNWRkOTIgcHkzaworNTkyMTQgNGMzOTAyOWUzZmIwMzBhNjdmNzU1ZjdjNjE4ZmMzY2U5MDg4MjE0YiBweTNrCis1OTIxNSA0MjljYWRiYzViMTA5M2NkODA3ZWM4ODE2NWQ1OGE3YzFjZDljMTViIHB5M2sKKzU5MjE2IDQxYjdmODAyNjVkYjE5YjM5ODQ4NTc1NDNmYjNjMWE2Y2JiYTY0NTkgcHkzaworNTkyMTcgMTU2NDlhZWYyZGI1NWUxMjcwMDk0MWEzY2EzZjAxNTdlMzllZTkzYSBweTNrCis1OTIxOCBlY2NiMTk3MDQ0ZGQ0OTVkN2Q2MTA0ZjA3Njc1N2Y2ZDY4YjI4ZTg4IGxlZ2FjeS10cnVuaworNTkyMTkgYzAyNGI4OTRkOTI5Y2VkNGNiNmVjNTM5MGY4ODRiODk0M2E2YTdjMyBsZWdhY3ktdHJ1bmsKKzU5MjIwIGU2Y2E5MmIxOGNmNGRhNDJlYzU5MDdkZWJkNDM2NWNjZmUxZTc1YjEgcHkzaworNTkyMjEgZjIzODVkOTgyODJhYmEwZDkxMGQwMDk5Yjc5YWVjYWI2MWNiNWQwNiBweTNrCis1OTIyMiBjNGE2ZDNlYzQyYzEyNDkyNjcxYzc4Nzc5YTlmMDY0YzMwZDc1NjgyIHJlbGVhc2UyNS1tYWludAorNTkyMjMgNmVkNzdmZGE4YjkxNDgwYWI5YmY1MTlhYzY2OTQzMDExYjI1ZDRjNiBsZWdhY3ktdHJ1bmsKKzU5MjI0IGI2YjViNmNkZDIwMmE5MGVkNWRlMzIwMWM3OWViYTZhMDNiYTQzNWEgbGVnYWN5LXRydW5rCis1OTIyNSA5ZWY4NTcyNGY0YjFmNTIzN2EzMzJhNGUzZWUxMzU3ZDQxYzhjYTIzIHJlbGVhc2UyNS1tYWludAorNTkyMjYgNDlhYzU4N2UyMmU5MWYwMTdlYjFkMDIzMDBhNGIzOGU3ZmRlNWFlOCBweTNrCis1OTIyNyAyOTVjZjA1ZmRkMmMzMjhjNzUwMWM0M2MwNjU2MWU1OTRjNzY4OGY5IHB5M2sKKzU5MjI4IGQ2Mzk0NThjN2UwMjQ1Y2IzYzA0YzEwYmEzMGMxM2RkM2U5MWRmY2IgbGVnYWN5LXRydW5rCis1OTIyOSAwY2M1NTJhYjc2YmQzOWMzZjA1YzMzMjgyMDQ0NGNjNTAxOWE3YmE3IHB5M2sKKzU5MjMwIDg5NGZlZTI3OWRiY2VmMTYxYmMxMWU3ZWE0ZmVlMTY3Mjk4NDIxN2YgbGVnYWN5LXRydW5rCis1OTIzMSA0NDE3YWI1YjM1MWU2Y2Q4NGNkZDAzZmJlN2UwYjVjYjk1Mjk4NzAyIGxlZ2FjeS10cnVuaworNTkyMzIgMDAwNDhmZWRiYWEwZTIyZTNmZjU2YjhiOWMyMGE0NzI1YjlmZmFjNyBweTNrCis1OTIzMyAzZWY2ZGJjNDM1MzFhMWNiZjI4NGE2ZWNlZGJmMDhjZTRjNzRlMzY3IHB5M2sKKzU5MjM0IDI4YzgwMjgzNzI1MjMzZDFmNDU2NDZjZWM3MTE3YzQ0YzcyNTM3YWIgcHkzaworNTkyMzYgM2NlYmRlNDc4Y2M0ZGZlMzM3NzVjOTQxMzQzNmRlMTQ1YTk0YjlhMiBweTNrCis1OTIzNyA1MzExMzEwNmZlYmI1OTU1YTQxMTViOTljMzA2Njk2ZmJhZDEzMjBmIGxlZ2FjeS10cnVuaworNTkyMzggM2FhMTEwZjY4MGFiM2UwYTA4MTcyOTg0ZTA4OGFkNTdmNmRmYWFjZCBsZWdhY3ktdHJ1bmsKKzU5MjM5IGY1NjQ0MDVjODEwNDFkZmI4ZTZiMDU1OGI2ZjhlYmEzNTQ3OGQwOTggcHkzaworNTkyNDAgYjQ0MDU5ZTBmMDc1OWVkMTJjYWFlNTM1OWUxYzNhZjg1NjQwY2JhNyBsZWdhY3ktdHJ1bmsKKzU5MjQxIDJmNDdiMjI4YmEwNjU0YTBhMGMxNWI1OGExMDJlYjVlYjY1YTNjMDQgbGVnYWN5LXRydW5rCis1OTI0MiA3NTc3Yjk5ZWM1M2I1OTJiY2JlOWJmNDU5MWQ0YjcxYjdjMmM0OWE5IGxlZ2FjeS10cnVuaworNTkyNDMgYzVmMmM5Nzg5MzEzNWZiZjg3M2EwNmQ5Mjk0YmRiNDc0MDM4ZmMyMSBweTNrCis1OTI0NCBmNGU3YzcyOWIzYTI0ZWMyYjg1YmVmZmNiNGU1NzhkZWI2NjMwYzkzIHJlbGVhc2UyNS1tYWludAorNTkyNDUgMTY1ZTUyN2MzOTlhZWU1Mjg2NTA0ZjBlMzJkZWUyZTIyOWI2MTFmNCBsZWdhY3ktdHJ1bmsKKzU5MjQ2IDUxYzFlYWViODc4NmE2OTJkNTM2NDZiYzNjYmM5ODU3ZWZhYzdmODIgcHkzaworNTkyNDcgNjY0YjBiYzkyYjk2ZmRlOWU3NWU2MDg3OWEwYjE3ZjlkYWY5YTU2MSBweTNrCis1OTI0OCBkY2M0YmM1OGFmNTJiN2VjNmYwNTA1MTJhNDZiYzQzZWEzZTM2NTk5IHB5M2sKKzU5MjQ5IDgwYjQyZGIyZWFjOTJiZTg5ZWQxNDBiNjllNDIzZjc0MWIxMGY2ZWEgbGVnYWN5LXRydW5rCis1OTI1MCAyYmFhYmVlNDA3MDJmODQ2MGMxYmU3MWVmYTI5ZDAzNTQwODlmMzdkIHB5M2sKKzU5MjUxIDRjYjk1ZmM0MTI5ZTBlMTM1ODQxZjA3MmY0NGU1NTEwZjYwYmYzOTYgcHkzaworNTkyNTIgMzUxYjdiZDc4NmU0YWVlZDMzZDk2ZmZhYTRkNjBkYmVlY2UzZTk2MyBweTNrCis1OTI1MyAyYjIxZjE1OGFiOWZmMzE1MDg2MzhlODJhYmJjMTg4MzE0NWIzMDI4IGxlZ2FjeS10cnVuaworNTkyNTQgYzIxOGQxYWM5MTZlNWZlNDNiZGQzZDVhNWFkNThlMzYyMGUyYjI0NyBsZWdhY3ktdHJ1bmsKKzU5MjU1IDExMGZmNjE0ZWMyOGFkZGVmNjNmMWZjYmY2MGRjNjU4ZDYwZDA1MDkgcHkzaworNTkyNTYgOTQ0YWUzNDVlOWZmYjQxYTlhMThhZWYyMThhYzkyMDc2MzUwZGVkOSBsZWdhY3ktdHJ1bmsKKzU5MjU3IDg2YTczNWI0MmE4ZmNlZDlmYmJlMGM1YmI1ZjYzNWRlNzNkMTk1OWIgcHkzaworNTkyNTggMjEzMjFkY2YwYWI1ZDlmNzZmMDYxY2NjZmUwMGVlM2Y3ODlkN2QxOCBsZWdhY3ktdHJ1bmsKKzU5MjU5IDZkN2ZkOTVlZjE0YWU5N2QyNjMxNzg1NWYxYTI5N2VjM2YxYTFmNWUgcHkzaworNTkyNjAgZTYzNDUxMWI0YWY1ZGE4Y2ZlNjg3YzIyM2U4OGZjNWYyZTM0OWM4ZiBsZWdhY3ktdHJ1bmsKKzU5MjYxIGIyMWIxYzRmMDQzOTViOWIyYTFhNTBhMDU5NWNlNjM2MGNiZTM1OWMgcmVsZWFzZTI1LW1haW50Cis1OTI2MiA0ZjFiMjBlZDk4ZTVmYTc1NzgwODAwZDQ2ODM3OTAwY2NlOGMzYjEwIGxlZ2FjeS10cnVuaworNTkyNjMgNjIyNGRjYWM4MDdkODczMDBjOWI3Yzk4YTZhZGQ3OTZhMjJhM2RlNyBsZWdhY3ktdHJ1bmsKKzU5MjY0IGJmZGVhNjUzODhjMzFhNjViYWJiZjNkZTgxOWYxZDA0Mjk1NDM5NzEgbGVnYWN5LXRydW5rCis1OTI2NSAxOTlkZmY4NTMwYWQ5ZGI5NmIzZTAwN2Y1MGNlMGQzOGU3NGE3OTBjIGxlZ2FjeS10cnVuaworNTkyNjYgODIzMTQxYWRiMDgwMWFhNDNlZWFiZmMyM2NkMTkxYjg3NmMxZWE4YyBsZWdhY3ktdHJ1bmsKKzU5MjY4IDA4ODlkYWY2ZDBkOTRiNWY5NjdhZDY5NzBlMmI5ZDUxN2FhYTZhNmEgcHkzaworNTkyNzAgZjMyNDYzMTQ2MmEyN2M2ZDJhNjg0ZjNiYjU3MDkxODVmZjZiOGYyYSBweTNrCis1OTI3MSAxYWM3YmFhZWJjZTc3NTQ5YTZjNTdiNDIyNWZjNmUxZjdjZDc3ZTFkIGxlZ2FjeS10cnVuaworNTkyNzIgYWJhM2QwOTQ5YTFkNTUyZGQ3ZWVmYTE5ZGRjNGE2OGRhNzYwNmVlMSBsZWdhY3ktdHJ1bmsKKzU5MjczIGU3YmNhYzg1NjI0NTJjNjlhNDgyMGMyYzVlMzg5ZTczZjBhZTBjZTcgcHkzaworNTkyNzQgMWUyNjYwMTVjZjViYWVjZmQ0MzA3ODA0YjBhNGRlYzY5NmY1Mjc3ZSBsZWdhY3ktdHJ1bmsKKzU5Mjc1IGZmMTc2NmViMmZjZWVmMzNlNTlhNjQ1Mzk0NzA5YmJlMGEyMTdhOWQgcHkzaworNTkyNzYgMjdmZGNhM2FhN2Q0NjhkMGNhZDEwOThjOWMwYjI4ZjFlZjJkZWJlMCBweTNrCis1OTI3NyA0MGZjYWFkZmIxNjYzZmQ5ZGZiYWRhOGY1YzUzMjVkMGJjOWViNmZhIHB5M2sKKzU5Mjc4IDRlMWQ2NDkxMzY3Yzc1OGQzMDZkMjI3YjZlN2RmZTA3Nzc3NjFmM2EgcHkzaworNTkyNzkgY2VkYjdhZGM4N2M1ZjdjM2EzN2VhYmYxMGUyNzVjYTk0ZDNlOTE4NSBsZWdhY3ktdHJ1bmsKKzU5MjgwIDE2OWE4MzY0NTM2NzE3MDk5YWQ0NWI0MWMxNTVhNjU2YzE3NTE2NjggcHkzaworNTkyODEgNTc4MWUxOTI4YmNhNjU2MzNiZDJlYzVjM2VmYWMxMzg2OTNlZTIwOSBsZWdhY3ktdHJ1bmsKKzU5MjgyIDdmMGU0ODUzNmEyN2IzNWMwMjlhY2M5M2Y5ZDQ3YzNkN2E4ZTQ2NDggcHkzaworNTkyODMgYTFjM2JkMzgyNzcxY2U0OWJhZThmZmZjMDAwODU5M2Y0NmNkN2Q4ZSBweTNrCis1OTI4NCA5MWQxMTRkMWI1ODUxMzQ4MWE4MzRjZmIyN2EyOWEyZTUzMjM5MDBjIHB5M2sKKzU5Mjg1IDQ4NmRjNGRmMzc4OTY4NzEwYjgwNjk4OTZiOTRlMzc5ZmZmMjNhYzUgcHkzaworNTkyODYgMjBhYzQ3NzdjMGNhMTAzZTkyZjRlMjk3N2VhYjhjNTI4NTJiN2VlMyBweTNrCis1OTI4OCA4MDNlZGY5YjFkZDkxNDMzMjZlY2MyZTZhZmFjNzViY2Y2MzhiNGQ2IGxlZ2FjeS10cnVuaworNTkyOTAgZWFkMGQ0N2IwMTJiNTkyYjdhYmNkMTE5ZTAyMzYxNGY4M2EyY2FkMyBsZWdhY3ktdHJ1bmsKKzU5MjkxIDdlYWIxN2JlOGNiNDk3ODBiOGQwMzY3ZTA0NzFiYTU5NTM2MDc0NDMgbGVnYWN5LXRydW5rCis1OTI5MiA2NDU4MjA4M2NiOWFmYTQzYzA3NDUwOTAwMTNhN2M3Y2FiYTQyYjBlIGxlZ2FjeS10cnVuaworNTkyOTMgZmU2YmVkYWZiNDZhNjQ2MGViMDBjZWQwOGFhMmI4MTRkOWU3ODYyMiBsZWdhY3ktdHJ1bmsKKzU5Mjk0IDMwZjU0OTc3ODI4YjMzNzUwYjM1YjZjYzY1ZDM4NjlhMGVkOTVhMDMgbGVnYWN5LXRydW5rCis1OTI5NSA5NzIxMGQ4NjNkMTIzNGM2ZTRiNjNkNzkyZDdlOWMwNzg4MzU0M2I3IGxlZ2FjeS10cnVuaworNTkyOTYgNGQxNmVlMzkzMDFmOWMyMWU5ZDkyY2RmNjliOGEzYjI3YTY0NGRiOSBweTNrCis1OTI5NyA5NzMyNjg1ZWVlMTcyYWE3NjY1OWVjYmNhNmZmMmU5NjVkMTg0N2RkIGxlZ2FjeS10cnVuaworNTkyOTggOGFjZDhmNWM2MDgxNzUyYTJjOGE1NjE5OTFlYTE2ZThkOWE0MmIyMCBweTNrCis1OTI5OSA3ZTg5ZjVjZjZiMjE0ZjRiYmY1NzcyZDg2NzIwZWE3MGQ4Yzk2Mjg5IGxlZ2FjeS10cnVuaworNTkzMDAgYWE2MDE3YTJlOGY5MjZmZDExOTQyZDRkNzAxYzI1MzdkNDRjYjM4OSBsZWdhY3ktdHJ1bmsKKzU5MzAyIGJlN2E4NWMzNGE0YzRmODczODZlOGMzZGU4MDUyZTAwMzdhMzY4ZTAgbGVnYWN5LXRydW5rCis1OTMwNCBiNjM3MzQ5MzM2ZmQ5ZDEyMjdhZjA3MzUzMGY5NTA1MzZjNzc4ZWE0IHB5M2sKKzU5MzA1IGVhZDdhMDUzZjViNDM0ZmI5YzM2Yjk2MzJjMDMxYTQ1ODNiZDM3ZTAgcHkzaworNTkzMDYgNDRkMGM3MWRjM2MzYjM4OWRmZWRjZjMyODc3ZmU1MDFiNzBjMDc4NCBsZWdhY3ktdHJ1bmsKKzU5MzA3IGFlZWZiODk3Mzg0ZmI0MGRhOWYwZWQ2ZDNmNTYxZWZjYmJmOGRlMzAgbGVnYWN5LXRydW5rCis1OTMxMCAwYmZlYzYwOTgzN2VjNTAxYWJjODE2NjU4NTc2NjBiYWIxNmI0NTAxIHJlbGVhc2UyNS1tYWludAorNTkzMTEgZTA4YjEyYzNiOTEzNjQzYjBhZDc4YzY3MjQ2MGM1ZWNlYmE3OGViOSBweTNrCis1OTMxMiBkNzUyMTBiYmNhOTdhZjg3OWU2NDYxMTM4NzRlMWQ2Njc2NDdkMzBjIGxlZ2FjeS10cnVuaworNTkzMTMgMmE0MzUwN2NkOTUzMmViMDQxYmY1ODQxNzEwZGM0YzhiN2FiMzFjYiBweTNrCis1OTMxNCA4MjVjZmZkNmMwY2RhNzQ4NjUyNDgxMmQwMzI2YmQ3NDQ3YzA2NDk3IHB5M2sKKzU5MzE1IDhlNzRhZjE5N2U2YzAzMjRkOWE5NWFmODM0NWRiYmQwYzc5ZGZmZjUgcHkzaworNTkzMTYgODQyYjNkNDViZmU0YzNjZjdiMjYyNDJiZmMyMmU4MjVjZjNiM2EyNCBweTNrCis1OTMxNyAwNDUwNWM5ODhhYmNmN2MzYmVkYTI2YzQ4NTY0N2Q5YmE0NGU3YmVlIGxlZ2FjeS10cnVuaworNTkzMTggZWNlNjVjNjliMWQzMTRlMGExYjQ1Njk3MWE2OTg0ZTE4OTNkMmJjZiBsZWdhY3ktdHJ1bmsKKzU5MzE5IGM4YjMzOWNmZWYxZmU1YjQ2MmRiY2Q5N2QwOThhM2FjODc3NDIwMjYgcHkzaworNTkzMjAgMzFhM2NlMzhiNTZjMzVkOWEwNDhjMmEyOGRhNmE2NjNmMmQyM2M1YiBsZWdhY3ktdHJ1bmsKKzU5MzIxIGM5ZmM0YjFmOWJjNjkyZjVlZDk3M2MwMzA0MmE4MTQ2YjYzZWMxYWQgcHkzaworNTkzMjIgMGNlNjEyMjFjNjNmODRmMjc1YWRmMjU0OWI5ZTE1ZjVlZjU0N2ZhNSBsZWdhY3ktdHJ1bmsKKzU5MzIzIDYwZWY5YzRlNDAxMjRkYzMzM2M5Y2FiMDJmYmI3ZGEyODI4YmNiNTIgcHkzaworNTkzMjQgN2U1MDQyZWU5NDI0NGZkZWVkZWEyYTNhYTc4ZWIyMmE5N2Y4ODY2NCBsZWdhY3ktdHJ1bmsKKzU5MzI1IDUzMzIwZDU0NGJjN2FkOTJiOWQyOGFiYjljNDBkNmQyYzZkMWE1OWIgbGVnYWN5LXRydW5rCis1OTMyNiBmMGIzMzE5YjcyNjZiOGYyY2FhZTI1MWVlZTFiYWIzY2I0MTY0OTgyIGxlZ2FjeS10cnVuaworNTkzMjcgMmZmYTRmNzk5NGEzZTljODQ1ZmE3YzEyNjQ0MWQwNGVmNmZlZmY2ZiBsZWdhY3ktdHJ1bmsKKzU5MzI5IDE2YmEwMDE2OGM2YWVkYTQ2ZGU4MTk1ZmUxMDhjOGY0NDM1MWUxODggbGVnYWN5LXRydW5rCis1OTMzMCAxZTcyNmFlYWI2YTUyOWFjY2M1YjQ4YWFjMzYxMmM3NjUyODY5NmQyIHB5M2sKKzU5MzMxIDg4Zjg2NDQ1YmU3NzNlODVhMDFiZWUwM2RhNzQzMTNiOTY4MjliMzggcHkzaworNTkzMzIgODI5OTFmZjc1YzVhNmU0YjdmZjFkOTdmNjU4Mjg2ODQ3MDQyNjNjOCBsZWdhY3ktdHJ1bmsKKzU5MzMzIDFhMmE2ZGYwZmJlMDE3MGM4MWIzZTNmMTM3MTkzYzZiMjQ3YzgzYTkgcHkzaworNTkzMzQgZmI4NGJkOTUwMGE0MGVhNmFkYjQ5NjEwOGI0YTU5MzIzZjQxM2ZhNiBweTNrCis1OTMzNSA1NjUwMTJkMTEyM2RmMmUyYTdjYmI5ZWNiMDZkZGIwM2Q5MWMzMmRkIHB5M2sKKzU5MzM2IDgxZTBjMGUyYThjMTM4NDRjMzc5NzBkY2I5YjViMTU5MWRlY2VhN2EgcHkzaworNTkzMzcgYWY4NmI4OWNlNzg0NzBhOWI5ZmJkZjA1YjcyNmYzZjJiMjcxZWIwZCBweTNrCis1OTMzOCA5ZDE1MjUzMDkxMGE2NTBkM2NhZDRhZjMwNzQ5NWEwMmZkYzAxYzBmIHB5M2sKKzU5MzQwIDFhN2RmYjYxYjRkOGUxNmI3ZTQ2NTIxNTVmYzk5YjljMWU0ZTVhMzEgcHkzaworNTkzNDEgZWY1Mzk5YjM1M2M5NWRhNzBlN2U3N2IyZjJmM2IzMjhhOTVmNDE2MCBweTNrCis1OTM0MiA1NjQ5ZjdjZTMwNjI4NTYxY2RmYTY3OGNhMzE0YWJhNTA2N2QxMjM1IHB5M2sKKzU5MzQzIDMzNDE2MWY3NGI4ZTVmZGZlYTEwMjcxZmQwMWQzZTExNTZjNDgxNjEgbGVnYWN5LXRydW5rCis1OTM0NCA2MTJkOGRlYTdmNmNlMzIzOTEyMzU4NGQ4NzVmNTMwNTU3YWMwN2ZjIHB5M2sKKzU5MzQ1IGU0YzIyNTA1ZjAxMWNmMDY3MGY3ZWUzNDg2ODBjNTE1NTRlNjIzZWIgcHkzaworNTkzNDYgNjNlNjFjNzcwYTkzMmM4NDg3YzVhNzg1OGMxZGFiYTUxMDkxMjQ0NSBweTNrCis1OTM0NyBjMjc4NzgyODFjOGY3ODFiNjhjMTE4MDQ1NGZmNjM0OTU5NTNjMTMwIGxlZ2FjeS10cnVuaworNTkzNDggNWQ5OTEwODBkODhlNWZhMWIxNDc0MDk3ZjQ4YjE0N2JkYWI4Mjk4NCBsZWdhY3ktdHJ1bmsKKzU5MzQ5IDI2YTQzNzg2Mzk1YjRkMmIyMmNlNDFiMzk3MWQ1ODE5ZWQ5NGUzMDkgcHkzaworNTkzNTAgMTdiNDM5MDFiYjQxNWZiYTI4YWVlOTA5Y2NlNjhkNjc5NTc3NWNkMyBsZWdhY3ktdHJ1bmsKKzU5MzUxIDI3ODVlMjE2MGZhNmIyNzI0MjE4Y2E2ZmNjYzk3Y2M4OWQ0ZTE3YTAgcmVsZWFzZTI1LW1haW50Cis1OTM1MiAyNTBjNGZkNGNhNTQyZDI0OGM3ODIwOTM0ZWYyMWEzM2UwYTE4MTZlIGxlZ2FjeS10cnVuaworNTkzNTMgODY3MTYxMzRlZDg3NmYzYjlmNDEyMjg0NDFkMTFmNjU4ZDQ2YjFkNyBweTNrCis1OTM1NCAxMzQ5ZWE0NDFlNDFiYmNhM2ZmNmJlY2NiZGZiZTZjYTVmMTQwZjUwIGxlZ2FjeS10cnVuaworNTkzNTYgNDBmYzg0MDUxN2ZjMDEyYmExNDcxYzU1MmYwZmNkMGY2MDlkMzMzNSBsZWdhY3ktdHJ1bmsKKzU5MzU3IGRhZDllZDMzOWJjMzQ1OGQ2MGQ5NWM0YzdlNWU1MmViYmUyOTZmY2YgcHkzaworNTkzNTggOTM0MDY5OGFlNDIxMzkwODZlMjM3YmZiODI4MDY0N2ZkNWI4YWVjNCBsZWdhY3ktdHJ1bmsKKzU5MzU5IDc5YWZhNGM1NTIxMWRmYWI1OGFkZjRlMDA0ZWQ0OWVkN2Q0ZDYwODggbGVnYWN5LXRydW5rCis1OTM2MCA2MjAwYTQ0N2RhYTE2Njc3OTUwMTUwZjY3YzI4MDAyN2U4MWYzMzUwIHB5M2sKKzU5MzY1IDMyMGY3ZWM2M2YwYmRmZDI3ZTJkZGI5MWMwNjViMjZkNTU0MDk4OGQgcHkzaworNTkzNjYgNTkwYTE0NDc2MDE5YTNjMmI2MmMwMjZkMDJlNmM5OTNjY2ZmOTc3MyBsZWdhY3ktdHJ1bmsKKzU5MzY3IGQzM2Y4Y2M3MDdjYmZlM2I5MWRlM2RjNGU0OTgwODlhMjdlZTI4M2QgbGVnYWN5LXRydW5rCis1OTM2OCA4NjBjZTk3NTVkMTViZDc4NTEwNzEzZGIzNDIzZTFmMjhhZDQ3MjFiIGxlZ2FjeS10cnVuaworNTkzNjkgNTVjMDUwNDIzMDNiMzlmMDU0YzQ3MjEzZjU2MWIwYmY1OTdlYzRhYSBsZWdhY3ktdHJ1bmsKKzU5MzcwIGExYmM2NTk1NGE5Y2JjMWUxN2VjYTg1YjcwYmJlNzA3NzhlOThhYTcgbGVnYWN5LXRydW5rCis1OTM3MSAwNWRhNDllYjEyYzE0ZjAzNDhhNWVjM2MzMzNhOTMxNDE4MDYyZGNjIHB5M2sKKzU5MzcyIDFmNzIyYjA4NTQwMjdjNWVjMmQ3MGMyNDg5Y2NiNGM0MGI0NjlhNjEgcmVsZWFzZTI1LW1haW50Cis1OTM3NCA1Mzg0NzZiNmQ3ZTA1MmI1MGE4MmZkYjFhODI0YmYwNDFlM2U4NmI1IGxlZ2FjeS10cnVuaworNTkzNzUgMTdjMTc4MDdhNjExNzhhZDY4OGFlODFiNDExNTc2ZjI5NDg1ZjViYyBsZWdhY3ktdHJ1bmsKKzU5Mzc2IGQ2NGJlYjhmYWQwNjYxNzdmOTFlZTkxZTdmZjc2YWMwYzkzN2IyODcgcHkzaworNTkzNzcgODVlNGJmZjM3YmJkY2I2ZDU2ZjAyZWRmODUzMjNiMDVhMTkyNmM0YSBsZWdhY3ktdHJ1bmsKKzU5Mzc4IDQ0YzA5MGM3NDIwMjYwMjNjYTBmMGI3MzE1MjZiM2M1NzVhZDFlN2MgbGVnYWN5LXRydW5rCis1OTM3OSAxZDk4ZmMyNjVmOTkyZTU2NmNjYmJmMDJkM2ZiZmEyOGE1Mzc0ODBlIHB5M2sKKzU5MzgwIDlhZDRhZWRmMzQ5YmU5MmEyODRkMzM3ZmQzZGQyOGJhMGFlMTEwMTQgbGVnYWN5LXRydW5rCis1OTM4MiA2ZWY4YjViOGU1ZDZmZmU4YjA0ZjY3NjhlNWJmM2QwMWYwYTYyODkzIHB5M2sKKzU5MzgzIGFmZDI5OTZmMjAyMTI0NzQ5NjIwODg5YjYyMzk4ZmZiNmY0NGUxNzYgbGVnYWN5LXRydW5rCis1OTM4NiBhNTNlZjc3ODU5MGViYjNkMGQ2NmUwMmYyMGZmOTExZmYyMmZmMDNhIGxlZ2FjeS10cnVuaworNTkzODcgYmNjMTczYzNhZDcwOTJiM2I2NzBlMjBjOTFhM2ZiYzA5YmYxMWVhMSBsZWdhY3ktdHJ1bmsKKzU5Mzg4IGYxMWRkNGQzMTVkZDBkYTY3YjcwZGJhMDRmYTVhMTFiZGFjZjlhYmIgcHkzaworNTkzODkgNzRiZGQ1MGYwN2U1ZGMzYzQ4YTZmNDIyYzk5ZTZmYjliZDIxMzk1NyBsZWdhY3ktdHJ1bmsKKzU5MzkwIDcxYWQ1ZTJiZWRkYTI3ZDA5YzUxOWExOWQ2Mzc2MWY2MWIwZGMwMzQgcHkzaworNTkzOTIgOTM5ZTgxMmNjMDljZTdiMDA5YjQzYWI5MjMwY2YwNzExYmM1OTUxNyBweTNrCis1OTM5MyA1MGIwM2FmYTBiYmU3OTMzN2FmZDEyOGU3MDEzMjIyYTZhN2RhOTllIHB5M2sKKzU5Mzk0IGMyMzI4MzZjZTVjOTQzNjQ1NDAwNTE4ZjNhZmJkZDk4Y2UzMGRjMWUgcHkzaworNTkzOTUgY2UyODBhMDRmNTVlMGZlODdiNWU5Y2ExZWM2MGQ2YTExZWE2NWQ1YiBweTNrCis1OTM5NSA2NWU4MjE0MGUyODFiZjI2ZjJlMjJlZGEwNWE3Zjk5NTZjNDIwZjhiIHB5M2sKKzU5Mzk5IDJmY2U5ODlkYTAyMTNjYWQ0ODY0NTEzYzAzNGVkZjUwNzI4Nzc4YTcgbGVnYWN5LXRydW5rCis1OTQwMCAzMzU2YWQ2MmMyYTM2OTk3MWVlYjc1ZjdmMmIxZTY4NThlNTQyMmNlIGxlZ2FjeS10cnVuaworNTk0MDEgNTgyZDJhODM4NjNjYzQzOTAzNTBjMTYzYjkxMjgzZTQyZjJmMGYwNCBweTNrCis1OTQwMiA4MDg4NDY0M2E2ZjllN2QxMzZjOTYyN2QxMjcxNDQ3ZTA3ODNjYjllIGxlZ2FjeS10cnVuaworNTk0MDMgYzZmYjM5M2I2YzgxNThiMjA1OWZjNTBiMjE4Njg5ZmQyNDRlYzRlNiBweTNrCis1OTQwNSA3MGNjN2Y3NDBkMzQ3MjYwYTBiZTYyOTA3YjRiNjY4MDFjZmE0ZGJjIHB5M2sKKzU5NDA2IDIyZTNmNWJkMTQwNzg2MzM4YWY0NmU0YjJlMWNiZmE4ZWZjZjliNjggbGVnYWN5LXRydW5rCis1OTQwNyA0ZGU1OTQ3NDBhODhmOTk2YjcwMTA2M2MyNjlhOTdjYTZmOWU2MWIyIGxlZ2FjeS10cnVuaworNTk0MTAgYTcxYTcxY2FiNjA4MjVhYzE3MjZlNTMwY2M5ZWU2MmNhYTU0NDQ1ZiBsZWdhY3ktdHJ1bmsKKzU5NDExIDBiYjEwOGEzYzBjOTdjZThiNGNjZTU5MzdhNWFlOWJlYWZhNzM3YmIgbGVnYWN5LXRydW5rCis1OTQxMyA3N2NiOGZmMzQ5MTJhY2QwN2QzYjE5ZWY1MWE0YzM5MDFjMjhiNjExIGxlZ2FjeS10cnVuaworNTk0MTQgYTk4NzdiN2VlODVkZWM4YzhjZDRlOTdiOWJlNjdmNjdlZmI4MjlkOCBsZWdhY3ktdHJ1bmsKKzU5NDE1IDYyNGY1MTFjZTlmMjQ4ZDM4YWQwOGEwMjczYzlkMjRlMGQ0NGM4MDMgbGVnYWN5LXRydW5rCis1OTQxNiAwMzk0NWExZDRmYjNjZjU5ZjgyMTJmZmQ3YjQ2MTUwMjQ2MjY3ZDM4IGxlZ2FjeS10cnVuaworNTk0MTcgOWE5NzZhNmVlOTM2NjkxZWY5YTQzZWYwYzRhYWY5Mzg1YmE3MTIzZSBsZWdhY3ktdHJ1bmsKKzU5NDE4IDExOGU2ZDY4YjQ0YTEyODhhYjc2ZTg0OTgzMTQzMTE3ZDQxZjQ3MjggbGVnYWN5LXRydW5rCis1OTQxOSBmMmY3MzhhNDM3Zjg3OWM2NDNkZDQ2NDY0ZDViOWE0Yzc4YWNlM2EwIGxlZ2FjeS10cnVuaworNTk0MjAgYWQ4YjgwNDYwNjQ0ZjFmOGZhNjM1NDg1N2MyMzY0M2Y5MDQ2YzkyYSBsZWdhY3ktdHJ1bmsKKzU5NDIxIGFhZDY1YTI0MjRlMzhkOGE3MmE3YzBhMjY1NmRmMDM5ZDEwNDAzODggcHkzaworNTk0MjIgNGVlNzQzMTBlY2Y5ODg3NzRiMzRhYmE1ZGZiODJhNThkMDJiNTBlOSBweTNrCis1OTQyMyAxNzQ0OGU1ZTk2NzFkYTRiOTYxOTYzMDhmNTEzZjYwMjJkODU4ZDAxIHB5M2sKKzU5NDI0IDY5OWZjZGY1YmJkNzRiMDEwODQ0ZmQ0MWExN2NhYTZlYTljZmNiNzMgcHkzaworNTk0MjUgNmI1MTdhYzEwZThlZjhlMjM3YWQxYjZiY2FlYmIxNjNjNDU0ODdiNyBweTNrCis1OTQyNiA5MWNjY2U3NDFkMTE0MWQ5NmQzYTNmMzAzYzI1NDExNjQ1ZGQ3MDliIHB5M2sKKzU5NDI3IDZkNWYwODYwMWY0YTk1YjQyMTVmYzVjOWFmNDdiZjFkZmFjMjE0MmEgbGVnYWN5LXRydW5rCis1OTQyOCA1MGE1MGU3NTIxNDIzYTI3MTUzODM5MzQ2NTMyOTBhNWE4NzBjYWYwIHB5M2sKKzU5NDI5IGE1YzQ3MzkxMjFlMTRmZDNkYTE3NDlhNWIwZGVjNjJlOTRlZmM5OGIgcHkzaworNTk0MzAgNjFkZjVmNTM3OTY5ZTZhYWVjYjQ4MmQzNjU0MjAxYWY5NDZmMjU4OSBweTNrCis1OTQzMSBmNjdlYzRlYjQ3OGE4OTA4YzkwMjMxYWEyMGYwNThlNmU5YzBlZGNjIHB5M2sKKzU5NDMyIDQ0YTI0YjU5YjE2ZDAyMTA2ODJkZGIwMmFhZmJhZGIxYzVlYzU2NGMgcHkzaworNTk0MzMgYmUzYjY2MDFmOTg5YTY4ZTVhMDE5Y2Q4Mzg2NTQ3MGZhZDlkMWJlNCBweTNrCis1OTQzNCAzNjlhNGUwNmZkMzAxMTYyYjg3ZmJmODA4OTMzNTJiZGZjMDRmOGViIHB5M2sKKzU5NDM1IDZjZTZlMmYzZGNiMmQ2ODdmOTVhZDQ1MTYyYzE3ZDMzZDE2NDAzNDIgbGVnYWN5LXRydW5rCis1OTQzNiA1YWM4NzRkMDk1NTYzNmQ1MzljZGNkMTk5NjJhMGZjOGRiMmY4MmQyIGxlZ2FjeS10cnVuaworNTk0MzcgNjZkYmUxMmRkZjMxZDc2YzQ4YTYwM2JkOTBlZjAzNDMxZmVjMjYxNiBsZWdhY3ktdHJ1bmsKKzU5NDM4IDQwYmZkNmYxY2MxNjkwMzMyMmExNmMyYjcwZDJkMDkyMGVmOTUxMTggcHkzaworNTk0NDEgZDc3ZmQxYjhjMGM1NDczMjA5M2YxNDcxMjNhMGM0OGZlM2MyNWEzMiBweTNrCis1OTQ0MiA1YWJmZDA3ZTk3ZDQ4OWYyNWM1ZGUyMDJlZjZmMzRlYzA0NGJiMmJjIGxlZ2FjeS10cnVuaworNTk0NDMgYWFjMzNlZTFhOGZjNzMyNzdkZTAxMmZkZDFiNWI3MzFhYjA3NjhkNCBweTNrCis1OTQ0NCA4ODlhNjQyMWYxMzViNTllYzI0MmQ1NDUwNzJhMGU4ZjliNzEwOGNiIGxlZ2FjeS10cnVuaworNTk0NDUgOWNmMmJmOTQ2MWM0MTBkODU4ZWFjYzFkNmFlYmE5ZWNmNTQyODQzYiBsZWdhY3ktdHJ1bmsKKzU5NDQ2IDMzZmY0MGU2ZTEzNzU4OTU2ZTFmZTQ2ZmEzZWVmYzRkY2MyYzY4YjUgcHkzaworNTk0NDcgNTllNjRmYTNhZDFkOWNhMmU3NzU5OTkzMGJlNzVmM2JiMjkzMWY0MiBsZWdhY3ktdHJ1bmsKKzU5NDQ4IDIwMjhmZWI5NGI1NzU1MjA0OWFlNTg3YzQ3NDU3N2M3ZTFhY2EyMGYgbGVnYWN5LXRydW5rCis1OTQ0OSA0NDRkYTA4Zjc4YTRkYTc5ZjZjNzE3YjE3ZWJhMjA3ZWY2MGQxNWFlIHB5M2sKKzU5NDUwIDYwYTc0MGY1YTU3YTNhMTdlOWRhNjJkNDc2NmRmYmViODAzNGIzNGMgcHkzaworNTk0NTEgYTM4NmVmMjhiMDA4NzI4ODM2YWE5NDM0ZDhlNGRlZmI3OTJkOWY5NSBweTNrCis1OTQ1MiAxMmNmOWZmZjlkMGFlZDM2ZDZhMmM2ZmU3YjQ0NjdmODk4N2FlNWI1IHB5M2sKKzU5NDUzIDZiMzVkZjQwYmNhY2FmZDZkMmQ1Y2FlYmQ5MzY5MGYwNjA2NTI4MWIgcHkzaworNTk0NTQgNzZjZTU5N2M3MmVlMGUxMDU1ZTVjNzkwN2E4Y2Y1ODQyZGU3MTg5YSBweTNrCis1OTQ1NSA0Nzg5NWNhNmYwY2JhOGZiMWE4Zjc1OTAyNzE1ZThhNTAzZTEwN2Y1IGxlZ2FjeS10cnVuaworNTk0NTYgMWIwY2U5ZmZhOTcyNmQ1Mzk0YzQ4YjliNThkOTEzM2IzNWZjMDUzMiBweTNrCis1OTQ1NyA2ODJkOTc4OGEwMzhlNzJmYmFiYjEwMDM0NjczYzFjNmZkMDA0MjMzIHB5M2sKKzU5NDU4IDY2Y2UzMzE0YzE5ODIwYTcxYWI5NGE4NmIyOTBkOThmMjcyN2VjOGQgcHkzaworNTk0NTkgMjQ3NDlhMzgwNDA5MzQwMWRlODAzMTQwN2Y3ODBjZTY2YWIwZGNjZCBsZWdhY3ktdHJ1bmsKKzU5NDYwIGViNjVlMTA1ZTRiOGNkYWRhMjAwYTk1MmJkZmE5NGE0ODI1OGI1N2IgbGVnYWN5LXRydW5rCis1OTQ2MSBhNGFhYjcyYzJjYzBiYzQ5NDMxOWQyMTEwNWU1N2E1ZGU4NDc4ZWYzIHJlbGVhc2UyNS1tYWludAorNTk0NjIgMmM2ZmUyZGNjODhlYTFkODFiYzVjMjE4OTY0MzVkNmY5YzUxMmUzZiBweTNrCis1OTQ2MyBlNjVlOWM2NDljZmRhZmIzOGMzNGE4ODQzYTE5YTgzMjlmMmJjNGFlIGxlZ2FjeS10cnVuaworNTk0NjQgZjkwOTg3MjkxN2I5NWQ5YjNjZGQ5ZmZhZTg1NDUwOTUzY2JiNTc1MiBsZWdhY3ktdHJ1bmsKKzU5NDY1IDdhZTYwNGIzNTMzYjUzNjM1NGRhMzFhM2MzZTM3ZjhiNTA5NjdiN2UgcHkzaworNTk0NjYgYjUyMzljY2Y5NGI1YmE3Mzk4YTdjNzE3YzQ2MTQ4M2JkODBjMDJkMCBweTNrCis1OTQ2NyA3MjdhZjE2MWNhNDY0YWJkMjcxMzA0NGFjZGY1ZjUxMzRhNjgwM2EwIGxlZ2FjeS10cnVuaworNTk0NjggMmUxOWMzZTUxMWJmNTkzOWY2M2Y0NmViNjQzZGUwZTcxMjdiMGQxNiBsZWdhY3ktdHJ1bmsKKzU5NDY5IDNlMDg2N2EwNzc2NTdlNDE0ODc1NTA0NGUxYmQ4MzYyNDhkMTFhMjEgcHkzaworNTk0NzAgZWIyMjYwZGNiMzY1ZmRlNjUxMWY0MWFmYzRkODI0YTRmMjkyODllYiBweTNrCis1OTQ3MSBhNmQxMDU5ZjIyZTJjZDE0MDRiYTBhMDJjZjIyOGQ1MjQ3YjQ0ZDlhIGxlZ2FjeS10cnVuaworNTk0NzIgNGViYmE5YjI2ODhmNDA3MmMxN2Y1OWViNGE5NGQ0MDMwYmI1NThlMyBweTNrCis1OTQ3MyA2NmQ0Nzk2ZWU5MmNiZmM0NjhkZjhkZjc2YzNmMjFjNzNkODllMWY4IHB5M2sKKzU5NDc0IDlhMDlkNDQyYmNlMjdiMmQ3Mzc2ZmQzOWJiMTFiYjBjOGUxZjc5NzQgcHkzaworNTk0NzUgOTkyOTc4MmY1Y2I0OGQwN2I0NDUxMDZjMjM1ZGIyMjYyODFiY2U4MSBsZWdhY3ktdHJ1bmsKKzU5NDc2IDAxNzA3MTRlYjA0NDIxNThjMzEwYTI0ZmRiNDg3ZmRhYTExNzFlMjkgcHkzaworNTk0NzcgZTE3NmI0YWVhOWM1MGY1YTE5ZDJhYzViNDNkNDg2YjZjYzE0ZmU1ZSBweTNrCis1OTQ3OCBjMmU3MmZlYjUzYjM2ZWJjMTUwYTk2ODFiNDE4ZTk1NTcwODkyYjMwIGxlZ2FjeS10cnVuaworNTk0NzkgNTQxMDUyYjA0NGYwOWUzMTA5NmRkZDk3ZTYyOWNiZWI4YjdjNDA1ZiBweTNrCis1OTQ4MCA3YThjOGM1Njg1ZmNjYjE0ZmZjYjZmNmY3Y2E2MGI4OTdkOTM5ZjZhIGxlZ2FjeS10cnVuaworNTk0ODEgNmFlOTRhMmJhNWRmYWZhMDFhMGU0MzlkMTc1OTUxZGE5YWI3ZDY0MCByZWxlYXNlMjUtbWFpbnQKKzU5NDgyIDIyNmEwNjJhYjQzZWY3Nzc5Nzc5NGJhYzg1ZDFlMTg1ZjU2MmJlNWYgbGVnYWN5LXRydW5rCis1OTQ4MyBkOGUwNjU0M2NkZDgwZTM0NWVkZTE2YzZlMmEyN2YwNDllN2Q1YWM1IHJlbGVhc2UyNS1tYWludAorNTk0ODQgNTg5MjYyZDgxZTI5OGZlZWM3MDg2MzJmZGM4Yjc4OWMxNjViNjI3ZiBsZWdhY3ktdHJ1bmsKKzU5NDg1IGYwNGMwMzY1YzlhYWZiYjM5ZThiNjFkYWM2Y2Q2MmVhNTE0MDE4ZGUgbGVnYWN5LXRydW5rCis1OTQ4NiAzMDk2YjAxMjczM2UxOWE0YjliY2EzNzMwNTAxOTgyMDZmMDBmOWE2IGxlZ2FjeS10cnVuaworNTk0ODcgNjZlZDZlMDNlYmJkYTllZmEzMjEyOWFkNzc2MjM5MWQxMmZkZWRmZiBsZWdhY3ktdHJ1bmsKKzU5NDg4IDcxNjIzODc4MDU3YjJlNGZkYmRiYTJhYjRmNTg4MDEwODc4MGM5ODYgcHkzaworNTk0ODkgNDRjNDE4YjJiZjdmNjYwOWVmNzIxMGIwMzMyZGM4MDRmZjBmNTVjNCBsZWdhY3ktdHJ1bmsKKzU5NDkwIDdhNjJjNmQ5MTA3ZGY5ODJkZjFmNzViZGEzNTU1ZWMzMjM0M2RlOTEgbGVnYWN5LXRydW5rCis1OTQ5MSAyOTRiMWE3OWYyMDE5YWJjMDJkNjhiMTk1YjJlOWI2OTBmZjliYjM4IGxlZ2FjeS10cnVuaworNTk0OTIgNjM1YTIzMjgwMTEyNjNkMjk1N2NhYWZlNjNkNGI5YzU2MmQyMjJhZiBsZWdhY3ktdHJ1bmsKKzU5NDkzIGEzMjdmM2UyNjE1NjExYmM1NDgzNjgzYTBlMDliM2E0MTAyZmJkZTYgbGVnYWN5LXRydW5rCis1OTQ5NCAzYzhiNzAyZTVmMjA3MGVlY2YxMDQ3MWY0Y2Y1MDVhNzk3MjE2MzVlIHJlbGVhc2UyNS1tYWludAorNTk0OTkgOTYxZTg5Y2M3OTExYzBhNmMwMzk3MDhjMzE1NTU2NzMxNDAxNGU4MSBweTNrCis1OTUwMCA5MDVhOTY5OTdiN2M4MGViMmRhMzMzN2JhYzk1Yjg3OGRjZDliYzdhIGxlZ2FjeS10cnVuaworNTk1MDEgZGNhOTU5NTY3MzBmYzNmNjE5NzBhNmVmYTNjN2I5ZDA2YjFlYWQ1OCBsZWdhY3ktdHJ1bmsKKzU5NTAyIDdkYTk0NzU3ZWM1YmQzZjc4Zjg2ZmI2OWZjZDFlMThlOGYxOTVjMDggcHkzaworNTk1MDMgMjBlZDFkNDE1NDA5ZWFjMGE5MWNlNzBlNzBkMmI0ODY5MjBjYTU4YiBsZWdhY3ktdHJ1bmsKKzU5NTA0IDFiYjliMDdhMDFkZGExZWI5M2NlNDg0NjI4YzkzZTFmNmFlZDdiZGEgbGVnYWN5LXRydW5rCis1OTUwNSA0NWM3OGU1MGNiZDVlMGU1ZTdkYWRlZTc3ODIyYjRiYmE2NmQzZGNkIGxlZ2FjeS10cnVuaworNTk1MDYgMTlmODk0YWU4NjRhZjFkYTJhM2MyNGUzNGI4N2MxMTI2MjVmOWM3NSBweTNrCis1OTUwNyAxNGM1ZDI3NWRkZjE0MDNhNmUyZGVjNzA2ZTVjNWMzZWU2ZWZlM2Y4IGxlZ2FjeS10cnVuaworNTk1MTAgMTE1NzA2ODQ2MmI1MzhlYzhiYTA2NGIzOTdlMjc3MjQzZmM1ZjBjZiBsZWdhY3ktdHJ1bmsKKzU5NTExIDA2ZDEyMmI0YmZmZDdhZWQ4YmFlNDZlY2U1NzhhNThiNzQ5ZDQwMzcgbGVnYWN5LXRydW5rCis1OTUxMyAyY2U1MGEyNjBmNTNkNDIzYjk2MzFiZTRmMTZjNGIyODYwYjkwYzUyIGxlZ2FjeS10cnVuaworNTk1MTcgZTcwYWNiZjI2Y2RhODgwZTMwYzhmYTIxODhkNmI2NmIwY2JjODkzYyBweTNrCis1OTUxOCAzMDM3MjdjNThiNTFlMDE0YTYzNjlkZjcxNWViMDEyNjNlNGMyNDE4IHB5M2sKKzU5NTE5IDA0M2NhOWI2NmY3OTcyMjAwOTM1OWRjNzljZTljMjVlNDY4OWY0MTEgbGVnYWN5LXRydW5rCis1OTUyMCA2MThjZTI4MWE1NWY4NDUyMWY2YjJhNGQ5NWQ5ZTllOWMzZjJiODY0IGxlZ2FjeS10cnVuaworNTk1MjEgNGMwZWI1ODc0ODJmNjBjYTIxMWRjZDgyYzZlMjQwOTA0NGJkYzI4NyByZWxlYXNlMjUtbWFpbnQKKzU5NTIyIGFhZDkwZWJiZmI1MDRiZDU4MzYzZTc2Yjg3Yjk1Njg4OGFlYjE5MGQgbGVnYWN5LXRydW5rCis1OTUyMyBhNjQ5YWE1MmIwNzk5MDUwMDEzYWIyMDQxZmM2YjM0MGQ5OTZjOTljIHB5M2sKKzU5NTI0IGVlMTE3NDYyMTJiMmJkMjVlNWZiODg1YjE2ZjYwNmQ3YjFhZDAwZGQgbGVnYWN5LXRydW5rCis1OTUyNSA1YTUwYTViNTcwYjAyZTZmMzYyYmI2ZTIzOWQwNjRmZDdmMDgxZDQzIGxlZ2FjeS10cnVuaworNTk1MjcgOWI0MGFkMDU3ZDU5ZTIwN2NhZjUxN2IyMDI5YzEwMDg3Mjk1Y2RmYyBsZWdhY3ktdHJ1bmsKKzU5NTI4IDIxMWFiY2ZiNDkyOGIyYzE3MWQ1ZTI4YmM5MDE5NWVhMjYyNzMxMTMgbGVnYWN5LXRydW5rCis1OTUyOSBhNDYzNzQyZmE0MTFiODk4YjIyZThkOWQ0YzcwMDgzOThjOTRlYWI4IGxlZ2FjeS10cnVuaworNTk1MzAgNzc5MWE1ZWExNWMzODRlZTJlNTM3MWY2NjJhZjI1NDA2ZjM5ZTIyZiBsZWdhY3ktdHJ1bmsKKzU5NTMyIGU5N2YxMDVkMWM4MzQwZmNhYmFmYjJiMTFhZWNlZDM1ZjVkYWYyNDggbGVnYWN5LXRydW5rCis1OTUzMyBhMTQ0ODlmNmRiNmY5MmI4NzYzZjc5MDE2N2I3YzBjMzgyMTdhYzRhIGxlZ2FjeS10cnVuaworNTk1MzYgYTJkMGM2YTg4OTA5ODAxMDk1NjQxMmExNjI2ZDViNjhjMWQxNzUxYiBsZWdhY3ktdHJ1bmsKKzU5NTM3IDBhNTQ0NTI4ZGM5ZjVkNzc3NjVmNmNjMTM0MDY3YzAyNzg5ZjBkZTggbGVnYWN5LXRydW5rCis1OTUzOSAwNWM1MDFhOTUzMDg3NTExZjE1YmFhMGUxZDljZWY3YzhjZWMxNDUyIGxlZ2FjeS10cnVuaworNTk1NDAgMDlmNzQzMTZkNWZiNTU4MGE5ZjZiNzgwYTVjZDI3Y2NlMWQwODA2MyBsZWdhY3ktdHJ1bmsKKzU5NTQzIDc1YzZiZmQzYjFmMzJlYzIxN2NhNzMxZTVjNTU0ZjlmZjMxMGZhYmEgcHkzaworNTk1NDQgNGE2YzA2YTc3ZGViMTZhMDc4YzQzNjJlZmM0ZWQ2Nzk5NGIyZWJmOSBsZWdhY3ktdHJ1bmsKKzU5NTQ1IGMwZjJjZjQzODljNTAyODg4MDFiN2Q4YzE1ZjJjZWI0ZjIzNjIwNWIgbGVnYWN5LXRydW5rCis1OTU0NiAxMWI2ZjViNjhhZDFhNzI5ZTA3YzlhMDgzOWRiNzc5ZjY2ZGRkMDM0IGxlZ2FjeS10cnVuaworNTk1NDcgNTZmMzQyYzg0ZTg3MDc1ZmY2Yzk2YTY3NzU2YTllZjg3YzMyMWQ2OSBsZWdhY3ktdHJ1bmsKKzU5NTQ4IDA3YWExOTE3MGE2NzNkYTZiM2U4YzRjNjZiZmQ4NjhiMmY5MGMwZTQgbGVnYWN5LXRydW5rCis1OTU0OSBiNWIzMDgwYjM2MGZkZWFlNDNhZWE4MDdkYzkwYTYzYzViMjdkMjU0IGxlZ2FjeS10cnVuaworNTk1NTAgZWFiMDAyYjhlMTdlOGUyZTg0ODc2OTFkN2JmODA5MTQwNzM2ZTBiZCByZWxlYXNlMjUtbWFpbnQKKzU5NTUxIGI1OWMzMjhiZmE2MjNlMGY5NjY0YTk2MjdiOTUwNjVhOTJhZjMxNzMgbGVnYWN5LXRydW5rCis1OTU1MiBhOTkxMjhmNmM5N2RmMzkzMGZjMzg5OTZiMDdhMjk3MDlkMGQzYTViIHJlbGVhc2UyNS1tYWludAorNTk1NTMgN2FjMTE3YjNiZTM3ZWI3YWUzMjk3MDc4N2U2MzFiMjJhYmEwNDk5NCBsZWdhY3ktdHJ1bmsKKzU5NTU0IDE1ZmJlN2M3OTI4NDk3MzkxNzcxMTYzMTUwZmQwZTg5ZGI2MzE5NmIgbGVnYWN5LXRydW5rCis1OTU1NSA5NTg1ODEwOTgxNTFhYjc2MWI2MWZmYzk5MTdlNjI2MTA5NTA4MjgzIHJlbGVhc2UyNS1tYWludAorNTk1NTYgZGM4ODRiNjA1MGQ0NWZiNTMwNmI1MTdhNGMzOTE1M2QwODA5ODA3MCByZWxlYXNlMjUtbWFpbnQKKzU5NTU3IGY4ZDBmYWZmY2U4ODc2ZjU1NGJmNmUxODVjZDI5ZTcwM2JkYTYxZmQgbGVnYWN5LXRydW5rCis1OTU1OCAxZDY5YWFiZjZmN2YyMjc0NmI0YzcyMDNhZjVjOWIwMTlkMjJlMzJlIGxlZ2FjeS10cnVuaworNTk1NTkgZDUxYjM5YzIxNjBhM2I4NTVmNGYyNjVjNDIwYzQ2NDBkN2Y1NzRkYSBsZWdhY3ktdHJ1bmsKKzU5NTYwIGEyOGFjOWI2N2JlZGI1NmFhMWUyNDczODE4Y2ZjMTI5OGZlMWUxZDggbGVnYWN5LXRydW5rCis1OTU2MSA2MTZmZWMwZWI1MTRiNjUxMDYwYzQwOWEzOTI4ZDRhOWIwNWY5NmIyIGxlZ2FjeS10cnVuaworNTk1NjIgZTJlZmZlYzlkNWFkN2NmMDk2ZmRjNDBjNmJkMzVhYTVjYjFlZmUzZiBsZWdhY3ktdHJ1bmsKKzU5NTYzIDRkYzAxNDAyZDc4YWZlMmM5YjRhNGJkODAwNGViMDhlMjY0NzMzNWQgcHkzaworNTk1NjQgMjYzODRiODE4MGM3YTU1Y2Q2YTJlZDQ0MTA3Y2Y0ZTMzOTAyNWVjNiBsZWdhY3ktdHJ1bmsKKzU5NTY1IDg2YTI2NzlkY2E0NjRhMjg0ZmQwMmI4MTY0NmYyNjkyMDQ5YTJjZTggcHkzaworNTk1NjggZjdiYzc5MTEyYmNmYTg5YmJlYWIwMzVkOGJjZWE0M2U4MmZlODlkOSBsZWdhY3ktdHJ1bmsKKzU5NTcyIDYzMTRiOWY4YTdlMDNmMGM1N2U5OTU0MzhhNDlkODkxY2ZhZDBkMzIgcmVsZWFzZTI1LW1haW50Cis1OTU3MyBiMTM0N2M2OGQ0NTY4NWFlMmM4M2Y1MmMyMDkyODk0NjY4MWVmMzk0IGxlZ2FjeS10cnVuaworNTk1NzQgYjg5YjAzMzQzNzJiYTgzYWJmNGQyZmMyNDRhYzE2YmUzZGY5NzI4MCBsZWdhY3ktdHJ1bmsKKzU5NTc1IDUxYzE3NWM4NmYzNmJiM2JlZDEzM2ExYjBhMTQ4ZjNlMjgxOWU1Y2UgbGVnYWN5LXRydW5rCis1OTU3NiAxNzRlMGJjYjJjM2MxMzJhMjZjOWYwNGQzY2Q2MGZkOWY3ZGYxY2ZhIGxlZ2FjeS10cnVuaworNTk1NzcgMGFkMTJjNzlhZjE4NWRmODM4ZjIxNmY3NzZlNzQ0M2UxYzIzOTE3MiBsZWdhY3ktdHJ1bmsKKzU5NTc4IGJiNzE2ZWJjYjA4MmExZTc5NDQyZTYyNTgxM2ZhMTYzYmM0NjhkMWEgbGVnYWN5LXRydW5rCis1OTU3OSA4ZDRkMzM1MzY5OTUwYzEyMDJiMzNmZTlhNThkNTZkZTE1ZGNhNjIyIHB5M2sKKzU5NTgwIGJhZDU1YTU4NTk1OWIxMWY5MzQxYzk2ZjYxNGVhYjFhNzU1NDVlYzIgcHkzaworNTk1ODEgNTVkYWRjOGI2OGZjMTk0MmZjZTM2YmQ3M2U0ODUyZmI2ZDg5Y2EwOCBweTNrCis1OTU4MiAyMTBjNTA3ZGFjOTk2MTg0ODIxNzgxY2IxM2FiOGZlZWI5YzkzMmYzIGxlZ2FjeS10cnVuaworNTk1ODMgNmVhMGUxNWNlNTczNmRmNzZkYTUxYjI1YWVjZDQzZmZmN2MzMWQ2NCBweTNrCis1OTU4NCA4ZGVhZDZmODFiYWUwMWJlNGNkMzRiYzliNWM5NGM1YmQzYzhmMDRiIGxlZ2FjeS10cnVuaworNTk1ODUgODNjZWQ0MTc3ZWFjYzQ5M2ViNWQ1NmU0ZTBkMGMyNDcxZGQ4MDQwYyBweTNrCis1OTU4NiBlYWVmYjkzYjVlZDQ0Mzg0MDZmYzdmODBhMTBhYzAzNTJjYmY1YWVmIGxlZ2FjeS10cnVuaworNTk1ODcgMzJkZDliNzc3M2MzYzIxZDFmNTE2ZWFlYThmZjk4MmRjNjA0MWI2MiBweTNrCis1OTU4OCA0NDU0MTA3NDRmZDYzNzM1OTcxM2QwZDIzMTc2ZDhhYjQ5NWJiYjM2IHB5M2sKKzU5NTg5IGJjZTcwYTQ3N2YxZGEzZGEzNDkzYmViNGNkY2Q1ZmM3ZTM5Y2UwZmYgcHkzaworNTk1OTAgMmIwM2NhY2MxYjZhNGUxYWI1ODEyOWJlYmYwYzQ1NTJjOTE4YmEyNCBweTNrCis1OTU5MSA5NTdiYWEzN2NlMGQ0ZjRiMTVmMjdiZDBiNDMwNDFmZmVlNWYwOGQ2IGxlZ2FjeS10cnVuaworNTk1OTMgYzhkMzEyNzlmY2RjYjZhNzEyYTlhMzU2MDZmNmYyYzViZjMxYzVmMSBhbGV4LXB5M2sKKzU5NTk1IDI3NTBkNTMxZmRjMDIzZGJkYjQwMmRiNjJmYjE5Y2M4M2Y0ZGE3MzMgcHkzaworNTk1OTYgODYzNjkyZGM0MTFlZjAxZjBjNjQyMDJiNWIxNWE0MDM4YWQ2YzgzOCBsZWdhY3ktdHJ1bmsKKzU5NTk3IDVmNTkxMjNlNzgxZmY2NGM1ODFhM2ZlZWFlZGNhYThjZWM4NzdjOTYgcmVsZWFzZTI1LW1haW50Cis1OTU5OCAxZGI2MjQzZTkzZjI5YmQyYzAxNTk4OWVjZDlmZjEyYTMzNTgwODRjIGxlZ2FjeS10cnVuaworNTk1OTkgZGI2NzUyMTFjMmY3NTMxMTYyZmQ3ODVjZTJmOWMwOWY4NjVkMTlhZiBsZWdhY3ktdHJ1bmsKKzU5NjAwIGI5YmUxMTdiMjgyYzM3YmIzNWNhOTIwMjI1Yjk1Y2E4M2E2OTQ1ODEgbGVnYWN5LXRydW5rCis1OTYwMiBlZGI2YWE2Mjc1M2JjNzkwN2ZlZjNjZTRmMzM2NjEyOTU5OTEzYmUyIHB5M2sKKzU5NjAzIDA4NDY4YTI2M2E5NTgxOGY5YjBiZjdhOTY2ZmYzMmRiMDVmYzY3ZTMgcHkzaworNTk2MDQgZWI2OTVjNTkxZTcwNGJhNDk3MzFiYTk3MTY3YjU2ZGVkNmYzNmNlYiBsZWdhY3ktdHJ1bmsKKzU5NjA1IDcxYmI3MGY2MDk3YjgyMDA0Y2QxNjg3ZDBkNWQ0NTVhNzY1MjMzODcgcHkzaworNTk2MDYgMzYyNTIzNGJmM2QyZWQzNjgwMWNhMGM2NGVkNDg1NGYwNTM0MjRhZSBsZWdhY3ktdHJ1bmsKKzU5NjA3IGRhMmIxMDViMGM1MjNmNGZhMzkyYWFjYmMzODNlMTAzYTkwYTY1ZWIgcHkzaworNTk2MDkgNTY3MDEwNGFjZDM5NTQ5NTFjYWUyZjMyYTk5ZDE5OTg5MjZhNDFhMiBweTNrCis1OTYxMCA3ZDJkYTFjZDgwYTExYmI2ZjU0OGM2NGYyNmFmNmU0NTBkMDMwNDNhIHJlbGVhc2UyNS1tYWludAorNTk2MTEgZjI5MjI3MzVmYjdhYjI5ZTMwMmI0OTkzYTljNjliODhhNTI0MjQwNiBsZWdhY3ktdHJ1bmsKKzU5NjEyIGFlMGYyZWEwNDA5ZjQ0MDBkZDA1MzExMDM4YTIwOTg0YTdjOTRiNzggbGVnYWN5LXRydW5rCis1OTYxMyAxZmNmMWU2ZDhiYjFkZWQ5NWFiZjU3Y2NmMzllMGJiODVkOWVhYmI3IGxlZ2FjeS10cnVuaworNTk2MTQgODYzNThiNDNjOGJiMjVjMWI5MmExZmExZGY4NWZiOTYzOTIyYzhiNyBweTNrCis1OTYyMCA5NWNmM2Q1M2NhZTAwMWJlNmJjZDg0MzM2NTI0M2U1MGU0MGRmOGY2IGxlZ2FjeS10cnVuaworNTk2MjEgODNhMTM4ZmRmZGZhOTgxOGE1NGJiZTIyMjg1Njk2ZjAzMTZmZWZjNyBsZWdhY3ktdHJ1bmsKKzU5NjIyIDc0MmQ2NTk2MWIxZmE2Y2M0YjM5OTJhNzFkZDM5NTZkZjdmZmQ5YzAgbGVnYWN5LXRydW5rCis1OTYyMyAzNzE1ZjAzNzRmNmFlN2RjMTg5ZTJhMWE1OTNiMGUzNDkzYTg4Y2E4IGxlZ2FjeS10cnVuaworNTk2MjQgYTYzMTlhYjQ5ZTBhM2ZiZTQyOGY3YWVkM2NmYTc5YWQyZDk0NGVjYiBsZWdhY3ktdHJ1bmsKKzU5NjI1IDY1NTZmM2YyMmMxOWYxYmJlZTM5NWI1NTA5MTBiZDg0ODM3ZmMwMWEgcHkzaworNTk2MjYgZjA1YWMxNDUxMWZmNjJmMTU5MDUyYTcxMDc5ZDZiZTY3MGYyZTJmMSBweTNrCis1OTYyNyAxZWI0OTgyMzdiYTViNThkMWFiYmExMzA3MGYyMjQ2NjRmOTczMWZhIGxlZ2FjeS10cnVuaworNTk2MjggNDQ2ZThiNjA3YmQzYTAwZjNjZjk2YWMzMTc3MmJhMmE5MTViZDg4NyBweTNrCis1OTYyOSA0MWJmYmZjMzZjZjcyNjNhMTM5MzAxMzM0Njc3NzAxNzQwMTJmMGFhIHB5M2sKKzU5NjMwIDgxYjNhYzU5MDg5YzE4YTQxYmQ5MDVkN2FiMWU0Njg4MWZhOGJjYWYgcHkzaworNTk2MzEgYWNiNmE0YjJjMDdmMzFlYjZlMDA4ODI1OWU5NzkyODk5YTYzODc4OSBsZWdhY3ktdHJ1bmsKKzU5NjMyIDQyNTE4NTNmYTliOTM0OGIyYmVmOTcyZWViYmNmNDZiYzQxOWEzNWIgbGVnYWN5LXRydW5rCis1OTYzMyAzZWU1ZGUxNzZlNzg1MmVkNmJlODc0MmIwNjE1NGZiYTk1MGE3Mjg5IGxlZ2FjeS10cnVuaworNTk2MzQgN2E4NmIyMGM1YjRiMWQzYzQzMzE1MTdhMTg5NTllOGUwODE1MDVlYiBsZWdhY3ktdHJ1bmsKKzU5NjM1IGViMTIwNzUxM2VlN2RlZTlhNTdjNTdlNWYwMWVjMWJiZDEyNjk0MjcgbGVnYWN5LXRydW5rCis1OTYzNiBkZGEyOWU3MTI4MTUwNmYxZDIyMThhNmVlZjI0NzdjZTJiMDRmMWEwIHB5M2sKKzU5NjM3IDQ2ZDU0MDExZTFlNTYzYzRjMzg3OGVjODNjMWNkMWJlMDc5N2UyNTUgbGVnYWN5LXRydW5rCis1OTYzOCBlMzY2YzQ0OTQ4YTMxNDFjOGNiMzU2ZjQ0Y2U4NTdkMGJlOWJlNjgwIGxlZ2FjeS10cnVuaworNTk2MzkgNjA3ZTY4Y2IwOTQ4ZDcwN2FiYzhmOTM2YTdiN2I3NDAzZWM2ZjIyNiBsZWdhY3ktdHJ1bmsKKzU5NjQwIDkzODBkNWRhNzcxNjhlMGU5N2FmMjYyMGM3MjI4NDdmOTFkOWI5MjAgbGVnYWN5LXRydW5rCis1OTY0MSA5MDFmNzBkYjNiMzQwNDAwOGU4MjQwOGFkMDA1MzkyMjVkYWM1Yjg3IGxlZ2FjeS10cnVuaworNTk2NDIgZWVlMWI3NmE5NGUwMTE4YTA2YmNjZTY2ZTBiMzMzNzIzYzAzNGRlYiBweTNrCis1OTY0NiA2NTJmN2FiNTkxOGIyZjdkOWNhZGFmMGY0YzJjZTQ0ZGZiMTM3ZGQ5IHB5M2sKKzU5NjQ3IDNmZjc3OGEzNTQxMDQ4YmZlODgwOTAxNjgxNzMyNzdkMDdkMWNmYzIgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY0OCA5YjJlMjU1MWFmYmUzNzg0M2FkOWQ3ZTYxNzVhMmY0YjZkZjA4M2M1IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NDkgOTRhMjkzNzM0OTNiZDEwMDRmY2VmZjUwYzQwYWU5N2IxMGFmNWZlMiBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUwIGY2N2IyZTgzYjM0NzVkZGRmOWFiZWEyYjE0NmE4NmQ1OGViZjk1ZjQgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MSBkYjBjOGI0MWRkYjBkNWU0YzI5ZDk3YjAwZjhlNjRlMGQ5MWNjNDA5IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTIgYjk4OGU0ZDM1ZWYzY2QwZDY1Y2FhZGRlNWYwNGVjMmUzZjUzZDliZCBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUzIGExZmYyZmFlZGM2YmU4ZmJlZDY2Y2E3OTc4YWU2NWQxZDRhNmJiOTkgbGVnYWN5LXRydW5rCis1OTY1NCBkOWE0YTVmMDEyMWUxOGIxZGU4ZTNmYzY0NDEwMTgzOTI0YWJiMTI3IGxlZ2FjeS10cnVuaworNTk2NTUgNmMwYzUzYjlmMzdiNGY5OTQ3MWU2MjljYzQ5MzZiNzkyMWU3OTRhMyBsZWdhY3ktdHJ1bmsKKzU5NjU2IDFhNTQ4YTY1NGMxYTNlNjllMGU1MDU1NDQxNjBhZjcxZGU3NThmMjUgbGVnYWN5LXRydW5rCis1OTY1NyA5YWIzMWZhMzZmYjUyZmMxMzJjNTdiOWY0NjMwNzBhYjQyMzkxNjAyIGxlZ2FjeS10cnVuaworNTk2NTggZjY0NWUwN2Q4NzBhZjU5NmFmMWNlMGVmNzFjYmNiNzcwYWQwOTQyOCBsZWdhY3ktdHJ1bmsKKzU5NjU5IGYwZTljM2QxNjc2NmQyNDZhZjg1MDAwMGNmY2Y1NGQ1YjA1ZThiMGMgcHkzaworNTk2NjAgZGEzMDg3N2Y5Nzc5OTk0MjBkZDhmMzhjZTM0MTEyZmRjNzg5MTkzZCBweTNrCis1OTY2MSAwOTlhMTdlMmQyYmQ0OWYzNGJhZmFmMTY0MDZjZGI5YjlhY2Q4ZDM1IGxlZ2FjeS10cnVuaworNTk2NjIgNjZiZWE5MTMyNGNkOTMzNzBmZDBjNjRhZGM1MWU5NDJkNWI4YTk1YyBsZWdhY3ktdHJ1bmsKKzU5NjYzIDFlNmYyN2I2OTczY2M1YTA2NzJlM2JlOWNkOGM1OTVkOGIxNDg0NzYgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY2NCA4OTlmZWFkOWVhZTIxYjZhMGY5OThlZjA0M2JkYTM4ZmUwMjlhYzFmIHB5M2sKKzU5NjY1IGU5MDdmODE0ZDlhMzA3MTljOGI3YjZjN2MwYWMxZGJiNmI1NWViZGMgbGVnYWN5LXRydW5rCis1OTY2NiA2NmRhMzc3YmE4MTA3ODkzMzJjMGFkZDJiMGM0MjZhYWFhYTdlYzMwIGxlZ2FjeS10cnVuaworNTk2NjcgNmU5M2QyZDZlYjI4MDFkYmJkMWY0OTBiZTdiYjljMjcxZmU1MzJmMiBweTNrCis1OTY2OCBlOWY0ODBiNGMxMzNjZjZlOWNlNWRiOGI4ODdhMmIzZmM4OGVhZDJmIHJlbGVhc2UyNS1tYWludAorNTk2NjkgNWNkMjhmMDEwZmM3MWJhMGFjOTcwMjNjMjYyZDkyOTc2Njk5NzAzYiBsZWdhY3ktdHJ1bmsKKzU5NjcwIDRhZTMwMDdlYjBmNDcxNjA0ZTVlM2NjNGQ2MTY3Mzc2NjFhNGQ0Y2YgcHkzaworNTk2NzEgNGY5NzIzZDljYTMyMGFmNjdlOWY2MGEyYzE5N2RhMmU2ZmRmZDMwZSBsZWdhY3ktdHJ1bmsKKzU5NjcyIDgzODZlZWRhMjFjOGUzNThmOWE0ZTRhYjAzZWRlYmFhNmIxZDE5OTAgbGVnYWN5LXRydW5rCis1OTY3MyBhM2YxODY3OTBmZjZlMDlhYTQwMmM4YzRlYjE4YTE5YWU5NGU3ZmY3IHJlbGVhc2UyNS1tYWludAorNTk2NzQgMThhMWJjNDlhNjk2ZTA1ZGQ0ZTYzNWI5NTY5NTEyNTM2MjYzNTE1MCByZWxlYXNlMjUtbWFpbnQKKzU5Njc1IDRjMDU2YzBhMGI5ZjU2Njk5YTc5NjM1MzY3MTM3YzU4NTZlOTJlY2UgbGVnYWN5LXRydW5rCis1OTY3NiA5NjhiZGE4MWU2YzgwYmE1ZmZmZjE1ZGFjNzc4OGFiYjg2YjdiMTlmIGxlZ2FjeS10cnVuaworNTk2NzcgMjdlNGU1MzBjZjJmNmYwNjk1N2E1ZTUyOWNjZWY1YzZjN2M2NzY2MiBsZWdhY3ktdHJ1bmsKKzU5Njc4IDBjYmU5NGJlYTJjN2VmNjEwZGVhN2IwNWQxYmFiOWYwNGFmOWFmNDQgbGVnYWN5LXRydW5rCis1OTY3OSA2MjA4YjE3ZDBkYmVkZjBkZTgyZDkwZDBkOWQwNDU4NDE3ZDBkZDkxIGxlZ2FjeS10cnVuaworNTk2ODAgYjkxY2E4N2U2ZjMyNzIxNDdmOTRhYjY1Y2VhNzY4YjI0OTQyMDMwNyBweTNrCis1OTY4MSBmYTJmNzE4M2IxYWZjNTUzYzE3YjdlNmFlNWQzMzgyNWE4YTAxZmM0IHB5M2sKKzU5NjgyIGM3MzIxMGVhNjFjODY1MTZlZWYwMjJhYmE4OGM3OGQxYTBmYjI5NzYgcHkzaworNTk2ODUgMDM2YjAwZGM5NzY3Zjc1ZTIzMDA1ZjQzYTU3OGVkMjU0OTQ2MDkxYyByZWxlYXNlMjUtbWFpbnQKKzU5Njg2IDUzYWMzZmM2OWI3OGIxZmRlMDgyNWZmMzZiOGM0Njg0YjcxYjRkZDcgbGVnYWN5LXRydW5rCis1OTY4NyA4ZDY5ZWRkM2QyOTAyODdlOWZkZTViN2U5YjlhNTFhNDA2ZWYxZTFmIGxlZ2FjeS10cnVuaworNTk2ODggMTczNTljOWE0YTdkMjdhMThhMjM2Y2E2NDUzZjQzOWRkYjMzOWI2MyBsZWdhY3ktdHJ1bmsKKzU5Njg5IDVlMDE3MGQzYzRkYTU0NGM5YTE3ZjFhNmRkM2JhNmNmMjc1MTNkNTEgbGVnYWN5LXRydW5rCis1OTY5MCA5NDYyOWM5NTk2NWExMTg0ZjMzYzA4MmM4MWUxZTFhM2U0NWUzODM2IHB5M2sKKzU5NjkxIGNmMjY2N2UyYmEyZjVlMmU0MTc3Y2NhMDFiNWVjYjVkOWUzMDE1ZDggbGVnYWN5LXRydW5rCis1OTY5MiA1MTcxYjVhZTY4OGEyMTdiOWVjOGNjYjdhM2QwNWU2ODhkYTIxZDU3IGxlZ2FjeS10cnVuaworNTk2OTMgZDFhMzZkZGJhYTQ5MmU5MjY3OTljNTQ3Y2JiOTU5ODBlODI1YzIzYiBweTNrCis1OTY5NCBjYmE5ZmY3NjA0MzA0OGVjMmRjN2IzMjA0YzBmNWUxNDRiMzFhYzUzIGxlZ2FjeS10cnVuaworNTk2OTUgMjk4NmJiNDMyMjIyMTcyMWFiZTRiYTQ4NjlmZmUwZTcwYWQ4NzA2YiBsZWdhY3ktdHJ1bmsKKzU5Njk2IGRlMDBhZjAzYmI0ZDU2OTU1NGFkZjlkY2JkMzMzMGNiNThiMDk3ZWIgbGVnYWN5LXRydW5rCis1OTY5OCBkY2RkMWJhMDk2NDEwZTk3YzEwOTQ1ODI3MzFiYmZjNzJhZjQyZWFlIGxlZ2FjeS10cnVuaworNTk2OTkgNzQyY2FmNTM1NTU3NmZlNmVkZjM2MzkxZTQ0NjczNDhmMDFiZGQ5ZSBsZWdhY3ktdHJ1bmsKKzU5NzAwIGFkMmJjYmU4M2ZkYzJmZDE0Yjc1OWQxNWNlYWNkYzdmZDZiZWU2MTEgbGVnYWN5LXRydW5rCis1OTcwMSA3NjQzYTQzZjI1YTFlNjk3ZjE2YjIzZjJhY2Y4ZjBjNmRiZmExNzcyIGxlZ2FjeS10cnVuaworNTk3MDIgMTNhYWJjMjNjZjJlMmMwZTIyNTljOWI1MDY2ODk0NTgxODg5NzQzOCBweTNrCis1OTcwMyA2MWMxNjRmMjU0MzU2NDJjMzNhYTY2NjJmOWY2OTNlZDQxNWI5NGM3IHB5M2sKKzU5NzA0IDc2YTg5ZGQ0YTUxMjM3Mjc3YmU1NTU4MTQ0MDUyNTNlMzUwMmU1NTMgbGVnYWN5LXRydW5rCis1OTcwNSBkMmMxYmEwOTkyOTA4M2M4MjU2NjRlMGJkOGEwZDRhMTY5ZjlkOTliIHB5M2sKKzU5NzA2IDM5OGI2MjQ2NzU5ZmMyZDJlM2NiNGQwM2FmNWUxOGExOWVhMjk1ODMgbGVnYWN5LXRydW5rCis1OTcwNyA3N2MzN2UzMmZlMzViNWMwNzI1NDNlZWM5ODAxMzgwZjZhMjY0MmFmIGxlZ2FjeS10cnVuaworNTk3MDggMTI3Y2MyZmVhOWZiOWQxNWVjMDY2NmRmYmNhMTczMjRlZDMxMTcxZSBweTNrCis1OTcwOSBkY2UyNTk0ODkxOGQwZDk4YTAzMzBkZDAxODJiOTU3MjdmNDYyYmY0IGxlZ2FjeS10cnVuaworNTk3MTAgODE2NjlmYmM4NDVmMTI0OTdjNjRmNjc5NTJhNDNhN2IzYmJkM2ZmZCByZWxlYXNlMjUtbWFpbnQKKzU5NzExIDVkN2QyYWY1OWFmZTFjYWI1MjFhNjZkZTdhZGYxMTJiZjlkNzQxZjEgcHkzaworNTk3MTIgYmQwMjU4ZGYzMzBlYzVkYWU5YjE2ZDJkZmNiODJlZjhmMTcyMDVhNCBsZWdhY3ktdHJ1bmsKKzU5NzEzIDI5MmM1ZTUxYTBlNTk2MThlZjhhOGI0OGUwMDM4Yjc5MjFjNDYwMTEgcmVsZWFzZTI1LW1haW50Cis1OTcxNCA5MDE5MDg2ZmQyMGE0ZGI3NTJmMjdiYTY3YTMzZjhmOTAyZjlkMjVmIGxlZ2FjeS10cnVuaworNTk3MTUgZDA3N2IwYzg5M2JjNjU2MTlhYjczMDQyNjY2NmU1NzdlODhhMjg1MiByZWxlYXNlMjUtbWFpbnQKKzU5NzE2IGJmZWQ3MDI3N2FiM2I2ODY1Mzc5ZjdhMzg1ODkzNTdiNWVmNmY0YzMgbGVnYWN5LXRydW5rCis1OTcxNyA2MTM0MTc3NWJjNDIxNzIzMTVlMThlYjE0NGY3YTc0NTE3ZGU2ZWNlIGxlZ2FjeS10cnVuaworNTk3MTkgODNjYTczNWEzOTk1YTcyMTU1ZjZhMGZlZmM2MDYyYjJhYmJiMTQ5ZiBsZWdhY3ktdHJ1bmsKKzU5NzIwIDY0NmNmZjA5NjAzOWJhZmE1ZTljZjAwYmI3ZTBiZmM4MzU4MmU5MmMgcHkzaworNTk3MjEgNzNiYzAwMjI1MmJmZDU4M2JmNmZlNWMyZGQyZTFkMjRlMjAzMmE3YyBsZWdhY3ktdHJ1bmsKKzU5NzIyIDM0YzkxZGY2MDUzMjk5OTA2NDE4YzljNWM5YTNlM2ZhZDk0MTI2ZTMgbGVnYWN5LXRydW5rCis1OTcyMyA1N2M3ZDQyZjZjZGViMThhN2FlMjM5NmRkMmI3NTZkZDVkOTAwNWRiIGxlZ2FjeS10cnVuaworNTk3MjQgMjAzN2Y0Y2FiYjA3Y2NkYTYzZGUzZjIxZTgxYzYzNTFkNTZmYmE4YiByZWxlYXNlMjUtbWFpbnQKKzU5NzI1IDNmY2FmNmNjMzA2ZDFlNGU2YWE5ZmNmMjBmYWU3NjBmMTdlY2E0ZTMgbGVnYWN5LXRydW5rCis1OTcyNiAyZTJmYTI5MTkxNGM1M2NkNGQ0ZGJhNmJlMjE4NmEwMmM5ZWY5MWNmIGxlZ2FjeS10cnVuaworNTk3MjcgZGNjN2M4NjVjNzdiMTAxN2RhOTIwMzhmMTNhMjI0ZWYwZGY3NzU0ZSBsZWdhY3ktdHJ1bmsKKzU5NzI4IDdiYjkxYjNiYTBlY2MyODUzNTAyZjBlMmU4NDA0YmMxNWM4Yzg5ZTIgbGVnYWN5LXRydW5rCis1OTcyOSA1YTBjYmUzNmE2MDM3Nzk1ZTNhMGQ1ZjFmMmJkMGFhOWRmZWZjODRjIHB5M2sKKzU5NzMwIDMzYTBhZTcwNjcwZjQzNjkyMzRkODg5ODU1MzBlNjkwMGQyNGVlYjYgbGVnYWN5LXRydW5rCis1OTczMSA5NGVlYWVlYjNjZTkzZGY4ZDJiM2E3MTFlNzYwNzY1ZDI2ZjNkMDg4IGxlZ2FjeS10cnVuaworNTk3MzYgZTQ4YjQ2OWQxZDg2NmI3N2U1YjY3YmIyMDBhYzRkZjIzZDNiZWE2YSBsZWdhY3ktdHJ1bmsKKzU5NzM3IDc3NzQyOWEyMzAyNjY3ZjFkNTYzM2NkODQ0MmU4ZDJkOWYzYzg0YWUgcHkzaworNTk3MzggYzBjMjM2OWY5NDI2N2VhMTUwY2UyZTJlMmZlYzYzN2U3NGYxOGQ4YSBsZWdhY3ktdHJ1bmsKKzU5NzM5IDljYWY4YTdiMTFhNmI4OWMxNzkzYmM2ZjRkNGMwOGNiODVjOWQ0ZDQgbGVnYWN5LXRydW5rCis1OTc0MCBiYmM5ZThjMDhjZDVlZWUzN2MwMzVlOTExZTEwNGMxNjdjNDA1NmFjIHB5M2sKKzU5NzQxIGZjODE4NmI1MDE0NWI5ZDJiN2YyZDAxNGQ1ZTlkOTg1ZTA4NmM0NTUgcHkzaworNTk3NDIgMGMwYWViYzY2NTZmOTRkMjUzMzQ0Y2U0YTEyYTAzM2YzODk3NmIzNyBsZWdhY3ktdHJ1bmsKKzU5NzQzIDNjNmY3NTQzYmRkNmI0YWFkOTc4ODkwNjNjZjRjYjdkOTU2MThiNTEgbGVnYWN5LXRydW5rCis1OTc0NCAwMWQ1YjhlN2QxMjEyMDVlYzdiMjFhOGFmMGQ3M2E0OGVjYmM0ODhjIGxlZ2FjeS10cnVuaworNTk3NDYgMTQyNmNkMTM2NzM5ZmJkZWUyN2ZkMDY3NGVjYjk0NjgzZTE0YjM2NiBweTNrCis1OTc0NyAzMWUyOTRkMDhjZTFjOWRmM2YyODZjNTIzMjg2NzlmYzE1YjE2YWJmIHB5M2sKKzU5NzQ4IGJkODU4NzllZmZhNjlkYWNkYzk5NTFjODc1ZWVmNDQ2NWYyNDc2M2EgcHkzaworNTk3NDkgZDAwZGUwY2YwNGUyNzRmMDIzYTJkMjQxZWRhZTM4NTk4ZTY5YWI2NiBsZWdhY3ktdHJ1bmsKKzU5NzUwIDBmMWM4YmFiODk4ZGJkOWJjZDM5YzQ2NjMyMjFkY2QzN2I4NTA2N2IgbGVnYWN5LXRydW5rCis1OTc1MSA5ZDhiOTUzZDRhZjUyZWNhYmQwNmQ0MDRlYzZmYjI5ZjQwZDRkNGM3IHB5M2sKKzU5NzUyIGVkYmEwYTFiN2ViZTEwOGM2YjcyMTUyYmQ0ODk3OTU1NTRkMGU2ZWQgbGVnYWN5LXRydW5rCis1OTc1MyAyNDRiYjMxYzAzNmJkNTRkNzMxZWViYjgwMDI4MWM3ZTI4NzdhMDM4IGxlZ2FjeS10cnVuaworNTk3NTQgMTE1ZGEyMjY4Y2Q5NTgxMTIzYjQ5OTdhODA3ZDA3ODJkNGRkZTdjNSBsZWdhY3ktdHJ1bmsKKzU5NzU1IDk4Y2MxY2M1NzU3M2NjMDZjMmE3ZTRkNzlhNTBiYzM4ODA4Y2ViMDYgcHkzaworNTk3NTYgMDgxMzhiYzNjMDYwZWM2ZjM0NmIyOTE2ZmM0MTg5ZTcyOThmN2RhNiBweTNrCis1OTc1NyA0ZTc0YzI3Njc4YmExNWNlOTg2NGRlOTkyZjMwN2Q1YjI2Nzc4N2QxIGxlZ2FjeS10cnVuaworNTk3NTggNjVmZTZlNTZkNGY4ZDVjOWEyOTAyYmVlOWRiODUzZGNlODY0YjQzYiBsZWdhY3ktdHJ1bmsKKzU5NzU5IGFmYjEzMzc5MDZhZThhNTJlOGViZGFiNzRiNWNmMWM2NGRjZjY2ODggbGVnYWN5LXRydW5rCis1OTc2MCAyODFjOTQ3OTE0MmEzZTRhYmEwNmIyNjAwZTg0YjdiYjM0Zjc3NjkyIHJlbGVhc2UyNS1tYWludAorNTk3NjEgOGJmNmE5YTNhNjMyOWJlMzljZDAwYmU4MDY1MDQ4OWRkODVmMThiMCBweTNrCis1OTc2MiA1NmJhNzkxZDhiMzU5MjM1NDdiZjJjYWEzN2MzOWQ4YWI0OTdmN2YxIHB5M2sKKzU5NzYzIDI4NDhmZmI5ZDE3YTZjM2M5YjM5MjY2YWE3MDgyMjZmOWRhNWI3MGYgcHkzaworNTk3NjQgMzI2ODFhZTZjNWMxNDg4NTVmYjc0NmQ0MmMxMTFjNGI4MTViODY0MyByZWxlYXNlMjUtbWFpbnQKKzU5NzY1IDdhMjA2NWI1YmU3NWIzMjM1ZjU5Mjg4NWJkMWFhZTcwZWU2ZmFhMGEgbGVnYWN5LXRydW5rCis1OTc2NiBiZWRkOGJmZDNmZDI2ODA0NzkwNDQ2NTRlZWVlMmY4MTkzMGQ1MDYyIGxlZ2FjeS10cnVuaworNTk3NjcgZmFiMmFhNmI4MDczNjMzMmRjZjEzMDE4OTBhYTg0N2M0NTYxNmUwNSBsZWdhY3ktdHJ1bmsKKzU5NzY4IGU1YmY2Njk2ZTJlMzZhNzRjYzcxYTBjODRkNDExMGVlODcwODM3MDkgbGVnYWN5LXRydW5rCis1OTc2OSAzYmMwNDA1ZGU0OTE1ZDQ4N2M0NWRlY2EzZjViYmRmOWY1YmNiYjAxIGxlZ2FjeS10cnVuaworNTk3NzAgNDMyMWE1YWJkNmNlMmUyZDdkNjYyZDE1ZmZmZjBmM2E0YmFkYTA1NyBsZWdhY3ktdHJ1bmsKKzU5NzcxIDE1NWY1YzM2ZmY5Mjk1NjFmZjJiNTQ3OTIyZDViNWRhZmFmOGFiNjAgbGVnYWN5LXRydW5rCis1OTc3MiA3OWEzNDI0OGEyNjJmYmE5YTQyN2VhZTg2NGJmMmYzNmJjNTgzNmE1IGxlZ2FjeS10cnVuaworNTk3NzMgNjYxOTdmOGQwZmRmMGY4NzI3MDMwNjMxNWM5YjZiNGM3MzhjNmQ0MCBsZWdhY3ktdHJ1bmsKKzU5Nzc0IDUwN2U3NmQ3ZmNkZDVjNWJmNjg1YmE1YjQ1YmI1Y2NmOWRhODNjMDIgbGVnYWN5LXRydW5rCis1OTc3NSA2NDc5NGJhOWUyNWFkNWMxYzkyZWQzMTRhZGNmNjg1YmM3YThlZTMyIGxlZ2FjeS10cnVuaworNTk3NzYgOTlmNjM3MGM2Y2QwNTg0YTc1MjAyMzNjMDFiMGFlN2U0ZGRkY2QwZSBsZWdhY3ktdHJ1bmsKKzU5Nzc3IGQ4OTc5ZTY0MjllNWZmOGFiY2NkMmQwNDg3ZTE2M2I5ZTY1N2EyOTcgbGVnYWN5LXRydW5rCis1OTc3OCA2YjNhYWU1YzY5YmYyMDQ0ZTI1OTNmMGMyMmYyMDMxOTBkNThhNTFhIGxlZ2FjeS10cnVuaworNTk3NzkgZWQ3NThmNmE5N2JiMTBjYWM1MzljNWFiMDlkODdlNzk0YjMyODJkZCBsZWdhY3ktdHJ1bmsKKzU5NzgwIDA5MDA4M2EyMzNmOGUzNjZkZThjYzllNmQ2ZTJmZjI5ZjExN2E5MGEgbGVnYWN5LXRydW5rCis1OTc4MSBiMjQ4ODhjYjk1NTMzMzU4NGM4YzU4OTQwZjc0MDg2MGJiODljZDU5IGxlZ2FjeS10cnVuaworNTk3ODIgMmFjYzY1MmU1OGExOWM2YzNkNjA4MTc4NDViYmI5MjZlZWNhZWIyNyBsZWdhY3ktdHJ1bmsKKzU5NzgzIDQyMGZlNmQ3ZDVmNDVlNWY5ZmVlNGEyNGZjZWJmZmUyYTZkNDI2ZGQgcHkzaworNTk3ODQgYWM3ZGViMWMxZDNjZTAzYWU3MTA3ZDNmM2QzNGU4YmMwMTVmYWZiNCBweTNrCis1OTc4NSA4ZWI5NjM2M2YxZDU5YzJiNzVlYzUxNGNkOWZiNTRlY2ViOWQ2MDk2IGxlZ2FjeS10cnVuaworNTk3ODcgMTgxMWViMDNiYTAwYzhmOTM3MWUwNWFjZWUzZjkxMWQzMmU0NzBlZiBweTNrCis1OTc4OSBmYTI1MGE1ODA5OWZjNGFhYTc4YTU2ZWUxZmJlYzI3YWYwNzE1YTIwIHB5M2sKKzU5NzkwIDdjYmFjYWE1Zjg4NThmNDk0NzViZDUzMjRkYjE4OWVhYTQ0NWJiOTQgcHkzaworNTk3OTIgMGM0ZDI1OGE1YjI1ZWEwZmRhNTljNjU2ZmRkMmJjMmYzNGM4N2MzOCBsZWdhY3ktdHJ1bmsKKzU5NzkzIGQwNDY1ZTc4MmIwMTkxMDNjOGE4NDViYjU3MTlmMjlmMzAwMzYwZDAgcHkzaworNTk3OTQgNjc0YzliODlkMTI0MTQwMWNlMmZiNWMzMGM3ZTM4MDRiY2NkMjhkYiBweTNrCis1OTc5NSBiOGUzNGJjZGJhNDU0ODM3NTRjNGNlYTMwNGU4NDQwYjgyZTgxZjc0IHB5M2sKKzU5Nzk2IDEzYjdjYTA0YmQ3MGUxNDY0MmVkNmQ5N2IxMGU4NWY1NGMzOTliMGUgbGVnYWN5LXRydW5rCis1OTc5NyA5NzRmMDMyMGQ2YjNjZDkzMjFkMmE5MmI2YzYwNGM4YzA1MjI2YjU0IGxlZ2FjeS10cnVuaworNTk4MDMgNDI2NDZhODcyNzcyZWZhZGEwNjIwOTJjYzNjZmYxNDE0NWMzYTAyZSBsZWdhY3ktdHJ1bmsKKzU5ODA2IDA1YmNiNzkwZWY2MzI0YmU4YjdkNmYyYTAwNjQyZDZiNWNjM2MwZDAgcHkzaworNTk4MDcgYTg2OTdhZmJmMTdlZjVjNzJjMDVlMzljZGY1Y2UyNGZiYzRhMGI5ZCBsZWdhY3ktdHJ1bmsKKzU5ODA4IDQ1NTM2ZDU1ODdkNDc3MDMyNTAxYTFjNTM2NDU4ZjliNGU0YjNlZDIgbGVnYWN5LXRydW5rCis1OTgwOSBmOWM5NTBlOGYyZTBhZTZmYWIyOTM3ZWNjM2Q3MjJhYmRhYTFlY2Y2IGxlZ2FjeS10cnVuaworNTk4MTAgYjZlYTUyOTkzY2FlNTBhZTY1NjA0M2ZkZTcwNTAxZGY1NjkxMDVjNCBsZWdhY3ktdHJ1bmsKKzU5ODExIGYyNzA3NGQxNDdmNGUxOThhN2IzMDg3OTJiMWI1YmM4ZDQ1NGJkNjggbGVnYWN5LXRydW5rCis1OTgxMiA2YzRiMGNjOWY2YzkwMGJiMjViNDkyMWUyMWZiNzk1YmQ2ZjgxMjI1IHB5M2sKKzU5ODEzIDdlYTIzMTU3OGIwMmRmYTAzYzc4NjM2ZTgzZTYwZTJhOGY0ZjVlZGMgbGVnYWN5LXRydW5rCis1OTgxNCAzYTk0NDkzNWM2MTBkYTRmY2MwMmI0YjE5ODI5Y2Y1NTdjMDg3Njg4IHB5M2sKKzU5ODE1IDg2NGU2NzlhMGU4NTA4MDRiYmYyM2ViZDM0ZWYwNjhiOTY2YzE3MGQgbGVnYWN5LXRydW5rCis1OTgxNiA0ZDIzZjVhN2Q0Yzk2MDljMzAzNGZlYzM5NGMwMzhhMWNiNzQwZTdlIHB5M2sKKzU5ODE3IDE5Y2U5ZWYzNGI2MjMzY2IzODM1NThjYmI3N2IyNGJjNjljZDI2ZTQgcHkzaworNTk4MTggYjk4OTc3ZjBhYmExYzY1N2M0MDBlYjFkYWFkNTU5MjIyY2I4ZWYyYyBsZWdhY3ktdHJ1bmsKKzU5ODE5IGFjNTFjZmU1YzVjNmI5ODI4NGMzNjc0NDQxODZmN2NjYWI1NTczOTAgbGVnYWN5LXRydW5rCis1OTgyMCBmM2MxZjljOGNlOWYxMDZlY2NiZjFmNDM3NmMyYjAwMjA0NWE2YTYxIGxlZ2FjeS10cnVuaworNTk4MjEgNzZmY2ViNThiY2Y1MWQxZTc5OTMyNjRlN2IxYzVhZmQ0NmZmMWIwMSBsZWdhY3ktdHJ1bmsKKzU5ODIyIDA2ZDE1ZGExZjEyNThjNDQ1NDU0NDAzMDJiZWZiZjhjMTVhZTFhNzcgbGVnYWN5LXRydW5rCis1OTgyMyAyY2RiNjYxNjc1ZjljMDNkOWE5NjJkNjhhNzEyMWUzY2NkNzdmNDQ5IHJlbGVhc2UyNS1tYWludAorNTk4MjQgNTk5ZjIyYTM0OWEyNGZlM2E5OTBlYTFjYjUzODc1NzIwMGMxNWRjYiBsZWdhY3ktdHJ1bmsKKzU5ODI1IGNkYzI4NWJkMGVmYjQ0ZTdhNDkwNmMxZGIzZTExMWE4OTIyMjE4ZGUgcHkzaworNTk4MjYgMzA1ZDdkMmNlMDQ3MDFiNDFjZTA5NGU1MDgzZTAwNmU3NWRhNTIwNiBweTNrCis1OTgyNyAxMzJkOTA4NDcxYzgzOGI5MTA1NWNmMzAwNDE0MTRmNTAyNmIzMzViIGxlZ2FjeS10cnVuaworNTk4MjggMGFhZTE0OTUwZTBiYzJiZDM3ZjBmNDYxYTI0NzhkYzU3MTZkNTkwZCBweTNrCis1OTgyOSAzYjNhYjkyNWIyNjFlNzM0YjY0ZTNkMWYwNTg4MTQzNjk2M2NlOTQ5IHB5M2sKKzU5ODMwIGRiNWUwMWMzM2ViNzYzM2MwMTNhNTE0ZDI3OWFmMzI0Nzk4ODliNTcgbGVnYWN5LXRydW5rCis1OTgzMSBmZDUzMmE5YjI4MTA2MzgzMzkxODg2NGNlYWQ3OTVjZmU2NGM2ZTUyIGxlZ2FjeS10cnVuaworNTk4MzIgNmI3MTVlYTgwNDM3NzQ2OGZkOTZlMTU0ZjhhMzhiNWJhMzRjN2E0OSBweTNrCis1OTgzMyBjZjM2ZTAxZTgzZjIwZTc0MGU5MTM1YjliMzZiZjQ4ZDAwZGEwY2FmIGxlZ2FjeS10cnVuaworNTk4MzQgYWRkYzE4NTk2YTE1NzUzNWUwYWVkYTgwMzUyYWY1MjE5NTIzZTZiNyBsZWdhY3ktdHJ1bmsKKzU5ODM1IGNhMTQxNWM2MTA1ZjdmZDBkZTdiZTFjZmRmMGY1NzMzY2Q2ZWIwZjcgbGVnYWN5LXRydW5rCis1OTgzNiAxOWUxZmE3OGQzMzA1NDlmNDJhY2QyNGYyNDJjYTQ1ZDU1MWRjN2Q3IGxlZ2FjeS10cnVuaworNTk4MzcgNWUwMjRlOTFlZTA2N2Q3NTFhOTQyOTA4MmNiZTlhNmYxMzY3ZjBkMyBsZWdhY3ktdHJ1bmsKKzU5ODM4IGU5NzU2MjY2ZTBiOTM4MTQwMzg0ODQxOWIxNzBlZTIyOTZmMmFjMzQgbGVnYWN5LXRydW5rCis1OTgzOSA2ZDUyMTYwM2UwN2RlN2ZiNzg4ZWRhNWU4ZjhjOTU0MjkyZDk2YzRkIGxlZ2FjeS10cnVuaworNTk4NDAgYzc1ZDM2MGFiODdiMzg3NjYzYTE4MzJjNDJhMDU0YWI3YWMzYmNiYyBsZWdhY3ktdHJ1bmsKKzU5ODQxIDczZTFiZjE3OWEwMWFkNzgyNGZmNWFhMmIyOWNlMDY4YTQ1N2NkNjcgcHkzaworNTk4NDIgMjM2ZTc1MjZhYmVhZjU4ZjA1ZGZlOTdlZDVjY2UyZjJlOWFhYTg5MCBsZWdhY3ktdHJ1bmsKKzU5ODQ0IDQyY2Y1OWNjY2U2NjJiNzUwMGY3NzRhOTRhNjFmZGJlM2Q1N2M1ZWYgbGVnYWN5LXRydW5rCis1OTg0NSBhMjkzOGM1NTIwMGNlNGE2ZGMxY2QwZDUxMGE4OWNlZjI0MWRlM2ViIHB5M2sKKzU5ODQ2IGZiNWE2MzMwZjcxYjM5OGZjZWIwZTQwNTIwMmE4ODgwNWJhMWNjMTQgcHkzaworNTk4NDcgY2M4NjhmY2Y1MDVhZWI1OWU0MTNjMjk4MTkxYTMzY2E4NjlhZDk5YSBsZWdhY3ktdHJ1bmsKKzU5ODQ4IGE1YjdmMmQ4NzYxZDVhMWQyYWIyNmUyMWYzNjA3YTNhZWY2OTJhNzkgcmVsZWFzZTI1LW1haW50Cis1OTg0OSA2MGI1NDgwMWI2NDYzMmU4MGRhNDExNDE1NGFkOWM0MDQ3NGExMTI4IGxlZ2FjeS10cnVuaworNTk4NTAgYTFkZGU2ODBlNjk0MjBmN2JkMmI4MTBmMjlhNzY4ODFmYTczNWViYiBsZWdhY3ktdHJ1bmsKKzU5ODUxIGNiMjJmODc0OGRhN2NmNDU2Yjg2ZWIyZjcwZjRiYzMxZTkyYjQ1OGYgbGVnYWN5LXRydW5rCis1OTg1MiAwNTdkZTQ2ZWExN2UyMWE2MGM0YjY5MDIyZTMxODk0OTg4MjM5MjgyIGxlZ2FjeS10cnVuaworNTk4NTMgODhkNzZiOTIwNmU2NjczMjZhM2NmODFkZjI4ZWJjNmYyNWQ1NjExMSBsZWdhY3ktdHJ1bmsKKzU5ODU0IGQxYTFiYTUwMjU3OWU5ZTIyMjU1YTc4ZDdiNmY4ZTMwYzgzNjcyNDMgbGVnYWN5LXRydW5rCis1OTg1NSA3NmM3NjVhNzRmYjhjYjQzODVmOTAyNzA1ZmFmYjY2NGRlM2VmY2FiIHJlbGVhc2UyNS1tYWludAorNTk4NTYgNWZiOWIyZjZiYWNiN2M2YmU4ODliMDAwNGY5YzZkN2ExMWNjYWJlMSBsZWdhY3ktdHJ1bmsKKzU5ODU3IDA4OGI1MDc3YzkwMGM4ZDQ4NzNkZGI1ZTk3OTk4ODcyNzZkZDYwMjYgbGVnYWN5LXRydW5rCis1OTg1OCBmNDVlYWVkYjkyMGUyMDU1ZWYzN2UxMmZiMWQzYmVkNGVhNDA2MmMwIGxlZ2FjeS10cnVuaworNTk4NTkgOWE2MGJkOGYwMGQ2YWZhOTA0MmZjMjgyMWZlMGEyOGI2MTNkMmMwMSByZWxlYXNlMjUtbWFpbnQKKzU5ODYwIDc2Y2FiODY3ODkxNmU0ZDRhODBiMDJhZTNkMThmMTQ4ZjhkNGE1OTMgbGVnYWN5LXRydW5rCis1OTg2MiA0N2U3OGMyZDE2ZGUwZDQzMDBlNmE3YzI3MjJmNTM2ZTg5ZWE1MzI2IGxlZ2FjeS10cnVuaworNTk4NjMgYjdkMWI2MjdhN2Q1MWU0ZDJiMjJlMDA5MTcwZWRhNTM5ZDkyNmI5ZCByZWxlYXNlMjUtbWFpbnQKKzU5ODY0IDk0YWI1NzJlZDZkZGYzNjA4MDA2MDI3OWQ5YjcxZjBmZDAzZTI3ZTcgcHkzaworNTk4NjUgMzM0NDA5MTk5NjEyNDMyMTQzOTZmZDI5NTI3OTZjOGMwOWY2OTM1ZSByZWxlYXNlMjUtbWFpbnQKKzU5ODY2IGJmN2JiZDhkYjFhODJkNzgyNTlmZjkyNTRjMGY0Y2JhMjMzMjI4OGIgbGVnYWN5LXRydW5rCis1OTg2NyA1ZjY0MGY4ZjkyZjQ4ZDRkYmQyYjg5MzMwMjkyMWVkZDBkMTkzYzk2IGxlZ2FjeS10cnVuaworNTk4NjggMWQ3NGRkODIyOGRiMGNjOTViYzcwMDIzZWMzZTkyYTdjYmNlOWQzYyBsZWdhY3ktdHJ1bmsKKzU5ODY5IDEwZWJkMDI3YzI0Mzk0MjVkYzEyNWIzNDJmMWFjMWMxNTQxOTZkM2EgbGVnYWN5LXRydW5rCis1OTg3MCA1MDg2OWU3NDdlNzZlOWU0MGE5NjgzOTUwNGY3ZGI1YjhjNjE3MTY4IGxlZ2FjeS10cnVuaworNTk4NzEgOWY2YWE0OTg0OThkMjg1YzFhMWFjZGQ3N2RmZTY5NDFhMjU1NTAzNSByZWxlYXNlMjUtbWFpbnQKKzU5ODczIGE2MGY5MmJhMGQxZWQ1NjMxNTU1YjJjMjlhYTA1NzA3ZjNiMTMwOTkgbGVnYWN5LXRydW5rCis1OTg3NCA2Nzc2ZDZlZjIwMWExMDM3NThiNGJmYzEyN2U5MzlkNTZjZmI5Y2U3IHJlbGVhc2UyNS1tYWludAorNTk4NzYgZGM5ZDk1YjcxN2M1N2UzZTYxZjRkYjI5ZWRmOTBkOTY1N2VlNThlZSBsZWdhY3ktdHJ1bmsKKzU5ODc5IDlhOTc5MDhiNGM5N2VmOTFiMWQyZGI1MTIzNjRlMTcxZjUyZDc5YmQgbGVnYWN5LXRydW5rCis1OTg4MCBjOWI2YmU0ODE2NTdkZDk2MjgxY2QwMjY4N2E0NTE2MzI3MDZhZWI3IGxlZ2FjeS10cnVuaworNTk4ODMgYTI5YWRjM2IwZjI2NmI2MzZjOTYyZTQyOWMxNDBhMGJiYjNjMTg5NyBweTNrCis1OTg4NCBmYWU5Y2VkYjkxNDZiZGYxNjJiYjg4N2JjMzgzOWQ3MWY3NTVhMTQ3IHB5M2staW1wb3J0aG9vaworNTk4ODUgZmIyODc0MTVhY2EwZTZmYTVkMmEzMjllMjhhMzYwNGMyZjAxMzQzMyBweTNrLWltcG9ydGhvb2sKKzU5ODg2IGE5M2UwZTgwYzE4YTAxNzEwODAxNDg3YjMxZGRlOWMwYzlhNTkzNDQgcHkzay1pbXBvcnRob29rCis1OTg4NyA3NmE0NjFkZTE1NDQ0NDEwZmUxOTA1ZDZhZTdhN2E3MzEyYjcyZDFiIGxlZ2FjeS10cnVuaworNTk4ODggNDI2NzZhNDg0MGI1YTcxMTBhY2NjNjgyYzc2ZWM0MmM2MzE3ODk3NyBsZWdhY3ktdHJ1bmsKKzU5ODg5IGI0NDZjZDYxMzg4ZjA1YjVmZGQ1ZTY1N2RkMWJhYTFmMjdiODVkMDAgcHkzaworNTk4OTAgZDhkN2E3OGM2NDIzYzFhNDE2MjJjNWI2NzA2OWI1NmYwODIxMDU1ZSBweTNrLWltcG9ydGhvb2sKKzU5ODkxIDg5NjlkNzRkMGQyMmYzMTljN2M0NWU2NDI1OWFkNzQ3NzU2MTg3NTEgbGVnYWN5LXRydW5rCis1OTg5MiBjMzExMzkxNGU2NmU5ZTBkNjY5MzlhYzNlMWE3ZmM4YWNmZDIyNDMxIGxlZ2FjeS10cnVuaworNTk4OTMgYWY2ZjM0NTY1N2I0Yjc5NDFmMzFmZDRjZTYzOTMyNDhmYWNlNmU0NSBweTNrLWltcG9ydGhvb2sKKzU5ODk0IDIwNTc4ZGIwNzYyOWEyMDQ2NmY1NGY2N2JiODM0MGY4YjgyYmIyMTMgcHkzay1pbXBvcnRob29rCis1OTg5NSBkYmFmY2Q4Mjc5NzllMDk3ZTA5ZmZlYTE3NjM0MWZiNmQ1MmI5N2Q0IGxlZ2FjeS10cnVuaworNTk4OTYgZTc1M2UzMWEwYzhmMTc5NDM4YTE5ZmY3NDY5MGNlZTA3NDAzZWI0NyBsZWdhY3ktdHJ1bmsKKzU5ODk3IGRmODU2ZTBlMWIyYTA4OWM5NDFkZjRjMmEzMTczMGQ3NTU1NWQ4NTIgcHkzay1pbXBvcnRob29rCis1OTg5OCA2OWY0OTUwODI0MTI2NzI3MzQ4OTFmNjZlMjI4YTYyOWRlNmUwNTdkIGxlZ2FjeS10cnVuaworNTk4OTkgNjAxMjZhYTNiODE2OTc3MGQ3OTg0ODViMmY3NWJmZTllMWI4ZTVlZCBweTNrCis1OTkwMCA3ODUxZTc1ZjU0MzhjYTQ1OThkMzA1YzZjOTlmYjk0NDBmZGMwZDdhIGxlZ2FjeS10cnVuaworNTk5MDEgNDAzY2ZjYTk4NjNmZDJlMzA4YjA0NWUyYWYxOGMwZjZkMmFmY2E0OCBweTNrCis1OTkwMiA1ZGVjNGFkZThmYTk1Mjg0YjA2MGUwYzU0M2YzMDQzNmExMGQwMDdiIHB5M2staW1wb3J0aG9vaworNTk5MDMgODA1OGUxNjgyMGVmODYwZTRjOTBjNDdlMDcwYWIzYmY3NmY4OTAzOCBsZWdhY3ktdHJ1bmsKKzU5OTA0IDM1NGJlMGRhZmU1NGIyMjJhZjI1YTkzZGM5ODVlZmJjMjg3YzliNTcgbGVnYWN5LXRydW5rCis1OTkwNSAzY2Q5Yjg3N2VhZTA5YTM1YjljY2Q3OTVkZTc1ZDgzOTcyOWE0ODdmIGxlZ2FjeS10cnVuaworNTk5MDYgNzg1MjM3ZmE1ZjQwMTQ0NGMzMWQ2MTdkZGMwNmUwMTBhMzllOGZhNiBsZWdhY3ktdHJ1bmsKKzU5OTA3IDZiMGI1ZWRmYjFiNzg1YzE2OTFjN2NmNjlkNTk4MjcxMWM0OTlkZWMgbGVnYWN5LXRydW5rCis1OTkwOCAwNmY5ZjUxYWI4YzAzZGRjYmIxZDI5YTY5M2QyNjBjODE0MzZhMjA0IHB5M2sKKzU5OTA5IGJlMDRlZTRjNGZkNzM0NTg2OWM5ODAzZDVkMTBiODFkZmExOTJiYTIgbGVnYWN5LXRydW5rCis1OTkxMCAyYWQzZTM1YzU4MjVjMzdmMjhiNzg4MmJhYmRhMzMzNzUzNWM4MTcxIGxlZ2FjeS10cnVuaworNTk5MTEgYWYzYTBjYTFhYjRhMDJiZTJhNTkzMTg2YTQzMDQ2M2RjYmYzN2I5MSBsZWdhY3ktdHJ1bmsKKzU5OTEyIDYyZjZkNzgwYTExZGUwMzczNDYzNzVhZjhmNWZjYjk2NjJkOGJhY2UgbGVnYWN5LXRydW5rCis1OTkxMyAzY2MzYTU1ZDEyMzM0NTEzZmE3MzZhNTA0NTczZTdiNjIxOGFlZGFhIGxlZ2FjeS10cnVuaworNTk5MTQgOTQyNjFmMzAyN2E1OTNkZWY0NGEzNTg2ZDEzMGI4ZDYxNDhkYjlmZSBweTNrCis1OTkxOSA1OWE4MmNkZmExMzdlODhiOGNjMzZkNjU1MDM1Y2E3ZjRlOWI3MDkzIGxlZ2FjeS10cnVuaworNTk5MjAgYWFkY2RhN2E0YmY3YWY0ZWUzYTA5YjUwMTJlNGY0YTJkNTU2ODk2MSBsZWdhY3ktdHJ1bmsKKzU5OTIxIGQ4ZTQzNDJjMTQ1ZTZiNWE4OGExNDkxYzU0ZjFmMWYxOWRjNjk1MmEgcHkzaworNTk5MjIgZTdiODIxMDFiOTcwZjhlYzViMTBlNTVlOWQ5ZDkxODJkNDJlMzI5YiBweTNrLWltcG9ydGhvb2sKKzU5OTIzIDc5NTc5ZmE4ZDc1MmYyYmZhOTQ0MzQ4NGY0YTY3NjAxYjc3ZWE2NTAgbGVnYWN5LXRydW5rCis1OTkyNCBmMGI5MzNmMTI5ODI2N2Q4ZTZjYTM1NTEzNjI4MTc5YzcwYmViNGU3IGxlZ2FjeS10cnVuaworNTk5MjUgYTIyMDIxMWY4MzMxMzE2MDI5MWJkZjVmYTc2NjU2ZTIzMGYzOTA1MiBsZWdhY3ktdHJ1bmsKKzU5OTI2IGQ1ODI0ZmRkOWExNWYwZmQ3NjY5Y2M3OGNiMWMyY2QxMTlhNWJlNWEgcmVsZWFzZTI1LW1haW50Cis1OTkyNyA3NzZiNGUwNTlmODM2YTFmYzEyNDFjYWQ3M2JkZGU2YjFiODM2ZmM1IGxlZ2FjeS10cnVuaworNTk5MjggM2FmM2ZkMzg4N2VlMjNlNDk1YzIyMjU0MGZiMTEwZWNiZDhhYmNiOSBsZWdhY3ktdHJ1bmsKKzU5OTI5IDdiNzk4NTQ4YTRhZGU0ZDAyNmY1ZTlkOGQ5YzhiMjYwM2JjMjM5ZjYgbGVnYWN5LXRydW5rCis1OTkzMCA3ZGJjM2Y0Mjc4ZWJkMzRmYjcxZjA0ODBlMjY3YzlhOGYwODdkYzg1IGxlZ2FjeS10cnVuaworNTk5MzEgMjczZDM3YmYyM2QzYmUyZDMyYWMyODhjYTk4YjJlY2QwYjY5MzI2MSBsZWdhY3ktdHJ1bmsKKzU5OTMyIGE1NGNjNDc3MmU3MzczODM1Yjk2Y2U2ODZjMjg5ZmNhYjQwMmQ4YTAgbGVnYWN5LXRydW5rCis1OTkzMyA1YTcxZGNjNzFlZmY3NjM5NGQzNTk5OTI3NzJhMGQ5YTBkOTJhNzk0IHB5M2sKKzU5OTM0IDUzNTExMDVmZjgwOGEzMTcwYTYzYzZlZjdlN2M4ZDgwOTVhYmJjZTMgcHkzaworNTk5MzUgNGNhOGFjYzliZWQ3MTU0ODkyN2VhODI3NWZlOWNhMDBiNGVkZWE1OCBsZWdhY3ktdHJ1bmsKKzU5OTM2IDNmNjViY2M4OTY2ZjI5ZDg5MDhlMGVjYWUxNTZlZTlkYzI1ODhiMjEgbGVnYWN5LXRydW5rCis1OTkzNyBiNjcyYzAxNWMyZGI4NGZmNDY3OTYzMTM2NzA1MjhkMzA3ZDA0ZTY4IGxlZ2FjeS10cnVuaworNTk5MzggOTQ2OGU2MDYzNjE3MzRlMTVjY2ZhMGFjMGNlOTU4ZTRiOWI5MzU0YSBsZWdhY3ktdHJ1bmsKKzU5OTM5IGM3Mzc2OGQ5NzdhOWY5MmJiOWNkYjkwNDc4ZDU3MWNhZDE5OTBkMmIgbGVnYWN5LXRydW5rCis1OTk0MCA4OTRkMmFkNDUwMjY5ZTdlMDVkODk5ODdmM2RkNjdlMTgwOGRhMDk3IGxlZ2FjeS10cnVuaworNTk5NDEgZjJkODIwYjVhZTJhZTY0MzcwNjBiZjM4NDA5MjYwMWE5NTk0ZmNmMSBweTNrLWltcG9ydGhvb2sKKzU5OTQyIGMyNTc2MGMyMTM5N2ExZTQyMzkwZTMzNjRhZWVjOWNhYWI1YTU1ZWUgcHkzaworNTk5NDMgNDI5M2EwNmFmZDcyN2Y3NTM2MDE1ZjdkZjNkMmExYzI3MmVjOWI5MCBsZWdhY3ktdHJ1bmsKKzU5OTQ0IDM4N2Q0OGMzYTBiM2U3YzI3NDE4NzFiMTlhMTFiN2IyN2M2ZmE4YTMgbGVnYWN5LXRydW5rCis1OTk0NSA5MTkyOGQ5OWViYjA5MjcwN2I0NjJkNmNlOGE1NDlhZjgxYjY1M2ExIHB5M2sKKzU5OTQ2IDQyNmZlZjhiYWRlMmRkN2E4NmM4YTY4ZDAwYjQwOTUxNjY4YWM3YjggbGVnYWN5LXRydW5rCis1OTk0NyBiNDA5OTQxYzdhNTFlMTAwOWRiMTQxOGMxMDIzMzU4MjczZDNkYmNlIGxlZ2FjeS10cnVuaworNTk5NDggN2U0MWUxYzQ2YjU3YjBlYTZhMjhlZjJhYzk2ZWNjMDlhZTBjMDcyNSBsZWdhY3ktdHJ1bmsKKzU5OTQ5IDliNmQzNDhjZWM4N2U0YmE0YzMwZTNhN2Q4ZmQ3M2Q0MTYyMjhjM2MgbGVnYWN5LXRydW5rCis1OTk1MCBkNjZlNTgzN2FhNTdjMzIyZTFkZmU2MDEzMDVjMWY1ZTk0NmU2YTRkIGxlZ2FjeS10cnVuaworNTk5NTEgMzNmNjcwOTA3NWU4M2M4YTdlNWMyZTYzYTBmMDEyYjI4YmQ0ZmZlOCBsZWdhY3ktdHJ1bmsKKzU5OTUyIDMyMmMyMzhhNjRlNTI3Mzg1YTM1OTY3ZjVmY2RjN2U5ODgzYjJkMzcgbGVnYWN5LXRydW5rCis1OTk1MyA2MmVhY2U2NzgwZjY1OGNkZTUxYTY1YTFlNWEwY2U5YjU4ZDJjZDc3IGxlZ2FjeS10cnVuaworNTk5NTQgMTE1NDE1OGExOTlmNzc5NGYyNTg1NWQ5ZWY3MjFjNDc3MWM2NWJlNSBweTNrCis1OTk1OCA2MjdmMmUyMjczYjk0ZmU5OGJiOTFkNzNlMTk5YTc0ZGQ5MzBhMTY3IHB5M2sKKzU5OTU5IDAwNTAyMWJmNWFjZWM3M2MzMjNlZGM0N2RhODk5ZTM2NjMxYmUwNjUgbGVnYWN5LXRydW5rCis1OTk2MCA4MjdmMDQ1MTczNGZkOTY2NDc3YWYzYmJjZDVlZWY1NWE3YTc3NTRlIHJlbGVhc2UyNS1tYWludAorNTk5NjEgNWRmZGVkOWFkOGEwY2M2ZGZlYmE3Njg1M2NhOWUzY2Q5ZDc3NDgxZSBsZWdhY3ktdHJ1bmsKKzU5OTYyIDZhZjE5NGM0OTRjYzJmZGYzZjcyMzQyYzA0OWU1ZGM1Nzc5YWFjZjkgbGVnYWN5LXRydW5rCis1OTk2MyA3NzRhOTU5NzIyOGUwYWRiN2Y4ZTFiOWE1YjY5M2I3ZDY0OWU2NWE1IGxlZ2FjeS10cnVuaworNTk5NjQgY2FiODQxMjlkY2NiNTQ1NjQwNjNmMTYzOTYxODU2NWZmMzg3ZThjMCBsZWdhY3ktdHJ1bmsKKzU5OTY1IGYwMzRlYjVkOGNkZjQ5YWM1MTEzOTNmYzlmOTZjNmQ2YTRjN2JjNDYgcHkzaworNTk5NjYgMzU3YjM2NTU2MGY0Yjc5MjM4ZTkwZjg0OTNlNDRlYmM5ZDc5ZmVjNiBweTNrCis1OTk2NyBhMDBkOTAwMDRhMjUxOTZhZGE2Y2ZjYTIwNzc2MTJlN2RkODRjZmMzIGxlZ2FjeS10cnVuaworNTk5NjggZTUxMWNjZjJmZmJlNjdhMTJlMjE0MjM5MGE2ODM2Y2Q1NzZiMmUwNSBsZWdhY3ktdHJ1bmsKKzU5OTY5IGQwMjA4ZDY1ZGMyMmM1MDEwOGE2NzM5ZThhMzVhOTc5Mzk5ZWFlNWIgbGVnYWN5LXRydW5rCis1OTk3MCA4Njg5ZjQ2ZDI1ZDZhZjU1YzhjYmU0ZDVmMTc1ZGY4YzE1ZmY3OWM0IGxlZ2FjeS10cnVuaworNTk5NzEgMTQ4NTRjN2M2YTI0ODcwYWRiNTg4ZDJhNjE1YTc1NTcyYjNmZmE2OSBsZWdhY3ktdHJ1bmsKKzU5OTcyIDVjN2I3ZmJlYTY4MWIxNWQ4NGU0MzEyOTk4MGY4M2NlYjU5OTg4NGUgbGVnYWN5LXRydW5rCis1OTk3MyAwYmI2Y2Y3N2M4NWFmODUzNGQwZmVlZWNiYTQ0NGFlYWYxOTFhMzE4IGxlZ2FjeS10cnVuaworNTk5NzQgNDZlNzMxYmI2YTg1ZjFjZWRjNzY0ODc0YzlmYWIxMmQ2NGJlNTJmYSBsZWdhY3ktdHJ1bmsKKzU5OTc4IDU5ZjI5YjAxMzZmYjVmNjE4NDk3ZjA5ZjhhNDUyYTUwNjRiNDBiM2EgbGVnYWN5LXRydW5rCis1OTk3OSBiZmE4ZDIyNTc4MjMyMjNkYjdjNGEzZGRjZTY2MTQ0NDQxYWUxZjc4IHB5M2sKKzU5OTg0IDI4YzgxYzI3Mzg5ZTI1NDMzOWE5MGMzMTBhYjU3NzQ3YWUzMjMyMzEgbGVnYWN5LXRydW5rCis1OTk4NiA2ZTU2NzVjYTI1NTljNmE3MzdlZjFiNDZiODExNDlmNzcxYTdkNDdhIHB5M2sKKzU5OTg3IGM3OTA1ODdmMjk5MjVjMTUxNDUxMDQwZDM5NDM3MmFlNjg3ZDY2OWEgbGVnYWN5LXRydW5rCis1OTk4OCBjYjkwNDA0YTQ2YWQxOGExMjJiZjE4MmFkMjQxN2U5Y2Y0ZmE1YTUwIGxlZ2FjeS10cnVuaworNTk5ODkgZjMwMmNmOTk5NjMzZWI3YzZkMmIwZTBmMjY4NGY0ZGVmYmM5MDBhNSBsZWdhY3ktdHJ1bmsKKzU5OTkwIDZmMDQ5Y2E1NWUwNmIyYzEwOGVjMGQ4ZDBlODRiYjBiODIzZGMzODUgcHkzaworNTk5OTEgOTkyYTYxMWIyZTMxNDY2YzE3MDRiYTdlZTZjMTk2YmI4NGI0ZjAxYyBweTNrCis1OTk5MiAyZjExZjdkOWJkYzg0ZTBkNmJiYTJlZmUzY2U1YTQ5ZmMwY2U5ZmE1IGxlZ2FjeS10cnVuaworNTk5OTMgNzFjNzk5ZWIyNGIyNDgwYWRmYjc3ZjQzZGQyNzVmZmE0ZTIxYTg4MCBsZWdhY3ktdHJ1bmsKKzU5OTk0IDdmMmYyMWFhMzY5MDZhOWRkMWU3ODU3Yzg5ZTc5ZTk0MWE4MThiYTggcHkzay1pbXBvcnRob29rCis1OTk5NSBiMjNiNDc3ZDc4OTlhNjY4ZjY4NDM0OTRhNjcxMzU5NDU4OTI0MzgzIHB5M2staW1wb3J0aG9vaworNTk5OTggYzQzODNkNzY1Y2E3MTc4Mzc0ODRhM2MyYWM1ZDM3MWE4MDA2NjQ5OCBsZWdhY3ktdHJ1bmsKKzU5OTk5IGE0YTAyNDMyZTczMzNlOTllZjA5ZWM1N2IzOWEyOWVhYTBlNzViOGMgbGVnYWN5LXRydW5rCis2MDAwMCA0MWYxYjNjYjBiYjEwMzU1YjI0OTVmOTEzZWViNDk2ZjM5NzQzMTRjIHJlbGVhc2UyNS1tYWludAorNjAwMDEgMmY3ZjNmNWU3M2QzYzVlYWExNDAyYzkxYWZlMGU0Y2UxOGFiMjcyNCBsZWdhY3ktdHJ1bmsKKzYwMDAyIDNkNzA0Mjg5M2NjNTA0NmNlZDdhMTk2ZDU4YjZkMjBhMWY1OWU5ZTcgcmVsZWFzZTI1LW1haW50Cis2MDAwMyBjYWY1OGM4MzE0OTljYzdkNTk0NTM1OTE4OTZkMDMxMGVkOTVmZDI3IGxlZ2FjeS10cnVuaworNjAwMDQgYTJmM2Q0OTljZTEyZWY0Y2UyMWI1NmJjYjFlMDliYTNjNTYyMjY5ZSBsZWdhY3ktdHJ1bmsKKzYwMDA2IDI3ZDU5Njc1YjkyYzZmN2EwZDAwNWViYTg5Y2FhODVkNWRlMDRiYjAgbGVnYWN5LXRydW5rCis2MDAwNyBmMTI4ZTZlYmY5MGY4MWQwZmQyYTMwNThiYzdmYTNjYWI2NmIzMGYzIGxlZ2FjeS10cnVuaworNjAwMDggMmM5YmM2MWQ0ZjczZjM3NmUzNTg5NWZmZGQ3MGZkOTExYjMxMDYzMCBsZWdhY3ktdHJ1bmsKKzYwMDA5IGM3ODRmMjBjOTY3ZTg0NGJlZGJiMmZkMzc0MWQyOWJjY2FlOTJhOGQgbGVnYWN5LXRydW5rCis2MDAxMCBhYTVjZjYzOTQ2NDFkYzFkM2EyYmYwZDYzNzRkYjZhYzRlZTgwNWJjIGxlZ2FjeS10cnVuaworNjAwMTEgOTkwMDBlYTIxZmYyNzhhYmI4OTQ5ZGFlYzcwYTcxNTc0ZWNkZGQ3MyBsZWdhY3ktdHJ1bmsKKzYwMDEyIGI0NjllOTAyNzNlYjA3MmRmN2YwNGRlZWUzMmM0NzkxNTkyOWQzYjUgcHkzaworNjAwMTMgZDBmNzk2M2NmOGIwMzM0OGNiY2M0NTMwODY3MjA1ODY1NDAzYTA4NCBsZWdhY3ktdHJ1bmsKKzYwMDE0IDI2YjYxYTVkZjExYjYxMmQzMTExNjYyNzRhNzJhZTYyNDlkMzE1OWYgcHkzaworNjAwMTUgY2IwZGNkNmUzYjExNDdmM2FjYTNiMmUyNzA1ZjZiMWI5MGE4ODQ2NiBsZWdhY3ktdHJ1bmsKKzYwMDE2IDNiMzg1NmIzNjIxYjIwODk1ZGFlNGYzNGEzMjEyZDU4ODE1ZDg0YWMgcHkzay1pbXBvcnRob29rCis2MDAxNyBkZjcxZmNkZGI3NWVhYjE3YTA1ZmUyNjFlNDAyMzMwMmEyZWQ2ODlkIHJlbGVhc2UyNS1tYWludAorNjAwMTggYTM4MDI4NTNjMzE3NjI2NmNmN2IyNjBkMDBkMmU0OTA5YzE4MmQ4NSBsZWdhY3ktdHJ1bmsKKzYwMDE5IDE3MGNiMjczOWEzOTBlMjc4MzIyOTQ0NjI1ZWYxYjk1YjhjZWMyMmUgbGVnYWN5LXRydW5rCis2MDAyMCAwNzY2ZWZkMmE2ZDYzZTYzYTNiM2RkYjUzM2RkZjJjYWFlODdhNjAwIGxlZ2FjeS10cnVuaworNjAwMjEgZDgxNmJjMGM0MGI2NzU5NmUyNTM1ZTA0NzQ1NmFiNWExNmI3Yzc3NiBsZWdhY3ktdHJ1bmsKKzYwMDIyIDcxNzI2NWVkMjA0MWIzMTk3YzI1ZTYxY2Y1YjJlMTYyMTg4MjVlOGMgbGVnYWN5LXRydW5rCis2MDAyMyAzYjRiYzRjNzA0YzE0ZjY5MGJmNDJhMGFkZGY2NWRmYjg1Y2U3NDZmIHB5M2sKKzYwMDI0IDIyMmI5MThjZTA5MjRjZWQ2ZWU3ZGIxOWNkM2E0YmU1ZjBhYzJlNjYgbGVnYWN5LXRydW5rCis2MDAyNSAyOWU0Yzg2ZDUwNzFhNmM4ZTViYTI4MTIwMWUxODFiMjIzNTkwN2M5IGxlZ2FjeS10cnVuaworNjAwMjYgMDc2YzhhYmJkNTRmNzg5OWQ4MjA0NTk1NTY1MmEwYzkxNmFiZWRlYSBsZWdhY3ktdHJ1bmsKKzYwMDI4IDhiNDk1NDAzYmEyMzViZGE4ZTNlODNiYjBhYTcwNzNjYTQ4NDdlZDIgbGVnYWN5LXRydW5rCis2MDAyOSA0MjhkZDg1MWJiOGFlODBmZDNiMTNiMjI3ODM4YjRkM2ZjMjU3ZGQxIGxlZ2FjeS10cnVuaworNjAwMzAgYmIzM2IzMmRlM2EwYjkzNzIxNTQyOTNkYmIxOTZjMmE0ZTA3YjU0ZCBsZWdhY3ktdHJ1bmsKKzYwMDMxIDg1Y2YyMjBmMTZkODVlZTQwNDY2ODE5NzQ2MzIyYjhlZDM1OWJlODMgbGVnYWN5LXRydW5rCis2MDAzMyBhMGRkMDkyYmI2YzM2ZTdjNmQzYjU4YjQ2OTc5OTM1NDQ3NDA0NTk5IGxlZ2FjeS10cnVuaworNjAwMzQgNGQ2MWM4ODc2MjRkMzViYjZjYzYzMDIxYjc2YjI5NzVlOTNiZjYyOCBsZWdhY3ktdHJ1bmsKKzYwMDM1IDI2YTg2YzI5YWQ2MDBhNjg4ZTRhNDk0YzlhNGFlZWQ0ODI4NmI0ZTMgbGVnYWN5LXRydW5rCis2MDAzNiA4NDBlODdlMTgzMDY5NDBiODBjNzA1YjM5MmMzNGQ4NjNlZjU1ZTRmIGxlZ2FjeS10cnVuaworNjAwMzggYjQwMDNiNmM2ZDEzN2VmOTU0YzQ3MzM2ZGNjYzVmOTZlM2Y1M2E3MiBsZWdhY3ktdHJ1bmsKKzYwMDQxIGEzYmYwZTI0YjkxZTY5NGVmOTRjNDg1NjdmMDkxZmIzOTA2YmRlNDcgbGVnYWN5LXRydW5rCis2MDA0MiA3OWJhYmI0Y2NlYzg1MmZmZmQ5M2I5NjEzMTc4NmU3ZDM0MTBlYzljIGxlZ2FjeS10cnVuaworNjAwNDMgYmJmNDg0NTgxMDQzN2Q2NmI2MTY4N2ZlNzNiNzg3NTRjODliMDJiNSBsZWdhY3ktdHJ1bmsKKzYwMDQ0IDE0ZDQxMDQ5NzZmY2M3ZDQxYzg3OTdiMDEwNmE3MDQ1ZmQ2ODg4YTYgcHkzaworNjAwNDggMjk0NjAyMDU2MGU3M2Y5NTkzYzQwMTBmNGZkOTc2MzYxMjg4MWViNCBsZWdhY3ktdHJ1bmsKKzYwMDQ5IGQ5ODMzZDJiZjQ2OTVmZmM2NWE3ODJhOWM4OWUyYzczNjJhMjdmZjYgbGVnYWN5LXRydW5rCis2MDA1MCBkYmYwODU2Nzc2ZGQ3YzNjMmJmOWY2ZWQ3ZTRmMjU0ZGU2NzE1N2QwIGxlZ2FjeS10cnVuaworNjAwNTEgOTdhN2MxMjZkMDRlYmY2NjU1MTJhNTAwYTNiZTU4ZDg2NWJhNjgzYSBsZWdhY3ktdHJ1bmsKKzYwMDUyIDhkYTllYmY3MzAyNjQ3ZWNhYjUzOTQ5MTQ1NzIzYzdmNGMzNjI5OTggbGVnYWN5LXRydW5rCis2MDA1MyA0YTY3NjczZTM0ODFkYzEwNGU1ZTY4N2U1YmYzYjM3Y2JjZjAwNzYyIHB5M2sKKzYwMDU0IDU1ZGRiMTY2ZjFkMWFhMzJiNDE0MGVmZjYxODBjMGVjYjAxZGI0ZDkgbGVnYWN5LXRydW5rCis2MDA1NSAzZjQwYWQzYzEzZGQ3ZWMyYjRjZWIyNDc5MTRmNDk2MTJlYmQ5YTNmIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMDU2IDc2NWU1N2MwMDFiMWExMWViYmZlMzBlNzYzODM3MmVhOWU5MDgzOTMgcmVsZWFzZTI1LW1haW50Cis2MDA1NyA1ODMwM2VkNzJiYTFhN2JmMTI1ZWY2NjA5NjQyOGQ0MzcwYzhkNmYzIGxlZ2FjeS10cnVuaworNjAwNTggMTNmNzRjODU0NGNjOGE5MjFkZTZiNGZjNjMxNjQwNGFiM2M5OTAyZCBsZWdhY3ktdHJ1bmsKKzYwMDU5IGViOGVmOTY5ZWQ2OGE1Zjc4NmZhNDI5YWUzNDA3MGZkM2FjYTMyYjYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAwNjAgZDdhODdjN2YxNGQ5ZWU5NzZmNDU2ZTdmOTllZTEyNWZjNzM1MTdhNyByZWxlYXNlMjUtbWFpbnQKKzYwMDYzIGE1MDcyYmEzNWYwYTBmM2FkMTU2OTQ1MTA4ZjQ2NzJjZjhiZmNlN2IgbGVnYWN5LXRydW5rCis2MDA2NCAyMTc5ODMzYzljOWE1OTA4ZjM5YzEwNjIxZGQ3ZGQyNDMxM2U0NzUxIHJlbGVhc2UyNS1tYWludAorNjAwNjcgMGI3YjYyZGQ0ZGNiZDI4M2Y3NmYxMTIzNWEyMDFkMDJmMTU4OTU1NSBweTNrCis2MDA2OCBjNDcwOWI4MWFiZGViNmM3YzE2Y2NiNjBhYWExOTdlYzc5NWVkNDQ0IGxlZ2FjeS10cnVuaworNjAwNjkgZmViZGUzY2FmMjkxMjZjNTNiMmNjZjUwNDc3MzE0YWY5YzNjYWYyYSBsZWdhY3ktdHJ1bmsKKzYwMDcwIGYyNzk3ZTA3MDllMzhjZTE0ZGYzY2I0NDU0ZDk5M2VmZjM5NzI0NjUgbGVnYWN5LXRydW5rCis2MDA3MSAzZDcyZjUyMDllNjdkNTQ5ODI1M2ExODY1NGUyYzg3NmI3MDk5NjA3IGxlZ2FjeS10cnVuaworNjAwNzIgZjk3NzU0MzgzNjlhYjYxMTYxYmFhNDU1MGJmM2Y2NmVmOWRmNjU1NiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDA3MyBjZTMyNmFmZGYwOTg5ZmNiNjBkN2QxOGQ4OTVhNWE5YjM2NjVhOWYwIGxlZ2FjeS10cnVuaworNjAwNzQgY2MwYTI5NjExOTVlZjM4MWFjYWRiNTI1NWFmODExNGFhMjkxOWVmOSBsZWdhY3ktdHJ1bmsKKzYwMDc1IDczYjVlOTM5ZTA1ODBkZGJlODEwNTAxYjg5MmEwYmM5YzVjZDI1ZjggbGVnYWN5LXRydW5rCis2MDA3NiA1MmU4MjE0MThhNzk5YjUyNGFkODM1ODExNTk5YTY1N2I0NDBiYjAzIGxlZ2FjeS10cnVuaworNjAwNzcgOGVkYmUwMjVhZWQ1NzEyOGYxMzg3NWJlNTU0NThjYzE1NzljYzc4NyBsZWdhY3ktdHJ1bmsKKzYwMDc4IGM3Y2I1ODAwNjA2ZTJmNmRlMDNiYjkyYmRlZDdhZWJhMTEyZDA0ODggbGVnYWN5LXRydW5rCis2MDA3OSBhNmY5YTJiYTg5NjJhNDYyOTQzYjZhMzQzNWQ0NDYxMWVmMTViNzQzIHB5M2sKKzYwMDgwIGNkZTQxYmQwOGU1ZTI0Y2Q5MzhkNjIyNzU1OGQwNDdmNWEwY2I5OWUgbGVnYWN5LXRydW5rCis2MDA4MSBlM2ZkYmM4MDk5OTk4MDg4YmQwN2FiZTRkMDJiMTJjNDc2NDRmYzRmIGxlZ2FjeS10cnVuaworNjAwODIgODU5YmY4NWE1NTZhOThiODIwYjAwMTY4MmQzOGFmZTA0OTUwYzFhMCBsZWdhY3ktdHJ1bmsKKzYwMDgzIDBmZTkzNmI3NzExNDIzNTE0YWNlMDc4YzVlNWJmYjQ0NjdiMDdlY2EgbGVnYWN5LXRydW5rCis2MDA4NCBhZmEwZWYzNzkxODY1ZDE4Y2ViNzEzOGQ2MzUxODFmMWJjZTMyZGJjIGxlZ2FjeS10cnVuaworNjAwODUgYTI2NWJhYTc5MTAwMzQzYmExNWI4NWQwNTg3NTQzZTMzZGYyYzM2NiBsZWdhY3ktdHJ1bmsKKzYwMDg2IDgwMzY2NjIxYzUwMjI5ODFiNzIzYTg2OGJhMjRhNWUzMzI2MDIyNWYgbGVnYWN5LXRydW5rCis2MDA4NyA5YzBhOTEzYWRjZDRiOGE5NmU2YjlmOTFjZTkyNTQyMWE1ZTgyMmVmIGxlZ2FjeS10cnVuaworNjAwODggZTRlNmZjOWM5Nzc1ZDgyMDI0MzgyOWIxOTQ2MzcxZTFmYmYxNWY4YiBsZWdhY3ktdHJ1bmsKKzYwMDg5IDhiNTUzMjExNjExNTJiYjBmYzJmYjAyODRmYTIzN2I5ZGI1ODNhYWUgbGVnYWN5LXRydW5rCis2MDA5MCAzNjI1ZWVkNGYwY2Q5YmU4YzgzYjU2OGZmNDdlM2ExYTFkZmE0MDU4IHB5M2sKKzYwMDkxIDg3N2I0Njc5YjlmZTY5YjQwNWJlNTgzZWQwOGY2NjEyZGM0NjE4YWEgbGVnYWN5LXRydW5rCis2MDA5MiA2MWExMWNjOTU2MzJlODQxNTA1ZjJmYWUxMzM1YzZjZjgwOGIxOTQ2IGxlZ2FjeS10cnVuaworNjAwOTMgMTcwMDlkNjIxMWI4MzZhNjYwMTQ2ZGYzNzBiMzdlYmZmNTJjZGZkOCBsZWdhY3ktdHJ1bmsKKzYwMDk0IGNhMjY4M2E2Nzk0MzEzYTNmZWMxNzVkNzQwNTg3YzUzNzM5ZTIzOGMgcHkzaworNjAwOTUgNGE3YWZmZjUyZWE3MWY0ODdhMjFlZDE5Njg1YmFhYTk3Y2JjZDFlZSBsZWdhY3ktdHJ1bmsKKzYwMDk2IGIzMTAyMDA2ZGQ3ZWM5ZmNlY2UzODIyOGVmMTI3ZDdjMTBkYWE3MzkgcmVsZWFzZTI1LW1haW50Cis2MDA5NyBiNTIwZDMzYmVlMDYxNTRmOTdjNWFlZWYyZTA3Nzk2YTc1ZGQ5OGU2IGxlZ2FjeS10cnVuaworNjAwOTggNGFjNDg0MjQ5YmQxZTFmZGM2MjExYjYxNmIxYzZjZjkxYWYwYWFmNSByZWxlYXNlMjUtbWFpbnQKKzYwMDk5IDRmMzUxMThlZWQzYjhmMjE2MjVjN2ZiNTAzZDZjYzVlNzY0NTJjNzcgbGVnYWN5LXRydW5rCis2MDEwMCA4OGY4ZjE1MmEwYjMzMmMyZDBiOTE0N2QwMjE5MWJhZjhhNWE0NTU0IHB5M2sKKzYwMTAxIDNjOWNjYzMyZGE5YWZlNjQ0OTcwYTc3ZmZiNDhhM2JkYmUxMWJmZDMgbGVnYWN5LXRydW5rCis2MDEwMiAyMTAzMjNlMmE5MjcyNmQ0YmNiZTUzYmM2ZmJlMTk3MmQ3YjE0ZDQ0IGxlZ2FjeS10cnVuaworNjAxMDMgMTU1MzY4NjUxOThhYjIxOTY1MGM1MGI5ODdkZjc4NjFkMjc3MDliNiBsZWdhY3ktdHJ1bmsKKzYwMTA0IGI0ZDAzYTkyYmRkZjljYmNiN2NjMDVjZDcyNzYxODQzNDBjZjE2NWIgbGVnYWN5LXRydW5rCis2MDEwNSAzZDEzMWM4MzhmMDliOGEzMDExZTQzMDhkYzkzYmUyYjRjYmIxZDc3IGxlZ2FjeS10cnVuaworNjAxMDYgZDhjMTNlY2I2ZTg1OWZlZTZkYzE5ZGY4ZmQ0Y2JmMzFlMGFkYWQ5MSBsZWdhY3ktdHJ1bmsKKzYwMTA3IGJkYTQ5ZWI0NjA3NDlmODQzMDc5NWYyNGVmMmZkNmMzYWYzODZlNDcgcmVsZWFzZTI1LW1haW50Cis2MDEwOCAxN2Y4NDUzMzI3Nzg0MTU0NWFmYzE3NDliZjg5YTEzZWUyMzY5MTM1IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTA5IDEzZGM2NWZlODU5OWYwOGE4ZDRhZTVkZjQ1NjAwZWNlN2YwNzIzNmIgbGVnYWN5LXRydW5rCis2MDExMCBlYzAyZGJlNmIwNTEwMWI2MTNhYWU1MzZlMTEwNDU2YjExOWE1NDRlIGxlZ2FjeS10cnVuaworNjAxMTEgNWU2NjAzMGYxYTY3YTQ2OTU0ODQ3NWJiOGYwYTA4Zjg4MDYyMTQyYyBsZWdhY3ktdHJ1bmsKKzYwMTEyIGFjMmVhOTU1MjI5MzBiMmMyMWM2ZGJkZWU4NmU3NzcxNDE3MmNlZjMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAxMTMgMGFjZTc0NzY3NDc4Y2Y2N2U2YjA3NDJlZDFmOTA0YTBjYzUzMzc5YyByZWxlYXNlMjUtbWFpbnQKKzYwMTE0IDQ3OTY1ODhkOWY5YWNiNzUxMzc1MjY3NzMzNmMzY2Y2YmEyN2VjOGIgcmVsZWFzZTI0LW1haW50Cis2MDExNSBjMjM4OTJmNWE2OWYxNmY4MWIxMWRmN2M4MGIwMGM2ZDZmOTk1NjM2IGxlZ2FjeS10cnVuaworNjAxMTYgMTE0ODNhNjczYTQ1ZWVkNGNiNDQyNTUyNWQwZGNjY2RkOWY3M2YxZiBsZWdhY3ktdHJ1bmsKKzYwMTE3IDY4ZjVjYzk1YjcwYTVlNmY5YzA0OWM5YTgxNmE0YzNkMTlkZjZhNGMgcmVsZWFzZTI1LW1haW50Cis2MDExOCA3NjQ3MTUyZjc0MjQ1YjdlZTUyOTliMWQ4ODg2Y2VlNzlhMjQ0NTI3IHJlbGVhc2UyNS1tYWludAorNjAxMTkgMWU1NjE0NTY3YTZlZDk2OWNmOTQyNzc0NWJlZGI4N2IwMmM5OTczZCBsZWdhY3ktdHJ1bmsKKzYwMTIwIDgxNmE3YmRiZjY5ZThmYzE4Yzg5ZjhmOTdlMGU2YjFiNDg0NmNmNGMgbGVnYWN5LXRydW5rCis2MDEyMSAxMTIwYjNkNjA2ZjI4YzFjNWFkOTA1MmQ0NjQ4NGE1Mzg3OTU0NjMwIGxlZ2FjeS10cnVuaworNjAxMjIgNmQ0M2ZjY2RhOTBjM2ExNDJjYjRlMDIxZWUzYzAxY2RhYjAwZWQ2NiBsZWdhY3ktdHJ1bmsKKzYwMTIzIDNlMGY0YTRiOWY1NWFlNjEyMjRhN2UyMjViYjU1ZTY5ODFlZThkNzYgbGVnYWN5LXRydW5rCis2MDEyNCBmYTZjZWUxNGRjYmE0OGQwYWJkNWQwMWI0ZDkwNzkxODk3YjgwMGMwIHB5M2sKKzYwMTI1IDU1MzQ5ZDRkOWY4MzM5ZTUwYzVlZDY4OWNlODM1ZmJmZGJjODQ3ZGEgcHkzaworNjAxMjYgMWU4YjllN2MzNGNlYzU1ZDA2MTdhZGIzZGYwMTIxNDBlM2FjODI5MiBweTNrCis2MDEyOCAwMmEyMTIwZTVkYjIzYjVmYjRkNGQ0NmYzZjkwMWY5NWY4NDM2OGYxIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTI5IDk0MWNmMmJmMjAwZTQzOTJhM2Y4YmQ4NmYzNmY2NTE5NWJhNWUwZTAgcHkzaworNjAxMzAgYjk5ZjkyOTVmZDljZjg4NmRlZWJjZGM2NDZiMjk1NDg2NmE5NzVhYSBweTNrCis2MDEzMSA5NDJlNGI0MmRhMTRkNTY4NWNlMmE2N2RkNzNiM2Y1YTE3ZDE5MWI1IGxlZ2FjeS10cnVuaworNjAxMzIgMTUwY2I0OGVkYjA3ZTFiYTg2MTBkZmMzYzEwMDIyNzY4YzZlZWQxNiBweTNrCis2MDEzMyAzZjM0ZDNiMDM1MGQxMzViOWQ2MWZjZWY1MDRjNTZhMzUwYWU5ZmM5IGxlZ2FjeS10cnVuaworNjAxMzQgZTM2NDY5ZTZkOGI2NzgwOWM3MzRiYWJiZjE4MWE4OWMyYWVjN2JiNSBsZWdhY3ktdHJ1bmsKKzYwMTM1IGFiY2I3OTIzZDg5OGZkYTNkZWQyYjVjNjEzNDU0Mzc3YzcyNjdkMWMgbGVnYWN5LXRydW5rCis2MDEzNiAxNDViM2U2MDUzNzg0MzUyNjZlNTQzYTAwNDA4ZjhjMjVkOTZmNTY5IGxlZ2FjeS10cnVuaworNjAxMzcgYjI4ZmRlZjJmMGQ3MWIxOGQ2ODQ0N2RmZGIyN2JhOTkyOWJkMDgyOCBsZWdhY3ktdHJ1bmsKKzYwMTM4IDQyNGNjY2ZkMmJhYWE3MjE4YTljYjRkYWYzOWJkMjA4ZTY1OGIzYzQgbGVnYWN5LXRydW5rCis2MDEzOSBlYWNhMjM2N2VjYzk5Mjc4YjIwOTY2NWFiNjFhZGQwODk0MWEyNDUzIGxlZ2FjeS10cnVuaworNjAxNDAgODRmMWE2NThiMjMxOTIzNzA1Y2U5Mjg5OWIwMGM1MDdhNjI3NWJhNiBsZWdhY3ktdHJ1bmsKKzYwMTQxIGVmODU5Y2Q3NTRhNzZmYTc3ZTA4NGE4NThlMzRjMmU4ZjUyYTA2M2IgbGVnYWN5LXRydW5rCis2MDE0MiBlYTM4OWEyNjhiNTQ0OTgwNzI3Y2UzODU5N2QzNGZhOThmOGI5OWI0IGxlZ2FjeS10cnVuaworNjAxNDMgZWFiMDBkYjgwYzI3OTU5ZjAyMmY0YWQ5YzZkMGYzODRjZGQ3M2IxNCBsZWdhY3ktdHJ1bmsKKzYwMTQ0IGVmN2Q3MmQ5ODQ4NWJmNDE0YTg2MjE2N2IwZWYyNzU4YmY5ZTEzMmMgcHkzaworNjAxNDUgYWM5NzBmODgzMTg3NTZjZTJhZGJkNmJkNmJhM2M5MGI2YTZiNjQ2YSBsZWdhY3ktdHJ1bmsKKzYwMTQ2IDBmMDcyZWRiMzM0MzczMjYxNzk0NWM3NWJkMDNlOTVlOTZmOWVlNjEgbGVnYWN5LXRydW5rCis2MDE0NyBjM2JmOGY5YmVhYTcyNzEyOWU0ZTA3ZTc2M2MxNjc5ZTViNDljZWQxIGxlZ2FjeS10cnVuaworNjAxNDggZWIyZWFmZGEyOWI3NmRkOWIxYjJlZGI2Mjc3NGZmNTk0ZTgxYWZjMyBsZWdhY3ktdHJ1bmsKKzYwMTQ5IDg5YjEzYjY5Mzg2NDU0MDY1ZjA1YjY2ZTY1YTg5NDY2ODEwMzEwNWYgbGVnYWN5LXRydW5rCis2MDE1MCBlZDMzZGEyZTc0ZTcwZTNlMTRmYTk5ZmNmODgwMjk3NGUyZDYzNTQxIHB5M2sKKzYwMTUxIDk0MTFiMWI5MTIxODEyYjdiZWY2ZTc4ODNiOTM1YjQ0ZWUxMjI5NTAgbGVnYWN5LXRydW5rCis2MDE1MiBmYWJjNjg4YTA4YzY4ZmZiYjVkMTZhNTM0NGZkMDk2ZWI2MzAxZmQ3IGxlZ2FjeS10cnVuaworNjAxNTMgYWQ2YTlkYjFmZjQ1YzU0Mjc5MmFhM2JkOTUwYmM2ZTVhOGIzYTQ2MyBsZWdhY3ktdHJ1bmsKKzYwMTU0IGY2ZDRhMmM0OTUzMTUwZThjNjNjMGU4MDJlYjI0YjQ5Y2Q3ZGZkYTYgbGVnYWN5LXRydW5rCis2MDE1NSA4ZjE1ZjhkZTQyMTg1YWFjNGFhMWRmYWVhOTJhNDBkZjVjMTg0ZmYzIGxlZ2FjeS10cnVuaworNjAxNTYgOGFiZDM2ZjNhYjdhM2FkYzgyOWY5NDU3MTg4ZGI0ZTc4NTIzOTYyNyBsZWdhY3ktdHJ1bmsKKzYwMTU3IDBhZTU5ZjYwOGI0NGY5YzExZThjMDM2MTBlY2ZlYjY1NjNkNTFlYzggbGVnYWN5LXRydW5rCis2MDE1OCAxOTkwZmE2YjllODI4N2Q4MTJhNzBhZDhjMTlmNjU3NDA2MTQzYzFkIGxlZ2FjeS10cnVuaworNjAxNTkgNzlmMTUwNTM3NTFlZDg3NmRjMjY0YjQ4Zjg1M2RlYjlhNjA2MmM2MyBsZWdhY3ktdHJ1bmsKKzYwMTYwIGRmZmYwNDE3NTNhYTE4ZTA2MDU5NDY3OGYwNDU4MTJhNGY4YzY2ZTEgcmVsZWFzZTI1LW1haW50Cis2MDE2MSAyN2RhYzE2NTQxZDkwOTA4NjQyNDJlNDVkMDU1MTdjNjZjZTFkMDllIGxlZ2FjeS10cnVuaworNjAxNjIgZDk2MjE0MDU0MDZiZGVkNTU5NGZmYjk2YTczYjJiNGRmMGUzOTg2YSBsZWdhY3ktdHJ1bmsKKzYwMTYzIGE2YjE5MGIwY2YwNjhlN2QyNGNjNzNkZGIxNzM4NWU5N2M5YjgwYjEgbGVnYWN5LXRydW5rCis2MDE2NCA0MzJjNGFlMGZkMDQ2ZmU5M2Y0NTNhMTExOThhYzAzMWJlODkzZmU4IGxlZ2FjeS10cnVuaworNjAxNjUgMzI0MTJmY2ViMWIzNGFkNjM0MmFmNzExNWRmZTUxYmY1ZjBiNDZhZiBsZWdhY3ktdHJ1bmsKKzYwMTY2IDcyOTQ5NWY3YjIyMWE0NWUwOGVlODZkMTExMjY0NGUyYmVhZjI3ZDMgbGVnYWN5LXRydW5rCis2MDE2NyBjNjlhN2I1NWFkNmJmZmE1OWZkZjE3MmQ2ZDVmOWE4OGVmNzAzOWY1IGxlZ2FjeS10cnVuaworNjAxNjggOGE5YjNiMGJlNTczOWFhZTk2MmQ4MmQ1MGMyMDNmY2ZjY2FjMDBmZiBsZWdhY3ktdHJ1bmsKKzYwMTY5IDFiZTRiYmQ4MzRhMTRjZDJmYWI1YTA2MGRjNjMxMWI0MTIzM2QwOTIgcmVsZWFzZTI1LW1haW50Cis2MDE3MCA3YzU0ZjRhMmQ0Mzg0ZWNkYTIyNGZkMWUwMzExMGU1MmRkYzZlNzY5IGxlZ2FjeS10cnVuaworNjAxNzEgMGI0MWE5MWNkMjYxYTM1MjdiOGY4ZTFmNTQxMmQ1ZWEwNjY1M2JjYiByZWxlYXNlMjUtbWFpbnQKKzYwMTcyIGRmMjJlNjE4MGU2N2FjOTM1ODhiZjY0YTgxNWE1NDM3YzNmNjIyYzUgbGVnYWN5LXRydW5rCis2MDE3MyAyOTY0M2ZiZTExNTA3MDZhNDkyYTNjYTllODZiNTcwMDUwODE5ZDdiIGxlZ2FjeS10cnVuaworNjAxNzUgYjc2Yzc4Y2RhM2FiZmUxZDcyNzViMGJjN2NhNGU2ZTIyMjI0MTdlNyBsZWdhY3ktdHJ1bmsKKzYwMTc2IGZlYmE1ZDVjYWMyMjFmMGJkOTEzZmQ5NmVkMzI4NTI1Nzk2NWEyMjQgcHkzaworNjAxNzggYzNkOWU1N2U3MWYyYzIzNDAxOTNkNjJkMGI1YTVhMDQ4NTgzZGNjZSBsZWdhY3ktdHJ1bmsKKzYwMTc5IDViZWE0NTkyY2Q3YTFiNzBlMDdkODk1ZDhkOGMwYTIzZjY4NGU0NTEgbGVnYWN5LXRydW5rCis2MDE4MCAxMDFkODZhMWFmODU4OGZkYjRhYTQ2ODgxZmQxMzdiMmMzZWQyYTYzIGxlZ2FjeS10cnVuaworNjAxODEgZWI0YjUwZjczOWY2ZTFhNWQ5YTRlZDQyYThmMDY0YWY2YTM4YmFmYiBsZWdhY3ktdHJ1bmsKKzYwMTgyIDMxMDdmZGI5MDgxZTU4NGVlNjdiNWE1YTFmOGY5YWZkOTM1M2M1MGMgbGVnYWN5LXRydW5rCis2MDE4MyA4MTAzZjAxOTg5NjdjOTY1Mzc2ODEzZGIxMzg2YTZmYzhmMTZmNTRkIHJlbGVhc2UyNS1tYWludAorNjAxODYgNzExYWUwZTk5YzAyN2Q1ZTdmODVkMmQ5ZjM4YjcxZjU4ZTMyODhhNyByZWxlYXNlMjUtbWFpbnQKKzYwMTg3IGVhNjFlOWVkZDk3OTliOGE1NjNkYjlkZWI5ODk2ZmM4OWRkN2VmNTMgbGVnYWN5LXRydW5rCis2MDE4OCA3ZjJiNTI1ZjlkZjQ4YzdlODA3NTNlOTIyMTE4MDgwOWI2YjFiYmNlIGxlZ2FjeS10cnVuaworNjAxODkgYjVlODA5ZjkyNmRlMTg3ZWMxZmE4NDk5OWU1MWNmNjQ5ZTlmOGI0MSBsZWdhY3ktdHJ1bmsKKzYwMTkwIGZlN2Q0MjM0NzRkZWFkOWI2ZDMyZjc5NWVhNjhmOWI1ZmNlZmJhNzMgbGVnYWN5LXRydW5rCis2MDE5MSBmZmFjYjQ0NjczZWFiNzZkOTNhOWIzMmU4ZDRhYzI4NjRlZWIyMDE2IHJlbGVhc2UyNS1tYWludAorNjAxOTMgMTJiNjkxMDExNWUwZmYyODc0ZTlkOTAwYjc0NzYyNTZhZmZjNGUzZiBsZWdhY3ktdHJ1bmsKKzYwMTk0IDlkOGM4Nzc4ODljM2FkMGI1ZmFkMzhmOGU0NjBhNjE2YjFkN2M2YjQgcmVsZWFzZTI1LW1haW50Cis2MDE5NSAwMGE2ODU5NmU1MDY1MGQ0MWQ4MzQzZTA3MmU5ZjcwNGUyZDJmZGQxIHRydW5rLW1hdGgKKzYwMTk2IGUwNTA0YTFjNWY5ZDcyZDcxNDRiMmI1N2Y0OTdkYjdhNTU2YWIyZGIgdHJ1bmstbWF0aAorNjAxOTcgZTQzYzJhYjZhNTdjNzY5NWU4OGE3NGI1OTU3MDUxNzFlYzFhMzBiMyB0cnVuay1tYXRoCis2MDE5OCAwOTE4MDYzODFjZjhkNmMxNTEyYmI4MDhhN2FkMDUwNDhmYWJjNjI2IGxlZ2FjeS10cnVuaworNjAxOTkgYzNjZTU2YzdlY2QxMWJhZDE1NWU3YzJhYTkzMDUzZjdmNDExZjljYSBsZWdhY3ktdHJ1bmsKKzYwMjAxIDdjYTA3ZmUwMjk1OGQxMzhiNTczMTAzN2ZiYTc5YjkwYjMxOTI5NjAgbGVnYWN5LXRydW5rCis2MDIwMiBiYjdlZTNkODljMmY2MDc2ODM5MDRhNTUzZTNkOWNiZDhjYmI1ZjhmIGxlZ2FjeS10cnVuaworNjAyMDMgNTZmMGZiYWViNjdmZGZjOGU0YjY3MGExN2MxNGYxYjhjMDE0ZmJiYSBsZWdhY3ktdHJ1bmsKKzYwMjA0IDg2N2MwYWFkNzljMTZhNzFlZWIxNTcyMmY3MGFkNTZhMjQ3NmE0MDkgbGVnYWN5LXRydW5rCis2MDIwNSBjM2VkNmRhN2ExNDY4NDZjMDNjY2E1ZjU4NzMzNDk1ZmI4MWRhYWU1IGxlZ2FjeS10cnVuaworNjAyMDYgNTI5OGFiYmRkOTFjY2VjNjgzNjdjNjZiNGFmZTdiYzA4MDQ4MDQ5NCBweTNrCis2MDIwNyA2YmQ0ODQ5YjU0NThkZTU1MDBkMzA1MmFkNGJmOWY0ZjAzODEyMjY2IGxlZ2FjeS10cnVuaworNjAyMDggZGY4MGM2YjYwNmE0ODZjZTUwZDk4NmY2Njc0YTcxN2JhOGQ4ODJkOSBsZWdhY3ktdHJ1bmsKKzYwMjA5IGQ2MmMxMjZmZTU2YTJkNjQzMTdiNjc1MzA5ZjJkM2FjZTcwOGYyZWUgcmVsZWFzZTI1LW1haW50Cis2MDIxMCBmZWZhYTBlNjZmZGQwZTM1MTIxM2ZiYWIwOTI5MTQxZWU4YjE4OGQ3IHB5M2sKKzYwMjExIGViNTkxMDA5MmY1OWJiYjc1ZGI2ZjM4MTE1NDExY2JhZjNjYjhlYjEgdHJ1bmstbWF0aAorNjAyMTIgYzRiOThiYzEwYmU3ZTExNjBlNTFiOTY2ZGM5OWY4ZTBlNjFlMjZjNSB0cnVuay1tYXRoCis2MDIxMyAyZTE1MTM3Njk0MWY4YjViYjY5NjViYmI4NzQ1ZGY5NjhjNzZlNmU2IGxlZ2FjeS10cnVuaworNjAyMTQgZGZkMjE3OTNhNWI1NzUxMTY5ZWZlODZjMjBkYmU5Y2E4Y2UyMTZhOSBsZWdhY3ktdHJ1bmsKKzYwMjE1IGRmYjZmMzY3YTQwNmJiYWU5ZTRlOGY2NjY5NDMwNjA2YmUwYjU0YzQgcmVsZWFzZTI1LW1haW50Cis2MDIxNiA5YTEyMTFjNzdlMDI4YjNhYmNiMzgzMGE4YmQyMmQ1ZmJkMjBiZTg1IGxlZ2FjeS10cnVuaworNjAyMTcgNjk1ODJiYjExMTRjMzZiZGZlNDM0MzIxNjczNzFmY2NjNjM0ODM2MyB0cnVuay1tYXRoCis2MDIxOCBhNDAyMjlhZGZhMmNjZDhkNTMxNTk3Yjg4OWQ4ZGIxNjBhZmY3YjVmIHRydW5rLW1hdGgKKzYwMjE5IGIyODU0ZTk3NGNhOTY3MGY2MGJjZGExZGEwYThmNmI2YTFkMDIzMzggdHJ1bmstbWF0aAorNjAyMjAgYmNjYzc2ODJjNmQ0YmE0YTUyZDJkNjRkZmE5MGRkMjdmZjE3YmJhYyBweTNrCis2MDIyMSAwMDU5MjFmY2ZmNDNhZGJjODkzYmNlNzc3NzVmNmNiMjVkY2RkZDE3IGxlZ2FjeS10cnVuaworNjAyMjIgMTQ4Yzg3YTY2N2MyMDFkMDZmMWI3OTIyMmYwNjE2MTdkNTlkMWE2ZiByZWxlYXNlMjUtbWFpbnQKKzYwMjIzIGZkZDc0YmRlZWUxNWJkNDdjMzc3OWJjODU5NWNkNGM5ZWZjNTc2ZDQgcmVsZWFzZTI1LW1haW50Cis2MDIyNCA0YzgzMDhhYzIwY2RkOWRkYzMxYWZiMWRkOWJlMjczMmY2MGNiOGQ3IGxlZ2FjeS10cnVuaworNjAyMjUgYjkzNGQyZWU2M2Y2MzliZGM1YmNiOWU2MTYyZTY2ZmU3OWU5Y2MwYyBsZWdhY3ktdHJ1bmsKKzYwMjI2IDczMzMzNWIyMmY4ZmQ3OGEzMGZhMjRiNTM3OGM5NjZkZDIzMDdkYmMgbGVnYWN5LXRydW5rCis2MDIyNyBkOWE2MDc1MjU1OGVmN2Q4NGQyOTI0MGUxMjBlOTkxMTQzOTU0Njc3IGxlZ2FjeS10cnVuaworNjAyMjggOTVhNDg3MzUxNzQwODBhZTU3ODIyN2E1ZjcwMDdlNDZhOGE2MDlmZCBsZWdhY3ktdHJ1bmsKKzYwMjI5IGNkYzRhZWNlZGQ0Yzg1Y2VmNjg0ZTAxZTI4MWRlYjNhZTA0Y2ZmZDUgbGVnYWN5LXRydW5rCis2MDIzMCBjYzczYThkMTkzOGI0MmVjNGI5ZmU3MWRkMmRkMGE1OGY5YjMyMjBkIGxlZ2FjeS10cnVuaworNjAyMzEgMDEyZjUxNmQ0ZDIyZjM4ZWJlMDI5ZTM5ZWUyMTYwNTE4ZTg2NmQxZCBsZWdhY3ktdHJ1bmsKKzYwMjMyIGZlZDhjMzZkODcxNTBjMzcwMTJkM2NlMzAyNDI1MGNjZjlhYTlmMmMgbGVnYWN5LXRydW5rCis2MDIzMyAyMmE5ZDk3NTdhMTY5N2I3OTIzY2UzNzk4NTNhMTgwOTQzMTg5MjU5IGxlZ2FjeS10cnVuaworNjAyMzQgMDYzZWQzNzdmZDNkNjJmNGYxMzU3MTQwYWMwMDYxNDNhZTc1ZGZiNiBsZWdhY3ktdHJ1bmsKKzYwMjM1IGMwZjA0ODM1NmMzNmM4OTAyZTFhMjg2MmZkNTU2MzljYzQ4ZDRiNDAgcHkzaworNjAyMzYgZTIyYTkyZWVjNjYyMDA2Nzc1Y2JjZjlhY2U2OTIwZGY4NTQ4MjMzYiBweTNrCis2MDIzNyBmM2E5YWQ0NDhjY2FkMTllYjM3MjVmMGQ5MmEyNzQ0MTVmNTZkMzU2IGxlZ2FjeS10cnVuaworNjAyMzggNDM3MTcyMDkzYTIzYTI0MjEwNmEzMDhhYjNhYWFmZDNkZDU3ZGI4NSBsZWdhY3ktdHJ1bmsKKzYwMjM5IGNiYTMwODRiMjdlNzI2OTA2NDk0M2M3YWQyYzk3N2NjNDVlZTFiOGEgbGVnYWN5LXRydW5rCis2MDI0MCA5OTlhNWVlOWNkMmMzYTFmNzUxMDE1OWY1NDlmZTJjYjg2ZTc4YzFlIGxlZ2FjeS10cnVuaworNjAyNDEgOTQ4YmJhMGUyNDdiODk1OTI5YWMyY2RhNWIzZGMzYjJhNDJiZTUzZCByZWxlYXNlMjUtbWFpbnQKKzYwMjQyIGQ4YWIzMjgyMGIxN2RiNWJhYzE2NjExZTY0YWRjYzdhNWViYjdiZDIgcmVsZWFzZTI1LW1haW50Cis2MDI0MyBmMmRhN2ZjZjNhMjQ0YTIwOTBkZmM5MzQ5OGFkYTM0ZGRkY2Y1ZDkyIGxlZ2FjeS10cnVuaworNjAyNDQgN2ZhM2FlOWJhMDMxZGFmNjg5YTI2MmE0NDkyMDVlMDk2MDE5YjUxNiB0cnVuay1tYXRoCis2MDI0NSBjMzNmMjc3OWE5Mzg2MDRjMjkxZmNjYzMxMDI0ZDIwYjIwYzU1MTJhIHB5M2sKKzYwMjQ2IGViYmI3YmIwMDMzYmMzNGM4N2QyNmMyN2E4NWYwYmY1ODhmNDI5MzQgbGVnYWN5LXRydW5rCis2MDI0NyBkYjYyNGIxYmEwNmRlOWI1Yzg5N2FmNTYyMDM0YjU0OThlNTY2MWNkIHJlbGVhc2UyNS1tYWludAorNjAyNDggMjlmZjkwNjZkZDBjODNkZGY0NTBiN2I0ZjA2MjZlMGFjZDc0ZGFmMSBsZWdhY3ktdHJ1bmsKKzYwMjQ5IDY4NWU5NmQyMDg4MWJhZDZkYjM0NGU1YTE0ZjAxNDcwNjZjZWE4ZTUgbGVnYWN5LXRydW5rCis2MDI1MCA4YmQ1ZjBkYjdmNWQxMDcwYTJkNGMwMDRjMDQ4YmQxNDYwNzdiZTk5IGxlZ2FjeS10cnVuaworNjAyNTEgYThiNzUwMjEwYjc5OTA5MWU4YjMyODAzMGI2OTE2YTZhMjRkMjg4NSByZWxlYXNlMjUtbWFpbnQKKzYwMjUyIDZlZjNiZTQ3YTQ0ZTdlNDZjMWZhMWYwY2YzMmM3ZjAxODNiMjcyZGMgbGVnYWN5LXRydW5rCis2MDI1MyBkMTZkZTYyNTJmN2ZhNDM4ZWY0ZjY0YWY3OGYzZGI1Zjg0NzFmMmJiIGxlZ2FjeS10cnVuaworNjAyNTQgZThlZmE2MmVlYzE1N2QwZjI1ZDg3ZmJiNTZlZGQxMzM2YmNiYWFmNiBsZWdhY3ktdHJ1bmsKKzYwMjU1IGE4Yzc0MTI1Mzc2ZDY1MTk0NDZmNTk0NzEyZWRhNDUxMzcwMTdlNTYgbGVnYWN5LXRydW5rCis2MDI1NiBmNGE2YzMyMzUwMGJlZTA1NTIwNmRhMDEzZmRhNjUxZjJjZWUxZWQ4IGxlZ2FjeS10cnVuaworNjAyNjEgYTZmMGU0YmZjMmRkNzBmZWI0MmI4YzhiMjVmMDFhMDg3OWQ1OTIzMyBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI2MiA3ZTNhZmU5MDY0NDk1YjJiMGZlYjhhYTVlNGU1YTdjZjIzMmYwMmMxIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjYzIDNmNjFiNjY0M2I3ZWVhMWRkYTU3YTc3NzUzN2QzNWE2M2YxYWYyNmYgbGVnYWN5LXRydW5rCis2MDI2NCA3NTdhN2YzMWU0NjA5MmMwOGM0NmRkZDg3MDQyNjhmMDc0ZTJiZWRmIGxlZ2FjeS10cnVuaworNjAyNjUgNjljNTcwM2QyMGZiNDEwOTM0YTFlMzBkOWNiNjNmZWJjM2RhNjAyNSBsZWdhY3ktdHJ1bmsKKzYwMjY2IGViZGJlOGRmNjJiMDM5ODUzNGU5MzU1MWNiNTg3MTBhZjY3ZTU3YWUgbGVnYWN5LXRydW5rCis2MDI2NyA0MjY4Yjc3ZjhlNTY3ZDBjMDM2YjMzNTg1MGY0NDAxMTg0NjQ2ZmJmIHB5M2sKKzYwMjY4IDc0MmEyNjRjY2U0ZmFiMzc4MmY3MTEzODk4OTcwNGRiODc3ZmRlMDkgcmVsZWFzZTI1LW1haW50Cis2MDI2OSBjZTE1OWQwMWVlMzIyYTc3MWFjNzM1NmZjMTMxMGUwYmQ0NzQ0YjJjIGxlZ2FjeS10cnVuaworNjAyNzAgNmRhMGVlYTM2NzgzYTkzMDg5MWUzYmFjNzhiMTQ0ZWZkNDQ0YjlmZSBsZWdhY3ktdHJ1bmsKKzYwMjcxIDNiZDE5YzhhZjJiMTFkMWYxM2NkMTA1MDUzZjIwZGJmNmViNDI4MWMgbGVnYWN5LXRydW5rCis2MDI3MiBmYWU1NDU5MWMwMzU2NTg2MTE3NTY2ZmMyNjYxNGU3MmU2MmVhNTVlIGxlZ2FjeS10cnVuaworNjAyNzMgODQ0MjAzMjA5ZmIwNmVjYmU4NTM0YWU1OWFjMmFjMWI4MTU0MGNkZCBsZWdhY3ktdHJ1bmsKKzYwMjc0IDU0NTU4ZTAyOWMyZGE0MjBjNWNhNmYyZDFjZmJjZDljZGMwMjEzZTIgbGVnYWN5LXRydW5rCis2MDI3NSA5MzRhNTlkNTI1NDMxNGQzNzNmZGNjM2NhMjg5YzY3YjdlZjE4NjExIHJlbGVhc2UyNS1tYWludAorNjAyNzYgOTk3MmNjY2Y2YTMzZjQ0OWE1OTg5MjVkNzc4MzM3YjcxMjVhMzg0YiBsZWdhY3ktdHJ1bmsKKzYwMjc3IDEyMDk5MTQzNzI0ZjM0Y2NjZDlhNjJhZjBjZjhhMjE1YjFkZmIxZjQgbGVnYWN5LXRydW5rCis2MDI3OCAwOGViMWM0MTExMTM5MWRiYjFjZGYxZjYzZTNiZjc3ZjFjOGExNThhIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjc5IDUzZTdiY2ZiNTRhNDVmNWZkMWNiMTZlMjUzYWY0MzVjMjdiZWJhMzIgcHkzaworNjAyODAgYWE4Mzg5NThlNTRhYjEzODhlNGQ5Y2Q4NzM5OTY3NDg1MjNjZDE0YSBweTNrCis2MDI4MSA2NTQ3YmUxMWY0NDM4NWZjODBmMzBmOWYzMTdjMmM2Njc0NGU0NTc4IHB5M2sKKzYwMjgyIDhiY2E4ZWIzNmUzN2Y1MTg5ZDA5NTM3MWJlN2VhZmRkOTMxMmYxYTggcHkzaworNjAyODMgYmJjNzE5YThiNThiZjZkOWM0YjdhMWZlMzNkY2EwNTgwY2U0Y2MwOSBsZWdhY3ktdHJ1bmsKKzYwMjg0IDA1ZjAxZGQ3NThhMWJkZmZkOWZjMzA3YTg5YzQ2NDllYjU5YjYzNzIgcHkzaworNjAyODUgM2E0NDJhMDA5YTgzZTU4Njg2OGQ0NmEwYjljMDkwZTkzZmMzOTc3OCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI4NiA4ZTQzNWJkZDRiYzg5NjZhYTM5YWVlZDE5YTA2NzRiNjVlMDA3ODM5IGxlZ2FjeS10cnVuaworNjAyODcgMWJlOTNkZDE3OWRmN2E5MDJjNDliNDZjNDM4YTkxNjQ0ZTU4NDU1MiBsZWdhY3ktdHJ1bmsKKzYwMjg4IGRjY2VhZWZhNjdmZDhlNTgyZTVjZTE0ZTk2YWRkNDEwNWVlMDVkMGUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyODkgMjdkMjI3YTg3YTczN2JiZDExMmY1ZWY5OGYxYWY0M2MxNThhYTBlYiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MCBlZjQyYmQ3ZmNiYzgzZTM5MDJkODNhMWQwZDAwZTRiY2NlYzc1MjE4IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjkxIGRkYjFlNDk5YTAxZjgxNjNkZTEzM2FlZjk3NzI2Yjk4OGUwYzgyYmEgbGVnYWN5LXRydW5rCis2MDI5MiAzYzU3YTUxZjczOTRmODc1MzI4ZDM5NzBlMDkzNDk5MzY3MTVlMmI4IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjkzIGQ4ZTg4MzU4ZjZjMjQwODI4Yjk2Y2M2YzMyNTEzODYxNjZiMGY2OWUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTQgNDI0NDlmNjgyODg1YmEwNmVmN2Y1YTBmZDNjY2JkODY5NWQ0ZDgyNyByZWxlYXNlMjUtbWFpbnQKKzYwMjk1IDU5NTBkOGRlODEzNGI1NDllZjgyYWE2OTExZTMwZjc5ZGMzOWRkMGMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTYgYjU0NzQ2ZTJhODgwYmQzNThhYmRkNDA5NDVmNDVmNzQ5NjUzMzMwZiBsZWdhY3ktdHJ1bmsKKzYwMjk3IDk0NjdlYTIwMDQ2YzMxZDhjZDdiNzUwNWUxNDFhNDBhODQ1MDUwOTEgcmVsZWFzZTI1LW1haW50Cis2MDI5OCAxZjRiMWJhYmI5ZTA3YjFjM2RhNWZlN2IyMjY2YTI0YWYwODA2ODVlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk5IGVhMWQ0N2M3YTQ2NzQ3YjE1YTNjMDY3NTljYWVkNTdiNjIwOTFmZmYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAzMDAgODkxMDUwYTZhNWM5MDE3Mjc3NGZlYzNlM2JlY2ViYzk3YzkyN2U3NCByZWxlYXNlMjUtbWFpbnQKKzYwMzAxIGZiNjhlNDQ1ODdlYTI1OWQ1MjIwMjBhZWYxNGZjMzY5M2E4OGIxN2YgbGVnYWN5LXRydW5rCis2MDMwMiA5NmY1ZGNiNDgwYTYwMmY5ZGU1M2NkOWQyM2VlMzdmNjQ4MGU2MWU5IHB5M2sKKzYwMzAzIDg1MTAzMDE2MmQ3MjgzNGYwOGFlYjkzMGI1YmE0NGE4OTdlMjYzNGQgbGVnYWN5LXRydW5rCis2MDMwNSA2NjZjZWI2Nzk5YTc4MTU3MWU1ZGQzOTg5NjkyYzBkY2FmMmU0ZWI5IGxlZ2FjeS10cnVuaworNjAzMDYgNmFlMjIwMzBlMTUyNTc2ZWY2OGM2YTBhMmIxMzliNDNhZjk4NWIzYSBsZWdhY3ktdHJ1bmsKKzYwMzA3IGQzNDdjMWY5YzM4YWQ2NThiOWE3YWNjN2MyYzdkZjgwOTU3MDdjZDcgbGVnYWN5LXRydW5rCis2MDMwOCBjNmU1YzYwNGVhNjFkZWUyY2EyYTZlYWMyYjNjN2NjZTcyZTYyY2RhIGxlZ2FjeS10cnVuaworNjAzMDkgYmU0NGZhZWQ1NDJkN2ZkMDhmNjFlNDhlMmU0YTQzNTcyNWIzZTdiNSBsZWdhY3ktdHJ1bmsKKzYwMzEwIDBmMDkzZThiMmY1MzFiNGIxNGZlYzliNTRjNDFiOGNhOTI5MGM0ZWUgbGVnYWN5LXRydW5rCis2MDMxMSAzMDdkNDEwOWUyM2VhNWZkZWEwYWMyYjQzM2FkNTg5NGFjYzY2MjZkIGxlZ2FjeS10cnVuaworNjAzMTIgMzEyNGNjNWI5NzNmMTdjNDg5NzA3ZjkwODM5OTFmMWQ1Y2I2MjA4MyBsZWdhY3ktdHJ1bmsKKzYwMzEzIGI3MDQ4NTAxMTIxNDUzOGYzZThjMTM3MGE4NGE3YzhlZDZhNDJlNDAgcHkzaworNjAzMTQgMzdkNzYyOTc1YTk1M2RlMWNjNmU1OGUwZTcxOTFhODA4OWExMTZjMCBsZWdhY3ktdHJ1bmsKKzYwMzE1IDIyMWRlYzAzZTI2MTI1N2JiNDc2N2IzNzMzNmU5MjExYWNmOGFlYTEgcHkzaworNjAzMTYgYWVkYjdhYzI2MjdlZTQyNTFmM2ZkNmFiYjgxNTA2YzAwODQ4OWFkNyBsZWdhY3ktdHJ1bmsKKzYwMzE3IDQ3YmIzMWQwNjU3NzJkMTAwN2E1NGFiNWExZDZjY2VmZGQ2MWY2NjUgbGVnYWN5LXRydW5rCis2MDMxOCA2NGQxM2Y0NTZkMDZiYWNmM2U5MDM0MDllZTQyMTQ3ZGFhMjIyN2FlIHB5M2sKKzYwMzE5IDg0MzE2MTdmMjBlMmE5NWFiZDYxODk5M2Y4ZGYyNDVlMjg4Y2YzNGMgbGVnYWN5LXRydW5rCis2MDMyMCBhYWI1YzhlOGYzOGRjMDMzOWQyMzA4YWViNTVhYmZlMGUxNjg2OWJiIGxlZ2FjeS10cnVuaworNjAzMjEgYWFhNWE3OTRmODg3ZTIxZDFjZmI2NGFmNzlhMzlkNTIxNzQ1MjFkZSBsZWdhY3ktdHJ1bmsKKzYwMzIyIDVlMGI0NjBmMjk0YTVjN2NjMWUxYWRjODFhZDc0NzJlNDE1YTJjYTAgbGVnYWN5LXRydW5rCis2MDMyMyBhNzUwYTI2YjVmYWRhNjJlNmEwZWQ5OWE5NmJiZGUyMDQzZjkyMmUzIHJlbGVhc2UyNS1tYWludAorNjAzMjQgNTFiYjdiMWFlNzY1OTEwNTg4MzZmMTY4N2JiMDNmOWZlZGIwNDY5ZiBsZWdhY3ktdHJ1bmsKKzYwMzI1IGRmMjNkNTI0OTU1MGQ3Zjc4ODg3ZmViMDc2ZTYyNzVmMGY2ZGQ3YTkgbGVnYWN5LXRydW5rCis2MDMyNiA2OTliMzcxNzBjYWRjNmIwMTk0Y2ZhNGMzNjNmZjVmNTlkMTYwMGNiIGxlZ2FjeS10cnVuaworNjAzMjcgY2I1ODM5ZDEzMjI2MTZhMDE0OTc4ODM3OGEyZDg2ZTRmZmNjNTkyNyBsZWdhY3ktdHJ1bmsKKzYwMzI4IDhjYmNhOTFlMzE1NDk3MGJiNDc1NmQyOGYyNWFlZThkNDE5YTk2YmQgcHkzaworNjAzMjkgZmJiOWFlOWE1MTRmZWJhOTBjYWM3MjliYjNjZDk5MjdkNTRkMjMzMiBsZWdhY3ktdHJ1bmsKKzYwMzMwIDVkNzgyYzhkNDAxNjY4Y2I5M2Q2MTljNGQ4NDY5NzE2N2Q0NTAzMWEgbGVnYWN5LXRydW5rCis2MDMzMSBkY2EzZjY0NmU4YTFmYjU5ZmYyOGFjNjY3OGI0MTk0MmFmZWYwNGY5IGxlZ2FjeS10cnVuaworNjAzMzIgZjNiNTg0ODQzZjlmYmRjOWM1NGFiNTE0NTZlNmZjN2UwNzRkYTBmYyBweTNrCis2MDMzMyA5NjJjNDkxZTE3ZDZjYThjNjgwM2IwMmQwYTI3MWQwN2RlYWI5MjQwIHB5M2sKKzYwMzM0IDVmOTg0NDZlMGYxYmI3Yjc1NjI0YmM1NzAyOTVlNWJmMWZhNGRjMDAgbGVnYWN5LXRydW5rCis2MDMzNSA1MGYyZDdiZGFiYzlhNDZjNzA5YzExODZiMTFiY2NiMTM3ODM1NmM1IGxlZ2FjeS10cnVuaworNjAzMzYgOTA5MzkwOGEwY2Y1ZDRjMmNmNjdkNjNmOWEyNmE5OWE5ZDg1ODk5MiByZWxlYXNlMjUtbWFpbnQKKzYwMzM3IGUzMzYyNTg5NTU1MDI2MTdiNTgzMjljN2ZhMDcwYjRlNzc5MjE1ZDAgcmVsZWFzZTI1LW1haW50Cis2MDMzOCA1YjE3YjQ0YmUxYmY4NzhkNjkxZWVjZjlmMzJjOTZlOGU0MmJjZGI1IGxlZ2FjeS10cnVuaworNjAzMzkgNjM1YTc1NjM2MGYxOGM5YTExNWNjYmUyNTY0YTc2MzZkY2M2MTI0NCB0cnVuay1tYXRoCis2MDM0MCA3MmE2NzI3YmVkOWM5ZTE0ZjNlNTU0NjAzYWRhNzQyMjkwY2U4OGFlIHRydW5rLW1hdGgKKzYwMzQxIDZhZGJkNjJiOWFiZmEwZTMwYjU5N2Q3Y2UxMTBkOWUxMjQzYjZiZWEgdHJ1bmstbWF0aAorNjAzNDIgMmNhMmIwODQwYjM1ZDM4NDVkODBiZDc3ODYzNWEwNjVkMzY2YTY0OSBsZWdhY3ktdHJ1bmsKKzYwMzQzIDIwYmY5NDI4NWVlZmU4Njg2NWMxNDQ5MmZjMGRmZjA3N2MwZjM1MWUgcmVsZWFzZTI1LW1haW50Cis2MDM0NCA0ZGQwZmNmM2RhZjczZTI2ZjAzYzJiOGI3ZWQxMTg4ZTE2OTExNTgxIGxlZ2FjeS10cnVuaworNjAzNDUgZmY1OGIzMGE4ZDUyODcxZDZjZjA1NDJjZjdlYTFhNzA0ZDhhMTRlYiBsZWdhY3ktdHJ1bmsKKzYwMzQ2IDZiYmY2ZmRjMTUyYjllNDJlZGJmMTFhNjA1YzIxNjIzMTk5ODFlNjIgbGVnYWN5LXRydW5rCis2MDM0NyA0NjdjNzFmMzY1ZmRlYjRmNjk4ZWM0NzIxMzRhYjg0YjcxOTg0ZmNkIGxlZ2FjeS10cnVuaworNjAzNDggZjAxODEzYjMzY2E0YmNkZmI0Y2UxMzU1ZTdkM2IxZWEwOTg4ZWEwOCBsZWdhY3ktdHJ1bmsKKzYwMzQ5IDYyZjBiYTc0NTM1N2YwNTliZWM2ZGRkM2E0MjU3YjI4MjhmYWM3Y2IgbGVnYWN5LXRydW5rCis2MDM1MCA3YzAyMTgyZTI5NzlhMjJlZTc1OGNhMDJmMjVmODgyYjJiODQwZDQ4IHB5M2sKKzYwMzUxIDliNzRjOWM4YjkyYzc5ZmJmOTA0ZjQ2NzZlNzNjZGE4ZGMzNmYwZDcgcHkzaworNjAzNTIgZjVlNTJhNTNmY2QxNDgzNGY2MzcyYjZjZTFiNmVhZDk4OTEzYjIwOCBweTNrCis2MDM1MyBlZTI0M2NhNjVmNWY1NDY4YmQwOTYzOWM4MDcwNDJmZjNlY2RmNjJlIHB5M2sKKzYwMzU0IGYxNWQzYmY0Y2E1NmExMmQxYjA2YzYyNjFiNTMwZmYxODA0NTdiNGMgcHkzaworNjAzNTUgZTIyNGFkNGI4YjhjYWUzMTZmZGEwNGEyNTk3NTNhZWEyZTZhMDU1NiBsZWdhY3ktdHJ1bmsKKzYwMzU2IDcwN2RkOWYzODRmMzg5NjI0YjIwZjIxMGJhYjliOWI0NzUxMDY4N2MgbGVnYWN5LXRydW5rCis2MDM1NyBmY2ZhMTMxOTllY2JkYTI5ZWQ5NTkxZDUyYWQ3NTg4YzhiYjNhMTc2IGxlZ2FjeS10cnVuaworNjAzNTggMWQ3MWJmNDc1YTg1ZjNhYzY2N2VmN2UzMDUzZGViYWU1MTFkODViZCBsZWdhY3ktdHJ1bmsKKzYwMzU5IDJlNGRkMzliZjY5MDU2MzI2OWY1MTVlNzc0MDYxNDVlMjRmOWE5YzAgbGVnYWN5LXRydW5rCis2MDM2MCA2MDRhYWM0MzM3YTVjNWIxMzRhYTk1YzUxYzZiYmIzNzM0N2U1MTRhIGxlZ2FjeS10cnVuaworNjAzNjEgYzMxNWI2NzI0NWY3ZDU0YjAzMGE1M2UyNGQwNTA0ZDQ3ZGRjY2Y0ZCBsZWdhY3ktdHJ1bmsKKzYwMzYyIGEzZDU3MDBiMWQ1YTNlMDYwNzA3N2I1Y2ZlNDE2NTIyYmUzZjY0YjIgbGVnYWN5LXRydW5rCis2MDM2MyAxZmYyYmI1MTg3ZGZmOTJhNTQyM2ZmYzkxM2NiOWEyZDU3NTkyNDE2IGxlZ2FjeS10cnVuaworNjAzNjQgODVjY2M3YzE1NDI1ZGU4Mjc4YWQ0MzMyOWYyZjJiZjQwOTkxNDkwNyBsZWdhY3ktdHJ1bmsKKzYwMzY1IGIwNjRlMjVmYjg0MjM0MTlmNzc5OWUzZWNhZTM1ZDk1NGY4YjYwY2MgbGVnYWN5LXRydW5rCis2MDM2NiA1NjFjMDY1ZTNmMmQ1ZmU4ZWZhM2M1NjQ5MmUzNWFmMWNlZTU3ZjhlIHB5M2sKKzYwMzY3IDBhNzBmNWIzMGI4YWMxODdhNDc5Nzk0NjVmZTQyZjQyYmExMzJlODAgbGVnYWN5LXRydW5rCis2MDM2OCAyMjk0NWRiY2QwMzAxZjg2NzdiZjQwZTEyODkxOTczNmIwZjExNmMzIHRydW5rLW1hdGgKKzYwMzY5IDQ3MjVjODRiMDQyMjc5Yjk1NjkyZDMyZDE2MTZjZWZmMjBmNWI5YmQgcHkzaworNjAzNzAgZjdkMjM2MGU5NTNkZTdjZTlkNzM5Y2U4MjZjN2ZiYzM0OTAxYmZmOSBsZWdhY3ktdHJ1bmsKKzYwMzcxIGFmYTU5OTMyMjRlNTU2MzA2NGVhYWNjMTNmMDJmOWI2OGViNzY2MmYgcmVsZWFzZTI1LW1haW50Cis2MDM3MiBiZTMxNDBlYzY3YzhmNjMwOGY0ODdhMGIzZTZjYjM0ZjU4NjE5YTQ1IGxlZ2FjeS10cnVuaworNjAzNzMgNzlmNDM5ZDk5ZjhjM2I4YjE5MDY3NTdlZGJjMzEzZDUzZWM1ZDQ5ZCByZWxlYXNlMjUtbWFpbnQKKzYwMzc1IDY5NWU1YmYzYWY5YzA1NjkyMTRmY2NkMzdhZTI1ZjY3MDBkZmNiZWYgbGVnYWN5LXRydW5rCis2MDM3NiA3MjdjYzgxMGQ2OTBiY2U4ODQ2NjQzNzIxZDZjODdmMTExZWQ1YTYxIHB5M2sKKzYwMzc3IGYwNjJkZGE1NDg5NGYyNDBmOThhMDQ4NTRmMDc2MDM0ZDMyNjRkZTEgbGVnYWN5LXRydW5rCis2MDM3OCBlYTNmZTMwMmQzOTIwNjQwZmM2Mjg4NzUwNmI1YTlhNjNmYWYxZGQ0IGxlZ2FjeS10cnVuaworNjAzNzkgZWJmYmFhMTA1MWUyZDBkNzhkNmNkZDIxOWI1NTkwMTE1NWI3OGI4OSBweTNrCis2MDM4MCA1MjMyZjA3ZDljOGUzZGIzODkyNDg0YjI3ZjFmZWNlMjdlN2FiNGFiIHJlbGVhc2UyNS1tYWludAorNjAzODEgMWM5YWMwMGM0NzU4Nzk2MTViYzcxYzFlM2MwMTdjNzkzNzg3NmVkMiBsZWdhY3ktdHJ1bmsKKzYwMzgyIDQzY2FmODE4Y2ZmMDcyOTFjMjg1MzdmNmQ0MWM3ZGZlYWY0OTdiZTggdHJ1bmstbWF0aAorNjAzODMgZWYyZDNiZjgzODNkY2JiMjU2ZTdhN2E4NmE0NzI3NzYwZDI0ZjI1MyBweTNrCis2MDM4NCBmMDdlNmYzMjk3NTUzZTdjNTg0YTgzYzdmZTc0MDVmZDU1ODEzOTVlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzg1IGU2MTRkMjQ4YmRkMTAxNTdiZmY3N2U0YjUwZGM1Y2QzODk1NjViN2UgcHkzay1jdHlwZXMtcGVwMzExOAorNjAzODcgNTgzYWNlMTJjNWNmMTMxYzBlNDY5YWFmZjFmNDFmMzdhYzlmY2E5NSByZWxlYXNlMjUtbWFpbnQKKzYwMzg4IDE1ZjViNzMxZTAwYjM4MTVhMzZhMmJiZDgxZWQ2ZGY1MzY0MGVkZjAgbGVnYWN5LXRydW5rCis2MDM5MCBhMjhkMGIxNGI3N2RlZWY0NWMzYTdiOGEwZjU0ZmRmYzNkYjA5ZWIxIHB5M2sKKzYwMzkxIDJjM2Q0OTdlYmZkNmRiYWFmYzI3ODA2NGFkYTNmNjZjZjViOGZiNTYgdHJ1bmstbWF0aAorNjAzOTIgOTRmMThjMmRlYWE1ZGFhYmUyYjIyMWRhZjVmZTI3NmI1OGIzNjliMSB0cnVuay1tYXRoCis2MDM5MyAwZGEyZWY5ZmVkYzAzMmYwOTdiYWU2YWYwNDVkMDZmYjg3MTJiY2MwIHRydW5rLW1hdGgKKzYwMzk0IDZhYzdkMmU5YTNiYzQwMjUwNzEyODhiMmY2NzJkY2JjMDYwNjNlNWUgcHkzaworNjAzOTYgYWI2NzI2MDczN2IxYzg2ZTEzMWRhZTUzYTZlNzBkNjcyN2U5NGYzYiBweTNrCis2MDM5NyAxNWU4YjM0MjU0ZWNmYjVmNzg4NTFjM2Q2ZDQzZDRiN2Y1MDFjYTIyIGxlZ2FjeS10cnVuaworNjAzOTggMWU1ODNlYjcxYjNmYjM2MTk3OTg5OGJjNjc4OTQwYjUyYTFlY2YwNCBsZWdhY3ktdHJ1bmsKKzYwMzk5IDc3ZDA1MmNlMWY0YzdjNWQzNTA0YzdjMTk5ZTRiZWZlNWQxMmIyZmYgbGVnYWN5LXRydW5rCis2MDQwMCA3NTY0MTNjMGZmMWQ5YWE4N2U0NTExOTFjYTYzYzFkZTgzYmFiNWE3IGxlZ2FjeS10cnVuaworNjA0MDEgN2E2YTgwZTg0YThhMDA2ZTQ2OTdmM2UyMzAyODQ1NjgxZTg1NjE5NiBsZWdhY3ktdHJ1bmsKKzYwNDAyIGRjNDZhNjdhN2I3YjcwZDAxMTdiM2Y1M2YyOTEyMzkzYjA2ZjRjY2QgdHJ1bmstbWF0aAorNjA0MDMgYmQyNDZmMzM2ODdmNzU3NWM0OWQ2ZTAzM2RkMTdjMjIwYWJhOGUxYyBsZWdhY3ktdHJ1bmsKKzYwNDA0IDU0NjczZjcyNDEwNmViMWZlNmUxZmQ4MzA4NDUxY2QyZjIwOTFmMTQgdHJ1bmstbWF0aAorNjA0MDUgZWZlYTQyMTdhOTU0MzNjZTMwY2RhM2RjNGE4MmExNTU0OTRjNjExMCBsZWdhY3ktdHJ1bmsKKzYwNDA2IDQxOGFkMTU5ZmU4NDNlZTQ3NzEwY2UxNTY1MDUzNGE0ZDQ3ZjkyMmMgbGVnYWN5LXRydW5rCis2MDQwNyBjYzIyZDNmMTJiMTM3ZjcyODNmOWRmNzBjOWM1NzI1MjgwYTQ1NDAyIGxlZ2FjeS10cnVuaworNjA0MDggYzNiMzhhODU5ODlmYzc2NTIzMjJmMTQzZWJlMzkwMGFjNmUzN2IxMiBweTNrCis2MDQwOSA4NjA5NGM0NjdlYWZiMTQ4MGNlYTMxOGZhMDdmYmFmODFiMjVmYzZmIHRydW5rLW1hdGgKKzYwNDE0IGU5ZDNkNTYxZGJkMWFmMjk5ZWNkNTBiZTkyZGU3ZmU1ZmMxMGIyYmIgdHJ1bmstbWF0aAorNjA0MTUgM2Y5ZmUyNzE1NTNmMTZkNjExNmM5ZTNiYTMxODBlNjM2YWE0NTE0YiB0cnVuay1tYXRoCis2MDQxNiAzMDNjZWYwNjNjMzUyMGVhNmQ1NWY0ZTI0ZWMwNWM1NjNlMWJkOTJjIHRydW5rLW1hdGgKKzYwNDE3IGI5YmRjNmE5OGJlYTIyODhiNGQzYWJjMDNhODMzNzdkNDQyMmI2OWMgdHJ1bmstbWF0aAorNjA0MTggZWRkMzY3YzIyYzhmY2M0NDkzODY2MTI4YWNmODQxNjU3YjdiMzA1NiB0cnVuay1tYXRoCis2MDQxOSAzZWJhYWUzNDFjMWIxMjNlNWQ5ZTU0M2Q1NjlmMWQ0ZWFhMTQwNGE1IHRydW5rLW1hdGgKKzYwNDIwIDNiNGYwYzVlY2Y1M2ZkNjJjODIxNzViZjg5MzZhYWNkMTQ3MTYxOGUgdHJ1bmstbWF0aAorNjA0MjEgMjlkNjE1ZGQxZDk3MDU1ZjlkYTUyY2U0MDUwZWQ0ZWU3NGJjMTExYiB0cnVuay1tYXRoCis2MDQyMiBiMzcyYzM1NGEyOGMxNzQ3NTJlMDYxNGIwYWMzMjgyYmY1Y2E0MGM0IHRydW5rLW1hdGgKKzYwNDIzIDUwOWNkZjZkNjQ3OTVlZGZkOTQ5NTA0NGM2ZDUxZTI2M2Y3ZDRlZDMgdHJ1bmstbWF0aAorNjA0MjQgOTI3NzNkN2U2NTNlNGMxZmU0OTc4ODM4ZTEzYjVmNGYwMTEzNjMxYiB0cnVuay1tYXRoCis2MDQyNSBlNzkxYmIwYWRjZGU4MjkwNzE3YjRhZDczMzg1OTMwZmU3NTZhZGYyIGxlZ2FjeS10cnVuaworNjA0MjcgN2FjN2UwODlhMDZmYzlhZDRjZTFhY2FjMTI2MzdlNThiZWUwNzhiMCB0cnVuay1tYXRoCis2MDQyOCA3MTY2ZWQ0OThjNmQzY2JkZTVkMTg1MWNiY2U5ZmUzMmZmMjIzMzZkIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwNDI5IGNkNjViYTIzYTUwZTc2MTBlNDAxMDNmMzQzNWU1ZGExNzZiYjBjZGQgdHJ1bmstbWF0aAorNjA0MzEgOTZkMDI0OTE2NGZjNjUyNmZjZmMyYjdkMzAwYTRlYTkwYWFmNmVhNiBsZWdhY3ktdHJ1bmsKKzYwNDMyIGI3YWE4YmRlN2JjZjcwZjQ4Yzg4ZGZhMDQ2MjZjZWE3NmI1NWUwMTcgbGVnYWN5LXRydW5rCis2MDQzMyAyNTBmMjliYWI2MWIxMmMzNjZhYjMzMDZmNTJiZTQ5Y2ZkZmIzNTAxIGxlZ2FjeS10cnVuaworNjA0MzQgOTBlODZlZTM2ODRiM2MxYjU4ZDZlM2VlYzAyYjAwYjliNmRjMTY3ZSBweTNrCis2MDQzNyBlOTc2NGE2OTU4MDk3YTA0ZDg5M2MyNGY1OWRmY2FmMGVlMGMxODMzIHB5M2sKKzYwNDM4IDYyOTA5ZDJlNTczYjk3NGY3MGQ5Njk4YWFhNmUxYTUyMzNmMTNhYWYgcHkzaworNjA0MzkgZTQzMjM4NzYwYzM4NzM5NmUwNzlkNmU3M2MwZTEyOWY2MTlkMDUzNyBweTNrCis2MDQ0MCAyNjI3ODc5NmQ0ZGExMzE5ZjM5MzgzNzAwZjU0N2NjZDY5OWE4ZGU3IGxlZ2FjeS10cnVuaworNjA0NDEgNTNiOTBmMzFlZmQ2ZTY2YTI4MGE2OTBlNjMwOGQ0ODRlZWIwODk2ZCBsZWdhY3ktdHJ1bmsKKzYwNDQyIDUxMGE0ODI4OWQxZDY4OGQ1MTgxY2JmZDgzZDRhOWViOGZiZDk1MzggcHkzaworNjA0NDMgYzhmY2E5YjVjZDNjMzBkY2NiNWQ0ZGQ3MmZmYWQ0MWUzNWYyOWE1ZiBweTNrCis2MDQ0NCA3NjM4ZDRhZTMxMGMyMWY5ODAwODk2MjAxNWU0NGRlMDQ4MDE4OTAzIHB5M2sKKzYwNDQ1IGJkOGQyMzY5ZjE0MTFiMzUwNmI2NGVjOGUyNTJlMGUxZjgwNzMyNzQgdHJ1bmstbWF0aAorNjA0NDYgNWFiMjM3Yzk2Njk1ZGY3YTBiN2JlOGU2NzdmMzRmMGZlMzMwNjQ2MCB0cnVuay1tYXRoCis2MDQ0NyBhZmQwY2IyNWM3M2UyMTMxODA3YjAxMzAxZDBjNjVlZDM3ZDBlY2FmIHB5M2sKKzYwNDQ4IDk2MzlhNzNhZmE0Nzc2MTRjMGVkMzZkMmE4OTg5Yzc0NWE1MzllZGMgbGVnYWN5LXRydW5rCis2MDQ1MCBjMDVlZTc3YjM5ZjJkYzEwNmRkN2FhZTkxYjkxMjllM2E4MjBmODY0IGxlZ2FjeS10cnVuaworNjA0NTMgYjllZTMxYTI2ZjM4NWQzY2ZhOTRjNWJmOTI0ZmM4NDZlMjUwYmY4OSBweTNrCis2MDQ2MyBiZTA2YjMzOTU3Njg0YzQ0YjA5NTVjZDRmOWQ2ZTdkODgyYzdiNDVmIGxlZ2FjeS10cnVuaworNjA0NjQgN2QwZGY1ZWMzZDJmNGJlN2ViMzY0YWZlM2JkOTUyZDE5MDEyNTA1ZCBsZWdhY3ktdHJ1bmsKKzYwNDY1IGU4NDc2YWVmODU3YzIxYzEwZTkxNTQzZTc5OTkwZDBhM2U2MjUzMjQgcmVsZWFzZTI1LW1haW50Cis2MDQ2NiA3MTk4MzYwM2VhOTk5OTA0MjcyNDUxYmEzMzAyNjE3YzI0YTZkMThjIHB5M2sKKzYwNDY3IDNmMjQ5NmRjOTFkYjNmNjc4Yzc4MjIxNzY3Nzg1YTM3Y2ZiYTlkZjUgcHkzaworNjA0NjggODkzMGZmMjMwZWU5ZTQ2M2NmNGY0ZDAxMGQ2NWYzZGQ3OGZmOWY4OCBweTNrCis2MDQ2OSBkZTdjMzA5N2IyYzEwNjUyZTE3YTg2YmZkYTJmODA0YTg0NWQwZDczIGxlZ2FjeS10cnVuaworNjA0NzAgZTc3YjgyYWVkMWE4MzEzMWZmNDM1MzkxNTAwNWY4YjUxMmUyMTk1MiBsZWdhY3ktdHJ1bmsKKzYwNDcxIDAzZTRhMzZhNTZiYmE0OTVlMTMxNWNmMmZlMGE5MGU3NjEyMmEwMDggbGVnYWN5LXRydW5rCis2MDQ3NiBmMzgwZDk5MTM5MGUwOWYyM2QxMjg0NzA5ZWUyYjQ5NjkxOGI5ZjdiIHB5M2sKKzYwNDc3IGYxODNmMTE4OTgyNDhlNzU0ZWZiYmU0MzkzMTIxMzAxNzAyYjIxNDQgcHkzaworNjA0NzkgZDYzNWYyOWU1NWY4Mjk0NzBmNWEyZGYxYTI4Y2U4OTUzYzY3ZWYxMCB0cnVuay1tYXRoCis2MDQ4MCBhNzdjOGRjYmNlZDkxMGZmZDNlMmY5M2QxMmI4MmMwYTVhYzc2ZjQ4IGxlZ2FjeS10cnVuaworNjA0ODEgM2FhNGI4ZGZiYzRhNGNiNTQyY2U5NGY4ZTQyMDZhODI4MGZlODcyOSBweTNrCis2MDQ4MiA4NjU5ZTUyNjE0ZGFkZDY5ZTExYmE2ZTM3MTVmNTdjY2M4OGRhNzNjIGxlZ2FjeS10cnVuaworNjA0ODMgM2YxNmFjOTE1MjE0ZWQzOWU1NmZlNzRiZmI3OWNlMjNkYzE2ODY0MyBsZWdhY3ktdHJ1bmsKKzYwNDg0IGYwZTZiYjliMjRmNjhiMWVmM2RjYmI0YWFmMzBlMjU4OWMzYTU5NDcgbGVnYWN5LXRydW5rCis2MDQ4NSBhNGI4NDI1N2M3Zjg1N2Y1Mjc2ZDVkNTAxNTY3Y2JkYjkyNmIzY2JlIHB5M2sKKzYwNDg2IDQ5MmIzMDJhZGVkNjg5NDg3MmZjM2FmMjVhZGZiOTY2NDUwYmQyMjMgbGVnYWN5LXRydW5rCis2MDQ4NyA2Nzg1MDlmOWEwM2Y3MmExZWViNDA0YjU1YmRiM2RmNzg5YWZjZTM5IGxlZ2FjeS10cnVuaworNjA0ODggMzE2NGI0YWUyN2MzYzFkZjI1MWFlYzcyYzQwMGI3MjEyMTdmYTFlMyBsZWdhY3ktdHJ1bmsKKzYwNDg5IGQ3NTQwMDMxYjk1OTIxNzM5NjFlZWI3OTk3MzZlYTZhYTUyOTcwOWQgcHkzaworNjA0OTEgYzY2ZGE1N2I5NDg4OTgwZTU0MDU1ZmE5NjFjMTM1ZDQzMGM2MWE3MyBweTNrCis2MDQ5MiAzODYwNGZhMmE0OGYxZmVlMTViOTdmZTQ3YjZmYWQyZTE3YmJjMDc4IHB5M2sKKzYwNDkzIGEyODFlMzMxOThjMGFlMzRkMWJiMTU1OGYzZTdlNmFkYjVjY2ZlZjAgbGVnYWN5LXRydW5rCis2MDQ5NSA3Y2I2ZTU2MTdkYTA5ZDg5ZjNlOWNmMzE4OGE1M2E3ODliOGI1MTNhIHB5M2sKKzYwNDk3IDk5ZWYyNDhmYjMxNTNmZDA5ODk1NjBhMDVjODU1MWNlMzIyMjk3NGEgbGVnYWN5LXRydW5rCis2MDQ5OCAyYjYzNjkwZDUxMjg1OTdjNzAxY2RkMzlmMmI2YjNiYmE1YTM3OGE3IHB5M2sKKzYwNTAwIDMzYmJkYzc2YWZiNjJlMTQ1ZWZkNjJhYWVjZTJkOTI1ZDZiYjBjZmQgbGVnYWN5LXRydW5rCis2MDUwNCAzOTc5YWUxZWVhMTdhNzE5ODA5NGI2OWUwZTlmMGQyYjI0ZGE1Zjk2IGxlZ2FjeS10cnVuaworNjA1MDcgNjQ5MmE3OGU5M2I0YzFjY2MxYjkzN2Y3Yzc3NjczOWQ4OWZmYWNiZSBsZWdhY3ktdHJ1bmsKKzYwNTA4IGZhYTg4ZmY0Y2NlNGQyNTlmYWIxMzc5Mjc5YjkxYjExZDY4ZjcxM2EgcHkzaworNjA1MTAgYmRiNzAyOTUyNDhiY2ZjMzVjNzgzM2MwNDAzYWVmMjhiODQ1YTEzMyBsZWdhY3ktdHJ1bmsKKzYwNTExIGJlZWE3M2NhMmI4OGU3ZDY4Y2FhZmQyMzQ3YmQ3YzczYmMyYTYwODYgbGVnYWN5LXRydW5rCis2MDUxMiA1Y2I4Mjg4MzYwZTczOGMzYjIxYTA2ODdjMmM5NDM2MTA2M2FmNzBjIGxlZ2FjeS10cnVuaworNjA1MTMgZDEyYzk3Y2M3NDY3MTNkNDdhMjY3MzJlNGVjNGI1NmEzZDAxMTI4ZiBsZWdhY3ktdHJ1bmsKKzYwNTE0IGY0YjQ5ZWZjZWRjMGVlMjllNGQ0ZmNlMjI2NTFiZjRlN2U5YWMwZDggbGVnYWN5LXRydW5rCis2MDUxNSBkZjVlNTJlMDUyNDZmY2EwZTk1M2Y0ODQxZTljZjE1ZGJlNWEwYzMxIGxlZ2FjeS10cnVuaworNjA1MTYgZDBiMzFmMjQ2OTRkYmU3MWI5YTczZmY0MjNiYmRmMjI5NWY3YmI5NiBsZWdhY3ktdHJ1bmsKKzYwNTE3IDBiNGU4YWZlZDY2MzEyNGQwNWI3N2IwZjZkM2FkN2U0MDQyNzgwODkgbGVnYWN5LXRydW5rCis2MDUxOCBmNWUxOGM5YmRlNzAxNzUyMzgwY2NkNjkyZDg3YzY3MmI1NzBiZWMzIGxlZ2FjeS10cnVuaworNjA1MTkgY2U5ODE2ZjUzNjkwOWI1OWRlYTY5OTdiNDQ1NTE2MmJkMDAxZGViZCBsZWdhY3ktdHJ1bmsKKzYwNTIwIDRjNTlhOGY3OWU0MjgxZWMyNTVlOTk0OWM4ZDY2ZmRiYjFkN2Y5YzMgbGVnYWN5LXRydW5rCis2MDUyMSBlMmE4YjY3NjVhYjNmYjBjOGM1YmM2ZGQxNGQ1ZDAxNmNjYTQzNTliIGxlZ2FjeS10cnVuaworNjA1MjIgZDU0ZDEzM2M2YThkYjdmNzZmNzgwOTA4NmNmMjdkNmZjNGU1MWFlNiBsZWdhY3ktdHJ1bmsKKzYwNTIzIDdlMmU2MDNmNGNiZWNlMDg1MjhmYTZiMDU1OTcwNjU0ZGIyYTllODUgcHkzaworNjA1MjQgYTNlNmY3NDUzM2Q2MGNkMGNiZjNiMTRkY2EwYjU0YzYwMjJmMmRmNCBweTNrCis2MDUyNSA2NDA5MTI0M2MwN2JjZWM5NTkyZDA0MjBkZWI5ZDEyNzJjNTY5OWZiIGxlZ2FjeS10cnVuaworNjA1MjYgYTgxZWY2M2ExMDA5YTI5OTRjY2JlMDFkMjdjYmFhNDA5MjYxYzJiNCBsZWdhY3ktdHJ1bmsKKzYwNTI3IGQ5ODBmMTc1Yzg4NjM0YmRhYjAwMDk1MzViNzgxY2VlNjdhMzFhNjAgbGVnYWN5LXRydW5rCis2MDUyOCA2ZDc1YmUyYzNkM2U0MTJiMzUzZjg2Njk3OTI3MDU1MDNmNDMwYzhmIGxlZ2FjeS10cnVuaworNjA1MjkgNjYwZDI5ODliMTYxY2Q1NDBhYzk5N2NmZjYzM2RjNGQ2Nzg2ODg4MiBsZWdhY3ktdHJ1bmsKKzYwNTMwIDA0NjUzZjkyNjY0ZjMxZDIxNjEyMmNmYWJkOTQxZjkyYTFkZTBiNmQgbGVnYWN5LXRydW5rCis2MDUzMSA2NWIxMjUyYzFiYzE5MGFhZjYwMmM3OTk2Zjk1NjBkZDcxNWM4MGJlIGxlZ2FjeS10cnVuaworNjA1MzMgZjAzYWY2MDEyMjViMWRlOWUwYWM5ZDJiNTMxZTYzZDZmMmI3NGU1YiBsZWdhY3ktdHJ1bmsKKzYwNTM0IGIyZGU5N2ViMWY2N2M3NDMwNTcyYmE5NjZmZDg1ZWVkNTQ2MTJiNDUgbGVnYWN5LXRydW5rCis2MDUzNSA5NWJiZjU2MTNiMThmNDlkZTUyYzQyMmI2OGQ2Y2NhZTJiMGVhYTZjIGxlZ2FjeS10cnVuaworNjA1MzYgYWVmZGNiNTI0MDZkZDcxZmViN2YxNDU1OTcwMmQ0N2JmOGM4NDgxZSBsZWdhY3ktdHJ1bmsKKzYwNTM3IDU5ZDg5ZDYxYzNhMGIzMGNlOTBlZWYzY2ZiODU1YTdjNTc0MTEwMjIgbGVnYWN5LXRydW5rCis2MDUzOCBjMmRjZjU0ZTkxZmQxODhlNjFlMDZlODdlYzFiOTY2MjQxNzI3Y2IyIGxlZ2FjeS10cnVuaworNjA1MzkgMjQ5Njk0MDVlMWFhZDdmNGRkMDgwYjU2OWMzODE5NThhNzgzYTBiNiBsZWdhY3ktdHJ1bmsKKzYwNTQwIGU1ZTAyODk4YjZjNDJjMTE3YWY2OGM4Nzg5NWMxNGFmNmMzZDRmNmQgbGVnYWN5LXRydW5rCis2MDU0MSAzOTQwOTFmZDFkNTMzNTgwNjE0NWJkYzdlM2FmZWUxNjViNTgyMjVkIGxlZ2FjeS10cnVuaworNjA1NDIgMjE1OTRjNWEwNjFhNTBlMDU4MDUyMmIzOGE5NGViZGFjMjc3YzlmOCBsZWdhY3ktdHJ1bmsKKzYwNTQzIGYyY2RlZDBjMWZkNzdhNmI0NWU5YmY2YzJmYjY0MTViMjYzMTMwZDEgcmVsZWFzZTI1LW1haW50Cis2MDU0NCAzYWM0OGNiMzQwMjczNGM2MjlmYWU3NzU2NTdhZWQ1MTljYWVjZGI4IGxlZ2FjeS10cnVuaworNjA1NDUgMjdjYTQ3MDBiYzZkZjBmZjc4YjQ1ODRiNWE2MjY5OGIyMTdkMTJiNiByZWxlYXNlMjUtbWFpbnQKKzYwNTQ2IDQwM2E3ZWU1YTUzZWNlYjZhMTU4ZGVjZmYxNTE0OWYwMjEzOTk2ODQgbGVnYWN5LXRydW5rCis2MDU0NyA2YzhjNmRlNDRmZjc1ODY3YzAyYjU4MjIzMTBhZmVlMWZmM2Q4ZGI0IHJlbGVhc2UyNS1tYWludAorNjA1NDggNmUxMzRhYTczODc5Njk1MjY5OGIwNzIzYTExMjM1OWQ5ZWM3NGFhNCByZWxlYXNlMjUtbWFpbnQKKzYwNTQ5IGI2NmFiZjBmZDU5MTI5NmU1NDY4Njg1N2Y3MmU5MjMwNzkwYzEwYTQgbGVnYWN5LXRydW5rCis2MDU1MCA1YmRjOGI1OTkyMjJiYTE0ZjdmYmFkYmRjZTM1NDc1YmU3MTI1NDg1IGxlZ2FjeS10cnVuaworNjA1NTEgNGFkMDk1NjU1NzlkN2JjZjcyMDlhZDZiY2NmYWU1ZWZlNmQ1YzFlZCBsZWdhY3ktdHJ1bmsKKzYwNTUyIGJkY2Y0MGQxYjM4ZWI0ZjQ3NzNmYzNmM2MzNDg2MjUzYTJjNjYyMzIgcHkzaworNjA1NTMgNWJjNTg3ZjkwMTY0YzViMDdhY2RkYmM2NjcxYzJjODg5MTRlZGRhNyBsZWdhY3ktdHJ1bmsKKzYwNTU0IGViOTdlODMwMmZhMzEwNmM0ODQzNmNjZTA0NWRhOTFkZThiNWQxNjEgcHkzaworNjA1NTUgNGFhNjM4MzEzMjk4MGIzZTQyYzFmZDAxYjg1YTg3ZGEzODNlZGNjOSBsZWdhY3ktdHJ1bmsKKzYwNTYwIDRmNmY0NGJjNTE5NTdlMzAyYTMyNGE0ZjM4NWE3MzlmMzQxZmZkMjIgbGVnYWN5LXRydW5rCis2MDU2MyA3NTAzOWQzMTE4YWVlYWQ2NWUzN2ExMjNkMjcyNWZjNTZmNWUyYzk0IGxlZ2FjeS10cnVuaworNjA1NjQgYTNmZTc0ODVmNWM1NTZiM2ZlZWM1ZWNiZmM4Yzk2M2RjMmYzMTg2OSBsZWdhY3ktdHJ1bmsKKzYwNTY1IDM4NTBkMTNiZjk2Yjc1MzliNWU4MjhhY2VhYmRkZjJlYzkyMWQ1NjggbGVnYWN5LXRydW5rCis2MDU2NiBmMDM5NTVmYWZmYjQ3NGI2MTBkYTFmNTVhNWJkYjdmYjRiODM3YTU0IGxlZ2FjeS10cnVuaworNjA1NjcgOGZkZDZkNjJlYTU1YWI3NGMyYmU5YTY3ZTljMDBiNTdkZTljMTYwZSBsZWdhY3ktdHJ1bmsKKzYwNTY4IGNjMzE5YTVmNTAzZTc0MDZlMWRkMDk4NTllNmQ4M2VhMGRjMDg5NjAgbGVnYWN5LXRydW5rCis2MDU2OSAzZDdiODRkYWEzNGE0ZDRjYmE1OWY0MmYxNzQzNWY0OTYzYTFmMjRhIHB5M2sKKzYwNTcwIDNiZTRmYWZkOWNjMGRmMzc3ZThlZjc5NmEyY2YwZGY3MjU0OTA2NTYgbGVnYWN5LXRydW5rCis2MDU3MSAxYmViN2QyOTNmNTUyYzgwY2I1NWNkMjdiNGJlMGE0MTc1ODlkMGMxIHB5M2sKKzYwNTcyIDM4ZGUwZTQxZDI1NGQ3NDY5NDBkOGJiZGQyMzk1ZDhiNTgzMGRkODIgcHkzaworNjA1NzMgZjY5ZGEzZjU3MjE3NjZlMWZiMWRmYTY3Mjk2NjhjNDVhYTZiZWEyYSBsZWdhY3ktdHJ1bmsKKzYwNTc0IDliNjdkMjU5NWEyMzFiNmY4OTJkNzU5NDljNjhlMzgxZDIwMWQ5NTcgcHkzaworNjA1NzUgNjQzYzEzOTdmOTU0MGYwMmVjOGJiNDIxZTJkYmQxNTJlMWY1NjU5YSBsZWdhY3ktdHJ1bmsKKzYwNTc2IDk2ODZjNGI0NjI0M2RhODVjMmU1M2EwN2Y2ZDdkZDZhNmM5YzZkYmMgcmVsZWFzZTI1LW1haW50Cis2MDU3NyBlNjExMzVmN2Y5YmJmYWI3YzViMTY2MDJiMWM2MDM0ODE2NmQ4NTRjIHB5M2sKKzYwNTc4IGNiMWU1YzM3ZDNkMDI0MGU4YzU5NzVmZWI2MmFhM2QwYTMzN2M4ZWYgcHkzaworNjA1NzkgODY2MDJiNjAzNDYyYzgxNmE4NjYyMmIzMWI0Y2RjNGE2MWRhMzgwNSByZWxlYXNlMjUtbWFpbnQKKzYwNTgwIDFmODdlYzk5MWU1OWRlYWY0NWFlNjE3NmI3NTMyMWRlNDhmMjAwNWMgcHkzaworNjA1ODEgZTg3YmQ4ZGRkMDFiMGEwOTExZTlkNjBkNmFmZDcwNjU1MWRhMmYyMSByZWxlYXNlMjUtbWFpbnQKKzYwNTgyIDBkZmFhOTJiZDUzNDhkYjQ4YzFlYTE2YjA2MTU1YTE4YmE2MTI1ZmEgcmVsZWFzZTI1LW1haW50Cis2MDU4MyBlNjA2OWIyNDAzMWVhZTRhMGU3YTU3ZmEwZGEwNTdiNTJlYTA5NTY0IHB5M2sKKzYwNTg0IDNmOGY4NjQ5M2RhYWU4Mjk3MGI0Yjk5ODY2NTg5NGI0Y2UwOWZmZTggbGVnYWN5LXRydW5rCis2MDU4NSBiZGY3NDg2ODkzYmFhYTJjNzFmNTk2NDdhOTJiY2I2MDY3OWQ1M2EzIHB5M2sKKzYwNTg2IDY0NjM0NzQ0NGZhYTUyY2MxMDVkYTI1NmE1YzhhNjY5ZGYwMTRjZTQgcHkzaworNjA1ODcgNWJkYTRmNzZhZDkyYzY3NTFhNDNhNDA0NTNiMTYxYTU5ZWM0Yzk0ZiBsZWdhY3ktdHJ1bmsKKzYwNTg4IDk0ZDk4MDk2NjA1NmZlM2VlOTA1OWVlNGQxNmUzYTZlN2Y2YzhhNWIgbGVnYWN5LXRydW5rCis2MDU4OSBmMmY5OTE2MzQ3ODE0ODRhNDNiM2IwZGE3MDZjZmNkYjlhOTkyYjlkIHJlbGVhc2UyNS1tYWludAorNjA1OTAgOGQ4OTAzN2Q1ZmMxYWMyMGExMTc1NmUwZDBjZTQyZmFlNTg0YTg1MiBsZWdhY3ktdHJ1bmsKKzYwNTkxIDA2MGYwMzlkMmZhYjU0NTc1OGMwYmNiZjk3ZDVhYTJhNGM5NzZjZDggcHkzaworNjA1OTIgY2ZhMjgwNDI0YjY1MGY4NzllZTMwODdkYzA3NWVlNzJjOGFiOGRkYiBsZWdhY3ktdHJ1bmsKKzYwNTkzIGIwMTEzNjYxMDJkYmFiNzc5ZDdiYzU3MjVjN2I5YmE5ZjA1OTRjY2QgbGVnYWN5LXRydW5rCis2MDU5NCA0ZDU4YzBmYTZlMzQzMjA3YjViMTg5MGJhNTBlNDFiOWNhZTQ5NWZiIHJlbGVhc2UyNS1tYWludAorNjA1OTUgZGFjNDIxN2U5OTY1YTBlYTllMjNjYTg2Njg5MDJjY2U3NjAwM2ViNiByZWxlYXNlMjUtbWFpbnQKKzYwNTk2IGQyYjQ5YTY4ZTZmN2JiMGVhZDI2YjJlZDA3MTE5Zjk5ODhlMTFjN2IgbGVnYWN5LXRydW5rCis2MDU5NyA1ZmU1NTdjNzYwYTIwMGQ2Nzg2ZjBiZGRjNzk3ZDJlM2JiYmUwOTBjIHB5M2sKKzYwNTk4IDY4NzQzN2Y3Yjc4NDkxNjkyZmFjZDcxMGNmMDBlNmUyNzM1MDI5MzUgcHkzaworNjA1OTkgMWMyYTI2Njg2ZTU0NDAxYmRmMWRjMTAzZWNjY2QzYTQ5ZmQ5Y2M3MSBsZWdhY3ktdHJ1bmsKKzYwNjAwIDgzYjVkNmIyYWE3MGYzY2IzNWNkOWNlZTNlMGE4MTJhNzZlYzkyZjMgcHkzaworNjA2MDEgMDFkMWE0ZmZkNWIzNWY5OTgxZDQ3YWFkY2M5N2Q3ZGMxNWE5ZWU5OCBweTNrCis2MDYwMiA2ODYzNmVhODkxNTMxMTkzNTBmNWZmOGZiZmY3OWZkZjFmYzczN2NjIGxlZ2FjeS10cnVuaworNjA2MDMgOGJjMWZkYzYzMzcwZDE0ZmIzZDJhYWYwNmRmMzkyY2M5ZmM5MjdhOCBsZWdhY3ktdHJ1bmsKKzYwNjA0IGY0YzBlNTNjMzU2MWEzNmI5ZDZhNWIxMjc0YmZlY2I3OWRmMTA5ZjkgbGVnYWN5LXRydW5rCis2MDYwNSA3N2IzNzFjNjk1OGNlZGVkZDA1N2QzZWM2NGYxOWNiYmZiMmFkY2M3IGxlZ2FjeS10cnVuaworNjA2MDcgOGZlYzUwYTM4NTlmNGQxZGYyYTRjN2VmZjJiOTc4NWYwODUzMDYxYiBweTNrCis2MDYwOCAxMTFjYjJhZDdhZjQ4ZDY1MWYyMTQ1N2ZiZTk0YWNlYmVmZTdjZWNiIHB5M2sKKzYwNjA5IDNlY2Q1MjZjMzVjNTY3MWU1ZDFkMWVjZGI3MmNlNmMyYTdmNjdkMmMgcHkzaworNjA2MTAgOGVmM2M3YzAwNDcwMTU5YWYwYmUwNzgwNzc5OGQzYTNjNzgyODEzMSBweTNrCis2MDYxMSBiNjVmNzllMzViMDhlY2U0Yjg4YmRiZTMzZTg3NjdlYTg1M2JhZGM3IHB5M2sKKzYwNjEyIGZkZDk5MjkxY2M0NTkxNmU5ZWMyM2FhZjI3MjNhMjExNTY0YTIxZWEgcHkzaworNjA2MTMgMTY1M2Y1ZmYzYzAwMTRhYWY4MzI5MTY0YmU0MTQzN2I5Yzc1MGI5OSBsZWdhY3ktdHJ1bmsKKzYwNjE0IGE0Yzg3Yzg4OTY0ODMxZDM4M2Y3ODg1ZGMzODBhNjMxYzY4NDg1NjggbGVnYWN5LXRydW5rCis2MDYxNSA3Mzc4MjdiNGM1ZDc1ZjUyNTkyYjk3MDgzZmUyYmI1MGM2ZGVjNGQ2IHB5M2sKKzYwNjE2IDkyMGE3NjMzYWUwODkyMjUxZGVjMTJmYzgyMjJkMWNmNGE3NmZmMTYgbGVnYWN5LXRydW5rCis2MDYxNyAxNDJhMTFiMzA1N2U5YWY4N2YyNjNkZDA3MjY5ODc5NmY3ZjRiMTdhIHB5M2sKKzYwNjE4IGI4NDdhOTgyM2IyZmZmYWEyNTQ0YTYwMzY2NjhjZDU2NWI1YzMzODggbGVnYWN5LXRydW5rCis2MDYxOSAzM2I3OGFhZmJiYjIyMjJjOTkwMTkwZWFiYzg5NGRhYzI2OTExZWExIHJlbGVhc2UyNS1tYWludAorNjA2MjIgNjVmYjIxNzUwOTQyNWM5ZTcxZTdmMTIxYjVlMTBmYWU5MWMyYTcyYyBsZWdhY3ktdHJ1bmsKKzYwNjIzIDA1NzFiYzRhYjZjMjgyMWJhOThjMjZjYWZhNTc5YjI5YThmMTcyYjMgcHkzaworNjA2MjQgODE5MDBhOTE0MjJiZjcxMjE4ZDRkZjQxZTk0ZDAzNjU1OTA2ZjQ2MSByZWxlYXNlMjUtbWFpbnQKKzYwNjI2IDBmN2MzMTdiYmU3ZjhjZGM2ZmRhOGZmNGU2NDViMDg5NjdjMzQ1NjIgbGVnYWN5LXRydW5rCis2MDYyNyAwYmEzMWNlYTZlMDNiMmM5MjM3OThlN2E4OTNiM2FiNzcxODFiNmViIHB5M2sKKzYwNjI4IGRiZTNhMTMzYjcxODM0MmFiYjkxYWYyZmQ5ZmY4ZmRiNTA2MzQxZDUgcHkzaworNjA2MzAgZjU1YTRmMTE5MTQxOTVhM2ZlODA3YWM0MmExMTQ1MDVkN2I5NTJiYyBsZWdhY3ktdHJ1bmsKKzYwNjMxIGEyMTI2ZWRiMjA3YjEyODQwY2UwNGNhZTM4NThhMTQ2OTcwNTMyOTIgcHkzaworNjA2MzIgMzQ2NjI1YmE1OTAzMmNiNzQ0YzY1MjJiNzFmN2IwZDY1MjdjMzU1YyBsZWdhY3ktdHJ1bmsKKzYwNjMzIGZmZTJkMGY1N2VmZDcxY2ZjZTZjNTcxNDk2MDBiOWJhMzFlMDMzZGUgcHkzaworNjA2MzQgZDM5ZTFhMGUwOTY1NDgyMzUzNTNhMDhjMzUyOGM0MjEwODM4NDNjOCBsZWdhY3ktdHJ1bmsKKzYwNjM1IDA2M2QwMjJhYzAxMWI4NWVlODZmMDBkMjM0OTYzZDBiMjRjYzFiMWIgcHkzaworNjA2MzYgM2YxMjQ5NzVlMDk5NTk0NWQ0Njg0YWUzYzBkNmM0ZDBhMmIwZjFkYyBsZWdhY3ktdHJ1bmsKKzYwNjM3IDNiYjNjNzQzZjEwNWY3MTBhYThjNzMzMzQxNzI5MGE1OTc4OTMxMDggbGVnYWN5LXRydW5rCis2MDYzOCA5MzhiYTYyMmFjYTAzY2YyZGU2ZTQ4ZDgzNzg2M2VlNzc4ZmRlZGVlIGxlZ2FjeS10cnVuaworNjA2MzkgMDk1OGNjNDZiMzNmMzQ5ZmNjMzFmMjA1MGY2MTZjZDZhMjNmNmJiMyBsZWdhY3ktdHJ1bmsKKzYwNjQwIDhjYmI4YWE0NWJhOWE5YWRiNWM2OTU5NTFiOGZhZDI4N2U0ZTRmYjkgbGVnYWN5LXRydW5rCis2MDY0MSBmZWI2ZGQzNmQ1M2YzM2U5NjYzMDJhN2ZiNDE0ZjlkNTAyY2JmNWFiIGxlZ2FjeS10cnVuaworNjA2NDIgYzczYTI4MDJiNzM4NjYwZDEyYTM5NDE0MjA4ZWY5MWYwNTIxMTNjMiBsZWdhY3ktdHJ1bmsKKzYwNjQzIGU4MmFiMjQyM2FhYjcwOWM2YWM5N2E2NDhmMzI2YjgxYmI2ZDExMmMgbGVnYWN5LXRydW5rCis2MDY0NCA0NGUyZDk4OTkxMTVkNzI4YTRhOWExY2YxODdhMTgyYjJiNzdiMWZhIGxlZ2FjeS10cnVuaworNjA2NDUgN2RjOWRlZTA5OWU4ODBkYTdmMWI5MDExODE1M2EwMTcyZWQ5MjI1ZCBsZWdhY3ktdHJ1bmsKKzYwNjQ2IDVhYzYwNWMwZjI3Y2E4ZDg0YmE5OGVkZDg0NDlmOTY1ODBmMmExMmYgbGVnYWN5LXRydW5rCis2MDY0OCAyMTlmN2YyMTM0ZDQ4ZWY5ZjAxNWI3NTJmZGMzZDJkY2ZkZGEzODhhIGxlZ2FjeS10cnVuaworNjA2NDkgZGViNDg3M2ZhMGYwNGM1N2JhZGVlZjI2NjIyYTg4MzA5NTAzZmY3MSBsZWdhY3ktdHJ1bmsKKzYwNjUwIDdmYTQ3MjVjY2U4NzlkYWVkYTE5MTEwYWRiY2JhOTM1YjVjZGJiNjcgcmVsZWFzZTI1LW1haW50Cis2MDY1MSAyYzYzZjE1MjJiYmU0ZTc2ZWNkM2E5M2YyZTUxY2VhODA3YWU4YjM2IGxlZ2FjeS10cnVuaworNjA2NTIgY2RkMmVhMDgwZTIzNjVkZGFlZDY2MjI3ZjBhNzA5OGQxNjRmNWM0MCByZWxlYXNlMjUtbWFpbnQKKzYwNjUzIDRlMzNmYzgyZTdmMzE4OGY1OTE1OGE1YTM1OTE0Yjk1YWUyZjhhNGEgbGVnYWN5LXRydW5rCis2MDY1NCA0MDNmNzA1ZDU4YzkyZjZhYTQyNWU5NGU4YzFkMWY4NWIxYWQzZTk1IHJlbGVhc2UyNS1tYWludAorNjA2NTUgMzgxZjRhMjkzM2I1ODk3MDE0YTFlODhiYjVmOTJiOGM1MDAzZTkyMyBsZWdhY3ktdHJ1bmsKKzYwNjU2IDVkOGZlY2EzMzMxNWRlOTdiN2QzYWRiMTk5Y2YzY2RjMjI0NWUxMmMgcHkzaworNjA2NTcgNTlhNjQ4NWJhYzAyMzFkMWNmNjJlYTI1MTljMzM2ZTFjMzY5Y2IwYSBsZWdhY3ktdHJ1bmsKKzYwNjYwIDRlNDM3MjJmZDUwM2UxNjI3YzEwNjc0MjdiNDFiNTNiMjJkNTgyMmUgbGVnYWN5LXRydW5rCis2MDY2MSAyNjIyNjM3MzdiY2UyZGNmZjJiYWEzMjRkM2M2ODhhOTliYzkwMTNmIGxlZ2FjeS10cnVuaworNjA2NjIgMWMzMjZkZWE0OTRjMmM5ZWI4NzAwY2E4YjM5YzgwZjk3ZTRiZjQ4MSBsZWdhY3ktdHJ1bmsKKzYwNjYzIGU5NGFmMGM3YWExMmJhMjg3MmZiNjUzZWYyNDMxZWQ1ZmNiOTNmNDYgbGVnYWN5LXRydW5rCis2MDY2NCA0MTY2OTQ1YTBjYzRmZmI3NmI4NmIzODFhYzY0Y2RjYzNmOWIwMzBlIHJlbGVhc2UyNS1tYWludAorNjA2NjUgMDQ2M2Y4MDFkN2RjNTA5NzM4NTJkMjAyNjc0ZTM2MDM3MmVjNDg2YyB0cnVuay1tYXRoCis2MDY2NyA1NGRjZjgwNmRlZDYzYzE4N2Q4NzBhMzkyZTcwMDA1ZTZhMTEwODc4IGxlZ2FjeS10cnVuaworNjA2NjkgNDI0MjJjZjAyMDhiMGFkZWQ2Y2FmZjZkNWQ3ODZiMDI5ODIyZjUxNSBweTNrCis2MDY3MSBlY2E5MGI4YWE3ZmRiOGUyOTc5ZGMwOTRmOGU2ZmQ3YWE0MDM1YTliIGxlZ2FjeS10cnVuaworNjA2NzIgM2ZhN2ZiMzI4ZDlhYTI5MGJmNzg4NDdjZDU3OTU5YjUyNmQ3MjdkYSB0cnVuay1tYXRoCis2MDY3MyAxOTgwZDcwNTg2MjcyNTcwNzNkMjJjNDg3MDQ0MDg1MDAwNDZkZTRjIGxlZ2FjeS10cnVuaworNjA2NzQgODJkNDQyODBjMTM1NmVhZDA1NDA1NjFlMWIyMjBlNTk0YTI5YTcxMCBsZWdhY3ktdHJ1bmsKKzYwNjc1IDc3YzU3OTFiN2MyMTAxNzc4MWM3NjYzYjQyNTM5NDJmNjdiZjhlM2QgbGVnYWN5LXRydW5rCis2MDY3NiAxNWJjOGU4MzI0MjA3YzI3ZTMxMWJmYjIyNjY0N2E0MjllZjhhMGU1IHB5M2sKKzYwNjc3IDY4ZDMxYTkxZmRmMzI5MjI5NjM1NWZkZWVkMzU0Mzc2ZDg5NzEwMmMgbGVnYWN5LXRydW5rCis2MDY3OCA1OTUwYzQ5ZjIyNWFkZWE0MjE2MDM1MTg0YWQwOTY5YzRkMmU2NmM4IHB5M2sKKzYwNjc5IDk3YjQyMGIyZDhkMTBlMGNjNTIyMzY4ZGU3OTQzNzYwZmQ2ZDIzZmUgbGVnYWN5LXRydW5rCis2MDY4MCA1YmE1YzRjOWEwMTY5NjYxZjdkMWJkN2I0ZTRhMzkwZWMzMDQ1MWU4IHB5M2sKKzYwNjgxIDJhODIxZTAwMWEyYjQ2ZDNkYTgxMDRiZjhlOTcyOTNmYzExODRhY2MgcHkzaworNjA2ODIgODUyN2VkNzU2M2QwYjRiY2YzODk3OGM1YzY5ZTM2Y2E4NTk2YmI5NCBweTNrCis2MDY4MyAwZjNkNThmOWNkMzUyNmRjYjZmMmI3YzgxODRhZmRiM2E2YTBkZWJmIHB5M2sKKzYwNjg0IDY0NTkzOGUwZWI1MmIyNTA2YmJhYzc1OWRkZWI4NzQ5OGFjNTYyMWEgbGVnYWN5LXRydW5rCis2MDY4NSAyNDkwNmI3OTI1NDI0MzdlZjAwZjZhMzE3YWE5ZDlkOGQwMzI5ZjQ3IHB5M2sKKzYwNjg2IGFlYmQ5YzRkMTllZGZjMWQ0OTEwZjRjNDU3N2NhOTdkY2ZkOTJmYjYgcHkzaworNjA2ODcgMDE1OWU2MmI5N2M1NWM2MDQ5N2ZmMTM2YjRhNDczMjk4MWE0MWVkNCBsZWdhY3ktdHJ1bmsKKzYwNjg5IGE4MjE1N2Y1MzRhN2UyOTk0NTUwNDljZDQ2MmFlYzIxNTQ2Y2EyZjggbGVnYWN5LXRydW5rCis2MDY5MCBhMmJmMmE1OTQwNGE5MGVmNjNhNGM5MmI1ZWFmYjkzMjljZDljNzRkIHB5M2sKKzYwNjkxIDRjZDFkMDQ3NGExMzRlNWE4MDAzYzVmMjkzOTNkNjY4ZDgzNWU1MzcgbGVnYWN5LXRydW5rCis2MDY5NSA4MzgyMWUwZjM5NWI0ZDdjNTFkZjU0MTAxNmU1MWMwZDJiOWRiM2QxIGxlZ2FjeS10cnVuaworNjA2OTYgMzI5YzZiMmUxMTA1MTc5NGJhZTg2Y2MzYjUwOWMyOTUyMjc3NjYzNCBsZWdhY3ktdHJ1bmsKKzYwNjk4IGJjNjI4NTRlZTljMjExNDg5YzNiOGQ4NWU3ZDMzMDE0NzliMTNiZDMgcHkzaworNjA2OTkgNjI2MGRiMjJmZjc1MmY0NWM0OGMwYjhlN2MwY2ZlNGI2YTgyZDIzYSBweTNrCis2MDcwMCA1ODVhZWE5MDRmMGRiNGRkYTgyNmE3MzE2MzNhNTU1NDE1ZDJjYTE4IHRydW5rLW1hdGgKKzYwNzAxIDg3MjhmODE2Y2E3NTIwM2U0NDliZWE1M2I5ZjhiMDQ0Y2U5OTYwYjcgbGVnYWN5LXRydW5rCis2MDcwMiA4Njg5YjY3MjY1YmZiZjM2ZjI2NTFjNzk0NTQxYmMzNjMyMmQyNWNmIGxlZ2FjeS10cnVuaworNjA3MDMgNjFlYmE4MzMyYzE0NWUwMjVjY2VkYzIwYTZmNGQ4MTNhMGY1ZTlmMyBsZWdhY3ktdHJ1bmsKKzYwNzA0IDc0NTI4MGQ3MTQyNTVjZWM0NzA5NDdmYzliYTE5OWJmN2Q1N2I3NTcgbGVnYWN5LXRydW5rCis2MDcwNyA4NjkwNmE1Y2VjYTYzNDg4MjU2NjJjNGQzOWZmMDBjODc0NThiNGMyIGxlZ2FjeS10cnVuaworNjA3MDggMmQ2ZjY0MGY3MDgxMzljODEwZGQ0NDBhZDhkZTcxNGJlZWM4MzJiNSBweTNrCis2MDcwOSA4NTNjNzNiMDI5ZTNlMjllNzY4NTUwMjVjYWVlMTAzM2ViNWY3NDE1IGxlZ2FjeS10cnVuaworNjA3MTAgN2Y0Y2VmMDQxODZmMWNiYmY1YzEzNDA2Mjc1NWNmZmQ2MGRjYmNhMSBsZWdhY3ktdHJ1bmsKKzYwNzEyIDRhZTAzOTdlZjFjNWYxNGQ5YzQyN2VlZDU3YjlmMDYwMTZkZmNjNjYgbGVnYWN5LXRydW5rCis2MDcxMyA2ZWJlODkzMjhiNWU3M2U5NjIxZGUyMWM3NGI3ZmE5YTllNTk2MTNkIGxlZ2FjeS10cnVuaworNjA3MTQgMWRjNzFmMDhlYTdjN2M4YjlkZjA4MDU0NDY1MjdkODY4MmRhNTdjMiBweTNrCis2MDcxNSBmYjU1MWM5MzhhNTk4ZTkzZTQxNDI0MjgzMWI0MWRiMDI4MWQxMjZkIGxlZ2FjeS10cnVuaworNjA3MTYgMDEzZTY2Y2IzNmMwZmU1YjJhYjQ0ZGE3MmI5YzBiOTBjMDQ2MzRkZCBsZWdhY3ktdHJ1bmsKKzYwNzE3IGZkNzc4OWExYmZjZGEyYTY1ZGQzNDI0MmMyOWZlMzBmZGE0ZGI1OGUgbGVnYWN5LXRydW5rCis2MDcxOCBmOGVlMDZhNTFjMGIyZjIwMzRkZWU2MzYwNDY5MWJmNTI0YmU0YTRiIGxlZ2FjeS10cnVuaworNjA3MTkgYzdmOWY5ZmRjZjgyNzFjMzEyMTEyNTIzMzE5NDczZDczMmFkNGVkZCBsZWdhY3ktdHJ1bmsKKzYwNzIwIGE4Y2E5ZTA2NWQ5ZGVlMTVlOTVkMzQxYTc3ZTk5ZWI4Yjk4NmRlMTUgcHkzaworNjA3MjEgYTUwYzFmYjdkOTIwYTgxYjE5YWFkODdlMGYwMmIyNWQzMjRkM2UxZSBsZWdhY3ktdHJ1bmsKKzYwNzIyIDlmMWEyYzk5MjU1ZmY0MWMxMTJmNDc4NWU2MzhkYTNjYzFhNzgyNTIgbGVnYWN5LXRydW5rCis2MDcyMyAxZGM1Y2ExMTQ0OGNkMDczMDg3YzlmNzY1MjMxYjc2ZmFmZGNlZThkIGxlZ2FjeS10cnVuaworNjA3MjQgZGM1MGRlZTdmOGU1MmUzMWZmZDAzZWJkYzY3NzAxNmNiNmRkNjk0NyB0cnVuay1tYXRoCis2MDcyNSBlNjcwNTBkNjJhZGZhNDZlZGFlYWJmNjBkM2IxOWZjMjExYjA1ZjU2IHB5M2sKKzYwNzI2IDNlNWE3OTBlMGNkNjVkOWU3OGE1OGJjMDhjYmYzNmM5MTg4ZjJlZGUgdHJ1bmstbWF0aAorNjA3MjcgZWVlZjM5YTZmNGRkOTk1YWY2YjMzMGE3MjQ0OWNkZjk1Njc1ZjFhNCByZWxlYXNlMjUtbWFpbnQKKzYwNzI4IDRhZmJjZGUzNDNlZGJjM2QyODFhOTQyZDM4NWMzMzE3YTQ0MzNiMmMgcmVsZWFzZTI1LW1haW50Cis2MDcyOSA0NTY1YzY5NDIwYjhjYjM0YTlmMTM5ZTRlNDAzMTNiNGZjZjRhNmQyIHB5M2sKKzYwNzMwIDc5MDU1NGFlMmIwNGFjYjMwYWRjNzI2NzEwYjA3YjkxZDcwZGMwZmEgcmVsZWFzZTI1LW1haW50Cis2MDczMSBjMGFhNmQ4ZjVjZGI0MjBlMjg4ZTI3YzY2OWY4NzkxZTY3ZDExZTU3IGxlZ2FjeS10cnVuaworNjA3MzIgYzJmYzMxOGM0ZmEzMzNkNmU4MGI1YzdiNGY4MDc0OWI5NGE4MjVkMiBweTNrCis2MDczMyBjYTA4NTM2MjJmMWExZjliOWFjMTkxYjhlMjE0ZDhiNzkxNDQ0ZGJmIGxlZ2FjeS10cnVuaworNjA3MzQgZjg1YjYzZjU2NzA2MDQxOGE3OTdiNTM1Y2RiYTVjMjk2MWRkNmRjNyBsZWdhY3ktdHJ1bmsKKzYwNzM1IDgwOGY4NGM1NjZmMGVkYWQ2YWJiNjk3NDU5ZTI3OGMzZmRkMGUyYWQgbGVnYWN5LXRydW5rCis2MDczNiA4NWI2OGQ3ZDZmNDExZWNjZWNhYjFmZTI0OGNiYzlmMjNkYWZlYjBhIHB5M2sKKzYwNzM3IGEzOWZiODk4YmViMWFkM2RhM2Y2MTExMmFjZmY5NGM3ZGUzOWZlODAgbGVnYWN5LXRydW5rCis2MDczOCA5MmJkMjFlNmE4MmM0ZDJjNzRmNWIyY2VlNTEyZGJhZDExYTY4YmIzIGxlZ2FjeS10cnVuaworNjA3MzkgNTA3NjJiMTk0YTAwYWQ2YjE1YWExZDY3NWRhMWNlZTU1ZTY3MGVhNSBsZWdhY3ktdHJ1bmsKKzYwNzQwIGVlYjcyY2YzN2FlYjRjYjQ4MTU2ZTRkMWNjNGZkZmI0YjExZjVmZDkgbGVnYWN5LXRydW5rCis2MDc0MSA0Y2E3MDY2M2E3OWQwOWE3ZjUwOGQwYTg4MWI0MDUyMjJlYzMzMzQwIGxlZ2FjeS10cnVuaworNjA3NDIgZjBlOGI1NDFmMTEzMjE1ODRmMWU0ZjYyMTk1ODRlZDkzNWE3YTUwOSB0cnVuay1tYXRoCis2MDc0MyAyNzVlZDg1OTNlYzYxZDE2MGZmNmFlZDIyZDU5Y2JjZTEzYzJmZTYyIGxlZ2FjeS10cnVuaworNjA3NDQgYmExN2IyMWFiOTNlNjY0Nzg2OWY2YThlZTcwNTU1NWFjZTQyMzQ0ZCByZWxlYXNlMjUtbWFpbnQKKzYwNzQ1IDc4OWFhNjdkY2U2ZDgyYjIxZmJmNjdlZDU3MzkwMGFlODcwNzIwMzIgbGVnYWN5LXRydW5rCis2MDc0NiA1ZjViNDY0NWQ5MTMyYjRiYTk4ZTY4ZWRiZDRhYjg2Y2E3YjYwYzQzIHB5M2sKKzYwNzQ3IDhlYjhlOWEzMjYwZDZlZTlkMGJiZDViYzBjNjI2ZjgyOTM2YWU1OTQgbGVnYWN5LXRydW5rCis2MDc0OCBhZTU1ZTcxNGQ3NDRkMmEwMjY1M2EwZDE2MmE4Nzc0MGY1MDE5N2M1IHJlbGVhc2UyNS1tYWludAorNjA3NDkgYTQ3ZjVmZmMwODIzNTM3ZjcyNWE1Mjg5N2RlOWUyZjI5MGFmMmI2ZiBsZWdhY3ktdHJ1bmsKKzYwNzUwIDI3Zjg4NTk3ZDAyYjhjMTExOGU1MDViNjkwMTU5OTNmYmRlZDNkNjMgcHkzaworNjA3NTEgYjFjYjZiNDRiNzk4NzMzMzc2ZGJhODkyOTU4MTFlMDA2YTZmYjYwNCBweTNrCis2MDc1MiBkNjczZDAwM2I2Y2E4MWUxNGQ3NjZlNjc4ZWY2OTk3YjM4MjJjNWYzIGxlZ2FjeS10cnVuaworNjA3NTMgOTVjMDAwMjY1NDAwOTA3MDU3NTYyNDE0YzJhZDU0OWViZGVkMjliNiBweTNrCis2MDc1NCBkMzE5ZjQwY2QwMDBmYjg0ZWU0ODc1Nzk4Y2JhNjEyYjM5NTg3ODE5IGxlZ2FjeS10cnVuaworNjA3NTUgOGY4YWRlYzkzY2YyY2JjZDZkY2QwMmM1OTUzNjFmYjQxNDQxZjZhZSBsZWdhY3ktdHJ1bmsKKzYwNzU2IGYxMjA1MTIxZTg0OGE2MjMzY2Q4ZGY0NTQ4Nzc3YzM2YzlmZTRjNTcgcHkzaworNjA3NTggY2VlZTA5ODFmMTQxZDQwMjFjYzU1MzJhNzcxODhmOTc3MmQxMzgxMSBsZWdhY3ktdHJ1bmsKKzYwNzYxIDExNGRjMjE1ODM2OWQ4NzYwMDJlM2Q5ZWRkOTViN2ViYmViMWM0NjAgcHkzaworNjA3NjIgYzUyMDU1ODdiMmFiYzA2N2Y3ZjI4OTViM2VlMDAyZDRlMTNmNmRkYyBsZWdhY3ktdHJ1bmsKKzYwNzYzIGFlOWVjZWRiNGY5MWM2MzhkNTE2Yjg1OWE4YzUyZDllNDI3MjgzZDggcHkzaworNjA3NjQgMThjNzZhZjRmMzY0ODg1NDU3NTY1YzFhYTI1NjUxNjYzM2ExNDZjMiByZWxlYXNlMjUtbWFpbnQKKzYwNzY1IDZlYjY0MmUwYWRkODBjZDVmN2E4NzY2MGQzODYyYTU3NWUwYWViMTkgbGVnYWN5LXRydW5rCis2MDc2NiA3ZWRmNzIyNWIwNWY4YjJiNTc2MTdiYmViZDUxMzZlYTk3OTRmMTU2IHJlbGVhc2UyNS1tYWludAorNjA3NjcgYmVlYTM1YjBlZDUwYWQ1YTFmNTU5NjBjZTUwYjJkOWY4MDcyZDdjZiBsZWdhY3ktdHJ1bmsKKzYwNzY4IGIwZjM4MGE4YjQ0N2I0YjNmZmE0YmQ1ZjVkMjM0ZjdlNjEzNDM0MjQgbGVnYWN5LXRydW5rCis2MDc2OSBmOTAzYTY0M2E4OGIxYjUxYTQ2ODM3Mzg0Zjk0OTc5NGYxMWQ3Yzg3IHB5M2sKKzYwNzcwIDVmMmVhOTY1Zjg1M2VjZTE4ODBiZTA0ODlmZjNmODk5MmM4NTBiM2QgcmVsZWFzZTI1LW1haW50Cis2MDc3MSAzMGI1NmJlYmRlNTRhZGM5ZDc4Y2E5NTMyMGJhYmRhNWFlYzJkM2U4IGxlZ2FjeS10cnVuaworNjA3NzIgNzM3MjMwOGViNjJmOWY2NGQwZDVhYWNmNTgzYjAwZjgxMWU3Mzc4YSBsZWdhY3ktdHJ1bmsKKzYwNzczIDMzMTIyZmY4MzQwNTE1OGViZjZiOGVjMTdhY2E5N2RmYzlkYTBlY2YgbGVnYWN5LXRydW5rCis2MDc3NCA3ZDJmYmI0ZTU3Njg2YTRmZThiNzM3YjI4ZWYxN2I4MzZhYTNiYWRkIHB5M2sKKzYwNzc1IDYwOGJkMTAxNGZiZWE2ZmNkM2RmOWYxNmM0MWNiMWQyMmIzYzA1YjAgdHJ1bmstbWF0aAorNjA3NzYgNTg0ZmMxNWQ0N2FjMmE3MGFkYjZiYjg5NTYxMjI4OTYxMmJmZGM3OSByZWxlYXNlMjUtbWFpbnQKKzYwNzc3IDQ0MGU3MTViYjNkMmVkYWM2MGYzNWMwOTQ4YTUzM2ZjM2E1YmUxYWQgdHJ1bmstbWF0aAorNjA3NzggZDZlZjljYjU0M2FmNWE4MTdiYTA0M2NhYmM1OWUxMzI0NTIzYjA3MiByZWxlYXNlMjUtbWFpbnQKKzYwNzc5IDY4NWNlZTE0MTBmOGUzNDNmODkyOGRkOTUxMDAzZWI5NWZhOWUwZDUgcmVsZWFzZTI1LW1haW50Cis2MDc4MCBmOGZiMjcxMDZlY2MwMTg0ZjJiNmU1NjJhYTkyN2Q2YjVmNTRkMDNlIHJlbGVhc2UyNS1tYWludAorNjA3ODEgMDgzYmY2ZTBhZTUwNTFjYjU1ZDZiZDc0MmM4ZDM0YmZiMTc4MDRhMSByZWxlYXNlMjUtbWFpbnQKKzYwNzgyIDc2YjJkZTljOWIwYjdlNTIzZGE1ZDNlOTc5YjczMGQzNGM5NzU5MDkgcmVsZWFzZTI1LW1haW50Cis2MDc4MyAxZTBlZTMyNGM1MTM2Njg0MzRjODgyMmNkOTJlYmQ4YzFlYjBlNjZiIHJlbGVhc2UyNS1tYWludAorNjA3ODQgNTY3ODZhMmRlZWM0M2I4NzM2YWM1ZmViNDRkMWI3MWNjYTM4ZDg3MCByZWxlYXNlMjUtbWFpbnQKKzYwNzg1IGM3ZTY4M2Q1MmIzYjNlMTEyODhkMjIzZGI2MmQ2NmQ2MTU5OGU2ZGIgbGVnYWN5LXRydW5rCis2MDc4NiA0ZmNiNzAwMTE1ZDgwM2E5ZGIzNGMzOGZlOWRlMDhjMTFhNTliMTVmIGxlZ2FjeS10cnVuaworNjA3ODcgZTcwZjU2Y2Y2OTcyMmUyMDE2OTJjNTEwNDdjZTZkN2E2YWJiZDQ4NiBweTNrCis2MDc4OCA2ODAxNmEwODg4Yjk2ODM3NWMwYWM5ZDIxNTMwNjY4MmQxMjEyZDcyIHRydW5rLW1hdGgKKzYwNzg5IDA5NWNhOWZmMGQ4ZWNhOWMzMWM5NTY4OGJiNjc1ODRlYTVmYTFlMjcgdHJ1bmstbWF0aAorNjA3OTAgZTUxOGUzOWY0YTllOTU5MTc2ZDViMGUxMDJjMTVhZjcxNDlhNmE3MyBsZWdhY3ktdHJ1bmsKKzYwNzkxIGVmNzU0ODE3M2U2MTcxZTk5NTQ5NWNkN2I4MzA3OTM1ODAxMWZkZTIgbGVnYWN5LXRydW5rCis2MDc5MiAwZGQwNWVlZDYzZGU5ODY3NzlmOTUyMjA0MGU5NmMwZjA3YmI1ZTVhIGxlZ2FjeS10cnVuaworNjA3OTMgOGNiZTBiZDkzYzI4YjAxMzIzYTM4OTMyMWIxMjk1OTEyMGVkZWNhMSByZWxlYXNlMjUtbWFpbnQKKzYwNzk0IDE5MGQ1NTM3M2U1MDU3ZDNjOGE3NGE2NGYyYWQ1OTIzYTFlNjgyMmIgbGVnYWN5LXRydW5rCis2MDc5NSA1YWQ4YWU0ZDc4NGU2YWNiODZiZDc4NWMyMDdkNzMzZWM0NmI0MjYzIGxlZ2FjeS10cnVuaworNjA3OTYgZTIyYmM4Yjk2NTQ3M2Y1ODE3NjkzY2Q1OWNiOTM2NjU0ZGNiYWJiMyByZWxlYXNlMjUtbWFpbnQKKzYwNzk3IDY1YWU2OGM3YWNhMzgxNjJiYTA0ODhlMzZmOGRhMDk4YmMxY2EyMWUgbGVnYWN5LXRydW5rCis2MDc5OCA1YzFkYTdiMWI0YTZiODI4ZGJlYjAwODVlOGNlNWYxOWNjNmUxZTFkIGxlZ2FjeS10cnVuaworNjA4MDAgMGE4YWFlNTc1Y2RkZGJmM2QxMzNmY2I0ZWVkOTEwODBlM2ZlNDFmMyByZWxlYXNlMjUtbWFpbnQKKzYwODAxIDFkYzMyMmFkYmI2NzY0MDJlNTJmNTI2OGQ2NmUzNGUxMDc1ZjhlNmEgcmVsZWFzZTI1LW1haW50Cis2MDgwMiA4OWVjNDJiMjk4NjMwZTg4YjFiOTY4YjUzMzA3YjljMDU0NjUxNGU0IHB5M2sKKzYwODAzIDE2N2E5ZmM4Mjg0NDkxY2I1Y2ViZTEyNWExZDk5YTJhMWNlZmQ0MzYgcHkzaworNjA4MDQgODNkMmM3MDQ0M2ZiNzJiMmQ2MDcwZWNhNDQ0NDUxMjY2ODRlY2Y3YSBweTNrCis2MDgwMSBhMDMzNjE3NzkyZDE5ZGVjNGIxZGQwYTY3OWQ3NTRhMjgxNTIyMzNlIHJlbGVhc2UyNS1tYWludAorNjA4MDYgZjE5OWRlMzhhZDAxMDEzNzdhYTQwZmE4MjcyMjJkMDA5MDFiZWM3YyBweTNrCis2MDgwMSA5NTcwMjBlZDNhZmFlOWVlNDY3NWUzNDg1YmE2MWM3YzFiZGZkYTM5IHJlbGVhc2UyNS1tYWludAorNjA4MDEgNzIxYTU5MTBmYmYwZDk5MGE0Y2IyMzVhODg2Mjk5OTllM2FmZDBiMCByZWxlYXNlMjUtbWFpbnQKKzYwODA5IDFjZWIyYTZjNjBlZWFlOWQxNThiNWQ0YjZjNDY2N2M3M2I5ZDAxZDMgcHkzaworNjA4MTAgMmQ5ZWNhMGI0NmZkM2YwOGJiYmRkZWI0NDRhZmZmZDgyMGY2YzJlMyBsZWdhY3ktdHJ1bmsKKzYwODExIDIxODM2ZTBiOWViMDMxOTcxZDZkYWRmZDAxZTlhZmFlYjgyMmMxZjcgbGVnYWN5LXRydW5rCis2MDgxNCA3NDZhOGUxYTc4NWE1OTA1ZjgwM2NiYTcyNTkyMTgzNGE5MGRjYzVmIGxlZ2FjeS10cnVuaworNjA4MTYgZTE4Y2IyMWY1ZjVmZjA3NGM0YzJhZjQ2MzdmNjBjOTAzYjU2NTYzNiB0cnVuay1tYXRoCis2MDgxOSA0MWRjMzY4Njg4OTA4YzNmMGQxMzkyMzcwYmM2NTliODg4MTc5ZDY1IHRydW5rLW1hdGgKKzYwODIyIGVlYzY3YWY0ZDdkZmYxMTViOGRkZTcxZWYyNTExODY4YjRmYWY0YTggbGVnYWN5LXRydW5rCis2MDgyNCAxMGIyNjNhMjAyY2FkMzc4NjNmNzEwNzM3MTgwNzM0NTVhMDc2YTQ2IHRydW5rLW1hdGgKKzYwODI1IGNmNWE1ZDczMmUzY2NiMjkyOGJmOWViMmFhYjBjZWM3MDA2MGMyZjQgdHJ1bmstbWF0aAorNjA4MjYgZjQ4Mzc0YjhjMWMzZDhkMzU2MWEzOWIxMmY1NGIyY2M5NGViYzMwOCB0cnVuay1tYXRoCis2MDgyNyBhMjM1NjczYjlmOGVhMjRiYTgxNzYyNjA0YTNkNGQyMGY5NGZhYTllIGxlZ2FjeS10cnVuaworNjA4MjggODkxZmI1YzNiYzE4MmEzMTc0NWU2Y2I4ZmJiMWI2N2Y1MDI1NGZhYyB0cnVuay1tYXRoCis2MDgyOSBiMmYzZmQ5YTRjNjU3MTQ4ZDIyZDZhYzBmNDVmNTcwNzZiNGMxODUzIHRydW5rLW1hdGgKKzYwODMwIGE5NzY4OWIzZTc0MjVlN2QzOGUxMzllNmZjMDlmZGU2NzdhYzQ0OTkgbGVnYWN5LXRydW5rCis2MDgzMSBiMjdkZTI5YTIzMjdhNjIwODc2OWZlMWYyZWZjYjA3ZWM3NTU5ZTA3IHRydW5rLW1hdGgKKzYwODMyIDMzMjIxYWRjMGMyMDZlMzJmZjE0MWFhMjg1OTllMjA3NWQyNThkMDAgdHJ1bmstbWF0aAorNjA4MzMgNGI0MzIxNDYxYTlmMDI4N2NhN2JkYzAwZTU0ZWFiYzAzZTMzNWI4ZiB0cnVuay1tYXRoCis2MDgzNCBhNTczOTI1YzkxZTQyZWEwY2E3YjdhMWFhNmI2MTgyYTgwMWRiZDk5IHRydW5rLW1hdGgKKzYwODM1IDNhNTVjMGZkODIyZmIzMDVhOWM5ODE5MzdmMGI0NDRmY2I0ZGJmYWUgbGVnYWN5LXRydW5rCis2MDgzNiA3YTM1NWI2YjIxYWM4ZDY0YTZjMTU3M2M0NzY1Zjk0YjZjM2FjMTgwIHRydW5rLW1hdGgKKzYwODM3IGRmNTFiYWQ4NjcxMDA1NDZhYzE3MDIzY2ZiMjhiMTUyYTliMmQ0MmEgbGVnYWN5LXRydW5rCis2MDgzOCA0NTA0ZGZjYzE5MjRkZDVmMzAzZTIyYjVkNTJmZjYwOTVhM2YwMWM2IHJlbGVhc2UyNS1tYWludAorNjA4MzkgM2M0ZDU5M2UxNTM4NjViN2NmNmVkYmYzNmNjNjk4M2RkNmJiNDYyOCByZWxlYXNlMjUtbWFpbnQKKzYwODQwIDkxNWZkYWNmNzAyZGEzYWI0ZTFhZjU2OWIyYzkxYzM5ZDVmNjhhZGIgbGVnYWN5LXRydW5rCis2MDg0MSA1NTcyMzZkNzUyZTJkOTc5ZWUyZmUyMmNkOWI4ZjMzYmMwZjI5NmNhIGxlZ2FjeS10cnVuaworNjA4NDIgMGUyYWFhN2I5YjFmYzliYjllNWQ5YWJhNWRhYmFiY2EyMTE2NDMyOCBsZWdhY3ktdHJ1bmsKKzYwODQzIGQ4ZjEyYmFlMzc4YWQwN2U1OTkwMzUxOGVjODFkZDdlNzI2YzZjYTUgbGVnYWN5LXRydW5rCis2MDg0NCAxNjZlM2JhN2RlMjQzNzc1ZWQ4OTUxODgzZGI1YWUwY2IxNTIzMmE1IGxlZ2FjeS10cnVuaworNjA4NDUgYzQ0NzUyZDkwZmQyY2NlNDBkOWI1NmRkMmY0ZmJlMThhMjVkNTQ3NSBsZWdhY3ktdHJ1bmsKKzYwODUwIDYyZGYxZTMzOTgzMmI2ZjY4ZjQyMTNkODQ3OTg4YzQ0MmNhYzcxOTMgbGVnYWN5LXRydW5rCis2MDg1MSA3MTEzOWI2OTI0MzliZGVkODE4MmIzODZlZGQwMTJkMjY1ZGJkMWM2IGxlZ2FjeS10cnVuaworNjA4NTIgOWFjZWI5MDU0YjNmOWZmMmE3MDk5ZDYyMjIxMGE5MGY1YzE1ZjVjMyB0cnVuay1tYXRoCis2MDg1MyA3YzRjNDYzNDIxMzczYjUyZTRlNzU3NWVmMTZmNTc5NDAwMjhkMGI2IHB5M2sKKzYwODU0IGQzNzg1OWYyOWU1MTFhMTJjNDdjY2M4MTA1OTAzMDgxNjVjNzdmNjUgdHJ1bmstbWF0aAorNjA4NTUgOGM2OGRiODZmZjg3YTQxM2JiZGFkMGQ1NjU1ZGZkNjJkZDBiMTBiNSBsZWdhY3ktdHJ1bmsKKzYwODU2IDFhODllOTEzMzM3Mzk1MDdlMjZlOTZkYWFhYmUwYzU4NjMzOGIyMDYgdHJ1bmstbWF0aAorNjA4NTcgMzE4Y2E2YmM4OWEzZDVkZjNjNmRmNWZhN2Q4ZmI1Nzg4OWQyODk1YyB0cnVuay1tYXRoCis2MDg2MCBmMzc4ZWRkMjFkZjI2ZjYyMjkzMzdlMTAwODZhNGRkYzQzN2QzMWY0IGxlZ2FjeS10cnVuaworNjA4NjEgYWMwOTViNzc0ZTE5M2JmNGY4NzliNTY2YjEyODRhYzhiNmY1YjI1OSB0cnVuay1tYXRoCis2MDg3MSAyNzBmY2QyZTk3ODI2OGE0NDMyODYzNDNiNGFlZjZmYzQxMWYxN2ViIGxlZ2FjeS10cnVuaworNjA4NzIgNjU1MDY1OWRiYzlkYjY2ZTA1OThmY2ZkMmVlYTgyNzQ4N2QzY2VlNiBsZWdhY3ktdHJ1bmsKKzYwODczIDYyMTIzNjczOTBlMzI0YWM3MWI3MTlhODk3NDliYzhmOGM4YjQzZmEgbGVnYWN5LXRydW5rCis2MDg3NCAxODcyYmQ2Y2Y0YjQ1YjU4YWRhOWUyOThkMzliYzNmYTg4MjlhNTI2IHB5M2sKKzYwODc1IDEyZmYxNDZmNTlhNzA3MWFkOGQwODU3NTM3MWViN2ExZTFiNTIzZjQgdHJ1bmstbWF0aAorNjA4NzYgOTNiNjE1NzQxMDc0MGM4M2I2YjgyMTQ4MTNlNDBlMDQxZTBjNWZiOSBsZWdhY3ktdHJ1bmsKKzYwODc3IDA4Y2I1YWJmYjViNmEyNGIxOGRmMmYzMjZjZWMxNDE5OWJiYzM1YmIgbGVnYWN5LXRydW5rCis2MDg3OCBjYzAyMzJkZTA2NmMzM2RlNjU5MmE1YjUwNzM4MmExMTc3NmI1YzAwIGxlZ2FjeS10cnVuaworNjA4NzkgYjcyMzFiZjZiZmI3OTU5ZTJjN2FkZDkyMzY4NDM0MTY5N2I4MGZhMSBsZWdhY3ktdHJ1bmsKKzYwODgwIDdhZjk1NTg0MzkyOTYyOWY2Y2YzOWEwNzBjZDk4ZGM1MmJlMzZiMzcgcHkzaworNjA4ODEgMjFlYjFlNmVkYWZhZjM5ZTcxNDM5MGEzZTJjN2NiN2UzMzUyNzMyZiBweTNrCis2MDg4MiA5Y2M3YTg2NzM3Yzk2NTJmZjNhNTMxODY3MjBlY2IwZjRiOWU3MDYzIGxlZ2FjeS10cnVuaworNjA4ODMgM2QyZmYwMTQ2NTc0OTBjYjBkMWJhZDc1YzU4YjRlNzU4ZTI3YWFmNCBsZWdhY3ktdHJ1bmsKKzYwODg0IDFiYzkyM2ExMDdkOTU2ZTY5ZThhY2IxNzQwMWE3NmNkMGUxYThjNjEgbGVnYWN5LXRydW5rCis2MDg4NSAwZTkyZWY1N2MwZDRhOWVkM2YzMjZjY2UzMDNmMWIxNTQxMjQ0MDQwIGxlZ2FjeS10cnVuaworNjA4ODYgZDRiMGYxMjdjZmNiMWU5MGI1YTA1ZjhhYjMzMDM3MmM4ZjMzYmU2MiB0cnVuay1tYXRoCis2MDg4NyA1MDg3NDE1MDU0ZjE5Mzc4NmViZDlhM2Q2OWNkNzU3YjM0MTU1YzVlIGxlZ2FjeS10cnVuaworNjA4OTEgMmVmY2Q3ZjYwNmY4Y2Q1MWIyYWRmM2IyMWNhMjNhYmI3YTZhZTEyMCBsZWdhY3ktdHJ1bmsKKzYwODkyIGJmNmIyNjhlNzdmM2M0MmYwZGM4NTM1NWE5MzdlZDQ1Nzc4OWM0ZTcgcmVsZWFzZTI1LW1haW50Cis2MDg5MyAzZmM1ODYzMDdkNjY5M2M0ZDNlMjhiNTQ2ZWQ3NDZjZGZlYjcxZmQwIGxlZ2FjeS10cnVuaworNjA4OTQgOGVjZTVjYTRhNzg1ZTA3NGRmMTM5ZTk3NWYzZGM5MWUwYzc1OGNlMCBweTNrCis2MDg5NSA2MDZkNGNjNWNkYjMwYmJhZDE2Y2QzNjE1NzUyOGIzMThmOGNhMjZiIHB5M2sKKzYwODk2IDI3YmVhZTIxYTgyYzk2OTQzZDZhZDFkZDg0ZTdkN2VjZjczYTI3ZmIgcmVsZWFzZTI1LW1haW50Cis2MDg5NyBiYzcwZThiODlhMWMwNTZjNjQ1NDExMWVlNTlhYzBlNjEyYjAyOGViIHB5M2sKKzYwODk4IGIwY2M3YTZkYTFlMDMyZTJiZDUxYzJlMTM0NDc1MzZlODliNWI3ODcgdHJ1bmstbWF0aAorNjA4OTkgM2VlNzc5NTk4NTdhZjNhYTFmODVhZmJjYTk0OWM0ZDY0MWY2Yjk3OSBsZWdhY3ktdHJ1bmsKKzYwOTAwIDI5NWYzN2ZjNjIxYjk1M2MxN2ViNWY2Yjc5MDE5NDUwM2JhNDkyNjkgcHkzaworNjA5MDEgZjlmNDc5Y2U1MGQwYmE0ZGYwN2VkM2I5ODdjNDE1ZWY5NzU0ZDhkMCBsZWdhY3ktdHJ1bmsKKzYwOTAyIDE1ZDU3NzZmMjcwM2NjMDg3ODhhNWQ4NTVmZGU2NjEwNWNhMWI2MTcgcHkzaworNjA5MDMgOWUyNmMwYjIzOTg3ZjVmNjMxYzM0ODY2OTY1YzdlZGJhZWYyNGE5ZSByZWxlYXNlMjUtbWFpbnQKKzYwOTA0IGM0NzRjOTI3ZTAzNjBmZTIyZThlZWJiNTJiNjY2ZjZiOTBiMjZkMWUgdHJ1bmstbWF0aAorNjA5MDYgMjlhNjZlNjIxZGJlM2YyZDc5YzM1MzM2Mjg2MDI2OTUwM2NkODkyOSBweTNrCis2MDkwNyAyZmY1MWM0MTJlNTc3YjU0NWE5YmZkZTMyYTJhNDYxZDE3NjljM2Y0IGxlZ2FjeS10cnVuaworNjA5MDkgMGVhMjM2YTcxZDc3NzNjNmYxMjI4MTkyYWY5MGVmMDRjODFiMzAzZiBsZWdhY3ktdHJ1bmsKKzYwOTEwIDVkNzI2ZGEyMWQ3NTQzMTA1ZmJlZmI0N2Y4YmFjYzVmYmMwMzA1NzggbGVnYWN5LXRydW5rCis2MDkxMSAwOWIxNjdhNDAxOGI2ZGE2OGUyMDgxMmViZjFhMDUzNTdlMGI2MjI0IHJlbGVhc2UyNS1tYWludAorNjA5MTIgMTUxZTdmZmM3ZTg5MzY4YTA2MGY1YWIwN2QyNDFiOWVhN2RjZTJmMyByZWxlYXNlMjUtbWFpbnQKKzYwOTEzIGQxMjE5OWQ2MDJkM2NhOWFiM2RmODlmZDQwZGJhZGU5MjgxMGYzODUgcmVsZWFzZTI1LW1haW50Cis2MDkxNCAxZDUwOGJiYmRiNDlhMmIxMTYyOWVlMTg2YTYzOTI4MjkxYjA4Njk0IHJlbGVhc2UyNS1tYWludAorNjA5MTUgOWY0MjhhNWU2MmIzMTQyN2NjNWZhZjA3Yjc3NGQzOWQzNDQ2ZDkwZCByZWxlYXNlMjUtbWFpbnQKKzYwOTE1IDk0NTUwMTY1ZDYyNjgyMmEwYmQ1MWQzZWQyYjYwM2RmMThhYWU5NGQgcmVsZWFzZTI1LW1haW50Cis2MDkxOCA4MGVjZjY3MzQ3ZTk1NDFmMTM2NGEyNDg5NDU0YWJhZWYzOWM3YzBkIGxlZ2FjeS10cnVuaworNjA5MjAgMWM5NThmZTcxOGUzZTA4OTAyMjNhMDQwODI5NDc3NzRhMTIyYmQ1MSBsaWJmZmkzLWJyYW5jaAorNjA5MjEgYjUyNjVhY2JlZTc1Y2RmZTQ5ZjJkYTU3ODdjMTZjYzQ5NDQyZWE3OCBsZWdhY3ktdHJ1bmsKKzYwOTIyIGY2ZWVlYTAxOWMxZjRjZTVkNTdiOWYzY2JkYmRkZGRjYTBjMTMzMDUgbGliZmZpMy1icmFuY2gKKzYwOTIzIDhhMTg3ZjU2Mjk1OTQ5MjVjMTVmNDQ3MTU0OTcyODI1NjRmODBhYjkgbGVnYWN5LXRydW5rCis2MDkyNCBmODJiZDllZjdkNzg4M2M0MGM3YTg0NjI2NGQzOGU3NjZmZjIyODE2IGxlZ2FjeS10cnVuaworNjA5MjUgMDBiZGQ5NmRkZWRhMzFhMzIzNTczYmI3ODYzZWM2YjQ5ZTQ0NDkxOSBsZWdhY3ktdHJ1bmsKKzYwOTI2IDkwNDhjZTllMzdjOGVmZmIxMGJmZGI3MmU1ZGNlMDI5Y2RhMTQ4ZDggbGliZmZpMy1icmFuY2gKKzYwOTI3IGY5ZTI1NTYyYjJkMWI5OWUzZmE0NTBhNjM3YWUxN2FjYTcwM2RhN2YgbGVnYWN5LXRydW5rCis2MDkyOCBlOWJjNGZiZGExOTEyNWRlNzMxNjRhMmIzOTU0ZTdlMzJkYzk1MzYxIGxlZ2FjeS10cnVuaworNjA5MjkgNTk1M2Y2ZmMwMjA0NDk1MWMwOWM5MGEyYmRjYjFhZjk3ZjE2ODhlYyBsaWJmZmkzLWJyYW5jaAorNjA5MzAgMzM3ODJjYTlmNmRjZDMzMzFiMzk0N2Y3ZGI3NzczYTE3NzhkYzcyOSBsaWJmZmkzLWJyYW5jaAorNjA5MzEgMTg0ZDFiMjI3NWRjODc2YWI1ZTk1ZTNlNTIwOTQyNDQ5ZWQ1NmJmNCBweTNrCis2MDkzMiA3ZDI2MjMwYmI3NjMwMmIyNmVlMWUxY2Q5ZTg5NjE1OGRkZDRkZmZmIGxlZ2FjeS10cnVuaworNjA5MzMgZWMwYTg1N2U4OTZkZGFhYTFiYjk3YTg3OTRhNTY2MWI5OWU2ZTBhMyBsaWJmZmkzLWJyYW5jaAorNjA5MzQgN2JlMjBmNDhmZjY3MGZhODYwMDhlZmE1MDU0NTY3ZDM2YzYzMGE4NyBweTNrCis2MDkzNSBkODlkNGRmOTY3ZTYwYzk3OTkxODg2YTRhMWVjZWNhNmYwNDYxZWE1IGxpYmZmaTMtYnJhbmNoCis2MDkzNiAzNGFmZTZjYjAyYTE1OGMxNzRlMDViZDQ3ODUyMDlkNWMyZDcxYjMzIGxlZ2FjeS10cnVuaworNjA5MzcgOTMwMDUzYzlkYjFkYzM5NjVkODA2NTMyZmNiNjBkNjkwYThhODY0MSByZWxlYXNlMjUtbWFpbnQKKzYwOTM4IGM1OWZkODJhNTZiMDMzM2VmNjAwODRiODY0YmZhYmUwZTEzY2Y2OTIgbGVnYWN5LXRydW5rCis2MDk0MCBlMjg4N2RjNWJkYjVhNmFiODBkYWY5Y2VlNGM0ZmRiZWFkNDRkNDBhIGxpYmZmaTMtYnJhbmNoCis2MDk0MSBhOWUxZmRhZjQxM2Q5ZmYyNmIyOGRmZDU5MjM0NTA3MWNjMmI5OGJlIHB5M2sKKzYwOTQyIDNjYzU3ZmQ4N2QwZTBlOTYwOWQ4ZWMzYzdhOTIzNmYzYmU5NDZmYWEgbGVnYWN5LXRydW5rCis2MDk0MyAwMmQ0Zjk4YTdlMTMyZWVlZTdiM2Q4ZGVlOTVhNTA3ZjIyNDUxY2ZhIGxpYmZmaTMtYnJhbmNoCis2MDk0NCAzYmJmOTZkOTY2MzkxMjQ3MjRjMmM4ZjI0NGQyN2Q0ZjE5Mjg1M2VmIGxpYmZmaTMtYnJhbmNoCis2MDk0NSA2ZWE2Yzg3YTc1MDEyN2VhYzBhMmJjNDVjNWEzYTg1ODhmYmQ4YzZjIGxpYmZmaTMtYnJhbmNoCis2MDk0NiA5MmRiNjlkYzhkNGIwNjU5NzQyZGRkMjVlMWRmNmE4OThlZTM5M2I4IGxpYmZmaTMtYnJhbmNoCis2MDk0NyA4ZWVmNTZlMDk4NmNmMDEyMTUyYTQxYjg3NDU5NzJhYWUxNjdiODYwIGxpYmZmaTMtYnJhbmNoCis2MDk0OCA5OGMzZjlhMWQzNjYzMDBmNWM4NDViZmVjOGZlNzJiMDQ3YmE2NDM0IGxpYmZmaTMtYnJhbmNoCis2MDk0OSA4NWM2MzAzNmNhMDE5MTI1ZDFiNGI4ZTA4MjhjN2UyMGMyNTM0NzVkIGxpYmZmaTMtYnJhbmNoCis2MDk1MCBmMGY4YjIwMDE1MTVlMDVkOTM1OWNhMzgwZWU2YWM3Y2FhNjE4N2ZiIGxpYmZmaTMtYnJhbmNoCis2MDk1MSBhN2YzNTBiM2VkMjQ5MDYzYzM2YmY4MDMwN2FmMWJjZDFhMmNhNjBiIGxpYmZmaTMtYnJhbmNoCis2MDk1MiAxYjRjZmEwMDZiZTE1OTA5MTBjMzdlMjZlZjA0MTNhNzAxMjI4M2VjIGxpYmZmaTMtYnJhbmNoCis2MDk1MyAzNzMwOWUzM2M0MmM0NTJkYWY2MGY0MmYzNWZlNmFkMGJkZmJlOGZlIHJlbGVhc2UyNS1tYWludAorNjA5NTMgNDU0NjY4MTNkZWY3N2NiMmJiZjU1NDg1ZTA3NjI0YjFjNWY3OGUwZiByZWxlYXNlMjUtbWFpbnQKKzYwOTU1IGI4ODdkYmEyYjVlMWMxNDI4MTAzZDI1MjM3MjMyM2NlZDBiMzMzM2EgbGVnYWN5LXRydW5rCis2MDk1NiA4NTNhZjViYmI0OTdiMjMwMzcxNjVmNTU0OTU5YWFlZDQ3MmI2MjY5IGxlZ2FjeS10cnVuaworNjA5NTcgYmM5ZmQ4NGFmZGVjY2ViM2M5NmFjZTI4YjY3YWI2MmExNzQ0NDIzZiBsZWdhY3ktdHJ1bmsKKzYwOTU4IGFiMzhkNzcxZjU2ZGE5OTZhZGY0NTNlMWNmNWVhZWNmNDAzNGZlYmIgbGVnYWN5LXRydW5rCis2MDk1OSBkNDY2Mjc3MzBhMmEzMDNlZWE5ZjBmZGZlZmFjN2M2OGJkZTRhN2Y4IHB5M2sKKzYwOTYwIDQyN2I1NGM3ZWUyNTJkNjQ0NjI1YWMyOGM0MGZlNmU1NjljYjM2OTMgbGliZmZpMy1icmFuY2gKKzYwOTYxIDZkNmEyOTNmYmFmM2I1MTA4ZDVmOGRjMDdmM2RlZGE2ODNiZTI3YjQgbGliZmZpMy1icmFuY2gKKzYwOTYyIDRhOTUyMmZkNzVhNmUyYWI1NzY1YWM2YjgyMmRhZTJjNjk2MDE1OTMgbGVnYWN5LXRydW5rCis2MDk2MyAwOTFiMjc4NzZhMWI4NjRlMWY5MDQwNDgwYjI5MGYzNjBlM2VkMjQwIHB5M2sKKzYwOTY0IDQyYjNiMTE3MzkxZGNiNTJjYjZiZDEwMmJiY2U0ZGJkYjA3N2VhZmMgcHkzaworNjA5NjUgNjdhOWQzMzg1ODUxMzgwZTBkZTkzYjczMTg1MzQ5ZjIwOTQxNThjMSBsZWdhY3ktdHJ1bmsKKzYwOTY2IDdjNTFlMWQxNGM4YzU5ZDljNjA1NmVhMDAxM2QxODJhYzU4NjY1MjEgbGliZmZpMy1icmFuY2gKKzYwOTY3IDZhNmNhNWU1NzlmNjZlM2U3NDAwMzFjMDY5OTc1ZGQ0YzkwMjQxMjUgbGliZmZpMy1icmFuY2gKKzYwOTY4IDA3OWUyMWY1OTMxOTNhZDc4M2RlNWIxNTBiYjMyMzQxMmZhNzk3ZTMgbGVnYWN5LXRydW5rCis2MDk2OSAxMWE3M2ZiYmY4NmYyZGYzOTgwNTc4YmQ2NDI0MzZmYjM1NWE0MzBlIGxlZ2FjeS10cnVuaworNjA5NzAgOGViNTk4MzMxMjMxNTcwODVhOGIzMGEyMTQ0ZmRkZWI3N2UzMGM0NiBsZWdhY3ktdHJ1bmsKKzYwOTcxIDFjNzJhNzM4MjEzMzZiMWQ2ZDMzZmFkYTRhZjAzYWQxYmVlOTQwYjQgcHkzaworNjA5NzIgMTQ3YjQ4YjNiYzIzNGU2ODA2OWY1YjNlYzFlNDdiYWMzYzViZWU1ZSBsZWdhY3ktdHJ1bmsKKzYwOTczIDkwMDM0N2Y3MDI1ODRiYjYyNzM1MTYxNGNjZTJiZmU2MGI5YTZlMjcgbGVnYWN5LXRydW5rCis2MDk3NCBjYTVmMmY5NjA2MTc0YzM2NTE5MzY0MjE5ZDFmYWQwNjU1OGU3NWExIGxlZ2FjeS10cnVuaworNjA5NzUgOTZhMzRlZWY4OWEzZDFkYmZlMjQ1MTQ1MTg4YjgwODBhYjljYzc3ZSBsZWdhY3ktdHJ1bmsKKzYwOTc2IGRkYTkyYTA5N2U4YzZmNmQyMjYwYmZlZGUyM2Q1YzQ1NjIwMWRkYzkgbGVnYWN5LXRydW5rCis2MDk3NyA1ZTA3NzJlZDIwZDFkNjhhOTU2NTAyMTUyYzYwYWI5MzJmZGQ0OWRhIHB5M2sKKzYwOTc4IDM5MzgyMmYyZWY5MDFjMzY1NWQ4NGIyYmY4NDA1ZTNlYWI0Yzg1ZWIgbGVnYWN5LXRydW5rCis2MDk3OSBmMWI1MGFhNWQ1YWY0ODNhYTI2M2FhOTdkY2ExYTkzY2U3MTNlY2U4IHB5M2sKKzYwOTgwIDczNGZjMGExOTY1N2Q1ZjBmMmE4NGJhZDkxNWIwNTMxNjY2OTRlMmIgbGVnYWN5LXRydW5rCis2MDk4MSA3YThkZTJhN2IxYTU2YmRmMjIyZmU2ZjE0NjYwNzNhMWViMTRlZTdiIHB5M2sKKzYwOTgyIDhmOTk0ZDY5Nzc0NzU1MGQxMjZhNWVlZjJiYTg3YjljNjQzMWQ4MDcgbGVnYWN5LXRydW5rCis2MDk4MyAzNjU3YzI3ZWEyZmQyYjlhNTc0NzNmZWQ1OTI3M2Y2MmNiMzc5NmYxIGxlZ2FjeS10cnVuaworNjA5ODQgOTMwYjI4MDJjMDM3YjkzNTU0OWUzYTM3ZjA4MDcyMjVmMWI2NzliMiBsZWdhY3ktdHJ1bmsKKzYwOTg1IGQ3ZTIzMmU5ZjFhMWVlMTVjMmIzZjg1OTJmN2I3YzUxMjQ5NmZjMjcgbGVnYWN5LXRydW5rCis2MDk4NyAxYjE5YTU3MTQ1YTViMmY1YTY2ZjZjMzg1ZTRhNDc4YTA3MzBmMmZlIGxlZ2FjeS10cnVuaworNjA5ODggOTc3MTM5NTZjMWIwZGYzYWVkNzg4YWUyMTRlOGU4M2NjNGIwMWEyMyBsZWdhY3ktdHJ1bmsKKzYwOTg5IGJhMzU5YjZjMzNjMzgxNTY0MWVhOTFiMDI3OTZkNWNkNTUyZDcwOTkgbGVnYWN5LXRydW5rCis2MDk5MCA5ZjAzNzg4NzYzZTA5YTA5MDEzNzBjNzI1YTNiMzU3MTBmNzQ1ZWI0IGxlZ2FjeS10cnVuaworNjA5OTEgMWNjNDdlMTI5ZmY0N2Y0ZWE2ZDRkNjRmMmJkNTgwYmZlNjRjOGRlOCBsZWdhY3ktdHJ1bmsKKzYwOTkyIDU4YzNmMzQzOTY3MDhhZGYzNDE3Y2RmNmRiZDJmNzU1ODk2YjVlZDQgcHkzaworNjA5OTMgMmM1ZDkxNmJkMTFjOWE5ZTExNDY1Y2I5NWI3ZGQwYzAwYzczYzgzMiBweTNrCis2MDk5NCA0Mjk4NWViYmZjNDUzMDliNjk0MDRmNDMyZTJjYWFkODI5NzQ4OTg3IGxlZ2FjeS10cnVuaworNjA5OTUgZTg0YWQyYTI1OGE0Njk0OTQyZjkxNDcxZDhjYmJmYTQxM2RlYzAyMSBsZWdhY3ktdHJ1bmsKKzYwOTk2IDk3NGNmZjNlMDAyMTYyMWFlNGFiNDhjZjBlYTc5ZTkwZWNmZmY2Y2YgcmVsZWFzZTI1LW1haW50Cis2MDk5NyAxMzBmYmZiMTYwMzZhZjQ2ODgwMTJkNmJmNWI4OThhNDE0ZjYyMGUxIHJlbGVhc2UyNS1tYWludAorNjA5OTggNzQ4YWYwYjgzNjc0Y2MxYzFmZTBmYzVlZmM5ZDk1ZTlkMWM2YjZkMiByZWxlYXNlMjUtbWFpbnQKKzYwOTk5IGVjN2YwODczYjY2NGRmNDYzNmVkMzFiN2JlZGUwZTAzMWEwMDY0OGUgcmVsZWFzZTI1LW1haW50Cis2MTAwMCAxZDg0YmY1Zjk0Nzg2YTg0NmMwODAyOGY5OWI2YzNiODI3YWNmNDYzIGxlZ2FjeS10cnVuaworNjEwMDEgNDdhNThjYTNlMTBlYjcwMjdkMGNjOTk0ZTNiMWFkZDY1N2ZiOTRiZSBsZWdhY3ktdHJ1bmsKKzYxMDAyIDM5MTVkNWY2NTBmYTlkZTA3YWJiNzFkMjYxMmM4NjFjMTJhNmU0NmYgbGVnYWN5LXRydW5rCis2MTAwMyA3ZGQyYzE3NDYyNjdkMmVjZTE3OTI4MTUzNWFiMGZlYWE5YWQ2NDIwIHB5M2sKKzYxMDA0IDZiYTUzMDhmN2JhNDE2NWI4ZmUyMGQ5OWVlOWJiNTNlMzAyMjYyMzAgbGVnYWN5LXRydW5rCis2MTAwNiBlZWM0YzFlOWU5Y2M4OGZlZDYxMjM4Y2NmNGUzZmViMTZhZWI1NjcxIGxlZ2FjeS10cnVuaworNjEwMDcgNmExM2ZlY2FmMmRmYjI2YzRiMTAwNjUxNDBlYzEwOGI0YzA3NzY3MCByZWxlYXNlMjUtbWFpbnQKKzYxMDA4IDRlYjVhNjY3Yzg4MmI1YTRlMjc0MTgwOGU3ZjZjMDQwZjZmNWJhNjQgbGVnYWN5LXRydW5rCis2MTAwOSA4MGUwYTI5MzBjNmQ1OTg1ZTU0ODQ3ZjJhYzRiNzMyZTBlNDFhMzYyIHJlbGVhc2UyNS1tYWludAorNjEwMTEgMjQxY2Y4MWEwNTA4Nzk3ZmNjNWQ5YjViMDFhY2NjNDc4OGFiMzUzYSBsZWdhY3ktdHJ1bmsKKzYxMDEzIDlmMTgzYWUzNDU4YmZiOGE5MzE3M2MzZjQyNjc3Zjc5YzRkOTYyZjIgbGVnYWN5LXRydW5rCis2MTAxNiA0MGQyNjlkNmRhOWM1ODMwN2MzYWE0NzdhNTI0MDg5NmE3OTVlZDIzIHJlbGVhc2UyNS1tYWludAorNjEwMTcgYTAxMjEzYTU0MjVkMWM0MDUxZWNhMmVkNzg5ZGQ2NDRiNTMyODMzYSBsZWdhY3ktdHJ1bmsKKzYxMDE4IDY2OTMwNDNkMjdmZDMyOTdjYTlmZDkxZTljM2ZlOGI2MmY3ZmYzNjEgbGVnYWN5LXRydW5rCis2MTAxOSA4MTBiZDY3NzM4NjM2ZWM4NTljNmY1MDI5MzE3ZDY3OWYxMGIwNGY5IGxlZ2FjeS10cnVuaworNjEwMjAgMTlkODUyOTQyZGRkZDIyYzEwOWZjNjg2ZjQ4ZDJkYjIxYWU1ZWFjZiBsZWdhY3ktdHJ1bmsKKzYxMDIxIDg1MzFmODhiNTc4ZTIwYTQyOTc2ZTMzNTZhZTFlYmZiMDcwNDc4ZGYgbGVnYWN5LXRydW5rCis2MTAyNCAzMDU3OGUwNGQzNWNkYzBjODYxNWE4Nzc3YmY2MTRjNmJiMGM1OGQyIGxlZ2FjeS10cnVuaworNjEwMjUgMjdiYWIzOTg5ZjYzNTNjZDcyYjNkN2YzZTAzMmMwODk0MzQ2OTg4NyBsZWdhY3ktdHJ1bmsKKzYxMDI3IDgxM2MxNDY4NThmNzhlMTI4YjExNDFmODFiNjQ1ODBjMTYyM2ViMWUgbGVnYWN5LXRydW5rCis2MTAyOCBjMTI2YmQ5YjUwNWJmODZiODFlYWJlNDc5Y2VmNmNiMjEwN2QyYmFlIGxlZ2FjeS10cnVuaworNjEwMjkgNmE5OTJiNjY4MGIxYjc2NDU1Y2UwZTIxMTNjZTQwMzliZDhhNzRkYiBsZWdhY3ktdHJ1bmsKKzYxMDMwIDFiMGViNzZlZjcyYWJkOTA4MmEwOTUxNGU4NzkxODdmY2FhODVjYTAgcmVsZWFzZTI1LW1haW50Cis2MTAzMiA5YjExNWM1ZTkxMTUyYjA3MjNmZmRlOTViOWI1ODEyYjE4YzAyYmE1IGxlZ2FjeS10cnVuaworNjEwMzMgOTdhMTk3MmI2NzJlN2I1YjUzNWFiMDNmZWY4ODJmMWYxZjgzNzY2ZCBsZWdhY3ktdHJ1bmsKKzYxMDM0IDIxYTVlOWE1NDgzYTUyMjQwYjUxYjYyYmRmOTFiNTY0MTJmMzVhYzAgbGVnYWN5LXRydW5rCis2MTAzNSA3ZWZhNGQxYmNlZDM4YzMwYzU3OTlkNTcxMjZmYzRlYmY1ODMyYWU2IGxlZ2FjeS10cnVuaworNjEwMzYgNDg0ODhmYTUwNzI5ZTRmMGJhMDA1YTVlMmIzMzYwMDM3OTY4MDI4YyBweTNrCis2MTAzNyAwMDJhNWFjNzkyYjFlNmE3Zjk5NjdjYTEwMjM0ZjgyZDYyZDlkNjc3IGxlZ2FjeS10cnVuaworNjEwMzggZWFhOGMxOTM5MTA4ZTAxZDE0ZGZlMDAyN2FlNWJmMGQzZTNmYTc5MCBweTNrCis2MTAzOSA4YzdiYTBlZDg0NDNiNTEzNzJmOWM3OWJlOWQzZDUyZWRkMGRhOTY2IGxlZ2FjeS10cnVuaworNjEwNDAgMThmZWQxNGIwNmI2MDY2NGZjMmZkMjBmYzMxNWFiZTY5YjRmYWE3NyBsZWdhY3ktdHJ1bmsKKzYxMDQxIGMwM2FmZjZkMDdmNTNiMTA2YzYyYzYyOTVmOTBjZTViNTZiZTE4MzcgbGVnYWN5LXRydW5rCis2MTA0NiBkODlmZTFkMmZhZGQ4MmEwY2M4MzYxMjhjMWE5MDM0ZDQwYzk4ODRiIGxlZ2FjeS10cnVuaworNjEwNDggYWRlN2FjODhkMmQwOWUyMGU2MjFiNjIxMTlkOGE3MWQwNmQ1OGU1MSBsZWdhY3ktdHJ1bmsKKzYxMDQ5IGFmOTI4ZmYwYzVjNjlkMWM1ODNhMWQ2OWU4MzE0YzBiOGY3ZDQ1N2IgbGVnYWN5LXRydW5rCis2MTA1MCAxYjZmYjU2OTk2MzQ1Nzg0MGFlOTc4MzdmMDMzYWM0MWFkMTgwMmM3IHB5M2sKKzYxMDUxIGJmOGVlNTkzY2JhZDAzYzcyNGU1ZTQ5NmEwZGVkZGY3ZGMzMTViNzcgbGVnYWN5LXRydW5rCis2MTA1MiA1NWVlZmI0M2VmNmYzYWQxYTAxMTc3ZWRhZDAyYzMxNjU2ZjQ1Nzc1IGxlZ2FjeS10cnVuaworNjEwNTQgYTc3ZTFjZjdlZDI1MjYyYTljZjM1MzQ3ZmQ4NmMzMDI3MzhjZDQ2MCBsZWdhY3ktdHJ1bmsKKzYxMDU1IGIwZmRlOTM2NjFjZTg3NTFlZGZjNmJiMzljY2ZjM2E0YjVmZDc4ZjYgcHkzaworNjEwNTYgMDljOWNlZWNkZDU2ZDA0YmYyMzcxOTFjZDE0ODZkNDc2ZDY4YzNhYiBweTNrCis2MTA1NyA3MTI5MzcyZjUzM2Y0MWIzNzQxNTI2YWY4MjY0OTk1YThjODk1NGU4IGxlZ2FjeS10cnVuaworNjEwNTggZGM1YjAxMDcyOTRjMGRjNGY3ZDY4OTUzZmU1MjcxMTEwMWQ1YWM4OSBsZWdhY3ktdHJ1bmsKKzYxMDU5IGU1N2ZmYTJiNWQwN2YwMTI1ZDZjNzg5ZjRiNTE0ZGY5NThmYmY2ZWEgbGVnYWN5LXRydW5rCis2MTA2MCBiMjk4Y2I0OTc1ZDJkZmRjMDEwZWJkZWEwOGM3YzNlOGYwZWMyNmE0IGxlZ2FjeS10cnVuaworNjEwNjEgZmNlNWFmNWNlMTZhNmQ3MGYwMTA2NTU5OWFkM2NiNmJhODIzNDUxZiBweTNrCis2MTA2MiA4YjUyZmY0MWUwZTI3OTYzMzBkYjRlNmMzZGUyYmE4NzkwYjQ5N2VkIHB5M2sKKzYxMDYzIGY4OGJlYmVlYjY3M2U5ODYwODQ4MGVmMTkyOTZjNzcxZmY0MzVkMDYgbGVnYWN5LXRydW5rCis2MTA2NCAzYTZjYTg5ZWY3NmQ0NzQyNWFkZDNkNDk1MWQ0Yzk5MjNhZmExNjZkIGxlZ2FjeS10cnVuaworNjEwNjUgMTdjOGVjODg5ZmY0MmIwY2YyNDIxYjU1ZTU1NzFmNTlkMmEzNzhiMyBsZWdhY3ktdHJ1bmsKKzYxMDY2IGM1ZTc3ZTBmMmYzMmZmYWY0MmM3NWE3NGRkY2ExZTc0ZjNlMDExNzIgcHkzaworNjEwNjcgMTQ0ZTg0NjcyZWY5MzZkOTcwODAxNWZkNzI1MjM0MzMyYWFjZGZlMCBsZWdhY3ktdHJ1bmsKKzYxMDY5IDQyODljNDEwNDI3OTAzNmVmYjg2MmQyMjQ5MjA4MGM2ODNkYWY0MmYgbGVnYWN5LXRydW5rCis2MTA3MSBmNmRjMDhhZDU2NGIxYzY5NmU2N2EzZmI0MjMwYzM5YjZiODdjYzljIGxlZ2FjeS10cnVuaworNjEwNzIgNGY2MzlhZjU4YTE5MGMwOThiNjY1YTM3YjFkZTA1YmI0NmQ4OTBmMyBsZWdhY3ktdHJ1bmsKKzYxMDczIGU4MWU0NWY4MDAyZThjMDlhM2NmMTA3MTI3NmNhMDc2MmUwMzc3ZjQgbGVnYWN5LXRydW5rCis2MTA3NCA0NWZjM2VjYjMwMjNlZDgwYzk3NTkwMThiMmI5MmVmZTdhMTAxZDNkIGxlZ2FjeS10cnVuaworNjEwNzUgOWIzODFlZDFkYjE0MzMyZTQxNGY5Nzk0MjI2YjIyNTRiNjZhYTRmMCBsZWdhY3ktdHJ1bmsKKzYxMDc2IDYyNGFlODdmMWM5NjFmZDkxZjVhMTU1ZmJhNjg5YzNkNjRlZmQxMjUgbGVnYWN5LXRydW5rCis2MTA3NyAwODhkZmMwZjcxYjQ5ODBjYjhlMjk1MzA2NWEwZWE0NzdmODk4OWQwIGxlZ2FjeS10cnVuaworNjEwNzggNGFlNDMzMTRiNzQ2MjhmOWY5Y2JlYzczN2E3ZWY5NDE2NjZiMzBjNCBsZWdhY3ktdHJ1bmsKKzYxMDc5IGJmMWFiM2JmNzk5Yzg2MzY4Mzg4YzI5YThjYjEyZjRiNzhkZDY5NDYgbGVnYWN5LXRydW5rCis2MTA4MCBjYWNkN2JhMTFiNzc1OGMxODkyOTYwMmZmMmUwY2ZiNmJjZjNjZjM3IGxlZ2FjeS10cnVuaworNjEwODEgMmIzNjcyNTBiMGNkMzM1OTE3YjMyMDI1NGVlOTg4NTM2MzRhY2JlMyBsZWdhY3ktdHJ1bmsKKzYxMDgyIGZlNzM5NGJjNzlkNjNlMjM1MjM5OGYxMjQwOTQwNDQyMTk5NmFhZmEgbGVnYWN5LXRydW5rCis2MTA4MyA3YWZlZjhmNDNlNGE1MmUwODAxOGQ2YzljYzAxNDIyODgwMzcxMDE1IHB5M2sKKzYxMDg0IGM1N2NiMmY4YzM1MDUyYzU0NjQ2Mjg4MGM2YTc5MzBlNWEyMjk5MTEgbGVnYWN5LXRydW5rCis2MTA4NSBkMTMyM2ZjZjNhYTE3OTUzZGMwMjRjNjUyZmIyMGI2ZTdjMDk0MGQ0IHB5M2sKKzYxMDg2IGYzM2Y2NmEyMDgyZmJmMzI2ZmY3NGU2MmY0YmYyNDRlMDAxNzMwOTggbGVnYWN5LXRydW5rCis2MTA4NyBmZmRkMzFmMWNkMjA5NGQyNmI4YjBjMGFiNGY4NmI1NTA5ZTY3MzkxIGxlZ2FjeS10cnVuaworNjEwODggY2E0NWViNzFmMmQyYmEzMWVjZDJhZmIyYjJmZjVkZWJiZjEzNWUwYyBsZWdhY3ktdHJ1bmsKKzYxMDg5IGU0MjVkZGE0ZjYzMDA2MGRmNmFlODJhYWZlOTUxNjAyZDE1MzI2YzEgbGVnYWN5LXRydW5rCis2MTA5MCBmMmYzM2RiNTg5MjAwYmVjM2JkM2I3OTY5MjgwOTA1NGM3ZTEyOTJmIGxlZ2FjeS10cnVuaworNjEwOTEgN2Q3MzQ3ZGQ5NGU4NzdkNzY5OWQ2N2RlN2M5MmU1ZmQyZTZmNGZhYiBsZWdhY3ktdHJ1bmsKKzYxMDkzIGY3ODg0MTY0ZjA4ODliZWI2MTIwYzFlMjY2NmZiNTNhNjdlNDQ2N2IgbGliZmZpMy1icmFuY2gKKzYxMDk0IDJjOTMxODNiOGEzYzI2OTQ0NmM1MzRmMDVhYmMyOTk0OTQ1ZTkwMmIgbGliZmZpMy1icmFuY2gKKzYxMDk1IDZjNDYxMjI1NWY2MDUyYzJhYWE0OWM4MTdkMmE3ODYwMDJmN2M2NjAgbGliZmZpMy1icmFuY2gKKzYxMDk2IGI3OGMzYTQzNzFkNTExMTBhMzc1NDY4ZDcwNGU2MGQyYjUxNjQ4ZTAgbGliZmZpMy1icmFuY2gKKzYxMDk3IGQxNzY5MGM1MDc2NjY4MzhjNmNiOWY3YjNhM2M2NDI4MDUwYTlhMjAgbGliZmZpMy1icmFuY2gKKzYxMDk4IDY1OTJlNWE5MGMyY2Q4NGYyMTBmZDlmNjZkYTJhNzQ4ZjQ4NGI1MWUgbGVnYWN5LXRydW5rCis2MTA5OSA4YWFmMTQ5NWRhMzk1OWNkODQ0Y2I1YTZkZDE2ZjNlMjlhMzYzMDE0IGxlZ2FjeS10cnVuaworNjExMDAgM2U0MzVhMjExMzU2OTY4ZDdlNDBlYjIzMWI5ZTZiNWE1ZWIxMzNhMyBsZWdhY3ktdHJ1bmsKKzYxMTAxIGQ0NDM0ZjAzYjk3MDIyYjI3NWYwNDU2YmEwMzY2MmFmMDNhZTg0ZGIgbGVnYWN5LXRydW5rCis2MTEwMiA5NmQ1YTE1NzMxNmUzNTE4MDkyNzdkODNlNDYyOTNmZDRlNzhiNThlIGxlZ2FjeS10cnVuaworNjExMDMgOGMzYzViNGVlZjU1NTcxOTM5ODU2YjMzMTdhMjA2MjUxMWI2ODE5ZCBweTNrCis2MTEwNCA4ZGQzMGZlMTFhNGIzNGQxMDc3YmU4MDhmMmUwZjE0YWRiODQzNDRiIHB5M2sKKzYxMTA1IDExODhlZGUxNTczNWI5Yjg2OTkxMGNjNDZmODdkNTdjMTk3ZWM2ZjUgbGVnYWN5LXRydW5rCis2MTEwNiBjYzIyMDc0NWU0ZTU5M2U2YzM2YjZmNmRmMmY3NGE1NDBjZDgyZTNlIGxlZ2FjeS10cnVuaworNjExMDcgNTA0YjQzNTdiZGRkMzhlNzNhM2NlZWE2MjZkMjk5MDMwMDQxMmUzMyBsZWdhY3ktdHJ1bmsKKzYxMTA4IDJkMmIwZTE1NWYxOThmYmM2ZjYwN2YxYzgyOTNiOGU4YTYwOTg1NjcgbGVnYWN5LXRydW5rCis2MTEwOSBiZjNmYTM3ZmU3OWNkMDM4YzJlZDNmYjY0MmNiNTY0NDZjYzc5NDk5IGxlZ2FjeS10cnVuaworNjExMTAgMGNiNDgxOTU2NDUyZmM1ZjVjMTAxZWUzZjI0MDhjOTk2NTVhYWE4ZCBweTNrCis2MTExMSAyNDI1NDQzMGU4OWEwYzhlMDVkNzVkOThmODBkNmJlMzI2YmE2ZTY2IHRydW5rLW1hdGgKKzYxMTEyIDAxMjhjZTc3MzU0ZjYwNTI2ZGI4ZGM4N2VlNTA3NjkzNGIzYmE0YzIgcHkzaworNjExMTMgNzEwZDUyNWIwNTRjODFlYjJjZTdiNjJlYWM0OWEyMTZmNGRmMDg4ZiBsZWdhY3ktdHJ1bmsKKzYxMTE0IGMzOGRjYjdkOTRhNmRhOWJkZmNhYjhmNDdmOTQzZTUzNzI4ZDI1ZjUgcHkzaworNjExMTUgZTRmZmU2NDk5NTQ4MWE5NzEwNWI5MzAwYjg5ZWZkN2NjZWM2ZjViOSBweTNrCis2MTExNiA1OTc2MmQ2NzE0YTMxM2I5NWQ5MmQ1YjNkZjY3YTYzNWEyYjAwZTFhIGxlZ2FjeS10cnVuaworNjExMTcgOTcyZmM3ZDdjYjcyNjk3OGMyODU1MDI2YzQ0MjhiNzFlNzQxNTEwMSBweTNrCis2MTExOCA0M2UwODQ4NDdlNTMzMjM0MDFlOGNmN2MyZDAyOGMyNjhjY2Y4MDI4IGxlZ2FjeS10cnVuaworNjExMTkgN2RhMzZiNDljOWU1YWFlMmY4NTA1ZDNlYzA2YjM2YjYxMGRhYWRhMiBsZWdhY3ktdHJ1bmsKKzYxMTIwIGM1NDY1MjM2Njc3MjhjOTU3MDdkZDM4NWNlMGFiMjc4MDZiNWUzMTMgcHkzaworNjExMjEgZGJmMWRkYzVmNDc5NTM3OTQ3NDVmNmZjOWZkZTJlNTQyOWRhZTBmMyBweTNrCis2MTEyMyBiY2U0YzQwZGY3ZGY3NGVmZDg3ZmVlMjkyMDllYjFjZTMzNmYxOTQzIGxlZ2FjeS10cnVuaworNjExMjQgMTA5NjJiM2Y3N2E5YjM4MWI2MzE4MTZhY2IxNmE4ZmM0OWNkNjU5NSBsZWdhY3ktdHJ1bmsKKzYxMTI1IGZhY2YwMWYxNWIxNTM1NTU5YzJiYTA1YzRmNWFhNzIwNDZiODhmMWMgbGVnYWN5LXRydW5rCis2MTEyNiA5MzdhM2M1YWY2OTE5MmI4ZWQxOGY0ZTdhZWY2YzFlNTllY2QwZGI4IHB5M2sKKzYxMTI3IDhjZDk4NGMxN2RlYzg1YWMwNzM5MTg1ZDBlY2NlN2QwZTQ5ZmM1OGMgcHkzaworNjExMjggYjI2OWMyZDAzZmQyZDZhMjcwOGVjZjY2MzBiN2ZlYTIxOTI1YmE5OCBsZWdhY3ktdHJ1bmsKKzYxMTMyIDA5NDA3MTNiNjcyNmNhMjZmM2JkOWU2ZmY0NWMwZTg3YmY1ZDBmN2UgbGVnYWN5LXRydW5rCis2MTEzMyAwNWMzOTYxOTFlNDMyOTFmNzYwYmMyMDI5Mzc5M2Y2YTk0ZmUzYjU3IGxlZ2FjeS10cnVuaworNjExMzUgNGE5NTg4YjFlNGI5NWRmMTNiZDUxMDhlYmEzNDdjMDYxZWZlMjMxNCBsZWdhY3ktdHJ1bmsKKzYxMTM2IDg5Y2ZiMzhhNGI5ODYyM2NhMDU1MjZkNmFiOTIyNjA3ZWQwOGVlMGYgbGVnYWN5LXRydW5rCis2MTEzNyAyMDdjYTBhOGFmZDAwMjMwYWJiNWVjZTI0NzdkNjhmYjczMGIyYTQwIHB5M2sKKzYxMTM4IGNhMTFjZjI0ZWI4NTVmNWM4NmNjMWM0MGYwNDdiNDY1Y2JlN2U0OGEgbGVnYWN5LXRydW5rCis2MTEzOSA2N2Q0MDQ4NjY4NDYyMDk0ZWRmM2VjZTc1NmY0MDI5YTYyZmQ1MDc1IGxlZ2FjeS10cnVuaworNjExNDAgMDJhMDFlNTc4ZDZjNWEwYmUzNDM3ODMwNjY2MGMzZmNjNGQ1OWM2MyBweTNrCis2MTE0MSBiN2VlOTA3NGNhMGViM2I3N2VmZmQyYjIzMWIzMDkxNjc5MTYwZWEwIGxlZ2FjeS10cnVuaworNjExNDIgZmM2ZjkwNTQ1Y2I0OGU1Y2VmNWY2ZWNiYjEwZmU2ZWNjZGNkNzk3YyBweTNrCis2MTE0MyAwMDIzYzA0MjI4ZTZiMzUzMzA1ZDVjYWRhYThmZTY1OTE4MzE4MTA2IGxlZ2FjeS10cnVuaworNjExNDQgODk0NmUyN2E0NTYzYmMyZDNkYjI5ZTQ2MGY5OGMxODFhZGU3NWRmMiBsZWdhY3ktdHJ1bmsKKzYxMTQ1IDliOGZjNDA1ZjliMDRmYzUxMWE2YzIzODExMTk5NGU4MTIyODVjNDQgcHkzaworNjExNDYgOWFkNTQyZWEwNWJhMWRhOWIwMDYxZTJlZTkyZThjOTUwN2Y0MDY2MyBsZWdhY3ktdHJ1bmsKKzYxMTQ3IDQ0ZDEwZDM5MDkyYzY1ZWMyZmViY2NhZTcyNmM4NjJmZjRiODc1NDcgbGVnYWN5LXRydW5rCis2MTE0OCA2YTA0ZGJiMGQxNGI0OWQxNWYzMGRhM2Y3N2QzOWY1ZjY0YTA5ZTY2IGxlZ2FjeS10cnVuaworNjExNDkgMzEyNzk1NmYzYjMzZTdkMWRmYTJmNWUyNzIxNTU4Njg4Yzk1NWJiMiBsZWdhY3ktdHJ1bmsKKzYxMTUwIGE4ZmJkOTI3MTRhOWE5YzQ3MjI3YjhmMjZlODc2ZjQ0ZWU4MjYwN2QgbGVnYWN5LXRydW5rCis2MTE1MSAyZDBiZDA5NWM0MjBiMDcxMTAwMGQ5YmU2Njg0OGY2Y2ZkOTcyYjNiIGxlZ2FjeS10cnVuaworNjExNTIgMGFkZmJhOGFlOTU3MTNjNGUwZDcyZjE1ZDA4OTZkYWZiZmE2YjhkNCBsZWdhY3ktdHJ1bmsKKzYxMTUzIDgyYzNiMGI1YWE5MjU4ZDg4ZTE3Zjk3ZDE1ZjA4ZjA3MmY0OGU3ZTMgcHkzaworNjExNTQgYzA5ZGI3OGJkMDY2Y2NiMTJkMTU4Nzg5ZGJkZjM0OThhNjEzODkzYSBweTNrCis2MTE1NSBjYzU1NDNiNTYxMGIyZDA2NTI4NDQ0NjY4NDk2OWRlZDllZjY1ZjQzIHB5M2sKKzYxMTU2IDBlMDE2OWIwZWFjYzZkZGY4MDY4ZDVjN2NkMTg0NzNhN2MzMGI5ZDkgcHkzaworNjExNTcgNWJhMDY2OTBjMTg0Nzk5YjA1YzVkYjYwMTEwZTIzZmE4YzcwYTUzOCBsZWdhY3ktdHJ1bmsKKzYxMTU4IGRmMTU4MjdmMzQ4ODFiOWFmMDkzNjM1MDgxM2NlZDVjMTIzYzgyMzAgcHkzaworNjExNTkgMzYyYTQ2ZTdjMzNhMmE2YWY2N2E3OTc0MzBmZDY0ZmI5MDU3NjY2YSBweTNrCis2MTE2MSAyMGE0MjY3NGIxMTEwNGFiOTg1ODY5YTFkYmU3NGQxNjBlNWY1NGQzIHB5M2sKKzYxMTYzIGNkMTVhNWU5YzFkZTU5YmJlZmRhN2Y2ZmY4NWY0NjEyMDA1NmQzZjQgdHJ1bmstbWF0aAorNjExNjQgYzEyNWM2MWUwNmE4NjA2NzMyMGI1MjZkODAxZmE5ZjdjZWJjZGY1NSB0cnVuay1tYXRoCis2MTE2NSA3MGM0MWJkNjgwYjVlN2NiMDFhNDI1NmJlY2U5YjMyNGVhNjRkMDgwIGxlZ2FjeS10cnVuaworNjExNjYgMzQzOWZhMjE1ZmFlYzBhZTE4Y2IyODQzOTRmMWNjNTA0NTk1ZGJlYSBsZWdhY3ktdHJ1bmsKKzYxMTY3IDViNzA3OGVjY2VlODM2OTdmNTQ0MTc0MmRmOGU5YWRjNTRlN2NjODIgbGVnYWN5LXRydW5rCis2MTE2OCBhNjJmOTVhNGFkZmM1ZTJhZDI2MzZlMDc2NDliYmM3N2E0MDc1NTAxIGxlZ2FjeS10cnVuaworNjExNzAgNDA2MGRiMTI2ZWNmMzZjNTA1NDI4YzI0ZGM2ZGI1NGYxZDU3YWM1OSBsZWdhY3ktdHJ1bmsKKzYxMTcxIDhiYmU1MzFmY2QzYzhjYTcxZjViNDFkMTI2YjM4ZGUxYzdjYWVlNGQgbGVnYWN5LXRydW5rCis2MTE3MiBmNzJiMmRlOTk3Yjk5Mjc4ODVhOTRjNzM5YzlhYzk3ODFiMjg3ZmJkIGxlZ2FjeS10cnVuaworNjExNzMgOTZjYThjN2NlZGM0ZDAzMWViYjIwOGU1YWRhOTMxOGU2MDhjYTYyOCBsZWdhY3ktdHJ1bmsKKzYxMTc0IDc2MjhjYjQwM2M1M2UxYTM2YWUzZDJmOTQ4YjE3MTU1OTZhNjYzNjUgbGVnYWN5LXRydW5rCis2MTE3NSBiYmRmMDZhODZhMjQzMjk4YjIxMDc0ZTlhZTUzY2FjY2FjMDg0YzMxIGxlZ2FjeS10cnVuaworNjExNzYgMGE4ZWVjYWM1YWQxZGM5MzQ3ZGU0Y2FiNDcyNWI4MTYxMWYwNWZlYSBsZWdhY3ktdHJ1bmsKKzYxMTc3IGY2NTNjMGI4OTE2YjhlNTY1YjcwNzY2ZDkxYTNmMjI1MGQ0ZTY2ODggbGVnYWN5LXRydW5rCis2MTE3OCA0NzMyOGQ3NmU4YWJiZDE3NjMxZWQ2NjgwNWI3NTJlOGZjMTVhM2I4IHJlbGVhc2UyMy1tYWludAorNjExNzkgNTRmMWNiOGE4MWY2NjAyNWM3ZWYxMjZlOGU3ZTQ0ZWI0MDM1NmQzMiByZWxlYXNlMjQtbWFpbnQKKzYxMTgwIDA1NjUxMzBkN2Q5ZjY0YzBkZjQ0MGU1YzIxNWYyYTRkZTgzNDYwY2MgcmVsZWFzZTI0LW1haW50Cis2MTE4MSAxZjdkNjI4YzcwYTlhZWZlNzYyYzJjMzIyMTA4NzZmYWY4ZDY0Yzc4IHJlbGVhc2UyNC1tYWludAorNjExODIgN2ExZmM2MWQ1YzNlNDVmM2EyMjE1ZDQyY2E4NTY4NjFhMTgwZDExOSByZWxlYXNlMjQtbWFpbnQKKzYxMTgzIDVjY2I2ZWIyMDJmZjIxYzAxODAwNDc1NTVlY2E2NjliYjkyNmNlMTcgbGVnYWN5LXRydW5rCis2MTE4NCA4OGMxZTE3Y2VmZmNmMzU5M2ZiMWI1YjBkNjE3NDZhZWMwYWU5ODFjIHJlbGVhc2UyMy1tYWludAorNjExODUgODkzYzdiZDRhOTJiZDg4OWE4NWU2OTFmNDkxODhjMzdiMGE3MjM1NyByZWxlYXNlMjMtbWFpbnQKKzYxMTg2IDU2NjgxZDViZWU3MDkzMGJjNGNkODFjMjg5MWZjZTRjMzBlYTY3MGEgcmVsZWFzZTIzLW1haW50Cis2MTE4NyA0ZDcxMzAxYTZkNGI3ZmE5NzhlMGRlMmNmMGFiMjcxYTE0ZWFlMjZiIHB5M2sKKzYxMTg4IGEzMWI2NTA1MTVjYjljYTQxYzU3YzE1ZDRiZGI3M2JjMTM4ZWRjZjAgcHkzaworNjExODkgY2YzYTgwZjFkYTdkMDdhMDM0ZmU0NzEzZjA0OGYzNzk4ZTZhNDllMSBsZWdhY3ktdHJ1bmsKKzYxMTkwIDYwNjhiNzVlYzI3YTBmMTljNzIwMmM4MGUwODBkZTdmZTNkOWY0YTIgbGVnYWN5LXRydW5rCis2MTE5MSA0NGFkNzhmZTM1ZmFiMTMxN2NmY2QwMzE4N2Y0NzY4NTExYWYxZTY4IHB5M2sKKzYxMTkyIGI5MzJmMDM1ZmIzZWY0MzZkYWIwMDYyMWI1M2U3ZjMxM2ZkMDBmZTIgbGVnYWN5LXRydW5rCis2MTE5MyAyNGY0MjMwYmFlYmU3ZGZjNmNiMzc2OWZlOTc5YjMxZGE2OTE3NmE3IHB5M2sKKzYxMTk0IGM2ZDlhMzRmMDI0ZmRiYTQ2NmE5MjI3OWUzZjExNTZjMjkxN2RlMjIgbGVnYWN5LXRydW5rCis2MTE5NSAyYzczYzU4MzNmMjAwNWFlOWY1NmRjY2JjNWY5ZDIwOWEzMjA1ZjJiIGxlZ2FjeS10cnVuaworNjExOTYgN2U0Yjc1M2FmZWM2ZTE3OTRlMzdhYzhlZGM2NDMyNTFlNDM1ZDJhMSBweTNrCis2MTE5OCBhNTUxMzZjNzhiNjA0MWQzZWU2ZjUwNWZlMTFkNWU5YWI0NTViZmZmIGxlZ2FjeS10cnVuaworNjExOTkgYTE4YTQyNGMyYmQzNGU3ODdmOTIzMzg3MTZkODJkN2Q0OGU5MDcwNSBsZWdhY3ktdHJ1bmsKKzYxMjAzIDQxYTcwNzc0NGJjODk4ZGNhM2RmYjBkNGI1NzcyZjUyMjMxNTFmZjEgbGVnYWN5LXRydW5rCis2MTIwNCA2MjgyZGZkNWRjNDk0ZjQwOTFiYTMyODUyOTViNjlhM2JlYjQ3MzJjIGxlZ2FjeS10cnVuaworNjEyMDUgODgyZWJhMTQ1MTE5OGQ1YTBmZmQ4MWJmMjE3OGZmMTdhZGY4N2IzMyBweTNrCis2MTIwNiAyNTQwNmIzZmY5N2E2ZmQyNWRkNTUxMWRkNTA1ZTMxOWIyOGU0YTg5IHB5M2sKKzYxMjA3IDY1ZWY2MDhkZDY2Y2IwNDMyMGI1YzI3MWNmNTcwNWNkOTliMGU0M2YgbGVnYWN5LXRydW5rCis2MTIwOCBlOTllMWQ4YjgwNzc3MGVlOGJlNmIxYWIzNTE2NDUwMzBkMjcwZDkzIHB5M2sKKzYxMjA5IGM1MThmMzk0NzNmZDBiOTAwM2Q4MzgwMTUyMjM2NWJlZmJjNTJiYWMgbGVnYWN5LXRydW5rCis2MTIxMCBhMTU0ZjE5ODI1OTI4Y2JhZjFmMmZjNDMyNzg5YmRlM2YyZTdhNDBlIGxlZ2FjeS10cnVuaworNjEyMTEgMDcyMzkyZWQ0ZWE2OTEzOTE3NzFmNDA5NWQzOTc4NmZkMDg3NTU5ZSBsZWdhY3ktdHJ1bmsKKzYxMjEyIDg0MDEzOGUyNDk4MGM4OTk3NDYzYzNkODY2NDMxNDAwMDBiZDBhYzEgbGVnYWN5LXRydW5rCis2MTIxMyAyZDU1MWQwNDYwMjJlMWI3NDg2NmE2NTU0MjM3OWJlOTJmYmQzYmI3IGxlZ2FjeS10cnVuaworNjEyMTQgNGQzNjFmMDE2NDFjYjYxMWFiM2ZhOTAzYzBlZjM0OGNjNmZhMzk0NCBsZWdhY3ktdHJ1bmsKKzYxMjE3IDkxZDc1NzJlMzVhMWNkMDEwZWEwMTRiZDM4ZDQ2N2E3YzAyMjhjNzkgbGVnYWN5LXRydW5rCis2MTIxOCBkN2U0YzYzZWJjYWQwN2JlNmIyYmMxOGUwM2MyNWVkMWMzMjY0YTI0IGxlZ2FjeS10cnVuaworNjEyMTkgNTQ4OWFmNjg2NDA4YzFlYzA3MmJhMGI4OTZiZjMzMWIxMmVkMmRlMSBsZWdhY3ktdHJ1bmsKKzYxMjIwIDNmYzA5Y2NmMDE0MTg1ZDJjYjRjZWYxYzVhZTM1MDk2MTk2NTBmODcgbGVnYWN5LXRydW5rCis2MTIyMSAwZTIyNGFhMjE5YTIxYjdmYTIyNWRhMTNiMTVlNzEwMTRjMDk0MDI4IGxlZ2FjeS10cnVuaworNjEyMjIgZjNlYjQ1N2U5NmE3NWMzZjk3N2U1NzBiMjVlMzFiZDgxMmRlNWYwZSBsZWdhY3ktdHJ1bmsKKzYxMjI0IGU0NGM3NDViZWMwYmFkYjc5MDE2ZWFjZDBjYTZiMmYzY2ZlODEwYWYgbGVnYWN5LXRydW5rCis2MTIyNSA0ZWEzNmMwMTJhMmRlNTIyNzQyMTIxZDQ5MzI2NTI5Yzk4YzBmYjE5IGxlZ2FjeS10cnVuaworNjEyMjYgZGQwMTZhNmRkY2M1YTkwMjhmMDViYTUxN2FkZDM3Nzk0Nzk0YmE5ZiBsZWdhY3ktdHJ1bmsKKzYxMjMwIDk3YmVhMzkyMzZhOTNiNjljNDRmOTFiZGE5NDI2NzEzNjI2MmNlNTggbGliZmZpMy1icmFuY2gKKzYxMjMxIDJkNDI1MzAxNWY1ODQwYTE0Y2I0ZGFhZGQ3NzA3OTA4YmE1OTJjMzAgbGliZmZpMy1icmFuY2gKKzYxMjMyIDk2YWE2ZDAyN2UyZTc2OTE4MTZlNDliMzA0ZDk3NTgyODE0MjFjYjMgbGliZmZpMy1icmFuY2gKKzYxMjMzIDU1NDZkYzRhNDI2YWFhNjY5OWI0Yzc3YmQyMWFjZGU2N2JiYzUzN2YgbGVnYWN5LXRydW5rCis2MTIzNCBkMzg3YjAxZGJjMWM5ZGFhZjkwNjZiMTE2ODJlN2M5NWY1MzMzM2IwIGxlZ2FjeS10cnVuaworNjEyMzUgOTFjYTk1NDk5MDZhY2FiYzlhYTY1N2U0MWY2YzI1ZTAyNWRjNDdiZSBsZWdhY3ktdHJ1bmsKKzYxMjM2IDQ5NTcwMGVlMzM0NTZmNzY0Y2VjMWMxNDUyOTUyNjhmMTM2ODJiNTQgbGVnYWN5LXRydW5rCis2MTIzNyA4YTVjNzVlZmFlNGMyMGJlOWE3NDE5YjhkYjEwYWUxZWMyNTY2ZjBmIGxlZ2FjeS10cnVuaworNjEyMzggZGQzMThjM2Y2Y2I3OWE3NDk1OWJmNmEyZjUzNTFhYzJmNGYxNDRkZCBweTNrCis2MTIzOSAwMGNiMGEzNWZiNDliMmZjOTdmNmM3NGNiZjNjNzRjYTI1MTZkYWQ1IGxlZ2FjeS10cnVuaworNjEyNDAgZmYzZTlhZWFhNjkyMzViODkyNTkyMDVlZWEzMTY2ZTdjMWU2MzEzOCBsZWdhY3ktdHJ1bmsKKzYxMjQxIDMwZmE2Nzc3MDk2ZjIxMDJlZDdkNGNjYzg3NjJhZGRiMzY0ZWE2NDUgbGVnYWN5LXRydW5rCis2MTI0MiAxMWU5ZTM2NjdiMzY1Y2RlZDc3ZThjMTc2ZWMyOWE5MjFjYjA4MmM3IGxlZ2FjeS10cnVuaworNjEyNDMgYmVhYjllMTBhMThiZGU5NzhmNDI2ZjkwYzhmODlhOGUwOTA4MmI2MiBsZWdhY3ktdHJ1bmsKKzYxMjQ0IDk5NjBmZDJmNWVhOTQwODVhZWU2OTliY2FkOTgwYzUwNDU1YWY5ZWYgbGVnYWN5LXRydW5rCis2MTI0NSAxYTY4ZWNlMTU0N2FiNDdmNzI5N2NkZmJlODYzYWZkNmRjZGFiNWE1IGxlZ2FjeS10cnVuaworNjEyNDYgMjM0NDAxYWRkMjk5OGZiZmE1NDU3ODQ4YzVmNDk4NTJiMzIzZTRmYiBsZWdhY3ktdHJ1bmsKKzYxMjQ3IGM5ZDY2YmRiY2NjZDQ0YTM1OWM1YmI4MzgzYjRlMmFkYjVjODFkZTUgbGVnYWN5LXRydW5rCis2MTI0OCA0MzYxMDUxMjU0NDU5MWY3OGU4N2UxZDA3MGZlYjcyMzc1MzZhZjMwIGxlZ2FjeS10cnVuaworNjEyNDkgZjUyNDY5MTFjOTAzZjBjM2ZlZTFmNTRmYThlOTEwYmUxMzVmMGI5ZiBsZWdhY3ktdHJ1bmsKKzYxMjUyIDBjZDRhZDFjOTE1M2VhOGExNDE2NThiNTE1MjdjNTQ4MTNjMjNiYjEgbGVnYWN5LXRydW5rCis2MTI1MyBkNDFhNDIwNjQwNWMxMzVmZjBkNWQyOTFlYWI2ZmU0ZTE2OTQ2N2RmIGxlZ2FjeS10cnVuaworNjEyNTQgMjIxNmIxMDBiMmQyZWRlZmQyM2ZlYWRhZjU2YzFlZWZiOGVhNmIwOCBsZWdhY3ktdHJ1bmsKKzYxMjU1IDQyODg5YjFhN2RjMjU1ZGQ4MDUwY2Y5MzA4MGRiODZiZGFkZjE1MTggbGVnYWN5LXRydW5rCis2MTI1NiBjMTk3ZTE4NDQ5YjQwNGY5NTNhNTY5NzU1YzgwYWQxZDA5NjJmYTYxIGxlZ2FjeS10cnVuaworNjEyNTcgZWVmYzYwNGFkOTM1YWI4NDMwNjExNmQ5OTZlNTg4NjMxNDVkNDc2NyBsZWdhY3ktdHJ1bmsKKzYxMjYwIGQwYmUyYzM2Y2JmOGQ3OTkyMjBlZjkwMGU1OGRmOTc1ZWJlMTE0MjEgbGVnYWN5LXRydW5rCis2MTI2MSA3Mzk1ZWQwZjBmN2Y3NzQzOTY5YmI5N2ZhNjI3NDg1NDk5OGVhYjY3IGxlZ2FjeS10cnVuaworNjEyNjIgOWIwNDk0MTY3M2YxNzNmMjE0Yzc0OTIzMjI1NzY5ODEzODdkOWMyYSBsZWdhY3ktdHJ1bmsKKzYxMjYzIGVmODkzMzkwNDg3YmFmZDAxZTg4YWZjOGUzZGVhNDhjZDRlYzc5ZjAgbGVnYWN5LXRydW5rCis2MTI2NCA2MWQyMjcwMWE1ZTVlYjYyNmFkN2RkMDlmZjA2MTBhNDVjZmZkYmU2IGxlZ2FjeS10cnVuaworNjEyNjUgYjI2MmJlY2UxMzIzY2MzZTkxMWNkMDFjMTlmZGU0MWYyMGEwNDg0ZSByZWxlYXNlMjUtbWFpbnQKKzYxMjY2IGI4ZWY3MWIwMTQ0NjEwNzY4YTU4NGNkMTQ4NjE0MzBkOWJlOTUzMzAgcmVsZWFzZTI1LW1haW50Cis2MTI2NyA0YzQ3OTkzYWZiMWIxMjMwZGNhZjlkMzA3NTNiNmViMTZiOGVlMzE3IHB5M2sKKzYxMjY4IDBiOGIzZTY2M2UzYTE1Yzc2NDdlYzE4MzdiMWE3NmY1MTRiYmJkMWQgcmVsZWFzZTI1LW1haW50Cis2MTI2OSAwNjVjNGE3NmFjMDFmMTVjYTRmM2JiMzQzMDE4YzAzYjI0MGIyYmFhIGxlZ2FjeS10cnVuaworNjEyNzAgMTU3NDZiZjRhMGE2M2M0OTkwOTM4MzI3NmE5YWExY2Y0ZTk0NjM3MSBsZWdhY3ktdHJ1bmsKKzYxMjcxIGE0YzI2NTU2NWNiNmI2Nzc0NmM2YzRkZDIyNTMxNmU3NzQ5YmQ2NDEgbGVnYWN5LXRydW5rCis2MTI3MiAzOTgwMzEzZDliOGIyN2MwZTIyMzcwY2YyMWM4YjQ2MDM3MTUyMmRkIGxlZ2FjeS10cnVuaworNjEyNzMgMzZmZWY5OWFmMThkMTIxNDNkMzY4Y2RhOGUxODEwMTE0YTY5ODAxNiBsZWdhY3ktdHJ1bmsKKzYxMjc0IGU5YmU2YWViNGRmMDYyMWZiMjkyMThlNTM0NGVlNjhiMWNmNzdiZDUgbGVnYWN5LXRydW5rCis2MTI3NSA4OThkYzBmOGFiNjM1YWY3ZTg2ZmEyMjlmY2MxODEzMzFlN2JjZGEwIGxlZ2FjeS10cnVuaworNjEyNzYgMTdiMmVhMGFmYTYxMTg4ODI4MWEwZjI0OWIwYzZlYjEwMTM1YzhlNiByZWxlYXNlMjUtbWFpbnQKKzYxMjc4IGFmMjY3ZTU0YmYxZGRlOGQ4YjY3ZGYwMjlmMDc5OWVhZDA3ZTg0ODMgbGVnYWN5LXRydW5rCis2MTI3OSBiYmFiOGY2NGY4ZDYyYzU2OWM2ZDNjODAxZjE4YzkzM2JkNDA4NzJlIGxlZ2FjeS10cnVuaworNjEyODAgOWVjYjAzZWYxYzYyNDE5N2I1MjM5NmM3NmM1ZjExNmRjNTg1MDMzNSBweTNrCis2MTI4MSA0ODViMjE5NTQ3NDYwOTdiMjUwNTIyMjRjZTQ5ZTE2MThlZTBkMTU1IHB5M2sKKzYxMjg1IDQ0YWE1OWY4NTkxZGFhNmU3NzRkYThjNmFmYmM1Mjg2ZDJjZTViOTYgbGVnYWN5LXRydW5rCis2MTI4NiAwYmU5YjFjZjFiMTYyMTE2N2JkYWEyZjc4NTcwZDhjYmFlNDViZDgyIGxlZ2FjeS10cnVuaworNjEyODcgNzEyMmZhNjU2OTdiOGE3M2U2MTBkYjQ4NjgxM2EwM2U5NmEzMmFkOCByZWxlYXNlMjUtbWFpbnQKKzYxMjg4IDVmNDliNTY5ZGVkZjExNGM1ZmVjYmFiNWNkNjAyZjllMmE4NTlhOGIgbGVnYWN5LXRydW5rCis2MTI4OSBhODc1NGMwZGI1M2Y1MDMxM2Y1ZGZjNDE3OGVlNmUyN2Y0OTQ3ZmRmIGxlZ2FjeS10cnVuaworNjEyOTAgMzQzNTk3YzdkNjgyYjM1NTI1ODAzNTJkZWRkZDBjZGIzNjk3OGEwNCBsZWdhY3ktdHJ1bmsKKzYxMjkzIDliYmU1NWY5ODY3ZWU5NDg1NGUzNDVmOWFmNzg3ZmNkZTkxNDQ1ZjcgcmVsZWFzZTI1LW1haW50Cis2MTI5OCAzOTFkZTE0MzIyNmZkN2IzNzc5NmJjOTc4ZmYzZjc4ZjA1YjA4OTE5IGxlZ2FjeS10cnVuaworNjEyOTkgZjg2ZmE1ZmVhZjMxNGRmYTk3YjA2MGIwMWJhMjM2NzQyMzM3ODQ3NyByZWxlYXNlMjUtbWFpbnQKKzYxMzAzIDljZjcwNzI5YzIzZjIwODhiYjUwMzBiMDkwOTM5YjM1YmQyMmRlYWUgbGVnYWN5LXRydW5rCis2MTMwNCAzN2FhNDE2YjRjNDdiNGVmNWY5ZjA5M2FjODY4NzU3NDIzMGExNGJhIGxlZ2FjeS10cnVuaworNjEzMDUgZTVhYWRjMDVmNmY1MWVjZDViZDA2Zjc2MmFmYjE2ZTAxMzcyMWY5MCBsZWdhY3ktdHJ1bmsKKzYxMzA2IDQ1MDUwZDM3NmQ1N2ZiODZmODA0MjQ1ZmJmYzA2OGVmNmZmOTE0OWMgcHkzaworNjEzMDcgYzI3YWFiYWUwNmZkYzc1YjIyOGY2OGQzZDkzZjEwNGZkM2EyMzJkMCBweTNrCis2MTMwOCA5YTcyN2M5ZjliYWEyNTc4NjRkNTNhNjdlMmQzYTAwMjFhOTk3YmNhIHB5M2sKKzYxMzA5IGFmNDRjZWYxY2RmNWE1NWM5M2ZkOWYxNzkyZGIwYTliYTg5MmU1YjcgcHkzaworNjEzMTAgYzgzMDYxNmJkMmZjOTMxMDUzYzQxNzk0M2YxNGU5NGY0ZjI1MzZkOSBweTNrCis2MTMxMSA5NDA1M2IyN2EzNTI1OTBhYzIwZDY2YmY1ZDhlNmVlZDQxMTE1OGMxIHB5M2sKKzYxMzEyIDUwNjU0NzgyMmI4ZDAxMDIyZGE2NTUwMGU0YjYxY2E3ZmU5NmQ1MmIgbGVnYWN5LXRydW5rCis2MTMxMyAxNTg0MjA5NGIwODlhMmM3OGI1MDI1YzZjN2VkOGQ4Y2Q5YWFiNjJlIGxlZ2FjeS10cnVuaworNjEzMTQgOGJhYjQxOGNjODc5M2I4YzAwODZhMDAyN2FhODE4ZTVhODI3MjQ4YSBsZWdhY3ktdHJ1bmsKKzYxMzE3IDViNDIzOWMxZjhmODJmNjA5Zjg4ODBhNDM0YzEzOWMxZDU5NjJlMjMgbGVnYWN5LXRydW5rCis2MTMyOSA3ZjIzYjgwNGU5NGMwNGFjNGZiNzVlMTY1NzI5YzRkZjM2NzM2ZWZiIGxlZ2FjeS10cnVuaworNjEzMzAgNjYwNzBmZGJmMGI5MzA3NzMwYzc1ZDE5YjdjMTJiNTk5MTFlNTg5YSBsZWdhY3ktdHJ1bmsKKzYxMzMyIDZmMTk1NzU1ZjE0NGU4MDJkYzFkOGY3MjUxNmRkMGFhMWViODk3MmYgbGVnYWN5LXRydW5rCis2MTMzOSA0NTZjZWVjNjUzNTdjMTY2NTdiMGFkYmJiY2ZlMjcyMGFmMDdhYjA1IHB5M2sKKzYxMzQwIGFlYWEzMDMxNDdlZWIyM2Y0YzBiNDgwMzE2ZWMzNjRlNDEyNjg5YTYgcHkzaworNjEzNDQgYjlkNmY4NzBiZmIxNjhjNWZjMzZjZGVjYzcwYTE5NTgzMDcyYzU1OSBsZWdhY3ktdHJ1bmsKKzYxMzQ1IGQ4ZGY0YWEwNjI2MWRlNWU0YzBhYTA1MWU0NDg2OTdkNDc5MWU0MzcgcmVsZWFzZTI0LW1haW50Cis2MTM0NiAyMDIyOTQzYWQ0NTBjNDFkNjQ3MDhmYjVjYWNhMmQyNjcyYjViOGY4IHJlbGVhc2UyMy1tYWludAorNjEzNDcgNWQ3NjRkNTE4ZjY1ZWJiOTEwODU2OTcyN2E3Yzg4YjMyMGMyN2ViOCByZWxlYXNlMjMtbWFpbnQKKzYxMzQ4IGU4NTcyZDlhYzg1ZWYzZDNlNGMwMGM0ZWQ4ZjFjYTdhNmFlZDk5ZGUgcmVsZWFzZTI0LW1haW50Cis2MTM0OSBmN2MzNjU4YzcxYzNkNmMzMjAzOTgyNTA3MzI3NWY1ZDc4M2FhNDAzIHJlbGVhc2UyNS1tYWludAorNjEzNTAgMTYyYzY5NTJlYTM0ZDRlNzFmNWY5OTk3ZmQ4MGExYjY4ODM5YTJmZCBsZWdhY3ktdHJ1bmsKKzYxMzUxIGNlNWY2ZmQ1NzkxMzJmNGI5NTBiMDk1NWFkY2Y0ZWI4MTg0MDdiZTkgbGVnYWN5LXRydW5rCis2MTM1MiA3ZjRlNjAyMWJjOWY2MDk0ZmUyYTBkNmE3NTBiMGE2ZWE3YzBlZTA0IHB5M2sKKzYxMzU2IGUwOWJjMWM1Mjk1YmMxOTg0NWEwZjM1NGRhMmU4MzA2NmZlYjhlZTYgcHkzaworNjEzNTcgN2FkYWFiNjRlYjcyZTQ3ZTU3ZmJiNGNjYmFmODcwM2QwYzJmNTgxMiBweTNrCis2MTM1OCA3NzUyYTU3ZjljNDkwZDMxZjBmM2FmOGM2MTIxNTUzNjhlMzlkYmQxIHB5M2sKKzYxMzU5IGU0NDY5MTBjOWQ0MzdmNGQ0YTAzMGFiMDE0NGFkYmQxMWFmYTI0YmEgcHkzaworNjEzNjAgNzQwYjU4MDhjNTdhZTdiM2Q0Yzc5M2JhZGU1MTFjZmFmOWY1MmZlZCBweTNrCis2MTM2MSA0MmE2YWFkMzllNWNlOWJkNDVmYmRhM2Y3ZjY5OTE4YjdkNjgzNTM2IHB5M2sKKzYxMzYyIDdiOTVjNTdiNTgyMWJmYWMyN2VlNmIxNWU0NjE2YWUzOTBjMWUzY2IgcHkzaworNjEzNjMgOTg2MzM4ZWIwYzBkZTUyODYyNWQ0NWI5ZmE1MWMzZWZjOGI5MDdhMyBsZWdhY3ktdHJ1bmsKKzYxMzY0IDc0MzFmM2ZhYTM1NjhhNDJlMWVkNDQzZmE2ZDM1Yjc5YTlhYTk0MWIgbGVnYWN5LXRydW5rCis2MTM2NSA5Mzk1YTIyYTk2NmE5NGNhMDg4YjVjNGE3ZDU5MTI0NGY0YjI2ZDUwIGxlZ2FjeS10cnVuaworNjEzNjYgMDExZDc5YWYwNWVhOTEzZmNiZjczM2Q1ZTFlZjI0ZDZiZjJhZjllYyBsZWdhY3ktdHJ1bmsKKzYxMzY3IGQ1MDI0ZWU5ZTg4YTMxYjFiNmM3NDQ0ODQyMWUxM2FkNjgwMjM0M2IgbGVnYWN5LXRydW5rCis2MTM2OCBkNzJkNTI3ZGU3MTE5NjU2NWFmNzM1ZjJhODQ3ZjQ4ODk3NTQ3YTdkIGxlZ2FjeS10cnVuaworNjEzNjkgY2JiOWUyZjRiMjAyODNhY2EzMzU0YTg5Y2RmODQ2ZmIyNzE2NTFhYSBsZWdhY3ktdHJ1bmsKKzYxMzcwIGRiNWIzMjFlZGNiYjJjMWY5M2VhMGVjMTQxZjhiNTY3NjNmYzZkZDcgbGVnYWN5LXRydW5rCis2MTM3MSA2YTMzZDRmNmYxNmY3ODI3ZTZlMmYxZWY0ZTcwNzMzYWFiNjE0ZGE5IGxlZ2FjeS10cnVuaworNjEzNzIgNTQzZThkZGUzNjFmOGE2MWMyMTZlNzc0YWM0ZmZlNzQ2Yzc1MWNiYyBsZWdhY3ktdHJ1bmsKKzYxMzczIDQ5ZGM5YWY5MGIzZDFmMjlkZWRiNWJhZWMzODc0ZDM2MjY5NmJhNGMgbGVnYWN5LXRydW5rCis2MTM3NCA2NjM0MWJlZDgyYjMwNTNmZmU2NmNlODFhNGYxOTI1OGUwNGMwZjlhIGxlZ2FjeS10cnVuaworNjEzNzUgZDk3YmJhZDlhMzVlZWVlMjAzNzFjMjQxYzY0Y2ZkOGRkZmIxMDhhYSBsZWdhY3ktdHJ1bmsKKzYxMzc2IGJjODEzMjY1ZTJjNjUzM2M1NTBjY2VmYmZlNzMyNmYxZWY4ZWEzNTUgbGVnYWN5LXRydW5rCis2MTM3NyBlMmU1NDJmZGFjZDA5ZGViOGFkYTM1ZjYzZjc3YmZmYTc0OGY4MDdiIHB5M2sKKzYxMzc4IGY2YjNjZjJmMzMzMTFmY2U3MTUxYjYxZjdjNmQ4ZDFkYjcxM2U5MjQgbGVnYWN5LXRydW5rCis2MTM3OSA3Yzc4ZWE3MDcyMTllZTRkMDBlNjQ2MzVjY2RhMWFkMjcxOWZiNGQ4IGxlZ2FjeS10cnVuaworNjEzODAgZTdhYTliNWYyMWI1MGQyOGQ4NWQwNjc0YWJjODU3MzRjOGIwZjVlZiB0cnVuay1tYXRoCis2MTM4MSA1MzczNzUxYWQ0YjQxMGI4Mjc3ZjUxNGNmMjRjMmY1MzdmY2ZlMmMzIHRydW5rLW1hdGgKKzYxMzgyIDBlMGMxNDk4YmUxYTgwZjg2Yjk5NDc0YjVjZTJhYmZkMzNkZWIzYmQgbGVnYWN5LXRydW5rCis2MTM4MyAzNTRlMzc3Yzk1OTAyNDRhYmUwN2E5NzkyYThhYTAyYzdjNmMxYTYzIGxlZ2FjeS10cnVuaworNjEzODYgMTY1ODBkYzE0Mjk0ZTkyMjM5ODRlYTkxMjQwYzg5YzE1MjU4ZjhlOCBweTNrCis2MTM4NyAwMDUzZmM5ZjVhMWY2ZTcwNTg2NDQ4YzhlOTJlNTRkZjlkMGM1NzVmIGxlZ2FjeS10cnVuaworNjEzODggOWM4OTA5ZWU1NzFmNGM1MDVmNTExZDVkMWEzN2I2ZmRhNTUzZjViOSBsZWdhY3ktdHJ1bmsKKzYxMzkyIGI5NDBiMWFkOWEzYWEyMTlhMjFhOTQ4YjEyMTdmMWRkMGUwNjBmYWUgbGVnYWN5LXRydW5rCis2MTM5NSBjMDdjNWM3YTkxNGVlMzFmOWQ3MGM0NGJhMGVmZjY0MDE0MmMwYTMwIGxlZ2FjeS10cnVuaworNjEzOTYgODIzZTExZWJmNjY4MjliYWY1NTBiOTE2MDEzYjUzNGZkNzQ1ZjcwOSBsZWdhY3ktdHJ1bmsKKzYxMzk3IGE1YzkzOTIyOWZmMjdmYjQ2NDZkMWVlY2IxYTFlZGRhYmI4ZmVkOGIgcHkzaworNjE0MDIgMjEyZTljOGFkMDg3ZWIxNmM4OTRlMDBlYzk4NTIwMTg0NTU5ZjJjYiBsZWdhY3ktdHJ1bmsKKzYxNDAzIDU5ZWI1YWY2MWNkNzM2ODUxNzM5ODg3YTcwNTJiNjZlZTJjOTliZWEgbGVnYWN5LXRydW5rCis2MTQwNCA1MzFlNjI0MTZlZWI2N2Q1ZTkyOTdlMDc4ODEzYzIyOGZkNTk4ZGUwIGxlZ2FjeS10cnVuaworNjE0MDUgMGQxMGYxOTNiOWJlMjVhNmZlYzg5OWFjNDNmZjYyMGYxMTFkYjUzZiBsZWdhY3ktdHJ1bmsKKzYxNDA2IDRlMzU4ZWQ3ZjUxNTYxN2ZmYzdiYTUyYjAxZTUzZWM0OTgzMThiMTAgbGVnYWN5LXRydW5rCis2MTQwNyBmZWE3YmE4OTEwYTk2MGJmNzBkZDkyZTRlNzdkNzcwMTYxNWNkYjkxIGxlZ2FjeS10cnVuaworNjE0MDggODMyYzgyMGU5ZDE0NGNiNzZjODc3OGFkNmZjZmZlMjMyYjFmNWM0NiBweTNrCis2MTQwOSAwNThmYmZiOTg1YWU4YTBiNjVkNzA0MTVhNjE5OTE1ZThjNWRhZDQwIHB5M2sKKzYxNDEwIDcwMjY1N2VmYWI5YmU5MTM5M2Q5Y2ViNGM5MjcwNjM2MGQ5NTk0YzYgcHkzaworNjE0MTEgYWUyMWE4ZDcwMzAyNmUxODIyMjMwYzQ2ZWZiNmQxYWY2ZjE1NjU0ZiBweTNrCis2MTQxMiBkMGM2NzdkZGQ2Yjg5YzAxNGQ2NWY5MTc0ODcyMDU3ZjhiMjY5NmJkIHB5M2sKKzYxNDEzIDJlMGUxNDAyOTU5ZDNkZTcwN2M1MWY5ZWUxMjYxYjA0MjE0N2ZhYTQgbGVnYWN5LXRydW5rCis2MTQxNCAzOWZiMmM3ODg0MWVhMjU4MjRiYjFhYjA2OTZhMmE5N2RiNWI5YTAxIGxlZ2FjeS10cnVuaworNjE0MjYgMzc5NzMxMjViMmMwY2MwYWY5NTc4ZmJkM2I1NjNiODI3NTQyNWE2ZCBweTNrCis2MTQyNyBkNzBmYWI5N2ViYjVlYTk3MzEwNzVlMzk3YjkxODMxYjMxNDUwZTRmIHB5M2sKKzYxNDMwIDFmMGU3ZTJkYmUxNWNiYWU5ZTU2NDVjNjEzNGZjZTgyNjJiZjNjMmQgcmVsZWFzZTI1LW1haW50Cis2MTQzMSA3OWRlYTY1MzMyZjg2ZjM3ZjljNjUzZGUyNDBjMThlZWY5NmFmZWQ0IGxlZ2FjeS10cnVuaworNjE0MzMgMmZmM2U0MzIxN2I3ZTU0NGEzOWU1NDU4M2U1MGVmZDk2NDc1YTE5YiBsZWdhY3ktdHJ1bmsKKzYxNDM0IDRkMjkxMjdmM2ZhMGQ3YmNhNzI5Y2RjNTAxZDYwZDIyMDkyNjcxOGMgbGVnYWN5LXRydW5rCis2MTQzNSAxNjczMmRiMDA4MjJlYTlkYWUxN2UxYTRhMzNjZWI5MzRlN2YzYTFkIGxlZ2FjeS10cnVuaworNjE0MzYgYzQ0MDJlYzYwYzNhNGExNTJlZTYyNWU3ZDE3YzI1ZjZkMzU1YzU5YyBsZWdhY3ktdHJ1bmsKKzYxNDM4IDRkMzlkNGE2YTlkYmE1YThkODlmZjFjYzVlYjVkZjNmNDNmODdhNjggbGVnYWN5LXRydW5rCis2MTQzOSAyMmE0YTExMWQ1OThhZTEzYmE3MGZiNzIxMzJiMDAyYzUyM2Q4YWQ3IGxlZ2FjeS10cnVuaworNjE0NDAgNDgyNDdhNGIzOGVkZjA5NzNkMTdhNTY0NTQ0ZWVhMGM3YzkyMjJiNCBweTNrCis2MTQ0MiA2MmVmMGVhMDM0ZjRlOTY5MDc5ZTE2NGM4MDU4ZjI1MTZkMDk3N2VhIGxlZ2FjeS10cnVuaworNjE0NDMgYmI1NDNhODA5ZmUyNGM4YzUyNTFlYjI1OGJmMmU5ZDYwZjg1MGYxNSBweTNrCis2MTQ0NCBmMTFjMDAyNDZmYjUyNWQxN2MzNGYyNmU2YTRmYjZjYjY1YzY0MzJlIGxlZ2FjeS10cnVuaworNjE0NDUgYWNiZjljZjU5NGY4YmQ4NTI2NGQ2YTQ0ZjVlZmM0Njg2NjRhYTBkNiBweTNrCis2MTQ0NiAzNmYzYzZiZjJjOTdiZmFmZWQ2OTgxYWYyMzI5Y2I0MzFhMTU3NGEzIHB5M2sKKzYxNDQ3IDBkYjdmYTE0Yzc5NDhiZjE0MzY4ZjY1YzBkZGZmNjhiM2QzZTMwNjEgcHkzaworNjE0NDggY2IzNjBmYzg4OTEyMjc3M2UzYmIyM2U0NzY4ODMwZTIyNmZkZjBmNyBweTNrCis2MTQ0OSA3MTA0NzhhMTk3N2FjZmNjNDVjMzllODY2MzNkZmJiNzIwN2U2MWE5IGxlZ2FjeS10cnVuaworNjE0NTAgODAxOGY1MDY1NjYxYmFhMzJhMDRjZDJiODYyN2MzOWQ1ODFmMDdjNiBsZWdhY3ktdHJ1bmsKKzYxNDUzIDdlOGNlYjM5NDQ3ZWNiYmE2NmMwZWVkNzYxODhjMTlmMTE4ZGY1OWEgbGVnYWN5LXRydW5rCis2MTQ1NCBiNWNiN2E2NzhmMzg5MWZjNDk2N2VhYTc1MzJhODg3MDk4Y2MzYTM3IGxlZ2FjeS10cnVuaworNjE0NTUgZGU2YjI4MzRiOGFmOTkwZDExYTBkNzMzYzU3NzI0ODk4NTc2NWY2NiBweTNrCis2MTQ1NyA0MzE4MjVlYWM0YWUzNzM2M2U0ZTlmZDA0YTY3MGQyODk1M2ZiNWI0IHB5M2sKKzYxNDU4IGQzM2NhZGI1OTVmNjVkZGFmOGIwM2FmOWUwZTZiN2M0OTM0M2Y2YTggbGVnYWN5LXRydW5rCis2MTQ1OSA2YTdmYTg0MjE5MDJhOTU0ZGVjNzc5ZmU5YTdmNGE0NjE4YjFhOTQyIHB5M2sKKzYxNDYwIDJjMjYwYmUxMjQyZDlhZmQyNzMxODQ3ZDQ3MmUzN2Y1ZWI0ODg2NjYgcHkzaworNjE0NjEgMzRmNGQ0N2VjNDNhNGYzNmMxYjdkMDc4YzQxODZlZGFiNDgwNDNiZiBweTNrCis2MTQ2MiA5ZDlhMzhiOGViMWIxMWEwMjgyNWViMDQ1OTBjOWYyNWUxYThkOWY5IHB5M2sKKzYxNDYzIGEyMDBjMzg3ZThiMjY1MTM1ZGUxNmI2ZDllOTdmNjhjZTQ1YjhhMzAgcHkzaworNjE0NjQgMTZiNDQ3NjQ5NDRlYjhhM2VhODJkYzYzZDkwOGUzNjk5YTk2NmY0YSBweTNrCis2MTQ2NSA2YzM5M2RjZDQ1YzQ4ZjA3MDczMmIxYThkOGU4YmZmOGJhYTQ5ZWE5IGxlZ2FjeS10cnVuaworNjE0NjcgMzIyNjkzYmYxMGNhYzZjZDNjMDg3ZTAwMWU2YTk0YzEwMjJlNDExZCBweTNrCis2MTQ2OCA5NzNhMjNjZjZmMGI3YTA5NTllZDZhYjYyY2U3OWIwZGUyN2IxMGU4IGxlZ2FjeS10cnVuaworNjE0NzEgN2YxM2Q2OTA0ZTE0YTQ5NGFlZWM4ODk5ZGFiZDc4YzI0ZWM5ZDRjZCBsZWdhY3ktdHJ1bmsKKzYxNDcyIDhhM2ZhODZjMzBhNmUyYzcyZDVjN2JiZmMyMzhhOTVlYmYzZjYyMmQgbGVnYWN5LXRydW5rCis2MTQ3MyAzNzQ1ZmRiOTkzMmYwN2M0ODRlOWYzMTU1N2JiMjhiNmFmYzUyOWIxIGxlZ2FjeS10cnVuaworNjE0NzQgOGRlZmExZDVmMDY2ZDkzMDE4ZDhiN2M3ZDlmNTdkZTBkNGMzNzZlNSBsZWdhY3ktdHJ1bmsKKzYxNDc1IGZmMGFiN2IyOGY0OTE3Y2Q4NjM3NDA3NGQyZWY0OWE5ODE1YjEyZWMgbGVnYWN5LXRydW5rCis2MTQ3NiBlMzFkMzE3ODFhNzUzZTBkY2E0MWQyNDY2OTcyOWUzOGVmOTEzY2M0IHB5M2sKKzYxNDc4IDc5ZmRjODhmZjllY2RkZTVmOTcyNGFiMGU5YThjNjI0N2ZhN2IzYWEgbGVnYWN5LXRydW5rCis2MTQ4MCA0ZGFiZDkwNzE4N2VhNzM5MWE1NGI1MzFkYTcyZjQzNDZkZDJlMTk1IGxlZ2FjeS10cnVuaworNjE0ODEgOTY2ZmYxNjhiNTY2OTZjMTA1YzMwNDRlNjYyZDE3YWFmMzc4OTBjYyByZWxlYXNlMjUtbWFpbnQKKzYxNDgyIDdjNDg1NGZmY2RjZDg4Y2M1NzJiZWRkODE5NGZmNWQwZmM2MDcwMGUgcHkzaworNjE0ODMgYzBmMTY1ZTFkYmMwNWRjZTUzMzc4MzBmYTQzM2U5ZGEwYjQ1ODNmMiBsZWdhY3ktdHJ1bmsKKzYxNDg0IGE3YmIwMDRlN2YwNmE5M2NkODg1NzNjMmM3OGJmNDdmNjA3NjZjOTkgbGVnYWN5LXRydW5rCis2MTQ4NSAzZGViNzBlNDE4MmEwN2EyYTc5Mjk4MDViMjE2MTE2YWZjYzNmZTljIHJlbGVhc2UyNS1tYWludAorNjE0ODYgMjdlN2RjMmU2MjkwNWU5MjI4ZjllMGFiMWI2OWU0YWIyNTJmN2I4YiBsZWdhY3ktdHJ1bmsKKzYxNDg3IGFhMzNmYjkwZWFhNTJhOWI5YmE3OWVjMGFlMjc2ZTE5MGEyZjllNDcgcHkzaworNjE0ODggMDQ0ODdhZDNkMWJlZjQxNTM1MGZkM2NjYThjYjRkZjZkNzQ5NTY5ZiBsZWdhY3ktdHJ1bmsKKzYxNDg5IDNiYjBmMWExOTM5ZDkzODc4YjRkNjQ5YmVhZThlNzFlZDU5MTlkMWQgbGVnYWN5LXRydW5rCis2MTQ5MCBiMzU5NDgwY2E4ODY0NjBlY2ZlZjg1MTYwODkxOWFmNWEwYTMzMmIwIHB5M2sKKzYxNDkxIDVjMGI1Y2FiZWVjOTY2ZDdmZWM4MzY0Mjk5ZTFhYjgyNzI5NmQxMzEgbGVnYWN5LXRydW5rCis2MTQ5MiBlZGNiMzU0MjE3NmE1M2QxNDgyZWZjNWQyZDg0OWI1NTllZDkzYjE3IGxlZ2FjeS10cnVuaworNjE0OTMgMTM3MjljNzBjOGQ4YzI5NDk5NmYwNzk4OTkxYTRhZGQ5ZGU2NmIwMiBweTNrCis2MTQ5NCAwNDA1MDM3M2Q3OTlkYzBkNTM5MzBjNjkxNTg1ZmMyODJlMDU3NDhjIHB5M2sKKzYxNDk1IDI1NDYzMTNhOGIyN2FkNGZhYzhhYzkyZjJmMmIzOGM5YzgwMWJhMDUgbGVnYWN5LXRydW5rCis2MTQ5NiBjNTI0MTA2OWZmZmRhYTllN2YxMzVmY2ZhNGJjMWFmNjgwMjI2ZGQwIGxlZ2FjeS10cnVuaworNjE0OTggNTI2ODJiZDczOGE3NWNmNGNiNzEyZTZiMThiNDNjZjMyMjliYWNhZiBsZWdhY3ktdHJ1bmsKKzYxNTAzIGUyMjdlZDJjYTlkMTVhYmJiNjEzMzE0MWIzOTFhMDI1NGJhMzlmMmEgbGVnYWN5LXRydW5rCis2MTUwNCBkNGJiZjliNDcxMGY0N2Q4ZjdjNmMwZmQwNjkzYjAzMjRiOTQyZjQwIGxlZ2FjeS10cnVuaworNjE1MDcgNmZjNmE4MDY3ODRmOTVmMDYwZmVlZWY0NGJmNTM1YjZiMDQ5NjI2YyBsZWdhY3ktdHJ1bmsKKzYxNTA4IDg2NzM2NDAxZDM5NDQ0N2FjYWZlOWM0NTY2NDRkNDAyYzYzN2U4ZWUgcHkzaworNjE1MDkgOTczNjFkOTE3ZDIyZDQwMWEzNmNlODZkZmY2YWQwOWJmMmVkYTIzNCBsZWdhY3ktdHJ1bmsKKzYxNTEwIDQ2MzQyNDMxNzk1NTBhZjU1ODJkYTQwYzM3YTNkODNlZGZhNzIwMTUgbGVnYWN5LXRydW5rCis2MTUxMCAxMTdiYmQ0NGFkYWU2NDZhZWI2NTRjY2VkYmM5YzNhZTYyNjY1Y2MyIHJlbGVhc2UyNS1tYWludAorNjE1MTUgOGYwMGEwOTQ4ZjAwZTJlNTdlNzkyMDY1YWIxNzM2YWRiNWFiMzU0MSBsZWdhY3ktdHJ1bmsKKzYxNTE2IDZjMTdkYWM3MDU3MTdjZmNkNDI0MGEzODcxM2E3ZjhmNDdlZjU2ZWUgbGVnYWN5LXRydW5rCis2MTUxNyA5NjM4ZDJlYTJmNTdiYWEzNjQ3NWE4NTgyM2Q3ZDczMDA2M2Y1YWU5IGxlZ2FjeS10cnVuaworNjE1MTggM2IzOWI3YmIyYzA3YzI2OGY5YTcxODg0OGIxZTdlNjM1ODU4YTJiZSBsZWdhY3ktdHJ1bmsKKzYxNTE5IGUxNDgyODViZDUxMTgzODkwZDE1OTU2ZmEzMGE5MDJjMDljMTlmYzMgcHkzaworNjE1MjAgOTY2MDFmOGYzMzkxNDQ1ZDkyYjJhNTc3MmIyNjAxNjU1OTE5NTBhZiBsZWdhY3ktdHJ1bmsKKzYxNTIxIDMwYzRlMWNhODQyMTIzNjY5ODlkZjgzM2FlMjE3NzAyNWYxNzQ3N2EgcHkzaworNjE1MjIgOWI4YzRiNTEwN2YwZjU1Y2I3M2MyMDc1ZjZhM2MxMmZhMTJjZjIyZSBweTNrCis2MTUyMyAyMTEzOWVhNTliNmJhMjU2NWZiNmI5NDc2NTg4MDNjYjgyNWQxZTA1IGxlZ2FjeS10cnVuaworNjE1MjQgNzhjYThjMjU2MWRiOGU3OTY2OGQxNTc1ZGY4ZjFlN2Y5YjA4MzE1ZCBsZWdhY3ktdHJ1bmsKKzYxNTI1IDZmMGVkYTNlOTJiMzYxYjIxODc3ZTY2NDA1YjU1ZjY4YjBkN2Q2NjYgbGVnYWN5LXRydW5rCis2MTUyNiA1ODFjM2U1YjM0OWIxMjBkMjk2NTBhZGQ2NmQxNDhkZDBkOGVhYTk5IGxlZ2FjeS10cnVuaworNjE1MjcgOTIzMzgwYWNkMWNkZDgwNTVjOThiYzY3NzM1ZDBkNGI5ODY4OGVlNCBsZWdhY3ktdHJ1bmsKKzYxNTI4IGM0MjQwOTliNGNlNGI0ZGU0YmFhYTgzZjYwMGYxMmMwNGRjZmFkOGMgbGVnYWN5LXRydW5rCis2MTUyOSA1MDc3MWEzZmFkMmNhYWE4OGY5NDBlYTM5ZWZiMDA4MjRjNjBiOGEyIGxlZ2FjeS10cnVuaworNjE1MzAgZjMwMmJlZjhhMDA0YWFlZjEyNzEzM2IxNDI0YzVkNTU4MjA1ZmQzMSBweTNrCis2MTUzMSAxY2Q5MzBiODM1YTYzOTI4ZDE3MTgxYmZlNzMxOGY2YjZiYzE0ODE0IHB5M2sKKzYxNTMyIGVhOTE5MTRiY2I5Nzc0ZjU4NTQ5YmRhOTAzNWI1Zjk3NDJjZjhiNmUgbGVnYWN5LXRydW5rCis2MTUzMyBhNjI4ZWY4MmViN2UwYzllMzk1YzVjOGIwNDY5ZmM3ZWU3N2Q5MDgxIHB5M2sKKzYxNTM1IGUwZThiZWYwZDVlY2NiMjcyNGUxNDczOTk2N2YzZWVlMDdiOGViNmEgcHkzaworNjE1MzggY2M3NThlOGRkYzlkNzk0MDUyYWEwYWQwODY1NzlhMjFjNDc3OWFiYyBsZWdhY3ktdHJ1bmsKKzYxNTM5IDk0YTYwODJhNzcwZmEzMGZjZjg1ZDBiZDIxYmQ3MjQ5OTVmMTM4NmEgbGVnYWN5LXRydW5rCis2MTU0MCAzYTcyY2JjYzFiYjgwNmMyYjY5YzZjNWFmMjU3NWZkNDE2ODljMmI3IGxlZ2FjeS10cnVuaworNjE1NDIgZWI2ZDAwNzQ1M2JjMmMyNzlkMDk2MTYxM2UyMDc4ZGZlYTM1MDIwYyByZWxlYXNlMjUtbWFpbnQKKzYxNTQ0IGRjNGQ2OGFlOWQzZGJmMDQxNTk3Njg3ZGJmZDE2YjA0NDMzZDU5NzIgcmVsZWFzZTI1LW1haW50Cis2MTU1MyAwZDc2NTljMmI5OTg1Mjc0YjY2MzFjNmExYjA3MjY1YmY2ZjU2NzMwIHB5M2sKKzYxNTU2IDUxNTYzMzYxNTczNWFmMDZhYjgzNmY5ZDFhZDY3ODQ1YjE0NzFiNGIgbGVnYWN5LXRydW5rCis2MTU1NyBiY2U2OWRiNzJlMDA0M2M1ODEyYjc5MGE3NTQzOGE1YzY2ZTg1NmM5IHB5M2sKKzYxNTU4IDgzYzU1YWNmYjk1OTg5YWU4OTFiN2ZjMDc3YzAzOTQwOTY4ZGUzNTMgcHkzaworNjE1NTkgMWJiNjdlNTAzZGZmY2E0MzY0ZGY2NGI1M2JmY2U2NWEyYmZiN2NmYyBsZWdhY3ktdHJ1bmsKKzYxNTYwIDAwNWRiOTM0ZWUyNWVmOTkwYmRhYjVlYTU2ZmRlZDViNmNlZmVkZmMgbGVnYWN5LXRydW5rCis2MTU2MSAwZTc5NzkzZmZlODcwNWUxZDVlODExNTBkZmYxZTRlYjg1Yjg2NjE5IHB5M2sKKzYxNTYyIDE2YzU3NmRlZTlkM2JhYzE4NGI0MTQ5MzZmZGNkZGFlYTEyNmQxNTAgcHkzaworNjE1NjMgMmY2NDBmMGYwNjk3NmIyZWFkOTAzOTMzZjY2MGEyMDMxMGIyMTE4MCBsZWdhY3ktdHJ1bmsKKzYxNTY0IGVlMGRmY2NmOGNlZTZlY2U4ODdiZDUzOTI2Nzg3ODcyOGI2NTlhYzIgbGVnYWN5LXRydW5rCis2MTU2NSBiMGQwMTk2OWJiYzg3ZGU0NWRjMTdjNzc2ZjViMThhZDY2MTI1ZmY4IGxlZ2FjeS10cnVuaworNjE1NjYgZjNiZTEyMjIwZmQ3ZTAxYmJiMmE4MDY1Y2JmMWFkNmY0YzZlODA2MCBweTNrCis2MTU2NyBmYTcwZTZhZTgzMWFlMWRlYWQxYjlhZGJhZmUwZmU1ZjU2MmExZTYxIHB5M2sKKzYxNTY4IDA1YWMzYzE5YjdhODAzNjQzMjU2YWFhYzk3NjIxYWNiMDVmYTM4ZDUgcHkzaworNjE1NzAgODYwZTIzYTYxZTU1MTBmYmMzM2UzOGFmM2Q1NjUxMTBkYzg3YjcyYSBsZWdhY3ktdHJ1bmsKKzYxNTcxIDI4OTNjMDEyOWZlNWMzNjAyYTY1MzkzNjhmM2FjZGE0ZDczYjE4YWUgbGVnYWN5LXRydW5rCis2MTU3MiBjOGM1NDdjNTFmOWE2ZjBhZTU1MDNmMDk1ZTBiOTFkMGJkYzc3YTRjIHB5M2sKKzYxNTczIDUxZTI0NTEyZTMwNTI4NTU2YzJiYjcxYTRjNjgwMjYxMDg3OTc3MmIgcHkzaworNjE1NzUgMjM4NWUxNmFjYjQyNzlkNTFmYzcxYWMwOTFmMWJhMjYwOWFmYzZiYyBsZWdhY3ktdHJ1bmsKKzYxNTc2IDk2YmQ5NzIyZTMxZDMwMDkyNWE2YTYzMWVmY2RjZTRiYTg3NzYzNzMgbGVnYWN5LXRydW5rCis2MTU3NyA3MjdmNzQzY2Y2MzBiMWQxOWUwZTIyNmExODcyNjUwMmRmNzM5MzhmIGxlZ2FjeS10cnVuaworNjE1NzggZjdhNmYzMzk0MzEwNjc0MDIyMTQ4N2ZhYzhiMDZjOGQ5MzRhZDEzMCBweTNrCis2MTU3OSBmMDk2ZWY5YzQxMTRmNzU3ZmZlM2E3MDJmOTJlNjg1Y2ViNDM5ZWNkIHB5M2sKKzYxNTgwIGQ4N2Q3ZmMyYzJiZjMzYWQ1MDJlZmUyMDlmN2MzYWI5Mjg0ZWMyYTAgbGVnYWN5LXRydW5rCis2MTU4MSAxOWQ0YjY5N2ZiZjlhZDUzYzAwNDU2MmMzN2I3YWY4YzU5N2NkZTlmIGxlZ2FjeS10cnVuaworNjE1ODIgNzMzYzNlZTE5ODk5NjY3ZDVmNjhjZGQxY2I3OWU5MWViMTgwMjcxNyBsZWdhY3ktdHJ1bmsKKzYxNTg1IGM3N2UzMTE5ZTI2NzVlMDg2MTJiOTY4ZWRlZjY3ODA4ODg2NjQ0ZGUgbGVnYWN5LXRydW5rCis2MTU4NiAxZGZiOWFlNzhhMzcyN2NmODNlNDUwZDZiZjI4YmZkZDE2MTg4OWNhIGxlZ2FjeS10cnVuaworNjE1ODcgNGNhNzExOWQxNzAwNWRmNjE1MTFhNWEwNDRlMTZkOGE4YzQ2NDM5OSBsZWdhY3ktdHJ1bmsKKzYxNTg4IGI4NGUwZTIzY2FiZDg5MDQ3NWE1NzgxNjEwZTg3NjNjYmYxNGZhNDEgcHkzaworNjE1OTAgN2Y3NzcwNzE5ZTg0ODY5OWM5MTQxODQ2MmEyYTg1MzAwMTY2MDY2MCBsZWdhY3ktdHJ1bmsKKzYxNTkxIGQ0ZTFkYjg3OTdmNmRjODBjYWZjMTNlZDhlYWY1ZDNmYTJkMmU2M2IgbGVnYWN5LXRydW5rCis2MTU5MiA4MTkxMTY5NTAwOTkwODdiZWFmYWViOGRjMjM4YzgwM2U3Nzg5NWRlIHB5M2sKKzYxNTkzIGQ1Y2ZmN2Y5YTE0MmJlNzIwNjI0Y2FiZTg2OTAwNDMxNGEyNDYxYTMgbGVnYWN5LXRydW5rCis2MTU5NSAyYTAxMDc1Y2Q5MDIxNDI3MjdhZTY1YTVmNThjOThkNTA4NWUwOTMwIGxlZ2FjeS10cnVuaworNjE1OTYgMzAyNjI1ZmE2YTJhNjlhZGM4ZDc5MjQyOWVkOGU4ODQ2N2Y4MGQyZSBsZWdhY3ktdHJ1bmsKKzYxNTk3IDQ1OTcwYjA0Y2U4M2UyZDUzNDM3NDI4YzZlYjA0MmFiNjQyMzk5OTQgbGVnYWN5LXRydW5rCis2MTYwMCA5NjNkNjdkZjM3MjM3ZTVkYzhhMTE0NmY1YmJjZWI2Y2JjYzdmYzY3IHB5M2sKKzYxNjAyIGE5ODU1ZGI0MGZmYjMzZjRhYjBiNGM5Mzg2MzhkZGRiNWZiY2UyZTUgbGVnYWN5LXRydW5rCis2MTYwMyAxZGEyNDk5NjgzYjQzYzNlMGQxNzZlOTYxMDJiYTdiNzhlNzc3ODUzIHB5M2sKKzYxNjA0IDNiMzIzZmY5MzA0YzVmMDU3NjIyYmZmY2NhYmM5ZTRlYjY5YjhmZWYgcHkzaworNjE2MDUgNDIyYjQ5ZGZkMTViNTNjM2U3NTUwYTViYzVlMzVlNGJiNTRlNDViNiBsZWdhY3ktdHJ1bmsKKzYxNjA2IGUwYzliOWVmMDQ2NjBmOWZiODBlYzA0NTY4YjFjNDNkM2YyMmQ1YzQgbGVnYWN5LXRydW5rCis2MTYwNyA0Mjg0NzE4ZmI2MzFmYWRkMzIyMjZmNDU5ZmNlOTQ5NjRmMDlmOWQ0IHB5M2sKKzYxNjEzIGFkMWQ2MDRiYzhlZDM1MzAxNGJiMmU0ZDQzMmI4ZDljNTRhNzA1YjIgbGVnYWN5LXRydW5rCis2MTYxNCBhZGJjOTM0YmYxZmQ1MTAyNzU1NzMyODQwYjc4Yzc2NTc3MDA4NTM0IGxlZ2FjeS10cnVuaworNjE2MTUgMjE0NzdiMWJhNTgxN2M1YzhlMmI4YTlkZjczNWQ3OTg2NjJiNGJkMyBsZWdhY3ktdHJ1bmsKKzYxNjE2IDVjYzA0YTIwNDc2NmYyZTdlNTQzMGEyMjQ2NDEwYjhiYjc4YmI0YWIgbGVnYWN5LXRydW5rCis2MTYxOCA4NTVjNDI5MGRmZDdhYTM0ZGIwOWUzZmZkYmJkYzc4MmUxZDRmMDM1IGxlZ2FjeS10cnVuaworNjE2MjEgNzRhYjhiZDk2YzVkZWIzYTJlMGYwNGIyZTVlYzQzZmZlZGE3ZjI2OSBsZWdhY3ktdHJ1bmsKKzYxNjIyIGIwYjYwOGU1NzljZDVhZTM2MGQ3MGExY2VhNTI0M2E2MDcyNjAxMDQgbGVnYWN5LXRydW5rCis2MTYyMyBlYmMxMzBhNGEyNzM4MjhmNjZhZDZmYmM3MzY3MDRiZjFiNjQxNTdhIGxlZ2FjeS10cnVuaworNjE2MjQgOTNmOTcwN2I2NjRjZTRhY2Q5NDY5YjE4MGI2YjUwYzc2Mzg2Y2I2MiBweTNrCis2MTYyNSAzMzBmNTc0YzU4ZjdjM2RiZWQ1ZWQ0ZDAzN2NiNmY1M2E2YjBhMzk0IGxlZ2FjeS10cnVuaworNjE2MjcgODgxN2E4ZTEyYTU1OWVjYTg3MzIwY2ZmMTEyMDFmZGMwNmU0ZjBjZSBsZWdhY3ktdHJ1bmsKKzYxNjMxIDNiZjE5YzMxYzk1NmYxNDEyNGQzYWNmNWJmMmRjMWFiZGZjYjJiNmYgbGVnYWN5LXRydW5rCis2MTYzMiBkYzViZTBiM2MzYmU3ZGE0MjY0NmQ0NjMyZTY5ODAwZDdmOGE5MWE3IGxlZ2FjeS10cnVuaworNjE2MzMgZTY2NWEwYjE2ZGEwZTg3YjBjM2EwMzZiM2I1NDkyNmI4MzRjMGU5ZiBsZWdhY3ktdHJ1bmsKKzYxNjM0IDI0Mjc1NTUyYzk3MzE3MTQyMTllMTM1ZWYyZWY4NTk0NTJkYTY0NzIgbGVnYWN5LXRydW5rCis2MTYzOSA0NDBiMDhhMzJlMGIzZDUwNGY1MzI1ZWNiYmUwYmU1MjJiMGJkZTJjIGxlZ2FjeS10cnVuaworNjE2NDMgMTY1N2YwYWNjYTc4MjAyMTA1ZDc3MzYwMjA3ODUzZGY1Y2EwNWYyMCBweTNrCis2MTY0NCBhZTNhZDA2NTc3YzdkN2E1ZDBmZGNlNjljODI3NGZhNmM3ZDU2YjE3IGxlZ2FjeS10cnVuaworNjE2NDYgMmRhMGJmMmUyZjVjYzFmM2FjNDY5ODc0YTZjZGNjOTdmMzcyNmUwMyBsZWdhY3ktdHJ1bmsKKzYxNjQ3IDY1ZjM2MTA0ZmNhZDcyY2E4OTIwNGU2ZWM0MzIxNmJiOGIxYzU1NGYgbGVnYWN5LXRydW5rCis2MTY0OCAzOTg5ZmM2MWU3ODljODk0NTM2OGQzNjBhZjVlZjgyMWZhODA1NmI0IHB5M2sKKzYxNjQ5IDNhYTVlYjE4MjkxMzE1MDE5MDdmMzAwNWRiYjZjODFjMWFjMTgxYTAgbGVnYWN5LXRydW5rCis2MTY1MCAyOTNjNjEwNmZiZTM0OTc5ODJjOTU0ZGM2MGUyNTNkMTcyMjIwYTc0IGxlZ2FjeS10cnVuaworNjE2NTEgNjUwOWVmOGJmZTljMzYzZGM3ZmI1NDc2NjdlOWVmNjY0M2Q2MThhZiBsZWdhY3ktdHJ1bmsKKzYxNjUyIGNiYWQxZjVjYWJiMTUxMWRjYTE2MDQ1ZWI3YWI1MDY0ZTM1M2JlM2IgbGVnYWN5LXRydW5rCis2MTY1MyBlODYyODIxOTk0NjUxOTdiMWExNjQxMTcxZGM0YTkzYjAwYTBmN2Q4IHB5M2sKKzYxNjU1IGZjOTNiZjVmZWNlMWQ2NDJiYjhiZGU1OGM1MzlkZTRmMWM4ZmM2OGUgcHkzaworNjE2NTYgOGIwYjg5MDI1ZDk4MjhiM2E4MGI4MjIxYTFiNGRkYmQ3MTM2NWMwZCBsZWdhY3ktdHJ1bmsKKzYxNjU3IDViZDJiZGIzOWU5Y2RlZjVmMzQ5MGRlMjJhZDA0N2JlZDc5YTk5YzYgbGVnYWN5LXRydW5rCis2MTY1OCBkMDBhOWY3NWQyMjNkOTM0ZTBjZWNiNmNhYzJmM2Y5YTNlZmViMmJmIGxlZ2FjeS10cnVuaworNjE2NTkgMGZkYjM2MTYzODQxZDhiNjk2YTk5MDJiMGRiOGMwNmU5YzI4YmUwOSBweTNrCis2MTY2MCBlMDIwM2M2NThiODY1MDFkOWY1MTJhYTBhNjg5YzI1YTVmZGY4ZmRhIHB5M2sKKzYxNjYxIDlhNDc3MDlhMjhiNzlmNGJjNmMxNTNkODgyNGRiMjllMGMyMzI1MzggcHkzaworNjE2NjIgZmMyMTA2NzNlZWYwMTU0NDQyODYyYjg5NDU1NzQ4YzA1NzgzZmVjMCBweTNrCis2MTY2MyA2MGRiOWE2Nzg1NTFkMTc1MDcwYjFkZjE3ZjhiNWU4ZmY0N2UxMGQwIGxlZ2FjeS10cnVuaworNjE2NjUgNmEzZWYzYzkwOTVjMDU4ZjdhZGJmZDBmMGI0ZWJjOTAxM2IzODY2ZSBsZWdhY3ktdHJ1bmsKKzYxNjY2IDEzMmNmM2E3OTEyNjFmNGMyYjUwMmFiOGY4NWZkMzk5ODI2NDk2NjcgcHkzaworNjE2NjcgMDZlNjQxY2IzYTIwMDczZmE5MDZiYjEzODFjYmFiNzQzNDNkYjVlMSBsZWdhY3ktdHJ1bmsKKzYxNjY4IDM5YTRmNDM5M2VmMTk4MjQwNDM2OTUyNGZjODNkNGU2NGU3ZDUzNWYgcHkzaworNjE2NjkgOGU1ZWM2OWI3NmE3NGM1MGRjMTJiNTEyMTc2MzYyMzFmZmU4ZjA0MiBweTNrCis2MTY3MCAzNmUyOTZlNjZkMjE2YWM5N2NlOGE4YzczNDRhNWYyMzhiOGE3NjE3IHB5M2sKKzYxNjcxIDEzMzQ5OGI5MWYxYzQwM2NmNTY2MWZkODk3Zjg1ZDk1Y2ZmMTFmZGUgcHkzaworNjE2NzIgYzk1NjYzYzY4NGNhZjlhMWU0MjFmOTQ1YWJhNTk1OTQ0MTJjMzA5MSBsZWdhY3ktdHJ1bmsKKzYxNjc0IGQ5ZWMwNjhiMDhmMzA5NDdlODk1ZWNmY2EzOWZlYmYyMTEzMDZlNmYgbGVnYWN5LXRydW5rCis2MTY3NSA3ZDJlMWFjODM0Yjg1Zjc4Yzk5NTdkNTYzMGRiMDk2Yjc5M2ZmZDM0IHJlbGVhc2UyNS1tYWludAorNjE2NzYgZDE0YTllNWY4MGFlOGZjMjM0OWE1MzQxZmVmZjQwMmNhMDc3NGVlMyBsZWdhY3ktdHJ1bmsKKzYxNjc3IDFjN2MwOGQyOWZlZWU1ZDcxYTE1ODUxZmRkOWViOTExZTJhZmVmYTMgbGVnYWN5LXRydW5rCis2MTY3OCBkNTExZTMyMTc0M2E5MTFhNWI5MTI0OWI5NjQ1MzFmYjUwZmJlODVmIGxlZ2FjeS10cnVuaworNjE2ODAgMjkxMzE4OTI2MTFjNTVjZDQ0ZTE1ZTg3Njg2ZTI0Njc3MmExMjcwMCBweTNrCis2MTY4MSA3Y2E1N2UyMmE1MjA3ODk0MGQ4OGYyNzE1ZGE4M2YxYzlhYmU1NGIwIGxlZ2FjeS10cnVuaworNjE2ODIgOTFhYzgwNDllNzA5MzQyMmViODFhYjcxNTE4OThiMTBkNmM2ZWJiOSBweTNrCis2MTY4MyBlODM2MGI1ZDVhMTA3NDg0NDRhMTYyNzU2OTkyYWFkY2ZhMzk0YThjIGxlZ2FjeS10cnVuaworNjE2ODQgNjk2MjI1YjVkNTU1NTlhYjFkNzY5Mjc2NTgwNzExNmNiNmI4MDRiNSBsZWdhY3ktdHJ1bmsKKzYxNjg1IGYzZDgzOGRhYjQwZWRiZDU5NjlhMTBlZTBmZmE4NjBmNGU1M2I0YjUgcHkzaworNjE2ODYgMjg3MzNhZGE0ZDAzMWRlMTg5ODc3NWVmZTg3N2IwZDNmZWNlMDZiYyBweTNrCis2MTY4NyA3YzY2NjdiYjhmODUzNDc0ZTVlNzkwMTkwNTZkNzc4NTllY2NkZTRjIGxlZ2FjeS10cnVuaworNjE2ODggYWE5ZGE0YTNjOTdjZTA1NmQ3YjczYzg0N2YxNzZkY2M3NjliYjhhZCBsZWdhY3ktdHJ1bmsKKzYxNjk2IGM0NWE0NTY2OTAxN2I5MjUwZWZjNmYzNWFkYjUxMzY0NTE5MGM4ODIgbGVnYWN5LXRydW5rCis2MTcwMCA4ZjhiMDNjMmJiZmYwMTcyYzk2NTljYmNhZjg2Y2Q1NGI2ZGEyODk2IGxlZ2FjeS10cnVuaworNjE3MDQgOTQ0ZDg3YTliYmQwYWNkZDRkMWFmODIzZDI3YzZmNjRjZTdhYmZiMSBsZWdhY3ktdHJ1bmsKKzYxNzA1IDhlZjA1YWNlZWYyYjRhOWU3NDcwNmVhMTZlODQyNTNlNDAwMjg3YjYgbGVnYWN5LXRydW5rCis2MTcwNyA3MDRhODY0ZWNiMDE0YzUwNzY5YjVhNjc3Mzg3YmE0N2Y5ZDZkY2I1IGxlZ2FjeS10cnVuaworNjE3MDggYWRiNWNhYjMwMWE2ZWU1NWZhZTg1ZmFjOTQxYThhMDliYWYwNGRjNSBsZWdhY3ktdHJ1bmsKKzYxNzA5IDU0NGE0NmRmMDIyMmRjOTI2OTg1M2I5MzBlMDU0NWMxODk1YzJjYTggbGVnYWN5LXRydW5rCis2MTcxMCBmMGU0ZDliNDVlN2YzNjNhMmFhMzI5Y2RiOGQxYmJhYzgyYWIyM2VjIHB5M2sKKzYxNzExIDdmMDM1NTkyZDZlMWJmNTBiNDVmZGMyN2UxMmY4OGY0YTFhMDM3ZDkgbGVnYWN5LXRydW5rCis2MTcxMiA4NWZiZDFkMjY1YTI5NTEzOWI0MDNjMWU2OWYzMzk1ZTYyODQ1Yzk2IGxlZ2FjeS10cnVuaworNjE3MTMgNDQxNTI3YmZjNzljYzczZDA1ZDFjNGI5NTc3ZjQwM2NiZWU1NGNiYSByZWxlYXNlMjUtbWFpbnQKKzYxNzE0IDk5MzU1YmFhNzQ4ZGNkNGU2MTYzYjYxYWU0ZDE1N2IwZDY5MmFmMDUgbGVnYWN5LXRydW5rCis2MTcxNSAyMjc1NjEyYzE2YTlmYzE3MzhkMWMwZTQ0YjgxNzhjODQyMzkwMmIzIGxlZ2FjeS10cnVuaworNjE3MTYgYmYwN2JhZDFkNzJmNjNmYzg5MDUzZTA4OGYwNzM4YzdhY2Q0MzIwYiBsZWdhY3ktdHJ1bmsKKzYxNzE3IDcyZGMxNmU4MDE3OTBlMjNmMTRiMDIwNTQ2ZDJmZDYyNzFkM2QwY2UgcHkzaworNjE3MTggZDY3OTNlY2UzMjU0NGRlNjgzMjE2MjNhYTJlNmE5MzFhMTM4YWM0MyBsZWdhY3ktdHJ1bmsKKzYxNzE5IGEwMjUzNzE4NDk5ZTNiNmFhNWFkOTQ0NmFmOGZlYjVhN2Y1NGNiYzAgbGVnYWN5LXRydW5rCis2MTcyMCAxZjhiYTVlOGEyZmE5M2JkYmU3MDQ3OGY3YTA2ZWUxMWU4MjAyNTRiIGxlZ2FjeS10cnVuaworNjE3MjEgMmUzZjg2ZTczZmEyNzYxZTRmNTY3N2E3MzRiNjlmNzFmNzk3OGIyYyBsZWdhY3ktdHJ1bmsKKzYxNzIyIDcyOGRjMTMzMjdiMmZiOTRjY2I5MWMzZTY4MWJiMmE4MzJhMTc4MDcgbGVnYWN5LXRydW5rCis2MTcyNCBlNDdjM2M3YmJkZGM3YjdiYmY3Njc0NGY2OTAwZmRhZDllNGE0NmJkIGxlZ2FjeS10cnVuaworNjE3MjUgYTczNzZkMTkyYTZkNzhhYjIwNDYwZWVlMTRhMzk4ZWI1MzhmMjc1OCBsZWdhY3ktdHJ1bmsKKzYxNzI2IDdhYTUyZWI5MDc0ZjlkMmE5OTM3ZDNkZDcyMDc0ZjkyN2FjM2Q3YTQgcHkzaworNjE3MjcgOGMxZmY4ZTU0NzM5NzExYTVlZWFhZjgyMjJjNzZlN2RkZmQ1YWNkZiBweTNrCis2MTcyOCAzNzZiNWNiOGEwMTQzNTk5ZmJjMzYyZThlM2RjNWQ0NDRhNmY5MDE0IHB5M2sKKzYxNzI5IDdmNmJjYTc4YzM2NDg1Nzg5NDViMDY4MTMzODc0NjcyYTM2YzczZmYgcHkzaworNjE3MzEgY2RlYmEyMGNjZDZhMDFkNGVmM2Q2YmVhOWM5YTQ2OWE3MDk5MjdhZSBsZWdhY3ktdHJ1bmsKKzYxNzMyIDcyNjRjMDUxYTM5Y2JiNDQwZjI1ODBkNGQ4NDAzNWFjZmUyNWI4NGUgbGVnYWN5LXRydW5rCis2MTczMyA2MWY1YzY2M2I0OWQ4YmFkZTQ3ZmI0MDYwOGZjMjA3M2Q1MjA0MmUzIGxlZ2FjeS10cnVuaworNjE3MzQgYTk5Y2ExZTU3NWVkOTc1ODFiNDc1ZDUxYjRkODJkNDlkZGMzZDA2ZiBsZWdhY3ktdHJ1bmsKKzYxNzM1IDI0MDgzMzA1ZDFjNzA0NjYxNWE5YzViNWZiYWIwMGY5MTg3OWZiOWQgbGVnYWN5LXRydW5rCis2MTczNyAxMWZiYzhhZmUzMDVmZTMzOWViYWIzY2MyNGE1MjMwMmJlZjk1NWNjIGxlZ2FjeS10cnVuaworNjE3MzkgMDRjMjE0ODU2NGU0NTljZmQ5YjQ4NDNjM2YzOTUxNGVmNGRmMWQ3MCBsZWdhY3ktdHJ1bmsKKzYxNzQxIGVlZWI2Yjk1MmQyZjg5ZWFlNDZiZDNmMjY3YzFhYmQ4MjNjMmU0OWQgbGVnYWN5LXRydW5rCis2MTc0MyBmOTc3ODVjN2RlOWI2MjAxZTBjYjJmOThmNDQxMDIzM2Q1ZWY2MGNlIGxlZ2FjeS10cnVuaworNjE3NDQgMjI2N2NhMTRkNTRiYWE2OTQwZmIzYzk2MTE4OTUwMmNhMTQzNGRjYiBsZWdhY3ktdHJ1bmsKKzYxNzQ3IGI0OTc1NGVhOTRkYjkyNmQxNTdlMDBhNGVjMmNmMGM0MjNlODQzZDEgcHkzaworNjE3NDggYjBhNDNiZDVjMjgxODJiYWZjMjZhMDc1NTNlMjMyY2VhNTQyMjAwNSB0cnVuay1ieXRlYXJyYXkKKzYxNzQ5IDcwODM0YzBlNDkxYmQ4YmYxNGQ4YjRiY2NhMTg0MThkODFkMzFiYTUgdHJ1bmstYnl0ZWFycmF5Cis2MTc1MCA0MzU2NDNiNzgwYzcxOWE3MDIxZWM4ZDRmOTljN2M2MTE1NzRiMTJmIHRydW5rLWJ5dGVhcnJheQorNjE3NTIgYzYzMmY5ZTFlYTVkYmQ0YTdmOTE4NjEwOTc1NTM2NzA2YzhmNTQ2OSB0cnVuay1ieXRlYXJyYXkKKzYxNzUzIGQ0YmE1YmQxMTU4MGE4Nzc5MGI2MTJmYjljNjM0ZWMxYjk1YTY4MzUgbGVnYWN5LXRydW5rCis2MTc1NCBkZmEwYTAxMWEyNDM1YTYzNzE0NGM5NWZlZDk2OGIwMmZhOGRjZjRiIHRydW5rLWJ5dGVhcnJheQorNjE3NTYgNjY2NzAwODg5NGUwZGIyNmUxY2U5MjgxZTYzYWUyNGYyYTNkNGVhZCB0cnVuay1ieXRlYXJyYXkKKzYxNzYwIDI0OGY5MjdiYTU3ZWIyNjNjMGRkNmM4YzQ5OTFkMzQ4NzM4YzI4MjIgdHJ1bmstYnl0ZWFycmF5Cis2MTc2MSA3NTFkZTYxNmUwODAxN2ZjMGIxOGQxYTZjZDU3MjYzNWRjZjMyYWQwIGxlZ2FjeS10cnVuaworNjE3NjMgMDEyMmI0NmNlNGUwYmRkNGY1YTg0NGYzM2I0NTIwZjY2NDFkODQwYSB0cnVuay1ieXRlYXJyYXkKKzYxNzY1IGYyYWI1MGQwZmE5MDhlYmU3OWExMmVkYThkZGIxZWYyODkyZjE0ZTMgbGVnYWN5LXRydW5rCis2MTc2NiAyZTVhYjM1Y2NhZjFhZGRiMjNjYTc1OTAzYTk4MDQwMzQ5ZDZkNmE5IGxlZ2FjeS10cnVuaworNjE3NjcgZDZmMGUzZTU1NmE0NTA5ZTM3YWRiMDdlZTJhMjlhYWQxMTg1ZTNmNCBsZWdhY3ktdHJ1bmsKKzYxNzY4IGU2N2Y0MjFhMjBiMGIxYmRiZWE1ZDNiNjFmNmM1NTNjZmJjMmI4MTYgdHJ1bmstYnl0ZWFycmF5Cis2MTc2OSAzMWNmMzhiZGFhYzBjYjAzZTc0YzdlMWIxZDVlZmQyYTY2MjMzZjQ0IGxlZ2FjeS10cnVuaworNjE3NzAgMTBiMGQ4MWEyMTQ1ZGJkZTBjNGIyNGM4OGMzMzhkYzM1NTJlNTFiYiBweTNrCis2MTc3MSA5NTdjYmE3NTUzMTViNDY1MTUyNDMyYzM0N2MyN2NiOTVmZjAxZTdiIHB5M2sKKzYxNzcyIGZiMWQzNWNmYjhkMmRkYTgyZmI3NDkyZGE3NDg5YWU3MjBjNTY0YWMgdHJ1bmstYnl0ZWFycmF5Cis2MTc3MyBmYTQxOGNkZjNiZmU5ZjA0MGVlZjliYjJiY2QzYWRhZDZjZThlY2E5IGxlZ2FjeS10cnVuaworNjE3NzQgMjk2ZjliYzQyYjk2M2VmZDEzNzhiNTcyYmVjYThkOWM4ZTBkYTE4MiBweTNrCis2MTc3NSAzZjBlM2ZiMjcyYTYyMWU2ZDMyZTE1Mjc0ZTgyMDFlNzRmNTUxZjQzIHRydW5rLWJ5dGVhcnJheQorNjE3NzYgZjRjNTBhNTFkMjRmMGJmMzAwMTI0YWZmOGUxMWRiM2QyNjNkY2QwYSBsZWdhY3ktdHJ1bmsKKzYxNzc3IDcyMmJlZjY4MzViOTQ0ZmZhMzAxN2YxODA1NzBjMmZiNTI0ZjMyOWEgbGVnYWN5LXRydW5rCis2MTc3OCBhZjhmYjUzYTU0ZmQzZDQ0YTA4NjI3ODRkNWJhYmRkYWQzMTJmZWY5IGxlZ2FjeS10cnVuaworNjE3NzkgYThmNTRiNmE4YzE4NTVkNDVmMjQ1YTBlNGUwODI3Y2E2Y2ZkZjRiMSBsZWdhY3ktdHJ1bmsKKzYxNzgwIGM2NGM3YjcyN2M2MjU4ZTQzNDA5OWVkZGI5M2RjMDBmODE0MTBjMGEgbGVnYWN5LXRydW5rCis2MTc4MSA3ZGE1YjY4OTcxYTVhOWYwZmQ3OGRmZDRhMzc4MDY0MTc3OGU0YTc0IGxlZ2FjeS10cnVuaworNjE3ODIgOTYzNGMxN2U4ZmU1NjIwNTA5YzFmMWM0ODI1NGM4Y2RlMDcxZDAxNiBsZWdhY3ktdHJ1bmsKKzYxNzgzIGYxZWNiM2U5NzhkYjQ5ZDU3YTVhODMyYWQ2NTNmZDZkNDRkNTg1OGQgbGVnYWN5LXRydW5rCis2MTc4OCA3NTYzZjRkMmYzNmVhNDY4ZGJjZTMyNzI4Y2UyMDYyODNkNTE1MGZjIGxlZ2FjeS10cnVuaworNjE3OTMgODcxMGJhN2ZiYTJiZWE3ZDRjZmJjZGFjNGRlMTg3YjdmMDQwNTY0ZCBsZWdhY3ktdHJ1bmsKKzYxNzk2IGYxZTUxNzg1OTQ3ZjViNWYxNWQzMmRmNDNlNDBkNjI3NmVmZDQ2NzkgbGVnYWN5LXRydW5rCis2MTgwNSA3Mjk2Y2NiYjg1OGMyYjg5ZWY1MGY5ODU3MzI2MDk2OGVhMGU0ZjkxIHRydW5rLWJ5dGVhcnJheQorNjE4MDcgMWQ1YTExNjE5ZWNhODhjZTc3OTQ1OTI0NzNkOGUzZTE4MDllODdkMSBsZWdhY3ktdHJ1bmsKKzYxODA5IGRmNWM4Yjk3Y2IyYTFmYTFmZjY0NWRmZWM2NTMzYTAxYjk4MzMxODIgdHJ1bmstYnl0ZWFycmF5Cis2MTgxMCBjMWZjNmUwYTk0YjliN2MwNDhjZjQ0MDNlNDk0ZWNjMzg5OGZjNDE4IGxlZ2FjeS10cnVuaworNjE4MTEgYWYxYjBmOThkYWRmOWQxYmRkMDY3ZmNlNDVlMmE1Zjk4YmI1NTMxOCBweTNrCis2MTgxMiAzOWRjOTg1YzZmYzYwNjQ0MDk2ZjdlNzhmNjU0ZWUzYmM1ODYwZDIwIHRydW5rLWJ5dGVhcnJheQorNjE4MTMgNDY3YzE2YTUwMzkyY2MwYjVmNGUzNzQzNjMzN2FkNmEwNDg5ZmYwMiBsZWdhY3ktdHJ1bmsKKzYxODE4IDBhNDg1NTkzYWUxY2U1ZDM4ZWI3MDE5YjVjMTg4NDFlZjZiMDgwNDMgcHkzaworNjE4MTkgZDBiOTFhOTBiYWNjOTUzZDc0NDc2NmE3MDE2N2YxMjFiNWZmOGRhOCB0cnVuay1ieXRlYXJyYXkKKzYxODIwIDVlOTE2ODVkOWMwNjg1MmRlYjk3N2ZjMGFlMWFlMzQ2YTc2YzIxZGMgbGVnYWN5LXRydW5rCis2MTgyMSBmNWIxZmExMjE0ZjBhMTU0ZjgwMWJlMjU1MTVjMDE5YzFiNDk5NWU2IGxlZ2FjeS10cnVuaworNjE4MjIgN2NhYWFiMDRhNGQ4ZGEzMjgwZjA5NWZkMDI2YzliNDFkNmEyNzAyZCBsZWdhY3ktdHJ1bmsKKzYxODIzIDVjYTkyODQwMmU1NDM2NWNkZGUzYjBiM2Y0MTlkMGE1MWEyNzhkMjggbGVnYWN5LXRydW5rCis2MTgyNSBhMzljZjMzNTMxMmU3N2NiNTkyZTYzY2Y1MmQ0NzdmOTUzNzY1ZGM4IGxlZ2FjeS10cnVuaworNjE4MjYgYmZlZTg3M2VkZjNmZjZmN2IwNmRhYTY1ODJjMDM0MThjOTljMjRjZSBweTNrCis2MTgyNyA2ODA1MWY4YzY2MThlZGI4ZmU5ZjAxOWY2OTQwZWM1ODU2MzllMDI3IHB5M2sKKzYxODI5IDRhNmIwOTNiMzE5YmJmYzg4MDcyMTAyNmE5YmRmYjhlZWM2Nzc3MzMgcHkzaworNjE4MzEgMzcwOGYwOTA2ZWY1ZTZmMjNjMWFkNmEwYjZhZmZjNTJjNTk1MmY2OSBweTNrCis2MTgzMiA1ZjA0ZTAyYmI0MGM1ZDU2ZGM5NGNiYWUxMDMxNGVjYzlmZmIyNTk5IHB5M2sKKzYxODMzIDJjY2U5MTdkNzk5NjNkOGQ2YmFiMGEzZThmMWQ1ZjI1NWZmMDhiYTYgcHkzaworNjE4MzQgOGMyNjA0ZmU1ODg2OGE1NWY4Y2IxMjBkMzkzYWQxNjJjMzQ0MWMyNCBsZWdhY3ktdHJ1bmsKKzYxODM1IGRmOTA3NzRmOTJiMDY5ZDkwZDc5ZGU0NzAyZjQ0MWY5ZDljNWRmYjEgcHkzaworNjE4MzYgMzBlZjUxMTI4MTMyNjg1MzczZTAxYjQ5ODBiZGRmZmY5ZWU3OTdiMSBweTNrCis2MTgzNyA4NTlmZjVjN2M2MGE4YzBjNmQ1MTU1MmVlYmZlYzcyNWFjMWE2OTkwIHB5M2sKKzYxODQxIDI1NDMxZmY2Y2U2OWRmNjVjYzg5YTY4NjA1YjJjN2MxMDU2MTU3ZmQgbGVnYWN5LXRydW5rCis2MTg0MiAzOGRlMGQyMDIzMzg2NzgxOThiNmVlZjg2ODQ2ODE1MDIwYjQzNzY4IGxlZ2FjeS10cnVuaworNjE4NDYgMmQwZTA4OTE3YTJlMzYwZjk1OWUxNGUwMGJiOGY2OTE1NGY3YzgyOSBsZWdhY3ktdHJ1bmsKKzYxODQ3IDQ2MWZmNDNlNzRkMDIyYWI5NzkzMGYxMjg3MGNmMjBmYjk1NjdiZWMgbGVnYWN5LXRydW5rCis2MTg0OCA0MWVlOWE0MDBhZDExNDAyNjY0MGMwNzUwYjViNDQ4MmJiMGU4ZTBiIHB5M2sKKzYxODQ5IDAyYWUzMTEyNTZhNzdhMWE5NGI0NWQwNzU4ZGIwYTU0NTRmMzdkMDcgbGVnYWN5LXRydW5rCis2MTg1MCBiMmYzZTQ2ZTc4YTI5YTk0MzE3YzZjNGUzZDVmMWNhMmI2NWMyOTA3IHB5M2sKKzYxODUxIGJmY2RhNTUyNDkyZTY1ZjU2N2I2ZDJjNDI1YjdlYzIxYjhlNjFjYjAgbGVnYWN5LXRydW5rCis2MTg1MiBjODZlOWRkMTZiOGQxNGQ1ZmI5YzJhNzdkMDQ0N2EwYjNhNjk0MGU3IGxlZ2FjeS10cnVuaworNjE4NTMgYzkyMzAwOTMwNzcyZDY2NjlmY2Y5NzhiYjUyYmMyNTM5ZWM4Y2ExYiBsZWdhY3ktdHJ1bmsKKzYxODU0IDQyMjg1ZDYzNzU1YWMzOGYwYzQwYjYxNzc5YTUxMTFmOTU5MjZjNTggcmVsZWFzZTI1LW1haW50Cis2MTg2MyBmM2U2NDhmZWU0YzE5YWQ1YmU4ZDY0MTMzZjg5MjZkMGQ3MWU3YWM3IGxlZ2FjeS10cnVuaworNjE4NjQgMDlhZGZmM2Q2NjkxNTRjZjUxYzg0MzlmODRhYjRjYzE5MjU2OTM3MSBsZWdhY3ktdHJ1bmsKKzYxODY3IGNlNDVmZDNhN2EzZmJlNjJkYmNiYWE5OGM5Njk5ZjQ4MTc0MWQ2NjQgbGVnYWN5LXRydW5rCis2MTg2OCBkZTgzZWRjZmViM2QzMDkwNWNkODBiMTZiZmYyMjAzYzAxZjUwNzIzIHB5M2sKKzYxODY5IGRlNTQ0OTVhNDE0YTdiOTM3NGM4MzcwZjY2MzYyMDkwOWFiNTcxMWIgbGVnYWN5LXRydW5rCis2MTg3MCAyYmZmNWE3MjkwMzY5ZGI1NWE4ZTE3NTc2NDIzODhhYWU3MmFlY2FhIGxlZ2FjeS10cnVuaworNjE4NzEgOTU4Y2YwYzI3ZGE5MzkzNjcxZWEwZTcwMmI0MjIzNTNlNTJjZjhjNSBsZWdhY3ktdHJ1bmsKKzYxODcyIDM4YTBhNzM3Y2NkNDI1MzI4NmIyOWRjZDFlNzYyNDY3Y2QwYzdiZDggcHkzaworNjE4NzMgMTQ3ZjM1ZjZlNmU1ODZhZjM5NzE2Y2I1OGYyNzNkZWI5ZDk3NzEzMyBweTNrCis2MTg3NCA0ZjljYTgyN2E3ZDg3ZTk3Y2RlNDlmYzhhN2QxZTdmMTk4Y2U5MmE4IGxlZ2FjeS10cnVuaworNjE4NzUgMGRkNDQxY2E4ZWIwYzM5YzdlM2NmNzU0ZTYxZjE2MDhhMTY2M2E0YSBsZWdhY3ktdHJ1bmsKKzYxODc2IGFiYmQ4MWYyY2M2OGU2YjE3OTdkMzBkZTQyNzgxNTg0NTEyZmMwYWUgcHkzaworNjE4NzcgMDQxZThkN2NjNjg0MDkzMGNkZWI0MDhiMjUxN2ExYWI2MTJkMzdkMSBweTNrCis2MTg3OCA5YjNmMGZhNWQ4Y2EwNzYwMjQwZDAyZTUzMWJmMzdjZjEzODY4NGFjIGxlZ2FjeS10cnVuaworNjE4NzkgODRiYjc3MDFlZmJhZDgyMmEwNDI1ODI0MGRmOGQ4ZWE3MzY4ZGMyNCBsZWdhY3ktdHJ1bmsKKzYxODgwIDJhMWY0ODAxZDQ5NGZjYTQ1ZDAwNzU5MmU3ZTI3MWFkMjE2OThmZWYgbGVnYWN5LXRydW5rCis2MTg4MSBhZTY1OWZmMDUyOGJjMTdiNjFmMWFkYWIxNDBiMjlmNTE1YjM3YzBkIGxlZ2FjeS10cnVuaworNjE4ODIgNDdjMmZmYzM4ZDFkMTAzY2ViNGU1ZDc4MjcwNTNkNDJkYTRlZmJlNCBsZWdhY3ktdHJ1bmsKKzYxODgzIDFhMmM5NjQ1ZjcxZGYzYzA2YjdmY2U4MTM5ZjczMzM4ZGMzOTU3ZTMgcHkzaworNjE4ODkgMmE4NjZlYTY2NTA5YjYzNzhkM2E2ZTgxYWVjZWUyYWE5NzI5MDM3YSBsZWdhY3ktdHJ1bmsKKzYxODkxIGE3Y2JmY2JhYTZiMDYxNTY3YTU5NjE4Yjk3NjllMWMwZDQxOTYzNTIgcHkzaworNjE4OTIgMjJiZDAyMjkzZWZhNWQ1ZDQwNTExYjMxZjIyMTJkMWVlZTY4ZWNlYSBsZWdhY3ktdHJ1bmsKKzYxODkzIDBiNjM5OTkxNThiMDcyNjRjOGVkN2U5OTJiYTI3MzhkYWYxZTVkODMgcmVsZWFzZTI1LW1haW50Cis2MTg5NCA2YmVhMmYxMzUxYjFmNWYzYTRkN2Q1YzYzOTYyOTMyYjUxMGJhYjQ0IHB5M2sKKzYxODk2IDI1NmY5Mzk0ZDkzZGI1ZjMyMmZkZmY0Mzk4NjI0YmMzZjJmZDY0ZjMgcHkzaworNjE5MDAgNzJjYzQwMGQ4MDUzNmQxZTE1NDU2ZWY1ZTM1NzQwMzk1ZTY2ZDE1MyBsZWdhY3ktdHJ1bmsKKzYxOTA0IGU4MWNhYzczZGFmMmYwODE0OTliYThjMGU3OGI5N2Q5ZDU0MDc5MzQgbGVnYWN5LXRydW5rCis2MTkwNSA3ZDNhNmRjNDcxY2Q5MTIzN2ZkMDNmMWZjYmJhMmNiM2EwNDE3MmE1IHB5M2sKKzYxOTA2IDE4OTllMDhmYTQyMTE2NGY0Y2YyNTJmMmNlMGQ0NTVlMTMzZjljODggcmVsZWFzZTI1LW1haW50Cis2MTkxMyA1ZGY3MmI5ODg3ZmE2ODllOTk0OWQzNDI2MTQ3MzY5NjliZDkzODdjIGxlZ2FjeS10cnVuaworNjE5MTQgNDZmODlmNDgwYmQ0YzUwY2QyMDEzZDdkMDBmMWNhZDlmMjg1NDAwYSBweTNrCis2MTkxNSA2MjJkM2IxMTY4YWEyOTRkMjU4ODkyOGI5YjhlMDJjMDA5ZWEyZTQ2IGxlZ2FjeS10cnVuaworNjE5MTYgZjk0YWM4ZjljZjk2ZDRlZmM0NDAxZGMwYWU1ZjZkMmNlYzUzOWUwMSBsZWdhY3ktdHJ1bmsKKzYxOTE3IDY3OTA5NTA4ZTA0MTVhNDBlMDU4MGEwZTU4YTRjNmIxZGY2MjJiOGYgdHJ1bmstYnl0ZWFycmF5Cis2MTkxOCBiNTFlNGI1MGVkMzBlYzI4ZDVmYTY5YTgxNjdmYzkxN2MzNjVlZmEzIGxlZ2FjeS10cnVuaworNjE5MTkgMTUxMTg1NjZmOTg3MjdiYzJhYWQwMWQ4YjQ2NGYxMjQ4MmFiNjY3OCBsZWdhY3ktdHJ1bmsKKzYxOTIwIDE1ZGEwOThiM2NkODVjMTQ3Yjc3Nzg4MmZiYzdiMDhkMGIzNWI2MzEgdHJ1bmstYnl0ZWFycmF5Cis2MTkyMSA0ZWE2ZjEyYmJlOGM2OWJlNjdjNGIzOWFiYmFjZmIyNjdiMzUzZDY5IHB5M2sKKzYxOTIyIDU0YjkwZDdlZGRiNzgxYTBhNWNhOGRmY2M3MWM4ZGU0MzU5ZjU4MGQgbGVnYWN5LXRydW5rCis2MTkyMyAyOTZjMjE4ZjM1Y2Y2YzM3MmFkNmZlMTNiNjc1OTU1YWUxMjdkZjhhIGxlZ2FjeS10cnVuaworNjE5MjQgOGY2Y2NkMDc1YTI0ZDgzNjY4YTRkMzc0ZTg2YjhkZTE1YjczYzAxMSBsZWdhY3ktdHJ1bmsKKzYxOTI1IDdkYTg5MTgxMDJmZWUxNTRjMThlMGVjYjUwZGE1YmZmYTQzNWYxNTEgbGVnYWN5LXRydW5rCis2MTkyNiBjZGRiMjk3YzI0NjUzYjY4NmNiNDMxNDg2ZGM3MzE4NGZhYjk0YzJjIGxlZ2FjeS10cnVuaworNjE5MjcgODVhY2M0MDgxMWIzZDY0NGNmNTJlMjU2MDkzMTkyOWQzOWJmNWRlNSBweTNrCis2MTkyOCAxYWI1Y2MyNTM0MWFkMTgxN2M4ZmZhYWUyOWRmNGEzOGRiMzNmM2ExIGxlZ2FjeS10cnVuaworNjE5MjkgMWRkMDAwMTZhNjljZWQ4ZWI3M2QzNjZmOGVhNWRiZGMwMzBhNDAxNCBsZWdhY3ktdHJ1bmsKKzYxOTMwIGQ1Nzg0ZmMxOWU3YWM3MDY5YjI4N2YyOWU4ZTcxOWZkMzNjYTA5MTIgdHJ1bmstYnl0ZWFycmF5Cis2MTkzMSA2ZWE0MWQ1MjM5ZTA3ZTZlZjY1NTllMThmYjk4MjYzNTg0YTg2OThmIGxlZ2FjeS10cnVuaworNjE5MzMgMWM3ZmE0YWNlY2IzYWQyNTY3YTBkNzc0NDQwOGM2ZjQzZWRiMWQ5ZSB0cnVuay1ieXRlYXJyYXkKKzYxOTM0IDlmY2NjZDU4ZDY1ZGJmOTM2NzcyNzgyMDcxMWIxN2FjMmIzMWQwZDcgdHJ1bmstYnl0ZWFycmF5Cis2MTkzNSAyMGZjNDFjMTdjYzdjNjA3ZjllOWYzNzRmMTg2MjFhYWMwMjUxN2NjIGxlZ2FjeS10cnVuaworNjE5MzYgNTM0MWIzMGIxODEyNWJmMTkyNWMwZDQ0ZjBjNDcyMzg5OGI1MTI4YSBsZWdhY3ktdHJ1bmsKKzYxOTM3IGNjMGQxOTc3ZjgyMGM3OTgyMGU2ZDY0ODZlNzg0YjFjYzQ3OGE1ZTEgbGVnYWN5LXRydW5rCis2MTkzOCAyZTdmZjM4ZTBhMTgzZWE4OGM0ZTJhNWM5ODVlMjE4ZDNjYTgyMTViIGxlZ2FjeS10cnVuaworNjE5NDAgY2NlZWE5OGNjZjM1Zjc3NGU4MmU0NTlhNDMwNDk2MWZiNGExNGYzMCBsZWdhY3ktdHJ1bmsKKzYxOTQxIDJiY2JkMzg4MmVlZWQ2Y2Y3MDg1YWEzM2FkOGUyMzJkNDY1NTY3MzggcHkzaworNjE5NDIgNGQxOTg5MjA0MDYyMGE0NzQxOGFmMDdhOWI0Y2Y1NzlkN2FkZTE1NiBweTNrCis2MTk0MyA4ZDZmZGUxNmU0OTNjYjI0Yzc1ZDE1MmQzODJkMDEzMGY0YjRkODE2IGxlZ2FjeS10cnVuaworNjE5NDQgNjRiZDk2ZmY5NGYxNDk0MTgzMTM0YjI2OGQ1NmUyNzljYmJmN2I1MiBweTNrCis2MTk0OCAxYjZjMGZmMTM0ZmE0YTFkOGE3YThmM2MwMDdhNmY5ODQ5NzQ1Nzk2IHB5M2sKKzYxOTUxIDk5NWM5OTYwZjdmZjM4MzRhOTFkNmMzZmYxNzU0ZTkwYjg3YzRjMzggcHkzaworNjE5NTIgZGNlOWQyZDkyYzg4MTQ3MmEwN2MyOGRiMDVjYzFlZmMzNjhjZWZkNSBsZWdhY3ktdHJ1bmsKKzYxOTUzIGM3OGQzNTg2YzQ3NGY2NjQwNjk1Mzk3YmMyZDdjYTVjZjg4MjY4ZWUgbGVnYWN5LXRydW5rCis2MTk1NCBkYWE2YWNlYWJkZmM1ODQ5MGY4YThkYTIyNmU5NDE5NDI3MDNlNjBkIGxlZ2FjeS10cnVuaworNjE5NTUgNzg1MDRkNjA0YjQ0OGM4YjVjZDhkZTUxYTI4MDZmMTVlOGU4NGE3NiBweTNrCis2MTk1NiBkMDBkZWQ4YjI2NzcxZDQ4YzA4OTgzZmIyNjk0ZTc1NmMzMTU0ZGY2IGxlZ2FjeS10cnVuaworNjE5NTcgYTkzNWM1MGNiNTFhYTQ1ZWViMWU0MjdiMzQ4MDUxYWVlNGQyMjdlMSBsZWdhY3ktdHJ1bmsKKzYxOTU4IDI0ODY3Njk4OGM1NDhmY2NjZjliMDU1OWYyYWI3NjI0NmNjNDE0MzcgbGVnYWN5LXRydW5rCis2MTk1OSAzOGZlNjRlM2IxMzE3M2FmYzkzMzllYWU0M2JkY2YzNzg3NGFmNjk4IGxlZ2FjeS10cnVuaworNjE5NjAgMzZkODI4ZDI3YzM2NDA5MTFlODZjZDZhNmZhZTIwMjg0OTI1Zjc4NyBweTNrCis2MTk2MSBiMDZhMTVlZmRjNmQxZjQyY2Y4NjkyYTg4ZWY5ODdiNTUwODFmZGVmIHB5M2sKKzYxOTYyIGFlMjgzMTU0MjU1ODE2N2U4NDNkYTcyNjdmOGEyNjg0N2E1NTc1ZWQgcHkzay1pbXBvcnRsaWIKKzYxOTYzIDVjMjcxZWY2Y2IzMjYzODNhZjcwNGM1MGZkOTRkOGU5MzYyMjRhZmQgcHkzay1pbXBvcnRsaWIKKzYxOTY0IGI0NWU3YjU3YTBkODJhYWQ1OGRlNzljYjgxNWZhOTcyNDZiOTc4ZmIgbGVnYWN5LXRydW5rCis2MTk2NSBlZjQwZWMzMmM1ZTRkNzczOWIyYTI1MDVkNzAyNGQ1MjhiYjBjMjFlIGxlZ2FjeS10cnVuaworNjE5NjYgODQ3OTNiZjVhNGJmYzBkMjYwOWNjOGEwZjIzYzE2NTlmYzNlNWMyYSBsZWdhY3ktdHJ1bmsKKzYxOTY3IDYxOTJkNWIxMmI2YWUxN2I1M2EyZGFmOGM2YTM5YTY3Njk5YzUxYjYgbGVnYWN5LXRydW5rCis2MTk2OCBkNzQwYzcxZjAyZmYyN2FiOWQ5NTE4ZDgzMzJjNjgwZWJjZTE3MTM3IGxlZ2FjeS10cnVuaworNjE5NjkgNTA3OGI3ZWUxNmRjMTcxZDY5N2JhMzE1Mzk4YTRkMDVjMWVjOTJhZCBsZWdhY3ktdHJ1bmsKKzYxOTcwIGIzNTA5NjBhZGU2ZDY2OTY3NzNiNzFmZTAzOTZiNmY2Mzc3NzViNWMgbGVnYWN5LXRydW5rCis2MTk3MSAzMTNmMzgxZmMwYTcxNzBjYzFlODFhOTc0YTc3YWMwNmQ0NTFjZTdkIGxlZ2FjeS10cnVuaworNjE5NzIgNmYxMzFkMmMzNjI4MjA5YmVmZmQ1ODk1Y2RkNTIzMzE1MzljZGZhYSBsZWdhY3ktdHJ1bmsKKzYxOTczIGVhYzQxZjkwMjk2YzY5YzZkMDdkMjlmMWZlYjQ1M2E0YzBlNDAwZDEgbGVnYWN5LXRydW5rCis2MTk3NCA2MjEzOGEwZjQyMzI2YmIwMzQwYmVlNzBmZDQ3YjExMTRmMmIzMTk0IGxlZ2FjeS10cnVuaworNjE5NzUgYTBlYTNhMGVmYzcxMDkzNGFkNjZlMzkwNzIxMTIzMGZmMjI3ZDZhMSBsZWdhY3ktdHJ1bmsKKzYxOTc2IGYxYWVjN2RlYzA1Y2EyMWViODM2NzQwNmRlYzk4ZWIwNmNmYTZmZDggbGVnYWN5LXRydW5rCis2MTk3NyBlMzlmNjliZjU2MTBlYWQzOTg1MTc3NDQ1OTA5YTdiYWY5NGY4YTFmIGxlZ2FjeS10cnVuaworNjE5NzggNTY0NDJkYjYwYTM2MmJmYjYyZTkwNDYzZjZkYTMxNDkzNmIyZGQ5ZSBsZWdhY3ktdHJ1bmsKKzYxOTc5IDMxYmEzZmExNTg1YjA5ZGIwYzgwMjc3ZGUyMTgwZWFjYzE2MDQ4ZDMgbGVnYWN5LXRydW5rCis2MTk4MCBjYjU2MzMwZDdhZGM4Y2QxMDM5YmU0MDRlZWNmZjkxYjU1YmEyYTdlIHJlbGVhc2UyNS1tYWludAorNjE5ODEgNmE2NmQzMjY3ZDBjZDRkY2E2M2Y1NjFmMTZiNjcwYTY1OTM5NjU2MiBsZWdhY3ktdHJ1bmsKKzYxOTgyIGRhNTU5N2E1YzE5NTgyYThlMzdkNTQwNThmNDE3NWI1ZmFkMTg3MmEgcHkzaworNjE5ODQgMTBhMzlhNjYyZTY5Y2E0ZGRmZmMyYmJmZWI3YjUwODAxYWQ0OWZiNSBsZWdhY3ktdHJ1bmsKKzYxOTg1IDE4ZTE5YWM5OGQzNGMwMTkzMzEyOWRjN2JhNzYxNGI0MTk2MjIwYzMgbGVnYWN5LXRydW5rCis2MTk4NiA1OWQwODI1OTFmNTY4MDQxYTBjNjNmNGE0ZTljMmRhZjZlMmM5NDI4IGxlZ2FjeS10cnVuaworNjE5ODcgN2ZkZmYwMmU2ZjQ1ZWE5ODQ1MWE3YjliYjMwNzAxOGU4ZDg2MzU3YSBsZWdhY3ktdHJ1bmsKKzYxOTg4IDRiZjYxZmNjYzRlNjg4MjQ3N2ZjZjNhOTRmNTk0NWFiOTc1MjZiZjcgbGVnYWN5LXRydW5rCis2MTk4OSA2ZTdiMjgwOGI5YTY5ZTc3YTliNWFmMWM4ZWRiMmMyYWIxN2EwMzVhIGxlZ2FjeS10cnVuaworNjE5OTAgMWQ1MDc0N2U1M2QzNjhiMGQ4MWRhOTIwNmYwZmQyMzljYTZjMDg4OSBsZWdhY3ktdHJ1bmsKKzYxOTkxIDcyMzIyNTlhMDUyOWU2OTYwMjlmMzQ1ODQyYTQ2ZWMxZDFiOWYwODcgcHkzaworNjE5OTIgMWUxMGIzMGY3NDk4YzNkNzJkYjlkZTNhM2NiZTc2MTA5NjZiNmQ2YiBsZWdhY3ktdHJ1bmsKKzYxOTkzIDMxMDNlYTNkZjQ5ZDk0YzdlNzFjNWEwMWJhN2Q2ZjZkYmRkYzQ5MDIgbGVnYWN5LXRydW5rCis2MTk5NyBiYmZjYmFmZWFlODQzZDAwYTk0YjFhZDNiMzBiZmM5NDI4MWJmNTFjIGxlZ2FjeS10cnVuaworNjE5OTggNjRmMmViNDE3MGYxOTYwYTI5NTY4MGY3ZmUxZTgzNTZiNjFhYmE2MCBsZWdhY3ktdHJ1bmsKKzYxOTk5IDY5ZDAwOTA3NDA4ODNlYjhkM2YyYjVlZjk4ODI4NjBkNmFkMmEyNGIgbGVnYWN5LXRydW5rCis2MjAwMCBmOWE2MjlmNDE2NTZkYTcyMGE1NGZkZmFmYjMzNGYzOWJhZjQ0ZGRmIGxlZ2FjeS10cnVuaworNjIwMDIgMjM2NWM0N2ZlNjRkZGMzNGVmMGNjYTYzYjU3Y2FmYzA0ODU3ZTBiMSBweTNrCis2MjAwMyA4NDgxNjBkMTA3ODA2MWNjYmI1ZDY3Y2U3MmIyMjQ1ZTM2OWU1NTJkIHB5M2sKKzYyMDA0IGNhMzhmN2E0YjRjOTU5NjhiODRhMjc0MWY0MWFlMzJhYzI0MDNiYzYgbGVnYWN5LXRydW5rCis2MjAwNSBhNDNiZTA3NDMyNGQyZjNmMWJlOTlmNmU0ZGQ1MmM2ZGY4MGUzMTg1IGxlZ2FjeS10cnVuaworNjIwMDYgMDlmYThjYjJiZmU4ZjRmMmFhNzUwMDE0MzFiZTUzNjdiYmE3MDdlYyBsZWdhY3ktdHJ1bmsKKzYyMDA3IGFhY2Y4YmU1MWY5MDMwNzg3NzA5YmM1Y2Q0NGFlY2FkZmUzOGE3MDMgbGVnYWN5LXRydW5rCis2MjAxMSBhMjE4NTRlNTEwYjQ3YmNjY2VkZTJkZWZhODczZDdiMDI0ZjEwMmQ5IGxlZ2FjeS10cnVuaworNjIwMTIgNjU0YWQ3NGFkZTEzMTIwMTZkN2Y1YmVlNTc1NDY0ZDk4NTFhM2FiYSBsZWdhY3ktdHJ1bmsKKzYyMDEzIDFiNWI2YWJiMWYyZWRlOWIxNDVhYTg0NjI3YmFiY2ZmMDk0MGNmN2MgbGVnYWN5LXRydW5rCis2MjAxNCBjM2U2NzRjYmQ3MmU5ZDlhYjQ1MTdmOTA2NzZiMDBkNjk3ODhmNTI1IGxlZ2FjeS10cnVuaworNjIwMTUgM2I5OTRmNzRiMTAwNDgyMTNlZmQyOGI3ZTU1YWE4MDk5NDVlNmY3MiBsZWdhY3ktdHJ1bmsKKzYyMDE2IGM3N2NjMjNlMzk0ZjE0NDgxNjEyYzA5MTRkZjRlOGQyNTA2MDY1MzUgcmVsZWFzZTI1LW1haW50Cis2MjAxOCA5NzM0YTQyY2ZhMTVlMDE1ZWNkZGI5ZjNlZDNiMmI5MTRmMjVkYmExIGxlZ2FjeS10cnVuaworNjIwMTkgYzRlZDY2NGExZGExYzBiMDFiMDlhOTZlZjNlZWE2ZTM1YzIxMTk0YyBsZWdhY3ktdHJ1bmsKKzYyMDIwIDNlYTNlNTFkMWVlM2ZhOGY2N2JjNDczYjI1NDg1NGQyNzg2YWU5ZjIgbGVnYWN5LXRydW5rCis2MjAyMSBlZmVmNGUzZmVkMTdkYWNmMmYzYmM3YzQwMjc4NDVkZjdkZDVlNDViIGxlZ2FjeS10cnVuaworNjIwMjIgODcyYWJlZDdkMDY5NGQ4OWI0ZmQ1NDk3MjlhNzZmM2ZkOGIyYTUwOCBweTNrCis2MjAyMyA3Y2UxYThmZDhhNzFjYTk3ZTZjMjZkOGZjZWVlZWUxMWEwYWQxMTVmIGxlZ2FjeS10cnVuaworNjIwMjQgZTA2ZTA4ZThmZGNlZGVjNmJhZGEzYjFkYTI4NzZhOWY4Y2MwYTA3MiBweTNrCis2MjAyNSBkMWUxYjc0MGY2ODQzODljMWVlYjJhODYzM2JhMmE1NmQ5MjYwODJmIGxlZ2FjeS10cnVuaworNjIwMjYgMGVhNWMwNTVhYjU0ZjQ2YjZmM2RjMjljMzkyNWZiODRjODIyZjk1YiBsZWdhY3ktdHJ1bmsKKzYyMDI3IDA5MDUzYTdjMWNkZmQ4MThmMDkyZjZhOGM0YzcwNDc4NDQwM2VhYzAgcHkzaworNjIwMjggZmU1M2QxYTM2ZWY2M2I5NGQxZTU5NWZiZjRlNWZkZjM1MzA2MDIyZSBsZWdhY3ktdHJ1bmsKKzYyMDI5IGM0NDBhNTczNzE0OWE3MTJkYjliZDQ1YWJkODQ2ZjU3NjdlYzM2ZDMgbGVnYWN5LXRydW5rCis2MjAzMCA2YjNhYzg5ZTBkZDQ5MjQ5YTEwOGQ5ZGM1Zjg1Zjg1NWMwOTkzODRiIGxlZ2FjeS10cnVuaworNjIwMzEgOTU4Y2Y3ZWNjYWUyNDk2MmQ3OTUwYmFiMjI3NTY1YjkzOWJiNTIwMCByZWxlYXNlMjUtbWFpbnQKKzYyMDMyIDBhNGRhMzk3ZTFkYjQ3YjA4NmNmZGIwMGRkYmY4OWIzYWVhNDM1MzcgcHkzaworNjIwMzMgZjE4NDMzMzdhNjZjMTVlNTMzYzYwMjBlOTBiYjdhZWU2ZmU0NDZmZCBweTNrCis2MjAzNCA0NjM0OGRlNjNmNjFhMGViYTdhMWYzNGM0ZDNhNGE1ZThlZDk5NzBiIHB5M2sKKzYyMDM1IDUxMTBjZjBlNWY4ZmVhZjI0MWNiOTBkZmYyZmY3NTAwMDVlNGRlYzcgbGVnYWN5LXRydW5rCis2MjAzNiAxNjczNmViNDAxNTBhYTdkNzg4NDA3OGZiYjEwNjc1YjJhYmNmN2Q0IGxlZ2FjeS10cnVuaworNjIwMzcgMjNlNDI1NzcyMjZhN2Y4NWZiOGFiMjcyMWZmZDc4MzQ4MDg5YzVhZSBsZWdhY3ktdHJ1bmsKKzYyMDM4IDZlMDJmZjBiZDZmODk0NGI3MTIyOWFiMTcxMDgyMDg5ODdmMDJhZWYgbGVnYWN5LXRydW5rCis2MjAzOSBiMGJmMDZkNDk2NDdkZDI1ZDFjM2QzNjZjODQxYTQ2MjkwOGY4NzYzIGxlZ2FjeS10cnVuaworNjIwNDAgNGM2NzhlOWM3YTMwNTBjMjQxMmIzNjE3NGExMDA1YTdjM2ZkM2JiOCBsZWdhY3ktdHJ1bmsKKzYyMDQxIDUxZWZmMmZkOTUyNzEzNjZjZTg3ODFkMTdmMmEwY2Q2MGViMDAwMmUgcHkzaworNjIwNDIgMGMyMWY5YjRhODMxYTQ2MTZhODZkMjYyYWVhYjY3ZWY2MWVmY2MzMCBsZWdhY3ktdHJ1bmsKKzYyMDQzIDAxYTdlNjY1MjVjMjYyNGNjN2MyODFkMzM2YTM4MzI5MGVmMGUyMDEgbGVnYWN5LXRydW5rCis2MjA0NCBlNDQ4NmMzNDNmN2ZhNjhkOWEwNzFiMDE3OWQ2NzVhNTFlMWQ4ZDljIGxlZ2FjeS10cnVuaworNjIwNDUgZWQ4OGY0ZGU0OTZmMTk4MDZiMzY2YTcwZWYyOWQ3NzJiY2ExNmNkZiBweTNrCis2MjA0NyAyZmY4OGFlOTg1MGM1MmU1Y2U3YWQ5YzVhMTJlZTE1M2E2MjE0YzgxIGxlZ2FjeS10cnVuaworNjIwNDggZTM3MGQ5Y2QxNDllYTI2MDRiYjc4ZjUxYTE3MTU1NjE5ZTU0NWNlZSBsZWdhY3ktdHJ1bmsKKzYyMDQ5IDQyYzVkMjg3YTg1MmU2ZjI4OTg4Y2Q2YjI1OTMyM2RhYzAwNzdhZWIgbGVnYWN5LXRydW5rCis2MjA1MCBmMDUxZTdhODBhY2M3NmI0MDI5ZWU1ODY2MjE0OTU4MWYyYjA2ZTE5IGxlZ2FjeS10cnVuaworNjIwNTEgMjllYTUwN2ZkOTk4MjIzMzc0Mzg3NDEwMjE2ODJmMDMxYzgyMzBjMyBsZWdhY3ktdHJ1bmsKKzYyMDUyIGMxMTIyMTkwNjE3MTFhNDUwMWU4NzZlMGQwNmU3M2U3MTFlOTgwMGYgbGVnYWN5LXRydW5rCis2MjA1MyAwN2Y3NWQ1NTE5YjQ3YjRjMGIxNzVkM2MzZjI1YWFmYmUxYjY4OTkyIGxlZ2FjeS10cnVuaworNjIwNTQgNTlkNDJlNmQxODg1M2JhMGZhZDk4ZjliZmZlNTE1NDA0OGQ1YWMyYSBsZWdhY3ktdHJ1bmsKKzYyMDU1IGVhNzViMTJmZThlNzZmOWJmZTgzMTNmNjg2MDRjOGQwMTRmMzI4YmMgcHkzaworNjIwNTYgOTgyNzZiZTY0NTc5ZmMzYzBjNjEzMWZmMmUyZjE1MWU1NzA1NzgzZCBweTNrCis2MjA1NyAxYzk3MjMyZDkzZmYzZTlhZTIwZTRhMTYxODVjNGFiM2EwNjFjNDg1IHB5M2sKKzYyMDU4IGU4OTk4ZTgwZWFmMmJmOGI1OTkwMTg1ODQ3OGNjZjdjZjZmOTViZGUgcHkzaworNjIwNTkgYmUxOGRmNjM0NDA1ODU5Mzk1NjA1MGM4Nzg3N2E1Zjg2NzNhMzExNCBsZWdhY3ktdHJ1bmsKKzYyMDYwIDMyZWE3NjU0ZmY5YzRlZjM1ZmQzYzk4YzdhMDJkODA3MmE0MTZlYTYgcHkzaworNjIwNjEgNGM3YmI0MDlkYWQ2ZDAwZDkwZDZkYWM0M2Y4MzQ5NzIyZDVkMTA1NiBweTNrCis2MjA2MiBhN2ZiNGQ4N2NiZGUzOTdkYTRmZWYzNWY2Zjc4ZTk5MGJkNmUyOWVjIHB5M2sKKzYyMDYzIDJiYzFkNWFhNzI5ZWU0OTZjNmU5MmZmYzgwZWU0NGU0YzkyYjQ5NjYgcHkzaworNjIwNjQgNjA0MjkxNGU4Mjg2NzdjYjI5ZTZkYTkyZjM4YTVlZWQ4OGIwYjFiYSBweTNrCis2MjA2NSBjNWIxNDlhZDMwMGY4YzA4YzFlYzM4ZWIzMmE5MWIwNjI0NzQ3YzFjIHB5M2sKKzYyMDY2IDU3YmJhYzUzMTkxOTgyOWIzM2ZkZmQzZDMxODZjZTU0Yjg3MDRhZDggcHkzaworNjIwNjcgNjAwZjJmZjhhYTllOTE3MGNjNjA5N2I1NzM1MTZlNjkzNmYzZjFjYSBsZWdhY3ktdHJ1bmsKKzYyMDY4IGZmYmU2Yzc5MDUyM2NkMjg4ZjE4OTFmOTE3MWUyZGVhMDY1OWIzNzEgcHkzaworNjIwNjkgYWVkNjk4Yzg2NDdiOTkxNGYwMTU3YmE3YTNhMTkyOTExMmNlODE3OSBweTNrCis2MjA3MCBmMGZhNjA1YjJhNzhhNjA4YjdmNzMyOTJlZGNhZTNkYTM3M2IzMTNiIHB5M2sKKzYyMDcxIDM4ZjhkZmVjZTk4ZTViZDgzYTczYzZiZmQwNzUzMjM2MzI5MTliOTggcHkzaworNjIwNzIgODY0NTc0YTljZDI2ZWE2ZDVmNTZhOTdlYzhlNGI5OTA5ODA5NzY1NyBweTNrCis2MjA3MyBlOTAzMmY1ZGQ1MzliM2E2NDkyNjE2NzE1Y2IyZTk0MDMxZTA3ZTkwIHB5M2sKKzYyMDc0IGIyZDkzYTk2MGI5ODkwZjZkODMxNjM1ZTg4YzlmYjNhZmY3OGI5MDYgcHkzaworNjIwNzUgZTNkYzg2N2I2MTgyZWUxMjhjMjViMDAxNWVmMDgyZmFhMmE1YmMwNCBsZWdhY3ktdHJ1bmsKKzYyMDc2IDA3YjM2ZDJiNzUzNGM1YzhiYjQ5NmE3MmE5MWY4MGNjMTFmY2MzNzIgcHkzaworNjIwNzcgZTQ3NDgxNzY0ZTU3MzA4NDg4YTE5ZTFjYjM5MjM0MWMxZDY0MTk0MyBweTNrCis2MjA3OCA4MWVlMjcwYTZlYjU0ZjAwMzcyMDA3MTM3YmZmYzQ4MmRmMzUzMzI3IHB5M2sKKzYyMDgwIGMzZWUwZjBmYmVlMWNlZjYyNGIyMDRjYjhiM2VhZWZmNmU0OWEyYWYgbGVnYWN5LXRydW5rCis2MjA4MSA2MWM5MjkyM2NmN2ZjZWIzZTkyZjBmNWJjNzczYjdiOTg4NGVkOWEzIHB5M2sKKzYyMDgyIDQxNTE1NmQ0Y2JkMjBjOGM2MmVhOTE4NzQ4OTE2ZTEwY2ExNjczZTEgcHkzaworNjIwODQgYzcwMTVlMzU3YTJjOTc5YzQyNDJiNmYyMjU4ZDAwODU4NjM3NDhkZiBsZWdhY3ktdHJ1bmsKKzYyMDg1IDE3ODgxZjk2ZWEwMWUzMDQwZjFhNmY5MmIzM2E0ZDIwMDk2ZjNhZWMgbGVnYWN5LXRydW5rCis2MjA4NiA2ZGVjZmUzOGE4MDkxOTlmMTI1ODg1MDIxODg0OGMwNjljOTVkMGRjIHB5M2sKKzYyMDg3IGQ4NmIzMzNjNzJlNzQxYjljNmEyMDc3YjBiNmY4OGNmZjYwOGRhOWIgcHkzaworNjIwODggMzBkZDYwNjk4NjcxZjFiODY2NjU1ZDhjN2Y4MDE4YWNmMjI2MDI1OSBweTNrCis2MjA4OSA1YTE3ZDE1N2RmMDAxNjQ3YjYyMzI0ZDg5OTg1MjJjNzdlNDBiNTVkIHB5M2sKKzYyMDkwIDdkZmY1ZTQxZmE3YWUxYmIwMjc0NTdmYzAxYmU4MDBmZjFhNDA1NWYgbGVnYWN5LXRydW5rCis2MjA5MSA0YzUwNjVkZGI5YmQ2Mzg4MzMwMDJmMjM4ZmU2NDUzNjQyNzJmOGU4IGxlZ2FjeS10cnVuaworNjIwOTMgYWI0ZjhjNDZjM2Q5YjZkYzY5NjZhOTgzNTA5ZWE1ODc2YmNiZDg4NiBweTNrCis2MjA5NSA0Nzc5ZTM0OTZhZTFhZmJiZmI4MTJlYjZlNTUyMzJkZWIzNjEyNGM1IGxlZ2FjeS10cnVuaworNjIwOTYgMDczMGYzZDUwY2RjYTFiMTZkM2RkMmFmZTQ4Y2M1OGFjNWUxOGY3MCBsZWdhY3ktdHJ1bmsKKzYyMDk3IDFjNzhkOGU4NzY1M2E1ZGZiMjc5MTgxNWEzY2I3NWNmNjAzNTY3MWQgbGVnYWN5LXRydW5rCis2MjA5OCAwYjM3NDc3MjU0ZjY0MTgwODI3Njg3ZTI0ZGNkMmQzOWViYjIzODkxIHJlbGVhc2UyNS1tYWludAorNjIwOTkgNTkzOTkwMGQ5OGQyMTQ5OTE4YTFjZjRmOWI0MWFlODc3NmQwZDgxOCBsZWdhY3ktdHJ1bmsKKzYyMTAwIGQ2ZTEzMzNlNjA3NWNmNDFjZjJkMWNiNzU2NmRmOWViNjcwOGE3YjAgbGVnYWN5LXRydW5rCis2MjEwMSBjN2MyNTIwNDg1NTUzNzY4ZTQ5OWE4M2ZmZGZhYzQyNjk5M2IwNzVhIHB5M2sKKzYyMTAyIGY3NTM5MThhYmU2NTI4MzhiMWIxM2YyODM1MThmYTFjNzYzOTgxMmMgbGVnYWN5LXRydW5rCis2MjEwMyAwYjJhNGExMjQ1YTNjOTY2NzE2NzZhZWNlODc2MjQzOTRkNjgxNGFiIGxlZ2FjeS10cnVuaworNjIxMDQgYmI0YTU0NzQzMGY4NWNlMDM1Yzg4MTRmZDBkYzAzMDBlOTQ4YmFmNiBweTNrCis2MjEwNSAwM2VkMDExOGU3MzM3NjAzOGNkYWNmOTIwOTlkNDU5NzFkYzdjOTk2IGxlZ2FjeS10cnVuaworNjIxMDYgOGU2YTRjYzdkZmMwNGRhNjk0YjlkYzM0OWZkZjQ0MjQ2NmRjOGFmNiBweTNrCis2MjExMCA4MTE3OTA2YjdiYTc1ZTZlMmI0OThmMDI2MWRhYWEwNTg1NmY0YTVlIGxlZ2FjeS10cnVuaworNjIxMTEgYTE3MmMyZTM4YWM5ZTJlYTYyZWQ5ZThiNWViYTFiNjY2OGUxNmI2MCBsZWdhY3ktdHJ1bmsKKzYyMTEyIGE5NDQ2OWM3NGI5ZWI0YmIzMmQ4ZWIwNmI4NGQ2YzI0OWNiMDg0N2EgbGVnYWN5LXRydW5rCis2MjExMyAwYTVjODYzNTBhODkyNzYxM2ZhNDUyNDlhMDA5M2NjMzBhMzE5NjNjIGxlZ2FjeS10cnVuaworNjIxMTQgMmIwZWNjN2ZkN2VlYTI4MmRkYjEyZjRlYjM2NzBjNTFkYTQ0Y2ZhYiBsZWdhY3ktdHJ1bmsKKzYyMTE1IDIwNWQ3ZmQ1MGQzNWE5NmNhYjYzNjk5ZWYyNjJmZDIzYWZlNjg5NTIgcHkzaworNjIxMTYgZjU0N2ViZjAyODQzMjg5Yjk0ODFkMTllOGY1OTYyODc3MWZhZDYyNSBweTNrCis2MjExNyA4NzkxYWM5Y2JjY2Q1YmYxZjJhMjU3ODFlNmQ0ODJjYjgzYjQ1ZGFlIHB5M2sKKzYyMTE4IDk3NWJkMjE2MDUyNzBhMDdkOTI1N2M5NDZhNzk1YjQ4ODhjNmE5MTEgcHkzaworNjIxMTkgMTVmNzczZjczMDBlMzcyYzU2YTIxZDU5ZmU0OWNhMjY5NTVhNjQ3NyBweTNrCis2MjEyMSBlY2FiMDM3NjZjYWNjZjM0MTdiZjRmZjlkNzVhM2Q5YTc3NWE0OTU0IHB5M2sKKzYyMTIzIGVlYzE0NDkxN2ExODliZTExZWQ1ZWZhMzVjNjYwNGQwM2JjNjJiY2MgbGVnYWN5LXRydW5rCis2MjEyNCA3NmE4MWVmOWIzNzkxZTk0YzM2YTUwMmE5YjYyMDViMDQ3NjVjYWNiIGxlZ2FjeS10cnVuaworNjIxMjUgYWE5YmFiYjlhNDhlZDljYzI5YjkyZDhiZmJiNmFkNjYxNDJkYTM5MSBweTNrCis2MjEyNiAxNjE3YmIwNWE3OGFkODE4M2MyZGEyNjM4NzIxMDE4OTdiMzZhMTZkIGxlZ2FjeS10cnVuaworNjIxMjcgNGQ4M2I4ZDAzMjk5ZjVhYTFmYTRlNzM0MTNhZjI0ZWU0NGQwMDZmZCBsZWdhY3ktdHJ1bmsKKzYyMTI4IDI4NDhjNjU3YWYwYWU3NGY2MzBiZjM3ZTEyMTNjOThmNzk1M2RkM2UgcHkzaworNjIxMjkgOWRjZGE1NmI4NzFlMWNlYTBiMWU5NDhkN2NkNGM2MWJjOThjNWIzMyBsZWdhY3ktdHJ1bmsKKzYyMTMwIDgxNDIyZjFkZTg5MDlkYTNkZDM3MmE0Y2NlMzM0NTIyOWFiYzIwMTEgcHkzaworNjIxMzEgOTczNmMyMGQyNmViNmY2NDhhZDMxZjRkMjYzZTc2ODMwNGZkOTQxNCBsZWdhY3ktdHJ1bmsKKzYyMTMyIGRkZmU5NDc0MGVkZWE1N2U4YmJlZGIwMTk5ZDE3NWEzN2I3MDBjNTggcHkzaworNjIxMzMgYTcyZTkxNzQ5MWE0ODY4NDI0MzhmNzM4ZjgzNjkwMGViMjdlZDlhZSBsZWdhY3ktdHJ1bmsKKzYyMTM0IDY3ZjFjNDY1Mjc5Y2JjMWQ0ZTFmOGI3NjI5NjI0ZTJmZGYzYzk5YjggcHkzaworNjIxMzUgY2MzMzMzYjdiZDkzNjY2OGMxNjc4MGQ4MGYwM2RkM2NmNmY5ZTkzYiBweTNrCis2MjEzNiA3NmY1NzdhOWVjMDMzZmRhMDgxNDBhYWQ3OGY2NTk1YTA1OGNlNWI1IGxlZ2FjeS10cnVuaworNjIxMzggMDNiMjZmOTFiZjZkMDUwM2EzNDIyYmRkNTc5NDQ1MTA5OTkyYzI0NiBsZWdhY3ktdHJ1bmsKKzYyMTM5IDRiYTY4MTk1YTUxMTYzMjYzY2U5MzQzMDY5YTBmYzA4Y2Y0MGYxM2IgcHkzaworNjIxNDAgN2MwODFjMGIwZjU1ODhkYmMxYjAzNDhlY2U5ZGJkMWE0M2I5ZTkwYiBweTNrCis2MjE0MSBhYzVlNGQ1NGIyM2U5ZDU2ZTJlMTczNDg3OTAzYjMzNmZlMTZiMzk0IGxlZ2FjeS10cnVuaworNjIxNDIgZmIzYzliYjc2YjI5NDU4ZmIzMzg3NTMzOTQ5NzEwOWM0NjE4MTk5MCBsZWdhY3ktdHJ1bmsKKzYyMTQzIGQ4MThmNmQyOTM4NDdhN2YwYjExMTljNTIwYzIyZDdhNGJjNGUxYTEgbGVnYWN5LXRydW5rCis2MjE0NCBjY2RkYzU2YmQ1YjA3MGZiOGZmNjhlMjM0YTJjY2QyNGQ1MGY2M2M3IHB5M2sKKzYyMTQ1IGIyOGEyZDI1ZmQ5MmRjMDU2ZmQ1NmUxZTU3NDFmM2M4ODgwNmI4NWEgbGVnYWN5LXRydW5rCis2MjE0NiAzZDAzNTJhNTQxY2U1NjYyYjY5YWU0Yzc0MjZjODc0NzRiYTE1OWFmIHB5M2sKKzYyMTQ3IDRhMTEzMzAzZjMxNjU0MmRjN2QzM2YzYTIxOTkxZjcwYTVlNjliYjcgbGVnYWN5LXRydW5rCis2MjE0OCAzOTllNzRiYjEyYzdkZDBmOTAxNzNmMGRmNmQ5ODc2NmU2MzdlOGYwIGxlZ2FjeS10cnVuaworNjIxNDkgODI3MzE3Njg5ODZkNDc0OWEwYWUzOGI3MTgxMWJjZmZjNzA5OTBmZCBsZWdhY3ktdHJ1bmsKKzYyMTUwIGMzYTc3MjU4OGRiNzZlYmRlYzVlZTg2ZTgwZmFjNGQ4YzM2YzExMDUgbGVnYWN5LXRydW5rCis2MjE1MiA2YWJlMjViOTkyNGJhYzlmM2FkY2RjYzgxNGI2ZTUzN2E3YmI0MTg4IGxlZ2FjeS10cnVuaworNjIxNTMgNjFhMGM3NmVjZjg3NmVlNWM3MmQ3NTk4ZTQ4MDVlZDBhNTVjMzE5ZCBsZWdhY3ktdHJ1bmsKKzYyMTU0IGExOWVjNGYxNzI3Nzk3MmEzZDVlZWQ3NmY5ZGZlMzYzNWNmODE5YTUgbGVnYWN5LXRydW5rCis2MjE1NSBmODA2ZmQ5OTQxZGE2OGM0NTVkNmMwYmI2Y2RhMmI1NDJjMGNiNmU3IHB5M2sKKzYyMTU2IDBjZTdhMjM1MmE1M2VhMDc4MDBmYmVhNzJkMTMzZjE1ZjBhNzk4MTYgbGVnYWN5LXRydW5rCis2MjE1NyBlODkxNmM2NGRmNGM1ZmI1MDBmZDI2YzQwODIwOTZjMDFkODg4N2ZlIHB5M2sKKzYyMTU4IDQ5MDFlNzVmNzc1YWUxYWMwMjUyYWQzNTI3NGY2NTc4MjM3Yjk1MWYgbGVnYWN5LXRydW5rCis2MjE1OSAzNzI2ZGU4Y2I4ZTFkM2MwMDQzMGFlN2ExYzhmYTExNWQwN2NmNThhIGxlZ2FjeS10cnVuaworNjIxNjAgZjRiZjNlN2JjYmU4MGFlMjRhNzFkMTgyYzEyZTMyZWMxODA0NzEyMCBsZWdhY3ktdHJ1bmsKKzYyMTYxIGRlNzc5NzNkN2UxYTBjNGQyZmM1OTRjOGU0YTRlMTAwODY5MWE2M2YgbGVnYWN5LXRydW5rCis2MjE2MiAzNDQyZTllNmIyY2YxOGRmYTY1MDdiNTIyMjc3M2E0YWM1NWNkN2NmIHB5M2sKKzYyMTYzIDljOTI2YjBhNjQ4ZjQyNDhkZGQ4NTRjNzk4MzkwN2EzYjY5YjI5OWUgcHkzaworNjIxNjUgYjEwMjkyZWFmYjA3MzcxODI3NWRlNmQ1NGM5MzNmZGZjMWZhYTYwOCBweTNrCis2MjE2NiBjM2RjYzBjN2JmZDk1N2UxMjYzOGQxY2UwN2I0OTFlNGFjMzlhOTM5IHB5M2sKKzYyMTY3IGExYTUxOGJlNTQ3ZGQ5MmM5YmJhN2FkNmE4NzRiZjBlYzYyMGJjMWQgbGVnYWN5LXRydW5rCis2MjE2OCAxMDU1ZjM2OWIxZmNlZTA3OWEyY2Q5OGFmZDlkNWVjNzM1NTc2MWZjIGxlZ2FjeS10cnVuaworNjIxNjkgNjI1M2E3MjFkOGE2YTJiM2U2OWIzNTlhMmY0OTJiYjdlYjEwMWNkMSBsZWdhY3ktdHJ1bmsKKzYyMTcwIGUzZjdkY2ZhYTAzMGNiZTg0ZjViZGEzNGZmYmE0OWFmY2FlN2ExMjAgbGVnYWN5LXRydW5rCis2MjE3MiA4NTMyZDU2OTE4NTA5YWI4ZTExMmMzMTM1Y2MxMGI0MDkxYzRhZTQ5IHB5M2sKKzYyMTczIDEwZDk0YzhjODQxNGFiNjcyZTIyNzgwYjAyYmJlZGRiZDdiYTQ3NjMgbGVnYWN5LXRydW5rCis2MjE3NCBmODRjZGZjMjIxZDEzNWUwZTJlMTNlNWJkOTI1ZDExMjlkZjE2NDZiIGxlZ2FjeS10cnVuaworNjIxNzUgYmM3MDBhZDAyOTYyMzE4NTI2NGU4YzVkMmQyMTZiZWYxMTJiYWYyYyBweTNrCis2MjE3NiA0MzUyZDQxYWZmYjAxYjI1ZjBmMTYyOGJmM2NiYWU5OTE5ZTE2OTk3IHB5M2sKKzYyMTc3IDg2NGE1NjcxYzdhNDNjYTc3MWM0NmJjNjc2ZWE1MjZkNTI5OTAyNmEgbGVnYWN5LXRydW5rCis2MjE3OCAyMmE3NGVhZjZiMjI1M2ZjMTI1YjA3OTFjMmU3MTI5N2I5MWNkOWEyIHB5M2sKKzYyMTc5IDQyYTc1OGY5NjFhMTc5MzNjZWUyYmEzNmMxODY5ZjgwMzAyYWQ1ZDMgbGVnYWN5LXRydW5rCis2MjE4MCAwMTJkOTdiYmVlYWY2ZjZjMThlZWZkNDU0MTBkMzQyZWE0YWIyM2U1IGxlZ2FjeS10cnVuaworNjIxODEgZTUzZjJjY2NkZjFkNzFiMjc5NzAxNzljNGY2Y2Q2YmYyMTE0NmMzNCBweTNrCis2MjE4MyBmYjVlYWE0YmU3MDA5MWE2ZWVjNDVkZjcyZjVjZWUyZjYxZDg0OWVlIHJlbGVhc2UyNS1tYWludAorNjIxODUgZjQ2Y2QyNDBlMTA1ODVjOTQ5MDU1MmY2MjdkNzgwNzcyMTUzYzlmNSBweTNrCis2MjE4NyAwMzUyODllNmZlMjM1ZGQzMDRhZTQ4ZDZjOGIxNTU1NGE2MGE2YTAxIGxlZ2FjeS10cnVuaworNjIxOTAgYzdkYTMxYzJjNDVmZjdiZGEwYmEyN2MyYmVjMzMyZTIyODUzMTY5MiBweTNrCis2MjE5MiA5YzY0NzU0Mjc2MDUyMTQzMmY3Nzg5ZmM1ZmFjOGFkY2Y2ZmEwN2E0IHB5M2sKKzYyMTkzIGUyOGVkODVjYzk2MmRkNzQxYzgxZjkyMTg4OTkyNWY4MjY5MTJiNGEgbGVnYWN5LXRydW5rCis2MjE5NCAyN2QzMjQzNjBhNjNlMzE0ZTIyYWEyYTgxMDBjY2JhM2ZmMjM5MDQxIGxlZ2FjeS10cnVuaworNjIxOTUgODZkYTkyOThiOTA4YjhjOTc2YjgxZGEwOTIxMTNiYjljNDI1YmUyYiBsZWdhY3ktdHJ1bmsKKzYyMTk2IGRmNzYxOTUzOTYzMWEyNjhjMmUwNjlhMDIwY2U4ZGE0ZWIyODhmZmEgcHkzaworNjIxOTcgYTkzZDI5MTllYTU5YmRkOWEwYTEwZDY0NDYwN2NiOWJmMWIyMDA5NyBsZWdhY3ktdHJ1bmsKKzYyMTk4IDRiZGJlZjcwOTUxNTVhYmNmOGIyZjk2MDRhZjg3NWMzOTk3M2ZkMGUgbGVnYWN5LXRydW5rCis2MjE5OSA0ZTcyNDg5ZjE2ZDA1MGFmYjU0NzM0NzVkNzNlODkxOGFkNDdmMWMxIGxlZ2FjeS10cnVuaworNjIyMDAgM2FiNTQ3NGJkZTQ1N2Y4NGVmNTA3YzM3YThkMjY0NDFhYmZmMTk0OSBweTNrCis2MjIwMSAzZDlhZDI3ZDkzMGIwNzhlMDEwZDE4MGZhNzM1YzlhYjI5ZWViMzAzIHB5M2sKKzYyMjAzIDU2ZTQ5OTUyZDFhNGY2M2JjNTM5NDkyYTBkN2IzYmQyMDRiZDdlY2YgcHkzaworNjIyMDQgMmQ5NWY3YTk4M2Q4MmQ4MGZkOGNiYWI0ZGIxOTk3Y2Q0MWNiMjJmYiBsZWdhY3ktdHJ1bmsKKzYyMjA1IDI3ZGYzYjgxMzUxODI4ZDM3NGQ3YzkxMGYxNjk0OWMwZDEzZjUyMzQgbGVnYWN5LXRydW5rCis2MjIwNyBjMjY2NzBmMWU1MjBmZWY0ZjE4MDIxYWJhMmFkYzY5MTRjNzBmY2ZjIGxlZ2FjeS10cnVuaworNjIyMDggMjNiNjVmMmQ3NjIxOWQyOTliZjBhNTZhMGUxMGQ2NjM5ZWM0ZDA0ZiBsZWdhY3ktdHJ1bmsKKzYyMjA5IDBiZTQwMGNiZDViOGEwMmM2Y2E5ZTNjNjM0NjZhMjA0MWNmZThkM2IgbGVnYWN5LXRydW5rCis2MjIxMCBkNzZlNTlmYmYwNmQ0MTdjNzUyMmU4YzU5YmQ5MTE2M2Y2Zjg2NTA4IGxlZ2FjeS10cnVuaworNjIyMTEgZmQ0N2E5MDA5MDVjMmQ2ZmY3YmM2Y2ZiZmVmYWMzMTRhY2MzNWM4YiBweTNrCis2MjIxMyA2MGNkYjY3MDNkZjMzZThiYmI2YjgzY2I2ZjI2MmJlYzAxMjgwN2I1IHB5M2sKKzYyMjE0IDA5ZjM2ZDU3YzlkNjEzYTkzZDQwZWE0MGFiNDY3MWFiZjM5NDZmOTggbGVnYWN5LXRydW5rCis2MjIxNSBmOWM2MWM5NmE3Njk1YjBhODUxYTBhODA5MWM0YjA0ODgyN2VkMmI2IHJlbGVhc2UyNS1tYWludAorNjIyMTYgY2QwODE4NDYzN2M1OGJlZjI0YTBjODBmOWM4MmRmZTM3YzRmOTIyMiBweTNrCis2MjIxNyA4OWRkMTYyZjE1NWJmY2E5ZTNkOTIyMTNkM2M4MzE4ZTM1YTM4NDA0IHB5M2sKKzYyMjE4IDQ1ODlkODMxYWE4MGJiZTUxNmI4MTg4MGE0NjVmMjEyYTA5MTY2OTggcHkzaworNjIyMTkgMjE4ZjJkNTVkZTQ4ODFhYzFkNThhYjc3ZjUwZDcwNjM5NTYwMDM3OSBsZWdhY3ktdHJ1bmsKKzYyMjIwIDQzNDgzNDMyMTkyNDg5ZDljOTNhMmZjYzVkNTYzOGQzN2ExZTE5ZDcgbGVnYWN5LXRydW5rCis2MjIyMSA2M2EwZDMzYzRjZDM1NDk4NjM2NzY0MzZlMzJhNDI4ZWE3NDAxMjQzIGxlZ2FjeS10cnVuaworNjIyMjIgMjcwZDc5ZjkwMDcxMWViZDQ2NGIxMTVkNzJkMTIyZjEyYWEwNGYxNyBweTNrCis2MjIyMyBlMDI0Yjc1NTI3OTVlY2I5ZWQ2NjdiMzkyZWE5ZmFhODUxZTVhZTVhIGxlZ2FjeS10cnVuaworNjIyMjQgNjNmOWE4NTI2MDllMzE4ODZmMTJmZjUwY2Q5YTEyZGRjNjc3ZTcwYSBweTNrCis2MjIyNSBhZTY0ZmExYmM5Y2JiNGI5ZTQyZjEwYzRjMmU4ZjM4Y2IzNGE5OTI0IHB5M2sKKzYyMjI3IDUwZjUxODRlZWVkOGQ4YWYxMWNmMWM4MTgyZDYyNjI0MGQwOTFjMDEgbGVnYWN5LXRydW5rCis2MjIyOSAzODJkNWVhMTdkNzhhNDhkMmNhZWFhMDI2MzM3YTUzYWQxNGIzZGQzIGxlZ2FjeS10cnVuaworNjIyMzAgODU0M2Y4YzgxZGEwODhhZDI3ZDJhZWZiZWJiMjNiZjExZGY3NTEzNiBsZWdhY3ktdHJ1bmsKKzYyMjMxIDFmMTU0NjNhZjk4YzM5NGEzMTdhM2ZhNzY3MzNkNDFhMTZkODZlYzMgbGVnYWN5LXRydW5rCis2MjIzMyA3ZWJlODFiMWU0MjMyYTVhNmZkZWViNjY2YWIzOGM0ZTIyMmU2ODBmIGxlZ2FjeS10cnVuaworNjIyMzQgZDkxN2RhMmIxOTQ2ZTEyYzQ2ZjUyMzI2YThlNjdhM2Y1YTUxOTAzMyBsZWdhY3ktdHJ1bmsKKzYyMjM1IDI3YzcxMzlhOThlZjdlOWU2ZDExYzQ0NzQ5OGJlMTkzMjg0NDc4YTkgbGVnYWN5LXRydW5rCis2MjIzNiAwNDk4ZWJiNmM0MWI4MzA5ODI2MTgxNjM5YWNiOWJlOWRiMzcxNDJiIHJlbGVhc2UyNS1tYWludAorNjIyMzcgN2ZkMjc0YTU4ZDVjMWUwZWM1ZWI4N2U3MWMxZTljZTJjOTdhYjM1YiBsZWdhY3ktdHJ1bmsKKzYyMjM4IGFiZGM4MWUxY2I1YmE2NTViZGJjMmQ0MTJlZGJjOWUwYmFlYTJhNWMgbGVnYWN5LXRydW5rCis2MjIzOSBhZjRjNDZiZjNkMDk3MmI3NDU3MDBlZDA0M2YxNzU0YTcyYzQzNDk5IGxlZ2FjeS10cnVuaworNjIyNDAgNjA4ODVmOGU4NTc1Y2U2ZTRmNmRhNjA5MzAwNDU0ZTI0ODk5ZjMwZiBweTNrCis2MjI0MSBhZmM2MjFhMWJjNDE5MDM5OGZkZDQ0YmIwOGY2ZTdlYTVmMDZjMjI0IHB5M2sKKzYyMjQyIDJlOTE3YjBjOGY2ZTg5MmJjNGRiOGExZmRhNWU2ZmJmYmNkY2YyNGEgcHkzaworNjIyNDYgYjNjZDAzMzljYTc3ZTk3OTE4OThjZjE2YzJkODc5ZGFkYmY1Mzk4ZCBsZWdhY3ktdHJ1bmsKKzYyMjQ3IDJjNDU1M2Y2NTkyNDM1MTZiODcxMGMwMmQ5MzBiM2JlMTAwN2Q4NTQgbGVnYWN5LXRydW5rCis2MjI0OCBiZTdiMGViNTk5MGM2YjYxYTk2NDI4YTE3ODRlNjRjMjk2MjFjYWRmIHJlbGVhc2UyNS1tYWludAorNjIyNDkgYWZmMzgzOWQwMzk0MWFkNDVhZDdjMWM0OWVkOGUzMTRiYTE4YWRhZiBsZWdhY3ktdHJ1bmsKKzYyMjUxIDVhNTY5MmUzYzliZTIyOTU0NzFhNjZlODRiNGZjYTQ4OGJkNWViZmUgcHkzaworNjIyNTIgZmYzNGVmMGE4MDk2NDhjZGMzZTA5YjU0Njk3NzBlOWFhOTkzMDU1MyBweTNrCis2MjI1MyAxOGRiOGM0ZDQ0ODdhZTY5YTNkZWVlMGFmYzY1ZmM1ODQyMTI3NzY3IHB5M2sKKzYyMjU0IGVmYTljYzNiZDdmM2ViYTY4ZmE3OGU0OWRjMmIxMWI2YWUwNTk1ZTggcHkzaworNjIyNTUgMTFiMThkZDE1OTAzZWI5YzNiYTY3MzIwMTUzOGY3NTExOTgyYzdlZSBsZWdhY3ktdHJ1bmsKKzYyMjU4IGQ4Yjc3MWJlMjFkZjQ0OTlhMjRiMDllNWE2YjM1ZDViYmU2Y2Y3NGMgcHkzaworNjIyNTkgMzYwMzI2NzY3Mjg4MGE0MWM1YTg5N2ZhMDNiOWVkMmQ3NTQzNzc0MiBsZWdhY3ktdHJ1bmsKKzYyMjYwIGNlMzE4NzQ2MjAxMWY2ODM4NmNiNTBlYjk5OTRlZjdkNWQzZGYyN2QgbGVnYWN5LXRydW5rCis2MjI2MSAwYjU1ODc1YzFjOWMxZDY2MGY3MzFhMzI5NTlhOTE2ZTllMzVmNzMwIGxlZ2FjeS10cnVuaworNjIyNjIgY2Q0YjFmM2ZkMWE5NzQwNzUwMjY0M2IzMDRmMWVhOGZmNWZhODJjNyByZWxlYXNlMjUtbWFpbnQKKzYyMjYzIDg0MmE2YzJjOWJjZDJhNzMwY2NjNDU3ZjIxZjZiMmNmNWY0Y2Q0NWIgbGVnYWN5LXRydW5rCis2MjI2NCAyMjg3YTRhYjI0ZDg3NjExOTg4ZjUxNmI0YWM1ZjI1YzFmZTgwZjVhIHB5M2sKKzYyMjY1IDNjZTdjNzk2YmNhMTI0OTViY2EwN2I3ZmNjYmVhNjBkYTRiYzBhYTEgcHkzaworNjIyNjYgOGQ1NTU4NTBmNzNkOTY4ZmQ2N2NiMmJhNmNhMTVmOTI3MTc0ZTdiMiBsZWdhY3ktdHJ1bmsKKzYyMjY5IDdjOTljZWRjM2U1NGE1ZWZiZjhkYjNhNDAzNDQ5NTcxM2M4Mjc2YWEgcHkzaworNjIyNzAgNWU1NWQ0Mjc1YTA5NDEwZDI5NmI3NzFiMDZmYzk0NjZlOWZhNWYwYyBweTNrCis2MjI3MSAxYWFhYjMyMTgzZjIyNzQ1ODU5NmFlMDNmOWFkOWNiYzZmZmNjMGY3IGxlZ2FjeS10cnVuaworNjIyNzIgMDQxMGZmODE4ZWM3OGVmMWIyMjQwYjNhMjdlMDA5MmVjZGJkNTg5MSByZWxlYXNlMjUtbWFpbnQKKzYyMjczIDY0NWM1MzVmODIyMzI2ZWI3NzAxODY3NjNmMDc3ZGQyYzY5NjM4MjEgcHkzaworNjIyNzUgODQxNmNkZDExYzExNzIxODAyZTlkMjc1NjcxNTQ3NDE4NGJjYWRlNCBweTNrCis2MjI3NiA2MTk2NTI5YWZkNzM4NDc1ZjU5YmYwYjc3ZGFmNTEyMTVkN2EzMjkxIHB5M2sKKzYyMjc3IDI5YTdiZWM2MTBjYmYyMzljZTlkODVlMjA0NGYzYjkxYWM0NGI3NTYgbGVnYWN5LXRydW5rCis2MjI3OCA0NWZkYWU0Y2RiNTU3ZjJhNmM4NTBkZTg5NTIxMjc1NmY5OTI5Nzk4IGxlZ2FjeS10cnVuaworNjIyNzkgZGRjZTdjOTQyMWQyZTk2ZmQ1NWE2ZTljZGVhMjI1NTBmOWNlNWEwMyBsZWdhY3ktdHJ1bmsKKzYyMjgwIGFmYWMzZmY2MGM2YzVjMTA4ODE0NzNjYTM2MzVjMzIzZjYxOWRlYmMgcHkzaworNjIyODEgMDk0YTljZTRiOWJkNGZkZGYzYWJmOTQ2ZjM4NDdlNDViMmI3YjA0YiByZWxlYXNlMjUtbWFpbnQKKzYyMjg0IDk3OTc0ZDk2NzEyNzBiNzg3ZTlhYzI0ODZjMTU2ZDg0YWJmNDU2MWQgcmVsZWFzZTI1LW1haW50Cis2MjI4OSBiYzMzNzcwY2ExMTQ4YzYwMjliMjc0OTQ0ZjgwNGJhOGNkZTc2ZGJhIGxlZ2FjeS10cnVuaworNjIyOTAgYTI0ODU2YmE3N2ZlZDM0Y2FkNTI1OThhMTM5M2MzMzVmM2FlNzA3MiBsZWdhY3ktdHJ1bmsKKzYyMjkxIDMzNjFiOThmZjRmZjhjZThmNzlmZDcyZTNiOTU4MWY4ZTI0MWU3YWMgcHkzaworNjIyOTIgMzY1M2ZiZGQ0NDgzOWJiYTEwODYwNzYwZGZjMjQ0MzliYWNiZDk2OCBweTNrCis2MjI5MyBjMWZhMmU3NThlMDViNWE0YjA3YmI2NjQ1ZmQyNmMyNTRiNjYxZjQ0IGxlZ2FjeS10cnVuaworNjIyOTQgOTQ3ODJiZThmMWU3N2I1OGJmOGM5NWVkYTRlNWFkYzZkMzdlOTBmYyBsZWdhY3ktdHJ1bmsKKzYyMjk1IGZlMjc1MWFjYWQzZTEzYTVjYmFmYzA0M2ZmNDUwMzIxYjFhZTllNDkgbGVnYWN5LXRydW5rCis2MjI5NiBjYTIzM2JlNjQ1OTg5Y2FkZmY0NDY2ZDEyNTYxMTQ1NjVlNjE5ZDk0IGxlZ2FjeS10cnVuaworNjIyOTcgZDQ2ZjZlYjA5ZWJjZmI4NjY0YWRiODlhNzA5NjMxOWEwYTZjNjllMiBsZWdhY3ktdHJ1bmsKKzYyMjk4IDc2NGFhYjBlOGI5YjFlNDZhMzRlMjkxYjczYmJiODcwMDFhMWQ2ODMgbGVnYWN5LXRydW5rCis2MjMwMSA4YjkxNGZjZTlkODRjMDg0ZGE0OTk2ZTA0ODQ5OGFhMmMwOTUzYzI1IHB5M2sKKzYyMzAyIDJhOTg1ODI1NWRlMTA4NzNlODk4YjM5MDg3M2U4NDAzZjhiZTg2ZjEgbGVnYWN5LXRydW5rCis2MjMwMyA4NDAwNjQ4MDI5NTJiMzc4ZTgxZjQ2MjdhMDE3NWM2ZjgyZGNlYTY3IGxlZ2FjeS10cnVuaworNjIzMDQgZjc4MWNhMTQzOTViMDY1N2YyYWFlNjE5ZTU2MTZmMmNhZGI1MjhmNyBsZWdhY3ktdHJ1bmsKKzYyMzA1IDM5ZWEyZmM0NTAzZDEyMzE3OTVhN2NjYTVkNzRhZWIxMzQ5NTNiMjMgbGVnYWN5LXRydW5rCis2MjMwNiA4M2U2OTc1YzMxOTk4NDQxN2FiMWYyY2VlMTgzM2FiMmNhMjdjM2QwIGxlZ2FjeS10cnVuaworNjIzMDcgMzMwN2E1NDUwYzM3OWE2OTFhMmU4OWE2ZDFlYWE5OWUzMzQ2OGM3MiBweTNrCis2MjMwOCAzNmQwYTFlMGMwMjRiYTlkMDA3NmI1OGQxYzFiNzIzZjkyNTI4OGQ0IGxlZ2FjeS10cnVuaworNjIzMDkgYjU0NGJiNjFiY2E5Y2FiZDAzMzc4ZjhjYzdiNTcyMmQ1YTgxYmI2MiBsZWdhY3ktdHJ1bmsKKzYyMzEwIDlhZDMwY2NjZTQ5YzE4MWNkZTM5YmMxZjUzMDJmYTgyMWNlZTZlZDkgbGVnYWN5LXRydW5rCis2MjMxMSAwMjM0M2VjYWYwYmIwMDg5NzlkZmVhYTI1NDRhMzAzMWZiMDkwNzczIGxlZ2FjeS10cnVuaworNjIzMTIgZTBjM2FjYjExNmE1NTRjMTBlNjI5N2VjMjI4OWVlMDdhNjhhODgyZCBweTNrCis2MjMxMyA4ZjJiNjVlYzdiYmFiNzhiOWQ0MGU0ODRhMmZkYjU4YjgzYmFkYzI0IGxlZ2FjeS10cnVuaworNjIzMTQgMjkyMzFhOTczNTgwZWE4NGQzZWUxYmZkZjBlZTkyODhjNTZlYWQxNyBsZWdhY3ktdHJ1bmsKKzYyMzE1IGZjMzNlNzViOTI1NzBkYzNmMTJmNDEzYzQ2NGM3MzAwOGIxOWQ3MmQgbGVnYWN5LXRydW5rCis2MjMxOSA3YTVhNTgwYmE2ZWEyM2JhOTgwNjAwYzQ3MWExNWQwMTgxNzFkZTNmIGxlZ2FjeS10cnVuaworNjIzMjAgMDUyODI3OTAwNzgyNmQ3Zjg4NDJiZjY3ZGRmNmVlZTI0YTUxNWJhOCBsZWdhY3ktdHJ1bmsKKzYyMzIxIDg1ZjBlMWFjMGJjOWIyYjEwNmIwNDU3MzA4YTA1MDgzN2IyZTU2OWMgbGVnYWN5LXRydW5rCis2MjMyMiA0N2Q5YmJlMTA4OTcyMGNkMWUzZDM3MDc0ZWE1M2JmY2MwOWUyZTEzIHB5M2sKKzYyMzIzIDAyOGQ4NjI1NDA5YjIyMmRhZDdjZGI2OWEwMmZkNjlmN2E2NWZhZDggbGVnYWN5LXRydW5rCis2MjMyNCA0YWZkYzY4ZWE1MmVhNThjNjU3ZjVkNDUwZTc3NDcwYTU5YTliMzM0IGxlZ2FjeS10cnVuaworNjIzMjkgNjk1MmU3MTgxZmZjODhmOGJmOTE2ZDk3MjM5ZjVhOGQ3NDI0MWY3YyBsZWdhY3ktdHJ1bmsKKzYyMzMwIGI0MjBlYWJmOTgzNTQ1OTc0MzBhZDg3YmNkODcyOWQ1NzAwYzQyZjAgbGVnYWN5LXRydW5rCis2MjMzMSA3YzIxY2MxNGI5NGY1YTY0ZDI4NmEzZGNjNWFiNzQ4NDJmZTE0ZjExIGxlZ2FjeS10cnVuaworNjIzMzIgMDNkOWM2NjRhN2JjODcwNWZkNWNlNmZmYThiZmVlNWEwNDRjMzJjYyBsZWdhY3ktdHJ1bmsKKzYyMzMzIDQwZmRkNWNkMmVmNTFkNjE2OGQwNzYyODI1ZjI3ZmVjZDJiNGEwY2MgcHkzaworNjIzMzQgZmIwODEwMjViMjIzMGJkN2Q0OGYxZTEzMzk0ZTAyNWM3ZTRkNWI1NiBsZWdhY3ktdHJ1bmsKKzYyMzM1IDQ2ODc5ZTdmYzRkMzM1NGJlZjFkZDYwODlkNDBhMjdjNDc4NDM2MDMgcHkzaworNjIzMzYgYzc0NDIzNTEwMzYxODA3MWQ2MDg4YmYzYjdkNGM1MjI4OWZiYTc2NSBweTNrCis2MjMzNyA3MmE3NjQ4Njk5ZDA4Mzg5OWQyMzY5MmYxYjZlNDU5YjE0NzYyMjhmIHB5M2sKKzYyMzM4IGIzZGNhOGY1NTM1ZWMyMjFmNTBmOGIxMzg3MGQ4N2U3MzFkOTJlY2IgbGVnYWN5LXRydW5rCis2MjMzOSA2MTQ4N2JlNmY0NDI5MmRkMzhkNWNlYjIzMzQzMDdkZjk5ZDc2MGNhIHB5M2sKKzYyMzQwIDhkZDI0NzQxYjZhYWYwYjYyNDNiYjY3Yzg4MDEzMjI0ODFiZWU5MjYgbGVnYWN5LXRydW5rCis2MjM0MSA2ZTRjYTlmNzJiYmE2ZGRiMmQwNmU4ZDc4MGE1YWM5ODI4ZWZlNzMyIGxlZ2FjeS10cnVuaworNjIzNDIgMGZlZGU0ZDFiMTRiYTJhNTNiMTI3MjE5YWZjZjJmZWRhM2RkNThmZCBweTNrCis2MjM0MyBhZDE3MGEzMzU5NjdiYWIyMTdhZDAzYjUwOTg1YmVjMGMwYWIwZDAyIHB5M2sKKzYyMzQ0IDU5NzUzYmRjZTA4OTg0OWNlMWNkN2NhOWJiZTc4ZThkODkxZTAyMzMgcHkzaworNjIzNDUgMjQyMDViMWY5NTRlZjc1ZTYyMzJkN2I2ODYyYWE3OTQ3M2JmY2EzOCBsZWdhY3ktdHJ1bmsKKzYyMzQ2IDk5YmZiOGRlMzRiMWY2ZDAxNjEzNmFlYmUwODhkNzdlNGNhZjkxYTAgcHkzaworNjIzNDcgZWFiMTUzOThlZWYwMGFjYjY5ZTgwYjNlZTE1MmRkMWMxMWNkYzY5MSBsZWdhY3ktdHJ1bmsKKzYyMzQ4IDkxYjA5OWE3ZjNlMjJiODNlYTgyMDM0Zjg0ZjJmNmU2YTI4ZDY0MGUgbGVnYWN5LXRydW5rCis2MjM0OSA5ODFkZjEzYWFiMjAwOGMxMTRmNDUxODU3NGVmYmJjMzg2ZmY1ZGRiIHB5M2sKKzYyMzUwIDE4NDFmOTJlMzBkZWYwYTViMzEyN2Y1YWExZmIwYTAzZDNlNzJmMzQgbGVnYWN5LXRydW5rCis2MjM1MSBlZjA2ZWQ4MDQ5MThhMWE0MDMyMWNhZGZiZDMzOWM4OWRiZWU5ODMwIGxlZ2FjeS10cnVuaworNjIzNTIgY2U1NTk3YWY5OWM3ZDk1Y2JmNWIxOWFjZjVkMDA3MzRhYzI5YjY5MiBsZWdhY3ktdHJ1bmsKKzYyMzUzIDNlMDk1YWI3NWZjODlhZWQwMmYwYzRkNWM3OWNmODc4YTQ3ZTA2NjIgbGVnYWN5LXRydW5rCis2MjM1NCAxOWZkNDYzZWE3MjhlNDBlODZmNjg3OGJjYzI1NWYwZDA2ZDA5NGQ1IGxlZ2FjeS10cnVuaworNjIzNTUgMzhjODMxYjQ3ZGM1YmI0MzFjYzA4MmU0OTU0MDNkNzM1OTRiY2Y1ZCBsZWdhY3ktdHJ1bmsKKzYyMzU2IGIwNGYyMDUyZTgxMjYyOTYxZDJiM2Q3ZjdlNTE1MDE5OTA4NmIwNmIgcHkzaworNjIzNTggYjcyMzEwNjkwMWUwY2YwZjNjNDQzYjFlMWJlZjNhYThlNzJkNTA3NSBsZWdhY3ktdHJ1bmsKKzYyMzU5IDlmM2NhMTkxNjJhNzM4YTYyMGM2MDI3NjFhNjFjYmYwMWQyZWEyZjYgbGVnYWN5LXRydW5rCis2MjM2MCA0ODI4OTY0NWNkZWY3N2ZmZGViNTZjYmJiM2ViMGJjYmZiNjYxNWFhIHB5M2sKKzYyMzY0IDFjOWJhNDAxMWY1ZGQ4NWJkZGVhM2NmNzg1ZDg0YzZiMzFhNjljYWYgbGVnYWN5LXRydW5rCis2MjM2NSAwN2Q3ZTVjZGMxYTAxMGNmOTFhMjQxNzA4OTgwODc1MTU0NDU2NTFlIGxlZ2FjeS10cnVuaworNjIzNzAgYmM5NmJhYzU4NmI0YzIxZmMyYjEyZTJiZjJiY2NmMDE2ODMxZWZkNyBsZWdhY3ktdHJ1bmsKKzYyMzcyIDFmZWYyNmY4OWJjZWExODZhNTQzMjIwMmQ5ZjBmNmU3NGQyMTk3YTUgbGVnYWN5LXRydW5rCis2MjM3MyA3Y2QzNjNkZjdhODQ2Y2QxODI1MDRhZmRlODBiNTg4ODMyYjU4MjFmIGxlZ2FjeS10cnVuaworNjIzNzQgNTAyNGIxMmEwMzlkMWM3ZGUxYTBiMjNlNzhiMTQ3YjQ4MThiMDQwOSBsZWdhY3ktdHJ1bmsKKzYyMzc1IDg5MThjNTFkZTAxMDhhY2VjNzExM2M2NTgxOWEzOTFjNjQzYjBlZDcgbGVnYWN5LXRydW5rCis2MjM3OCA0ZjgyNjFiOTJmYzU2MGRlZDQzMDZlYWFlZTY1MWNjYTU2ZGU4MWI5IGxlZ2FjeS10cnVuaworNjIzNzkgZmI4ZDNlMWY2MTYxMmQ0NGVmZjEzZGIwNjAxMjczMDE1YjExNDYwNSBsZWdhY3ktdHJ1bmsKKzYyMzgwIDViYzdiMjBkYzA0YTlkMjQ5YTgyMzM5NDU3NjQxNWRhN2ZlODhhOTAgbGVnYWN5LXRydW5rCis2MjM4MSA1YzQzMTU5ZjVhZDBiMDY1OTliNmI3YTM5YmVjYzllYmMwMGM2YmNkIGxlZ2FjeS10cnVuaworNjIzODIgNzc5Y2FhMWUwZmZiMmUwYzgyZTFlNzNjZTdmMTQ0ZDI5YzIzYzIyMSBsZWdhY3ktdHJ1bmsKKzYyMzgzIGExOTk3Mzk5Zjg3MjRjNGFhMzM1NDU1ODVkMGVkNzMxN2UwOTNiYTMgbGVnYWN5LXRydW5rCis2MjM4NCBiNjlmNDQzZWY0ODA3MTc5Y2IxMWI2YjUyZWIzNjUzMzk4OThmMjgyIHB5M2sKKzYyMzg1IGJlYjdhYmNkNmMwMWE1NDNkYWRmNmY4MjU4ZGZmNWZiN2JkZTJlNjggcHkzaworNjIzODYgZTE2NTkzZGE0ODk4OWM3MDNkYWU2NzM2YTgwZmVkNThlMmZhMDBkNCBsZWdhY3ktdHJ1bmsKKzYyMzg3IGUwMjlkN2M3ZGU4MTE0NDEzM2ZlOGE4OTkwNTA5YWM3N2RiNjRjODcgbGVnYWN5LXRydW5rCis2MjM4OSA5N2MyMTQxN2FmNDBhZDdiMjc2NjdlNTQyOTgyMzBiZTRmYTBiNzA1IGxlZ2FjeS10cnVuaworNjIzOTAgYjFjNzBjODljM2RhNmMzOWMxMTMyZWUxMzA2ZDY4ODQ3YjI3MjQ0MiBsZWdhY3ktdHJ1bmsKKzYyMzkxIDM3NDgzM2RlNTcwYzI0MWJlMDYzNGZlMTRiZTQ5MmY1MDJmNjI5NTAgbGVnYWN5LXRydW5rCis2MjM5MiAxMGRhMjc5OGU1OGQ4MzY0MWNiMDMyMmM1N2UwMzg4M2UxMDdmMmFkIGxlZ2FjeS10cnVuaworNjIzOTMgNGY3MTgwNjFmNDVhNDQxODdjNTIwYjJjNjA2YjQ2ZmFmMWM0MTU2ZSBsZWdhY3ktdHJ1bmsKKzYyMzk2IDgyZDg1YTA1OTIzYmYzOTg0NmE0NTE2YjE2MDIwZjBkMGU1NzUwYjcgbGVnYWN5LXRydW5rCis2MjM5NyBkMGZhNDVlNjM3YTA1MDAxOTBjZDNkZmIzZTg3ZWVkYmQ1NDg4ZmQ0IHB5M2sKKzYyMzk4IGMzNjU5Y2U4OTNlN2U4YmJlYmI5MjdmYmFmYjA4NzI3OTA2YjhjOTggbGVnYWN5LXRydW5rCis2MjM5OSA2NDRhNjc4MzAwNjFiYTM1YjRmOGFmZmI4YTJiNjQ1MjEyZmU0ZjFmIHB5M2sKKzYyNDAwIDY0OGI0ZDAxY2NjZjU5NTU4MTU1NTY1YjNiM2M0ZmI5YWNkZWJjY2EgbGVnYWN5LXRydW5rCis2MjQwMSAxMDIzNmQxZDA4NjA3NjdhNDlhOGVlMTRiMWNhNTI5NGIzYzllYmVjIGxlZ2FjeS10cnVuaworNjI0MDIgZGE0YTg3ZDYzYjBlZTMwMGIyMDFkYTAyZmUxNDBhZTEyZmM4ZDU4ZSBsZWdhY3ktdHJ1bmsKKzYyNDA1IDM4NWUyMThkMGY2YzVhZTViM2ZmN2NjNzNiODA0MzE3NjUzZmEzYmQgcHkzaworNjI0MDcgZmY1OGNiNWFhNzZkYTYwMDljY2Q4ZTIxZTZhMjY5M2YwZjQzOTZkYiBsZWdhY3ktdHJ1bmsKKzYyNDA5IGY2NDFlNTA1ZmZmNDZlMTc2NWE2ZDEwZjIzNTAyMTMzY2FkNDFkNzQgbGVnYWN5LXRydW5rCis2MjQxMCAzNWJmODAxMmEzNzZlNjNkMTVhOTEzZTYzODI5ZTA3YWJmMDA5MDExIGxlZ2FjeS10cnVuaworNjI0MTEgZDE2NjI1MWQ4MDE0NDkxNjc3NzcyOTg5ZWNlYzY3ZTc5NjgzZmEyNCBweTNrCis2MjQxMiAzMWZmNTlkOTg0YmRlMmM4ZTdmODNmZjU2NzIwZjY1NDM3YTIwMTAxIGxlZ2FjeS10cnVuaworNjI0MTMgODBiMTY1OTVlNDYyNmNjODRiOTI3N2YwMGE3MGQwZmNkOTJlZDhhOCBsZWdhY3ktdHJ1bmsKKzYyNDE0IGEyMGRlZjAxMDFkZTI2OWUxYWRhZGQ0OWUxYmVkMDEwM2M0MjE2YTIgbGVnYWN5LXRydW5rCis2MjQxOCBmM2NmMTJiZDExMTI4NDZkMGFhNDE1MTJkMDg5YmUzMDc0MGUxMDdhIGxlZ2FjeS10cnVuaworNjI0MTkgNzM3MzJkNjZkMGQ1ZjdiNTczNTMyNTZmYWY5N2E5ZTBiYTc0MjcwNyBsZWdhY3ktdHJ1bmsKKzYyNDIwIGM3OGNmZTIxMjZkYTE4NDYxMzY4NmMxNmU1ZDcyMDRkYWQ1OTE5NTYgbGVnYWN5LXRydW5rCis2MjQyMSA2MGY0NDU2ZmEzMzgzZTA3ODNjMTQxNDUxZTJmMzZiNzA2YjMxZTM0IGxlZ2FjeS10cnVuaworNjI0MjIgNjM5NjUzMjdiM2VmNjVmMWJjNzlmMTlkMTg0MTdjOTIwNzkzOTcyMCBweTNrCis2MjQyMyA2MzIzYmRjMmQ2NzExZmJmMmFkNWNjZDcxY2ZlZWM5NGVkMWI3N2VlIGxlZ2FjeS10cnVuaworNjI0MjQgMDIyMjk2MDMyZDhmNjk2NGEwZmQ1YzIxMzY2ZTc5ZDFkY2RjYjIwYiBsZWdhY3ktdHJ1bmsKKzYyNDI1IGZkZDVhMDE5ODc2OWQzMDc1YTkzNmU4ZTgzYTcyMTJjOWNjNjNmYzMgbGVnYWN5LXRydW5rCis2MjQyNiAwNTJmZDhmMWNhMzcxYzY4NzMzODEwMWU2NTk4NDVjYWI4Y2FlNmY0IGxlZ2FjeS10cnVuaworNjI0MjcgNDA2ZWNhMmRkYmJjNGY4OWY2ZmFhYzNiMzQ0N2QyN2FkMzg5YzBhOSBsZWdhY3ktdHJ1bmsKKzYyNDI4IGRmMTNjY2FhNWFlOTdjMDFkODY3OTc1NDg4NTE5ZGQ4ODQwNjAyY2UgbGVnYWN5LXRydW5rCis2MjQyOSA2MDc3NjA2MzM5YmI5ZmQwMjIwOTk3MGVhZGVlODZhNjRjZTgzNTI4IGxlZ2FjeS10cnVuaworNjI0MzAgZDNhZjlmZDFjZmFmZjY3Njg2NWViOGM2YTQ1NTdhM2FkOGQyYzhiNSBweTNrCis2MjQzMSBkMGI4YTkwY2EyNzA5ZjVmZTkzYjA4OGE5ODQ5MmYyZmJkNmRkYjgzIGxlZ2FjeS10cnVuaworNjI0MzIgYmIwZjU4YWRjOTFjZTA3MjBmMDkzNmQ1OWNlYmUzYWExZDA5NWMyMiBweTNrCis2MjQzMyBlYzQ4NDkwYjk2OWFiZGViMzhiMDZlMjQ5OTJkMTFlNjVmMWQ0ZWFjIHB5M2sKKzYyNDM0IDM4NzQ5YzA5YzU1NjM1MDFkMDUxMThmZmQzNTFiYWNkNzMyYjI5YzMgbGVnYWN5LXRydW5rCis2MjQzNSBhZTU1NGU1ZDZlMDZkYjMwZmE1NjkzYWJjN2JiNGQ5NzM0MzAxMzI0IGxlZ2FjeS10cnVuaworNjI0MzYgZjUxOTUzY2NlNmFiMTljNjMyMzYwNzRiYzRhMjgzOTNlZTViMmEyMCBsZWdhY3ktdHJ1bmsKKzYyNDM3IDk4ZTA3MmYyMmM0ZjNkNjI4ZjExNjQ4YzBiNzNlNDkzODBjMzUzZGQgcHkzaworNjI0NDEgMWFjZDAwZjJhMzgwN2NiYTYwMWQ4NWI3ODliZTVmZTJjZDFiNDYzMSBsZWdhY3ktdHJ1bmsKKzYyNDQ0IGI3ZGYzMGFjNWI1YTI2MDg4NzVmMTQzNTk3ODI5Y2QwMzQxNGYwMDMgbGVnYWN5LXRydW5rCis2MjQ0NiAwNDkyODQ3MGFkODYwOWE5ODQ3M2QyMTJkYWI4OWFhZmFkZjQyODQ2IGxlZ2FjeS10cnVuaworNjI0NDcgYmFlMmY0ZmVlZmNjY2FjYWFkYTE1OWQwYTI5Njk1ZjFmNmUwMDE1ZSBsZWdhY3ktdHJ1bmsKKzYyNDQ4IGM0NGI4Y2EzZjRkMjk1OGNhODZiZjIzYmE3MjdkMGI1ZjljM2ZmYTAgbGVnYWN5LXRydW5rCis2MjQ0OSBiMTI1ODM2NDMxMjhlYWNmODU0NzQ4N2EzNTMzYjMzOWQwYzNmMjMwIHJlbGVhc2UyNS1tYWludAorNjI0NTAgNDM0YmNjZWNhN2RmMDg5MGU0MmUyYzc2MmIxMTgwOWFiODE0ZjEwZiBsZWdhY3ktdHJ1bmsKKzYyNDUxIDEwOGZlNTdiOWE2OGUxZTk3OGY4ZGZhNzYxOTlhYjJjMDRiODBkZWQgbGVnYWN5LXRydW5rCis2MjQ1MiAyZjAwNjU0NDg4ODNhYmM1OWY1YTJmZmU1OTI0NDc3Y2E5ODhlNTNkIGxlZ2FjeS10cnVuaworNjI0NTMgMDk0MWQ3OWVhN2Q2ZWZiNjNlMGRkMjU3N2M1MmFjY2VhZGY3ZTgzNyBsZWdhY3ktdHJ1bmsKKzYyNDU0IDg4YThkZWY1ODAwNzc3YWUxZDc3ZTBiMjM0YTM3OWI0NjdmMjM0Y2IgbGVnYWN5LXRydW5rCis2MjQ1NSA2NDJkNTcxMjA5M2I4MGIwOGU0YmQyMDhmYWFlOGYyYjE5MDQ4NDU2IGxlZ2FjeS10cnVuaworNjI0NTYgNjZiNzk5MzA2OGJkYTMxZWU3MjM5MTJjY2I2M2Y3ODYyODNkOTg3MiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NTcgZmIzY2IwNDE5NWUwZjgyMmIwNzNkZjc1NWNhYmNkNjkyZDQ4MWJlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NTggMTQ0MDNhNTQyNThmYzRlODk1OTVmNmMzZGUxYWFjMTgwMjBlOWFkMSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NTkgMGM1ODI0YjAwMjYzM2JhNDYxNTgwMzI2Mjc1ZTRkM2I5YzQ2YjhiZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjAgZDdmZWZiMzVlOTkzZmZjOTQ3NDJiMDlkOWE3ZTg3NjMxZTdiMDBlMSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjIgYzBjZGFjZjA3ZjU0MGQ5MmM4ZWMwM2RiMjk4ZDk5YmVjMmJlOWE3ZCBweTNrCis2MjQ2MyBmZWQ3MmZhOTY3YmY1YTRhMzFkNjcyNmEwOGZhODQ1ZjMzNGYzZGYzIGxlZ2FjeS10cnVuaworNjI0NjQgYTc0NjU0MzUyMzY2ZWYzODRmODExODMyNDE1NDA0YmI1ODQ2ODk3MiByZWxlYXNlMjUtbWFpbnQKKzYyNDY1IDk4ZGNhZDkwOTJhODg5ZWY0N2E5MTRmM2Q1OTI0NGRmYTYyZWEyMzcgbGVnYWN5LXRydW5rCis2MjQ2NiBjOWRlNjcwNWJkMTEyOTc1YTVhMmFiMjRhOWI4OWUzOGVlZDhjMzExIGxlZ2FjeS10cnVuaworNjI0NjcgMmUxZWE2MWM5NGNjN2YxNzI4ZTg5ZTJhYmYzZjE3Yzc4YmNhNTkyZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjggZWQyNjdjNjk4OWI2Y2NiNDZjNTU4OGNhYTc1MjcyNjk3Mjk5MDdlYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI0NjkgM2M2YTI1ZTRkYmI1ZjBmOTYzYmIxYTY5ODhjZmEyYzUyMmY2Yjc5NiBsZWdhY3ktdHJ1bmsKKzYyNDcxIDA3Y2YyODQ4MGFkMWVjODM2MmFjNTAyZDk5ZDBkMTBlMzcxODZhNmUgcHkzaworNjI0NzIgM2U5YjRmYTkzZTVjNDI5MWM2ZjI4NWJlMGJkMWU3MDRlMTE2YmQ0ZiBweTNrCis2MjQ3NCA2MjFhMmVhY2MyN2M0ODk5M2M2MjI4M2QwYWM2M2U3MGZlYTFkNzJkIGxlZ2FjeS10cnVuaworNjI0NzYgNWU2MzZjOWQ2MWFlNTc1Y2Q2YTQ1ZTgxNTM0NDQ3MzNjZDgxNWFmNCBsZWdhY3ktdHJ1bmsKKzYyNDc3IGEwMjI1NjAwYmZmMTQ5Njg4YTViMGUyYjUyZjc5ZjU0MzE1NmU1M2YgbGVnYWN5LXRydW5rCis2MjQ3OCAzZThhMDNhNjQ5N2UxNzE0MWQzZDZiYmYxNjQ2OTE1YWVlNjFlODkyIGxlZ2FjeS10cnVuaworNjI0ODAgNDU5MDgzYzZiZTE1M2ViYjVmZGE2YTAzNmZjYjZlYmM0NTcwODk5MCBsZWdhY3ktdHJ1bmsKKzYyNDgxIDRmZjhkZmFlYzNmYzZkYjk0M2M3OWNlNjNjYjRmNGY4YWI3MmZkNmEgbGVnYWN5LXRydW5rCis2MjQ4MiBhNTFiMzI5MjQ1YjE0NGRhYmY4YWQ4MTNkYTY5NGFjMjE1OWZhNjA0IHB5M2sKKzYyNDgzIDg1ZDQ2NzE1NjVjODc0OWNkNWJmZDM4YjVjZWQ2OGI3ZjBiNWNiYzUgcHkzaworNjI0ODQgOTBlMjE0NmNiOGEzMDhhMzAxMmU3MzgwMTU3Y2FjMTE4Mjk0YWEzNSBweTNrCis2MjQ4NSA5NTk0N2ZkZjQwYWU0OGFlZDBmZWZhMzhkNGFmYTRlMGRlODI1MmZlIGxlZ2FjeS10cnVuaworNjI0ODYgZDFmYjQ5YWVjNzY1MTA0NGM5ZTgwZTYyMDBjNDQwNTgzYmI1NGJmZSBsZWdhY3ktdHJ1bmsKKzYyNDg3IDg4NjRkZmE5OWM3NjAyY2U4ZjI5OTFhYTU1YTUwNTIwZDU4MWMxMzkgbGVnYWN5LXRydW5rCis2MjQ4OCAzNTExOWIwMzY4NmQyZDQ5ZjMxYzQ0MjMzOGIxOWNkMDgxYTk3MTg2IHB5M2sKKzYyNDg5IDFjZjNiMzRkZjZjNjBlYzBkMDQwODE4N2E2NjgxMmYwZDI4ZDg5M2EgcHkzaworNjI0OTAgNjZjOGJkMWJlZGYzMjMyZGYwZTRhMmQyYjlmMDBlMTNjODRkMDY1MyBsZWdhY3ktdHJ1bmsKKzYyNDkxIDhiNzE4ZmMxNWYzZDZiNTIzMTYyYWQyZTgwNWY0MjFjMmEwNTM5ZGIgcHkzaworNjI0OTIgNWJhNmNiYmNhZWU3MzY0NTNjOWFiZTFiOWEwOWNjOGJjMmQ0ODYwNyBsZWdhY3ktdHJ1bmsKKzYyNDk3IDA0YmQ3NmU5MjA2NTQzMmZlM2Y5N2YzMzQ5MjgxZTU3M2M5MWRlZWIgbGVnYWN5LXRydW5rCis2MjQ5OCA2ODk4NjM1NTIzODA3MzFmZjQ3YmE5MzJiZDI4MjY1MTJjYjBmMjM3IGxlZ2FjeS10cnVuaworNjI0OTkgY2U2MjBjYzlhNmE4Njk0OWQyM2Q4NWIyYzk1MDgyYjY0ZjEzYTZlOSBsZWdhY3ktdHJ1bmsKKzYyNTAwIDllMDVmMTVmOTIxYjAxMGNkZjUwOWNkMDRjZjc1YzllYmI0NmE3MTYgbGVnYWN5LXRydW5rCis2MjUwNCAwYzdjYTQ3MWZiOGQ3NzhiY2IzNTdiOTFkY2IyNTUzZGYzY2JjZjc4IHJlbGVhc2UyNS1tYWludAorNjI1MDUgYzczODI4MDYyMDMxMzBiYTQxMTM0NDUzODA3OTIzZjJhNzdlNWJhNyBweTNrCis2MjUwNiAyYTMxYmMyOGMxMGZmZjBhZDgzNjMzZDY2ZmYzYjcxYzVlNjBiY2I3IHB5M2sKKzYyNTA3IDBlMTE4NWJmYTMxMzRjZDI0MDFlNTA5NjA2NWYwNGZkMTM5NzgwN2YgbGVnYWN5LXRydW5rCis2MjUwOCAwY2ZjODQ1Yjg1MmQ4MjRhMWRlOWUzZjBlMGY4NWExYzY2YmEzYmU5IHRsZWUtYXN0LW9wdGltaXplCis2MjUxMSA1MjM4MzI3ZjQ1YmQ0MDQyYzc2YjVkNGI4Y2RjY2FmOGRmZjk0MTE1IGxlZ2FjeS10cnVuaworNjI1MTIgZmZlZWNiZWJmM2NhN2NlNzZiMGY4OGE1ZDc2MDA5MmZkZmNmM2IzMyBweTNrCis2MjUxMyBlYjI3NDZlOGI5ODMzMGRlMWIxMDJmMWZhZjEzODUzYjk1ZWZkYWM4IGxlZ2FjeS10cnVuaworNjI1MTQgYWQzNDE3NTAzNjM2Y2Y3ZWU1NzEwOTJiM2JmYmVhYzQ0OGQ4OTM2OSBsZWdhY3ktdHJ1bmsKKzYyNTE1IDM2MWQ3NzZkMzgwZWI5NDI3M2M0ZjQzZWY1OTVjYTZiNzU0MDk5YmUgcHkzaworNjI1MTYgNDcyMzNhMTdlOTcwNzk3NGVhZWY0ODgzNGMwMWQzMjY1ODFiYjk3OSBsZWdhY3ktdHJ1bmsKKzYyNTE3IGQ1OGVjMzhlNmRiMWE5NThiMjhhNTNmZmNmYzMyYTAxZTliYjM1NTEgbGVnYWN5LXRydW5rCis2MjUxOCBhZWYzNTAxZDhlNzc2ZTY5MDc4NDJkMDQyMDk1MWFhMmNiODNlMTNkIGxlZ2FjeS10cnVuaworNjI1MTkgMDZlNjdjYjIyMTU4MDg2YTA0Yjk0MzRlMDcwNjg3ZWQ3YTI2OTk1ZCBweTNrCis2MjUyMSBkYWQ4OGNiNmVmMWZkZDU5NTNiZTk2YmY4MTczMjBhNTY0M2RkYmY1IGxlZ2FjeS10cnVuaworNjI1MjMgZWRiM2MzZDY2MDA2N2VhZTU5MjgyMDMyNmJiNzBiNDY5Zjc4ODI5NSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MjUgYzU4OTViOTgxZDhmMGY0ZGJiMGNiYzdjYzI0ZDY0Y2I3OWQzYTk4ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MzEgNmI3YzkxZDlkYzUxMWJmMTU4YjE1Yzk4NDIyM2ZiNmE3MzY2NWYwMiBsZWdhY3ktdHJ1bmsKKzYyNTM1IGYzNjVhMDE4YWY1YjY5NDY5NTA2NzI1ODE1MjQ2NWY1ZTJiZGRjMzEgbGVnYWN5LXRydW5rCis2MjUzNiA3NjcwMDA1ZGE4YzU2OGJlYjNiZTQ2MTRkMTdhNGZiODkyNGRkYjE0IGxlZ2FjeS10cnVuaworNjI1MzcgZDdkNTY3MmY1ZDVlMDUwYmJjM2RlNmVhMGY2ZjYwNjEzOGE1ZDNlNyBweTNrCis2MjU0MCAwNmFhODAyYmZjYjE4YzViMDE5ZTJmNjUxNDM5MWI2NTQ4NDUxNzUwIGxlZ2FjeS10cnVuaworNjI1NDUgM2Q5ZGRjZTJkYTg1MjA0NzcwY2FiNzU3ZjlmYTMyNjQ3MjM2YzUxNiBsZWdhY3ktdHJ1bmsKKzYyNTQ2IGViYzQwZTUwMDg2OThhNTZkMTcxMzRiODQ1NjRkMjMxNzZiNTMyNTQgbGVnYWN5LXRydW5rCis2MjU0OCAxOGU5YTM3MmE3YTNhMGNjNzk1MGYwMTI2Nzk1YjhhODhlNDQ4NmM4IGxlZ2FjeS10cnVuaworNjI1NDkgODRkZjA4MmRkMjE2NzgzNTgxNThhMWRjZDA1ZjliNmRlZWNlYTFiMCBsZWdhY3ktdHJ1bmsKKzYyNTUwIDU5ZGI1NzVhZTM3NDYyNTY1ZjQ3ZDZhNDVhMjUwMzM1NWEwYTM1MWYgbGVnYWN5LXRydW5rCis2MjU1MSBjNWRjMDVjZDM4NTg5YmMzMGE3YmRmY2E2ZWRhZGNkMzdiNmQxNzNlIGxlZ2FjeS10cnVuaworNjI1NTMgNTc2ZmEyNDQwYTBjOGQ4Zjg4OWQzYWZhNTc2ZmYwNzViNzQ2MmIwNCBsZWdhY3ktdHJ1bmsKKzYyNTU0IGQyYmI1ZjEzMTg3MzhiMDA2NDc1ZmE3ZGYxM2JjODNhNTZlYTkyMmMgbGVnYWN5LXRydW5rCis2MjU1NSAwN2E0ZTE3MTAyNjI5OWNmMjdhOGYwYTIzNGQ5YTUxYzdhOGRiZDAyIGxlZ2FjeS10cnVuaworNjI1NTYgYTUxN2VjY2M3ODNiOWUwYzgxYTA0ZTk4MDc5OWRkZDBlZGQxOGRhNiBsZWdhY3ktdHJ1bmsKKzYyNTU3IDFlYTRkMWIxOGFlZDU4ZDRiNWIzZGE4ZDA3MDUyODRhNDNkZWMwM2MgbGVnYWN5LXRydW5rCis2MjU1OCA0ZTQ3NTQ4ZWRkMzY2ZDJiMTE2YmYzZjFiZGRmYTkxYTA0ZjUyMzRiIGxlZ2FjeS10cnVuaworNjI1NTkgZmVmNmQ2YmE3OGE0MDE3YThkMDdmZTM0OTc0YzM4YzM2MGY5MWQ3YiBsZWdhY3ktdHJ1bmsKKzYyNTY4IGMzNGYwZTYwOWZhNmFlNDMwZGQxYzZkMzY0MWUzNTY4YjQ5NzRlNzYgcHkzaworNjI1NjkgOGQzYWQ4YWY2OTJiNWEzNGVmZmM4MTM3NDA3ODVhMTA3N2IxMWVjZiBsZWdhY3ktdHJ1bmsKKzYyNTc0IDZmZWFkNGNmNzkxMTFkYjBmZGZjYzdiZjM0ZjJhYzNmN2M2MGI3ZTggbGVnYWN5LXRydW5rCis2MjU3NyA3ZjYwYjMzN2IwNDkyZDRmZTdlMTdiODliNzFmMzA2YTYyMjA1ZTczIGxlZ2FjeS10cnVuaworNjI1ODAgMDE1NGRmMjUwZWY2YjUwOTRhNTVlZjIwZDVhM2YxY2MzZmNmN2RlNiBweTNrCis2MjU4MyBlNDJkMzk3NzhlYWQ5Y2NiNDU4NzViYjM2ZjM4ZmQwZGFjNzY0ODM5IHB5M2sKKzYyNTg2IDM3ZDY0NWIwMTUyMzE2ZTQxYjExODQwMjlkMzZiYTZlZjZiM2JiMDAgbGVnYWN5LXRydW5rCis2MjU4NyA3YjQwODFiZWM3ODM3ODlmODY3MDc3Y2E3NmE4OWFjYzdlYWI5N2JhIHB5M2sKKzYyNTg5IGNiYTI4MWIxNmE4MjQ1ZTE1NmZjMWY5YjM4MTNiN2I0ODk4MmI2ZDcgcHkzay1jdHlwZXMtcGVwMzExOAorNjI1OTAgZWY0MjFhMzY1YTFkNGM3MDMxMjFlN2M1MWI4MTllMDU2NzQzNTZlMCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MjU5MiBkNmM2ZjM2NmIyMjA2MmZkM2RlZjJiNDJjMWYxNTQ3MTdhY2MxNjQ2IHB5M2sKKzYyNTkzIDhmNWM3NTllMDE5YzY2Y2JkMGEzNDU3OWU3ZDY4ZTAwNzI2NTdmNGMgbGVnYWN5LXRydW5rCis2MjU5NSAzZDBkM2E2ODA4OTZjZGNlNzY3OTE2MWQ0MjFjYjIxZmM4MzFkNDUxIGxlZ2FjeS10cnVuaworNjI1OTcgOTQ4YmVhOTZkZDIwMWIzMjBiNmE4ZWJiN2ZiMDY0ZjA4YjNkNzQ0MSBweTNrCis2MjU5OCBhZjBlZjA0NDAxYmIyZTc5YjY0ZjkyOTU5OTI2OGY1YTZmZjkyYjMwIHB5M2sKKzYyNTk5IDdhNmQ3NDc0Y2U2ZTA4YjA3Y2I2YTUzYWQ4ZjczZWNiNzMwMTUwN2UgbGVnYWN5LXRydW5rCis2MjYwMCBiMTAxNTU2Yjk4ZWFlNjA5OWU5NmRhMzNhYmE4ZWJmOTc0M2FkMjFkIHB5M2sKKzYyNjAyIDAxYmUxYzhmMDA2YmRkNTYzNzFhYjA4OTU0ZDkwOWFlMjM1YTE1MTQgbGVnYWN5LXRydW5rCis2MjYwMyAwMTQ1MzU3MTk2Njg4NWMzZjRmN2VkNjczYmExYWRjYTFkZjQ1YmE1IHB5M2sKKzYyNjA0IDMwMzZlMjFhYzY2MWRkYTAxM2U2Nzc3MmQ5YTM5ZDk3YTAyODYwMTQgbGVnYWN5LXRydW5rCis2MjYwNSAxNDIzODM0YjcyZDhkOGQyNmUxNzMzYjg3NzZjMTMyZjJmYmE2MjMzIGxlZ2FjeS10cnVuaworNjI2MDYgNjhjZmM1MWU0MzMxZWZlMWI3N2ViYjViNTExOGE5MmY3NDc2MTFhZiBsZWdhY3ktdHJ1bmsKKzYyNjA4IDY1YWNjNTVmMWE2OTBmYTQwNmY3MGQ3NmY3MzZiOTAyMjM0OTM4NDYgbGVnYWN5LXRydW5rCis2MjYxMCBhNDBkN2U2MDVmOWUxMTdhNjYxNzhmZjQ3YTk3YWMyYjVjOGQ2ZDY0IHB5M2sKKzYyNjExIDNmMjExN2QzMjcxZjdjMGY2MGQ0NWQ3MTJhYTM4OWNmMzkzMWNlYTMgcHkzaworNjI2MTIgZTQyZmUxOWJhNmZkZjM3ZThmMjZmYTk4ZDMzNDRhMmJmZDNkNTMwOSBweTNrCis2MjYxNSA4N2QzMTM3YzMxZDQzNjEwMmRmNzZkMGNhMzJhM2NlOWE1MjMxNDcxIHB5M2sKKzYyNjE2IDMzMTVmNmI0NDQwMzBiODc4N2JjZWE0M2Q2NjUwNmM0OTk4MjVlMjIgbGVnYWN5LXRydW5rCis2MjYyMCA1NmY4MWVhOWNiNzk1MGQ0ZTYyZDVlNzk3OWU2ZjkxOGI4OTgyODM4IHB5M2sKKzYyNjI0IDgwYmQ0YmFhNjM5ODE5MjAzNjVhNzI1NDU3MzM3NDQwOWU0OTY0NWYgcHkzaworNjI2MjYgZWExYTljZjczNWE1Njk0NTQzMzY4ZDg0MTdjNTIxOThhNzdhODAwOSBsZWdhY3ktdHJ1bmsKKzYyNjI3IDU0NjA2ZWE5ZjRjN2I5MzM4NDJlYmQ3MGQwNTBkYzNlM2NkYTBhNGQgbGVnYWN5LXRydW5rCis2MjYzNiAwYmExMmMzMmUyYjU2OTU5MDA4NWUyMDEwYzllZTJlZDBhNjA0NmU0IGxlZ2FjeS10cnVuaworNjI2MzggYzRkOTBmYTkzNWVhYTQxMzA1ZjE5NDFiNTRmZmJiNWUwNGFjNzhmNCBsZWdhY3ktdHJ1bmsKKzYyNjQ0IGExYzZmMmFiNTk3ZTAzNzk2MjE0NWFiMDhkZDIxNWM2ZmMwZGNiNWQgbGVnYWN5LXRydW5rCis2MjY0NSAyMGI3MDc4NjY0NTlhZGE3NGEwNjM5MDhiOGJjYWQ5NmJkZGYwZDRmIGxlZ2FjeS10cnVuaworNjI2NDcgMWZmZWMyYTY4N2U5NTk2ZjQ4YWJhYTM4ZjMwMzRjOWVjNjczMWI5OSBsZWdhY3ktdHJ1bmsKKzYyNjQ4IDNmODRlNmFlMzZkYWQyOWUwOTBhNGI0NzQ2YTAzYmQ0OGNiMjY2N2UgbGVnYWN5LXRydW5rCis2MjY0OSBiNTVjNTU2N2NjNzY3MzNmNDFkYzExOTZlYjU1NTFmNWVlOWRiZDEwIHJlbGVhc2UyNS1tYWludAorNjI2NTAgZWI5ZGFiOTU2YTZlYjhiODBlNWFkNGFmZGMyMzM4NjNlMWQ2ZDlhNCByZWxlYXNlMjUtbWFpbnQKKzYyNjUxIDgwNjM1NDg5ZThkODMxNDRiNGMwOWQ3Zjk0NGQyNDJlNDcxYzI1NWEgbGVnYWN5LXRydW5rCis2MjY1MiA2ZDk0OTc1OTdjNGYzZmVmYjRjMThhNmM1MTNiNzcyOTI1YzJiNDg2IGxlZ2FjeS10cnVuaworNjI2NTMgY2M2NjAyOWQyZWZlNTkzOWFiYzI2NDQ5NDE1NTdiYzNiZTg3MjJkNyBsZWdhY3ktdHJ1bmsKKzYyNjU0IGZkMjdhYzVmY2M4MTgwOGU5YWZkOTFlNmFkNzY2YjNkZGU2ODFhZGUgcHkzaworNjI2NTUgMDMyYTBhMGQzZmE5NjA2Y2ZlMTg3MWQ5YmZmNmEyMTJlNmFkYmM1NCBweTNrCis2MjY1NiBhODU5ZjgzNWVmNTNkYThhMjYxZjcyODAxNzE3MmVkZjg1YWQwMTk5IGxlZ2FjeS10cnVuaworNjI2NTcgMGZkZWYxNDk4MWE4ZTNiYjBhMWMyZDA0ODdmNTJjN2IzYjc1YTVlNSBweTNrCis2MjY1OCBiZDkxMDAwYzhlNzNkYzc3NmFmOGI2YzY3NGRmMmM4YTlkZjc1ZjczIHB5M2sKKzYyNjU5IDNkNDM3NzUyMTcwYjUyZGMwNDE3ODExOTM4NzZjZTBlNGRiMWFhNmUgcmVsZWFzZTI1LW1haW50Cis2MjY2MSBiZmE4MmI0OTMzMzU0MDk3MWU2ODlmNGZkMjc5ZmEyMzIxNzkwMGI1IGxlZ2FjeS10cnVuaworNjI2NjMgMGRlYjRhYjA0MjZlMjg3ZDk2ZTA4YzAyMzk1NWE0ODI5OTYyNzQ0NCBsZWdhY3ktdHJ1bmsKKzYyNjY2IGVjMDlhZDViZWQxYWNjYTEwYzJjZDYxZmQ0YmJiYWY5MWFmNjIxZjYgbGVnYWN5LXRydW5rCis2MjY2NyBlYTU5NDMwNmVhODU0MmI5OGJlMDY4NjM3YjA3MTJhNzgzMmExNzIxIHB5M2sKKzYyNjY4IDY4YjFkNDRiNWY3NGE3OWYwMzYwMjU3ZDNkYzg3NjE1MTFiNmFkNDQgcHkzaworNjI2NjkgZWEzMGYwM2IyNGY0MWY4MjE1MzdiNmYzYzJkYjBhMDRjMDBlZTUwYyBweTNrCis2MjY3MSA5NDE4ZGM0YTdiOTg1ZDVjZmJiZGNiOWQxNWNiYjg4MDIwNjVlYTcwIGxlZ2FjeS10cnVuaworNjI2NzkgNWJiOTQwNjViMDc5OTljZTJlMzQ3OTY1OWU3ZTM3MDYxNmY3MGFjMiBweTNrCis2MjY4MCA4M2NjMDk2ODIwODFkYzA0OTNlOTIyM2I4NTI3MTJmZmM4YTZlOTMyIGxlZ2FjeS10cnVuaworNjI2ODMgMzM5MGViNzU5MWY2MTI4YjNmZDY2NDg4NjcyNGY3MTkyOWM4MDA2NiBweTNrCis2MjY4NCBjOTdlMzZhYmNkZDU5NTZmNWIzNzgxZGM2OTMzZmYzMGQ3NWMwNWFmIGxlZ2FjeS10cnVuaworNjI2ODUgYWNiMmE5Mzk0Mjk2YTQ1NzUxNDQxNjFhMzM1Zjg1OGViMjRhOWFiNyBweTNrCis2MjY4NiAxODcyZTFkYzAzNWZjMzI5YjllOGI5OWYyM2MzZjA3ZWIwNGZkZTdkIGxlZ2FjeS10cnVuaworNjI2ODcgYjdjNjZkM2UyZTI4ZGIwMmQ2Y2M3YTc3OGViZDY3M2NiMmNkNjFlMiBsZWdhY3ktdHJ1bmsKKzYyNjk2IGE5NGI5ZGI5MjIzZmNkMjBkMDQ5MGU1NzVkM2Y0MTVlMzc3NDdjNDMgbGVnYWN5LXRydW5rCis2MjY5OCBhYWEwYWI0OTAxMjZlMDJmMTg0MDU1Y2ZjMjgwNDdkMDczYjM2YzM3IHRsZWUtYXN0LW9wdGltaXplCis2MjY5OSBkZTc2YmUwMmRiNDI1YjNlNmE0ZjYwYjcxZjg2MTlmZWJhOWJiYzhlIGxlZ2FjeS10cnVuaworNjI3MDAgNmRiMzkyYWM5ZjRlYjE0MmI0YjdkZTc0NjRmNDFlZGY0NjEwMzI4MCBsZWdhY3ktdHJ1bmsKKzYyNzAxIGI5M2EwNDFjYzIyMTNlNTg5ZDQyYTRlNGE3NzIyZGE0ZWFhZmRiMTkgbGVnYWN5LXRydW5rCis2MjcwMiAyOGIwOTlhYzRjZDhmN2I4Yzc1MWU2ZDQzNGJkNGNmMzgyMjczYjM2IGxlZ2FjeS10cnVuaworNjI3MDMgNmM0ZWZlNTJkNTk0ZDNmZjRmYTAxZmFiZDI4NzY5ODFkZDUxYWYwMyBsZWdhY3ktdHJ1bmsKKzYyNzA2IGMwN2YxOWFmNTU0YTlmNjMwZDdlYmZjMTk1MDJkOWY2NGFiZDFlMzMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNzA3IDJlNDYzNDQyZTU3MDYwNGM5NWRhOGNiNDNmNjk5OTcwNDkwNDZhMGMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNzExIGZlMzAwYTk3MmZiOGRmMjg3NTA0NzU2OTU4ZDAyOWI1YWVmOGU4NjMgbGVnYWN5LXRydW5rCis2MjcxMyA3MTcyZTExZTlmYzhjNjc2ZGNmNjNmZmQ5OTU1ZjVkMjAyNTk5YjVhIGxlZ2FjeS10cnVuaworNjI3MTUgNjQzNDE1ZjkxYTUwYzkyZmY5MzU3ODk5MmZhOGE2ODUxOWQ3ZTkwZCBsZWdhY3ktdHJ1bmsKKzYyNzE2IDAzMWRmZTQ1NTU4NWNjZGQwNzg5N2I4ZTZkMDA0Zjc5Y2E0MjY3OWEgcHkzaworNjI3MTcgYzdjMjVjYzk5NjNkZDMzMjc4MzhhNTM5NTVlYTg5ZjI0MmVkNTM3NyBweTNrCis2MjcxOCAwNWE4MTdlMjVmMjBkNDJjYzcwYWE2YmU2Y2Q3NDY1MmQyZTM3NWEzIHB5M2sKKzYyNzIwIGQ5MDcxZmE4MjQ0YWYzNDMzNjY5YTdjNzA5MGU2YTU3NjYwN2FlYmYgbGVnYWN5LXRydW5rCis2MjcyMSA4YTliOGIzY2UyZTEyMjI1MDM3MTEwYzA2OTVkYTAxNDE3YzgxYTVmIHB5M2sKKzYyNzIyIDliMTBiZjY0ZjEyNDMyMTZiNjMwNzExYzVhODI4YzM5YzA4NTgwNGEgbGVnYWN5LXRydW5rCis2MjcyMyA0YzkwYmU4YTRkMzgyN2RlNGE0MzI1YTRkZmE5ZjE0OGUyY2YxNzNjIHB5M2sKKzYyNzI0IDhlMzNmMzE2Y2UxNDBkYTk3NTg2M2VhNGU5NWRjZDhhMGI1NDIxZmUgbGVnYWN5LXRydW5rCis2MjcyNSAxNWYxZDIzMmVhZTkxMzg1N2I4MjRlODcxYTFkM2U5NzYyZGJlMmRjIHB5M2sKKzYyNzI2IDEwZThlZjk1YjExZjlkYjYxODRlNTU0MDkxZmI4ZWY1Mzk3MWZjYzEgbGVnYWN5LXRydW5rCis2MjcyNyA4NmY3MzgzOGE0YmI3MTUwMWYwMzhlMzk0NGM1ZWE3MzY5Yjg4NTk4IHB5M2sKKzYyNzI4IDU1YmY4ZDY5MGU2N2FmNDYwYmNhOGU1ZTUzYTQ2NTc0YjI4OWI3N2EgbGVnYWN5LXRydW5rCis2MjczNCA0ZGVkMzU3NTRjYjcyMWY0OTYxMjIwOGEwZWI4ODUxOTAxZmFkZDMwIGxlZ2FjeS10cnVuaworNjI3MzYgMzRhNTM4MGVlMjc1YWUwY2ExNzE3MTVhNjdmZmFlMGZlMDVhZDJmZiBsZWdhY3ktdHJ1bmsKKzYyNzM3IDg4YTA5ODA0YmJhMzk0MzE1ZmU4YTM1M2I0MDcwNWNlNzdmOWM4M2IgbGVnYWN5LXRydW5rCis2MjczOCBiNzRhM2Y5NDZhNWU2NzgxMmU5YjAyZjQ5MjM4MDI4MGQxMDBmOTdhIHB5M2sKKzYyNzM5IGRhYzIxODQzY2Y1MzUxNGM1N2Y4NGU5OWZmYmI4M2RkZWU2ZjNkNzIgcHkzaworNjI3NDAgZTE5Zjg3YTk4NzhjMjg4ZDNlOGM5ZTJkODEwMzc3YzEzNjYxYzgwOCBsZWdhY3ktdHJ1bmsKKzYyNzQxIDkxZDVmMDg0MTcwMDA2ODE5MjY1YjFkMTJhMGUyNmU2M2QwZDA0OTAgcHkzaworNjI3NDIgZjJhNGQ4ZDRmMDYzNGNkYjJjNjk4ZjVlYTc0Nzc3ZGNmOGFjNzA4NyBweTNrCis2Mjc0NCAyNzI5ZTk3N2ZkZDllYTdlM2VkYWM1MzMxYjY4ZjNmNzgyNjFiNTU1IGxlZ2FjeS10cnVuaworNjI3NDggNzEwNmNhODcxYmZkMWI2NzVjZjZlYmMyMWNhYzAwMDk1MjQ2MmI3MyBsZWdhY3ktdHJ1bmsKKzYyNzQ5IDJmMzUxZmE1M2E2YjNmMGVhZmU4ODg2Yjk0ZTBkZDczNjhhNDVlNDYgbGVnYWN5LXRydW5rCis2Mjc1NiA1YWU4ZDU0ZDA5NTI4ZjY1NTYxODFkNWViZmFhYzcxMTc3ZjIwMmVlIGxlZ2FjeS10cnVuaworNjI3NTcgMTFlZDQwNWQ5OWNiODZmM2I1YTE3ODU4NWU2OWYzMmU5NDQ1YmE3MCByZWxlYXNlMjUtbWFpbnQKKzYyNzY0IDFlOGI4ZGY0ZGY4MzE1M2RkYWIyNzg3Njk5Y2ViNmE5NmViMGYxOGMgcHkzaworNjI3NjUgYzgyZjYzZWZiYzQwODMxYjQ5Y2JiZmJjODMyMWFiZWQxNjc3Nzc4NSBweTNrCis2Mjc2OSBiMGZiNTVlY2U4OWZjM2VjY2NjNTRiY2NlNTc0NDAwZjVhMjgxYWU5IGxlZ2FjeS10cnVuaworNjI3NzQgZjg0NjhiZmQ0MzU3NjA0Y2Y0OTk4Yjk4OGM0MzQwZWI3Y2Y3NWU0ZCBsZWdhY3ktdHJ1bmsKKzYyNzc1IGRkZDVmNDIzMzJiOTg1NjMyNTc2Yzc4MmViYjUyZTZlNGYzZThmMzUgbGVnYWN5LXRydW5rCis2Mjc3OCBjZGE4MTZjM2ExZTQ2YmUzYWYyZWI3ZDhjZTI5MmRlODI4ZDFmMzRkIHB5M2sKKzYyNzc5IDAyYTgxNDJkODNkYjI4MzczN2Y1MWY3Zjk5NTI3MDk0MTc5NTFmNTggcHkzaworNjI3ODUgOTEzMGI0OGE3MTMwZTE1YTQ5YzRlMTI4NDI2YmZmMTYxNGRlYmQ5NCBsZWdhY3ktdHJ1bmsKKzYyNzg3IDRiMTliNDFlZjYwNjRjNTMwNWNhY2I3N2E1Y2JhZGY4YmM4YmY2YWIgbGVnYWN5LXRydW5rCis2Mjc4OCAxYTJkYmM4NGJkZmNmMGE4YzRjNmRlMGIwN2RiNDRlYjZiZjdlMzFlIGxlZ2FjeS10cnVuaworNjI3OTAgZjQwNjRiNWM4YzVkMmRmNGEwZGE2ZjJmNTA0MmI2ZWY5MWFjMThmZiBweTNrCis2Mjc5MSA5MTFjODdmOGVkNWU1NzNhNmUwZjg1NGIzNzM3OTNkMTViYjA2MGJhIHB5M2sKKzYyNzkyIDBjMmU0YjU1ZjgwYjk3YjU2ZDcxZDAzNGQxMzI5MTFkMDI0MTY2YzIgbGVnYWN5LXRydW5rCis2Mjc5MyBmZmRiNWY0MTM5ZmU3YTg3MmIyZDdjMGI4ZDNmY2YyMWU2Y2IwOWQ5IGxlZ2FjeS10cnVuaworNjI3OTQgMTBiMTM5ZDg3ODYwMjFjMDk1YWIzNTk1M2ZiODhhMDU2Y2E3YjQ4NiBweTNrCis2Mjc5NyBjZWVhNDBkYWE4NDkwNzliNTE1ZWY4MDI0ZjQ0NjA0MDgwYWMxNmNhIGxlZ2FjeS10cnVuaworNjI3OTggN2M4MGJhYzdkNzc2NTZjYjcxZDljYTYxY2UxNWZiN2VmYzg0NzRkMiBweTNrCis2Mjc5OSBjOGFhMjIwYzZjZWVmOTU4YWQ1ZDhkNTMyMzFlZjBlNWY3MmE5NjlhIGxlZ2FjeS10cnVuaworNjI4MDAgNzM3YTE4YjJkZWQzNjVmMGJiZmM5MTBjYTE4ZmRjMjQ2ZGM3NDVmMSBsZWdhY3ktdHJ1bmsKKzYyODAxIDc0YjljODUzNjFmODhlMjUzYjlmN2JiNDlkZmFlMDQ2NjE5YjlhZDcgcHkzaworNjI4MDIgNzQ4NmMyOWY5M2EzZWRkMTEyMDYxOGM1NDlmNmIwMzRjNGUzZDY2ZCBweTNrCis2MjgwMyAwZTVhOTZmYzk0MjJiNGUxMzg1NTM3MWE0MmIzOTAyODczZGQ5ZmMxIHB5M2sKKzYyODA1IDc3ZGY5OTFlYTYzNzk4ZjVjOTVjMzkxZjdlNGFkNzE0MDIzODhlMjAgbGVnYWN5LXRydW5rCis2MjgwNiBkMTk2NTA4OGI4NWRkNzM3NmYwYjc4NjhhYWVjYWY4YmQ0NTQxZWMxIHB5M2sKKzYyODA3IDhiOTMxYTc5ODI3YTliNjVlMDEzMGI3ZmM5YTA1NGM3ZDc2MDBhNmEgcHkzaworNjI4MDggNWZiZDk3ZjFiYzM1ZTNjOTZlM2FmYjBjNTJhYmY0ZGRkNWNiYTEzYSBweTNrCis2MjgwOSAzOGI5NGMwOTdhNTUyNmY1YWJhYzAxNGY3NGI1ZjkwZmFkZmM3ZTE0IHB5M2sKKzYyODEwIGQ3ZTIwMjliM2NhNGJmMTEzMGNhMzkxYjQ2ZGFlYjhkODcyNjE2MWQgcHkzaworNjI4MTEgYjYzNTQ2MmE1Nzk4ZjAzZTU1MmYxY2MxMDE1NmFhNTNlMDNhMDQyZSBsZWdhY3ktdHJ1bmsKKzYyODEyIDgxNTQ2NDljNTUxNjYyMDFlMDlkMGI3MDRiNGNhZDJlN2UzOTUxNzUgcHkzaworNjI4MTUgYTlhY2YxOGE4ZTU3NTExYzdiZWE4ODY0Y2EzOWUxODdjYzAzNTA5MyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MTYgNDMwN2VlZDFmNzNiZTljNGI3ZmI5YzVkN2RlMzI5NTM4NzU4MDM4ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MTggYjlhM2FiZjU5YTQ1NDZmMDAyZDY2ZTQxODI4MDExM2M1Njk3OTBlMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MTkgYTY0ZjQwYjYyMTY5NjMwYzY3ZmFmNGNiY2FiZjY0N2UxYzY5M2IwOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjAgYmI5NTZmNGUzMjZlYzQ2MTU1ZjE4ZjVjZWIyMDY1ZDMwMjZmYTYwMiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjEgYzUzODE1MjY2MzYwZjA1ZmY1YTFlYTA2NTVjNTNiYjgxZGJhYjRiNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjIgNGIwMzllZGZlZTZiZWU0OTI2ODFlN2Q4NTJmNTAzOGMyMmQ1N2U3ZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjMgOTc0N2QxMTM3MDgzY2E1M2I3NTZhZmQwYTIxMGM2Njk2OWNkYmQ1YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjUgNjdiYTkzYWQwMGZkZjFiOTEzNTRkYmExMTgzMmIzNmM0YmY2OWYxNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjYgMmM0NTU4ZGZmNTNkOTA2NGE3N2ExMmI3MjAwMjg4ZmIyZjZhZjg5YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4MjcgNDFlOGU3MmFhOWVkYjFiMGI5NmQwOWI4MTZkZDMyN2ZhMDI5ZmY0MSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI4NDEgZWY0N2RmMjU0MjNjNzZhYWNhNDQyNTRkYWIwOWI2YmI3YzlhZTVlNCBsZWdhY3ktdHJ1bmsKKzYyODQyIDk1NzBiYzEyODMxNDQ0YTNiODMzNTRmN2U4ZDc3ODVjYmMwYTFmZTAgbGVnYWN5LXRydW5rCis2Mjg0MyBhZDc3NTFhOTU4MDk4ZDcxM2Q2ZWU4MmNmYzE0MDg2YTE4MTJmMzAyIHB5M2sKKzYyODQ0IDgzMWEzMGNkMjNhMjgyMDUyZDliMTEyZTk3MjgwODU1ZTk1Nzk1MTEgcHkzaworNjI4NDUgZTM0NTlhZDAxMzY4NmNiZWNlNzM2NjFlYmY0OGM2NGI1YmQwMzdhMyBweTNrCis2Mjg0NiA2ZWM1NjA4YjY2M2MyY2YyODAzMGE0YjcwY2M0MDJkZjMxMzAyODEyIHB5M2sKKzYyODQ3IGFjZDY4Mjc3YzRkZDAxMjdhNzk4MjEwMzU4NDAzZGZmNWJiZDU1NWUgcHkzaworNjI4NDggMmVmMWMzODExMzhkNTczY2ZkOTRiZmVlOTRhNWY2YjExZWVmNzI3NyBsZWdhY3ktdHJ1bmsKKzYyODQ5IDBlNzZhOGYzNDc2OTVhMzc1MGZiNjgxMWQ1NWQ2ZGJiZDc3OGNiZDYgbGVnYWN5LXRydW5rCis2Mjg1MyBiMTI0ZTMxNjE0ZWQ5NjkzMzZmNzVlMWUyNzZhYTU5MzYwNzkwZmI5IGxlZ2FjeS10cnVuaworNjI4NTQgYzU2MjQwMmMxYzA4Mjk5MjY5YmVmMzY4NzU2YzgyMWI4YjFjYmExZiBsZWdhY3ktdHJ1bmsKKzYyODU1IGM2N2MwOTU1NGQyMzAyMDQzZmIzNzgwOTFjZDAzMjUzYzMzYjdlOTMgcmVsZWFzZTI1LW1haW50Cis2Mjg1NiBlMzU5MzU0NzUxNTMzNzdkNjcyN2Q2NGU2YzUyZjcyYzNiODQwMTViIHB5M2sKKzYyODU3IDgxNDgwNjkyNjNhYTFmMDIxMGNkZDBkNThmMTU5M2ZiYWQ0ZTZlZjYgcHkzaworNjI4NTkgYWVkMDQyMzlhM2ZjMjU4NTIwNTJkYzQ2ZjM5MTZkNjA1YmZlMzY1MSBweTNrCis2Mjg2MCBjZWY1YWEzZWQ3MTMzNTQ5MDQ3Mjg2NjE4N2I2MzlmYjVhNjY3ZmE4IHB5M2sKKzYyODYxIDQ4ZTlmYjBhNzIxNzk5ODc3ZjI2ZWRhZWYwMWFjNmU2MDI5YjY4MTIgbGVnYWN5LXRydW5rCis2Mjg2MiA2Yjc5NzBhYTBkZGEzMjdmMjVhODMxNTE5NTFkOGE3Yjk2NmVhYmNjIGxlZ2FjeS10cnVuaworNjI4NjMgOWY0NTk3OTU1OGE5YmNkODIxOTZmMjJjNzAwOWQxNWVlY2MzNDQ0ZSBweTNrCis2Mjg2NCBkOWQ0Y2VmNDIxYTJkYzQ0YWM0MmFiOGRjOGIxZmEwOGI0ZjNkZTA1IHB5M2sKKzYyODY1IGQ0NDMwZTkwMjFjMjIzZThmZTUwNjAyOTI2YjdjMjFiNTljZmRhOWQgbGVnYWN5LXRydW5rCis2Mjg2NiA3MmJlMTM5MGFlNWY0N2JmNzg5YjRhNzNkMTVmYWVkMzcxODRlZmRhIHB5M2sKKzYyODY2IGU2OWY4NGVlNGYzYTU1MDIyZTJmMjUyZWNlMmJhZDk0MDdkMjE1NWYgcHkzaworNjI4NzEgOTgxY2FmMjRkZDhhNmFhZDhjMzkyOWZmMGFkYWZmYjNkYjk1ZGIwNCBweTNrCis2Mjg3MiAxNmRkZGZlMGE4Y2RjNDY2MjNlM2M3ZDA1OTc5NjQxMjFmMTBlNjUzIHB5M2sKKzYyODczIGM4YjQ5ZDhjMzk2N2U3YWVkYTRhZTc5ODAzMDYxNjNhYmUxOTRlMDIgbGVnYWN5LXRydW5rCis2Mjg3NCBmMmQ3NzFmMzcwYmQ4ZTBiYTM1ODlmYTE2ZTFkY2UyYTRiYjk2ZTU3IHB5M2sKKzYyODc2IGNhNDEwMjQxNGEzNDVjZWVjODA5YmZhNmI1MjkwZWQ2M2I2ODNkMjggcHkzaworNjI4NzcgMTE0MDdjMWY2OGNhNDg0YzI4YjFkOTQ2OTFkYjU4ODU3YWYzYTFmYSBweTNrCis2Mjg3OCBlYWFjNTYxOWEyMWZmYzA1NDljZGYzZTMyYjI2N2YzYjM3YjgxZDFkIHB5M2sKKzYyODc5IDIwMjhmYTJmYzFkZGZjYzk0YWUyZTEzZjFjZmFjNjczMjNkNmNhN2MgbGVnYWN5LXRydW5rCis2Mjg4MCBlOTVkZDI1ZGZiMGNiZTA4MDVlZTkzODMyYTY1MGUwZjM1NTBkNjMwIHB5M2sKKzYyODgzIDVjNWIzNjNkMmYxOWE4MWE5ZWFjNWYzODAxNTA0NmJmOTkwOGNiYTggcHkzaworNjI4ODQgOWZiYzJkYTU0ZTI5M2RlOTEzMWM1MGNjNTQxOGVhMTI2YWI0N2QzOSBsZWdhY3ktdHJ1bmsKKzYyODg1IDA0N2RhM2Y2ZmQ3ZmQ5NGEyZWFkNzcxNTA2NDRiOGZmODlhMjZjMmMgcHkzaworNjI4ODcgY2FjNmExYTMzNGUwNGNiMDZjODc3YzliZTU2ZDQ1Yjg2OThlNjMwNyBsZWdhY3ktdHJ1bmsKKzYyODg4IGI3MTA5YTBjZDBmOWY1N2E1MWZmNWI0OTI1ZDBjZDRhM2MwNWNlN2IgbGVnYWN5LXRydW5rCis2Mjg4OSBhNzY3MGFmYjVjMDkyZDk5NjEzMzIxNDg5NDE2MGE3ZTkzYTk3MTg2IHB5M2sKKzYyODkyIDZhZGExNWQ3OTkwZjcyNjg5OTc3ZjQzYTQ5YzE0ODc1MjMxZTAwNmUgbGVnYWN5LXRydW5rCis2Mjg5MyBiNWE2NzcyNzhiNWZhODU4NDY3YzBhZWRmMDI3NDM3OTVhYWYwZTc5IGxlZ2FjeS10cnVuaworNjI4OTQgYjhlN2ExNjE2MTFjMTRmMzJkYmJiZDgzNzUzN2NkM2MwZTQ5NmY3YyBsZWdhY3ktdHJ1bmsKKzYyODk1IDFmYjI0NmNiMjlhZTQxMWVlOGZjYTgyZjVkMTgxMGQ1ZTU2NjcwMjYgbGVnYWN5LXRydW5rCis2Mjg5NiBkZmIwYmI1ZmFhNmJjOWY2MzRiMDQxMjM3NWRiZmJiOThhYTM3NjE0IGxlZ2FjeS10cnVuaworNjI4OTcgNmJlNjQ3MTlhNTA5YWNjYmY0MGM1ZmQ3M2JkOTExODgzNWMzYTNhMSBweTNrCis2Mjg5OCAyYTE3M2E4YjNiMTNmOGFlMTQ1YjdhZDQ4ODgxOWQ3MjdiZTU2M2Y1IHB5M2sKKzYyOTAwIGZiMTk4NGZiMTgyZDNiOTYxMTBlMmMxNzFmMDZlYTExYjg0ZTg3MTkgbGVnYWN5LXRydW5rCis2MjkwMSAyMjRjYWQ4MjM1OTA1ZjAxZDE4ZmE1NWZlNjRiMzM4YzY0MGI5YjIyIHB5M2sKKzYyOTAzIDVlNGJkODI0OTg0NjI0ZWIyOTllYmJmZmQyMmZhZGVlODZmMmM4YWIgcHkzaworNjI5MDQgZGM1NzNlZTBkOTA0MTdiNzllMjZlNTgxY2FhMDMyY2E5OTFmM2FkNiBsZWdhY3ktdHJ1bmsKKzYyOTA1IGExMzBjZjQ4YWQ2N2NhZWYxYjExMzM5NGVlOTA4MzZjODEwNTI0MzMgcHkzaworNjI5MDYgNWQxNWE4YmNjNDQ1NjYyNTdhNzNhYzUzYmUxZmU3ZWQ1NTI0ZjI3ZSBweTNrCis2MjkwOSA4YmZlMmIwNjUyN2RhZDAzNGQzODgyYmRkYTI4Y2U1OTI4NWY3MTFkIHB5M2sKKzYyOTEyIGI5MzAwNTcxMmUzOTlmZjBjMmVlZGFmY2EzZWI3MjNjNTJkYjI0MmEgbGVnYWN5LXRydW5rCis2MjkxMyA1YjZlYTRkYmE0NGM5Y2NmZTFlYmNiMDg0YzA1ZjhiMWRmM2QyMDdiIHB5M2sKKzYyOTE0IDRkMDA3YTMxYjQ2NDUzZDczY2I3NWQ0MTNjM2M0MDc0OTJjMzU2ZTggbGVnYWN5LXRydW5rCis2MjkxNSAzNzY3NWYwYzMzOGE2NjA1ZjFlNTk5MzA5MzRjYzYyMWE3MjE0NGY0IGxlZ2FjeS10cnVuaworNjI5MTcgODE2YzIxYzc2MmM4NTNmOTY2MDlkZjc4MmUxYjIzY2I0ODQzMDFjNCBsZWdhY3ktdHJ1bmsKKzYyOTE4IGViYzlmNjZmZTk5MDI5Mjg2MzQ5YTM0OGI0YzY5MWU5Y2Y2NDQwZWMgcHkzaworNjI5MjAgOTQ2ZmJhZTRiYWFiNTY2YjQ5NWVlYzhiZjk4ZTM4MWI2MzU3OTNhZCBsZWdhY3ktdHJ1bmsKKzYyOTIxIDRiZDk4OTdkY2UwN2NmYTExYjhiNDVjY2Y1NmY0NWZlMjg0N2E2NTggcHkzaworNjI5MjMgYTg5YmUyNTA3MmUzZGU3ZjNlODFkNTMzNjNkYjI3YWRmMWQyNDJhYyBsZWdhY3ktdHJ1bmsKKzYyOTI0IDVmYjhhNTA0ZmE5NmYxMTE1Yjc1ZGQ1ODMxZjRiZTEzZjhmMDExOWIgcHkzaworNjI5MjcgMTVjNzIyMDI4NjE1NWMxYjdiNzliYjczNDBmOGQ2NGVkNGJjN2YzYyBsZWdhY3ktdHJ1bmsKKzYyOTI4IDU0ZTYyMmVmMzUwMGUyN2ZiN2Q5YzlmY2RhZDc5NWFiYTEzOGUyY2YgbGVnYWN5LXRydW5rCis2MjkyOSA4NGFmMGNmYTdiODFkOTQzNGU3NGFhYjlmYzIyNzk1OTM5YTgyMGZhIGxlZ2FjeS10cnVuaworNjI5MzAgY2Q2YzZkZWI3Zjg0ZTRlYzQ0MzMxMmNmNzM3OThkZDQ4ZjhlMTQ0MCBsZWdhY3ktdHJ1bmsKKzYyOTMxIGMyNDQzOGU5YWI1NGZiYTM2ZWEyMGVjZDUxYzE1M2UwZDBkZTBmY2EgbGVnYWN5LXRydW5rCis2MjkzMiBjY2MzMzdiNDViMmUzMWEwMGNmNDAxM2U5OGM2NDU4N2EyN2MxZWZlIGxlZ2FjeS10cnVuaworNjI5MzMgZWZiOTc5YTQ5NDdkMDAzOGM5ZGYwY2YzYjBhYTA4NTc4MzNhYmUyNSBsZWdhY3ktdHJ1bmsKKzYyOTM0IGYzZjZhODk1YTU1NWRmMzY5NWNjOWVkZmZkZmNlZmNlZWIwMDBlMjAgbGVnYWN5LXRydW5rCis2MjkzOCAzOTU1YzUwMmNmYTM3MjJmYTA5OTQyMTdmNTIyODQ0MGQ1ZjE2ZWU1IHB5M2sKKzYyOTM5IDE3Y2Q2MTJiMDZkYTFmODRmMmMxMzY1ZTEwMDZkOGJlYzA4OTM0ZTcgcHkzaworNjI5NDAgOGI2NzY4NWE4YmMzZWU2NzkyM2ExYjc4ODFhMDM3YzdmMWU4MWFkNSBweTNrCis2Mjk0MyA4YmFlYmExM2FlOTNkNDNmMGU2MzY5MjZiZTI5MmQ2OTFlOWU1ZWYxIGxlZ2FjeS10cnVuaworNjI5NDQgNTFiYWJlNzNjMGNhMzVmNmEzNDhjZjEyMGIwNDA2ZDVhZWNhOGZhNyBweTNrCis2Mjk0NSBhNDQ0OTg1YTY3NWFlNGVhZTQ2MGQyOTc2YmI2OTk4MmY5N2ViMjBjIHB5M2sKKzYyOTQ2IGI0MzI1MDZlZmNlN2ZkOTZlZThhZjY4MzE0NmQ4ZmFhMWIyMmI2ODggbGVnYWN5LXRydW5rCis2Mjk0NyBlMGNhNzRiMzY0ZTQ5YjU1NjE4YTgyM2QyYmQ5ZWViNDE1NjRkOTExIHB5M2sKKzYyOTQ4IGZkMGI4OTRiYzkwYzUyYTQ0ZjU2ZWYyNjg3MDc2NDdlNTlmNGQxZWQgbGVnYWN5LXRydW5rCis2Mjk0OSBiZDI5NTRjNDkxNjk4YzE0MmJhZjUzNmFkM2QxYWM5OTE0NDM4NWNmIGxlZ2FjeS10cnVuaworNjI5NTIgNDQ5NTRkNjVhNzNhNDVkZDUyNWEzMWI0ZGVjNWFjNDQ5NmMxY2RhNSBweTNrCis2Mjk1MyA4N2Q4NTRiYzFlNDVlNzFmMDk3NGE4NjgyZDEwOWU5YzAwNjJhM2I2IHB5M2sKKzYyOTU0IGRlYzUzMWMwYWNmOWI2MmY5Zjg1MzQ5NjA5MTljNDdlZGI3M2Y5NzUgbGVnYWN5LXRydW5rCis2Mjk1NiAzN2IyN2EyNWE4NDcwNGE4YWIwODJhNWQ0ZjhlOTA3YmQxYzQwNjExIHB5M2sKKzYyOTU3IDgwMjUxOWYwNDc1NDVkNDAxMTI5NzIxZDc0MDNlMzZiZjczZDNkNDEgbGVnYWN5LXRydW5rCis2Mjk1OCBmZTliOTdkYmQyMzJkMmNkYWRmODc5YWI3ZjY2Y2FmYTNhNTIyNDMzIGxlZ2FjeS10cnVuaworNjI5NjAgNGM1ZWUxYjM4MDQ1MDE3ZTg2NTdiMzNmYWQ1ZWExY2Y2NTMzYTU2NCBsZWdhY3ktdHJ1bmsKKzYyOTYxIDkxZmZkOWYzY2NlYzkwMTIwNmRhMjc5ZWIxZmFhNDBiZGQ1NDBmZjQgcHkzaworNjI5NjIgYzU2ZTgzZDA4ZDBiMDU4MzUzNGFiOTQwZWEwMDJhYjdlOWE5NWIxOSBsZWdhY3ktdHJ1bmsKKzYyOTYzIDA3YTM1YzlhNWQzZmI4Y2ZkY2Y0OGVmMWI2YTMxNzlkMGI5YzM4NTEgbGVnYWN5LXRydW5rCis2Mjk2NCA0OTk4NzVjYjZiYTJjNDBkMjYwNDJmYmQwNGM2ZDk1YjMxM2U1OTdjIHB5M2sKKzYyOTY3IDQzOTI2OTQ4NTU2OTkwOTcxNDcwNzZmYjdmN2E3Zjk4YzdmODdmMzQgbGVnYWN5LXRydW5rCis2Mjk2OCA1Njc5Y2U2NmU3NGI4ODM4ZDVkYjc3ZjdjOTJhYmFlYzhkNjRhMDE3IGxlZ2FjeS10cnVuaworNjI5NzAgOGRlNTFkYWE1MDZmZDg1NDk2ZmZhOTIwZmNiMWRjNTAxMDY0Mjc1ZCBweTNrCis2Mjk3MSBhYTkyNTBlNmM0MDkzNGUwNTgwNWMxOGYyZmM2MDJkMzI5ZWRmMjNjIGxlZ2FjeS10cnVuaworNjI5NzIgNzZlYzY3NWUyMGI4Y2JmZDE1MzZmOWE5ZGEzZTYzZGU2MDNlNTdhNiBweTNrCis2Mjk3NCAyM2VjMzNmNjY3MzYwZTRhMTUwOWUwMWEwODBhOTEwYzQyODAwZWU0IGxlZ2FjeS10cnVuaworNjI5NzUgODg0Zjg0MjZjY2NmNzg5MTBjYjkzYmRjMDU4OTBhMGRmY2MwMzJjMCBsZWdhY3ktdHJ1bmsKKzYyOTc2IGQwZjRjMjQ2NjhmMjM3ZGE2NjNjMmY0NThhMjU4NWRkMjAyNGMwMmQgbGVnYWN5LXRydW5rCis2Mjk3NyBiZThjNDNhM2ZkNjJmZjYyOTc0NzdhNmEyNjVmY2Q0ZjQ1ZGM2MmJmIGxlZ2FjeS10cnVuaworNjI5NzggMzg5MzhiNzE0MDE4MjQwNjgyNDg3YmMwZjQwNmVjZWRkNzI3ZWZhNiBweTNrCis2Mjk3OSBlM2Q0ZGU5MzUwZmI0ZGRhZGY4OWI2ZmY1ZGRiYmQ3N2QwZjliYWExIHB5M2sKKzYyOTgyIDJlY2ZjNzAxM2ViNWMzMzZjZDEwYjIzOWNlYmJhN2JiZmY1ODQ1OTUgbGVnYWN5LXRydW5rCis2Mjk4MyBhMWY0NThiMDE0OWYwOTAyM2E3YTcwZjZlNDQ2NGEyMmI3Y2Y4YjEzIGxlZ2FjeS10cnVuaworNjI5ODQgYWQ3ZDMxOWFkZjc2N2FjNmE1Nzc1MGE1MzE2YjMwZGY3Y2E5MTVhNSBweTNrCis2Mjk4NSA0MWE5NzY0OWRlNjE3NTdhNWE3MDY5ODEwY2QyODQ0NDQ3NWE0NGIyIGxlZ2FjeS10cnVuaworNjI5ODYgMTMyZjgyZDI0MDI4ZWQ3Zjc4NjVlNzcwNzY5YTVhYzQxNTVlNDA0MSBsZWdhY3ktdHJ1bmsKKzYyOTg3IDQ1MTY3NGY4NmQ3NTQ0ZWEyMzUwZjA2NDY1NmM3M2M5OGQ4M2M5YjYgcHkzaworNjI5ODggNzY1NGViNWQwYTY3MDFkMjNiNDIyMTkyYWE1NzkwMDkyNTA1MmNkNiBweTNrCis2Mjk5MiBiYzhiMjI2NjExZGQ0M2ZiYmI4YzMzMjgyMmEyZmM0ZmVhNThkZTQ1IGxlZ2FjeS10cnVuaworNjI5OTMgYjM4ZWQ3YzFjYWIxYzE5ZTcyZGMzNjA3ZGE3OWEyYWFhMjJlMTBjMCBsZWdhY3ktdHJ1bmsKKzYyOTk0IDJkMWVmOTQ4N2MzMTUzODMyZTk3MDg3NGIxOWQ4ODZlODYwODE4OWMgbGVnYWN5LXRydW5rCis2Mjk5NSBiZTNjOWY4ODY2ZTdiNzJjOTNhOWE0MzAxM2IzNGM3ZjBkZmI3ZjE1IGxlZ2FjeS10cnVuaworNjI5OTYgYWFjN2EyMmJlZjg0NWUyYTVkMzM0OGNkMjUwM2E5NjUyMWQ1ZmUxYSBsZWdhY3ktdHJ1bmsKKzYyOTk4IDI3MGY1NGU4MmQyMDgxYjAwYWJjZGIxNTIwZDViYmUzNWI5ZmNiMGYgbGVnYWN5LXRydW5rCis2MzAwMCA3NjNkNzJkMDAwMjU3YTI4NTc0YWNkNmRlYjk0M2I3Nzk4MzcyYWY2IGxlZ2FjeS10cnVuaworNjMwMDEgMzQxOGYyZWJjZTg3MjMyZjMwYzY2ZWIwOWI4MmIwMGUzZGQ4ZjM1OSBweTNrCis2MzAwMiA2YjRiZmYyOGM3YmEyYjViZWE4NDUwYzQ4ZjUzNzY0NjZhYWZhZWI1IGxlZ2FjeS10cnVuaworNjMwMDMgODdkZTc1OGRiZDY0NjU1YjZiNzk2MjY5MGRjZmYyYzM5MmJhYzVhNiBweTNrCis2MzAwNCAzM2Q0ZTAzYjIzYmFkZTgxNTA1OWM1ODNlYjMyZDM5OTM3N2ZiY2YyIGxlZ2FjeS10cnVuaworNjMwMDUgMTFhMGIyMjFmMzcyNjQzMDc0N2Q4MzExMjc0Njk2NGQyZjAwZTYxNSBweTNrCis2MzAwNyBiNmIyY2VhNWQzMDZmN2I5NzE0YWU5MzAyODdhMjQyNGJjYWNmZmFhIGxlZ2FjeS10cnVuaworNjMwMDggNDI4YjY2YzA0ZDNhOTExYjIzOTQ4OGYzMzUzZGY4YWExZTcwZDQzZSBsZWdhY3ktdHJ1bmsKKzYzMDA5IDYwYjE4YjM5YTNhMmU4MzlmNmQ1ZjJlZjMyZTdhNjFiYTY0Y2MwMmUgcHkzaworNjMwMTEgMmQwNGU1NjAxMmVkYzZmZGQ4NzZkOGEwMWJjZTAyNDBlOGQwN2FlNSBweTNrCis2MzAxMiA2ZWRhYWE3N2FmMjc2ODZlMjgzNzNiNmMxZDI0ZTU3OGZlOTNlYmExIHB5M2sKKzYzMDEzIDBjMDJlMTVhN2MxZmNkMjA1NGFhMDRkZDdkYTU3ZmUzZGUxNmI0MzMgbGVnYWN5LXRydW5rCis2MzAxNCAyY2E3YTI3OTgxNjFjNDBjNmE4MDExNDExZjhjM2Y3YTY3NmMzMmE0IGxlZ2FjeS10cnVuaworNjMwMTUgYmUxZWQ2MmQ4YjgwYzdkMDcwOGQ4ZjdjYTQ5YjBjY2JhYWVjOWJkYyBweTNrCis2MzAxNyBjN2Q1MzBlOGI3ZjUzYmNkM2VjMTNjYmIwNDU1NDRiMmJjMjQ2ZThhIHB5M2sKKzYzMDE4IGYyYTYzZWM1MDU1ZTZjMjQ3ZTgwMGU0MWNhNWYxYmM3YmY3OWNhNmEgbGVnYWN5LXRydW5rCis2MzAxOSA5MWZhYWU0OWNiZWJhYTVjODI5OWQzNzNjMDBkM2E3NGZmYzkyMzg0IHB5M2sKKzYzMDIxIDFlNDI3YmMwZjgxODk0ZmM1MWJkMDA4MGRiYWYzYTE4NjRiNzExZWQgbGVnYWN5LXRydW5rCis2MzAyMiBjMGM1N2JlOThlZWQ2YzQ0YTM0MTNiMGM3YzEwY2ZkZDNlODM5ZDM2IHB5M2sKKzYzMDI1IGMxNWNmMDE0MTVmOTI1NjVlYTRhYjY5NjZlZTNjMWY2MmMwYTBhMDEgbGVnYWN5LXRydW5rCis2MzAyNiBkOGUwMDBlYzc3OTZiZmM2MWU2MTUxOTdkM2YwZjk3MzlmMjhmNjY4IHB5M2sKKzYzMDI3IDg5MmY5YjI5NTljOWQxNjU2MWM1ZTgwMDE0ZDQwMzdlZGNjNjZhODkgbGVnYWN5LXRydW5rCis2MzAyOCAzODQ5NjhkNGQ2NTU4NmUwZWMyN2FjZmJhYmM0ZDIyODMxOWY1MmJlIGxlZ2FjeS10cnVuaworNjMwMjkgYWFhZTQ4OWI5ZDgxYzFiNDg0MmM0MTQzZWE1MjZhNzY5OWUxZjMxOCBweTNrCis2MzAzMCAyY2FjMzFmYzE3YzIxZmFhZWYzOWZhNGIxMTNlMjAzZTE0YmJiZDgwIGxlZ2FjeS10cnVuaworNjMwMzEgZDIzNDUxMTlhMmRhYmRiMTlmMDU2YmQxYTdiODcxNDkxMDM0M2UxMiBweTNrCis2MzAzNyBmYjE0ZmYwNTdjMDk2NzY2ZmRkNjZkZGU1NTg2OWRkNzFjNDI5YWE2IGxlZ2FjeS10cnVuaworNjMwMzggMTZmMTZmY2U1MzAyNWY2MmMxODZiZjgwZjk3YjllMDIzYjlkNWU1NSBsZWdhY3ktdHJ1bmsKKzYzMDM5IGY2Mzg4ZGMwMTljYzgyZjZjYmM4NTFjNGY1ODgwNWM1YzQ4ZjMzNjEgbGVnYWN5LXRydW5rCis2MzA0MCAyMjRlMDdiNjU4NjFjMjU2YmVjMGYwODNmMzFjZDBhYmU5YWE3ZTBhIGxlZ2FjeS10cnVuaworNjMwNDEgOWMxOGJhYTc2MGFkMGQwZGQ5MThlY2E3NGJlNGY4M2JlZjkyZWYyMyBsZWdhY3ktdHJ1bmsKKzYzMDQyIGI0MDgyN2ViNGI4MGI3NmVjM2EwODFkNTI5NWY0NGNlNWMwMDFkNWMgbGVnYWN5LXRydW5rCis2MzA0MyBmZGVmNzE3OTdlODMyMzFiY2MyMzk0OWNhYmVkNzUyNzQ4MDNjZDU1IGxlZ2FjeS10cnVuaworNjMwNDQgZGQ1NTEzYjQ3MmRjOTdmOTA5YTZkYTMyNWFkOThmYmI1NWQxZmUwYiBweTNrCis2MzA0NSA1MjU2NmI0NDVmYzc1NTcwMzAxNWM5YWM4NTZkMjY0Mjc2MzMyZTU3IHB5M2sKKzYzMDQ2IGU1YWViM2RmMTc0ZTQ5N2VmNWNmMzU0ODNlMmY5YWMzMTFjNDM5NTMgbGVnYWN5LXRydW5rCis2MzA0OSBkODg1MDc1ODg3OTA0ODllNWI3OWRmYmJiYTBiMGQ0ZTg4MjVjYWEzIGxlZ2FjeS10cnVuaworNjMwNTAgODc3NzgzMzMzZWFlZGZlNTFhMzAxZjNmZjZiZmZhNTQ4ZTBjNzY0YiBsZWdhY3ktdHJ1bmsKKzYzMDUxIDZiZDY2NjA3NWUxNGM4ZDdlNjhiOTk0N2QwZTMzYjBiZGE4YTlmM2YgbGVnYWN5LXRydW5rCis2MzA1MiA1ZGJiYzQ0OWYwMmJlMjI1ZjkwNjhmMGQwOTUxMjU4NTljNjM5MDhhIGxlZ2FjeS10cnVuaworNjMwNTMgYzdkMWExNzBjOTRjMzVjZDAxNjVkZTY1ZmM4MDRhZGZlMjVmZDAxMiBsZWdhY3ktdHJ1bmsKKzYzMDU0IGMyMTM2YzE0ZGNkNzk0MDlkOGUxMDJmZDhjMzliNTdkNmFhZGFkN2QgcHkzaworNjMwNTUgZjRlNjFkY2RiNmY4NWE0ZDczNTk3OWFjYjE4YzNkMzVmYzViNWI5MiBsZWdhY3ktdHJ1bmsKKzYzMDU2IGIyOWI0NmE0MzlkOWYwYzhlNTViZTQwM2I5MjEwNmI4MGY2NjRkMTcgcHkzaworNjMwNTcgOWM3NjVmNGVkNTEyMzQ1MDJmNDYxYTJiMWU1YWRmMWYzZGMxYmUyMCBsZWdhY3ktdHJ1bmsKKzYzMDU4IGFmYWVlZGFkYmRiMzZiMzhjMWNhNjVhNzViMzc5YjRmYmEwN2ViZTMgbGVnYWN5LXRydW5rCis2MzA1OSA0ZmI2YzBjMTY5ZmYwYjVjYzI0MjM5OGU3NjYyYTAyNTdiYWI0MDRjIGxlZ2FjeS10cnVuaworNjMwNjAgMGRmNjE2MTkzYjk4ODA2YjQ1OWRkOWM2ZDk3Yzg5YTExYjgxYTBjNiBsZWdhY3ktdHJ1bmsKKzYzMDYxIGE3M2U4N2YxNWZmYTc0OWVlMjg3YTc5MDMyZjQyNTY1ODA0MzY3MGEgbGVnYWN5LXRydW5rCis2MzA2MiAwODFmMmE2NjI2MzQ2NWI1OTU3ZGEyMjcxMmFkYjE0MjlhNTBiNjM0IGxlZ2FjeS10cnVuaworNjMwNjMgN2Y3N2RiOTUwY2I0NGVmZDc2YTdkYWVkZDQ1Y2ZlNmM3NjAwZDcyNiBweTNrCis2MzA2NCA4MThjYWViZTM3MzMxMWUxOTQ4MWM4MTg4NzVhYzU1NGU4NDU4N2UyIHB5M2sKKzYzMDY1IDA3NTcyYTgyNTQwZmRkZTcxNzBkMzNmNzljMTZkM2U1NTk4YWE0MGMgcHkzaworNjMwNjYgYmU4N2I3NzI2ODY2MGI1ZDg1OGM1ZTYxMWYwYWJjYzYwODUxZTAwNyBsZWdhY3ktdHJ1bmsKKzYzMDY3IGRlZGNlN2NiN2E1ZGZmN2NhMjIwZWI1MGQ2NjFmNTRkNDI2MzBkZTcgbGVnYWN5LXRydW5rCis2MzA2OCAxZmRmYjI5ZjRmYjgzNjA5Y2Y2ZGM5MmIwNDBkY2Y2ZThjNGZlYTlmIGxlZ2FjeS10cnVuaworNjMwNjkgNWNjZDE2NWYzMGE0NTEyMzI5YmFlMTYyZjQ4M2MxOGE2ZDFjY2MzYSBsZWdhY3ktdHJ1bmsKKzYzMDcwIGIxN2IyOWU2MGU5YmJkOGRiZTUwODI4YWM4MjhhODI1NTMzM2MwYjUgbGVnYWN5LXRydW5rCis2MzA3MSA0OWZmMWZjMDBjNmM1MzRlMWY0MWFmY2VhMjJiNjQ2NjI2MjM4ZDFkIHJlbGVhc2UyNS1tYWludAorNjMwNzIgNjdlNDM2M2VhMmUwNjc0ZTdmZDQ2MjNlOTg4NWM4MzBhNzcyNDk1YyBweTNrCis2MzA3MyBhYjE5MGY3MWI5MTc2OTU2MDUxYTE4ZmVjODQ5ZTBiOWU2ZDdkZGNmIGxlZ2FjeS10cnVuaworNjMwNzQgZTM0MDFmMzE2YTNiOTRiODZkZTQ1ZDMxNmZkYWU2NDg2YmY5ODRlNSBweTNrCis2MzA3NiAyMWFlMmI2NWJiYmIzNjk3ZTE2ODVhNDUwOTUzNDNmZGUzYjU3NDQ3IGxlZ2FjeS10cnVuaworNjMwNzcgNzY2ODFhNjMwNmE4MDcwZTAxNjUyM2NjZDEzNzNhZWQwODg5MDgyYSBsZWdhY3ktdHJ1bmsKKzYzMDc4IDIwNjcwMGQ3NDlmMGYzMjM5ZDAzZTJhYzM4NjYxN2Y0N2M3ZDQyZjMgbGVnYWN5LXRydW5rCis2MzA3OSBiZDJjOTVjMTY1ZWE0YzBkM2RlZWRlMzIyNTBhOTNiYzAyZjVjN2VkIHB5M2sKKzYzMDgwIGE5NDk1YTNmZTJlMGI3ODNkYWQ1MWFlMGEwZmYwZGU4N2Q0MjU3ODUgbGVnYWN5LXRydW5rCis2MzA4MiBlMDNkOGQzZTY3NTQ0Zjc3ZDczOTBlY2FjZDhjMDI2MzgyOTQ3YzA2IHB5M2sKKzYzMDgzIGI3MWZjZmQ5ODY2YmFlZWIwZGVkZjhjMjg5YzQ4ZTkzNDMwMWMwYWIgbGVnYWN5LXRydW5rCis2MzA4NCBhYmUzZjMwNWY2Yzk2MDFkYjI5ODA4NTE4ODljZmM4MzJhN2NjZTgxIHB5M2sKKzYzMDg2IDdlNDY5ZTNjZWJkYTZlMDk4MzcxMjkyMGRmY2M1OTcxZGQ3ZTg3ODAgbGVnYWN5LXRydW5rCis2MzA4NyBiNzEwZDcxOWEwODJhZDU5NTVhNjU4ODBhY2ZiNmZhZWUwZTVkYzQxIHB5M2sKKzYzMDg4IDgxMTMxMDQ2ZDFiMDkyOTBmY2JjMGM0OTU1ZjJiMjliY2U0MzliMmMgcHkzaworNjMwOTEgNmMxNWRiNmNlNWRhZjY0YmMzY2NiZmUzNzFlODEzMmUxOGI0ZTkxZiBweTNrCis2MzA5MiBlZDJjMTg4OGUxNDMwMTQxZjliZTMwZTRkZjM4MGJiODc4NmM4Yjg5IGxlZ2FjeS10cnVuaworNjMwOTMgZWY0ZWM5NjhmZGI2NjgwZWYzMzhmMDM2YzYyMjEzYjMwN2ZkOWZiYyBweTNrCis2MzA5NCA3NDFiMjY2N2FjMGI3MTRmNmFmZGMxMTIyYjM3OTkwY2Q4MDNkNzA2IGxlZ2FjeS10cnVuaworNjMwOTUgZjNkMGVjMGI3MzdlYjljMmJmYWU3OTgyMjUzNjRlYjdhYzkxMGFhOCBsZWdhY3ktdHJ1bmsKKzYzMDk2IGNjYzY2M2FhNGE3NjQ0YzdlMWI1ZTFhMWM1NDNhMTU5MWFhMjg1MDcgcHkzaworNjMwOTcgNmExOWI5YmVhMThlN2JkMmUxOGYwYmVhZjA0ZjVmMjhmODk0ZGU0NiBsZWdhY3ktdHJ1bmsKKzYzMDk4IDhlYThmYjE0ZGY3MTUzZGM3MTFjMDYyN2Q5ZTBlZWFlN2U3MTE2ZmIgbGVnYWN5LXRydW5rCis2MzA5OSBlOTQ1NzQ0NTVkOWRkMDc3M2E4ZWQ5ZDhkNTNiYmMyZmVmMzY3MmRlIHB5M2sKKzYzMTAwIGM4Yjc3MDA3YTFjMTQ0MzNlY2ZmZWQzODZiOWY5ZDFmMGMxNzA3NmIgbGVnYWN5LXRydW5rCis2MzEwMiAyMmNkYjZlYzNlNTY5MmEyNWQyNWFmYzhiNjMxMzAxYTMwMGY4NDMzIHB5M2sKKzYzMTA0IGE0Mjc3YzFjOThhODU0MTJmODkxZTA2MzNkMzAxZThlZTRhODNhZTIgbGVnYWN5LXRydW5rCis2MzEwNSBkN2MyMDdiODBjNDBhYTI2ZjZhMDFhNGMxNTg5OTBjODFlOTRmMDMzIGxlZ2FjeS10cnVuaworNjMxMDYgOTA2ODYwNDVmYmE4ZDEyZjViYjBjZDc0ZjBiMmFjZmFkYzZlNzNlMyBweTNrCis2MzEwOCBhOWZmNzI4OTA4MmIyMGZjOTJhMDcxZDFkMDdlMGFiNmNhYTNjMWExIGxlZ2FjeS10cnVuaworNjMxMDkgMGQ0OTU3NTQwYzk2ZTlmOTdkMThlYjMzZmY0MTRiMzhiNDNhYWJiMiBweTNrCis2MzExNCBjMmFiN2EwNmVkMjRiZWFkNGVjNjM2ZWM1YTI0OTVkNDMyY2E1ODA0IGxlZ2FjeS10cnVuaworNjMxMTUgNTI2ZDhjZjdhOTIwNmUzZjY0NDIyZjMxYWIzZTc3M2Y3ZjQ0ZjljMSBweTNrCis2MzExOSA0YzgzNzU1NzRhYTllNzQ2MTBhODk2Mjk4NDVkODFlYzM2YzEyOTVkIGxlZ2FjeS10cnVuaworNjMxMjIgNjIyYTI1OTY3MjI4ZDlhMDgxYjc4M2M4MmFjZjcxNTQ3MjhmYzkyYiBsZWdhY3ktdHJ1bmsKKzYzMTI0IGYwYTI4NWZjMjAxZDAwNWU1MDNiNDZkODAwMTkyMzZjMzgyNmFjMjIgcHkzaworNjMxMjkgYmRlMzhhN2IyMzE4Mzk5MmU4MTI4OWMzZGNiZTY0Y2YwYWRiMjRhOCBsZWdhY3ktdHJ1bmsKKzYzMTMyIGEzNzViMTM0NmViMzdlMzI0NmVlZjU5NmM4ZDM4MjBmNjFhMDZiYTggbGVnYWN5LXRydW5rCis2MzEzNCBkYWZkZTJlZWUzZDBkOGExM2U5NjkyYTE1NDQxMGJiYzhiN2M5NWI1IGxlZ2FjeS10cnVuaworNjMxMzYgYzllNWZhYTQ4MmU4YmFmMWRlOWJlMjVlMGVjNjI5ZTdmYTZiZmM0MSBweTNrCis2MzEzNyBiMzA1YTk2YTRiZTJlNDRhYTExNmVkZTBkNDFmMzE1ZWJkZWU4ZGU3IHB5M2sKKzYzMTQwIGFjYTVjMWQxYzU2OTRhM2VjMDU2ZjEwMjNiMWE1OTk4YTcyMTcyY2IgcHkzaworNjMxNDQgYTlhYTM0MmEzNjdhOTIyZDIzOWZjZWJiNTQ5NDliZGI0YzFjMjgwZCBweTNrCis2MzE0NSAyZjE0NTE4ZjMwMGI4ZmMzM2E5ZWM2NjE4ZjY2NDNmNGViYWZiMzJlIGxlZ2FjeS10cnVuaworNjMxNDkgNzk5MzIxZTdlN2JiNDMyOTE3NmJhMzcxZDcxYWIxYjVlNTIxYzlkMiBsZWdhY3ktdHJ1bmsKKzYzMTUwIGMxYTY4ZjU0MGQ1YmMzYjNjNTg3M2U3ZDIwYTgzNmU1MDM3NjRmYTYgbGVnYWN5LXRydW5rCis2MzE1MiA4MzdkZTI0YWMxZjdhNWZiZjU3N2RhODRiNzkyZTRiYWY5ZmVjYWJhIHB5M2sKKzYzMTUzIDRhYzljYzFkNzc5ODRiYzljM2VjZTMzMTBjMDA1MWQ5ZTFkOTdjNTEgbGVnYWN5LXRydW5rCis2MzE1NCA2NGQxOWYyODUxZTFiZGYyMTMzMjIwZDUxNjQ0M2I1MTkwNzdiODNmIGxlZ2FjeS10cnVuaworNjMxNTYgMTI4MGI4ZWM5ZGEzODUxZjZiYWM5ZDBjMjhhMTJiMjkzY2U1NmUyNCBweTNrCis2MzE1OCA1YTdjY2Q2NWU1OWIzZDJlYWY3OWM1M2Q4YzU3ZjljMTEyZjAyNzhkIGxlZ2FjeS10cnVuaworNjMxNTkgMDg5YzhkMGRmNzc0NDRkMTU5NjRlODI4YTQyMTQ4NTI1ZGRlMTU4MCBsZWdhY3ktdHJ1bmsKKzYzMTYxIGJhMjNmYzE1NzYxOGIzOTk3MDMwYTE3NmIzY2U3NGZjY2I4OTM1NDUgcHkzaworNjMxNjIgMzlmNmY3ZjE3MmNhOGU1NDdjMjg4N2ZiYzQ0YjA2YWY2ZmE0Y2Y4ZSBsZWdhY3ktdHJ1bmsKKzYzMTYzIGZkMjNlNmQxNzdlOWRhNmQ3YjUzNGE1NTg1Yzg2MzNiZGQ4YTEyYzcgcHkzaworNjMxNjQgMDdhNTNiYjgyYmFhMDViZGIxN2M4MzY0YmZkYzU3YjBkNmRhOGU0MiBsZWdhY3ktdHJ1bmsKKzYzMTY1IGRmMTFhZmYwOTJjZDg0ZTk1YWE4YWFmODVmNTQ1YWMyNmZjZmM5ZWMgcHkzaworNjMxNjYgNmE3NzhjMGE1MTdlNjBlYmQ4Mzc2NjQ0Y2NlOTQ3NmNkOTlmNDNkZCBsZWdhY3ktdHJ1bmsKKzYzMTY4IGIzZWFjM2E3ZmRjM2M3NTE4NDk1OGYxNWY1NmQ2MGE1OTllNWY2NWQgcHkzaworNjMxNjkgZTk5NzM5MDM2NjA2OWE0OTc0Zjk1OWRhZTU3MjJmOGQ2NDAxNWE0YSBweTNrCis2MzE3MCBkMjgxMGI4YWVkNmQxZmMwNzkxNjczMDdkZGJhZTNhNmM1NGNjZjI2IGxlZ2FjeS10cnVuaworNjMxNzEgZmY5YjIwNTc3MjJjYjUwNmE5NDhmYTA5YWIwYjZlZDRkZTMyMGIzYiBweTNrCis2MzE3MyA5MDkxNjM3ZTMyYjFlM2I3ZDI4MTFhNmQ1NzQxZjhlMzhhM2M3YWM3IGxlZ2FjeS10cnVuaworNjMxNzQgOTlmNTBhZjY5MmQwMjhjMTA0MTdhMDk0YWQ1NjhlODMyOTM0NjRkOSBsZWdhY3ktdHJ1bmsKKzYzMTc1IDkyZDAwZjVmM2MwZDA0MDE5NWU3YTliMzg3OTQzOWRlMzcwMTdkMDYgbGVnYWN5LXRydW5rCis2MzE3NiA5ZDQ2YzI4OWQxNjYwNTFhZGM2NDZkYzI3OWQyZmEwOTUyYThhZTVlIHB5M2sKKzYzMTc3IGU2NDAzOWJiZmUyNjg2N2U5NWQ0Y2RlYmU3ZWExMWVlMmJmMzZlYTEgbGVnYWN5LXRydW5rCis2MzE3OCAxZTU3M2MyY2Q5YmU2MWExODAzNTk0ODIxZjFlMGQ2OTIyOThhMDg4IGxlZ2FjeS10cnVuaworNjMxNzkgMmViZTI3MjdmYzkyYWU0MDdjNjc0ODM1ZjAxYzg4OTE2MDk1MTY1ZCBsZWdhY3ktdHJ1bmsKKzYzMTgwIDhhNDlmOGVmN2Y4OTQyMzNhOGExMGVkZWE3Y2I4YmU3MGE5MjNiNGEgbGVnYWN5LXRydW5rCis2MzE4MSA4OTQxNDRiMTczYzlmNjJlMTUwZDBkOTkyNTlmM2JmNjY5YjU4YTU2IHB5M2sKKzYzMTgyIDAzYjEyMzNiZjVmZTAwYzg2ZmRlOTFlNTlkMTFhNWI4NjBkNjMwYzggcHkzaworNjMxODMgODI2YWZmOTVjZjBiZDFiMmI0OGM4NDI4NTQ4ZmYwOTNlMTE3ZjkzYiBweTNrCis2MzE4NCA2NWI3NWY3ODM4ZjNiNzMwZWM1N2NhM2I4Mjk4MWQ5MjU2NjI5MGU5IHB5M2sKKzYzMTg2IDUxYWZkNTY2ZGIyYmQ0MjYzYTQ4ODdiMWE5ZDdiMTBjOGYxNjQ3NWUgbGVnYWN5LXRydW5rCis2MzE4NyA2ZGYwMzk0YWJiZjFiZGEyYjBkN2U1NWZkNDc2NWU2YmZhYTJhY2JhIGxlZ2FjeS10cnVuaworNjMxODggMjg0NTFiNWU4MTZmZGJhMDJiZWJiNmI2Yjg1MzcyMjVlZDVhZDgxZiBweTNrCis2MzE4OSA2MjY1OGIwYWNhMDgyMmU0Yzk2ODU3YzFlM2NhMjk5OWRjMGJlYjRmIGxlZ2FjeS10cnVuaworNjMxOTAgZWVhZDA4YjhlMWZkMDYzZTFkM2ViNDg1NTMyNmVmOGU3ZDhlZTUxMSBweTNrCis2MzE5MSBhNTk2NGVlNjYxOTNhNGIwMmFkZDA5MmE4OTY4OTUwOTU1YTI4OGQyIGxlZ2FjeS10cnVuaworNjMxOTIgZGE2ZWYxMTBjMzczNTI0MmQ3MTQyNmNhYzFiNGViNDIyZGVlNDYwNCBweTNrCis2MzE5NCBlOGY3NDg0NzI3MzBjN2JkYTA5Nzk1MWY4ZDYyYzY5MmM4Zjk2YjU3IHB5M2sKKzYzMTk1IDkxMWE3YmNkYzE3ZTU5MTBjZDNmZTg4ODA0MjkxY2Y4OWVmZjZjODkgbGVnYWN5LXRydW5rCis2MzE5NyA3NTU2OGNkZGE5NDQ3MDlmYjE2NzQ2OWZmNzU1MjA3YTRiM2IzOWZjIHB5M2sKKzYzMTk4IDM4NGM1NGZhZGFhMmZiZDNkNDY2NmQyY2VmOWY5Yjc3NTM0NmI5YWQgcHkzaworNjMxOTkgYTk1OTRhNWNkZjdmYjg2MmI0NDliZjc4NjhjMmM1ZmRjNzQyNmQ2YSBweTNrCis2MzIwMCA1NWQ4YzM1MzIyYTcwZGIzYWU5OWE4MWRiZWYyNTU4ODNkNjAzN2IzIHB5M2sKKzYzMjAzIGMyNmMwMmE0MjAwODI0YmZmMjVlYjFkMjg4MzcwMTY5NzJjZDUwMDkgcHkzaworNjMyMDUgZWNkZWVmYThiYjZhODQxNjA5NWFjODdkYWYyZTQ3NzFiYTE3M2QxNiBweTNrCis2MzIwNyA2OWRhN2E0ZjJmOGUyZDMwOWI0ZTdjY2Q2MTZmZTRmMTgzZjBlZjE0IGxlZ2FjeS10cnVuaworNjMyMDggNDc2OTJmNmM4MTVlZGRiYTQ4NGUyMmExZDdhN2RkMzI0MTZlNmJmMSBsZWdhY3ktdHJ1bmsKKzYzMjA5IDdjOGFjYWEyN2VhZTFkNDU1ZGNhZWVhMWI4ZmQ0OTU1NjAyYmNjODQgbGVnYWN5LXRydW5rCis2MzIxMCBlNGUzYjNlYmEyMjZmZDg5YjY3MzAyMTE5ZmM0MTc3YmEyYzRkMWIzIGxlZ2FjeS10cnVuaworNjMyMTEgZDJjMWVkNDA4YTFkNzZhNjU3MDE1ZjUyM2I1MmZlODc1MWEzNGMwZSBsZWdhY3ktdHJ1bmsKKzYzMjEyIDc2NDc3Yjk3ODg1MDliNDlhNDkyNmE4OTg0MDQ5MDhjMWIxMjlhZDIgbGVnYWN5LXRydW5rCis2MzIxMyBmMjJlZDgwMjg5ZDMwMTQ3OTY3OWYyODVlMWFhNjY4OWYyOWJhZmI1IGxlZ2FjeS10cnVuaworNjMyMTQgNDkwMzhlZTBlNWI1YjUzMDAzN2JjNGE5ZWE0ZmRlM2MyNmM4NWExZSBsZWdhY3ktdHJ1bmsKKzYzMjE1IDgxMjJhMzI0YjdhNTUxOWRkYWE0Yjg0OTVkNGU1NzM5ZGViMjEwZGQgcHkzaworNjMyMTggNjAzYTkzNWVhYWRhOTg1YWI1MmIxZjQwMGU4MmIxYWRlZjZjNzY3ZCBsZWdhY3ktdHJ1bmsKKzYzMjE5IGExNzU4NWE0NWVlN2VhMGYwYzg0OTM5ZTY3ODkxNzJlOGEyODU0ODMgbGVnYWN5LXRydW5rCis2MzIyMCA3YjZlMjIyZWFkYTcwYWI2MmViODAyODEwZGNmMTdlMDA1NDU2ZTliIGxlZ2FjeS10cnVuaworNjMyMjEgNWRkNmM1MWFlZWRlYTQ4OGMzZDI4NzBiMGRhOGU5MDM2YTE1YWQ1OCBsZWdhY3ktdHJ1bmsKKzYzMjIyIDhiMjIzZDM1MWIwOTU5MmIwM2NlNzk0MDM1YWIyNGJhYTIzZGE5ODAgbGVnYWN5LXRydW5rCis2MzIyNSA1NjFlNWY1MDI2ZWIwYTQ0YjM4YjUwZjM4NGVkN2JhMmE2NGM5YTc4IGxlZ2FjeS10cnVuaworNjMyMjYgODc2MDkxMmE5ZTlmZTA1OTA0NTQ3ZjA4MjIzNDM4MjUyYWZhZjMyNyBweTNrCis2MzIyOCAwM2Q2ODc1YmRlMGViYjE5MTdiMTgwNDQ1MDZlYzgzODA1NTE1ZjgyIGxlZ2FjeS10cnVuaworNjMyMzAgZTUzNmM2NTAxNDAyYzExN2QwZWE0ZmY4MzkwZmVkNDhjOWYxYjYyNSBweTNrCis2MzIzMSA4ZmI5YmQ1OTYyZTQ2ZmEyZmM1ZGZlMDI1ZGVmY2QzOTNiMDcwMDdlIHB5M2sKKzYzMjMzIGYyYzRhYjc0Y2M2NWJjZmZkMzc3YmZmOGMxNjA2ZTYyYmYwNzJkNDggbGVnYWN5LXRydW5rCis2MzIzNSA5MDViNjI3MWVmMTE4YWMzZDIwNDAwYjhmN2FkOGY1YTUwODBkYzQ0IHB5M2sKKzYzMjM2IDcxYWE5MDNlYjdhYzIyNDZlOWJlNmMzNmUwZjUyMDkzZTBjZTNiYjMgbGVnYWN5LXRydW5rCis2MzIzOCA4M2U5NTBmMjlkNDQzMzY2ZTI1ZWJjZDA3NmJkZmRmZjI1YmE2YzdkIHB5M2sKKzYzMjQwIGEzYjRmMWU2NWNiZWFlNTY0ZmZkNGM5ZTEyYzExZjMxNDAwZjBiY2UgbGVnYWN5LXRydW5rCis2MzI0MSA0MmZjOTIyMTIwZDk2ZThjMWU4MTc5MGJmYTdiMTBjYWJlZjRmOWQ5IHB5M2sKKzYzMjQyIDk5M2QwYmMwN2UwMDJhOWI5NTlkYmU5ZjI1ZjIwNWJmYWY0ZTM2MWIgbGVnYWN5LXRydW5rCis2MzI0MyBjNTQ2YzQwZmNlY2UwYTY3N2MyZjAxN2QzZGE0YmEwNDc1NGQ4ZmQ0IHB5M2sKKzYzMjQ0IDk1ODI4NmIxNWRlMDUwZDljY2EyYTQ0ODY3ODA0ZjM0YjAyN2UyZjEgdGxlZS1hc3Qtb3B0aW1pemUKKzYzMjQ2IGYyOGI3MDY0MTU5NWYyZDE2ZmRmOGYwNmUwNTUwZjczMjJjN2ZhNzIgdGxlZS1hc3Qtb3B0aW1pemUKKzYzMjQ3IDE3OTU2ZGJhZDBlNDFlMWE0ZWRmNjI1OTFhZDQyNjNmZmE3OThhZTQgbGVnYWN5LXRydW5rCis2MzI0OCA3MDgyMTRmMzUxZmU3ZDhiZGU0YTlkMjIxMDU0NGMzMGZlMTcyZDc4IGxlZ2FjeS10cnVuaworNjMyNDkgN2UxOGQ2NTkzODI0M2E1MDc1ZjZjMTdmYTZkODg5YTA5NWI0MTg2MiBsZWdhY3ktdHJ1bmsKKzYzMjUwIGMyMjllNzVmYzIyNDllNmFkZTQzYjA2NWQxZGVmNjY5M2UzMTI2ZDQgcHkzaworNjMyNTEgMzVhODg5OTI1NmMyY2E3YjI5MzkzZGIyODE5MWQ4MWUyMzNkZGM3MyBweTNrCis2MzI1NSA0ZWI1OWQ4YmFjNGQ2NGM4YjM4YTkwMjE2NzYyMDdiMGQ2ZjYxNTgxIGxlZ2FjeS10cnVuaworNjMyNTYgMDY2M2YyZmFiOTM0NTJjN2MzOTE0Yzk3NDhhY2UyZjgzYmRkNGRiYSBsZWdhY3ktdHJ1bmsKKzYzMjU4IDQxNjI4ZjM4YzVhMjg4NzRmZDYwYTg2ODE0NWY1ZDIwOWM3ZTNiYzQgcHkzaworNjMyNTkgNmYyNTlhOWNjYzg0ODE4ODUzNDI3YjM0NmUwZmNjMWNkYmVhMGVkOCBweTNrCis2MzI2MCBmMGE0NzA5MWM4ZDg2ZGQyZjNiZWRjOWE4YjYxYWVjMWY4MjM1ZmQyIGxlZ2FjeS10cnVuaworNjMyNjEgMWRmNDY2NzAyZGUyYThhZDJjYjNjYTc3YTEwMGIyYTRjZTVhMWM3ZCBweTNrCis2MzI2MiBhYWI4YjhkNGI2YTUwODU1Y2YzYTkxNzg1ZTRhNDdlYzMyYWZlZDhlIGxlZ2FjeS10cnVuaworNjMyNjMgZDVlYWE3ZGFlYzJmNDczMDVjMTViODhmOGE2MGRjYWRhYzQ1NzVkZSBweTNrCis2MzI2NSAwNTRmZjQxMjhmNzQ0ZWVkYzFkZTJmZDE4YjQ4NTBkYTBhMWMzMjNhIGxlZ2FjeS10cnVuaworNjMyNjcgMjdkNjlkYzcyNzkzMjFkMGQ5NDRmZDRmMjMzNTcwNjQ1NmYwOGIwMyBweTNrCis2MzI2OCA1ZTg5MzI5OTFhZGZkMTIxYzNlNTUzMmFiZjU3M2U4YWZhNGFkZGM4IGxlZ2FjeS10cnVuaworNjMyNzAgM2FiYTQ0MjU2MjY1NzllZmUwNjk4ZTY5NjI4YTYyOGY0ZmU2MzEzYiBweTNrCis2MzI3MSA2MmQ5ZWM5YzllZmQxMDJhNzU0MjY2ZDIyMGU3NmY0ZDk5MjhlM2NjIGxlZ2FjeS10cnVuaworNjMyNzMgZjUxM2JiN2I4ZDk3ZTU1YjgxZjNiMTQ1YTViODlmM2ZlZGQ4ZWFiZCBweTNrCis2MzI3NCBhMDkyZGNlNmU5ZDRhOTYxMDI4NDMzZGRlM2I4NGQwZmUzYTlkYjZiIGxlZ2FjeS10cnVuaworNjMyNzYgM2NjMGJmN2YwNGI2ZjU1MTBkZmM1MjhjNTI4YmFkNjY3YWFjMTFiMiBweTNrCis2MzI3NyA4NzZkMmYwZTkyZTRlM2ExNTQwOGE1ZmY5ZDYzZGE0YzA0ZWRjNDI4IGxlZ2FjeS10cnVuaworNjMyNzkgZTRiYjZmMTc0YjAwNDQ0N2NmZTM2NTAwOGJjODRmNzliZjcyYmQyZCBsZWdhY3ktdHJ1bmsKKzYzMjgwIDZkYzkxYjM2NmQ5ZmZlNzJiYTAyNDA1YjU5MGRjNzRkM2UyNGYwMjQgcHkzaworNjMyODIgNTdjZjAwMWFhMmEyNGU4NmNiZjhhMzQ3ZGU4ODQ3MjQwOWYyZmQyZSBsZWdhY3ktdHJ1bmsKKzYzMjg0IGZjZjVkYWM1MTM5NGI4YmI0ZmY3ZTEzY2UyNDg4ZDcxMGYxMWVjYjEgcHkzaworNjMyODUgYmFkYTBlODcxYWMxY2YxOWVmMzk3NTljMGNlZWNhMTA1NGUyMmUwMSBsZWdhY3ktdHJ1bmsKKzYzMjg3IDVhZjM4Yjk1YTE3ZmFlMjk5ZTNhNTlkYTY1ZGJiM2Q2YWYzMzI2ZDAgcHkzaworNjMyODggOTZhODc2YWY5MzBhNDc4Nzc3NWIzZmYzOGQ0ZmY2YzdjNjU4ODNmNyBsZWdhY3ktdHJ1bmsKKzYzMjkwIDhhMTBhNDExOWZjMjc1NzNhZmVhY2Y5NTcyNmUwYjI0YjYyODg0MzggcHkzaworNjMyOTEgMWI0NGVkMWE5MDQ2NWVlNGFkYzQwNGFmYTMxMTVhNDE2MmI4YmVlMyBsZWdhY3ktdHJ1bmsKKzYzMjkzIGRjNDA5OGNhODIzZTI4NzliZWYzNWJlNzJmYWIyMGQ0OTBlNmNmODMgcHkzaworNjMyOTQgZDRiNzQzYmRlYmIxNmM1YzkxYWM1ZTk2YmEzYjc5ZTkzYzJkYWRhMyBsZWdhY3ktdHJ1bmsKKzYzMjk2IGNmYThjNjE4ZWQzNTM3MDlhYTIwYmU0MDMzZmQ3NDEzZTQ3YWJjZjggcHkzaworNjMyOTcgODA0MzViYzdhYWM0ODM4Zjg4YjViZmE1NDBjMjI5YTIxODBiMGJjOSBsZWdhY3ktdHJ1bmsKKzYzMjk4IDFlNTViMmQxYzkzZWYzNTg3Y2RjMjZjNzFlZjEzYzFkMWFlYjg3YjMgcHkzaworNjMzMDAgNTliY2RmZDI3NTAxZmVhNGNkMTMyNTFlZjVhMDI2ZDFhNzE0NDJmOSBsZWdhY3ktdHJ1bmsKKzYzMzAyIDUyOTg3MzlmMGE0ZGZjMTdmNGIxZGI0OTFlZGE4MjUxMTJkYjc4ZTIgcHkzaworNjMzMDMgZDRhY2VkMzNkNTdhNTkyNGMzMjg3YTk1ZGM4OTdkOTFjYTFlM2ZmYyBsZWdhY3ktdHJ1bmsKKzYzMzA1IGUxMTZjYTI2ZDhmMWNhNmJiYzAwYzY5YTA4Y2NhMmU5OWQxYTQ3Y2UgcHkzaworNjMzMDYgZWQ1MzJjYTdhZTc1Y2ZkNjlhZTZhYjgwZTE3MDg3Y2UwNTQ2OTBiNiBsZWdhY3ktdHJ1bmsKKzYzMzA4IGE3YzFiMzE3MDExMzgzMmFmYTZlYTA0MDExNTFkY2ZmYjA1ZTQ5NjUgbGVnYWN5LXRydW5rCis2MzMxMCA1YTQ2MDgyNzJjNTA2YTZjMDQyOGRhMjNlMTY5ODNmY2U2ZjY1MjI3IHB5M2sKKzYzMzExIGZkYTRkNDFhMDc3Mzg3OTU2OTc4ODBjN2Y5ZWNhMzAyNjU1YjBhN2UgbGVnYWN5LXRydW5rCis2MzMxMyAxZDYyZDMyNjEyZDZkY2ZiMmQyNjQ2MmI1ZWVlYzlhMzkwZjlhZDAyIGxlZ2FjeS10cnVuaworNjMzMTUgYThhNTdmZjZmNTY4YmM0ZTlkMzZkMGVhNmMwYmMxMjI2YTUyMDVmYyBsZWdhY3ktdHJ1bmsKKzYzMzE3IDEzNTZhNDE4ODMwYjM0Y2MxOGZmMzczNWZjMGVjZTY2YjU0Yzg3MDYgcHkzaworNjMzMTggNjI4ZGQ1ZWM0ZGQyZThhNzg0YTIwYTJiM2I4YWFkMDkzMTRmZDVhZSBweTNrCis2MzMyMCAxNTczYzc3NmRmODJlYzU1NWU4YmY3ODc4ZmNjY2Y5MjgyMWU3NGY3IGxlZ2FjeS10cnVuaworNjMzMjMgZDU5MjljZjg2OGNiYmI1MjMxYjE5MTQzZTliMzliYzA5ZjYzYTU1YSBsZWdhY3ktdHJ1bmsKKzYzMzI0IDkxODk2MjI3MjcyYTY5MmI1MWQ1MGEwYjUxM2MyYzkwZThjOTE3NzAgbGVnYWN5LXRydW5rCis2MzMyNSA4ZTAwMTc5ODZmNTBlZTY0YTE3ZTg3ZjhjY2EwYTRkNzhlYzIwZmQzIHB5M2sKKzYzMzI2IDM5MTk3OWFmNjYyYmM0OGRhZDY3NDQ0ZTRhZWYyNmVmOWY5Y2Y2OTEgbGVnYWN5LXRydW5rCis2MzMyNyBlNjhlNjEwODYyYmViNWY5YTU3MTJjZGRiMzMyYTkzNTk1ZTJjZWYwIGxlZ2FjeS10cnVuaworNjMzMzAgODdhNzkzNTIzNDJjNjIxNWVhY2UwZjZjY2U0MzY2MTc1NTU2NmM4ZiBweTNrCis2MzMzMSAwODFjMTU4MDZlMjg3YzAzNjYxNmE1MDgyY2Y3YTRiZWI5MTUwNjk3IHB5M2sKKzYzMzMyIDBkNTRjNzA1NjQ2OGIzMmE2OGE1NzdmMzkyMzY0YjNkZDk2YTVhZTMgbGVnYWN5LXRydW5rCis2MzMzMyAzOTdmMjlkZDgyYmRjNWRjNGVmM2ZmNWI3MDY2MDU1MzRhZWM3MzE3IGxlZ2FjeS10cnVuaworNjMzMzQgMzFjYzhlMWE4ZmRmNWYyMzdmNWU5YTk2OTg5Mzk5ZmY5MmMxZjZiNSBweTNrCis2MzMzNSA5NjBhZGU4NTYwNzhkNjU3MTJhZDY3ZjQwNjZlYzQ2N2QwODIyZTc2IHB5M2sKKzYzMzM2IGFlMTZlOTRiYjAzYWU4ZWRmZDcwMzY0OGVlNWM0MDU4ZTZmZDNlZTQgbGVnYWN5LXRydW5rCis2MzMzNyAyYjhmNzQ0ZGI3OWI3MjE1ODdhYzA2ZGNiYTU1ZDc4YjMyNjUyODRkIHB5M2sKKzYzMzM4IDY3ODBmMDE1OThhMjM0NGY3OWU3M2YxZDI1NjE3ZDNmYjUzZTI4YTkgcHkzaworNjMzMzkgOGQ4ZTA2ZjRiZTFmZjRiZjZlNDI1MmRhZTQ1NzBhNDNiY2E4MjZkYSBsZWdhY3ktdHJ1bmsKKzYzMzQwIDBjNzE0MmM1NmQ3ZWQ5ZWY1NzU1OGI5ODMyYzBhNjk0Y2NmYzViMjAgcHkzaworNjMzNDEgYThhZTJhYTA4ZTdmZjUzMDVmODc1ZWM5MmM0OTQ2MDEzMzc2MGE3ZCBweTNrCis2MzM0MiAzYzAzZTliNDY2OTg0MTc1YWY4Zjg2NzA4ZWFkZWRjMGU3NjFjOWQzIHB5M2sKKzYzMzQzIDU5M2I2NDk5MDRiODY2MzYwNDBlYmJjZGIxYjQxZDE2MWMzODNhNWMgbGVnYWN5LXRydW5rCis2MzM0NCAzNjU2ODczOTg1MTg3Yzg4MTJlM2JmNjkyNjBkN2NmMjk0ZDFiZjhiIHB5M2sKKzYzMzQ2IDJlMmM3MTJmZTI2ZDY5N2RkNjZjOWNkYTAzNWE2MjBmYmQ3YzhhZjggcHkzaworNjMzNDcgNTdmNjFkYWQ3YjNiNGYzZjM4YjRlNjhlNmFlZDFkNzM5MTJjMzA4MSBsZWdhY3ktdHJ1bmsKKzYzMzQ4IDM0MDdiZjlkYWMzODdhNGM0YWI3Y2RmMGJhZmRhYTZhODgxYmNlOWIgbGVnYWN5LXRydW5rCis2MzM0OSA1OGEwZDU1MjRmOWEzYmE5NTA2MTUzZDFiZjAyYWY0OGRhZDg3OGRkIHB5M2sKKzYzMzUwIDk4ZjY4NzI2ZGEwMmQ1MGE2YjU5Y2M0OGIwMTIxYmQ1NzA3ZjgwMzEgcHkzaworNjMzNTIgYjYzMDcyOTU3MWU2NjhmNGU0ZTA3MjY4NmE3YTJmZmE4YzBmYzlmZCBweTNrCis2MzM1NCA5YWMxMTA0M2IzOTUzNjNlMThlZjAzZGZhYzk2Yzc3Yjc2MDdlYWQ5IGxlZ2FjeS10cnVuaworNjMzNTUgOTQ3Y2FlZTIzOTllZjFmODkxZDE0MjM5MDU0MWViNzJmZDhkZTllMSBweTNrCis2MzM1NyAzZGYwOTBlZDQ4MTAzZDYyMjkyMDk0NWZlN2YwM2U3NDZjOWMyZjRiIGxlZ2FjeS10cnVuaworNjMzNTggZDZmZTUwMjMzNjI2MGY2MDEzNDE4MmRlMmJjOWQ5ZGU2MTcyNDAzNSBsZWdhY3ktdHJ1bmsKKzYzMzU5IDRlYTk5MzA5ZTUyNTRjOGI1NmEyMzJkOGY2NTA0ODBjMTVkMThiZTUgcHkzaworNjMzNjAgNGYxYTA3OWRmNDI3Y2JkOWU4M2FhOGZlYWE5MDFiOWIxZTNhYmFhNiBweTNrCis2MzM2MSBiMGIzMjczMmY2NmViN2JlMjYwYjdjZDE0NGJlM2Y5OTQyMzU0NDE0IGxlZ2FjeS10cnVuaworNjMzNjQgZWQxMzA0MGFjMmU2ZTVmNzg0Nzk4ZmFmZjE5ZGRiZDFkZDUzYjlhZSBsZWdhY3ktdHJ1bmsKKzYzMzY1IGZmMmRjMDJiYTQxYWEzZDExMTMzOGEzNzRmYWVlZjczMGNmZDQzNWMgbGVnYWN5LXRydW5rCis2MzM2NiA0NTY1MGMyNWEwMjg2NTI2NmYzNjczNmYyNGM1NDRjMzNhNDk3ZGVmIGxlZ2FjeS10cnVuaworNjMzNjcgNTRmZDA0NTg1NTBjNmE3NTAzNjIxNWRmZGE1NTBkNDkyODM2ZWIyMyBsZWdhY3ktdHJ1bmsKKzYzMzY4IGFhOGUxMzI3OWI1YjFhYzFjYzU1ZTVmZjc0N2ZkNGYwNjIxYzk5ODYgbGVnYWN5LXRydW5rCis2MzM2OSBhMmNlZjllODliN2MyZTY5ODNlMjNkNWQwOWZhNTI1ZTcwMDI0NDliIGxlZ2FjeS10cnVuaworNjMzNzAgNWQxYWZmNDZjYzBkZjFlMzgzYjNiYWYxZjBhMjJhMTVkYjU2MmUzNiBsZWdhY3ktdHJ1bmsKKzYzMzcxIGIyNDAzZDQ3MGI2OWRkN2M4YmZiZjA2ODU3ZTdkOTE2YWI2MThkMmUgcHkzaworNjMzNzMgZGQwYmNjMjE2ZmUzNTkyMGFmNDQ2ZTI4NTczNTRjNzljM2UzZjQxZCBsZWdhY3ktdHJ1bmsKKzYzMzc0IDNiODI3ZjM2NDdjYjE4NDY4YWI2NDA2OGE1OTgyYTlmNmUzN2JmM2EgbGVnYWN5LXRydW5rCis2MzM3NSA4OTNhNGRjMTdhOTFjNWViYTEzNzM1MzcyNWJlNjY2YzVlYTVlNzViIHB5M2sKKzYzMzc2IDg4YmI5ZGYzODVkYzBkNzUwNjAwZWYzNmY4NGM4NWI3YTMzZTQ0YTAgbGVnYWN5LXRydW5rCis2MzM3NyAwZjE1NzM1YzE4MzFmNTRlYTBmYWQ1YzBhMWZkYjI3ZGM3Nzg2OGIyIHB5M2sKKzYzMzc4IDYzNzQxYzc1MjFhYTBjMjIzM2NmYThhYzQxYWU1ODQ1ODk0Y2Q2YmYgcHkzaworNjMzNzkgMGU2N2UyMWE0MTEzMjBjNzcyMmZiYWYzYzU0ZDdjZDViODEzMmFlNCBweTNrCis2MzM4MCA1MzA0MDQ2YmIzNThkNTYwMTVjYjY5NzUwNWRmMzJhNzM5ZmI5NjE2IGxlZ2FjeS10cnVuaworNjMzODEgYWJlMzVhODdiMDFkYTMwMzExYjg5NzM1Y2U5NmVkZDkwNzQxNGJkNyBsZWdhY3ktdHJ1bmsKKzYzMzgyIDYwYjg1OTI0ZWM2ZDAyOGU2YTJmYjg3Yzc2YjViNDQwY2UxOTdjZjQgbGVnYWN5LXRydW5rCis2MzM4NCBjZTdhYTg4YjY2OWVhMTBkYzFjYzc5NWFjMGI0ZTBmMjIwNGUyNjdjIGxlZ2FjeS10cnVuaworNjMzODUgYTAyYmMyYTg0ZDE5Y2NkMGI4MDJiODQ4ZDI4NDc2ZDYyMDAwZjM0MyBweTNrCis2MzM4NiA4ODBmZTg4NzdkZjk3OGI5ZWNlMDkyN2QyMjI3NmFlNGI5MTdlNmU0IHB5M2sKKzYzMzkyIGFiODBiYmZhNmYwYzA4OTI1NGM1ZTU2YTlkZmIzMWQ2MWFkZWRmZGEgbGVnYWN5LXRydW5rCis2MzM5MyBiZTU4MWFjZWE0ZTczOTk2YjM3NDg3Nzc5NGUxZjE0N2Q5NDlkNTk0IHB5M2sKKzYzMzk1IDZhZjY0NTEyMjk0YWQwOWQ3MjdiMWYwZGIxMzA0ZDBkNTU2NzJkMjYgbGVnYWN5LXRydW5rCis2MzM5NiA0MmI3OGUwZTY4NDgwNzM0OTYyMTUwNDI0OWM2NWQxOGI4YTMwMmM3IGxlZ2FjeS10cnVuaworNjMzOTcgODRiYjcyZDkwYmM3MjUyOTYzODE1M2E3ZmQ1YTg1ZDZkM2ZiZWRmNiBsZWdhY3ktdHJ1bmsKKzYzNDAxIDA2ODA3OTdhZTQ1NDYyOWUwNTdmZjIyM2UyNmRiMzEyMzAxMThlYTMgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNDAyIDIxNDRjOWYzNjVjOGZhYWZmMzEzZmU1ZDJhNTExZjlhYjQyZWRhMWQgbGVnYWN5LXRydW5rCis2MzQwMyAxY2E5Njc1NjY4ODBlODA2NDIwM2JiMjNhNzgwZjg3YjcyODVjNmQyIGxlZ2FjeS10cnVuaworNjM0MDQgNmZiZDA2ZGI3MDc3NjAxNmQwMzVlMmM1NzU4M2JiM2JjYjA1MjdhNiByZWxlYXNlMjUtbWFpbnQKKzYzNDA1IDZiNzk3NzMxNGMwMmZkNjFiN2ZlZTJhY2Q3NGNmYmU1NjI4ZGI0N2IgbGVnYWN5LXRydW5rCis2MzQwOCAzYmJmNDRkMzIzNjEyMmFjYjkwNzgwMTdhNDkzNmJmZjhlMzFlN2FiIGxlZ2FjeS10cnVuaworNjM0MDkgZjJjMDNkNzE1OTdkNDhiMmM0Yjk2M2I2NGQwYzI2N2ZhYmE5MDhlZSBsZWdhY3ktdHJ1bmsKKzYzNDEwIDY5NGQzNmZiNmY0ZGZhMjY2ODBjNDE2MjNjZTcxZDgwMDA2NWQwNmUgbGVnYWN5LXRydW5rCis2MzQxMSBhOTdlYjE3N2YzYTc3OWNkOWE0YTkwYmJmNmNmNWE1MmI3YjEyYzBhIGxlZ2FjeS10cnVuaworNjM0MTIgYWM5M2VkYzM5NmE2NGY5NGIwMjdmNjRkMzQwMzkyYTZiOGRhMjVkZiBsZWdhY3ktdHJ1bmsKKzYzNDEzIGI2NjA1MGRiODQxZjA1YmFiMjgyM2YxNDVmNWU1MWM0MmY0NWQxNzYgbGVnYWN5LXRydW5rCis2MzQxNCA2ODM2ZThmMWRlZGJjZDQ2ZjAzZDlmNzk5OWQyMThmZjI1OTIxZDMzIGxlZ2FjeS10cnVuaworNjM0MTUgNzQ2MDQxNWRhOGZlYzc2OTEwMjg2YjdlOTMzZGJjOGQ5YWE1MzNmYyBsZWdhY3ktdHJ1bmsKKzYzNDE2IGYzZGRhOWQzNjY4ZmQzMzIzYjc5OThlZGUxN2M1MjFlNmZkY2M2NjIgcHkzaworNjM0MTcgZDYzMzQ0YmExODc4ODhiNjc5MmJhODM2MmEwZGQwOWUwNmVkMmY5YSBweTNrCis2MzQxOCBlZjRjY2EyZDYxNzEzZDMzYzJhNTAyNTIzNWQ0MDMwZTM2OTVkMDJjIHB5M2sKKzYzNDE5IDI0OTYxODg4YWQ5NTZhY2U4MDcyNzU2MmU3NTU3YzZhMjc4OWY3ODEgcHkzaworNjM0MjAgOGE3NDYxMmYzZDJiYWUxZGMyMmJmNTYwNGZjOGNkNDEyZGUwNTY3NCBweTNrCis2MzQyMSBkNmUxZWEyMWM5NDhlYzI4ODUxZjg3ZWUxMWY1MjI5YTllM2FlZmI3IGxlZ2FjeS10cnVuaworNjM0MjIgOTI0MGE1OWEyNWU5ZGRjNDIyYzM1ODQ4MzA3YTEzYjA1N2JhYTcyZiBsZWdhY3ktdHJ1bmsKKzYzNDIzIGNjZTFiMjQzYzExZDEzNjNkODE3MTIwNGZlZjhlZjNkZGQxN2I3YjUgcHkzaworNjM0MjUgNzExOGZhZGU1NzViOWVjMWVkMjk4MTBkYzNiYzNmODYyYWY2NDJkZiBsZWdhY3ktdHJ1bmsKKzYzNDI2IDY0ZjM4NzM0MzhiMWNiMjY0NWQxODdiZjRkZGRhNGVkZmNmNTgxYWMgbGVnYWN5LXRydW5rCis2MzQyNyA1Y2U5MDRjOTBlNjE4Yzc1YjE0MmUzZDBiNDQxZjU1YTZiZTRiNDVlIHB5M2sKKzYzNDI4IGQ5NTNlYTU4Y2M4YmNhMzVlNDJhOTdmZGZhZGZiYjZlMDg3MWRmOTIgbGVnYWN5LXRydW5rCis2MzQyOSA3YTFkYzNlN2M3OWI1MjQzOTllYmEzZmQ4MDlkMzAxMGE3MGIwNTE1IHB5M2sKKzYzNDMwIDgwMWEwOWRkMGViOGFiZGY5YjJmZWI3NTk1Y2RhNDYwYWVjMTcwNWEgbGVnYWN5LXRydW5rCis2MzQzMSBhYzU5ZmRkODBlNDU5ZTY4MjAwZDI2ZGEwYWExYzQ2ZmQ3MjlhY2I5IHB5M2sKKzYzNDMyIDBhYTFiZGU5ZDE5NGE5N2Q2MjU3ZjQ0MWVkYjQ2MzE1YWEzODBkNzUgbGVnYWN5LXRydW5rCis2MzQzNCAzM2M3ZmU4NWUzNWRmZjYwMDJkOWY5ZmQyYjljMmVlMDdlOTY1MTViIGxlZ2FjeS10cnVuaworNjM0MzUgMTJjMjI5ZDAyMWNjMmM2MGE0NjY5YzIyNGVhYzc4MTIzNDJjZmQ1NCBweTNrCis2MzQzOCBmODYyZGZhZjlhNGJlM2EzMDVmYjVlYmQ5ZDc0ZTQwNzE4MDI5NzExIGxlZ2FjeS10cnVuaworNjM0MzkgNzI5NmEyZmI0Nzg2ZGRhOTA3YjQ2ZWNkODYxOWMxOGNkZjc0ZjQ3ZSBweTNrCis2MzQ0MCAzZDVjZGRjNmU1ZTdmYzUwMDM2OGI1MmNhNmM2ZjA0OGQyMzE5MmRlIGxlZ2FjeS10cnVuaworNjM0NDEgNTg1ZjdjYTM4YTg1YWY4MDk3MTM1YzkzNzJmNTA3MjQ3YTljZGM3MSBweTNrCis2MzQ0MyBiYmQzMGM0OTJhOTk4YzNlZDZlMTcwODA3NDJlYjJiMjZkNWZiY2EwIHB5M2sKKzYzNDQ0IGNkYjc1YWYyMzg1YTMxZmRhNjkzZDE2MzllZmI4NjE2NDU5ZWNhNGUgcHkzaworNjM0NDUgOWYzNTQwMDFlYTI1MjcxMTVkYTVmOTJjYmM1NjU0OGRiZDQ1Njk3MyBsZWdhY3ktdHJ1bmsKKzYzNDQ2IGVmZTIyZWVmMjZiZTNlMjc1ZTdiMDhlNTFlZWM2ZjQ0ZTgwZWYwNDggbGVnYWN5LXRydW5rCis2MzQ0NyAyMGIxYzVjNGUzMDQ0NWYyYjZhODdjNjhjZjEyYWYyYzllZjZiN2I4IGxlZ2FjeS10cnVuaworNjM0NDggYTkzODUyOWY0ZDZkZDNhMjE4OTEzMjcyODA3OTBiZDcyMGMyODIzNCBweTNrCis2MzQ0OSAyZTlmNTcyYjczMjI3YTg1OWE0OWNkMjBkNDE1ZmNkMWVhYzYyYjk0IGxlZ2FjeS10cnVuaworNjM0NTAgYjg2YjI5ZTBjZjMyOWQxMGMxODYzMmZkYTQ4OTc3NWFkNmUyMWE1ZiBsZWdhY3ktdHJ1bmsKKzYzNDUyIDMwZjYzMmIzNjg2OGU5ZDcwZWFkMjMxM2Q1NjE1YjQxOTI1YTk0MDkgbGVnYWN5LXRydW5rCis2MzQ1MyAzNzQ5OTI4N2Y3NThhNzJkYjJkMmE5YjM5MDNmMGZmYWIxODYxY2JiIHB5M2sKKzYzNDU0IDYxYTY3NWJhNzkwNjAyNTljN2E5OTIxZDAxZDk0OTMxYmE4ZmJhZjcgbGVnYWN5LXRydW5rCis2MzQ1NSAzNmM3MWQzYTZlZjhjMWU4OGZkYTIxMGRlYzM4NGRlYWJjZjU2NGE4IHB5M2sKKzYzNDU3IDMwNzFhMzM3ZDkyMWYzZWJhZWU5NDIyNDY3N2M3N2Y2NGNlODBiZDYgbGVnYWN5LXRydW5rCis2MzQ1OCA2YTZjYjlkNGJmOTQ1MDJkMzk4OGYzZmZhZmQ4MDVhYTE5Nzg3ZWJiIGxlZ2FjeS10cnVuaworNjM0NTkgNzk2Y2I5M2M5NzA3ZjdiZmNmODkyM2IxNjdiOThlZDViMzRiY2Q1ZSBsZWdhY3ktdHJ1bmsKKzYzNDYwIGNkOTFkYWYwMzI3YzZlZDFlMjUyY2Q2MjA5MTIxYzM1ZWRiZmJiNDQgbGVnYWN5LXRydW5rCis2MzQ2MiAxMmNhMWU4MjAyODJiZjQ5YzVkOTdlZWZkOTc3MjdhYTFjMTkwNTIzIHB5M2sKKzYzNDYzIDRlY2NlOGZlZDZlMWRiNjQzZmFjY2RhZTY5MDgzYjY3NDJmZGMwNzEgbGVnYWN5LXRydW5rCis2MzQ2NCA5NWNiMDA5MzY2ZGNiOTMwOTVlNTg1MmIyOTIzZThiNTliNDBiOWI5IGxlZ2FjeS10cnVuaworNjM0NjUgOGI2MjhjYTIxOGYzZDZjMzYyOWJlZWNhNTkwNzdjMTQzYWRkOTUxMyBsZWdhY3ktdHJ1bmsKKzYzNDY2IGExZjcwNDM1ZDhlMzczZjk2MGI5ODIzZWUyZmM3MmI2M2ZlOTRhZTYgcHkzaworNjM0NjcgY2E4ZDhjOGYyOTYwMzI1MzZlZWMwODk4ZmRmZjE1MGU4ZjdmNGJmMiBsZWdhY3ktdHJ1bmsKKzYzNDY4IDg1MzI2ZmI3NTVlMjk5MGExZGMwYjBhNDhkMzIxYWQ2M2ZkMWRmNDQgbGVnYWN5LXRydW5rCis2MzQ2OSBlODA4NTAwNTViOTMxNzJjMTQwYmEyMTJhY2NhM2ExZTdjYjBjOWVmIGxlZ2FjeS10cnVuaworNjM0NzAgYjgzZDdkMDI5ZTBlMTc1ZWI0OTUxNjIwNDQ4NzI0OTE3MTIyZGVmMSBsZWdhY3ktdHJ1bmsKKzYzNDc5IDYzZGRkM2VlNGEyZDFkNzgyOGFhYzkwMDUwYzQ3MDQ5ZmM3NDI0ZjAgcHkzaworNjM0ODAgODViYTA4N2MwY2M3NGIyY2Y3NWUwZGEwMDEwNzhmZDg0MGQxMDI4MSBsZWdhY3ktdHJ1bmsKKzYzNDgxIDQ1NGQzOGMxZjQ3ZTkxYTgwMjRlNmFmYWNkYzQ2MzZjNTFiNTUzZjUgbGVnYWN5LXRydW5rCis2MzQ4MiBlYWFhMTllOTQ5OTgzYzcxNmJiMDU2YTA3Yzc2OWFiN2U4MzcyODM5IHB5M2sKKzYzNDgzIGQxN2ZhYzg5NmEwYmM2YmZmY2YwOWViMTc0Y2E5MGYxY2ZiYTUwMWEgbGVnYWN5LXRydW5rCis2MzQ4NCA3NzU1NzIxNmJhMzIxYTE2MTYxOGQ3Yjk3MzM4OWZlYWE5NzVkNzAxIGxlZ2FjeS10cnVuaworNjM0ODUgZDVkZDhhODUyOTcwNTZhZWNkN2FmYzExZTExYzVlM2M5OGZmNWY4ZSBsZWdhY3ktdHJ1bmsKKzYzNDg2IDVjZWM0MzZkNjRhMjgxMmFmNzUyYTBiOWYyNWY1NjE1OTAwZDg5YzcgbGVnYWN5LXRydW5rCis2MzQ4NyBiNTM2MDRmYWQ1NGIwZTY2MjkwMWE3YmE1YjQxMWE3N2E0MGYxYTcxIGxlZ2FjeS10cnVuaworNjM0ODggYWUxOTEyMDIzMmI0YThlMzM5MDU2NjRlMTUzMmUzZThiNThhODNkNyBsZWdhY3ktdHJ1bmsKKzYzNDg5IDdmYzk2ZDdlY2YyZWQ3MWNjMWYxNzZkMmI4ZmZjYmUxYjg1MGY3NGQgbGVnYWN5LXRydW5rCis2MzQ5MCA1MWUzMjRiNTczYjA5OTQ2YjdmMTJhNzViZmQ1ZDViNzIwMDg0ZTc1IGxlZ2FjeS10cnVuaworNjM0OTEgYThmMTU4M2I3OGY2ZmVlNzE3NmY3Y2UyZDA4ZjMwY2MwY2IwODU5MCBsZWdhY3ktdHJ1bmsKKzYzNDkyIDRhZDRiZWY5MWU4ZTdmNDQ4OWU5NzFlMTY4MjkwNjBjMjRhOTRiYWMgcHkzaworNjM0OTMgZjQxOWIyZTk2YTk4N2MxZDM2Yzc4Yjg3ODlhMjZjMzhjZWFiZDA1MSBsZWdhY3ktdHJ1bmsKKzYzNDk0IDE3M2U1ZThiM2U1OWVkMmE0YTBiYWExMGI5OTA0MTViMDk2MjY2Y2UgbGVnYWN5LXRydW5rCis2MzQ5NSAwOTEyNTExYjk4OTc2MmJkNDk5ZGRlMDI1MDczOWMwNzEwOGNhMWFmIGxlZ2FjeS10cnVuaworNjM0OTYgMzJiZDE4NzA5ZGZkZjAwNGVhYzM5YTBlYTBmZjBiNzY1MzhjMzkzNCBsZWdhY3ktdHJ1bmsKKzYzNDk3IDE0ZWI4MDRiM2ZjN2RmMWMzMjM2ZmNjZmMxOTUzZGIwMGUwNDQ1MzIgbGVnYWN5LXRydW5rCis2MzQ5OCA1OWFiMmNmMDAyZmE4YjVhZDY4NzgyY2ExYzU4N2U5YzMyYjY4Y2EyIGxlZ2FjeS10cnVuaworNjM0OTkgNTJhNjYzNzM0MzdkMzIzN2M0ZjliMmYyZWFkY2M2YjJiODI2ZjRiNCBsZWdhY3ktdHJ1bmsKKzYzNTAwIDEyYzU2ZDJlYjRkOTc5OTU5NDAzNDA1N2ExMDE2MTViNmNlN2ZiZGIgbGVnYWN5LXRydW5rCis2MzUwMSBkZTExYmY4NDQ5MWQ2Y2U0MTk1MjFjZGE2YTQyM2Y4MGJiMjIwYWNkIGxlZ2FjeS10cnVuaworNjM1MDcgNDZiZDhjZmE3NTRjNTg5YTM2NWZmODEzZmQ3MTJlYTE4MjIzZTNjNCBsZWdhY3ktdHJ1bmsKKzYzNTA4IDMyOTFjZTQ5MjhiYzQ0NjI2YzZmMjBjZWUzYTY5MjUxOGQ1MzEyN2MgbGVnYWN5LXRydW5rCis2MzUxMSAyMmQyZmI3NjFhYzFkMzQ5Mjk5N2MzM2QyMWViMTMzNWQ1OGQ3YzczIGxlZ2FjeS10cnVuaworNjM1MTIgOWM5MzBhMzJjZWJiMjU3OGVkMzE0OGMyNTVkNmI3ZWJkMGJmOTMxMyBweTNrCis2MzUxMyA1MzhlNDEwYzAwODgzMTdmMGVjMjVmZjMzZjVlYzQ3NGUwMWUwZTZlIGxlZ2FjeS10cnVuaworNjM1MTQgNTVhNTBkMzkxYmE5YTgzOTI3YWVmMDY2YTEzYTgyNGNlYmEwZmJlNyBweTNrCis2MzUxNiAyZDdmYTg0Yzg3OGRiNTkyYmE1OTVmZmFjODdkZmQ3MDhjMmNlZTU2IGxlZ2FjeS10cnVuaworNjM1MTcgZDI5MDA1MGVkOGIyMmEyYzYxNzIwOTJlMmFlYzFlODQzYzI5MDAxZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM1MTggN2FhOWFkNjU4MDE0YTQzYmM0NjA1NTQ4Njc4ODFlNmMwNGY5OWYzMyBweTNrCis2MzUxOSA5ZGJjYTI3NTRiNDA2YzNjMjJlNjYyMmZhYTEwMjlmN2Y5ZTkwYmQ1IG9ra290by1zaXplb2YKKzYzNTIwIDFkMjI3MjNhNTc4NTI0NmQ2ZjI3NGJiZWZiOTA4NzY2NWI2ZDU1YTUgb2trb3RvLXNpemVvZgorNjM1MjEgMzYwNzc3NjVlMWNmNDU4YTBjNzA5ODU0NjYyZTAxNDgzODRjZDRhYyBva2tvdG8tc2l6ZW9mCis2MzUyMiA3Nzk4YmM4NmFiYTMyYTE1ZTc2ODJlODkyMDdmZTM2NjI1MGIyMDE1IGxlZ2FjeS10cnVuaworNjM1MjMgOGM4MWZhYTIxMGMxZGRlZjIyMDBkZjE0ZDNmNmU4ZDI4MTM5NjdjNSBsZWdhY3ktdHJ1bmsKKzYzNTI4IDViZTJkODJhYzVhY2Q1OTU3ODc3ZDg3MzdiZTVjY2Q2MmRiMDMyNTQgbGVnYWN5LXRydW5rCis2MzUyOSBjZGQwMDAwNjMxY2M3ODVhZTM4MDgxMWZjNDdiYWM4OGUwYTYzMjRmIHB5M2sKKzYzNTMwIDJjMzRmMTllMzkyMmE2YWQxNDg5N2JmYjczMjhjNGJhMWYyOTI2NDUgbGVnYWN5LXRydW5rCis2MzUzMSBjNmRiYzQzMjNhMjJkMjVlNTA1Mjk4ZGU5NTJiMjVlMjRiYTZjYjU3IGxlZ2FjeS10cnVuaworNjM1MzQgODFjM2E2ZjlkODVmMGEzZGMyYTYzYzk3NmFlODRmODA5ZDZkNGI2OSBsZWdhY3ktdHJ1bmsKKzYzNTM3IDRmNmVhNWM1OWFiMzFiYTVmMDViOTc5ZGI5OGNlNDA2YTU2MDg5MzEgbGVnYWN5LXRydW5rCis2MzUzOSAzOGE5N2RjYzJjOWM1YTkzZWU5MGRiNDAwNjBjZmFjOGMwM2EyZDk3IG9ra290by1zaXplb2YKKzYzNTQwIDcxMTRlMWVmZTNmOTY3NGU5MmNlOWQzNjRiNzRjNGYzZmE5NDIxZmYgbGVnYWN5LXRydW5rCis2MzU0MSBjNTM0YjY5YWI4NzFkNWExMjg2MWI0YjJhZmJkNGEwZTZkYzk0ZTgxIGxlZ2FjeS10cnVuaworNjM1NDIgMmZmZmRlZGIxMGY4YzQ4MjU1NWM1NDEzZTJjOTlmNmYyZTc1NzljYyBsZWdhY3ktdHJ1bmsKKzYzNTQzIGUxODUyM2Y4NDJkN2QxMzk1MGRkOTk4YTIxNWJlNWZhNGYwOWUzMGIgbGVnYWN5LXRydW5rCis2MzU0NCA1YTI5NTUyNDEyZmEyYmM2ZWU4YTIwMmI2Yjg1YjI3NzA1ODE2NzIwIGxlZ2FjeS10cnVuaworNjM1NDUgYmIwNDMzMmM3ZjAxNzgyYmZhZjI5YjMyZGRiMTYxNTZiN2M5ZjA5OSBsZWdhY3ktdHJ1bmsKKzYzNTQ2IDcxZGVlZTZiOTQxZTkzYjg5NWMxZTRjZGJhNjU3NmQ5MDg5ZmUxMmIgbGVnYWN5LXRydW5rCis2MzU0NyA5ZmJjNDFhYmRkNGJlZTBiOGY0ZTQ0MTYyNDNjOTVmNGY0NjUzYjQyIGxlZ2FjeS10cnVuaworNjM1NDggMzQyZmJkY2NiN2Q5NjlmZmRmNzJlYTliYzBiZTcyYzFkNWI5OTRjMSBweTNrCis2MzU0OSA5OTE3NmI5ZDkwYjM3ZmY2ZmQ3MWJkMTRlMDM1ZjVmYTc1OTUzYTUyIGxlZ2FjeS10cnVuaworNjM1NTAgZTJiZWY0NGY0NTdkZGMyMzc0NDA2NzAyZmEzYjVmMzhmZjY0Njc4NSBweTNrCis2MzU1MyA1OTQ4MjhlYTAzYTEwNWFkNDNlY2Y2YTI2YTMwMTdhMjM2NDE3Yjg4IGxlZ2FjeS10cnVuaworNjM1NjEgYTMwZmVkZTg3NjQzZDViYjAxNmRhZWM0NmNhMjc3ZmI4NTJmMDZmMSByZWxlYXNlMjUtbWFpbnQKKzYzNTYyIDVlYzk1MjhjOTNkZWFhNTZkZjk4MjU3OTJhM2Q3YjM3MDFjNDg0MGIgbGVnYWN5LXRydW5rCis2MzU2MyA1ZDE5Mjk5ZWUzNDYzZWQ3ZDM3OTg0NGVmNDI4ZTljYjc5MTc5ZDViIGxlZ2FjeS10cnVuaworNjM1NjQgYzVhODVlNGY5ZTg2NjZiM2RhYmZhNmM3ZjM2MDI3ODk5ZGE0MzNiMCBsZWdhY3ktdHJ1bmsKKzYzNTY1IGEyMThkNWNiMjU4YjIwODMxMzI4MjNhMDlkZGY5MmQ5NTU4YjBiMWQgcHkzaworNjM1NjcgNDZjNmI5Nzg5ZGRlY2MzMDY4MjBmMjZmMGE2OTFlOTZjNTU1YTJiNSBsZWdhY3ktdHJ1bmsKKzYzNTY4IDAzNGQ2YzllMjY3MWY5ZTVkMzNiMzhjNTBiODM0MGQ4MDZkMzBkYzQgbGVnYWN5LXRydW5rCis2MzU2OSAyN2MwZDczNTFlYThkZmFjNGFkMzI2N2IzYmQ2ZDExYzVmZWJlNDdhIGxlZ2FjeS10cnVuaworNjM1NzAgNzI3ZmRiOTA2MTkxM2UyNjJiODM3YzI0NzFmMmNhNTYzNDZhOWMzMyBsZWdhY3ktdHJ1bmsKKzYzNTcyIDU1NjgwMDVkMjIxNzMyMjViNzA2NDFlZWVkM2YyY2NmYzEyZjBiZjcgcHkzaworNjM1NzUgMGQwZDk2NDFmOWJkOTc3YTU1Nzk1MDVhNzA1ZGM4NWZiY2U0OTMzZCBsZWdhY3ktdHJ1bmsKKzYzNTc2IDQ1ZmY3Mzc2NzFmNjMzOWRhOWM1NWE0ZGZlNDdmNDliY2FmNDQyOTAgbGVnYWN5LXRydW5rCis2MzU3NyA2YWJjNjNjNjE1MjY1ZjkxZTJhOTA2Y2ExNjJmYjY0YmFmYTcwNWI2IG9ra290by1zaXplb2YKKzYzNTc4IDkwOTEyYjEwYWU3MmYzOGNhYzNkMTI5ZGFiMGZjZjUyYjc1ZWFhYmMgb2trb3RvLXNpemVvZgorNjM1NzkgZmQxYTJmNDk5NmVmMTY5MGM1M2ZiMzg3ZjBiMjVhYzI2OTAzNmMyZCBva2tvdG8tc2l6ZW9mCis2MzU4NiAyOGNmOTljMTkzYzdkNTZmMjAxMzhkNDQ2NTVhN2RlZDViN2YyNGExIGxlZ2FjeS10cnVuaworNjM1ODcgMGY1ZjMyYmNkYzhmY2ZkZDE1MTE1MGVkZmIyZDJjNWYxNTcxMTU2MSBsZWdhY3ktdHJ1bmsKKzYzNTg4IDA1YWEyMWQ2ZGJlYmU2Mjk5ZmJmOTY1NGY3ZjE5OTBlYzczZDY3YjQgbGVnYWN5LXRydW5rCis2MzU4OSBiYTFmYTUxMWI3MmQxZmM0YjE3NTU1MDJlOTU0ZjdmNGY0MWY1ZTk1IGxlZ2FjeS10cnVuaworNjM1OTMgMjE4YTEwODY3MjhhYjY4NzcwMDdjNDE0YTQ2OTRlMzJjMmFlZmRjZiBva2tvdG8tc2l6ZW9mCis2MzU5NCA4N2IxNDQxODg5YTUzMzJmMTY5NjhjZmRhOTNhMTYxMzNiNmM0NmJlIG9ra290by1zaXplb2YKKzYzNTk1IGY1YjAyOTAyMGUwMjNmZmRmY2U1YTE2YjZkMWMzNTI4NWE3MTZjNWYgb2trb3RvLXNpemVvZgorNjM1OTYgNjgwYmI5ZGQ1ODA3NDRkMWI3ZjQzZWMyZDFlODk1YjQ5MThhMDhiMCBva2tvdG8tc2l6ZW9mCis2MzU5NyAwZmVjZDM4Njc5M2U2MjBhOGQxMWI1MTk5ZDA2OGNiZjUwMDU3MWQ1IGxlZ2FjeS10cnVuaworNjM1OTggMzM5ZTE3MTgzMTVjZDg2MzRkNzhiNWJjNWZjMTlhZDY1Nzc0MjcwNCBsZWdhY3ktdHJ1bmsKKzYzNTk5IDM3NjdhNWFhOTU2MDI1YjhmOWViMGMwZWIwMzcyMThkODJkMTM2MzkgbGVnYWN5LXRydW5rCis2MzYwMCBjYjFjODlhNDRlZGI2NTM0NDJiY2U5M2ExOWQzNjY1OTgyMTAwNDNjIGxlZ2FjeS10cnVuaworNjM2MDEgNzFmZGJjZDdiYWE5YTZhNzc1MzJhNGVjY2ZiZjY4OTM1YzEwMGFkMiBsZWdhY3ktdHJ1bmsKKzYzNjAyIDI2MGI2MmFhZmNiNDk3YmQ5ODBkYzNjOTUyY2JkOWQyNjIzYzEzYTIgcHkzaworNjM2MDMgOWFjYjMxNGI5MDcyNzhmMDQ2MWJhMGUwY2FlNDVjNTM0Mzg2ODI2ZSBsZWdhY3ktdHJ1bmsKKzYzNjA0IDczYjI0MTI3ZjdiNjNkZjk3NzI4Mzk0OTJkYTU4MmEyMjUxNDczM2YgbGVnYWN5LXRydW5rCis2MzYwNSBjYWYzYWNkZmU1ZTQzOGQ2MGM2ODI3NTI1ZGE1OTE2M2MzMmQ5ZjI0IGxlZ2FjeS10cnVuaworNjM2MDYgYWZlMTQ4YTRhZDI3ZGZjNTE2Yjk1YWY2YWNkODgzNmNjNTk2YTE4ZCBsZWdhY3ktdHJ1bmsKKzYzNjA3IGU1MzRlZTBhNGNkMDQ0MWE3MDFjYzM5MTU2MzViNjA5MzEwNmQ0NTUgbGVnYWN5LXRydW5rCis2MzYwOSA4MDY1OWI5YTRjZDdkM2I2MzFkMTY2ZjI4NDZhZmExMzIxNzc3NzEzIHB5M2sKKzYzNjEwIDE1NDZjMWZiOGY4MjgzNDY2YzhiOTc1Y2MwMjVmODExMjRhMWEzMmYgcHkzaworNjM2MTEgZDEyNTlmZmIxMDNjMjhjZTU1YjkyMTNlN2ZkMjEwYjg4YzZmNWVjYSBsZWdhY3ktdHJ1bmsKKzYzNjE0IGQ1NTkxYzE2Yjk5N2IxYTAzZmUxMmUyMjkwNjkwZWJjMWYzNzIyN2EgbGVnYWN5LXRydW5rCis2MzYxNSA2MGRmOGY2NTg1NzVhY2JkMWYwMjQ4OGQ4NTQ0MWZlZGQ5ZDM3NWJiIG9ra290by1zaXplb2YKKzYzNjE2IDg5NTcwOGIwNTZiN2JkNDIxMGRmNmZlYjE1NDEyYzVhYjQ1YWEyOWUgb2trb3RvLXNpemVvZgorNjM2MTcgOTY3MDI2MjU3OTYxMWYxZjlhNjZiZDNkM2Q2NzY0MGIyOTcwMjYyOCBsZWdhY3ktdHJ1bmsKKzYzNjE4IDAwOTExOWViNGQyZDgwMDE5ZTY4Y2Q1MjU4ZDQxYjc4MDRhNGQ2MWUgbGVnYWN5LXRydW5rCis2MzYxOSBkNjg4ZjNmN2M4ZGZkMmUwZTNjMWU1YjY0MzAxOWNmMGViZjlhNzI3IHRsZWUtYXN0LW9wdGltaXplCis2MzYyMCA3NzBlNGUxMzI3NzVhYTBjNWRhYTU3NTEzNzlkYzdiMjlhYjFhZjdmIHB5M2sKKzYzNjIxIDQ5OTA2ZDQzMmI0N2JhYjAzZTQxMmRlODhjZjY1YTNkZWJiYjVkNzUgcHkzaworNjM2MjIgNTYwYzk3Mzk4YjhlNTM0ZWY2ZDJkMTIwZWI1YzgxZDc2MGY4MDNiMSBweTNrCis2MzYyNCAzOGIxYTAxN2RiZjYwMDcxY2FmZGZjMDQ4NTA0NGVhNDRiYjVlMGRkIHB5M2sKKzYzNjI1IDgxM2UwZjhhNzQxZDU5YmQ1Y2E3YjY1MDU3NjU1ZWI5ZGQ3NDI1MTcgbGVnYWN5LXRydW5rCis2MzYyNiAyNmIzNTllMjM3YjU0ZDlhNmRiODA1MzJlNjQ4MzQ0ZTA4MmE0MWY3IHJlbGVhc2UyNS1tYWludAorNjM2MzAgNDZmMzUxZWU5ZDVlZDQxMzAzNGYyZTlmMzc1MzRmZjQxYTI4MWRjZCBsZWdhY3ktdHJ1bmsKKzYzNjMxIDdmZTNhODY0OGNlMjQyZjViMmQ2Y2JmMTcwM2JlZThjNGViOTQ2N2IgcHkzaworNjM2MzQgNmVkYzgwZDQyMDIxMTQ3YzUyYWJmN2Y5MjU3YmU0MjMxYjJiYjI1MiBsZWdhY3ktdHJ1bmsKKzYzNjM1IDkzODI2YjM1ZmFjY2U2NmJkZmUxYWNlNGEwYjc5ZDFjZWMwMjZlZmYgcHkzaworNjM2MzYgODI3MjU0Mzg0NTNiYTljZTY3YTY2N2NmZDA1ZjFjNDhhMmI1ZTllZSBweTNrCis2MzYzOCAzMTY2MTFmYjEyNjgyZjcwYjRkNTc2MTcwMDQ3ZDhhOThkYTY5ODBkIGxlZ2FjeS10cnVuaworNjM2MzkgNTExOWJjNzdiZDZkZGUzMzI1ODQ2YzkzMWU3MGRiNGIyNjAwMDA1OCBweTNrCis2MzY0MCA0MGExNjMwZWYyY2Y4NDYxYTFkMTZmNGE3OTZjYWJiZGU3OTQyZDIyIHB5M2sKKzYzNjQxIDdkZjRiYTQ4NDA1OGZkY2YxMTE5YTI0YTBhMDE3ZTc1NDUyNjFlNTkgcHkzaworNjM2NDIgMWM1MWFiZWI5MjVmZTY4NDVhYzJiYjRjMTA2ODY2MTY1YjMzMGY4ZiBweTNrCis2MzY0NCBhZTAxODY5ZjYyYmU4YmVmNWU2NjJiZDgyMDJlYmU0Mjk5ZmVhMWRiIGxlZ2FjeS10cnVuaworNjM2NDUgZDdiZjI2NjlmZTY2MDg4YTQ0ZjhmMjJkYjZhZjhmNzhlZmJmMjFkNyBweTNrCis2MzY0NiAwOGNlMTkyZjI0YjA0MjM1MmIzOWNiMDYwNDE3MTE2YzZkYmI0MDI0IHB5M2sKKzYzNjQ3IGY3NjJhOWFiNjlkZDE4YmU5NDAyZjI4MzBkZDM1YTc1YTljOGUzZjcgcHkzaworNjM2NDggYzlkNzE3YjViN2EyNDZjNGEyNmMzNjAzMGYwMjNlOTQwOTkwMDBjMyBweTNrCis2MzY0OSA2NTk1M2FlOTgxMjI3OTNkZjg3MzEyMWI1NjY1Mzg0YzY1NmEzYzlhIGxlZ2FjeS10cnVuaworNjM2NTIgOGMyZjVhYWNjMWJjOTgzYzBjNzQxNDg2NzQxNGQwOTJjZGRmYjhmNSBweTNrCis2MzY1NSA3MGY5YTVkYjI3OWMyMGYyM2UxOGY1MWNiNjA0N2NjYjFiMTQ1YWM1IGxlZ2FjeS10cnVuaworNjM2NTYgZjI4Y2JhYjExYWNkNzRjYjAxNzRmODFiYjc5NmQxOTE2MTMxZDcxYiBweTNrCis2MzY1OCBlMjQyMDI2MWQ0YTMwMGM1NTgxMWNhNmFkNzA2NTlmZjRmYjU0NWM5IG9ra290by1zaXplb2YKKzYzNjU5IDU0MTFiNmEyMjZlNWFiMTk1Mjg3NTcwZWE3YWFkMzk1OWMyZDRkZmMgb2trb3RvLXNpemVvZgorNjM2NjAgMGZkNTUzYWQ1M2Y2NDY0MTQxNmY5NDY0NmVjMGY2NjgwNGY0YTQzMSBsZWdhY3ktdHJ1bmsKKzYzNjYyIGFmYmRlMzYwZGQxYTk1ZGFmZmM2NDhjMGQ2YmUxZTNlMzkyNzc3ODQgcHkzaworNjM2NjMgNmQzZTEzMzBhM2FhODRhZDc0NjUzM2ViYTI0MzJlMzQ4ODk4YmJmNSBweTNrCis2MzY2NSBlNzI1ZmYxODM0MmIxM2ZjYWMwYWY4NmZiN2I3MWE3OTg5NDcwNzEyIGxlZ2FjeS10cnVuaworNjM2NjcgMzQ2YTk5ZGY1ODg5YWJhNGRjOTRkNWJlNDMzZGM5ZThiNWFjNmJkZSBweTNrCis2MzY2OSAwYTQ1NTA4MTQzMjA3ZGQ4MmFkNjI5N2Q2ZGM2YWRkN2U4MDhmZmNjIHRsZWUtYXN0LW9wdGltaXplCis2MzY3MCAwYjk3NDI1OGUxNWI4MzJmNWE2YjA5ZjE2Y2I4YjhmMDcwNjJhZmFkIGxlZ2FjeS10cnVuaworNjM2NzEgYjllYWI3NDliYTY2MDA3NWZiMzM1Yjk5MjFmMWNjM2I4ZGNkYWViZiBweTNrCis2MzY3MiAwNGJkMzY5MGZiMWZlNWEzODE1NjRmNjVmZmQzMTQ3ODZhOGZlYzliIGxlZ2FjeS10cnVuaworNjM2NzMgYWJhZmNjZmU3NTAxYzIzMWNkODZiYjNlNDRiNDExY2I2NjMyMjU2NSBsZWdhY3ktdHJ1bmsKKzYzNjc0IDMyNjRhYWY3Y2YzMDNmMDViYTcyMmZkMjNjZDIyZTJiMTlmNTFiNWUgcHkzaworNjM2NzUgNGZlMTkyZDQ4OTYwMzJmMzU2MDYwMDVjZGRmMWExMWM1M2NkODNkOCBsZWdhY3ktdHJ1bmsKKzYzNjc2IDY1M2QwNGYzMDQyODc3MWQ2YWRhNTRiYmE2NGRkODI5Y2M1MzBhZTYgcHkzaworNjM2NzcgZTkyMzlhZDdiOGMwNzAyN2NkYWI5ZGU1MDM4YjRmZjYwOTg4NmY3NyBsZWdhY3ktdHJ1bmsKKzYzNjc4IDRkOThlYmFlZDI3ODM2Zjc3MmE3Y2MyOWM3YjA3NmM0ZWMxYTZjODcgbGVnYWN5LXRydW5rCis2MzY3OSAxOTRiYmYwNGIwMTU0NDI1YzE1M2VkOTM3M2IyOTRkZTc0ZTY5ZGJmIGxlZ2FjeS10cnVuaworNjM2ODAgMmNjYjM0ZDUzN2RiNjRlNjUwZWMxZTAzYTM4NTY2MjVlNGIyOWNiNCBweTNrCis2MzY4MSA5NmIzNDI2M2U0NDhkNGNiMzdmNWZhYTJlYTIyOTMxNjQyNDdkODBmIHB5M2sKKzYzNjgyIDIzYWI1ODZjNDI3YTM3ZTIxZjYxZGUyNzZmMDMyYTJlMmQ4MjA1ODYgcHkzaworNjM2ODMgODExYTgwNjUxMjMyZThkMDg1NGVmODI2MjhjNjU2ZjBhNzA2MmY1NCBweTNrCis2MzY4NCA4Y2MzYWQ4YmY3YzRlNjdhZDM5NmU3MTA3Mzg1ZWYxZTJhYjc3MTQ3IHB5M2sKKzYzNjg1IGUzZTBjMWE2NTIwNDlmZTlmZWM3NWZmYTc1ZDE3MDNkNWMwY2IzNmMgbGVnYWN5LXRydW5rCis2MzY4NiA3MDhhNTYxMjc5Y2FiNDYxMWMwMGQxYzNmNDk3NDBjMzA3YzlkMDMwIGxlZ2FjeS10cnVuaworNjM2ODcgOWEwZDRkYzA3Yzg5NTRjYWJlNDg3OTNkNjAzYjE5YzVjZjRlNjUzNyBweTNrCis2MzY4OCAzNGU0MWY0ZTk2MmYxNGMxZGE1NWQ0OTRiNTM0NjE2MDk1YjM3NWFkIGxlZ2FjeS10cnVuaworNjM2ODkgNGFiM2U3YWM4YmY0YWEzNjYwNDIwODE3ZGM2NTU0NDJhZDg2NjgyZiBweTNrCis2MzY5MCAxN2I4ZjQ0NWQwNDMxZWQwZmM5MTZkMTgwMjY1YzA3OGRmMmIwYmJmIGxlZ2FjeS10cnVuaworNjM2OTEgNjYyZDE1YWY1MmRmNjY2NTRlYjU0NmVhYzhkYmI4YmZiN2ViNWI4MyBsZWdhY3ktdHJ1bmsKKzYzNjkyIGE5NDZiZjc2NjY1NDQwODY1ZDAyZjhkNDE0ZWQyNTdlNDc2Mjc5OGUgcHkzaworNjM2OTMgY2U5Y2RjZWJhZWYwMjQ3YmI4YmFjOGY2YTFhNjA4YjE1ZTJmMDhkZCBweTNrCis2MzY5NCBhNmQ2MTc3MDg2NjVhZjY3ZGVjOTBhNjkxNTEyNzI4ODEyYWU2OGJjIHB5M2sKKzYzNjk2IDcwMTA0YTNlMWQ5ZDM5OTkzMjQyYzdhZDhiYjVkNjdiM2MwODc5NWQgbGVnYWN5LXRydW5rCis2MzY5NyBiZGExNTg1OWY2NThmMjIxMGZhNThjZTlkYjU5NzE2MTJhYzczNDQ3IHB5M2sKKzYzNjk4IGM1NjA0YmU3YWNkZmUwYTM3NzliMmFmYzUwNGZkOWM4ZTU4NzE2ZTYgbGVnYWN5LXRydW5rCis2MzY5OSBiYTgwMTVlMjM0ODcyMDU0NDNjMmI1NjRiMWI4YzZlNTI2ZTQzZGE2IHB5M2sKKzYzNzAwIGUxZmNjMzg4MWNiNjg3NWI0ZGY3MWMxMzEwZTE2NGMzZGZhZjVhNzEgcHkzaworNjM3MDIgZTAxN2UxZmRlMzY5MmUyOWVhYjAwOWY1ODRhZDQ2ZGE5MDBiNGE1ZSBweTNrCis2MzcwMyAzOTc1ZWMyYjBkZTJhZjI0MjU3NWE5OTM5NDA5ZmNhMzg2ZjZmNjY2IHB5M2sKKzYzNzA0IGZjZDQ1NmFlNTE1YmE4ODE4NmQyMTY5ZjcyODBiZTYxYTJjZDdlMGYgbGVnYWN5LXRydW5rCis2MzcwNSAwMjdjODg3ZTlkYTkyMzY4N2ZhNjdhODQ3OWU0Njg0MjkwYmIxZmIyIHB5M2sKKzYzNzA2IGJjNGRmNTFjMDFkNTI1NTE3MWVkNjJmZTk0Y2I1NDhjMmU4YjE2NDcgcHkzaworNjM3MDcgN2M1YjVmMGViMzBkOTUwYjhmMGU1MTJmOWJlMDVmM2I3N2QwNjI5YiBweTNrCis2MzcwOCBkYmQ5YWQ1MmI0ZDBlOWZjZjEwNzE5YjJiNWM0Y2ZkMzczYTMzNzkyIHB5M2sKKzYzNzA5IDc5YzdlODQ4ZWExN2NjOTFjNTI2NWZjNWVlYmQ2M2ZlMDE0ZDYwZjAgcHkzaworNjM3MTAgNmI5NzNkOTM2YjA3OTcxNjBjYzE2YjVlNDcxNTY4ZjU2ZWU4YWViZiBweTNrCis2MzcxMiBjMmEwYTcwODQ2MmViYTI3YTFiMzUwMzBlZDNmNTQ2MGVlYjc4ODQ1IHB5M2sKKzYzNzEzIDA2MTkzZTNkZjQxNmY1YjI3MmM5ODVkZjU1MzUwM2NlZjE5ZmUzZjcgcHkzaworNjM3MTQgOGZmMGI5MjVlYTY0ODg1OTk1NmQ5OWI2MWFkZmNjNjk2NGE5MGE5ZSBsZWdhY3ktdHJ1bmsKKzYzNzE1IDA1MjVjZDViMjU4MjkwMDY4ZjdmZGNjZGJiZTM0YjdiY2FjYzJjY2YgcHkzaworNjM3MTcgNmYxYTYzMmNiMmU1MzJiODNmOWNiNWI3YWY5NzhmZDJjZTEyYjZjNiBweTNrCis2MzcxOCAzYzcwZDY4YmViMzA5NTdhOTc2OWM3ZjBhM2ZlZmUwYzgwMjkxOGZkIGxlZ2FjeS10cnVuaworNjM3MTkgZjYxYjZjMzEwMDFjYjVmYzYyMGU1MGZhMDMxYjMwMjYyMzA3ZWQyMSBsZWdhY3ktdHJ1bmsKKzYzNzIwIDc4OWUwZjE1YzM3YjZmNjI3YWE1ODU4Y2NiZmMzOWExNWNhNTE0NDMgcHkzaworNjM3MjEgMmY5MzE5MTY5ZmVjOWM2MzBkODMzOGYxOTRiMTUyZTZlNmNmYzY5ZSBsZWdhY3ktdHJ1bmsKKzYzNzIyIDU5N2Q4ZmQ1NjkzZTQzOTYxNzBhNTUyYWRkMzZjMDBjYWFiODI1NGEgcHkzaworNjM3MjQgMjczZThkZTM0NjAzZGNhMjdkZWM0NTUyNmMyMzIyYWYyMDVmYzJjOCBsZWdhY3ktdHJ1bmsKKzYzNzI1IGM0YTQ1OGVjZDJlZDdmMDAyZTFkYzBhZGJjMjIxOWNlYjYyMDc5MjQgbGVnYWN5LXRydW5rCis2MzcyNiBmNmM4OGYxNzJiYmVjNjhjODI1Njk4YzhhZjZmMDE1NGE1ZmUzODkzIGxlZ2FjeS10cnVuaworNjM3MjcgYzkxYjM3ZGJiYTNmMThiZGMzNjA0NzYzMjk4MDA2ZjlmYjMzNzUzNiBweTNrCis2MzcyOCBhOGNjOGU2ZjBjMWE2OTAwYjQ5ZDYxNWVjYzE3MWQ1ZjU2NGMyYjBmIGxlZ2FjeS10cnVuaworNjM3MzEgNjFhNTY5N2E3NjI2NTFmZmVlYmQxYjY0ODAyYjdjMjQwMDc2N2U2YiBweTNrCis2MzczMiAxNDc0ZjI1MTI4YzQ0ZWNhODAzYTNlOTUwYmRkMjYxNzg3YjgxMWE2IGxlZ2FjeS10cnVuaworNjM3MzQgZTFhNGJmOTFiMmFlZGM0MGU0ZDBiYjU0MzBhNTY2YTFhNGM0ZGJlMCBsZWdhY3ktdHJ1bmsKKzYzNzM1IDIzMzc5Njk1YjRkYjI4MGM0N2RjYmU1MzEyNDlkYjY5NDRiYzUwZTIgcHkzaworNjM3MzYgMzQzYWFhYTgwMmU4MTA0MmU1ZWM5ZDU3MTBhNjVlY2ZhOGM5OTNjNCBsZWdhY3ktdHJ1bmsKKzYzNzM3IGRjMjdiM2I0NmYwZGZjMjBjOTVmYTg2NjI0MTMxNjE2MmZmOGUzN2MgcHkzaworNjM3MzggZTQxMDQ1OTdjMmEzZWY3NjJkOTYyMWJiNTk5MjRkNTc1ZWJkNGQ5MCBsZWdhY3ktdHJ1bmsKKzYzNzM5IDUxYzYzYjdlYzFhOGJjZWE4NDNjOTY1YTdkNDNhNmJmZmIxNTVhMzIgcHkzaworNjM3NDIgNTAyZTcyZjI4ZTllYzdkNTUyNDBlNTFkYzNhMjE4NTRlODlhY2IzNSBsZWdhY3ktdHJ1bmsKKzYzNzQzIGY5NGFjYWI3OGFhOTlkN2JlMzUzZGY0MTBiZjYyODg0MjNjNjY3MmEgb2trb3RvLXNpemVvZgorNjM3NDQgM2VhYTcyMzY3MTNmYTE3NjVmZmUzNjJmYWMwZDYwZDk1YTRkYWMzMiBsZWdhY3ktdHJ1bmsKKzYzNzQ1IDRhN2YzNDgwZjQ1NGRiNzY3ZGUyNDI0ZjkwNGM3YjBlNzM5OGY5ZGUgbGVnYWN5LXRydW5rCis2Mzc0NiA0ZDNlOTUzNzNkOWUyNDBmMTVkNjNjYjZiNWE4MzZiNGE0NjlmYTVkIG9ra290by1zaXplb2YKKzYzNzQ3IDQzNGYxZDVhY2ZlNGNlODVlYzNkOGZjM2MyN2UwZGQ0MGQ2M2MyNDggb2trb3RvLXNpemVvZgorNjM3NDggODQ5NDZmNDU1M2YxMzk5ZmY1YTdiZjU4ODAzMmNhNjUyNDRlMzUzMyBva2tvdG8tc2l6ZW9mCis2Mzc0OSA0OTNiMzJjN2QxMjEyMjc3Y2NmOTBkMTM1N2QyZWViMGM0MWY3ZDg3IG9ra290by1zaXplb2YKKzYzNzUzIDRlZTI5ZmZkMjg1Njg2NWE1NGExZTU0ZjJlOGFmMTNlY2QwODE5NmQgcHkzaworNjM3NTQgNzdmOGFlOGZjNzBiNGEwOWI1NWJjOWMzNTc3OGQwMDcwMGY5YmRjNiBsZWdhY3ktdHJ1bmsKKzYzNzU1IDY3ZjRiNzc2N2EwYWIxMWFhZDNhNjY5Njk2NTQxNTc5OWMxMzFiYjcgbGVnYWN5LXRydW5rCis2Mzc1NiBiOTdkZDU4ODkyNDY5OWZiM2I1ZTIxZGI1NDhiY2Q5MzkwZjRmNTE5IHB5M2sKKzYzNzU3IDkzZmU5MTNmYWU1NTQ3YTE5YzIxM2Y2MDJjNzJiZjMzOTc3YTQ3MDIgbGVnYWN5LXRydW5rCis2Mzc1OCAwOTA2NWIwMTBjOTUwOGE3NzljMGMzZjEwYTAxZThkM2NjMWEzZjNjIGxlZ2FjeS10cnVuaworNjM3NjAgN2FlNzllOTZmYzQyZjhmM2VmYTA5YTgwZGM4NmFkMjU1ZDk1YWNmZSBsZWdhY3ktdHJ1bmsKKzYzNzYxIDEyNTI0N2VjZTU2MjUyYTY4MWY1ZDI1YjEyY2IzNjM1YzAzOWI3YmQgb2trb3RvLXNpemVvZgorNjM3NjIgYTFjYjU0MzA5YjRkNGY0MzYwYThkYTJiMTUwOTRkMDU5ZGY5ZWZlOCBweTNrCis2Mzc2MyBkY2Q2YmZiMGRiNDM5YzlkMTY3YTdhYTQyNDJkNmViNWUxODBkMDUxIG9ra290by1zaXplb2YKKzYzNzY0IDIzYjk4ZjdlZjQ1NDc2Nzg3YjEzMjEwZGZhOGU4YjhkZWEwMmM4OWIgb2trb3RvLXNpemVvZgorNjM3NjUgNzlmMzEyN2YxZDcyNzBkZWIwNjEwODRlZDdjZjhkMjg5NWE3YWU0NSBva2tvdG8tc2l6ZW9mCis2Mzc2NiAwNzJiZmJiNjU0ODQ4NWU0M2FiM2ZiMzg5YTgwYzAzOGUwMTM0MTQ2IG9ra290by1zaXplb2YKKzYzNzY3IDE1Njc0NmE2M2E1YzhmMzMyN2M4YmVjYzc4ZmYyNTI1MzdlNDNjZjMgbGVnYWN5LXRydW5rCis2Mzc2OCA3NjUyOTM2ZmFkMzlmOGI3ZTBmNmJlZDMzZWUwMmU0NzNkZmM1M2ExIHB5M2sKKzYzNzc1IDVlMjNiMGZjYzc4ZWU2YTQzZGM3ZTMyN2VmM2RhMzhlOTE4ZWE2Y2EgbGVnYWN5LXRydW5rCis2Mzc3NiAyOWM5NTM2YzA0YWQ0ODc2OWVkOTczNmJhMjc3YTQyNzRiNjA2YmZjIGxlZ2FjeS10cnVuaworNjM3NzcgYjZjYmVjNDk5NzU2MjJkNjk3MjdiYzM5ZTQ1NTFhNzczYzU1YjMzMyBweTNrCis2Mzc3OSBiMTRjNGI1YmFiMDhkMzZmZmI5MjUyOTYwZmFkMzBmMGNkNDUxMTRkIHB5M2sKKzYzNzgxIDAwMTU0NTY3ZDU5MzViMjg0Y2FjMjU3MzJiZTg5ODhlMDM3MzIxN2EgbGVnYWN5LXRydW5rCis2Mzc4MiBlZjUxZmNkYTM0OGJmOTIzZGQ5ODJlYTcyYmIyMzY2N2MwNjAxMjIzIGxlZ2FjeS10cnVuaworNjM3ODMgNjNiNDc0NTU2MWMzNDM2ZWY1ZDcyMDNhYmRkMzZmOWM1OWZmYzg2MyBva2tvdG8tc2l6ZW9mCis2Mzc4NCA5ZTZlNmI4MTdmMzIwMmUzMGRiY2M4ODQ5NWFmYTY2NWZlMzEwNDRiIGxlZ2FjeS10cnVuaworNjM3ODUgZmIyZDliMGI0NDcwMzJhMWY3ZGFmMzgxZjVlZmQ5Mjk5NzllMGQ0YyBva2tvdG8tc2l6ZW9mCis2Mzc4NyBlODFkMDJkMDk2OTc0ZjEzMDVlNTI0MTQyMTM5ODIwOWQ3MDFhODY5IGxlZ2FjeS10cnVuaworNjM3ODggZTJjNWFlMzBjZmZlYWNkNDhhMGVmZDU2MWQzZDIxNjc1MTFlMDY2NyBsZWdhY3ktdHJ1bmsKKzYzNzkxIGM1OTVkYTA1NWZkMDkyMjEyZmFhNmNkNTYzODExZTZjZTM1ZTY3MDIgbGVnYWN5LXRydW5rCis2Mzc5MiBjOTBjZGQ4MzU5NjA2ZTQzNzE3YmEwZDk4MDE4ZjBiMTgzN2RiMzkzIGxlZ2FjeS10cnVuaworNjM3OTMgMzk4Njk4MDNiZmFlZWRkMDYwNDNjZTQ3Mzg0OTU2ZjgwMzk1MDkxYSBweTNrCis2Mzc5NSBhZWEzYzU1NDNkNDNmMmI5ZDUxYzM3ODU2NzgzYmRjZDI5YjRlOTUwIHB5M2sKKzYzNzk2IDM2NmE0MzU1MTFkZDVkNGFjNDA1OTQyMmQwMjQ4ZWQ0OTlhMDhkMzUgcHkzaworNjM3OTggMWQyOWJmYTI3MzY4MWI5NDJhZDg4ZWM4MTJlNWEyZjQ0Y2Y1ODQwNSBweTNrCis2Mzc5OSA5MjJlNWEyNGNjODJlOWVmZGE0ODg2NzgzMjk2NmZlN2VlNzA1OWVhIGxlZ2FjeS10cnVuaworNjM4MDAgMjM5MWRhNmM0MmVmMDhhMTZjNzFjZDZhNmI4ZGMxMmM2NDM2OWQ0NiBsZWdhY3ktdHJ1bmsKKzYzODAxIDI2M2ZkNmZiYWNhYzU4NDVlOTQ2MjQ0MTMxMWRiMWMwMmI4M2JiYjcgcHkzaworNjM4MDIgODgyYWExNDY2NWU0N2YxZmQ4ODA3NzgyZDA2NDQ5MThhNTAzOTU1MiBsZWdhY3ktdHJ1bmsKKzYzODAzIDAxOWQzYjExMGE2ZWVlOWE0YTNkNjY1NjQ5NDU1MjMxZmE5ZjZlMmUgcHkzaworNjM4MDQgY2Y1ZjI3MzFmYzU2MDcxOGMxZjM5MWJiM2I5ZjFiMjNjODViYzIwMyBweTNrCis2MzgwNSAxZTFkZjg5MjA5NWE3MTQxNTQxMDQ1YTQ2YTY2ZTYwYjY1ZGI4YWQ4IGxlZ2FjeS10cnVuaworNjM4MDYgZWEyNzNjOGUzZWFhMzA1NDQwZWRmMWUxMGVkMzYwNGZmYjZiMGM1NyBsZWdhY3ktdHJ1bmsKKzYzODA3IDMzODY1YmI1ODM5NjJmMjUzMDU2OWE3YTQzYmY1ZGE3Mzk3YmEwMDYgbGVnYWN5LXRydW5rCis2MzgwOCBkNjYzOWNkOTU3NWZmMjBhZWVjMjlkMGM4YTBkZGU3NzA2MzVhMThiIGxlZ2FjeS10cnVuaworNjM4MDkgNmNlNDQzNWYxNWFkNGU4ZWRjZjlmMjg3NjVjZjJhMDgwMGRjNGFjNyBweTNrCis2MzgxMCAwZTkxNjkwZGFlMmY2Mzk2Y2FmNDIxOGNlMjQxN2NjNWU5NDQyZDE5IHB5M2sKKzYzODExIGVjYTg4MjczMTE5NGNkYWM0MTUxM2U3NjA5NDM5OWM5ZjA4ZDZhMzcgcHkzaworNjM4MTQgNDdlZjlhODA2Y2U5N2JlNzY5YTQzMTE1NDI1ZTg0ODdiMTA2OTc2NiBsZWdhY3ktdHJ1bmsKKzYzODE1IDBkYTI3ZmRmMDE5MjA1NzQ4ZmM2NjgwN2M3ZTZiMGViOTUyMDgwMmIgcHkzaworNjM4MTYgYzQxYzM5NTQ1OGViMDI4YzFmODQ0OTcyYjA4Zjg0MTQ5YTg3MDkyNCBweTNrCis2MzgxNyBiYmEyOWY0NjJiY2M2OTA0OTczYmRlZDE3YzgwZWNmOGQ0YWRkYjNjIGxlZ2FjeS10cnVuaworNjM4MTggMTA1YWQ2MTMyNWFjMWMyMmEwYzUwODgxNDI5NjNkYjk4Mjg3YWY5YiBsZWdhY3ktdHJ1bmsKKzYzODE5IDIxNTEwY2MwYzJlNDJiN2JmMGI1NzdmMGMyOGYzZDVjY2FlZmNhZjkgbGVnYWN5LXRydW5rCis2MzgyMyAwYjI3Y2UzYzZiMjFjOWNhZjc4Zjc0NjU0ZTFkNzFiODVhOTU3ZTBkIGxlZ2FjeS10cnVuaworNjM4MjQgM2RjZDcwMDA0Njk2ZmRmODczMzA0MTE5MDVkOGMwYjFiMGI2OTBlMiBsZWdhY3ktdHJ1bmsKKzYzODI1IGEyZTcyZWNkYmUwMmJlODdlMDg4N2Y0NzA3OTM0ZTk4ZDkzYmMwNzkgcHkzaworNjM4MjYgYzA0YWE0YWFiZTE3ZWJkOTVjOGM4ZGUzNzEyMjZlZmE1YjE5MTQyOSBweTNrCis2MzgyNyAyZTg3NjlkNWE3ODZiOTU0NGMyZmI5NDg2ZDJkMGJkMWVhOWI1ZjIxIGxlZ2FjeS10cnVuaworNjM4MjggZmY2Y2M5ZDRmZmQzNWFlNTFhYzFmOTZhMDNkNDNhNmRmMWE1NjAzMiBsZWdhY3ktdHJ1bmsKKzYzODI5IDAzYWZlNjk4NWU1ZGY3ODAyMDZiMTkwNTg4YzY0NDQ2ZTRlMjA5MGMgbGVnYWN5LXRydW5rCis2MzgyOSA4MmE0N2Q3OGQyNzhiOTc2MzViNTEzZWJiODlhOGFmNTFmYmVhMzQ4IHB5M2sKKzYzODMwIGFmMzY4NWZhOWNhOTE0ODI1NjUyYTRlNWJkZmQ2OGRhYjc1NzdkODUgbGVnYWN5LXRydW5rCis2MzgzMSA1MWE4NjUzMTI4ZTNhZDVmMzlkNTY2M2VhZGQxNTY5YTJiZjNkNTk0IGxlZ2FjeS10cnVuaworNjM4MzcgYmVlMjcxZTc2YTNlNTMxMWI3MTJhZThkMTdkMjJjZWRmZTNlMjJhMSBiZW5qYW1pbnAtdGVzdGluZworNjM4MzggMDc1YzZiZDIwZjA3ODA0ZGI2ZmY5ZmU4ZTNjYTQyZDg0Zjk0ODYzZiByZWxlYXNlMjUtbWFpbnQKKzYzODM5IDAxNTZjMzM2ZTZiM2Q1MWVhYmY2YmE1NTI2NjNmY2U3NTlkZDU1NDcgbGVnYWN5LXRydW5rCis2Mzg0MyAxYmRmMDc0MDk0MDNiNGI1NTc4Mjg3MWU2ZGExYWFhZTZkMzYyYjYyIHB5M2sKKzYzODQ0IDJmNWVkZTAwZmE5ZWUxN2FhZjQ0Y2ExMWQ0ZjE1NDJmMTgxYmQzMTIgcHkzaworNjM4NDUgYzRlMmVmMDlhMmYwNGIyOTc0MTRjOGE2Y2YzNDIxNmNmNjAyMzZjZCBweTNrCis2Mzg0NiAxMDYyYjdkZWM5NWI3YTY3YTBlZGM5ODlmYjFkOTY0ZWMyNjFjNmUxIGxlZ2FjeS10cnVuaworNjM4NDcgZDIzNjJmOTlhNDAzNjhjODk3YjUzMzQyNmQyMDJjOWI4ODgwYzBlMCBweTNrCis2Mzg0OCA2MjJjYWJiYWYyYmNlOTk3ZjU5YmRjYWYxYWUzMmVkYjhkYzAxOWMxIGxlZ2FjeS10cnVuaworNjM4NDkgMmE2M2FiMzU5NWExOWUyOTMxZDNiNGQ5YjgyMTQ1ZGZiMGVhOGYzMSBsZWdhY3ktdHJ1bmsKKzYzODUwIGVjZjJlZDA5NTg4MTU1N2U2YjI4YTc5NGIwOWUwM2Q1NDM3ZGYxNzkgcHkzaworNjM4NTEgYjEzMDQ0ZDU1NGFmZGIzMTIwODFkZTFjNDg4YTBjOWUzMjQ4MDhkYiBweTNrCis2Mzg1MyA4M2ExMDAwMmZlZGJkYTg0OTQxNjAzMjk0OGQzYjU1YTYwODc1MTU5IHRsZWUtYXN0LW9wdGltaXplCis2Mzg1NCA2NTMwMjY0MTQzNzZjODNhNmNkOGU4MzY4ZDEwNTU3OTEyZTA0NTI0IHRsZWUtYXN0LW9wdGltaXplCis2Mzg1NiA4OGJkMDdjMGE4NDdkMDM0MTE3NGUyNWU4ZTY4NDZhMGJmMjRhNzM2IGxlZ2FjeS10cnVuaworNjM4NTcgYmVhM2MxZjUyZTA1Yjg4NzRlYjAyMDExM2IzN2RjYTlhODc3YzJiOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTggZTg3OTdlNmUwN2E3NDA1ZWM1MDUzODU4NjQwZjFjZmUzZWRkOGViMiBsZWdhY3ktdHJ1bmsKKzYzODU5IGE2NWYwOTViMjdmM2NjNDA4NTZjNTE3NmE1NDE1YmJmOTBiYmU2MTIgbGVnYWN5LXRydW5rCis2Mzg2MCAzNzAyNzI5YTI0NzA3M2EwNTI4ODA4NWI1NDY5ZDk5MzQ1NTMwZjQ0IGxlZ2FjeS10cnVuaworNjM4NjEgZmNmOWQ5NWVmNTBkNzhiMzMxZjRjODYzYTE0MTIyM2JmZGFlN2MyMiBsZWdhY3ktdHJ1bmsKKzYzODYyIGNmYjU0OTEwMDFkMDJhZTRiODE1ZjNhNGFiZDM3OWZmNTJlYTNjZWUgcHkzaworNjM4NjMgZTdmMGZkODM1OGY1YWVmNzQxNzk4M2RhYjMwNWZkMWNhOWNiYzRlYiBsZWdhY3ktdHJ1bmsKKzYzODY0IDRkZWRlZjRjMGRmZDI5MDkyNTkwNTEzMmQ2NjZjMGNiNTE1ZDQxNzMgcHkzaworNjM4NjUgYzBmZTU0YTAyOGUzNjU5MjAxM2FmZmNlODRkNWZkZWI1M2Q1YTU1NyBsZWdhY3ktdHJ1bmsKKzYzODY2IDMxNDc2ZGI5OWFjMzFmZjJhODQyYzhkMDVhOTg5ZmRlZGM3NmFkNDcgcHkzaworNjM4NjcgMDZkNzg1NmNhOWY0NmE4ZmViOTRhMmNhMTE5NzJjMjM4NDRiZDIyMyBweTNrCis2Mzg2OSA4MjNiZTRhMjc1ZTJiOTllMTJlMTgyY2ZhYWIyZDk0ODkyNjYxZWQzIHB5M2sKKzYzODcxIGMwZDYxNmYwYWQ4NjM5ZDJjNjA5Zjg4OGY3YzZmZjA5Y2JjMzVlMGYgbGVnYWN5LXRydW5rCis2Mzg3MiAzMWQyZmY4Njk2YmRjOGVjMjBjOTM3ZjQyMmUxOGU4YzlmZmQwNjRiIHB5M2sKKzYzODczIDBiZjA4ZGUzMzlhMGQyMTAzYWYyMTQ5YjBhMzQ2MTdjMjg5NmFmYWMgbGVnYWN5LXRydW5rCis2Mzg3NCBmMTUwMTc3ZmYxZmY3OTRkMjlkZDNjYzQ2NDExMDJlYTVkNmQ5NDViIHB5M2sKKzYzODc2IGViYmY4OTUwNTZlYThhY2YxMWU1N2M3OGM5NTZhNzQ1MDBkMzY5MDEgcHkzaworNjM4NzkgYjZkZDQ5ZWUwMzViNWQzZDZhOGY4YzA0MGM4MTRlMGFiZDVjNWYxZCBsZWdhY3ktdHJ1bmsKKzYzODgxIDY0MDQ0NDZlNWFhMzZiMjEwYjc4ZmFiNDlmODVmN2NlNmIyMjI5MjQgcmVsZWFzZTI1LW1haW50Cis2Mzg4MiA3ZWFhYWQwOWI2Y2RkNGI3ZDk4NmJmYjllZjI1OGQ3NjVhZWY2OTIzIGxlZ2FjeS10cnVuaworNjM4ODMgN2Q2NjExMDQ2NDA0OWIxMDJhMGVlOWY5NjMzZTRiYTgwOTQyNDgyNiByZWxlYXNlMjUtbWFpbnQKKzYzODg3IDEwMGUzMjUwOWI1Nzc2NTM2Y2E2ZGNhYmZiMjI2NGQwNDQyMWNmNTcgbGVnYWN5LXRydW5rCis2Mzg4OCAwNTgwNTMxYzM3NTU1YWRlODMxZWY3MTI2YTg3NGUwYWE3MDIyYmM5IGxlZ2FjeS10cnVuaworNjM4ODkgNWJjN2RhNjUwM2IwNWViNzc2ZTE2MTRhMzlkNjJiOThkOTYxYzE5YSBweTNrCis2Mzg5MCA3OTM3M2UwNzBkNDg2MDA5ZWZhZDkyZDExODVjNmNlNDVhYTY5MWFkIHB5M2sKKzYzODkxIGJiMmM0YmRjM2M2ODNiNDhmYTllOTViZDgyODNmZDk0MDQ4YzI0YmQgcHkzaworNjM4OTIgMWYyZjE1NzdhZTc4MTljZGIwNGY0MTFiOTNhZjI2YmY1OGFiNWU1OCBweTNrCis2Mzg5MyBiNmI1MzRiODI4YjMzOWJiZDZlZjdiYTAyMjVmYzhlYmI5MTEyYzAzIHB5M2sKKzYzODk0IDY1YTYwNjA4YWI1YTU5YjAyODQ5M2NmNzU4ODRlMTk1ZTQ1YWI5ZTAgdGxlZS1hc3Qtb3B0aW1pemUKKzYzODk1IGY5ZWJhY2FjZTM1ZDNjYjU3YzY5ZWFmYzVlMDQ3Y2VhMWI5YWQ5OWYgcHkzaworNjM4OTYgZTBjYTAyMThmZjMzYzAyNGI1MWMyMTRiNTAxNmUyYzljOTQwMjk2MCBweTNrCis2Mzg5NyA0NDQwMjQ3YjhhNDQ4MWRmZTZlNGYzZjAwNTEwNDQ4ZjNmMWQwZTQ5IGxlZ2FjeS10cnVuaworNjM4OTggNzcwODhkNDFjNzkwMWZjZDBhMDFiNDQyNTk1YTZmMWRjYTExN2ZhOCBsZWdhY3ktdHJ1bmsKKzYzODk5IGVkNDcxYTgwMDlhNjMxOTFmNGRjYTliMzU3ZDgxYmRkMzQzYzg2MTkgbGVnYWN5LXRydW5rCis2MzkxMCA0N2ZmMjRiYzYxMTY1ZDJmMzI2NzgxOTQzMmIxNTkwNDY5MTk4YjZjIGxlZ2FjeS10cnVuaworNjM5MTEgYzIzZTZkNTMwMGEwYTI0YzRhNTExMWEyNDU0ODg4YWE1MTMxMmE4NCBweTNrCis2MzkxMiAzOTk5MTllNjFkMjM4YzIyMjBjM2NmZjhmMDAzMzFlMmMxMzBkNjNjIHRsZWUtYXN0LW9wdGltaXplCis2MzkxMyBmNzNlNmY2ZDliYTY5N2NhOTI3ZTNkY2IzNDlkYjhmYjI4ODBhNzM3IHRsZWUtYXN0LW9wdGltaXplCis2MzkxNCA1MzUzYjU1MGM5NjkyY2U4ODdkMjYwYWRhOWQwMDQ1NWM5Y2Q1YmRjIGxlZ2FjeS10cnVuaworNjM5MTUgYTc2ZTQ5YjIxOWEyY2EyYzc1NGU1NTQ3NTk2NjI5NWUxZGU2NjY0OCBweTNrCis2MzkxNiA4NmVkOTc5ZGU4OTg3ZmIwZGMzMThkMmUwOTdlZTQ2OTEwNGNhM2NlIHJlbGVhc2UyNS1tYWludAorNjM5MTcgMzI1OGJiZmM0NTZlNjc0YzFhNDg4NGEwNDA4ZGNkNzlhNzA1MmY4MSBweTNrCis2MzkxOCBlNGExODY0Mzc0NDA0MmI2MzE1ODNjZWU4ODZhMTgyZjRjYTc3MTg1IHB5M2sKKzYzOTI5IGVmMGNjY2RlOGMyNDVjYjU1NmY0MjFmMzIwZjlhNjhjYmJiZjQyYzcgbGVnYWN5LXRydW5rCis2MzkzMCA1NzJkODFlY2YwMGQ2MGUzZDZmZDllNWQyOGY0YTFkZmY5MDE3NGIwIG9ra290by1zaXplb2YKKzYzOTMxIGY4MjExNjYwMGMwZjE4MWJjYjUzOWZiODU2NDY5NDZlODkwMzZkN2Igb2trb3RvLXNpemVvZgorNjM5MzIgMmExYzY5NzhkYzU3NjEwZTA1Zjc2YjlmNTFmNDcyNWY1ZDJjMTQwZCBsZWdhY3ktdHJ1bmsKKzYzOTMzIDIxYmViMGQ1ZTMyOTk1MjRiMWE0OWYyZDk2ODc1NzNhOTZiZWY5YTMgcHkzaworNjM5MzQgZDU3YWE3NTJhNDAxMTgyNzdmNjBhMWQzOTY1MjdhOWIyMTg4MmUyMCBweTNrCis2MzkzNSBkMGY3ODNiYTc2NjlhMzBjMTFiYWUxZjEzNWFhODBhYmJlY2UzMGQ4IHB5M2sKKzYzOTM2IGE2NTYxOWFkNTlmMjg3MzhiYzVmYzY5ODcxNDBhMTRhMGE3NzFlZDQgcHkzaworNjM5MzcgOGZjYzllYzE4ODI0NjNhYmZlMTlhYzkxYmRlYmJiOTQwZGM4NTViMSBweTNrCis2Mzk0MCA1OGY0YjYwNzczZmU2MDdjYmVjOGNmYjc1NWJlNDg0Yzc1MzJhZDQxIHB5M2sKKzYzOTQyIDhhZDRlYmRiZDM3M2FhNzM5MzQyODJjNTIwMzllNDZkYjExMDYzNTIgbGVnYWN5LXRydW5rCis2Mzk0MyAxMGZiMmRlYzM2NjViNGI1ODczMzYxYzRlZWM1MGMyMTBmMTUxZjU0IGxlZ2FjeS10cnVuaworNjM5NDUgYjBkNDc5OWIwZGI4NDRlN2Q3MWE0OGQ2NTUzZThlOTQzZjQ3MDlkYyBsZWdhY3ktdHJ1bmsKKzYzOTQ3IDg0ODBmNTRmY2Q2ZGY0YzMyNGEyZmQ0ZWIxZWIwNDIyMTkxZWRiZTEgcHkzaworNjM5NDggNzFiZWQyMDhmZTUwNDI0MmRmNzM5ODM0YTVmYzc0M2I3N2RhNTY2NiBsZWdhY3ktdHJ1bmsKKzYzOTUwIGU5NWMxNWJiOTk1MDJiN2MxNzg0ZThmNmIyNWJiYmYwYTIzODBkYWYgcHkzaworNjM5NTUgYzM0ZTM0MDU3NzE0YTAxMWFiOTc4Nzc2MDc4YjdmNmExZmY1ODg2ZiBsZWdhY3ktdHJ1bmsKKzYzOTU2IDQ1NGM3YjBiNjhhODdiYzk3ODFiMzFhNTlhMDc0ZGNhMjhlZTVlMmEgdGxlZS1hc3Qtb3B0aW1pemUKKzYzOTU3IGYwNGIwNTllNmM5ODIxMTU1ZmRjNjc1ODkzODQ0NDhhOWVhNThmMmIgdGxlZS1hc3Qtb3B0aW1pemUKKzYzOTYxIDczNTI1NDNjYmEwM2M0MzFlYTdkMTY1MmRiMGJiMDI1MmUzMDNlMGYgbGVnYWN5LXRydW5rCis2Mzk2MiBiYmNlMThkMDBkODc1MjVhY2FmN2I3NDIzYTEwNThkYTgwMDIyMDIyIGxlZ2FjeS10cnVuaworNjM5NjMgMWQwYThjYWMxNWVmMDRlNzU2YzZlN2ZiMjQ4ZDMzM2Q5MjM4NjA5YyBsZWdhY3ktdHJ1bmsKKzYzOTY0IDhlMGJjMWZjMDk1ZTUwZmM0NjcyZjk0Njc2ZTIyYTI4OWUwODUwYzQgcHkzaworNjM5NjUgYWQxM2NiOWU5NGYxYjc0ZjlkYTA0NDdmYmM2ZmZmN2U4OTQ3OTZmYyBsZWdhY3ktdHJ1bmsKKzYzOTY2IGZkNmYzMDZjMDRlMDBhZjJhODNjNGExMjgyYjdhZDE5ZDg1M2ZmYzkgcHkzaworNjM5NjcgMmE0OTZmMWViOWYxNjRmODU4YzI2YmRjNTc3M2NiNWRkYjQ4NTI0MyBsZWdhY3ktdHJ1bmsKKzYzOTY4IDBkN2NjYjUwMDA3Y2UyYzIwZjgzN2E0ZGFiOTAyMjc2NzI1NmMwN2YgcHkzaworNjM5NzAgYjU1MzA5ZWY1NGM3NzM4N2ZlM2RmN2Y5ZmM1MmZkNWI2MDE2Y2FhOCBsZWdhY3ktdHJ1bmsKKzYzOTcxIDk0NWRhMTcyNmNmMWEwOGRmMmFlNGVmODQxNmRlYmZmOTM5MmNjYjMgbGVnYWN5LXRydW5rCis2Mzk3MiA5ZTI3MWNiMjVlNTlmODlmMjk2ZmQ3MTIyY2M3YjQxMzljZGFhMmEyIGxlZ2FjeS10cnVuaworNjM5NzMgZjc0NTNiMGIzMzllMDVlNjcwYjU3YTNlMTQ3NjlhNjEwNWU5NmEwMyBweTNrCis2Mzk3NSBiMzgyYmViN2JlMzZmMjUyNmVhNGY3MjRlNDA4ZmQ3ZWIwNmEzNGQ5IGxlZ2FjeS10cnVuaworNjM5NzYgNzg4MGE0Mjc3MTU4MmJjZTVmNzUxMWU2NmY0ODU2Y2NhZmNlNjQzMCBsZWdhY3ktdHJ1bmsKKzYzOTc3IDRmNWU2YWFmNWE2YTgwYTY1MzkwOTU1ZWJlNGRiYjg5ZjExODI2ZGIgbGVnYWN5LXRydW5rCis2Mzk3OCA3YTFkNGU4MjMzZjg5MDMxMjgzODRjNTcxMjc0NjU5NGQ3ZDk2NmM1IHB5M2sKKzYzOTc5IDMyNTVmMWYxNjBhZGVkYzEwNDFlOWViYWU0ZGY0MzUwNDg0OTYyMmQgcHkzaworNjM5ODAgMTMwY2U4NmQ2MWI2NzkyZTgyYTEwZTMyZmE0N2RkZmU4NmFiMjRjNiBweTNrCis2Mzk4MSBlYmJmMDExNTUwY2Q2YTk0NGY5MDNjODdhOTJjMGUzNjkyY2NlMTdiIHB5M2sKKzYzOTgyIGFmNjgwZmQzZmZkYzc2MzQ4ODFjYTFlYzEzNDg5ODU1MzBlNzNhMmUgbGVnYWN5LXRydW5rCis2Mzk4MyA5ZWExMDRmMWU1Y2QyNjNjNTYxMGJkMjljMjdjODQ5OWNmM2Y1Y2M3IHB5M2sKKzYzOTg1IGNhYTkwY2Y2YmU5YTNkNTdkNDlmOWY3NDE1ZDFhZGE5Y2RiZGQ1N2EgcHkzaworNjM5ODYgMjI4NGZhODlhYjA4ZDU1NzcxMGY0NzE1MDg1ZjgxMjU1MDcyZjU5MCBweTNrCis2Mzk4OCAyMjEwZjQyZTdjODk4YjNkYTIzMDBlNGNiOTY2MDVhODUwOTRkODZkIGxlZ2FjeS10cnVuaworNjM5ODkgMjQ5NTRlYjgwYjliNjE3YjM0MjViNjIzYmU1NTUyY2EwYTIyOTQ3MCBsZWdhY3ktdHJ1bmsKKzYzOTkxIGYwODg1MDhmNmQ5OWRhZWYyZWMyNzFiYTA3YzdjZTQyYWIzMDhjNmEgbGVnYWN5LXRydW5rCis2Mzk5NCBhMDE5M2IwOGYwZWI4Zjc1NmZiYWU3N2Q2YzFkODk3N2E3NTJlNDEzIHB5M2sKKzYzOTk3IGM5YTVmMmViNzIwY2M1NWI1NDk0YTJkMGJiOTJkMDBjZGM5Nzg3MDAgbGVnYWN5LXRydW5rCis2Mzk5OCBjODk0MzRjYjkxNGQ4Y2M5NzQxMDA0N2VjZTBhOTJmZmYzOWVlOTVlIGxlZ2FjeS10cnVuaworNjQwMDIgM2FlYmFjN2YyNzI1MmU0NDM3NzBlZGQ3MzRmNWYzOGEzMDFmZGUwMyBsZWdhY3ktdHJ1bmsKKzY0MDAzIGJmMTQzYmViMDhlOGU2MjFhNTJkMWFkYzlhYjliZGM4ODg5NTQ2OGIgbGVnYWN5LXRydW5rCis2NDAxMiA5ZmRhMDkwYzA0NWY2ZTMxNDRhMjNkMzNhMWNhY2JhM2NlOGQyZGM2IGxlZ2FjeS10cnVuaworNjQwMTQgZWJmNmY2MzllMTE3ODVkYjQ1ZmFiMGNmOWQ3OWViNTcyMmUzM2JlZCBsZWdhY3ktdHJ1bmsKKzY0MDE1IDliZWNlNTdjZGNlMzFiODA5MTJkY2Y2NGU1OTZkZTcyYzhhZTlhOWQgbGVnYWN5LXRydW5rCis2NDAxNiBiMzJkN2I4MzI5OGE5OGU0MGIzMTc3MmZkMGIxNDc1NGVmMzY2NTk4IGxlZ2FjeS10cnVuaworNjQwMTggNzIwMWMwMTkzYWRlZDgzYmRmYzdjZjY4M2Q2MjU4M2U1NWYzYmMzMiBsZWdhY3ktdHJ1bmsKKzY0MDE5IDQwZjJkNWE0ZmFkY2MzM2JlMjA5MDIyYjA4MWI0MGEwOGIyMjk3ZGEgbGVnYWN5LXRydW5rCis2NDAyMCA2Nzc1NjRhMjcwN2FhYzcxYmI0MjFhZGJmMjBlOTkyMTc0NzNkMDZmIHB5M2sKKzY0MDIxIDVmNjVjODMzZGM4NzA2YTJkNWRkYWVhZWU2ZGFiZTM1Njk4ZWVhMDEgbGVnYWN5LXRydW5rCis2NDAyMiA0ZjcwYTlkZTI4NjUxOTYwN2UyY2MxNWYwZjQ0ZmIyYjNjMGVkYWY4IGxlZ2FjeS10cnVuaworNjQwMjMgN2QzNjEzZGMzZjFjY2RlNTBjZmE2NmViODM4MTM0ZGQ5MDg0ZWY0OCBweTNrCis2NDAyOCA3OGQzZDM1OTU1NWVhNWJhZjU3MzFjOTlkODkxZjBjYmU5NmJjMTlmIGxlZ2FjeS10cnVuaworNjQwMzEgZjNkZjUxYjYwZGMyNjIzYjU1NjU2YmNjZGY2MWU5ZDhmODc1ZGZjNSBsZWdhY3ktdHJ1bmsKKzY0MDMyIDIyY2ZjZWIzMzM4ZTY4YWY4NDkyMTJkMTg5ODcxN2IzOTZkMDE3YjYgcHkzaworNjQwMzMgYTdiMTYyMjI3NGIzNzUyZGYwZDZiYWQ0YjZjMDkxOWMxMGRkNjlmNCBweTNrCis2NDAzNCA1ZDI3NDJlMzY4ODZmMDFkZTAzMmE1ZTM1MjUzNTQ2ZmE1ZmNmMzBiIHRsZWUtYXN0LW9wdGltaXplCis2NDAzNSAxZmZlNmFiODRhMWI4ZWRjMjQ4OTM5ZmM2ZDExZGNiOGZmNmUzYzQzIHRsZWUtYXN0LW9wdGltaXplCis2NDAzNiAxYzAzMDkwYjJhMGEyZmJlNjE0YzhlMzQyYTY4ZGRhZjU5ZDg5ZjA5IGxlZ2FjeS10cnVuaworNjQwMzcgMjRkZjM0MzRjY2Y3YmMyODQ1ZWU3ZDJjNmNlMzI1M2RlMTE1OWFjYSBsZWdhY3ktdHJ1bmsKKzY0MDM4IGM4ZTI5NTllOGIwZjE5MmE0YjMyMThiZmY5YTYzMWI2YjdkODRiYTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDQwIDMxYWVlNjcwMTlhMmFkNGI1OGMwOWIyODMwNjQzNmJkYjUzMzMxYmUgbGVnYWN5LXRydW5rCis2NDA0MSAwMjY1MTNiZTM4ZGFhNzdiZDBjODgyNGY5OTk3YTU5MThkMjE3M2NhIHB5M2sKKzY0MDQ0IGQ1NjQ1MGRiNjBhMjNmMzQzNGQ2YmQwMjA3NGUxYmYzNWJjNzA2NGEgbGVnYWN5LXRydW5rCis2NDA0NSA1MzI1M2YzNjAxNGUwMDFmMWNmMTNjYWMxOWVhYjdkYTViYzAyZTIyIGxlZ2FjeS10cnVuaworNjQwNDYgOTRlMzYzMGRhY2E3MzBmYzg1ZjQ4ZjU3MTQzNjllYzRkZDI3ZGJkOCBweTNrCis2NDA0NyAyNDZhODAyNjM3YWRmN2VkOGM2MGIzMDc5YWFlZmM2NzkyYjk3ZjRiIGxlZ2FjeS10cnVuaworNjQwNDggNTIyOTRhZjRiNjYzY2FkYThlMWZkOTg4NzllZGM0OTE5OTU0NmM3NCBsZWdhY3ktdHJ1bmsKKzY0MDQ5IDdhY2I3ZTdhNWYyODA5MDUwNGQ5NjAwYjJhZWRlZWI2MGY0YjU4OTUgcHkzaworNjQwNTAgNjQyOGM0ZjFhZTA5N2E0MjVjMWJjZTRlZmMzMmVlOTMyZDMwNzAwZSBsZWdhY3ktdHJ1bmsKKzY0MDUxIGQ0Y2Q3MjIzYWYzYmYyOWMzY2E3Y2Q1Yzc2OWE3MzE5ZDQxZjFlZmEgbGVnYWN5LXRydW5rCis2NDA1MiA3NzFmN2E4MDQ4NzRmZDdkYTBiM2ZjZWY4OTVjMmYwMjUzMmFiMTNmIGxlZ2FjeS10cnVuaworNjQwNTMgMDIwNTkyNjhjODI1ZmEzNjBmMTIzNWEyMTg2Njk5Mzk4YWQxMDdjYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNTQgNmNmYTI5N2M2NTU1MGM5YzJmNDIyNjMwNTgzYzJjZDdjOWQ5NTg3MyBsZWdhY3ktdHJ1bmsKKzY0MDU1IDEwNTc3ZTI1Zjc4ZjZjMmEwNWEzMjM0YzI2M2I3ZmFhZDc4NDljNTIgbGVnYWN5LXRydW5rCis2NDA1NiAyZDVmMWQ5NTZlZjZiY2Y0MmNiN2VhNTc1MGFkZjk3ZDkxODdiNjBlIHRsZWUtYXN0LW9wdGltaXplCis2NDA1NyBkZjliMzM3YmEzMTEyNDg5ZDI1ZjNmYWQ5MjJiN2I0MDVkYWIxYmVlIGxlZ2FjeS10cnVuaworNjQwNTggMzkzOWZmODk4MzRjZjYwYzNmMmU1MDMyOGQ2ZTAzNzA4MDQ2YWZiYiBsZWdhY3ktdHJ1bmsKKzY0MDU5IDMzNDkyYzI0MWRhYjVjYTgxMmM5MGZmNGJjZTZjNWM3ZDVkNWM3YTMgcHkzaworNjQwNjAgMTM5ZWNkYmY0ZjE5NmEyZTczYmU2MGUzYThkNzljMmIzYWM2NTZkZSBweTNrCis2NDA2MSBjMWFlYjZjOTRhZjEwZmI3YTgxMTkyNDg1YzQwZDhiYjAxYjMyODc5IHB5M2sKKzY0MDYyIDUzYzYwYzdjY2NkOTgzNGJhOTFjNzRjYjQ4MjY0OWJjZDQ0NGViZGEgbGVnYWN5LXRydW5rCis2NDA2MyA0OTJmOGUxMzA1Y2Y2MmUwNjEyZGNkNTMyNTliNmM1NTg5ODFkMmIwIGxlZ2FjeS10cnVuaworNjQwNjQgZWQ1NzJkMjYwZmE3MTcyYjMxNjQ5MTdiMDEzZTY5NjgwZDYyNzVhMCBsZWdhY3ktdHJ1bmsKKzY0MDY1IDg5NTg3ZWExOGVkN2UxODc0ZjExYmEzMzI5Y2VlYjY1N2JiMjM1YjQgbGVnYWN5LXRydW5rCis2NDA2NiAyOTZhYjEwMzhiN2Y3ODgwMmViOTc0MTE5ZDhjNTI4NjZjYjc0N2ExIGxlZ2FjeS10cnVuaworNjQwNjcgZjQ5ODk1MTZiNGQ2YTI4NjcxNGYwZDZkMmZjYzA4ZWNhNDUzMjc0NSBsZWdhY3ktdHJ1bmsKKzY0MDY4IGRjOWY0ZDZjZDNmMTcyNjgzZWUxOTFjMjg5Mzc0Y2M0YzU1YmQwOTAgbGVnYWN5LXRydW5rCis2NDA2OSBjZDVkMjVkZDYxMzExMmY3YmM5NWMyZGFhY2QyZTQwODBkOTZjNmQwIGxlZ2FjeS10cnVuaworNjQwNzAgODEzYjg3YjE2ZGM1MDkwMmYzNzhiOGQxN2M2YmQ1Y2U0YzU2OWNiYiBsZWdhY3ktdHJ1bmsKKzY0MDcxIGMwMDU3NmUyMDJkYWRjZmRmMTNhNDQ5ZGQzMzk0MjdlNjk1YWE2MzcgbGVnYWN5LXRydW5rCis2NDA3MiA3NTIxMmI0MDhkN2JhYmEyYzJjMmYxZGRjNDU1ZTljNGExZWFkMmZjIHRsZWUtYXN0LW9wdGltaXplCis2NDA3MyBkNWNjM2M1Y2MxODhlYzMyOWU1MTMwYzNhMjRiNWIzNDliMWRjMzNlIHB5M2sKKzY0MDc0IGRmYzM4ZTVhZjEyZDI2NTIwNWY2YmZjZWQ5YWM1ZGExYmQwMmJkYmYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDc1IDQwODRhODRlNGQzYjc0MDAzYWQ4YmU5NjM2ODI1NjgxMDJkYWZhYjEgcHkzaworNjQwNzYgZWU3M2E2YjI3YzNhYTRhNmJmMzVlMWE5YmZiMGU4MGFjNDMxZTMzYSBweTNrCis2NDA3NyAwMzY3YTkzNzg4ZGJhYTEyZmNmY2M5YjgxOTNjMWRlZDE4NjdlZDk5IHB5M2sKKzY0MDc4IDkzMGQ5MzA4YjMyYWE1NjVjOGZjY2YxOTY1MGZiNDNiZjMzNWE5NzkgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDc5IDA5ZWI4ZDYyNjI2YTAyNjM0OTllY2MzNmM3ZjFlMTNjNjJhYThhZDMgcHkzaworNjQwODAgYmJlMjA3N2E0MDFiYzQ5YjM2ODIzMWI4MjA2NjRlMzljN2MzMjE3NyBsZWdhY3ktdHJ1bmsKKzY0MDgxIDdkODI0ZmQxMzFhZDk5MzM5YmFlZTU5NzMzZjI4MjFlNjhlNmQ2NjggcHkzaworNjQwODIgMjZhNzI4M2Y3ZjE3OWM0ZjE0N2I1NzNkYzM0MjQ3ZjFiMjg4ZmM3NyBweTNrCis2NDA4MyA5ODgyN2EyMWUzNTI5ZWI0NTc2YmI4MjYxNGFjNzE4ZGQyY2Y3YjA4IHB5M2sKKzY0MDg0IDkxZWIyNDIwNGUwOGE2YzBlY2U5MWJmMWFiOGY0Y2IwYTViMzE3YTAgcHkzaworNjQwODUgMjkyNWI1NjhhYWNjYTYwOGZmOTc5N2Y2YzM2M2Q5ZDQ5OGYxZjJmYyBweTNrCis2NDA4NiBhY2RhNDMyNTI3MTAwMTdiYTc4ZjE1NTI3NzRjMTFmOWYyYzgzZWIyIGxlZ2FjeS10cnVuaworNjQwODcgMmVhZTMxYTNlZjg5MzAwYWJiMTJjZGIwYTY4NWUwODg5M2RmYmNiYiBweTNrCis2NDA4OCBiZDU4NGYxMjFjNGI1MDIyNDUwMmZjOGU2M2Q5NTRjMDIwOTYyZTA0IHB5M2sKKzY0MDg5IGZmYzZhMmVmNzZlOGFkNzI0YzE1NDQ2ZmQ3NDEyODkwODIzOGQyMzcgbGVnYWN5LXRydW5rCis2NDA5MCA2ZGRlMzkxYmU5N2Q4OGI3YzFhM2NkM2VlNTgyNTMxODExZGE5NTJiIGxlZ2FjeS10cnVuaworNjQwOTEgZjUyOWJmMmRmNDM2OGNhODhmYzJjYzkyYWE2ODk3MDcyZDdiNzJhNSBweTNrCis2NDA5MiBhZmQzYjhlZWUyZmI5ODgzYTFjZWZhNzk5MTNjMWE0NmRmNjRjMDc1IHB5M2sKKzY0MDkzIGU3YTllYWIzNjNhZGFhNTcyYjc1MTE3MTc5NzA5ZTFlNzdlN2E2MzEgbGVnYWN5LXRydW5rCis2NDA5NCA4MjQ4Y2NmZWI1MzQyOWJkNjIyOWJmZDY3ZTk3MTYxODhmMjAyNzhkIHB5M2sKKzY0MDk1IGVjODI3ZjZlNGNjNmI2NjhlODA5NGM3NDk0ZTQzY2QwOWFiYTYxZWYgbGVnYWN5LXRydW5rCis2NDA5NiAwY2EyNDE4Yzc3MDI1N2Y1ZGM3MDA4Y2Q5NzY4MThjMjBmZGY5MmY1IHB5M2sKKzY0MDk3IDI3MTg0NWYzMjNiZTQzMzJmZDcxZjcxYWI4MjFjM2U0M2I2MDhlNjEgbGVnYWN5LXRydW5rCis2NDA5OCAwMTNiZTYzMjBiODI4NmU0ODhiMDMxZDNjOTlmMmJiNjkxZjhmNjcwIGxlZ2FjeS10cnVuaworNjQxMDAgMWVhYzhmZjAxZDdiMDYwN2VkY2QyM2QwNGUzNmU1NzA3ZGUzMDNjYiBsZWdhY3ktdHJ1bmsKKzY0MTAxIDdkNzBiNTllZWFmMmRkOTBkNDZkZmNiYjlhZDJlZDIzOTRhNDA1ZjAgbGVnYWN5LXRydW5rCis2NDEwMiBkYTMwN2JlZWViYjkyMDIwNGI0YzcwMzQ4NjE1ZjQ2YjhiODY4ZjBjIGxlZ2FjeS10cnVuaworNjQxMDMgMmE3YjZlOTljYzU0Y2VlYjQ4Y2U5YzdjZjM3NTQ2YWRiOTEzZmVhZCBweTNrCis2NDEwNCA0NTExZWNkMjU2MzQzYzZiMjQwMjgyYzNjYjg1MDNiZDJhZGJmOWNlIGxlZ2FjeS10cnVuaworNjQxMDUgYWNkZGIwMGIxZGU1ZjA0NTEzZGRiZjZmMGZkMTU2ZGRhMjNkMGIzOSBsZWdhY3ktdHJ1bmsKKzY0MTA2IGU4MWRlY2NiMTdjNmI2NjcyZjY3MDlkOGJiYTMyZTg2MDBkODU1NTAgcHkzaworNjQxMDcgOTRmNjRmMTFmZGQwMDk4ZTRhZDVhM2Q2ZjdhMDA2ZjJlNWRiMDBiOSBweTNrCis2NDEwOCAyNTExNDMxNTE5YTIyMWJjMTg2NGQ4MGIxODQxOWExMjBiY2RmYzlmIHB5M2sKKzY0MTA5IDg4YTQyZGIzNzc3YzIzYjk0N2NlZmJjYTEyMzRlODI2ZGNjZWE4MDEgcHkzaworNjQxMTAgYjgyZTA1NDVkMTExNTRhOWVjMjA4MTUxMTI2MTkyYjRhYjZlZDYyNyBweTNrCis2NDExMSBiODMzYTQwMDk4YzAwZjc5OTc2NjY4NmU1NTVhZTMwZTI0YmVhNThjIHB5M2sKKzY0MTEyIGIwZWYwMDE4N2E3ZWMxNjdiODE1MThhMGIwYWUzZTk2Y2E3ZjZlY2QgcHkzaworNjQxMTMgMjU0M2M0Yzc5NTQzM2E2MzE0ZDAyMTllMmM0ZmZiZmUwNmFhZDUzZiBsZWdhY3ktdHJ1bmsKKzY0MTE0IDFjOTY0ZWQzNWVmOWZiMjc5YjZjYzJkY2EzOWFlMGVlZjdjYzEyNTUgbGVnYWN5LXRydW5rCis2NDExNSA4ZmU0N2IyYzhiZmUzN2E0MDdkY2QzMmZjMmYyZjc4YzNmMDY3Njg4IGxlZ2FjeS10cnVuaworNjQxMTYgY2I4NDk0Y2UxMzM3YzgzZmI0MzY1OGRhMDgxMDFmZmEyYWU0ZGY4MyBsZWdhY3ktdHJ1bmsKKzY0MTE3IDBmNTU2NGZkMDQwYTk0YTNlZTk5ODFlMGMxODRkMGExMWEyMzRmNzUgbGVnYWN5LXRydW5rCis2NDExOCAyNDVkY2EyNjcxMmY3NjMxMjI2MjViMzk0MjEwZWJjYmY5Njk0NDgzIGxlZ2FjeS10cnVuaworNjQxMTkgNTE3ZTE0MTdmN2UyY2Q5ZTk5YTBlODM2MTAyODkwZDlkNDk5ODJlOCBsZWdhY3ktdHJ1bmsKKzY0MTIwIGNlZjlmMjdhNGNjMzNhMWZmODVmODcyMWUyOGU1NDg0MDgwMzhlNDUgbGVnYWN5LXRydW5rCis2NDEyMSAyMTJhMWZlZTZiZjkzZjhiNzRmODFkZDM1NjdiZjk2NGU2MjdlYTIwIHB5M2sKKzY0MTIyIDVjNmNkZmNkNmVhZTQ5ZWZhNWM3YTE1MmJmODIwNWYwZmFhN2ZjNTMgcHkzaworNjQxMjMgNTdjOWFiYWI0ODMyYzhiNjI0ZTdjYmNjOGZjZmU3NjY3OTJjNGQzYSBsZWdhY3ktdHJ1bmsKKzY0MTI0IDRkZDEwMDM3MDg4YzI4MmQxNzZiNDgxNjZkOGQ4ODhiN2MxN2I4MjYgcHkzaworNjQxMjUgYzM0OWY5ZmJjNzA0NDRhN2IzODViYmU0OWJjMjdlMDlkYmNlNDZhMSBsZWdhY3ktdHJ1bmsKKzY0MTI2IGUyZWI3MDIzNTM5MmZiMGRiYzE0M2VmNGMzYWVlODI0Y2QxODVmMWYgcHkzaworNjQxMjcgYjc3MmJlZTNhMTBlZjBjMDUyMmYxNTczMDFhODFjZDBjODFkOWIwMiBweTNrCis2NDEyOCA4ZGM0MzEyYTJmNzU3ODUwYTQzZmU1ZmY5OGQ5OWQ4Nzg0YTlkZTdiIGxlZ2FjeS10cnVuaworNjQxMjkgOTEyMWM1Y2M0ZjA1NDEwZmZkMjBiODI1ZTVmNmIyMmIzMDgzZWU3MiBsZWdhY3ktdHJ1bmsKKzY0MTMwIDcyYjQ5NDZjNDQzYWU0NTI2M2RmZTlhMzViZTFmM2NiYmVhYzA3MTIgbGVnYWN5LXRydW5rCis2NDEzMSBlNmJlYTcyZTk0MzcwM2VlYjg2MTU5YWNlNzEwMjc0YzgyZWNhNTMxIGxlZ2FjeS10cnVuaworNjQxMzIgZTkzNTk4YmQ3ZjQyODkyOTZkMDI0MzE2YmMyYzZlMmNkMmM3ZDlmMSBsZWdhY3ktdHJ1bmsKKzY0MTMzIDY5NjM0NGVmOGJjMDQ4ODE1YTBkZmQzZjI0MDZiZDBlZGM0YWViMWEgbGVnYWN5LXRydW5rCis2NDEzNCA2ZGQzZWI0MTE3MGE1OGRhYjU3OWQxMDIxOTYzMzYyZTM4Y2IwOTc3IHB5M2sKKzY0MTM1IDI4MjAxMDljOGQ1NTI4ZjdkMzdmY2JiYzQ2ZWNiMzgxY2Q0MThhNmIgbGVnYWN5LXRydW5rCis2NDEzNiBjYzcyZjQxZmYwMTQxYTQ3YWE2Y2M4Y2QzNzRjMTg4MGNjMTczNGVlIHB5M2sKKzY0MTM3IDE3N2YxYWFlM2JiNDQ5MWMwMjZlM2ZkY2U3ZjQxZjg2NmJkODU1MWMgcHkzaworNjQxMzggZGE0N2U3ZTEzNWFlOWYzMTY4M2E0YTJiMzY1NDBiZDY3ZmI2NjQ5MSBweTNrCis2NDEzOSA2ZjNjMTM1N2E3ZmJkZTdmYTJjNmM3NDUwOTUzMzQ2MzNkOTY3OWU5IGxlZ2FjeS10cnVuaworNjQxNDIgNjczNTMyYWEzNzhiMWY4ZmVhNjMwZWFhZDNiYTE1YWRiZDZhMjE4ZCBsZWdhY3ktdHJ1bmsKKzY0MTQzIDQ0NWNkNmViYTMzMWU5ZDU2YmU4MGVlZTUyMGRhZTcyZjJlNmYxYjUgbGVnYWN5LXRydW5rCis2NDE0NCAwNDVmODNhMWI4NjQxYzI0ZjZmNDRmZjY5MjVhYjVmMmExN2Q2NDM1IHB5M2sKKzY0MTQ1IGQzZTJhOGU3YmY0NTkxMjJmMjEzZDMxZDNlMzhiZjNiYTQ3YWU5YTEgcHkzaworNjQxNDYgMzJmZWY2MzFmNzg5MzRjMDZiOWRhMTBjYTRmZDg1NTE5YThkMTgzNSBsZWdhY3ktdHJ1bmsKKzY0MTQ3IDdhNWJiNTUzZGEyYjE3MmJiM2FjZTBkNGUxNTBiZjcxNmVhZjA2NzQgbGVnYWN5LXRydW5rCis2NDE0OCA0YzZiOGI5Mzk3MTgxOTdlMjRkOGZiZGViYWU5Mzk4MDJmNzVlYTQ5IHB5M2sKKzY0MTQ5IDZhN2ViMGI3MDE5ODA5OWE4M2M4MGZlYmYyZDE4NDkyOWZiOWYwMGUgcHkzaworNjQxNTAgYjQ1YTk1MzkwNjIwYWU2NzA2MzlkYWQ3NmQzN2ZlOGQ0NTNjYmQzMyBsZWdhY3ktdHJ1bmsKKzY0MTUxIGY3NTFkYWI3MTMwMjRkOTRlYWNiZDJlNmE2YjBjNTUxNjAyMjRmYjggcHkzaworNjQxNTIgYWZkZDQ5YzQ3NTk5ZDhiYWY1NmZiODU3MWFjOGFkNmMzMTViNDQ4MyBweTNrCis2NDE1MyA4YjBlMmM5NmNlODBlMDVjY2U3N2UzMTliOTJkMDI3Y2ZiMTllMzk1IHB5M2sKKzY0MTU0IDFiZmVhOTU2ZDBkNzA5OWFkOWI1OTNhYjkxODFkNWVjODIwMzA0YTcgcHkzaworNjQxNTUgYmZiODI3NGUzOTM5YTk0OWI0YzBhMzc5OTc3YzFiZjhhZjU5NzlkMCBweTNrCis2NDE1NiA3YjNhMDI3YWI3ODViODQ1MGEzMWRmZWNiYWJmMjNkNDUzY2RlYzRhIHB5M2sKKzY0MTU3IGQxNWQ4NjgwYTAwYTYwY2QxOWRiOGU0NWEwMzllMWVjMGY0MWIxNGEgcHkzaworNjQxNTggZjUyODEzZjQzMTg5ZDIzYzA4NGEwNjNkN2ViMmFiNGM5YjI4NmFjNyBweTNrCis2NDE1OSBhMDIxZmYxMTcxOGI2YTk1YThlMWYxNzk2OWFjNTc3MzgzZmY3NzZiIHB5M2sKKzY0MTYwIDM4ZDE3NmViYjJmYWI5NjNmYjNlYjVkNmZmMTAzNTMxOGU1OTk1NzAgcHkzaworNjQxNjEgMThlYWExZDVmMzk0Mjk4MThlODRlZThmZWVjMmZlOThlMWYyNjBhYSBweTNrCis2NDE2MiA1YWYxNTA4OWExMDA2NDhiNjZmMWQ2NDFiMjZlYWI5YmZiY2UyNTFhIHB5M2sKKzY0MTYzIDgwOTc1ZTYxZjhjOGNkZTViNTI5OWFiOWE1ZGRkY2UyNWM1ZDU4ZjEgcHkzaworNjQxNjQgZjMxZTMyYTIwMTNjZjQwYTQ5OGI3MWFmNDIzMTc5N2ZiZDVlMDc2MCBweTNrCis2NDE2NSBmNmFlYTgwOGIzNTc5OTkzM2RlMmYwMjVkNTQ4OWMzN2FhYmExNGQzIGxlZ2FjeS10cnVuaworNjQxNjYgNTI1OGQ0ZDdkZTc3YjQ5ODY1ZTA1M2Q3NzVmMTg0OGZiMDQ2YzAxYiBweTNrCis2NDE2NyA1ZjRhNTFmNjM5ZjFkNWZlNzNhOTgwOWRkNTE2OTY5M2FkYzBhNzZiIHB5M2sKKzY0MTY4IDkxYTg4MjAwZmRmMGRkODkzNDgzODhiMzVmZGI1MjFkMWIyNDk2NTIgcHkzaworNjQxNjkgNDQwMTllMzdhYzkyNWU1NWU0ODk5YmYyMzUxODI0NTc0ZjEzNTNiNyBsZWdhY3ktdHJ1bmsKKzY0MTcxIDY1MGIzZjY4NDVmOTMxZThiYzMxZTRkZTg3MGI4YzFkZWEzYmY4OTcgcHkzaworNjQxNzYgNWE5Y2ZmN2ZkMDhmNWI3OTE3ZjcwNzYwZWJlMGYzNzVkMWI5ODcxMiBweTNrCis2NDE3NyA1ODcwZWJlMjVkZDA5MWE1YmQ1OGJiNTFhZDdmMzhlYWVkMTRiZjE2IHB5M2sKKzY0MTc5IDNhM2UyMzFiODY2ZmJlMmFmZGYzOTAxZDA3ZjE2NzhlMDQxNWYzNWUgcHkzaworNjQxODAgMGFlNTBhYTdkOTdjNTI3N2U3YmY4ZWY4NWQ5YmJjOGE1YWVhOWE3OCBweTNrCis2NDE4NCBiMzc2OWI2YmFlMGYwYWQ3ODczYjYwNmYxYWM2MzRiZjUzZmM1M2VjIHB5M2sKKzY0MTg1IDNkNjg2OWUyYzkyYWM5OTY5YWNlOGE2OGQyZDM5OGMyM2RiNzVmZGMgbGVnYWN5LXRydW5rCis2NDE4OSBlODZmMzg1OGRmMjBjYTkzZDZlYWMwNGIwMzNjOTU3ZWE3NTExZTllIGxlZ2FjeS10cnVuaworNjQxOTAgNTAzZmIzYzVlMDgxNGMxMDVmMmU1OThlMWE3MTYxNzRjOGExMDU2OCBweTNrCis2NDE5MSAzMDE3ZTc5NGJiYjlhYzM1ZDRhOGVmY2U3OGQxOTExOGZhZWQyZTFjIGxlZ2FjeS10cnVuaworNjQxOTQgNDE0MTQ5M2RkM2EwNTU2YWJiMjM3MGJmMGNjYjZmNmM1OTkwM2ZiMSBsZWdhY3ktdHJ1bmsKKzY0MTk1IDQxNDg0ZDE4MzkwY2ZjMzA2MmQ5MTIzMGEwZWRkMmRkNThjMDBkMmQgbGVnYWN5LXRydW5rCis2NDE5NiBmNGZmNThlMzQ2ZWU0OTNlYmE0MmNlMzYwZDg0MjU4NGFiMmRhNGFjIGxlZ2FjeS10cnVuaworNjQxOTcgOTdjZDk1MzY3ZDYwZmZiNWQ3NDE2ODhlODI2YzA1ZTlkNTA2NDY3OSBsZWdhY3ktdHJ1bmsKKzY0MjAyIGUyNGYyNmMzY2NlNDY0OGU3NjcxMTg3YjgzOGI3MjhjMTgxZDExNWYgbGVnYWN5LXRydW5rCis2NDIwMyBkNDA3Zjk1OGMxMzc0ZWM5ZDY0ZjY0MTFmYmFkZDI0YWEzMGQxYjZhIHB5M2sKKzY0MjA0IDEwOWU5NzQ4YzdmNDM1MWJmNmYyYWQzYjMzZWMyZWQxMjJkMjVkZmQgcHkzaworNjQyMDUgZmNkZjgxNGM5YjExMjhhMjE5M2I5NDdkNGNmMmFiNmZhZDVjOWJjYiBweTNrCis2NDIwNiA2NTg1ZmQxZDlhZDcxMjNkNmNhYThjNzQ0YTFlY2NjNGZiNmYzNDA0IGxlZ2FjeS10cnVuaworNjQyMDcgNGI4NjgyZWEzN2MxZjQyNDhkZDZjNjlmOWZlNTg4NTZlNjE3Yjg4YyBweTNrCis2NDIwOCBmZDdlYjI3NDEwMTIxYzk1ZDgwMjhlNTY3YWVkMTc5MjVkNzJmZDIxIHB5M2sKKzY0MjA5IDU3MjZlOTE1N2JmMDJmYjVkODdkZDM3ZjFiNDY0N2JjOTNmYzY3YzcgcHkzaworNjQyMTAgOTJiNzliNmQxYTNiOWJiZDBlMThhOGFmZTVhZGFkNDk4YjNlMDI2YSBweTNrCis2NDIxMiBkYjk5Zjg3NTI3MTA2Y2I3M2JlNmE3ZDE2YjZmMTQxODM2ZTI2NDk2IGxlZ2FjeS10cnVuaworNjQyMTMgNzFjYjdlYTRmMTEwMzY3NTI0ZmIzYjFhYjhkZDNlMTM4ZjBjZmE4MSBweTNrCis2NDIxNCBmY2ZlMTBmM2RjMTQ2Y2Y1MDVhY2VmYmZiYzliZGY4NmU3YzgzZDcxIGxlZ2FjeS10cnVuaworNjQyMTUgYjFmNGVhNGViNTU1NjM5OTM0MWNkNmZmZWU1ZDQ2YTQ3MzkyODQwNCBweTNrCis2NDIxNiA5Yzc5ZWU0OWEyZDk1MmI4ZWFmZjk4MzZmMDJjZjllZjFlNzA4NjE1IHB5M2sKKzY0MjE3IDMxOTg4YjQwMTUzNTc5NTQ2YTVlMjEzZTc3N2Q5NThiZDA5MzAwNjcgcHkzaworNjQyMTggMTMwNzFhZGQ4ZjQ4YWU1OGNhNDViYmYzOGI3NzBkMzc2ZmJhYzE3MCBweTNrCis2NDIxOSBlMzBhZjMyNjRhMGY1NzNhYzEwMjg5Yzc4ZWM5MDJlMjZlMTVmMjFmIGxlZ2FjeS10cnVuaworNjQyMjAgNWViY2RlYjBjYjI2YzY3YTg1MWQ4NDMxMzVmZGExNmE1NjYyYmQzOCBsZWdhY3ktdHJ1bmsKKzY0MjIxIDE0NjQzNDVhMTk2ODNiNzRiNWFmZGZhYTAxMGUxMWE2MDlmMmFhYTMgbGVnYWN5LXRydW5rCis2NDIyMiA4ZjYxYWUwMTEzMGY4ODkzOWRhNTNjNDAyNjZlMjcxZTZlMDNmNmNhIHB5M2sKKzY0MjIzIGQ1YWEyNWJmOTM2MDNlYjRlMWE4MjgyZmE1NTg1NjlmNjc3OTExZjIgbGVnYWN5LXRydW5rCis2NDIyNCAzOGQwNDY3ZjVlYzc2OWQ0ZDRjY2M4NTg5ZjczN2ViZjQ0OWM1NDFjIGxlZ2FjeS10cnVuaworNjQyMjUgN2E4ZWUwNWM2OTdmNTBmMTIyZGMxMGIxMTQ0ZjViMjkzZGU3MjdkNSBweTNrCis2NDIyNiBhMzVkYTk0ZTA1ZmM1YTU4ZWVhN2U2YzI4ODUwNTMxMzQ0YWJhZWVlIGxlZ2FjeS10cnVuaworNjQyMjcgOGM2MDY4ZjE0ZWU4Y2VmMTAxM2UwZTBjYmMxNGQ1YmZiMThlMDIwMyBweTNrCis2NDIyOCBiNWUwMjc3NWZmZmNiM2ZjNGI5OWY1MTgxODA4ZjhjN2IxMzRjYTI2IHB5M2sKKzY0MjI5IDY0MzRkZDcwNGQ2MGVhNjA4MDAzODNhZWI2NDBiNGUxMmZlODgwZDcgbGVnYWN5LXRydW5rCis2NDIzMCAyZGZhYTA2ODNiZThiNjYzZDA2MDM4NDk3MmIwMmQwM2RjMTZmMzg3IGxlZ2FjeS10cnVuaworNjQyMzEgNGRhOGI3YThjZjJlOTRiYmRjNTY1ZTkwMjU4ZmZjMDFjOWYyZGVkMiBweTNrCis2NDIzMiBhMTA2ODhhZGNkZDYyNTM2ZmJkOTVlYzNhY2U5ZDkxZDg4MzU2MGI4IHRsZWUtYXN0LW9wdGltaXplCis2NDIzMyAxNjhjOWU5Njc3MmM1Nzk3MmJmYTc5YmZiODhjZDQ2ZTJhYWFjZTExIGxlZ2FjeS10cnVuaworNjQyMzQgN2ZkOWU5Y2JkNzIxNTNhZDhkNWVkZjU4NTliZWIyNDk4NGM3YTJkMyBweTNrCis2NDIzNSBhMzMzYzg3NzBlMzIxMzI3MzlkZGI1MDRmYzYyNTZjOGY3ZjVjNDA5IGxlZ2FjeS10cnVuaworNjQyMzkgZmFhN2NhNTI0MjcxODg0MjJlZDExN2FkNzM2ODcxY2JjMmQwYTc3NSBsZWdhY3ktdHJ1bmsKKzY0MjQwIGNkYmYxMjkxMmQ0YjgyYTQ0OGU3Zjg2N2Y3MzYyYmE3MDEzODIxNmQgcHkzaworNjQyNDMgZjUyNTQ5ZmI3NGEyNjUxOTExYTZkODliMTIxOTFkZmViYThlODJhNSBsZWdhY3ktdHJ1bmsKKzY0MjQ0IGI5MDVjYjI3OTNjYzlhYWYzYWQ1ZGI0NTM0MzMyNjRmZDg0N2I3MmUgbGVnYWN5LXRydW5rCis2NDI0NSBiYjgxN2E1ZDY4YjdjMzA4M2QyMGY3NDk2NGE3MGFiZjY4OWQ1YmM5IHB5M2sKKzY0MjQ2IGE0NTBkYTI0MDA4OTZkMjQzM2YwM2VmY2NjNTg4NGQyYjc3NzMwMzYgbGVnYWN5LXRydW5rCis2NDI0NyA4NzE0N2RiODJlYjFlMzMyMjYzZjNhOTRlY2Y1Y2NmNDkyNDE2NTdkIHB5M2sKKzY0MjQ4IGFmODg3M2RmMDMyMjVlYzEwZmNkYTY0ZjlkODhlY2VjMWEyNjFkMzAgbGVnYWN5LXRydW5rCis2NDI0OSA5YjhmZjczZDAxODg1OTM3NmM5MGY2NTJiNmZkMGJmYmM2NjdkYjBkIHB5M2sKKzY0MjUwIGQwMTE2NWZhZTk4ZTkwMDRlM2Y4MzU5YjkzYTY2N2QxNDhhYzdlMGEgbGVnYWN5LXRydW5rCis2NDI1MSA0NmU1ODQ2MTUwZDVlOTVmOGEyYTEyMDRiZmVkZTk4ZDQyYmIxZmJmIHB5M2sKKzY0MjUyIDZkMWRjNzYxYWI0ZTA4ODk4OWQ3NTQ0YjRlMWQyYjc5YmRmMDRkZTkgcHkzaworNjQyNTMgMTA2OTU3ODM3OWEwMTJjZDFjOWY4YzI0YTUzOWYyMGM5NDdlM2M4MCBsZWdhY3ktdHJ1bmsKKzY0MjU0IDQ0NmQ1YzI5OTA4YWE5ODUyZTgzNGIzZjlmMjk0YTY2MWVlOGJmZWUgbGVnYWN5LXRydW5rCis2NDI1NSAyZjE2Y2VhMjI0ZjVjYzQ4NTI0MTkyMjNjZGYwZGI2NzRjY2RlMWI0IHB5M2sKKzY0MjU2IGRmZjc2MmFkZjlkNjExMjJhNGViNjY1YzBhM2FlZDRhNjFlYjE0ZDIgcHkzaworNjQyNTcgZjM2ZjA5MmRiZTk3ODQ2YzIyNmUxMDk4MzZlMjdjNWJjM2VjMWM1ZSBsZWdhY3ktdHJ1bmsKKzY0MjU4IGFiYTU4ZjI4ZTE2NmIzZjdhZTc2OTViODU1ZWUzZWY0Mjg3NzRiMTkgcHkzaworNjQyNTkgZjJlMmQ1Yjk2NGRlMzhjMWQ0YTI5OTEwODU3ZWM4ZjI2NWQwYzczZSBweTNrCis2NDI2MCAzN2NmNWExZTYzOWU5MGVmY2NkZGMzZjdiMWQ2YWNhZTI5NWM1NDBiIGxlZ2FjeS10cnVuaworNjQyNjEgNTdhYTg3M2Q5NmZjYThiOTIwNDA3NGZjOGY0NDM1MWMyYTNhMmJlYyBweTNrCis2NDI2MiAwOTViODVkN2EwMTQxZTNmN2VmYWQ5MTU2ZGJmZjI5NmJkMTg4MzQ0IGxlZ2FjeS10cnVuaworNjQyNjMgZThkZjllNDg3M2I0NzgwMTNmZTI5OTdkNTg1OWVjZDVkZmQ2MmRlMyBweTNrCis2NDI2NCAxMGE4Y2U4ZGI2YmZiNGY3YzYxMTAyYzMxYzVmMDJjN2NjMjhmNTVmIHB5M2sKKzY0MjY1IDZmMGZlMDY2YTg0YmI1MDRlNGRiNDcxZWJmNWRkNWQ5ZmM1ZWVhMmEgbGVnYWN5LXRydW5rCis2NDI2NiA2MWU1Mjg2ZDkzN2M4YWNlZDY5MWFhMWUzNmYyMzM2MDY0MGU5ODNhIHB5M2sKKzY0MjY3IGFhMjUwMzE4OGJmMzRkODkyOGQ3MTE1OTVhZjQ0MWJkNzY1YWY5OWMgbGVnYWN5LXRydW5rCis2NDI2OCBjOGY4YTU3OGMwMWI5OGFkZGNhMjBkYzZmMTZkZDM5NTExYjdkMjZjIHRsZWUtYXN0LW9wdGltaXplCis2NDI2OSBlOWM5MzVjZDc4ODhhZWJmOTBlMDU3OWUyNDc4MTIwNmZiNjJjMDJjIGxlZ2FjeS10cnVuaworNjQyNzAgMTg5ODY3YWFiYWZhMzc3ODgzZmZiNTg1MDNmNzhiMjM1OWJmMmQ0MSBsZWdhY3ktdHJ1bmsKKzY0MjcxIGI1YmYxNjc5MGUzYzY5ZDFmNTVkNGFkZGE5OGQ0OTFmMTJjMDEzNzMgbGVnYWN5LXRydW5rCis2NDI3MiA1MTZjMTlkODU5MWE5YjQ2MDM1ZDg1MjU1YTEzMmMwYjNmOTQxMDIzIGxlZ2FjeS10cnVuaworNjQyNzMgOTZiZmY3ZTEzN2ZiZDEyMzBkM2Q1ODQ0NmYyODI2ZDc3NTg1ODdjMCBweTNrCis2NDI3NCA0YjFlMDE1MDVkNGQzN2U5OWYxN2VhMmVjNDQxMGMwZTY3MWY4YjQyIHB5M2sKKzY0Mjc4IDlhZDY5MTI3ZTZhYTY1NGEzNmY3N2JmNDhiYTZhMDU0YWY4ODU0YTYgbGVnYWN5LXRydW5rCis2NDI4MCA5MTU1ZmY3OGZkMDY0ZDY4MGY3MzA4ZjNkZmFhNzkxMThjZWE2MzA1IGxlZ2FjeS10cnVuaworNjQyODEgN2JhNzkwMWRhZDdmOGM2YjVhMGEyY2M0ZjQwNjkzYzA2YWNmMjZiNSBweTNrCis2NDI4MyAyNWZhM2RkMDIxZjUyYWJlMWEyNjk5NjBjNjllZDRlMzZiOGMxZjRmIHB5M2sKKzY0Mjg0IGIzM2U4MzM0ZjgyZjc5ZTMzNzdhMDc4NzU1YTY3ZTk0ZTI0NzM5YmUgcHkzaworNjQyODUgNWNiNTBlN2E5OGEyODU4YTkxMzc0MjgwMTIxOThkNTE4ZDllODBiNSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyODYgOTkxY2FhZDgxYTJkYTZmNTVmYzAxNjgwZTU4ZTg3NzEyZTU0N2JkYiBsZWdhY3ktdHJ1bmsKKzY0Mjg3IDRlMzA0YWRlZDdhODUwYjRiZjY3MWZmODZjYzA3NTY2ZDBhYzg4MDQgcHkzaworNjQyODggNjEzZGFmN2Y4ZTQ4NmI0NzExNjQxMTJhOGJlN2JiMDY1N2JmNjU1ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTEgMTQzNTBlNzVkMDJhNGJlMmRiMmVkMWZlN2NmNDgxMGE0NTNhYTJjZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTIgMzg2YTcyOTg0YWY1ZGNmMzVkMGIwNDIzMGI5YmM5YjFlMGYzNjQzNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTMgZjc3ZjhlNzk5NzE0OTRmYmZmYWRhZjRkNzdjYTA4NjVlY2Q0NWM1NSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTQgMjZlOWM4NzFkMjNmYTEyODBkMTMzZWE5OTNlNmEzZjA5MjNmMjU5YiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyOTYgNDBkNjAxZGUyOGRjMDgxNzY2NzVkMTIzNjZmNjFhNGFmZTZiMTc5NCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQzMDAgNmY2ZmVkNGYwNjI2YjQ3N2FlZGJiZjg0ZDgwYzNkY2M3NzNmZmU4NCByZWxlYXNlMjUtbWFpbnQKKzY0MzAxIGE2ZDdiZmNkNzQ1NjkxZTBhNGRkYzAxYjIyYTlkMDk2M2I1MjgwZmUgbGVnYWN5LXRydW5rCis2NDMwMiBlZTI4MjNlMWYyM2I2NWY4YmQ0MGZlNzhiZmMwODBkZGI5YzIxMGI4IHB5M2sKKzY0MzAzIDQ2NTBlZWZiNTgzOGU5Yzk2MDRiODFiZjYwNjc5N2IxM2JmZTFjNzcgbGVnYWN5LXRydW5rCis2NDMwNCAzODQzMjg2MGIzYjQ2OGM4Njc2ZWYxNGQzNTg0MDM1OWQwYTY5MWZkIHJlbGVhc2UyNS1tYWludAorNjQzMDkgYjhlOWNjMjgwMjJjNTRmNDcxMDAyODRlYmE0MDYyMGUxZTY2YjAzNyBsZWdhY3ktdHJ1bmsKKzY0MzEwIDRlZDE2NTk0MGJkZDAxOTI1MWRiM2E4OGM0NzI1MjYwMDE3MTFlNjcgcmVsZWFzZTI1LW1haW50Cis2NDMxMSA1Yzg1ZDU1YzRmYjJiZGE0OTVlYzNkNzA0Yzg1MjExMThiZWY4NTNkIHB5M2sKKzY0MzEyIDU2NmM3MTM3YWE4ZGFlYzU0YjhiZWUxZmIyODM5NTUwOTdkOWZkN2YgcHkzaworNjQzMTMgMmUxM2ZmYWIxOTlmZmJjMmM4OTY4YmY1NDkyMGE3NmRjMzc3NGFkZCBsZWdhY3ktdHJ1bmsKKzY0MzE0IDYwOWIwOWE5ZmVlYjQxZjdmMjMzNTJmZmU5OGRlODFkNDI4YWVhYTYgcHkzaworNjQzMTYgODQ1OTBhNjRmM2EyMjY0MzM2ODQwYmU5MGQyOWZiZGQ3ODQ4Zjg1YiBweTNrCis2NDMxNyBmOGE4ODk0ZGE3N2E0YjcyNzY1YjhmZWM5OGMxNzUzYzhkOTRmOTM0IGxlZ2FjeS10cnVuaworNjQzMTggYTI5YmY2OWZiMzQ0NjQ3YzZmZjAxNzM2ZjU3OWY4MmIyZjAyYTQyNyBweTNrCis2NDMxOSAzMDJhNmQ3NjMzNzg0MDY1ZTIzMWVlOGRhMzAwZmY3MDYxODJhOTVjIHB5M2sKKzY0MzIwIGMwNzQxOGRlM2NkMzMyOGVjOTUzNTY2ZmNiMTEwOGQ3NTk1YjU4NmEgbGVnYWN5LXRydW5rCis2NDMyNiBiOGM5YTM1NDMzODEzYjI4MzU4OWY1YWU2OTY4MGNjMGNjNDA5ZTVlIGxlZ2FjeS10cnVuaworNjQzMjggOThkMDEyYThlNDQ1ZjA4YmMyMGQxOGJkZDg4NTNmNGIzZGNlN2I1NSBsZWdhY3ktdHJ1bmsKKzY0MzM4IDhlODVjNDZjZjY3M2MyNjdlYWZmMmQzMTA5MDk0NWE1ZWYyNzZmOTUgbGVnYWN5LXRydW5rCis2NDMzOSAyOGFiYzIwMmM3NzEwNTk3MTJlOTc5ZDIyOWJkODg2ZDlkYTUzNzdjIGxlZ2FjeS10cnVuaworNjQzNDAgMGIxYzAxZWVjNzg4NTI5ZmRmMjYwMzRlNjg5NjQ4MDcwMWQwMDQzYSBweTNrCis2NDM0MSAwMzYzOWIwOWMzNzYwMzI4YWE2ZjExYzQ5MDE0ZDkxOWRlODgyY2YzIHB5M2sKKzY0MzQyIDQwYTc1OTEzZjA0YTY0YjRmZjgxZDA0YTI2YjZmN2YzZDU3ZDFhMzkgbGVnYWN5LXRydW5rCis2NDM0MyBmNjQ5OTY3NjA5ODQ3MjgzOTdlNzZiMzg1YWJhNmY0MThlMTRiY2ExIHB5M2sKKzY0MzQ0IDZmMjdkNTJlOGQ5NTZlMzIzNzk1Njg2YWZhMTg5ZmIxOGIxOThkZDIgcHkzaworNjQzNDUgNjhkODdiYzA2ZmEzNzBkMjVjMDBlOThlNTAwZWQ1ZTkyYmJjMjUxOSBweTNrLXVybGxpYgorNjQzNDYgODcwMDExODk5OTVjMWFlMDhhZDYzYTYxNTA5MTNiZjQyMzliYTRmOCBweTNrLXVybGxpYgorNjQzNDggZjY3MjZmMzJlZjcwNDc3YmYzYTM4ZGNjODYxN2JjYTQ1NDE5ZjViNyBweTNrCis2NDM0OSBjYTA3NDIzMmI4Nzk3NjdhMjgxYzc2ZDhhMjFmM2MxNGYwNzUzMDUwIGxlZ2FjeS10cnVuaworNjQzNTEgZTM5YzgxMGE3ZWIyNzc5MTgwMDU3Y2FmYTlkZDk4Njg5OTJlOGNiMCBweTNrCis2NDM1MiBlZjg4M2ZiNGMwNzZkZDZmODc1YmM1OWM4YTRlYzJlYTcxMzRlODNiIHB5M2sKKzY0MzUzIDcwZDcyYTc1Y2NmMWU2ZjA2ZDQyMDFkNzNkMzlmODdjZjVmNGE3OTkgcHkzaworNjQzNTQgNWY5NDM1MzE3ZGUxNzA1NTI5Mjk5YjRkYjMxODk2ZTg5N2M3ZDcwNSBweTNrCis2NDM1NSBhMDUyM2M3YzFjNGY3ODQ1ZWI2NTYzZTVlYzU0NzlkZDg1NjBkZWUwIHB5M2sKKzY0MzU2IGExNzQxNjE3ZjA2ZjRkNTRjZjFmMGMzNDZhNWYyM2MwZGMzYmM4OGEgbGVnYWN5LXRydW5rCis2NDM1NyBkZjViYjBhNjU5NGJiN2IxMTc5OTZmZjM0NTg0Zjc1MGM3OGUxNjZkIHB5M2sKKzY0MzU4IGE0YjhkYmUxYjYzMzZmMWJjYmE3NTA3M2MzMTRlYzU2MTI3MTkzNDggbGVnYWN5LXRydW5rCis2NDM1OSAxODdhODFkZGFmMmJkZjhjZWEyNWQ5YTE2ZTE2NjQ1Y2I2YjU5OWQwIHB5M2sKKzY0MzYwIDAzYTlhOWQzMDgxZWRhYjY4MWY1MTg3MjY5N2E1MDUyNDZlMzZlMDMgbGVnYWN5LXRydW5rCis2NDM2MSBhNDA4YTA1ZDBlMjUxYjhiNjA5NjY3ZDZjOTk3NTkyMmU3ZDc4NDFlIGxlZ2FjeS10cnVuaworNjQzNjIgZDUyYTczZDhkMjBmMDMyYjkzZDc1ODZmOGUwYmQwZDAyMmVjNzk1ZCBweTNrCis2NDM2MyA2NmM4Zjc2Y2FjNDQ2ZDFhNDNmN2M0ZDE3ODA5MzExMzFkNGYyNDYzIHB5M2stdXJsbGliCis2NDM2NCBhYzg1NGNkZTMxMzVlNTdlYzFmNGZjOTVhZTVkNzQ0OTUwZjNjNTMxIHB5M2sKKzY0MzY1IDU2NGMyOWEwZmFiMWEwNGZhOTQyZDIzYWNjOTRlNGIyYmZkZmVkODUgbGVnYWN5LXRydW5rCis2NDM2NiAwYjE0OWZjNDAxODY4NmZhMjU3NGYyYWJkZWE0NWIwZGNlYzY0ODk0IHB5M2stdXJsbGliCis2NDM2NyAyOGY1NjdhNDEzZjQxNGJjYzBlMjRkMGY4ZTU4YmJjZjc0MWYwZWUzIHB5M2stdXJsbGliCis2NDM3MCBhYjEyZTNhZDJlNjY1ZjJlMmM1YWFlOWJiMzE2M2RmNjU0NjRkMWRjIGxlZ2FjeS10cnVuaworNjQzNzEgYjRkODIzNDgzNDIxZWI0MDRhNzA2NWM5MjgwOTA1NDFmZjBkNDQ0NyBsZWdhY3ktdHJ1bmsKKzY0MzcyIGE2NTAzYWUzZTE5YzFmZmNmNzFlOWQ1YjkyODMyNzViZmExOWMwYjAgcHkzaworNjQzNzUgNmI3ZGRjMGZkYTkzNzgyOTVmNzdmN2JlMDgzY2RkZDYyMWI1OTAyYyBsZWdhY3ktdHJ1bmsKKzY0Mzc2IDU3MDJlZGU0MjI3YTQxYmZlY2MzMjUxYmU1NmJmZGJlNjdhNGM1MTMgcHkzaworNjQzNzcgOTU0MDU5NzkxMGI5Njk1YzFmYzY5ZGZmMzc5MGRkNTBjNDA1Njg0YSBweTNrLXVybGxpYgorNjQzNzggNGRhNzcxNTg4YmEzMTAwNjg4ZDVlYTYxNjgxNzk0YzI0MmQ0ODJjMSBsZWdhY3ktdHJ1bmsKKzY0Mzc5IDE1ODhlMmZhM2U3ZTc0YjJiYTJmMTIzNGJjMGI5N2MxNDAzOGRlMTYgcHkzaworNjQzODQgNmFmZGQ2ZmU1NTEyZGY0ZGExNTA0YzEzYjAzMjZiMTQzYmIwYzM3OSBweTNrLXVybGxpYgorNjQzODUgNWE0MTZhNjQxN2QzODljY2JlMjQ2ODc4NTViZjk3YmVlY2IzZDA0MSBweTNrCis2NDM4NiA3NDRmOWM4MDlmMzAzZjQwNzE1YmJmMmRhZGI2YWU2ODU5MzRmYWRiIGxlZ2FjeS10cnVuaworNjQzODcgMDMyMjgwOGMyMGZlZTY4NTYzMDdkMDNmMWMyOGM1YzhlMWIzMGJmNSBsZWdhY3ktdHJ1bmsKKzY0Mzg5IDY5MDQwMDkyYjhmODMxNzZjOTkzZTkzMjgxZDlkMGU3ZTcwMjE5MTggcHkzaworNjQzOTAgMmMxMDY4MzI4YjViYTQ3NmIxNzI4OTEzOTk4NmZmMjY5ZThmYTY3NCBweTNrCis2NDM5MSAwN2Y5NDcyNjAxNzgzZTEyYzI4Yzg3OGFmOGM0MzA4NGE2ZGU3Mzc3IHB5M2sKKzY0MzkyIGVhMTk0YzlhNmMyZjlkZTQ0M2ExNWJmMjY5MjIyOTRkYWUzOTAwYzcgbGVnYWN5LXRydW5rCis2NDM5MyAyZGRkODZlMzcwMGMyMGVkY2FkYjI4NTI2YjM3ZWVjYmVkZTkzM2UxIHB5M2sKKzY0Mzk0IDViZDQzZWI5ZTUyMGMyNzYyNzljM2Y3NmE4MTI4OGE5MWU1YTU5ZDAgcHkzaworNjQzOTUgYTMzNWM0ZDY0M2IxY2ZlMTQxOTdhOWVmMTk1YzliMjgwNGY2MDhmYyBweTNrCis2NDM5NiBiMWVkMmIwMDVlM2RiZWFkZGY1NDY0YzUwNTUyMWMzZmE1OTQwYzMyIHB5M2sKKzY0Mzk3IDA3MzAyMjRlY2Y1ZmVlMWIwN2NhODNkZDhhYjAyNjdhMTkyNTUwOWQgcHkzaworNjQzOTggMmYyZjMyYWY4YzRlZThmNjU5OGY2MzJkYzgzNzAxYTIwNzI2ZDEwYSBsZWdhY3ktdHJ1bmsKKzY0Mzk5IDI1ODFlZTFmMjZmOWU0YjhkZDM2NzI5YWRiYWM3MWZiMWJhMDZmYjQgbGVnYWN5LXRydW5rCis2NDQwMCBlY2ZmMWExYTA3YjU1NWY4NWU4NjE4NzZmNjZmMmI1ZDU0ZTkzM2UxIGxlZ2FjeS10cnVuaworNjQ0MDUgYjM0YmM2MzhiOGE3Yzc4YjE5MGUzZDlmODZhNTY5MzgwNzIzMTBjYyBweTNrCis2NDQwNiBiZTA3ZjM3OWQ4N2FkZjBkZDY0ZTY4YzZlNjlmN2QwN2M1Yzk2ZGZlIGxlZ2FjeS10cnVuaworNjQ0MDcgYTRiZTRiMTc0NzcxMWRlMTRlMWI5Y2E1NDdlYmRiM2NkNmJlMTg0ZiBsZWdhY3ktdHJ1bmsKKzY0NDA4IGUxMDcwNjJhYTljZDc3ODY4N2Y3YWEzOTVjODFmNWIzMmFlNTg5YzMgbGVnYWN5LXRydW5rCis2NDQwOSA5YWYwZDY1YmMzYjI3ODQ2MDYwMzNlMGZmNzVlZTJiNTYzNjRjYWUyIGxlZ2FjeS10cnVuaworNjQ0MTEgMjdjNzhjYmZhN2M2ODFiOGEzN2IyMjMxMGQ1MjE4Y2VkOWUzNTdiZCBweTNrCis2NDQxMiAwYWVlYjJiNDgzNDFjNzcyODRkZDBlMmM1OGU1MWU0MWExYjk3ODMzIGxlZ2FjeS10cnVuaworNjQ0MTMgZGI2MmM0NDhhMzQ5ZTJmMTVjNGMyY2NlZTg5NjkxYWYyNjc4NTlkYSBsZWdhY3ktdHJ1bmsKKzY0NDE0IGNiODcxZjczNmJlMDI0YTc1ZjRhZTc5MzViOGE0OGU2NGM2YzkyZTkgcHkzaworNjQ0MTUgMmJmNDExMmNkNjgxNWM3MDNlMzY1NTI1ZTlhOGFiNDM4OTdjODk2MiBweTNrCis2NDQxNiBiNDE4ZGQzOWY3OThiZWY4NDcxZmMxOWM4Y2QwMGRjMjcxNWZkZTNlIGxlZ2FjeS10cnVuaworNjQ0MTcgNThmNDNhY2UyOTVlNWMzOTgxOTdhMzJkM2YwZDFjNzg5ZDEyYzliYyBsZWdhY3ktdHJ1bmsKKzY0NDE4IDZiNGIyOTJjM2EyZGE4ZGFiZDc2MjExYzdhOWQ2MTQxZTFkMDc0ZmUgcHkzaworNjQ0MTkgMjVkNmIyZDBlZTQyZWU4YTdmNWE4NWIzYzAzYzU5OTMxMTI0NWQ2ZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ0MjAgMDdkY2YwZWE3ODgwZjQwZjkxMTk3Mzc0ZmQ5NTJkMjU2YmQ3NTQ4MSBsZWdhY3ktdHJ1bmsKKzY0NDIxIGMzOTI2M2U5NGMzMzA3NGQ0YjZmZTVhYzRkZWY0ZTA0YjYxZGYxMGMgbGVnYWN5LXRydW5rCis2NDQyMiA3Yjk2ZmFlNDAwZDYxODllOWUwNjUyNTA2NWZhMWI3NTg5ZWVmNWVlIGxlZ2FjeS10cnVuaworNjQ0MjMgMWJmZDVlNzEyYjk0Y2ExNWVkYjk0MzY3YzAyYTQzOGZjZDgwODYwYyBweTNrCis2NDQyNCBlZGM3MDFkMDBiNjIyNDEyMDJkNTI1ZGU3MTU4OTk1NjY2MjIxYzcxIGxlZ2FjeS10cnVuaworNjQ0MjUgNzE3ZThhZWU0YTlkMDdkN2NkYTlmNTgzZjNhNzM4OGNlY2Y5ZGNkMiBsZWdhY3ktdHJ1bmsKKzY0NDI2IGQxYTQ2MzUwYjA0NzZjNGZjYzMzOWMwNDMyMDRkMjk4NzMwZjYyNGUgbGVnYWN5LXRydW5rCis2NDQyNyBiZmRhMzk4YzkxN2U1ZGEyNTBhOWM2MDljYzY4OGYyZGM4OTZhZmI5IGxlZ2FjeS10cnVuaworNjQ0MjggYTcxODZmZWU3NTk2YjY2M2Y1MzQ1YzRhNGIwOTY1NmUxZTY5N2M0ZCBsZWdhY3ktdHJ1bmsKKzY0NDI5IDYyOWVlZGNiYjI2NTg1MzUyODQ3OWI0OTA4MjljMWZhMDljYzk4Y2YgbGVnYWN5LXRydW5rCis2NDQzMSBkOGRjNmIzN2ZkNzg5ZWY0ZjlmODk1NDgxOWNiZTc1YWQ2NWY2M2FjIGxlZ2FjeS10cnVuaworNjQ0MzIgNWViZWZmODA0MjVjNTQ5OWI0YzMyYWNiMjkyZTY1ZmNlZjk3NTk2YyBweTNrCis2NDQzMyA0ZTFjYWRiNzg3MWVlY2UxNDM4YTdlNjZhYzA5MWFjMjc2YzZlMTY0IHB5M2sKKzY0NDM0IGExMDdiYzJkOGYzNDI3ZDk5NzZiNjk0YjBjNTViNzA2ODNjMjUxZjMgbGVnYWN5LXRydW5rCis2NDQzNSBiMzIxMDFjMTliZjg0ODU2MzIwY2RkMzgwMTBmMzZiNzMxMmVmYmFlIGxlZ2FjeS10cnVuaworNjQ0MzYgNGZmYTliYmE3YzVmMDBiOGNhYjdkNDhkMWJlOWEyNWNhOTBkYjg0YiBsZWdhY3ktdHJ1bmsKKzY0NDM3IDI0NTIwZTgyNDEwNzJlNzQwMTc5MWE1ZDY1OWZiMjI2YzAwMDQ4ZDAgbGVnYWN5LXRydW5rCis2NDQzOCA0MjY3YWRhY2RkNTI3OGFkOTdhYzU4NWZmNjE0ZDFlNjMwOTJmODczIGxlZ2FjeS10cnVuaworNjQ0MzkgYTA2N2RjMDQzOGQ1MzJjNTUyMzZmMzRhOTBlY2ZlNWQ1NmZhMDA0NyBsZWdhY3ktdHJ1bmsKKzY0NDQwIDc1YjZiMjczN2VhNzE5MzY4YjdmNmE4YTY4Y2VmYjNhNzJjY2Y4YjcgbGVnYWN5LXRydW5rCis2NDQ0MSBhYzZlYWIyNDczYzViNmYxZTMwMjJmNDQyYzNhY2M3NDY2NTk5MzkzIGxlZ2FjeS10cnVuaworNjQ0NDIgMTZiN2M1MDBiNzUzYTNjOTZlNjA0OGQzMzYzZTg5NDAwYjQ4NmQyNSBsZWdhY3ktdHJ1bmsKKzY0NDQzIDljNjdkM2RjZTkyNWQ5NGZmNTk1N2MzMzYwZjA1Nzk3MDY5NTBjZDQgbGVnYWN5LXRydW5rCis2NDQ0NCBhZWFkMGM3ODFjYmVmNjEyNmExMWY5NTBlZDEyMjkxOWMwZDZmZjNjIHB5M2sKKzY0NDQ1IDU1NmU0ZjZlYzlhMDhjYWNlYWI3OGQ0NjVlYWUxNTM2NjZhNjdjYzUgbGVnYWN5LXRydW5rCis2NDQ0NiAwMTYxNjZiN2I5NzZlMzNmMGJjNjQwYThhNDcyZGMzMWZkNGE2N2Q4IGxlZ2FjeS10cnVuaworNjQ0NDcgNWU4YTdmOWQ5NTIzOTMyMWY4MmU5NzJiYzE2YjY2YTU0ODI4ZTg1MyBsZWdhY3ktdHJ1bmsKKzY0NDQ4IDk2ODE1MjcxOTYzZDVjYWIyYWMzYzBjYjY3NTA5ZGMxMTUxZjYxNTIgbGVnYWN5LXRydW5rCis2NDQ0OSBlMTdiODFhOTVhZWQyZThhOTg1ODIzNTBmMTM0MTVhMTJmYTQ4ZjJiIHB5M2sKKzY0NDUwIDcwZTFhMzhjOTgwNWI2YTZjMTdhNDkyZmNjY2U0ZTJmNzJlY2Y5NDQgbGVnYWN5LXRydW5rCis2NDQ1MSBjNTdkMWU5NTRkOTM0NTdjMzEzNmRhYmY1ZjE2ZDRjMjRmNWIzODA4IHB5M2sKKzY0NDUyIDk2YWRmOTZkODYxYTQ0ZDFiMjllOTE5YWY4MGZmMDQxOTVhMzczYzQgbGVnYWN5LXRydW5rCis2NDQ1MyA3Y2RiZTAxYTQ1NzY0YjJlMzg0M2I1MTg4ODNmMjYyMDBlMDQ2YjdhIGxlZ2FjeS10cnVuaworNjQ0NTQgYWMxNThjYTY4NmNiNTE5YTM4MDEyMmI5MjlhNGNhZmEzZTM5YWFlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ0NTUgOGI2YzI4NTZkYmU1MTAzN2MyZmQ2ZWEzNWMwNDNjYWI4ZjEyYzUxNSBsZWdhY3ktdHJ1bmsKKzY0NDU2IGViOWZhZTJmYTNmOTY2NDJlYmJmNWFjNzFjYTVkNzI2YjkxOGIzYmEgbGVnYWN5LXRydW5rCis2NDQ2MSA2NWMyMzY2M2QwYmQ2OTgxMzJlYzc5ZjAwYjUxNGYyMzQ1MTFlODg4IGxlZ2FjeS10cnVuaworNjQ0NjIgZGE2ODkzZTIwMDRmNGNhNzA5MWQ5OWM0M2NjZDc0ZGQ2ODU0Y2Q1OCBsZWdhY3ktdHJ1bmsKKzY0NDYzIDY4Y2YzY2JiMjFkMjU4ZDhlMDIyMTZkNGNjZTNjN2I4ZDY5ZDhlMGQgcmVsZWFzZTI1LW1haW50Cis2NDQ2NCA3YjUxZWE4Y2M1NThkYmIzNGI0YzQwMjcxYWZmMmYwMmUxNWRiOTlkIGxlZ2FjeS10cnVuaworNjQ0NjYgYjExYjA5YzFlZmVmMmJlYjIzNTc4M2YzZDY3YzQ1MWU0MGVhNmQ2MyBsZWdhY3ktdHJ1bmsKKzY0NDY4IDg4YmQ4ZWFhNTE1MmVkYzU3OTcyNGM5ZTUzOTA2MzVmYzVjMzA2YTAgbGVnYWN5LXRydW5rCis2NDQ3MSBhOWFkOTlkMGM3MjI0YmUxOGFkZTIzN2VhODRjYjM0NzM0NWI5Y2NhIGxlZ2FjeS10cnVuaworNjQ0NzIgZTBmMWUxYzU2NmQ5ZDY3NTQzMmExNmY1NTE4M2NjM2MxMjExNGE3ZSBweTNrLXVybGxpYgorNjQ0NzMgZjg0NjkxZjQ4OWMzOGM2MDgzN2FkMDVmMTAwYTg2OThiNGM0NGJkNiBweTNrLXVybGxpYgorNjQ0NzQgZGQ5MDdkNmE3YTg1ZDE2M2M3ZTEyMWM1Y2UzZDBmZjNjN2YzZGNkMiBweTNrLXVybGxpYgorNjQ0NzUgZjAwMjdiZmRmOWJjNDQ1MjU2ZjQ3OTRlN2FjZjI5MDllNzc1MzVkYSBsZWdhY3ktdHJ1bmsKKzY0NDc2IDFmNjcxYzg1ZGYwNDdjNWI3NTAyNmMzNDY0NzIyMDE1OTJkOGQyZjYgcHkzaworNjQ0NzcgMWRiZDdhNTIyYTIzNjlmM2I1MjkwNTY5ZTY2NjE4YThiNDhkMWQ1MSBweTNrCis2NDQ3OCA2YzA0ZDE0OTk0ZDA4ODAxM2M0YjgxNmJjOGZlYzU0N2RhNWE2MWJlIHB5M2sKKzY0NDc5IDk2NzY4ODQ3OTg4MzBkODAxNjc0YWVlNWM5YzZiNzRjNTYzZWU1YzEgcHkzaworNjQ0ODkgNmUwNmQ0YTg2ZTNkMDMyOGQ4ZDIwODQwMDM4NjViYTYyYWJiZmI3ZCBsZWdhY3ktdHJ1bmsKKzY0NDkwIGIwMTU2OTMxMTRmNjc5N2FjNGIwZjFiMWUyZTFmMzFjNjMzYzhhOTYgbGVnYWN5LXRydW5rCis2NDQ5MSA3NTJlMWFiYWYxNWE1NmI1YjNmYWU4NDFkNzBhOTUyYmRjYjUwZDlmIGxlZ2FjeS10cnVuaworNjQ0OTIgMDk4MTczZTg0NGQxNTI4NTNjNTI5NjI3YWY4ZmE3MzZhZDNlYjdlYiBweTNrCis2NDQ5NSA1ZDVmNzI4NWY1YzU5YjRmNTE1NjY2MjRiZTk1NzhhY2E2NzFiMGVlIGxlZ2FjeS10cnVuaworNjQ0OTYgYzgzZWVmMDc4ZmQ5ZjBlY2E4OGVlNTg3M2U5MDY1YzE0NTllMTY2NiBsZWdhY3ktdHJ1bmsKKzY0NDk3IGIxYmRjYmM5N2ExNGMwOTRhYjA0ZTgyYjIxNjlmMDg2YzI2ZjFmN2UgcHkzaworNjQ0OTggNjhmZDNhYjg0ODRlZWI3ZDBiNWYzNjMzNzI3OGZmNmNmZWI0YThiNSBsZWdhY3ktdHJ1bmsKKzY0NDk5IDEyYmU0NGM2YTcwMmU4YjNiN2NhYWM5Zjc3ZjBjNDExZDhlODA0OTEgbGVnYWN5LXRydW5rCis2NDUwMCA3ZTc0N2RlMjMxYjM4MjczN2Y2MzE4ZjNiMjA1MGQzZjU2MWYwZDYzIHB5M2sKKzY0NTAzIDIyZmJkZGYxOGQ0ODhhMTAwMTgzMmU3NDc1YThjNTdlOTJkNTU1ZGIgcHkzaworNjQ1MDYgMjcwZmY2ZjRkOTlmM2ZkMGRmOTJmZjcyMjcwNjlmMjVlMmI1MTQ0YiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MDcgZDhhZmE0MWM2OTZhYmJkZWIwM2QyZGRjYzQ3NzFlYzZhY2IwOTA3ZiBweTNrCis2NDUwOCAzYjZmZmNmZTI5NzFlMWZkMzk5ZTAyZTFjYmZmYWI2YTQ2ZjFlZTc3IGxlZ2FjeS10cnVuaworNjQ1MDkgOTU3NGZlZDkzNjg4MzZhNWJmZjc3OTJmMmE3ZjkzMWUyNmY4MGI3YyBweTNrCis2NDUxMSAwYWY2ZjAzMDBlYWZmNDQzZDY4NmIyYTU4ZjdiYmZlNGI3ZGU3YjhjIGxlZ2FjeS10cnVuaworNjQ1MTUgNzc4OGU5ODkzYjg1YmI5MWM3NzNjNzFkMGEzNTNhNDVkMGVkMTI5ZCBweTNrCis2NDUxNiAzYWRhNDZmMjMyMWRjMjQ0NjgwYjQ3MmRiMGUwYjBhYjAzODNiZjFiIGxlZ2FjeS10cnVuaworNjQ1MTcgM2M4ZDNiOThjZmQ3M2NkMjIzNDZiYWVkN2Y3ZDVlYTEyZWExMDA4ZiBsZWdhY3ktdHJ1bmsKKzY0NTE4IDM4MGFhMmQxNjFkMzkyOTcyMzgwMDhjZTRkZTgxYTAxYzBmYjlmZDMgbGVnYWN5LXRydW5rCis2NDUxOSAwYjUyYmRjNGNkODkzOTk5MWI4YTRhYWU5NzUyYTYzMGYwMTkzMTM0IGxlZ2FjeS10cnVuaworNjQ1MjAgNjRhYmI2MWU5ZDRmN2YwNDczZjdiN2ZhNGM4ODEzNjMwZmI1YzJmYyBsZWdhY3ktdHJ1bmsKKzY0NTIxIDU3YzgyY2IwZmFmZmNlOWJmZDJjZDFkODliYWZlNzE2OTQzNDJmMGIgcHkzaworNjQ1MjIgMzdhMjFkMDk3ZDM0ZDM1MTQ1ZTY4YzY1Zjk2NTdlYzIwYzgyYjVmMiBweTNrCis2NDUyMyBlNWE1MWVkOWU2MzQyNzBlMjRlMzExM2EyYjNjMzE2NGNlNjM3OGFiIHRsZWUtYXN0LW9wdGltaXplCis2NDUyNCBkMWU4NjRhNWM2MGM4YjRmMmUwNzg4ODNmMzg3Y2Q3ZTA1NDM1YzA3IHB5M2sKKzY0NTI1IGZmYmQ0ZTMzM2UyZjliZDBlM2YwODgxNWJhYWY2MDE5M2FkZDc1MTggdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTI2IDdkZTAzODU1MDUyM2RjMmIzODhmNmQ0NWQ1NDI3ZjM3MGRlZTQ2NWQgbGVnYWN5LXRydW5rCis2NDUyNyBiZGUyYWI5NDM1OTNjM2E5YWMxODM3ZTVjNGI5MGRkZjMwMmFlY2I1IGxlZ2FjeS10cnVuaworNjQ1MzIgYjI2MTE2NDI1YjExNDM2MDA2NTFlN2Y0ODM2NTMzYmZlNGZhZjgwZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MzMgN2ViMzczNzY1N2QxMmVmYzgwYzAwMmYzYWE5NmVhYmQyNjZkNjM1OSBsZWdhY3ktdHJ1bmsKKzY0NTM1IDg4MjFiNDA1ZTBlNmNmOWU4NmE0OWE1NmEwNDU3ZmYzNWRkZjQyOWUgbGVnYWN5LXRydW5rCis2NDUzNiAwNjRiMGI3NWJhZDUzYjViYTczNjdkMWE5MmU1ZWY0ZDYxMjdiNjNhIHB5M2sKKzY0NTQ0IDhjOTI5Y2UwZmI0MWMwODY1MWU1YWJkMzVlODU3ZDgyNDkzMDRhNWYgbGVnYWN5LXRydW5rCis2NDU0NSA3MjNjMGZmNjk4YjdmNTZmODM1ZTRlNTFmMTA1NGU2OTExN2ViZjM3IGxlZ2FjeS10cnVuaworNjQ1NDYgN2ZiYzM3NGM5NTlkMmQ3NzlmNWNlNjY0ZjM1ZWY0ZmMwODA2ZjdlNSBsZWdhY3ktdHJ1bmsKKzY0NTQ3IDU4ZGMzNjdkYzFlYTAwYmQzY2M4MzUzZGM0YjI2NTJiMWM0Mzk5OWQgbGVnYWN5LXRydW5rCis2NDU0OCBjNGI3NjZhZmFjNmY2NDZlODcxYTEzMTRkNTQzZjY2MWZkYWQyYTNmIHB5M2sKKzY0NTQ5IGRjNDJlZmQ3MjhlZWI4MjJkNTYzNDJlMzYzM2JlOGM3YzUzMjYxYWMgbGVnYWN5LXRydW5rCis2NDU1MCBlZGQ0OGIwODQ5NGRhODk2Y2JmZTU4ZGQzMGJhYmM4NGI1MzY2MTMwIGxlZ2FjeS10cnVuaworNjQ1NTEgYmZhZjE0Mjk1Nzk0OWUwNDNiZDhjZmU2YzdjZGQ4ZTlmZGZmZGNmNSBweTNrCis2NDU1MiA2MDVhYjZmOTI4Mzg4YWY1ZjFkZmFhOTIyYzg5NWE0OWZkMDc5MTkxIHB5M2sKKzY0NTUzIGM3MTJiY2QzMjAzYjRjZTk4MDRjYWVmYTAxNzhjOGY2N2UwYjBjODMgcHkzaworNjQ1NTQgYzU2MDcyZWFhY2MyNjE4YTEzMzlkOGNhMjc4MDBkOTMzMTRjYzg0MyBsZWdhY3ktdHJ1bmsKKzY0NTU1IGE2OWJkM2FiOWY5OTdjZGJhYTE5NjM1N2NiNWYyNzExNmM1ZDMyNDYgbGVnYWN5LXRydW5rCis2NDU1NiA3MjQzNDAxM2IwMzBmZGM4ZDA1YTBlMjVmYTgyZDUxY2MwZWYyNTVjIHB5M2sKKzY0NTU3IDQzZjZiYjBlYWNiMmY0MDgzYjk2OGJmZDRiN2I3MTg2YzI4YWZhMjUgbGVnYWN5LXRydW5rCis2NDU1OCA1YjRjODcwOTkwM2QwN2E1MjUzZWUxMTQ2MzQ2NDRiMzZmZTQ2NDYxIGxlZ2FjeS10cnVuaworNjQ1NjEgODgzOTIwMjE5NDJhNmRmZGNlZTg2YTMxODY0ZDg3NmVhYTI3NzdmOCBsZWdhY3ktdHJ1bmsKKzY0NTYyIGVkNWRjMTNiODk5YmEyZDZiNTQ1YmY4YWExNzk0YTg1YzEyODdiZDMgcHkzaworNjQ1NjUgMWM0YmQ1MDJkZTYyOWIyOTBkYzg3MWQxZmIyYjIxMjk2YTc1OWI4NSBsZWdhY3ktdHJ1bmsKKzY0NTY2IDUwODU5YWU0YWViYmE0YmQ2MmEzNjVjOGQ5OTc2ZmYyMTA5ZjMwY2YgcHkzaworNjQ1NjcgODQxYWUxNzY3YjRjNTQ4MzhiZTA0YmYyNTA3ZWY5NjlkOTBhNDQ3ZiBsZWdhY3ktdHJ1bmsKKzY0NTY4IDI0OGI4YWRmY2M5N2EzOGY1ZjM4M2UwYTBiOGJhOWUxNWUzOGY5MTEgbGVnYWN5LXRydW5rCis2NDU2OSA5MDNiNmUyYTMwNGZiMGIzMDdjY2U0YzlhNWZkZjczZGY2OTg2NGY2IHB5M2sKKzY0NTcwIGI4NTc3MDQ1OTU5MWI4OGI2ODJiMDI2MjJmNzBjM2YzOTU1YTNjMDUgbGVnYWN5LXRydW5rCis2NDU3MSAyYzhlM2NjZWFjNGViNGUwNDAxZTRhODVkMWE4YWZiYTYzMmRiYTM4IHB5M2sKKzY0NTcyIGFmY2Q2OGE4N2VlY2FkMjExMGUxZjg5ODU4ZGY1Nzk5NjE3YjRlMDUgbGVnYWN5LXRydW5rCis2NDU3MyBiZGJiNjZiYzM3ZGNlMWIzZmNhY2NlMjlkNjc3YTU4NGExMDJiNDJlIHB5M2sKKzY0NTc2IGFmYmQ1MGFkNGYzNDg0MDVkNmJkMzViOTgyN2Q1MzM3MmRjYWM5MTUgcHkzaworNjQ1NzcgMWRkMTBiMDRkYjQ3NDFiOWZjOTNkNDIyODU5YjIwZjQ3NzdkZmQzOCBsZWdhY3ktdHJ1bmsKKzY0NTc4IDhhMjgxYmZjMDU4ZDdmMGQxZWE4ZjUyZDliNmNkMTJmMmM1NWU2ZTggbGVnYWN5LXRydW5rCis2NDU4MCAwZmM3ODYxZWNlNWY2Y2YwZTYyM2FiNzU2N2Y4ZmFlNzNhYTU3ZDgzIGxlZ2FjeS10cnVuaworNjQ1ODEgNTVhYzZjN2NlYjU5ODNjMjVmMWZhOTZkNmY1YzI0NTlmNjI2ZmFlMSBweTNrCis2NDU4MiAzYzQ5YWYyZDViZjBhZmU2NWQwYTgxMTA0M2YxN2VlNTNmM2U2NjZjIGxlZ2FjeS10cnVuaworNjQ1ODMgYWQ5YmViNDFhYWMxMDUwMGY3NjU5NTc1MmQxNjFlMWJjZDBkNzFkMSBsZWdhY3ktdHJ1bmsKKzY0NTg0IGUxN2FkZmFmNGY2NGM5YzRhNDE3YWIwN2E2OWVjYjA4NTk0YTZiNTQgcHkzaworNjQ1ODUgZDk0ZmE0Y2I1MmU3MzQ5YTlkMDkwYzM3MmIxNzI5MGFmMmQxZGNkMiBsZWdhY3ktdHJ1bmsKKzY0NTg2IGVmOTI3MDM3NDg0NDRjY2U5MThlMWMyMzYzNzE2ZjFkOWY5ZGM0YmEgcHkzaworNjQ1ODcgZjVmNzBmMjBiNjc4Zjk2NmY2NmE0MWJmZmQ3YzAwOWU1NDIxNzcwNiBweTNrCis2NDU4OCA0ZDJkMGEyMWQ0OTQ4ZGE5YzJjN2IxY2YyN2ZiNGQ0N2Y0ZDQ1YTYzIHB5M2sKKzY0NTkwIGJlNTViN2MyYzhlNjkyNWNiYmU2OGY1OGMxNWUwZTc5NDY1NmZjZjAgbGVnYWN5LXRydW5rCis2NDU5MiA3M2NiY2RlNzVlMDU4YzM4NzQ2ZWFjZWZmZTQwOTJkOTA0NDU5YTZmIGxlZ2FjeS10cnVuaworNjQ1OTMgMjk3ZTEyMThlZmU1MDlmOTM3YmY4MTg2ODE3OTQzZGQ2MzExNmUwZiBsZWdhY3ktdHJ1bmsKKzY0NTk1IGUxNDczOWM1ODQwMTM2OTM0NzViNjE4NDMzYTJmMzg4YjNiOWE5ODAgbGVnYWN5LXRydW5rCis2NDU5NiAyNTQxMmM2ZDI3NzYzNTY1ODBmODI3MDE2NTc4ZTY3ZjhmMjJlYjQ1IHB5M2sKKzY0NTk3IDgyYzQ2ODFjZDliZDA3YTNhZDdlZDVjMWU2MWVkNDNhYTMyZDY4NjcgbGVnYWN5LXRydW5rCis2NDU5OCA3NjA0NTE1YTgxOTg1YWI3MDcyN2MzZTRhZmNiZTc1Y2YwOGM4Yjg1IGxlZ2FjeS10cnVuaworNjQ1OTkgYTkwMGJiMWRlZDlkOWI2ZTdlOTZmZWQ1YTkwNTVhYzliM2FhYjhhYyBweTNrCis2NDYwMCBiOWQyZmY1ZTNkY2ZjMGFlOWVhZGU5NTUxNjc2MDUxYzRmZDBmYzcwIHB5M2sKKzY0NjAxIDhjY2IzNTczOWE5NmYyMGIyYWQ3NjYwYmNkMmVlMDM5NzgyMzZjYWUgbGVnYWN5LXRydW5rCis2NDYwMiBlMjliNGNlNjQxZjk0MzE5NWY4NTFhODE0YjFiNGM2YmM2ZmRhYjUyIHB5M2sKKzY0NjA0IGZkNzljNGQ5Nzc0NWFkMWVjZGZiNzk4ZTI1YjgyYTA0YmM0ZTI5ZTggcHkzay11cmxsaWIKKzY0NjA1IDhjZmI4OWI2MWMyZTUxYjc5MmIxZWJmMzlmZjYwZDI5NzZlMjgyZTkgcHkzay11cmxsaWIKKzY0NjA2IGI2YWQ2NjRjYWU0OTk4ODI3MmRiOGZkM2EyYTk3NGU0NjJiNTk3ZjEgcHkzay11cmxsaWIKKzY0NjA3IDdiMmYyMTg5NTM5MjNjOTBlNDExZTliMzY2NjYxMzYxZDcyY2NjMDQgcHkzay11cmxsaWIKKzY0NjA4IDczOWNjOWZkZWZlNWQ0YWViNjQxNzA4YjVlOTA2ODVkZGJhZjkwZDEgcHkzay11cmxsaWIKKzY0NjA5IGFkOWZiOWYxZDZkM2JkYmFmNTMxNzA0NDUxZDZlZWNhYWJhMmVmZDcgcHkzay11cmxsaWIKKzY0NjEwIDQxNmE1NmViMjRmMzNhYWRiZmNjMzhjMjFmYjE5N2Y0OGEzNTQyMjQgcHkzay11cmxsaWIKKzY0NjExIDQ0NmUzZGFjMGMzMWJkNDlmYjM2Njc5ODE4NzdlNjkzNmM2M2NlZjMgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjEyIDM3YzdkMTc3NDBjY2E2ODk0MjYzNTczMTdkY2VhZmQ4M2QwMWY3MDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjE1IGUyNzE5NzZhYzM3MjRlYTBiMTQzMzc4NjdlMmVmOGRhNzkzZjEzYmQgcHkzaworNjQ2MTYgNWY3NDY4YWMxNGNkODdhNWEyMTIzMmM1OWM5YzExN2VkNDBlZDE2MiBweTNrCis2NDYxNyA5MTNhYTI3NGVkNzdiNTdkMWMzMWZiMDk3ZTFlNDRmNzNjYzhkNWVlIHB5M2sKKzY0NjE4IGFjZGZmYjViNDM1MjIxMTNkZmRiNWRkMDViYzhmYmQ5NmQzYzllZjQgcHkzaworNjQ2MTkgZWVkNTMxN2FjODM3ZTI2M2QzMGVhOTAwNDhmM2ZiYmVjN2M0ZWE3OCBweTNrCis2NDYyMCBmOTJjODAwOTVjMTRjOWQ5MWI0NWM1ZGRlYTUxMzQ5ZTUxNDE5NTE5IHB5M2sKKzY0NjIxIGJiNjVmOWI3NmMxZmE1MWEwMmRjNTgzZGQwNTE3ZjUzOGY3ZTFkOWYgcHkzaworNjQ2MjIgODAxMDlkNDA0NGNkYTRmZTkxZTRjNGE2N2I0OTAxZGQxNDk0YWU3ZiBsZWdhY3ktdHJ1bmsKKzY0NjIzIGUxMGUyNTdjYmY2MTVlYmI2NzEwZWRiYjYwYjY0OGViYWUzMmUwNDYgbGVnYWN5LXRydW5rCis2NDYyNCA3ZDE1MzBmYWMxZjY2ODQxNzY5MmNjOTQ0NzEyZDcxODZjNjNhNzJkIHB5M2sKKzY0NjI1IGU2OGZlOTBmMTVhYjAwZTAzMjE4NmY4NTkwZWQwY2U0ZWJiYmRkOWQgbGVnYWN5LXRydW5rCis2NDYyNiA0MjMwOTQzN2YxY2EyNWMwMTYxMzg3NDk4ZDJiMzYxMmYyNDFjMGRiIHB5M2sKKzY0NjI3IDdlMjk5YWIzNWQ5NWUxOTk4OTk5NzkwZGM2ZDM5ZDhlYmI0YTIyZmEgcHkzaworNjQ2MzAgY2ExMzUzYmZkNDhhMzIzMjMwMWRlZDgxNzlkMGY1NDRjYWEyMGEzMSBsZWdhY3ktdHJ1bmsKKzY0NjMxIDcwMzU3ODExNzc4NjI3YzFhMjAxNTE1MzMwM2Q2YTZlYmVmMDczZGIgcHkzaworNjQ2MzIgZDY2NDA0OWVjYWNhZDhiZTE5ODk5ODJiNTBlMWM0Zjk5MWM4YTMyMiBweTNrCis2NDYzMyA3ZGJkNmI2MDc3MDZhMzYzYmFhNmQ4ZjEwODc4YWJlNWU0NmU2NTE5IGxlZ2FjeS10cnVuaworNjQ2MzQgNzBhNGVjNDEyODgyMmFjY2I0NzU0ZDU3NTBlZmY3MjQ1NzgxNWM3ZSBweTNrCis2NDYzNSBjZGE1NTZkMjM5MjQ0N2I5OTA0MDE2OThhZmM4YWE1ZWQxMzY5NmRhIGxlZ2FjeS10cnVuaworNjQ2MzYgMmQ0ODc3Zjc1MDBlZmFjMzgxMjNkNGY4YmM0Y2EyNTM1M2I5MTgzNSBweTNrCis2NDYzNyA2YzM4NjA5MTQyOTJjNmJlODMwNmFlYzYzNjZjZGMwNTJiMmQzNzg2IHB5M2sKKzY0NjM4IGEwNmEwZTExMzJlZTAyZmJhZDExZjgyNGM3NzI1MmFkZDlmZGE5ODIgbGVnYWN5LXRydW5rCis2NDYzOSA2MGZkMDg4NjgxMWM3NWQ1OTYwNzBlNjY4MmQyZDhlYTU3Yzk5YTk3IHJlbGVhc2UyNS1tYWludAorNjQ2NDAgNGE4MzI5NTM1MjM0ZDc1YjVkNzZjNGRiODc4MjAxMTBmM2FjNjZkMCBsZWdhY3ktdHJ1bmsKKzY0NjQxIGU4YmVlMzA5N2Q0NDBlNTNiYmYzZjVlODk2MDU4NWVlZDVhNGI2NDMgcmVsZWFzZTI1LW1haW50Cis2NDY0NyA2Y2QzY2JlMDcwMzVlOTRmZGJhODgzZGRhNDdhZjkzZDA1YWRmMjliIGxlZ2FjeS10cnVuaworNjQ2NDkgODAxNzU0MjAxYjExNDEyODYyYjM1OWIwZTM5YjgyMmFiNjk5MmZiMCBsZWdhY3ktdHJ1bmsKKzY0NjUwIDJkMDM2Yjc4ZGZhNDBiZDYxMjVkMmQ2MWY4ZTA2MWM0NGI0OTFlOGMgcHkzaworNjQ2NTQgYjdmM2Q5NzBlNDRmMDMxNzBmMzQ2Y2M4YWRiODg2NDViYmM3MmZmMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ2NTUgNjVhZjU0NGRhMTIxZDQ4NTE1MTk0ZDJlZDgxNjlhNDE2MGM5NTczNSBsZWdhY3ktdHJ1bmsKKzY0NjU2IDVkOGY0NzAwNWI3M2ViMGM4NTk3MGQ2YWQwYjJhYzE5Zjg2YTAzOWMgbGVnYWN5LXRydW5rCis2NDY1OCBmOTI3MjQwZGVmMWI3M2M3ZWQxOWRiOGI5MDAyZjI1NmUxMzgzZmUxIHB5M2sKKzY0NjU5IGIzOWNlZWM4MWMxNzRmODFkZGUxMmQ5Yzg4MTkwZTYxMWZhNjdkOWQgcHkzaworNjQ2NjAgZTIyZGVhZWI2YzFiMDJmMjE3Yjc0NDI5ODk4MTFkYWY4ZWFjYzIzMiBweTNrCis2NDY2MSBhZGY0OGYyZmFkZmNiYmU5NTc0YmIzMDZlZWU2OTIwMDU5ZDJhNDRiIHB5M2sKKzY0NjYyIGRhZjlmYWQ3YzU1MTkxMzZlMjI4OWNhODlhMzcxYWE0ODBhZmFlNzYgcHkzaworNjQ2NjMgODMyYWU1MTNkMzQ0NDUwMTY2YTdmNjA1Y2U0NTcyYmYyZmNiMzc2YiBsZWdhY3ktdHJ1bmsKKzY0NjY0IGU0YmJiMWQzZGQxNDVjOGM4NmNmYWMwNjUxNmE1NmUyNGQwOGQ1NDEgbGVnYWN5LXRydW5rCis2NDY2NSAzMDk1NDJmZDdmZThkMzM4MDY3NWJmM2NmMTRhN2MxMTMzNmQxZjY3IGxlZ2FjeS10cnVuaworNjQ2NjYgODFmZDhhOGJhYTlhNzMzY2I1MTljYTJlODExZDlhNThlYjQ1Mzc1MCBweTNrCis2NDY3MCAxODk5YmUzMTIyYzIyMGVjOWZkN2JjOTk4MTg4NzY3YmQzZTBlMjk4IHB5M2sKKzY0NjcxIDVmNGE4OTgwYzFhY2JmNjk5N2MwZDdmNjM4ZmZhNDBkODVjNjI1MjYgcHkzaworNjQ2NzIgN2U1NjAxNmE2NTY1OWUwZDJmZTBhMGEwNjg5OWM5N2MyNTIxNzgzOSBweTNrCis2NDY3MyA3MGUxZDJiYmJjMzJmYWQxNThkOWIzMmE0MjAxMzRiYjI1N2RjMTEyIGxlZ2FjeS10cnVuaworNjQ2NzQgNDAyNWY2Mzg5MTFmYTE5NjFlMTEzZGI5ZDA4ODE3ZjE5MTAzZDZiNiBweTNrCis2NDY3NiBiZDIzMzQxMjBhMzBlN2M0NzFiNDc1NDNmMTc2OWI0YmVmNGYyZjZjIHB5M2sKKzY0Njc3IDY5MDFkNWZmMGY3YWI2YTkzMDBkYzU1ZWZjNjU3MWFjZGYxMDAxM2YgbGVnYWN5LXRydW5rCis2NDY3OCBmYjAyZmVkZmU2NDdmMmM4ODJmMzQ0YTY3N2ViNzM1NmM3NTI5ZDNhIHB5M2sKKzY0Njc5IDFmOGJlMjZkMDk4YWNhNmJlZTZiZDFiMzdhMGVkZmE5OGY2OGY5YWUgcHkzaworNjQ2ODAgOTg4NjBjZmExOWZkMzhiY2ZiYzgwMmRkYTQyOGIyODZiNTc2YjE0ZiByZWxlYXNlMjUtbWFpbnQKKzY0NjgxIGFhMWZiZTMyMWFjZjFmMGEyZjRlNDQwZjllNDk5NGVlMDc5NTEwOGMgcHkzaworNjQ2ODIgMzUwYTI4OWIwZWQ0NWM0NGU0N2U4ZmI5ZTlhNDE0ODFjMGI5Mjk2NSBweTNrCis2NDY4MyBlZjhkNzQ4N2EwNzc3M2MzZjgzMjQzNTU1YjUxMzE1Y2RkN2ZiYmM2IHB5M2sKKzY0Njg0IGE1NzIzYTgzNjdlNzZhMTg5NjYzNDlkNWM5OGQzMjBhNTRhMGRhMjggcHkzaworNjQ2ODUgNDIyNGZmNzdhMWRkY2ZlZjI1MGUxOWY2YThiOGExMjRmYWUyNzY5NyBsZWdhY3ktdHJ1bmsKKzY0Njg2IDg5M2Q5MGI3NzMxYmQwMTVmMDYxY2M4NzgzM2FmZjJlOWY3ODA2NDMgcHkzaworNjQ2ODcgN2QxZTYxNDkyYzdkZmQ3OGIyMWQ0MTE5NjMyNWYxZTE5MmY0NTYzMCBsZWdhY3ktdHJ1bmsKKzY0Njg4IGFjZmFkODY0MGUyMWZmOWJjZTRmZWIzZTM1ZjRkZGVlMmFiMzgxYzIgbGVnYWN5LXRydW5rCis2NDY4OSBlNTAyMDQ2NjY4YjEwMGM4ZjY5NmY5NWEwNTAyZjQ2NzI3ODg5Nzk5IGxlZ2FjeS10cnVuaworNjQ2OTAgODA3ZDY5OTViYWZkM2VlZDI2NzRkOWVhMDA4NjkyZDMzMzUyM2I5OCBsZWdhY3ktdHJ1bmsKKzY0NjkxIGNkYWFjNzlhNzIzNzY4ZDkyODMwMTM0NjNmYjc0NDc2NzlkMjg3Y2YgcHkzaworNjQ2OTIgMmQwYzM2NDMyMjNmNjkyNjg1MDg2MzIyMzdhMjc3MzI0NjA4ZjRmYiBweTNrCis2NDY5NiA0MGVjYjkxMzM5OWU2NzMxMzRiNjY3NGNkZmIxMmY5MjNjNDBiOGVhIHB5M2sKKzY0NzAwIGIxYjNhZjgyYWRkNmZhZDNiMjQzMzgwNmI1OTdmMDA2MTYyYmFmNmYgcHkzaworNjQ3MDEgNGU2ODU5YzZkMzhjOGEyY2FhOTM2YTcyZGUxYjIyMzgwNmQ1ZjMyMSBweTNrCis2NDcwMiAxM2M5ODUyZGU4MWEzZDAxYTI4ZjkyZjYyMjNlZmM4ZTA5YTllMjY5IGxlZ2FjeS10cnVuaworNjQ3MDkgZWE3Y2MxOGM5YWM4NmYyMzJjY2JmYTVhOTFkMjhhMDQ4YWM4MjI3YSBweTNrCis2NDcxNiBkYzliM2YyODkyYjhiMGM0OWUzMmI0Njg4YmVkOGIyYzVjNThlYTAyIHB5M2sKKzY0NzE3IDA0ODE3NzkzYjk2MjViMjQ2MDhkYWExN2FiMzJlOTEzYTkxN2U3M2EgcHkzaworNjQ3MTggZjI3MjA2MTAxZmY5NDNjMmEwMmViNGI4NTNhNDRkNjdkYmEyMmZkNSBweTNrCis2NDcxOSBjOTM1OTZlYzFkM2RlNjY1ZDM2MTBjMmNiYTNkMTg0ZWQ1M2M5NWRkIGxlZ2FjeS10cnVuaworNjQ3MjEgNmYxMzJhMjZiMjJmNzdjZTQ0ZmYxMjg2YWZmNTJkMzVhZDZjZGU4NiBsZWdhY3ktdHJ1bmsKKzY0NzIyIGQ3NTI2NjcwZmYwYWRlZWRlODJkOGQzMmYzMjdmMGY4MWYzYTI4M2EgbGVnYWN5LXRydW5rCis2NDcyNyAzYjAwZTlmOWQ2OTI1OWYyYzUzMmY1ZGFjOTExYzEyYmNiMzhhMTM2IHRsZWUtYXN0LW9wdGltaXplCis2NDcyOCA4ZjEzNDY1MDIyMzQ1ZGRiMzBmYzE2NTQ5OWY2N2ZmNWViZjgwMTgzIHB5M2sKKzY0NzI5IDRiZjg0MDM1Y2I1ZjU4NDFlYjcwOTc4ZTZiMDViNDNmMTE4OGYyZjAgbGVnYWN5LXRydW5rCis2NDczNSBmNzcyNDc2YWQ5MGRmOGU5Mjc2NDA0YzllMDY3Yjc5YTM5MzUxNmJmIGxlZ2FjeS10cnVuaworNjQ3MzYgMjI3OWRkNGEyZjczMmI3NTM4Nzg5ZGVlNDI0N2MxNGY3ODkzZmRkOSBsZWdhY3ktdHJ1bmsKKzY0NzM3IDQ3MjFmMjdlZDZjMjdlODc1M2QzYWFjNjA4OTNhMDNhNDkwOWZkMTQgbGVnYWN5LXRydW5rCis2NDczOCBmYjI3OTI0MmY5NzEwMmQwZGE3NjUyMDAzM2E2YmRhNzliYTFhMmFjIHB5M2sKKzY0NzQyIDQ4MDBkZDIyZjQ1NTgzOGYyZDIwYjVlNjBkNTRkYTdiN2U3ZjExYmUgbGVnYWN5LXRydW5rCis2NDc0NCBkNjY1NzlmOTI1YzQ2Zjg1YjhiMWU4ZGE0MWNlYjRhMzU2MTMwYjYzIGxlZ2FjeS10cnVuaworNjQ3NDUgMjQ3NjM3M2Y1NTRkMTUzOTFmOGJiMmJhNDgzZDgwZmEyM2Q3MWE2NyBsZWdhY3ktdHJ1bmsKKzY0NzQ2IDQ1YjY3MjM2N2IxZjdkNTIyYzNjZGYwNWY1MGExZjc5YjQ4YWQzOWEgbGVnYWN5LXRydW5rCis2NDc0NyA0YmEzZDA3Yjg3MWY4NzM0Mzc0OTNiYTZlMzRhZTgyOWFjYWFiNjUxIHB5M2sKKzY0NzQ4IDRhNzJiZTFkNWMyMTgxMWM4NTNmOGYwZjkwZDRhZmVkMTdhMjNmOWQgcHkzaworNjQ3NDkgNmFlNzFmNTIyYjJmMGFiZmU2ZDAwOTUyZDZlZDE1ZmFmZWUyOGEzZCBweTNrCis2NDc1MSBmYTM0MDg4MzgwZjliZjMwOWNkODEwNzI2NWJkNjIwYWRhNDgwYzFkIHB5M2sKKzY0NzUyIGEwODgyYmZhZjU0ZDhkN2RhMmY5YmUzMDEyOWVhMDFmNzY0Mjk5OWQgcHkzaworNjQ3NTMgMDczODExOWMxZWY4ZmQ5NWE4ODEzMjJmOWM1YWVhNTZlMmI4MDljZCBsZWdhY3ktdHJ1bmsKKzY0NzU0IGEzMTJlMDNhMDYzMzI1MWQxZmUzZDI1ZDdhODZmNmRhNjg3MWEzZDcgcmVsZWFzZTI1LW1haW50Cis2NDc1NiBjMzE5M2I3MTU2YmI2NjUwNDEzNGYyMWEwZmY5NmZmMWQxYTg2MzMwIGxlZ2FjeS10cnVuaworNjQ3NTcgYzNiYzA1MjM3MjcyZWRlZTAyMTg2MmNjNzc0YmNlNDZjMTgwZDBhOSBsZWdhY3ktdHJ1bmsKKzY0NzU4IDJiOWUxMzBlMjFiYzU0NjI5Nzg4Yjk3NWM4Y2VhYzIzMmQ5NDc3ZWMgbGVnYWN5LXRydW5rCis2NDc1OSA2YzlhZjE0ZDdiODEzNDc2ZTIxOTgyYjk1NmMwNWQyMTkxN2M5N2JmIGxlZ2FjeS10cnVuaworNjQ3NjAgNzFkMzFhYjczNTA3MzFmYWNiNGZjNzA4ODM2YzZlNTY1OGU5M2I4ZCBsZWdhY3ktdHJ1bmsKKzY0NzYxIDNhZTkyOWMwZWU3YTI4NWViYmU1NmI5N2Q0NGZiMzA4ZjliYWUyZmYgbGVnYWN5LXRydW5rCis2NDc2MiAwYzYyYTI3OWU0ZGFmZDIwYTIyZTUyMTRhYzExZjY2YzIwZmI3Yzk4IGxlZ2FjeS10cnVuaworNjQ3NjMgMzk0N2JmZGRhNzZkMjdjZTIyYWNiZjVmZjQ4NzNhYjRlOTdmMWNkMCBweTNrCis2NDc2NCA2NDBhZjU0NGE4NjFmNzA0YTM2M2FhYTMzZTEyNjg4MTczNjM0M2RjIHB5M2sKKzY0NzY1IDIyMzFhNWNlZTNmNTZlYzgzMTAwODczOGEyOTJlZmYyYzQ1OTA4YjMgcHkzaworNjQ3NjYgNDYxNGFjMzEyY2NlZTk4MDI2YzJhMDI3YmVmZTEyZjYwOTA0ZjQwMSBweTNrCis2NDc2NyAzMGZiZjhlNDU1NDlkMDI5Njk0MDE2ODcwNzMzZWU5ZWM1NmRkMGM0IGxlZ2FjeS10cnVuaworNjQ3NjggZDdmZDMyY2UwN2FhNjJhZjVlZmU5NzY5MGJlNDY0ODg3YTRiY2JhNiBsZWdhY3ktdHJ1bmsKKzY0NzY5IGEyNDRkNmIxNDUwMThlODBkZGE2MzJmODc2NDM3MGY1ZDFlM2RlZjggbGVnYWN5LXRydW5rCis2NDc3MCA1YjJmMDNiZWJlM2JhZjZiYjU4YzE5YjI3ZTY2ZDVhMmY2YzVjNTlhIHB5M2sKKzY0NzcxIDA4YzVjOGMxMTRiMjlhOGU4MjkwM2JjMWY3M2U2NDE5NzZjNmM4NzQgbGVnYWN5LXRydW5rCis2NDc3MiAyNjc5OTg2MWQzMThjZTA3YTQ2M2I3YTk0YWI5NmQ0ZDA5NWQ3YWY4IGxlZ2FjeS10cnVuaworNjQ3NzQgNjVmNjljYmFmNGYwZDViM2I2ZjgwYWE2OWFmN2M2OGI2MGE1ODZhNCBsZWdhY3ktdHJ1bmsKKzY0Nzc1IGJjOTQzYmJmZGIxZWNiMzMzZWU4YmFjYmEyY2U0NDgzOGI5YWY4OTkgbGVnYWN5LXRydW5rCis2NDc4MSA4M2Y0Yjc3N2Q5NGM1ZTM1MjNlOWJkNmI1MDM1YzlmYzlmMWNlNjBmIHB5M2sKKzY0Nzg4IGY4Yjc0MzYzMjU5M2FhNDEzN2EzZGMwYTBmYWUxY2Y2YTA5OGMwMjQgbGVnYWN5LXRydW5rCis2NDc5MSAxYmM1NDM5NDRkYWEyOGRkMGRhY2RkZDlhMDZiZWZjNDI3MTdmYjAxIGxlZ2FjeS10cnVuaworNjQ3OTIgNGMwMWQ3OGVjNTlmZmY0ZjAxZTYxMzU1NjA1ZGQ0ZDIxODA3MDg0YSBweTNrCis2NDc5MyAzNjE4ODU0NGM1NjEwMjZmNmY4M2Q2ZWZhZmQ5Yjg0YWY2N2U4YmY2IGxlZ2FjeS10cnVuaworNjQ4MzUgYmVkM2RmZDk5MjgxZTQxZTc1OGMxNDdjNzAzODM0NTk3NjRkOWZlYyBsZWdhY3ktdHJ1bmsKKzY0ODM2IGMzMmU5MTY1MGMxNDRiOTI3ZGJjMjIyNTc5N2IzMTkxYmJhYmUwMzMgbGVnYWN5LXRydW5rCis2NDg0MiA2OGM3OTY0ZDI1MzQ3ZDI3ZDFiYWFjOGQ5NzhkMDcxM2NhMjk2MmI5IGxlZ2FjeS10cnVuaworNjQ4NDUgOGU3MzgzY2JlNTZlNDlhN2VkZDI1Mjc4MjRmYzZkNGMxNjU3NjAxMSBsZWdhY3ktdHJ1bmsKKzY0ODQ2IGJkNDM1ZThiMmUyODAwNmRlZWM2NDAwN2MyNDdlNWE0ODc0YjllNTYgbGVnYWN5LXRydW5rCis2NDg0OSAwNWZlZDliZjQ4OWQ3ODNlMWM0NjY2NGYzZjFiNzk5MDUxM2ZjNmIyIGxlZ2FjeS10cnVuaworNjQ4NTMgN2NmYzI4YWMwNzE1MjAxYzkzNmQ3YTg0Mjk4ZTlhNWUyNjRhOGUyMyBsZWdhY3ktdHJ1bmsKKzY0ODU0IDEyNzQyMTFhMzg4ZjlhZDFmODY2Njg4ZDkwNzg1MzNiNWVmMDJlOTIgbGVnYWN5LXRydW5rCis2NDg1NSAzMjhmMzNiYWZmYTM4MjdkNjgxOTM0NzZmN2RiYjRiMDI0OWYwOTljIGxlZ2FjeS10cnVuaworNjQ4NTYgZmQwNTRlNzNlMmYyMzllMzM1ZjU0ZmRmNDZmYjQ0MzdmOTJlMDEyNCBsZWdhY3ktdHJ1bmsKKzY0ODU4IDFkNDRlMDA0YzkxZjhhMmU5ODU1YTdiODE1Y2I1YWM1NGRlM2RhMDggbGVnYWN5LXRydW5rCis2NDg1OSA3NjMyNWMxOWFmODQwODRkM2Y0MDhjOGQwZWI3ZmIzYTI2NWU1YWRmIGxlZ2FjeS10cnVuaworNjQ4NjAgMWNkNGQ2MjQ0NGI2MTQxNDE3MjUzZjJiZWJlZWY2NDY2M2U5ZTg5YyBweTNrCis2NDg2MSBlMTYzODRlM2VlMjJhNjY0NjZlZmI0OTk4ZGY2ZTEzNmFjOGRkZTcyIGxlZ2FjeS10cnVuaworNjQ4NjIgNTQ1ZTQ0MjM2ZjI4NmQ1NmRiMmI5ZTdjYmQxNTNmY2IzNzg0YzZiNSBweTNrCis2NDg2NSBjMDNiMjIzYzJiNjkwYjViNTIwMDhlNmE2N2NmNmZlMGRhZGExY2ExIGxlZ2FjeS10cnVuaworNjQ4NjYgMzgxYWUyYWQ4MTBiNzYzMjdlM2Q5MmY5MzJjM2ZhOGM5NTc1YmIwMCBsZWdhY3ktdHJ1bmsKKzY0ODY3IDUzYjUxYzIxM2IzZGIwMThjNzcxMDc3ZmFlM2I3ZjE5NmI2OWM4MjMgcHkzaworNjQ4NzEgZTI4NmJkMGY0ZTFiZGY2MDExZWE0YzQ5Zjg2ZDc1ZTE3MmE0YmVkNSBsZWdhY3ktdHJ1bmsKKzY0ODgwIDEzZTUyNWQ5NzRiMTU4YmY2ZGFhNDJlOGUzZDkyMzQ3YTgxYTM4NTYgbGVnYWN5LXRydW5rCis2NDg4MSA0ZjgwNGVlNzcyZWIyZmNiY2ZmMmQxZDBkYjViMWM4OTYxNGNlNTMzIGxlZ2FjeS10cnVuaworNjQ4ODIgZmFlYTZlOWRhNjM5YWYxZDAxZDJhNmI0MjMyMTNlZWM2NmU5MmFhOSBsZWdhY3ktdHJ1bmsKKzY0ODgzIGM2NTliNTM4ZjdiYWM1NmE3YTdjOTUwNWU5ZWRkNWFkMGE3ZDQ1MjAgcHkzaworNjQ4ODQgY2Q3NzYzYjA1NDQ2ZjAzODg0NGRjMzNmMzBkYWNkZGI0ZTk2OGE0NyBweTNrCis2NDg4NSA4ZGE1ZDM4ZGRjYTNiOGRjZDE0YmVhMGU2YzQ3MGQ3ZTJmODZiZmIwIGxlZ2FjeS10cnVuaworNjQ4ODcgOTBiNmQxOWYwNmMxZDlmZjI4ZWY2ODEyOGNmMDk2NGNkNTRiY2UzZCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ4ODggYTc0N2NkMDY2ZjMyMTFmOTBkYTBiMDBmYTQ0MmI5YzUyNmU4NzQ5ZSBsZWdhY3ktdHJ1bmsKKzY0ODk2IGFkMzA5MTIyNzg0Y2VmZjU2YmM2Njk0ZTI3ZTBlMDExNzgyODI0NDcgcHkzaworNjQ4OTcgMzhkM2E1MGRlZmVjOTdmNDY3OWU3OTFiYjRlMmU3MTg4MjE0MzQzOCBsZWdhY3ktdHJ1bmsKKzY0ODk5IGQ2ZGZmZGIzMGJkZGQ4YWRiZTg0NWZhNjcwZDVlMmRkZGQ2MTRhMWYgcHkzaworNjQ5MDAgYmMyN2M4OTY3Y2FjMWZhZmFiNWI5MGY4MzUyYWRhMmJkYjkwMzFiOCBsZWdhY3ktdHJ1bmsKKzY0OTAxIDJjOWQwYTdlM2JjNGQzZGQzZmYwNDc5MDVkMGM0OTFmZDc1MmFjNGQgbGVnYWN5LXRydW5rCis2NDkwMyBiZWIwZmY1YTJhMGY1OGM1NmJiZDk4OTU2NjQ1ZDZhYmJjZWIzNTFjIGxlZ2FjeS10cnVuaworNjQ5MDQgNWYyNDMxZGU2M2QwYTUxNDhkZDJmM2NjNDYzYzNmOTI2NzVlOWI2NSBweTNrCis2NDkwNSAyZWE4MjlkZDZiNWExZGU3MTVkZDc0NDMzMjJmZjQzNzEwMzE5OWIxIHJlbGVhc2UyNS1tYWludAorNjQ5MDYgMTljZGFhZDc4OGI5MGYwYTMwMTAzZjIzYzIyODE2ZDhmNTJkMzIzNSBweTNrCis2NDkwNyA1ZWUzM2I5ZGRlY2M2OTM0Zjg3ZjYxOWIyYjYwNzZiM2Y0N2ZlMWI0IHRsZWUtYXN0LW9wdGltaXplCis2NDkwOCBhNzBkOTA1ZTUwNDE4YjExOTQyYTA4OGE2MjAzMDc3OGIwNzQxM2U2IHRsZWUtYXN0LW9wdGltaXplCis2NDkwOSBlMjI5NmI1MDA2M2RmM2U3YjlkNGZhNzEzOTg3YjJjNjNlZTUxNzkxIHRsZWUtYXN0LW9wdGltaXplCis2NDkxMCBiMzVjOGIxOTQwYWY1MjEwMGU5ZTNhZTk3OTMzZjZhOWJmMzQ0YjI0IGxlZ2FjeS10cnVuaworNjQ5MTEgYjVjZjBjYjBjN2NlNThiNzMwMzVkMDUwYjllNmFhYmQyOGU4MTdlNCBweTNrCis2NDkxMiA4Njg2NTYzMjgxNTM5NTg1YmRhYjU3OGJkMTlhOWIwMjRlZTU2NjJhIHB5M2sKKzY0OTEzIDVhYWZhMjNjYmZmYzk5NjkxNjJjYjMxOGE0NTljNzJjYjVmYzIyZGIgbGVnYWN5LXRydW5rCis2NDkxNCAyMzIxMDQwZWM5MGJlNjc0YjNiODJiYmMyNzU2M2Q1MmVjNDUxNzBjIHB5M2sKKzY0OTE1IGI5MDc1MmM1ZThjMTUzYzY5YThlNzdmMjdiMDFhZmIxMjEyMGZhZTkgbGVnYWN5LXRydW5rCis2NDkxNiA4Y2ZjZjc5MzI3MjQ1Y2M3MDMyM2YzNzczOWI4NTljMzZkYmE0MDFjIHRsZWUtYXN0LW9wdGltaXplCis2NDkxNyBhYjJjZmQ3YzNiZTg3NjI3YTZkMjk2OWRjYWRkYjg3ZmZmY2FhNmZmIHRsZWUtYXN0LW9wdGltaXplCis2NDkxOCBlNTNlNGE3MWY1NmZkMTg2YmRlODM2OWRhNjNhNDNlZTkwYzMwMmRhIHB5M2sKKzY0OTIwIGQ2MTFiMDA5MWQ1ZjY0ZWVhZmVjNTY2ZmE2NDAxNTljMTVlMWI3ZmYgbGVnYWN5LXRydW5rCis2NDkyMSA1ZDYxYWQyMTRiOWMwNjljODhiMWExOThmMTcyNGEyNDUyNzBlMzE5IHB5M2sKKzY0OTIyIDA0MTU1MDczODIwMWZkZmU0NDYxZTc5N2U3NTNjZGQ1ZTA4YzI2NmQgbGVnYWN5LXRydW5rCis2NDkyMyA4ZDBhOTc2ODE2ZjJmOWRlNzgwMzhlYWZhZTQwYjhmYWM0ZGRmMmE3IHB5M2sKKzY0OTI0IDE4YmYyYWFhODdiNWYyNGU3YjMxNDNlMDI2ZGI0NzQyZjlmMzlhMGEgcHkzaworNjQ5MjUgYzU3MTBmMGRlYmFlMjc1MTVhN2Q4YTMwOWQxMWRjZTE0NjcwZTkwYiBweTNrCis2NDkyNiBlNWUxMmQzMTA1N2VkNTA1YmVhNzUwMjVjOGM2ZmRmMGYzMzU4NjAwIGxlZ2FjeS10cnVuaworNjQ5MjcgNWFjMjZiMWYyNWQ5MWVlYzRiYWJhNDg5YjIyYWVkMGZjMmJiZGIzNCBsZWdhY3ktdHJ1bmsKKzY0OTI4IDZjMTIzN2NiNWFhYTY2YmRjZTg4NWQwOTIxMWE3ZGY2NTZjY2ZhN2UgbGVnYWN5LXRydW5rCis2NDkyOSA4YmFjZTIxNGFlNTRhMjBjOTBiYWNjOTYyYWI4ZmI0OTU2ZDVmYTY2IGxlZ2FjeS10cnVuaworNjQ5MzAgYWZlOGQ1MTViZmUyZTljOTlhYjcyZmFiMzc2MWMxODE1YWQ3ZmZiYyBsZWdhY3ktdHJ1bmsKKzY0OTMxIDgxZTM0ZDdlNGJhMGE3ZmE2MzFiZDNhNDE4MGEwNzM5YzIzOWFiOWMgcHkzaworNjQ5MzMgNmZkOGExZDg0NDhiY2QxNjZmZTM3MGM0M2MyZGM0Y2NmZTY0YTg4YiBweTNrCis2NDkzNCBiZTNkMzEwNmRhNmYyNDUxYWJlYTZkYjFmYzY3ZTdjOTkzZTU0MDgzIHB5M2sKKzY0OTM1IGFmZGQ2NGVkZjE4OWU1Zjk2NzkzNzIxMDYyOTJkNWQ0NjMxMzFiYzggcHkzaworNjQ5MzggOTJiMWNhZmEzMjY3YjY2ODgwMzlhM2NkN2I4MjZmM2E1OTkzZDYzMyBsZWdhY3ktdHJ1bmsKKzY0OTM5IDdhMzBiM2M1Y2I1N2E3YmM5NmVhYjZiYzNiNDMzMzc4NDBkY2VjY2QgbGVnYWN5LXRydW5rCis2NDk0MCBjM2JjNDM4ODgyY2I4MmY0ZTJlOWRjODQyODljMjgzY2RjZGYwNDc5IGxlZ2FjeS10cnVuaworNjQ5NDEgYWUzNGI5NTFiMzM3NzYyNmFiNGQ3ZWIxNzUyOTM0NzU0Zjk5MjlhYiBsZWdhY3ktdHJ1bmsKKzY0OTQ0IDJhZDc0OWQ1N2U2MmMwNTA1ODQ3NTIwZjFmNjFjMTc2ZjMxNGE4MmQgbGVnYWN5LXRydW5rCis2NDk0NSAyY2M0ZTFjNDc1ZjgxM2MxNGNhMDAxMDc4Njg3YzJhYjViOGYyZGJhIGxlZ2FjeS10cnVuaworNjQ5NDYgYzBjMDZmZmFlYTgzMTA5MTNlMDM0YWM4NGYyNzJlYWViMTlkNDg1ZSBweTNrCis2NDk0NyAxOTM2OWM3ZjU3OTE0YTVjZDQyYjYwMDgzZGRlYzU5NzBiMWE3ODEyIHB5M2sKKzY0OTUzIGU3YTZhNDUxNWFiMGIzOWI1NWIyNDFhZGYyMTY4NWFjYTUzMzdhODkgbGVnYWN5LXRydW5rCis2NDk1NCA5OTg2ODIwNzIzZTBjZmM3MjcyZGU4OTlkODBhMWI0MDBkNWM5YTk1IHB5M2sKKzY0OTU2IDNkODY4MjU0ZmY3ZWVmZDZlM2ExZmFiYzM3MTczOTdhMzdjOTE3NTUgcHkzaworNjQ5NTggYzJiMTE0ZDBlMWNmNGQ3MzdkNTkwMzU4NzRiMTM1ZWVjM2YyYjEwYyBsZWdhY3ktdHJ1bmsKKzY0OTU5IDc0MTk1NDk5ZTkwOTNjYTc1ZWMxMWYxYTRiNGRiNTNlYTkyMTQzNmMgcHkzaworNjQ5NjAgZDRlNDczMjkxYTE3Y2ZiMzY3OTg2OWNkNGQ2NjE5NDhlN2ZjYTVhZiBweTNrCis2NDk2MSAyZmJlMjhkZWNhMmEyODRjZDg0MzExNWU0MmQxMmNiOGU1NzZjYjNhIGxlZ2FjeS10cnVuaworNjQ5NjIgZjliODBhODIwYTI1NjljYWJkNTgyZmM5OGE0MWQ5ZGQ5NDQ2NGZkOCBsZWdhY3ktdHJ1bmsKKzY0OTYzIDdkNTcwZGY1ZTkwYTQxM2JlMTc4ODcwMjc5YTRlZThmYmE0NDJiNjMgcHkzaworNjQ5NjUgMmVlMDlhZmVlMTI2MDI1MGZkNzhkMDI3NWI3N2VlZGVhNWJmZjNhYiBweTNrCis2NDk2NiBkZWQyMTcwNDM3MDdjMmY1ZDQzNjViZDhkODc5Mjc5NGEwZTQ0YzA0IGxlZ2FjeS10cnVuaworNjQ5NjcgZjRlN2VmNDMyOWE5NTdlOTJhZmIxMWE0ZjBlZmM4MmRjNmVlNmZkOSBweTNrCis2NDk2OCAxZmRiYTA5NzkzMmFmODZmYTQxNmU4MzNhNzJkNmNiZDkyMTUxOGYxIGxlZ2FjeS10cnVuaworNjQ5NjkgZjg3MjNlYjEwNWFjZDVmYWRlMGQ2ZTZiYWY1MzIyNDMyMTNiN2Y5NSBweTNrCis2NDk3MCBlMjZjNzI0ZDVlMjNlMzc0OGY4NmVlNTc1NDBjODYyZTQ0YmFjYjQ4IHB5M2sKKzY0OTcxIDkxNmQzM2VjN2I1YWZlY2MwYjQzZGQzYzVjNDQ4Mzg0ZjEyNTgyMTkgbGVnYWN5LXRydW5rCis2NDk3MiA0MzJkMjc4MDhiZDFlZTYzOTNhNjlhZmRiOGI5NmNmNTRkM2M5MDVlIHB5M2sKKzY0OTczIDFmMjRjZWMwZjJlMWQ2OGQyNjdkMTc4MTg2ZWFmMWNjYjEzOGNjZjQgbGVnYWN5LXRydW5rCis2NDk3NCA5N2JhOTM2ZThkZjg0Y2E0N2IwYzk2MWZmMjFmNWU2MDhiNGE1NzUwIGxlZ2FjeS10cnVuaworNjQ5NzUgZDA0MGEzYjYzZGY0MjU4ODY3YTE2YWUwOWJkM2NkMTNkOWM4Njg5NiBweTNrCis2NDk3NiA4NzViZWI0YWQ4ODkxNTBhNjA1ODIwZjQzZDQ2ZTQxNWQxNTRmZDQ3IGxlZ2FjeS10cnVuaworNjQ5NzcgMzUwMDRkOWJmZDE1NjA0MDQ1MzFhZmYyMmRiOTU5MzU0NDNiOTc1ZiBsZWdhY3ktdHJ1bmsKKzY0OTc4IGRhMmQzNjMzNzlmMjZlNGU0NGJkMTRkYWQ4NWMxMDBmMjA0NGU0YWEgcHkzaworNjQ5NzkgYTQ0ODJhMWEzMGM2ZDkzY2MzMjM0M2M4YjEyODZlZDgyNzVlZTdiNiBsZWdhY3ktdHJ1bmsKKzY0OTgwIDFlMDA5MTcwODg3NWE3ODUxMmY0MTM3MzU0MzgyODEwZWE4YzllMzAgcHkzaworNjQ5ODEgOWNiMjhhZDVhNDFjMDAxMjY5MGU1OTcxNTk0YjI1YmU1NjBjMTFhMSBsZWdhY3ktdHJ1bmsKKzY0OTgyIDAxZmJlM2ZjODgzZTBhZWIxZWRlMzE0MzgyYmE5M2I0MzY0Njc2OTEgbGVnYWN5LXRydW5rCis2NDk4MyA1MWMwZDNhMDcxYWQwMDc4MDZmYzdkNWRmZGZjYTIyYWMzYThjMTg4IGxlZ2FjeS10cnVuaworNjQ5ODQgM2ZhNDRlNWU0ZTJiMWYyY2Q2ZDhkNDI1ODBkNDVmNzQ5ZTM4OWUwYiBsZWdhY3ktdHJ1bmsKKzY0OTg1IGM2NjJlOGNmZmRkZjYxZDViNmU0YzVkYWE2OTkyZTk0NGJmMGZiNzUgcHkzaworNjQ5ODYgZWZmOWQxMWM0NzYyNmFiY2UwNzI2N2FiMjJjZWZlOGU1NzM0NmU0ZSBsZWdhY3ktdHJ1bmsKKzY0OTg3IDNhM2E1YTQ5MjE0NzFjMzQ4MDE0MWZkZGI0NTdmNzFjYTViMmI0MTEgcHkzaworNjQ5ODggM2JiMWY4YmJhMzM2NzZhMzU5NzdhOTM2NGRjM2NmYzkxOTYyYTI2YSByZWxlYXNlMjUtbWFpbnQKKzY0OTg5IGJiZDBjOTAwMjdiZmI3N2I0NjhjZWVmMzE1ZmIxZjYyYjI1N2I3YzYgcHkzaworNjQ5OTAgYmQ0ODQxMDY5YzY4NDg1OGIyNzJkMjI0OGFhNTVmM2U2M2ZjMTA0NCBweTNrCis2NDk5MSBkMTRkMGIxNWUxOGU3MGY3ZTc0ODY5NTM4MDVmZTQyODUwOWI5ZDczIHB5M2sKKzY0OTkyIDM4ZDcxOWJlZGRiZGQ4NjM2NTFjOTBjMWQyNjFmMWE2NDM4NjYzZDMgcHkzaworNjQ5OTMgZWEyM2U3YzU2MTU0NTZjY2M1OWQzYjNkN2UwMWU2ZjcyMWYyZWRiOCBweTNrCis2NDk5NCBmY2VmZjk1NGYzODA0YzYyYjFjZTY1NWUyNGRjOTEzNGMyMzFkY2RiIHB5M2sKKzY0OTk1IDhlOWU2NTM4M2FmYjY1MDJlMzlkZTc0ZDE1MDc1MGU5YjA1ZWExMjggcHkzaworNjQ5OTYgNjVlOWMwMTAyZWY5YzRiMDk0N2I5MGVkMjE1ODM4YWYxYjcyM2E5NSBweTNrCis2NDk5NyA5MjZiMmExOTYwODMxNTI3ODUwOGIxMDVmMDc3Y2VlNGEwYmUxZTlkIHB5M2sKKzY0OTk4IDllYmQzZjM4NTU3NTlkNThhZWU0ZWI4Yjk3Y2VmMzdiZGFiODIzNGUgcHkzaworNjQ5OTkgYWNhNWIyZTZhNjZmMzI0Yjc0NTQ2ZWI4MGY1NGYyMThjNzM1NTEwZCBweTNrCis2NTAwMCBmNThlM2EwZWE5OWExN2I3NmM1ZTA4NmRmODk1ODhjZDUzODMxY2UyIHB5M2sKKzY1MDA0IDlhYTA3ODE2MTVmYjFjN2E3NjBhZGI2ZGQ1ZDUyNjgxZGEwMmRiODQgbGVnYWN5LXRydW5rCis2NTAwNSBjMGFiMmJhZmIyNjQ0MGI1OWY5ODQ5MDVjNjQxYTA3NjQ3NGE0NjU1IGxlZ2FjeS10cnVuaworNjUwMDYgY2VhMDY2ZGVkZmRmYjIwODgyNTk2ZWEzMzkzMjc2NzFiMmFjNTZlMSBweTNrCis2NTAwNyBjYTBkNjIwY2Q2M2IyYTVmYmRhZWQ0MWJlODY2Nzc1N2ZkMWZkY2FmIHJlbGVhc2UyNS1tYWludAorNjUwMDggMmJiODY2ZDI4MmJhZDU1ZGZlNjVlNzEzOWIxMjkzM2JmODJhOWJmNyBweTNrCis2NTAwOSAxNzczMDJmZWFiMzY4OTU1ZWVkMDMyNWVlOTUxOGRhZjVhYTg5YjQ3IHB5M2sKKzY1MDEwIGRlMGJmNjBmMTI0NWFjNzNlNDRiYjI1ZTJjNThlYWU2ZTVkMDgyYWUgcHkzaworNjUwMTEgNGY2ZWRlYTRiNTU4NTYxMWMxNTRmNWEyMGZiMGQyNzk3Y2QyNzc1YyBweTNrCis2NTAxMiBhNTE5MWQ3ZWE0MDU0MGMzMTYxZTVhY2Q0OTcwMmE3MDEzNGI4Yzg2IGxlZ2FjeS10cnVuaworNjUwMTYgNWY2ZGMyZjg2YTg4NDQxNzViMmI5YjNhZGMzNzdmOTFiN2VhYmU2YSBsZWdhY3ktdHJ1bmsKKzY1MDE5IGVjMzhmYmJiOGNjZWJlMWYyNjcwOTA3ZTY4OTI2ODE1OGY4YWZiZjEgbGVnYWN5LXRydW5rCis2NTAyMCBiNjQ1YWEyYmNhOWNjNzEyMTliYzIzMzQ4Y2IxMDQwYjRlNmMxYTE4IGxlZ2FjeS10cnVuaworNjUwMjEgMmU5MGZlZjIyNmVhNmMyMDJkYTcwMWRiNmEyMGVkYWQ3MDhjZjZhNCBweTNrCis2NTAyMyBhMDk2M2U0NmY0M2U1ZTc3ZTkyMzU1YjU1NDg3ZjFmNDc2ZDVlMzY2IGxlZ2FjeS10cnVuaworNjUwMjQgNjU0ZmY1NzU1NDM2YWQ1M2E2ZGExYzBkMTJiMTRiNTU3NGJiMmMzYyBweTNrCis2NTAyNiA2NTUyMjdjOTg4YTc4ZDZkMjI4M2MxNGM4ZjhjMWFiNzYyYTc5ODljIGxlZ2FjeS10cnVuaworNjUwMjcgYWNhY2ExMWQ4MGRiYzg0ZDMxMDlhZDg2YmQ5MTAzNDU3NjAyNzY2NiBweTNrCis2NTAzMCA1OWFjNWFlZjNiMmQxZmYzYzNhNmM3NmM5NDQ1OTJkZTE1YjJlNTZjIHB5M2sKKzY1MDMxIGIyZjNkZTM1OGFmNDA4MDMyNGQ3YWY4NDVhYjgyMTVlZjZiOTgwMTYgcHkzaworNjUwMzIgMDliZWI5NmJhMjBkNDdjNjM0MTcyN2UxZmVjNmZkMGMxMDZkNGM4OSBsZWdhY3ktdHJ1bmsKKzY1MDMzIGVjODViNThhZDJiYTRhMDgwYTYwMWJiMTFiODQ3NmI5Njk4ZTUyZWMgbGVnYWN5LXRydW5rCis2NTAzNCA2YzhiYWM5MTNhYWJmY2MwOGM1ZmQ0N2Y1Y2U0ZTRhNGQ2ZGNiOGU3IHB5M2sKKzY1MDM1IGViZTkzMjMyOTI0Njk5N2Q1MzgxMjBhMzhhZWY3YTU2ZWUyYzM4MzYgbGVnYWN5LXRydW5rCis2NTAzNiA2MDRmZWJkMjA0Y2IyZDNlNjNmMjlmMTRiOTFlN2Q2OTRmOTJhYTRmIHB5M2sKKzY1MDM3IGVjOTdiN2FhZDIzMWJlY2NmN2EyNzgzZTRiNDAyODg5OGNhYTkzNjYgbGVnYWN5LXRydW5rCis2NTAzOCBlZmU3MDZhYWIzMmI5MWFlMjgzYWVmMWFlZmNiNjk3MzQyNmYyZGNhIGxlZ2FjeS10cnVuaworNjUwMzkgMDE4MDZjZGVkZGRlMzYwOGJmMDQxNDk0MGJlZTgxOTlkYzE1MmExZiBsZWdhY3ktdHJ1bmsKKzY1MDQwIDA5MWRmNGMwOGQ5OWE0ZGU1MzU3Yzk5OThmODRlNTY5MDlhOGJiOTkgbGVnYWN5LXRydW5rCis2NTA0MSBmYmYxNjVhNzg5NTM3M2NhZDMwY2M2MGYxZjM2NWYyYjIzN2Q1ZjliIGxlZ2FjeS10cnVuaworNjUwNDIgN2UwMzBiNjI4Mjk0ZGIyMjliOGUwNzI0MTRiNTVjNzE1N2I3MTFkMSBsZWdhY3ktdHJ1bmsKKzY1MDQzIGI5ODI4YjJhNTFjMGZmMzUxZjFjYjZmMzUyMmU3NWM4NGZlNjEzMzYgcHkzaworNjUwNDQgOTIxYzRhODA5OTIzODMxN2Q1ZGY4ZjNlMjc2ZmJiOTY2YWM1OGMxOSBsZWdhY3ktdHJ1bmsKKzY1MDQ1IGQ4N2NkNWU3MzY1YWE4MmFjNzcxNzUzNDNmZjg5N2MyZTk5MTdiMWEgcHkzaworNjUwNDYgNzY4YmNmZjRjMGRhZWRhNjQ3ZGJkMjc0NDEwZDhkZjcwMTNmZWNmNSBsZWdhY3ktdHJ1bmsKKzY1MDQ3IGYyYzcyNzkyNThjMTJkYzQ2Njk2YzQzYzVkOTM0NGFmMzExZGIwMGQgcHkzaworNjUwNDggZDMxZDYxZjQ2NDk4ZDE0MjE3M2ZiYjI1MTI2YmFkZGNmNGUzZTM4YiBsZWdhY3ktdHJ1bmsKKzY1MDU1IDMwZmRkMGMzYjZkZTFiODIzNWU3NWFiNTgwMDkwNmY5YzdjNDQzZjkgbGVnYWN5LXRydW5rCis2NTA1NiA5YzU2Y2Q5N2ZmNGRlZTMwOTQ2OGMzNTIzMGRiYjk4NTg1YTVmNDZkIHB5M2sKKzY1MDU3IDI3YmNhN2ZhYzM2MmQ3MTU5MGRkNjNiZThlYTYxNTI1NGY2YzkxNzggbGVnYWN5LXRydW5rCis2NTA1OCBjNTkxMWE3YjVmYTAwYmMyNzVmNmNkN2ZiNmQ3MjlhOGI0ZTVlZDdhIHB5M2sKKzY1MDU5IDQ1MjMzZDRjMThkMjNiMDYwYWVkZTNiYjVmMjM2ZjNlYmFlYzJmYjUgbGVnYWN5LXRydW5rCis2NTA2MSBhMjljODZjZTc2Njg3MTExM2JlMjc2YzQyODZiMmExZWZmNDIxNTgxIGxlZ2FjeS10cnVuaworNjUwNjIgMWJlNWI2YmU0M2NiNjk4NTQyYzgzOTIxOTY3NTI0OGRiODJhYzU5ZiBweTNrCis2NTA2MyA3OWY4NGJjMmIxNDkyMDg1ZjdmZDZjM2Q3ZTZhYjY1NWU5YTRiNTZhIHB5M2sKKzY1MDY0IGRiYzJiN2FkMGMyMjE3YzA4MGVkYzAxYzQ3OTc2MWFjZGU0ZmJiMjkgcHkzaworNjUwNjUgZWVmYjk4Mzc5NjQ0ZDliZjg0YzVlMmZlYjNhMjU5YTE1YTM1YjUwZCBweTNrCis2NTA2NiA3OGEyOWEwNTIwNzk4MmQyNmU3M2JhMDA2YjNlNDQ5YWFmY2I3NzY1IHB5M2sKKzY1MDY3IDk5MWNhZGQ0N2Q5NzMyZjMxMTIxMWVlYmRlOTBmYThlOWU3ZDlhMzQgcHkzaworNjUwNjggMjA2ODcxMGIzMmMzNTEzYzI0MzYyYjA4YjUxNTkzMTYzOTQ2NGFjNSBweTNrCis2NTA2OSBmMjgzZTNiNWY5MTdhYjI2YjUzOGY0ZThhMDQ0ZmIwN2I3ODY5YWRhIGxlZ2FjeS10cnVuaworNjUwNzAgNTYwMzg4Y2RhMTYzZDkzZGQ4Yzg0ZjliMDhhMjJmZWI0NWJkYTJlMSBsZWdhY3ktdHJ1bmsKKzY1MDcxIDdjNmVjN2E4MDE2YWRmYTczNGZiOTcyMmNlMTBkYmE2NmM5YTgxYzEgcHkzaworNjUwNzIgYmEzOWI0MGViZjJkOTMzOWNhYmM3ZDVmMDQzYTBhZmIwNzk3NzQ0NyBweTNrCis2NTA3MyA4M2QwZDRjYjdhNjYxYzk3Y2Y1OTg0OGJjNjYxNzZmOTg4ZTg5MmE3IHB5M2sKKzY1MDc0IDNkNTI2NTI1YjNlODFkOTRhYTRmMmU0YzY3MDgxYTU2ODM0OThmNWUgcHkzaworNjUwNzUgNWMzMzAwOTk5NGI0NjM1OGQ2ZWY5ODM1Mzc0ZDhjZTM4ZDI1YjNmYiBsZWdhY3ktdHJ1bmsKKzY1MDc3IDZkZDUyMGUxYmMwZGIzNjFmYWExY2Q2M2VhZTQxNmM5NGNmM2VhZGYgbGVnYWN5LXRydW5rCis2NTA3OCA0ZGVhZGM4ZjllMGEzOTNlYTYxYWFkZjhkOWZkOTRlM2U2YjIwMTg2IHB5M2sKKzY1MDc5IDAzMWI1YWQ1NDdlNDI3YjQzNzc5NGI4MTgxZjI5MjQ5MDYyYjA4M2YgcHkzaworNjUwODAgMTZlYzRiYjE0YTY4ZWE0MjhhY2YwOWViZjBjOTI5ODFkYTI2NDZmMyBweTNrCis2NTA4MSBhOTY4MDI5YjYzZGIxMjFmMDA3YTdkYzkwYWY4OGFjNTgyZGQ0N2UxIHB5M2sKKzY1MDgyIDgxZWM4MjYzYmQ2ZTI1YzlhODg1NWNkMGNlOWFlODgxNzMyOTcyYmUgbGVnYWN5LXRydW5rCis2NTA4MyA1OGQ0YmYzMTcyOGZmOGI0Mjk2MTFiM2Y0YjBlNDkyMWIwOGExYWM2IGxlZ2FjeS10cnVuaworNjUwODUgMTllNzc5ZDAyMDUzNTNmYzhjZTE5MDM1NzM0ZTM3ODI4ZDJkNDNkNiBsZWdhY3ktdHJ1bmsKKzY1MDg2IGI3NGU5ZDA5YjE4MDY5M2QwMGNjNWIzMzQ2YzEwMTRkMTQ2YzE1NzIgcHkzaworNjUwOTAgNzhlZTZiYTIwOTllZTdkMmM2ZDhiNWIyMjNmYjllMTE5YjM3ZDg1YSB0bGVlLWFzdC1vcHRpbWl6ZQorNjUwOTEgNjQ0Y2E0NDg3ODgxZTg3OWUwMTBlZjUzZmY5OTQ2OGY5YTgzNDA1YyBsZWdhY3ktdHJ1bmsKKzY1MDkyIDBlYWU5YjI1YTJlZDBiZGUwNTk1MWI5YTAwZTVjOTgyNzJhZDI4ZDYgbGVnYWN5LXRydW5rCis2NTA5MyA4ZWMxODMwZDU3MTk5NzNlNzA3M2E4MWI4OThiM2ExMTAzN2MxYTEwIGxlZ2FjeS10cnVuaworNjUwOTQgMWFjZmU0MjhlOGYxOWI5NzkwZjQ1N2Q4MmZjZGI0YzJlNGVjM2FmNiBsZWdhY3ktdHJ1bmsKKzY1MDk1IGNlYzcwNGI3OWJkZjFmNTUwMTM2OWYxNmQ5ZmQ3NTI3NzAwNTk1N2IgbGVnYWN5LXRydW5rCis2NTA5NiAyOTI1MTM1Y2EwNTBhNjQ0NzVkZGYzMmFiMGMzNzU0ZTc5NGU2MDY3IHB5M2sKKzY1MDk3IDRlYzVhMGVjNjMxYTA1NTNjNTU2OGQzNDhiYjgzYWI5ZDJjZTFiNTMgbGVnYWN5LXRydW5rCis2NTA5OCBlODVkNTY5MGMyOTZlZjZmMzBmNWU5NzMwYWE2MWIwZmRhN2NhMDJlIGxlZ2FjeS10cnVuaworNjUwOTkgYWMxY2Q0NmJmN2Q1N2U5YjRkNzRmMmNmMGI1YjMxMTM1Y2RlMWM2ZCBsZWdhY3ktdHJ1bmsKKzY1MTAyIDFiMjBhZmE0OGQ1OGFlNTEyNTQ5M2ZjMjMzOWUyOThmNzBmYzJlNGQgbGVnYWN5LXRydW5rCis2NTEwMyBjNDMyMzA3ZWMwMGRkNmQ2ODgxYWIwMTFkNDE0YTkxZTQ4NjExMWQ3IHB5M2sKKzY1MTA0IDk1NzZiYjcxYTAxYjQ4YzBjZDQwOTMwZGU2OTc4ZTY4YzUxOWUzMTMgbGVnYWN5LXRydW5rCis2NTEwNiBlN2Q2NGU4MjkwMzUyMmIzMzY3MDNmZGYxYThjMWMzZWQyYTZlMmQ4IHB5M2sKKzY1MTA4IDliZGI3NDA0ZWZlNzg4OWRiOGJlNzQzZWI4MjNjM2Y2NmU3ZGQxNzEgcHkzaworNjUxMDkgNDk3MjZkY2ExNmQ4MTFjMzE4ZGMzM2ZhNTJlY2EyN2E1NDU4NTc4ZSBsZWdhY3ktdHJ1bmsKKzY1MTExIGI5MzFhMDIyNjQ2NjU2YmYxOWNkNTQ4MmYyMGUxMmQ0OGU2NTRjYjAgbGVnYWN5LXRydW5rCis2NTExMiBmOTA0MGQxMDdkNjY0N2RlZjc5ZGZlMzQ5MjhlNDEzOGUwNDgwZjY3IGxlZ2FjeS10cnVuaworNjUxMTMgMjk3OTUxMzA2NDAwNTIxYjdkNzg0MGIyYzFiMDA3NTBiMGU1ZGZiZiBweTNrCis2NTExNSA2ZTc3MTZhM2JkZWMxMDYwYjhlYjUzYWM2YTc3YzM5MmYwNTZmNjIxIHB5M2sKKzY1MTE4IGRlY2UxN2VkYmVkMDhhYjY5YzkyMjFmODY4YmQwZDQ1NTZjZjY3OWQgcHkzaworNjUxMjAgZmVmZmVjMjZjNTZjYjk2ZGJjZWMzMmU3ZDk2ZTViYzkxMGYyMTI5YiBweTNrCis2NTEyNSA0MGRiNDViZmMwZjJjZGJjY2RlZmE2NWZhNjU1OTM4ZDE3Yjc3YmNlIGxlZ2FjeS10cnVuaworNjUxMjYgNDhlODNlNjY5MzVhOWE2YzMzOGE1NzlhOTVmMDEyZjU0MWE3OTU1NyBweTNrCis2NTEyNyBhNWZmZTM0YzcyYzQ4OTlkYzBjYWU3ODM5ZDJmZmM2Y2ZhMjM4Nzg1IGxlZ2FjeS10cnVuaworNjUxMjggY2FjYTMzODMyYTFhNTEyN2MyMjdmYWJmOTlkOTgzNTgxZjVmOWVlMSBsZWdhY3ktdHJ1bmsKKzY1MTI5IGU2YmE2ZjQxNDY5YmYzMGJlZDRiZWNiYmUyNTJmYWY2NGViZjkwZWIgcHkzaworNjUxMzAgNmM1Y2RkYjI2N2ZlMjRkNTlkNWIzMWVhZTBkMGIyYzJkNTk0ZGRhNCBweTNrCis2NTEzMSA3YWQ2ZTRjZDc3MTM2NmQ5NDU1ODM3N2FlMDg2YmMwMGM2ZTExNTE1IGxlZ2FjeS10cnVuaworNjUxMzIgNDBiMGUzMzE4YThiYmFkZDE3NDQ3YTY4NGRjNTI5MDg0MDE5NGEwYyBweTNrCis2NTEzMyAzM2M2YWY2OWFlMGYxNzUzMWQyYWVhODM0NzY4ODc0NmQwZmE1MjcwIGxlZ2FjeS10cnVuaworNjUxMzQgZTkwN2RhODI1MTY5MTkyOWU4ZmU1NWY4YzJiZDNmMjQyOTE5OTUwZCBsZWdhY3ktdHJ1bmsKKzY1MTM1IDQ5YmU4ODEyZDQzMzBhZWRlNTAwZDA4YTk2MjJhOGFiYjM1ZmM2ZGIgbGVnYWN5LXRydW5rCis2NTEzNiA5NmVhZmFiNDg5MDEyZWRmMmQ5ODEzYmZlZDEwMGJlYTQ2YWM0MjY4IGxlZ2FjeS10cnVuaworNjUxMzkgN2Y1NDIyZDA0MDlmOTQ0NDdlN2UxNGU2ZDE0YmZmYzgzM2FiNjY4MSBsZWdhY3ktdHJ1bmsKKzY1MTQwIGRmYzM3NTgzZjIwNDc2N2VjYWU2OWU0NjVjZWUxNjNlYzA5OWZiNzkgcHkzaworNjUxNDEgOTQ4ZTViMzIzMzI5MWJlMTUyNTZjZjEwNjg5YjU2N2YzNzUxNmYwZiBsZWdhY3ktdHJ1bmsKKzY1MTQyIDQwN2ViMDA0MDA0MTQxY2E4ZWY2MmFjNzg3YjkxNzQzNzIwMTNmYmMgcHkzaworNjUxNDQgODlmNWNmZWMwNTczYzVlYTMzMTJiNzk5YzUwMGZkZjMxMWM4YmVhYSBweTNrCis2NTE0NyA3YzE0N2E3NmEwYjI3MjQ2NzVkNDkwNDAyYmI0NGY5ZjZmNjBlNWIwIGxlZ2FjeS10cnVuaworNjUxNDggOGNkYjE4MWFhOWFmYzY3NTgwOGU5MmNmNjY2YWYxMTEzZjIyZTNhZiBweTNrCis2NTE0OSA3MGJlNjljOTNlMzNhYTUzZThlYzI1YzFkMGFmMDI4ODEwZjhmZjc4IGxlZ2FjeS10cnVuaworNjUxNTAgNDNjNjkzNDUxNGQ3Y2MzNDJlNjNhMjQyODAyZjkyZTdjN2NiNmIwZCBsZWdhY3ktdHJ1bmsKKzY1MTUxIDg5ODkyMTNmMzg2YjI2YmU0NGRiYmM4ZTRjZDJiMWFjYWNlZTQ0ZmUgbGVnYWN5LXRydW5rCis2NTE1MiA2NDRmYTdhMjQwYzhiNzk2MWQ2ZTdhYjI0Y2MyYjA5MzNhYTBlMWI4IGxlZ2FjeS10cnVuaworNjUxNTMgYmIyNjM2ODgyNTAzZGQyNmRmMmVkNzRmOTA0ZmViYmIyYTZmMGVmMyBweTNrCis2NTE1NSBkMjdlMjgwMjA3MDkyZDg1MDZiMjU4Mzc0YmE2N2NlMzhiNmI4OGY0IGxlZ2FjeS10cnVuaworNjUxNTYgMWQ0Y2IyNmVjODlmYTY5ZGFjNzExMzkzMTM4YmE1ZTVmZDk2NjM1NyB0bGVlLWFzdC1vcHRpbWl6ZQorNjUxNTcgNTc4YTRiMGE1MjJkMjYwZmQxMDA4NTUzNGEyNjQzOTI4MDJjOTU4MCB0bGVlLWFzdC1vcHRpbWl6ZQorNjUxNTggMWVkNjk0YTdhYjYwMTQ3Mzk0MTQwOWM5ZTA2M2NlM2E4ZmZhZGJiMyBsZWdhY3ktdHJ1bmsKKzY1MTU5IGE5N2ZkNWEzYjA5MGI2OWM2OWNjZTQxZTJkMWFmYTYxNTY4YTI1YmMgbGVnYWN5LXRydW5rCis2NTE2MCA2MDUzNTI1MGE2MmM2YTQwZjZkZGM1MzQ3Y2EzZjFlZmQ1NzdlZjcxIHB5M2sKKzY1MTYxIDYyODIzZWNhODgxYmU0YTg3ZWM2MGRhMGViZTJiYjkzMDAxM2Y5NzcgcHkzaworNjUxNjIgN2NjY2UyYTczOTRhMDI4MmJlNDBhYmI0ZTVjZGYxMDk4ZDVlMDliMyBweTNrCis2NTE2MyAzNjQxMDY3OTZiMjEwNDcyZWEyOWRmNjgyNDUyMDE5ZjQ3YmU1MjFmIGxlZ2FjeS10cnVuaworNjUxNjQgZWNjNmJlMzgwYzViYzhhNDgyMGNkMjQzMzQ5MjNmMDFjODY0YTg0NCBweTNrCis2NTE2OCAwNjhjMDBiZjVhMjRhZmZmMzY5NTE0MGIyNjNhMDJkOTVlNmNhZTk1IGxlZ2FjeS10cnVuaworNjUxNzEgMGE3NDFjMTNmYzgxYzZlYzI4ZWY5YmZiZGZmZTBiZmMwYjU2YTU5MyBweTNrCis2NTE3MiAzZjZkNDNkNTc1NWNiOWJhZjM0MDhhNDQzMDg0NzJhMmQ1OTgzMjFiIGxlZ2FjeS10cnVuaworNjUxNzMgOTIxYjY3NTljYmRlNzA5ZGI2NjJmY2U1YzFiZDAwYTkzNDAxYzM5ZCBweTNrCis2NTE3NCBhOWRmYTA4NTFiMDczOGM0MTNmNjM1ZWNjMjU2Nzc2MGZhNjJlNzEzIGxlZ2FjeS10cnVuaworNjUxNzUgOTc1YmJkY2NjNTVlZDU4Mjk1MGJlMGE1NTY0MGNkNDUxM2JmNGNjOCBweTNrCis2NTE3NiA4MzMxYmM0ZTgyNzhjODNiZmMxOWNmOGM2ZWRlM2Q0OGQyYTYxNmM3IGxlZ2FjeS10cnVuaworNjUxNzcgYjgzNmJmMjVmMTc2YTI5ZjNiNjFiOWI3ODdjYjFkYTZkMDM0MmMxNiBsZWdhY3ktdHJ1bmsKKzY1MTc4IGJhMjc2N2JkNDYyMDUyOTk5MDYwNzZkM2NlM2UwMzk5YTAzY2UyNDEgbGVnYWN5LXRydW5rCis2NTE3OSBkODc5OGQ1ZWM0YjkzYTU3ZWFkYTdlNmNlNjBmOTNiZDc5YjVkODgwIHB5M2sKKzY1MTgyIDVkMzgzM2U2YWFlMzBlYTFhOWY0YmJhOTE4M2JlZTNjMzMxNDI0ODYgbGVnYWN5LXRydW5rCis2NTE4MyAzYjVjMjYxM2VkMDVkYzk5MDFlMzRkOTQ0ODAwODM0Y2NlMDljNWI3IGxlZ2FjeS10cnVuaworNjUxODQgOTZhOWViZmVlMmNkMmM3NjQ1Y2ZmOWNhOWRmODMzYTRhNDU0MWQwMSBsZWdhY3ktdHJ1bmsKKzY1MTg1IDFhMmY4ZGRlODFlY2M0MjhmZTRmYzZjNDYyYjcxM2VhZTY4NDZkZGUgcHkzaworNjUxODYgNzM5YmIwNzI4ZWZlNTI5OWJiM2JhNzFjODAwZGM4MDRiMTc2OTI5MCBweTNrCis2NTE4NyBlYTUzZWU4YTgzMzMyMWQ4ZTcwZmM1YmRlMTI3NzliYTAwNTU4ZDZlIGxlZ2FjeS10cnVuaworNjUxODggOTBmYmJiY2U3NTdhZjg3MTUxYTE3ZDc3ZjJjY2FkZGYzYjkzYWNmNCBsZWdhY3ktdHJ1bmsKKzY1MTg5IDk1NjFhYWVkZmI3MzhmMDlmYmFjOGEyYTI1Nzc5YzFjNTM2MzFmNzUgbGVnYWN5LXRydW5rCis2NTE5MCBkZDMxNDkwZDNlYjZkZTgyMDVkODZkZTAwNmNhYWQwMDVjMWY5MGZjIGxlZ2FjeS10cnVuaworNjUxOTEgODIxZTczZDdiY2M1NGE0Yjg1Y2I4ZWRkMzllNzMwMTViZWFmMGI2MyBweTNrCis2NTE5MiA2NzllM2MyNzJlYzI2MmUyZGJmMWQ4Mzk3Nzk5YTMxZjkyMmVjMjM3IGxlZ2FjeS10cnVuaworNjUxOTMgMTBmNDFhZGMwZDI0ZTYwMjIzYzUxYTFkYzlkYmRkNmI2YzI5YjM4ZSBsZWdhY3ktdHJ1bmsKKzY1MTk0IDc2MWRjYWFhYTA5ZTIxMDU5OTBjZGY4YjhmNmQyZGNmMmJhNDlmZDIgbGVnYWN5LXRydW5rCis2NTE5NSA2Y2E4YWY2NDc0N2I1MDhjNjVjODA5MTQxNTM5YTY5Yjc2YmZhOWIxIHB5M2sKKzY1MTk2IDIwYjRiODNhNTRhZWZmMTIwMTQ1YWRkNWU5ZDk5MTljNzFkYzIzYzggdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTk3IGZjYmQ5ZjRmMDk1YzRmMDBlMDg0ODVhYTJjZDFlOGYxNzBhN2E1ZTQgcHkzaworNjUxOTggMDQ0MWQzMGQ2NzJiZTA2NTdkZDJlNWYyZjg0ZmNkMzYzZmFmMzUwMiBsZWdhY3ktdHJ1bmsKKzY1MTk5IDgzNzViM2Y2NDcwZjYwYjk0MWQxZmIwYmMwY2Q3NDNiN2FjNGYyZDYgbGVnYWN5LXRydW5rCis2NTIwMSAwZDM3YWIwMGY2ZDZjNDZkNDliNDA2ZDY4ZTZmOGVlZjBlODQxNDI4IHB5M2sKKzY1MjAyIGJkZGMxYTE3MjQ3ZTNmOTU3NjZhMTQzMTU3YTA4NWNkODNkY2ZjYmYgcHkzaworNjUyMDMgYWIyMjE3N2ViNmRjNDk1NjYzYTE0ZDU2NDVhNzE4ZjZhOGE2ZjkzOCBweTNrCis2NTIwNCA0NWY4OGQ3YmYwNTc2YzM0ZGM0YTNkZTY0OGJhYzhmNjY0YWJiY2U5IHB5M2sKKzY1MjA1IDE3OWE3ZjQxNjI0MGFmNWY2MmY3Y2Y5ZGU5Y2ZjZDYwNjlmNzY1NTcgbGVnYWN5LXRydW5rCis2NTIwNiBiNTFjZDVkMzc5NWNmYjUxOGNlNTUwMWU2ZDFiNjdhYmNkYTFlZWQyIHB5M2sKKzY1MjA3IDNlZmEyMDkxNmE5MDQzZjljZGIyYzRmZDI4YjE0NWZlMWMwOTAyNjcgcHkzaworNjUyMDggODg3ZWU2YmQ5Mjg0ZmI5YjZlYWU0MWZiYzIzZWFiNDczMjllZTdlZiBweTNrCis2NTIwOSBiNjg3MDQ0NTdlZmVmMTBmMjc3NzU2ZDBiYjdkYWE2OTI0OTQ5NmJmIGxlZ2FjeS10cnVuaworNjUyMTAgNzU5YTczMjM1OTFlYmQ5NDBkMzc4ZjgxMjdkYWU3ZjI1NDViMTU2ZSBsZWdhY3ktdHJ1bmsKKzY1MjExIDM4NTM4NTZmN2M1MDU1ZDdhNDM4MzdmMDJkNTM0ZTYzN2Q3NWFmYTAgbGVnYWN5LXRydW5rCis2NTIxMiAwOGRkY2FkODUxMzQ4ZWI0ZjcxMWE0NDlhYzIwZGY0NmExMDRjZTIyIGxlZ2FjeS10cnVuaworNjUyMTMgMWIxZTFmODcyZTA5ODMxZGE5MjNhOWNiZGVhNzg4ZjRmN2ZkNDdlNyBsZWdhY3ktdHJ1bmsKKzY1MjE0IDA3Yjg5NjUzMTQ1ZTAzMmE4YjQ4NDAyNzZhMmQwYjY1NzRmNThjN2QgbGVnYWN5LXRydW5rCis2NTIxNSA0MjAzYjdmMDg3YzEwMjM2NGJhOTgzMWQ0ZDE1ZjRlNTIyNjg5MWU3IGxlZ2FjeS10cnVuaworNjUyMTYgNzRmYjBkZjI5YTQ4NzZhMzc1NTJiMjk5NTdlYjY4ODg0NWRiODJjNyBsZWdhY3ktdHJ1bmsKKzY1MjE3IDI5MDA3OGU5YjZhMjAyZWRjNTIzYjU1YjlmNDgxNDY4ZDVhN2ViOGEgbGVnYWN5LXRydW5rCis2NTIxOCAxYzc4YWE3ZWEzMzYwZjM5MmM0ZjZmNjg3ZGZkY2M3NTdkZWE0ODNmIHB5M2sKKzY1MjIwIDFjZTdlNWM1YTc2MTdlOTY2YmI3NDExMWM4OTE0ZTRjYWYzNzY0YWYgcHkzaworNjUyMjEgZDlkNDlmNjczODlmNjM5OWRiMDg4NDE3NjVkZjEyODU1Nzg2Njk0ZSBweTNrCis2NTIyNSAxMDFiYjE4YzEwZDU3NWRjYzMwYTIyNDQxZjM5NDM1YTU1M2ZmODUxIGxlZ2FjeS10cnVuaworNjUyMjYgNzgxNjMwZTI1NTQwYTM1NjI4YzZhNjZiOTZmMjdlODM2YTVmNDNjZSBsZWdhY3ktdHJ1bmsKKzY1MjI3IDM1YTQ2MmZmOTg3MzE3M2ZmYjc0MmMyZjZmMmIyYTAyNGE5MmU0YTAgbGVnYWN5LXRydW5rCis2NTIyOCBhMDI4YzBiMmFjZWU3ODk2MDEyY2QxODVlM2ZiMWFkOTAxYTk2MjEzIHB5M2sKKzY1MjMwIDg2MmMwZWFiMWM1MDliNTBlMGFmY2QxMjE4ZGI0NmJiNDE4ZGUxYTQgcHkzaworNjUyMzEgOGZmMjVkYjAxMDc4MjkyMWIyOTY3ZDIyMmEyZTkyZjQ1Mzc4NjY0MSBweTNrCis2NTIzMyAxODJmY2EwMjVjYTA0ZDU1Y2M0YWNmN2Y5YjE4MzM4M2E2MGQwMTg1IGxlZ2FjeS10cnVuaworNjUyMzQgYjcxZDc2YmY0NTA2NmJkODY5MjcxYmEyMjM1MGZmNTQ0NTY1ZDRmNCByZWxlYXNlMjUtbWFpbnQKKzY1MjM1IDk3MmY0ODlhZTM1NmY3NWZkYmEwNjQzMTgxZDMyODkyMDg3YzA4MjkgbGVnYWN5LXRydW5rCis2NTIzNiA1NTY0MDE1MWUwZmNjMGVkODQ0YjU3Yzk4NDMwMjVkZTY3MGE4NDNlIHB5M2sKKzY1MjM3IGJlMDdjMzA4M2NlYWUyOTBiOTAzOGFhYjkxYWY1NjBkNmM2OTc2OGYgbGVnYWN5LXRydW5rCis2NTIzOCA3NGVlZjg1YjRiMmNkZGU3NjRmYWQxNjBkNDI0ZDEwYWI0YmQ0MmE3IHB5M2sKKzY1MjM5IDMwMGRmNmIxZTRiMGQ3N2Y0MjM0NGE2YzhmNzRlYzAzNGQ2NzU2MmIgbGVnYWN5LXRydW5rCis2NTI0MCA5YTZmOGZiMTc1ZTA1N2IxMjFmODI2ZWFmYTRmNzI3ZmY0MjZiMDQ5IGxlZ2FjeS10cnVuaworNjUyNDEgMzA0ODViYzE3MjY4MDYxNWExZWM5N2EyMDIyNGFlZjI0ZWZjNGVmYSBsZWdhY3ktdHJ1bmsKKzY1MjQyIDQ5N2QyMjQwZTFmMGU5NmM5MTRlNTY0NGUzOTRlNmJiZDA3ZTA1NTYgbGVnYWN5LXRydW5rCis2NTI0MyBkM2Q1ODYwMTlhZmZmMGU3NTg5OGY4MDI1MTliZjI2M2Q2NmY5OWNlIHB5M2sKKzY1MjQ0IGIyMTE3YjE4MDQ5YzQyYTBjNjc4MjM3ZGIwZjUxMWZhMDdiZGFiZDkgbGVnYWN5LXRydW5rCis2NTI0NSA2MTNiMjQwMTRhZmJhMWNhNzk1NWFiY2I4MGVlNTJmMDBlNGViNGM4IGxlZ2FjeS10cnVuaworNjUyNDYgNzY3Y2M4OWUzZmRlYzU5MzZjNDZjOWI3MDkyYjYzNTNiMDY5NmJmMCBsZWdhY3ktdHJ1bmsKKzY1MjQ3IDRhNDYyMWE2ODdhNzg3ZWIzZjgzYjY4N2U2MDA0MTg5ZjMzYWQ4NTcgbGVnYWN5LXRydW5rCis2NTI0OCAyZDBlMDQwMDFlODFjMzZiNjRlOTA3MzY0YmE5N2Q1ZmZhZWFiMGVhIGxlZ2FjeS10cnVuaworNjUyNTAgMmZiNTVmZjA2Mjc1ZTY1YzcwODIzZjU5NWUwNGYyOTI0ZTI3ODc2NSBweTNrCis2NTI1MSA3YjA4NDQ4MTMzODkzYmU5YjMyNGFiMTBhY2RkM2E2ODkxNmUwNGUxIHB5M2sKKzY1MjUyIDcxNTMyYWQ3ZjNlZGY2MDhkOWExZTE0NDkzYTg2NzYwNjQ0ZDdiMWMgcHkzaworNjUyNTMgMGMxMmEzN2Q1ZTVkM2Q0NjQ5M2NlYWM5MWY3MjI3Y2EzZGZmZjM1ZiBsZWdhY3ktdHJ1bmsKKzY1MjU0IGI4ZDRkYmIyOTM4YTU5YTFmOTMwYzZjMTQyYmFmMzQ0Mjc0OTk0NmUgcHkzaworNjUyNTUgOWY5ZTVmZTYzZWMyY2Q3NDU5MmJhN2JkZDNjNmQzMDU4OGM3YmEyMCBsZWdhY3ktdHJ1bmsKKzY1MjU2IDMxMTFiNjU0M2RkOWU4YWU4ZTQwZjZiYjM1ZDExMTFjYmNlOGQxNTggbGVnYWN5LXRydW5rCis2NTI1NyBmM2JmMmU5YmI4NjhjNmU1MGNmMDliNjI1ODJlYTJhZWU2MDc0MDk1IGxlZ2FjeS10cnVuaworNjUyNTggYjAxZTIwZDM3MzA0MjU4NjI2OWZlMzVhOThhY2UyYzMxNWRjNjM2MyBsZWdhY3ktdHJ1bmsKKzY1MjU5IGUzZGE4NjlkZTk4ZWFiMTVlNGVmMGNkMmI3NmYyYWExNWQzYzFmNjIgbGVnYWN5LXRydW5rCis2NTI2MSAyZGE0MmRjYmI4Y2ViYjA0ZWRjNTAyZDQyMjY3MTVmNjNkMGViOTYwIHJlbGVhc2UyNS1tYWludAorNjUyNjIgY2M4NGVlNjY2N2I3MGU1ODdkNTFlN2U0YTIyNWJhMDc3MzY3ZGFlYyByZWxlYXNlMjQtbWFpbnQKKzY1MjYzIDk1ZGYxMThmNDJjNmYyMWIwMDdhYTVlODEwMWJhYTkzYjdiNzZiODYgbGVnYWN5LXRydW5rCis2NTI2NCAxNTFjMWNkOTRhNDAyYmMwZTRlM2YzZTBmYTgzMzQxNTE3ZTQ0YWJlIHB5M2sKKzY1MjY2IDhhZmM0ZTJjNGMwMjM2ZGQ1OWZmNjY1ZjZlZDVhNGNjMDNiOTU5ZWIgbGVnYWN5LXRydW5rCis2NTI2NyA0MGE1NzNmMDFmYzRhMmQxNzFmZmExNWJiNWE4MWU4ZDdlNmFiNDk3IHB5M2sKKzY1Mjg0IGNjYmM4Nzc0ZDgyYjU1YzQxZmM3MDEyMjRhNjhjYzExYjY2ZmI3MTQgbGVnYWN5LXRydW5rCis2NTI4NSA3OTFhNjMxYTJjN2M4MjgxOTI3ODExYWZmOTY2MmU2OGU3Y2JhMDk3IHB5M2sKKzY1Mjg2IDI2MmQyZWE4YWI1MGRhNWJmNGIyNjI2MjUzYjk0ZGVlZDE3NGM0YTcgcHkzaworNjUyODcgM2EyNjdmZTczODNjNDgxMTI2NjA3MjhkZWUzMTg3OWQ4OTQyNWVlNSBweTNrCis2NTI4OSA1MDIyOGQyYjMyYzE0MTE0ZGYyYTJhZWJlOWVhZmQyNGNlZDQwN2YzIGxlZ2FjeS10cnVuaworNjUyOTIgMjFlYWM5MTM4MjQ5NWJiYmUwMDg0ODExNzQzZDk5OTJjNmFkNjZlMCBsZWdhY3ktdHJ1bmsKKzY1MjkzIDBjN2ZhYjBiMDVjMDM2Mzc2YjNlNGM3OTE4NWNmN2Q3ZTE4YzUwMWYgbGVnYWN5LXRydW5rCis2NTI5NiA2ODliNWU4YWU2OWQ0YjE1MzVhMWY2YTg0YThlNDNkM2M5NzYwNDMwIGxlZ2FjeS10cnVuaworNjUyOTcgMDA4MzQyNTE5ZTg2NTY3NzdjMzIzOTNjZjNlODFiOGM3MDhkODlkNSBweTNrCis2NTI5OCBmZDMwOGYwMzhhZmJhNzk3YjljYjUwYWU0YWM5MGY0MGQwNTE2M2JlIHB5M2sKKzY1Mjk5IGI0MGUxM2JjYjllYTVlODY1MzhjZjc0OGI1ZWRmYmQzZmRiZDcxMTggbGVnYWN5LXRydW5rCis2NTMwNyA0MGU5NDlhNjgzNDQ2NWE0MWNkZjc2NDY4ZGRiYTk5Y2Y2NDY2OTNhIGxlZ2FjeS10cnVuaworNjUzMDggOGQwNWRkYTczNWY4NzljOTk0MGRhN2U1M2VjODY1ZDAyZjg1YjRkZiBsZWdhY3ktdHJ1bmsKKzY1MzA5IGIzNWNlOTU0YTM5MjEwYWI5NjQ0ZjlhZDYxMDlmMmY1ZDI2MTc4MjcgbGVnYWN5LXRydW5rCis2NTMxMCA4ZjM2MjBmNWQ2OGFhYmQ1OTkwZDA5ZmM5NzkwZTYzMTliMWIwYTBjIGxlZ2FjeS10cnVuaworNjUzMTEgOTBjMjViMzZlMGFkNjk1NzVjYWM4ODg0NjBjYzViZDNlOGMyYjllMyBweTNrCis2NTMxMiA4M2M3YThmYWViNzhlNjliN2Q1ZWY2ODQxNDJiMjE1ODFlYzU1MmIzIGxlZ2FjeS10cnVuaworNjUzMTMgMTJlM2MzOGQzMTZlMzhkYzEzYzE2N2ZmMjBiYzdjZjM4MjE0MGM1MyBweTNrCis2NTMxNCA3ZjgyMmI1ZDM2NzAxNDdmOWMzMTRmY2Y4NjMwYTFlZjEyNjQwN2VmIHRsZWUtYXN0LW9wdGltaXplCis2NTMxNSA2N2QxNzdhYWI4YTdjNWRiMDNhMmFlMDU1ZTgzMjBjOTkxMDliMzAxIGxlZ2FjeS10cnVuaworNjUzMTggOGExMzM2NjNlYmRlMDlmNjlmYjUzZDJmNGMzODA1NjlhMDI4MTAxZSBsZWdhY3ktdHJ1bmsKKzY1MzE5IDkxNTQ1NTNmODc2YmM3YzI1NjA3NTMzMzAxMGU0MDg2MDkyZjc3ZDMgcHkzaworNjUzMjAgMGZiZGRjMDRhZWUxNTlhNGZjZTIxNjJiZGRiMjE1Y2E2NjIxNmJkOCBsZWdhY3ktdHJ1bmsKKzY1MzIxIDVkYjQzMjg0ZWE3YWFjMjZhMTQ3YzczOGU1YTA4MDk4NzM2MDAwMjMgbGVnYWN5LXRydW5rCis2NTMyMiAxZWMzOGI3MDdjZDZiMTQ5ZTU3OTg3ZjJjZDgzYzM4YmE4MmQ0ZDY0IHB5M2sKKzY1MzIzIDZmMjMyZmNmYjY1NzZjNTVkNGZhZDc1NGM1OGYwOWE4N2JiNzA2ZmYgbGVnYWN5LXRydW5rCis2NTMyNCBiZTc1MjFhZjg0NWEwZTg0YzZjNTA4OTQxN2U1YjAzNmZjNTI5YzU4IHB5M2sKKzY1MzI2IDM0NzYwM2Y3OTRkMTFiNTRiMDk5MzNiM2Q3ZTk3NmQzNmQ2YzEzMWQgbGVnYWN5LXRydW5rCis2NTMyNyAxZGU3MThhMzEwMDRlMTk2N2U1Y2Q1MTMyY2Q0ZWQ2YmQ2NTY0ZGUxIHB5M2sKKzY1MzI4IDRjZWJiNWM4NGQ3Y2ZiYTg2ZjgxZjYwNDc2ODRiOGU5ZjZlODA0Y2MgbGVnYWN5LXRydW5rCis2NTMyOSAwMzc4MThjYWZjMzkzNTk5NjA2ZWEwZjljMTVlZjU5NjA5OWY0OGE1IHB5M2sKKzY1MzMwIDRjMTFmYzNiMzNhMjMzZmI0YzI2ZmYzMjNmMjZjN2U1Y2Q5MTk0NWEgcHkzaworNjUzMzEgMzViMWEyMDQ3MGRiMDc5YzA0NTdjNmE0YWI3ZDk3MzY3MmU2OWUxMCBweTNrCis2NTMzMiBiMzkwMWM1NjYwZjcxZDBhNzJjMGYxNDU1NzA3YjE0YjAyNDU5MTRiIHB5M2sKKzY1MzMzIDE4NzM4OGMxMTUwNTBjOTkxMDQwODE3NWQyZjVmMjI0YTkxNjBiYjMgcmVsZWFzZTI0LW1haW50Cis2NTMzNCAwYWFmZDFhZTUxMjA4YTFiNmNjMzEyMGJlYWFiM2FkZGY1N2M0MjNiIHJlbGVhc2UyNS1tYWludAorNjUzMzUgYzRkMjRmYzhiYThhMmVjNjViMmE0M2Q4OGEzYjUyZDUwMGRjNDIyMyBsZWdhY3ktdHJ1bmsKKzY1MzM3IDEzYjJlMTFmM2NmNWJkNzQwNmRhZmE0OGRmMWZjYmMzN2QwZDBkMjIgcHkzaworNjUzMzggZmVjOTg1Y2JmNTNmYWIwNTgzNzk5NTM3MDAxMjQ2NGQ5NzA2OTg0NyBweTNrCis2NTMzOSA0NTUwMTQ0YjE1NjA2NmZmZmM4ZmE2ZGU4ODQ4MGMzMTU1NDk2ZjAwIGxlZ2FjeS10cnVuaworNjUzNDAgNTQyOGY3ZmExNzFjZjFiYTk2MmM4ZDliNjRkMjI0ZjNhYjkzNjE5NyBsZWdhY3ktdHJ1bmsKKzY1MzQxIGRlNzVlNzI4MGI3YWE2MThjY2E1ZGJmNzFiZWMyZTJmOTgwNWY3YmYgcHkzaworNjUzNDIgYTk0ZjEzNmI1MjgzODJjMzk0MjgzODUxMzIzYzg1NzhjMzAwMjkwZCBsZWdhY3ktdHJ1bmsKKzY1MzQzIDYzMWNkOWFlNWM4ZTIyZTIzYjdhZTJmZjZlZTUyZmFlNTRkMmYxOTYgcHkzaworNjUzNDQgNGZlY2M5Yjk5ZDk4NTIyZGYyZGY1NjM5ODdmNzcxNWM5MmFmYzljNSBweTNrCis2NTM0NSBhNDc2ZWY1ZWViYWRiZTQyOTc2ZTMzZWQ4OGQ1YTU1OGUwNmQ5Y2EzIHB5M2sKKzY1MzQ2IGM1OWU5MGQ4ZDFjNzA4MjFjZTEyMjRlNWYyNWE3NWFjMjRkYjQ5YjYgbGVnYWN5LXRydW5rCis2NTM0NyAzYzE1NWQ3ODEzY2MxNzVjYjkxNzlhMWIyZjRiZDE0Mzc5ZWQyZDg0IHB5M2sKKzY1MzQ5IGMyYjVhMGFiMzA3MDYzODZiOWYzYzkzYTgzZGU5NDc0ZWU0NjI2YjYgbGVnYWN5LXRydW5rCis2NTM1MCA3MGQ0MGY5YWQxZDdhY2QyNzg0ZTM2NzU2YzRiODY5ZGI3Y2MzMzgxIHB5M2sKKzY1MzUxIDBkMmQyNmZmZTIwZWIyNDhhYzM2ZTAyODAxNDliNDkzMTBmN2Y3OWMgbGVnYWN5LXRydW5rCis2NTM1MiAxNDgwMjBiNWM1MzEyZTM5ODAzYTAxZmJhMTY3YzQ1NDhkZjRkMzBjIHB5M2sKKzY1MzUzIDExNDA3NzRmNjlhNTcyYzk1YTQyMDFiMWNhOTQzOGZiOWRjNDVmOGMgbGVnYWN5LXRydW5rCis2NTM1NCBmMWZjN2Q5MzUwOWQzZmVkMjE5MDExYWY1NDlhODRhMGZlNWMzYjViIHB5M2sKKzY1MzU1IDVkMmNkOTZhMTk2YmZkMjJhNDM4M2MwNTY4Y2FjMmMzMWI3NzE4NTMgbGVnYWN5LXRydW5rCis2NTM2NSBmMTIxYTk2M2FiNjk0ZGJiZjM3NThjYmRhZmY0NmFiMmVjMzEwNDk4IHB5M2sKKzY1MzY2IGVmZjRjOTRjMDJjZDFlMTJmODhiMDUxYjQ1ZDczODBkMDY4MzlmMmYgbGVnYWN5LXRydW5rCis2NTM2NyBjMGRmMWM2NDc3YmI5Mjc3YWYzNDkyOTg4MjZhMjkyNWE2YTQwOTk1IHB5M2sKKzY1MzY4IDk1YmMwY2YzMTIwM2NmODc3MmI3MzdkMjAxZWNmOGQxODQxMWIzOTMgbGVnYWN5LXRydW5rCis2NTM2OSBjYzM3MTU3MGUxNDEzMjNmYTA0N2QzOGU3MmUyNzY1MDQyMTZjNmUxIHB5M2sKKzY1MzcwIDEzODE3NzQyYTc4MTBiYTE0MzZkOWM4MDNjNzY0M2U2OGM4NTlhMTEgcHkzaworNjUzNzEgMTliNmM2MzVmNWMxZDMzMDBlNjkxMzgzNTdhOThmYWIzNmFmOGY0MCBweTNrCis2NTM3NiAxNTIyZjNkNWJlNmU3YTk0Njk3MzQzYTUxMmVmOGIzYzc0MDEzZGNiIGxlZ2FjeS10cnVuaworNjUzNzggYjhhOGQxMTMwNzZmYjk0NTg0ZjkxOWE5NTFjNWQzM2U3NDhiYTEwNiBsZWdhY3ktdHJ1bmsKKzY1Mzc5IDRiNzJjN2Y2MzA3NzQ1Zjc4ODZiY2YzZWZjYTk5ZDg4NzczMjIyOTggbGVnYWN5LXRydW5rCis2NTM4MSAxM2ViYjRiNWQ4OWFhODlhMDY2MTg2Y2JkMTRjNzdkZDU1MTdkOTJmIHB5M2sKKzY1MzgyIDQ1YmNkOTZlNTZkMWQ0MjFmYWU3NmM2YzRhMzI3YzdkODY4ZTQwMmMgbGVnYWN5LXRydW5rCis2NTM4MyAwYWZmM2JmMGEzNDI2ZjEyNDQxOWI4NDA3Y2FjODg2NGZiYTFiNTM0IGxlZ2FjeS10cnVuaworNjUzODQgNjkyMmY4NGE3MTU4ZjlmYzkxNThjNGQ3NGQyZjRiMmE3ZGY3MTMzZCBweTNrCis2NTM4NSA2YjdjNjEwMjdlYjA0ZmEzNzE4ZTg3ZGI2NzljYWU1OWZkZWQxMzc4IGxlZ2FjeS10cnVuaworNjUzODYgNTI3OWQ3OTYxMDkzN2E1YjRjNDc1MDExOTc4MTNiZTk0M2Y3ZDNiYiBsZWdhY3ktdHJ1bmsKKzY1Mzg3IDRiMWJhNTBkM2JkZjdhZGUyNTViYzRkZjc5MjU1Mjc5MjkxMWEyMzQgbGVnYWN5LXRydW5rCis2NTM4OCAxNjYwYjMzNTM4MjEwMmRjNmNiMzkwNTE3MjE1MGFhNGU1NzI3ODAzIHB5M2sKKzY1Mzg5IGY4ZDJhMzE4NWQ5YWFmZjNjMmZhMTJiODc5N2RiMjRjNzI5YmI0YzcgcHkzaworNjUzOTAgNGY0NmYzZjcyMzFiZmY4OWMzOTgyOWQ4ZDdjZDU5MzQzOTk2ZTJkNyBweTNrCis2NTM5MSBkMjFjMGEyYjZiMTFhNGU5ZjY5YjQzMmQ4YzViYmVmZDk4MzEzZWU0IGxlZ2FjeS10cnVuaworNjUzOTIgMDAxOGIxOGY1ZjQ2NDBhNzI4NzU1ZTc1Nzc1NTNlOWZlMTQwMGVlYiBweTNrCis2NTM5MyBmMGJkMzdlYTY5NDA1Y2I0MzVlZTFjYTFiYmVlZTMzZGNhMTY0ZWViIGxlZ2FjeS10cnVuaworNjUzOTQgYjg5NDVkOGYwMGVhMjUzMDNmODdhZGFiNGRiZjNjZjQ2NGFlNzAxMyBweTNrCis2NTM5NSBhN2JmNTAzYzg1N2U5YzdlZjIzYWZkOGI3MWM1MWQxN2RjNjI3YzQ1IGxlZ2FjeS10cnVuaworNjUzOTYgZTg3OTZiNTVmODFiMDhkMDVmMmY3MmM2MTRmODFiYTI1ZjQ4YzAzNyBweTNrCis2NTM5OSBiYTg0YzFlM2RkNjBjZWZiM2NhNzYxZjJiMWIxYzg3NzBkNjc4MmE4IGxlZ2FjeS10cnVuaworNjU0MDAgNGE0YzIwYTIxNjdiYjE4M2U1N2E4NGU2MWM1OTFjNTA5Yzk5Yjg2ZCByZWxlYXNlMjUtbWFpbnQKKzY1NDAxIGQ1ODdhYTVlODI0ZDY1MTliY2RhNWIzYWNjNGYwOWZkYjBiNWFlZjMgcHkzaworNjU0MDIgZmVkZGFmMjFjMmE0OWY3ZGY5NDc3NWU2ZmVjZWRjZjM3ZDBhNzdkMyBsZWdhY3ktdHJ1bmsKKzY1NDAzIDc0NzViMGZjYzVmZjJiYzNkZTMwZTUzNzdjNzI1ZjBiYWI1NGUyNzMgcHkzaworNjU0MDQgNjU0NDI1NDYxNzNlYTQyODIwMjQxN2U4NGRjNjY5YjFlNDJjZGNkMCBweTNrCis2NTQxMiA3NjNmZjFiYTkxYzdmMmQzZTU5YjMzMTlkZDhiMDdjOTcxN2M3MjhmIHB5M2sKKzY1NDIwIGJmNTAwODVmYmNkMzJkMWM0MmQ0M2U2ZWMzNzY5MDYzMWUwNDBhYzMgcHkzaworNjU0MjIgOTc2MDdmY2I3YjI2MTk2MWViNjc5MzYxY2M1NzE5OTU1ZWNmMGE0YSBsZWdhY3ktdHJ1bmsKKzY1NDIzIGNjNDNiOTk4ZjViNTE4M2NiMWIxMjI4NGI1YzhhZGE1YzEzNDU3MWQgbGVnYWN5LXRydW5rCis2NTQyNCA0MzdkZGJiY2RkMjk0YjczNWU2OTBhNDUwMmY0M2NjYTIwZjQ5MGM4IHB5M2sKKzY1NDI1IDRlNmEwYWUxYThlN2FhZTk2ODQ3NDRmNmEyYjI0MTAwOTAzYWFjZDAgbGVnYWN5LXRydW5rCis2NTQyNiA3NGNjOTMyYWQ4ZGI2ODZiN2IwZDA4YTdhM2ViOWIxZTYzNGQyMjdhIHB5M2sKKzY1NDMwIDhmMzJiMTMyNjliNGIxYWU5NDdkZmU4MDU2ZTlmYmUwMmQ4ZDhmOWQgbGVnYWN5LXRydW5rCis2NTQzMSBiZDUxY2Y3MTc2MjQ1YjBlZWJmNmRkZDY4MThmNmY1M2JiMDNkOTQ3IHB5M2sKKzY1NDMyIGUwMDdhZjc5ZjY3YzZhNTE3MGE1YjI2Zjk5MTY4NmQ5ZjVjZTM5YmUgcHkzaworNjU0MzMgMWRiNDgzOTQ4MTA2Nzg5MzYzODFjYWNhZjMyYTMzOGUxNmQ0MzVhMiBweTNrCis2NTQzNyAzZTQ0ZGViYzJiYzkwYTc2YjFmNjE4M2RmZTkyNDFmYzE5NTE4YjJkIGxlZ2FjeS10cnVuaworNjU0MzggZGY1YjM5NGQxZTI0MzkyOTVhNjIwOTBlNjkyMzY1OTRmNTZlMTIwMSBsZWdhY3ktdHJ1bmsKKzY1NDM5IGU5MzQ5NTZkZGNlMzcyYzFlMjFkNzU3Y2M0MGRkMDYwYjAxODNkMTggcHkzaworNjU0NDAgNGU0NWQwY2ZhZjcxYjUyYmQxMzkxYzYyOTBkZTEzY2ZmZmJhYjMyNiBsZWdhY3ktdHJ1bmsKKzY1NDQxIDhjNDlhM2U5MGY0MGE4NGZiODM0OTNkYzM1ZDE5ODZlMjliNmEyNjggcHkzaworNjU0NDIgMTgwM2RlNWFlMGRjMzcwZGYyMzcyMjc2ZDViOGZmYzQ2YTA3N2U0NiBsZWdhY3ktdHJ1bmsKKzY1NDQzIDMzZGFhZTYzMzllZTNhMjcwYTI5MmRiNjdjNTE2NzIzYzAzM2ExZWYgcHkzaworNjU0NDQgOTg2Y2JkYWYxNTRmYzI3M2IzNzJiZTk4NmM0OTFhNDY3ZjQxMzY0MSBsZWdhY3ktdHJ1bmsKKzY1NDQ1IDVmM2VmNjQwMGE5Njc2MmU2MGMyN2VkNTFhMDU1ZTZkNzkxMWRjN2YgcHkzaworNjU0NDYgMjUxMjgyNTgwMDQxYTI4MDY4NzI4N2Q4NGE5OWJmZmMzZjIzZmIzNCBsZWdhY3ktdHJ1bmsKKzY1NDQ3IDBjNmI2YmQ4NWFjYWQzNzM3MWI5OWZhYTNjODFmY2VkOTc4NDg3NWYgcHkzaworNjU0NDkgMWYyMmRlOTNkYWY4ZTMzY2ZkMDBjN2FlMGU1MzMwNTdhZjc4ZThmOCBsZWdhY3ktdHJ1bmsKKzY1NDUwIDgyZDRkNmRlZTAzNDc1ZTNlNmFmYWE0YjAzODdiODM1Y2RmNjFlZGUgcHkzaworNjU0NTEgZDRkYjVkZWQ3NmNlMWZjMThjNGRjYzE0NjYxNjRkOGE0NDkwMzFmNSBsZWdhY3ktdHJ1bmsKKzY1NDUyIGQ3YmFlN2JkMzlkNmYyMzA2MjE1MDBkNzJkNGU4NmE3OWIzNDgwNDUgcHkzaworNjU0NTMgMmU4Y2RlZTM0ZDk3N2VlYWI4YTM5YTNhODI5YjUwYTJmMGQyOGJlMyBsZWdhY3ktdHJ1bmsKKzY1NDU0IGUzNjIwYjczYTdkMTRmNzMzYWM1MmM0NjE5OGI3NTIyODNkNWVmNGEgcHkzaworNjU0NTUgMzVlN2RjOTc3YTYzYzM2NDQ3M2YyYzQxYTg2N2Y4MGNlMjFkZDc4NiBsZWdhY3ktdHJ1bmsKKzY1NDU2IDg5NzJjZTU2MjRiNGQ5MTYwN2NhZmViMjAyMzUyNzlkZjA5Njk3YzcgcHkzaworNjU0NTcgYzc3YWM4YmRkM2ZlYjRjN2NkYTk0NmU0OTEzNjM1N2MwYTQxZjI0MSBsZWdhY3ktdHJ1bmsKKzY1NDU4IDQzMjJhZjFiNmQzZDZiZDVlZWIwMTY2ZTZiZDU4M2RkMTdmY2U2MDQgcHkzaworNjU0NTkgMjg4Y2ExYzcyODg4MDk0YjU5MzJiZmIyNzczNzQ4NDk3NWJmMTVhOSBsZWdhY3ktdHJ1bmsKKzY1NDYwIGRjODUwZGEwNGJkNTQ3MjE2ZTMxNDczZjY4NTAxZmFlMjEyYzYyZWYgcmVsZWFzZTI1LW1haW50Cis2NTQ2MSAxNTA4Y2VhMmM2YjU2ZTU4MDIyMmY4MjlmYjU2NDMwODM0MjE0MDM2IHJlbGVhc2UyNS1tYWludAorNjU0NjIgNTZiM2IyY2NmZDY4OGQ4YTU0ZTUxMjk4ZDBhY2JhNWY2MDJlYTU0YSBsZWdhY3ktdHJ1bmsKKzY1NDYzIDU1ZTMyNTgwOTRmMDMyZDNhNjAwYjViNGNiNzBkYjAyMDNiODk4ZTcgcHkzaworNjU0NjQgZmRmM2I2ZjQ5OWRhZTFlYTk0MDE5OTQ5MDE5ZTM2MWE3MDgyYTAyYiBsZWdhY3ktdHJ1bmsKKzY1NDY1IGRhZGE5NGE1MzI5ZjJmODI4ZDNlNzk2YzM4OWMxY2I1NTI1NjRjMjQgcHkzaworNjU0NjYgMWMyNGEwOWFjYjk3Yzk0MDhmOTc2NmM3MDhlODVmYzJmMTE4NDI4ZCByZWxlYXNlMjUtbWFpbnQKKzY1NDY3IDIxZjE0NjM4N2E2M2NmYjVjOTI4OGQ3YmI1YzhiMzIyYmRiZTBjZWMgbGVnYWN5LXRydW5rCis2NTQ2OCA5ZGNiMWQyOGVmYmI4ZjM5ZjNhNTRkMjQ2MTEwMjhhNzVmNjkyMDdjIHB5M2sKKzY1NDY5IDhiZDU2NTAxOTNjNjA4NGUzMzY4NTAwYWY0NDFjODc4MzIzNzlhN2MgbGVnYWN5LXRydW5rCis2NTQ3MiA0MGJlMzdlNjkxNThmNmZjZjZmOTI4YmY4ODQzZTVkMjdhZDNkOTU3IGxlZ2FjeS10cnVuaworNjU0NzUgNjQxZWRlZTRmY2IxNGYxZDYzY2UzYmUzY2RiZjIxZjE2YzExMmFkNyByZWxlYXNlMjUtbWFpbnQKKzY1NDc2IGMyMzViYTcwZTU5NGIxNDA2NzhiNTVkNDkzOGZiNDE4YWM0MzU4OWEgbGVnYWN5LXRydW5rCis2NTQ3NyBkZjBhYzA2Y2RkY2MzZThiNWMxMGE2ZGRjMGFmOWFjMjEyMWIyOGZkIGxlZ2FjeS10cnVuaworNjU0NzggNTEzNDA2YTM3ZTM4NTM2ZmVmZjVkZTQzOTY2NDY0ZjQ3YzFmMzQxNyBweTNrCis2NTQ3OSBiY2Y0MGM4MTg5MWUxMGY5ZDBlMzgxNTZhYTdjN2Y4MmZlZGZiZTZjIHB5M2sKKzY1NDgwIGFiNGM5YzM4NGQzMTg4MDIzNzRmMDkwMWRhMjE0NWNhNDdjZmNkYWQgbGVnYWN5LXRydW5rCis2NTQ4MSBhOGE4MjMyY2I1NDE5YTJiYmRkNTg1MzA0YTM3MDMxZmJiNjcxODliIGxlZ2FjeS10cnVuaworNjU0ODIgNTlmNGY5OTQ3MzBmYTc5YTgxOWI4NzIwODU1ZmQzYzc0YWMwYmFlMSBweTNrCis2NTQ4NyA0OTQxMWQ3ZGMyNTc0NzNiMDhkZDYwNDM3NWU4ODhjZGY0MjAxMWI1IGxlZ2FjeS10cnVuaworNjU0ODggZWE4M2ZlZTU3NDIyMzBiOTY2NDBhY2YwYmIwYjhlYTE3ZGZlN2FkMyBsZWdhY3ktdHJ1bmsKKzY1NDkwIDZjODhkZTNjNGQ0ZGQ4NTJhNmM0YTU3MjA2MDg5NDJkZTBlNTM1N2QgcHkzaworNjU1MDIgMjE3NDU1NjNlNjgwZTBkNGNmZjFkYTNjOWY1YzMzNTYxOTliOTI3MyBsZWdhY3ktdHJ1bmsKKzY1NTA2IDZiYzNjZmUwOThjZTQ1NzhmYjBlNzIyZDI0OWRlOWJlNzYzYjA2NjIgbGVnYWN5LXRydW5rCis2NTUwNyA1MWY1YzhlODg1Y2E4YzQ5ODNmMTNiMDQ1OWMzOGFlODE0MzY0MjkwIHB5M2sKKzY1NTA4IDkzYmNjOTIwMWVlMDdmNzM3MjRkNTcwYmQxYzM2MzY4OWYyZDE4OTUgbGVnYWN5LXRydW5rCis2NTUwOSBmYWNkODE5NzI1MjNiOTYzOGU5YzM4OTNjMmRmMDc3ODYzMjc1YzdjIHB5M2sKKzY1NTEwIDRkODQyN2QyNWY4NGUxY2M5N2Q2MDMwZTRiNjViYTliNDZlZTY2NzEgbGVnYWN5LXRydW5rCis2NTUxMSBjZmY4MmI5OTBhMjI5OGEyOTJjZTUwMTA3ODNlNjQyODc0ODM0MjQ3IHB5M2sKKzY1NTEyIDQ3Y2Q0NTE2ODYzZWVhN2JiZGQ2NGFmZmZkNmU0MmM3YWNkNzgyM2UgbGVnYWN5LXRydW5rCis2NTUxMyBlOWI2ZTQ0ODg4NzFlOWQyZDFjYzU0YWMwNDJlNWZkMDY5YjQyZWE4IHB5M2sKKzY1NTE0IDk3OWYwYTg5OTAzZjI5MzU4MmIzZWNlZThjNjNmMjcyMmIxYjcxZjggbGVnYWN5LXRydW5rCis2NTUxNSA1N2I4Yzc3OGRhMDczNGMzMTkwZGFiZjgzMjIwOTE0MzAzNzg3ZTRkIHB5M2sKKzY1NTE2IGY3ODQ2YTcxZTM4YTIxMTA4NjI4NjM2MTQzMDI4YjhmMjYzYzI0YTMgbGVnYWN5LXRydW5rCis2NTUxNyAzZDA4M2U2OTI2NWVmMGNjMjc1MGEyZjc3NzEyOWFjZGM2NWUzMTcxIHB5M2sKKzY1NTE4IDZjNmEwMzA1NjdkZDA2MzEyYWJlNDZkY2ZjY2UxZDMzYzk0N2M5MjcgbGVnYWN5LXRydW5rCis2NTUxOSBjZjMzMWZlZjMyOTNjNzIwMGU5N2FmYTY4NTA5NmFmZTkwYWRkMGE1IGxlZ2FjeS10cnVuaworNjU1MjAgNTk0Yzk5YzBmMDc4NGEyZjYwNDAwMmVmMWVhMzIxNmUwZmEzMTQ5MCBweTNrCis2NTUyMiBkZjI3N2U2NDJlNTgwMGIzOTRlMjY4OGNkNmY3ZDJkYjg5ZTMxOTI5IGxlZ2FjeS10cnVuaworNjU1MjMgMGRhMzAyZjdmZTk0MzJjNzMzZDkxZmIwOGEwNGEzOTM3ZjVmZGUwOSBweTNrCis2NTUyNCAzODFhNzFkZjA2MGU0ZjU5MzE5MzU2ZWE3YzZkN2Y2ODE3YTc3ZTIwIGxlZ2FjeS10cnVuaworNjU1MjUgZmZjMWQ4ZjhjNWFkMDI1YjZlMjlkMGRiOGZkODZjYzIwZjJjMDI2ZSBweTNrCis2NTUyOCA5ZmFhODc5MDIxMTQzNGY0NTQ2NTRjMGJiNjZjOTEwZTA3NjZlMmMzIGxlZ2FjeS10cnVuaworNjU1MzYgNjhkZjg0MmQ2MzMwODRmZGQ1YzllNmJmY2U1NWMyZjIxNzNlNTg0YiBsZWdhY3ktdHJ1bmsKKzY1NTM5IDViNzc0ZmUwNGM3ZTE3N2UzZDhiM2IyMzE1ZTBjODIwY2QyODBiYjEgbGVnYWN5LXRydW5rCis2NTU0MyBiNjU0ZDE0Y2I5ZDllZTBkNDdjZjIzZTZjMTY0YzhmMGNlYWU5ODcyIGxlZ2FjeS10cnVuaworNjU1NDQgZTVmYzNlMTk4ZGRhYzFjN2M3OWM1N2FlOTlhMDdlYWM4YzNjYjJiZCBsZWdhY3ktdHJ1bmsKKzY1NTQ1IDE2MzU4OTFiMThlODFhZDZmYzkxN2M2YTQ0MGUwYjZhZWRjN2QyNDggcHkzaworNjU1NTggMjM2NjM3MzkwNDU3ZTZiMzE4MWVhNmI2MmI3NjVmNDhhYTkyYzgzYSBsZWdhY3ktdHJ1bmsKKzY1NTU5IDc5ZWEzNDBkMWE1OWRhZmUwYzVkNjQxOWRhZTBkZTFkZTk1YjgxZTcgcHkzaworNjU1NjAgODNhNzIxOTM2NGIxMzY3MTg4M2QzZWY5NGEwMmM3YTBhNWUxMTgwNiBweTNrCis2NTU2MSA1NDkxMDhlOWEwYTMyMjMxN2I1Mjg5MmQzNDI5YTAwY2Y1YTA1NDg1IGxlZ2FjeS10cnVuaworNjU1NjIgOWNjYzE2ODJlMTliODc4OWY0MDJkNzdhYjFmZWI2MDgwNWUzZDQ4MiBsZWdhY3ktdHJ1bmsKKzY1NTYzIDUzYWRlOWU2OGI1NjJlMzNiNGU1OGUzNzUzMmRhZGRiNGQ3YTE2ZGQgbGVnYWN5LXRydW5rCis2NTU2NCAxMjM3M2ZhNjgwNGU0YjlmNjFlMGMzNTY1ZTk3ZmExYzhlYjI0MzE4IHB5M2sKKzY1NTY1IDAzZGFlMDM3YjJiNzI3NTU1ZDI4ZGMwZDZmNzZjZmE5NjkzM2MzMTAgbGVnYWN5LXRydW5rCis2NTU3OCBmMWZjOTQ3NzIyZjI5YTQzY2IyOTdkNDkxODYxM2MyZmU3ZTZkOTJiIGxlZ2FjeS10cnVuaworNjU1ODAgMDQyZDE2YTA1MDE2OTExYmYwOWJjYzg4MTdjOGIyYWNlOTFjZmE3YiBweTNrCis2NTU4MSBjOGM5ZTc4ZmMwODIzODAxYTczN2JmMmNiMGMwM2Q1MjAwMTkzMThmIGxlZ2FjeS10cnVuaworNjU1ODIgODViNjdmYjU2NzJiOTlmMzEyOWRlMDMzZjBjNjAxZmViNmQ2NWZhNyBweTNrCis2NTU4MyBjZmFkM2Y3ZjVlNjM4ZWMxZGQ4NDcxNjRmMWI3OTUwN2M2MzA3ZTdmIHB5M2sKKzY1NTg0IDBiZjZjNDJhYjRlNDIzODU2Yjg5NDYzOGVhYzkzMTc4Y2QzYTk3NmMgbGVnYWN5LXRydW5rCis2NTU4NSAyYjNkNDJlZmZlNWJlMTY5YTc5ZDkxNTliZjY3NDBiMTQ1ZDJhNjhmIHB5M2sKKzY1NTg2IDY0MTZlNjA0NGEzMDE2NzZmMDJhNmE1YjkyZWZkYjg5ZjI2OThmZjIgbGVnYWN5LXRydW5rCis2NTU4NyBhNmQ2YzJmYWQyMjAwZWNmOWYyNjg0Mzc4NTAyMzg5N2UxMjIwNTI0IHB5M2sKKzY1NTg4IDY1OTAxZmZmZmM2YWJlNWEzMGJkZDFjZDAzMTA4ZTlhNzViYzQzMGQgbGVnYWN5LXRydW5rCis2NTU4OSA0ODdlMGQ5YTM4MWE4MDAwMDZhZjc2NzQyODEwYzE5NjQxZGVlODQ0IHB5M2sKKzY1NTkxIGU2ZmU4M2MyZTI2MjA2ZjRhYWU2MmMyMzM2ZTU5ZmRkODRjZTRkOTYgbGVnYWN5LXRydW5rCis2NTU5MiBiMmM1MDVkNGEyMDNkODJkODAyZTVkODQ3NGVkNjJlMzMzZDkzNDQzIHB5M2sKKzY1NTkzIGZkN2I5M2EwMWMwNGI3ZTRlZDFkOTczNWRlNGFmMWY3NzY4YTE5NjkgcHkzaworNjU1OTQgOTQ5YjlhMmI5ODY3NjEwOTYyNzBlMTBmNWU2YWEwMmQ0MzViMzc4NiBweTNrCis2NTU5NSBlMmM3MDZmOTkwNmMzODViOTc5MzZlYTA1OTZjODUyNjkyZmEyOGZlIHB5M2sKKzY1NjAxIDcyMjRmZmY5ODgyM2JjOTgzMDA3OTliM2NmOWM3NjZlNzZkNjU2NWQgbGVnYWN5LXRydW5rCis2NTYwNSA0Nzk2NzY5MGI1ODU1ZWM5Y2EzMzFhZWIyMzFlY2U0MThhNzVhMTNlIGxlZ2FjeS10cnVuaworNjU2MDYgYWFkNTgwOWZjNDE5NTViMTQxMWRhNzc3MGQ4ZjY3ODBiNjVmODVlNyBsZWdhY3ktdHJ1bmsKKzY1NjA3IGVlMGE1MmM5ODJlNWY2YWE0NWRlZjA4YTNjY2U4YmI2MGYwZmUyZmYgcHkzaworNjU2MDggNjNhZWE5OWM5NzFhNjdkOGVjMGJkOWNmOWQ5ZGY2N2M3MTAyYmRmYyBsZWdhY3ktdHJ1bmsKKzY1NjA5IGQ2MTVhYTlmZGYzNjEwNDhkZTJkYjE0ZmYzMDMyOTdiMGQyZDdhN2MgbGVnYWN5LXRydW5rCis2NTYxMCA2ZDhkOTIwY2Q5MzI0MGE0N2NkMGIyMjZkYjgyMTQ3NzNkYmM4ZTZhIGxlZ2FjeS10cnVuaworNjU2MTEgMWExMTcxN2ExNTRiNGRmMjMwNWRjM2I0ZjliYmViNDRlZjNhOGI1MiBweTNrCis2NTYxMiBkMzUyOTY0NGM2ODIzZWM0ZmFjN2QxYjhhMTc0OTBlMjg4Nzg2NjBlIHB5M2sKKzY1NjEzIDM4OGE0YmU3ZDY3OWExNWYxZjI1ODZkODAxY2Y4MzE2NTJhOWYxZWQgbGVnYWN5LXRydW5rCis2NTYxNCA5OWY5YmVhOTA5YjU1OWE3MmY0NGNlNDkxMTc0ZGJkODVmMTQwNmFlIHB5M2sKKzY1NjE1IGIzYWJmZjE3ZTJkZDE3NGQ0N2Y1MDlhMzg1NWM1ODEwNWRhYzAxMTEgbGVnYWN5LXRydW5rCis2NTYxNiBhY2I5OGRiYjFiMDRmZWUzNTA4ZDMxYmQwYzY1YmMzMjExMDZkY2JlIHB5M2sKKzY1NjE3IGJjNmEzNTcyYmM4OTZkM2IxN2ZlNGM5ZWViNjQ3NjcxNDk2NzY5NzMgbGVnYWN5LXRydW5rCis2NTYxOCA5Zjg0MzM5NmRmODk4ZGFlYjM2MDEyYjIyOThhOWVlZWUyNGQwYjc0IHB5M2sKKzY1NjE5IDMwMTM1YjZlMzhmZGFmNzMyMjIyZTA5MjRiMjM5OGEwNGI1YjdlNTYgbGVnYWN5LXRydW5rCis2NTYyMCAzM2NkNmM1ZDFhMDRiMWY4ZDM4MTkxMmQ0YTFjZGU4NmQ5MDNhYWQ5IHB5M2sKKzY1NjIyIDVhMTVhNzA0NGU3ZDhkNmJhOGMyYTljMzAzYTA3MTYyOGNhZjRmMWYgbGVnYWN5LXRydW5rCis2NTYyNCBhYzgxMDMzNDFiODBlOTAyMDVjZGZiNGIwNmNkZDFhYjk1Nzc4NDFjIHJlbGVhc2UyNS1tYWludAorNjU2MjYgMDU0ZGMxMTFiMWQ5YzExYTcwZDczYmU2M2Q3NjNkNmYzN2E4MWFjZiBweTNrCis2NTYyNyA2ZTRmNDdhNjllZmE3NTQyMjc0ZWVhYjY0MmFjYmM5N2FlYTRhMDA4IHB5M2sKKzY1NjM3IDY5NDgxNGQ3YjEwNDNjMTM1MGViNDhlM2NhM2VlYjE3MWI2MDFiZjcgbGVnYWN5LXRydW5rCis2NTYzOCAwYjY3MWJjZTY5NGU0ODk3ODI5NjQxYWVlZDYwZTQ4ZmVlNGU3MGRkIHJlbGVhc2UyNS1tYWludAorNjU2MzkgY2U1OWRhYzNmY2EyNGNiNmEzZGViYzg4M2QyYTdhNGM1YmQzNTBhNSBsZWdhY3ktdHJ1bmsKKzY1NjQxIGNmNjk4NWNiNmQxNTZkZGJhY2IwMThkOWEwN2ViNzhlMWQ0YzAyODEgbGVnYWN5LXRydW5rCis2NTY0MiA3NTI3ZGEyYjA1ZThhOTg4MzZkMzliNzAyOTkxNzg3NDJlODk2M2NjIGxlZ2FjeS10cnVuaworNjU2NDMgZDIxZDhjYmU2YmQ0ZGQ3NDBhZTM2OTJjYjc1YWJjNWM1NmI2ZjMxNSBweTNrCis2NTY0NCAwYWFlNzJmOGRkYTkwNDk5M2Q3ZThiZmNjMTY0MTYzZTJlYjQ4YmJlIGxlZ2FjeS10cnVuaworNjU2NDUgMjlkOTM2YTRmODg1ODg2ZmQwNzVlMDQ2NmE2OTM5MDEzYWRlZDc4MyBsZWdhY3ktdHJ1bmsKKzY1NjQ3IGViZWFhNjUzNmQzMjhhMzE4ODNlNDMzNzk1Y2YzNzdkZWE2NzVmYzQgcHkzaworNjU2NDggNzc3OWFmMzg4YWVjMWEzZTAwMjMyMjUyMzdkOWUwZDFjZjU1YmViNCBweTNrCis2NTY0OSBlZjQxZGFlMzBmMzVkMzZlZDQ3ZTkyZGZkZTg5M2YzMTE0MzA0M2NmIHJlbGVhc2UyNS1tYWludAorNjU2NTAgZWVmZTQ0NTBmNzczZjJjZmExZjQ1ZDQ5NDM5NDE3MjI3MmE3NmFmNiByZWxlYXNlMjUtbWFpbnQKKzY1NjUxIGRkN2UyZDY4YjZkZGRmMTYwODk5Njc0Mjk4YWU4MDdjYjlhMjQzYjEgcmVsZWFzZTI1LW1haW50Cis2NTY1MiBhMzM5M2U1ODFiMTViODRmOTE5Y2UyOGVmMWFiMThiNzc1ODc0MGI3IGxlZ2FjeS10cnVuaworNjU2NTMgYjIxOWQ1NTQwNGU3NmFhNjY0ZTJiOTg3MzcwNTgxMzFmMGNjODBmZSBsZWdhY3ktdHJ1bmsKKzY1NjU0IGI4YzRiZjM5Mzc5NGU5YjFlNzczNzg4YjA3Yjk0M2E5NDdhOTY3NWYgbGVnYWN5LXRydW5rCis2NTY1NSA3OWZhM2UwYzA5ODg5YWFjYmFhMDA4MmI2MmQ3NjQ0Zjc5YzJkZTgxIGxlZ2FjeS10cnVuaworNjU2NTYgM2M4ZWYzNDY2OTIzNzEyMzhkMTAwMjU1NmFiNTIwOWZiYjRiY2Y2MyBweTNrCis2NTY1NyA3MDE1MTY1NTUzOTM3MzZmOWM2OTllYzNlNmNlODIzOGVkYTllN2FlIHB5M2sKKzY1NjU4IGYwNDcyNTMzYmZjOTg5MDYzNWY4OTI4NDQ3NzdkNzNiODcyYjUyZjMgbGVnYWN5LXRydW5rCis2NTY1OSA3OWMyOTE2ZmU1OGU0MWU3MWMyOTc4NTY4NWM2YTlkOGE1Y2QxZjMyIGxlZ2FjeS10cnVuaworNjU2NjEgY2QzYjBiN2ZkOGUxYjdlMmUzY2IzZWYxY2ZlYzcwMmE0ZGYyZDZmNCBweTNrCis2NTY2MiAxMzFmODViYjY5MzAwYzQ4ZTZkOWY2ZGEyNzU3YzIyMTRmOGEwYzk1IHJlbGVhc2UyNS1tYWludAorNjU2NjMgZWNjZDk0Mjk3MDJlNGY1NzNiZGY0NDJiNmZiYmJhOGU5YzRlOTRhNSBsZWdhY3ktdHJ1bmsKKzY1NjY0IGQ3OGUyNGIxMmY2MzM2Yjg3YTUxNmI1MmRiMDNkZDA0MmJkMGZlZTggcHkzaworNjU2NjUgNTBmZmZjODAwODQ1N2E5YmUwZWNlZjg2N2FhZTEyMTQzZjQxZTUxOSBsZWdhY3ktdHJ1bmsKKzY1NjY2IDlkNzhmZDYwYmYyYTVlYWNkNzQ1YWUzNGFmYzg0NjE2OGNhOGNhNjIgcHkzaworNjU2NjcgMDYwMGZjZTY3ODM1MjI4OGNkYjc3ODc2NDM3Mjg0NmU0ZGU3MjUxNSBsZWdhY3ktdHJ1bmsKKzY1NjY4IDRmMWZlOGYxNmVmOTNkNjNmOGYzODE3YTJlNjljZTVmYTA1YWZiYTMgbGVnYWN5LXRydW5rCis2NTY2OSAwNDU1NmUyYTc5ODRmOTQxODE2OWRhMTU2YzQ5ODFkNGI2Zjk1N2Y4IHB5M2sKKzY1NjcwIGY2MDI2YTM3OThkNDQwMTNjYzA3NGZiZDRiMTFlMDIzMWRiN2VkMzUgcHkzaworNjU2NzEgNmIxOTA4ZWE2YjUzNTQ0ZjYzZDllYTFkNWVhMGM4ZGJjNTJhNGE5ZSBweTNrCis2NTY3MiA3MGYyNzk1ZDY5MDI4MjYxNTJlOTBiOGZiNTllYWU1Mjk3NzNhYzlhIGxlZ2FjeS10cnVuaworNjU2NzMgNjFkNTBkYTU4MTZhMzg3MjBhYjQ0OTJlMDI3MDJjZWE0MTQ5YWNmMCBweTNrCis2NTY3NCBmMTI2MGY0MzExZWU3OGM4NTEzMjkzYzJjYWQ0MzFjMmMzODU0NjY1IHB5M2sKKzY1Njc2IGFkZTMzZTEzZWM2OTMwNjZjNmRkNjdmOTFhNTJkNTFlZTk3OGY0Y2EgcHkzaworNjU2NzcgZTg1MDlhYzUwMWYzMjRkODU3NzVlNDA0ZjAxYmQyY2Y0MjMxYWViNyBsZWdhY3ktdHJ1bmsKKzY1Njc4IGI3NTYyMWE0MjBlY2IyOGU5MjM5MDBhNDA3MWUwNGQxOTk2YmY3OTAgbGVnYWN5LXRydW5rCis2NTY3OSBhZjczODhhZDMxNjRlYjc0ZGRkZDk4NTEwYzMwMGUwNTFkNDQ1ZWM4IGxlZ2FjeS10cnVuaworNjU2ODAgMjkzZGY4MTUzZjYxODU4ZWFjYmNiOWEyYzhjODA1MDUzZWQ4YzY4MyBweTNrCis2NTY4MSBmOGEzNDZmY2QwNDE5NjMyMWFjNmIzNzM3Y2M5ZmI3ODc3MTg5YTVlIGxlZ2FjeS10cnVuaworNjU2ODIgNjMzZmIwMjYwYWIzMjI1NDQzZmRlZTJlY2FjZjZmODA4OWExMTRlMyBsZWdhY3ktdHJ1bmsKKzY1NjgzIDM2NTBiMWNlNGJkODQ2NDEwZGE2OGJmNGNkNDJiYTE3YzRjM2YxZjAgbGVnYWN5LXRydW5rCis2NTY4NCA2MGUwZTA5NzYzYWI2MGQ0NDA2YzBiYTk1ZWNjNTczNmNiNjE2YTY4IGxlZ2FjeS10cnVuaworNjU2ODUgMTM2ZjYxYjc0ZThmZTlkMWI2MmZmMmY1YTQ3OTQ2MzFjODkwYzJiMCBweTNrCis2NTY4NiA2NzkzODU3NWFmYzZjYzZjZTY4NTdmYzVkNTg1NjIxZDc1YmM3OTEwIGxlZ2FjeS10cnVuaworNjU2ODcgNTRhMmRiOGZkYzYyNmRlOTRlMzRhY2U0YzQwYzc4NTBjZTBjMWFiZSBweTNrCis2NTY4OCAwYTQzMzc2YmFhNmJmMmE5MDdmMDJkNjk3Y2ZlNWM4MGE5NWQxNjc0IHB5M2sKKzY1Njg5IGU5NjFjYzAxNDYxOTE0MWQyOTYyMzhlYjUwYWI1NGE0YmE4NDAzN2UgcHkzaworNjU2OTAgYzZmMGRlNWYyYzY4NTIzZDZiMjIyZGI2OGNmMWM3NGY1YmNkN2M2OCBweTNrCis2NTY5MSA5MjMzMjg2YzdlZDBkYzVlNzJiODM4Y2JjZTY0MDQwYmZhZmZiY2RmIHRsZWUtYXN0LW9wdGltaXplCis2NTY5MiAxZDgxNzFkNjQ0NjNlZDAyNGViYzNiNjFkNGRmODhhNmQ3NDY5ZDlmIHB5M2sKKzY1NjkzIGNkZDg5ODQzM2Q1ODhlMzBkZjViOTg2YWEzNDUyN2Y2NDViYTI4MzMgbGVnYWN5LXRydW5rCis2NTY5NCBjMDU3OTg5ZTg3ZWI5ZGRlYTE4MTUxOWZmOTkzYTg4OTM4ODdjMjUwIHB5M2sKKzY1NzAwIDE4MDA2MmUzMzk1Njk4MGQ1NWI2MGY0M2JjYmQwOWYxOTIzMTQzOTAgbGVnYWN5LXRydW5rCis2NTcwMiA4MTYzZGFlZTc4NWQ0MGEzZDdmYjU1YWQwZDlmZGIxNDBmMTJhNzdlIGxlZ2FjeS10cnVuaworNjU3MDMgZjYyN2Y4MDIwMWQzOWZlMTVlZjliMmVmNmRmMTNkYmJiMDllYTY0ZiBsZWdhY3ktdHJ1bmsKKzY1NzA0IGU2MWRlYjY5MGU3MDg0MDJkNDUyZWE2Y2ZlNTdlMTRjYzExZWUxNDEgcHkzaworNjU3MDUgYTNmOTUwZDE1YzA4M2Y1NmFkZDFhZjNkYTAyZGMxNDI5ZjA4ZTg4NiBweTNrCis2NTcwNiBjMzdmNGIwMzYzN2YyMjY1ODM5MzQ5MzJkODk0MDJlMDQ4MDlkNmQ0IGxlZ2FjeS10cnVuaworNjU3MDcgNzEwMTQ2ODVlMGU1ZjViOTllM2M3MWQ3ODgyOWZhOTQ2MTZkYzAzYyBsZWdhY3ktdHJ1bmsKKzY1NzA5IDc4MGUxNzAzODkwMjk5YWJhYWUxMDQzNmFiMjA5ZDUyMGVlYjA1ZTMgcHkzaworNjU3MTAgMTcwMjg3M2YyNDkyZjIzMDUyNWE3ZjkwNjFkYWFiMDRmZmJhODkwMSBsZWdhY3ktdHJ1bmsKKzY1NzExIGM2ZDc4Zjg2OTQwNWQ3NTE0ZDRjYTcyYjEzOTg3OTk0ZDVkYzljNDAgcHkzaworNjU3MTIgMWVkODZjZTBiZWIyNjZhMjdkOWZjY2UyZjUyMTU2YWI5NTllODRkZSBweTNrCis2NTcxMyBlYWQzNThjZTRkOGFiMDlmZjI3MzhiZmE4ZmFjMjAyNmU4NWNmNmJkIGxlZ2FjeS10cnVuaworNjU3MTQgODc4ODYxNTE1YjE2MGM5YWJiNjdmZmIzNmI3OTQwNDJhNDlhYzhlYyBweTNrCis2NTcxNSA5ZmIxMGYzZDBmODczMDllOTU0OGNlMTQ0NmVkYTlmYTU1N2Y5YTg5IGxlZ2FjeS10cnVuaworNjU3MTYgODk0YjRhY2ZmZmU0MGQwYmI1Y2VkNjc0ZmEwYTU4Yzg0NGY1Y2I5MSBsZWdhY3ktdHJ1bmsKKzY1NzE3IDhjMGY4NTE5NmUzN2MyZTExZGRmYzM2NzkyNWRiZWY0ZjM5YzAzNmQgcHkzaworNjU3MTkgOTE4YTkxOGE5OTk2YzYwOTA3MGVkMDlkNDNhOTJhN2ZlZTEzYWZkMSBsZWdhY3ktdHJ1bmsKKzY1NzIwIGI5NzNmY2NkMDJhNWI5MDc4MWVjMjczNDQ4YmU2MDliMzMwYTc2NDIgcHkzaworNjU3MjEgY2E0YzUxMzU4NjI5Nzg4YzE3ZGExNTBhODgyY2YyMGM5NDI5N2Q4MiBsZWdhY3ktdHJ1bmsKKzY1NzIyIDFkNjVjOGY1YzA4ZTEzODM1N2RkYTFjMjQ5ZjBhYTBhMzI2NGFjMDcgcHkzaworNjU3MjMgNWRmNTZjZDU1MTlhNTY5NDdkMDRjZjhlYmQyNzU3MDJhYzkwMmE4NSBweTNrCis2NTcyNCAyZDc2YWY3Zjc3MDI2OGE5MmRiNDQ0MDc4YTgyYjlmNjFlYzNhMzkzIGxlZ2FjeS10cnVuaworNjU3MjYgYjYwZTA5MjhkYjNlYzdhMTA1MjQwM2JiMjgyMDVkZmI0YjUxYWZlNSBsZWdhY3ktdHJ1bmsKKzY1NzMxIGUwYzY1OTIyYjg3ODdkZjhhNDI5ZTUwNzBlOTBkNjBiNzc5Yzk0OWYgcHkzaworNjU3MzIgOWRlNjhhZDg2MDc4YzM2MWFiMzBhMThiMmM3Njc2YzlkNTdjYmFiMyBsZWdhY3ktdHJ1bmsKKzY1NzMzIGFlZmI4ZTlkMzg0NGYxZTVlYThhZDM2Y2RjOWMxNmQzMzAwZTczZTcgbGVnYWN5LXRydW5rCis2NTczNCAzMWMzOWE2MmQzZjk2NTVhNzJmODA4MDA0NzFiYzVmNTcwNTNjMDkzIHB5M2sKKzY1NzM1IGViYTc0NTdmNGJiNjkzYjkwYzExMjZhNzA1Yjc3NjYxMjU1Y2U0NjEgcHkzaworNjU3MzYgMTUzZTllNjc4NjQ2NGExODQzNzNlOWVjOWEwZmUwMDdkOWE0MGZiZiBsZWdhY3ktdHJ1bmsKKzY1NzM3IGZmODU2NTM1NDVmNWNhNzBmNGYwZWYyYjJkMzQ3ZTdjZDVhYzdiYTEgbGVnYWN5LXRydW5rCis2NTczOCBlYjFlNjRlNTM1ZTZhMTcxMjZlZmRiNGU5MDI4YzA5NTdkZTc3NmM1IGxlZ2FjeS10cnVuaworNjU3MzkgNWEzNWM5NjNlNzcxMjJlYTZjMzQ5YWM5ZTU4NmQ2NTYxOTkxNTNkNCBsZWdhY3ktdHJ1bmsKKzY1NzQwIGQ5OWZlNTZmOWZmOGQ2NDFjMTYwM2U3NjFhNjhiZDBkOWZkOGRmZDEgcHkzaworNjU3NDEgYWY0ZTQwZjg5M2JkOTUwZDA0NzEzMWZjZjI1MDNlZjkwMTNhMjBhZSBsZWdhY3ktdHJ1bmsKKzY1NzQyIDJiZTE3ZDM2OGE5YzViOGZlNjA4YmZmODVlNzY0YmI3NWJiNjI2NzcgbGVnYWN5LXRydW5rCis2NTc0MyBmMjRmMjZhMTIxODY3NWVlMDc0MjFmOGMzMzdlNmM1OWNhODE4ZDAwIHB5M2sKKzY1NzQ0IDQ4ZGRkZmQyZmJmM2JjMDAzNDcxYTJiZGFiM2U4YWNiNTBjMjcyYmUgcHkzaworNjU3NDUgYWFlZjA4YWEyYTdlZmZiYWMyOWIxMzg3ZWYzODk1M2FhNjZjNjcyMCBsZWdhY3ktdHJ1bmsKKzY1NzQ2IDYxMmIwYzBlNWEwZjMzZDhiOTJkNGFmMWY1NDIyMTFhYTA1NjUxMjEgcHkzaworNjU3NDcgZDlkNTE4Y2Q0OTNjMzJlZmFmYzhhM2JjNTI1MTI0ODIyMWY4NGM3MiByZWxlYXNlMjUtbWFpbnQKKzY1NzQ4IGM3NDgxYzczYzE2M2ExOTdhN2Y5ODJhM2ViMTg2YjZiZWRiMTBiZDEgbGVnYWN5LXRydW5rCis2NTc0OSA0MzVkNjRmZDEzYTljZDlkNGQzMDZlNDM2MTRmYTRmZjVkOWQ5MzU4IHJlbGVhc2UyNS1tYWludAorNjU3NTAgZjRjMmVhYWQwOWY4NDVlMTM4MzBjNDllYTg3YmZhMzVhNGY5YzQwNyBweTNrCis2NTc1MSA0NTU2OTg5NWY3YjU2MTRhYWQ1M2ZjZWM4M2I4ZGIzYTRkMjFiMTMyIHB5M2sKKzY1NzUyIGRkYzY1Y2QyZjBiYmJhYzM1ZjFkZjRjMDFhNTYzOTY5MjQ1MmE2OTUgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzUzIDkwZDA0OTk4M2Y1YjNkZmU2Yzc3MzY5OTAyN2RiMWY4ZDk5ZDQ1ODQgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU0IDA3NDA5ZTk4NWMzOWM5YWExNzFjZmViOGRmMTc2MTU0NzgzMjE2MTMgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU1IDljNDk4OTA3MjE4ZmQ3ZTgwYjJmMzIxOTEyNTY4ZjMyZDQ5ZDU5ZDYgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU2IGZjMWEwYWNmY2VmODA4YmYzY2Y0MzgxOGE1NTQ4NjMxOWVlMTgxNWMgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU3IGRhNTgzMzNlYzdkYTc2MWM1MTEyZjc3OGU1NWFiZmYwNmMxMDFmYmEgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU4IDUwNDkzZjlkZDhjNzFhNGE0NzFiY2VmY2I1OWI0Y2Y4YjExNDk5ZDAgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzU5IDE2YjllZTFlZWUzMWZhMjU5NDI4ODVhMTg0MmViMDI4MDkzNWQ3NzUgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzYwIDkzYWI5ZmRhODBhYjBjNGEwZDUzNjI5Zjc3NmRhMDllNDg1OGMxMGYgcHkzaworNjU3NjEgZjQ4Mjg3NWUyYTAzMWFhYjZjMzQ2OTg1ZmEwMzJmMzkyYmFlOTYwMCBsZWdhY3ktdHJ1bmsKKzY1NzYyIGY0YzIyNmM2MWI3MWM4ZjZiM2U4YzY0YWI3M2FlNGNiZWIyYmExMTUgbGVnYWN5LXRydW5rCis2NTc2MyAyZjdlNTdmYzFmM2E2NjZiNTcyY2VhMzhmYjMxNGQzMTg0MDg2ZTFjIHRsZWUtYXN0LW9wdGltaXplCis2NTc2NCBhOGYzZTYzYjQ3ZTQyNDJkMzkyNzgzZTliMDE0N2M1YWI1MjAzOTc4IHRsZWUtYXN0LW9wdGltaXplCis2NTc2NSAzZGU2OWU2YjJjYjI1MjFkOGZiNmI1YjU2ZDlhOGIwYjc0YjA0MzQ5IHRsZWUtYXN0LW9wdGltaXplCis2NTc2NiBjNTA1OWIxMmRkYzZkMTg0NmIzMDUwMDUzODU4ZGUzYjczZWU2MzU4IHRsZWUtYXN0LW9wdGltaXplCis2NTc2NyA5Yjk4NTY3ZDVkZGU1MDcwNGFlOGE1NmQzYWJlMDlhMTk0ZThjZTFmIHRsZWUtYXN0LW9wdGltaXplCis2NTc2OCA3YTAzODAyMGM4ZGQ2M2U2ZGJhZDI2YzYzMWM4NGQ0YTFmNzRkOGU3IGxlZ2FjeS10cnVuaworNjU3NjkgY2FiZjk3YjgyMzMwODYxZTViNjUxMGI0ZjI2MTRiYmNlZDJiNmU4ZiBweTNrCis2NTc3MCBiMzc3YzE0NzMyM2ViZjllMDg2NzJiMjE0ZDY0MDFmZTBlMzVmZmI0IHB5M2sKKzY1NzcxIGU0Yzk4ZDYxNTdjNzAxOTdiYjRhYzZhNGI0MmNmNWRkY2JkYWM5YzUgcHkzaworNjU3NzIgNzFiNTNkNmVhN2E0NWZkYjVlMGRiNjVhZWExNTMyMmM0OTQ4MTIwOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NzMgZDdkNzEzOWQ1ODQwNmI2NTVjYTliYzE4MmJjNDkzMWY3MmUxMTNmNSBsZWdhY3ktdHJ1bmsKKzY1Nzc0IDFkODhhZDVmNGRlZjMzNjNmMjQ4NTE3ZWQzOTUwODFhMGRkYjgzMWIgcHkzaworNjU3NzUgYzM2Y2NmMmE3MWUxNmU2MTk1ZmI3NzM0ZDZjMzIxZGZjYWU5MmVlZCBsZWdhY3ktdHJ1bmsKKzY1Nzc2IGIyOWRmMzY0MmI5N2QzYjZmYzViZTE1MDAwMDc3ZGM3ZDgxNGUwYjcgcHkzaworNjU3NzcgNDBjMDdhNjFlMWMyNmMxZmZhMDRkZDE5NTJiOTQ1NTcyMTdmNDQ4OCBweTNrCis2NTc3OCAxMmMzYTAzMzg5ZTdmM2UyMGE3ZWM4MmI1YzY1MjJhZWRmZTJhOWM0IHB5M2sKKzY1Nzc5IDQ5MjEzZDQyOWM2ODFhMDFkYWUwYjM3ZGE5YWU5OGI5OWYxN2Y5MTIgcHkzaworNjU3ODAgMmJlYmMwYTZkMDQyODBkMGM3MzI2N2Y1ZGRiZjQ3OTI0NzBlNzk2YyBsZWdhY3ktdHJ1bmsKKzY1NzgxIDA2ODkxYWVjNDFkZTZlNjliNzFjNTU1ZWJiYzMyZTgyMzFkNTEyMGEgcHkzaworNjU3ODIgMTk1ZGE2ZDBjNzdjMTA2OGUyOGFkMjk4ODkzZDk4YzlkMzJlOTc0OSBsZWdhY3ktdHJ1bmsKKzY1NzgzIDgwYTlmZjU5ZWIwMjAyYjJjMmM3ZTNiNTI1MTY5NjdhNDhjYzE4NjYgcHkzaworNjU3ODUgNTMwYjRjYjE5NDQyNWEyM2E0NmFjMjhjMjE0YmY1MWRkZjljMjk2MSBsZWdhY3ktdHJ1bmsKKzY1Nzg3IDc1NjU4NTQzYjkxOWJmNTM1NDI4MzNjMGIyMWI5N2I4NzQxMGUxMzggbGVnYWN5LXRydW5rCis2NTc4OCAyMmFkODhlNWMwMDNhNDZkMzQ4MWVmMWU0ZDYzMzAzZTIzYzQyYTRkIHB5M2sKKzY1Nzg5IDQzZmE1MGI5ZWIxMjhmZDVmNzAyYzUyNzQwODc5M2QxNzljYTY2MWUgcmVsZWFzZTI1LW1haW50Cis2NTc5MCA1NTI5NTMzMDZkMzQyYzU4ZTY4MWM3NmQ4NzUwNzg3MDU3ZThjNTM4IHJlbGVhc2UyNS1tYWludAorNjU3OTEgOGQ5OWQwM2EwNmU0NGE3NzQ3YzFkMWMwZjUyNTlmOGE1OTgxMTRhMCBsZWdhY3ktdHJ1bmsKKzY1NzkyIGIwYzRhYjgyMzNmYTliNWNmYmZjYmQ4MDU4MDllOTdmNGUyYmQ5ODkgcHkzaworNjU3OTMgZDdmYmU3M2ZlN2Y3NDQ3OGVlNzI3NTMxNWU1MWE2NGI1Y2JhMzIyNiBsZWdhY3ktdHJ1bmsKKzY1Nzk0IGRkOTkyYjY0MDNmNGNmZGI4MDM1YTQ4YWZkZDMzNTY4MzQ4NDRjOGEgcHkzaworNjU3OTUgNjJjNjlkODhlOTg1ZDdjOTdhNzBjN2JhOTNmZWViMWU1NmQwYTBhYiBsZWdhY3ktdHJ1bmsKKzY1Nzk2IGVkYjVhODU5Mzc0OWU2Y2VjOWFmODI2YjIwYzA4OWIwYzQzMDJmYzQgcHkzaworNjU3OTcgODk1MzhkNWZiODFhZGIyZmIyMDQwMzZhYmQzN2JhMmMxNDQ3ZjMyMSBweTNrCis2NTc5OCA5OWEyZWU0ZTNhMDU3M2MwZjRjNTJlNGE3MDVjYTg3YmJmNTEyNzVhIGxlZ2FjeS10cnVuaworNjU3OTkgOTVmMWM3ZGI4OTIzZjQ4YmY0NGM0Nzk2YTlhNzhjZjk3YTU2N2UzNCBweTNrCis2NTgwMCAzNTFhZDY4NDA3ZTdmZjFmNDUxNWRhMzkzODA2MGY1MTY3Y2IxOGU4IHB5M2sKKzY1ODAxIGYyODdiZWIzNTJmZTE2MzkzOTBmZWM5YWEzMDQ3NjQxNWZiZGY1N2EgcHkzaworNjU4MDIgNTUwODg2MmExZGU1MDVjODBkM2IzNmYyZjAzZjkyZjczNGFjYWI0NiBsZWdhY3ktdHJ1bmsKKzY1ODAzIDVhODdiMGQxY2U5MWUxOGEzMDU3OGRmZjc2OWRjZWI0NzQxNDkxMWEgbGVnYWN5LXRydW5rCis2NTgwNCA2MDE5NGFiMmI3NTYyNWI0ZDMyOWFlNzcxZmIwMWMwMGYxZTE4M2VlIHB5M2sKKzY1ODA1IDMxOTViZDZiNmRkN2NkYWVmYmU4ZGYxNDU0ZDhkODY0YzE2OWYzMzQgcHkzaworNjU4MDYgZmM5MGI1ODE1MTZlYmQ4YTE5MjMxODBkNGRlNDdlZDllNDc3NTIwMCBsZWdhY3ktdHJ1bmsKKzY1ODA4IDFhNDFkNDU2ZDgwMmJmZTQxNDc1NGU2MmY3MGExZjQyYjE2MjlkODUgcHkzaworNjU4MDkgMjExOTI3MTQ3YzYwNmUyZDdkODUwNzI3NDk0NzczOWE0ZTNjNjkzYyBsZWdhY3ktdHJ1bmsKKzY1ODEwIDIyNTRhYTgyNGQ0ZGEzYmZlM2UwOTUxYzQ2MWY5M2JlYjNlNWJjMjYgbGVnYWN5LXRydW5rCis2NTgxMSA3NTE3YmRjYzc2OWExZTE3NTAwYWVhN2IyYzEyNzg1MzM2OWJjOGY3IHB5M2sKKzY1ODEyIDQyMDcyMTlhY2M3YTgwMzljM2RlNDU5YzVmNzMzMmNhZTE5ZjIyMWUgbGVnYWN5LXRydW5rCis2NTgxNCA0YjQ1NjRiZWI2ZGEyZTBiMTM0ZjkzYWYwMWI0ZjExM2JkNTc4NGI2IGxlZ2FjeS10cnVuaworNjU4MTcgMTdmMDEwNTE3YjMzNTA2MDUyZTZhY2MyODU3OTM2NzY3YTcyZmU4NSBweTNrCis2NTgxOCAxZDI5ZTUzY2UyYWY2NjdmNjEwYTU1ZGViNmVhYWViNzc5YmQxNzUwIGxlZ2FjeS10cnVuaworNjU4MTkgNzY2MjAwMTBkNzgyOTg2MzdmYmQ2M2QyZGRiNDQ1Y2JhZGE1MzMyMiBweTNrCis2NTgyMCA1YzBlNWYyY2JjN2Q4OWMwY2IwZjAwMmU3MDg3N2JlZDZkNmY3ZGU3IHB5M2sKKzY1ODIxIDI2MTRkNTAxZGU5YWVmYzE3ZWU3ODUwY2YzYzQ4NTUyODhhZTRlZTAgcHkzaworNjU4MjIgZTE0M2E4ZjM1MjQxN2NmMDQ5Y2M5MGFkMTUyMGQyMWY2ZWI4YmJmYiBsZWdhY3ktdHJ1bmsKKzY1ODIzIDQ3MWE0YTg4ZjUxYzY0YzAzMjMxMGE3OWYxMTgyYThiOTM3NDVmMzMgcHkzaworNjU4MjQgMDI0YjJiOTg0ODY2NzZjYzQxYjRlN2M3NjMyNzg3M2E4N2U3YzUzYyBsZWdhY3ktdHJ1bmsKKzY1ODI1IDFmZGZhMzgyYWUxMzJlMTAzYjg0OTljN2Q4NjVhNzYyOTQ0ZWQwODcgcHkzaworNjU4MjYgOWQxODU2YWJhOWYyNDkzZGE4MTk3NWM5NjM5ZDc4NzA2NTNkMWYzYSBsZWdhY3ktdHJ1bmsKKzY1ODI3IGQ2NTM3YTNlMWI3M2MwMzliYzNkZmNjMzYxMDFlNDQwOGY1YzBlMzIgcHkzaworNjU4MjggMjhkOTNjOWMzYTAzMDM1Y2IxZDNiNTEwNmM2YWRhNmExNTIyOWRjZSBsZWdhY3ktdHJ1bmsKKzY1ODI5IGRiNTg5MjQxZTZmNzRjODk1NWY1NjA2NmY2OGY4MDYzY2NmMTJjOTMgbGVnYWN5LXRydW5rCis2NTgzMCA2ZGRhMDE2NDMxMDZjZmIyZDI3MGIwYjU4OTlhYzg3ZjY5NDRmZmMxIHB5M2sKKzY1ODMxIDU5ZDk3YTNlZTIxOWU0NjE1YzYwYTM5OWNlN2QxMzE1OWY3YmVlZDggcHkzaworNjU4MzIgOTJmNGJiMzY2MzdjMzRlODI5OTM2ZGFiYzk1ZjJjNTBkMDE0ZDFjMiBweTNrCis2NTgzMyA4ZDg4MzUwNTUzYzNmNWE2NzQ5NTI5MjEzYTQ1ZGEzYmUyNDc1ZTRjIHB5M2sKKzY1ODM0IDhhN2EyNTQ1OWM2ZjAyMTlhMjM5ZWQxMjIwNTlhMGU3N2NhNTEwOTggbGVnYWN5LXRydW5rCis2NTgzNSBlMTA3MTNiMmQ1NDMzOGQ5ODc5MTM0YTg5ZmRmOTM5MTM5ZDIzOGEwIHJlbGVhc2UyNS1tYWludAorNjU4MzYgMzI5MTQ5MDQ4YjkwY2M5NTY1OGUxMzIxY2YwMmYzYjdmM2UxMzI3ZiBweTNrCis2NTgzNyAyYmFjMGQ0MjE5MjllNDU2OWU5YWJhZTM1Mjc1NjlkMTUwM2E0M2NkIHB5M2sKKzY1ODM4IDQyOGQzODRlZDYyNjM0OTk2ZGU1YmQ3NDQ5NDEwMjJmYzNhZTlmNzIgcHkzaworNjU4MzkgNWMxMDVmOWE3OGU4ZTFmOTk5Y2VlMTEyZDMyZGJiYzNhNTc3OGYyYiBsZWdhY3ktdHJ1bmsKKzY1ODQwIDlhODlmYjU4MDk4YjZiYTVjZmUyZDJmM2M1MThiNTlmNmRjZDRhMmUgcHkzaworNjU4NDEgNTQxMzhlZTIwZTU3YzJlOWFkMmRmYmM0MTg2NTUxYzc1MmRiMTg3MiBweTNrCis2NTg0MiAwMjc1ZDgxZTMxZDA5Y2JlMzdhYzliMmY1MTlmNWRiYmM3ODZkNWZhIGxlZ2FjeS10cnVuaworNjU4NDMgMjkxYTZmMjIwMzYwNzBjNWEwMzA0MWUxOTkyMTEyYzkwYzM5NDA3YyBweTNrCis2NTg0NCA4M2Y3Nzk4NTI0ZjFjNzAxOWFjMTA5OTEzMTI0ZjViMDg3OWE2MTZjIHB5M2sKKzY1ODQ1IGIwZTNhYzg2Y2RkODAyYTMxZjVlNmYyNTNhMDcxMWQzMDAyNmE3ZjEgcHkzaworNjU4NDYgN2Q2NDgwNmZlYjE1NjA4ZDZhZjJlZWE5ODAwNzgxNzcwZDViNDZiZiBsZWdhY3ktdHJ1bmsKKzY1ODQ3IDVlM2ZhYWU2ZWZjNjcxOWQ0NGJjMGVkYjNiMjdiYzMyMTM4ZGY1NWMgcHkzaworNjU4NDggMTRmMmE0Y2I1N2RlMDQzNTc2Yjg3OGIyNmZkNTBhMTg2ZTJlODQ0YSBweTNrCis2NTg0OSA3YzgxZDVhYTVmNDE3ZDA4NTc3Njg1MmMyMmZjZDNiZDc5NjI0YzZiIHB5M2sKKzY1ODUwIDE4YWE5MTlkZjI0NWFiOWZlZjExODYyOWU4MWZjMmZmNGZjYTJlZTQgcHkzaworNjU4NTEgOTRhN2ZiMzNhZmVhNTI5MDA4ODdmNzEwODU3MDQ4NmU0ODVhZDUwYiBweTNrCis2NTg1MiA0M2E4ODU4NDRhZDhkNGUxNTE2ZjBkYjJhYWRlYTEwZDRmNDRmOGMxIHB5M2sKKzY1ODU1IDRkZjEyMmFkYTc2ZmFmNDZkYTMwYTE4MmRlMmI3ZWVmYTZiNWU1OGYgbGVnYWN5LXRydW5rCis2NTg1NiA4M2ViMmFhYTVmYWFhNDQ1OWNhNjgzMDdhMjYzZDM2Y2Q3MGQ5MzE1IHB5M2sKKzY1ODU3IDE0ZTgxOWJlZWVhYjhjMDRhYzY0Y2U2MTVjN2RhM2RkMjZlMTI1MWEgcHkzaworNjU4NTggMjA5YTQ1ODFiZDkxOWEwMzU0NmJmYzlkMDM3ZmYwZGZmODYwNmNlMSByZWxlYXNlMjUtbWFpbnQKKzY1ODU5IDdmMDM4YTQ3MDBiMWMwODA0ZWMzOTk2ZWFiYzVjYmZiNDE5OTljNTkgbGVnYWN5LXRydW5rCis2NTg2MCA4M2IyZDA3YjQ3NWI1MDMwN2I0OGY2YWY1NzM5ZTE2YmFiNjg1OGJmIHB5M2sKKzY1ODYxIDI0ODA2MjI5NjVlNjAwOGI3OGQ1MDc0YzA4NzJkZDk1ZWZlZjk5NTcgbGVnYWN5LXRydW5rCis2NTg2MiA3NTExZjNlNjcyYTI5ZjM3Mjk1ZGU1M2Q4MWVkNTBjZmQ0MTM2MjNjIHB5M2sKKzY1ODYzIGVhM2QxM2NkN2MxZTZiNmY1ZTRkZTY3MzdmNjcyYzM0ZTYwNTljMWQgcHkzaworNjU4NjQgN2VhODA1ZDg3OWUxYWI1N2NiMjg2MjE4OGEyNGQxMTg5MWRlMzQ1OCBsZWdhY3ktdHJ1bmsKKzY1ODY1IDFhMDU5YWFmZTQ5ZjBlNGI5OTRlYzE4NDQ3NDhlZGU0ZTM5NDRkNTggbGVnYWN5LXRydW5rCis2NTg2NiBhYTYxMzIwOTMzMmQ1MWFiNmVjNjI5YjgyYWVmMGQ3MWJjYWM5MmU4IHB5M2sKKzY1ODY3IDI1ZjA2YTcwM2Y4OWE5ZTg5NmY1NTA4NzRkYWQxY2QzZTc0MzJkYzggcHkzaworNjU4NjggYmQzN2ExODY2MzhmMjgzZDQzZGNjNWQ0M2ZhYzM3NGQ1OWU2MGNjMCBsZWdhY3ktdHJ1bmsKKzY1ODY5IGYwNGI3MDNmMmRkZGExYjExN2ExOTU1NmIwMjlkZTRmNzY5NDFmZjcgbGVnYWN5LXRydW5rCis2NTg3MCA5N2EyNGM2MDljMmVlODgwNDAwOThhNGM4ZjNiOWNhYmEwMmFhNWY5IGxlZ2FjeS10cnVuaworNjU4NzEgNmQyMmVlOGM3M2NhMzQ4YzExNGE2ZmI3OTMyMmZmYjRkNmJjY2VlMSBweTNrCis2NTg3MiA0OWY1MmUyODVhNjQwMmJjZDVmOWQwZTU1ODAwOWRkNDViN2FmMmVhIGxlZ2FjeS10cnVuaworNjU4NzMgMmI4MjlmZmE0ODFiNTc0MWQwZTA0ODFmMzA0YzA1OTVjM2Y4MTYxYSBweTNrCis2NTg3NCA5NmE0Y2RhNjVjNTUyZmZhZDgzYzNjOGI1Y2I0OTNjOGQxOWZmNDVkIGxlZ2FjeS10cnVuaworNjU4NzUgNTEwOTE5MDczMTE5ZjkxOWUyNjIzOGRlZjE1OTI5ODlmMDdhZWNkMCBweTNrCis2NTg3NyA2YWJhZGEwNWMzMTMxMzU5MTI0NmIyYWY3OGEwYmU0N2VjNjVkMzJmIHB5M2sKKzY1ODc4IGY0OWQ5MzE0ZDQzOTExMWExZmMwYjI3NWMzNzQ4YmQyZTYwYmVlZTcgcmVsZWFzZTI1LW1haW50Cis2NTg3OSBlZjE5NTU4NDU1MDk0ZmMxYWFiODNjMGJmZjA0YjhkMWFlM2M5M2UxIHB5M2sKKzY1ODgwIDRiODgwNjQ1NjA3ODcxYzAwNWY5MDlhYWZlMjEwZWFjOGQwZmRiNjcgbGVnYWN5LXRydW5rCis2NTg4MSBjNzgyM2IzNTFmYmNiNzU2NDAyOTBiOTllYjkwMGZhMmFlOWUxYjYyIHB5M2sKKzY1ODgyIDgyYzY5NmYwNDI0YTQ3ZTQ2YThhM2E4YjQwYzg4NTE1OGUwZDg1MWUgbGVnYWN5LXRydW5rCis2NTg4MyA5OWU3ODNlYzc3ODE1ODcxYzY3YWNiMjE2N2M2N2Q5ZDY0MWMyMmMyIHB5M2sKKzY1ODg0IGMxYTdmZGIyNDYyOGYyNDNlMWNmMzJlYjAxNzQxODg5YzMyZjMxNTQgcHkzaworNjU4ODUgNTA0ZTZkMDMwZTg0YzdkZmM0NTlmNGViNjI2YWJiYTZiNGVmMmU1MyBsZWdhY3ktdHJ1bmsKKzY1ODg2IDUwMTI1NmM1NGM4NGE2NDg1MWU4ZjY3ZTZjOTAxMWMzZTVkODUyNTYgcHkzaworNjU4ODggZjdhNjM5NmI0OTZmMDIyYWM5OTU2ODZhYzVkMTliNTczZGIzZWYyZiBweTNrCis2NTg5MCBlNzgwMjRhZjBjZjAzYTQ3ZmQ5NzU4NWY5MTQ0MzZmOGYyMjI5ZjMwIHB5M2sKKzY1ODkxIGE4Zjk4YTcyNzM3MTIxMjJhYjllNzRjYzczODZlNWJjNzNiMDc3ODcgbGVnYWN5LXRydW5rCis2NTg5MiBiZWU0MDAzMzZmZDVjN2EwNDM0MDdkNzk1NDAyZGRlOGFkOGFhMjI0IGxlZ2FjeS10cnVuaworNjU4OTMgYWJkZTRkYjMwN2E1OWM1NjExODNkZTdmZWZjZDAzNjQ5YzI0OTMzYSBsZWdhY3ktdHJ1bmsKKzY1ODk0IDFhZjIxMTIzNjkwNDMwZGUwNzAxMmRiZDA4MTVmMjlhOTVhYzcyM2IgbGVnYWN5LXRydW5rCis2NTg5NSA4ZjIxNTZiMTViYjhlNjkwY2I0MzYyMDY3OTFlMWY2ZjYzOTE1NmU2IHB5M2sKKzY1ODk2IDZjZDdiMThiYjc0MmEzNmEyYzU0ZmNlMTVlODVmNzdjNzAxMTQ2ZjkgcHkzaworNjU4OTcgM2ExMWU3OWI5NDcxNWRkZDcxMDM2NWEzOThlZjYxMjc1MjA4ZmM3ZSBweTNrCis2NTg5OCAwZmU2Y2IwYzMxMGQ3MjlkYWQ1MGIzNjVjYjQxYWQ2MWU4ZTE4ZGEwIGxlZ2FjeS10cnVuaworNjU4OTkgNmQ2ZDNlMDM3NTUwM2NkMjViZTcyNzM2YzVjNmU1ODVmMDBhYjkxZCBweTNrCis2NTkwMCBkNDI2MjkxODUzODJlYjNkN2NmZGExYTcwYWYzOGFiMzRhNjYyZTU5IGxlZ2FjeS10cnVuaworNjU5MDEgYzEyNWU3NWQyMWEwNDg3NzRmNjVjNWE3Yzg0ZTYzOTE3MzYzNmFjMCBweTNrCis2NTkwMiBhMzZiNmMxY2VjNTY3ODIyNjk2NzE4NDZkZjY0NzBjZjc0MzQwODBhIHJlbGVhc2UyNS1tYWludAorNjU5MDMgZTg5NDIwNGFkZmJkYWFhMjdkMDUzOWVhZDE1OTM2OGJiYzI1MDU2NCBweTNrCis2NTkwNCBhZTViNzNjNTIwOTdlNmEzNDY2ZmQ1ZTBlZmU0OGIxOTBlN2FkNzE1IHB5M2sKKzY1OTA1IDUxZjJmOGZlZTVjNDUwZDIxZmY2YWM4ODAxNWU3NTc2ODM4MmYwMTEgcHkzaworNjU5MDYgNmNjODljNjBmNzRkNmI5NzY1Zjc2ZTk1NGE3NTMzMzA3NzdjOTdjYiBweTNrCis2NTkwNyA0ZjUwMjI4MjMxOTkwZWExZGViOWI4OTM3NmMwYTA4NTYwZjI0YmEwIHB5M2sKKzY1OTA4IDY3Y2IzMzg4MDM3N2JjM2FkZTFhNThjODk2MmQ2YWUyM2VmZTUwNTYgbGVnYWN5LXRydW5rCis2NTkwOSAxMWU3MmViZjkwNmFlZmViYTZkODEzZjUyNzY2OGVjZDlmN2NiMzMzIHB5M2sKKzY1OTEwIDFiZTc4OTBjZDc1OTc4MDE2ZWZkNzU4OWVjNjRjZWRmYzEzYzA4ZDQgbGVnYWN5LXRydW5rCis2NTkxMSBjMDMwMjRkYjgwMWY5NmFkNjU5NDAxNzA4MDgyOGQzYjc0MGM0MDU0IHJlbGVhc2UyNS1tYWludAorNjU5MTIgMDQwZDk1ODA1MDBjZGI2NzIzOTk2OTg2MGEzOGE5ZTcwMWQxNGQ4MiBsZWdhY3ktdHJ1bmsKKzY1OTEzIGU5OTYxNGNhMDIwNGI3ZTYwMzFiZmMyMjdmODgyNjRkNzBhZWViYmMgcHkzaworNjU5MTQgMWNiOTA4YTA0M2IzZjBmOTM4Mzk3N2U1OTdjZjRhNmVlYjVjMDE0MSBsZWdhY3ktdHJ1bmsKKzY1OTE1IDc2MDhhZmUxMWZiOTYwNDllN2U0MTZmYzBjYmZmNGJhZDcyMTFiMWMgcHkzaworNjU5MTYgODEzM2ZiYjc0NTg3NTRhNzI1ZTY3MjUwMzYwM2JiMmVkNDgxODFlOCByZWxlYXNlMjUtbWFpbnQKKzY1OTE3IGIxOTlmMzQxOWU2NTgwMmI5ZGQ2NzJiZGZkNzk4ZjE2YjYwZGFmNzAgbGVnYWN5LXRydW5rCis2NTkxOCBhMTlkNjdkNzdiMjJmNzg3YmUxNjVjNTIwOTc4ZTJiNmI5OWRhNjI5IHB5M2sKKzY1OTE5IDg4Y2E1MTc1NDZmZDAyMzU3Y2Y3MjMzZGM5NDdiZTBjZjNiNDUxNTcgcHkzaworNjU5MjAgMDMzZDYzYmY3MDhlYTJhZDQxYzUyZDRiODQxNDZkYTIzMWZhOWM2OCBweTNrCis2NTkyMSAwMTNkNGQ4NDA3Y2I5ZjY4ZTc2NTZkMTFmNjJiNzkxOGE5NTIxZTQ1IHB5M2sKKzY1OTIyIGM2Mjg2MmQ3M2Y5ZWM2NGQ2NTU0OTRjZjFmNjE0NDM0NDZmMmRlYTIgbGVnYWN5LXRydW5rCis2NTkyMyA3MzE2NDU2NWI5MjBlMjA1OTZkMzNhOTkzYjk5ZWQ3YTc5MzdlNzY1IGxlZ2FjeS10cnVuaworNjU5MjYgMjdkMTliNjY1MDM1NzlkOGIzYTQxZTUyYWNhYjkwNzk5ZjJiYjNkZiBsZWdhY3ktdHJ1bmsKKzY1OTI3IDUwOWUzMGE3OTY4ZTAxYmUzMjllYzEyMTU0MGIzZTc1NWZjNGU1NjYgcHkzaworNjU5MjggYzQxMWNmNjk0Mjg5NmNjMjE2MDg5YTY5NTA2NDY4NDQzMjJmMmVhNCBweTNrCis2NTkyOSAwMWI5ZTE4ZDY5YWM0NDllZTk1OWFiNThhMWExYTlmZGNmOGIxYjQ5IHB5M2sKKzY1OTMyIGEwYWJhZmY5N2UwMDFhNGI5MGU0NmRmMzY3ZDdmMTJhYzUwZGI5ZWUgcHkzaworNjU5MzMgOTU5ZDFhYThiNThhZWJlMzI2MzBlZjAyYmQ0MmFlYWZlZjE5NjMzYiBweTNrCis2NTk1OCA1N2E4NzM1NjQ3Y2Y4NzQ1ZDBiNjMyNjUwYWI0ODQ0MzAwY2U2NDgzIGxlZ2FjeS10cnVuaworNjU5NTkgYTc3MDIyZGMzZjYxZDIyMWQxNThmYTk4MTdmNDBmMjUyN2FjZmUzMCBweTNrCis2NTk2NCBlMzlkNDRhZGI2MTgwNmM5NjkyYzNjMGUwYTIzMjQ1Njg3YTc1MzRkIGxlZ2FjeS10cnVuaworNjU5NjUgYThkNjljMWEzZjRlZmQzODc2OGEzNzkzODYzYmRlZTNlY2Q3MjY2YSBweTNrCis2NTk2OSA0ZmFhYmIxODU2MmM2M2Q3MjZkNTZhN2MwZTBjZDU0NWQ5ZjA5NjA3IHB5M2sKKzY1OTcxIDRiMWYyNjJjZWJkZjQwMDMyNzE5ZjI1MzdmOWU4YjBmMTBlZmY3MzQgbGVnYWN5LXRydW5rCis2NTk3MiAyZGM2NDY5ZmM0YzRkNGIzYzZjNzM4Zjg5NDc1MWMzNGM4M2YxMmNjIHJlbGVhc2UyNS1tYWludAorNjU5NzMgMTk0NGQzMTA0MGUzMDY2MWIzYmM2ZGNjOWJjMDM4YjA0Y2MzM2E1ZiBweTNrCis2NTk3NSBhZmJmZDhmMjE0ZGQxMzM3ZDZkMTc1YzhjZmZhZmFkMmU3YTUwMWYxIGxlZ2FjeS10cnVuaworNjU5NzYgMmFhNzlhZDRlYjg1MmRkZGQ2YTdhYTVhMDUyNzdlODlmMDdhNzkwOCBweTNrCis2NTk3NyBiY2UwM2Y4N2Y2NWRiMWExMDQ0YTE0Yzk4N2FjOGEwYzA5MGY1MzE2IGxlZ2FjeS10cnVuaworNjU5NzggNDZjMWJjYzRjMWQzMDM3NDA1NTNhYjY4NjRiYzBhZjUyZDg2MzE1ZSBsZWdhY3ktdHJ1bmsKKzY1OTc5IGQ5NTJlNzUzYzYxMWY3NWFhY2RmNTc1MmM1YzM0ZTU2NTAzNDkyM2YgcHkzaworNjU5ODAgNzQ4OTllNmM4N2E1YzVkYTZhZWI5YzNlNWU4MTgyNTk3YWJkMDRmMyBsZWdhY3ktdHJ1bmsKKzY1OTgyIGY5NzBhNGY3NTYwZmZhMjBlOTRiNTVhNTg5NjdkZGQ0ZmFhODlmNjggbGVnYWN5LXRydW5rCis2NTk4MyBlM2U1MDczNTBlZDRkNGRlODhmMWRhMTQzZGEwMTYyNDM4NmZiMWYzIHB5M2sKKzY1OTg0IDIwNDQzMWQ0NGNkYzQ5Mjg0YzFjM2NkZDgxNWJlN2VkY2Y0ZjU5OTYgbGVnYWN5LXRydW5rCis2NTk4NSBjZmQ3OWE0YzE2MDQzM2RkNTQ4NTZjNDI4ZWZkMzQxZDk3NWNkMTE4IHB5M2sKKzY1OTg2IDc1ZjY0ZmQxZjExMzc4OGJlYzRmZTdlY2VhN2RmZGI4ZWJhYWRmMWIgbGVnYWN5LXRydW5rCis2NTk4OCA2NWIyZGQ0NmUxNzExODk3YjkzMTNjYmM4ODQxZTk3MzEyNWQ4ZTJhIHB5M2sKKzY1OTk0IGI1MjEzODNiODFhNzE1NzE1ZWFmNzg5NTczZDk5YTc1M2VlYTZiOGMgcHkzaworNjU5OTUgOTY5ZWRjM2I3MDdmM2JmYTg0M2IxNTc5NjJlYjJjNDk5NDhhZmM2YiBsZWdhY3ktdHJ1bmsKKzY1OTk2IGU3Yjg1ODkwZTliMTA3MzUwNGQxNWRjMTMwYjI1MTk5ZTdiZjZkYzcgcHkzaworNjU5OTggNTg3Y2Q0ZjY2YzJkY2Q5NWZiYzk1MTQxY2ZjNjVmNzFmNWI4NTJhYiBweTNrCis2NTk5OSBkZmU1NDZiNjZlZWZkNzU4M2FkNTE2Y2Q2NzJhMDcxNGRiZWM2MWM2IHB5M2sKKzY2MDAwIDc2ZTcxY2VjYzRkMzEzY2JjMGE2ZjNlMjUzMzI4ODE1OWU4NzYwMTMgbGVnYWN5LXRydW5rCis2NjAwMSAwN2VjNzJjZjE5YzdkNjFjOGEyZDI2ODBlZjAyOTU5OWRkZGJiZWI3IHB5M2sKKzY2MDAyIDdiYjFjNjBlYWY2NGY1OWU1YmNlYzg1ZjYyNjZmNDJmNmY3Mjc2YWYgcHkzaworNjYwMDMgODVjMDhjZjA4YjJiNWVlZjc1M2Q0ZWRlYzNiZjE5NzhkNDA3ZGUyYiByZWxlYXNlMjUtbWFpbnQKKzY2MDA0IGUxNDU1MmI3MzE3YmNjOTU1OTQzYmFiZGYzNTkyMzA2ZTRiMmUwMTggbGVnYWN5LXRydW5rCis2NjAwNSA2ODJlOWE0MmMxNWQ1M2I0MGYwMmJmMzRiMmJjYzc3OTk2M2U5MTQ0IHB5M2sKKzY2MDA2IGIxNjgyYzY5M2I5YTE1ZDg3OWQ2NzU1MjFmNjFkNWRkM2Q5N2E3NDMgbGVnYWN5LXRydW5rCis2NjAwNyA1Yzc1YTMzZWY1YjI3NjM2MzdkODg4M2M1ZDFjYTZjNTkyN2NlNGUyIHB5M2sKKzY2MDA4IGQyYmEzNmE3YTcxMjc0NWNiOGM1NzAxMzc0ZWZhMjZmN2VhOGE5NjEgcHkzaworNjYwMDkgYWZiOTgwOGIwZjMwZmEyNWIzNjY4Yzc0ODVkY2IyMWIwMTBlMDQ0MSBweTNrCis2NjAxMCBhMjcyMDM1M2YwZDM0OWQ3NDFlOWI1OGFjMjNkMmMxYzJhZTljNWY0IHB5M2sKKzY2MDExIDk4NGUxYzYwMjk3OTJjOWYyOTQ1NzRhYTZkM2M1NjY4MjNhMTYxZmUgbGVnYWN5LXRydW5rCis2NjAxMiAyYTZhZTdlOGM3YzM2ZTAzM2YyMGJhZjM1OTZhNmY2YjZiMzEyZDJhIGxlZ2FjeS10cnVuaworNjYwMTMgNmVhMWE3MjBiMDU3ZWUxYmM4ZWYxNjllMDU0M2JjMjc2MWIzMzhkMiBsZWdhY3ktdHJ1bmsKKzY2MDE0IDcwZWRhYzg5MGYyYjZkZjYyZGM5MzA4ZjdlMDUxNGE4ZGIzY2I4N2EgbGVnYWN5LXRydW5rCis2NjAxNSBjMDAxOWQ0NTU1MWRjNzUwYzc2NjZmMjMwOTgzN2IxZDVjNzhiZTUxIHB5M2sKKzY2MDE2IGM5NWYzODdlZDFmNDI2Y2U2NTIxYzA4YjY1OWY2YjE4YWYzMjNkN2QgcHkzaworNjYwMTcgNThkMjk1ZTc4MDBmN2E0ZjJmYjdhMmYyMWY1Y2ExZjk4ZTMwYTI1ZiBsZWdhY3ktdHJ1bmsKKzY2MDE4IGRlOTU0ZGQ2Nzk3YjZlNjc5NDVkYWU3MTk5YzdiMTIxNTc0YWZmZjkgbGVnYWN5LXRydW5rCis2NjAxOSA4ODExOTgzZGZjYWY4YjIyNmY0MzY3M2QzZDg2NDUwNTYxZGFkYzY1IHB5M2sKKzY2MDIwIDFhNDkyMmZhNTE2MDY1OTIxYWNkMDc0ODdmY2VhMjJmYzc1M2I5YjIgbGVnYWN5LXRydW5rCis2NjAyMSA2NzhhMGYwZTYxYmM1ZDZiYzUyNjFlYzczYjdhNTUxNDI2YmNhNDY4IHB5M2sKKzY2MDIyIDJhNDdiM2JiMTFmZDhiZDllYTk4ZjJlNjcxNTcwM2Q5MjAyOWZiNmIgcHkzaworNjYwMjMgZGY2MjRkZjZlZmEzY2RhMDQxZWE0YzRhMzBiZmI5NWZiNGQ4YTU0YiBsZWdhY3ktdHJ1bmsKKzY2MDI0IDNkYzRkZmEzZWJhMTY4Y2ZiYTQwMTZmOWJmN2UwMzlkOGMzNDIzNjcgcHkzaworNjYwMjYgNmZhYzYzNjEzM2YwMTA2ZWU0YTI5ZTE0ODYyNWEyNWEwNTliNjE4NSBsZWdhY3ktdHJ1bmsKKzY2MDI3IDRmYjdlN2IyYzk2MmFjMDg2OWI5YWQ0ZGQyNWJhZjBiYzU4NjY4ZDEgcHkzaworNjYwMjggOWViMGNkMzAzMjZkOGI2NTQ0YmRiMGJiZmJiOTVhY2JkYjg1ZmZkMiBsZWdhY3ktdHJ1bmsKKzY2MDI5IGRkMTc3ZjU3NmJlOGE5NWU2ZTFjOGE4YTFlZTlhOWRhMDNiMDUyN2IgcHkzaworNjYwMzAgNWEyMDU5M2E4MThmYzIzMmFiY2Y2MjM1MzEyMmY4Njg0ZjQxMDllNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjYwMzQgODJmNzNiMGI1YTMwOGU5ODJjNTAzMjJmOWZjZGEzOTczYjlmMjg0MiBweTNrCis2NjAzOCA1NDhkY2NjNDAwOGVkOTM0YmFmYWQ1ZjdiNzEwY2E0MmRiYmIyMWFiIHB5M2sKKzY2MDM5IGVkZDJjYTg5NGE2N2RjNmI0ZjljYzkyZDY4ZmE0NWE3NzU5NTAzMzYgbGVnYWN5LXRydW5rCis2NjA0MCAwM2MyM2M1MDY1NGU1ZTNhNjJhOGZlYzZmNGE3ZmI0ZDFiMjFjZjZjIHB5M2sKKzY2MDQxIDRkYjFmNTA5ODE3NWFiY2M1NmVhZDZmMDVkODkyMWI1YzNlNGJiMmMgcHkzaworNjYwNDIgZDZlODZhOTZmOWIzNTA4OWNiMmE5NzQ2MDczZDA1YzhjMGFjNmUwNSBweTNrCis2NjA0MyBkMDFjMWQ3Njg4NDE1MzQwZTMyYjZiNzMxN2ZjMWY5NmE3ODgwNWRkIGxlZ2FjeS10cnVuaworNjYwNDQgMTJkMjc2MjA3NmJhYTYxMWY3NjliYmU4MDZmZWRkMjU4NzYwNWZlZSBweTNrCis2NjA0NSBjNDJiZjk4YjI2MGYzNTIwNDY4NDM4NzI1NjI0NzQ0NWUwMjUzNjA1IGxlZ2FjeS10cnVuaworNjYwNDYgZDlmZTI5ZTk1ZDYwMTViNzgzNzU0YzQyZGFiNzczNzExYTg2NTNiNyBweTNrCis2NjA0NyBkZTZmYjlmMzQ1MTMyNzVkNjM2ZjUwMTI4NDdjMzZhMzZjNWNhMTlkIHB5M2sKKzY2MDQ4IDQ3YTgwMWMyOWYxM2Q0OGU2YzBmY2U3NGZmOTlkMjM0N2JkYmUyNGEgbGVnYWN5LXRydW5rCis2NjA0OSBhYTNjOTBjZTE5MzJiYWU3N2NhOWE2NDhkODExYzgxMzFmOTczZmMwIGxlZ2FjeS10cnVuaworNjYwNTAgZmRkMWVlMjBhYjg2YjA5ODA3ZDE5YTQ0NzgxMGRkYTZmMDYzOWY2ZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjYwNTEgZjI3Y2NmZGVhODM0MDEyMDM4Y2JhMDgyN2IzNmQ3NDdiNTk5NGY3ZiBweTNrCis2NjA1MyBlZmM0OTg2M2NkOGZmOWJiMzlkMTM2YWViNWU4YmQyMzlkMDFlMjdhIGxlZ2FjeS10cnVuaworNjYwNTQgNDcxOTJkMGI3MzFmMTA0OTZmM2U2MjMyZDk5YjY1YTUwY2Q2YzkzNyBweTNrCis2NjA1NSA2Y2ViN2M4OWU3NzZiYTkyNDQ5OTc2OWM2OTY5YjVlM2IwNjdhMDE5IHB5M2sKKzY2MDU2IGM1NjJjOGRhZTQ5YTYwNTg3MGU2ZThhYTZmYTdiOGUyZWU5MTdjYWUgcHkzaworNjYwNTcgMjdlMTQyZDk5YTcxNzM5MzZhNjU4ZmRiMDNjZWY4OGMxMjY3ZGI4NiBweTNrCis2NjA1OCBiYmZmZTA5MTRjNTZlNjEwZjExOGUxM2JlYWEwNzliMTkxOGJlMTkyIGxlZ2FjeS10cnVuaworNjYwNTkgMGM2NWM4MDI3NTJhMmI4MjBkM2ViM2JkYmYwY2M2NTc2NjYyMWJjZSBweTNrCis2NjA2MCBhOGM1MzU4MGM1ZWM0NzIyNWMxOGY0YzUxYmFmZTFjM2RiNGFiMTNhIGxlZ2FjeS10cnVuaworNjYwNjIgMzA4MzRiOWFhMTkzN2YxZmY4MmQ0ODc3NDEzMTNkYTg1MDUyYTBhOCBsZWdhY3ktdHJ1bmsKKzY2MDYzIDAxMzEzOGNkYjg3M2IyZWNjMTdmYTZiNDE0Y2YzNGY0YTczNGVmOGMgbGVnYWN5LXRydW5rCis2NjA2NCAwM2UyMTZkYzhmZWNjYjkxYTQxMjc0MjYwMzhkZGM3NDBiMTcwNTg4IHB5M2sKKzY2MDY1IDU2ZWQ0NDVmYTYxZTYwMzRkNDNiMjljZDcyNTE5NTQ2ZjE4YjNiZjQgbGVnYWN5LXRydW5rCis2NjA2NyA5NmJjNTg5NmEyNDA1NTFjZGI3NjQzNmJmY2Y3YjQ5NzQxYjQ1MWEwIGxlZ2FjeS10cnVuaworNjYwNzEgYTJmMjAyOGI3M2VkM2FiZTU2OGFiNjkwYjQ2YTBjNGJlOWE0OGUwZiBsZWdhY3ktdHJ1bmsKKzY2MDcyIDg0YmRkNTNlMzkwNjQ4NmRlYjFjMTZmZjFmZTM4NTczMjRlZjE3YzMgbGVnYWN5LXRydW5rCis2NjA3MyA5NjA1ODlkMmExMmQ5YWQ0Mzc4ZTU3N2M3MWZhZDhjYmQ2ZGU4YjA5IGxlZ2FjeS10cnVuaworNjYwNzQgZmE3YjYxZDJiYjNkN2NjN2NiNzgxZTYwZmJhOTE3MmQ0MmU0ZDRmNSBsZWdhY3ktdHJ1bmsKKzY2MDc2IDExZDhmYTNjODhkOGU4MzY4MWRjM2FlYzQxYmM2MWZkZjgxYmEwN2YgbGVnYWN5LXRydW5rCis2NjA3NyA0OGM1ZWI1MTMzNzBkOGZhOGQ0ZTJlNDlkOWM1N2E1YTQ0NzY2MGI3IHB5M2sKKzY2MDc4IGI1MTU2OTBiMzc5ZDdkZGVhYjUyODNlYTNlMDU3MWMzMzAwYTJkYTMgcHkzaworNjYwODAgZjY3OTYzY2Q0Mzk1M2NjMWQ5ZWUwNTBhMWIxNWFjOGM0Mjc4ZWY5YyBsZWdhY3ktdHJ1bmsKKzY2MDgyIGExZDllODNiYzc2ZGEzYWVlMjdkYTRmOTdkZGUyZGE5MGY4NjkwYTQgbGVnYWN5LXRydW5rCis2NjA4MyBlYjEzNGVlZTMyMzIyNjAwMzczZjU0OGY2ODZiMzViZjkwZGMwNzg0IGxlZ2FjeS10cnVuaworNjYwODQgMzZhZDVlN2UzOWI0ZmJkOTZjYzE5ODE0ZWRjN2U3MDZhMjI1YWExMyBweTNrCis2NjA4NSA5YzE3NWY4ODYwZTIzZGYzNmUxOGEwZDMxODJkYTBlZWE0OGQwOGZlIGxlZ2FjeS10cnVuaworNjYwODYgMjIxZGUxMzk0NjgxMTNjZjU4OTExMWQ4NDczMjY0YzJiYjEzZjg0MyBweTNrCis2NjA4OCA4MWExYTE1NDUxNzIyYjgxOTVmNTc3NGE2ZGM5NGRjNTUzYWRmYzMxIGxlZ2FjeS10cnVuaworNjYwODkgNWRhNmYyMWNmODA1OTQyMWQxZDI0NjQ4NGNlZGNjNGY4ZGQ1NWJmZCBweTNrCis2NjA5MCBmYzExYTkwNGY2Y2QxNzkwYWY5MjBlODQ2MTIzOTgxMzQ1ZTNiOWQ3IGxlZ2FjeS10cnVuaworNjYwOTEgYmVlNmViNzY3NzQyN2Y4M2RhOTU2NmFiNjRhNGNhNzBlYzgwZTNhMSBsZWdhY3ktdHJ1bmsKKzY2MDkyIDYyNGI0NGI3Y2RmMjkyMTg0ZmY3NDAxYjgwZDY3NTU0YmRkOTE1ZWQgbGVnYWN5LXRydW5rCis2NjA5MyBiZTYzZWM3NDhlZTA2NGEyMDZmM2FjY2MwMmFiYjFjMTQ3YTJmYmMwIGxlZ2FjeS10cnVuaworNjYwOTQgN2UxOTRiOWNjMGEyYjRkMWYyNGQwZjQ5Y2VkZmY1Y2ZiMDlmYmJhZSBweTNrCis2NjA5NSBiNGMxNGI3MGZlMGY4MTk5YWM0YmZkMTI5NjlmYmQ2NjNjMDRiM2UxIHJlbGVhc2UyNS1tYWludAorNjYwOTcgN2IzOTUwMWIwYTc2MjQ3YzA5MjA2ZDcwZWIzOTNlOWIwODNmZWJhNyBsZWdhY3ktdHJ1bmsKKzY2MDk4IDEzZmRmOThlYTI5MDAxMzA3MmU3NmExZTA5NzI4ODNjNDIwYzg2YWEgbGVnYWN5LXRydW5rCis2NjA5OSAxNzZjNDA5ZmQ3NDdlODEyYTA2NzJkZGFhOGRhYzAwMDFhZjA1NmU3IGxlZ2FjeS10cnVuaworNjYxMDAgOGNkYTYxNWVmMjJiYjc0OGUwZWUzNTk0NDgxNGVkOWFmOTgzYWYzZCBsZWdhY3ktdHJ1bmsKKzY2MTAyIDVmYTBkMzFhNjcxYjc4MTJiMGNlZjRlMzkzNzYyYTYzZmJmMWNlNjAgcHkzaworNjYxMDMgNTc2NDQxNTI3ZDRmN2NjM2RiNzA2OTJkMzQ0NmExOWEyMmIxMTg5MSBsZWdhY3ktdHJ1bmsKKzY2MTA0IGVkNTlmM2I2N2IzYWUzYzExODc0Yjg3NWViNGMyZTM5ZTY4NDNmN2IgbGVnYWN5LXRydW5rCis2NjEwNSA5ZGIzZmU3ODBiZmM2YTEwMjBlODQ2Y2VhZjVhODBjMDI4OGQyZWYwIGxlZ2FjeS10cnVuaworNjYxMDYgOTI1MTUzMjI1NTcwYzNiOGUyMmNlNTg5MWRjYzliNzFmNDQ2OTNiOCBweTNrCis2NjExMCA1MTllMDQ3NTk5MWY3NmI4MWQ1MzAxNTg0NzU2MzEwMzk1OWE2Zjk1IGxlZ2FjeS10cnVuaworNjYxMTEgNjk2ZjVkODQxOWYyMDkzOTViM2Y2MjE3MjM0NzllZDY1MDljNGViMCBweTNrCis2NjExMyA3ZWNlYzFiMzBjM2Y0MDUzMTcxMDVmZDgzNWQ1OGYwMTQyYzRiM2UyIHB5M2sKKzY2MTE0IDk4ODY2MWZmZDEwMjljYjAzN2Y2MjRmZTI0NDhjMTA4Y2Y4NWI5YmEgbGVnYWN5LXRydW5rCis2NjExNSA1MWY3OTVjOTUzMGVjMGJjYjQ0MTZlOWE5YzZjMGFiZDMwNTVhMWNhIGxlZ2FjeS10cnVuaworNjYxMTYgYTVhMDcxYzgwZjJkMjUyOTRlMWI0NzIzNDE5NTAyYzk4MWI1NzQyOSBweTNrCis2NjExNyAxMmZiMzYyNmVlNTlmMThkZWY4MjdlMDUyOTRkMTIxNjM0YjE4NGYzIGxlZ2FjeS10cnVuaworNjYxMTggMzdhOWY2OTBhOTRhOWFjYjM5MjMyNzUxNmU0MzIzMDU5NjM4NTQ1YSBsZWdhY3ktdHJ1bmsKKzY2MTE5IGI1MzY1ZjM0NjQwZjJjNjY0YzE5MjI5NGViNjAzNTUyOTFmY2U3YWMgbGVnYWN5LXRydW5rCis2NjEyMCA2NmUxYWZkMzM0NWZkYjBiYjRjMWY5N2E5ZDE0ZDBjMWMwYzgxOGQ0IHB5M2sKKzY2MTIxIDE2YzAzZjdjYmMyMjFmOTQwNWMxMzU5YmIyYTczZmZkNDRmMjI4OTIgcmVsZWFzZTI1LW1haW50Cis2NjEyMiAzMmNlNDAyYTdlM2RmMjBjMGY1Y2U1MGU5MzU0ODc0YjI0MGRiY2ViIHB5M2sKKzY2MTIzIGU2MDIxYWFkMmRlMmQ1ZWM5OTRmNjc2NjEwMmQxZTViMTI4ZWU1ZTAgbGVnYWN5LXRydW5rCis2NjEyNCA2ODBiMDc2ZDBjMTNhMDNmMzM0YTY3NDlmYTQ0NjNhNWUzYjExNTE5IHB5M2sKKzY2MTI2IDRmYzQ4MGJlMWU0ZDJjNjc4YTM5MmQ0M2EzOWE0ODc2MmYxOWY5MzQgcHkzaworNjYxMjcgYmM1ODViNGQ0NjA2YjUyYzNjN2U1MWQ5NjJlNWZmMTc4ZjhjOGI2YiBsZWdhY3ktdHJ1bmsKKzY2MTI5IDllZDMyODdiZWVmMThhNGI3YmFiYTA0MTAxZGJjMjJkYzNhZmRmOGYgcHkzaworNjYxMzAgYWJhODU5OGM3ODVjYTUzZTMzNjIxZDBhOGFhNGJhMzY0MTQ5Y2YyMCBweTNrCis2NjEzMSAyMzZmY2YyOTM5YzdkNTIzODkzNGM2ZTBkODMwMDViZDJkMWY1ZDE0IHB5M2sKKzY2MTMyIDNiOTYwODExOGY4ZDg3Yjg4MTFiMzdhNDZhMDc0OTA5NTI0OTFmZjggcHkzaworNjYxMzQgOGExMDhkNTRlZjAzY2FhMWI4ZDdiYTgyMDc2MmRmMGFlYjM1NGIwNSBsZWdhY3ktdHJ1bmsKKzY2MTM1IGQ1NjM2MjFkNzZkYjRmOTRlNzQ1ZWJjNjJiOTIxNzhlYTMzZGIyY2IgbGVnYWN5LXRydW5rCis2NjEzNiBjZDE4NjMwNmYzODVhYzhjZmJlNjE4NzlmNDg0Y2IxMWJmZjA5ZDU0IGxlZ2FjeS10cnVuaworNjYxMzcgOGM0Zjc1MDY2MWVjMzk0NDA0OWYwYmU1MDUyMGY0ZDA3MTg5ODFmOSBsZWdhY3ktdHJ1bmsKKzY2MTM4IDRjMTc3MGE1NWE4NWU1ZGEzMzNlN2U0ZWRlMGFlMTMwNGNiNTg4Y2MgcHkzaworNjYxMzkgY2FhNDFlMTYxYjA0MTFmNDA2YzczZTE4ZTg4Y2Q4N2YxNzU5M2I0OSBweTNrCis2NjE0MCAzYmRjNDZmYWVmNGRhOGIwNmQwNzI5NWNjZmFkOGMwNzJjNmMxMjdjIHB5M2sKKzY2MTQxIDRiMjhiZjVlZTM5M2I0M2JhNDliYjhlODU1YzlkMTYwOTBkNjU3ZDUgbGVnYWN5LXRydW5rCis2NjE0MiA5OWVlM2I3N2JjMGRiMmYyYWUyYTNhODdiMTA1ODQzZjAwNTAxNTkwIGxlZ2FjeS10cnVuaworNjYxNDMgMTg5Nzc0M2IzMTVkZTJhZjU0YmJjYTcwOGMyYmEyMTc1MDEwZWVjMiBsZWdhY3ktdHJ1bmsKKzY2MTQ0IDRkYTRmOTY3OTY3MjU3NDRmYzJkNDg3ZDJmNTI1ZWMzNDM0NGJmYWUgbGVnYWN5LXRydW5rCis2NjE0NSAzNzc5ZmM5ZGZlNWY3Mzg5MGFhYTQ2ZTNjN2VmMTJlNGUwNmZkOTAwIGxlZ2FjeS10cnVuaworNjYxNDYgMzg4ODljYjQ1MTg4MTA1ZDcxZjgzOWM1MzZiNTZjZjQzMWFmNTY3YSBweTNrCis2NjE0NyA3YTZlNmEwNGUyOGQxNDkyYmExMWMwNzkzY2Q4OGU0OWQ1OThhOWI3IHB5M2sKKzY2MTQ5IGQ4M2NlNGI1ODFlNjE1NmQzYTdiYWVhMDE2MWRiNGE5YjRmZTk4MjggcHkzaworNjYxNTAgZDBkNTNkZTlkODJlMmYxZTk3OGMwNTUxYzQ3NjVlMzcyNzI2ZjU4NCBsZWdhY3ktdHJ1bmsKKzY2MTU0IDM4MTdjOTZmZDU0MDhhMGIzZjQxNmU3ZDYzMmVmZjY4YTZkNjg3OWUgbGVnYWN5LXRydW5rCis2NjE1NSAxYzE0Y2UwODU0MTUxZWEwNGUxNjMxYjY2YzE5NGFhYTZhZjM1ZjAwIGxlZ2FjeS10cnVuaworNjYxNjAgYmE1YzRjZTEyYmJkZjE2ZDU5NGUwMjY4NGIyZmFjMTkxY2M2MTI4ZSBweTNrCis2NjE2MSA3NTBkYTJkMTgwODkyZWE5OGIyZTBkYWZmZTBlM2FhZWIzNzY3YTJjIHB5M2sKKzY2MTYyIGM3ZmQwZTg4MWM0NTMwM2FkOWE0MTI5MDNjYTYxMTA4MmFlZjQxNjMgbGVnYWN5LXRydW5rCis2NjE2MyA4OGM5M2E5YjQxMzczYWQxY2UyYTY4OTExZTgzZjY0NzFhNzJiYzNlIHB5M2sKKzY2MTY2IDNiNzRkMTQ2MmUzYTBmN2Q0ZDYzMmE1MDkyMmEwODM4NjUyNjMyM2QgbGVnYWN5LXRydW5rCis2NjE2NyBmMWFlNjljZGQ0ZmZkYmZhYjY3YWM2MDhjMzNjY2ZhNDkwN2ZhYTZkIGxlZ2FjeS10cnVuaworNjYxNjkgZDgyNmE3NTU3MWJjOTc5ZjlkMDU5Nzk4NzE4ODdkMjIyMmU1ZDk5OSBweTNrCis2NjE3MCA3ODRkMjRhNWNlN2JhY2NmOTdjNDM4YjM5NGU2MTllZTBiZDFjOTE2IHB5M2sKKzY2MTcxIDJkODBkMDBiMWVmMzYwMzMwYTdjZTM0ODQ3OGUwNjI2ZjgzOWEzN2MgbGVnYWN5LXRydW5rCis2NjE3MiAzYmQ5MDAyZTc0MWZmYzMwNjYyYjNlODBiOTRmOWE3MTE3Y2MyMTkzIHB5M2sKKzY2MTc0IGUyZWRjMWMxMWU1MDc3NDQyOTUyNTJmMDI4NTdhMzJjZWQ2NGEyOGYgbGVnYWN5LXRydW5rCis2NjE3NSA2MzU2YTU0MTRkMDE5Y2ZhOTljNDQzZDRjMzQ3YmI5ODRmZDIzMDE4IGxlZ2FjeS10cnVuaworNjYxNzcgYmYwNDNkMGRiN2RmYzlmYTk3YWFiYjU1ZDI0OTgyMjNkNzhmZmQ2NSBsZWdhY3ktdHJ1bmsKKzY2MTc4IDc1YzVhMmM5Mzc2ZTliNDVkNjQxYzc3MTEzODcyNTcwZTBkZjQ4NDYgcHkzaworNjYxNzkgMmE2MGY3YjQyMzI4ZGIxNGEyZTk3YjQ4OTUwY2VjYjhjNWQ0ZmE1MyBsZWdhY3ktdHJ1bmsKKzY2MTgwIDVmZDM5Yjg0ZmMyOTJjOWU1MDZmYmYwZjQwMDkxMjQ0ZjI0MzYzMTMgbGVnYWN5LXRydW5rCis2NjE4MSA0YzY4M2VjNDQxNWIzYzRiZmJjN2ZlN2E4MzZiOTQ5Y2I3YmVlYTAzIGxlZ2FjeS10cnVuaworNjYxODIgYjllZDE0ZWI5ZTg3YmZjNmFmN2QzNjE5YTViNTY3NDA4NGMwYTkyZiBsZWdhY3ktdHJ1bmsKKzY2MTgzIDBmNjkzMGE0MzM2MjhjN2I1NWUxYTM0ZDgzMzZkZWZlZjRkN2E3MGUgcHkzaworNjYxODQgMzM4MzA4YzljY2NiY2FmNzBiMmMzMDVmYTBlYmZhZDBhYjZjMTBjMCBsZWdhY3ktdHJ1bmsKKzY2MTg1IDA2ZjU0ZTExYTA4YjRhYjUwMWExMDk3ZGI3ZDYxNzc0NjU4MzRhMTkgcHkzaworNjYxODYgMjJhYjEwNmUzMTg2YjU4NDk0NjBkMWZmM2Y5NjliMjRmNzAzM2UxNCBweTNrCis2NjE4NyBmODNkY2NmNDE3ZjBkYTZkM2QwNjc1YTI1ZGY3Yzk0MjQ3NzM1NTE4IHB5M2sKKzY2MTg4IDkyYTAxZmUyNGFlMDY0MWFmZWQxYTllNDJlZjgzZmQxZTgxMTNkYzAgcHkzaworNjYxODkgNjE1NDUxNmJlNDljZGM5NGZiM2JhOTMzMWEyODI3NzBhMDEzMWY4ZSBweTNrCis2NjE5MCAxNGZjMTY5MjZjMDNmYzg1ODkyMDk3NjZiZTYyZWRiZTk4MTdjZWIxIGxlZ2FjeS10cnVuaworNjYxOTIgMDFmMmRjZTA2ZjdkMTAyZmI5ZDQzMjYzM2E3MzVhOTVlNjMxN2FmYSBsZWdhY3ktdHJ1bmsKKzY2MTkzIGU2YzdiNmZhMDc3MWU0MGI4N2IwNzNjMjdmOWUyYjNlNjcyOTE3ZTUgcHkzaworNjYxOTQgYTUzODYxMDE4NjViOTdlMGUzODczOTg2YmI0NjliZmU2MzE2ZjFiZSBweTNrCis2NjE5NSAxNzdlOGE2MWFmNDVjNTE0MGRlMDZiNzYyMzM1YjYwMThiNWNlZGU0IHB5M2sKKzY2MTk2IDJiODU1YTk0N2YwZjVmNjA0NDhjMTZiYzQ5NWJiODc0ZjcxMWU5YjEgbGVnYWN5LXRydW5rCis2NjE5NyBlMGFiNWIyODYxMjQ1NmNlNzhmOTNhNmQ0ZDQ5YTgzZTg2NTY0NmUzIGxlZ2FjeS10cnVuaworNjYxOTggZTdiY2ZkNzIwODk4YWJhNDI1NzlkMmFkOTU3MjE0ODQ2NGU3MDk5NCBweTNrCis2NjE5OSA2NWUyMzY4M2MwMTBjM2RhNDcxOWMxNTkwMzViMmU2OGQyMTE3Y2JjIHB5M2sKKzY2MjAwIGUzODQ3ZTdjMjRlMDMyZTRhMTQ3NzdhOGM4ZmVmZGUxNzM2YzlkNTUgcHkzaworNjYyMDEgOTk1N2EzNmZjMTY3ZWNjZDM3M2NjNmQ5MDkxY2FhYmVjZTZjOTI1NiBweTNrCis2NjIwMiA1Yjc4NDVlZjRlZmQwZDlhYmM0YWNhNWZmOWY3ZmI1MzM1Njk0MDUzIHB5M2sKKzY2MjAzIGM1MzIzNGZmNjFiMDBmNGRmZWEwOWFhZWMwMDNlNTk0NDgzOWU1NzAgcHkzaworNjYyMDQgODEyZWExMDViMWIwZWQwYjlmMTEzMDU4MmFjNmQ5NzBkMmViZDllNiBweTNrCis2NjIwNSBmNzFhODkyOGMxYjdiOTYzYTc2OGI0MzEwOTRhYjdlOGRlNjg3NWNiIHB5M2sKKzY2MjA3IDE0MjQ5YmNiOTNkMGNhNjVkOWE4YTRiNmRjYjEwOTQzYjQxN2E2MWMgcHkzaworNjYyMDggYzViZTk0ODRiMTRiZDA3YWY0ZThkNDYzYWI4YTdiYTM4MDEwZTk4YiBweTNrCis2NjIwOSA0NWM0MzgwODk3OWU5NTc2MzZlZDNkOTBmMTQyMWE5MDkyMDIwZWE3IHB5M2sKKzY2MjEwIGRjNzc0Y2UwMWMxZmEyYjU5MzIyNjVlY2ViZWY5YjA5ZDQ3ZDkxZjMgcHkzaworNjYyMTEgODMzZDNlY2ZiYmYwOTEwOTQzN2IwMzZiNDY4NDgyMDU1ODYyNDU1MCBsZWdhY3ktdHJ1bmsKKzY2MjEyIGIyNjY1ODQ3NmQ1NTU5ZjAzMWI5NDNiODJiYzA5ZjliOTYwZDZiNWYgcHkzaworNjYyMTMgMzE2OTIzNjc3M2YxYjc1YjMxZGZjZWMyODUwNzZlNGU5MTFhMDVkMyBsZWdhY3ktdHJ1bmsKKzY2MjE0IDJjMmJlZjhmZmNhMTM4ZmRkM2IxYjFmMzE3OTBiMDE1MmZhZTA1YWIgcmVsZWFzZTI1LW1haW50Cis2NjIxNSA1YzEwYWY4ZDMzZjVjZDJkZTMyZGMxNTBjMDJlMWQxNTA5OWM1ZTA4IHB5M2sKKzY2MjE2IDk0Y2MxMWVjN2VjMjAyZTMzNjQ3OTVlNzI4YWFkYjY5NTNjYzBmMWUgcHkzaworNjYyMTcgNWI3NmEzZTQ1YWIzZTAxYjc5YWNlZmY0YzBkMGMzYTEyYzc2MjZjZiBsZWdhY3ktdHJ1bmsKKzY2MjE4IGFlMmMxYjI3NWZlYjNhYWRiMmUyNDQ1NzIzN2IzNWU4ZGY3OTJhMjIgcHkzaworNjYyMTkgNDQ1MmZmMWZiYzlkNTEzNDJjMmQ1Y2YzZTUxZDE5OTljOGY2ZmZkMyBsZWdhY3ktdHJ1bmsKKzY2MjIwIGI3NTczZWYyNGM3MTllYzE1YmZhMzUxMjMyMmQ0MzAyOTQ2ZDFhYTAgcmVsZWFzZTI1LW1haW50Cis2NjIyMyA3ZjhlZjk4Mjk0YmMxMWMzNzVjZTYyYmNmZTM0YmViOTZmOGNjZjg5IHB5M2sKKzY2MjI0IDNmYTA2NmQyYTM5N2RjNzA4NTRhYTMyZDgxNzIzZTU3YTYwYzIyNGQgcHkzaworNjYyMjUgNmIwNGJjNDJiYWE1YmE3YThkNzZlM2UyNWFkZjk3OWY1MTAzOWRjZSBweTNrCis2NjIyNiBjNjE4M2E4OTg4MGU2MjgxM2I0ZDRjZGI2YmY3ZTdjNWQ3Mzk3NDIxIGxlZ2FjeS10cnVuaworNjYyMjcgZmRkOTNiZmE2YzFiYTVlNzViODkwZjk4ZmUwNzdjOWJiNDFhMGU5NCBweTNrCis2NjIyOCBhNjYyMDM0M2UzZGI0N2Y4YmU2ZjI2MjQwZjE4NWRmMjhkMDRlZGQwIHB5M2sKKzY2MjI5IDhhZmE3NzIzYWZhNzZhZDA3YTM4MTQ4NjhmNDhkZWU3ZTBmN2I1NjMgbGVnYWN5LXRydW5rCis2NjIzMCBiNDg2NjQ5Y2E4YmNlMjAxN2EyYTMyODQ5ZWJhYTdiM2ZiZTA1MjQwIHB5M2sKKzY2MjMxIDg5YTliYzE4NTg2YTE3MzJmMWFkMjE0OGRlNTA3NjQyZDE2ZWEyNDkgbGVnYWN5LXRydW5rCis2NjIzMiBiNDU4NjhmZTQ4OWNiMjM5M2ZkYTBlMTQ1MzBhMGM4MTY0OTg2NjQwIGxlZ2FjeS10cnVuaworNjYyMzMgZTdlNzBlODgxMTYwYmFiMzM5NDhjZWVlMGQ3YWU5YTQxMzY5Y2ZkNSBweTNrCis2NjIzNCBhNjc3ZDY4ZTgxMDVjOWFmZGQ4YTQyZTNkMjIyYmYzMzI5ZmNiYjFlIHB5M2sKKzY2MjM1IDQzMzIyMGE2MGE4ZDAzNTBmNDA2ZTFiMTVmMDcxMmQ5YjdiNmMxNTEgbGVnYWN5LXRydW5rCis2NjIzNiA5N2I5ZjBiZTkzODUyNDlmMzJiNjY2MmJmZWZmMzVhZjRkYWEyNjRlIHB5M2sKKzY2MjM3IGU3NDA5Njk3MzhlZjFmOGFmNWZiZjhlYzg1NDA5MTQ5NDI1MjU1ZDAgbGVnYWN5LXRydW5rCis2NjIzOCBlY2Q3ZjU5MGUxNDI0NzljMTZlZWFhZWQ3YjVmNzVjOGMyMzk5MzdlIHB5M2sKKzY2MjM5IGRhYjdhYmI3N2U4Zjg1NTMyYjI3YjZjNGNmMzY3YmU3Yzc2N2VkMGUgcHkzaworNjYyNDAgZjMyNTE3Zjg3NmI2N2MxYzVmMWM4ZjIxNDE4ZDlhNDRjZjFlYmFiNCBsZWdhY3ktdHJ1bmsKKzY2MjQxIDI2YmRkOTRhNDI5Mzc3NmEwNzdkYjE0MTA1ODA4OTVkODA0MWFjMWUgcHkzaworNjYyNDIgYzNiODExMjE0Y2U4ZmFhZDAxODY4MzMzZjJjYjRiMGE5YmNhNmE5MCBweTNrCis2NjI0MyAyMzhhMDg5ZDQyYmQ2MmUwODc2ZTljM2IwNWRkMDNhZDI5NGFhMTEyIHB5M2sKKzY2MjQ0IGRjMDcwOWEyYjQyZjU3NzIzNGE4NjI4MGY1N2Y1YzRlMjQ5MDE2ZWYgbGVnYWN5LXRydW5rCis2NjI0NiA0ODgyZTRjNDFjZTNlZmViNWJjMmYzNTNhYThlN2Q1OTM0MDczNjI0IGxlZ2FjeS10cnVuaworNjYyNDggMTkzMzgyNDc5MjVmYzRjZjljZTMxNTNjMjY3MjYxZDNlMmVhZGQ0MCBweTNrCis2NjI0OSA3NTFmMWI1Njk5YmFkZTRlODA2NTdhODExOGE4ZDFlOGEwOTE2Yjk0IGxlZ2FjeS10cnVuaworNjYyNTAgMTJlZjdhOTJlNTliYmIyNDVkOGM5MzM3NTAwMjE4ZDQ0NjBkZTcyNSBsZWdhY3ktdHJ1bmsKKzY2MjU1IDY2MjMzNmQ1NjdhOWVjZTZlMWIzOGFmNDE1NWM3YzEzYTYyNGJlMDcgcHkzaworNjYyNjAgNmU3MWIzOThiNmNjZGZmNjgzYWMxMjAwMTAyNGYwMGVmYmU2NGE5NiBweTNrCis2NjI2MSBmODM2ODE0MmY4ZDNiNDI5ZjExYzg0YWM5OTM5MmQxMDNjMzM4ZWFlIHB5M2sKKzY2MjYyIDE1ZGYyOTcwNWUxODJhMTI3NjI5ZjY0NmNlY2UyZjRkMDJjOWM4NjAgbGVnYWN5LXRydW5rCis2NjI2MyA0ZGQ1OTg5MTQzODM0N2M1ODQ0MzZmODU4ZGE0NWU0MTAxYjQ4ZjEyIHB5M2sKKzY2MjY0IDY3MDI4ZjViMzMyMWNjM2U5NTIzZDE1NzBlM2MxN2Y1ZTlhN2MwMjAgbGVnYWN5LXRydW5rCis2NjI2NiBjMWE4ZjZiNjQ4ZWE1MWYxY2E5YTJlNTdkNjI1MWFmM2FlOWZiOTMwIHB5M2sKKzY2MjY4IGJiMGY3NDI4YTE1MDdkZWJhNzIyZjFhY2E5OWVjMmIyMDkwY2UzZjAgbGVnYWN5LXRydW5rCis2NjI2OSA2NzQ2YzZiZWUyODYwOTNjMzFlZGI4OTBmZGJmMjM1OTU1NTU5MzBjIHB5M2sKKzY2MjcwIGUyN2NmN2VlMjk2OGIzZmFlOTBhM2VkMWRhZGY0ZWNmY2UyYTU5MTQgbGVnYWN5LXRydW5rCis2NjI3MSBjYTFhOGFjNDdkMDQ2MWQxMzJhNzM0YzMxMjVmYmZiYjBiNjkxZDQ1IHB5M2sKKzY2MjcyIDQ0NWNlNjU3NTE2MmViZDNmOTk0YWY3YjE2MDA3ZTAyYzhmYTI5YzUgbGVnYWN5LXRydW5rCis2NjI3MyA4ZmZlYzM3MjA0MGU0N2E5YjI2MDcwMjE5MTc3NDVlZTc0YmE2OGQ3IHB5M2sKKzY2Mjc0IDE3OWY4ZDg5YWQxOWE2YmE0ZjQ0YTZlZGM5ZmI1ZmUxZTg3ZmFhNDQgcHkzaworNjYyNzUgZmRhNjg5OTcwYjNmODI4YTZkYTIyNTNhNGJjYmFjMmI2MzYwMDY0NyBsZWdhY3ktdHJ1bmsKKzY2Mjc2IDAyNjI3YjkyNWE0M2M3MTk0YjU4MjRiMWIxMGFkZjliZTFjOGM4ODEgcHkzaworNjYyNzcgZmRjMDk0OGM5NWNmMTk3OWIwNTAyNmI5MDk2YWM0ODIxOWJhNjlmZiBsZWdhY3ktdHJ1bmsKKzY2Mjc4IDEzOTU1YmNkMDhiZTFhNWFhYzI1NzU4MjBiYWY5ODZhMmZlMGJmNjEgcHkzaworNjYyNzkgNzdlMWI5NWYxNDE4YjEzMWQ0M2IxYmYzYjZlM2JlYjVkYWNiMWZhZiByZWxlYXNlMjUtbWFpbnQKKzY2MjgxIGM2YjAyZjc5YjJiYzNhMzU2MDljYmFmOGIyMDYxMzRjYTJiYjg0MGEgbGVnYWN5LXRydW5rCis2NjI4MiAyZWNiNTZlNmUwYTZjZDEzMmFhOTExNDBhNDI3NTJkNzU2NTk3ZTc3IGxlZ2FjeS10cnVuaworNjYyODMgNzUxMGQ4NzNiODhjMzAzMGUxNDk5MjljZTI4ZjNkNjlkZWQ2MTE1OCBsZWdhY3ktdHJ1bmsKKzY2Mjg0IDNmMmM0Y2UzMmJhNDdhMmQzOGE0MTIyZjljODYwZWM3ODk3MTJiYWIgbGVnYWN5LXRydW5rCis2NjI4NSA5MGNmYzZiOTI2YzZmNTQ0YjRkZDY0MjlmNjdhMDJiZmE2ZGZmYjBhIHB5M2sKKzY2Mjg2IDQ3MzNkODRmMzQ4OGI0ZGUxMWZlNTBiOTE0ZDMzYjIwNjU1ZTY1MzkgcHkzaworNjYyODcgNzM1MzZhNThhYjQyNjFkMmI1Yjc3NmNmZjI4ZmJmNTkwNjk1Nzk0ZiBweTNrCis2NjI4OCA4Y2ZiYjJlMjc1ZDljOTE1NGFhMGVjMmIxZDUyNTQ1OGU1ODM0N2M4IHJlbGVhc2UyNS1tYWludAorNjYyODkgOTg3ZGI3YWYwNzAwMmExMmMwM2ViZWY5YjJhMDFkNGU5YmUyYzYxOCByZWxlYXNlMjUtbWFpbnQKKzY2MjkzIDUyM2Q2ZDdlNTgyNWMyN2FjMDYzYTczOTNiOWUxMTQxZDM0NzYyYTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2Mjk0IDNhZjZhNzAyMDcwYjQzYTRlYTRkNDU1YmNmNmU1M2I2NGQ0M2RlMzQgbGVnYWN5LXRydW5rCis2NjI5NSBhMWNhZTk1NTVmNWRmODI4NTljN2RkYjY1Y2Q3MzNiNDM0MTlkMjI2IGxlZ2FjeS10cnVuaworNjYyOTYgMmFiMDUyOTIzN2NiMWE1MDAwOGE4YzA0NTgwNTZiODRiOTJkMzk2ZiBsZWdhY3ktdHJ1bmsKKzY2Mjk3IDI2MTFlOGFlMjM4ZmQ2ZjFjZTYzNDU4YmNiYTEzYTVkMDI1MmIzYTYgcHkzaworNjYyOTggZDc5NDIzODE1MGQyMmZjNGFhZjEwM2ZlNjcyNGI1NzlkYzRjOTRkMCBweTNrCis2NjI5OSAwNWUyNWQ3YTA3ZTE5ODdmNTVjMTQ3NmQ4ZDA4NTVhMWQzODk1MjI0IHJlbGVhc2UyNS1tYWludAorNjYzMDAgYTkzNDdjYjhhYzM4MDY3MmRhYjI2MDQ4OGM2YzE4NGVhODQ4YTdkNSByZWxlYXNlMjUtbWFpbnQKKzY2MzAxIDdiMWY4ZWRlOWI1MzQzZThjZjQ2OWI2ZmJkNjA5NTEyZjhjMjZmMGQgbGVnYWN5LXRydW5rCis2NjMwMiBmMDg1ZjM5YTZmNGQxMjIzMWU2ZDY2OWZiODcyY2RlMGY0OTZjMTU1IHB5M2sKKzY2MzAzIDI3MWRjZTA5MTdjMTA1NzU0YzAyNjEwYjM1OWMzMDAyNWJlYjgxMTkgcHkzaworNjYzMDQgYWEwZWY1ZGUzNDVhNzg4ZjdjY2FmZDI0MGUzYmJmMTQ2MThhYzcxNyBsZWdhY3ktdHJ1bmsKKzY2MzA1IDU2OGFiNTgzNzE5NGQ4OTllMTFmZWQwMWMyNzA1Y2JjMWE5ODhhNWIgbGVnYWN5LXRydW5rCis2NjMwNiBmZTUzNjJkOTM1NDI1OGUxOTE5YzkwZDA2NjhlMDQzNTBlNjg1ODI1IGxlZ2FjeS10cnVuaworNjYzMDcgZDYxYjk1NmIwYmY2NDRjMzA5ZjBkZjI4NTY3OGFjY2UyOTk5ZDRhYSBsZWdhY3ktdHJ1bmsKKzY2MzA4IGRlNmVlZjMxYWE1ZjcyOThlMWFhN2M4M2RiNjYxOWVkYWFhZWUyYmQgcHkzaworNjYzMDkgNTA5NDFiZWZmMDMyOGI0ZjZiMjY1YTAzMWRhYzdlNzg3MjY1YzZkNiBweTNrCis2NjMxMCAzN2I3MGNkNGEwZjBkMTBmZjk4OGEwN2YwNTJkYWI1YjRiMDhhZmU2IGxlZ2FjeS10cnVuaworNjYzMTEgYWMzYjY3MDQzMzYxZWE2MjkyMTNlY2YyODUzNjY0YmFlN2Y0YmY0NSBweTNrCis2NjMxMyBiZjRiYzk3M2UyYWFmYjMzOGZmNzA3YTJjYjllZTBkNjE4MmIwNWI5IHB5M2sKKzY2MzE0IDQ0NzAyZTI3Mzc1MDZjNTI3YmRjM2IxYzUwYTI5ODkzZjBkYTUwM2YgcHkzaworNjYzMTUgYzg3MTNmYjA1ZjllNGU4MzQzMThlNTRhNWQwZDY1OTE0YmMzNzEwNyBweTNrCis2NjMxNiA5NzNiZGIyZGI2YWM5NmUyNzBmYzUzMmM3NjE5OGQzZGJkN2JmM2E5IGxlZ2FjeS10cnVuaworNjYzMTcgNGQxNDhiYjg0YTA3N2IyYTlmYTM3MzRmZjRkM2UzNmFmMmU2NjU4MCBweTNrCis2NjMxOCA4NmE0MmU5ZjczZGMyMTkzMDE2OTJhMjdkZTVmZmMzN2RhMjg4ZDJmIHJlbGVhc2UyNS1tYWludAorNjYzMTkgMjNiNDUyYWMxYTUwYTQ5ZmM0OWM3MjAxZmU3NWY5YzAzY2VlOGYyYyBsZWdhY3ktdHJ1bmsKKzY2MzIwIDk2NGRiODc5ZjE5MGU5ZGNjYjFkNmY1ZGNlNzEwN2M1ZDE1NDQxNjIgcHkzaworNjYzMjEgZmY5NmEzMTNjZDFjODM5YmEzMWIzNTQyMzFlY2VkYWRmNDIwNzVhOCBsZWdhY3ktdHJ1bmsKKzY2MzIyIDNlNmU1NjVlZTMwYWRjYjVlYzAzYTU4MGU3ZmExOThhMjRkYTk3ZTIgcHkzaworNjYzMjYgYzQ2YmNjY2YyYWYyZTQ3NzI1NzQ5NWQ5YWQ1YTZiMzc5NzA5MTQzYyBweTNrCis2NjMzMCBiNTI4Y2JlYTYwZTFjNTE1ZjA4MDI2OWQ0YTM5M2U0MDhhNjg3MTRkIHB5M2sKKzY2MzMxIGY3MTIzZDQ1ZDBjNDNlOWFlMGU4MTZhNjA3OGQyZDBkMTUzYjM1MWYgcHkzaworNjYzMzIgOTc0MDQwYzhmMzY5NjExMDc0OWY5MDM0OTY2NzJlMzk1NzE5MGFkNiBsZWdhY3ktdHJ1bmsKKzY2MzMzIGY2NjUwZjI0NzU5OGUyZDk4NmY4NjIwZmJkNDNhMTdjNGMzNmUzMWYgcHkzaworNjYzMzQgNzA4N2VhODI4ZGRhMmZiNTkyNzA0MmM1NDkxOTY2MmFmZDUwNjRmMiBweTNrCis2NjMzNSAwZjQ0NTdjZjI1YjJjZWJhMDk4ZjU0YmI4YzczOWEzNmFkMmU5ODc4IHB5M2sKKzY2MzM2IDc1NjYzN2EzYWM0YmEyNjEwMTQwYTFlNDNkZjA0MzA4M2VlMzczYjAgcHkzaworNjYzMzcgMzZiMmQ2NzRmYzhjNTNmZDQzMDNjM2M0ZjRhN2ExNTVjNWRjNWI1NyBsZWdhY3ktdHJ1bmsKKzY2MzM4IGNkNjFkNTRmYzhjMDY0ZDczNjcxODE2YTk2MTQ3M2M2YTI5YjYyZDIgcHkzaworNjYzMzkgMjkwOTQ4NDJiMzc3NmE5ZjhiZTljOTg2NjNiYjRkNjBkNjBkNjlmOSBweTNrCis2NjM0MCBhOTBiMjg1NDU4YWIwMTdlMWZlMjc0ZjM0NDliNjkzMzMwN2RjYjFlIHB5M2sKKzY2MzQyIDEzOWY2YmFlZjZjMjMwODMxM2ExNDJmNzVhNjNhMWQyNGM4M2U2Y2UgcHkzaworNjYzNDQgNDI0OWU1ODM5N2VmMDFjMWYyZTJhN2MyODBkMmExZmVjNmUxOWFhMCBweTNrCis2NjM0NyA2ZjA4Mjc4YmY4YjFmNWVhOTg3YWU1NTkxYTk4YmJkYzJlYWY2OWE0IGxlZ2FjeS10cnVuaworNjYzNDggZGMwY2FlMWU2YWRiMTU2MTk0MGRkMGI2ODc5NjgzOTEzM2E1ZDAyYyBweTNrCis2NjM0OSA0OWE5M2MwMmE2ZDIxMzE3ZmE1MjYxZjVkMzQ1Yjc5ZDY3ZTI4NGZkIHB5M2sKKzY2MzUwIDc1M2E3NmIzZWVhOTFkZDE5Y2E4OWI2MjFjYmJlNmRjNDY5NTFkYTEgbGVnYWN5LXRydW5rCis2NjM1MSA1YzAzODgxYzIwNzU1MTUyNTUyZjZhMjhiYTU1MmZkZWQzNTI0YmMzIHB5M2sKKzY2MzUyIDczY2M3YjYzNTViODE3NmE5NWI1NTkxODU4OWJlNGVmZDZiZTNmYzEgbGVnYWN5LXRydW5rCis2NjM1NyBkYzE5YTFiN2M1YTYzNDQ4MDUzNTdjNzY4YmY1ZDViYWZmYzM5N2ExIHB5M2sKKzY2MzU4IDJjMmUzYTU2YzdiY2M4NjcyM2MxNGRhOGE5NDE4YWQzZTQ2YmY0YzEgbGVnYWN5LXRydW5rCis2NjM1OSBlOTBhM2YwYTk5MjhhZDNlYjRlZTdlYWM5NjIwZTU2NzdkNzc5NGNhIHB5M2sKKzY2MzYyIGMzN2M3ZGJkNzg4MGRiMDM0NWNhN2U5N2EyMjZiMTFjYmY0Yzg1Y2QgbGVnYWN5LXRydW5rCis2NjM2MyBkYzYwMjkzYjI5ZDUxMTliZjY3NzI5OTZhZTc1NGQxMGRiMmM5YTllIHB5M2sKKzY2MzY0IDk1YWM2OTgzNThhYmIzNGQ4MDM0ZTRkZjdiZWM0ZjA3ZTRiNWQ4OTIgbGVnYWN5LXRydW5rCis2NjM2NSA3NzU2NWJlMWI5NTc3MGQxZjI2NDQ3NzdlODhkYTRiMzg2OWFmNGRmIHB5M2sKKzY2MzY2IDUxMzI2NmE3NWVjMzFlMTFlMzM3NWRlMzYzN2MyOGZlNTA3MzYyNzUgcHkzaworNjYzNjcgZjEwMGVmY2ExNDg3MWJiODIxYTMxYWVjOGRkOWQxYjAyNWJkZGZmZCBsZWdhY3ktdHJ1bmsKKzY2MzY4IDI1ZjE0MTI4YTk3YzE4ZTQ0YmZkZjQxODRiZDk3MThhODU3OTYyY2IgcHkzaworNjYzNjkgMmFiODVjMzkyYThkYWUwMGE1ZTE3MWQ4YzZiYTA5NjllMjQ3YTUwYSBsZWdhY3ktdHJ1bmsKKzY2MzcwIGRkOTYxNDRlNmU4MWZhNGU2Y2M1OGFhZTA3MDM1YTg5NGNjYjFkMzQgcHkzaworNjYzNzEgZjk3Nzc5MjYyYmFjMWIzNWVkYTMwMGI2ZTdmZTI3MGFjMDcyZTE2ZiBweTNrCis2NjM3MiBhZjQwMjM4YTY4Yjk1Y2EwODNhN2JiYzU3ZDQ3ODkwNDYyMWY5N2ZlIHB5M2sKKzY2MzczIDU4OTA3M2NlZTBhZTQ3YTY2YTEwYjljNWFkMDExZTIxZTdhMjAzZmIgcHkzaworNjYzNzQgMzQ4YTMzMDQ4ZWJmNDhmYjUwNzI1NjNmODZiZTc0NDJmNjNjNzQyNyBweTNrCis2NjM3NiAxNzQ3NWViNTUwNjdhYzFkMTk1NjA4MWRmMmNlZGY2MTUwMTQ0MWZmIHB5M2sKKzY2Mzc3IDE0NTQ0OTEwOWEzMWNhMTZiMzRiNzllMjk4NTA4YmFiYjQzNjFlMGIgbGVnYWN5LXRydW5rCis2NjM3OCA2YWUyZDRiNTA3YTI1MmY2MWQ0MzI0MDgyZGNjMjA5ZGRiNmNkMjY5IHB5M2sKKzY2Mzc5IGE0ZGY0OTAzYjM1NTU2NGYyYTQ3ZTUyMTljNDU4N2UzZDc1NDU4ODcgbGVnYWN5LXRydW5rCis2NjM4MCBkMjdkZjA4M2Q0ZTY3NGQ5NzJlOTU0YzQ0ZDc4ZjYzZDc2Y2UyNWI1IHB5M2sKKzY2MzgxIDUxZmY5MzQ1NjJjMjNlY2E2ZGNmMjFlY2VhZmI5N2I1YmIzZGI4MTkgcHkzaworNjYzODIgODc1MzEzMDFiYTQ4Yzg3ZTI4Y2RiZGViMTA1YmJmMWZlZTQ3ZGM5MyBweTNrCis2NjM4MyAzZGMzMTgwOTYzMWZlMTc5MTVjNTY2YjQxMjI2ZTgyZGM2YmMzYzliIGxlZ2FjeS10cnVuaworNjYzODQgOTZkNjI3NmQ4MGUyMzI0NmJhMDEyNDMxZDA3MDMwNjA1NDgyYjVhZCBweTNrCis2NjM4NiBmMjhiOTk5YTY5ZjgzYjY1MDM3MWY1N2NlNDMxOWZiMzc0ZWU3NzhhIGxlZ2FjeS10cnVuaworNjYzODcgODljMmE2OTdmNzcyZjBmYjY1ZmVmZWM0MDMxYzFkZTAzYTRiNmVlNiBweTNrCis2NjM5MCAwZWY3Y2IzNWIyMTY3MjQ2NzY2NGZjYmMzMjM0ZWExZGUyZGU0NjZhIGxlZ2FjeS10cnVuaworNjYzOTEgNGNkOTdmOGRlNjllMjBhOWU2NDVmY2U4YjM2ZTQyOTlhM2RjOTI3YyBweTNrCis2NjM5MiBjMDVmNWFiZWY3OGFkNTI1MmUyYmVkYThlMGQxM2U5N2VkOTBiN2U4IHB5M2sKKzY2MzkzIDI4MDM0N2QyZjc2NTAxZTIzOTQ0NWRlNmYxNWNjYmFiNTdmYjQ0M2UgcHkzaworNjYzOTQgMGZjZDRkYjIzZGZmZWIzOWM1NGM2YTJjMTY1MjE3Mzc5N2NiMjAxYSBsZWdhY3ktdHJ1bmsKKzY2NDA0IGZmMTVlNjJhMzQ5Yjc4YmQ3ODllYWU1YjE3YmU1OTc3MDE0YzU5YWIgbGVnYWN5LXRydW5rCis2NjQxMiA0Yzc3ZDEwMTZmNjBhZjQ1MjZjMzNjYmRkMzkzYWVkN2VhZGU1NDNkIGxlZ2FjeS10cnVuaworNjY0MTQgNzZiYzc1NzcyNzM2ZjMyZTlkMzQxOGE1ZjFmMzE1NzVkYTgwZjNhYSBsZWdhY3ktdHJ1bmsKKzY2NDE1IDM4MWVjZjQ2ZGZhZTQ0YjgzZTNiOGRiNGYxMGNkYjRhMGZmZjQxZmEgbGVnYWN5LXRydW5rCis2NjQxNiAxZWJiMmE4Y2MwNmM5NDQ3MWQ3MmI1NDc2YzIwNTBjNGQxMTVhMWFhIGxlZ2FjeS10cnVuaworNjY0MTkgNGY3ZGUxY2E5MmZmODA2NzFlYTIyYTU4M2IwYjlhOWNlMjYxNDgzNSBsZWdhY3ktdHJ1bmsKKzY2NDIyIDczOGJhODMxOWY0OTIwNGU0OTYxOWNiNWVjOWE1NzNmN2I2MTVmNTEgbGVnYWN5LXRydW5rCis2NjQyNCBjOGQ0NDZlYTk2ZGFiZDNiYjRkZDc2NjU3ZTZkOTJhZTEwMjljZWI2IGxlZ2FjeS10cnVuaworNjY0MjUgMDkzMmI5YmFhN2E0NThmMzVjZDcxZmY3ZWY3MGFmOWNmOTgxYzE3MyBsZWdhY3ktdHJ1bmsKKzY2NDI2IGJiM2QxYmQxZTI5MzNlN2UxMWViZGRiOWM5YjFmYmIyMDNmOTcwYTQgbGVnYWN5LXRydW5rCis2NjQyNyBlN2MyODAwYjIzYmY4MmI1NjkzOWMzY2JkZDlmNzNhMTBhZTIxMzA0IGxlZ2FjeS10cnVuaworNjY0MjggNDE1MjRmOWUyYTJmOWZiODU5Yzk3YTNjMWRkMTNhNTU5MjgwZjZkMiBsZWdhY3ktdHJ1bmsKKzY2NDI5IDVjZTAxNDM4YmFhYTU5NWNmOTE1MjE5MmJlZGRkNjA1NTcwZjA2YTAgbGVnYWN5LXRydW5rCis2NjQzMCA1OTZhMWFkOGZlYjYxYjI1MjM3YzlmN2QyMjZiNzg2MWNhMmU5MDNhIGxlZ2FjeS10cnVuaworNjY0MzEgNzQyNjcxYzVkN2M5NWM2NWFiZDNhMGUzY2QyMmI3YTdjYzRlMjA4ZCBsZWdhY3ktdHJ1bmsKKzY2NDMyIGMwZGE3ZjIzNjFlY2RjMzg1ZjlmYjJkMjFkOTU5NTM3ZDQ3NzE3MGQgbGVnYWN5LXRydW5rCis2NjQzMyAwNTEzNjI5M2YwYzhiZmQ1Y2QyODM1NDYyOWRlNWMyY2Y3ZWEyMjFjIGxlZ2FjeS10cnVuaworNjY0MzQgYzNmMGY5NzgzOWUzODI3N2VmNWM5NTEyYmI5ZmNiMGYxYWQ1NmIwOSBsZWdhY3ktdHJ1bmsKKzY2NDM1IDUyZWY5NWJkZDgwMWU0NGJlNGZmYmEyYjU1MDdhYWVjN2VhNDdjMjUgbGVnYWN5LXRydW5rCis2NjQzNiAwNmYzMjNhYTcyYzQ5NTA3ODBiZTE2NGNjOGRjODVjOWViNTA4YTQ0IGxlZ2FjeS10cnVuaworNjY0MzcgNjcwOWZmODI4N2Q5ODc4NGFhNDFiZDk2NjZiYmJmMWQ4NWUwMTY4MCBweTNrCis2NjQzOSA2NjY1ZWJmZjY0ZjFmMmMyMDY2MTJjMDg4NjFmNTdkZjJkYzg3YjM4IGxlZ2FjeS10cnVuaworNjY0NDAgMWVhZGRkMjM4OGNjMjc0NzFmYjQwMjNkYjA3ZjE4YzM3NDAzY2YzOSBweTNrCis2NjQ0MSAxYWYxNjk3MGRhYzNmZDQ1NjVkZWZhMjMyODkxMWM4MmI3NmE1NGJjIGxlZ2FjeS10cnVuaworNjY0NDIgZDQwNjk4M2VkOTI3OWNjYzY1OWM4NmZiMmNhMWQwYjBmNDc4NjYwYSBweTNrCis2NjQ0NiA4Zjg4NmFjYWExNDJjY2FhOWQ5YjYyMjg4NjIwY2IxZmJiNDU5ZDg3IHB5M2sKKzY2NDQ3IGZlYjdiZGUxYTRkOTMwMTE3MDg2YTI4NTZiZmMwZmE5NjYyZGY3ZjkgbGVnYWN5LXRydW5rCis2NjQ0OCBjODdiODRkYjI0NGNmNjMwZTMwMzcwOTczNmNkOGRmZjE3YTJhNTIxIHB5M2sKKzY2NDQ5IDA5NWRlNWI5MjlkZGJiNTY0ZGY5NTU0OTc1ZTEwMmY5OWJhMGU5YzYgcHkzaworNjY0NTAgNzViMGRjYmMzY2M3MTgxNTg4OTAzMzJlYWU0Y2U3MzQ1NGRlZjIxNyBsZWdhY3ktdHJ1bmsKKzY2NDUxIDNiMDQ4ZTMxZGQ5ZTc3YWJkZjZiZDU5ODkyZGQxMTg3ZDI1YzY3NTEgcHkzaworNjY0NTIgNTlkYjRiM2EwNmIwMWI1MmY3OGM0ZTc0OWJmODIzN2FjNDdkZWQ0ZCBsZWdhY3ktdHJ1bmsKKzY2NDUzIDU2ZDVjMDNiOTJiNmNlZjE1OWVhZjdmZTNlNDA4MmVhNDkyYWE2OGYgbGVnYWN5LXRydW5rCis2NjQ1NCA0N2RiNjJiZjZhYTcwZDhlOGY1YWJmOWUwZGE1YWE5ZDZlOTk5N2JjIHB5M2sKKzY2NDU2IDYyNzAwYmI3ZjdiNTkwOWVhNzhjYjA3MjlmNTk2NjRhMjkyNTUyMjEgcHkzaworNjY0NTcgMmM1YmI0NjM0ZDJkOWVjNmE3Nzc2NTI2ZTFkNWY1OWE0MGI1MGNjMiBsZWdhY3ktdHJ1bmsKKzY2NDU4IGY5OTgwMDE2NmMyYjczZTMzYjcyMmJmZDM1YWZkNzg1ZTAwMzM1MWQgbGVnYWN5LXRydW5rCis2NjQ1OSBjZGRmNWQ2NDc2Y2YxMjdiODk2ZjQyMzY1NDY2OGFiZmE5M2UwNzgxIGxlZ2FjeS10cnVuaworNjY0NjAgZTk2OTIzMjA1NGEyYzM4YjcyNWZmY2JhYjJiNDhmYzA0MmZjZWU5MyBsZWdhY3ktdHJ1bmsKKzY2NDYxIDY5MjliNzQyNzJjNDBlZjUzMjNjYjU2ODEzMGUyYmZlYzIzY2FhMGUgbGVnYWN5LXRydW5rCis2NjQ2MiA2MmU1ZjczZDA1YjQ5ZjQyN2Q2YmJmNWE4NTE4YmZhNDU2OTMyZDA0IHB5M2sKKzY2NDYzIDY0YmU5ZjkwODY0ZTE0YjMzNWI2NGZkMWUwZDVjNTMzOTUxNDQzOTEgbGVnYWN5LXRydW5rCis2NjQ2NCAyNjA1NDY1YmJhM2MxOGExYWIzMGU2YmJhNmFmZWZjM2UzMTQ3MDc2IHB5M2sKKzY2NDY1IGEzZjBkNjY3ZTJjZTU1N2I3ODNlMDc4MDgxN2RiOTc2ZmEwNWIxMzEgbGVnYWN5LXRydW5rCis2NjQ2NiAzYTgyZTUwMjQ3NDMyODAwNWE0ZGI2NjRlY2E5OGVhMWYxMWFkNWE2IGxlZ2FjeS10cnVuaworNjY0NjcgYWFlYmRjNGM0NjkwM2IzMGYyNTg1Nzg2ZjM3OWM2ODA2ZDMwZmM0NSBsZWdhY3ktdHJ1bmsKKzY2NDY4IDAyYTZjYzVkN2EyMjc2ZTE5MjM5MDA1MjgyYzRiZDg2OWUxOTZkNWIgbGVnYWN5LXRydW5rCis2NjQ2OSBiZGI2NjBkY2E3NGQ2YWY0YzI2ZjYyNzk3ZjM0MjVkMmQ2MDIyMTNhIHB5M2sKKzY2NDcyIGY5NzRlMGZhNTRjYWE3N2QzNjEyOWU1YTRmYmE3YmE5MmUxZDhkMzggcHkzaworNjY0NzMgMTE2N2FlNjQ1ZThjMDI3NTQzYWExOWI0ZGQ4NjY5NWY1ZTZiNjRiMCBsZWdhY3ktdHJ1bmsKKzY2NDc0IDIwZGYwNmUxYjI2NjlmNTkyOGVkNmY1YjcwZTI4Zjg4YTE1NTA4OTYgcHkzaworNjY0NzUgNjcwNDNmYjhhZWE1YzBlODEwNTA1ZmFjZjIzM2FiNGY2YzllODU0OCBweTNrCis2NjQ3NiAzMzAyMDQ1YmFlOTc4OTYxMWJlMDQ1YTA3NzdiZjY4MTQ1N2Q2OWI4IHB5M2sKKzY2NDgwIGJiMmEwYTM3ZmFhOTdiZGJlY2JkZWY5MjEyMmNkMTRjNTAyOWExNmIgcHkzaworNjY0ODMgZDE3Y2M0ZDE3NjZjYTEzYWY1NGUyYTY4NDNjNDhmMGFhNWY0MjcwZCBsZWdhY3ktdHJ1bmsKKzY2NDg0IDQ0NTNlMmM2YWE3ZmQyZTU0YTk2NmQ4Yjg1ODc4MjFjMTlkMjNiNTMgbGVnYWN5LXRydW5rCis2NjQ4NSA5N2YyOGRmYTE1NDliM2MxZDA5NmEzZTAwNjAzZTJmOGJjNjcyZWJkIGxlZ2FjeS10cnVuaworNjY0ODcgYTFjMTlmMjYzZjc5NTVmZjFmN2EwZGUyMThkZWQ1NjUyYjQ0ZTkyZCBsZWdhY3ktdHJ1bmsKKzY2NDg4IDVkMmYxNjExOTQ1OTRiMWFhODU3MzEwM2U0MTUzNzY2ZmJlOThiNTcgbGVnYWN5LXRydW5rCis2NjQ4OSAyZjliMDZmOTVjOWE2YTdkMWZlMDk1Njk1NzQwMzBkOTZkYTE3MTA1IGxlZ2FjeS10cnVuaworNjY0OTAgN2IxNjg2MDJmNDRkYjJhZmM0YmRjYjhkMTJiZDZlZTBlZGVmY2JiZCBsZWdhY3ktdHJ1bmsKKzY2NDkxIGUyNDI5ZTIzMjU3NmE2NjZmZDJmNTQzZDk1NmZkZDI5OTljMDk2NzMgbGVnYWN5LXRydW5rCis2NjQ5MyAzMGVmMjJhODAyNjdjM2Q2OTgyNTMwYWI2ZmU4ODIxY2MxMjA0YzViIHB5M2sKKzY2NDk0IGFmNGM0Y2YzZTAxZTA5MzJlNjQ0MGEyOTVmY2QwZTVhOWM3YTNiY2MgcHkzaworNjY0OTYgMjYwNmQ5YTAwYzdiNjIyMDBmNDQwNjVhZWQ0MDljYzBhMmI3NmYzZiBsZWdhY3ktdHJ1bmsKKzY2NDk3IDU4ODE4ODQ2MzYzYmI1ZTBjODFhZDYyZDZhZjQ2OWU1NWRhYzVhMzEgcmVsZWFzZTI1LW1haW50Cis2NjQ5OCBmZTM1NWJkMDVjNDc0MzgyNTQ2Y2Y4NDdhYjU3ODY4ZWM1ZTljN2JhIGxlZ2FjeS10cnVuaworNjY0OTkgNTA3ZWRlOWM3ZjdmNDc1ZGZhZmJkNGE1MmMyMmQ3NjdkMTBhMmJjMCBweTNrCis2NjUwMCA1ZDYxYzY1NDg0OTc5NTAxN2RjYTRjMDk2NWNmOTA4N2E2ODk0YzEwIHB5M2sKKzY2NTAxIDQyOGIwNTNiYjA5ODM5MzkzMzAxOGI3MjE1OTQxM2QwZmIwYWUzOGMgcHkzaworNjY1MDIgYzY3MDNmNDk4OWIzNzMwZjQzOTVmYTgwYjcyNTEwMDQ3ZTBhYWMzOCBsZWdhY3ktdHJ1bmsKKzY2NTAzIDBhZDhjZWE2MGJmYTBiNjA0MzgyNWE2YmUzMzk3NmY0Zjg1NGNkYWEgcHkzaworNjY1MDQgNTI1NzkyMDk3YzYzMDhhNzhhNzZiN2I1ZjU2YmJkOGEyNGMyNmFjZiBsZWdhY3ktdHJ1bmsKKzY2NTA1IDU1NDliNWRmOGJjYmRlYTcyMWVkMWU5Y2U3MTk1NGMyNjAzZjY2Y2MgbGVnYWN5LXRydW5rCis2NjUwNiAwZWVjMzQ3NTUwNDE0ZWVmYTNiNWY1MmEwZTFiNTM3ZGY5ZmMzNzQ5IGxlZ2FjeS10cnVuaworNjY1MDMgNDliOWI5OTY1ZjMxMmJhMTVmYTdhOTJiZDRkZjVjMmM3YzM4Mzg3ZCBweTNrCis2NjUwOCA3NjNlNGI4NDg4MWNjMWI5MjA3OGJiODAyMmI4MmVhMWM2NTBkNzMxIGxlZ2FjeS10cnVuaworNjY1MDkgNjcwMGZkODEyNWJhNWUwZDFjOTY4MTQxYjUxMmJhNWQ0ZWJiYjU1MCBweTNrCis2NjUxMCA5ZmU0NjdmZjBjMDg2MzRiM2NkZjIxYzlhOTY2MjRjYTk0NzZlYTI1IGxlZ2FjeS10cnVuaworNjY1MTIgNWE3MWE2MDY4ZTMwMzU4NDYyN2I3NjVjYWZlMmU0MmJhY2JmYmNkNyBsZWdhY3ktdHJ1bmsKKzY2NTEzIGM0NWE2OTY1YmM0Njc3N2U0MDE3Yjk3NTIyY2RlN2NkYjE0ZTliM2MgbGVnYWN5LXRydW5rCis2NjUxNCA2MjYwMzI1OTc3MTIwMzEwMTI1MGZlYWJlM2FiYjlmNWJhODEzY2ZhIGxlZ2FjeS10cnVuaworNjY1MTUgMTVhYzQ5NjAyYTA2NDhiMWI1NmY5MTIyMWM1ZjI2ZGVjN2FjZjcyYSBweTNrCis2NjUxNiA1NzhhZDQ5MWQ0YTQ4NmJkMDAxN2Q1ODZkMWYwNWMzODY1MDk5MjJlIGxlZ2FjeS10cnVuaworNjY1MTcgYzEzNzI5MzJhZTg3Y2M5NTU1NzBlMjQ5NzA4MmNmNjZjMTFhMDZiNiBweTNrCis2NjUxOCBmM2U1YTg1MzQyMDYyOTM2MzA5OWU3MzZiNWNiMjEwNTM0Yzc1N2NjIHB5M2sKKzY2NTIwIGI2YTgwMzE4ODQ1NGQ3NjMyZWMyM2EyNGI3ZjcwM2ViYTg0MmFhNWIgcHkzaworNjY1MjEgY2M5ZDlkOTY2YjFhNGZmNTAyZWY0ZjY4YWUwZjgwZGZlZTUwMTM1MiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY1MjIgZDZiOGQ0NmEzNDMxYmFjNGJhNDYwYzM0YjhkZmQ3NmE2ZmIxOTY5NCBweTNrCis2NjUyMyA1MGIxZTU1NzU2YTUwN2M1MWFkZTBlOGFiYjM2YWY3ODdkZTY3MGVkIGxlZ2FjeS10cnVuaworNjY1MjQgNGY5YTk3MTQwZjBlZmI5YWVjOGEzNDNmOTdiNWViNDQ3NmE1MDA4NiBsZWdhY3ktdHJ1bmsKKzY2NTI1IDYxYzY4ZTJjNTcxYjA3ZGNlNWE2NjA0MzY1YjczZDNmZjA4YjNlODcgbGVnYWN5LXRydW5rCis2NjUyNiA4NWI0ODBlZjI2MzVjNjdhOTI0MjQwOTcyMzY1ZTExNTIwYWQ2YTI4IGxlZ2FjeS10cnVuaworNjY1MjcgOGIxN2Y5MmJiYzRkYjY2NDM1NjI0Y2QwZDVjZWQ1MWM3Zjc1YTRmNiBweTNrCis2NjUyOCA2YjlmMmNlNWZlOTIyZTg2YzAyMDY0NmE1Njg0ZDMxOGZmMWJlZDg1IHB5M2sKKzY2NTI5IDcwMWRiNWU5NjdiNWRiMTJmMjA4MzM0NjJiMzJkZWRmMzMzYWQ2NmQgbGVnYWN5LXRydW5rCis2NjUzMCBiODQxNTUyYTlhNzNiOTQxZTQxYTAwZjMxMmE0MGEyYzM5MDdmOGZhIGxlZ2FjeS10cnVuaworNjY1MzEgZjcxZjY0YWU2NTE5NjZlNTA0ZTJiZjVkMDM2ODdhNzhiZjIzZjVhNiBweTNrCis2NjUzMiBlNTJhMzU5NWRmZGJjNTA2ZTdiZGEzNzQ4ZDNlNzAyMmFmMDJhMGU5IGxlZ2FjeS10cnVuaworNjY1MzMgMTc3NzZkZjZmZGEyY2MzMDQxNjIzM2YzZDNmZTM5M2JhN2IzMTI5NCBweTNrCis2NjUzNCBjMmUyZTkyNjJiOTliMjA4Y2ZiNmU5YzliNTQyN2ExZjYxNDdlZjU5IHB5M2sKKzY2NTM1IDkyM2ZiNDU4YmQwYzY5ZWY5YjExNzg2OWFkNmU0ZWI1MmUwNWEwYTAgbGVnYWN5LXRydW5rCis2NjUzOCAzODZhMDNlYzFmZjAxNGRmN2IzZWRjY2NmZWQzNGY0OGZmM2IzODgyIGxlZ2FjeS10cnVuaworNjY1MzkgNTVjYjNlMTFiZGY3NGU2NjI3ZmM4ZWNiODliOTc2YTk4Mjc2Y2U1MSBsZWdhY3ktdHJ1bmsKKzY2NTQwIGMyMDA1YzFjZjZjZGU4YTU1ZjU2YTE0YmU5ZDI1MmY1NGJmYWNkOGYgcHkzaworNjY1NDEgNDk5MmZkNDlhOTg1ZDY3OGNjNGUwYjgxYTk5MDUzZWVmYzY4OTg0NCBweTNrCis2NjU0MiAyNWY4MDkxMjNkZjYwNjNmNjY1YzU2MWJiYzY2NTRjNTI1MGJhZTlmIGxlZ2FjeS10cnVuaworNjY1NDMgZDFhYjgzYWQ1ZTJiOTM0ZjM0MDQ1NDQ3N2VkODc1ZTZjMjZlMTlkMiBweTNrCis2NjU0NCA2YjY3OWNhMjQzNjlmYTFkMjM0ZDIxYTEyYzc2MTk5NzJjMTJjYjNhIGxlZ2FjeS10cnVuaworNjY1NDUgZjBjMjVlNmJiYWQ1ODBiN2NhZjYwNWU5MzljNzllMDg4YjVhN2VjZiBweTNrCis2NjU0NiAzOWE5NDcxOTU0NTRkYzIwOGJjMTJhOTMyZTgyNGE3ZmU0M2I1Yzc3IGxlZ2FjeS10cnVuaworNjY1NDcgYzE3NzcwMDc0YTRiZTk1NDkxNzlhZWMyNjMwZThjMWI0ZjRkNGUwOSByZWxlYXNlMjUtbWFpbnQKKzY2NTUwIDU0NjEzYmExZGNhZGY1MDM3YTc2MzQ3ZWMwMzQwM2EzODkwZWY3MGIgcHkzaworNjY1NTEgNmFlMjhhNTAzYzlkMTZhN2RiMmRjYjk5ZWU0MzBmN2U0NGZjMjRmYiBweTNrCis2NjU1MiBmM2RhNTZlM2ZjZTRiMTQyZjIzNjFhOGFmYjk3YjFjNGJiYzJkMzBlIGxlZ2FjeS10cnVuaworNjY1NTMgOTIyYjllMDNiMjYwZWM1OTJmMTY0ZjkwMDc2ZmY3Mzg2ZGYxYTQwMSBsZWdhY3ktdHJ1bmsKKzY2NTU0IGZlNjYwZThjNjNiYTY5MGNkNThiOTE1MzcxZDMwMzViYTNkZThlMjIgbGVnYWN5LXRydW5rCis2NjU1NSAwNmNmMzVlNmUzMDhlYWJmYWVhODNjYTEzMDVlNGEyN2M5MzJhNmU1IHB5M2sKKzY2NTU2IGU4NmVkMTEzNTM1Y2VmMGE4Yjg4YjQ4N2JjYjExYTA3NDM2ODBkZWYgcHkzaworNjY1NTcgZWY3NWViM2RjNDhlODIwMmRlOTM5MjM2YzViZTVmMjEyM2ZiODc3YiBsZWdhY3ktdHJ1bmsKKzY2NTU4IDI3YzFiYTcxODZkOGY3MjljNDdmYzZhNmMwNGM4YWFjNzIzNDEyMGUgcHkzaworNjY1NTkgZGU5MGE3MmUzZTIzNDM4YTlhZWUzYjY2ZGYxZmU0Nzg5ZjZiZTYyMyBweTNrCis2NjU2MCAxZDVjM2JjZjM1YWQzOTg2YzA4YmJjZjViZjljZGViMTRlZTFkNDZmIHB5M2sKKzY2NTYxIDAxOGJjZDY0YzMzZTRmNjhjNzAyYzRiNTc5Y2Q3ZWVmZmVlOTdhNWEgbGVnYWN5LXRydW5rCis2NjU2MiAwZGU1YTM4OGEyNjE4MDRlNzdmYTA2N2Q1OGZhM2FkOTMxOGYyNzlmIHB5M2sKKzY2NTYzIDY0NjE2ZTVkODBiNGIyNjRiOWE5Y2Y5MDgzNWQyOGYxOGIyOTk1ZGEgcHkzaworNjY1NjQgZjZkZjU2N2NjZDYyODlhNGQ2MDVlYzkyZGZhMTNjODRlMjdmZjdkZCBsZWdhY3ktdHJ1bmsKKzY2NTY1IGJlODlkMmEzNGIyZjg5YTMxN2JhZmNlMDRmNmI0ODQ1MzgwNzZiMWYgcHkzaworNjY1NjYgYTVmMjZiM2EyNmZkOWVlOGU1NGNhYzE1M2IzNzI4YTUwNTEzZDBhYiBsZWdhY3ktdHJ1bmsKKzY2NTY3IGVkZjhhNmM2OTAyOGI3NzU4OTVhMWFlYThlN2E3N2ZhM2Q4ODlhNjcgcHkzaworNjY1NjggZjNlYjAwMDQ4N2I5MzYyYzJmY2Y1NDNlMzk5OTY3ZDQ3YTg1YzQ4MyBsZWdhY3ktdHJ1bmsKKzY2NTY5IGY4NDMwYjY4NzZmYjM2Y2ZhOTBjYWU2YmFiYzQyNDc2N2VmZTJlMmQgbGVnYWN5LXRydW5rCis2NjU3MCBiYmUyZTM1ODUyY2Q0ZDhhMDJjN2NhNzIyZmY1YmQ5Mzg1MjdlZWUzIHB5M2sKKzY2NTc3IGIzYzI5ZGE5MzRmNWVkZjg4ZjZkZTBhZGZkMzkwZjY2MzczYTEwYjUgcHkzaworNjY1ODAgMjVkYTA3ZmUzNjMwYzAxYjg5OTE4ZjEwYzczNzkzZTg5MGE3OTg0MCBsZWdhY3ktdHJ1bmsKKzY2NjEwIGRiOTk5ZWIyYmJkYzc1OWQyYjQ5NzI3Y2I3NTFiMDMyNDM4NTE5OWYgbGVnYWN5LXRydW5rCis2NjYxMSA2MDZhYjI1ZGRlZjFiMGJlMmZkZWUzMWQ1OGM2OTBlM2VjMjk4ZmRhIGxlZ2FjeS10cnVuaworNjY2MTIgMDFmYzA4M2UxZGRkMzUxMDFjMmUyMzYwNTYzNDZkYjZlYTI3ZjVlNSByZWxlYXNlMjUtbWFpbnQKKzY2NjEzIGE4NzBjM2M2YTlhZDI0MTM1ODkyYzc3ZTlmYTU4MDczZWY2Yzc1OTQgcHkzaworNjY2MTQgMTIwYjRiY2YwOWZmNzIwZTYzMmY0ZWRlNWQ3OTFlOTRmOWVlNThiYyBsZWdhY3ktdHJ1bmsKKzY2NjE1IGEwMDYyNmYyZDcwNTc5MjM1YWQwMTA0MmYxMzgxMDkxNDkyYjEzOGEgcHkzaworNjY2MTYgOWQxYzUzMTE2OGNhZDdhMWU4OTVmNjcwYjg4MmE5MjFjOGM2MjY4NCBsZWdhY3ktdHJ1bmsKKzY2NjE3IDA5MWE2YzUyMjdhOTQ3NWJhM2FlNmEzZjIxMTMzZDQ4ZjA2YjNmNTkgcHkzaworNjY2MTggYTkxZTc4YWI0ZDdkMjAzMTM2Zjg2ZThmMGM5YWVjMzNmOGUwMGQwYiBsZWdhY3ktdHJ1bmsKKzY2NjE5IDNmZWJjYmZkMzYwMWM0MjNhMzFiMjcwNzQ1YWZlMmFlMmRjYjYxOTkgcmVsZWFzZTI1LW1haW50Cis2NjYyMCA1ZTViMTViNjkyZTE0MTdmNmE5OGNmYjI5MDBjMWVmODUwZjYxMzk0IGxlZ2FjeS10cnVuaworNjY2MjEgYWNjNDRiN2ZhZGUwOWE2ZmU3MmMwOTQxNGY1ODFlNDQxMDdhMDhiZCBweTNrCis2NjYyMiBkYmFlYzI0OWQ1NmYxMmI1Zjg5NjlhNGUzNGJjYjVmODNkYjFmZDUzIHB5M2sKKzY2NjIzIDc4YTIxYjI3OGUxYjliNzRhODJkZWY0MWJmNWE1M2M0NDA2ZGMyZTAgcHkzaworNjY2MjQgZjMyM2ZhNGU0OGQ3OWEyODcxNDEyNmZmNzQzOGQyODc4ODAyZTkwMCBsZWdhY3ktdHJ1bmsKKzY2NjI1IGI1NTBkZTQyODUxYTg1YzEwNjZjMGRjN2Y3ZmZhNDE1YTI0MjM0NWUgbGVnYWN5LXRydW5rCis2NjYyNiBiMjMyZTJlOWU3OTM3ZTM0NTczMjI5MzZmOTE5ZTFkMGZhNjNkYzYyIHJlbGVhc2UyNS1tYWludAorNjY2MjcgMDZlYmYxMmJmYTYyY2E1YjllY2EyZTdhZDcwZDY1ODI4YTljM2UyZCByZWxlYXNlMjUtbWFpbnQKKzY2NjI4IDRlZWRlNWU0OGFlNjg1YWM3YmQ5NTkxMmQyN2I2N2E0YTEzMGE1Y2YgbGVnYWN5LXRydW5rCis2NjYyOSBlMTNjMDNlMGNlMGJiNGM5MjNkMjZmZDczZjU2NjcyNTAwZmQyMWI3IGxlZ2FjeS10cnVuaworNjY2MzAgYmJhZGI5NjBmZDVjMWE5NzY4ZjA5ZDliYjcxZTcwMjdiMTZjMjU1MCBweTNrCis2NjYzMSAzMDRiZWE4NzMxZDIxYTRlMDhlYmRjY2Y2MDVhZWZmY2JiNTIzMTFjIGxlZ2FjeS10cnVuaworNjY2MzIgZTBjMDZjYWVmYmZmMzNmYTQ3MDZjY2U1NWUzODBmMTUwMmFmNmMwYSByZWxlYXNlMjUtbWFpbnQKKzY2NjMzIDY0MDNmMWVkZWNjMTlkMjRjNGViYWViNjE3NWM0OWUxMjFhOTJkM2UgcHkzaworNjY2MzQgZWIzNWZjYmE2NThlZTI1YjMxMGJhNGFkOTI0NDNlYzY2OTBiMzdiOSBsZWdhY3ktdHJ1bmsKKzY2NjQzIDA3NTA0MmM3NzI0Yzc0YTQ5YjZiM2UwNGZkMTQ0NWFjODc0ZGRmYzMgbGVnYWN5LXRydW5rCis2NjY0NSBkZTc1ZmI0ZTgwMGNlZjkzYjkyMzQ1MzM2ZTAwNjhhZWY1MWQwYzFjIGxlZ2FjeS10cnVuaworNjY2NTMgY2RjN2Y2MzY3NzhiNjkyM2QwZmY3MWU5NWYzMjYwMDZlZmUxZDZiNSBsZWdhY3ktdHJ1bmsKKzY2NjU0IDhhMWRiZTVjMmI3NDVjMTg1NWJhNDAxNjM4ZDhkYmZiNWYyNGY5MTQgbGVnYWN5LXRydW5rCis2NjY1NSA1Mjg0NzY4YzI2NGM1OWQ1NTAzNGFjNTExYTZkMGJjODY3M2Q3ZjdhIHB5M2sKKzY2NjU2IGQ3MGJjZjNiNjI4ZDdhMmVkNjE5YmY5M2Y0ZWI5MzkwNWMwYmIwMWUgcHkzaworNjY2NTcgMDY5OWE3MTJhM2RiZGQ4YzUyZjE4ZGFkMzA2OTEyNjEzMjEyYTAwZiBsZWdhY3ktdHJ1bmsKKzY2NjU4IDc2NTFiOTQxM2M4NTRjYjYwZDBjMTAzZTMxZDczNGE5MTIxYTFiYzIgcHkzaworNjY2NTkgN2EzZjc1MmFkZjFjZjg5NDUyYjg4MzljNjQzMWRkOTI1MTdiMGFiYyBweTNrCis2NjY2MCA1MzBjODE0MThjMjgzOGNjODIyYTk5MGEyYTNlM2VhYmMzM2Y5YzczIGxlZ2FjeS10cnVuaworNjY2NjEgMmNhNDE1OWJiZTY1NDA2NjE3M2E5MjUwMWY5ZTI1ZDQ2YzkzYjc0MCBsZWdhY3ktdHJ1bmsKKzY2NjYyIGNlMmZjYTQ4YWNlNDMyNjY4MTg1NDYzMTNjOWExZDUzZmE4NmYzNDEgbGVnYWN5LXRydW5rCis2NjY2MyA3NTVmMzRhYjQzOGIxOTE2N2MzNzEwZDViMjQ4YTZlMzRjMjU1OWMyIGxlZ2FjeS10cnVuaworNjY2NjQgMjMxZjNhMjVjY2Y1YjJkZTg4ZWRhOTBmMjRlNjA5ZGI5MDQzMDJkYiBsZWdhY3ktdHJ1bmsKKzY2NjY1IGRhMDczNDg0ZjVhYzMwNmM1OGJjYzgxOTVkNGQwNjdmZjRiNDdlM2EgbGVnYWN5LXRydW5rCis2NjY2NiA0ODQ0Y2FjMDg2NTI1ZDJhOTg1Zjk2OTAyYTdiODJhNmFlOThmN2MxIHB5M2sKKzY2NjY3IDZjYzVhY2U5ZjUxM2UwMDgwMGUxMDFhNzgyNTZlN2RlOTI1YjAxZWMgbGVnYWN5LXRydW5rCis2NjY2OCBlYzQyZjc5OGY1OTczNjQ0MGEwMzFmZTYyZjJkMzM3MmQ1ODJiZTY3IHB5M2sKKzY2NjY5IDU2YTNmYTQ0OWM2YzZjMTM1NjlmOGM0YWQzYjk5ZDMwNjdkMDE3YTcgcHkzaworNjY2NzAgNTNhY2UzOTdiOWM1YmI1YmY1MjNjMjhkOTJiMzEwZWFkNzg2ZDkzMCBsZWdhY3ktdHJ1bmsKKzY2NjcxIGRiYzZlZGJhNzBhN2I3NjRhYTc0NjljMjIyMzZjODU2ZGFkZGIxZWQgZml4LXRlc3QtZnRwbGliCis2NjY3MiBjYzY5YjkzMWE2MDgyZDlkMjQyNzQ5MjliZWUyNDE5MDAwMWE5NzM2IGZpeC10ZXN0LWZ0cGxpYgorNjY2NzMgNWE5YTgzY2FlOGYxYjJhYjlmZjczNTI0YzU3NjdjZWExYzZhOTQ2ZSBsZWdhY3ktdHJ1bmsKKzY2Njc1IGM1ZjVkNmEzMTNlOTk3M2RkNGYwOTRjZmNlOTE0NzA5MDNkY2U3NzQgcHkzaworNjY2NzYgNjRiYTUyNDBhZjMxYTkyYmQ4MGE5NDFmMDMyY2Y3OTYwYmQ0ZWNiZCBsZWdhY3ktdHJ1bmsKKzY2Njc3IDc0ZTdmOTdkYWQ3ZGVkZDEwNWExN2EyZmM4YWIwZDgwM2NhMGEzNzAgbGVnYWN5LXRydW5rCis2NjY3OCBhOTUwMzBmOTM5ZWQwOGRlYjkzNDM3ZDA2YjI2MmRhODVlZTEzNzBkIHJlbGVhc2UyNS1tYWludAorNjY2NzkgMDI0MTdiNTZlNGIyMWE5OGNkOWQ4NmZhZDZjMTkzODBjOTVkZDRlNSBweTNrCis2NjY4MCBkNTg2MTg1YTdhNTE2N2FlZTJiZGU4ZGI5OTc1Yzg5N2M5MDJmNDVhIHB5M2sKKzY2NjgxIGNhZDFkMmE4YTlkM2I5YjBlMDY2ZDg0OGE4NmNhMzYxY2E5MjQ0ZTggbGVnYWN5LXRydW5rCis2NjY4MiA0MDUzNmRkYzI2YTE5YjhmZWUyNTBmNDM3MzA1Y2YyNTY2MzgzN2E0IGxlZ2FjeS10cnVuaworNjY2ODMgNWIzNTI5NDg1NDIxOGE4Y2FmMTYxNmIxZjdlYmQyZmE2MWQ4YmY0MiBsZWdhY3ktdHJ1bmsKKzY2Njg0IDY5ZTE4NGI5OTBkYzc3YjJlNThjMjJmZmYzYWU4YmYzZjA0N2Q3N2UgcHkzaworNjY2ODUgZWRiNWVlY2YzYmI4YmRlYjY4NTg5NmY3Mjk4NzkyYzg1OGI1MDg3MSByZWxlYXNlMjUtbWFpbnQKKzY2Njg2IGQ4OGYxZjJmMDIxMzVmNmU0NTdmNDdiMzg5MDYxOTc5MzkzMjBiMzMgbGVnYWN5LXRydW5rCis2NjY4NyBhYjM0YTY0N2UyMmZjZWI1MDQ1MTRmZmJiZTFmMDVlYTNlOTJiOGY4IHB5M2sKKzY2Njg4IGI0OTY0ZGY2NDM4NDBlNDNiMWJhZDM2YjQzYjZhMTEwMDhhOGE1YjggbGVnYWN5LXRydW5rCis2NjY4OSBmNGFlYjExM2M5ZWZhZGNlNjk1YjZkZDdkMTg2ODNjNjJmYTRmYTAzIGxlZ2FjeS10cnVuaworNjY2OTAgNDE1NjU1NWYzOTExODFiYzBkOGZjYWNlNzM1M2U3MDYyNzNmYWM4NiByZWxlYXNlMjUtbWFpbnQKKzY2NjkxIDM3NjMyN2NiNjgyMTNjNGQxNDAyMTQxZDUyZTAwNTZlNGEwMGRkMGIgcHkzaworNjY2OTIgN2M1NjYyNDU0OGZkNDgyZjViYWZmZGNkMDdlNmE1MTlmNTRhYzZiZSBweTNrCis2NjY5MyA2YTczMTM0Zjk2MDMyZWYxMTYyZTVmZjI3NTliMDJlY2VjOGQ4NjU2IGxlZ2FjeS10cnVuaworNjY2OTQgYjI4MDFhY2E5ZDZiNWZiZTFhMWEwZThlODRkMzQzMjFiYjJiYzEzMyBweTNrCis2NjY5NSA1OThkMTk5MzYxODZhMzgwNDQ4ZWUzOTFmZTQwZTU4NWEzZmU1ODZiIHB5M2sKKzY2Njk2IGFmNmZlOWFkYjM5YzNmM2FkNTM4Yjk2MzI4Njc0OWE1Nzk3OGI4YTkgbGVnYWN5LXRydW5rCis2NjY5NyA2Y2VhY2QwMTVkNjc4YTUzYzMxZWFjYWU5YzY4ZTQzZTNjOWQ5MTUxIGxlZ2FjeS10cnVuaworNjY2OTggYTRlZDU0ZDU3NjRjOTA2MzFjMGI3YjU1MDM1ZjFjMGI0YTFmMjYzNyBsZWdhY3ktdHJ1bmsKKzY2Njk5IDY3NjU5NDZlMWFjNDlmZmIzNTRiYWJhODVmZmMzODIwYmYzMDkxMDEgbGVnYWN5LXRydW5rCis2NjcwMCA3ZjFmOWUxOGNkZmEzMjVhZTk1NjUyNTQ3MGUyMjA1NzU5NTZkMDc3IGxlZ2FjeS10cnVuaworNjY3MDEgODYwNDVlMWVlNTk1MGM0YTAwMDYzMWZkNmFlNjRkNmFhMjc0ZmIxZCByZWxlYXNlMjUtbWFpbnQKKzY2NzAyIDFmNGVhMDIyOWVjNjY4Y2MwNTkwYmI5NWU2MjE5NjJmYTA5YTI5MjEgcHkzaworNjY3MDMgZWVkNGQ1MzMzMzJmMGZkOTAxYWIzMGQyOTJkNWZhZjZhYWU4YjkzNiBsZWdhY3ktdHJ1bmsKKzY2NzA2IGQzMTgyMzRhMDBkNzU4NmI5NWZkZDM2OTM0NGQxZjZhMjAyNzE1YTQgdGxlZS1hc3Qtb3B0aW1pemUKKzY2NzA4IGVhNTMxNjNiMDZkZTMyYTZmYmIzOTBjYmJiMTQ5MDEzMDExYWIxN2MgbGVnYWN5LXRydW5rCis2NjcxMCBiNWZiOWIwMDJlYzMxNzNjYTlhMjNkNTYwZjI0NmJhYzgwOTRhYThmIGxlZ2FjeS10cnVuaworNjY3MTEgYWRhNmQ3ZjcxYjVkZjA3NmQ5ZTBiMzZlZjdmMGVkMjNmNjc4ODY2ZCBweTNrCis2NjcxNCA1OGE5ODg0ZDJiYzNkMzNmOWRmODU1Mjg1NzcwOWRmZTk5ZDE4Mzg0IGxlZ2FjeS10cnVuaworNjY3MTUgOTVmZmY1YTZhMjc2NTIwYjJlN2UwZjc1ZmUzMDNmNDkzNzY1NjdhNSBsZWdhY3ktdHJ1bmsKKzY2NzE2IGJjNGNhODBiYjVmZDRjOTFhOGI3ZTcwNzNlN2M0ZDFjYzFiNDc3MGQgbGVnYWN5LXRydW5rCis2NjcxNyA1NGNkMWNjNzBhNDc4ZDg1M2VmOGMzNjRhMmUwMjdiNmZhNjAyNDgyIHJlbGVhc2UyNi1tYWludAorNjY3MTggNzI5Mjg5M2ZjMmM1ZjhiODUwODI3Y2YyNDgyMzI5NjAxOWRiZmU1ZiByZWxlYXNlMjYtbWFpbnQKKzY2NzIxIDc0OGVjOWIyYWVmMTAyN2JkOTMzZGU2Zjc4OWJhYjhiY2E4ODBlNjEgbGVnYWN5LXRydW5rCis2NjcyMiA5ZDJmMjgxODI4M2Q1ZTg5YzQxMmRkNmY5MjlkNTZkYzBkZWEwNTE1IGxlZ2FjeS10cnVuaworNjY3MjMgYTVmMzBkMDY0OTNjYmQ0Yzk1ZDlhOGQ2ZTQ2ZDgyMTUzNmQ2NmZhZSBweTNrCis2NjcyNCA4OGU2MTgzY2RiMzhjNmJjYWZjYzY0ODFlNzUwN2I2ODkzZDkwNWRkIHJlbGVhc2UyNi1tYWludAorNjY3MjUgMDMzYmI1Y2FjZDBhMzQxN2JlNmY0ZDQ1YzIyNzYwYmQxZjMxNTIwNCBlbXB0eQorNjY3MjggNmRkODdkZTg1MDNkNTY1MjZjY2Y4ZTE1ZDdiZjMxOWQ2MjE2MmYyZiBlbXB0eQorNjY3MzYgNTZkMTc4ODc0ODIxMzNkOWI3ZTVkZDI4N2FiMjJmZDFjZWFhNGZiOCByZWxlYXNlMjYtbWFpbnQKKzY2NzM3IGVlYjVmYTNlZjg4OWEyMjE5MGM2NTU4YzJhZGNlOGZjMzQwMDg5ZDYgcHkzaworNjY3MzkgOWM5NzFkNTJhM2MzNWZhYjJhYTY3ZTMzOTdhNTNlNjcxNDYwZWJkNCBsZWdhY3ktdHJ1bmsKKzY2NzQwIDg3M2QxZTM2OTc5ZGFlNjdkOTRlNDU1YjU5ZTI4MjU0ZTI4MTdiNTIgcmVsZWFzZTI2LW1haW50Cis2Njc0MSBmOWYwMTQ4NGU0OGIwMmMxZDFjODg2MWM5NGZhYzg4YmEyYzdjMDRlIHB5M2sKKzY2NzQyIDA2OGQ5YjYxNGU3YmZmYWI2OGRkMjgxMTJiYjBmZjEzOGU4ZjQyMDMgcmVsZWFzZTI2LW1haW50Cis2Njc0MyA4YTdjOTMwYWJhYjZhMmMyNmVhYjY5ODkxZjQ5ZDhiZTQ5YWZlNWRlIHB5M2sKKzY2NzQ0IGI5YWZhN2M5Y2MzNWUxNWZiNjhhOWQ0MDFhNmMxMmYzZjYxMDFkMWMgbGVnYWN5LXRydW5rCis2Njc0NSA3NDI2ZDhkN2NlMWI0YTVkYWRmNTlkZjdhNjZjY2Y4ZWQ1NDc5ZmJhIGxlZ2FjeS10cnVuaworNjY3NDYgMjgxYjIxY2EwM2Y2MzYzMDRmOTdlOTM4ZjZiZDYzODE3MDNkYjc4YiBweTNrCis2Njc0NyAwMTM4OTUyNmJhMjU1NzllMzg1NTZhMmMyODAxMDRjMWVlMjdlMDY1IHJlbGVhc2UyNi1tYWludAorNjY3NDggMjdkN2VmYTNlMWFjMDA1NTE5MmE4YmQ3NDEwZDQyYWQzMzY4OWNmNiBsZWdhY3ktdHJ1bmsKKzY2NzQ5IDY0MmYyMGIyMjU3Nzk1NjI4ZTYzOGE3MjRiYjBmMTFmYzUxMTk3NDAgcmVsZWFzZTI2LW1haW50Cis2Njc1MSA4Njg5M2EzOTdkZDA1MWQ0YjE1MjM1YTk4ZWNlMmQ4YjI4YTM0YzE2IHB5M2sKKzY2NzUyIGY4MTJiYzJiNmE3YmZkZjg3MmJlMTc4NTQyZTRiMjE4ZDAzMmZjOWIgbGVnYWN5LXRydW5rCis2Njc1MyA5ODEzMDZmNGI0MDUwMTFlMmVjMjA1YWZkYzBlMGM1YjI2MTFlMWZhIHB5M2sKKzY2NzU0IDNhZWFjNGE2YTJjZmNiNWFlNzdiYmE3NTIwYjk4MjljODkxYmUxZjUgcHkzaworNjY3NTUgNDE5ZTcyMWIzY2E5ZTIwMzA1MjY5MjM4NGFlNjliZTljMWQwYTZiMyBweTNrCis2Njc1NiAyMDBkZDFkODIwZmNmNDg1OTNmZTgzYjRiMjY2MDk2OTMwZTBiZGIyIGxlZ2FjeS10cnVuaworNjY3NTcgNTdiMmQ5YTIyNTk0YTE1ZDU3OTAyZWJjYmM5ZjgxZDg4YzkxZDIxMSBweTNrCis2Njc1OCA0Zjc3MjAwNGE4NWRjYWM1MjYzZmU5ZWRiYzU0MjY2N2U1NjkzNjc3IHB5M2sKKzY2NzYxIDU1ZjkxNGFlOTBlZDY0Y2EwMzA1MmVjNDgyYWNkMGQ0ZTE1ZWZmOWMgcmVsZWFzZTI2LW1haW50Cis2Njc2MiAwMzkxMGI4OTI2NzkxY2Q2NmRjZTQ1ZmYyOTVkMTBlNzBlMjEwYjUzIHJlbGVhc2UyNi1tYWludAorNjY3NjMgMjIyMzY1NjgyYzFiZTIwNjIzM2ExODk3MmNhYzRlZDdhNThmMzhmOSBsZWdhY3ktdHJ1bmsKKzY2NzY0IDEwOTEwMDhmMmNiZDA3ZDRhNjc0ODM0NTQ4MzE3ZjAzMzRlYzNmYjQgbGVnYWN5LXRydW5rCis2Njc2NSAyODNlNTQyNjRjMGQ2N2ZlNGRmYmFkMjYxODA4ZjAwMGI0ZjcyODllIGxlZ2FjeS10cnVuaworNjY3NjYgZmEwNDBkMzBjZmNhYThhNjMyNzY1OThlZWVhYjdlMmZiMmZmMDdmNyBsZWdhY3ktdHJ1bmsKKzY2NzY3IGU4ZTE5NjM5N2Y0NTcxYjRiMWQ2MWYxYWZkNjE2MTJiMTk5OWYyNzAgbGVnYWN5LXRydW5rCis2Njc2OCA3NDk4MWRjODM5ZmQyMmZmZmE2OTA2ZThmODdhOWY5ODMwNjY0ZWJlIGxlZ2FjeS10cnVuaworNjY3NjkgZTgyMjk5MmNmNmNlY2NjZmRmOGEyNGI4MTIyNTAwMjgxOWEyZmM0YyBweTNrCis2Njc3MCA4ZWM4NDk3NjA0Yzc3ZTdmNTU0MWQ5OGY0NmZkMTc5ZjIwOWFkMjBkIHB5M2sKKzY2NzcxIGE4Zjk1OTViOWY1NTM2ZGQ5NzhhMDk5N2Q1NjgyYjdkODllZDUzOGQgbGVnYWN5LXRydW5rCis2Njc3MiAwOGM0OGVhMDUwNDViYjAzZmFkMDY1ZTQ1OTA2MzRiNmFlZjZlMTFlIGxlZ2FjeS10cnVuaworNjY3NzMgYmY4MWNiODg5MmY1MWNlNzM2M2U5ODkzNDI3NDczZDAyZTlhYjU2OCBweTNrCis2Njc3NCBiNWYzOWM4YTQ0MjM5ZTRjYzBmYzM3NDRkN2U1YzA0M2Q4MWJhYTQ5IGxlZ2FjeS10cnVuaworNjY3NzYgZjViOWM2ZjRjNTljNzkwNWQwMDVjMTBmYzE3NzUxNTlkYTliZmYwYyBsZWdhY3ktdHJ1bmsKKzY2Nzc3IGVmNGJiNGQ1ZGZkZTk3YTY1Y2E4YzQ3MmZhZDg4MjY3NjUyY2ZhNTQgcHkzaworNjY3NzggMGIxZGIyNDJkMjMyZTQ3ZjdlOTVlYzUxOTRjNjk5ODY2MTBjMzhhMCBweTNrCis2Njc3OSA4NGNjZjkxYTA2Y2M1NDUyYTVmOGM3Mzc0Y2E1OTFmOTRjNWMyMDI4IHB5M2sKKzY2NzgwIDhhODkyY2YyNWU3YWE2YjM1ZjVhMzI1MjFjYzJiMzBlYzhlN2E5NDEgcHkzaworNjY3ODEgMTZhMTk0ZGE3N2RlOTZlNTc3YzI3ZjcxNDZjZTFlMTBjYmU3NjkzMyBweTNrCis2Njc4MyA4NDQyZjEzNzIwYTRkYzBlNjk2NWJkMTRlNGU3MDc0MGI2NjJjZTIzIGxlZ2FjeS10cnVuaworNjY3ODQgYmUyZjg1YmU1NjZlNTE2MzIzZmI0YzdlMjYxM2QyZTU2NjBkNzI2MyBsZWdhY3ktdHJ1bmsKKzY2Nzg1IGM1NmZiYjdjMTY4OWNhOGIwZDlhNDdmZGFhYjdiY2UyODhhNmZkNjUgbGVnYWN5LXRydW5rCis2Njc4NiA4ODVmZGY1OTcwY2M1NjNhNWMwYWFhNjg0MzlkYjgwYzUyYzExNzJhIGxlZ2FjeS10cnVuaworNjY3ODcgYjIxZGUwNDIxMzk1ZDUwODMyNDcyNmY5MDI5ZGM4N2FlODk1MmIxNSBsZWdhY3ktdHJ1bmsKKzY2Nzg4IDU4MDhhN2FlMDNhY2Q5MDdmMDkwMGJkZDIyMTViNThhY2IwYmVjOGQgcmVsZWFzZTI2LW1haW50Cis2Njc4OSAzNTZlODhkNGFmMzAyM2M3YmViMTZiOTdmNGMyNDZjZDY3MjI1MGY5IHJlbGVhc2UyNi1tYWludAorNjY3OTAgZTU5MWU3NWU4M2EyZjFmMDI3MDJjNmFiMzY5YmFlMjliZjY1M2EzYyBsZWdhY3ktdHJ1bmsKKzY2NzkxIGYyMWEzZDg1ODVjNjU1NDQ5ZmRkY2NhMjEyZDFhZTQ0NDU5MzhiOTUgbGVnYWN5LXRydW5rCis2Njc5MiBhZjdhMzk5ZmMyNzIyMmMyMDY3M2ExNjJiMDcyY2RjNTI3ZjYzMGFlIGxlZ2FjeS10cnVuaworNjY3OTMgOTg0YThiYzZkOTU2ZjM1NTE0NDYwNzkyZDgzNWIyNzNjNDY3Yjk3ZiBsZWdhY3ktdHJ1bmsKKzY2Nzk0IGY3MzFmMDllYTgzOTRjNGU0OGMzNTlhNmQ5OTFiZDk4YjI3OGYyZDEgcHkzaworNjY3OTUgYWMzMTZmMjUyMjljOTIwNGUyNjdjZmEyMmI5NmY4ZGFmZjg3Njc5ZCBweTNrCis2Njc5NyA3M2NlM2ExMTA0NmZiZGMwMDhiY2IzNGVlODFjNDkzODhkZDJjNTcxIGxlZ2FjeS10cnVuaworNjY3OTggZmY1YzNkZDY4ZDA3YzM4OGFhZDJmMDliYWQwYmM2NjUzMmZlMjQ1MyBweTNrCis2Njc5OSAwNTYwNDU1NWI4ZDQwMGRiYmIxNzJmODRmMGYyYzU4NDk0YmZmNzFmIHJlbGVhc2UyNi1tYWludAorNjY4MDAgMmU3OTQ3NTdiZGM4NGFiNzhhZDM2NDY3ZjY5MTBmMjMyNzE5NTViZCByZWxlYXNlMjYtbWFpbnQKKzY2ODAxIGUwOTZjNTJjZDVjYTlhMTNlNTE5NGZjZDFlMmNmZDI1ZDdlMjAwNDEgbGVnYWN5LXRydW5rCis2NjgwMiA4ZjVhOGVhNWJhNzZlYWEzZjVmYjY5MjFmMzc4YzI4YjExYjIwNDk2IHB5M2sKKzY2ODAzIGRhOTU1YzMzOTY1YjQ5MjAzMjUwZGYzYTVkNmJhMzNiYTUzYmJjZjEgbGVnYWN5LXRydW5rCis2NjgwNCAzNTZhMWY2ZWYzNGZkMjg3N2FlZDhjN2FmNzgyYzk4NWU5Y2FkOWM0IGxlZ2FjeS10cnVuaworNjY4MDYgYzViMjdkZjc5ZDdkNmQ5YmY2YjI1NzYyMDEwYmJhNDMwZTZjMmNjYSBweTNrCis2NjgwNyBjMDQ3ODY1MTQ2MGZjYWZkN2E4ZTE5YjNlNDAxZTI2YTU4YWMzN2UyIHB5M2sKKzY2ODA4IDllNDFjNWU3ZTM2MDE5OTY5YjBiMmVkMjNkNGQ1YTY2Yjk0YjkyOWYgcHkzaworNjY4MDkgNTI0YWM3NDRhZTA0Mzk2NjY0MDA5MzA5ZjEwYWZhMjY4YmMwZTQ1NCBsZWdhY3ktdHJ1bmsKKzY2ODEwIGRjOTVlNDZmMWYzZTg5YTliZDYyMGQzNDI3ZTYyODUwMzMyMDkyNTQgbGVnYWN5LXRydW5rCis2NjgxMSBjMmQwMTk2ZWE1OGJkNDZiZWUzOTA4NDcyY2YyOThlNmExOTlkNzUwIHB5M2sKKzY2ODEyIDAyZGQ1ZGI2MjkwZjQ1YmUyZWVhMWViZDU3M2FlOWZjYjg5MWU0NTUgcHkzaworNjY4MTMgYzkzM2M4NDY3YmRkYWFlZWJmNGFmYzJmMjNiOWZhNjQ4ZTU3MjNlZCBsZWdhY3ktdHJ1bmsKKzY2ODE0IGM5Yzc4ZTAwZGY2NzNlNjQzNTczZTViYzViMDM0ZmI0NTIzZjM4MjYgbGVnYWN5LXRydW5rCis2NjgxNSBjNWFlOTMyZjYzYzlkYTM0OGI2YWQ1MjlmOTU5NmM5Y2Y5ODYxMmRhIHJlbGVhc2UyNi1tYWludAorNjY4MTYgZjUxMTVjMTMyZDRhYTZiNGQ5MTcwNTBkODA1MjRjM2M2ZTU0N2Y3OCBweTNrCis2NjgxNyBkZmUzMTBhNDAyNDU4ZDExNjZiNmIwYjE0ZjhiYmY5MWM5NDE0YTFlIHB5M2sKKzY2ODE4IDdhZWMwMDAxNWE5ZTE1ODk0ZGJkZTQ5Y2ZkMjJhODNiNTZlMzc3OTIgcHkzaworNjY4MTkgZDhiNGE2MWFiZjI1ZjcxNWFlM2E2Njk2MDMxNDg1NmVhMWQ2MTQ2ZSBsZWdhY3ktdHJ1bmsKKzY2ODIwIGRiZDJiMTgxN2E3NWQ0MjhmMDQyMWY2OGZkM2M2MjIzOTMyYjZiZjEgcmVsZWFzZTI2LW1haW50Cis2NjgyMSAxMjU5ODRiNzFhNzY4ZTIwMDU1NWU4NGEyMzVkZTZiZGIyM2I3ZjllIHB5M2sKKzY2ODIyIGU5OTE1MzhiOWE4NzZjNzc0ZTYwOTA4ODcxYmRjODA4Njg2YTgwOTkgbGVnYWN5LXRydW5rCis2NjgyMyA5YzdlZDcwYWEyYzNmZTRmOGNmNGI5NDBiZTAxNDEyMjYzMjM3OGRhIGxlZ2FjeS10cnVuaworNjY4MjQgN2VmZGRhZTUwZDI1NTAzOTE1MjFlYzM2MzI5OTAzMmFiMGU4ZTU0NiByZWxlYXNlMjYtbWFpbnQKKzY2ODI1IDY2NzljMzI1MmY5YjBlYjI1ZGQ4MzJjYjM4ZDEwNjU3NGYxNjc5YmIgcmVsZWFzZTI2LW1haW50Cis2NjgyNiBkZDk3ZGM3OWFlMGEwNWYxNGI3ZGRjMTgzODBlNGM1OWRlNGVkZGUwIHB5M2sKKzY2ODI3IDkxNTg3ODE4YWRiODM4MDRhMGRlYWRhZDhjNjU3YjE4MzQzMGZiMGUgcHkzaworNjY4MjggZDIxNDBkZTc2NDc5NGU3ZTRmMmFiMDQ1ODg4MjVhMzk0ZjIyNjhhNyBweTNrCis2NjgyOSAxYzk4MDU1NGI1NGIyYzEwZDRiYjdlYTgwNWJkNGY5NTg5MmQzZmI0IHB5M2sKKzY2ODMwIDBiMmY3NjViYTRmNzc1Y2Y1OWNkNWU0OGE1YzU3ZTkyYzNjODY0NTMgcHkzaworNjY4MzEgODIwOTFkZjY1MWJlN2E5MTc2Nzc3MTkzMTkzNzFmYzVmZjEzMTFmOCBweTNrCis2NjgzMiBjYjc4OGUwODQ0ZTdmOWQwODI4NTRhMjNmZDU0MzMzMDczNDNmYTA0IGxlZ2FjeS10cnVuaworNjY4MzMgY2U3YjhjMzE3ZGEyMGY4YTc0NWE1MmY5MzY0MTUwMjc3ZWRjZTcwZSByZWxlYXNlMjYtbWFpbnQKKzY2ODM1IGRlZWYyODQ4MjJmNzVkMDdhOTI4YzFhNTI1ZTg2Mzc2NTYxNjhiMTQgbGVnYWN5LXRydW5rCis2NjgzNiAyMTA2MGE1NmRlZmM4ODFlNjc3YTExZDExMzkzYTFkMDhiNDIxNzVkIGxlZ2FjeS10cnVuaworNjY4MzcgNmU3Yjg1M2U4NjE2MDkzMzQyNzI3OGRiMjczYTU1ZmQwZmUwOGQ3ZiByZWxlYXNlMjYtbWFpbnQKKzY2ODM4IDFlNWIyMDUwZWM2YWNkNDgyZjg5OTNhNjE1MjRkYzQ0ZjJlZjY4ZjcgcHkzaworNjY4MzkgNTlkYWE3Y2Y4Y2EwOTc5NTJkMDlkYjg1MzNhOGJkODM3YjMwNThiZiBweTNrCis2Njg0MyA2OWVhMTJkYjliMjhiNTk4MzIyZDFjNjU3YWY2NjViOWYyNzNkZTYyIHJlbGVhc2UyNS1tYWludAorNjY4NDQgODYwZjYyODQ4YWYwMmZiZDgzODU1N2QyODA1ZTJjMzZlZjMyMTE5NyB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4NTEgMDIwNWNmMGIxYWRiOWZiZTNjYjdkZWZhZGUzMjhkZTVlMTIxYmU2NCByZWxlYXNlMjYtbWFpbnQKKzY2ODUyIDk0ZDE3Y2YzZDhiYmJlMDI0MmQyMmU0ODQ5MzAyNTBlOWZiZWY4M2YgbGVnYWN5LXRydW5rCis2Njg1MyBiNGZjYjJmNDcxMDFjYmJkZTEzM2NmNTBhYjE0YjdiNjg2ZDI0Yzg0IHB5M2sKKzY2ODU0IDQ4NDU4MTBmNTg4ZWEyOGYwNDcwMzAzM2QwODRjOWVlM2E3NWIzOTIgbGVnYWN5LXRydW5rCis2Njg1NSA1NzVmNjVmMDBjNmMwOTIzYzBiMjZlYTkzZjBjMzFjMTQ4ZTRhZjBhIGxlZ2FjeS10cnVuaworNjY4NTYgZDRiNjEzZGEzOGRjY2Y2ODliNTE4NTYwMjQ3NWFhMTliYmJmMTZiNCBsZWdhY3ktdHJ1bmsKKzY2ODU3IDJiZjFjMWJkOGQ5NmViMGVhZjI4YzY1ZmI2OGNjMTFlYjk5M2NlY2UgbGVnYWN5LXRydW5rCis2Njg1OCA5YzBlZDRhZWNmYmQ5MWQzYmM4MjhmNGFiYmFlNGU2MTlhMWZjMzFmIHJlbGVhc2UyNi1tYWludAorNjY4NTkgNTE4NzZhNDAzYzBkZjliYzU2OTcwNWM3YjliMmVlN2M4NjdhYzcwZSByZWxlYXNlMjYtbWFpbnQKKzY2ODYxIGNlNjRjYmE1MWMyYjdkOWUzYzA2YzU1OTJiNWYwNGRhNWMxODhmYWYgbGVnYWN5LXRydW5rCis2Njg2MiAwZGEzYzMwZmU5YjUyM2FhZjE3YzQzMGIxOGI2MGViNzA5YTk3OGE3IGxlZ2FjeS10cnVuaworNjY4NjMgNTUwZDc1MTYwY2M0ZjczODFiOWI1MWYyNWRmZTA1NTZiZDQzMTQzMCBsZWdhY3ktdHJ1bmsKKzY2ODY1IGEwMjU4YmFlZDAwNTdjMDY1MzU0NDE3MWY5YjdlNjE1MTE5ZDBkNzcgcmVsZWFzZTI2LW1haW50Cis2Njg2NiAwZTM1OWFmYzA2NDY4MTI1M2QwMWQwNGNhNGYwZDY3MzIxODA3MzY1IGxlZ2FjeS10cnVuaworNjY4NjcgMGI3ZTAyMzgwM2ZiMzcyZTA0NTI1MWQzYmYxODU2YzA0NDVhZTYwNyBweTNrCis2Njg2OCAyYTJjZGIyODU2NTZkZTJmM2Y2OTMzZjU5ODM2M2IyNWVkYzE4YTk1IGxlZ2FjeS10cnVuaworNjY4NjkgNjY1ZmEwNTYzMmY3YWI2ODNjYzRmYzU0N2JkNjc5N2FhYTg3Mzg4ZiByZWxlYXNlMjYtbWFpbnQKKzY2ODcwIDA4ZDZkZDY4NGE2YjMxMGYzZDRlMWI4Mzk3OWZjYjNhNzY2ZGNkNzEgbGVnYWN5LXRydW5rCis2Njg3MSAzZGQxNjUxYWYzNWRkNGJjYjI1OGVmMjhiZGQzNGZmYzA0MDZiNWRkIGxlZ2FjeS10cnVuaworNjY4NzIgMzQyZjcwMTg5ZWE5ZTViNThmYzk3ODUwOWZlMzE5NWJjMmFiM2UzYiBsZWdhY3ktdHJ1bmsKKzY2ODczIGMwYWM0Nzk4NGIxMTA0ZGRiYzBhMDc0MGZlZDQ3MjcyYmM2OWZmNDcgcHkzaworNjY4NzQgNzk2YjFiYjk1NTRjYjdlYTYyNTI1NjExMGJkNGM1YTFmZGM1ODllOSBsZWdhY3ktdHJ1bmsKKzY2ODc1IDVhMDkyMTAxZjA2OTYzZTI1MGU1YmYxNGI4ODlkOTU2NWFlNzlhY2IgcHkzaworNjY4NzYgYmRmNGRhNWQwNGFkOWJlNTM1OGMwZjRhMmFkNTVlZGJjN2IxYzQxOSBweTNrCis2Njg3NyBkM2RlMDgyY2EwMzE0YTllYTRiMTljOTRkYmVhMjMzZmVjYmRkNGU2IHB5M2sKKzY2ODc4IGU2NzAyYzFhMDdkNzUyYjNlZTU5NDdiODFmMzA3MDY0MzM2ZjY4MzUgbGVnYWN5LXRydW5rCis2Njg3OSAxODcwMDRkZjU3OWNiMDIxMGQ3NzE4OGEzZjA1ZjI5ZjBlNTZlZWUyIHRsZWUtYXN0LW9wdGltaXplCis2Njg4MCA5OWM3OGQ2MGJlMTI1ZTNlMzhlMDQwODU5NTg1NjEzMjIwYzI1YzNmIHB5M2sKKzY2ODgxIDJmMGQ3Mzg0Y2MxYzBhODMzZDFiZTFlOGFmN2EyYzYyZmRiN2ZjZmIgbGVnYWN5LXRydW5rCis2Njg4MiAwOGEzZTY4ZjFmY2JiMTFjYjVhMDQ2ODk0MWNkNmMyY2IwYjA2ZGNkIHJlbGVhc2UyNi1tYWludAorNjY4ODMgNzFmYTdkM2NjNGM1OWRiZWY3NjczNGU5ODZiMTY4NjFlOTRiYTJmYSBweTNrCis2Njg4NyA5ZmRmOGQ4ZGUyODc1YTdkNTU2Yzk1NDBmY2IzN2IyOTk2YzNmYTJkIGxlZ2FjeS10cnVuaworNjY4OTEgNjJjMjRkNGExZjhmNjIwOWEwMmNiZGRhZjFhMDAwNTdjNzMzNzhlNiBsZWdhY3ktdHJ1bmsKKzY2ODkyIGUxYTg4ZThiOTY0OWJmYWU3ZWZiZjc5MGZhZmY5Njc2YTBhYzU2MjUgcmVsZWFzZTI2LW1haW50Cis2Njg5NCBiMDllNzA1M2I0NzJjMzk1ZTA1YTRhYjliNGVmNWM5YzgzOTlhYWVkIGxlZ2FjeS10cnVuaworNjY4OTUgNWU2NjYzMjg2YWJjNTdjOWI4Y2EyNTU1MGIxMmM1NjBjYTU0NjkyOSBweTNrCis2Njg5NiBhYzg2ZTk1MzU1OGY0NDZjZDRmZjY2YjQxMjgyZjMzZmJjNjM4OWU2IHRsZWUtYXN0LW9wdGltaXplCis2Njg5NyAwZjBjMjI4MzU4M2VlYjg3MTAyYzE3MDFjYjY3ZTMyMTI3OWUyMTdmIHB5M2sKKzY2ODk4IDIzMmEyMmNmZGVhOGZhOTkzZmJhNDU3Zjg4NjFiZWQ2MTkyMDVlNDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODk5IDg0ZjAxNzQyMGI5YjhlMWI2YTkxNDE5MDEwOWY3NWRmOTE2NTU3YjAgdGxlZS1hc3Qtb3B0aW1pemUKKzY2OTAwIGJiNTExNTllNzFkZmMzMTUyZTAzYTJiMDAyNjJhNjEwM2U4NGEyY2EgdGxlZS1hc3Qtb3B0aW1pemUKKzY2OTAxIGQxN2NmZWU0ZjIzZGVmYmVhNTM2ZTYwNTBhZjA0OTQzOTcwY2VlODMgcHkzaworNjY5MDIgZmRjYzhhMzEzNTM3NDQ4ZjQ2MGMyNGJlYzU5Y2FiZDkzN2I4OWNmOSBsZWdhY3ktdHJ1bmsKKzY2OTAzIDQwOWRhYjhiMWQzNDQ5Njk5MWY1OTJhZWEwOGYyZDAyYzI4M2JiNDUgbGVnYWN5LXRydW5rCis2NjkwNCA0ODE5NGQ3YWYzMmYwMjY4MWE3NzZmMGVjZTc2NzI3ZDU3YjJlNzg3IHB5M2sKKzY2OTA1IDBhZGY2YmRiMTcwZjk3M2NhNTdhZTgwN2ZkYzM5MTg2NmQ2ODE4ZjQgbGVnYWN5LXRydW5rCis2NjkwNiA0NzM3ZTVkZjUwZjRkN2ZlOWVhODJiNjMwNzBmMWNhZTc2MzlkNjExIGxlZ2FjeS10cnVuaworNjY5MDggMmExMDk2YjQ4MTdhMmY2ZmUyYzRkMGYwM2U3ZTcxZGRmNmQ1NzQzZiByZWxlYXNlMjYtbWFpbnQKKzY2OTA5IDVhZmM5ZmZhODBiYjc5ZWY2YjJiYzEzYzBiMDQyYzYzOGEyZDhkYTYgcHkzaworNjY5MTEgMDExMTFjNDA2MTZmNTkwYjkxZjI5YjI5YmEwMmNhZDg4ZTdkZDMxMyBsZWdhY3ktdHJ1bmsKKzY2OTEyIDkyZDA4OTAzMzVjMjQ5NDhjYTMwY2UxY2IzNWFlNmJmMWVhODVmYmYgbGVnYWN5LXRydW5rCis2NjkxMyBiOGZjNzkwYTI3YWVjOGI2OGIzOGI4MDIwYWI0ZmJmYjQzN2IzYjZhIGxlZ2FjeS10cnVuaworNjY5MTQgOGQyYTY5NzExYTk3Y2VkNWJiMDQzYWJlNDk5YzE3YzkzYzMxYjg1ZCByZWxlYXNlMjUtbWFpbnQKKzY2OTIwIGQwNjE5ZTIxMGFjNDJmZTA5N2NjMDI1MGM4YmNjZDBiNGVlYTNjMzcgcHkzaworNjY5MjIgNjkzODIxOWRjNWE2NDY0ODdiZmVjODI5NjA5ZjNiMTc1N2VjZjBjNCBsZWdhY3ktdHJ1bmsKKzY2OTI0IGQ3YTcyODQyMGIwM2E3YjM3ZTgxNWIzZDhlNDVkNzdhMzFjYzY5MDggcmVsZWFzZTI2LW1haW50Cis2NjkyNyAxOTkyOGU0NWQxOGIyMTdiZWFkOTQzNWE1NDcwOWRlZmU3MTRhY2IzIGxlZ2FjeS10cnVuaworNjY5MjggOWRlZGZiOGU1NjVjNDQ1ZDUzNGUxNzJjMGE5NDhmYTJjODJiNWRhYyBsZWdhY3ktdHJ1bmsKKzY2OTMyIDNjM2FiZDVmYzgzMzkyMzcyNDcyZDNkMmRjYTAzNWJhY2YwODI3NTEgbGVnYWN5LXRydW5rCis2NjkzNCAwMGU0NjdkYjYxODI1NDM2YmQwYzA1ODU5OTk5YTBiYTkyMzEyMDQ4IHB5M2sKKzY2OTM2IGE1NzgxNDdiYjVjMTMwNTU5NGYyZWNiMGY0Yzk4NWZkNTQ5NzMwNTAgbGVnYWN5LXRydW5rCis2NjkzOCA0NjIyNTIxMWU1MDNhMTk1NGJjODA2MWJhYzEyZWY0MzE3MjcxNDY5IGxlZ2FjeS10cnVuaworNjY5MzkgMjQxZTAzMzcxYzdlNDI2MzJlMjdlZjMyMjIxY2U1N2QxODdiMDJkYiBsZWdhY3ktdHJ1bmsKKzY2OTQwIDYwMjRlMGNhYmE2NDgwMmFkOTMyYmZjY2YxZTk1N2ZhMGY0ZmU5NjUgbGVnYWN5LXRydW5rCis2Njk0MSA0ZTJlNjg4NGZkMjg4NzYyMmFhZWJmOTU5YjYxMmYyNDdkY2Q1YTIyIHJlbGVhc2UyNi1tYWludAorNjY5NDIgOGE4OTEzMmI4NTlmMWViNGMyNWQyZDg0N2I1ZTMyYjEyMzIxNmM4OCBsZWdhY3ktdHJ1bmsKKzY2OTQzIGE1M2JiODMzMGE2NGM1MWJjYzBhNDhkNjhhMjQ2Y2RlNDA2MzUzZWEgcHkzaworNjY5NDQgNTBjODg2ZGFlZGYwZDgxNWQ2NDk5NTgyNjVmYzJmYWIyNjlkMjNkYyBweTNrCis2Njk0NSBjYTcyMjcxYzYyNGMyZGZiZWJjMGI2MDMyZjAxYjkyNDEzYzE0YzA0IHB5M2sKKzY2OTQ2IDJhMzkxMGE4ZGMzNzdhZmFkYzIxYjFlYzQxYmFjNWYxNjI4ZmU5M2MgcHkzaworNjY5NDcgNDkxZWQ4MGE4Y2MxNTEwMzEwZmMzMTJlMjZiMzJmZTgzZjc4OTQ2YyBweTNrCis2Njk0OCBjYmMzYWZjMWU0MGEyMDlkOGQ0NzAyZmZkNGZlZDBhMjQ0N2QwNTdlIHB5M2sKKzY2OTQ5IDJjM2E2YzlkZmY2MmQ1Yzk2MDA2NzkyNzRjOTY3ODgwYTE1YmIzN2UgcHkzaworNjY5NTAgNjQ1ZmU1NmMxMTdhYTYzZjkxZjBjMzQ5MTk3N2EwNWQ4MWQ5MzA3MCBweTNrCis2Njk1MSA0ODFhZDNkOWZmZDFiNjhkZjhkYTg1NzhlMjU3OTgxOTYyM2I2ZjBlIHB5M2sKKzY2OTU3IGY2N2RlNjFjMmNmYTkyMzg4M2VjNDJlMTczY2QxN2Y3NzE4ZGNjM2UgcHkzaworNjY5NTggYjU1NWQ0ZDk1NzVjNDU4ZTk3YzA1ZTk1YjhjYzM2YTI3NjNmODU4NyBsZWdhY3ktdHJ1bmsKKzY2OTU5IDY2YzU0NWY3OTYyNjkzMmMxYWJhM2JiZmNlMmJhM2Y4MTExMTM2MDYgcmVsZWFzZTI2LW1haW50Cis2Njk2MCBkZmNlNjJhYjA3YmEwYTFmNmNlNDcyOWQwNjIwN2NhYWQwZWQzNDRkIHB5M2sKKzY2OTYxIDgzZDA5NDVlZWE0MjI4NDA5MjY3NzViODVlZGRmMzNlNjE0ZTc2MjggcHkzaworNjY5NjIgMDEyMWRmM2NmNWEwMTJjMmI4MDYwZGVlYWM3ZjgzMzRmY2UxNWVlYSBsZWdhY3ktdHJ1bmsKKzY2OTYzIGJjMWY0MzI1MmM5MjIwZjkyYTYwMmVlNWQ3MTM2NTA5NDAxZmMyMzYgcHkzaworNjY5NjQgOTZlNzg1NGQ3YzZlMWExMmIyYWVjNWViNDhkM2M2Y2UzNzBjNzQ5MCBsZWdhY3ktdHJ1bmsKKzY2OTcwIDY4NGJmNzk5MDA5NGJjZmYxZDM4NTRkMjNkNWZlNDA4ZGFjY2M4OTYgcHkzaworNjY5NzEgZTg4NDFjMzQ2NjUxOTQ3MGQ0NTBhM2Y0OGFjZDAwZGVkMzY0NGFiNiBweTNrCis2Njk3MiA1N2UyYjVjNDU3OTVhODA1MGU3NDUwMzM1MzA0MDdjMWQzOWE0MDkzIHJlbGVhc2UyNS1tYWludAorNjY5NzMgZGJkNTRiYWMwYjZmN2NlYjVhOWExZTE0ZDM5ZmRmMzJhNzE1ZmFhYiBsZWdhY3ktdHJ1bmsKKzY2OTc0IDJlMzhjYTcwOWIxZDI5NmM3ZmZhODIxZmIwMmViZTczMjI2YTY5Y2MgbGVnYWN5LXRydW5rCis2Njk3NSAzZmY3YmI4MzA1MTljMjdkZTE1ZjBkN2FhMTg1MTgwMTJmOWVjZmFiIHB5M2sKKzY2OTc2IDI2YmMwY2QwMTA4YjQ1YjZkZWYwOTRjOTEzNjkzZDVkZjk0NjQ1MmQgcHkzaworNjY5NzcgNmNkZTJhMDUxYjI3OWQyMTBjNTY2MGJiZTBjZDI2YTgzYjg4YmU3NiBsZWdhY3ktdHJ1bmsKKzY2OTc4IDg5YmEwMWI2MTRlZWQzMTgwNjk4MGJkMjI5MDFiZTdhNDA3ZjI2YjIgcHkzaworNjY5ODMgODdlZjg5NjA4MjNhMTg0ODE2Y2VmNjVlNTE1MjU1MmJhNTYzNTk2MiBweTNrCis2Njk4NCA4NDk2ZjU0MDNhODIyNTEwNzA2NmIxN2QyNTk3NmMxNzg2Njc5MzE2IGxlZ2FjeS10cnVuaworNjY5ODYgNDE1MTM3ZDBlMjBhNTI3ZmUzMWJjZmI0Y2NjMjNiZmI3YzIxM2RlZCByZWxlYXNlMjYtbWFpbnQKKzY2OTg5IGMyMDhmNWMxZTRmZTdiNzMyYjI0NTZlMDI5ZWI4MzdlN2FiMzJlNmMgbGVnYWN5LXRydW5rCis2Njk5MCBjMWRjZmY3NTk3NmUwNTQ2YmY3NjRkODExOTMzMDVkYTU5NGJjMWUwIHJlbGVhc2UyNi1tYWludAorNjY5OTEgMWViMTcxMjJiNGNjYjdkZmM1YjE2ZGMxZjJjNjQ4ZjBiMzllYzJiMSByZWxlYXNlMjYtbWFpbnQKKzY2OTkyIDgwZDJkNDY3ZjIzODg2ZDdkNGY3NWZlZTg0MGUzNzk3ODkwODQ2OGQgbGVnYWN5LXRydW5rCis2Njk5MyBkZGQwZjhjY2U1NWNkMjA4MmE1NWI5YjYyYmFjNzhmMDM4Nzg3MTYwIHB5M2sKKzY2OTk0IDBhZmE3M2Q0YmY5OTQ3ODEzMzkxZDE1MzdhMjM3NmM2NDJhZGQ5N2MgbGVnYWN5LXRydW5rCis2Njk5NSAxMjQ5ODQwYTQyYjJkYWVhMmE1ZDc2OTA1N2Q3NmUxYjc0YmYyOWI1IGxlZ2FjeS10cnVuaworNjY5OTYgMTk2ODc4MzAzMzhmYmIwZGE2OTdlMTY3ZDYxNTc1NzBmOWY5NGNhMCBsZWdhY3ktdHJ1bmsKKzY2OTk3IGRmNzQyMjQ2MDY2MDY4OTFiNjEyYjE2YzE5YjBkMTczZDg1ZjY4MWIgcmVsZWFzZTI2LW1haW50Cis2Njk5OCA1NDc5YTg3N2JhMjgyNmEwZDAwYjk1YzAxYTlmYjllMGRjMmRiMGNlIGxlZ2FjeS10cnVuaworNjY5OTkgZDg0N2M0ZmI3YjM5OTNiNmJjNDk2YjY2OWViNDNhYTNlMDNjYTM1NiBsZWdhY3ktdHJ1bmsKKzY3MDAwIDcxMjg0ZTkxNTcwNjNiYTdlOTQxYzlkYzA3N2IzZjA4YThlYzAxNjMgbGVnYWN5LXRydW5rCis2NzAwMSBjNmMzMjg0MmU3MWRjNDc5NDI1YjQ4MzY3ZTM0NWI0MjdmZWI1MWYwIHJlbGVhc2UyNi1tYWludAorNjcwMDIgNzE0ZDNjMTQ0M2E3NDZkOGZhZTMxODQxYmUyZGM2Nzk0OGEwODAwZSBsZWdhY3ktdHJ1bmsKKzY3MDAzIGJiYWIxMWNkYjE3NTYxMDA2OWQxZjMxMDk4ZGUyMmMzYzk3MDg5MDUgcHkzaworNjcwMDQgMDU3MTVmMGNkN2U3Nzk0MzRjMzdlNDJmZDkyNjQzOGQ0ODUyN2Q4ZiBweTNrCis2NzAwNSA4OWFlOWQ3ZDE4ZDdiY2RlZjYyYTlmMTg4Y2ZhYWQxMjYwMzNlNzczIGxlZ2FjeS10cnVuaworNjcwMDYgMmE4NWU1YzllMWUyYTc3Zjc4YjczZTdjZmNmYjRiZjc0ZjY1ZDBiMSBweTNrCis2NzAwNyA2M2YzZjA0NWZlNDhhMGM2NGExMjgyOWFlYzdiNGUxN2MyZjdlNzc4IGxlZ2FjeS10cnVuaworNjcwMDggMGJjMmNkMmQ5NTk4MmIzMjU5YWIxNzA0ZThiMzQwZTMyZGU5ZjYwYSBweTNrCis2NzAwOSA4YjY1ZDEzYzE3N2M2YmRhOGMwNGNlNDZhMjRlZGIzODkzYzE2ZDQ0IHJlbGVhc2UyNi1tYWludAorNjcwMTAgMzFhNjllZDA5ZmJiNDBlMTRmMTJhNTNmMTE4ZDlkMWQwOTVlNWI0NiBweTNrCis2NzAxMSA4NDIwYWY2YzMzZWRkOTMzZGFhOTljYWZmOWI4YWRjNWMwNGFiOTgyIHB5M2sKKzY3MDEyIDJhMzg3NzFjZWNkZDVhZDM3NDIxNWQ2ODZlMGIxZDQ3YWM2NDhlYTYgcHkzaworNjcwMTMgNjYzNDUzMGEwNGUwMzQ1MjFhMmZkMDAxMDY1OWI2OTU3ODNhYjdkZCBsZWdhY3ktdHJ1bmsKKzY3MDE0IDFhNDg3YWIwZDY1Yjc0MjlmNWYxNzAxMTc5OTFkYzIwNTkzYTliMzAgcHkzaworNjcwMTUgYmJlMzczMjIxMmQ2NGU2ZjNiMDAwNjVjNDExYzA0YzIyNzMzYjdkMiBsZWdhY3ktdHJ1bmsKKzY3MDE4IGY2NjY4OGU2OWY2NmJmNWViMjVkYzM2YTNhNzMzMmNhMzk4ZTU1YWMgcHkzaworNjcwMjYgNGE3NDU5MGYzOGRhNWIyMGQ0ZDU3YmIwMTE5YjNjMjg2M2VjMDVmMSBweTNrCis2NzAyNyBkZjJiYmRlOTY4ODAyZDljYmFiNjNmMTM3YWU4YTVhZGM0N2MzM2FjIHB5M2sKKzY3MDI4IDE5NWNkN2ViZjYyY2RiYzE1NTZmOWVhOGY1N2UwY2QxNjZhOTBmOTIgbGVnYWN5LXRydW5rCis2NzAyOSA4NjA3MzdjOTZlOTc4MmEyMWRjNDBkYzkzNTAxNGQ3ZjVhMGFiMzk0IHB5M2sKKzY3MDMwIGE1NzY4YmQ2MjkzOGI5ZGY5Yzg1YTJhMGIwZjIzY2I0NjdmMWU0YTcgbGVnYWN5LXRydW5rCis2NzAzMSAwYTE4OGEyZDUwNDg4MmFhMjliZGUwNDljMzRiMjU3OGE0N2VhMzQ0IGxlZ2FjeS10cnVuaworNjcwMzIgMzBjMGIyNjZhZjA2MmMxN2M2ODEwNjcyNzI2NWJjMzVmZmU2ZDkxYiBweTNrCis2NzAzMyBlODBkOWU2ZTI2YmJkMWY2MTcxYTdlMTdlZmVhNjdmMzU3NzZkOTdhIHJlbGVhc2UyNi1tYWludAorNjcwNDAgNDBmZDZlZjBlYWE4ZjMzYmNlY2UzMjAzMmQyMDkwY2NjNjI2MzU5YiBsZWdhY3ktdHJ1bmsKKzY3MDQxIDhiZGU4ZjUxYWRlMTRkZTQ5Y2FjYTMyYjkwOGVjOWQyNmRkNjI4MzYgbGVnYWN5LXRydW5rCis2NzA0MiA0MGQ4ZmIxMjkzMDZhZDRmMzhjODFiM2JhNzE0MzkzY2IzNTllZjNhIHB5M2sKKzY3MDQzIDRiNzI2NTAwYTk2OTljZmQxOTUzOTM2ZDFmM2YxYjIyNTA4M2JlOTUgcHkzaworNjcwNDQgODA0ZTYzNjU4MTdjNGIxMmNjMWFmNGJmNzdkYWEwNmU5OGUzMDA2ZSBsZWdhY3ktdHJ1bmsKKzY3MDQ1IDJhYTY5YjlkMTI3MzhkZjIwZjA4YmM0MGRkZDA2OWZlMTBjODAzMjUgcHkzaworNjcwNDYgMDIxYmM5Zjg4MTAzNDlkYzhiZmU2NmE4NDJmOGYyMzI5MDNjZTY1MSBsZWdhY3ktdHJ1bmsKKzY3MDQ3IDM0ODVkOTU5NTdjMWQyYzU4MWUwMWYxM2IyZDQ5YmJlNjUyYTJmNGEgcmVsZWFzZTI2LW1haW50Cis2NzA0OCA3MTEzOTBkNGFjMjEzOTBiMGM2ZDFkZTI5ODM3MmVmMDM0MzQ5ZDI2IHB5M2sKKzY3MDQ5IDI0ZjY1ZTMwOTBlODBhMjJhZmRlNmE4OTE3NDkxOTg0MWUzNWI5MTIgbGVnYWN5LXRydW5rCis2NzA1MCBiYjEwOWM0YmVkMjc2YTMzZWFhY2M2YzA5NDAxNmNhZWYxZmU5YWMyIHB5M2sKKzY3MDUxIGMwYWZjNGVlYmE3ZDZhODQzMzU3NTc5YzUyYjc1OTQxMjI1YzhlOWIgcHkzaworNjcwNTIgNmEyMGU4YzE3NDVhOTg4OGZmOGE4MDA3MjBiMWVlMWQ5NzhhZjAxZCBsZWdhY3ktdHJ1bmsKKzY3MDUzIGIzZGY1OGY3NmU0OWQ4N2UwY2YzZDk3MzQ3YzhkMjc2NzJhOThkYjYgcmVsZWFzZTI2LW1haW50Cis2NzA1NCBkMmVjNmQ1YjJkYjk3MDFiYTA2Mjk1MzI1ZTg2NTkzOWE2OWQwNzBiIHB5M2sKKzY3MDU1IDlmYzU3M2ZiYWY1ZTM0YmRhY2RmMjRlNDMwOWFmOGFhMmZjNzVmY2EgcHkzaworNjcwNTYgZThjMGE1YTY0NmNhNmNjZGEwMzFlYmZhZDA5MTUxM2EyOGJlZTllMSByZWxlYXNlMjUtbWFpbnQKKzY3MDU3IGVmZWY1ZmM0NWE5YTQ3NzI1MGJlZmNkN2RlZmViNGVlMDUyYmY4ZjYgcHkzaworNjcwNTggYzMyMzEwMjczN2JjMjNjYjhmZmU0OTFmYTlhZTNhNzk2N2VlYTI0ZSByZWxlYXNlMjYtbWFpbnQKKzY3MDU5IGE1Y2E4OTUxYmVmMTcyOWI3ZjVkNGRiNzYzMjJmZmFhOWU0MDBhYTIgcHkzaworNjcwNjAgYjBjY2NiNTU5NDFjNDE3MGUxOTVjMmQwOGY2NTI0MGEzY2JkNWZhYSBsZWdhY3ktdHJ1bmsKKzY3MDYxIDgwNDVkNTU5NmIxYzhiOTMzNDA1NzA3NGUxOWM4MjQ2OTBmYzczNTUgbGVnYWN5LXRydW5rCis2NzA2MiA5Yzk3YmM4NjEyMmEwZjdjNzgzMjI1ODRhYTdhNmJlOGU1MThkYzViIHB5M2sKKzY3MDYzIDA2Y2YyY2VhMzg3YjdlNDUwM2ZhYmM5NmQ1ZGY4ZDUxNjBiODQ2MDEgcmVsZWFzZTI2LW1haW50Cis2NzA2NCAzZTJkZTQ4NGNlMzQyMTdjNmRhNDdlYmFjMTQ4Y2IxMGRhZDJlMDAzIHB5M2sKKzY3MDY1IDk2NDE4ZjgxMmYwNjgwMGUwNzc5NmM3OTMzNmU2YjJhMzk1ZDQ0MTkgbGVnYWN5LXRydW5rCis2NzA2NiA3ZTQwMjYzZGJmZDM0NTQ5OTI4NWZiYzkyZjgyNGYyZjY0YjZmMWMwIGxlZ2FjeS10cnVuaworNjcwNjcgNmNhYzJlMzA3N2EzNGQ3MmEzZTE4MTlmYjRiYmFiNTA0MmNmNjhmMSByZWxlYXNlMjYtbWFpbnQKKzY3MDY4IGYzMjM0ZTQzZTFmZTgwYTI5NGE4NTE1ODgxYmE2OTgwMThjZjQyOTMgcHkzaworNjcwNjkgOTkwNmY2OTZiOTQxOTVhZmFmMDU2OGQxYThkZjliOTU2MDI5ZjU0NSBweTNrCis2NzA3MCAwZGZkYjUyYWJkZjlmOTU4N2IxMDdmYTIzOGZhOTg4YTcyNjI5ZGRiIGxlZ2FjeS10cnVuaworNjcwNzYgNTc4YWE0M2RjNDAwNDMwNzUwMThlNzdmOTJiNmMzMjFiY2ZiMzEzZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjcwNzcgOTFhYjQzNTQ0NDBlZmM4MTQ0YzUyNGEzMmNkNmMyMzMwZDRkMGMzNSBsZWdhY3ktdHJ1bmsKKzY3MDc4IDJlZDNmODkyNmJiODkxYzk5YTg0ZDFjMTBjOTA3NGIwYjExZDE1ZDMgcmVsZWFzZTI2LW1haW50Cis2NzA3OSA0NWFjNTE5NmZhNjc5ZGZhZTE5OTRlMDg3ZDE2OWYxNTczNWEyNWE4IHJlbGVhc2UyNS1tYWludAorNjcwODIgMTE4NGFiYzVmOTZjOTZkNjEyZjNlOTZkMTA0MWFjZjI1MDU2ZDk3OCBsZWdhY3ktdHJ1bmsKKzY3MDgzIDAwZTcxY2Q4OTEyODRhNTdjZWYwYTk2NTg1N2QyZTYzOTQ3OTVkZGMgcmVsZWFzZTI2LW1haW50Cis2NzA4NCA0NTA0NmYwNzIyN2FkM2FmMjcxZDUxN2FmMjhhYmU1YjE5NjY4YzQ4IHJlbGVhc2UyNS1tYWludAorNjcwODggYmQwZTlhOWNkMjgzYTU1NDBhZWNmOWYxYTBiODc1Yjg2MTE5ZTU2ZCBweTNrCis2NzA4OSAwZGVjNTRhYTUzZWU3NWUzN2FmNmExODJiNTliZTAyMTJhOWY2ZGE2IGxlZ2FjeS10cnVuaworNjcwOTAgZjg0OWM1OWJiZmQ3NjRmMDI1M2Y0OTU5Y2QxMzZhMDg5NGQxZWQxMiBweTNrCis2NzA5MSAwYzhmYWY2YzhlYjI5NjBkNGFiNzM4MDFiYjFhODMyZDY3OGRjM2JmIGxlZ2FjeS10cnVuaworNjcwOTIgNWY4MDFhZGQyMGZiYmMzMmM2OTllNDVmOWVmNGExMWI2OGMxMzQ0YiBweTNrCis2NzA5MyBmMmJiMTMzZWY1MTdkNDUwZDAyZmE2Y2ZmYmJmNWVlYWEzZmVlZGMxIHB5M2sKKzY3MDk1IGY2N2IyYzhmYTkzYWQyMzIyZGQyNjllN2MxYTlkNDZhNjMzZmU3ZjggcHkzaworNjcwOTggZTY4ZTQyYjE3ZTVlMzQxNDQ5MDNlOTNhNGM1OTA1YTQ2YmRkMDVlYiBsZWdhY3ktdHJ1bmsKKzY3MDk5IGE1MjllM2RjNjk1YThiNmVkZGU0OGJjMWRmODhmYTAyMTI5MzQzYjggcmVsZWFzZTI2LW1haW50Cis2NzEwMCBjMDg5ZWI2NGVlNTc2ZTU3YmRhZjMyZWMzMGU4YjZlMzAyMGQ5MDQ1IHB5M2sKKzY3MTAxIDk3MmI0MDU0NmQ3OTU1NGYzYTg5NzFmMGYxNmVmMjkzODAwN2ZjMjYgbGVnYWN5LXRydW5rCis2NzEwMiA1MGU3ODIyYzk1ODVmZWY1NmVkNjY2MTFmYWM0Yjg1NDJhZGUzZTkzIHJlbGVhc2UyNi1tYWludAorNjcxMDYgMjNkOWNiNzc3ZDlhODE2YTI1NjJkZThiNzdmYWVjNDVjM2Q0ODEwNSBweTNrCis2NzEwNyA5OGYzMTc1NjQ2MjAzZWY0ZWEzOTBkNDM0NTRiYmRlN2VhYmYzNmZjIHB5M2sKKzY3MTA4IDQwMGZiYzgwNTJhZGVjYzE3NjkyNjg1ZGIzNTMzOGIzY2I5MTUxOWEgcHkzaworNjcxMDkgMWJjM2QxYjM5YTRiNzk1ZTI2NjUzZjdjNjY5ZWQwMmFjNjE4M2IyZiBweTNrCis2NzExMCBlMmE0NzJmM2I3N2Y2YzEwZWE0NTUxN2YzOTE4YzhlYzE5MTkwOGZkIHB5M2sKKzY3MTExIDViNGNiOGNkNTA1MWY3YTAxMzk3OWI0NjQ3YWIxYThiNDhjMDJmNWQgcHkzaworNjcxMTIgYWE2ZTY0OTU5OWFkMDkwZGY5MTJkYTY3MTRkNjg4ZGMzMmJjYzc0NyBweTNrCis2NzExMyAzYTk0NzY4YTJhOGJlNWQwOTI4MDZkYzY4YTVhYjFhZWNiMTcyYTBkIHB5M2sKKzY3MTE0IGQ3MTk2ZmI5NGYyNWZjOGRhNWM5OTM0ODBkNWUwNTUxNDE0NzNiZTQgcHkzaworNjcxMTUgNmUwYTM2MTA3OGU1MjE2OGFhNWVjOTJhNzdjMzg5YjY0YjIxY2E5MyBweTNrCis2NzExNyAxYzIzZTcwMDE1MDY3NDA0NGEwNmVjNzA3YzJhZDFmMjkxY2Y2MjY0IGxlZ2FjeS10cnVuaworNjcxMTggNzljOWFiNjQ5OGZkZmI5ZGZmYTMzMjQ2NGZlNDg3NWE3NDE0ZGZhYiBsZWdhY3ktdHJ1bmsKKzY3MTE5IDlhM2U5MjQzYzUxODliZTY0NTYwMjkzZmIzMDI3NjNlNTU1Y2YxN2UgbGVnYWN5LXRydW5rCis2NzEyMCAyNmYwMWVlYWY1NGU4MGU5Y2RiYmVjMGI4OWM4ZjNlYWI4YWE4NzNmIGxlZ2FjeS10cnVuaworNjcxMjEgZjNmNjUwYzdkM2FhYzYzY2JiZjY2YmYwNWY1NmFkZWU3ZDcyMjgzZSByZWxlYXNlMjYtbWFpbnQKKzY3MTIyIGY3ODY3Yjc3ZGM1NTc4MTgxZDE5NmIyZmY0ZGEzZmI1ZjAyZTY1ZDcgcHkzaworNjcxMjMgODM3MGU5ZWY3ZjBmZGM5NjdkOTlhNmI5MmI2YjdhMmUzNzFlMGY2ZSBsZWdhY3ktdHJ1bmsKKzY3MTI0IDdlNjNmZWIzMGVhNWRkYzY5MDU5OTMwMTliZWQwOTViZDMzM2YwNmUgbGVnYWN5LXRydW5rCis2NzEyNSAyMTBjNTg1Zjk1YmVlNmY0NTlkMTEzNDY0Y2ZiYjJjODc2NDg5ZjVkIGxlZ2FjeS10cnVuaworNjcxMjYgMTA0NTM3YTU0MTk2NTBkMzc5OGY1YWZkOTA3N2U4YWU4ODNiM2MyOSByZWxlYXNlMjYtbWFpbnQKKzY3MTI3IDMyNTYxODc5MjVkMWU5MWVmMWUzMThiMTlkMmIzZWRlZjlmZWQ3OGUgcHkzaworNjcxMzIgMTRkNDQxMmQyYmY4NDgxMzBlYjlkNmI1MWFlMDJhYThkOTBlMGNlYSBweTNrCis2NzEzMyA4MjgwOTQ4NTkyYmIyY2RkZDhhMDU0NTU4OTY5NmQ5MGNmYzA5NDQzIHB5M2sKKzY3MTM0IDk3NGNhZjE2N2ZmMDQ1Mjk2MmMwYjUzMmE2MGJjZGRhODU1Nzc3ZjYgcHkzaworNjcxMzYgNTM0YmU4MDY2YzM2YTZhZmMyNjFiNWJmYzdjNzYyMDBkNTRkYTFiOCBweTNrCis2NzEzNyA4ZmFlNDY1YTM5NjI3YjU5MDM4NTQ2MmU2MDk1ZWI2M2FmNDUyNDBhIHB5M2sKKzY3MTM4IGFjNDJkYzlhMDIwM2VmYjM3ZTY1Zjc3NzM3ZmQxOTQ0YTkxODAzMDkgcHkzaworNjcxMzkgOTJiYTEyZjkzMjgyMzg0YTIzOGMwZmIwNTY5ZTdjZjQ5MWYwMzJkZSBweTNrCis2NzE0MSBkMmY3MzIzZmI3MDk2NWJlNjIyYWZkNGNjN2E1NDIxODUwNTc5YzRjIHB5M2sKKzY3MTQzIGM5ODNmYTY4ZDZmZjI1NWNmYzdiMmE1OTA1MTg5YzNhNTU3M2MzZTUgbGVnYWN5LXRydW5rCis2NzE0NCA2MjM4YjZjZjc3ZjEwNTdjZWFjNTFhNGQ2NjE3ZjU5YjQxODBkZmJkIHJlbGVhc2UyNi1tYWludAorNjcxNDUgZWE4N2U4ODE0MzU5YjM4ZTc3MThiYjAwOGM1MDk5Y2UxYTg4Y2Q3YyByZWxlYXNlMjYtbWFpbnQKKzY3MTQ2IDgyY2NjN2U3N2VjNTU3M2Q1NjhkMmY1MTU2ZDVmZDVjOTBkM2ZmMTAgcmVsZWFzZTI2LW1haW50Cis2NzE0NyA0NzlkYWQ5ZGM5NmMxZThkY2Y2MDQ2ZGNjNWNiZTllMTc4MjhmNjRiIHJlbGVhc2UyNi1tYWludAorNjcxNDggMWY3ZjQxZjIwYWM1OTY2NmQ4NzdkZmRjOTI2YmMyZDE1MTMwYjEwZSBweTNrCis2NzE0OSA5ZGE1MjlhM2ZkNWFlNzQyZDI4YWVlNWVmM2Y4MTcxODI4Nzk5Y2IzIGxlZ2FjeS10cnVuaworNjcxNTAgZmFjY2I5OGQ5NDc0ZTNjMzUwNDA4M2YzNDdjOTFhMDcyY2I4MmQ2NyByZWxlYXNlMjYtbWFpbnQKKzY3MTUxIGFjYjc4ZWNlNTZhOWUxMDJmYzllNjc2MjViMmU3NGQ5Y2FjNTUxY2UgcHkzaworNjcxNTQgMzE3MzcxN2E4OWYzMTdjYTcxMzg4MjkxMTEyMzgyODI4ZDAyMjZlMCBsZWdhY3ktdHJ1bmsKKzY3MTU3IDU3MTkzODA1NDcyMWRiM2ZmZjNlOWIwOTNhOWU1M2IxYTk3MGQ0YWEgbGVnYWN5LXRydW5rCis2NzE1OCAwMDhhY2IwY2JiZmMyOWVlOGM5NGUyZDAwZWM1ZWMyZDAwODliMjhlIGxlZ2FjeS10cnVuaworNjcxNTkgNTgyMzViOWRjM2FlMjRjODk3ZGIxZjdkZjk3OWE0ODU1NmUwMzJlZSBsZWdhY3ktdHJ1bmsKKzY3MTYwIDZmMDY1NzFhOGFlZmFmZTk2NzA5MjU3YjdmMTc5YTQxYmY4YmZmNjkgcHkzaworNjcxNjEgZDBhYTEwZmYyOGM2NTcwMDY1NzBiMzVjODI5NWQ1YTU0MGVhNThmYiBweTNrCis2NzE2MiAyMGE0MDg5NDUzOWE0OGExYTdhMWZlNmFiNDJjNWVkYjVmMDc0ZGVjIGxlZ2FjeS10cnVuaworNjcxNjMgZDM0Y2NiMDM0MWVhNTNhYTg2YmMzNzBkYWQxNjQ0ZDBmMTA5NjBlZCBsZWdhY3ktdHJ1bmsKKzY3MTY0IGVmODgwZTJjYzU2OGNjY2Y5OGI4Yzk0NTMyZTAzNmM1N2UyY2I3NmMgcHkzaworNjcxNjUgNzFmNTNkM2QxNTUxMjFjZjAzYThlYjc3MDg5MGMzZjIxYzA1OTIyNCBweTNrCis2NzE2NiBiYzRmNzQyZTJjMWQ1Mzg0NDUxY2M1ZGNlZDViMjk1MmZjZTI1MTFkIGxlZ2FjeS10cnVuaworNjcxNjcgZjA3YjgyYTMyMWZlMTkwNTUzNzk4NDdkNTU3ZTdiOGU1ZGE5OTkzMCBweTNrCis2NzE2OCA3NjgzMmMwOWQyZmRjMWIwNjllYmYwZjYxYTI2Yzc1YTQ1ZmQyMzZlIHB5M2sKKzY3MTcxIDJlMDg1N2IwZmM2NzU3ODQ0YTllMGRkYjU2N2JhNDVjZGY3MDllMjYgbGVnYWN5LXRydW5rCis2NzE3MiBjZGRkOTE4MGI4Yzg4MDYyMjcwNmFkN2I0ODg5YWJlYWQ1NWQ4NTkxIHB5M2sKKzY3MTc0IDIxMTE1MWZkYzkyNDQ0MmNjYzNjYWNlNWVjMGZjYThiZDQxYTMwZTcgcHkzaworNjcxNzUgMmJiMTJjYTJmZjQ0ZTExYjhjM2RjYmE4NDI0NjU3YWY5ZWIzOTY3YyBsZWdhY3ktdHJ1bmsKKzY3MTc2IGMyYTc1YmE0NmYxNGQ5ZmMyNmQ0YWVjN2U2Yzk0ZTU1N2JkNmMwNDggbGVnYWN5LXRydW5rCis2NzE4MCBhZTgzZDRhYTNlMGVkOTc0M2NjMDNmYjNhYzhhOTY0NWJhODYwNmI4IGxlZ2FjeS10cnVuaworNjcxODEgMmIzMzQwYjVjYTM4NmI1MjQ2N2E1YmVlYjNmYWY1NzkwMGNiOTA5ZiByZWxlYXNlMjYtbWFpbnQKKzY3MTgyIGIyNDgxYTE1Mzc2MzQ4ZmY4MWJjZjFjZDAwNTE3ZjM5ZjQ3YmU5ZGQgcHkzaworNjcxODQgYWNmNjllMDc5Yjg0NmI1YzNkODRlNDBlNzlhOTRlYzFiYThmYWUzOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjcxODUgNTRjYjUwMWY2MjE1YWJkY2NmOWU0MTE1NTJhMGFmZTMzNjRiYTI3MyBweTNrCis2NzE4NyAyMThhOTg5ODExODNkMmEzYzdmM2QxNTg3OWUwZmExMWMwOTI4NDg4IHB5M2sKKzY3MTg4IDYzZWEyMmI1OGQ1NDI1OTIxOTY2ZGYwNTljZjIyYjNlZmY4YzE5ZTQgcHkzaworNjcxODkgNzQ0MGEzMGEyZjEzNDAzYTQyN2UxMjBjYzZmMWY3ODgwYmFlMmQ1ZCBsZWdhY3ktdHJ1bmsKKzY3MTkwIGZiNzI1MzY2ZjlhYzhiZWQ0ZTMyZDY2ZDdlYjkyM2E1NTVjNjgyOGEgcHkzaworNjcxOTIgYjA3MTNmYmM1MDYxYmFhMjUyYTQ0MGIyODg2NTc0ZTkyY2UwOTg3YyBweTNrCis2NzE5MyA4MTE5MGNiMWNhZTI5MzA2YTIyODJkMmUxNmFjNDUwZDY1YWQ2MmU0IHB5M2sKKzY3MTk0IGYyYjQzZDI4MjUxZGNkYzAyMGI4ZmVmNjM4M2VkMmNhOWM2ZDg2NmMgcHkzaworNjcxOTUgMDNlNzRkZDljYzgzZjU5MGY4NWQ5MDI1YTI5NjkzNjZkNmM1NzczNyByZWxlYXNlMjQtbWFpbnQKKzY3MTk2IDhkNmUyNDk5NzI2YTUyODEzYTEzMDE5YTA2YjI3ODk4OTcxYTUwYzkgcmVsZWFzZTI0LW1haW50Cis2NzE5NyA2MWEzMzA1MDQ0M2QyMGYwZDI0YWY5MjI3OTEyODA1NmY5ZTlhOGI2IHJlbGVhc2UyNC1tYWludAorNjcxOTggOTc4MWVlZjMxOTJjNmFiMmNjYjI1Y2Y4YmYxMTg1NmUwOWUwZmUyMyByZWxlYXNlMjQtbWFpbnQKKzY3MTk5IDIwMGM4YWFiMTkxNzZmYmY3MTg2MGQ0NzAyNmJkYmRhNjRhNzg2MTIgcmVsZWFzZTI0LW1haW50Cis2NzIwMCBjZTcyMjRjZjg3YmEyMGY0OGMwZmUwYzhmOTg3MzFhOTVlYzk2NWZjIHJlbGVhc2UyNC1tYWludAorNjcyMDEgMjMyODVmZjEwYzA0ZDc5MWI0ZTcwMWE0ZGE3MjExNThkMmQwZDRkNCBweTNrCis2NzIwMiA5YTEzZTk2Njg4OWNiNDRjODdmNmY4MTQ4ZjZkMWUyMTcwMGExOTYxIHB5M2sKKzY3MjAzIGNkMDhiMDBhY2Q2YTFjYTUzOWIwMjcwMGMxNDU2NzU4ODliOTBjODYgcHkzaworNjcyMDQgOTg2MjhkYzczMGRhZTc3MGY0MTgxMDRmODdiNGIzMWM5YTQwZDcwZiBweTNrCis2NzIxNiA0OTRiYjk2NzEzOTE3OTA1ZWNjZWQ0ZDQzOTZiZDliYjEzNDQ2ZmM3IHJlbGVhc2UyNS1tYWludAorNjcyMTcgMDU5ZjExNmEyODE5NGY4ODM2YmQxOWQ5Y2I3N2NjMjI0ZTZiZDJhNyByZWxlYXNlMjUtbWFpbnQKKzY3MjI0IGMyNzcyY2JmZTE4MWUxZjNhOWI2MmFiYmU0YTdjMzI3MjQ0NzQ2YjUgbGVnYWN5LXRydW5rCis2NzIyNSAxNjYwMGNhY2UzMTVkYzJjMWQ3MmYzNDBiODc0OTFiMTBlMDYzNGY0IGxlZ2FjeS10cnVuaworNjcyMjYgMGFkMDcwNzg0MzNhMzg3OWM1MDA2MzA2YTI1ZWQ3NjU5NmFiYmZjNyBsZWdhY3ktdHJ1bmsKKzY3MjI3IDRjNDYzMjNhZmFiNmY5OWNiZTlmMzkyODZkOGM5NWE5MzY1NzA3YmQgbGVnYWN5LXRydW5rCis2NzIyOCBkYmU0YjE2ZjgwNGJhN2JkMTExNTNhOTFhNGI1NmViMDcxNTUxNTljIHJlbGVhc2UyNS1tYWludAorNjcyMjkgNDIwYTVlODNlMDJlN2I0YzE3NWVhNzY2OGQ2MjNkNDlmYWNlOWU0MyByZWxlYXNlMjYtbWFpbnQKKzY3MjMyIGM3MDdkYTM0MzU1NzhjZGJhNTAyNmI1MzAxY2QzNWNhNGEzZTg4YjggcHkzaworNjcyMzQgZTc0ZGQ1NDE4YTMzZmIwMDBiOTMzOGE5YTM1YzRkZDZlMDAyZGIzNCBsZWdhY3ktdHJ1bmsKKzY3MjM1IGI0MjhlOGY2YjE0MzQ2MjNmNmUxZGZmZTg0MzQ0NGFkNDAyMjUwZTEgcmVsZWFzZTI2LW1haW50Cis2NzIzNiA3ZGUxYjJhZDM4MDQ4NWQwZTk3Mjk4YzZjYjQ5YzIyY2E4MmE0NzhkIHJlbGVhc2UyNS1tYWludAorNjcyMzcgYjBmY2IxN2Y3ZWZhODE1MjZkNjg3MDBkNGE3NGRjYWE4OWVkOTQxZCBweTNrCis2NzI0MSAxZTQ0ZWE1MTZlMGU3MGM1Y2E1MmQzYzNiNTE4YzUwMjhmYjZmODNlIHB5M2sKKzY3MjQyIDYyMGEzNGRjMTBmOTA2NjM3Y2VjNTA2Y2ZjYTkwYjg1ZDVmZjE1Y2EgcHkzaworNjcyNDMgNzU1OWEzMmNjMzBlZjk2MDU0ZTBhY2RkODk4MjJiMDY5ZDc5NTI3NyBsZWdhY3ktdHJ1bmsKKzY3MjQ0IDY3NGVmNGE3Y2Q3MzAxNzVmNTgzYjdjMzcwNDg2YzExZTBlZmVkMmQgcHkzaworNjcyNDUgNGIzMjE5OWE4YWZlYzU3ODVkZDZjOWViN2I5NjBkMmMzODBkZTdlMyBsZWdhY3ktdHJ1bmsKKzY3MjQ2IDA4MTM1YTFmM2Y1ZDg4NTBkYzU1ZDgzZTM2Zjc5NzlkY2NiMmRhNjYgbGVnYWN5LXRydW5rCis2NzI0NyA3M2I5ZmUxYzUzOTczZDNlZmYzN2E2ODhkYjkyMWE0MDQ1NDYwZDk4IHJlbGVhc2UyNi1tYWludAorNjcyNDggMzU2YzNlMThkYTVlODQ4YTlmOTkyMmI2NzA3ZDczZGY3ZDYzZGQ0YiBweTNrCis2NzI0OSBhNWU0MWE3OTQ5NTQ0Mzc5YWZlN2IxMzJlNTE5YzliMThjZTljNjE3IHB5M2sKKzY3MjUwIGZjNDZhYmYxNzBmZGQ4ZDc1Y2Q5YzZiOTk2MzQxYjFiZDVmM2IwZGUgcmVsZWFzZTI0LW1haW50Cis2NzI1MSA5MzZhNmU2MGYzZWI3YTNiZTQ3ZmJhYzI2OTViYTQ2ZmMwZDUwZTUxIHJlbGVhc2UyNS1tYWludAorNjcyNTIgZjM5YWNlYmNlNjI4YmUxZjk4YzkxMDhiMzYyYTdlMTZmMTM3NGNlOSByZWxlYXNlMjQtbWFpbnQKKzY3MjUzIGVkMGRhYzI2YjM5NmRhM2ZiNzc2NDQ5YTBlNTZlY2NjNDNlNDk4NzEgcHkzaworNjcyNTYgZTJkMmE3YTZlODMxNWRjODI2N2IzNmM0OGVmNzFjMGRlNDJlYmE1ZiBweTNrCis2NzI2NiBlYTZlZTI4MjA3NTNiY2VmZWU1MmRiNzkwNjAxZjA4ZTZmMzk1Y2JiIGxlZ2FjeS10cnVuaworNjcyNjcgZDZlNjc5ODlmZjUxNDk3MzYyZmUzZmRiN2RlOGRhZjliMGY3YmIwYyByZWxlYXNlMjYtbWFpbnQKKzY3MjY4IGM2ZDE2YjJhOGVmYTRkNTYyNmFkYWU4ZTE2MTQ5MTYyZTc5MmVhMGYgcmVsZWFzZTI1LW1haW50Cis2NzI2OSBjZTY5MjM1NDVlNWVjM2E2MzkwZDY2MjRhZGQ4NGE2MDQwYTk3YWY2IHB5M2sKKzY3MjcwIDZkNmUzOGNmZjI0NDBlMmY5ZmZkNDZlMWVlMjU1MDFkNjA5Mjg2MDIgcmVsZWFzZTI0LW1haW50Cis2NzI3MSAwYzBiYjEwNGVjNGI3YTdmNmJkYjk5OTJjNTc4NjNiYmU4ZDZhMGZlIHB5M2sKKzY3Mjc3IDJkOWIxNzNkYzNhMmViN2E4MDZlNTFiMzNjOWNhOTVjZmFlODM3YjIgbGVnYWN5LXRydW5rCis2NzI3OCAxNTNmZWQ3YzdiNjBiOTBkNWU5NDY2Mzg5MmM5ZWZlZmNjODEwNDEwIGxlZ2FjeS10cnVuaworNjcyNzkgNzFhNTBlNjc1ZmExZTQ0OGFlZjhiNmRmMmU1YjQzNTQwYTFlNzljMCBsZWdhY3ktdHJ1bmsKKzY3MjgwIDdiYjIwNDYxMmZjNjc2YmJjN2VmZTBlYTYzNGFhNDk4NTlhYjA1YTYgcmVsZWFzZTI2LW1haW50Cis2NzI4MSA4YjliZGE1YjhkNGE5ZDFiYTNhN2EyOWJhM2VmZjdiYmQ1MDQ4ZGViIHB5M2sKKzY3MjgyIDcyMzg5NTBkNWM2MDQwMDc3ZGE3MTVkODFkNWI3NDFjNjNjMmM3MzggcmVsZWFzZTI2LW1haW50Cis2NzI4MyBiZjZhNWJlODI3YjRjMmU2ZDBjYTljYjY3MDllNzA4MDU4MmU0ODZhIGxlZ2FjeS10cnVuaworNjcyODQgMWY3YjZjNDBjOTkwODlhNjY1YjE5ZjE3OTM2ZDM3YmNjYjA5OThjMiByZWxlYXNlMjYtbWFpbnQKKzY3Mjg1IGE5Mzc2YWRjMjg0Y2U3OTBjMTAzMjhiMzZhNzA0ZWQ2Y2FjOTY5MjIgcHkzaworNjcyODYgMDcyMmQ3MWFmYTJmMjg2ZWU0NTFmNDI5MTM3OWQyMTAzOTNkMmE5NCBweTNrCis2NzI4NyBhNDRjZTU1NTZhN2ZjNjMwMjc5MzQ5MWFhMWFkZmZhZTkzM2I0ZWE2IGxlZ2FjeS10cnVuaworNjcyODggZjA0ZGYxMGUyMDUwMTFlOGJjYjRjYjYxMjVlYThkNDU2MjkwODA3MyByZWxlYXNlMjYtbWFpbnQKKzY3Mjg5IGZmYWU1ODM3ODUxY2I0YWFiMmJjNGM3ZDI4ZDA0MjkzMDFkZmUyNGQgbGVnYWN5LXRydW5rCis2NzI5MCAxZTdkMzIyMjc0YzgzZWM3N2M5ZjQzODE2ZWUyZDA4Y2UxZjU4NTQxIHB5M2sKKzY3MjkxIDdiMTg3OTllOTUxOTQ1ODI5NGI5N2E0ZWIxNmNmODFkZTU4YjcyZDkgbGVnYWN5LXRydW5rCis2NzI5MiBmZGM5MzM5NTE5NjQ2ZjVjYjNhYWI5MDBhYWIzMjdkODQzZmFiZTMxIHB5M2sKKzY3MjkzIGNhY2MwMThmYTM0MWFiNWM1Nzk2ZDVlZmY2MmJmZGQ5MmFkMDBiNmYgcmVsZWFzZTI2LW1haW50Cis2NzI5NCAwODhmZGFkZjk2MDlkMTkzZWIxMGY4YTQwZjA5YjUwZGY5MDFmZjljIHB5M2sKKzY3Mjk1IGEyOTBhNTFmZjhlMjdkNzJiOGQxZjFmYjMwYjlhZWM3NjI2MzliMmYgbGVnYWN5LXRydW5rCis2NzI5OCAyZGEzZmNkNDkzNWYxNTRmOTQxODZiMzVjMWU5MTgwMjNlMTNiZmUwIHB5M2sKKzY3Mjk5IDJjYTk2NGQ3MjRkNWZmOWExNjc0Njc0NTE5YjM0MzZkMzgwMWMxZmIgcHkzaworNjczMDAgODQxMzY5ZjM3MzM0ODYxZTkwM2ZmZjM3YWNlOWYxYmMxN2I4MTU5ZiBweTNrCis2NzMwMSBjYjgwMzlkODJhZjNmMTQwZjk2Y2ExMzIxOWMwYTZmMWNmMmFiOGZhIGxlZ2FjeS10cnVuaworNjczMDIgMjQ2NDU4NzA3NzlhYjhjY2EzN2VhYjk2OGFkNDExMjQ1ZTcyYzNlYiBsZWdhY3ktdHJ1bmsKKzY3MzAzIGY0MWNiMjA2ZDA2MWVkMTM1ODY3OGU0MDBjMTk4ZmM2OTlmMjBmZDEgbGVnYWN5LXRydW5rCis2NzMwNCA4OGZmNDVlNThlOTRiNmJhNjU1MmQ4OGRmMjc2MWNjNjZlMjRlYWY3IHB5M2sKKzY3MzA1IGRjMWRiNDZkMGE0NGI5YjlhM2Y2OGI0NjAwZGMwMWY3Y2FiNTM3OWYgcHkzaworNjczMDYgNWZmZDY3ZGY4YzlmMDgxOTg2MGNhMGI1ZjIzOGVmZDVlNjkwZGI0NiBweTNrCis2NzMwNyBlYWRlNDdkZmMxZTQ3MDQ3ODY1ZDVjYWUxYzRiNWY4ODQzNzcxZDcwIGxlZ2FjeS10cnVuaworNjczMDggZjk1ZmY5NmZkNzkyZjJmMWRlMzFlOGI0OWQ3NzE4NjVjODA3YTg2NiBweTNrCis2NzMwOSBiYWMwNDBiNWVmMjJhNDI0NDVlNjQ4ZDhlOTY2MTRjZGYyYWUzNjAyIHB5M2sKKzY3MzEwIDU0ZTVkODUzYjBkZWM3ZTc0ZWYzMTI2ODNhZmMxZjA1MDc1NjRmNmIgcHkzaworNjczMTEgMTU5YTExYjFkMjQ0NTBhNGE1MWE0MWU4Nzg5MzY0NjkyNjU1ZDIzNyBweTNrCis2NzMxMiBlODNhNjBjNjlkNTNmNTU1MWEzMDZlNzdhNmQzOGU5YjExNDg1NDk2IHB5M2sKKzY3MzEzIDM0ZmI2NjZmZjUyZjQxMzRmMzJlZWE2ODU5NWFlNmQ2YmMzOGIwMGMgcHkzaworNjczMTQgN2FhYTNhZmZlY2MxNTMyZTExMDRiYzE3ZjFkODU5Yjk1MTU3M2FiYiBweTNrCis2NzMxNiAzNGJjMjI3OWRjNTZkZmRhYjFkYTMyNzZhNTNjMjYxZjk4YTVhMjA0IHB5M2sKKzY3MzE3IGVkYTQ2N2Q2NWI2NWVmYjIxMWMzZTQ0NzUzOGMxMTgyNjFiMWU1OTYgcHkzaworNjczMTggMjMyN2RkNjg0MjFjY2ZmYzAwNTM4YjdkZjdmMDdkODdkYzc2Zjg4MiBsZWdhY3ktdHJ1bmsKKzY3MzE5IDMyNTBmYjcxYTllMDhjMDZhODZlYWJmMmIxNTBhYWI5ZDNiZGE1MjkgcmVsZWFzZTI2LW1haW50Cis2NzMyMCBiNjRkMDUzYWZkODRkYTkxNDAyOTNjYTg1Njc5ZDAxYzgyNmQ4YWM0IGxlZ2FjeS10cnVuaworNjczMjEgMGJjYWZhNjRlY2NiNDQzNTdkYWNhYjM1N2U1NTRhYWM3YTliNzhkMCByZWxlYXNlMjYtbWFpbnQKKzY3MzIyIGY0MDNkOTQxNTdiMjEwZGNkOTM4ZDJjNjMzZWE0NGMxMWRmNmI2MDYgcHkzaworNjczMjMgNzg0NmZlNDk1MjEyOTAwZDYxMzRhODdlYTQ0YmI4YzFkMWZkNjE3YyBweTNrCis2NzMyNCAwZWI1YWRkMzE2MGEyNDkwOTAxMzdlY2IyMWNhY2NkOGFmMTMwYWMxIHB5M2sKKzY3MzI1IDZhZWYyOGViYmQ2YzExNzRiODZmZDg1MGE3ZTJkNjJiNzdjNjlmZDkgcHkzaworNjczMjYgZGM0YWNmNzUzMjk2MmQzYzliODllYzQwOWVlZGY5YzIyNjdmNjNmOSBsZWdhY3ktdHJ1bmsKKzY3MzI3IGIxODBiMjcxYTdiMmI0NGZkNzZmNDJkYzBlZTFhNjRlZGZhMWZiNTAgcHkzaworNjczMjggMzFkODhmZmZiOThhMTA0YTQ4MzQ5ODIzNjM5YmMxYzNiZjI4MzEyZiBweTNrCis2NzMyOSA4ZjBhMTc1ZjA0YmVhYWQ1ZDQwOTkwMjY2NzUzZmQ2MzljZjA3MDU1IHB5M2sKKzY3MzMwIDNmMmRkYjNkZDE0N2E1YjMyNzI2NjYwOWY4YThhMmM4NDRmZDA4ZGQgbGVnYWN5LXRydW5rCis2NzMzMSAyZDhjMWVhN2Y4YjdlYzQ1ZDhiOTI4MTIyY2IxMGEzMDgxZTAxYWRlIHB5M2sKKzY3MzMyIDVlMjAwN2ZhM2NmODJjNmM0YzRkMGQ0OTRmYTJiMjI2M2Y5ZDBiMzIgbGVnYWN5LXRydW5rCis2NzMzMyBhMGY0ZDQ1ZmQ0NGNmNmYxODc5Yzk1MjIxODhiOTI1ODdhMmQzODQxIHB5M2sKKzY3MzM0IGE0MjIwYzkyZjdjY2Y0MzMwMTY2Y2U2YWUwNTM3ZWMwMDgzMjAxOTcgcHkzaworNjczMzUgMmQ5NzA2OTAxMjQxNzE3NWEzMDgxNWI1MWVmMDA3Yzc3OWZiNjhkYiBweTNrCis2NzMzNiA3ODlhM2FiMGFlOWVhN2Y5Nzk0YWQ4MTBlNzg0MTUzMzUzOTJmNGY0IGxlZ2FjeS10cnVuaworNjczMzcgYzAwOWYwMGE0NTBmZGE3NzRiMTk4MmI1ZDI3NmQxMDMzNWQ2MjM5MSBweTNrCis2NzMzOCBiNmE4MjQ1OTkyMGNlZjBhMjAyOTI3YzMxNWQ1ZTJlY2M2YTY1OWU2IHB5M2sKKzY3MzQwIDEzMzIxY2IyZDc1MjAzMTJmOGQ1MjIzODFlMDk3YTcwYTEyMDgyNjkgcHkzaworNjczNDEgMDMwYTE1MzY5ZWFjNzdjYjNiYzI2OGM4YmFlMWFkM2MwZTYzNzY2ZCBweTNrCis2NzM0MiA1ZjcwNzA2YThlNjcxOGYxYzIyMmUwYjI0ZDEwOTcyZjM5YjYzMjJiIGxlZ2FjeS10cnVuaworNjczNDMgNWZlY2QxZTk1MzI0OTc5MGQzYmM5NjMyZTY4ZjAxMmY3MjY1ODllMSBsZWdhY3ktdHJ1bmsKKzY3MzQ0IDVkOWJlNjVlNzg5MWY3MjA0NTM5ZDQ1MDY2NmE1M2JjYjU2NjNkMGEgcmVsZWFzZTI2LW1haW50Cis2NzM0NSA2MzBjMTc0YjQ2NWU5ODE2OWM0MjhlOWZlMzU5ZTY1ODdiNzA1NGU0IHB5M2sKKzY3MzQ2IDdjMmIxYjUyZjEzNDI4Zjk1NjFjZDFlMTU2NjEwNmFkYWZkYWZiZDcgcHkzaworNjczNDcgOTNkMmRkNjQxYjcwMTk0MzRjOWNiMWYyYzEwOGU0YWJjYjc5YTRhMCBweTNrCis2NzM0OCA4YTNlYWM3ZjljZDY0OTdlYjM1ZGU3N2IzNGY2OTRiYTE2MGQ1ZmU2IGxlZ2FjeS10cnVuaworNjczNDkgNTNhMTI3YWVhNTZlOTM1OTczMTZlZGRhY2Y3NmZhODMzYzVlMzEzMyBsZWdhY3ktdHJ1bmsKKzY3MzUwIGM5ZDBkNGRhOWFjOTdkYzY5N2VjZDVmMDNmZmI4MjMxY2VmMjZjZDAgcHkzaworNjczNTEgN2JiY2EyN2QzNTU5ZTI3ZWQ4NmQ1ODBlYjg1OWE1ZDA0ZjJmY2Y3NyByZWxlYXNlMjYtbWFpbnQKKzY3MzUyIDc1ZTk5MjAzNTFmMjVlMTNkMWEyNTY4MDI2YzdlNWQ5NjNlMjExMmYgcmVsZWFzZTI2LW1haW50Cis2NzM1MyBlNzA0ZWVkZDc3ZGNkZTdhMzMxNGM1ZGY1ZWJmYmNhOGZkY2IyNDlmIGxlZ2FjeS10cnVuaworNjczNTQgZDczMDNhYmNmMDY5MjgyYmYyNGVlZjc0MTdjNDI3OWIzNjBlZjI4NiBweTNrCis2NzM1NSBjYTY3M2JiZGUxYTNkODFhNWI0NGEyZDBmOTdlMDVjM2NlYzFlYzRjIGxlZ2FjeS10cnVuaworNjczNTkgMjQxNjUwM2EzMDc4YjVkZjFjZmU4MTYwMmVhNzA4NWExNjUxNmUxOSBsZWdhY3ktdHJ1bmsKKzY3MzYxIGYxYmIyNDFiYWQyNGJiZjA2MjYyODc4NmY1MmFkZGFkYjM2NzI3ZjIgcHkzaworNjczNjIgNGVhYjM0MDE2MGUwYTIyY2ZmYWYzOTEyNTRiZGVhYWI4YzI3ODU5ZCBsZWdhY3ktdHJ1bmsKKzY3MzYzIDFlOTE5ZDM0Yzk4MjUxNjFiODQ5MTAyYjQ3M2Q4YzAwNzZlYzI0NDAgcmVsZWFzZTI2LW1haW50Cis2NzM2NCA5ZmVhYTZhMWJmMmMyMmJhZTMxYTc0ZWY4NmY2MmQzMTY4ZGE0ZWMxIGxlZ2FjeS10cnVuaworNjczNjUgNzUxYThlZmM1ZDQ2NjJhYTkyZjczMzE4Mjk2MTM2ZDQzN2RhOTA3YSBsZWdhY3ktdHJ1bmsKKzY3MzY2IDk5NTk4YTYxY2MzNWZkN2FmMjJlODI0MTVlOWRhZTVmNGZiODY3ZTYgcmVsZWFzZTI2LW1haW50Cis2NzM2NyBjM2Y0OWFkYWMyZmU2N2UxNmIwY2ZlNmY0MTkyYWUwMDRmMzlmYWIzIGxlZ2FjeS10cnVuaworNjczNjggMDZmYjY0M2Y2NTUzYzRmNGIzNmYzOGQ4ZjM3MzExZDQ4NTZlZDhjYyBsZWdhY3ktdHJ1bmsKKzY3MzY5IGU0OTc2MDkwOWQyYmE1MDZiZDkzMGI3NDA2MTk3NzdhZWQ3OWFjNjkgcHkzaworNjczNzAgYjcxY2MwMDNlZjlmOGE1MTUwYmU4NmI4Y2MzYjg2ZDM2N2QxYjdmOSBsZWdhY3ktdHJ1bmsKKzY3MzcyIGQ2NjY4NmViMTFmNjMxYTdmNGQ0NTE2ZTJkYjg1NDQyNTEyZWYxZTYgcHkzaworNjczNzMgZmZhZDZjMGYyNTJlYjIwODBiMmFmNjYxNDFhODA0ODUxZDE4MzAxYyBsZWdhY3ktdHJ1bmsKKzY3Mzc0IDk2ZjM4ZTM1NzE5NGVjNjg3ZmE0NGYwYzJlODUxMDYwMWQ5ZGQzMDEgcmVsZWFzZTI2LW1haW50Cis2NzM3NSA0MGI3Mjc3ZTY2NWYwMTQ1MmU5YmNlOTY5Njc2YzQwNzJkNGVkNjhlIHB5M2sKKzY3Mzc2IDBkMTBkNWFiMjg0NDBhOTRiNDE4ZDUyMzc5MGVjZjdhMWRlM2QwMDggbGVnYWN5LXRydW5rCis2NzM3NyBmMzdiZjU1ZGI0MTZjYTNjYzBkZTgxMzlkOTZiZGUyZjhjMTc0OTE0IHB5M2sKKzY3Mzc4IDZjMDg3MWYwYzdhNjlkNTQyZmY1MTEwMmRkMTkxY2VmNWNjNzYyNWEgcHkzaworNjczODAgZGZlZGEwZDNkNjM2ZDQwMTczYTcxY2RhM2MwMjMzMDU1ODQ2MDA2NyBweTNrCis2NzM4MSA0Y2YwM2UxNDIwMGM4OWQwNTRkMjg1YmNlOTU4ZmVhZjI2ODU1YTEzIHB5M2sKKzY3MzgyIGVmYjQ5ZGYwZDg5OWRmOWQyYTI5ZjY2MDUxY2FiYzdjZTUwNmM4MzkgcHkzaworNjczODMgMzUyOGI1YzE2OTM4Nzk5Yjg5NWMzMzdiMjM2ZGE4N2JlODU4YmNmMiBweTNrCis2NzM4NSAzMGQwMWE1ZjUxN2VkN2JlNTEyOTM3N2MyMmU2MzllZjhlMGZlOTlkIHB5M2sKKzY3Mzg4IDJkM2YxZDBjMmExMGVjZDU3YWE4ODM4MTNlNTdlMjQzOTQxYzNiYjkgcmVsZWFzZTI1LW1haW50Cis2NzM5MSBkMzdiNGZlNTEzMjg3NTQxZGU1Yjg5NzVjYTg5NzY3YTk0MTg1ZTlmIHB5M2sKKzY3MzkzIDlmZDljZDg1MjYzMWFkNmYzMTM3NzczYWMxMjdhNjY5ZmIyZDVkMjkgcHkzaworNjczOTQgNjhmM2JlYjdlZWFkZjFiMDAxOTU5MWY0MjFlODRlM2QzMWY3OGVhNyBweTNrCis2NzM5NSA3Mzg5NWVhZGE4YmQxYjIyMzI2ZjdhOTIwNzUzZTk0ZGI2YzAxMGM3IHB5M2sKKzY3Mzk2IGEwY2JlNDBkYWM4ZjNmNDc1Y2I3Y2VhOTBmNjk0NDIzOGEzMjczOTUgbGVnYWN5LXRydW5rCis2NzM5NyA1Njg0Y2U5NmU2MzlmN2VlMDk4ZjMzYzBlZDRmZmVmNDZiZGMyZGE5IHJlbGVhc2UyNi1tYWludAorNjczOTggODViMWRlODU1YTEzZmE0YWZmMjA1NjJhZDg2MDE5OTVhY2E2OTQyMSBsZWdhY3ktdHJ1bmsKKzY3NDAxIGRlYjMwNjY5YzM1NWMyOGExYTViOGFhNTY2N2JlNzg4OWI4MjRhM2UgcHkzaworNjc0MDIgNzk3YmQzMzNlZjZiYTIyZTlmM2FlOGYwOWVmY2IxZTgzMjE2OTRkOCBweTNrCis2NzQwNiBhM2E1ZjY0MDRhZDViYTNjZTEzY2Y2ZjNkY2ZhNTI0OTQ0ZDk0ODY5IHB5M2sKKzY3NDA3IDVjYmMzZGQ0NDkxNjEwODUzZDMxODkxOTNjMjY5MzY1YjU3NTlhNTUgbGVnYWN5LXRydW5rCis2NzQwOCAwYTk5NGIzMmRlOWZlNTE2MjBiNDcxYWQ0N2ZkODY1N2JiYWM0ZjFmIHJlbGVhc2UyNi1tYWludAorNjc0MDkgZjgwNDRiOGZmNmVlZWJiYWZiY2VkMDU3OTU4OThmNTU2MWMxMWFiZSBweTNrCis2NzQxMCA4YjE0ZmM1ZTVmM2Y1ZDM5YzM0NzJmZDFiMmE5YjQ4OGEzNmMyZjlmIHB5M2sKKzY3NDExIDM5N2ZiZDZjMzQ3MWEzMTAwMmNlMTAyMjA4YTFhNzg2YzMwZDQ5ZDkgbGVnYWN5LXRydW5rCis2NzQxMiBjNTQ2NDk3YjQyMWExYTJjNTYzNGUxMTVmZjg2ZmJkOGViZTUzMDA3IHJlbGVhc2UyNi1tYWludAorNjc0MTMgYjU4YTQzNTAwMmMxMTFkOTM4MWU4NDhmYjJiZDA0MThmNWY2YmRjMyByZWxlYXNlMjYtbWFpbnQKKzY3NDE0IGZjYWUxNGJjZWE3MzIzNzg1YmVjMzEwNzYwYjAzNGIxYzlmZjg3NTAgbGVnYWN5LXRydW5rCis2NzQxNSAzODFjNjI4MTlmMmVjODI5NzhhY2M5MTJiMDM1NjkwNzg2ZjYxYjdkIHJlbGVhc2UyNi1tYWludAorNjc0MTYgYzUxMjYyYWQ1NjAzZGU5NzJhZGQ3OWQ1YmViOTM1ZTFhMDE0NTk5NCBweTNrCis2NzQxNyAzODAzYjZjNGZmOGYzMjAxMDUwNjdkMjU0Zjg5MzhmMDkzNDk3YjIwIHB5M2sKKzY3NDE4IDA2ZTZjMzlhZDgwMjRmODdmOWE4YTY0NDJiZjhkNjMyYzMzZGQwZDUgcHkzaworNjc0MTkgY2M5ZWZiOWY4ZTU3ZDg0ZDA3MDllYjU0MTkzOGM4M2FmMGM0MWM2MyBsZWdhY3ktdHJ1bmsKKzY3NDIwIGJmMmQxOTI5M2RiNzdjYTNhMGFhYTBmYzJjMTE3YTViMGQ3ZTI2N2IgcmVsZWFzZTI2LW1haW50Cis2NzQyMSBhOTAzNTJlNTljZTYxZDMyZjQzMmQ0ZTljODQ0ODMyYzQ2ZjM1Zjk0IHB5M2sKKzY3NDIyIDE4YWE3MjhlOTUyZDUxMWY5MmIxMTY3YTk3OWVkMjIzMDBlNGE0MDUgcHkzaworNjc0MjMgMGIzYjQ0YjhjNzgyNjI1N2EyNzgxZmJiOTU2OGVkYmRiZThmNzNjNSBsZWdhY3ktdHJ1bmsKKzY3NDI0IDQ2YjVjZjNjYWRlNGFmNzVjNjVlY2ZlMTIxYzA3ZTRlYjdkOGE4NzMgbGVnYWN5LXRydW5rCis2NzQyNSAwZmNmZTE4ZmY4ZjZkNTcwNjhhYTRiNzNlZDg5YmJlMWUxNzE5Yjg4IHB5M2sKKzY3NDI4IGM4YWVkOWEzNmVjYjdmOThjNDgwNzg5ZDM4ZjM3NWUzYWRkZTRiMDAgbGVnYWN5LXRydW5rCis2NzQyOSA4ZDMyOWQyYTM2NGFiNTI1Y2I5Y2YyYzkxMTIwYzYwMTQyMjk2MGQ5IHB5M2sKKzY3NDMwIDA2MDdjOTdhODEyNGI0ZTM4NTFmOGY0YTQ5MTIxNjRkNzcyNjJjYzQgcmVsZWFzZTI2LW1haW50Cis2NzQzMiAyM2I0MzQ4ZmRmNTJmZjZlY2UwNTllYzdkMWIwZDBmNThjZGRiNTgzIGxlZ2FjeS10cnVuaworNjc0MzYgNTYwYjJmNTI5NTJjODdjNGM4MmQ3YzE5MmZjMmJmMzU4Mzg2MjIyYiBweTNrCis2NzQ0MCAwNWMxMmY2ZDE0MDQwOWMxMDk5ODFkNzdkOThkZTg4MmRlZDVkY2MwIGxlZ2FjeS10cnVuaworNjc0NDEgY2MyOTRmYzkwZjZjNGRjZWQ5MTliZGE0ZGNiZTIyNjRiNTczODFkZCBsZWdhY3ktdHJ1bmsKKzY3NDQyIGVmMGM1Y2E0NTQ0MTIzNDRjOTZhNmMyMDI4YjA3NWIyYzNlNTAwMTIgbGVnYWN5LXRydW5rCis2NzQ0MyA4MDM3ZmE3YWNlOWVlYzNjOTBiODI4YzE1MDZkZDFlODU4ZGE2ZWI0IHB5M2sKKzY3NDQ0IGUyOWY2NmZkYjQyYzIwZjlhN2UzZDMyNjQ2MWU2OGEzYmQ1Mjk5NWEgbGVnYWN5LXRydW5rCis2NzQ0NSBmOWFhODdlYjMzNGMxZWRjNDYzYTllY2I3YTE1MzEyM2E4Yjc3MGQ4IGxlZ2FjeS10cnVuaworNjc0NDYgMzU2OWY3YjA5MDI1NmUwYWEwZWNmN2UzYTE0ODk5Njc0ZDE4YTI5YSBweTNrCis2NzQ0NyAyNzdhOGYyOTQ0YjQyMzVhZWVjZDRkNzE1ZmMzMjRiOWEwODA5YWM5IHRsZWUtYXN0LW9wdGltaXplCis2NzQ0OCBiZWYzYzg1YTkwOGQ0Y2RkZDBiMWFmZDYxMDY1NTZiODIyNjg1Yjc3IHB5M2sKKzY3NDQ5IGExZGU5MWFkOTI4ODJkZGI3YjI5ZGU0YmM4ZWIzZGE5ZmRhNGVjZGUgbGVnYWN5LXRydW5rCis2NzQ1MCA3ZmRmOTM2YjMwYmY2ZjJjYWRjYmUzYzVmNDIxNTgyMjZkMzEyMmU5IHJlbGVhc2UyNi1tYWludAorNjc0NTEgM2JmMThiZTdjZTVhNWI0ODQyN2FlNjRlMWI5OGU5NDQyODJkMjQxYyBweTNrCis2NzQ1MiBmMWViYmMxODZjMTEyNzYzZGVlYTE2MTI3ZGY3Y2VkNzA5OTI0ZTllIHJlbGVhc2UyNS1tYWludAorNjc0NTMgOTQyYjRhMmMyYzEzYmU5YWY1OTY2OWY4OGY3YmE0NWVmNDE0MDFmZCByZWxlYXNlMjQtbWFpbnQKKzY3NDU0IDM5YTU2ZDM1NTM3NmFhZmY0OTJlNWYxOWZmNjM1Y2Y0MTU2NWM3MGEgbGVnYWN5LXRydW5rCis2NzQ1NSAzNzEyZDFmNmJmZDU1YjVhNTk5OGJjMDQ5ZWU2MGQzMjI3MGI3YmE4IGxlZ2FjeS10cnVuaworNjc0NTYgYjk2MmQwNGJiN2YwMzM0YWVkMWRmOGE2Y2NlMWNiNmM0Yjc0ZTlmZCByZWxlYXNlMjYtbWFpbnQKKzY3NDU3IDdlZDM4YWExMGRlNmE1MmU2ODY0NjgxYjMzNGVkYTMzYjcwNGY2YzkgbGVnYWN5LXRydW5rCis2NzQ1OCAxODlkZWYwNjI1M2M2YTdhOTcyODViZDQ3ZTk1NzQ3YjVhNzRhZDJkIGxlZ2FjeS10cnVuaworNjc0NTkgMDFmNmVhN2Y3YTc1ODFmNGE0OTRmYzlmNmFlODhkYTg0NTJiMDNmYyByZWxlYXNlMjYtbWFpbnQKKzY3NDYwIDc1YThjYWEyNDE4NjU5NTllNWI2NWZmMzdlMmQ1YTk2ZjM5MWVhMjggcHkzaworNjc0NjEgZWQ4YWRmZWYyNmM2NWIzYTg4NmM4M2IwYmQzNGE2MjY3ODg4MWY2NyBweTNrCis2NzQ2MiA2ZTg5MTM1M2NlOTY1OGViZWJkM2Y2N2U3OTBjMjlhYzQzMmZhYjBmIHB5M2sKKzY3NDYzIDY4MTczM2I0OWZhMjM5OGFmOGZiODFmOThjYjNlMTYxZWI2YjU0YzEgbGVnYWN5LXRydW5rCis2NzQ2NCA2MGU3NzVlYWFhZWVlOGE4ZWVjNmYxYzVjNjk3MjMxY2JlMGY5MTJiIHB5M2sKKzY3NDY1IDNlNTk5NWY2YWI4ZjZhNmM0NGVlOGViNGJhODcyOTAxMTY2NjlkZjMgcHkzaworNjc0NjYgYWIxMmQ3MTZhN2E4MWVkNGEwNGJhNjcwMzAzOTNjNzczNzQwMGM1YiByZWxlYXNlMjYtbWFpbnQKKzY3NDY3IDdmOGY3MWRjODZjNzQwOTVjNmE5MWE0MWUzZjc2MjNmM2YxOGU4NzcgbGVnYWN5LXRydW5rCis2NzQ2OCAwNzMyZDEzZWQwNjc4YWQ4NTY1YjhlOTA0MDAyOTQyZGI4MDM0MWI4IHB5M2sKKzY3NDY5IDBmNzcyNWUxOWJjM2I5M2YzMjgxODY0MjUwZmJmNTYyODA4MTAxOTAgcHkzaworNjc0NzAgNDQ2MWYxOGYyNjQzYzhmYzk5ZjEwMmI0MWUxNzkwNzE4ZDk1MTE4ZSBweTNrCis2NzQ3MSBiMWQyYWY1MmQ4MDE1MzRhOGJkODJiZTk3NDRiZGRhZTM0NGZkZmZkIHB5M2sKKzY3NDcyIGVkODQ3NmQ3ZjY0YTVkNjE2NTE4MTA2NDJkN2E0YjM0NGVjYTM2Y2QgcHkzaworNjc0NzMgMDljMmQxNWU0ZDFkYjYyYzk5ZmExMzU1MWZkNTdlNzBiYzQxN2ZmYSByZWxlYXNlMjYtbWFpbnQKKzY3NDc0IGMxODJlM2I5ZTlmYzNhYmRmZDUwZGE1YjZmYzViYTdmN2RkY2Q2OGEgcHkzaworNjc0NzUgNDBlYzZkMjg5NTUyZTdmMzM5Y2RmMDc3ZjU5NzMzNWU3MjcwZDcwNiBweTNrCis2NzQ3NiA2YTEyMWYwNGJjN2RmNmEyNDlmYTk5OTM2MDM4YjFlN2JmMGE1MTJmIHB5M2sKKzY3NDc3IGQxNzJkZDhkOWUwOWViZDg4ZjUxNDgxZWM3ZDg1OTAzYWI3NzllZjcgcHkzaworNjc0NzggODZlZTJlMGQ0ZDQxNTQ5NTUwNzAzZmI0YzdmMDJhYjY3ZTQxMWU1MyBweTNrCis2NzQ3OSA3OGIwYzhkZTNhOTg4MzgyMTMzODFlMDY1NDZiMDRjYTE0OWMzODg0IHB5M2sKKzY3NDgwIDljODFjM2I3MTExOTUyZjE0ZWEyOGViMzIxMDYxZTJhNDI0ZDk5ZjUgcHkzaworNjc0ODEgY2RkYTIwOTNmNmY1MzA4YjYyYmQyOTYzNDk1ZDEyYjY5OTE1MzUyNCBweTNrCis2NzQ4MiBjYzVhOTVmMGY1NmE1MzRmNWZiNDMwZTkwODBiNzI3ZmQ3MzQyNWQ1IHB5M2sKKzY3NDgzIGM4MjZlNDYyZmE1MWY1M2YyMTVkZmJmNjYxNWEyZWViN2RiODBhM2YgcmVsZWFzZTI2LW1haW50Cis2NzQ4NCA1ZDRkZmVlZGQ1MTJiMzE5NDQzMDhkY2M2OWZmZjQxNDEyMzAwNWUxIGxlZ2FjeS10cnVuaworNjc0ODUgMDQ1MjZhMjIyY2FmMjQzYjM1NGE1NTBkMTNkMTA4ZjY5OGU1Mzg5OSBweTNrCis2NzQ4NyBjZjQ3ZjdjN2RkYjMyNmUwNjhhOTQ2OGJjNGE3MTg3YTA2Y2ZiODU3IHB5M2sKKzY3NDg4IGQxZGUzMDJlNmVmYzUzODYxNjgxMTY3MjFmNWVjYjNkMWVjZGEyOTggcHkzaworNjc0ODkgODFjYTdiYjg4MDRmMDJjNThjYjk5ZTNjNjE5MjE0M2MzOWFhMDhmYyBweTNrCis2NzQ5MCAxMzdiNTBlZTk2ZDVjMWFkMTgwYWU2NDA2OTdhOWNkNGEzZDRiYWZiIHB5M2sKKzY3NDkxIDU0ZmVhYzNkMTE2OTA2NDk3NDM2YzU3YzdiODg3ODIzNDU2NjdlOTggcHkzaworNjc0OTIgZjQ0N2ExZGUyZmFlOWIwMzMyZjk3MDM1NTRkMmRiMzA0NzMyOTQyZSBweTNrCis2NzQ5MyA4NDUzMDVhM2RhMzYzZWJiZDhmZmMzM2EyMjQ5N2NlYTE2ZTZhMzFmIHB5M2sKKzY3NDk0IDMzNDQ4MDRmMzI3ZDZlNWI1ZTFlMmVmYTNlZTA3OTYxYThhMDZiNmIgbGVnYWN5LXRydW5rCis2NzQ5NSA2YTRjYzZiYTFjMTZhZWNiYjJlOWZlZTEzZmQxZjhhM2E4OTQxZmMyIHB5M2sKKzY3NDk2IGEzZDAyOTliNGIxZGFmYmFhODlmNzU4ZmNkMzRjNTQ4NWViNDdlNWYgcHkzaworNjc0OTcgYzZhNGEyY2M1NjEyNmEzOTc0NWVlN2RmODA3MmFlMDkxMjdmNGE0ZiBweTNrCis2NzQ5OCA1ODhhOTVlZjc5NzE3NmE1NTc4Y2MzNDEzMjlkYWJkN2FiNDFjZTRlIGxlZ2FjeS10cnVuaworNjc0OTkgMTA3ZDQ1MzE3OWJlMmVkZTdlNzhmN2FhODY3OGMyMmM2MjA1YmQ0MyByZWxlYXNlMzAtbWFpbnQKKzY3NTAwIDUyMzVkY2RhOTA3NmYyNWE5Y2RjYzcyNmE5YjNhYzM5NDc5MWFiZGIgcHkzaworNjc1MDEgMmE1ZWMwNjBiYjk5ODE5YjZkNWQ1ZTUxYjYwZDhkYmE5N2I0YTYxYyByZWxlYXNlMzAtbWFpbnQKKzY3NTAyIDU5YWRmZTQzNjk4ZGM4NDhkODMxMTUyN2MwZGUzNDQ0YmU2ZmRhOTAgcmVsZWFzZTMwLW1haW50Cis2NzUwMyBhNjUzMjE0NjAyNzA3YmRlMGU1MTA2NGQ3Yzc3ODljZTI5NWU0NDMyIHJlbGVhc2UzMC1tYWludAorNjc1MDQgOTgwN2I3OWExNjJlNmZmYjBiYTQyZTJjNjk1ODQ4NDdhNmE3ZTNjMiByZWxlYXNlMzAtbWFpbnQKKzY3NTA1IDU4OWM4OGIyMGI1YjdlMDA3NzkxMDFjMTdkMTQ5MWEzM2E4ZmI5YzUgcmVsZWFzZTMwLW1haW50Cis2NzUwNiA2OGE2ZTNhYzQxYzE4YzhhMTkwYWRhM2FhMTc2NDRiNjEwZGUyYzU3IHJlbGVhc2UzMC1tYWludAorNjc1MDcgOWEyYjA2Mzg3MGEzMDkxZjIzMDE5ZjdiY2NjOWQ0NWE2NDEzZGI0NiBweTNrCis2NzUwOCA3NWI4ZWUwNjJiMGQ0ZmM5MTdiMTM3MzkzYTI4OWEwZjU0OGMxY2Q2IHB5M2sKKzY3NTExIDg3OGQ0MDQ2OGM0ZTdkMmQxMjkzZmFiNmE2OTY1YWYyMWIxNGY5MjkgbGVnYWN5LXRydW5rCis2NzUxMiBlMDdhMzIyZWY1OTM0Y2UzNWI0OTY5OWUzOTM4ZTIxZmQzMTI2MzEzIHJlbGVhc2UzMC1tYWludAorNjc1MTUgY2FiZjMwM2U3ODdhYTVjZDcyMDliNDBlM2IyY2FiYTNlZTc1YzVhNSByZWxlYXNlMjYtbWFpbnQKKzY3NTE2IGM5ZGE4NWMxOTcxOWI5NTQ2ZGE3YmY2ZTYzY2FmMWMwNWNkNjQ5MWUgcmVsZWFzZTI2LW1haW50Cis2NzUxNyA1MzE0NTdjZmEzZTI0M2UxZmQzMDg1NDk1NmU1NTY0YTU4MTU1NmJiIHB5M2sKKzY3NTE4IDcxYWNhODUzYjI0NDIxMDY2ZmQ0OTQ3MDM3YTBiZjM1MTgwY2EzYWYgcmVsZWFzZTMwLW1haW50Cis2NzUxOSBlNzkzZmMzYzhhYmU5NWUzMTk4Zjg0OTFjNTQ5Y2JlYmZlNTE0ZWM5IHB5M2sKKzY3NTIxIGYzYzQ4NWUyYjQ1MTM2NjU3ODNkYjkxOWI5OTRiMThlYTNjMGJkM2QgbGVnYWN5LXRydW5rCis2NzUyMiA0OGYyOWQ4OTRiM2NjN2FmYmFlYjRhZjUxMTMwODFhNzY0YmUyMzI5IHB5M2sKKzY3NTIzIDQyNTYwMzc0YWIyNTFhYmFkMzQ3M2UzZDBkMjg1MjE4M2UzNzczNDggcHkzaworNjc1MjQgMDdlZmNlMTA3YWFlZjJlOWQ0ZWNiOTFlZDIyMDZjMTg2OTQ4YjU4YyByZWxlYXNlMzAtbWFpbnQKKzY3NTI1IDg1NmZjM2VhMmRkYjg3Mzk3YmNjNGEzODg2ZmMyMDEzOGM4NTlmMDMgcHkzaworNjc1MjYgNzUyMDdhMGE5ZTE1ODQ1MGUwNTk5NzViMDEyYmI3ZmQyZjYzMWIxZiBweTNrCis2NzUyNyA0NThkN2JjMTI5NTA5MTk3OWFkYjY4Mjg0ZWExMWFmNjE1ODU5ZTFiIHB5M2sKKzY3NTI4IGU4YWIyNzU4MmIxODQzZjE4MmEwNDdhNDU2ZTJlMWM5OWNmNjQzYzEgbGVnYWN5LXRydW5rCis2NzUyOSAzZTY1MDAzMmE1ZDFjYmIxMjIxNDQyYjljZmQxMmE3MjhkNDljMGFjIHB5M2sKKzY3NTMwIGMxMTVhZDU4ZWFkZmU5YTBmYmQ4YjY5NjM4YzJlMTMyYzkwMTAyZmUgcHkzaworNjc1MzEgZjZlNTNjMzBhZTk2YzViYzFkMzRhMDk0MDVmMDRmYzkwYTM5NjI2MCBsZWdhY3ktdHJ1bmsKKzY3NTMyIDIzMTY4MDI0NGMxN2IzMjMwYzVjMGE5MzhjZDdlN2M2M2ViYTNlMTIgbGVnYWN5LXRydW5rCis2NzUzMyA3NGJmZWIzNjRhMjNiMzdmZGIzOWQ2MTBiMWEwNjVhYzk5ODZmYTAyIHJlbGVhc2UyNi1tYWludAorNjc1MzQgMTAzYzY4Y2MyOWU1ZTJmNjRiYjI5ZjU1NDk5YTg3Y2FjYmU0NDFhZCBweTNrCis2NzUzNSA4OWU3MzhjNzkyYzBiYzhkYzE2MWVmZGNjOTZkOGNiNjUzZGYxNmFjIHJlbGVhc2UzMC1tYWludAorNjc1MzYgNDc5MGIzMWQ5MjU3NzdmMmYxYzY2ODNmNTY0YjNiMWE5NTQxYjc2MiBsZWdhY3ktdHJ1bmsKKzY3NTM3IDlmOGU1MWZkY2VhMGZiYzY2YmNiOGQ4MWRiZDE4NTFiMGQ5ODI3NjUgbGVnYWN5LXRydW5rCis2NzUzOCBjZDVmNTZhODFjY2UxZDE2NWUzZGZiYzViOGE2MGM4MDkwZDBhOTY0IGxlZ2FjeS10cnVuaworNjc1MzkgM2VjYTVhNzM2NTE2MTBhYTkzMWUzYWRlOGI3YTczZGY3N2ViMGIyNSBweTNrCis2NzU0MCAyN2JhMDk5NTc3NTE0M2ViYTkxNDVhZDg1NzdiMmYxOTE0MmUwZmM3IHJlbGVhc2UzMC1tYWludAorNjc1NDEgNjkyOTU2M2RhZDAwM2Q2NTFmNjBlM2VhMWM5NjgyNzRjNGQ2Y2EzZiBweTNrCis2NzU0MiA2Nzg2MDdjZTEyMmZhODc3N2MwNGNkMjVmMDg3Nzg1ZTM5MTA3MmJkIHJlbGVhc2UzMC1tYWludAorNjc1NDMgNTg5Y2RlNjE0YjViZmU0YmM2MWQ2YjA1NWM2YzUyMTRjN2ViYzY2MSBsZWdhY3ktdHJ1bmsKKzY3NTQ0IGRlZDk5ZTRmNmIzZGJjMTA1MjVlODYwMzE3YmY4ZTAwNGMwZDI1ODAgcHkzaworNjc1NDUgYTlkMDA2N2NiZWE0NjM3NWNmMjMyZmJiNmJjNjBlZWY5OWNlYjQzMSBweTNrCis2NzU0NyA1NGMxOWExYmJhYmQ5ZTVlYzk5NWUwODM3MDdkMmM1ZDNjYTkyOTQxIHJlbGVhc2UyNi1tYWludAorNjc1NDggNGUxM2IzN2IzNzIzYjkyMTczZDgwODhjNDgzMzhlNzcxY2Q3YTczMiBweTNrCis2NzU0OSA5YmI4NmY3ZmI5NDQ3OTVhZjlmOTNmYzExMDViOGI4YjhlYzc5NzdiIHB5M2sKKzY3NTUwIDhkZDM1NmIxNGIwZDdkNTZlMTI4MzM3NzE3NDAxMzc5YmM5YjlkOTkgcHkzaworNjc1NTEgNzI5ZGI5NDY0ZWY2ODhhYTMzYmEyYzc5Y2Q2YjE5MjhlYTU3MjhjYSBweTNrCis2NzU1MiBiZGIwMmVhZDc1OWI5NzgzYzZhZjJkYmNlMGU2NTI4ODlmYzY2ZmU0IHB5M2sKKzY3NTUzIDg1MTkwZmYyMjRlMGM0NzFhNmExNjJiYWRjOTNjNzU2MWQwMGRiYWQgbGVnYWN5LXRydW5rCis2NzU1NCBjMzE5ZDI0NzRmNTdlMGZjYzhmZTU4YmFmMDIxMmY0M2UzYzMxMTcwIGxlZ2FjeS10cnVuaworNjc1NTUgMjc5NDZmMWViOGZhNTc3ZWJlMjhmNDc2ZDRjYmUwMTk0NmZhNWI2MCBweTNrCis2NzU1NiBhMGNlYTAxZWNlNTNjZTZlYWZmNjNhOTE3MzU1ZTA1NjJlNDA0OGI5IGxlZ2FjeS10cnVuaworNjc1NTcgNzY1OTg0MWQyNzE0ZGVkMGRjZmZmOTJhNTM5MjY3ZTRjNDcyNDAyMiBsZWdhY3ktdHJ1bmsKKzY3NTU5IDg2ZDhhNTIyZjQ0MDczZDEyMTEzNjQyMmE0NjRlOGQ2NGU4ZGRkM2UgcHkzaworNjc1NjAgYjQ3YjdkOWM1OTM2MDZhN2EwYTFjZTYwODUwNzM3ZTcxNjFjMGYxMiByZWxlYXNlMzAtbWFpbnQKKzY3NTYxIDg5YmMzMWUwNjQ4OTBiZjhhNWM5ZWE1ODViMjg1NWM2YzFiNGYwNDIgcmVsZWFzZTI2LW1haW50Cis2NzU2MiAwMTM3MTg5N2NiMTkwMDM1ZDU2YmJmNGU2M2QyMWI3YmNlNTBjNzRjIHJlbGVhc2UyNi1tYWludAorNjc1NjMgNWVmOGI1YTc0ZWZhMjFjZGI5ZGE1ODdhNWEwNDc1MGNhMTJlOTQzZCByZWxlYXNlMjYtbWFpbnQKKzY3NTY0IDg1OWY1NTBiNDAwM2FjYTFkMjZmZDRlN2I4N2JhNDA4YzBkZTRmYzYgcmVsZWFzZTI2LW1haW50Cis2NzU2NSAzYzdlZWYxODdiZWEzNGRhYWQxZmZhMzNkMWVjMzhiNDE1ODJiYTFhIHJlbGVhc2UyNi1tYWludAorNjc1NjYgZjA4ZDE0NDhiOTBmZjVkNmMwODUzMGZlOTBlOThjOGZiNjNlYTg2ZiByZWxlYXNlMjYtbWFpbnQKKzY3NTY3IDZlNTFmZTFiN2VkOWVhNTQyZmEyY2U2YWU2YjM5MTA0YmMzODg2ZWMgcmVsZWFzZTI2LW1haW50Cis2NzU2OCBhMTcyZWFhNGQ1ZWMxMDQ5NTNkMGMxZDNkYmEwYWRjZTM3NjIyNTFhIHJlbGVhc2UyNi1tYWludAorNjc1NjkgMTFiZjU5ZmUxMGI5MjQxMDdiN2RhNTJlY2Y1MjYyODMwYTQzZTE5OSByZWxlYXNlMjYtbWFpbnQKKzY3NTcwIDJlMjZlODIxOWFhNDIwYzU0ZWI1YjA0MGYxMTAzYWY1ZDdkNzZmYzMgcmVsZWFzZTI2LW1haW50Cis2NzU3MSAzNjM2ZmU5NTczMmMxMzdhMzE0Yjk3ZmZmMWE2ZTJmYmM5OWUyMDU5IGxlZ2FjeS10cnVuaworNjc1NzIgMjBhYjIyNjBkYzkzYmMwNzJkYjQ3ZGFhOTQyNjk3MDUxMzkxYWUzMiBsZWdhY3ktdHJ1bmsKKzY3NTczIGM0MzRiNzcxNDc3YmZhMWI2NDc4ZjFiMzk0Y2M0NTM4YjU0MTM0ZjMgcmVsZWFzZTI2LW1haW50Cis2NzU3NCBiMzhlYWI4Yzk5MDRkYTdmMmJkZjcxNmJjYjAxNGI1MmY3ODRjZjdmIGxlZ2FjeS10cnVuaworNjc1NzUgMjBjZDhjZjYxMzczZDkzNTdkM2VlZjlkMzY0ZDhlNzczZjUwZWM4NCBsZWdhY3ktdHJ1bmsKKzY3NTc2IGM0OWQ2ZDdjMTgxZTFmMmY0YjljZDZlZWJiOWQ0ZDdmNzNiNTU4OWMgbGVnYWN5LXRydW5rCis2NzU3OCAxMDBlNDE2MGFkZmJhMjlmM2JjMDI5MmI0MDYwZmNlMDFjYmNkN2Q5IHB5M2sKKzY3NTc5IDk0YjRmODhlNWY2YmU0NDQ1YjVlNGNkZDA4NDEwYzc2NjUwNGMxZTQgbGVnYWN5LXRydW5rCis2NzU4MCAwMDc5NjQ4MDk4MDNmZjNjZDdlZjBmYTVlOTI4ZDE2N2IwMzIxOWYxIGxlZ2FjeS10cnVuaworNjc1ODEgOTJjYjZlNWViNDNjZTYxZjI1OGEwZTAzYzk4MjY3MDc5ZGZjM2RlMCBsZWdhY3ktdHJ1bmsKKzY3NTgzIGEzYWI5NTM0NWI1MmIyNGMyYTk3NWVkZDMwYjU4MjQ2MTU2ODcyOWIgbGVnYWN5LXRydW5rCis2NzU4NCAwNTUwNDU4MmNlZDY3ZWQzZjI4MDI0ZDliNjZjNjliYmYyNTRjZmNmIGxlZ2FjeS10cnVuaworNjc1ODUgYzA2MTgzYjJkMDZmNDkwNDM0ZGVlZGQ5NzI1MTdhZTRiYTMzYzZmNiBweTNrCis2NzU4NiAwOThkYmQ5NzMxNDc3YzVjNjQ2YjFmOTJlNWM2ZDdiODNlNzBkOTA1IHB5M2sKKzY3NTg3IGZmMjI2M2RlMGQ2ZjRhYjViYmM5NTZhY2FhODFkNmFlNmE1MWUzMDggbGVnYWN5LXRydW5rCis2NzU4OCA3YTkyYTE2NGZjMTJmM2M0ZGQwMDA3Nzc0MjUyYjZlYWM2ZjQyNTlkIHB5M2sKKzY3NTg5IGRlMzA5NGJiMTQyMWQ3ZDY3YjdmMWUwNGNiYzBmNDk3ZmY4MGUwNDQgcmVsZWFzZTMwLW1haW50Cis2NzU5MCA1N2I1YzQ2MzlhNWQyM2Y0ZWNmNWVjMTQzZjQ3ZGI4NmVjN2Y2MWFkIGxlZ2FjeS10cnVuaworNjc1OTEgYzAzMDFiNTQzMGQ1MjRiMzNjMzQ0NDMyOGY3NWY4MzBlNjMzMWFlMyBsZWdhY3ktdHJ1bmsKKzY3NTkyIDIwYTFjY2FkZGNhZWVlNzc2MDhhZjZiYTUwZjAyOGFjN2ZjZDExNGYgcmVsZWFzZTI2LW1haW50Cis2NzU5MyBiYmIxMDFhNWY4Y2NkZTVkZWM1N2Q1MzkwMmI5YmZjODQ5ZTE5YmQ5IHB5M2sKKzY3NTk0IDY1MWRmYjM0MDVkMjE4ZjRiYzE2MDQwYjJkMDZkOWYxM2RjYTBmZjUgcHkzaworNjc1OTUgNjI0YjllYWVkYjgwZjA5YWFjYmJmYWE4NzM4OTA2NDJkMTU2YmQ5ZiBweTNrCis2NzU5NiAyNWYyMjJiZWZlYzRiZGFlZWIzYTViYzk1ZjUwYTg5ZmM0YWJjZDU4IHB5M2sKKzY3NTk3IDdmMDgyMGQ3MzI5OTM3YTUwNDM5NzMxNjNkNWFlZTc2MjI0OThmZTggbGVnYWN5LXRydW5rCis2NzYwMCA0Yzk4NDRjZjJhM2Y3ODRlMDNiYTIxYTU2MjE1MjNkZWMzM2M1NzM5IHJlbGVhc2UzMC1tYWludAorNjc2MDEgMWYyYTNiMTNlODZkN2M0YmE4NzA3M2UwMThlNjBjZmQ0NzUzZmIyZSBsZWdhY3ktdHJ1bmsKKzY3NjAyIGFiYTJjZTE2M2I3MThkMTFhYTNjYzc4YjA3NjJjMDg2NTM1NDJjOTIgcmVsZWFzZTMwLW1haW50Cis2NzYwMyBiMDFkYTI2YzRiZjk0MDBkN2UxMTAxNDRlZjE3OGJmOTY4ZmE2NjU4IHB5M2sKKzY3NjA1IDgzMjNmMmRmNTYxNzQ3NDZkYTRhNTRjYzZhYzY1MzNiYmUzMThhNzcgcHkzaworNjc2MDYgMmM3OGY4MTVlMTkyYWJmZjZlMTQyMzU3ZjA0MzNhODdiMTYwNmE0YyBweTNrCis2NzYwNyBhYzQyYThmNzVmOTI1Yjc2Yjk3ZjliZTBiNWFiNzc0YmJiZjgwZTcyIHB5M2sKKzY3NjA4IGE5MDY4MjAzYWZkNWMwMDNhNDBlNTU0ODE4NjJjODAyODA4NmYwN2UgbGVnYWN5LXRydW5rCis2NzYwOSA3YzNhZjMyMDBlMzRiNzI1NzcxYmFjNzUwNTM0NjM1NDRiNjU5NGMzIHB5M2sKKzY3NjEwIDY3Y2U3NDVhNzQ3YTg4NDQxNjQ0ZDY2M2NhOTZmODg4ODllM2U0NGMgcHkzaworNjc2MTEgYmE4ZmUzYTQwYTViZjczZDQ1MzI0NjQyYmQzZjU1NmM2OGFmNzEwMCBweTNrCis2NzYxMiA2MTk2MzU0MWNiZjViZDlmYmY3NTJhMjY2MTg5NWY4MWZjNDE3MGIxIHB5M2sKKzY3NjEzIGUwMDczYjc2NTBjYzNjYWU5YjcxMWNjYTFjMDU1YTNmNGNjNTZlZWQgcmVsZWFzZTI2LW1haW50Cis2NzYxNCBkZDVlMWEwNDJkYmE0ZmJhM2M5NDBmNzU1YWEyZjdhZjkzNjZiYTk2IGxlZ2FjeS10cnVuaworNjc2MTUgMGJlMTAzOTEzNDdiOWNkZDBlZmVjNTcyYWRhZjY2ZDk0MTk2YzZkMiByZWxlYXNlMzAtbWFpbnQKKzY3NjE2IGIxMmQ2ZjYwNjYxOGFiZmVmZGE0NTdiY2NjZGY5ZWY3YzY5Yjk0NTkgcHkzaworNjc2MTcgY2UzNjM4ODcyN2E3OGI3NDRlMjNkYzczNTVlMzEzZTdlZTljM2RkYyBweTNrCis2NzYxOCA1MmFkOGE3MjQ3MmU4NDY2Y2MzNmU1NzE3NWNiMTVlZGQ3ZDZkNDI2IHB5M2sKKzY3NjE5IDEzNDhkYzI0NGNhMzRiN2I2NTFiNzkxMmZkNjZkYTMyNTEwODYzNTggbGVnYWN5LXRydW5rCis2NzYyMCAzZGU3MjBjZDE3NjZhNTJlM2FjY2IwYmFlZmEyZGIzMWMwMGI2YWYwIHB5M2sKKzY3NjIyIDZkYWIyNTg3NTJjMThiMDRhODdjNjJiNWI4OGM5ZWQ5ZmYxNzE4YmMgcmVsZWFzZTI2LW1haW50Cis2NzYyMyAxNjkzZmQ5NGQ4MjlkMWYxMDc3NzFjMzRkODkzYjExMWY4Yjg1ZjYxIHJlbGVhc2UzMC1tYWludAorNjc2MjQgNGI5YWQzZTc0ODNlMzVkMDE4YjZjMzUxYWIzYzM0NzU3MzVhZjI1MCByZWxlYXNlMzAtbWFpbnQKKzY3NjI1IGVmZjRhYWI5NTg0Nzk1YTExMGIyMmQ5MjIwYzg3NzQyNGJjZDc3YjcgcmVsZWFzZTMwLW1haW50Cis2NzYyNiBlOWY5M2UyZjhmYmNhOGZmOTg1NGYyMDY3N2NjMTc5NDczY2I3OGZkIHJlbGVhc2UzMC1tYWludAorNjc2MjcgYjE0ZjU4N2Y1MTBlNjk4MjAxYWQwMDAxNTMyMjM5YmM4MzJlZGFiZSByZWxlYXNlMzAtbWFpbnQKKzY3NjI4IDBmZTQ5YWVjMjU3Y2JhNGViNTRiZDAzNjE3OGZhMjA1OTEwYzI1NmYgbGVnYWN5LXRydW5rCis2NzYyOSA2YWEwOTg1YWJiYThjNjg0ZWM2MDk1MTEzOWM4NTk4M2NiMzRkYTEyIHJlbGVhc2UyNi1tYWludAorNjc2MzEgNzg3NDM3NzE0MmY2NGMxYWQzYjRmMDc1NDQ5MDI3Y2I1OTQwYmFlZSBsZWdhY3ktdHJ1bmsKKzY3NjMyIDVkMGU5M2YwMzk4YTNjZjRjMGZhZDRmOTMyZGQzMjdlZDQ5ZjRiY2QgcHkzaworNjc2MzMgYWU5ODY4MTA1OGIyNDdjYTMwYjViNGE0NWQ1NDNmZjY4ZTE3NTZmZiByZWxlYXNlMjYtbWFpbnQKKzY3NjM0IGVlYzkyNTJiM2Q0NTQ4MDE4YmFiZDE5MjczMjBhNjY5NTQyYjBkYjQgcmVsZWFzZTI2LW1haW50Cis2NzYzNSBkYWJlZDY5ZDhhMmFiMmNkMjhhNzI4YThkYWQ0MTc2YWFhYmY5NWZlIHB5M2sKKzY3NjM2IDE3MGE5NzY4ZTdhZWVmOTRmZTgzOGRiYTVkYjg5YjhlZDUyNzI5YWQgcHkzaworNjc2MzcgMTU4MDdlMjYyZWJmMGZhNThkMzlhMTAwMTQ3ZTY2Y2VhMjdmMGNmZSBweTNrCis2NzYzOCBiOGJlOWQxZjBkNDU1ZDM4YTY4YjcyZjY5ZDk1ZjU4MjhlMWMxOGY3IHB5M2sKKzY3NjM5IDIxYTdlOGMxMTcwNzI2MmQxMTJjODVmY2IwOGIxZjYxODRmZGVjMWEgcHkzaworNjc2NDAgMGQzZGViY2I4ZDQ0OTE0NzA0ZDMzY2RkNGU3YThlZTJmZjBkOGEwMyBweTNrCis2NzY0MSA2MGVlOTAxYjczNTI5OGU4MmFhYjgzMmQzZDI4MGRkMTZlMDI5YjRkIHB5M2sKKzY3NjQyIDAyNGE5ODk3YzY1MTBhY2Q2NmYwM2JlYTgzZDVhYjZlNjkwN2ZiMjMgcHkzaworNjc2NDMgOTJjNzM0ODNjMWY3YTVjMjA4ZjYyYzNiNWI0YjVmMGIzZGViMzIzNyByZWxlYXNlMzAtbWFpbnQKKzY3NjQ0IGM3YWJmYWI0ZGNkYjk4OWVjNTI1ZWNkM2NhOGZlMmZlYmRhNmI5MDggcmVsZWFzZTMwLW1haW50Cis2NzY0NSA5MTcwMGQyMTIxYzgyZDNhODU1MjEwZDczZWJlOTRkYjc5MWM1ODI2IHJlbGVhc2UzMC1tYWludAorNjc2NDYgNjNlZTZhMGY3MzU4OTk1NGM3MGVjOTFiMDZlYmY5YTQzNWY4YjdjNCByZWxlYXNlMzAtbWFpbnQKKzY3NjQ3IGE4NmNkZjQ5YjgyMTQ0NjIzZDNjNGVkYzA1Mjk4ZmQ3ODVmZjM5NDkgcmVsZWFzZTMwLW1haW50Cis2NzY0OCAwMDliNDY2Y2M2Y2E5NDUyYThlNGY2ZjcyNTE0ZGI3MDc5OWE3ZDVmIHJlbGVhc2UzMC1tYWludAorNjc2NDkgZTA3YmMzNzk4OTgxMjVlZjBhNTIzYmFhZTA0YTQ2NDA1ZWRjYzJhMCByZWxlYXNlMzAtbWFpbnQKKzY3NjUwIDgyMGMxMTJjYzJhODY1ZjdmYmNjNjkzNTliMmMxMWY4YzBmNDdjZGUgcHkzaworNjc2NTEgNzI1MTkyYzY0YzI4NDkyOTcwOGE0ODhlNTkyN2ExYmU1MWRjNDg1ZiByZWxlYXNlMzAtbWFpbnQKKzY3NjUzIGM4YWEzMTU0ZGIwZTM2MmM4NDNlYjhlNjI4YTU0YzE2ZjM0YmVlMDAgcHkzaworNjc2NTQgYTllMzAyNTBlZDIwNjdmZmU5YTJiNzM2NGUyMzU4ZWUzNTdhYzg1OSBsZWdhY3ktdHJ1bmsKKzY3NjU1IDllMTFjOTJkYTQ3NmNlZDVjODczOWYzYTIxMDhjM2FjMzE1YTc5M2IgcHkzaworNjc2NTggZjRiMTZjMDJkMWY1OWU2M2RlNTg2Y2UwZmU4Yjk5M2EwYTk4ZThkYyBsZWdhY3ktdHJ1bmsKKzY3NjU5IGRjYTU3Y2IwYzIwMDFiMGUzZTkzMDVjZmUxNzhkZWJmZmFiYTBlNDkgbGVnYWN5LXRydW5rCis2NzY2MCA5OWRkMGQwMDcyNWE1OTVmOWRkZTVkMmM5NjMxZjZmYzc0Y2Y5ODc2IHJlbGVhc2UyNi1tYWludAorNjc2NjEgZGNhYzg4NWQwMGYxZGE5YWY4MmIwYzdiNjg5MDY1M2NhYTZiOGQzOCBweTNrCis2NzY2MiA0NjNiZmEwNzMwODEwMGExOTg2NjExZGY5NDM0MDllNDI2OTBmYjRmIHB5M2sKKzY3NjYzIDhiOWQwOGRjODUwMDQ4YjMxNjc0NTJlZDVkODJmNGEwMzA0MGM0ZjUgcHkzay1pc3N1ZTE3MTcKKzY3NjY0IDI2YTA5ZDM4NjY0YTAxY2Y1NzY1YWVkMmNmNDAyOTU4ODkyYjUyMDEgcHkzay1pc3N1ZTE3MTcKKzY3NjY1IGQwNDBjNDM1YWRlOGM5OGRkZjRjNWY0MmRjMmQ4ZTk4MDk0ZjViMzEgcHkzay1pc3N1ZTE3MTcKKzY3NjY2IGRjNjk2ZGViMmNmMjZkYTI0MDk4ZDk2NDBlYzdlOWNkNzlkYWZjNTcgbGVnYWN5LXRydW5rCis2NzY2NyA4M2Q2NDJhMzQzOWIzZTk5ZDdmZDI4OTI1MzRmNzAzMjg1OTFmNDBkIHJlbGVhc2UzMC1tYWludAorNjc2NjggM2RhYzk5MjgxOTRiN2FiNDJkMTMxZjE1NDViMjM0NTZiNWZmZGU2YSBweTNrLWlzc3VlMTcxNworNjc2NjkgMDkzZTRmYTUwZDg0YjY0ZDcyYjI4YmQ3NjFlNDk4MDg3YmNiYWViZCBweTNrLWlzc3VlMTcxNworNjc2NzAgMDVjYWY0NDBjZThmMDBiMTk3ZjkwM2FjYWMwOWRhMjhmODdjMWQ2NSBweTNrLWlzc3VlMTcxNworNjc2NzEgMzhlNjExNjg0NTRiMjU2YWZhZThmZmYxZjk3YWY5N2VlMzJkMDM2NyBweTNrLWlzc3VlMTcxNworNjc2NzIgYjc5ZDFkNzZmMTk1YTcxZGJmMzYzYTM2NGRkNTg3YjIxOGI1NTcyZCBweTNrLWlzc3VlMTcxNworNjc2NzYgNjFjYjZjNGFiMjBkYjc0NmQzNzE0NzFkNDg5M2ViMmJmZGU4ODFiZCBsZWdhY3ktdHJ1bmsKKzY3Njc3IGFkNjQ3NzE2Njk2YzQ4OGRlNGI5ZjIxYTM1NDdlNDkxODY1NDU5ZTYgbGVnYWN5LXRydW5rCis2NzY4MCBkNDcwYjlhN2U5ZTE4OTZkYzE5ZDQ2YmYwYzEwZDRlMzJhN2E4ZDcwIHB5M2staXNzdWUxNzE3Cis2NzY4MSA5ZmEwYTY1ZWNlMjNhMjkxZWNlMDkwMTk3ZjUwNjVhZmUzMjA5OGY0IGxlZ2FjeS10cnVuaworNjc2ODIgNDBmNzU2NjE1NTRkYjgwNzQwNjVlOTFjOWM0ZWRjMWFjYmQ2YmExNCBweTNrCis2NzY4MyBkOWU4MjhlODNkMTI1ZGVmNzYyMzVjM2Q5OGQ1ZjczYWJlZjhkZjY2IHB5M2sKKzY3Njg0IDY5NGQwNGVkMmI0M2RhYzY1N2FiZjVjY2U4MTdmZjM1ZjAzODdhOWYgcmVsZWFzZTI1LW1haW50Cis2NzY4NSA2MmM4OWNiZmI1MTFiODcyNTE2OWIzNWU0MWY0YWMwY2ZkOWIzNzVlIGxlZ2FjeS10cnVuaworNjc2ODYgOThhYmU5Y2RlN2NlNzc3MWI1NmYxOTVhMmU0ZDc5ZDFkZThhNjFmNSByZWxlYXNlMjUtbWFpbnQKKzY3Njg3IGE2ZGRkOTQ5ODNlYTNkMzhhMWMxNjQzYmIxMjlkMDdhNTk2N2RiZDIgcmVsZWFzZTI1LW1haW50Cis2NzY4OCA5YTEwZDQ0MDRiZDAwMmNmNTM0YWExZjk0Y2I3Mjk3OTVlZjJlZGIxIGxlZ2FjeS10cnVuaworNjc2ODkgNDgyMzlmNjIwOWIwNjRkYmU5ZTAwYmZiOTkwYjMwYmQ3NTgwNzU1OCBweTNrCis2NzY5MCAyNjUxOGQ0MWExODY4YzQ5NWM0NzNiYTUxMTFkNDU2MDM2ZDQ5OGRkIHJlbGVhc2UzMC1tYWludAorNjc2OTEgNTk2NzBiN2I3N2E2YjUzMDc3NWRkYzdkNDMwYzhlOWE2YzRiNDYwYSByZWxlYXNlMjYtbWFpbnQKKzY3NjkyIDRhZjVlMmE2MDlhYjM1OGZjOTAwODg1YmUyMTQ5NGNjOTBhMDVkNWUgbGVnYWN5LXRydW5rCis2NzY5MyBiMDg5YTU3NzdkODA2ZTcxNzM5MjhkMjVhM2VjMjgxZWFmZDVmYmEzIHJlbGVhc2UyNS1tYWludAorNjc2OTQgYWU4MTk3NTEwM2IwODljMmEwMWVjODA2MGY4ZDRkMmFkYjZkY2E2YiBsZWdhY3ktdHJ1bmsKKzY3Njk1IDIyYWE3ZGQwZWE4MWI5MThhNmRmNjdlNzRkNmJmMGU1NWM4YTBmZDggcHkzaworNjc2OTYgMmY4YzMxN2RmZjE3ZTdmNmE5MmE4MTMyYmViNDE3MDVhZWZjNjE3YSByZWxlYXNlMjYtbWFpbnQKKzY3Njk3IGFiZjgxNWI4MGI1ZDU1N2EwNTMzNjBiMDMyZTQzZGQxMGFmZmI0ZTcgcHkzaworNjc2OTggZmIyNDU2YTM2YTgzYTg4NTNlMmUyNzRhOGY1ZDczZWJiZTY4MDllMiByZWxlYXNlMzAtbWFpbnQKKzY3Njk5IGUzNTQ2OGJjNGRmNDExZGRkM2I4ZDdmMmUzNzViYThmMzBiMmY5ZTEgcmVsZWFzZTI1LW1haW50Cis2NzcwMCAyMWRlN2E5MTQ2Zjc0YTBjNzhhMzNlY2UwYThjYzljMDUwYjRkMTBhIHJlbGVhc2UzMC1tYWludAorNjc3MDEgMDFjMDIzZDkyMThlYmQ5OTM2ZGMyNmE0OWI1NzRkNDVmZDBiNTFlMSByZWxlYXNlMjYtbWFpbnQKKzY3NzAyIDcxNjc5NzU2NDY5ZTkwMTlkMmVhNTE2ZDY3MjRmZDlhMjk5MTM4NDAgcHkzaworNjc3MDMgOWMzMWE5ODc0NDc4OGJmNmZlYTNhNjM1ODE3ZDg3ODdmMjE1MTM4NyBweTNrCis2NzcwNCBlNGUwZmY3ZGRjODVlYzFlMTU2MTk3NmI5Nzg4ZWI1YzE1YTFmZmVhIHJlbGVhc2UzMC1tYWludAorNjc3MDcgMGRmMGZkZmM4ZTFiMmMwM2IxMGUwZTFjODNmYjk5YzYwZmJjOTA4MiBsZWdhY3ktdHJ1bmsKKzY3NzA4IGEyNTI1MTU0ZTQ0ZjI0MGU5MDM1NmFiMmEzMTNmYjZiZmExZDE2ODUgcHkzaworNjc3MDkgNzc2YTZjYWZjMjFhMzQ4MTk1OTMxMzE4ZTU3N2NjYzI2Zjk1MTk0MiByZWxlYXNlMjYtbWFpbnQKKzY3NzEwIDIwYTg0ZTA2MzA1MjU3MjMyZmY3ODZlZjkyNGJiMDNlMDFmYWUzMDggcmVsZWFzZTMwLW1haW50Cis2NzcxMSBkOTFlNjI4NjI3NjQ1MWJkN2IyYmM0YzliYWZmYjhlNmE1NjM3MTM0IHB5M2sKKzY3NzEyIDI2ZTc4OTQyMTY1ZTEwZmE2NjYyOTAwM2FiN2NkMGVhYTBiOGJkZTkgcmVsZWFzZTMwLW1haW50Cis2NzcxMyAzZTFjNDQ5ZDExZTBlYWUwMDJhMmUxZWE0Y2IzMGEzYjE4OTE3ZjBmIHB5M2sKKzY3NzE0IGRmNjY0OTk1MTQxMGVjODNkOGVjZDI2OTkwYWMxOGEyZTQzM2Y0MzkgcmVsZWFzZTMwLW1haW50Cis2NzcxNSAzMDBiOTVmYTdiNGQzZjliMWQ0NzE3NDBiNDczZTE4YzYxNGFmOGMxIHB5M2sKKzY3NzE3IGI0NTUyZTJmZmQ1YTQxODQ1MmQyYzEwYzI1ODhkODY2N2RmNGYxNGYgbGVnYWN5LXRydW5rCis2NzcxOCBmOWI5NTI5NGFjODU3N2E4NDYxYTlkZTFhNjI1NjFlZWRlNTgyOWI0IHJlbGVhc2UyNi1tYWludAorNjc3MTkgNTg1NWUzZTBlODViMTQ5YzZhODExZmY1YTNmNjk4OWNkY2RiODA4ZiBweTNrCis2NzcyMCBmZGVjNTc2NjExYmRmYTYzNzVjMjUyYzIzZTA3ZDk3OTlkYmIxM2Y0IHJlbGVhc2UzMC1tYWludAorNjc3MjEgMzNhMWUxMDA4ZTU0MGZiZTY2NTk4MDg5ZWI5ODE4Y2U3NzE4MmQyZSByZWxlYXNlMzAtbWFpbnQKKzY3NzIyIGVlZWY3MWRkM2NjZTAyZjhjNjY5NTg5ZjFmZDQ5OTAzZjM0NmY5YTcgcmVsZWFzZTI2LW1haW50Cis2NzcyNCA0NjQ2YzMzNTMxZGIzMDNmOWJiYTExMzkwYWNkZTY0NjRiZjBmNmM3IHB5M2sKKzY3NzI1IDI0NWU3ODdiOTBmYzEwZWE4ZmVkODBlMzg5NTI5MzA2ZGYzMWVjMGYgbGVnYWN5LXRydW5rCis2NzcyNiA2MWQwNjQwOWE2NjA2OTNiNDc4YTY1MTYzNDg4YWFlMGMyYjExODA0IHJlbGVhc2UyNC1tYWludAorNjc3MjcgMzNjZDA2NDkxODU4NTNlZWY3YzBhYWYxZWMxODdlOGRhOThjMDA1YiByZWxlYXNlMjQtbWFpbnQKKzY3NzI4IGE2YzNjNzE1ZTJiNzA3NDBjNGI2YjRmN2RjNmY0N2IxNmE3ZTU5MDUgcmVsZWFzZTI0LW1haW50Cis2NzcyOSBmYjVmOGFmZjIzZmQxY2NjMWU2MTJmZmE2MzE4YTU4NGRjMzM2ZmI2IHJlbGVhc2UyNC1tYWludAorNjc3MzEgMGI3ZGNkYjVjYTNhYWM4OWUwNTNiNjc5MmE0MWJhOTUyNjM5ZDYwYiByZWxlYXNlMjUtbWFpbnQKKzY3NzMyIDJlMjFjZWE0MzY3MDcxYzI2NDkyNTAzN2M2YTEzNzkyZjhiYjViOGIgcmVsZWFzZTI1LW1haW50Cis2NzczMyA0ZDI0MjI5ODk5ODFhZWJjZmM2MDE1YTY3MTIxYzAzYTc2MzY1NDM1IHJlbGVhc2UyNS1tYWludAorNjc3MzQgOWNhYTFlNWRkODJiZGQwMmU1OTU2Y2UyZTM1MDk1ZDE4YzIxNDQzYSByZWxlYXNlMjUtbWFpbnQKKzY3NzM1IDFmMWExMTc3Njc3NDAzMzFlOGIxODBlNTMwMzFlNDNlOGUzM2U2YjQgcmVsZWFzZTI1LW1haW50Cis2NzczNiA4ZDkwMmM1MTNiYTBmODU5ZjU3NDJhMmVlNGFhZWRiY2ViMzIwZWM4IHJlbGVhc2UyNS1tYWludAorNjc3MzcgNzZmMTg5ZWE1NTA5ZjFiMjQ5N2E1ZDVkODY3NzFlODUwZTAxMTc1ZCByZWxlYXNlMjUtbWFpbnQKKzY3NzM4IDNhMzMyYmYwNmRhMDY5ZWZhNzg3ZGU0N2JhOGNlZmFkZDAyNWZhMDQgcmVsZWFzZTI1LW1haW50Cis2NzczOSBlNmRiYWRhYjAxZDhhODUwMWY4NWIwMzJjYWYzNjNkMzBiNDJjMzRmIHJlbGVhc2UyNS1tYWludAorNjc3NDAgNWY0ZjZiN2RhOGNiY2E1NzRmZWJhZDkzZDQzNThmZGRiYTFlY2FiMyByZWxlYXNlMjUtbWFpbnQKKzY3NzQxIDEyZGQyY2Y1ZTBjODAwMjY1MDVhODNkODE2NzMwMTU1NzQxNDczNDAgcmVsZWFzZTI1LW1haW50Cis2Nzc0MiA5NTMwZDMzNGQyNjI0MjE5ZTdlZTFhZWNhZjMzNTMyZTkxMDI2NmJjIHJlbGVhc2UyNS1tYWludAorNjc3NDMgNTg0NjhmY2RlMDZlOWJmNTNiYTU4ZDVjNGY0MmU4OWU3OWI5YTM1MSByZWxlYXNlMjUtbWFpbnQKKzY3NzQ0IDg4YzA4YTYzY2I3NDE1NzBjYzI1MDk2Y2VlOTE0NDFmOWFiNjNmMDMgcmVsZWFzZTI0LW1haW50Cis2Nzc0NSA2ZTgwZWM0MTMwOTczZGU1NWY1MDg3MzhhMDlhYzlmY2IzMGQwMDRjIHJlbGVhc2UyNS1tYWludAorNjc3NDYgYmIxZDlhZTgwMmMzMTUyZDBlMzBiMGRmM2Y4MzA5NTA3NThmMWYwYyBsZWdhY3ktdHJ1bmsKKzY3NzQ3IDc0MGNlOWE1MjNmZmM0YWNjOTExMjAwMmJjOTkyMzRkODZjZDQzZTMgcHkzaworNjc3NDggYTA5MGFhYjU3NWM2ZWY2YzMyMmQ0OTQ3NjcwNGUyOGRkNDVlZjhlYiBsZWdhY3ktdHJ1bmsKKzY3NzQ5IDljNDI4ZGMzZDZmYjc3ODJlMTgwNTc0YWJiM2IzNjU3ZjIyODNhYzQgcHkzaworNjc3NTAgYjVlZmNhMzA0ZDJhZjkxZTFjZDBlNmU2ZmE5ZTExMGIwZTA3MDAwZCBsZWdhY3ktdHJ1bmsKKzY3NzUxIGYyMGViODA5NTM1ZTkxYzBiMTQ0MTZjYzU0NDczNTdjZmNiYmU5NWMgbGVnYWN5LXRydW5rCis2Nzc1MiA0MjY0Y2YwMGE3NWMwZmUyMDYyZWQ4NDYyN2YwNGU0NmYzODc4MThmIHJlbGVhc2UyNi1tYWludAorNjc3NTMgZGQxYjhkYTAxZDAyZDE4YmQzZGY3YzNjZWUyMjc1NjI4ODdjODgzYiBweTNrCis2Nzc1NCAyNTI5MjdhMmYzMmQ2ZmUwZmQwY2NmMzljNWM3MzkyYTc4MTdiNTIzIHJlbGVhc2UzMC1tYWludAorNjc3NTUgY2M3MjcyMzllNTFiMTY0NzIwZmVlNjI0M2QzMTY1NmY2ZGJmMWVlNCBweTNrCis2Nzc1OSBlYjA3MDA5Yzg2NjA1ODExZTY5MzVhYmJmZTk4MTg5MDg2MGE3NGQzIHB5M2sKKzY3NzYwIDE4Zjk2ZjY4ODNhZjVkNTA5MjdlNmI5N2Q0NjMzMjdlZjAwMjg1OGEgcmVsZWFzZTMwLW1haW50Cis2Nzc2MSA3MDMzYjI4Njg1YTEzYmY0NTU0NDVhNDE4YzliMGM1Yjk2NDAwNWFjIGxlZ2FjeS10cnVuaworNjc3NjIgYjA5NTE3OGMwNDkyOGEzNDZjMDJiOGE0NzQwNDcwNGI3ODJiYjY3MSBsZWdhY3ktdHJ1bmsKKzY3NzYzIDE4YmNlMmYyYTdjNTZiYWQ0Y2IzNjRmNmYxYjBkYzY3Y2M3NjFkYTkgcHkzaworNjc3NjQgZDE1NzQ2YWJmNmM3ODNjNjIyYWZlNGJkMjM5OTAwMmRjNTM4N2MyNCByZWxlYXNlMjYtbWFpbnQKKzY3Nzc3IDU3NWY5NzNmZjI0NDMzZTE1MmU4OGE0MzRjNGM4YTY3NDUyNGQyNTAgbGVnYWN5LXRydW5rCis2Nzc3OSA3MmE3YWMyMThlYTMyODNjZDFkNGIxM2I4ZWZkMzJmOWJhZmFiMmQ3IGxlZ2FjeS10cnVuaworNjc3ODAgOTZhYjA4ZWQ5NWE0MDJhZDdmOWZiZDZhZGExYzQyMTdiMDk4MTYxZCBweTNrCis2Nzc4MSA0ZGI2NmMyMGNhNjhlNWExOGEyNjY2ZDVkZmE2ZDY5ZDg3NTBiYTZiIHB5M2sKKzY3NzgyIGVhOWM2MDI2YWU3ZWEyNDYyY2YzYWZjZWViYjU1ODU3NjkxYjgwMDEgcHkzaworNjc3ODMgYWQ5ODJjMjZjM2RkNWY0ZDc3OWE2NTkxYTllNzQ2YjdjNWNlODY0NyBweTNrCis2Nzc4NCBlMzZiZTFlYzcyOTY1YzAwZTZiMGE2ZmEwN2QzMDhjN2FhM2ZmZTRmIGxlZ2FjeS10cnVuaworNjc3ODUgOWU5ZmNhOTRkMjg2MjE2OGYxNDA2OThmYTdjYjcyNDEwN2Q2NzZhZCBsZWdhY3ktdHJ1bmsKKzY3Nzg2IDMzMzZlNGI3N2EwNDEyZWFlODdhYTMyZmEzZjBmYzQyMGZlYWY1OGEgcHkzaworNjc3ODcgZGM2Zjk3NGZiN2Q0ZjgzMjQzNWQwNjE5YzM1Nzc0Zjg3ZjI3NTVlMCBsZWdhY3ktdHJ1bmsKKzY3Nzg4IDFhZjJiOGIwYWQ4OGNiOTQ3OWNiNDdkYWJjYWRiNWY1MjZjNzI4YjYgbGVnYWN5LXRydW5rCis2Nzc4OSBkYWNhYTFmNDQxOWQ3MDNjNjg2NTg2YzJhZDllNzY3ZThlMmU3NjUzIHB5M2sKKzY3NzkwIGFiNTFjMTUwOWJjMDRhNDZiZjlhNTQzMjljYTFjYmRhYTI5OGJjZjEgbGVnYWN5LXRydW5rCis2Nzc5MSBlZGQ3MjQzN2NlYzNmMzU3YjIwZWJhMGY0MDAxM2Y3ZTdlOTE2ZDJiIHJlbGVhc2UyNi1tYWludAorNjc3OTIgN2RhYjg4MDcwYmM3ZGZhZDA4OTUwNzA0ZTI5MmQ3ZDIxNWE3NTg1YiBweTNrCis2Nzc5MyBlYjI4NzZhZTA0NzY5NjBmZTQ3NjU0ZTJlOTBmMzJiMjMyMTdiNTkzIHJlbGVhc2UzMC1tYWludAorNjc3OTQgMjBmMTVjMGYyMWY4OGE5YWY4ODViN2MwNWMyZjA4MGJlNzMwOTRiNyBweTNrCis2Nzc5NSA0ODA1NzQ1ZDU1OTkzNzdiZjhiOWMzNWI2MzQ1YzBjYmNjNTRhOGJjIHJlbGVhc2UzMC1tYWludAorNjc3OTYgMjk5NjgzOTVmOTIwNTM2ODk1ODBkYmE2OWJkZGFlY2FiZmQ3NWM3YSByZWxlYXNlMjYtbWFpbnQKKzY3Nzk3IDE0Y2Q1ODg1NDRmYTFiMWM5YTM1OTViMzJiODFhMThlM2ZhYTYxZGUgbGVnYWN5LXRydW5rCis2Nzc5OCBkNTBkYWQyYjI3NTA0MmFkZWFmMzA5YTk1NmIzYWU4YjI0NzAwMTI0IHB5M2sKKzY3ODAxIDk1NDFhMmVjYzRmYmJjZWU0ZmM4ZTYyODY3ZTRmOGU4MGFmYWQwNmYgcmVsZWFzZTI2LW1haW50Cis2NzgwMiBiN2Q5YWRjNGMzNDM3OTZiYWUzYzg3ODBhYWI4MjhlYzgzNzRiMWU3IGxlZ2FjeS10cnVuaworNjc4MDMgMjJmZjlhNDYyOTg3NTVkZTU4N2I1OTZhOWE0YzdjZTMzNDFiYTk5NiBweTNrCis2NzgwNCBhMTc1YjE5YjRiZjJjZTk4NDEwZTYxZjI3OTlmMmRlYWE3ZjQ3ZjY5IHJlbGVhc2UzMC1tYWludAorNjc4MDYgOGM0MjRmMTE2ZmI4ZDBlZDc1ZDdhOWIyZTRjMjZlYjdmYmM3OGM4OSBsZWdhY3ktdHJ1bmsKKzY3ODA3IDIxZDMzNTdkY2JlYzQxZmM2ZmUwMGMwNDk4NTExOGFjODkwZmIxMzYgcmVsZWFzZTI2LW1haW50Cis2NzgxMCBhNDNhNmRmMThiYTRiYzY4OWMyMjE4ZGQwNDYwMDE3MWEyYzhjNzZjIHB5M2sKKzY3ODExIGFlZjA3MzBkZjliYTMyN2E4ZTE1ZDM3MmFlNzM3ZGZiNmVjNDJlNmYgcmVsZWFzZTMwLW1haW50Cis2NzgxMyA2ODk4N2U5MzExOTNmYWY2OWQyYmFiZDEwNDA1NzA2ODc1NDI4YjNmIHJlbGVhc2UyNC1tYWludAorNjc4MTQgMDc0MDdkZTE4Mzk0ODgzZTRmZGQ0NmNjOWNmNGQ5ZDE2ZGNhZjQ1MSBweTNrCis2NzgxNSBkMDZiMDRjNTdiNTM2MTgwMThmNzFiYmVhZDk1MDljYmUwYzM1NTA4IHJlbGVhc2UzMC1tYWludAorNjc4MTggOTRlNzlkNzhkZmYwZGZiNWM1M2Y0OTg0MmM3ZGY2NWFkNWI3OWU2NiBsZWdhY3ktdHJ1bmsKKzY3ODIyIGYwZGIwNmY0OWE0ZTMwZTQ5NjY2MjUxZjY0OGNlOTVlNzA5ZTE1NjkgbGVnYWN5LXRydW5rCis2NzgyMyAzMzY2ODY0ODE0NDY2MDAwZjc4YWQ5NzViOGM3ZGViYjhhMjM4ZTY3IHB5M2sKKzY3ODI0IDkyZTIxNjUyZjJmNGQzMmRiYmNmNmM1YWIzOWRkNGJjMDEyNmRjMjcgcHkzaworNjc4MjUgY2JiZTI1ODg2NjQ4N2E0MDYwZWRmYTUyYzhkMzk2MGExYWM2NTQyZCByZWxlYXNlMjUtbWFpbnQKKzY3ODMyIGZjOTcyOWM4MGI3OTFhN2NiY2U3YTZiOWM0NjlhYWNhNTIyOGE4ODQgbGVnYWN5LXRydW5rCis2NzgzNCAxODliNDYyZWU5ZDRmMjViZmMyZDAzMGI2OTE4NGEwOTA4ZDc3MjI0IHB5M2sKKzY3ODM5IDJlZTQ2NTM5MjdmNzJmOWJiM2ZmMTRiMzA4M2Q0YTIwM2Q2ODRkZmMgcHkzaworNjc4NDAgZGFmNmQzYWY0MGM0YjkzOWRkMWRjZjE1YTc3Nzk1ZmNmNjczNmY3YyBweTNrCis2Nzg0MSAwMDFhMjUxNWQ1N2IwMTg4YTRhYzQ1YmU5YThjNmY0YzdlYWYyNGZlIHB5M2sKKzY3ODQyIGFlYmY3MTI0ZGQzMjJhOGZiNTU5NGQ0NmU5YTY1MWRiZTViNmE5MWYgcmVsZWFzZTMwLW1haW50Cis2Nzg0MyA4MmU2ZmUzNzA3ODI5ZjY2ZjRkNGZkMGM4YTM1YTAzZGM1MzBkY2JhIHB5M2sKKzY3ODQ0IDI0YjgwYjc5NzhlYzIxOTRjNGZjN2UxMTAwYWE0MGIxYWZlMTFmNzMgbGVnYWN5LXRydW5rCis2Nzg0NSA1NmI3ZWJmMTJlYTNhZGZkOTAzMjQ2MDZlMGRiMTdjY2Y2OTQ4MzU4IHJlbGVhc2UyNi1tYWludAorNjc4NDYgNDdlY2JlMmQzZWVmYmM1M2M3NWJiYzFhNmVkZTczZGNlMzQ5NGQ5NiBweTNrCis2Nzg0NyBiZjIwYzM4NGJlNTYzOWFlYTA1MGU4MDJhY2U4NDEzYzBjOGNiYjNlIHJlbGVhc2UzMC1tYWludAorNjc4NDggNmZhNWY5NjllZmU2NDdhMjNmOGYyYTFiNDYyMmZkNTVjMzJlYjhmYyBsZWdhY3ktdHJ1bmsKKzY3ODQ5IDVlODM5MjlmN2VlYjYxZDZlMDA5YmIxZjQ2Nzk2MjM4MWVlZDVlZmEgbGVnYWN5LXRydW5rCis2Nzg1MCA5YTE4OTA5ODI0ODllNTQ2OTk3MjQwMGM2Mzc5ZjRiMjkxOTkxOWY0IGxlZ2FjeS10cnVuaworNjc4NTEgMGRiOTA3YTcwNzIzNjA5YWIxYTg3MDVkYTdmMGI3MzlmNjE2ZGUwNyBweTNrCis2Nzg1MiBmM2YxZjE0NjJjODI1MzZiYjIzNzk2ZTcwYzg1NTIyMTQ0ZWUyNGRiIHJlbGVhc2UyNC1tYWludAorNjc4NTMgNDhmMjczNzMzNzk1NmVlMTVlMzkxMGQ3ODNmMmVmNzQyNDliMDYzOSByZWxlYXNlMjQtbWFpbnQKKzY3ODU0IDYwODg1NmE3ZTU2OGI4NmU1MTYzZWE2YTg3ZWIwMTY3Mjg4YmM2NjggcmVsZWFzZTI1LW1haW50Cis2Nzg1NSAzY2MwNTZkMjFjMmY0NDM1YTUzNGQyMzM0NWJhZDljMGE5ZDliM2NiIHJlbGVhc2UyNS1tYWludAorNjc4NTYgYjU2MjMxMjI0NzI4YWJmMmNiM2VhYTNiNDdhZmQ3ODA5Zjg1ZGI5MyByZWxlYXNlMjUtbWFpbnQKKzY3ODU3IDQ5NmRmZjQ3YmM3ZWY2ZmMxYTZlMTc0MjI0NzU5OWYyYzlkOGRiYjMgbGVnYWN5LXRydW5rCis2Nzg1OCA5YmRlYjBiZTFkYWQ0ZGM4YjBmMTlkNjFjNjZkZjg5OWU2M2U5ZGZkIHB5M2sKKzY3ODU5IDFjOTRlNzk4Yzg1YjFhNjEzOTQ4ODI3YTAwOWM2YWJiYzMwY2Y0ZjggbGVnYWN5LXRydW5rCis2Nzg2MCA0MjhmNmM0ZTg0NDYyMTBkYzEzOTVhNmYwMWFjY2U1ZDhiNjU2OGU3IHB5M2sKKzY3ODYxIGQwMjgyYTI5MmIwYWE4YzI1MjUxY2NlNDBjOWQ3ODdkMjhmNjBjYjMgcmVsZWFzZTMwLW1haW50Cis2Nzg2MiA5ZmIyYTIzZWFjNDM1YTJiZDBkNmYyOTRhNWJmMDViOWQ0OGE2M2Q3IGxlZ2FjeS10cnVuaworNjc4NjMgMDY0Nzk0OGJlODQwZWZkM2JlODlhZTA4OGRhYTI1YTU1ZTQ5YTFiYiBsZWdhY3ktdHJ1bmsKKzY3ODY0IDY3MDIwNGNmMjNlMjI1NmQyYmRjZDQyMjIxZjdhMGFjNGZjYjU2YmYgbGVnYWN5LXRydW5rCis2Nzg2NSBhNzY1NjE4YzdlOTQ0ZjNlMDcwYTY1MjRkZmZhYzhlZTZhNDNhMmUzIHB5M2sKKzY3ODY2IDQ2Mjc5Y2ViZWE5Y2YxNDNjY2I5MGM0OTM3MzM2NWNlYWUwYTc3MWYgcmVsZWFzZTI0LW1haW50Cis2Nzg2NyA3NzNhZjE4NjA4ZTNhNjJhNDA5ZTkzM2RiNDgwOGYwM2JhZTBkMWVlIHJlbGVhc2UyNS1tYWludAorNjc4NjggZWRiMmVlZmI2ODU2ZjZmYjBmMzExOWQ1OGJkOTI0NDg5ZTAxMTQxNCByZWxlYXNlMjYtbWFpbnQKKzY3ODY5IDc4ZmMwOTZlNTA4NTI5OGZkMDExYTUzMWQ2NTJkZTQ5N2I5ZjIzMjUgcHkzay1pc3N1ZTE3MTcKKzY3ODcwIDdmZTcyYWUxOWFiMjkwYTM0YzQ4MzEzZGIwZTEwZWFmYTFlZTYzODYgcHkzay1pc3N1ZTE3MTcKKzY3ODcxIDQ1YmVhNTg0Njk0ZTM1MGNmMmI5MTI0MTViZGM2ODFhNWFkMjIxNjIgcHkzaworNjc4NzIgZWU5YzljYzAyOGNlMTU5MTk1N2U3YzhkNzEwMTZlM2QyYmZmZWVmNSBweTNrLWlzc3VlMTcxNworNjc4NzMgYWQyNDZjYjRmNjYyZTIxMWM0NzAxZmUzYjlmZGNiNjM5Yzk5NDA4MCByZWxlYXNlMzAtbWFpbnQKKzY3ODc0IDZlM2U1ODJmZTNmMzg4ZWQ4YjAyN2NhYjVlNmNjYjRkNmU1NzJhYTcgcHkzay1pc3N1ZTE3MTcKKzY3ODc1IDBjMGI5YWJiNTg0MjZkZDhhNjdkODBkNDZjNTk3ZmJkNGZmNzFiYzggcHkzay1pc3N1ZTE3MTcKKzY3ODc2IDhiYjlhODU0NjM5YjY5MDVlMDM5ZGVmODNhM2JhNWE3MmRhZDExMWIgcHkzay1pc3N1ZTE3MTcKKzY3ODc3IGZiOTkzZjA5M2NiZjQzYmRkMWMyYmJjNGQ2MTc1MzQzOGFiY2ZiYzcgcHkzay1pc3N1ZTE3MTcKKzY3ODc4IGE2NTRmMWUxYmUyMzFmZDMzYjg5MDkxNWVhNTM2ODg1YmQ3YzdjYTAgcHkzay1pc3N1ZTE3MTcKKzY3ODc5IDBkY2EyYjQ1Nzc3NWQ0NzI1ZGQ0ODIwMmY1ZjVmNjdkYTg4ZjcwOWQgcHkzay1pc3N1ZTE3MTcKKzY3ODgwIDU4OWVkZjYxNWFkYjcyNjJkZjljYTNiYTczZmFlNWQzMTczMThhNjYgbGVnYWN5LXRydW5rCis2Nzg4MSBhN2IzNTdmOWU4YTQ4ZWFkNjJlZDYxYWY5YThjNThjNmNmOWU3Mjk3IHB5M2sKKzY3ODgyIGM0ZmZmYTA5NzJlMzY4ZTBkNzM5OTViZmM4Njk4Y2Y2YTljYjMzZDggbGVnYWN5LXRydW5rCis2Nzg4NCAxZDk2MWZlNTRhNmY5ZDNjMTk0MTA2N2ExMzI3MjZiZmY1NWUxZGMzIHB5M2sKKzY3ODg1IGYzM2RjZjdlNmUxYzNlZDk0NWViYjliOWJiMmM4M2Y4MTc3MjY4YTIgbGVnYWN5LXRydW5rCis2Nzg4NiAwMWI4MDc1Mzc5MTU2NTFiYzE0M2JkMTAzMjM3MTU0MDFjMDhhOGU4IHB5M2sKKzY3ODg3IGU4N2EyNTYxMTg4YjUzMzUyMzFmZDZlYmFiYzdiMzJhMWJmZjliMTAgcHkzaworNjc4ODggMWFkZmFiY2JlMDczMTdmYWQ1ZGZmZGFkZWViNTYwYjBhZDZiYjgxNCByZWxlYXNlMzAtbWFpbnQKKzY3ODg5IDNhYjEwMmQ5Y2Y1NjA2YTc0OTY4MzM2YzE5M2IxMTFiMjY3YWIwYzMgbGVnYWN5LXRydW5rCis2Nzg5MCBhZjU2ZTNmMTRlYjc0YjMwZDM5NzNkNWJkY2UxMjIwN2ViMTQ4N2ExIGxlZ2FjeS10cnVuaworNjc4OTEgNTI5NGIyMTRlMWJlOThlNzk3OWJiZGY5ODEzNTM0NjBjNmY2OWJkZiBsZWdhY3ktdHJ1bmsKKzY3ODkyIDRmZGE0ZjU0NWY3OTA2OTAxMzMyNTEzNTZhZDkyZDgyYjg1MzRiYmMgbGVnYWN5LXRydW5rCis2Nzg5MyAxMTY2NzYxMGU5ZjU2YTczZThiNjg3ZjA5OWRlZTE2N2E2NzFmOTk4IHJlbGVhc2UyNi1tYWludAorNjc4OTQgNTAyZjYxZDFmYmFmNGI1MWVjMDNkZWViNzk4NWM1ZjhmMTUzZTkyOCBweTNrLWlzc3VlMTcxNworNjc4OTUgMWJmNzI3ZTJiMDhmZGU0ZTBjYWI4NjUzODAxNjYzNDgxOWIyMGJmMyBsZWdhY3ktdHJ1bmsKKzY3ODk2IGU0Njc1MTEzZDEwZWZhNzM5YzVkOGFjMzJlMzJiNGVkYmE1M2UwM2YgcmVsZWFzZTI2LW1haW50Cis2Nzg5OCBkZTdiYmM0ZDBiMWQxNzI1ZjIyOTIxMjBlNDM3OTdlNDRlNjkzMjYwIGxlZ2FjeS10cnVuaworNjc5MDIgZDc5ZmRkODQyMGYzNmVjODVkYmY2NDJmYWI3MGQ5YWEwZDIzOWNhMSBsZWdhY3ktdHJ1bmsKKzY3OTAzIGMzYjk3NTk5ZDdhMTk3NGQxZjI4ODVlOTdkNjE0ODE1ZGEwMzdiMTggcHkzaworNjc5MDQgMDM3OTliYjQ0NzcyMjgzZDgxMGU2MjFlMzllZWVlYjllMzhjMDdhMiBsZWdhY3ktdHJ1bmsKKzY3OTA1IGJkM2M1ZGU0Y2M1NDFiZjA5ZGI1MTM5YTY3ZTQ3NzU3YjUwZTJjMmIgbGVnYWN5LXRydW5rCis2NzkwNiAyNDEwMjdiMjRiNDVkOTQzMGFjMWU4MTkxNDEzMTU0NDQzYjlkOWY1IGxlZ2FjeS10cnVuaworNjc5MDcgOTRjMDU0NjYzMDZlMjFmMzIwNjIzYjAxZDBiZjI5ZjIzYWU5NWFlNyBsZWdhY3ktdHJ1bmsKKzY3OTA4IDRiZGVjYWE0ZWNhYjJiNmM0NTYxZGM0ZTY2NTYzNjU5NzZkNzQzYzEgbGVnYWN5LXRydW5rCis2NzkwOSAzYTI1OWExZTFkOWM1ZTA5MTk4N2ExZWY5NDYzZTlkNmNlNTA1ODNmIHJlbGVhc2UyNi1tYWludAorNjc5MTAgYWM4OGIzNDMyMDY2MGIwZDk1ZTA4ODI3NzA3YTcyODAxZTU5MTVmZSBweTNrCis2NzkxMSAzOTY1MzE0YmI5MjJjMjc2NWM1N2JjNTEwMTAwMDlkZTk3YTJiNjNkIHJlbGVhc2UzMC1tYWludAorNjc5MTIgMzEzMmVkMTJlYzEwMDZjMzdiYmMyM2VkY2Y1MmJiZjc4NGM1YzVlMyBsZWdhY3ktdHJ1bmsKKzY3OTEzIDA1ZTAxMDUxNWM0YmM1NzEwMjMwZGM0NjQyNzU5NTQ4M2E2Y2I1MmUgcmVsZWFzZTI1LW1haW50Cis2NzkxNCAwZjlhN2VkYjhlNThjODgxZTNkNTY1MDIyNDUwMzk5NGU2OGQyOTFjIHJlbGVhc2UyNS1tYWludAorNjc5MTUgYWE0NWExNzczZjZlMGNlNGE0Nzg3ZGY1ZTJlNWY4NDZmZGIxNDRlZSByZWxlYXNlMjUtbWFpbnQKKzY3OTE2IGEwYTZkOTkwOTMxMmFkOWMxZDg0NGFmNjZlOWM5MTkzMWI5Mzg1MmEgcmVsZWFzZTI1LW1haW50Cis2NzkxNyBjNzRmZDc1MTg3ZDkwNDg5MWUyMDQ3Zjc3YjU0MzI5ZWNlY2YzNTFhIHJlbGVhc2UyNS1tYWludAorNjc5MTggNzkyOTU2NDFmY2YwYmU1ZDdjNTI2ZjJmZmZjMjM4ZjZhZmQxZTQ1ZCBsZWdhY3ktdHJ1bmsKKzY3OTIwIDg3NTEyODhkZGQ5NjFjNjM4OGFiZmIxNDUxOWUzYmJiNGM0Yzc3NDkgbGVnYWN5LXRydW5rCis2NzkyMSAxMDA5N2JkNjU1NjRmMGRiZGNkMGZkMTY4ZTZkZWVlMmQ2OTczM2UzIGxlZ2FjeS10cnVuaworNjc5MjMgMDY5ZDk1ZGVlYTkxNTRlMmEzMjA1MTBlOTRiYjdmNzE0YzY2MjQ2OCBsZWdhY3ktdHJ1bmsKKzY3OTI0IGVmZDQwMDNlZThlYTVhYTM0NTAyNzYwYTdlYTI5NjA0NzEwMjk0OTggbGVnYWN5LXRydW5rCis2NzkyNSA1MDI3OTI2MzgwMWI1Y2ZkMjRkZThiOWVhODQyOTQ3MGUzOGFlZjU4IHB5M2sKKzY3OTI2IGY2Y2QxYTdhMzFiYjg2NDc3NWJhNDgzZTk2NGRmZDRjMzdlMDg3NDAgbGVnYWN5LXRydW5rCis2NzkyNyAxMTJiYTNkZjg1MWQyZmY2MzkwZWEyZTRhODFjMTgxNTg4ZWVhNGUyIGxlZ2FjeS10cnVuaworNjc5MjkgMGM4NTJjMTE2ZTIzNWRmMDVlMWJkY2JkYWUyNTA1YjU4NDhiYzI0ZSBweTNrCis2NzkzMCA5MmJjMTRlOGIzN2U2YWMzZDQ1ZTA4YTRiMGM5YTU2YmI0N2VkYWJkIGxlZ2FjeS10cnVuaworNjc5MzEgYzNiNDNjYjY3MDNjNjJmNjY3MGNmYmU1NmU4YzE2OTc0OTRjZjFkZCBweTNrCis2NzkzMiBmODU5ZDgyNDM2OWVhOWZiMDVlZmVkYjI4NzkyYzIyMzA4YTc4ZjFhIGxlZ2FjeS10cnVuaworNjc5MzMgYWRiOWI1NDdjN2ZlODNhNThmNTc2YWU0NTczMjE4NDYwOGM4OWU3ZiBweTNrCis2NzkzNCBmNmFlN2NjOWUyZTg1ZDc3NmExNDQ3NWViMTBhOGI3NWE0NGQ5MDcyIGxlZ2FjeS10cnVuaworNjc5MzUgNjk5ZmRkODIxN2YzYmE4MmQyOTJhZGEwMjFkYjIxZGRlZDYyOGRkMCBsZWdhY3ktdHJ1bmsKKzY3OTM2IGQyNzAyNDc1NTU5M2I4Zjc5MjEwYzNiOWJjMzE2NWVhODZlZjZmOTUgcmVsZWFzZTI2LW1haW50Cis2NzkzNyAzMDNhZDQ1YTk2N2ZjNTFlZTc2NTE0MDllZDRhMTY3NmJkZDZlMzcyIHB5M2sKKzY3OTM4IDY2NWM0YWM0NzA3M2U3M2Y4OWRkODMyMDFmZDlkNjhiYmFjM2MzYzggcHkzaworNjc5MzkgZGI1MGRjMDA2MWVkZWIzYjVjMDYyZDAxY2UxNzM5Yzc0YTllMmMyZiBweTNrCis2Nzk0MCAyZTUzMjYyYzU1ZWE2N2VjYWVhMmRlM2FiZDI3YTY3MzhkN2U3NWY4IHB5M2sKKzY3OTQxIDExMzc1MWE4OTkwYzk0ODcyZDliN2RhNzViMWZhNDc4ZjE0OTljYzQgcHkzaworNjc5NDIgNDA4YTlmZjRmOGIyYzgxZTM2YjZlMzkzMzUxMmJkOGZkN2M5ZWM0OCBweTNrCis2Nzk0MyA3YjFkMGNlYTk4NzA2NDgyNTA3ZGQwMzA3YTZiODJlMTk1ZWYzYmVlIGxlZ2FjeS10cnVuaworNjc5NDQgZmIxNTBmY2YxNjVkMGZhNjNhMmYzNGUxN2ZjNjFmOGE0YjZiNjVhOCByZWxlYXNlMjYtbWFpbnQKKzY3OTQ1IDRiZGY5ZTM0MjI5MWE2NGU1ZGY5ZTc4ZjNkMzkzOTQwNWFjNjI1Y2EgcHkzaworNjc5NDYgOTRmOTk2YmM2NGIzYmY4NDg2ZjJiNTY3MTNhMjQ5Zjg3YmFiMGVmYyBsZWdhY3ktdHJ1bmsKKzY3OTQ3IGZlYzcyYzliMjcxZDg5NjQ1MjU0Y2I2YjA1ZTUyOTEwZGU5NDFhNzkgcHkzaworNjc5NDggYWQ3NDQ3YTE2NWJiZmFiNWMwMjYyZmFmZDEzYjc5NTA2NTkyMzBhMCBweTNrCis2Nzk0OSAxZTEyMTQ0MTAzNzVhYWRlZTFjZTYzMGQ0YTliOTZjZmY1ZTA5Y2IzIHB5M2sKKzY3OTUwIGQyODFlYmY4ZWEzMGY0Njk1NGMxMmE4YzhiYzZhNGVhNzc3OTc2NzAgcHkzaworNjc5NTEgZTY3MzYzMmUxODg1NjUzYzBmZTZhNGUxMWNlNTYxZWNkMzdlOGU5ZCByZWxlYXNlMjYtbWFpbnQKKzY3OTUyIDQxZDdkOGYwODUyYjI4NDc5Y2Q1YmVhNGRkZGQxNDg4OThlODdmMmMgbGVnYWN5LXRydW5rCis2Nzk1MyBlMmJiYmMwNmQ5MmM4MjYxZmYzYWM3YmE1YTlmNTUwYWU2NjI0N2JjIGxlZ2FjeS10cnVuaworNjc5NTQgOTNkYTlmMTRlNWI1OGJkYTVmMjI5MzMzMzI3NDM0MGM1ZGU2NWNhYiBsZWdhY3ktdHJ1bmsKKzY3OTU1IGFmZjZlOWRkZGQ5ZjgyOWQ2NWU0ZWJmM2JhYzk2M2QxMDIxZTcxYmEgbGVnYWN5LXRydW5rCis2Nzk1NiAzOTkxZjM3ZWJjYTMxY2NjNzcxM2Q2MjA2ZWI4ZWQxYzA5ODU4NGUxIHB5M2sKKzY3OTU3IDc1YjRlMzIzNDBhOGFiMTBiMWJjYjYwNWY1NTQ3YzQ5MmZkZWNlMGUgbGVnYWN5LXRydW5rCis2Nzk1OCAxYjg4OTMyZGVmZGIyOGI0ZDc5OWIyZTc4YjdjOWYxZTRkMzFlYmYxIGxlZ2FjeS10cnVuaworNjc5NTkgYmNkZmRjMzY5NTcwODUwYTIzYTdmYjExNGZhNWM0MWM3ODY0NTVmMyBweTNrCis2Nzk2MCBhMjhmOWU3NTBiNjQ4MzNlZmM5M2ViZjY5OWRmNjJlMTYyOGQzNWZhIGxlZ2FjeS10cnVuaworNjc5NjEgZTlhMGRlNDhiNzQ3ODRkMDUwMzcxNDgxMTU4NjYxMGQ5MDljYjkzNSBsZWdhY3ktdHJ1bmsKKzY3OTYyIDAyNDMwZTQ0ZDUwZWNkZWViZDFmYWUwOWRhYWVkOTAxNTkxOTg3ZmIgcHkzaworNjc5NjMgZmJmYTFkNjcyNGRlOGMyMWEwMjAwZDZlMGNmMzZiODA5ZWNmMzVhNiBsZWdhY3ktdHJ1bmsKKzY3OTY0IDFlZmExMzA0ZGZiMzI1MDk1YWYyNTE0NTRkYWUzYjNiNjNlNzM0YjYgcHkzaworNjc5NjUgYTllNWFjNGYwOTFjZDVkYzNmNjdhOGFlMGEwNGQyY2Q5MDViMTgwNyBsZWdhY3ktdHJ1bmsKKzY3OTY2IGE2NDk4ODRjNzlhODE0NjhhNmJiM2JjYzU0MjQzMGEwYWJhMjQwNmYgcHkzaworNjc5NjcgY2IzNTI0YjY0MDdmNmUzOGNlZjU5NTcyNThkYWQ3MGI4ZTc5MmM0MiBsZWdhY3ktdHJ1bmsKKzY3OTY4IGVhODdjYzA2OGM1NmY0OGEwOTU5NTljZjg0NWRmNWI5YjE0ZGM1MjEgcHkzaworNjc5NjkgOGJmYjQ2NjQxNGFjOWI1NzQ2Nzc0MDFlYzVmMjgxMTQxMjNhOTgwMyBweTNrCis2Nzk3MCAwMjdhNmYzYWM4NzQ3N2M1ZWM5NDM2NjQyMTQxOTc0MWNkZjA2M2FmIGxlZ2FjeS10cnVuaworNjc5NzEgNWVjM2UzZDU0YWE2NWFmMjYzODA0ZmU1MjE1NTc4Mjc1NDk1MDhhMiBsZWdhY3ktdHJ1bmsKKzY3OTcyIGE0YTg5ZDNlNDFhZjU5YzRiNTRjZWExODdhNzhiMjk2Y2M3MmUwMzkgcHkzaworNjc5NzMgZGIwZGRjZTI4ZDBmODI3MzRmYTZkNjg5NDBmZGViN2ZlZDM1OWFjMyBsZWdhY3ktdHJ1bmsKKzY3OTc0IDdhMDExNjgwZTE1MWJhMmUyM2UyMTdmMWMwMzEyODk0N2UyYTEzZDUgcHkzaworNjc5NzUgNDQyMDc4ZjA3OWFhMDI1MTFhN2MyNGE4OGNlMTZlOWM1YjNkZmJhMSByZWxlYXNlMzAtbWFpbnQKKzY3OTc2IDlkYjNkM2QzOWNjM2U3NTc1YTkyYmFjMTQxNWRlOTU4ODIwMjRkNTAgbGVnYWN5LXRydW5rCis2Nzk3NyAxZTBkMjA1ZmU4ZDcwZTVmOWYxZDYxMzBlYzYzMGFiYWZhNzk1MjcxIHJlbGVhc2UyNi1tYWludAorNjc5NzggNmEwNTY2YTUxMjE4NGJkNTU3OWZjNDNjZTBkZmQwMTg3MGJiZDM5MSBsZWdhY3ktdHJ1bmsKKzY3OTc5IDM0MWJmNzZlYjZlYjcyYjUyODY1ZDQzNGFmY2M2ZjIwMjVlMmQyNmIgbGVnYWN5LXRydW5rCis2Nzk4MCAwZWE0YmQ1OWE0MGQ2NmM3MTM1MTY5YjRlMGIwNjY4ZmY3NzcxYzVjIGxlZ2FjeS10cnVuaworNjc5ODEgZTc3MjA2MTJhNzk2OTg1OTA5MmYzMzVjNWM0NzQ3ZjQ1ODMzMzY4YiBweTNrCis2Nzk4MiA2NDFkMjc5MDNiYzU3NDlhZTBmN2IyNzFmYjk1N2JmZjk0OWY0OWU4IGxlZ2FjeS10cnVuaworNjc5ODMgYmRlZDViZDYwZTk1NGRhNjUzNWNiMmEyNjU0NGM5NWIxNGU2MjU5OCBweTNrCis2Nzk4NSA3Yzc2MjRhMzNmOGIzMjMzNDRiOTEwNGFhYmE5MzkyNzhhNDA2ZTI4IGxlZ2FjeS10cnVuaworNjc5ODYgMzc1NTQzYjk4MjQ0NjAyOWVkM2M3NGQ5ZGY5OWEzZjI1NjYwZjMwNSBweTNrLWlzc3VlMTcxNworNjc5ODcgNzNkY2I4YjQyMWY4MGQxOTVjNmEyNzgzMzAwYWNlOWNkNTFlY2U0MyByZWxlYXNlMjYtbWFpbnQKKzY3OTg4IDJmMTVkNTlkZmI4MDQ4ODAxOGFiZTliM2RlMzEyMzdjY2Q3MDgwOTIgbGVnYWN5LXRydW5rCis2Nzk4OSA0NTdlYzg4NGFmMDQ1YzM1ZTlkNjllOTFjNDA3NmVmYzg5NzMwOThiIHJlbGVhc2UyNi1tYWludAorNjc5OTAgZTJlYmFjMDYyNDMyMjEzY2U0MmY4NTEyY2I3NWM5YjM3ZjQxMmZlNSBsZWdhY3ktdHJ1bmsKKzY3OTk1IDZmYjdkOGY0MjczZjJiMDc1MDIxMWEyN2RiMmEwZmM1NGJiYzBjN2YgbGVnYWN5LXRydW5rCis2ODAwNiAyYWQ2OGRkMGFjOTBmN2E0Mjk3NGI2ZDI0NWU5ODFjZDViYmQ1MWRhIGxlZ2FjeS10cnVuaworNjgwMDcgODdmNTQzMmI5ZWRjOGQ5YTUxZTcyMDBlZTZhN2RkZjFhMzkxY2M2ZCByZWxlYXNlMjYtbWFpbnQKKzY4MDA4IGI5NWRkZTk1OTk2YTliM2ExNDdkYmJkY2FjMjRiNDVlZWZjYjBiNTQgcHkzaworNjgwMDkgODdmODZjY2U0M2IxNTM1YmZiYWRhYTE5MmJjY2ViMzI1Mzg2ZGZmNSByZWxlYXNlMzAtbWFpbnQKKzY4MDEwIDM4MzU3ZTFkMjFlNmFiOTgyOWVhMTE0MWU1ODFjOGNkYTJjMTYyMmYgbGVnYWN5LXRydW5rCis2ODAxMSBiOWVmZGQ4ZjhiMzA5MWVmYzg3NDIzN2Q0ZWM1NzMzNjhiYzc4NDJmIHJlbGVhc2UyNi1tYWludAorNjgwMTIgOWY4MzYzMDg4NTM2YTcyNzgxNTZmMDU5Nzk4MjgxMDM2NzEyZjMzOCBweTNrCis2ODAxMyBhMWFiZmUwMjcwNzRjOTk0ZTZlNGM2NjIxMzhmNmM3OGYyODYzMjAwIHJlbGVhc2UzMC1tYWludAorNjgwMTQgODlhM2Y1YzliNTAzMjI0Y2VhNzEwNTA4Y2MyZTkxNTQ1NWZkOTE1MSBsZWdhY3ktdHJ1bmsKKzY4MDE1IDcxZTczMmM5MzIzNDQ1YTIwZDMzMzM0Y2YwNjFiNGFhN2NjODZiMTEgcHkzaworNjgwMTYgNzBkZTJlMDkxZTU4MjZjMGRmOWIxYjZiYmJkMmM4NWU5NDg2MmZjZSBsZWdhY3ktdHJ1bmsKKzY4MDE3IDE4ZDgxN2E3YTM5ZmE5ZjhhZGUzZDQwMjQ5ZTIzMTE3ZDMwZDU1ZjAgcHkzaworNjgwMTggMzRjNzNhNDYzYjM1NWE4YjEyMTYxY2FiZWEzNDcyY2M0YTAyMGMwMSBsZWdhY3ktdHJ1bmsKKzY4MDE5IDI5MzJiMzdmMWYwNDQyMDVjZWRhY2YzZjRmN2E5OThiNzIxYmRkYTkgcmVsZWFzZTI2LW1haW50Cis2ODAyMCA0NGVhOWVhYzhjNWI1MjUyMmM0YjBkZTgwNDRhN2NmN2U2MDEyYTJiIHB5M2sKKzY4MDIxIDdmNWFhN2U1NGFkNWExMjQyNzNhZmNhODYwNzY3MjU5Y2JjMmQ2NDkgcmVsZWFzZTMwLW1haW50Cis2ODAyMiBmN2EzZjE0MTYxZTE3NTc3Y2ZlNTIxNjdkYTkxNDcxYTMxZjlmYzVlIHB5M2sKKzY4MDIzIGFlMWUxMTQyMzcyOTVkOWZmMWMxNTI3YjQwZjI1Yzc2ZTJhMGVjZDQgcmVsZWFzZTMwLW1haW50Cis2ODAyNyAxYWVhODNlMGFlOWYwMmViYzkzNzVlZmEwZDc2OTBkYWJkMmI4NDFjIHB5M2sKKzY4MDMwIGJjMWIzNzQzOTVmNDAwMDFhOTJkOGFhZDQxNDg2MTNiYjk0MDQxZmEgbGVnYWN5LXRydW5rCis2ODAzMSAzZDQ0N2I3YjEzNjM0ZmYzNGMwYjljN2RlMzQxY2E5ZTg1YWUzY2RiIHJlbGVhc2UzMC1tYWludAorNjgwMzMgZjE0NjJkOTI0YTljMjFlZTk4MDRkYTZiMGEyOTc4MWMwMzY0ODU0MCBsZWdhY3ktdHJ1bmsKKzY4MDM1IGFkMjBiNjliMThiNzBiMTgyNzE1NjZhOGViYjUzNDUxMzM5YzgzOWIgcmVsZWFzZTI2LW1haW50Cis2ODAzNiA5YzA2ZmI3ZDEyNjAyZWM3ZDZjZGViNjgwMWE2NjBiYjRlOGRlNmY3IHB5M2sKKzY4MDM3IDhmYTYxMWJiYjA3N2ZmNzEwOTI3NTliZDU4YzYzZjE4MTk5ODE0YWQgcmVsZWFzZTMwLW1haW50Cis2ODA1MSA3YWFlZjRkNWY4ODBlNzg2M2ZkNjA2MmUyZTMxZmVkY2Q0ZTFlNGY0IGxlZ2FjeS10cnVuaworNjgwNTIgZTc4MmY5NzExNmRjMWNmMTI4MjE0NWVhYmRiZTJlYjVkNDU5NDRmMSByZWxlYXNlMjYtbWFpbnQKKzY4MDU3IGY3M2ZjNDQxNzQ0ZjA2NTdkODA3MzM4ZGIxMWU5ZWU4NjNiNDY4ZGEgbGVnYWN5LXRydW5rCis2ODA1OCA2MThkMzM5N2Y4ODhjZTU0MzI1MWY4MjhjZjJiNjRiZTRhNjQxY2U1IHB5M2sKKzY4MDU5IDI4YWVjYmYxZTgzMmIwNWY2Nzk0ZGFjN2UxYzVlOWE2YzQzZmEyZTEgcHkzaworNjgwNjAgNDNhYWNiZTY0N2NiM2Y0OWE1N2UwNTIxZWY2NDdhYmQxNzYxMGExNyByZWxlYXNlMzAtbWFpbnQKKzY4MDYxIDcyOTk5OTkyOWVmNGI1YmQ2YWIxZDE1MzA0Y2ExNGYzNTU3M2JlMjcgbGVnYWN5LXRydW5rCis2ODA2MiAxMTU0ZDAyNDViNjYxMzhiNGQzZDM3NWQ1MWZjZGE3ZGYyNDllNTczIHB5M2sKKzY4MDY0IGFmYWIzMTkyNTJlNzkyM2RmNDE4ZDBiOWYzYWNhMWFkYWM0MGNhY2EgcHkzaworNjgwNzQgZmE2ZmM1NTI2ZjcxZjEyMzQxNjQ2OTYwNjNkYzM0NThjZDU5MDJhYyBweTNrCis2ODA3NSAyYzg0NGNmYzM3NWEzMWMyMjg2ZTM4MjI5ZTlhYjNhZDY4Y2JjZjI1IHB5M2sKKzY4MDc2IGMzMzhiZWUyMTE3Mzk3MDU2NzA2ZTBlYjc4YzlkYjRjNTZhMDQxMmYgcmVsZWFzZTMwLW1haW50Cis2ODA4MCA3NDMxNjM4ZTdkZDhmYWNjNDVmOWIzY2RjZmI1Y2Q1NjZjNjhhMTI0IHJlbGVhc2UzMC1tYWludAorNjgwODEgOGE0ODM0MzljYjU1ZmViM2ZlOTNjZjNmMDU3MjU5M2M1MmM5YjEyNSBsZWdhY3ktdHJ1bmsKKzY4MDgyIGQ4OTc1ZjI0YWY4YjU4ZGY5Y2VkZWY3ZGY0M2Y2YmI4OWNkYzc5YTUgcmVsZWFzZTI2LW1haW50Cis2ODA4MyA3ZDU1MGNiNTM2OWUwNWFlNmM3YTE3NDY3YjhhMGQ4ZTI4YzhlMWUyIHB5M2sKKzY4MDg0IDNlMThiNDU5ZDRjODg0MWRlNzkwMzg5NzUxMTkwNDdkZTZjMDg2NWMgcmVsZWFzZTMwLW1haW50Cis2ODA4OSBiNzVkNzY5MTUxYmFhOGYwYTExNDlkYWE4YzQzMWM3NDc2M2QyZWUyIGxlZ2FjeS10cnVuaworNjgwOTAgMDJmY2Q5YzVmZWZiZjk4MGZjMDE2OGJiZWE2YzY4MTRhYjE0NTdiZSBweTNrCis2ODA5MSBlZjY0OWNlOWI3ODM5YTA3NDdjNDEwODc3NjM5ZTU3Y2E5MjY3MDU1IHB5M2sKKzY4MDkyIDA2ZjRjMzdkNjVmOTY4OWFhNWMyMzgwZjkwZTJmZTY1NGNjMmJlYmQgbGVnYWN5LXRydW5rCis2ODA5MyAxNWE2NjI2MDg1ZjRhNTEzZWU0MjRjNzhlNWM4MmFlYTNjNTEyY2IzIHB5M2sKKzY4MDk0IDZkMTYzYzJhZWY1NmI4ZGFhYTI0ZWQ0OGRhZWI2ZjdiYTVmMDNkNTkgcHkzaworNjgwOTUgMzg1M2MxNTUzMmM0ZWRlMzNkZDY5YTc1N2YyMWM1ZjIwYzhjZDMwNyByZWxlYXNlMjYtbWFpbnQKKzY4MDk2IDAyMmQ5OTljNGQxYTk0YjE3YjRhYzgxZjBlZGY3N2I5NmVlMzBmNGIgcmVsZWFzZTMwLW1haW50Cis2ODA5NyA5YzJhYzc4NjY2ZDQ1NzgzMjUwZmY2M2JjZmMwMDBjYmM3ODU3MzY4IGxlZ2FjeS10cnVuaworNjgwOTggZGNiZTk5YjBjZTgzMjI3NzEzNmNhNTI1MjQ2ODkwMjgwNDMxOGFkZCByZWxlYXNlMjYtbWFpbnQKKzY4MDk5IDFjNWQ5NDIxMjhiNjg4MDU3ZmY5NWY1MzRmOGFlNzk4YmQ3MzA2NTEgbGVnYWN5LXRydW5rCis2ODEwMCBjNDMyMjY4NzViZDQxMDc5YjI1OTgwYjY0ZDZhM2NmM2NmYTNhMWI2IHJlbGVhc2UyNi1tYWludAorNjgxMDEgN2UxYTk1YjI2YTVjYTZjYmQ0Mjk3YjY1ZmE0OTkwMjNkNjQ5Y2I4NCBweTNrCis2ODEwMiA1Y2MwNzNkNjYxZjdiNmQzM2IyYzNlYzU0MDZkNjg4YTI1MWZkZmVhIHJlbGVhc2UzMC1tYWludAorNjgxMDMgNTA3NDgzMGU5Yjk5NDY0MWYxNTVmYTg5NWJlZjlhY2NhYjFkMWMzZSBweTNrCis2ODEwNCA3MjM5ZmJjZGNkNGZiYTY1YjFjYTM0Y2EzOWU2OTczMTFkMmVlNWNlIHJlbGVhc2UzMC1tYWludAorNjgxMTIgMTNkYWY5OWRiMDM1NzcwYTQyOTg3MWM0MzM2NzBmOTRkZmVjMjY2ZCBsZWdhY3ktdHJ1bmsKKzY4MTEzIGJmNmYyZGZjMzEwYmExNGQ5OTM1NmExMGFjNzE5NGIyMjg1MWM4MWYgcHkzaworNjgxMTQgZDMyYTY2OWY5NmRhOTkzZTA5M2U1ODhkMmRlM2JhMGU1NTAwZTE2MiByZWxlYXNlMzAtbWFpbnQKKzY4MTE1IDkyYWQ5NjU0NDI1MjU4MDRhN2RjNjc3N2M1MDA1NmQxMTFlODc5NzQgbGVnYWN5LXRydW5rCis2ODExNiA1OWYzYmYyYTMyOGQ0NDg0MmM2YzI5OTNmMDY4OTcxZTc1MWM2M2U5IGxlZ2FjeS10cnVuaworNjgxMTcgOTI3ZjVkOTA4N2Y1YTE1ZTVhNDk0YWM5ZGFmMzg2Y2ZjNjk1ZmU5ZSBsZWdhY3ktdHJ1bmsKKzY4MTE4IDM5NGUzODllODlmMDlhNmVmMzhhMGI0YTU4NjIzMDY0Y2I0MmExMTUgbGVnYWN5LXRydW5rCis2ODExOSAyMGVkYjdlNTE1OWY0ZGMyZjkzNTFkYWZkMGMwYmQ5MGQ3MzMwMTkxIGxlZ2FjeS10cnVuaworNjgxMjAgZDFlNTM2YzZmYTJjYjIwNWY0YWRlM2E3MDgwMWEzMWZmMmYzNTYwMSBsZWdhY3ktdHJ1bmsKKzY4MTIxIDY4M2IzZjhiMTJiNDRhMjM3ODlmMmM0YjcxODQ5YmI5NTQ3Yjg4YzUgbGVnYWN5LXRydW5rCis2ODEyMyBmMzU0MDNhMDExYjk0YzU4YTljYjY1OGMwMWEzZTY3NmRhMThlNzQxIGxlZ2FjeS10cnVuaworNjgxMjQgMWM0ZTY3OGExZDNiMWVkZmIxMzcyYjFjY2E5ZDFlYzk1Y2NhODFhMSBsZWdhY3ktdHJ1bmsKKzY4MTI1IDFiODJmMmI4MmZkOTIxMWFkNTI2ZjNmOGU4ZmE5Mzc1NDRiMjg5YzIgbGVnYWN5LXRydW5rCis2ODEyNiBlNWRiZjM4YjFkYWMxYTcxYzg5ZWRmYTQxMWQ0YTQxYzk0NDcwMmFkIGxlZ2FjeS10cnVuaworNjgxMjcgMzZlOTc5M2ViYjVkNDgzYzQ4MGUyMzNjOTU4ZDk3ODg5OWEzZDk5MSBsZWdhY3ktdHJ1bmsKKzY4MTI4IDA5OWI0OGZlOTIyYTBkZjI2N2QzOTg0NDhmYzhjZjRjNmZjZGM2ZmIgbGVnYWN5LXRydW5rCis2ODEyOSBjYWI4NTAxZjhhZTZiMzNiMjk1ZDJmYzBiOWQ0ZTBjZTkxNjVjNjk3IHB5M2sKKzY4MTMwIDg0NjNmZjg2MWEyNmQ4NGQ3Mjk5Y2ZkYTA2MDIyYzNlNTM0OTFiODIgcmVsZWFzZTMwLW1haW50Cis2ODEzMSA0MzZlNjMxN2M3YjRiOTEzNDAzM2QxYzI1MDUwOTNmNzA5ODI0MGZjIHJlbGVhc2UyNi1tYWludAorNjgxMzIgNGZiZjUyYzk5YjZlZDQzNGRiMjQwYzdhMDk1NDgwNTdjMjM5ODQzNSBweTNrCis2ODEzMyBjN2E0NWNiYTA3ODVkNmNhNTZiMzMyMTIzNjkwYWYzMTZlYTI2NjBhIGxlZ2FjeS10cnVuaworNjgxMzQgMGU1YjI0YWRlNGEyMTc2Y2UwYzUxNWM0YmVjNTg2MDQzNjJmYzNkZSBsZWdhY3ktdHJ1bmsKKzY4MTM1IGRmMzkyM2MzNmVjNTlmN2QyMzhmN2FjODg0ZTA4ZTlkMmJhMDhmZTAgcmVsZWFzZTI2LW1haW50Cis2ODEzNiAwNmUxZjdkOWRhODNkZTU0MmFkOTRhNDY2YmRkODY4NzMyNzc4YWM4IHB5M2sKKzY4MTM3IDlkZDJlMjU3YWM3YzIyZTVmNGI0NzMyNzgzOGIyZTAwOTU4ZjAwOGEgcHkzaworNjgxMzggYmIzMTIyM2FiZmFhOGM1YWQ2MmQyOTU4NGJhOGFlOWQwZjkyZDdjZSBweTNrCis2ODEzOSA5ZjYwNGQzM2E0MmY3MGJlOGUwNGE0MTZlNDJlMDljYjRhNDcxMTVhIHB5M2sKKzY4MTQwIDJiMTNkMjAyYTQ3ZDczODZhY2E0NDAyNDQ0Mzg4YzcwMDY5ZTJlMTMgcHkzaworNjgxNDEgYWQ0ZTUyZDE1NGY0YTI5ODgzNmQ3NTdlZjQyMDBmNzE2N2FkMmI4NyBsZWdhY3ktdHJ1bmsKKzY4MTQyIDVjNmZlZDczYjZhOTE4MmE5ODU4YTFhODk3Y2JkN2Q1YTE4MTRlOTAgbGVnYWN5LXRydW5rCis2ODE0MyAyZGViYmU2NDQ1ZTBmZDkxYmNhMjJmZTQ2MzBlODM3NDFmMTkwNDcyIHB5M2sKKzY4MTQ0IDQ4MDE5NjlkYWRlZTNjZmQ3ZjJkZTY0YWNlMzFhZGRlMWM1NWM5ODcgcmVsZWFzZTMwLW1haW50Cis2ODE0NSA2MDk3Zjk3YjBkMjIwNzNiYTBlMzIwOWU2ODNjOGQ1MDRhNDFiNzIzIGxlZ2FjeS10cnVuaworNjgxNDYgNDBmYTg2ODk4MWNjZDhmN2U2ZjBiZTM5ODdlMTM1NWM2YjJkMTA1OCBsZWdhY3ktdHJ1bmsKKzY4MTQ3IGNiMzQ3OWNhODFhY2NhZWE4NDhmNGRkZjczZmJiMTk1YjU2YjYzYjYgcmVsZWFzZTI2LW1haW50Cis2ODE0OCBiZjE3MzRjNmI2ZWQyMjNjZjFkMWM5MjEyZmQ1ZDNlM2FlMTQ5MzIyIGxlZ2FjeS10cnVuaworNjgxNDkgODRjYjAxYzU2NDhiMTc0ZDA3ZGIzNTZiNWJkMDA0ZDgzMjk4MjAxMyBsZWdhY3ktdHJ1bmsKKzY4MTUwIDI1M2UxYzczZmRlNjljYWViNzg0MjBhMjE5NzhkNDI1NTBjNGRhMmEgbGVnYWN5LXRydW5rCis2ODE1MSA1YzRmNjM5YzkyMDA4OTg2MmMyZjFmMGM2NTUyMGI4YWY0NzE1NTBhIHJlbGVhc2UyNi1tYWludAorNjgxNTIgMDhkYmE3Zjk3MDMwMTlhODkwMmU3ZWNhMThmZDUxNWVkMWZiZDcxMiBweTNrCis2ODE1MyAyZjAxZjk5NWY3MDQxMmI3MDIzZDViMTkxM2QwYjI4ODU5Mzg4Mzg5IGxlZ2FjeS10cnVuaworNjgxNTQgMzRkNTFjMzBhNGY0YmYxYzkyMzRkZWVhYzJmYzRmNzUwM2YzODI2MiByZWxlYXNlMjYtbWFpbnQKKzY4MTU1IDk0Y2ZiZjkzZDcxYjRjNjEyNWE2MThmNjhiMTNkZWYxMjRiZmVmOTggcHkzaworNjgxNTYgMWRjYjE5MjE2YjY0ZDYyMGE4MGFjNGVjMGIzYjgwNWUyNzI5ZDRlMSBsZWdhY3ktdHJ1bmsKKzY4MTU3IGU3YWVlN2M5OWQzYjc3YzBhN2IxOGU0YzdhODExZWQ3MjIwZjAwODUgcHkzay1pc3N1ZTE3MTcKKzY4MTU4IDc1Mzk1NGQxNmVkMjE2MDEyYzQ5ZDMwN2IzYTljMGY3NjZhMTIzODggbGVnYWN5LXRydW5rCis2ODE1OSAyNjk2YTM5YmNmMGIwNTc5OGMyZDI2NWY1NzIxN2E1NWFmNGZmOWU3IGxlZ2FjeS10cnVuaworNjgxNjAgYzUwYjExOGVhZjM0Nzc5NGI0ZjI0ZjllOTQyMDVkNWQ2MDUyMjM0NiBsZWdhY3ktdHJ1bmsKKzY4MTYxIDM1NWJjMTIyYzE0NTY1Y2UyMGNkYzk4OTVkZDA0MDM2MjY2NmQwYjEgbGVnYWN5LXRydW5rCis2ODE2MiBkZTdkMTY3YjlmZjEwZGFmMmJlZjMwYTc3NDU2ZjdmNzNhOThlNjQ3IGxlZ2FjeS10cnVuaworNjgxNjMgNjlhMjQwZTVmMDFkY2ZmNmYzODRiNTNkYjJjMGM5OWEyNWI4ZWZhZiBsZWdhY3ktdHJ1bmsKKzY4MTY0IGUwYzY2YmJiNDhkYTgzZWM3NTE0NzgxYmZjMmIxZmRkNmE3YzFiMWQgcmVsZWFzZTMwLW1haW50Cis2ODE2NSA0MDBjZmNhYThkNDZlZTg1YzExY2I2MWIwOGE1Y2ViMDY2Yzk4ZTRmIHB5M2sKKzY4MTY2IGNhODZhYmUxNTkyNjM5YTc2ZTBiYTVlOWI0NzNkNWUyYWM4MDYxYzYgbGVnYWN5LXRydW5rCis2ODE2NyBmZjEwNjQ1MzI1NGExZGQ5ZmU5MDViNTg1NDBiMzZhZjIzMmUwMmQ3IGxlZ2FjeS10cnVuaworNjgxNjggYTU0OWM5MjcwNzc2NzNlYWRlOTU0ZTc5MTgyZWRiN2E3YzlmMmE2YyBweTNrCis2ODE2OSBhYmJjZTQ4YjlhZTQwYTY5YWNjNmU0MjQxYmM5NGQwYTIyNDQzNjNmIHB5M2sKKzY4MTcwIGJjZjQ2ZjMzYmQ5MDUxNmQ3M2FhN2E0OWIwMDE0ZDgyZThkNTA3NjMgcHkzaworNjgxNzEgOGVkZGQ2NjVlOWI5ZmI2YWZlZGRjNGJiMTFiZTZhODNiMmNmODkyMCBsZWdhY3ktdHJ1bmsKKzY4MTcyIDYzNmEwYWM5NjA3YjdhM2E0MGNhMGZjYmYzMDQ0MWJjMTBlNjAyODAgbGVnYWN5LXRydW5rCis2ODE3MyAxMjk3YmI3MWRjNjRiMTZjMjA4MmU2YjdjYWUwMGEzYTlkYTkxN2JhIGxlZ2FjeS10cnVuaworNjgxNzQgNjhjOWY4YjY1ODRkNGIxZWUxZTJmZjAxYTBmOGE3ZTE0YzIwZmZhNSBsZWdhY3ktdHJ1bmsKKzY4MTc1IDIwMzg0ZWJmYzcxNmYyZTBhOWY0YTkwYjZjN2ZlZmQzM2RjZTQ0ZmMgcHkzaworNjgxNzYgMDU4OGE5ODc5M2NkMDg3NWYwZTQ1ZDFmOGUzMGFmODZiZWEzYWU2NCBsZWdhY3ktdHJ1bmsKKzY4MTc3IGViMzU4ZGFlMGNjYWQ4YTVhNTdlYzdkZTM2YzhiZjEzZTk0ZDhkY2YgcmVsZWFzZTI2LW1haW50Cis2ODE3OCAwYzk3MjgzNzJkMDk4YWY0Y2U0Zjg5OTE4YjEzOTIyOTY2OTNjM2I1IHB5M2sKKzY4MTc5IDAwNTJkMjNkMzlmNjE1Yzc2M2U3MzVjNGU2MmE4MjgzNDU2N2RmYjUgbGVnYWN5LXRydW5rCis2ODE4MCAwZTM4YzcwYjk3NzZlYTdhYzFkYmFkYzU2OTU1ODMxNGY3N2I1NjVlIHJlbGVhc2UzMC1tYWludAorNjgxODEgOTMwMTMzOTc5ZDdhMjkxYWQwMWM1MjNlNDhmZTQxM2VlMDAwNjVkNCBweTNrCis2ODE4MiBhZDkyMTA0ZDUwNjA3ZTdhNzMzYzk1Y2ZlNTY0ZWRlMjJjMDE5NGNmIGxlZ2FjeS10cnVuaworNjgxODMgOTRmZjNkZTFlMWE0NWJlYmZmYjVjNTc4ZGQ3MGVkNTgxNDQ5MmUwOCByZWxlYXNlMjYtbWFpbnQKKzY4MTg0IDVlMTY0OTg4YmQ1MWFlYWVlZDM4MDE3YTc1MDY5MTJhNDUzZmMzMWEgcHkzaworNjgxODUgZDM2N2JlNTQzZjZjZThhZjQwNzY0YjE5ZGU3NTZiYzg3YTYxY2QwNCByZWxlYXNlMzAtbWFpbnQKKzY4MTg2IDQ0MGFkZDUxNmNmMWUxYjcxM2ZlODA2OThiZmVkZTI4N2RjY2MxNTEgcmVsZWFzZTI2LW1haW50Cis2ODE4NyAzNmQwMjcwMzc4MTIzMzMyNzg4ZmJiMjIzZDZkNThhYzNhZTkwNDY1IHJlbGVhc2UyNi1tYWludAorNjgxODggYzQ1ZmVkMDNmNzQ3NWMyZDJiYWM1Y2U0NjZhMWViMzE4ZmRjZDQyMyByZWxlYXNlMjYtbWFpbnQKKzY4MTg5IGZjOTRjOWM0MmM2YzgwMDA2MzVhNTVmYzQ2YWE3MjBkOGE0NWExZmIgcmVsZWFzZTMwLW1haW50Cis2ODE5MCBmYTU1ZmE0NTU2ZjA5OTE0Y2RhNDFlYzQ2NzM3YjBkZWQxYjEzZjI5IHJlbGVhc2UyNi1tYWludAorNjgxOTEgYzI3MmZjYWMyNGE0YTI1YjVjYTc1NGQ4ZmY3NDI3MjAxNWIwNzViNiBsZWdhY3ktdHJ1bmsKKzY4MTkyIGYyYTVkNzgyOGI4M2U3MjAwYjY0NjgyMmE0NjM2OGU5NmE1OTBmNzUgcmVsZWFzZTI2LW1haW50Cis2ODE5MyA3Mzg4NjYwOTI2YWExNDllYmFiMWJhZTJjN2M5Y2JmNGM1NzBjZTY4IHB5M2sKKzY4MTk0IDEzNGQxNzNiOTM1MGIyZmU0NTNkMTgzYmFmMmY3NWY0ZjY3NDBiNjggcmVsZWFzZTMwLW1haW50Cis2ODE5NSA0MjdkOGI3NjVhNmEwMGIwMDY3Njc3ODA5MDc5NTdhNGMyMmQ1MWRiIGxlZ2FjeS10cnVuaworNjgxOTYgYTc4OGQ0ZjEwYjk3ODNjZTkzYmFmYjJmNWVhMzliYTQ2MmFmZTgxNiBsZWdhY3ktdHJ1bmsKKzY4MTk3IGI5OTFmZTVmNjM3YTg1ZmVhYjhhYTAwN2U0MTllMDhkNTA5OWVjMDMgbGVnYWN5LXRydW5rCis2ODE5OCA4ZTc3Mjg2NzZmN2U4NWFhZWJiMWQ4NDgyM2EwNDViZGI4ODI0YTAyIHB5M2sKKzY4MTk5IGE5MmY3MWQ0NmRjNGMxYzMyOTA2YzNiMTA0OTI5ZTRmOTFiNjAyZmQgcmVsZWFzZTI2LW1haW50Cis2ODIwMCAyOWY2NDA3N2M0MmY4OGQxYjBkNTQ1ZGE5NDk1OTc4OWFjMTk3OGE0IHB5M2sKKzY4MjAxIDc5MzQ3MjNmN2RjNGZiZGExNTI1NTM4YmY5Njg2ODliOGU4NmExNmUgcmVsZWFzZTMwLW1haW50Cis2ODIwMiAyNjA0NWVkMGMyNmUyY2NlMWQ2ZjViMWM1ZmRiMjkyNzA4ZjY5MWNlIHJlbGVhc2UzMC1tYWludAorNjgyMDMgZWNmMWJiN2JhZWIxZWM3NmY4OTg4MDU1MDU2NDhmYzAzMzg4NDVhMSBsZWdhY3ktdHJ1bmsKKzY4MjA0IDRkMWE2OGJkODA3NmMwYzZlMzQ2NWY2MjdlMzI5ZjFmOTY5ZWU4ZDEgcHkzaworNjgyMDUgMjUzZjllNmU5ZTA3OTk3NTQ0YTk1NDE1MGEwMmRhZDRjY2UwNzQ4MyBweTNrCis2ODIwNiAxMGNjNTNlNzFiMjEyM2Q1NDc5ZDhmMGNkMzZmYzc2NGNlMGJlZTViIHB5M2sKKzY4MjA3IDlhNDI1ZWIwZjdlYTU0YWI0ZTQ4MGNkZDNjMjM3ZjkzYjA2MTRmNWYgcmVsZWFzZTMwLW1haW50Cis2ODIwOCA3YTZlM2JjNjBiYTZkZTEyN2JjZWU5NDRiMTMxNjNmODM5NDA2NjM4IGxlZ2FjeS10cnVuaworNjgyMDkgZTc4ZGNkODdkNzMzZjZmN2IyNGFiMWE2NTllNjUwOTQ0ZWJjZWZkZiBsZWdhY3ktdHJ1bmsKKzY4MjEwIGFhNDY3ODdiOTNjYzY1MWE4ZGYyMzcyN2FiMTBjNGUxYzdhMzRjNGYgbGVnYWN5LXRydW5rCis2ODIxMSAxMDQwMDVkMDdlYTUxOTBlM2QyMjA2ZTI2NzZlMGQ3NTJhYTJlNzUxIHB5M2sKKzY4MjEyIDg0NWZhN2QzNjY0MjA5MGMyNDE5MGQ0NDJlYjg3ZTkyYTFlZDMwODUgcHkzaworNjgyMTMgZGUyNzcxMDcwZDg1MmIyYzgzYzM2ZmQ4ZTc5ZDZkZjUzZjBhODY2NSByZWxlYXNlMzAtbWFpbnQKKzY4MjE0IDZlNGQ2ZDM5MDVhNzlkZjFhZTczZjcyZGJkNTIxMzViMTBmZmJkOWYgbGVnYWN5LXRydW5rCis2ODIxNSA2MDg1NGJkYmNmMWU1YWY3OTBjODhhMzFiMzZjOTUzNTlmMTNmNTU1IGxlZ2FjeS10cnVuaworNjgyMTYgYjA2NmZiYjZhOGJjMjlmYWJkMWVmOGI3NjY5Zjc3NWNkZjk1OThjYiBweTNrCis2ODIxNyBjNzU3MjBjM2UxNmVlMDI4M2ViMWQ1ODJhNDMxZDIyMzBhY2M2MmEwIGxlZ2FjeS10cnVuaworNjgyMTggNmVmYzFkZTM0NWY1YzkxNzdlNDA1ZGFjN2Y2NzViMWViNzllMWQyMyBsZWdhY3ktdHJ1bmsKKzY4MjE5IGZiMDk4MmMzMjE3ZTQ1ODA0NzcyYWM2YmRmMzNmYWYwNWY4M2ZiM2QgbGVnYWN5LXRydW5rCis2ODIyMCBjNTIxNzdmMzY4NTI3NjQwZTdmMjI5OWJjY2Q1OTg0MTBkZjI2MTljIGxlZ2FjeS10cnVuaworNjgyMjEgN2ZiNDMxZmE0OTQ2MDE4NWI5NDdiNWQ4NWZmYzAwNzQ3NjcwNzBjMiBsZWdhY3ktdHJ1bmsKKzY4MjIyIDk4OTMxNGQ3Y2M1ZWZiMmRmY2VmYjU2YzJjZWMyNGJiOTRjYWI1MzkgbGVnYWN5LXRydW5rCis2ODIyMyBjOTE4NGY1MDczNGZiYjk3NGJlMzgyZjEyYzkyYWRiODE0NTgxY2UxIHB5M2sKKzY4MjI0IDVhYjMwNjNjYWY0YzA4ODc4ODQ0NzZmODdhZGNlMmY0MjMzMTE5MjYgcHkzaworNjgyMjUgNWYyNDc1ZmU1MjM5OTUzM2NlMGRlNGJjMjM5ZjNlZWU2YzIyMzQ0NiBweTNrCis2ODIyNiBjM2QzYjc2MGQ4YmZiMGVmNTMxYTM2NGFjZDY3MTdkZDI4OGIzZTFiIHB5M2sKKzY4MjI3IDBlMDViNmNhNmFmZDNiYTdjNTkxZmE0NDQ4MGY4NDQ1NjcxN2ZkY2QgcHkzaworNjgyMjggZTQ3OWI4NmRhMTFkZTY0YWVkOGVjODk0ZDFmZDg5MDM2MzJlZjMzOCBweTNrCis2ODIyOSA4M2VmYzI0NjdmYWYzNDdiNzY2YjM5M2MxZjE0ODkyNjMyZWJlOThhIHB5M2sKKzY4MjMwIDA3MmRlZGVlNzdmYTZkZDQ4NDU2OTY3YWY1NzBmNjlhYTk4YzliMjkgcmVsZWFzZTMwLW1haW50Cis2ODIzMSBjZGQ1ZmEwNWMxNGQwMDk1MzY3MGVmZDhiNjI0ZTQwYmRlODk5OWFmIGxlZ2FjeS10cnVuaworNjgyMzIgMjRhMDkzN2Q3NjI0MzRiYjNjZWRiMDg0MWJmMTkxYjBkM2I4OTU3NyBsZWdhY3ktdHJ1bmsKKzY4MjMzIGFlZTU1Y2EwNGM4ZmEzMDFmODJlNWNmYTVmMjQxNDI5N2VhOTVhY2YgcHkzaworNjgyMzQgZWU5Y2VkOTI4NDNhN2E1OTkyMjdkZDhlNmIwMTNhMzBhYzNhMTE2OSByZWxlYXNlMjYtbWFpbnQKKzY4MjM1IDcxM2EzYTM4Zjk3NWNhMWM0MzlkNzJhOTViNTE4NjVlZGIwMjcwYjUgcmVsZWFzZTI2LW1haW50Cis2ODIzNiBmODg1Yzc2ZjFlOTU1MTIyNmQ4MmVkOTIzNTQ5NzY5Yjc3MmRjMmQ1IHJlbGVhc2UyNi1tYWludAorNjgyMzcgZGRiNzNhNGRmYzIwNGQ1MzliNDBkZDhiNmI5ZGNkMTkxZjU5YzhmZiBweTNrCis2ODIzOCA2ZGYzZDA4Yjg5ZTQ1MGRhZDE0YTlhMjA4OTk3YmVlZmJmZmZjYjYxIGxlZ2FjeS10cnVuaworNjgyMzkgMjFkN2U5ZTg3NTkxYzcyOTUzNWZiNzE1ZDIwNjk2ZmFkZjFkMTc4ZiByZWxlYXNlMzAtbWFpbnQKKzY4MjQwIGI1NjM5ZDI0NWFkNTM1NDc5ZDcxNWEyMzNiYjAzZDYwYTllMDQ0ZWYgbGVnYWN5LXRydW5rCis2ODI0MSA3M2RlZDk0ZmI4YmVhYjM5ODgxODdkZDgxYTMxMzZjNjdjYzljNzU0IHB5M2sKKzY4MjQyIDkxY2Y5ZWQ0NmI3MjMyZTM1NWUwY2Q5OTViOGUzOTQ3MDVjZjg3ODkgcHkzaworNjgyNDMgZDNjN2U5ZDlhZGE3YzA3MjNiM2IwMGM4MjY1MzU2NjdlNDMyZDFkNyBsZWdhY3ktdHJ1bmsKKzY4MjQ0IDZjOGVkNjY3NDMyODkyZjI3M2M3OGU4NjU1ZTNmNjdhYjFhZjgxM2QgcmVsZWFzZTMwLW1haW50Cis2ODI0NSBhZjIwZGQxOWNjMGQ5OTgwN2YzYmFmMGViMzQ1ZjlhZWI5NTJhYTBlIHB5M2sKKzY4MjQ2IDkxYTkyMzM5NzM0NzgzOGU5ZjJhMDBkMWI5MGNlNzE1OGE4YTBmNmYgcHkzaworNjgyNDcgZDA5MTQzMDBlMTJlYmM1YThlZTBmNGRkNGE3NWNkYmM1YTZhZjJmOSBweTNrCis2ODI0OCA4YWExOTUzMGY5ZjIyOGY5ZTgzZGIyNTYzMzkyZGJjY2EyOGQ4Mjc0IHB5M2sKKzY4MjQ5IDQ1MGVjYmI1NmM3YjUwZWI5MmE4Y2U2ZjljNjI1MWU3MjdiNjgzMDQgcHkzaworNjgyNTAgMjgzMjFkYmRmZGMwYzA2YmQzOGUzYTFiMzhhMGQ2NDQ2MDIzNDBmOSByZWxlYXNlMzAtbWFpbnQKKzY4MjUxIDk2MTg4MDMxYjFiNTk3NmJiN2VhMGU2ODllNjRjMDNmOTRiZjcyZjEgcmVsZWFzZTMwLW1haW50Cis2ODI1MiA0MjI5YTRiMTRmMWQ4OTNjMzRiN2ExZDE5Njc0MjQ0YzYyOGMzOTA4IHJlbGVhc2UzMC1tYWludAorNjgyNTMgNzgyNTc4YzkyZTFkM2FiYzEyMTBjZjZlN2RmMDNlMDk1ZjY2YTM5MiByZWxlYXNlMzAtbWFpbnQKKzY4MjU0IDVlYmY4MjY4OWQzNmI0ZTVlOTM0ODllOGE2NjU3MTgzZjY5YmM5N2MgcmVsZWFzZTMwLW1haW50Cis2ODI1NSBmZDRkYTg1NWQ2MDNmNWY3ZjU4NTQzM2UxZDU0MzFhMjkyZTg1MmYwIHJlbGVhc2UzMC1tYWludAorNjgyNTYgYzllNWMxZmEyODVlODNhZDVjOTVkZTZiMGNiYjY1ODI4NzM0ZjQwNiByZWxlYXNlMzAtbWFpbnQKKzY4MjU3IGU4MGM4MDZjZTAyYjQ2NDQwZmIzMmNjMDEzMjk0ODM5YjE4NWUwMzMgcmVsZWFzZTMwLW1haW50Cis2ODI1OCA0NDM4N2YxYTI4YTIwYjQ2NjllMDVmMjBmZjM3ODhlZGQ3NGI3NWNjIHJlbGVhc2UzMC1tYWludAorNjgyNTkgOTFmMmZiYTAyYTUwMjIyODlmN2RlOTZiMmE2MmUxZDIyODQ4MGZkMSByZWxlYXNlMzAtbWFpbnQKKzY4MjYwIDgxYzQ5YmE3YmNjZjc3Nzk2NjIyZDE5MzU5NzQyMmNlZTIyYzRlNTQgcmVsZWFzZTMwLW1haW50Cis2ODI2MSBmYWRmNzhmNWY4YWQzNmVkZTYzNWU2YmE1NGZjNDg5ZTkxMzVlMjg5IHJlbGVhc2UzMC1tYWludAorNjgyNjIgZGI0NjQ0MjZhMzY1MzcyMTc5ZmJkNzhiZDBjYzllY2Q3YjhkMjZlMyByZWxlYXNlMzAtbWFpbnQKKzY4MjYzIDI0YjE4ZTg3ZDY2NDg5MTkwODUyNDE1YTE3NzMwM2EyNTE0NTYxOGQgcmVsZWFzZTMwLW1haW50Cis2ODI2NCAxNTQ4MzYxYmZkMmYzYmI2Zjg1ZWVmNWM3NjQzN2ZkMWQ4Y2YwNTNlIHJlbGVhc2UzMC1tYWludAorNjgyNjUgYmFkYjQ3MWRiYWViZTAxYTg1Y2M0MDBkN2MzZDQwNDkyNGUxZGYzMCByZWxlYXNlMzAtbWFpbnQKKzY4MjY2IDI3OWE1MTAwNjg4NTAwZWRiNzJkZWI5N2UyNzI4ODYxNzE3MzE1OWMgcmVsZWFzZTMwLW1haW50Cis2ODI2NyAwNDdkZjBhNWYxNzQzNjA0YzY2NWYyNGEyNTE5MzYwYTVhZmNiYTk3IHJlbGVhc2UzMC1tYWludAorNjgyNjggNWE1YjBiMmQwMWI5M2VjOWZiYTU1MWUwZjA3NWJjMTUyMTk2NjY0NiByZWxlYXNlMzAtbWFpbnQKKzY4MjY5IGJkMGUzNjFiZDY0MjE1MWI3YjIxMjJhNWNjYzMzODM5NWQ5NzZhMzIgcmVsZWFzZTMwLW1haW50Cis2ODI3MCBmYmY3ZjUzZjQ4ODhkMjkyZjhiMWVlNDExMTJjYjdjZWM3MWFhODUxIHJlbGVhc2UzMC1tYWludAorNjgyNzEgNmYzMGI5NzE0OGI2NTljMDZkZTM0MWE0NjA0ZThkMTc3MjQxM2UzZSByZWxlYXNlMzAtbWFpbnQKKzY4MjcyIDg1MWMyZjA0Zjk1ZDVhZWJhNDkwZjcwZGNhMzljMGM3YWZmYWJhZmEgcmVsZWFzZTMwLW1haW50Cis2ODI3MyBiOTZkNjE2ODhiODdjZjAzZTQwNGYwM2VhNTQxMmViNWU4ZDdkYWY1IHJlbGVhc2UzMC1tYWludAorNjgyNzQgYTZlZTJmZjRkZTRkODczZmYyNWY4MTU3MWEyNmMyZGY3MDhiZjBlZiByZWxlYXNlMzAtbWFpbnQKKzY4Mjc1IDkzY2YzYTZlYWQ2Mzk4Y2VhY2Q0NTUzZDk3NTI2OTc0ZWUyYWUxZDUgcmVsZWFzZTMwLW1haW50Cis2ODI3NiAwNWJmNzAwMmVjOTQyNjUxMjA3M2E1ODM0MWFjOGU3MTZlYjI1ZWY5IGxlZ2FjeS10cnVuaworNjgyNzcgYWZhYzBjYWJjM2FkMjA3MjM1MDZiMWJjMTYxNmY5YjU4MWQ5M2ZiMyByZWxlYXNlMzAtbWFpbnQKKzY4Mjc4IGVhN2UzMDdkZGQ1MWFmMzU0ZjE4NTNjYmIyYTQxOGM3MTBkZDMzZDIgcmVsZWFzZTMwLW1haW50Cis2ODI3OSA3YWMxZjZiZThhZDU1NTJiMzU3NzYzNWU2OGE1Nzg5ZDFhNWUzNmQ3IHJlbGVhc2UyNi1tYWludAorNjgyODAgZmI5MDU4OTBkMDQ5YWEzM2E0NWVlZGNjNDY2OTMzNDU4M2RmMjdlZCByZWxlYXNlMzAtbWFpbnQKKzY4MjgxIDhiMmMxYTBhOWEyYjgxMzhlNDA1ZTE2ZGU1OWE1YmFmODg3N2Y5NzUgcmVsZWFzZTMwLW1haW50Cis2ODI4MiAyMmIxMWMyMmNlZjg0NTk3OTlkZDJiNjZhMTFmMDUzZjNjNzQ3ZGRkIHJlbGVhc2UzMC1tYWludAorNjgyODMgM2IwODY3NGI5YjQ4M2Y3N2MyNzA2OTI0ZTZmZjdmOWUyOTlkZTRmOCByZWxlYXNlMzAtbWFpbnQKKzY4Mjg0IDFlYTUwMTNkOWRhZTBmMTIxNTQzOTJjNTM3ZWQ4MWM3MDMzYTcxNDEgcmVsZWFzZTMwLW1haW50Cis2ODI4NSA5ZWM5OWZkZjgwNGYxODM0NzgxNWJkY2Q4MDZiMDI0Y2Y2ZGY0Njk3IHB5M2sKKzY4Mjg2IDk0MDNkZWZiNjlmYjE5YmY5YmRiNDI1MWY1NWYxMWUzYWZmNGZmY2QgcmVsZWFzZTMwLW1haW50Cis2ODI4NyAxY2E4YzY4NTlhMDc4NTQ4MzVkOWFiN2NjZTQ2Y2IxNTc0NWE1NDFhIHJlbGVhc2UzMC1tYWludAorNjgyODggYmFlZGIwNjllNDI1NmJhYjM0OTYzYjlkN2Q0NzQ2NDJlZDBiNGFlYyBsZWdhY3ktdHJ1bmsKKzY4Mjg5IDUzNjc5ODU5OGFmMDg4ZDNhNDA5MDMwNDlmZTlmMjVlMWVkYzhkOWQgbGVnYWN5LXRydW5rCis2ODI5MCBkNDFhODY4NzUzMzJhNzZhNDBhM2NlMGI1MGZkN2I2MjBjZDhjNzU3IGxlZ2FjeS10cnVuaworNjgyOTEgNTRhNWFmZmI2YWYwMTg1ODY4NDVlYjc2M2U1ZWYzNTRlYTNjYzU4YiBsZWdhY3ktdHJ1bmsKKzY4MjkyIGY0ZWUwMDA2ZWUzOTJmNGVlNjUwY2NlMzhkM2IyNzU3NTczZjc0ZjAgbGVnYWN5LXRydW5rCis2ODI5MyBkYTM0ZjAyNjY0ZWRjOWQ1MjE4MjBjN2Y4NWQ3NzYwOWFjMGU5MmE1IGxlZ2FjeS10cnVuaworNjgyOTQgMDU3Y2I0NmRkYWFkN2E5ZTcyMzk2ODk0OTU5MzViNzRkNzY4OTBmNCByZWxlYXNlMjYtbWFpbnQKKzY4Mjk2IGY4NTQzNzNhNjZlNTViZmQzYTIyNWEzNDkwN2VhNzc0Mjk3NjJlOWIgbGVnYWN5LXRydW5rCis2ODI5OSAzYTU0MGVkNzk1ZDNiMDY4Zjg0NjJmMDU3MGE5MGNhOTI1YzRlMTA5IGxlZ2FjeS10cnVuaworNjgzMDAgZmFjOTM1MGI0MzdkYzlkZDFjOGZlNzU5ZTEzYzNmNDZlZWVlMWE4NiBweTNrCis2ODMwMSAxMTQ2YjdiMGQ1MThiM2M3OWU1NjMxY2M2ZjE1ZjJjYmUyZjZlYWEwIHB5M2sKKzY4MzAyIDU4NGIyNjNiOThkYTY0YTRiNzdiYjk2M2Q1Njg2OWY1NGQ0ODNhNDMgbGVnYWN5LXRydW5rCis2ODMwMyA5ZDUwNjNiNDExZTg3OTU2YjQzZjczZTYzMDEzOGQwZTllNTBjY2ZjIHB5M2sKKzY4MzA0IGUxOGYzMjJiOTMxZTc5MDY0MjE1MWJiNDRlNGFjMzA5NjhjMWY5M2MgbGVnYWN5LXRydW5rCis2ODMwNSA2ZTRkZGUyZTk1ZjdkM2M0MGQxOTdmOWUwZWZmMTQxZWM4YjRlZmUzIHB5M2sKKzY4MzA5IDEzZjE4NTdkZDliZjVkYThlNGVmZWZiYThhMWZjNGY4MzUyOGRhNTQgcHkzaworNjgzMTAgYzI1ZTViNjIwYTRjZjI0ODE3NzNmOGUyNzY1YTEwNzFhNThmNGY5YiByZWxlYXNlMzAtbWFpbnQKKzY4MzExIDkyY2QzNTUxZmExMzFiNzk5YzdhMWY0Zjg1NjIzN2M0NTdjYjNiMGQgbGVnYWN5LXRydW5rCis2ODMxMiBiYzlmODBkZGJiZTI1ZjUyZjhhNzhjZDBmYTcwNzViNzc5ZTQ1ZTEzIGxlZ2FjeS10cnVuaworNjgzMTQgMmNhZmU5ODkxMTdhMzNkZTc5MmQ5MzYyMDZjMTg3MTRlODYyNmI1ZCBsZWdhY3ktdHJ1bmsKKzY4MzE1IDQ3NDc0NWI3YTEyYTZjYTllZTY1MmU3OWEwMjBjM2ZjZWUyOGYzODggcHkzaworNjgzMTYgNDBiYTJhMTI1M2ZhNGJkNGUxNDZiMDUwZGZhNGZkMDAzMWMwZGU5MyBweTNrCis2ODMxNyAwOWE0OThlYjE4MjA1NWRlYzZiNGY4NmY0M2ViYmE1ZGI1YjM1Yjk3IGxlZ2FjeS10cnVuaworNjgzMTggZmQwYmI2OGFkNWM4YmMxY2Y4NTIzODhmMzNjMzg4NDkxN2JjM2Q5OCBsZWdhY3ktdHJ1bmsKKzY4MzE5IDlkZTIxZTYxNTU3N2U4ZmM0YjBmYjhiMDY0MmM4YWY1MzM5MTQ4ZDMgbGVnYWN5LXRydW5rCis2ODMyMCAyYmU0OTBhYmYzMzMzYzIwMTM5NTNlNDM0ZTQ1NjcxYTU3ZTU0N2JmIHJlbGVhc2UyNi1tYWludAorNjgzMjEgNTQzNmU1MzRkYTZlNGEzNzhmOWM4YTczYWRmZDIzOWQ2MjEyMGQ3MyBweTNrCis2ODMyMiBkZGFlYzQ3ZTZkZDk5YTZlMWI1ZmUzNDJhMDRlZjVmMTBjOGU5OWNlIHJlbGVhc2UzMC1tYWludAorNjgzMjMgNmE2ZjEzOGQ0MTYyY2YwMGJkNDcyZTUyMjA1OTM4ZmQ3NzZiYWJmNSBweTNrCis2ODMyNSAxNWM0YzllMzMwZTkyMGZiNmIyNTAxMzAwNGE4MDkzZDM3Y2M5ZWU5IGxlZ2FjeS10cnVuaworNjgzMjYgODY4NWU1ODU1YTQ3OTczOTg4NjYwMzU3MDkwMjE1Yzc5OTdkZjc4NyBsZWdhY3ktdHJ1bmsKKzY4MzI3IGUxNzFjZDUzYWM0YjZlZDc1Nzg3NzdkNDZlMWI5OWJkZTBlM2M3MTEgcHkzaworNjgzMzggNzU4ZDhmYjdiZDk5MDg5NzUyODk0MzU5MWY5NTNjYzJjNmZhM2YxMCBsZWdhY3ktdHJ1bmsKKzY4MzM5IDkxNzQ4OTU5NzJjYjA5MWMxMzA4ZGU1NDVhYmRmODZjMDE2NTIyZjQgcmVsZWFzZTI2LW1haW50Cis2ODM0MSA2ZDliMDMzMWQwNzNhM2VlZjU2ZWI1MTViMTk2YzA4NDYyMDAwZGU5IHB5M2sKKzY4MzQyIDI1NWU2NGExMzc1NTFkYjVhYjY4NjA2ZWFmYjVhMzJiNGE1ZDZlNWQgcHkzaworNjgzNDMgNjRmOTFmZjI0ZmU2YzI0ODAxYzkxZGYxMzVmOWZiNjljY2QwYzE0MCByZWxlYXNlMjYtbWFpbnQKKzY4MzQ0IDcyN2VlMTY2NTIxOWRkYzdkZjI2ZmUzZGE5OTFhMDRhMTJjOGZmZmQgbGVnYWN5LXRydW5rCis2ODM0NSBlNGFjZjA3OWI1MDhkYzAxMjUxZjRkYzQ0OWQ5YjhmYzI2NmFlY2FiIHJlbGVhc2UzMC1tYWludAorNjgzNTkgNDVhZWY1M2Y1YzcxYWM0YjNjYjg5MGQ0MWMxYjk3NDcwY2E4OTI4MCBweTNrCis2ODM2MCBmYzAwMDA2ODJiZmU3YzBlZDRkZmMzMDM3ZTgwMGIyMGMxZTViMDJhIGxlZ2FjeS10cnVuaworNjgzNjEgYmU5YjE1YmY2ODI4MzFjYWZjMzk1YWIzODI2YmI2ZDQxMDkxYzZmNyBsZWdhY3ktdHJ1bmsKKzY4MzYyIDYxNzE5OTc2OWJkMzg0YjUxODRiYzQ2YTI4NjRlNzE4Zjk4YTIzZjYgcmVsZWFzZTI2LW1haW50Cis2ODM2MyAyZmY5OTEwZjE1MjZjODkzNDcyMDRkYmQ5NzIzOWJhZTBlNjFjZDJkIHB5M2sKKzY4MzY0IGU5ODdlMGRmOGY0OGY0MTAwNTkyYTY2N2E0MjMyMmVlYjZmZTY0NTUgcmVsZWFzZTMwLW1haW50Cis2ODM3MyA4OTMzZGViYjkzMDhlYjcwNDhkNzU3NWNmNGMzNDA2MDJiY2U4ZDZkIGxlZ2FjeS10cnVuaworNjgzNzQgYTRhZjVlNmY2YjE3YzM5MjQ2YTc5ZTZkNGZlNDBlZTEzZTc4ZmU2OSByZWxlYXNlMjYtbWFpbnQKKzY4Mzc1IDgxZDIzNjg0ZjY5NGRlMTExNDNhY2YyYWZiOTEyMjc4MTM5ZmVlNTQgcHkzaworNjgzNzYgMDI3NmI4ZmRkZGE3ZDVkNTk0ZmIyMGM2N2FjODNjZGE1YTQ5MGI4NiByZWxlYXNlMzAtbWFpbnQKKzY4Mzc4IDhhNWE5NTkxMTAwZGU3MTc0ZmFhNzhmMzQzNzE2ZTU3ODVjZjQyNWMgbGVnYWN5LXRydW5rCis2ODM3OSBmZWQyYWUxZTUwYzJmZDU1Zjk3MzMxNDlmNWY5MTliYWE2ODE1OTQyIHB5M2sKKzY4MzgxIGYwZTBjMzUzNmUyMjcyNTJhMDQzZTkxOWQ5MzNkMmY1NjcwMjMxMWEgbGVnYWN5LXRydW5rCis2ODM4OCA0NGYxNGZkNGQ5YzI3MzEzOTJmYjhkMmU1MmNhY2UyYjU2ZTgwZDQ4IGxlZ2FjeS10cnVuaworNjgzOTMgNWFjOGYwYjVhNTliZmNjNTdkZTlkM2VhOTQ2YWM5N2UzYWYwY2FlMCBsZWdhY3ktdHJ1bmsKKzY4Mzk0IDBiOGQyY2YzZjU1YjQyYjNiODg2NjQ5OGVkNDliMzk0OGNkMmZhZGYgcmVsZWFzZTI2LW1haW50Cis2ODM5NSA3NmZhMWRlMjc0MmE5OGExMjdmMTI2MzhmYTczZjE5MjZhYzliYTg2IGxlZ2FjeS10cnVuaworNjg0MDEgYTIyOWNhM2ExMmFlMmM0NmRhOGRhZDE3OTRlYjdlNWM4MzFiZWY5MyBweTNrCis2ODQwMiBlNmEyOTc5MGQ3NWFlMGJhN2NlZmUzN2RlMzY3ODRhZjNhNWRkZGMyIHJlbGVhc2UzMC1tYWludAorNjg0MDkgYWRjNDMwYzE2YjU3YjZhNzZiN2RjY2M5Nzc1MTlkZDVmOTZhNWFhZCBweTNrCis2ODQxMCBmZmZkMTBjMTJhMWI3NzIzOWZiNmJlMmU3NmUyZmQ3MWQxZGMyZTEzIHJlbGVhc2UzMC1tYWludAorNjg0MTEgZjlmNWQ5MDQ3YTA1NDFmYTE2ZmZiNWVjMzY0MDVmMGFkYTU3OGFjNyBweTNrCis2ODQxNSBhM2YzMjlmMjNiMjM2ZTMzMTUzMTg2NGQ1OTFhZDMyNmJmYzc5ODY0IGxlZ2FjeS10cnVuaworNjg0MTYgZWE0MzE5NDNhOGRlNTI2MTdiYzVhNTVhNTc2MmVkN2EwOWY4M2Q0NSByZWxlYXNlMjYtbWFpbnQKKzY4NDE3IDU4OWY2ODQ0ZDhlMGVjM2FhZWYxOWQyYzliNjI2OWQyMmIxMjY0NDMgcHkzaworNjg0MTggMzY4ZGYwMDYwNzQwYzcyNjAxNzIzMjhjYjMyMjYwMDhjYzI2Zjk5ZCByZWxlYXNlMzAtbWFpbnQKKzY4NDIzIGVkM2ZkYmYxMDc3NTU2ZjJkMDJlZGZmYzVmYTU1MTVmMTRjYWQ4MDcgbGVnYWN5LXRydW5rCis2ODQyNCBlZGViOTAzOGM0MDViMTE0NzA0YzM1YTQ4MTE0OTkzZDE2ZmYzNDFiIGxlZ2FjeS10cnVuaworNjg0MjUgZDk3YWE5NDNiZWJiNTVkMzU4Y2IyYWMwNjI5YWU5YzkyODMyZjJlMyBsZWdhY3ktdHJ1bmsKKzY4NDI2IGQ4YjY0YzY3NmJjYjFkZTVmNjI1NGZkM2MxYTM2NTM4YmM3MDJlZGIgbGVnYWN5LXRydW5rCis2ODQyNyA1ZjI5MmRlYmQyNGMzNTRkMjViODYzZTg3OTdhMTE3MTAxNDU5NWRiIHB5M2sKKzY4NDI4IGU0OTZmZGI5MjdmYTYyZDA0ODNhMzM5NWRlMWVlNTc4ZjdjMDc1YjUgcmVsZWFzZTI2LW1haW50Cis2ODQyOSA1YzYyNDRkMjE3ZmYxMWI5NzNkYzhkNWI0ZDBiYjA4ZTdkOWNlZDQ4IGxlZ2FjeS10cnVuaworNjg0MzAgNjlhMmE0ZGJkOWI0ZjRkYTRmNDA2ZDVhYWRjNDY2NmRiYzIyYWZkZSBsZWdhY3ktdHJ1bmsKKzY4NDMxIDcyZmU1MWQ2ZjgwMGJjZTc3Y2M2YzQ0Yzg5MWYzNzAxMGJiM2MxYmEgcmVsZWFzZTMwLW1haW50Cis2ODQzMiBlZjNhMWVjZDQ2NjNmZTY1NGUyOTJlYTAzMWUxZjc2ZjhhNTg4ZWFjIGxlZ2FjeS10cnVuaworNjg0MzMgZTNjMjEyNzk5NzA2ZTY2ZmFjNzNjNzliYTBmNGEzZWQzMDE2MGNmOSBweTNrCis2ODQzNCA0ODBmY2RkODIwMTYyMDlkZDcyOTlhZjUzMGU0YzNkZmViNGZhYWMzIHB5M2sKKzY4NDM1IDM2Njg2ZDRkN2U3Mjc1YmMyNDYxZjEwMTlmNTYyMTIwNjJhYjNkMzIgbGVnYWN5LXRydW5rCis2ODQzNiAzYjkzMzU4NTU0NzE5NmFlYzA0MDEwNjYxMGE4ZDU4MTY2YzEzMDJmIHB5M2sKKzY4NDM3IDBhNjZlMWRjMzBmMjIzNTY5ODM3YTdkMWVlOWEyOGE3NDJmZDUyNjggcmVsZWFzZTI2LW1haW50Cis2ODQzOCBjN2MzNDRiNjNlY2NlYmY2MzI3M2ZjOGUyYWE3YjVhODFkOTFlZWQ5IHB5M2sKKzY4NDM5IDdiODZkNmNhYzJiMTg1ZTFjNTYwMWU3N2RhZTFlMDgxNmIwNzQxNGEgbGVnYWN5LXRydW5rCis2ODQ0MCBmMTI3YmNiMGFhNzEyMjVmZmI0YzVhYmQ3NmE4M2ZmOGNkZjI0NWY3IHB5M2sKKzY4NDQxIDlmMDQxYmEzZTRjOTFmYzMzZjNjYTM5MmY3ZjEyNzJhMDg4ZGM1NjIgcmVsZWFzZTI2LW1haW50Cis2ODQ0MiA5ZDA5M2VmODljNTYwNzViZWYwZGMwYmQ1MmYwYzZiODg3ZThkMzViIHJlbGVhc2UzMC1tYWludAorNjg0NDMgY2UzNzMzMTM5ZmFjODAzZWZhODRhNDRkYmViMzNiMjMzYjYxNGE5YyBweTNrCis2ODQ0NCBjOTRmMDI3OWZlZGU5NzdiMjQ3OTU2M2RjZDcwOTY2NzcxNTQ1MWE0IHJlbGVhc2UzMC1tYWludAorNjg0NDUgY2NkOTViMWFhZGU5ZDRjOThkYWM5MDVjNzMzYTU4ZjJlNGViYWMwOSBweTNrCis2ODQ1MCBiNzNiZDVhNzRhMjc4ODM3YmMyYTAyMjk3Y2Y4NDIzZWYxMzQzYTM5IGxlZ2FjeS10cnVuaworNjg0NTEgYmMzMGUzOTVhYTE0YWRlZjAwMjNkMTAyMDNlMTUzNmQzMjBjZWNkZSBweTNrCis2ODQ1MiBiOThmZThkYzhhY2Q2YTEwNDUwYmQ5ZDNhZjg2NDFkM2VhY2YwNDIxIHJlbGVhc2UzMC1tYWludAorNjg0NTMgMzg4NmU0Yzg4ZmE1OTZkOTBlMjQ4MGIzZTEyODVlMzJhMDA1YmVlMCBweTNrCis2ODQ1NCA4YzQ5ZmYwY2UxN2FmMzZlZThkMGI4OTRhMDIyMmQyODQ4MjQzZjExIHB5M2sKKzY4NDU1IGZkY2NhODc5M2ViOWY3ZTI1MTE4MTBmYjJlMTAwY2VlNjA0MTc5ODUgbGVnYWN5LXRydW5rCis2ODQ1NiA5YjI3NmNlMzU2OTdiMjU2YTljYmUzYWY5ZjkxNTBhOGE0ZWM1MWE2IHJlbGVhc2UzMC1tYWludAorNjg0NTcgY2EwOThmYzE4ZWM2MDk4MDM0YmUyZTRmMTRlNGYyNzg3OGQ5YmU2YSBsZWdhY3ktdHJ1bmsKKzY4NDU4IDA3YmJjMmUyMGFhNGI1MDJmYTFkNzY2NDVhMmVlM2ZlMmQ4OTMyYTUgbGVnYWN5LXRydW5rCis2ODQ1OSBmMWNhNWRkNTlhY2E4MjY0ZWI4YmM2Yjk1ZTIwOTk3MTgxYzM5YjYwIGxlZ2FjeS10cnVuaworNjg0NjAgYzhmNzkzZTE1OWJiYmJlOTc1ZTdkMGRhNDZkOWI4ODhhMDA0OWJlNCBsZWdhY3ktdHJ1bmsKKzY4NDYxIGU2ZjU1YzllYzNkMDE0YWZlOTRjMDhiNzc3ODE2M2Q2ZGYyNGVkN2UgbGVnYWN5LXRydW5rCis2ODQ2MiA3OTI3NjMxNmI5NGIzOGYzZGVlYWE4YjAzNzAxM2I5M2NiNjBhNWViIGxlZ2FjeS10cnVuaworNjg0NjMgNjJjYTJjY2NkYjZmYzIwZWEzMzNhZjU4NzRkYmZmYzhjODUwNjkwZSBweTNrCis2ODQ2NCA5YzJiZDY0N2I2NDY0ZWI2NjVkZGMwMjI4ZTU3MDExMWE2NTU3YjU4IHJlbGVhc2UzMC1tYWludAorNjg0NjUgNWQwZWFjMDFhMjg1ZDk4ZWEzODJkYTk3MDI1YjY2NWFhZjNjMzAzZCBweTNrCis2ODQ2NiBiYzY3MGE4ZGY0NGJiMmEzOGEyNDFhNDIzZTlmMmIxNzIzNmRkOTZiIHJlbGVhc2UzMC1tYWludAorNjg0NjcgOTFlMzg1MWM4Y2M3Y2EyMjQzYTk0NTg1MWRjNWU1NmFiMzY2YTBhMSBweTNrCis2ODQ2OCBlMDBiMzI0NzQ5YjA0ZTI5NjM1Y2JiMWNhZjZmMDI0OTEyMmYwYzQ0IGxlZ2FjeS10cnVuaworNjg0NjkgOGFmNTFjZmRkNWU5MGMxMDUxMTMxYzUwYTEyZGQ1NTdjN2RmMmE0NSBsZWdhY3ktdHJ1bmsKKzY4NDcwIDFlMDcwYjgzY2ZhOTRiNzBhNTNlNGMyYjAxYjk3OTA2NzkxZDllNTkgbGVnYWN5LXRydW5rCis2ODQ3MSA5MzdmNTAwZTBmMDZkMDgwN2ZlNGUwNWUxZDBiN2UzZjJhN2NkYWJlIHJlbGVhc2UyNi1tYWludAorNjg0NzIgZDQ0ODNmZWNkNjg3M2MwZWNjNDA3NGQ0MzBkZjM2ZWQ4ZjRhZmZhYiByZWxlYXNlMjYtbWFpbnQKKzY4NDczIGMzNGQ3MjFjMmRjNzI0NjI5YjJhYjUxYmYxMDU1MjMzZDY1MDI0NTYgcmVsZWFzZTI2LW1haW50Cis2ODQ3NCA2MzhlMzA5ZWNjOThhZTgxYTBhZGI3ZDU3NjUwYmQwMzkwZTg1YzZlIHB5M2sKKzY4NDc1IGEwZmY5MDA3YzJhYTNlNzg4YmM5MzQwMmQ1NTQ4OGVlZTA2YmZjNTkgcHkzaworNjg0NzYgNTMwMmY4MDY1MzdhN2JiYzFmNmRmYmJkMTUxYzE2ZjMwMDc3NDNlMSBsZWdhY3ktdHJ1bmsKKzY4NDc3IGQzMjZhNjczY2I2NjA1ZGY0ZWFmYzFkMWY0ODhlYzM0YWZlYWQwYTEgcHkzaworNjg0NzggNWM2Y2JiN2E2MmIwNzZiZWI1MWZkNTI1ODMyZjE1YTk3YjliYjlkYSByZWxlYXNlMzAtbWFpbnQKKzY4NDc5IGZhOTIyOTg1YWY3MzIxN2ViOGFkODFmZGQ5MDY0YTJhZjM3ZTEzY2YgcHkzaworNjg0ODAgZGJlMzllYmQzMDI1NGZlZjM1MTIyZDM4ZjkwYjRjNmFhZTUyZThkZSBsZWdhY3ktdHJ1bmsKKzY4NDgxIGNkYzJmZTFiZThhNWUyMGQ4OTNkNmVlMDY2ZmUyMzVmYjJiMTMxODYgbGVnYWN5LXRydW5rCis2ODQ4MiAyZDQ3MWZkODhhZmZiMjk0ODkyOGRkZGFhMjFkMTdhMGE1MTc0Mzc5IHB5M2sKKzY4NDgzIDhlNjIzYjc4YWNiZjZjMGQ2NjFlNDYzMGE1ZmI4NzAyNTBjYjEyOGMgcHkzaworNjg0ODQgNWQ1ZDkwNzRmNGNhZDQ1NzAyZjRhNmZiZDUwYmFlYzQ1YmNlNjI4OCBsZWdhY3ktdHJ1bmsKKzY4NDg1IDk5YzQ0MTY0MGY3MGM3MTA0Zjc4NDQwZjc5ZWYyZjk0NDI0ZmQ4ZDUgbGVnYWN5LXRydW5rCis2ODQ4NiAxNWEwNTZlMGY4OWZlZjI2NGFiMjA5YWExYjBlN2U1YmIwYzJkNTAxIHB5M2sKKzY4NDg3IDc0NDRmNTY0ZTI3ZDFlOWY2NTliM2Y4YTQ0ZjA1N2M3ZjQ2NjE3YzIgbGVnYWN5LXRydW5rCis2ODQ4OCA4ZGNhYjI0Mzk3YThkMmYwMDcwN2UwZjRjZWU3NzJlZmViODYyZWQyIHB5M2sKKzY4NDg5IDI5M2FjNDRkN2ZmMGRmNjZlNGE0MDFkMTE2MzcwYjIwOTAwYzIwYTggcHkzaworNjg0OTAgM2I1YmUwZWUzMmVhYzk3OTkxYjY3YWM1Njg3OWI0NWJhZmViNDk4ZiByZWxlYXNlMjYtbWFpbnQKKzY4NDkxIGU5NWMzYWViNGM4NTgzOGRhMmFhMjA5ZjZkYzcwMjUxODQzYTVjMWYgcHkzaworNjg0OTIgZWY0YmQ3NzA4YWQ3YjNkYzI4OWM3MzNlMjNhNWZhNjNlNjY3MTQ4MCByZWxlYXNlMzAtbWFpbnQKKzY4NDkzIDQwY2E4YjIxMjIwODFkZTUzZjUyMzViNmY1MTIxNDVjZmIzNmVkMGIgbGVnYWN5LXRydW5rCis2ODQ5NSAxMjhlMjBkYTg5ZWI0MWZjZjRiNmU2MTJjOTA4OTI0YmVlYzBlYmU1IGxlZ2FjeS10cnVuaworNjg0OTYgNTg2MWY2ZTEwODYwNzUzZDBlNzk5YTI0NTc3N2Y4MTM4ZTBmMjIwMCBsZWdhY3ktdHJ1bmsKKzY4NDk3IDk1NTc2ZDhhZjc5ODllMzQzNWJmOTUwMzA3ZDgyY2I4OWYyOTQzMDMgcHkzaworNjg0OTggMDI0NDhjY2Y0MWUwMWE1OTAzODYwZDA0YmE1ZTc3ODg5NzUzMTE0NiBsZWdhY3ktdHJ1bmsKKzY4NDk5IDhlMDNkYWFhZmM3NDFkYjg5ODg2YjgxOTQxMDQ3NGE4NDZkMzdiYTIgbGVnYWN5LXRydW5rCis2ODUwMCBkODdjYmZjNmM1YzY3NzE0MzE1ZGM5NzBkM2Y3OGVkOTNmMDcwNDNmIHB5M2sKKzY4NTAxIGJiZjQ2NDIxMDk4NDA0NWJhMTUxOWEyMmFlNmUwNzU4Y2I5NjVkZjAgbGVnYWN5LXRydW5rCis2ODUwMiBlYWY3Y2ViOGFiNDU0YTNmMDNiZjUxMzY3ZThkYTRlNDNjZDA5ODJlIHB5M2sKKzY4NTA4IDllMTgxZWVkYzk1Y2EyYmI5YTUwNDRhMTU3Njg2MDA3NzIyMGUyMTMgcHkzaworNjg1MDkgMDQ5Njk2M2ZjZmU5ZmI2NGM5NDU4YzIxZDM1NjM1OTMyMjM2MWQxMSByZWxlYXNlMzAtbWFpbnQKKzY4NTExIDRkMzUwZjJiMWYyZTgzODBjYzVlODVkZDdhYjY3MjVmNGEzYWQwMzggcHkzaworNjg1MTIgMTlkZmZkZWM1NTQ3YWI5NDJkNGNjZGNjMDlkMTViNmFlZDZkNjg0ZCBsZWdhY3ktdHJ1bmsKKzY4NTEzIDBmMWU0YWI5NTY1NTE3MWZmNjEwYWZiM2M4NmQyZWY1ZWNmYzM0MTggcmVsZWFzZTMwLW1haW50Cis2ODUxNCA0NGUwYzY5YTUzMDQ4MWQ3Yzc4MmM2YTBmMjU3ODEzZDUyODRkMDBmIGxlZ2FjeS10cnVuaworNjg1MTUgNDNlZGM2NTgxZTQ0ZGZjNDgyY2FiNDE4ZTNhZGRjZTRhZTlmOThjMSBsZWdhY3ktdHJ1bmsKKzY4NTE2IDkzYjJhOTEzZDhhY2ZkMDczYmU2YTVmOGQ2OTQwMTc3ZDI2YzIyYmQgcHkzaworNjg1MjEgYWIwODZhZmRjZjBjZjdlMGY0NDVmNmYyNDg4ZGI4ZDNmODY0NGZiYiBsZWdhY3ktdHJ1bmsKKzY4NTIyIDJkODk3NzJjYzI1Njg4YTZmZmNkNDIyNThhMTZiYjA2YjIxMTQ5NjUgcmVsZWFzZTI2LW1haW50Cis2ODUyMyAyOTM1Y2VkZTU5NGUzNzdmZWMxYmZhZGY2ODcxNDI4MDU3Zjg2OTE4IGxlZ2FjeS10cnVuaworNjg1MjQgNzU2NjFiZjhjYjJjNjczYzM2NzEzOTcwYzg4MmI5ZjAxZDhkMTc2MiByZWxlYXNlMjYtbWFpbnQKKzY4NTI1IDk1YTRmNTMwOGJlMjRjZGVhYTE4Yjk2ODM0ZDczYTZmNDI3NzllYjggcHkzaworNjg1MjYgZGM0MmFkZjg4N2I1NzVmMDQyMmUzZTBlNWMxZmZmZWEyMWVmNzRhNCByZWxlYXNlMzAtbWFpbnQKKzY4NTI3IGQ4NDFmZjY3Y2M2MWI4YTI1NThmYTc1YTNlMGNlMDQyODQxYjM2ODMgbGVnYWN5LXRydW5rCis2ODUyOCA3MDQ0M2FlNzZiMTA1YzgxOWMwNTc0YTg1ZDlmZTgzOTU1NTEwMWViIHB5M2sKKzY4NTI5IDkyYmQwMTQxNTkwNjk3YjU5MzIxYzM3YjZiNDEwNTdmMjg0MDU2NjQgcHkzaworNjg1MzAgMmZmZGY4ZGQzZThiNTA2NGEyOTVlNDI1OWYyNTk0OGQyMjRmMDFkZSByZWxlYXNlMzAtbWFpbnQKKzY4NTMyIGQwOWQ2ZmUzMWI2MTk5ODdmNzlmYTk0MjQzYzkwMzM0ZWYyZDFlNWUgbGVnYWN5LXRydW5rCis2ODUzMyAyN2RiODJhNWNkYTkxOWRjY2EyMWY0Y2ZjNmQ0Nzk2YTlhNWU2Mjg3IHB5M2sKKzY4NTM0IGI3ZmJlMzdlYjg5MDRkZjljYmY5OTg1YTVkY2RiM2UyYjI4MjRlYmUgbGVnYWN5LXRydW5rCis2ODUzNSA0OTFlYzQxMWU1YzhmZjM2ZmQxODE0MGIyZTNmYTBkZjQ2MzA4MTJmIGxlZ2FjeS10cnVuaworNjg1MzYgNzU0M2YxMjgyMDczNjk0YTQ2NDRkMTU3NGJiZjkwNTQ5YzM4MTAwNyBsZWdhY3ktdHJ1bmsKKzY4NTM3IDBmMWIzZjMxMWFlMDEwMmQyZjk0ODZiYjUyZDlkZTMyODU5ZmViODYgcHkzaworNjg1MzggNmVlYTgwYmRjYmY1ZThmNjE2ODgwNGYyYjBkMmYwYWIyYjBiMTcwNyBweTNrCis2ODUzOSA1ZjRjMmRlOTUwOTFiNTJjMDZjY2VmZDkyNWRkMTM4YmMzY2JhMzM1IHB5M2sKKzY4NTQwIGFkOTY5MTM1MGM5MzFkZjYxNDc5NWUwMTIwNWU4NDliMmY3ODQ5MmUgbGVnYWN5LXRydW5rCis2ODU0MSBlODE1NGJkMzIyY2I1NjYxMmMyNDFmODJjNjQ3ZTUxOTllYjdiZGRjIHB5M2sKKzY4NTQyIDg1NDAyNjgwNDBmZjA0M2YwMDgyZjQ3MmE2YjJlZTBmZTNjMGIzMjQgbGVnYWN5LXRydW5rCis2ODU0MyAyYjI3MDdmZjhiYjdhOWYyNWM1Y2MwZmY4NDA1YzZlOWQ1NTM4ZmM4IHB5M2sKKzY4NTQ0IGU0MGNlOGZmZTYzMmQxNmM2ZjYzYjc0YmE2MjUyOGMyNzc1YWVlMzQgbGVnYWN5LXRydW5rCis2ODU0NSAzOGUxOGE4ODRmM2ZlZTY1ZDEyMDljYzdiMGZlOTg2NTdkOWUyOWY2IGxlZ2FjeS10cnVuaworNjg1NDYgODdhZGNjZTQ4ZGVmZTY0ZjU0ZjhlYjQwZTFhNGNlMDE4NjdmNTZiOSBsZWdhY3ktdHJ1bmsKKzY4NTQ3IGJiY2Q0NjM0YWU3MzNiMmQ4NDFkMTdhYThlZjQ3NDIyZDcwMTI3MTUgbGVnYWN5LXRydW5rCis2ODU1MiBiYzkyYmIyMDgxOWZjOWNiNTU2Y2FiYjc1N2Y3ZWJhZjA4OGM4MDAzIGxlZ2FjeS10cnVuaworNjg1NTMgZjU1Yjg1NTMyMzkyN2JkNWU1MDI5ZWY5NmRhMjBmNzZhZTYwNjA5ZSBweTNrCis2ODU1NiA4NzFhMWZmNDZmYTY5YzNkZDZlYTU0ODMzMjE1MjgzZWE0NDY3ZDhiIHJlbGVhc2UzMC1tYWludAorNjg1NTkgNTkzNDYxMmQ1MDcwNWIwNDlhOGI5YjM3OTcwMWE2Mzc1OGY1ZWFmYSBsZWdhY3ktdHJ1bmsKKzY4NTYwIGU5NzQ4ZGI0NzYzNTdjYzYxNDJmYjljMWQwMjYzMWJlMjgzZDlhZmQgbGVnYWN5LXRydW5rCis2ODU2MSBjOTljZTAxNjQ2OTljM2Q0ZjZiNThkZDBhYTJhN2E1NTFjMTgyZGQ5IHB5M2sKKzY4NTYyIGY0NTk5N2Q5YWM1NTU2MThhZGQxYzBjNjZjYTllNzkxOTFhN2MzNDkgbGVnYWN5LXRydW5rCis2ODU2MyAxMmE3ODdiNDRkYjU0NDlmMDBmMDEzNTUxYzYzMzc2ZjhiN2MzMzNlIGxlZ2FjeS10cnVuaworNjg1NjQgMmMwM2M3NTgwYWEzOGJkMzZmMzI2YzA0ODA4MGFkNmI0NzNmOGM2OSBweTNrCis2ODU2NSBiYTE1MjFmMjQ3NDkwNDM0NjI1NWM1MzgyY2U2ZmNiZTIxMTE1NDQ4IGxlZ2FjeS10cnVuaworNjg1NjYgZTMwMTE0MWU5MWIxMDQ2N2VkMWUwN2RjNGIzNDMwNjIxNGQxZTYyNyBsZWdhY3ktdHJ1bmsKKzY4NTY3IGU1Zjk5NmNkYTMyMTZlNGIwMTFkYjVlMDIzZDJlYzFhN2JiMTgzMzIgbGVnYWN5LXRydW5rCis2ODU2OCBhMTlkNTk2ZDM1MDBjZmE2MDU1MzRjNDFhYjFhY2M1NjM0ZTkzNDg1IGxlZ2FjeS10cnVuaworNjg1NjkgMmE4MmJkMjllYzE4ODg1OGQ5ZThmNmFhOTVlZDJiYWNhNGQ1MjRkYiBsZWdhY3ktdHJ1bmsKKzY4NTcwIDQ1NGI2OTZjMWQ3MzBlMmM2NmUyNTdkY2M3ZDRmYjIwYzExZWU0MWUgbGVnYWN5LXRydW5rCis2ODU3MSBjNzc2YjZkODE0YzIzZThiYWJjN2EyZWYyNjEyMTJlOTFiZGVjMTRiIGxlZ2FjeS10cnVuaworNjg1NzIgNTliMTIxMmE0ZGJmM2ZlMDEzMjJmMmVjODY5YWNmMDdhZmQyZjYwMyBsZWdhY3ktdHJ1bmsKKzY4NTc1IGJlOGU5NThkZWU5NGNlZDRhZTZjNTQ3MDA2OTRlNDlmNDc2N2U4ZDYgbGVnYWN5LXRydW5rCis2ODU3OSAwOGFjNDQwNDA4YzlkMzJhNmVmNDNkM2IwYWYwMmQyY2FjY2RhYTA2IGxlZ2FjeS10cnVuaworNjg1ODAgOWE1ZDE0NWYxOWE1MTJiNmI1ODNlZGVjODk2MGU0MmNjMDVmNTg5NCBsZWdhY3ktdHJ1bmsKKzY4NTgxIDQzOTllM2YxMGIxOWIwYTE3MGE4Y2IyYzEzYWM0YzY1MmNhMjZiMzYgcHkzaworNjg1ODIgNmUzM2FlYWVlNzdkZDM5NjgwNTdhODg4NTA4MDc5OTNjNWRkZDY0ZiBsZWdhY3ktdHJ1bmsKKzY4NTgzIGY1NzE4NDRiZWY1YzlhOGU4MDc3MGRiMzRhYTY2MjY2ZDQ4NTM5M2IgcmVsZWFzZTMwLW1haW50Cis2ODU4NCBhMzQ5NGE1YjA0OTU2NDZjZWM5N2I1MTY5NWNlZGMxZTNjZjJjNGFiIGxlZ2FjeS10cnVuaworNjg1ODUgMDJhYjE2MTQyM2E1ODZkMjRkMGYwZDYzNmRiMzhmZmNjMTJjZDkwMiBweTNrCis2ODU4NiA0MTNjY2EzZWJlODJlMDIxN2ViMjk1YjhiZmJjZDUzNzM1NjI3ZGIwIHB5M2sKKzY4NTg3IDAyMjkwNTVjOGJlMDZmMTAxZDNkZGE3M2EwOGU3YmRiMGY5YWJlNjUgcHkzaworNjg1ODggMDk0MzM0NGE1MjYxYmM3NjA4MzdiZmI4NmUyYmE2ZWJmMTU4ZjVhMyByZWxlYXNlMzAtbWFpbnQKKzY4NTg5IDA4ZjNmZTY5MTUxYWM2ZDA0NDkzNjgxMmM3YjU3MGQ0OGRlOTllNGUgbGVnYWN5LXRydW5rCis2ODU5MCBmYWI1MDEyNzdiYzJjM2MzMjljMGM2NGYzMmM4NzViMDZhMjU4NDhmIHB5M2sKKzY4NTkxIGRkYTMxMDdmNmJjN2E3YmI2MDAwMTQ2MzgwYjIwYTE0MmQzYjIzNDMgcHkzaworNjg1OTIgYTg1OGI2MWRiMzI0ZDdlZDNjNmVmNDliNzE4ZDdkYzM3OTI4ZGE4MCBsZWdhY3ktdHJ1bmsKKzY4NTkzIGU0NmEwNmEyNjRiMzJkZGI0YTZlYjEyNjg5MjI1MjFlYzJjMzQwYTMgcHkzaworNjg1OTQgMGZkY2UzOTlkY2RlMGEyM2M4MTc5MWNlNjdhMzgxZGExYjMzNGEwMiByZWxlYXNlMjYtbWFpbnQKKzY4NTk2IDY1YzE5MzhmYjlmZmYyNzhhY2M0Y2U2NTJhMWQ1NDhhYjUxNmY5OTggbGVnYWN5LXRydW5rCis2ODU5NyBiY2Y2NjYzYzVjMDQ4YmE5YTE3YWM0ZWI3YjNlZDI2NzFmMTAwYzQ3IGxlZ2FjeS10cnVuaworNjg1OTkgMmQ0NTNiMjIxYmVjZDdlNGVhYWQwZWUzYzJmYmIxNzg3NTg3NzgxYSByZWxlYXNlMjYtbWFpbnQKKzY4NjAwIDBlZjFlNjY0YTRhNDVhMjkwZGFhMjlmYjhkOGVjNjE3MjU5MmI5YTkgcmVsZWFzZTI2LW1haW50Cis2ODYwMSBlMTFjOTllMWU2ZTdlYzgwMTYyY2M4ODEwZmQ3ODAzZmU3MzhmYzUxIHJlbGVhc2UyNi1tYWludAorNjg2MDIgMmQ1YTljN2U5YjRlMzBiOWRiMTkxYTYzNGM5NzliYmRmNjVkZTFhNyByZWxlYXNlMjYtbWFpbnQKKzY4NjAzIDQ4MzJhMGIxMjg3YjdjNmI3OWM0NjYzOTA1YjE2Mzc1MTVhOTk3YzMgbGVnYWN5LXRydW5rCis2ODYwNCBkMmNjMjZiZGE2YTkzNWU4OGE3MzFmMjQ2NDlmMjk2ZDlmZjA0M2VjIGxlZ2FjeS10cnVuaworNjg2MDUgMDQxMzFjNzAyZDE3MjYwNjZkNDYxMWMyZjQ3YjdiN2E1YTMyZmQ2NiBsZWdhY3ktdHJ1bmsKKzY4NjA2IDBlMDVlMDc4YmNlZDMzMjZhY2E5NzcwODhkZDkzOWFkYjBiMTI3OGUgcHkzaworNjg2MDcgOGRmODE5NDFkZTA1Y2Q1OWI5Njg3MzkwMWVmOGRmYTJiMGIxMTMwYSBsZWdhY3ktdHJ1bmsKKzY4NjA5IGNmZjRmYzUyYzcwOGZkM2MwMTMwMjU4ZjZhNDVlMTEzYmY0MWRhZDEgdGxlZS1hc3Qtb3B0aW1pemUKKzY4NjEwIDY2YjgxYWNhY2JjMDUyODNmMmZlNjEyMWMwZWU0ZjhlMjY4YjcwYjggbGVnYWN5LXRydW5rCis2ODYxMSAzMzc4ZWFmZDI3ZGY1OWE1NzBmYWE1ZWFmMzJjMTRmMjAxYzY0MmVlIGxlZ2FjeS10cnVuaworNjg2MTIgYWU1ZWQxNTc3NGI0ZjU3YWQ5YTcyYTJhMWYxYmM3NGFjNzMwNjA1OCBsZWdhY3ktdHJ1bmsKKzY4NjEzIGViZmU5MTdkMGVlYTJkNzVmYmQ2ZDQzODVlM2MxMmNiOTM4MDM1OTkgbGVnYWN5LXRydW5rCis2ODYxNCBkMDA4NmMxNzZlODI0ZTFkM2ViMzk4YWJiODY5ZWQ4MDEyMjRmYzZhIHJlbGVhc2UyNi1tYWludAorNjg2MTUgYjE3ZWM0YzRhN2MzODUwMGFlYmRhOTMwN2JkNjk2YzBiMWYyMzg5MyBweTNrCis2ODYxNiBiYjg2ZjJlZDE4YWFiMGUyYzI0MGIzMTViNTRmMzgyODY2YTQyMzI5IHJlbGVhc2UzMC1tYWludAorNjg2MTggYmU1OWEyM2I3YzA0MTVhZWMxZDg0MDM0ZjZlZmQyNDJiMTU2NTFiOCBsZWdhY3ktdHJ1bmsKKzY4NjE5IGU4M2FiOTVlOWM4N2JkYjkzODgyOGUyNTk5Zjc4MjNmMTc4NTdlMGQgcHkzaworNjg2MjAgNDI3ZTQzZDBlMDMxY2Y1YzBiY2M1ZTY0MzllNDRkMDA1ODM1MWZlMiByZWxlYXNlMzAtbWFpbnQKKzY4NjIxIDZkZGUwZGYzYmI0ZWNiN2NjMmFjOTVjNTBhZDJlZWVkZjEyNmU4MWQgbGVnYWN5LXRydW5rCis2ODYyMiA2NWJlYmU0YTFhYTNmOTFmNTEzZWM3YzVmYmI5ZDY2ZjI0NzFiZGJkIGxlZ2FjeS10cnVuaworNjg2MjMgODg0Y2QzZjE5YjIwZWM2Zjk1M2Y1MjkzNjI0NGMxNzEwNmZmZGE0ZCBsZWdhY3ktdHJ1bmsKKzY4NjI0IDI2ODBhNGJlYWVhMTg2OWEwNDY5N2VhMjAxYjUwYmMyYzIzN2YwOTEgbGVnYWN5LXRydW5rCis2ODYyOCBhZGIyMzY5ZWI3YmJkMDYyZjQxOWU5MzIxYzA1ZGIxNzA0ZTU5NWE5IGxlZ2FjeS10cnVuaworNjg2MjkgMTJhNWI2N2Q1NjdkMjIxZTlkNDUxMzgzNWY5ZmE2OGY3YmJjOTBlMSBweTNrCis2ODYzMCBjNjk5NWRhZTk4YTY5YzgzZjNmNDgxZjQ5NjA2ZmJhMTczY2QyYTg1IHB5M2sKKzY4NjMxIGEwNGIxYzcxNjdiYWRkZGZhODJlOTI3NmYyMWViNzI3MzNmY2Y2NDQgcmVsZWFzZTMwLW1haW50Cis2ODYzMyA4YmUxNTlkNmZkNDA0M2NjNmY2MWNhZGZjNmEzNGQxZGIxMWJjOWViIGxlZ2FjeS10cnVuaworNjg2MzggMmNjNDJlZmRkM2ZlZGU1MWNiZGY3MTk2MTQ3YjMyN2Q0YmY3NjUzOCBweTNrCis2ODYzOSBjMTBmNmYxMTZhZjBjMWE4ZmQxMzY2NDZhYjA1MDNiMDU4ZDUyNGFlIHJlbGVhc2UzMC1tYWludAorNjg2NDMgNzQ5YTZiODUzMzc2YjY5NWQ2NmRhZjI1MTlhMjMxMTQ5NTE3ZTZkNiBweTNrCis2ODY0NyAwYjFhOGY1NjExN2FjNzlmODExOWQxMjA4MmVkNGZmZDAyZTEwMmYzIHB5M2sKKzY4NjQ4IGNiMjkwNDgyYTFhN2Y5ODlkNGQ5ZTNkMjJmOTg0ZDRlY2RmMDdjNmIgbGVnYWN5LXRydW5rCis2ODY0OSAxZTJkN2YwNzUzMjZhOGFiZjMzNzBkYmVmOTQ3Njc2NTA2NTYwNzYyIGxlZ2FjeS10cnVuaworNjg2NTAgMWI4MTc3MmNkNTlkNzg5OTczMzE0MjMwZThmZmUwZDVjYzE1MzE3OSBweTNrCis2ODY1MSBkZjNmYTQwZmRiZWRhM2E5NzllZjAwMmVlY2MzYzcxNTBiZWMxOTU5IHB5M2sKKzY4NjUyIDdiYzhlMmVlZDY5MGJjMDQ3MWRhMThlMDZiMDc2OWUzYzIwNGY4NjkgcHkzaworNjg2NTMgNTdlZGY4MzVkZWEzNjYxMzM2YjRiNDc5ZDk3ZDQ4ZmVmMmRhY2M4NiBweTNrCis2ODY2MSBkYzMxYmU1MGM0MDUzNGM0OGEwMjc3ZjMyM2Q4Yzk3MjJkYjkxN2Q1IGxlZ2FjeS10cnVuaworNjg2NjIgMWFhZDdkMmU4OTQ1OTQ4NTgzOTVlYjk2ZjlmNzEyN2NlNTllZDFlYyBweTNrCis2ODY2MyA0ODZlMjU3OWM5NzhiOWQyODA5NGI2Nzc5OWViZjMzY2YxNDhiYjc2IHJlbGVhc2UyNi1tYWludAorNjg2NjQgOGRmZTNjNGFiZDViMTE2NjBlMDU2ZjkwYjY3YzI3ZmNiYTI4NWQ3MyByZWxlYXNlMzAtbWFpbnQKKzY4NjY1IDI3YmE4MDNiZGVhOTA1NzFiZWYxYjdiM2EwYjhjNDcyZGY4Y2RiYzcgbGVnYWN5LXRydW5rCis2ODY2NiBhZjAyYjZlNDIxNDJiMzQ2YTIwNjk2MjExYzkxYjVlODYyY2U2ODdlIHJlbGVhc2UzMC1tYWludAorNjg2NjcgZTE1OGM3MDUxMWZlYWRiOWZlNTUzN2E3ZmRmN2E0MzNlMjA5NzVmMyBsZWdhY3ktdHJ1bmsKKzY4NjY5IGU1NmM1ZjNiNmUxOGZhNjk2MThiMzExMjI3M2E4ZWMyNDIzZWQ4OWYgcHkzaworNjg2NzIgNDNlMGIxZWUxYzFiOTI3ZGZmZDcwMjc4ODc0ZjkxMmZhZWU5N2JjYyByZWxlYXNlMzAtbWFpbnQKKzY4Njc1IGE2MGI4NmE3M2UyMDQyNmJkMjgwZmZiZGFlNzJiMDk3YWI1NzA2N2UgcHkzaworNjg2NzYgMzViZjhmN2E4ZWRjYzJkNDkxY2VlZTU4ZGI4MWJlZDQ4MjBkYWQ5ZCBsZWdhY3ktdHJ1bmsKKzY4Njc3IGRiMjFkMTIxYmE1M2Y1ZDMzMmI4NjM1YzM2NjA3NzgwZDZkYTcxNjEgcHkzaworNjg2NzggYmI5YzY1MjRmZGNhNDU5MTkxNWIxZDk3Y2E4M2Y2YzQ1ODEwYzA5NiBsZWdhY3ktdHJ1bmsKKzY4Njc5IDU2MjA1MmEwMzQ3NmY5NzdiMjc2MDg1NTQ4NDlkZDQyYWU1OTNjNjIgaW8tYworNjg2ODAgYTAyOWM1NzkwZTQxZmMyYzdjMGIxMTA0NzJlYWM1N2QzYTQ2OWQwZCBpby1jCis2ODY4MSBkNzIyMGZlYjdkMGI4ODBiNTQxYjQ0ZWNmOGFjNjI0OWY1OWNkNWRhIHJlbGVhc2UzMC1tYWludAorNjg2ODIgZjM5NjlmNGY0OWUzNjdhNzRmYmUyZDg2ZjEwM2Y1MjMxNjA3OWM2NSBpby1jCis2ODY4MyBiM2MxOWI2NzZmNTg2ODNiZjQ0MjI4ZGJhYTgwZTk0MjhmNWVlNTlkIGlvLWMKKzY4Njg0IDYyNjgyNDg3MjBkNjY0Y2ExZDY0NDc4OWRmNmZmNGQ0NWQxOTE1OWUgaW8tYworNjg2ODUgM2M1NTUxYTk0YzdjOTk4OGE5MmI1MzRjODU3Njc1YmFkNzNlZTdmZSBpby1jCis2ODY4NiBkOTZmNTNmNjc3ZGJlZDBjN2UwZmExNGU5ZGQ2NzQ5ZmE1YWQxMDM5IHB5M2sKKzY4Njg3IDhhYjcwZWMyYWY1YmMzMDhhZDc2ZGNmOWI1YWQwNGEzZTNlODEzYWEgaW8tYworNjg2ODggMGRkYzIxZGY5Nzk5YjljNjNhYWQzZDRjNWU0N2RhNWE4ZGQzYmY1ZiBpby1jCis2ODY4OSBhZWQwYzc5ODA5ZTQ5ZjBmYmM3ZWZkOWNmMzFhMGQzZTg5NWE4MmI2IGlvLWMKKzY4NjkwIDc1MDA5ZDQ4NjNjOWQzNDM0NWM3MTc0MTkyMTc2NTFjY2ZhYTFhMDggcHkzaworNjg2OTEgMjllZGYyNmI5YzIzZWZkZGYwZDNmMGE3YWUxMGZiNDNkNzI5ZTVhYyBweTNrCis2ODY5MiA5OWYzYzM0ZDczMjhlMmMxYWEyZDNlNGUyYzdlYzhkYjlkZGVhMDJjIHJlbGVhc2UzMC1tYWludAorNjg2OTMgOGVhMTdmMjdkYTY3ZDI0MWMwZGE0ZmIyZGFkNGRhMDhhNTcxMDNlMSBpby1jCis2ODY5NSA1MDc4NzRmNjU1YWNiYTQyN2YxNGFjOTFjMjA1YWMwODFmMmE4NWIwIHB5M2sKKzY4Njk2IDMzYzRmNDIzYWViZjIxMjc3YzczN2E2MTJkMmJlMDhjMzc5ZjJiMjcgcHkzaworNjg2OTcgZmE2NTFhMWMzNGNjNjhhODYxODZmOTEyYjQ4MmQ3NTNjY2ZiZTU0MSByZWxlYXNlMzAtbWFpbnQKKzY4Njk4IGFhYzUxYjcwYzc0Y2IyYjBmMDhkNTQ4ZjQxMWIxMjM2NmU3NDhkZjcgcHkzaworNjg2OTkgZTM1MDQzMzVmNDgwYTcxYzNiOGFjM2VjNTUyZDcxYTRlMzBhMTg2OCByZWxlYXNlMzAtbWFpbnQKKzY4NzAwIDQyODg1NDZhNDIzOGMyZTQ4ZGRiZGI0ZGYzNWVmMzMyYmI2ZTExYmUgcHkzaworNjg3MDEgNmU5N2Q3MWQ2MWMyNWNiMWIzOThlNWJiZjU1Y2QzYjFhNzQ4MjQ0ZCBweTNrCis2ODcwMiAxY2UxYmZiZTcwNTFkZTE3Y2RjYzcyNjIwMDkyYzZiNTU2ZmVhNTU3IHB5M2sKKzY4NzAzIDljN2YxOThmOWIyNTIwZjkwNTQ0ZWZiZmYyNGI2NjM2YjdhYzVkYzMgcmVsZWFzZTMwLW1haW50Cis2ODcwNCAyMGJkMTE3OGZjNjQyZDY5NTYwYjQ1N2FjMDI5NmI3Y2U2YjcxYTFmIGlvLWMKKzY4NzA1IGI5Y2IzNjQ2NWRkMmEwN2QxZjA5N2Q3YzM3NzM0YmYyN2EzYjYxODEgbGVnYWN5LXRydW5rCis2ODcwNiAxMGMzOGJjNjczN2RlYjRlMmRiODQ0YzkzZjg4OTE2NWZkMDdkNmQzIGxlZ2FjeS10cnVuaworNjg3MDcgZTU1NGI4YmJkZWVhYTkyMmQwMDRkMzQxMTVjZjNlZDdiZWY1N2E4OCBweTNrCis2ODcwOCBiNGJhYTcyNTI4NGE2ZDI4YjllNGMwMGUwZDIwN2E1YjBmNGJkZWQ5IGxlZ2FjeS10cnVuaworNjg3MDkgMDk5NjI3MWUyMWQ4YzRjOTNlMjA4NDAzODljMzhiMWVlZjc2M2M0ZCBweTNrCis2ODcxMCA5ZTJhZDQ0MDE5NmJmMjQ0MGEwNDdjZDNkZWFmOTFiOGI5MjQ0OGNmIHJlbGVhc2UzMC1tYWludAorNjg3MTEgZTkxZjY0ZjVkOTU1ODIxYThmMTk1ZjFhNTBjNTQ3MDFlZGU3ZWNkNSByZWxlYXNlMjYtbWFpbnQKKzY4NzEyIGM4NjM0N2FjNjY2MzUyMjFiYzU4MjZmMWJjZTI4OTZkNTIzMTcxOTkgcHkzaworNjg3MTYgNDA4YzhkY2YwMjQ4YTE2OTE3ZWQ4NWJmNjYxMDVjODIwYjdjMTYwMiBweTNrCis2ODcxNyA0NDQyNDk1N2VhZGY2NzA1Mzc0MmJkY2RmNjgyZjdkN2ExM2ZmNWQ5IHB5M2sKKzY4NzE4IDE4OWQ1MDgzMDI5NzA1NTI1YmI0ZjliOGVmZWMyMzA3MzAzMDhhMWYgbGVnYWN5LXRydW5rCis2ODcxOSA4ZjMyYmE1MmIyMGQ4OTM1OThiYmRjYjg0MDkwZThjZDA4N2M4MzZjIHB5M2sKKzY4NzIwIGQyZGM2ZDA0M2MyMWRhOTcwOGEwOTc3ZWNiM2NlNzM4MDFlNGJjOGYgbGVnYWN5LXRydW5rCis2ODcyMSBiYmRhMzFkZDk3OTc1YmRkMzVjMzE0YzgxY2I0MzhhMjM3Y2JmZjAzIGxlZ2FjeS10cnVuaworNjg3MjIgOWJiYjlhYzA2MWMwZDQ4ZmQ0ODlhMTNiM2M3OGNhNjY2NWEzNzFmNSBsZWdhY3ktdHJ1bmsKKzY4NzIzIDgzMjVlYjA0MTkyMTBjMmI2NzdlMDdjNmQ5OWQ1ZjFkYzlkNzMzM2UgcmVsZWFzZTMwLW1haW50Cis2ODcyNCBmNmFlZmJiZDcwNDVlOWRjYmI4NTQ0NjkyZGJmYTE0Nzg4NTI1NWVmIGxlZ2FjeS10cnVuaworNjg3MjUgMTFjYmYzOWMzMTZmN2Y3NDViMjZhMDBiNmVjOTMwMGY2M2RiYWM1ZSBsZWdhY3ktdHJ1bmsKKzY4NzI2IGQ3MTU4Mzg2MDYzNDY3MGI4M2MzMzMzOGY2NTJlMmNhY2EwYzcwYWQgbGVnYWN5LXRydW5rCis2ODcyNyBlN2Q2ZTVmNTE5ZWYyNTgxMWI5YTA4NmUyYzFhN2MxMTE1Nzg0OGNlIGxlZ2FjeS10cnVuaworNjg3MjggOGRjNDc5YjYzZTAzNjczYjI4NDI2NWQwNmMyNzczMzM0NWE3MTU5YSBweTNrCis2ODcyOSBhODE5OTI3YzJhMTM5OGM4ZGYxMDAzN2Y5MzVkZTY5N2Q2MWE5NTI5IHB5M2sKKzY4NzMwIGYzYmE1Zjk5ZGE1MGQwYjM2M2Q3OWEwYjdmZTI1MWFmOTg0ZjcwZDUgcHkzaworNjg3MzEgYjkyZTY5NWQ1NjFlNWE4MTA3ODM4YTFmY2NmMjJiOTgxMzkxMDI3MyByZWxlYXNlMzAtbWFpbnQKKzY4NzMyIDc1ODc3OTljYWUxY2IwZDMxODUxMGE5ODhlOTM5OWU3MWE5Yjc2M2IgcHkzaworNjg3MzMgN2U1Y2ZiYTU0ZTM0ODAxY2ZmZjFmY2Q2NjdiZWNkZjYyYzgwNGQwMiByZWxlYXNlMzAtbWFpbnQKKzY4NzM0IDZhNzZhYmQ2MTZkZWRiMTY0MTk5MDBlOTZjYzUxY2U5Njk0MzQ1NjcgcmVsZWFzZTI2LW1haW50Cis2ODczNSBhZTNhMTA2MzA2YTgwOGIzODRlYmM2MjYyMzk4MjIwYzk3MGY2MTNjIHJlbGVhc2UzMC1tYWludAorNjg3MzYgNTBmNWMyOWZjZTI2ZDMxY2I4NGQ2YjQ3YWFhNmE0ZjVjZjRhMTdiMyBweTNrCis2ODczNyBjMWM0NGEwYWI0MzhlNmFiMjc4Nzc5NGU3OGJhNGYxZTk5OGM5NzlhIGxlZ2FjeS10cnVuaworNjg3MzggYzUxM2M2OTExOGRjYTYxNDQyMWYxOTNiY2NhMTFhNzlhODA4ZjgwOSByZWxlYXNlMzAtbWFpbnQKKzY4NzM5IDViNDhkNjAwMDkxNjc2MjY4MTZlOTU5NGQ0YzU2MzE1ZGI1MTdmY2QgbGVnYWN5LXRydW5rCis2ODc0MCA5ZWNiZDlhMTAxZDgzN2QxNTczMTQyNmZjOGIxMWQ4ODk3ZGI5YzA4IHB5M2sKKzY4NzQxIDQ5ZDk3MDhkN2VhMzlhZWExNjY3NzBlNmRjMzNkYTFlM2FlYmE4NDMgaW8tYworNjg3NDIgYzllNWMyY2E2MmMzZTJjM2U5Y2Y4NDEwNTRhNDA0MzQ4MjQ3N2NiOSBpby1jCis2ODc0MyA5ZjYyNzRmZDdhOWRmN2MzN2E4MjBiYmYyNmI0ZTI1MGFlZDE1MmIzIGlvLWMKKzY4NzQ0IGUxNGVjNmQxOGFiODFmNTIzZWFmM2QzNWFmZjk4ZTYyOGMwMzJhYmMgcHkzaworNjg3NDUgMWVjMzViZWVkMmQwMTRkY2Y2MTFhY2MwMDYyYzc0ODVlNTg3YTE0YyBpby1jCis2ODc0NiA5ZjQ1ZmEyN2I4MzhhZTBiNjlmNzAyNTgyNDI1MjVhYTc0OTRkOTJmIHB5M2sKKzY4NzQ3IGJhZDM2ZjQ5MjA4MWU3ZGQxYjM5M2RkZWJiZTNjNmFkYjA3M2ZjZGIgaW8tYworNjg3NDggNTgxZDg2MDJmM2Y3NDJmNDAzMTI4MzYwNTg3MGFlODIyYmU5NzNhMiByZWxlYXNlMzAtbWFpbnQKKzY4NzQ5IDFiMjI5ZTdkODE4YmQ1Mjc0Nzk0MDE1N2NmMDcxYzM2ZGU4Yjk4NzEgcHkzaworNjg3NTAgMDc4OGQ0NWJmN2E0N2U5NDcwZDI3YmExYzUwM2ViYzllYmI3NjBkNSBsZWdhY3ktdHJ1bmsKKzY4NzUxIGZiN2YyMzFjY2QzZWM3NzcxY2VmMTFlZGRkY2RkM2Q0ZjJhNGM0OWEgcHkzaworNjg3NTIgNTlkZTA2NTQ3MjMyYTQ5MjhjM2JkYmY1NjgxNTcwZDBiMTcxZTA3NyBpby1jCis2ODc1MyA1OWVmMzE1YmYwMGVmY2ZhNTI0ZDQyNWUwOGIwMGYzZDcwNDhhZjQxIGlvLWMKKzY4NzU0IDY1ODE4Y2ZkNDgyNjVmZDIyMTNkMTFlYzk3NzM3NzQyYmVkNDFkY2UgaW8tYworNjg3NTUgYTk5MWJlNmExMTFkODY4NGZmZWNkOWJjNGY1MjY3YjA4OGMxZmQzNyBsZWdhY3ktdHJ1bmsKKzY4NzU2IDFjMTZlZGEzMTA5ZTU0NTRmNDNjMDQ0YjRlMzk1M2YxODNiNTNjMGYgaW8tYworNjg3NTcgMWZhZWQ3Y2VkMjQyNDU4ZTdmNmQ1YWFiNzdiN2MxZDliZTM5NjczYyBpby1jCis2ODc1OCA2NWVmNDYyOTIxZjczOTI2ZGI3MzlmZmNmZTFlZDUwZTQzNzlmNTViIGlvLWMKKzY4NzU5IGUxMDhjOTgwNmNjM2YyMTAyZWYzODhhNWY0ZTZiZjU4ZjM4YmNhODkgcmVsZWFzZTMwLW1haW50Cis2ODc2MCBhNjYxMTYxNWM3NmJhZmY1YzkxMGFiYjBlYmM3YWQzNjE5ZDU4MjJiIGxlZ2FjeS10cnVuaworNjg3NjEgNjExNDYxYThjNzg1MWJkMDU1MGIyODhjZTlhYjA4MzVmNzQ4Mzk1ZCBweTNrCis2ODc2MiAxYzE3ZDVjYjE1ZGQ1OThhYzZjYTQ5YTljNGQzZmNhYWYzMWUwMWFhIHB5M2sKKzY4NzYzIDM5MTg3YjNlMTJlMDUxMjliMzc4ZjUxMmI0MjI0MGU4NTQ0MmI0MWQgbGVnYWN5LXRydW5rCis2ODc2NCAwNjFjNTEyOTVkMzI2ZGRhNDVlZDkwN2IyNGNhZGUwNmNlNWNiMDQzIGxlZ2FjeS10cnVuaworNjg3NjUgMTg0NDFiOGY3MDAwYzA1MWQ5M2MwMzlmMjRjNzVkYTcyMTEwNzE3MSByZWxlYXNlMjYtbWFpbnQKKzY4NzY2IGU3YzEwMGFmODFlYzI4YmVmYTUzMjQ0NzgwYmFjZGRiNzdlNzYxNzUgbGVnYWN5LXRydW5rCis2ODc2NyAzNTJmMjlkYjVlYmY2MGI4NzgwNjhkNmQ4OTFiZmNjMjNiOGIxYWQ2IHB5M2sKKzY4NzY4IDk1ZThkODU1OTRiYzkyZDBmNDg2Y2FkNjAyZDA0MTJjN2IxNDU0N2UgbGVnYWN5LXRydW5rCis2ODc2OSBmYWU5NmJjOTE5Njg0Nzk1ZTlhMTBjMWVjYjA1YTc5NTNkODcxMTIwIHB5M2sKKzY4NzcwIGJhMzRkZWE1ZDE4YzNmM2EwY2U2MjljN2ZkYmJkZWQxZDViNTg4ZDAgcHkzaworNjg3NzEgNDg4ZThlNmYxY2RjNjMzZDIxMWJhZjBjYmIzOTFmNjcwNzA4NTU2NSByZWxlYXNlMzAtbWFpbnQKKzY4NzcyIDZlZGQyOWEzNDM1NDhmMjJkMTZmOTI4YmQ3ZDA2OTVhMjMzOGRhZmQgbGVnYWN5LXRydW5rCis2ODc3MyA3Y2ZiNTllMzk3ODI2MDkwNDJhNTI4NTc3NDdiN2M2ODkxMGUwNDJjIGxlZ2FjeS10cnVuaworNjg3NzQgYWViMmJkZTIwM2FhY2Q5ZjAzOWVjYjczZjMzODRhZmEyZjFmNzYzNyByZWxlYXNlMjYtbWFpbnQKKzY4Nzc2IGFhZjk2ZWZjNjFlNTQyZGIzMjZhMmY2NmJkNmJkYzgyMGZjZGI5YmQgbGVnYWN5LXRydW5rCis2ODc3NyAwMTVlYTdiMjE5NTBhMzgzYzlhMzYwN2ExOGUxNTEzNDcxNTA2ZmRjIGxlZ2FjeS10cnVuaworNjg3NzggYTJmNTgyMDRlNjgwYjg3YWUzNGY5MjhiMWE0MGUzMDMwMjA0OWE1YyBweTNrCis2ODc3OSBmYTEyYzhlNWFlOGFjYmE4NjZlZTc2NThkMTJiZjdlNjVmMDk0OGY0IGxlZ2FjeS10cnVuaworNjg3ODAgNzViY2VjMDExZWVmNmQyZGE1YTY2YjY5NTQyNGJiM2IyN2M0MTljMiBweTNrCis2ODc4MSA2MTFkOTU3MGI0Y2FiMjRmNmUxZDk5NWIyZTYwMDUzMjJjYjBhM2IyIHJlbGVhc2UzMC1tYWludAorNjg3ODIgMTlmYTZmOWFiNWI1MDA3M2FiMzJkZjZmMzUyYjZhZDYxMmFhNmQxNSBweTNrCis2ODc4MyBjYWE3OWQyMzg5MTcyYWVhZjQ4OTAzNGJmMDc2NDgxMmEwZDQwYzE1IHJlbGVhc2UyNi1tYWludAorNjg3ODQgYWYzNmJhMTIzYzFkMmFjZmEyNDc0OGI1MTk5NDY3YmJjMDZlNGQ4YSByZWxlYXNlMzAtbWFpbnQKKzY4Nzg1IGMzYTBlZTUxZDg2NzgxMzBjNTA5MDY0Y2RmZWU3YzMwMTBjODNmMTAgbGVnYWN5LXRydW5rCis2ODc4NiAyZjU0ZWVmZDAwNzNhMTdhMzZkOWM0NzgxNzEzMzQwZjU4ZGQ3OTQxIHB5M2sKKzY4Nzg3IDYwNjdhMWU2Mjg5YTEzNTdjN2Y5OTEzYmRlYmNhMWUzZjhlZGNmZGUgbGVnYWN5LXRydW5rCis2ODc4OCA1MzdlOGQ3Mjg0MjQ2OTQ5YzU5ZDhhMDE3NDhlNzY1NTkwODBmYzAzIHB5M2sKKzY4Nzg5IDE5MWI3YjNkZGY0ZmE0Y2RiYTVhMzMxYjdjZDNhNTFhNjAwOGRjYzAgbGVnYWN5LXRydW5rCis2ODc5MCAzODAyMWI4ZTE0YWFiMTI3NmYwNzJjMTBlZDljMjI3MDdhYzkxYjg5IHB5M2sKKzY4NzkxIGE2M2Y3Y2YzNzkzYWJmZTBhYzY3YTMzMGI3NWY2MGIzODk3MDdjZDcgcHkzaworNjg3OTIgMzkwNjY4ZTIwNjI4ZTQwYzgzMmQ0YzI1ZmFmYjM2MDZhNDU5MmFhNiBsZWdhY3ktdHJ1bmsKKzY4NzkzIDhkNjZiODJhMTBhMzA4OGM2MGFkZjg0NjQwOWZhN2FmNjM1NjVlZWUgbGVnYWN5LXRydW5rCis2ODc5NCA2YTZiNTkwOTEyZmU2ZjMyMjc2NzM5YTE1ODI0YzE3MGNiMjA1YmM2IHB5M2sKKzY4Nzk1IDVkZDg3OTg2N2NkZTIwMjYwZjM5MGJiZTk4MzJlMzFkYzYyMzhiZmYgcHkzaworNjg3OTYgNWMzYmYzMWQwNGZkNmE4ZDcxOTY5M2YxZjgyZmY3NWIyNjViYTZiYyByZWxlYXNlMzAtbWFpbnQKKzY4Nzk3IGZlMjg3MWFhYjlkOTg4NDhkM2UyMDY5OTk0ZDMxYWIwYTgyMWQyYTYgbGVnYWN5LXRydW5rCis2ODc5OCAyMzQ0Y2VmN2ZmNDQ0NzQ1NGQ5NjFhODU0OGJjMTdiNjg1ZGNhZTAyIHB5M2sKKzY4Nzk5IDVhMDQxZDlhNTFjZDY2ZmJlYzUyMzQ1MzViYzk0NTFkZDFhYWQ4MjggcHkzaworNjg4MDAgY2M5ZGUxOTdkZjdlMTE5MWQxNmY2MWQzOWE5ODgwOTE2NjRjNWIyMiByZWxlYXNlMzAtbWFpbnQKKzY4ODAxIGNjMDc4YTU3NWVlZDMwN2NkODkwMzNjNzMxMTliNmQ3MzJiYzFkM2MgbGVnYWN5LXRydW5rCis2ODgwMiAxYTY0ZDJmNTZiNzk4ZmY2MDM5NmE2MTIzZGFhMjgwMjg1MjI5MzUwIHB5M2sKKzY4ODAzIGE4MzI2N2FkMmZkMjcyMDU0YzFhZmQ0ZjlmMGMyY2ZkYmNlMTBhYzMgbGVnYWN5LXRydW5rCis2ODgwNCBmYjcxYzE1NjIwZWU2Zjk5OWQ5NWIzMmMwOGQ2ODM0OTg2NTY4MDkzIHB5M2sKKzY4ODA1IGRiYzE0YWNkZGUzN2YxODg5N2FiMTMyYjg3MWM5YzY0ZTg0YzBlNGYgbGVnYWN5LXRydW5rCis2ODgwNiAxZjE0ODQyNDg4ZjA4ZmFiOGZjYjg0NWEyNGRkN2ExZjE2NzdjNDlkIHB5M2sKKzY4ODA3IDYxZjFjYjE2ZTdiNDJlNzk2ZWZhMzBjYzMwOTY2N2MyNGJjNTZjZDggbGVnYWN5LXRydW5rCis2ODgwOCAzNmUyNjZiMmU0NjA5OGViYzMxZDBjODQ5MjhiNjA2MTFkNjBmZmQ4IHB5M2sKKzY4ODA5IGM3YmIzMzIwNzQ5NWE4Y2IxYzcyYmZjN2JiYWIxMDA0MDVhM2NjZDYgcHkzaworNjg4MTAgZGQ1NjI0NDM5YmU1MDhmZDQ0MmVhNDQ1NjRlNzZlOGMwYzE0Y2Y2ZSBweTNrCis2ODgxMSA3MzMzODhhY2YwYjY1Y2I3OWJmY2E2NDJjOTNhYzI2YjcyZGM3Y2IyIGxlZ2FjeS10cnVuaworNjg4MTIgZjEzNTI3NDg0YmEzYWI0NGY2YTFjMzQ1MjBlMjZmMWRjMWUzODNjMyBpby1jCis2ODgxMyA0MjRhNTA5YmViZmVhMjAzMGY4ZTU2YjBjMzkyZDYwODkyYTM1ZDEyIGxlZ2FjeS10cnVuaworNjg4MTQgZDFkZTA3NzQ0N2FhNGYzNGEzMWNkY2YwMDE5MzQxNzY5MjkzYmEyZiBweTNrCis2ODgxNSAzMmEyMmZhMTNiOTljNzk2MDMwZTU4MjEwZWZhMTQzZDQ0MzA2OWVkIHB5M2sKKzY4ODE2IGIyMGUyMThkNmYwMGY3ODhiY2E0ZDVhODU0YjZmNDM5ZGY2NTA2MDIgaW8tYworNjg4MTcgNWE4ODBiZGE2YTZiNzg1ZjQ1NTI0ZGE3YjA2N2YzNDFhNWY4MmQxYyBpby1jCis2ODgxOCBhNTdkMTBkNmJjODkzMWYwMDAyMDYxNzZkNTA1YWEwZjJjYTE5ZWE1IHJlbGVhc2UzMC1tYWludAorNjg4MTkgYWIwYjM4NWFlZmMzZTliNjA0MTIyYzNjNWQ5ODE4NjgzYzFiYmYwNSBweTNrCis2ODgyMCA5ZjI5NGViMzgxOTBlNjQzNGQ1NTM1NTEyOTQ0ZWM0YWQyZDY1MDM2IGlvLWMKKzY4ODIxIGM3NzUyMDdjZWRhZDc5NDA1NjA5NTY0OWE2ZjBiNzIwMDRjMWM0ZTYgaW8tYworNjg4MjIgNTM5MDFlNjY5MWMzODI0OGYxMWQ0Y2I1Y2U5OTJhNWRkNGUzMmVhZCBpby1jCis2ODgyMyAwZTc5ZDVhMzcyMzM4MjAzNjNmNmFiOTMzZjc3NDFjN2U4YzRlMTUzIGlvLWMKKzY4ODI0IGM5NGY5OGM1NzUzZjk3MGI1ZjExMjZlODYzYzg4YjI0MDM2NGUxY2MgaW8tYworNjg4MjUgN2VkOWJlZWQ4NzE1NTMzMTkyNWNhMDlhZjc2ZjMzNWFjMDkyZWMzNyBpby1jCis2ODgyNiA3NjZkZTQ5NmE0MmQ3ZjBkMWE3NDJhOGI4ODQ2MDlmN2U0YTE0ZDRkIGxlZ2FjeS10cnVuaworNjg4MjcgN2MzMGFiMDEzNGExZmU2MzQ2ZmFiZmExYzcwZjdjZDM3ODNmMWJhZCByZWxlYXNlMjYtbWFpbnQKKzY4ODI4IDJiM2VjZGUxNzZmZTUwMTc5M2M1NTA1MDI4MDVhZDc0MzY5NThlZWEgaW8tYworNjg4MjkgMjUyZjgyNGJiODBiM2FjMjE3MDlmYzlkNzVlOTU5ZmRiMGNkNjUxMSBsZWdhY3ktdHJ1bmsKKzY4ODMwIGNjNWI0NjBmZjFhYjEyNGYyMmMzZTJkOGFlNjhiMzE1MTQyZTQ5ZjIgcmVsZWFzZTI2LW1haW50Cis2ODgzMSAxMmU5YzVmNzI2NTkwNDllYmYwMzI2MDJlMzA0OGM5OWEyMmIxZDE1IGxlZ2FjeS10cnVuaworNjg4MzIgMzVmYjRhMjYwYTI1M2Q4Zjc1MDhmYTYwNmIzMzgyYjdkMzkzYjUyNSBweTNrCis2ODgzMyA2NjkyOGRhZDgxY2ExNDliNTEwZjEzZjRjY2M1ODYwYjJmMDFkNWVmIHB5M2sKKzY4ODM0IDcxMDZmZjU2ZTlkOGJkZjY5NmQ2YTE4ZGQ4ODhjZjgxNzM4YzEzNmQgcmVsZWFzZTMwLW1haW50Cis2ODgzNSBiODhjYzdlMmJmYjRjMzEzZDUwYmJhYmUyOTQwYTA4Yjc0ZTYwODdkIGxlZ2FjeS10cnVuaworNjg4MzYgMGFkOGM1NmE3YTcwZDBjYjA5MTQwNWZiZDJmMzU4NmFhNGE3YWIyNCBweTNrCis2ODgzNyA3NjJmOWYxODllMmU4NjI3ODg0NWI1MTJmMmEzZWEyZDRjMTgyMDVjIHJlbGVhc2UyNi1tYWludAorNjg4MzggZjBjOTU1Mzc4Y2EzYzUxZWZmY2FhZTUzMTA3NzU1Mjk4M2QzNzIyMyByZWxlYXNlMzAtbWFpbnQKKzY4ODM5IGQyNzQwNjI4MTZmZjY1OGM4ZDJhMzQ3NjMwZGYyYzRlNzNlZjRmMTggbGVnYWN5LXRydW5rCis2ODg0MCAwZWMzNTQ3MDNkMDFjYWE0YmZkODEyZmNmNDQ4MzE0NDRhZjFkYWM3IGxlZ2FjeS10cnVuaworNjg4NDEgYTk5ZGVjZWRmNzJkMjIwYTU2MGYyZDgyNzQxYmUwNTVjYWFhZTQ3YSBweTNrCis2ODg0MiA4NzYzY2YyZjdlMGM1NWZmZDgwMTUzMjJmOGMyMjIxNTMyNjU0NmMwIGxlZ2FjeS10cnVuaworNjg4NDMgOGJmMjA0YWY5NjkxMGU2NGI4N2U5ZTE4Y2ZlNjU2YmQ4MTExZmU5ZCBsZWdhY3ktdHJ1bmsKKzY4ODQ0IDczMDBkNmZiZDkxNGRiZDc0ZGFkZDU4MGU2NmYzMDE2NDE3M2RjNDMgcHkzaworNjg4NDUgY2JlNTQ2NTFlM2I5ODUzNzg0ZTllYTM0ZjRjZDQ2NDAyZmUwZTU4ZSBsZWdhY3ktdHJ1bmsKKzY4ODQ2IDNmNjFmODBlOTEzMGQxNzUzOGE2ZjJhN2NhMjMwYjY2OGFjYzQ4MWQgcHkzaworNjg4NDcgNDA5MmE0MDJlZDNlNzU1YTIwNDk5NzJjYjQ3MmU0Zjg5OGM2YzE4ZSBweTNrCis2ODg0OCBlYzcwYjM5M2UxNzNmODRkZDBlOWUxNDg2N2JlYjdkNzliNjMyM2U0IHB5M2sKKzY4ODUwIDNjNWE4YTM0Nzk5MDdmMGQzODMwMDQ3YThmZmZlMjNhMDU5OGVhMWYgbGVnYWN5LXRydW5rCis2ODg1MSAwNTNmM2U4MjY2MDE2ZWM5YTBmNDJmNzMyZWEyZDJiYjk5Njc1Yzc3IHB5M2sKKzY4ODUzIDNmMTNjNjVhZWMwNTZiM2ZlNTQ2NjEwNDBkNDQzNjQxMzUwZGVjN2IgbGVnYWN5LXRydW5rCis2ODg1NCBmNWQ3ZDA2MDkxMWFlMTkzODMzNDJjNjU4YmU3NTA0OTUyZDdlMjhlIHB5M2sKKzY4ODU1IGI0MGU0YjUyOWY2OWJhZDg5OWRmYmY0OTAxMGE3YmI1OTUyODIyOWUgcHkzaworNjg4NTYgZWM2ZjI5NjA4YmYwOWZkNDQ5ZGU2ZWJlMTQ0NzMzOGIxZDAxYTg1ZiByZWxlYXNlMzAtbWFpbnQKKzY4ODU3IDhhZWQ3ODhiZmNjODNjNzUxZGJhZmNkNjQyNzEwZThhYjM2ZjNiYWMgcHkzaworNjg4NTggMWYwYTNhYzhiZjg1ZGU0NDA0ZmY0ZGJiODA3ODIxODA4Y2M2M2Y3MSByZWxlYXNlMzAtbWFpbnQKKzY4ODU5IGRlMmRjMDllMWY3ZTY2MTFkZjQyYTg2M2ZlNTg0OWMzNDJhZGNhNmMgbGVnYWN5LXRydW5rCis2ODg2MCAyNzM1ZmFjNmIwZDRkM2ZmMmUwMGYyZTJmY2UyMTdhMmYxOWFmZGJkIHB5M2sKKzY4ODYxIGU0Yzg2ZGMxODFlOWEyMDQ0ZTA0NTBmNjI0MDczZTgzNjkzOGU5NDMgcHkzaworNjg4NjIgYjBiNjIxZjJhZjVkZGZjNTJmYWQzOWViMDBiOGI0MjA5N2NlYTdiOSBsZWdhY3ktdHJ1bmsKKzY4ODYzIDcyYmNmMGEwY2IzMWQ0MWEzN2IzYTk3NGU0MGVlM2Y4ZDUwNGRkODkgcHkzaworNjg4NjQgMDk0MGE0ZjI1MDZlNzc4MjQ2MDYwY2I4M2RmYmM5NDA0N2FkNDlmOSBweTNrCis2ODg2NSBkZDYzOGI3ZTc0N2UzZmE1NWU2YTVhNmJlYTVhN2FlODhlNGFlNzE2IHB5M2sKKzY4ODY2IDA5YzE3MTI3YTRjOTkyMDFmYzU3YmJmZGVjZmJhNDgzNmM3OGYxNTkgcHkzaworNjg4NjcgYzk1NDQ1MGY3YWJmY2MyNTFjZDkwMmIyYTRmNDQ0M2MyMzlhZjhjMCBweTNrCis2ODg2OCAwNGM5NWZjMzc2NWZlZDdjNThhOGY0MzI5NzU1NTk2NzNjY2IxN2M2IHB5M2sKKzY4ODY5IGFjZTc1YjA2YTZmNzRkYzU5NmNhOGY0YWU0NjNhMmRlOTM5ZmMwZmMgcHkzaworNjg4NzAgYWVhYTIzN2ViYWQ3Zjc5NWI3MmNiMGM4ODlmZjlmN2U5MmZhNTBhOSBweTNrCis2ODg3MiAzYmY3N2VhMWRiM2UyM2RlYjk0MzAzMDcxNGM2OTRlYzU5MWY1NmRjIHB5M2sKKzY4ODczIGE4MjNjOWYzYTQ1MmJjMjE5MTg0ZmQ2YjliNTBhYjNmNGU1MmJmOGQgcHkzaworNjg4NzQgYjBkNTkzZDQxMjEyMGM3YWYxNTg5NTViZmUyMGRiYjcyZjAwZTZjNSBsZWdhY3ktdHJ1bmsKKzY4ODc1IDg1N2Q2NjM0MWZmOTQwODI5MzhmMWQ5OGJmMmQ4M2ZkMzJjMWYzMDcgcHkzaworNjg4NzYgMDhlOWJlZDZhMWY4NWY5ZTU2NDY1ZGQ4NjZhM2IxNjJmMjM3MDk2YiBpby1jCis2ODg3NyAxYWY0ZmExOGJjYzIwNjVhZTQxYzhmM2Q3MDVjNzIxNTg2ZGM3MWNhIGlvLWMKKzY4ODc4IDUyZmYwNTc5YTQxZjE5YWY0OGFhNDQyYjM3ZmY0MGI5N2ZmNjYzYWYgcHkzaworNjg4ODEgYTRmMjVjMzgwZjk2YjdmM2ZmMjA2OTUyOGRkOGU4NGZlMmNjMThkNiBsZWdhY3ktdHJ1bmsKKzY4ODgyIDVjNzMxMmNlNWRiZDA2MmU4ODIwNjI1MjUxMjRhYTAzOTgyNzIxNDQgcHkzaworNjg4ODMgMDQ4ZWI1YTgzNDNiZTA5Y2E3NDNhYmZjNGZjMjU3YmM5N2Q1NDkyZiBweTNrCis2ODg4NCBiZDc0ZTg2NmY5Y2FmODE3YzdlZGEwOTk5YWE2YzQxMTRjMjBjM2M4IGxlZ2FjeS10cnVuaworNjg4ODUgZmMzOGYyZWNkMmFjMjc3M2RmOGY2NmVhMDczMDM0MzFmNDc4NTdhNyBsZWdhY3ktdHJ1bmsKKzY4ODg2IDZmNzYxZTU3MTRlMDkxOWQ0YTI3NjdhZDkwNmM1OTE0MmI0MTZlYTYgcmVsZWFzZTI2LW1haW50Cis2ODg4NyBjZWYwZmNjOTE1NTllYmI1ZDE2MGVjOTE5MWRjYjllOTAyNmMxYjVkIHB5M2sKKzY4ODg4IGM5YjlhNTA0MWVmNTIxZjU2YjFkZDRkN2MzODk3M2E0NmZlNjRlMWIgcmVsZWFzZTMwLW1haW50Cis2ODg4OSA1NDA2MTFhZTYxYjg2ZmFkYWEzMzk0NGJmYTgyZDc3MTMzMGM4ZmViIHB5M2sKKzY4ODkwIDRlYWM5OTQxNTM4YzViZGVjOGQyOTg4NTY4MjBkZjE0YmUyM2ZjMmEgbGVnYWN5LXRydW5rCis2ODg5MSBkYjBmZmVlZTZlNTA3MDM2OTg1YzYyYmZkMDg5MjNmMjhjYTkyNDlkIHJlbGVhc2UyNi1tYWludAorNjg4OTIgMjUwMzRjODMyOGM3Y2Y3YWQ1MWE0ZTgxMjUxMTYyMGFjYmE0MTdlZiBsZWdhY3ktdHJ1bmsKKzY4ODkzIGYxYWY0MDgwNGFkZTkzYjliM2I1YTJkMTVjMDBiMzcxMGQwMjg4M2YgbGVnYWN5LXRydW5rCis2ODg5NCA1MTMyYTEzZjE2OWEzNDE0YmVmNzVjZjQ1MGFlYTMzYjI5MjcyYjI0IHJlbGVhc2UyNi1tYWludAorNjg4OTUgMjdkMmZhMTkwODRhNTgyZTQ2ODYzZTY3ZjBlMjcxZGNhMmMzZTUyYSBweTNrCis2ODg5NiA3ZWU2ZmEwNjAyYmU5MjcxMmIwNGRlMmRmM2YyYWMzMmRkYzNlZDdkIHJlbGVhc2UzMC1tYWludAorNjg4OTcgYTFhNTI4NzNmOWZjZjA2NWNiODM4YjRlYzE4ZjIyZDU2ZjkxNWNkMyBsZWdhY3ktdHJ1bmsKKzY4ODk4IGZlYjRhMDkyYjg3MWM2N2VjZGY0YzNmZDA2ODgyMGQ1OTlmMWM2YTMgcHkzaworNjg4OTkgYTZhNjM2OWNmYmNjZGFkZjhhNmU1OTRmNWUzZDVhYTg3NGZmZDc2ZCByZWxlYXNlMjYtbWFpbnQKKzY4OTAwIDk5ZjBiMDI2NTUxNmIyNDM5NmQzMzY0NmZkOTVhMjExYjNmNDAzNmQgcHkzaworNjg5MDEgNTlkNWU3MGYzNDk0MjMwZGJkMDE3MWM3NWEzNjA4MzllNjk3Nzk1MyByZWxlYXNlMzAtbWFpbnQKKzY4OTAyIDU3OGRkNzhmYjU1NzM1MmRhODk4NDI4MjRjZjlhYTE2ZjMyNDVhYTQgcmVsZWFzZTMwLW1haW50Cis2ODkwMyA2ZDU1MTc5NzVmZDI0NTczNGFlNWYyZmY5OTVlMzk3MzllYTM5OThhIGxlZ2FjeS10cnVuaworNjg5MDQgODQzYzE3ODY4YjUyYjRmNDhlYWZlNDg1NmI4YTNhN2UwNDI1ZmFlNyByZWxlYXNlMzAtbWFpbnQKKzY4OTA2IDg2M2NlNmMwMzYxNzlmNGM3NGZhOWY3MGJjYjhlNzE4NTY1YjkwYTIgbGVnYWN5LXRydW5rCis2ODkwNyAwMTM5NjQ4NTI2ZDlhOGZjZjdjMTM4MzA4YzdiMGUyNDMwMGJlZjQ1IHJlbGVhc2UyNi1tYWludAorNjg5MDggOWE0NWUyY2FkNmExZjNmMWI0ZmUzMjBiZDU4OWRiYjNhOGYyZTM3NyBweTNrCis2ODkwOSBmN2YzZDg0MWRhMmM2YzFmYTZlMDAxN2Q1OTI1NzIwNmNiZjUwOTY0IHJlbGVhc2UzMC1tYWludAorNjg5MTUgZjViZTZjYWVhZDAzZDg5MGNiNTFiZGRmOWQyMmFhYzI0M2U2ZGUwZCBsZWdhY3ktdHJ1bmsKKzY4OTE2IDRlOGYyOGIzZWEwYThlZmEwMzU3MzA3M2UwNzRkYzU4NWE1MzgxMDYgcHkzaworNjg5MTggZWE1NzY3ZWJkOTAzMmFkOGE4YmI0OGFlOTE1OGQ5ODAwNTdlZWIwNiBweTNrCis2ODkxOSBjMjZmMWFmMjZiZmMyMmFmOWEwOTUzM2I5ZTkxY2I5MzNlZmRmNzFmIHB5M2sKKzY4OTIwIGM0YzRlNGIxZGMxYWU2MzFlZjk4NTkxYThmMjE1MmMwNTUwYjVjZjAgbGVnYWN5LXRydW5rCis2ODkyMSA5OWMxMGQ2NDdmMzI2ZjYzNjE4YjJkOGM5MWUxOWNmYmE3YzkxMTYwIHJlbGVhc2UyNi1tYWludAorNjg5MjIgZmQ4YWY0NmQzNjE1NDNjNzRmNTY3NThlZjZkMDEyZGVhMzJjNjQ1MyBweTNrCis2ODkyMyAyYzdkMzU2OTg4MmRlMzVjZWVhMzVkYWE5NmViMDg0YTlhMzI1YTEyIHJlbGVhc2UzMC1tYWludAorNjg5MjQgZDg2ZTIzMzE4YjQxNWRmYWRkM2IyMTNjYzg5Njk1Mjg3Nzg5YWVlOCBweTNrCis2ODkyNSA1NTEyNTdjODA1OGFmMDNhNzQ2YjBjMDUxZjc0OWIzMTgzNTUzNmIzIGxlZ2FjeS10cnVuaworNjg5MjYgZTNjZWViN2ViOTAxMGVlN2ZkZGU0YTEzNTk0YWJlOWQyZWU4OTAwMSBweTNrCis2ODkyNyAyMWNmOTZjYzIyMTYzYTk1NjkzOGM2MTA2Y2I4NWViYmQ0MzYzYTYzIGxlZ2FjeS10cnVuaworNjg5MjggMjgxOWE0NzA2YzgxMTJmNGJhNmM2MmE3ZTM3MzEzMWZhOTJkYWE4YiBweTNrCis2ODkyOSA3ZDVmYTUyMzQxZTIzMjMwMGNiN2I5MzA4NTdiMDk5NzJlMjVmOTBhIGxlZ2FjeS10cnVuaworNjg5MzAgNzVkMGY2MThlMWRlYzVhZjhkZDg4MmQ5N2ZhYjc3OTNhMmFhODQ4YyByZWxlYXNlMjYtbWFpbnQKKzY4OTMxIDUwZjQwZjJjMzdkZGE1N2Y0YzM4NGExYjhiZGUwOTZhOWFiZTA4ZDUgcHkzaworNjg5MzIgY2M4MTMwYWZiMDM5MTIyYjk0MTM1MTEzNGQ0NGM4N2Q2MWEzMjVmMyByZWxlYXNlMzAtbWFpbnQKKzY4OTMzIDdhNTc1OWU4NTYzOTRmZDQ3M2JkZjljNWE4NDBmNWM3MzE4MjI4MzggbGVnYWN5LXRydW5rCis2ODkzNCA0NzFiZTJjNjQ1N2VlYTM1MjUyODA4YjkxMjg1NjFhMWQyZGM0NjE5IHJlbGVhc2UyNi1tYWludAorNjg5MzUgMDExMzIxOTVmNTYyNTE1OGU3OGYyNmExYzc3YWZiOTFkYjFiMzhiZiBweTNrCis2ODkzNiAzMzY5YTVhY2FmNzk4MzY1YWY0Yzc4MTE4NTc2MWE0NTUxOTVlZmEyIHJlbGVhc2UzMC1tYWludAorNjg5MzcgYzlmZWEzNWI4NzNlYTFhNzgzNjIzYzFlYzYzOWNhOGExZGI2MDMwZSBweTNrCis2ODkzOCAxMGY0YTE2MDQzODg5MWNmZDBlNTNmZDVjYWUzNjU5Nzc3MTgyOWNlIHB5M2staXNzdWUxNzE3Cis2ODk0MCBlMGQ5YzY1OWY3YTZjMGUyNzg5MTM2NGI5ZDBmMzcxNGU5M2QyYjU1IHB5M2staXNzdWUxNzE3Cis2ODk0MSAxNGFjZTIwNTQ0N2JiZTIzOGVhZDY0NThhMzMwMThhZmVmODRlY2IyIGxlZ2FjeS10cnVuaworNjg5NDIgZTQ3MDVmZjYyNmYwOGI0OTRkZDgyYzBmNzE0ZWY4ODU4YjVjYTgwNCBsZWdhY3ktdHJ1bmsKKzY4OTQzIGE1MjI5MjM3ZWI1MGNiZjM2OGY5MDA2MmY5MDdmNjdlNThlY2ZmNGQgbGVnYWN5LXRydW5rCis2ODk0NSA0ZTgyZmIxYWViMDIyMmEwZjhjNDgwYzUyZjg4ODk4NzkyMjc0ODEzIGxlZ2FjeS10cnVuaworNjg5NDYgNmE5MWIzYWRjYWQ2ZTYwNzJhNDE3YWEwMGU3MmM5NDc3ODQ2MDdiMiByZWxlYXNlMjYtbWFpbnQKKzY4OTQ3IGM4NTFlZDBjZjY1ZmJjNmViMzhlZGEyMDk1ZGM4Y2Y4NzM5YzA0MWUgbGVnYWN5LXRydW5rCis2ODk0OCAwOTZiNDg4NDM4ZTkyNGVjODllN2MyODQ3NWM0NWUzMDIwMmZmZTVkIHJlbGVhc2UyNi1tYWludAorNjg5NDkgYzE1NWNiMzhmNzZkMGU2ODA1NThmOGNkMDEwOGNmN2Y1ODhkNjViYiBweTNrCis2ODk1MCA0NWE1Mjc2ZTVkY2M2NWViZTJkN2Q2ZDM0OGNjMmVmODk5ZWY0NTYwIHJlbGVhc2UzMC1tYWludAorNjg5NTEgMjFmYjEwMTQyOTRjYzY3ZTI2NzNjYWRhZGM2YjZjYmY2YjA5MjM4NSBsZWdhY3ktdHJ1bmsKKzY4OTUzIGI0YWNlMmI2YzI4ZjBmNDIxNTEyOGM3NmY1YWI5NzE0NWNhMTBkM2IgbGVnYWN5LXRydW5rCis2ODk1NCBmYjlkMmQyYTQzNTk1NjcyMGI2NzgwZGQ0YTlkZTI3MzFjMzdjYTkyIHB5M2sKKzY4OTU1IGRmYWNlYzhiYTZkYjRlOTYxMjI0OGVkOGVmZWY3ODc2OTVkY2FlNjUgcmVsZWFzZTI2LW1haW50Cis2ODk1NiBiOTRlOWVkMzU1OWMyNzM0MTMzZGQ4YzBmMTQ4ZDIzNWFiYzE2YWMyIHB5M2sKKzY4OTU3IGM0ZDMxZjk3OTkwZTk1YzI5MDA4ZDU1OGI2NWIwZTU0NjA0NzljMDkgcHkzaworNjg5NTggMDRhMzNjNDdhYmI1ZjExNzczYjBiOTBlOTM4MjJlYjE1ZTc2OTIyZiByZWxlYXNlMjYtbWFpbnQKKzY4OTU5IDUyMDM3OTRjN2VhMjE0NzJkZjZjZGYxMTZkOTExOGQ1NWI1ODA0YWUgcmVsZWFzZTMwLW1haW50Cis2ODk2MCAzNWM2OTM3YzAxMjc1YzFlMDIyNmFmNmY4YWM2Y2VmZjBiN2M0MWZhIHB5M2sKKzY4OTYxIGFkMWRiMGFlOThjNmE4NzlhOWViOGFhM2FlYjUwNjgzNzEzMWExN2EgcHkzaworNjg5NjIgMWM1MGExN2MwZjIxYzk2Mjc5MTViMTY1OTNkMjI0NzJhOTlkYjFhNiByZWxlYXNlMzAtbWFpbnQKKzY4OTYzIDY5NjA1MjNmYWRjMWU0YmZiNDRhNjY3N2FkM2QwZWJhYTFhOGYxM2UgcHkzaworNjg5NjQgZDUxMzAyNGY1MTc3NWJhYTVlODAyODc4YTkzYzAzNjUwODhmMjg3ZCBsZWdhY3ktdHJ1bmsKKzY4OTY1IGI4ODUwNjA2ZDkyMWEwYWU4Mzg5ZGQ3NjFhMGFlZjYzMzgwMzA3MjEgcHkzaworNjg5NjYgMDJlMWM1Y2U2YTY5Zjk2ZWMxODEzZGYwMmNiMGNkNTEyYWRhNWNjYSByZWxlYXNlMzAtbWFpbnQKKzY4OTY3IDM2ZmJhZjc1MzhjZWMyNWJkYTgwYzM4ZTA3MTZhMzgyZjI2ZmEwMDIgcmVsZWFzZTI2LW1haW50Cis2ODk2OCBkNDIzNzRkMGFhNTg0YmE5ZmE5NDA2OGM1NGVmZDQyMjI3MzhjYjhlIHJlbGVhc2UyNi1tYWludAorNjg5NjkgZDM2MmRhOThkMGRlODU2YTY0YTA2YmZjYzFiZjcwYWY2YzE3MmFjMCBweTNrCis2ODk3MCBiMDQ4OTZjYWEyOWJlOWJiZWViODc0MDNhMjAwOTZjYzkxOTM1NGUxIHJlbGVhc2UzMC1tYWludAorNjg5NzMgYzk0YTIzN2JmNDk3MDAwYzc5ZjMxYzg5MDFhZjEzNDQ3OTAwMDk3ZCBsZWdhY3ktdHJ1bmsKKzY4OTc0IDIwMDgyOTI1NWE2YTdmYTdhYjUyZDAzN2UyNDcxOGI2ZGNkYzcxYWIgbGVnYWN5LXRydW5rCis2ODk3NSAyZWE3NWY2MGQ5ZTVkMWRhNGVhOTdjMDc1N2FkMjRlYmQxYzJjZDI2IGxlZ2FjeS10cnVuaworNjg5NzYgY2E4ZWE1MmI0NWMzMzhhZmU3ODlkZTA1MjI4OTE0MTFlODdiNDM2NCByZWxlYXNlMjYtbWFpbnQKKzY4OTc3IDk4ZjIyM2VjZThmMjcyOTcwZjU5OWFmNTU4YjE2MzY4YTllNWE1OWQgcHkzaworNjg5NzggMDY4N2Q0NDdkZTYxZmY4ZGFjOTZiOTY1ZjZiNGM2YzcxZmIzNDBmNCBsZWdhY3ktdHJ1bmsKKzY4OTc5IGUxOTg4MDdjNTU4NjdiMjc0NGRjYjZjZTMxYThmNjNmZDM0YThhMzEgcmVsZWFzZTI2LW1haW50Cis2ODk4MCA4NTdkZjZjMDllMTJmOWNjMTU1OGE4ZjM3YjNiY2Q2OTQyMGU2YTMwIHB5M2sKKzY4OTgxIDk0YzJkYzVmNDQ2ZDY3NmFjZWU1NGY5ZjMxOGVkN2JkZDZiZjVhOWMgcHkzaworNjg5ODIgMTRjM2FiOWJkNzA2MWY2MTBjMjBiYjhkNGRjMTI5MzA1N2ExZDE4MiByZWxlYXNlMzAtbWFpbnQKKzY4OTgzIGMyM2U0MGQxYWJiYzhkOTFlYzQ2YTFhNGI4ZjljNDdmMjk2OTgzNGYgcmVsZWFzZTMwLW1haW50Cis2ODk4NCA4MDI1MDY2NDU2NjY0ZGRjNDk5YzhkNjhkYmE5ZDJmNDMxMGVhYmM3IHJlbGVhc2UyNi1tYWludAorNjg5ODUgMmNiMGM1MmQ3NzlmYzIzYmUwZmMyYmFkZjQyOWM2N2ZkNTNjOWEwOSBsZWdhY3ktdHJ1bmsKKzY4OTg2IGY1NzI5MTcxODNmYTJlY2MyYWY0ZTc3N2EyNmU5MWNmZTU5NWZjMmEgcHkzaworNjg5ODcgZjEzOGZiZTI5NDVlNTU4OWIwYTJkNDJkZjgyNTA3NTE1ZmRlMjMyMSByZWxlYXNlMzAtbWFpbnQKKzY4OTkxIGYwODVhYWE0NmQ4NzQ4ZmQ1OGRlZWQwNzZjYmQ5MzA3MDVlMWUxNjMgcHkzaworNjg5OTIgZmZlNzMyZGFkYjBkOGQ5ODQxZDg5N2I5YzcyYTFlMDdhM2UyNTliYiBweTNrCis2ODk5MyAyNTlmYThmNjRhOTdlNjI0NDdkNmU4MTgzNGU5ZjUxY2FjMmIzMDllIHB5M2sKKzY4OTk1IDQ0NTEyMzExZjJiYzgyMDA3MGI4MDVkNjJkNDRiODA5ZTEyZDhhN2EgcHkzaworNjg5OTYgOTZkMjk2Yzc4ZmJhODY2YWE5ZjY4ZTc3N2VmNjhkMmQ3OGE2YjM3ZCBweTNrCis2ODk5NyA1Njc5YmI5YjUxOTBjOTFhYzFhYjEyODFkMWI1NDQwYzE5MTE2ZmU2IHB5M2sKKzY4OTk4IDZjMGJiNTQ4YTk0NmM3YjdlOTVlYmI3OGMxZDVhODI2Zjc1MGI0NDcgbGVnYWN5LXRydW5rCis2ODk5OSA3NzIwZTM2M2MxYzhjZWQ3NzhmMDNmNmQzNjIwZjczYzM2MWYwMzk0IHB5M2sKKzY5MDAwIDg0ZDY0OGNkZGMzMzQ2MGFkN2UyYjYyMjAzMjkxN2FjMGI0Y2QyMDEgcHkzaworNjkwMDEgYjdjZTY3NWZlYmI5MDNjYWFhMGEwNTc4ZDk5ZTI0MzE3ZDFjYWY0MyBsZWdhY3ktdHJ1bmsKKzY5MDAyIGYxMWE0MTA5NTcyNmY5OTM1YWRlNDc3OWM5YTk0MDdmZmU4ZTBiNmUgcHkzaworNjkwMDMgMzMyOTFlMWU4N2VjNzQzZjg1YmI3YTFmNTZhZTE0MjRmMThmMjY5ZCBsZWdhY3ktdHJ1bmsKKzY5MDA0IDQwMDUwMTFkM2EwOWVjYTk5ZTExMjg1MTkxMTIyZWNjNTVmMTI1YWIgcHkzaworNjkwMDUgN2U4MzNjZGViMjQxNzQ1ODZhNTFkMDlkMTczMDBkODY0OGEyNGE4MiBweTNrCis2OTAwNiA0Yjg3ZjMxOTc4YjdlMjE3NmM2OGRiNjhkOTVlYzA1Y2U0N2EwOTI5IHJlbGVhc2UzMC1tYWludAorNjkwMDcgNDhiNzAzN2ZmMjBlODViNjg4ZTBiYjc0NWE3ZTBiOTBkZGQ0ZTQyOSBweTNrCis2OTAwOCA3ZjBlNGU0MjdlYTNkNzBhZThkYWQ0Y2ZkNzg2NTVmN2NiNTIzNTEwIHJlbGVhc2UzMC1tYWludAorNjkwMDkgOThhODU1Yzk3ZmYyMTRmYWFiYTBjY2MzMDI4OTQ4NmEzODQyNzA3YiByZWxlYXNlMjYtbWFpbnQKKzY5MDEwIGQxNzBmZGY0YmRmYjQ1MjJhNjQ0MzNkMzhmOTllNDg0NjU0YjEyZTIgbGVnYWN5LXRydW5rCis2OTAxMSAxNDYzMWM2MjdlMDM3NDJkOGU5ZDgxZTYyMTc2MDhiZWYxNzgyMmM4IHB5M2sKKzY5MDEyIDNlNGM4NzJkMDI0NjdhNTcxNmE1ZmI0ZDJiZDliOTc2ZGJlOTAxMWUgbGVnYWN5LXRydW5rCis2OTAxMyAzNDAyN2U4ZDA0NGYwM2M4ODlhY2Q5OGQ5MzU5Yzg4ZjI0ZDMzYTc3IHB5M2sKKzY5MDE0IGEyODc2NWZkMzJmMDBhNTg3ZjgyYTZiYmM1ZGJhNTBhYjBhNzk3OTUgbGVnYWN5LXRydW5rCis2OTAxNSA3ZWQ5Y2NjMGI1MTk3ZTczMWI4OTgzMGQ1NGUyMDBhNzMyMmFkMTM1IHB5M2sKKzY5MDE2IDhjZDNjZWQxZWQyOTk5ZGU2MGM5Yzk2NzNhOGQxZDA5YzdjMjc3NTQgcmVsZWFzZTMwLW1haW50Cis2OTAxNyBlNzE4ZDI5ODc0ZDc1YzdmNjU3YTY4NmM5ZjdmOTJjOTM3OGJlYWJlIHJlbGVhc2UyNi1tYWludAorNjkwMTggMjI1NGNkMzIwMGYwNjAyZGExZjY3NmFhNDZkNDk4OWNiYzNjOWIzZSBsZWdhY3ktdHJ1bmsKKzY5MDE5IDUzMjQ0YzRlZWYyMjNlMWVlOTEyZDUwZmNiNmY0MzY5MTlkMzhjODEgcHkzaworNjkwMjAgNTQ3YjdhMTdjMzc5OWU3NzIwNWUxMTM5YzIwYzQwMmQwNjUyNzg3ZCBweTNrCis2OTAyMSBhNmIwMjUyM2I5MDM1ZjVjYzE0OTA2ZGNmNWQ0ZWQ0NGJhMTU5YTBjIHJlbGVhc2UzMC1tYWludAorNjkwMjIgMWIzMjBmZmMwZGI4Y2FlODMwODhiOTk1NGYzZjc2NDYyYjljNzg2NSBweTNrCis2OTAyMyA5YTRmZGJjZjJkOWYyYWM3NWJiYThkNGQ5OTMwN2QzZDNmMzg4NjlkIGxlZ2FjeS10cnVuaworNjkwMjQgZmM1MTAyNmFiZGU2YzZkNjVhZWMwNWE3ZjhkYThlNzllMDc2Y2QzNSBweTNrCis2OTAyNSA3NGFhNDNkZDg3NWRkOWU1ZDc5OGM0NjBkNGI0YTQ4YzBmNTUxMTk1IHB5M2sKKzY5MDI2IGFkYmQ3N2E5MGJkZWI1YWMxZGNhM2QwMDdjOGRmZDU0ODZlOTc2OTcgcmVsZWFzZTMwLW1haW50Cis2OTAzMSBjNWE1MmFlYzJkZGY5MWUxM2UwZTdmMzA5MTAyZjI5ZTFkMGIzMGY1IHB5M2staXNzdWUxNzE3Cis2OTAzMiBiNmRlNjkxMmZlMTQ2YmE2YmVkMjA1OGRmNTZlYzU1OGY5MGVhYzZhIHB5M2sKKzY5MDMzIGQyYzA2N2Y5Zjk4Yjk1ZDIxOWNmNDQ4MGZjZTUzM2E3MDVjYzUwYWQgcmVsZWFzZTMwLW1haW50Cis2OTAzNCA1ZmViOTc2YjE4YWFjOGNlOTFmNmViYWE5MDE0Mzk2NGY5NDAxOTBjIHB5M2staXNzdWUxNzE3Cis2OTAzNSBiZWE2YjdhMGI5YTIyZjg5NTE5NGQyNjM4NGE0Njc2Y2QyOWY5NDg5IHB5M2sKKzY5MDM2IDJhNmUwYmM0YmMwMzE5YWZhNGU2ODcxYTUxOTRiZGNiZTUzZGYzN2YgaW8tYworNjkwMzcgMjMxYzRlNDkwYjFmNTlmNzRkYTVlOTM4NGE4YzBhZjRlMWU0YjI2YiBpby1jCis2OTAzOCA2MmNhODFkZDJhZTg4NzI5NmRlYzU3MTNhZDNlMGM1MDFmMzdiNDU1IGxlZ2FjeS10cnVuaworNjkwMzkgYjY3NDcwNmYzYjEwZWRlMmM2ZTU0MmQ0NDI5MmFkOGNlZDk4ODBhNSBsZWdhY3ktdHJ1bmsKKzY5MDQwIDE0MzRkMWJjNjY3ZjcyODI5NmQ2NjM3NWEyZTE3NTZmMTA0MWI1N2YgcmVsZWFzZTI2LW1haW50Cis2OTA0MSBhYjExNDY1NTEyNTUyMzFhYWE4NzZjODQ2YWFkZmVmZTM4MmIyZWM2IHB5M2sKKzY5MDQzIDA1MjJjZmVlODc5YTExZDMzZDRjMWQ5ZjBmMDNiMjcxNDg0OTJlZWQgcmVsZWFzZTMwLW1haW50Cis2OTA0NCA4NDAwMjgyMjZlZDUzZWI2ZjNiNTRlNGZkMWI1MGQ4MDkwYjc1YzVlIGlvLWMKKzY5MDQ1IDA0Y2E1N2JiNzEwODM5MzkzOTRkMzMwZDMzOGM2NTFiMGYyZmIwNTggcHkzay1pc3N1ZTE3MTcKKzY5MDQ2IDRhYjUwOGE1Y2Q3ZWQwYTM1MjE4MzU2OTZmZjJiNTk2MzA1YjZiMDAgcHkzay1pc3N1ZTE3MTcKKzY5MDUwIGMxMDFmNzhhZWQ4YjUxYjM4NTI0YTg4Zjc0OWMzZTg4MjM3YWJiM2QgbGVnYWN5LXRydW5rCis2OTA1MSBjOTA5M2Q0MTU5MGVlYTIyNDNjOWIwZWM5NDMyNThiZGY0ODg5ZjQ4IHB5M2sKKzY5MDUzIGYwNmQ5MDAyNzI5OTQ4NjRiMjVmYTU3N2IzNzY4NzNkY2RjMTIyNDMgbGVnYWN5LXRydW5rCis2OTA1NSBkNjkwMTI5ZDdkYWMyNTU2MmU5Y2RlZjlkNWZhOTA4MTZlYTM1ZjFiIHB5M2sKKzY5MDU2IGZkNGJlYmY5ZGRkZWU3YWM5Nzc3N2VhZTc4MWY4MGRhZDliY2NkODggcmVsZWFzZTI2LW1haW50Cis2OTA1NyAzOTc1NzI1YTg1YjUxODRhYjcyNTVmZWY3YjNkMWNmYTgyZTdkYjNhIHJlbGVhc2UzMC1tYWludAorNjkwNTggOGQ2MDNlNDkzODQ2Zjg3YjBhYzAyNjYxYzcyMmVmNGFiN2NhOGVhMiBweTNrLWlzc3VlMTcxNworNjkwNTkgYmZmOTlhODE4MjRhNzA5NjRkMmQxZWQyNzRhOTI1YWJkZDgxY2FlZCBweTNrLWlzc3VlMTcxNworNjkwNjAgY2E0ZGJlNGFlNjI5ZjQzMTQyNTljZTg4YzQxOGMwOWE4NTFkNzJiMyBsZWdhY3ktdHJ1bmsKKzY5MDYxIDk0NjM0MGZiMTE0YjUzMGYzNGUxZTRkZjg0MWExMjk4YTgzMzgyMTEgbGVnYWN5LXRydW5rCis2OTA2MiAxODg0ZDA4OGUwYWNjZWNmOGIxM2JhMzgzNzViOTkxZTZmNDQ3OWQyIGxlZ2FjeS10cnVuaworNjkwNjMgMGE4YTdjNDU3ZjFiYmY5YmVjOTZiOTk4OGRjY2IxMGNkODA1MGMyNCBsZWdhY3ktdHJ1bmsKKzY5MDY0IDVmYzYwN2I2ZTQyZDdiNzlhNzZmMzdlMTc5YzYxZjQwOTYyMjc5MDcgcHkzaworNjkwNjUgNzNiYTBmNGRiMGQ1OTEwZGNmMjI4NjFkZmEwMTFiNzdjY2I0YzZjZSByZWxlYXNlMzAtbWFpbnQKKzY5MDY2IGQ4YzUyMmQ2MDBlNGUzZTQ5NjA2YTYxNDYyYTg5NTI5MDUzN2IxY2UgcmVsZWFzZTI2LW1haW50Cis2OTA2NyA0NDQ3YmMxZjVhNTEyMTRmNjBmNjg5NjNhOWU5Zjg5Y2U4YWM3ZTVhIHJlbGVhc2UzMC1tYWludAorNjkwNjggOTc0MmU4YTRkY2ExZjBjYzM5YjY1MDgzMDM5ZDE1YTQyMTVhMzkwYiBweTNrCis2OTA2OSA5YzFmMDZiMjczZjcyYzU2MjNlOTFmMDk0MTdmMWUyY2UwZDliZDUzIHJlbGVhc2UzMC1tYWludAorNjkwNzAgOTQ0MDQ2ODA4MzU5M2M1MjJkYjk4NGU5OWFkMmZmMTA5NDg0YzBmMSBsZWdhY3ktdHJ1bmsKKzY5MDcxIDljNWFlZjlmMWZhNzI3ZTc5YTJiYjIyNTQ0YTY0Y2QwMDBjNDc2MjYgcmVsZWFzZTI2LW1haW50Cis2OTA3MiBmMGExYmYyNDkwMTA1ZWRkODg2NWFiM2FlZDE0NTU4ODAzN2U5YTdiIHB5M2sKKzY5MDczIDAxYjljNWQ5OWViZTIzNDQyMWQ2ZGEwMDY4MWRmYmYwNmUwMWI0ODQgcmVsZWFzZTMwLW1haW50Cis2OTA3NCA1MTliMjFmODkxZWJkNWFhOGI5OWJkMjZiMDFkMTY3NjgzMzhkYzg5IGxlZ2FjeS10cnVuaworNjkwNzUgYmI2MzkxNTgyOTZlNzY1NjI2YTI4MWM1ZWIzNzkwNjY0MjMzNzVlNyBweTNrCis2OTA3NiBkODc3ZGJmZDRiZjkzOWUxMjk1NmVmY2M4MDA0MjkyMGM0ZDVlZDdhIHJlbGVhc2UyNi1tYWludAorNjkwNzcgYmVkYzY4NDY4NDRkYmYwZjU5MTRhNDQyODVjOWJmYTdlNjU0NjNjYyByZWxlYXNlMzAtbWFpbnQKKzY5MDc4IDIzODRjMDRlZGJiNjBiYjZjZGQyOWU3Mzc0MzFhYzlmMzI2YmIwZTkgbGVnYWN5LXRydW5rCis2OTA3OSBhMzMwNDE5MGQ4YWFhYTkxNTA4N2NjNWI0ZmNhNjkxYTI1NzI2ZTY4IGxlZ2FjeS10cnVuaworNjkwODAgOWE5ZDI2ZTg0MmIzMzE1YTY3YjE3NzM2MTJiNjBkMzljMTQ0OTA0YiBsZWdhY3ktdHJ1bmsKKzY5MDgxIDMyMjg5MjllY2I2ZDg0ODMzNzlkMjlmNmQwZDIyNjllNDdjN2MwMjcgcHkzaworNjkwODIgZDY2ZTFhYmIzYTk4Y2ZkNmM3YmI4NjA1OTQ2NTk3ZmIyM2E3YmQ4YiBweTNrCis2OTA4MyA3YWQ5OTZlZTMzMzQxZGYwNjgxZjM0OTkwM2VjMDEzM2U2YWJiMDVhIGxlZ2FjeS10cnVuaworNjkwODQgNzI1YjIwODczMGE1OTM0OTE0Zjk3YWQ3Mzk3MDAwZDQzNjQxNjM0OCByZWxlYXNlMjYtbWFpbnQKKzY5MDg1IDA3ZmYyODFiZTAyYzU1NzZhYWM0MGQ2MDQ0MWYwMjVkYTdmODEyM2QgbGVnYWN5LXRydW5rCis2OTA4NiA0ZjYwN2MzYWU4ZTJkMTczZjJhYTgzYWIwODM5NjAwNjQwMWFiOGE0IHB5M2sKKzY5MDg3IDdjYjM1MWM5Y2Y0MDI0N2UyNjkzNzJlN2FhODk0MTA1NGY1MDFkOTAgbGVnYWN5LXRydW5rCis2OTA4OCA0Yjg5NzZlYTY5NjYwYThiMjQ0NDVlNzc1MGQ1NDBlNzk2N2Y4MDg2IHB5M2sKKzY5MDg5IDllYjg0ZmM0MzZmYzFiM2E1YTRjNmFiYmI0M2UwZjZjZjAzNGY4YmQgcHkzaworNjkwOTAgNGFiY2Y5ZDFiOTM4MGZiYTAxNmU4OGE0OTA0OGQ4YTc2NGU2Y2QwZCByZWxlYXNlMjYtbWFpbnQKKzY5MDkxIDE0ZTViNmU4MzY4MDBmODJhOTk3N2U0MTFlYjFmMDU4ZDdjZTBhYTQgcmVsZWFzZTMwLW1haW50Cis2OTA5MiAwYjY2N2UzOTNlYjM0ODcwMWZiYzFhYWY2MTA3NTU3MjVmNGI5NmNhIHB5M2sKKzY5MDkzIDk2OTM0NmRiZjMxZTIwNGM2MTZkZjZjZjA3NjBkZjYyMGI2OGI1YTQgcmVsZWFzZTMwLW1haW50Cis2OTA5NCBkYWFlOGMzMjRiZTFiOTE5MTNmNTRjZmRjYWU2OTdjNDUzZWVlMjcyIGxlZ2FjeS10cnVuaworNjkwOTUgZDE2MjlhOTU5Y2I4NTA0NjlmNmJjZDFjZGMzYzliYTMzYTY1YTY2ZSByZWxlYXNlMjYtbWFpbnQKKzY5MDk2IDQ2M2Y2YzEyZjFkNGMyNTExM2Y2MGUzYjcwOWM5ZGYzODE4MzUyNzQgcHkzaworNjkwOTcgZDg1NzE0NTc0YzhhNTAzNWIwZDk0MGI0ZWM2NTg5NGFlNzc1ZGIyYiByZWxlYXNlMzAtbWFpbnQKKzY5MDk4IGJjYjZhZDFjYjU1ZGZhMzJhNDI0MmQ2ZTM4YzlhYzVjZGVjMmYxZWMgcHkzaworNjkwOTkgYWY5NGVmMzhiNWMwZjI3YmNlOTVkMDkxMDQ1NDg1ODA2NjAzOGY1ZCByZWxlYXNlMzAtbWFpbnQKKzY5MTAwIDNjMjkwYmMyMWQyYzNkYWI5NWZjYTZhOTljZTc5ZGNkMmYwNDM0NzggbGVnYWN5LXRydW5rCis2OTEwMSBlNDhjNTkxNGRhODE4ZmM5MTE3NjdhZTdiYTY0ZGI4MWE5NmEzNDE2IHB5M2sKKzY5MTAyIGUyZGNhZDU2ZTQwZTAzMTc0OWU3ZDM4MDA4ZDdiYzdjYzUyOTZhMDEgcmVsZWFzZTI2LW1haW50Cis2OTEwMyA1ZDBlYWViNDEzNGQ3ZWM5ZDM3ODdiYmEzZTkyN2QzZDg4ZWM2NmMzIHJlbGVhc2UzMC1tYWludAorNjkxMDQgNGE0YTc0MzdjNWUxY2Y2NmFkNGZmMjU2NmVlODU4NzEzZjdjMzM5NCBpby1jCis2OTEwNSA5MWVkM2VjZTBjNzZhMmIyNDViMDc0Y2Y2MWZiYzY1ZDU4NmE3OGI5IHB5M2sKKzY5MTA2IGZjNTg2YjM4MTk4NzNlNjNmOTc1ZjNhNjIyYjU0M2RkNDJiZjMxOTcgbGVnYWN5LXRydW5rCis2OTEwNyBjMjYyOGJmZTZhNjg0OGYyODdlMWM5MmM2NDJhNjg2NzEzZmYxYTZkIHJlbGVhc2UyNi1tYWludAorNjkxMDggYzM3OGM0ZjRhNzk2OWUxZmQwNTU5NzdhZjljYzNiNzg3YTQxN2Q0YiBweTNrCis2OTEwOSAyMGY0YWZjZDNiMjdlZTYzMDBjOGZmOTE5MjBjMGRlMmI2MGYxYjJjIHJlbGVhc2UzMC1tYWludAorNjkxMTAgYjg4ZDM3NzAxMWY1MGRhOWQzNGI5ODdjZjQzNmZkNzQ5OWI1YmQ0ZCBweTNrCis2OTExMSBiNDhiNWRkYWRhODk0OGU4Yzk1MzI1OTZjODdlMGJmY2I1YmE4YzIwIHB5M2sKKzY5MTEyIDZhMjg5NmQ5MjNlM2EyYzI2YjkyNmU5M2M4MjYwNjU2NjNmOWU5MmMgbGVnYWN5LXRydW5rCis2OTExMyA0YWIzODFhZWE2NTgwMjBiZjJkNDZjNDU0ZjJhN2I4NTM2Njc3ZWRlIGxlZ2FjeS10cnVuaworNjkxMTQgZTIyNzA1NGQ0OTZkZmU4NGVjNzQzYjFiZTllMmFiODk5NmEwMjcwZCBweTNrCis2OTExNSBhMDM4ZThmYjY3YzIxMGVjZTE4Y2FiYTY3MjNiNzg3YjMxNDBmMjhjIGlvLWMKKzY5MTE2IDdiNzk2ODg2MjZlNGVmMGRiYzkxZDYyY2FlNDI2ZGE2NWQ1OGNmYTYgcHkzaworNjkxMTcgOTg2N2M4NDk1MzBiYmJmMjY3YmM4MDlmZWIzMTYzYjA1OGMwMTFlNyBweTNrCis2OTExOCA4YzJjNzJjZjJhMGNmYjYyZmIzMDNjYTYzZjVlZWZhNWM2ZmY5NzFmIHB5M2sKKzY5MTE5IDYxNzg3NTMzMzk1YzBkYWFkYWFhZDU1N2JlYjRmMjA3OGZlOGFhNjEgcmVsZWFzZTMwLW1haW50Cis2OTEyMCBlNjdkYzRkYjk2NGM4OWE2NzY0ZDQ4M2JhYTQ3NGY1ZWQ0NDMzMzFmIHB5M2sKKzY5MTIxIDNjMmIzNWExMDU5M2JkNjhjZjhmZjc5ZGQ2ZjMxZjVhNzJhNDNmMWUgcmVsZWFzZTMwLW1haW50Cis2OTEyNCAzNTkzOTRiNjNhMjM4OGFjMjdjMDk4Y2VlZjJmNDhiZWEyMDYxNTMyIHJlbGVhc2UzMC1tYWludAorNjkxMjUgN2ZjMGFkMTFiMGFmMDc0YjA1NGExMWMwNmMzNmNkYTFhYWMyYzk4OCBweTNrLWlzc3VlMTcxNworNjkxMjYgMzc4YmMxOGQyMzUwOWJiZjE5YzhmN2E1YjVhZTgxYzg1MjVhZTNhOCBweTNrLWlzc3VlMTcxNworNjkxMjcgMjM5NDRmMWQ1M2ZkZmI5Y2QwMDBkYmE4YWI3MjZjM2FjNDJmZjg5MiBweTNrLWlzc3VlMTcxNworNjkxMjkgNGM5ZWE2NDdlYWY0MjFkZTU3NjkyZDBlZjM2MTdkM2VlMjA5MmQ2OCBsZWdhY3ktdHJ1bmsKKzY5MTMwIGM1ZTI4Mjg1Yjc0ZDAxMjMyMWI1NmM3YjdhM2Y5ZWZiZDNjNmVjN2IgbGVnYWN5LXRydW5rCis2OTEzMSA3NTQwMzE0ZmYyNjdiNGQ1ZWUwM2NkNTM5ZjJhMDJlYmRkYzA2N2E1IGxlZ2FjeS10cnVuaworNjkxMzIgMDJhOTBkYzBjMjlhOGFmNjViMGIyYjkxMTZlNmM0MGI0YmE2NDY1YSBweTNrCis2OTEzMyBkZjA5MDU5N2FmYWFmMGY3NzhiNWMzYjYxYTc1MWZkMmY3OTUxZmM3IHB5M2sKKzY5MTM0IGJlNTczNTRkZGIxMTQ0NjIzMGFjYmI0YjE5YWZlNTcxMjkxYWU0MTUgbGVnYWN5LXRydW5rCis2OTEzNSBkY2ZkNDM2NTY3Y2VmOTQ4N2RkOTBhNTQ3YTdlYmEzZjFmZGE0NjlkIHJlbGVhc2UyNi1tYWludAorNjkxMzYgNDMxNzFmNTU3YWY4MGZlYTBjOGUwYTJhMzY5ZDFkN2QwYmQ4NTEzNyBweTNrCis2OTEzNyBjMDZmYWE4MTk2YjNhMDdlNjZhNzBmN2Q4ZTJiZTEwNzE4MWIxNGVkIHJlbGVhc2UzMC1tYWludAorNjkxMzggMWMwYTVhOTgyN2ZhOTdmNmUxYjk1MWY2MDYwNzU5ZjljNGFhYjk2NCBweTNrCis2OTEzOSA1ZjZkMjI1ZTNjMWRhYzA5YWJiNzNlZjU4OGU2MzQ4YThmNDE0MjI2IGxlZ2FjeS10cnVuaworNjkxNDAgOTQyNmVlYjdmNGU2YTUxY2NkYzBkMGQzNjBmMjgyOGViNzhkOTY1MiBsZWdhY3ktdHJ1bmsKKzY5MTQxIDlkM2MyY2U4NmY0MjhlMjFmYzRlYjE4M2FhMjM4YmVlMjY3MDkzNzYgbGVnYWN5LXRydW5rCis2OTE0MyAwY2FhMDAyZjVmM2QyNThlNGQ1ZDQyYTFkOGI3MTg0M2Y5ZTQ3MGNlIGxlZ2FjeS10cnVuaworNjkxNDYgMTBkYWVlM2EzNjA5NzhiOTM5MzYwYzgxMzE1ZTRiOGNkNzY1ZjY2MiBsZWdhY3ktdHJ1bmsKKzY5MTQ5IGNkNWRiNDNkYmI2NWI5MTcwMjEyMDFiMzY5NGIxYTdmY2Y3NDYyNDMgbGVnYWN5LXRydW5rCis2OTE1MCAxN2Q0MDFhZDZhMjE1OWZmOGMwYTc0YjhmNjhhZDY3OWZkYjVlMjdkIHB5M2sKKzY5MTUxIGJjMmQ5NGZkOTEwYzBjODM1MDg5MzFmN2U4NGVhNjVkMTJkYjY5YTYgcHkzaworNjkxNTIgMWYyOTIyYmE1YTJhMTAxODk1ZjI5NWE5MzM5NDRlNTI3OTg3MzNlZSByZWxlYXNlMjYtbWFpbnQKKzY5MTUzIDRjMjA1ODM1MDgzMzhjZjkwYTQ5NWQ0ZWM5MWUzNzgyZjQzNGE4OTYgcmVsZWFzZTMwLW1haW50Cis2OTE1NCBhYTA3YTEyMzE5NGEwYjc4OWM2M2NiNDdmNzg4NjZiZmMyYWExN2UzIGxlZ2FjeS10cnVuaworNjkxNTUgNzM5ODFiY2RhNWEyYmJjYWE1OGFmNGI0ZGI3MDBlZjVkYzg1NjUzMSBsZWdhY3ktdHJ1bmsKKzY5MTU2IGViMjYwN2E2NTE2ZTY3YmNhNDUwOGEyZGFlZDYzODFmN2I2NzEyNWQgbGVnYWN5LXRydW5rCis2OTE1NyBiYzkyZDgzZTU1MDgyODc3ZGZmZTUyMDIzODY0MmEyZGU0NWIyYmIwIGxlZ2FjeS10cnVuaworNjkxNTggODY3MmIwZjY1NzVkM2IxY2M2YWVjZjEwMzhiODk5OWM3M2U2NjQxNiBsZWdhY3ktdHJ1bmsKKzY5MTU5IDlhMjQ0YWZhMWE5YTE4MmY0YTg3ZDk1N2I0MDgzZmRkNzI3OTUxNzkgbGVnYWN5LXRydW5rCis2OTE2MCBiNDc3OTU4ZGY5NzhlZDFhY2NkNDFlYzIxM2I2MmQ2MTE5NWU3YTQzIHJlbGVhc2UyNi1tYWludAorNjkxNjEgZmViOTkzNDMwN2I5Yjc4OTVlYmY0MWE0MjdmMDY0NWRiZjJmNzg0ZCBsZWdhY3ktdHJ1bmsKKzY5MTYyIDE0ODQyMTcyYjE1MjJmOWJhMGJmZDRkYTUxYTI5MGJhMzc3NTM3ZWUgcmVsZWFzZTI2LW1haW50Cis2OTE2MyBiOGNlOTc5Y2RkY2UyMDZjNzFjMDY4N2Y0N2VkNzcyYWMyNTcxMDM1IHJlbGVhc2UzMC1tYWludAorNjkxNjQgMzk1NGM5YjkwYjUyN2ExMTAyZWRlN2U2ZTgzYzVmYWM1ZTYyNTgyMyBweTNrCis2OTE2NSAwNmJiY2I3OTJmMDRlMGEzNGQ3MjU0MWJhNTI3YjAyMjIyYzNmZWQ3IHB5M2sKKzY5MTY2IDhkM2Y3ZGQ5YjZjY2UwNTNkYmVhMDA2ZGNhMDg0NDNmNzExMTI0YTcgcHkzaworNjkxNjcgNTBiZDJjMThlZmYwNjUyOTVjMDliOGQ0NDk5ZGM1NWVkYTY4NzhhNCBweTNrCis2OTE2OCA4MTU1ODlkNjJhOWFlMjAxYTkwNDU0ZGM2OGIxMjkxNTQ2ODMwMjlmIHB5M2sKKzY5MTY5IGQyNmQ5NzhkMDA2NjQ4NjhjMGNjYjhmZTk2ZWMwNTQzODFjMDQ2ZDQgbGVnYWN5LXRydW5rCis2OTE3MCA0YjMyNDZjODNlM2YyY2NhYzc0MTU2MWNiYTVhNDdkZjIyZDlkZjYwIHB5M2sKKzY5MTcxIDQyN2Y0YTc0ZjUzOGFiZjQ2NzMxY2Q4NWU4YWRkOWZlZmQ0ZDI3NGIgcHkzaworNjkxNzIgZDg1ZWYyNmVmZDEwMzc2YmIyMTM1ZTFlMThhN2NmMDZiZGYwZjcyZCBweTNrCis2OTE3MyAxMzRmYmNlMTExZTliOWMyZDgxZWUwNDhkODhhMzE5ZjgyODU5YTBkIHB5M2sKKzY5MTc0IGRlZWRkZGM3ZTBiNGQ5MWUzZTlkNjExNThiZTI5MDk0ODQ1MmU4MzAgcHkzaworNjkxNzYgMzg2ZWI0YjVjYmIzYWM2MWZiNWU4YjcwN2MzZGVmZTYxZGY3NWVjMyBweTNrCis2OTE3NyBmYmIxN2NhYjU3MTZlMzkzN2QzNTBmZDQ3MmI2NzQyMWI5MzBjNGFmIHB5M2sKKzY5MTc4IDZiY2Y4NGQ2Mzc5NzUyYmU4NmQxZjliMzQ5OTM4ZTdkN2Y1YzBkMTUgcHkzaworNjkxNzkgNzY2NDA1YzA0YmRjMjk0NDUzM2M0ZGE2ODIwODZiMWY2MGY2Y2RhZiBweTNrCis2OTE4MSA3YzkxZjQ3OWJkMGQ5MTBiZjlkNGMzNDQ5M2QwYTQxZTA4Yjg4ZmM2IHB5M2sKKzY5MTgyIGU5Njc1ZDcyZTNlM2I5NDAzZGU0MGMyZDExMTNmMTUxMGRkMjE2ZmMgcmVsZWFzZTMwLW1haW50Cis2OTE4MyBlNjYzMDc1ZmQxYWU0YTk5ODAwZTY3NTA3OGNhZjJiYTZmNzkwMzc2IHB5M2staXNzdWUxNzE3Cis2OTE4NCA5Y2EzNGMxOGUxYmQzYTFlZjFhMzE4NTQ2MzU5OWI4MTdlYzI4ZTc5IHB5M2sKKzY5MTg1IDAxNjJjZDRmNTViZTMxZDFiZWQyYWZmNWE3ZGM2OTNkZDlmOWEwODggcmVsZWFzZTMwLW1haW50Cis2OTE4NiBmMDA4OTQxM2MxMmZkNDNlODJjNTVlOWE5NTEyYzE2YWJjMzliOWVmIHB5M2staXNzdWUxNzE3Cis2OTE4OCBiYTk0ZDdjMDk1ZTgwZjg5YmUyOWIyMjMzZGJmMzNhYzg1Yjk3ODc4IHB5M2sKKzY5MTg5IDQxMGRmZDQyM2VmMTJiM2MzNDdmNGRlOWNlNzNhNWY1OGE2ZjgyMGUgcmVsZWFzZTMwLW1haW50Cis2OTE5MCBlMmRiMTUxOTZhNTRiNTM5MDI5NDYyODA2MzFkOTlmNWYzYTU2NjBlIHB5M2sKKzY5MTkxIDIzNTgyOTk1NjRlYTgwNDlmOGJjYTFhYTE1NmYxZTBkNDZhYTVmNjMgcmVsZWFzZTMwLW1haW50Cis2OTE5MiBlOTQ1NzgyNDc3NzQwYzhmYzE5YTlkZmQwMDg1Y2UzM2NiMWQ5MGI4IHB5M2sKKzY5MTkzIGZkYWU0ZTc0OWQyYjM4MDlmMDU3OTg0MWZhNTk3MDM2MTdhYmM3ZDcgcmVsZWFzZTMwLW1haW50Cis2OTE5NCA1N2Q3ZDZjMmIxMWJjYzU0OTVmN2U4OWM5ZGM1NGZhM2UyZGNmYjA5IGlvLWMKKzY5MTk1IDQ3ZDc0NzEyNGEzZTBjNGJjNzA4OWJkNzA2ZWIyZTUxZDQ3YmUyZWQgbGVnYWN5LXRydW5rCis2OTE5NiBhZWYyOWE5ZWQ0OTE4NDcyY2YyYjQ3M2UwZjkzZDE4ZjIwNmJhYTg3IHJlbGVhc2UyNi1tYWludAorNjkxOTcgOGM0NDEwZDA2N2VlN2ExOWM3YjZjNjdmODhiMzhhZTFhYjMyOTNjMyBweTNrCis2OTE5OCBhZTAyNmQyNTlkNDExMTM4ZTUwZjA3MTQ3NzE5Y2NiMTlhOTZhZTNmIHB5M2sKKzY5MjAwIDkyMzYzNTFiNTI5YTRjYmRiYThiODU2YjdhNmQ1MjhkMWZhYjVhZWYgbGVnYWN5LXRydW5rCis2OTIwMSBjMDgzYzI3NGY5YWZlY2NhZDgyYjhiNDdiMzA2NzMwMmI5N2JiYzUyIHJlbGVhc2UyNi1tYWludAorNjkyMDIgMmMxOTI3MmQ4ZTU2NTg2ZTE5N2EyYjE0NGU3MGE5OWE4YjkxNTkxMSBweTNrCis2OTIwMyA2ZTVjYTk4YTMwYWMzODUzMTA1ZGQxZWI3MDU1YjM5NjI2NjhjNjYwIHJlbGVhc2UzMC1tYWludAorNjkyMDUgMDFiM2FjZDEwOWRiYjU2MjQ4Mjc0Zjc1MTRmYzIwMGFiYWU3MDNmMCBsZWdhY3ktdHJ1bmsKKzY5MjA2IDJhZGY5ZWQ2YmE3ZTg5NzRlNzcyOGVhMTk5YTgyOWI5MTQxNTdjYWUgcmVsZWFzZTI2LW1haW50Cis2OTIwNyBmZjY4M2E5Mjg0MTkzNDBkNWEwMzE4M2U1NjcxYjdjNTM1MTQwYjY2IHB5M2sKKzY5MjA4IDg3YTk4NWExYjVjOWQwZGMyNmExN2ZkMmRkYmY5OGU2YmZlMTBhODQgcmVsZWFzZTMwLW1haW50Cis2OTIwOSAwNTA3NGM4ODM3Mzg0N2EzYmVjNGYzZGUwOGUyM2NlMDdhYzM1MTY1IHB5M2sKKzY5MjEwIDYzMzg2YWU3N2Y3OTNmODFmNzBhNzU4OThlYmQ3NmExMjY3NzEzMjUgcHkzaworNjkyMTEgZmE3OWYxMjJhMWIyNWYzZTQzMjEzN2NjZTFiZjQyZThiMTc4ODQxOSBsZWdhY3ktdHJ1bmsKKzY5MjEyIDdiN2E2MzliOTYwZjVjMmQzY2I4MzcwMjE5ODVmNTY2NGM4ZDY2ZWIgbGVnYWN5LXRydW5rCis2OTIxMyAwYzMyMGY4ZTdlMjAzNDU4NzMyMmY4YzliZmY2ZTNkMzM1ZGRhZTAyIHB5M2sKKzY5MjE0IGRlYmQxNGM0ODliOTIxOWE1NDhmYzMyMDAyZjRhNGVlODNkMmE0MWQgcHkzaworNjkyMTUgODdmYmJmMjJhZGYzN2JhNzhjZjhjZWIxMjQzNzI3MjdlYjJmMTE0ZSByZWxlYXNlMzAtbWFpbnQKKzY5MjE2IDVjNzAyYTdkNGM0MDlhZmNjMjMxZDkzYWRlNDlmZGU3NTIxNjIwOGEgcHkzay1pc3N1ZTE3MTcKKzY5MjE3IDQwZmY4M2UwMjM5NTMxZWMzOGY2ZWJkMTk0ZDhkN2Y2MjVkNmU5ZjQgbGVnYWN5LXRydW5rCis2OTIxOCA5MDgyMWM3YWQ4NzRmODkzMzQ3OWQ5OTI5NmM0ODQ1NDE0ZmQ2ODExIHB5M2sKKzY5MjE5IDk5MTNjNDcxNTI2MTA2NzQyNjUwYzY4Yjk5ZjRkYWFmNGFiYjBmNDIgbGVnYWN5LXRydW5rCis2OTIyMCBmYWUxNzU4YTIzNDY1MTg3MDJlMWY5NjZjOGQ1MzY4YTZhNTA2OWQ0IHJlbGVhc2UyNi1tYWludAorNjkyMjEgNjMwYTQzNDUxZDA0YWEwYTRkYTE0NWE3ZWJjODE0MmNlNjI2MTMwYSByZWxlYXNlMzAtbWFpbnQKKzY5MjIyIGE5NTM0MzkxZmZmOWYxY2JlMDE1YmJlZGRkOTc4OTRiMDM2M2M4NGMgcHkzaworNjkyMjMgMzYyZDk2ZGJlOTJjNTQxMDJmMTJmMDZkMjlkM2UxYTJhNmJjZTFjNSByZWxlYXNlMzAtbWFpbnQKKzY5MjI0IDc4NmMxMjc4NTcyY2M2ZjM3OGI1OGVlMTBkYjAxMmJmZDk1OGYwMTAgcHkzaworNjkyMjUgYzIxZDhjZGNjYWUxMGU3MmM2MWUxZTdlNTkyOTlhZjAzYWJlMzJmMyByZWxlYXNlMzAtbWFpbnQKKzY5MjI2IDE0NzlkYjJlZjljZDUzYjVlZjE5MDE0NGM0ZTQ3MmUxNWQ5YWFiNWIgcHkzay1pc3N1ZTE3MTcKKzY5MjI3IDZjOGVkZGYyNDAzNWQzNGNjOWMyZDZjOWYyYjE3ZTE0ZmIyODkyOGIgbGVnYWN5LXRydW5rCis2OTIyOCBjYTcxYTQ0ZDU0MzIyMjliODcwM2ZlMmM4MmMyMTMwMTc1NmQyNWNmIHJlbGVhc2UyNi1tYWludAorNjkyMjkgNjI1MWI5ZDMyMWFmOGQ5NWZiNDIyYTdmN2Q3NDVlNjVhNzJiMDk1NyBweTNrCis2OTIzMCA3NDQzOGZjMTFkMDVkY2RhOTdhMDljMTJmNjBhMmQ5NTlmODM2OTM3IHJlbGVhc2UzMC1tYWludAorNjkyMzMgZjVkMTQzNGY0ZDNmOTdlM2MzNjgyYTVjNTcxMmZkMTVhMWU2NmNmNiBweTNrCis2OTIzNCA5OGY0YzkwNjg3NzUwNzEwZmI0ZTFhNmM5NjJjMDQyNWE3MTQxMGJkIHB5M2sKKzY5MjM2IGM4MjA3MjUyNjVhYjE5MDkwYmNhZDE2MTdhOWJlOGFiNjhjMmVjZGYgcmVsZWFzZTMwLW1haW50Cis2OTIzNyBkM2U2ZjI2MDIzMDBjYWVhNzY1ZDRhMDUxMzM3OGY2MmQyZDNiNmFhIGxlZ2FjeS10cnVuaworNjkyMzggMzg4MGExNTkyMTM3ZTY4Yjg5MWM4NDgxNzZhMTllMTY2NGYyZTJhNiByZWxlYXNlMjYtbWFpbnQKKzY5MjM5IDY3NjU0MTA2ZWU3OTU3NGE2ZjRhODhkOGM1YjRlNmFmZTNiY2Q4Y2IgcHkzaworNjkyNDAgNzM1NGYxYWZhZWNiNDViMTQxYTA0MDkyOThlNzk2ZmYyNmRiMTEwYSBsZWdhY3ktdHJ1bmsKKzY5MjQxIDdiYTQxYzA5MTdmZjdiMTA0MDZlZjRiYzk4YTY0YjA5NjBlODFiOTUgcmVsZWFzZTI2LW1haW50Cis2OTI0MiA1YzI1NDc5NWFhMDdhNzI3MThjYzA2Yzg2ZjYxMTY4ZmIxNmQ1MTM3IGxlZ2FjeS10cnVuaworNjkyNDMgYWVhOTBmNWYzOThiZGVjMGMzY2EzNmUxNzYwMTIzYzJiYmE0MmI5ZCByZWxlYXNlMjYtbWFpbnQKKzY5MjQ0IGExYTcxZDUxNWRkMmZkOWY5YjUwZDlhMmRmY2Y0MzA1YzgyZGM5OWMgcmVsZWFzZTI2LW1haW50Cis2OTI0NSAwZjNhYWJhZTRjYzY0NjU5OTIyOWNkYTliNWZkZDYxODRmM2IwMjc3IHJlbGVhc2UzMC1tYWludAorNjkyNDYgNWI3MTMwNDVlYTkwNmUwZmUyMWJiZjFhMTY0ZTMxODkzOWEwNzIxZiBweTNrCis2OTI0NyBmMzc3Mjc3NDgyYWI1ODYwODAyNzIzNTA0Yzk2NDFjOGNjNjZiYmE1IHB5M2sKKzY5MjQ4IGYzNTFmYjdlYTE3OTZhYzA5NGFhZWFiNDZiMGM4N2EwNTZmMDkxZGMgcmVsZWFzZTMwLW1haW50Cis2OTI0OSA4NTdhM2Y5ZGE5MTUzMTU5ZTUyMTZmZmViYTUzZmQ3YjFiZjFkMTI3IHB5M2sKKzY5MjUxIGM1MTNlNzI4ZTI0Y2JmNTY2OGQ4ZDhiYTAxNjFhZGMwM2U4MmMxN2UgcHkzaworNjkyNTIgZTIwZjVhNjg0YWVmYTU4OGI0NTBiMzMwYTRiNmExYTJjYjY1ZWJiOSBsZWdhY3ktdHJ1bmsKKzY5MjUzIGVjNjlkYjI0ZGUxOTBhN2U5MjI0M2QwNzZkMDE4MDM1YjhjZjJiYTQgbGVnYWN5LXRydW5rCis2OTI1NCA4YjA4ODJjNjdiNmNmZTFmMDg1MmM2MmUwYTFjMmRiYTRmYTQxOGMwIHB5M2sKKzY5MjU1IGU1YWJhZmFlMzYwNDVjNWViYmNmNDI3MTdlM2E3YTAxNjI0MGExZTkgcmVsZWFzZTI2LW1haW50Cis2OTI1NyA3NTUyMWMxMjM2MTNhY2FiYjdlZGYyY2M0YzRmNjI5MzY1MjVmYmJmIGxlZ2FjeS10cnVuaworNjkyNTkgNWYzMzU0YzUyZThiOGFhYWU0YTE3NDQ0NDJlYmIzMDU5ZWEyNDcwNyBweTNrCis2OTI2MCBlOTcwN2NjMzY4OWQzOGRiYWFkMDBlNDk0N2UzMWNiNTkyZDNlYWFlIGxlZ2FjeS10cnVuaworNjkyNjEgOGMwMTk4Nzc0ZWQ2ZGFiZWYzZmU1YWNhYzMyOWE5ZDVhNDU5Mzk4ZSBweTNrCis2OTI2MiAxZTdhMDZhN2Y1ZTc4YjA3NTFjZDk0NTYzOTM1ZDVkNzU2OGI3OTYzIGxlZ2FjeS10cnVuaworNjkyNjggYjU4NmNhM2EzMDYyMjUyYWE5OGE2MjQ1NzFmYjcwZWE4ODkwZjA2OCBsZWdhY3ktdHJ1bmsKKzY5MjcxIDQ4NDVhYmY1NzJmMTQ2Yjg0ZmJhNjIxM2ExNDExY2VkZjk3NjUzMTMgbGVnYWN5LXRydW5rCis2OTI3MiBlYzYzNGU1N2JjNTg2MjM2N2MwZjhiZTg5MjEwNGI3OTI3NDkwYjU3IGxlZ2FjeS10cnVuaworNjkyNzMgZjc0NTI4Nzc2YzExNWY0M2VhMTNlZjAyZGYzYTRlYjIzNmMyZGUxNiBsZWdhY3ktdHJ1bmsKKzY5Mjc0IDI0NTY2ZTQ5OTdhZTJmNjc1ZTZiYzhmYTUwMDQxMjY4YWE4MWQ3ZTYgcHkzaworNjkyNzUgY2UwNGUzNmYyYTU1OTkyOTZiNDc0Y2RiYTcxMmI5ZjI2ZDJkODk4NSByZWxlYXNlMjYtbWFpbnQKKzY5Mjc2IDJiNjAzZjcyMzI2MDVkZjM1N2ZmMDA1NWE3ZTUzMDM1NTQwYTUyOWEgbGVnYWN5LXRydW5rCis2OTI3NyA0NzNlYjM3MGRlMmNmZDY2YWJmYmZmNjFmZjU3N2NmMGZjY2M3NjE2IHJlbGVhc2UyNi1tYWludAorNjkyNzggYzkxYjc2ZDhlYzBhOTcxNjVlNThjOTYwZDZhNzliOTFlZTkzM2NmYiByZWxlYXNlMzAtbWFpbnQKKzY5Mjc5IGFhMmViMGYyNDJmZmQ5NTg4YmNjNDcxMjgyNjMyMDhjN2VkZTY0M2YgcHkzaworNjkyODAgOGUxNWRmMzcyNmUxMjA5YTAxYjEzZjEyZWZlOGJiMzk1N2U3YmU5ZCBweTNrCis2OTI4MSA1M2Q2NDQ1YzZjNWE4ZDk4NjAzZTdjM2QzMzM4ODllOWFhZjU0YTkxIHB5M2sKKzY5MjgyIGI0NjE4NWQ3ZTk1YTdhMGMzMzFmMjc2ODM0ZmY1Y2I1NmMwMjA2NTAgcHkzaworNjkyODMgMzc4YWJiMjgxZTMxNWNkMDg0MDBkYmYyNGY1ZjI5NmM1MTJlNGQ3YiBweTNrCis2OTI4NCA4YjE4YjM4OTBlMzE2MDk0Y2RkMDFiYWM3MjAyMTk1NDI3NDVhNGM5IHB5M2sKKzY5Mjg1IGUyMTRiZGQ1NTJmYzI2ZjRmNmIyYzBjYWM2MzRmODgyYjY4OGQ2MTAgbGVnYWN5LXRydW5rCis2OTI4NiA1YTk0MjQ4OTNiNWZkMWQ2ZWM1ODk0M2RkMjFmNWFjNDY4YjRkOGQzIHJlbGVhc2UyNi1tYWludAorNjkyODcgMjMzM2E1N2ZlYjk4NTAyZGUwYjBhYmYyMGJiZDEzZTNlMDFkOTAzNSBweTNrCis2OTI4OCAxYjIzM2M4M2YyYTliODFhY2YwZWYyZmQ0ODI5ZjY0M2Y1ZTgzOWU5IGxlZ2FjeS10cnVuaworNjkyODkgY2E0MjMwMDhmYTRhZTY1MGZjMmRkMGIzYTM1NWU4N2M3NmJhMzY0YSBsZWdhY3ktdHJ1bmsKKzY5MjkwIDkyMTdiM2E0NzUyODYyODBmMDYxYTdhZjE5ZjQ2N2Q3NDlhMjBkNDYgcHkzaworNjkyOTEgNDQ1MmViMDU3Y2M0Y2RhZWQ0ZjllODE1NmI3NDFiMTcyZjU4MGZiNyBweTNrCis2OTI5MiAzZjI3N2I1NjVmNzZlYzY4ZDI3ZmNkZThhNzg2N2Q2OGY4ZDM0MGRlIHB5M2sKKzY5MjkzIDhhYTcxYzE5ZGNiODA4Y2E4MWM2YzJjM2QxYjRhMTc1NDhmZDliZjUgbGVnYWN5LXRydW5rCis2OTI5NCAxOGQzNzI5ZTJiYWMwMTJjMjdmYjdiMzFlYTc1NzAxY2E5NmU4MjAzIHB5M2sKKzY5Mjk1IGIxMjZjZTcwN2EzNDZlODAzZjczN2RjYmNiODQ4NzQ3ODU5YjlkZWUgbGVnYWN5LXRydW5rCis2OTI5NiA1MmY3OGJiMjZiZjUwZjM0ZTZjMmJiZjAwNWViMzQ1YmRlMGU3NDY5IHB5M2sKKzY5Mjk3IGVlYWEyNTkwNjlhMzNiZjkyMDViY2IwZTIzY2QwOWFhOWUxOGNmYjUgbGVnYWN5LXRydW5rCis2OTI5OCA4Zjg5MTBmM2I2NTFjMjgzZWRhNDc5ZmFlZmEzOTZmZGJhMTYzY2Y1IGxlZ2FjeS10cnVuaworNjkyOTkgOGM4ODBiYmJlNjg1YzIyMDE2M2QxNmJkMWQyMGRmM2I4MjQ4OTI5OCBsZWdhY3ktdHJ1bmsKKzY5MzAwIDBjOWQ1OTk4MzRiOGI0Y2M0Y2VlYTFjMDU0ZWZhZDE5MTY4NmFmODcgbGVnYWN5LXRydW5rCis2OTMwMSA0NTc5NTdhN2Q2YmE5YmFmOWFjYjIwOGNhYTBlMjI2NzRhM2RhNTFjIGxlZ2FjeS10cnVuaworNjkzMDIgZjQwMTJlNzgyNjBjNWQ5MDQ0ZjAxODc5Yzg3NTg5NmQ3MWVkOGJiMCBsZWdhY3ktdHJ1bmsKKzY5MzAzIGJmM2I4ZTMwMjEzZjZhZmVlNDAwNzU5OWI2MDBhODg0ZGY1ZjlhNTggbGVnYWN5LXRydW5rCis2OTMwNCBmMGU1Zjg1ODlhMGMzZDQ2NjNjZjI1MTliNTBiYWRlNGNlOGY3Zjc1IGxlZ2FjeS10cnVuaworNjkzMDUgOTBhNGM2NjZmNzdhODU3MzI5MTUzZTA3ODNhYmUxMTVlYmQ3NGI4MCBsZWdhY3ktdHJ1bmsKKzY5MzA2IDQxYzcxYWQ0N2Y4OTNkMzJkZjAwZjIwNmI4ZDJiMTU0MTA0ODVmMGEgcHkzaworNjkzMDcgMzIxZjI3YTQxNGU4NTRhZGVmNTBmNGVkOGZjMDQ0Y2NkNjBiZjUxMiBweTNrCis2OTMwOCA3NjIzOTc5OGE2MDg0OWQ5ZWMzN2JiNWUzZWU1NjIxNWEzYWIwYmZlIHB5M2sKKzY5MzEzIDNmYzI1YWUxODllOTY4YTUwNzZmYjlhZjEyMWM4MzU2ZjVmYzY4M2EgcHkzaworNjkzMTUgZTA1YzZiZTZhZjEwMGE4OTdiOTNiNzRhMzczZjA3MGNlNWI2NzdkYyBsZWdhY3ktdHJ1bmsKKzY5MzE2IDQ2NmViOTc4NGU4YmE5MDhhYTRiNjJlOWQ1MDQwMTk3Mzg1OWY5N2EgbGVnYWN5LXRydW5rCis2OTMxNyBlZjNjNmQ5YjRmZWNhNjc3Yjk0NmQ0NTM4M2RmMzM0ZWNjZmEzMDdkIHJlbGVhc2UyNi1tYWludAorNjkzMTggOTk3YjI2MzJjOWI3NWExY2I2ODIwZGUyYThkMTI2YzE5YjhhM2M1ZCBweTNrCis2OTMxOSBmZGUwM2U3NWJjMTAwYWRkYmEzZDhlODkyNTUxMTViNmU0NGM1NjA0IHJlbGVhc2UzMC1tYWludAorNjkzMjAgZGM4NWNhNDEyMDc5Zjc4M2FkYWIyMzM1ZDgxZDNkNDgwZWJhNzI2MCBweTNrCis2OTMyMSBlNTQyNWFmNjBmMzA0MTYxNTA3MjAzM2E5MmQzNTMwZmYyMDFiNzAyIHB5M2sKKzY5MzIyIGExODkzYzY5MTg3OTRkMGY0YjI3MWVkOWUyYmZmYzc5NjE2MDlmYWQgbGVnYWN5LXRydW5rCis2OTMyMyBlNmExNDY4ODU4MGVmNGRkNjI3ZWNiYTZiNDA3NjUyNDE5NGQ2YTM1IHB5M2sKKzY5MzI0IDUwZDg5NDM2YWVhYjczZGVlYjBiYTM3ZmRkZjYwMGI0YzY0YmI4NjMgbGVnYWN5LXRydW5rCis2OTMyNSAxNjcxMDA0ODM5ZjhiZmZlMjllYjA3ZWI4ZTFmMTFjZTIxZWI5OGU2IHJlbGVhc2UyNi1tYWludAorNjkzMjYgN2UxYTM4NTg0N2E5OGRiOGY1MzVkZWYyODYwNjQ4OWJlNTY1ZTYxNiBweTNrCis2OTMyOCAzNzQzMWNkMTJiZjI3NGFkYzY5OGJhZWUzZmU3MDFjYmE5ZWI0Yzc0IHJlbGVhc2UzMC1tYWludAorNjkzMzAgMjFjM2UzNTMxNTA0NjM2MWEwMGM3Y2UzZmQ1MzI5MmZiYTBmYTUwMSBsZWdhY3ktdHJ1bmsKKzY5MzMxIGUyMzllOTc3YmIzMmEyZDNhNjE2MjBmNjA1MjQ1YmQ1ZDI3Yjk5YzEgbGVnYWN5LXRydW5rCis2OTMzMiBhM2VhNjViZmUzNzA2YTQ2ZTg1ODliMzUxYmEwNDM5ZTkxY2U1YTBmIGxlZ2FjeS10cnVuaworNjkzMzMgZjc4ZDdlYmI5NmRhODRjNjI4NTFjNWNiMjhjMTBmYTMxZDYyNjdiZSByZWxlYXNlMjYtbWFpbnQKKzY5MzM0IGM1MDIyYjEwNjRlYTY2ZWUzNTA3ZWUwYTZhYjFhMzA5NWZjOWQ4NjcgcmVsZWFzZTI2LW1haW50Cis2OTMzNSBlNDM5Zjk3MjJhNzM0OWRmZmU1Y2ZiMDcyODJiMThjYWM0ODhlMjI5IHB5M2sKKzY5MzM2IDU0MGZiZTVjODE2M2Y0OThmNjgwOTQyZWE2ZDZmZWE2ZTJjZDA4N2IgcHkzaworNjkzMzcgN2I4ZmEyNjUyODY2OTEwN2QxYmYzNDMxM2NjNmFiODU5ODZkOTM4NCByZWxlYXNlMjYtbWFpbnQKKzY5MzM4IGRiOGVmYzk0MDE2ZjRkZGNjM2MyMDk2NzJlMjBlZTU5MWVjNmFkYTMgcmVsZWFzZTMwLW1haW50Cis2OTMzOSBkMTg1NTAyOThhZjg3NzMwMGYzNDUxMTNmZDZmYTJhMzRjZTc0OTg4IHJlbGVhc2UzMC1tYWludAorNjkzNDIgZmRlY2I5MTgyNjA0MGRmYTc2OTdjYzYyZWZkYTcxZTY2OGUwMGMyZiBsZWdhY3ktdHJ1bmsKKzY5MzQzIDEzZjEzNTJhM2Y4NzQzZTM5YzYyYTBiZGI2ZDE1MGQ1MDhkNGQwODcgcmVsZWFzZTI2LW1haW50Cis2OTM0NCAyMDcwOTc2OTE5NzI3NGFiMDIyZGE1ODA3MTk3NjdlNjljZGQxNGI1IHB5M2sKKzY5MzQ1IDljNDZkMTA5MDA3ZTZjOGYyZDk5Nzk2MjFkODlkZDY1MTM3OTUyYTYgcmVsZWFzZTMwLW1haW50Cis2OTM0NiA0Y2M0OWQ5NzhlYzIzYWE1NWZiYWEzMGFhZmY4M2VlZWYzNGQ3NDQwIHB5M2sKKzY5MzQ3IGJiYzFjNjgxNTNhYmRlYjJlOTc0Y2MwZGYyNzgzZDBhOTA1OGRhYjMgcmVsZWFzZTMwLW1haW50Cis2OTM0OCAwZjc1MTE1MzMwN2Y0NjllM2RjMGE4MjA5ZjZmYTRjYjVjMmYzMDhmIGxlZ2FjeS10cnVuaworNjkzNDkgYzRjNjEyZDk1YTliNmQ5NjM2MDQ5MjY3ZWQxNWZjNmM5NmFjZTdmMiBweTNrCis2OTM1MCA3ZTI4YTJiMGMxYjFmMTliNTNlODM0ZjhjNzIzYjEzOGMxYmU2NmVkIHB5M2sKKzY5MzUyIGEwMGU1ZGNlYTE2YzhlMDQ4ODQ1ZjkxYzM5Mjk3OTIwMzdjYzA3MTggcHkzaworNjkzNTMgN2EwNTI1NjEzNjQ0N2UwZTVlYzEyNTgxNDNkNjkyMzFiZGJkYzI1ZCByZWxlYXNlMzAtbWFpbnQKKzY5MzU0IGY5ODFlMDU1N2MzNTA3Y2I0NmY1Yzk5OWE4NjY4ZjNkZmYwYzlhNjIgcHkzaworNjkzNTUgMDVkMWNiMDUzZDQ3ZTRmY2FkODEwMjU0NzExZTk5ZWYxZjgxMzJlZCByZWxlYXNlMzAtbWFpbnQKKzY5MzU2IGNjODI1MzExNjI3NTgwYjEwMTRhMzBiZGI4NWY3Y2U5ZWM2ZjdmMTQgbGVnYWN5LXRydW5rCis2OTM1NyBmMzg3ODM0Y2U1ZGNkMzRlNzEzMTYyNmQ2M2UyNWFiNGE4Njk1YmZkIHJlbGVhc2UyNi1tYWludAorNjkzNTggNTRlNDA5YzJmNDhkNmExMjYwYjE0ODVhZGQ5MGVhODcwOTVlODUwMyBweTNrCis2OTM1OSBmYjQ1MTExZjI0NGViNWU5YWM2MjM4ZTIwNDY0ZDgzZThiN2E2ZDc1IHJlbGVhc2UzMC1tYWludAorNjkzNjAgMTgzYTZjMjliZjljMThkZjU5YmI4MTJlODc2NmJhZTliMjhlNjAwZSBsZWdhY3ktdHJ1bmsKKzY5MzYxIDZmNDA3NjhkMDkwOWQ2OWE0NjJlNTRlNDYxZTNhYThlNDlkN2Q1NTIgcmVsZWFzZTI2LW1haW50Cis2OTM2MiBiNDgyMGZjZWRhMjQxYjI1ZDdmOTE2MGYyOWRmZGYyNTUwZjA4MTMzIHB5M2sKKzY5MzYzIGRiNDZmODJkMGExZDFkZTQzNmQyZjFiMDRmMmYwYjZjZTQ1ZDllN2IgcmVsZWFzZTMwLW1haW50Cis2OTM2NCA0MzI3ZGZhNjgxMThmOTliMWI5NzgwMzcyMGNkOTQ5MmE1MDQ3YmMwIGxlZ2FjeS10cnVuaworNjkzNjUgMTgyMTBhZmQwMDVhNzEwODQ1YmI0NjUwMzgyMjg1YmU3NjAyNzcyMyBsZWdhY3ktdHJ1bmsKKzY5MzY2IGM5YWZmYmEwNjllYWU1OTU0MzY1ZWU0MTk2NTQ1ZmQ4MDliZDlkNmYgbGVnYWN5LXRydW5rCis2OTM2NyAyOGU0MzBmMTRjMGRjZjQzMzc2MjFiYWM3YTI4ZmQzZTQxMmYxYjcxIHJlbGVhc2UyNi1tYWludAorNjkzNjggMTlkYjM3OWJhY2Y4MzM3NzI4MmIyMTQ3YjI3ZDgyMzczNjdlNGIyNSBweTNrCis2OTM2OSBmMmRmMTBiYTYwNTQ4NWYzZDA2MjhkMjU0NDQwMmZjMzRhMTdiMTlhIHJlbGVhc2UzMC1tYWludAorNjkzNzAgOTZmZTQ1ZGU3ZjI2ZmVmYTY1ZDU4ZWRjMTI4MmRiM2M1YTRlZjU3OSBweTNrCis2OTM3MSAxY2UwMzZiODgwOTM2NDAxZWExNTliYWVkZmMyOTIzYmU1MTY3NjM4IHJlbGVhc2UzMC1tYWludAorNjkzNzIgZDFlNTQwN2Q1NTA5YmFkOGNmMTc2NTczZjk1OTgxMzhjMDk5OWNkNCBweTNrCis2OTM3MyA0MmZhYTgwNTRjM2RjYmEyYjE2OThkMWFhOGE2NWFiNzAzMGU2ODI1IGxlZ2FjeS10cnVuaworNjkzNzQgYmFhODhlOWU5NzY2Y2E4ZDkyNDY1YTEzMDgwZDQ1ZDVjNWRiY2I3OCBsZWdhY3ktdHJ1bmsKKzY5Mzc1IDJhNDBkOTgxYzY1MmEyYzNjZWZhN2I4NGE4YmUzN2M5MGZhZDk5YzAgcHkzaworNjkzNzYgZDQ2MTNlOTcwNDk4YTRhYjVlNmNhNmE0OGI2NTYxNTM1YWI1YjA2OSBsZWdhY3ktdHJ1bmsKKzY5Mzc3IDk4NTZjNGZhYWMwNDgxYmQ3MDRmZTMyNjEwZGFkOTgwNzMyNGYzZWEgbGVnYWN5LXRydW5rCis2OTM3OCBiNGUxNTRjOGEzOGE1NWI3YzkyMjc3ODY4NWQyZjBkNGI1Nzc1OGNmIHJlbGVhc2UyNi1tYWludAorNjkzNzkgZDJkZTVkYTBmNTYzNGZiODNmZDg2ODA4NWI4YzUzMzkzMjM1N2RhMCBweTNrCis2OTM4MCA1OGI3ZGM5Yzk1NTdiN2JkOTJkNDk3ZGYxMDE2NTg1YWY4MWVkMzliIHB5M2sKKzY5MzgxIGMwMjg5NWEzZWQ2ZDU3ZjNmODZiNDRjMDZiZTcwYmUyN2M2ZjQ4MjYgcmVsZWFzZTMwLW1haW50Cis2OTM4MiBlMTdiMzdjMzVjN2JiMjQwNTFkYzk1YjViNDljYzJjNjYzMGM5ZGIwIHJlbGVhc2UzMC1tYWludAorNjkzODMgMDNhZGRkMTRlNmYyYzMxY2U3Zjk1YzgzMjM4YjJlNDRkNWRhNzQ5NCByZWxlYXNlMzAtbWFpbnQKKzY5Mzg0IDgxOTcxNjZhYTE5YjdkYzMzZTQ3YzkwYzM4MGU2NjJjOTY0ZjRiZWUgcmVsZWFzZTI2LW1haW50Cis2OTM4NSBhNzEzMmRiNjkwOTIxOGYwMjFlMDNmMDE0NTkyYjZiNjc1M2UxYTM1IGxlZ2FjeS10cnVuaworNjkzODYgN2FkMWFiOTkwNmVlNWFhZDhkZmY4NDhlZmU5YmUxNzIyMjdhZWQ5NCByZWxlYXNlMjYtbWFpbnQKKzY5Mzg3IGIwOTFiZjgzNDIyNmEzOWEwMjkyZGQwZDRlY2M1YWU5MmI0M2Y5NDQgcHkzaworNjkzODggNmU5M2RkNTc4Y2I4NjYwZmZlMGExOGJjMTNiMDg4ZGE3OWYwZWU3MCByZWxlYXNlMzAtbWFpbnQKKzY5Mzg5IDAxNTFjNTE0ZGY1NjllZjFiMTg1MmQ0ZmRhN2UxM2M3M2NiNDg1YWQgbGVnYWN5LXRydW5rCis2OTM5MCAyMDdkMGVhOTUzZGYxODU1MGNmZDcwZGEwMDhiYTU1MWU0ODgyOWZjIHJlbGVhc2UyNi1tYWludAorNjkzOTEgMGIzODFiNDIzY2RmNzIzOWNjMWIxODc3MTM0NTQzYjNmZGMzMWFmNSByZWxlYXNlMzAtbWFpbnQKKzY5MzkyIDY2ZWNhMTNlZGUxODNjMmUyODBkZDhhYTZiYmVkMzg4MjYzNmY5MmEgcHkzaworNjkzOTMgODExNTQ2NzcwZDIwZjYwY2Q0NGY4Mjc5MWI0NTM5ODI1NjBhMzQwMCByZWxlYXNlMzAtbWFpbnQKKzY5Mzk0IDQ4MDlhZmE4NWE5YjZiZTliYTYzMDI5MjRkZTA1YjllN2FkZmVmYmQgbGVnYWN5LXRydW5rCis2OTM5NSA3YTEzNTZkMmFlZWYzM2I4NjFiZmI2NzAyY2MxMWE4ODJlNWQwYzYyIHB5M2sKKzY5Mzk2IGFiNjBiZGM3MDcxMDZiOThlMWI1NmI3NTU4ZDllMzdiM2Q4ZGIxNWUgcHkzaworNjkzOTcgNjZkYTUyODMzMzRmMDYxYjFkMzgwNWE2ZGQ3YTIyMjMzOTRlZDIzYiBweTNrCis2OTM5OCAzODk2MTMzYzk1Y2JhOGZjZDAwYjQ4MTJkOTQ3NTgzMzg3ZWE0M2E2IHB5M2sKKzY5Mzk5IDVjZGM1ZjBjMTM0YzhlNjQ1N2Y0NDgwMTkwNmM0MjcxY2I5NjUwYTggcHkzaworNjk0MDAgMzI5NTc5MGE2NWJlN2ZjYTc5YTg5OGRiYmQ5NjkwMDUzYzgxMTU4YSBweTNrCis2OTQwMSBiYzU4YTYxZjgxN2JmOTI4ZmI4NjdhZGExMjc2YTE5YzMzNjU4YWI1IHB5M2sKKzY5NDAyIDQzZDNhOTVlZDY2MjE5NzIwMDFmZGIwM2M1ZjdlOTY0YjgyYmIxYTUgcHkzaworNjk0MDMgZWVmMzliNDM5NmZmZTQ2MWY2NTZlMzRhMTc4MWY4MWQ5NTI5YzQxZiBweTNrCis2OTQwNCAyZjFlZmZmMDY2YjM4ODJkNzAzMWMwN2UxNmM5NjU2NGM5YmY4MjFlIGxlZ2FjeS10cnVuaworNjk0MDUgMDI1MDc4ODI3YjU0MDg2YzcxNGU4YjcyZGIzYmNkZjMyZGJlOGUzNSByZWxlYXNlMjYtbWFpbnQKKzY5NDA2IDhjZDhlMjM2ODgyMjExZTRiYTg2Mzk2OThiMTE3OTBlZDExNGI0YTkgcHkzaworNjk0MDcgOTJmYTM5YjlhZjEzYzgzNjFkNTI0NzliZTI2OWY5NDZmYmViNTc0ZCBweTNrCis2OTQwOCA4NzMxN2E4ODlkYjA0NGE2NDE2NmY4ZjY0ZmEyMzlmYjY2YWMxODc3IHJlbGVhc2UzMC1tYWludAorNjk0MDkgNjliMjZlOTkwZWI4NjEwZmQwYWVmOTA1YjRhODY1MThhMGJhNmQ5YyBsZWdhY3ktdHJ1bmsKKzY5NDEwIDk5ZTI2NGZlMjM4MzBiM2M2YTIzNWVjYWQ2YjVjNDg2YjhkZmU4NzMgbGVnYWN5LXRydW5rCis2OTQxMSBjMjFmYjVlZmM2MzhkYTI1ZWY0MTg2ZWExZGJlNDU1YWEyYTk0MTMwIHB5M2sKKzY5NDEyIDkwMWNiMjA3YjFkMzE3ZTY4ZTE4MTg1Mjc3YzNlODMzM2U4YTUxNzUgcmVsZWFzZTMwLW1haW50Cis2OTQxMyA0OTRkYTJjNzE5MDJkM2I2YTI5MmY0ZTk5NTM4MDdmZGY1ZDUyODcwIGxlZ2FjeS10cnVuaworNjk0MTQgOTg5OWFmZTBmZjhjMThjZmQ5M2VjZGRmYzEyMGE4NmY4MDllMTVkMCBsZWdhY3ktdHJ1bmsKKzY5NDE1IDBhYjM2Nzk2ZGQ3OTU4OTBjOGJjNjQwNjczODJmYjUzZjQzY2Q4MzkgbGVnYWN5LXRydW5rCis2OTQxNiAzMjBjZDcxZTJjNTYyY2FkNzNhN2Q5Y2MwZGJmZWZlMDQ1NGViNTMxIHB5M2sKKzY5NDE3IDEwMGFlNmE4YmMyZGIzOTY3Y2U2OGM1M2RjOWU5ZjE4ODA0ZDBjYjMgbGVnYWN5LXRydW5rCis2OTQxOCBjY2M3MTg4ZmRkMjhmYzNkMjIwNzdjZTBiMDRhNjc1ZDlkOTQ2MWNiIHB5M2sKKzY5NDE5IDVjY2U5OWFhMWY1OGFjN2I5MjEzZTNmNTIyNTJlZDZiODQ4ZGRmNDIgbGVnYWN5LXRydW5rCis2OTQyMCA1NzA4YTFlMDE2NDU5MGU2MDk0MWM0MDNiYWIyMTM2MTJjZTdiMjZjIGxlZ2FjeS10cnVuaworNjk0MjEgMmQzNTRmNGQ3N2JjYmM2Yzc1YTc0MGQ4ZmI1MGY4Yzg3ZTc0YjZmNCBweTNrCis2OTQyMiAxNzU4ZGVkNDRiNGUwZmJiNDcxZTYxM2Y3NjkwYTJlYzZmMzE4ZTc1IHJlbGVhc2UyNi1tYWludAorNjk0MjMgZjg1ZWNkNzU2NDExNGEyMDIwMTRhOWY0NWFhNDgyODI0MjY3ZWEzYSByZWxlYXNlMzAtbWFpbnQKKzY5NDI1IDExN2UxNTJlNTEzYTY1MGNkYjE4NDI0OTVlZDNiZDdjMmJhNjI3YTggbGVnYWN5LXRydW5rCis2OTQyNiA3NGQxOTZjNTQyZjc4YWI4YTk0OWNlNmY4NzYyYzAxODJmYTM3NWNjIHB5M2sKKzY5NDI3IDFjYzYxYzc5YjljZWFmYWYyYjBlM2U3MzljNGQ2NzFmMzJmM2Q4YTIgcmVsZWFzZTI2LW1haW50Cis2OTQyOCBlOGZhMTBjNjZkMTgzZTBlOWI3YjdiNjNkYjZiOTRjNjI2NDUxMjUyIHJlbGVhc2UzMC1tYWludAorNjk0MjkgNTAxYjFmMDM1ZjI5OTBiODJjNmZiNmY4NWY2MmE4NzkwZTJhY2YwMiBweTNrCis2OTQzMSAwZWQyMmYxYWVkMDQ2Mzk0MDgwZTllYWFlYjU2ZWQ4ZTFlYTMxNjhkIHB5M2sKKzY5NDMyIDdiZmE2NDQ5MmQwMDE2MGE0ZTBmNzcyMjcyNjY3NWJiYzExY2VjODQgcmVsZWFzZTMwLW1haW50Cis2OTQzMyBjNTkzNWM3NDk3ZmI2MzFmNDFkNjU2NmQwM2RkODBmOWIyZGFlNjcwIGxlZ2FjeS10cnVuaworNjk0MzQgNGM3ZWQ0MGRiODFlYWJhZmE5MzBkNDZkNjNkZjc3MWM0ODU4NjJkNCBweTNrCis2OTQzNSAwZWI0MDVkMDFlMDgzZDNlMDY2ZTg4MWVmZTMzMWU5Y2MwODc1ZjkzIGxlZ2FjeS10cnVuaworNjk0MzYgYmJiODM1MGRkYmQyNTlkMTZmYzdlYmEwNjlhN2U0ODUwYWEwZGEwNyBsZWdhY3ktdHJ1bmsKKzY5NDM3IDU4NDlhNGY5MDRhMmEwMzI1OGZkOGNiZmMyZWQ0YjRiZDQzNGI4MWMgcmVsZWFzZTI2LW1haW50Cis2OTQzOCA5NDVjYjk1YjM1YmY1NWNhYjVlYmIwNGE4ZmU5ZjZhMjM0NThlZTA0IHB5M2sKKzY5NDM5IDQzMTNiNGQ0YmRjNzNkMTZiZmU1OTkyODNmMjE0YjRiN2YzMmQ5NjQgcmVsZWFzZTMwLW1haW50Cis2OTQ0MCAyMjRkMGVmY2JmNmM5NDhkMjcxMmM5Yzk0MGYyZWI2YTM0MDRiYjI1IHB5M2sKKzY5NDQxIGZkNzRiMGMwNjkyN2M5MDQ5MjMyMjIxYjdlNzk3OWFjNjQwZDNkNjcgcmVsZWFzZTMwLW1haW50Cis2OTQ0MiBjMzMyZjdiNDU2NDcyM2NhMDMxYzhjNGUzNGEwZTdmY2JiNTA2NzA3IGxlZ2FjeS10cnVuaworNjk0NDMgOTk0ZmU0ZGY0YWY3MGY1N2EyMDhjMTgxODUwMjMyNzU0NDI4NDU5OCBsZWdhY3ktdHJ1bmsKKzY5NDQ0IDY1NTBkYjQ5MmYyODhhNzcyY2E2YjI1OTQ2ZTMyMTdhYmJkY2ZjMjEgcHkzaworNjk0NDcgZTQ5MDEzZjFkODMxNDNiMWEyYjIxNDFhZjQ2ZWQxN2VhZjU5ZTczNiBsZWdhY3ktdHJ1bmsKKzY5NDQ4IGMxN2Y5MjgxYTg1NmIxZGE5OTUxZTRhYjQ4NWZhODI4MTI0OTU0MjYgcmVsZWFzZTI2LW1haW50Cis2OTQ0OSA0ZWExMjI5NzM5MTQzZTg1MjYxZGM3MTUyMDcyMWFkOTExMmRiMTc4IHJlbGVhc2UyNi1tYWludAorNjk0NTAgMzZiYzhkMGUwMWJmNzM1MTE0NjY0MjMxNTk3Zjg2YzQ2N2Q3MzhjNiBpby1jCis2OTQ1MSA4Y2ZhMTA4ZTdiZGMzYjljNTQwYWM0NjkwZjljYmEwZjI4MDg2NDVkIHB5M2sKKzY5NDUyIGRhMDA3MGNmNDY1NDRmMmQ4ZmRlY2M2Yzc0MDlmMTY2MDkyZDRhNDEgcmVsZWFzZTMwLW1haW50Cis2OTQ1OSBlNDIzZDA3ZjA4YWYwYTdjNTNhMWE5NzJiOGE2ZTQ0M2QwNjRhZmUwIGxlZ2FjeS10cnVuaworNjk0NjAgZGNmZmM3MjM4MWU3MzRmM2RhN2U0ZjEzOWVjNzllMjg5ZDcyMjJjMiBsZWdhY3ktdHJ1bmsKKzY5NDYxIDdiYmRjZTVjOTI1MDUyNjE1MzZmMTFjYzc5MTAxYmUyZWUxNjMyZGMgbGVnYWN5LXRydW5rCis2OTQ2MiBlNDU1MjUxOTUzMTdkMzk5NGViMmI2NjEzY2Q4NmRjZGFkZGNiODRhIHJlbGVhc2UyNi1tYWludAorNjk0NjMgNDcyNDVhZTMyMTFiYTY5ZWQ0ZGZkYzllN2MxNzBmYzI3NzdkNWEyYiBweTNrCis2OTQ2NCA2NjNjZTc0ZDUxNzU3ZDQ2MzViMTQ4ZTY0OWVjNDdhNzFkNGFkNzI4IHJlbGVhc2UzMC1tYWludAorNjk0NjUgZjlmMmVkNzliMDBmYzJiZjE1ODMwMmY2Y2MyNDk1MDg1MDQ1MjEwMSBweTNrCis2OTQ2NiAxNTRlN2M0NzRhYWQwNDdjOWJkYzVhY2FmOWU1NWRkZmU3NWQ0MWNiIGxlZ2FjeS10cnVuaworNjk0NjcgNjc0NWJkYWE5YjQ5YjU5MzZkZGQ4NDMwMTA4YWEyZGQ3MDEyOGVmNCBsZWdhY3ktdHJ1bmsKKzY5NDY5IGFjNjI0MzJmYjM0MWQ3ZWNmZDA5N2QyYWZlOWViMWQ2ZGIwNDg0OGQgcmVsZWFzZTI2LW1haW50Cis2OTQ3MCBiZGRlNDRhZjk3NDQwNmYzNGU2YjE1MGQyZDExMDhhNjQxM2E3MmRhIGxlZ2FjeS10cnVuaworNjk0NzEgMWE3ZGQ5ZDJlN2VjM2UxMDlkMTU0NTNkM2E1NGQ2NDI0ZDhlYThjNyBweTNrCis2OTQ3MiA2MmExZWQ2ZTYzNmFjMWU1NmEwNTNjZjAyOGNmMDllNTViZjYzNzg4IHJlbGVhc2UzMC1tYWludAorNjk0NzMgZmJiYmMyNTliNWNlODhkYTI5MjMwYzBlZWM5NTAzNjk1OTdjN2U4MCBsZWdhY3ktdHJ1bmsKKzY5NDc0IGQ3YzRkMDcxZGFmYWYxOWFjNWMyYjMxZjVhNjMzNDliNjlkNjM2NjMgbGVnYWN5LXRydW5rCis2OTQ3NSAyOTg4MDZmNjRkZmEzNjQ2ZDkzMTA1NmJlMDVkMjdhMjc3NDg4OTNhIHB5M2sKKzY5NDc2IDRlN2JhNjdjZmEwNTM3MzlmN2M2ZTAyYzkxNmU2NWUwOGFiMzY3MzkgcHkzaworNjk0NzcgODcyMWMyMTNiNmY0NGQwZTQ5NzM3MGU3ZDRmNzJlMjI0MjVjYjQyYiBweTNrCis2OTQ3OCA4NzgyMGZjNjVkN2M5ODk5MDdkZDVkYmQzZTQzZjk2ZDBmOTc3NjI3IHJlbGVhc2UzMC1tYWludAorNjk0NzkgYTkwYzkyOThkYmI0ODhjOWNjMGFhMzJkY2RlODg0YmEwNTM4N2JmYiByZWxlYXNlMjYtbWFpbnQKKzY5NDgwIGJlZWY4ODE4YTY2YzIxYmU1ODEyNzhhYzYxM2FmMTIxNGY4MWVlMmIgbGVnYWN5LXRydW5rCis2OTQ4MSA1ODRjNDdkOGM5M2YxYTc1NGZhY2QyNzZiMzlhMTA4MDcxZDJlMDRhIGxlZ2FjeS10cnVuaworNjk0ODIgNWU3ZDdmZDFkYTVhN2ZhZWI1ZTRiZWFjMmFiYWVmMTY0ZjI2YTAwOCBweTNrCis2OTQ4MyBhYzllZjc0MzFjOGYxMzRjMjA3MmJkNWZmZTc0NWM5MTc4ZWQwMjI1IHB5M2sKKzY5NDg0IGU3NTlkYTkzZGY2NDdmMjUyZmM0NWMyMTE0MjY1NDk3ZGE2MDJmYzkgcHkzaworNjk0ODUgYzYxZjI0ZmYwNTVlNDBkMTMzM2NjOTM4YjhjMGFjN2IwNGRlNGQyMCBsZWdhY3ktdHJ1bmsKKzY5NDg2IDEzMDdhNjZhMzhmOGQ0ODdmMTY0YzJhYTc3ZmYyNmI5YWQ1OTAyMmEgcmVsZWFzZTI2LW1haW50Cis2OTQ4NyA4YTI4ZDk5Zjc4NGQ3N2FjNDFmYzcxZTNiOGEyYTRiOWUzNTRjNmExIHB5M2sKKzY5NDg4IDM0MjNmNjQ3YjU0YTY1YzJjYzFjZGM4NzgwMjk1NDNlNmFhYjdlNjMgcmVsZWFzZTMwLW1haW50Cis2OTQ4OSBkYWI4MDYzNTAzNmU4ODIyODI3NzU1YjdhMmMxZmQ2MzJlMzA4ZjM2IGxlZ2FjeS10cnVuaworNjk0OTAgMmFlNzcwZWU2Mjg0MTcwMThjNDcwOGNjYWM4Y2NhNjQ2MmQyMzY3ZCBsZWdhY3ktdHJ1bmsKKzY5NDkxIDM4NjQyMzg1YjFlMGFmMTQzMGE4MDFjZWMxMGY3MzVlYTgzYTRjOWEgcHkzaworNjk0OTIgNjMxNmYzNzZiODE0YmIxZGUzZTEyMmUwZTFlYWQ0MWMxMTAzYmNkNiByZWxlYXNlMzAtbWFpbnQKKzY5NDkzIGJkYjFjYTlhYmNlMzYyZDg4Zjg5YmIxNTRmODRiZjI5YWJkZTllMWQgcmVsZWFzZTI2LW1haW50Cis2OTQ5NCAxZmVjMGJiNTA5YTJiNWU0ODJiZDg3MTQxODJlYjY1YWY4MWU4MWJiIGxlZ2FjeS10cnVuaworNjk0OTUgMDQxNTQxN2NmZDQ4M2I5OWZkZDQwYmYxNjk2NDRiNjVmMzgzYjZkNSBsZWdhY3ktdHJ1bmsKKzY5NDk2IGYwYzc0MDJjYzAwMDY5M2E3Y2QyMzQ5NjM5M2JmNWYyZWY0YTk4YWUgcmVsZWFzZTI2LW1haW50Cis2OTQ5NyAwOGUwZjAzYmE4MTcyOGMxZThjNWUzZGEyZTNkMjQ0Y2NlNjI0ZTk1IHB5M2sKKzY5NDk4IDIwNjA5ZmMxM2ExMzU3NTRiYmM4MTE0OTdkNGEzZjM3ZGVmYjI2NDYgbGVnYWN5LXRydW5rCis2OTQ5OSBhMDA3NDU0ODAxMjBkZjkwNzc3MDAxYjQ3NWQ4ZGQ0YTZkMGMwZGQyIHB5M2sKKzY5NTAwIDA1OGRjYTczZWUzMDI5NTFmZTBmZDJhMTg4OWJhZmQ4NDA2YzI5NTAgbGVnYWN5LXRydW5rCis2OTUwMSA5NGQ5ZDUyNTQwMWMxNjNlZmRlMDg5YzY1ZWM0Y2Y3Mjg1ODIzMTkwIHB5M2sKKzY5NTAyIDdkNmNkZjMzNWE1NzAyOTBhYjA4YzMyMGMyNGYxODk1ODg3NGI4YzMgcmVsZWFzZTI2LW1haW50Cis2OTUwMyBmZmI5Y2Y5NGM5ZjEzOTlmYjY4MmEyMmMzZWQ3ZmYwOTA2OWM4ZmUxIHJlbGVhc2UzMC1tYWludAorNjk1MDQgZjM1OGJhM2QxZTUzNjM3MjdkY2Y1ZTI1NzYxMjA4ZjYyZTFlMzk4NyByZWxlYXNlMzAtbWFpbnQKKzY5NTA1IDk1YmI3NzM5ZTM4NmNiYjg5MjU1YjNjMTRhOWZmYzM5NjgxZjg3ZjIgbGVnYWN5LXRydW5rCis2OTUwNiBkM2U4OGY3NzhjZGMxNjVhZGU3N2RhYzA2MTk1ZDVjNmJlODc4ZDJhIHJlbGVhc2UyNi1tYWludAorNjk1MDcgNmRiZTNmOWEwNDBjYjhlNGU0ZDYwMzUwNzlhM2RmNWRlMGJhMTkzMSBweTNrCis2OTUwOCA5NzJlODYxN2RmZGE2ZDg1YTgyNzI3YTc2NDFmMDEzMmQxZWNlYzJhIHJlbGVhc2UzMC1tYWludAorNjk1MDkgODM1MTViZDI4NjI2ZDQyOTVmY2EzM2ZmMjQwMzBlMDg4ZGU0NzgzNCBsZWdhY3ktdHJ1bmsKKzY5NTEwIDcyZWU0MmNjOTUzMGYzZjZmNmZkZGNjMGMxZTRlMDNlZWFhZWYxNjEgcmVsZWFzZTI2LW1haW50Cis2OTUxMSA1MTk2ZWFmY2JkNzJjNjJlZmIyMTNiNGJmYjNmMTYxY2ZmNDg4ZWM3IHJlbGVhc2UzMC1tYWludAorNjk1MTIgMjhiZjQ1N2ZiMzRkMGI5YzI3MjVkZDMxZmNjZGU4M2QyN2RmYzQwNyBweTNrCis2OTUxMyBhZjQ2OWRjMTVmYTdiYmQ5NGRjMTVmNzdjODZlYWMzYTU1OTM3ZDE2IHB5M2sKKzY5NTE0IDdiYjNkNTE1YjY3N2VhZjJkZmQyYmY2MjE3NTAwY2UyYWYwZGU1ZDggcmVsZWFzZTMwLW1haW50Cis2OTUxNSA5YzBhNGZiYjU2YjkwYWQzNzQzNzQxMDQwYWQwMGNkODUxMDQwOGZmIHB5M2sKKzY5NTE2IGRiZGQ5NGNkMDdmYjQ2YWMwNTI1MmI2NTFhYmMxOWRiZTMzMjJmNDQgbGVnYWN5LXRydW5rCis2OTUxNyA3ZDg5NzA2NGE2ZWZiNmQ2NzIzZjllOTViMjQ1MGI2M2ZjZTUxYjViIHB5M2sKKzY5NTE4IDRkOWI1MmZjYjVkZjlkOTlkMTQyZDQ0NTFjOTk5YzI5NDBlZjY5NDAgcmVsZWFzZTMwLW1haW50Cis2OTUxOSBlZGNmOTk2ZjA3ZTk4ZmZhMTg2NDZiYzkxMDJkZDM0M2VlNzEzZTI4IGxlZ2FjeS10cnVuaworNjk1MjAgMjlhOWU4NWYzMGJmN2Y4NzE4NTljZDg1M2RlN2I2MDM0ODEzOTlkYiBsZWdhY3ktdHJ1bmsKKzY5NTIxIGQ2OTc2OWI0ZmQyMGE0NTgyMjQ5NzcyMzU0NGU5Yjg5NmUyNzFiYjMgbGVnYWN5LXRydW5rCis2OTUyMiBjYmQ1M2ZmNDk1NTcwYjhhNjVhMzhhNTc1ODZkMGU4MzIyN2Q0ZDk4IGxlZ2FjeS10cnVuaworNjk1MjMgYjBkYjEwOTA4OWM5NjhlZGI2ODdiNDZiODNlNDQ1YTlkYWI4YWE3NCBweTNrCis2OTUyNCAyYWMwMmRhZWYyZWUzOGU5OGYxYTgwOTgyOThiZjgzNzQwNDdkMzk1IHB5M2sKKzY5NTI1IDQzNTg1ZGJmNjFkNTdhMTg5ZTg3MzBjYzRkMWI1ZWQxY2E2ZjBjNTMgbGVnYWN5LXRydW5rCis2OTUyNiBjYjgxOTBhMWJmYWI5YzUzOWY4ZWZjOTMyMzhmMjk2MGQwYWE2YzI4IHB5M2sKKzY5NTI3IDJiZjVlZDY3MWQwMmMxMTYyYjY4ZDZmZGJjNTljYTczYmQxODQ1OWYgcmVsZWFzZTI2LW1haW50Cis2OTUyOCBkZjY5YmNjZGQzNjNiZjI3NDIwNDFlYjU5NGUwN2E2NTQ2ZjI3YjkwIGxlZ2FjeS10cnVuaworNjk1MjkgN2QyOWM2ZThiYTA1NTgwNzUxMzlkZjhhOGRmMmRiMDVhY2Q1ZDI5ZCBweTNrCis2OTUzMCAwOTllOTYwNjc2YjlmMDY0ZDE5ZjA0NjFhODQxNTNiMzlmMGQyYmMzIGxlZ2FjeS10cnVuaworNjk1MzEgMWFlMzRhNDhiNzM5MjAwOGM3N2RlZWM0ODlkODMzMTJlMDFhOTYwNiBweTNrCis2OTUzMiA5Njc3ZGQwYjA5ZTZiNjI3ZjdhNDY3ODAwMmY3OTY3Y2EzZTU2MGVjIHB5M2sKKzY5NTMzIDdmYThiN2EyZjUwYTIxNWU0NzYxNmYyZGQ4NWNkN2E0MTY4YzJkNWUgcmVsZWFzZTMwLW1haW50Cis2OTUzNCAyMTc0MjVlYTI3NjljMjgxNTVjMDhmNWVmMzAwYzAyYWI0M2Y3N2JmIHB5M2sKKzY5NTM1IDkyZGRiYTU3NzlmOTQ5NDhhYjM0NDRiMTRiODIxODU2MTZjNTdiODAgcmVsZWFzZTMwLW1haW50Cis2OTUzNiA4NjEwMDhkZWVkOTdhM2ZkODc4YzEzZWJiOTcxYjcwNWU0NmRkNWRjIHB5M2sKKzY5NTM3IDViNTAxMTk2ZmMzODNmYzMyM2FmNDBmZjgwODZlZDljNTcyZjliZjYgcmVsZWFzZTMwLW1haW50Cis2OTUzOCA2NTlkODg5MDRmNWZiMzNlNzA2M2U4MWUxN2Y5ODM3NzBmYmE1MDVjIHB5M2sKKzY5NTM5IDA4Y2M1NzRhZjRmNjA5ZWMyMjc0OWM5ZDJjYjI5NjI3NWUyNTIxOTIgcmVsZWFzZTMwLW1haW50Cis2OTU0MCAxODk2OTZjNDZjMGU3ZjRmYTI1MTAxZjQ2NzFlNDdjZDIzNzQzMDEwIHB5M2sKKzY5NTQxIGNhYjRlMmU0ODRhMmJlNjA4YWUyYTM2YzdiOWExZDNiYmVhYTgzZWUgcmVsZWFzZTMwLW1haW50Cis2OTU0MiA4M2JkMmQxNzRjYzhkMDJlNzI1ZjA3MTZmYjUzNDFmMTNmYTIzZjE4IHB5M2sKKzY5NTQzIDI3YzU4OWYwOWEyMTc0ZmY5MmM2YWM1NjU3Y2FjNzQyNjM4OGUyYTYgcmVsZWFzZTMwLW1haW50Cis2OTU0NCA5NzFiYjQ3ZmY3MGI2MTEyMTkyMzEwZmE1YjhlZWUzYWY5NDQzZTdhIHB5M2sKKzY5NTQ1IGFjZGIzMjM0MWQ4N2EzMTc5NzlmYzY5MzgyOTgwN2U2OWEzYzYwN2UgcmVsZWFzZTMwLW1haW50Cis2OTU0NiBhMGQ4YzYxNmYzNDA1Y2I5NDEyYTkyZjk3N2MyMzgyZTFmNjczNWFiIGxlZ2FjeS10cnVuaworNjk1NDcgYzA5YjUwMTUxNmJkMGNjNzYyMGFmYzIwY2NmNjQ4ZTU3MTA3ZDVkOSBweTNrCis2OTU0OCA1ZDI4NDA1MDgwZWRmZjM5MmM3NTQyM2E1ZmJkNjNlMTg2ZDQ4NDM0IHJlbGVhc2UzMC1tYWludAorNjk1NDkgMzE2NDVlYWQ0YzM1YmI0M2JlZTJjMWFkMGJhOTZjZTMwNzAxMjk0YyByZWxlYXNlMjYtbWFpbnQKKzY5NTUwIDlhOTMyZjkyZjM5NDk5N2FiMzVkOGJmOTJmZmM5MDA0ZDZmNTdmMzQgcmVsZWFzZTMwLW1haW50Cis2OTU1MSA2NjQxZDgyOGQ3NjJkNjUxYzVmOWNhMmJiYTE3MjhmZGRjZTVkNTZmIGxlZ2FjeS10cnVuaworNjk1NTIgMTMzMjhmMTFhZDI5NTY2MWI4OTQ5NmY1YWRjZDUxYmVlMzU3OGRjYSByZWxlYXNlMjYtbWFpbnQKKzY5NTUzIDNlZjVhMGM1ZTZiNTdmZDk1OTNjYzU4YjNiNmE1MGFjMGFiYzA0ZmEgcHkzaworNjk1NTQgZTM3NTA3MWY5NTBlYzc1N2VjOTk5ZGY3ZGM5NTVjMWRjMjY5MzRhNSByZWxlYXNlMzAtbWFpbnQKKzY5NTU1IGNlMjlmYWVkN2Y2OWUyMGQzYmMxZTJhOTg0MTdlNzY3MDc1ZWJjYTcgcmVsZWFzZTMwLW1haW50Cis2OTU1NiBlNTAyZTJiZjM1ZTg2ZGJmYTNiNTg4ZWYyODg4ZWJlYWEwMDM3ZTcwIHJlbGVhc2UzMC1tYWludAorNjk1NTcgY2Q0MmU4NWNhZmU3ZWQ2YzVjMmRiNjU4MjY3NmMxNWE2OGU5YzdiZiByZWxlYXNlMzAtbWFpbnQKKzY5NTU4IDA3ZjllMDA0OGIwYmRkZjEyODZhOGYxYWM4OGMyYjkzMmNmNmM1MGQgcmVsZWFzZTMwLW1haW50Cis2OTU1OSBlMmVhMGY4M2YwMzk0MmJkOGQxM2Y4ZDRhMjliMzU3Yzg0ZjVjNGM1IHB5M2sKKzY5NTYwIDY0OGUwN2RkMDgyNThmNjBmMGE1OTM1NTY2ZmMxYzRiZGU0OTE1MDYgcHkzaworNjk1NjEgMWU3YWMxNGU0OTM4N2ViNjQ0MjExYzA1NzczZjFiNzMwODhiMDNjYSBsZWdhY3ktdHJ1bmsKKzY5NTYyIGU2YThhMTY0MjMzYTQzYjU5ZDQ1NTk1MzdiMWI5ZTgwODE0ZjgzZDggbGVnYWN5LXRydW5rCis2OTU2MyA4ZDM2YWIwOTNkNDU2YzI0ZDE4ZWRhM2JjZDAzMmVjNTNmMmU5YTNlIHJlbGVhc2UyNi1tYWludAorNjk1NjQgNDdhNzlkN2VlZWRjOTA2ZGZmMzBhNDA3MDhiYzRkOWNmZjFhMWVmYyByZWxlYXNlMjYtbWFpbnQKKzY5NTY1IDNiZDRhZTI2YjM2NDk3ZWY4YTliYTA0M2JjYzkxOWNiNzFlMzYzMzIgcHkzaworNjk1NjYgYmQyYjc3OWY1ZjMxMjM0Mjc3NmMwOGYwMTkxMDUwN2I4NDM0NWU0MSBsZWdhY3ktdHJ1bmsKKzY5NTY3IDIxMDI3NzRlN2EyZDkzYTAzYjc4MTU1OGRhYmM0ODUxNjA0NzAzZTggcmVsZWFzZTI2LW1haW50Cis2OTU2OCBiOGYxMGM2ZmFkNTI4NTQxNDhmMmFmNzVjZjRiZWNjNGEyNjU2YzZjIHB5M2sKKzY5NTY5IDcyZjZmMTcwMWVlMWFhNGIwMzlmY2MxM2QxNjdkODE5OWZmODMxNjMgcmVsZWFzZTMwLW1haW50Cis2OTU3MCA3ZjRhMTE1YWFlNmQ5NTRkYTBiNDU4ZDc0Y2JiNzQ1M2U1YmUzNWYwIGxlZ2FjeS10cnVuaworNjk1NzEgYTQxZThmZjY1MThjMjAzNTlkYmRhMmY0MTIyZDc5ZmYwOTk1MTAxMyBweTNrCis2OTU3MiA1Mjg1MWI5ZDk3NTkwMTFkZWY4NTk5NWU0Njg0NjlhMTQ5MDA4MTc3IHB5M2sKKzY5NTczIDA5NDZjZmQ2ODU3OTk5OTg3YTZiMzhhNzVmMGY2NTRhMjZjNjNhY2MgbGVnYWN5LXRydW5rCis2OTU3NCA2OGI4YWY0OTRiZTI4MGZlMGNiNDU3NjBlZDc4OGQwNjI2OGNhNWNhIHB5M2sKKzY5NTc1IGNhMWQ5OWQ5ZDY5MWVkZGIzNGY2ZGVlNTcxZWE5MDY1NmFlY2Q3OTQgcHkzaworNjk1NzYgYzAxNGEzYjFhZDMxNTViMTJlM2ExZGRmNmViNWFiNzUxNzE5YmNkYyBsZWdhY3ktdHJ1bmsKKzY5NTc3IGE4M2YxMGVkYjZmZjE1OTI4YWZmNjNmYzkzY2Q3YTUyZDVjNDlkYzQgcHkzaworNjk1NzggYmY0MTljZmQ3YjBhYjk0YjA4OThmMWQ4OTdiM2ViOTFiMzY0MmY3MCBsZWdhY3ktdHJ1bmsKKzY5NTc5IDUxMmM1YTVkZTAwYjgwYjI4OTYwMDA0MTI2NDYyM2RlYjVjODk0YmYgbGVnYWN5LXRydW5rCis2OTU4MCA2OWZkZjg4OGYxMTNhNzZjY2IzNGQ2NzJiNTlmZGU1NTMxZjlkYjYzIGxlZ2FjeS10cnVuaworNjk1ODEgZWMzMGIxZmNjMWIzZGZmODdiYzczMzdjZDU3Zjk0ZWQ4Mzg5YjZmMSBweTNrCis2OTU4MiA1YTcyZWVkMWViMWE3OTVmOTlkMzlmZTk2ZDM5OWQ0MWE2Y2MxNTM0IGxlZ2FjeS10cnVuaworNjk1ODMgMDhkZjRmNTU4M2ZmNTJjMjg0YTdiY2RhMWQxODYyYTEzYjFmYWJiOSBsZWdhY3ktdHJ1bmsKKzY5NTg0IGZmMDk2ZDZhOTIyMmJjYjkyM2QwYmRkZDBiYzRmMTlhYWZiMjEzY2UgcHkzaworNjk1ODUgYzZmZjQ3YjNlYjk5ZmJkMmIyNDJiMDZjYmViNjc0YmNiMzZjYzk4MiBsZWdhY3ktdHJ1bmsKKzY5NTg2IGE5M2IxOWEyZjhkOTM0OTE4YTlkNjU4MGZjZjc0MGE2M2JhYmQ0NmQgcmVsZWFzZTI2LW1haW50Cis2OTU4NyA0MjgzOGI0ZDZhYTFiNzY0MmE1MDMyNGM5NWU1Mjk4M2MwN2EwNWE4IHB5M2sKKzY5NTg4IGFlMTZlMmI4NmZlYjUyMjNjYTcwOGFkM2ZjYTU3MjUxOGZmZGY5MjAgcmVsZWFzZTMwLW1haW50Cis2OTU4OSAwMmMzZWIxY2EwZDVmMGQ0ZWNmMDcyZDE3YjJmMzU3ZjRjMmJhOTcxIGxlZ2FjeS10cnVuaworNjk1OTEgMDU5MGMwYjc2ZTY0NjFlNWJjYTY2MzY4YzJiZjczYWY3MWE3N2JjYyBsZWdhY3ktdHJ1bmsKKzY5NTkyIDg3YWI2YmMyMTM0NWJhZDA4NTY2MGE4ZDBjY2ExOGM0YmUyOTQ1NDYgcHkzaworNjk1OTMgZGZjZjY5MGE2N2M4ZTkwOTk1NzViNTk5NzYwOWE3NzhiMDZmMmI4NSBsZWdhY3ktdHJ1bmsKKzY5NTk0IGQzNjYzZjA5ZDc2NDVhM2MzNjBlZGFkZjcwODE3NzEyNjNhNzdmYTEgbGVnYWN5LXRydW5rCis2OTU5NSA1MTIwNzBkYTc0MzNkZDM3OGJlMjJmZGNiZjhjZmNkMmU5ODllZjQ5IHJlbGVhc2UyNi1tYWludAorNjk1OTYgNjEzNWZmNzI0M2RkNzk2ZTIzY2MzNTVhNWJjYTg4MTI1MWIxNDMxNyBweTNrCis2OTU5NyA4Y2I4ZWNjZDY2MzM5Yzk2M2VhNjQ2Y2U2ZWYxZTgxNjU4MTA0YWZkIHJlbGVhc2UzMC1tYWludAorNjk1OTggOGRjMjhhMTI2YjJjODAxZWVhMDBjZjM4YzdjMDFmODM2ZmU3YmUyZSBsZWdhY3ktdHJ1bmsKKzY5NTk5IDljNzU4MDZiZWM2NGFmOTFlNmU4YWI5NjJkMzc2YmVkNGQ3OTZkZmMgcmVsZWFzZTI2LW1haW50Cis2OTYwMCA0MGVkNTc4M2UyNGEyZGE1ZjU0YTA1NDgxZjJkNjgxMDAyNDBmMmEyIHB5M2sKKzY5NjAxIDYxNjEzOGVlZjIyNGJjZDA2YzgzMzQ4YTI5YjViNjgwY2VhYTIyYTIgcmVsZWFzZTMwLW1haW50Cis2OTYwMiBlNWNhMGJkYjM5MGZkNzgxNTMyZjIxN2U0YzIwN2JjNTFhZDQzYTUyIGxlZ2FjeS10cnVuaworNjk2MDMgZTkxYjA0ZGI2ZDE5NjgwYjJlYmU2ODVlNDEwYTZmZTRiZDJjMjkyMSBweTNrCis2OTYwNCBjNTYwN2NmNzY4MDEyNzVkNTRiMDQ2ODQzZDA0YzdlNDZjYzlmNDZlIGxlZ2FjeS10cnVuaworNjk2MDYgOWNjNzY3NThlZTA5YzA3NTEzM2NiNGNiNDk4NjRiYjI2MzUzODQwMCByZWxlYXNlMzAtbWFpbnQKKzY5NjA3IDJhMjYzZDY2ZDY1OTc4MDAxNWYxZTM1M2JkMTYwMTM3ZDk3NzJlZTggcHkzaworNjk2MDggZjQzZjg2N2Q1ZWI2MGE0ZDMyM2UzYzJlYWNkMGZmMDdhYzJiNmY0YiByZWxlYXNlMzAtbWFpbnQKKzY5NjA5IGU1NTIyODc1Yjk4YzI2YTYyNWY3NTUzOTBjNmY3MjNkNjNmMzAwMWYgbGVnYWN5LXRydW5rCis2OTYxMCA5NDk4ZTdkNWIyNjU5OWZlNmFmNmUyZWQ3MDcxZTQ5MjkwYWUyYjA0IGxlZ2FjeS10cnVuaworNjk2MTEgNmE3YTBlMWUyN2JjMDQ0OGRlMzg5YTE4ZTFhNzczMTEwOGRkYTJlYiByZWxlYXNlMjYtbWFpbnQKKzY5NjEyIDcxYTY4ZGNjYTA0NGUzMmVmZWRlMGMyYTBhMThjZmRmZWY1ZDRhZjAgcmVsZWFzZTI2LW1haW50Cis2OTYxMyBlMTNlZDQ4NDQyMmU4MTU1ZmIyNjViOWNjOGZiMGY5ZDdjZjBmNzZmIHB5M2sKKzY5NjE0IGJiOTllZGEzOGMxYjgyZWViYzdhMmNjMjQ2YTlmOTAwZDI1OTJmYmYgcHkzaworNjk2MTUgM2NlYTQwNTFkY2RiNmMwZTZjYjRlM2VlN2JkZjFhN2M4YTg4ZjUxMSByZWxlYXNlMzAtbWFpbnQKKzY5NjE3IGQ0MDgzOGM1YTQyMDZmZTliM2Q1NzhiOGJkYmM0NmExYjUzNTY0N2UgbGVnYWN5LXRydW5rCis2OTYxOCA5NjkzNzhlYTRjNzc3MWM3ZjUxMTMxZGNhMjhmZmIwNTEzYjM4MTgxIHB5M2sKKzY5NjE5IDlkN2ExMzFkY2I3ODk1YTAyZjBjMzc2OTc0NTlmZGFiYzdjNDNhMjkgbGVnYWN5LXRydW5rCis2OTYyMCA1NTY5OTBiYjRmMGFjYWM3ZGM5OWVmYzk4Nzk0ZmVhYzAzM2VmMjUzIGxlZ2FjeS10cnVuaworNjk2MjEgMTVkOGIyZGIyYmU0NTdhNDY2ZDcxOWQ2MTVhN2FhMjY3MjhmMGU0NiByZWxlYXNlMjYtbWFpbnQKKzY5NjI1IGY2N2I0OGExNTEzZWJiYWFmNmI3YzZhMTU2NjYwOWRkMDQ5NzRhZDYgaW8tYworNjk2MjYgOGFlNWIwYzVjMjRkMmFlN2UyYWE1YjgzNTNjMDg1NTdjNjQ2ZTQxZSBpby1jCis2OTYyNyBjMTdjZDliZWMzZDg1MGU0MDc5MzljMzI4NmQwMmE0OWU4NjIyNzE5IGlvLWMKKzY5NjI4IGFkZTQ1NTExYjU2NWIxZWJjOTUzNjNmM2M5NjA5ZDQ2ZWM5NmEwMDQgaW8tYworNjk2MjkgNzczMDZhZDkzMGEzMzRlYmMzZTdlZTRlNzg0Yzc3YzE0NjM5OWE1ZCBpby1jCis2OTYzMCA1ZmQzYWQ1NDk5MTdjYjQzOTI2ZDk3YTFhNzYzMTcyNTMyODRiMTIzIHB5M2sKKzY5NjMxIGVmMmNiYTgwYzk3NWJiNWQ5OTExYzliOWJiZDU4MTk4NmQ2MTQxN2MgcHkzaworNjk2MzMgM2Y3ZTA3M2RhZDdiNWY0N2QxM2E1Y2UwMWViMGE4NmNiYjc0YTZkNCBsZWdhY3ktdHJ1bmsKKzY5NjM0IGI1NWEzYjVkNzAwODgyOTlkYTA5YzljY2VmNDJkZjFiYWY3OThkMWUgbGVnYWN5LXRydW5rCis2OTYzNSBiOGM0NjY0YTY1MzkxNmUyMTY0OTdiY2NhNmFkNDkwYTQxZTdmMTMxIHB5M2sKKzY5NjM2IDVmMjI1N2I3N2FiMDk5MWRkODA3YjI5YTY3ZmViOTc0YmFhNDRmMGUgaW8tYworNjk2MzcgNzljMjMxMWYzM2NjMWUyZmExZGVkNDllY2MyMDhlOTdhM2Q1NzIzZCBweTNrCis2OTYzOCAzZjQ3NTc0NWEzYzMwNTg5ODllZGJmNmE1Y2EyNTI2OWJjMThmYWI0IGlvLWMKKzY5NjM5IGFmN2Q3ODBmN2EwYmU0YmEwNGJjN2Y1NTM4NGFkNjU2NTkwYTYyYTQgbGVnYWN5LXRydW5rCis2OTY0MCA2NWUwNzU1ZTliYmM5ZDdmZDQwMDA5NDBmY2E0ZjBlZWIxYTZmYjA5IHB5M2sKKzY5NjQxIGFhZGVmMjE4OGNlYjZmYjZiYTA0ZWI5NTc0YWQ3N2ZkMDg4ZjcyZDMgaW8tYworNjk2NDIgMmM0YTMzMWNkMzJhOGQ3N2IzZDZhMmM2NDJmMTRjMTRkYjMwZDA0OSBpby1jCis2OTY0MyA5NDg3OTRhYzVhNTJiZTI3MGZjYWQ0OGFkNGJiZWIwNjhkMjQyYjJkIHB5M2sKKzY5NjQ0IDhjNmQ2ODhlNGYxNjEwOWJjNWNiYTY5OTdjNTA5OTkwMDE1MjYxMzYgaW8tYworNjk2NDUgOTVkNzc1ZDlhYjQ3Yzc3ZWRkYjhiMTA5MTM5Yjc1NmU0MTFhYjE3NyBpby1jCis2OTY0NiA0ZmUyODg1ZDA2NTQ5M2I1MWM1MGViNWVlMDViMDNkZDE3NjE3Y2Q1IGlvLWMKKzY5NjQ3IDQwYzk1NDFlNjFmYzg5NjVmZjE5MDJmY2JjZmMxNzg4OGRiM2Q2MmQgaW8tYworNjk2NDggOThkZDIwNTdlMDg4YmI0ZjIyMGViNGNkZGUzNThjZDAyYTEwY2M5ZCBpby1jCis2OTY0OSA5MWEzY2NlNjhlOWI0NjEwZWVjMDliNTdmY2RhMGJkNjJiNGZkNmUyIGlvLWMKKzY5NjUwIGQ5YzFkOWIxMzM3NDgzMGRhOWIxNzkxODFiNjBkZGFlMDNiODEzMDMgaW8tYworNjk2NTEgZGIzY2FlMTI4ZDkxZWFlNWU0ZjE4YzFjZWIxYTNmYjVhNTZhZWUzZSBpby1jCis2OTY1MiAxOTIwMTQ4Nzc5ZDQ0NmJiOGU5NmFjNDg5NjI3M2ZlYWI4M2MyNmUwIGlvLWMKKzY5NjUzIDlmNTM5ZDhjZDkwNDJhM2MzOTk5NmFjYTUzYTBiNzM2ZGE5OWVmMDQgaW8tYworNjk2NTQgMjhjYTFkZjU0NWUyMzY2NzNlNWZhNTYzN2U2YTM3NWZjY2UxZWEzYiBpby1jCis2OTY1NiAyNDA2YzdkZDk4ODQxMDg2NTgyZDk0YjE5NjVjNmMwYjFlMDA1MWI0IGlvLWMKKzY5NjU3IGEyNmRiMzE0NGFlNzEzMDQ1MjM4MTg0NDMzYTZlZGQ1YmYzOWM0OGQgaW8tYworNjk2NTggNGIxMjFiYmNjOTJhZmEwMThlZDA4NGRlN2FiMTRkMjFiOWFlMTFkYyBpby1jCis2OTY1OSBmM2FmNDk5MmI4MGI4M2Q5YTBkOTRmMWRjNjNlNDRiNWRlMTcyMGM1IGlvLWMKKzY5NjYwIDZkYTMwZTNhYmMwZGQwMGQ5Y2VhZDkyMzZjMTVlZWZhOWVmM2I5ZWYgaW8tYworNjk2NjEgMmM3MTkwMmIzNzc0N2Q2OTc1ODMwZDkzZGVjYmNjYzM2ZmYzNzhjMCBpby1jCis2OTY2MiBmNGM0OWNmNjAxYTJjZGM2ZTE0M2NkNTBlNzBmMzQxOWNkOGEyYjNmIHB5M2sKKzY5NjY0IGE0NTBjODZmYzJiYzA0Njg1NWI4NjJhODlkNDY1MWNlMzZmNjkwMjcgcHkzaworNjk2NjUgYzU3MjU0YTljMWEzMjMwMjM1MWM1NDE0ZDkwZTlkY2MwOTdiNTZhZiByZWxlYXNlMzAtbWFpbnQKKzY5NjY2IDA3NmM0NzkxMzEzNDlkNDc1YWQ3Zjk1NGZlMDUxY2I1Y2FkM2MxNzggbGVnYWN5LXRydW5rCis2OTY2NyA5ODU3NWY5YTRlZDM4NTgyMDZmODYxYTdhZDVjMDQ5NDAyOTYwNDliIHB5M2sKKzY5NjY4IGE1YzYyMTVhNDVhZjA5ZTE3ODgyNmYxOWNhMWJhNWYzNDczMDJlNWYgcmVsZWFzZTI2LW1haW50Cis2OTY2OSAwZTU1YWNkMWE0MjY2OWQyZGFhMjBmY2I2Y2I3NGI4MzBkZjkwOTA4IHJlbGVhc2UzMC1tYWludAorNjk2NzEgZTg3M2Y4MDg0NjRhMzM2Mzc2OWM3MTNhNWY2MDBmZDkwYTY4Njk5MiBpby1jCis2OTY3MiA2YTExOGNjNGYzYjc4ZTE5OTMwNThhNjYxYjE2MjRmNTA2NDIyMGI2IGxlZ2FjeS10cnVuaworNjk2NzQgNTFkYjE4MDg0ZWNiYWFkNTA4NDdhNjliNmI3YmVmOGMzYTU1OTY5OSBweTNrCis2OTY3NSBiMzlkNTQwNThhMmJiZjc5NTE3Yjk4NjQwYzRjZmFmM2ZhZjQ0NjUyIHB5M2sKKzY5Njc2IDYyN2RiNTkwMzFiZWIwMTI2MmU3MTI1Yjk2NmVmZDc5ZmE4MjI4YTYgcHkzaworNjk2NzcgNGQ2MWZiYmI0NWQ3NDE3NGFlNmI0ZTFjZGRhMjAwYmZmOWYwMDhkOSBpby1jCis2OTY4MiBkZjdjNmJkMWI2MDkyYjg1NjZiMWVjMWQxMTAwM2IxZmVmODkzYjI0IHB5M2sKKzY5NjgzIDVkY2FhMmUxYmM4NjlhNmQ2NzhiNmU4MjNjZWM4NmI3MzU5ZTRkOWUgcmVsZWFzZTMwLW1haW50Cis2OTY4NSAwZWJiY2Y1OTg4ZGJjMTgzZWJlYTdjMGNkMzIzZGIzNzQ2MWEzZWI5IGxlZ2FjeS10cnVuaworNjk2ODYgMDAzZTAwNzk3ZTkxMDBiMTUwZGFhNjA4NGQ0YmQyNjM0NGMwYzk0ZiBweTNrCis2OTY4NyA4NmI2MGQwNTA2MmJhOGRiZTMwNDFkZDA3NzE5ZmVlNjhlMzFhYmQyIHB5M2sKKzY5Njg4IDI3ZDQzZDY2YmQwOWNlZWMxZWNiYjMxYzU2NjQ4ZWJlYTRlYTE2ZWYgbGVnYWN5LXRydW5rCis2OTY4OSAxNTQ5NDhlMmZkMWM1N2YxOTQyNjc1ZjRhMmJiOWVhYzJmOTRlZWJlIGxlZ2FjeS10cnVuaworNjk2OTAgMDkyMzU4ODljNTRkMTRlNmE2NjhjNjlhN2U2NTVmYjExNDRjZjk0MyBsZWdhY3ktdHJ1bmsKKzY5NjkxIGYzMDg5NTNjNzAxZmM0ZjYxODk5Y2ZlZTk4NTI3ZGFkY2QwZTE4NmEgcHkzaworNjk2OTIgOTgyZjllMjkyNWE0NWM1NDA2NDhkZDFiODliNWViOTI0Njg5OTRkYiBsZWdhY3ktdHJ1bmsKKzY5NjkzIGFiNGRhMmVkYjI4OGRlYTU4MGRiZTc5OWMxM2EyOGFkOWZkNmI5Y2UgbGVnYWN5LXRydW5rCis2OTY5NCBlNzhiYTg4MDBlMmNlMDFlYWM0MDg0ZTlhZWQ0NjU0NWYxYTI5ZmM4IHJlbGVhc2UyNi1tYWludAorNjk2OTUgNTIyN2Y4YzQxODNlZjUxZWI0ZmM0ZDU0ZDFhMDE2MWY0YTEyOThkMCByZWxlYXNlMjYtbWFpbnQKKzY5Njk2IDU0Y2Y2OGZjNzMxMjdlZTEzN2YwMWJkZjIxOWJjYzQwMzNmMjVhYjkgcHkzaworNjk2OTcgMjliMTQ5YmMzMTMwMTYyOWU4NjkxNmFhOTY3MDI3OTVjZjJmMWFiMiBweTNrCis2OTY5OCAyNzMyNjg1MjJlNWVlOTI4NzA4MTU5YjYxMTAzNDA1MDhjOWVlMWQyIHJlbGVhc2UzMC1tYWludAorNjk2OTkgMGM4NzQ3OTlhMTkwZDUwNGQxZDAzM2ZjNjg5NjJiZDQ3MTZiZmNlMyByZWxlYXNlMzAtbWFpbnQKKzY5NzAwIDcxMDE3NzJlYWU4MDVmZWY5MTEyMDljYjdlMjkwMDA0NWM3NGE0YTQgbGVnYWN5LXRydW5rCis2OTcwMSBmNTA1ZWJhNzI2Yzg2NTNjN2Y3NTQ3NmRjNzc2YWI1YzE5YWY5N2ZhIHJlbGVhc2UyNi1tYWludAorNjk3MDIgZGJhMmZhZjA5OTA2NDk1NWRkN2U1YThlYWMzZjk2MTdjNmU3YjkzOCBweTNrCis2OTcwMyAwMWQzYjY4NjMzODdkYmI1OTZlYWYwZmFlNGZhNTQ3Zjg1NzFjYjliIGxlZ2FjeS10cnVuaworNjk3MDQgMDdmYWQzMDEwMjVmMDE5ZWUzMjYxNzQ1ZGZjYmQ1NjkwODdjZWVmMyBsZWdhY3ktdHJ1bmsKKzY5NzA2IGRkMjIxMGIyZGMyMmNiZWQ0YTAzMmYwZWViNGNlNWYyODJiNmI2ZTEgcHkzaworNjk3MDcgMTQ3ZmNlYmFjYjViYjBkMTg5MGI2MTlmZGExZWY3ZTNhN2UxYzMwOSBweTNrCis2OTcwOCAxOWU3Njg1ZDliOTQ2ZjI1ODQ3YjA4YThjYTkxNDdhYTZiMjhjMGM5IHB5M2sKKzY5NzA5IDQ0ZmQyY2M5ZTljYzc0Njc5YjJjNjViMzE0MjY0MzI4NGZmNjY1NTQgbGVnYWN5LXRydW5rCis2OTcxMCAyNzI2OGVmMDQ3MDhkOGUzYzMwYTRkNjZmYzcxYTYxZTViZjAyNGU1IGxlZ2FjeS10cnVuaworNjk3MTEgZDc3MjY3ODI1MzZkOTUwMTZhNmE3NWI2ZTE1YjgwMDRjMGMzZjhmOCByZWxlYXNlMjYtbWFpbnQKKzY5NzEyIDI1N2M5OGZhNTVkNzZjZWE5YmFhYjMxNDhiMTk1NmRiYzI0ZDJmODggcHkzaworNjk3MTMgZTU0OGRmMzYxODhlZjczNTI4NDhjMWRjY2FmOGFmMjY0M2I4NmZjNyByZWxlYXNlMzAtbWFpbnQKKzY5NzE0IDBjNmMwNTcyYzI0NzNjMGQyNjdjZmIzZDQ5YmY1NmRjMDVhODUzYmYgbGVnYWN5LXRydW5rCis2OTcxNSBkOTgyYjk1YmUzZTIxODBkNTU1ZmE4ZjliZmJiZjZhMTZhZjkwOGJmIGxlZ2FjeS10cnVuaworNjk3MTYgNzk4YTE2YWJmNTQ2MDg4NjEwZmU1MGI5ZDRkMzBhMjFlOTAzYWRkYyBsZWdhY3ktdHJ1bmsKKzY5NzE3IGQ2NzQwYTk2YTcwYWRhYzE2YTc2M2UwN2E2NzU2YjRlODliNmVkYTggbGVnYWN5LXRydW5rCis2OTcxOCA5YWQ2NjJhNDNlYjM1MGU0N2E3Y2E2ZWZhNjc1YWI3OTAwN2RlOTM3IGxlZ2FjeS10cnVuaworNjk3MjEgODU0MDdkMDQ3NzgyMDk4MjYzMDVhZGY1MjY2ZTlkODYyZDlkYmYzYiByZWxlYXNlMjYtbWFpbnQKKzY5NzIyIDA5ZTYzMjE0ZjBiZjg2NTA2ZjljYmY1MjdjYjYzNjQ4NjAwOGE0MWEgcHkzaworNjk3MjMgZmI4NjA2ZTA4NmVhODQ0NWY2OWZkNjYyMDdkODNkZThiYTk2ODBiMSBweTNrCis2OTcyNCA5MmU0MmIxYjBhNmVlYzBmMTE3NzY4OWIzYzAxNmFlMDhiZDAzZDBhIGxlZ2FjeS10cnVuaworNjk3MjUgZDc4NjBiYjBiMTVhMGJmZDEzNTJhYjY2YzllYTNkOGVjMjA5ZWJmZCByZWxlYXNlMjYtbWFpbnQKKzY5NzI2IDYwNWZmYzA1MmI0MTk1ZTMzNDAxOWM2MGZhNWQ1ODVhZTIzMDQyOTEgcHkzaworNjk3MjcgMjA1YTJiNGMxZmE1NDY1NTg0NDFhMTgzODM3MDA4ZGU3NzRhMmJjZCByZWxlYXNlMzAtbWFpbnQKKzY5NzI4IDFmZjRiNDFhNTdjMTI2ZDBmOTQ2NmMwMDQ0M2FjNDhlMmM5YjY1ZWIgbGVnYWN5LXRydW5rCis2OTcyOSBlN2U1NDRjZDJjMmI5NDYyYTkyNGQxYWEyMWQ4ZTdkNDhkY2YzN2JiIGxlZ2FjeS10cnVuaworNjk3MzAgNmVhN2QzNzE0YmRmNzhmMjg0NTQzOWQ1ZmQ1ZGFlNTI5NzQzMjhlMyBsZWdhY3ktdHJ1bmsKKzY5NzMxIDU1MTliOWRjYzliNmI2NDQ3YWYwMjAzZGFmMDIzZjQ5NmQwMGM4M2EgbGVnYWN5LXRydW5rCis2OTczNCAzOWYwOWM5ZWQ1YTViM2VkNmMzZjExOTU1M2Y4OThiMjczYWNiNmRmIHJlbGVhc2UyNi1tYWludAorNjk3MzYgMjg3OGJmODE1ZGExZThiYWM4YmNkNzQ3NGU1Mzg0NWM1NTY5NzYzZCBweTNrCis2OTczNyBjYjBhZGUzMzU1NTE1NjBjMTU2ODllMjgwMjhjODgxMWNkMTUwMzllIHJlbGVhc2UzMC1tYWludAorNjk3MzkgNzJkMTNlY2Y0ZmNhNzVmYjI1NmFiNzIzZDIzZDI2NDcwZjkzMzk1OCBsZWdhY3ktdHJ1bmsKKzY5NzQwIDc2ZDc3YWU5N2IzOGZmNjA3M2VlY2VlYWFkZGEzZWM5YWI2M2ViYjQgcHkzaworNjk3NDEgNzU1OWEwM2NiZDMwYWI3NTFiNzRmZGM3ZWQ0OTg4ZmY3NTExOTZlOSByZWxlYXNlMjYtbWFpbnQKKzY5NzQzIDliZmYxMzBkNzkyZGVhNDcxZjJlYTljZjFlNjBhZDcyOWVjMWUzOTUgbGVnYWN5LXRydW5rCis2OTc0NCBlZTcwMTE4NjM5NDMyNjdkZmM1MGVkNTU1YWY2YmYyZWYwYjRhOWM0IHJlbGVhc2UyNi1tYWludAorNjk3NDUgOGEyOTI1NDNlODcxOTk3NDEwNmI0MWI3OTA3MjQ1YTZmZmFhNzU2MCBweTNrCis2OTc0NiBiMmZmMjFiYmI5YzU0MDQ0NzY2YjNmOGMzODRmODRmMmYwZDkxOGM3IHJlbGVhc2UyNi1tYWludAorNjk3NDcgN2M3YjgwNWQwZDBhOGRhZjdmZjRmNjU4ZGUwYzdhMjE1ZjlmZGFiYiBweTNrCis2OTc0OCA3NDhkZmU5YmI4NTdmYzFlZmE3MDIxNWEwODU5NDMyODdlMmI2NWMwIGxlZ2FjeS10cnVuaworNjk3NDkgODVmZTg4NzYxNGNlNDQyMGU5MDFjZjExNmY2ODlkODE2MzE2Y2MzMiBweTNrCis2OTc1MCBlMjYwZDZkYWY3ODQ4ZDg0MDBkN2QzOTVlZDZmMDUxOTE1MGYxN2U0IHB5M2sKKzY5NzUxIGQyNWZjMDIwOTI5NTUwMzZhNzAzNmZiMTU3YzllYzhjNjE5NmU1OTYgbGVnYWN5LXRydW5rCis2OTc1MiAzZGJkYmM1ZTZkODVhZDVlYTEzYTUxMDRlZTVhYTJhY2EwNDQ3YmIzIHB5M2sKKzY5NzUzIDAzZjA3ZDhmMDZlNDZjMDNhYmYyZGI5OGNkODc1OGViMzVjZmQwNmUgcHkzaworNjk3NTQgMzNkNWQ3ZGFhOGM3NDY5ZjEzY2M5MmVlMGZkYzVkMjdjODY4OTRhNiBweTNrCis2OTc1NSA0OTdlYWI3OWIxYmU4ZTkxNzI1YTNlMzFjZDQ3YTU5MDE4NGY0YjljIHB5M2sKKzY5NzU2IGE5Nzc0YjYxZTUyZDNkOGQ2YWM1MzkyMTg1NWU3MTdkMWE5NDA1YmQgcmVsZWFzZTMwLW1haW50Cis2OTc1NyAzMDIyNjNlM2M4ZjFkMmM1NWM3ZDFhMjFlNGM2OGFmZTQ5ZDU3MzEyIGxlZ2FjeS10cnVuaworNjk3NTggZDQ3YzI1OGExZTFjZWZiZWI1ZDVjMzk5ZmQ5Njg2N2JkMmE3ZTRjZSByZWxlYXNlMjYtbWFpbnQKKzY5NzU5IGFiNDBjNzYxMzlhYjRkNzdjOTIwZWY5OWU1MTZiMGU3YmU2N2UwZDAgcHkzaworNjk3NjAgMmY1MjU3NDk0YTJlMGZlYjI2YTIyNDJhNWI1NzFlMzNhZjhhOWRjMSByZWxlYXNlMzAtbWFpbnQKKzY5NzYxIDU1OWU0ZmMzMWM4YTczYjVmNjRmMzJkMDgzZjVjZGY5YTlhMzVlNTAgbGVnYWN5LXRydW5rCis2OTc2MiBlYTQ3Y2VmNjc4MzdiMGVlZDVjNTliNDc5YjNkOTZhOWM2MDFjOWZiIHJlbGVhc2UyNi1tYWludAorNjk3NjMgOTAwMWQ5YzhmNzFlMDUxN2EzZWUzYzMyMTEyMzRlZDhmZDk3YTM5MyBweTNrCis2OTc2NCBkNjczZGE5MTU5MTRkN2M1OTEzNDRjOTMzOGFkOWJiZGQ0NzJhMjJmIHJlbGVhc2UzMC1tYWludAorNjk3NjUgOTgwMGFiMjM2YzA5ZDQ1NWNkNjJhY2I3MWEwMzgyMDRlM2FkZDdlNSBsZWdhY3ktdHJ1bmsKKzY5NzY2IGYwZWFjNDUyYTZjYWZkMThmYTA4OTEyYjI3YzgxZjJkNTg2NTM5YjQgcmVsZWFzZTI2LW1haW50Cis2OTc2NyBiZDQ2NzE3OTJkNTAxNmU1ZTgxNDc2OGFmYjU3MzU2YTZkZjcwNDM2IHJlbGVhc2UzMC1tYWludAorNjk3NjggNDM0MmMwYTJmMmRjOWNhZDQ0OGIxNmQ1ZDkyODVmYWIwZTE3MzIyMiBweTNrCis2OTc2OSA4NDY4YjUyZjVlZTJjMzc3Y2RiZTI3MzE1YjFmMDk1MTFiNmFhNzU2IGxlZ2FjeS10cnVuaworNjk3NzAgMDBmN2JlMDJhZTFmMWMyZDAwOTNiZDNjZjMzY2JiMGU0OWI1NDNmNSBsZWdhY3ktdHJ1bmsKKzY5NzcxIDc4ZTMxMWYyNzdhNzAyN2UxZGI1MDJmOTIxNjZmNGY1ZDRhZTIxMjIgcHkzaworNjk3NzIgOGMxM2Y0MzBlMTYwNmEwODU0ZTZjM2VmNGExYzVkMDMwYmRjYWI1NCBsZWdhY3ktdHJ1bmsKKzY5NzczIDgzM2RkZmVjMGJjNDU2YmUwNDg4YTVlOWZjMWM2ODA1NTg2YTBmOTUgcHkzaworNjk3NzYgYzAyYzJhOTA4Y2IwOThmMWY4ZmRkM2ZjODAzM2Y1YjgwYTcyMWZiZSBsZWdhY3ktdHJ1bmsKKzY5Nzc3IDQzODU5Mjg5MGUyYjdlZjU5MjlhMDFlZWEwOTBkOTFlYzNlY2M0NmQgbGVnYWN5LXRydW5rCis2OTc5MyAyNzkzMzc1M2EzODdmOTFhODJjOTRlY2ZmYjM0ODVhOTEyOWU0OGZjIHB5M2sKKzY5Nzk0IDY3ZWVkODFiYTc0ZmE2YTMwYTgwNmU0NDU2ZDdmNzViMmMwZmVmNmUgcHkzaworNjk3OTUgOTgxNWRhNDNhMWNlZmE0NmQwYTFkODExNzA5N2JiODM5ODk2NmZhZiBsZWdhY3ktdHJ1bmsKKzY5Nzk2IGMxYmYwMzdmZWVmZTA2YjFlY2U5MDA5ODExYzVjNDA1YzlhMmMzMWUgcmVsZWFzZTMwLW1haW50Cis2OTc5NyA2MjRiNTVkMGQ2YjcyZGIxMTNmNDA1MDZjNzYyN2QyMzVkZDA2N2EyIHB5M2sKKzY5Nzk4IDJmM2FmYWNmOWYwYjcyY2NkNjA4N2I4Mjg5OGIxZjVlN2E0Mjg5MmEgcHkzaworNjk3OTkgMTQwOGZlZWMwMDg0OWFlZTA1ODZmOWFmZDJiMTBkZDI5MTY2NDE2NCByZWxlYXNlMzAtbWFpbnQKKzY5ODAwIGRiOGRiMzFmZGI0YzQ3YzAxZmUwZjRkZDc1YjZhMDk0YWRmZjM4YzUgcHkzaworNjk4MDEgMGI5OGUzNzkxYjllYzg3MjBjYTc4MmJkNWFjYzQ1NTA1MGM1MjE2ZCByZWxlYXNlMzAtbWFpbnQKKzY5ODAzIDVhMTc4ODhjNTE1MTNlOTVkYTgxMTZhMDdlMmNmYmQ3MWQ3MGI3ZDEgbGVnYWN5LXRydW5rCis2OTgwNCBlZjE5Y2EwMTNlMTZlZTE1MWQ4MzlhOTJmNGI4MzFmMTI5ZjQ1Nzc0IGxlZ2FjeS10cnVuaworNjk4MDUgMDgyNDA5MzE0YjAwN2E4OGIzZTA3YTZkZDE3NjQ5MmI4ZWMzZjQ3NCBsZWdhY3ktdHJ1bmsKKzY5ODA2IDY1YTNmNTU1ZmFiNzNkYTRlNzRlYjQ1YmY2MTJiMGE3YzY0NWJlMjUgbGVnYWN5LXRydW5rCis2OTgwNyAxNjRiYTdmZmEwZWVlNTQ0YjRjM2UxMzQ3NjhiYzI4MTAxYzg2ZmMzIHJlbGVhc2UyNi1tYWludAorNjk4MDggOTI1MGM4YzYxYTkxMDk1YTk1ZWY1NmQzY2MyMTY4ZjVkZTZlNGE5ZCBweTNrCis2OTgwOSA0ZDNiYWFjMmUxYTIwZGI1MmIxNzc5YmE1ZjFjZjM4ZDU2MDhhYzZkIHJlbGVhc2UzMC1tYWludAorNjk4MTEgMDg0OGViYjhmOWM4OGM5MjcwZGU2NzJmYTE1NmE0NmI0ZTZjZGRkOCBsZWdhY3ktdHJ1bmsKKzY5ODEyIGM2ZWQ1YmZlMzk2OWEzOGI0YzA3ZjcxODNjYWYzMGFiZGZmN2ZiNTYgaW8tYworNjk4MTMgZTA4ZTQwOThhNGU3OWI0MTdjNTVlZTNkMTM3M2NkY2JiYjc1MTM1MSBpby1jCis2OTgxNCA0MDgyZWRhOGI0NjYzYjE0NTE2Y2U2OTYwYzA1MjM5MmM2YTk3OWU3IGlvLWMKKzY5ODE1IDdmODNhZmY2OGMxNjZjZDg0ZTMyZWVjMTZmNjJkZTk1YjdiZTUxNzcgaW8tYworNjk4MTYgMWFhYzc1MjA0MzdhNmZkNGE3NTc0OTkwN2U2N2Y3N2Y2YjYyOTkxNiBsZWdhY3ktdHJ1bmsKKzY5ODE3IGMwNWMzMGZjMTE4YmUxMDA5ZWVmYWJiZjQ0NTQyNzg0NjZiMmE2MmEgaW8tYworNjk4MTggNmNlOTZjZTRkOWFmZTQxNTZkNjEwMjA0MTgzZDIxODNkMmJmZDZkNiByZWxlYXNlMjYtbWFpbnQKKzY5ODE5IDVmNTk1YWM4YWVmYzM5NjJmOWVjMDI1ZjMwNGU5MDhkYjNiNzEyOGUgcHkzaworNjk4MjAgZTA4MTVmZWUyNGY2ZTM4MGIyNjIzZWY2NTFmMWQ0NzVmYWE3OGUyMCByZWxlYXNlMzAtbWFpbnQKKzY5ODIxIDY3YmNmZjI5M2EyMWFkNWZlYjU3NTFjMzg3YTA3ODU3NDQyYTlkZmUgcHkzaworNjk4MjIgMzdlNGRmOWZkYWE2ZDQwMDA1N2JlZWZlMDJhYTMwYmIzZjI4MGVhNCByZWxlYXNlMzAtbWFpbnQKKzY5ODI3IGFkYjExMzNkODkyYWI2ZmMyZjQyYzdjOWY2YzA5OGZhNDdlYTY0Y2QgaW8tYworNjk4MjggYzYxODJjYzdlNmQ3MGUwMzMxYzQxMTE1YTJiMDFmM2NlZGNiNTRjZiBpby1jCis2OTgyOSA3MDJjM2I5ODAzZThjNzUzZDcxZmI3MmM3MGM4MDQ5MjE5ZTAwYzRiIGlvLWMKKzY5ODMwIDZmZDg5MGIyMGQ2M2ZjN2FkOGIwZDVjOTAzNzE1ZWZjMzRjNTk3MGEgaW8tYworNjk4MzEgZGNjMTYxZTFhZjdlY2UyN2FkNTMzY2M0Y2VmNjJmOTRlOTZkMjQwZiBweTNrCis2OTgzMiA0MWUzOGE2MWJjNGI0OTE2N2YyZDU5YmYxYTU2N2VhZDhkZmI2MDA0IHB5M2sKKzY5ODMzIGExZmFmZjc0ZmY4OWUyZGFhYzA0ODg5MDE1NGYxOGRiYmFhZWM5ODkgcHkzaworNjk4MzQgNzE0OWI3ZWVmMTUzZDdiMzdlMmU0NWFkNTMwMTEwMmU1MmUwZjIxNiBweTNrCis2OTgzNSA3NGEyZmY0MDUxOGFlNjY1M2IxODg2Y2I3M2E0NzE5YWFkYjYxNzc5IHB5M2sKKzY5ODM2IGVlNzAyOTcxMGMwNTBkYjIyNmQzYmY4NDQyMGE5YzM5Yzk2OTM0ZDYgcHkzaworNjk4MzcgM2UyN2Q2MDZkNjI1ZjhlOTE3ZmM1ZTFmNTY1OWIwYmRlY2U3ZWU3YiBsZWdhY3ktdHJ1bmsKKzY5ODM4IDMyNmY2ZmFjYzFhYTRmNDM2YjczZDhjYzBkMzFiYzY4ODBkYTIxODAgbGVnYWN5LXRydW5rCis2OTgzOSBhNWJhOWMxN2Y4YjlkNTBlMDljMGYxNGFkMDY2MGFkZmM0YTVmNmUxIGlvLWMKKzY5ODQwIDllNmZiYTVhY2NlNDZiZjg0NzExYmZkZmFlZmJiNzdhMWE1ZDRlNDMgbGVnYWN5LXRydW5rCis2OTg0MSBjMjcyZTMxNWRkODcyMDZhOWQ5NzZjMTA0YmYxNjFkNzZjMTdmMjJjIGlvLWMKKzY5ODQyIDk1NTc2YmYzYWQ3MzU4OTY5Mzg0OTlhNWY2YWEwNmIyYzYwNjA0MDcgaW8tYworNjk4NDMgMzc2ZDgwOGUxYzA1ZmFhYWQ5ZTUwMDJlZTVhZjAyOWU0M2ZiYTk1YyBpby1jCis2OTg0NCA1MTQ0NWIwNDA5ODYxNzYyNjRkNTBmZmI2NzgyZmY3YWUzNDMwNDBhIGlvLWMKKzY5ODQ1IDNmMDIzZmI4M2YyYjliOWExYjRhODQ4OWU1ZDZjZTA3MDRlMWU0MjAgaW8tYworNjk4NDYgYWY5YjZjNDM4MDRlMWU5YzQ5MzMyY2E2NjM0MzYzZDA4YWUyZjJhYyBsZWdhY3ktdHJ1bmsKKzY5ODQ3IGQwNmEzZWJmMzA2ZmE5NDVlNDNmNTlkZjA2MzcwNWEzZjRjM2RjY2QgcHkzaworNjk4NDggNmJhNTU4OGVmNjQ1ODdmMjJhNGU0MWM4ZTYzZDhjMTkwYjA0ODZhZCBpby1jCis2OTg0OSBlYzQ5MDkzMmQ5MWNiNTJkYjEyY2UzNjMzZDczNDcxODk4NzMyMTI2IHB5M2sKKzY5ODUwIGMyOTUyYzJiNWE0YWU2OGU3MzMyNzljNmFmYjg0ZmM0MmNhZTk3OTQgaW8tYworNjk4NTEgYWEyOWQwOTY3MTA1ODllNjc2ZWE4MjFlMTBjYWJmMmQ2ZDc5NzYwOSBweTNrCis2OTg1MiA5OTg4ZTlmMDA0MDhmNjU5MjI3OWFlNmQ2NzQyMTg4MzFjNDI4YmQ5IGlvLWMKKzY5ODUzIDhhODI1YTE3Y2IyNzM1ODJiZmZmOTRjMDVjZGM1ZWU5Mzg4N2RlNjAgcHkzaworNjk4NTQgN2FlOGE4NzI4NDIxZmU1ZjMyNDgwYzExZTg0Y2NlYzhiNjA1MTg3OSBpby1jCis2OTg1NSA5NmFiYjQzOWUyZDA3ZDBjYmFhODdhZDdiNWI2YjE1YWNjMDM3YzY3IGxlZ2FjeS10cnVuaworNjk4NTYgNmE1YmVlMTg5M2FkODM2YzExMjA0MDhhMjllYTVlNzQxYjAyZGQ5MSBweTNrCis2OTg1NyA5MTgyNjRmZjAyZTFjMDllYWM0OTQ0N2MzNGM3NWVmYTFkZjYyYjRjIHB5M2sKKzY5ODU4IDViZTI0YTU2ZjA5MThhZGRjNmZlNTIyMjI4NTgyOWZlZjcyODkzMzIgcHkzaworNjk4NTkgNzY1NzE5ODZhMmY0MjA4MjY2Mzc2YmYwZWIyNGEyOTFjYWZlYzA0NSByZWxlYXNlMzAtbWFpbnQKKzY5ODYwIDhlN2E0YTc3NDEzODQyNmRkN2QwNGQzMmQ4N2ExNTFiYWRmMjg2YTUgaW8tYworNjk4NjEgZWNkOGVmNGU3OWU2YjcxYjExYmNiMjM0YTNhMzY2ZWNlN2NhZDYwYiBsZWdhY3ktdHJ1bmsKKzY5ODYyIGMzMzA0YTRiNjRlYTFhN2U1NThjMjJlZDMxZGNlZmU1YzVlYzkzNzkgcmVsZWFzZTI2LW1haW50Cis2OTg2MyA4NDYwZTVlZTA2YzM5MTVkZTc4MjU4MTIzMWFmZTc2NTM0NTgxYzdiIHB5M2sKKzY5ODY0IDNjYTFmYjYyMmY1YTRiOGE3NTdmMDg5MTUzYzA5OGQxOTRhNjQ2NDMgcmVsZWFzZTMwLW1haW50Cis2OTg2NSAwMDJkYWNhNjZmOWY2YmRmYjlkMTk3MmZjYTdlZDk4YzRiYzdjZDZmIGlvLWMKKzY5ODY2IGVkNWNkOTA0ZjIwMDdjNWNlZTU2OTkzNjY0MzViMTViNTIxMzVlZjEgaW8tYworNjk4NjggNWZmZDkzMjgwYTcxYjQwN2FjODU0OWUxNzM3Nzc0NGYxZDJkNDFjYyBpby1jCis2OTg2OSBhMGVkYTFlMjI4YjhmOGYzNTRhNDBkZmY3Nzc4MjI1MTk3NzRhNWNhIHB5M2sKKzY5ODcwIDBhYjhiZWY2NzFhM2RmNTk4YTAwODk1ODRjZWNhMTE0OGNlNzg4YWIgbGVnYWN5LXRydW5rCis2OTg3MSBjMjAxYzhjZjNjYjQwYzI2NmI4Y2Q2NjRiNDcxNWJhNGY4ZjBiYmFjIGxlZ2FjeS10cnVuaworNjk4NzIgNWI1ZGNjYzUwZTEyYzQ2NGIxOTA0YzI5NDQzNmVkOWQwNDQwZTgxZiBpby1jCis2OTg3MyA0OTkxNGIzZTNhYTgxMDBmNTEwNWE3NTYwMDQyMWZjNGQxY2JhNmU2IGlvLWMKKzY5ODc0IGIzNTE1ZWQyODEzNTA0MTYwYzZhNzMzZDA1ODYxMDg1MTQ4YTdjOTYgbGVnYWN5LXRydW5rCis2OTg3NSBkMzYyOTY2NzM5NzRhMDIyZGE3OTYxNzczNzI5ODZhMjI0NjRkMTg2IHJlbGVhc2UyNi1tYWludAorNjk4NzYgZTg5YzdlZDFjZmZmNDgwZmU1ZDQzNDEyMWQ5ZDUzZGVjN2Q2NjA0NyBweTNrCis2OTg3NyBhYTMwMjE2OTljNTlhYjgwYTlhOWRjZDA1NzI2NTkwYzhiYzA2N2JkIHJlbGVhc2UzMC1tYWludAorNjk4NzggY2QyZWU4MTkwOTU3Yzk0NzAwZjkzNTdmZThhZWI5ZTY1YWJhMTYxZCBsZWdhY3ktdHJ1bmsKKzY5ODc5IDMzOWY1YzFlZjBlZGY0MzMyYWFkOWRiMTFiZWZmNjM1ODQzZmY3ODEgcmVsZWFzZTI2LW1haW50Cis2OTg4MCAwYTVjMjZkMGJlNTQwZGNjMDJkMzk2ZTg3NDUxOGNjM2JhMTE4NTg3IHB5M2sKKzY5ODgxIDYyMGU3NDJjZGY2OGE3NDViMDYwMTg3NWJlZWFmN2Y2ZWIxMjAyOTEgbGVnYWN5LXRydW5rCis2OTg4MiAwZWZmZGE1NDgxOWUyYzQ2N2JkOWIyNmJjZDY5MGFhMWRiZDVlY2U4IHJlbGVhc2UyNi1tYWludAorNjk4ODMgZTVlNWNhMDQ5MWI4NDA4MjVhMDJmZDZlZmNkMzA4MDM2YjlkYjM2MCBweTNrCis2OTg4NCAxM2ExY2JmMTFhMjFlYWQxN2ZmMjRlYThiMWU2YTM0OTAwOWY1OWFhIHJlbGVhc2UzMC1tYWludAorNjk4ODUgZDIyZDZlOWY3OTFjMmNmNzM2Njg3YzUwOWEzOGIxMDc5MWI1ZjU3NiBpby1jCis2OTg4OCBjZTBhOTVhZjZiMWQ0MWJiYzI5MDdkM2E0OGQxNzkxMDVmNzFiYzE1IGlvLWMKKzY5ODg5IDI3MmFjNjU0ZmQxYWYyMDA3NGU4YzdlODA3NGU4MDljNjg1ZTQ1YWYgbGVnYWN5LXRydW5rCis2OTg5MCBmYjdiZTQ1YTk0NDE4ZWY2MWNhNzAzNjhkYzVkMDk3N2EyZDQ0Y2VjIHB5M2sKKzY5ODkxIDNkZjhiZTAzNjMyNDNlMGE4ZWVlZThmZDlhMDFiMzBkNTRjNjliOTggaW8tYworNjk4OTIgOWY2Y2IwNDM3YmU4MjM0M2VmY2JmOTg2ODVjNGE3YTVmMzM4OTI3MiBpby1jCis2OTg5MyA0NDQ5NmNkMGJjNzgwM2U0ODUxOGMzNTZjOTlhYTFlNzhkNTVkNjM1IGlvLWMKKzY5ODk0IGRiMTRlY2EwMTYzNTA2ZGNmYWZhYjMxYmRhODc1MjA0ZGJjMDliNmMgcHkzaworNjk4OTUgYjYxZjMzYWYzNzRiY2E3MmI4YjRmZWVmMGM1MTE4MWU1ZDViZGY2YiBweTNrCis2OTg5NiA4YTRkYzAwODhlODYyNmI1NmNkZjlmZDc1ZGEwMjNhNmVmYzg0MTZjIGxlZ2FjeS10cnVuaworNjk4OTcgMzIxOWIzNGEzMzIwNjEyODk0ZmFhNGM5ZjI5NWMxNjc3MjY3ODY1MSBweTNrCis2OTg5OCBhMzY2Njg4YThmMGQzYzllMmRlNDcxNmIwMDgwZjMyMjQ3MWI3MjZkIHJlbGVhc2UyNi1tYWludAorNjk4OTkgYzhkMDZkZmQ0YzM5ZjVjOTZlMGRhNzg5OTE2ODkwOWJlNjIzODk1YyByZWxlYXNlMzAtbWFpbnQKKzY5OTAwIDViZGI5YzY0MmNjY2QxNjJlOGYzOTcxZGU0MmY4N2JhNmZlYzE2NDYgcmVsZWFzZTI2LW1haW50Cis2OTkwMSAzZTc3MzNjZjI3OWUzNGRhNWZhYzkzMGI0YThjMDAxZTJhNDM0ZWRkIGxlZ2FjeS10cnVuaworNjk5MDIgMmJmMTMzN2MzYTYwNWRjYTA0MGY5MTZlZTNmNDNlNjU4NzJlMmUxNCBsZWdhY3ktdHJ1bmsKKzY5OTAzIDFmMWUyMmVmNTU2MDlhZTE1ODc5OTc2NTg4NjY1ZjdkMjgwMThiMTAgcmVsZWFzZTI2LW1haW50Cis2OTkwNCA1Yzg1OWFlYTQ2YjljN2RjYTU1ZDQxY2ExNGVlMDAxNzU3YTU4NzE5IHB5M2sKKzY5OTA1IDBhNTk4ZGJlZDY3OTI2NmY2M2YxOTZkOTMwYmI5OTFmMzBiMTY2ZjkgbGVnYWN5LXRydW5rCis2OTkwNiAwMTc0YjkzNjY5Y2Q0ODg5ZTU3N2MxYzBhZjhiOTIzNDYwZGNiMDk4IHJlbGVhc2UyNi1tYWludAorNjk5MDcgMTZjY2EzMGNmM2ViODNiMWUyNjA1ZjMyOTRkMTZmMmU3NzI2MDM4ZCBsZWdhY3ktdHJ1bmsKKzY5OTA4IGEwZmVjYmU3MzYxNmY2MjgzZTNkZTBmNjk5OTJiYjc4YzNjYjQzYzYgbGVnYWN5LXRydW5rCis2OTkwOSAwNTA0MDg3YTI3MjM2YjM3ODUwMjA5MDI1N2M2NjNhNmQwMjJiNzg2IHB5M2sKKzY5OTEwIGMxZjAyNmUwODc1ZTA0OWIwOGMyNzVkZTk1NWRmNjY2ZjY3YThlY2IgcmVsZWFzZTMwLW1haW50Cis2OTkxMSA5ZmU1MzE1NjU0M2NmNTJmODJiMTZmZDM3OWEyNzA3NTk0ZjVmMzczIGlvLWMKKzY5OTEyIGY5ZWFkMmUxYTAzY2ZkOGMyM2M4OGVhYzRjYzVlNDEzYmM1ODY0MDMgcmVsZWFzZTI2LW1haW50Cis2OTkxMyBiYzNiMDczYWQxNDZkNTkxNTljZDQ3NzM0ZjY0MWI2OGY2MjM2OTU3IGlvLWMKKzY5OTE0IGE1MmUxNDU0NTU2MTRlN2ZjYjY3MzE4MTg5Njg5ZmE5M2VlNGNlYmYgaW8tYworNjk5MTUgNjZjZTgwZThlNTM3OThlODE5OTY2MDI2M2M5YzZjNDhlMGY3OGRjZSBpby1jCis2OTkxNiBlZjNhNmMxNjgzNzRjNDhkYzAxM2E4YzQxMGRjZmZlNDhkNjNmYTEyIGlvLWMKKzY5OTE3IDgzNjY0ZTdmNzA4YWIzOTdjZGRiYjk2ZDc1ZmVhZTFlMDZlOTkzNmYgcmVsZWFzZTMwLW1haW50Cis2OTkxOCA5NDk0MWIwNTk4MDBlMzQ2YjE1NzFiY2MxNDlhNDhlY2VkZDEzMWRkIHJlbGVhc2UyNi1tYWludAorNjk5MjQgZmE3NDc2NjBkNGQ0MTY4Y2Q1YjIzYmJjNzA5OGIwNTNlZGI1YjE4ZSBsZWdhY3ktdHJ1bmsKKzY5OTI2IDA0ZjNjZjMyYWE3N2Y4MzYwOTA2ZTEyMTU2ZGI3ZjRmMGQ2ZDgxODMgcHkzaworNjk5MjcgNWM3NGU0MGQxOTI2ZTVhNmU4NDgzNzkwODMzOWU5M2E4MzQwYzY4MSBsZWdhY3ktdHJ1bmsKKzY5OTI5IGIxZTYwYjQ3ZTE2MDE3YTZhMWZjMmIwZjc4NmQxMzcwOTY5MWZlYjYgcmVsZWFzZTMwLW1haW50Cis2OTkzMCA1NjE3NDcxMDM3YmM3YWY1Y2NiYTZiNjk4YjZmNzA0NzBiZWNjNzA0IHB5M2sKKzY5OTMxIDgzZmEyNzQ4M2ZkYzkzOTFiYzQwYzdkM2M2ZjVlNjQ3OWRmMjQxZmEgcmVsZWFzZTMwLW1haW50Cis2OTkzMiA1OTUyZDQxMTg5YWQxYWYxMTExM2ZjODgwMGFlNzYyZDkyNTYyM2JjIHJlbGVhc2UyNi1tYWludAorNjk5MzMgOTA0MTJkZmRhYmEzMDZhMjQ5NGRiYTA0NGM2M2UxYmY3NGZlZGE4NCByZWxlYXNlMzAtbWFpbnQKKzY5OTM0IDEyYzY5ZWY0M2RkZTgzMmFjMGQ3ZjIyYmMzMTM2ODg3ODg4MGJhZGIgcHkzaworNjk5MzUgYzBiOWJjMjVjZWJiZTM5OTdhYjNiODU0NWM1OWUwMDExMjllMjZmYSBweTNrCis2OTkzNiBiYzcwZWM5N2UzOWZhZjU3NjY5ZmQwMWNmN2M5M2M3MWI3NThlYWY3IHJlbGVhc2UzMC1tYWludAorNjk5MzcgOWMyNWEwNzkwMDIyYzA2MTc1YmE2ZjViZGI4MDdlY2E0NmJlMjlkNiBsZWdhY3ktdHJ1bmsKKzY5OTM4IGZhZjk2ODIxMmYzMWQ2YTA3YWJmZjdmZDc0ZDNlNzAwY2MzMTc5ODEgcmVsZWFzZTI2LW1haW50Cis2OTkzOSA1NzRmZWY1M2E3ZTNkZTQ5ZTI5MTg5NTc3MTI1OGQxNzEwOGVjYWRlIHJlbGVhc2UzMC1tYWludAorNjk5NDYgNDViNDRiZDMyZjQxNjVkMTY5YzMxYmU5NjI2YmM2OWJhOGM0ZjQ3MyBsZWdhY3ktdHJ1bmsKKzY5OTQ3IGE4YmI4MmY1ZmQ2NDdhZDcwYzNiMDI4NjUwZjliNmM4OGM4OGUwYWQgbGVnYWN5LXRydW5rCis2OTk0OCAyZjZiMzRmNjdlZjAyMDE2NTllZmRhZDU3Zjc5MWJmMTNiMzAwMjgwIHB5M2sKKzY5OTQ5IDJlMjU3NzFkNzIwMjE2MWYyNTQwZjkzMWJmMDU4MTA4ZmU4NTY1MjEgcHkzaworNjk5NTEgNjBkMDlhNzE2NTU2ODBiZDc2YzIxNTFjOGFhMWMzODBjNjUwYTMyNiBweTNrCis2OTk1MiAxZDI0NzM5NTExYzljOTI5ZmVmYmNmMDI2YTliYWI4OGNjNjU3YTgyIGxlZ2FjeS10cnVuaworNjk5NTMgYjhjNGEzNzkzZDBmNTEyYTdmMGQ5YTI4Y2MwMTJmZWNiYWVkYjkxOSBsZWdhY3ktdHJ1bmsKKzY5OTU0IGE3ZmRmNjljYWUxMzVjMGFjNDljZmJjYTEwNzAwN2RmYzBhZDE4NWIgcmVsZWFzZTI2LW1haW50Cis2OTk1NSA0NmNiZTY3Yjk2NjFmNzExOWRjNjg5YjBiNGEzMWIyN2QzMDliMWFlIGxlZ2FjeS10cnVuaworNjk5NTYgZGMzMTVkZjdlODA4NjMyNzk1YzgxODJlZGM0OWIyODlkNDgwMzMxNCByZWxlYXNlMjYtbWFpbnQKKzY5OTU3IDY1NzYyYTA2Yjg4ZjNjZjMwMzEzNThhYjFlMDNkNmQxM2NjNzhiNjIgcHkzaworNjk5NTggMzM3YmQ1MDk0NTVhMTk3MTg3MDM3NWE1OTVlNTAzMjE2NDVhYmY2ZCByZWxlYXNlMzAtbWFpbnQKKzY5OTU5IDE3N2JhMTIyYmIxYjAyYzNhMzMyYjMxNWQ5YjU5YmU1NTU2MWQ3OWUgbGVnYWN5LXRydW5rCis2OTk2MCAyOWIxMmE4OWIyYTA2YzgwNWIxNTcyNTU4MDgwODM5NzhmMTQ5MDA3IHJlbGVhc2UyNi1tYWludAorNjk5NjEgNjQzZDhkNGZjOGViY2M2OTE1NWQzNDE2MzU3YWFkY2E5YzA1MzM4OCBweTNrCis2OTk2MiAwOGEyOTZhODhjM2UwYjM0YjE2MWU5Yjk1MDg2YTE4MTc5NWFlZmZiIGlvLWMKKzY5OTYzIDhlMGNlYjlmNWMyYTczZjM0ZmQyNTk2MzdhMmY4N2ViODJjOTI2NGEgaW8tYworNjk5NzQgNDIxYTAzNjlmMjM5NGE0YTQ3NjNhYzI1YjUyNGY3YmEwZWJlODY1YyBsZWdhY3ktdHJ1bmsKKzY5OTc1IGFjMjY3NjVmYjFiYjhiMDQ2MWVmNWI1OGE4ZTQ0MGRjOGQ1MjEyMWEgcHkzaworNjk5NzYgNzAyZjE4OTkxNjFlMTk0MWQzNTA0NWEwYzdmNDFhZDNiZWZkZDA3ZCBsZWdhY3ktdHJ1bmsKKzY5OTc3IDY5MmM4YTk4ODAyNjRiMmU2ZmNmMTAyMmE3ZWRhZTIyMjBlMDQ3MDQgcHkzaworNjk5NzggMDJlZWNkYjE3MzU4MDc5Y2UwNzM2ZjJlZWRlNzM0YzJkYWZlYWE1YSByZWxlYXNlMzAtbWFpbnQKKzY5OTc5IGY3YjAzMDEwMTYyYzQxMTdkN2Q3Y2NhZWVmZjRlNWQzMWZjNGZjYTAgcmVsZWFzZTI2LW1haW50Cis2OTk4MSAwZWUzYjlhN2YyMDk3ZTlkYTc3NjdmOWQ3NWU0YmVlMzc3YWE3NDQ2IGxlZ2FjeS10cnVuaworNjk5ODIgZDc4YjI4YTM1MjRjNWFhZTZhYTViZTNkNWJlOGE4ODEzMzkwYjE3NCBweTNrCis2OTk4MyBjMDdkN2ZkMjc0Njk5MGUwMjc3OWJkYmU0ODZlNGMwOTk2NTY4ZmU3IGxlZ2FjeS10cnVuaworNjk5ODQgODg3Mzg1NGJiNWY5MDcyZTViNzNiNjM3ODc0NDhkNDBjZTY3MjlkYSByZWxlYXNlMjYtbWFpbnQKKzY5OTg1IGM4MDA0ODIxNWRlNTgwMGIwNmQzNGZiZmYyMzZhOWQ5ZDA5MDAwNzkgcmVsZWFzZTMwLW1haW50Cis2OTk4NiAwNTJmYjUxZjhkY2YzYjc5MjU4OWY5ZDgwYzY3NTZiOWM2MWQ3MDVkIHB5M2sKKzY5OTg3IDNlY2Q0ODQ3NTZiMDIzYjNmYTgwMjQ3ODQwYzdiMzg1MzMwYTY0YWIgbGVnYWN5LXRydW5rCis2OTk4OSBlODcyZjU4N2YxOTAxYTc0MjhlOWVhZWI5YmY5MjU1N2Q4ZTZlMzNlIHB5M2sKKzY5OTkwIGU5OWI1NmRhNDMyYWY2ZDFkNTZiMzIxNzc4NGU5MGI3ZDJhOGFmYWUgcHkzaworNjk5OTEgMzIzYTVhOGQxMGZjODYwMDJiOTMxMWY1YWU3OGUzODkxZTBlMzRhNSByZWxlYXNlMzAtbWFpbnQKKzY5OTk0IDY5ODE3NWZlOGIzZGU5OTBkM2I2YjcyY2NjNWVhMDI0OTI2NjY0Y2QgbGVnYWN5LXRydW5rCis2OTk5NSAzZjczYjdhZjEzMWMxNWQyOTdiZDI2MzFkMDQ2ZTU3MjkzNjMzZmNhIHB5M2sKKzY5OTk2IDM3MjJjZTQ1ODMxODk0N2E5ZjI1YmQ4ODk5YmViMjA2Y2RkZTY1NmIgcHkzaworNjk5OTcgYTFiM2QwMjE2ODIwYTlkNjI4MTg3MDUwNDZjNzgyYTgxYmZiZjY4OCByZWxlYXNlMzAtbWFpbnQKKzY5OTk4IDYzMjY2NjY5MWQzZDQ4MDgzMDUzYzZkOGMwN2E5MTUxZTQ4MmViOTEgbGVnYWN5LXRydW5rCis2OTk5OSA1OGJiZWIzM2Y1ODMzMzFjNjYwOGFmZmE2MzJhNzMxZDFhOWJmMDg4IGxlZ2FjeS10cnVuaworNzAwMDAgNzEyYWE1YmI3YjQ4ZDVkN2NlYzNhMGM5NDA3ZmUyN2VkM2ZlZmZlYyBsZWdhY3ktdHJ1bmsKKzcwMDAxIDg2MjI4OTQ3YjY1ZDFmOTA2Zjg4ZDIzM2YzZjBiNThkYTJmN2U4NGEgcHkzaworNzAwMDIgMTQ5ZGM0YmM4ZWNhMDMxMjMwODc2MDFjZTBiZmNhODU4ZGQ5NTIxZSBsZWdhY3ktdHJ1bmsKKzcwMDAzIDhiNGRhMWY0OTM4NDVjYTA3ODIzMTAyMmE5MWNiYzkxZjVjYTljOTAgbGVnYWN5LXRydW5rCis3MDAwNCBmMTcwNzI5ZTMwMzgyZDljMDI1OWVmYjcxMTdlNTFiZmM2ZWY3MzdmIHJlbGVhc2UyNi1tYWludAorNzAwMDUgZjJlNmE1ZWExMGZlMGEwOTY4YWJiMDg4MjU4OTdiNDc1MmNkYzVlMyBweTNrCis3MDAwNiAzNjk1Y2FmZWY1OGQ5MzQ0ZWEyOWNhNTY5N2RhZWUwYzA5MDc1ZGExIHJlbGVhc2UzMC1tYWludAorNzAwMDcgYjdiMjM4ODdmYmRlNjgxNTBlNzU0ZDg3YTYyNjRjOTU0ZTZjYTIwZSBsZWdhY3ktdHJ1bmsKKzcwMDA4IGVjMWY4ZWI0ZGE1OTRmNWVkOTQwNzk0YjQ4MTY3ZWQzNjA1MmNmYTYgcmVsZWFzZTI2LW1haW50Cis3MDAwOSBlOWQwM2Y2YjBkNTkwNTZmYTk1NDZhMWUyNzU1YTIxMjI1N2ZmYWNhIHB5M2sKKzcwMDEwIDIyOGY4OWFlNTViMTAwODI3YmMwOTA1OWJmZDM2NjYwNjU0MTI0ZWEgcmVsZWFzZTMwLW1haW50Cis3MDAxMSAyYjYwYjQ2NTEzZDI2M2Y5MjA1ZmJmNGNmOTg4NTY3ZDdlOGU4MmMxIGxlZ2FjeS10cnVuaworNzAwMTUgYzRmMjdlNTQ2Y2Y1MTc1ZTUyZGMzNjU3YmZkYzVmZjJmNzEzOTIwYyBweTNrCis3MDAxNiAxMDVhNTMxN2U2OGUxMjkwOTlmZjllOTQxZTIwZGUyZmYzOTJmNmRlIGxlZ2FjeS10cnVuaworNzAwMTcgOGI2ODk2ODg3OWM3MGRmMTBhMDJlMDJlM2JhNjY5M2NjZDMzODZkMiBsZWdhY3ktdHJ1bmsKKzcwMDE4IDE2NzNkOTU3MzExYTBiYjRhOTMzZDZiYTRhY2ZiYjFiOTkwZWRmYTIgcmVsZWFzZTI2LW1haW50Cis3MDAxOSA0ZmQ4MGU2NmIxMDcyMmYzZDQwZjM3NzQ1M2EyZjE2NGQ3NjFhYzRlIHB5M2sKKzcwMDIwIGRiMWRiZjA1NzE0N2E0YTk5NjQ5OWM3YjFiMDczZjkxODMxZmY5ZDggcmVsZWFzZTMwLW1haW50Cis3MDAyMiA4NjZmNzQ3YzE5NmYxMzc0ZDlkZmYwNTVlZDhkZmRiMzFlMjkzZDFhIGxlZ2FjeS10cnVuaworNzAwMjMgODAwM2EyZmI2MjViYTEwMzg3ZGM5MTFlNTlhMGY2M2EyOTc2N2ZjYyBsZWdhY3ktdHJ1bmsKKzcwMDI0IDVkYWMwODFlNzMwZDA4MDVjYTU0OGQ5NWQ4MDg4NDlmNjNjNWQwODAgcHkzaworNzAwMjUgZWIwM2U1YWU3MTA5YTY5NzRjYzIxOGFkZDdmYjU3YTJhMmQ3ZmE4OCBsZWdhY3ktdHJ1bmsKKzcwMDI2IDgzOTk4MzU5NTMzODI5MmEzNDBkNDYwMzZiNDU4OWVlMGY3OWRlZWMgbGVnYWN5LXRydW5rCis3MDAyNyAxZjg0NzA2ZTgxNmMyZTcwZWNmNjAyNmI4NmQ3NTRiMTZkODI5MzI3IHB5M2sKKzcwMDI4IDFmMGRlNDk0YmMxMzEwNzZkNDU0ZTMxZTNjZjQ3ZWIyNjNiNzIyMjggcHkzaworNzAwMjkgOWI2MmNiNjUzODkyMjc2NWE4MjRjOWNiNDVjNzE5YWZlNTk3YmY0NSBweTNrCis3MDAzMCBhNWYwMzcxODUwZmY1NGY0NWYyYTI3OWU2MjA1ZDNkYjVlMjVjZjE4IHJlbGVhc2UzMC1tYWludAorNzAwMzMgYjMwNmM3MmZmZDcwMTBlZDFhNmM3NjdmOWY0ZDFlOGI0NGM3NGUwMCBpby1jCis3MDAzNSBkMTU1NmI4MTk1ZjI4YWQ0NTcyMzZlOTk5MzA1YjgwMjM3ZjdkMjBkIGlvLWMKKzcwMDM3IGUwOTQyYzY3NTM3MjhiNzRiZjZjY2FhOWYxZmVkMGU5MGMzMjE5NTEgcHkzaworNzAwMzggYjcxZGY0NGQ1YmJmMGE2YWJjYTEyMDhjYmNhYmZjZWIzODgwMWEwNSBpby1jCis3MDA0MSBmYzgzY2ExYWMxMTA4ODEzZTFhZmVjNGRiMDJkYzIzMTI5YzZmOTgzIGlvLWMKKzcwMDQyIDM1YzFkNTI2MDdjODRmOWY3MjE2NjllNjMxMWZhNGM4OGU2YzhmMTIgaW8tYworNzAwNDMgZDI0NTMzZmIzZjQ3YTE5ZmQwNGRjYWIzNmY2YjIxOWYwMmUwMDczYSBpby1jCis3MDA0NCBmNzVmYjlmNDcxZDA5YjI1Y2RkYjBjNTg1ZDY1ZTJlZjNlZjBjYTc2IGlvLWMKKzcwMDQ1IDMxNDdiM2I3OGRjZjdlYjMwNTYyNjg0OWZkM2IyNTU5ZjU4NTU5ZTggaW8tYworNzAwNDYgYTI2NWY1OTk2MWY2NmEzZGViYzQzM2QxNGU1MzI5YWIxMDUzYmVkOSBpby1jCis3MDA0NyBjODRkY2FjN2U2OWExODUwZTg1ZmRjNmY3ZGZjMDEzOWQ3NjBiYzAwIGlvLWMKKzcwMDQ4IGYzMzlkYTgzODU4ZDk5MTA0NDQ0YzAwN2FjOWNmMzdmZTdjZDExZGYgaW8tYworNzAwNDkgNzg5ZmY4YmQxOTBhNWI4MDE1ZDUxNzIyNTliODZlMGExMTNkOWJkZSBsZWdhY3ktdHJ1bmsKKzcwMDUwIGJlNWE5Yzg0ZjZiY2NhN2VjNDlhZDZkMzI4MGVhMjUxZDA1MTk4YzIgcmVsZWFzZTI2LW1haW50Cis3MDA1MSAyMDYwMzgxMjFhZGVjOTc1NTM1N2IzNTBmYmY4MDIzYWIzY2M4Yzk3IHB5M2sKKzcwMDUyIDlkZTVkNjJhZDQwMjI4ZWY2MmUyN2VjYWU4YWU3NGE0MmQ0MzFjNmUgbGVnYWN5LXRydW5rCis3MDA1MyBiYTZjMzA2Y2YyY2VlNzcxZmNjMTQyOTU0MWVjZmI1MDc2NDZjOGFjIHB5M2sKKzcwMDU0IDkwMDM3Zjk3ZDg3MDdiY2ZkZGY4MDgzZWU1MTJjNTBlY2VkMDZhODUgcmVsZWFzZTI2LW1haW50Cis3MDA1NSA3NTlkYmFjZTUxZDJlZDFiZWRiNjQwNTRhZmUyY2JhNmExY2NjMDI0IHJlbGVhc2UzMC1tYWludAorNzAwNTYgMjlkNjUyZTNmMmQzMmFiOWNmODNiYmU0NGU2YWJmYjk5ZjIwMjg2YSBsZWdhY3ktdHJ1bmsKKzcwMDU3IDBlNmZhZjI3YjUzMWYyNzNlMTcyMjZjNzhlODQwMzZiYWJiNTI5ZjggcHkzaworNzAwNTggYzY0ZDRhOGFlMmIyZWNiODA5YWM2ZDg1ZjRlNWMzODZhMTdlYTMxMiByZWxlYXNlMzAtbWFpbnQKKzcwMDU5IDJhMGY4NGFjNDlmMDkwM2MzMWRkNTU5YWFlMDQ1Zjg0M2M2MmVmM2EgcmVsZWFzZTI2LW1haW50Cis3MDA2MSA2NzI0MjViZTM4OGE2OTIxZGM4YTc2YWJmODNkNDE5MmNhMWY2NWQ4IGxlZ2FjeS10cnVuaworNzAwNjIgNGUxNTU2MDEyNTg0NTgzYTE4Njg5YmM1Yjc4NzA2YjI2NjdjM2ZjZSBsZWdhY3ktdHJ1bmsKKzcwMDYzIDc5ZTY2YzExZGM4MGNhMmEwYWQ4MGIwNWVhNzU0OTNlMTkyNmRkZTIgcHkzaworNzAwNjQgYWUyMjYzMWE3ODdjNDliOWY0OWUxNTJkODllYWZiZjVhZWUwOGU3MSByZWxlYXNlMzAtbWFpbnQKKzcwMDY1IDY3NjU2N2UyYTcxMTkyMTI2ZjAzNDJkY2E1ZmNhN2JiODcwNjA2NjYgcmVsZWFzZTI2LW1haW50Cis3MDA2NyBkMWEzMTRlMGVmZjcyMDAzNWZiZDQ1MjIwY2RmOWE4ZTdkYTM1N2FhIGlvLWMKKzcwMDY4IDYwMTFjMDkyZTIxMzQ2ZWU3YjM1YjY2NGZjNTMzN2I2MTk3NmY4NTEgaW8tYworNzAwNjkgN2ZhY2E2OTU4ZGFjMDJkYWI5MDM4M2NjNzBkNDc2OWFmNzdkNDM2MCBpby1jCis3MDA3MCAwYWQzZGUyMTZlODNlNDNmZmVhNWZhN2U2MzBmYzZjYzcyNDY1YWM4IGlvLWMKKzcwMDcxIGVmOGZlOTA4ODY5NjhiMWViNDY4Y2I5MWViYWUxMDNmNzczZmExN2YgbGVnYWN5LXRydW5rCis3MDA3MiA3NWZmNjY5YmY5OTZkZWE5ZjBlM2JjYjg2YTU0NDM2ZGJjZjNmMmRmIHB5M2sKKzcwMDczIGI0MjE0NDFlZTY3OWM1ZThjM2IxMjc0ZTVmMTIxMWM2OGM2NTE0NTYgcmVsZWFzZTMwLW1haW50Cis3MDA3NCBlNDI4N2Q4Yzk3NDE3YWU1MjYwYmNjOTI1YmFhYTQ3MDNiZDdhNTViIGlvLWMKKzcwMDc1IDlmMzAwMzYxMjRmNjc4YTAzNmUwYTAxYzAzOGE3ZDE4ZGJkN2RlZmMgaW8tYworNzAwNzYgZTFjZTY2NmQ3NDA1YTYzN2U0MDg1YTExNzRkYjEyZjc3MTYwY2YxYyBweTNrCis3MDA3NyBmYzJhNmY2ZDM2YWNhNTFlNWMyNjI1YWNlNTI5Mzg2ZjQxZTk5ODhjIHB5M2sKKzcwMDc4IGQ3MDc3M2M5YWRhZDJkMWE3OTBhMmI0NDMwNGQxNTVjYjU2NDA3NzAgbGVnYWN5LXRydW5rCis3MDA3OSA1ZGY2NmRmYTZmNjRhYzY2YjIzYTk3YjJkMTJmY2U5ZWY3YjFhYjE3IHB5M2sKKzcwMDgwIDJhNDU4MTA2YWZiZmUzNWI5NmYzODBhMTMwMmQwMGRlMDA1MWEwNzIgcmVsZWFzZTI2LW1haW50Cis3MDA4MSAyYzU5MDNhMDJiMzYzYTM4ZTNjODA0OThlNmI5OGMyMDI5YmExNTc5IGxlZ2FjeS10cnVuaworNzAwODIgNjEyZmM2ZWU2OGY3NDUxODU5OTllZjdhYzAzNzM0M2U4YWRlNWUyZCByZWxlYXNlMjYtbWFpbnQKKzcwMDgzIGI3NjMyZGYxMTIxZmI3MjM1ZmZiMzNkNGUwYTE4NmQxYTY1NDdjNmIgcmVsZWFzZTMwLW1haW50Cis3MDA4NCA2ZmQyMzE5MTdlZjdjMjMxZTM4YjRiMzRhZTY0ZmM0ZTRiZTNlZGRhIHB5M2sKKzcwMDg2IGE2YzI0YWFjZThjYmQ3NDEzMmU2ZGM1MzU4ZWY2NTcyOGYyZmJlYzYgbGVnYWN5LXRydW5rCis3MDA4NyAyY2ViMmE3Njg4MGQ1ZmYzMTQwYjk1ZmMxMTIwY2E2OTg2NTc3NDg2IHJlbGVhc2UyNi1tYWludAorNzAwODggYWRjOWJiNDRlYzQ3MTAxZGYxOThkYWFjN2UwYjMyZDE0NGFiY2U5NyBsZWdhY3ktdHJ1bmsKKzcwMDg5IDk5MTljMWY0Nzk1ZWY4NTE5Y2I3NGJhOThlNTdkNjNhMDIxOGY3MTcgcHkzaworNzAwOTAgOGY1ZDhmMjdjNmZjZGM5ZGI1MDUwOTI3Nzc3MDE2Y2Y1ZDRlYTEyYyBsZWdhY3ktdHJ1bmsKKzcwMDkxIGRjZDNiYzJlMjM3NzNjMDBkOGRjZGI0N2ZjNjViOTg4MzNlNWJhYzUgcHkzaworNzAwOTIgNjBmY2ZkMTM3YTcyOTJjZjJmZWJkYjY2NjVmYTVkNDM3ZTVjMzgyZiByZWxlYXNlMjYtbWFpbnQKKzcwMDkzIDA4YTRhM2Y5YzUwZTljMDE1NWQ5ODZiNGY1ZjBkN2Y5YzRhMzRiODcgcmVsZWFzZTMwLW1haW50Cis3MDA5NCAwYjk3ZmZiODExYTAxMjEyYTc1NDg0NDBiZTljMzI1OTQ4NDFiMDk1IGxlZ2FjeS10cnVuaworNzAwOTUgMTljMWExY2ViMTI5NTU5ZWMzNjRhNGY1ODY4ODkyMGQ5ZWZhOWYzOCByZWxlYXNlMjYtbWFpbnQKKzcwMDk2IGMyYThhNTJiODExZGM4YzVkOTg4YjdhYzY3NmQ5MWJiYzQyMjUxYzQgcHkzaworNzAwOTcgZGUxMTNiNmQyNmQzMjc0MDFjMzg3ODJjY2NjOGE1M2Y4ZWM4ZjQxYiByZWxlYXNlMzAtbWFpbnQKKzcwMDk4IGQ1ZjEzNGEzYTgxNmM3MDkzMWYxNTZjMjcwNzliNzBhMzJmYWI5NmYgcHkzaworNzAwOTkgOGUwM2JmZTdlZjMzMWE5YTM5NDQyOGM3ZjNiODQyODMwM2EzMDc1YiBweTNrCis3MDEwMSBjOTEwZjZlM2JiMjg3MTk4MWNiYTM4YjQyNTkwMjk0NjcxZDgwYzIzIHB5M2sKKzcwMTAyIGNhODdjNDcwN2JmZGRkODczOTBlYTE4MGVjM2JkMjA3NjBiYzlhYTUgcHkzaworNzAxMDQgODVhY2E0M2RhYmM0OTMwMzJjYzk0MjQ1NTYyNGNkNGI4YjdmMmEzOSBweTNrCis3MDEwNSBkNTEzY2UyOTFmYmQyMmZhODZiYjFhOGIxZTg2OTEzNWU1Mjc4YmM4IHB5M2sKKzcwMTA2IGRiMjlhM2ZiY2JhMGZkZmZkOTVhZWE5ODRmYWNiMDI0OTYxZWU2MmMgcHkzaworNzAxMDcgODcxMTVjNzI3MTAyYjQyMDU2MmNkYmU4YTg3NGFkYzA0YzYxNTViZiBsZWdhY3ktdHJ1bmsKKzcwMTA4IDJkNjlkMGQzYTljYTVlM2YwNjQ5MTU4NjUwNGJiMTgwNzI5ODIxMWEgcmVsZWFzZTI2LW1haW50Cis3MDEwOSA5YzU2ZWIxN2YzMzRmY2Y5NThmNDZmMGFkNmM0OTZlMTNlMzNlOGExIHB5M2sKKzcwMTEwIDRkYTVmMGRlZDM2MjJlMTJlMTZiOWFiOGZhNjRhYzk4MDBjYzY5YzUgcmVsZWFzZTMwLW1haW50Cis3MDExMSAxMTZkOTBlZjMxNjQ5NDk0OTk0MjViYjhjMzU2MDcxNDVlMmY3MmE1IHB5M2sKKzcwMTEyIDM3NGE5YWU1ZGQwZjQyYTRjNDQ2Y2NmNWQyOTliODg4MzJiZjY5MzYgaW8tYworNzAxMTMgOGZlMjk4OGNmNTUwOTJjODMyYTgwZGViYmZjZWVkODBjOWYzOGE2NSBweTNrCis3MDExNCA3YjE3NDFkNjgwOWU4OTYzYjVhODg4OGE3MjhjYTFiZmVmNjk5YzM0IHB5M2sKKzcwMTE1IDA0NTg3MzBlYjAzOGI5N2ZmNjI4Y2M2NWRjNjQxYTVjNzI2YjA1MDQgaW8tYworNzAxMTYgMTdlYTE4ZGZjYWE1NWQyZmE2Y2U0NTgwMDk3NmFiMTMzMzExZDA5NyBweTNrCis3MDExNyBkMzQyYTcyNWIyZDU4OThiZTM1Yjc1NTQ4ZWZjOTEwMWI3YzVlZmZmIHB5M2sKKzcwMTE4IDAzODMyMzU2YzA5Njc0NDhlMTg5ODE2Mjg5ODI2OGUxMDk1Zjg3NTMgcHkzaworNzAxMTkgNmMwOGJmZTc4ZmZmZWIyYjY1NDdhZjQ4NTkyYTNjMDNlOGNhY2FmMCBsZWdhY3ktdHJ1bmsKKzcwMTIwIDRhNGRhOTY4ZGUyYTk4Yzg3NTZmOWVhMmE5NDlmZDM1ZjAzM2Y3ZmYgbGVnYWN5LXRydW5rCis3MDEyMSAwYzYzNTU3NGIxMzllMGNjZGEyODMyOTM4OTI5MDdmNTFhZmI4MTY0IGxlZ2FjeS10cnVuaworNzAxMjIgNmIxYjJlN2EwNmU5N2Q1OWY0Y2UzZWI2ZWUyNmQ0ZmFhMjg4NWZkOCBsZWdhY3ktdHJ1bmsKKzcwMTIzIGIzNzNiOTk2MmMzNWFjMmQ0MDQ1MWIzODg0YWMyYTJhN2MzYTRhOTcgbGVnYWN5LXRydW5rCis3MDEyNCA0ZDA3OGQ1MjJmMjU5NzUyZDdhNjE3MjdhYzhjY2M4MGI5ZDg3MmRkIHB5M2sKKzcwMTI1IGZkMDhlOTQ0OWE0Mzg4M2Q0ZDRkMGM2NTAwNzNiYzY2YmFiZDQ1OGYgcHkzaworNzAxMjYgOGY3YmU0ODc3YTYwNmYwMGE5NWE1ZmQ1MzkxNTlmMzFjMjM5N2QzNiBsZWdhY3ktdHJ1bmsKKzcwMTI3IGU4YWY0ZTI0ZjA4ZjhkNGQ2ZjVmY2FmYTIyN2NiZTc3ZWI1M2Q1NTggcHkzaworNzAxMjggMjU5NmRkZGJkMDU3YjdkZjAyZjVmMDczOTI4NWUwMjY3NDg4MTExMCBweTNrCis3MDEyOSA1YWQ4OGI5MTkzMThhNTQ1MzUzOGY3YmY5YmI3ZTJkZjg2MjNkYTU5IHB5M2sKKzcwMTMwIDBhNjA5YmE1NGY1YzY1OTQ1YzRmOTlmODY0ZTdiZmU5MTExOTNhMWMgcHkzaworNzAxMzEgOTgyNTAyODI2Zjc4OTg3NjZlMjlkZGU2MDVjZTM0MWIzOTEwNWI5NSBsZWdhY3ktdHJ1bmsKKzcwMTMyIGFlNzFkZjkzOTRkYWM4YmNkMDIxNWUwNjA0ZTY2MGE3ZmE1NGVkMzYgbGVnYWN5LXRydW5rCis3MDEzMyAxMTc3MjU4NmJjNDM5N2VkNjg1ZWY0Y2VhZWFiY2U4ZTZmMjIxOGQwIGlvLWMKKzcwMTM0IDczOGZhZDM4YTRiZmU1YjYyY2FjODE4NzkxMzljMGFmODlhMzk5YjYgcHkzaworNzAxMzUgNWI0ZThmNGU5Y2JkNjJlOThkNWNkZDRkY2ZkNmY4MTk0ZDU3MWYxZSBpby1jCis3MDEzNiA2MWQyMGU5MTlhOWU2NmY5NTMzNTJiNGFmMmViNmYyMmU2YzI1NWMyIGxlZ2FjeS10cnVuaworNzAxMzcgODAyMzNkZjI0ZjhjYWQ1YWIyZWViZWQ0MjRhMjFkZTU5NDY0YWFlMiBsZWdhY3ktdHJ1bmsKKzcwMTM4IDkyMGE0MWQ1ODFiNTllZWYzNDM3NmQwYmE3NWE3ZWRiZGJmNThmNWIgcHkzaworNzAxMzkgZTY3M2Y5MzkyNDAyZDc1NTQ3NzY3YmU0MmJiNmI3NTRlNTk3ZDRiNiBweTNrCis3MDE0MCBjOTZlMWFiNGRhYjNhYTA1Mzg3YzViOTk4NzdlZmM3OWRiODUzOTMyIGlvLWMKKzcwMTQxIDM4YWE2ZjM2Y2U0ZmMxMDFjMWMwOWM3ODZiZmNlZTIwMzg2NDBlMzYgcHkzaworNzAxNDIgZDc3MTcyZWI2ZmU3ODlkMzNiOTE1YzNlYTJkZmRlMzg4MTBhOWI4ZSBweTNrCis3MDE0MyAzYjg4NWI5MmFmNmNkY2Q0MTgyNGY5NjU5MmEwNTc5ZDg5ZmJmMzk4IHB5M2sKKzcwMTQ0IDc3ZWZiYjNjMzExMGMwMjk3NzRmN2ZkN2NlY2VmM2NmOThkN2EyN2QgcHkzaworNzAxNDUgMDFmODNiYjRhMWM0ZDJiZjk3NmNlMTI2NGU1ZjhlM2M1NWQ1NmRhNSBsZWdhY3ktdHJ1bmsKKzcwMTQ2IGY2MzJhNGU2ZWUzMTQyY2ZkYWI3MjBhYjU4ZTM2MmNhZjQzZDRjNWQgcmVsZWFzZTMwLW1haW50Cis3MDE0NyA3MTExODQ1YzJmNWUzYTIyZTUxOTBkMjg0ZjYwOGZiY2U1ZDUyM2I3IHJlbGVhc2UyNi1tYWludAorNzAxNDggN2Q2OTA3MGEzZDc4M2RlYjBmMTI0MDFlMGU1OGNiNjAyZWFmOGUxZiBweTNrCis3MDE0OSA3Nzg1OTljZTgxYTE0YzY4YTZjN2RiZDk1YmIwZTc4ZjZhMzhjNzg5IGxlZ2FjeS10cnVuaworNzAxNTAgOGEzZGFkY2NkMjA3NTNhYWE0ODU3ZGVmMjM2MzM4M2YyMmRkZjkxMCBweTNrCis3MDE1MSA3MWRhZTIyZTE4MWQ5ODNlMjk0Y2FjZjhiMjhjNzliYjYwZGI5MDQzIHB5M2sKKzcwMTUyIDMwNDlhYzE3ZTI1NmJiMzBiNzlmMTEzNGEzN2I2NTdlMzBkM2I3OGIgcHkzaworNzAxNTMgNThkYjRkZWI3YWIxNmQ3N2RhMDliMjA1NDQyNWIxZWViODQxZGRhOSBsZWdhY3ktdHJ1bmsKKzcwMTU0IGViZTEwODEwZWJlZGVjYmZmZWM3OTY4Y2VlZjkxZWRmYzk2Njg1MzEgcHkzaworNzAxNTUgMDE1OWFjMmJjNzg3YzQ5OTgzNWRkNzg0MzBkMzc2MjYwMDc3MmJjNSBweTNrCis3MDE1NiBlMzdiYjMwMjU1ZjMxMTczNjAzOTljYzQwYmFiY2E3ZjcyYTdlM2VjIHB5M2sKKzcwMTU3IDQ1NjNlNjEyMDU0NGMwNzgxZjhlZjQ5YjZmMDE0OGMyNWI1Njg1MjMgcHkzaworNzAxNTggMTk0ZmQ0MDE5MjJlNjA3ZGI5MTE3OGM3Njk2MzY5NzBiOWQyNmZhMyByZWxlYXNlMzAtbWFpbnQKKzcwMTU5IGY4NjcwYTdkYTIyOTZiMDBiZTlhNWQ3YTc5Njg1OTEyMTJjZGE4YmUgcHkzaworNzAxNjAgNzY4YWVlYTJiYzBmZGJhMzczZDA1MWUzZjQ5NjkzZTIwY2ZiZGNmMSBweTNrCis3MDE2MSA1NWYzYjg4MWNlZDI2MzcxYzY5NWZlMGM1NTk3NmJlMmRiMDNiZWQ4IHB5M2sKKzcwMTYyIDBhNTMzZGMxZGViMjI3NzI0OWUxYWNiNGJjNDEzNGFhN2Y1Yjg0ODQgcHkzaworNzAxNjMgNzZhNTc5YjZiYWRlOTVkMWVhMTk0ZDRmNThhODI4MjA3ZmZiZGU5NSBweTNrCis3MDE2NiAwYzAyODY4NWI0NGMzYmI0YTEwYjE2MTJlYzBiMDg5MDYwNWZiYzljIGxlZ2FjeS10cnVuaworNzAxNjcgMjQwMjMxYWM3OWNmZDAxNzFkMDg3NTgyNmYwNmMyNzJmN2MxYzBkZCBsZWdhY3ktdHJ1bmsKKzcwMTY4IGViMmMzNWRkMjI1YWIzNDQzOTgyZDkyNjdlYzgwNmI5NDg1N2ViYTAgcmVsZWFzZTI2LW1haW50Cis3MDE2OSBmYTljYzRkNDE4NWY3ZmQyYzlkMTI0OWRmMDdmM2RlYmFhMzVjMWJkIGxlZ2FjeS10cnVuaworNzAxNzAgY2UyYjc1OWRjN2YzNWYxNmZiNmQyNGU4MzQ3YTFhOWFmYmJjMjc2YSByZWxlYXNlMjYtbWFpbnQKKzcwMTcxIDRkMGQ2MTVkMzc4NGMyZDE4NDdjNDM1ZDQyMjE3OGM3M2EwNGM5NmEgbGVnYWN5LXRydW5rCis3MDE3MiAyNjI5YzQ3ZmE2YmNlNGY0ODdjYzM4NzgwN2FmYWFhMTI4YjBiMWQ5IGxlZ2FjeS10cnVuaworNzAxNzMgYzhhOGVjODdmZjFmMmYzZTMyNzIyYzEwMGU0MzU3M2RhNDNiYTczMSByZWxlYXNlMjYtbWFpbnQKKzcwMTc0IDQxZTQwNzI4NjYxMDVkNzk0OTkwZmI4NTM5NjNlNDQ1MTE5MThjMjcgcHkzaworNzAxNzUgMzBlZWFkYzQ2NTIwZmJlNDY2YWY2NGZmMzdjMTU2MjNiM2JmNWNiMSByZWxlYXNlMzAtbWFpbnQKKzcwMTc2IDM5ZTlhMjBiN2Q3ZjUwNTRlYmVkOWNiMjQ0OWE2MWY1YWJmNmRlZWUgbGVnYWN5LXRydW5rCis3MDE3NyBkYzNkMjQ4MjRiNjAyN2E3Y2YzNzU3YTJmNmI4OTlmMmU0YjRiZjMzIHJlbGVhc2UyNi1tYWludAorNzAxNzggMjc2MjQ0ZmZjYWVlZTFjZmE0NjJhYTUwZmVmZGRmZjVmNjZiZTg4ZiBsZWdhY3ktdHJ1bmsKKzcwMTc5IDVmMjQ1YzcwMGJiYjE1MGE1YWFiNTJjYTRiZmRiZTE2YjVjZDZhY2UgcHkzaworNzAxODAgNGI1NDMxZmIyZTkyMDIxZGI4ZDQyODY0ZTIxMDliMDYyOWEzMTc5NCByZWxlYXNlMzAtbWFpbnQKKzcwMTgxIGZiYzc3NTk3NjNiMmM4YzBiZDY3MzdhMWQzNGNhMWIxMDk3MGVjMWUgcHkzaworNzAxODIgZWVhYTg3ZmMzYmZkMGNiNzVjNzdlOWZlMzI2MTUwNGZiMTI2ZjkwMCByZWxlYXNlMzAtbWFpbnQKKzcwMTgzIDc1NzkyOTI4ZmNlODliY2ExZThjNTAxZGNhNzczNzBhNGVmOWExZjEgbGVnYWN5LXRydW5rCis3MDE4NCAzM2U5YTE0NWZkMzgzNTdlZDQyYTUyZWJmNTBjYjJlOTlhNjNkODYwIHB5M2sKKzcwMTg1IDk5YjY4ZDdkN2E4OTJmMjk5YTIwNjQxYmRjNzM0N2IwMjg3Mzg0OTggcHkzaworNzAxODYgZmRkZWU1NDU2MDEzYWMwMWU1ZmY1OWZiNmVmNWVmOTA5MWVhZTk5OCBweTNrCis3MDE4NyAxZmMxYzQxZDEzNmY0YmNkODk2ZmEwY2FjNWIyMzM3NzVlZWM2ZDVkIHB5M2sKKzcwMTg4IGY0OGFmNzdlZTg0ZTIwODI4YmQ1M2I2NmEyYWIwZjU3Y2Y0ZDFmZjMgbGVnYWN5LXRydW5rCis3MDE4OSA3OWVhMDY2NzYwNGIzNzIyZjJkMmNkMTZhMGYwOTk2MWZmNzgwMmQ4IGxlZ2FjeS10cnVuaworNzAxOTAgY2RkM2Y2MGQ5OTc0ZjQ0NzY5Y2Y3OWRjNTk3NGE5OGJhZDMxNmRhYyByZWxlYXNlMjYtbWFpbnQKKzcwMTkxIDI3NWJiZWUxNDZhYjA1YmY0ODdmMDliNGFjYjM0MTljNmFmMzM3OTEgcHkzaworNzAxOTIgYThiOWFhMDI4ODk5YmU5NTkwYmEwYjBmODM3ZTIxNGZiYzRhOTA2MSByZWxlYXNlMzAtbWFpbnQKKzcwMTkzIDljZDM1NWE3OTg0NTZmODA4MzdiZDg0YjQzMzI4ODRmZTNmZDVmODIgbGVnYWN5LXRydW5rCis3MDE5NCBkMDFkYzg0N2I1ODYyMWMyZTU0NWQ5Y2M3NDQzMjE5Zjk4ZDE2ODYzIHJlbGVhc2UyNi1tYWludAorNzAxOTUgN2IyNzk2NzhhNmExZGI0NGEwNzhhODNiNDQ1ZjlkZjMxNzIwNDc1NCBweTNrCis3MDE5NiAyNjk4NDQ1MGM3ZTlhODE4OWE4YmVmMDcxMGU5Nzk1NGQwMGMwOWM0IHJlbGVhc2UzMC1tYWludAorNzAxOTcgYWZlZmI3NzE2NGFkM2JmMmRjMTc0ZTA3ZjZkMGE5ZTE5NGI3MDc4MiBsZWdhY3ktdHJ1bmsKKzcwMTk4IDc3NTgyOWNmMDBkMmFiZWM0YjRjZGI1NjE5NTIzMTQ3MjBkYzRjYTggcHkzaworNzAxOTkgOGRiZDFiOTZmYTZiNjkwZmQ3ZGMzOTE1ZDEwYmUyYjVmNzkxNzVkOSByZWxlYXNlMjUtbWFpbnQKKzcwMjAwIGM3NzIzNjI2ZTRlMTA2ODA4MzdhNjNjZTI0YzA4MGRmMmUzZjQ0YzUgcmVsZWFzZTI1LW1haW50Cis3MDIwMSAxZjlkZTUzOTgzYzE1NTEzMTgwZTEzNDY3NTcyZTQ2NWExZTNiZDY4IHB5M2sKKzcwMjAyIGJlYmM0ZWVmOWU4OTNjNDAxOTJjOGFlYTJlZGM4OTY2YTE3OWQxZDUgcHkzaworNzAyMDMgOWZhNzk0OTY0MWQzMDA5YmI2MTk4NWFiZWNmZTkyYjNhYjQ3ZjA2NyBweTNrCis3MDIwNCA0YTNiNDRjMjFiNGYzZGE3YzgyZDViNTMyMWZhNTZhMzE4NmZhOGRmIHJlbGVhc2UzMC1tYWludAorNzAyMDUgM2I5ZjVmYThiY2NkOTFkMmQzZDIxYTRjN2UxNjNiYzAzY2E1ODA0OSBweTNrCis3MDIwNyBjYWJiMGRkY2I4OGU0YTdlMzEwZWZhNDZlNDdkZDEyMjM1MzJhZDY3IHJlbGVhc2UzMC1tYWludAorNzAyMDggMGY2Zjc4N2YxMDNiMjhiNDMyMzU4NmQxNzM0NDYxNDM2MjgzMTEzNiBweTNrCis3MDIwOSBhZWY1Y2ZlNzMzNThkNDhmZmRhZDkyMmIzMWIwMGMwYWY4NzI4NmU3IHB5M2sKKzcwMjEwIGY1YjgxYmU1OTE1OTQ2ZTNmOTIyNGQ2ZDliYjZhYmFjOTVlZGY3YWUgcHkzaworNzAyMTEgOTBhNjY5MTVjYTkxOTcwMGEyNDk5NWE2NjBjNjYwOWVmNzZmMmZlYyBweTNrCis3MDIxMiA0NjUwZWNkZmNmYjY0MjM3ZDI5YzIyOTI0MzgzMmQ0YmU4MTI5ZGQzIGxlZ2FjeS10cnVuaworNzAyMTMgMmIyYjUxZjMwNDA3OTk3N2ZhMTg5NWU3MjMwYzhiN2RjMGIwMjEzNiByZWxlYXNlMjYtbWFpbnQKKzcwMjE0IGZjYzYyMTFlMGQ3MTA1ZTNmN2JiOTNjYTdhMTZmMTk3N2FiNDE1YTggcHkzaworNzAyMTUgNmYwZDIxMTNkZDIyMjYwMGVmOTBmZTQ0NThlZGMyZmRmOGMwMWY5NSByZWxlYXNlMzAtbWFpbnQKKzcwMjE2IGE5OWZhNzY3MTNmYzY2ODljZWMwNjU0NTY5MjMyY2Q1YzI5OWRiM2YgcHkzaworNzAyMTcgYmJiYzk3NDZjNzBkYzQwNmI5ZTA4ZWUzYTcwNTUyZjhjY2QxZDhjMiByZWxlYXNlMzAtbWFpbnQKKzcwMjE4IDQzM2UxMTZjMzM1ZGJiMmVjYzg2MzA1MDU5YTk2OGM4OTI2MjA0ZDEgbGVnYWN5LXRydW5rCis3MDIxOSAxMTQ4NTBmNzNlM2E1ZWJlNzE1ZTI1ZmYyZTFhMTU3YTk1NjVkYjVmIGxlZ2FjeS10cnVuaworNzAyMjAgNGU3NDQ5MzQ4YzFhNGQ1ZGUxMTM2ZDg0YmQxOGI1YzUyN2VlOTI5ZCByZWxlYXNlMjYtbWFpbnQKKzcwMjIxIDAzYzgwZTA3NDJjMzQ0MDhiMDFmNTE5NWMzNGU5MjY3OTc4YjRiZTMgcHkzaworNzAyMjIgMTA2Njc3NmUyODIwMzYyNGNjMTkyZDEzNzI5OTc5YjhiZTI2NWNhNCByZWxlYXNlMzAtbWFpbnQKKzcwMjIzIGM3OWVjNjNlNmMwOGVkM2U5NDZhMzQyZGJlMTI2OTQ4ZDUwMzAzNjQgbGVnYWN5LXRydW5rCis3MDIyNCBiOWNkNjkzOTI2NjY3ZDE4NjRkOWUyZTc3YmNiZDEwMzk3ZWQ2YzJhIHJlbGVhc2UyNi1tYWludAorNzAyMjUgNmRiYjJjMWMwOTAwOWQ2NjIyMGVlNmQyMDM5MjBhYzYzMGQ3ZGIwZSBweTNrCis3MDIyNiBmNTE0NWFiZDRiYTI2YjEwYTk4Y2Q2MjEzODY4ZjRkM2VlM2ZhNTI2IHJlbGVhc2UzMC1tYWludAorNzAyMjcgZTllNDZhZGU2MWM3ODY4NDk3ZDNmZjI4N2Y1MDRjYWUzNzZmMDFkMiBweTNrCis3MDIyOCBhNWUzMmMwNmUxNGIxMjg3YzhlYzY5MjQ2YTU5N2Q1YTZmYWFmYWNmIHJlbGVhc2UzMC1tYWludAorNzAyMjkgYTg5ZmRiYjIzYTRhNzg1NmM3YzZkMjIzZjg4YmZmMGFmOWExYTNkMCBweTNrCis3MDIzMCBiYzFjZTM2ODk4NmU0NWIxZmFmOTZmOTM5OTVkZjQ2YmNkNzVlN2I4IHB5M2sKKzcwMjMxIDM2ZDdmYWE1ZmY5NjE0ZTYyN2RmMGJkZDVjNjdjOGRiZjE3NTgwNDUgcHkzaworNzAyMzIgYWJhNDQwNGY1ZDlmZjUxOWVlZDliZjMwYTBlNzE2ZjE2MTA5NTJiNSBweTNrCis3MDIzMyBiZmMyZmE0Yzg0NDQ5YjYxZDlkYjFhMzdmYjZiNzc0M2JhNTg3MzA0IHB5M2sKKzcwMjM0IGY3YjA2YTk2NTliODUzMDVhODFhYjMwNThiZGRmYmVkZDU0ZDhmYzkgcHkzaworNzAyMzUgNDM3MDQ0ZTYyZDNkM2JkNDk0NjUyNDMwYTUwZjY5OTdhYzA4OWExYyBsZWdhY3ktdHJ1bmsKKzcwMjQ0IDlmMmY4NmRmNWIyNjQ4Y2E2OWExYjc1OWFmZDc4ZjljOWQ2Mjg4NjIgbGVnYWN5LXRydW5rCis3MDI0NSA1Njk4M2NmZGY1ZDRlMmU4ZDk4ZGFlMmEwOGNhMTVkYzM2ODczZGQ2IHB5M2sKKzcwMjQ2IGRjZTI4YzZiOWU4NWEyOGQ4ZGEyYzllMGE4ZDZhOTcwMGIwOTEwMzkgcHkzaworNzAyNDcgMjAzM2Q0NWE1Yjk5NjgxZTE0MGRmYTNjNDE0YTQ5NDEwNDJhY2E4ZSBweTNrCis3MDI0OCA4OTVmNjhlY2IwNTVjM2YxNTY2NTYwMGE1MzE5NDVjMDdjNTRjZWZkIHB5M2sKKzcwMjQ5IDgzNmU0ZGFkZjZkMmNjNjViOGQwZjQ1NmU5NDJiMTE1MTM0OTJmYjEgcHkzaworNzAyNTEgMTA0NWZkNjNmYTczMzVmZjkxNWM1NmRiODU0NWE2YzhlNDNlYjIxZCBweTNrCis3MDI1MiBjZjA5M2E3NjMwNTMzY2ZiZGE0NzhjZmVlNzUyYjFlZTUzNjFlMjZiIHB5M2sKKzcwMjUzIDY1MzcxZGY0MWFjYTYyNDFlZTg4MTMwNTRiMGI3ZTZjNDU5ODcxZmMgcHkzaworNzAyNTQgNTU0MDc0OWEyOWJiODczMDZhYzVmOTNmODhjOTY0YWFlMzIxNTAyZSBweTNrCis3MDI1NSA3MGRlY2I1ODBkZDkxZjBjYTczZGYxMmE2ZTA0Njk2ZWM0YTQyNjVmIHB5M2sKKzcwMjU2IGMwNmYwMmE1ZTk2MjdiMTkwODVmNjYzZTUxODk4ODRmNTA1NzUyNDYgcHkzaworNzAyNTkgYmMwMmRlMjc4NzQ5MDNhYmQ5MzBhNDQxNmNlZjAwNmUyYzM5YjExYSBweTNrCis3MDI2MCBiOWJkMmUzZjc5YmE4YTY1ODUyOTk2NjJhNTQ3ZDA1NmZlZWE2YjBmIHB5M2sKKzcwMjYxIDU5ODI1M2RiMWY1ZDExMmMzODIzZTg0ZTBiZGQzMjViYWE1YWJkNjIgbGVnYWN5LXRydW5rCis3MDI2MiA0ZDdmNjNhYzlkMjQ2NTg4OGFlZGVjNDYwOWU2NjkwN2ZhNWUyMWIyIHB5M2sKKzcwMjYzIGIxZWNmZjVlMjcwNDA0MjJjMzZhNjk5ODIyNTcwNDY5MmU5MWJhZGYgcmVsZWFzZTI2LW1haW50Cis3MDI2NCA1MDM5NzZjZTMzNzNlNTg5YmMxMGJjYTAzODI2MGU3YzQ5MWQxNDIxIHJlbGVhc2UzMC1tYWludAorNzAyNjUgZjQ2N2Q0N2Y2ZGU1MmFkZjYzZmQ0ZDFkMjE1YWIyYWFiZjZlYzY0ZiBweTNrCis3MDI2NiA3ZmNiNzg1ZWMwZjUyN2Q0OGIyMGRjYjE4ZGE1ZWE5MWQyY2VmNTBmIHJlbGVhc2UzMC1tYWludAorNzAyNjcgOTdhYzgzZTQ1MjcwNjFiOTFjYTBjN2RmZGE3NjU2MDQ4ZDM3MmEzMCBsZWdhY3ktdHJ1bmsKKzcwMjY4IDU0NTdlNDZkOWRmZDQ2MjlhNjgxNTU3ZDA2OWMzYWFhMzY3MWQxODUgcmVsZWFzZTI2LW1haW50Cis3MDI2OSBjMTU0MjNmOWZhYzM1MGYzOTI4YTE2OWI4ZjAwNWU3MzUwYzQxOTIwIHB5M2sKKzcwMjcwIDNlNjc2YmYyODMxMDNlZTAxNmY3Yzk4MTgzN2U2OWI2ZGFlNDIzNTcgcmVsZWFzZTMwLW1haW50Cis3MDI3MSA2MzQ1NmQyYmY1YTA4OTE3YzkxMWMzOTYxYTQ2MTU2ZTcyOWI2MTBkIGxlZ2FjeS10cnVuaworNzAyNzIgNWM5MWE2ZTE4NTY0ZjA0ZjMzNGQ2YjE2ZTcwZGFmN2YzOTYyNjMyOCByZWxlYXNlMjYtbWFpbnQKKzcwMjczIGJjZmI3ZDY3OTE2MTU5YmNmYTQ1NzUyYTQ0ZjZlYmNhM2MxMDdmMTUgbGVnYWN5LXRydW5rCis3MDI3NCA3ZjcwNzQ5MjhjNjgxNDJkODA1MjY3NDViOWE1NWY3YjU3OTBlZDgzIHB5M2sKKzcwMjc1IDFhODM5MWNjNGI0NGNkNjZlYTk4NDI1NWExYjBiYTFhNTMxZDkzYTggbGVnYWN5LXRydW5rCis3MDI4MCA3OWZlMDdlMTMzODhlYzdhODQ4Y2EyMmU0M2Y1NWU1Mjc5ZTZiM2FkIHB5M2sKKzcwMjgxIDQyNTUzZTM1ZjhlNGI0OTY2NWI5YjA0ZTFlZTg2ODRlZTkwNzNlMGUgbGVnYWN5LXRydW5rCis3MDI4MiAzYjQzNTc3ZTE5NzFjOGMxMzgwYWYwY2IyYTE3YjM5YWRmOWM3YTQyIHB5M2sKKzcwMjgzIDdjYmQ0NGMyMDNjZjk1Y2FhNzYwNGJmZmM1NDVjMmVlYjliNzEwN2EgcHkzaworNzAyODQgOGVkM2NiYWMxNmJmNTY1M2ZhNDJjMzIyOGI3OWFhOWM0ZDdkYTlmYyByZWxlYXNlMzAtbWFpbnQKKzcwMjg1IGRhYjQ1OTcxYzU2ODg0MWQyMzg1MDg3NmFmNDFmNDEwZTg4MjBjMGUgcmVsZWFzZTMwLW1haW50Cis3MDI4NiBmODA0YjhhMjUxMTVlN2IyMWVhMzE0MDNmM2ZhMDM2OTBhZjdhNDNiIGxlZ2FjeS10cnVuaworNzAyODcgYWUzMDA2YzdkNWIwMTk5YzU2ZjgwZTY0ZTQ2ZTcxYWI3ZDVkY2JmZCBweTNrCis3MDI4OCA4OWQ4YWYyNTkzNTMyNzRlNzcwMTAxOWJkYTk1MTA2Y2YxOTYxMDM4IHJlbGVhc2UzMC1tYWludAorNzAyODkgNTYzYjRmODgzZWQ4OGIxNjYyNzg3Y2I5MTA1ZDBjNDIzN2FlZGM5ZCByZWxlYXNlMjYtbWFpbnQKKzcwMjkwIDU0Y2ZhY2FjNmQwYTE1NWQxOGVkOGZjNjNhZTg0N2M0M2Q3NzQxM2YgbGVnYWN5LXRydW5rCis3MDI5MSAwMzA4MGZhMDhkZmU3Y2NkZjE1YmNlMTViNGM3MGJkYzE0NmRmYzMwIHB5M2sKKzcwMjkyIDViYzlmNmNjNTYxZTA0MTdhNDMzODQ5ZjQ1MGFlYTNkODc4NTc5YzMgbGVnYWN5LXRydW5rCis3MDI5MyA0ZmRkY2Q0ZThlYjUxOTg2M2NhMGE2NGEzMzRkMzUxMTJiMmViNTY3IGxlZ2FjeS10cnVuaworNzAyOTQgYWZkNzExOGM4Y2NmYjQwY2E1NmU3ZDNmMTE1YjBiNGNhZGJjNDYxZSBweTNrCis3MDI5NSBkY2JmZmU5MThhNmY4ZWM2ZWQ3ZmExNThhZDljYmMyNGFiNWFlMGYyIGxlZ2FjeS10cnVuaworNzAyOTYgYWI3YTcyMTVlNDYzNjk1MGYwYWNkODk5OWEzYzc1OTUzZmIxODFmZSBsZWdhY3ktdHJ1bmsKKzcwMjk3IGM1ZTIzYjljZWRjYzk5NzQwMzc2ODA0M2Y0ZGI2ZjU0OTBhNDE3NTYgcHkzaworNzAyOTggYjA5MTFiNWEwMDJlZDg0MWI2Y2YyNWNkODA0ZTllODQyYTA1OGMwZSBsZWdhY3ktdHJ1bmsKKzcwMjk5IDIxODUwZDZkNWI0ZDQwYTk2ZWMyODg4NjA0YWNkMzk5ODFiOGZlZTggcHkzaworNzAzMDAgMDM4MjkwMWM2ZWJkMjc5NDYxMTczNmFmZWNmOGE3YTEzOGNmNTkxZCBsZWdhY3ktdHJ1bmsKKzcwMzAxIDNjMDRkMzRjMDQ5NzE3Y2U4YmNkZTljM2I2N2Q5MzU1NWRjNDM0MzkgcmVsZWFzZTI2LW1haW50Cis3MDMwMiA0MzIyZTZkZDJhNmM5ZWQ2NDgyZTE5OWM0YWMzMzY4MGUzZDgzNzA2IHJlbGVhc2UyNi1tYWludAorNzAzMDMgMGM3ZGFjN2UyZmIwODExMmMzNzAxNzVkMWY3OTMwYTVlMjgyZGQ2MiBweTNrCis3MDMwNSBhNjBmYWNjOWY3Y2Y1NTViMjU0YzBjZjc1ODJmYzUwODlkMzA1NzNmIGxlZ2FjeS10cnVuaworNzAzMDYgZjUxYTI4YjEwNDI2NTE0NTEwZTMzZTViZGZjNTAyYWIwYmVmMzY5ZCBweTNrCis3MDMwNyBjYmNiMjE0MWFlZTU5ZTg0Yjk3ZGY5ZmE4ZWRhZjk4MzUxYzcwM2QxIHB5M2sKKzcwMzA4IDNlY2Y2YzNjYzgxZTBlYjdmZGY0NWY0NTY1OTdhM2RmYzNkM2IzN2UgbGVnYWN5LXRydW5rCis3MDMwOSA4YjBiOWVlNThmNjdiODFhYWJlZGNhZTMxMmRmNjU4OTE2OTg4NWEyIHJlbGVhc2UyNi1tYWludAorNzAzMTAgNDhmZTYyMzE3MWE0MGQ1M2M2ZjI2MTY0NWQxNTFmN2Y1NDc5MzVlMiBweTNrCis3MDMxMSA4NzU4ODFmZjY5YTRkNTQ4YWNjOTZjY2U3MWRkYWIzYzg1MGYyZmU4IHJlbGVhc2UzMC1tYWludAorNzAzMTUgYmViNzg4MjkxYzdhMTZhNmYzNzllZDhlYTIwMDBjMDhlZTg2MmViNSBsZWdhY3ktdHJ1bmsKKzcwMzE2IDVkZmM0NWJkYTk2ZDA5NTBjZTI0ZDllNmNhOTg2MjE1NTExMmFlZGQgcHkzaworNzAzMTcgMzQwMGNiMTBkOWNmN2Q0NjFlZWYzZDFhOGFmMDhmYWJmNjdlN2RlMyBweTNrCis3MDMxOCAxZWI1N2JkZGZiMzhiZTlkNjk5OGZlZTBjOTk1ZTQ3MjBkYmY5ODNjIHJlbGVhc2UzMC1tYWludAorNzAzMTkgMWQ4ZTRiY2VjZjJhYWE5NDEzYTYzMGFkNTcxMDkzYTBiYjM4NGViNCBsZWdhY3ktdHJ1bmsKKzcwMzIwIGJmNjdlNWE4OTNmOGVjMGI1NDZkYTI3MTE1MTBhODYwMzI1NWZhNmMgcmVsZWFzZTI2LW1haW50Cis3MDMzMSA2YjAyNGZmNWI1OGY2YjJkMmY0NzBlMWJkYjJmNzU1YmEwYTRjZmQ3IHB5M2sKKzcwMzMyIDJlOGU4OTdhMTI0NDdmMWMyYWY0M2JmZTQ2YTkyYzAwN2UxOGU2YTkgcHkzaworNzAzMzMgMWE4YmJjNWZiM2VmYzI1Y2NiZWE3ODQwNzI5MTRmYTM2YWVhOGQyYyBweTNrCis3MDMzNSBmMTg4ZGQ2ODYyMGU2YTRhZGIxODVhZDcxYWUxYTAzMmE2OGNlMjk4IHB5M2sKKzcwMzM2IDA0YTViNjQzODUyNjRlOTYzOGMzZTNiNDQzZTljMGM4ZmI3MGE5NDUgcHkzaworNzAzNDIgMGU4ODU4MmFhM2NlNzA0YTIwN2QyNjMyMzhhN2VlNjdjNjc5ZjkzOCBsZWdhY3ktdHJ1bmsKKzcwMzQzIGU1ZTY0YTBjNGFhMmMzMWU1MzdmZDEzOWY5ZWZkYWZiYWVhYWU4YzggcHkzaworNzAzNDQgYjM2M2UyOTc1NmZmMjU4NjNjOTg5NzFkOWJiZjVhMGJlOTYyODk5ZSBweTNrCis3MDM0NiA0ODA0ODNjM2Q5M2UzMTM4ZjcxZTA3YTVhY2VhNzhiOWRmODQ0ZTIzIHJlbGVhc2UyNi1tYWludAorNzAzNDcgMjI3NDdlODc0ZjQ2YjkwNTA2YzZkYmQ2M2Y3ZGM1NmRlZjYzMTMxZiByZWxlYXNlMzAtbWFpbnQKKzcwMzQ4IDYzMmFhNTY4NDc0Yzk4NGYxMjZmOTBjOTNkZTAzOWFjZTRkZDg4YTkgcmVsZWFzZTI2LW1haW50Cis3MDM0OSA4YjEyOGUwNWVjNzQ1NTlkODIxNTBhNjg1ZGFlN2E1OGIxNDgwODUxIHB5M2sKKzcwMzUwIDc5MGNiOThmOGI0ZmJmMDVkODgyZjUzNGRmMjAwMmM0OWVkNmU2MjkgcmVsZWFzZTMwLW1haW50Cis3MDM1MiBhNTk5NDc1YjY5YzMwMDgwMWJiOWExODJlMWY0Y2ViZGJkYzhjODE3IHB5M2sKKzcwMzUzIDFmOGQxMWNkNDY4NDIwMTlhOTJiNGVlMTk0MjlmYTgyY2E2OGIxYzggcmVsZWFzZTMwLW1haW50Cis3MDM1NiA4NjFjZDQ2ZWVhZWU3ZjUzNmE0Mjc2MzliZGFkMjA3ZGZkODUyYWZjIGxlZ2FjeS10cnVuaworNzAzNTcgYTRjOWIwYjBhOGU0YmQ3NDcyODhmZmExNjY2YzhhN2VjYTYyYWZhNiBweTNrCis3MDM1OCAzMTY1OWY5Mzc2MTNjZjY2M2VhZmMwNzIxMGEyNjhiMDQ2NWQ4M2MzIHJlbGVhc2UyNi1tYWludAorNzAzNTkgZjI3Y2FhY2I3NDI2NzllNTBkZDkwNjc5YmE3Zjc3ZjY5ZGMxZjA2MCByZWxlYXNlMzAtbWFpbnQKKzcwMzY0IDNmMThkNjA5YWMxYmQ4NzIxOWRlZmE0OGZlYmJmOGFmMTU4NWQ3MjYgbGVnYWN5LXRydW5rCis3MDM2NSBjNWZlYjA1OGZmYzRhNjFkNTk3YjhlZTA4ZjM1OTliYTIyNDExNGQ3IHJlbGVhc2UyNi1tYWludAorNzAzNjYgMWMwYTBmN2I0Zjc2ZjlkNThkMTY3NDVmMjRhZWZmNmIwOTJkM2I1NCBweTNrCis3MDM2NyA3Mzc3YTRkOTVhNDRjYTEzODBjMzc1ZTRiOWNmZDQ3NTE2Y2Y1MWM1IHJlbGVhc2UzMC1tYWludAorNzAzNjggMWY5NmQ3MzNhNzQzOTBlNjE2MmMzZDNkYmNhYTBiYmYxOTczMjBiNSBsZWdhY3ktdHJ1bmsKKzcwMzY5IDRlMWExNTc2ZjFlNWNmNTY4YzBhMzA2MmE5NDgyMjlkNGU5YTQxYzUgcmVsZWFzZTI2LW1haW50Cis3MDM3MCBjMWRjODdiZDg4M2M5ZTdlYjk3NmUwMmE2ZjgyNzQxZjE5NTFlN2U5IHB5M2sKKzcwMzcyIDBiMTliYTMxODA3MWIxZGUxZDVhMmFhZmJlNzRmNjg2NzI2M2YyMjIgcHkzaworNzAzNzMgNjJmOWRhZDYyOGRlZmMxOTMyNGIyMDcwYjM2ZDUzMmRjZDgzZjM4ZSBweTNrCis3MDM3NSA2OWNkNjE1Yjc2ZmJkNDY2ZDY3NzRmZGY2NjA3ZjRhOGNlYTNlYzgwIHB5M2sKKzcwMzc2IGU4ZmQ3OTc2M2JjY2NlYjhjMmY2N2Q2N2MxN2RmYzVmMjA3NzFmNzYgcHkzaworNzAzNzcgNzBmNWY5MTEzYWUxMWVjODBkYzMzZDg4OTM0N2NjOTc3MGEwNjNjOCBweTNrCis3MDM3OCBiZWFmMDBjOThiNzFlNjMxM2M2YzVjZDAzMTFmNGJkZTU4ZTA0NjM4IGxlZ2FjeS10cnVuaworNzAzNzkgMzdkNzZiNWE4MjdiYTNhMjVjYjYyNzM1NDE2NDM1ZTYzNGVhNDM1MSByZWxlYXNlMjYtbWFpbnQKKzcwMzgwIDRlOTI3ZmFmMzBlYWVlYzFhNGJjMmFhYjBkMDY0OGQzZDU0MjBmM2YgcHkzaworNzAzODEgZWY3ZTQ3ZWIyYjY5NzVkNWI1YzJmYWI3YzdjMDIzNjk1ZmM3M2IzOCByZWxlYXNlMzAtbWFpbnQKKzcwMzg1IDQ0MmJkZmU5M2IyOTIxYTljYTliYTUxY2I0OWJlOTY1YzJjMGE3YWEgbGVnYWN5LXRydW5rCis3MDM4NiAyM2EzOTY5N2ZkNjdlODU4NDE3NzJkYWRiMTZjMmViMjIyMmYzODdmIGxlZ2FjeS10cnVuaworNzAzODcgMWJlMDljNWM2OGU5OGI0ZjdjOGY4OWM4OTkyZTllNGEwMDU0MGI2NCBsZWdhY3ktdHJ1bmsKKzcwMzg5IGRlN2U0NzE2ZDljYmE5N2ViYWE1NjI3ZWU3Y2M0YWEzMzZiNzY4MjcgbGVnYWN5LXRydW5rCis3MDM5MCA2ODU1MWIyYTVmYWEyODAzZTQzZmMzY2RjYjE5ZDZkMjZmZDRlZGNiIGxlZ2FjeS10cnVuaworNzAzOTIgMmZlNWJhZjg5NTY5NTgxZDg1ZDIzYTA1NjhiYmI0ZWE2YTU2ZTE0YyBsZWdhY3ktdHJ1bmsKKzcwMzkzIDBkMTllMTE2ODNmZmViNzVlNGVkOTVhMzk0ZDA4Mzg4Y2QyOWNmOTEgbGVnYWN5LXRydW5rCis3MDM5NSA0ZTk0ZWFiNmM3YTJkMGRlZDEwNjAxZmNhNjY2NTMzODhhYmEyYzQxIGxlZ2FjeS10cnVuaworNzAzOTcgMTJlYmRhOGZiNmIzMDBhZjI3YTZiNGU4ZTcxMmNkNzNjOGQyODE5ZSBsZWdhY3ktdHJ1bmsKKzcwMzk4IDBiZTFjMWYxMjdlMDQwNzc5Y2YzYmU0OGFlOWQ3NzZjZWE3YmRlNDcgcHkzaworNzA0MDAgNmJmMGYzYWIwMjc5YWMxMzcxZTAwZDY3MGQ5OTBmZjcxNTdiZDA4YSBsZWdhY3ktdHJ1bmsKKzcwNDA1IGU0ZDk4NDRhYmEyNTAxYTliNzhlZTQ0NGMxNGYwMGM2MDA0ODI5YTggbGVnYWN5LXRydW5rCis3MDQwNiBjYmE2MDkzODMwNzgxY2I5YWJkMWVjNjBhZTJkMzgzYmZkM2Q0ZWZhIGxlZ2FjeS10cnVuaworNzA0MTggY2NlZGVmMjhmZTA0MjAyMzcyZTk0NjU2OWRiYjFhYjQ2Yzg4YmFmYSBsZWdhY3ktdHJ1bmsKKzcwNDI0IGEzMTkzYzA0MTQ5NmRlY2RmYjZkOTIyOTdiMzI3NTBmODg0ZDA4NjcgcHkzaworNzA0MzAgNmI3MzhiNmY3ZmM2NzhiNTQxMjdjOGMwYjJhZWVkYWNkZDViNTRiZiBsZWdhY3ktdHJ1bmsKKzcwNDMxIGZkNGM4MzkyODA4MDlhY2FhNWQ5YjlmOWNlNDI4MTBlMjU2YmU5YTQgcmVsZWFzZTI2LW1haW50Cis3MDQzMiAzOWY0ZmE1MWFjZmI4MDdiODllMzQ0MmVjMWJhOTg4ZGIzMjc2Nzg3IHB5M2sKKzcwNDMzIGMzNTdkNzkyNjRmOGNiZjRmNWQ3MDJiMDllZDkzYjQ0ODNhYWM5OTcgcmVsZWFzZTMwLW1haW50Cis3MDQzNCA3YzNmZTFhNGEyY2UzNDg4YmVkYWY1MGEwMGUyNTYzODQyYjU3ZDlmIHB5M2sKKzcwNDM1IDE1NzI0N2ViNzkzZGJiZTY3NTZhZjAzYWIzYjkwNzU2MTc5ZmUyZmEgcmVsZWFzZTMwLW1haW50Cis3MDQzOCAxNzFlZDZmZmM4NmM2NGM5Njk2ZTdhY2Y4MDkxZTkzNjY3OTAwMTE2IGxlZ2FjeS10cnVuaworNzA0MzkgNWRlZTkzYTk3NTU4ZTE4MWU3ZTI4YTZmYmE5Y2ZhZWYyODI3N2ZkMCBsZWdhY3ktdHJ1bmsKKzcwNDQwIDEyZTE0ZTZmMWYyZGIxZWQ3NWM1ZTM0ODRmYjFmNjJjOTgwYjJkMzIgcHkzaworNzA0NDEgYWQ0YTcyYjA4ZDNlNDEwZTdlNTNiYmQ1ZWFiZmZiMTUzNDdjYjkxOCByZWxlYXNlMzAtbWFpbnQKKzcwNDQyIGNhYzIwNzM3M2EzNGY3NGM2ZGQxNmU4MDhlMWZiMDI1NjU2MjgzMDIgcmVsZWFzZTI2LW1haW50Cis3MDQ0MyBkOTVlNWFkZDNjYTRjY2UzMjkwOGZiNzAxZmQ4ZGRjMGNhM2M4N2M2IGxlZ2FjeS10cnVuaworNzA0NDQgMmQ5NGM4ZmVkMzc2Zjc2YjhmZTk2ZTI4NzQ4NmYwMTEwODgzODBiYiBsZWdhY3ktdHJ1bmsKKzcwNDQ1IGZjZGZmZDg1YThiZDNlYmUwZWE4YjliYzA4MTQwZDUzMzRkZTM0ZTggcHkzaworNzA0NDYgMjA3YTRjMjdhOTE2YWQ5ZDBhMmI0YTI0MjhkZWZhZjZjYmVkOGQ5ZCByZWxlYXNlMjYtbWFpbnQKKzcwNDQ3IGE1Mjc0MDVhOWMxMDYxMDgzMjQ5MmY2YTllYjg5YzczODIwMzYwMTIgcmVsZWFzZTMwLW1haW50Cis3MDQ0OCBjMzQwZTNmNDliZjM2NDllNzdhY2E2MmJmNmJmZWEwMjFmMjAxZDEwIGxlZ2FjeS10cnVuaworNzA0NDkgNThiMjg2ZTE1ZWJjZTRjZGY5OWNkNDAyZGM1NzEwODhiYzc5ODUyNyByZWxlYXNlMjYtbWFpbnQKKzcwNDUwIDU5MzgwYjM5MGM0MDYyNDlhMDQ4NjQ5Y2IyYzZmMGI0ZTQwMWIxMzggcHkzaworNzA0NTEgNmZlNjQwMWRhNTFmOWNhY2JhZjA2NmZiMjU4YWY2NmEzYjU0NDhlOCByZWxlYXNlMzAtbWFpbnQKKzcwNDUyIDc5NjQyYjU4ODFlMGE2YjIyMmQ3OTZkMTYwNDJlZjRiOGQ5NDQ5MmQgcHkzaworNzA0NTMgZGE0ODQwYjJiYTA2MTJmNzRjMDJlM2QyNTI2YzRjNzM0MWE0YzI5ZSByZWxlYXNlMzAtbWFpbnQKKzcwNDU0IGM3M2RkMjVjMDFjMTIwNDEwNzBlMTEwMmJkNzMwZTk3OTA0MWM3YmIgbGVnYWN5LXRydW5rCis3MDQ1NSA2YmE1ZWU1YTIyMDk0M2EzMDcyMzc3NmIwNjJlNmY3ZDYyZTY5ODY4IHJlbGVhc2UyNi1tYWludAorNzA0NTYgN2Q4ZmQ3OTU1ZDE1NTc0MDdiMTRmNDZlZjEyNDUzMzFmNTgyZjdjNCBweTNrCis3MDQ1NyAzZWUyNTk0NjliYTgyODA0NjhkNzM2Nzc5NjYyYTc0NGFkODAxNmNlIGxlZ2FjeS10cnVuaworNzA0NTggN2I1MzYwZmEzZTE5ZjI5MDZiZjRlZDAzNWZjMmE4YjM2MGRiYWQxNSByZWxlYXNlMjYtbWFpbnQKKzcwNDU5IGJiNWRlMjRhMzQzZjY5NzE1YjI0Zjk5NDFhODBlZWQ5ZTg0MmU4OGMgcHkzaworNzA0NjAgOWY0NjI4YjQ2NTViMGJlOTgyMDE1ZDZmZWZkYmMwN2QwOWE2MGI3YiByZWxlYXNlMzAtbWFpbnQKKzcwNDYxIGZmZTRiOWExMDM1Y2QzNjg5MTQ2YTQ5MTBjM2MyY2EyYzI1ZTc3MmYgcHkzaworNzA0NjIgMzcwMzE3ZmI5NTE1NTYxODM4ZGU1ZDY1MGQ5NDc3NzQzMmY3MzM1ZiByZWxlYXNlMzAtbWFpbnQKKzcwNDYzIGQyYjc4ODdmOGM5YWVjMTAxY2I5ZmFjMTc2Y2JmNmI3ZGQ2NjRjNjkgbGVnYWN5LXRydW5rCis3MDQ2NCA5MmZlZmNkZGJmZTg0MDE1MWE5ZGUxYTUyOTJkODBmNTA2MzgwYTUxIGxlZ2FjeS10cnVuaworNzA0NjUgZmI4MGIyODFlMDVhYTBhYWZlYjRmMGY4NDQ1YWQ3MDIzZjExZGE2MyByZWxlYXNlMjYtbWFpbnQKKzcwNDY2IDdjZmJiZjJkMjk0ZTUxMmEzN2NhMTc1MTk0NGY5ZGVjYTNhZmE1N2YgbGVnYWN5LXRydW5rCis3MDQ2OCBlMmMxY2JkYTJhOTU3MjVhMTEyY2FhNDM5YjQ5NjgwZjFhNTM4YjhjIGxlZ2FjeS10cnVuaworNzA0NzAgMWY3M2UwOTg0ZDU1OWU3ZGE3Mjk1ZGMzMGMyNzc2M2JlYzg4YzFjNCBsZWdhY3ktdHJ1bmsKKzcwNDcxIGExMWE2NzZmZTZjMDVhYWJlMjk1NDJjMDAyMTliYmJlZWVhZDkwZmMgbGVnYWN5LXRydW5rCis3MDQ3MiBlYWQzZGU0OGFhZGQ3OTZmY2I1ZDNmZjZiNzAzMzk1ZDMwMzJjMWUxIGxlZ2FjeS10cnVuaworNzA0NzMgOGZkMTcyMWMzMmM0NzVjMzRiMTk2YjJjMDI4MTljZGM4MWQ2ZDI1NSBsZWdhY3ktdHJ1bmsKKzcwNDc0IDExMDBhNTA2ZWRjZjA1MTA2OTI2OGZiYTczOGUwYzY4MmQyZWZkMzUgcHkzaworNzA0NzUgMjkwYzc1MTNlMTI1Mzc1YWUzOTY4Zjg5NDZlYWNiYjFlMmYyNWIxZCBsZWdhY3ktdHJ1bmsKKzcwNDc2IDQyMmUyZTY3NjNlOWExN2VmNmEwYzIzODYzZjQ5ODg4Zjg4Yzg2MGMgcHkzaworNzA0NzcgNGZkYjEwZGJjNzM2NzZjNjBiYjhkMmEwMjE0MTMxY2Y4YWQ1NGQ1NiBsZWdhY3ktdHJ1bmsKKzcwNDc4IDY2NDY5YjY1ZDU0ODQ0NGNiZjhjMTllNWU0Y2Q0MjZhNjM2YTQ5NWIgcHkzaworNzA0NzkgOWIzNThlYWU1MzJhNjIxZjUyNDU1NjhlMmJjOWNmYmZhNjIwMzE3ZSBsZWdhY3ktdHJ1bmsKKzcwNDgwIGQxYzBmNTUwNDBiYWQ1MjRiMTZmNjE2ODBhMmUwNmE1NzdlMDZhYTAgcHkzaworNzA0ODEgZTdjZjQ2OWQwZTEyODNiNzJiZmMzZjc2NjZmN2E1MzUwMmNhNTk0MCByZWxlYXNlMjYtbWFpbnQKKzcwNDgyIDVhMDJmMGNmM2MzODFlZDVjY2QxOGE4ZGQ4Y2VkNmI4YzhmODBiODggcHkzaworNzA0ODMgMzk1OWQ1MDRiNTRjMzUzODhkZThlZjI1MmE5NmY4ZTVkOGFhMGNhOCByZWxlYXNlMzAtbWFpbnQKKzcwNDg1IDc4N2YyNWIxMjdlZTYxZDBhN2E3ZjVkZGZhOWZlZThlYzFjMGVlZTUgbGVnYWN5LXRydW5rCis3MDQ4NiA3M2ZkYzA3NjgxZTM3ZjBiOTQ5OGFhNzUwOTNlYmIyYmQzNGJlY2YzIHJlbGVhc2UyNi1tYWludAorNzA0ODcgNTA1NzdhZTJjMGMwYzUzOTMzMWNkNTdlM2QwYTFhY2QyMGM1NWFlYiByZWxlYXNlMzAtbWFpbnQKKzcwNDg4IDIyNzM3ZTk1ZjZmNzU1NDQyYTUwMTk2NWEzMzI3YThjMDcwN2Y3YWEgcHkzaworNzA0ODkgNmMwYzE1YTJlZDJkM2ZlOTQ4YTQ2NmRmMTQwNjg4MDY4NWM5NDM1NyBsZWdhY3ktdHJ1bmsKKzcwNDkwIGE0NzBkMGEwMjU2ZTc0MmYyYzlmN2E3NTI5NTkwMTI3ZGRlY2ZmYTAgcmVsZWFzZTI2LW1haW50Cis3MDQ5MSBkOTJhNmRlYzhiZmVkNzUyMTllNjVlZWU2M2M3ZjE5ZTM5ODA0YzBmIHB5M2sKKzcwNDkyIGJjNjgxZTUzZjk0ZTA2YWRkMDJkYTBmNDI2YTI4NjNlNmE5ZGE1NGEgcmVsZWFzZTMwLW1haW50Cis3MDQ5MyBjNWI3OTU4ZjQyOTIwNmUwOTVlZThjMTYwMzhkZjliNzk3YThhNjhlIHJlbGVhc2UyNi1tYWludAorNzA0OTQgMmEzYWYyMTFmMGUxMWZhNzQzNzVmMjQ5MWQ2ZDlhNzA0MzhlMTE3MiBweTNrCis3MDQ5NSBjN2IyY2M4MzU4ZjY2NTZlMmM3ZWI1MDI4Yzg0NDQ1YzNhYjMyOTFmIHB5M2sKKzcwNDk3IDVjYWNlNzViY2IwNTZjYzYyNzI2ZjAxZjQ2NzZiZWU0MWQ3NTEwMDYgcHkzaworNzA0OTggNWFhNjNkZGQxNTEzNDU0YTc3ZjQxNDYxZWVlMDAxNDg3ZDJmOGNmOSByZWxlYXNlMzAtbWFpbnQKKzcwNDk5IGI4NDZkNzA5Y2I3NjMyNzAxYjAxNTJkNThjMWE0Yjg2OGVhMTQ2NjMgbGVnYWN5LXRydW5rCis3MDUwMCAwMjkyODEyMTMzOGQ5MzFlNDAyMTU5NzNhZGNkNjM2OGJlYmZlNmU2IHB5M2sKKzcwNTAxIDVjNTgyMzY2N2RkZDVjZWVkZTk0MzVmMjA5OTgxYjk1MTYyMmYwOTIgcmVsZWFzZTMwLW1haW50Cis3MDUwMiBiODkzNGRkOTI2N2RlMDNiZDc2Zjk5MTg2YjhkNzVhMWQ2ZjYzODk3IHJlbGVhc2UyNi1tYWludAorNzA1MDMgMmQ2ZmY1Y2QyNjAwMTI0NmExOGY1Njc1YmVhNjBmZTZlN2YyZTZhZCBweTNrCis3MDUwNCBmMjc3N2VhOTU0Y2EyNWJlZjFjMmU5MTRmOGZiMTNiYjlhZDQ3YzYxIHJlbGVhc2UzMC1tYWludAorNzA1MDYgNWIxZjAyZGM2OWEzOTE5MDVlNzBiMDM3NzdiODViM2Y4ODU4NTI0MiBweTNrCis3MDUwNyAzYWIyZTUyZDhkMTk2OWMxNDNhZjAwZjE2YjFjMGMyYmMwNGRkNjE2IHB5M2sKKzcwNTA4IGU0MWY1YTg5ZjVjMDZlOTliZjY0NmY2Mjc2N2JlYTAwMTZkNDYyNzggcHkzaworNzA1MDkgYzY2ODhlOTE1NmI1OTE3ZWVkODY1NTMxNjdmYWJkMGQyMDJiZTU1ZCByZWxlYXNlMzAtbWFpbnQKKzcwNTEwIDE4ZDY1NjUxMjM1ZTQ4OTEzMmQxYjg0ODYyZTVmZDE1MTc1YmFiMDkgcHkzaworNzA1MTggZmIyMWVhYmE5NGY2ODllZWQyN2M5OWNkYWE5MWI5MzAwN2E5MTk5NyBsZWdhY3ktdHJ1bmsKKzcwNTE5IGQxYjBiZDQ4YmExNTYzODFiNzlmOWYxZTQ0Y2QzODZjZDQ3YmFhODAgcmVsZWFzZTI2LW1haW50Cis3MDUyMCBjODdlNTgyNjJkNWJjYjNlZDIzNTQyOWUxMzcyYTA2MDUxMzVjZjMxIHB5M2sKKzcwNTIxIGVmZDE3Y2I1ODIzYTk4ZmVhNjAxNjkxMjY1ZDk3YTQzYzE0MTQ4NTEgbGVnYWN5LXRydW5rCis3MDUyMiA3NTJmMmUzZTQ3NTc3ZmIwMzAzZWYwMDg5NmY1ODQ3ZjFlMjJmOGE0IHJlbGVhc2UyNi1tYWludAorNzA1MjMgNDQ1ZDQwNDI3MGVhYWJmMThiZjYzMGY5YjEwZDMyMTE3NTE2NTM3ZCBsZWdhY3ktdHJ1bmsKKzcwNTI0IDg1NmVkNDE4NzY4YzE5MDY4YWE3MWEyMDQwMDA5ZDEyYThmMzU0MWQgcmVsZWFzZTI2LW1haW50Cis3MDUyNSAwOTVkODc0YTMwNTQ5ZmFiZmVkZmVhMmVkMTI2OWI0NTU0NmZjZDNmIHB5M2sKKzcwNTI2IDQzNWI4YmExYTkwMjM0NGE1MWU0YzBlMzhiZDMzNjVhZWM5YmFkZDUgcmVsZWFzZTMwLW1haW50Cis3MDUyNyBkZDlmZGRiMDcyMGRhZjliMmNiOTU3OTJiZDdkN2Q2NDU4ZDgzMTdmIHJlbGVhc2UyNS1tYWludAorNzA1MjggNmNiODQzMDc1ZTY5MTFmMmRjYmE4NmYxMDEyZTgzMTA2MzgxZmE1MCByZWxlYXNlMjYtbWFpbnQKKzcwNTI5IDVmOGM4YzkxOGY5YjAyOWI0ZTk3YzcyYWNlNjMzNDQyMmMyZGJiZjMgcmVsZWFzZTMwLW1haW50Cis3MDUzMCBhYjM4OTg3N2YxNTJmNGM4OWJlMjA1YjhkNDFmYTdkMjU0ZGRhYTA4IHJlbGVhc2UyNS1tYWludAorNzA1MzEgMWY3MmFjOTA5NDA4ZGM0MTQyMDYxN2UxNGQxZTllMmExNzE3ZjY5NyBsZWdhY3ktdHJ1bmsKKzcwNTMyIDQ0MjZlNDkyMjY0ZjA3YWRhNTE2ZTU3Mzg3MDcwZGFmZjBlNjFjMTMgcHkzaworNzA1MzMgMTE5ZTNmYzZjZGYzNTgxZDg5NWYzYjhiMjVmNDYzYTViODYxNmI1MyBsZWdhY3ktdHJ1bmsKKzcwNTM0IGIxNjI3ZTdlNjc4ZDdkOTU5NmQ1Y2RiNTRhNWE5OWQ5YTdhMzYzMTIgcHkzaworNzA1MzUgODg5NzRjYTUwMDNmZjlkYWNmNjEwYmFmOWI0MzA3OGYyODJjYjU2ZCBweTNrCis3MDUzNiAwNWFlOWNjZmY1MTQ0Yzc1ODUwNWMwODM2M2YxMDQ2NjIxNDkxYWM0IHB5M2sKKzcwNTM3IDg3Y2I5NTA1OTFiZWUxYjhhY2M0ZjJkNmQyNmU4YzhkMTVjNTU5MDggcmVsZWFzZTMwLW1haW50Cis3MDUzOCA2ODdlNzUxYzI4OGU2ZmE1NGY4Y2QwMzNhODcyMDFjY2RiNzVlZDcwIGxlZ2FjeS10cnVuaworNzA1MzkgMTNmODg3ZTVmYTBkNzUwMjU1ZmVmYTZjNTFmNWFiMmYzYTczYjQ4OCBweTNrCis3MDU0MiBhNTRlZjE4YWIwZDg5ZGNkMWY4NzM0ZjU0YmU0NDk2YmQxZTJlZGZhIGxlZ2FjeS10cnVuaworNzA1NDMgZWRkNDMwMmNjZWFmZWVlOGIzYzBlMWExMjNhYzBjYmQxNGZjNzMwMCByZWxlYXNlMjYtbWFpbnQKKzcwNTQ0IGExZGRiNGRlODVhNTM2ODE5NThiNzA3MjJjMmQzYTkyNmIwMWEzZGMgbGVnYWN5LXRydW5rCis3MDU0NSA2MGQwNmM5OGE2MDViMTEwMjU5ZDA1NTYyNGRjMmI2MmQzZWU4NjEyIHB5M2sKKzcwNTQ2IDBlNDk4YTlmZGUzYzIyOTNmODhiOWUxY2U5NzNkNmI3ZmE3ZmEzZGYgbGVnYWN5LXRydW5rCis3MDU0NyBhMWQxNmQ5OGFhNDBkYWYwZWFjNDQ5ZWQxMzlkNTllMGY2MDM4Y2QyIHB5M2sKKzcwNTQ4IGM3MDkxMGFjNDkyZDc5ODQ2MmI2ODNhYjk2NjU3NzliNjhkZjExMGQgcmVsZWFzZTMwLW1haW50Cis3MDU0OSA5NGJkMDY2NmZmYTc5MzNmNTFmOWMyMGRlMWI4NmE4MzQ1MjcxNTRhIHB5M2sKKzcwNTUwIGIzNzkxMzA5ZTY5MDRjNzNiOTBjNTA0MjQzMDgyNTE2NGMxNzI3MmIgbGVnYWN5LXRydW5rCis3MDU1MSA2N2ZiOTAzMmQ0M2E0N2JkYWY5OWM2MzhlOTE2MjYwMGQ4MjhjZDM1IHB5M2sKKzcwNTUyIGY2ZWRjNjg2YmRlNzUzM2E5MDAzMTgzZTI3ZTQ5MWE0MmY4YWE1YWMgbGVnYWN5LXRydW5rCis3MDU1MyA3ZWRkMTQzY2Q0ZTQyZjM5ODUxM2ZiZTlkMjc0YmVkNzBiNWYxNjE2IGxlZ2FjeS10cnVuaworNzA1NTQgZGNhM2Q2NzI3NThlM2NkYzUzZDRlZWJiMWM5MTZhNjU4NzFkZmFjZCBsZWdhY3ktdHJ1bmsKKzcwNTU1IGU0YWE1MzBlNTc2MGI4YWNmYjg0MGM3MmY4OTczODNlZjY4MThiYTggbGVnYWN5LXRydW5rCis3MDU1NiAxMDg0NWUxNWVkOWIxYjYwMTgxMWZiYmM2YjY3ZjcxYThiMzAyNjNkIHB5M2sKKzcwNTU3IGQ3NDc2MTJmOGEyZmVlOThhMzU1NDI2ODcyZDAxMmEyODEwYTM2ZjAgcHkzaworNzA1NTggNjhhYzI1NTJmNDRlMTlmNWY1ODYwNTBmZTA5MDk5Y2NmYjQwOTA0ZCBsZWdhY3ktdHJ1bmsKKzcwNTU5IDZkNWM4YTUwNjliMGZmZmM5ZjJjMDkxZTg2NDdjZjk1YzkwNjg0ODggcHkzaworNzA1NjAgYWVkYTkyZjFhYjliNTcwM2JiYzI3NmU5NzRlMzQ5OGI0YjA3NDBjZCByZWxlYXNlMzAtbWFpbnQKKzcwNTYxIDU1ZjE1MDljNDViNjdmMGNjNWM4NThkYzU2NWVjMTMzYTAyMTZkZWQgbGVnYWN5LXRydW5rCis3MDU2MiA1ODY5NGM3NmQ3NmQ4MTVmOGE0YjZmOGE2YjIwODg1M2YwMWRhOTU4IGxlZ2FjeS10cnVuaworNzA1NjMgMDAyN2MwODNhMGQ0YjQwNGNlYzc1OGVjOGNmYmY0MjNjMGIxOGRhZSBsZWdhY3ktdHJ1bmsKKzcwNTY0IGVjM2UyOWYxNjBkZmQxMDEyNmVhMThiZDRlOTllNzRkNTIzZGJhZTAgbGVnYWN5LXRydW5rCis3MDU2NSA3MDFmNjhmOGI3Y2Y3NTNmOTQ2MDE0MTIzYjE3NTM5NjBlNDVjNzVlIHJlbGVhc2UyNi1tYWludAorNzA1NjYgYTJmNmIyYjM4MmI0YzExY2QxYWYwOGEyZjhiOGE4MWZjZTFhNTYzNyBweTNrCis3MDU2NyA5ODZhY2NlMjY2NDEwYmRhYjdiYWUzNjdhZjllNTJlYTRhNTBjZTk2IHJlbGVhc2UzMC1tYWludAorNzA1NjggZjBhNTA3NDE0ZThjYzc4Njc3N2I2YmFjYTRmYzBlYTJkZmNiNmVjNiBsZWdhY3ktdHJ1bmsKKzcwNTY5IDIzYzEyYWM3ZjMxNzM2YzY2NzRkMjFiODRjMWQzMzhmMTQzYWY2OTAgbGVnYWN5LXRydW5rCis3MDU3MCA2ZWRiNzQyMTYzOGMwYjIxY2IwYWFkNWM1MDM5MmM2NzQwNGRjMWU2IGxlZ2FjeS10cnVuaworNzA1NzEgMTJhZGI4MTk3NjQ3OWM0MDMxNjQ3NTMyOTBlYWExYThlM2M1N2IyMSBsZWdhY3ktdHJ1bmsKKzcwNTcyIGE4YThjZjliMjgxODNkNDRkNzAzNzI4YzhhZDQzNzQwNjQ5Njg2ZDMgcHkzaworNzA1NzMgOWI1OTliNjAxMmZhNTRkZjcyYThmMTgzNGRkNWI1YTIwNzU5MWNhOCBweTNrCis3MDU3NCBkMjEzNDEzM2JmMGM5OTUyNDgzNjk5ZDBkMjc3YTExZjk0OWNjZjM1IGxlZ2FjeS10cnVuaworNzA1NzUgODIwZjM0NzViMDhkN2YyYzc0MTIyNjM2OWVmNzk4MjE4YTQxOTdlZiBweTNrCis3MDU3NiAxMWQ1NGM3ZTA4OWI4ODUxMDhhYTJiOWViOWM5NTkzNTk4MDI4M2I4IHJlbGVhc2UzMC1tYWludAorNzA1NzcgYThkYThhY2RhMTI4NjdkNDc0YWU5NDMyOTQwZDUzNDQ4ZTA2YzY1ZSBweTNrCis3MDU3OCBhOTUxNWYyOWIzOGM4NzMyZmQzYjU2NjllYWYxNjZkOWNlZDNlMTk0IGxlZ2FjeS10cnVuaworNzA1NzkgMjQ5NGZmZDYwZWFlOTlkMGU1NmI2MTA5NzgyYzZiMjcwMTdjNmI1MCBweTNrCis3MDU4MCA2MGI5N2ZjOGYwNmRhMzZhNDkxNjc0Y2E0OGIzODc5NTIyMzI0MmMzIHB5M2sKKzcwNTgxIDAwNmM4MWY5YjBlODBlZDYwZTFkMDkyN2FlNWY4NDFmM2U3OTk0YTcgcHkzaworNzA1ODIgMmNjOTAwYmQ2YmIwMTYyY2QwZjJiOTM2NzBkNjdmYzViMGJiOTM2MyBweTNrCis3MDU4MyBiYTQyNDAxNmRiNzQ2OTYwM2Q1N2ZlMTM1Yzk3YzcwYjg4YjkxZmI3IG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODQgNzkyYTdmOTM5ZmRkZWFjMWExY2VkYzE2ZWFmODE1YTMwMGJhMzI2NyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg1IDNhZGIzOTc0ZTc3N2MwOTA3MjQ0OWQxZjM2ZjA5ZWEyNjRkYjBhZjYgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NiA4YWQyNTFkYTQ3NDI3NGYxN2FiMDkzYmRmNTU4YTJhOTMzMzQxNzZjIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODcgZmRjODA2Yzc3Y2Q2ZTQyMTVmNWY2ZDEwYmY1ZmY1ZDNiZGI5ZjExYSBweTNrCis3MDU4OCAzZGY3ZjExOGU1MDQyMmY2YTM4ZDQ4MWVkY2IyNTRjYWJmMDJlMTFlIGxlZ2FjeS10cnVuaworNzA1ODkgZWZmZmM3ZWFhZDZkMzNlNzRlNTczZGM3NzE1YTYxODQyNmFkZDk0MiBsZWdhY3ktdHJ1bmsKKzcwNTkwIDVkNmMwZmM4N2E3MThlYjM2NDNmZmYxNzNiZGU3M2IyZGVjZjY2M2IgbGVnYWN5LXRydW5rCis3MDU5MSAwNjBlYTk3NWQ1OTcxMjk3NjE0MGI0NzJlYjA3NTE2Mzc1YTRkNzM2IHB5M2sKKzcwNTkyIDQxZTM0NGU1NzFhMTYwMjM2MTNhZjEwMzM5YTRhYzI3MmIwNDUzNzEgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU5MyA3M2Y0ZThhZGZlYmZkOGQyNWRhMDFkZDdkZjNjYjQ0MTQ0NDEwMGVhIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1OTQgN2QwZTNhOGMyZTllMWIxNmNkMDNiNjg4MGEzNmI1MWM1OWM5YjgyZiBsZWdhY3ktdHJ1bmsKKzcwNTk1IDlmODk3NjU2NWY4MjZlZTBlOWE3ZTI0ZDhkOTVmNjgxNGQ3YjQxZTYgbGVnYWN5LXRydW5rCis3MDU5NiA4Y2Q2MTdjM2U3NGIwMjhlZDM3MjE3MjFlOTE4ZTIzMGI3ODUwOGQxIHJlbGVhc2UyNi1tYWludAorNzA1OTggZWUwZjc1MWI4MDIwMDNjNTNhZDU3YTBhZDU2N2I5NWQ4ZTJjZjlhMSBsZWdhY3ktdHJ1bmsKKzcwNTk5IDFmYmVjMjlmODllOGQwMmM1MTVmYzQ1ZjI3ZTkwM2Q4MGZjODM0MTcgbGVnYWN5LXRydW5rCis3MDYwMCBhNjc2ZDM2YzA3ZGQ1Mzk5ZGIwYTFiY2FkZWExNzg5NzA1NmYwODhmIHB5M2sKKzcwNjAxIGY1ZDY3MGZjZGJlOTZiYzdmNDIxYjhiNDI4YTI5ZTdmOTdjMmNiM2EgbGVnYWN5LXRydW5rCis3MDYwMiBmMjc3MDRmNDVkNGFmMzMxMzQzM2MyZmQ4ZDNjMWJlOTRkZWRhMWEwIHB5M2sKKzcwNjAzIDhiNWE4MGY1MzMxN2Y4OTllNzk5MTJkZDEwZDQzNzFhNmEwZjk3MjkgcHkzaworNzA2MDQgYjZmODYxMzIxYjQ1Y2YwZmRhYTRkYTVlYTBkMGQ3NDAxNGY3ZjkwYiBweTNrCis3MDYwNSAzZmRjNGFhMzZkNzY3MDc4YWQ4ZDJiMzZlYzAxY2ViMzYwYTYzMDM2IGxlZ2FjeS10cnVuaworNzA2MDYgNjFlZjY1OWFiNzk5ZGY2MjM3ZGUyNzA5OGM1ZmZkY2NlNjhmMzg2OSBweTNrCis3MDYwNyAzMzgyOWM3OTFiZjYyMjcwYzZlODJiZjIzZTRkYzNkNGZjOTI4MWQ1IHB5M2sKKzcwNjA4IGExMGQ5OTUxM2Y5ZTllZTNhMDU3ZWYyOGNmNGY4OGIxZGQyNDc4NDQgcHkzaworNzA2MDkgY2MxM2NjMjI0ZmY1NjhiZTExYjZjZjZhNmIzZGIxYWE1NmUwZWJhNyBweTNrCis3MDYxMCAwN2I2ZmNkZjdmOTQ5OTRlOWVhZTZiNGFjOGI4NWY3ZDA1NjYwOTM2IHB5M2sKKzcwNjExIDFlMjMzNTk2MmJhZDg1NDZhMWUxMWZmOWRkOGZhMGMwNjExNGQ0YzEgbGVnYWN5LXRydW5rCis3MDYxMiA3OGZlZGMzNDJhNmIxMDdkYmMxYjcyMjA4MmNmNzlmYWQ3MGYyZTg5IGxlZ2FjeS10cnVuaworNzA2MTMgMGEwNTJhMjg3M2IyNDE5ZGY2OWQ4ODcyODQ2OTA0ODZmMTg3ZDk2YSBsZWdhY3ktdHJ1bmsKKzcwNjE0IDAwN2U5Yzg2ZmI1NWI1ZTA4ODRiNmNhNWExODNkMjc1ODU2YzFhNWUgbGVnYWN5LXRydW5rCis3MDYxNSA0ZmU3NjI0OWE5MDkwNzBlZGQxZTlmNWQyMzgyZTUwODFhYzIwMTU2IGxlZ2FjeS10cnVuaworNzA2MTYgNTU3MjkwZmZhNzg0NzY4ZTdhOTQzZTc5NWE4NGE1YmM2ZDUyMWFjYiBsZWdhY3ktdHJ1bmsKKzcwNjE3IDljY2Y4MmU2NTMzMjhmMWQ4Mzk0NDNmOGNmY2ZmOGY5ZGIwMDJkMGMgbGVnYWN5LXRydW5rCis3MDYxOCBlNjAwOWI5Y2Q5MDg0ZmZjYWZlMGIyNTM4YjY5MzBlMzY5OWZlYWE2IGxlZ2FjeS10cnVuaworNzA2MTkgMTRjYzkyYWU5NGM5MDRkMGFjZTMxM2E5ZGM5M2I4MDAzNzVlMDU1OSBsZWdhY3ktdHJ1bmsKKzcwNjIwIDIyOGNmYjZlMjkwMGMxNDQ2Y2EwNjJmNTg4MmYxMGUwY2Y0YWVjMDEgbGVnYWN5LXRydW5rCis3MDYyMSA3NmJmMzQxYWMyMDIzN2IyNDg5ZWQ2MmZiZjcxN2FkZDUzYmQ3YWQ4IGxlZ2FjeS10cnVuaworNzA2MjIgNTAyMzg0OTRmMGYwNWRlZDUzMmI1MzU5MmNkZDg2ZGU4ZjkxMzdkMyBweTNrCis3MDYyMyA3MDU1NDVlYzMyNDNkNDI3MjU0Y2ZlMTdjYWE3MjI4ZmM2ZjY4ZmNmIGxlZ2FjeS10cnVuaworNzA2MjQgZjI2YzFjZDZjOTg1MDA1ZmVkMTU5ZDdlMTQ2MWViMTNlMGFjMDg4OSBsZWdhY3ktdHJ1bmsKKzcwNjI1IGVkZjYyNzI2MWM3YjU1OGIwZjljMWYxZGM1NTZkOWQwODJmNWM2NmIgcHkzaworNzA2MjYgZGFkYmUwMTRiZGE0ZTI3NTBlMmVkZjI1ZGIxMDI0MWRiODVhNGVlNCBsZWdhY3ktdHJ1bmsKKzcwNjI3IGQyMjc1ODRjMWM3ZDhlNzA2NDdiOTY4OGJkNDMwN2U3MmY0MWU4YjggbGVnYWN5LXRydW5rCis3MDYyOCBkYWY2NjFkMDU0NDJhN2FkZDg4YTMzNmVjNWI2YWY3MGQ4MDkwNzAxIHB5M2sKKzcwNjI5IGNhMDJiZDhjOTZmMjk4YmY5YTJhNzBjODUzMmJkNDY4ZDAzNzVhOGIgcmVsZWFzZTMwLW1haW50Cis3MDYzMCA0NzU4MDg2OThlYWZhYWI2MGQ3NTkwZTI4MDhiN2UwMzdmODkzY2NhIHJlbGVhc2UzMC1tYWludAorNzA2MzEgNzVlM2ZlM2MwNzI2NzBkMDZiOGExYjg0Njg0MTdkODIwMmZhNmY4ZCBweTNrCis3MDYzMyBlZTRhMDA2ZDAxNzFlYzE0NGFlOGE2OTQxMGVhODg0YjhkODgwNmY1IHB5M2sKKzcwNjM0IDEwYTg0YzYzOGVkYTEyOTU2OGU2MjZjYmM1ZmUwYmZlMTdiN2Q4NjggcHkzaworNzA2MzUgOGQ2OTE4YWYyMzJiYWY3ZThlOGQyMDIxODZhYjNmYmM3NWViODI1NiBweTNrCis3MDYzOCA4YjY5MTY5MGJhYmQ3MDgwNzY0ZTRhZjM2ZDZjNmE5MTkzNmY5ODI2IHB5M2sKKzcwNjM5IDlhYjc1NDExMDQzMTVmYWVhYzk5NWQzNDg1NDNlNDcxOTUzMTdkMDIgcHkzaworNzA2NDAgNDI2NWQ2YzdjMDc0M2NkMjk5M2ZiN2E5NjFkYTVmMzg3OTQwMDcwOSBweTNrCis3MDY0MSBmYmFkNDJjNDVjOWNiNmM0MWY5MGQ1ZTViNWJlMzlkN2RjNmY1Nzg4IGxlZ2FjeS10cnVuaworNzA2NDIgN2FmZjhhNzY2ZTI1MDZkYTc2YWEzNjc0NWZlZjlhZjBjNGNiODE4NyBsZWdhY3ktdHJ1bmsKKzcwNjQzIGE3MjZmNzkyODU2MTg1NDJkYmE2ZDdkNDYwYTlhMmZhMWJlMTg5OWIgcHkzaworNzA2NDcgOWRmNWQwNjk0OTIxYTYyZDgwYjE4MzViMTEzMWNkNTE1YjAzZjRjNiBsZWdhY3ktdHJ1bmsKKzcwNjQ4IGI3M2NkYWM2YTBjMzhjODVhODY0NjRhMmFiZTkwZjcwMDgyN2I5ZGYgbGVnYWN5LXRydW5rCis3MDY0OSBiYjkwZWM2N2YzMTQ4NTcyNjdmZTU0NjkxMjAyZGIwMDVjNDEwNWVjIHB5M2sKKzcwNjUwIGRhNDU2ZjQyZWJlN2U3YThlYTkxMTI0ZTc5NWU4YWY1ZWI5Y2ViMDAgbGVnYWN5LXRydW5rCis3MDY1MSAzYWRkNDAwZTQxOWZmMDMyMWVlOTg1ZjgzMzRhZmJkOTFjNGQ0ZDNhIGxlZ2FjeS10cnVuaworNzA2NTIgMWY1ZGI5NDM3ZGI4OGM1ZWNkN2ZmZmMyZDdkNzYyZGNiYmU1N2EwMyBsZWdhY3ktdHJ1bmsKKzcwNjUzIDQ5ODNmZDE5NTAzNjZiY2E5ZWM5MzY1YmNmYzYyZjRiNWFlMWIzNTcgcHkzaworNzA2NTQgYmRmYzRiM2E5MzQ3MTk1MWM4MTEzMjgwNTMyODhlZGI4MzYzNGQ3ZSByZWxlYXNlMjYtbWFpbnQKKzcwNjU1IDM5MTg3MWY2YzE2NDJiZDY4YWQ0ODFkN2YzOGQ0MmFmMGFkNGRkY2MgcHkzaworNzA2NTYgNWVmMWMxZDc0YzUxMjI3YWQ3NjBiOTNmMTZjYTVhNmZiMjM3OTg3OCBsZWdhY3ktdHJ1bmsKKzcwNjU4IDk3NmIwNzk5OTU4OTliNzliMDU1YmU0ZDE4Njg4YTBhZTRjNjQ0OGUgcHkzaworNzA2NjAgMzc0OWI4OGRiYjYxMjc1ZjViNGViMzg4NWQ0NGMyZDgzZmZiZDUzYSBsZWdhY3ktdHJ1bmsKKzcwNjYxIDU1ZDU0MjNiYTk4N2NlY2U2NDI2NDY1Mzg1MTFmZDJlYjYwOTQ2ZTggbGVnYWN5LXRydW5rCis3MDY2MiBkNGU3NDcwYmQ2NjA0MmMyYWI5NGNjMTVlYTM5NGVmM2Y0NjMwYjAyIHB5M2sKKzcwNjYzIDE1MGY1NjhkMWJhMmQwMGI0NDZiYjJjNGEzY2M3OWI4N2UyZTEwNmMgcHkzaworNzA2NjQgM2E2ZDI3ZDgwODIyOTVlMmU1MDE4NjdjMzEyZTMzNmFmMGMxMzExMiBweTNrCis3MDY2NSAxYjcyNzNhZWQzNmNlZDBiZjdhNmIwNzhjOTExNjc3OGFmNmM1ZDUzIHJlbGVhc2UzMC1tYWludAorNzA2NjYgZDA1OTM5MjYzYTBlNTE1YTAwMmVlM2RkOTRmZGI5ZjEzMjQwNzU5YyBweTNrCis3MDY2NyBiNzk0MzE5YzEyNWViNDVjYWQwMzBkZWFiYzI5YTk3NjU0YWY2MDNkIHJlbGVhc2UzMC1tYWludAorNzA2NjggZDU1ZTA1YjA2ZTRhMmIwZTdmZDBmZTYzYjc4OWVhZjRiMjY2NDliZCBsZWdhY3ktdHJ1bmsKKzcwNjY5IDdhZGQ0MjNhZjk3MTA5OGYzOTZlM2E5YjgzNDYzY2YyYWMwMjBjZTQgbGVnYWN5LXRydW5rCis3MDY3MSAzNmIzNTkyZjMwMjNiODc0MjE1YzEwZDU2ZmQzZmUxY2E0NDhhYjgzIGxlZ2FjeS10cnVuaworNzA2NzIgOTEzNGEyMDkxMDEzYzVmYTM5OTYzNWE0NjZiYzM3MDY5NGE3N2M1OSBsZWdhY3ktdHJ1bmsKKzcwNjczIGUzMTRiOTZmYjVhZDM2MjkyZmNhZDljNmE1NzY3Y2EwMDczM2MyNmEgcHkzaworNzA2NzQgZTk4OTE1OThhNDMzNDY0YzI3NDkyYmNjNzAwYTQ2MTMwYjZjNjkyNyBsZWdhY3ktdHJ1bmsKKzcwNjc1IGVmNjEyYmU3NzFlZGNlZmI1ZWY0OWRhODQ4Y2VhMjFlMDRlNzBjOGYgcHkzaworNzA2NzYgMDAxMjg4YTY4ZThiMDc0ODRiYjRmNWUxYTM3YWUzMDFmNDZmMTZjMyBweTNrCis3MDY3NyA0NmE0NWVjY2M5ZjcwMWZhY2FiNjMwZTM3NzY2MmVlNGQ2MWVmZGM3IHJlbGVhc2UzMC1tYWludAorNzA2NzggMDE5ODE1YmMzN2VhZjEyZDlkOGE0NzgyYzQ2MTU3N2IzMjBkMDUxMiBsZWdhY3ktdHJ1bmsKKzcwNjc5IDQyM2M5NDc3ZDZlZmU2ZWM4MDc4Yzk1MjNmYTFiOTkwNWYwMzUwZDcgcmVsZWFzZTI2LW1haW50Cis3MDY4MCAwMmYyOTRhMjgyMDZmYjBjZjc5ZTcxN2FmZDUyZDJmZTAwNmEyMTMxIHB5M2sKKzcwNjgxIGY0OWE5N2E5NzllYjA5MDhlMDNhODIzNzk4YzExZTYzZjdlMDIxNjkgcmVsZWFzZTMwLW1haW50Cis3MDY4MiAxYWZiMzY1ZjI0NDgyMjI3ZTliM2ZjODUzMDY1ODIxY2M1MjVjMDFhIGxlZ2FjeS10cnVuaworNzA2ODMgNmU1OTFkNGRjNmM5NmZiNGYwNTQwYzk5OGM3ODM5OTY2ZjM4NTg3YSByZWxlYXNlMjYtbWFpbnQKKzcwNjg0IGYwNWI2ZDlhZGJlNjQ3NzU3NjRhYjg2NDk4ODhmZmQxZmY1NDY5ZGEgbGVnYWN5LXRydW5rCis3MDY4NSBiYWZhZDYxY2YzMDI2MmQ3NzJkZDY1MTAzNTA0MTg1MTljYmYyYTlkIHJlbGVhc2UyNi1tYWludAorNzA2ODYgZTUwODRkNTE0ODA5ZWYwMWM2MmQ0MjlmNzQ3YzM4MjEzY2M5YmQ0MCBweTNrCis3MDY4NyBiMGM1ZGY4Yzg0YTM0NDA0ZDUxMzQ2ZDk0YjU1M2JlMTg5MWFhNzE1IHJlbGVhc2UzMC1tYWludAorNzA2ODggZjE3MWJhYzlmOTYxZDFkNzEzN2ZkNGUwZmZjYTRkMzFhYjZjMDBjNiBweTNrCis3MDY4OSA5ODA3YzI2Y2JjOTlmYTFlMDE1NWRmOTU4MjA3Zjg2OTNlZDQyMzg5IHJlbGVhc2UzMC1tYWludAorNzA2OTAgYTNiOGQxOTFlYzY4MTJlZWI1YmQyZjY5NjkyY2Y1ODJlZmEzMTZkOSBweTNrCis3MDY5MSAwNTA3YWFiNWZiMTE5ZjU5MGUyOTAwYTM0NjNmMjc2NDhjMDFlYWU1IGxlZ2FjeS10cnVuaworNzA2OTIgYmFlZTkwNTIxMTEwZGEyNTViOGFjZTAyZThmMzdmOWQzZjUzOTA0MCBweTNrCis3MDY5MyBiZWYwMGNhNDNlZmFlNmQ5YmRjMmJjOGUzZjI0NWZiNDczMDlmM2MzIHJlbGVhc2UzMC1tYWludAorNzA2OTQgOTJiYzFkZGJjNTcyNGY0ZTFmZWRhYjBmY2ExYzk2ZTRlYTA5ZjExNCBweTNrCis3MDY5NSA5NzViMjAzOTljOGQwMjljYmVkYmJlMTdiMmViZDk1YmYyZTRmOTU1IHB5M2sKKzcwNjk2IDdiNWZiYmU3YjAwOWM0ZjJiZGRmYzhiMGQ4NDZhMzZhYTY3ZGRhZDIgcHkzaworNzA2OTcgNmUxYzRhMjk2M2U0YzQxZDYzMmYyNjQ5MzcwZWEyYTY3YjUyNjdmMSBsZWdhY3ktdHJ1bmsKKzcwNjk4IDljMjNjNTRlNmIxNTk2NzQ2YmEzOGE1NmU1N2Y3NGU1Mjk3MTg5ZjggbGVnYWN5LXRydW5rCis3MDcwMCA2YWQ5YjAxZjk1Zjk5OTFhNmU0MDQxMWJmOTg0ZTU1OTc3NjljZTI5IGxlZ2FjeS10cnVuaworNzA3MDEgNzFiNjlhODczZDIxMzE2NzA4MmMxM2Q0NWUyZGY5YTZlZjVjNGM0NSBsZWdhY3ktdHJ1bmsKKzcwNzAyIDY4NWYxNzkxZmJjNTlhOTc0MTU5Nzg5YjNlZTllMjhjMzlmMTBhMDUgbGVnYWN5LXRydW5rCis3MDcwMyBhN2FlNzNhMzc4MDU5NGYzMzdhMTUyMTk4ZDQ5YzBmYmY5ZGJmMWMxIGxlZ2FjeS10cnVuaworNzA3MDQgMmQ4MzY0OWE5NGI3NWFjNjQ1NGY1MjFmNDA1YjFlMGQ5NGIwZDYwNCBsZWdhY3ktdHJ1bmsKKzcwNzA2IGZjZThmMjM4NDUyZTFjYWQ5ZjU4MGM0ZTk3ZGMxNTExOThhMDFiNjEgbGVnYWN5LXRydW5rCis3MDcwNyAxMWMzMzVhOTZmNjBmMWQ5Y2RjMmFiOGYyNjAxZDBiNDEzYWY4OTM0IHB5M2sKKzcwNzA4IDllNGJiOTQxYTFlYTU1YzUwYTBmZGI3Zjk0OWM4MTg3MDk5YWRkZmIgcmVsZWFzZTMwLW1haW50Cis3MDcwOSAwMDU3MTM5NDFhMTkzYTA2OTI4OTE2YTA0NmY3NWQxNTVkNzlmNjA1IHB5M2sKKzcwNzEwIGNjMDJjOWMyOTBhOTQ4NGJiOTI2OWFlZmE5NzE0MjllNTEyNDRhOGIgcmVsZWFzZTI2LW1haW50Cis3MDcxMSBiOWQ2ZmRmMGZiYjM2MWY5OGE5M2EyMDc0OTkxODk1MjFlN2Y4MzE1IGxlZ2FjeS10cnVuaworNzA3MTIgODRlOTllZmM2N2IyYjFhMGZhY2JmY2NiYmIzZjlkMDM4NjJjZjA3NyBsZWdhY3ktdHJ1bmsKKzcwNzEzIGY1YzJiY2IwOTQ3YjhhYTU2Zjk2Mzk2ZjZlMWM4YmYwYTQwY2IzYjQgbGVnYWN5LXRydW5rCis3MDcxNCAxNGNhZTExNjA2OWQzY2Y1ZGM3ODdiOWIwZjJkNmE1MmU3ODk5ZDJlIGxlZ2FjeS10cnVuaworNzA3MTUgMWI3Y2NjYTM0ZjJmYTY4ZmM5YzVlYzgzNWZmNTJmOTBiNTQwOWYxMyByZWxlYXNlMjYtbWFpbnQKKzcwNzE2IGFhYWYzMjY5NDg3NmE3NjliMDkwODFlOGI0NTc5MDM3MGQ3MWExMjcgbGVnYWN5LXRydW5rCis3MDcxNyA5NjUyMzBiMzM3OWYxYjgyNWMyZjAwOWE2MDc4MTQwNzhiZGM4NjNhIGxlZ2FjeS10cnVuaworNzA3MTggYjljNDk5ZTlmNzRkYTk1YjlkODMxZTQ5MWQ4YTgwOWE1YmEzYTJjZiBweTNrCis3MDcxOSBiNGE0ZjRiNjA4YWJiMWQwZGYwNWFhNzg3MGY0MzcyNThjMDI5OTQwIGxlZ2FjeS10cnVuaworNzA3MjAgYWMxNjRiNTRjOGE4YTNjMTZjNDM1NTI3NTU1MDZhNDRkZWIzNTgwNCByZWxlYXNlMjYtbWFpbnQKKzcwNzIxIGI0YWQ1OTQ4ZTE5N2IyNmI0OTY0YThjMTUxZWZlZWRjNTJlMmI0YWIgcmVsZWFzZTI2LW1haW50Cis3MDcyMiAxMDE0ZjBhYmRiNTcyMTAzY2Y3OTdlMjMxNmU2YmQwNWZjYjg3ZTcwIHJlbGVhc2UyNi1tYWludAorNzA3MjMgNDJlODdmZjlmNjVkYmQyNjc0ZTlmNzI5YjAwYmViMTU5M2I2NDExZSBsZWdhY3ktdHJ1bmsKKzcwNzI0IGViNTUyYTU5MDlmYjhkMjE3NmRjNTlkYjJlYjRlYjY3ZTVhNmUzYTkgcHkzaworNzA3MjUgMzliNjJiMmNiMmM3NjAyM2UwZDM5MDBiYWU1ZWY1NjRmMzcyNTBiMCBweTNrCis3MDcyNyA4ZGY0ZTBjMDZlOTQwMjYzYTI4NGVmOWY4OGU0YmZkMmJkOTViODVkIGxlZ2FjeS10cnVuaworNzA3MjggMmQzOGRlMDAyYmJlYmJmMDk3Yjk2NWJhYzNhZjY5ODljZTVkMWMxYSByZWxlYXNlMjYtbWFpbnQKKzcwNzI5IDA4YmYzMTg0OGE0MjJhYzE5MTZjNjBlNDEyNjQ5YjU3YjE2MzEzZDcgcHkzaworNzA3MzAgMmJmZjkxMjFiZTBmNjRjOWU0NzhjNjNiZTg0OGZmNTM1ZWZjMWJkNSBsZWdhY3ktdHJ1bmsKKzcwNzMxIDE3NWJhNzZlOWMyYjc0YjI4Y2QwYzI5MDY4YTIzOGU5M2MzM2NjZTEgcmVsZWFzZTI2LW1haW50Cis3MDczMiA5ODY1NTlkYTU0ZGUxNDEwNGE0YWUwZDFjMDc4NDM3NGMzODEyZWZkIHB5M2sKKzcwNzMzIDgxYWE0MGFiMzQ2ZDk2MTZiMDI4MzU4ZjJmZGU3ODk0MDZlZmVhNGQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDczNCBmMmM5MGZkMDVkNjZkYzljNzhkMTFjMDYwOTRkMmE3ZDdjY2M5ZTZlIGxlZ2FjeS10cnVuaworNzA3MzUgMTRlMjc1MGUyNTA2ZTU2NmI1MzIyOTM3YzdlZTU3YzJkYjJkY2JhMyBsZWdhY3ktdHJ1bmsKKzcwNzM2IDM5NTIzNDYxZWY3ZTI0NzAzNWU4ZjNlYjAzODhlMDRjOGI0ZjUxMDMgcHkzaworNzA3MzcgOTc0YzJiZWYyODAwZjBhZGU0YTU4ZDJlY2JhOTA1NmI2OGVmMDhkNSBsZWdhY3ktdHJ1bmsKKzcwNzM4IDU3MzA4NTAxNWFhODkzNDY3NDlkMjQ1NmYzOTgxYmU5ZTMyMzU4YmQgcmVsZWFzZTI2LW1haW50Cis3MDczOSA4NTdiZTVkOTUxMjA4Y2FlMGExMDdkOWFkMWIwYzA2ODI4OTM0ZTQ0IHB5M2sKKzcwNzQwIDM3NmI4MjFkYjQyOGI4Zjc1ZDVlMmM0MWFlOWRhOTcwNmYwOTU2NzMgcHkzaworNzA3NDEgZGQ5N2QzYzNmYzY2MThmNDNmYmFhNzkyNTA3NGE5ZjUzOTM5OGJkZiBsZWdhY3ktdHJ1bmsKKzcwNzQyIDNiNWJjYjkzYmQxMTlkYjg2ZDM3ZjFmZDRmMjBkZTkyYzIxNWI4MjAgcHkzaworNzA3NDMgMGUzOGI5NDFkOWU0OTBiZWI2YTMwMmYyZDY3MmZkZTJjNThhMmQzZCByZWxlYXNlMjYtbWFpbnQKKzcwNzQ0IDU0YTEwNzYzODM4OTU1ODNiOWQxZDE5MDI5NWRhMWNmYzRlNzQ2MjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc0NSAyZTVlMDAxZDdkMzZhZDNiNDUyMTRjOTU1NGYzZGE0NTY2MTM3MTE2IHB5M2sKKzcwNzQ2IDk5ODI5YzkwODA1ODEyNzgzZWQzYjgxODhkZTdiNDIwMTBlNDBhMDggbGVnYWN5LXRydW5rCis3MDc0NyAxMGE2M2I5MzBjYmFlMTRmMDAzNDQ5NGIwZDFkMzIzMWUyMjgzYTUyIGxlZ2FjeS10cnVuaworNzA3NDggMjY4YjhlYjMxZjQ5MzZlMmVmYWRjNDg3MTBmZTkyZTBjYzgyYjE5YyByZWxlYXNlMjYtbWFpbnQKKzcwNzQ5IDUyYzM2ZTQ1MGE0OGFjNWNhNjViNjM4N2Q1ZDkyNWNhYWYxN2JmNmQgcHkzaworNzA3NTAgNzU3MWFhYzNlMGMyMGEzNzNhMjVmYmY1NmM1NGY1NzU0MTY2ZThmMSBweTNrCis3MDc1MSBiOGU4N2VkZjJmNjYyODcyZmI1NmUzMDZhMjQxODVhYjVlMDc5NTkwIHB5M2sKKzcwNzUyIGVjYTkzOTAyMmI4MzJlMzdiN2Q2OGYwZDYzNjE0MzE5MDA0ODdiN2QgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc1MyBjMzcxYzA5MjRmMzUzYzlhOTE2NjQ0MmZlYjM5MGY4ODg2NTdkN2M5IHB5M2sKKzcwNzU0IGRlNjNjYmM1NjFiNjhlNmFjOGJhNmZhOTU2NDNhYWYzMGQwYjNiNjQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc1NSA0NWE3MTc0NTA5NjFjNjhjOThkYTgxNTdhMzk5Y2Y4ZDBlZDE1ZWU1IHB5M2sKKzcwNzU2IDc4MGQ2NDAxZWVkNmQ1ZmZhYTUwOTBhY2FmZmVkOGY2MTQzMzY4MDEgcmVsZWFzZTMwLW1haW50Cis3MDc1NyAyZmY4OWYwZjFkMTkwMmI4MTcxMjY1YmQ2MGU0YjBhNmM1MjAwN2NlIGxlZ2FjeS10cnVuaworNzA3NTggZmNmYzJjOTk0YTRhYTBlNzRkOTQwZDhhYTAwZTU1ODU0Y2RlNWUxNiBsZWdhY3ktdHJ1bmsKKzcwNzU5IDgzNGEzYTk2ZDNhYjQ4M2JhYWFiMWE5NWQwZTJjOWVmZTg2MmM5NmYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc2MCBlOWZmMGVmY2ZmYTkwOGFkOGNmMDdjYjM1ZDdiNTk4OTkzZGFjMGEwIHB5M2sKKzcwNzYxIDFlNzhiM2RjY2E0MmFmM2NmZDdmZTFkZTNkMjVhMTI3OGE2MmIxYzUgcmVsZWFzZTI2LW1haW50Cis3MDc2MiA4MDI3MWNlMDlhNjZmYmQ5OWI4MzNmNzU4YjAxYTZiZDRjNTczN2Q5IHB5M2sKKzcwNzYzIDk0YmEyZmFkOTM3OGE2NDNhNGFjNjNlMDEwN2IzYTQ2MTI2M2ZmZTAgcmVsZWFzZTMwLW1haW50Cis3MDc2NCA4MGVjNTBkMTM4NTdmMjg5NDI2ZTM3YzZjOTU0OGJmMjhjMmQwYzdlIGxlZ2FjeS10cnVuaworNzA3NjUgNDIzOWZhNTYyNzM1YWIxMTU0Yjg4YmVmNzdlOTA4Nzg2ZjIzMGY1MSBsZWdhY3ktdHJ1bmsKKzcwNzY2IDU2YTA5ZGQwZTBmMzMwMTQ3ZTNmMTlhMzRjYzZmNTU4YzhkMTNiODkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc2NyBmNmIwNTA1YTIyYjM5ZDk2NDcyMmQzNjFmOGZlN2M0NmY2MTA2NTRlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjggNDNlYmE3ODkxNThmZGNhMzliMTFmMzIyZWQxNzdkOGU4MzVjNTZhMSBsZWdhY3ktdHJ1bmsKKzcwNzY5IDJmMjIyNzFjZjkyNDk4YjgyYmRmZTUyZjljMjMxNjNiM2UxOWQ0YjcgbGVnYWN5LXRydW5rCis3MDc3MCBhMjg4NzEwOWYzNDA2OGVkMGZjMDZhNTRkNWU4MGU5ZDFmYjVmM2RjIGxlZ2FjeS10cnVuaworNzA3NzEgMGFmYjVkODk0NjYxNjRmZGQ4ZTlhYjYwNzM1ZjZlMDk4ODliODQ0YSBsZWdhY3ktdHJ1bmsKKzcwNzcyIDVkZWIyNzA0MmU1YTc5ZTI0N2UzYWRjOTFjYzYwYjZiMzRlYjAwNzYgbGVnYWN5LXRydW5rCis3MDc3MyAzZjgxZDk5NDVlODJhMGU5ODFiYmExMzliYmZiZjIzY2UzZGM5MmIyIGxlZ2FjeS10cnVuaworNzA3NzQgOWQxNzhjYjU0NjZhMGQ3NDJjYThhNjYxNzVlZmYxOGIyYzNjZDVhNCBweTNrCis3MDc3NSBmNGM1ZTNhNjRiZTIzYTRlY2FmZGJjZDhmNmM3OGEwNzM2OTIzM2Y4IGxlZ2FjeS10cnVuaworNzA3NzYgNWVjZTA3ODVkZjgxM2Q1NWNjYWFhZGE0Nzg4NDViNWYxNWQ0ZmE5MiBsZWdhY3ktdHJ1bmsKKzcwNzc3IGUwMTI0ZjU0MGVlNTY0OGVhOTAzMjNjYzcxNDRhY2E5MTFmMTg1YWUgbGVnYWN5LXRydW5rCis3MDc3OCA4OTc2ZWMyY2RmZTVkYjdlODViNDZlMjBhNzZmZTg2MjEwNmY5Yjk2IGxlZ2FjeS10cnVuaworNzA3NzkgZTRlZmNiMjk5MGUyNWViNWVjMGUzOTcxN2RjYjVlNDZhZWQ1MThmNSBsZWdhY3ktdHJ1bmsKKzcwNzgwIDk3MDQ5NmRiMTRiY2RiOTE3YmMyOTYzMTg4MGUyNjQ1MTFhYTk2MmEgcHkzaworNzA3ODEgZGNhYzA0NTkyMzAyODQ4NDNkYWYyM2JiZTVhZGI1ODlhNWU1MGZjNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzgyIDBkNjJjYzViNDhkNWNlY2U0OTc0NmY2MTdhOTI4OGU2ZjVmZDQ3MWQgcHkzaworNzA3ODMgZWE0YzVjM2JjN2FiYjhjMzBjNTI0OWU4ZmMwMTRiNGQ3MTJmNTUzOSBsZWdhY3ktdHJ1bmsKKzcwNzg0IDExYTQ1NjQ3N2U4MjU4NzMzZjMyNTg5ZjdhMmI0ZmVkYzZjZmI4Y2YgcmVsZWFzZTI2LW1haW50Cis3MDc4NSA4MDNkMDI3M2NiZjdjMDkwNTY5MGU2NWIxMjY1M2NkYzVmNGRiMmYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3ODYgNzVlYzEyYjI0NDQ4ZTJiNGRjMWNkNTVkZjRiYjA2MTE1NjIwMjYzZiBweTNrCis3MDc4NyA4OWRlYTNkZjRjYjU3NTBiYWY3ZWZhNTFkM2RmNzc2OGFjMGJlZjE2IHB5M2sKKzcwNzg4IGM2OTk1NDcwNTNhOThjMTk3YjlhMzE2MGQxMTNiMGMxNWVjMzEwY2YgbGVnYWN5LXRydW5rCis3MDc4OSAxMDRjY2QwNjQ2MWE4ODlhMzZlNGI0MzA5YWE4YzM0NjYwNTVlMGQ3IGxlZ2FjeS10cnVuaworNzA3OTAgZjI4ZTZmNzgyMWIzMWI3NDZlMmY2Y2IzZmQ5N2NkMjgyZjQyNGRlOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzkxIGMxYTNjZWMwYWNkNDI3ZjMxOGExZmQzMDI1MjNjNTEwYjZjOTI4ZGUgcHkzaworNzA3OTIgNzJiYmIwZjhiMDlhNzIxNGJmZDAxMTliMWMzOWU0MmY1YmQ0MmM4MCBsZWdhY3ktdHJ1bmsKKzcwNzkzIDI2YjFhZDA5ZDFhNzIzN2YyYTBkYjUyYjJhZmI5ZmM4YjM1OTRmNzIgcmVsZWFzZTI2LW1haW50Cis3MDc5NCBlZTIyMmM0ZDEyOWEyZjY4NWI4YjkyNjRmMmE0ZmEyOWQzMDYwZWFiIHB5M2sKKzcwNzk1IDUyMTk1ZmNhYjE5M2Q2OTQ3ZTNiY2VkMjE5ZjNmZmU5MTM0NDBlMzkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5NiAzODA5M2NiZWQ2YTZkYzYzNzhkNGM2ZDY2ODFkNTRlMjcwMDI1OTNjIHB5M2sKKzcwNzk3IGQxMmIwMmFiZTZkY2I0N2FiMmExOTRjMTY3ZWQyMTY1YThlYmNjYWIgcHkzaworNzA3OTggMjMxZDYxYzQzZTljZGZkZDc2NDVlYTQzZmU1NWUwMmViYWU2MjJlMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzk5IDNkYTlkYzBjNjVjNmIxZjBhZDQyZjA2ZWI4MjY3NzAxYWU0NjIzNDcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgwMCBhOTFjZjBkZWZiZDY3NjY4ZTRjMzdmNmVjMTg0YmYwMWJiZTI2NGQ5IGxlZ2FjeS10cnVuaworNzA4MDEgZDRmODY2NzM5YmIyNGMzNDEyZWQ3NGQzNTFhZTJhNmFiMWMxNDAzMCBsZWdhY3ktdHJ1bmsKKzcwODAyIDk2MmViYTYyMjk5ZmI4ODg4N2VkMDhmYTc0YTE0Njg5NGUwMGU5NWQgbGVnYWN5LXRydW5rCis3MDgwMyAyMzU2MjI2MTc0OTcxZWI4MWY3YWUwNjMyZThhOTAyMmZlZmJlNjJlIHJlbGVhc2UyNi1tYWludAorNzA4MDQgZWNmODQyNGQ3NDIyMGI0MDA2OWZiOTViY2Y5OTdiYWI3YmQ3ZDFkMyByZWxlYXNlMjYtbWFpbnQKKzcwODA1IGQyNDc1ZDgwNjlhY2RjNmY4NzI3Y2UzZjg1NjBhNmNiN2I4MGRiZjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgwNiBlNDc3OGVhOGU0YjI4ZDU0NmM5MzdjZTAyMTE2MjI5NTJjYmQ0NzJkIHB5M2sKKzcwODA3IDZmNDYwYjdhY2Y4ZjRiY2E3MTBhOTA4NTg3YWMzN2UyMDg0NmMyNjUgbGVnYWN5LXRydW5rCis3MDgwOCBjOThhNzFlOTkxNjJhY2M4NmEyZTQwYTJiMDM4YzgxNGJlYmJjZDQwIHB5M2sKKzcwODA5IDA3ZDY1MTcxYTgwMDY5MTFjNzk3MzQ1YTM1MjFkMTU3NTM5ZWU0OWIgbGVnYWN5LXRydW5rCis3MDgxMCA0YWRhYjcyNDMzMzk5NWJhMTdiMzU3YmQ2NWZmYWQ4NzRjOGUyMTAwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MTEgZWVkNGM3ZmEzZTA1ODc0MmRiMTgxYzljMTYxZDAzMTYzMzhmYWQzNyByZWxlYXNlMzAtbWFpbnQKKzcwODEyIDg5OWFhMmQxODk4NDdiN2Y1Yzk1OGE4YWUxYzk3YjJkZDRiMjMzYTMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgxMyA2OTEwNzkyZmNkNGI2NDU5ZTNmYzI0ZWYxMzNjNmQzMzhlOWU2MTlmIHJlbGVhc2UyNi1tYWludAorNzA4MTQgNGVlYjE0YTljNWQyZDcxYzUxMmQzYzdmZDJhZjBkODFkYjkzZDIwNCByZWxlYXNlMjYtbWFpbnQKKzcwODE1IDllY2ViNjE4Mjc0YTUyMWZjNTVjMGI1ZDFmYzhlMTExYjkxYmY2ZDYgcHkzaworNzA4MTYgOTMyYTFlNTE0YzE2MjM0ZmNjYjQyM2RmN2FiM2MyZjFhMDMwOGQwNCBweTNrCis3MDgxNyAyMWMxNTk0YWMzNjlmYTA5YWI3ZWY5ZDM4Y2YzMmY4NzkyYTgwZjk1IHB5M2sKKzcwODE4IGMyYjAxNGI1NWJhYzI0MWUxZjgyOTI2MjQ2MmViMDRkMWQwYjU3MTkgcHkzaworNzA4MTkgMjI0MmMyZTZjNzNhYzZkNjkxMDQ2Y2NjZTdlMDNiMGU2OGZmYzYzMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODIwIDA1ZjkwY2VjYjJhMjllMGRlMDU0Y2Q5YzY4NDRkNmY2Y2U2ODE0Y2UgcmVsZWFzZTI2LW1haW50Cis3MDgyMSA2Njk0ZjNhMWI2ZTcyNzllZThiYzY3NDRmYzAzYTkxZDcyNGQ4OTdhIGxlZ2FjeS10cnVuaworNzA4MjIgMjM0NTFiMDlmMTViOTIzYTgxZGFiOGQwOGE4ZDZhNmFiOWJiMWVmOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODIzIDJiNDM2MzEwZmM4YmIwNTg5OWM2ZjQ0YTRmY2Q5YzJjZjA5MjE1NGQgcHkzaworNzA4MjQgNDQzNjM5MWQyYTlmMjRiZTgyMTA3ZTcyMTIyZDAyYjhjODQzMTQ2OCBsZWdhY3ktdHJ1bmsKKzcwODI1IGFhN2NmMzI4M2Q2ZTA2MjZkMGU5ZjA4ZGVhZjM5NmRlMDljODJlYmYgbGVnYWN5LXRydW5rCis3MDgyNiA0ODU3Y2NhNDVhYTU0MzA4MDgwNzQ2ZTE3YzAzNjBmNmQ3Zjk5MGNlIHB5M2sKKzcwODI3IDM5OGVjOTQwMjc3ZjY0NzZjZGJjMmUyYTNlNjYwYzc4NDQzMGQ3NjAgcHkzaworNzA4MjggZTEyOTQ0NmRmYmY5YTFjMmQzYWM5MjI1Nzc4MTkwYTgyMGRmM2FiNyBsZWdhY3ktdHJ1bmsKKzcwODI5IDUxNDI5YTE5NmM3NWFlMjNhMzI4ODNiZGViMTNjOTZhYzc5MTllYTIgcHkzaworNzA4MzAgYWU2MGU0YzIwYWUzM2Y4NDY0NjJlZDUyYmIzYzQ5ZWYzZTg0YzAyMCBsZWdhY3ktdHJ1bmsKKzcwODMxIGQ4Y2ViMjZjNjZjNDhjMmRmZGQ1MTgzZjAyOWYzZTY5NWZmNzIxN2MgcmVsZWFzZTMwLW1haW50Cis3MDgzMiBkYWZkOTgyZGZjZjRhMGUyM2FkNTczNmYzYjYwMGJmNTk3MWIyODhjIGxlZ2FjeS10cnVuaworNzA4MzMgNTM0ZmFmOTE4N2U4NDAwYTBhYTUzZTBhYzZiYTNmMTA4MGE0ZWExNyBweTNrCis3MDgzNCAzNzUyODczMjdjZTllZmM3MDMzMTNhMDZlZWNjOWY0NzAxMDU1MTQ4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MzUgZDE4NmQzNTNjYzgxNzBmYWUxYWU3MDIzNjE1ZGNiOTUzNjVkZGI3MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODM2IGI5ODUyM2JlMGExNTcwOWZhYjkzMTA3MGY1YmMwZWQ2NDE2NWVmNGIgbGVnYWN5LXRydW5rCis3MDgzNyAxMWQ2ZTUzOGEyNzliNGEyODc4NGRhOGVkMmFjZDVlMGFlYzYyNWJjIGxlZ2FjeS10cnVuaworNzA4MzggYTNiMmE5NzA2ZmMzNmUyMmMxODU0MmExODIwZmRiNWJjZGJmYzBlMyBsZWdhY3ktdHJ1bmsKKzcwODM5IDZhNmRkOGFiM2YyMjg3ZWQ2NzAxOWI2MmJjYmEwZjNiMTI1MjA3ZTUgcHkzaworNzA4NDAgYTM5OGEyZjc1ZDQ0NGZmNWQxMzRkY2FhMmI2OGY4ZTQ5YjI5ZDVkZiBweTNrCis3MDg0MSAxZDFlYjE0OWIzMjM3MWIxMTJlY2M4ZDJkMjk3ZGVjMzRlMDViNDA0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NDIgNzA3MjllNzM1M2RiMDM1NDg0ZjFmZTlkNWI1MDdkYzgyNzVlNjI1YyBsZWdhY3ktdHJ1bmsKKzcwODQzIDJkODBjMjc5NzUwMTJkZjI5OTBiZGJmMTc5YTUwNmViYjY1N2RmMjkgcHkzaworNzA4NDQgZGI1MDE4N2I0YzBjYjkxNWI2ZTUzZmIwNDMwZjVhYjA2NjY2NGE2ZiBsZWdhY3ktdHJ1bmsKKzcwODQ1IDYyNTlmODBkYzI0ZDYwODQ0YjY3MmE5OGU1ZDEyMDhlNmMwMmU0OTYgcHkzaworNzA4NDYgODQwMDMyZDllZmQ2MmNhYjdmOGYyNTU5YTU3ZWM5NDI5ODI3ZjZiNSBweTNrCis3MDg0OSA4NzE3MTI4M2QwMmY4ZGRmMzE2NzQ0ZjBkZTkzZTI3ZTVmODYxOWQwIGxlZ2FjeS10cnVuaworNzA4NTAgNmRkYmRmZGI3YTg2ZDlhZDgwZThmZTVmODU4OTAxODA3ODFhNTU1MSByZWxlYXNlMjYtbWFpbnQKKzcwODUxIGQ0OTVhMTFjNzZlOTg4NWVhYjRkOGIzODc2MTdjNTllMTQzZWUwMjcgbGVnYWN5LXRydW5rCis3MDg1MiA3NjYzYzQ5YzliZjZkY2M3YWYzOTk3OTgzOGUzOTE0YmJhMGJkNDZiIGxlZ2FjeS10cnVuaworNzA4NTMgMDhjODZmNDVhYzkxNTVjNWNlZDc3ZWNjZTdhNjY5MDMzNGVjYjYzMSBweTNrCis3MDg1NCBmZWE3NGQ5YjJhNWYzMjYxN2Y5OTA3MmEwNzQ1MTUyY2QyMDhmNmM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NTUgNjE1NDhiM2U0Y2E4M2VmMTdjODNiYTJhMjNhOGNmNGQ1NGEwMWI0MCBsZWdhY3ktdHJ1bmsKKzcwODU2IDc2NDFhM2YwYjJlYzM1ZWNiODcwYmJkYTY1ZGVmMjJkOWY4MzI5NWMgbGVnYWN5LXRydW5rCis3MDg1NyBlNWQ4ZjBjMGQ2MzQwNjEzMjVkMTU0YWFmOGUxN2VmMGYyZDNjOWVhIGxlZ2FjeS10cnVuaworNzA4NTggYTAyMGU2OTgzOGJhNzJhZTg4NTcxM2QzMmMwNTI3MzY0YTU0M2I1YSBsZWdhY3ktdHJ1bmsKKzcwODU5IGQwMjc1NTc0YzdjZmUzYWU3ZGRmOTU0YmM0M2QwZGZjYWNhN2I3OWIgcmVsZWFzZTI2LW1haW50Cis3MDg2MCAzZDU5ODE3NTA2OGNiYjJjOGE0MDNlYjA0YTYxNjM2NzY4M2IwNmNjIHB5M2sKKzcwODYxIGVmMjgxNmM1NmFjMmVlNjcyOTExMmZkOWI1ZDc3NTFiZGJjOTU3OTcgcHkzaworNzA4NjIgOGY1MWRkMDlmM2YyM2M3ZmFkZTk4ZDI2ZGQyZDlhYTY5ZGIwMGM5NSBweTNrCis3MDg2MyAxNTE2ZmEyMjNmYzE0YjQyOTJmMDYxZDgyNDg0ZmI3ZTU5ZWIxNjU2IHB5M2sKKzcwODY0IDUxMGVkMDU3Yjk1ZmE4NmM2MDVmNDhhODU4YjY2YWY4MzUxODlkZjIgbGVnYWN5LXRydW5rCis3MDg2NSA1NDZjNTAyMWYwMjc4ZTMzMGRkNTYzYzQ4NmU1ZWE3M2IxMGIyMDk2IHB5M2sKKzcwODY2IGUxNjA3ZjZkOWJlODc1Nzk4YTI1N2EwMmFkMTQxM2FjNDUwNDA2ZGEgbGVnYWN5LXRydW5rCis3MDg2NyBlNzBhNmM0NmIzYWI0MGYzM2JlZTM5ZWE3MDhiZTYyYTBjNmVjZDdiIGxlZ2FjeS10cnVuaworNzA4NjggZjRiOTAwMTVlZjAwOTkyMjY4YTY5ZTRjOWMxNDZiMWYwYmMzOGViNSBsZWdhY3ktdHJ1bmsKKzcwODY5IGQzZTMxYmQ1NDMwYWI2OWFhZWQ2NTQzODZjMWQ0MWVmNGQ1NGJlNDcgbGVnYWN5LXRydW5rCis3MDg3MCAwMmRiMmQzNDAxMzM0YjM1Y2ViOTcyNDhjMWMxZGJhY2ZhMTk3OGZjIGxlZ2FjeS10cnVuaworNzA4NzEgNTNjMWI1ZjY2OTY1MmZmZDE1MjgwZDk1ZjAyMmY3MGNhMDBiNzIxNiBsZWdhY3ktdHJ1bmsKKzcwODcyIGU2YjNlNjk2ZGJjZThkNDRjM2Y1OGY5MWE5MjU1YmJiNDIxMDE2ODcgbGVnYWN5LXRydW5rCis3MDg3MyA2MDk2ZWE4MWRlMGI3YTkzOGY0MjYwYTIxOWFlMGI0MmI5MTk4ZTY5IGxlZ2FjeS10cnVuaworNzA4NzQgNjhiN2U4MjE3YzdlNTA0NjE5M2ExMWU3NDY1MWRlODY1MmI4YzM1NiBsZWdhY3ktdHJ1bmsKKzcwODc1IDQ1YmE0NzVkNGU5OGM3MjU2NjcwZjAxYzU3ZTQ2YjkzZWRkNzdkMzcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg3NiBiMmFkYjdlYmRiNTRmMjc5MGIwZDA3MjQxNGIxODZjOTg5MzIwMTI4IGxlZ2FjeS10cnVuaworNzA4NzcgMTEyNjY5ZGZmMDRhYmFmMzUxZjI1MjI1YjBmMmM1MTc2M2YwNDE5ZiBsZWdhY3ktdHJ1bmsKKzcwODc4IGFiOWI3ZDVkYjkzNThmYjNkZGI3YTZkZmIyYTZkNGQwYWNmMzU1ODIgbGVnYWN5LXRydW5rCis3MDg3OSAzYWVhNzVhMzQzMzczZmQ5NjkwMmVlNzY3MzRhZTMyNmRlMGU2MzQ4IGxlZ2FjeS10cnVuaworNzA4ODAgMGMxN2Y3YmVlMmEwNjkwZGU2NWQ4OWQ5OTQ5ZWE1YWNkYWM2MmIyYiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODgxIGQ5YzhkMWE1ZGRlZTIzNTU4OTU3NTllNzIxMmEwZWIxNzVlM2RkODAgcmVsZWFzZTI2LW1haW50Cis3MDg4MiA5ZjhkNmRlODkwMzUyMWFiNjkyZDE0ZmFkMDQxMGI1N2RkZGYzMThlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4ODMgYjVhYThhYTc4YzBmMWMxMTQzMDY0NzA2NDI4YzFiZWI1MGQ1ZDU5ZCBsZWdhY3ktdHJ1bmsKKzcwODg0IGE1MzAxZWRhYTcwNGNiMzBjYjY2MjM2NmQ2YmUzNzVlYWQwOWE4ODcgcHkzaworNzA4ODUgMWQ3YTc3MmIzYjE4MzdiZTkwYmQwNzNkMTExYmMyMDEzYzhmMDZkNSBsZWdhY3ktdHJ1bmsKKzcwODg2IDJiOWM5MTY2ODc3NzRmNmEzM2U3NmViMmVhZmNjMTE2NWZjYTk1MTkgbGVnYWN5LXRydW5rCis3MDg4NyAwOWI3MGQ1ODg4YmZiNGEyMTUwZTM2YzhiZTRkZTkwNTQ1YWUxMWZmIHJlbGVhc2UzMC1tYWludAorNzA4ODggZWZhYTY3YmIzZjA2ZmE4ZTQxNmE2M2NmNTU3N2IyOWE4M2MyNzBiMyBsZWdhY3ktdHJ1bmsKKzcwODg5IGNiMDk2OTA3MWYyYWQ5NGM5ZjU4NDdjNzAwOTA3Y2FmZjI3NTZkNzAgbGVnYWN5LXRydW5rCis3MDg5MCA5NjA5ZWQ3ZGVhZjg5MDUzMDcxOGEwZWE3YWJkYzAxNmZiNjcxMWZlIGxlZ2FjeS10cnVuaworNzA4OTEgMDdjNWMwZDllNzAwMGFjZDFmZTQxOTg4NGNiZTI0MWM2YTNkYTM3MiBsZWdhY3ktdHJ1bmsKKzcwODkyIDIxYjI3ZTExNWRkMjUwMGI2MzZjNGM4Y2U0MjYyMWM5NWI2ZDdmODkgbGVnYWN5LXRydW5rCis3MDg5MyBmYmQ0MDU0ODEzMGRlN2NiNjBjMjYyMDI5M2UxYTFmOTFlNGIwN2Q0IGxlZ2FjeS10cnVuaworNzA4OTQgNTc0NDQ2OGU2MDliZGJmNThkZjE2NjYyZjE0Yjk0NjA2MjMwZDJiNiBsZWdhY3ktdHJ1bmsKKzcwODk1IDgwZmY4NWQ4N2Y2NzViZGNhNmNiODk1ZTMxMTIxNmE1MTI1ODkxY2UgcmVsZWFzZTI2LW1haW50Cis3MDg5NiBmNmQ5YzIwODkxNzA3NDE3MjJhY2M5YjM2N2U5MzcxY2M0ZTI3NGJjIGxlZ2FjeS10cnVuaworNzA4OTcgNTg3ZmNmYmUwOGI2Mzg5ODdhOWEwZmFmOGU0MDcwOWYxZDAwMzUyYyBsZWdhY3ktdHJ1bmsKKzcwODk4IDY2NDA5OTZmMDRlNzQ3MWJmNGQ2N2Y4ZTljN2YyZGIwNmNkNWUxZDMgcHkzaworNzA4OTkgM2JmOWFlNDM3NjA2YzRhMmM2YjMyY2E2ZTk5M2YzNzA0N2VlYjY2MyByZWxlYXNlMzAtbWFpbnQKKzcwOTAwIDIxYmEwYjNmZTgxOWZkNmMzN2U3ODIxMjY5ODBhNDQzYzhlMzNhMGEgcmVsZWFzZTI2LW1haW50Cis3MDkwMSAwZDA4M2ZiMDY2NWRmOTdiMDMyMTFjNDQ4YTY5OTZiOTQ3ZGExNWZhIGxlZ2FjeS10cnVuaworNzA5MDIgZmE5MjQzYmY1MjU2ODY2MjJiM2Q2Mjk2MTIxYmViYmYxYzUwMmNiMiBsZWdhY3ktdHJ1bmsKKzcwOTAzIGU1Mjg2YmUyNGVkNTEwNmFjYzg0YTM1ZjY2ZWQ2OWU2NGQ4ODA2ZGQgbGVnYWN5LXRydW5rCis3MDkwNCA3ZGYyNDQxMTBkZDVmYTE3OTVlOGIzYWE2ODdhMTJkN2EyNTVjZmNmIGxlZ2FjeS10cnVuaworNzA5MDUgYjY1Nzk3OGQ1NmFkNmUyMTNjNzhjNDczODRjOTllYzQxZTAyZmQxZCBsZWdhY3ktdHJ1bmsKKzcwOTA2IDVmM2ZlMWYyNmIzNmQwOWQ4ZjBkMzgzNjFmNzZjZTg5NmQyNDQ0ZDMgbGVnYWN5LXRydW5rCis3MDkwNyAxODM5Yjg1NTNhMmRiZGNhZTllYWViODA5YzE0ZTA4ZTlhNTA2YWMyIGxlZ2FjeS10cnVuaworNzA5MDggNWNmNzQxMzdjMGY4NjA4Y2RhOTg4NGIzMTQyNDk5MGFiMDI3NDU0NCBsZWdhY3ktdHJ1bmsKKzcwOTA5IGUyODE4YjlmOTY0YmU4MmE4ZTY1NzY2ZWNlMzU4MGUzNTcwNDVhNmYgcmVsZWFzZTI2LW1haW50Cis3MDkxMCA1ODU2ZmFlMDA5ZTg2ZDU2M2NhMzUxMGJmNDVhZWU2MWU5NDIxMGU0IGxlZ2FjeS10cnVuaworNzA5MTEgMWUwNTM0MzE5YTNlZTdlNjc1MTRmNGRiOGQ3NTM4NTBjMDFjNzc4YSByZWxlYXNlMjYtbWFpbnQKKzcwOTEyIDliOTZiZDA5MDkwOGE2NzkzOGIxNzU3YWIyZWY1OWFlYWJlMzRlZmIgbGVnYWN5LXRydW5rCis3MDkxMyAxMTEzNTIxMTJhZmE4ZWYyYjhiODIyY2E3NjNjMWM2MDA4OGM2ZmNiIHB5M2sKKzcwOTE0IGY3YjExYmYwMWExMjY0ZDIyMjM2NzIxODliYmRhNTFiNjkzMDJmZTEgcHkzaworNzA5MTUgNjk2NDZmOWNkNzBiNTExODVmNzUyZjczY2E1Y2JhZDg0ZmVlNjI5OCBsZWdhY3ktdHJ1bmsKKzcwOTE2IGZhM2IyZWQyMGQ4NTcyOGYyM2NkMDcxY2MxYzJiZjg5ZjdmZWRjNmUgcmVsZWFzZTMwLW1haW50Cis3MDkxNyA5MTRhNWRlZDFiZTNjOWY2ZjYwZWZiNjg3ZWZiMGNjMDVlZmViZDI3IHB5M2sKKzcwOTE4IGZmYTEzYWZmMjlkYjFkYzAwNzYzZDhjNjAyNzg5YTRkMjkyNWY5ZGEgbGVnYWN5LXRydW5rCis3MDkxOSA4ODQzYTg0MjdhOGM4MmFmMTE4NjliNzVlYTVmN2NmODE2MDAzNzQ5IHJlbGVhc2UzMC1tYWludAorNzA5MjAgODJhZGVkZmQyMzI0ZjRiMzkwZDk1M2IyZTk3NDRmOWE4ZjRlZmRkNSBsZWdhY3ktdHJ1bmsKKzcwOTIxIGY3NThkZDJhODk2ODliYzIwMDY0YWNiYTY3N2MzYTA2MGEzZDAxZTMgcHkzaworNzA5MjIgOTgxYTliM2Q5N2YzYWZlMmQ3MmFmNjg5YTkwYTYzZWU2YzVjN2UyOSBsZWdhY3ktdHJ1bmsKKzcwOTIzIGQzZjVhOWYwNDFkODQwY2ZmMTQ4MTRkNWU1MjFlM2M5NTlkNWMxZDcgcmVsZWFzZTI2LW1haW50Cis3MDkyNCAzMGQ4NzRiMWM0YTcyMzQzZWY2NDc4ZWJhMTE2ZmMxNGQwOTI0OGQzIHB5M2sKKzcwOTI1IDAwMmZhOTIwNWFhZTFhYmQ4NDM1ZDEzZjJhNDczZmI3YTgyODIxMTkgcHkzaworNzA5MjYgN2E3N2U0YmVhZTY2NWQ4MDczM2JiYTcyM2RkZTU1Yjg1YTdhYmE0MiByZWxlYXNlMzAtbWFpbnQKKzcwOTI3IDc2NTUxNDJmNTIyNDE0YWI5MjllOTFkMzljMjUwNmRmZDgxNWQ3NGMgbGVnYWN5LXRydW5rCis3MDkyOCBiNDAyNmFjNzgxMTQ2NTM1NzUyYWE4Zjc5NzNjNDBiMTQ3ZDlhMjZhIHB5M2sKKzcwOTI5IGY4NDM0MDg4NjkzNmNiMmU4NWNjZjlmNGZlNmIyZDVhODgwZWVlNzAgcHkzaworNzA5MzAgNTcwNDRhMzY1MmQ4YjQyZTA4MmVhOWEwYmY1MTQzMGVhMjU5YzJhZSBsZWdhY3ktdHJ1bmsKKzcwOTMxIDE4NGNhNjI5MzIxOGY5NmY0MmE2NzI5MTQ5NjcwMzE0YmEwMThhOTIgbGVnYWN5LXRydW5rCis3MDkzMiAwNGQ0MTg4ZmI0MTE2MDVlOTViYTQwZWZlYTExY2NkODQ1NGRkNjM1IHB5M2sKKzcwOTMzIDFhYzExOTNhNjFkMmY1ZjdkMjg0YWU5YzAwOTk4MWM0ODNkNzUwNmUgbGVnYWN5LXRydW5rCis3MDkzNCBlNTU1ZmQ4YzRiNmVlNzllZjAzNDJhMTY2NTU1N2NlMDQzN2JkNGNiIGxlZ2FjeS10cnVuaworNzA5MzUgZDg1MDkwYTQ4MGJhNGFiMGJhNGFmYTQ1Y2M1ZGZiYmMzZTBjN2JkZSBweTNrCis3MDkzNiA1MTNkOTZiZjBkNzAzNTI2ZDIxYzUyNjFiNGYyNDIwMDU1YWMyNjIzIGxlZ2FjeS10cnVuaworNzA5MzcgMWJhNjVhOTFlNTZiZTljYmZiMTY0ZjQ2YzczOTMxZmE3Y2Q4ZDMxYiBweTNrCis3MDkzOCA3OWE0MjA2MTc2NDEzY2RhZjhkYzFhMzFmMjU1ZmY3Y2ZmYzliZGMzIHB5M2sKKzcwOTM5IGNjMmM3MTMzZGE0ZjVmNDc2MmI4MmI1NjVhYjM4YmQ3YzI4NmZkNDQgbGVnYWN5LXRydW5rCis3MDk0MCA3NjIzNTU4MGFhM2Q0N2MwNDRiN2M5YzIzZmU3ZjQ3NTgzODc0OGUxIGxlZ2FjeS10cnVuaworNzA5NDEgZmZhODFiZDJlYzcyZDY3ZGM2MzEzOTU1N2Q1Y2M1OTA1NzNjYzgwNiBweTNrCis3MDk0MiBhY2ZjMThjZGNkZmI3NzJiZTQ2ZmQ3Yzc2N2FlYzcyYjg5NDJhNGZlIHB5M2sKKzcwOTQzIDA4MmIyNTBkNWVlNTBmZGI5MTRlOTkxOTRkNzE3ZDMxYjBlOTk1MWUgcHkzaworNzA5NDQgZmE3YzM3NjVkMTBmZjRjM2VmY2E5MWFiMjFmN2I4ZDBhMGZlOTQ1YSBsZWdhY3ktdHJ1bmsKKzcwOTQ1IDA1MzBhYWRmZjY5NmQxYjY2YzY2N2NiZDE5YjEwZDJjYzI1OTBlYzUgcHkzaworNzA5NDggNzM0N2Q5MTZmMTNhZTRjZTE5MjM0NjQxY2YxY2M0ZDUzM2Q1MTQyYiBweTNrCis3MDk1MCBkYTc0NDhlYmNlOGIxMTg2NTc3ODI4YjIxNDU5ZmFjZjQ0ZTU5YTI1IHJlbGVhc2UyNi1tYWludAorNzA5NTEgZGM1M2YzNzBjYTlkNzQ3NTNhOTUwMDU1N2U4ZGMzYmUwMmY1ZWJjNSBsZWdhY3ktdHJ1bmsKKzcwOTUyIDE5MTkwZTA1OGQ1OTQzMDVmMDkxNDQwZGNmNDdiMTNlNTljMWZkZTYgcHkzaworNzA5NTMgOTdmZDBkNzZhZTljZTdiMWY1NGViYzhlYzQ4NmY3NzY3ZThjMjUxMyBsZWdhY3ktdHJ1bmsKKzcwOTU0IDAyN2EzYWRjMGQ4ZjU2MjAwMGYyNDZhMDc0YmNjMThkNmMxMzhiM2UgbGVnYWN5LXRydW5rCis3MDk1NSBhYmY2ZGFkN2Q2NGZlMjgzODUyN2EwZjQ2MjhmODc0ZmU5ZTgyN2FkIHB5M2sKKzcwOTU2IDc2ZDYxYzEyNjIzY2Y5MWU3ODU1ZDZjMDdhY2NlMWNkMWMyNzgzMDcgbGVnYWN5LXRydW5rCis3MDk1NyA0NmYxY2U3NjE5OWViNDUxOTlmZGUxMzQ4OTEyNjUwMjVjYWNiNzYyIHB5M2sKKzcwOTU4IGRmNWNiMzgzNmIyODJhZWIyZTJhZTM2MTExZGJmOGU0Y2RlOWRiNzMgbGVnYWN5LXRydW5rCis3MDk1OSBjZTBlMjhkY2NiYzIyOGFiYjllOGExNzQ2MjYwNmYzYTc3YmU2MjE3IHB5M2sKKzcwOTYwIDhiNTFkOTYzNjBiMDNjNWM2NTIxYjUwYmUwZGM5Y2E0OTRhN2Q1YTggbGVnYWN5LXRydW5rCis3MDk2MSBjM2YwN2I2NzdhZmE2NzQ5MzZkMWVhMzQ4YTY5MTExYjFjMDZkZDE4IHJlbGVhc2UyNi1tYWludAorNzA5NjIgZTlmYzUyMmFhZTlhNzM5YzUzNzMxYzIyYmI5YmRkZDNlMDNiYjNmYiBsZWdhY3ktdHJ1bmsKKzcwOTYzIDM0NTY2NzFhNzJiYzE2NmI1MTE4MjMzZTcwMDY0MTZlOGEwYTkzYzAgbGVnYWN5LXRydW5rCis3MDk2NCAxOGJkM2NmNTI4N2ZmMDA4OWRkYzc2YTk4Y2Q0Mjg1N2EyZTA1NDgxIGxlZ2FjeS10cnVuaworNzA5NjUgYjVkMjNmYTliOGE0ODQ3ZjIzOWI3YWI0OWNlMTYzNDllNzQxMDdmYSBsZWdhY3ktdHJ1bmsKKzcwOTY2IDI4N2RmM2EwOWYzNTMwZTM1NWI3YzZlNzJkNTQ1MTNhZDdkN2RlMzEgcHkzaworNzA5NjggZThlZjEzYzk4NTk3MDljNWQ1YjYzMjczYmU4MjY5YzNhMGQ3YzNhMSBsZWdhY3ktdHJ1bmsKKzcwOTY5IDJlNGRiYjM5NTQxN2NiNmQ0MDNkNDVlYjdlZTQ4MDQyZmE3YjFiNzMgbGVnYWN5LXRydW5rCis3MDk3MCBjMzM3ZjIwMjhkOGM3N2UwNzZlZTcwZjUyNTlhNDFhMDNlY2M0NDVhIHJlbGVhc2UyNi1tYWludAorNzA5NzEgMTZjMTQ0MjYyMzc0NjIyMmIwMzBmYThiYTA2YWRjZDZhM2I2ZTFkNCByZWxlYXNlMjYtbWFpbnQKKzcwOTczIGNlM2I1Y2FmNDUyMmM4YTE5ODAyYWYxZTFkZjUxNmJlNzhkNjg5YjAgcmVsZWFzZTMwLW1haW50Cis3MDk3NCA4ZGZmNDA2NDAzYmUyZmY3ZTQwYmM2MmNlN2NiMmU1NTZkNzQ1ZjEyIHB5M2sKKzcwOTc1IGI4MTRiMGMzNTM0NzFjZmI0Yjc0NzIwODMyYTQ1ZmU1NmFmMzBiOWMgbGVnYWN5LXRydW5rCis3MDk3NiAyZDk1YzAxNDEyMTRmODRlNDg1YjAyYzhlY2ZjNGVmOWE2Zjc5MGIwIHB5M2sKKzcwOTc4IGNlZjhiODI1OWFjOThlYjk3OWZmMGNiYTIxNjE1NjRjZDQ5MTAxNjYgcHkzaworNzA5NzkgN2UyYmJiNGRiZjg3NTllMTU0MWQ3NWMzYjQwMzg4YTgyNTEzODM2MyBsZWdhY3ktdHJ1bmsKKzcwOTgwIGE3MzM3M2NjY2NjMjFlMGRmMjUzYWVlZGMzNTQxM2QyODczNTlkMWIgbGVnYWN5LXRydW5rCis3MDk4MSA0MmRhNzE1NGIyNzBiYmQ5NzkyOWIzMWRhYTk3NDM3NGRkM2I3ZTBkIGxlZ2FjeS10cnVuaworNzA5ODIgNjc1NDE1YzViOTEyNTc5MzhkYWUwZWUyY2FjNjljNzhiM2E0YTIwZiBweTNrCis3MDk4MyA2YjZhYzZhYzU1NjZhODQ1NzRjNTgyNzYzNTBkOTJjNWFkZjFiNDc2IHB5M2sKKzcwOTg0IGQ3ZjQ3OGM2ODFiOWUzMDVlOGZmYTMyOGRmNjhhODRkNmFjMGMwOTQgcHkzaworNzA5ODUgZjhhYThkM2Q2NjA3OGU5YmEwMDBiOTNhM2FlYmJhODk3NTkzN2YzZiByZWxlYXNlMjYtbWFpbnQKKzcwOTg2IGU5ZTg3ZDFhMzg5YzUzZDBiYjc1MThhYzk3NDIzN2M4YTA5ZGYwZGUgbGVnYWN5LXRydW5rCis3MDk4NyBmMTVlN2E5MzEzMzRkNTAwZTU3Y2Q1MzQ4MmQxZTAxYjEwNTcwMmY3IHB5M2sKKzcwOTg4IGFmZmNmMDcwNTQzOWE1YjZkNmJiYjMyNDk3OWZhNzc2MzhhZmJjYTEgcHkzaworNzA5ODkgZjk0Mjg5M2ZhNGQ4ZDkyYjY0YjZlMWZhODc2NzE1NmM0NGIzZDM5ZSByZWxlYXNlMjYtbWFpbnQKKzcwOTkwIGRhMmM2ZGQyNmU4OGRhZDAyMjQ1Y2FiNjIxNzA5NGQ5NzVlZTRkNGIgcmVsZWFzZTMwLW1haW50Cis3MDk5MiA5ZTU3OWJhYjc2ZjFjNTcyYTUyMDYxYWFlNzBlMjA0NmE3NTJjZGEyIGxlZ2FjeS10cnVuaworNzA5OTMgNTEwMmJiZjRhYjc0OTVjNTkxOGIyNzNmMWNmYTAxZGE0YjY2ZWJmMCBsZWdhY3ktdHJ1bmsKKzcwOTk0IDk4NTZiNWJlMjZjNGNhYmQ5MWMzYTE3ZWZlM2ViYzI4MGMwYTY3NTQgbGVnYWN5LXRydW5rCis3MDk5NSAzYjM0YzkzNzQ5NTUyYjAzMjMzMTBmNWUxZGEzYTc3NWY0ZTlhZTJhIGxlZ2FjeS10cnVuaworNzA5OTYgOWVkOWQyMDQxMzA2NjU0NDFjOGZlZTNhN2Y0ZTBhYWEwYTQwMjU5NSBweTNrCis3MDk5NyA4M2Y5ZTNkMTBlZGM0ODhmYzc4ZTExZWQ2MTIyMzVlZjgxZTllNzdjIGxlZ2FjeS10cnVuaworNzA5OTggZTNhMTk2OWZkYmU1ZTBhZmU5OTBiYTg0MTQwYWM0ZjY0YTM3MDM4NiBsZWdhY3ktdHJ1bmsKKzcxMDAwIDFlMWRhZGJiZGQwMWI5NzkzOTI0NjM3YzRkMmJiMzhmYTk2OWU1M2EgcHkzaworNzEwMDEgY2Y3M2ZiNWNjM2FjOWQ4M2JlY2RhNGNmZTM5YjJkMzdlYjJlNzMyZCBsZWdhY3ktdHJ1bmsKKzcxMDAyIGI0M2YxNGMxMDNiYmMzYWFkMTgzMzMzNWQxYWFhMjc0NzZjNGExZTMgcHkzaworNzEwMDQgMmRmYzMzNzE3NDkzOGY4NTViNWIzMDg1NDVjMzc2MWYzYWNhNzcxYiBsZWdhY3ktdHJ1bmsKKzcxMDA1IDc1NWJiMWY5YjBlNTg2ZmZmMTQ3NTgxMGYxM2FmNzU0ZmQ0OTg3OTQgcHkzaworNzEwMDYgMWI4ZDY4ZGFlNTcyMTI1NTMzMzlkNWY5NzhlM2Q0ZDM4YmQ5MmM0MSBsZWdhY3ktdHJ1bmsKKzcxMDA3IGViNjIyMTdiYmI1MzczN2JlNzRjNzBhYjczMTNiMjNjMThkMGE3ZDcgcHkzaworNzEwMDggODUwM2EzZDAyNTRkOGY2NDcwYmVhMzcyMDQwYmZmYzg5ZGU5OGRlZSBsZWdhY3ktdHJ1bmsKKzcxMDA5IGQzNDNlODAyYjI3NjBhYTcwMGNmMmZmN2YxN2NhYzM2Y2U1NDA0NzcgbGVnYWN5LXRydW5rCis3MTAxMCAwODBmZGZjNDNmOTQxODY4NjQ3ZDM5MjcwZDAxMDk2NTBkNGJiYTQ4IGxlZ2FjeS10cnVuaworNzEwMTEgMzZmMjViZmIzYTFiY2NkZDQ0M2Q3MjhmMzJhNTc1N2ZhNzdiZjBlMiBsZWdhY3ktdHJ1bmsKKzcxMDEyIGM1YTdlYmVjNTk4NDdhZmQ1NmQ0NjliNDY3MmZlNDY3NTQ2MzVkOWUgcHkzaworNzEwMTMgYTczZDczMjYzMTFkZDhjOTUwNzE1NjZiYWExMzU2MDU4ODA4NGUwMyBweTNrCis3MTAxNCBmMzkwNDY0NjM5ZmJlODU4MDExYjBjNjYwYjNiNjA3NTQwZDEzOTY2IGxlZ2FjeS10cnVuaworNzEwMTUgNDc1YmE0M2NjY2IxZTUyMmQzYjk1NTY4ZjE0MTU5MDczN2M5YjRkZiBweTNrCis3MTAxNiBjMDEzOGIyZDRlZWRjOTkwNTAwYmJiZmUxY2ZlNGQ1NGRjYTg1MWU4IHB5M2sKKzcxMDE3IDkyNmZkMjE3ZTJkY2ExMjUzMTA0YTAxNmUwNTE4OWI1OTZiNGViNTkgcHkzaworNzEwMTggMzNlYjE2OTdjMzgyZGU4NTgzYTliZWZmNjEwZDNjYjU1MWI4YTlmMSBweTNrCis3MTAxOSAzNWMzZTFkN2NmZGY2MTQ3MTczMTE4YzQ0MGFmNWI4MmRjNmE5ZTJjIGxlZ2FjeS10cnVuaworNzEwMjAgYmMxNWI0ODNkMzg0NmRhMGQ5ZWEzMDZiNzRiN2JjMWQ4ZDhlODk3ZCBweTNrCis3MTAyMSBhMGUyMTFiMDRiMmUwYzg0ZDAyNTQ2YzFkNTk0NTFjYzFmMmRhNGFhIHB5M2sKKzcxMDIyIDEwODZkN2VlOGIwYjNmZWZkNzA3OGUyNWQzNWY5YmFhMjE0YzlkNzggbGVnYWN5LXRydW5rCis3MTAyMyBiOTg0NDU2MTk2YWYyNjlkMTNmNWE5NDdlMzgyOGI0ZjAyODc1ZmYyIGxlZ2FjeS10cnVuaworNzEwMjQgN2U4NmZhMjU1ZmMyMjVjZDcyMGIxNmY4YWI2MmVkMjRiMjIwMmJjMiBsZWdhY3ktdHJ1bmsKKzcxMDI1IDkwNjkwZWI4NTM4MGJkM2I4YzIxMzA0ZjgwYmMzNjI0OTM1NWRlMjkgcmVsZWFzZTMwLW1haW50Cis3MTAyNiBmNjM0YzU0NTViNGYzYWI1MDUxYjI2M2Q1NjMyMmVjMGUzMmUyMDlhIGxlZ2FjeS10cnVuaworNzEwMjcgM2UxYTgwNTI1ZjE4YTAxMTFlYTgxNjRjNTYzZDQ1NzJhYzM3NmNmYyBweTNrCis3MTAyOCA5NTM1NTNhZThiODRmZjBlZjk4M2Q4YzIwZmJkMDJhYzg5MWU4YTZjIHJlbGVhc2UyNi1tYWludAorNzEwMjkgYzMzOTU5MzkyOTUzYjAxYWZlNjIxOTMzY2I5OWFmMWVlMDRmOWQwZCBsZWdhY3ktdHJ1bmsKKzcxMDMwIDM3ZmZlYWMzYTFhNjhkNmZmNTdiNzZkMDMxNWFhODBhNzhjNzY1OTggcHkzaworNzEwMzEgMWVmM2RhNmM0MzRjZmIyMjk3YjJkMmFhMjczMGE1OTY4ZGZlNzkzOCBsZWdhY3ktdHJ1bmsKKzcxMDMyIDFiNTBmNzhjZGRjYmI4NzFhNDMyODI5OTNiNDNlNmIzMmJmYTQ5ZGEgbGVnYWN5LXRydW5rCis3MTAzMyBmZDVlZTNkMGY1NTI4ZjY1NmQ2ODZhNjk2NTE0OGFmODliZTk3MjJhIGxlZ2FjeS10cnVuaworNzEwMzQgNTRlMDkzYmQ4ODdlYTc0ZDMwM2E1YjcxMjY1NmNlYjZlZTg3ZTZkNCBweTNrCis3MTAzNiAyM2EyZTE1ODRjMDJhZjJlZjRmOTIzM2U5N2I0NTM5N2ExNTIwMDhmIGxlZ2FjeS10cnVuaworNzEwMzcgOGQ4NGYyMjBmZjI3NzA4ZTA3NTdjOTVkOWU5NTI0MDQwNzc3NDgzNCBsZWdhY3ktdHJ1bmsKKzcxMDM4IDVmMTc5ZjZmMDdlMGZmODM0ODU0ODA4N2FhYTFiMGZlNTUwNWZmNzUgcHkzaworNzEwMzkgZmNiZTFhZDI0ZDQxMGVkN2Q4MzFkZTQ4ZGQ5YmYyMGRlYzVmOGYyNyByZWxlYXNlMjYtbWFpbnQKKzcxMDQwIDBiYzYyZDdkYmY1NDkyZjQyMDRkNjYyZTYwYzBkMGM2NmE0ZDYyNDYgcmVsZWFzZTMwLW1haW50Cis3MTA0MSA3MWY2MTI5ZGRhZDQ2NmY5NjNkYThjMGQ0MjllMzA4NjBhZTI2YTQyIGxlZ2FjeS10cnVuaworNzEwNDIgNTM5MTZhYWNjZjJjYzIzYzg2NTc0OTIwMWIyYjA5MTM2NWE4NWNiZSBweTNrCis3MTA0MyAxYWJmOWUzMGMxOWY5ZjIyZWUyOGZlMjFlYjUzNWM1M2E0YzIzYzRlIGxlZ2FjeS10cnVuaworNzEwNDUgYWNkZDExZTM5ZjBiMDIyNTc0MWFlMDJmZDI0MWE0ZDliOWQ2ZjA0OSBweTNrCis3MTA0NiBjNTg5NDgzYTcyYWNhNTU0Y2RhZTljZjI1NDk5Y2MyMDJiNGU1MGNkIGxlZ2FjeS10cnVuaworNzEwNDcgMzU4MGQzYzA3MmFlNTAzMmIxM2FkYTM4NGU2OWE5ZGJhZmYzNTIzMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDQ4IGEzM2JjODE4M2U0YzE3NjgyNjliNTRhMjVlNWU2NjM5MTQ5NmNmMjkgcmVsZWFzZTI2LW1haW50Cis3MTA0OSAyZTIyMzg2ODgzMmE4MWZmZjlmNzNiMGQzMWU0M2UxZTgwZTI2ZTdmIHJlbGVhc2UyNi1tYWludAorNzEwNTMgNzU5ZjQzYzk3ODg3OGFmOTE1MDc1NmI4NmUyNGQzYWFiM2Y4OGI4OCBweTNrCis3MTA1NCA5NDg5YTllN2FmZDQzODMyNjQ0YjY1MTE0MDU2OGFiMDM2MzYwNjNiIHB5M2sKKzcxMDU2IGM4MDFhNjdjZTI5MmU2Y2JiODRiODY4OGE4YWNlNmE5ZGRkMmMzM2QgbGVnYWN5LXRydW5rCis3MTA1NyBmODE0MjQ5NzJhZDExODc3Y2QxMmM3NDcxNTBkNTM3ODJkZGU4M2NhIHB5M2sKKzcxMDU4IDU0YjJjZDIxYWI0NmNlNGVkYjFiNjc5YTUyZmJhZjJiMzM0ZmJiNDMgbGVnYWN5LXRydW5rCis3MTA1OSA3ZmEwZjgxZDYwN2U3MWFlNmZmMmI5OTBmODAyZTZkN2EzNWNmZjBmIGxlZ2FjeS10cnVuaworNzEwNjAgY2RkNTQ3MTQ3NTY2N2ZjMDk4NWNlMzUyOWMxMGM1OGE3NGNhMGE2MyByZWxlYXNlMjYtbWFpbnQKKzcxMDYxIGQxYzUzNjdkNTdkNjU1NjE4YzAxMDFlMmNkZWQ1MGU5YjMyYzU3YjQgcHkzaworNzEwNjIgZTAyYzViNGU0ZTkyZWRjOTBhMDM2MWY5Mjg0MGI0MWJlMjY2MzFhNiByZWxlYXNlMzAtbWFpbnQKKzcxMDYzIDk4YzM0NDlkYTM2OTNiZDJmYmUyMmNiYWRlY2FlYTlhNGE3Mjk2YTcgcHkzaworNzEwNjQgMWI0ODM5MTFiMmU2NjhlMDQwYzMzNDE0Y2Y5YzEzZTg0YTMyYTlhMyBweTNrCis3MTA2NSBiZWQ1MjRlYzA4NTBjZWI2ZDQ3N2ZjODFiMjdmNzEyMzdiZjE4ZGM4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNjYgNjY0NjRkYjM4MmIxNGQ1YmMwNDZkMTBmOGUzNDdkNDRlN2Y3MmZhMSBweTNrCis3MTA2NyA5YjUzNWNlOTlkMmRhYTdiZDIxYTNhOWI1MzAxMmRiNGQzMTE3YzhkIHB5M2sKKzcxMDY4IGQyOGVhMmVlNzA3MGQzNjA1MDUwNTgwMTMxOGM5OTlkOGVjMTkxMmIgcmVsZWFzZTMwLW1haW50Cis3MTA2OSA2NzJmZDdhNDFkMzVmMmJkOGE4ZjFhMTgyYmJlYzhlMDZiNDNmYTEwIHJlbGVhc2UzMC1tYWludAorNzEwNzAgNzVlZmQ3NTc0MzRiODVmODVjNWU3ZjIyNWZlMGNmMWFjMzdhYmY2MyBsZWdhY3ktdHJ1bmsKKzcxMDcxIGIzZDVmNjg1ZDI3YWNjYTVlYTY2OTg0MjI5OTIxNzY3OWE0NjA2MTEgcHkzaworNzEwNzIgY2JlMTkxMzBiMmViNjMxMTM2NjZlODdiNjU0NjU1OWUxNDM4MWRlNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDczIDIwZTdhYTQyZDZmZTRkOTgxNzNjMTk3MzVjMjI1NDk5YWQ2Y2Q1YjIgbGVnYWN5LXRydW5rCis3MTA3NCBmMTNlZThhYzZkNTQ1Mjc3NTFkMjgxYjM5OGExYjU5ODVkYzQxN2U4IHB5M2sKKzcxMDc1IGYzYzRmZjIxNGIxMWVjNmYxMjM5Y2ZiNmQwMTU1NDBiYzA5ZGY4Y2MgbGVnYWN5LXRydW5rCis3MTA3NiA1YzM3YWIwN2E3ZGMzNDE5ODgyNmVjZmYzNWE3NGFlOTM4NDBkZjIzIHB5M2sKKzcxMDc3IDliZTJlMTZhNzFkZjViNjU1ODQzNDRmYjExYTEyYzVjMTg2OGRkMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA3OCAzOWJlOWFjODliZTk4ZmZjYzI5ZjhlMmJlYmMxZDRhNTE1NGQ2Y2U2IGxlZ2FjeS10cnVuaworNzEwNzkgZjYyMDJiM2VmOGVhOThlNGUwYmUyYmJhZmViZjE0M2Q4MzkwNGQ1ZCBweTNrCis3MTA4MCAxODNkNjA3MmUxZTVkZjkzZjhjZmYzOTBiMWY4NDdiM2Q2OWEwOGE2IHJlbGVhc2UyNi1tYWludAorNzEwODEgMWJmNjcxMjE3YWJmM2NmNzlmN2VlYmEyYzE2MmJlNGVjNThjODM2NSByZWxlYXNlMzAtbWFpbnQKKzcxMDgyIGRjYjM2OGZiNmFkYmZhZTVhZThjOWMzMzE4YTI2ZGU1ZTVjZjI5YmQgbGVnYWN5LXRydW5rCis3MTA4MyA5ODY4NmYzMDdkZTQyNmM2MDlmY2RlMGQ5MThmMzMzMTUyZGIzNmQyIHJlbGVhc2UyNi1tYWludAorNzEwODQgY2JmYmZmMjMzZWY1YzE3Y2Y2ZGVhOWU0OGIxNGJkY2M2OWY0NTU4MCBweTNrCis3MTA4NSAyYTI3ZjlhZGE4ZTMzZTQ3OTQ4MTFmMWM3Mjc0Mzk2NmEyODI0MDg4IHJlbGVhc2UyNi1tYWludAorNzEwODYgY2FjMjA5Y2Y1ZTRjYzczOTAyMzM5ZTg3MDMxN2M1OWY5NTU4MjA5NSByZWxlYXNlMzAtbWFpbnQKKzcxMDg3IGFlNDgyZTUyYTE2YmMwODllOTE1ZWVjMGIwYjMxOTRkNWZiM2M0Y2YgcHkzaworNzEwODggNGU1ZmU4YjZkMTAxYzhmMzYxZDY0YjcwMThkMTVkNmQwN2Y3MWQxYSBweTNrCis3MTA4OSBiNDFjMjlkZWJkZjY5YTc5MDkyNmNkMjk5YzMwNzU2M2ZhNTIzM2RkIHB5M2sKKzcxMDkwIDY5NjYyYmMzYTlmNmI2ZDMyMDg3MWJlOWM5MDZmZjY0M2UyYmY1YjggcHkzaworNzEwOTEgNjQzZjQ0YWQzODdmYjQ2NDMwYjA2NWFmYTg2NjVlNjk2MGVlMjYwMSBweTNrCis3MTA5MiA4YTI2Zjk2MjBiMjExOGQ3YmIyNDJlMDBlMTA4NzU1Nzc5YmZjN2FiIHB5M2sKKzcxMDkzIDQ3NTdkZGFhODk3ZGVjOTNmMmY1YTNkMWI4OTlkZDE3YzIwNTQxMGYgcHkzaworNzEwOTQgNjg5NDM0NDU0Y2I4ZTUzMTI4OGM1MmU4ODM4YWU0ZDRiZWFiZWU2NSBsZWdhY3ktdHJ1bmsKKzcxMDk1IGE5ODA5MTA2NmUwMWIyMDYzODgxNDdmYzVmY2UwNmU0NWNiOWEwMmUgcHkzaworNzEwOTYgMjgwOTZlZDczMTUzZWQ2OTY4NzBiYWRlY2IwZDgyOWUwZGQ3NGM4NiBweTNrCis3MTA5NyBjMmY5ZTEzNTQyYWIyYWMyZjk1ZDBmMGRhNjliMzUwMWZmYjg3ZjMzIHJlbGVhc2UzMC1tYWludAorNzExMDEgMTVjOGU5ZGQxOTk2N2ZkMDExMTcxN2ZjY2M2OGZhMjIzNTVkMzcxNyBsZWdhY3ktdHJ1bmsKKzcxMTAyIDVmNTU4N2YzYzRkNTVhYmMyM2QxZWRjNmEyZTRmOWQwMmVlYTBlOTkgbGVnYWN5LXRydW5rCis3MTEwMyA0NDk1NGU2YTEzNTMyM2I0NDAxNzAxZjRjYWY0YWRjYWE5MmExNTQ2IGxlZ2FjeS10cnVuaworNzExMDQgZmFhMzQ3M2U0NTM0NDg0YmMyM2ZkYmUwMjE2MTk5MzliMTdjYTVhNyByZWxlYXNlMjYtbWFpbnQKKzcxMTA1IGMzYzZiNzM3NGJkYTJlZDhkNzFjYTljZjMzMmI4ODRlNzlkYWQ1YjIgcmVsZWFzZTI2LW1haW50Cis3MTEwNiBkMTlkODkwMTM4ZjFlY2IxZjg0OTJjZjM2OWMwNWE1YTdmMTM4NzI5IGxlZ2FjeS10cnVuaworNzExMDcgMmRmMTUxN2Q4NjhjOWFmMDcwYTg1NTUyOTJlODI0NjU1MTkwYmI2OSBweTNrCis3MTEwOCA3YmY2MGQ3YjA5ZTlhMjA2MmQyNTU2MDg3OWFkYjc1YjVjODhjYjNlIHB5M2sKKzcxMTA5IGI0ZjE1N2Y4ZTRhN2I5OGI1MDI5NWRmNTBiZmI2OTlhMjdhMGJlZTQgcHkzaworNzExMTAgMWZkYjU2NTllZTA4OTY4MmMxZGQ1ZmZkMzg0Y2IzZDJhYWM0YzY2MiBweTNrCis3MTExMiAwNTViMzAyN2Q1NjhiOTYzOTQxMzIxNmM3MjY2MTgwNGQ3ZGI2YjI0IHB5M2sKKzcxMTEzIDZjZjE2ZWE4YTE2ZGU2YjczNDdlM2ViNWQ3YjY0MWRlZTVkM2YwODAgcHkzaworNzExMTQgYjRkZWZkZDdmNDMxYjUxNjljMDY2ZDM1OTc1ZGIzNTBjZWQxM2FmZSBweTNrCis3MTExNSBmYTJhYWM0MzRkMDYzNjU2Yzc3ZTlhNTNhMTY1NzI5NjA3NzIwYWY5IHB5M2sKKzcxMTE2IGZiN2I3NzI3YTczMWFjNjA5ZDgzNGJmZDQyMmY1MTU1ZjJkN2JhMGEgcHkzaworNzExMTcgNTE3NGNjZmIwMWI4MjEzOTUyOTQ4N2IwNmEwNjg0OTAwZGMxOWM2ZSByZWxlYXNlMzAtbWFpbnQKKzcxMTE4IDQ5MjUxOTZhMmZkOGJkNTIyYzBkMDk1YjQxMWU1N2UwMzkwNjVjNGYgcHkzaworNzExMTkgZjEyMWJkOTU2YWUwNTEwOWYzNWY3YmUzM2EzOGZjMjk2NjZmNjVmOSBsZWdhY3ktdHJ1bmsKKzcxMTIwIDkwNDE5ZTFiNDY1NmI1OGZiZDY5Y2QyNDdmOTU4MDU3ZmUwY2NhMDUgcmVsZWFzZTMwLW1haW50Cis3MTEyMSA4YjUzYjk2OWI2MjgxZDgwMTdjNDA4ZDNjNjM5NjBlYWIxNmQ2MDgyIHJlbGVhc2UyNi1tYWludAorNzExMjIgNTQ3YTIzOGEyYWM0OTI1ODFkMzk1NzAzNmYzMjNkZmY5Nzk5MGMyNiBweTNrCis3MTEyMyAxNDZhOGZkZGJiYTI3Nzg3Nzk0MGY1YTM5M2QxODY3NjZkZGFiYzQ4IGxlZ2FjeS10cnVuaworNzExMjQgYjM4N2NhN2QwZmU2MmNmZWRiYTU0OGMzNDM5NTE4YjBlZjU3OWIyMSByZWxlYXNlMjYtbWFpbnQKKzcxMTI1IGExYmViMTZjZjIzNjk0ZDhlMmQwZjRjM2QwZGVmNDhjZjdmMDEyN2IgcHkzaworNzExMjYgYmMwODRhOTczMThiOTMzNDM3MWYzZmNjODg4Njk1OGU1YWU5ZTA2ZiBsZWdhY3ktdHJ1bmsKKzcxMTI3IDVmNjZkZWFkMTE3NWEwOGQ4NGJjZGNjNzZhYzRjMTNmN2U5ZDI1NjIgbGVnYWN5LXRydW5rCis3MTEyOCBjNGNhY2JjOWIzZmQyNDQyM2ZlOWM2Njk5NzNiNGMyMThlNzU5YzQ5IHB5M2sKKzcxMTI5IGE4MGUyZWEzODllMzBiM2YwNzczMzJiMmJjNGQwN2JjZDFkNGUwMTkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMCA1NDQ3ZTFmN2RiZmY0Y2I2ODY1OWQwZjhlMjlmMjBhNDM0ZTY3ODkxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzEgMjQ3NGZhOWMzODU1OTMyMTYyY2FmMzJmNDNlM2RmMWRjMTQxYzBlMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMyIDdkODdlN2MwNmI1OWQwNDQwOWFjYWEyMDg3YWY5ZTQwMjFkYWRmMDEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMyA0OGEwMmQ1ZjVkNDI4ZDJkYjlkYmUwODVjZjFkYTEyZjNmNDUxOTZkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzQgMjRmMWE5ODkyZDQ5Y2JlOTU5MTdlNzVjMTU0OWExNzUzNTkyZTc1OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM1IDQyMjI0OGU2YjczYjkwZDNmNzVkYjY2Mzg0ZDI5ZjI5ZTc2YmUxMWIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNiA4MTc1YmMwMzEzNGUzMmI4YWIwM2RmODQ3NDVmNTg5YTRlZDJhYzUxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzcgNjYxYmQ1NTgzNjMyMTBjMWRmMzhlZDBiMDMzMWFjYWZkOTFlOGRiZCBweTNrCis3MTEzOCBlMjU0MmE3ZDRhY2ZjZjc2ZmQ2ZDVhOTQ2NGU4ZGNhMDM5NDU5NmJlIHB5M2sKKzcxMTM5IGM5ZTQ4ZTAwOGJiNTM2YTQ2YTdmOTY0NjE2MDBmZjI1MDEzMjI2MmMgcHkzaworNzExNDAgNjgzMDBkYTEyZGZlMGRjOGJkYTE5YjBkZGIwNTY2YWU3Y2Q5ZDI5MCBweTNrCis3MTE0MSA5NDE1MDE3NTE5NjkxMmRhNzgxNGRmYWEwNjE1NDZlMDE5NTNkZWNlIHB5M2sKKzcxMTQyIDYwMTlmYjFkYTllMTEzNTBiNWI4ZjY4YjY1YzZlYmM4NzRhOWExMGMgcHkzaworNzExNDMgY2E4Y2ViYTczNzE0N2ZjZGYzMGIwMjY1Njc1Yzk5ZWU0M2ExNGUxYiBweTNrCis3MTE0NCBkNjM4ZWNkZTM1NzI1OTQ0YmRlNTc5MjM5N2JiODIxNDg5MWY2Nzc4IHB5M2sKKzcxMTQ1IDc0Y2YyMGE2MWJlY2I2NzI2MGMzYTM5ZmEwYWUzN2VhNWRjMjEwYzYgcmVsZWFzZTI2LW1haW50Cis3MTE0NiA3MTZhY2NkNGI2MDNlOTI2NDgzMzBjNmY5YzQxZTAzNGZmMmFlNGVmIHB5M2sKKzcxMTQ3IDkzZTkyNDA5Y2I0NjhlOTZkMzllODhjNWFiZGI1MDE5YmY3YTFiMGIgcHkzaworNzExNDggZDM2YWZkMDU4ZDhiYjZjZTUwZDQyNTdmYzhlZmIxNzM5NzYzYWE1NiBweTNrCis3MTE0OSBmNjVmMDExODMzMWMyOTE4MDU1NzcxMDYzNTJlM2Y1M2Q3ODE3NmNmIGxlZ2FjeS10cnVuaworNzExNTAgZTc0NWNlZjhmNDA3NWJjOTM3MjM3N2ZjMWYxYWM5ZmViYmUyZDI0YSBsZWdhY3ktdHJ1bmsKKzcxMTUxIDYxYjUxMWQwNWVlOTQ3MjI0N2M2MjM0NzU1ZjkyOThmM2Y2ZjE2YWMgcHkzaworNzExNTIgNjM0NTAyYmU4ZGNjYmRlNTRhNDU3ZThjOTI2ZTY2ZTM0NDE4N2YwMyBsZWdhY3ktdHJ1bmsKKzcxMTUzIGNiNThjOTczOTg1YzljMmVkMWI5YTUwNGRhNjFmOWY0ZDA5Y2M1NWMgcmVsZWFzZTI2LW1haW50Cis3MTE1NCA3M2E3ZTZhYmE3YjIxMmYwZTkxMDM1Y2YxZGViM2I1NGYzN2ZmOTZkIHB5M2sKKzcxMTU1IDM3MzQ2ZGYyYjg4NGZkZWYzNzc3NDRmZTg1NjQ0YzBlN2FjYmU2ODMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE1NiA4YzdjNWEzNThkYjk1ZTQxZWUxZjBiYTY2YmIxNTliM2VjYzllM2NlIHB5M2sKKzcxMTU3IDE3Nzg0MTg1YWQ5MzUyNTFmZWY2M2RjNjI4NmQwNTI3ZjQ1YTQwNjcgcHkzaworNzExNTggZTY1NjhiM2MyYWU3NWI2NzQ0NTUyMTA4ZjI3YzQxNDgwMDUyODA0OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTU5IDJmNTJhM2QxODVhMzBkN2ZmOWNmMmFhZTFlYzVmNDBiMmI0N2ZkYzcgbGVnYWN5LXRydW5rCis3MTE2MCAzZWY5NzU2ZmZkYWNkYTIxNTRjZjQwZTE1NjYwMjk2ZDYyNTE0OTNiIHJlbGVhc2UyNi1tYWludAorNzExNjEgYmQ3NGM0ZWQwM2E0NmVlMTM2ZjQ1YTRlNTlhZTRiNTkyNDNmNmEwMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTYyIDFkZjM3ZjA5NzQ3YzRhOWM3NzdlMTM5OTdiZWQzZDM1YjdlMWNlYmYgcHkzaworNzExNjMgNzEzNTVkZGYzNzNlZDlkN2M5ZjMzMmFmMzM4ZTg4M2Y1NGUzZjU5MCBsZWdhY3ktdHJ1bmsKKzcxMTY0IGE4ZjE3Y2Q4MmQ4OWYwMjEyNDk5MzZmODE2OTkwYjIyNGZlMmQ2MmUgcmVsZWFzZTI2LW1haW50Cis3MTE2NSBhYTg5MzA2NzJhYTRkODIzYTI1ZmY3ODMyNzExODM4NTg4NDIwMTk2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjYgMWY4MDc5ZWNkMzcwMGM4NjVhYjIwMWU0NzIxYjNkYmIyYzNkMzA2MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY3IDczYjAxNmVjNWI4ZmE3OGFjNTg2MTM5MmJhMDNkYjIxNmFiYWJlYmMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2OCAzNDc2YWQ3NTkwYjc4MGM4YzVjMTYxNDQ0NzVjMDgxNDM2YTgwMGJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjkgYzUwYzA3OWIwOWViNjcxNjYxOTM1MjFkOTkyMGM0OTEwOGNkY2UwNSBweTNrCis3MTE3MCAyOGUzMGE1YzYzOWQ3ZjBkY2U2MTYwYTJmN2RhZmE1Y2NlNGE2MzhiIHB5M2sKKzcxMTcxIGFkYmRlNWMzYjVmZTRkZjQwYzdmOWZmNjNkMTdmMTEzODNiM2VmNjYgcHkzaworNzExNzIgNDU4ZWJlNGY1YTU4OGY2ODYxZDI0MjhmYzJkYjkzZDY4MGFkOGFmNCBweTNrCis3MTE3MyA3ZWUxY2VmYTZkNjJiOTI5YTFjNWU0YWIzNmRmOTlkNWViOTEzY2QyIHB5M2sKKzcxMTc0IDU4YTdjNTA5NDUyMzA5N2Y2MjcwN2MyZGQ4Nzc3MGVjZGRjMGE5MDQgcHkzaworNzExNzUgYTNiYmRkOTNiMzg5YTY2NTI0MGM1MmMwZjgzYzc0ZmQ4ZjA5MzU5ZCBsZWdhY3ktdHJ1bmsKKzcxMTc2IGQ3Yzk3NTViNjE3NzMzMDA0MGEyNjUxM2IwZmZiMzRiODgzN2FiMWEgcHkzaworNzExNzcgY2I0NzgxNTI0NzA0OTZkZWJjYjk1M2RmZDc4ODFmNTM4ZTc3Yzg1OCBweTNrCis3MTE3OCAyYWFkYzFhZmM5YTE5NGQwYTBjZjcxMTVkMTBkMTFiN2QzZGFiYzk3IHB5M2sKKzcxMTc5IDUzNDc3NDBkNGQ1ZGQ0ZWIzMTk4ZmZmMjc2MjdkMjY2ZmMzMWVhZjggbGVnYWN5LXRydW5rCis3MTE4MCBkMmUxNTYyOWZjMjk3YTAwNzE3ZmJmODRjMjczYmUyMTFiMDhmZjFiIHB5M2sKKzcxMTgxIDdjMmEwNGUyMThmMjFiOTNkMGM3ZDU3NmNlNmUyNmZlNzViYTY0YjMgcmVsZWFzZTI2LW1haW50Cis3MTE4MiA0NmI2Yjg0MTVkZWU3NmNmYWFjMTUzNmIzM2RiN2I5ZTVjN2RhOWI2IHJlbGVhc2UzMC1tYWludAorNzExODMgYjE0ZTllYzlkOTlmNWVjYzFiNjFhMzJjYzdiY2M5ZWI2NDQ5ZDU0OCBweTNrCis3MTE4NCA5YTkxMmE1NzE2NGY2NWJiNTEzYWJlOWUyMzhhNTM0NDU0ZThlZTA2IHB5M2sKKzcxMTg1IDY4YTllNmUzOGFmYThkZDkyYWE1MWJjNGM3MGNlY2M1NzAxMGRkN2UgcHkzaworNzExODYgYzE3ZWYxNGJkZjQxY2FhM2VhZDQ2Yzk2Mjk2YjAwNzdhMjc5Yzc1ZCBweTNrCis3MTE4NyAzNTYzMGMzZWRkMzNjODA5MGI1NDc3YTc5YzI4ODNiOTllMjczZmE0IHB5M2sKKzcxMTg4IGZmNzkzM2Y0NGM0MTYyZjU5NDRhMDhkZTdhZTc5MmM1MTlmZWE4M2EgcHkzaworNzExODkgYWFjZjUwOTRhMWI1ODBmZWNlY2U0YTYxNGU3NDM1YzA2MWNkMzg5NyBweTNrCis3MTE5MCAxZDc5M2VlMTViNmY2ZThkOGQxMzkyNGU5MWE4N2FlMzg1MTVlZGVjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTEgNDlhZWY0MTQxYjkzZjI4NzUzZjdjYWE1NWU4YjRlZjg3MjlkNTU3MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTkyIDViYzhjZjNkOTBiMzU1MzEyODMzNTdhYjA2MmFkYWI3ZmFiMGRlNWEgcHkzaworNzExOTMgYTAxNGRjNDdiNTUyZWI3ZTM3MmI3NDFmZThkZWJlZWQ1NTFhNWM5YiBweTNrCis3MTE5NCBlZTQzMGU1MDc1ZGIyYWRmODEyNGU2Yjk0OTE2YTg5Y2E0MWQzMTcxIHB5M2sKKzcxMTk1IDllZjdiZjRkODU5MDg2Mzk5MjhiYjE1Zjg4N2E0YjEyMzhhYTM5NzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5NiA2ZGU4NjM2Y2Q4MTczMWU5NDM1MDkzOGRmNmE2NjljMDE3NDAzY2Y4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTcgYjRlZjUwMmZjY2EwMjg3ZWNjNzk0NWQyMjk1NGNjZGMxMjI2NjA2ZiBweTNrCis3MTE5OSBiZGM1NzQ3ODI5MTlkNzhjMTE1MjBkNDM3NzQ0MjU2MWIwM2I1NzgzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMDAgZTAyYmRkNjA4NWZmYmViNWI2ZDI5OTA2Y2ZhNDY2Nzg2YjkyNmJjZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjAxIDc2MTA0OGEwYThkOTliOTY3MGRlYmQ1ODYzYjRjZmYzZTJkMTdkMzYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIwMiAzMjcyNjNmZDJlNjY2M2ExMWNmNmIzNGVlNDZjMWFhYmM3ZDRmNGI2IHB5M2sKKzcxMjAzIDE5YjBkYjEzNTRmNzBlNzZiOWE1N2M5MGJjMDZlNzcxOWFlNDcwNTAgbGVnYWN5LXRydW5rCis3MTIwNCBkOTAwMjQ2MjA1Njg3ZTkxZDE0MTUzMTdiY2Q5ZDJkMjNkMDQ2MDQ4IHJlbGVhc2UyNi1tYWludAorNzEyMDUgZmRjZmNhNzE1YmYzZGFkMGRlOGJiNDY0NDYzOTkwOTQ1OWY3MjhmYiBweTNrCis3MTIwNiBlNmU1YTBlNDM1NDM0NmI1M2Q5N2I3ZmE4ODM4NTc0MjhkNWFlNTZmIGxlZ2FjeS10cnVuaworNzEyMDcgMGZlMzhiYmQ5NzNjZGYxYjNjYTViM2QwZDM1YjczMzYzMjlmOTA0NCBweTNrCis3MTIwOCBkZTVmMTg2MzlhNmNlMWZjMzlmMzY2YjBmYjc1NjU1NjdiYWI0NzA3IGxlZ2FjeS10cnVuaworNzEyMDkgNzhmMzEwYjk2MWMwMmZjYmM3MjNiMGRiMDY2MzhmMWQ1MmEyZjU5ZSBweTNrCis3MTIxMCA5Mzg0YjQzZDQyNmZlZTVmYTRkNTVkZTU2ZTUyNWQzOGZkOGE5NDcwIGxlZ2FjeS10cnVuaworNzEyMTEgYWRkZDc1M2JhNGQ5NmI3MzY2YmQzOGJhNTk3NWRmYmI5MzdmZGJmYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjEyIDE4ZjFjNTZjYTZmZGJmMGQzMGU4YTRiNDhhYzM0NGQ5Y2MyMDNhNTEgbGVnYWN5LXRydW5rCis3MTIxMyAwZjc3MDhiMDEyOGMwN2FlYTQ0NTU3Nzk0M2QyM2MzN2EzNTI1ZGZkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMTQgMWVmMDJlZjQ4YzQyNGJmYzg5ZjM1NGNjOGY4OTU5MjI5MmZlMDBhNSBsZWdhY3ktdHJ1bmsKKzcxMjE1IDVlOGRlNmMzZTAwMjc1MjYyMzI2NjVkM2I0YjEwZDFlMmQ0MTE1ZDQgbGVnYWN5LXRydW5rCis3MTIxNiBlNDIxYTkyYjI1MjA3OGRhN2ZhNjBhZjUwZDY5ODNjZmFhZGU5MTgzIGxlZ2FjeS10cnVuaworNzEyMTcgMDAwNmIyYWRjN2U0MDc4MzliODY2ZGNkODJjYWZmODYxMzQ4N2U5NSBsZWdhY3ktdHJ1bmsKKzcxMjE4IDU4N2EyYWVkMzlmMmVkM2RhNDEwNDZiZGYzMzg2NWI3ZGI3MzZlOTIgcmVsZWFzZTI2LW1haW50Cis3MTIxOSBlYjg0NTMwNTc3YTUzYTI5OWNlZTZhNzRhNTA5YzYzMjZlY2ZmYWNkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjAgZjVjYjNiMzNiNzk0MWE3MDRhMjlmMWZjNjI1NTMxN2YxZjE1MjMyMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjIxIGY1NTBlMjQ2MzA2Mjk5M2FlOWNiYWJkNWU4ZjU2YzU2Y2MyODNkMmIgbGVnYWN5LXRydW5rCis3MTIyMiAyYmJiNjBjMDBlYjcyNTc4MjI0MGMzODBkZDJmNjk3YzE1YjMzMjFhIGxlZ2FjeS10cnVuaworNzEyMjMgMDFmNGU4ODAzZWNkZTAwNjE0MGY0NzY4MDc2NzQ2ZDJkYTgxYTA0MyBweTNrCis3MTIyNCA5OGY0MjM5MjgzNWI2OWFlZDVmYmY4MDNmN2I5ZjM1MzI4MzIyOTAyIHB5M2sKKzcxMjI1IGE3Yzc0ZTA5ZGUzZGYwYWUwMDE2YzVkMmZjYjdjMjYxNmUwNzBkMDcgbGVnYWN5LXRydW5rCis3MTIyNiAxNTJlMDhkZmMxYWY1ZTU3YTRlMzIyYzQ4YTQ5NDhjNGU3MDUxOTg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjcgNThkMTcxNzgwZmQ4OTU0NTM5Y2I1NjFmNDIwY2IxOTFhNzg1Y2U5YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjI4IDVjYmRiNTE1N2ZhNzZjNTAwN2I0ZjZlNzM1YWM3Y2Y2YTQwNmUwNmMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyOSBiZmZhNzc2OTY5MjZkY2Y1OTFjMWZlMzcyZTAwOWZiZjI4OTFkYmIyIGxlZ2FjeS10cnVuaworNzEyMzAgZWIzMmExNTM3ZGQ3ZjhiOWVmZDM3ZDYzZGVjZTM0MmZmOTQxMjkyNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjMxIGYxY2VjMzc2OThmZThkMDQxOTQ1NWFiMWQ0MTAwYzEwMDQxODg1MjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzMiA2NjM1NGJkZGRjZjc2ZGQ0ZjMxODhiMjRlMTA0MDRmOGU3MmI2NTA2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzMgMWNiZWFiZjg4OGExNDY0MmMxYzEwZDY4MjhhMzFjNzk5ODM3NjVkNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjM0IGViOTQ1MTdkZmJkNmQ3YWZiMGViYjk4MmJmYzEzNDQ4YWQxN2QwOGMgbGVnYWN5LXRydW5rCis3MTIzNSA4NWM1Y2U2ZDdmOWM3Y2IwOWI2MjE0ZjQwNDhkOTY3MzZhZmYxMjc0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzYgZWQ3ODMzZDQ4MmM4MWYyZTc3ZmY4YzRlOWQ1ZDkyZWJiMDI0MmQ5OSByZWxlYXNlMzAtbWFpbnQKKzcxMjM3IDk3NmIzMDVhYWRkMjllMGUyZmY5MDJmOWUzN2VkNTQ4MDQ1MTdjNGEgbGVnYWN5LXRydW5rCis3MTIzOCA2ZWFmOTc3MjFkM2Q4YWQxZjExMGNmOWM1YzFlZDExODAyYjg3ZjViIGxlZ2FjeS10cnVuaworNzEyMzkgMzdkNmFmNmY4NWFhYzRkZDhkNDQ3ZDllZTFlMTQyZTg3YTBlZDkzZiBweTNrCis3MTI0MCA4YzYxZTdjYWEwNmNmNzgwYTQ1ODc1MjY3ODI5OWVkMzdmZGE1M2JhIGxlZ2FjeS10cnVuaworNzEyNDEgZGExZTU0ODNhY2EwMTM2YTViNWQ4ZGRlYjkwOTE3YWU0ZjhmOTQxZSBsZWdhY3ktdHJ1bmsKKzcxMjQyIDNiYmM2ODQ0OWY5NGU3ZWJjMmExMWJjMDhmNDZhMzQwMTI3MDFhOGMgcHkzaworNzEyNDMgMTNlZjExOTBlZGE5ZDY0ZTE1YmRlODFiMjk3ZjM3NTEyNzljYjdkNyBsZWdhY3ktdHJ1bmsKKzcxMjQ0IDI0ZWQ1ZDg1MTcyMGNlZTBlMDJhZDVhMmFkNzY3YTMxNGVjYTdiYTEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI0NSA4Y2U5ZWRjODg5NjliOGQ4ZTFmZDMxODM2Nzc1NTQ3MzUxYjliN2QyIHJlbGVhc2UzMC1tYWludAorNzEyNDYgYjkwODdiNjQ1Y2VmYmM0M2JjMzljN2MyMGEwMzc4NjZhY2ZiNWFhMCByZWxlYXNlMzAtbWFpbnQKKzcxMjQ3IDc2MTJhYTg5YmYwNjBlY2QyY2I1YzdjYzY0YWE3ZDI3YzhiZjY2YTAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI0OCBhN2U1YjlkOTBiMTI1ZmNlNmVkN2QwYzBiM2IzZGNlZDRjN2UwOGMxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDkgOGQyMjg3M2U5YjI2ZDFkNTljZjBkMzc1ODFmYjViMTViNjgyMGVlMSBsZWdhY3ktdHJ1bmsKKzcxMjUwIDQzYzg4OWZlZGE0MGIxMTc2MjM5OTc3MTFkNjNhMWYyZmVjYThiYzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI1MSBiZDEzMzZhM2E2ODYzYWUyNzUxY2EyNjQ3N2NhM2FkZjYzZGQyODI4IGxlZ2FjeS10cnVuaworNzEyNTMgYjJjNjhkZjk0NDYzOWRkNDM0YWQzYjM4YzM0NGNhYjgxMThjOTI1NiBsZWdhY3ktdHJ1bmsKKzcxMjU0IGU3NDA4MzMwMWEzNmUwODc1NWM0OWFlYzhhZjE2ZmJlMDU1Yjg3ZTUgcHkzaworNzEyNTUgYTE2YTA0NTY5NzhmN2VmN2U5OGIzMmNhNzY3MmY2OTdlMjhjNWExYiBsZWdhY3ktdHJ1bmsKKzcxMjU2IGNmZDcxMzY5NDFhMDk5OTIzZjg5MGMyYjE4NWZlZjNkYTk4ODA3ZDUgcmVsZWFzZTI2LW1haW50Cis3MTI1NyBlY2IyMTAzYmEwMjc5ZmY1N2NmNDJhZDM0MjQ3ZjI3NjE4MjA1ZTkzIHJlbGVhc2UzMC1tYWludAorNzEyNTkgN2I0ZWYwYjg3ZGRjZmY5MzEzNWNjMTAzNDQxNDc1MDk4ZDU1ZTEwMCBweTNrCis3MTI2MSA3OTJiYjg4NTAyOWZiZmIyODVmYzlkMzk2NTlmM2QyZTliYTg5NzI5IHB5M2sKKzcxMjYyIDRkOTc2MTFkMWNjYTQ4YTE0ZmZhMWI2OTM4OTU2NjQzMmM4MzlmOWUgcHkzaworNzEyNjMgNjcyYjBjMDQxYmE2Mzg0YWQ4NGIzYmMzYzY2OWJkMzg5YTJkZTRlMiBsZWdhY3ktdHJ1bmsKKzcxMjY0IGM5ZWNkNDVhNWVhMmYxMDNhMzRlNDhjZGVhMDkxOGMxZTliYWI4ODcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI2NSAxNGUwMGYwZjc4Yjc0Y2Y0MTA0Zjc1YzlmYTBjMjAxZmY3OTVkNmIxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNjYgMmQwMGZmM2QyZjVhM2M1Y2NhODM1OGZkNTFiYjNiNTAxZWZlOGZkZCBsZWdhY3ktdHJ1bmsKKzcxMjY3IGExNGRlYjk0ODBmNGQzMjBkYWQyYzYyMzNhY2ZkNDQ3ODRkZWM2NGUgcHkzaworNzEyNjggZjhjNTc2ZmFhOWFkMTNlOWFhNjYwNjNiOGI4ZGY5MGNlNWI4NTM5YyBsZWdhY3ktdHJ1bmsKKzcxMjY5IDU0ZDVmMjk4NmFmNDJjZGQ3OGJiNzI2YWYwZmMwNzk3ODE3NjlhZGYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI3MCBmYjJlYThiYjNhMzNkYzc2ZmQ4NTQxNDJkZjg4MTc0MDZiNDYzZTQyIHJlbGVhc2UyNi1tYWludAorNzEyNzEgYjA0MjljN2ZhNzFhYWVkNWNjOTMyNjk2ZTA5M2Q1YTUyNDZjMTI4MSBsZWdhY3ktdHJ1bmsKKzcxMjcyIDRhY2JiYjNlNjVlMmIwNTgyMWQ0MzY4OWVlM2FmNWJhNTczMDQzNDEgcmVsZWFzZTI2LW1haW50Cis3MTI3MyAyNTFiZmQyZDk5NmEyZGZmOGNjMTMyNjRhYTg1YmZhZTU4YjE4NDYyIHJlbGVhc2UyNi1tYWludAorNzEyNzQgZDM4ODdkZmU2NjFmOTM2MmMzZTJjZmMxMzQzMjQyMmU2MGUxNDU5NyBweTNrCis3MTI3NSAzODg5ZDk1Mjg2MDFlM2JlMThhNjJiODQ4NjM2YTYwYjJkNDUwYzU4IHJlbGVhc2UyNi1tYWludAorNzEyNzYgOTY5YWQxMGE4YTcyNTcwYjgxYzU4NGE1YTRhMTNiYmM0YTkwZTIyZSByZWxlYXNlMjYtbWFpbnQKKzcxMjc3IGQwODg0MzZhYzM2YjEwYTlmMzNjZWU5MThmODE4ZDE3ZDBjYzQ5YjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI3OCA4MjM3ZGU2MzJkNmY2ODE1YTM2ODgyZjk2NDUzZTRhOWJlMmQ4MWEwIHJlbGVhc2UyNi1tYWludAorNzEyNzkgOGI1MzE1MDEzNGY1ZGIxNGQyMjNkZTBhMjNiOWZkZjA1YTc1NjUyZiByZWxlYXNlMjYtbWFpbnQKKzcxMjgwIDlhNGIxOTMzMGFhOTMxYWJkMzU4NjFmY2ZlZTYyNGZmNGUwYzQ0MTIgbGVnYWN5LXRydW5rCis3MTI4MSA3ZTc4MTNhZGEyZDE4MWM0NzI0OWI3OWE5M2ZkZWYzM2Y4ZmEwZDBiIHJlbGVhc2UyNi1tYWludAorNzEyODIgZjNiMjZhNzI5ZTgyZjhmZmZiMTc0ZDQ5M2M2OWM2ZTk5YWI4OTA1OCByZWxlYXNlMjYtbWFpbnQKKzcxMjgzIGY2N2E0ZjFmMjMwZDc0MGZkZWNiYTUzYjM1OTRmOGZkZjkzMjQwOWYgcmVsZWFzZTI2LW1haW50Cis3MTI4NCA5MzRkOWMzY2JhNDE4NGI3NDAyNjkzOGU2N2Y0ZTc4OTdjNjYyN2JjIHB5M2sKKzcxMjg1IGI2OTM0OWQ0YjllODgzMTZiNzVkYzgyODY0NzU2NGQ0OWY0NmI3MDUgcmVsZWFzZTMwLW1haW50Cis3MTI4NiBkNmRlNjg0NGZkNzE0MWIzNmM2NDZkMDYwYjg5Nzc1NTY2OGNmMmY3IGxlZ2FjeS10cnVuaworNzEyODcgMjRmYTdkZGQ0ZGNjZTQ4YjFkZWRmMTBkNjdlYWQzMGM1ZDljM2ZjZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjg4IDFkOGNiNzZlNzE5YjdlMDUwODQyOTFiMmM4ZDJjYzIxNWM5MWJlNDkgcmVsZWFzZTI2LW1haW50Cis3MTI4OSBiMzZiMDBhZTI5ZmZiZjZlNTUzYmM2NDQyNzBlM2E3MmY2Yzg1Y2VhIHB5M2sKKzcxMjkwIGIzM2JkZDI0MTQwMjM1ODljNmVmY2FkYTVlZTIyNTQwNTNjMWY1MWIgcmVsZWFzZTI2LW1haW50Cis3MTI5MSA0MzNkZTNkNTk2MDc4ZDFhZTU1YWQyNTk3NGYwODdhYjA4MmI1YTkwIGxlZ2FjeS10cnVuaworNzEyOTIgMGM2YjE2YTJmOTFiNzVlZjIxNzBhMzZiZDU5ZjJhN2Y4NjI1ZTZkZSByZWxlYXNlMjYtbWFpbnQKKzcxMjkzIDU0OGNhMzQzNTdjZGFlNWM3ZjE5NTUyYjFhNmNmMmJjN2M5YWRkZDcgcHkzaworNzEyOTQgZGEwYzFmNzRjYTIwMGJjOGExZmJhZjAxYTJlZDRiMjYwZGJjMjk5OCByZWxlYXNlMzAtbWFpbnQKKzcxMjk1IDRiODgxYjRhOTBlOTVlZWQ3ZmQ0NTI2Yzk5YWZiMWZiMjE1MTBlOTMgbGVnYWN5LXRydW5rCis3MTI5NiAzNjRiZDAwMmI3Zjg2NzlmZWMxM2JiNTFmMTI4MzAyZGMwYjBiMWY1IHJlbGVhc2UyNi1tYWludAorNzEyOTcgNWE3YTMzYzk0ZDAwMWM4YmRjN2M4ODY2ZmJkMmE1MzU5NjQ0NjcyZiBweTNrCis3MTI5OCBlYzJlNGI1YTBlOTBkYzRkNjBkYzAyNDFmMDkxMmVlZDIzMTE4NDUzIHJlbGVhc2UzMC1tYWludAorNzEyOTkgZDM2YTRmOTIwMzc4M2ZhOTlhZGY4ZWMzOTczYTViNmQwYmFhNGJiMiBsZWdhY3ktdHJ1bmsKKzcxMzAwIDQxNGEzMTE4MWU5ZGMzODAxY2I3M2ZhNzBlMTc3NmRkYzEwMDJmMTMgbGVnYWN5LXRydW5rCis3MTMwMSA3MzYwMDUxNTk5OWJjYTBmMWRlMDQ5NjQzOTI1MDZkNjU5YTUzYmE3IHJlbGVhc2UyNi1tYWludAorNzEzMDIgZTM2Mzk1OGZjZDcwYTQzYWQwN2IzOWRmOTk5NTUyZDBmYTFjZWZjMSBsZWdhY3ktdHJ1bmsKKzcxMzAzIGM2YzQzOTgyOTNiZDY4MmIzNTVmMTA1MGJiMTZiYjNlMThjOGI0MGYgbGVnYWN5LXRydW5rCis3MTMwNCA5ODYyMDFhY2E2OGI0MzQ0YmZiYTM5ZGY4Y2Y5NDE0NzQ0OGZlM2U3IHJlbGVhc2UyNi1tYWludAorNzEzMDUgMjA3OWVkZDUyODU4NzQyY2FkOTFiMTkzMTljY2YyMWQ2Yjg3NzQ5NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA2IGVmYzdlMTNhNzU0MjMyNWJiM2Y3MzA5ZmJlYmIyNGVjNTQ4N2Q3NTcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwNyBiNDg4MWY4ZWM3MDZmODEyMTNiZmJjZWMxZDhmZDcxYjNiMDQ0MDVjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDggODU5MjY3N2ViMzUyY2Y4NWM2MDU1YjlkYmZkOTA1N2U3ZWI2N2ZiMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA5IDA2NmZhMGJhODI5MDBmYmMyNDk4NzJmMmFlNzRhMTlkZGI5N2ZmZDQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMCA3YzBmZjBkZTYyOTU2ZjE3NzdlYzczMTY2NTYyOGQ0MzYxODQyN2YxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTEgOTk2ODdkNTFiZTBhMTQyNzFmYTYyYTljZjcyZGQ3NWYyOTExZmRiOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzEyIGUwMTI5ODZiZTRmNGU1MmY5YWMxNjhkYWZlZjVkODQ1NDlhZWRhNDEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMyA1MjZkYjI4ZjEwMGQyMTI1YmI4MzU1NTM0ZTU4YjI2YWJlYTczMjVmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTQgMzBiNTBjYmU1YzVlNWZjOGY5ZTlmMGVkMGEyYTExMDZjYzFkMDI2MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE1IGY3ZjcwMTM5ZWY1NzBkZmIzYzY0OTdiNjEzNmExZjllYjk1ZDliMDQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxNiBjZWUxYTg2YzY5YzE1ZTY0OWMxZDc1NTliOTM0MDI1OWY2NDJmOWJjIHB5M2sKKzcxMzE3IDAyNjM1NDYwMjYxZTlhZjFhOTM3YzlmNjBjZjBkNWJhZThiYjFlYmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxOCA5ODY0NTJiNTI2YTFkZjZjZTBhODMzZjQwMzE1Y2IwMWUwZDZjMzAzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTkgMDZmYTg3ZjNlYzM2MjcxZmQwNDc0MGYzMTg5YTAwOWVmZGE5Yzg1YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIwIDU1NjBhMDY4YzA1Nzk1ZmEwNTAwNTIxN2JmYjM4OTVmZTcxYThmYzMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMSBlNGVlYjBkYWY2MjU0NmNmZDM3NjczNzdlYjYyYWM3MWQwZWVmMzA2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjIgNDVmZDIyNzBhZTFiOGMxZDA4OTQ5OWEyYWQ5MjExYzU2N2YyODgxYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIzIGM1ZTBjNmY2NTZlNjM2ODVlMWE5ODYwYzZiZWUxZTZjMDkyNjM5MmYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyNCAwNzZjNzIyMTE1NjExMTk2NTk2NDBhMDI2N2U2NjE5ZGUzZjZlYzAxIHJlbGVhc2UzMC1tYWludAorNzEzMjUgYjk4NDllZmIyNzU0NWM2ODNkNDI0ZGJkODY0NmUwNDJmZWI4Y2I4NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzI2IDhkNjk3NjNhMjMxN2I1NDA2MThmY2ZiMGFhMGNiN2NiNWZkZWY0NjggcHkzaworNzEzMjcgZDM0NzBiYzZkMTkxOGRhOTc4NTc2ZjlmNWQ4ZWUxODdkNDc5ZTk1MiByZWxlYXNlMzAtbWFpbnQKKzcxMzI4IDRhNjdkNjkxNDcyNTg1MTUwNzM0NTgwYjliODY1ZTVkMGE3MTdlN2MgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyOSBkODE5ODUxODJhMzZkNjA4NjBhZDRlZTY0MzJkNGM3NjNiNDA0ODMwIGxlZ2FjeS10cnVuaworNzEzMzAgOTIwYjA3OTA5NjAwM2Q0Zjc0ZDZlNzMxZWQ4ZTlkM2U3YWU5MWZhZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzMxIDViMDFmZTUxM2Y5Mjg2NGZmNWJkNjkxN2U4ZjA4MDYzODgwMjdmNGUgcmVsZWFzZTI2LW1haW50Cis3MTMzMiA1NTQ5ZThmZjI4ZDJjZWM3YTNiMjdiZTE2NTUyM2FjZDNlNzFjZDA0IHB5M2sKKzcxMzMzIGY2NjQwNmYyNjA0NDFmMzBmODZhYzZhM2YyZDI0ZGMyZjAwZGJhZGYgcHkzaworNzEzMzQgYTBlZGQ5MWU5YzZmMzEyNjJiYjNmYTEyNDI0YTA1ODg2MzRkMTg3NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzM1IGY4MjRkYzYwMTA2ZjEwOGYyYzY1OWIyZDBlZGRjYTA4NWVkYzkwOTUgbGVnYWN5LXRydW5rCis3MTMzNiA2MDkzZmRjNWVlOTYyZGUwY2VlOWZiYjI2NmIyZDg2NWY5YmFiOGE5IHB5M2sKKzcxMzM3IDdhMzlmN2U0MmJkOTdjZmYyNmJjOTEzMzUzNTlhNTQ3MGFlNGU3MjAgcHkzaworNzEzMzkgZjM5MWRmOTNjOWFiZDQ5ZjdkMDIwZGQ1MmQ0MTczNWNiNTIyNDVlZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzQxIDM3NDRlZmE0NTY2ODFlYTg0N2Q4M2MzZTc1NjY1Yzg3ZGM5OTljNTMgcHkzaworNzEzNDIgOTc2OGRhODZjZjhlMzJhZjYxNzk1ZjJiNzQ4MjNkNTBmMTk3YWE1NiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzQzIDI4YmFlNWNhNTIxOGQwNGIyYWM0ODUyZjhiMzg2NjRjMzMxMDgzYzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0NSA2OTExNGEzNTZjZjBkYTcyZWJmNDNkNDU1YzE1ODFkMjQ5YjhiNmZjIHJlbGVhc2UyNi1tYWludAorNzEzNDYgOGZiYjk5MzZkNGRhMmIxNzgyOTM5NzgwMDg2NmI3ZGY5ZWFjZmJmOSByZWxlYXNlMjYtbWFpbnQKKzcxMzQ3IDZmY2QxMGVhOTk4YTkyNmQ1MzdjMDY0NTYwZWIwZDQ0ZjZlNzkzOTcgcHkzaworNzEzNDggZGE3M2M0M2U2OTFlZGY4NzVkMWE3MjIzZjkxYWFkN2U4MWNiNGUyOSBweTNrCis3MTM0OSA3MTZmNTk1OGI1ZjBkYTBhNjFmZDI3MTgwMDMyZmZjZWViNjk4NTgwIHB5M2sKKzcxMzUwIDZmNGEwODhkMzU5ZDZjZTZmOTc5ODlmODQzNjA3MTk2MDFjMGVjN2MgcHkzaworNzEzNTEgYzM3YmIxYjdhNDdhODQzZTIwZDgwZmNlNmU4Njc3YTM0YWRlZTMwOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzUyIDQ5YjI0OTIyZWIyZGRmNTdmOTMzMjFmYTU3MTQ0OTgwYTMyNWRhNzIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM1MyA2NzRiMjAwMDIyNGNjODllN2NiYzFhZTRkMTBlZDU4OTI2MzJiMzI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNTQgMzE1ODI0ODVmYmZjZDE1MzQ3MWYwZDg5MmQ5ZmZhZDJjMzU1MDM3MyBweTNrCis3MTM1NSAxNTM5MTdjMDAxYmVmYWZkMjZhZDM3ZWMyNTExOWE3MDdlMTE5OGIwIHB5M2sKKzcxMzU2IGY5MjUzMzkyNWVhNjYyNzA1YWJhMGIwN2JkNjUzMmMwODE3ZjQzMGEgcHkzaworNzEzNTcgOTQ4MzI0NTVlMzdkNTkwY2NhZDc4NDAxOWRiZTgxYTZjMjQ0NGIzOCBweTNrCis3MTM1OCA3NWRlZjdlZDlkNWZjNjNmOTA1YWJiMmRkODAzOWE3YWJjNGI1Nzg3IHJlbGVhc2UyNi1tYWludAorNzEzNTkgYzM5YzFjMjk3OGY5NGY1YjRmODQyYzk2YWE0NTM4ZTExNDIzNTllZSByZWxlYXNlMzAtbWFpbnQKKzcxMzYwIDJiMDgzMTQ2YWNmNWMyNjY4ODQ2ZDU2ZjdhNGFiZmYzMmYwMzliMTcgcmVsZWFzZTMwLW1haW50Cis3MTM2MSBiNTBmMTFiOGNhZDdmNDFlYWVjZGUxMzQ5MTQ0YTA0ZDQyNDg5NDg5IGxlZ2FjeS10cnVuaworNzEzNjIgOTBkMzIzODFhMzQwZmJlNDI1Y2UwZDcxOWJmYzRkMjkyMmViOWJlNCByZWxlYXNlMjYtbWFpbnQKKzcxMzYzIDAxZjFhZTgzNjMxYWU4MmJkODU5OGExMWMxN2UzZjliM2Y1NmMzOGEgcmVsZWFzZTI2LW1haW50Cis3MTM2NCAyNzVjMGJhNzQ4NTg5ZThhNjdmMWQ2YTFhMmIyNzVhMzZiYTMzZTNmIHJlbGVhc2UyNi1tYWludAorNzEzNjUgNWU4YzNlNzQ1MWZmYjc5Y2UxMThmYzI5N2Q4NmVjM2RjMDEwY2Y5OSBsZWdhY3ktdHJ1bmsKKzcxMzY2IDlhYjUyNDE3MGY2ODJmMzMyYmEwYmJhODE1NjVhODJhMWU4MDFhZDggcmVsZWFzZTI2LW1haW50Cis3MTM2NyBmY2UzYWQ0YjIzZDYwYzM1ZWZmZDViYWJlOWZjMmQ0YTdmY2U3NTkwIGxlZ2FjeS10cnVuaworNzEzNjggNWNlMjNjZmI5OGM3ZjVmYmRmNjIwNzA3NmVkZTZiMWMxM2RlNjdkMSBweTNrCis3MTM2OSBjODQyMDExODkzODczZWFmMGI4Nzc3ODJkNDQ4NTE5MWY3NDI1MTU2IHJlbGVhc2UzMC1tYWludAorNzEzNzAgZTIzMjUyYThmZjU5MjZmY2ZjMWRlZjg3OTQ5ZGNkZTZlYTQxNThlNCBsZWdhY3ktdHJ1bmsKKzcxMzcxIDVhNDk0NjIzY2YzYTgxNGI5ZTJlMGJiNzY2ODM1YjRhZWIzZDg0MjUgcmVsZWFzZTI2LW1haW50Cis3MTM3MiA2YzQ2ZDZkYjJmZDZhOWZiMWI1NzgwZDM0NzMyN2NlNDFmYzE3Y2JhIHB5M2sKKzcxMzczIGQxNmNhZGE5NjM3MDE5MDczODA1MWZjNTczMmJmOTNjYWEyMWJiZWYgcmVsZWFzZTI2LW1haW50Cis3MTM3NCBiYTNhOWViY2U4MWU3YzJjYWFmMmFiZmU2MTFiN2M5OWYwZDQ1YzMyIHB5M2sKKzcxMzc1IDM3OTk3MDMwOTQ3NTU2NGY5YTZkODkzMWFlZTdmOTBlNmI1MTU3MDUgcmVsZWFzZTMwLW1haW50Cis3MTM3NiBiYzc5YmVmNTVhYTgwNmU4MzE1NGQ2NDlhMjJkZjgxZDAwYjBlOTgwIHB5M2sKKzcxMzc3IDQxZTcyMDJlOWY5MzA0NmRmZDUzZmIzY2JkYTc1N2RhNmJkNjk3ZGMgbGVnYWN5LXRydW5rCis3MTM3OCAyNDhhZGZjYmI3MTU0NGM2YTU3MzUwZmU3OGE2Y2MxZmVhNTdkMGM2IHB5M2sKKzcxMzc5IGRiMThlNzhiOTJkODZhMDMxZjBiYjBjZjE5MGI4OGY5ODZhYzgxMmUgcHkzaworNzEzODAgMGExY2RhMWU3YzFjNzk2ODczMWNjZmJkMjE4OWYwM2QxZWYyODhlMiBsZWdhY3ktdHJ1bmsKKzcxMzgxIGQwNDQ5MGJlZTJlZDQ4ZDJiOWRiNjc5OWM4NDI1OGQwMmMwMWUxZmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM4MiAwOTE3MDZlMTQwNTYwN2E3NjMzYzg3MTcwZjg4MDE5ZTk0ZmU0ZjU3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzODMgYWU1ZjUxNTZiODgyNjZhZGU0YWE4Mzg4NGQ0OTA0YmQyZmMwZDUxNiBweTNrCis3MTM4NCBmNzEwNTU1MDUzYmYyZjhmNjJlMDM2MDVjYmUwODIwYWE4MTE5ZmM2IHB5M2sKKzcxMzg1IDEwOTk0MTAxNTcwMzMwNzRiN2ViYWI5ZTVhODQwMDIzYTc3Nzc5ZDcgbGVnYWN5LXRydW5rCis3MTM4NiAyNTFlZjk5ZGZiNGM0MDFhODRlODkwYzk5MGNkMjAxYmZkYzNhNDg5IHB5M2sKKzcxMzg3IDc0ZDlmNzVkOWRjMWZjZmQwZjQ0ZmRkZGM3NTg0NjA3NGI2YWEyZGEgcHkzaworNzEzODggMTlmN2QzYWJlN2NkZTI3ZmZhMTQ2MmI5ODUyMjk3N2FiMjQwODg0ZCBweTNrCis3MTM4OSBkZjBlZDllYjc5YzM2NTQ1ZjFjZjEzMmIxMmMwMWRkMjU2YmNlNDc1IGxlZ2FjeS10cnVuaworNzEzOTAgZmQxODBiZjQ3MjI3ZmQ2YTZlMzQ1YjRmYWFjYmE0NWUxMmQ3YzI0ZSBweTNrCis3MTM5MSBhOThjNTA5MDg0ZWIzNTYyY2M2NmNmYmQ2M2ZlODI1YWVhNDg1YTdjIHB5M2sKKzcxMzkyIDdiODk2MmY2NTkxOGIzZTQ5NTk3YzIzNzZiNGNiZjMxNjIyOGYyNzQgbGVnYWN5LXRydW5rCis3MTM5MyA2MWUzN2VmZmFlM2FlYWYzMGU4Nzg0NjE1NGQxOGM1YjVmZDFjOTk2IHB5M2sKKzcxMzk0IGZkMTZlNTc5MDk2ZTNhMzkwZmRmZmEwMWQ2MDc2MTg1MzdjMzAwYjIgcHkzaworNzEzOTUgMGJjMDUyNGQxN2NlYmMyMjFhOTA5YzVmMzY3NDAwN2JmZGZiZDAyZiBsZWdhY3ktdHJ1bmsKKzcxMzk2IDAyMjI0Y2IyMWQ3Y2I5NWViNDUxYzMzMjVjZGViNjNjOGZkYTY0ZjYgbGVnYWN5LXRydW5rCis3MTM5NyBiMTQwNGE4NjhkOGY0OGVkNTdlYmM1OTc4MmFhNWE0MWJkNWY5Nzc0IGxlZ2FjeS10cnVuaworNzEzOTggNWE4ZWJhYmExYTA5ZWZkZmU2NDMyZGRjOGZjNzI1MTdkOTA4MWFiYyBsZWdhY3ktdHJ1bmsKKzcxMzk5IGFmZjJiMTVjY2M2ODQ5YWQxYzYzNmRhMDEzZmZiODg1NTE4M2UyOWQgcHkzaworNzE0MDAgNjdkOWQ2MTYwYzEzNGNkZDhmZDhlZDcyYzFjZmZiZWU4NDlkOWUxMCBweTNrCis3MTQwMSBkMzVjNjQ4NmFkOTRhNjg1OTYwMzc3NmZlNmZjMzU4YzQyMTEyY2VlIHB5M2sKKzcxNDAyIDYzYjU3NTEzYjFiZGQ0MDEyMGEzMzQ5YWYzN2ViYjVmOWEyYmM3MTAgcHkzaworNzE0MDMgZDkwODhlZmQ1NThiZDBiMzU4ZGIxN2NmNTllYWQ5NzVlNDc3Yjc0OSBweTNrCis3MTQwNCAxODA1M2NmNjExNWE1MmE3NzAwNGI1MTU4ZDUxMTA4ZDg5MmYzYzY5IHB5M2sKKzcxNDA1IGMyMzM2OTU3YzUzNTRkYzBiMjM4NjBmZTUxYzM1YjgyNDBiMzFkMTAgbGVnYWN5LXRydW5rCis3MTQwNiAzMDg2NDI3YjA3MDkyMmRjNGFmZjlhZWEwNjg3ZGM1ZGNiZDYzN2YyIGxlZ2FjeS10cnVuaworNzE0MDcgMWNjOTQ5OTdjZmE3ZWRjNWZhOTkxNDU4ZjgxYTQ4MTAwYjI3OWFmMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDA4IDlhNzMxN2NlNmRiOTk0YWFlMjBhYmVhOGU2Y2E4NWE5M2ViNzI3NTEgbGVnYWN5LXRydW5rCis3MTQwOSA1MzY3NjFjMmI2YTRhMjBkNTQ3OTNhZTE1MDMyNmMwZjJhN2EyYTUzIGxlZ2FjeS10cnVuaworNzE0MTMgNDBlZmYzYjE4MmU0ZDJmZjkxYmMzMGZiZDQxOTVjODg2MDI2MjVlMCBsZWdhY3ktdHJ1bmsKKzcxNDE0IGRmYTkxZGZlZDBiMDU0OTZjMjE2ZDM4MjBjMGUyYWUzMGI0NDZmODEgbGVnYWN5LXRydW5rCis3MTQxNSBhNzg4ZmFjZWU2ZWY0ZDc4MzdkMDJkMGJhZDc3ZjVkYWFlNjY5M2UyIHB5M2sKKzcxNDE2IDVhZDIwNDMxMmJjYzMwNmI0ODEyZGE5ZjU4N2UzNzY4MWQyMmIwODQgcHkzaworNzE0MTcgMmJhMzNjMzRkYzFhNzk2NDZhNzI2ZDYzYjExMzg2MDIxMjUyZTE2MyByZWxlYXNlMzAtbWFpbnQKKzcxNDE4IDA3YzNhYzMwZGE4NzA0NDE5YmQ1NmEwZmEzMDVlNThkZDcyNTZhZGUgcmVsZWFzZTI2LW1haW50Cis3MTQxOSBhZGU1YzI3MTk4ZGJlZjBjOTYyOTJhNzA1N2Y2ZmFiOTQ3NThhN2E3IGxlZ2FjeS10cnVuaworNzE0MjAgYmM5NGI4MzIzYjM5YjI5YmQzNzUzNjVlYjI1Yjc4OWI4NjRkYTRjYiBweTNrCis3MTQyMSBmNzBiM2I1ZjUzODBjZTU0NTg0OWRlNWFmYjA0N2UxMjI0YzRiZDM2IHB5M2sKKzcxNDIyIDc5ZTU3Yzg2NmI1ZjRlMmZjMWRlODBjNDVhN2ZhYTBjZmM5OGYyZDcgcmVsZWFzZTI2LW1haW50Cis3MTQyMyBiNGIyNTExZTAzYzc1MzBhOWEzNGQ1MDU1NjY1MGRmZTcyM2ZlNDFlIHJlbGVhc2UzMC1tYWludAorNzE0MjQgZDM2MTBlMzM5MmNmNDlhMzViMjQxN2U3Zjc4YmYwZjUwZmMyZWFiNiBsZWdhY3ktdHJ1bmsKKzcxNDI1IDA5NTAzY2U2NmZmMTIzYWNmMDJlNzMyOTM0NzcwZjdiZjVkYjRmOTQgbGVnYWN5LXRydW5rCis3MTQyOCA4YTQ1NjNkM2I1ZTg4OTViOThjYjFkNzg0ZGNlYjJmNWVlYTQ1MDVlIGxlZ2FjeS10cnVuaworNzE0MjkgYTIxYzg0OGFkNjFlYzQ0ODY5NDg3NjVmZTg3NzZlMDllYTZhZWZjNiBsZWdhY3ktdHJ1bmsKKzcxNDMwIDQwZWI5OWU4OTM1YzY0ZGU0ZjdkNTkwNzlmNTdjODQwNTEwYTY2YWQgbGVnYWN5LXRydW5rCis3MTQzMSBhNmZmMTdhNDJhZDMxYzdhOTdmNTdmMDA0ZjNjMjViODI5Y2MyMjA4IHB5M2sKKzcxNDMyIDEwNjM0ODFhMzZmOGEyYTJhMmE0NWQxNGE5NDE1MTIyYjhmNTBmMjUgcmVsZWFzZTI2LW1haW50Cis3MTQzMyBhNGJjODBmNWQ2YTBmNmJjYzUxOWJmMmJlMGRmMDgxMWM1YWNlYTI4IHJlbGVhc2UzMC1tYWludAorNzE0MzQgY2JhYTFiYzM1MGJhMjA1OThiZWQzYzlhZGMzOTFiYTJlMGMyMmQyYSBweTNrCis3MTQzNSA1ZjM1YzUzYTNhZDdiOGUxMGVmMWQzYTgxZTdjMzg5YTQ3YjM4Y2YyIGxlZ2FjeS10cnVuaworNzE0MzYgZjk2ODlkMTUwYmI5ZmQ4MmMzMzIxNmI2M2I4NDY2NWMyOTgyZDBmNyBweTNrCis3MTQzNyAwYjllNjg5NzFhMWUyZjkyMGEwOTU3ODhiODRkYzU4MmE2MmFkZDhlIHB5M2sKKzcxNDM4IDllYTk1NzRkYWE1YmY2OTRjYTU3NzE0NjU3YWJmYzQ2OWQxMTQ1ODIgcmVsZWFzZTMwLW1haW50Cis3MTQzOSA0YTdkYjQxMmZkZDJhZjhlMmYwMTlhZjUwYTZjM2NiMTlmZmU5MDE5IHJlbGVhc2UyNi1tYWludAorNzE0NDAgYWE5YjBhNmQ3YWRkZDZhMTEwNTc5ZTU0ZmFkZjk5Yjc1YzA2Yjc3MyByZWxlYXNlMjYtbWFpbnQKKzcxNDQxIDA4OWM3MjEwN2Q3YjFjNjEyNTJhODMwMTJjMzA5NGIwZjBhODExZGUgbGVnYWN5LXRydW5rCis3MTQ0MiA5MTY5NDNjZjUyNDM2Zjc3NDNjZTM5MDA0OGJjYjBhMjRkYzE1ZTNjIHB5M2sKKzcxNDQzIGRiYjliNzE3NmVlZjBjNmUwNjU1NWFhZmVhZmJhMzBmYmRlYTE3NGQgbGVnYWN5LXRydW5rCis3MTQ0NCA5ZDkyZWViYjdjMzA1MDNkYzAwNmI3OTg0ZWJhMjNiMDg2NzZlNGQ4IHB5M2sKKzcxNDQ1IGI2MTRhNTFmNDQyMzZhNmY4YWRmZjA5NzA2ZmQ1MTAxZjMxNmUyM2EgcHkzaworNzE0NDYgNmJmNDI2ZTU1MWQ1NzJlMGMyY2U1MWZhOWNmMmFiOTk0MTlmZjA4NCBweTNrCis3MTQ0NyAwMzI3NTA0YTRmNmExYWU0NzQxMDMxOGM0ODYxOWJhNGM3ODQ1MDdkIHJlbGVhc2UyNi1tYWludAorNzE0NDggNGNkZGVmMTQ0NDI4MjQ0Y2YwZjhlMGUyY2U0Y2Y0NmZjNjg3MDliNCBsZWdhY3ktdHJ1bmsKKzcxNDQ5IDMyMzY2YjNlMGNhOTkwNzI1MjY3OWRhNzY5NzUxOTRjM2Y4ZjJiYjggcmVsZWFzZTI2LW1haW50Cis3MTQ1MCAwYzExYzM0MThkODlkNDg2ZDNlZDE5OGM4MGUyOTA2NzYwNjQzM2I0IHJlbGVhc2UyNi1tYWludAorNzE0NTEgOWE4OTk5OTc3MzYzOTk0ZTNhOTg2OGQzNGFiMTMyODYxZWRlYWE1MyBweTNrCis3MTQ1MiBiOTEyNTE1ZmU5Y2UyMmVhN2FiOTBjZjlkODdiNWY5MGQ2NzJlNzYwIHJlbGVhc2UzMC1tYWludAorNzE0NTMgMjc5N2U1ZTYwMDhmMGZlNGJhYzIzYWRlN2I2YzRmZTZlZTgxNDBkMiByZWxlYXNlMzAtbWFpbnQKKzcxNDU0IDE1ZDYwNzVjMDg1YjFlMDNiMjgzZjA3N2Q4NzU2ZDg1MzIzM2JiODAgcHkzaworNzE0NTUgYzk1MDI2YzJmMmJhMGMzZTFlMGQ2NTZkYjA3Y2EyMmQ2MDc1OTJiNCByZWxlYXNlMzAtbWFpbnQKKzcxNDU2IGYwZjYwODkyY2JhMWM5MzgwMmM3MTUwNWYxMDRiMGU0MjU1NDg4YzMgcmVsZWFzZTI2LW1haW50Cis3MTQ1NyAwNmI2NDE3OGEzMGQwZmNiMDg2NGNhZTRkZGRmNWZhNjIzNDk3ZjcyIHB5M2sKKzcxNDU4IDBiZTYzYzc1MDQxYWRmN2M0NjQ3NTQxOWY1ODMwMWJkMWY2MjYwM2YgcmVsZWFzZTMwLW1haW50Cis3MTQ1OSAxYThiZGUxOGQzNTM1Mzk5M2RmN2EyYTVjYjVjZWZkMzRkOGRlYzc1IHJlbGVhc2UyNi1tYWludAorNzE0NjAgNzhhOTczOWRhZmE0MTNmYzIzY2I4ZTNkZjU0MmI2NGVlMzlhZGM3ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDYxIGY3MjQ5NzRiOGQ4OWIzMzVhOTRiNDZjODdmY2U4MjNkYjAzMjNmZDcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2MiA3ZTIyOWNhMGI5MmE1ZTg2MmI0NjcwNzI2NWJiMWFhMjFhZTU3N2NjIGxlZ2FjeS10cnVuaworNzE0NjMgZDkzOTIwYTI1ZGE0YzhjNmMyZTU3NWNjOTgxZjlmMzUwMzZiMWFiNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDY0IDhmMTNhNDE0ZDg0MzI5NThlNWQ3MTZiMzEyOTI0YjdhYmI3NWI4ODkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2NSBmYjQxZmU2N2UwNjFhMjljNDQ4MDllZWU3ZTY4N2NjZTZkZjg5ZGZlIGxlZ2FjeS10cnVuaworNzE0NjYgMWM1MmIxNDU0ZjFlMjAyZmFhMWNmZGNhODFlYzJmZTdlM2ZmNTNjNiByZWxlYXNlMjYtbWFpbnQKKzcxNDY3IDQ0MTEyMjRjYjgwNjg4YjQxYmVmN2YwNTI1YzhiNjNmM2Y2NWQ2NWIgbGVnYWN5LXRydW5rCis3MTQ2OCAyYTAzY2QwNGQ4ZjQwODYxYjIwYzZjYzcyZmFiNzI4OWNkNDI5MTYwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjkgZjY1MmZlMTY0OWVkOGYzODViYjQ2Njc3NTIwYzZjYjgzMjk1NmVmMiBweTNrCis3MTQ3MCBmMzlkMzM3NTI1ODIxNTVjNmNhNzFhZTIzYjFlMTQ0MjlkY2NmM2ZkIHJlbGVhc2UyNi1tYWludAorNzE0NzEgOGIyY2RmZDVhYWI2ZmMzM2UwYTBhNDY4MjIxNWVkMzFkMzY1MjM0NyBweTNrCis3MTQ3MiBlZjM1OTJlOWUwMWU1ZDU5ZmVlNjBlMmMzZDk4NTk5NjNhZTJjZTk5IHJlbGVhc2UzMC1tYWludAorNzE0NzMgZWMyMzljZmEzZTYxNzg1ODA0ZWU0NjQ1ODU5M2JmMWZlMGY4NDU0MSBsZWdhY3ktdHJ1bmsKKzcxNDc0IGJmMmVlZDg2NWE4YTRjMzU5MjBiNjY3NjAyODQ1OWUwOTI4MjNjMTEgcmVsZWFzZTI2LW1haW50Cis3MTQ3NSA0YTM1YzhhNWJlNDZmZTljY2E1NjJmMjAxNzRmZGZiOTYxMGNkNWJiIHB5M2sKKzcxNDc2IDAwMDNiNWI0ZjBjMDM0OWM0NTU1MDVmZWI5MGZkOTgyMjViMTM2YWYgcmVsZWFzZTMwLW1haW50Cis3MTQ3NyA2MzI4OWI4MmM4NDkwMzAxMGE4MzA5NTE3ZmQ3ODdlYWQ2N2EwNGVlIHJlbGVhc2UzMC1tYWludAorNzE0NzggOTAzNTY5YjEzMmMyNDc4ODA1YWYwNDExNjM1YmNjYmIyNWRlZTlkOCBsZWdhY3ktdHJ1bmsKKzcxNDc5IDJlMzhjNjE3ZmQzZWNjZWJjMWViMzQ3MjVjN2ZiYWM5Mjg4YTdkZTcgcmVsZWFzZTI2LW1haW50Cis3MTQ4MCAzNDU1ZmQ3ODQ2N2U2NTgzN2I3M2E4ZDhhNTAwNjFiZGIwMTcxOGRjIHB5M2sKKzcxNDgxIDM3MzI3ZDE5MTJhODE0Njg2MzE4MGI0ODQ0OTk3OTA0NzNmMDYzMzcgcmVsZWFzZTMwLW1haW50Cis3MTQ4MiA1MjgyYzY2ZDg5NzI1YmQ0NzY1YjM1ZmJhZmYyZDFiMDkzNGFiZDIyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODMgMmY5YzdiOTBhNzk1ODBhOGU0YjE0ZTdjMWE5ZmQ2MDk0YWFhZWM1NiBweTNrCis3MTQ4NCBmMzc2YTNjYTE3ZDM3ZjlhMzJhNWE2OGNiMmZmZWY0N2ZkMDhmYjk1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODUgMmQzNzIwOTg4NWUyN2ViOWQ0OTdlZDNlOWMzNGVjY2RlZTNhNzk3ZiBsZWdhY3ktdHJ1bmsKKzcxNDg2IDg4NjEyOTg1ODZjMTBmMWM1YmU1OTQ2MDliYmU3YTkxMDk5NzdmOTggbGVnYWN5LXRydW5rCis3MTQ4NyBkMGI3NDQzMDNiODRlMzI1NGJiMDU5ZTQ4OWIwNzIzMzc0NTlmZTM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODggYzk0OWRkYzQ5NGViODY2YWVkNjgyNmM3NDg1ZGRlZjgxZDMwOGJlOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg5IDI5NzA1MGFiN2FjYTQ3Njk2OTVhMmYzZWYyY2Q0NmU3YjM1ZTY1NzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ5MCBmMzQyODFkYjQ3ZTYxYWJiYTlkYTMzOWM2ZGIxNTJlNzA2ZDdkMzM4IGxlZ2FjeS10cnVuaworNzE0OTEgMzYyOTk4Mjg2NjM1ZDA0ZmE3ZjNmZjVhOTEwOTdhZTViNmJkNDNiYiBweTNrCis3MTQ5MiA0YWYzMTE0MGRlMjlkYWFmYTRlOTExYTlkNDgwY2UzYmZhZGZjYjA5IGxlZ2FjeS10cnVuaworNzE0OTMgMTk4OTM0OTM3OWI1YWM1ZDdjMzU5ZjY5MDdkODVkMGJjMTZhOGZhYiBweTNrCis3MTQ5NCBkNWRkZDM0MjFjOWFlNjhjNGIyMzE0OTNjZjE3ZjM0MjIyZTJkMDMxIGxlZ2FjeS10cnVuaworNzE0OTUgN2U5NzhjYTQyOTMwYTkwNmIwY2NiZjNjMjM3ZDc4ZDZlNjM4MTRlZSBweTNrCis3MTQ5NiAzYjFiNjE0MjY5MGFhM2IzM2Q1YjBlMjJmNTQ1NjliM2M3ZjE0ZTQxIHB5M2sKKzcxNDk3IDAzN2Y1ZjdlN2FiMWU2ZGEwNmYzM2JlMmY4MjA5YWZjMzI2NWUyN2YgcHkzaworNzE0OTggZmU1ZDA3YmViNWQzN2Y4NzdkNzRiYjFlNDdkMjA3MzM5OTMzYzVmYiBsZWdhY3ktdHJ1bmsKKzcxNDk5IGJiODE2NGRiMWJkYTY3ZjZjNGM0YmMzN2MyMWUzZjg4YTg5ZWEyZTYgcmVsZWFzZTI2LW1haW50Cis3MTUwMCA0ODQ4NTYwNGVkNDg3YjFkZDQzYWQwMzA4MjU3NmNlNWEzNTJhOTdlIHB5M2sKKzcxNTAxIGNhZGY5NTViYzE4YmQxNWUyODU5N2NhZjc5YzYwNjQyZGNjN2M2OTIgcHkzaworNzE1MDIgZjIyMWZjZTNkNmJhMzhjZmQ4Yzg4ZjA0MjY4ZThhNDZiYWUxZDdjYiBweTNrCis3MTUwMyAwMjFkOGM4MmYyODQ0N2ZlNDc4ZDQyMTA4NTFmMzAzYjk4NmZlMWIyIGxlZ2FjeS10cnVuaworNzE1MDQgOTNkNGY5ODI2MTVmMjY0ZTBkZjk2MzE0ZTU1NGIxNTExZjYwZjMxYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTA1IGQyM2U4NGU0MThjZThkNzNhMTFhMTgzZWRiZjlkMTBjY2ZjZmIzMjEgcHkzaworNzE1MDYgNGUwOGIxOGUzOGZiZTE0ZmQzNGIxZGY4ZTU4MDFjZjRkYjU3OTI3NyBweTNrCis3MTUwNyBhZDNmM2QzMDQ5NjNjZGZiMjI4ZDFkZmM3MjFhNWEwZmQ0MDY2YmM2IGxlZ2FjeS10cnVuaworNzE1MDggMjFlZjQ3NThjYWNkNDMwZmFlOGEyMGU1NDVlOTYyZjFjZmJmZWM2ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTA5IGE4MjQ0MzEyNTJlMGYyNjFkNTIzOTFhNDgwMjFiMDA3NWEzMzUxMGIgbGVnYWN5LXRydW5rCis3MTUxMCAyOTNkYzVmMDhlOTkwZTNkMzY1YjllMjUxNjhlYTNmN2Q4OGEwNDk1IHJlbGVhc2UyNi1tYWludAorNzE1MTEgZTA3MjNjY2VlNzRkZjExZGI3OTY3YzhlYTViZDJlNjUxYTg5MjFhOCBweTNrCis3MTUxMiBhNDhmY2ViMGYwYjNmZmQwYmZiOWVkYThkNWYzNzdmNTdjMjEwMWE4IHJlbGVhc2UzMC1tYWludAorNzE1MTMgNzU0YTNmNzNmZjA3ZmE1NmRlZjMwZTk1ZWViZGQ5N2I5Y2ZiZDJhOSBsZWdhY3ktdHJ1bmsKKzcxNTE0IDNiMjU5MTFjNmE0ZWE2YThlMDZhZTZhZjM2ZTkwN2RjYTAwMjJjZWYgcmVsZWFzZTI2LW1haW50Cis3MTUxNSAxNjg0ODJlYWZiNTYxZGI4Nzk3NDVlZTliNGU5OTc1NWMyZWJjZjYwIHB5M2sKKzcxNTE2IGUyYjliMmJjNzBiMGVjZmYwYjI2OWRiMjkwZWIzYTRjZDgwNTk5MzkgcmVsZWFzZTMwLW1haW50Cis3MTUxNyA3MTNlZjY4ZTdmZmQwMGE1MjZlZTcwZmIwNDBkZTYyNmU2ODE4YWVlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MTggNGNhMTQ3MWJkMWNkMzY4NjA5OTUzMmQ1MTFjN2YyNWIxNmU1ZDQ2MyBweTNrCis3MTUxOSBmNGQ1NTNlYzlkZGM5N2U3MjMzOTgyN2JkMTg3MjZmN2M0ZDhlODgwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MjAgZDdjNTdlMTZiNzNjNWYzZGZmZjYzZWE4ODc0OWMxZDhkYTE3MmJhMiBweTNrCis3MTUyMSA0NDA3ZTRkMDcwODQyMWRlODNhNmYwYjQ2YTUwYzg3YzI3MWI1NmNlIHB5M2sKKzcxNTIyIDFjYjNiY2NlODMxNjdjZGQyZWEwYmQxMWI2ODUxNzBjMmU3MWViMGMgcmVsZWFzZTMwLW1haW50Cis3MTUyMyAyNjA2OWQzYjY4OTE5YWRkOTUxMTk0M2RjNjNhN2M0Y2JjZTdiMjZlIGxlZ2FjeS10cnVuaworNzE1MjQgNDYxNjdhZDNhYjkzZmE4NDcwNTA1YWRmMTFjMzJiMzJiNmJhMTI4MiByZWxlYXNlMjYtbWFpbnQKKzcxNTI1IGM5MTZmODU0ZmFlYjJiODVlM2JmZjhkYjkxMWZjM2UzZmJhOThjN2QgcHkzaworNzE1MjYgODg2N2E1YjYwYTkxMzM0NmE5YWI5MGFhMTQ0ZTI5NTg1NTkyYzBjMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTI3IDY1MDZjYzMzZWJhZGMxOTRiYTg3ZjljZGU0ZmZjNGVlM2ExMWVhMTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUyOCA1MzZmMTgwZjY2YTc3NjFjNTVmZTg1NzI5NTRiOTA5NzE4ZDRhMTBhIGxlZ2FjeS10cnVuaworNzE1MjkgMTQwOTI4YzZjZjUxZjAxM2Y4MGE4NmI2OTZmZjcwYWJiODQyMGM2ZCByZWxlYXNlMjYtbWFpbnQKKzcxNTMwIDhjODJiN2M1MWJkZGUzMGE1YWY0YzRkMDA1ZTFkYjkyZmNhMDA5MWIgcHkzaworNzE1MzEgNDI3MjllZGRiYjZjMGIwMzJlOWZiZGViMTYyYWFjNmY3M2I2NThhZSByZWxlYXNlMzAtbWFpbnQKKzcxNTMyIGQwYTczY2Y0NjE4MGQ0MTJhNzU0NTc2YzBiYjFmY2QxYzAzODlkYjEgcmVsZWFzZTMwLW1haW50Cis3MTUzMyAwOTg4ODVjNmIxMDFkMDg1NzhhZmVlYWYyNDMwOGFiYzJjODM3YjVlIGxlZ2FjeS10cnVuaworNzE1MzQgYmJiNjNjNzFhOTgzMTkxNDM0MTYwNTU2ZWU3MmZmODFmMzk1M2Q4MCByZWxlYXNlMjYtbWFpbnQKKzcxNTM1IDkzYTJkODBjZDM0ZDAzODAxNGQyYTdiZmUzMGZhZDM4NDg4YWMzMGQgcHkzaworNzE1MzYgNjZkYTUxNGUzZmEzOTUyOTAwYTlmYjg5NmQ2NGFkNmZhYTY0NDE4NSByZWxlYXNlMzAtbWFpbnQKKzcxNTM3IGEyNDkyYjRlNTA1ZGYzZmMzMzdhZDI1ZmY2OGM5Mjg3ODMyNzZjNWMgbGVnYWN5LXRydW5rCis3MTUzOCA4MzIyOGJiZTU5MDY3ODgxNGU0ZTQ0ZmYyNDEzNTRmOTYwMjg3ODdmIHJlbGVhc2UyNi1tYWludAorNzE1MzkgN2UzMTllZWZhYjhjOGVmODRlNTRkMjRlOTA3ODZiY2ExZTBhMTFmOSBsZWdhY3ktdHJ1bmsKKzcxNTQwIDQ4MGY3ZWMzYjg2OTYwOGZmZGI4ODIyY2RjY2VlNWEyYjVjYTM5NWQgbGVnYWN5LXRydW5rCis3MTU0MSAyZWVjNTdhYmM1MjM4ZjM5N2IyZTdmNzNmYWUzOGUzOGQzOWQxN2E4IHB5M2sKKzcxNTQyIGU5ZTJhZTNiZmJjMTQwNDMzMGMxYzQ1MzI5ODY2YmZmMTU5MzQ3ZjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0MyA4YmM0YmM4N2M4ODU5ZTU4OTE3ZDM3OThiMDQ2OTU1ODY3OGFkZjBjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDQgYWU3NDE0MjA4OWQyYmJmZjI2OTNlNGIwYmU1ZGQwYjIxNTM2NTc4NSBsZWdhY3ktdHJ1bmsKKzcxNTQ1IGRhMGY3ZmM3ODdkODI2ZDhjZGY3ZmMyM2Y3NjJkNDdhZWQ1NjdlNGIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0NiBiYzVjNWQ3YTJhMTQ3OWEwNTc2ZDM3OTg4OTkyNmNmYWY0Y2FjMTAxIGxlZ2FjeS10cnVuaworNzE1NDcgN2Q0NDk5NzExYTdkNWFkYjJjMzk2N2UwNTNmYjJjMjkyM2ZjYmJiMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQ4IDYyMmFiZjZhYzk3ZmFiMzkwZDMyYTMxODk5MWEyYjE5ZWI0NTM4M2QgbGVnYWN5LXRydW5rCis3MTU0OSAxMmE4ZDE5NDcxNjc5MTRhZDAzOWI0ZTFmNDA4ZTEwYTI1ZGM2MTViIHJlbGVhc2UyNi1tYWludAorNzE1NTAgNTQ3Mjc4OTY1MWUxNjExMDIyOGVlNjFkY2NkOWNkMGU5NDBkMWE1YSBweTNrCis3MTU1MSBjNzQwZmVmYWUxYmFiMGU5MWQxZjBiYmU1NzIzMjQ0YzY3Y2NkZDdhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NTIgNDYwN2Y1NGU3NjkzNmI4N2RhYzc4OGI0YzdiZWY4YjE5MDkzMmI2ZCByZWxlYXNlMzAtbWFpbnQKKzcxNTUzIGFiNzVkYTI2NmU1N2M1NWU3NzcwMjRmYmI4NGE2YTMwMDhkYzQ4MzUgbGVnYWN5LXRydW5rCis3MTU1NCAzNzcwNjUyZWIwZTUwOThiZjFjNDI2MDQxMTkxMGM0YzkzZWI1MzIxIGxlZ2FjeS10cnVuaworNzE1NTUgOWUzYzk3NmRhNWY0MDUyN2QzOWU3MTRkMjFjZWNiN2VjZTJjMmRhMSBsZWdhY3ktdHJ1bmsKKzcxNTU2IDVlZjE4ZjBmNDMxMDkxZDA1YzJiNGIyNjFlMDlhMTgwNTlkODVmZTAgcHkzaworNzE1NTcgNmY4ZmM2YjE2N2VhOGIwMTA4MTQ4NTk0MzM4YjY3NjQ5YjA5NGFmMiByZWxlYXNlMzAtbWFpbnQKKzcxNTU4IGU0OWNkNGY0N2Y3NjIwYjAyN2U5NmJjMjgwMmE2NjhiMDY3NTdmYjIgcmVsZWFzZTI2LW1haW50Cis3MTU1OSA5NTEzMmNjMjJlZTVhYjdiOGRhZWM2MTYyZWIzMmQ4MjYzMmQzMDg3IHB5M2sKKzcxNTYwIGZiYzM3ZmJkOTQxNWZmNWQ0NGU3MmM1ZjExZjU4YzE0ZDhlZDU0MTMgbGVnYWN5LXRydW5rCis3MTU2MiAwZTQ2OWRhNjdkNjNhNWY0OGI1ZmUxZjRjMGM5NmE2NTRjMWZlNmFlIHJlbGVhc2UyNi1tYWludAorNzE1NjMgOTkwZjI1NzllYWZlYzk1MDVlYjAzM2FiMzFiOWY4YjM0MzEyY2UzOCBsZWdhY3ktdHJ1bmsKKzcxNTY0IDFkYzUzZTBhMTQ3YTcwNDM2YmQ5NjM2ZjYxYWNlOGU4NjRjNjI4ZmQgbGVnYWN5LXRydW5rCis3MTU2NSA1MzA5OGYyNzBiYmRhMDNmNzJlYmEwOGU2NTY3ZWUzZjUxNzc5ZjZmIHB5M2sKKzcxNTY2IDkzZDJiZWZjYTBhNTRmZWU3NmE5OTA3NzM1MTY5MGFlN2QxODU3Y2UgcmVsZWFzZTI2LW1haW50Cis3MTU2NyBhYWM3MGEzYmEyNTBmM2E0NmEyYzkxMmQ5MDhjZmY5Y2M0ZTNlYzY0IHJlbGVhc2UzMC1tYWludAorNzE1NjggNzRhNGEyN2VhMjkxY2IxZmU2OWNlYWVhMDA2M2I2YjczMDRhZWZmNyBweTNrCis3MTU2OSA4YTE3MzA1N2Q5MDMxYzUyZjhlMTZkODI1NWY3OGI2MjUyY2Y3YThiIGxlZ2FjeS10cnVuaworNzE1NzAgM2JhNjVlZTQxZmU3ZWE4ZGZkZDM5Mzg1M2NkOTM5MjQ5ODFjMjcyMCByZWxlYXNlMjYtbWFpbnQKKzcxNTcxIDhlZWU5NGM3NGU5Yzk4N2M5MmUyNzhjMGYyYjBlZWRhZjZlMGE0ZTkgcHkzaworNzE1NzIgNTZhYzNkNTA5NTJjODc3ZDAxYTA1ZjM3NDQxY2FmY2Y5NTIwOWI4MCBsZWdhY3ktdHJ1bmsKKzcxNTczIDc3NGY3YmNhZDIyYzY5ZjY3ZDMxZTUzMDUxOTUzMzExMTliMWEyOWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3NSA5ZmQ2NmEyMWFiZDE5NjdkM2YwODQxNGQxOTlhNjg1YzlhYTA0MDRkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzYgMjhlYTU0YTZiYjY0NjI1OWVhNjNkZmFjZTM1ZjkxMjFlY2RlZjg1OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc3IGM2NmQ0ZTMwNmZiNjg1MjEyNDI5NzE1MmEyY2RhN2UzM2ZiYjA0ZjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3OCBhNGNjNDZjYWI2YTc0MzEyYmFjYTcyMDhkN2Y0OGRjYjY1NDk4NTI2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzkgYzhmYjM5OGVjYTIzNzMzNjQ3ZGRmY2U0MGU2YWY0ODg0YWMyYmM4YiBsZWdhY3ktdHJ1bmsKKzcxNTgwIDU3YjhkYzRhODg4OGZmOTEzMzZhMzM3NmFlOWFkY2M5M2ExOTVjOGQgcHkzaworNzE1ODEgY2NmMGU2NDA5NTM2ZDhjMmM4NmI2ZDA1MTA4MzMxYzUwNjkyYTk3YyBweTNrCis3MTU4MiA1OGI3NDk2N2E1NDI1Y2I3MWQxMWU0NjYyMThkMWI0MTBkOWJjODY4IHJlbGVhc2UzMC1tYWludAorNzE1ODMgYzk3ZTQ1ZTkwNTk5ZTY1YTg1ZTA4ZmIzNDg0OTlkODQ0ODM2MjM4MCByZWxlYXNlMzAtbWFpbnQKKzcxNTg0IDE3N2UxMDczMDUyYzg1OWJlZTE3ZWQyNWQ0NDU2MzA3MDcxMTk4MzkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU4NSA0NzAzOTY1ZGEyY2VhOWZmODQzYzIwZjE3NTFlMzNkYzdmYmM0YWRlIGxlZ2FjeS10cnVuaworNzE1ODYgZTA5YTY3MWE1OTBiN2JhNWUyNzY0NjQwNzlmMmJmYmEzZjQxOWM0NiByZWxlYXNlMjYtbWFpbnQKKzcxNTg3IGUwM2JhNWY2ZjQ5NDA2MDNlMDc1OWFmMzZmZTEyZDE5OGE0ZjMzNTIgcHkzaworNzE1ODggODViYzI1MzdlODNlM2Q5NjI0NWY5NmRiZTZiZDcxYTdkNzdkM2U0MyByZWxlYXNlMzAtbWFpbnQKKzcxNTg5IDdiYWE2OGQ2NmM4ZmM3OTk4NDMzNTBmZDAwODRiNTMzZWVkMzY0MDAgbGVnYWN5LXRydW5rCis3MTU5MCA3MWY0OGFkYWQ4OTIzZTdkOWU3OTFkNmIzNmRmMWMzNWQ2YjM3ZTNlIHB5M2sKKzcxNTkxIDYwNTEzODA4NTc3ZjMyMzk0ZjI5N2U4Y2MyZWEzYzdjYzZkMzU5MGEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU5NSAwOTY3NjdiMTg0NTAxODY1OGY0YTNmZGQzZWYzNDYyNjU3NzUyMzkxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTYgZTdkYmZkMDIzZmY1MjFlZWY5M2NkMzNlNjEzNGRiNjlmMDYzNjE0NiByZWxlYXNlMzAtbWFpbnQKKzcxNTk3IDc5NDUyNWVkNjRmZDQyM2JjNWNhMTMxZTcwYmExNGNhOTEwYWJhODUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU5OCBkYWQzZDJiOWE4NzUzZjQ1ZjE5NmI3MDA2NDRjZjllZmMyNmJjZDhlIHB5M2sKKzcxNTk5IGMxN2M1YmE5YmI2Y2M3YmY3NmEyNTMzNDBjZGFlZGZkYTRkYjAzM2EgcHkzaworNzE2MDAgNGZlYmEwOWE4MjZiYTk5ZTViNDgyNzA3YjNkOTY0M2ViYTM0MTU2ZiByZWxlYXNlMjYtbWFpbnQKKzcxNjAxIDY5OGZhMDI0ZTdkMjM5ZjNhZGI3YTAzZjc3ZTM1Nzg3ZTZmMDQ5OTMgcmVsZWFzZTI2LW1haW50Cis3MTYwMiA2ZDk1ZDk3OTNmY2Y1MDAwMjA3Mzk0NWU0YWViMGQzZWYxNTBmYTVlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDMgMmZkMDg4MzBhOTNmMTMyODE5MDUwNWRkOGMxOTY3MzUzMmQ1MGI3YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjA0IDU0MjgzYjRhMTY1N2ZjZmI2ZmQ0N2FkNDNlZDczZDA1ZmQzZDdkYjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwNSBhZDNhY2NkZTBlZTdhN2JjNWUwODkyNzdkZGU5NzE4ZDgxMWU2ODU0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDYgMGI3ZTQxNDE4MzQzMzI2NmJlN2U2OWJkMzY0NzI5ZjQ1MzJhZjhhZiBweTNrCis3MTYwNyBmZDdmMzZlYWQwYzgxNzBiZmVhNjNkOWY1NzAxZWZiYzFmZjJlZDEwIGxlZ2FjeS10cnVuaworNzE2MDggOWRmNWRkYzE5OGE4MDBiZWEyNGEyMDZhOTZmNzQxZWEwNGQyMDA2ZSBweTNrCis3MTYxMSAxNjcwNGIxNWRmM2ViZTdkNTNkNWRhMDYyZWQxYjQzZWUwMDIxYTAxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTIgYzI0M2IxMGFiNzMwNTUyNWU1MGY4NTMxYTJjOWE4ZDFmYjFhZmE5MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjEzIDI5NzI5YjkwOGE4MjBkY2FjMzBmOGMwZjA2NDQyOTk1ZmM1NTMwY2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxNCBiOGY0MWRiOGY2YWRhMDhhNTdlMWYzNzcyMmRmODgyYWNkMDEzZTk4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTUgYWJlZmNhMmZkOTJlMjFkM2MzNzY1YTZkN2EyYWE4Yjk2OTliMTVlYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE2IGE3NGUxMDE5MTg1NGQyMWEwNjE1OGYzNDY2NDE0ZjM2MWMyZGYyMGIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxOCA0MDg3NjFjYTNkOTY2M2I2ZWFkNThkNzdiOTRmOTdjZDAwZGViOTk5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTkgNjE5ZGNhYzhkMzg5MDk2NWI0NDc3MmRjZjc3YTdjNTIzY2I0ZDE4ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIwIDJjYTIwOWYzYWFhMjk0MTUxYmIzN2NlN2ZmYzg1MDc4MGY1Yzk5OTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMSAxMmJkYjM5NzJlMmE3YWE1Y2ZjMmNhZDM2MjdjMjY4YmI3NDcyNjUyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjIgZDg4MWIwNmRjYTM4OGFmYmVlZDkxODE3ZjlhMTU1NTM4OGFmOGNiNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIzIDY3MzQwZmQ2YWM4YTNiYTg4ODQxZWYzOWVlZDA5MzUxNDA3NTM2NjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyNCAyZDYxMTZlZWYyYjM2N2IzZjkyYjg3ODg5MTg5ZDc4YjZlYThiNzVmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjUgY2U2N2U3ODNhNmVkMjNkODYzNjJmNThkNDY3OTQ2MzMzNWU0NGQ5MyByZWxlYXNlMjYtbWFpbnQKKzcxNjI2IDA3ZDIzOWVlYWE2MmVmOTFiNTk0YmE1NGNhOWFmNGY3OTBjODVjZTMgcHkzaworNzE2MjcgNWIxMDhlYmJmYzA4M2U3ZmQzMWY3MzE2MzU5NDI3ODE5ZDhkOGJkOSBsZWdhY3ktdHJ1bmsKKzcxNjI4IDQ0MTllMDYyMTljYWI4OTJjZDU2OTEwMzQzYzBmMmU2OTI0MGMzNTQgcHkzaworNzE2MjkgZGYyNjM4YjliZWUyZWRjMGY2MzZmNGUzMWUwNTM2OTAwMTkyNDM0YSByZWxlYXNlMzAtbWFpbnQKKzcxNjMwIDZiY2RjMTMxZjUzY2JlMzEwODc2MTA4Zjk5ODZjNTY1NGQ5MThlMGEgcmVsZWFzZTI2LW1haW50Cis3MTYzMSA0NjI4MjE3YjAxM2M0MDRmZmYwZjZmYjI0ZGViYmMwMWQ5NmVlYzQyIGxlZ2FjeS10cnVuaworNzE2MzIgN2E2OWZmYzRmNGFlMzY2YzVlMjUzMDY2OWFkZWY2MmYzNTdhODIyZCByZWxlYXNlMjYtbWFpbnQKKzcxNjMzIDIwY2Y3ZjhhNTQwNTJmYTAyYTJjN2VhOWJjZGJlMTA0MWEyMjcxM2QgcHkzaworNzE2MzQgZjMyNWVkZmUwYzNhY2JjMGJiOWZkMzQwYWE1MDBjMGJkMWIwN2ZmYiByZWxlYXNlMzAtbWFpbnQKKzcxNjM1IGM1NGI3ODRhNTZkNTVhZGRiOTRlYzJkZmY1MDJkNTcxOTRhMjExZTQgcmVsZWFzZTI2LW1haW50Cis3MTYzNiA1ZmY5MDMzMmY5MTBlM2I3ZDZiMjgwNjk2MTA4MjBlN2IxNzE0YzdlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MzcgZWViZTVmN2RhZjFlNzhiMDQ5ZjM2YWNhYzcwZTUyMzA0MzI2Y2ViMSByZWxlYXNlMjYtbWFpbnQKKzcxNjM4IDQzZWY3NGJmYzU2OTYxOWE5MmU4MWMwMGU5MWEzZGJhYjQ1N2YxMmQgcHkzaworNzE2MzkgYWM5M2MzZDhlMTkyMDViODdkOGM3N2E2ODZlMjI0Njc5MGRhYWZkYyByZWxlYXNlMjYtbWFpbnQKKzcxNjQwIDQ4YjVmYWQ5Y2UxYjI4NGJhNzVmMmUxZDY1YjgwZGM3MzA2NGZlMjMgbGVnYWN5LXRydW5rCis3MTY0MSA3N2Y5MDlhYzNlMTAyMjk2OGQ2MDUxYWRmYTc0YTNkOGFkMzkwMmY0IGxlZ2FjeS10cnVuaworNzE2NDIgZDNmMDIwNDAwZmYyN2VmYTMzYWVjNjgyYTk5NzZmN2RkMDU3YWIyNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQzIGM1MjRiZmVlNzAzYWU1MmM4YTc0MzIwNWUyYjY3NGZkZTYyN2RjMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NCAzYTExYTJhZDhmN2I4MDhlNjBjODY4YTNjNmQ2YmIyZTJiZTVmNDRjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDUgYTY3OTBhM2I4MGMzYTI0MGIzY2E5Y2FlMzJkYmJhNTA2ZWRkMWU0ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ2IGNlNGY3ZjQ4OWJkMzYxYWM4OTY2NGU5ZjU5OTcxYThiNjdjNGFkZTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NyA0NTAwYWRjMzFiZTNiOGFlYzA1ZDNhMTA1MGMxYzE5MTc2ZTE0ZWI2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDggZWRlYmM4OTNiMDJjZTBmYjI3MTQzYjEwMWRiNGMxZTRmZmQ3ZTc4MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ5IGRiNzMwNGJmYmY3ZGMzY2Y3MDYyZDY1ZDIyNjVmMjk5MTk5YjFlZDcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY1MCBhMjhhZjU1YzZlNThmMDJhOGRkMWRmZGZjNzMxNjJlYWZiNTNjYWNhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NTEgNWQ0NzI5YzQ3MDMzNThkNGZkYTc2ODFiNDQyMmZmMjE5OGI0ODJiZiBsZWdhY3ktdHJ1bmsKKzcxNjUyIDczYmI0OTQ1MThkZDZkMzkwNWM4MzU2OGJhMWI5YmYzZmE4NzcxOTQgcHkzaworNzE2NTMgMWY1Zjk5MjgwMWY5ZjY5YzJhZjkwNmE5YzJiOTJiYTNmNjZjMTc1NCBsZWdhY3ktdHJ1bmsKKzcxNjU0IDhmNjUzNTY3MjkxZjBiYmJhM2ZiMzdlMjRhNGRmZTBhY2M5Y2JlOTcgcmVsZWFzZTMwLW1haW50Cis3MTY1NSBmMGExNmUxZGVlYTEzZDg4YmJhZTE4YWZmNDgzN2NjMWNlN2NmMWY5IHJlbGVhc2UyNi1tYWludAorNzE2NTYgOTc1YmUxZWIzZWJmMzdkYjVjMWMwYWE0M2QxOTEwYTI4MjY2NGY4NiBweTNrCis3MTY1NyA3M2JmY2IzOTg4ODYyYWI4M2JmNTA3ZDE1Zjc1MmY4OTI5ZmE3ZDBlIGxlZ2FjeS10cnVuaworNzE2NTggY2YxOTBmZjJhNzJjNGM0NzYyZmY3ODM2MDZiMTc0Yjg1ZTliMDdkMSByZWxlYXNlMjYtbWFpbnQKKzcxNjU5IGE2M2I0NmFkZTJiN2I2MWM3ZDA2MTUxYzczN2Q0ZTg3Y2ExZjQ5MWEgcmVsZWFzZTMwLW1haW50Cis3MTY2MCA5MmY3YTQ2MGZmODI4ZGRhYmVlNzgwMzM5ZDQxNmFkOTNjN2E0NDY3IHJlbGVhc2UyNi1tYWludAorNzE2NjEgZjAyMjI4ZDFmOTA4MGMyYmVmOWZjZDVhN2JkZTc0ZTE0MmQ0NDNhZSByZWxlYXNlMjYtbWFpbnQKKzcxNjYyIDg5ZGViNmJjODJlNGJmODUwNGE5YmMxM2Y5ZTZkNzY1MTdiZmY3YzIgbGVnYWN5LXRydW5rCis3MTY2MyA5N2FlN2E3MDljMWQ0MTFhNTEyNzZmYzc4YTdmMTlmMmFlOTkyZTRmIHB5M2sKKzcxNjY0IDg2NmE4YmVlYzA2NTUwOWUxNjZiNGIwY2Q2MTRjNGQwMjMzMDY5YTYgcmVsZWFzZTMwLW1haW50Cis3MTY2NSBiNjUzZWFiMTNiNzMyODZlOTc1ZGFkOTJhOWJlNzY4YjFhNDNlYTc1IHB5M2sKKzcxNjY2IDA3YzZiMDg4OTY4YjIwNTlkYzJkYzhkNmU4M2NjOGI2M2VkY2Y3MWYgcmVsZWFzZTMwLW1haW50Cis3MTY2NyAwN2MxMTE0Njk1ZTk5ZjJmNWIxYjFlZTU5MjQ2NzYzZjE5Mjc0MjRjIHB5M2sKKzcxNjY4IGQ4NGFkOTczY2RlMjVmNjY1YzNmMjZiNmE2NmY3YzU1MmQyMmVkZjcgcHkzaworNzE2NjkgY2M1NTY1NDE1YWRhNDE3ZGNhMzc3MjQ3MmE0Yzk2MjA0OWYwZGQzZSBweTNrCis3MTY3MCA5NzNmNGQ3YWE4N2NmZmRhYTY4YTI4Y2NmNmMxMTA2Zjc1MjNkZjczIHB5M2sKKzcxNjcxIDBjZjc3OTlmYTE5MDJhN2MwMjAxNjViOTYxMjI2MTllNWFiODBhNWEgcHkzaworNzE2NzIgMDBlMDU3MTM2ZmM2NzdkNTQzZmVjMDY5OTE2MzRmMjI4YzlhYWIxZiBweTNrCis3MTY3MyAwZWY1Y2VkZGIxYzNkYmE0MWJkMzJiNTY0ZDgwY2VmMmViNjJjZmZmIHB5M2sKKzcxNjc0IGM2MGMxZDM5YTk1MTY1MWMwYmEwYzJhNTBlNDJlYTY3OGY1ZTVmMjggbGVnYWN5LXRydW5rCis3MTY3NSA5OGE1MGE0OWRjODY1MGJjOTU3ZGYyMjAyODc5MGNjMzIyN2NkN2I5IHJlbGVhc2UyNi1tYWludAorNzE2NzYgMjEyNDk1YjA0MTBjMzNlZmU0ZTEwMzYyYTcwYTM2OWQ5MTI5ZjZlYyByZWxlYXNlMjYtbWFpbnQKKzcxNjc3IDllYWIwNTczZDg0NTQ4MTdiNmUzMjI2MmFmM2U2YWMxMjdlZDU4MTkgcHkzaworNzE2NzggOGU1MWZhZTliYjc1NDI5ZDRkNDMyNTYyYjU5N2QyZTM5MmEwY2IwZCByZWxlYXNlMzAtbWFpbnQKKzcxNjc5IDgyYTJlZjU5NjNlMGYwOTVjZmNjM2I2OTgwMzgzMWQxODZhNjhhNDIgcmVsZWFzZTMwLW1haW50Cis3MTY4MCBkYjI5MmViYTdlYzFhYWIxNmY1NGM0NWYxMDBmNzQ1MmFjZjZhZjJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2ODEgYzc0MjkyMGM0NWY3NzFjNGI3NmEyYzdlMzQ5YTkyNjA0OWY0ODNlZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjgyIDY4NzRkNzA1NDYwNDMyNTdiYmNmMTMyNjU4MTYzYTkyN2Q3ZWRhZTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY4MyA5MDhjNjM5ODBlZWNlMDZjYjNiNjQzMTllNDk2MTgxNGVmMWRjZTBiIHJlbGVhc2UzMC1tYWludAorNzE2ODQgYWIwNmEzOGI1OTBjYzQ5NzhkN2QxMjM5NzFjNDE1NDYyODFkZDE5YSBweTNrCis3MTY4NSBhNzA5YmI1ZGZhZjUxMTY1NTAwZWVlZjZiMTViY2M3MTIyNTA4MDEyIHJlbGVhc2UzMC1tYWludAorNzE2ODcgOTg2MmQ1MjcyZDg1N2FhNzg0NDAxMmIyODhlMWRmZDI5YTBmMDIzZiBweTNrCis3MTY4OCA2NmZkY2ZhOTQwMGIwMWVjZGQ0MzczZmQ5NjdlM2VkMzAzNThjNGNmIHB5M2sKKzcxNjg5IGZlOTlhNTYyYjcwODViMjg0MzZiODU5YWM5MTliNTRlMjBhNDJkNDEgcHkzaworNzE2OTAgMjY5NTFlNTk1ODkzMWI4ZDI5MzJlMDhlNmQ3NWU5OTgyYjJhYTkxZSBweTNrCis3MTY5MSA4ZDhmMmY5OGE3NTJhNzY1ZGRiMDVhNTdlNDQzOGU0N2NkNGFmOTQ5IHB5M2sKKzcxNjkyIDEzOTE2YmIyZWZmMDdjYzQzN2U3ZGM3MDU0MDUxMGY4ZDliZWZjZDAgcHkzaworNzE2OTMgM2UzMThjNGFmOTYxYzNhMDk2OTNkN2Q5NzdmYzMxNjQ3Y2I5MzQ5MSBweTNrCis3MTY5NCAyNDlkNTAwYTc3OWE4N2M4OGEzY2Y3OTJkN2RjNjUzMDViOTg5NzU1IHJlbGVhc2UzMC1tYWludAorNzE2OTYgMDJjYjQyMGQ4NjJlNjlhZTIwZDg2MGQzMmZkNjlhMzIzNTZiYTk4MCBsZWdhY3ktdHJ1bmsKKzcxNjk3IDg1OGI5ZDA4ZTM0YjRlZGVlNGE4ZTM2OWYyODA2NjMwZmM4OWEwNWMgcHkzaworNzE2OTggYzg0Yzc1NTI1YmIzNWFlZjJmMGRlZjJlOGI3OWQwYzAyNzZlMDkwZSBweTNrCis3MTY5OSBkODk1YTQyZGZjOTg5MmRhNmIwNDhmMGNmMjQ4ZDI2YjhiM2QyMTZlIHJlbGVhc2UzMC1tYWludAorNzE3MDAgZDZkYTY0NjM1NGQyMWU3MWRkNjVhNDllMGZiY2U3NjA4YWQwZGVhYiByZWxlYXNlMzAtbWFpbnQKKzcxNzAxIGQ0M2Q2NDI1MmQzNjExZDk2N2JhNzljNzA4M2JmMDY0NDI5NDdlYWYgcHkzaworNzE3MDIgMmVkMGQ3ZTFkMTc3MzU3ODhiNDQ2Y2ExOTVlNzE4YzU4M2Y4Njc0YSByZWxlYXNlMzAtbWFpbnQKKzcxNzAzIGZlMTU1MjZlYmU4YmY2ODc5ODVkZWIzMjBmM2IyOWY5YWNkNTBhODIgcHkzaworNzE3MDQgYzVjODY4MGVlMGIxYzFmYTRjZmU3NGE1ZWE0ZDAxZWNlMWY4MTQ4NiBweTNrCis3MTcwNSBhZDVjN2VhY2NlYTExMjUyZWY4NDJlNzkwNzVmZDQ4NWQxMTQwZjI1IGxlZ2FjeS10cnVuaworNzE3MDYgODIwOWI2YzMyZTYxMmJjNDU3ZGQ2MmZmNTViMThiMjYyZTYwYmJhYiBweTNrCis3MTcwNyA4YThkYzdmODU0M2U4N2NmNjYxZjg3MDU4MjhiZmRjYmY2MDI2MzM4IHJlbGVhc2UyNi1tYWludAorNzE3MDggMzQxMjE1NmZiOGVmNmE3MWZjNDNhODJhZjFjMGUxZDY1NmVmNDBjYiByZWxlYXNlMzAtbWFpbnQKKzcxNzA5IDc5YTZjNjNhYzViMGQyMGVjZTlhYjllYzA4ZDliY2JmNzdjMmY0YTIgcmVsZWFzZTMwLW1haW50Cis3MTcxMCA5NmQ4MmZhY2Q4OTBlOWY2ZDhlODIyOTczYTllMzM3ZGNmYWM4NzRmIGxlZ2FjeS10cnVuaworNzE3MTEgNmE3ZmEwNGQ4MTExZTQ4MTNiMzQ3NWI5MTcxNGU4YjBmNWM1ODc3MSBweTNrCis3MTcxMiA1Njg4N2EyYTkwYWVmNjM5MzAxNWZhMzMyY2Q4MWQ0OWFkZDM3YjA4IHJlbGVhc2UyNi1tYWludAorNzE3MTMgZmIwOGY2MGFiNTExMTdjOGQ0NmI5Y2I3YTkyYmVjMjQ0YTRlMjhhNiBweTNrCis3MTcxNCA0ZmE0NzY4NmMwZDcwZmRlYzMwMTI3NDA5NDQ4NTg5ODE2ZTUyYmRiIHB5M2sKKzcxNzE1IDkzMjIzNjAzYzk5MjIwNmI4ZmQ5ODI1N2EyNzU1ZjBhZmZkMzVmYTkgbGVnYWN5LXRydW5rCis3MTcxNiA0ZDk5ODIwN2NmYzNlOWNjMzI4MWUwYTFlZjk5MmViNDk5NjJiYTA0IHJlbGVhc2UyNi1tYWludAorNzE3MTcgNzJhNzAwMGE4NjA5NDJjNTA5NmNmYThlNWRkZDFmM2QwN2MwY2UwNSBweTNrCis3MTcxOCBhNGYxMTdlOTIwZmRhNjBlMGZlYzZmOGIzNzIzZGY2OGIwZmUwYTBmIHB5M2sKKzcxNzE5IGM0ZTlhODc1YzlhNTRmYjcyY2NiOWE2MzBmZTM3YzE0NWNhNjc3ZTcgbGVnYWN5LXRydW5rCis3MTcyMCBkZGExNGFmYTEyYjg1YjBkN2EwYzU2ZDA5Yzk0NGVlMjgzYjJmNjBlIHB5M2sKKzcxNzIxIDk3NTVkOGRkMzM2NmFjY2QyNDYyMWY0OTQ3M2Q3YTM2MWEwYmJmYTcgbGVnYWN5LXRydW5rCis3MTcyMiA3NzkwYjg1ZTcwMDliZTdhZDIxYTE1Y2Y5ZjhlNDdlNDg1ZmM3YzhjIGxlZ2FjeS10cnVuaworNzE3MjMgMjg2NDVhOTYxMDA0MjQwNmE2NWU5NTljOWY1MDA5MTRlZThmNmU3NyBweTNrCis3MTcyNCBjMjc3Y2Y0MTkzZDExYzc2OTk5NGZkMmZkNjg1YWNlZTA4ZGQ2MGU1IHB5M2sKKzcxNzI1IDNlOGRjNTlkNjRkZTQ0NDAzNjQ1YzJlZGM0NGQ2NmU3OTYyOTZmZjYgbGVnYWN5LXRydW5rCis3MTcyNiAzMjljYjAyZjE4ZTZmMjJlNGU3ZWQ1MDNmY2Y4NGM3YmI0NjA3NDJiIHJlbGVhc2UyNi1tYWludAorNzE3MjcgNmVjM2RmMzc1ZjVhODI2Njc2M2Y0Nzk2MmE4MzAwMTMzM2QxYjczZSBweTNrCis3MTcyOCBjZjIxZTlkMjkwNjJmMTZhNzU4MmYwMTFhOTc0ZjJmZTViYjNiYTMyIHJlbGVhc2UzMC1tYWludAorNzE3MjkgNzJmZjQ0YzA1Mjk1Yjk1NWM0NjNjZWEyZTJhNGUyYTU4M2RjYjM4YyBsZWdhY3ktdHJ1bmsKKzcxNzMwIGE2ZDMyNDEzNmUwMTQ1YjI5NThmOWFhY2UyMTU1ODY3YmEyZDE3N2YgcmVsZWFzZTMwLW1haW50Cis3MTczMSBhODJiNTNkYmM2NTY1NWRhYWUxNWQ1MmM0ZGViN2M1YzkwNjc4MjkwIHB5M2sKKzcxNzMyIDFiY2Q1NWRiMzVkZWQ2MTg5ZmViOGM1YTU4N2I5YTk5MDc5ZjFiNWYgcmVsZWFzZTMwLW1haW50Cis3MTczMyBjZjYyMjJjYTBiY2MwNmQ2M2M1NTY5ZmNmMjIzMWFlMDQzYmQ3Nzk0IHB5M2sKKzcxNzM0IDU4OTE1ZmM1NzZhYWNlM2VjYTNmMDMxYWVjODU5ODQxNjI2ZjhmMGEgbGVnYWN5LXRydW5rCis3MTczNSBhZGM3N2E1ZDZhOTYyNmU2OTQyOTBlN2Y4YTBmZTQwNWE4NWU3MjEzIHJlbGVhc2UyNi1tYWludAorNzE3MzYgZDc0YjlhOGU2NmY2MDM2YzE2YjQ0ZDNjZjM3MzZkOWE0M2MwMmZiNSBweTNrCis3MTczNyBkOTk1MDNiNmYyMzhhZWMyNjI4Mzk2ZWZhZTVjNDk2YTMzNGY0M2NmIHB5M2sKKzcxNzM4IDc1NTc3MTZiNmIxY2I5NGJlOTc0OWIwYWFjN2E0ZTBlMjAzZTFiOWUgbGVnYWN5LXRydW5rCis3MTczOSA0OGJmNDJjMmZmN2E4MDM4YWI5MDM0ZDRmMWRlM2JkMzViOGIwYjE3IGxlZ2FjeS10cnVuaworNzE3NDAgN2QyYzgyMjI2OWM3NGNmNDQ4NGUwMWI2NjExOTNmMTVhYThhN2NmZSBsZWdhY3ktdHJ1bmsKKzcxNzQxIDQxYTc1ZGQ5ZGY3OGY0NTdkZWE4ZmZkNDIwMjFmYWM3N2UxMTA2MDAgcHkzaworNzE3NDIgYjdiOGZiZDAxMGNhOWIwMjUwNmU2NTIxODNmNjc4YjNiZTM4MzZlNCBweTNrCis3MTc0MyBkNTBkNGYwOWNkZjdkNzUyZDc0ZjBiODZmZmExYjMyYWJkNTc1ZjMyIGxlZ2FjeS10cnVuaworNzE3NDQgYjdjNDEyZDFhNWNjNDZiOGU2OTM3ZTE3ZTNhMmYwNWMxOTQ5MGE5ZSByZWxlYXNlMjYtbWFpbnQKKzcxNzQ1IDYwNzI5ZWU4NDgyMjU4NDYyN2VkY2YzZWY4YjFhNjQ3YzAwMjJlZjEgcHkzaworNzE3NDYgZTJjNzg1ZmYwYTUwZmYwNTVhZjJlZGVkMDgxZTI5Nzc5YzcxNjhkOCByZWxlYXNlMzAtbWFpbnQKKzcxNzQ3IDQ0ZWY4YTczYThiN2JjY2MyOTI4MjI3Y2UyM2NjNjUyZDYyYTM3ZmYgcHkzaworNzE3NDggMTczN2FhMTUxMzEwODY3ODNmNzgzNGViOWZiMGViMmQxMGVhNzdjMCByZWxlYXNlMzAtbWFpbnQKKzcxNzQ5IDNmMjkyMGFhOTEwY2IzOTQzMGU4M2ZlZTQ2MWUyYWQ1MzEzNDBkNjUgcmVsZWFzZTMwLW1haW50Cis3MTc1MCAxMzgwNzcwM2FmZDBmNTgzNDllMzgyMzhjODI0MmYwODRiN2NkM2FkIGxlZ2FjeS10cnVuaworNzE3NTEgMDM5NzZhMTA4NzAwODNkYzk1Yzk3OWU3YzYxNWFhYmRhNDQ2MmIyZiByZWxlYXNlMjYtbWFpbnQKKzcxNzUyIDBiM2I4ZWQzNjIyNDY0MDk1ZTVjYzQ3ZTIyNTUxMWM3NmQzNDVkZDcgcHkzaworNzE3NTMgMmIxN2M5OTY4OTgxYjIxY2ZkZjYxMDRlNDU1MmQxNDBkNWY3ZTQ4OCByZWxlYXNlMzAtbWFpbnQKKzcxNzU0IDQ1MjdjMTUyZGFhOTM5YzJlZTVlNGE2YjFlNTA1ZDUwMGZjZjk3NWIgcHkzaworNzE3NTUgMjI3OTY3ZmU0NGE0MjZjOTQ0NDIxNTU4YzkxYjA3ZGYzNTg1ZDNlNCByZWxlYXNlMzAtbWFpbnQKKzcxNzU2IDQyYmY1NmUzNDgyNTk2YmE1MDcyYjFlNWI2NTZjMDg4OTc3YmE2ZjYgcmVsZWFzZTI2LW1haW50Cis3MTc1NyA4NTMzY2ZjMjQyMGFkYzEzNjZhOTQwNDIwYzE3ZmRkYTc3NDczNjMxIHB5M2sKKzcxNzU4IDA0ZmZlNmI2MTcwOTEwNjcyZjA1ZmRhMmMxM2VmZGE1ZDYyNGMwZTAgbGVnYWN5LXRydW5rCis3MTc1OSBjZGI2MDE0NDFkMDQ1NTIxZDhlZDBhMjI5NmI3MjcxM2Y3OTVhZGRiIGxlZ2FjeS10cnVuaworNzE3NjAgYTJkNDIzMTAxNDJiZTgxMzhlYTYyMmRkYWZmMzRlODBkMjVmOTViZSByZWxlYXNlMjYtbWFpbnQKKzcxNzYxIGU0MjAyMGE1MjIwYWU5OWI0YWZmZTBlZWI1NmY2MzU1OWMxMTBhN2EgcHkzaworNzE3NjIgMDUzNzVjMmUwNzQyNDAwNmE1NWYxOWM1M2ZhYTBkZTBmNWE3YjE4NiBweTNrCis3MTc2MyA4MDkxZTA1NjZmZTMyMGYyYzVmODEzNDE2NWMyMGM1OGNkYzgzYmFiIHJlbGVhc2UzMC1tYWludAorNzE3NjQgMzcwOTNlOTRhZmM3NzhjOTBiNGJhNzUwM2I4YjBjYTdlZmZjYTZmNiByZWxlYXNlMzAtbWFpbnQKKzcxNzY1IDk2ZWVkNzM4N2NlYTM4OTBlYjU5YjZjNTExY2QxNzZkNjU4N2UzNGUgcmVsZWFzZTI2LW1haW50Cis3MTc2NiA4N2ZiNzIxMzJkNmJkZmExMTU3MTk2N2FiYjRiNzI4OWQzNjAwM2UxIGxlZ2FjeS10cnVuaworNzE3NjcgMTM3ODFiMGY3NDVhNjE4OTBlNGQwOWU2YjI0ZWEyZjk3Yjg3ZDU3ZCByZWxlYXNlMjYtbWFpbnQKKzcxNzY4IGFhNTQ0YTU0NzUzYmE4ZjY4MjBlNzcyMTM0OGE2NjZkN2QzOTE1ODMgcHkzaworNzE3NjkgYmQxODhmZjM0MmE0YzY4OTFlMmMwZTcyOTdlMmUzZjQ3MjFlZDM4MiByZWxlYXNlMzAtbWFpbnQKKzcxNzcwIDczYWEzNzU2YzBiMjZiMDExMzkyNjU4MjQ0Yjc0ZjVjMTM0MWZlOGUgcmVsZWFzZTI2LW1haW50Cis3MTc3MSA0NTVmNDBkMTczOGU4YzA2OTI2YTliN2FlNDk3NjJjYTUwMDVmOTNjIGxlZ2FjeS10cnVuaworNzE3NzIgOGYyOGNlN2I4ZTY5YTE0MTUxOTViNGMwNWJlZjM5ZjRjZjhkNWYwOSBsZWdhY3ktdHJ1bmsKKzcxNzczIDQxMjkzZmE2ZjBkZDQzYTY4Zjg5ODY1NjlkYWE0NWZjZDkzZTE1YWYgcHkzaworNzE3NzQgZDBiMTMzNjNhYTIxNDU2YWUwMGE3NzgwZGUzNWJkNGZkZGFhMWZhNSByZWxlYXNlMjYtbWFpbnQKKzcxNzc1IDI3YWM4Yzg3NDFjZDU5MmI5MGRlZmViOGEwOTcxMGNlNmZkNGE4NTcgcmVsZWFzZTMwLW1haW50Cis3MTc3NiBjZWUxZmMwNzYzNDQzYjRlODdiZjFhNzNhMzQ4YTgyYzc2YmY4M2Y2IGxlZ2FjeS10cnVuaworNzE3NzcgOWNlYWUyOGFiMjcwNDAxMWExZTkwYjgzODY1NDY3YzliYjYxNzU3MSByZWxlYXNlMjYtbWFpbnQKKzcxNzc4IGRlZDQ2NzM1MjU1Mzc5YWQ4YTQ0ZmE0YzhjYmZmOWUzZWYwZDAxOTQgcHkzaworNzE3NzkgOTNjOTI5YTJmYWM3ZDcyMjllZmMyYWU3NDdhZDBiNzUxNzE5MmU4YiBweTNrCis3MTc4MCBjOGE3NTcxMGFiMjUwMTczMGRjYTMwM2U3YTI0ZjRmODgzMGRmZjcxIGxlZ2FjeS10cnVuaworNzE3ODEgNzJjOThiNGJmMGI1NjgxOTJjMzdiNTBmNWY0OWQ4MmI3NzNjOTc2NiBweTNrCis3MTc4MiA2OTZkZDIyODE4NDE1NjFlZmY0ZWMwNzJkN2ExN2ZjY2QzY2Y2Y2Q3IHB5M2sKKzcxNzgzIGVkM2Y1MWYyYWJmYmI3MjljYWM2MTEyYjRhYzA1M2IxMDA2ZGFjYWMgcHkzaworNzE3ODQgYTY4ZTJkYzVmNTE0NGQyMmQ4ODlkYWI3M2I0MDk2Mzg1NGY5NmE5ZCByZWxlYXNlMzAtbWFpbnQKKzcxNzg1IGRlNjNiN2U4NTAwZGMyZjkwODU0Y2QzNTkzMzQ2ODAxNWM4MWI5ZjEgbGVnYWN5LXRydW5rCis3MTc4NiBmNDRkNDJhMTFiOWI0M2EzY2Q4OTA0YzI5NzJkOTkxYjAyYThhZmY3IGxlZ2FjeS10cnVuaworNzE3ODcgNzczMzZkODJhYjk1MGI2OGI5ZTVjMmE4Zjg1OWMxMTAwNzQ2YWYyMiBsZWdhY3ktdHJ1bmsKKzcxNzg4IGMzMDY4MWM2NmIzZmVmMjY1NGI1MjRkYzI3NjYzZjQyNTM5OGM4MGEgbGVnYWN5LXRydW5rCis3MTc4OSBjMmU0YTdhZDA1ZjJiNDc1OTY4NWQ3YmZmZmYwNmY0MmU0MmU3YTU2IHJlbGVhc2UyNi1tYWludAorNzE3OTAgNDE0YmE4ZWZjODA0NmFlNGFlZWU1MTYwNjdiYTg3OTg4ZjUyNDQyMiBweTNrCis3MTc5MSAyYjA1N2QyYjk4ZWIwNzRmMmMxMWYyYzFlMzdlODZkOTUwZDUwYzVhIHJlbGVhc2UzMC1tYWludAorNzE3OTIgYjBmZWEzYWUzYjZlZjU2MjBkOTY4MzI0Nzk4MGZjNGU5YjM2Y2Q0ZCBweTNrCis3MTc5NCBmOWYyM2YzNmMzNmNhOGY0MWQwZWM1ZTc3YTlkOWQ0NWZiMWNhNmU1IGxlZ2FjeS10cnVuaworNzE3OTUgNzhiZmQ0NDgxNzYzMzFjOGIyM2YzZjdmOTlmYTAxZDI5NTEyYzI2MyByZWxlYXNlMjYtbWFpbnQKKzcxNzk2IGM1ZTBkOWJlZWJmOTIzMDg1MzA2NzAxNWFjOTE3MTU3MjFjODE5YTkgbGVnYWN5LXRydW5rCis3MTc5NyA2MThkMmUzYWNhNjJlYmRhMWZlODI2YzM5MjQ1YzlmNmZjMTQ4OGU2IHJlbGVhc2UyNi1tYWludAorNzE3OTggNjExNTE4ZDY4MGRlYzI0YWJkMmJkZmVkNmFmNDA0NzJiYjQyN2FmOSBweTNrCis3MTc5OSBlOTU5NWNiNWM3ODYwYmFlYmEwM2I1NTIwZGJiNjgxOTcwODExNjVlIGxlZ2FjeS10cnVuaworNzE4MDAgMzMwZGI5NTRlNTkzNGUwOWIyYmI2NDkyNzZkNjU3N2ZhNWU1NmQyMCByZWxlYXNlMjYtbWFpbnQKKzcxODAxIGI1ZGYwOTRkODk0MWQyZGE0ODk2ZWM5ZTgwODZmNGE5OWI2MDM0YTkgcHkzaworNzE4MDIgNDRhOGE1MjVlY2ViODA2N2Y4NDIxMWVjMDhmNGU3MzQ4NjU5OGVhYiBsZWdhY3ktdHJ1bmsKKzcxODAzIDZmNDJkZTcyYzJkY2U4OGNhMTBkNjNhNTg0MDY5NjZiZGQxZWNjMmMgcmVsZWFzZTMwLW1haW50Cis3MTgwNCA1MTNkYzZmYTYxYzBiNzBhNmI1ZGYxZmM2NTBhYzVlODcyM2ZhZTIyIHB5M2sKKzcxODA1IGM2ZThjNjU3MTU4ODc2ZjdmMjEzOThiMmNiNDUzYTU3ZDI1MWRlMDQgcmVsZWFzZTMwLW1haW50Cis3MTgwNiA5YmY0YjNlYjA0NDcyNjk5MTM1MzhlNjdkNGNlMTMxMDNmZDQzZDY4IHB5M2sKKzcxODA3IDI0ZDgxZmNiMGUzMzM1ZjJlMmE0ZTJlYTQyZDU4OTQwZTFkNTE3NjEgcmVsZWFzZTMwLW1haW50Cis3MTgwOCA4NTU5N2U1NTY2OGNkMGM5MzhiMmU2YmY0OTFhMzEzMTQzZThjODk1IGxlZ2FjeS10cnVuaworNzE4MDkgMWYxZWNhNjgxNjc1YTM5ZTVhMTMyMjBiZWYzZmMwMzVjMjNjNzA5NCByZWxlYXNlMjYtbWFpbnQKKzcxODEwIDFhMTI5MTM4NDkyODkzMmRmNTNiNzIyZGUwNmEwYjA1NDMyMzZiZDIgcHkzaworNzE4MTIgMmQwOWJjZjcwMzk1NTU4NDVlNDQyYTVjNTg4MTVjM2JiYjdmMmRhMyBsZWdhY3ktdHJ1bmsKKzcxODE0IDE3MDA1NWQ3YjQ5NDJiMjNiNjliYjJmODM2YTdlOTZmMjkzZjVlZDYgbGVnYWN5LXRydW5rCis3MTgxNSBmZjllZGNiMzY4NzhlZTg2MWU5M2NhZDdiYWNlOWZmNmFlMmNhNTNlIGxlZ2FjeS10cnVuaworNzE4MTYgNjI5MmJkMjYzMmUyYmRkN2Q1OGRlZjA3YWY5YjdjMjRlMTU2MTlhMCBsZWdhY3ktdHJ1bmsKKzcxODE3IDQxYmMzM2VlMTczMDRmYTZiMWViYjYzYTQyYjE1YzhjNjUxZjdkZWUgbGVnYWN5LXRydW5rCis3MTgxOCAzMzAxMTUxMzc0MTQ3NWNkZDcyMDZkZDNiNWJmODk5ZGVjMTk2NDcyIHB5M2sKKzcxODE5IGQyOTUyNTRkODRiN2Y2NWZlN2Y2MWE3YTdkNWJiYTVlMTA3YTlkNWYgcmVsZWFzZTMwLW1haW50Cis3MTgyMCA1YmJkMmU2ZDYxMjYyMGU0ZmVlZTMxMjBlMWQwN2U1OTA1YzYzNzM5IHB5M2sKKzcxODIxIGE3YzRhMzdjOWRmMDc3MTY4ZDczZWFjYWU2OGRjYjFhODUwYjUwNDEgcmVsZWFzZTMwLW1haW50Cis3MTgyMiA4Mjk1YjdiMjk0YmQ2MmRiYmVkZDNmYzFkMmRhMzMzOWRjZmNlMzg5IHB5M2sKKzcxODIzIDgzMDBiMjc0ZmRkM2NjZjhkMjE4MTE1N2MyYTg4MDc5YWMxNDllZDkgcHkzaworNzE4MjQgMzMzMTJiOTEwNzczNDAxZGQ1MzU0YmQ5Y2RlNzY4YjUyNzgyMDhiNSBsZWdhY3ktdHJ1bmsKKzcxODI1IGZkZTAxNWEyYzhiM2ViZTI0OTZiNDU2YTFkYmYxOThjZjVlMDU5MDggcmVsZWFzZTI2LW1haW50Cis3MTgyNiAzMmIyNDczMDBmZjlkMzIzOTE5MWMxOGMzZTU0OTBkOWQxYmE0NmY3IHB5M2sKKzcxODI3IDA3NjFlZTI4YjZlZDYyNDAyYWYwZWJmNTZiNWY1NjZiMzFiNWE1MGYgbGVnYWN5LXRydW5rCis3MTgyOCBkNTU3MzIwZGU4NTZjYmIyMTM5NGQ3ZWNhNTEzYmFjZTVmMzI2ZGQ1IHJlbGVhc2UyNi1tYWludAorNzE4MjkgMDZkYjFkOWQyNTVmZjdjN2Q0NWQ0NjNhNWI2MzZmMDdiYjhhNmEyMiBweTNrCis3MTgzMCAxZmM5YjY1MDg3MjMyMjkyNTM2NDQwM2Q5MmM2NDhmMDkyYWVlMGE2IHB5M2sKKzcxODMxIGVjODQyY2M2MTBlNmYxNGYzZTEyYTI1ZDJmMGQ0OTNjZWM0ZjdlMjggcmVsZWFzZTMwLW1haW50Cis3MTgzMiAxMTQwNTljMjY3OTRmMWFkN2M0MmUxYzE1OTY2ZTk4NTk3YTQ2NmY4IGxlZ2FjeS10cnVuaworNzE4MzMgYTFhNmY1ZDJiM2RjYjVlNTIzOWE4ZTQ0ZWE0Y2ExYjczNDJkMDYzMiByZWxlYXNlMjYtbWFpbnQKKzcxODM0IDU5YTFmYjkzOTU3NzRjZWIzYjc4YTNmMGFhNWU1OTY5ZTgzNzk3M2IgcHkzaworNzE4MzUgNDZhMzJkNDQ2M2M4M2E2ZmJkMDI3ZWI1NDMyZWIyY2ViZjc0NDg1OCByZWxlYXNlMzAtbWFpbnQKKzcxODM3IDEzM2M2NjAyN2YzM2U0YzJmNjMxMTM4OTVkY2I4OWYxZDlmMzgwZGQgbGVnYWN5LXRydW5rCis3MTgzOCAzMjIyNjc3NmY4NjYxMzQ2ODI4OTIyOGNkMDIwMTJmMTFjNTAxMWViIGxlZ2FjeS10cnVuaworNzE4MzkgNTRiNDQ4OWYxYzI4NGQ2MTI3NTcwY2Q3YzZjMjc3NzI5M2Q5Y2JkNCBweTNrCis3MTg0MCBmYTRmMThlZGUyNjBiYTc5MjM5ZmZkZmNmMzVkYjA0MzhkN2RhODZhIHJlbGVhc2UyNi1tYWludAorNzE4NDEgYTY1ZTNjMDcyNjBlOWViMDc4MWQ1NWFkZGQxNDg3MDI4YzljYjExOSByZWxlYXNlMzAtbWFpbnQKKzcxODQyIDExNjc4N2Y5YjlmY2RiZjgxMjE3Mzk4YzExYTU0YTU4MjUwNmUyYTcgbGVnYWN5LXRydW5rCis3MTg0MyA2M2NiNWM5MWNlMjE0OGM1ZDA1ZmNkYTJhNzI3NjhhZTNkYjg2YTkwIHB5M2sKKzcxODQ0IGZmN2I0ZTU4MmM0OTA4M2Y3MWI0MmI5ZDcxNDZkYmEyMjUyY2IwMTEgcHkzaworNzE4NDUgZDg4MDJiMDU1NDc0MzAyOWUxNTQ4NjYxYWNjYzM5MmQwYTM3MmRkOSByZWxlYXNlMzAtbWFpbnQKKzcxODQ2IDQzZTQ2ZTRlMDJmMDM2MGIzM2Q3M2YwYTg2MDE5MDRlMzhhNTVhZWIgcHkzaworNzE4NDcgZmJiMWRmMjU0MWMzNmEwOWNlOWJlNTc3Y2FiNjA5MzQyYWQzMzZmMCBsZWdhY3ktdHJ1bmsKKzcxODQ4IDk2OTFlNzM0NTk2NGRhMTlkZjUyZmE4ODkyNzYyZjBmYzNhY2EzZDYgcHkzaworNzE4NDkgMDk2ODkyMTJiM2ViMjgxOTRhYTgxMTg2OWM3ODYwMDBiZjIwNDVmYyByZWxlYXNlMzAtbWFpbnQKKzcxODUwIDJlZjU0ZThhNDRkZDQ4OTllZDkxZGE1ZWU2ZGJlM2QwOTQzZTA5NzUgcHkzaworNzE4NTEgMDBhOTI3ODE1ZGNkNjJkNDY5NDhiYzQ4YzNmZGEyM2Y1YTBhNDE5OCByZWxlYXNlMjYtbWFpbnQKKzcxODUzIGQ1MWU0ZjYyYmM4YzA0NTU4ZDIwOGFmOWNkNDMwNDUxOTNlMjhkYmEgbGVnYWN5LXRydW5rCis3MTg1NCAwMmYzZjg1ZTM5MzZiOGMwMDA4ZWFkZTMzMzZjNzEwYmM0ZTYxNmVmIHB5M2sKKzcxODU1IGM2MmNjMmE1NzY0YjYzNDIyZWI1ZDI2YjM0NWVmOTEwMTk2ZTFkMzQgcHkzaworNzE4NTYgYjVlMmJjYmJmYTc0MDJjMjY5NDg0ZGU3ODY3ZDkwOWMxZGQ5YWM3MyByZWxlYXNlMzAtbWFpbnQKKzcxODU3IDBmNTVlMDljMTZiNTY4MDYwYWMxYjJiYTAzNjVjZmU1NWZmY2VmZDMgcHkzaworNzE4NTggMjk4ZjI4YWZmMThkMjM5NDBiOTljZmI4MDgyNmEyMzFkMjQwMTdkYyBweTNrCis3MTg1OSBiMmZjYjNmMjI0ZGUyZmUzYWYwN2IyYzQ3YTU5NmFkMDNiY2VmYjM0IHJlbGVhc2UzMC1tYWludAorNzE4NjAgMzE4OTUxODkwYWJiNTdjMzk1MzA0NjI5YmQ1MWIyMTUxNjI2YmJmZSBsZWdhY3ktdHJ1bmsKKzcxODYxIDY0MjkxMGEwMWQ3ZjM5MDBmMDBkNGMzZDRjMjJmYjNmZmZmZTcxNDkgcmVsZWFzZTI2LW1haW50Cis3MTg2MiAyZTM3MTkwZjhlYTdkNDljYWNiODk2YTg3ZDI3N2ViN2E3YzNiZThiIHB5M2sKKzcxODYzIGZkYjJiZTQ3MWEzZmRiZDAzNjhkMGMwMDY0ZTI0ZGMzODk1YWE1MGEgcmVsZWFzZTMwLW1haW50Cis3MTg2OSA1ZmQwZGEyYTk3NzhlMTY4ZmY1Yzc0Y2I0OWY1ZTU3Y2VlYTk0YzY3IGxlZ2FjeS10cnVuaworNzE4NzAgYTM0ZDk0NWMwN2VkYjNlY2JlOGY3ZjAwNTBjOGE0ZTNkZTQwMzdiZCBweTNrCis3MTg3MSA4MGRhNTI0NjZmZTg3ZGU1YjYzMzM1OTUxNTBjNDUwNTlmMzM4YzJjIHJlbGVhc2UyNi1tYWludAorNzE4NzIgYTVlYzU3ZTg1ZjY1YzE4Y2MzMDM2NWJlMjMwZjY0MzU2MjMyYTRhMSByZWxlYXNlMzAtbWFpbnQKKzcxODczIDlmOTQxMjE5MjQwMmQ5ZjU5MTc3M2Q2ODQ3YTVmNTk5MDgzZGRjMGQgbGVnYWN5LXRydW5rCis3MTg3NCA5NTU2ZTkzZjJhYmI0OTliNmYzODM5ZWZlZmFmMWVlODczODZjYWE2IGxlZ2FjeS10cnVuaworNzE4NzUgNWE0NmE4MjIwNmU3YmJmMzk4NDVhZjUyOWVlMzVjMGRlMTk2ODBjNyBsZWdhY3ktdHJ1bmsKKzcxODc2IGIzNjZhNDk2ZDQ5OWViMTkxNzcwYmJlZDZjY2QwMTkzNzg1YjBiN2EgcmVsZWFzZTI2LW1haW50Cis3MTg3OCA4OGE3ODg3ZDdmZDRhZjk2YzM4OGIzMjMxNzNhZGM5MzhiOTdhODAwIGxlZ2FjeS10cnVuaworNzE4NzkgY2U0N2RlZTFiNTQ0MjNjYWNhMmI4NDUwNTkwMDAwMmZhNzM5OWFlYyBweTNrCis3MTg4MCBjNTcxMDhkZWYzZTNiZTk5N2I0NjRkNTUwNzRlMmMyYjY0YzhjMTEyIHJlbGVhc2UyNi1tYWludAorNzE4ODEgZDM1MzM3ZjY1MDE1OTk5Y2NjMzMxOTBiMzliYjU1ZjY0NTVlMTgyZSBweTNrCis3MTg4MiBhZDBjMjY5NzJiMjIyMTc1OWQyN2MxNTIzZDMwOWRkYmIwNjllNmZlIGxlZ2FjeS10cnVuaworNzE4ODQgYWQwM2JiNWQwZjdkYmJjNWNmYzU1NDgzYTEwN2IyNDdiNTI2ZjZiYSBsZWdhY3ktdHJ1bmsKKzcxODg1IDZkYzk4MDVjYjBmYTk3NzlhZGE5YmY2ZmZlNTVhZmUwZDBkZmMwODMgcmVsZWFzZTMwLW1haW50Cis3MTg4NiAzY2M1ZmMzMzMyZjZhYmNjYjk5MzExYjUxOTczMzVmZThlNzNmZDJmIHB5M2sKKzcxODg3IDgwNmJjNDY1MWI5ZGUzNWVlNjBmZTY2YzQzNDFiYTNiZDFmNjZiY2IgcmVsZWFzZTI2LW1haW50Cis3MTg4OCBjYWRiNjllMWRjOWE2MmZjYjQ3NGMzMTU2ZjM4ZmE4NzE0NzUzOTJhIHJlbGVhc2UzMC1tYWludAorNzE4ODkgMTgzN2U4ZTIyOTI3NzcxMTE1M2M0YWUwMmUwYWQ0ZDMzN2FiYjA4MiByZWxlYXNlMzAtbWFpbnQKKzcxODkwIDA1ZGU4NjQwNzdiYTliODNlODljZjk1ODczZWRlNzUxNzU0OTY3ZTAgbGVnYWN5LXRydW5rCis3MTg5MSA1ODdjOGUzOTE3YzZhODI1ZjI5MDhmNTlmODU4NjUzMDc2NzJhMmFmIHJlbGVhc2UyNi1tYWludAorNzE4OTIgZDNmZTZlOTY0ODRjOTdjZDRlMDA3NDFhMzc3ZjI1YzQyYjZkNTU2YyByZWxlYXNlMzAtbWFpbnQKKzcxODkzIGVhYmU2Y2Y5NzM0YzgzMmIyOTZhZjhkMzNhOTYyZTdkYTdiNDYxNjYgbGVnYWN5LXRydW5rCis3MTg5NCBhMmVmNGRkNTVjZjI1NjE5NGJmOGNkZjRjZjU5OWFhZTM0NjJmZDZmIGxlZ2FjeS10cnVuaworNzE4OTUgZjA4Zjc3NjA4MmVjY2IzYTdlM2MxMzhkMGRmYTAxZmM1YmZjMzYyNyByZWxlYXNlMjYtbWFpbnQKKzcxODk2IGZmMjllOTY2YWJiNjVhOTIwNjJiODllMjY4ZjQ3NTY4NjQwODJmMGMgcHkzaworNzE4OTcgMmY4ZTUzNWY5YTliZmE0NDFhNzMxYjM4Y2E2MDQ1MzNjNTkyNzBkYSByZWxlYXNlMzAtbWFpbnQKKzcxODk4IGJiODc2YTEzM2JkZjNhN2E5ZGQ1OGMyN2Y4ZDc3MjYwMzg4MWZhYTQgbGVnYWN5LXRydW5rCis3MTg5OSA2NzZkYWExZWYyMjM3MTI5ZTM2ODBlMDQyNjIyYmFmZmUyMGQyYzMxIGxlZ2FjeS10cnVuaworNzE5MDAgMzA1ZmZhZGY4MzE1YjNiNThkMzM2MDFhNThjZDNiYTdkMzZhN2U0ZSBsZWdhY3ktdHJ1bmsKKzcxOTAxIGRkY2MyYTZmZGUzYWUzYjk3MzYxMzQ0ZTI1MGI5OWU1ZThhZmJlMDQgbGVnYWN5LXRydW5rCis3MTkwMiBjNzU2ZjMwYmM0MmE3ZTY0YzA0YzU2Zjg3Yjc4MDUxZGU0NzA5ZTRkIGxlZ2FjeS10cnVuaworNzE5MDMgODUyNDZlNGUxNDI4M2U2ZTE5ZjM0MmMwNWQwOGFjZTA4MmJhMzAzNyBsZWdhY3ktdHJ1bmsKKzcxOTA0IDE0NjdjYmMyMjNlNjAwNzk5MjRlNzIxYWNlZDg2Mzc5YTJlYjkyYjIgbGVnYWN5LXRydW5rCis3MTkwNiAyNDgwZWE3NTA2OGZhMjFlNGQxMWEzYjNiMWVmOWM2ZTE2YjI0ZGI2IGxlZ2FjeS10cnVuaworNzE5MDcgNzFiN2I0OTIxNTEyMWY1OGQwOTFjZWU2ZTU3MGZlMDE1MDVhNjRhZSBweTNrCis3MTkwOCA0YWYwNmIyYmMzY2MyNWVhNmQzZmJiMmY3YWViZGIwNWEwYmRkOGMzIHJlbGVhc2UyNi1tYWludAorNzE5MDkgYzZiZjUyZTE1M2I0YTNkMjNhMTJlNTE2MDkyNjI3NTIwZjRkNmM4MSByZWxlYXNlMjYtbWFpbnQKKzcxOTEwIDg1Y2M5NTEyYjYwYzUzNzgxNjlhMTMyM2RkNTkxZDk1MTgzNTg0NjEgbGVnYWN5LXRydW5rCis3MTkxMSA3Y2QyM2IyZWFhOTNiZWRlMjU4ZTY0YWJlNzdjODhmMjI2ODE5ZjlhIHJlbGVhc2UyNi1tYWludAorNzE5MTIgMDgzY2VhMGYyN2EyYzIxM2E3NDUxM2UzOWRjMjFmOWUzNWFlNDhhZiBweTNrCis3MTkxMyAwMDZhNDBiNWUwYzNiNWY5ZWYyZWFmNGRiOTgxNzNjMTQwMTNiMGE0IHJlbGVhc2UzMC1tYWludAorNzE5MTQgMTc5ZjQ1OTNiZDNlZDA4MWZiM2U3NzBjMzMyN2E0MWI0MzhlY2IyNSBsZWdhY3ktdHJ1bmsKKzcxOTE1IDNkMDdjOWIyMzk1MTQyYjAyYTU0MjQ3OTEzOTBmY2M0ODA4ZGMyZjUgbGVnYWN5LXRydW5rCis3MTkxNiBmODgzMDZjODI2NWUzZGRjMGIyOThlYmEyNWE1NTQ4MTUzNzZkYWRhIGxlZ2FjeS10cnVuaworNzE5MTcgNjJiMzE4NTM1OWUzNjVhMzc4Y2ZiZDY5YThjNjdlOGNlYWUxYTRkNSBsZWdhY3ktdHJ1bmsKKzcxOTE4IDNiNDlkMzBjYTU0MTNiYzA5YzczOGFhN2NmNjg0MzAxM2Y2ZGMwNzcgbGVnYWN5LXRydW5rCis3MTkxOSAyZTI5N2IxZWM5MzU2MGYxMzIwYWNkZGU5N2ZhMjBiODM3ZGJmYjIxIGxlZ2FjeS10cnVuaworNzE5MjAgNjk0ZGFmOGNkZjk5MzhiZjJiZWE4YzBiMzc4NzZkMmFjMjMyMTFiZiBsZWdhY3ktdHJ1bmsKKzcxOTIxIDYyNTVhNzJhNGMxZTllYWJiOWIwZTRlYTMwYjk3OWQwNTU0YWFiNzUgbGVnYWN5LXRydW5rCis3MTkyMiA4ZmJhMjU4NGYzOGJlYTIzMzVmZGEwOGRkZjE0NjJjMjJlMmJmZmI2IGxlZ2FjeS10cnVuaworNzE5MjMgNjMyODYyNDJkZDlkYjE0NDVlNGY5MjMwNTI5OWFiNDcwMjFlNjZlYiBsZWdhY3ktdHJ1bmsKKzcxOTI0IGNhMmYxZTM0ZjU2MmQxYjI5MTZjYTViMGJhYTdjMWJmYWE1OTRmMjQgcHkzaworNzE5MjUgN2JiMWE0Y2Q1ZWU1Yjg2YzZjZmQyZmRlMTVjOTc3YjZjNGIzODk5MSBsZWdhY3ktdHJ1bmsKKzcxOTI2IGVkZDhmMGQ1MmIzOGUyZTUwY2Q2MDIzMDE5YTFkNWQ1YzY3ZmI2YmUgbGVnYWN5LXRydW5rCis3MTkyNyA0NTZiMmEwNmQwMTcwMGY3MDY1ZGJhMTg1NTA0OWQ4ZjZjMGM2ZTJhIGxlZ2FjeS10cnVuaworNzE5MjggYzdlYTgyNmZhZDc3MzQ3ZWU4NTJlZTk0ZjMyYTcwOGVkY2M4MjZmNSBsZWdhY3ktdHJ1bmsKKzcxOTI5IDI1YzIwYTc3ZjM3MzNkOTQwMGQ5MWIzNWMwNzhkMGYwOTg4YmEzN2EgbGVnYWN5LXRydW5rCis3MTkzMCAwYWQ0MTUwOTRhMDUwNjE4ZDg1ODM3OWQyNjNlZGQ2ZDM4MzU3NjFkIHB5M2sKKzcxOTMxIDEyNzkxODEyNzg4ZGZlOWVhNWM1M2Y0YjAyMTgzNTJjNDhhMjM3MmMgbGVnYWN5LXRydW5rCis3MTkzMiBlY2FjYTcxNzdmNjY5NjFjNjk0MTJlNTBmYTkzMDhhZTZiYjRjZTQyIGxlZ2FjeS10cnVuaworNzE5MzMgNGU1YWQ1NjZiZmJiNWE5MzliMjRlYjMyNDBiYzQwMGRhMzIzOTdmNiBsZWdhY3ktdHJ1bmsKKzcxOTM0IGEwN2E5Yjc1OWYyN2MyNTZmZjNjMzVjNWMzYjA4YmM5NGY0Y2RkMzkgbGVnYWN5LXRydW5rCis3MTkzNSA5Yzk4NjA1MDcyNjUwNDgzZTgyNGJmYzY4MGYzODUzMjRjY2VmYzk2IHB5M2sKKzcxOTM2IGYxMTQyZGU0M2U3ZGVhOGZkZjM3MmVmYmMwZWIxNzkwMzE3N2FlYjMgcHkzaworNzE5MzcgODFhZWI4YmM2NTlkNTcwZjYzNjE3ZDFiODBhYTI3ZWUyOWFlZTIwOCBsZWdhY3ktdHJ1bmsKKzcxOTM4IDY5NDdiYzNkZDQzMzIxNjQyZmMyOGE1NWNjZTcxZDRmOGU2MzJjOTYgbGVnYWN5LXRydW5rCis3MTkzOSAzMGIwM2UxZGVhOGJiNzEyMDg3ODFjMjBjMmFlNDYxYTFmNDUyMjc0IHJlbGVhc2UyNi1tYWludAorNzE5NDAgMmNkZGFmOGQzYzNlMGM5OTMxMDdlMzk0NTY3MGFiOTNlNTU0ZmMwMSBweTNrCis3MTk0MSBhM2Q0OGIyZTk1N2RlOTcxYzA5NTVmOWViMzExODQyNTI1MWY4MGIxIHJlbGVhc2UzMC1tYWludAorNzE5NDIgZWYwYWM0MjY5OTM0MGI1ZDg4NzE1YmVmNjkxNTZlNDVmMzQ0YWFjMSByZWxlYXNlMzAtbWFpbnQKKzcxOTQzIDkzMzI5N2ViYWM3YmFjMjBmOWFhNjJmOWEyM2NiYzAyMGI4YjcwOTMgcHkzaworNzE5NDQgNzUwMTBjYWUwNDc5MDA3Njg4MmFmMjc5YjhiNDQ1ZmI5M2MzMzc4MCByZWxlYXNlMzAtbWFpbnQKKzcxOTQ3IDcyYmQ0NTBkNTM5ZjE1N2U2N2ViNmUxYjdkZGUxZWY2M2UzYjQ4YTggbGVnYWN5LXRydW5rCis3MTk0OCBjOTJlOTNhNTQyOThhODMwNGYxZWNlMTU0ZjRkMTU5YTZhYzJjNWNhIHJlbGVhc2UyNi1tYWludAorNzE5NDkgOGZkY2RmMGI1MDgwZWE5MmU1YWVkOTVkODNmYmExZDIwOWRiYzNmMiBweTNrCis3MTk1MCA5MTI0Mzg2NTVmOTMwNDA0OGJmOGNiOGNlZDkzM2FmNWQyM2M3NmNhIHJlbGVhc2UzMC1tYWludAorNzE5NTIgYTNhMjQ2ZGExNDRiN2QzNmJiMmJiN2VjZmNhYTY0MjAyZTgxMzAzOCBweTNrCis3MTk1MyA5ZGExY2ZjZDJhY2Y3ZjY3ZDI5MTAyOTQ2N2Q4MTg1NTNlMmIyMjg4IHJlbGVhc2UzMC1tYWludAorNzE5NTQgMTMzODE5YWU4MGZhOGFjZTE4MTU2M2E5YTJmYzEzYjc4YzEyYmFjNCBweTNrCis3MTk1NSAxYzJkMTFhN2ViMjNmNDEyMzRlZjE0MjMyYTc1ZDUwYmVmMzRhYjcyIGxlZ2FjeS10cnVuaworNzE5NTYgMTcyOTEzZTE3MDE5ZWQyOTYwMTU3ODRmYjY3ZmZjZDc4NjNjZDQyNyBsZWdhY3ktdHJ1bmsKKzcxOTU3IDczYjUwMmY1NzY5MDU5YzA5NDVkZTM4ZTAyMDQ4ODJiMjI4ZDNlZDggbGVnYWN5LXRydW5rCis3MTk1OCAwMDY5NGUwYzJlNmIyZWIzMWNiZmIxNWNlYjQ1NzQxZDIyZTM0ZTUzIGxlZ2FjeS10cnVuaworNzE5NTkgNTljNDExNDM3OWIzNGE3YjljZWNmYWNkNjA4OTM4YWE4MjY3ZTcwZCBsZWdhY3ktdHJ1bmsKKzcxOTYwIDY0MTEwYzBhZDUzMDVlN2I3MjVmYjliN2FmMzAyZjlkYWVkYTdlZjcgbGVnYWN5LXRydW5rCis3MTk2MSBkYjAzMDE2YmY2NTM5ZjQ2ZGQwNDY1NGI2N2Y2ZTlkNGEzMTgxMzMwIGxlZ2FjeS10cnVuaworNzE5NjIgYTE1YzI4YmZiYjM4Yzg2YmJiNjdhZjMzZGU2M2U2NTY1NjQyMWE4NyBsZWdhY3ktdHJ1bmsKKzcxOTYzIDc1OTYzMzcyYjcxNDlkOTY2MTRhZWYwOTQ2NjlmZmE0MGNhYzZjYTEgbGVnYWN5LXRydW5rCis3MTk2NCA1OWExYjAyZGU5MDY3MTIwZjJkNDQwNGFiOTE0MTZmOWFhZDEwOGU3IHJlbGVhc2UyNi1tYWludAorNzE5NjUgNzgzNWFkYTNjZGEyYzZhYmQ2YjhmNTBiZWI1ZDExNGYwMzU4N2QzOCBweTNrCis3MTk2NiAxYTVkMWQxYzk0NzhhOTRkMzk4ODc0ODlkN2M4Y2JlMjFiOGE3NWNlIHJlbGVhc2UzMC1tYWludAorNzE5NjcgZjc2NTcyMTA4ZGQ3YTQ1MjgwNmVjNTFiZmIxNzdjZTRjYmM2OTNiYiBweTNrCis3MTk2OCBiNDVhMzIzNTVkMzc4Y2NjODg0MTRlZjc2M2JjMGVmMWFmZGVhNTlkIHJlbGVhc2UzMC1tYWludAorNzE5NjkgMDFjMzM2M2EzNTdmOWZmNzE2OGIxZGM2MjNkY2MyNzZkOWIxNGUwZSBsZWdhY3ktdHJ1bmsKKzcxOTcwIDQ2MzNmODUzN2JiNzdjN2Y1MWM0ZTNkZDY0NWQyMTg2N2IyZmJmZWQgcmVsZWFzZTI2LW1haW50Cis3MTk3MSAzOTEyMGNjN2UzMjFlZTgwODYwOWQ1MTg0MjU3ZmZlNmRkMDhiYTE3IHB5M2sKKzcxOTcyIGZiNGJiMGEzODU2ZTFiMDQ5MjIwNmFkOTE0MDk5MjQ0ODdkMTJmYmEgbGVnYWN5LXRydW5rCis3MTk3MyAzNTViZWIwYmQwMmJlYTM4N2RjYjM5NzJhMDc4NmRlZDU2YTQ3NTZhIHJlbGVhc2UyNi1tYWludAorNzE5NzQgNzIzNzczMDQyNWZiMzczZmQyYmRlYWM1NDc5MWFjZjBjZDNhMTE1NSBweTNrCis3MTk3NSA5NTFhNjJiODZkZThiOTljZTQ2ZGVmYjY3OTA3NzFhNDVjYTE0YTJiIHJlbGVhc2UzMC1tYWludAorNzE5NzYgYmZiNDdiYzFkMDUxMTQ0MThhZDdhZDhhNjA2YWVhYjc4ZGYzYThmMSBsZWdhY3ktdHJ1bmsKKzcxOTc3IGY3ZWNjZjc2OWMxYWUyZGY5ZjU4ZjBlZWUyODgzMmFjNjgzYTk1NjEgcmVsZWFzZTI2LW1haW50Cis3MTk3OCA3ODVlYTI5OWZlMjM2ZGI2MTMzZjQ5ODczNWNjMzgyNDg4ZDJmYmU0IHB5M2sKKzcxOTc5IDMxNjJlYjA5YzJjM2RkYTdkZTJlMjQxNmYwMjljZjMyZjFjNjNlMTcgcHkzaworNzE5ODAgMDIxYzM5YTM3ZWRmNzYxNWRhY2Y0ZGE0MDIyNDFhM2U0MmE4NWRjZiByZWxlYXNlMzAtbWFpbnQKKzcxOTgxIDU0ZWU2ZmQxODFmMmNhNzMzNTU1MjNhNWZlNjU0OGZhZmFjOGM0NTEgcHkzaworNzE5ODMgOWY2MGVkYmE1YWVhYmZmYjcwMzVmOTFlMjhlM2FhYjI0MjFiNDhkYiBweTNrCis3MTk4NCBhYmRjMTc2NGQ4ZTVhMWFkMDFjN2VjODMyZTdkYTgwMzQ1MjViYzBjIGxlZ2FjeS10cnVuaworNzE5ODUgMDY4OGU4YjI0NjMyNmEwNjgwNjFlMjE2MzVhNmQ5NmQyZjkwZWQ1MyByZWxlYXNlMjYtbWFpbnQKKzcxOTg2IDBiMTY3NGYyN2I3MGZhMDRjODUxM2M2ODJhZTQ3NDc2Y2Q4NjliMTggcHkzaworNzE5ODcgNWQ0ZmMxNjZhM2Q0NjE0MDY4MzAwYmVhMTRhNDRlZTcwMjliMThjNyBweTNrCis3MTk4OCA0NTZlNTg0MzAyMDIwNmM3ZDdmNTNhNzY4NzIyNTgzY2MyNzVmYmRkIHJlbGVhc2UzMC1tYWludAorNzE5ODkgZGUxZDBmNzFlMjA5YjUyYjBkMjY1MjRlYThmMjdiODQ0MTlmNDU4ZCBweTNrCis3MTk5MCBlY2MzZWIxNTY0ODg4Yzg0YTZlMjUxNDg2N2RhZTQ1NWY2NDU2MjQyIHJlbGVhc2UzMC1tYWludAorNzE5OTEgMzgzZTMyYWI2MDdjNGFjMWJlMzc2ZjljYzMwMzRiYjUzODhhM2U3OSBweTNrCis3MTk5MiBlMGQ0NWQzMmZiODI0NDI2ODhmNzM4OWY0NjdmNDBiYTM0YWY3MmEwIHB5M2sKKzcxOTkzIDM1ZDczYTk4ODAzOWZkMTMzNmVmMDc5NmVmZGQ4Yjg3N2FkZWVjMTAgcmVsZWFzZTMwLW1haW50Cis3MTk5NCBjYWYyYjkxZWYwNmE1OWNmODQ0YTlkZjI1ZmE0ZTEwY2QzM2NlNmI2IHB5M2sKKzcxOTk1IGQyY2ZkM2QzYmM1NDhmNGY5NWFmNzllZDMxMjkxNmY5MGNmZjc0MDEgbGVnYWN5LXRydW5rCis3MTk5NiBjNDJiN2RkMTU1MDVjZTk4MTYxYzllZDNkZmNiZGYwNWQwYTlhOGM4IHB5M2sKKzcxOTk4IGQzMWJlOGM5YzhhMjliZjkxY2U3NDNiNjMyMWE1MjQ0N2Q4ZTI2ZmQgcHkzaworNzE5OTkgMWZjYTFjOTMyNjk2MjUxNzNlZjM5NjI2ZmNiMThjNTJiNThjZjBhOCBweTNrCis3MjAwMCBmYjg5OTgzMzUzYWQzYzNjZjhmZGExYWMyMDRiNGM5ZWY5Zjc0NGRlIHB5M2sKKzcyMDAxIGQwNTk0ZTdhNDVkNjM2OTM3MmQ5ZTViYjhhNWJiM2E5NGE3YTczYzAgcHkzaworNzIwMDIgOThhYTYzMWRhYzJiY2QwMWRjNmQyMmZmY2UwN2UxMzZlN2E3Yzc1YiBweTNrCis3MjAwMyA1NTNjYWY2YmFlNDdlMTBhZGE5NDVmNTQ4NTc4ZGNjMDgyMmZlZjAwIHB5M2sKKzcyMDA0IDk3M2QyNGY0NGIwN2Y2MDg4NjFmYTY1NDUzMzVkZTQ0M2ExMDc3MjggbGVnYWN5LXRydW5rCis3MjAwNSAyOTNhZGExZGJmZGFkZTI0NTNkYWFmMjA2MTdiZTcxZjVhMDdiNDZhIHJlbGVhc2UyNi1tYWludAorNzIwMDYgMTc1NDBhMTY0Nzk3OTk1NjU4NjA1ZDBlMDQ0MDFiZGRlYmJjZDYwMiBweTNrCis3MjAwNyBkMDUxMzRhNGYwMmNlNTkyODhlOTY2MWI0MzhkNzY2ZWUxOGEyN2Q0IGxlZ2FjeS10cnVuaworNzIwMDggZjUyMTU5Zjg3MzMyYmJiZjIxOGYxYTRjN2ZiMDFmMDc0ODllMzI5NCBsZWdhY3ktdHJ1bmsKKzcyMDA5IDU3ODEyOTQ0Yzk2MWI3ODk0NDVhNmRlZjUyZjMyYTgzOWI3NGJkNDUgbGVnYWN5LXRydW5rCis3MjAxMCBjYzBkZmYyYmYxYzJlNmQ1M2ZjNDZlNjAxNmZmMjEzNDlkODFhNTA4IGxlZ2FjeS10cnVuaworNzIwMTEgYmY3ZjM0MDczNDE4YmVkYTM2ZjdjZjViMTI2MjdkYWJhM2VlZDgzYiBweTNrCis3MjAxMiAxMWE1NDUyZTMzMDVlNjA3NGM1ZGYyYmNjMmZjNzI4MzBlYmFjOGQxIHB5M2sKKzcyMDEzIDliNDUxZmE1ODUwM2E1MzQwYjk3YTk0ODFiNWViODJiNTllMzFlMzIgcHkzaworNzIwMTQgZDM3YTRjNWQ2ZDJiNTM4YjFmMTM0NmQ2ODE4ZjcyNGM2NTJjM2FkYSBweTNrCis3MjAxNSAzNjJiNGFlMjEyOWE0ZjIyYjBjMTlhN2NiZWI2OGU0ZDc3MzI5N2I5IHB5M2sKKzcyMDE2IDgwNjhhYjUxNjMyZDYxMzFlNjMzZGU1YmZjNGI2ZTdjNDMyYjY5YjkgcHkzaworNzIwMTcgNzQzMjExYjYwYzk0NjdmMThhNDRiZDBjOTViYTE5NTY3ZmFkMzc1YSBweTNrCis3MjAxOCBjZTdjMzUzYTFlOTZiZGEwOGMwYTkxNDEzYTZmMGI3OGY2MmRhMTE3IHB5M2sKKzcyMDE5IDdmYWE4YTdmODYzZTFjZmRlMWI5MGU3MTE3M2ZlMjdkMzFiYmZlYjUgcHkzaworNzIwMjAgOTg4ODllZjE1Nzk1ODg0ZjQyZDY4YjRiMGZhMGI1YjRjYTdiYmY0MCBweTNrCis3MjAyMSBlNDhmODYwYTVjYWMyMGI1OGU5ODE4YTRmYzhhNWYyOGMxYmQ5MTVkIHB5M2sKKzcyMDIyIDZiYmRhMTg1MTczMmUxNTUwY2U2MmQ3MWExNzEwMmZmYjE1MTg2NDkgcHkzaworNzIwMjMgMjE4MDAwOGQwMmVlYTJjM2E3NDVmMGVmNDBhY2JhNDk5NjE4MjZjZiBweTNrCis3MjAyNCBlYTRlMTkyZDk0MTQ3YjQ4YTUxN2Y1NDYzMGVhZDg1MWE4MDA3Mzk2IHB5M2sKKzcyMDI1IDRhYmM0Y2E0NDYxZmRiZWQwMTQxMWE5Y2NmZTZjZmVjZjcxODdlNzIgcHkzaworNzIwMjYgZDU4MDE3NTk5N2NkNTA5Y2E4MjAxOGQ5Y2ExZGQwZjg5ZmYxMDM1NyBweTNrCis3MjAyNyBmOTQzZDgyNGM4YzM1ZGQ3NjJkYzNhMzA5MGIxMmVjNjczMGZhYTRiIHB5M2sKKzcyMDI4IGYyZDcxMGU0NzllMmVkYTcyMWYzMTY4NzRiMzBmZjYwNzNhZDgwODkgcHkzaworNzIwMjkgNzFhMmFhZDViYWQ2NTVmZTRlMTZiYmY5NzM2NTM2N2M4ODUzMWNmZiBweTNrCis3MjAzMCAyOTM1NGM0OTUwZTQ5NDY4M2M3YTg0Nzc4MzU2NzAwYTgyZjQyZDgzIHB5M2sKKzcyMDMxIDAxZDBiZDk1MGNjZDEzNDQ1M2RlMWQxOGFjZmY5Y2E2NDg4ZjU1MjggcHkzaworNzIwMzIgNDFmYTFhMTA2MzczYWRiMjVkMzg4ZDgxOWU1YjE4YmM4YTkwYTE2OCBweTNrCis3MjAzMyBjMjVlNWE5NTU0ZjUzMDkwNjZhYWZlYmI1ZWY0OGZlMjdjM2ViMzYyIHB5M2sKKzcyMDM0IDk3NTA2NjcyYWZlM2ZiNTI0MmM1ODgzYTg4NDY2MTA2YmI0ZGJhOTIgcHkzaworNzIwMzUgMmNlMjZjNDY3OWNiOTc1ODNiMjNmZTMyYzJiMjkyZTZlZDg2MGNhMyBweTNrCis3MjAzNiBjNmM0YzA2M2Q4NzQwZWYyNTIwMWZhOTNhODUyMmU4MjNjZTk5MTQxIGxlZ2FjeS10cnVuaworNzIwMzcgOWUwOTc4M2NlMjI4OGRlZmFkMTAyZmQ0MjIyMmFjZDNmODhkNWNmYiBsZWdhY3ktdHJ1bmsKKzcyMDM4IDVkNzUyMDNjODcxMzkyY2VmYjZhMzNmYTAwNTIyNjkxOWNhMWZmODMgbGVnYWN5LXRydW5rCis3MjAzOSBiNGViYjMwMGU2MTE5YzBmYmZjNzFjYzY2N2IxZWRlMzg3ZjY1OGIwIHB5M2sKKzcyMDQwIDRiZGQ4NDdiNTdjMjdhMjVhMmVkZDY3ZGY0ZGE2NGM0MmU0YjBkZGEgbGVnYWN5LXRydW5rCis3MjA0MSAxZjk1YmE0ZDFlY2IxODU5ODYyMTVjMThmYmZmZDhjYWMxOGQ1Y2U2IHJlbGVhc2UyNi1tYWludAorNzIwNDIgMWE0NTFmZjY1ODNjNTQ4ZjhiMDY2NDcxMzUyZTQ0NTE2NjdiNDVkZSBweTNrCis3MjA0MyA3OGRmYmFmNjNiMTdjOTM5OGExNDIyYzIxYzI5OGQzYTg0MjQ1ZTBjIHJlbGVhc2UzMC1tYWludAorNzIwNDQgNGI0YjU5ZjI3OGJmMzM4Y2IyNTMyMjZkZDRiZDgwZTJlZDRiMmI3MiBweTNrCis3MjA0NSBiMGNjZjJhY2ZhMWU2OTA4MDg5ZWZkYjljYjA2MjE2YjI5NTQ3YTVmIGxlZ2FjeS10cnVuaworNzIwNDYgNTQyNzkxNjMzODlkNDVmNDdlYzViOTI3YWE2OWVjNzg5NjNjNGQ4YSBweTNrCis3MjA0NyA4NDUzN2RlZjQ1NTA1MDE5NjExZGY5M2Q1YTU5N2U4ZmZiNGM2NzFiIHJlbGVhc2UzMC1tYWludAorNzIwNDggN2MzOTU3NGFkMDM3NTQxNmEyYWFhYWE0MjY0YWU1MGQ4NGUwYWVmMCByZWxlYXNlMjYtbWFpbnQKKzcyMDQ5IDc4ZmQxNWUwNTI1ODQwNzBjYTJjZTJkMmQxYjllMDk5NDBmNTc5ZjEgcHkzaworNzIwNTAgZTU2ZmRiYTYxZTk3NWYxMTg0OTMxNjgwYjc4ZjIyY2E5ZDcxNmNmZiBweTNrCis3MjA1MSAzODUyMmVhMmFkZDBhODc2MjZlMzE3ZDljYzJjZDM2ODRkYTViYjdhIHJlbGVhc2UzMC1tYWludAorNzIwNTIgMWMwNjBkNWM0N2NmMGFlZGFjN2M3ZTRmMmFhNTBkN2RlYTQ1ODhhNSBsZWdhY3ktdHJ1bmsKKzcyMDUzIDJiMzk0NWQ3NTVhN2ZlNjFiNzhmNWRlMmUwOTNiNjI5ZTdlZDA1M2MgbGVnYWN5LXRydW5rCis3MjA1NCAwMTkyNDRmNGIwZDBkMGU1ZDkzMmY2ZTU0MDFiMTFlNGRjODEzYzZkIGxlZ2FjeS10cnVuaworNzIwNTUgNDIzZjhmOWIwN2IxNGE4NTQ0YzVmZjMzMDlhNmQyODlkY2RhMjg0YSBweTNrCis3MjA1NiBkOWI5NDIyYjQwOWM4OTg0MDFmOTgwZmRjOGYzNGJjOTE4YjFhOGY4IGxlZ2FjeS10cnVuaworNzIwNTcgOTdjZmY1OTNhMjU3ZTlkNWJhNTgxZjU5ZGU0YTE2ZmQ3YjJmYTkzOSByZWxlYXNlMjYtbWFpbnQKKzcyMDU4IDZmMTU4OGZiNzU5NWUxYjIwZmU2ZDZmNWM3ODU2ZTU0ODEwYjM4NTIgcHkzaworNzIwNTkgYjBhZTlmZmM3Nzc5ZmQ3NTAzZGM0ZmJkNDIxMTVlOGMzMDY5M2Y1ZSByZWxlYXNlMzAtbWFpbnQKKzcyMDYwIDMyNDYwYjA0ZTdiNmUwZDUwNzcyOTJhNzY1Y2VhNWI4OTUxM2FkMWQgbGVnYWN5LXRydW5rCis3MjA2MiA3YjIwNmUyYzAwOTJjNGIyYmI4MWZmMzk4NDEzZDQ0ODkwOWI4ZmQzIHB5M2sKKzcyMDYzIDRhZjJiZGM5YjFiNzM1NTc5NWY2OTc3MmRhNGNiODMwY2ZiZGUyMmMgcmVsZWFzZTI2LW1haW50Cis3MjA2NCBjYWJjZWY3ZTZmMjU2Y2QxODI1OGE1MWI1NTA2ZjI0OTlhODYxOTY4IHJlbGVhc2UzMC1tYWludAorNzIwNjUgMWVjNGJmM2RkZGE2ZjVlZDI5M2E5YjliZGRkOTNmNTc2OWNmNGVlZCByZWxlYXNlMjYtbWFpbnQKKzcyMDY2IGRjYmMyMjAzYmRmMzYyNzZiMmM4ZDA3MTY5NTI5ZGVlZmQ3MDc4MjMgcmVsZWFzZTI2LW1haW50Cis3MjA2NyBkNjVkYjE2OWUzYWQ3MTUxNmUwNGE4ZWVjN2JiZmUzY2U2YmI3ZjJmIHJlbGVhc2UyNi1tYWludAorNzIwNjggM2YxNWEwNmQwMDQ3M2FjOTQ2MzJhMzhmMTI0NGViNGJmOWZiNGRmZCByZWxlYXNlMjYtbWFpbnQKKzcyMDY5IGJmMDUyMjJjMDc0MDBlMjFiNjJkZTkxMGVjNmFhOGFkZWI2Y2ZkZTggcmVsZWFzZTI2LW1haW50Cis3MjA3MCBmN2EzOWU2MTllMGExZjYyZjg1NTBjNTMwNDQ2ZjI2YmI1NTY1MDIyIHJlbGVhc2UyNi1tYWludAorNzIwNzEgMDJkNmYzYTY5NzdmNzhiNTg4NWUxZTJkNDQ5ODExMDFjMDc1ZmZjZCByZWxlYXNlMjYtbWFpbnQKKzcyMDcyIGYyNDY3MTUyODk4MGU3YzM0MzI3MDhlMTUyODFjMjNiOTNiZGZjN2UgcmVsZWFzZTI2LW1haW50Cis3MjA3MyA3MTRmOTVlYTZiOGY2YzhjNzhlZTRiODk3YmQ5MGUyMGUwYjYzZjdiIHJlbGVhc2UyNi1tYWludAorNzIwNzQgMzZlYjUzN2FiYjE3OTM2MmY0YWZlM2I0ZTE2OGNlYWI3MGM1Nzc4MyByZWxlYXNlMjYtbWFpbnQKKzcyMDc1IDUwM2YwZjQxZjM1ZjkxYWY0MjU0YTBhNGE4ODk4YmRlYTBlYmRiZmMgcmVsZWFzZTI2LW1haW50Cis3MjA3NiBiMjhkZGViYmQ4MzU1NzU5ODljZTQ1MzUzMjFmNDExYjIwMmM0YmExIHJlbGVhc2UyNi1tYWludAorNzIwNzcgNmYxMGQ1MjVlM2I4NGI1MzAyYTQ3YjVhYWI3NDA2OTY3M2M3YmNiOCByZWxlYXNlMjYtbWFpbnQKKzcyMDc4IDMxNjZkZWQ2YmM0YTI2YzJkMTlhMDg5NDY4OTExMWMyNzUzYTg4MzYgcmVsZWFzZTI2LW1haW50Cis3MjA3OSA5ZGMzNGVmMjI3MzUzODI3YTQzN2FiMTQ0YTljYWU5OTdhYWU5MmQ1IGxlZ2FjeS10cnVuaworNzIwODAgOTAwMGY5NjZjY2JiYmYwMzU4NWZiZDRlNDMyYmM5Y2RiMDAwMzI2YiByZWxlYXNlMjYtbWFpbnQKKzcyMDgxIGUyODQzYjY0MTc1ZWNkNjk0ZjBkZTc4ZjFlMThkMjQzZTFjYWVmODUgbGVnYWN5LXRydW5rCis3MjA4MiBjOGY5NDAwN2IxYzQ2ZTBlMTllM2UwM2EyMzc1Y2NkYTE1NmZlMzRmIHB5M2sKKzcyMDgzIDIzMmQyMjUwZDcwMzU1ZGZkMzAzMWRlNTA4ZDE4Yzg3ZmI3MTkwMmIgcmVsZWFzZTI2LW1haW50Cis3MjA4NCAwMjViYTEyYzdkYTU0MTg4MDhmMDRmN2ZmN2Q0Y2I3NDMwYjBjMzFkIHJlbGVhc2UzMC1tYWludAorNzIwODUgNzQ1OTAyM2ZmODYxYWU1ZmFjZmE1NjIxYzY5MGQ1ZDQwYTE4MDFmMCBsZWdhY3ktdHJ1bmsKKzcyMDg2IDdmZGE1YWYyYWY3ZDEwYzY2ZGQ2NjRkODY5YTZiYTMyYWYzMmYyZDYgcHkzaworNzIwODcgYTM4ZDZjZDlhYTYzNjljZmZlMzJmMGYzMmMyNjc3YTFkNWFhNjE1MSBweTNrCis3MjA4OSAxNDY5ZmIxYWVhOTI0ZGRjZmM4ZjZkNzI5YjA0M2EzY2NmZmY2YmM5IHB5M2sKKzcyMDkxIDNiNGNlYTQzZjllNjM5OTJjMjFkZDkxZmY4YTkyMDAxYjM2MmE3NmEgcmVsZWFzZTMwLW1haW50Cis3MjA5MyA4MTdkOGIyOGNkNmIzZTI2MzM2NmQ2ZjUyY2M2YWI0NGE2MTkzMjYzIHJlbGVhc2UyNi1tYWludAorNzIwOTQgOWMyYWMxZWYzYTZmZTRkN2YzN2EzMjUxNmM2ZmYyZTgwYTlmYTE3NSBsZWdhY3ktdHJ1bmsKKzcyMDk1IGI0MDg5NDJmYjQzNTM5OGU5YTIxYjI2ODJkMTMzNDc0MGE5MGRkNTAgcmVsZWFzZTI2LW1haW50Cis3MjA5NiA2OWJlYTI2ZWM4N2I5OTM3ZTU2NTg3ZjQ1MTZkYWE1ZDUxMTgxMGIxIHB5M2sKKzcyMDk3IGNlYTY0MWZmNDUzNGMzOTBkYmE0MzI5MDJiY2EzYjRjNDZmYzJkNmUgcmVsZWFzZTMwLW1haW50Cis3MjA5OCAzZGZiYWM3OTljZjUxYzkxYmEwOWQ2MmEwYjg3Mzc0ZTQ4MTIxYjdiIHB5M2sKKzcyMDk5IDAyMDY4ODc3YzE5MGIzZDc3OWFhYzZmM2I0ZDA1MjBkNjY0NTNlMjUgcmVsZWFzZTMwLW1haW50Cis3MjEwMCA0ZWY3ZjkzZDYxYTFhOGQ3MDVmNmU4OGJiNWVlNWRjM2NkYTA3MTk1IGxlZ2FjeS10cnVuaworNzIxMDEgODYxN2U4MTAxNmI2YjBjMWM4OWRjOTQzY2JjN2YwNDY3Mzg4NzZiMSBsZWdhY3ktdHJ1bmsKKzcyMTAyIDVmODFjNDViZGY2ZDEwMTgwODA2YTQzYjYxYzk1Mzg0NjY1OGYyNTQgcHkzaworNzIxMDMgYmE2MzhkM2E0OWQxNWY1ZGY2OThhNWRjZmU0YTgxMTFhYjE2NzMzNiByZWxlYXNlMjYtbWFpbnQKKzcyMTA0IGU5NWM4NzhhYzc5YWU3ZDc5OTk2MzU3ZDQ3ZTE3YTA0ZmVhODVjY2EgcHkzaworNzIxMDUgNzM3MDJhYmUxY2I5NzE4NDgzYjUwMzNjNGEzN2ZmNWFmMWQ4N2YxNiByZWxlYXNlMzAtbWFpbnQKKzcyMTA2IGI4NjMzYzc4OTNmZWY0MDJlZDQ2NjliZTM1N2M0ODQzMmIwMTNkODUgcmVsZWFzZTMwLW1haW50Cis3MjEwNyAyZWYyY2I1NzczZmUyZTRlYWVhZGNkYjQxOGJlZGQ4NjU2OTllNTIwIGxlZ2FjeS10cnVuaworNzIxMDkgMzc1OTgzOWI5ZmE1NDhiY2UwZDQwMGJjZWEyZWY5MWZhYjgxMDBkZSBweTNrCis3MjExMCAyMTgwMzA3NWI0MTExNTc4MDZkNzU3ZmY0OWVkOTM4YzBkMWI4MzI0IHJlbGVhc2UzMC1tYWludAorNzIxMTEgYWU3ZjgyYmJmMTZjOGU2ZGYzYWQzMDMyZjgwNDdlYmQxOGRiYTUwNiBsZWdhY3ktdHJ1bmsKKzcyMTE0IGEzODE0ZGM5OWI4MGQxYzIzZDljZGVjOGNkNWYwOTdjNjFmMzg0ODkgbGVnYWN5LXRydW5rCis3MjExNSAzZDZiYzQyNjQ2YjUxZTBjMmYzYmQzMjIwMDhmMDY4MDU1Y2MyNGU3IGxlZ2FjeS10cnVuaworNzIxMTYgYzg1NWRmN2M2YmI1OTEwNTBiYzhhMDIzMTgzZTU3NWE1MzVhZDQ1OSByZWxlYXNlMjYtbWFpbnQKKzcyMTE3IGNjZjc4NTNiMDc5MzI0NGJmZmM1NDJmOGQ0ZWEyNzY2YzM1MzJjYzMgbGVnYWN5LXRydW5rCis3MjExOCA2NDdhMDQwZGY0ZDExY2Q0NzE5OTk5MGQzYTJiMmMyYTMxY2Y2ZDZmIHB5M2sKKzcyMTE5IGEzZmNjY2VlODk1N2EwZTZhMWE0ZDU3YmJhYjM3NzRjNTM5MTMyN2QgbGVnYWN5LXRydW5rCis3MjEyMCA0MmVmNzZmNTQ0ZmJmMjFiNmU2MzQwMzA1OWU2MzIwMDU0M2YzZGY5IHJlbGVhc2UyNi1tYWludAorNzIxMjEgZmUwNjIxODc2MjRjYmU3M2MzMTc3ZDZkMDMxZDY4MjdlMDBmZTI5OCBweTNrCis3MjEyMiA3NjE3ZmE3MTY0ZGU2ZGM3MTQwYWI5ZTlhZDhiMGMxODZjMTYzMWIwIHJlbGVhc2UzMC1tYWludAorNzIxMjMgY2NlYmJhZDVmOGRmZmU5ZmQ4ZGJmMWM2OTU5ZTIyOGFjNmFmY2MzMSBweTNrCis3MjEyNCA5M2ZlNjExY2JkM2FhMTJmMWZkZmUwZTIxM2M1MjUzMjgyY2Y1MDQxIHJlbGVhc2UzMC1tYWludAorNzIxMjUgYjM5Y2IyOTIxOTQ1NzNkMWJiNDBhMzhmMWNmZjY3MmYxZDRmODE1NiBweTNrCis3MjEyNiA0NzYyMzk0ZmMyNmM1MmMxOWI5MzAwZjgwNDg4ZDIzNmIxNWVmZWFhIGxlZ2FjeS10cnVuaworNzIxMjcgNWQ5NzcxZDdjYzQ2YzdmMjhiNDYwYzE2Y2VkMDFlYzQ4MmRiZDdiMSBsZWdhY3ktdHJ1bmsKKzcyMTI4IDhhODU5YWM3ZTViODFlMTliZWNjYWUwNmRkNGZjOTVmMzQ1NTlkMjIgcmVsZWFzZTI2LW1haW50Cis3MjEyOSBlMjc0NDlkZTYxZGI2NDhjNTQ3NzBhNmM4ODBjMDMyNjRhYzBhYzcyIHB5M2sKKzcyMTMwIGU4OTQ0MzNjNjQ2NDBmMTk3ODdjMDZkY2E1YTdhOTYxNjQwMWQyMmQgcHkzaworNzIxMzEgMjdjNmI2M2QxZGIzNTVmNjg3NzE3NWQzZGMxNzZjOTBhN2RmNDAxZiBsZWdhY3ktdHJ1bmsKKzcyMTMyIDQxMTM3NGM1YWE0MjI3OGQzMGYxNmEwNzIxMWJhZGFlYjVmNWYyMjUgbGVnYWN5LXRydW5rCis3MjEzMyA5NGNkZmQwN2Q0ZjQ4ZDcyODUyNDhjN2MwM2JlMGU0OGQ1ZjRiYTczIGxlZ2FjeS10cnVuaworNzIxMzQgNzlkYzhkNTg4ZWIzMDY2YzI5OGJmNDc5ZTkwN2E4NTdhYWVjNTk2NiBsZWdhY3ktdHJ1bmsKKzcyMTM1IGQ2ODJjOTM0Njg0ODA4ODMyODI1ODQyNDYzNjQ0YzJjOTJiNmYwYTIgbGVnYWN5LXRydW5rCis3MjEzNiAwZjJiMzM1NjY4ZWViYzhmZGE5YTNiMTIwODYwYmEwMzE1OGU4ODMyIHB5M2sKKzcyMTM3IDM0ZTdjMWIxNDQ5NTAxYTE4M2UxZDhiMWExOGRkZTg1YmI5OGY4NTkgbGVnYWN5LXRydW5rCis3MjEzOCBhMWVmYWYwMTUxMDAxNzQ3MGJmY2RhZWE4MTQxY2MxNGNlZjU4ZmJhIHJlbGVhc2UyNi1tYWludAorNzIxMzkgNDBkMzQzMWRiMjQwODU1YzQzZmI1YWJkYThlMWYyODc3NmIxMWJiNCBweTNrCis3MjE0MCAyY2RlMGQwMDNmZmMwM2U4MDEwYTFhNmRhMWZlZmQ3MTQwY2ZkOGRlIHB5M2sKKzcyMTQxIGQ2Njg4ZWQwNDBjZjM2YjRjYzIxNmY2NGMzNTgxNzc1YWNiYzY4OGEgcmVsZWFzZTMwLW1haW50Cis3MjE0NCBjNGExYzQ4ODQwNTZkNDliOGQ4MWVhYWVhODVkZWY3OTg0ZDNhZTJmIHB5M2sKKzcyMTQ5IGFiYzgwZjhiMGRmZGMxZmZkZDVjOGQxZmYwMGQyNzRmZDM3NWFiNDEgbGVnYWN5LXRydW5rCis3MjE1MyBlZDhjMTM5NWQwMzMwY2RmNzQ2YTJiNWVlZjI2MWM0N2E1YjdjMGY0IHBlcC0wMzgzCis3MjE1NSAyOTY1NmEwM2NjZTJmYTRjMTA0ZDgwODI5ZjFkY2JkYTg0ZjAyOTQ0IGxlZ2FjeS10cnVuaworNzIxNTYgYmM2MGRlMjMyMjAzMWNlZDViNDc4OTkxZjdiMmEwNTczM2UyNzNlMyBweTNrCis3MjE1NyA0Yjg2ZTUzZjkwMDZmNjE3MmE5YjljZDI2ZDI0NDZjNzkzNDgxY2Y2IHBlcC0wMzgzCis3MjE1OCBiZGFiN2NjZGM3YjQ4NjQxMWNkNDg0NjhiMmZlYWViOWExOWYxMzg4IHBlcC0wMzgzCis3MjE1OSBlN2E5ZTJmZDcxM2YwMjQxNzBhODQ1MTZkMzZhOTU1MjVjZGQ2ZDY0IGxlZ2FjeS10cnVuaworNzIxNjAgMDkzNWUyNGM4MWMwOGQ1ZGRiNzYyNzM0MDMzMzJkOTA2MWIzZDI2MCBweTNrCis3MjE2MSBlMDhlODBlNzY4YzExZjA5NGYxYjQwNzA3Mzk1MzQyMWJmNmExODczIHB5M2sKKzcyMTYyIGE4MGIzYmI0ZDFiMGRiMjY1Njg3NmIxZTNmMDM0Y2UxMTAzNDIxZjMgcmVsZWFzZTMwLW1haW50Cis3MjE2NCA1NGM3YmEzZGRmYzY1NmVmMWRkMzliZWZhNDczYmIzNDc4MTYxZGU2IHBlcC0wMzgzCis3MjE2NSA2MGQwZjM3M2E4OTQ2YTIwYTBkMDI4YjgwNGRiY2U0ZDVkMjViZmY5IHB5M2sKKzcyMTY2IGFlYjkxNDE5M2I0NWE2MGExZDdkZDRmMWFhMzE3ZDE4Mjg5NDJlNTkgcmVsZWFzZTMwLW1haW50Cis3MjE2NyA4NTU0MjcxNWEyNDkwYmQ2MWI0ZTVkNjAzMThjNGY2MTQ0NWU0NmM3IGxlZ2FjeS10cnVuaworNzIxNjggNjM0ODBiOTJhNWUxMjVmOGQ5YmYwMzE2N2Q5M2E1YTI4OGMxMDZiMiByZWxlYXNlMjYtbWFpbnQKKzcyMTcwIDk2YzA0ZTZhNmQ4ODJkMzZjNTIwNzU0YTE3YWZkMWJkZjg5YjRjMTYgcGVwLTAzODMKKzcyMTcxIGNjNjlkM2RmZjg3YTIyMmFhNzVlYTQ0OWY0Y2RjMmU0YmVkNTM4NmEgcGVwLTAzODMKKzcyMTcyIDVjNTViOWM4MDg0NmE0ZDFmYTMxNDZlZWQyNmU5MTJiMjRkMmFkNTEgcHkzaworNzIxNzMgOTYzZjBmNTE5NzA5NTVlYzc0NDIzMDFmOWEwYzk5YzA3OTk4OTI2NyBsZWdhY3ktdHJ1bmsKKzcyMTc0IDk4NjUxZTRmNjVmZTU5YWEwNzU5Y2Q1OWEwODA2YjU0Nzk2Njk2NWIgcmVsZWFzZTMwLW1haW50Cis3MjE3NSBiYzA0Y2ViY2E3ZTZiNDI5ODNjZTdmOGQwMWU4ODc2ZDkyYWNiMTFiIHB5M2sKKzcyMTc2IDg5ZDVlZjgyYzAwNjc3MGNmM2JmNjhhZjI0Y2RkNDUyZmVmMTc4YWIgcHkzaworNzIxNzcgMDFhZWQ0ODE5NmIwMjhlYjkxYThkNzg3ODgwNTBlOGNhYWJhMjdkZiBweTNrCis3MjE3OCA0MDk0NDhkNDU1ZTNlNDI2MGVhZmM5YzcxMTFjNmNlNWMxZWU4NDY2IGxlZ2FjeS10cnVuaworNzIxNzkgOTYwZWYwMGQ1MjE0MTc3OWQ4MjQ5ZGZhZGJiMzY3ZTJmOThhY2E5ZCBweTNrCis3MjE4MCBiMThiZDFhNDk0YzcxZjA1NTk2MjU0NDFkNjliMDQ2MzllODIxYmE1IGxlZ2FjeS10cnVuaworNzIxODEgMjI4MDM2NWVhYTcyYzEwNzQ2ZDc0M2JmNzFkMGI4NDY0ZTE1NmU4NSBweTNrCis3MjE4MiA5NTA2MWRhMDZjYjg0NWI3OTAzZjRiYjU5NGM2YWRkOGYwMDVmYjQzIHJlbGVhc2UyNi1tYWludAorNzIxODMgODk2M2NkODU4YWQ2MTA2YTYzYzUzMDdmZWUwMzllYTQzYjEzZDlkOSBsZWdhY3ktdHJ1bmsKKzcyMTg0IDhmYjE5Y2E2MmU3MGRmYzVmOTY3OWVlYzdiNzUzZWQ2OTE3OTE5YWIgbGVnYWN5LXRydW5rCis3MjE4NSAxMzU1ZGFjMjM4ZmVjYWViODI3MzFjMTZmMjcxYTJhMDMxMzAzNjhlIHB5M2sKKzcyMTg2IDBkODE3ZThlZDNlYmY5ZGY3YWJhZmZhMDkyYWJhYjU1NDIxNGJmODcgcHkzaworNzIxODcgNDJkMjhlNWRjN2NiMTRjOTQ1MGMyZjYyYTFkYjZiNWY0MTEwNzc1YyBweTNrCis3MjE4OCBlYjgxMTVhYmZmNWU1NTIxNTRmZGYwZmExMDY2MWI4NTM1MDUxZmNlIHBlcC0wMzgzCis3MjE4OSAyM2JjNGIzOTFjMTAyMjliNjk0MThhMTQwYzZmNDNmMTg5NDE1NmY2IGxlZ2FjeS10cnVuaworNzIxOTAgMGM4YmZkZGJmY2EyNjY2NzVmM2JlMWNkNDM3YzAxYzJiYmVhZGYxOSByZWxlYXNlMjYtbWFpbnQKKzcyMTkxIDlkODQwYTU4YTBkNWQxYjZhYmM4ZmUyYzVhNjIwYjg3YjNjMzFmYzYgbGVnYWN5LXRydW5rCis3MjE5MiA1MTFhMzdlZjFhNDEwZmY0ZDI1Zjc0ODE5NGRkYjNiYzYyM2ViZTBkIHB5M2sKKzcyMTkzIDA1MTAxOWYwZGQ5ZmUzOWE1YWQ4YzM0MWY4ZjEzMzQ4YWQxODEwNDUgcmVsZWFzZTMwLW1haW50Cis3MjE5NCBmNjg2YWNlZDAyYTNlNGQ0M2MzNDhjNjNhZDZkMjc4MzJjYmM1ZGY3IHB5M2sKKzcyMTk1IGUxOWNjM2ViYjU4YTBiZTYyNDRhNDM3YWQ0MDg0Y2NkZmMyNDYxZDYgcHkzaworNzIxOTYgMjA2Y2NmOWFhMDI1ZjAxNjQ1ZmMxYmY5MWQ3YWNiNzJlYzc3NzBjOCBweTNrCis3MjE5NyBlNjJiYzU3YTYyZWFiYTBhYWJlODY0MmM3M2E4ZWZiZDAyZDU5NWQ2IGxlZ2FjeS10cnVuaworNzIxOTggMDJiNjE1Mzg5ZDNlZjUwNmFjZDUwMzllMGI3NzI4NmFlYWIwNzk1NyBsZWdhY3ktdHJ1bmsKKzcyMTk5IGQ3YjUxZWJmNmRlNDI0MzY5ZmY1ZDU2MzZhMTViNDljZTkxNjYwYWEgbGVnYWN5LXRydW5rCis3MjIwMCAxYjcxYTU3MGY1NGVhY2ZkODYwMmI0MTY5NDFkYjQ5ZDAxNjc2MjYyIGxlZ2FjeS10cnVuaworNzIyMDEgMWE4NDllZTVmMDhjYzg2NDE2ODIxYjhjYmExNzI5MzBhZTU4NGI4OCBweTNrCis3MjIwMiA1YWFmMjRlYzQzZGMxMGFmYTRhZTc1NmM1Njk5MDZhMDU3YzVkMjFlIGxlZ2FjeS10cnVuaworNzIyMDMgOTAzZTgwZjNlODExOGVmMjdjODFhY2I0ZTg5NTZiMDYxNDQ4NGE4OSBweTNrCis3MjIwNCAxMWIxZmM5OTIxYmQwZTAzZDExNDdmNmVlOGJkYzcwYjNlMjg0NjBlIHB5M2sKKzcyMjA1IGYyNzdhODQwNzFmMTRlZTI4NTdiNGZhMWE0MWY4ZjRlMWFjMTIxOTggcmVsZWFzZTI2LW1haW50Cis3MjIwNiAyMWJkYTYxMWYwZTQwMGQ3NTBlNTlmZDg2ZjZkMzJhMGJiMzQ4ODdhIHJlbGVhc2UzMC1tYWludAorNzIyMDcgZWMzZmM2NDYzMWQ5OWVlZmExZWYwMTk0ZGVmMThlODU0Njk0Yzc0NiBweTNrCis3MjIwOCA1MmE3N2VmMDY5Y2RiYTNhMTJmZTc3NjNlMzc5NDA3ZTM4ZTlkYjMzIHB5M2sKKzcyMjA5IDY2MjAwYTc2ZGUyNjYyYjQ3MTU2NWM4MzVmOTY5NjFjZWUzODdjMzAgcmVsZWFzZTMwLW1haW50Cis3MjIxMCA5YjU1ZTliOTlhNDM2YmRhMzU3ZGNjOTIyZjk4NWI0ZDQ2YzVhYzZmIGxlZ2FjeS10cnVuaworNzIyMTEgNWZlOTA0ZmZjNmI4MjNjNGY5YjIxNmI4YThmMDc1MzdlMzExNTk1MCBweTNrCis3MjIxMiBiZTNjMDdhZGRlOTVkYTQzNWVmYmQ2YjQxMjdiNDhiNDk5MzY1YTQ1IHB5M2sKKzcyMjEzIGUwY2VkZTdmNTIxYjQzOWZlOTgxMDg1YjZiYzIwODIwM2M4ODE3OGMgbGVnYWN5LXRydW5rCis3MjIxNCBhODkzMTk0MTU1YTIyNTIzZmI3NGM4Njk4NGIyNjVmNmFlYzE2YWQxIHBlcC0wMzgzCis3MjIxNSA0ZjY1ZWUxZjQ4NDhmNjliZjRlN2M5MjY0NjRjM2QzMTMxMzQ5Mzg4IHBlcC0wMzgzCis3MjIxNiA1ODcwNTA4MmU3Yzg1Y2I3NWY2NGQ2YWVjMWVhOTJmOThkZGQ0MTBlIHBlcC0wMzgzCis3MjIxNyA1MmE4OWQ3MjNiNmJjMTJkODM3M2ZmMTdmMjVjZTUyOWIxZTYzNTFmIHB5M2sKKzcyMjE4IDBlY2M1YjkwNjQ3Nzk1MjM1ZDZkZjllNzRmMzhhOTAzY2QxM2UyMTUgcHkzaworNzIyMTkgN2JjZTA1MmYwZTdiNzFlNGVmNjNjMmJkNDhhZGU3NjYzMzFlN2Y2NCBsZWdhY3ktdHJ1bmsKKzcyMjIwIGM1ZjE0ZGJlYTQzZmJjY2NmYWI3Y2RiNzkxOTk0ZDEyMDQyMjA1MTEgcHkzaworNzIyMjEgYjA2ZjExZjNiNjViMGQ4ODU5ZWRlOGNlY2EwNGZmMjZkY2VmYTAxMiBsZWdhY3ktdHJ1bmsKKzcyMjIyIGJhNDVlMTI2NTc0ZGExZDZiZjYxZDRiZTcxMDljOWFmNDM5MzdiOGMgcHkzaworNzIyMjMgZTU0MTQxZDYzZTAxODc0YmEyYjg5MDAyNWQ4MjBkYWJlMGI3ZjI3MSBsZWdhY3ktdHJ1bmsKKzcyMjI0IDY0ZDlhOWU3ZjY4ZWNkNDIwYTI5NGE5MmY5ZmZlMjUxYTZkYTE0ZmYgcHkzaworNzIyMjUgMzAzYjdlZThlN2ZlZjJiYWYzZWFjMWJmYzRjODJiMjQ3NDU0MTFlZSBsZWdhY3ktdHJ1bmsKKzcyMjI2IDAwMWFjNTljMWU2NzJjZTNkYTY0YmMxYzg0ZTNjYWQzNGJiZTJmY2EgbGVnYWN5LXRydW5rCis3MjIyNyA5ZmVmMWYxNjU3YzhhNzU1MTRjM2QyOGNkMzYxYWY0MDVlZDQxZjg2IGxlZ2FjeS10cnVuaworNzIyMjggMzU4YWIxZmZhYTgwODRlYTc3M2IxYWE5MWMzYThkNzM4OTBlNzg2OSBweTNrCis3MjIyOSBhZWUyYjEwZGJhYjkzOGVjMmFhNTRkMTgwNzFiZGM2YWQwOGRiZTQ2IHB5M2sKKzcyMjMwIDdmZmQ5NjI1YzkxY2ZkNzk4NDM2NTFkNWEyYjA5OTM0MGVlYWYzNzUgcGVwLTAzODMKKzcyMjMxIDAwMDYzYWRmMDU1ODQ1NjU4YjdkYjIwMWU0NmJhZTMyMjljMmM5ZTIgcGVwLTAzODMKKzcyMjMyIDA3MDljNmQzNjlkZTY3MDdjYzY5YTg3YjUzZGQzOTlhYWM0ZjM5NTEgcGVwLTAzODMKKzcyMjM1IDc2NGVhZTUyMDg4MDhmNWYwNGEzMjZhZTBiMDc2MTAyMGIzYmZlZjQgcGVwLTAzODMKKzcyMjM2IDliMTA3YTc5N2RmODllMDg2M2Q3ZDNmNzdkZDE5ZDYwZjZkZTY1MDMgcGVwLTAzODMKKzcyMjM3IGQ2YjNiNzRiZGEwZTVhZWNiZjNmNjQ1OGU0OTU4YzIzYTMyZjNmMDggbGVnYWN5LXRydW5rCis3MjIzOCA1MjZiMGRjMDkxMzgyMWNkNzA3ODE0ZDBlNzY0YzlmZTZmMzBhMDM5IHB5M2sKKzcyMjM5IGY3ODAxNjk5ODE1YzEyNDNmZjk5ZWE4MTdkNjNlYTQyNmQ1YzA2YWMgcHkzaworNzIyNDAgNjg3N2ExZjRhMDkyN2ZlYzY1ZTFiYTNlZDhlNjMxNTg2NWI4NmI2MiBwZXAtMDM4MworNzIyNDEgYWUyNGRlNDhhZGM0MWQxMTk2ZThiYTFiNGIyNDJmMzFlMmVhZjIxNiBsZWdhY3ktdHJ1bmsKKzcyMjQyIGJkNmQyNTdhOTEzMGY3ODZjYzVjNmYyZjcyYjVhMjcyODUyZDk3YTUgcHkzaworNzIyNDMgODdmYzExNjJkOWY0YjY5NDA5YzliMmM5NTE0NzY4M2EzODZmOWMzYSBwZXAtMDM4MworNzIyNDQgYWJmNTc0ZTlmMWQzZDU5ZDc5NzVlMWVmNWY1ZjRiOTQ2YWYzNDAwMyBwZXAtMDM4MworNzIyNDUgMzk0NDYyZWFiNjVkYjA1Mjc0YTZmNjY0NDVhYzgxODI4NmFmOWE5OSByZWxlYXNlMzAtbWFpbnQKKzcyMjQ2IGE2Nzc4M2Q4MTJmNmU2Y2QzNzc0ZmIxNGJjMWIxZjZlNzBlNDQ3YzYgbGVnYWN5LXRydW5rCis3MjI0NyAzMzI3MGFkNmFkZWY4MmY2MDUzYmMzYmM4ZTg5OWY1OTVmNjc1ZmRhIHBlcC0wMzgzCis3MjI0OCAxM2E4MmE3MTBmMTliNDM5ODAwYThjOWU0OTlmOTQxYTdmZGY1OGJjIHB5M2sKKzcyMjQ5IGY3MGU5MWY1ZmM5Y2ZmMjQ4YjZjMmUxNmFiZjliOTRlNDRmN2ZjMTggcmVsZWFzZTMwLW1haW50Cis3MjI1MCA2M2RkY2U5ZmFmNGE5ODdlYjRhOGY4OTI4MWUyZDBlN2Y5NWI3MWM3IGxlZ2FjeS10cnVuaworNzIyNTEgNGE3NmQ2ZDI5N2NlYmU1ZTNiMDlhMTI5YTVhMzk4NzlmMDg0ZDcyMiByZWxlYXNlMjYtbWFpbnQKKzcyMjUyIGZiNTIxZjk5NmRlMTNiZGE3NTFkZDhhOWU3MTJjNzZiNWMyNjQxNDIgcHkzaworNzIyNTMgMWYwMGJjMWQxMTVhMGJmNDBmYTAyZDliNTA2MDg4MzAwNzMxMWE2NSBsZWdhY3ktdHJ1bmsKKzcyMjU0IDViMjhkZWJhMWNkNmI3YTAxM2I2NWVhYWE4YTNiOWVkNzNjNzVlNDEgcmVsZWFzZTI2LW1haW50Cis3MjI1NSBlMmI1NTNkNzIwNWYzOWJlYjEwNWRkZmQ4N2YwZDJkM2Y4NGIzYzE0IHB5M2sKKzcyMjU2IGE4YjVhNWI5YTQ5YWFkMjE4MzkxYmEyYWMzOGJhYWMxZmEzMTQ4MGUgcmVsZWFzZTMwLW1haW50Cis3MjI1NyA0Zjg2N2YxNDk0ZDU1ZTljMWYwMDkxODAzNTA3NGQ3YTU2N2I0YzJhIGxlZ2FjeS10cnVuaworNzIyNTggYzZmOTlkNGM4MTIyZTEyY2I0Y2I3Yzg2ZTY2ZWVmODk1ZDRmYmE2NCByZWxlYXNlMjYtbWFpbnQKKzcyMjU5IDBiN2VlZmU3YjZkMTdkOGY0Y2EyYTgxZTFmMmYwOThkYWFjYzdkNTEgcHkzaworNzIyNjAgMWMyN2VjYmVkOGM0MWE3MTI5ZWI0YTNhODgyOTU3Mzk0ODU4NmY3YyBsZWdhY3ktdHJ1bmsKKzcyMjYxIGNlOTQ3MjAwYjc2ODhhOTM4NGQzZmU5YzQ3MTU0YTBlN2MyNDA0YjggcmVsZWFzZTMwLW1haW50Cis3MjI2MiAxOGE1YWU5NmFlNWM5YTNmZGUxZGZiZjY4MGIzYjUxOTMzMTgyMTc5IHJlbGVhc2UyNi1tYWludAorNzIyNjMgZTRhZjk3MWI5MTg0NTYwOTgxMmY5MTE2M2Y4ZDQwYmYwN2EyYWI0OSBsZWdhY3ktdHJ1bmsKKzcyMjY0IDVhZGUwZGU3NGI1YTkxM2EwYTcxOGQ0YjFiMmI0NTI2YmI5YWU3NTggcmVsZWFzZTI2LW1haW50Cis3MjI2NSBkN2JiZGU5MzZkNjI5MDVhZGE3Mjk1NmE5ZDk2ZTcwMGFjNGY1YmY1IHB5M2sKKzcyMjY2IDgzNDZkM2M3YzRlMjNiODllOGNhNzgzMjBiNWM0YWMxYmVhYThiMWIgcmVsZWFzZTMwLW1haW50Cis3MjI2NyBlNGZmNDI3MzQ5M2JkMDQ4YmUwZGM5Zjc5Yjg5NjM4M2I4ZDhhODU2IGxlZ2FjeS10cnVuaworNzIyNjggNGNkNDM3ZGZhY2U4OTgzMmJlOGEyMTJiZTg2NTNjZDEwMGUyY2U1YiBweTNrCis3MjI2OSA2NmY3NTAwOGMzYTg3MjUwMjkzNjgyZDhlYjIyZjlkMWU5ZTkyZTU1IGxlZ2FjeS10cnVuaworNzIyNzAgZDhkNjdhYTc1NTI1MjAxZDhjODlhYzk2MDBmYmE1Yjg0MzUzZjYyOCBweTNrCis3MjI3MSBlNjg2ODVjZjM2NTFkOTk4NzY2Y2M0MWExZmYwNmViZjU3YTIxNmZhIHBlcC0wMzgzCis3MjI3MiBkYjI4MzkwY2E2MTcyNjA2NTFmOTZkODM0MmEyN2IwZDAzOWMzMmViIHBlcC0wMzgzCis3MjI3MyBkNmNiYWVhOTc1Njk4ZWJmNzk1ODRlNmQ2YThiNTllMGFiNTgxNmFkIGxlZ2FjeS10cnVuaworNzIyNzQgMmNkOWFlZTZmNjI0NjAzMjg4NWY1NTQ2MTIzNzRiNjlmMDIyNjY4ZiBweTNrCis3MjI3NSBiYzFkMTk2ODM2YTRmYmE4YmMxMTZlZGUzZTEwYTkxMjc0ODY2YmY3IHJlbGVhc2UyNi1tYWludAorNzIyNzYgM2NiNWI3ZDU2MzA5ODFjZjI0Njc5MWIzMWZkMDVmNGU2OGZiMDMwOSByZWxlYXNlMzAtbWFpbnQKKzcyMjc3IDY5MjMxY2VmZDgwZDNmYWZlYjJkNTRiODUyZmQyM2I5N2M2YWU2NmEgcmVsZWFzZTMwLW1haW50Cis3MjI3OCBhZDEyZDhmNDE0YzczNjFhOTg1ZTJmMTgwNDAxY2U5ZjFlYjU0NzZkIGxlZ2FjeS10cnVuaworNzIyNzkgMzA4OGQyZWJmN2JlNWVhM2QxMzBkOGFmODEyMzQ3ZDZlNDM3NmM1YiByZWxlYXNlMjYtbWFpbnQKKzcyMjgwIGZlNTRmMzk0NTk5YzI1MzU4ODE5MGQ5NjE4NjEwNzNjY2FiNWQ4NjIgcHkzaworNzIyODEgNzNhZjkwMjA2Y2JlMzI0Yjk5NjNhZTU2ODg4Y2NkZmRhMjkxYjc4MCByZWxlYXNlMzAtbWFpbnQKKzcyMjgyIDVjYjg1ZWZmOGMwMzVhZWFhMDQwOWYzYzU5MTM3NzgyZmUyZmI4ZDAgcHkzaworNzIyODMgMTJkOGZkNDk5NzIyYzJkY2U0YmJiMWI3OTQ2OTljMDFjMTcwNzUxNyBsZWdhY3ktdHJ1bmsKKzcyMjg0IDUzOGE3ZDU4MzA2NDVkMGE3NjE0YjRmMGM2ZDRjNzA5ZjY5NDg1MzIgbGVnYWN5LXRydW5rCis3MjI4NSA5Yjk1OTAwMDdlODI0OTgxYjVkYTQ4YTkwYzU4ODcyNjViZWY0YjFkIHB5M2sKKzcyMjg2IDEwMDM4MWM1ZTczYWJiN2YwY2I4NzY5YWM0MmQ3MWEzZDBjODFhZmYgcHkzaworNzIyODcgNDc5MTIxNmJmYzFlYmRiOWU4Njk1M2M5NzE1NDc1ZWE0YzVmMmQzNyBweTNrCis3MjI4OCA3NWQ0MWY0NjA4NTIxMDkxN2JjM2E0ZWYwODhiYjNhMzY2MmM1NDA5IGxlZ2FjeS10cnVuaworNzIyODkgODJmZmRmYmM0MmU1Njk2NDlkY2Q0Y2E5Yzg3MmJmNzI2NTFiOGNkNyBweTNrCis3MjI5MCBmNzIyODkyYjYwYWUzYmVhZmRjN2Y2MTA0YTgyZWU0ZWI3ZGMwYjg3IGxlZ2FjeS10cnVuaworNzIyOTEgYmQ0OTFiNWE4ODA4Njk4YjY1ODVlZjFmMjc1NDBhN2E2MTZkZGMxMyBweTNrCis3MjI5MiA1Y2NlYzRiMzY2NDZkMTE3YWZiN2JlNmUzODk3NTI4MjY0NTgyMzgzIGxlZ2FjeS10cnVuaworNzIyOTMgMzEwZGFhOTlkNjA3M2QzM2ZjZjA3YjE0Y2QyMTc3MWU5OGJjMzI3MiBweTNrCis3MjI5NCBjMmQxMDdlMDc4Mzk3NDUyY2U4NmU1ZTE0MDE0ZTQyZjgzOWVhYzMxIHB5M2sKKzcyMjk1IDUzOTliZTdhMzliYTM3MTdiZDgwMWQ1YzZhNDk3ODJkNThjOTc5NWEgbGVnYWN5LXRydW5rCis3MjI5NiA3NTc0M2FhZWU1MDQwYzBiM2JiZDIxNmViZmU4Nzc4YzI1ODI0MzMwIHB5M2sKKzcyMjk3IGQzNzQ3YjBhMmYzNjFhYTRkNzBjNDBmOGRiODE4YjBhZmU1NmFjNmUgcmVsZWFzZTI2LW1haW50Cis3MjI5OCAzYjA5ZjMzMmYxZmEzYjQyMWIxZjNlMjE3YmM3ODNlMWU2YzQ1YTJjIHB5M2sKKzcyMjk5IGIzMzE5YzA4NGQyNTcxYzMwMzgzMTAxNzVlZDM5Y2M1Y2NlOTc1YWEgbGVnYWN5LXRydW5rCis3MjMwMCBkZDkzOGEyY2MyZjBjNzRhNzA3YmZmNTkzZWZiYmFiMzNjMzViM2EyIHB5M2sKKzcyMzAxIDViZWNjODY1NDgxMjIwODJjMWM5MTkzZTJhODZlZjg1MDJmYzUwM2IgcHkzaworNzIzMDIgYmJhN2VlOWRhZWUwNjQ1ODljOTczMTU2ODM3N2M0MWFkYzdhYmQ1NiByZWxlYXNlMjYtbWFpbnQKKzcyMzAzIDYzOWE3OWZhNmEyMzhhNjUyYzk0OGYxNDAwNjczMjkwNzkxMTcxNGMgbGVnYWN5LXRydW5rCis3MjMwNCBhZWI0MDUwY2Q0MzE4NTI2MmZjODllYjdjY2Y2OWUyYWI5NjFhYTljIHJlbGVhc2UzMC1tYWludAorNzIzMDUgNGZjZmM1M2ZjYzc0YmQ2Y2U5OTVmY2RlYzUzOTA1ZDA4MTg2YzJlZiByZWxlYXNlMjYtbWFpbnQKKzcyMzA2IDI0MTZmMTY2ZGU0YjAwZTJhYjdiMDBiYmVmNjUxMTQ5N2Y2ZTkzNGYgbGVnYWN5LXRydW5rCis3MjMwNyBiMWVhNWY3MzEzZmRlNTRkMzFmNTM4NWYxZWE2NzFkMTFlZmI5OTA4IHB5M2sKKzcyMzA4IDBiZjViYjJmM2MwODk4NmRjMDYwZDBhYTRmYjcwODMzYjFiZWE5NjEgcmVsZWFzZTMwLW1haW50Cis3MjMwOSA2NjY4MmZjMTcyZTkwZTk4ZThhMTQ3NGFlMTVmMGYxZWRmZWU3NTVhIHB5M2sKKzcyMzEwIDczMjFkNDUxMGI0MWJhYmNlM2Y5YzJhNDc0ODg2OGJkMmJlNGQ0MDIgcGVwLTAzODMKKzcyMzExIDRkZDVhNmE5M2U3MDg4YzAzYjJhYzE2MDdkYjliMzU2YmI5NDUxNjcgcGVwLTAzODMKKzcyMzEyIDZlMTBiNzBhNDExMDM3NjAyOTRkMTMwMGM5ZWJiZTI4MTA2ODU2ZDQgcGVwLTAzODMKKzcyMzEzIGFjMjA5ZjEzMmIxN2IyODQwMTRkNGExMGNmOTdiYTc3ZGU4YjdjYjcgcHkzaworNzIzMTQgNGU1ODM0YjMyMmMxMGEyY2YwMTBmM2Q0NGU0YmVkODZjNGU1OTBiMyBsZWdhY3ktdHJ1bmsKKzcyMzE1IDJlMDQ0YzlmNGI0MDVmNzk2MjgwOGJlMDkzMzExNTVlYmNlNzllMjAgcHkzaworNzIzMTYgYjAwY2U2ZjBmYTNhOWNmYjkzN2M2YWRhMWRiYTY4ZTJiNDZmZjE3YSBweTNrCis3MjMxNyAxZTgyYmVmNjhmNGRmZTg3ZDZlZDI4OTBjN2UxMTJkYTVlYzA1YWE2IHB5M2sKKzcyMzE4IDVkZmQyMjkwNjM0MTFmZjYxYzM3MWQ2NmEzY2RiOGJmM2VmZjFiNjQgcHkzaworNzIzMTkgZGQ0ODlmNDc1N2JlODI2OWJlOTZlYmFjYTM2ZWIwMzE0NWZiN2UwZSBsZWdhY3ktdHJ1bmsKKzcyMzIwIGFmOGY4NDMyNTc5NzNmMThiOTg4MDQ0MjE1ZTQ3NDZmZWQxZjdkYWYgbGVnYWN5LXRydW5rCis3MjMyMSBiMTJhNDRlZWY0MGI2YzU5MjcwNmVjM2Y1YjY2MzcwOTJlNzZjOTM1IHB5M2sKKzcyMzIyIGM0OWJjMzMwMzI3Y2YyOWVjZTVhMTBkZWFhYzI1MmJmYzE2YzU2MTYgbGVnYWN5LXRydW5rCis3MjMyMyA1ODU3NDI4OGE1YmZlYTlkZWFjNjEwN2UzM2IyN2Q3MmE2NjJkY2NjIHB5M2sKKzcyMzI0IDRjNjM2NzA2MzllYzcwYjVhYTZiNjRlNWRiYmZiZTliYWVjZjQzYTMgbGVnYWN5LXRydW5rCis3MjMyNSA1OGFhMGFkNzcyNTNkNzc1NGM2OGU5YTk2MTAwZjNiNzdiMWZlZTVlIHB5M2sKKzcyMzI2IDU4NzhjYTc4NGE4NDk2ZTRkNWY0Y2Q1YmZmYzA4ODI4YTA4Zjg1NGMgbGVnYWN5LXRydW5rCis3MjMyNyAzM2JiZGQzZWVhNDNkOWZjZWNlNWVmNGM3ZGY3ZTM5Y2Y3ZTkwNGVjIHB5M2sKKzcyMzI4IDlmODUzMmEwZjFhYmNjNDYxYjYwMDA5ZmIxNTUxZmQ3ZDI4MmVmODEgbGVnYWN5LXRydW5rCis3MjMyOSBlYzVmMDNkMWU4MTk4OTMxM2YwYWMxNzdjMmZiY2FkMTI0NGZiNWI4IHB5M2sKKzcyMzMwIGY2YmZmYjllODM0Zjk5ZTYwODA2NjhkMTllNzAxNTk4ZTA0OTFhMmQgcHkzaworNzIzMzEgMTY3Y2QzNzhiNWJkOGIzN2U2NzY2YjNkYTVkYzBkODI5YWMzODYzYSBweTNrCis3MjMzMiAyY2MxMTY5M2ExODBlZDc0MTc4NDMwOWRkZWE3NjRhNDk0NGM5ZTM1IHJlbGVhc2UzMC1tYWludAorNzIzMzMgYzYzNzZkM2ZhOTY4NzgxN2IyYTQxYmY1NjllZGMwNTQ5Y2U2YmE5MiBweTNrCis3MjMzNCBkMTdjYzcyZmZlODA3NjcxZDQ5NjBkNTFiYWUwNTIxZmNkYTBjOGQzIHJlbGVhc2UzMC1tYWludAorNzIzMzUgOWY2YjhjZTIwMjNmMGMyNDRmYjFhMTIxZmRkNTc0M2Y3YTEwYzRmOCBsZWdhY3ktdHJ1bmsKKzcyMzM2IDIxNWI3YjY2ZTYyZGYyODVlMTVkOTE3YWIyZGYyOThjNGJkMzc3ZDYgcHkzaworNzIzMzcgNGYzZWRiNmFmOGMxYmJkM2IzODU1MjVjNmQwMGNkNTM4NDc1ZDRjYSByZWxlYXNlMjYtbWFpbnQKKzcyMzM4IDk3NjAzNTM2NjA2NTdhYWEyMWQyY2QzN2NjOWIxZjA1MDBhMWI2ODIgcmVsZWFzZTMwLW1haW50Cis3MjMzOSBjYTQ1MGIyODI3ZWYzODA5YjM0OTdmZWFjMThjMDJmYWQ0OGJmNDNlIHB5M2sKKzcyMzQwIGQ4NjAxZThiM2FiZTkxZWJhMDdkMzI1ZjE3MzQ3NzQ3Y2QyOTlkOTUgcHkzaworNzIzNDEgYTdjOTllMzRlMjM5ZTIxNzJhNjdjODA3NTI3NzFmYmQ3MGM5NmZlYSBweTNrCis3MjM0MiA4ZThiOTU5MDkxN2FkOTRjNWI4MmM2Mzk1NzM4YTE0NzA3YTEzMmVmIHJlbGVhc2UzMC1tYWludAorNzIzNDMgN2VhNzg3MGRkOTY2ZDIyMTZkNTE0NGQ3M2JhZDUxNWRjMDNmNDA5YiBsZWdhY3ktdHJ1bmsKKzcyMzQ0IGVhMmE5MDA4MmM4Mzc1MjgzOTI1MTEwZGQ5YjlmY2YxNDU2M2ZmNTEgbGVnYWN5LXRydW5rCis3MjM0NSA2ZDY0Y2Q2OWYzODQ0YTU1ZWRiNzM0YjNiYWM1YmVlMGNmYWNjZjdmIHJlbGVhc2UyNi1tYWludAorNzIzNDYgOTg3NDIxZDNmOGFlNDBiNmQ5MDVmY2NiMmY3N2ZjNWZlNTVkOTY3NCBweTNrCis3MjM0NyBiMDM3NTU2N2ZhZTgwYTQ2Y2FjOGMxMjVmZDU4OTZjMzQyMjg3ZjQ1IHJlbGVhc2UzMC1tYWludAorNzIzNDggMWQ4ZjI0ZDQwYzJjNjhmYjliM2VjNDQxY2IxNzUwNDZjOWM4MDIxYSBsZWdhY3ktdHJ1bmsKKzcyMzQ5IDRkNWYwNjY1NzVlZDUwZDkwMTk2MWEzMzEzYTM4YjBmOWQ3YWIwMDkgcmVsZWFzZTI2LW1haW50Cis3MjM1MCBiOTc3YWYxOWM2ZjAxMzdmZTQ3YTc1NjFhM2JjMjExY2FjOGY4ZGU3IHB5M2sKKzcyMzUxIGJiZTJhYTQzMTY5MjMyMzYwNWZkZTFhYmU0YzIzNDk3NWVkM2NjZTcgcHkzaworNzIzNTIgNTgxYjU2NGQ4ZmMzYjJmZTY3Y2NkM2FlMGMyNTUyMjA0MDgxZWM4MCBsZWdhY3ktdHJ1bmsKKzcyMzUzIGE4NWU2NzU2ZGVkMmNmZTdlMmIxOGNkZGNkNDk4YzljMTZkNmVlNjggcmVsZWFzZTI2LW1haW50Cis3MjM1NCBlMDE3OWYwOGQzNGYyMjAzMTQzZTk0MjllNmZiYWM1MmM2NmI2NzhkIHB5M2sKKzcyMzU1IGQzZmZiMzcwMmMzYWY2M2ZhNTBlYTA2ZmE1MzI2NDIyYTNlYzZiY2QgcmVsZWFzZTMwLW1haW50Cis3MjM1NyA4ZjdjZjVjYjIxYmI1ODNhYjRlNWFlZGIyZjQyMzA0YjBlYjRmYzQyIGxlZ2FjeS10cnVuaworNzIzNTggMDI2ZDM5MGVlY2MxOTZhZDA1MTRjYzE4NzEwZjU4NzUyZDAyZTliOSBweTNrCis3MjM1OSAxNWQzYmRlNzBkODdiMDAwZWNjZTk0OTdjMzU4OWQ0ZWNlNzM3ZTQ3IHB5M2sKKzcyMzYwIGYwZmI0ZGRmZjFhYmRhYWEzMzU2ZmQ2ZDMzYWNhMzkwMDczZTlkZWEgcmVsZWFzZTMwLW1haW50Cis3MjM2MSBhZTY4NTA4NjlkNTJmNGY2ZWM3ODJhYjM0Y2M4MDhmNWU2ODIyNmVhIGxlZ2FjeS10cnVuaworNzIzNjIgMjU5MmM2YTlkZGQ2YzQ0ZWNkOTU5ZWZkNmMyNzk1MmVlZTkzZDY1NiBweTNrCis3MjM2MyA5MTFkZjgyYmMyNWRmYjYyZmFlZjZlYTFiOWQwY2Y3MDQxN2JiOTdjIHB5M2sKKzcyMzY0IDViOTAyMWMxOTUxMmJiMmUzYTNiZDAxMzI1MmQyOGY5MjhmODM1MzMgcHkzaworNzIzNjUgNTRkYzU3NzdiZGZiZmU2MzY5ZDgzZjcyNzhiMjg0NmMzOGE4ODZiOSBweTNrCis3MjM2NiA3YmFmNGNjMTNiY2ZmNjhiYjViNGZiOTg4MmQyZGZiZWRmNzVkZDc5IHB5M2sKKzcyMzY3IDNiNWM0MDBjOWRjZDQ1MTAzNWQ4N2M0MjMwNjg2YmJiZmRlNWRkNjUgbGVnYWN5LXRydW5rCis3MjM2OCBmYjEwYjg4YWZkNDAxZTgxMjEyYTVjYWNlNGIxNjhlMTg2NzEzYjczIGxlZ2FjeS10cnVuaworNzIzNjkgNWI0YjA5ZThmMzJiYTljYmU1ZTFhYjc3Yjc3NDU4MTg2NzYyNzQ0NCBweTNrCis3MjM3MCBhMjMwM2E3NGE3NjEwYzhlMmM2YTYzZGQyMTllZWJiODZiZjJhMmZkIHB5M2sKKzcyMzcxIGI2NjZlNzJmNjAyZmE4NTI4ZDgzMDBhZGI0YTA4MTU5NjdkMzlhZmQgcHkzaworNzIzNzIgOTg5NTQ4M2U5NjAxM2E1MmNmZjJkODE5N2ZjNTRlODg2OTdhOWFkOCBweTNrCis3MjM3MyA5YzRkOTI5ZjQwNTk5NDE3MTkxYzNmNDVjNWMzM2JiYmU2YzhkN2UwIHB5M2sKKzcyMzc0IDRiMWE5YWZmZTM0Y2Q0ZjkyMTJkZTdiNTIzYWQ3YTBhOTM4ODIyYmUgcHkzaworNzIzNzUgZWIzYWZiZDZhYWE5NmVmNjc2MDJiYmMwMGU5NjE2ZWVkZTQ4MDAwOCBsZWdhY3ktdHJ1bmsKKzcyMzc2IDRmMTczODRhZThjYmZlNDY4YzAxMTJlZDdlODI0YTlmNmY4OWFjNTEgcHkzaworNzIzNzcgMGY2YTc4NWNmMjg2ZTNkMWQ4M2E1ZTdjNDI0ZjI3OWFmYjFlNjg4MiBsZWdhY3ktdHJ1bmsKKzcyMzc4IDU1NmQxMTMxNGFkNWNmOTEzODJjNGZmOTJhYjFkYmQ1Y2RiYTYwMGYgcmVsZWFzZTI2LW1haW50Cis3MjM3OSA1N2U5YjFiMDgzOGU1MmRlOTQwY2QwNDcxMzRlYTg0NDcwYzViZDJkIHB5M2sKKzcyMzgwIGE4MTVhY2NkODllNDBiMzQxYTVkNjBmNWQwMjAxOTNhYTgxYjRjODQgcmVsZWFzZTMwLW1haW50Cis3MjM4MSA4NTc3NWQxMDBhMzJjNTlmMmNiZDJhMTJjZWYzNmMwYjQxMGU0ZmU3IHJlbGVhc2UyNi1tYWludAorNzIzODIgZTYyMDcwMWEzZWM4NjQwYWZjNmE0MzIzMGE1NTgxZWIxM2MyNDQzNyBsZWdhY3ktdHJ1bmsKKzcyMzgzIGFlYzYyZTljYzZlOGVlZmE2YTFlMWJjY2RiMzM0NmM3ZmE1YWMwZDIgcmVsZWFzZTI2LW1haW50Cis3MjM4NSBiY2JiOTRkNjkyZWZkNzEyOTYyZDRlYTliYzIyNDVhMmVkMmNjNzA4IHB5M2sKKzcyMzg3IDI5MDI1YjUzMDA0NjY4NTAwZDA4OWJkYTU5Zjg4OTJjNjQ0NDZiMDggcHkzaworNzIzODggY2FjMmE1ZjRiOWZhZTEyODRiOTljZmRlNDA5ZWE4N2NkNzlmZjNkZiBsZWdhY3ktdHJ1bmsKKzcyMzg5IGM2ZWZlNThlZWY2NjU3ZWU0YjlmMjg5OTQ5ZWZlMWM2NmNiZDhiZDggcmVsZWFzZTI2LW1haW50Cis3MjM5MCBmMWEzZGU5ZGY0MjVkYjRjM2YxYjY3OTEzMTA0ODQ3Y2E5YjhkN2MzIHB5M2sKKzcyMzkxIGZiN2QxMjE5NmMzNWMyYjVmNWRhYWJjY2Q0MjljZWVjZTk1MWM2NzIgcmVsZWFzZTMwLW1haW50Cis3MjM5MiAzNTU5N2QzZGJkMDgyMDJjYzg4NzFkMWVjMTNkMTgwNDdiYWU0NTgwIGxlZ2FjeS10cnVuaworNzIzOTMgMDM4OGE0MjcyNTk4ZTM4NjRlOTU1OWU5MTFiNmFhZjAwNzAzMDFkYSByZWxlYXNlMjYtbWFpbnQKKzcyMzk0IDBjNTI2ZDE4OTUyNzJiOWE1MjU3ZjgyYTFjMTRiODczNzIxMWY1M2MgcHkzaworNzIzOTUgYWRjOGVjN2Y3ZDIzMDE5ZjAyOWE3NzVmMjE0MjZiNTNiZTBlZWViZCByZWxlYXNlMzAtbWFpbnQKKzcyMzk2IGRmM2Y1ZGI1MjhmMDBiMzcxZjcxNjFhNWJkYzBkNmZhYzgxOTNmOGQgcHkzaworNzIzOTcgN2NiNmRmMDA2OTlmNGIzNGQ3MTliZjZjOGZjYjQyM2ZkNzg4NDQyOSBweTNrCis3MjM5OCAwNGJkYzk0NDcxOGFmOWVlZmYxNzk4YmRkNWQxNjc0ZWNjOWExNDNjIHB5M2sKKzcyMzk5IDljNjU0MDQwNDAwZGVmYTRjMjliYmU2M2UwNDcwZjUzN2NlMWRjNGMgbGVnYWN5LXRydW5rCis3MjQwMCAwYjlkN2NjZWQ5MzcxZDdmYjRjODUzZjVkYTMzMmY2NGI4MTEwYTI1IHB5M2sKKzcyNDAxIDAzNGUwZmNkNjk0ZTg4MWE1OGFlNGYxY2FjOTllZGZhNzQwMTFiNjggcmVsZWFzZTI2LW1haW50Cis3MjQwMiBlY2U3ZTdhODAwNDNjMTU4MjUxMTRiNDNhODgzNjQzZjdjMGZhNzE0IHJlbGVhc2UzMC1tYWludAorNzI0MDMgYzUyZTU1NWM5MThkOWJiYzRmYTYwMmFmOTU3MzdhMzBiMTk2MDk3NiByZWxlYXNlMzAtbWFpbnQKKzcyNDA0IDdkY2EyNTAzNDNlYTQxYzk2Mzk4ZWI2OGFlZTRmY2JkNWFkOGY3ZjYgbGVnYWN5LXRydW5rCis3MjQwNSA0YTg0NzAwNjY0ZDkyNjIxYWZlOGI0MWQ4YTMxZmY4ZTA1NmEyZjM5IHJlbGVhc2UyNi1tYWludAorNzI0MDYgNDYzNDJmZmEyOTYzNTNmMzUwN2VlNzk0MDFmN2MxMDc4OTI2NGUyZiBsZWdhY3ktdHJ1bmsKKzcyNDA3IGMwYWQyM2FlMmEzZTFjY2U0NTkyMDA2ZDlhMGI2NmE4NmM5YWUzNzcgcmVsZWFzZTI2LW1haW50Cis3MjQwOCA2M2IyM2JkMzkwNGRlNzE2OWM2MmNmMGViYTM3NzkzNTc1ZTg4ZjY5IHB5M2sKKzcyNDA5IGNhNTU3Zjg1MGVlZTY0Y2QzZjJmYjExMGEwOGI1ODRjODY0YTI4ZmMgcmVsZWFzZTMwLW1haW50Cis3MjQxMCA3YTY3YjY0N2I5ZTc3Nzc5ZWNlYjIwYTM0ODE5MjJlOWUwOTgzYWRjIHB5M2sKKzcyNDEyIGI2MzAyMDc5N2Y5Njc4YWRhZjRkMmMzZTI2NTc0YTllZWYyZWYwMjggcHkzaworNzI0MTQgYTYyOTkyNDFmYmQ5YmNjNjA1OTdkNTQ2YzA2ZDQ0M2ZjNjYyNzJlNiBweTNrCis3MjQxNSAzYWFhYmIzMTAyZThlNzU5YTg5OTcxOTgxM2VkYTU5OTM2OTgxNjk1IGxlZ2FjeS10cnVuaworNzI0MTYgMzc2ZmUxNTg2Mjc2MDAwN2IwNzRjZDRlYzNjZjZlN2U1NWQxNDM4ZCByZWxlYXNlMjYtbWFpbnQKKzcyNDE3IDIwNTg2OTBhNTNlMTJjZTJlMmM3MTAzMDVjM2JiNDBlYWFiYjMxODkgcHkzaworNzI0MTggNjVkOGRiNWJlYjIwMTIyMTljYmZmMTczOWU0NDcxN2RlYzkxNDRiNiBsZWdhY3ktdHJ1bmsKKzcyNDE5IDJhMGZhY2EzZGVlZTU5ODNhNTBkZTE0MTEyNmZkMzMzYzE5YmFlMTIgbGVnYWN5LXRydW5rCis3MjQyMSA3NzE0Mjk4NWM2NDEwYTUzNTA0ZGY3NzQyMWI2NWNhZDFmNjAxMWUwIHB5M2sKKzcyNDIyIGE3Y2FmMjlkMTQwNjMzYzQ1M2NhNzgyNzgyY2Y5ODMwNzJhNTQ1ZmYgbGVnYWN5LXRydW5rCis3MjQyMyBmYWM1MWEwMjJiZjUwOTMwNDAzZWY5YTZmMWZhY2IyYzk4NGIwODQwIHB5M2sKKzcyNDI1IDg1YjlkZjUyNWUxMDcwZjYzOGFlNTQwZDg5YzgxNWUwNWQyYTBlOTcgbGVnYWN5LXRydW5rCis3MjQyNiAyMzhjYWZjYzI1MTVmNWRiMDNkMGE1MTY4ZWJlMGU3NmZhZjQxYTY3IGxlZ2FjeS10cnVuaworNzI0MjcgNjJiZTVhYzk4OWY0Zjg2YzA0YjI0ODlmYjk0YTc5YmZjNjUzZjg1NiBweTNrCis3MjQyOCBhODE5MGU4ODFmZGZmMmFmNjNjZTIzY2M5MDk1MDQwMTI3NTYwNTU0IHJlbGVhc2UzMC1tYWludAorNzI0MjkgN2EzYmQxNzliMTgwZGNjMTg5NWQyODk3ZTJhZTEzYjlmMTQ0NTI0MSByZWxlYXNlMjYtbWFpbnQKKzcyNDM0IDZjOGIzODBkYjcyN2ZjMjIxYzIyNjg3ZTNiYmQxZGYzNDhhNzY0Y2MgbGVnYWN5LXRydW5rCis3MjQzNSBlN2ZlMjE3Y2UwMTU3ZGQ4MTQ0ZWFhZjdmNjMzMmVkMDcwMjUxNTc1IHB5M2sKKzcyNDM2IGY4NzU4MzUzYzZjMjAyYjZjNTZiNmVlN2MwNGQzNWQ4MjNhNDBmYWIgcmVsZWFzZTI2LW1haW50Cis3MjQzNyA1NzBkM2U1OGVlYTk1OGIyMWEwM2YzODg0YzI3ZTc0MmEwYWFhMDI5IHJlbGVhc2UzMC1tYWludAorNzI0MzggMGVmMjQyZjI3ZDc2OTk3N2EyNmNmMTI3Zjg5MWYxM2U4MWViMjQ2ZCBweTNrCis3MjQzOSBkNzgwMzdjMTYyMjUwMDcyOGYxNGM0YzlmNDY0NGJjMTA2OGI5Mzg5IGxlZ2FjeS10cnVuaworNzI0NDAgNTUwMmZmMmZiZGQ2M2QyN2ZlYTY5MmFkYjAwMmQxMjZlZDk1ZmYzZiByZWxlYXNlMjYtbWFpbnQKKzcyNDQxIGM2OTMwMDNiMTVlMjFkMDQ1MGY3NmUzMzEzMzBlZTJjMDQ3ZGE2MWYgcHkzaworNzI0NDIgYWFjNDA1NWQwNjZhMDNlMzk0ZmQzMTUyNzRmYzIyYjE3OGQ0OGZmNCByZWxlYXNlMzAtbWFpbnQKKzcyNDQzIDRjM2E4NGU1NGQwODI2ODE2YTkwM2ViMzM3Y2IzMDA3OTNkMWQ4ZDggbGVnYWN5LXRydW5rCis3MjQ0NCAwZDVlMmE5Mjg2YTJhNGI4NTNlY2UzNTEzM2IyYzMzYjM3NDUxNWE2IHB5M2sKKzcyNDQ1IDkxNDNkMjBkOGIyNjM5ZDM4NmMxZmY2ODg2OGExMjY2MzU5MDU2MjQgbGVnYWN5LXRydW5rCis3MjQ0NiAxOThiNjhhZTJjMmRmNTM3M2EwNzdkZjJlYTA2YWE3MDFiMjM4YjZkIHB5M2sKKzcyNDQ3IGY1ZjUwN2I1NWQ0NjU3OTUxNWU0ZTUwNWNjZGNjNTMyMmFmZDY3M2QgcmVsZWFzZTMwLW1haW50Cis3MjQ0OCA4ZjNkYTcxMzRjYTVmMDdhMzY1Y2IwMmU2NWY4NzMzYjYxNmRiZDliIHJlbGVhc2UyNi1tYWludAorNzI0NDkgZTU2NzEyZTE4NmY5ZGY4YzViNjFlZGIwNGM2YzA0N2ExYWRmYzE4OCByZWxlYXNlMjYtbWFpbnQKKzcyNDUwIDJkZjJkMWYwOWQ1ODVkNzJmNDJkY2ZiMTZkYTgzODU5ZmExNWYzYzMgcHkzaworNzI0NTEgNmE3MTU3MjdmMTlmNzU1YzNiNDUzODg2MDA4OGM5YWM3ZmFiMGMwZSBsZWdhY3ktdHJ1bmsKKzcyNDUyIDQ3YjNmZWVhNGUxYTUxYzIwMTlkOTZmOWEyYjI1NTIxMDcxYWQ1MjcgcmVsZWFzZTI2LW1haW50Cis3MjQ1MyBjMTQyZTQ1Mzg5NDFlNjNkZDBiMjQ3YmM4ZmMzN2FhNjBmOTc4Zjc5IHJlbGVhc2UzMC1tYWludAorNzI0NTQgMTFhZDY1NDU4MDlhYzdiZmM1MTkxYWZjN2M5NTQ1MTdhZDQ0ZWY2NiBsZWdhY3ktdHJ1bmsKKzcyNDU1IGIzYjE1NTU4M2UwNTVkMzk4MTdkZGI4OGZkNzk1MzA1MjU4ODQ3ZGYgcHkzaworNzI0NTYgMTdmNzc3NGY3NGRkZWI2YjQ0MGJlMTQzOTk1YjA1YmNlMGRjODliZiByZWxlYXNlMjYtbWFpbnQKKzcyNDU3IDFjZDFiMjE0NTJkMzk1MjY2ODU5ZjZjNWVkZWM3ZDY2YThkMjI2MWIgcmVsZWFzZTMwLW1haW50Cis3MjQ1OCBhMDE1YTI5ODU0M2RkZWIxOGMyN2U4NzM1NmQ0MzdiZjBhMmVlNmIwIGxlZ2FjeS10cnVuaworNzI0NTkgMDQ2YmQyYTQxMzIyZmFlYWRhN2Q4ZmM3Y2M5ZGZkZDNiZmJiMzhkMyBweTNrCis3MjQ2MCBhMzZmYTJjZTYxYjFmM2NiNjg0NmY1NzJmNTQ3OWUzZjVhOWYwOTQwIHJlbGVhc2UyNi1tYWludAorNzI0NjEgMWVjZGNhMTFlYjllYzI4NjQwMzYzNDRjODVhOWI1NjZmYjhmZWMzOSBsZWdhY3ktdHJ1bmsKKzcyNDYyIDI5OTNmMDQ5ZTJjOTUzMzNlNmQ3MjkyMjI0NjM2MGU3NDI3MjA3ZjIgcHkzaworNzI0NjMgNTQyMGRhZTM1NWY3M2M2MzUwMWNmOWE3MjY1Y2VhNzZkYjgxZDFiZSBweTNrCis3MjQ2NCAzNzQ5N2E3NzkzYjJmZjczYjA4MWFjNjA2YzlmZGIxMzUyMDkxZGY2IGxlZ2FjeS10cnVuaworNzI0NjUgZjFmZjg3YjliNDM3M2IyYjRjOGNkNDBhODIyMGYzZDI3NGZlYmJiNyBweTNrCis3MjQ2NiAyMzg1MDI0NjA3OTViYzYwZmU3OTczNGMwMWE1MTMzMjhkMGEyNjlkIHB5M2sKKzcyNDY3IDY2ZWNjODk2YjdlNzNhMDU0YjE2NjNhOGFmMTkyYWQ2ZjMwMmM5ZTQgbGVnYWN5LXRydW5rCis3MjQ2OCA5YzdiY2I3ZTc0OGMxNjI0N2RlNDk0ZTcyMWJhNDJlMWU3OTNlNzJmIGxlZ2FjeS10cnVuaworNzI0NjkgYTZlNmE1N2NjY2MyOWE0ZTU1ZTkzOTI0ZGZmODQ0MzgwZTlhYzJjOSBsZWdhY3ktdHJ1bmsKKzcyNDcwIDUyODBmNzU1YjQ4YTE0YjQxYTI4NGE2NzNhMWI3ZmQ3MDg2Y2UzNmIgcHkzaworNzI0NzEgNjk0ZWUyMGM4Yzc0M2JlYjY5YWExNzE0ZTViZjYzMWQ4ZGY4YmRjMSBweTNrCis3MjQ3MiBiYTRlNmEzYWY1NjRlZDcwZmViZTg3YzlmNzY1M2I1ZWM5MTZjY2NkIHJlbGVhc2UzMC1tYWludAorNzI0NzMgNWVhNTQ2MzU3MjI2ZGRhZGY0MTVkZTM1YWNkMjdmZDYzYzQ1ZTkyYSByZWxlYXNlMzAtbWFpbnQKKzcyNDc0IDE3MTI1MjNmOTM2YzUwY2U1MGNhN2JkNzI3OGVjM2M3YmQ2NWFmYjAgbGVnYWN5LXRydW5rCis3MjQ3NSA1ZjIxNTc0Nzk3NDk1ZDU2MDZiYTU4OTBmMzAzMmQyMzcyZDQwNWJkIHB5M2sKKzcyNDc2IGQ0ZWZjNzMzODcwNmJjNGJhZTk3NTQ2N2M1ZGIyMjk2NDEwNzIzMDMgbGVnYWN5LXRydW5rCis3MjQ3NyA3YTllMDgxZWNlNGMzZGExYzQ2MGE0Nzg4ZjJjZTg5OTY4ZDg3YWQ5IHB5M2sKKzcyNDc4IGNiN2JlNjNiOTFkODVlYThhZWZlZTE2NWU5N2ZkZmU0ZTg3M2M2YTggcHkzaworNzI0NzkgMGRhZTdmZWZlZDQ0MDVjODQyZTRkMWQzMmVkZjQyYzE1M2I3NDYyNSBsZWdhY3ktdHJ1bmsKKzcyNDgwIDhiOTg5N2QxNWNmYzgwY2VlNmU4MDE2MGZkNTRhMmQzZWRhNTg3YTEgcHkzaworNzI0ODEgMjA4NjlkOTc4YjhiNDMwOWE5MmIyN2JhNzliNjczZjhkODZiMTFlNCByZWxlYXNlMjYtbWFpbnQKKzcyNDgyIGI4NjdjZTM3NWU5OGNkMGQyMzNkNjc0NWQ2ODFmZjI5MmRhZGQ1ZjggcHkzaworNzI0ODMgZjQ5NTAwOTZlN2Q3YjQ3Nzg4OTY0MGJiZmFiYjBkNDRiYzllMDYzZCByZWxlYXNlMzAtbWFpbnQKKzcyNDg0IDA2N2E2MzlkNWY3NjU5MjJiM2M0YWY4ZDQyNzhmMWYzMDAyMWU3YTAgcHkzaworNzI0ODUgMDcyMmYyMDRkMjZlMDQ1YmVlZmVkYjk2MGRlMGI5ZTU1Nzc0NWY1ZiBweTNrCis3MjQ4NiBmOTE3YWFlNzQxZDVlNjFmZmZkZTFlOTZkYjIyOWFhNGFiMWI5MjdkIHJlbGVhc2UzMC1tYWludAorNzI0ODcgYTE3MTA0OGRhZjc2ZjQyNTc3NzA4MGEzYjY5ZTIyZmZkMGIwNjU2NSBsZWdhY3ktdHJ1bmsKKzcyNDg4IDllZjY4M2Q0MWM5YjIyMjk3YmNjNGIwNWM5NjVkNmZhYmMzZTczMmIgbGVnYWN5LXRydW5rCis3MjQ4OSA1MTBmZmM1ZGIyMzI1ODljNzY5M2E0ZWFjODgyMWQzNWZjZmRiY2NmIGxlZ2FjeS10cnVuaworNzI0OTAgNDQ2YTE1YTFiZWU4ZmQwNjk0NDA4Y2ZjNDQ2YzEwYTY3ZDUwZDAxZiBweTNrCis3MjQ5NCAxMTllNDMyMzQwMGQwMWM4MjJlYjFlMGM3NWZhNWVmMGU2YmNiNjE1IGxlZ2FjeS10cnVuaworNzI0OTUgNzM5ODZhOWNhMWQ2M2RmYjU5NTRmNjk4OWU4ZmNlNjZjNWIwZTM4ZiBsZWdhY3ktdHJ1bmsKKzcyNDk2IDFkNzk0OGNiNTQzMDAwYWYzZDFmZjE0NjA2MzdhYTYzNmI1NDNhODggcHkzaworNzI0OTcgY2NmZGExNGQxNTU0ODFmNGU0ODcwZWViMmFlNzVmZjQ3NjYyMzBkOCBsZWdhY3ktdHJ1bmsKKzcyNDk4IGQ2NjYwM2RkM2IyZDcxOGFiZTFmNzY2NzczN2NlMGI2NWI4NmEzMjEgcmVsZWFzZTI2LW1haW50Cis3MjUwMCBmOWQ5ZWVjNmJlNjcwMTc4NDdmZDdkN2MyNzdmYzRkMzhiYWY3MjBkIGxlZ2FjeS10cnVuaworNzI1MDEgOWY3MTNmNjA1ZjYwZWZkNWY0NGI1YmM1ZjFkMzcwOThjNjIwOTZjZSByZWxlYXNlMjYtbWFpbnQKKzcyNTAyIDM2ZmMwNzk4NDE3ZjE0ZTZkNmMzYzQzNTQ1NzE3YTk4NWQ0OTkzNWIgcHkzaworNzI1MDMgOTlkZDI5ZTI0YmRlM2Q0ZWU1ZDA2OWYwZGM5NjY0Y2FjNzQ3YzNjNSByZWxlYXNlMzAtbWFpbnQKKzcyNTA0IDk2MmI0ZmY3NmNjYTIxMzQ1NzUzM2M4YWQ3NjE1NGJiYWMwNTZiNGQgcHkzaworNzI1MDUgOTIwN2Q0MjkyMDNhMWM1YTk2NTJkODM5OTg5YTU0NDBmYjZlOGM2ZSByZWxlYXNlMzAtbWFpbnQKKzcyNTA2IDA3MmE4YTdjZTk3M2NkZGU0NjRlODk1MGY0MTRkYjUzMjA1ZDgyNTMgbGVnYWN5LXRydW5rCis3MjUwNyBlYjZlYjQ5ZGJhZTllYzdkY2YyMjFlNDZiN2U4MjdlMGQ2ZDhjMmM1IHJlbGVhc2UyNi1tYWludAorNzI1MDggZjkwYjNlZWM3YzMyNzhjNWY5MGRhYWYzODg2MzJjMTUyYjBiYzFjNiBsZWdhY3ktdHJ1bmsKKzcyNTA5IDVkZDNiMzhhMDk3NzhhNjY3M2NiZmM2ZTA4ZjdiODZlNTE0YjJjMWIgbGVnYWN5LXRydW5rCis3MjUxMCBiNzkyMGUxODM0MjI4ZjVlZjc4NGJiYjJhNmZjZDMyNDJhMmUxYjk1IGxlZ2FjeS10cnVuaworNzI1MTEgYWZkNjJlYjE2OTJlZjFhY2JhYmViMWM5YTA1OWYxY2Q2MzBjOTE4YSBweTNrCis3MjUxMiAzMGVkZDdmNjEwMWJkOWE3ZjZkYTkzZjJiYWQwODcyMzk4ZjNhNzk3IGxlZ2FjeS10cnVuaworNzI1MTMgMzI3ZTIzYTZhNjEwMjBhZTBlMWFmNjg1Y2U4NzczNTdiYmQ3YzY0MSBweTNrCis3MjUxNCAyNjFmNTk0MDE0YzYyMjVhM2U5NWM2NTE1NzBjNjZlYjY4ZmExNjRhIHB5M2sKKzcyNTE1IDFiMTVhNTdlMWYwMmY0YmJlMDEzNWEyNWE4YmRlMjExNWZhOTFlMjIgcHkzaworNzI1MTYgZDJiMTc2MTYxYWJmMGIzNjZjZWZjNmUzNzZmNWY0MjI0MmQ4OGM0YSBsZWdhY3ktdHJ1bmsKKzcyNTE3IDcyYTUwMzk0YzJkZGU4MzliNzM2Y2MwOTRmMGRlZDUyNDFmYmM5NmEgbGVnYWN5LXRydW5rCis3MjUxOCBhYTQxYzhjOTYwNTUwMDZmMDczZmJmYjc5NTE5YWU5ODA5ZWFkNGE0IGxlZ2FjeS10cnVuaworNzI1MTkgMmI0MDY1Mzg4NjZkOTA5MTc2ZGYyZTk5NjA2YWZmNDk4MGQwODFlMyBweTNrCis3MjUyMCAyOWI1MThmMjk2ZGUwM2U4ZTQ3Mjc4Yzk0NjQyNTQyMjlmODRhMWE4IHB5M2sKKzcyNTIxIDA1NmFhNzY5ZGE4OTFhMTBmMmU3NjQ1ZGZkMzAwMjY2OTI3YjY2MzAgcHkzaworNzI1MjIgNTcwMmQyZGFkMGY5ZWM4ZWUwZTc1YmUwZDI0NzRhMjM4NGQ2YWIwYiBweTNrCis3MjUyNCAxMzExNzcyOGQwODZkYTQyNTlkNDVmMzkxNjRkOTgzNTQ2YWNkYmNkIHB5M2sKKzcyNTI1IGE3YzUzZmFkMTNiYzM2ZDIyMDJjYjYxMTJjMDBiZjNjYjg5MzhjZWMgbGVnYWN5LXRydW5rCis3MjUyNiAzZTg0ZDYwMTI2YjdlMDI5YzA4MmQwOTFkOGNjNDk3NzRjOGQ3OTk3IGxlZ2FjeS10cnVuaworNzI1MjggZmJjZGFlM2UwY2ExYmVjMTBmNGRlZGQ5OWIzNTJjNGIzYmNiZWZmOCBweTNrCis3MjUyOSA3YzI5YmZiZmQzNTI0NGQwNGM0Mzk0NTg1MTUxYzAxOTc4Mzc0OGMxIHB5M2sKKzcyNTMwIDQxYzA5ZTE0MmJkMDA2ZTIwOWZmZjE0NDkwYjUxM2ExNzdlZmY5MGIgcHkzaworNzI1MzEgZTkxYTc3YTQ4MmViZTRlMWRhOTVlNWRkNTRkOWRlOTg0Yzc5MjBhZCBsZWdhY3ktdHJ1bmsKKzcyNTMyIDM1ZTk4MDNhMmY0ZTQ1ZTQ0ZGU5OGE1ZjM5NzAyYjdlY2ViMzQwMjIgcmVsZWFzZTI2LW1haW50Cis3MjUzMyAwNTA3NDJiYjYwZDViMTczNzRhMTlkNWFhZGQyY2FjMDEyZDMxYTA3IHB5M2sKKzcyNTM0IDllNjdjMmY5OTljOWNjYzYzZDc3MTRlNjcyMGZiNWJlNzE1M2IzN2MgcmVsZWFzZTMwLW1haW50Cis3MjUzNSBjNjBjZGEzNDE4YjU0ZjY1MDhjYWYyMTdjYmEzNmE1ODU1NTY2ZThlIGxlZ2FjeS10cnVuaworNzI1MzYgOGEwNDc3N2I1OWNiZDBhZTg1M2IxZjZkMDYyY2YzNjliYmQ3ZTIwYyByZWxlYXNlMjYtbWFpbnQKKzcyNTM3IDUyMjRhMjU4ZDViYjA0ZTIwNzliMzMwM2IxZDUyZDRmYzNlZWY0NjMgcHkzaworNzI1MzggOWE2ZjVlMDUzMWE2MzE4NjMwNGQyYTJmYzY5MWIzNzVmMzNlOWZiNyByZWxlYXNlMzAtbWFpbnQKKzcyNTM5IDFiZWM2NGI4ZGQxNzZhYTk1MzZmY2Y1MWNhM2ZhNjU1YmYyYWE5ZWEgbGVnYWN5LXRydW5rCis3MjU0MCBhYzQ4OTQ2OTM0MTFkNDE3ZWVhMmU1MzZkY2NiNmM3ODUxYmMwZjMxIHJlbGVhc2UyNi1tYWludAorNzI1NDEgODg4ZGFhMDAzZmMzY2UzNThiZmY3ZDJmNmU4ZTU2MTc3ODU1NTk1NCBweTNrCis3MjU0MiA4NmEzYzlhOWM2ZGU0MWFhYjdiODFkZGFmODQ2ZDY5ZDM0ODcwNzk4IHJlbGVhc2UzMC1tYWludAorNzI1NDMgMTdjNTNmYTM3ODkwMTY3MTBkY2ExZGMyMjM3MmNkMmNlMDA4OTBjMiBsZWdhY3ktdHJ1bmsKKzcyNTQ0IDg4MDNhZTBkZjNmM2E1NTZlNDI5N2Y1MTY2YzFhNjc2ZDc0MjQ4NDIgcmVsZWFzZTI2LW1haW50Cis3MjU0NSAyNDFkYWEyNTlhZjk2YzNlOTIxNzc2NmQxMmY3ZDI4ZDU3YjJiMzVlIHB5M2sKKzcyNTQ2IDI4MWQyZTIzYmRiMmQzZmMyNTk3MWZmOTA3NTQ4ZjA0ZjdjNGVhZGYgcmVsZWFzZTMwLW1haW50Cis3MjU0NyAxOTI3ZThkNzkxNDc3OTU3ZDE5OTc5YTUyMGU1NDllMTJlMzE2OTA0IGxlZ2FjeS10cnVuaworNzI1NDggNGFlMDFhMjQxNjUwZDU2NDhmODNkZThmMTQ3MGUzZjc1ZGJiOWM3MCByZWxlYXNlMjYtbWFpbnQKKzcyNTQ5IGY5ODIyODlmOTNjZmI4ZTM0ODBiNzUyYWUyNjk5YmFlYjk4ZGU3OWUgcHkzaworNzI1NTAgYmRjZDA1YTgxYWNiYTBlZTM4OGJlODBlMzUyNmE3ZDQ3NzJkOWU5YyByZWxlYXNlMzAtbWFpbnQKKzcyNTUxIDYzMGU2ODExMDBlMDhlNDkyYTg1MDI5Y2NhODdhZGNiYjBkOWE2YzIgbGVnYWN5LXRydW5rCis3MjU1MiBkNjVkNzE4OWRlMzJjZDNlYTU2M2U0NjM1NWJlMTRiMjg3NWQxZWVmIGxlZ2FjeS10cnVuaworNzI1NTMgYzc0NzFjOTExYWQyNGVlM2RhZjFlNjk5YTMyNzQyOTZhZDIxYjQ0NyBweTNrCis3MjU1NCBlYTJlNDI1ZDFmNjAwY2IxYmZhN2ViNTM2NjQwMzE4NDM2MTA3MmE5IHJlbGVhc2UyNi1tYWludAorNzI1NTUgZDAyYjBlNzA3Mzc3ZDNlYzY2MWE2OTM3NDNjYzRhNGQ4MmNkMDlmNSByZWxlYXNlMzAtbWFpbnQKKzcyNTU2IDZlN2M3ZjQyNDQzNmI2Nzg4MmI3NGI5MzljOGNiMGZlOWVkZjIxNDMgcHkzaworNzI1NTcgMzQxNjcyMTQ4MGIyMWM1Zjk2MmEzNmJjOTkyMjExYTcyZWRiMWI2ZiBweTNrCis3MjU1OCA0ZWJjZDAxNGYzZDA2YTA3MWRmNjE0NDQ4ZTc3NTlmYmZhNDUzMTY0IGxlZ2FjeS10cnVuaworNzI1NTkgMDQ5NWJjNDdjZDA4NmE5N2JjZGM4ODQzNWU2MzYwNjI5ODJlZTY4ZSBweTNrCis3MjU2MCA0YjQxNzQzZjY1MjdjYmM4ZjMxNDRmYjg1NTNhMzgzMjkzOTNiNTQ5IGxlZ2FjeS10cnVuaworNzI1NjEgNjFjNWJkYjI5NGY5NTE4NWE5ZGVmY2U1YTVkMGYzYjY4ODU2NjI5OCByZWxlYXNlMjYtbWFpbnQKKzcyNTYyIGYyMDA5MzcxOWMwZWZmMTA1NmM4NjUyYmMyMDY5ZTU3YmY0ZWVkOTcgcHkzaworNzI1NjQgMTE5ZjQyMzJhZjQ2MTgwYTY0ODY5NzNjNjliY2FiNmVkNDMyZDE0MCBsZWdhY3ktdHJ1bmsKKzcyNTY1IDk0MTRjMmIxOTIzZWRlYThkMzVjYzc5NTBjNDM1ZTRkZjQ2MzJhZTYgcHkzaworNzI1NjYgMzVjNmQ0MDdkM2M5ZWQ0MGIwMjNkZTBhNDNhOGI4ZjNlNWI1MmEzYSByZWxlYXNlMjYtbWFpbnQKKzcyNTY3IGU5ZWRjYWY0MjU0NzNkOWYxYWE2M2Q4NDNmNTVkODI3MWQwODVlMjAgcmVsZWFzZTMwLW1haW50Cis3MjU2OCBjMmUyYjQ3YTg3YzE0N2I0NGJiN2M1Y2NjMDI1ZDk2YjI3NTViNzg3IHB5M2sKKzcyNTY5IDhhN2U4NGFlNDZjNWRkODU2ZjM5MTlhN2U0NzFmZGM2M2FjODI2MWIgcmVsZWFzZTMwLW1haW50Cis3MjU3MCBjY2ZjYTI1ODc4ODUzZTkxN2NmMzE3M2Q1ZDNjMWEwNTA0OTZmMmExIGxlZ2FjeS10cnVuaworNzI1NzEgMjIyNzdkZmZjNTcxY2FlN2ZiZDgxYTUzNTg1NDNiNDFjMGRjYjk0MSBsZWdhY3ktdHJ1bmsKKzcyNTcyIDg5MzA1NDhhZjczNGUwMjZmMjZiZDRjMGExMjhhNGRiZjhmODY4YzYgbGVnYWN5LXRydW5rCis3MjU3MyA4NDYxNmViZjJiNGZjMDg3Yjg4NzZkMDhmNTRmZDhkYTg0YTE4M2E0IHJlbGVhc2UyNi1tYWludAorNzI1NzQgNWQwZjVjNTcxMzU3OTdlOTc4NWJhYmRkNDBiMWZjODNlY2Q1ZjQyMyBweTNrCis3MjU3NSBhMjZhZjg1YWI4OTUwYjVmMmM3MTA4NGU2ZmNlMWNlZDQxMmM5ZDBhIHJlbGVhc2UzMC1tYWludAorNzI1NzYgNTljYjljMDc0ZTA5N2FjN2MyYjdlYjQ0YzIyZjI3MWUzYjJhODU0NiBweTNrCis3MjU3NyA5NDJmMmQ2ZDVjNWNjM2M2ZDJkMmVjNWMwNzFiNWIxODQ5Y2MzMzkzIGxlZ2FjeS10cnVuaworNzI1NzggYmQ4MGZiODM2YjllOWZkODU4YWQ1YmJkNTBhNGVlNzM5OWI1ZDRiYiByZWxlYXNlMjYtbWFpbnQKKzcyNTc5IDU0NjA0Njg4YjNlOTdiZDMwZjMwNmU3ZDNhNzI5Y2IwOTQ5NDI1ZTEgcHkzaworNzI1ODAgMTM1NzMwMzQxMTQ4N2M1OWRjNDY1YmFkZWRiNmFkN2JmYzVjMWI3YSByZWxlYXNlMzAtbWFpbnQKKzcyNTgxIDI1ODIxOTY0NmUzYWRiOWRlYzIwMGI0YTc4M2QzN2MyNzhhOGZkODEgcmVsZWFzZTMwLW1haW50Cis3MjU4MiBkZmU1ODY1ZTVmOTgwOWNjNWU0YmFmNzEzNzUwNWU2NDFhOTYzOTVjIGxlZ2FjeS10cnVuaworNzI1ODMgYmVhYzBiNDFjZmIxNGZlYzEwMjY0ODEzYmRmZWE0YTYwYTVkMjk5MiBsZWdhY3ktdHJ1bmsKKzcyNTg0IGVmZTEyYWE4ZWYxOWNkMTUxYTYwMGQxYjQzYjYxNDNlYjUzMDk0MTkgcHkzaworNzI1ODUgZTgyMDlhYjQ5NjkxNGUyODM4MDQ1MjQ2YjAwOWI0OWZjMGQ3OWJiMiBsZWdhY3ktdHJ1bmsKKzcyNTg2IDE1YThmNGYyYmM4NDg0NWUyMzllMzBlNWYxMWI2YWU3ODQyZGY3ZTEgcmVsZWFzZTI2LW1haW50Cis3MjU4NyA5MjRkYmI3ZmM2YzU3ZmIwNjFiOGFhNjQ3NTIxYjU1OTU1N2RhMmE4IHB5M2sKKzcyNTg4IGI2Mzg1NzAzNzAzZTFjYzc4MWQzNWNkZWU0ODk3OGMxZTRhYjA5YmYgcmVsZWFzZTMwLW1haW50Cis3MjU4OSA1ZmNlMTRlMWQ3MDMyYzJjZWUzMzAzZTk1YjE4Yjc5OWMwZTlkMmU5IHB5M2sKKzcyNTkwIDc4ZmI3ZjhjZDM0OTIyZGYxNTcxZTJhZTkwNWM2NGFhN2FiNjVlMmUgcHkzaworNzI1OTEgYzJjOGQwZGRmMTg3N2E5YmFlNGU3MjViMWU3NTVmMmMzOWU1OWNhZiByZWxlYXNlMzAtbWFpbnQKKzcyNTkyIGQ4NWJkNDk5ZjNmNGVjZTdhMGQyYzA3MDNjYjlhNmRhNzU4ODllZjUgcHkzaworNzI1OTMgZDIyMTI0YzY0NGZmYTRiODQ1MDNjODY2YWMwNDQ0ZmU3Y2FlODBiYSBsZWdhY3ktdHJ1bmsKKzcyNTk0IDczNWVkMTc4ZGZhZTUyNWJlYzE5NDkyMThlZDI4NGE4ZGU3MTJmYzggcmVsZWFzZTI2LW1haW50Cis3MjU5NSAyYzFkOGYyZDM4Mzk4ZmYyOTVhNjgyYjdmZmQ2NTk4ZDZjNTA4ZmRmIHB5M2sKKzcyNTk2IDA1NDY4MDViMzAyMmEwNjVmODI1MTcwZTMzODdmZjk3MjllZTQ2ZTggcmVsZWFzZTMwLW1haW50Cis3MjU5NyA2NDE5ODI4ZWY2NWFjNDgxM2NjMTA1OTA3OTcyZWQ4NDA3YWM0MzgwIGxlZ2FjeS10cnVuaworNzI1OTggNGViZTZiMjYwYzU1YmJjMDM0MjRmNjc0ZGYzYWZiMzVkNjFhYzQ5ZSByZWxlYXNlMjYtbWFpbnQKKzcyNTk5IDE5ZTk1OTYyNjEwOWYzMjQ1ODNhN2IyZmM1N2E5ODViYWVkMjQ3ZDggcHkzaworNzI2MDAgMmQ2ZmY0YTk0OTUzY2Y5NDM1Y2NjZGQ2NmQ1N2RlODE5OGQwY2JlMCByZWxlYXNlMzAtbWFpbnQKKzcyNjAxIGJiYjkxMWY3YzBjMjlmM2NhYzI3ZmIyM2YzMGRkMmRkNTA3OTQ1YjIgbGVnYWN5LXRydW5rCis3MjYwMiBmNTBlZGQ0YmI0OGY4M2I4ODI4ZjhlZGU3Yzg2MGE4ODhhNGFlOWIzIHJlbGVhc2UyNi1tYWludAorNzI2MDMgNjg4ZDk0ZTg2Y2EyODhkZDQ1YmFkMzQ5NjQ1NWYyODdkYjhkODM2MSBweTNrCis3MjYwNCAzNWJhNjVmMWNjODE3OTYzNWRmMDYwMDU3ZTI0NTM0MmU3YzIwMGIzIHJlbGVhc2UzMC1tYWludAorNzI2MDUgMzQ3ZTU5ZWExYTcxZGE2ODFkYmZlNmI0Mzg5ZTIxNzU0NjcyMzZmNSBsZWdhY3ktdHJ1bmsKKzcyNjA2IDMxOTUyNDUyNDg1YmZhMmI0NjBhNDVjZGQyN2E0ZTliYjZkYzMyMTggcmVsZWFzZTI2LW1haW50Cis3MjYwNyBlOWE3YWVlOGU4MDA0MWUxMGQyNDYxMzg1MGRmMGQ2MWZjOGFlZDY4IHB5M2sKKzcyNjA4IGJkMmY3ZTEzZmQ3M2VkZmQwNGVkN2Y1Y2Y1ZTMwNjIzMTA0YTUzNTIgcmVsZWFzZTMwLW1haW50Cis3MjYwOSAwMjMxODc2ZjMxMDQzZDE4ODYxMzgwMmFiNjU2ZmZlZmI0MmJhNTIxIHB5M2sKKzcyNjEwIGM1MTgwODI2OTIxNGQyMjMwODBkYjY0ZDViZWFkZWE2MWU0NWExMTkgbGVnYWN5LXRydW5rCis3MjYxMSA5MTM3N2RhNTRlZGU5NTg0YWVjMDRjMTk1NTliZjZkY2IxMzJiYWMxIHJlbGVhc2UyNi1tYWludAorNzI2MTIgODgyZDk3OTU0NTI2MGFiNTYwODRmN2EwNzdhYTViYmRlZmZkYmYwNyBsZWdhY3ktdHJ1bmsKKzcyNjEzIDhmNmU5MTIzNzAyNzQyMjgwM2FkYjdkNWQ5ZGI4OTBmZjU5Mzk0ZDcgcmVsZWFzZTI2LW1haW50Cis3MjYxNCAzMjNlMWQ4NDhiNWZmZmFmNzIxN2M3NTU1MDY4MThjYWM1ZDA4Y2JiIHB5M2sKKzcyNjE1IDhjN2NjMTZkYzc5YzQ4ZWQ3NWNiN2ZiZjI0YTM5ZmUwYzU4M2IzMTcgcmVsZWFzZTMwLW1haW50Cis3MjYxNiBhNmM0Y2RmZGE5ZDZkNTA3OTU2ZDcyYzEyNWVmMGQyN2Q0NmNiMWJhIGxlZ2FjeS10cnVuaworNzI2MTggYmY2OTkwMjY0NThlNDkwMjRhOThhMDZmMjBjODYyMGNlNTVhYjM5MCBsZWdhY3ktdHJ1bmsKKzcyNjE5IGRkZWU0ZDA1ZmExN2VhMWRhNzFjYzE2ODZjYTM2MWE2YzQ5MWM3ZWMgcmVsZWFzZTI2LW1haW50Cis3MjYyMCA3ODE0YmU2OTY3YjhiYTA4ODU4MWZkY2EwOWU4ZThhMWMwOTY2MzUxIHB5M2sKKzcyNjIxIGJlY2E2ZDdjY2M5MDc3MWVjZGU5OTYxNzU3NWM4ODMwNjYzYTg4OGIgcmVsZWFzZTMwLW1haW50Cis3MjYyMiAzYTVmNmI2MzM0OTkzNDk0Njk2MDI3Yjc3NGVlOThhODM2MDBiZTNhIHB5M2sKKzcyNjIzIGE2OWU3Y2MwNDliYjVlYzk5ZTc4NGU5Mzk5NmRlZjE0ZTI4MzE5ZjQgcmVsZWFzZTMwLW1haW50Cis3MjYyNCA2N2JhZjJjMTczNjlmODRmNmU2YzM4NTlkOTQzOTEwMjc4MjkyOGVkIGxlZ2FjeS10cnVuaworNzI2MjUgYjA1ZDQ3OWQxY2IwYWRmYWJhODllODUxMThhZmUxNjMwYWVhOTU2OSByZWxlYXNlMjYtbWFpbnQKKzcyNjI2IDM5MWRiODBkMWFmNGNmMjZjYmJiM2E5YzhiNDMwNjAxYjc1ZjU4MDAgcHkzaworNzI2MjcgMzdmOTBmMmY0MDM0OWE4Y2YwZWZmYjZhZTgwZDEyNGNhMmZkODRiMSByZWxlYXNlMzAtbWFpbnQKKzcyNjI4IDFkMDQ4YzlmNDNkYzY2YTAyYjYyYzg3YzcyMmM5OGQ4NTBiOGY5NTIgcHkzaworNzI2MjkgYWE3N2ZkODYyNmJhOTc3NzEwYzcyMzY2ODY3MjVkZjk0NTc3NjU1MiBweTNrCis3MjYzMCBlOTYyMTI5NjY1ZDgwNDQ3NWIyYmYxMTY1NjlhMzllNTNmM2Y4ZDNiIGxlZ2FjeS10cnVuaworNzI2MzEgOTBhODEwMmQ3ZWZiZDY5MDBkZDEzYWI4MDZmNjk2YjVjYzdmYWUwNyBweTNrCis3MjYzMiBjNzJkNGZjZTMwMDA1OTdkYzEyNTkxMjMwNWRmYWE2MTM4MDFkZGYyIHJlbGVhc2UyNi1tYWludAorNzI2MzMgNmQ2OTE0MTc3ZjYwMjY2YjVkYTA0NDczMzk4ZDZjMDc1NGFkYjljYSBweTNrCis3MjYzNCA5MTAzMDkyNzYzNzY3NGRmNWIxMzIxOTdjODZlYzBhYTZmNGZmNGVhIHJlbGVhc2UzMC1tYWludAorNzI2MzUgMDdiNWYyMGQwMjVhODdmNzkzYjZhMzEyZjk0NzA3ZGZhZDcxYThhYiBweTNrCis3MjYzNiAzOGUzNTQ2MDljZjJkNTY2MmZmYzg4YzA1OTI1Y2JiNzUxMmQyMDQ2IGxlZ2FjeS10cnVuaworNzI2MzcgMmE3Y2UxM2NlYTI1MDgzZjk5NjJlYWUxYmE3NTA5ZGZkNzUwYmVlZSByZWxlYXNlMjYtbWFpbnQKKzcyNjM4IGU2OTEyMGJlNjVjNDUyNzkwOWQ5YTFmMDI5MTA0OTdmMWQxNDA3YzIgcHkzaworNzI2MzkgMGZjZjJhY2RlNDczNmQyYWRlMDhmNjdmMmRlMzQzZjY5YWE5YTcyOCByZWxlYXNlMzAtbWFpbnQKKzcyNjQwIGU0ZDkzN2Y3ODlhMTEzMTRmZTFiZDJlOGIwZWFkZmMzMTRiMDNiN2QgbGVnYWN5LXRydW5rCis3MjY0MSA3M2Q5Yjk3MzU0MjQ4YTkwYTg4MmY1NDFmZjcyMTE2NWMwODExYTQ0IHJlbGVhc2UyNi1tYWludAorNzI2NDIgM2M0YjFiNDUwMWMxYjRkODcyMzJiNGI0YTg3YjQ1YTUxMTc1ZDUxYiByZWxlYXNlMjYtbWFpbnQKKzcyNjQzIDZiZTU4NTRlNWRmN2FhYmFkNjI0ODVhNzMxN2E3OTEwOTBjMjkxNDcgcHkzaworNzI2NDQgN2UzZDdiNTIyNGIxZWFiNmFlYWQyMjNlMDI0MTk4OTIzYTNjNGU5NSBweTNrCis3MjY0NSA5MWVhOGZjZDQ1N2U1YzE0MjM0Yjk2ODhkODk2YzQ0MWRjMTEwMTBmIGxlZ2FjeS10cnVuaworNzI2NDYgYWIzMGIyMzdiNjAwMDliNzI3ZjhjYWJjOGNiMjNiNTRmOTJmMDhjYyByZWxlYXNlMzAtbWFpbnQKKzcyNjQ4IDE3ZDE5NDY1NDBkNDc4NzE5NjAyZWE1NGJiNjg4ZmFmMDE1NGMyOGUgcHkzaworNzI2NDkgZWUyMTU2NDlmYWUwNjA4Y2M0ZTkyNWYzM2E0OTI4ZmRlZjFjMmI0MCBweTNrCis3MjY1NCBmYjAxOTcxOTQ5YTU1NDU1MDIwZDRlYTAzNzBmMjQ2MDlkNzhkZjEzIGxlZ2FjeS10cnVuaworNzI2NTUgZTQ1MTg2ZWRhYzkxOWFkYmFhNzY0OTk4N2NmMzNlYTAxMWNiMzFhOCBsZWdhY3ktdHJ1bmsKKzcyNjU2IGY3NmYyM2FmMjI5NWFlNTM2ODU4ZmNiNWE0MzVmNDUwNjczMjMxOTYgcHkzaworNzI2NTcgOWQ1MDM3MDc0NDRlNDE4NzhiNWY2YjgzM2NlNjM2NDI3ODU3NTc2YyBweTNrCis3MjY1OCBiNjAwZTUxMDNjNjNlMjNlYmQ2Yjg2OWI2OTg1NThmNGUwNWIwM2U0IGxlZ2FjeS10cnVuaworNzI2NTkgYjMzYjQyNDliMTg1ODUyMjA4Y2Q4NWExMWY5NjE1ODg1ZjhkNmU2MyBweTNrCis3MjY2MCBlM2RmY2QxZmUyMTBkNjU1ZTY5NmVjODFmM2E0OGQ0NmUwY2ZhNTU5IHB5M2sKKzcyNjYxIGE3YzM0ZjcyOGYwZThhZDEzOWFhZjUzNWE1MjZkOWYwMWYwZmMwNjcgbGVnYWN5LXRydW5rCis3MjY2MiA5M2VkNjhiOTk5ZTc1N2NlZTk4MjgyNTUzMzZhZTRkNWRkMmNlZWYxIGxlZ2FjeS10cnVuaworNzI2NjMgODhkOTY1YmU4NjE3MjVkZmYyMTUzNjJiMGIwMDI4YTBiZGFlOTkwYyByZWxlYXNlMjYtbWFpbnQKKzcyNjY0IGQ5MDJmMzQ5NDQ5OTYwOGMyZWMwNDM0NmRjNDY2ZjcyMTBlNDYxZWMgcHkzaworNzI2NjUgZGQ5MTU4ZmIwODY3ODNmNDhmOTFkYzkxNjliNDJhYzgxOWU1NzQzZCBweTNrCis3MjY2NiA5YmIyYTEzNzFkZGM0MDA1MThmMjBkYTY3MWU1Nzg2Nzc1MjM0MzFiIHB5M2sKKzcyNjY3IGU1ZjI4ODc2YWU2YzkzYmFlOWU4NzBlYjRkNjgxM2I0NDdiNWFlOGQgcHkzaworNzI2NjggMGQ4ZGI4MWE3ODZjNjhhY2YxYWZlMzdhMWVkOGRhNzdjZDg3Nzc3MyBweTNrCis3MjY2OSBjNDBmMTg3YWY2ZGRiY2Y3OThhMTc0YTJjMzhjYjY0ZGM2MDcxOGZlIGxlZ2FjeS10cnVuaworNzI2NzAgODVmYjRjMjI5YTljZWMyMWM4MTM1NDZlMjk4NjY2MmQ2OTkwZTRlMiBweTNrCis3MjY3MSBiNDI2MWRhNGVhNTBjMzc2ZjQwODQ2ZmU1ZWU5NjI2MTA4Yjk4ZjBhIGxlZ2FjeS10cnVuaworNzI2NzIgY2Q0YTc4MjdlZGI2OGE1NjlkMGRjNmE1ZTYyNjM0ZmY2YWU4NWY1YiBweTNrCis3MjY3MyAxOGIyZjJjZDA3NDFmNGEyM2QzZDBlOTIzYWZkOWE0NjYzNTRiNjNiIHB5M2sKKzcyNjc0IDk2MTA5NDcwNTM3MDI5MGNjNWZkNzgzODlmODI1NjAxMGQ5YTFjMzEgcHkzaworNzI2NzUgOTBlMmJmZTRmNjBlN2EyNTI0MmQyYjViMjgxN2E4OGI5Mjc1OTg2NSBsZWdhY3ktdHJ1bmsKKzcyNjc2IDM0YjYwYjczNmFkMzNkNTQ4MzY2NWU5ZDAzOWQ3YjE1NmMyMTIyODMgbGVnYWN5LXRydW5rCis3MjY3NyAyY2ExMThjYWFlNzE2YTdjNzZkOWYwYjhkYWVmOGE2NWUwMTczZmRhIGxlZ2FjeS10cnVuaworNzI2NzggNzkwOTkyYmVkZDYxZDFlN2FmYzEyZmRjZWM4NWI2NGJmZTBkNWI5ZCBsZWdhY3ktdHJ1bmsKKzcyNjc5IDhlOGU4N2MxZWNiN2VjNTdkZTE1MDNjMWQ0ZTA4MTE5OTdkNzJmYzYgbGVnYWN5LXRydW5rCis3MjY4MSBkNTE0YThiN2FlNzhhZTJhYmFjNTBkN2UyMzM3ZWY3ZmE2YTJkMmRkIGxlZ2FjeS10cnVuaworNzI2ODIgNDNmYzQ1ZDNjYjIxNmI1ZTU0ODY1ODEzZTk5NWVhYWExOWMxN2E5YiByZWxlYXNlMjYtbWFpbnQKKzcyNjgzIGFjNjYwZWEzNWY1MjVkYTM2MmMxYmI2MGZmMmM1MGM1NTFhOWM0ZDIgcHkzaworNzI2ODQgYzNkNGQ5M2M4OWUyNTdlZTZjYTAzOTZhYjE3ZThkZjM5ODVkOGE0OSByZWxlYXNlMzAtbWFpbnQKKzcyNjg2IGYxYmY1Mzg3ODZiN2M5ZWJiNWMyMWE1MTdlMGRjZGViYzg5Y2Q5ZmIgbGVnYWN5LXRydW5rCis3MjY4NyA5ODhjYTk4ZDkxOTYyYmZiMDJmZWJhNjRhYTYxYjA0M2NiOTFjNzg4IHJlbGVhc2UyNi1tYWludAorNzI2ODggY2E3ODQ3ZDNjNDUxOTRmMGI4OTRjZjQ0NTRiM2ZmM2ViYzRiNTk5ZiBweTNrCis3MjY4OSAxZjhhY2NkMWY0MmFkMDA0ZWZiYzJkMjVjYTg1ZjQ4ZTc4MmJhNzBmIGxlZ2FjeS10cnVuaworNzI2OTAgYWUwMDYzODZlYzM5M2IyNjM0ZjNhNjZmZjYzNGUwMmRiNzY5YzUzMiBsZWdhY3ktdHJ1bmsKKzcyNjkxIGY5Zjk5N2MxZmQ4MTNjNzUzMGE1NTZhZjY2MGMxNjc3ZjdlN2RmZjcgcHkzaworNzI2OTIgNjk1NjdhMDVkNWU2NTczNmRjMzA0YmI3OTU3ZDk5Mzg0ZGNhMzlmYiBsZWdhY3ktdHJ1bmsKKzcyNjkzIDNhYTZhODYzZmYwNjkxZTU4Y2RiMjU5MmIyYzQwNTIyZTk5ZGViODcgbGVnYWN5LXRydW5rCis3MjY5NCAxY2I4MDRhMmUwMzg3OTY5N2EyZDRhYTg5OTJiMGRmNDJlZGJkZTY4IGxlZ2FjeS10cnVuaworNzI2OTUgYTE5OGU4ZDM2ZWMzYjU3ODAxY2YyOTMyMmUzNjM1MDQ3ZDVlNWZmOSBweTNrCis3MjY5NiBhNTM1OTYwOTQ0NDQxMzg2ZTQ0NDdkODBlODdlMWU2NDkyNGUwMzIxIGxlZ2FjeS10cnVuaworNzI2OTcgODNkZDJiMjUyYTI3NjQ2YzhhYTE1NmM5NDhiMTE2Yjk0ZjMyODI5NiBweTNrCis3MjY5OCBkNjRkNDdlZTU0YTE4MTY4ZmQ5MmYyZWI0MTMzOGVjMmMwMGJlNmFjIGxlZ2FjeS10cnVuaworNzI2OTkgZGNkYTQ0OGNhNjZlODcyNmI2NjhmNmVlNDA2Y2I0ZTdjY2YyMWJkMyBsZWdhY3ktdHJ1bmsKKzcyNzAwIDBlM2FjZTlmNzUxNmRiNGZmNWRmOTNiOTAzZjYxZGQyODMxMWY1OGMgcmVsZWFzZTI2LW1haW50Cis3MjcwMSA3N2NmZWY1OTZkMzM1MGI1OTcwMmRmMWQ0NTMyZTNiZDcxMDJjNTkzIHB5M2sKKzcyNzAyIDkwMWI0ZmZmZWExZjgwZGVjYWI3MjRlMzQzMjY4OWZjNzUyNjdmMTAgcmVsZWFzZTMwLW1haW50Cis3MjcwMyA5YjkyZDJiODZiYWFlZjIxMTRlMDhmODgwZTVkZTk0N2E5Mjc4MDIxIGxlZ2FjeS10cnVuaworNzI3MDQgZDI3MzJlYTk5YmEwODg4M2Y1OGNjMmI0Y2NiNWI2OWFjNzYzYzUyMCBweTNrCis3MjcwNSBlOGYxYTAwNzc3MWFhOTBiOGYwOTJjOTUxMjAzMmM0ZWYwMjE1MDUwIHB5M2sKKzcyNzA2IGIyMmIyZGFhZWI0NGYzOWU5YjMyNzRjY2YwOWExMWU5ZGUzZGIwMDQgcHkzaworNzI3MDcgZDg0MWY5NzI0M2I1NzRhZDg1MzNlNjk0MDg3OTA5ODhlMmI2YWZjMCBweTNrCis3MjcwOCBiNTJiOTJmMzFmYTg4OWMxYTU0OGFlZWUxYmNmMGM3NmFkOGFlYTNkIGxlZ2FjeS10cnVuaworNzI3MDkgZjQzZmMxMTkzYzJhYjM4ODQ3NTY5ZGVhNTlkNjcwMDkwZTkxNGQ1OSBweTNrCis3MjcxMCBlOWMwOGZmYTk4OTUxMzVhOGUxZDkzMjEwMzdhNjE1M2E2OTUwMmUxIGxlZ2FjeS10cnVuaworNzI3MTEgMTBjYTExZTU5OGU2OTNjZjM3MjY4MjRjYzcwODIzY2IwYjA2ODJjNiBweTNrCis3MjcxMiBjNWI5ODJhZjIwOWQ3YmMzOGIzNmM5MDJkNzhhYjNjYzkwYjIyYjBlIGxlZ2FjeS10cnVuaworNzI3MTMgZmU4ZDNmZDY2ZDI2NGVjMjA5MjNhZjlkYmQ4OGNmNmZkOWJhYzcwOCBsZWdhY3ktdHJ1bmsKKzcyNzE0IGI2YjQ1NGIwNmE3YjM1Y2ExMWEwYTI2NTE2Nzg2YjZiNTM5ZGY3MWUgcmVsZWFzZTI2LW1haW50Cis3MjcxNSBmYzc5MzVkZThlOGFkYThjNmM5NGQzNTM5NjhlNWE3NWFiZDYxNTE1IHB5M2sKKzcyNzE2IGQ0MDcyOTc1NWVkZmNjMjcyZWVjYWQzZjAxOTAwMjM0ODhmYTM4ZDggcmVsZWFzZTMwLW1haW50Cis3MjcxNyAzNWJjZTgwYTI1Zjg5OTg2YWViY2ExNDc4MmYyNGYzNTViOTU0NzU3IHJlbGVhc2UzMC1tYWludAorNzI3MTggOTliNDAwODYxNTQzZWE0NDIxNjdjZjk2ZjkyZTJjOGZjMmVhOWE0MiBsZWdhY3ktdHJ1bmsKKzcyNzE5IGFkYmM2NjJmZjRjMWQyOGFiYmQwNTIxZGI1NzJhMGZjMWJhMTdmNWUgcHkzaworNzI3MjAgMGU4YzhiMGQ4NjY5ZTQ5ZDU4MWI1ODQyMGIzZTI4Y2FiY2Q3MDNjNCByZWxlYXNlMzAtbWFpbnQKKzcyNzIxIGYyNTM4MTgzZDI2MjFmYTAwOWFlMmNkZDcyZDI4MTFiMzMzZTkxZDUgbGVnYWN5LXRydW5rCis3MjcyMiA5ZDgxZTJjNDM4ZGI5NzFiNWNiMDlhOTA1ZWViMWFmM2ExNmE4ZmU4IHJlbGVhc2UyNi1tYWludAorNzI3MjMgZTIyMTczNjFlYjM3YTdiYzg0ZjE3MTI2ZWRjOGY2ZWZhZDgyYzBlZCBweTNrCis3MjcyNCAxMDhlOTBiODkyM2VhMmVhOTVjZTBjYjE4ODhjYmVjOWQxMzI2ZTVlIHJlbGVhc2UyNi1tYWludAorNzI3MjUgODA2ZWYzYTFmODU4ZDE0MjZiZGMzMGI0OTNkMjQ5ZGQ5YTZiNGMyOSBweTNrCis3MjcyNiAzNjc4YjJkMzYwYzY5ODU0ODlkNTA2MTE5NjliM2JjODE1NjExMDg4IHJlbGVhc2UzMC1tYWludAorNzI3MjcgZGYzODI2NDcyZTNiZjkxY2RlZDdiOTQwZWQyYzViOGU4NmRiMjlhYiBsZWdhY3ktdHJ1bmsKKzcyNzI4IGYwYjA5ZDA1MzljMDk5NTc0Zjg1NDI1OTViZDE5MTkwY2RhZWIwOWEgcmVsZWFzZTI2LW1haW50Cis3MjcyOSA1NmFkZjg2NGYzODA4ZGQyMjhiY2E4NGE5YTk4OWRmOTZlNjFkZjYxIHB5M2sKKzcyNzMwIDhmZmVhZjY0OTk3MDhlZDZmNzZjYjAzNGNkYTM4YzIyM2Y0MDI5NTUgbGVnYWN5LXRydW5rCis3MjczMSBjMDA5YjJiMzQ4MWY5Y2ZjNWVkNjIxOTlhNTllMDA0NDRiYzNjZjJkIHJlbGVhc2UyNi1tYWludAorNzI3MzIgODc4MzA0NjFhYjQyOTcyYzgxZjM2ZTI2ZTkwYWRiNmFkZWU5MmQ0ZSBweTNrCis3MjczMyA3NmE5ZjljYjQzOGY1MDkzZjNlYjA2MWFkNmJjZDNiZGNhZjA5YzYzIHJlbGVhc2UzMC1tYWludAorNzI3MzQgNzExNmRlM2RiZTk4M2E2ZGYzOTUyN2MwZWIyMmI1MDFjNjRjMzBlNyByZWxlYXNlMzAtbWFpbnQKKzcyNzM1IGY2NWRlMzZmMTg1YzVjZDUwM2ZkNjAyNGQzMTQ3NWNmYTg3NzlmMjggcHkzaworNzI3MzYgMTc4ZjcwZmM0NzhkNzk2YjZhOWE5ZWUyN2M4Y2NjYTMzMjEzMWNlOSBsZWdhY3ktdHJ1bmsKKzcyNzM3IDNiZmRiOGQ3MjU2MGZjZmIyZGM3YTBhMjM5NTkzNDRhMDQxNmU4YTkgcmVsZWFzZTI2LW1haW50Cis3MjczOCBmYjU5YTUyNjRhZTI1Yzk1MDg4YjU1YjM0NzY4OGFmZWJiYTM4N2QwIHB5M2sKKzcyNzM5IDgxYzU3OTAwYTE4MjVhODAzYThmZDhiYTA1M2YwNmI4ZWUzOGJkMjggcmVsZWFzZTMwLW1haW50Cis3Mjc0MCBmYmIzMzM5MGIyNTQ5YjJmNGUwNTA5NWM2NmU4YjFlODg3ZjE3YmZjIHB5M2sKKzcyNzQxIDkwNGExYmQzNWUwMDg5MmI1NGM4NzBmNDRlZTIyYTllNWZmMDI1NDAgcHkzaworNzI3NDIgZDE0M2ViNjI0Y2Y1ZTJmYmZiOWMyZDNmYmUyZmYwMjE0Y2EzMWMxNCBweTNrCis3Mjc0MyA3NGI2NzQ4YjYzZjVmY2FiMWYzMGRiNzdmYzZmZDA0NTYzYTlmYjIyIHB5M2sKKzcyNzQ0IGQwOTk0YTQyYjU5NzViMjYwZTc1YjgwMTMwNDg3YThhN2MxYTY1MTAgcHkzaworNzI3NDUgNDFhNjkyNjI3ZWViM2M1MzM4MDQ3ZjE0N2ExOWNmNzY5N2FhZmRlZiBsZWdhY3ktdHJ1bmsKKzcyNzQ2IDdjYjBhNDU0N2YwYTBmODMyYmY2NmU3MzZjM2U4ZWI2YTMyYzdlM2UgbGVnYWN5LXRydW5rCis3Mjc0NyAwZmZjOTU1ODdkN2M0NTYwMzQwNWFiYmM4OTcwNDUxYzlmMTViYzQ4IHJlbGVhc2UyNi1tYWludAorNzI3NDggMTdkMDc4YzVkNjViNTIyOTlmMTFiY2M4NmY1NDA2YTk1NGE0ZWI5NSBweTNrCis3Mjc1MCA1OGQzYzQ1NGJjMzcyNDM4YjdhMjgxNjU2YjczNjdmYmFhMTY4ZDYzIGxlZ2FjeS10cnVuaworNzI3NTEgZjkzNWI5NTk4MDM5OGQwZDFhZjQyNWYxMjFmZWJlMTFmY2RiYWFlYSBweTNrCis3Mjc1NSBhN2FkMTY5Njg2NmI0ZGQ5NjkyZjFkNDUxMWI4ZDA2NzljYmNjMDdmIHJlbGVhc2UzMC1tYWludAorNzI3NTcgMmI3Y2I0MmRkZTExNjdmMDU3NzU3MDU4ODQ1OThjNGYwNjk2YmYwZiBweTNrCis3Mjc1OCBlM2JiNmI2MmJkMGY1MDc1ZDU3YzllMzFjMTRlMmJmNGJmNjFiNjM1IGxlZ2FjeS10cnVuaworNzI3NTkgZDQ3M2ZiYTRlYzY3NTdiMDg1NDAzODI0YWYxZDBjNmY5MDQ3NjE3MyByZWxlYXNlMjYtbWFpbnQKKzcyNzYwIDk0ZDI4M2QzZDAwYmY3NGI3MTc1MDc0MGEyOWQ1ZmMzNDQ2MTA5MTIgcHkzaworNzI3NjEgNmEzNTlmZDI0NjY5M2Y0OWFmNjQwYjBjM2EyM2Q2NjUxYWM3NTE1ZSByZWxlYXNlMjYtbWFpbnQKKzcyNzYyIDE3MGRkZjk2MGZkZGQ4ZDkzOTIwNTc5NDE4OTk3OTVmNTY4NzQ3MjkgcmVsZWFzZTMwLW1haW50Cis3Mjc2MyA3MWVjNGZjNjgzYWY5MjYzNGJjMzA5NzA4MzkwYmE5MThjZDYwOTM4IHJlbGVhc2UzMC1tYWludAorNzI3NjQgMTQzYWVjYzgwYjZiNmQ1YjAzNDM1NmM5ZDdhZDZmMDBmMjVmYzIzZCBsZWdhY3ktdHJ1bmsKKzcyNzY1IDJkMDZhMzJhMTJlMzcwNmZlMGI1ZDMxYzA2NWNhMTQxMjQ5MGUzMzggcmVsZWFzZTI2LW1haW50Cis3Mjc2NiA3MzdiM2Q0YWNiYjlmYjcwMTdhZTQyZmU4YzA2M2Y3YTJkZmQ5ZWY0IHB5M2sKKzcyNzY3IDY4ZGNlNjU1MDZkOWZhYWIwMjZkM2Q0ZDZkZjk1NTg4YjNlODkyZDEgcmVsZWFzZTMwLW1haW50Cis3Mjc2OCA4ZDI2MWI3NmRhNDZiZjk0YjYwZWYxZjMwZTEyMzBlZWFmMTMxOGEyIGxlZ2FjeS10cnVuaworNzI3NjkgY2VlODBkMDZmN2NlOWM0NjM4YWRmYjFhZWY1YjhjZTFjMDk2YjhkZiByZWxlYXNlMjYtbWFpbnQKKzcyNzcwIDlhMDdlOWQ2MDkzYWRhNDJlMTFkNDhkMDI3YzYwOTY5ZGVjYjcxY2UgcHkzaworNzI3NzEgN2ZmN2JlZjMyOTExNjk0NDMxYzE3NzBiNWZiN2Q2NTk3NGE1YjVmNSByZWxlYXNlMzAtbWFpbnQKKzcyNzcyIDAwZWJiZjFjZTkzNjAyNjgwMjlhMmFmMjc5OWY2YmExM2VlZTZmMmUgcHkzaworNzI3NzMgYWUyMGYxZWJlYzIxY2NlYTM4OTM4YTZiZjY4MTVlMDBiMGIyY2U1MyByZWxlYXNlMzAtbWFpbnQKKzcyNzc0IGRhY2FkNDI4MzZkZDYwMGM3ODk0YzBmNDhhYTUwZDAyY2YyNTc5ODEgbGVnYWN5LXRydW5rCis3Mjc3NSBjMTM2ODg3ZGI3ZWZmNGNiMDFmYzNlMWUzNGRjNWU5OWQ4NjViN2M5IHJlbGVhc2UyNi1tYWludAorNzI3NzYgZDgzNTBkMDQ0Y2YyMjhjZDZmOWY3Y2RiNzY3MjMxZDMxMjMzMTQxMSBsZWdhY3ktdHJ1bmsKKzcyNzc3IDYzOTUzNDdjMDI3NjI2YWQzZmQ3YjVkMzUwNzc5ZTk1ODcyNTEyZTggbGVnYWN5LXRydW5rCis3Mjc3OCA5NDVjNjU3NDQ3ZDIxZTY2NzhkODQ1NjUwYzA5ZTFjZWZkZDFjMjI0IHB5M2sKKzcyNzc5IDhmMTczNjNiOTNlNmVkMWM0YTdjYjI2ZjFiNjYzZDIyZGEyOTFmOWYgcHkzaworNzI3ODEgODgzYWNlN2VhNDQ2NjY0MGVhMWU3ZjZlNjM0MWViNmFkZWU5NTYzMiBsZWdhY3ktdHJ1bmsKKzcyNzgyIDI5MDFiMTNmYmQ3ZTYyZTRmNmIyMjhiZjhjYTJhMmI4Mzg0MmM1ZDkgcmVsZWFzZTI2LW1haW50Cis3Mjc4MyA5Mzk0YTgyZDhkZTE2OTVmMmUxOThiNGNhMDMzNjIzMDk3ZDhjNGY1IHB5M2sKKzcyNzg0IDY5ZTk0MzRlNDUwYWRlYmRjYTJhNzkxNjJlZjQzNTEzMjI5NzQ3MjUgcmVsZWFzZTMwLW1haW50Cis3Mjc4NSBmNzY1MGEwZTkwYWRiNWY2Yzg0ZmY0MmExMGM0YTIxZGJjNGExOGI3IHB5M2sKKzcyNzg2IDc0YmRiMGU1MjEyYmRmMjIxNmQ1MTRhMzc3ZWI2NDY4NTkxMWVmOWEgbGVnYWN5LXRydW5rCis3Mjc4NyA3NmM0NDE0ZDEwYTZjMWMxNjJlNDU0NWEzYzBlNWM0YzUyMTgxMTYzIGxlZ2FjeS10cnVuaworNzI3ODggNmZkMDA5ZWMyMjRhNzM5ZjhmZDFkZGNjMTU1OWFjMTBmYWY1MGM0MSBweTNrCis3Mjc4OSBhYjIzZmYyMDQ3YWEwZDhhOWE5NWQ2NDc0NGQ2ODZlMjAxZGIxMTdhIGxlZ2FjeS10cnVuaworNzI3OTAgYzdmZDc0MWM3MmViZWJkZjRjMmE0N2M5YzdlZDFmMGEzNjJlNTU3OSBweTNrCis3Mjc5MSAwNTYyODNhNWM1ZGEwMDJlZGRhMWZiNmZmNmRiMGUwNmFjNzNlNWZlIGxlZ2FjeS10cnVuaworNzI3OTIgZjI3NWQ2YTBhMWQxNzc5NzNlNDE0MGFiYTAzMTE5NDA2YzhmMTFlOSBsZWdhY3ktdHJ1bmsKKzcyNzkzIDZmYWI4YmQxNWQ3MTBkODUxNzdmZjdmMWJlMmE4M2Y1YmMwMjhjZjMgcHkzaworNzI3OTQgYTUyY2VjYWJmZmQ0YzMyODAwMTA0M2U1OTRiODMxYzM0YmE0NDRjZSBsZWdhY3ktdHJ1bmsKKzcyNzk1IGJkZGYxMWU2MjIwMDAyYTkyZjY1NjAwNzBiOTc4NTdkZWRiNjgzNGMgcHkzaworNzI3OTYgNGNlZWVmYjg1NTVlNjM5YWE5Zjg4N2U0MWMxNGVjMGYyMWMyYzZiZiBsZWdhY3ktdHJ1bmsKKzcyNzk3IGFkNzcyMjYxMTFiMjYzMGFkYjM2NTViM2Q1ZTE2MzE0MGIxNzI2MmIgcmVsZWFzZTI2LW1haW50Cis3Mjc5OCAwODNiYTI0OTA1YWQ5MTk3ODI4ZjI0YTU2MWZkZGY2MzFjY2QwZmI1IHJlbGVhc2UzMC1tYWludAorNzI3OTkgNGZhNGNhNDUwM2M4ZGY2MWU3OWJlMDRkMzUwYmFkMzk2OTI4NmY2ZiBsZWdhY3ktdHJ1bmsKKzcyODAwIDdlMmE2YzFkYzlkMjIzNjNmOTFiOTJjYWVhNGYzZGQ1OGJkY2U5NjAgcHkzaworNzI4MDEgNmU0MGFkZDNlZTAyYTdhZWNjMzA3NjFlYTg1NzY0OWVlOTc4MzdkMCBsZWdhY3ktdHJ1bmsKKzcyODAyIDAyM2EzNDI4ZjFhZWY2OGQ0N2ZhYzcyMWQyYTk4NTQwYjk4NzllODIgbGVnYWN5LXRydW5rCis3MjgwMyA2NzBmYTBjMGZmOWFmMmU2NzExZmZkZjdkZTNjODA3MjYxYWRlODQ0IHB5M2sKKzcyODA0IDg5MjEzMDRiNWY5MjJhNDE1YmRiN2EwZGQyNGIwYjk3MDJhODZkYzEgcmVsZWFzZTMwLW1haW50Cis3MjgwNSBkMmNjZDg5ZThlNmI5NTEzZDJlOGM2NDllZDY2ZTkyYThiODAyNjliIGxlZ2FjeS10cnVuaworNzI4MDYgMzc5ZTYzYmNiZDA0NDhmNmEyMDY3MWVjNjllMzgyNGRkNGVmOGFlYiBweTNrCis3MjgwNyA5M2Y0YTlhZDI2ZjY4ZDMzYmY4MWI4MmEwOTM0ZjY0MTE4ZmMxNGJmIHJlbGVhc2UyNi1tYWludAorNzI4MDggYjMzMjZmZTYzMmU1YTc5M2UxOTZkOTE0ZWQzODBjMmE2YjU0NjA2MCByZWxlYXNlMjYtbWFpbnQKKzcyODA5IDJkNmZmZjlmZThhYjczNmZmMjFhNThhYWY5ZTZmZTU5YmUwYThkNGMgcHkzaworNzI4MTAgNDUwMWI2MzhmYzNmMjk0MGQzMmJlYjZhZjY2MTVmYjFiNzc3OGZhNyBweTNrCis3MjgxMSA5ZDY0NTdmM2EzZWRmNDVhMGUyYzk0OWVmYjBmZDQ4ZGY1MzY1ZWRjIHJlbGVhc2UzMC1tYWludAorNzI4MTIgZWI5YjFhYzNkOWQ4NzA0NmZlZmNlNTY2OGNmMzBhMTlhZTIzZTFkOCBsZWdhY3ktdHJ1bmsKKzcyODEzIGNjMDU1NzM1NjAxNGJkNWViZDdmMmE3NTFkNzNlOWY2OWMxMjU0ZWIgbGVnYWN5LXRydW5rCis3MjgxNCBkNjFhYjA0NGZkZjRkMTgwYjU0ZTQxOGQ3NDk5NzFiODQxZTAxMGVhIHB5M2sKKzcyODE1IDYwNDQ0NDUwMmVhMDI3N2YzODgwMzU4NDIwNWU1ZDk4ZjUyN2RjMWQgcmVsZWFzZTMwLW1haW50Cis3MjgxNiAyYzM1YjgxNmFjMGRhYWRhYjljMGMwODIwYWViNjFkYTQxZDk1MDc1IHJlbGVhc2UyNi1tYWludAorNzI4MTcgMWI2MmJmZmQyZWYyZTBkNWZlMmJmYTQyOGNjZThiZDY4NjgzZTljMiBsZWdhY3ktdHJ1bmsKKzcyODE4IDQyZGJiZWU2NmMzMjJhYzY0NTkwZjUxYzI0ZDZjZjhkOTliMmM0NDYgcmVsZWFzZTI2LW1haW50Cis3MjgxOSA0ZmJjZTZkM2ZlODYxZGU3Y2Q1YTc2MGM5NTA3NGIxOWM4YjdiYmZjIHB5M2sKKzcyODIwIGZhZTNhNzdkMjAzMjE5MTk3YzBjNmU5MmM5NTk2NGVjOGI0ZmQwYWQgbGVnYWN5LXRydW5rCis3MjgyMSBiNjZkYWZiNDA2NDk0MzM1ZThiMzNlZTViMTI0YzUyMDA2OWIzZmRlIHB5M2sKKzcyODIyIDYwNzRmYjQxMTYyMTZkMTIzZTdhZWU5Njc4Njg2Njg1M2MwYjFlNjggbGVnYWN5LXRydW5rCis3MjgyMyBjODNhMTcyZWU5MzFlNTc5YzM3MmM4Yjk2OTBhMmYwZjcwN2YyYTIyIGxlZ2FjeS10cnVuaworNzI4MjQgZGZlODhkMjAyMTgwZWRkOWZmNTliNDUzZjViZmVlMTNkZjYyNDdmZSBsZWdhY3ktdHJ1bmsKKzcyODI1IGFhYjExN2U2YmIxNmMyN2EyYjEwMWE1OGEwZjJlZTcxYjNjMjdhYTAgcmVsZWFzZTI2LW1haW50Cis3MjgyNiBjNDA4MDc0NzNhMzc5ZDQxYjNiMzVmYjNhOTkwNjk2NDg2NjBhYmJmIGxlZ2FjeS10cnVuaworNzI4MjcgODQwYTA5ZGU2OGMzZDE0NThkZGZlNTQ5MjQxNmZlNWU1YjE1YTczMiBsZWdhY3ktdHJ1bmsKKzcyODI4IGYyMjdmZjM0ZTMzZDQ4ZjIzNDFlNTNkZDE1Mzk5YjljNzdjYTk5MmUgbGVnYWN5LXRydW5rCis3MjgyOSAzNTQwNDViYjczMjYxNTg5YmRlMzUzZDE3M2YwMmNiOTQzNDgyNjBlIHB5M2sKKzcyODMwIDczZGM3Mjg0OTg1M2QxNGExNTYwN2E0YmJkYzNmMTljYWNkNDhiNmQgbGVnYWN5LXRydW5rCis3MjgzMSBkYzQ3ZjdjNjVkMzA4YWQ5NGEwNzhlODU2NmYzMWIxMzQ5MDA4MDUyIHB5M2sKKzcyODMyIDYzNjRlOTExZTRjYjM2MWZlZDU0NDliYTQyOWNjYWI4YmY3MzU4NjUgcHkzaworNzI4MzMgMjU5Yzg2NTVjNTkyMzAzYTU0ZTAyN2IwMTI4ZDY1YjM1NjFkNzc5NyBsZWdhY3ktdHJ1bmsKKzcyODM1IDk4N2JiNzM0ZTM3NmMxODdkODFiNTEwZjQ5NzJjNTYzM2Q5OTVhYmMgbGVnYWN5LXRydW5rCis3MjgzNiBlNWRkMjQyOWFjYjMzZWFhMGRiZjZjMTlhYWJmM2FiNjg0Nzg1ZjNlIHB5M2sKKzcyODM3IDhiZWQ2ZTZiYjk4NDJiMWQzNjJkNGVmYWYwMjZiMjE0NzVlOGVlOWIgcmVsZWFzZTI2LW1haW50Cis3MjgzOCBkMGVhNzhlOTI0YTY5MWFhNDg4ZDE4NWVmZjQ3MDgzZjIxMDE4NDBmIGxlZ2FjeS10cnVuaworNzI4MzkgMDRhNGI3ZGYyZDRkMzBmNjkxNmUzZjBmNmYzMDgzMWMzMWQ1MmRkYiBsZWdhY3ktdHJ1bmsKKzcyODQwIGM4ZTFkN2YyMjUyYzRmMGM0ODg0YTI0NTcwOTlkNTkyNmYzYzQwZDIgcmVsZWFzZTI2LW1haW50Cis3Mjg0MSBmMjQ1NGQ3MTI5OGFjZDU5ZjNjYTI0OWIwNTRlZmM2ZTVkMGFhZTg0IHB5M2sKKzcyODQyIGFiMWI1YWMzNDRkNzk4YzgxNDIzNmI0NDA2OTllMzA5NWI3NTQyOGMgcmVsZWFzZTMwLW1haW50Cis3Mjg0MyBlYjIwYzk1MDA2Yzc2M2MzZmEyZWM5Yzc3YTVjYTlmMjI3N2RmYTdmIHJlbGVhc2UzMC1tYWludAorNzI4NDQgMjUzZWNhZTY0NzhhNGM1Nzk1YWJkZTVmOGI5NTIxOTFhM2FkODcxNyBweTNrCis3Mjg0NSA0MzViY2EwNzgxZTNkYmI4MDY1NjQzMzY2OWFmOTg0M2MxNTRmYzRhIHJlbGVhc2UzMC1tYWludAorNzI4NDggNzNmNjI3MzFiMWU2ZTRlOWQ0NWNjNzM3M2IwYmM2NGRhODdhYmZkMSBsZWdhY3ktdHJ1bmsKKzcyODQ5IGQyZDAyOGY2NWM3YzYyMTRmNGIzZWQ1ZmRhZTI3YzQwMjMwMTcxY2IgcmVsZWFzZTI2LW1haW50Cis3Mjg1MCAyYmNhYzA4Y2ZjNmRiZDk2NmQ2Njk5Yzc0NGUwMjhmZDVlYjg5NDhmIHB5M2sKKzcyODUxIGU5NjU3M2U3YzUxODdkZThhN2Y4MzQxZDA2OTVmMzJjMGE1YjRmNTEgcmVsZWFzZTMwLW1haW50Cis3Mjg1MiBjMDhiYmI4NDA2MmUwMTU1ZDQ1MmM4ZDcwYmYzMzc3NTU3OTFjOGNjIGxlZ2FjeS10cnVuaworNzI4NTMgM2U3YmM3NDkzNGExYzcwNzY2NjI0ODc3MjgzNGQ4MWUzYjY4MjhhNiByZWxlYXNlMjYtbWFpbnQKKzcyODU0IGQ1YzU4MmY0NmJjOTRjOGM0NzAyNTAxMmEwZTEzOWZlMTZiMDkwNjAgcHkzaworNzI4NTUgN2NjMGZiMDc2ODQ3MWE4NGM2OTU4NDU1ZjdhMDhmNTZjMzRlNDg3YyBsZWdhY3ktdHJ1bmsKKzcyODU2IDFiNjg5ZDU3ODg4ZDU1ZTUxMTRiZjRiNDYzMDI2ZjAxZGI2M2YxY2IgcHkzaworNzI4NTcgZTA2NDU0YzJjYzBiZmZhZWNiNDIxZTgzMmZjMWJhODgzNWIwNTA3YiBweTNrCis3Mjg1OCBiMWUzNTFjYzU5Yjc0NzVhMjZkMGE5ZTExNzE5ZWE0NGQwMDlkYzljIHJlbGVhc2UyNi1tYWludAorNzI4NTkgNTRiYmZkNDFiZTY2OGRmYzIzYzA4MzUxMDIxMWFjY2RhN2U1NDEzMyBsZWdhY3ktdHJ1bmsKKzcyODYwIDlmZDFkNTRmNjE3Y2YwZjdkYzA0NTA4MzY5NmIzN2I1MTFjOTIwNTcgcmVsZWFzZTI2LW1haW50Cis3Mjg2MSBkZGM5YTE2ZmJlYThkYjlhZmRhNTJkODVmNTdhZjBhZmQzNTNkZTRlIHB5M2sKKzcyODYyIGU3OGUwYmRiYmFjNDgxNzY4ZGEwMjU4YWNjMThlNzM0YmM0ZDJhMWUgcHkzaworNzI4NjMgMGE3OGVmZmI1ZTBiNTIwNDNmMmI0NzhiNTJjYjk1OGU5Mzg0MTAwOCBweTNrCis3Mjg2NCBiZjI4NDMwODg1NjcxN2RiMDRkOWRlNWRmYTQ0MmMxZmI0MGY5ZGJlIHB5M2sKKzcyODY1IGY5ZDI2MDhlMjRlOGEzN2I0YjdmY2ZiN2U2ODJlNDYwZGYxZTY3YmMgcHkzaworNzI4NjYgOTk3ZWY2OGJmYTE1MTc5MGQ3ZTE4M2ZiY2U3ZjQxYTkxOTAyOTZkNCBweTNrCis3Mjg2OCAzM2E3Y2IyMGY1NThjYTUzYzUwODEwZjU0MTBhYjljZDk5ZmM0NWNhIHB5M2sKKzcyODY5IDI1MmQ4MWE0ZjY5ZDJlY2I2NGFhZjllMmNjYTMyZjgxNjE1N2QyMjYgcHkzaworNzI4NzAgODQ2Mjc3YTQyMjQ5MTA0NTU4M2QxNzVjNGVmZDg5MGU0ZTUyYjQ3MSBweTNrCis3Mjg3MSAxNTA5ODZhYjNkYjI4NGNmZDM4ZDY3YTFhY2UyZjA0YzI3ODBiYWU0IGxlZ2FjeS10cnVuaworNzI4NzIgYjI3OGI0YmRmZjFlMjIzOTVjNTBlZGE0ZjNlNDc4Njc1NTk1MDc2OSBsZWdhY3ktdHJ1bmsKKzcyODczIGUxN2MxOGE2Y2FlYzQ3NWRjNjM4ZTkxNDY1MzhlMWM3NGVlODA0ZjIgcmVsZWFzZTI2LW1haW50Cis3Mjg3NCA4OTYzMWY2Mjc4MTBlOGQ2MjIxZTc3YmZjY2Q1MzUwNTU2ZWVmZDk5IHB5M2sKKzcyODc1IGJkMmZiMWJlMTMwZWY0ZmJmMzZiODdlOGI0OTA2Zjg0ZTA1MTYwMzEgcmVsZWFzZTMwLW1haW50Cis3Mjg3NiBkYmE3NjdiYzMxNTVmZDJiYTQzNjg3ZmZjZDc0NmU5ZTk2ZGJiY2ZjIGxlZ2FjeS10cnVuaworNzI4NzcgZjk5ZjNkOGM1MWQ1OGZiZjBmNGMwZDMxMThlMzU2ZGFlZWIzZTFlYiByZWxlYXNlMzAtbWFpbnQKKzcyODc4IGQ5Y2UzZTc0MDY3NjU1Njk4YmEwNjc3OTVlNmFhNzliY2Q3YTY1NTEgbGVnYWN5LXRydW5rCis3Mjg3OSBkZGRmNDI0YmQ2Njk2OGMwNTk1ZDQyZWY0NDRmYzVmNjRkNWJlMTNkIGxlZ2FjeS10cnVuaworNzI4ODAgZTdiNGE0NDNmNzY0YWVmYmRlMWYxYWJmMzRhZmFkZGVmYzYyY2RmMyBsZWdhY3ktdHJ1bmsKKzcyODgxIDYxYmJlNWM5MDUxYmZlZjJjMzlhYzgyMzliNzQxNTAxMjVlMjc3MGMgcHkzaworNzI4ODIgYTU4MGEyZWUzMTI4NDM4NjdlNDZkMjQ5MDRkM2YyZmRiOTkwOTMxOCBsZWdhY3ktdHJ1bmsKKzcyODgzIDYyNWEwMDZhMjUzYjhmMTY0MWRlODgwNjcxNDU2ZDkyNmE4NDMxZjcgcmVsZWFzZTI2LW1haW50Cis3Mjg4NCA5ODk3OGU0ZmQ2MGZhMWNjNzYyMTQ5NTg4MTI3YzM5ZmE2Zjk0NGU4IHB5M2sKKzcyODg1IDgzM2U0NmMxNDk5YmQ3ODEyYTEzYTM2NjM2NmQ1OWMxZTc0OWM4MTEgcHkzaworNzI4ODYgNDhiNzVlYjAyNDM0Y2E2MzE0NjhlMTEzN2ZiYWFkYzQ5MTZkMTkwYyByZWxlYXNlMjYtbWFpbnQKKzcyODg3IDM0MjhhY2QzMWU0NTY0MjU3MDZjZWQ4Y2JkZWRjN2ExNDgxMDk1ODQgbGVnYWN5LXRydW5rCis3Mjg4OCAxZTJjM2U3ZmU2M2NmNDdiNDJkYThkOTRjNzMyOTFjODMyN2FmNzE0IHJlbGVhc2UyNi1tYWludAorNzI4ODkgM2QzMDVkZWNlNTY3NGRjNmRkMzQyOTUxOGQzYjU5MzBkYzIxOWVlMCBweTNrCis3Mjg5MCA1ZGMzM2Y0NjdmZjQ2ZjJmNjMwN2RhNWUzYTI2MTBjNGNjYjdmYjc2IGxlZ2FjeS10cnVuaworNzI4OTEgOWM3NDRkZmNmNGRlNzY1ZTc3MjNiNzU1YmY5MmI1MzdiMGQwZDFlNyBsZWdhY3ktdHJ1bmsKKzcyODkyIGI1ZTAwMGQwM2IyYzRmOTI2ZmM4MmJiZDFhMDRlZmM5YWU0MDNhZGIgcHkzaworNzI4OTMgM2JlMzdlYzQzYzFiYjM4NWZhNWJmZDYwMjg3NTE0Y2VjNjE3MWI0MyBsZWdhY3ktdHJ1bmsKKzcyODk0IGU2N2IxZDA3MWVkNjFmNWZkZmI4MDM2Y2Y3MGEzYmEzNDlkMGUyYTAgcmVsZWFzZTI2LW1haW50Cis3Mjg5NSA1MzhmNGU3NzRjMThlMjdmNjVlYzIyMTFhNDY2MmQzY2UxNGY0ZDlkIHB5M2sKKzcyODk2IDFmNDM3NTYxOWM5YzNkOWMyMjQ3NTQ3MzI3YzVjNzQ3OTc4ODFiMTcgcmVsZWFzZTMwLW1haW50Cis3Mjg5NyBiMDVmODRhZDhlY2IwYzNlMGQ5ZWZmMWUzYjA3YTEwNTkzMDY4ZTFjIHJlbGVhc2UyNi1tYWludAorNzI4OTggZjhjYWRmYjRhMWEyMzczODNlMjY0MWM2NTYxODgyYWEzZTcwYmRiMSBsZWdhY3ktdHJ1bmsKKzcyODk5IDgwMjQxNzVlM2NjNjk5OWIxYWI2YWE5ZmEyYjA2MjMxMmZjMGQ5MmYgcHkzaworNzI5MDAgYmZlNDAyODU5M2UxMTE4ZTE1ZDdhY2U1Y2MzMGY4YmExNTY3YWUwMCBsZWdhY3ktdHJ1bmsKKzcyOTAxIDA0Njg4YWE1NjRjODVlZjJiYjY1MGVjYjQ1ZDkyZTdhNjYwNzUwM2UgcHkzaworNzI5MDIgNTY1NDEzZWU5YzFiMzZkNjdmZjYzYjZmZjZkOGYxMTVmNmZlNDhiYSBweTNrCis3MjkwMyBkNzUwNzlkZTJlNDZlNDAwYjIyOGVlOTk4ZmUzOWI4ZjNjY2ExM2VhIGxlZ2FjeS10cnVuaworNzI5MDQgNzM5MWQ4OGIzZDgyY2QxODI3YTg0NTQ4MTE2NTA0MzVjNzI2NTkxYiBweTNrCis3MjkwNSBiOWM3OGZiNmQ3MWRiZDE2NjJiMTJkYzE1ZTQ2MTJkMWQwNmVlZmEwIGxlZ2FjeS10cnVuaworNzI5MDYgZWIwY2Q4M2M4NGFiZmYzNDc0NDdiNmFkY2JmMTUzNTMwZTk2MTEyMSBweTNrCis3MjkwNyAwYzYxN2I3YTcyN2FlMGFhYWFjOWVkZTZiMjkyYjYxZjFlYTUzNTQ1IGxlZ2FjeS10cnVuaworNzI5MDggZGIyMTI4NjlkODE0NmNkYWI5MGFjZWEwMGU5ZmViNDhlYzIwMzE2ZSBweTNrCis3MjkwOSBjNzQ5NjdmZWIwMjFhYTdhOThmOTJhYTZmYWYyNGYwZDNiNTMxZDIxIGxlZ2FjeS10cnVuaworNzI5MTAgNWFiMmY2Y2E2NWFhZmEwMDhiNzY1ZWMxNDZmN2U0NWJiN2QyOGQwOSBweTNrCis3MjkxMiAxNDUzNzZkZjNhZDcyOGY3MDUyZmRkOGI2ZWJhNjAwYTgzMTdmZWNlIGxlZ2FjeS10cnVuaworNzI5MTMgZjI5YmU3MTBjMTc0ZDFjMzQzNzc3MWQxNjk4NjUxOTE4NzAyOWNjZSBweTNrCis3MjkxOCAzOWQzYTc1ZmE4MjE4NDEwMmYzNDY4NWQ1YjYzOWM4ZGY3YTE0ZTFlIHB5M2sKKzcyOTE5IDVhZWE2MDNiMjMwODkzZTJjYTg3ODcxNjNkNDM1N2QxMDkzYmMyYWMgcHkzaworNzI5MjAgMGQ3NDYxYzA2M2U3OWVkYmJiYmMzODFhYmIyZGM3MTg2NDg3N2YyOCBsZWdhY3ktdHJ1bmsKKzcyOTIxIDE0ODBmYTNmY2FiNDAxMTQ1MWU1OTllZDYyZjcxMjUzNjU2YjIwMGQgbGVnYWN5LXRydW5rCis3MjkyMiA1ZGQxZjZiMTQ5MzkxZmE3ZmMzYTFmYWZkMzNiZTA5MmZmNjJlNTRjIHB5M2sKKzcyOTIzIGRhZGQ4OTcwYjMwMzc1NmJjNzM3NmY2MzUxNjNjYjQ0NDk0NzZlNzUgbGVnYWN5LXRydW5rCis3MjkyNCAxNjc1OWY2MmViMjI2Y2Q3MDFlMDFjYTFkNzVhNTBmNDZiNTdiN2I3IGxlZ2FjeS10cnVuaworNzI5MjUgMjg3Y2UzMGQwOGI1NDQwODQ2ZTYxMzY5MGVlYTVmZWQ5NDI5NWQ0YyBweTNrCis3MjkyNiA2OTlkYTZjNDY3ZGMzOGM3N2IzMjVhYzEyMGRiZGYwNTQzZjJkMmQ2IHB5M2sKKzcyOTI3IDM1NTQwNGVhMTE0M2ZlYTc5M2NmNTI5OGJkYTU2OWZkNDFjYjFiNGYgcHkzaworNzI5MjggNGQ2NzQ1MjkyMmY5M2ZlN2JlNGRlYTkxMTkwYjg1ZThiN2I2NTI4MiBweTNrCis3MjkyOSA4NGE2MGU3MTA1NTMwODNjYjQ0YTZkODkxMTExNGQxNTkwYTk0ZTk5IHB5M2sKKzcyOTMwIGFhYzI2ZGU4YjVkMGU0ZDZlMWYyYTYxNTRmYzJlOTg3MTkwMGRiZDIgbGVnYWN5LXRydW5rCis3MjkzMSBkM2RhYWQwZTdmNmY1Nzg3Y2Y3ZmVjODRhNmNkMDI2MGIxZTIzOWMzIHJlbGVhc2UyNi1tYWludAorNzI5MzIgY2RmZDAxN2NlZTkwOGM4ZmMzNTM5MWZkZmFlNjg2MTY3ZDk4ZmVlMSBsZWdhY3ktdHJ1bmsKKzcyOTMzIDNiNjEyNTY5ZDUzNjFmNzE3YzE4MzkxZTgwZjJlNmEwZTk3OWJiZjcgcmVsZWFzZTI2LW1haW50Cis3MjkzNCA5ODNkMjU2OTFiNjhkODBmODg1YzkxN2E0ZGVhYWU5YWE0MjQ3ZDI2IHB5M2sKKzcyOTM1IGEyN2E3MzljZWY3Zjg3OWFiZThhZDEyNjNmOTkyYjgzYTVhYzlkOTYgcmVsZWFzZTI2LW1haW50Cis3MjkzNiAwMjU4MzUxZGZhNjA0NDkyZjQ1YTE3Nzg1NzJmNDdkYjBhNDNjMjZkIHJlbGVhc2UyNi1tYWludAorNzI5MzcgYWNjMDc4NjZiMjMzMDNmZGVlNjVlOGRmMGNiNGRlYTM3NTQ1NzFjZSByZWxlYXNlMjYtbWFpbnQKKzcyOTM4IDM0MjU3YTc3M2VjMGRjZDM2OWRiYjMzYTJkNmYxMzY3ZTQzMzcyMWQgcmVsZWFzZTI2LW1haW50Cis3MjkzOSA2NTY0NjM4MmU0ZTAzZGU5ZWYxNWJlOGM4YTA1NzU4NjMzYjdhOTBkIHJlbGVhc2UyNi1tYWludAorNzI5NDAgYmEzMDVmZThlODMxMjAzNDc0NDlmYjM1OTQ0NDUxMDJlYmViZTkyNSBsZWdhY3ktdHJ1bmsKKzcyOTQxIDFjY2I2ZDYyNTcxNzMwNTNjMzFmODYxYjgzZmJiMjM4MjliYzI2NzAgcHkzaworNzI5NDIgOTAxMmZmN2Q3NWEyMTY1ZDFiZTgxZjE2MjFmZTk2YTJjMWZiODZmYyBweTNrCis3Mjk0MyAyNzIxYmU3YmUzNjU3YTQyN2UxOGZhZjhiODA1MGY3NjUxOWM3MjUzIHB5M2sKKzcyOTQ1IDI5ZTVjMDE2NWUxMzUxNmFhMjk3MzNjYWY5MDYzYWQwMDVjZjIwNDggcHkzaworNzI5NDYgODgzMDVkNzM5YWU1MjZlM2M3OWE4NWIyOGJhMmE5ZWRjZWIyNjBhZSBsZWdhY3ktdHJ1bmsKKzcyOTQ3IGQ3MWZhNmM0NjhjYzhiMWQ4N2MxMjZjNGI0YzZkYTExNGM0MDA5ZWUgcHkzaworNzI5NDggZmRmM2ViNzgyMmU0NTZiZDUyMTQ1ZDk1ZWZmYzM1NjM5NzY5OGExMCBweTNrCis3Mjk0OSBhNGRkOTIxN2VhMTMxY2YxZjM3NjViNDBlNDQzYmE4ZDYzYzVjMjE1IHB5M2sKKzcyOTUyIDQ3ZGQyOTBkMmQ3NDViNDQzNjQ2NmQ1YzlkZDRhOTIzYjRmYzZlOGMgcHkzaworNzI5NTMgMGU3NjEwMmY0NzhiNTc3NWQ0NGRmOWE2NTBlOGExZTk2ZDdjNGMzNyBweTNrCis3Mjk1NCBmMTNiY2Q5MjJmNzYwMjljZDU2MjdlODdlYzczMWM5MmY5ODMxOWZlIHJlbGVhc2UzMC1tYWludAorNzI5NTUgM2Y3OWVjYWI1ZTUyOTc0MjQ5MDQ5ZTRhY2M3MDA0ZjlmZDU1MmUzYSByZWxlYXNlMjYtbWFpbnQKKzcyOTU2IDIzYTM3M2M4ZWMxYjM4OGI3MDM3NjFmZjQ5MmNkNGNlZTc2MTQ4MmIgbGVnYWN5LXRydW5rCis3Mjk1NyBiYTYzNzZkZmY2YzRmODExNWIyOWJjNDczM2RhOTEzMjZjYmNiYTVjIGxlZ2FjeS10cnVuaworNzI5NTggN2I0YjkyMWYzMzM1Njc3MzY0MTM1MTMwZDlkZTUwZGVmNGYxN2JkYyBsZWdhY3ktdHJ1bmsKKzcyOTU5IDZhYjkzNDcwMDExYmI5NGZkZDVlZjBlNzQxYTU2NzA4ZWU0YzBmMGIgcHkzaworNzI5NjAgNDg2MGY3NDkzYjkxNDc5ZjY0M2U1YTc4NjUzN2JmNTc5NzgwODZjOCBweTNrCis3Mjk2MSAxYzA3OGJiY2EyMzNkNzYxMDY0ODJiMzc0ZjBiZWMyNDA2NjY0YzgyIHB5M2sKKzcyOTYyIDFkMDk2ZDFiOThmZDEzZTAyN2VkYjVmOWJiYjBjNjc3N2MyMWY3NDEgcHkzaworNzI5NjMgMjJmZDk2NzUxOGVlYzAzMWYzYmM3Yzc3Yjc0YTQyNzhlYzdlYzlmNCBweTNrCis3Mjk2NCBiNjFlNmFkNWFlNzBlOWY1MmM0NjRlNzk3MDhjZTQxMjQxOTYwNjU2IHB5M2sKKzcyOTY1IDhjYjM0OTg3M2NkYWUyYmQ3OGRiYTNjNzkzODIyMzhjZDRiOTUyNmMgcHkzaworNzI5NjYgMTU0Y2EzNzdmNTNjN2I1MGU1YzY3OTIxYzQ0MjVjODhhNmU0MzMzOSBsZWdhY3ktdHJ1bmsKKzcyOTY3IDliOGI2MGJjMGY1YjczMTgyZjNjNjY2MGJmYWY5MmFkMzczZWJkNjcgcmVsZWFzZTI2LW1haW50Cis3Mjk2OCBhZjRmZDIzNjU0Y2ViM2Y0MTllY2U2ZjAzYTlmYjlkNTZkZDA0ZTc2IHB5M2sKKzcyOTY5IDRjNzdmOWUxYTE5ZGNlODE5NmZkODEwM2MyYWMwZDViNWViZmU5Y2IgcHkzaworNzI5NzAgODM3YWRiNzZhMGUxYWMwYmMyMTQ3ZDIwN2RhNTM3ZGQxOWQ3NWMyNyByZWxlYXNlMzAtbWFpbnQKKzcyOTcxIDEzOTIxZjUyNjg0ODMwYTNiODE0YTY5Zjk5ODExYjA1OWRjOGNhMDkgbGVnYWN5LXRydW5rCis3Mjk3MiBlNmUzYTBlOTFiZWFjM2QxMjdiNWVmMjFmMTRmMDA0YjRiZTc1MTMyIGxlZ2FjeS10cnVuaworNzI5NzMgODIxZjdkNDJiZjc0MjJhMGZkZTY4M2JlN2JlYWJiZjc4NjdiMmM2MCBsZWdhY3ktdHJ1bmsKKzcyOTc0IGZjNGUyNDQzZjUwOTY0ZTk2NDYyNmM3NjljYWQzMDhjM2ZlMzc2YzQgcmVsZWFzZTI2LW1haW50Cis3Mjk3NSA2MDM4NzAyMjhkYWM1NGUxYTk2YzQ5ZGUzZDViYzA3NWU4MjA5OTQ1IHB5M2sKKzcyOTc2IDYwZDQ5YjNmZDNiZmQyYjc2MzQ0MzA2YTEwYjcxOTA1MmZjMmEwNTggcmVsZWFzZTI2LW1haW50Cis3Mjk3NyAxMDI5ZDlhYWQ0OTFjOGY4MjZjOTY2Nzc4MWQxMjYyZWEzY2Y1ZjJkIHB5M2sKKzcyOTc4IDFkM2IxYmU2YThiMjZiZjI0OTlkMmNlNjQ0N2QyNDZjMWQ0MzdlZGUgcmVsZWFzZTMwLW1haW50Cis3Mjk3OSA3MGZiODQ4ODcwYWNkNDE0YWNjNTdjMThmNGE4NWVmNDlkYzM3ZGJlIGxlZ2FjeS10cnVuaworNzI5ODAgYTZiNzNkODBmYmUyNzVhOWY2M2E3ZDdmY2U3YzAwNzcwZjM5NmVjOCBweTNrCis3Mjk4MSAxMWE1NGRhYmZiMWNkNWQzMzc4YzQzZmM3OTg0ZGI1YTAwNmRlYTUyIGxlZ2FjeS10cnVuaworNzI5ODIgOGIyOTk2NTJiMWU4NWY3ZDEyZTg0ZWExZjMwYjgyOWJmMGEyMTU5MyByZWxlYXNlMjYtbWFpbnQKKzcyOTgzIDlkZGZhNmUwNWZiMGRhMTE5OTQzNDIxYTEyYjlkYzI4OTBhODUzOTAgcHkzaworNzI5ODQgYWMwYjg1ZjY4Mjk3YmQzMGYxZTUwZTI5ZTdhYmViYmQzNTZhZDdmNiBweTNrCis3Mjk4NSA1YjIxMDBlNDZkM2I0OGEwMmYwNGMwZGRiMWFmNzQ4NTJkM2UyNGE0IHJlbGVhc2UzMC1tYWludAorNzI5ODYgNjA1NmM5NmMyZDMyNzU1ODcwYTY4NWRlOWI3MTFmMTc0YWMyODE0MSBsZWdhY3ktdHJ1bmsKKzcyOTg3IGVkMGE5ZDY4NDAyMjY5YTg5MmMwNDE3NzEyMzZiNGZmNmM0Mjc2ODkgcmVsZWFzZTI2LW1haW50Cis3Mjk4OCA5OTY3Mzc5MjcwYTA5NDEzYTM1YjhlYjJmYjlmYjI0YmQxZTg0ODczIHB5M2sKKzcyOTg5IGNlOTllOGUyMmIxZWFjMDk2MDczZmQzNzE3NTk1Mjc1N2U2YzA1MzkgcmVsZWFzZTMwLW1haW50Cis3Mjk5MCBiMDA0MDQ5NGI0YTY5YWFjOTZjYTkxNjlkMmMwZmU3NWM4MjRiMTY4IHB5M2sKKzcyOTkxIGY1NWQ4ZGVkMmQwNWU1YWNlY2JmNjFhYzQzZDIzOTQ5OWFhYjg3ODMgcmVsZWFzZTMwLW1haW50Cis3Mjk5MiBiNzI2ZmZkNDk1MjQ1MGQyMmJmOThiOTRmNWQ1ZjEyMmM1NzVlNTc4IGxlZ2FjeS10cnVuaworNzI5OTMgZTkwYjA2N2Q4M2YyNTE2NGFiNjRlOTU2NWY5MmU0NzNhMWRhZWFhNCByZWxlYXNlMjYtbWFpbnQKKzcyOTk1IDNlYjUyMmRjMzMzN2RlYTIxZjI3NGVkM2Q5ZmIzZjgyYzMxODRlYWYgcHkzaworNzI5OTYgNDAzNTM4MzM5NGVjZmFhNmE3MjUwY2ZlODZkNmIyYjVkNDE4MjNjYiBweTNrCis3Mjk5NyBiYzI1MTY4MTBjYzQxMTNjMTBkODJmMjgzN2NhM2NjNTZkNzE1ZjAwIHB5M2sKKzcyOTk4IGEwYTI1ZGVlY2RiMjM2ZTM1NTFhN2I5NzY2Y2NjYWNlYWEyMTkwNDMgcHkzaworNzI5OTkgNjE4ZTQ2YTY5ZjI3OGYwNDIwMzY5ZGFkZDhiN2M0OTVhYTExNTFjOCBweTNrCis3MzAwMCAyZDNjMmNmMWI1MWUzNGNjODc3MmQ3MWJkNzE5NjIzMDc4MzIxY2MxIHB5M2sKKzczMDAxIDg4YmQ4NzYwYjM0MmVjODdiN2FiZjA4NTA0ODMxMzc0MjM5NjViYWMgbGVnYWN5LXRydW5rCis3MzAwMiAyNjBjOGVkM2Y1ZGY5N2E2NTM1Zjc0NWZkMTZlNDhkNmY2YTkyMGJmIGxlZ2FjeS10cnVuaworNzMwMDQgMWQ4ZjI0YmY0Mzk5NjMzNjBmY2MxMzY4OTMyZWZiOWMxNzlmMDRlOCBsZWdhY3ktdHJ1bmsKKzczMDA1IGYzYzg3MWJkZWE1NzFkNmQ2OWNkOGQ0Mzc1YzE4NjU2ZmM3NDRmYzAgcHkzaworNzMwMDYgZDc1YWIxNjQxM2RhNDJjMTQ3YmVhOGEyNDc1ZWM0Mzc1Y2I0ZjVhYSBsZWdhY3ktdHJ1bmsKKzczMDA4IDFmYTEzNzk0MjA4NWRmZDFmMjEzY2FmNWRjMDAwOTgzZTc4YjRmNmMgbGVnYWN5LXRydW5rCis3MzAwOSA3N2I5MTI0ZjFjOGMxNGQ4ZTc2YzI4YjlhZGJhMWRhN2FlZDdkMmM4IHJlbGVhc2UyNi1tYWludAorNzMwMTAgZDM5YzE5MDMxNmU3NjlkOWNmZDYwNTA1ZjA2NGNkMDgyYjU2YmZlNiBweTNrCis3MzAxMSA0OWMwYjBjYTUxMTNiOTMzODMxODYxM2Y2ODEyMjE2NjA5ZWJlNGNiIHJlbGVhc2UzMC1tYWludAorNzMwMTIgYzVkMzQ5NTgyZTljYWU3YjAzZjU0MTY5NjdlYjhmZTc2MWQzNTQ3YyByZWxlYXNlMjYtbWFpbnQKKzczMDEzIGI2N2FiZDUxYjI3MDRjMGFjYmIwZjcyODQyZTlkOTUzMjJlNmUwMWEgcmVsZWFzZTMwLW1haW50Cis3MzAxNCAxMWRlMzVkYTI4MWMxNzU1ZWU5NzM5YTFmOGFhOWM3ZmQ0OGVjNzBjIHB5M2sKKzczMDE1IDI4ZDY0MTkyYWI1YTJjZjcyYTliZDZiZDkxMzkwMDc1MThjZGMyNDcgcHkzaworNzMwMTYgOWMxN2UzNjY5MzM2YWNhNzBlZTViOWY4OTVjZGM2YWU2ZTI2YTg4MSBsZWdhY3ktdHJ1bmsKKzczMDE3IDc2ZjFiZTlkMjgxODJiZjQ5YjMxZTI4NDZlZGEyZDFlNTIxNjE1MmUgcmVsZWFzZTI2LW1haW50Cis3MzAxOCAxMzRkMTJjMmU3NDUwMGU4ZmEyYmRiYjRiZjUwMDhkNTYwYmY1YmMxIHB5M2sKKzczMDE5IDIzNTZlOTg1ZWNlODM1ZjFiZGUzZmM4N2U0MmQwOTgyYzM2ZDZlZGMgcmVsZWFzZTMwLW1haW50Cis3MzAyMCBlYzVkMjI4YTgzZWZjYTIxZjU3YWQ3NTVlMWYwNDNmZGIwNGQ3M2ZhIHB5M2sKKzczMDIxIGE1YTg5YzYwZDMyZTRlZWZmNDY2OTA2OGU0NDNhYmE1MDZkYTJjYmUgcHkzaworNzMwMjIgNjQ3NTAwNjVlY2Q0ZDFjMjkzYmUxMjJhMmVlMTUwNDYxMTQ4NTRjNSBsZWdhY3ktdHJ1bmsKKzczMDIzIDI1YTMxNTVkYWM3NmM1MTYzOTc0YzllYWY5YzZiNzYxYmNjZDU2NWIgcmVsZWFzZTI2LW1haW50Cis3MzAyNCA5YTRjZTFlNzFhZDgxNjUxNjIxMDlmYmQxYjI3Njg5OTU2ODg5M2IyIHB5M2sKKzczMDI1IDRlZDJlZTBiMjI5MGEwNjQ2YWQ4MTlmZDhjYjhlODEzM2NmMjhlNTYgcmVsZWFzZTMwLW1haW50Cis3MzAyNiBlNDc0NTgzOGY2NTViNWY5NTFiMzU0ZWExM2I0NzA5MGI5ZjRkYmE2IGxlZ2FjeS10cnVuaworNzMwMjcgN2ExMzQ3MWY0ZTliZDFkY2U1MmNhZjg1NTU2MmZkNzhkYjA3YTZjZCBsZWdhY3ktdHJ1bmsKKzczMDI4IDE0NmEzOWIyNTg0NTg1ZjdiOTI0YWFlZTkwZmZmMWRhNGI3OTg5YzkgcHkzaworNzMwMjkgYzhmZTMwM2NlZGE0NTE1OGM3MWZlNzlkYzRlOTNhN2FkZTYxMjU2NSBsZWdhY3ktdHJ1bmsKKzczMDMwIDZlMmE4YmRhYTU0MDIwOGNkMzkwNmJlODhkZDNiNzg1MzI0NDAzN2EgcmVsZWFzZTMwLW1haW50Cis3MzAzMSBiMmVjZDJiZGYxOTUyYjkxNDE4NWQ4M2Y4Y2RiMzAxN2FkZDE0YTNjIGxlZ2FjeS10cnVuaworNzMwMzIgNmQ0YzQ3ZmVjNDQ5ZGFiZDVmZjIzMTA3YmVmOGUyM2NhYzdkNjJkZiBweTNrCis3MzAzNSAxYTUyMWMwNmE3MGRiNTE2YTI1ZDYyYmZkY2VkMjc3MTYxZTE2MzA5IHB5M2sKKzczMDQyIDZkNmI0ZDM3ODFmMjc1ODRjNTA1MjI2YzA4YmJhZmEyYzIyZDQ1ZTYgbGVnYWN5LXRydW5rCis3MzA0MyA2OWNkODBmOGUxMzNhMjQwMjIwM2ZmNjNkNjJhYmQ1YjFiM2ExZmEwIHB5M2sKKzczMDQ0IGY1ZDNmZjAzZGQ1YmNkZDU1MGYxYTJmNWRhNzIyMDUyMmQyNTE2OTIgcHkzaworNzMwNDUgNWJiNWU5MzQzNWIwNGUxMTgxMTA4MDBlODdkZjY1MDU3NzY1ZjU4YyBsZWdhY3ktdHJ1bmsKKzczMDQ2IDQzMWNhNTM5OWEyNDQ4NmMwZmY4YzhkNDU2OTg0MDNmNGI3ZDdhN2IgbGVnYWN5LXRydW5rCis3MzA0NyBjNjJiNjUyMjUxZDg5OWMxMzg3ZDU1NDY4NWU2N2ZkN2FiYTZiODFlIGxlZ2FjeS10cnVuaworNzMwNDggOGQyZjM5YzIxZTllNTJmMmM1MDNjNGRmZDA4NWRmMWEyYjY0Y2IxMCBsZWdhY3ktdHJ1bmsKKzczMDQ5IGIwMWFlZmY3MmI2NTJhN2YxOTk4NzE2MTliZDRjMDNiMTU2NWIzODEgbGVnYWN5LXRydW5rCis3MzA1MyA1NTNjODE1MWM5YzZlMDI1YTY3MmQ1M2ZiYzQxNDY0ZjBhMzZjYmVlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA1NCA0OTVjZjNjMjVlYjE0M2IwMjJmNmYyOTkzODk1MjAzOWU5OTliNjUwIHB5M2sKKzczMDU1IDIzNDYyYjM4MTcxZDY5ZWNmYTA5Y2IwNTFlYTY1NTNiNWQyNDU0ZmQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDU2IDQzNTNmZDA4NDNjYjMxYjM1NmFkYzUwZjkzZDIyMGUyZTcyNTVlZjIgcHkzaworNzMwNTcgM2ZmYmE2YWQzMTljMmVhZWY1MmVhOTQyMjA0MGY1ODA2N2ZkMWY0NyBweTNrCis3MzA1OCBjYTliZThmYzAyNWRjMjc3M2NkYzQzYzVmZTI0NThiYzI2NDNjYzk1IHB5M2sKKzczMDYwIGU0NzVjYzcxZjE4OGE0YTU5ZmI0MTBiYjVmMjk0YWEzOTA4ZWQzMzQgbGVnYWN5LXRydW5rCis3MzA2MSA5MTYyY2RmMzRkZmJmNDU2MmJjYWViNTlkYjM4ODE1NDY2NzFiNDFmIHB5M2sKKzczMDYyIGI0MDQzMDc5MjJjNmU4YzUwOGRkMDc0NjkxOTBiOGY1YTE1MDFkNWYgcHkzaworNzMwNjMgNDk0ODVmOThhMzA4M2JjMWMxODI0NmQyNjJhZTU1NzQ3NGRiYjJkNCBweTNrCis3MzA2NCBhMjUzZmVhODVhZjE1Y2E5OWUwMzNhMDA1NGEzZDE5ZTY5ZDkyNDlhIGxlZ2FjeS10cnVuaworNzMwNjUgZmEyZjkxNzkwNmU3M2I3ZDFkZDY3ODRkY2E2ZmZkOTVhMWI4MmZmOSBsZWdhY3ktdHJ1bmsKKzczMDY2IDRlOTZkN2RhZjc5ZjRjNWI0NDYyZWY3YmY0ZDRmNmVlNzI3ODNlYWIgcHkzaworNzMwNjcgMTE0MzU0YjFlMGU1N2Q4ZGM2NDI5N2U3MDAwNzZiNzYyMDY2OTE4MCByZWxlYXNlMjYtbWFpbnQKKzczMDY4IDc1NjYyMTgxOWY1YTUxZjQxNDZhYzdjNWY4ZTAwNGQ4ZmRkM2JhZDggbGVnYWN5LXRydW5rCis3MzA2OSA1ZGVjNzI0N2IyNDk2ZWI4NWM4YWUwOWJiYTk5OTJlOTA4ZjgyNjA5IGxlZ2FjeS10cnVuaworNzMwNzAgYmYwYmQ2ZWExYzcyZTU1MGU4MDk0YmI5NTMwZDFhMmY2MWUwNmE4NyBweTNrCis3MzA3MSAxYjQzZTZmMmQzMjhhOTcxZjgwOTRkYjMyY2U5ODk1YjRmYmViNzQxIGxlZ2FjeS10cnVuaworNzMwNzIgZDc0YjhlZGQ3YThjZjA0MDYwNDdmOGZmZjBhMTUyOTM0MTUzNWI4OSBsZWdhY3ktdHJ1bmsKKzczMDczIGVmMDc4NWNmYTZhZjUxYjYyYzQ3NmYyYjk3YWFiNzFmNTNhM2ExMTYgbGVnYWN5LXRydW5rCis3MzA3NCBiYmIwYjRmOGI1ZTExYWY1MTY3NjdhOGY5MDI1MGU3NDIxMjliMTNmIGxlZ2FjeS10cnVuaworNzMwNzUgODFiYWY3NmQwNzk3NzNkNjc0N2NlNTA4M2JiZGY3MmU3NDQwNGFmZiBweTNrCis3MzA3NiA1MTlmODBiMWY1ZTNhNjQzZDQzZWVjMTUxN2VmZDBiMjZjMDVhMmU3IGxlZ2FjeS10cnVuaworNzMwNzcgMDcwNTMwZTlmMThmMjk4NDIyNGY1Mzc0MmQ1NDQ4ZDhiNGJkMWE5MCBsZWdhY3ktdHJ1bmsKKzczMDc4IGMzYTI2NTU2ZGQxNGFkMmI1OTQ4MTdhYzQ5YmQ2OWZmZTE5ZDI0MDEgcmVsZWFzZTI2LW1haW50Cis3MzA3OSBmMTRiNTA1ZDM5ZjRhZThhOWI1NTA5MjNlMDE3ODJmMmQ5NTY3MGE3IHB5M2sKKzczMDgwIGY1MWVhYWVkNmM3MWE2MGQ2MTNmZmJjYzdhMWYzNWUxMGI3YThjOTkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDgxIDJhZmY3MDBlMGNhOTE4YzBkM2I0YWJlNjc2ZmIxODhmOWNhZDE2ZWIgcmVsZWFzZTMwLW1haW50Cis3MzA4MiBhNmE3NGI5YTdjZDM3MmIwMzIzODE2YTM2MTI1NzdiYjQwNzY4ZGVmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4MyA1ZGIwNTU2ZWQxMjIzNWJiZmUxZGVhMzRmZTRmY2QxNDZiZTUxODhjIGxlZ2FjeS10cnVuaworNzMwODQgN2I3NzJlZDUzNmM3NjljZTljZTAyMTI2NmI1NWM2MDc5MjZkZWJlNiBweTNrCis3MzA4NSA3NWUxMmM1ZTRlYWZiYTFhMzRiMjRmMDdlN2UwM2I2NGQ2NDMxYzczIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4NiA1MmQyNThlYjAxNzZmYWY0MWRmNjY3M2JkZTUyNjU5ZmNhMmFjNWJlIHB5M2sKKzczMDg3IGI0ZGQ0MjgzZmY4MjBkZGEyM2RmZDE0Yzc3ZTYzZTA1ZDNjNjkzODIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDg4IDFlMmMwMzcxY2U1NzM3ZGE0NmRiMGI0N2IxZWJmZjk4YmFjMzEyMTEgcHkzaworNzMwODkgZjUxN2YyZTRmYjNiYjU2Y2I2NzQ5OTdkOWNkNGNhODhlMWVhZDczMCBsZWdhY3ktdHJ1bmsKKzczMDkwIDUwZjMxMzA4YjUwYWVkNjUxNGY2NTBkZjI0YWQ0MjE3MjlhYTlkNjMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk0IDQyMTE4MTBkYzc5Y2U3YWQ3ZTE5NGU3MGE4OTA3MzViZWYzZDFkODUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk1IDU3YTJkMjcxM2YxOTUzYTBjYTU0Mjg5MjdlMWJjNDdjZDI2NmM2NGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk3IDUyOGMwOTNhYjk4NmQyMDdmODRlZjY5MGE3NTdjNDhhNWY0NzAzNGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDk4IDc1N2E3YzBmNjc5ZTNiYWYzOTVlMDY5NWE5ODU2YTJlMjc5YTUwOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTAxIDYwMDE2OWFlNTY4MWQzYTk1OGE5OTA2ZWI2MWFhYTdjY2RmYWJlMmQgbGVnYWN5LXRydW5rCis3MzEwMiBmYjc5ZWU0NTc3NTQyODA5YTA3ODE4ZTQyMDU4ZmJhZTdiZjJmYzM3IHB5M2sKKzczMTAzIDdjNDQ0MDUzOGFiYjI0MmY5NWIwNDQzNjQzOGQ5MGVlODMyN2QyNWMgcHkzaworNzMxMDQgODU2N2RmM2E0M2I2MTIzMGYwZTgwZjhjMGYwZTA5NzRmNzk1ZTVjMCByZWxlYXNlMjYtbWFpbnQKKzczMTA1IGMwNTFiYTYxN2YwNDYxOTkwYWNhZTIyZDAxNmI2MzdkMjA3ZmY0ZjQgcmVsZWFzZTMwLW1haW50Cis3MzEwNiA2ODQ2Zjk1ZjhlMDc3YTlhZDQ1ODc1ZTNhZmY5NDc4MTJmY2JhOWMwIHB5M2sKKzczMTA3IDE4YjNkNWIzN2Q4M2ZiZTYyNmExNWZhMzIzMjU1ODMyYzI5YjU1MGQgcHkzaworNzMxMDggYzY3ODU0ZjFjZjc5MzE1ZTcyNDg4NDAxYjEyMjRhNWRkODE3NmE3OCBweTNrCis3MzEwOSA0NDI3ODU5ZDgxN2E3MmMzMzJjNGUwODA4Nzg4NjRhYjdmNWQ2ZjQ5IGxlZ2FjeS10cnVuaworNzMxMTAgOGMxMzA2NzFjODQyNTMyN2ZiZWJjYWYzNjBlMDI5MTk4N2IzZWIxMSBweTNrCis3MzExMSA5MzhjYzE2ZTdmOGRlYmQ5ZTc5MzQ5ZjFjYTY1NWU2Njk1MmZlMGM5IHB5M2sKKzczMTEyIDM1MjJjMmIwZDUxZDQ3ZGUzY2Y2ZDY1ZDlhNTFmNjBkNzA5NGZiY2EgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTEzIGJiZjhmMjVlYjM3N2IyMDE1MjEyYjIwMzI4YzVhMmQ5YzU5NzMzYzUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTE0IGMzN2FlNTYyZWY4MjJkZDU1NjBhZmYxNDMzMWQyOGIwOTVjYmQwMTMgbGVnYWN5LXRydW5rCis3MzExNSAxZGZjYzUzZTgzNmEwZTYwMjkwNDJiMWNkMWMxNGEzZThlOTY1NDg2IHB5M2sKKzczMTE2IGQwZTk2MDc5YjZhY2E5YTliNWJhNTliNDhjZjBmYTcyZmVlZTA0MzcgcHkzaworNzMxMTcgYThkOWNjOTMyNjc1NjE3YTU0MDVjNWQwYWFhYTlhMzQ1NTYxODUyMiBweTNrCis3MzExOCA1MjI5NWViY2NhMzEyNDRkMDFkNDVmNjBmMjdlNjQ3NzY3YmNlMGQyIHJlbGVhc2UyNi1tYWludAorNzMxMTkgYTU2M2JjZjFhNjJkMmY2OWM0OGQyOWIzOTQ3ZjQ1ZTU1NWJjNTMxNiByZWxlYXNlMjYtbWFpbnQKKzczMTIwIGUyNWZjMzc3NjcwNDcwMjIzZDY2MDdkY2FhYjIzMzQ5YmJkN2QxYzAgcmVsZWFzZTMwLW1haW50Cis3MzEyMSBkNTA3MWQ5Zjc0MDhiZGI4OGQ1N2JjNWVjNzJkNzZiMjEwNGYzNjI4IGxlZ2FjeS10cnVuaworNzMxMjIgNWY4ZGVjODQ2ZjQ2ZGU5YjgxNDdiOTkxM2YwOWY3YWQyZmIzYTZlZSByZWxlYXNlMjYtbWFpbnQKKzczMTIzIDU0Mjk1MjdlM2EyODhmZDIxYTVkNjFlYzRlYTRlNmFmNTU3NjY5N2IgcHkzaworNzMxMjQgNDk5M2UxMTBmZDc3ODU4NDhiOGEzNmFiNDUxZmQxNzk3ZDA2YTIxNyByZWxlYXNlMzAtbWFpbnQKKzczMTI1IGNlZDM4MGI0MDAwNDM2MmE3YTlhYzUzODBiZjQ5MDBjZDAzYWE2YzMgcHkzaworNzMxMjYgYmY0Y2ZlNTFiNGI1MjE3NDUyNTFmNmRlZTcxYjc3ZDY3ZTA0ZTAyZCBweTNrCis3MzEyNyA2MjU0MmJiODg3M2ExYjM3ZjdhOGIwZjQ4YzA0NTcxMWQ5MjYxNTZiIHB5M2sKKzczMTI4IDJjMDBiZGFhZDdhOWZmZmUxYTdmOTU3M2JlYWRlZGQzZTE2YzNiZTUgcHkzaworNzMxMjkgOGM4NTA0NzE1YjhhMzg3OWQ1NGIwM2Q0NGJmNzk2MmI3NzQwNDE4ZSBsZWdhY3ktdHJ1bmsKKzczMTMwIGRiODhhNjdlMzhlZWExYTMxZmIzZTA4OWVkOGRlZDBlNWMwZjM4MmMgcmVsZWFzZTI2LW1haW50Cis3MzEzMSAyOTkwNDQwYTIwZjQyYTEwN2QwNGNiMzIxOTE5NDZjNDE3OWRjODVmIHB5M2sKKzczMTMyIDdmYTgzMjkyN2I5MWM4NjQxNDQ2MWQ4OTRjNDlmYWJiYjI4Mzk4NWUgcmVsZWFzZTMwLW1haW50Cis3MzEzMyA3ZDQ3NzU1NjgwZDc4NDMzYjcyNzE4NzkxNmI2OTQwYzA1YTY5YjlkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEzNCBlMTNhNGY2MmI2Y2FjY2RhZGFiYTY5OWZkZmI2M2I1Zjk4NGFiNTNlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEzNSAxMjgxNDdkY2JjMWQ1MTEzNzk1M2I2NDU4M2JmNzMxNmM4MTZiODU3IGxlZ2FjeS10cnVuaworNzMxMzYgM2QxMmZiOWNlZDkyNmNhZTc1ZGE2NGFjZWJlM2VjOTUzNTkxNTRjMCBweTNrCis3MzEzNyBmOGI1YTE1MzJiZWM1NjA0NGM5ZWUxNThkYjA4NjMxYmQ3ZmJkMzVlIHB5M2sKKzczMTM4IGYwZjg0YWYxNTk1N2JjODNjNmUzZTViODEyNzUzMTk2YjA0MjJhZTIgbGVnYWN5LXRydW5rCis3MzEzOSBiYTgyMjI4Mzk5MzhkYjA2OTQyZjA0MTliMGZiZDY3NGNmZjE0MDljIHJlbGVhc2UyNi1tYWludAorNzMxNDAgNzIzNGE4M2E4YjE5ZmQ4ZjE1NTBlZDA1YTA3YzFkMjA4NDEwOTI2OCBweTNrCis3MzE0MSAwNDQ5Y2JlOWFjOWQ2YjU5NTUwMWMzYWU3YzFiNWU5MzFmMjNkNzQ5IHJlbGVhc2UzMC1tYWludAorNzMxNDIgMWU3MmE1NDBjMWFhNjc4NzM2NWQwYWRiNjNjYTlmMGQ5MTZhZDU0YSBweTNrCis3MzE0MyA2MjFhNTliYjM0MDQ1YmFiYjJkZjI5MzMwMDgzMjdhZTVhZmE3MGIyIHB5M2sKKzczMTQ0IDg4NWIwYTkyYjUwNjI2MmZjN2Q5OGI5NjNjMGQ4MDcwMzI3YmQ1YTAgcmVsZWFzZTMwLW1haW50Cis3MzE0NSBlODBlMjVlNmExODdiNGM1ZDVjNDVhZTRmMDMzYjcyZWNhMzRhNDVkIGxlZ2FjeS10cnVuaworNzMxNDYgOTA0ODlmMjY3YjMwMGRhNGQ5NWRmNGI1YTcxZWU5NGJmOTIyODJlYyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxNDcgNDI4M2JjOGM5MzA2NTFjYTMxMjgwMTgzMTRiZWZlZjU2YjM2Mjk5NyBsZWdhY3ktdHJ1bmsKKzczMTQ4IGIyZjk2MjM4NTk2OWEyMDhjMmMxY2NjZjBiNWY4NGVkNzkyZmZmN2MgcmVsZWFzZTI2LW1haW50Cis3MzE0OSA1ZTRkMDcwNTY1ZTcyOGM5MzI0ZTYzOGUyOWM3NjVjNjdhMGVlMWI4IHB5M2sKKzczMTUwIGY2MzJlMDJjMjY0MmU4YTE3ZmZiMWI1Yjk5ODYwMDBhNWUwNDk3ZjggcmVsZWFzZTMwLW1haW50Cis3MzE1MSBiN2I3MzUyOTk0Yzg4NDA1MGViNTcxNzYxYWQzYzZkZmVhMjZiYjJiIGxlZ2FjeS10cnVuaworNzMxNTIgY2ZlNTc3YWExNTZhY2M0ZWQwNDk2YWYxMTMyYmQwODk3NGIxMWFiYiByZWxlYXNlMjYtbWFpbnQKKzczMTU3IDJmN2Q5YWJkNjU1YmFiOWQyMmI0YWZmZjFhMDM5YWVhZTQ2MDQxOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTU5IDMyYTQ5ZDEwODAxZWQxZWNiZDUwYTM1MzE3Yzk2NTNkN2QzNDA2NDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTYwIGNmMTljYzA2YjA5MzA4ZGQwNmY2YjMwMTBhNDI5NWZlZTk5YWU2YTggcHkzaworNzMxNjEgMzNhOGJhOTI1YzkyMDlmODVjMDAwYTYwZjk0MTU0YTgxODVmYTZiMyBweTNrCis3MzE2MiA1MWZlY2JiN2ZjODcyNjVmZTBjMmM3ZDcyNTQwMzU5MzlhZDYzZGY0IHB5M2sKKzczMTYzIDRhMjc3MWY2YjlkZDc4NTA0NjNmZGQxMmU1YjgyM2VlMjY0NWU0YzUgbGVnYWN5LXRydW5rCis3MzE2NCAyZmJjNzAzOTM4MmQxYzU4ZjI4MDY2Y2Y4YmU2Y2YzM2IyNzQxNjJiIHB5M2sKKzczMTY1IDJkNTAwZDdiMjBiZTY4NmM2MmJkYzhhZjFlYzA5YjA0ZTcyYjNjODcgcHkzaworNzMxNjYgOThkOGI4Yjc0OWY0NzQ2NWUwZGMzMmIxZGExZWUxYjkzMTYzOTI0MCBsZWdhY3ktdHJ1bmsKKzczMTY3IDE2ZTQ1ZDhiNzk1N2U3ZWUwMDMzNDU0ZjMwZTJkMWM1ODIzOGE3MzcgcmVsZWFzZTI2LW1haW50Cis3MzE2OCBmY2IyNTgwYzFhYjNlOGIzMjlhYTk0ZDZhNGM4MTk2MWNlZmY5NmNlIHB5M2sKKzczMTY5IGUxYTQ2NjAyYjlkNzJhYjA2NjUyNThkMjIzNjNjNWI2NTViMDFiMjcgcmVsZWFzZTMwLW1haW50Cis3MzE3MCAxYTAyOWI3Yzk3NzA1Mjc3ZDc4OWY3Y2UzOGI3ODY0ZWY0MzkyMmMxIGxlZ2FjeS10cnVuaworNzMxNzEgNjVmNTYxYTNlMjkxYjgwZTdhZDMxODE4NGMzMjcwZWQwNTkyZjQwMyByZWxlYXNlMjYtbWFpbnQKKzczMTcyIGFlNTg1Y2Q1Y2E1NGIzZmI0N2E4NTZiYjE2MjNkMzE5ZDJlZTE1NmIgcHkzaworNzMxNzMgNjI1NDRjOTQ2ZWRhMmFmMWQ0Mzg0YTUwZjQyNzAzMWQ0NjI4YmZkNCByZWxlYXNlMzAtbWFpbnQKKzczMTc0IGI4YjMyZmRjYzI4ZDQxZTM4MzRlZWIzYTJkNDAyYjRkNzNjNjcxYjggbGVnYWN5LXRydW5rCis3MzE3NSA5YzJlMDdhOGQyMzAyZDNmNjllZTAzNjQ2NmNhNDg5MDdlNDhmN2I2IHJlbGVhc2UyNi1tYWludAorNzMxNzYgN2MwZTc5ZTcxY2NkYzViM2RiN2EwMWNlNmM5NDZkYjMyMGQwOTcyOCBweTNrCis3MzE3NyAwMzBhM2ZlNGI2MDQ1MjFlMGVhMDEwMWZmZDk2NTMxYzkxMjNjZjcxIHB5M2sKKzczMTc4IGIwMWNjYWMzMDQ3MzUwOWUwYzAyYWU0MGExMGJhNmM3NGJjOTIzNjUgcHkzaworNzMxODIgZTg2YmNjZWJjMDc1ODZlODRmOGM5NjgwYzMxMjNiMDljNDJkNTE2YyBsZWdhY3ktdHJ1bmsKKzczMTgzIGJmYWFmMmY0YjJlNWJkNWIwNzE5OTFjODEyNDNmMWVmN2Q3MWI0NjcgcHkzaworNzMxODQgYmM3NGIyZjYxMTU5NTg5MGMxYzRkMDI4MmU2YmQ3YzA4YWJmMzM0MCBsZWdhY3ktdHJ1bmsKKzczMTg1IGEyOTg0MmU1ZTEzOGMzNzUxYjdiNWNhY2FmZDkxMDk2MjgxYjUzZDMgcHkzaworNzMxODYgNWEzMmYzZDA2MTU4YzNlNGUwMjM4YTc2ZTUxNmNhZGIzZjU4OTNhNiBsZWdhY3ktdHJ1bmsKKzczMTg3IDE0YTRiNmZiMDBmZWJhODE4OTk4YTlhMjljM2I3YzMxZjYyMzAxMjEgcHkzaworNzMxODggYWJkMTNhY2ZmNWRiZTJiYTk0ZmMwM2RiOWE4OWFiNmFlNDM5NTQ0NSByZWxlYXNlMzAtbWFpbnQKKzczMTkwIDQ0MzliMjJjZjZlYWZkZTc5M2MxM2NmOTg4ZDFiODYwOWY4ZWI2MjggbGVnYWN5LXRydW5rCis3MzE5MSAyODc4ODcxOThlMmZhNzI0ZmY0NmM4YTJiNjY1NjJjMzg5YTUyZGI5IHB5M2sKKzczMTk0IDBjOTRjNWNhNTVkNTdmNTMxNzI1ZmFmZDMzMGUxYTFkZGY2NDgwNDIgcHkzaworNzMxOTUgZjQ4YTA1MjE0MjgxYzA4MzMxOWIwMGM3OWVmYzUyNDczMzdlYjg5YyBweTNrCis3MzE5NiBkMDQzNzhmOWZkYjQ1NmI3MTA0MmI2ZDY5ZjViYzgxNDQ0M2U0YjQ2IGxlZ2FjeS10cnVuaworNzMxOTcgN2RmMjkyOWEzZDA2ZmM0ODUyYTU1MjQ3NzBhZTEzNzExMWJmY2VkMSBsZWdhY3ktdHJ1bmsKKzczMTk4IGI3ODJmZDA1YTgwNjQyNTJlNWU2MDhhYjA3MTc4YTgwNTdhMjIyNDUgcmVsZWFzZTI2LW1haW50Cis3MzE5OSAwZDhlZDllNTU4ZjI4ZTMyYjg1OGRjNDZlODExZWEyZTFkMzJiMmExIHB5M2sKKzczMjAwIGFmZjk3ZTUwYTIwNjBhNzdiNGVlYjA4OTY2MzgxMzBmNTMzMTllZWYgcmVsZWFzZTMwLW1haW50Cis3MzIwMSA5N2EwYTg1ODkwMTRkN2VkMmE2MjAxZmIwMGE5NTdkMzg5OGQyNWI3IGxlZ2FjeS10cnVuaworNzMyMDIgMDBkNTc3MmM4Njg2NjI1MjQ2YzJhMzlmYTQ2M2YwZjdkOWE3NDgzNCBweTNrCis3MzIwMyA1ZWNkYjgyOTQzNGY5ODYzYjlhZGIzYzM5ODZlMGUwYjE0YTRjZWRlIHB5M2sKKzczMjA0IDE4ZDgyM2U4YjYwMmNlZGU2N2UyODYyZjQzYjFmZDlkZDhkM2IxYTEgcHkzaworNzMyMDYgZDViZjA4Yzg2MWE2NDI1ZThmMGRhYmMwMjYxNDI0MjI5ZjdmZTM4ZiBsZWdhY3ktdHJ1bmsKKzczMjA4IDNmNjIxMTQwZWZjNGEyZTIzZTlhYjUwYTVmMGEwYWZiZDkyODIyN2YgcHkzaworNzMyMTAgOGZhNGNjYTlhMjJjZTQ5MzA2M2RmYjE3NDEwNzE0NjliYzdiY2ZjMCBweTNrCis3MzIxMSAwMzFiOTYzZjJiYzI3NmQ1ZmUwMDUyNGRmOWQ0NDhlYjg3ZjI0MzhiIHB5M2sKKzczMjEyIDg0MzE3OGNmMDg5OWQ3YzlmZTZlODRjZjk4OGEwODYwMjg5NzRlNzMgbGVnYWN5LXRydW5rCis3MzIxMyAwZTA1NGM2NTcwNjI0MDJkMzc4YWI0NWRkMGQ5NTU0ZWYyMjc2YjQ3IGxlZ2FjeS10cnVuaworNzMyMTQgZTliMGRiNTUzZDAxZmE4MGYzOTQ0ZjgzNjMwNWE1NTY5NjVmMGNhMSBweTNrCis3MzIxNSAzYzQxNTczNDkwY2I4NWM3N2EyZTlkODlhNjkxYWQ4YmIzMjViNTc5IGxlZ2FjeS10cnVuaworNzMyMTYgNTBiZWE1MzM5ZjE4MjJjOWRmOWU4YTFmM2Y3N2VlMzc5MDQ5ZGE1YiBweTNrCis3MzIxNyA3NDI0NjEyOWJkMjIzM2FjYWFkZTkyM2Q5MWQ2NTVmYzRhMDAzZWVlIGxlZ2FjeS10cnVuaworNzMyMTggZGRiNTBjM2I4NmYyZTNkMWJlYzNkNTUyYjI0YzIyN2Q0YWY0ZTU2ZSBweTNrCis3MzIyMyAwYjA3NTMxNjczYWNkMmI0NWFkNWQxYTcwOWE0YTMxNWU2MDZjMTkwIHB5M2sKKzczMjI0IGEwN2VhODJhNWJiMGNjODE5MzhlZDg1ODQyMThmMmJmODUwNjk0ZGEgbGVnYWN5LXRydW5rCis3MzIyNyAzOWNiMDFiMGZjNjQ4ZjMxZmFlMTE1M2JjY2FiNjQyZDA5NDU5YWFlIHJlbGVhc2UyNi1tYWludAorNzMyMjggNjg2YzE1Yjg2NzQ4OThjY2U5OTI1MGY3NzVjMjBmZjlmMTJiZGVhMSBweTNrCis3MzIyOSBlZWY1ZDFjZTZmNGI3MGQ5YmNmMjM0MzhmZmNkOWM5NjlmNzE5ODNiIHJlbGVhc2UzMC1tYWludAorNzMyMzAgZDQ1MjY5OTU2ZWZmZTIyZGFjZDVlY2RmMWQ0NmEwNWU1MTBkYzc2NSBweTNrCis3MzIzMiBlZDZlZDNjODM5ZjViYzkzYWFhZDNlYzA0N2QwZjRiZDE0ZDc0OWMzIGxlZ2FjeS10cnVuaworNzMyMzMgM2E3ODRiMjE3MjIwOWYzYzkyNDQwNmIxYWNkOTQxZTdjMzE0ZTIzZiBweTNrCis3MzIzNiAwODA1ZWEyMTExMjIwZTQwYmU0MWQ5NjI2ODhhMmMyNjA5YmY2ZjgyIHB5M2sKKzczMjM3IGQ5OTIyODI5YzIwNDM0ODI2YzliMDIzMjk1YTVkMTAwNDVlNTEzMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjM4IDAzYmVhZDcyOTQ3ZWY5YjVhZmRjNTRmMTgzYWZiMTZkZTFjNDZlZTYgbGVnYWN5LXRydW5rCis3MzI0MCA4MTBjMjVmMTljZDk0YjJiOTAzMDM0NTNkZGNmY2U0ZmM1OGNiNmM5IGxlZ2FjeS10cnVuaworNzMyNDEgZWJlYjRkNjdkYmFlOTY2OTcwN2RiMzI4ZmM4N2UwMjMxMWI4ZGM0MSBweTNrCis3MzI0MiBjMmNlYzU2ZDBiOGExMTVhYzIzZDQ1Njg4MjE2OGJmMjE2YTM5NjU4IHJlbGVhc2UyNi1tYWludAorNzMyNDMgY2VlZjBhNzhiZjg3OWYzMDE3NDRlYjViZjI0NDdlM2MzNTk0YmQ0MSBsZWdhY3ktdHJ1bmsKKzczMjQ1IDA5NGZkMzM1YTQ3MTAyMDQ1YjBkNzdkY2EwMjk5ZjY3MmEyMGNiNzYgcmVsZWFzZTI2LW1haW50Cis3MzI0NiBlZjc0MzEyZDcyMTU1ZjcxODBkMjhlYjAxMzM2MDE4ODMyZGM0OWVjIHB5M2sKKzczMjQ3IGU0YTdjNDhkZTYwM2JkZDBlMDBjMTAyODMwN2JlNGQzYzIwYTVjOGQgbGVnYWN5LXRydW5rCis3MzI0OCBhZTliNWQ0ZjEyMjlhZDZjMmU0MmYwNzY1NGVmNThiMGE4ZDk2YTcxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI1MCA2MDI1NTlmYTUyOTdkNTE5MWMyNDYyN2YwMTFjYjM2NzgwMWNhZGYxIGxlZ2FjeS10cnVuaworNzMyNTEgZGEzM2JlZDVkOGM0ODYyOWQyMGU3MDBjYzc3MjIxZDVlMmNmMzRmMiBweTNrCis3MzI1MiAxMTJlMWJiNTdlN2IyZGZhNTdmMDE2NTczMjY0MTNlZTEzMDlmZmJkIGxlZ2FjeS10cnVuaworNzMyNTMgOWMwOTE1NDRlMWRmMjc4ZWVhNzRkZWU4ZjE0OTg2ZDY0NTUyZTIxNCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNTQgNTc4YmFmN2QzMTE0NzMyMDFiOTI0Y2NiNjAzMjYxZDczNzgwOTJmNiBweTNrCis3MzI1NyA4MWE1YjFlYzkxMDVhYWI3YmNjM2NhMDYwYjZhMTEwNWE4MTIxYzMxIGxlZ2FjeS10cnVuaworNzMyNTggMTI4NTNkYjNlZWEzN2NlZDU2MjAxYjhkZjBhYjZkZTI5YTE2MWU3MiBsZWdhY3ktdHJ1bmsKKzczMjU5IDFmOGQ5ODcyMGFjY2M5OTlkMDE5ZDdhM2Q3MDE2MWI0OTliMDJlZjIgcHkzaworNzMyNjAgODg4OGE2ZmU5ZGQ3ZjI5MGQ5M2Y2ZTg3OGE5MGZiNDgyZDRlMjg4MCBsZWdhY3ktdHJ1bmsKKzczMjYxIDk1NDdmNGJiZDVhNDVmODU5ODEwYzllOTAxMjYzZmM5YjM5NThiOTIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjYyIDMyZTM0NDgzZTZkYjcyMzNlZTRlNDE4Mzc0Y2U0NDU4NGRjNGJkYzIgcHkzaworNzMyNjMgY2U4OTU5MmE5M2E0MzZlMmExYTVlODdhZWRmMTk3ZmY4ODRjZTc5ZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjQgMzE3YTE3NTg0MDU4MDM3YzhiZjU2M2EwN2NkYzZmMjNjYjhmMWY3NiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjUgNzg3ZjI3ZWQ3MmMyOGQzYzdiNTE1ODg0YzFmM2M0ZjQ1NTBkOThkNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjYgMTlkOGEzYTRlMTQ5NjAyZTVkOWZmNjIxN2UxNGEyMzBhZGFlYWQxNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjcgN2VlNTc5OWE3YjUxOTU2MTJlMmU2M2U0N2Q1MTQwNmYzZmVmYjdiZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjggM2Q4MzU3Y2NmNTgzMWVmZDlmNjM1OTRkYTlkNDBmOGY1MzNhYTJiNSBweTNrCis3MzI2OSBmYWZiOTkxYmVhNmIxYjA3OTdlNTgzZTJhYWJkNWIyYjYxZGZhMDY3IHB5M2sKKzczMjcwIDc4M2Q0MDQ0ZGMyZGY5MjlhNThjZDg0MDYxZTE2NDMxNTJjNDhjYWMgbGVnYWN5LXRydW5rCis3MzI3MSAwZWJlODg5ZjEwNmZlOWRmZTA3MjE1OTY0MzQ0ZTZlNTI3NWE0YjkwIHB5M2sKKzczMjcyIGRhNjg3MWI5ZDg4NGM0ZTg3YTI4NzA1YjZiZTQ3ZGZhYTU1ZTYwNjggbGVnYWN5LXRydW5rCis3MzI3MyA2NmE1YmIzZDhhOGQ4MmQ4ZjkxZGMwNGEwYzFmNjcyNjRlOTdhMzE5IHB5M2sKKzczMjc0IGQ2NzliNjA5MDdmNzY5OGIwYzBhOWMxM2MzODliOWRhYWMyNTBjYTEgcHkzaworNzMyNzUgM2UyYjhkZTRiMTZjYzgyZGFhNzA5YzIxMWU0NGIyN2VlYmEwM2RiMyBsZWdhY3ktdHJ1bmsKKzczMjc2IDA2ZjVmNDI2Yjg0OTExODZkNWU4NDJmODFkZjY4NzU2NWVhMjhkZGQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjc3IDg4OWI1ZmQ4ZGEzMDlhNTVjZGFkMjY1NmFmNDcxYmZhNjhjNWZkODEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjc4IDg1MTYzNmI2MmFkOTVhYjdjY2VkYmY0NTY0MThlY2Y3NDljYTRhYjQgbGVnYWN5LXRydW5rCis3MzI3OSBkOTQ1ZTZkZTUyMjdiNmJiYjJiZjdhZTQ3MDEwMTA3YjhiZTY0ZWI2IGxlZ2FjeS10cnVuaworNzMyODAgZDc5ZmRlMTA0MWJkYzBhZjc0ZjkwOGE3NDg2ODFmYTkxMDY5MmU4MiBsZWdhY3ktdHJ1bmsKKzczMjgxIDA1NGVhNDdkNmNjNzM4MzZkMzdlZTk3NDU3ZDVhZjA3MWI4OTM1NjkgbGVnYWN5LXRydW5rCis3MzI4MiAwYWJmNTYyYjFlNmNmNmU4OGVmZWU4ZGE4MTcxY2JjYTM0MWMxNmE4IGxlZ2FjeS10cnVuaworNzMyODMgZjdjOWU3MzQyMDg0MDA4MmQyNzZmMzdlZjYwNDBhOGQwMzA1YTliMSBweTNrCis3MzI4NCA2YmZiNTk1MjExMzY0N2QzNjUzZDhkMzJmMjAxYWZjMGM1MDE5ZTg3IHB5M2sKKzczMjg1IGYwMDE5ZmY2YjNlNWIzMzRiZWQwZDAxNzhiOTc5YjI2Yzg1MGU4MTIgcHkzaworNzMyODYgMWVmMTQyMWE2MTIyNTUzMGI0MjdlZDUxNjdhMWFhYzVhNjNkN2M3OCBsZWdhY3ktdHJ1bmsKKzczMjg3IGVmNjVjYzQwMmM5MjMxNjJhYjU0MmY3YTMwODEyNDI5MjViMGNlZTYgcHkzaworNzMyODggY2Y4ZmZhYjQ5MDAzMzVhNzdlYWQ1MjlkNmFmNjYxZWRlNDVmMTVlNCBweTNrCis3MzI4OSA5ODU1MjEzMWY2NDFiYzNiMzE0NGVmYzg3OWE0NzkyOGRhODRjZTY3IHB5M2sKKzczMjkwIDU1ZGQ5ZWQyM2VlYWVjZjI4MGFhYjVmOTVkMGFjMzJiZjA2ZjZmODAgcHkzaworNzMyOTEgOGY5Mjg3OTI1NDdjYWY0ZTYwM2JiOGZhOTE4MzcyNTZmNWY4MjA3ZiBweTNrCis3MzI5MyAyN2UwODljYWI3MjlhMWRmZjQ5MTc0ZTJhODk3YjhlMTdlMjkwMDJmIHB5M2sKKzczMjk0IGI1MDRkNmQzNGZjZDcwODBmMTY3ZDkzODRlNDIwYTJjZTk3ZDUzZWEgbGVnYWN5LXRydW5rCis3MzI5NSA3YWQyZjIyZjEzZTZhMDBjNDhkYjcwZjVjN2M1OTU5NzI0NjAwOTI2IHB5M2sKKzczMjk2IDY5ODU1N2NjNWRjNTA3ZjhiMjI1ODI3M2JmNTYzZjdhM2ZmY2Y5MmEgbGVnYWN5LXRydW5rCis3MzI5NyBjMDE3ZDE5MTY3MzE0MTczNmI1YzcwN2I0ZGNiYWQ2MTdlN2QzYzZjIHB5M2sKKzczMjk5IGNhNTE5OTYwOTlmZGQyNDc0NDhmNjNiNzVhM2JjOTY0ZGQ4MzMzNjMgbGVnYWN5LXRydW5rCis3MzMwMCAyNzk1ZDZmYjIxZTI2MmQ5YzcwMmY0MzIyNDlmOTJiYTA4NTZlNmFmIHB5M2sKKzczMzAxIDU0MTg5ZDVhNjY3NDc5NzQ0NWQ3Y2M1OTE3MjBiMWM4OTZkMmU5MjYgcHkzaworNzMzMDIgMjU1ZGI3MGJiMzE2YWMwZTJmZWFkMzkxM2NjMTQwMGFjZjFlMTE2ZSBweTNrCis3MzMwMyBjZWIyNjJkNDRkNzQ2NDE0NmQ2M2I4NGJlNDQ0YWMyZTI2NTkzNTFhIGxlZ2FjeS10cnVuaworNzMzMDQgNzFjYjYwMjllODkyNzk1MGU3NWQ0ZmFjMDcwYWE4ODBmNTk3ZjY0YSBweTNrCis3MzMwNSAxYzdlYjViNjIyOWRkZjUyOTEyZDcxY2M0OTJhNzY1YTI2ZjQyYWExIGxlZ2FjeS10cnVuaworNzMzMDYgMzVjNWMxZTA3YTQ0Y2YzMDc1ZDM2MjI2OWZiOTA2NTgwNTc1MjlhMCByZWxlYXNlMjYtbWFpbnQKKzczMzA3IGZkMGFkMTE1ZTIzODI5YWI5NmM4YzJlNmYxOWE1NmM1OTk3NjM3YmEgcHkzaworNzMzMDggODZiMzJlMWZkOTlmMGM3ZjgxZTk1NTM2MjM5OWY5MTYzMjc0MDBkNSBsZWdhY3ktdHJ1bmsKKzczMzEyIDFiODYwMmMzOGZkMGM3YWFhNzg2OTRiNzhiZDFiYjlhZDk1MjNkOGEgbGVnYWN5LXRydW5rCis3MzMxMyBjNGE4MWNlM2M4OTMyNzAyMGM3NmIzYWQ1MTdlOGZmYWZlY2E5YWY1IGxlZ2FjeS10cnVuaworNzMzMTQgZWEzMGFhY2IzMTgxNjM3ZThmOWUwMDljY2FkMjU0NGUwYTRmNDlkMSBsZWdhY3ktdHJ1bmsKKzczMzE1IDg3NTM0YmZkMWJlOGI3YmRkMjBjOTBjODIxZmFjYWE2Yjg5MDdlYWYgcmVsZWFzZTI2LW1haW50Cis3MzMxNiBkMmQ1NGRjOGU0MDBmYWE2MTQwYmJkMGUxNjU2M2Y1YTdhNGQzYmY1IHB5M2sKKzczMzE3IDUxNzdiNjc4MGNiNzQyZjAyMzFkNTBhYmFmOGNjMWJmOTAxZWE2MGIgbGVnYWN5LXRydW5rCis3MzMxOCBiOTZjOWQ4ZDVmOTg1ZGI2ZTM4YmI2OWVhY2I1NmFmNmZmYjhiNzdjIGxlZ2FjeS10cnVuaworNzMzMTkgNzYwYTg4NjZhZWZmYTI0MTBhNzM0ZjIzMDU5NjZkMjFjZDg3ZWRlMSBweTNrCis3MzMyMCBhYjNhMjEzMzZhODRkNmI3ODhkNTRkNTFkZTRiMDFiYjc4Njk0YjFlIHB5M2sKKzczMzIxIDQ0NjAzMGYzMTBhOTUxNWM3YTE2ZDg5ZjYyMmMyZDhiM2Y3NmExNTMgbGVnYWN5LXRydW5rCis3MzMyMiA5MWQ0YzUxNGU3OGMwMjk5MWU1Y2ZlYjZkZThiNTM5NDE2YWUyNjQ2IHB5M2sKKzczMzIzIGY1ODI4NzQyYjQ2ZmVkMjQ3OGQxYmM0Yzg0YjA0MTNlYTc2MzY0YzAgcmVsZWFzZTMwLW1haW50Cis3MzMyNCBkNDlkNDhmMzM1YzkwMDliYWJkMGNjNmQ3NzljMWVlOGUxMTQ4ZDAzIGxlZ2FjeS10cnVuaworNzMzMjUgOTE0NWY1OGY3NDk5OWE3MzMwYjFiMDU5YzdjYjM0MTA2Njg2MWRlNiBsZWdhY3ktdHJ1bmsKKzczMzI2IGZhNjdiZjY3NGFmMzYzZTQ0NjQ1NWY4ZGE0ZGI0MmE2NWVjNWJjYzIgbGVnYWN5LXRydW5rCis3MzMyNyBlYzg0NWM0ZTNkNzM2YjZhOTBkYzY1Y2RmZDI3NzdhOWM0ZjNkZDFlIHB5M2sKKzczMzI4IGI4ZDE2MGFkMWM5MjU2MzY1NDgwZjQzOTZhNTBjNTgxZDZlZTFlYjcgbGVnYWN5LXRydW5rCis3MzMyOSA2NjI5N2EwNzRkOGJlOWMwNDUxNzc5MmI5ZGVmMWRjMDE2ZmZkNDhlIHJlbGVhc2UzMC1tYWludAorNzMzMzAgMDQ4MDcwMDU1M2FiMjNmY2VlODVmNjM3OWY1MDViMGYwYzlkNzEyYSBweTNrCis3MzMzMSA3NDRlOTg0ZjE4NDFhYTA1ZjUwOTRjZmYwMjYxNzgyNmFhZWEyZmI5IGxlZ2FjeS10cnVuaworNzMzMzIgNGZkM2E0YWVlZTQ3M2U3MTA3MzgyN2I0YmI0ZTRhOGUzNGIwMDRjOSBweTNrCis3MzMzMyAxM2E5ODc0ZDhmNDc2YTQyZGIzZjU1ZjAwYjczZjI3YjZlN2Q5ZGI4IHB5M2sKKzczMzM0IGI2MDk1ZGM4ZjM1YzA3MGM0N2U4MjIxOGIxZDNhZjczZDMwYzI1NjUgbGVnYWN5LXRydW5rCis3MzMzNSA0YWNkOTM2Y2Y2YjZmOTcyNzI2MGJhNWI0NTJiMTczN2RmNzA1N2FhIGxlZ2FjeS10cnVuaworNzMzMzYgZWRmM2RkYWEzNDZiZmQxMmIwNTY2ZjhiZmI4NDdlMDc5MjI4MmJlOSBsZWdhY3ktdHJ1bmsKKzczMzM3IDAzZDM4YTJhYmM0NmE5OGJiMmVjMzQ2Yjk1ZmRiOTk2NTc2ODVkZTEgcmVsZWFzZTI2LW1haW50Cis3MzMzOCA2NTdhOGFlMGJiYzk0Njc4ODRlNDkwNjVhYjQ3MTIzMjM5MmM5ODQzIHB5M2sKKzczMzM5IGY0MWIyODVmMmI1OWFjZmU4YzZlYTYxMDNjZDUwMjY3MjRiZmMxNTkgcmVsZWFzZTMwLW1haW50Cis3MzM0MCAyNzE5YTg4YzIyOTRmNDA0ZDFkYzJiMjA2ZjRhYTIwYjFhNzE4MjBhIGxlZ2FjeS10cnVuaworNzMzNDEgNjU3OTNhY2MwMDk1MDAyZmEwZjYyMmFjMWQ5MjJiNWNjYWZkNjFkZCBsZWdhY3ktdHJ1bmsKKzczMzQyIDBhZGYwZmE3OTkzYmNlYTQwYjFjNGRmNWY1NjYwMDk4MmZmZDAwYWYgcmVsZWFzZTI2LW1haW50Cis3MzM0MyA4YjNhZTNhMzgyNTA3NjE0ODdlOWQ2YjkxZTkxNmJhZTg0ZTA0MDBlIHB5M2sKKzczMzQ0IGY2MzE0NzVhMjY0MmIzYjM4YjQ3NWRkYzViMzE1NWJlMTM2ZmM4M2IgcmVsZWFzZTMwLW1haW50Cis3MzM0NSBiNDYzNWRhMzEwOTk5MjI4ODkzNzQ2NDBhNmQ1MWFmM2YxYzhiN2ExIGxlZ2FjeS10cnVuaworNzMzNDYgODBlZjNiN2E0ZTBkZjQ1YTFkZTIwYzQ4NjVhZjVmMjVkNmNiYWFhYSByZWxlYXNlMjYtbWFpbnQKKzczMzQ3IDQ3NTVmODk4YjlmZTBkNDljMWQ2NTY1Y2Q2ZjU0MDZmYjExYWY5YjUgcHkzaworNzMzNDggMGRlNjZmY2VmMGZhODk3MmU5NDNmMWQ3MGVkMTRlMzhmMWQyOTE5ZiBsZWdhY3ktdHJ1bmsKKzczMzQ5IGVjNTkxN2Y3N2FjMGU2ODhmZjI2Mzk5NjlmZjhhMjIyNDU4MGYxNmMgcmVsZWFzZTI2LW1haW50Cis3MzM1MCBhMmYyMzc2ZTFkMjAxYTI4OGQ2NTE5NzY0YzkyNmQ2NTA0YjA4YTJmIGxlZ2FjeS10cnVuaworNzMzNTEgNjAwMzZlNTBjZDE4Njc1NTQ3ZDk1YTgzMDJlNzcyZDgzNWZhNTYzMCBweTNrCis3MzM1MiAwMDMxYmEyMTM5MGExYjNhZWY4Yzk5OTQyYjhkYjRiZjk5MDNiNTMxIHJlbGVhc2UzMC1tYWludAorNzMzNTMgMTEyODgyMzk3OWRkZTk0MzI1YmMzMmEyNWNiNjFiNzc4YTNiYTg2MCBsZWdhY3ktdHJ1bmsKKzczMzU0IDBkOWJkOTFlYjg1Y2I1YzRlNDRhMThmMjljMmYyYjY1ZjM4ZjdiYWQgbGVnYWN5LXRydW5rCis3MzM1NSAyMDlhNTM5ZWJmZjgwNmMyOWM2MzI3OWUwNmJjYWMwOGFmZjAxN2M5IHJlbGVhc2UyNi1tYWludAorNzMzNTYgMzI0NGZjNDc3M2Y1NzcyNWVmM2RhZWYwZGRiZDc5MDkyMGI2NDc2NSBweTNrCis3MzM1NyBiYjYzZmQ5NzlmY2QwYTgxNDQ3YTY3MGVmMWVkNTIwOTE5ZTgwMmIwIHJlbGVhc2UyNi1tYWludAorNzMzNTggNWEzOTg1ZTVkYWUzYjU3MzAzNmU5ZWE1ZWEzZTM3NTJiMmQ5MTEyMyByZWxlYXNlMzAtbWFpbnQKKzczMzU5IDE0MDE4MmFjY2QxZjU4MTdlYTE5NmRlOTQyNzAwZWIyMGQxZWI5MjcgcHkzaworNzMzNjAgNDE3OWEzZTY2MTIzMWY5M2NjNTUwMjc2ZTUxZDllOTA4NTQ0YTBkOCBweTNrCis3MzM2MSA5NmEwYzNmNmVmOGJlYTI3Mjg5NTVjOWU1ZjBhN2I1MzY3ODhmMGJjIGxlZ2FjeS10cnVuaworNzMzNjIgMDI3NDQ0ODEwZTNmMzljYjM1OGU2MTE0NDgxNGM1MDk1ZjU0MDMxMiBsZWdhY3ktdHJ1bmsKKzczMzYzIGExZTA2ODFhY2IzNmYxYjdhNzg3M2E0MzQwOGU2MjljODdjN2ZjOTYgbGVnYWN5LXRydW5rCis3MzM2NCA0MWU2Y2Y2ODVlZDE2YjI5ZGU3ODlhODYxYmRlY2M4ODU4MzcxYzk1IHB5M2sKKzczMzY2IDIwMTcwYmQwYWYyNTRkZWQ5N2ExZmQ3MzNlYWNlMWUwNTJiNWQ4ZjIgcmVsZWFzZTMwLW1haW50Cis3MzM2NyA3Mjg4OWEwYjhmMzIyYTczOGYxNmRlZjg4NTZjNWZkYzY1Y2I3ZGY1IGxlZ2FjeS10cnVuaworNzMzNjggOWVlOWU3YWE4YWJjMjQ0MjU4NWQ5ZDdhOWZhMjk4YmQyMDc2ZTE3NiByZWxlYXNlMjYtbWFpbnQKKzczMzY5IGUyMDQxYzVjNjAwNjNmOTNkZWQwYzE3N2IzMDE5NDY5YmE3MzE0NWMgcHkzaworNzMzNzAgNzcwMDQwOGY2NWZjNDFmZmY2MzU2MTYxODBkNzU0MmIxNzRhODk3OSBsZWdhY3ktdHJ1bmsKKzczMzcxIGQ2NmNhZmQ2YmMyMWIwOThkOGY3MjBkZWZmNDcxNWJkNjU0Mzg1NWYgcmVsZWFzZTMwLW1haW50Cis3MzM3MiA1ZWE4NTA3ZDliZTEyYTBmNjU2NzRhZjZiYjBjMTg4MjIwOTRkNmVkIGxlZ2FjeS10cnVuaworNzMzNzMgNjBhMGFmMzJhNjYzZTJhZDI2NTg3NjYwZGI0MjhhMjU3Nzk1MjcxOSByZWxlYXNlMjYtbWFpbnQKKzczMzc0IDEyYmY4N2NkMjc0MzBlMGFkZjczNjhmZmI5NjU2NzI5NWRiNjRlZDUgcHkzaworNzMzNzUgNGY4YTQ0YjUxZDBjMWVhZDRkYzUzZmU4NTBhOGI5MjUxMDlkNzhlZiBweTNrCis3MzM3NiA1MzA2Yjg0ZDRmY2VlYzY5ZmE3NjgxODAzZTUzMDBkYmRlODhmNzUwIGxlZ2FjeS10cnVuaworNzMzNzcgNjM3MGQ3MWUzY2EzMjcxODYyYTU5MjYzMDg3ZmNkY2VhYmNjN2JlNSBweTNrCis3MzM3OCA1NWQyMmIwMjQ0NjRkYjI1YTVjYzUwZDY0ZDExNWZkMjY4Yzc1YzE2IHB5M2sKKzczMzgwIDBlMWIzYzI0ZDNlMjdhNjZmMmU4ZDc4ZWU3NTQ1MTVjMzVmMTM0NWMgcHkzaworNzMzODEgOWYzYTI1NzQzZjAzZmI1MGE5ZjEwYjRkZjZmMmUxNzJmZWFlMjMyNiByZWxlYXNlMzAtbWFpbnQKKzczMzgyIGJhMTAyNTQwZWEzNzM4OGFjMDk1NWU5ZDhhNTJkOGZlZTA4ZmZhN2YgbGVnYWN5LXRydW5rCis3MzM4MyA3Y2Y4OWVkOTBmOWQwNjRhZTRhMWQyYzg5ODRkMjA5ODBkNGY4M2E5IHJlbGVhc2UyNi1tYWludAorNzMzODQgZGFlOWJlNjM3OWIzZTU4NDE4N2RhODZkZWUyNjc5MDNiYTVjNGUxMyBweTNrCis3MzM4NSBmY2JjZDkzMTMzOGI4OTM5ZTkyNWQ2MWYyZGVlNTlmOGJkMGExZDQ5IHB5M2sKKzczMzg3IGM5NDk0Yzg4Nzg4ZjViODUyYmQyZWY5ZjcxOGVjYWM2YWFjMjgyZjUgcHkzaworNzMzODkgZjU3NjgwNzQ4ZWNiZDY5NTVjNzY5NTEwZDdkNzQ4YWU3Yjg0M2Q2YiBweTNrCis3MzM5MCA2NTI1NTFhZTQ3NjcwMmYzNmFmMjVkNjlmM2RmNjhhZjE2MjYwNGE2IGxlZ2FjeS10cnVuaworNzMzOTEgMDdlMmVlMmZkMzZkMzJmYmM0ZjVkYmVmNDBjMzczY2Q1ZWMyOTQzYyBweTNrCis3MzM5MiA2NDkyYjZlY2U1OTg3YWJlNGMxZjQwNjZmYmE3NzRkNmEzMDJiZjgxIHB5M2sKKzczMzkzIGYzNDc1NGE3NDVhZTJhMmE4NDU3ODkzMDc1NzM2ZTBlMTc5NmI0ZTUgbGVnYWN5LXRydW5rCis3MzM5NCA3NjBhNzEwZWI2YzE1NjU0YTk5YTUyODJjYTk4YWI5YTczYmM3YmE5IGxlZ2FjeS10cnVuaworNzMzOTUgMDE3YjRiNjQ0ZmFmMjQ1MzEzYTRhNTc3OGM4NTRlMWE3ZjJiODlhNiBsZWdhY3ktdHJ1bmsKKzczMzk2IGNkZjI1MmM4NzQzMzZiMDVjMWFhNDU5ZjQ4Nzk1YjI0NmU4ZDQ1ZTMgbGVnYWN5LXRydW5rCis3MzM5NyAyNGM4ZDFhYWJhZGUzMTk5MzViZDNiN2YwNWQ2NDVjYjg5MGZlODAxIGxlZ2FjeS10cnVuaworNzMzOTggOTIxZTU2OWQxMjE1NzdmNWIwMzc0NjdjOTI0NDRmNDg1ZmY5NmNhNCBsZWdhY3ktdHJ1bmsKKzczMzk5IGQ4MzM4YTlhMWUzYTg4MTAwZGU0MzMzNmY4ZmM2ZDQ1OTNhMjYxZDIgcmVsZWFzZTI2LW1haW50Cis3MzQwMCBlYjYxY2NhNWY1NGRlM2FhYWRjNDgyNjVmZjJkNDk5ODhjNjZiNjE1IGxlZ2FjeS10cnVuaworNzM0MDEgYmVlNDZmZjBlNTc4MzVhZjM0OGYxMzFmNjI2OWY2YmIyMzAxZDliNSBsZWdhY3ktdHJ1bmsKKzczNDAyIDQ1M2ZlNDg4NDJkMGIxMDg0NWFjYjM1ZmU1OTAzZWQ3NWM5NThlMTQgbGVnYWN5LXRydW5rCis3MzQwMyA3NWM0ZDNiYzZjYzg4NDAzNzdmOThkMTMwYzYxZjBkNDhmODUxYWFkIHJlbGVhc2UzMC1tYWludAorNzM0MDQgMGMzNTdlM2ZjM2QwMTdjNjZhOTQwMTdjZGE3NWRlMzY4NmNjNDM5YyBsZWdhY3ktdHJ1bmsKKzczNDA1IDc4OGUxMzk3Y2U3Nzc0NThmYjBkYzhmM2EwZTk2YjU4YmU0YThjZjAgbGVnYWN5LXRydW5rCis3MzQwNiBiNDMzOThlYTU0OWRlNDQwZTYyODUzYzU4ZTBiODgzZTYzZWQ5M2JkIHJlbGVhc2UyNi1tYWludAorNzM0MDcgNDdlMzM2NWUyMTc3ZTg4YTBhOTlkZTEyYTMyZjQ0NTk1YWJjNWMzYyByZWxlYXNlMzAtbWFpbnQKKzczNDA4IDAzMmMyZTVlMDYxNGYzNzBlODBmOTZhNTMwNDQ2OWI0NjVkMTQ5MmUgcHkzaworNzM0MDkgMDRjY2VjMDQ0MWIyYTYzOTRhYjk0ZDZhNjQwNTI0ZDAxNDFlYzk2YiBsZWdhY3ktdHJ1bmsKKzczNDEwIDAzYTg0OGQxY2I2ODI3NmE4OGEwNmZiNzY3M2JjMWFkZDRhNTNiMDkgcHkzaworNzM0MTEgMjVlZGM1ZjcyYTcyZWEzYzkzZDY2M2NlZjc1ZmI5ODUwNDRlZmU5YyBweTNrCis3MzQxMiAwYjg3ZTQzOGUxYjUzZTNmODEyY2FkOTYzYTdmZGI2NWQxOThiYTJmIHB5M2sKKzczNDEzIDE5ZTVkZmNlMGZiYjAyOTViZDkwNWRjNTc0NGJjYWM1MGY2ZWVkODQgcHkzaworNzM0MTUgMjZmOGFlNmYwMzdkNmI1ZTIzYzIwZTQ1ZWI3NjZhOTFhZGQxZmU4NiBsZWdhY3ktdHJ1bmsKKzczNDE2IGE3NjRkYjY0MDI4NDJiYzc2MTg0YTFmZWNhMzI3ODI2OGFmMDUyZDkgcHkzaworNzM0MTcgOTEyNDIzMTM1NDgzODE2MDZlY2JkNzdjNmViOGQ1NDE2ZjU4MGNmNCBsZWdhY3ktdHJ1bmsKKzczNDE4IDIyMTI3NDBmNDU0NDY5YmU4MTE4NzViOTUyNzE1ZWRhMmYyODQzODEgbGVnYWN5LXRydW5rCis3MzQxOSBjYjY2NDczY2JiZjg4ZDlmMDE4NTcxYWJhZWIxN2JhOWU2NDgwZWEwIGxlZ2FjeS10cnVuaworNzM0MjAgM2ViODUxMDgwOGM5ZDBlNDMzMGI0NGU0N2FhOWIxYjUzNGY3OGVhMCBsZWdhY3ktdHJ1bmsKKzczNDIxIDQwYzhjMzU0OTJmMTRhMjg5NzY1NGZlYWQ3NDE0ZDNjYzE3Mzg5MzUgbGVnYWN5LXRydW5rCis3MzQyMiAyNDdmOGQyNjhkNThjNDFhMjQ0NjJiM2RkNzczYTY2NDI0OGNiNWM1IGxlZ2FjeS10cnVuaworNzM0MjMgZjExOGFhYjY1MGRkM2U5YzI0ZmFmY2MzMjMyMzIwMGU3ZTE1YjA2NSBsZWdhY3ktdHJ1bmsKKzczNDI0IDBiZTM3N2U2MDgwMWI2YWZlYjMyOWYyZjQ3MDA5YmVmMGE2M2QwY2IgcHkzaworNzM0MjUgMDE1MTAyOWRlMWQ5MTc0MGM0ZTE1ZmU3MTc0N2RhMmMwZmZkMzAzZiBsZWdhY3ktdHJ1bmsKKzczNDI2IDNjOGY0ZjdlNGE2MmViMWQwZTBhM2E5MTgxNjExODFlYmNjMDkwOTggcmVsZWFzZTI2LW1haW50Cis3MzQyNyBlNDExOWM5MGJmMjk1MzhkMDAyYmFmOWRlOWZkYWQ1NzNkODFkNDdiIHB5M2sKKzczNDI4IDkwM2VmYmY1MTFiNGZlZTE3OTQ5YWIyNGZkZjRlYjk4MWU5OGZmZDIgcmVsZWFzZTMwLW1haW50Cis3MzQyOSA5MDAwYTA4MTE1OTk0MWJmZTdhZmVmMjVmMmE0ZWRhNWZlMTJhYzAxIHB5M2sKKzczNDMwIDQ2NThmY2FhZmM3MzI4ODNmYTk3MzcwODI0MTA1MjhmNzlmY2VmNWQgcHkzaworNzM0MzEgYjYzNGQwZWM4ZDM1MTU4MzA3ZTgwYjcxM2U3NWVkMGJkZDg5ZjJiZiBweTNrCis3MzQzMiAzMTExMDc0NDNjYzEzNmIwYzNiNTBlNTdmYjE3ZTE1MmM2ZDI1YmUzIGxlZ2FjeS10cnVuaworNzM0MzMgZDhhYTQ4NTQ4NWE2Y2Y4YWEwYzQ3M2Q1MTAwMGI2ZmU1Y2M2YTczYiBsZWdhY3ktdHJ1bmsKKzczNDM0IGUxODMxOGY5ODVlZDJlMWNlZDY2ZjBhNjIwZTc5ZjdkMjMwMzRkMGYgcHkzaworNzM0MzUgMWIzYTE5MDM3Zjc2NDEzNWQxNGI4MjFjYWUxNzhmMGE0NTQzYmU3MiBsZWdhY3ktdHJ1bmsKKzczNDM2IDQzNzNmMGU0ZWIyMTMyYjkxZGU5NzlhNWQwMWM3OTYxZGQ2OTU5NGIgbGVnYWN5LXRydW5rCis3MzQzNyBjN2FjNzBhOTQ0YjUwMWQ5MWYwN2Y3ZDQ4OTJkZjAyM2QwY2QzMjE3IHJlbGVhc2UyNi1tYWludAorNzM0MzkgNGE1MGYwYmRjODA2M2E3YTY5OTZhNTA2MmI5NDFjNGY2MTQxMmVhMCBsZWdhY3ktdHJ1bmsKKzczNDQxIDIwMzQzYWEyYTNlYjc5M2QxNGZkMTRiOGY4MDBiOWNmM2M4MGNmYjcgbGVnYWN5LXRydW5rCis3MzQ0MiBjYjVhZTQ0MDFlYmZkYzY5MzI5MjFjNzlhNzc3YmI5ZTMyYTM4ODg5IHJlbGVhc2UyNi1tYWludAorNzM0NDMgOTgxNGQ3ZjY1OWEwMGVkZmE3NzFiOTI3YjliOWIxYzY2MjE1NGRhMCBweTNrCis3MzQ0NCAyNzdmZDA2NGI1MzAxYTYwYTZlMDhiYzI0YjU3NTM3ODcwNTc3NDRhIHJlbGVhc2UzMC1tYWludAorNzM0NDUgMDc2ZGI0ZGUwMzdhYjEwMWVkMGU3YmYxZmY3ZDI4ZWYxZGJjYjNjMSBsZWdhY3ktdHJ1bmsKKzczNDQ2IGFkMmE1OTYwMTI2ZGEyMWVkNjdkMTg1ZDQ2ZTlkMGVhMGFlYmFjZWQgcmVsZWFzZTI2LW1haW50Cis3MzQ0NyA0NWMwNWZkZDliMzJhOGY2NWQ4OGY3ZTU2YTA4NmFmYWUzMjNiZmE4IGxlZ2FjeS10cnVuaworNzM0NDggMzNmZWZkZTc5M2IwY2M0ZWZhYjIyNjZiYmRiNzM2Y2RjODY4ZjE5NSBsZWdhY3ktdHJ1bmsKKzczNDQ5IGVlYTRkMjM3YzE2ZDc1MTExMzljYjEyYWVlZDY1YTc1ZWIxZTJhMDQgcHkzaworNzM0NTAgODY1NTA2ZjM2ZTU4OGRkZTUzMDI1NTIwYzY4ZWE1NmY5NWUzNTg5NiBweTNrCis3MzQ1MSA5ODJmN2JhMGUxNGEyN2Y2YTBmZmNiYmFlZjBjZGMwOWY3ZWRhYWMxIGxlZ2FjeS10cnVuaworNzM0NTIgMzkwMmU0Zjc0ZWUyODE3YTIxYjZkMDNlOTk3ODcwZTRiNzNmZTU1ZSByZWxlYXNlMjYtbWFpbnQKKzczNDUzIGYwMTk1ZGFhZGZmYmIyNThmNjk0YWQ4N2IzZTU1OWQ3YjZhNWFmOWMgcHkzaworNzM0NTQgMDllNWY4OGM5YmRiZWQ0NmFlYzRlOTRjMDNmZTQ0ZGNhY2VlZDBmYSBweTNrCis3MzQ1NSBjNTY4MmNlMjM0Njc1OWI4Y2EwM2EzYzAxNWRlYTJjNGQyNTEyMjcyIHJlbGVhc2UzMC1tYWludAorNzM0NTYgNmI2NzAxYmExMjExZWE1Zjg4MmY3NmNlMTFhMTMwMmRhMDhhZTBlMiBweTNrCis3MzQ1NyA0YzZjZGJhMWIwYmIzY2EwMzRjNzU3ODAzMGJlMGFiOWQwMTk5OWYxIGxlZ2FjeS10cnVuaworNzM0NTggYzM4N2RhODM3YzRhMjNmZmJlNzdhYTVhY2MxMmRiZDg3ZTU3OWE2ZiBweTNrCis3MzQ1OSBjMTk4NmJiNDMwMGI3MjJiZmFiYWFiZjgwYjUzNWQ5ZjFlMDQ4OTZlIGxlZ2FjeS10cnVuaworNzM0NjAgNmYzMDU0YWZhMWEwZDhhYjEwZjliNjBlNGMxYjY5NzYxMmU2MTI4OCBsZWdhY3ktdHJ1bmsKKzczNDYxIGE1ZjMxYjMwYzdjM2NjZDI5Y2JlYjUwMDBjZDg5ZDJkMjgwOTRiZGMgbGVnYWN5LXRydW5rCis3MzQ2MiBiMGNiM2NiZGZjNDdhYjliNGFhODIwODZiNjNjMWJmNGU0ZTYzN2Q3IGxlZ2FjeS10cnVuaworNzM0NjMgMjJjNzkzNDFlNTgwY2EyYzNjNWIwYzQ2ZWQyNzZiZDFlOTgwMDdlNiBsZWdhY3ktdHJ1bmsKKzczNDY0IGQxMWRiY2Y4NDNkZjhjMDRjZGRlODRjMmU5OGE0NWRjMTQ4ZGU3ZGEgcHkzaworNzM0NjUgMzM0ODkxMTdkYTljNTYwOWM2ZDg1MDY4MDU2OTk5NzJjNjI4Njc5NiBsZWdhY3ktdHJ1bmsKKzczNDY2IGQ0YzY2ZmYxMjljMmM4MzMwNTg3MjViMGFiYjYyNjJiNTQzNDgzOWUgcHkzaworNzM0NjcgYWQ2ZjZjMjYxODdmOTQ0YTg5M2FlMDBlYmYxZDA4YjE1MWU2YzE5NSByZWxlYXNlMjYtbWFpbnQKKzczNDY4IDdlZGMzNzg4M2U4YTFkNmQzZTE1Yzk2YzY5MzU4YWM1MTY2OTU3NWYgcmVsZWFzZTMwLW1haW50Cis3MzQ2OSAzMTVkN2FlNDJlYTcwMjUzNTI3NTYyYzE5YWQyMzNlY2M1MTJmNGExIHB5M2sKKzczNDcwIGE3NWUxOGQ4MTY2YWMyYWZmYTExZjNkNTZkMTQzNDBhYTRlMjgyNTEgcHkzaworNzM0NzEgYTIzMGY4ZDliNDE5MjhjNTJjZjhiMjNlZjZlMGJiYTI0Nzg2NTRlYSBsZWdhY3ktdHJ1bmsKKzczNDcyIDM3MjIzZWY0ZDQ3MGQ0NzE3ZDA0NDBmOTQ3MWRmN2M1ZjNkYjQ2MzYgbGVnYWN5LXRydW5rCis3MzQ3MyA5OGE2NmZhMDFlMGE0ZDBhODYwNTFiNTIwYTRlNzVjOGE2OWQwMTI2IHB5M2sKKzczNDc0IGI4MTg5M2QzN2U3YTllOTU5MDBjODI0YzlkZTdiYjBiMzk2NjViOTAgcHkzaworNzM0ODAgZGNjOTYyYjRkOGZmOTMwZGUwYTM1NDg5ZDM0YmNkZGE0ZGQ2MjRkMiBsZWdhY3ktdHJ1bmsKKzczNDgxIGUyNWE0ZDI3YzM4YjYwNjYwNmY3Y2ZmMTIwMWQ0NTMzNDQyYmVhMGMgcmVsZWFzZTI2LW1haW50Cis3MzQ4MiA1ZmFmY2IzMmYwNjIyN2NkOWY1NzgzYWU4NmU2NTliMmE3OWQ0NGI3IHB5M2sKKzczNDg1IGU3ZDM4YzQwODM2MTliM2NkZTNlMGI2YjdjMWUwMzk1MzIwOWZmMmMgbGVnYWN5LXRydW5rCis3MzQ4NiA2ZGQ1MDdiOTUyY2Y5MDQ1ZTVlMDRiZmVlMzg3NDQ3NDBlNGZmMjU5IGxlZ2FjeS10cnVuaworNzM0ODcgMDcyNDk4ODlhNzczZjE4NDRlMzcwZGMxMjg3MDAzZjhmMDc4ZGEzNSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzM0ODggZTFjMjMwZjAyZmViOWZkZWNlNzhjMGQ5MDM4MmQwN2RmNzExYjU1NiBsZWdhY3ktdHJ1bmsKKzczNDg5IDkxM2M5YmY5OGQ2MDkwMTZhMDFlYzY3MDdlZDczZDQ3ZThkYjYzYzggbGVnYWN5LXRydW5rCis3MzQ5MCA3ZDI0NWE0MjNlOTZjNjdjNmNiNDBhOTkyNDg2OTM4NDU5MThhOGIxIGxlZ2FjeS10cnVuaworNzM0OTEgMDFkMTA3MDVhNzFiMWEyMTRmMzJjZjdkMDRhNWIyYTQ2ODFjMTRmNSByZWxlYXNlMjYtbWFpbnQKKzczNDkyIDNlNDU0MGI3ZmVjOWYxYWU0ZjBhNTgyMmU3NTFhNjY2MTY2ZmU4MWIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDkzIGYzMjNjMjgwZGY1ODZhNDkyZGM1Mzc1MjY3ZDYzNTI2YTQ3ZGJhMTUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDk1IGQ2NjIyNzg5YWQyNzU2MjBmYWRjZTAzNjVlYjk4MWY1YTYxN2VkYjIgbGVnYWN5LXRydW5rCis3MzQ5NiA0MGFmYjY1NTM2ZGEyNmIxN2NjOWU4NmYwN2YxZmZkMGIyYmE0N2JkIGxlZ2FjeS10cnVuaworNzM0OTcgYTk1MGE0NDM0ZjhiYmZhNzU4MDU1ZDAwYmU0ODQ3NmUxNTA0MmFkNiBweTNrCis3MzQ5OCBkM2I0NGNlNTQzYWU0NDUxNWViNGYxZDk1ZWU4OWYwZWUzNTY1MTI3IHB5M2sKKzczNDk5IDExYzE2YmU0ZDIxYzIxM2NlMjJjYjU2Mjk1OWUzY2ZkOTViYmQyNTcgbGVnYWN5LXRydW5rCis3MzUwMCBlNDhiYTljZTg4MzYyNDVlYjY1YmQ3ZjY5MWYyZTgyZTNhNzMwYTM4IHB5M2sKKzczNTAxIDg3MDAwODllY2NkNGQzZTJjODExNzRjNTc1MzYxMGE2MTUwMzMyZTMgbGVnYWN5LXRydW5rCis3MzUwMiA5MTc0OTdlMjUwOWNkNjZmYmI2ZGExOGNiYjQzODc0YjEwYzY2YTZjIGxlZ2FjeS10cnVuaworNzM1MDMgYzRmYjA3MTIxNDdmZDJlNWFkOTc4MTljNGIyZjdkYWQxYTk4ODUxNCBweTNrCis3MzUwNSBhY2M1OGI1OTNiYmMxYmJiZWJjMjk4MGRmOTc0Njg0MmY5MzJkZjVkIHB5M2sKKzczNTA2IGJjNjFkMjMxYTY1MjZiYzk2N2M1ZmYzYjdlMzlkNTJjMTMwMDNlZWYgcHkzaworNzM1MDkgZTMzYjY1NjI3MTg4YmZjMGIzMjczNDExOTUyZWVkYzExNTczNTdjZiBsZWdhY3ktdHJ1bmsKKzczNTEwIDVjYjRlNTFhNDQwODUxMjdjYWFiYjE5NGMxYTQ0NGI1YzE3NGU0ODYgcHkzaworNzM1MTEgOGFkN2ZjODA5ZjY4NGY5YjdmMWM1NDU0ZmJlMzVlYTZhOGQ5ZDY1YyBsZWdhY3ktdHJ1bmsKKzczNTEzIDM4NjkyMmI2MjljMzkwNTRlMDkyZGUyZjE1N2EyZjBlMWNjNDhjOGUgbGVnYWN5LXRydW5rCis3MzUxNCA1MTRmYzkzNjZmMmRiYmYyNDJlODlmMWI1ZGE3NjgxYjA3ODVlYjlkIGxlZ2FjeS10cnVuaworNzM1MTUgMTczMmE1NGEwMjcyNTg4MmIyZWVmMGQyNmIyYTdkYjliNThkOTk4NSBweTNrCis3MzUxOCBkYzM4MTdhOGY1NTJlYjY4ZjRhZDYwYjI2YTNhOTc5NzRhNGNmMDc1IGxlZ2FjeS10cnVuaworNzM1MTkgODBkMGYyMDJiOWVmMmE2M2YxYjQ0YzExNDc2ZGFiYTIzOTljYjRmMCBsZWdhY3ktdHJ1bmsKKzczNTIwIDQ1NTA2YmU0NDUxNDY2MjE5ZjFjODIxNjI1NDkyOTBiNmZkNTI0YzcgcHkzaworNzM1MjQgZGZkOWI5ZTcxYjJlYjJiNmQ4NDFhYzgyMzE4NmNjMDk5YTNjMzM0MyByZWxlYXNlMjYtbWFpbnQKKzczNTI2IGRiZmUwYWJjZDg5M2EyNjNhMTI3ZjNlMjk2MjU4MDQzZmY4OGVmODIgcmVsZWFzZTMwLW1haW50Cis3MzUyOSBjOTQ1OTRlNmVkYjczMjgzOWYxZTUyYmU4NzkyYjY3MDI3NzZiNWZiIGxlZ2FjeS10cnVuaworNzM1MzAgZTczNzEzNTNhMzAyMGVkMTdjNDVkMzMxZWQzOWIxYmJhMTNjNjAzMiByZWxlYXNlMjYtbWFpbnQKKzczNTMxIGI0ZDBjMDIwZTM1NzcwZmU5NDEwNzY2MzAxN2UwNWI4ZGNmYWJmYjQgcHkzaworNzM1MzIgZjY1YWRhZDM5ODhkNGFhNzMwN2NiNDI0OTcwZjg5YjEwYTU1OTcyOSBsZWdhY3ktdHJ1bmsKKzczNTMzIGE2YTFhNjFmNzJiZjgzZTllNDQ5NjhlYTAwZWIxY2VlMDYwZWIyZjQgcHkzaworNzM1MzQgMDdmNzExZDg3ZmZkYmFiYzFlYmY3ODA5MmQ0Zjc2ZTAyNTEzODBlMSBsZWdhY3ktdHJ1bmsKKzczNTM1IGQxNjI5NDY5NzY1OGVjY2E4YTE0Y2E3Yjg3ZmJlYmRjN2Q4YmJmMGQgcHkzaworNzM1MzYgYWQ2MDczNzhhNGVmZGQzMjg1OTljNTlmNGI4MWIyZjJhOGVjMjBmOCBsZWdhY3ktdHJ1bmsKKzczNTM3IDk1ZTU3OTFmYzNjOTJkN2RiNzU0ZDRmZjMxMzU3YzkyODk1NzQyOGUgbGVnYWN5LXRydW5rCis3MzUzOCA3YTEzMTVhOTkyZjBiNmVjMGEyYWQ0NWNhNzYwNzk4YTdmZmRjOWY3IHB5M2sKKzczNTM5IGNiM2QzMjM0MzhkOTIyNWUzNzM4MDAwY2NhNGY3ZjYyNDVhOTI2OGIgcHkzaworNzM1NDAgYmRjOTc1OTRlNTA5OGE4ZjZkOTFiOWY1NDM0MTQ1ZWYxOGYyZWQ5MyBsZWdhY3ktdHJ1bmsKKzczNTQxIGI5MmI4OTJjNDM2MDM3NTI0ZDkzOWFmODFkY2E2ZmEwZGY3YjNhMjUgcHkzaworNzM1NDIgNmEzMWM0ZTBkZmMxMmE5YWFhODgzOWQ1YjU3NTcxNmNjODQ4YzdmYyBweTNrCis3MzU0NCAyYWVlZDRlY2FkNWI4N2Q4NTRlNTE0MWU3MGY5MWU0NTY3NzY5ODAyIGxlZ2FjeS10cnVuaworNzM1NDUgZjZjYjI5MzIwMjJjYWY0ZGNkNjlkNWQyMGRhMjA5ZTgyODQxZTFlOSBweTNrCis3MzU0NiBhMjBhMzc3Y2MzMjdhODJkZTc5MzAwZjhjMDQzNzlkM2JhOTEwYzVlIGxlZ2FjeS10cnVuaworNzM1NDcgOGE5NzZjZDU3Y2E2NTExNDJjMmI1MzdmYjljYjVjN2NjYzkwMjRiMSBweTNrCis3MzU0OCBmMzE4YWRmZTIyNjRhZTZhYTJmNmFhZjZlZjQwNzMzOTc4YWExYmEwIHB5M2sKKzczNTQ5IGY0ZDg0YzRmMjg5YmRhOWRjNWVmNDJkM2M2YmU1YjFhMTk1NGQwNzIgcmVsZWFzZTMwLW1haW50Cis3MzU1MSA3OWE2MzBkYThmMDBlMDY1OTlmNmExYjFiOGMzN2NjYmEwNjYyMmE2IHB5M2sKKzczNTUyIDU1YjMwM2Q1ZGQ1NTE1ZTE4YzkyZjZmZDM3ZmFkMDhiZmEwYWE3Y2MgcHkzaworNzM1NTQgM2ZlMmQxZDM3Y2YxZjA2MzQyM2U4MzZkMmJkZTIwZmYxYTQ5Yjk4OSBsZWdhY3ktdHJ1bmsKKzczNTU1IDQ0ODY5OTE1NmRmZWEzNWM5NjdlYzgzOWFlZTQwNGE5NmVkMTk1MjEgcHkzaworNzM1NTYgYTFhNmU2ZGJkZDZhNzJmMDY2YTcyMGU4ZmYyODI5OWRjZmFhNjcyYyBweTNrCis3MzU1NyAyNzM1ODkzYzM4NzQ3NDQzNDc2ZDM5OTNjOTQyNTA5ZWYyYTdkZjZhIGxlZ2FjeS10cnVuaworNzM1NTggYTkzN2YwNDA5NTkyODFlYmFhYjM0Mzc1OGY1Y2U4YjQ1YTZiMmJmOCBweTNrCis3MzU1OSA1MmM4Njg3MzY4M2VhZTljZTk5YjRlYWFiNzZlYzhkMWE3ZGVjY2Q4IHJlbGVhc2UyNi1tYWludAorNzM1NjAgZTY5MGI3MzZhZjQ3ODEzNzZjOTllNWUxYmM1YWZiNzQ1MWFlZWM5MyBweTNrCis3MzU2MSBhNTc5OTJhNjNjYWEwN2U4ODFjYzJjN2ZhZjcxZDFiOThiNjY1YmE4IHJlbGVhc2UyNi1tYWludAorNzM1NjIgY2Y5Y2ViNmY1YTNhN2FmNjViZDQ3YTQyOGQ0YWJlNTdhMTZjNWIzMCBweTNrCis3MzU2MyA4ODgyZjhmZTgyM2M2NGIzNTc0NDhjMjI5YTJiZjA0YjkyZDkyOWY5IGxlZ2FjeS10cnVuaworNzM1NjQgYTY2NjEzNGU2YzBjMjM0YjA5NmYyOWM0Y2NmYzBmZjc5NGNjYjUxMiBsZWdhY3ktdHJ1bmsKKzczNTY1IDBmZjBhMzk2ZmRhODM3YjMxYTIwNTRhYTgzMDQyYmIwMWViZTA0ZmIgbGVnYWN5LXRydW5rCis3MzU2NiAwMTcwYzk2MWYyOTA1NGFmNTNiODdlODkyNjE5ZjI0MjdhN2QzZTAwIHB5M2sKKzczNTY3IDI1M2RjN2JlNWQxYWJiNGMxNzk1Y2VjODQ1YTE2YzI4Mjc4MTg0M2MgcmVsZWFzZTMwLW1haW50Cis3MzU2OCBkMDQ4NzczOTFlODA3Y2ZmNjY4ZmU5ZTZmNDhiNGM5MTEwOGMyM2VjIHJlbGVhc2UyNi1tYWludAorNzM1NzEgMTUwZTNmZWJkZjE3ODVlNDhkZGU0MTBmZDY3ZTAzYTFkYmVlZDNmYSBweTNrCis3MzU3MiAxMmU5NjBjYzM3ZDYxZWQ2ZDA3NzE0YjVmYmEwY2Q4ZmFlNTMzNWYzIHB5M2sKKzczNTczIGE2OWEwMzFhYzE0MDJkZWRlOGIxZWY4MDA5NjQzNmJjYTZkMzcxZjMgcHkzaworNzM1NzQgN2M5ZTFjOWVjNWRmZjgyMGEzZTI2MWNmOTJjNGI5NWU1Njg3ZGQyNCBweTNrCis3MzU3NSA0YWNjYzhhM2Y5YWZlODZmY2Q0NjZjMjY5ZDBmMmVjMTA1MTY1NTY0IGxlZ2FjeS10cnVuaworNzM1NzYgODMxYmVlZTIyYTlmY2FjYTE5ZTM4OWFkMTA1OTczNmVjMzlkMjIxNiBsZWdhY3ktdHJ1bmsKKzczNTc3IDlkMDBmZDAwODdmZjkxNjVkZDlmZjlmZGQ2ZjlkMTY5YTZiN2IxMTYgbGVnYWN5LXRydW5rCis3MzU3OCBjM2Q1ZDNjOGU0OWJhOGIyZDk5MzQ3ZTFlZmIzZDg3ZGIxNTI2MDQzIHJlbGVhc2UyNi1tYWludAorNzM1NzkgMjVkODVlNDQ4NmFjZjEwMzMxZDQzNjVkZmM0ODQyYzkzY2Y1MTgzNCByZWxlYXNlMzEtbWFpbnQKKzczNTgwIGEyNGYwOTYwNmI4MzI2OThlMjZhZmIzM2Q2NDM5NzU1MWZkMTc2OTMgcHkzaworNzM1ODEgNzdmYjdkM2M2ZGRlN2E0ZjU3YzcwNGJkZmYyYjEwYTU1MTkzNmFiOSBweTNrCis3MzU4MiA5NjAzMzQ0MzU4NTU4Y2M2NWY3Mzg2Yjg2ODRiMGYzYWY5OTVjOGFlIHB5M2sKKzczNTgzIDVmNDllYThmNTkwOGNmZGNlNDhiMWIzNDFjZjRmODEyNmRkMmY1NzYgcmVsZWFzZTMxLW1haW50Cis3MzU4NCBiNjc2MTU5NDU2ODE1NDc2ZTc5YmE5MjczYjI0ZGVjOTA3OTVhMmY2IHJlbGVhc2UzMS1tYWludAorNzM1ODUgNGQ0NzZmNmYxYmUzYjIxNWRiMWQxZDIwODc0MzhmZDhhMTI2ODExNyBweTNrCis3MzU4NiA2ZGM4ODRiMmRlYTdhYWMyMzg2MDg0MjVjY2M1Nzk3MDU1ZjNhMTk5IHJlbGVhc2UzMS1tYWludAorNzM1ODcgNDZjZjJlNWE1N2Q0ZjdiMDkwYjZlODdhYmQ0YmNhN2U2YzE0ODk4MCByZWxlYXNlMzEtbWFpbnQKKzczNTg4IGRjNzQ1NjM5NzhkZjQ5NTRjM2E2ZTY5NWUzMGJlNzIyNTE4MDc5MjAgcmVsZWFzZTMxLW1haW50Cis3MzU4OSAxNjUxZTJmMzZhZjEyYWVhZWRmMjI4ZTMzZjNkOWRhM2IyNmIyNzcxIHJlbGVhc2UzMS1tYWludAorNzM1OTAgMDcwZTFlMTVjNTE2MWViODgzYjZmMzFkZDhiZjRmYTExODg1MWQ4ZSBweTNrCis3MzU5MSAyZGEwNWY4MGQzNjVhZTlmNTVmNzUzMTdlZmYzY2U1OGQ0OTUyMTJmIHJlbGVhc2UzMS1tYWludAorNzM1OTIgMWQzYmRkZmE4NTA5MGNjNTYwYzRmOTg3YTIzODY1YTM4NmYxYjU0ZSBweTNrCis3MzU5MyA1OGYyYjI3YzkxYTE0Y2I5NzVjOTAwNzIxM2E3YzNkNWQyZTczZWFmIHB5M2sKKzczNTk0IGUyNTIyZTRkMmRjOGJmMmY4MjQ1MmE4NWU4MmYzMjgyYmUyY2E2NjcgcHkzaworNzM1OTUgNWIzZDBiZmM4ZDI4OTFiYzQxMGRkMmExNjlmMjRkYWNkOTMyNmU5MSBsZWdhY3ktdHJ1bmsKKzczNTk2IDFmNjA1ODNiNjI4N2NmMWNhY2UyMGRhNDk4ZWUxYTU3OTc0YWJiMDkgbGVnYWN5LXRydW5rCis3MzU5NyAzYWFmMmUwNjVkYjA1NDAxODAzNzA1ZWQ0YmZhM2ZkMmY5MDMwZGY4IHB5M2sKKzczNTk4IGY0ZWVhMGQyMTY1ZGFkY2YxZThhMTE0ZTMyYTJhNzcyNzFjMjUzMzggbGVnYWN5LXRydW5rCis3MzU5OSAxZjRmNGQ5ZWM3OTMwN2FkYTFhZWQzZjE0ZTBjY2NmYTgwZGI3Yjg2IHJlbGVhc2UyNi1tYWludAorNzM2MDAgYzUzNTc4MzZjMDc5ZDc2ZmVmOGI4MjA3YjUxNTBkNDM0MmQxYjI1OCBweTNrCis3MzYwMSBhYzc4ZWVlYjQ2YzI5NWYwYjY1YjljYjg3NjNlOGNkNGY2MGI1NDRjIHJlbGVhc2UzMC1tYWludAorNzM2MDIgMTBhMjI5YzhiZWFkYjk3NmVmMWMxYjcxODdlOTBjZjAyMGU5ZDcxMyByZWxlYXNlMzEtbWFpbnQKKzczNjAzIDU1OGVkNzJkNGQzM2JiYzM4NjAxNjU5YWI2MzBiYTUzYjRiZWFlMjYgbGVnYWN5LXRydW5rCis3MzYwNCBjNDFmZTEzM2Q4ODczMzA1MmVhZTY5YjcxOWI5ZjYxMTNiZWNmOGI2IHB5M2sKKzczNjA1IDA4ZDA1ODU2MjE0YTM1ODFjYjdhZTZlMTMyNjU1ZTFkZmQxOWFlNmEgbGVnYWN5LXRydW5rCis3MzYwNiAxMTdlODVjYmYxNjliNGI4MDRiMWMwNGI1ZDgwMDQ5ZDA5ZDE4ZDg5IGxlZ2FjeS10cnVuaworNzM2MDcgNTRlZDI3OTFiYjE1YjhjNzJlMDUzMTk5ZTE1ZTAwMWQwOGNjMGQ3OCBweTNrCis3MzYwOCBlZTI1M2ViNmYwOGMwNDkyMGZiMjI1YzZmYjkyZDY3YjdiMjNiNzMxIHJlbGVhc2UzMS1tYWludAorNzM2MDkgNmU4ZDYzMzQ0ZDNlMzBkOTdjODEwYTZhZDMzY2U5MmIwZGUxOTZiMiBweTNrCis3MzYxMCA0YTIyNWRlODkyMzM2MjdjODUxZTIzMjIzM2IwNzIzNzc3YTZlNDBmIHJlbGVhc2UzMS1tYWludAorNzM2MTEgNTQ0YzViYWQxNjA3N2ZhZGRlMDlmYmU1YzA1M2E3MGRiNjUyNjllMSBweTNrCis3MzYxMiAyNjAyYjU2YWQwMmRjNjgyMDcyOTE1Nzg5NDgyNTQ5OWUwOTI4ZGM5IHB5M2sKKzczNjEzIGI1NWE3OGIzOWJkNWVkNmZiYzllMjM0NmM2YWUwZmY2NmI3NDEwMDAgcHkzaworNzM2MTQgZGU4NjZmNDdkMzhhODU3ZDc4NDJkYmEwZWFhYjZlMWNjYmY4OTZmYSBsZWdhY3ktdHJ1bmsKKzczNjE1IDM2ODQ3ODg1OWZlM2FhZjljMjYzMzNkZjMzOThlMzhlYWJjZmZiNTMgbGVnYWN5LXRydW5rCis3MzYxNiBhYTk1MGY3OTYyZmRjNmE1MzZmZTMyZDcxODEyYjRiMzgyMmQxOGRlIHB5M2sKKzczNjE3IDBjMzE5ZTAzZDlhMTBhOWVlY2FkMmEzYzY4ZGMxZTAzZTYwYWMxNTUgcHkzaworNzM2MTggYzllNjVlNDkzNjVkYzM4YmQ2Nzg5MDQ0ZTUxNTY1MGEyZjU2OTdiZSBweTNrCis3MzYxOSBjYjYwMGUwMzQzN2Q2NDBlMWUxODg1M2Q0ZmYyZDc2NjAyY2JmNTk5IHJlbGVhc2UzMS1tYWludAorNzM2MjAgNjU0NDA3NzQ2YmUwYThmMzdhNzhmYjA5MTc2MThhZGE5NjFmOTQxNyBweTNrCis3MzYyMSA5MTA5YjQyMmMxMzhmYzRiZWMyMjIwZmQzM2UyZmIyZmE2YTJiYmNhIHB5M2sKKzczNjIyIDIyMjg5MTZhYjQ3ODhmOWFlOWViYmQyOTc1MDYzNTJkMWYyOTZkN2MgcHkzaworNzM2MjMgMWU1NTg5YTE3Y2YwN2VkOTVlOTQzZGI5NDdkMzRmMzM1NWU2ZDczOCBweTNrCis3MzYyNCA3YzI4N2QzMDAyM2MzNTU5MDBhMjJjNzgwMGEzYTk2OTRiZGRhMTEyIHB5M2sKKzczNjI1IGY5NGMwOWFhNDQ0NDNiYWZkZWExOTk2MDNlYWMyMDk0NjcxOTMwOWIgcmVsZWFzZTMxLW1haW50Cis3MzYyNiAwNzA0ZjE1YjQ2ODI3MWI2MDljYTRhNGEwMDFjMjQzNzU3NTAyOTE0IHB5M2sKKzczNjI3IDQxMTg4NGQwMWY4YjBmOTZhZDRkODExMTg5YTRmYmEzYWVmNDJhZGYgbGVnYWN5LXRydW5rCis3MzYyOCA0ZGI0YWYwY2Y4MmM1YjhhMDZjZmI1NjJjZmYwZDA5ODZhNzM5ZTI0IHB5M2sKKzczNjI5IDVjNzAyYTRkNzVlNDQ1ZDUyZjZkN2NmMzA4ZjZjY2YwNjI4ZGIzOTEgcHkzaworNzM2MzIgNjc2ZTc0YzIwYzZlYTNkNjU4NmI0N2I0ZTFkZjRkNmNhMWJkMzc5MyBweTNrCis3MzYzMyAwY2MyMWM5NzUxZjE0NzVkNTRlMDhlN2U5MTYwMzQ4YzYwNWI4NDEyIHJlbGVhc2UzMS1tYWludAorNzM2MzQgZGI5MWEwNDUzMDUwYzI4ZDE1NGQ0NmRkNTZlMjY1ZDFiZGUyNmM4MyByZWxlYXNlMzAtbWFpbnQKKzczNjM1IGIzMmQxMzZmM2UyMDA0ZTc5ZTRkNmRhYmJhMjFmZmVkZDA1ZWMwZjMgcHkzaworNzM2MzYgMWE5ODQ3MjM0MGZhMGQ4OGFlMzExOGMwYjFjY2FiN2IyY2VhOTRhOCBweTNrCis3MzYzNyBlMzAyNWE0YzBhZDc4NTMzZmE1MjU5OGNiY2RkZmI2MzRlYTcxMDhlIHJlbGVhc2UzMS1tYWludAorNzM2MzggZmZkN2NmNWM3Mjg1Zjg5ZDNhMGYyZmZkZGIwYTZhZmNmYmI3MDM3MCBsZWdhY3ktdHJ1bmsKKzczNjM5IDUyYzQ4ZGVkZTVmNzdmNWI2MDU4ODhmZDg4YzM0NTk0NmIyNGM2ZjggcHkzaworNzM2NDAgYWI5MWZhNWQwYzVjYzIyMjU1OWU1NTJiNjczOGVhMzI0YjFjOGU2ZSBweTNrCis3MzY0MSBkOTRiM2VkNWQ1MzY1YzQ3NDMxODk2ZjgzNzk0NjQ2MWU0YzljMzM3IHJlbGVhc2UzMS1tYWludAorNzM2NDIgYTUxMWZlNTE2NmZkNzc4ZGFiNjY3MDAyMDk0NzljNGViOWUzOWQ3YiBweTNrCis3MzY0MyBkNzQ5NmNjMTBkZmVlZWEwNzE5ZDA2MTllNDA5NTVjOGJmMjE3ODZjIHJlbGVhc2UzMS1tYWludAorNzM2NDQgMGY3ZGM1NzA0YzU5MDY1OTRlYTZlZGI4OTE1ZGNiNTE3YWJkODBlMyByZWxlYXNlMzAtbWFpbnQKKzczNjQ1IGY0N2NlMTFlMDcyYjYxNTU3ODVmYTI3ODgxMjcwYjA5ZmY3OGUzMmEgcHkzaworNzM2NDYgNjZjYzUwODkwODk0YzEzZWIxOTY5ZTc2NTA4ZjQxNWY0MTU0YjU0MCBweTNrCis3MzY0NyA1NjNjYzRkY2M3MDMyOTBiNzBhOTJhZDBlNGY0ODQwZDJjNGIxN2ZkIHB5M2sKKzczNjQ4IDUyODQwYmU0MjUzMGY3NjMwN2RjNDI4Y2Q5YjViMzkyZjY3OWZjODAgcHkzaworNzM2NDkgYTM3YmI1OWQ0YjUzYTkyODZlYzdmNDYzYWUzYzJmMGZiZDdkMWZhYiBweTNrCis3MzY1MCAwOWM0NGM5MzM5NDJiNDQ4OGE2MDkzNDBiZGE3ZDEzYzI4MmI1ZWJmIHB5M2sKKzczNjUxIDQzNjk4MjI0MTRjM2FiYmMwNzMwNDRkZGFjNDQ3OWFiNzY3YmIyOGYgcHkzaworNzM2NTIgMDA4MDAyOGY1Y2EwMDEyM2VmMTI0MDIxOTA3NWQzMmIyMWMyNTRkYiByZWxlYXNlMzAtbWFpbnQKKzczNjUzIGE5MjUyYjg4NDdmMDdkNzY2MzFkMTU0NjE3YTAwYWIyMmEyMjI2ODQgbGVnYWN5LXRydW5rCis3MzY1NCBkY2Y3MTIxZWRiMmU4NWQwMGRlMDE2Mjg5NGQyY2FiZTVmYWIzZTg0IHJlbGVhc2UyNi1tYWludAorNzM2NTUgZmRjMjEwYThhMzI4ZTI1Y2VhMTQxM2Y4ZDUxMDE0MjVjMzJlODU3MiBweTNrCis3MzY1NiAzZjQ2NjhiNDlmMTFlMzliZGNhOWIzN2VmNWE2ODNmZjJhZDUxZGI2IHB5M2sKKzczNjU3IDUyMGYxMzEwYWU2MTM5MDI0OGQzZWNmZGI2MDFkNjg3ZjJmYTc3NWUgcHkzaworNzM2NTggNTI3YmFkZTMwNDNiMjNhNzdiN2Q2MTA1M2QxMWZlZDgzNTJlMjkwNSBweTNrCis3MzY1OSBkNTEwMTdkY2JhMjQ3Zjg5NTFmYWJhMzY5MDgwZDQ1ZDQ4YmQyNzdlIHJlbGVhc2UzMS1tYWludAorNzM2NjAgZjNkYWZmZDRjYjI4YzYyOGUyZjlmNTg1ZmM3ZTE3NDFhYjM0YjZkMSBsZWdhY3ktdHJ1bmsKKzczNjYxIDk4MjliNDIzOTllNTZkOWIyYWQ0MDRjM2E3ZWQ1NGYyODliZjM3ZWUgcHkzaworNzM2NjIgNTA4ODA2NGQ2MTcwNjU4NmY2OGFjNTFjZmMwOTkyZDZjYzQ1YWQzMyByZWxlYXNlMzEtbWFpbnQKKzczNjYzIDcwNDg5NDg2NDZiMDg3ZWYwM2JhNDUxZWFkYWUyOWE4OTg2ZTM5ZjEgcHkzaworNzM2NjQgYzQ1ZTMzMTIzOGFlNzk2YWViMGFmOGYzNzBkYzZiZGIwMzI3NWM1MCBweTNrCis3MzY2NSAxNjRkNjRiMzlhYzA2YzAxODdiZjk2YjdjMzFjOTA4NjQyNTBhOTg1IGxlZ2FjeS10cnVuaworNzM2NjYgN2VjYzA3NWQxNzFmN2EyMWM1ZDQyMDYzNWIyMDE2NDlhYTZjMjE2OSBweTNrCis3MzY2NyAzODBhZjllODBjMmU4ZWZkOGJmNmI5OWI4YzZiZGFmZWZmYTlhYjNmIHJlbGVhc2UzMS1tYWludAorNzM2NjkgYTY2NGE0NDQzYTM5NDg0NTBhZGI0ZWQ0ZjYwNTYxM2IxOTYyYTM3NiBsZWdhY3ktdHJ1bmsKKzczNjcwIDY1YWRiYTk1ZDdlMGU3M2YyYzdlZTdmMzk2NWRlNjhhYmNjNDk1NmQgcmVsZWFzZTI2LW1haW50Cis3MzY3MSAwZDA1NWEwNjJjY2UxZTAyMTgzNzM3NWZmNWQ1NjhkMThhNDI2M2M0IHB5M2sKKzczNjcyIDI5N2ZkZWFmNTgyMjI1MDA5MzAyOTMwNjQwODFlN2NmNTNkYWI4MzUgcmVsZWFzZTMxLW1haW50Cis3MzY3MyBkYjZkMmNlMzgzMGFmNmQ2YTQ1Y2I2NDA0MzE5ZjgwMjM5NjZmNDUyIHB5M2sKKzczNjc0IDk0NjNhMTAyNTE1ZjNkMzk5MmMzZGZmZDkwNDkyZjY0YTU1NzMxNWIgcmVsZWFzZTMxLW1haW50Cis3MzY3NSA0ZTM1NTY0NTNmYmNjYjY4ZGYwOTg5ODA3YjlhOTMxOTZlNzk0NzJkIGxlZ2FjeS10cnVuaworNzM2NzYgYTc5Zjc0ZDZmNWIzOTUwODZjYTMyMzljNmU4NTE1MjMwM2VlOGVhNyBweTNrCis3MzY3NyA2ZTdhMTZhNjQ0MmY2Yzg0M2I2ZWE5OWYwNDQ4ZTFjMTc5M2U2ZGY4IGxlZ2FjeS10cnVuaworNzM2NzggOGYyM2JkMTA5MmZjMjRmMDM2YjkxODJjMmY1OWI2N2E1YTg3OTY4OSBweTNrCis3MzY3OSAxYjhhMDFkYzdmNDVhNGM4ZDI0MDUyZTE1ZTA4NGE5YjJlOTU3MTc2IGxlZ2FjeS10cnVuaworNzM2ODAgNjI5Njc0NDQ4ZDg0ZmJiZjJkOWMyNDIwMTUwMWE4NGM1YTJmOWE5OSBweTNrCis3MzY4MSAyMTBhNTFlZmRjODI2NzBkOTBkZTRjNjg1Y2E2ZmU4NTY1ZjY1NTMzIGxlZ2FjeS10cnVuaworNzM2ODIgYTI3NTgzYzgzNmIyMjhmMzMyZDQzNGE0NmU3MWU5MzFjZTRlMTgzYyByZWxlYXNlMjYtbWFpbnQKKzczNjgzIGUwZDI3Yjc2YTJlOGQxNDRlMzE4M2FjNDkwNDc1ZDU0MzMwMDlmNjUgbGVnYWN5LXRydW5rCis3MzY4NCA3OWMyZWQ2MWEwMjUzZDM5OTRkMTg5NjJhNjA3OTQ4ZDcxMjg2YzdiIHB5M2sKKzczNjg1IDUxMzllOGIwZjIxYzczMjM4MWQ4ODk5YWVkZTZjYjE5MGJiZmZmYjAgcmVsZWFzZTMxLW1haW50Cis3MzY4NiA3MGVkYTAyYzdhOThlMzFiZDgzNGM0N2VkOGM0NTdlYWNiNDYzMDhlIGxlZ2FjeS10cnVuaworNzM2ODcgZTc4Yjk5YjA0OGJhYTg3Yzc4Y2NmMmZkNjI4NjM2NDkwNTQxYmU0ZSBweTNrCis3MzY4OCAzZGNjOGZjNDM1NGVmYmU5MjU2OTI2YmY2ODRiNzhhOGFmNzI2OGRkIGxlZ2FjeS10cnVuaworNzM2ODkgMzkxNWRlZDJkNjBmMWZhNmY3OWYxNTgwNzRhODZkZTFmZTY3NDM3YiBweTNrCis3MzY5MCA2ODEwMmU3ZTFlYjdkMzM2N2JkOGQ5ZDE3MjU2MTc3ZWM2NjY0ZTQzIHJlbGVhc2UyNi1tYWludAorNzM2OTEgNDg3ZDZmMDE4NDJhOTNmZGMzMWJkYWU3MGNiYTljZDE1MDlhNGZiNCByZWxlYXNlMzAtbWFpbnQKKzczNjkyIDUxNGNhZTYyY2NkYTVmMDczNmU0NTQ5NTFhOTBmZTg3YzQ2MzBmY2UgcmVsZWFzZTMxLW1haW50Cis3MzY5MyA1OTE3ODVjZWRjYzhhNWU3Y2QyZmUzMWVhNTkxYjI3NTMxMjc5NTZmIGxlZ2FjeS10cnVuaworNzM2OTQgM2Q1NGNiZmQzODA5OWVkNDhmY2M2ZDUwYjRmYzlhMzhjOWQ3MjE2OCBsZWdhY3ktdHJ1bmsKKzczNjk1IDdlMzkyMDI4YTA5ZWRhMDJmY2E4Njk5ZTU0M2RjOWJhYWQ0ZTY0NjcgcHkzaworNzM2OTYgOTMyMDMzYzMwNGVmNzIwNTQ5Nzc5MjA4N2VhMzY5YzMxYWRiZTNhMiByZWxlYXNlMzEtbWFpbnQKKzczNjk3IGQyYjFmNWVmMmFlM2QyZGVhMDNiYTY4NjI5NWQ0MzNjODkzZjZmMTQgbGVnYWN5LXRydW5rCis3MzY5OCAwMWUxMjVkMzE5ZDQ4MTgwM2QwNmM3NzAzMTk0NDg2ZGVmZDE0NjE3IHB5M2sKKzczNjk5IDI5ZmFjODg0ODQ4OWZkNjZiYmQ3N2QwMjk0MWIzZTRmMzgwY2Q2YTMgcmVsZWFzZTMxLW1haW50Cis3MzcwMCBkM2Q2Y2NjOWFiYjQxMzc4NGVlNGE0M2U3ZGRhZDg1ZWU0MDhjYTMzIHB5M2sKKzczNzAxIGMwNjVmMzNkOWM5Y2Y5YjZhYTA3MDE0NGYxMTEyZmM5NWI2ZWI2ODYgbGVnYWN5LXRydW5rCis3MzcwMiA1YjY2MzkwNzVjNDc5Y2U4ZmMwYzVjNGE1YmZjZTJhMWZlOTJiMjEwIHB5M2sKKzczNzAzIDMyZjcxMTIwZWE1NTA0NGY4MzIxZWZmMGIzNzg1MmY3MWEyNTgyNjcgcmVsZWFzZTMxLW1haW50Cis3MzcwNCAwYWUxMjAyZTUzNjIwZTU5NGM4NDdmNjk1MzQ3MjhjNWVhYjliYjdmIGxlZ2FjeS10cnVuaworNzM3MDUgNDNmZWNjMzk0MzdiMzJjZTMxYzJjYjRjNTBlNDZlOTI3MDk3ZTU4MyBsZWdhY3ktdHJ1bmsKKzczNzA2IDA4Yjc2MjkzNDQ4OGEyNTg1Y2YxYTg4YTk2NmIxOTNjMTVlOGJkOWUgbGVnYWN5LXRydW5rCis3MzcwNyA4NDhjODZmNGJlZDYwNjBiZWVlMWFiZDI0YjBiNzJhZWVmNDBkZWY0IGxlZ2FjeS10cnVuaworNzM3MDggNzBhZGYwZjY4ZmJjYTFjZTc3OGYzZGMwMTAxZDlkZTNkZDYzYzhkNyBsZWdhY3ktdHJ1bmsKKzczNzEwIDJmYWYyZmEyYTQyMzU1NzNhNWEyNjlhZjJlZWQ5NWU5MDUzNDQ2ODkgbGVnYWN5LXRydW5rCis3MzcxMSA5OWQ1MmQ4YWQwMjY2ZWY2YTQwY2ExMzA1MzEyNWVjYTI3MmNmODJmIHB5M2sKKzczNzEyIDRmOTBkZGM2YzNiNjRhYzgxODgwN2IzYjhiZDY1MzgwZDM0N2QzNzEgbGVnYWN5LXRydW5rCis3MzcxMyAzODM2OTk4NDVjOTliMWI5MzcxNzA2MzIxNmZjOTI3ZjRjZDFjOWY1IGxlZ2FjeS10cnVuaworNzM3MTQgNjc2OGIyMzUwYzU3NmE2NmQyMmQzN2JhMjhhOWRmMjI2ZmU3M2E5NCBsZWdhY3ktdHJ1bmsKKzczNzE1IGFkZjY2YjUyMDIyZGFkNTg1YTU0YmQ2ZjQxZjVjMDYxYzA4NjFkYzIgcHkzaworNzM3MTYgM2UwMDFlZWI4MzgxYjkzNjFhMzQ1NjBlMjBjZjY0NTRkMzM1MTRjMSBweTNrCis3MzcxNyBlODhjZDQyZmYyODJkYmM2Y2ViMmUyYThlMTUzYWM1MmUyMjZlYThhIGxlZ2FjeS10cnVuaworNzM3MTggYzQwZDZmZWQ2YjZiYTU1ZTJjZmZjOWE1OTJiNTlmOTI4OGVkMzE2YyBweTNrCis3MzcxOSBkZDQ3MGI3MTI5MDE0NzM1NmU2MGEyYTkzMzczZjg5MmIwNjU0MTkzIHB5M2sKKzczNzIwIDZkNTA3NWVjYzE0YzBhMzM5NjVmNjc3NTM5NDYxYmQxYWU1M2U1NWQgbGVnYWN5LXRydW5rCis3MzcyMSAxYzc2OTJkMjUwOWZhMDEwZDVlMTRkMDdkM2YwYmQ3M2VlNjJmOGZmIHB5M2sKKzczNzIzIGYyYjY1YmQ2N2RmMjVkYTk3YTJhMzRjNDBmMjBkNjk1YTc3MTdhNzcgcHkzaworNzM3MjQgZWQyYTMzNjIwNGQ2YWMzYWExN2ZlOTA2ZThiZmI4NTAyZmE4OGRhZiBweTNrCis3MzcyNSA1NTAyZjI1NWMyN2NlYTU0MTMzNjEwYTlhOGY2OTIzMjYwMGUyNjNkIGxlZ2FjeS10cnVuaworNzM3MjYgNzY1NGZhODU3YjAzYzJhYjY3YjlkNDk5NmM0NDgwMjAyNDhkNGJmOSByZWxlYXNlMzEtbWFpbnQKKzczNzI3IDkyMzBjM2E4MGRjYWQzOGU1YjJjYzY1ZTdmMDdhZjY3ZDg1MzA0NjUgcHkzaworNzM3MjggNzJhZDExOTdmMGZmOTdhODNmYzQ3NWU2Mzc3ZjZlZjAxNjI2YjNiZiByZWxlYXNlMzEtbWFpbnQKKzczNzI5IDRiNjI3OTYxYjQ0NzM2MzlmOTRmZmEyYjM2Y2IwYWU4ZGZmZTdmMjkgcHkzaworNzM3MzAgYTA3ZmQ0N2RmNzZiMzI2NWVhZWNjOThjYjk0ZmIwM2IwZWY3NDgwZiBweTNrCis3MzczMSBlM2ZhMmRkYmIzYTMxNTA5MDEwY2YzNTY5YmNhNTM1ZjhmMmE4Nzc0IHB5M2sKKzczNzMyIDdlNDI4MzM2MmQyNzdmYWFjM2UwNmVkNWVhMDk5OWUyN2RmMGM1MDcgcHkzaworNzM3MzMgZTgwODU5NDYxZGU4Y2QwYzRhYjk0ZWZmZGY2Y2NmM2MxODIyM2QzOSBweTNrCis3MzczNCBiMTY4ZGNjZWU2MDI2NDRhYTI3NjY3MDg4ZjcwOWViMGY3NGJkNWRkIHB5M2sKKzczNzM1IGMyNDI3MGY1NDViOGZhNmZiNmVhNzBlNjE4NGU2MGEzNjJiMzQxOGQgcHkzaworNzM3MzYgNDNmMjI1YzdiNzdlYzQ3MzU4NTBmYTkxN2JkYWRjMjMxNWM2ODEyMyBweTNrCis3MzczNyA5Y2Q3OWRlZTViY2U0YmVmZTkxM2FjOWY4MDhjNWNiMThjMDdjN2ZlIHB5M2sKKzczNzM4IGUwZWQ2MjdlYTY3OTQ4NTQ2MzM1MmEwZjA2OThhYzY5NTAzMTE3MTkgbGVnYWN5LXRydW5rCis3MzczOSBmMGVlYWRkYWY4M2E0YThmYTBhZDU1YjhhNDdiYjhlNDMxODkxOTE0IHB5M2sKKzczNzQwIDE1MWI3ZDUzNmI1YzQ1YmIyMzQ1ZmQ3OWZmZTc4ZDJhZDg3NzUzNDEgcHkzaworNzM3NDIgMzY2YzhhNGU1YTQ2YTBhMWM3MWIyZGU5NGYyMDkyNDM5NTM1ZTFkYiBweTNrCis3Mzc0NCA3NGZjNDc2ZmU3MjgzM2QwZjE1NDhmOWM2YWRlZjdlOTVkYjgyYmZmIGxlZ2FjeS10cnVuaworNzM3NDYgZjJhNTI2Y2MzZjJhZjI2NzUwNzQxMTE4ZmU1ODdlZTk3OTRhNzczYSBweTNrCis3Mzc0NyA2NTE4MTE0ZmIwNjM4MWY5NTcyYjBjYzhlNzI2MGEyNGVjMGRlMDhlIHB5M2sKKzczNzQ4IDBjNmZkNTU2MTQ5ZGIyZjY3Njc4NmQ0NjMwOTgxMGE3NjU0MzA3ZTAgcmVsZWFzZTMxLW1haW50Cis3Mzc0OSBjYzQzZTkyM2VmOTYxN2RlYzVhMTBjN2NiZDBlMzFlN2ZiY2I2NjE4IHB5M2sKKzczNzUwIDYyMTBkZWRkMmNmNzk1NDkzYWMyZTIyODk5NjVhZjZiOGRkNzMwZTkgbGVnYWN5LXRydW5rCis3Mzc1NiA5YmRkYmE2ZTc2NGU2ZDQ1NWMxNTU3YmM3YzNlMzM0YjU2YzkzNGU2IGxlZ2FjeS10cnVuaworNzM3NTcgNDY2MzE2M2U2NDQ5NDJlMmI5NDY5ZmVhNTA4M2IyMTZhMTM2NDkxZiBsZWdhY3ktdHJ1bmsKKzczNzU4IDVjODliOTI3M2U2MTEyZmU3ZmNmYjc2YzQ4MTZmZTIzNTE0MjQ0N2UgcmVsZWFzZTI2LW1haW50Cis3Mzc1OSBjYTUzZjg2ZmU2N2RiMmM4ZTIxZDEwOTgwZWFhMzdjMzI2Mzc5Y2JkIHB5M2sKKzczNzYwIDZjYzE4NWY0MmJmNjZhYjU3Y2Y0MWJjMzg3NmZmNjc5NDQ3YWMzOGUgcmVsZWFzZTMwLW1haW50Cis3Mzc2MSAzYmRlODFlN2M5ZjQwM2NlODYxYTBhYzFiNTQ1MTAxMjE5NTc5MmUxIHJlbGVhc2UzMS1tYWludAorNzM3NjIgNWQ3NDliZGRhOTc5Y2FkM2E3MDcxMzc5MDdhMDlmYTRmZTE5ZjZiYyBsZWdhY3ktdHJ1bmsKKzczNzYzIDJhOGRhZmM4NDUyOGM3OGU3MGUyMjUzOWFhN2UzZjU1ZThlMGMyMDcgcmVsZWFzZTI2LW1haW50Cis3Mzc2NCA3ZDUxNDkxNTUxNWU1YzZkMDNlZTIyYzAwMDc3NjU0YzFjNjJkMjI0IHB5M2sKKzczNzY1IGRhNjk4MDc5OTYzOTkwOGY0YWRlMTIwZGE4NTk5Nzc0ZTlhZDQ3ZGUgcmVsZWFzZTMwLW1haW50Cis3Mzc2NiAxZDQ4YzcwMWYwN2M2MTQ2ZmZjZTcxODczYjljZTZjYmQ2YzkzNTA2IHJlbGVhc2UzMS1tYWludAorNzM3NjcgZWRjZmUzYjhmNzM2MTY3MTk0NTM3NjczYzIyN2ZhNDQ3OTZjOTNiOSBsZWdhY3ktdHJ1bmsKKzczNzY4IGYxNDlmNTdmNzdkNmZlODAwNzgyMzE5MDBmMzFiMjUwNzY3MTQ0YTggcHkzaworNzM3NjkgZTVjODI5MGM3OTQ5YmQ2MDBiZmY2MjYxMTg2NmJjNDhhNGY4N2UyNCByZWxlYXNlMzEtbWFpbnQKKzczNzcwIDc0YzBhNzgxMTRhZTRlMjMwZGEyZThiNGYyYTNlMTcwOGFhY2QxMzggcmVsZWFzZTI2LW1haW50Cis3Mzc3MyA1NmM2NjRiOTE1NDViODE4MTNmYmI1Yzg1MDVhOWNkNGY5OGYyNzMzIGxlZ2FjeS10cnVuaworNzM3NzQgZmVhNTcxNjRiZDc5MWNlZDQ1MmU1ZjMyNzRiMDVkNzExMGI2ZDA4YiBsZWdhY3ktdHJ1bmsKKzczNzc1IDdkYzBkMmM0YjUyMDIzMDZiMmViMWNhYmFjZDkyOGRlYThlNDUxMGQgcmVsZWFzZTI2LW1haW50Cis3Mzc3NiAwNjUzYzFhMGNiMWUxMjY0ZDVlMzhmOTVjMWYwNzMyODAxMzY4ZDgzIGxlZ2FjeS10cnVuaworNzM3NzcgMTc4Mzg4M2U3NmQ3Nzk5MzJhZmY3ZjA0OTFjZDM2ZTFkNDcyNjA5NyBweTNrCis3Mzc3OCBlYTQ0YTE2NWI5Y2U1NDZkMjFhOWRjZWM5NjNlZTY2YjJjNzk3Y2VmIGxlZ2FjeS10cnVuaworNzM3NzkgZjY1ZDYyNDczNDY1YjE1NGM1NzAxMzZiNDY4YWEzZmMxMmZiNmYwZSByZWxlYXNlMjYtbWFpbnQKKzczNzgwIDQ2NmE3MWZjNjI1YzFlNmQzMTgyZTQxMjM3YjgyMDNjOTRkN2UwNzcgcHkzaworNzM3ODEgZmI1NDJlZDkxZTdmNTViODA3ZmFlNjFlMzY2ZmVmY2QxZTRiNDAzOSBsZWdhY3ktdHJ1bmsKKzczNzgyIDI2MjU1ZjI5YTdlNDlkMzc3MjlkNzllMWFlY2MxMjhiNjZkMjVkNGYgcHkzaworNzM3ODMgY2M2YjkxYzNkNzE5YjY5Y2I3N2IwZjQwNDkwNmNjNGNjZTZjYTQwMiBweTNrCis3Mzc4NCBlYTkzM2MyNGFkMTAzM2Q4NjEzNDczMGM3OWM5MzAyOGE4YTdmMjg2IHB5M2sKKzczNzg1IDY1ZTQxYmNiYzI1ZDRkMDZjNDAwZjM0M2ZlMWRhMzEzMDJjNzk3ZjYgcmVsZWFzZTMxLW1haW50Cis3Mzc4NiA3Yjc1OGY4MDgzMzA1YjMzMDI3ODYyYjRhMGExMTczYjlmODAzMjFiIGxlZ2FjeS10cnVuaworNzM3ODggNTIyYWQ5ZWVkNTU4ZTc4YWJmMGVjYzI4MWM0YmFhMDQ0NWFjNDhiNCBweTNrCis3Mzc4OSA1NmEyNzYzOTZlMTVmOWM3OTUzYTMzY2NhMzEzOGYwYTU3MDA1MTJmIHJlbGVhc2UzMS1tYWludAorNzM3OTAgODU2NzdhMmM3ODU1ZDIyMTQzNGQ0YjBhNTMwMWJiY2U4NzUyYmE0MyBsZWdhY3ktdHJ1bmsKKzczNzkxIGVlZWIzNWYyODgxMmNlNWU4NGMwYjk4NmI4YmE4MmRlZGQyZGNiNDQgcmVsZWFzZTI2LW1haW50Cis3Mzc5MiA4OTY4Njc3M2E2MTlhNzcwY2Q4ZjFlMDQwMTg2N2QwZGYzODdiMGE0IHB5M2sKKzczNzkzIGQ4YzgzY2MwZDNmZDhjNTRjN2M1NzI3YWRjODJhMDYyODc3MzBmNjUgcmVsZWFzZTMxLW1haW50Cis3MzgwMSBhNTAxNTczYzIzZjJhNTc4NjYxODdjYjcxYWY2MTE2OTQ5MGM3NzUzIGxlZ2FjeS10cnVuaworNzM4MDIgNDI3ZmI2MzNjNGNjZWFmNjY2MzE5N2Y0NWZmMTc4NDcwNGUxODZjYiByZWxlYXNlMjYtbWFpbnQKKzczODAzIDQ2YTliMThhMWExNzZlMTEzMjEzZWFjNGIxNDFkYTg0MTk2YjE4OWYgcHkzaworNzM4MDQgODc3NjNjOTdmNjhlYTNmMDRhMDkwODk3MGE0YTQ2ZjY0YzA1MWJkNiByZWxlYXNlMzEtbWFpbnQKKzczODA1IDg1NGMwOTQ4YjA4ZDA0MThkNmUxZTY3NjhlZDQ4MWY1MGZkZjM3ZmEgcHkzaworNzM4MDcgNTljNjZhZGUzYzI2ODIyYWE4OGY5ZjAyZDE1ZGQwZmU1ODA5ODUzYSBweTNrCis3MzgwOCBmYzZhZGZmZjlhOWVmZDUyNzExM2FlZjk5YTAyYzY1NDQ1MDMzMGIxIHJlbGVhc2UzMS1tYWludAorNzM4MDkgMWM1MjkyMThiYTk2NDQ0MDAyMzhmOTYzZjFhMDg0NDdjZjhhYmJhMiBweTNrCis3MzgxMCAzYTIxNDYyMmM5NDNjYTRhOGQwMGQwNDczOGIxOTI5NTc5ODkxN2Y0IHJlbGVhc2UzMS1tYWludAorNzM4MTIgZjZmYTVmYjAxMGJmN2ZjYWQ2OWIxNjI0ZjUyYTg3N2YyNWI3ODJiMyBsZWdhY3ktdHJ1bmsKKzczODEzIDBhNDZlMGUzZmMwNzQ4NTNkODJjNWU1MDY0YTQyN2RhYjliNDRkOWEgcmVsZWFzZTI2LW1haW50Cis3MzgxNCA3YjBlNzk3ZjZiMmM4NmVjMzBkM2U2YjYxNzE4MTQ1MGY3Yzg2YzJkIGxlZ2FjeS10cnVuaworNzM4MTUgYjJjNzc2ODU3ZGM0Yzg3M2ZmNTllZmM3ZmM4OWU1Mzk5MmQyYmQ1MyBsZWdhY3ktdHJ1bmsKKzczODE2IDg4NDJmNGUyZmIxYjc0ZGIwNjhkZjA3ZmU1OTg0Zjc3Y2FmNjRlY2IgcmVsZWFzZTI2LW1haW50Cis3MzgxNyBkZmI5ODVhOGRlNmY2NWM5NjNlZTRjNTdhMWMwZTlmZjcwNmU4YmFmIHB5M2sKKzczODE4IDljOWZlOWFhZmJhNmQ2ZDA4ZGRmZmQwNGU3N2U3ZDRjY2M5ZGRhMzYgbGVnYWN5LXRydW5rCis3MzgxOSAwMWFmN2I1MmUwZGI1OWUzNTJmMWM4ZTBkNWQ3ZWVkYmNkMzE0NTgzIGxlZ2FjeS10cnVuaworNzM4MjAgYzdkYTBkYzZlYjBjNmM0NDBiMmEyMWE1ZDE5ZDI1OTcwYjc0M2ZlMiBweTNrCis3MzgyMSA4YTdjMjA2NmE5YjJlNjE0ZDUyMzM5NDYzYTQwNThlZWU5ODQ5ODllIGxlZ2FjeS10cnVuaworNzM4MjIgNDYxNzg4M2FjMWYzM2ZjZWM0MGZiN2E4ZGI3MmY1YjllNmNlNjAzNiBsZWdhY3ktdHJ1bmsKKzczODIzIGMyZjQyNzBiZTM2MjkyZDU0ZjdlNTM5ZDZjOTViNTFjNzk0MzIyZGIgcHkzaworNzM4MjQgMGUzOTFiZjNlYjlkZjljYWI4YTg2NjI1NWE5MTEwZTRkYTBiYmE5MSBsZWdhY3ktdHJ1bmsKKzczODI1IDk4MDhlMzhmZGU3MmI2YjMyYmJiZTYxYWY0NmQ1NDA1N2M2NDViMjcgbGVnYWN5LXRydW5rCis3MzgyNiA1NDBmZDQ2MTYzZDFjOWJlNGM1YjAxYmMwNDczZGFiNWE1M2JlOWUxIGxlZ2FjeS10cnVuaworNzM4MjcgNTJhYWE3N2E1ZGJmYzdmY2E0OTFmYWJkODkxZTBhZjlkMTkzZGMzOSBsZWdhY3ktdHJ1bmsKKzczODI4IDA4YjU4Y2JlY2U3OWVlZGY5NjhiM2QwYjUzMDBmZDE0NjZiNWNhYmMgcHkzaworNzM4MjkgMDQ5MTIyN2U1NDBlY2U1OWY2ZmJjZTgwNzIxMzA3OGNiNTdjNTkxOCByZWxlYXNlMzEtbWFpbnQKKzczODMwIDgzY2UzMzJhMjgzNGY5YmY4NDdkZDc0M2U2Y2M4OGE0YjFlNWU4ZmMgcmVsZWFzZTMxLW1haW50Cis3MzgzMSBmODgyNjk2ZmQxMzRmNzcxNzc0YmIzM2JiMzM4N2FmZmQ0YWI2Zjk5IHJlbGVhc2UyNi1tYWludAorNzM4MzIgMDZiMzYwYTMzZDU3MTFlMzEwZjE5MjZkNGE2NWIxNTBiYTRkMjJjOSBweTNrCis3MzgzMyA3YjlhZDlhYWE5MDI0YzE0ZjZmNWI0NDM0NTljYjExYTI3MjFkYWZjIHB5M2sKKzczODM0IGQxMWQ4OTlhYWIxZDgwZTRhYjI3NThmZWZkNWFiOTM2MGE4MzY2ZTUgbGVnYWN5LXRydW5rCis3MzgzNSA3ZGQ4ZGJkMjcwMzMzODNlYTFiNzI0YjE4MGM4OTQ0MTUzZDRlYTcxIHB5M2sKKzczODM2IDg2OGZmMzdmNWE4MDEyNDc2NzgxZTliNTA0YWY4ZGNmZTcxMDJiN2UgcmVsZWFzZTMxLW1haW50Cis3MzgzNyAxZGVhN2VkNjg2N2Q3YzdkMDg1MDJjYTIwOWNmZTE2NGY0ZWEyMDc4IHJlbGVhc2UyNi1tYWludAorNzM4MzggNzg5ODdiY2YxYWJmYjA4MzU0YzI0Mjg4YWJmMWMzODAxYTYwOTZmNiBweTNrCis3MzgzOSA3ZmYxNDA1Y2NiNjRiYjUxYzRlMTljMTk4MjM3MjU1MjJhODQxZWU0IGxlZ2FjeS10cnVuaworNzM4NDEgNDRmY2RiYjYyMDM4YjExNWYzZTk3MWZmZTlmNjRjZWVlMDA0YzEyZiBsZWdhY3ktdHJ1bmsKKzczODQzIGY3NDJjMDg3NTI4ODdkMzg4ZDAwMzA1NDQ0NDk0NGJlNGVmNzAzNjggcHkzaworNzM4NDQgNGZmNGFhOGQ2NTgzMjk5MjA3NjgzMDgzZGQ2MTYyZDQwZTgyZmI0ZSBweTNrCis3Mzg0NSBjMjMzNjE1YjM0YWFiOGU1MDU3YTJlODhjZGRjYjQwMDE3YmI1MzYyIHB5M2sKKzczODQ2IDQ2NmNhOTZiZTE4MjQwMDlhMGQ0YjdhMzNhMGZhZGE3YThiZmQxMTAgbGVnYWN5LXRydW5rCis3Mzg0NyA3N2ViZWFjYzEwN2E4MDYwZTlmMTIyYjUyZWFlOWMwMzlhODE0NmFlIGxlZ2FjeS10cnVuaworNzM4NTAgOGU4MTU3NDQ1YTU1NjU3MjRmMjc2NjFlMWU0ZWQyYjM1MTk3MmRjNiBweTNrCis3Mzg1MSBhYjQzNGYwZGNiMTVkOTg0ZTllNjMzM2UzNjk5OThkODFmZDkzNTNlIHB5M2sKKzczODUyIGE3NmIzNGNmYzg5N2MxMDI2ZjdiZjAwY2Y5MjQzYjExNzVhNGRhMzAgcHkzaworNzM4NTMgYTQwYTIyNjYxZTUwNDg3ZDJhNzM4Nzk5MzU0MGViYWMwODRhNjBkNyBweTNrCis3Mzg1NCBjNmYxMzkzNGY0YzY2OWI0MDNlNDgyZDNjM2FiYzM1NzBhNDkwMzIzIGxlZ2FjeS10cnVuaworNzM4NTUgMTBhNmNhMmMwY2NiMjcyN2EyNTg2ZmE4ZjQ3MWUzYWQ2Mzc5MTg0OSBweTNrCis3Mzg1NiAyNmY2MGZkNDdhZDNmYTRkNDI0ODI3YTIzZDAyM2ZhMGEzMTRlNmZkIHB5M2sKKzczODU3IDg1ZGI2YTU0M2IzZTQ0YmFmMGU2MTY4YzIzY2YxNmE4ZTUzOTZmNzMgcHkzaworNzM4NTggMWZjMzdmZWNhZjhmMzNmNzc3MzBlYjg4YTM5MjIyMGYyMWY0MjdhYiBsZWdhY3ktdHJ1bmsKKzczODU5IDI0NDQ2ZGM4N2Y3M2U3ZGYwN2UyZmRiNjU3YTFlMTMwNTFhYTY4OGUgcmVsZWFzZTI2LW1haW50Cis3Mzg2MCAwNTIyZTU3MWNlNzQ5NGZhN2Y3NWIwYjZkNmFiYjczNDMzNjRlYzllIHB5M2sKKzczODYyIDdiYjc3NThlNmQ2NGI4ZjkwZmYyNTdjYjc2OGY3M2UzYzVhNTcyY2EgcHkzaworNzM4NjMgNDI2Mzk0ZGJiY2VlMjJmODcxMWRlNjliZGIzZTZkM2JkMzljYWVmYiBsZWdhY3ktdHJ1bmsKKzczODY0IGI0NmFiYzJmMmExZmJhY2FlYzAzZTkyOTk5YzZmYzEwNmEwNjljNDUgbGVnYWN5LXRydW5rCis3Mzg2NSBkMWVkYTcwYjM4M2U5ZWViZDM5YTBlMjE4YmUwYTE0MjRhNzFkYTNmIHJlbGVhc2UyNi1tYWludAorNzM4NjYgYzIzYThmMWNmYWI4ZmFjYTFiYzEwNjNlOGI0ODEwMTlhYzBhOTAwNiBweTNrCis3Mzg2NyA0OWZmMjM0MjA5MTliNDFlYzBiODc5NDAyNDZmYjA5ZTgzOTg0MjI1IHJlbGVhc2UzMS1tYWludAorNzM4NjggNzQ5Y2YwNmNkMDcwOTlhNjBlM2ZiNTAwMjhkMGNkMThjMzVhMDRhNSBweTNrCis3Mzg2OSA1OWNmNWY4MDhjMjRhOTk5ZTM3NTBjOGRjYWI2ODk0MzFhYjE3ZGJlIHJlbGVhc2UzMS1tYWludAorNzM4NzAgZTlmYzg5NDdjNDlhNTU2MzhhOWVhNGMzZTMyNmM5Y2RkNGFmZDBlYyBsZWdhY3ktdHJ1bmsKKzczODcxIDM4ZDZlNGU1MWFmMDg5NTFiMGU5NmY4OTYwNzllNTBkY2Q2YmFkNjggbGVnYWN5LXRydW5rCis3Mzg3MiAxY2VmN2U3MTYyNDc4YjhmODZmZGZlZjlhY2RkYzRhMDc1ZmFmZTcxIHB5M2sKKzczODczIDMwNjM3MTRmZjlmMzFjMGZhYjZhMTgxN2EyZjg2MGRhNmQwOGZjMDAgbGVnYWN5LXRydW5rCis3Mzg3NCA2MzhlYTEzNGFhODJkNzJhMmFjMjBiYWYyMThlMGY0ZjllODIwYmZlIHB5M2sKKzczODc1IGRlNThmNjEzODZjM2I0OWU1NWZjM2RjOWFhNGU4YjIyNzYyNTA1M2YgcmVsZWFzZTI2LW1haW50Cis3Mzg3NiA0MTY4MTM4YzM3MWU1ZDM1MTA0ZjdiNzU2MDU3NTI0ZjBkOTRmMGJkIHJlbGVhc2UzMS1tYWludAorNzM4NzcgNGVhODEzMGVlMDllODRiNDQ0MTY5MTdkYTEyYzFkNmMxNTAyODU5NSBsZWdhY3ktdHJ1bmsKKzczODc4IDgxMDAyYzc2MDBiZDVkMzIwMTllYzg2MTI5OTA4YjUzYzgxZjM5ODcgcHkzaworNzM4NzkgYWRmZDZiNzNkMzY0NzQxYjRkODk3OWExMDY0ZjQzOGEzZjQxZGViZCBsZWdhY3ktdHJ1bmsKKzczODgwIDg4MGI1MGJjYTFiMTkyMmY3ZDJiNGUxZWI0NTMwOWI4NmRiM2I5ZjQgbGVnYWN5LXRydW5rCis3Mzg4MSA5OWUzMGFmNDExNjlmMDVhNzU2MTUyYmY5MzBhZmY4ZDZjYjY1ZThmIHJlbGVhc2UyNi1tYWludAorNzM4ODIgZWUxNTZlYzVlZmJmOTZkMDBkNTQ2MGVmYTk3Y2EwMDA5YWJmNGVlNSBweTNrCis3Mzg4MyAxZjQ4Y2JkNDMyMjZkMjZlZDU2MWY3NDgxNWIxODFhYjg1NTliZGVkIHJlbGVhc2UzMS1tYWludAorNzM4ODQgN2ZhMjFiZGMzNDhiNGY2YTFiN2E4MjJmNTdiNTE0NzgzM2E1OWI5NCBsZWdhY3ktdHJ1bmsKKzczODg1IDFmZDgzOWI4MzMwYTFiNjQ1MmEwN2M4NGYwMTZmM2E1MDYxZDJhYTUgcmVsZWFzZTI2LW1haW50Cis3Mzg4NiBkZTZjNDhkNzNiNzE2ZWVhZjNiY2E3Y2MwYTUzMjE5YTNiN2Q1MWY1IHB5M2sKKzczODg3IGZhMDgwYzRmNTM5YTllYTk4YjllYTQwNjRmNzk5Nzk2YjlkMjdkOTUgcmVsZWFzZTI2LW1haW50Cis3Mzg4OCA4OTdiZGVkODAwMjA2YTZmNTUyM2QyMTkwYzVhYzFiZjAwMGEzZDgwIGxlZ2FjeS10cnVuaworNzM4ODkgOGE4NDRhNWIxNmRiYmY5OTMyMzQ0MGJjODMzMzZiZTNkZjE0YzkzMiByZWxlYXNlMjYtbWFpbnQKKzczODkwIDg2MGEwNjlkMTI2YzliYWY2MGFhMTA1ZjFjNTk1ZTRmYzBhZDFmOTMgcHkzaworNzM4OTEgYjNmYjVlNmI3ZTgyZDYzZmJjNjdhN2UxYzI4OWRmMmMwNjZkMzQ2ZCBsZWdhY3ktdHJ1bmsKKzczODkyIGYwMmU0NzEyMThiNzc5MWQ0MDlkNTNkNzFiYWMzMGVmNTRmNTdjNTQgcmVsZWFzZTI2LW1haW50Cis3Mzg5MyA4YmVmM2EyNjdlMWVlODRmM2Y3YTZlM2M3ZTRiOGE2ZWUyZGM3YWJmIHB5M2sKKzczODk0IGQ5YjE5YjM3ZjgxYWVjYjgzMWFmMGY5ODMxNTRhYzQ5ZTg3ODU5YjEgcHkzaworNzM4OTUgMjdiNTE2MjYzMjY5MTZlNzQ3NmExNDJhY2Y4MGMwN2M2YTlhZDNiYiBsZWdhY3ktdHJ1bmsKKzczODk2IGQ2MWM0ZGNmNjE4OThkYmI3MjVkOTEyNjA1YTAxMDA5YzdlYTlhMzcgcHkzaworNzM4OTcgZDU5OTI1NGMyMDNiYzY5N2I2YmFiY2IwMmNlZGU3ZGM1MGVkZTk0YiByZWxlYXNlMzEtbWFpbnQKKzczODk4IGJhMDQ1OWYyYzBjYjQwMDVjZGRiMDQwNmQ4MjQwNDlkZGUyZTVmOWMgcmVsZWFzZTI2LW1haW50Cis3Mzg5OSBiZTczNmI0OTBhYjJjOGJjZDU5MmFhY2IzMmYyY2MyN2I5ZGU1NzdmIGxlZ2FjeS10cnVuaworNzM5MDAgNDY4YTQwYWRmNTZmNWUzZjQ1NTA3MWRmMmNiMWU3ZTNhNzlhYTA0MyBsZWdhY3ktdHJ1bmsKKzczOTAxIGM5MmI5Mzc3NTU2OTBiOTQ0ZTg2OWExNjIxMDdhYjJlNmI0MzFmNzYgbGVnYWN5LXRydW5rCis3MzkwMiA5YWZlYWUwYmFiZjljNGY2NThmYjNlM2I3MjJkNTRmMjQ5NDFiMTcwIHJlbGVhc2UyNi1tYWludAorNzM5MDMgMTNjNWNmNDg5Nzk3YzQ1YjZiYWQ4OGI2YTRkMzUwNTJkMmMyZDg1YSBweTNrCis3MzkwNCA4MjkwNTE5MTk5ZWMyZmI3YTA5ZWM3ZDhhODZjMTgwMjRkMTAzMThjIHJlbGVhc2UzMS1tYWludAorNzM5MDUgNGYxYjJhNDU3ZTgzY2UxMzRhMzYwZWU2Y2M2MDkyODJiYWY4ZDg2NSBsZWdhY3ktdHJ1bmsKKzczOTA2IDBmMDY1YjQ4YWNmOTUxMjlkMjc3N2UyZDJhN2FjMTc3MjczMzQwOWMgbGVnYWN5LXRydW5rCis3MzkwNyA1ZjQ1MzUyMjU4MTliZWUxNDk1MzM3OTkwM2VmNTU1MDhlMjc2M2Y2IGxlZ2FjeS10cnVuaworNzM5MDggNWQ5YjMyMzAxODE1NDIzODhmMGM2MDU2N2VlMjg0OTZiYmYyYjM3OCBsZWdhY3ktdHJ1bmsKKzczOTA5IGRhMmMxNDdlOTI5ZDBhMWQwYjFiMDY4MTM4MDE4MzI5ZTI2ZjljODcgcHkzaworNzM5MTAgNWEyOGE5NWRlYzE5MzA1ZTdlYjBmZjYxNGJjZDk5MDBkNmY3N2FhZSByZWxlYXNlMjYtbWFpbnQKKzczOTExIDhhNzdlZGU0ZTE3NWE4YzY0ZDJmN2UwNWMxZTRmODFmMDMyZTcyOTQgcHkzaworNzM5MTIgNGFlMWU5NmU5Mzc3NGMwN2VlNDQxZWE1NGNhYTJiZjNiNzk5NzIzZCByZWxlYXNlMjYtbWFpbnQKKzczOTEzIGM0N2VmNGUxMDdkZjkwOGM3MThlOWI1MTRmYmQxYWRhMzA2ZjY4OTcgcHkzaworNzM5MTQgYjUzZTQyZTUwYzQxNTMyYzhjOTA0MzBhYTg3OTZkZDg5NDFiNDFkNyByZWxlYXNlMjYtbWFpbnQKKzczOTE1IDM4OThkNTIwZjEwN2ZmNDAxZDdkMGJiZGUzNDQ2OTgzNjRlNzAzMzMgcmVsZWFzZTMxLW1haW50Cis3MzkxNiA1NjA5MzUyZmVhMTIwZTU5ZDIxOGU1MGY2NTRiNGY1YTJlM2FmZGI4IGxlZ2FjeS10cnVuaworNzM5MTcgZTg5ZmFhYWZhM2VlYTI0OTllMmM3ZDAyMWQzYWFmZThjNGZkZjA1OSBweTNrCis3MzkxOCAwYjJhYmE3YWMxZmFmNjAwNGQ4YTk1YjdkYzIxYjFlOTMwNjVhNDAzIHB5M2sKKzczOTE5IGFlZGMyMjBjYzliZjg5MTEyMjliZmVhZDQ3MmExNDEzY2NjOGQ1ZmUgcHkzaworNzM5MjAgMDExMzdlM2I5ZWJlOGY4ZDVhY2QwNTlhMjE3MGVjOGFhYWJjMzYyYyByZWxlYXNlMzEtbWFpbnQKKzczOTIxIDg3N2JkN2Q1MGQ4OTdmNGU2ZmZhODJiMGY5YjgzYmJiYTc3M2NmZjQgbGVnYWN5LXRydW5rCis3MzkyMiA2ZjBlNTlmYWI2MmNmZjI1N2VhNzdhZjUyMjY1NzUzMTU4MTQ2OTJkIHJlbGVhc2UyNi1tYWludAorNzM5MjMgNjI2NDEzMjcyNDY0OWJhNDY1NjQzMjY4OGU1ZDdjMjJhYWFiZDczZSBweTNrCis3MzkyNCBkMGIzYWY1NjVlYWE1YTkwZWFkNGI5NWQ0YTUzNGZlYjU2ODZkZjJjIHJlbGVhc2UzMS1tYWludAorNzM5MjUgZTUzZDAzMWU1NGQ0NzVjNDA2NzBlMDQxNzg3ZjhhMzMyMzE4YzMyNSBsZWdhY3ktdHJ1bmsKKzczOTI2IDAzYjg2NjA2Y2UwYTJhNzhiYzVlNTkxZTA5ZTMxZjM2MzlmYWVhZjIgbGVnYWN5LXRydW5rCis3MzkyNyA5YjVkMjgxOGUyZDBlNzAyNzc5Yzg0MWY4NDViYWM1ZTYyYWExMDgyIHJlbGVhc2UyNi1tYWludAorNzM5MjggMTM5MzQ3YjAwYzE4Zjc5YzAxNjk2OWVkMWNmODM2OGZjNzRjZWRhMiBweTNrCis3MzkyOSAyZmQ3NGM1MDI2MDAzNjkxMTFkZmUwMmIxYTM2OWZhMmRkNzhjZThkIHJlbGVhc2UzMS1tYWludAorNzM5MzAgMTRjZDE5ZmVhZjIwZDg1OTBlNWQ2ZDdjYmUyYWRkYTk3YWEzMDMxZCBsZWdhY3ktdHJ1bmsKKzczOTMxIGNkZGQ1MTY0ZGIwM2NhNzRlMGIzYWRhMDQyYzYyNzUzNmZmNGEzYWIgbGVnYWN5LXRydW5rCis3MzkzMiBiMWM2MzcyYTgwOTJjM2ViODcxYzc5NWFhMjZhMGUyMzUxNzc0ZjgxIGxlZ2FjeS10cnVuaworNzM5MzMgMjIxNzE4ZTc1N2JhZmFkMDViZmVlNTJiZDM5ZjM3OWQ4ZTYwOTIxOCBsZWdhY3ktdHJ1bmsKKzczOTM0IGZlYWFhN2NjMDJkMTIyY2YwMGJlMTliOWM5NGE3MjdlNzk5NWE2NTUgcHkzaworNzM5MzUgZTUzNmEzYjNhOGQwZTViMGE3MzEyNWYyYWYzNjYxMWM0ZDEyZGJlNyByZWxlYXNlMzEtbWFpbnQKKzczOTM2IGUyMDBlZTljY2M0YmVkNjEyNmJmMmRkNmNlNjNhM2E1ZGI4YzU5MmQgcHkzaworNzM5MzcgYWNhYTBjODdkNDAxZjM1OTNjM2M3ZDEwMzk5MDE0YWM3Mzg5Y2FhOSBsZWdhY3ktdHJ1bmsKKzczOTM4IDdiMjQ2OTQ1ZmM4Y2IwZGI1NmY2MmQwZTZmNGY0ODcyYzJkYWY1NDkgbGVnYWN5LXRydW5rCis3MzkzOSBiMjhkYWRkMjBkOWI3YjQ5ZWQwNmM2OTgwZDlhYzYwYWEyNGQyZjViIGxlZ2FjeS10cnVuaworNzM5NDAgNTljMzRhOTFjNTRkOWZkMGM0OTg3YmI1MTNlZTM0NmQxZTJiNWQ0NyBsZWdhY3ktdHJ1bmsKKzczOTQxIDg0MWExZTY4YjRlZGNjY2IyMTg0ZmJjYjIxYzVmM2ZjMzk4ZTA5NzEgcHkzaworNzM5NDIgNjdmNWUwMWQ1YTZhNzFlMjU3ODc2ZGZlMDVjNWIxNjg1YzY3ZWQ4NCBweTNrCis3Mzk0MyA4MDY2MTYwOGQ0ZTIwNTdjY2RjNDc0N2QxMjE4YmQxMzVlNTAxZDljIHB5M2sKKzczOTQ0IDRjNWUwNzVmNTQ3M2RhNTYzY2Q5ZWE0NjU2NzIyYWY3ZGJiOTkyZTUgbGVnYWN5LXRydW5rCis3Mzk0NSBmM2JmMDgzMjlmMDc5NjZiNWNlMDlmNDJmZjIwNTYwMmRmNmJmYTc3IGxlZ2FjeS10cnVuaworNzM5NDYgODIyYTAyYjcxYmJlYjJjMzdiN2I5YzhiNDYxNDA4NWE3ZmIyMzhkMSBsZWdhY3ktdHJ1bmsKKzczOTQ3IGM2NGY5ZGMzYzZhNDk4NWIzOTQ1ZDQ3OTc0MDIzZDM0YTQzN2I0NzQgcmVsZWFzZTI2LW1haW50Cis3Mzk0OCA1N2IzNTkxZjBjYjIzMmE0N2YyNTg3YTk3MGYzMTcxNWRmNmVkZDllIHB5M2sKKzczOTQ5IDU2Y2NlZjM0MjBlNzgxMzMzNjA5YjkxNTYzMGY4NzNhOGI3MThlNDQgcmVsZWFzZTMxLW1haW50Cis3Mzk1MCBkMjdmZGM3MDM3OWMyNmExMDlhYzY2ZWVmZmViNjMxZjY5NGYwYmRlIHB5M2sKKzczOTUxIDBiNTBlNjg0MWE4MWJkYmU4ZTg5NmE1YzQ5YmEwNzVkOTAwMTA1YzQgbGVnYWN5LXRydW5rCis3Mzk1MiA4NjgyMDIyNWE0ZDVhZmI3NjJkZTlhZmQwMzYyOTlkODAwODUwMjY2IGxlZ2FjeS10cnVuaworNzM5NTMgYTFiNzk3NzhmMjJlM2UyNGNhMzJjNTU5YzhmMWEwMmY1YTcyMDE3YSByZWxlYXNlMjYtbWFpbnQKKzczOTU0IDNkYWRmMzQ1M2QwNTUwOWQ2OGM0ZTM1ODQwNjI2ZDE0ZGE3NzBkYjggbGVnYWN5LXRydW5rCis3Mzk1NSA5M2I0OGFiOTBlYWQwZTVjNWY2YWE2YmM3NjJmMzFjMmZjZjhiMmVkIHJlbGVhc2UyNi1tYWludAorNzM5NTYgMTAyOGE5OTFiNjhlYzNlNmM2Y2RhZjM4MjA5N2UwNDVmMWJhNDk1OSBweTNrCis3Mzk2MSAwYzgxMjg3MGE5NzVlYzBiODY5NjdmMWU5ZDRkZTQ1YTkxZDc0YzAxIHB5M2sKKzczOTYyIDI2MzBjMDc1YjU3Y2IzNTdjYWEzOTI0YzAwODhlNDBiNjIxODk0ZTkgbGVnYWN5LXRydW5rCis3Mzk2MyA0OTNjN2Y5NTBhMmI5YjViYTgxNWRkNTk1ZmMzNWNhMzkyY2ZlMDE1IGxlZ2FjeS10cnVuaworNzM5NzAgODQ4YTVhYzkyNGI5YjUwMDhiMDA1ZjQ4OGM1MTM1MmJjZTg2YWJjOSBsZWdhY3ktdHJ1bmsKKzczOTcxIDJhMzk4ZWRlYjA4ZDk1M2M0MzYyNDY3NmY5MDMyN2IwZWExNWUwZWUgcmVsZWFzZTI2LW1haW50Cis3Mzk3NSBkMGYyMjU4NjViZTY1NjNjYjgzMGIwZDJhMDQ0ZDRkYTY3MjUwNjIzIHB5M2sKKzczOTc2IDMxODc2M2VjYzRiMzA0M2E2MTE5NmUxODI3YjdlOTdlY2VjNzM2MTUgcmVsZWFzZTMxLW1haW50Cis3Mzk3OCA1N2U5ZjJkMzY3YTgxZDM1YmQ3YjJkMGE2MGEyNjFhZmFlOTMyNDBmIHB5M2sKKzczOTc5IGFjZGE2OTJhODQ3ZmNlOWU5NTI3NzY1YjYxMDNhYmM1OWQ0NTQxNGMgbGVnYWN5LXRydW5rCis3Mzk4MCBmM2I5YzUwYTdhYWQ1YzAwZjBkNWIzMjQ3NDhiMWMwNDVjMDk5MmY1IHB5M2sKKzczOTgyIDg4YWNjMTBjYWE2ZTExZmJjZTlhZjdmNDk1YzE0NWZlZjhmMmFiNjMgcmVsZWFzZTMxLW1haW50Cis3Mzk4MyA1YmUwNGUyMzE3ZThkMTJhOGJlMjgyNTcyZWU3N2QyMGFhMGRlYTBmIHB5M2sKKzczOTg1IDAxMGE0OGU5NDIyMzcyMjdmMDczMzMxNWUyMTEzMTY3ZGJhNTcxMmEgbGVnYWN5LXRydW5rCis3Mzk4NiBkMDc2ZTY1YTkwZDZjMTkzODVhOTVmZTc5Y2VkODViM2U1NGU4OTJhIGxlZ2FjeS10cnVuaworNzM5ODcgMmI2N2NiOTI1YmIxOWU4Njk5ZjQ5NmU0MDhmYWNkNDEyOGJjYTUxZCBweTNrCis3Mzk4OCA5NTA3ZTRiOWI5ODg1ODg1MjlkNzUzOTZiOTIwY2E2MGFjZDNhMzc1IGxlZ2FjeS10cnVuaworNzM5ODkgYjc0ZTM5MjYyODE1MTNhMjA5MjAxNmRkNGVmNjZhNmYzNjQ5MGY5MCBsZWdhY3ktdHJ1bmsKKzczOTkwIGIxZDM0ZGZmZmUyZGUwMWVjODBkNTE0MzVmNTA1ODM1OThlZDQ3YTkgbGVnYWN5LXRydW5rCis3Mzk5MSBlMTcyYTg4NjUwY2Y5YWU1NzE2ZGRiZDFlN2ZlYjY0ZmJlNTM5NWJiIGxlZ2FjeS10cnVuaworNzM5OTIgYmQ3NGUyYzk3MzQ4OWE4NmYxZGQ4N2M0Mzc0ZTA0MjIwODExMDk3ZCBweTNrCis3Mzk5MyA0ZDJiNTMyNWVlNDhlODVkYzIyYjkyOGRjNDVkYWY4MzM3M2U3MTljIHB5M2sKKzczOTk0IGRhYWJjYmYyNDE1ZGQwYTM4OTM5ZTEyZjRjMWViMWY4ZDdlMmVjNTQgbGVnYWN5LXRydW5rCis3Mzk5NSAzMmQ0ODY2MmFhNWYzNjMwNTI4NmUzNGJiNWMzNGQ2MjdlOGE1NTAzIGxlZ2FjeS10cnVuaworNzM5OTYgOGViYjkwZGMzYjA0NTBiMzliZDhhOWJkMGIyODVlZmIwYWUwOTkxYSBweTNrCis3Mzk5NyA3YmVjNmI0MDc0ZjU4NDcxZTM0MTdlYWRlNTUyY2Q5NTk0M2UxNWEzIHJlbGVhc2UyNi1tYWludAorNzM5OTggNzM3YTZiMzM3NTA1NjNjMDJmNzUwNjEzMGUyZTA1YTQ2ZDEzZTlhZiBsZWdhY3ktdHJ1bmsKKzczOTk5IDZkOTYyNWRkOTJlN2ViYzVhY2Y1OTQxNDkyY2Y1MWYxYzBiODU3YjQgcHkzaworNzQwMDAgNDFlYjExMjkwMTQyZTc2MzU2MmYyODUzNGMzNDliMTllNTVjNzUxNCBsZWdhY3ktdHJ1bmsKKzc0MDAxIGFhMjJlN2YzMjUxNzgyYTdjZTZmNjBmNDU0NjA5YTg4NzdmZjU3YmYgbGVnYWN5LXRydW5rCis3NDAwMiA3MmM1ZTE3M2FhYzVhNjgxYzk1NzcwY2ZmODc5MjMwMmMzYmMzNWM0IGxlZ2FjeS10cnVuaworNzQwMDMgZWYxYjExOTgzMzhiZmFkNzA0ODc4ZjA1ZTk0MjdjZmM3NWU3ZDMxYSBweTNrCis3NDAwNCAxMjQzOWEwMzM5ODhhNGVlMjE4MTFiNDY0Yzc3MzhkMWNmZjkwNzg0IHB5M2sKKzc0MDA1IDI5ZTdhNGRkNDE3Y2EyNTVmZmQ4OTc3NzQwMTI4YTBmZTU4M2U1N2EgbGVnYWN5LXRydW5rCis3NDAwNiAwZWQ0MDVjMDVjYzMwNGJmZjU3ZDg0ZmU3YTVmNDJiODNmZDIyZjk4IGxlZ2FjeS10cnVuaworNzQwMDcgOThiYmI5NjM0NjcyYTU4MWRmYzk5MGY3Y2NkMTJjYzA3YTllZjFjNSBsZWdhY3ktdHJ1bmsKKzc0MDA4IDIwNzNhOTg5YzAxOTI2YjEzM2ZmMjIyNmE4MGRlZjE3NGU0MmU5NWYgbGVnYWN5LXRydW5rCis3NDAwOSA4YzY2MDZiMzJjYjFjOTBmMzUwZTY1YjM4MTAzNDYwYWQxZDViZDg0IHB5M2sKKzc0MDEwIDg3YjMxMjFjZTU4MGVmMjEzZGNhYTJiYzJjZWM5NDE5OTgwODhmYWUgcHkzaworNzQwMTEgOTM5MDZiMzlmZmVjYzRiMTUwNmZmYzc4ZmVkNjM4ZDBhZDVkODc3NiBsZWdhY3ktdHJ1bmsKKzc0MDEyIGE1MGViNTk2YTZkM2QxYzJlNzQwMzZmYzRjYWJkNThmNDcxYjZmNjQgcHkzaworNzQwMTMgZWRjNzE0ZmZlNmNjYzNhMzNiODk0ZWNmYjVkYzk0NTQ3MDBmY2MxYiBweTNrCis3NDAxNCAzYTMxNjI0M2JkNmM2ZjVmNjM1MTE0YWYwOTFhNTcyYWQ4ZDhkZGI2IGxlZ2FjeS10cnVuaworNzQwMTUgYTg5MjI3MjNhOTJkMDAxZjI0M2M0NmE5Y2FiODhkZTcxNTc2MzBkMSBweTNrCis3NDAxNiA3M2RjZDE4M2ZhZTJkNmQ2ODhhNDU5MzY3MTUyYTI2YjAxMWJiYzcwIHB5M2sKKzc0MDE3IGQxMzQwYTUwYTFiMzA3NmE1ZDVhOTIwNWE2ZjYwN2NjMDNiZWZjN2IgcHkzaworNzQwMTggYmQ0MzFhMGU2ODI3NDlmNDJkOGU5OWFlNDVjMGU0Njg5ZjQyMDBlZCBweTNrCis3NDAxOSAxZmQwZjU2OTdiNDBkYmMxYmZlMmU0MTE2NWYzM2I1YjQzMjQ1ZWRkIGxlZ2FjeS10cnVuaworNzQwMjAgNjlhMDRkYmQ1ZjBhMjdkOTUwNjhkMWNkNmVjYjgyNzMxMTVlNTU0OSBsZWdhY3ktdHJ1bmsKKzc0MDIxIGRjMDg0ZjQwMDNiYmJmNjgwYmM3Zjg0MDg4NzMxYTc4NGMxMzYyMTkgbGVnYWN5LXRydW5rCis3NDAyMiA5ODI3MTQ2OGFiMDdhMTg5ZjY3ODM5NGJkMzliYjhkZmYyNGU0NTAwIGxlZ2FjeS10cnVuaworNzQwMjMgMzM3MGQ2MDhlNWFhNDg1NjM4Y2U5YzIwYjhiODFhOWRjNzU4OGNiOSBsZWdhY3ktdHJ1bmsKKzc0MDI0IDM4NjQ1MmIyZDlkNTczMzc4NDY0OWE5NzgzNmNmMDQxMzY1ZDM5MTkgbGVnYWN5LXRydW5rCis3NDAyNSAwNzc1MGM1NWZkNTVmYjgwNTE0NjEzODdiMjZiZTM1MzAwMGNhNjcwIHJlbGVhc2UyNi1tYWludAorNzQwMjYgOWIxN2Q1NDY5ODIxYjNmOGUxZTFkMzJlZWI2NmI4YjFkYzE2OWNiZSBweTNrCis3NDAyNyBmOTc4ZGRkYjliNzFmZDg4YmRjY2UwZGU2OGY5Y2FkNjc5NDBlOGVjIHJlbGVhc2UzMS1tYWludAorNzQwMjggYWI2M2EyNjJhMTEzYjk1NGViMTljN2NlMjkyNTkzNDdkZDE4MjY1NyBsZWdhY3ktdHJ1bmsKKzc0MDI5IDdmMTU0N2Y2NmNjZjMwYzFlMWJmMDBlNzdlYTg4ZDQwMjBkZGNkZDAgbGVnYWN5LXRydW5rCis3NDAzMCBmYzhmYjhlZmYyMGVjODYzODA4ZTdjNjZlNmQ2MzQzMjBkYTMxZmQ5IHB5M2sKKzc0MDMxIGU4MzBlODNmMGY1YWU0YmI4Njk5ODhjNDJmOGI5Y2I1ZTRjMTAzZTQgbGVnYWN5LXRydW5rCis3NDAzMiAwY2E4MGEyYzc3ZmZkZTg4NTQzNjcyMjg5ODcxYjNlODQwNzRhMDVmIGxlZ2FjeS10cnVuaworNzQwMzMgY2ZhMDA0YzFmZDk1ZDc2MmEwMzE4YjUxNGM0YjIyOTM2N2FkNDE1MSBsZWdhY3ktdHJ1bmsKKzc0MDM0IGIxNmFlNjlkNjQ4NGE3MDUyM2I2MTliYmJkMjRlNjYzMjBmMWM2MGEgcHkzaworNzQwMzUgZTYyMWUzZTMxOTZlYTQxZmRjMzFiM2IyMGIxOGNjOGE3MjFmNzE5MCBweTNrCis3NDAzNiBjYjNhYThiY2Q3YjAyZDhhMDFlNzZiZDY5YTVmNGQyNGUxYjRiN2ZhIHB5M2sKKzc0MDM3IGRjZTQ3YzEwZDNmYWUxZmVmMmZjMmZmNTA4MDQ4Mjc1NTM2MWI1ODAgcHkzaworNzQwMzggZDIwNzlkNWFkY2ZhYTQ0YTFlZjUxZGI1ZDY3MmZlMzA2ZDFmNmI3MyBsZWdhY3ktdHJ1bmsKKzc0MDM5IDdmNmQwM2I1OTg2NWMzMTcwYjMxMDhmZjNiM2E0ZjI2ZDljZTI3ZGIgbGVnYWN5LXRydW5rCis3NDA0MCAyZGFiOGQ2M2ViNTU1NjgzZWJkNDljMTgwYTJjYzNhZmI3ODliMTg1IGxlZ2FjeS10cnVuaworNzQwNDEgOWU3NTI5ZWY0NGQ0MzVkMTk4ZGRjMjYyNzk4NmQ1MzUzMGVmZDllNCBweTNrCis3NDA0MiAxMmExM2U1MzhhMTFkOTk0ZjhmZDU2ZGNmMmQxN2JjNDZmYjJmMzIxIGxlZ2FjeS10cnVuaworNzQwNDMgMTMwZjE5MTFkMTQ2NWI0NjA0NGU5YjkwMTY2MWJjMzJkZGU1N2VkMyByZWxlYXNlMjYtbWFpbnQKKzc0MDQ0IDI3ZTcwZDgxYWQ1NzVlYmUyMzFhNzY0YmRiZTFkNGJmM2M4OWMxZjEgbGVnYWN5LXRydW5rCis3NDA0NSBiN2I4MjZmNjVlNzVkYmVjZjVhNDQ3YzhkOTYyY2U1ZWExMzgzMzRiIHB5M2sKKzc0MDQ2IDkwNmVkMTE5Y2IxOWI0MmNhZDI0N2U0NTcyNDg5NGE1ZWM2ZGQ4NmIgcHkzaworNzQwNDcgODUxMWM3YzBkM2VmZmJjYmZlYjNmNmNkMDljZWNjYzhhZTY5YzVmYiByZWxlYXNlMzEtbWFpbnQKKzc0MDQ4IDAxYWJjZDM3MzAxNDVmOTNkZjNiMmZkMThkZGUxMzQ3ZTQ4OTg0OWIgbGVnYWN5LXRydW5rCis3NDA0OSAxMDdlNGZiOTM2MDVmZDg5MDE1MTc2ZmVmNTdmMGNlNTFjYmQ3NGYxIHB5M2sKKzc0MDUwIDFlYzVjMjY2ZDM5MGRmNjFmYTg5MjAxY2E0MWFjZWVhNmJjMGI2YTIgcHkzaworNzQwNTEgYTI5YmFiYjU0ODg0YjUxNmRhZTYxNjE4YWM0YzRjNWEzNmQyN2Q1OCBsZWdhY3ktdHJ1bmsKKzc0MDUyIDVkN2Q4NTI0MDQyNjMyZDNkOTE2YWIzNWVlNDNkNjExMDNmOWZjMmIgbGVnYWN5LXRydW5rCis3NDA1MyA1OTM5MjE4MGJmNDQ1ZWNlMWI4ZTNhYmFlZTc0ZTRiYjAxZDg3NjFlIHB5M2sKKzc0MDU0IGI0Mjg3ZmYxNjRlNWJjOTM5MTQ5OTY0ODM3NWEzNTRlYmQ3MjkzNDIgcHkzaworNzQwNTUgNzI0ZGZlYWIzZTliOTE1OTBhYWRlMThjZTg3OWIzODAzN2Q3NDE3ZSBweTNrCis3NDA1NiAyZmNkZjk2Nzc5N2RlNjU0NjllOWFiZmI4YzI0N2RiNTk3MjgyYjM4IHB5M2sKKzc0MDU3IDFjNTdkZWJmOTdiYzI3NGQxNmZhMjJlZTlmZjk4M2ZiZDkyYTAwMjMgcHkzaworNzQwNTggYzA3NWI5NzRjMzVjYTRkMTJmYzkxOGY0YmQyZmRjYTQwNzY3ZTgwMCBweTNrCis3NDA1OSBhMDYxNjlhODcyYjM0ODljYmM0YjVkYWEwMTBlNTQzZmU1ZTNmNDliIHB5M2sKKzc0MDYwIDFkYjk3Y2U0YTg1MGEwY2UxYzJkZDQ1NzNkOGRkZTVlY2U3ZThkZGEgcHkzaworNzQwNjEgMjBjYzBlYWE4OTI2NDY3ZWJhYmY3ZGQ3ZTNiZDRkZmMxNTUyY2Y3NyBweTNrCis3NDA2MiA3NjNlNTEyOTY1ZmE3ODAyNGFjYjkxYzk3Y2M4YmE3NzM5MGQ2NGIwIHB5M2sKKzc0MDYzIGVhOGZmOGQ2MjkyOGEzY2JjNDQ2ZDBlMjQyZmZjYWU4MzU5ZDllZjUgcHkzaworNzQwNjQgOGFhODBiNzE1YzUxYzc2ZTc0ZjkzM2Y0YWE5MDM1YjYyY2I3NzZiOSBweTNrCis3NDA2NiAzNmE3ZTk2ZTkwZmIzYTI2NTIwNWE1MzdlNjc2ZDZjMDViOTJmNThlIHB5M2sKKzc0MDY3IGRiNWIzZDMxODY0OTMzYjlhYzNjNWRmMjMzZTBjODY3ZDgzMzUwYTMgbGVnYWN5LXRydW5rCis3NDA2OCBmZTJiMDI2ZGRmMjFjZDFlNWU3ZDZmYTg0ZTJlMTIzYWE5OWY4MTEyIHB5M2sKKzc0MDY5IGUyMzkxZDM2MGFjMjQ3OTE5YzQ1NzUzYjkxZjM5YzU4MTM3OGJjNGIgbGVnYWN5LXRydW5rCis3NDA3MCBiY2RiN2IxODdmYWEwNTQzY2M0ZGExNmU3OTg4NDVkZjM1NzZmYWFmIHB5M2sKKzc0MDcxIGFiMjRmZjY0NmRhODhmNTVjNDNiZTVjNDUzZGVkOGQ3ZTc4YjM0YTQgcHkzaworNzQwNzIgNmUwNzVlZTQ4ZDRiYWVhMjJmZWJmMWNhMjc0NzIwZTJhNGM4ODFhZCBsZWdhY3ktdHJ1bmsKKzc0MDczIGJhNzM4YWYxNGRmY2Q0MWIzMmQ1N2M1MjY2M2RjNTI2NzAwOGJhYTcgcHkzaworNzQwNzQgNThiNTEyZWRmZGJiNDFhZDBmYWJmN2VlZjhjNmVhODA4YmFhMDczZCBsZWdhY3ktdHJ1bmsKKzc0MDc1IDI1OTEzOGE5ODhhNTI3MGExZDg3MThkYzkyMWY4YTVmZjRhNmU0Y2UgbGVnYWN5LXRydW5rCis3NDA3NiA1ZWUyZTk2NWRhNmVkZTEzM2MyMTAxMTU1MjA5ZWMwMzFmYzA3YTI5IHB5M2sKKzc0MDc3IDBhYTUzMjExN2E0YmI2OWYwN2M2M2FlNDdjNWVhNDMwM2NhM2I3ODEgbGVnYWN5LXRydW5rCis3NDA3OCBiMDUxMDU1YjU5ZjE5NDJjY2EzYjYxNTY0NzJkODEwN2Q3NzkzMjMyIHB5M2sKKzc0MDc5IGExOWViOTYzN2ZmN2VkZmZhMTVhNmRkNjkwNmE4YjQ2ZDNmZmZhMjQgcmVsZWFzZTMxLW1haW50Cis3NDA4MCA5ZGM1YWE2MmJlNzJmZjg3YmY4Zjk5OTM1NmUyMmU1ZTFiOTE5MGYwIGxlZ2FjeS10cnVuaworNzQwODEgNjZiYWJlNjMxMDM3Zjc0Njc3NzFhZTk0ZmI0N2IxNDA2MjJmNzYwYiByZWxlYXNlMjYtbWFpbnQKKzc0MDgyIGRlMWQ1MjA2OWQyZGZjYjcyNmM5ODUyZGE3NzRhYTY1NzEwZGRjNjkgcHkzaworNzQwODMgMzc1NTYzYzZkMzI0NGExOWQ3ODljYzA2Yjk1ZTUzOGNlZDI3NWI3YyBsZWdhY3ktdHJ1bmsKKzc0MDg0IDU0YjFmODAyNGJjODNjMzYzNDgwNGRkZjVhODkwZDkyNTZlNTkyZGQgcHkzaworNzQwODUgZjIwNzA1ODc1ZTgwNjUwOTc1MmE2ZTUzMmM0ZDcxYTQ3NWM0MmRhNSByZWxlYXNlMjYtbWFpbnQKKzc0MDg2IGM3MDQyMTI3MTk2YTUxNWZhZWYyOWUyZTA0Y2NlZDI3NTI5ZGM2YzggcmVsZWFzZTMxLW1haW50Cis3NDA4NyA0ZjE3OGU1OTU4MTMxMmU3OGRlMTdlNDc2MTBmMjg0YzlmMmY2YmI2IHB5M2sKKzc0MDg4IGVlMGI5YTkzMWM5NGE0OTY0NDdhN2UzNzhiMDlkYThlYmY5ZDRhMDggcmVsZWFzZTMxLW1haW50Cis3NDA4OSBjMzM2YjMwMzhkMDU0NjQyYWU0NzdhMjYzNzEzZTQxZTMzM2I4Y2IwIGxlZ2FjeS10cnVuaworNzQwOTAgNDYxMmEyYWNkZjJmNjA3ZDc0MzJiM2RlZWMyOTM3ZGI1NTAwZGY3MyBweTNrCis3NDA5MSA2MjM2YWRiMzY2MTgxZDYyNWJhM2RjNmI2NTZmNDkwYTMwOTE5ODQxIHJlbGVhc2UyNi1tYWludAorNzQwOTIgZDYwYjU1OWVlYWQ5ZjI5NzQ4NzlkZjU5NGRjMTg5YzdiNThkNmNjNiByZWxlYXNlMzEtbWFpbnQKKzc0MDkzIDM2NjM2ZmE1NGYzMzMzOWFjYjc2NWJhNjgwZTYzNWIwMWQ2NGJkNjYgcmVsZWFzZTI2LW1haW50Cis3NDA5NCA2YWQyNTYxMjQwODA0M2EwZGFiZTljZmQ3Yzk2ODBlNzNiN2QwZDM5IHB5M2sKKzc0MDk1IGYzMTEzOTU0ODdjOTcwZjJlYTg1MmFhOWFlNzA1MWJhMDA4NjAzOTIgbGVnYWN5LXRydW5rCis3NDA5NiBlYzFmMzJiNzJhYmU4MTMyNjc5NDg1MzAzNDdiZjc3MjkxMzdlZmJhIHB5M2sKKzc0MDk3IGFmOTc3ZTk0ZTJmZGQ0ZTNjNzRlZTUzZjJlZGU2NGMyOTk2ZmFlZDcgcHkzaworNzQwOTggM2E2MTNlMDBmNjZkMzQ4YmMzY2FlMjJhYjJiNjU4MWIxOWY4NDkyOCBsZWdhY3ktdHJ1bmsKKzc0MDk5IGU2Mjk1N2EwZWUxNDIzN2QwMzlmY2E2MjI4MDExNjc0Y2ZjZTI2NWIgcHkzaworNzQxMDAgZWVhZDc4MDdkZjdjYzA3OGZjZWE5OWM1ZmJlOWMxZTZhMTg0ZWNlZiBsZWdhY3ktdHJ1bmsKKzc0MTAxIGMwYWNhZTE5YjQ4NzY3NmE3NjE3NzA4ODBiN2EzOTZiZGNkZGFjM2YgcHkzaworNzQxMDIgZWFmNGEwMDQ4NGJkYmQ4M2VkMDIxMmQwZTRhNDdjZmZlN2E0YWZhMiBweTNrCis3NDEwMyBhZTJjMDU2YzQ2ZDM0NDcwM2UyZDliZDUzYmVmMjUwYTFkOGI4NGU1IHB5M2sKKzc0MTA0IDgxYzhiMzA0MTYzZTNhZGFkOGY1Y2QyOGU4YWQ2Mjg3ZDhkYmFkYTQgcmVsZWFzZTMxLW1haW50Cis3NDEwNSAwYWY5NDA3Yzg4ZDJlNmVmMWI0MTE1MDdjZjMyNDc3ZWQ4OWY4YmQzIHJlbGVhc2UzMS1tYWludAorNzQxMDYgNWNmNjhkM2I2NTMyNDg5OWY1ZmM0MGQwZmY0OTNhNDkyMGRkNTQ3YiBweTNrCis3NDEwNyBhNjQwYmIzYjljMmJiNmJkMmI3MGFkZDc2OGVkM2RlMmYyMWMzMzEzIHB5M2sKKzc0MTA4IGY1MDI5MDc5N2ZiNTBhNTMwZDg3YmNkZGQ3Mjc5NjhlZjY3MTA0N2UgcmVsZWFzZTMxLW1haW50Cis3NDEwOSBmZTc5ODhhNTcwZGZmMjEzZTAwN2Q1MjY4MzQzMWRiZDU5OTkxYWRhIHJlbGVhc2UzMS1tYWludAorNzQxMTAgZGZhZjZkZTJjOGNlN2EzNDRlYTg3Zjg4ZWY3MWEyZGI5MGNlZTY1ZSBweTNrCis3NDExMSBkODI2YTBjYzJjMGUwZTYxZjc5YWIzMmUxNjYxZTEyM2RmYmNmMmVhIGxlZ2FjeS10cnVuaworNzQxMTIgZDFkODI1NGM0ZWQ1YzZmODg5Y2NkNDk0ZWZlNTU0YzJhNzMwYWMyNCByZWxlYXNlMjYtbWFpbnQKKzc0MTE0IDczMmY3MmNiYWY3ZDg0Y2NjZjYxM2Q1YWU5MDhlZWIxMWRjZWYzMzMgbGVnYWN5LXRydW5rCis3NDExNSAwYWNmMjQ5MDE1Y2E0Y2IzZDA5NTgxMzNmOTJjYmQ1OWQ3Yzk1MGRkIHB5M2sKKzc0MTE3IDAxYjc2M2NlYjQwODczZTg5MzRmNzdkODM5ZGY1ZTM5ZTY1NDE0YmMgbGVnYWN5LXRydW5rCis3NDExOCBhYWNkYzczNWYxOWIxODVjMmZkMjExNzAxYzFhNDYzZDY3ZTdjZmIxIHB5M2sKKzc0MTE5IDdiZjhmYzIwMDM3YTFjYjIxYjAzZDFkZjA4ODYzNTJhODllYjIxYjkgbGVnYWN5LXRydW5rCis3NDEyMCA4NjBlNzEyZTMyZTBkZmY4YmYzMGRmZWQyZGEzZmFiYjY2OWFiYjk0IHB5M2sKKzc0MTIzIDAxZTJlOWFkZDA3MGZiNDIyMzViYThmZmJhZmQyODE0MmU1MWNhNWQgbGVnYWN5LXRydW5rCis3NDEyNCAzODMyY2YwMzY4N2JiMzk1MGE1YzI1YWY5MWUzYTkwNjMwZTgyZTQ3IHB5M2sKKzc0MTI1IGNjOWZlZmNkZDUzM2M0YjczYTdmMzQyYTgwYmFlNjIzZjVmNDVmMmQgcHkzaworNzQxMjYgY2ZhYjExZGQzZTczZTU4NmYwMTQzOTM0YjIyMDQzNDk5ZTdmNDJmZSBweTNrCis3NDEyOCA2M2ZkMTdiYTk4NzUzMDYyOTc4YmExMWM1OWFlZTljMTIyYjcwNjk1IHB5M2sKKzc0MTI5IDJjZjlkMThkM2RmNTRjOWZjN2IxODg3MjhkYmQxZDMxOGM4OTU0MWYgcHkzaworNzQxMzAgMGIxZjFkN2IyZTZkZmQwNTk2Y2U0NDI5YTgxZjc2MmM2YzdlMjU2OSBweTNrCis3NDEzMSAzYzQ0OTBhZDAxY2YwNzZkYTA0OTYyZjI5MjY4MWNiNDQzY2IwZjgzIHB5M2sKKzc0MTMyIDc5NzE4ZWUwMzk4NjI5YWM0MWMwMzJkN2MwOWQ4MDNkNzhlMTY0ZTEgcHkzaworNzQxMzMgZWJjOTg1NmE5YmRiMjYwMWY0MzFkNjNhYTk4OGUyYzY5N2JjYzFiNyBweTNrCis3NDEzNCA1NjEzNjRhMzRiMGM0NmQxMzQ0ZmUyOWY4MGFkMmJjZWZiZjA2YjAyIGxlZ2FjeS10cnVuaworNzQxMzUgMGEyMGVkZjNmN2RiODllYjhkZWY2NzY4ZmE5NTMzODg2NjIwMWIxNiBweTNrCis3NDEzNiA2Zjg3MzY3Mzc5OTRkYzExOWE5ODM0NWU5NmQ2ZTJlZjBhZWJlMDQwIHJlbGVhc2UzMS1tYWludAorNzQxMzcgOWZmNWJkMTYwMTZiNDA3YzY3OTc0YmEyNmVhMDBlMDg1ZDM5MGFlMCByZWxlYXNlMzEtbWFpbnQKKzc0MTM4IDIxZTU4MzFjYmFlOGFiYmMzMzlhZTI4ZDE1NmJhYTljYjQ0Y2M3ZWYgcmVsZWFzZTMxLW1haW50Cis3NDEzOSAzODE1YWJlZDkyNzliOGQ4MTFjODRiYzRmNWU4YWIxOTlhNmI2NWU0IGxlZ2FjeS10cnVuaworNzQxNDAgYzI4ZTYxYzViZGY4MjlmYzBmZDQ3YTRjZGJhOGVlOTdiNjk4NmVhNyBweTNrCis3NDE0MSA5NDk5YzIzMmVkYjczZmI3MDI2OWY5NTcyMTA2YjQ0YjlmNDVmNTg3IHJlbGVhc2UzMS1tYWludAorNzQxNDIgNGRmNzA1MDBkYmUzNGQ1NzhiODBjYzE1NjA4NGYzMTE0NWZmNWRkYiByZWxlYXNlMjYtbWFpbnQKKzc0MTQzIDAzZjVjNjdkZjE4ZTJiNmM1NGQ4MjUyMWI4ZmM2NWY2MmZjM2MzMDYgcmVsZWFzZTMxLW1haW50Cis3NDE0NCA4ZDZlYWQyYWNjYTAwNGY1NzA1N2EwMTUyMDY3MTcxMjU1OGE2MzFlIHJlbGVhc2UyNi1tYWludAorNzQxNDUgZmRhOTA2MmViZmE0Yzg3MWU5Y2E3Yzc4ZjUwYzAxNWU0MjIxZTlkZiByZWxlYXNlMjYtbWFpbnQKKzc0MTQ2IGNkYzc0OWQ5YzAyMWI5N2VjNjdlYzc0MTkwZmQxZTBmNWVlNzYyOGQgcmVsZWFzZTI2LW1haW50Cis3NDE0NyA3ZGNlNDA0ZmM4ZWI1YjMzYzMwNmI1ODU5NzMxYWM5NTY0Y2YyODUzIGxlZ2FjeS10cnVuaworNzQxNDggMzYxMmE0ZWNhNWQ1MWNjYWIxZWZjNzhmMmY2YjBiMzc4MmRmZmViYSBsZWdhY3ktdHJ1bmsKKzc0MTQ5IGI0MGVlYjhmNjljYTdiYjY0NTkyYzY5ZmFmZmRlYjEyYmUwN2M2YzAgcHkzaworNzQxNTAgYzMwZmE4YzVlMzI0NmY5NmMwOWFjOWU4MGVkM2UzYTExMTI3NzI2YiBsZWdhY3ktdHJ1bmsKKzc0MTUxIGU0MDUwNmVkY2IzZTE1N2EwOWVlNzIwZDAyNzQ3MTUzMTA3NDgzN2UgcHkzaworNzQxNTIgNmJiMDE4ODdmNDc1Njc2NzYxMWYyODEzOWU1ZjY4MjQ0ZTkzMzcxZSBsZWdhY3ktdHJ1bmsKKzc0MTUzIDI0YTJhY2YxMjkxYzk0MTM3MjJmMzFhM2E1NjUxN2RiMDAxZjdiZDMgcHkzaworNzQxNTQgYWJmZDVmNzhmNDY2YWUxNzAzMDA4NThkNmQzN2Q5YjZhZDlkMDVjOSBweTNrCis3NDE1NSBkNzQ3ZDUyZjlhNjY5MDZlNTJjMTdjZTMzNDk1MWQxOGVlMTYxOTVjIHB5M2sKKzc0MTU2IGY3OTA0MzM2OTYyNWZmOWY2ZjI4YjI0ZDMxNjA1YmJmYTQ4ZDRlMWQgcHkzaworNzQxNTcgZDY4MmNhODg4ZTI3OTRiMTdhNTZmMTlhZWEyZWYzY2U0MDc2OWM0NiBweTNrCis3NDE1OCA1Mzg4NTBiMzg5MzEwOTA3MWM1MTQ4MGE4NDg4YzUyMjkwMWMyN2I0IHB5M2sKKzc0MTU5IGI3YWFiYmE4NGVlMWEwYTk5YWRiMDI4M2RkNmM3OWUwMjFiN2Y0ZTkgcHkzaworNzQxNjAgNTllNWYyOTlkYWEwMjBjNWNiZWVlMjQ1ODQyN2VjNDYzYTkyZGMwMCBweTNrCis3NDE2MSBlYzg1YTUxZGU5Y2Y0OGU5MDI4ZTk1MjE3OWU0ZTgwMzk2NTI4OTQ0IHB5M2sKKzc0MTYyIGRmNWE3MDg2MDc4MTBiZjA5NjM4NTM3MTk5OGNiOTRmODVlZTkyZGMgcHkzaworNzQxNjMgY2M5YTFhM2UzZmI4MWU0MzI4NmM0YzNjYjgwYmM4ZmQ5M2Q2NWFjYyBsZWdhY3ktdHJ1bmsKKzc0MTY0IDFlY2IwN2UxMWEyZGNjNjFmZTNlNTIzMWM0MjMzY2ZjOWY4MmNhYTEgcHkzaworNzQxNjUgOWMyMTExY2ZkOTc0MzZkYjJhMjI0ZmYzMWRiODAwYTNiYjljNmU2NCByZWxlYXNlMzEtbWFpbnQKKzc0MTY2IDA3NjM0NjBiMGIzODFkZmVkNjFkZjJjMDc4MGQ1ODY4ZTdmNDFlNDAgcmVsZWFzZTI2LW1haW50Cis3NDE2NyAxNDgwZmFlM2I3MDNmY2Q3ZDAwNGQ2ZTk4MmJhYzNiMDgwZDAxMDA3IGxlZ2FjeS10cnVuaworNzQxNjggNzRhYWViOWMzNWZiZDExNGVhMjFiM2FiZGJlOTlhZmNmMzYxYWE2YyByZWxlYXNlMjYtbWFpbnQKKzc0MTY5IGNiNDZhMGQ3ODljNjcwZjU0YThkOTBmNDAxYzI4MWE0MTQ4NjNiZTEgcHkzaworNzQxNzAgMjVjZjc3NWE3MTUxOWZmZjYwNjBiOTU3ZTU5YjIxYmQ1OTg4YTVhNiByZWxlYXNlMzEtbWFpbnQKKzc0MTcxIDAzY2Y0Y2I0YTE1MDFkNWEzNjliY2ZiMmRjNDQ5MjhkZTQ0ZmYxZWEgcHkzaworNzQxNzIgOTA4YjM5NzY0YzczOGQ3MTVjOWFiY2ZhZjBiZjY4ZTQzZjhiN2Y4OSByZWxlYXNlMzEtbWFpbnQKKzc0MTczIDEzMjdhZjU2ZWE0OWFiODViMWIyMzUyOTUwYTg2MzE4YzVlZmNmYzEgbGVnYWN5LXRydW5rCis3NDE3NCBlNjUwYTlkNjRhYjVjNmUyOGJkZjhlNDY5YjhlZmU0ZTBhMDA5ZmYyIHB5M2sKKzc0MTc1IDk0ZmM0MzNjNDM3MzQ2YWI2MjgwNDIxZmRmYjNlYzhiNWVhNTA0ZjIgbGVnYWN5LXRydW5rCis3NDE3NiBhMGVhY2I1ZjlkOGFhMzUyYTZlNjJlYmEyNjc4ZWVlNDJiODM0MGUyIHJlbGVhc2UyNi1tYWludAorNzQxNzcgZGYxNzQ0MzE5NDY2YzhjYmY4NzRlOGVjOWJkN2JlM2M2NTNkNTAxYyBweTNrCis3NDE3OCAyNjBmYjQyMWFjMDdhMTQwODk1MDgwZTM2MjBiNWRmOGM4ZmZmM2Q2IHJlbGVhc2UzMS1tYWludAorNzQxNzkgOWRkYTAyYWZhOGVkMDA3YzdhMTM4NzI2NDBmNDI4NzdjNWM0ZjgxMSBsZWdhY3ktdHJ1bmsKKzc0MTgwIDAyNWE2NDI4YTc2NGY1ZTQ1MDkxOTJiNzgyN2MyZTFiODUyMzkxMmIgcHkzaworNzQxODEgYjk2NDA2NTUxMmIxNTU3YWRkYWZhMmI1ZjRiOTk5YmJlODhmN2QwZCBweTNrCis3NDE4MiBiMTFhNzUyNGU1NThmMWNhM2YyMmQ4MGRmOWEzYzU0ZmRlNTNmNDQzIHB5M2sKKzc0MTgzIDIwNzU0MWM5ODc0NDJkNmJiYmY5ZjZkZjRmOGQwNTY0OTgxZjAzYTUgcHkzaworNzQxODQgNzQyMmQ3ODlmZGNhOWIyZTkxYmMwYzU4OWZjYmNhODFhYjhjMDQwNCBsZWdhY3ktdHJ1bmsKKzc0MTg1IDk3NzYwMmIzZTE0MGRjYmRhMzkxOTE5NmI3Y2ExZTFlMTY1M2UzN2IgbGVnYWN5LXRydW5rCis3NDE4NiBlY2EwMjA3YmI3N2YwOTFhOTk0NTg0NmM4OTZhYjQyNjI3YjRiNmE1IHB5M2sKKzc0MTg3IDJlOTQ3MjQ1OTU4YjAxYzllMzJiYmUyYmY0YzlmMTE5YzY5OTgyOTAgbGVnYWN5LXRydW5rCis3NDE4OCA2MDUyMzQxOGY4YzhlOTU1MTc5MmYzZWUxYzQ3NDU2ZWUxNGEzNGYwIGxlZ2FjeS10cnVuaworNzQxODkgMmZiMTA1NzdjNjIxZTI5ZmZiOTVlNDUyYmM1YjI1ODIxNDJlOTc1MiBsZWdhY3ktdHJ1bmsKKzc0MTkwIDg2OGI0ZTYzOWI1YWIxYjhlNzFhNmFkODJjMzJjMGY1YzZhODc5ZTUgcmVsZWFzZTI2LW1haW50Cis3NDE5MSBiNzdiYjUzMjExMDg4OTFlZjI2NDc3NDgzMWM4ODQ2YjIxNmMyNDU4IHB5M2sKKzc0MTkyIGMwMGIwODg0MmQ3ZmQ0YmQzMTM4YjQ5N2U2OTIwMTJkOTc4NTIyNDIgbGVnYWN5LXRydW5rCis3NDE5MyBlOTkwMTNhOWQyZjljYTRlMGMzNjNkYzBhZGY0MDZhZTU2YWM0MmIxIGxlZ2FjeS10cnVuaworNzQxOTQgZDk4YjhhNmVjMmI4NGM1Yjc4MDExNzM0NjA0ZWE1NmM0ZGQ0ZjE2OCBsZWdhY3ktdHJ1bmsKKzc0MTk1IDYxYTA2NWIzMDAxZDg3ZDU2YjM5YmMwN2FlZGMyZDE3OWJjMTliMzkgcHkzaworNzQxOTYgNzU5NjIyZDBhZTI4NDc1NmE0YWRmZThhMjNjNDllZmI4ZWEwNTAzZSBweTNrCis3NDE5NyBjZmZiMWU5NjNkZDhhMDc3MjIxMWMwNzU0ZGJhZGY3NzIwMWY2ZjJlIGxlZ2FjeS10cnVuaworNzQxOTggZDFlYzk1YWUwYWMyODQ2YmQ4Yzk2ZTJjNThjNmNmM2M1ODU4ZGU5NSBweTNrCis3NDE5OSBhMTRjMDhmOGU3N2I1ZjhkOWZkMTNlZDhhZTY1ZTc0MzRiZDM4OTA0IHB5M2sKKzc0MjAwIDdkNDYwODAwNmNmYWMzN2NjOTA4NDlhMTJhZTVlODQ5ZmUyNGI2MWUgbGVnYWN5LXRydW5rCis3NDIwMSA2YzdiNGI0NzA4Mjc3NWFiN2JkNzZlNDljMTQxM2Y0YzcwYzM5ODU3IGxlZ2FjeS10cnVuaworNzQyMDIgNGIxMjE2ZjRmY2I1YjBjMjIxMTA2MDc4OGJhZTllMWE5NGQ3MDFhMSBweTNrCis3NDIwMyAwZjU3YjMwYTE1MmY0NjE5MWRhNmMyOGY5ZWI2NjMxZGVmNzdmODBkIHJlbGVhc2UyNi1tYWludAorNzQyMDQgNTExMmE1NmRmOTc3YTFjMWY5Zjk4NDQwYjMyNTk1OGRiY2I0ZGNjMyByZWxlYXNlMzEtbWFpbnQKKzc0MjA1IDcyNGExMDExZTg5N2E3YjlmMzJhZTI3ZDQxMDFhODk3OGU1ZDMxNjIgbGVnYWN5LXRydW5rCis3NDIwNiAwYjg5M2M2ZWFkNGM3MzZmZTlkOGMyODcyYmM2MzliZjAxMmNkYjAzIHJlbGVhc2UzMS1tYWludAorNzQyMDcgMWJkZTg0NTUyMjJjMzQ4OWE2ZjNiMjhhNGFkOTdmYThjZjAzNWY0MiBsZWdhY3ktdHJ1bmsKKzc0MjA4IGE1NTYzNGNlODExODM4ZGU4MGNlZjQxMWFjMDg2OGJlOTRlODEzMDIgcmVsZWFzZTMwLW1haW50Cis3NDIwOSBiYmQxZDkwZDE1OGFiZGRkNTUxOTAzYWU3NDc4YTU3YzlmN2E4NGIyIGxlZ2FjeS10cnVuaworNzQyMTAgNDJkYjFjZjM5YWZkYmFjNTBjMjg1MWM1MjUzYmEyMjdjMjNkMjM0NyBsZWdhY3ktdHJ1bmsKKzc0MjExIDY3ODlkODQwNjIxZjRkMGRjYzZlNTU0ZDk5NmNlZTlkMWQ3NThiZDkgcHkzaworNzQyMTIgMmY4YTM2MmUzNzNkOTUwY2M5YjgwZWYwNDVmNTBhZGMxZTFmMWY1MCBweTNrCis3NDIxMyAxNWI2MWYzMjdkNTA5NWRiYThiNWNiMmRiZTBjMTVjZjkyZjNlNDhkIHB5M2sKKzc0MjE0IDliZjIwNjg1N2Q3ZTc5Y2UyZDlmNTBiMTIxMGQyMzU1Mjc4MTI0MzAgcHkzaworNzQyMTUgYzEwNzczYmJhZmEwMzU5M2U2YjYwMmQ1NWUxYjUxZWM0Y2MwNjkwOSByZWxlYXNlMjYtbWFpbnQKKzc0MjE2IGI3MWVlYjkwNzA5MzdiNTYyZjI3MjMzZWVkNTNlODA2NTYyNDg5OWUgbGVnYWN5LXRydW5rCis3NDIxNyAwZjAxNjNmOGM1YjU2Y2ZkMmZmZjVhOWY5YmM4Mzc0ZTJlMzY1Yjk5IHB5M2sKKzc0MjE4IDg5ZWJlNDMyNDRhZWJmNmJjM2NiZjFlNzczMTU3NTJhZmMwYjdhZmIgcmVsZWFzZTI2LW1haW50Cis3NDIxOSAwZDIwM2NhM2FjNzhlZGYwNDU5ZWNiNGNiNTUyMjkwYmZiNzg5NTk5IGxlZ2FjeS10cnVuaworNzQyMjAgYTliNTA3ZWNkYTRjOWQyNzJiMzMzODcxOGNmMzYyMWRjZTRmYTRkMCByZWxlYXNlMjYtbWFpbnQKKzc0MjIxIDhjMjFmZmZiMDZjNDYxNGFjYWJiNzkxMWU3YTYwZDRkOTc5ZWFkNzkgcHkzaworNzQyMjIgZmM0NjlhZjZlYjcwMjZiZThkYWM4YzdhMmNjMTkyNTQzNmNjZmMyMiBweTNrCis3NDIyMyAwNmI4NmE2ZTI4ZjFhMTQzNTdlZDQ3NThhNzFjZGU0MWFkM2JlOTA5IHJlbGVhc2UzMS1tYWludAorNzQyMjQgNzRkYzdiYjRmNDY0M2IzZDZmZTgwMjI3YTU5YWYyZjY5YjIyZGNiYyBweTNrCis3NDIyNSA2MDdjZDExOWZlNGI5NzhhM2Q5ZjUxZjUyODdlMzIwMTQ1MjhiY2E3IGxlZ2FjeS10cnVuaworNzQyMjYgMTMyNmVmODZmM2U0MGQzMjZmNmNjZjVlMmYyNzdjYzVhZmQ5YjRmOSBweTNrCis3NDIyNyBiMzRjYWU3ODZjYjAzZTQ2NzI0MmJmNTQ4Y2ViZmRjNDYwZWI3NWMxIHJlbGVhc2UzMS1tYWludAorNzQyMjggYzg1M2EzZDJhMTlkMzU5MmRmMjI5MTAyM2M5OTE5ZmNhYThmZTgwYyBsZWdhY3ktdHJ1bmsKKzc0MjI5IDcyMTJlM2UwY2QxNzUwNzA3NTIyNGZmMDA1YjY5MjczYjM1ZmI5YmEgcmVsZWFzZTI2LW1haW50Cis3NDIzMCAwZjhiNTZlZjBmN2Y0ZGUxOTcwZWI0ZDA4Nzg4YTFhMjNkZGRhOGYxIGxlZ2FjeS10cnVuaworNzQyMzEgN2ZkOWFkYzgxMjgwMGMxMzVkZjBkMjZiNDUzM2NhODg3YTQ3NTEzNiByZWxlYXNlMjYtbWFpbnQKKzc0MjMyIDQ0MzE4MjEwYjAzYzcwYWJlZDJlZDc2NTExNjc4ZjM4OTRiNjUyNWEgcHkzaworNzQyMzMgMDFmODQ4ZWExMTBhZTNkNTkwYzRiMmYzMGZhZmZkMzFmOTM1ZTBlYiByZWxlYXNlMzEtbWFpbnQKKzc0MjM0IGRhOThjYmViZGFjYmEyOWQwNjY0OGU5YjNhN2FmNDNmNWI1YjUxODUgbGVnYWN5LXRydW5rCis3NDIzNSBiYjBiN2QwZTU1MGQ4MGE4Nzk4Mjc2ZGRjZGYwOWUxYjQxNTVlM2FlIHJlbGVhc2UyNi1tYWludAorNzQyMzYgMDdkYmRmMDNlOGY1MDMwNzI5OGEyZjE1MTBjYTJjNzcxZGVjMGI5ZSBweTNrCis3NDIzNyAzZDQ1MzY3Y2M2MmFhN2ZmYjk5MjJhNDY5MGI1MmFkYTM2NjhhYTEzIHB5M2sKKzc0MjM4IGFkZjQ4NGRmNjc5NDhlNDhiMTYyNTZiZTFlZDdlN2Q0MThmMGFlNTcgcmVsZWFzZTMxLW1haW50Cis3NDIzOSBhYTlmZjQ3YmQxYzhlZTU2NTQ5YjE1ZTdhZWI4ZjUwYTlmYjlmZDEyIGxlZ2FjeS10cnVuaworNzQyNDAgNTZiMmRhOTNhZDljODIzMmRlNWFhMGI5NWViMzJmMjcxZTM5MDU4NSBsZWdhY3ktdHJ1bmsKKzc0MjQxIDg5YWQyMGEzMmEyNjAzMTA3ODYzNWViNjdkZjBhNDczZDFmNDNkNDUgcmVsZWFzZTI2LW1haW50Cis3NDI0MiBiY2QzOWVmZmQzMWUzNzg2ZmRiNmIzNjU4N2VhMjFmYTIwMmI5NmMxIHB5M2sKKzc0MjQzIDg4OThmMjhlNmQyYzFhOTU0YTY1YTZiMGYwNDQ0YTc2YTFjOTU1ZjQgbGVnYWN5LXRydW5rCis3NDI0NCA1NzJjMTg3ZGY2MTJlMjc2YTI3M2Y2N2M5NWY4ODAzZmRhMzBkMjliIHB5M2sKKzc0MjQ1IDFkZmQ2ZjQwNzMzNmNhMDI3MzNhZTQ1MjkyMjhiOTNhZGFmYjBjOGQgbGVnYWN5LXRydW5rCis3NDI0NiA1ZTA1ODg5MDk2Y2QwODBlNzEyMjAyMzZmZjM1NzA4OGExYzBjYWU1IHB5M2sKKzc0MjQ3IDhhMDE3ZDNjYjkyOGFlNzJlYTAxMGI5M2E2NDI5MDhhNDE5ZjM3ZTAgcHkzaworNzQyNDggOWZmZmQzZWRiNjY4OWZkYWQyNTU0NDI3OTJiZmIwYzhmYmQyNTAxNCByZWxlYXNlMjYtbWFpbnQKKzc0MjQ5IGE1ZDAyNWFkMjFjOGVhMTRmYWQzODBhZDAyYjkzMmUzMjI5YWU4ZTQgcHkzaworNzQyNTAgZjM1N2UyNjAzZDkzYmViMTVmYWNjNTdhM2Y3ZmNiZmI0NDRkM2NiOCByZWxlYXNlMzEtbWFpbnQKKzc0MjUxIDYwYjMxZjBkYjAxNjM4NDZhZTJhMmE2ZjY3OWU1NmFiMjkyZWU0YjYgcmVsZWFzZTMxLW1haW50Cis3NDI1MiBlZTI1NDU5ZTliOTFmYWNhYzQ3NmQ0N2QxYjZjYjI2NWMxMmQ0MmJmIGxlZ2FjeS10cnVuaworNzQyNTMgM2VkMTU5M2RkMTc0NzIwMjc2YmE3MTI1OGMxMDNiY2M1NWQ2ZDEyZiBsZWdhY3ktdHJ1bmsKKzc0MjU0IDE1NjgzYzBlYWYyODYzMmQ2MjdlYTBhNTIwYmZmNjFlYThiNzgyOGEgcHkzaworNzQyNTUgNjRhZjQxNjBjZjFlYjlmOTNkZGFjODc2NzNjYTAwNDVlZWJlODExNiByZWxlYXNlMzAtbWFpbnQKKzc0MjU2IGZhMTRmODEzMjJjZTA3MTg3OGYzZDZjZDI1YjYwMDQzM2YwYzdlNTYgbGVnYWN5LXRydW5rCis3NDI1NyAxZGYyODFjOWUxODIxZmM5YzUwZGVjODdmOGYxYzczOWE3Nzg1ZWRmIHB5M2sKKzc0MjU4IDEzNzU5OWFjYjhiYWEzMTgwMDc2MmM3ZmQ1MWZjN2M0MGJjYzQzZjMgbGVnYWN5LXRydW5rCis3NDI1OSA5Mzg4M2YzNzg3YjU3OWI5NzgxMTQyMTgyMGI4MzliYzkyOGI1ZmViIGxlZ2FjeS10cnVuaworNzQyNjAgNGZlNTgwMWJmNzEyMTdiYTQ3Njg4NDE2ZTIxZjg4OGRjYjcxYTNhMyBsZWdhY3ktdHJ1bmsKKzc0MjYxIDViZTRjMDllNGE2NjYyOGU0OThjYTNhNTM4ZGQ2ZWExNzdhNjkwNTMgbGVnYWN5LXRydW5rCis3NDI2MiA3YWEwZDZmYTYzNTlmMTc4YTM0ZjYxM2Y3ZDM0MjU1N2Y3YTc3NmQzIHB5M2sKKzc0MjYzIGQyOWQxZDhlMmNkNjM2OWYxMjE0Y2I2MDZmMWY2MmZmM2RhYTYxOWUgcHkzaworNzQyNjQgM2UwY2U5NGMyZTFlMGYxMDQxNzk0MGRmZTNjOGExMjNkNWI3NTgzNyBweTNrCis3NDI2NSBiZDAzZDZkMmVmYjA5NTBkYzM3Nzc5YWMzNzZhOWRkMzQzMWE3NzE3IGxlZ2FjeS10cnVuaworNzQyNjYgNGQ0NGYyYTM4ZTUxZWYyMDgyMTQ4N2ZmODE3OTcxNDU2ZmM3ZDlkYyByZWxlYXNlMjYtbWFpbnQKKzc0MjY3IDA1MzU3NDFiNTdiYjIwYjZkNjQ3NWIzZGRkNWNlMjhmZmEzODhkZGIgcHkzaworNzQyNjggNjUwNTBlODI2YTk2ZGI1NjA1ZWQ3ZGIzMmIzNDA2MDdiMThjMmY1ZSByZWxlYXNlMzEtbWFpbnQKKzc0MjY5IDE2ZmE1NzA2MjllM2Y0NGNjY2I3OTBkMmYwNzNjYmRjYzRlYTQ5OGEgbGVnYWN5LXRydW5rCis3NDI3MCAxOTYxMWEyOWM4ZGU3ZTgxMTIxMDI3NDRjMTRmMzdiZGIxY2E2MzJkIHJlbGVhc2UyNi1tYWludAorNzQyNzEgNTVlMDJmYTdhMTFjMGVhOTlhMDRkZDYwM2EzNzQ2MTU2NzIxZGVkYiBweTNrCis3NDI3MiAwNDEyMTYxNTk1NWEyOGMwNTM2ZGU4Y2Q0NzBiMmU3ZWQ3ZTk0MWJlIHJlbGVhc2UzMS1tYWludAorNzQyNzMgMmM3ZTA3NmI0Y2E5ZDgyOGUzYTMxNTdlNWFmY2M1ZmEzZDE2NGM0OSByZWxlYXNlMjYtbWFpbnQKKzc0Mjc3IDNhZjNmYjE2ODYzODNhZjFlYWYxNGI0ZjE2MDFmMDk2ZGU2OGExNjAgbGVnYWN5LXRydW5rCis3NDI3OCA4M2I0NmE1OTg4YjBlYjUxMGRlNDIzODg5N2Q0OThlNzcxZTE2ODEzIHB5M2sKKzc0Mjc5IDc0NmE4MThiZGQzNTJiNmE5NDg1OTMzMjU3NWExMGUyYjQxNmI0YTEgcHkzaworNzQyODAgODgyNTVjYjQ1MzRkYWQ1ZTRlNjViZTI5ODk4MDhkZTA0MDE5ZjQ3MiByZWxlYXNlMzEtbWFpbnQKKzc0MjgxIDdjMjNmMGJjY2E4NWNlYzU4MzAxNjE0MjlmZGZiYzVhMzViYWQzYzUgbGVnYWN5LXRydW5rCis3NDI4MiA4YjQ4YjI4MmViYTkzOTYwYzA0Y2JjNGE1ZWRmNjAyNGVhMWU3OWE2IHJlbGVhc2UyNi1tYWludAorNzQyODMgNGFlMDRlMGY2ODUwMzhlNGQ2OWRkOTZjMmY2MTk3Mzg5MWFlMzFmYyBweTNrCis3NDI4NCA3OTc4OWU4OWZmNzg0ODVhM2ZkN2M1ZjhhNjBhYzY2M2ZhMTlkZWY4IHJlbGVhc2UzMS1tYWludAorNzQyODUgZDI1MzczMjY2NzI5NzYzNzY4YzI1MmRhOTkxN2MzYWYyZDkwNTYzNyBsZWdhY3ktdHJ1bmsKKzc0Mjg2IGY0MmUwN2FiMzI2ZWM1YWQ4OTY5YmY1NDdjOTg3OTU0ZjdmOTViZTUgcmVsZWFzZTI2LW1haW50Cis3NDI4NyA0NmY5YmUyNTA5MTJmNjEzNWQwZTA3NDhiMDk5ODdlMzBmNjEzMTgxIHB5M2sKKzc0Mjg4IGNmYmVmZGNjMjZkYjJmNTJmMjk4NzBkMDZjOWEzMDBmMmRmMGEyYzYgcmVsZWFzZTMxLW1haW50Cis3NDI4OSBlMWFjNTRiYjA4ZWQyOWMyOTMzNTFlZTU2NWRlMGZlM2UwOTg0MWQ3IHB5M2sKKzc0MjkwIDA4ZWNhNmU4YjBiZWZiYjFjOGRkMzkwMDM0YzQwZmJkZjI1NjNjNDUgcmVsZWFzZTMxLW1haW50Cis3NDI5MSA0NmU0NmEwZTYyMmU2MDJmMGUyOTRjZTVmNTZhNTViNDJiYTRjN2IxIGxlZ2FjeS10cnVuaworNzQyOTIgMDAyOTQ2YjUyZmMzZTdlNzYzMjQwNjZkNjU1MGZkZWI0MDRiZDJmMSByZWxlYXNlMjYtbWFpbnQKKzc0MjkzIGQ5OWNhZGYwZTVmMGM5NjE0NzI5MTIwM2Y5MGVhNDQ3Yzg2YjNiZDcgcHkzaworNzQyOTQgY2ZhN2U5NDNmZmMzZmYwMTk0ZjQ3OWRlMzBlMGE3MTYxN2RhZGE2MyByZWxlYXNlMzEtbWFpbnQKKzc0Mjk3IDUwMmNlMjhmZWJhYWI3NGNkMjY0NTVhOWRhMjU1YzZlMWI0NDI1MDIgcHkzaworNzQyOTggZmE2ZmQxZWQ3Mzc4ODNhOTdjMmI4NmU1ZjRjMGFlMzQ2NjFiNWEzOSByZWxlYXNlMzEtbWFpbnQKKzc0Mjk5IGRkNGRhNzVlYmM5NzE1ZGI5MzM5MjNjZjU4Nzk0ZmNlNWVmYmVlOTAgcmVsZWFzZTI2LW1haW50Cis3NDMwMCAyNzFkMzgyZGNhYmRmZmMyZWVmMjRjM2I1ZmM5ZmU1YTk4MGE1NWQ3IGxlZ2FjeS10cnVuaworNzQzMDEgNjU4ZGU4NDM4MWQ3ZjM3YzRmMmU3ZGE1NmUxY2QwMmM0M2M3ZmQ2ZCByZWxlYXNlMzEtbWFpbnQKKzc0MzAyIDUzNDVlM2JjOWU0MTYyYmZmNWRkOGE1MjA4NWQzY2UxMWE0MDdmYTYgcHkzaworNzQzMDMgYTBlMWQ2MjdiNzE4MzU1NTBkYjQyMjg1MzlmOTYyMGMwMTgyZjBlOSBsZWdhY3ktdHJ1bmsKKzc0MzA0IDM0Mjc3ZGEzOGUzODhiNzlkODg0MTdiMWI4OTdjMWY1ZmJkZGY1OTEgcmVsZWFzZTI2LW1haW50Cis3NDMwNSBjZDlmYTgxZWE0ODAxMzg5OTE4MGM5ZGRhYjFjYjZjOGFhYTRjMzI2IHB5M2sKKzc0MzA2IDg4NDhjNDllZDVmNTc3NDc0ODlhNDBlNDNmM2UwMTI0N2U0YzJlMjYgcmVsZWFzZTMxLW1haW50Cis3NDMwNyAyZmFlODA5NDUwY2QxMWY3MTBhNmY3YTVlMWRkOTYyYTVlZjI1ZDRhIGxlZ2FjeS10cnVuaworNzQzMDggNmEwNWVjNDkzY2U5ZTNmMThjNjllZGMyMzA0YzczNTI1Yjk2NWI1YSByZWxlYXNlMjYtbWFpbnQKKzc0MzA5IGU4MDI1Yjg1YWIxODI3YzY1MDM0YzlmY2Y1OGE0Yjc0ZmJmNjk4ZTUgcHkzaworNzQzMTAgM2ZmMTcyNWY4MzdlYWUxNjZlMGQ5YzQ3YzM0MjVhMjZkYmUzMzA1OCByZWxlYXNlMzEtbWFpbnQKKzc0MzExIDVkZTE5YzUwMTFjYTkzNjc0MTA5MzY2NTg5Zjc4YmE3OWVhZDI0MTAgcHkzaworNzQzMTIgNWQ4NzVmYWRmNjNmNTM1OGM3M2M2OWE5YzUzZDZlYjg5MjYzMTMxZCBsZWdhY3ktdHJ1bmsKKzc0MzEzIGIxNzc1MTg3YWEzMGU3MzcyZTE4Mzc0Njc5Y2E0MGI4YTkxNmNhZDMgcHkzaworNzQzMTQgMDgzODZjNzllMzRmMGZjZGMyNzQzOWNiZTMxOWQwYzMzOGI0Yzc4NCByZWxlYXNlMjYtbWFpbnQKKzc0MzE1IGViMjI0NDIxOTQxOTk5MjVlZTdmNjA2ZTM5OTRjODNkZTk4YjU2YTEgcmVsZWFzZTMxLW1haW50Cis3NDMxNiA5YTQzZmFjODc2MGMyZjkzZjk3MmMwMzRjNGUxMGQ5NDE4NmUyZGEzIHB5M2sKKzc0MzE3IGM4ZjRjMTMyZDZkYjA0ZTlhNDNlODE3NGM5NWMzNzdkZTg5MTlmNTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzE4IDY0MjQ4NWRiZmZiYWExMDMwZjNiMTk5OGJjOGM2MGY3YzA2NzFmYmYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzE5IGJkMWJjY2Q4ZTM0NGI5ZmRkNDNjZTEzNjZhNTYyZDA4MjYzYmRhNzMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzIwIGJhODAyYzBiNTM4YTc5NjkyMzc2NmIzZWFhODkzYTZkYzEyODg2NGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzIxIGZjZWE3YmE0YjAzNGRjYjI0NDA4MTRlZmI5YjhkMGJmOGNiODFiZTMgbGVnYWN5LXRydW5rCis3NDMyMiA3NTk0MmJjNzRmNzEyMzEzMzJmY2U2YjZmMjMyZTUyNDRlZjU3MDAwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMyAwYzRlZTYyZGYwZTE5MGJlNmUwZjI4ZWMxODUzMGE5MWQ5MzcxNTlmIGxlZ2FjeS10cnVuaworNzQzMjQgMTkyZTM0NDRiODg4ZmE0NTMxZjRmMDg5ZTkzMWExODQzZTdjZDk5YSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjUgZTU3MzNkNThmZGIxNWE3ODA0YWM2OWE0ZTExOWE5YTFlNDM3NTZhOSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjYgNWExMzBiNzU4NWIxY2U1YzUxNTI1MWQzODZiZWZlNTA3MDE0NzViYyBsZWdhY3ktdHJ1bmsKKzc0MzI3IDY1ZDE2ODJkY2Q1ZTBlNThiMGRhYjJjMTUxZjM5YTRiYTRkMzQzZDcgcmVsZWFzZTI2LW1haW50Cis3NDMyOCAxYmUzZDQyN2FjYTI0NDY2YTBiYjEwYWJjZjUyYzU5ZWRhYzJlZDQ1IGxlZ2FjeS10cnVuaworNzQzMjkgMDZjZTlkODQ2OGMyZjA2NjllOWU2YjBiMTg0Zjg1MWFjNjVkZTM1YyByZWxlYXNlMjYtbWFpbnQKKzc0MzMwIDdmM2Y2YjU1ZTQ3YTI4YzdmY2U0ZGYxNTlmOTg1NmNiMjBlNGE4YTIgcHkzaworNzQzMzEgOWZkZjE4MmYxOWE5MTNkMTM5MzU4YjdiMmJmY2JmMTc0ZTliYjZkYiByZWxlYXNlMzEtbWFpbnQKKzc0MzMyIDkzYTk2ZDZkZmZiNWU5MzJkYWUwYzU1MDZiMDlkODg3MDkzYzU2NGYgbGVnYWN5LXRydW5rCis3NDMzMyA3YjY2Y2QwMmQ2MGJhODAxYTUwOTg3OGJmZGMyNGI2NTdlNDYxNjRlIGxlZ2FjeS10cnVuaworNzQzMzQgMzE1OTcyNmQwZTY1OWNjNjg1YmNmOGZlYWY5MmRmNGViMmI5MjhmMyBweTNrCis3NDMzNSA0ZjIwNGViNzZlMDdhMjZhNjY3ZjkzMDJjZDQzZjRiZTAzMzA0MGE1IHB5M2sKKzc0MzM2IDJmNjQxZTMzN2M5Zjk2YTkyOWQ0M2I4NTU5NDQyZmVmMWQ0ZThhMjMgbGVnYWN5LXRydW5rCis3NDMzNyAwMGZkNjI5N2ViZTdiMGRmOGUxYTA4YjZmYjkwOGI2NzJmNTJmYzkwIHJlbGVhc2UyNi1tYWludAorNzQzMzggZjEzNjAyYTg0ZGFhYWZkNmYyYzIxODA2NDA3NThlM2Q1MWU1NTViNCBweTNrCis3NDMzOSAzMDg4NzllYzkwMjM0ZGUzNWM1Y2JmMDEwODRhMDA4NDk4NTg1MTAxIHJlbGVhc2UzMS1tYWludAorNzQzNDAgMTllN2M5OTZlNjdhZWJlNDgzZmM0MjE2ZTU0NTk4ZmE5NGE0NzIzNyBweTNrCis3NDM0MSBlZmE4ODExYjI1MGEzYzY1OWY1YWE1NjBkOTNjNGE1NzNhMmY0ODIwIHJlbGVhc2UzMS1tYWludAorNzQzNDggODVjMGQ4ZDgzY2JmZmI2MmFiODM4NjI1MjAyOWI2ZTk5MDM0NTJmOSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNDkgYjAwMmU5MmEzNmY3NzQ2OGY4ZjY2OGJlMTBjZjAzZTU0YTAwZWVlOCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTAgNDEyYTg1Y2U1ODQ0YWQ4ZDZlOTAyYjdjMGEyMmIxNjE4MGU2YzUwZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTEgOTRkOGMzNDFmYjQyZjIyNDBlYzkxMjYwY2VhODVhODczYTk4ZDQ2MiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTIgY2QyMGE5ZWQ4NGU1YTNiZjEwZGZiNDY4MjIxMmM0MzA4NzUzNWZlNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTMgMTEyODZiNDUzZmNmZmIzOTU1NzM0MjEzY2E0MThhNmIzZDliMDIxNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTQgZTRhNjc0NGNlNGE5ZDdhZjk1NzM2NjA3MDU3MTg1MTA1ODA2MGIyNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNTUgY2E2ZTkwNDcwZDk2ZmQzYWNjMjZmMjVlZDE4NWQwYWMxMzM0ZDFhYSBsZWdhY3ktdHJ1bmsKKzc0MzU2IDM2MWEwM2FkM2MzNzNiYzVjNzU3ZjZmZWMyMWY5MmYxZWE1ZDI1NTUgcHkzaworNzQzNTcgYmJlYTk4MTQ4ZTEyNjYxMDQ1MWUxM2I1NDRhNjRiYjk0NDNmNDNiMyBweTNrCis3NDM1OCA1YzhiMjIzOGEyZjUyNGM4ZDc0NDcxNTE1ZTFlMmRiMzhjMDA2N2QzIHJlbGVhc2UzMS1tYWludAorNzQzNjAgZTVhZWJkMDM4ZjBjMmFkMjVlNWQ2ZDE1OTBkNmRhODM4NjBjMzMyYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjEgMmM2NGU5YmZiMWI2NjY1ZTZiZWJmNGFiNDI2ZjQxODQ1ZTI1Y2RkMiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjIgYjAxM2IzYzhjOWM3ZjVkOWVlMzBmNWI3YWQxZmI3MmYxOGFkZjczYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjMgYzE5ZTc5MGQ5NDJmNzkwOWQ2NmFjYmE4ZTI5NjA2N2MzMmNlMDA5MCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjQgMDAyNWUwNzJmZTk3YWQ3OTJiN2U1ZGMxZDcxY2E2ZTNkMGJmN2QwMSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzNjUgMTIzYzk1ZmUwNGI2MDgzMDUzZDYxODZiNGEzNTg5YjNlNTRlNzBiYSBsZWdhY3ktdHJ1bmsKKzc0MzY2IGVmNTY1MzVmNTM1NjE4MDhlNTMxODFlNDNkNzljNzAwZGUxOTJmYzIgcHkzaworNzQzNjcgNGExYWIyZDcwMzg1OWE0YjhjOTgwODI1ZDQ1MTIyMzkwYTViZDA5MSByZWxlYXNlMzEtbWFpbnQKKzc0MzY4IDk4NDk4NWVhMjRjNGRjZTI5NDk2ZDQ0OTM4ODAxODVlODY4YWI1OTIgcHkzaworNzQzNjkgNGE5Yjg1OTE2NDlmYmQ2ZTQ0NDFlZWRjYjBiNjhjMmI0YWM0NjE3NSByZWxlYXNlMzEtbWFpbnQKKzc0MzcwIGUwMGI1MGEzZDQ5OWQ1ZTFkNGEwNGQwM2IwYzUyMzkwODNkZmZhMmYgcmVsZWFzZTMxLW1haW50Cis3NDM3MSA3YjQ5NWM4ZjJhMjQwZWE4MDc1MDRjNThkY2RlMTcyODgzNDE4MWU1IHJlbGVhc2UzMS1tYWludAorNzQzNzIgMWFjZDAyNzdkMjI1MzBlNWMxMmI5OTkyNWVmZDA5YTRjZDdmMjhiNiByZWxlYXNlMzEtbWFpbnQKKzc0MzczIGE0OTJiMmJjOTUxYjQzNGU1NzU5OTE4OTMxZThlYzY3ODcyNTgwODAgcmVsZWFzZTMxLW1haW50Cis3NDM3NCA1MDk1YTUyNzZkOGMyNjY3MGNiMTBlMzY1N2E4NGVmZTIwMjRhYTM3IHJlbGVhc2UzMS1tYWludAorNzQzNzUgNWZiYWMwOWMwZTkxZGIyZmFiNjQ0YzllMGViODU3YWFkYjgzZjVjMyByZWxlYXNlMzEtbWFpbnQKKzc0Mzc2IDU4YzEwY2YwNDYxNjdlMTAwMWFhNWU4ZTAzY2QwODE5N2Q5MzJlYmMgcmVsZWFzZTMxLW1haW50Cis3NDM3NyBkYWQwYTU0ZjVhNTgzZWI5M2Q5MzRhM2Q4NjNjZTBmZDljYjRlNDBmIHJlbGVhc2UzMS1tYWludAorNzQzNzggNTliNmI4NTU3YTMzMjlmMGM2MjIwYjVmZTllMmZmYzJiZTMwYWRmMSByZWxlYXNlMzEtbWFpbnQKKzc0Mzc5IDE3ZTcxNDg1Mjg3ZjcxZjE2YjBlNTI0NWE2NTAxOWFlYWNkNDQ1ZjkgcmVsZWFzZTMxLW1haW50Cis3NDM4MCA1NDZhYTEzNGQ3NzM3YTMwNzFlYzRhYWI1NmZiNTEzOWIyNmI1MjNkIHJlbGVhc2UzMS1tYWludAorNzQzODEgNzcwYTkzYzdhYmZmNzdhNzc0MDQ3M2Q4YmI0MmU1MGZlYjNiYmQzMCByZWxlYXNlMzEtbWFpbnQKKzc0MzgyIGM0ZDZiNzdjMzQ2ODE1NGY2Y2YxNDY5MDE1OThjZjM3ZjE3M2MyODIgcmVsZWFzZTMxLW1haW50Cis3NDM4MyAxMDk0MGJjZWRjOTllNDc4NTVmM2NiM2U1OTNlNjk0MWQ5ZWI1YTZhIHJlbGVhc2UzMS1tYWludAorNzQzODQgMGJiMjMyMDc4YjhjYjgxNWYwOTgzOTBjMWMxMTc0NTlkNzgyNjc2MSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg1IGQ3ZjNjZGYyYjA3Zjc4OWExYWNhNjdkYjY1M2JhOWNjZjg1NDZjMDAgcmVsZWFzZTMxLW1haW50Cis3NDM4NiAwZjdhNmViMTgyMjMxNzRkNjQ2NjQzYjU2YjhiMTY2ODI5ZDkxOTUyIHJlbGVhc2UzMS1tYWludAorNzQzODcgN2VlN2ZkY2VhMGQ3MTZmYTlhYmYzZDE4OTU1YzUxY2E4MTRiZTAxNSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg4IGVmZTgwOGE1ZjU5ZTg4OTdiNTU2MzliODg1ZWRhZTg5Zjk5ODMzYWUgcmVsZWFzZTMxLW1haW50Cis3NDM4OSA3NDNmYTI4MmQ3NDgxMzg0OTkwMDQ0OGZhZjA2Y2U3ZDNmN2EyNDViIHJlbGVhc2UzMS1tYWludAorNzQzOTAgY2U2NjQyMjE4ZmZlYzFhOGNjNjkxNGMzMDNlNjdkNDc0OWE3OTYzNSByZWxlYXNlMzEtbWFpbnQKKzc0MzkxIDM0ZWE1ODhhYzNjNTg4M2NhNjEzZjQ2M2ZmOTVlYmYxZmU4OGNmMWEgcmVsZWFzZTMxLW1haW50Cis3NDM5MiA5NGMyOGJhNjU2YmUwN2Q0M2UzYTA2ZDNjNDM4ZTUwMzhkNWI2YTc0IHJlbGVhc2UzMS1tYWludAorNzQzOTMgNjgwYWQ4ZWVkMzNiMjdkOTBhMTYzNDIyZWM3NDMzMDY1OGQ2MjEzOCByZWxlYXNlMzEtbWFpbnQKKzc0Mzk0IDEyZmVjNzNjYjhlNTNkOTYwOTFhM2MzNGJkZmIxMjFhZmI0OGYxNzEgcmVsZWFzZTMxLW1haW50Cis3NDM5NSA2ZTJiYTIzNzY4MzNiNmJmMWM4NWJmYTZkNDdjYmFlZGQ0Mzg0ODMyIHJlbGVhc2UzMS1tYWludAorNzQzOTYgN2U1MTQxNzA0NmFiODcxMGI4MDBmMmMxYjdjOWYzMjA2ZWQ5M2ZmNSByZWxlYXNlMzEtbWFpbnQKKzc0Mzk3IGZmNmVlYTAxN2E3ZjQ2NDE4NDJiMWZmMjg5ZTVlZTkzMjY2NTVhYzAgcmVsZWFzZTMxLW1haW50Cis3NDM5OCA1NDE0ZmY3Mzg5ZWU5ODFlZDcyZTgwNDgzMTY1YmI0ZTBjM2ZkNWNjIHB5M2sKKzc0Mzk5IDg3ZmRmMjc5NWE3Y2Q0NDM2ODQzYWUxZGQ0MDczMjY0YzAzYWIyNTEgcmVsZWFzZTMxLW1haW50Cis3NDQwMCA5ZDQwNTg2YTZhZmNkZTAxZWZjZmI2ZmE5NTYzNGNjMDBkYWNjZWY1IHJlbGVhc2UzMS1tYWludAorNzQ0MDEgZjcyNDMxOTlkMGIxY2NiMTJkZWFmNjU4ZDVkZTFiMTVjZjM3OTIyMiByZWxlYXNlMzEtbWFpbnQKKzc0NDAyIDRkMzhlNTFlN2NkYzlhOTc5NDNmNjc4NTNmYzI5ZTExMGQxOTNiN2QgcmVsZWFzZTMxLW1haW50Cis3NDQwMyAwMDUwYjU3MTFmYWE2YjdiOGViYWVlZWM3ZDc2MWRmNWQzY2E0ODJkIHB5M2sKKzc0NDA0IGUwNTMyMmVmY2E4NTdhOWY1MWMwYTRjNTgxZTZhMGMyOGZkYjYzMzggbGVnYWN5LXRydW5rCis3NDQwNSBiZTM0NTMxYzZkMGI3NDlmODU5OWY4NWVkMDM0ZGU4ZWNkMGEzMjk0IHB5M2sKKzc0NDA2IDU2ZThjMjJkZjcxZjMxNjY5NzY1ZDIyYzQzOTJkMGVkZWM2OGU2NjYgcmVsZWFzZTMxLW1haW50Cis3NDQwNyA5MWU0MGViNDE5NTZhMDQ1ZDEwMjEyNzFmZTVjZjI0ZjUyMTdkMTdmIHJlbGVhc2UzMS1tYWludAorNzQ0MDggYTI2N2M2MDQ0NjVmMzc0ZDYzODk0Yjk1Nzg1MTkzNjRiNDIyYzU4ZSByZWxlYXNlMzEtbWFpbnQKKzc0NDA5IDAxNDg0MTdlMTMwMWQ4OTNkOGQ0NTEzZTUxNzBjMmUzMjk0ZDlkYmQgcmVsZWFzZTMxLW1haW50Cis3NDQxMCBiZTM0M2FmNDkwOTk5NTM1NTIyNTA2ZWMzZDQzZTQyZjliZGU5NjEzIHJlbGVhc2UzMS1tYWludAorNzQ0MTEgYWYxMTBhNDhkMTU0N2ZhYTZlNGRlMjUwZTVhNjgxOWRhNjg3MDRiZSBsZWdhY3ktdHJ1bmsKKzc0NDEyIDc4NWVjMzQ0NzZiYWZhNTg1NjZlNzc2NzQzZThhOTlmZjE0Nzg3YWMgcHkzaworNzQ0MTMgZTNkNTEzMTliOWQwZWM4MzdjYzEzNzZkYzU3MTk4MGZjZDc0YTY4MCByZWxlYXNlMzEtbWFpbnQKKzc0NDE0IDEyMjRhYTNmYjZhMGQ0Njc2ODFhY2IwYWI3ZGQ3MGRmNzNjZDIzYjYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDE1IDdjOGY0ODExNjBjMjJlMDcxMmI1ZWNhMzFmZThmMTk4MGRjNWI1NWQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDE3IGYyYTEyZjUyNTllN2VkZDIyM2M3NTBlMDVlZjU2MTYyZDZhNTM0NWUgcmVsZWFzZTMxLW1haW50Cis3NDQxOCBmOGRiNDkzZGQ4NGZiODMwZDlhY2I0MGNiMzQ0YWU2MGZmMjllM2I5IHJlbGVhc2UzMS1tYWludAorNzQ0MjAgZmFmOGExMDA5OTBkNjZjZDUxMDFkNDg3YmJmOWFlODA3ZDAyZTIzYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjEgM2EzNWUzM2IwNzFiZDRlZDI3NmExYTBkOWQwMDU2MDJmM2EyYjQxZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjIgOWJjOTU4OGViNjRjMTkxMDY4MjNhZmE1ZjdmMjY2OWFiY2FjNWI4YiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjMgMzgxYzZmOWI3NGFlYWU2Y2MzZmE1ZGZhYTliNjhjMDkzY2VlNDVmMCByZWxlYXNlMzEtbWFpbnQKKzc0NDI0IDQ5NjI5MTAzNzU4MjA5NjYyZWIzOTYzNzg0YzFjYzA0NTVlZjgxODQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDI1IGZiNTg1N2Y5MDNmZTkzNzVhYmRhMzNhYzA1NDc3OWQxY2E4M2VlNGMgcmVsZWFzZTMxLW1haW50Cis3NDQyNiBmYmY4Yjc5MWNlODExYjQ5MDNjNDIwYjU1Zjg4Y2Q1MDk0MjYyZjgyIGxlZ2FjeS10cnVuaworNzQ0MjcgMzVlZmIxMDU0ZWM2Y2VjYTcyMDE3YTU4NzI2M2NiNmE5MjU3MzQwYiByZWxlYXNlMzEtbWFpbnQKKzc0NDI4IGExYWQxOTJmOGRmNTY0MzczOTBjMmFkODhjZDEzMmQ5NjBiMDYyMGQgcmVsZWFzZTMxLW1haW50Cis3NDQyOSA5NzUyMmUyN2IwNWQwYzgyMzhkZDc0ZjU1N2Y5NGMzNWE2YjI2Y2Q1IGxlZ2FjeS10cnVuaworNzQ0MzAgOWE2YmViMWE5Mzk3NTczZGRmOWQ4ZDk4YmQxNjRhYzVjYzI0ODg2MSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzEgZWVhZmQ4NzE2NDEwYTZjNGRjM2I3OThhMzNlM2Q1NzRhMzY3ZTA0NSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzIgNmFjMTQ3OGQ5YjBlNjYxOThmOWZjNjc5NzUyMGI5YWY5NTU5MmZkYiByZWxlYXNlMjYtbWFpbnQKKzc0NDMzIDUxNTJiNTM2NjEyZTQ4NzhmZDAwZDU3NjdhNWE3MjFhNDc3OGMzMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM0IDAxZGI0MTBmMmYyMDdmZjAwNWU1OWE3YjkzZDNiYjEwMjM4ZDFhN2YgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM1IDg5OTI3ZjVlODNkNmY3OTQ1MTI2OTI1NmEzNWM1ZDE5YzI5NzhjYTkgcHkzaworNzQ0MzYgZDVhNjJkZDkwNzg5ODg3ODAzYjk1MDE3MGNkZDM2Nzg0Njg2NWMyZiByZWxlYXNlMzEtbWFpbnQKKzc0NDM3IGE1ZTZmM2ZmMmUyZjY0Nzk5ZjhjMDZjMGRiOGYxN2UyN2ZiNDlkMDAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM4IDQ5YTQyODY2OTc4OGQ2NzhkNTI2YzY2N2Y2ZmYzOWE2NjYxNmI2NjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDM5IDQyNzU5YTZlZTk4YWM1ZDM2YWMyMDZkMTA4YzUxMDMyOTNkMzhhZjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDQwIDFmYzg5MDE0YmQ4M2RiMDhiNWU1YTliZThkNzA4NWNiYjFiMDAxYzkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDQxIGZlMjg2NDVhNjEyMjZmODA1NTIxODM3ZjU4MjRiOGNmMmQ3NDZlNjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDQyIGJlYjEyYmI3NzkxYmY3NzkzM2EyNzdmMjc0ZGU3NDc4OTNkOTZlNTkgcmVsZWFzZTI2LW1haW50Cis3NDQ0MyAxZmI3ZTJmN2YwYmI0ZTI0Y2JlYThhM2Q2Mzc1MzA3YmU5NjY4NWFkIHB5M2sKKzc0NDQ0IDVlYTNkNDY3NTY0YTUyYTFlOTE4M2I2ZWNkYjI4YjZjNTAyYmQwMDYgcmVsZWFzZTMxLW1haW50Cis3NDQ0NSA1MWU1YTQxNGIzYzI0N2YyZjc1YTUzODBkYTFmYmM4OTAyYTE1Y2M1IGxlZ2FjeS10cnVuaworNzQ0NDYgYTBmODBkYzA5ZGZlMjI4OWY4YzQ1MjE2M2Q2N2FmMjhhMmQ3OTE3ZSBsZWdhY3ktdHJ1bmsKKzc0NDQ3IGM2ZDMyNzY2ZTk0YzgwYjQ2YTJjNjgzZDY2ZjI2NjRkZjdmMTZjODkgbGVnYWN5LXRydW5rCis3NDQ0OCBiN2E1NzFkNGFhYTdlMWY0YTRiYjZmN2E1MDc4MjhkYWZhNzk5M2YxIGxlZ2FjeS10cnVuaworNzQ0NDkgYWU4MTdmYTRlNjA1NjZlYWNiNDI4NjdmOTQyZjliYmNlMjcxM2ExZSBsZWdhY3ktdHJ1bmsKKzc0NDUwIGU0YTgzZTkxNTIxYTM2OWRjOGQ4Mjc2M2IzNWI0ODg4YzEzODAwMTcgcHkzaworNzQ0NTEgZDcyNGNhOGM1ODIzNDdiM2ExMDQwN2ZkNDZjNTJlZjJiN2RkYjMxNCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTIgNDFiMDFiYjkwNmUzOTY5Y2RmYWFjNjUyMGVhNThhNGFlZDRiZGVmOCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTMgZDcxNDBiYmM2NDczYmU0OWI3YjYyOTgxNmU2Zjk5YTY3ODIzYTU0OSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTQgZDQ0ZTNhYTQyYTViYzc4MTcyNjM3ZmFjNjg1NjBiNDY4MzA4OTVlMCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTUgMDAyMDg3MTg3YjJmZjY3MGZjMDcxMzY3NjBhYjBkOTM3YTRkNDgzNCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NTYgZjkxYzFkMjg4MzQzNDg5NTY2ZGFhN2Q3YWRlNWQyZDI2Y2VlNjgyYiByZWxlYXNlMjYtbWFpbnQKKzc0NDU3IDExM2MwYjg2ZmQ3NDlhN2ZjYmY4NmFjOTljNjA2MThjNjRmZTlmNGUgbGVnYWN5LXRydW5rCis3NDQ1OCBiYzFjNDAzMDU0ZTFjNzdmYTcyMGVhNzg5NmNkOTdhMzc4NDU3MmY5IHJlbGVhc2UyNi1tYWludAorNzQ0NTkgMzA5NjNjZmI2OWZkODIwYmI4MGQ2ZDNlNWY4YjQ0NGQyNzg1MmVlOSBweTNrCis3NDQ2MCA0YzUxYzRiZmZiMjFhNzBmOTFlN2Y5MTBlMzE5ZGIwYjczNjhhZmEwIHJlbGVhc2UzMS1tYWludAorNzQ0NjEgNjQzYzZjNzY4NGIxNjVjOGYyNjg5OGEwYjIyNDExZGEzOGRjMTMyNiBweTNrCis3NDQ2MiAyMjc3ZWJjZWRhNDNhNmMxODVhM2VkYTk4MTAxN2ZiOGZlNzA1NDQ5IHJlbGVhc2UyNi1tYWludAorNzQ0NjMgMTM3N2E4YzI2NzkyMjU3NjQxMWUzZWI5ZWEzM2Q5NjkzZDQ5NTExZSBsZWdhY3ktdHJ1bmsKKzc0NDY0IDFlMjg3NzAyNjQzNWViZGIzYWVjMmRjYmFmY2ZkOWM3ZjZlZjAyNDMgbGVnYWN5LXRydW5rCis3NDQ2NSAwMDUzMDI4N2JkYjUxMTMxZTk1NjZlNmU2MGQ5ZGVhY2EyYjViZDc4IGxlZ2FjeS10cnVuaworNzQ0NjYgMzg0MzM0ZDhiOTg3NWJlNjI4MTI5MGM5NGIyNWZkM2IwMTllMTBmMiBweTNrCis3NDQ2NyAwZmNmNDBhMTQwZTVlZGJjMDk3NjU1NmQzMjBiODRmNmM1OTcyNmJjIGxlZ2FjeS10cnVuaworNzQ0NjggMTlmYzBkMDVmYTdhNDliZDVkM2RlZTk4N2M0MGZjMmFkYTdhZTJkZiBweTNrCis3NDQ2OSBmYjdkNWVlOTA4YTUwMmE5NjUwYmJmZDdlNGVmY2VkZDkzMTZkMzM2IHB5M2sKKzc0NDcwIDZhYzJhNjRlODI2YmU0NTQ0ODYyZjIzOTFiZjMxOTRkZWM2ZWUwYTAgcmVsZWFzZTMxLW1haW50Cis3NDQ3MSAxMjI3ZTdjYzFkOWIxOGNkZTg4MjJiNDI1NWZlMjU3ODFmYzQ1YTA4IGxlZ2FjeS10cnVuaworNzQ0NzIgYzYzMGJmMDVjZTM4ZGZlMmU3MjA5MDU2NGE0YjY1MzM0NDI4YzY5YyBsZWdhY3ktdHJ1bmsKKzc0NDczIGJlYzM0MDVlMDczZjM0MmY5ODgxMmJmMDc2M2Q4MDUxN2U3ZGZjYTUgcHkzaworNzQ0NzQgNmFmYTViYmRjMzc1NGI2NDY1Zjg0ODI3ZThmMzlmNGQwMThiNWNkNCBweTNrCis3NDQ3NSBkN2UxZDM5NzhkZDYwMDUzYmU4ZjA3NTMyNTA2OTUwYmZlZjI5ZDllIGxlZ2FjeS10cnVuaworNzQ0NzYgZTUyMDA5ZTIyMDE3ZDUxYTQwY2RlOGViODAxODU2MDdjMzdhNzgzOCBweTNrCis3NDQ3NyA2ZGE2ZWRmYTYyOTZjMmJkMGE5ZmNlMjM3NWYyMDQ0YWJmNWVjYmY5IGxlZ2FjeS10cnVuaworNzQ0NzggNDk1ZWVmZjNiOWZmMGRiYmY5YzRmNDA5YzE4YTUzOWNjM2YxODdmOSBweTNrCis3NDQ3OSA3NDZmMTBlMDYyNGU5ZjNlNDc5Mjk4OTFlYmQ4NjU5YzQ4MzQ4NTNlIGxlZ2FjeS10cnVuaworNzQ0ODAgOGI5YzBmNTczYWIyOWM0MWM2YzVmZGNjYTgyYTFmZTBmZjUzNTVhZiByZWxlYXNlMzEtbWFpbnQKKzc0NDgxIDVlZjZiYzAwNTIwYWIwMThkODdhYTk3YjNlNzAzNzAxMzQyYmY4MTkgcmVsZWFzZTMxLW1haW50Cis3NDQ4MiBkYTIxYjQ4MGZmMDUyMzU1NmJjNzhlOTllZjc5MjEzMWRlNTc1MTYxIHB5M2sKKzc0NDgzIGRlZmZlNmFhNDNkMTE0ZThiZjVlZTEzOTBmOGQ4ZTkyMWQzNGM4MjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg0IDM0YzZmNmQyNjk3NmQzYTY5ZmU0NmZiYTljZTFlNzRkMzQwNDVjZDMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg1IDQyODYzMmE1OTBhZGFjZTNiODdhNDcwYWViNWUzMzYxYjg2Y2VhNmIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg2IDc4NzVkZWFjNDEwYzljM2JmNDA0MWRlN2Q5ZGZjYmFmODdlZDA0YTYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg3IGY2ZTE3YWViOTJhYmM4OGUwZDU0YmNlMzhkMTZjODY1MGI5ZDkzMDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDg4IDQyYjI1Njc5NGU2YzUxMjE5YmZmZGYxZjEwNGIyMGRkYWRiY2U1OWQgbGVnYWN5LXRydW5rCis3NDQ4OSA0ZDA4ODE4YjZjNGExZDg4NzNiMGQ4M2FkNmJjYjNmMjRhMTUxZTU5IHB5M2sKKzc0NDkwIDIxN2JjYjg2MDNhYWQxNWM5Mzc1NDhmNWY3OGQ0MWNiNjE1ZTI3MWIgbGVnYWN5LXRydW5rCis3NDQ5MSAwYjA3YzAzYTVmM2MzNjg0NDAxNTA3NTA0MWYwYTBiNGQxMGExYWRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ5MiA0ZWFjMTMyZmFjOTRiODRmMmJiNDEzMzdhYmEyZmI5YmVmNDdiNGU1IGxlZ2FjeS10cnVuaworNzQ0OTMgMzg0Zjk2NWUxMmNkZjFkODg5YWFmMGU5ODI0MjA3YjUwOWEzMzhhOCBsZWdhY3ktdHJ1bmsKKzc0NDk0IDZiMDg4ZGNmMjVmOGM4OWJhYTg4ZDkwMTZiOGRlOGVmZDUxOTU0MzkgcHkzaworNzQ0OTUgMmFhZjdkMTQxYmQwZmVkOTZmOWEyN2JkOTc4NGI2OTg3MDg2NDYzMSBsZWdhY3ktdHJ1bmsKKzc0NDk2IDI4MjFlNWU3NmU4MjkxYzI3OGZhOGQ5ZDA1ZjljZDZkZTE4ZmFlOTAgcHkzaworNzQ0OTcgYjU2M2FiMDE3MWQ5MjM4YjFkYzhlNWJkOTUzOGFhMDMyNWJjYzkyZSByZWxlYXNlMjYtbWFpbnQKKzc0NDk4IGUzYTBkNGIwZDdhYTAyMDkyYzM3YzI5NDQzNzU0ZWRiOTk5YTc1ZTcgcmVsZWFzZTI2LW1haW50Cis3NDQ5OSBjODdhYWNjYzcwYjYxODAwMDI3ZjI5ZmFlZjNhYjhiOTA1NDMzOTAyIHJlbGVhc2UzMS1tYWludAorNzQ1MDAgZDQyOGJjMTg0ZTFmYmRjMDlhYzg0OGFjMDI3OWMwZmQ3NzQyZTAxNCByZWxlYXNlMzEtbWFpbnQKKzc0NTAxIGViMTAwOTkzNjZlYTUyMjYwNDBhNjQwYWQ5YTRhZWNiYWI0ZWUyMjYgbGVnYWN5LXRydW5rCis3NDUwMiAyNGM5NTNmM2Y4ZGFmMmM5NTk0N2JiODAzN2RiYmIwNDRhYzMwYzIzIHJlbGVhc2UyNi1tYWludAorNzQ1MDMgYWUyZjc1YWEzZmFhOTQ0NDFhZjkyYTY4ZjljMzYyYzZhZGMwNmNkOCBsZWdhY3ktdHJ1bmsKKzc0NTA0IDk1MTY2M2MwMzBiNDhjOGNhYmUyNzVjYmZmMDkxOWI2MzU4YTE4MzEgcHkzaworNzQ1MDUgM2JmMDNhZDRhNmEwNmY4NWY0NjY3NTIzOTZkNzBmZGM2YTFhZWU5YSByZWxlYXNlMjYtbWFpbnQKKzc0NTA2IGQ4NzQwNjQ2YTAzMWNjY2RhYzZiMzRkYzM3OTAzMzYyZjgyMDcyMjYgcmVsZWFzZTMxLW1haW50Cis3NDUwNyA3M2Y0MzJjZDgyZGU4YzcwZThlOTc4MzY0M2EzODczNDJhMWNkN2Q2IGxlZ2FjeS10cnVuaworNzQ1MDggYWQ5MzAwNjdjMTI0ZmJjY2NjOTJmNDNjNDU1YWMxM2NmZThhYjc2MCBsZWdhY3ktdHJ1bmsKKzc0NTA5IDM3ZjJmMzY3YWQ4YmJjNTc1YzU1NjY3MGZiMjcxZDMyOGU0MzRlODAgbGVnYWN5LXRydW5rCis3NDUxMCBjZDE4MWE2ZjRkZDczNzUxMWEyODA4MTk2ZGNhY2Y0YWU0MzYxYjA5IGxlZ2FjeS10cnVuaworNzQ1MTEgZjgwMTJmZGRhNmQzZGUwZTUxMTMyOTljZDlhZmRkZjI0ZGVjY2Q2OSBsZWdhY3ktdHJ1bmsKKzc0NTEyIGY3NDY2YWMxZGQ3MjVmN2Y4NWIzZmI0ODNiZTNjMTEwYTE5NDM3NmIgcHkzaworNzQ1MTMgMmNmYmRlOGNiZjg4NjE4NzM1MDcxYTU0N2VkNmJmYzViZDA0Y2UxZSBsZWdhY3ktdHJ1bmsKKzc0NTE0IDAzMWU0MzE2NGI3NjhkMTllNzU2ODRmNGUyOGNlOWJjOWNiMzU4ZmEgcmVsZWFzZTI2LW1haW50Cis3NDUxNSBlMDFhMTk5MDcxNzExMTg3NWM0NjMxOTAzNjA3NzkwMzMxOGZiZDQ4IHJlbGVhc2UzMC1tYWludAorNzQ1MTYgZjVlNzAxMWZiZmYxMjA1ZjliNDVlYjg3NTU2ODcxNzEzZTgxZTY1MCByZWxlYXNlMzEtbWFpbnQKKzc0NTE3IDY1MGRmMGVjMGMxMmY2ZjE4YjVhMjBiOWYzYTliOTZiMWM5ODc0OWUgbGVnYWN5LXRydW5rCis3NDUxOCAzYWJiZDcyMDliZTg1MDA1ZGJjM2NlYTQ3MjEyNWNlODA0ZDVlZTllIHB5M2sKKzc0NTE5IGNkMGM4YWM5Y2I0OTQzMTdmNjIwYmMxN2VjNmE0ZTlkM2ZmMGQ2YzkgbGVnYWN5LXRydW5rCis3NDUyMSBmZWZkOWViN2E4MjJkY2ZlMjhiYzYxNjVkYmI5YTBhOGVlZjQ4ZWJlIHB5M2sKKzc0NTIyIGM3Y2QyN2Y2NjVkMWRkYzc3MmRjMGQ0M2IxOGFjZWI4ZjBhMTg0MTcgbGVnYWN5LXRydW5rCis3NDUyMyBlNDcxZDZkMzI3MjRhYTZlMjMwNTFmZjk1NjE2MzBjYjI4Y2E0YWE0IGxlZ2FjeS10cnVuaworNzQ1MjQgZTIxYzRjNTI3ZTY2MWVhMWE5NGIwMzBlZTgzYjJmMDU2YzcwOTVkZSBsZWdhY3ktdHJ1bmsKKzc0NTI2IDk3NDU1M2ZiNTlkY2IzM2NiNTI4MGY2NGZjOGFmNjIyMGY1NjkyOTggbGVnYWN5LXRydW5rCis3NDUyNyAwMmQ0MDg5ZjMxZGRjY2M3N2UxYjllMjUwNDBiZTQ0ODJiYjZkYTgwIHJlbGVhc2UyNi1tYWludAorNzQ1MjggMzhiOTdjM2U5OGJkYWE1NmFhODdiZDUwZDE3NWVjYzhmNDUxMjYwNSBweTNrCis3NDUyOSA4NmVmNzRjNGFkOTc3YjMzMDUyMjY3M2ZiYjNhODk0YjVlNDE0NmRmIHB5M2sKKzc0NTMwIDBlNTVmY2NiMTllYzU1ZDMwM2RmNDJkZjRmNDZmYmIwMWFiODYzMzYgcmVsZWFzZTMxLW1haW50Cis3NDUzMSA0ODcxZjgxZDcxMzIwMDRjM2Y4ZDMzOGExY2EwYmUzZDBjODU4MTU2IGxlZ2FjeS10cnVuaworNzQ1MzIgNTk0ZTE5N2VkNjNkNTJlZmM5OWFkNjdjY2JjOGE4ZGU2YzRlN2I4ZCBweTNrCis3NDUzMyBmMzQwODc2MGQ0NmU1YzVhYTY5MmU4Y2ZkOTNlYTBmOTQ2MzczYzFkIGxlZ2FjeS10cnVuaworNzQ1MzQgYmMxNjcwOTJjOThjYjhlYzExNTk4OGVjMGFhYjdiMDhiMTJmM2Y2YyByZWxlYXNlMjYtbWFpbnQKKzc0NTM1IDEzZjE5ZmI5M2Y4ZWNkN2FiY2UyMjYwYzAxZmE1NjUzN2JkMjgzMGQgcHkzaworNzQ1MzYgYTg4OTQxZTJiZjI3M2QyOWNmODQ0YTBkMjk2MmNkYWJmMWY5YjhjNiByZWxlYXNlMzEtbWFpbnQKKzc0NTM3IDE1NDVjZjczNzJhZjk2ODE3NTM5MjBkMWFjNTJkZmU3OGY3OWZkZmMgbGVnYWN5LXRydW5rCis3NDUzOCA1ZDdmNjBiZmZlOGZjNWM2NDdiMDRlZTU0ZWJkY2ZlZDRhZDM5MDJiIHJlbGVhc2UyNi1tYWludAorNzQ1MzkgYzRkNTgxZTcwOWNhNTRhZjM1MTI2YmEwYTNlN2VhMTFkOTMzNGQ3OSByZWxlYXNlMjYtbWFpbnQKKzc0NTQwIGNmYTdhZTcxN2E5MGI2YzlmMWY1ZWFhOWIyYjU2N2NlMzVjMzY3NWUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NTQxIGM0MDNiNjZkOTJiMGZhMjNiYTkyOTM5YzY0MTk5YTc3MjRjYmI4MjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NTQyIDlhMDk2OWI2ZjhlNWU2MzI2ZDJiNWRkMzQzY2I2NWQ1ZGM2ZDI3M2EgbGVnYWN5LXRydW5rCis3NDU0MyBjNGQ4Y2JhZmQ4Yzg5MDYxZmI5MjRjZjhjYWM3OTllMWE1MDdkYmU2IGxlZ2FjeS10cnVuaworNzQ1NDQgNjc1YTNjMTgyNGY0MDU5MTA4YTEwNGU5NWZmYzYwMWUyZDE2ZDZjZCBsZWdhY3ktdHJ1bmsKKzc0NTQ1IDA5MTgzMTJhMmQ3YjlhYjE4MmExYjQ0NWI5OTUzZThjNDkzMDUyYjggbGVnYWN5LXRydW5rCis3NDU0NiBmZmNmYzk5MGU0Y2ExOWNhNzg3ZDRlNDY0NDJhYjZkYzUzYmM2ZjljIGxlZ2FjeS10cnVuaworNzQ1NDcgOTJlMzg1OGNjYTcwYWU2Y2E0YTY1N2EwNDJlYWNjNWE0ZTY1YjRkMiBsZWdhY3ktdHJ1bmsKKzc0NTQ4IGVjOGQyNWUwNTAwYTg4Yzc4MmQ2ZTAwNGEyMGZmNjFkMDVhOGQ1YTAgbGVnYWN5LXRydW5rCis3NDU0OSBkYjg2ZDNjYzFlNmI5MTVmMjhkN2ExNTE5MDYxNjJiNDlkOTFmMGMzIGxlZ2FjeS10cnVuaworNzQ1NTAgYjYwMTM0ZWU1ZWI0NWMzZmJlNjUxMjNhNDJhMmQ2ZTBmM2VkMDIwMCBsZWdhY3ktdHJ1bmsKKzc0NTUxIGY3NWYyNzliY2QzNDA0OWQ0MmM1MTE0MzIyNTFhZDkzNDQ4NTE4MGMgcHkzaworNzQ1NTIgZDkxYWZmMjA2ZGZkZTAzMGJlOTZhNWNhZDc0NzVmZDE1ZDA1OTIxZCByZWxlYXNlMzEtbWFpbnQKKzc0NTUzIGQwM2U1MjhlZjk0NmFhN2M0ZTkzNDdhMmZhMzZjZDA5Y2IxYzFjNDUgbGVnYWN5LXRydW5rCis3NDU1NCA0OGRmNDA3YjYwNjgyNzcwNWRiMmM4NmUxNzBhMDcyMDE0YjY5ZjYyIGxlZ2FjeS10cnVuaworNzQ1NTUgMTRjNWZhYjNlY2JmNDY2YzRlNjRjMWQ4ZTk2YzMwM2YyZDkwZTIwNSBsZWdhY3ktdHJ1bmsKKzc0NTU2IDgwMDU4ZGZlNDY5ZDljNzdlYmIyYTAzYWE1NWU1ZDBkMTY3YzJiNDIgbGVnYWN5LXRydW5rCis3NDU1OCBhZTAwYTNhODA0NzM5MzM4ODY5NTIxY2NiMTRlOWM5NGEwZDdkOThjIGxlZ2FjeS10cnVuaworNzQ1NTkgMGQ5YjU1NmE0Mzc4MDY5YjgyNGM0ZmQ4NGE0NWIwMWQ3MzM2ZWIyNCBweTNrCis3NDU2MCA3MzUzMjJhYTcxZDFhZTZlMjUxYTA5YWNiYzYxOTIxMzhiMGFiNmQ2IHB5M2sKKzc0NTYxIGI2NWViZWQwNmViMDQ1OWRhMTc0ZDU3MmYzMTBkNzRiYWVhZGE3MTEgcHkzaworNzQ1NjIgYjg5ZjU4MmVlNzhhOGI4MGE0NTY1ZDUyZjIzZWZhMTY3Yzk5MWJhZiBweTNrCis3NDU2MyBlMjEzMDNjYWMxMjA1YzQ1OTNkMjY5ZTgyMDUyOTk1ZmY3ZGQ0OGIwIHB5M2sKKzc0NTY0IGYyOWI1OWE0OTI0NjFlMzFlMWM3MzQwMmY2ODUxNDMxMjMyMWFhMzAgbGVnYWN5LXRydW5rCis3NDU2NSAxZjFiNGMwM2U4OTJhYTA0NTg4ZGI1YWI5MDVmM2I5MmI2NzUyNDZlIHJlbGVhc2UyNi1tYWludAorNzQ1NjYgZDIxMDc3ZTYzOWZkZDFiZDRlYWYwNWJhMDNhNTM5OWE3MThjY2JhMiBweTNrCis3NDU2NyAwOTRhNmYxNTg2NDE3NDIwMWFhYTczNzg0NGMxOWJiOGZhZjI5N2QyIHJlbGVhc2UzMS1tYWludAorNzQ1NjkgYjZiZjJhNWY0OWRkZGQwYjc3ZWY5ZDNkMDMxMDI2ZDIzY2ZlN2E1YSBsZWdhY3ktdHJ1bmsKKzc0NTcwIDAyOTUwZDU4MDgwOGJhMWVlYzU1NmU1MDM0MTAyNjlkNGQwOTMxZTQgbGVnYWN5LXRydW5rCis3NDU3MSA1ZjllMTMwNjZkMzY2NzRhMjM2MjYyODYxOGIzMDEzMDc3Mjk2MWRmIGxlZ2FjeS10cnVuaworNzQ1NzIgMzNjZTRjNWJjMmU1NjBjY2JhNDQ2ZTJmNWExYWU4NGFmMjU3MzEyMSByZWxlYXNlMjYtbWFpbnQKKzc0NTczIDlhNzhlM2Q5MDYxNzFjNzIxOGExYTE2ZGY5NzJhMzA1MzZiODNmYjMgcHkzaworNzQ1NzQgNDc0YThlMDZlOTY2MWEwMmE1MmQ5Yjc4MDQ4NDRjNzEwZGMwZTM0NyByZWxlYXNlMzEtbWFpbnQKKzc0NTc1IDYwNmU5N2NhZWI3NzM2ZjViYWFlZGNmNWRmMWZhY2UxMjczMmQ5ODUgbGVnYWN5LXRydW5rCis3NDU3NiBiZmIyMzM3NDUxZTlhYzViZWQxZDc2YmI2NzhmOTYzNjExYTUyOTQ1IHJlbGVhc2UyNi1tYWludAorNzQ1NzcgNmRlY2E3M2JkNTEyZGZjYzM4YzE0NWI0NjFhNjM5Y2RiM2E5MzE2ZSBweTNrCis3NDU3OCAwNDhhOTEzODFiZDgwYWUxYzBjOWExZGZmZDEzMjM5OTFjZTcyMzJmIGxlZ2FjeS10cnVuaworNzQ1NzkgN2RlMjA3ZGQ0NzM5OTI2NDkxNDYyNTc3NDY4MTFiMTdjNzIyN2Y4MSByZWxlYXNlMjYtbWFpbnQKKzc0NTgwIGE0ZWJhYjg0NWY3MjQxZWY0MjNjNzQzNDUyNjQ1NTcyMWEwOWE1ZTggcHkzaworNzQ1ODEgZDQwMzdmYjg1NmQyMTA4YWFlODlmOWY0MDJmODYxZTQzZGNhOGZlZCBsZWdhY3ktdHJ1bmsKKzc0NTgyIDFiOTEyNzg3MTcyMzIwNTg5NTBhN2ZhYWExYjE4NjcwNDEwZDc4ZjggcHkzaworNzQ1ODMgZTliYWEyZGU4YmI0ZWNkYmIwMDU1YzNlNTAzZDlkMWI4YmUyMTdmZSByZWxlYXNlMzEtbWFpbnQKKzc0NTg0IGU0YzJjYmQzYmY5MzgzM2NmMDdjYmUxMTllYzIyNmQzZGY2ZDc0OTMgcHkzaworNzQ1ODUgNjhjOTJlZDhkOTYwNGQzMGE1MzIwNzFjYWYxNzhmMmY4NmRlMzdjOSBweTNrCis3NDU4NiBkODI4MDM2NGM1ODE0Zjg0MTVlNWEzNGE1ZGFjN2JiNzBlMGU3MzhlIHJlbGVhc2UzMS1tYWludAorNzQ1ODcgMWY3NzJmOGZlYzkyMmJmNTQ3YzZiOWRmNWY5ZTM2NDlkMzA5MDc1NiBweTNrCis3NDU4OCA2ZmE4YTgxMThkZjBjM2ZkYmNkZDdmNGI2YjFjMDIwMDkxOWU1OTdmIGxlZ2FjeS10cnVuaworNzQ1ODkgYWVkYzRlYzJmZTI0MDA3Nzc3MWIxMWExZmNhN2EzMjBjY2JjZmZiMCBweTNrCis3NDU5MCBiNGZjOGNiZmUxZWU5MWYwYzRlZjg4NTcyNmI3YTFiODY0OTkwZGFlIGxlZ2FjeS10cnVuaworNzQ1OTEgMDgwOTBiNWU5NmMyZmNlNzcyMGU3NjNkZTYyNDM4YTVhYmIxZTFkNiBweTNrCis3NDU5MiA2OTYxNmUyMjg3MjhlM2Q5Y2E1ZWE3Mjg2N2NiNTczMWVmZjZjZjM4IHB5M2sKKzc0NTkzIDU4ZTYzMTk3ZDRlYWIzMTE4ZGZiODlkM2Q1MTY4Y2I1MDI3ODQyMjkgcHkzaworNzQ1OTQgMzY4YmZjMThhN2ExMzlhYjk1ZDY2YWUyZmQwNWM1ZmJhNTU0YWU4YyBweTNrCis3NDU5NSBiZjUwMGQ4ODU3OTY2YWFmNTg3YjNhMmM1M2Q2N2JjY2E3ODQ2YmU5IHB5M2sKKzc0NTk2IDU2MDAwOGQwOThkZGM3MTllMjAzMzFjNGVkNjNhMjk0MTQyMWI3MjcgcHkzaworNzQ1OTcgODZmYTQzYzZkNTdjNjYxZmI4YzQwZWE1NjQ5ZmNhYjY3YzQzNzc4MSBweTNrCis3NDU5OCA4MDFhYTUyYjEyMTcwNTk4Zjc4OGZjNGVjMzAwODI0ZmFiNTExY2IzIHB5M2sKKzc0NTk5IDk5ZGMyMmVmMWRmMDQ4ODBiOGJmZjNhYTU2OTE0MDU3YjdmMzA2NWIgcHkzaworNzQ2MDAgMzliY2JmMzE2ZGJhNjdiNzkwMDdmM2Q0MjcxZGExNDdjNjhmM2E3NCByZWxlYXNlMjYtbWFpbnQKKzc0NjAxIDk0MjQ5ZDE0MjVhM2ZkYjY3NGNhMWRjM2VkYzI1NjM3MGY5YzIyMjQgcHkzaworNzQ2MDIgMDI3MDA3YjQzZjE2NTYwZGYyYjg0MzExZGE3OTNiMGM3NzQ1OWE0NSBweTNrCis3NDYwMyA3OGI4NmY4YmY1YzQ1OWMxNzVkZWFmODVmYzRlNjNkM2ZmYTJhOTAwIGxlZ2FjeS10cnVuaworNzQ2MDQgNDNhNjY2NzY4ZjQ3NGI1NjFmYzY0YmZhZjcyZWJjZWYzMzY4NTliMCBsZWdhY3ktdHJ1bmsKKzc0NjA1IDM1YTE2MjNjMTAyMzkwODhiMDI2Yzk1MTYxOTlhMDRiZDIwMjYzMDUgcHkzaworNzQ2MDYgZTgxNDUzYmIwNzg5M2Y3ZTY0YTY0OTY0ZjE4NTI1MDNiZjNhMDlmMyByZWxlYXNlMzEtbWFpbnQKKzc0NjA3IDA1YWQ5ZWM2MzA4Nzc0OTM2Mzk5Njg4ZGZhMTIyM2QxNjE4NzVkNjMgcmVsZWFzZTI2LW1haW50Cis3NDYwOCBhY2YyMTViYmU3MDJlMDU1NzBkNGNjMmNjM2Q0ODc4ZGUzZjc3MjA5IGxlZ2FjeS10cnVuaworNzQ2MDkgMTFiNDU1MzVhMWIzZTYxOWNlNmRiN2ZhYWYyNjk4ZDlmMjNiODVkMiBweTNrCis3NDYxMSA4NDk5MjhkNzVkNmUzOTg4ZTFjODVjOWFiNmI0Njc3NDljZTRkZDM2IHB5M2sKKzc0NjEzIDA3YzIzODA2Y2NjNmMyZWRiZTA2Y2I0MjkzZjdmMWU5NTU2Yzg3YWUgcHkzaworNzQ2MTQgYmE1YjI2ODNjMDY0MGM2MDEzMmI1ODlmNGUxNTBkZDg3NDA5YWMzZiBsZWdhY3ktdHJ1bmsKKzc0NjE1IGU1YjQ2M2E2MWVlMjY5ZWE4Y2YwOTQzNjQ3MjIwZDkzNmE5NzYxMGYgcHkzaworNzQ2MTYgZWQ3ZGJjOTIyZDA1YzlmNDVlMTdmNzA5Nzg3ODMxYTY3MzgzN2I3OSBsZWdhY3ktdHJ1bmsKKzc0NjE3IGUxNTdjZWI1NGE0MzhiMTE2NTk4ZTk0ZmRhNDE0YWNiY2QyOGE0M2IgbGVnYWN5LXRydW5rCis3NDYxOCBiNzRhN2EzZTQxYzU3MmRmMzk4MDcyZjVmZjQ5ZTU4MWM2MTI3ODExIGxlZ2FjeS10cnVuaworNzQ2MTkgZDUxMmNiYjg1YWUwMDFkMzk2YzhkOWRkNDY1MWJhYzc2NjM3MjhlYyBweTNrCis3NDYyMCA4MThiYTg5ODUyODEwNDM1ZTE2ODM1OTI0MWQyMWZiY2UzMzFlMDI1IHB5M2sKKzc0NjIxIDY2ZjQ4YmM5NDgxNDg3NTFiYWE3ODM1NWZhNzYyMDAzOGUyYTE4MzggbGVnYWN5LXRydW5rCis3NDYyMiBhYzc1NWM1NjYxMzZkNTEzMDc2MTMyZmNiMzA4YWRlNWE2OThjNTZiIHB5M2sKKzc0NjIzIDAwODg4NDRkMDEwOWE0ZjdiNzNmN2U3MjliYWM5NGI3YmRlZmNjY2EgcHkzaworNzQ2MjQgYWZiYjJiMmZmNmY3ODEwZDk1ZWE3NDQ4YWRmMTJkNzhhNTk5MTU4YSByZWxlYXNlMzEtbWFpbnQKKzc0NjI1IDVkMmI2NmUwMTk2OGEzZmFhZTNmMWEyNDViNzQzN2YyMGZjMThjN2EgbGVnYWN5LXRydW5rCis3NDYyNyBmZDhhNTg5MDA4YWMyMGU0NTE4NzVlMTU4ZTk5ODg3MzM1ODQ2NGQ1IHB5M2sKKzc0NjI4IGE0N2FhMTEwZmNhY2Y4NGFlZDQ0ZDI4OWZmMjI2NWEzNzk5NmM0MzcgcHkzaworNzQ2MjkgNmI4MmJhMzA0YTdlZGU4NzZhMGI3N2VhN2ZlYzNlMjBkYTFiM2FjNSBweTNrCis3NDYzMCAxMDZlZTRlYjU5NzA1ZGNlZmYzZmI0YmM0ZTIyZTk1YWJlYWE4OTkyIHB5M2sKKzc0NjMxIDlmZmE4Zjg4Nzc1MDk0ODdlZTI1OGEyZGNjZGUyZWY5NGJmNGQ5N2EgbGVnYWN5LXRydW5rCis3NDYzMiBlMGNlZjAyMzMwMjAzZTQ2YjIxODE5NjA1ZmQ2MWI0NjNhYmRiMGYyIGxlZ2FjeS10cnVuaworNzQ2MzMgYmI5MDA1MWI0MzRjMDNlZTczM2JmYmJiOTZkZjA4ZjY4NWE1YTllYSBsZWdhY3ktdHJ1bmsKKzc0NjM0IDYzNzFlMmQwZGVhMDA5MTZmOGFmODVkYTFkNjc0ZWI4MjlmMjA4Y2UgcHkzaworNzQ2MzUgZDU1YzlhMDYzMjU4YWU3OTNiNjQ2NzgzNzFkMjQ0NDVlZTJhMzFkZiBsZWdhY3ktdHJ1bmsKKzc0NjM2IGViNjczYTQwMWI5ZDU1MDg2MWI1MDJhZjQyYTkxYzYwNDU2ZmZiNTIgbGVnYWN5LXRydW5rCis3NDYzNyA5NWU1NzM4Y2IzMDk4MTgxOGE1YmM4M2ZiZGU3YzU0OGE4YzA0N2Q2IGxlZ2FjeS10cnVuaworNzQ2MzggNzZhZWJjNWVhNDVjYmFkMzYxNWRmNWZkMDBhMWZkZDQ0M2VhYzdmMyBweTNrCis3NDYzOSAzYjllNzUzMTFlNDMwYTM2NmY5OWI4MGY3YjlmOWJkMmQ5NmJkNDM4IHB5M2sKKzc0NjQwIGNlN2UwMDM4OTk2ZjRiNGY4MzlkOWM1YjQ5MDgwZjZiOWQ4NTVjYmYgbGVnYWN5LXRydW5rCis3NDY0MSAxZjAzZjI5MjBjNjE3MWU4NzU1ODkxNTVlNGMxMWEyYWU5Yjc5YTRmIHB5M2sKKzc0NjQyIDc3YWI5M2NhMDY1ZTM2N2FmMWYxNDkxOTVlN2M5NjgwNjk0MWRhOGYgcmVsZWFzZTMxLW1haW50Cis3NDY0MyA3ZDM5ZTIxM2I3NTYzNjdmOGExYzgyYWQyNzcwYzM3MGY3ZTU2M2IzIGxlZ2FjeS10cnVuaworNzQ2NDQgNjFkYmMxZDFiODA0ZDYyODRmNmZiNDIzZTExYzI1N2YwMzE3MGQwNSBsZWdhY3ktdHJ1bmsKKzc0NjQ1IGEwN2YzMGQ3ZDBmMWNlZjA4NTUxM2FhNGMyMTg2MmQ5ZjM4N2QwMjIgcHkzaworNzQ2NDYgMjViMTNmNzgyZmZlODQ4YTFkM2UwMjEzNTk0ZjM5N2MxMjIzNzQ5OSBweTNrCis3NDY0NyBjNTE3MjFkNjQ0NTFhNDkyYjJmYjhjZDg5NGQ2NTcxZmZiOGFiZDFhIGxlZ2FjeS10cnVuaworNzQ2NDggNjNiNmE5MWFkOWQ5N2RjODg4ZWQ5MGRhZTY0ZjY1MGEzOTQ5ZDVkNSBweTNrCis3NDY0OSAxN2U4M2YwMTY5ZTgxZmYxZGFlMzA4OWFjMWNlZWVmOWIwOWFkYzMxIHB5M2sKKzc0NjUwIDY3NThiZjIwMDJkYWI3YzE2N2I0YTc3OTJiOGIwZDk5MTdjYzM5MGQgbGVnYWN5LXRydW5rCis3NDY1MSA4YThlM2MxNjY4YTA5OTc0NDFlMzFhZGM3MWNjN2ZkMzg4NzNkOTgxIHB5M2sKKzc0NjUyIDE1MDFhMTM2MGNlNGU0ODU3NWJlNDdjNGYwNWY3ZmFkZmUxYmUwMDggbGVnYWN5LXRydW5rCis3NDY1MyAyMGJmYzFkMzU5ODljMDQ1MDk3NTY2OWQ2ZjE4YzMwMGYxOTQ2YzE3IGxlZ2FjeS10cnVuaworNzQ2NTQgYzIxNjViZTAwMTcxYTY4Mzk0M2I1YTRlYWZmZjUzMDdjMWU4YWY2OCBweTNrCis3NDY1NSA3N2RiMjVjNzUyNmExMjllNGMyY2UwNDk3MGQ5ZTZhZTZiYzU1OGE4IGxlZ2FjeS10cnVuaworNzQ2NTYgZTg0NDE4NTA3OTBmODZkZDgxMmY0YTMyMGQ3NGNhNjFkYjljNWI4ZCBsZWdhY3ktdHJ1bmsKKzc0NjU3IDc1ODM3Y2ZlOWZmYmY5YWZhZGNlNjk2NTM5NDA0M2Y2ZTMxNTI3ZWEgcmVsZWFzZTI2LW1haW50Cis3NDY1OCBkNTY3ZDk2M2NiMzcwNGE4YzM4ZDc4OWYxNTMwMzM2NWQ3N2EwMmEwIHB5M2sKKzc0NjU5IDBmNmRjMmU2ZjA5MWU0MTIyNzFkNTk0MDUyZTI3MDY0MjBlZDMyYjUgcHkzaworNzQ2NjAgM2IwYjM3MDE0YWFlYjE3OWM3MWI2ZTdiY2JmZTFiMTM1Njg2YjMzYyByZWxlYXNlMjYtbWFpbnQKKzc0NjYxIDRkZGMwNTk4ZGY3OWY2MzA1YTcyNWEzMDNhOThhNDJlNGYzYzRkNzkgcHkzaworNzQ2NjIgMjY2ZDdkYzNkNjU1MTAzY2E0YTZiNmYwNDA3NWJhOGFkOTQxNmZlMSByZWxlYXNlMzEtbWFpbnQKKzc0NjYzIGZmYmI4ZmZmMzUyMGVmOGEwYjFmMTM4MTNlNDUwYjEzMjdjYTcxNjEgcmVsZWFzZTMxLW1haW50Cis3NDY2NCA2ZjdlNzE5MmZlYmIwZmQxOWE4MTYyMWUzOGQ0ZTAxN2FlOGM4YzRhIHB5M2sKKzc0NjY1IDc4MzcwNWIwNDI1ODBlMzEwMDU4OGRmNWUzYmViYjE5NmQxYTNjNjkgcmVsZWFzZTMxLW1haW50Cis3NDY2NiBkMTkxMTQ0OTIyODYwMGJhNmY5ZGMzOGIwYzI4MjVhYWExMTdiNTAyIGxlZ2FjeS10cnVuaworNzQ2NjcgMWQ0MzgxMmFhZGI2MTg4NzE3MDEyMGMwZWI2ODU5YzhmNmMyYjRkZSBsZWdhY3ktdHJ1bmsKKzc0NjY4IDNjN2M5YjgxZTM2MTQ0NDUxZGFlNDc0MmNmN2E3YjdkNGJiMTczN2MgcmVsZWFzZTI2LW1haW50Cis3NDY2OSA2MjMxNDdhMmI1YjFhYjQzNzdjYzE3Y2UzYjE4NGRjYmMxZDJjMGI3IHB5M2sKKzc0NjcwIGRjNjJkZDMzMjZlZDBiZTIzZjIwNjc5MGE2NGNkYzMyM2Y5ZDUyOTcgcmVsZWFzZTMxLW1haW50Cis3NDY3MSA5MDY0OTBhYjZhZmZiNGVlZGRjMzljOTUyZDUzM2Y3M2Y3ZDg4NGVlIGxlZ2FjeS10cnVuaworNzQ2NzIgMzQ0OTZiZWQ5MzY1ZjVkZDViYjk3OTllY2QwOTA3MmQ5MzM1NWViNSBsZWdhY3ktdHJ1bmsKKzc0NjczIDVkOTc2MWU0NDU1NTg3ZjVhNzMxODExYTI2Zjg4YThmZDM3ZTgxYjYgbGVnYWN5LXRydW5rCis3NDY3NCBkNjI3YjBmZjFkMTdlNWVlNGI4NjdhYTY2NzM0YjkyOTk2ZTUzOTYyIHJlbGVhc2UyNi1tYWludAorNzQ2NzUgMTk3YzJhZTUxY2M2MTJhOTU2ZDNhNGNlZDdmZWQ1NDUwY2MyMjc2OCBweTNrCis3NDY3NiAxZjRmMzQyYmZlMmU4MWRlNzhhOTM5ZDMzNDdmOTgwZWU0NzhhYjJjIHJlbGVhc2UzMS1tYWludAorNzQ2NzcgMjBiOWFmMWYwMGM4NzUzY2E4OGViYjcyYjAzMmI0YzI4Y2U5ZGFkMSBsZWdhY3ktdHJ1bmsKKzc0Njc4IDk1OTAwZGJkNWRkMzNmNTIxMjYxYTU1ZGE2ZWM1YzdkYTE5NzIxYjcgcmVsZWFzZTI2LW1haW50Cis3NDY3OSBhMTUyY2NjYTUzODk2MmVlZTQ4MjU1ZjU3N2JiYzJmNDkxMzZhZjE0IHB5M2sKKzc0NjgwIDRmMDk4ODBiZWJiYmE2Y2IzZDIzMTJhMzcxZThhYzUxODhhZThkMWQgcmVsZWFzZTMxLW1haW50Cis3NDY4MSA4OTliYmNiYWY5YTZlYTg1MTVjOGJmYjEyYTAxZDYwODljZGY5OTMwIHJlbGVhc2UyNi1tYWludAorNzQ2ODIgZGIxNWM3YWYwMTRmYTA4NzI1NTYzNjM5ZmZmMmExODE0ZjdhYjExZSBweTNrCis3NDY4MyAwYzQ5NGU1Nzg3ZGY2YmQwZDA5NzE1MzVkNmIyZjRkZmNjZWM1Y2QxIHJlbGVhc2UzMS1tYWludAorNzQ2ODQgMzRhN2E5MTU4MzcyM2I1OGY5MzkyMjMwYWQ2ZmMxNjk1NzRiZWI0NiBsZWdhY3ktdHJ1bmsKKzc0Njg1IDdlNzY5ZmRkZTQzOWZmYzgwNWQ0MTNjZWNiYTU5ZThiZWJkZjJjZTYgcmVsZWFzZTI2LW1haW50Cis3NDY4NiA5ZTdiNzgzMmZkNDUxMjc4YTdlZmM5NzIyODhiMWVjNTEyMWFiMzAyIHJlbGVhc2UyNi1tYWludAorNzQ2ODcgOTJmMTZjODc4ODlkYTBmNDJkZTNlYWJhNjZmYmYzZDBmZTIxY2M3OSBweTNrCis3NDY4OCA2NTcyZDJlZmM4YjI5YWFhZjI4MGQ4NGNkMzVhYzI3ZGU0NDBhNjA0IHJlbGVhc2UzMS1tYWludAorNzQ2ODkgYzY2NDU1YTQxNmVjN2JmZDkzNDAxMDJjODE3MWZmMTdmZmJiZThmZCBsZWdhY3ktdHJ1bmsKKzc0NjkwIDUzYzRlZmQxNzBjMDUxN2YxNjFhNWIwNzgzODZmNzkzMDMxMjZiZWYgcmVsZWFzZTI2LW1haW50Cis3NDY5MSA3NTAwMDk2YmYxYTA3ZWIwNjRjNTg4ZDg3YzI0Y2ZiMGZmNTY5ODQ0IHB5M2sKKzc0NjkyIDg2OTAxY2FlNmI2NDgzZjlhMmQ1NmVhM2VlMzQwNmE3NWIzMjc5NDUgcmVsZWFzZTMxLW1haW50Cis3NDY5MyBkMzBhM2Q1NzcxNjRlYmNkYTgyYWQyYmFmODY5MzA1MDA4OGE1ZjZkIGxlZ2FjeS10cnVuaworNzQ2OTQgYTcwZTcyZWZjMmFkNjljZGI5OGEzNmZkY2UyMzM4MDM3MTAxMTM2YSByZWxlYXNlMjYtbWFpbnQKKzc0Njk1IDVlMTEwODU0NWU3ODc0YTQ5YzE3NzQzZGUzZGE0NzRiZDJjNWY4OGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0Njk2IGVkMmM1ZTAwNzQxMWQwOTZkOTM4MzRhMWVhZWRjNjExNmJiMmFlMjUgcHkzaworNzQ2OTcgNDgwM2U3NmYyMGM1NmZlOWU5OWM5YjViYjQyOTg4YWU1NTI3MGJmZiByZWxlYXNlMzEtbWFpbnQKKzc0Njk4IDc5MGMwMTlmNjQwMzg4NzMwMzA5MDgyYmZmNTVkYzc3MzVkMmFmNDkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0Njk5IGRjNzIxN2NiNzNiN2IzYmYyNzBjZmYzYTgwY2M0NGJmZjdmN2I3YmEgbGVnYWN5LXRydW5rCis3NDcwMSBmNjQ1NzBkMGY3MWQ5ZGJkNzAwNTA2NGEzNDY0NDc4NTY0ZTBjNjVmIGxlZ2FjeS10cnVuaworNzQ3MDIgMzdmNWQxNzg1YmIzZmU4YzI3Mzk2NWVmYjMwM2M4Yjc2MjZiY2ZjOSBsZWdhY3ktdHJ1bmsKKzc0NzAzIDMwMGRhM2NjZjlmYzNmNzE0ZjFkNTk4MTVhZmI2NDFiMTg2NDMyOWEgcHkzaworNzQ3MDQgMGY3MzMzYWNhNDU1MzIzMTBjNmY1NzgzNDIzMGQwNDNlZGEyY2VkNyBsZWdhY3ktdHJ1bmsKKzc0NzA1IGU4OTVlZjgyYzA4NmNjYjgzYmQxNjU0MzRiZGNlNGM5MDYwMjUwODAgcmVsZWFzZTI2LW1haW50Cis3NDcwNiA4YThkNDY3Yzg5Y2NlYTA0YjE3ZDgyN2VkODhkYTI2OGQ5MzhiNGYxIHB5M2sKKzc0NzA3IDBkZDBiMGRlNWUzMWYwMWI2NDdjOTcyNDJhOTkyOTliZjNmMmUxN2EgcmVsZWFzZTMxLW1haW50Cis3NDcwOCBkNDEwMjQ1OTM5MzFmNjlhYTc2NzM0OGNiYjU0ZTlhYzVlNDViN2FjIGxlZ2FjeS10cnVuaworNzQ3MDkgNWY1ZWE3NDdlMzFhMWFmZDlkZWViNWYzZDRhNmJjZGE2YzI0ZjZkZCBweTNrCis3NDcxMCBjZWI3NTgxOTUzNzcxNmM1YWE3ZTUzZWM5N2E0OGQwNGQ3ZWYzYWMzIHJlbGVhc2UzMS1tYWludAorNzQ3MTEgNjZhMmRlMGQ0MjhlNjVkYjRlNjU3OGQwODQ0ZjAxNDlhYTRiOGU4ZiByZWxlYXNlMjYtbWFpbnQKKzc0NzEyIDZmZTlkZmIxMzljMzFjNzU0MjgwYTEzMDExMGZjNGZjNjNjMTNmZDUgcmVsZWFzZTI2LW1haW50Cis3NDcxMyAxZDFkMmRiNDU2ZDg2ZTI2N2MwNTQwZTJkZDhmNmQ1MmFhMDhhYTJiIHB5M2sKKzc0NzE0IGRlNjI3Y2ZlZWQxNDY2YzdjOTIxZWIyNGMyNjQ3ZDk3OGM5NmE5ZTMgcmVsZWFzZTMxLW1haW50Cis3NDcxNSBmZDM0ZmZjOGY4MDQyZjNlNzZiOGQyOTE4MDQzMDhkZmY1MmI4MjdjIGxlZ2FjeS10cnVuaworNzQ3MTcgOTFkYzYzMjI3MjJkZjhiMmFjOGNjMmQ1NDgxNWM5MGY5ZDhhNzk5ZSByZWxlYXNlMjYtbWFpbnQKKzc0NzE4IGZjOWEwMDc5OTc5NWM0ZDA0M2JhZmRkODMwMDM1MTI4MWZiMzBkNDYgcmVsZWFzZTI2LW1haW50Cis3NDcxOSBlMmZhMDYwNTA4ZGEwNTNjNTc0M2UyZDUxNzcyYzM5ZmE1NjkwMjI3IHJlbGVhc2UzMS1tYWludAorNzQ3MjAgZGQ2YTliYzM5OTQ2M2YwNjJlZGM4MDcxMTllZjAwNGRkNGRlMzQ0MSByZWxlYXNlMzEtbWFpbnQKKzc0NzIxIGUwNDA5ZjAzODIyZmIzMGY3ZGZhODU5ODM0OTk0YTE5MjgxMDdkYjAgbGVnYWN5LXRydW5rCis3NDcyMyA0MGZkOGZkOTZkOTZjZGExY2U3YzgyNjVkMDc1OTZmZjMwODg2NDY1IGxlZ2FjeS10cnVuaworNzQ3MjQgMzJlODVkNTBjNTJkYmNiNDNhOTcxYmZkZDg3YmEzY2Y1OTM1NTM2YiByZWxlYXNlMjYtbWFpbnQKKzc0NzI1IDBiYzc1OWY2ZGVkNWM4ZmJlYWE0ZTkwMDlhMWViMjEzZmZiOGQ4YjUgcHkzaworNzQ3MjYgZTAxNzhiOGFlYWYwNzk4ZmI2YzQzNjRiYWJmNWYzM2MzNGI4YWExNiByZWxlYXNlMzEtbWFpbnQKKzc0NzI3IDkzMWFmNjYxMWFlOWNlNDU0ZTcxYzVmZTJiZjVhYzZkMzAxNWU0MTAgbGVnYWN5LXRydW5rCis3NDcyOCA2N2RlNDJjYTBhMjZhNzA0MWJmNDI2ZmFkYTc2NmQ2NzE5ZmI5ZGY5IGxlZ2FjeS10cnVuaworNzQ3MjkgNGI2MzlmNWI3ZDNlYmVlMGEwYWVlNDFhYzgyZGRmNDVjMGQ2MDc0YSByZWxlYXNlMjYtbWFpbnQKKzc0NzMwIDZmYTk0NmQwNzVmNGFjMzQ3MDk4N2JkMDExOGIyN2JjNmEzMDI4MmMgcHkzaworNzQ3MzEgZDVmYzUxODkxOTk3ZGFlZjk4YzMwNTBhZDY1ZTVmMzM1MTJiNWVkMiByZWxlYXNlMzEtbWFpbnQKKzc0NzMyIGUxZWZjYTYxZWU0ZWQ5ZjkzNTY5MjE1NmRhZTM0ZDNiZDU3YWY3NDYgcmVsZWFzZTI2LW1haW50Cis3NDczMyA1ZGVjOGExMmU0NTVhZTk4ZTcwMmExZDkxMzlkMzcyZjdhMTMyNjZmIGxlZ2FjeS10cnVuaworNzQ3MzQgOGY2Y2YzOWM5NmRkNjIzNjAzMDEwZDM4NWRjMzYzNTY4ODQ3ZDEzOCBsZWdhY3ktdHJ1bmsKKzc0NzM1IDAwZDZjYjYyNTY2N2YzNzE0YjRhZGI3NGFhOGJmZTJiOTEyYzA4NTggcmVsZWFzZTI2LW1haW50Cis3NDczNyBhYjdmZDRiYzM4MjhmOGNlMDc2OTU4NzEzOTgyYWFlYzhiNjZkN2U1IGxlZ2FjeS10cnVuaworNzQ3MzggMjVhNjE3Y2E4M2UyMzkyNTQ3NDA3NDk0MzYzOTE0YjE2NGQ4NDIwZSBweTNrCis3NDczOSA1ZDE1Mjk2YTJhNGUxYzc1YmQ1ZWM3YzljZmQ1NDY4YWMwNmIxZThjIGxlZ2FjeS10cnVuaworNzQ3NDAgODM1ZmM4NTc3ZGM3OTBlMmVlNDVlYzUyOThhMzNmMmU4YzE5NGViMiBweTNrCis3NDc0MSA3ZjJhODc5NDM5OWExZTYwYzQwOWYzNzQ1ZTQ1YzViYzJmM2EzOTk0IHB5M2sKKzc0NzQyIDBmNmRiMDAyYjNhMWZlYzk5ODkzMmQwNmVkYTU3NmYxNGU2YzdkMmQgcmVsZWFzZTMxLW1haW50Cis3NDc0MyA5NTgwYmJiYjU1MmUxM2EwMTEwZDJjOGI2ZDFiNTJlNTFkYjYxZmE3IHB5M2sKKzc0NzQ0IDZhZmZkNmRkYTIyOWQxNDZjODYyMzg3MWFkNGY0OThjYzkyZDQ1NjkgcHkzaworNzQ3NDUgN2U2ZjYxNGE2YWQxOGMyY2YyYWNhMWJkOTVhNzRjYTE2NzcyZTZiMyBweTNrCis3NDc0NiBkNGUzYWYzNDNlMzIwYTkyOTk5OWYxMzZkZmVlMzY5ODE5MWFiOTU5IHB5M2sKKzc0NzQ3IDNmYjFjMWZiZTI2Y2FlZjRkNGQ1NDRkNDIzYWM5NjMzNzAzYWFkNTQgcmVsZWFzZTMxLW1haW50Cis3NDc0OCA2MjI1MDIxYmRjMzZiMTgwOWM0YThlNDJmMDUxM2QzNzNhOTIxNzg3IHB5M2sKKzc0NzQ5IDkyZGFhOWM0MWQ1NjFkZDAxZGRlNjQ2NmMwMjVkY2ZkYTg1ZGI4YWEgcHkzaworNzQ3NTAgZWNkMjI4NTBkMjAxY2E0YmYyNzc0MTJkNjdkMTE1OWNjOTJhMDExNyBsZWdhY3ktdHJ1bmsKKzc0NzUxIDUxYmFhZDI4ZmU3YTE0MWVkNGQ4MDE0ZmFiMTJhMzkxZDljY2NkMzUgcHkzaworNzQ3NTIgNmJmMjUzOWQzYmFhNDIxZTE5YjY4NDAxZTZkYzY2MmI0NzBkMmQ0MiByZWxlYXNlMjYtbWFpbnQKKzc0NzUzIGQ5YTY2OTA1ZjAzZTk1YzIwODgyYjdlYzRmOGEyMTE1NTRkNGVhMTAgcmVsZWFzZTMxLW1haW50Cis3NDc1NCAzOWJlM2VmODJkMjMzNmUzMjczZjBkNTJkMDYzYzMwZjFkNzc1ODQ3IGxlZ2FjeS10cnVuaworNzQ3NTUgNTExMWQzMjk5NzQxNjBjOWRjMzVkYjVhZGJhMmRlMDZiNDQxOTg3OSBweTNrCis3NDc1NiAzZGY5OTE0ZWZjODRlMzkzOGMyODRjMWFhYWM4ZGM5MzUwODJhYzU2IHJlbGVhc2UzMS1tYWludAorNzQ3NTcgMmM5ZWM0ZTdkOGMyMTBiNzcyNzZhNThhNmE4ZmI4MzYzNGYwYzJlYSBsZWdhY3ktdHJ1bmsKKzc0NzU4IGZhZDAyNTEzMjRkN2FhMTQ3MzA4ZGU0ZjQ4MTM4NWRjMDVlMzNlNGMgcmVsZWFzZTI2LW1haW50Cis3NDc1OSBmZmY1OWIwYWRkOThhNTYxNTc0ZTc2NDBmMzMxMDdkODFlZjMzMWRkIHB5M2sKKzc0NzYwIDA3ODFhY2ZkYzk0NWQ5MWViY2QzYTA5MjdkN2M4NDgzNjM2NDk1NGYgcHkzaworNzQ3NjEgOGJjNGM4Y2FjN2Q3MjJmYmI2ZGQxZDk5ZWU1YzMzOWU0MjM1NDk3NCByZWxlYXNlMzEtbWFpbnQKKzc0NzYyIDdkOWNjNGJjZDc3NjBlNTQxZmU0YmNjODQwOWI5MWZhNjgyYWQ5MWYgcHkzaworNzQ3NjMgZDBiZGIxOTMwZDQ5ZTRlMmE5MzgzOTUwOTNlYTgwNGY4MGIwMmM3MiBweTNrCis3NDc2NCBkZDAyNzkxNjY2ZTA1YjgwNGQ0N2ZjYTQxN2EwNjhkMTQ4NTY4ZTg4IHB5M2sKKzc0NzY1IDIyOTMwYWY0ZGRmNzM0ZmM5YmE1YmVmODEzYTY0NTdhY2I1YWVjZDEgcHkzaworNzQ3NjYgOTExOTQ2N2FhODRlODI4ZTM0OTc2YmFhNzFjZGRlNTU0NzM5MGY0ZiByZWxlYXNlMzEtbWFpbnQKKzc0NzY3IGYzYTMwMDgzZmQ5NjRmYzI1MjdhZDRjMGVkNTE1OTNjMmNjYTVjNmYgcmVsZWFzZTMxLW1haW50Cis3NDc2OCAzYzU3ZDI2YjQwYzQ2N2JhNjZkYWU2MjA3MDExOTIwYWNlMmI3ODRiIHJlbGVhc2UzMS1tYWludAorNzQ3NjkgNjU5NDA2NmU1MDQxNjk0MTgzNzVkZDkwODIxMTdjNDU5ZDZjODQ3MiBsZWdhY3ktdHJ1bmsKKzc0NzcwIGY0NGY0NmZlOGRhNTJlMzgwY2IxMDlhODNmYzVjZGVjYzU3YTcwODEgcmVsZWFzZTI2LW1haW50Cis3NDc3MSBkN2FlOGIwNzM5ZTQ3YWU2NGQ4NzUyMTczMzhiMWQ4ZDNhYTBhZWY1IHB5M2sKKzc0NzcyIDMxNjkyMWNjOTA0YTVkYjJlNTU5YTczNjRkN2QzMGQ1NDM2NjgzMjkgcmVsZWFzZTMxLW1haW50Cis3NDc3MyAwYzBhNmNmZDRiZTIyMGM4NTA4YWQxOWM5ZWM0Y2I2ZWM4ZGIwYjgzIGxlZ2FjeS10cnVuaworNzQ3NzQgYWFhNmI3MjRhNGZjZTQ2MTJlYzgyOGIzZDRkMDU5OWU2MjdlZTIzYiByZWxlYXNlMjYtbWFpbnQKKzc0Nzc1IDQzZGE1M2U1MDJlMTVkYzQ0YWRhM2UzZGY4N2I4NjRhM2Q0MzUzYzggcHkzaworNzQ3NzYgODM5M2E5MDIxNmIzODZjNDNkZjQyMjEwY2U1YjcxY2RhZDkwOTRkNyByZWxlYXNlMzEtbWFpbnQKKzc0Nzc3IGJiNWZjMTViMDM0Y2UzYTk0MWJhOWM4ZjY1ZDcyODY4YTIwN2FkMDMgcmVsZWFzZTMxLW1haW50Cis3NDc3OCAxYTM5YTRkZDI3N2M0OTc0N2IwMDA0Y2RiNDEwMmZkZjUwZGRlNzEzIHJlbGVhc2UyNi1tYWludAorNzQ3NzkgOWFjZTg2Mjk5YmI4YmY0YmUxNTk3MmI0NWY0MWQ5M2VhYmFmOTIzOSBsZWdhY3ktdHJ1bmsKKzc0NzgwIGU4ZDY4MWM0NDhkNzJkZGE2NGEyZjc5OGQyMmVmZTRkODFhNGJlYWYgbGVnYWN5LXRydW5rCis3NDc4MSBhZWZmMzMxOWM0MThiNDA3YmQ2Yzk3NGQyYTMwNmFhZmM5NDEyNzFlIGxlZ2FjeS10cnVuaworNzQ3ODIgNzE1ZTY5NzI1M2YyNGFjNWJiNmU1ODliOGNlZjY0ODZlNzYyNzVlZCBsZWdhY3ktdHJ1bmsKKzc0NzgzIDlmMWQ2ZDFkYmIwMDgwYzZlNTVjNzM0ZDhhODQwY2JlZjljZGNjY2IgbGVnYWN5LXRydW5rCis3NDc4NCAxYTFhZjlmYmQ4MzE3OTliMTYzNjdhZTBlNGUwYjE2NzcyMDQxYWY2IGxlZ2FjeS10cnVuaworNzQ3ODUgMjUxM2FmZjQ0NWMyYzllYzE1NjM0ODBmZDFkYjcxYTQ4MThlNmFhNCBsZWdhY3ktdHJ1bmsKKzc0Nzg2IDc2NDNlMjczMDQzNzY0ZTZlMDY0NTA0M2ExZmE2ZGU5NjU5Yzk3N2QgbGVnYWN5LXRydW5rCis3NDc4NyA5NTg0YjhlMjJmNzZmYmE4MmNmMWVmODMxMDQwYTYyNTRjNjVjY2U3IGxlZ2FjeS10cnVuaworNzQ3ODggNmQ0NWZiYzg1YmRmM2ZkYjQyMGRlNTVhMDEzZDU4YmE3NWMwNDBmYiBweTNrCis3NDc4OSA5YjJhNDJmYmQwNGI0MmRhZWE1YWJkYmMwOWZhMDRkMjhhNWI2MjVlIHJlbGVhc2UzMS1tYWludAorNzQ3OTAgYzA0YTdjMzY1NWZjMGRiN2NlNDg5YTZiYzdhMzI3NTE2OTBiYWQ4YyByZWxlYXNlMjYtbWFpbnQKKzc0NzkxIDY4NTU5NTFhZmYxOTllMjhkODUwMDVhNmJiODBmZjA3Mjc0OWYzYWIgbGVnYWN5LXRydW5rCis3NDc5MiBjZjRlMDgxNTg0NmM1ODRjOTA5YTY0ZmZmZjA3ZjQ2Zjc0NWNhMzdhIHB5M2sKKzc0NzkzIDNhZmY1OTc5MTBjNDFiOWYyYWYwYmVhNTgyMGYwMWE4NGU0MTYwNTkgbGVnYWN5LXRydW5rCis3NDc5NCA4Yzc3NzFkY2UwNDc0YTg3ZjJlNmI3YTQ1MjE1MmNhNTIyYzJkNTc4IHB5M2sKKzc0Nzk1IGQ5YjViN2RkODJhMjIyNGJkYjUyY2FhYTRjMzhhOTE3MGM5MTA1NjkgbGVnYWN5LXRydW5rCis3NDc5NiAxZjFmNmJmZDRkZmIwNDQ0N2JmYTllNGM1NTEyZDM0NGRkYmI3YjJlIHJlbGVhc2UzMS1tYWludAorNzQ3OTcgNGFiM2I1ZWFlODk3OTgyMjg0ZWViOGYyNzY0YWE5YmZkNzM3MTBlNyByZWxlYXNlMjYtbWFpbnQKKzc0Nzk4IDlhZDZkNzJiY2RhNWI1NDdiZmI1MmI1ZmUxMWM4NzVhY2YxZThlNGUgbGVnYWN5LXRydW5rCis3NDc5OSAyMWU5MDdhMzgzNmYzYzllMzc0ZTFjM2FiMTRmMmFhZmE3NTUyMjFhIGxlZ2FjeS10cnVuaworNzQ4MDAgNzg0N2I0MDliNzljMWNiNzQ1YzJiYzM3YTQ4NDQyNmU3Y2M4NmIxMiByZWxlYXNlMjYtbWFpbnQKKzc0ODAxIDRjY2NmM2NlMTVhMDljNjI3ZGE2ZDQzYTUwNzkxYjVlZjQ5MmQzOTAgcmVsZWFzZTI2LW1haW50Cis3NDgwMiBkYTg1M2U5ODNmMDgyNGYzZmI1YzdjOTZmMWUzYjAxM2EzYjk5MjNlIHB5M2sKKzc0ODAzIDJkNTc1ZjE2YmNlY2Q5ZjZlMDgzNzg0YjMzN2JjMjNhZDJkZTM3MTUgcmVsZWFzZTMxLW1haW50Cis3NDgwNCA4NTBkYWZkNGEyNDUzZDUyNDYxMDE4MzE3N2U5NmJmYmQ3ZWI0M2JiIHB5M2sKKzc0ODA1IDRlN2Y2YmM4MTBiMzYwZDllODU3NDgzZTg0M2NjMmRhMzRiYzhlODcgcmVsZWFzZTMxLW1haW50Cis3NDgwNiBiZDQyMDM4OGU2YjFkYTE4OTg1YTg3NDM2MDY4ZjM4YjJkZGE2YjcwIGxlZ2FjeS10cnVuaworNzQ4MDcgYTZkZjA3NGQyZTA5M2ZiYjBiMmE1YjIzYjhiNTZjZmEyNmJiZWU4NSByZWxlYXNlMjYtbWFpbnQKKzc0ODA4IDk0NjI0MDRkZjRlMTBjZmRhMWViZmRmYzZhZmFjNjgwNGU0Mzc3NzkgcHkzaworNzQ4MDkgYWI0YTg3ZmVmMWFlNmU0YTg0ZTdkODA0Y2NmOTFkMmNjYzNkY2JhOSByZWxlYXNlMzEtbWFpbnQKKzc0ODEwIGEzM2Y5NmI0M2YyNGFjYjIxNjNjNmM1Y2Y2MzVhNWI3NDI5NWQ0MjcgcHkzaworNzQ4MTEgNDEwMmI1ZjJhMmYxZTNjZTY0ZmQwYmM2NTdmODA3YmJmYmMwYWJmZSBsZWdhY3ktdHJ1bmsKKzc0ODEyIDg1MTllMjhiMjg0Zjc5NGFiNmY2MjA2ZGI3YWFjMTFkN2QzNmM0MTAgbGVnYWN5LXRydW5rCis3NDgxMyBhMmJhYjJkMjM3NDZiNTUyYzlmOGY4YmMyY2U3NTA4YTI1NzJhMTUxIHB5M2sKKzc0ODE0IDU2MGMwNTRhMDFhYTJmZmUxMmZmY2ZiYjdhMzNkZDA3M2Y0NzQ4MTMgcmVsZWFzZTMxLW1haW50Cis3NDgxNSA3ZDRjM2MwODNmMzYxOTdmMmYzOGRlMzQ2MWVkYTU4YmFlY2EwMDYyIHB5M2sKKzc0ODE2IDg4NWRhMTQ2ZmVhNWEzZGZhMzVkOWI4NTJlYjQ2OTc2OTVmYjdjMzAgcmVsZWFzZTMxLW1haW50Cis3NDgxNyA1MDdiYTk3YTJlZWVmMzM5NDU1Y2JlYzY5N2M4MDZiOTZiN2I4ZTcyIGxlZ2FjeS10cnVuaworNzQ4MTggYmI2YWRlNTFhMGI2MjM4ZDEzNWM0YTYwYmI2MmJiMjRiMTUxMmFkNSBsZWdhY3ktdHJ1bmsKKzc0ODE5IDJlYmU4YzgxYWZmMDY5MjhjN2JlYTM4NDdhM2E3NGQzYzBmOTkyZWUgbGVnYWN5LXRydW5rCis3NDgyMCBjMmRlMzI4NjZkMGUzZDY0MGFiZTkyYjM0N2NhODU0MTEzOTFkNDdjIGxlZ2FjeS10cnVuaworNzQ4MjEgYzAxN2E0NTBmNGE1NzY4ZmI1MDYzMWE1MTk0MTAzM2MyNDQyZjE1ZCBweTNrCis3NDgyMiBkNGMyN2RhNDZkY2EwZjc5OWJhNDVlNGMwZThmYjRmNTYxNmNmZjFjIGxlZ2FjeS10cnVuaworNzQ4MjMgNzQyY2U1OGEzMTcxYmMxMmVlNDYwMzUwNmFlOWVkYzE2ZTlkNDczOSBsZWdhY3ktdHJ1bmsKKzc0ODI0IDNlMTkzZDBiMWFiYTg5ZDRiZGFhZDRjMzYyMGY4NzI0NTZmODc5NzMgbGVnYWN5LXRydW5rCis3NDgyNSAzMzg1ZTYxODIxMTI5NDlhNzJkNGI0OTVhYmIwN2I3MGZiYTRkMDRlIGxlZ2FjeS10cnVuaworNzQ4MjYgNGU2MWQ3YmQxYjM2NDZiYTNmYTI5MDllNGMxNjJlMTkzMzlkZGM2ZiBweTNrCis3NDgyNyA5NmI2NDU3NTJjMzM0NzViMzk2NmRjNTI1MTJiZWRmODMyYjZhNjBlIHJlbGVhc2UyNi1tYWludAorNzQ4MjggMjZkZjBiODU2YmNiYzQ4MDNmNmEwNTdkMzE4ZDI0YWY0NTA3MzdjNiBweTNrCis3NDgyOSA0Y2JkYWI2MDFiODdmZjM4YjRlZmQyYmMzOGU2MDI0NDBkNGVkODQzIHB5M2sKKzc0ODMwIDRiNjRkYjM2ZjA5YjhmZGRjMjYyNjZmMDdhNzU0ODk3Njc0OWM4YzAgcHkzaworNzQ4MzEgMzFjMjM2YzUzYjAyNDU3ZTRmOWNhMTdmYjhkZWRkNGQ1YmIzOWI3NSBweTNrCis3NDgzMiBmMTM5MTQ0MmJkMGI1ZDg4MzM3YTBkNWZkMDE2NTBiMmZkMDdiZGIwIGxlZ2FjeS10cnVuaworNzQ4MzMgOWIwMDNiYmNhNWRiZjVjODJjNTU1YWQ1YjJlOTljMjA2ZjUyYzkxYSBweTNrCis3NDgzNCBkODA3MjIwNmZkYzYxZWE2OTI5YjY1MzBmOTkxZTM1ZTMwMWViZTA2IHB5M2sKKzc0ODM1IGI2ZTM5ZWVhMWJiZjZlZjNmYjMxNTVjZjBhNGQ1MTNjZDdjN2U5YTAgcHkzaworNzQ4MzYgZmE5MTI3MGI2MDg3YjBmZGYzOTNjYzA4NWJlOGRjOGU2MDk5YjcwZiByZWxlYXNlMzEtbWFpbnQKKzc0ODM3IGJlNGQ0MjAwOWY3ZTViY2I3YmVlZWIzNDAyM2U2NmMwMzMwNTQ4ODAgcmVsZWFzZTMxLW1haW50Cis3NDgzOCAzMjQ0OGY4YTZjNjM2ZjM5YTYxNzk4NWQxMzdhNTZhZGI5YWMzNDc4IGxlZ2FjeS10cnVuaworNzQ4MzkgN2EzZWQxYjQzNDEwOTc1M2E1N2RlODJkN2E5YzMzYjI3ZTY5NGQ3OCBsZWdhY3ktdHJ1bmsKKzc0ODQwIDMzNGM2MGY1MTI1OTRjODM3NmZjMzBmNTI5ZTAzOTdhMTg4MGU2ZDIgcHkzaworNzQ4NDEgYjBkMDNmYTA3M2VjNWQxNjdhMDE2NDdmZmYzNjI1Mzk2MmQxNzg0ZiBsZWdhY3ktdHJ1bmsKKzc0ODQyIDFhZDlmMmJkYTIwYTI2Yzc0MzI2MWUzYWEwMmVlZWFiMDc1ODNiNzUgcmVsZWFzZTI2LW1haW50Cis3NDg0MyAzYWNkMzFlYWRiYjg4MDcwNDVjZGEwOTZiN2Y0MTQxNjRjNmEzZDExIGxlZ2FjeS10cnVuaworNzQ4NDQgNjYxYzhhOTM4OTJmZjdjMTBkZGUwMWYwZDhhNWViNjFlY2NmZWM0MCByZWxlYXNlMjYtbWFpbnQKKzc0ODQ1IDBmMDlkMzhmODUyZTg0N2E4NmE1N2JkMWMyZWJmODQyOTk4NDI2MzMgbGVnYWN5LXRydW5rCis3NDg0NiA3OGZmOWE3NGNiNGU5YjdkYWExNjExNmVkMDY2MDY2MWJjMzA4YWMwIHB5M2sKKzc0ODQ3IDFiMTg5NjdmYmQ0MDgxMDY5MWVhNTgyOGM4ZTAxN2QxOTQ0MmJhMDQgcmVsZWFzZTMxLW1haW50Cis3NDg0OCA4YWIzMDQwMzQwMjFhNTc3MGY3MzBmMTE3ZThmNmU4NTc1ZmEwZmY1IHJlbGVhc2UyNi1tYWludAorNzQ4NDkgZmFiOTllOGQyOGMzMjc1YmVkMjUzMDBkNmJiZjlkM2Q4YjRkYzM4ZCBsZWdhY3ktdHJ1bmsKKzc0ODUwIGFlMWIxY2Y0N2MwY2ExZjMzNWVjN2FjMzg2M2VkMGYwOTgxMmZmNjkgcmVsZWFzZTI2LW1haW50Cis3NDg1MSAxZTA5ZGM2OGM4ZjM2MzhiZjZjYmQ4MzE1NjVmZjIwYmFkNGQ0ZWJjIHB5M2sKKzc0ODUyIDJlOTg1OGMwZDM2NGQxY2U0YmRmMDAyOGJhNGVhNjg2MWRjOTRmZTEgcmVsZWFzZTMxLW1haW50Cis3NDg1MyBhMmNiYjk0MjFhMTE0M2FjNWFmMDMyNzg1MjVkN2QxNjNhODdjZDUyIGxlZ2FjeS10cnVuaworNzQ4NTQgOTA2OWU1MmMwYmVkYzI1MzMyZjAyMjk5NTNjODVjNTBhZDM2M2QxMiByZWxlYXNlMjYtbWFpbnQKKzc0ODU1IGM4Y2I5ZWYwY2QwYTA0ZDliZDAwZDAxMGM2YTk0YmY4OTYyODE1MTcgcHkzaworNzQ4NTYgNDY2MjViY2EwY2ZiNTZmNDllZmVjYmRiODllOTM2MWE0NDEzYzg1ZiBweTNrCis3NDg1NyA3NmUwOGI5MWQ5OGUwYWRiNzQwODdjNmY3ZTVkYTkwZTJmZmYxOGI0IHJlbGVhc2UzMS1tYWludAorNzQ4NTggY2RhZWIyNTFkNDg4YmUzNjQ1MTQzZDQ3NmZlOTMwYTAwMzM2OTFlMCBweTNrCis3NDg1OSAxNzNiZWQwZTA0YzQ4OTY1MmU1NzJmYTllMDNlY2RiZWQ0YjgyNjQ3IHJlbGVhc2UzMS1tYWludAorNzQ4NjAgNzdiOTZhNTQyNGEyYzY1MmY3NWRmYTNlMzdiNjc0NzNiODgyZDMxOCBsZWdhY3ktdHJ1bmsKKzc0ODYxIDdjNGQ1Mjg2MDEzMWI2ZGE5Y2JlNDllMWIxZGI5OGZmNzFhYzBiY2UgbGVnYWN5LXRydW5rCis3NDg2MiA5YTEwOTcxNDAzYTVhZDBkNDljMTdmYzcxMTNmMjQ5NWZjOGM3Y2Y4IGxlZ2FjeS10cnVuaworNzQ4NjMgN2Y3MjYxMTViYTI5YTBlNjA0NjE0ODMwMjhhMjU1ZjEyYTA2OGUwOCBsZWdhY3ktdHJ1bmsKKzc0ODY0IDE3MmIyZDM2ZGE3N2NkMjgzMTM2ODJlNmYyZmQ5ZDFjZTg0ZGZjZGEgcHkzaworNzQ4NjUgNDJmODgwODNkZGJkZjNlMThmNTFiMzA0ZjAxYmU5MzY4ZjM4OGY2OSBsZWdhY3ktdHJ1bmsKKzc0ODY4IDVmZWQ1ZThlYTljYzMzMzI2N2ZjN2Q2ODgyYmI0NzVlZDk0OWYyYTggbGVnYWN5LXRydW5rCis3NDg2OSAzOGE1MmI2NzI0MjkyNjAzMGQwYmQ0OTE0Mzg3OTA0ZDc1MDc1NWMyIGxlZ2FjeS10cnVuaworNzQ4NzAgMGZmMzdlMjAwMjkyYzkzNmJmNjk0NGE0YWM5YmNkMDVkOTRmM2Q1OCByZWxlYXNlMjYtbWFpbnQKKzc0ODcxIDEyZjE0NWQ3NTUxM2ViOTg2YWE3OGYwNDkzNjEzN2JlNzY2OWQ4MzcgcHkzaworNzQ4NzIgYTk4MDlmM2IxNjRmZmE2ZjBkOGVmMzBmY2E2MThkMjAyODNjMjViMSByZWxlYXNlMzEtbWFpbnQKKzc0ODczIDhjM2IyZGRhNDcwMzYwZTUyMjUxZDM2NWZlMTc0YjYzMGU4YjliZjQgbGVnYWN5LXRydW5rCis3NDg3NCBkYzkyMmE4OWNjZjEwYzM4ZmQ2ZGE1YTBkYmFkN2I0MDAyOTRlYjNlIHJlbGVhc2UyNi1tYWludAorNzQ4NzUgMGE1ODBkYzdhZjEzNzY0MDQ1NTNmZjc1M2YxNjBhNWE3NzY1MTU1ZSBweTNrCis3NDg3NiA2ZjRiODUyYjgyZjE3NTA3YzU5YWVhYWRkMjk5N2I1NmNlNDc5Zjg1IGxlZ2FjeS10cnVuaworNzQ4NzcgOWFjYjhlYjcyYTkyZmE1ZjUzMTg3YjYyZjlhMzI5OWFkZWIxZTBiMiBsZWdhY3ktdHJ1bmsKKzc0ODc4IGNhOTIwYzE2YjIwNTdlOGU0NTUyMTExMDIzOTZiMjkzZGRhZDIyZTAgbGVnYWN5LXRydW5rCis3NDg3OSBlMGQ1YzBjMzgwOGNlMThkMGY5MTJkYTEzZWQwN2Y3MjE0ZmRlNzMwIHB5M2sKKzc0ODgwIGEyN2FiZDM1M2VkMWNhMTM0Yzg5NzNjYzZlNGQ0YWMwZGE5NWIwY2UgcmVsZWFzZTMxLW1haW50Cis3NDg4MSBiMWI2MTVhOTExZjAzMWYwYmE0ZDNjZDk5OThiMzY4ZmY2MThiZDU2IHB5M2sKKzc0ODgyIGU0OTc0ZTk1ZmE2NDllZWY2ODVmZTI4MDI1Y2RhZmU3OGY5MTgzYTcgcHkzaworNzQ4ODMgYjM5OGFmZWZkMzY5NjdhMmJmYjFmOGNlOTFiOWJlODAxZDY2N2M3ZCBweTNrCis3NDg4NCBiYTIyOGU1YzNkYWY3OTZjODY3ODgwOWQ2MWZiZTFjMzY2ZTZmNmJlIHB5M2sKKzc0ODg1IDljZWViNjAyZGRhM2I5YjZlMjY0Njk5NmFkNmM3MTIxZGVhMDFhMTIgcHkzaworNzQ4ODYgMGU0NGRjYzBiMjBkMzlkNzE5M2M2NTNhZjIwODQxNWNlMTM3ZGY2YyBsZWdhY3ktdHJ1bmsKKzc0ODg3IDJlYTFmYzI2ODU0MjUyYzdjZDIyM2E5N2EzOGEzMWQ2NjQwYTllZWQgcmVsZWFzZTI2LW1haW50Cis3NDg4OCBkM2VlNzM4ZmRjZGIxN2NmYzM2ZDRiMjk0ZWM5Y2JkMTA4NWY4MGRiIHB5M2sKKzc0ODg5IDA3MmUzZTMwYjUwY2MyMWRiMjJjZjM1OTI3N2U3M2YxODI3MjllMjUgcHkzaworNzQ4OTAgNTQ3ZDQxYjFkZTk3MzgxYmU1MzEyZmYyY2M2MmI2YWViZmRjOWM5MiByZWxlYXNlMzEtbWFpbnQKKzc0ODkxIDFjNTQ2Y2YzZWIxMGQ2ZDZlY2M0MzIxM2Q2YTRkODI0NmE3MjEyMjMgcHkzaworNzQ4OTIgZDYwMWZlMzdmYzU0Y2UwMThmMzc2YjQzYmM4N2EyZjYwYjQwOGYyYyBweTNrCis3NDg5MyBmZDJmNGFlOTNkMDEyN2VkZmM1OTM2OTk4ODAxN2YxZGQ3NTczMjFmIHB5M2sKKzc0ODk0IGI2M2M3MTgwNjE4ZTM0OGE0MjdjZGM1MjJlYTk5YTk0NmFlNzNlY2QgcHkzaworNzQ4OTUgOTkzZWUzOWU4YmNmZWZhOWRhNWUwOTVjN2RiZGM2YjU4NGFkMjRlYSBweTNrCis3NDg5NiBiYWU5ZjQ4MjNiOGUxMWI1NDY0ODQ3NzJlNzVlYmUzZGY1M2M5ZWY5IGxlZ2FjeS10cnVuaworNzQ4OTcgNWExZTg3OTgzMmZlMzNjNzcxNjU2YWI2MTAyOWZiMDBmZTAwNDMwZiBweTNrCis3NDg5OCA5ODE3OTE1ZWJkZWJjNTFhODE5Yzk0YjU3MDBkYzQxNTc0MmI5NmNhIHJlbGVhc2UzMS1tYWludAorNzQ4OTkgZGUzMzU3YzI2MGI2MDdjYWNmMzZlNzk1NWU1MWYwMzVhYWViNGQ0ZiByZWxlYXNlMzEtbWFpbnQKKzc0OTAwIGRhMDRiMTUyYTZmZTNmNjZmYjk0NTM4Y2Y4ZjU0NGFiOWI3Y2JmNmYgcHkzaworNzQ5MDEgYjMyNmU3ZDY2NDEzNGE4M2VkZmFlMGQ3YzZkNDRlNDAyMmRlNWE1OCBsZWdhY3ktdHJ1bmsKKzc0OTAyIDdhNWMxMTliODY2OTAyZjYyMDYyY2ZhMzIzMDZmNmM5ZmZkZTI3ZDcgcmVsZWFzZTI2LW1haW50Cis3NDkwMyA4NGYxYzk1YjRlOTc0OGY5YTU0OTkzY2E2NjllZjJlZTU3ZDg4YTIzIGxlZ2FjeS10cnVuaworNzQ5MDQgNmZjYTM1MzUyZjdiNzgxNjRiZjJiMzM4YzIxNjFkNWY1NmM4ZTY5YyByZWxlYXNlMjYtbWFpbnQKKzc0OTA1IDRmMTVhMTMxYWIwNzE5NWNjY2M4MzUzODczY2Q2OTdjNjJjMGEwMDAgcHkzaworNzQ5MDYgYzc2Zjg0MzgzOGE1ZmEwNTc1ZGRmYjQ4MTc5YzhiNDJkM2IzYTYyOCBweTNrCis3NDkwNyAzMjg5ZmZjMDVjYzc4NDQ5NDUxM2UyZWU3ZTYwYWZhMDUyMTU5M2EzIHB5M2sKKzc0OTA4IGIzNWRkMWI2MjQ4ZTM5Mzk2ODU5YjkwNDA5OTRhYjJkMjU0ZWJiMGEgbGVnYWN5LXRydW5rCis3NDkwOSBhNDQyYzI1MDRhNTdlMWI1YjcxN2I3ODg1NjFmMGIyNjlmMzllZmFhIHJlbGVhc2UzMS1tYWludAorNzQ5MTAgMzdlOTYyNDZiZGExYzY0OTI2OTIxYmUyMzI1MjI1MDZmMmI2YzQ4NyBweTNrCis3NDkxMSBkYTgxODYxNjg0ZTg5M2E2NDRmNzNjNzE1MDkyZDgwODA3OGY5MmMzIHJlbGVhc2UzMS1tYWludAorNzQ5MTIgMWQyZTZjNDQxYTUzZjAxNWY4NjkxMmIzZDIwNGQ0OTYwYmE4ZjVhMSBsZWdhY3ktdHJ1bmsKKzc0OTEzIDc3ZTA3YWY2Zjg3YTNjODQ1NTgxNDI4NDAwNGI1NWNiMmJjMzg3ZjUgbGVnYWN5LXRydW5rCis3NDkxNCBkNGUwMzZjNmM2MGQ0YTQwMGRmNjg2MmJlMGIxZmZlMmU0ZTMzMWM2IHB5M2sKKzc0OTE1IDg1ZWYxYzA0ZDhkZGY1Y2VhOGFhOTZmNzcwYzEyMGQ1M2Y3ZWQ3NWMgcmVsZWFzZTI2LW1haW50Cis3NDkxNiA1MTc0OGRmY2I0NDRjNzAwNDRlNTRiOTEwZjljYjMxNThiNDcyNmQzIHJlbGVhc2UzMS1tYWludAorNzQ5MTcgOTkzMWUxNzdkYTgxMzhlYjA5YjgyOGJiOWI0ZGE4ZGE1MDFiZTU4NCBsZWdhY3ktdHJ1bmsKKzc0OTE4IDM3NTM4YjU1MGY2ODVhZjM4MWMzNGFlMzY5NWYwYWJiMGE2YzQwNjQgcHkzaworNzQ5MTkgZmQxODc3NDUzMDYwNjI1MjczN2QzOTRiYzU3YjI1MGZiYTFkYzE2YyByZWxlYXNlMjYtbWFpbnQKKzc0OTIwIGQxZDNhMDdhMGVkN2Y0OWYwZjYxMTNlMDJlNmZmM2QwOGM0MjA4MTEgcmVsZWFzZTMxLW1haW50Cis3NDkyMSAzYzgzYTNjYWNkNzc5ODViZTgzNTVkM2NiZWVhZmRkZGMwMDAxNWFlIGxlZ2FjeS10cnVuaworNzQ5MjIgMDQzZmRkYTcwNmEzNzZmY2ZjMzI1Mzg1OTI4MzI5MjA5ZDhkNDIyMiBweTNrCis3NDkyMyA4MjJhMjlmNzY2MGI1MTdmZWQ2N2RjMDRiNWEwZDg3YmU2ODQzNjdkIHJlbGVhc2UzMS1tYWludAorNzQ5MjQgYjRjYTU5NDg0OTE0M2Q2NTYzZWM3MTViM2Q5OWM1NGIxNjRmZWNhNSByZWxlYXNlMjYtbWFpbnQKKzc0OTI1IGYyNTU1YWQ1ZmUwOWVhMDAwYzYwYWFjMjlkYjViNDMyMmM2YWFlMmUgbGVnYWN5LXRydW5rCis3NDkyNiAyMjExYWQzZTdiYmVkNGI5Mzg2OGI4NWQ3YmFmYWY4NDU3ZTdkNzJjIHJlbGVhc2UyNi1tYWludAorNzQ5MjcgYjBlNTEwNWZmOTdiYjljYzRmMmFiOWEyOWY2ZmY1MTQ0ZWFhOWQ4NiBweTNrCis3NDkyOCA3YjJiZDM5YjIxY2QxYzZiYWQ1OWQyMDRiMTY5ZmJkYjJhOTJiNjRhIHJlbGVhc2UzMS1tYWludAorNzQ5MjkgZjY0YzBlYjhjYzYyMDlmNGMyNGJmZjVjMzNmYmFkMjBkNzgzNjk0MiBsZWdhY3ktdHJ1bmsKKzc0OTMwIGZkYTI5MmYzMTYzMjQyMmM2NWRkYzFlZTcyNTQyMzM0ZjY0M2JmNDMgbGVnYWN5LXRydW5rCis3NDkzMSBmMTJjZTdhZGJkMzAwMDkwZDQyYjhhMzIxM2ZjNjRlZjA0ODU2N2FiIHB5M2sKKzc0OTMyIDYxNmE2NjljOTAyM2ZlNzQ3M2E3NWIwOTc5M2MyNzU5ZTZhOWQ0YjkgcHkzaworNzQ5MzMgYjRiYjRiYjg2ODkyODk5NjUzYzljMTYyNzUwMjIxZDhjOTg3YTlmOCBsZWdhY3ktdHJ1bmsKKzc0OTM0IGRlNjU5MDg5NzNkMDI0MzkxZWQ5YzFlZGNlZmY5ZDQzNzMyYjZiNzEgcHkzaworNzQ5MzUgMWI3YmRhZTAyMTc5NDcwZWViMjJiMTg3NDFlZjY1MzdmMmFkMzM3ZCBweTNrCis3NDkzNiBjYzMyOWJiMTlkYTVmMWE5ZmMzODUzNjI4Y2ZjYTFlNDYzZWFlYTE1IGxlZ2FjeS10cnVuaworNzQ5MzcgMjQzZmFmMGY1ZjVlNDMxMDM1ZWI0MzI0ZDRlYjZkMjBiYzgyY2M2NSBsZWdhY3ktdHJ1bmsKKzc0OTM4IGEyYjJjYzBmYTdhZDRkMGY0OTRhNDAwZWZkMWYxYmU2ODc0NGEyMDQgcHkzaworNzQ5MzkgY2Y3NWMwZDJlM2M3NmIxMmQ4OTNjNjk0ZjliZjFhMTUwOWFiYWNkMSBweTNrCis3NDk0MCBjNWIxNTAwMTcyZjg5Y2Y3NTVhMjEzM2EyMjM4MDY0MDA1MTNmMDFjIHB5M2sKKzc0OTQxIDgzMTUyNWYxNWM1NzAyOTEyMmExMmFhM2NkNjRjYjFkMjRiZmQ5NWEgcHkzaworNzQ5NDIgMDc1MjEzOWYzZGExZDNhY2U3MjdmMTBjOTE5ZGY0ZjFkNzAwNDAyYiBweTNrCis3NDk0MyA2YTI3OGU0ZDlmNjE4ZGIyZDJiYjU3NDhlZDU2NTEzMzI3MDQxY2FmIGxlZ2FjeS10cnVuaworNzQ5NDQgMzBjYzRmMDczMjkyZWVhMjZkMWYxMzE1ZmIxMTQzNjE0MWVkYjViYyBweTNrCis3NDk0NSA1OGJhODVjMGQ0YjBiMGZlOWEwZjgyYTgwYzlmNTg2ZGM3YmI5YjUwIHJlbGVhc2UyNi1tYWludAorNzQ5NDYgNDUxNDVhZWI2MzMxMGIyMzIyM2YzZGMyMjQ0ZTViY2VhYjVlZjYyOSBsZWdhY3ktdHJ1bmsKKzc0OTQ3IDAwMDcwMjRlOWUyMzQ4ZTc4MzU3ZjlmOGU1Njc4ZTQ2ZTU2YzFhM2UgcmVsZWFzZTI2LW1haW50Cis3NDk0OCA0YzczNDliOWQxNTlhN2FkYTM1MDFlYmMxOTFhODgxZDZkYzRhM2VlIGxlZ2FjeS10cnVuaworNzQ5NDkgMWViNDI0MjU3MzQ1Y2RiNzZiZWJjMTQ5MzZkMzQxNzdkMWQ5NWY2YyBweTNrCis3NDk1MCAxYjE4MzZjZmNmMjYyYTkwODE4OWFkNGM1MjllYTZhNDY3MTdiYzk2IHJlbGVhc2UyNi1tYWludAorNzQ5NTEgODBhMzhmODkzYjdmM2YwOGU2NDkyNzM5OGRmNWUyZGVkNDlhN2ZiYiByZWxlYXNlMzEtbWFpbnQKKzc0OTUyIGEwOWRhNTZlNDc5NjllZmFlMTNiYWRlOTgzZWQwNTk4NDFiZjRlMzkgbGVnYWN5LXRydW5rCis3NDk1MyAzOWI0NjMwNzk3ZmFjZTdmNGMwNGFhYTc4ZDcwZGJhYzIzY2FhZmI1IGxlZ2FjeS10cnVuaworNzQ5NTQgNjc5MWMyYjFhN2RjOTg4ZGYxNjBhMDgyNmY4Y2IzYzYwNDZkNDNkMyBsZWdhY3ktdHJ1bmsKKzc0OTU1IDQxNmI2NDU1MDdkMGE4NDM5ODlkZmE2NTJiYmFkOGRiYTFkZDE2MjcgbGVnYWN5LXRydW5rCis3NDk1NiA4Y2NjMjNhZmVhM2QxODk2OTk4ZjJjMjNkOTJhNTgwNjJkMWI0ZDBhIHB5M2sKKzc0OTU3IGVhNjk3Y2RlNjg4MjM0ZjdiMmJjNWUwZmQ1MjBkNzAyYTcyZWUwM2QgcmVsZWFzZTMxLW1haW50Cis3NDk1OCBmNTRkMzFlNWZkNGQ2ZjAwYmQ5NTljMWE0ZGNiN2JmNjRlZjI0MjY0IGxlZ2FjeS10cnVuaworNzQ5NTkgMmM1YTc3NTBiNzFkODIxZDA5MDE0ZTM5Y2ZmMjJhZWMwNjExZTdmZiByZWxlYXNlMjYtbWFpbnQKKzc0OTYwIGJkODRmNDJjMzYzMzk1OGI5ZDUyY2ExM2EzMmY1M2NlYWY4YTE1ZWUgcHkzaworNzQ5NjEgNTIyYmUzNmIyOWNkMjE0ODFiOGRiMjU2NWM2MDRjOWY1Yjk0NWRlMyByZWxlYXNlMzEtbWFpbnQKKzc0OTYyIDJkZGRkYzY0MWE5ODczZjAyZmE5ZjgzZjFlNmZhMjJmN2VkMmUwY2IgbGVnYWN5LXRydW5rCis3NDk2MyAyNzE3ZDg1YWJhMmU2YmMzZTczMDkxNTZlYTMzMzEwYzZhMGQxNTgzIHJlbGVhc2UyNi1tYWludAorNzQ5NjQgZTU2MWYxMGM3YjMxMTkyOGJlNzYwOTFiYWUyNmUwM2NiY2U1YzI1NyBsZWdhY3ktdHJ1bmsKKzc0OTY1IGQxMzE5NTY1MzNiZjFjZDljYTg4MzdlMTZmMWZlNTQxYjRlMTMyZTUgcmVsZWFzZTI2LW1haW50Cis3NDk2NiA2OWVlMTUwMWIxMDI2OWMzZjdlZDMxYTAzOTJjYjE4MzlhN2FmZjg1IGxlZ2FjeS10cnVuaworNzQ5NjcgNDM2Y2E3NzVmMjZjYWE4ODQ5ZTRmOWJkZjdiOTIwMzNhNzFhZmQ4YiByZWxlYXNlMjYtbWFpbnQKKzc0OTY4IDIyNTQ4YzdlYWYzNzViZDc2ZTNjNzA1ZjEwYTBkM2UxNGM5ZWQ5ODAgcHkzaworNzQ5NjkgYjNkMjVlNmY2NmYxMmRlNTY0OTc0NTZjNWNhMjNiYWQ0MzE5YzliZiByZWxlYXNlMzEtbWFpbnQKKzc0OTcwIGIwYTJmYmEwMDQ1ODYxMTkwOGE4ZGJiYzZhODJkMzFmMGRiNzIxMmEgbGVnYWN5LXRydW5rCis3NDk3MSAxYzUwZGMyMTMzMTJkYzY0NTczMzc5MzVkMjc5NWQ5ZmRmM2I2YWRjIHB5M2sKKzc0OTcyIGQ4YzI0OGE1OTMxMDUwYTFmOTc1YzNmZjliNzY0OTgyZjc0MzA4OWQgbGVnYWN5LXRydW5rCis3NDk3MyA5ODEwNGFiODU5ZmE5NjdiNWFiNGI1YWM5ZGU0ZDkwYjgxYTk4YjVkIHJlbGVhc2UyNi1tYWludAorNzQ5NzQgODA2YzYzNjM4NWZjY2RiYWJiNTg2ODgxNGQxYWQyMjg0YmMzZTE3NCBweTNrCis3NDk3NSA3ZTM5ODVmYWY5YThhY2ZlMDI3YjBkOGI4OTNlYWE3ODBhMzkxYjdmIHJlbGVhc2UzMS1tYWludAorNzQ5NzYgN2EzZmRkOTNiNTY2NGRhMjUxNGZmYjNhNDk1YzVkMTAxZDlkMjJiMyByZWxlYXNlMjYtbWFpbnQKKzc0OTc3IDFkYjZlZTlkN2JlN2ExZDZjNTMzYWEwN2JhMjViMDk4NWM2ZTdmNWMgcmVsZWFzZTI2LW1haW50Cis3NDk3OCBkYjk3YzA0MmNjMWVkNWI5NWRhODg0NGEzOTUwN2U0Y2NlMTMyOGRiIGxlZ2FjeS10cnVuaworNzQ5NzkgY2IzNDI4YjFmNGFmMjliMjViNDhkMjk3NjU1YWUyZWE4NDBiY2I3YSBweTNrCis3NDk4MCAzMzkzZmZjMGRlNDRlNmEzY2JjYmJkMmNhNzNkNzk0YjVmYTNmNWM2IHJlbGVhc2UzMS1tYWludAorNzQ5ODEgOTIzNDMwNWQzNzQwMzg3YTczMjZkMzQ5YTQ3ZTM1NjEwODkwNzIyOSBsZWdhY3ktdHJ1bmsKKzc0OTgyIDZkOGI1NGIyMWI4NzdlZmZjY2IyYjE1NTQyOTQ4NGIxYzM5MmQ3ZTUgcmVsZWFzZTI2LW1haW50Cis3NDk4MyAyNzNjMjM0ODAwYzE4NDFkMzBiYmU3YjY0ODUxYjdkMGI3YjhjMTBhIHJlbGVhc2UyNi1tYWludAorNzQ5ODQgY2MzZDhhZmY0NTk1NjBjYTQ0Zjg4NTUzMWUzZTc1YTIzN2RlMGE2MyBsZWdhY3ktdHJ1bmsKKzc0OTg1IGM1OTQ5ZTEyYzY5MjllZDhkYjYxYjRmNTBhZWRkNmVjNDdlMmM4ZDQgcmVsZWFzZTI2LW1haW50Cis3NDk4NiA5YzkxNjViZDI5M2FlMjQ5ODY2MWJjNzA1NjlmY2EwYTI1NjE5OTdkIHB5M2sKKzc0OTg3IGM2M2Y4OTIzZTI0ZjY4YjZlZjNiZWEyZDVlNTgwMjExN2Y0YmY5OTIgcmVsZWFzZTMxLW1haW50Cis3NDk4OCAyZGY4YmVkZWM2ZDMzMzhjMzdkZjc2MzBjNTViOTg3ZmUzZWYzZDljIGxlZ2FjeS10cnVuaworNzQ5ODkgYTljZTE1ODlkNjk0ZDI5ODY1NTliNWJkZGU5NzU3NTA4OWNmNmI0YiByZWxlYXNlMjYtbWFpbnQKKzc0OTkwIDdjNDM0Njg3YjQyOTM5NmUxN2FhNWUyMTFkYzJiYjkzNzZkMTYyYjMgcHkzaworNzQ5OTEgNDAwOGEwMTM3ZGU3YjBkNjgwMjFhYWU4ODQ2N2JlODFlNzI1ZWEwOSByZWxlYXNlMzEtbWFpbnQKKzc0OTkyIGQ2MjdjNTg5MmZkNTQ4ZWY0NjNiZjUxMDMxYTNjNzVlMTI1MzBjYWYgbGVnYWN5LXRydW5rCis3NDk5MyA1Yzg3MDBjYzlkMTZlZDI2Yjk0YzRmYWU1YmYxM2Q5NzAwZTQ2MmE0IHJlbGVhc2UyNi1tYWludAorNzQ5OTQgN2E3NjQyYWIxMWIzOTI3Y2QyMmE0N2VmOWUzMjJmOTNhY2M5Zjc0YSBsZWdhY3ktdHJ1bmsKKzc0OTk1IDYyN2IzNDlkZjBlOGUyNzkxN2VjNGZlN2UxMzQ1MDk3YzA2MjQxZjMgcmVsZWFzZTI2LW1haW50Cis3NDk5NiAwMThmMmVhZTI1MjZmZTI0ZGRkNDlkM2Q0MGYxYjZmODdiNjFlYjE0IHB5M2sKKzc0OTk3IGY4ZTY5NmU0Y2ZmMWQ4MDRiNGNlNmEwNjUyNzk3Y2MzMGRlZGJiNzUgbGVnYWN5LXRydW5rCis3NDk5OCBhZjdhMTIwMGZiM2YzNWYwMWQ0MjBmYWY3NWIzZjViMzZlNTAyMTNkIHJlbGVhc2UyNi1tYWludAorNzQ5OTkgNGI4M2VhNmZjNWJkZTIxNjI3MzNlMTU5NzU3ZDA0NGNjZGE3MmUxYiBweTNrCis3NTAwMCAzYTNlMTQ1ZDU1MmM1YzliMDI5M2EyYTdmMWVhMzgzMDdkZGYzMDU1IHJlbGVhc2UzMS1tYWludAorNzUwMDEgMWZmZTZmYjE5YTE4ZGQwOTg5YmFjYTg1NTc1YTI1OWM1NDVhZmMzMCByZWxlYXNlMzEtbWFpbnQKKzc1MDAyIDc0MzVkNTkxYTMyNTgzYWUxMjYxYWI5ZGVkZTFhNDRkNTIzZjgxZjIgcmVsZWFzZTMxLW1haW50Cis3NTAwMyBiNzc3ZTBmMGI1N2NhMjExOTA4ZDM0MzYzMDgyZTdlNDUzMWQ1ODI0IGxlZ2FjeS10cnVuaworNzUwMDQgNWY2M2I1MTQyNzI1MjBmYjk3MDBjNjJmZTViMjg2MTk4ZmMyNTA2ZSByZWxlYXNlMjYtbWFpbnQKKzc1MDA1IGI3MzRkNmI1MTg1Mjk0YzVjODQzMGUyYmUyOWFkZTNiNWQ1ZDk5NTMgcHkzaworNzUwMDYgMzU3Yzc1ZDU5Y2U5OTRiZDY2NDQ4MGYwMzE0N2M2NjU1ODIxMTc2NiByZWxlYXNlMzEtbWFpbnQKKzc1MDA3IGY3M2NkYWUxOTdjNGQxZTJhMDhhNGIzMzM1YmFjZWFhNjQ0MjM2YjMgbGVnYWN5LXRydW5rCis3NTAwOCA3OGUwMGViNDVkYmI0MGQ4YWY0ZWE4ZWVkOTBkMzM2ZGQ4MzVlOWQ5IHJlbGVhc2UyNi1tYWludAorNzUwMDkgMWY1Zjc4ODE4YzUxZTgzNGQyOGJlMDQ4N2M5YWFmMzBmMDI0MTE2MyBweTNrCis3NTAxMCA4MmQ3OTdmZjlhYTNjMzhiZjdmMjk2OGEzOWI2MWNmNWExMmYwYWI1IHJlbGVhc2UzMS1tYWludAorNzUwMTEgNGNlNGRhODQ3ZDkzZjA1MDNkMjkwNGQyMzc2OTU1ZDE3ZjQzNmE3ZCBsZWdhY3ktdHJ1bmsKKzc1MDEyIGMyMzkyYTc5NzE1ZDYxZDZhMjEwYWM2MmE5NGNkZjljOTFhYzMwZTcgcHkzaworNzUwMTMgNTc0YTUzMmZiNDBiMTg2ZThlN2JhM2ZhNTc2NmZiZjU5YjgxYjJiYiBweTNrCis3NTAxNCBhZmRhMDg3NzYzYWYxZWRlZDllMTI3ODQwYzE3NDQ1ODI5NDg1MjEwIHJlbGVhc2UzMS1tYWludAorNzUwMTUgNzcxOTFmM2ExZDI3ZGRjNzAxNDk1OWI3YzJjMTc3YzBhNzE3YmE1ZCBsZWdhY3ktdHJ1bmsKKzc1MDE2IDViOGIxOGIwMGQ0Y2ZmMDVlY2YzZTA4NDIxYzRmMzM4NTA2YTVmYzggcHkzaworNzUwMTcgNTU1N2JjOGNiZjY1Zjk5NGNlNjE1MjM4YzkwZDU0YWM3ZTZmMzZjNSBsZWdhY3ktdHJ1bmsKKzc1MDE4IDA2Y2UyN2E4MmU5OWU3ZmUzZWQ4NGM0NTYxMzEyZDRlNmM1MWIxOTMgcmVsZWFzZTI2LW1haW50Cis3NTAxOSBjYWRiZmM3M2EzYjBkNjYyZjFhNjQwZGQxMjljODIzYWJiY2IyMzc2IGxlZ2FjeS10cnVuaworNzUwMjAgOWM2YTk4M2NmNmE5M2U1Y2U3ZmZlOWE1M2ZmMWU0NWE4ZWMzMmNmYiBsZWdhY3ktdHJ1bmsKKzc1MDIxIDJhZTkzZWFjNDIwZTJhYjlhOWM2Y2Y5NGNjOWM2YjVmYzhjNjdiZTIgcHkzaworNzUwMjIgNGNhMTE1ZjMzYjZiOGY5NjgzM2FkYzM5OWExNGI5ZTBjZDQzMjI3MiBsZWdhY3ktdHJ1bmsKKzc1MDIzIDRhYTdkZTY2MTM3ZmNjM2YzNmRiMWQwNWU4NzdmZTQ4NTBmZjAyZmEgcmVsZWFzZTI2LW1haW50Cis3NTAyNCAzMjI4YmFmYmU2YzkzODY1OGI5ZTg0YjM1NDQ2MDBhZGRlNzJhYTM5IGxlZ2FjeS10cnVuaworNzUwMjUgMmQzNGE3NGYwMDE3MjA2ZmU4ZDcwY2E3MDdlM2YzNTEyMzJlOGEzMyByZWxlYXNlMjYtbWFpbnQKKzc1MDI2IGNhZTA1M2M5ZjljYWNlNGJmZWE4ZWM1MmQ5MmRjODhjNDI3MTU2MjEgcHkzaworNzUwMjcgYjE5YThhZGQxMTJmODgyZDVjZjA5MzI5MzNkZDE1ZjAzZjQ1N2FlMCByZWxlYXNlMzEtbWFpbnQKKzc1MDI4IGQ1OTlhM2YyZTcyZDZlMGM0M2U1N2EzYThkYmQzNjI3N2FiMTcwODYgcHkzaworNzUwMjkgMWQwZDZmNzQzNzhjNmI1MmM3YmE3NDUzNzc4MjAxMWZkNjZkMzIyZSByZWxlYXNlMzEtbWFpbnQKKzc1MDMwIDYwMGVkMmRkNzY3Mjg5MTk3N2RkODRiOTk0MjA1YTFhZTQ1MTQ4N2EgcHkzaworNzUwMzEgOWNhYzhiYTZmNGE5ZGM1OWVjZThmMmFlMmJmMWYzMDNlMjJmNzRmMiByZWxlYXNlMzEtbWFpbnQKKzc1MDMyIGMyNGYwMDAxODJmNDU1NWNkNTllYjg2YTgwMTU5ZjZmZmZjZjQzZDQgbGVnYWN5LXRydW5rCis3NTAzMyA2ODg5OWRjMTE3ZWIzNWZkMzk2YmZiNGIwZDA3YjNkYjZlNjBiNjYzIHJlbGVhc2UyNi1tYWludAorNzUwMzggNTg0ZGIwM2U1MjQ4MDdhNGU3OWU1MDNiOWIzM2VmMzZhYzk2MGIzOSByZWxlYXNlMjYtbWFpbnQKKzc1MDM5IGI0YWI0OWUyODMwNTEwM2M5MjUxZGY0M2MzMjY2OTY5YTNkMTI1YTMgbGVnYWN5LXRydW5rCis3NTA0MCA5ZGFmODg0MGE0NzNlMDhlNTQ3MDQ1MmE3ODA0YWRhNzVhNDNiYTBkIHJlbGVhc2UyNi1tYWludAorNzUwNDEgNTNhNmIzOWVlNGI2NmQ5NDNjMzc1ZGMyNTgyMmRiNzUxMzI2NGE1NyBweTNrCis3NTA0MiAzZmQ3ZjEyMjU1NmE5NjFhNWE5ZGY1YzdlMTcxYmNiYjY3OWY4MmFjIHJlbGVhc2UzMS1tYWludAorNzUwNDMgN2Y3Y2ZhYTM4MzJlM2UyNWEzZGFmZDhlMDZjMDdkY2M2NTc5NzhiZCByZWxlYXNlMzEtbWFpbnQKKzc1MDQ1IDFkMGY0MTZkNGJhNjQyZjM1ZThiMDEyMDcxMjZiNDBmY2JlODI0MTEgcHkzaworNzUwNDYgODk2NjcwZDQxYzlmNzRiMzFhODIyNzQyMTkzMDcxMWJkNDllZTEwZiByZWxlYXNlMzEtbWFpbnQKKzc1MDQ3IGY5YTcwZjIyNTYyNTBlNzFhYTMwYmEzMzNkZjc2ZjhjMzAxMGMxOWIgbGVnYWN5LXRydW5rCis3NTA0OCA3ODVlY2NjMDI1YWM2ZTlmZGQwNzM3ZDEzNzBmM2MyYTA2ZjcwNDc2IHJlbGVhc2UyNi1tYWludAorNzUwNDkgNjU2ZDFkNDBmZWNiZmM1NTljNWY3ZGE4MTBkOGQ4ZTM0ZDA5MTI3MSBweTNrCis3NTA1MCA1OTJiYjgyNTljNTQyNzgwNDVhM2FjMTU4ZTcyZDU5YjU3YmQ5M2VhIHJlbGVhc2UzMS1tYWludAorNzUwNTEgMGY0ZTk1ZmY4NTlkMmNhYzYwMDg0ZDM1NWQ3MzBkNmIxYjZlNjU3OSBweTNrCis3NTA1MiAyOGUyY2UwMGY1NDViZjRlNTdhN2FlYWFjNDRkM2NkYzg5NTliNGZjIHJlbGVhc2UzMS1tYWludAorNzUwNTQgM2RlZjk1MmI1MTVjMmI0NThkOTRkMjA0ZmY4YWVjZjUxODJlNjA1NyBsZWdhY3ktdHJ1bmsKKzc1MDU1IDM1NjdlODcxNTdkODM2MzFhMTYzYTkxYWIzNDgzYzc3NGY4M2ExYTEgbGVnYWN5LXRydW5rCis3NTA1NiBlMDczZmM4OGRjODk0N2YyMTAxNmVkMGQ1ODE5YzYxMTUwN2NlYzM4IHJlbGVhc2UyNi1tYWludAorNzUwNTcgOGVhOTIxYzdkMTBmYTEyMzcwZjU5OTcxNzU0ZjUyYzlhODIyMzZiZCBweTNrCis3NTA1OCBhMDc1NjhjN2E4MmFjYTUyN2FmMGFiOTYzYWExNjlkMDExYjM4ZTJhIHJlbGVhc2UzMS1tYWludAorNzUwNTkgNTBiMThhZThjZWM0NDkyN2U0YWVhOTkzZGRkNjRiMGExMTBjNjEyNyBweTNrCis3NTA2MCAxNDliZWQyMTczNWUwNzRhZTMxY2ZhY2Y3ZWRhOWZiYzM0MTU5ZGZhIHJlbGVhc2UzMS1tYWludAorNzUwNjEgMWI5ZjE0ZTVlOWU1MDdkNzhlNmI1ZDgwOGI1ZTVhMTQ2MDU2M2YzMCBweTNrCis3NTA2MiA4Y2M4MmRjNmJiYjAyM2YxZWM3ODRiMmMwMTQ3MjJhZWY1YWZhODk4IHB5M2sKKzc1MDYzIDI2NDRmNTRlMzY3NjNlMzg2NjVkMTk0YTIzZjdjMzFjZDkwNjQzM2IgcmVsZWFzZTMxLW1haW50Cis3NTA2NCBiYTg0MWJhMDBkMDYyMjJkMDliZWRlY2ExNzZjOGMzMzllMjZkZjg0IHB5M2sKKzc1MDY1IDc4MWVmOTVjYjc4MTg3NmNmZTE0YmVkNWY3YTk1NjU2ZmJiYTdjYTAgcmVsZWFzZTMxLW1haW50Cis3NTA2NiAyYmZhZGRiMTljM2ExYzY1YmJhZmRkNjBkZWUxZmY3Y2E1Mjk4NmFiIGxlZ2FjeS10cnVuaworNzUwNjcgMDBhNWNmMzc0MzE0NjI0MDFhMWQ3NjI3ZGI0YzNlNmU1Y2IzMTRlZiBweTNrCis3NTA2OCA4NWUxZGRkZTU2OWUyNjNhYzQ4NWMwMWJjYjdmZDJlOTU4NTVjYjRmIGxlZ2FjeS10cnVuaworNzUwNjkgZTk5MDI0ZWRkZmI0NWM2MzNiOWI5YTk1NzhlZWEzZjlmNzlmMmEwNyByZWxlYXNlMjYtbWFpbnQKKzc1MDcwIDg5ZmEyNjQxNzE1ZDM0OWE5NDI5NWMyNmJhMWE3OTcwNDZiMmJiNDEgbGVnYWN5LXRydW5rCis3NTA3MSBhY2JmYzY5YjU1ZjNlMGQ2NDgwN2NlZDljNjZkZmI0OTBkMzk2ZGRkIHJlbGVhc2UyNi1tYWludAorNzUwNzIgMDc2YjIzMzM1MjYzN2UyMmM5NTFhOGFiZTBjZTIwYjc2Nzc0MWQzYyBweTNrCis3NTA3MyBiZjliZWY3MGY3ZThhYzYyOTFkNjg1YjEwNzAwNmI1MGE0NmNiMDQ1IHJlbGVhc2UzMS1tYWludAorNzUwNzQgMjAwNmEyZjQ4MTJkNzY3ZjY5ZWY3Y2ZjMGY5Njg1OTBlYzEzMTljYSBweTNrCis3NTA3NSBmM2M1OTUyMTRhYmM0MDA2MWQ4MjdjMTJkNjNkYjVlZjg5Yjk3YWViIHJlbGVhc2UzMS1tYWludAorNzUwNzYgNzM5MTQzNmQ4YTc0ODlkNDYxYjI3OGFjOTVlZWZkNDM5NWM3MjI3YyBsZWdhY3ktdHJ1bmsKKzc1MDc4IGRkNDU2NDk2OTA5Y2Q0Y2NhZWYzZDdmNjY2M2MwM2U1OTU3MjVhZDEgcHkzaworNzUwNzkgYjA1MGVhN2JhZjQwZGViYzk0YWMxZDYzMzNiYmFjMTE0MWExODhlMCBweTNrCis3NTA4MCA3ZWUxNDBiN2VmOTNiYWZkYWNhOGRmYjUzNDI2NjY1MTQxNjExYWM5IHB5M2sKKzc1MDgyIDA0NTNkMThjNjNhNGU4NTgxNzZlOTMzOTIzZGQ0ZjUyOGM0YWRiNDIgcHkzaworNzUwODMgZDY4ODlkYTA2NTJjN2Y4NmJiMzgzN2FlNDM0Mzk0NTU3NmM0NTRhYiByZWxlYXNlMjYtbWFpbnQKKzc1MDg0IDU0NjEwMWE2Njc3Yzg0ZTMzOTdmYjZiYTQyYWY1ZWM1ODRhY2YwMTAgbGVnYWN5LXRydW5rCis3NTA4NSBiMGU5NjE5YjMxZDhkMGExZDg3MjcyNjFiNGQ1MzZhM2Q5MDhkNDNhIHJlbGVhc2UyNi1tYWludAorNzUwODYgZmNiMzFiZTIxMzZkNjRkMDQ2YTU0ODkxNzNiOTJmN2JhYzYxYWVlNyBweTNrCis3NTA4NyBjMGQ5NTYyNWYxN2RlNzhmZGQ3NDY1OGNjNjJkOWEwM2E0OGI1ZWFiIHJlbGVhc2UyNi1tYWludAorNzUwODkgMWE2NWRkZDdkOWUxNTFkZjEzZTdmMjdiN2QxMTRjOTM0ZTU5MzE2ZiByZWxlYXNlMjYtbWFpbnQKKzc1MDkwIGYzZmEzOTY3ZjQ0NjQxZjU4OWEwZGI2MTljZDM4OTc0NGVlMDk1MGEgcHkzaworNzUwOTEgM2RlYzNiNzdiNzg3NWJjMzcxYWVhZjRkMDEwOWRmOGY5OWVhYzgyNSBsZWdhY3ktdHJ1bmsKKzc1MDkyIGEwNDEwODRjMWZkZDY2MjcwZDg2MGJlMWUzMjM4NDNjNTBjMzM4NTggcmVsZWFzZTI2LW1haW50Cis3NTA5MyA5MTBkYTU0NWUxN2JjNWYxYTQ0MTBiYzI5ZWE3ODkyZmMzYWE3OWY3IHB5M2sKKzc1MDk0IDdkMDI2ZjcwNjQ1MGQ5ODAzZDRmYmFkYzAxMGRmNTgxNjJiMmFiMGMgcmVsZWFzZTMxLW1haW50Cis3NTA5NSBiYjhiNzcwY2U4OTBlOTFiZGZmM2U1NjI4NzI3OGVkYWFmNmQ1YmVhIGxlZ2FjeS10cnVuaworNzUwOTggZjA0YTFmMjAyM2VjYjY4ODFiZjE1ZDY5MTM2NzBiNmVkYTE4NzBhMiBsZWdhY3ktdHJ1bmsKKzc1MTAwIGRlYmIyNDVlYmI0MDE4ZDE4YjgzY2QwNzEwMjRiNDQ0ZGEwNDk5OGMgcHkzaworNzUxMDIgYzc2Njc0YzJkNzRkMDM5ZjkxNmZkNTdiNzAzZGRlYmQ0NWYyZDhhMiBsZWdhY3ktdHJ1bmsKKzc1MTAzIGU5NTIxODYwNTMwMGVkMDY0ZGM4ZTU5ZDc0ZGRiYmMxZDNmOGRhOTYgbGVnYWN5LXRydW5rCis3NTEwNCBhYjQ5ZTBhYzhjOGYxMzFlMmMzZDVjYjdhZDdkNTlkYjQwNzI2MWJiIGxlZ2FjeS10cnVuaworNzUxMDUgYjZhZmY3YTU5ODAzMDA5ZDhmZmM5ZmIwYWNiNTZkOTg2ZGFmOWUxNyBweTNrCis3NTEwNiA5NDU3Mjk0OWMxY2E0YmRlMTMzODE3OGE4OWI3ODVjMmM4ZTE1YTllIGxlZ2FjeS10cnVuaworNzUxMDcgZDEwOGZlNzdjMDZjMjU2Y2VlYWU4OTJjYWQzMmYyMmYxOWVmNjBmZSBweTNrCis3NTEwOCA3MDEzZTM2NTExYThjZWRlZmI4MWViOWU1YjIxNzgxMGVkZGExODU4IHB5M2sKKzc1MTA5IDg5Mjc3MThjMTk4ZmY3YjdhOWY2NWNhNjc2OTUxNzU0NmVhNzM5NDcgcHkzaworNzUxMTAgM2FiNDY0ZmQ1ZTAxYTVkZGRhNmViYTY4N2I4OGRiNTJhODk1ODYxMCBsZWdhY3ktdHJ1bmsKKzc1MTExIDUyMzFlYzUxMmM3YWZkMDRhMWU1NjY4ODgzMTg5ZTM2MTk5MTlkYTggbGVnYWN5LXRydW5rCis3NTExMiBjZjkwYWE1N2IyMGJjMzY3NTIxNjk1OGExMWFkM2U0YjRkOTQxMjgzIHJlbGVhc2UyNi1tYWludAorNzUxMTMgOTllMzZmNDdjYTBmNzY2ZjQxMTAxYjNjMGJiMmJiYWNmNjYzMmFiMiBweTNrCis3NTExNCA0ZWM5MTVhNWJiNGUwY2ZjODA4ZmZmY2FmZWEwMWQxNWY3MzY1YTFjIHJlbGVhc2UzMS1tYWludAorNzUxMTUgN2Y2OTVkZDY0ZjkwMWQzMmYyZWQ1ZTU2NWI4MTIyOWFlYjAxZjk0MyBsZWdhY3ktdHJ1bmsKKzc1MTE2IDU2YjUzMDAyOWJhY2Y2YWIyOGU4NWEwMGQyMDA0Y2ZjMzZhNDJiYTkgcmVsZWFzZTI2LW1haW50Cis3NTExNyBiNTBkZDE3ZGZlMjYyYTQ3MjVmNGFlM2U2ZTQ3MGExZmQ0MDBkMzVlIGxlZ2FjeS10cnVuaworNzUxMTggNTBjMzBhODI4NGZiYjRjZTRjYWIyMGI5NDQyNDIxMzg3ZWEyMTc3ZSBweTNrCis3NTExOSA0N2I4MmZiZGMyYmIxZTAwZjAzNjk2N2U1MTI0YjBhNGJkZDc5NGQ5IHB5M2sKKzc1MTIwIDIwMTI0ZWI4ODExYmJmYzg1NmMyYThjYTYyZjJhOTNlNmYyMzM3ODcgcmVsZWFzZTI2LW1haW50Cis3NTEyMSBiOTg1YmNkYjhiOTE0YjNjYWQ0ZTc0ZmI0MDA5NTMwOWQwYWJlYmI4IHJlbGVhc2UzMS1tYWludAorNzUxMjIgODI1MDIxODI1NDYzOTBlYWFhYmNlOTI2N2YzYTA3MmM3YTM5NDE2MyByZWxlYXNlMjYtbWFpbnQKKzc1MTIzIGVlYmYzZDUxZDNhNDZmMzU4MmVkNDdiMzJhZjVkMGVjZGJjZDA3NTEgbGVnYWN5LXRydW5rCis3NTEyNCBlZTlhNTUxYTg3NWVkNGZlNmQ1Y2U0YmI5YjRjYmRmNWI0ZjY0YmE0IHJlbGVhc2UyNi1tYWludAorNzUxMjUgYzYzZTA2Mzg3YjhmY2RmNmExZTI4ZWI2NDI2NGE2YzY2ZTM4NmY0YyBweTNrCis3NTEyNiA3NGIxOGEyNjdjZDc1MmFkYTNiM2RiNGVmZGZlMmQ1MmNlN2U1MWU2IHJlbGVhc2UzMS1tYWludAorNzUxMjcgZWRkOWE1ZTNjYWZiNmYwOTZlMWEyNjYwM2JmNzI3MGJhMjc0ODY3ZiByZWxlYXNlMjUtbWFpbnQKKzc1MTI4IDM1NzdhZjUxMmRmNTczMDMzZjViOGUxOGZlODM0N2FkMjYzNmRmMTkgcHkzaworNzUxMjkgZjI2YjgwMmMwMDNlNWMwMDM1NDA3NDZlODQxYjdmYjI3ZDA4OGQ3OCBsZWdhY3ktdHJ1bmsKKzc1MTMwIGE4ZDBlNzY0ZTM0YjFjYTJlZGNiNDVmZTFjN2FhYWMzNGM3NzMwZjUgcmVsZWFzZTI2LW1haW50Cis3NTEzMSBlNWI4MTIxMmZkZmQ3MTc2OWY0MTJmYWZkNTRiYWE4ODNiMzhiZTg0IGxlZ2FjeS10cnVuaworNzUxMzIgOTg2NzA5YzI0NTMxODk0MDcwMWQxYmZhMTc2MzE4ZjVmZDk4YjZiZCByZWxlYXNlMjYtbWFpbnQKKzc1MTMzIDRkNzQ3MzQ0OTVjZmQ2Njg3ZDExOTM1YjkxMjM2ZDg5ZTc1OWIyODEgcHkzaworNzUxMzQgZTBmMjM0MTE2YWIxNDk4MzU2OTI5NGVmY2FmM2QxM2EwZGIyNTI4MSBsZWdhY3ktdHJ1bmsKKzc1MTM1IDJlMmMxNDJiYmVhYTk5YWMxNzNjOGQ4NGNkNjFiYjUxZmIxZGQ2YzYgcmVsZWFzZTI2LW1haW50Cis3NTEzNiAxODQzODg2YjJiMWQ4NjBiMDhjZjk2YmY4ZTM0NjJiODg2NTYxZGE2IHJlbGVhc2UyNi1tYWludAorNzUxMzcgMWY3MzYxYzc0MjM0YzVjY2MyNDRiYjAxNTI2NzI5NjAwMWNlYzliMSBweTNrCis3NTEzOCBlNzJhNzNhZDdlMjk0Y2JlZmZhMWY1YzViOTBhODg2NzllZWY2MmQzIHJlbGVhc2UyNi1tYWludAorNzUxMzkgOGU5YmRjNmExMDBmYTA4NmJkNDY2ZmJhNmYyYWM2MmMzMGJiMjkyZCBsZWdhY3ktdHJ1bmsKKzc1MTQwIDE5YTRhNjIzZDhiNzA0NGMyYjFiOWUyNTFiMmM4YjA4YTQyNDI0ZmMgcmVsZWFzZTMxLW1haW50Cis3NTE0MSA5MWY5ZGY1MzY3YzFhNWYxYzYxNDZjZjg0ZTk2ZGIzOTE3MWY1YTcwIGxlZ2FjeS10cnVuaworNzUxNDIgYTE3Y2Q5ZmNkZDQ2OWVkMWYzODUwOTJjZDgwODE0NmJmMWYyMDYwYiByZWxlYXNlMzEtbWFpbnQKKzc1MTQzIDFlYTAzZjg2ZTA4MTNkZDgwZTU5ZjBhNjc1NTJiMmY1YThkMTE1NTcgbGVnYWN5LXRydW5rCis3NTE0NCA3ZTE4NTYxNjdjNGE4MmVjMTc1NDAyOThjYzgyNTgzZTU4ZTc0MDAyIHJlbGVhc2UyNi1tYWludAorNzUxNDUgYmExOTY2MmViMjIxYjgzZTYzODE4ZWU0YjEzYTE0MmYzMzE0ZDI4MyBweTNrCis3NTE0NiAwOGU1OTA3NmQ4NmIyY2FlMGRmZTI3Y2Y1NTkwZmI5M2U4MTYwYTUwIHJlbGVhc2UzMS1tYWludAorNzUxNDcgZjk5YmNhNmFiMGRjYzg1ZTc4YTRmYzA5NTkzYzdjYjMyNDExYjNhZiBsZWdhY3ktdHJ1bmsKKzc1MTQ4IGRhZDc0NTNkMGQwODYyYmI3MzAyNTUzNzg4Zjg1YjRlMWMzMTM2MzcgcmVsZWFzZTI2LW1haW50Cis3NTE0OSBkZjU4ZmYyZGUwOWJhMjE4NWMyMTE5ZjI2NGI2MzhlOTc5YzdkMjUzIGxlZ2FjeS10cnVuaworNzUxNTAgNjcxNmM1ZjhjNjBkNWNlNTQ2MDM0YTU0YTgzNDMyODUzNTg1MzkwNSByZWxlYXNlMjYtbWFpbnQKKzc1MTUxIDE4NzM1NDJjMDAwMDBjNGI3Y2UyYzc5OTJkMWYyZDg3Zjg2NjIzMmEgcmVsZWFzZTI2LW1haW50Cis3NTE1MiAwZWZmZGIzOWM0N2I3YTA3YjE5OTdhNWRiYjViZWU2Njc2NjEzZTNmIHJlbGVhc2UyNi1tYWludAorNzUxNTQgN2JjYWYwNjRlMjQwNTY3NGQ4YjU2ZTBiNGVjYmYxODY1MDIyNTk5OSByZWxlYXNlMjYtbWFpbnQKKzc1MTU1IDVhY2FlNDZhZjg0M2ZhOGMzYWQ5MTI3MWE0MWIwZDBiZGUzMmRkYzcgcmVsZWFzZTI2LW1haW50Cis3NTE1NiBkOTEyMDlkODI1MWRlNjA1MzBjMDY2YTU2ZjQ0OTc0MTJlYjQ1NGY4IHJlbGVhc2UyNi1tYWludAorNzUxNTcgNWYyNDVkYTcyYWViYjRkMjc3ZmVhNDRiM2JlMGJjNDM1NWUwNTI2MyBsZWdhY3ktdHJ1bmsKKzc1MTU4IDFjMDE2ZjBlOTRiYWMxZjY0MjkwZjliMmNkODY5MWRkZjFlMmVlZjQgcHkzaworNzUxNjAgMTZjOTg1ZGFhZWIwOWQ2NTNiNjRjZmViNzZkNDg0Zjg5OTQ3Y2Y1MiByZWxlYXNlMzEtbWFpbnQKKzc1MTYxIGU3ZTQ1MjQ0OWE1ZWFjOWE4YWNjYmJmY2E3NTUwMTgzZDFiMzM5M2YgcHkzaworNzUxNjIgNzAzZGU1NWUwMGI4NWQ2N2VlMDRkNzM4YWQxNDM5NTMxOTA0ZjIxMiByZWxlYXNlMzEtbWFpbnQKKzc1MTYzIDA4NDU4MGEzNDliNzExMzc4NjU3NjIxNWZiZmY0YjVjYjkxZDc2ODUgcHkzaworNzUxNjQgMzM5YjgyMzIxZjhlZjYzOWExY2I0OGY0MDNiNjUwY2IyMWU1Y2VmZCBsZWdhY3ktdHJ1bmsKKzc1MTY1IDNlMjg4MTZhYTBhMjMyNWE3MjdlZjYxYmJhMTVjYjU4OWI1MzgyY2MgbGVnYWN5LXRydW5rCis3NTE2NiA4MDdiMGQ1OTczMTRiMmY0NGI1NWY3MTA5ZjIwNGJlZTAwZDc0NTE3IGxlZ2FjeS10cnVuaworNzUxNjcgOTIxN2JkMGNjM2ZjZDUwMzgwMzQyYzMzMTNhMjIxMDM0ZTlhOGE4NSBweTNrCis3NTE2OCAxMDY0NTU1MjM3ZTIxOGNmZDM5ZjA5NmUwMzE4MTNjMDE3Y2JkNTI3IHB5M2sKKzc1MTY5IGUxZDY5NTFiZjM5ZDdkZmNkYTYwYWFmY2ZmZmVhZWViOGIwNTY5ZmIgcmVsZWFzZTMxLW1haW50Cis3NTE3MCA1ZWMxNWRhMWZjNDIyMDVhMWUxM2UxOWMwZjM3YjQ1YjkwZTMwN2EyIHJlbGVhc2UzMS1tYWludAorNzUxNzEgMTE3YjMwOGJlMzIxNDM2YjZiYTkxOWE5MDExYzgzMzhjODQ3NzQ1MCBsZWdhY3ktdHJ1bmsKKzc1MTcyIGNlMjE0ZWU0MTE2NDkyOGEzMGI2NmRkZWZiNGUxYTA4YTllOGJiNGEgcmVsZWFzZTI2LW1haW50Cis3NTE3MyAxNzAwYTc4OTczY2Q4MTQ2YjBiODJlY2UxOTFmZDFmMzU2ZmQzOTQxIHB5M2sKKzc1MTc0IDJjN2IxZDVjOGI2NWIxY2VjMWUyOWViYzMyNTc5NGMzMzM0MjU3MGYgcHkzaworNzUxNzUgZGMzNTAwZDM5ZWYxNDg5OTE4MWIzMDBmNmZiNWU0NjBiNzJiYTgzNiBsZWdhY3ktdHJ1bmsKKzc1MTc2IGZlOGI5YjczZDlhZjBkNGQ2ZjRjZDI5NjNkMzg5Y2RlMGM2YTc3NDEgcmVsZWFzZTMxLW1haW50Cis3NTE3NyBlMzA0ZDlmMzRkMTUyODcwNTMwYjJkODEwOTg0YjczOGJhNzBhYzhkIHB5M2sKKzc1MTc4IGZlOTY0YjNjOTY2MmM3NzJlZTQwYzM3ODc0ZWM2ZDU2NWQyNjU2MWMgcmVsZWFzZTMxLW1haW50Cis3NTE3OSA5ZjE5OGIwZjM2N2ZiYTA0ZGFjMzYxYmEwYTNhNWU0YmMzMWMyNmMzIHJlbGVhc2UzMS1tYWludAorNzUxODAgZTZhNWViZTVhZWRkOGVlMzAyYmQ0MjNjZDRjZGIyYTkyNmU4NmYzNCBsZWdhY3ktdHJ1bmsKKzc1MTgxIDc4M2U2Y2MyYWI2MjM1MTk2YjkyNzA1MGI2YWE5YjVjYzkyMTJkYzkgbGVnYWN5LXRydW5rCis3NTE4MyAwMGMzMzk2ZDdhOGM0YWI0YzJjODQxZDYxMDEzYTA3M2FlOTIxZDBmIHJlbGVhc2UyNi1tYWludAorNzUxODQgOGU3YTY5Mjc4Nzk4MTU4ODczMmY2NTBhYzJmY2FhNTAzNzJhMGMyYSByZWxlYXNlMjYtbWFpbnQKKzc1MTg3IGM4NTBjZTk3N2JiOTgyZDcyNTFkM2Y3ZmE0NzMwYmU0Y2ZiNWY2YTIgcmVsZWFzZTI2LW1haW50Cis3NTE5MSA0YzU5OTgzYmIwNTc5NjY1NzA2MTZjMmMzZmQyMDk1NGMyNmY5YzZiIHJlbGVhc2UyNi1tYWludAorNzUxOTIgYzJjOTBkMWYzYzMzZWM2OTcyNGU2OWY4MzJkNGMzNGE1Y2Y2ZjEwNSBsZWdhY3ktdHJ1bmsKKzc1MTkzIDcyOTAxNDBjZDMzMDI3MDQ0NDQwYTYzYjFkNTZiODIwYTlkMDYwMDkgcmVsZWFzZTI2LW1haW50Cis3NTE5NCBjNDExOTI4NmZhYTc1ZDdkZTllMjFkMTA3N2M2YzNhN2VjNmJkYmU1IHB5M2sKKzc1MTk1IDliMWViNWU3NWUxNTllN2U3ZWQzZTNmOTg1MzY2OTk0ODNmMDY4ZDQgcmVsZWFzZTMxLW1haW50Cis3NTE5NiA3ZDdmOTc4M2M4NmRiMTQ5M2YzNTYwNDM4OTVkODhkYTk4M2M3ZTJmIGxlZ2FjeS10cnVuaworNzUxOTcgNjc0MDliYzk5ZmEyYmNmMDAwMTQwY2EwM2ZhOWY1ZDRlYWE1MjEzMyByZWxlYXNlMjYtbWFpbnQKKzc1MTk4IDc3ZWUyMjA2ODZjYzUwMmJiMDI5NTliOTE0NmNhMGM4Mzk1NzhiMzAgcHkzaworNzUxOTkgMjc1ZDYwZjkzZDNjNWY2MTkwOGU4ZDdkMzVmZWE5MjAxMjc0MzFhMCByZWxlYXNlMjYtbWFpbnQKKzc1MjAyIDQzMTM1MGYyMWQ4N2U5ZDhlYzcwYzZmNWFjNjVjMzIzZmJhZTcwYWYgcmVsZWFzZTI2LW1haW50Cis3NTIwMyA5MTMwZmU5YzU4YmY5N2RmOGQ0M2ZkMjMzNjRhZjA1NmJmMmE3MGIxIHJlbGVhc2UyNi1tYWludAorNzUyMDQgZmM3NGQ1MWE2Nzk3NDFhOWQ1MzZjMGFhNWQ0ODhlN2EzNGZmOTQ3YSByZWxlYXNlMjYtbWFpbnQKKzc1MjA1IGQ0MTM2MDkwYWMzNGY5MWVkYTExZTdlMzRkOTMzY2Y2MDRhZjU3MDQgbGVnYWN5LXRydW5rCis3NTIwNiAyNWNmYjcwYmNkNWU5ZGQwOGNmMGU1OTBkZjQ1NzY1NWYxM2Y5MzRhIHJlbGVhc2UyNi1tYWludAorNzUyMDcgM2VlMDRlYTljYzZlMmY3MzFmNzUxM2YyYTVkZTcyNzg4OGEwYmU5MiBweTNrCis3NTIwOCA5NDZjZWNhZjY0YzFmMWQwNzdmNjZjMDIwZjY1MzdmODczYzc5OTMzIHJlbGVhc2UzMS1tYWludAorNzUyMDkgNTM4NGM4ZWU0YTI2Y2UwMWU3NzA0YWYzOWRiOGFmM2ZlN2YyZmJkNyBsZWdhY3ktdHJ1bmsKKzc1MjEwIDM5Yjk5OTRlODY2OTNiMzUxZDJjM2VmOWFjMmFmNWYyYmM2ZmNhMDMgcHkzaworNzUyMTEgMjhmYmNjNzljMjBhOTNjNmE2NTI5OTBjMWZlMzQ0MGRiMzkyZTM1OCByZWxlYXNlMjYtbWFpbnQKKzc1MjEyIDZkMGRmZTNhMTNjYTE4YWIzNGI1M2RkNjNmNDJkNTI5MDJkYTkwYTMgcHkzaworNzUyMTQgODQ5ZmIyN2M1NTk0NjYyNDRiZTJjMzgzZmE4YWVkMTZkNjVjZjQ0YSBweTNrCis3NTIxNSA1MjI3ZWFiZGJiNjQ3NTg2MDhiNTFiOGU0MThlMDU5MzhkMzFjZjQ1IHJlbGVhc2UzMS1tYWludAorNzUyMTYgNTNmMTdjYzdiZmY2N2M2YzBjOGVlMzYwOWIxZDM4MDcxMTZiOTM0NiBweTNrCis3NTIxNyBkNTQ5MzY2ZGQyMThiMzI0MGMzYWJhZjNkOGVkNDk3NmMxOTFhZDJjIHJlbGVhc2UzMS1tYWludAorNzUyMTggMTUwY2RhZWE1OGVjNjkxNmFjNTE5ZDA5MzM3YjNkM2U2ZGJjYjI0NyByZWxlYXNlMzEtbWFpbnQKKzc1MjIwIDZjZmY2ODJhMzA5ODFmZTIwMzM1MzgxNjQ0NmQwNjc5OGE4YjVlMTggcHkzaworNzUyMjEgNWMwYTc4MDAyMTVhNjc0M2JmMTdiZmNjNGI3OTJlMTk2MDczZGViZSByZWxlYXNlMzEtbWFpbnQKKzc1MjIzIGNjZWI2MmViMWNmMTgzMmIyNzYyYmRmZWFmN2M5ZjFlYzVhYzg2MjQgbGVnYWN5LXRydW5rCis3NTIyNCA0NWZjZTMxMGQ0NzkyY2MzZjlhZDMzNjExODY1MmU4NjY1MGY0MTY3IHB5M2sKKzc1MjI2IDRmNDliZDJlN2M1OGQyOTg0OWQyMzdmYWU2ODBmZDg2NGQwNDNiY2EgcmVsZWFzZTMxLW1haW50Cis3NTIyOCAyMThjZGQ2YzY4NDI4NWQ4MmI4YjA4M2E0ODAyODU3NGFiYTEzODE2IHJlbGVhc2UyNi1tYWludAorNzUyMjkgZDVkOGNiOThlYjJhZWVhMDlkOTg1MzBhYWNkNTk1NDg1MDY1MmZjZSByZWxlYXNlMjYtbWFpbnQKKzc1MjMwIGY0MDU2ZjhmZWVjMjZiZDI5MjUzNmRmNjE4ZWZhYWQ4MDk1MzUyZWUgbGVnYWN5LXRydW5rCis3NTIzMSA0MWJiNWUyZGM5NDdhYzNmN2M0YWY5NDZjMDFhMTRlMGIwYWQwNjdiIHB5M2sKKzc1MjMyIGM5YmQ2MmVmZTZjZTU1MjRlMTc0ZDEwNjNkMTY1YjhjOWJlMGIzNjMgcmVsZWFzZTMxLW1haW50Cis3NTIzMyBiZWMyZTQ0NWUyMjRiNjVhMGRmMTIxZDYxZjk5OWU4MGQ0YjMxMjBjIHB5M2sKKzc1MjM0IDViY2UzYTU5YmZkMmM1ZWZjN2JhOGZjNzFiZjc5ZWNlZmQxNGM5YWIgcmVsZWFzZTMxLW1haW50Cis3NTIzNiBiYjJhMTIzY2RkN2JiMmFmNTgwMTkyMWQ4MzUzM2IwYzQ4YjFlMDQ5IGxlZ2FjeS10cnVuaworNzUyMzcgMzIxYzIyMDdkNWY4ZmE5NDViNTI5MTdkNGE4NDU5YmJlMTA3NzQyZCByZWxlYXNlMjYtbWFpbnQKKzc1MjM4IDkxOWEyN2RkYjRhMzIxMTg2YjEzMzQ1YTM1ODkyMjMyZTliMWI2YzEgcHkzaworNzUyMzkgMDUzODkwMTRiZjQ0NDljZGEwNjI1Y2UyYTRiMjY0ZWIwYTk3MGVmZiByZWxlYXNlMzEtbWFpbnQKKzc1MjQwIGEyY2FiYjM2MjU3ZjNiYzAxMzA1Zjk1ZDhjMDMyZDM1M2I2M2M2MDEgcmVsZWFzZTI2LW1haW50Cis3NTI0MSBjMjE5ZjcyNjFkOTg2MzU2MzExNmQ1NDQ3ZGM2Nzc2ZjNmZThhYWNlIHB5M2sKKzc1MjQyIDkyMmMxMTIyYzkyNWI2YWU1NjJmMThmZTcyMGE5OTA3YTFkZDRjODQgcHkzaworNzUyNDMgOGRiYjBmYzM5OThhZDA4OTA0MjQxNTUyNGI3ZWNlYzI5ZjVmMGQ4MyBweTNrCis3NTI0NCBjODI3NzEwYmNkZmRiMmY2MWM0MThlYzc0NGJjM2JjOWVjYmI1NDg2IHB5M2sKKzc1MjQ1IDEzOGM3ZmMxOWI1ZDZlZWM0ZmMzNDBjYjY0ZGY5NjhmMDAwYzllMzcgcHkzaworNzUyNDYgMmI3ZTBlYWFjNjRlZGQ0MDAwYTNmNmM0NGQzOWE2NDU1ZDk4ZWM3YSBweTNrCis3NTI0NyAyZTRkN2E0MGMyZGQ3ZTEzM2I3MWE5ODc5NzQ3OTk2YTdiOWRlMjNkIHJlbGVhc2UzMS1tYWludAorNzUyNDggYjBiOWU1OTI4ZGE5OWRkZGEyYjc1Yzc0YzRjNjZjZGU4MmQyMDk2NyBweTNrCis3NTI0OSA2YjIzYjBlYmE0MDUxNjVhMGIxYTJkYzliNjdkZDc4ZjZjNWQwMzFjIHJlbGVhc2UzMS1tYWludAorNzUyNTAgN2FhNGE0MjExNTJmOTI0ZTExZjEwNzIxY2EzMTAxYmIyOGU1ZjQ4NiByZWxlYXNlMjYtbWFpbnQKKzc1MjUxIDM4YmUyNjM5MDM1NTAwNGI2MWE1YzAyMGQ2NzM0MzkwNjM4OTI0YTcgcmVsZWFzZTI2LW1haW50Cis3NTI1MiA0OTAxOTBjYjRhNTc3MjI4NjczMzQ2ZGQ2NWUxOTc1ZTY5Njg5NTkxIHJlbGVhc2UyNi1tYWludAorNzUyNTMgMjc4Y2Y1YzhmMWZhOTdjMjY2OGM5MzkxMmYzMzY4NGVkYzg0NDBkZSByZWxlYXNlMjYtbWFpbnQKKzc1MjU0IGQ1MjUwZGEwMDVjYTczOWYyZWE4NjhmM2NkMjg5MDAzOTZmYjA0YjAgcmVsZWFzZTI2LW1haW50Cis3NTI1NSA5NzRjMDNjOTg4ODQ4MDZjZmQzODRjMjZkYjYwN2ZlNWJhMmJjZGIxIGxlZ2FjeS10cnVuaworNzUyNTYgMjljMDE5NmIxYmRkN2I1MTc2MGMxMjZmYjNhNzA4NzBhNzI1OGMyOCByZWxlYXNlMjYtbWFpbnQKKzc1MjU3IGEwMWY0MTNlYTA4YjZkOTE3YjU3ZjdhMGMwZjAyZDQ3OGRjYzJiOTYgcGVwMzcwCis3NTI1OCBiNGQxYmU3MTAyYjMxYjAxMTM3Y2YxNzI3Yjg1OGI0MjYxNmNiZmFjIGxlZ2FjeS10cnVuaworNzUyNTkgZjdlZWE2MmIwOGIwNWEzYjkyYTlkZjdhZWNkMWRhZDdmMjQ4N2E4NyBweTNrCis3NTI2MCBlZTkwMjAxNjI0M2EyOWU3N2RkMmU2ZGFhZDUxZmQzYmMxMmEyZjU4IGxlZ2FjeS10cnVuaworNzUyNjEgOTg3ZTU5NmNmNTczNzNlOWZjMzExNmFmMTM0YTcyYTcxZDhjZmJhMyBsZWdhY3ktdHJ1bmsKKzc1MjYyIDFjN2YyYjlhMTY3ODJjMDZjNTEwNTRkNzU3YjhhNzUwMDY4MzgzMzIgbGVnYWN5LXRydW5rCis3NTI2MyAyZmE5ZmZlNmQxNDUxZDdmZWRlZGZkMzhiMTI0MGI1ZDFmMDBmOWVlIGxlZ2FjeS10cnVuaworNzUyNjQgZDJmOTU5MTE1NDI4NmU1NGYyMTI0M2NkMzJiN2MwM2Q5ZmU0NmM4MyBsZWdhY3ktdHJ1bmsKKzc1MjY1IGExMmU3MDFkOTdjYWM3ODdmMTVlNWY0OTMzYjFhOGY1NmQ0YjlmZDcgbGVnYWN5LXRydW5rCis3NTI2NiBhNDU5NTA3MjZiZGZiYWRiZWUxNTVlZGI4MDVkNzMzZTIwM2NmYjFmIGxlZ2FjeS10cnVuaworNzUyNjcgYTZlN2VkNTJkZjliMzE3ZTZhYzg4MGEyYjZhMWI2ZjE5YWQzNjI0NiBsZWdhY3ktdHJ1bmsKKzc1MjY4IGM5ZDliN2QwOTQyMmY3YTZhOTIwMjEwODFmODAwM2E5YmZlY2UyOGMgbGVnYWN5LXRydW5rCis3NTI2OSBhNGEzMjRjMmEwMGM3ODA4NGVhZGRkMDAzYjY1NmUzNjZjNjgwNDY3IHJlbGVhc2UyNi1tYWludAorNzUyNzAgMjVhYTkwYTY4NjViNjMxMzM5NjJkZDY0NjI2YzUzYzdiNmZkNDdkNSByZWxlYXNlMjYtbWFpbnQKKzc1MjcxIDQzM2Y3MjdlNWU4MjNmMDBkMTAyM2I0MzkwMmViYjM4ZmMyZjkyMmQgcmVsZWFzZTI2LW1haW50Cis3NTI3MiBhOTg2NDQxNzI4NmI5M2Q1Y2I1Njk0NzFhMjk4MTYxNTE3ZDVkNDFjIGxlZ2FjeS10cnVuaworNzUyNzMgNWUzZjZlOGQ2YWU1OTU1OTdjNjRkNWNhZWEwNzk0MjU0ZmM0YjM1YiBsZWdhY3ktdHJ1bmsKKzc1Mjc0IDZjOTFkMTgwMzE4MjY4MTZhOTkxMTlhMzlmY2M0ZjRmNGU2OWU3ZGEgcHkzaworNzUyNzUgYzVhM2Q0MzE0Njc2OWRhMzY3NzA4YzExYmM0YzQ3MzhjOTllMWRjOSBsZWdhY3ktdHJ1bmsKKzc1Mjc2IDMyOTY5MzUyOTljZTYyN2Q3OTIxMGM2MWY1Njk2YmU2ZTA2ODk5NzcgcHkzaworNzUyNzcgZGMwNDdkOWFiZjdiNmNmOTBmZGMxMmJkZTg2MTdiOWEwMGJlOGYwYiByZWxlYXNlMzEtbWFpbnQKKzc1Mjc5IDYxNTViOTU5ZmY3MmJkZjVlZjNjYTBmMGYxOWNlNDY2NjJhOTk5NGEgcHkzaworNzUyODAgZjk5YjNmYzAxZmMwNjg5NmMzOTI5MmI0OTViMGJiZGZiYTA2MTAxYiByZWxlYXNlMzEtbWFpbnQKKzc1MjgxIGM0NWNlMjg1ZjU1MmI5NjNlNDI4NjE1MjVmZDEyYmMwY2NmMGE5ZDggbGVnYWN5LXRydW5rCis3NTI4MiBiNzg1MjFhZTdhNjI0NWU0OGJkNWM4ODJkYmU1OWYzN2Y1NThiMDg3IHJlbGVhc2UyNi1tYWludAorNzUyODMgZTc1OWNhMjU3MDFkOWE2NjdkZGI4NzJiYmE1YjU3NzdlNzY2ZWY3ZCBsZWdhY3ktdHJ1bmsKKzc1Mjg0IDI0OWIwYmU3OTdhODJlMmVkZjYzYzc4MzBlNWZhMzY3MGJjNTcyZmIgcHkzaworNzUyODUgZGQ5NGYxZDhjOWE1Y2E0NDY5NjM0OTA2NzAxN2ZiYmYyM2IxZDgzNyByZWxlYXNlMzEtbWFpbnQKKzc1Mjg2IDQ4YWIyZTYyZGU4YmM2YmQzNjVhYzFhMDE0MzExOWE2NWFiMDYxNzggbGVnYWN5LXRydW5rCis3NTI4NyBlZjczNDY0NDhiNjAwZGZjZWViNTRhZjEwMDNkMGY3ZTAyNTRkMWY4IHB5M2sKKzc1Mjg4IDMwNzJmOTQwZjM1YTM2YjZkNDlmNWUyNGVmMWZkZDU1Yjg4OWExYmIgcmVsZWFzZTMxLW1haW50Cis3NTI4OSA5NmFmZjJjMmE5YTFkNWI3MmUwZjRmMWQwYzFlZDc5NThkMDc4YzVmIGxlZ2FjeS10cnVuaworNzUyOTAgY2I0OWYyZWIwNDU3OWY4N2FmYmVjYTcwOWQwNmU3NmJjZjJhMDYzNSBweTNrCis3NTI5MSA5ZjYzMWEzYmI1NDkzZmFkOTk4MTc5MjlkODk5ODEzZjgwYjBlYmQwIHJlbGVhc2UzMS1tYWludAorNzUyOTIgZDc5MDIwMmMxNTFkYjBjNmZiNDM1Mjk4OGZkODE3Y2ZlZmY1NGJhOCBsZWdhY3ktdHJ1bmsKKzc1MjkzIGFiYmM3OTc1NzVjNDIzNzBhOWVjZTFiY2RiNDUwNjFjOGVkMTU1ZDIgbGVnYWN5LXRydW5rCis3NTI5NCBlYjBjMzlmNjJkZTE5Y2M3YzI0N2Q2NDQ5MDk4Y2M5ZmUwYjU0ODUwIHJlbGVhc2UzMS1tYWludAorNzUyOTYgNTQ1OGMyMGFhMGNmODM5NWJmNGRiNDliMWMxOTY4NTdkZmUzNTA5NyBweTNrCis3NTI5NyA5NDZlM2FmMDBiMGI4ZjEzYjY4Zjk3ZDg3YWY1YjJlM2ViNzZkNTFkIHB5M2sKKzc1Mjk4IDJjNjBlOTQ2MDYyZWMwYWZhYTIxZDNiZWE3YjcyNDNmNjM1OTZiYmIgcHkzaworNzUyOTkgMjVlNTFjNWIwNjk2ZTg1YzQ5MDFiNjk2ZWQ3YTI0NWRjNjZhYTk2YiBweTNrCis3NTMwMCA4OTZhNGZiMTNmMzVjOTFkZmZiMDU0ZGY4NWVlYTgyZGUzZTlkZTc1IGxlZ2FjeS10cnVuaworNzUzMDEgMWVjOGM3ZmI4ODA3YjVhZmNmNmM1MzY1NDBhNjhhNTgxNTU4ODk4YiBsZWdhY3ktdHJ1bmsKKzc1MzAyIDEyY2Q5NGQzOTg3NDY0OGViMGYzY2ZiNTM3Y2VkZmMwZGQwMGYyMzEgcmVsZWFzZTMxLW1haW50Cis3NTMwNCA1N2VlMDc5M2U0NjI3YjgwY2UxMmI2ZmY0MDM0ZmVhN2FkYzQ1ZDc1IGxlZ2FjeS10cnVuaworNzUzMDUgNjg0OTYwZmIxY2JmNjRlODU3OTc5Y2MyYTk2ODVmMDY3MTZiYzExOSBsZWdhY3ktdHJ1bmsKKzc1MzA2IGFiNDIwMzNmZGZkYmU1YWI0ZTEyNmVlNWUxYTgwODFlYzFjZTAyMzEgcHkzaworNzUzMDcgOTFhYTA0NDEwMTM5MGNlZDM5OGFhZDYxZTcxMDAxYTA2NzBkMTU5YSBweTNrCis3NTMwOCAyODM2OTM5ZTdjNTQ3ZmZlZDQwNjQ2ZTEyMmZmM2FiZDBlYjIzNjJiIHJlbGVhc2UzMS1tYWludAorNzUzMDkgMjk5MDhmMmJjOTNmZDhjZGVjMzU3NGNlNDcwYTVhZDAxZWYwNTdiYiBweTNrCis3NTMxMCA2ZDA5MmE1MWUxODdlNDUyMmQ2YmRlODM1ODQ5Y2MyNjE1MGY2ZjBlIGxlZ2FjeS10cnVuaworNzUzMTAgNGY5MTMxMmQ2ZWMyYWIzNWU3YWI4MjJhODNkYTAwOTIzMGYxMjRhYSBweTNrCis3NTMxMSBiNWVhNDc3M2FmZjEwMjFhMzU2MTFiZWEyMWQwZTRiYTk2NzRlMzU1IHB5M2sKKzc1MzEyIGEyZjAyYTEyNWZlYjBiOTY5ZDgzODY0YTBlOTQ3Zjc5YTk4MTQzYTggbGVnYWN5LXRydW5rCis3NTMxMyAzMmMzNWY5YjI0NWM4N2MwYzA3OWY4NDFiOWQ3YzVkNWM2ZmNhOGMzIGxlZ2FjeS10cnVuaworNzUzMTQgZDczZjIyMTVlZmMxOWY5MjM3MjY4ZjhiNDczMzhkNThhMzljODBlMCBweTNrCis3NTMxNSAzM2IwNDEzNTAwMzQyYWY3MGMyOGI5Y2QzNTQ5MGMxYTU0YmQ1N2MzIGxlZ2FjeS10cnVuaworNzUzMTYgZWYzMWIwNGRlNTA1NjJmZmM0NTBhNmExZDQwZTBhZWVmODhkNzZhYSBweTNrCis3NTMxNyAzOTMxYzc4YWYxMTc1YjNjNzQyNGYzMzEzZGYwMGNiOWYwNWVkY2VkIHB5M2sKKzc1MzE4IGZmOGM4NmEyNGIxNThmYmFlMWNmNDU0ODU1ZmY1OGM4NmYwMzQxNGEgbGVnYWN5LXRydW5rCis3NTMxOSAzNTYxOWNmY2QwYjViZjVhNDMwMDFmNjIxM2ZiMmQyZjMzOGQ4NDU4IHB5M2sKKzc1MzIwIDIyMGY3ZGVmZmJhZmI1NzYwMmJhNzM1ZjQzM2IyZWQwNzAxMzNmYmQgcHkzaworNzUzMjEgNDJhNmEyMjQ5NDc0Y2E2YjIwYzExMDRhYWU4NmJhMDc4ZDVmMjU3ZiBsZWdhY3ktdHJ1bmsKKzc1MzIyIDM0OTk5YTFhZWE5YjI2MTc2MTNmYzBlYmMxNTliZjIxMWQ2MGY3ZmIgbGVnYWN5LXRydW5rCis3NTMyMyBiZmE2MGRmNzY5MjkwYTEyM2UzNmJjZWU0MmQwYmYwNWEzNTQxNDFkIHB5M2sKKzc1MzI0IDQ0MzE0OWZiMzU3NDhmNWNkY2ZiYTg5OWE5NzI2ZGYyOTFkZjVkMGUgcHkzaworNzUzMjUgNjU4N2VhNmQzZTc4NDVkZWY5YTIzYzUyYTIxMjViNDgyYWI3NTA4ZiBsZWdhY3ktdHJ1bmsKKzc1MzI2IGYzMmZlZGE2NWM4NTZhZTRhZDI1ODRkZDhjMDc3NzRmZGVlMDgyY2QgcHkzaworNzUzMjcgNDU4MTUzZDVkODJkNmY3MWM3ZmU4ZGI0MjE2ZWE4ZTQ4ZjY5ZWIyNiBsZWdhY3ktdHJ1bmsKKzc1MzI4IDIxNjhiOWQ0OWUzYjE5MDhiMmMxMmZhZGE4NWRkNTQ2ZmFjYzNjMjYgcHkzaworNzUzMjkgNTU5N2JhNzBhMzM2Yzg2NWYwNmE4YTE5MDJkMzIxNjk3Mzc5ZDgwNCBsZWdhY3ktdHJ1bmsKKzc1MzMwIGY3NmUyZTYzNzczMDE4OWE0Y2YxNjA4ZWY0ZjQ3ZjFhMjVmOTdkNzcgcHkzaworNzUzMzMgMjRlOTJjZWYyNjY0NjM1OWZlMDI2MTNjNjAzMWNiOWMxYWM1N2NiZCBsZWdhY3ktdHJ1bmsKKzc1MzM0IGI5NDJjNzA2ZTMzODEyMjhjMmFmNzljZGI5YThiMjU1MDAxMjVmNDQgcHkzaworNzUzMzUgNjk2YWNlYjc2MzViOTk5NjU1NzhjYTU3YTk4ZmY0ZjNiOGQzZmY4YyByZWxlYXNlMjYtbWFpbnQKKzc1MzM2IDg2NzYzMzMzMGE5MzhlNzQ2Mzk5N2Y5NTQyODAzN2UzMGQ3YmEzYzYgcmVsZWFzZTMxLW1haW50Cis3NTMzNyA2MTk0ZmQ3NTQzMjM5OGY4ZTVlYmU4OTIxYTAyNmI5MDJlYmFmMmYyIGxlZ2FjeS10cnVuaworNzUzMzggODZiNjg0Yzk2OTQyNGIyZWFlNmY5ZDY1MWE0ZDBhMzUxN2ZjM2U4ZSBweTNrCis3NTMzOSAzMTMwYjdlODEyYjA0ZWFmMzk4ODQwNjNkNWNmNWY1M2UzYzE4MzM1IGxlZ2FjeS10cnVuaworNzUzNDAgODliNGJiMGFhNWFjZjgzODYyOWU2MTA5M2YzZTM2MzRiM2NhMWVhZCBweTNrCis3NTM0MSA0ZGQwOTAxMDBlY2FmYjViNjkyODk0MWQwYzE2ZWUzYjE2ZmYwMDBjIHB5M2sKKzc1MzQyIDNlZDY1NzE2ZDdhZDI0MmM5OTk2Y2I2YTAxZjQ4NjBiNzAyN2JlZjIgbGVnYWN5LXRydW5rCis3NTM0MyA1YzM2NWFhYjEwZDFjZTMwZmU3NDUwNjcwZWJkNTZhZTk4MGViNGRjIHB5M2sKKzc1MzQ0IGMxMDViOThlNjQ5ZGU5YTQ1ODQzZTgzNjMzNWUyMDY5MzMwMWQ4OGMgbGVnYWN5LXRydW5rCis3NTM0NSAwYWQ3ZjljOTUyYjA4Y2ExMjg5MGI0YWQ0YjAzNDM4YWE4NzE5ZGI3IHB5M2sKKzc1MzQ2IDRiYTI3ZDE4ZGQ5MmRhYWZiNzNiMTdmOWZmNTk1NTQ3ODU2NDQ3Y2IgbGVnYWN5LXRydW5rCis3NTM0NyBiZGU4YTM5NjIyOGMyYWFjMjFlNDM5Y2IyY2IxMDc5OGU4YTQyZjU5IHB5M2sKKzc1MzQ4IGExNWM3ZDUwYjNjYjY0ZTAxNmVkMjNlMzhiN2YxMzJmYWNkOTM0OTUgbGVnYWN5LXRydW5rCis3NTM0OSAzOTdlMDJlMGJlOTMxNGI1NDIxMDNmZDU2ZDQ5OGEyYTA0ZTM2YjEzIHB5M2sKKzc1MzUwIGNhMDE4ZTJiYjg2NTRiOWI1OTRmNmE3YTRhNDcxYTIwNDJmNjMzYmIgbGVnYWN5LXRydW5rCis3NTM1MSA1MmQ2OTczY2JkOTRlYjMzNDRiMDM3M2MyZDZiYTMxM2ViMWJkYWViIGxlZ2FjeS10cnVuaworNzUzNTIgNTNjODNhMTMyZTFlYTIxYmI2YzY2YWU5NGJmNDQyNzQ3OTgwMmEzMyBweTNrCis3NTM1MyA2OThlMGU2OWM3NjU3YjI2OWMwZTRmMTI4NjA3ZGVhYmM5NDM1OGE1IHB5M2sKKzc1MzU0IDZhNWUwYzkxM2M3Y2ViYWFjOGZhNDE3ZjM1Njg3NDAzODU5ZTgwNjQgbGVnYWN5LXRydW5rCis3NTM1NSA5MjA0MDhlNjAzMDMyMTMzN2I5MTNhMWMzOWZiMWJlY2RhMzJmZDcwIHB5M2sKKzc1MzU2IGU0NjE5Y2Y5ZTYyY2JlMTI4ZjllYWFiMmMxY2Q0Yzk5MjVmNmM1ZDMgbGVnYWN5LXRydW5rCis3NTM1NyA4ZWU0NTE3OWM1MDM5ODdiMDNiMDdmMWE1MWI3Y2Y5NzBhOWM1N2Q3IHB5M2sKKzc1MzU4IGE1ZDdiNTI3Nzk1MTkzY2M2YWFjNmMxZDkxZWI3MDhlZmJmNjQzYzQgbGVnYWN5LXRydW5rCis3NTM1OSAxNTIxYTY1N2E4NWFkOWI1NjAxODk3N2M1NTliMDA0OGFjNDEyNWE3IHB5M2sKKzc1MzYyIDIwNWI5NmVmYjc5MDBhMTI4ZTczMGMzYzZjODkyZmU5Y2IxNzg0MjYgcHkzaworNzUzNjMgMzIwMDhkMjNmNmNiNDhhMWVkYTBiMjdmMWIxYWY2ODhiMGVhNzdmZCBsZWdhY3ktdHJ1bmsKKzc1MzY1IDlmNzY1MTE4ZDliOTcxMzlkNmU2ODNmOGJmNjYzNTdiODU4OWRhMmQgbGVnYWN5LXRydW5rCis3NTM2NyAyMjAwOGQ5MzRlNjM3NTkyYzQ3MjdjYmE5MmYxNjZhMTkzMmQ4N2ExIGxlZ2FjeS10cnVuaworNzUzNjkgNDNhZDU1NDYxNWI2ZDIwMGM2MmZlZDc1NjRlZjY4MzUxNDc5NzNlMCBweTNrCis3NTM3MCAwNTA3NDhjZTVhZDllYWUyNDI4MmVhYWI2N2M2OGJkYWQ4M2RkZTM2IGxlZ2FjeS10cnVuaworNzUzNzEgNGI1ZDM5OGViODY2NjQzM2RlZmRmOGQ3YTIzN2MyNmM4MmY4ZTgzNCBsZWdhY3ktdHJ1bmsKKzc1MzcyIDlhMmMzN2MzMmI3ZTcxODBhNzMxNWRhYThjYzQ4YmY1OTM3MjBkMmYgbGVnYWN5LXRydW5rCis3NTM3MyBjZGRiNjIwZjBjZGEwYWUxNGIzMTFiODM0NzhkZmQ1NTVmNTBiZWEwIHB5M2sKKzc1Mzc0IDE2ODg0Nzk1NTMyNDk0YmQ2ZWUwMTc4MTZhZDZkNDhjNmU3ZjQ5ODkgcHkzaworNzUzNzYgMzkyMmU3MzRjOWJiNzMyZjlmNGU0ZGY5OGNlNzliYzUyZjE4MGI4OSBsZWdhY3ktdHJ1bmsKKzc1MzkwIGY1OWRhOWM5MzQyNWE5ZjljZjYxN2M4N2NhYzA0ODU4YWE1YWVlOWUgcmVsZWFzZTI2LW1haW50Cis3NTM5MSA5NWE2OTY0MGViZDNiZDE3OTdmYThiYTJhYTJmNzAxYTcyNzUxN2QxIGxlZ2FjeS10cnVuaworNzUzOTIgOWQxN2JiNGYxMTcwZmFiMjEwZjc4Nzg4MjMzYjIyMThmNTY4NDJkYSBsZWdhY3ktdHJ1bmsKKzc1MzkzIDIwOWUzODI1NGFlOGI4NzhkMzQ1MzU0ZmVmMGRlMjllOWUyMTI1NzggcHkzaworNzUzOTQgOWJkNmE3YWVlMTNjYTgwZTg1Njk3OWVlMzk3OWZhZDIzYzVlNjE2MCBsZWdhY3ktdHJ1bmsKKzc1Mzk1IDJhNzU4MzcxOGQyNTNmZDVhMGRhMjZjZjk4MDU4MGYzNjU4OWQyZWYgcmVsZWFzZTI2LW1haW50Cis3NTM5NiA3ZmU4YTgzMTNhNWIyZTdlMjM0MjJlZmFjZjk2NzZmYjM1ZWJkNjRkIGxlZ2FjeS10cnVuaworNzUzOTcgZThlMTAzNDg4ZmIzN2UzMGI5ZGZmOGY0YTgxZjYwNzZjMTI0NmNhNCBweTNrCis3NTQwMCBiZGJkYTdhOTRjMzMzZTAzNjVkZjYxOTJjMzk0MGE3MzkwN2Q4NGNlIGxlZ2FjeS10cnVuaworNzU0MDEgNzc1NjFjZDM5ZmQzOTdiZDNmYWNlMzJlZWU1YTk2Y2JiOTQzNmU2NiByZWxlYXNlMzEtbWFpbnQKKzc1NDAyIDAzODU0NzMyYTZjMjhlNzM5ZDU1NDZmMjRiOWFhNzJlMWUwMDViZGUgbGVnYWN5LXRydW5rCis3NTQwMyAxODM0NzRiYjAyMTM4ZGE4OGMzYjQ5NmM1MmE3YjFiMGEwNWRhNGNhIGxlZ2FjeS10cnVuaworNzU0MDQgNjM1MDhlYzc2ODQwYWE2NDgyMDk4NzU3MWE3ODk1ZWFkZDEwY2YwYiBweTNrCis3NTQwNSBkYzc1ZDE3ZGQzMDRhNTA2YmQxNTdlNWMyYTRlYWVmZjMxN2NhY2UwIGxlZ2FjeS10cnVuaworNzU0MDYgNjdiYjE3YzJlODY4NTIxOWZhYjNjN2JmYjIwMGMwNmU0ZGQ4NTBjMiByZWxlYXNlMzEtbWFpbnQKKzc1NDA3IDI0N2Q1YTVlYWZhNTM0Mzk3NWI5OWYzZWU5OGZhNGMxZDk0NTgxNjggbGVnYWN5LXRydW5rCis3NTQwOCA1OGU1NzYzMWJlOGNiNjM4ZWQzMWU0YjQyMjlhMDM2ZTQ3N2E5MjhkIGxlZ2FjeS10cnVuaworNzU0MDkgMzg2YTRkN2MzYzk5Y2ZhNDkyNDNjMzhjODVmYTQ0NDliZmY3OGQ2OCBsZWdhY3ktdHJ1bmsKKzc1NDEwIGNkY2Q4MDVlZWU4NWQ2NTA1NzMwMjExMjJlMDYyNWZiNmZmNzIyYTIgbGVnYWN5LXRydW5rCis3NTQxMSBlODUzMmNjOGExNGU0OTc0ZjhhM2YyNzRjMmMzZWM3YzNiMDRiOTg5IGxlZ2FjeS10cnVuaworNzU0MTIgOWU3MThkOGY3MWU4ZjAxNGE2Nzc2YmEyYzFjYWI1NzZkOGU3MGI2NiBsZWdhY3ktdHJ1bmsKKzc1NDEzIDRlZTM0M2M0YmM0OWQwN2UzZWU2NjViMTJjNjAyMzU5OTdjNWY2MDIgbGVnYWN5LXRydW5rCis3NTQxNSA2ZDUwYzRjMWE4YjM0NmZlMDM2NGYyMzdmYzI4MGNhYjFhYWEyNzhkIGxlZ2FjeS10cnVuaworNzU0MTYgNWRmYzU4ZjM5YjlmNTQyMTkwZTY5ZDcwY2EyMjdjZGZlY2MzOGI0NSBweTNrCis3NTQxNyBiZjhjOWJmNzExNWM5M2EyMzBmOWZiOWYzMzhmNDk5YjJhNWRjYzFjIGxlZ2FjeS10cnVuaworNzU0MTggZDI0Mjk4ZGYyYTY2MjA2YmQwMzg1OGQ5M2U3MzRjMDZhNTE1MDVhYiBsZWdhY3ktdHJ1bmsKKzc1NDE5IDkzMzUwYWNiNTQyNWJhNGYwMGI1Y2Q4MDhjN2M2MDRlZTdhNTAyODEgbGVnYWN5LXRydW5rCis3NTQyMCA2NGUxOWE2ODk4ODYxN2VmNTQ1ZmQ0NTE4MGQwZjg4NzJlYWUxNGUxIGxlZ2FjeS10cnVuaworNzU0MjEgZmUzOGQzYzE3ODg4YzhjMGViZWExM2I4YWFlMWYxZmNkZTJkMjA3YiBsZWdhY3ktdHJ1bmsKKzc1NDIyIDE2ZGIyYTkzMjI0ODljMzllYmYyYjA1ZDdiNjA2ZjM5NGZiMGFhNjcgcHkzaworNzU0MjMgNTBiN2Y1NjgxNGY5ZTNlYTNjNjEwYjFmZWIyNmE1N2VkMTAzZDkxYiBsZWdhY3ktdHJ1bmsKKzc1NDI0IGQwZjAwNWU2ZmFkZDA2NGQ3NTAzMGE5YWRiYWZiMTJlN2EyNmNhN2QgbGVnYWN5LXRydW5rCis3NTQyNSA5MDQ0ZjY0YjEwYWUwNmI4YzAxYWYzY2Q0Nzg2ZjJlZTI3NDE0NjQ4IHJlbGVhc2UyNi1tYWludAorNzU0MjkgZmE2MTg4YzQ3YjYzZmM1MjVkODM5Yzg3OTViMjVkMmYzNTc2YWQwMCBsZWdhY3ktdHJ1bmsKKzc1NDMwIDQ1YjYyNzI1Mzc3YTYxMjg1OTdkYmNmZGM2ZDlmZjVlNzRjZGUxNjEgbGVnYWN5LXRydW5rCis3NTQzMSBhNGIxOTIyYTMwNzQ5MjE4NGFhNDQ2OTRkOTI4Y2I1MWMxMjRkOTBlIGxlZ2FjeS10cnVuaworNzU0MzIgZTAwYzc4ODY5YjNjZDM1NjhkMTc3ZWFkMjcxMDliZjExODUyZDZjZSBsZWdhY3ktdHJ1bmsKKzc1NDMzIDk4M2VlZmJmNjY0OTM0MGU3N2RiMjUyMDBlYzE5NzIzNDM2YjczOWMgbGVnYWN5LXRydW5rCis3NTQzNCBlNGEwYjg3MzllNWI4YWI3YmY5ZTRmYTZlYmZmZmRhNzNmNDY3YTNjIGxlZ2FjeS10cnVuaworNzU0MzUgM2IzN2I4ZGQ3NmQ3NTAyNWYxNDEyNDdlZjRkOTUzZmNiNjIxOWZiMSBweTNrCis3NTQzNiBlYzUwOGM4OWFkMzY4MjA3OGNlNDNjMDdkZDY1ZGQyZGRkZDRjNDcyIGxlZ2FjeS10cnVuaworNzU0MzcgMjBkMDk1NDliODJjMGI5OWI3NzBjMTE0ODAyZDdkOGI4OWQyNWE5MyBsZWdhY3ktdHJ1bmsKKzc1NDM4IDE2MTdjMTE1NTZhZmEyOGMxYmNhYjU0ODI0OTBhNWYzZjFkZmIwZGIgbGVnYWN5LXRydW5rCis3NTQzOSA3ZTU4NDk0MjA0YzhmNmU0M2RkZWIwOWE5Njc0OGFlYzQ3ODQzYzM2IHB5M2sKKzc1NDQwIDI3NTRkNjQxODBkMWRjNTU3ZGFiMjk3OWE3OTI1OGE4NzBkNGQ2MDIgbGVnYWN5LXRydW5rCis3NTQ0MSAzYmM2ZmIzYzBjY2QwOWEwNTA3NGZiYTJmYTRlN2IzMzQyMWZkODc5IHB5M2sKKzc1NDQ1IGQ5ZTQ4YWI2MjU2MmMxNGYwM2IyNTJiYjExOWNmM2I4ZDgyNmFmMzUgbGVnYWN5LXRydW5rCis3NTQ0NSBkOTYzMDUxN2M3MGMxOTUwNDIyYWM3ZTEyMmZlMTM4OWZmMWMxZjE1IHB5M2sKKzc1NDQ2IDdmYTE0YmU4YWQ3M2NiMzU3NTc2NjVkODEzODFlMTczMGQ0ZDFjNTYgbGVnYWN5LXRydW5rCis3NTQ0NyA4ZGZhODQzYzgzNTAxYTBlNWRiOWRhZjNjNzQxMmJmNjhlMDhmNGViIHJlbGVhc2UyNi1tYWludAorNzU0NDggMjRkMzIxZmQzZDFhMjBiMTQ3NDY0OGViMWIzZDRiZGYyMjQ1YTI1ZCBweTNrCis3NTQ1MCA5ZTQyY2MxOTJhNDQ2NTlmNDgyYjg3NzBhYWJmM2QyZDdlZjQ4Yjg3IGxlZ2FjeS10cnVuaworNzU0NTEgNzYwMDQzNmRiMmE5Yjg2OWI5ZjAzMGY0YjY4ZTBmN2M4ZTkxZDRmYyBweTNrCis3NTQ1MiAyNmIxMWU2ZmU1ZTMxYzY3ZWJmZjg4Y2ZlNjljNGRlMGFlODNjOGNlIHJlbGVhc2UzMS1tYWludAorNzU0NTMgMzY1OGMwYTk1ODkyMmFmOTI2ZjM5OTc2NzRmYjFmYzdjNzU3ZDgxZCBsZWdhY3ktdHJ1bmsKKzc1NDU0IDYyNGY4MWI1ZWMyNGY3NzNiYjAxZjA3OTQ2NWQ4ZGM3YWJlNWJjZDcgbGVnYWN5LXRydW5rCis3NTQ1NSA3ZDcxYzUxZmMzMDhjMWIyNjUzYjlmMjNkMzdjNDFlNDU5YTE3NTQ0IHB5M2sKKzc1NDU2IDVlYTZjZDI4MzljYzdjMTAyNzZlOWEyNzVjMTZmNTAyZDk5YTc1MzQgbGVnYWN5LXRydW5rCis3NTQ1NyA5YzA2YzczMDk3NjU2NmM0ZWQ5YTkxMTFiOWVhZGZiN2E5MDhiMGYxIGxlZ2FjeS10cnVuaworNzU0NTggNTI5OTU3OWY1NzlhODU0YWZiOGUwNzE3MzMyMzA0ZGNhN2UyNmM2OSBsZWdhY3ktdHJ1bmsKKzc1NDU5IDRjMWZmN2IyNDgyZWUxOGE0ZTk4ZjAwM2JjZjU5ZTg2OTI1NzQ4OTYgbGVnYWN5LXRydW5rCis3NTQ2MSBhMTA4OGJiNGZjZjhhNmQyMTM0NjdlZjgxODQwOGRiMGJkODE5NzhmIGxlZ2FjeS10cnVuaworNzU0NjIgMjA0OGQwNGRlYWI0MmM1NTViODM1YmE3YjQxOWQ0YTI4ZDljMTkyYyBsZWdhY3ktdHJ1bmsKKzc1NDYzIDgxNDMzYTY3NmE4YmFmZTFmZTM2NWY5ZGMzODBiMjJhZmQ1YjliMGMgbGVnYWN5LXRydW5rCis3NTQ2NSBiODE4YTdhNzBhNDc3ODExYTFmMTBhNDNiYmNmZmU0NGVkNTVjNzRiIGxlZ2FjeS10cnVuaworNzU0NjYgOWYwNTNlNTUwYzk3NzY4YjBmYWRmODI5NWIwMjQ2ZDNkNDMxNjYyNiBsZWdhY3ktdHJ1bmsKKzc1NDY3IDk5MzIwN2RjZTM5NTViNDA4ZjZhNmEyNTE1ODUxOWQ2MDk4OTQ1YmIgbGVnYWN5LXRydW5rCis3NTQ2OCAwMDc1MDVjYzFlMmM3MzU2ZjY0YWQ1ZWZmNGRhZTZiNTRkOWQyODk1IGxlZ2FjeS10cnVuaworNzU0NzAgYWMzYzYzMmUxYzEzYzMxYzY2MGI3OTIyM2ZmNzNlOTkzYzUwZjA4MyBsZWdhY3ktdHJ1bmsKKzc1NDcxIGU2ZGViMTVjNWFlNmEwNmZjMWQ0NmE5MWIzMjc0N2Y3ZGY2NjFiZWYgcHkzaworNzU0NzIgMzU0ZmE1NjFhYWRmNmNkYTEwNTY4Y2E1OThlM2E0MTA3Y2UzY2I3MiBweTNrCis3NTQ3MyA0OWUzZDRhYzY5YzZmOTgwYzM1MzU1YjAwNWM4MTc0OGYyMzlkZWVjIHJlbGVhc2UzMS1tYWludAorNzU0NzQgOGE2YjYxNDg0YTk4NGI4YThmZDE4OTcwN2FhYmZhYjU3ZDY5ZDA0ZSBsZWdhY3ktdHJ1bmsKKzc1NDc1IGMzN2NhOWFjZDFmOWFhY2I5ZWViMzgwZjE3OTJjNDYzZGZhOTZhMzEgcmVsZWFzZTI2LW1haW50Cis3NTQ3NiAzMGJiNGMzNTU1OWQ2MTY1MWU3NTFlNzE4MjU3NDRjZmNjYjc1ZDUxIHB5M2sKKzc1NDc3IGQwNzk4NzdkYTMzNWU2MzgyOGY5Nzc5NDY1M2U4MTEzYWNiNTM5MmIgcmVsZWFzZTMxLW1haW50Cis3NTQ3OCA4NGMxNjgwOGJhMmM4MWRhMmVlYmNjMGJjZGFlMjdkYzU4MDM3MGQ4IGxlZ2FjeS10cnVuaworNzU0NzkgZDk0NDQwMDExNGU1MDBkNWM2MjlhNWZlZWVmMzNiYjU4MmM1ODU3OSByZWxlYXNlMjYtbWFpbnQKKzc1NDgwIGFhNTNhMmQ0ZWYyZmNiZTliMzhhMDUxYjZiNzhhZTdhNjc4OTRmNjEgcmVsZWFzZTI2LW1haW50Cis3NTQ4MSA1ZTdjNWM5NGM1NzIxYTE2Yjk3YzIzY2NkYTMwMTQ3ODIwZjAxODU1IGxlZ2FjeS10cnVuaworNzU0ODIgMzQ5YzAzMzc4OTZhMjcyZjYwNmY5MGVlNjZlMDZhODYwMjYxNzc3ZiBsZWdhY3ktdHJ1bmsKKzc1NDgzIGVkN2RlYzEzNjQzMGZlNTViNjViOWJmYjczOGI3M2Y3YTE4NDcxMmUgcmVsZWFzZTI2LW1haW50Cis3NTQ4NCA3NzdiZDVkZDFkOWFjNTQxYTJhM2E5MzdmYmE5MjY4YzliZjJlM2E1IGxlZ2FjeS10cnVuaworNzU0ODUgZTY3ZWI5NjYwMDQxNzlmZWJkYmY5ODc0MWFhZjNlOGRmMjEwMmFhYyBsZWdhY3ktdHJ1bmsKKzc1NDg2IDc3ZWNjNWU0ZjY2NGM3MTQyNGU0ZDUxYWE1ZjEzNjNhMTYwOTJjYjEgbGVnYWN5LXRydW5rCis3NTQ4NyAyOTI4ZjFlOGIzODU4MTU0MjNhZDJlODliNWQ4YzkwMTcxMDUyMDYwIHB5M2sKKzc1NDg4IGNiNTNiMWZhNzIwNmYyZjUyMDUwNTI3OWQ1ZDg1NTQ0ZWI2YmZjM2QgcHkzaworNzU0ODkgM2RiYzYyMDdjYmY2ZGU0ZmZhNTFjYTBiOWM5N2RiMTJkZTAzODYzNSBsZWdhY3ktdHJ1bmsKKzc1NDkwIDg5M2MyYTRjOTU0NDQ1NWY3OTg3MTg4MDFlOWY4N2EyMWRlZjA0OTYgcmVsZWFzZTI2LW1haW50Cis3NTQ5MSBkZTJkOTlhYTQ2ZWFmZjQ4M2E5ZjVjYWIyOTAyNzFhMWRlNGU1NjY2IHB5M2sKKzc1NDkyIDJiNjM1OTcwOTE4OGIxMWI2OWYzMTdlYjBlZGQzY2RkNGIwMWU5NjIgcmVsZWFzZTMxLW1haW50Cis3NTQ5MyAwOThiYTNhNjM3MzBjYTZkNzY0YmJhZGY1OWYwY2ZhNzRiYzYxMDAxIHB5M2sKKzc1NDk0IDUzOTcwMDJmN2U1ZThmYjkxODEyMWQwZDBmNjAzNzQ3MjVjZjdjOGYgcmVsZWFzZTMxLW1haW50Cis3NTQ5NSAwZjllOGQzZWNhYzM4YzU3NjA3MGY1NTU1MjlhNzlmNjkyMmMxZDU4IHB5M2sKKzc1NDk2IDJjNjBhYzRlZDY1ZjY5MDBiODRhYmFhY2M5YTkyNDNiZTQzNGJhZTIgcHkzaworNzU0OTcgZWExZmRhZmJlNGZlMjQ1OGFjMTcyODdlMGQ2YzcwOWVkMDBmY2U1YyByZWxlYXNlMjYtbWFpbnQKKzc1NDk4IGJmZTc1NmViMDlmYWFkMDVlN2FkMGE5YTVhMDhkYzY3YmUxM2ZiYWYgcmVsZWFzZTI2LW1haW50Cis3NTQ5OSBhMGU0MWRmYjk3MmI1MTg3ODMzOWNmYWIxZjE3NDlkOTA1YmY1ZWQ3IGxlZ2FjeS10cnVuaworNzU1MDAgMzg2NDE0Yjg0NmViY2NkY2M3ODRlZDVkNzcwMTMwY2NlNjUyM2RkZSBweTNrCis3NTUwMSAyNWVmNmY0ODE4YTA1Nzg5NGJkOWQ3NzBmZjk3NDg5N2MwODU2NDE3IGxlZ2FjeS10cnVuaworNzU1MDMgMDY5OTkyNTM5ODdiYjUzODVlNzE5NzJlNTBhZGE2NTEwMzQzZjkxNSBsZWdhY3ktdHJ1bmsKKzc1NTA0IDJhNjg1M2ExM2EyZjc5N2Q5Yjg0MmZjMjYwOTgxNzJkZTcwOGE0NGMgcHkzaworNzU1MDUgM2NjZDFkNmYwNWE2YjVjNzBjNWE1ZDk4ZjRmM2M0YTExODY2MGIxNCByZWxlYXNlMzEtbWFpbnQKKzc1NTA2IGQxNjY2Y2M3YmM3NGYzYWQ5ZmU0ZmNmMWYwYjhlNDkxZTlkYmE1MmEgbGVnYWN5LXRydW5rCis3NTUwNyBkODllNGE0ZTBiMjA3ZmRiNDBjNmY5OTI3NTgzY2FkYjk1NDA2ZjExIHJlbGVhc2UyNi1tYWludAorNzU1MDggZWQ5OTAyNmUwN2ZjZGRlODg2YzdhMWM0MDdhZmE5OWUzMDg1ZDdkNyBweTNrCis3NTUxMCA3OWNiMDdmYTM2ZWMxMGUwMDNjNmEwNTYzYTkxY2VlZGNjMThhYzJmIGxlZ2FjeS10cnVuaworNzU1MTEgNjc0OWM4YWRjNDk4NTdjZGRjMjFlZWQ2YzdkZWYwNmViOGM2YTc2MiByZWxlYXNlMjYtbWFpbnQKKzc1NTEyIGU2NDRlZTRlNzZjN2JjZjdhYzFmNGU1NTU3YzE2NTRmYzAwM2UzZGEgcHkzaworNzU1MTMgZjQyNjNhOWJkOGFkZGE3M2FkNGE1NDViMjFhZDU2YjMxOTM4YzAwYSBweTNrCis3NTUxNCA5ODI1ZWMyMjhlZmIxMmNiMmJmNjc4MTNiNjk3OGNmMjYxNGI1MWVmIHJlbGVhc2UzMS1tYWludAorNzU1MTUgMzcxOTM3YmE2ZmE2MmNiMGJjOGY1Nzc2Y2U2OWQ4NmMxNGY2ODc4YiByZWxlYXNlMjYtbWFpbnQKKzc1NTE2IGQ4YTdiMzE0ZmM1MDUwMTI1MzlmYmRlNWQxZDVjYTM4ZDUyOGNlMjkgcmVsZWFzZTI2LW1haW50Cis3NTUxNyA3MTg4MDAyOWZlNzU2MmE0MzgwZTIwY2E5ZGUxYmEzMjM4OWYxZDE5IHJlbGVhc2UyNi1tYWludAorNzU1MTggZjMwNjY3Y2Q0MDQzYzQzYjg5ZTAzNDg5MGU4YjA0NjY4Y2U0MGY3OCBsZWdhY3ktdHJ1bmsKKzc1NTE5IDE2MGYxNmE5MWVlNzM4NWE1MGIzNmExM2YxYWJkMjU4M2IzODI1YzYgcHkzaworNzU1MjAgYmQ2ZGVlNmE3OGMzOTVlYzYxN2ViNDFmMjZiYmFkMTBhNmU4N2ZhZCByZWxlYXNlMjYtbWFpbnQKKzc1NTIxIDQyMzAzYzhjYWIzMTVlYmU3MGE5YmM0YzhiMTExYzcxZTQ3MjZiZmQgcmVsZWFzZTMxLW1haW50Cis3NTUyMiA0YTk1NDJhY2NkMTMzNDVlNzVlMGJmZmQ5N2RmNTVjZmUxODVhNjUwIHB5M2sKKzc1NTIzIDY3MGUyMjJhZmQ0ODE3ZDM4YWUxYmI4ZTk2NDk2ZDc0ZDI0OTQ1NjQgcmVsZWFzZTMxLW1haW50Cis3NTUyNCAzZGFhY2Q5ODkyNWQ3ODY3Nzc4MDk1MjE3ZGZhN2E3MTc1NmRhM2I1IGxlZ2FjeS10cnVuaworNzU1MjUgNzMyNzJiZDk0ZDdiMDNhMTk5NzhhZGU4NGZiZjAwODk3MWJjNjgxOSBweTNrCis3NTUyNiAzNDE4MmY5ODU4OWI4YzlhMjM5MGI5MDZhMzZmNzM2YjcwMDRhNzkzIHB5M2sKKzc1NTI3IGY3NDAzMGJhNjYxMDg4ZjZlMjkyMDc5YTA3OThjYTlkOTZiMjRiMmEgcmVsZWFzZTMxLW1haW50Cis3NTUyOCA5MGMxMGRjYjI5MTMzOTIyMjE4YTdlMWQ2ZDI5ZTI0ODk2MTg3MDc2IGxlZ2FjeS10cnVuaworNzU1MjkgNDNkMGI0NzEwNmRmOGI4ZWVkZWQ4NTc5ZjFmNjQ3Y2Q4ZDEwM2Y5NyBsZWdhY3ktdHJ1bmsKKzc1NTMwIDU1NDFlNDJlMWM4MTFkMWRiZTQ2ZTM5M2UzNzIzYTBhNjRjNGQ5ZmEgcHkzaworNzU1MzEgODU2ODVlN2Q3MmM3MTg0YmM2YjczOWE1ODJkMGVhOGNmZTFiMWJlOSBsZWdhY3ktdHJ1bmsKKzc1NTMyIDU0MDMxZWNlNDNhMzNhY2ExNmRjMDlmMzJhMTI0NzdlM2VhNmI1NmIgbGVnYWN5LXRydW5rCis3NTUzMyBjYWYzYzkzZDAxOTM2YTRiMmU0N2FlNjJlODVlNzhjZjU5YWE1NWYyIHB5M2sKKzc1NTM0IGU2YzRkYmI1ZGIwMmU1MDhhNDllNzk3ZmFmOTM0NjM2MDUwMzE5MGMgcmVsZWFzZTMxLW1haW50Cis3NTUzNSA3YWQ2ZTc4YTljN2RjZGIxNTZkZWRhMmNjNDU1YTI2OGM4MjVmNmUzIHB5M2sKKzc1NTM2IGNlYzdmNGM1ODU0NDE0MjkwZjc1NmU1NjA0Mzc3OTlhZjc3NmI5MGYgcmVsZWFzZTMxLW1haW50Cis3NTUzNyBlZGYyMjYzN2JkOTA4ZDM3Yzk3NDA4NTkxNmQ2Yjc5NjY0ZTcxZTFmIHB5M2sKKzc1NTM4IDJmMTRiMGY0NTUxYWYyYTI5MDA3MzdlYzFiNDllZDE2NGE1ZGJkNDggcHkzaworNzU1MzkgOTFlZTgxZjFhNTI0MmI2NmU1YmM5ZjVlNTI2MDAwZjYyM2JlZjljNiBweTNrCis3NTU0MSA3YWU2ZDVlNGY3OTgzNWU3YjQwN2Y4YTcyZDA4YWYzMjdjMjNkMjY4IHJlbGVhc2UzMS1tYWludAorNzU1NDIgOTViZDcwZDVkNzE1Y2YwOGRiNTMxZDVlN2M3MjBhOTVjZGZkN2RkOSBweTNrCis3NTU1MSBiZGMzOTA3MjFmOTc1YzhkOWY2MTBlM2FmODU0MDk0MDY5YjdlYWJjIGxlZ2FjeS10cnVuaworNzU1NTYgYTIxOTk4ODkzYjFkZTQ2NjNkYmVmMWI4ZDlkMDdlMjk1N2U0ODAzMCBweTNrCis3NTU1NyA5NDFmMWJlNDIzYWExODg3MWViZDlmNTFhZGExZTM2ZWYxZGQwMDkyIHJlbGVhc2UzMS1tYWludAorNzU1NjEgMWI2MDJhMmQ4MWVmNTE4YjdlMjg3MjQyYTE2NzJiNTZlMWRjODBjZiBsZWdhY3ktdHJ1bmsKKzc1NTYyIDZlNGE0OTBlNzE0NzEzZWMwNGE3ZTQ1ODEzYzUwYzA2ODVkOGRmNGQgcHkzaworNzU1NjMgMjYwMDczOTU2MDdlODlkYzNmOTk2MTEwOTg0OGMwYzMwYjNkZjFhYSByZWxlYXNlMzEtbWFpbnQKKzc1NTcwIDEyMDc5YzNkNGI3NzljY2NmYmYyZTNhZDMwNWIxOTNjZTM3ZWVhOTUgbGVnYWN5LXRydW5rCis3NTU3MSBiZjc2MjQxMjBlYzdmZTFhYWUwODZiZGEwYmUyMzg5NjBlZTNlZDhhIHB5M2sKKzc1NTcyIDAyOTk5NTEzOTFlMzZhZDIzMTVkZDQwZjVmNGY1ODQzYWY3M2Y0MTkgbGVnYWN5LXRydW5rCis3NTU3MyBiM2JlZmUwZjJiOGRkYzJkZTQ3YmYzM2ZhMzk1OGRkNmNjMzkwZjJkIHB5M2sKKzc1NTc0IDNjZmQyMGNkNjQ1OWY1Y2M0MmZjYmExZjA2MmM4NGI3ZjMyMDc2ZTUgbGVnYWN5LXRydW5rCis3NTU3NiAxN2NlOTRhZWU3MDQ2YWI5MGYyODE0YmYzNjc0OWM0N2E5Y2MzZDEyIHB5M2sKKzc1NTc3IDFlNzAzNWZhNjE1NGM2ZjY1ZjA2MGY2ZDlhNTJjM2IxMjk0NTg4ZTkgcHkzaworNzU1NzggMjliM2UxMjZjMGMyNDY3MmY3ZjQzOGExNDhlYzVjMzg2ODEzMzBlYiByZWxlYXNlMzEtbWFpbnQKKzc1NTgwIDFiOTQ0NDk3ZTgxZTFkYmZkZjI1ODIwZDVlNWM3MDg5MTk5NTA1NWYgbGVnYWN5LXRydW5rCis3NTU4MSA4YzFiNjFlNzQ2M2E0MWY3ZjFkN2U2YzY4OTA0MGJhYzI3NWMyNTUwIHB5M2sKKzc1NTg0IDVkOGIyZDZkY2Q2MjI5ZGVhMmM0YjU3ZjE4ZGM0Yjk1Mjc2MDczNzUgcmVsZWFzZTI2LW1haW50Cis3NTU4NiA3MTZlYzNlZDNmY2Y4ZmFmNWUzZGI4YmE1YWYxOTM5MTIwMTRhYzEzIGxlZ2FjeS10cnVuaworNzU1ODYgNDE0ZTAzYzE0ODE1OWY0OWJkNmRlYmZlNWNhOGJiY2Q4ZmRlMDc5NyBweTNrCis3NTU4OSBlYmUxOWM0YzcxZjU3MDZjOTdlMmJhN2I4M2FhODNlNzg3MmU2YTk2IGxlZ2FjeS10cnVuaworNzU1OTAgYTliYTYzN2Q0ZGNkMzc1NjU0YzRiYzIwMTRjMzkwNGUyMjE5ZGE2OSBsZWdhY3ktdHJ1bmsKKzc1NTkxIDk3ODM0OWMwNzRjZTA4MjhiZjU1YzAxYTJhYTFlNjA0MzM2MDIwNTcgbGVnYWN5LXRydW5rCis3NTU5MiBmZTg1ZWYyN2RjNDc5MWU2NmRmNTRjOWQxNzA5NTQ1NzU2NGI2YmIwIGxlZ2FjeS10cnVuaworNzU1OTMgNWRlMWFjMjQyYmZiNTYzZjQ0NWY3MzZiNTY0OGQ3NWY4YWExN2NlYyBsZWdhY3ktdHJ1bmsKKzc1NTk0IDU4YmRhMTIwNWFjZDlkODkxYzM0ZTM4OTg1N2M0ZmIyYmFjNzAwN2EgbGVnYWN5LXRydW5rCis3NTU5NSAwYmE5YjIxNzE4MWVkOGM1NjA1ODNjOThmOTBlOWM2YWUyZWQyZDQzIGxlZ2FjeS10cnVuaworNzU1OTYgM2MyNmM2YjRkYjUwMGI3Y2NhZjQwZjExYmU1MGY4ZmI0ZDgzYjM3OCBsZWdhY3ktdHJ1bmsKKzc1NjAwIDA3ZWY1OTc2NmIwMjZlMDMyMTQ5OGU2MzI0YTAxODE1NGYyYmFmZTEgbGVnYWN5LXRydW5rCis3NTYwMSAyN2VhYWMwN2M1ZDZhODlhMWE2MWEwNzY3NjU0M2VlODBkZGE2ZWRkIHB5M2sKKzc1NjAyIGY1NTU2OGIzOTkyNTZjMjczMTgzNzhhMWRlY2Q3Mjk0ZjcyMzU4YjAgbGVnYWN5LXRydW5rCis3NTYwMyAwNjUzNDg2OTM1YjY0MTY4ZGUzNDRkMGE1MjA2ODZhMDFiZDgwOWNiIGxlZ2FjeS10cnVuaworNzU2MDQgYmFjZDRkNDIyNTZiNjY3OGY4NTgxMDlkNGZiNzExYmM0MzMwMGU3ZiBsZWdhY3ktdHJ1bmsKKzc1NjA1IDcyYTVmYzc5MGQwMWZjMjMyMjg2YmVjNzc4NmM3ZmRhODc2ZGRkNzQgbGVnYWN5LXRydW5rCis3NTYwNiA4YTU4YTdlYzkyZGM1NmQ2OWZkODliNWE1YTRhMjc4ZGI1MzUyMTNmIGxlZ2FjeS10cnVuaworNzU2MDcgNGNmYWY2YWVjNWViYzU1OTkwNWYyOWM2NGU4ZjdiNTNmYjNkM2ExNSBsZWdhY3ktdHJ1bmsKKzc1NjA5IGM0Mzg4ZTdlNzdlOWY2NmY2NDEyMDYwMWNmNjBlNzc4NDFjYjJhNDIgcHkzaworNzU2MTAgNTY5YTBkMTcwZmFjNzIwMzQ1MjJkYjY4ZTQ5NTRhZTlkNWM4NGQ3MyBsZWdhY3ktdHJ1bmsKKzc1NjExIDFiODg4MzQzMDEzOTExZmRmYjZlMzU1NzlmMGExMmM0OWU3YzdhZDEgbGVnYWN5LXRydW5rCis3NTYxMiBhMTdiNThhNDg2ZjQwYjU4NTFjNjQ5NmUzMDI1MmNmOTNjNTMxNWNkIGxlZ2FjeS10cnVuaworNzU2MTMgOWZmYTE1MTMwOTg0NjUzMTVlN2M5NzU1ZjY2MWZjNWQ3ZmZlOTVmZSBsZWdhY3ktdHJ1bmsKKzc1NjE1IDY4Mjc5YzEzM2ZkOTkyMmQ0NjE3NjA2NjFmZjAyOWQyOTI3OTcwNjggcHkzaworNzU2MTYgMzIxZTYzNWM5YWI4MjZhOGFmYTVmM2Y0NjhkMDU2NDU2NTM5MjI1YyBsZWdhY3ktdHJ1bmsKKzc1NjE3IGYzYjdiZDZlN2FkZDlmYTcxN2YxMTFjOGUzNjkyNDkxZjJhZGE0ZTQgbGVnYWN5LXRydW5rCis3NTYyMCBkYjIxYzNjMDA5ZGIzOTNjZTI3ZDk3MzdhMTE4MWEyNjA4OWI2ZDI5IGxlZ2FjeS10cnVuaworNzU2MjEgM2MwNjY0NDgwZjdhMTYwYmUzYTQwM2Q3Y2ExNzQ0ZjQ0MTlhZTUyNyByZWxlYXNlMjYtbWFpbnQKKzc1NjIyIDg4MTk1OGRhMjE5YTdhMzRkODAxN2RmMTEzMWM0MmQyYzE2NWRkMTcgcHkzaworNzU2MjMgNmQyNzJmZDFjZGQxZTdiNDVjZGJkMjg0NzhkMTlmOWRlNWUwNzBlMiBsZWdhY3ktdHJ1bmsKKzc1NjI0IDkyZGRlMjgyMTUzZGVmNTRiNDY0OWQwZDQ3ODIzOWJjNzRmODkxMjMgbGVnYWN5LXRydW5rCis3NTYyNSA5ZWI3OWU5NDIwNGQyNjVjODlmNDc5MzhmOTFmZTU4Mzc0MDRhZmI4IHB5M2sKKzc1NjI2IDYyMDA4NWFiNDk1YjQxNjQ4NDFhMzFlMzc5MWJlZmYxMjA1ZDgzN2IgcmVsZWFzZTMxLW1haW50Cis3NTYyNyBiMTFmMDJjYjExMjQ0ZjdkMmY1NWVlYTE1Y2RhNWE2ZjYzZTY5OWJjIGxlZ2FjeS10cnVuaworNzU2MzMgOWRmMzM5MzcxNzFmNjUxNmNiNTA3MTFjMzQ1M2JiOTQ3ZmUzY2JlZiBsZWdhY3ktdHJ1bmsKKzc1NjM0IGYwOTE0NDRkZWVhMDEwNDBmZjJmODNiOGUwYmYwMTZlYmQ5NTZiMmUgcHkzaworNzU2MzUgOTZkNmMxNDZjZmE5MTc2MWE4NWJmMzY0MjM1NmNkMzFiMWE4NjViMSByZWxlYXNlMzEtbWFpbnQKKzc1NjQwIGYzOGRhYmYyNDBjYmFlYzQxNTNmNGM0N2RhNWU4OWJmZTIyOTdjNmUgbGVnYWN5LXRydW5rCis3NTY0MSAzNWJiNDMzODY3MzQ0ZmUzMjdiZTcxM2ZhZDgwZmE3MDRkMGJlMzlhIHB5M2sKKzc1NjQyIDE2MWQzMzJhZmM4ODRkN2E3NDcyNGJjYjRkOTA0NDBiMTM2NzMxODkgcmVsZWFzZTMxLW1haW50Cis3NTY0NyA4MGYyMjkzZmQ2NmFjODUxYjZhNDg1ZTc4MDE0ODdhNmRkYmM2NjdkIGxlZ2FjeS10cnVuaworNzU2NDggMTBlNzI5MzlkMmNmOTE2NmRiNWQ4YTMwN2FmOThmMWQyYzNkZDViOSBsZWdhY3ktdHJ1bmsKKzc1NjQ5IDlhOTFkNDUyYTBmODhmN2U4NjVmYTYyYTI3YWJlZDJlYTY0NzQ1ZWYgcHkzaworNzU2NTAgMmYzMDdjN2FkYjhmYzViMTA3NzUyNzIxZmZlYzQyMjE0MTU4ZjAwMyBsZWdhY3ktdHJ1bmsKKzc1NjUxIDIxNDZiYmRmNGVkN2RhMzhiOWQyZDBlMDJiNjE1ZDA2YWMxMzNhYTQgbGVnYWN5LXRydW5rCis3NTY1MiAwYzljZmM3ZjFlOTViNzdmNWM4Yzg3NWNiYmYzNmFjZWI4NDQ4OTVkIHB5M2sKKzc1NjUzIGViOTI1YWRiYThmOTAxNGM0YzIxZTNiNGY0YzU5MmM5MGQ1ZjhkNGIgbGVnYWN5LXRydW5rCis3NTY1NCAyNjQ2MDlmYmRhNDgxNTYzN2I1OGFjNDViOWI0NGVkNDAxYzE0ZTc0IGxlZ2FjeS10cnVuaworNzU2NTUgYWUwMmIxNjgxNjJjZThmNGRkZWEyMTQwYTE2MjQ5OGMyM2IxMGQ0NCBsZWdhY3ktdHJ1bmsKKzc1NjU2IGM3MDQ3NTBlNmYzZTViMDUwNmUxNzRjZDJmYTRhNmM5ZmI0OTdhMjQgcHkzaworNzU2NTcgNmQyOWNlOWRjYTkwMmRhM2YyMWVjYjA3NTFmMjE0NjE2ZDVmYmIxYyBsZWdhY3ktdHJ1bmsKKzc1NjU4IDJhYjA4YzkxOTY0ODI0Y2YwNWFjOTVjODViYWRkMzljYWU3ZmNjNzIgbGVnYWN5LXRydW5rCis3NTY1OSAyNGQ0M2E5MTQyZDI1YWYwZWIyMDIzZDQwMDI5ZjkxYjkzZjU3ZGU0IGxlZ2FjeS10cnVuaworNzU2NjAgZGFiZTFmOTJjYTI3NDM3Nzc5YTE4Mzc4MzdjZjNlYjc0MGNkZTJiNCBsZWdhY3ktdHJ1bmsKKzc1NjYxIDcyMDY2ZTViOTQyMTdlMTM4NmE5ODU2NThmMzc4NGU5MGFjNDFjMmUgcHkzaworNzU2NjIgY2JlMzkzZmE0NGY5NjI4ODc3YjMzMGU3MmU3YzI0OTM4YzEyNGVhOSBweTNrCis3NTY2MyA1NjdiMGYzNGIxZWIxM2UzMjMyZjcxM2VhYTJlOTZlOGZmYmY3Y2IyIHJlbGVhc2UzMS1tYWludAorNzU2NjQgMDZlNjYzNjYxOGQ3MjFiODNkNDQxZGNmYTY5Y2ZkN2MyOTUxNTI3ZSBsZWdhY3ktdHJ1bmsKKzc1NjY1IGNjODhhNzAzNDI4ZDAxMWYyYmE4NGZlM2UzOWM1NmZhNWNmYzA5NTcgcHkzaworNzU2NjYgYWFjZWU5NzQ5ZDE1NDM1YTk3MWM3OTQ2YmZkMGMwN2U4M2JlNTAyYiBsZWdhY3ktdHJ1bmsKKzc1NjY3IDkyZjBhMWNhNGU5ODY4NDNkM2NiMTY3MmY2YjU1MTIyMTM2ODk5MTcgcHkzaworNzU2NjggMGMzODQwOGFkODE5ZTBlNGIyNDcxYjMzZGFjNmU2MjY2ZWMwNDRmMyBweTNrCis3NTY2OSBiMmM4Yjk4NDI1MGFhZjkxNzljMzExMTk2MjJmZGJjN2JkMzk3ZGRlIGxlZ2FjeS10cnVuaworNzU2NzAgNGQ2NWYxMjJiMmIzYjdmNGZhZGFlNGUwZTUxODMzYjAxMTgxOTMzYSBsZWdhY3ktdHJ1bmsKKzc1NjcxIGRhZDIyYTFlZDI4YjJmNmY1YjU3MWM4N2Q2ZDc5ZmNjN2FlYmI0YTQgbGVnYWN5LXRydW5rCis3NTY3MiA1Y2YzMjQzMzE1YjViYjhhOGI3ZTAzYTc0ZTM5ODViZGMyMDgxNmE1IGxlZ2FjeS10cnVuaworNzU2NzMgZjAyMTk5MWVjZjhkNmIzMWUwZmZkOWYwNjUyOWUxNzNhMzIyMjZiZCBweTNrCis3NTY3NSBlZGYzNWMzYTQ4YWI4YjI0YTJiNTc2MGExNmM3N2VhMDRlZDcyYjk4IGxlZ2FjeS10cnVuaworNzU2NzYgNDNkNDdjYjY2ODhjZmRlMDk5NTA5NmM5NmQ0MzNlNGM4MzJmNWM5MyBweTNrCis3NTY3NyBjYjcyMWMzMTk1ZmM3NGRmNzMyZDI5MmM0OTU3YmJkYzdkYWNiMjljIHJlbGVhc2UyNi1tYWludAorNzU2NzggMTRiNTVhNGU4NzI1YWM4YzMzNDQzZTY2NjIwYmQzZGE4MjRhNjk2NCBweTNrCis3NTY4MCBiNTRkYTVjYWFiMzY1MDUwMTE2NmExMzk2ZDc3MDFiZjJmOGI2Njc1IHB5M2sKKzc1NjgyIDBjMTIzOGNhYmU5MjE1ZWJjZGRhNWUxZTk3ZTI1YWEwMDY4NmYwOTAgcHkzaworNzU2ODQgZjVjNTYzYTdkZTc1ZDM5MmNiMjRlOTJiMTUxNzYzODQ5ZWU2MDNmMCBweTNrCis3NTY4NiA2Y2E2NDJkNGY0MmZkNWY4NzA1NDY2OGUxYzEwYzdhYjA4MDVhMzQ3IHB5M2sKKzc1Njg3IGM3MWJhNWQxZjE3ZDIyZjE2ODc1Y2ZlZjE5MjdiM2U2ZmFlM2RkOGUgcHkzaworNzU2OTYgZDNmNmZiZWJlYWM5MDNkNTM5N2UwOTExOTQzNzRlYjExYjExMjExOSBsZWdhY3ktdHJ1bmsKKzc1Njk3IGZiZTZiMjY1YmQxYTA5NTNiNjg3ZjI3MjllODRkMTQxMzUxYjgxMDMgbGVnYWN5LXRydW5rCis3NTY5OCA0ODM0YTQyODU0MTFiOTEyMzk3NzQ3MmZkNjA0ZmI1MDUxZWVmYTY3IHB5M2sKKzc1Njk5IGEzNTNlMTA4YzdlNDIzOWQ0YTM5NjQ4ZjVkODI3NTExZGM1NDI5NjQgcmVsZWFzZTI2LW1haW50Cis3NTcwMCA5NzczNmM3ODkwYTZiNTM2YWNiYTQ4MDJlZDY5MDI3MGE1OGM0YzlmIHJlbGVhc2UzMS1tYWludAorNzU3MDEgZGQ0NjZhYzE5MmJlOWRlZmQ5MGViZjM2ZThmMWIxYjRhODY5ZTVlNCByZWxlYXNlMzEtbWFpbnQKKzc1NzAyIDhhYzkwNzAxNTYwNTk1NWUzYzkwNjQyMTg4Mzc4ZTM5MzFlNjg0NDEgcmVsZWFzZTMxLW1haW50Cis3NTcwMyBmOGU2NWNhM2ZkMzljZDBiM2UxOWQ5NjEwZjQ5NWU1ZjU2MjdhZDI4IHB5M2sKKzc1NzA0IGNiOWM1N2UyZWJkMzQ3OTMwZjAyMDlmNGMyOWI0MzAxMjExMjgxNjQgcHkzaworNzU3MDUgYTNjYjgxMmQ4MGY5MDc2YzViM2EwMzRhMjg4ZjkzMWFhMDM2ZmEwZiByZWxlYXNlMzEtbWFpbnQKKzc1NzA2IDg4MDNjM2Q2MWRhMjc1YzcxY2FiZTllOWQwMjc0ZGFjOTkwMmUyYzAgcmVsZWFzZTI2LW1haW50Cis3NTcwNyBlYzRhMWI0ZWNiMzE0MDg4NDRhZjg0YzY3MjI0ZmQ1MDFiNTNiNDgxIHJlbGVhc2UyNi1tYWludAorNzU3MDggYjUxOTYwOGE5NzAxZjAxMDhlN2ExNjE4M2NkZGQ1ZWYzMWQzNWJjZSByZWxlYXNlMzEtbWFpbnQKKzc1NzA5IDdiNjAzNjgwYmYyOTVhMjAwMjQ0ZDBhNGQ2M2U1ODRlNzJmMzIxZTAgcHkzaworNzU3MTAgZDNjZjhlYjg3Mjc0YTZjNjRmMTYyYzc5NGY0ZDViZTFhY2RmMTVjNiBweTNrCis3NTcxMSA3NmM2NjY5MGQxZWVhNTM3NmU5Mjg4OTE5MDNmYjVhY2ZhMjY4YjdiIGxlZ2FjeS10cnVuaworNzU3MTIgOGVmZjc1OWQwODBmOWRiMWQ3YmQ3YmYzOGE2OGE1YWE4ODNmNjMxNSBweTNrCis3NTcxMyA5NzEzOTNmNjBiZDg3NGRjNDgxNjViYmQ3YWQ0ODYyNDcwMDUwMjBkIHJlbGVhc2UzMS1tYWludAorNzU3MTQgNmU0ZDg5NjhlMjQ2OTZiZGE5MjhmOTQ1ZjMwNGQ1NWNlMWE1MGVlZSBsZWdhY3ktdHJ1bmsKKzc1NzE1IDdkYzU3Yjk5MWQ4M2JkZGQyYzVmNTJhZDZkNjA4ZTc1ZmFjOGY1Y2EgcHkzaworNzU3MTYgZjU5ODg0M2YzNjk1YmNjYzFmOGMzMDljOWVjZDYzMWVmYTA4OGFhMyBweTNrCis3NTcxNyAwOTVhZjk5ZTZiNjQwZjUyNzc4NDU4N2FiNmI5ZGUyYTlmOTgxZWQwIGxlZ2FjeS10cnVuaworNzU3MTggMzhhNTc1NGIzMDM3NzFkODE1ZDQzZjUwYjNlMjc4YTg3NTIwZjUwNiBsZWdhY3ktdHJ1bmsKKzc1NzE5IGY0YzdmZDg1ZjIzMjQwOTY0YTQxMzQyZTljNjgxNWY5MDEwNmMwNzcgcHkzaworNzU3MjAgMzhmZGEzYTQyYzBiM2Y1OGY2YTc2Y2MxMjE0YjdlZjkwZTUwOWVjOSBsZWdhY3ktdHJ1bmsKKzc1NzIxIGRhOTZiM2ZlYWY1MjViNzYxZmNhNjRmMjlmMWRhNDlkNGFiYzNlZmIgcHkzaworNzU3MjIgNzQ0NzJkYTA5ZjZjZGRlYjg1MTlmNzZlNjdjZDhhNWI0MTE1NzM3ZSBsZWdhY3ktdHJ1bmsKKzc1NzIzIGI1NWMyZWVlMzQ4YjU2MzY2MWQ2MTBjOWNiZGI3NjRmMmQ2NDc0ZmUgcHkzaworNzU3MjUgZjNiZjkyY2QxMTkxNzRjMzljMGE2ODdlN2ZjZjU0MjFmYWMyOGFkMCBsZWdhY3ktdHJ1bmsKKzc1NzI2IDQ1MDEwNWRkOWNhNzQ1M2RjM2MwYTdkMjIwNjkyYjg3OGMyN2FjMzYgcHkzaworNzU3MjcgNmRhMGFlNjgwZmI2MDJkY2ZhNjljNGI2MDM2NzlhZTY5MmZmNmJhOCByZWxlYXNlMzEtbWFpbnQKKzc1NzI4IDAzZTFkYmUyZjRkNTljODM4OWVhNDUyNDg1ZGNmODBhNmFlYmU1NDMgbGVnYWN5LXRydW5rCis3NTcyOSBiNTA0MTc1NmZkOTE0M2M4MDViZDViYjVlOTVkMWFhYTMyNDU0NTU4IHB5M2sKKzc1NzMwIDQxYmUyYzY5NjE5YjJjNmM2NzEwMmVjN2JhOGFmZmU1ODNiMThmMWQgbGVnYWN5LXRydW5rCis3NTczMSBjNTY0MTljYmRkNDg2NDM3MTljZDMzOTkxMGI3ZTA4YzhkMjRlYWIxIGxlZ2FjeS10cnVuaworNzU3MzIgNmQyMzk2ZWE3YjAzYjQ0Yjc0N2ZiMWM0MjVmZDkwMzE5ODljYTJlMyBweTNrCis3NTczMyBlNTVmZmI4N2NiNzAyY2M1ZjM1NjliMDg4NzU2YzYwNjBhMDY1MGE4IHB5M2sKKzc1NzM3IDRjYmVhOWU3ODM1NjgxODEzMWFmYTg3NGJjMmFjZjk2MDAwYzFkMDggcHkzaworNzU3MzggNWE4ZTgxNTk0ZjBmMTYxZTM4M2I4MzcyMDI5YTE4Yjk1M2IxMzY0MyBweTNrCis3NTczOSAwYjFhMDg4MDEyYzc0YTIxN2M2ZDk3MjZlZGMzNWUwYjI5Njk3OGMzIGxlZ2FjeS10cnVuaworNzU3NDAgODc1NTAwNmVkZjk3M2RjYWI1NmEyNGU4YThlM2IyMGJmMjJmMTI2MCBweTNrCis3NTc0MSA4OTZmOTQ1NDFmNzJlZjM1YmFlMTUxZDMwMWYxNzVmZjdjMzNmZmQ4IHB5M2sKKzc1NzQyIDQyMjUyZDZkMTAzMGEyYzJmMjRiN2U4NzU0NWQ2N2NiNDNhMDgwODEgbGVnYWN5LXRydW5rCis3NTc0MyBhNzc4MTcxYzkzZGU1ZWM2OWIxYzM4ZjU4MGQ4NzIwOGY4MzRmNTBmIGxlZ2FjeS10cnVuaworNzU3NDQgYmU1NGI0MDQ4NzllNjVhZTk1MTZmOWJjODA2ODA3N2UzMzMwNzY0YSBweTNrCis3NTc0NSA5MWEwYzNjNjAyMDk0ZTUxYWFmYjkzOTIwMTQyMzc3OWNhZWJjYjVlIGxlZ2FjeS10cnVuaworNzU3NDYgNTVkOGE5MTE3ZGU3ODBmZjliOWFlYzJiOWY4ZWJiZTc3M2ExY2ZmMCBweTNrCis3NTc0NyAxOWE4MzJiODQ2NGEyZWY5MDEzZjg5MDdjYzM0MTZiZGJiYTBjNDAzIHJlbGVhc2UyNi1tYWludAorNzU3NDggNDE2OWQzY2VjYjlkY2QyNzI5NjljNDc1MDI1MjkyYmE0NjA5MTAwOCByZWxlYXNlMjYtbWFpbnQKKzc1NzQ5IDJhYmMzYjRiY2U3Y2Y1NmE1ZWE0ZWI5ZmY4ZDQyMzI3Y2E2OTMxODMgcmVsZWFzZTI2LW1haW50Cis3NTc1MCAxN2FjZGQ2NTllZTllNTBmMGRjOWEyOGZmOTRhMTlhMGQ3ODBjZTI5IHJlbGVhc2UyNi1tYWludAorNzU3NTEgYTBlZjRlZjVmYzg4NzVhYmY3NTM0NDI2N2MyNjM2N2MzODI1Y2IzOSByZWxlYXNlMjYtbWFpbnQKKzc1NzUyIGY5Y2ZlYTIwMTViMjBhNjE0OTdmZWYwZjUwY2I5NGI5MjFlMmM3NjggcmVsZWFzZTMxLW1haW50Cis3NTc1MyA4MTc4MWQxZTJmYjljZDI4MTRlOWY4ODFlMWFlZDZiMDg0NWEwNWEyIHJlbGVhc2UyNi1tYWludAorNzU3NTQgYzFjMGEwYzdmN2JjMzAyNGY1ODk1ZmM4NjM2ZDgzODZkMzIzN2Q2NSByZWxlYXNlMjYtbWFpbnQKKzc1NzU1IDUyNDUyNjc0NWYyZTk5NDdlNTBjNWU0MzJkMmQ0ZWNjY2Q2NGJkOGIgcmVsZWFzZTI2LW1haW50Cis3NTc1NiBmYWM0ZTNmZDc0N2FjZjJjOTE3MDhiYWM5YTJkMGI0N2FmNzMwMWJhIHJlbGVhc2UyNi1tYWludAorNzU3NTcgMjUwYmM4MjQyZTdlYWJmZTQ1ZmRkODBiNjMyNzY3ZDgyMzkxZDczMCByZWxlYXNlMjYtbWFpbnQKKzc1NzU4IDNkNTQwNDY5NTg1YmU4M2I4YzAxYjA0NmE0NzhlMWEzNzUwYjg5OTYgcmVsZWFzZTI2LW1haW50Cis3NTc1OSA4MzA5YWQ2YWU0YzBlNzg4YTI0M2NjNDQyOTE0NGJlNjk1M2ZlYTc1IHJlbGVhc2UyNi1tYWludAorNzU3NjAgYzdkY2MyMjNmOTI1ZDM5NDYxYjFlODc5Y2Q3NjQ3Mzg2YTQ5YzA5NyByZWxlYXNlMjYtbWFpbnQKKzc1NzYxIDM1NTM5NTQzODdmYTViMjY2NWRjMWY4N2FkNDZiOTMyYzgwY2E5NTAgcmVsZWFzZTI2LW1haW50Cis3NTc2MiAyNmVjOGRiZDZmNjk3ZWVmM2RkODdmMTg3Mzg1NDM4NmE5MjJkYzM4IHJlbGVhc2UyNi1tYWludAorNzU3NjMgYjcxOGYzMTg4Yzc2ZmRjMzliMjM5ZjIyNGM0ZGFhNTlhNDA0NTgzOSByZWxlYXNlMjYtbWFpbnQKKzc1NzY0IDQ3ZTJjMTRiMTUwMzM1MDNkMTM3ODk4MjA4ZGQ4MjVhM2I2ZGNhZWEgcmVsZWFzZTI2LW1haW50Cis3NTc2NSBjY2JmN2ViZWY0NzUxMjcyZmMxYmRjZjU0MGI3ZjM3NTYzMzdjNDRmIHJlbGVhc2UyNi1tYWludAorNzU3NjYgYzc2MzdiNjZiMzRiYmUzN2EyZmRlNzZlNDZjNzk1NGQ5MjczMmI5NiByZWxlYXNlMjYtbWFpbnQKKzc1NzY3IDBkZDVkMzY3MjEzNGQ4ZTVhMmIxMTYxN2U1ZWZiYjRhNTdiNjIxMjggcmVsZWFzZTI2LW1haW50Cis3NTc2OCBmMDBjY2Y4ZTEzNWUxMGEzYTI1Y2JkOGI3NjY1NzUxZmQ3Yzc2ZmFmIHJlbGVhc2UyNi1tYWludAorNzU3NjkgZTNlNTNiODljMTc4NDI5NTMzMTFlOWYyN2E2NGJmNGEyNDM2YTUxYyByZWxlYXNlMjYtbWFpbnQKKzc1NzcwIDZkNDJmMWVlZjQ1ZDlkYmU3NjUxNTYzMTBiNzkyNjQxZjhkMWE4MDIgcmVsZWFzZTI2LW1haW50Cis3NTc3MSBiYjgxODg3MzZhMjliNGE2NDE0MGYxMTU3NDNmYTcyNzVjZDNmNWIxIHJlbGVhc2UyNi1tYWludAorNzU3NzIgNzg2YWJhYmE0NjJkMWU3NGQ2ODNiNWYzNmY4MTI2ZGI2M2Y0YjYwYiByZWxlYXNlMjYtbWFpbnQKKzc1NzczIGM4NjMwZjczMDkwNzE4ZWIyNmQxZTY3YThhMjA3YTEzNzRkYWEyNDYgcmVsZWFzZTI2LW1haW50Cis3NTc3NCAxMzE0NzI3YzA5YWU3YTY5MzU0Yzk3NWE5NGU5NjcwZjMwOGM3ZjdjIHJlbGVhc2UyNi1tYWludAorNzU3NzUgMDk2YjQyY2NiMjU4ZjVjNjNkMGRmZmYwOTY1NTljNWQ5MmFlZTAwNyByZWxlYXNlMjYtbWFpbnQKKzc1Nzc2IDhhZGY4ZWY3YTRkYmFhYzhhMGM4MGJlM2MwNWI0ZTFjNTM0YjY5MmQgcmVsZWFzZTI2LW1haW50Cis3NTc3NyAwN2UzYzBiNDFkNTAwM2NjNWE4NTZhNzkyNzQzYjA5ZmMwNjY4YmRkIHJlbGVhc2UyNi1tYWludAorNzU3NzggNjhmNzI4OGQxNTVjZTNjMTdmZTIzZmY3ZmEwMWJjZjgwOTY1YWRmYSByZWxlYXNlMjYtbWFpbnQKKzc1Nzc5IDBkNTFhNWQ1NmI1YTIyMTU5ZGM2ZDBiZmI1ZjlkODMyOWZmN2Y5MzQgcmVsZWFzZTI2LW1haW50Cis3NTc4MCBhMWIwOTM2YjAyN2NmM2YwNmE5ZTRlNTkwNjg5YzRkYTZjYzY5MmNhIHJlbGVhc2UyNi1tYWludAorNzU3ODEgNWQ5M2M3NTQwNTdjZjI2Njc1YzBmNGM2NDMxMjI0M2Y4MDA4MTZiOCByZWxlYXNlMjYtbWFpbnQKKzc1NzgyIDEyN2Q2MjMzOTZhYjkzYWM5N2EwNWIxZGU0MTA5MGM5M2NjNjBkMmMgcmVsZWFzZTI2LW1haW50Cis3NTc4MyBmYWI2NjBjMmVmODg4N2JjYzhiMzlmYjA4MGRlZjQ4YWZjNWQyMjEyIHJlbGVhc2UyNi1tYWludAorNzU3ODQgNjZkZTcxMTEyMzBhYjQ1ZDQ5MzZmYjMyODU0Yjk5ZDU0Y2Y5MzY4MSByZWxlYXNlMjYtbWFpbnQKKzc1Nzg1IDZiMDVkNDhjY2EyODcyMDYzMjAzMzY5MTJiZjY0NDY4NTUxMDY3OTYgcmVsZWFzZTI2LW1haW50Cis3NTc4NiAzZTE1YTA3YTMyZmFmOWQ0MDRjZjIyZTZjNDY4MGUxNjM1ODhkYWIwIHJlbGVhc2UyNi1tYWludAorNzU3ODcgOWIyNGQwMTAxMzNmMGE2MTJmMjljM2MzNjIxNGRmZmRhNTJmMTZiYSByZWxlYXNlMjYtbWFpbnQKKzc1Nzg4IDg1YWE3MDZmNzEyNmQyMTE0MDY5OTkxMGY4NzdmMDkzOTE3MTI1MTEgcmVsZWFzZTI2LW1haW50Cis3NTc4OSA0ODUyMTIzM2JkNmU4ZDRkOWUyNDcwNjZlMWZmYjRkMjhjNWY5ODRkIHJlbGVhc2UyNi1tYWludAorNzU3OTAgYzRjNDI5YjA4YTU3NTk5MjJiMTJjNTg3OTg0ZWVlNGNiYzMwZGQwZiByZWxlYXNlMjYtbWFpbnQKKzc1NzkxIGVmMzE5NDc0OTM3NzAwMDM4ZjRhMTRmODY4MTE0NjQwZGUxNzBiOGQgcmVsZWFzZTI2LW1haW50Cis3NTc5MiBiN2I4OTcwY2Q1YTU3NjQwNGQ0ZTgyMDMwNDA2MDU1NzhhMzk4ZjUwIHJlbGVhc2UyNi1tYWludAorNzU3OTMgMjg4NTI1MGJhNWY0OWY1NWRmYWU3YzkwOTg5NzRhOTgwZjFhY2JiYSByZWxlYXNlMjYtbWFpbnQKKzc1Nzk0IDQwMmRhZGM3YjRhODYyNDIzZWVlMTFiNDU5YjI2MWU3MzkzNTE0YjcgcmVsZWFzZTI2LW1haW50Cis3NTc5NSAxZDY4YjFkYzQxMDkzNmZiODcyMWU4OGU4NDY3MTM2ZDcyNTMzMjAwIGxlZ2FjeS10cnVuaworNzU3OTYgOGQ5ZWY1YTc5YmM3YTU5MzE4ZDUyYWZhNDRiNTdhOWU1MzhkNmQ5NSByZWxlYXNlMjYtbWFpbnQKKzc1Nzk3IDMwMzU5YzMzYjZmNjc3ZjBjNGM1NDg2NTczMjczOTg3NzQzNDNjNWUgcHkzaworNzU3OTggOTdkN2NkMzY1ZGQ1MzQ0ZjUxYTU5MGQ5ZjI1MjI5ZmIxZDY5MmE1ZCByZWxlYXNlMjYtbWFpbnQKKzc1Nzk5IDU5OGI5YmVlNzRlYzg4MmMyZmIyMTAyNWRlYjcyM2NlMDE4ZWI3MDEgcmVsZWFzZTI2LW1haW50Cis3NTgwMCA3Mjg0NTA3YmFkYjJhMDk3NWYxOGQ3OGExZjg0ZjhkODJjZWRjNTM5IHJlbGVhc2UyNi1tYWludAorNzU4MDEgODFiNjNhYjZkNDVmYjRiM2YwN2Q2MzA1OGQ2NmIwNmQzYzA3ZmJjOCByZWxlYXNlMjYtbWFpbnQKKzc1ODAyIDViMjk1MzMwODMwYTA5Njg2NGY5N2RhY2YxZDUzZGI0ODQ4NDUyM2QgcmVsZWFzZTI2LW1haW50Cis3NTgwMyBlOTQwOGNiM2UyNzRlMTUwMjUzMGVjMzViNzcwNDU2YzFhZjVmYWFkIHJlbGVhc2UyNi1tYWludAorNzU4MDQgYmQ3NzZlMDE5OTNhY2I5MWEwMDg5ZGZhODRkZDA3MDFhYTZjZDk0NCByZWxlYXNlMjYtbWFpbnQKKzc1ODA1IDllZDg5OTFhOTE0MWM2NDA5MGRjMjVjOTYxOWI3ODA1MDMzOWI3NjIgcmVsZWFzZTI2LW1haW50Cis3NTgwNiA2NzBjYWE5Nzc1ZjYwYWIzZGU1NjYyMmZmZmNlOTA5ZjVkMjI5OWQyIHJlbGVhc2UyNi1tYWludAorNzU4MDcgNzY0YWUyZWM0YTcwNjMxYjIzNDA2MGFlYjU0M2MwY2MxZTViODZlOSByZWxlYXNlMzEtbWFpbnQKKzc1ODA4IGEwNWUxYTU3MzYzZDc1YTExN2UyZTA2NThjNTBiN2JhNWEwNzE2NmYgcmVsZWFzZTMxLW1haW50Cis3NTgwOSBiZTUzNDhiMDU0YjRmNWMwYTFkODI2YzA3ZWVjNTk3ZTc1ODZkM2E4IHJlbGVhc2UyNi1tYWludAorNzU4MTAgMDBlNDVkMjFmMjViZjg1YTQ3YmJjNGIyMjEwZmNkN2RiNjFjYzY3OSByZWxlYXNlMjYtbWFpbnQKKzc1ODExIDFjMzJiOTVmZTU3OGU3MGJmNTQ1MmIwNzFkY2I5YmFhNmEyNGUyN2MgcmVsZWFzZTI2LW1haW50Cis3NTgxMiBiOTdlOGNlYmU4ZWRhNWQxYmMyNGMyOGVkYWMxZWM0YjI0MDFlNDE1IHJlbGVhc2UzMS1tYWludAorNzU4MTMgZTUwYmEyYTgxOTczNjcyOTEyN2ZmOTdjNjM4MzZlNmE0NTBkMTBmOCByZWxlYXNlMjYtbWFpbnQKKzc1ODE0IGU0YmNmZTJlNmQ1NzZjMGU3YjIxMGVmNmQzZTkzZTkzMmIyMmNmMzYgcmVsZWFzZTMxLW1haW50Cis3NTgxNSAwOTdjMzYwYjRiYTU5YTFjOWMxNDA4N2ExYjY4ZWJjOGVhOGU2MTk2IHJlbGVhc2UyNi1tYWludAorNzU4MTYgNjA0ZGI5YTgzZDE4NzdlM2M2YWFhMDE5NjRmYTViYTk5MmM3NTMzOCByZWxlYXNlMzEtbWFpbnQKKzc1ODE3IGVmMDgyNTNmMjkwYmFiZjExYjE0YzgwYTgxODNlYjFhOThkMzM3YjUgcmVsZWFzZTMxLW1haW50Cis3NTgxOCAzYTk5MjI5MmNjZDg1ZjE2ZjRjNjc5MDY3OTc4YTZmZGM2ZTQ3MzA5IGxlZ2FjeS10cnVuaworNzU4MTkgMjViYzNkNjllOGFmZTMwMTU2ZGM1ZGRhMzQ2OTNiYmUzY2JmN2FmMSByZWxlYXNlMjYtbWFpbnQKKzc1ODIwIDE5Zjc2ZmFiYTk2NTRkZGZkZDNjNTYyODVhOWI3ZTdhYzIwY2UzNWMgcHkzaworNzU4MjEgODY1MzFkZTc1ODk0ZjFmYTIyNGU3MzRiYTBlOTU0ZGU2ZTI5Yzc0MSByZWxlYXNlMzEtbWFpbnQKKzc1ODIyIDU5NTA1ZTdlNzA3MzJhMWViMjljZDE3OWJiYjcyYjM1MjAyNTViODQgcmVsZWFzZTI2LW1haW50Cis3NTgyMyBlNDczMWZkMjdkOTE2ODA1MTQ4MjMyY2U1Njg5Y2Q5MWQ0Yjk2MmU5IHJlbGVhc2UyNi1tYWludAorNzU4MjQgZTk5YWRmYzkyZGMyZWY1NzMxMTUyM2U0NGM4N2I2YjEyNTE5YmNkOSBsZWdhY3ktdHJ1bmsKKzc1ODI1IDM1OTYyYjU0MTU5NTdlZGQzMDZmODZmYzkwOWZjOGQ3NWM2NDJhMzUgcmVsZWFzZTMxLW1haW50Cis3NTgyNiA0MmZkNzg1NTM0N2U4NTkxYTQxZGEzZjQ5MWUwYjAwYTAzNGRlMzg2IGxlZ2FjeS10cnVuaworNzU4MjcgNjMyZGRiMjc1MzIxZGUyNWFmN2JmYWMwYjczOGE5ZGUwOTlkOWNiMiByZWxlYXNlMzEtbWFpbnQKKzc1ODI4IGY4ZmEzNjgwYzVkMzU1ODIyNTJkZWMxOTI2OTY4Yzg4YmYwZjZiMGIgcmVsZWFzZTI2LW1haW50Cis3NTgyOSA2MjlkNDViYTQ2ZDc5Y2YzMGY0MDU2MWI0OGZjYTRhNDdiYzU1MzAxIHJlbGVhc2UyNi1tYWludAorNzU4MzAgZTFiYmM2MjMyZjI5ZDBhMzg5MTIzOTUxNTUzMTYxZDNmZTc4NWZlZCByZWxlYXNlMzEtbWFpbnQKKzc1ODMxIGY4ZWQ4NDQwY2RiNDVmYTFiM2Y0ZDNmYmU2YjUwNjk3MDNhYjZhMzIgcmVsZWFzZTMxLW1haW50Cis3NTgzMiAxMDc1MTc5NDUxYjU2M2I3NTkxMTFmZDhkMjQzMzZjYjVjMzdhZTVlIHJlbGVhc2UyNi1tYWludAorNzU4MzMgYWU5NGY2ODU1MzEwMGMwODZjNzcyYjQ0YjAzMmE0YWYwODQ3Nzc5ZCByZWxlYXNlMzEtbWFpbnQKKzc1ODM0IGI0MGZhODI2ZTFjZjBkOGMzYTdlN2U3YmJjNWYzNDcwYmQxZGU4NTggcHkzaworNzU4MzUgNTgwYWMxNTExNjUyM2MxZGRhYjEyNWQ5MmU5YjdmZjQwZDcwMzQxMyByZWxlYXNlMzEtbWFpbnQKKzc1ODM2IDhhNzc0YWZlOTkwMDkwYjk5YTkxNTE0NWJiM2Y0NzljZjg2NDA2NDQgcHkzaworNzU4MzcgYzdmZjJmY2QyYjZiZjBlN2U5NmY2NWI3NzQ2MTIwNTEwZWZjZTg5MyByZWxlYXNlMjYtbWFpbnQKKzc1ODM4IDI2OWYxZDljODZjZDIyNmEyODhmZDI3OTFhNGJlNjUxYTBlOGJlYjYgbGVnYWN5LXRydW5rCis3NTgzOSA4ZmI4ZmQzYjY3Y2Y2NDM4ODcxNmQ3NmQzZjJiOGE3MGUzNjFiZDQzIHB5M2sKKzc1ODQwIDkzNmFhYTEyNDkyYzcwNmIzMWYwY2ExMTQ3MDNkNWM2ZGNiOTVmYzkgcmVsZWFzZTI2LW1haW50Cis3NTg0MiBiMzFmY2JhYjA1MjBjNDgzYzUwYTU2ZDE1ZTU1ZWI2MzlmNWNiNzJiIGxlZ2FjeS10cnVuaworNzU4NDMgOTU1ZDhmYTEyYWQ1NGI1YWNiODYwMGFmMzAyMjM4YTQ4OWU3OGE5ZSBweTNrCis3NTg0NCA1YzU0MTRhOGM3YzI0NzE2OWJiZTU2NzRjMDI1YjY3NjhiNmQ5ZTIyIGxlZ2FjeS10cnVuaworNzU4NDUgZTFkNDEyNDg5MTA3YjUzMGE2NzU3YTY0YjU3MmI1NThiMDM5MTZjOSBweTNrCis3NTg0NiAxNDBkODhkMWIxNzk4ZmIyZjdjODVjMjRmYTM4MDg2OGNhMzE2NjFiIGxlZ2FjeS10cnVuaworNzU4NDcgZTI1OWIzNGEwYjg4MTQ0Mjc5Mzc3NzQwNjAxZTZhZWM5ODdjNDQxMyBweTNrCis3NTg0OCAxMWZjMTYwZDUzYzRkY2E1MWY1YjdhNTUyY2M5MWVkZjFlOTI1ODY1IHJlbGVhc2UyNi1tYWludAorNzU4NDkgNDNiZmY2OTAzYWE1YTM1NGJjMDc4NWI4MmM3NTJlNjUxMjc1Y2M2YSBsZWdhY3ktdHJ1bmsKKzc1ODUwIGQ3Y2MwZWIzZjIzNGY4NDBjNmYwOWY5MDRjYTgwOWRkZTQ4MjY0ZjYgcHkzaworNzU4NTEgNWY2MWJkM2FhNDI3YjIyZGM4OTA3MzZlNTM3MDI5MjI2MDA5YWU0ZiBsZWdhY3ktdHJ1bmsKKzc1ODUyIGU0YmZiZTliNzRjODkyOTJlNDg5ZWQzNDJlZTA1MjFlZTJjNTEyNTcgcHkzaworNzU4NTMgZDlkNjkwNjBmNWU0YmRjM2MxMWRlZmMwYTY2ZGRlNmNhMGRkODNlZCByZWxlYXNlMzEtbWFpbnQKKzc1ODU0IDFiZGE0NjAyZjkzOWEyZjNkMTIxN2M5NjdjNzlkNmIxMDQ0NmUyZTcgcmVsZWFzZTI2LW1haW50Cis3NTg1NSA1Yzg4Nzc5NDczYjkyOTYzODRkNDlkMWVjMzIwOWNhZmQwZWEzNTE4IGxlZ2FjeS10cnVuaworNzU4NTYgYWY3OGZkYTU3YWY4NjRmOWU4ZTVkMTZkMDI1OTg5MzAzNzlmMzcyZSBweTNrCis3NTg1NyAwMjFkM2EzOGJkMzZhNGEwNzg0MmE3YWE4MDRiZDA3YzI4NzcyYjE2IHJlbGVhc2UzMS1tYWludAorNzU4NTggMDI5ZDY5NjU5YjVmOTk1NDhmZjRlOGM3MmUwOWJhMjU4YmM5Yjc3YSByZWxlYXNlMzEtbWFpbnQKKzc1ODU5IGNlZjVjYjI3MGZkZjdjOTY2YzYyYTUxMjg1MmY3MzRmMDc5NzZhNGQgcmVsZWFzZTMxLW1haW50Cis3NTg2MCAwZGY0N2IxYjMwYjhhMDc5ODE5OTVjYmIzZDZjYjRkN2M3ZWNiNmZjIGxlZ2FjeS10cnVuaworNzU4NjEgODE0MWVjODFhZDJkMzg4OGYyMzk5YmJjNmU4YzA3YmNjYzhiNWE3MCBweTNrCis3NTg2MiA3MGViNmExM2FiY2Q2ODU2NjA1Y2ZiY2IyNjRhNmZhY2IzNDA1ZTZjIHJlbGVhc2UzMS1tYWludAorNzU4NjMgYjA4NWZkMDYxMWRlMGU4MWYxZTdkZTExY2M3NDRmNTM0YjRkZWFiYSByZWxlYXNlMzEtbWFpbnQKKzc1ODY0IDJmMWM1MmQ5ZmVlY2FkYTI0YjcyNWYzMmFiNDNmMTg0YjU4MzZiMzcgcmVsZWFzZTMxLW1haW50Cis3NTg2NiA5ODk5ZWNhOWM4NTdkOTFkNTJlYjcwM2Q0N2QyYjVjNDg4NmU1YjJkIGxlZ2FjeS10cnVuaworNzU4NjcgMTg1MjA0ZDU0MWZlNTZlMzE2OGU1MWMxMmFhYzA4NmFhMDY5NTk4MyBsZWdhY3ktdHJ1bmsKKzc1ODY4IDQxMWI2YWNiY2YxMmU3NjI3Mjg5NTNhMDRkNWFhMzUxNzkwMWNhYzYgbGVnYWN5LXRydW5rCis3NTg2OSBiNGJhZWMxZTZhMGMzMzhhZmUxZGE0YzkwMzM0ZmMyMzg3NDY2NzBlIHB5M2sKKzc1ODcwIGY1YzcyYWNhNmI2MGEzYjA1NmQyMTFhMjBjZTE4NjlmMjliOGM1OWYgcHkzaworNzU4NzEgM2FlNGQzNjY3OTIwZmMzNGFhZjM5NTZhMTEyZWRlMzk2OWU2Nzk0ZSBsZWdhY3ktdHJ1bmsKKzc1ODcyIGZiMWJmYTljYWJmMzNiYzZlNDg0Y2Q2NTNjMWEwN2VkZjQzOTFhODAgcmVsZWFzZTI2LW1haW50Cis3NTg3MyA0NWEyN2Y5NjFhYTFkZjRlOTdlNzZjM2JjNjAwNDFmNDBkMjQ3ODk1IHB5M2sKKzc1ODc0IDIwNGYzM2Q0Mjc2MmIyNDEzNThiMjE2ZTY5ZjNkYTU0ZGZkYmE4MzMgbGVnYWN5LXRydW5rCis3NTg3NSAzOTU5ZmExMDk3MThlYzM3ZjBmMTAzNDNlM2E4MWY3M2ZkOGYzMWU0IHJlbGVhc2UzMS1tYWludAorNzU4NzYgYzkyNjhmZWE4MTA0OTEyN2VjNTM2MTQzZDlmMTY3NjBhZjZiM2IzOCBweTNrCis3NTg3NyBiZWMyNjZmNmQ1MDgxZTI1OTVjY2FlZjlhMGE1Y2VhYjliNjM2YmI1IHB5M2sKKzc1ODc4IGI2Y2MwMTM0YWYzMTQwZTExNmRiMTUwNDM2YzNiM2MyMzAzZjUzNTcgcmVsZWFzZTMxLW1haW50Cis3NTg3OSAyMWEzZjgzZDk5YWJmN2Q3YTllYTYxZTEyN2UwYmRkY2VkZDAyYTVhIGxlZ2FjeS10cnVuaworNzU4ODAgMTI4ZGFmNjY5OWNjYTI4ZDMzMzdlZmI0ZDg1YzU2ZTM2NDk2NDg1ZSByZWxlYXNlMjYtbWFpbnQKKzc1ODgxIDM5MjdlMGUxMzgyNDEyNmU3MzEyNDNlZGY3N2RjYzNlYzNhZmY3YmEgcHkzaworNzU4ODIgMTU4YjIxMWU2ZmE4YzFjODhiNmYxMjY0MjY0ODFjODJmMWZlOTQwNyByZWxlYXNlMzEtbWFpbnQKKzc1ODgzIGYxMDEwNDA1MTMzOWI4YWI2NzcxNWM0ZjUxYmZmODY0MTAzZmE5YTggbGVnYWN5LXRydW5rCis3NTg4NCA0NGY2NDQ3MmU5MjIxYjdlYzM5NmEzOTliZTZmNTE1OGNlMGExMjA0IHJlbGVhc2UyNi1tYWludAorNzU4ODUgMTI0Mzg5ZjRlYmFkYzM5YzU4YzQwMWUyOGU1NjE4YzRjMGUyNjg0ZCBweTNrCis3NTg4NiA2OTBjNTY1YzE1YTllMWZmMjJjZjFmODcyYTI3OWVkOWEyZTY3ZTQwIHJlbGVhc2UzMS1tYWludAorNzU4ODcgNjk0OWNlNzhjMDY1NTgxZTgzY2MwYTcyNTY5YTlkNjJlYTdlNWQ0YiBsZWdhY3ktdHJ1bmsKKzc1ODg4IDdlNjZmZmRiY2JlZmZiZjZhNDJmZTg5OWE1ZGRmYmY2OTU4OWE2YjAgcmVsZWFzZTI2LW1haW50Cis3NTg4OSBkMGQ3ZTE1YjQ5NTM1YTAwOTBjZGZkZTY2NmEzMDYwYWVlZmQyYzZkIHB5M2sKKzc1ODkwIDVlNGQxYjRmNjJmYTFkMDg3ODVmYmI4ZDFiNTgwODRkZTc5ZmY5NzkgcHkzaworNzU4OTEgYWQ2MTEyOWM0NDIyMjU2OTJkYzI1MGI0ZGJhNjZkOWRmNjMwM2FkMSByZWxlYXNlMzEtbWFpbnQKKzc1ODkyIGUxZGNhOTcyZmEzNWQzMWE1NDZjYjcwOGY2NjdhOGRhZjdhNmMyM2MgcmVsZWFzZTMxLW1haW50Cis3NTg5MyBmYzVhNzcxODQzM2E4NTQ0ZjFlZTUzMzA2OTM1MDg0NWFkNzljNTJkIGxlZ2FjeS10cnVuaworNzU4OTQgNjRhZDM2NTA3OTQ0NjZlODRjY2M1MjJiM2RjOTAxNjgyYmRlM2VlYyByZWxlYXNlMjYtbWFpbnQKKzc1ODk1IDE3Nzc5YTk0ZTgyNTA4NmI2NjMxY2ZlYjdmMzAzZGZhOTdjZmY2YTMgcHkzaworNzU4OTYgMGYyOWFhMmQ0ODQ0ZjcxNzQ3OWZiOTgyYjA0MWU5YjViNTJjMjM0NiByZWxlYXNlMzEtbWFpbnQKKzc1ODk3IDcxNTc0ZmU0OTU3NjdiMTE4NzQxN2Y3MDZjNjZjN2YyNzExNDlkMjIgcmVsZWFzZTI2LW1haW50Cis3NTg5OCAwM2Q3NmJkZjkzNjJhYTU0MmYzOWQwMDU4NmJkYTEzZDcwNzc4MTYzIHJlbGVhc2UyNi1tYWludAorNzU4OTkgOWUyNGZkNmE1NWYwOGVhNTcyNzFiM2EwNWI2NDZlYjViODM0NDRjZSByZWxlYXNlMjYtbWFpbnQKKzc1OTAwIDA0NGE2OGJjMGQyZWZiOTYyM2UyNmIzNjBiN2NmZWRjMTJlOWUxOGMgcmVsZWFzZTI2LW1haW50Cis3NTkwMSBjMTgyMjQ5ODhiYjFjODZmODQ0NWY3YzA3YjI4NmMyZmRkZjE1NmY1IGxlZ2FjeS10cnVuaworNzU5MDIgY2Q5ZjcyZmJhNTNiMDMxNTAzNTc0Mjc5MDY4MWZhYmZhNjMyZmU4ZCByZWxlYXNlMjYtbWFpbnQKKzc1OTAzIGVmNmFiNWQwYTAwNmE5YmMxZGNkMDMyNGZhNzk5ZTczOGM4YTBkZmIgcHkzaworNzU5MDQgNTJiMjdjMDgxNjg2OGE4MDU1ZjYyNTJkZjM1ZDE2MzU2NWQ3NTlkMyByZWxlYXNlMzEtbWFpbnQKKzc1OTA1IGFhZmE2NmM1NzQ0NGUzYjI1Y2FmZWQwMWJiMGY3YWE5YzliODNiN2UgbGVnYWN5LXRydW5rCis3NTkwNiAxZTllZWM3MzQ0N2YyOGEwZDBlYjZlMWEzMTQwNjQzZmU0YjEyYThhIHJlbGVhc2UyNi1tYWludAorNzU5MDcgOTBjNzE0NmRkZjQyMTlmOTQzMzQzZDExMjAxMjBjODFmMWFlMjBlNyBweTNrCis3NTkwOCA3NmQwNDIxNDM4YWMzNmY0YTVjMzlhZmQyZTY4ZDNjYTkyMTVhZjdkIHJlbGVhc2UzMS1tYWludAorNzU5MDkgZTdjZTI1MWIzYmZiNmQ0ZDE2NWIyNjBlYTE2ZGMwZmUzMjAxYTRkNSBsZWdhY3ktdHJ1bmsKKzc1OTEwIGU3NTBiOTBiZDk4MmIzMzUyYWM4ODdjNzQ4NzIwZDk2YWM3MzFhYmQgcmVsZWFzZTI2LW1haW50Cis3NTkxMSA0NGRlM2E0MDI0MDE0NTk4ZTRmNGEwYmQ1YmI5MjY0YTE3MmRhNDIzIHB5M2sKKzc1OTEyIGExZGVjNTdiZWE1ZGMyNjA1MTdmNjNiN2U5YjVkNzdmMmM2MGE3YjkgcmVsZWFzZTMxLW1haW50Cis3NTkxMyAyYTk2MWQ3ZjIwMjhiYjM1MTgzZmQ2NmI0NTI0YTJkNDQ1YjViN2QxIGxlZ2FjeS10cnVuaworNzU5MTQgODRiOGEyYjhlOWFlNTFlMDA5NjJlY2ZjZDMyOTVjMzVhMDA1MDVhYiBweTNrCis3NTkxNSBiNmJlMzAwMmQzY2EyZWM3ZDRmMjE2NDc2ZmI3Zjc1MmRmNWExMmFjIHJlbGVhc2UyNi1tYWludAorNzU5MjAgMjE0N2MyZWJjZWQ4NTkzZDY2YmU4ZGRjZDU3Y2JjZGM5ZGE5OTZiZSBsZWdhY3ktdHJ1bmsKKzc1OTIxIDIwZTIxYzE1NWMwNTYyZjY0ZmE3M2FkMzIzNzM3MGI5N2YwYzBkMjEgcmVsZWFzZTI2LW1haW50Cis3NTkyMiAwNjY2ODVmNjk4M2FkNDBlZGIyYWFhNTFlMzM2ZDM0MTY0ZGJiOTcwIHB5M2sKKzc1OTIzIGE3OTU1MjliMDljOTY2YTI3ZWZhNDFmMjc2MTgyYTQ5ZDM0MWUzM2YgcmVsZWFzZTMxLW1haW50Cis3NTkyNyA5ZTgyZjE3YjJjOGRhMjMwM2Y5ZGNjMTRkMzVkZjNiNmM1ZTdhZGJlIHJlbGVhc2UzMS1tYWludAorNzU5MjggZGI0ZGZkYzc0MDI5YWQ5ODQ2NTJjMTM1MjA2MWYxZDAyMGU3ZGVkNiBweTNrCis3NTkyOSA4NDAyZTQ3N2ViNDg3ZGQ0ZDAyOTEzOWM5OTIyYzZmMWUwZTIxYjQwIGxlZ2FjeS10cnVuaworNzU5MjkgZTM1OGFmMjU2OWI5OGMxM2E0Nzg4NjYwZGNiZTdhZjU3YjJhNTE4NiByZWxlYXNlMjYtbWFpbnQKKzc1OTI5IDQ0ODkwOWE5NDBjMDRkYTAzYjM5ZjU4ZDNlYWY3NDkyMzM2ZmNiODMgcHkzaworNzU5MzAgZjMyZGM4NGE4NzZjYzU5OTFiNjdmOWI4ZTc4ZGY2Y2E5NDAxOTExZiByZWxlYXNlMzEtbWFpbnQKKzc1OTMxIDg0NDE4MGI3ZTZmZjBlMGZhODcyNTJiNDNmMjQzMzdmODk0MGZkYzIgbGVnYWN5LXRydW5rCis3NTkzMiBjNzE1ZjgyNTU1YTRjOTM0OTZlYTgyYjk0YzFiN2ZjODFkYjE3ZTg4IHB5M2sKKzc1OTMzIGU4MDk5ODI2MjljNGQ4M2RmNzIwN2I2NmNhNjY5OTBjNzhjMjc1YzUgcmVsZWFzZTI2LW1haW50Cis3NTkzNCAwMzJkOTc0OTA0N2Q3ZTEzZGU2MzUyYWM2MDk0NGU2Y2I1ZGVlYzg5IHJlbGVhc2UyNi1tYWludAorNzU5MzUgYjU3MWM2Njg1MjI5ZjNjMDgxODM0OWFlZmI2NDhjYTA4MDY0MmRlZCBsZWdhY3ktdHJ1bmsKKzc1OTM2IDNjZmVjYmM3YWU5NWE3ZjYyOTgwOTJjZDI4NzBkMjdmZjI0OTkxY2MgcmVsZWFzZTI2LW1haW50Cis3NTkzNyA4Y2ZmOTQ5MzIzYzllNjZiYzE4ZGNlOTI0ZTQ5YzRiZGE3NzFmOTkzIHB5M2sKKzc1OTM4IGIwMDlhMzg3Njk5YjMyZDFjNDRhY2EyY2I5MmRlZmFhMWRlNGM4NGQgcmVsZWFzZTMxLW1haW50Cis3NTkzOSA1NWU1MDhlMjUzNWM5YTMzNDgyOGYyMDQ1NDZhZmU5M2YxNzUzMGIyIGxlZ2FjeS10cnVuaworNzU5NDAgZmZjN2Q5ZWEyNGQ5MDIyZmY2ZTc2ZGJhY2M3MGMyMjYzN2Q3MmVlNCByZWxlYXNlMjYtbWFpbnQKKzc1OTQxIGFhYTJiMDdjMmM0MjU4YjQxNDcwZDUzZmM4Njg1MzQ0ZWNiOTZkMWUgcHkzaworNzU5NDIgMDVmZDQ4ZGMyYWRhOWJmMGJmMTk1MTYzOTNlMTI0MWY5NjBhYjAwMiByZWxlYXNlMzEtbWFpbnQKKzc1OTQzIDE1ZjE4NzI0MDdiZTI2NDZhMTAxZmRiNGQ0YzE0Yjk3NDZmNjJjNDIgbGVnYWN5LXRydW5rCis3NTk0NCA2M2ViMjg4MzkyNmIyZDViODAyNGI1MjA0NjEyZGEzZjBkZmM1NmVhIGxlZ2FjeS10cnVuaworNzU5NDUgZDVhMzRlZjJmY2E3YzMyMTE3NGNjMGEzNGI5NGQ2OTI4YzYwMWIyZiBsZWdhY3ktdHJ1bmsKKzc1OTQ2IDUzZTM4MDA1ZDUwN2M0YmE3ZWI2Y2NmZjM5ZmJkZmQxMTQ4YmEyZTMgcmVsZWFzZTI2LW1haW50Cis3NTk0NyBlYmRkY2VkMmM5YzRkNDg0NWQwOTAwNjE2NWViZGViODU5NmQ2NjkzIHB5M2sKKzc1OTQ4IDBlZDRiZjQzMGQ0ZTVlZTBhN2I4YWJiMWJjNTE4ZWZmODFiMGI5ZDcgcmVsZWFzZTMxLW1haW50Cis3NTk1MiBjNmQ2MjM0MGFlYmYwYzMxOTBmNTk2MzIzZDRkMDIzM2UyZGVmYmI1IGxlZ2FjeS10cnVuaworNzU5NTMgZTY2NWQyMTcwZTg1MmIxOWQ2MDliMjJmZWE5NDMwMmU2M2ZkYTYyYSBsZWdhY3ktdHJ1bmsKKzc1OTU0IDVmNWUzYzdkYThjYjQ1ZmU3NGExY2MxMzdkNGQxNzlmNDc2YjQzN2YgbGVnYWN5LXRydW5rCis3NTk1NSA3ZTAyMzcxYWE1MDYwMmYwOTgxNTRjYTU5ODM1YzA2NzliOTg2NTk1IGxlZ2FjeS10cnVuaworNzU5NTYgNDExZjI1MmEyOTRhNGZlMjE4NjYxNmM3YjI0N2Y3YzMzYzgwMDNiNCBsZWdhY3ktdHJ1bmsKKzc1OTU3IDlkZGJkNjk4MTVjYTdhMDk2Yzc0MWY4NjVkYzc0NDQ5ZmQ3MWMyODEgbGVnYWN5LXRydW5rCis3NTk1OCAyOWZlNWU3YmQ2ZWUxOTAwYTg1MzEwMWJmYzJhMmUxMGU1MWYyMzNkIGxlZ2FjeS10cnVuaworNzU5NTkgNmNmODRlNWE2ZGQ3ZTU1NTg4ZjUzZDdjNjcyOGE0YzUxNmUzMjQzZCBweTNrCis3NTk2MCBlMTFkMjQ2N2QxMjY3OTdiOWYzZGVhNzhlMjQxODBmYjkyMDEwYTU0IGxlZ2FjeS10cnVuaworNzU5NjEgNzEzZTIxYTU0NzFlZDc2MzY0MmM4NTYwZmJkYTM5OGQ1MGNjNDBkNiBweTNrCis3NTk2MiBhY2FmYTUxNDJiZjkxOGY0NjBmNzFhNzdiODY5YWQwMmRlYTFiZWMwIGxlZ2FjeS10cnVuaworNzU5NjMgYzE0NjkyNTIzNGYwM2FjMDljNGYwZWI1MTMzNWJmNmEwN2I0MDE0OCBsZWdhY3ktdHJ1bmsKKzc1OTY0IGExODNjODJiNjI4OTQ3Y2ZlMzk4N2ZkYzU5NDU5ZTZjMDMwMDQ2OGUgcHkzaworNzU5NjUgZTg3YTY2OThhMzA1YTY0NTAxMjc2NzA5YTZjZjllNDI0ZDJhOGEwNiBweTNrCis3NTk2NiBmZDIxOGFiMGUyMmVmZTUzYjgzMTRkY2JhOWE4YzNhMmJmOWRkN2M3IHB5M2sKKzc1OTY3IDMzODYxY2ExZmIyYjExODE2MDIzY2QzZDczYTk5YTNlNTM3ZjVhNDMgbGVnYWN5LXRydW5rCis3NTk2OCAwNTY0NzA0NjhmZTI5ZTE4ZWYxZTJhNDczZjRhMjI0OWUwYmU5NWYzIHB5M2sKKzc1OTY5IGQ1NmIxMDM0OTBhNTViMDAzYmNhZDY2MmY0ODdkNzk0MDE3OGJkOTkgbGVnYWN5LXRydW5rCis3NTk3MCBiZjkzZTRkZjdiZmIxZTYzMjQ5MjU4MzY0ZmEyODBhZTcxYWJlZWRlIHB5M2sKKzc1OTcxIDhkMzZkZWIzNTZmMTlmNGI4YzgwM2VmOTAzYTllOTcxZTllNDJkMWQgbGVnYWN5LXRydW5rCis3NTk3NCA3Yzg2OTkzYjEzYzlmZDc0ZDQyMWE3NGNiODMzNDgzZmYyNTYxODhkIGxlZ2FjeS10cnVuaworNzU5NzUgYjRlOTMzOWI0OTlkNTUyNWFjNWVkNTQwOTlmZmY5ZTI0MDdhZGQ4NyByZWxlYXNlMjYtbWFpbnQKKzc1OTc2IGZjZjhhNDg2NzkyMDYzZGU2NWIwMmExNDdjMzljNTA2NWRkZWIzZjMgcHkzaworNzU5NzcgNmNiNTMyNDhlNWJlNGIwNmIzNWJmZDFkMzNkZWE5ZjU0MjkyNGRhYiBweTNrCis3NTk3OCA2YTZmMzJiMGZhYmQwZDhlZDMzZmNjMTUzN2Y2NWY0YTBjNDZjMjVjIHJlbGVhc2UzMS1tYWludAorNzU5NzkgYmFiM2UzY2Q3NmYxZDUyNDUxMTZlMjdjYzA3OTFlNzVmMmRjOTIxZCBsZWdhY3ktdHJ1bmsKKzc1OTgwIDE3ZGMwYjUzYjQ4ZWRiMWFlMWMwODk4ZTUxZGRiNDFiYWExYWFhNmQgcmVsZWFzZTI2LW1haW50Cis3NTk4MSAxODJmZTBhZjYwNGUzNWFmNmIxYjYyMzNkNzc2M2JmYWQ2MGFmMTNmIHB5M2sKKzc1OTgyIGY1OTQzMTNiOTM2NDVhYjI0ZjgxMmYwNzc5N2U5NGRhM2I5ZWE5MzMgbGVnYWN5LXRydW5rCis3NTk4MyBmYjQ5OGEwZGUwYjk1YWI2MWFmM2RjMTIxOTBjMTRmN2Y5YzYwYTM0IHJlbGVhc2UyNi1tYWludAorNzU5ODQgNWE5OTAwM2M5YjgzZDg0MmYxYjk5NTlmMzMyNjhiZmM2ZWE4MGE2OCBweTNrCis3NTk4NSAyNjRhNzM1YThhZjc3Njc5N2RjYmQxYjA3ZmE3MjRjZmQ1NTljOThhIHJlbGVhc2UzMS1tYWludAorNzU5ODYgZTliODc3NTZhZDNiM2MyOWU4OWIyYzkyOTNkMjk2YjRjMDZkNGYzMCBsZWdhY3ktdHJ1bmsKKzc1OTg3IDdlY2QzZTNjOTU2NDI3MTBkOTAxZjI1ODZlNzA4ZDMxMWVhNTkxYWYgcmVsZWFzZTI2LW1haW50Cis3NTk4OCA4ZDY3NzI1Y2JiNGUzNWQ4ZDg1MGEzNGE0NTU4Yjk1Yzg1OTY0NWMxIHB5M2sKKzc1OTg5IDcwNDliMmM4NmYwNjEwZDExNDlhZTMzOWIyMTY1YzliN2Q2NWVmOTYgcmVsZWFzZTMxLW1haW50Cis3NTk5MSA0Y2JjM2ZlOTM2NzFkOTE1YjA2OTljNWRlNzMxYjc0ZjcyMTA5MTc5IGxlZ2FjeS10cnVuaworNzU5OTIgODllOWQwNTg0ODkwM2U1NmIzYzE1MzkxOTYwYzU4OTAwZWMyZWYyNSBweTNrCis3NTk5MyBhYjM4NjkwZmUwMWNmOTM1YmFmYmQyMTMxOGQ0YjRmNGFmMjJiZjhlIHJlbGVhc2UyNi1tYWludAorNzU5OTUgNzFiM2FhOGE3MzIwZmU0MGNjMjBkOGI3NDA3MGEzZWFjZWQyYmI4NCBsZWdhY3ktdHJ1bmsKKzc1OTk2IDM3MjQ2YjRjM2NjZTM5ZWU1ODIxZGFmNzAxYWU0ZmYyYjY1ZGMwOTAgcmVsZWFzZTI2LW1haW50Cis3NTk5NyAxODJjZDA0ZTI5ZGIxMTg3ZDk2Njc5OTJhNThkNzc4MTA2YzUzZWRiIHB5M2sKKzc1OTk4IDQ3MTc4MDRiYjU3ZGM3NTBiZDU3MGNlMzYxYzU1ZjI5ZGQwOTdkOGUgcmVsZWFzZTMxLW1haW50Cis3NTk5OSA5ZjNmODNkZjY5NzViZTZmMGNjYjA5YTc1NGNiOTA4MDJkY2E5YWM4IGxlZ2FjeS10cnVuaworNzYwMDAgODQ2ZjI2YWQ1ODAwMDIzYjZkZWE3NjZiYzdiY2FlZmM4YjZiZTM0ZiBsZWdhY3ktdHJ1bmsKKzc2MDAxIDI5MTM4NjRkZGJlOTU4OWVhMjk2Y2QzYTBkOWEyNDNlMzE4N2UxN2EgbGVnYWN5LXRydW5rCis3NjAwMiA0MmJiM2UzNjEzZjZjOTBhMWI1NzY1Y2FlZWIwYzFkOWY2MmJlY2JiIHB5M2sKKzc2MDAzIGY4M2I0ODk2MjczOTkzYWI3ZjExNGFmMDhmY2U3ZWVkNTA5Y2UxZGEgbGVnYWN5LXRydW5rCis3NjAwNCAwMmY1YzYwMDgzMjdhZmU1NTU2NTY4MzAxYTliNThlN2Y5ZDg1OGJkIHJlbGVhc2UyNi1tYWludAorNzYwMDcgMjExZTdiNWI5OTljMWEzZDkxZDYzOWEwNTdiNWJjMzk4NzY3ZWI2ZSBsZWdhY3ktdHJ1bmsKKzc2MDA4IDcwMDAyZjI3ZDI4MWVmNmJlZGU4MWQ2YjA0NWY2N2RlOGY4Y2U0NjIgcHkzaworNzYwMTAgNDAyNjk2YWM0Zjk4MmNmYjI3ZWJiOGZmZDQ1ZjUwMjkzYWE2N2U2MCBweTNrCis3NjAxMSBiMGU0ZWZiODNkNjBjNzdmMjk5ODQwMThiODYzYTdmYWUyMmM3ODllIHJlbGVhc2UzMS1tYWludAorNzYwMTIgZmY4ZTM1OWUyODA4NDMyNThkM2IyZWFjYWFkMjk0NmJlZDRjNzc4MyBsZWdhY3ktdHJ1bmsKKzc2MDEzIDZiNGM3MzIwYmEzYTE3ZjI0MjJiZGRjNDM2NjI0MDllZTM5MGY2NTAgcHkzaworNzYwMTQgYjY5MDE3NzYyMjA4YWFhNmYyZTg5M2NjZDg5NTAxODE2NWU5NTEwOSByZWxlYXNlMjYtbWFpbnQKKzc2MDE1IDU5MjU5MDBlZGYxNmYwYzk0YjViYzE4OWFkMWFhYzhjM2U3MDhjODEgcmVsZWFzZTI2LW1haW50Cis3NjAxNiA3NTdiOTdjNjE2OTFlMjkyMzA5NjVmNTdiOWNhMmMzOGE5ZmY0OTk5IGxlZ2FjeS10cnVuaworNzYwMTcgNWI5NWU0ZWFjN2E4Yjk4YTlhNjhiMTNhZmU5NmVjY2U2OWQ5OGM1MCBweTNrCis3NjAxOCBlZDE2NmZmN2Q5NTIzODFjNDVkZjIxZDBjMzUxOTFjMzMwYjM4NWViIHJlbGVhc2UyNi1tYWludAorNzYwMTkgMTBmZTIwZmQ2ZmIzZDhjOGFkYTdmZmY2MmYyMDY2OWI4MGRmMjNjMiByZWxlYXNlMzEtbWFpbnQKKzc2MDIwIDRkYjg0MDQ1YTdmMDA3MWEwYTgyYTBmMWY0ODA4Mzk0NzM0YjVjZGYgcHkzaworNzYwMjEgZGE2YWQ5OGQ1ZGFlZjMwOGEzZTQwYWVjYjVkOTU0YWUxOWUxODcyNSByZWxlYXNlMjYtbWFpbnQKKzc2MDIyIGM3OGEwMGExZDZkYjE4MzBhMTg1NzRjZjE4N2IxZjhiODI4YjUxNWMgcmVsZWFzZTI2LW1haW50Cis3NjAyMyA5M2M3ZjY1MDkzN2Y3ZTk1NzhhNjE0YzdhYWNmN2NhNTRiNThhNWZmIHJlbGVhc2UyNi1tYWludAorNzYwMjQgOTAxMjU5YmMwYjYyZWEwMTlmZmE2YTUwOTBiNjQ2ZDA3YmNkYjMzZSByZWxlYXNlMzEtbWFpbnQKKzc2MDI1IGI3ZTc2Mjc3ZjU0NTI2N2FmODBkYjBkOWY1N2Q5YWIzYWUzYmEyMTcgbGVnYWN5LXRydW5rCis3NjAyNiAxYWE2YjY4ZTg1MjMwNDE3YzNhNzljMmYwM2E0NGNkZjE1MzkwNDlkIHB5M2sKKzc2MDI3IDY1OGViNThkMmU2OGI3NTQwODM1NDMyZjY2MzQ2Njg5ZDkxZTUwYWQgcmVsZWFzZTMxLW1haW50Cis3NjAyOCBjNzg1YWZhNmY5NWM1NjQ5ZDBmNjUzYTVkOGU0NzhiY2Q1ODJkOWY5IGxlZ2FjeS10cnVuaworNzYwMjkgMzAzOWE0YWQ3ZTM5YTExYWNiNzZkZjhjYTE1ZmZhMDgzNDg5ZmQ2ZCBsZWdhY3ktdHJ1bmsKKzc2MDMwIGRkYzE0MWQ5ZWYxYjFiZjMxYjg1MjFlYmNjMmZlNDNkOTBmMDdiNzMgcHkzaworNzYwMzEgMzg3MTliOGUwYzlmNzBlMmYyOTEyZWZlNGNmNzQyMmE4N2VmMjBkNiBweTNrCis3NjAzMiAzOGViNmE4YWRjMjQyYjAyNDRiMGEyMWZmYmE5NGE0ZmYyODc3MzQ0IHB5M2sKKzc2MDMzIDhjYTRkNzc2ODBjNmQyNDIxNDY5OTU3ZmZjMjE5ZDRjMDFiMTU2NGMgbGVnYWN5LXRydW5rCis3NjAzNCA1MWI5OTczZjc2MWVjNDAwYzc0NmRlYTMzZjZmNWI5MmU1Mzc4ZDM3IGxlZ2FjeS10cnVuaworNzYwMzUgNTc1NDJiNTAyZDMyMjNhNmI1MWUyODM5MzFhMzg5Y2JmNzMxYTY5ZSByZWxlYXNlMjYtbWFpbnQKKzc2MDM2IDNiZjc2MWRmODAyYWFkZGFiOTBiMmViMDE3MGNkMzA4ZWUyMmIxYmYgcHkzaworNzYwMzcgYTAxZTZjZWYxMjU2YzkxMzljOTYzMTc2ZjAxMmEwOGUyMzg3M2U4MyBsZWdhY3ktdHJ1bmsKKzc2MDM4IDM0NGM0N2RmMzYzZjhiOWMyOGEwNjAyOTI1NTk2MzMyYTM2YmQ2NGQgcmVsZWFzZTI2LW1haW50Cis3NjAzOSA0NTgwZmUwNzE5ZTcwMmQyMTYxM2U0MTZmNGQ2YTViNTA1MTdiNGYxIHJlbGVhc2UzMS1tYWludAorNzYwNDAgZmQwNTQyNzE2YTgwNTUxZmEyZDg5MDVmMzQyMzliMjliZmNmMGU5OCBweTNrCis3NjA0MSBiNTkxZmM4NzIxZjJmZGM1MDU4NjYxYzk5ZjM2NmU1Mzk0NTMyNTkzIHJlbGVhc2UzMS1tYWludAorNzYwNDIgNmRjNGZhYTQ1Y2JkMDg5MDEwZGY1YTljYzMwYzkxNmIwN2Y4M2Q2NSBsZWdhY3ktdHJ1bmsKKzc2MDQzIDI4ZmVmNzI2NDRiN2M2NDQ0Y2U1YjI5ZGI4YTBiMzVjMGVmY2RiNjYgcHkzaworNzYwNDQgNGE4NDU5ZTMyOTE5MjMyYmVlY2Y1MzAzYmYyYzM2MjVhYzdkNzI0MCByZWxlYXNlMjYtbWFpbnQKKzc2MDQ1IDZlNDg5ZDNkNzNiODgwNDkxNTM3YWVhZjRhZWZhZWZhNjJlODE2MDMgcmVsZWFzZTMxLW1haW50Cis3NjA0NiAxZTFiZTFhMzlhNzkyZWY3NjBkNjkyNGJjMDFlNjNjN2NjYjA5Y2YxIHJlbGVhc2UyNi1tYWludAorNzYwNDcgZjAxMzAyZTZhY2Q1NDQ2MTM1NTY5Yjc1MzQyOTVjZDM0ODQxN2Q5OCBsZWdhY3ktdHJ1bmsKKzc2MDQ4IDVkNmVkMDg4M2JmNTc5YzNmODUzZjEyNGE2NDE0OGJmMzNlNjM4NzMgcHkzaworNzYwNDkgYTVlNDczZTk1YmNlYWQ1YzVkYjNkNzZmZmRlMWM1MmEyNDU0NGJiYSByZWxlYXNlMjYtbWFpbnQKKzc2MDUwIDQ1M2Y1NDc4YTY5MWRkMWRmOWQ1YjRmMGYwZWFlMTg5ZGU2ZTMxMTMgbGVnYWN5LXRydW5rCis3NjA1MSBiOTE5MzcwZjE4MjBmZGJhMTU1OGI5YTczOWVjY2NiNzZjMmViNmVhIGxlZ2FjeS10cnVuaworNzYwNTIgNjk4ZGU1MDE3OTlkOTkzNWFjMmQ2ODZiNjMwODA5NzdjODZkMGMwYiBsZWdhY3ktdHJ1bmsKKzc2MDUzIGQyZDhjYWJiOWUzYTkyM2FiMTAzN2IwZGU4Y2NmNmI5ZWQ0N2M2MzAgbGVnYWN5LXRydW5rCis3NjA1NCA5NmE4NTNmYWU4M2IyMzc0YzgwYjllMDQ0MmFlMzE1OTIzZjcwOWRlIGxlZ2FjeS10cnVuaworNzYwNTUgMTQwMmM3NTI3NTY1NWZkYTNhMThmOTYyNjYzNGU2NDJlZGM1ZWIwYyBweTNrCis3NjA1NiA4YTBkM2M2OWFlMjFhZGJkYTRjMDg2YmM4NTQ1NjYyYjk1NGM1NTg5IHJlbGVhc2UzMS1tYWludAorNzYwNTcgODhhMzY0NmVmMzJjMmE3ODJiYjQxOWJjMWZjNDZhOGY4Njg0Nzg1YyBsZWdhY3ktdHJ1bmsKKzc2MDU4IGU2MDhmNThkNWQxOGI2MWQ0MmQ0MDU1NDI2YjZlMzE2M2IyN2I2OTUgbGVnYWN5LXRydW5rCis3NjA2MiA5NGUxYjE0ZWM4MDRiOGFjOTI5MGIyMDUyODY1ODM3NGRmZmNjNTMwIGxlZ2FjeS10cnVuaworNzYwNjMgOTU5YzY4ZDFkMjhhMGEwYzcyZWZhMGVkYmQ3NzViYmVhMDJmNzZlMiBweTNrCis3NjA2NCAzY2ZkNjk1NjRlOGYwNzZmZDZiZDg1OTRhN2IxZWQwODAyYjJiOTQ1IGxlZ2FjeS10cnVuaworNzYwNjYgZjI5NjBmMTE2ZTc3YTJlYmFkNTEwMzdlMjJhMDliN2E3YTMwYzJhMCBsZWdhY3ktdHJ1bmsKKzc2MDY3IGJlZTg5OTRiMTNkZWRiODE3MDM5OWJjYjI0YTA2ODYwMDU0OWI4NjggbGVnYWN5LXRydW5rCis3NjA2OCBhM2YyMWNlZTY0ZDFmMTI4YTYzNWJkMWMyYzRkNjI3YjMwZTUwMWU4IHB5M2sKKzc2MDY5IGE4MDg2YjMxNGNkMDdlNmMzZWI5MjA5YjJkMzVmMWYzYzRlNDc4M2YgcmVsZWFzZTMxLW1haW50Cis3NjA3MSAyMDFhNDE5ZTllMDY2MGJlNDQ4YmYxMjY3YzliYzhkMWUxN2E3NTEwIGxlZ2FjeS10cnVuaworNzYwNzIgNjViMTEyMWEyNDczZmQyMWU2MmU5YjRiYzliMTNjMTYyNjRjY2EwYSBweTNrCis3NjA3MyA2YzEzYmYzNWQxNjYxMTc0YWJlZWU4ZWYwY2FiMDE1YjE4NjkyMGM5IHJlbGVhc2UyNi1tYWludAorNzYwNzQgMzIwMWZhYjM1MjIwZjc4NTI5OWRkODI4ZTU2MTQ4OGI0NjcyOWNjNyByZWxlYXNlMjYtbWFpbnQKKzc2MDc1IGM5MDA4YTNlN2Y3ZmQyMzQ4Yjk1YTQ4YTQyYTY1Yzk1YjBiZjc1MzEgbGVnYWN5LXRydW5rCis3NjA3NiA2ODVhMjRhNmY5ODY4NDdmMjQyMGNhMTU2NjIyNDBmMjcyMzM0YjMxIHB5M2sKKzc2MDc3IDMyYzdkOTgxMDNiYWVjMWEzNzFjZmNlMjE5ODZmNzQ3YjQwM2FiZDggcmVsZWFzZTI2LW1haW50Cis3NjA3OCBiNDExY2U1ODRiN2ZmMDQxYTlhM2RmYTZlMzU5MTgxNTMwZTE2ZmMxIHJlbGVhc2UzMS1tYWludAorNzYwODAgNjJkY2Q5ZmRkN2IzNGVlNjcyYTcyMTg2NGJjNjA2ZTI0NjkzOTAzYyByZWxlYXNlMjYtbWFpbnQKKzc2MDgxIGJiMzdjN2MyNmZhNDg2NTE1MjcwZmMwNGFkNWRjMDVjZjMzMDNlNmEgcmVsZWFzZTI2LW1haW50Cis3NjA4MiAxOWE1NzNjNDRhZTExYzJiYzJkYTUxM2IzMDRjMjdiODFkOWMzY2I3IGxlZ2FjeS10cnVuaworNzYwODMgOTJjYzdlZDgzZTljMDFhMTgzZTg0YmYzNTNhYTY1YjI3NjBiOWM3MiByZWxlYXNlMjYtbWFpbnQKKzc2MDg0IDdmZDkwZTVhMGFkNWY5YjMzMjA0NWQzMGRiNTFiZmVjYTZlYjQxZjkgcHkzaworNzYwODUgZmU4MDhkNjY0ODNkN2I1ZTlkZGNiMDY2ZThjMWVhZDgzZjQ5MDg1ZSByZWxlYXNlMzEtbWFpbnQKKzc2MDg2IDhjODA3YjNhOTA1MjMyMjcwNTcyYzViMWY5YmUzMzllZGZhOWQxMmQgbGVnYWN5LXRydW5rCis3NjA4NyA1OWU5YWRjYTc3MWIzNGFhZjQ0NzkzYTQwN2I5ZWJjY2JjZWEyMTFjIHJlbGVhc2UyNi1tYWludAorNzYwODggMWRmOTBlMjJiYjcwNjFlNGU3NzI2YWRlZjlhZThjMTNjNjhlNTVmMCBweTNrCis3NjA4OSA5YWYyZTk0NDM5ZDFiNDQ2ZjEwNjU3OGM3YTVmZjMyMjEyNzFmN2Q4IHJlbGVhc2UzMS1tYWludAorNzYwOTAgMWU4YTMzZjYxOGZiMDYzZjc0Y2E2YjZjN2E5NGNjYTc2NGIxMTcyYiBweTNrCis3NjA5MSBmZmFmNjY1ZDJkM2U1ZDU2YWVkZTBiYzk5MzA3ZTBkZmMxNzkwNjI1IHJlbGVhc2UzMS1tYWludAorNzYwOTMgNDJmYTNlMDliNmU3OWQzMWY4ZmUxZjM5NDdlOTJiN2QxMzNiNmRmMSByZWxlYXNlMjYtbWFpbnQKKzc2MDk0IDMzNjRhY2JhYTE1M2NlY2ZlM2NiYjMxZjYxY2ZlNGQ3MTQ5YWU3MDYgcHkzaworNzYwOTUgZWRhOTc5Yzk4YTdmYmUwM2Q2N2QwYzZkZGI3MmUzMDI0MzQyZmVjNCBsZWdhY3ktdHJ1bmsKKzc2MDk2IGM5NGUzYmY4MzkyYmEwMzUzYmE1MWU5OWJlZmFmNjE5NjI2MDQ0NDggcmVsZWFzZTI2LW1haW50Cis3NjA5NyAxZjE3NTg4NDhjNmNiMzgwZGM0MWM0MjBhMzdkZjMyNjA4OGZlYTRmIHB5M2sKKzc2MTAwIGY5NWI1ZmFhMTNjZjVmNGY2Zjk5NGY3YTdkNGI1NTk5NThlOGQ4YzcgcmVsZWFzZTI2LW1haW50Cis3NjEwMSA1MTg2OTgxNGJhOWE4ZjlkZGI3NDNkNzBlNjkxNDJlYjJmYjI3MGU2IGxlZ2FjeS10cnVuaworNzYxMDIgZWE3MzhmZjE4MDE2NjNiYTMyZTMzNDUwYjkyNDEwMjJhYWI0MWI3ZCByZWxlYXNlMjYtbWFpbnQKKzc2MTAzIDYwNWQyZjRjNzUzOTQ5ZDJiOWEzOGZkNTc0MGU2OWQzM2Y5YTA4ODIgcHkzaworNzYxMDQgYzhiZmM0ZGFmZjNkOGY0OGYzNGM2MTQ4Y2FlNjlhYzA1OTNjYTkyMSByZWxlYXNlMzEtbWFpbnQKKzc2MTA1IGY1ZDY4NjA0YzZiOTUyYThlMTZjMGI5YWEyMjlkYzkwYmQ3OTI1MjcgbGVnYWN5LXRydW5rCis3NjEwNiBkMTYxNDQyNjlkNTU4ZDY3MWYyNWFjZTcxNGI5MDQ4ZmU5NDRhMjJjIHRhcmVrX3N5c2NvbmZpZworNzYxMDcgMjk4ZjZiMzQxMjVkMzU4ZTNkODU2ZTJhMTU3ZmJjY2RjYjA5NjU2MSB0YXJla19zeXNjb25maWcKKzc2MTA4IDA2OGY5NDMwY2MyNDBiMDk1ZTI1MjkzZTIyZTIxOWNhNzA3NzlhMmMgbGVnYWN5LXRydW5rCis3NjExMSBmODlhOTNhNzc4YTgxZDA2OGRjODkyNjFkNGU3ZmEyMmM5YmQ1ODExIHB5M2sKKzc2MTEzIGQzYTgxMDUxNjYzYjZiNTZiOGNkYzc0ZWM0MjIwMjBiMDJkOWI0ZGQgcHkzaworNzYxMTQgNDQ0OTg5Y2U1Zjc3MTQ4Y2JlYTQyOGIzNDk4ZWYxZGE2YzYwOGZjYiBweTNrCis3NjExNSA5M2M3NTI4NzUwMzNjYzVkZGViMzFmYTUyMTY5YTgwNGY1ZWRmNGQwIHJlbGVhc2UzMS1tYWludAorNzYxMTYgNjNjOWU2M2UwZGUzZjAyYWI2ZjFkMDMyNmI0ZDg5ZDA2MjZjZDA5ZCBsZWdhY3ktdHJ1bmsKKzc2MTE3IGZkNzgyODA1MTg2NTUxYTk4ZTEwNTEyOGM1MTVlYWZkZjBkNmY1MjggbGVnYWN5LXRydW5rCis3NjExOCAyZWJhZDNkZmNkZTM3NjI3ZWUxMjk1NTJkYmNiNWE0M2YyOGMwY2Y4IHJlbGVhc2UyNi1tYWludAorNzYxMTkgMGNiOTQzOTAwZTUzMWU0ZmEyZTIyNGY0MDFkNTRjMGJlNGJlMGFiYiBweTNrCis3NjEyMCA0ZWEwYTgwZWQ3NmE2MzkyYzFjNTVmZTJmOTAzNGY2MmE1MWIyOWM2IHJlbGVhc2UzMS1tYWludAorNzYxMjEgYTFjOTRmMDc2MWQ0MTNiYWQ2ZjEwOGUwNjVkN2JjODI5ZjIyOTQyMiByZWxlYXNlMjYtbWFpbnQKKzc2MTI0IDM1ZGRmYjQ0NzE2OGQwNmY0NDYyYTM5ZGFhOTk1Yzk3ZGM4NDBkYWQgcHkzaworNzYxMjYgZDNhNzYzNjM5MmFmNTU0ZDFlZWY2MjVlNDZiZmZjNjFlOWUzMzc5MSBsZWdhY3ktdHJ1bmsKKzc2MTI5IGUzZmYzOTc2YmJhY2VmNzUyM2E1ODMzYjEyOTQ4MWI1Yzk2N2JkZjIgbGVnYWN5LXRydW5rCis3NjEzMiA4NTUyYTI2NzcyZTZmYzFiZDgxYjY2MDZmYzYyODY0MjQwMDE5NDZkIGxlZ2FjeS10cnVuaworNzYxMzMgNmRiMjIwYWY4Y2EzZmVjOTA0Njc5Y2U3NWU5YzFmMjA0YjcxYjhlYyBweTNrCis3NjEzNiBkMzQ2ZmZiOGNmZDc0MzMxOWNkYTg1ZmNjZTM1NjdiMDc3Yjk1MWNiIHJlbGVhc2UzMS1tYWludAorNzYxMzcgY2QzNjBhYzU4Y2QyZWEwNmM2YTkwYjIzM2E2MTc3YzJmNmUxOTkzYyBsZWdhY3ktdHJ1bmsKKzc2MTM4IGUwZGRlZGEwZDljMzNmODQyNTEwMjRhMDU2OTdkODJiOGVhZjA4MTMgcHkzaworNzYxMzkgOTMwOWRhYWYzMmQxODA3MDI2ZWMzNjZlNWMwZGQzMjc3YmUzNDY5OCBsZWdhY3ktdHJ1bmsKKzc2MTQwIDgxOGIwYjI4N2FhNDI0NGI3Y2E3YzdmNWI2ODNiYjk4NzMyNmIwZDggbGVnYWN5LXRydW5rCis3NjE0MSA0MmQ0Y2Y4MjdiOWU4OWM4M2ZjYWUzYWI0ZTc2MWJlMmMwM2VkYTQ1IGxlZ2FjeS10cnVuaworNzYxNDIgOTJiZGMzYzdkNWE0M2VmM2Q5YWY4YzEyOGIyYzVmNjk2NzgzZmZlMiBweTNrCis3NjE0MyAxYTMwODYwYmNhMDM3Zjg0MTA5NGIyMjljMzI1ZmM5ZTMyY2I4ZGEyIGxlZ2FjeS10cnVuaworNzYxNDYgMjdlMTIwZjkyMDhiM2FhOGMwYzg5MWE1ZGEzZjFmOWRmYTI4NDU4OSBweTNrCis3NjE0NyBlMjUyODhiYjZmYWYxN2FlODI0MGU1Yjk0ZDg1YmExZDY4MjRlMDkzIHJlbGVhc2UzMS1tYWludAorNzYxNDggNmY1ZjQ4MWQ2MTljMmNkYmJlYmMzNWU5YjlkOGFhM2E4MWZkMzQ4MSBsZWdhY3ktdHJ1bmsKKzc2MTQ5IDA0Y2Y5NWNmOTQ5NmZmZjUwYjFmMmVmMzY2OGNhNzkyMmZhODI1NWQgcHkzaworNzYxNTAgM2EwZTY5MDAxMjE1NDNhNGJmNTE2NDhkN2JkM2JkMTVmYzkxZDdmYyByZWxlYXNlMjYtbWFpbnQKKzc2MTUxIDM4MWE2MmYxZTYzNWYyYzAyMTQ0ZGQ5MWQ0ZjkzYTQ5OTA1ZDQyOTIgcmVsZWFzZTMxLW1haW50Cis3NjE1NCA2Mzc3MGE1YTBjNzlkZjJiNGQyM2Y3NGQ5MDdiZGVkODU1Njc5Mjg2IGxlZ2FjeS10cnVuaworNzYxNTUgMmU0ZTQ3NzIxOWM1NzNmNWNhYjBmMzQ5ZDlhZTdkMzNhZWU0ZTZlNCBweTNrCis3NjE1NiBkY2Q2ODg3YjhhMjc3NDdkYThiNDI3MzZlM2NhMWFkNWY0YTc0MWU0IHB5M2sKKzc2MTU3IDk3OWViMWJiZjZlNmU0NmRhMjcwOTU2ZTk0MzFlMjg3OTgxNmRlM2YgcmVsZWFzZTMxLW1haW50Cis3NjE1OCBkNjFiMjRjODc2NzQ0NzU2OTU0ZmZkMDA5ZTE5YjJjNDJjMzFkYmRlIHB5M2sKKzc2MTU5IDQ4OTg5ZWNmZjgwNDdiYmU0NDBlN2ExNDczMTFiNDM5MTcxOWJlZTggcmVsZWFzZTMxLW1haW50Cis3NjE2MiA2OWQ2MWFmNWE5NTg5MzY0NmVkMjU2NjJmNzRhZjBhMTFmMGIzMGU1IGxlZ2FjeS10cnVuaworNzYxNjMgZDk3MDU5ZTllODUyZWFjMmI4NTYzYWNkZDNiZmExODRlZThjY2I5NyBsZWdhY3ktdHJ1bmsKKzc2MTY0IGYxOTAzMTVmMTg1ZWE3YWJlNGZjM2MxNWViMjRlMTdlMDYwNGViNzYgcmVsZWFzZTI2LW1haW50Cis3NjE2NSBlZDExYjMxNWQzNmEzODg3ZjE2NDAwNTA3MjM3ZGEzZTIwYzE2M2U4IHB5M2sKKzc2MTY2IDE0NDdkNzVkZWY4YjI1NzgxMGYyMDhhNjA4NTI1YTQ1MmVhZDI2NzMgcmVsZWFzZTMxLW1haW50Cis3NjE2OCBjNzZkNWZiZWI2OTE5MzM5Y2QyYmQ1OWEyMjNlMjk3ZGRlMWYwZDc4IGxlZ2FjeS10cnVuaworNzYxNjkgMjY3YTQxOGViYmM5YjY0YTBiMzVmODdiYWVjOThlNzE1YTk3NDJkNSByZWxlYXNlMjYtbWFpbnQKKzc2MTcwIGE3YWM0ZGJkZTVkYjYyMGJhMjAwZmRjOGNjZGNkYjc1ZmQ5MjQ5OTIgcHkzaworNzYxNzEgNjY3ZDk3NzljYWQ2YWZmNjYwNDc5YTNmMTI1NzAwOGQyNWEyMmYwYSByZWxlYXNlMzEtbWFpbnQKKzc2MTcyIGZiZjQxYjExMjRkOGVjYWYxZTdkOGQ3ZWQwNWNiNDQzY2VmZDI4ZGIgbGVnYWN5LXRydW5rCis3NjE3MyBlZDhiMjk2OTExOWUyNmFlNjgyNjk2NDZkYmI0MWM5M2ZiNjRhOWNkIHB5M2sKKzc2MTc0IDBlYjU2YThlNjI2MmYzYjlkMjBhZTM5NTAzNTM1MjQ1N2QyMmM3YTQgcmVsZWFzZTI2LW1haW50Cis3NjE3NSBmZTMzNTYyZDFmOTVhMGZkY2I5ODAxMDJiOTg0OTg1OGQyNGNiNTQ3IHJlbGVhc2UzMS1tYWludAorNzYxNzYgMmQzOTRkMmQyZDM3ZDdkYWExYzZiODEzNjMzOWJjZDA0NDEzYjc3NSBsZWdhY3ktdHJ1bmsKKzc2MTc3IDA1MGE2NWEzZGY1MzhiMjg3OWEzZThmOGMwZDFlMmRkYTAxODZhNTggcHkzaworNzYxNzggYmZjYWIxYmEwZjUxY2IzY2U1MTg5ODViMzE1MTU0OGMwZDMzZTk3ZCByZWxlYXNlMzEtbWFpbnQKKzc2MTc5IGJjYTAyN2I2ZGY1MzNkNmRjM2FiMzEzYTZhY2VmNGYwOTBiNTE5YmQgcmVsZWFzZTI2LW1haW50Cis3NjE4MiBmYmZjY2UxMTI0YWUyNzBhNDZjNGE4YjNiYmE1M2YyMDVmODkxMjM1IGxlZ2FjeS10cnVuaworNzYxODMgNTIxNDA3MzhkNmMzYjVlZWQ2YTQyZDYxYTAzZTQ0MzQ1NzdmNWUxZiByZWxlYXNlMjYtbWFpbnQKKzc2MTg0IDhiZmIzMmI1ZmU2ZDRkMmY5NjRkZDlkZmZlNzJmNWY2NDJmNzczNGYgcmVsZWFzZTI2LW1haW50Cis3NjE4NSBkZDlmODVhNWYxMzQ3Y2ZiMTYyMjY4NGYwZWE2MjQ2M2VjODljMTQ5IHB5M2sKKzc2MTg2IDkyMTlhOTYyYWQxYzMwN2FlMWM3OGVmZTkyY2QzN2RiMDZkMjYxNDkgcmVsZWFzZTMxLW1haW50Cis3NjE4NyBmZmY1NTgyODZhYWUzZmUzNmFkMmM2OTM3NDdmZjNjMmI4NDNkOTQ5IHJlbGVhc2UzMS1tYWludAorNzYxODggMjNjYzc1OWNmYWUzNTgyNTI3ZjNiNTJlZDgyZjI1Y2MxNjU2YWZkYiBweTNrCis3NjE4OSA2ZDkxYWFhZGRkZDA4MWRlNzNlNGYyOWI2ZTczNDM3YWM0ZGI3YmIzIHB5M2sKKzc2MTkwIDg2N2QyZjI3MzViODkwNTU3NjAxYjk0MjU3ODQ2NWQ4MzY2M2RlYWQgbGVnYWN5LXRydW5rCis3NjE5NCBjYTAyMTdjNTJhOGJmMzg0YjM0M2RhYjJmMzgzMGM1ZGM3OTgwYTU5IGxlZ2FjeS10cnVuaworNzYxOTUgZmRkNjQ4NGYxMjEwZDYwYzE2OGUyMzc2NmJkMzQyZGU4YTY2ZjIxNyBweTNrCis3NjE5NiBjYjU5MDU4MDZkZThkYzg3NzI4ODJmOTI0YzVlYzkxMWI2M2UyNmFmIGxlZ2FjeS10cnVuaworNzYxOTcgOTdjMzE4NzE0MDcwZjZmMTdkZjdlNjg1ZTZmN2VhYjZjYjJhNDNlMyBweTNrCis3NjE5OCBmZTZiOWJhYmU0YmU5MTZmNDg0OTA1ZTUzZjFmMjVhMDVjYWMwZmRlIHB5M2sKKzc2MTk5IDk3NmNjNTA0ZDk5ZjI4Mzg1YjVkMmFmZDgxYmIzZDI4NTVjOTM3NWUgbGVnYWN5LXRydW5rCis3NjIwMCAxMDc2NGZmZTc1NDNjZTliYzEyZjYzYWM0MWQ0NWU5NjYxMzkyOWVhIHB5M2sKKzc2MjAxIGIxYTc3NWFhMDcxMGQ0OTYxZWFlZDEzODUwNGU3NGIwZTg3YzdiMGQgcHkzaworNzYyMDIgNGViZGQyZTBhYWFkZTc1M2RjMzRlMGU3MTI3NjU2N2NjYWY1ODk1MSBweTNrCis3NjIwOCA1NGI4ZDc4MGM5Yjk5ZTBiYjU3MmQ0OWM2ZjdkYWQ3ZjZmMTA2NTAwIGxlZ2FjeS10cnVuaworNzYyMDkgMjk1MGQ5NzcxMzk1OWU3MGNmNWU5NWM4OTYwMWIwYjZjZThmMTg3OSByZWxlYXNlMjYtbWFpbnQKKzc2MjEwIDEyZTBjOWVhMzA0ZWVlYjU2ODFiNzg1NDg3OTI5ZjU2NGNlZTFhNWUgcHkzaworNzYyMTEgYzg1ZWI1OTQ2NjE0NTY1YmQzZjlmMjhmZmUwZTVlM2ZhM2Y5NDljNyByZWxlYXNlMzEtbWFpbnQKKzc2MjEyIDc5NWVmNDYzNDllNTAxY2JjOTM0ZjkxNTA0NjlmMWY2MWJhMWMwYmYgbGVnYWN5LXRydW5rCis3NjIxMyAyMTQ4ODUxZjA4MmExOTAwYTYwYzczZmI1NzJjMmMxNzJlZWQ4YzE3IHJlbGVhc2UyNi1tYWludAorNzYyMTQgMjU3Y2I2MWJmNDFiNTY3YmMyOTMwMDEwYjM5M2NhMDg0YWE1MTM1NyBsZWdhY3ktdHJ1bmsKKzc2MjE1IGNlOWY1NWFkNTQ2ZTE0YTU0NzhkMzIwYjU2NzhlNGI3MmIxNmQ4YTQgcmVsZWFzZTI2LW1haW50Cis3NjIxNiBjNzE3ZmU5OTMwODVjZGFhMWZiYzk0ZWNhOWE2Y2ViODIyZWJlZDAwIHB5M2sKKzc2MjE3IDMzYmU4MmZhMjc3YWM5YTFlYTUwMGU5Y2M1YjNhNmExNDY5ZDM4NDkgbGVnYWN5LXRydW5rCis3NjIxOCA0M2YzMmRiMWJmNDZmYjZlMDRjNmRhZDNlNWQwNDA2MWM1OTBhNWI4IHJlbGVhc2UyNi1tYWludAorNzYyMTkgODExNjZkN2I0MTRjOGFmMjc4ZDc5YTEwYmYyODhmMzljMDgxNGFlYSBweTNrCis3NjIyMCAxMzhjMWY3NDgwNGQ2OGM2ZjU2MWFhMTJiMGNkOWRlNDVjNjkzYTQyIHJlbGVhc2UzMS1tYWludAorNzYyMjEgMWMyNzg4OGE5NTVmZTljNmQ5MWUxMTFlNWY0OGEyNGZjN2U4ZmJmZSBweTNrCis3NjIyMyBkNDRmZWEyM2ZkNTdmZDViNzJmMjI1NGExMzIyYzRhMjM0NGRmZWFjIGxlZ2FjeS10cnVuaworNzYyMjQgOTRjZDE4NWY1M2I0NzYxMzZlMTQyMzUwZDc3YzBjZWRlNmVjMGU5YiBsZWdhY3ktdHJ1bmsKKzc2MjI1IDU3MDc3ZGYwMmY5YWNiYzc5MzBmM2MyMWQ2ZjNkOTM2YmMyNjMwMjcgcmVsZWFzZTI2LW1haW50Cis3NjIyNiA1YzBkNGIzZWNkNjVkMThmMjFhODAyMGE5MDc0NWVkYzUzYzM3YTcwIHB5M2sKKzc2MjI3IDRmMWM3YjdiZmNiZGE0MDNhYWRjMzcxNGNmMjE2ODcxZjc4NDI1N2QgcmVsZWFzZTMxLW1haW50Cis3NjIyOCBjZDA0MzZjMzRlZjQ2ZGUwZjQ0ZjA1OTNkYjQwYjE4YWUxNWY5ZTM5IHJlbGVhc2UzMS1tYWludAorNzYyMjkgZjlhNTBjZWRlNmE5MjJiMDY3ZDZkNmNlOTY4MDI2MmY0MjUyYTFkOCBweTNrCis3NjIzMCA4OWY0MjkzOGQ1Y2NiNzMzYzMzNmE0ZDUxNDE2M2Y0MWZmZTQyOGMyIGxlZ2FjeS10cnVuaworNzYyMzEgMTI4ZGQ2ZGUxMzRjYTg5YzJjNzk4Y2ZiZDMxY2YyZDRiNmE2OWVmMiBsZWdhY3ktdHJ1bmsKKzc2MjMyIGIyZDkwYzFjNjM3ZGM1N2Y5NzU4MjE4OGQ0ZjJkNTVlYTcyZDg2Y2UgcHkzaworNzYyMzMgNzYzZDJmZjc4YWU3ZThjNDUyOWE2MWYzZTRjYjY1NWMxMWI0NTE0NSBweTNrCis3NjIzNCA3Y2ViNWViNDYyYzUwM2Y5NmYwZmI5ZTExMjEyY2FjZTIzNjU5M2M0IHB5M2sKKzc2MjM1IGIzNTRjMWI2YjQ3NjdjMzdiNGMzODM2MjU1YjdhZmMwMmRhN2Y1MzQgcHkzaworNzYyMzYgYTA5NTFmMTFiZTNkNzZlNmRhOTk5NTQzNWFmY2U1NDk1ZjEwMTUzMSByZWxlYXNlMzEtbWFpbnQKKzc2MjM3IGI3ZjczYjAyZDZkMjQ4Y2VkODJiNmUxMTdiNWE3MDE0NjIyMTFiMjEgcHkzaworNzYyMzggYjIxODgzNjU3M2ZhY2U4N2Y0ZjdjNzQzNmM5ZDZlNTcyNmY0Nzg2ZCBweTNrCis3NjIzOSA5ODU3OWU5NTJiNTRhZjk3ZDBhOGM2ZDMzMTA4MDA4YjUxMjM5NTQxIHB5M2sKKzc2MjQwIDY4NTUyN2FlNDM3ZGY5MmE4ZjRjYTQzMGUxZWMzMTg3ODIzYjY4MTkgcHkzaworNzYyNDEgMzU3ZTM5NzAwNDg5NzgzZTdhMGRjZjQ2ODdhZDE1YTE0OWI4NjlhZCByZWxlYXNlMzEtbWFpbnQKKzc2MjQyIDhlNmI0NzhhNzA1M2VlYjNmZmZiMzQzMzM4ZTA4MjhlYTM2YmVmNzMgcHkzaworNzYyNDMgNjVlMjMwODVlM2NhZGRkYmNkMDVjMDQyNTZlMDE0NGYyYTUzNDFjNSBsZWdhY3ktdHJ1bmsKKzc2MjQ0IDMyMzM1YmEzYWEwYmIxNjI2MWMwMTc1ZWQ2ZDMwN2FmYWFhYjllYTggcHkzaworNzYyNDUgMTk2ZjJhYjk3NzE4Y2JkYjZiOWUxZWIzNjVhZjFmZmZlYmE3YzYxNCBsZWdhY3ktdHJ1bmsKKzc2MjQ2IGI4MTQ1ZDZkYjdkNDNkNzAxZDU1MTA2ZmNlZjg0Y2UwOWRiYjhlN2YgcmVsZWFzZTI2LW1haW50Cis3NjI0NyBjNjEzYzcyNGUzMTU5YWY4NjExOTNjZjQzY2JkYzE3MmQ5YjllNzg4IHB5M2sKKzc2MjQ4IDkwZjFmNTczMjE4NTlkMGM2NWZhZDQ2NTc5MDY0MmExMzk1Yzg0ZTAgcmVsZWFzZTMxLW1haW50Cis3NjI0OSA1YzkwNTA0ODEzMDlkOGI2ODEzNGVjMmFiNGFiN2JlNWFmMjA4MmRjIGxlZ2FjeS10cnVuaworNzYyNTEgMjc3Yjg5ZDViMzIwOTc0ODAyMDUyZmExZGNjZGFhNzBjMWU4NmFmZiBweTNrCis3NjI1MyBhMWRmNTI0ZmNiYzYyMmIwNzljZjlhOGYyMTliMzhhYzJjYmVmMGUwIHB5M2sKKzc2MjU1IGYwMDEzYWRlOWMxYWQzNmZjMTA0ZDA5OWMzNDg1NDhiM2Q3ZDUzNWEgbGVnYWN5LXRydW5rCis3NjI1NiBhYTY0YTUwYWQ0OTA1ZTc5M2NmNWI2N2Y1OGJkZWZiNjFmMjFhMTc1IHB5M2sKKzc2MjU3IGEyY2I3ZDI3MjFhM2U0ZTRlOGEyZGQ5ZGE1YWQyYTNmMDY3ZTFhOWQgcmVsZWFzZTI2LW1haW50Cis3NjI1OCAyMDdhNDYyNjEzZjNmM2UyNzUxNjg2MTBhZTRkYzY5N2I5YzdjZDk5IHJlbGVhc2UzMS1tYWludAorNzYyNTkgM2YyYTc2ZmEyNDk2YjJhMTVjMmRlNjExMzRhMjY1OWQ2OTA5OWJmZCBsZWdhY3ktdHJ1bmsKKzc2MjYwIGMxYzFmMjhhY2IwNTMyNzkxOTliZTNiNTliNjNkMDMwZGQzZTBmOTAgbGVnYWN5LXRydW5rCis3NjI2MSBiMmFiMDhjOTNhMDI4MjlmNjRkYjhjNGNmNTJkNmU3MGUzNmIxM2MxIHB5M2sKKzc2MjYyIDkyZjkxNzA0MzkxOTk5ZmQzMDcyZDdkNzIxN2Q1OWE1NmIzNDhhZTMgcmVsZWFzZTI2LW1haW50Cis3NjI2MyBiZWM1ODliNDRhYWU3YTZjMzE4ZDY0ZjYzOTVmZWJkNzllYmI5MTMyIHJlbGVhc2UzMS1tYWludAorNzYyNjQgNTU1MDQ1NTQxNzk0ZTgzZmU1NzYwYzVjNDc4YmJhMTgyNjYzOTI3ZiBweTNrCis3NjI2NSAzZGIxZmMzY2VmZDBmODYzZjdiZTU1OTY2ZTlkMTNkMWMzNmMzYzNjIGxlZ2FjeS10cnVuaworNzYyNjYgOTRmMjcwNWRlZjVjZjY1NjY4M2ViMzg2YzEwMzVlZWM1NjllNThjMiBweTNrCis3NjI2NyA3ZDRhYjhjZDAwMjM5NTU0MzI4NjI4NGUwNDVmNTY3NjFiZDVkNGU3IHJlbGVhc2UyNi1tYWludAorNzYyNjggNTZlNzAxZjgyNDVlNTYzNmEwZmZmOWQ5ZGY5ZGFjOGU1NGY3ZTcyZCBweTNrCis3NjI2OSBmYTYwMjcwYWI3OWFlNWM4ZGRkYzg1MmE5MzQ4NmRlOWY0ZDE4OGU0IHJlbGVhc2UyNi1tYWludAorNzYyNzAgMTI1N2E1OTdjOGZhZGEwNTdkNjE0NmRiMjY5MWFlY2NjYmYxNjA5MSBweTNrCis3NjI3MSAzZDkwMmQ2N2FmOWNhMDkyYjJkNzQzYzdhYWQzNWE1ODMxYjY2ZDViIHJlbGVhc2UzMS1tYWludAorNzYyNzIgNzllYTRiMWVmMDRmMjdkZTU3YTc1NDk1YmIyMTk5MzlhYWIzNDE0NyBweTNrCis3NjI3MyA3ZDZiYWQ1YzJkNjRlMDZiMmUyN2VlODdkZGViNmMzMDA1MDQ1ZWU2IHJlbGVhc2UzMS1tYWludAorNzYyNzYgMWEzZDM5NmQxYjZmY2JmNTQyYmU1OTI3NDRlNDhhMzg5YzhhODFiZSBsZWdhY3ktdHJ1bmsKKzc2Mjc3IDUzZWU4ZWNjMThhNTIyYTgyMjNjYWNkZjUxNWI4Y2FiZTlkMjhiMzIgbGVnYWN5LXRydW5rCis3NjI3OCBiYjRmZGEyMmU2NTc4MDhiZTA0ZmY2NTk0MThmNGUyZmViNTY3Y2U1IHJlbGVhc2UyNi1tYWludAorNzYyNzkgYzc3N2U0YjQ1NTAwNGUyODI2ZDAyOWUwMmJiY2JiMGI4MzA3ZWE4ZCBweTNrCis3NjI4MCA4NzY4OGZmNmFjY2M0ZGQ2Y2U0NTBkNzJkNjJkNWJmNmUxMTQ2NmY3IHB5M2sKKzc2MjgxIDA1YTg5Yzg2NjNjYzcyZTg0NWZlY2Q0NjhkYWNiYjkxMGQyYThmNDkgcmVsZWFzZTMxLW1haW50Cis3NjI4MiAwNWM0ZWIwMDg5YzVmMWU1MTJiYzAwNDFhODQ0YjFlNTUzNWY2MGU5IGxlZ2FjeS10cnVuaworNzYyODMgM2IwYjE5YjUzZDMyYmY1NTk4NTU3NmI3ZTdmNmY2MjRmZjkzODVlZSByZWxlYXNlMjYtbWFpbnQKKzc2Mjg0IDU5NWVjMWQ5MGIyZmVmYzY0MTAwYzgxNzM0OWZiYjM4OGYwZmExNzUgcHkzaworNzYyODUgZmI3ZmM4MzAyNzIxZDAwOGQwNzVhZGQ3MzVmYzBhZmM4YzEzMjQzYiByZWxlYXNlMzEtbWFpbnQKKzc2Mjg2IDQwODgxZGIzMTY4OTMzOTJkYzJlN2VkMThhNGExYzUxMDU5YjMyZTggbGVnYWN5LXRydW5rCis3NjI4NyA2YTdmYzJlODU2NWY3M2E3ZjQ2YzkzNjJjMzhlZmEzMzlhNzg2ZmRmIHJlbGVhc2UyNi1tYWludAorNzYyODggNTkwNGFiYjdlZWY3YjNjOGVjYzkyYjY5ZDViMGEyMzNlYThhYzc3MiBsZWdhY3ktdHJ1bmsKKzc2Mjg5IDQ5YTVmMWNiMWIyNTQ3MGFkMWE5MjRlYmMyNzYxYWQ1Y2FkNTE0MjAgcmVsZWFzZTI2LW1haW50Cis3NjI5MCBmNjQwZjU1ZTg4NzM4NTc4OWY0OWQyZTI3NmRmMDFmM2I2NzI0YTZiIHB5M2sKKzc2MjkxIDViMDViNWU5YThlOWI3NDJhOGNjOGRkNmZjMDVhMmE5NmNkZDQ5NDMgcmVsZWFzZTMxLW1haW50Cis3NjI5MiAzNzBkMjE4YTAxYmMzMmQ5ZmI3OTY0OTk2MmQyNzNmN2E2YTkxNDM0IHB5M2sKKzc2MjkzIDJhYTYyZmNlMGJmODY1MzYxZWFhOGVkZjFkYzEyOTliMWYzMTgzNWMgcHkzaworNzYyOTQgYjJhMzkwYzVkZTVmODkzMWQxYzhlM2RhNGYzZGM1MDM2MmY2Mzg5YyByZWxlYXNlMzEtbWFpbnQKKzc2Mjk1IDYyYjhkZTk4M2IyNjQyYjg3OTQyOWRlZTllMjQ4YTMyMTY2Y2Q2MGQgbGVnYWN5LXRydW5rCis3NjI5NiBjMjE3ZTAzMzFkNGIyZTNhOGQ1NGYyNjM3ZmFjZDBkMTAwZjY5Yzk5IHJlbGVhc2UyNi1tYWludAorNzYyOTcgYzQ1OGY4MTNhNzA5NGJmZjA1ODBjMzhhYjlhZTlhMGJiYjhkNzJkNiBweTNrCis3NjI5OCAzZWJmOTA3ZGIwMjhlMTJiYTdjMTczZmUyMjdiZjlhYjllNjA2MTBkIHB5M2sKKzc2Mjk5IDk1MDVhZmU4ODIzZjk0YzA3OTFiNGU3YTIzMDg2YmFhZDA1NzQxMDkgcmVsZWFzZTMxLW1haW50Cis3NjMwMCAwNjliNjZjZmFkM2ZkOWY2NWRlNzA4NDI3ZmQyMTg3NmY1ZWFjMGNkIGxlZ2FjeS10cnVuaworNzYzMDEgNzg1MjMxYzFjNTVhOTE5MTU2N2JiNzMzODRkMGFmZWZhNTlhNDAyYiBweTNrCis3NjMwMiAyZWNjNTkzNmIxZjIzMzNmODNkMzMyZGVmODMxNzI5ZDIxMWYzNDMwIHJlbGVhc2UyNi1tYWludAorNzYzMDMgZjEzNWZkYjczZDg4NTQzN2I3Y2I1OWQ0Yzg1NzVjM2Y4N2IzNzkxZCByZWxlYXNlMzEtbWFpbnQKKzc2MzA0IGM1MDk5ODE4ZTBkNGU1OTBjZGUzN2E2N2ZjOTUzMmQxMmFkNmUwZTEgcHkzaworNzYzMDUgYWJhZjM3MjRiZTcxMTc4NmUyMTYwYmFmYWM2ODhiNDU3ZWRjYTlkZCByZWxlYXNlMzEtbWFpbnQKKzc2MzA2IGFmYjMzNDhiMzcxNTYyMzJmMjAxNTliOWI3NDZmZThmMDE0Yjc3ZWMgbGVnYWN5LXRydW5rCis3NjMwNyAxNTA2MTBjYWU4MDQ5MjlkYzhkNTMwZDQ3OWMwMmRkYjkwZTAxZDgzIHB5M2sKKzc2MzA4IDUxMDI4NzA5YWJjMzI3Y2Y3NzU2ZmZjNDBhZjBlNDQzNjAyNTAwNDkgbGVnYWN5LXRydW5rCis3NjMwOSA4MzY2NDIyNDA0NjRhYmQ0YThlMDFmYjBlY2MzNmRmMTU0NGIxMGY2IGxlZ2FjeS10cnVuaworNzYzMTAgMjNjMTM4YzRlYzA1ZWMxMjJmOGE1MWNiMGE2MjY1NWU2NmJiNmQ2YyBweTNrCis3NjMxMSAxNTRmYjI3MGE4MjBmM2NkMDAyOWViYzQxYTZhNjQzYTY1MThiOWYxIHJlbGVhc2UzMS1tYWludAorNzYzMTIgZWIxYzAzYTM3YTAyOTVkNWFhNmRlM2UxOTZmNDViYWE1MDI1ZGFlNiBsZWdhY3ktdHJ1bmsKKzc2MzEzIGMwODQyM2Q3MGI5ZjIxYTcxMTYzOTczYjA5ZDU0NTBiOTFhZTdhM2IgcmVsZWFzZTI2LW1haW50Cis3NjMxNCBkZjUzNjRmYzBlNWM5ZDQ5MDBiNzYwZTdhNGIwY2VjZGMwYzVjZDgxIHB5M2sKKzc2MzE1IDI1YjY0MGQyMzRmOTU1NWMzYmQxNTFlMjhlNDk3YjRiODJhYTBkYTYgcmVsZWFzZTMxLW1haW50Cis3NjMxNiAyNTBlMWY0NzU1NjhhYTJlNmNlMjY2MTI0YWY4YWEyZTUxNjRlNWZlIHRhcmVrX3N5c2NvbmZpZworNzYzMTcgNjY0ZjYzMDE5NDBmODMyZTYzZjVhZjYyM2IxMzcwNjY3NDVkNjU5OCB0YXJla19zeXNjb25maWcKKzc2MzE4IDYxNTQ1MjkwY2I1MTQ0OTY1NzZiMmY1NWYxNzgyNDAxZmMzN2JhMmEgcHkzaworNzYzMTkgZWIyMzVlYjQ1ZDMyOWJkMzYzNDBkYzJjNDc3NDU0YTZmM2Q1YjY5NSBweTNrCis3NjMyMCBmMTExMmMyNzAwYjFlNjUxMTJhOWZjNWI1ODkyOWY3M2IyMzliYzk1IHJlbGVhc2UzMS1tYWludAorNzYzMjEgNDAxZDIyMzcwNWI3NzgxZmM4OWQ4MTZmMzc3NzJkMTI3NDdkMTFiZCBsZWdhY3ktdHJ1bmsKKzc2MzIyIDFlMDNmZTVhMTFiNDJmMmQwYzViNjg3YTg5NmU4MzQ1NjU0Y2U5ZmEgbGVnYWN5LXRydW5rCis3NjMyMyA5NjcwZmU2ZTZkMTRkY2FhYTNmMDA5NzQ1ODJlODI4ZjI5NzM5MzQ4IHJlbGVhc2UyNi1tYWludAorNzYzMjQgZmQ0MTdjZDY0MzQxODVhYjYwZDcwOTU0OTE0MzlhMGRkMjYzY2EyZSBweTNrCis3NjMyNSBmNjI5MzBkMGZhNzJkMjU1NDA0NWQ3NTZhODM2NzI4MGY2ZmQ5NzFlIHJlbGVhc2UzMS1tYWludAorNzYzMjYgYzg0N2M2ODRjMmM1ZWEwOTJiNjYwMmMwNmY1NmI3ZGIxZGJiYWQ0MyBsZWdhY3ktdHJ1bmsKKzc2MzI3IGQzYjNhOGE4MDkwZmExOWRhYjg1MzU1ZjVjZjU3Y2VjYzExMmFiMWMgcmVsZWFzZTI2LW1haW50Cis3NjMyOCBhYzc2OGM4ZTEzYWNhODhhZDZiNTc3ZThhMmYwOGZkMTE0Njc0ZjNmIHB5M2sKKzc2MzI5IDJkM2NkYTZiOGM5NTIyMTNmMzdmMGNmOWE1OTg3ZDc5YzdkNzA3ODMgcmVsZWFzZTMxLW1haW50Cis3NjMzMCBmNjgwYzFmYjc4MDRmODMyMjVmZGQwYmI2NTc0MmFiZjJlYTljZDRmIGxlZ2FjeS10cnVuaworNzYzMzEgZDEyNzY3OWVjZmFhNmRlNDk1NDU4Y2YzZTg2MzM4ZDJhYWQxZDE5ZiByZWxlYXNlMjYtbWFpbnQKKzc2MzMyIDlkOTM0MmNiZjkzNTNlNGU1OTIxOTYzYjRmZTBjZTZjYjgwMDQwMDIgcHkzaworNzYzMzMgY2ViM2IzNmRkNjgxZWNjMDgyNGViNjgwMTczZGIwNTM4YzdjNThmZCBsZWdhY3ktdHJ1bmsKKzc2MzM0IGM1YTEyMmNiMTI4OGE2YzQ3YTk2NmZlMWRhZGYzOWEzZGNjODVhNDEgcmVsZWFzZTI2LW1haW50Cis3NjMzNSA0MzkxYTIyYWIxZjA0YTkzODY4Y2VjNWQ3MjZjMTBmNThhZWY1NDNmIHB5M2sKKzc2MzM3IDRhYTRjMTlkZmFlZGVjZjdkNDFiM2M0ZDAwZTljYTY1MWQwODY3YzcgbGVnYWN5LXRydW5rCis3NjMzOCBhZGY5Mjc0ZDNlZGM0MTNmYzI2ZGYwN2QzZWYyOGE1MzZmZjM0OWVhIHB5M2sKKzc2MzQxIGY5M2IyYTY4ZGZiNDIwNzRmZjZkMzc5ZTZmNjM4ZDQ4YTFhODAxZmMgcHkzaworNzYzNTAgMzQ5Yjk3ZmY0YzJiNzgzMjRmYWYzZDQ3MzhlNmVhZmZiMzdlMDk2NiBsZWdhY3ktdHJ1bmsKKzc2MzUxIDcxODNkNmI5MzBiYTkxMjRhY2Y4YjQxMGNlMTBkMmQxYzhjNGUwYjAgcHkzaworNzYzNTMgMjYyODIxNmJjNjZkNDc2Zjc3NjkzZDgyYzcyMTQ2MDBmMjBhOTg4MiByZWxlYXNlMjYtbWFpbnQKKzc2MzU4IGE3N2EyZDdjZWQ3ZGQ3YzJlM2NlYzgwMDc3ZWVhMTAyODZkMWI5MGYgbGVnYWN5LXRydW5rCis3NjM1OSAxODRlYjkwYjJlM2Q3NWZiOTFjNDBmOTIxNGVlNjcwMzcyOWExOWY4IHJlbGVhc2UyNi1tYWludAorNzYzNjAgZDZjMjEwNjc3OWI5MGNlMmNiMDk0Njc2ZDJiMTI1YzkyYzcxY2U0YiBweTNrCis3NjM2MSAzYzYyMDMxYjI1MDZkZWNkNTdlNzVjMzUxZWNlOTcyMjY1YjA5MTIzIHJlbGVhc2UzMS1tYWludAorNzYzNjIgM2QyYjA2YWE3YjM2ZmEwYzY0YjYzYzc0YzNkOWQwMDA2MjNjYjMyOCBsZWdhY3ktdHJ1bmsKKzc2MzYzIGYwMTQ4ZDkyZGI3ZmY1MDYzMzM3M2MzODBmMGIwMTZiNmExZjg3YjEgcmVsZWFzZTI2LW1haW50Cis3NjM2NCBlZGE1NmQwNzc1YmFjZDdkYjJmYzY2MTk1OTkyNzZhYzZhYzA2MDJmIHB5M2sKKzc2MzY1IDI0YWI5MWZiMjVhYmYwN2VkYWFhNDM1MWQ5OWQ1MDBmNDdiZDY0ZTIgcmVsZWFzZTMxLW1haW50Cis3NjM2NiAzZDE4Y2QxZDA0YTQ0NjhmMTgxZjIwODc2ZjRiNzU0Njg2YWIzMGZmIGxlZ2FjeS10cnVuaworNzYzNjcgNGVkMTMyZDZiYjcwMDEyMzhmMmMxMzA3MTU5MmJhYzM3MTAwN2UyYiBsZWdhY3ktdHJ1bmsKKzc2MzY4IDZlM2NjM2FkZjFkYzQ0MGEzYjJkYzE4YjI2MzYzYmFjNzUzMGI4NDEgcHkzaworNzYzNjkgYTdmNjE5NGI3OGNjOTJkMjgwODhjN2E0YzE5YjNiMGU3NmNhMTcwYyBweTNrCis3NjM3MCBlZDU0YTFhOTE0YjRjNjYwNTMwMGUyYmUwYTI2YzU1ZGY1YWY3ZGYxIHJlbGVhc2UyNi1tYWludAorNzYzNzEgNWVmMzRiMjk3NjZjZjFhMjc2MzE3Zjg5Y2JkMjRkMjJiYTdiZGVlZiByZWxlYXNlMjYtbWFpbnQKKzc2MzcyIDJjNWM2Njg3ZjFjOGViNTQwZjBmMGE3OTZlM2NmY2RmMDBmMWFhN2YgcmVsZWFzZTMwLW1haW50Cis3NjM3MyA5MmUwNmNkYmVhYjliNjg0MjVlYzJmOWM1MjI1NzdhNjA0ZWQ3NGQxIGxlZ2FjeS10cnVuaworNzYzNzQgNTBkMzU1MzI0YzUwNjMyN2RkYWRjNzM2MmVjMDExZWZjYzIwZWMwNyByZWxlYXNlMjYtbWFpbnQKKzc2Mzc1IGI5NmY3OGNlODM4MzM5M2JjMWRiZjQ0MTBjNGFkNGJlOGYwNzgwZTEgcHkzaworNzYzNzYgMzMzZGRhMzFiZDczMzFlZTYxMTdjMjE5MjRmN2FjZjZiN2UwZGUzMSBsZWdhY3ktdHJ1bmsKKzc2Mzc3IDQxZDI5YzE3ZmQ0MDVkNmFlMTMyZDBiZTNiOWUyYmI0MTk0ZmIzMmQgbGVnYWN5LXRydW5rCis3NjM3OCA0NjMzZWQyMzc5NzBkNzQ2Zjg0YjkxZmMwMGRlMjU2NDdhOWQzNjZlIHJlbGVhc2UyNi1tYWludAorNzYzNzkgMWU1MzRkNzk1MGY4MGU4OTMzNzE2ODdlYTVlYmFhYzAxYzE3YmIzMSBsZWdhY3ktdHJ1bmsKKzc2MzgwIDllZDAyZGY3MmJkNjJmM2U3MTJmZGViNDM3MGY3YmVlZGUzNjQxNjYgbGVnYWN5LXRydW5rCis3NjM4MSBkOGJjYzlkZTE2MDU0Yzc5ZTg0MGYzZjY4ZWI3YWFiMzY3MWI1ODBhIGxlZ2FjeS10cnVuaworNzYzODIgMGJjYzEyYzQ2MDE1YTQ4ODg1NTdjZGFjOWUxZDIwZTI0NWY3YzRhYSBsZWdhY3ktdHJ1bmsKKzc2MzgzIDA1YWYwNDkwMGI2YjkxZTJlZDAwZGM0MzU5ZjUwZmFjZGEwMzdhOWQgcHkzaworNzYzODQgNzE1YzBiYWE4YjJjOGM3OGFjZDVhZGJiMjdmMzI1M2MxNzRjOGM0ZSByZWxlYXNlMjYtbWFpbnQKKzc2Mzg1IDVlNWM5N2I5YzgyNzlmNjJjODM4MDgzNjJiN2RkMzExZDk1NGUyMmMgcHkzaworNzYzODYgYTM0NWJiNTBlYzBmODhjNWRhOGQzMWIwMTI4Mjk0NzhmYzlmZjI5OSByZWxlYXNlMjYtbWFpbnQKKzc2Mzg3IGQ4MDE5ZDFkNTZmMzM0ZjUyZTk2Yjc4MWJiYzRhYmM0NzIxNGIxOTcgcmVsZWFzZTMxLW1haW50Cis3NjM4OCBlZDU5MDc3ODM4YWRlOTkyN2FmNmQ0OTIwNzUzYzEwNmQ5MGJmMDg1IHJlbGVhc2UzMS1tYWludAorNzYzODkgYjMxYTMzYzM2ZjA4NzRjYTE3MTY4YTE0ZWE2N2Q1ZTc0YWE2ZDA0YSByZWxlYXNlMzEtbWFpbnQKKzc2MzkwIGI4YTBiMzMzZTQ2OWUxYTg5OGYzMTQzYTA3OGUxNzFhODkwN2ZmMzEgcHkzaworNzYzOTEgOGQwNmU0NTBiYzk4Y2I2YTRmNzNiYTljZmFmMmRhOTc4YzZmNzNjMyBweTNrCis3NjM5MiBmMTUyNjY3MjAwYWU5MDQyNGNmMmZkY2I1ZGEwYjg2NjA0YzhjNTUxIGxlZ2FjeS10cnVuaworNzYzOTMgYTc5MGY4NGZiYWZhMjgxOGVlNmQ5OGExNmExYzUwNjUwYjZlODJjMCByZWxlYXNlMzEtbWFpbnQKKzc2Mzk0IGY3M2QxMzdjZmJkMDQ2ZjdhNGFkYTYxMGVjNTg1MjI0Yjc0OTNiYjcgcmVsZWFzZTI2LW1haW50Cis3NjM5NSA4NzkzZmY4ZjQ4MjYxZDkxNDZkNDg4MGNjNGY1ZWQ3NjFkMWJmMjMzIGxlZ2FjeS10cnVuaworNzYzOTYgMTY2ZjdhM2I3M2ZjNjBjNjM2ZDY2MmFhYmEwMmVmOWYzZGE3NGIzYSBweTNrCis3NjM5NyA0MmFhZWRhZWZiY2I2NWUwYjk1NjllNzc1ZjZjNTJiZGMwZjYwZTA1IHJlbGVhc2UzMS1tYWludAorNzYzOTggZDU3NzllMTU5ZGRiMWE4ZGEyMWM3Y2I3NmM3YTU4ZmZkZDZjMGJiYyByZWxlYXNlMjYtbWFpbnQKKzc2Mzk5IGMwZGZhOWJkNWM3ZjgyMzNiODI2NWQ5MmU0OGQzNGIxY2YxNmNjYWUgbGVnYWN5LXRydW5rCis3NjQwMCA0YjZiNDk0M2Q2OWE0MGIwYjQ5YTkyYzNlZGIzZGFlMTQxMTczZTJhIHJlbGVhc2UyNi1tYWludAorNzY0MDEgZjU3ZjBjNmFhZTlkODJkODNiY2NmZDkxNGM1NDA2NjNkNDFmYTQxNyBweTNrCis3NjQwMiBhYjViN2UwYTkxMzFhZGJjM2ZhYWZmYjhkYjdkODhiMDAyNWUwNWFmIHJlbGVhc2UzMS1tYWludAorNzY0MDMgYzA3OWZjYmZjNzYxN2I2Yjk4MWVjNmNmZWRmZjQ5ZThjZTZlYmUzMyBsZWdhY3ktdHJ1bmsKKzc2NDA0IDViNTQzMjVlZjZmNTc2MzEzOGFjZWRhOTUxMTJmMWIzMmZkNDJlMDYgcmVsZWFzZTI2LW1haW50Cis3NjQwNSAzOTk4OWM2NmRiMTc4YTIxOGI1OTEzZjg1NzMzOGVjMjc5ZmUyOTc1IHB5M2sKKzc2NDA2IGE5MmVmMTM2ZDlkMGNmZjkxNmI4M2FhNTFjZGUyNTkzODQyOGJjNzcgcmVsZWFzZTMxLW1haW50Cis3NjQwNyA0ZmFlODE2OGM0M2IxMzE4OGUzMGM0MTEwOGQwNTM3YjI4NGE3ZWJlIGxlZ2FjeS10cnVuaworNzY0MDggYjk2YWUzZDhhZGZkMTA4YWIzN2U4YjAyMTI3MDgzZDg2MGUxYjkzNSByZWxlYXNlMjYtbWFpbnQKKzc2NDA5IDJkZDc5NDJkY2ZkNTM5MGE2NmY5MzE1NDhhZjhiNzAzNTViMjRjM2EgcHkzaworNzY0MTAgMjRkMWUwNmM2MjljMWE4NjBmOWRjNWY1ZTIyM2IxOGIxZGY4ZjgzMyByZWxlYXNlMzEtbWFpbnQKKzc2NDExIDY3YzBmOTJjZTU1Yzc3YmEyZTZjZjdlYWRhNDRmYWI1ZjU4YmRmZWIgbGVnYWN5LXRydW5rCis3NjQxMiBhNGQ5YTNkYmM1MzNmYjJlZjJlMWZkNzBjNWEyZTY0MzZmMzI0YTA4IHJlbGVhc2UyNi1tYWludAorNzY0MTMgOThhYjNhZGIwNDVjZTI2ZWE2ZGY2OWQ0MTZmOTViMDQ0MDAwYzg5MyBweTNrCis3NjQxNCAyMjU0YzdkYTk3Nzg4MDQ2MzMwZWQ5MWQ0NGM5MGRhZWU4N2IzZjk3IHB5M2sKKzc2NDE1IDgyMzgwODE2ZTdkYjNiMjY0NzFjMDY4MDY1MWJhYTljODM5ODZkNTQgcmVsZWFzZTMxLW1haW50Cis3NjQxNiBlZDMwYmNmZmExNDY3MmYwZTMzNDlmYzA3N2NlNTlkZTc3YjA5NjBhIGxlZ2FjeS10cnVuaworNzY0MTcgNmFhNTI4YzUwMTI4NGM1ZjdjMmQxNWIyYTM5NjQyMTIxN2I3MzQ3ZSBsZWdhY3ktdHJ1bmsKKzc2NDE4IDQ3NWJmOGI1ODRhOTIzYjA0OGYyMzg3MmYzY2U5ZGJiNmRjZjIxODQgcHkzaworNzY0MTkgZjlmMzk1MGI1ZWM3NTY1MjA3MWU1MTc5OTIzNDgwYmMxZDFjOTEwMCByZWxlYXNlMjYtbWFpbnQKKzc2NDIwIDFjMzUyNzUwZWJmMjNmOTUxNjY4NjM2ZjgxNTM3OGRlMzgzZGE0NjcgbGVnYWN5LXRydW5rCis3NjQyMSBmMmRhNDg4YjRiN2IzOTM1NmUzNDA2N2JkMmVmZGI1NDc1N2UyYTQ3IHB5M2sKKzc2NDIyIGNkNWIxNWMyOWEzOTZlZTk5Y2QwYmJmODQ0YmEzNTM0YjMzZmViODUgcmVsZWFzZTI2LW1haW50Cis3NjQyMyA2ZTM3MDAxM2YzYTBhNTlhNzk5NDhiNjMzYjJlZTViZjI4Y2FlM2I1IGxlZ2FjeS10cnVuaworNzY0MjQgMTM3MTE1ZTM5NWQ4ZGRmYjU3ZWZkNDIwNGFmNGUxMTZhZGJkNmY4MCBsZWdhY3ktdHJ1bmsKKzc2NDI1IDE4YWYwY2UwYTU4YmQ4YjZiYmM3MmEyODBhMWNkY2I5ODllYTBmMGMgcHkzaworNzY0MjYgZWFlYmUyNDYwMzc3YzU1YmFjMjA3ODk1YWU1OWJkMjZhYTAwNTY2NCByZWxlYXNlMjYtbWFpbnQKKzc2NDI3IGZkNmUyYWJhZTE0ZTQyZjUyZmY2ODVmYjJkNjUwNDQzNWMxMjRmMzEgcmVsZWFzZTMxLW1haW50Cis3NjQyOCBlMmIyY2VlZmE4MmFjZmRiNWE5OGI5NDBhM2QwNDAwMzA5Y2JhZmViIGxlZ2FjeS10cnVuaworNzY0MjkgZTgzZTNkYjYyZmM3OGQ0ZTNmZGFhOGYzNjVkZTdjMzMyN2M0ZDcyZSBsZWdhY3ktdHJ1bmsKKzc2NDMwIGUzYzk5NGMyOWEyMjkyN2EyOTg2OWNiNDA1YmFhNjVjMDJjNWExZmIgbGVnYWN5LXRydW5rCis3NjQzMSBiODFkNjAxMTBmODZmNzc4MTIyOWU1ZDAzYmQwMTAyMzFhMDZiZTI2IGxlZ2FjeS10cnVuaworNzY0MzIgMmUzZWMzYmI0YmU3Y2JmZDJhNmRlYmUxMDI2YWYyZmE1MzI3MzU2ZSBsZWdhY3ktdHJ1bmsKKzc2NDMzIDFkOTIzZWJiNDc2MDBmOGEzMWM2ODhiMWVmYjYzZmRlYTNjMmZlM2UgbGVnYWN5LXRydW5rCis3NjQzNCA3YTVjYjRkZWNmNmYyOGU4YTVmMDlkOTE0YWNiZTFkMjg3YTVjY2E4IGxlZ2FjeS10cnVuaworNzY0MzUgYjhiZDUzNjA4NDFiYWE1ZGU1YjlmYzExOGRjZDMyMzBjNWY4ZTY2NSBweTNrCis3NjQzNiA1YWVlZWUwZWFlNWZjZjUzNmJlMzNkODY3MGZhYjI0NmM5ODI4MTY1IHJlbGVhc2UyNi1tYWludAorNzY0MzcgNjM5YmEwMzZjMjA5NDhjNDg4ZWI3Zjk0MzdhMjNmNmM3ZjEyYmNjNCByZWxlYXNlMzEtbWFpbnQKKzc2NDM4IGFmODhiMWQyNWJmMjhlYmM5NTUxZTk1MTgwMTljNmFlMTAwZGU0NjAgbGVnYWN5LXRydW5rCis3NjQzOSA1MTNjNGIxNTc1ZjI2NzAyYmMzMWZlZmU3MDQxZmY0NWFkOTE4NjExIHB5M2sKKzc2NDQwIDRjODcwOGE3OTFlNjAzMmUwMjhjZDk1NGI0NDA0OTQ3ZjY4OTZjNDEgcHkzaworNzY0NDEgNGQ1NTZjMjc5MjZhNjFjNzMyNzY3YWVmMjAyMzJiMmUyOWFmMTcwMyByZWxlYXNlMzEtbWFpbnQKKzc2NDQyIGRjYmNjOGMxNDE3OTM1MDA3Nzc1NGQ3MzJlMDZjZWQ0YzE2NDJmNWEgdGFyZWtfc3lzY29uZmlnCis3NjQ0MyA0ZTI3MGVhYjQ1MmRmMzA4MTQwYTliNWQ3NmMwNTY5M2Y1MDE2NzRhIGxlZ2FjeS10cnVuaworNzY0NDQgZDZmODU1MmZjZTc5ZmFmZDRhYTFlM2M4NmU4NTZjY2QwMmIzMDFmMSBweTNrCis3NjQ0NSBiYzc2NDNhN2E1ZTdiMjg3ZmYzYzk4NzYzNzJjYjZkYjgwNmQyOGI2IHJlbGVhc2UyNi1tYWludAorNzY0NDYgMGVlYjNhM2U3OWVmODg4ZjcyYThiYTdhMzEwYzg5N2Q3ZTJkZWYxMSByZWxlYXNlMzEtbWFpbnQKKzc2NDQ4IGVjNTJjNDE5YjgyNGUxYzVlMDhmM2E5YmQ0NzgyY2UwNjkzOWVkMmIgcHkzaworNzY0NDkgMzczZDQyZjI2ZTk2NmE3ZGE4MDQ5MTk2ZTM0ZDM1YTM2Mjg2OGM5MSByZWxlYXNlMzEtbWFpbnQKKzc2NDUyIGRlMDc4ODBhNTNmZmE3OTA0YjMzZTMzZGEwNjVmMzVlZjIxMDFiMjcgbGVnYWN5LXRydW5rCis3NjQ1MyBkNmNlMThhZDg0NjcxNjllMTgyZWE3ZTIxNWQ5MDliNDBlOGYzNjJkIHB5M2sKKzc2NDU0IDU2ZjE5MDgxZDdiY2U5N2VjZDJhYzBhNWY4MmUzMTc0ZmVmNDk1N2UgcmVsZWFzZTI2LW1haW50Cis3NjQ1NSBlMWQ3MzI1MjdjN2UzNDQ1N2I3OWRmMDcwNjA0Y2I4Y2E3OWU0ZTNhIHJlbGVhc2UzMS1tYWludAorNzY0NTYgMjQ4YzRmYTVmZTBjOTg3OTVhODM2MWNiYjM4NTNmYWYyY2RjOGY0NCBsZWdhY3ktdHJ1bmsKKzc2NDU3IDA4NjllMWFiNTcyZTM3YzMzNTQ5YTJiZDc3MjEzZjY0N2JiNDMzZjggcmVsZWFzZTI2LW1haW50Cis3NjQ1OCBjNDhmZDYzYzJmNjFhMDhiMDIyZDI3YTMzZmQxMjg0MDYxYzUwZmFmIHB5M2sKKzc2NDU5IDA5ODQwOTlhOTQzMTNiMmVmZWJkNTEwYWJhNTEwYTE2YjUwNjQyNzYgcmVsZWFzZTMxLW1haW50Cis3NjQ2MCA3MDQyMTRiOWNiNzZjNzczZDEwOTVlNzUwMWM5NmY1NjYxOTc0OGQ1IGxlZ2FjeS10cnVuaworNzY0NjEgMjYzOWVhN2I5MmVkMDRjNjk2ZTRkNzUwZDIxMzFmZTliOTFkYWVmZSByZWxlYXNlMjYtbWFpbnQKKzc2NDYyIGFkYTVmNmVlZTFjYjEyMWQ0MzcyYmEyZDM5YmRjYjdjOGI0YTFlNjMgcHkzaworNzY0NjMgYzJlY2NhNWZmNjU5M2NkYjA5YjQwYzQxNTI0NTkyN2IxNGU5NTI1ZiByZWxlYXNlMzEtbWFpbnQKKzc2NDY0IGY1NTRkZmZmNzQ1MDU3NjU2ZjVjYTczMjBkODdmNmRlMzZiNTI1NWIgbGVnYWN5LXRydW5rCis3NjQ2NSA4MDhmOWMwZDRhYzQwMGNiZjViMjAzOWMwMzdiMWNhNGNhNGY1ZmNkIGxlZ2FjeS10cnVuaworNzY0NjYgNWNkOTVlNTc3NzJjODBjN2ZiYjc1ZWFlNWJlZjc4YmM3NDYxOGRjMCByZWxlYXNlMjYtbWFpbnQKKzc2NDY3IGM4ZDY5YTA2YjMzYmJmNjE2NDlhOTBkMzY3NzIxYjVjZTc0NjJjZmQgcHkzaworNzY0NjggODE4Y2Q0MGRmODY1ZjI2NzgzMTMwZDUwM2EyYjY1MDU1MjE1NzY3OSByZWxlYXNlMjYtbWFpbnQKKzc2NDY5IGFhOTYyN2M0MTIyMmNhYTJhNGEyZmI2YzFkMDg4MDcyMWU2MzMzN2YgcHkzaworNzY0NzAgM2EyYjE0OWFlNjZlODE1ZjA4M2YyMzZjMDMyY2I5OTQzNTAxOTA4OSByZWxlYXNlMzEtbWFpbnQKKzc2NDcxIGYwMTdhMzQ4NjRlMmJhNTM3MDI5ODY5ZDdhODlmNDdkNmI0YWE5YTggbGVnYWN5LXRydW5rCis3NjQ3MiBhN2ViMWFlNGU5MTkwNGJiZTQ5ZmMzYzRlYWY0ZTFlMGZmNTUyNmQ1IGxlZ2FjeS10cnVuaworNzY0NzMgMzAxN2Q4MmYwNzVhY2RiMTE0YTZjOWViMGU1MTYzODJhZTI0NTU2NyByZWxlYXNlMjYtbWFpbnQKKzc2NDc0IDA4YTBjOTU4OGYxM2YwZjU4NWM3OWQxMWYyMDY2ZTE2NWJhNDJmOWYgcHkzaworNzY0ODMgYjliNjgzZWVkZWUxMTY3OTBjMDFkNzViNTU2MWJmZjAxMDJlODBjNiBsZWdhY3ktdHJ1bmsKKzc2NDg0IDUxMTZlZjc3OWE4MDFmMWNkYjEyYWIyZTc4ZWY2ZTI3NDk5NTBlMTMgcmVsZWFzZTI2LW1haW50Cis3NjQ4NSAzNTdhZDkwYjgxMTRjZjQwZjcyYmM4ODhjZWVjN2E2NGZhODY3Y2ViIHB5M2sKKzc2NDg2IGI3ZmJlZjA3N2VhZTEzY2I1MGJmYWU4OGFiYzk0NmZjYWY5OTQ3ZjQgcmVsZWFzZTMxLW1haW50Cis3NjQ4NyAzOTQ4YjRjNzI5ZDdhZTk0YWQ3NWY2NDFmYzQzZmM3NGI2NjllYmUwIGxlZ2FjeS10cnVuaworNzY0ODggNTE2YzYyMmE0ZjllMTM4MmMyNmQzNzY3YjE3MDlmOGVmMzgzMDFlMSBweTNrCis3NjQ4OSAzMzdlYmI4MjliOGNhMmUzNzcyMTQxYTg0YTNlNzg0YzkyNWYzYjY4IGxlZ2FjeS10cnVuaworNzY0OTAgOWRjYTM4NDc0ODU0OWM4NmQ4NDZkMWU1ZWQzMzBhNjA5YWU1NmVlOCByZWxlYXNlMjYtbWFpbnQKKzc2NDkxIDUzNWUwOGNlNDNmNTc5Y2M2ZTk2NGU3YmVlODBiYTRmZjcxZDU0ZDcgcHkzaworNzY0OTIgNThiMTE5MWU0NTFmYTAwM2ZlMzM5YWUzOTQ1NTIzYzBlZGFiZWQyNiByZWxlYXNlMzEtbWFpbnQKKzc2NDkzIDZmMDQ4YjFlNTI4MDYyMzIzZjllNTFiOTBmNjhmNjQ5NzkyN2EwYjggcmVsZWFzZTMxLW1haW50Cis3NjQ5NCA3NjU5MDlmYzdkZWM5NmUzZWU0ZTExODM5OTgxNjYwNWY3ODU3YTk4IHJlbGVhc2UzMS1tYWludAorNzY0OTUgZmJlZjVmY2NiMGM4OGY5Y2ZiZDA3NTc2NTEwNWUyNDM1OTM1YzAyYiBsZWdhY3ktdHJ1bmsKKzc2NDk2IDgzZDk0ZTcyZjAxY2ZmYTBiMjYxZGQ1NWNmOWFhNDQ0ZWQ4ZmE4MWEgcmVsZWFzZTI2LW1haW50Cis3NjQ5NyBmYjc5OTRiMjkxMDE3M2E0YzdhZTE0MjExYjA3YjA5YWRjYWE5YmYyIHB5M2sKKzc2NDk4IDE3ZTU5MGJlNGM1YWEyYTY2OGVlNDkxYTM3YWIxOTg0ZjRhZWNjZTQgbGVnYWN5LXRydW5rCis3NjQ5OSBjYjNlYWM0MjFjZjk2ZWY4ZTE4Mzc0YTFlMjJmMjE4Y2EyYTIyOWZjIGxlZ2FjeS10cnVuaworNzY1MDAgYjUxZmRhNzU0ZjVhNWUzMTcwNGIzZmUzMTNjOWFmYTc3ZjgyMmZkYyByZWxlYXNlMjYtbWFpbnQKKzc2NTAxIDllNzlhNmFmYTNmNTMxMDBiNmFhNDFhOGFkNjgxZTNmZjAxY2MzNjkgcHkzaworNzY1MDIgMmNkMWZiMTA0MjMzNDgxYTEwZTU3MGY3Njk3Y2FiODQzODk4NzlmNCBsZWdhY3ktdHJ1bmsKKzc2NTAzIDkwMjgyODA0Y2Q1MDE2N2VhMGMyOGI0OWJmYmM5MTQwNjkzZDhjOTkgcHkzaworNzY1MDQgYWQ1MTY5ZTA1ZGMzYjM4YTY5OGZkNjM5NGVhY2FmYzAxNTA3NzRmYyByZWxlYXNlMjYtbWFpbnQKKzc2NTA1IDAxOGIyMGIwMzlhODU0YjVhMTZlY2Y4MGZiNzM1YzdmMTg5ZmJjMWIgcmVsZWFzZTMxLW1haW50Cis3NjUwNyA1ZWEyMjZkMzJmNmQ3N2U1ODE5N2U1NmIzZTNhNWQ2YzZkOThjOWRlIGxlZ2FjeS10cnVuaworNzY1MDggMWQxNTdlMmNlOTQ5M2Y0ODM0ODZmYWQyOTEzMWU2Nzg5NDhmMGNiYSBsZWdhY3ktdHJ1bmsKKzc2NTA5IDg1Y2Q5MzUyNTU2ODdkM2I4MDNmNDk4NjU4NDQzNDUzNjJjNTcyMzQgbGVnYWN5LXRydW5rCis3NjUxMyBjNzczMmY4ODljNDU0OGFlNzBjZjliZDE4OGUzM2FiYjhmZGQzYjc4IHB5M2sKKzc2NTE0IDAyMmNkMGYzYzU1OGVkZGUxNjlmNmJhNTYyYzdkMTQxNTM1NmNiNDMgcHkzaworNzY1MTUgMGRiNjcxNTNkMjVmMTRjM2U5N2M3ZDhiZjEwOTZiODkxYmUwNjg5NyBweTNrCis3NjUxNiAxMzg2ZDBlOWUwZmM3YTRkNjE3ZDgwYjBiZGFiMWI0MGRlNjNkNDc2IHB5M2sKKzc2NTE3IDQxYmQzMTIzODY0ZDg5ZDM1MTFiYmI3NzVlNWZlNDJmZmEzZWVlNmUgbGVnYWN5LXRydW5rCis3NjUxOCBlNWJjMzgyY2NmNzViMWVkOGEzMGNhN2ZiNWQyNDg4ZDIzMTYzMzYxIHB5M2sKKzc2NTE5IDUwODY1NGNlZTEzN2E4ZWQxNTgxNWFlNzMwZWRmODBhMThjYTA0MTAgcmVsZWFzZTMxLW1haW50Cis3NjUyMCBlNjEzM2QxNTRmOTgxOWM2NDlkOGVhZGJjYmZlNDJlNDhjZjIxZTA1IHB5M2sKKzc2NTIxIGZlYTUzMjU4YWI3ZWJlZWQxMDhkYzk3MWVhOTM2MmFhZTRmZmFlZTggcmVsZWFzZTI2LW1haW50Cis3NjUyMiBkZjg2YzQyMGU5N2EwY2MxNTdjNjg3ZThmM2I4MmFjMmMwNWVkN2RlIGxlZ2FjeS10cnVuaworNzY1MjMgODVlMWUxM2I0OThhNzJjMDMyZDgwZDkyZjZhOWZlNTRlYzY4ZjhiYSByZWxlYXNlMzEtbWFpbnQKKzc2NTI0IDJkMzg4ZDFhODNmNDJlMjQ0NmFlZjhlOGNjMWZlNGYyNDQ2OWFkOTcgcHkzaworNzY1MjUgYTFkMTY2YWIxOGM0NGJhNjM2M2FjY2I5ZWYyZmZhNGYwNDRmMzhjMCBweTNrCis3NjUyOSBhNjk4MWY0YTc0YTFkODY2YzA5YjU5ZWU3Y2EwNjAzYzk0ZWMwYWZmIGxlZ2FjeS10cnVuaworNzY1MzAgYTg1NDcxYzQ3NTE0OGRmMDY3N2E5MTIxOWYxNjZjOGI4ZDIxNWQ3NyBweTNrCis3NjUzMSA2MWU2Y2U3MTg1MDA4OWMwZDQ4Mjk2OGQxYWExN2IyODgyNGEyMTIzIGxlZ2FjeS10cnVuaworNzY1MzIgM2Y3MWViZTkxZjkwNTUwNWM5ZTUwZTY1NmI2OTA1ODg1ZjA4YTNjNiBweTNrCis3NjUzNCBjNTQ1OGJhMzg5ZDc2NTlmOGU5MTIxNDVmOGM0NGNlMDdmNTY1NWNhIGxlZ2FjeS10cnVuaworNzY1MzUgN2I3NGFiYjgwMzU2OGRiZTdmNTMwOGY5MzNhYjJjOTQzOWQ1ZDVhNyBsZWdhY3ktdHJ1bmsKKzc2NTM2IDc0MjMwZTVhYjM3MzkwNTU5YzlhNDJmMjJlMzE1N2ZmNzJmODhmYjMgcHkzaworNzY1MzggNDUyMWY1OTk4ZTdjNjJlOTQxMzYwMzk5ODM5ZmU4M2U5ZmNjYWQxMiBsZWdhY3ktdHJ1bmsKKzc2NTQ2IGE4YWI2M2ZkMzA5ODk3YzAwMzVkMmMzNzNjMzZmMDE4N2IxMDgzMzggbGVnYWN5LXRydW5rCis3NjU0NyBjOTM2OTA5MmZlZmNkNDQ1YjljNTYzZGVmZmEyYzFkZjBhNjBlNDI3IHB5M2sKKzc2NTQ4IDEzNzQ4ZjNkZGM3YjU0OWI0ZWI2ZDY2YTY1OTk1MjFkNjY0NGYxOWIgbGVnYWN5LXRydW5rCis3NjU0OSBjN2Q3ZDVjYTg0NDY0ZjJhY2Q3YzA0ZGFkMWZmNTQ4OWE1ZmY5MTM1IHB5M2sKKzc2NTUwIDk4OGRiMGJiZWUzYTNlMGE5NDY2NmVjZDkwNDEwZDVjOTQ5NmM3N2UgbGVnYWN5LXRydW5rCis3NjU1MSA2NzIxZDMzZjNjZDFmM2FjNmRkMTZiZjI0OGNiYWU3MjdmYjc3YmQxIGxlZ2FjeS10cnVuaworNzY1NTEgNTM2NjljYmYwZWQyYTliMjQ5NzMzZWYwNjlkZTE0YjM3YjcxNWViOCByZWxlYXNlMjYtbWFpbnQKKzc2NTUxIDcyNmQxMmRiYTFmNjBlM2RiMTRmZjI0NDA0ZjMxNmNiODBhNThkN2YgcHkzaworNzY1NTIgNGVmN2IzZTJkNmE4YjBiMGE5YjdjOGMyZTk4ZjM0NDllNmUwM2QyZiBweTNrCis3NjU1NCA1MjdiN2MwNzU4NDlmYmY2NDU4N2E1NDZjMzQyNzJkOTliNmU0YzA2IHJlbGVhc2UyNS1tYWludAorNzY1NTUgNTc0ZGQ4YWNhOTE0ZTQ0M2I2Njc1ZWU3YjViNmRlOTA4ODVmMTkzNCByZWxlYXNlMjQtbWFpbnQKKzc2NTU2IDZlNzQwM2FkNTMzNWVhNGQxMmQyNmUxYWVjMDI3NTNhYmU2NWJjZTEgbGVnYWN5LXRydW5rCis3NjU1NyBmZGU1MTMwYmY2Y2RiZDMyYzlmNGFhOGY1M2UyMGFiYmFiMjBmMzgzIHB5M2sKKzc2NTU4IDMzOTg2NjQ4NjMwYmM0YzA5ZjAxZmRhMTc0ZDFiYzAyNDYxZDY4MmIgbGVnYWN5LXRydW5rCis3NjU1OSAxODAyNGQyOTg2OWNiMWY1ZDVlMDkwMWVjMjBhYmJiNDdiZWQ2ZjhkIGxlZ2FjeS10cnVuaworNzY1NjAgYzRjM2ZkNTkzYjBhYzI5NmQzODUyYWE2YzRlMGE1ZDI4N2ZhNGJkNSBweTNrCis3NjU2MSAyOTdkZjc3YmEzOTY0NzA2OTZmYTVlYjI3ZjdmYWIxODNjMTg3NzkxIGxlZ2FjeS10cnVuaworNzY1NjIgNjk2ZDk2MTVhMjM4M2I5NTNiYWE2NzZkMjI0MTE0ZGJhOGIzN2VmNSByZWxlYXNlMjYtbWFpbnQKKzc2NTYzIDViNjA3Y2Q4YzcxYmI1OGRhM2ZjODc5NmU3N2IxMDNjMjBjZmI4M2QgcHkzaworNzY1NjQgM2QxMTU3ODJmZTFiYjA0ZjExYTgzZTM0ZDBhZTQ3MzQzZTI3YTdkMCByZWxlYXNlMzEtbWFpbnQKKzc2NTY1IDBjMTliZTQ1MGU2N2EwMWVjNGEyZDZmMTIzZjdhNGM3YjBlNThlZjkgcmVsZWFzZTI2LW1haW50Cis3NjU2NiBjYjgzNjMwMWRiNjA1N2VkZGNlNDI5YjMyMGEwZDQ0NDcwYzk3M2JhIHB5M2sKKzc2NTY3IDNkNzdkN2MxNmM5MDk3OTZjN2YyYWYzN2ViMWVmYmRmODg2OTc1MjAgcmVsZWFzZTMxLW1haW50Cis3NjU2OCAxNGVlNzViODZhNWYwNDFkNTMxYmNiNDFlNjI5NDdiZGVlY2ZjN2QxIGxlZ2FjeS10cnVuaworNzY1NjkgOTM2YjZmMDY1NTkzOGJlYzA0MjdjMzlhMmYyODY3Mzk2MzNkODgwNyByZWxlYXNlMjYtbWFpbnQKKzc2NTcwIDlmZDhlOTViNGZjZTE3ZGIzNTVlZmZjMTE5ZDI3MThjYzIxODA0M2IgcHkzaworNzY1NzEgODNjNzAyYzE3ZTAyMThkZjk2NTkyZWIyN2E5N2E4YmE2M2M3NDdlMCBsZWdhY3ktdHJ1bmsKKzc2NTcyIDkxNmEzZDM1MDc0MWM3ZjZjZmU4ODYwODgyYjQwOTI5YmRhZDFiMGEgcHkzaworNzY1NzMgMTQ5YzFhN2U3MmMxNTQ3MmYyOWI5MjgwZGNmNzhmYzk1NTMyNGJhMSBweTNrCis3NjU3NCA0YmVkNzk2ZWUwZDc4NjlhZDJmZjAwMTE3ZWVkMWNkOThiM2ExN2RlIHJlbGVhc2UzMS1tYWludAorNzY1NzUgZTA2YzNmNjJmY2M5OGMwMTI2YTIyYTBmZGYxYmI2NmUyYTE1ZDk1YyBsZWdhY3ktdHJ1bmsKKzc2NTc2IDgzMzUyZWQ5MjI5YTNmNjMwYTIzODEyMzA3YzhhOTQ3ZTVmZGE5ZjUgcmVsZWFzZTI2LW1haW50Cis3NjU3NyBiMGZjNTRjNWQyMzRmN2E0OTBmOTU1MDQ5YWY4NzUwNWUyN2IyOTI3IHB5M2sKKzc2NTc4IGYyZTFhYzc1MGYxMTg1MzRlZDAyODU5MTNlZjM1ZDBjMTU1ODk2NDggcmVsZWFzZTMxLW1haW50Cis3NjU4MyA5MzBhZWRlZDkwMGRjOWQ3YTczOTlhM2RkNmYyMTM4N2ZjOWFhZjUyIGxlZ2FjeS10cnVuaworNzY1ODQgOWZiNmQ1NDE0ZGQ4ODJlODM5OTY1NGVlMGUwMDNkN2ExMWFjYzk2OCByZWxlYXNlMjYtbWFpbnQKKzc2NTg1IDBlYWY1YzllZGQ3MjhmMjdjOTg4MjM5Y2JjMjJjOTIzOTkyM2Q4YWIgcHkzaworNzY1ODYgOTE1YTA0NGJlODM0Y2FkMmRkNGM0NWIxMmZjZGM4NWE1MzhkN2QxNyBweTNrCis3NjU4NyBlOGQ1NTBhODlmMGJhMTFhNjUzNWRiNzFhOGYzMzRkY2RiNDVhMGRmIHJlbGVhc2UzMS1tYWludAorNzY1ODggYTk0OTI1NWQ0NTBmYmExNjZkZDBlYWNhYTRhOGUwNWU5ZGM3NmU0NyBsZWdhY3ktdHJ1bmsKKzc2NTg5IDZjZDQ1ZjVjYWI1OGE3M2M5NDM2YjE2NzI5NDgxYzRkNTUwOWYxYjMgcmVsZWFzZTI2LW1haW50Cis3NjU5MCBlOTYwNjlhMTMyN2Y5MzZiNWU3ODFmNDk0MjFmNDBmMTU5NGY2NjE5IHB5M2sKKzc2NTkxIDIxOGE3ZWI0MGQyNmUzODM0YTAyNTlhODE5YzE4YThlMjYzYzhmZDMgbGVnYWN5LXRydW5rCis3NjU5MiBkNTEwMTJmZTA5YjM0MjYyMDZkMDIzYWUzODc1NGM1NGE2NTc1NTFlIHJlbGVhc2UzMS1tYWludAorNzY1OTMgNmJkZWRlMThmYzgwZGY2ZDZiNmY4YjdhOTBlNzVlMDY1YjI5Y2RkYiBweTNrCis3NjU5NCA5ZTUxYTE0OTk4YTJhNjAxYmJjYTM1MzU5Mjg3ODI5NTE3YTYyOTk0IHJlbGVhc2UzMS1tYWludAorNzY1OTUgZjM3ZjZiOWIyMjRiMDc5MDVlZDhlMjhlNWRiZjRjZjY4MDIyMTllMiBweTNrCis3NjU5NiA3NGFjOGMxMjdhNmZmMTZlYTAxYWUxMWVlYTA4OWQ3ZjgzNTZhZDA3IHJlbGVhc2UzMS1tYWludAorNzY1OTkgMWZmMmMzZWRjMTNjZTg3MmZiMWJjZjZmNjBkNWQyMzcxNmU1NjhmMCByZWxlYXNlMjYtbWFpbnQKKzc2NjAwIDI4MTY2NTBkNzY4OGMzMDM4NGY3M2U5ODE1M2U4Nzk2Zjg4MDRjYWEgbGVnYWN5LXRydW5rCis3NjYwMSA4NGUzZDM2ZGE0YzI3MGM2ZWYzNmQzOThkMjg0ODljNDdjODVkODJhIHRhcmVrX3N5c2NvbmZpZworNzY2MDIgMGNmOTkxNThmYTYzNjAwMTcyN2ZmODVkYmMwM2ZkYTFjMDM1MjliMyBsZWdhY3ktdHJ1bmsKKzc2NjAzIDMxNWU2YWU2NGJlZjdhY2Q4NTM5ZTA4NGU3ZjY4NWU0ZGNjNmI1MDAgbGVnYWN5LXRydW5rCis3NjYwNCBmZjJhZWZjOTc4ODFmMjU4NDQzNWZhMTE1ZmI4YzYzNTg0NmMxYzM4IHJlbGVhc2UyNi1tYWludAorNzY2MDUgZTMyMGY4OGE2NWM5YWNiMzg5ZjZiODRkYjk5OTA5MzhlMWNlZDA1YyBsZWdhY3ktdHJ1bmsKKzc2NjA2IGRkYWIzZGE5NDczZGI1ODc2MjUzYzBiMTdmODJkNTYwMmM1ZGIwNjcgcmVsZWFzZTI2LW1haW50Cis3NjYwNyA4ODk2YzQ4NDc0MjNkNThiZGMxYmRkMzNjMWI0MmUxYmRlYzZmYWE2IHB5M2sKKzc2NjA4IDBhNjEzNzk0NGU2MWEwNzY3ZGM2YTVkZmRmY2JlYzc0ZmNhOGE3YTQgcmVsZWFzZTMxLW1haW50Cis3NjYwOSA2NTM2YTFjZDQ3Y2QzZWU4MWY1NzVlMzk3NGY3ODY4MzVhNjNjZjdjIHB5M2sKKzc2NjIzIGQ5OWVmNDY0ZWYzM2ZlZjYzMGNhODcyZmY3Zjg3ZjQ1Mzk3MmU4MmUgbGVnYWN5LXRydW5rCis3NjYyNCA0ZDdjZGY3YTZjNzVkYjVmNzdhZjhiZWZhMDE0ZTJmYjU0ZWYwZTc4IHB5M2sKKzc2NjI1IDFiMmFmY2MzY2NmMzhhODNiNzE1M2FiYThhZWUzY2ZmMDBjZjkxYmQgbGVnYWN5LXRydW5rCis3NjYyNiA1ZDJjOWQ4ODc3ZGRiOWEzYWViMTUxM2RlNmE1MWRkNGY2ODVhMDViIHB5M2sKKzc2NjI3IDI4MDM2OTY3NzYwMmM2YmU2OTM2ZjA4YzQ0NGYxMjU4N2U2YmM4NGUgcmVsZWFzZTMxLW1haW50Cis3NjYyOCBjZjljNjQ5ZGNjNGY0ZjIxOTE0YWE1MDQwOTQyYjg4ZDgwZGQ1MTliIGxlZ2FjeS10cnVuaworNzY2MjkgOGY2ZWVlNDJmODEwZGNkNjMwY2M0Y2NiZjYzOTFiNGRjNWZjYzVjMCBsZWdhY3ktdHJ1bmsKKzc2NjMwIGNiYjZlOTJjMWEwZGQyNTQxOWI0MzUzOWYwODEzMWFkMDNlZjZlNzMgcmVsZWFzZTI2LW1haW50Cis3NjYzMSBkOTM5OGJkZDQxM2EwMzI1MzJhNWY0MzRiYWJmNTc5OTA4ODNhOWQ4IHB5M2sKKzc2NjMyIDBmZjQ3MDM0YzY5MWNhYjNjMjdiOGI2NTU5OGZlMjg0M2RhNGJhOTUgbGVnYWN5LXRydW5rCis3NjYzMyBkNjhhNjAwNTJjNjY1MDY1ZDc1NjAyZTdjMTE3MWRiM2FlYjQyNTM2IHJlbGVhc2UyNi1tYWludAorNzY2MzQgYjQwNTEyY2VjMmQ2YzlmMDM3ZDM3ZWNiZWI3NjdlM2FlYjMzZmIzYiBweTNrCis3NjYzNSBhY2ZkNTYxNWI1MmMxNGM4MmNhMTQ4YzhlMTA2ZGMyNDhmOWU1OGQ1IHJlbGVhc2UzMS1tYWludAorNzY2MzYgYTU0YzE5ODAyYWNjY2FmYTk4ZDFmNTY4NGE4NTNiZDhjNmZkMjRhZSBsZWdhY3ktdHJ1bmsKKzc2NjM3IGU5ZGFjM2VmZjMxNzQzYjUxNTJkODc0ZTA5ZTg1NGFhZGNhN2ExZTcgcHkzaworNzY2NDAgZDdjYzkwMTdhYzRjNjYwMTk1ZTE1NDMzMjI3YmRhMTQxZWUwMDE2ZCBsZWdhY3ktdHJ1bmsKKzc2NjQxIDBhZjgxODFkYTVjZTUxNTE2MThjYTlmNTgzNzFiMjMwZGRjYjllYjYgcHkzaworNzY2NDIgMjYyYTJjZWFmMDVmMWNkZDZlZTg3NmQ1MmU4OGJhMmI1MDVlMmE3ZSBsZWdhY3ktdHJ1bmsKKzc2NjQzIDE1YWMzMTkxZjliZTA1YTQ1YmZlMDdlN2JkNjI1Y2EwYzZmZTQyODMgcHkzaworNzY2NDQgODE4MDkyNWM3NWJhNTE5Y2I0NTUxOTVjZDQ5OWY3OWI5NDA0YjQyZCBsZWdhY3ktdHJ1bmsKKzc2NjQ1IGI3OWQwNDIwYzIwNDBkODJkN2U4NjY3YTk3NjU4MjM3MTY1NGViZjUgcHkzaworNzY2NDYgNWM2ODFlY2M5OTY3YzQxZGY5ZTc3ZWNjNTQ0OTc1MjA1N2Y3ZDFjNSBweTNrCis3NjY0NyBiNjBmMmIyYjljMDQ1NGQzNDFlYWJlMzUxNjMyYmU0YWFlNDBhN2QwIHJlbGVhc2UzMS1tYWludAorNzY2NDggNzVlMWI4YzA1ZjQzZDRhZTQyZDRhZTBmNDkxZjY1NDVjYWNhMWM0MyBsZWdhY3ktdHJ1bmsKKzc2NjQ5IDkxNzA1OGVlYTQ0MDI0OTljZmYyNjQ4MTdkNTNkYTdmZTIxMjBlNDIgcmVsZWFzZTI2LW1haW50Cis3NjY1MCBmZGY3ZDBlYzlkMDQxYjQ1MWM1YjE2MDFkMDhjYjBlYTJmMDU3ZWRlIHB5M2sKKzc2NjUxIGI1Y2QzZDJlYzAyNzZkMjQ5MDM4MjY1YjBiNGQ2ODE2OTBkNjU2NDEgbGVnYWN5LXRydW5rCis3NjY1MiA5Njk1NGU3ZGQ5YjZlMjFjNjhlNTU1MDhmODNhZDAzZjk2NjRiMjY2IHJlbGVhc2UyNi1tYWludAorNzY2NTMgMTE0MzRiNjJkOGNkODA2MmZlZGExNThjZmYzNDgwYjg0YjkzZWM4OSBweTNrCis3NjY0NyBlZjlmNDMyZTRkMzlkY2Q5NDIyY2FhYjM5MTlhNmVmYzQxM2RlMmFiIHJlbGVhc2UzMS1tYWludAorNzY2NTUgMWZhMTg1NDAzMWFhMmE0NjI5NjY2MzgxNTk0NjQ3NTg2Yjg3ODljZCBsZWdhY3ktdHJ1bmsKKzc2NjU2IGYwNDJkYjQzNDYzODM5MmM5Mzk3NjU0NGRhOGI3ZjM1ZWM3ZGVhNmUgcHkzaworNzY2NDcgZDAwZWMyNjBkNjJhYTljOWIxYzQwNDFiMDNlMzc2YzVjMDI0MzY4MCByZWxlYXNlMzEtbWFpbnQKKzc2NjU4IGI4ZTI5MjM2OWVhOGI4MmNmMTllNWMyNjUyZTM4OWVjNjRhY2JkYmEgcmVsZWFzZTMxLW1haW50Cis3NjY1OSBkMzFiMzM1MGFhZGJlNjMwZTBhMjYyN2MxMmIzYzBlYmQzNmY1YjdlIGxlZ2FjeS10cnVuaworNzY2NjAgMWVlMWZhN2JlY2YyYWQyM2VlMjliMjFiNDE1NzNiYzQ4M2YwNzI0MyByZWxlYXNlMjYtbWFpbnQKKzc2NjYxIDU5OGRlOGU2YzQ4YjM0NmMyZTZmZTgzNTY1ZmI0NDcyMDMzZmQzMDUgcHkzaworNzY2NjIgOWRmNGQ1YjUyNjA5Y2ZlNGRiNWEwY2Q3NGJhMjNlZWI0NzgzMDM0YiByZWxlYXNlMzEtbWFpbnQKKzc2NjYzIDczMzEzODg1ODE1NzRlN2ViYjM1MGI0Y2IyNmY1NzEzMTIxZDc0OWUgcHkzaworNzY2NjQgM2VjNmI1MWNkYmRkYmI3MTYzZjNhOWQ2ZmUzNjQxODI2OWEzZTg1MSByZWxlYXNlMzEtbWFpbnQKKzc2NjY1IDA0MGMzOGVkMjI1MTVmOTczNDI4NzE1YTVmMTQ0M2Q3NWE4NzZjZmMgbGVnYWN5LXRydW5rCis3NjY2NiBkNTg3YTRlNWJhNWE1OTQ5MWUyNTAwOWZiMzkxZWMyYTk2MzA3MzdjIHJlbGVhc2UyNi1tYWludAorNzY2NjcgNzNhOTEyNTcwM2MzMmFjMjQ2MTNmYzhmOGQ2MThiYjFhYzBjN2RhNCBweTNrCis3NjY2OCA1NWM4MzJiZDMyMzMzYTFhZjAwMTc5NmU5YzQ1NDA4MWRkZDBiM2ZmIGxlZ2FjeS10cnVuaworNzY2NjkgZDMwODAyOWU5YWQyMmI1YjhmYTQ4OTExNDQ2NDczMTAwNDc3NjNiYyByZWxlYXNlMjYtbWFpbnQKKzc2NjcwIDBmZTg5ODc1ZWRlZjM0NzZkYzI0YWZlMjllYjUzYjA2MGZiMTAwMTMgcHkzaworNzY2NzEgMDE0OGY3NmQ2ZmNkZmQ5ZjI1MTk2YWFhMDMxNGFhOGE3M2QxZGZhNSByZWxlYXNlMzEtbWFpbnQKKzc2NjcyIDZiYjYzYmU3Mjk5Y2I2M2NiZTQyMGQzMDljYjRjZmJlMzFiNDQyMjMgbGVnYWN5LXRydW5rCis3NjY3MyA0ZDc0NDVjYTMwNTE0ZWZmOTVjYTkyNjRiY2M2YzM1ZjdlY2U1OWFmIGxlZ2FjeS10cnVuaworNzY2NzQgYjQxMDdlYjAwYjQyNzFmYjczYTllMWI3MzZkNGYyMzQ2MDk1MDc3OCBsZWdhY3ktdHJ1bmsKKzc2Njc1IGI5ZTlkNTQwYzkwZDMxMjk2YjQ1YjJiZmQxYjU3OTE0NjgwYWI2YjYgbGVnYWN5LXRydW5rCis3NjY3NiAzNmEwZGQyMWM1YjQzZDlhZTg2OWNjM2E1NmQ0MDc3YTAyZGE5YjhlIGxlZ2FjeS10cnVuaworNzY2NzcgZTE5ZGU5NDMzYTRiZmU4Y2ZhMzg2YzFiYjg1ZTA3NGViOWQwNGM1MyBweTNrCis3NjY3OSAyNTUzMmM5OTMyZGZmYTdkOTJlNDM3N2I1MWQ3NWI2ZjliN2ZlNTMyIGxlZ2FjeS10cnVuaworNzY2ODAgZWFiMTIzZGMxMDdmNjRkYzJmZTExZjI3M2RlZjc4YjE4NDQ0ZDQ1NCBweTNrCis3NjY4MSAxYzkyZmJiM2JhZjI2YWM1ZmJlYTVmNDc1NDNhYjg3NTlhMmRkMjI1IHB5M2sKKzc2NjgyIGFkMTQ1NTU4MjI2Yjg3YWVjNzAyZjA5NDhhZTYxMThhMzJmZmQ0MzYgcmVsZWFzZTMxLW1haW50Cis3NjY4MyA2ODU2NTgxN2MxN2Y5NWJlNDQxYWM3YzkwNjJmYzU1YjEyMjgxMjBjIHJlbGVhc2UzMS1tYWludAorNzY2ODQgNmE0OGEwOTFjMGQzODZjOTQ2YWE5NGYwNmQ2YmRkZDhiOWQ3ZjZhYiBsZWdhY3ktdHJ1bmsKKzc2Njg1IDFjMmVjZDU5ZDY1YWY5OWQ3NTA0NTM2ZTZiZjgxNTk3Y2VhMTJlMzYgcmVsZWFzZTI2LW1haW50Cis3NjY4NiA5ZTc1MTYwMWY1MzgyN2UwZWE3ZTMxMzAzZjVmNmFmYzYzOTQwZjBjIHB5M2sKKzc2Njg3IDU2ODYxOGI1ZjZmZDVkNDU1Y2QwOGRmNGEyYjRkZGEwN2YyN2RkZjYgcmVsZWFzZTMxLW1haW50Cis3NjY4OCBhNmIxZTY5NTkzODJlMzVmNDBjMTkxNTk3ZWQzZGJjODI4MTQwNmFhIHB5M2sKKzc2Njg5IGVlYTgwM2QyMzVkMzQxY2M1YmFhYjBhODdkZmM3ZjcwMTM4OGU1ZDMgbGVnYWN5LXRydW5rCis3NjY5MCBiZTFjYmMxNWQ5ZjUxY2NjZmFjY2ZhNzAxNjQyNmE3NzY2YWMxZTg4IGxlZ2FjeS10cnVuaworNzY2OTAgZjliZGJjYzhkMWU4ZTZlYzhjNDU4MDlmMmJkNDAzOGRiYTQ2MmJhMiBweTNrCis3NjY5MSA2MDdmNTE4YmQzY2ZiODBiMGZkNmFjNzQ3NmJlNWExNTgzOWQwNjk1IGxlZ2FjeS10cnVuaworNzY2OTEgYmFjOGVhMmI2ZGEzNTg4NGVhZTlhZmMxMjliN2VhMmMxOTZlYmRmOSBweTNrCis3NjY5MiA4OWY2YTc1NDYyYjI3ZWRiMTUxMjBhODgwZmI2YTAwOTUzMGY3Y2MyIGxlZ2FjeS10cnVuaworNzY2OTMgNmVmNGJjYzRhNDUwMjE2NmI2YzgzNGIyYjZiMjlhMWVlMzExNWM3NiBweTNrCis3NjY5NCA1NmZjZTE4OGM2YmUwN2VmZjk0OGJhNTY1YzEzMzZmNWNiMDNlZWIwIHBlcC0wMzgzCis3NjY5NSBjMGY4ZTRhMjNkZGY0Yjk0OTUyNGE4NTVkM2JhMzIyYjhiMzYyMGRhIHBlcC0wMzgzCis3NjY5NiA2ODU1MjJjNmYzMGZiZTFiMTY1M2ZhM2M0MmQ3Y2RiZDVkMThlYTI1IHBlcC0wMzg0Cis3NjY5NyA5YzU5N2IwYTZhOWI3MWY4ODAzZjY0ZTM3OGJkYWY0ZDQ3NzBmY2FmIGxlZ2FjeS10cnVuaworNzY2OTggMzVmM2ExOWM0MjY1YTc2YzgyYTliZmZmMGM5ZmU3ZmJhNWI0ODI2NiBweTNrCis3NjY5OSBmNWE0NDdiM2YyNmViZjQ5NWJkNTcxY2Y3ZThmNTlhNzk5MDU5NjgxIHJlbGVhc2UzMS1tYWludAorNzY3MDEgNDUwODE4NjFlZjc0YWZmODY4ZjAxZTY5YmE2YThiYWZjNzQ1N2ExZSBsZWdhY3ktdHJ1bmsKKzc2NzAyIDI1YWVkZTYyZmMxNzJhNjY5OGVjMDM2NjJkNDI4YzgyYzgxZjJkZDIgbGVnYWN5LXRydW5rCis3NjcwMyAyNzUwOTczZTM4OTNjNDNiYThiMWNiNGEwNWRlMGUzYmMzZTA0YjNkIHJlbGVhc2UyNi1tYWludAorNzY3MDQgOTg4NzljOGQ1M2YxNjVkYzhjODAwZDhkODRjZGZlMTYwM2Y5ZGI1ZiBsZWdhY3ktdHJ1bmsKKzc2NzA1IDUxYzVjOTEyZWMzZWI0MmUxNjliMDU4ZmQ1NDJhZmM4MWY4NTgzNTYgcmVsZWFzZTI2LW1haW50Cis3NjcwNiBkOWI0ZjZlYTNlMzk3NWIzYjQ5ZDg1ZWZlNjQ2OGNiZjRmYTY4ZDE4IHB5M2sKKzc2NzA3IDc2NDdiMTRlZmU3MWZhOTM2NWZiNDJlMDkxY2VhZWE5YTgzNDJhNDcgcmVsZWFzZTMxLW1haW50Cis3NjcwOCBkYjI4YWViMmZiN2E3YmJhMjJjNmI2YzZlMTg5MjkzMDYyMjkzZWM1IGxlZ2FjeS10cnVuaworNzY3MDkgNDA3NDY5NTZiMzc5MmIzNTc4NTNjMjM0ODIyMmYyYjcxMmZhZDlhOSByZWxlYXNlMjYtbWFpbnQKKzc2NzEwIDY4M2Q1Yzk3ZTQ3NmRlNDk5ZmVjZjg2ZjkwNGI0ODY1YzQ5MmZhZWIgcHkzaworNzY3MTEgNmVmYjQ2YzJiM2MzYWRkYWUyYTViMzRiOTA4YmJiZWJhZDhiODhmZSByZWxlYXNlMzEtbWFpbnQKKzc2NzEyIDI0ZmZiMGEzYWU0YmE5MzQ2ODdkZmNjNzBlMDAzNDc0NDFjZjc3YmUgbGVnYWN5LXRydW5rCis3NjcxMyA0MGMzNjJhNThlN2YwYWExMDQ3NWFkMTZmYmUzOGVjZjY1MjVlMDFlIHB5M2sKKzc2NzE0IGNmMGM2OWJlMDExYTU4N2NjMWNhNzdkYzU0MDc3MDM5MjczYmYxZWUgcmVsZWFzZTMxLW1haW50Cis3NjcxNSA4M2E3NjE5Mzk5NzUzM2EyNzRkM2I5MzBiNzU4NjgwZjMxMjc3ZDgyIHJlbGVhc2UyNi1tYWludAorNzY3MTYgODNjMmJmMzE5MWQ4NWE0OGEwMWE4NGU4NjE4NDI5ZWE2ZjdjZTI0YyBsZWdhY3ktdHJ1bmsKKzc2NzE3IDViODY4M2E5NWVhZWM2NWYwMzllNzhjZDE2NTMyZGU5ZDA1M2Q2M2QgcHkzaworNzY3MTggZTcyOGFlODlhZTY5ZDg4Yzg1ZDMwOTY5NGJkMDU2ZmMyYmQzZjY2YSBsZWdhY3ktdHJ1bmsKKzc2NzE5IDVlOGI3NDQ5Zjk2MTVjMzA3ZDVmYjIxY2I2ZjFmMTJkNjBiMmFmYjQgcHkzaworNzY3MjAgNmM2NDI1NTYzOTE4MjgyOGI2NjBmYWExM2ViMDIxN2M0MGZkODcxNiBsZWdhY3ktdHJ1bmsKKzc2NzIxIDJjNTJkNGQzZTU0YWVkNWM0NzZiYTE5ZmU0NzAyYjliYWI5MzY4OWQgcHkzaworNzY3MjMgZTYzNDcwMzhkZjk3NmZjYzQzYTA4ZDcwZTdhOGFjZjJlZjVlM2VhMCBweTNrCis3NjcyNCBjY2M1NDA2Y2IzODFkZmI5NTVmNmJmZGUyYjdiZjA4MDVmNjU2NTJjIHJlbGVhc2UzMS1tYWludAorNzY3MjUgNzM4YjM5YjEyZGM4ZjA1MDU1ZGJhYzQzYzllNzA0NTIzM2ViOWE2NSBweTNrCis3NjcyNiBlZmVhYmVlNmUwNjFhYzQ5OTNhNDFjYjc3YTA1YWU2NTM2ZDM3ZjAyIGxlZ2FjeS10cnVuaworNzY3MjcgNzUwZTc1ZDkzMDIxNTU1MGRkZmNhN2EyNjUxYzU4ODk3M2FmZGUwZSBsZWdhY3ktdHJ1bmsKKzc2NzI4IDBhNzZhYjNhNjczYzZmZDZlMjBjOTM0NWIxMzEwMGE3N2MwODMzNDAgcHkzaworNzY3MjkgODE2MzAzYTA3NzYyNzc4ZmQxMmU1ZDA5MGZkZGY5YjQ2MWQ2NThjMSBweTNrCis3NjczMCAyNzNlZjA5ZmU4MDQ4ZTBkNDI5OTEyYzFkMGQxNzMwYTMzMjE3ZjJiIHB5M2sKKzc2NzMxIDhiOGFlZTIxZDg1ZTZhOTJkZTFmMGQzM2VjZmUxOWQxOWYyOGE4NWUgcHkzaworNzY3MzIgODk3NGFiNjg1YmFlMDY0MGUwY2Q1NjFmZGViY2ZjNTQwM2Q1ZTYyNCBweTNrCis3NjczMyAxNjY5MWJjOGIxODk0YzQ4NGQ3MmI4ZmE0ODBjYzg2ZDdiMTg5ZTU4IGxlZ2FjeS10cnVuaworNzY3MzQgYmM3MTZkOGY0MzQ1ZDZhNDM5ZjI2NmY2ODNjNWEyNDg0ZTk4Mzk2MSByZWxlYXNlMzEtbWFpbnQKKzc2NzM1IGI1YTRhY2JlYWFhMTYxYWVmMjUwMjUwN2U2ZTliNTMzZWM2ZDMxYzQgcmVsZWFzZTI2LW1haW50Cis3NjczNiA1N2FlNWQ0NGU3MzFmYmMyNDRhNGQ1ZTg1Y2ZkMGRiMDgzYTlhZTgyIGxlZ2FjeS10cnVuaworNzY3MzcgODI3NmQwMGQzMTAwZjVhZjY2MTVjNTIxYzE5ZDI2ZjE2YzY3YzMxOCBsZWdhY3ktdHJ1bmsKKzc2NzM4IDhiNjY4OWMwZTVhNmU2YzU4YjlmZjUzZGQ4M2VhNmVkMTVjZGJkMTAgbGVnYWN5LXRydW5rCis3NjczOSBiMjdkOTQ2Mzg5ZTc2N2U2NDY3MWU1YTUwNmVlMDJiZDMwYWYzNTg4IHJlbGVhc2UyNi1tYWludAorNzY3NDAgNjMxNjljYjllNDlhMDFmMTFjNjRhODUzNjU4NWZmNmE5NjA4NDE1YSBsZWdhY3ktdHJ1bmsKKzc2NzQxIDkyZjdjNGVlNmFhZGZjOGNmMTMwNDcxMDYxMmM3NzBiNGUyNmE0YTAgcHkzaworNzY3NDIgNzUyZTg2MDhlMTMxYjcxZGEyZmQxZmFiOWY3NGRjYzJmZDYwZTFlNSByZWxlYXNlMjYtbWFpbnQKKzc2NzQzIGE0NDA5Y2Y2YjU1NjRhNmJlM2RiNGY0OWUwZmQyMmE0MWFjMjdiZTIgcmVsZWFzZTMxLW1haW50Cis3Njc0NiA5MjExYTVkN2QwYjQyNDY4NjE1ZTcyNzI0ZTM0NzhkOWY2NGRlYzQ0IGxlZ2FjeS10cnVuaworNzY3NDcgMzc0ZDRlOWFhYjA1MmI1ZmY5YzU3ODYwMGY5NmNmNGRlNjg4YzljZCByZWxlYXNlMjYtbWFpbnQKKzc2NzQ4IDZmOWFkMDQxOGY3MGYxOTY3OTlhYTAzMjBiNDkxNWUzNTJjNWRlNjcgcHkzaworNzY3NDkgNGVlMjI2ODkwYjU5OTA5ZDc4YzA5NzA5ZGMyOTI3MTljMWI3M2UyOCByZWxlYXNlMzEtbWFpbnQKKzc2NzUwIGQyOGZiYWMzN2UyMDJmNTdmYzE4Mjc0ZGU2YzM4MTc0Nzg5YWQwMjEgbGVnYWN5LXRydW5rCis3Njc1MSBlMjlhNDUzMzFkZWE4YjU0OGIzZWQzNjJlZTc4ZWExODcwMzBhMTJjIHJlbGVhc2UyNi1tYWludAorNzY3NTIgNjZmYjFlMjc2MmQzNDIzZDdmM2E5NmE3YmI4ZDUxYTc4NjhkNmJlNSBweTNrCis3Njc1MyA3NTYyZTM3NmQ5YjU1MWU3YTNkNTBmODM3MDY3OWU3MDBkZWVkYzE2IHJlbGVhc2UzMS1tYWludAorNzY3NTQgYWU5Mzk2MjYwODM1OWVkYmMyOTMxZDhjYjFkYzQ3Nzk5OGZjNDhlOCBsZWdhY3ktdHJ1bmsKKzc2NzU0IGE2YmYwN2ZmZjZmY2JmZThkNDkwNTE4Njc2ZDhiYmY3MmFiYjIyZjYgcmVsZWFzZTI0LW1haW50Cis3Njc1NCAwY2Q3YWM4YzZiYjNiYmNkZTAyZGQ3MGJhOWUyYzk1OWRlZDZlNzI5IHJlbGVhc2UyNi1tYWludAorNzY3NTQgMTliNGUxZjY0NDNlMTk5OTMzMGJiYTMwYmZmZTA1OTRlY2RiMTM1YiByZWxlYXNlMjUtbWFpbnQKKzc2NzU0IDliNmIxYzFjMWIzMzBmMTIxOTE0NGJjNTRiOWMzYzY3MzgyOGZlNDAgcHkzaworNzY3NTUgY2IyMmVhZWU4NmM5MGMwZmEzMjI5ZmRkYmUwYjUxNjBkNGRlOTI4NSBsZWdhY3ktdHJ1bmsKKzc2NzU2IDliODNiZmVmYzVlN2Y2ZmFlZTQ4NTNhZjljZjRhMjlmYWUzMTZkZTYgcmVsZWFzZTI0LW1haW50Cis3Njc1NiBiYmFiNjAyZGExMTQ5YTY5NzJiNzU2NjdmOTE1MGM0MTM5MzVjM2MwIHJlbGVhc2UyNi1tYWludAorNzY3NTYgZTcwMDRkYTI5ZjUxMmRkYjQ2M2JkNDcxZTdkYWUxNzg3YTdkOTU0MSByZWxlYXNlMjUtbWFpbnQKKzc2NzU2IDM3OGJiNzA1YmU5MDRiYjJkZDhkY2E0YjdmNDI0ZmRmNTJlYTY1OTEgcHkzaworNzY3NTcgN2NiNzNlN2MxNzZkMzBjZDdiNzM5ZDljYTliZTJlNDY1OWMwMTAwZCBweTNrCis3Njc1OCAxNmNkMjFiYTI2OGE0OTY5ZGZhY2M2NzIwNDJhNGU5MTY5MmQ0ZjcxIHJlbGVhc2UzMS1tYWludAorNzY3NTkgYWVlOGViN2Y1ZjAyMWU2MjhhMjBiNTdjYzUxZmM3ZDdiZTRlY2Q5NSByZWxlYXNlMjYtbWFpbnQKKzc2NzYxIDI1NmU5ZjAwZDA2MWVmOGQ1NDY0ZTcwY2E5MWU4ZTY0YzNkODNlZWMgcmVsZWFzZTI2LW1haW50Cis3Njc2MiA0ZDUxYWE1NzJlOGM5YWJlOWY5ZTZiOTY1ZmI2ZjQzMmE5N2VjMjQ2IHJlbGVhc2UzMS1tYWludAorNzY3NjMgMmZmZDE5YTIyNGQ0MWZhNDYzMGU0NDNlYWRiNTRhODRhZjdlYmVhYiBsZWdhY3ktdHJ1bmsKKzc2NzY0IGQ5Nzg1OTA5YzNhNzJiNzU2ZGVmMjY5NmQ4MWYxNjBkNGJjMTNjMDggcHkzaworNzY3NjUgNzllMGRiYjZjNGI4OGM4NjQxN2ZlNjk5ZGRmZmNiNzdkN2E4ZDdhMiByZWxlYXNlMzEtbWFpbnQKKzc2NzY2IDg2OTBhN2VmZjgyYTFlM2Q4YWQ1N2QwZDBkN2MxYjg1Yjg2MzlkODAgcmVsZWFzZTI2LW1haW50Cis3Njc3MCBhZDkxN2I4ZmQ2NGNmNjAxNDcyMTNjZDg3OGVlNWVlM2UxODhiOGRmIHB5M2sKKzc2NzcxIGI3ZWM0YWZjZmMzZjBiZGY4ODBiMzViMWJmMzUzZTlkMjI4NGY2MzcgcHkzaworNzY3NzIgNzNhNmI5YjA1NDNmNGM4MDEzMTUyNTJmMGUyMDkxN2UwMTMxNDNlYiByZWxlYXNlMzEtbWFpbnQKKzc2NzczIDgwNDg1NjllYjUzZjVmNzFlMTI1ZTgyN2E4Y2NiMTQ0NTQxM2M4YWYgcHkzaworNzY3NzQgMjBiN2RlYjUzZDRlNThiMjk0ZDY4ZjllNmQ4ZTVmNWU2ZWFlOWMzMCBsZWdhY3ktdHJ1bmsKKzc2Nzc1IDJiOTM0ZDQ2Njk5M2RkMWI3MWM4Y2FhMzA5NDEyZjg3OTNkYWVlNzUgcmVsZWFzZTI2LW1haW50Cis3Njc3NiAwODdmZTVmYTExM2MxZmQxMGQ5YjU0Nzc5YmIzYWE4YWE5MGM2NDczIHB5M2sKKzc2Nzc3IGQ4YzVlMzg1MTViNmNkYzUyMzA5NTVjYjE5MDAyOTIwNWNmYmNhMTUgcHkzaworNzY3NzggMTU1OGRjNjlhYWNmMjZkODYwZWI3ZWZjNmNmNjMzNjZjOWU1N2I1OCByZWxlYXNlMzEtbWFpbnQKKzc2Nzc5IGE3NjlhOWIzNGZiYzJjNWFjYTJhYzc5ZGM2Y2VmYzAwYzVkYzJkOGEgcHkzaworNzY3ODAgNDkzNzgwZWEzNWNmODIxYWE3YTgzNGQyNTA2MWMxMTViZDhkNWE2NCBsZWdhY3ktdHJ1bmsKKzc2NzgxIGVkMmI2ODgzZmM5NjczNGIxYmMxNTM3ZjMzMmVjZjBjY2YxYzYzOTkgcmVsZWFzZTI2LW1haW50Cis3Njc4MiA0NmMyMjk3NDJjNjQyMTNmZjBkOGI0ZDc0ZDBhMjk0ZmQ5ZDQ3YTU4IHB5M2sKKzc2NzgzIDhjNDdkN2QyYTAyM2I1MTkxMmNlOWYyZGRkNGM4M2NhYzczZGQ5ODIgcmVsZWFzZTMxLW1haW50Cis3Njc4NSAxMTQyMzcxOWJhYmI0MDQ1ZThlMGNlNGFkY2Y0NjJjY2EzYWNjZDVjIGxlZ2FjeS10cnVuaworNzY3ODYgNDY0ODUxYmYyMmZkZWI1MDA3N2UxNGEwYWUyOGYzZmVjMzUyZGQxMCByZWxlYXNlMjYtbWFpbnQKKzc2Nzg3IDJmZGNkNzNjMzJhYWJiOTI2ZTUwOWZmMzIxMjA4M2FjMDdlZWY3Y2EgcHkzaworNzY3ODggNTQ4MzM1Y2IwMDdiMWZlODc0ZmVlZTBmMjRkYzMxNGYxNjllODY4OCBweTNrCis3Njc4OSA0YTllNDNhM2I5ODUzM2FhNzA1MGMxMjRkMzk4NzBiMGE4MWFjZDVhIHB5M2sKKzc2NzkwIGM5MTVmZjU5MWEyZjMzNDFkOGM4MmJhYWJiZGEwY2U2Y2Q0MjRjZGMgcmVsZWFzZTMxLW1haW50Cis3Njc5MSAxNmNlZGRlOWFmMDA5MDRjNDUwZTJkMGI5YWJiM2IxYWE4MmIxNTAzIGxlZ2FjeS10cnVuaworNzY3OTIgYzcwODdlYTFjMjFkZGQzYTNlZDYxMWUxYjk0NWM4OTMyOTBhZjcwOSByZWxlYXNlMjYtbWFpbnQKKzc2NzkzIGU3Yzk0Y2I3MjY3ODk5MWJhYjdiYTUyNWMwYjhkYmIwMzU5MTM2NTkgcHkzaworNzY3OTQgY2IyNjI5OWUwZTUyN2I4OGQ1ZDNkNDk2OTVlYzQzODg2YjY1MGViYSBsZWdhY3ktdHJ1bmsKKzc2Nzk1IGMyZTk0ZWYwZDdlNTg1NzcyZmViNmY4NWRiMzJjZDZhMzljNzE0MDQgcHkzaworNzY3OTYgMGRiZWNjZDdlMGU2ZmFlZGQxZmQyYjY2N2U3MWVlZTBkYjYyYzNiMCByZWxlYXNlMjYtbWFpbnQKKzc2Nzk3IDQyZTMxMWE0NzZlODBiMTA0YmYxNjUxNDE2NWVhZTUwMzJmMDI3Y2MgcHkzaworNzY3OTggMjE1ZGRmZjE5OWMxYjY3Y2U3ODJlYzc0NmUxOTE2NDZmODlkMTU0ZCBsZWdhY3ktdHJ1bmsKKzc2Nzk5IDI3YzYzZDY1MjYyMDlhN2I4MmI4MDM1MGUzZGY5NWFiODRlYzY3MzYgbGVnYWN5LXRydW5rCis3NjgwMCAxMzkyZTM2YWYxYjI2YTIzYjA3ZTBjMWNkOWFmYjYyY2I3YjJlNmRjIHB5M2sKKzc2ODAxIDYwNTI3NTFhMDRjODIzMjcyYWVhM2VmMTliZGFhODNhNmQxZGMwMTIgcmVsZWFzZTI2LW1haW50Cis3NjgwMiBhNzRlMDRmYzkzZWI5ZGNmY2QzMzAyNTk5MzBkMGNjNjg1N2M0NTc1IHJlbGVhc2UzMS1tYWludAorNzY4MDMgNjU0YzY4NTM2OTc1MTQ2NTI0YWJhNGM1ZWFlOTVkMWI0MmRjNmNlMSByZWxlYXNlMjYtbWFpbnQKKzc2ODA0IDdjY2QyMjhiODk1Y2M5ZjA4ZGI1NWMyZTBkYzRiOWY3OGFiNzUwYjEgbGVnYWN5LXRydW5rCis3NjgwNSA1NGY4NDU1OGFkMmIyZjY3MTEwNzc0NjQzMWZlZDJjZjBhMGQ2ZDA5IGxlZ2FjeS10cnVuaworNzY4MDYgMjRhOGEyOWM4YTRhMDQ2ZTY0NGYzZmEzZmIwNmMzYTIyYzE0ZDlhNSBweTNrCis3NjgwNyAzYTdkNTQwNDNhYmE4ZWY5ODA0NjlkZjI5MzE0ODFiNDllNjZlOTFmIGxlZ2FjeS10cnVuaworNzY4MDggMTIwNjNhN2I2YTJhMjllZGJiZDg4ZTY4MzE1MDAzNjljNmI0OGQxZiBweTNrCis3NjgwOSAzNWRmNjc3OTg5Y2I5NTUxMDRhMmIxMGJiZjE4OGUzOTY5NWIyODg4IHJlbGVhc2UzMS1tYWludAorNzY4MTAgZmM3MGM4ZDc0M2RiNzJlNmE5ZDJiOGY0ODVmZmU4MWNjODAzMmRiNSBweTNrCis3NjgxMSA2MjEwNmI2ZjU1OTZjODkzYzc2YTQ4NzdjOWM0YWU0ZTlhMjRiNzI4IHJlbGVhc2UzMS1tYWludAorNzY4MTIgN2M0MjEyNDRlNmVhOGYwZDMyM2JkMDM1NWY0ZjVkOTU5MmFkNWQ1YSBweTNrCis3NjgxMyA1MzZlNDZlZDEwYWNmNDM2MjAwN2FmMGNmMjA4ZjZmMWRiZjgzYzY2IGxlZ2FjeS10cnVuaworNzY4MTQgYjNhMzY0MTkyYzBhZDk3YzhjMzAwNjQyODhlYzAxZTMwNzdlNmFhNCByZWxlYXNlMzEtbWFpbnQKKzc2ODE1IGJjOTM0MDk4Y2FhMTAxZTE4MTk5OTVlMzcxZTI1N2EzMmE3M2NhMmIgcHkzaworNzY4MTYgMDU2ZmZiOGUxN2IzZjU0ZjA5NjA2YTNmZjAzNzYyYTczYzVkMjI2MSByZWxlYXNlMjYtbWFpbnQKKzc2ODE3IGRkNTM5MWQ0YmI2ODBkNGY4NDQ5YzgwZDJjZDlkYTk5ODAyNmZlNjEgcmVsZWFzZTMxLW1haW50Cis3NjgxOCA2YjI4NTIyMTk3ZGIxMGU0NGQ4Y2U5NjNkOThlMzgwODdjMTk3MzA4IHJlbGVhc2UzMS1tYWludAorNzY4MTkgOWYzNTdjOTZmMjQ2ZTg4NDA1NDI3ODZkY2YwZTRmY2EwYTY1ZTQxZiBsZWdhY3ktdHJ1bmsKKzc2ODIwIDcyZWYzZGI1YzZiMzdiMjgxNDdjMTYwZDA0ZDU4MTRhMzc2ZmRhNmEgcHkzaworNzY4MjEgZTVmMjAxM2IyOWExOTdlMWNmOGIzYWRmM2YxMDY5ZWIyMzVhNWYyOCByZWxlYXNlMzEtbWFpbnQKKzc2ODIyIDZlMTMxZTA3MTMxMDVkMDliYWQzNDRiOGMxNWZlY2E3MDkwNDY4ZGEgbGVnYWN5LXRydW5rCis3NjgyMyBkYTFmY2U1NDA4ODVlMWQ3NWFkNmFjY2E0NzU2MjI0ZTI0ZGQxOGZjIHB5M2sKKzc2ODI0IDQwZjNiOGI4M2NjNmEzZTljYmE1ZWI0ZGQzNmJiNTgyNzNlNDA2NzUgbGVnYWN5LXRydW5rCis3NjgyNSA3NzA1YWMyMThjODcwYjUxNWYzYTQwY2FiOTQ4NzhjYTVlZjNkMzhiIHB5M2sKKzc2ODI2IGMwYzg2MWQzOGM0ZmRhZWY2YmFkOGVjNGExMDQ4NDU5NDUyMTFkNDEgbGVnYWN5LXRydW5rCis3NjgyNyAzNTQ2Nzc5YjIxYzcwODNlNTI4NGQ0OTdhYTVkOTlmM2FjZGViNmIyIHJlbGVhc2UyNi1tYWludAorNzY4MjggNjgyNDllZDg4MDllODEzM2M4M2E0NmNiZTk3ZGRhMTJhYjRhNGE3MCBweTNrCis3NjgyOSBiYzU1ZjVkNTBkZWM4NzBhOTQ2NTcwZDgyM2M2NmEwMTNjNjU5NDAzIHJlbGVhc2UzMS1tYWludAorNzY4MzAgNTEwM2Y2OGNjYTY5MDk1ZTcwY2Q3MzY0MmIwMmQ4ZDQxYjczMWRjMiBsZWdhY3ktdHJ1bmsKKzc2ODMxIDJiOGY0ODViMGQwMzk3ZTEyNTAyYTNjOTMwNjMyMzcwYmE3Y2ZmNjYgbGVnYWN5LXRydW5rCis3NjgzMiA3NmJkNWJkY2VjY2RmZDk2NmVjMmI4YjBjMzY3NmYxYjEwNWJmNjFhIHB5M2sKKzc2ODMzIGQyZTE0NjUzYTQzYzk5NWM3ZjYyMmM0MTU4NWRlZWZlYzgyOTNlZTIgcmVsZWFzZTI2LW1haW50Cis3NjgzNCBkODk5ZjI4ZGJiOGU5N2MyMTA5NjJmODAwZjkzOTY0MDYyNWMzNTkyIHB5M2sKKzc2ODM1IDBlZWVhNzY1NmMyMmYwMzBlZDAxZDVmMDNjZGVhOTYyMGYyOGQ2NWUgcmVsZWFzZTMxLW1haW50Cis3NjgzNiA0OWM2OGEyYjA1ODUyYzU0OTE1Y2FiYzkyN2VhODNjNDc0ZGVhM2RmIHB5M2sKKzc2ODM3IGJjMGE2ZTRjZTFiMGJiZjFlMzhkNjZkMzkwMmExNWI3YmNiMmFlYmEgcmVsZWFzZTI2LW1haW50Cis3NjgzOCA5MTllMjE0MjcyNmVmZTJiYTBiZDE1NTQ0MDQ3ODgwZDJhN2I3YTAwIHJlbGVhc2UzMS1tYWludAorNzY4NDAgZmE0ZjIzYjE4MmRlNjc5MWFiZmY4N2E1NjM0MzdiMzY2MDAyNmUyZiBsZWdhY3ktdHJ1bmsKKzc2ODQyIDE1OTJlODk1MWIyYmQzNTQ0NDRiOTg4MGUyMzZjNzIwNGJkZWM4ZjIgcmVsZWFzZTI2LW1haW50Cis3Njg0MyAzMjllZjI5NGNjMmRiNTZkNDJkODJkODIwOWM3MTZiMjA2NjRmNzhiIHB5M2sKKzc2ODQ0IGU5Y2ViYmU5ZGU1YzMxYWY5MzBjMGMxZjhjYjY4ZGE2MmE0ZDE5NzEgcmVsZWFzZTMxLW1haW50Cis3Njg0NSA5NjBlOWU4NGNhNTk3NTVjNmI1ZGRhZDJlNjlkZTM3MDIxNDY3NGMxIHB5M2sKKzc2ODQ2IDdjM2MwMGU3NmMyNDg4YjY2ZTlkYzIxNTNkZTc0ODEyYWE3MzZkM2UgcmVsZWFzZTMxLW1haW50Cis3Njg0NyA2NjY0MGZjNjA3Y2EwNjM1NTg4ZDYwNTJmOWJjYTY1MDljYmI3MjEyIGxlZ2FjeS10cnVuaworNzY4NDggZDg2MjAwMGYxYjAxNTUzZjk3ZTI2NzZkYzYwNDMwODM4ZTBhYWY3MCByZWxlYXNlMjYtbWFpbnQKKzc2ODQ5IDI0YjY4NTMxODYzM2IzYTNlMjkzNGViMTBlZDJhOGEzOGRhM2FiOTggbGVnYWN5LXRydW5rCis3Njg1MCBlNTBlNDlkNjFmZWE1ZjM0MzkwYjJiOTk3Zjg0OWJmYWNjYjIyYzliIHB5M2sKKzc2ODUxIGE5YjZmMjdkMWUyOTBlYzk3Y2MxNWQ1OWUxZjU0YmM2Y2VjYWMzZDEgbGVnYWN5LXRydW5rCis3Njg1MiBjMmU0Y2ZiYjM5OGNiODVmMTFiMzNmY2VmNDg1Yzg1M2IxODU4MTZiIGxlZ2FjeS10cnVuaworNzY4NTMgOTQyODIzZGRkODE4ZmMzODkyYjE4ODBjYTM3M2EwZTQzNmZkOTBkMiByZWxlYXNlMjYtbWFpbnQKKzc2ODU0IDk3YWJkN2FhYmFkYzI4ZTI4ODM0ZGI2M2VmNDhlMzFmYTVhYjBhMmYgcmVsZWFzZTI2LW1haW50Cis3Njg1NSA3ZWIwNTBjMGU2NTQ2N2MwZDFlZmEwOTEzOTkzOGVkZjliMDBhYjQ5IHB5M2sKKzc2ODU2IDJiZDBmMzkxNTkzODQwYzc2MWFiYWI5OWY5NjAxOThmN2Y0ZGQyNjYgbGVnYWN5LXRydW5rCis3Njg1NyA5ZmUxNWMxZjk5Y2M5YjBjOWYyZWNhYjBmMTcyMzYwYzY5N2QzYTg4IHB5M2sKKzc2ODU4IDRmY2JlMGVhOWIzMTc4MTM4NWM1NzY1NDc0ODc5ZDViMmYzMWE1ODMgcmVsZWFzZTI2LW1haW50Cis3Njg1OSBiZjY5YzNmMmI3NzhlNDAzYzQ1ZTU0ODNhZjZiNGI5ZmQ1NmFlODNmIHJlbGVhc2UzMS1tYWludAorNzY4NjEgYjIwNmFkOGNmNWJmMmU0NDc1ZTU2ZjFmYzg5Zjc3M2U2YmE0OTk5YyBsZWdhY3ktdHJ1bmsKKzc2ODYyIDIyYTFlYTkwZmFhNjE3NzM3NjY5OWE0NDQ2MzhkZmRjNzZiMTg4YzcgcmVsZWFzZTI2LW1haW50Cis3Njg2MyBiNDVjYTExYjlhM2VjNzQ4ZWE0ZGMwYjc1NGZiNWY5MjQwOTQ0ZDIxIHB5M2sKKzc2ODY0IDU0YTUwMmRiM2I4Y2UwZDkzZGNmYTZmMzY4OTdiYzFiNDc2NzkyOGEgcmVsZWFzZTMxLW1haW50Cis3Njg2NSBiMzU2ZWQ5NTY0ZTY4YzJjMjIwZDhlMjBhYTdkMWM2NGI2YTcxNTJkIGxlZ2FjeS10cnVuaworNzY4NjYgMGExYzM5YzVmMWI5YzllNDMxMDBiZTJjZWJiMjQ2YWMyZjMwYTI3MyByZWxlYXNlMjYtbWFpbnQKKzc2ODY3IGIxODk2NjIwYzI5NmQyYmYyY2FmOGM3NzM0ZWVhN2ZhNGJmNGUyYTUgcHkzaworNzY4NjggYjEzZjcxNTM5YWFjMDBhNmRjYTRiODFkOWM2ZGJlYTJjMTdlYzNjZCByZWxlYXNlMzEtbWFpbnQKKzc2ODY5IDYyYWZjZmEzZmUxODhiN2I3YTQ4ZjM1ODU2Y2FmNjFkNzU1YzA4NTggbGVnYWN5LXRydW5rCis3Njg3MCBiYjY2NGQyMTkzOWI2ODhkZmFmZDQwYjQ5OTZjNTZhMmJhMGFjMzQ5IHRhcmVrX3N5c2NvbmZpZworNzY4NzQgZTI2ZWU4ZGRkMjlkMTNjNzA5YTE3YmFkZTkwYzk2OTQ1ODU0ZDQ2OCByZWxlYXNlMjYtbWFpbnQKKzc2ODc1IDUxZDM3ZWY0M2UxZTlkZTU4MTNjNGYzOGI2MjRkMzUwZjBhYTBhNTkgcHkzaworNzY4NzYgMGQzOWRhYjA1NjIyZTdiMWUzMWFjZjNiNWI3MDg5ZmE0N2RhZTBjMiByZWxlYXNlMzEtbWFpbnQKKzc2ODc3IDAxOTQ5MWIyNmIzNmNmZTcwMThiZjRkMjEzYTUyMWQ5MGNjYTg1ODYgcmVsZWFzZTI2LW1haW50Cis3Njg3OCBkMzUwYWZjMzM3ZGM2NGM0N2NmYWM3ODk0NWZkODkyOGNhZTI5Y2E2IGxlZ2FjeS10cnVuaworNzY4NzkgMWU4MTY0YjVmMzZkYmFmMmE1OWU5YzBmMmIxY2MxYWY4YWIzNzIyMCBweTNrCis3Njg4MCBlNWRmOWExZGFiNmEwODNiNTVlNjBhYjE2ODMxYzRkYjgxOGQyNGViIHJlbGVhc2UyNi1tYWludAorNzY4ODEgNjRmNWYzNzVkMDczZWM2MjlhODNlM2Q5YTQ4OGU0YTJkYjAyZmFmNCByZWxlYXNlMzEtbWFpbnQKKzc2ODgyIDc2NTIzMzQ2ZTIwZDc2ZDVhOWYzNDQwNGNiNzllMzZlN2ViMTA4NmQgbGVnYWN5LXRydW5rCis3Njg4MyBkMTA2YmE2MTI2YTE4ZWMwYjkxMGRiM2ZmMGU1MzA2NmY1YzQ5OWMwIGxlZ2FjeS10cnVuaworNzY4ODQgNzIzNDYwYjkwYWRkMTRhYzAwNGI0NTU0M2VlYjUyMTkxMDM3ZmQ2MiBweTNrCis3Njg4NSAwZWVjNjMzZWYwZTMyMGUyNzc5M2Q4Y2I0NjRkODNkYzY1ZjFiYzliIHB5M2sKKzc2ODg2IDk2MTNlYzQxYWVhYWEwNTY2MjJmZDk1YWZiMTYxZWY3NDE5ZTI5N2UgbGVnYWN5LXRydW5rCis3Njg4NyBhMzQ5ZGJlYWJhZWU1YTJmZDYxZmQ2MGFiODY2N2Y0NDk3ZDEyMzkzIHB5M2sKKzc2ODg4IDViMzc1OGVlNDM1NjZmOTkzYmI4ZWIwNzRiN2UwNWZiYzJmYzIyNjcgcHkzaworNzY4ODkgMzYyMThiNjgxZDllZGIxNjdlMzE4N2YyN2ExMTg0YzkxMWMxODI1YyBweTNrCis3Njg5MCBkZGQxZGI1ZDJmZTAwZTY4OWJjMTU2ZmM3M2IwY2Q4NzhhNTFiZGE2IHB5M2sKKzc2ODkxIDI2MjEzMGQ3MDMwNmNiY2JjMTI4YTQwNDI0MmJmOGEwZDljNjkzYjYgbGVnYWN5LXRydW5rCis3Njg5MiBiOGNhNjFkNmUyNjIzYTVjZjAyZTA4MzViMjE5Zjk3OTcxYzgzNGYyIGxlZ2FjeS10cnVuaworNzY4OTMgMmQ3NWRhNjVkMjkwZTVkZTVkOTQwNjliNTAxOGYxOGVjNzQ3M2U3ZiBweTNrCis3Njg5NCBhZWVmMmYyN2Y5ZjBjZjZjOWE1NDFlZTI5N2MwYmE0MjQ3ZWIxNzQ3IHJlbGVhc2UzMS1tYWludAorNzY4OTUgN2JhYTU1YjZlOGM5MTg4ZDAyODk0M2I5ODYxZmZjOGYyYzViNGQ4YSBweTNrCis3Njg5NiAxMDEzMjA4OTkwNDE3ZjRlZTBiYTBhMTdlZjEyYjcwNWEzNTJiMmM3IGxlZ2FjeS10cnVuaworNzY4OTcgNmQ0N2IyNDk0NzEzN2QxZTFiYTE4NjkyN2UwNDFiN2FlM2ZhYjMwNSByZWxlYXNlMjYtbWFpbnQKKzc2ODk4IDc3ZTIzMTMxMzVkZDliYTAxOGJhNjllNjhhYmRhOTNjNjAzYmVmNjcgbGVnYWN5LXRydW5rCis3Njg5OSA5Yjg0NzA5OGNiZjkzMDZmMzRjYjBiZmVmMGU5MWRlYmRjNjM1NDA5IHJlbGVhc2UyNi1tYWludAorNzY5MDAgMThlYjAwOTE0YWVlNWJhY2E5OGNkMjg0NWVlY2I1NTgxZDg2ODgxZSBweTNrCis3NjkwMSA2ZjljMDc0NmYxZTIwNTA2OGE4MzZhOTRhYjAzYjJlNTYxOTlmNWZiIHJlbGVhc2UzMS1tYWludAorNzY5MDIgYTA4ODQwY2U4OGQzNGMxZjAzNzlkZmE5YTJmODU5MTNhOWEwOGE5ZCBweTNrCis3NjkwMyBlZDRkNWNkNDdlZTk2MTAyMDdjNGMwZDVlOTE2NzM0MjE0YWI1NDY0IHJlbGVhc2UzMS1tYWludAorNzY5MDQgZjdmNWUxZDI3ZTA2MzAyZTU1MzJmZTFkYmMxYjlhYzFhNDhmMDRjZSBsZWdhY3ktdHJ1bmsKKzc2OTA1IDg5OTk2NzU1Y2YzOWU3MGJjNDZlNzRjODUzODk2M2ViOTcwYzMzZjggcmVsZWFzZTI2LW1haW50Cis3NjkwNiBhNDZkZDhkYTNjMzA4MjdjMTEwMThmZTBhNjEwZDk4NjgxYjA5YmYwIHB5M2sKKzc2OTA3IGUyM2Y1ZWM5MzMxNTg1N2Q3MjI5YjdiZDJkNmIxYjQ5NzAyODY1ZjIgcmVsZWFzZTMxLW1haW50Cis3NjkwOCAxMDk3MGY2NGJhMzMxYjE4OWJkOGU5NTQyZjk1OTEzMjNkZDA2Y2YzIGxlZ2FjeS10cnVuaworNzY5MDkgNzBjYzI4OGY5MTllMTdlYTYwMjM2MzlhOTUzMjJlNzQ2NjNiYWQ2ZCByZWxlYXNlMjYtbWFpbnQKKzc2OTEwIDcyNGEwZGE4NWM0MmNhZTc5MDg2YmQ3ODQ5ZDZlODlmZmQ5MTgwMjIgcHkzaworNzY5MTEgZGMxYWFkZjlmYTRhM2M2Y2UyNDYwMGU3ZGQ2YmRkNjI3NTM5YjRiOSByZWxlYXNlMzEtbWFpbnQKKzc2OTEyIDljOTU3NTJlZGUxMjUzYTkzMjBmZGNkYzc3ZTE0ZWVkM2VhZjk1NzUgbGVnYWN5LXRydW5rCis3NjkxMyA1MzFiMTFhNmExMjU1Y2RlYWY0ZGEwNGI0YzZlYWRkYjk3NTVmY2QyIHB5M2sKKzc2OTE0IGViZWIyZTc3NjNmNWEzYTU4M2JlNWU3OGI1MGIwOGMxNzVlNGNlMjMgcHkzaworNzY5MTUgZWQxMzEyY2RiOWIyMGE5OWYwNDMxN2U1YzFkOTEwZjc3MTY3OTgxOSByZWxlYXNlMzEtbWFpbnQKKzc2OTE2IDVjY2M1ZDQwNjhjMWFlZTI2Mjg2NjRhNDM0ODQ3OTRlMjA0ZWU0OGIgbGVnYWN5LXRydW5rCis3NjkxNyA1M2YyMWYwOGFmMGQ0NGM3NzRkNGNmODIxY2UyMTYzZTAyZThkM2E1IHB5M2sKKzc2OTE4IGQ1MTUwYjI5MzRmYTYwZDM3NDFiZjUzNjFjYTUyOTIwNjg3MjdhMTggcmVsZWFzZTI2LW1haW50Cis3NjkxOSA2ZjYwMGU5MmEwZjUyN2RhNmU1ZjdiMmE3OTc4YjNhZDhkMTJmZTQzIHJlbGVhc2UzMS1tYWludAorNzY5MjAgODk2YmY0OTYyOGFiZmQzYjBmZDg4NWM0N2I4MWQ2MDI5NWJmZDhjZCBsZWdhY3ktdHJ1bmsKKzc2OTIxIGNjYTA5N2VhMjdiOWMxZDg2ODNmZTQyYmI3YTIzYjUyZDE0ZTI5YzkgcHkzaworNzY5MjIgZTlkYTgxMmY0ZmZmNDMxNDQyMjllMTQ0ZmVkODE5ZGVlNjY1NjdiYSBweTNrCis3NjkyMyAyMDg5ZDljMWFlMTNlMWIzYmEwZDc0ODM2YzlmZWU5Mzk1YTY5Nzk3IHB5M2sKKzc2OTI0IDllNGM5MDFmMDA5M2NmZjA0YzdjNjhlZGZmM2YxNWY1MjVkYjIxZTUgbGVnYWN5LXRydW5rCis3NjkyNSBkODkwYzhmZmFkMDJmN2MwM2YyMjgwOGU1OThmYjFmZGJmYzU3NDY1IGxlZ2FjeS10cnVuaworNzY5MjYgYzlhNWIzYTQ2MGZmNjNmZDc1MGUyNjRjNTk2OGNkYjY3ZWRmMmIwNiBweTNrCis3NjkyNyA2NTBiMzI2NDAzY2QyNmJmNWYyZTc5NTMwODkxOWYwODA4ZjY2Yzk5IGxlZ2FjeS10cnVuaworNzY5MjggMWY4YjM2MzIwMjE4Yjg0NDUyZTQ0MzAwMGQ4N2E3MjI5OGNjNThiZSBweTNrCis3NjkyOSA3ODRiZGM3YjE5YWFmM2ExY2NmZWJlOTNjMmQ3MDc3NWEzYzJjNjAzIHJlbGVhc2UyNi1tYWludAorNzY5MzAgNzk0MWE5Zjg2NWMyMjgzYzNjM2MxMmU3MzAyMTMwOTFhZWNjN2RjMSBsZWdhY3ktdHJ1bmsKKzc2OTMxIDZkNzQ2NGRiYjcxNGIxNGVhN2MyZTEzYmMyOGE1N2EzOGRhYjgwZDIgcHkzaworNzY5MzIgMzkxNDlkMjI1ZWM3YTE1MjNjZTJhODU1MDI5MGMzODBlOWZlNTdlZSByZWxlYXNlMjYtbWFpbnQKKzc2OTMzIDAyMDU0YWZhMzYyZjFiMzY0YTg5NTZmZDFiNTZhYjFjNTc2NmFhMDggcmVsZWFzZTMxLW1haW50Cis3NjkzNCAwNDU4OGVmZjI1YTE5MDk1OGEzNTczMTRhODczYTYwYmQ1Y2UxNDg5IGxlZ2FjeS10cnVuaworNzY5MzUgMWMyYjNmNzk1ZDFiMjNlMjE5YjA0ZGE0YWM4MmY3OGIzYWRkOGJlYSBsZWdhY3ktdHJ1bmsKKzc2OTM2IDFkYWFjMmNlZWRiZjI1YzI2Y2E4ZDA2NzM5YzMzNWY2ODk5NTgwNDQgcmVsZWFzZTI2LW1haW50Cis3NjkzNyBjYjA1Y2NkNzU5OTZiY2MwMTY1ZTAwZTg0MjIxYjJlZTliMWQzN2VkIHB5M2sKKzc2OTM4IDU4MTMzNzE0MTg5Y2FhODU4NDNiZmVlNTRlMzAwODQ4N2NkNTE3ZmUgcmVsZWFzZTMxLW1haW50Cis3NjkzOSA2NjMwZTM2YWY5YzM5YjA2MjRjYWMxNTRkY2EyM2E1NmY5Y2UzMmJlIGxlZ2FjeS10cnVuaworNzY5NDAgNTUwMDUzYmFhZmZhNzlkNGM0NWU3Mjc4N2JlZjVjNTg4YTY0OGUxOCByZWxlYXNlMjYtbWFpbnQKKzc2OTQxIDRhY2UwOGFhYzM3NjM5YzM2NTUwODNmMWZlM2ZmYjU0YmZjODcyNjQgbGVnYWN5LXRydW5rCis3Njk0MiBkODU2MjAwMmY4ZTVjMWI2YmNkYTYxYmI5Mzg5NGIzNDQxZmI0NTViIHJlbGVhc2UyNi1tYWludAorNzY5NDMgNDY1ODA5NDE2YTgyZjBiZjFlOTA4YjhlMGQwZmFlY2YxMzMxZWVhYSBweTNrCis3Njk0NCA0ZDQzMGU1NWFkN2M1OGFkZWE0OWZkM2M0ZmE2ZjNjYWMwYjBmOGVhIHJlbGVhc2UzMS1tYWludAorNzY5NDUgNmMxYjIwNjVkMzVjYjNiY2ZlMWNlY2QwYjEyZjdhMDdjYzlkMTllZSBsZWdhY3ktdHJ1bmsKKzc2OTQ2IGJmMmVmZjYwZWFlMmJhYTE3N2Q5MWU3YzhhZmNiZDQ2ZDVkZGRkZWEgcmVsZWFzZTI2LW1haW50Cis3Njk0NyA5OWMwYWIzY2QxZjk1Njk4MDdlNzdhMTgyMTE3M2ViMWQ0MjMxNTZlIHB5M2sKKzc2OTQ4IDc5NzE3YjdkMzc5ZGJmZmViYjY3NjY4Y2I5OTAyMTg5OWE4NzExMTAgbGVnYWN5LXRydW5rCis3Njk0OSBiMWQ3MmQ4OTQ2MjE3YjExMzE4Mjk4ZDU1NDM0MGVhZDEzZDIwMDU1IHJlbGVhc2UyNi1tYWludAorNzY5NTAgMDhkZjFjOWVhNjQzYjU1Y2NhYzY0MTA0YmI4NGEyMjNiZGEzMjNiZSBweTNrCis3Njk1MSBkMDI1ZjQ5ODczMTkxYTAzNDI1OGEwMjZmYTk3OWVlMGQ3Y2RiNjJjIHJlbGVhc2UzMS1tYWludAorNzY5NTIgMDk2YjFkOTk3ODUzOGJiMmM4ODYwYTQzN2IwNjdmZmM3OGUyYjIxMSBsZWdhY3ktdHJ1bmsKKzc2OTUzIDE3NzIxOTU0MDVlN2VhNzU3ZTQ5ZTBmZjU2NDYwYjNlOTI3ZThlZjMgcmVsZWFzZTI2LW1haW50Cis3Njk1NCBlYTVlNTRiZDYyNzRjMzM0ODY5ZmM1MWExNWNjZmRlMDU0OGYyZTJkIHB5M2sKKzc2OTU1IDg2YjVkZjA0NjM0YzA2NmUzMzZkMWY3M2UzNzNjYjBlYmNmMGI4ZDcgcmVsZWFzZTMxLW1haW50Cis3Njk1NiAzZTJiNzk2NWFkYTk5N2JlYWU0MDJhYzBmNTVkZTFiNDIzZWY5NzQwIGxlZ2FjeS10cnVuaworNzY5NTcgMGVlMmFlNzVjZThmNDhiNzliYmIzZjc4YjlhNDQ5MzA5NmY0NDgwZiByZWxlYXNlMjYtbWFpbnQKKzc2OTU4IDM5YWIxYTM2YjIwOTg2NmEyNTFkMGRlYzI4M2I4YmQxZTE5NjlkNzUgcHkzaworNzY5NTkgMDljMTcxZmE1OTM1YTFlMDhmZDIyYzEyYTAwMWRhYmE2ZDIxNTYyOCByZWxlYXNlMzEtbWFpbnQKKzc2OTYzIDI4ZGU4M2YxN2QwODllNDU0N2RhNjM2MTM4ZTI4NTQ0NWI2ZGU2YWEgbGVnYWN5LXRydW5rCis3Njk2NCBhN2M0YzcxN2E5Yzc4ODFhY2IzMDI1MjNlMDAwMDU5MzUwNzU0MmYyIHJlbGVhc2UyNi1tYWludAorNzY5NjUgNDhhOTljZjgxOGM5MmRlZjYwODNjOGFhYjk4YWFiNmRiMWM4Y2M0ZiBweTNrCis3Njk2NyA3YjJlYWEzNGI4NmIzNjcwNzhmNzg2ODZlNjA0NTVjYTNkMTAwMDhhIGxlZ2FjeS10cnVuaworNzY5NjggNmQwOWUzZmRmODQwY2JkODFiODg5NzY4YmRkZDNmMDUzMmMxNTA1MSBsZWdhY3ktdHJ1bmsKKzc2OTY5IDc2MTNkZWYwOTlkMGJjMGFmNDJiNmNkYjc4ODA2Y2JjOWM3YjNkOTIgcmVsZWFzZTI2LW1haW50Cis3Njk3MCA4MDcxOTU5YmMzMDZjNTFlNDY1NjY2YzI2YTJlNjVjMDk4YzAyOTQzIHB5M2sKKzc2OTcxIDUwZjMwNDZkNGZhMDAyNThmZjI2ZDVlNGZhMjMyYzgyYTM4OGNjNWUgcHkzaworNzY5NzIgOGM4NmNkODBhZTI2MWEwYjc5YjU0MmNjMmI2NjE5NjgzODc5MWQ2ZCByZWxlYXNlMzEtbWFpbnQKKzc2OTczIDEzZTYyY2YwMmJjM2ExMDgyMjI4YzgwNzgzM2QwZDU4Zjg5NWI3OTcgbGVnYWN5LXRydW5rCis3Njk3NCAwOWM0ZjFiOTQzOWM5ZGU3ZTVkZDk1MjlhN2I4YjRjYjI3ZDQ2YWI4IHJlbGVhc2UyNi1tYWludAorNzY5NzUgZDc2MTBlYzk1YmNlMjhjZGY4MTdhYzBjYThhZmY1MTg1MDE2OTk5MCBweTNrCis3Njk3NiA3NTU5YjcwZjk4OTkzOGQxZmIxY2MxMDFlYzA2MGM0NGIzYTFjY2E5IHJlbGVhc2UzMS1tYWludAorNzY5NzggN2Y1Y2JjMjhmNDMzM2M5YjQzYTM2OGVjZWZlNWNiNTc1MjY0YTQyOSBsZWdhY3ktdHJ1bmsKKzc2OTc5IGU3MzAwMWFmYzU2ZjA2ZGNmNWE2NTFlZDBhYWIxZDk4YTk1ZmM4N2IgcmVsZWFzZTI2LW1haW50Cis3Njk4MCA5NzUxZGRjYzE4ODI4M2FiODJmODVhOTU5NTY1YWE0Njk2Mzk4ZTc3IHB5M2sKKzc2OTgxIDM3YTA1OThkMzMyZjc1MzhiMGQzYjQ2OTkzNTUxNGYxYzAxZTYxYWIgcmVsZWFzZTMxLW1haW50Cis3Njk4MiAyZTQ4NDE5MGNlYjVhMTk5NDgwMzNhYjZmZjAxZjFjNjc3Zjc5YzI5IGxlZ2FjeS10cnVuaworNzY5ODMgMWEyNWI0MjBlYzAwY2M0Zjk2ZGZjYmVhYjYxMWFmNjJjYmZkNzljOSBweTNrCis3Njk4NCA2MDZhNDVkYmQxMGNlNWUzZTVjNmM3ZGEyYmEyYWQ4NGY1YTJiZDkzIGxlZ2FjeS10cnVuaworNzY5ODUgMzUyNDllOTU2M2FhZjE5MGQzMGM1NWZkYWEzYjNlY2U2NWI0NGM3ZSByZWxlYXNlMjYtbWFpbnQKKzc2OTg2IGRiMTk3YjI4ZTA0NTQ0M2I1YWZjNjk4NzZlMDRmMzg5M2IzNjRmYmUgcHkzaworNzY5ODcgMjBmY2ViZDBjYjVkZDg2ZmU1NWJhZDI5MDYyMzE0ZWZjZGEzYTgzOSByZWxlYXNlMzEtbWFpbnQKKzc2OTg4IGFlZDMyMTg3NjQ5MDllZTNhMWY3Yzc0ZTVmYTJlM2YxMDhjZjVjMTUgcmVsZWFzZTI2LW1haW50Cis3Njk4OSA0ZDNiOWI0Y2FmZjA2YjM1ZTVlMjBmMTczZTg2ZDI2OGM4OWQ4ZWJmIGxlZ2FjeS10cnVuaworNzY5OTAgNDQyZDJiOWQ4MWUwOThmMTgxNzM4ODAwZGU3ZDRjNmE1ZGIzMjM5NCBsZWdhY3ktdHJ1bmsKKzc2OTkxIGYzMTE1MGQ4NDdjM2ZlNDNiNDE4NmE0NzI2NzIxMmE2NDdkMjI5ZTMgbGVnYWN5LXRydW5rCis3Njk5MiBiZTc4ODY2MGE5MzkzMzhmNjEwMTRmMTZjNDIyMTQxMWYxMzY0NzU5IHJlbGVhc2UyNi1tYWludAorNzY5OTMgMDdhMjgzMDhjZWJiMDY5NDEzY2JlZjBiMGQyNjZkNWNmMWZmYWMyYyBweTNrCis3Njk5NCA2NWRlMGJlZTBmZjJlY2JhZTY1YTg2YWY3MjRiNmFiYTliYjIyMzdmIHB5M2sKKzc2OTk1IGI5OTI3ZWVlMmE2OWZhODIyNWM3YjlmMjdlMzFmZDA4YTc4OWE0NzYgcmVsZWFzZTMxLW1haW50Cis3Njk5NiAzMGJlZGJjMjk3NjM1MjMyNTUxYWJmMTgyNjgwYzFiMGQ0YmVlNjdmIGxlZ2FjeS10cnVuaworNzY5OTcgNmM4MTMwMTUyZTg4YTIwMWU1MDY1Y2NiZmVmNDhhYTkyNjVhYTYwYiByZWxlYXNlMjYtbWFpbnQKKzc2OTk4IGNmNzRkOWFmODk1YTY5NGJmMGNmZWMyZTg4NWQyZjdlNDA3YWNjM2IgbGVnYWN5LXRydW5rCis3Njk5OSAxNTIwNjk3OTIwMjAxYjAyODlkODFkZmJiYmExYzg0ODJjNDYyYjdhIHB5M2sKKzc3MDAwIDlkYzU3M2I2ZjhmNWZhN2Y0YzdjNmM2NmRlZWNlMzQzNDBkZGZkM2IgcmVsZWFzZTI2LW1haW50Cis3NzAwMSA1M2UzMjEyNTk1NTZlNWMwYTVjZTliN2VjZmQ4YmVhNmZmYzkxZjRhIGxlZ2FjeS10cnVuaworNzcwMDIgMDcyYzNkMGYwNTFlOWI4YmMwNTZmODI4NDBjODlmMjc2YWZkMTRmZCBweTNrCis3NzAwMyBkZjI2MTA5M2IzMWNmNGRkZGM4MTA2YTVmZThjOWYwOTc2MmEyZTdiIHB5M2sKKzc3MDA0IGJkMjg3NDVjNmZlNzBkNzI3ODg2MmVhN2RmODRiYjE4Y2M4ZjkzNjcgcmVsZWFzZTMxLW1haW50Cis3NzAwNyBiYTc0ZDU4Nzc0YjcwZjZhNmM4NzY2NjY2MTI3Y2YxNzliMzA1NThkIGxlZ2FjeS10cnVuaworNzcwMDggMThhOGIyYmZjOWMyZWJjOGFiNGQ0YmQwMjE2YWU4OGE2YmI2MmYxZCByZWxlYXNlMjYtbWFpbnQKKzc3MDA5IDQyOWEzZTM4ZTQ2YmY1ZDc4NTczZjdhM2MzOGVlM2U2NjdkMDc0ZTkgcHkzaworNzcwMTIgOTNkNWNkZjFjNDU3M2U4NmE0OTMyZGY3YzRlYmEyOWQ3NjViZjc1NiBweTNrCis3NzAxMyAzYTczNmFkNjYxZmI2NDNjMzgzYWFmN2JhNTQxOGJjZTAzZDNkOTRjIHJlbGVhc2UyNi1tYWludAorNzcwMTQgMjUxODYwZGIzNDkzZjM4Y2I4MDdmOTdmZmFmZWUwYTgzMWIyZTMzYSBsZWdhY3ktdHJ1bmsKKzc3MDE1IDI0MDA2Y2E1NjJkNWFiOTVjZmVkNTg1NzY4NDk0NGMyZTc2NDlhOGIgcmVsZWFzZTI2LW1haW50Cis3NzAxNiA0YWEwZDgxNmVlNWJhMDVkMzVjMzJkMTgyODdkOWUzYTg1Y2ZjMTM4IHB5M2sKKzc3MDE3IDgwMjFiOTBiNTZlZGJiN2Y0OGNhZTQyZTM0NjcwMzQ1MjczNGJkM2QgcmVsZWFzZTMxLW1haW50Cis3NzAxOCAxYzRlODk1MjE4NDdlMDAzODIyMzliMmFmYzkzYzI5ODg4Y2Y5YmExIGxlZ2FjeS10cnVuaworNzcwMTkgMTNlMmY4YTc0OWM0NjQyMGE5YjBhMGU1OWM5NTg4NWUwOTU3YTQ5MyByZWxlYXNlMjYtbWFpbnQKKzc3MDIwIDg4NjI3NWZmYWZkNmIzYzY1NjM4ZjZkYmU5YzA2YTY3NGIyOTg1MjcgcHkzaworNzcwMjEgZTc1N2ZhNzc5NjAxZjUwNTNlNDAyYjliYWIzMmE1ODk2MGFmMTdhZiByZWxlYXNlMzEtbWFpbnQKKzc3MDIyIGRmMmNmY2Y5YTA3MzhlMWVhODQxNzUyZTUwMGE0Nzk0OWRiNjgxYzYgbGVnYWN5LXRydW5rCis3NzAyMyAxZjg2ZTBlNDY5NjlmYTQyMjMxM2RjNTNmYzEyMThkOThjZjcxMTVjIHJlbGVhc2UyNi1tYWludAorNzcwMjQgNTU5NDI1MzMzMTc4N2UxMjA0MjA5ZDRjYjU0MjYzMDg2ZWJlZDdjOSBweTNrCis3NzAyNSBkMWYxYTA1OTE1NGJhOWYxMjMwODE0YmE3YzE3Y2EzZjEyOTQ0ZDA1IHJlbGVhc2UzMS1tYWludAorNzcwMjYgY2EyNGVhMWEyYWUyZWQ4NzI2MjVhYWM0NDk5M2I0NDE4NWQ2OTE1ZSBsZWdhY3ktdHJ1bmsKKzc3MDI3IDFkZjczYmYzOGM1NWI4NTdkYjgwMjExYmE0MWZhOGI0ZTM3MTI3NDYgcmVsZWFzZTI2LW1haW50Cis3NzAyOCAzNWRlNTdmNTE1OTk1NzM0OTRjZjdhMmQ4ZTcyNzViNjZhNzZiZmQ5IHB5M2sKKzc3MDI5IDcxZTZhMGRmYWZjODQ3MTZmNDY3ZTllMzMyMTk0Yzc1MzM5ZTllZmQgcmVsZWFzZTMxLW1haW50Cis3NzAzMCA5ZGEwY2YyZGZmY2M5ZWE1OGM1MjAxOTcxNDEwOWNhZGUxNjZkNTliIGxlZ2FjeS10cnVuaworNzcwMzEgYWFlYjY1YmFiM2MwNTFmYjViYjhkNDhlM2JlZTI0MzdjOWFhYzY1ZCBsZWdhY3ktdHJ1bmsKKzc3MDMyIDk0ZTk1N2NmZGEzODNhZjk4ZjhkMTg4NTJhMTZjYzBmNWMwZTIwYzkgcHkzaworNzcwMzMgNDYzNzFiMjhmZGQxMTg1MWNlNTAxNTAxNDQwN2E1MzRmODYyYTc5MSBsZWdhY3ktdHJ1bmsKKzc3MDM0IGJjNWVjNTBjNTBmOWVhYjMzMzQ1NzQwMWNkNTNmMzZlNjExMjQwODcgcmVsZWFzZTI2LW1haW50Cis3NzAzNSAzYzQxMjQ0N2VmYjIwMzBiNDY2NTg1YjYzYjQ1OWM1NmI5MzJlMjQ2IHB5M2sKKzc3MDM2IGU3ZGNjNzQ4NWQwYmQ4MWM1OGY4MTA3YTA0ZmQ3Y2M0ZDQwMWExMWMgcmVsZWFzZTMxLW1haW50Cis3NzAzNyAwODU1ODE4ODRlNmY2MzIyZWFjZDE0Yjc1Y2I5MDA2Zjg1MzZiOTQzIGxlZ2FjeS10cnVuaworNzcwMzggODcwYTQ2YzhhNjcwNWRiMjhjZDljOGZhNjA3NWI4MjhiN2FkY2QxNCBsZWdhY3ktdHJ1bmsKKzc3MDM5IDBlZjk0ZGE3NWJmZGE2ZDczZTg4Mjc3OWJjMTM1ZDg1NTg3M2NhMmQgcHkzaworNzcwNDAgNDI3YzIxNDNlMmM5YmExZjg3Yzk2MjE3NzUxNDc5YjdmN2VjNDliZCByZWxlYXNlMjYtbWFpbnQKKzc3MDQxIDg0MjYzNDI3NmQwMTFkY2IxZjQyZjBjYTNiNDYzYmYxYWYxOTViMmQgbGVnYWN5LXRydW5rCis3NzA0MiAzYjg2YjIzYzU4ZmU0NDBiYjBkODhjMjdlMjQzMzYzMjhkMzg5NjU3IHJlbGVhc2UyNi1tYWludAorNzcwNDMgNzI2MzIzZmQ4N2NhNTBjNjA4OTRlODU3NzUyYWJmMWU2YmUxMjBlOCBweTNrCis3NzA0NCAzNDM0ZTZiMTFhOTIxOGVlOGVhZWVjN2I1YmE0ZDUyMTViMzVjM2NhIHJlbGVhc2UzMS1tYWludAorNzcwNDUgODYzODdiOGI5YWY4YjlkNWZmNjNhYjM4YTM5OGYzZWZmZDA3NTMwOSBsZWdhY3ktdHJ1bmsKKzc3MDQ2IDk0MjRiODRhMmVjOTUyYTMwYjk0MzAyZmU4Yzc3YTQ5MmI0NmRjMjIgcmVsZWFzZTI2LW1haW50Cis3NzA0NyBmNTYwZTFhNzc0NGVmYWQ2MmI5ODJiOTY5NzM1Yzg3MTYzOWM1ZmI1IHB5M2sKKzc3MDQ4IDk2MjhlYjdlOThkZmI3ODAxMGE2NzAzYTA5NDZlMDFkZDAxYjRjMTMgcmVsZWFzZTMxLW1haW50Cis3NzA0OSBkYjc5NjU2NzEwOWNiNGVjZWZlMjk2NDg3NmIyZmYyNmI4NDk1ZjdiIHB5M2sKKzc3MDUwIDZjYTFiOWI3OGMzZmQ3OWJiNzFmNzFmNjkwOGExY2E5ZGE2MTlhNWIgbGVnYWN5LXRydW5rCis3NzA1MSBlNWM0Yzk3MTI2NjFhZjNlMmU4MDUyODJkZGQ5ZjY1NWM5MDBkZWIxIHJlbGVhc2UyNi1tYWludAorNzcwNTIgNDlkZjNjZjkxOWY3ZGJjZWZmZDI1YjhjMTg5ODc0MmYzODIxM2U4ZSBweTNrCis3NzA1MyAyMTA2MTEyZjViMDc2MzhlY2I0YjhmOWVhNWEwY2U0ZGNiNWMyODkxIHJlbGVhc2UzMS1tYWludAorNzcwNTcgNWRjNWQ2YzZmNjQxNzg5ODM2Y2U1OWQ0ZjUzY2U3ZjM2MGIxZTRmMyBweTNrCis3NzA1OCA2NDY3NjQ5OTQxMjAwOTNkMDA2YTYyZWI1MGQ5YTgzMDI2YjA3YWMwIGxlZ2FjeS10cnVuaworNzcwNTkgMTUxMjljODBiMmZlZDdjNTAwNDI0YzYwMTQ0ZDVjN2ExZjdkMDY5MSByZWxlYXNlMjYtbWFpbnQKKzc3MDYwIDY4ODExZGZlNzA2Y2U5NGQzMWU0MWVhMDU0YzE2OWNkZGVlNDg4MjUgcHkzaworNzcwNjEgZTM3MmE4MDU2YzlkNTM3ZDZmZDQ5NDFhZjUxMDY1NDIwMTg3YzJlMSByZWxlYXNlMzEtbWFpbnQKKzc3MDYyIGM0ZTYwOTg4ODM0ZGYwZmQ0MzdhZTM0MjJkYTBjYWI0YWNkNmZjZTAgbGVnYWN5LXRydW5rCis3NzA2MyBhYWE1YWI3Yjk0MmE4ZTQ0NTNmMTMxMGRjYWRkOWM1ZTU3YjAwNmJmIHB5M2sKKzc3MDY0IDU2MGI4NzY2OTE5ZDVkMTVjNDQyYTEyYzk5OTc5ZGZiNTFhMmY4MmEgcmVsZWFzZTI2LW1haW50Cis3NzA2NSAyMjkwNzhlNDcwMTBjOGM4YTdiY2QwNzljOGQwNGY3ZThhMDM5MTZhIHJlbGVhc2UzMS1tYWludAorNzcwNjYgZWIwYmJhYmEwMzYxYjc0NmZiYTk3MGVkYjU4OTk1NzJjOWIwZjdmMSBsZWdhY3ktdHJ1bmsKKzc3MDY3IGRkNjcyNmM5NzhjNjY2OThmNGQ2OTA1MzhkODI5NjJkNjZlMmFlY2IgcHkzaworNzcwNjggOTU3Mjg5MDI5YzA1MzRlNWRlMjRmY2E5MjcyY2FmODBmYzI2MjQ4OCByZWxlYXNlMjYtbWFpbnQKKzc3MDY5IDg1ZTc4MWY1OTliYzhhOTRmNTY3YjFhMzY0MDRmY2RhZGZiMjcxMWEgcmVsZWFzZTMxLW1haW50Cis3NzA3MCA4ZTgyZmIwNDNhZTg3ODU5ZTlkY2I1ZmUwMGE3MDBkYzg1MTFkMTkxIGxlZ2FjeS10cnVuaworNzcwNzEgYWQ3ZTQxNDFhM2ViODNmODZjNmM1NjkwNDBkZTM1M2IxNzU0NDRkNSBsZWdhY3ktdHJ1bmsKKzc3MDcyIDczMzY1YmIyNmZkNjUwY2MwNDYwY2YzNWQ3MWZkMGI2YjE4OGVmYzQgcHkzaworNzcwNzMgMWUzNzE4MGVlY2FlYTQ0M2YxNDhmNGIzNzkwYmI2MTRiZDVjYzNmYSByZWxlYXNlMjYtbWFpbnQKKzc3MDc0IDVhOTM3MTAxN2VkZjlhMWE1MDEzZmY4YTAxZDBhOWFlZjNlZGVhMGUgcmVsZWFzZTMxLW1haW50Cis3NzA4MSA1MjVmNjdiZWViODljN2ZhMjBjYWZjOWU4NzE4NmVlMDAxMTI2N2FhIGxlZ2FjeS10cnVuaworNzcwODIgMzA3NDFlZjY1NjE3MzhkZjcwY2JlMjc1OTg3NTBkZTQwNGVjZTBiYSBweTNrCis3NzA4MyA1NzQzM2I4MzNiMmE4ZGYzNDExNDVlZDBlMzI5ZDk5YzYzYzUxZmYxIHB5M2sKKzc3MDg0IGNiZTFiYmU1NDRjOWU0NmJkYTE1NzhmMzYwYjE3MzE1YWNjOTQzMDYgbGVnYWN5LXRydW5rCis3NzA4NSBhMTFhOGU1M2M0OTVjZThiYzc3MTIzNTVkYmRmNTZkOGY1Y2M0NjdjIHB5M2sKKzc3MDg2IGZlMDQ1OWRjOTg4OWY5Mzc2ZTZkZTFhNTE0MTMzYzkwNTI5MzhlMzAgbGVnYWN5LXRydW5rCis3NzA4NyBmZmQ4MDBlZjQ2ZWEwNTRlOTJlZmI0OTA2Y2QyN2YxNDMxNjNlOGY2IHB5M2sKKzc3MDg4IGNmMzljNWU0NjJmOTRiY2U1ODE1YjJkNjhiMGJhYjUzYWRmNWJhZTIgbGVnYWN5LXRydW5rCis3NzA4OSBjMTk3MmVlZjM1Nzk1Y2UyZDRhMTMxMDQyMTczZjI4N2ExMWUzZTBkIHB5M2sKKzc3MDkwIGMxNGEwMTRhZjk1NGViYWNmMDQwYzY5YzY0YTcwNTFjMTYzZWJlY2EgcmVsZWFzZTMxLW1haW50Cis3NzA5MSA1ZTg0YWJmZGZlYWJkNzVhNTE1YzQ2OGExOGMzZTIxNjg4MWUxYjBjIHJlbGVhc2UyNi1tYWludAorNzcwOTIgOWI0YjQzYThjOTEzMDU5NTUwZmNmODZlNWM4N2I4ZWJkMDgwZDRjMiBsZWdhY3ktdHJ1bmsKKzc3MDk2IDM3NDE5MWUxMGE0NWJlNmQ1NjgyM2FjYTE3Njg5Y2RiMmZhZmFkYTMgbGVnYWN5LXRydW5rCis3NzEwMiA1YzhjNGQyZjhiNzEyMGQxZGVhOGI5NTFjOWNhMGRiOTA4NGMzNzYxIGxlZ2FjeS10cnVuaworNzcxMDMgZjc2NGU0MTI2YTIzMWJhMGI3Y2M2OGI1YmU0OGQxMDU3YWVmN2RkZiBweTNrCis3NzEwNCAzYjQ2ZjJkM2I3NWQwMmYzNTZjMWFmYmVjYTNmYjVjYWZkNjdhN2QyIGxlZ2FjeS10cnVuaworNzcxMDUgZWM4YmIxNTE0ZDY3MWE2M2JkN2M3M2NiMzVkZWJkYzk2MDBlZjNmYSBweTNrCis3NzEwNiAxNWVhYzc2NWNjMzVkOTRkMWNhOTg3NDYwNDIxMmI1MGU2ZDg1ZWFkIHB5M2sKKzc3MTA3IDA0OTgwMjc3MTJiZjQyYzMwZDcyYjljNjhlZDkzNWJlZGVhNTJmNzEgcmVsZWFzZTMxLW1haW50Cis3NzEwOCAzYWVhNTdkYzIxYTliMWQzYjg2MTQ4YWY1MGRjZGViODc4MDFkY2U2IGxlZ2FjeS10cnVuaworNzcxMDkgMzhmNTkzYTgzY2ZjODQyM2Y0ODBkOGQ2YjlhMTM2ZDhkZTlmYTc3MSBsZWdhY3ktdHJ1bmsKKzc3MTEwIDhhZDMzOTkyMjAyYWVhM2E2YTAxNzgyZTAyMTMxMzUyNTkzZTMwYTIgcHkzaworNzcxMTEgYWJlNTAwOGI5M2U5YTRjNzMyZWM1MzE0ZGFkZDY1ODYyMzRiNDEyNyBsZWdhY3ktdHJ1bmsKKzc3MTEyIDYxYTc3MGY3Yjk1MWIzZjkyMDdlN2Q2NmM5OGU0YzkwMGNiYTllMmYgcmVsZWFzZTMxLW1haW50Cis3NzExMyA1NzQ1NmYxNjk0MmQ5OTAwZTk0NTM2NjA2ZGE4MmRlYmFkZGM1OTRiIHB5M2sKKzc3MTE0IDcwZDc0NzNhZmNmZWY2N2I5NjYyZGEyYzFjYzU0YzFjYTQyZTdmZjAgcmVsZWFzZTI2LW1haW50Cis3NzExNSA3MjMzYmMzNGZkNDRlMjg4ZmJlNmUxNWZkZDczN2Y5ZTUyOTIxYzdmIGxlZ2FjeS10cnVuaworNzcxMTYgZTQ4NGZkYTQ2MmE2MGI3MDA2MTBkYWI4NTk4MGI4MjZlN2FlZWFhOCBsZWdhY3ktdHJ1bmsKKzc3MTE3IGJkNmIwM2ZiNzFhMDY0NjY5YjBhOGQyMmUwNjg1NmY4YjhjMzcyZjAgcHkzaworNzcxMTggMjU5ZWQ1Y2I5M2VhY2RmYzQ5MTBiYTEzYTI0MWUzMmFmNTc2NjEyNiByZWxlYXNlMjYtbWFpbnQKKzc3MTE5IGVhZmEwNTNhZjA1NzBkYjA3YWI3NDU1ZDU5ZjJhZTRkYTc3NTUzZGUgcmVsZWFzZTMxLW1haW50Cis3NzEyMCBlYmQwNjE4MzhmYjE3NDU1Zjk4NWZiYzU2ZDMzMGU2ZTU4MTkwZjMzIGxlZ2FjeS10cnVuaworNzcxMjEgNWUwYTk0NzE2MDFmNjM0OTNiYmZkYWU5ODRiYzQ3NzVlYjU1ODI3ZiBweTNrCis3NzEyMiA4YzYwYTk1NWQwMmMwYTJkMjQ5ODZiN2NjNTI4ZDdkZDg1Y2Y1NWRmIGxlZ2FjeS10cnVuaworNzcxMjQgZTNmNTkxNGQ5YmIzZmVhN2Y4OWM1NWM1ZmQzMWE2ZGE3MDU4ZDY2ZSBweTNrCis3NzEyNSAyM2Y0NjcxNTE3NTZhN2M4M2U4NzM1ZjExMzEzN2FmMTJkYWYwZWE2IHJlbGVhc2UyNi1tYWludAorNzcxMjYgYzUwMmVjMjQzNDU4OGI4YmNlODA5OTZjNWJiMWMwMjczZTY5OTFlOSBsZWdhY3ktdHJ1bmsKKzc3MTI3IDc5MGU4ZmNmNTE3OTVmMzJhYTU4ZGY5ZTJmNWY5MTc2OWQ2YWViNTUgbGVnYWN5LXRydW5rCis3NzEyOCA2ZmRlMTFmNGQ4NDI2NjZmMzE5ZWI4ODczZWQ0NWMwNzk1ZWNkZTFmIGxlZ2FjeS10cnVuaworNzcxMjkgZmI2NzFkZjBmNWNjOTY2YTgxNzM1M2VmOTM3Y2FiNjUxY2U5NWIyNiBweTNrCis3NzEzMCBlNTNlNTUyNTJiYTg0YmNlMGU5YmYxMzNlMGJiZWQwNjExZDU0ZGZlIGxlZ2FjeS10cnVuaworNzcxMzEgOTJhNThiODAxMjIwNjczMzQ5NzdhNTkwY2Y4MWQzMGNhMzFiYjA0NiByZWxlYXNlMjYtbWFpbnQKKzc3MTMyIDE5ZjIzNTk5NDRlYjQzNWQxYjZlNTI3NjQ1OTYyNTg1YjE1MDI1MzggcHkzaworNzcxMzMgMjQ0Yjk3OWQ1NDRjMTI0ODQ2NDAxODZlOWE3NDM1MDc5MTQwZTAwNSByZWxlYXNlMjYtbWFpbnQKKzc3MTM0IGQ0YWMzYTgwMDBjNzUxODhkMDI5ZDc1MTM5YzdiNTIwZTdlOTRiM2MgcmVsZWFzZTMxLW1haW50Cis3NzEzNSBhN2Y2YTUzZGFhMTJkMWI1YzY1NmZiZTM3YjlkMjVkZGI1MTkzY2YwIHJlbGVhc2UzMS1tYWludAorNzcxMzYgNGYwOTg4ZThmY2IxNTZkZGViYzQ0OWVkNDExYTUzMjA5NWU4MTc2MSBsZWdhY3ktdHJ1bmsKKzc3MTM5IGFjNWZkODkwOTk5OGZlZDlmNjI4ZjVjNWNjYTI5YWQ2Y2IwMzMxN2QgbGVnYWN5LXRydW5rCis3NzE0MCAzODU3Y2Q0ZDViMzU5NzNiNWI5MzMyMjNiOWUyNmFjMmU4YzQ3YzU2IGxlZ2FjeS10cnVuaworNzcxNDEgMmFhMGQ5ZjAxZDQ3NTNiNTY1MDljZjVlMDliMGJkNTk2ZWM3MzlhZCByZWxlYXNlMjYtbWFpbnQKKzc3MTQyIDYyNDhiN2ZkZWMwZGJiNTlmOWQ3YTQ0MzcxNjQ3MzcwNWU1YjA0ZGEgcHkzaworNzcxNDUgYWQ2MDlkMGY1MTUwOTc0MmExNDJmZWVhYWFhZTBhZTkzM2FlNTMzMiBsZWdhY3ktdHJ1bmsKKzc3MTQ2IDc0MGRiYWUyZTMwY2ZmZDAxMjA0ZDgzYjI0M2M3Y2ViOWZjNmRiOTcgcHkzaworNzcxNDcgMTc0YTI4YzlmYjQwNzAyNTBmMWRlMTE0YTY5MDE5ZDVhZjQ2MGQ5MyByZWxlYXNlMzEtbWFpbnQKKzc3MTQ4IDVhZDVhMWQ2MTJlNWQxNDhjN2VmNTY5N2UxMjYyYjQ0M2IwNjM3YzIgcmVsZWFzZTI2LW1haW50Cis3NzE0OSA5Y2IyNzVkYjRkNmQ1ODRjMTkyZWVkY2UyNjE1YTFlNWY4OGQ1MGY2IHB5M2sKKzc3MTUwIDAwZmU2ODlmMmI3OGQ1NWM1MzYyMGY5MGE1Y2UyZDg2ODVmMzI5MjggcmVsZWFzZTMxLW1haW50Cis3NzE1MSA4ZDljOTM0MGIxMmUxNmM4YzM1NTUwYWEzNWM5NDdiOGZlM2YyMzRhIGxlZ2FjeS10cnVuaworNzcxNTIgNzM2MWVlMmRkZmRiN2E0NDBlYjUzYWMyNGE1M2JmNjE0YzgzZTk4NyBsZWdhY3ktdHJ1bmsKKzc3MTU1IGRiNjI5NzdjNTcxM2Y5MGE3Y2U3YzgwOWNjMDdkZDgwNzFmNTNhNDIgbGVnYWN5LXRydW5rCis3NzE1NyBhZTE5YzI4N2U5YzBmODU1NmExZWE0YTJlNzI0MWI0MTNiNTY0OTU1IGxlZ2FjeS10cnVuaworNzcxNTkgOTZhMjM3MWIxMTRiOWRjYWNlYzJiMTE0Y2EzNzQzMjViZDJkYTdhZiByZWxlYXNlMjYtbWFpbnQKKzc3MTYwIDgxY2YyNGU1Y2U5MjhlOWM5MDNhOWU2M2FiNjQzYWMyODA1OWJhN2YgbGVnYWN5LXRydW5rCis3NzE2MSA2YzE5YTZhNjk3YTYxMWQ0Y2E2ZDEzMWI1MDJhYWUwOWU2MGRmZTAzIHB5M2sKKzc3MTYyIDQ2ZjRiN2I1YjRkZGU0N2VhOWI1YWJkZWIzYTYwOTkxNmE0NDM2NWIgcmVsZWFzZTMxLW1haW50Cis3NzE2MyA4ZGM2ZGZhNDFmZDU2NWNlYWM3NjFmZWYxYzBiNzg1YjVlYmRkNWUyIHB5M2sKKzc3MTY0IDI1Mjg1ODJkNjhmNmJmNjk2NjQyYmI1Y2U3ZGJjYjY1OWY3MDBmMzIgcmVsZWFzZTMxLW1haW50Cis3NzE2NSAzNmFlZDllMzY0MmRjNGQzMzY3OGU3YWY1NmUyZGI0MTIwNjg4M2MzIHJlbGVhc2UyNi1tYWludAorNzcxNjcgZWZhNTk3NjMzMDEwZWZlM2M4YjM2YTA0MTVjZjg5MTg5ODc3YTQ5YyBweTNrCis3NzE2OCA5ODBjNzlmYmQ0YzVkZjQ1Y2MyZjEzZmM5MmIyMTVmYmU4NjUzODliIHB5M2sKKzc3MTY5IDhmZWUyYWI1M2U3MTZhY2VjOWZkOTc2Zjg4OGE2YmJiNzBhYTkwM2UgbGVnYWN5LXRydW5rCis3NzE3MCAyMjhiYmEyZDFmM2Y3NTA4NmY3MTJhZGU3MWUzMDg0M2Y0NzkxMmMxIHB5M2sKKzc3MTcxIGUwNzg1Nzk5ODRhNGU0ZmMxMzgyOWE3NWUzNjI1MGI1MGNmMDJjZmQgcmVsZWFzZTMxLW1haW50Cis3NzE3MiBiM2QzN2ViOTYzMjIzNTQ2MzI2MzMyOWY1NGMxZDllYTIzZTk3ZTJlIHB5M2sKKzc3MTczIDRkNmQ5NTJmZTI4ODExODMzNDcyMGUxMThjNDM5NDBiNDUyNjczNjQgcHkzaworNzcxNzQgZDUyYTcxNzllZWNlZTJlZDVjODZmNTllNjA5ZDRiMmQ1NTY1M2QyMyBweTNrCis3NzE3NiA0NDNmNzFkZDVjZjAyYWJkOTUxNDczNGI1MzcyMzc3NzFlMTI1NWU4IHB5M2sKKzc3MTc3IGE5MmYwYTBhZmU1Njc0OTlkOGFjMmRlMmFiYjBlZTBhMWZjNGQ1ZjAgcmVsZWFzZTMxLW1haW50Cis3NzE3OCAzODRhN2EzNzA5ZGM4ZjllMGVkOGE2ODJmZTZkMWYyNzJlMDNlZjc4IGxlZ2FjeS10cnVuaworNzcxNzkgYmY5N2FjZjhlY2IxODcwYzFkZjhjMDlkZGY5ZjZjMjk4YjBkOTU2NCBweTNrCis3NzE4MCA3YzYzMDkzMWNjODMxYzdlNmI3NDQ0OWJlMGU1ZDYxYmE5NGI2ZWRhIGxlZ2FjeS10cnVuaworNzcxODEgMjM2ZGNmMTcxYjc0NmYyMjNkMmVkMDRlNGRkODdiOTE3OTY2MjUzNSBsZWdhY3ktdHJ1bmsKKzc3MTgyIDFlOTJmZTU5MzkxNmRjMGNlMzYzMzBlYjA0NWI2OWQ1YjAyNTcwNGQgcmVsZWFzZTI2LW1haW50Cis3NzE4MyBkYmFhNGVlZWFlYjhkMjZmYTlkMWQwNjcyMzBiNWFhZmQ2OGEwZGFkIHB5M2sKKzc3MTg0IDVhZmExNjkxNDI5NWU1ZjdkNmQ0ODVhZjE5ZWI5MzA4NDM5NmYyYTIgcHkzaworNzcxODUgMjVhYTQzZTQzMDJiZjVkYjNjMzkyZWVhY2ViNzJlMzJhZjY5Mzk4YyBsZWdhY3ktdHJ1bmsKKzc3MTg2IDdkNmJmZjcyMjE5NTBmZThkMjJkMGJjMjJmNmE5MmFiMzMwMWIwZDEgbGVnYWN5LXRydW5rCis3NzE4NyA4NTZhNDVjMGI2YzQxYzY1ODg2YjcwYzcyZTMxMjRmYzlkZDA2OTVmIGxlZ2FjeS10cnVuaworNzcxODggNWI0NzE4NDdmNmVhNmVjNzM3ZTNiY2I5MWRmMjAwYjUwMjgzZDYwNyBsZWdhY3ktdHJ1bmsKKzc3MTg5IGFiNDBiOTM2YmQxYzE0MzE3ODY0ODk5OTc4MGRhZWFhMmVlMjM0ZGIgbGVnYWN5LXRydW5rCis3NzE5MCBlNjJiZTA4NDc4YmNkYWI2ODQ4ZWM5N2EwYzFmZDVlMWIxZTYyOTI0IHB5M2sKKzc3MTkxIDE2NjZlZThkYWY5YjEyNDkzMDFhZmVjZjA2OGFiNWRkMTNjYjg1YzYgcmVsZWFzZTI2LW1haW50Cis3NzE5MiA1MzEwMGRiMzUxMjg0ZjdiNTBlYjc2ZDFkMDkzOGI1MzI4MWQ2YjRlIHJlbGVhc2UzMS1tYWludAorNzcxOTMgODRiMDBlNmJkNjliMjFmZTNmNGI0ZjIyMDE2M2Q4YmZkNzQ2YTFmMiBsZWdhY3ktdHJ1bmsKKzc3MTk0IDYyMTJlZGMyMmNiZGY4Y2U5YWRkYjI1NGZlNmI3M2IxZjA3ZTgwMTIgcmVsZWFzZTI2LW1haW50Cis3NzE5NSBiYWJmYzA2MTIxMmMxNzQzZjMxMTVhZmRhMzE3NzFhZWExYzgwOWU4IHJlbGVhc2UyNi1tYWludAorNzcxOTYgZDhlNjRhODQ0NzNjZGQ1NGE5YzEzMWQyNjdjMGJiMzI1NTdjMzEyZiBweTNrCis3NzE5NyAzZTIyYzdlOWYzMDdjYjFjOTNmNTM4ZGFlMTk4NWJmNmZjMjY4OTdiIHJlbGVhc2UzMS1tYWludAorNzcxOTggZTQ1NTNiNjA3YjQzZGZjMTdjYjM0YzM4MjQ0NjEyMDc3MDM4OTRhZiBsZWdhY3ktdHJ1bmsKKzc3MTk5IDQyY2ZiNzI3ZmY0ODVhNzhmYjUzOTIxYWIwOGRmYzlhNDZhOWFhZWEgcmVsZWFzZTI2LW1haW50Cis3NzIwMCBlMjI2MWI2MWRmMDY2MDViMmJkNWI0OTJmZGQ1MTY2ZWQxMjQxNzIxIHB5M2sKKzc3MjAxIDcxYmI4NDJiNzlhYjJlMzBhNjBlYzQ4YmI3NTZhNzNkNmZkNzQ5ZmYgcHkzaworNzcyMDIgMjEyYTcyMjg2NGExYWU4Nzc0ZjUyYTkyNmZkOTExYzU2YTE4MDdhYyByZWxlYXNlMzEtbWFpbnQKKzc3MjAzIDBiZTQ1YjVjZjBkNjNkYzMyNGJmNzU0OWM1YjNhZTEyNDZhOTgwN2UgbGVnYWN5LXRydW5rCis3NzIwNCBmY2U2NjExMjQxZDEwOTJjYTFiN2Q2ZTMzNTRhNmY4ODAyMjVkYjY4IGxlZ2FjeS10cnVuaworNzcyMDUgMWQwZmRlNTlkZGVhOGZhNGYxZDBiNmZmM2EyZjAxNDZmNThmYTBiOSByZWxlYXNlMjYtbWFpbnQKKzc3MjA2IDY4YTc1NGFiY2ZiNjhiM2IwMzFjYTY5YWQ0YjhiODgyNjcyZWE2YWIgcHkzaworNzcyMDcgYzAyNmI5MTBhNWU0ODY1ZWUyZjJhOGM5NTcyMGI2NDQ0NzJlOWExOSBweTNrCis3NzIwOCBmYzc1YTk5OGFkYmZlYTc0NzUzOTk0Mzc5MTk2YzJiMmY4MmU0YTNjIHJlbGVhc2UzMS1tYWludAorNzcyMDkgYWRiOTIxZjA0Yjg3NzU3NDAzZmFiOGJiMjliMzJkYmE1MmM4OGVmMyBsZWdhY3ktdHJ1bmsKKzc3MjEwIGZmMmFiYjk0YzY4ZWJmNTJlMmE1OWJmZTc0NDNhZDNjZTMxMTgzYmUgdGFyZWtfc3lzY29uZmlnCis3NzIxMSA5YTU1YjExNzNkMjAwNmM0Njg0YmUxOTI2ZTFmZjQyZDA3ODQzZjA1IHRhcmVrX3N5c2NvbmZpZworNzcyMTIgZjAyODgxMzMyMzQyYTFhNzZmMDM3MWIwMDE1NDFhMjIyOTllYTAxYiBsZWdhY3ktdHJ1bmsKKzc3MjEzIGJhYTcwZDQxYzliZGI1YmVkMGQ3NGRjMDk5ZDYxMDM4NzFkZjIzOTQgbGVnYWN5LXRydW5rCis3NzIxNCA5NDE4ZjRiMDEwNDUxZjdiNGQxZmQwMmI1ZWIwMGZiN2Y5MzQyYzcwIGxlZ2FjeS10cnVuaworNzcyMTUgYzM1MDc1ZjJhOGYzMGU1YWZkYzNiZWVmOWVmZmQ2MGFhNzFlYWRjOSBsZWdhY3ktdHJ1bmsKKzc3MjE2IGIwZGQ2YzIxZGNiZjQ0ODNiMWIwNWViNWFiMDRhOWE1NGRjMDNiMjEgcHkzaworNzcyMTcgNGZmYjkzMzg5MjU2ODc4N2FmMTM1MTg2OTY2ZTRkYmUzZThkMjc2NyByZWxlYXNlMzEtbWFpbnQKKzc3MjE4IDJkZTI0YmIzM2NjNTdjNTBjZmE2NGMwNTQyMDk3YTUzYWVlMmQ3MWUgbGVnYWN5LXRydW5rCis3NzIxOSAxMzk0YTQwM2RjODllNWI0MmFiNDQyZjYyNzYxNjFjOWRhZWVjMTgzIHJlbGVhc2UyNi1tYWludAorNzcyMjAgNzhjYTY5Y2ZjODk3OGI3Mzk5OWYzYzE0NDU2NGE4OTJhMTY4NDcwOSBweTNrCis3NzIyMSBmMDllYjkyZWQwYWIyYWY1NTFhNjdiMWVmYjIxMmYxZWYxMjMzMjE4IHJlbGVhc2UzMS1tYWludAorNzcyMjIgYWM1MjhhOGEzNmNmNWM1MzQyYzgzYzc2OTRlNmYzYjQ0ODQ0OGRjMyBsZWdhY3ktdHJ1bmsKKzc3MjIzIDc0N2IwMWEwNTMwMDY4NzZjMzk4OWFhMDI1ODViYjE3ZjgxYzMwMmEgcmVsZWFzZTI2LW1haW50Cis3NzIyNCBhNzI4ZmE0ODFhZDQzODg3NGFlNjNlMWE2ZDdjYWVhY2I1OWNiZDc1IHB5M2sKKzc3MjI2IGI1YzFjZmRjNjhiOTI5ZjQ0OWE1ZTVlYTY2Y2IwZmM4Njk2M2U4YjMgbGVnYWN5LXRydW5rCis3NzIyNyA2YzhjMDQwYzE0NDNiNzUyYTJjNjQ4M2M1MmNmMDkzMmM2MjgxMzQxIGxlZ2FjeS10cnVuaworNzcyMjggMThiZDFjNjdmNWUyZDRiZjgxMTYxNTVlNjU1ZTg3YjdhODg3YzAyMyBweTNrCis3NzIyOSBiOGUzOGQwYTUyZDdlMTI3ODhiMDkyZGJiMzU5NDg0MWY4YzkyZjU2IGxlZ2FjeS10cnVuaworNzcyMzAgNmQxNzAyNWM4NGMxNGU0YThmMzFlYjQzY2NhZDdlMWZjMzUwNmMwNyBsZWdhY3ktdHJ1bmsKKzc3MjMxIGZjODdhMmZjNDdhNTk1ZWFiYjU2ZjVkMTE5ZDU4MDA4MjQ2ZmIwMjIgcmVsZWFzZTI2LW1haW50Cis3NzIzMiBiZDI0ZTFlOTBmN2NjMjY2ZmY4YjMzOWU5NTJjZjY5MjA5Yjg1ZWU4IHB5M2sKKzc3MjMzIGFkYzljZGMwMmRmMTAwOWM4ODczNDZlMjdkYWU0NDE1NDk0YWUxNTkgcmVsZWFzZTMxLW1haW50Cis3NzIzNCAyN2M5NDZmZjc2YTNhOTJjOTkwOWJhOGMzOTRmNWIyNDNjNjhkMmUyIGxlZ2FjeS10cnVuaworNzcyMzUgNThhNWJiOTcxZTk1MmI3YTVlNjkyNDgxNTc3YjlhY2YyNmRiNTQzNiByZWxlYXNlMjYtbWFpbnQKKzc3MjM2IGMyZmIwNzc0MjQ0NWNmODhmZmVhZDFmNDI0OTRhNjA2NmExMjFlOWQgcHkzaworNzcyMzcgNDZkNjBlNWZmMTAzZTk1YzQ1MWExNDQ1NGVlMDkzN2JjNWEwMmY0MyBweTNrCis3NzIzOCAzOTBkNjc0ZWQ0YzczMjQ3ODYzODk5YzMwY2Y3Mjg3MjFkMDRjMWMwIHJlbGVhc2UzMS1tYWludAorNzcyNDEgZGRmNjFjZDc3NWUwMTlkNGJmM2NhOTczODE0ZDJiNWYxYzVjM2EwZiBsZWdhY3ktdHJ1bmsKKzc3MjQyIDYyNjNhNmZiZjdkOTM0M2Y4NWNmMjU0ZTBjZTNlMjA0YzllZjM1YzEgbGVnYWN5LXRydW5rCis3NzI0MyAyZDVhYjRkMDhjODg1MGI0ZmE3ZmJkMzFhOTA4YzE2MGQxMzdhZjgzIHB5M2sKKzc3MjQ0IGEzMjY2MWIzMzRmNjc2ODM4MzlhM2VmMzdkZjY5NDgzNGE4MmFkOGEgcmVsZWFzZTI2LW1haW50Cis3NzI0NSAzMTMyNjVkNGUwMzI4MTJlZmM3ODAzZWJiNWIzNzZhNjgxYTM3YTU5IHJlbGVhc2UzMS1tYWludAorNzcyNDYgYTEwMzVjYjRhOTI1ZmM4MjE3OWU0NmQ0MTdlYWJlOWY5MGVjYzU0MiBweTNrCis3NzI0NyBmNWU0OTZhODQxN2YzMTVjNGEzYmU0MThmNjU1N2E3ZThjMTY0MmFhIGxlZ2FjeS10cnVuaworNzcyNDggYTZhY2UzMGNiOTEyMjRhOTVhMjgxODVlZWZmZWExMzIzZDdkZjQyOCBweTNrCis3NzI0OSA0YWNkOGZhZWEyZDkzM2I0OTc3MDM5MTRjMmFhYmI1ZDA4ZjA4NTUwIGxlZ2FjeS10cnVuaworNzcyNTAgY2M5N2E5NmU0YTA5MDgyNjc1Njc1ZjIwOGI0NmRiMDFiYzM0N2Q4MCBweTNrCis3NzI1MSA5MjYxMTg0MTc5NzkyYTg4MDFlNTRiNWZjMjEyODRmOGE0ZDdiZWJlIGxlZ2FjeS10cnVuaworNzcyNTIgZmY1YmMyZmEzOGQ2NmVlYzllZGRiODAyMWZkY2MwNDc4ODdjZGY1ZCBsZWdhY3ktdHJ1bmsKKzc3MjUzIGJlMjdlYTJiMzY3OWYwNGE3NGM2YzBlNmI2ZjdiZDQ2YTQzNmM0NDIgcHkzaworNzcyNTQgZWI5NWZkOTVlNjVlZGViYjk4YWI4MGEwNjY5NTA5YmRiZTIwMjU3ZSBsZWdhY3ktdHJ1bmsKKzc3MjU1IDU3Yjk5NmMzZDhmZmIzOGRjOWIyZjc5MDg3ODM5Y2NkMDUxZjljZGQgcHkzaworNzcyNTYgZTk4MTJiODE2ZmZkYjE3OTVjMzBmZTViMmVhODFhODU0MzY2ZTk5ZSBsZWdhY3ktdHJ1bmsKKzc3MjU3IDkxYTU3Y2MwMDIwZTRhYWM2ZmY5M2QzMmQyMTYyZjlhMmIwODIzOTggbGVnYWN5LXRydW5rCis3NzI1OCAyYTIzOTk1MzQ1OTE3Y2E3MjZkMmYxNjI5MWIxYzc5MGJjZDM0MzRiIHB5M2sKKzc3MjU5IDM4NTZjNzY0ZTFmNTJjMjA0ZWQ4MTM1NzJlMWJmYjc4MzA1NTZkZGQgcHkzaworNzcyNjAgZmUxMTdlNWQxM2ExZmNhZWU2YTBiN2VhOGFhNjQ3YjlhNTlmYTM3ZiBsZWdhY3ktdHJ1bmsKKzc3MjYxIGFiYmRjMzFlYTc5MDdiMDU0ZDAxYzY3ZjA2YTUzMTZkMDM0ZThlNjcgcHkzaworNzcyNjIgZmQ5MTc0NGIxY2FhYjQ5ZDBmYjdiNGIwMzhkODhlZTk5NjM0Mjg1NCBsZWdhY3ktdHJ1bmsKKzc3MjYzIDcyZTNlODViYWM4YjBkYzAyOWM1YzU0NTZhNmJjMjQ2YTRiYWM2NmIgbGVnYWN5LXRydW5rCis3NzI2NCBhMTlhZDI5OTA5NWYyN2RiMDJhNWFmZjQ4OGQzZGQ2OGE3NTM4YTFmIGxlZ2FjeS10cnVuaworNzcyNjUgYjAzODZmZTY1MGM3NTk2MGZkMzk2OWMwODM2ZTM2YTllNTE4ZjQwYSBweTNrCis3NzI2NiA4YzRhNzA3YzBiZDhlZWM2OTlhMGUwMjRjYmY2ZDBjZGEzNGNmOTFjIGxlZ2FjeS10cnVuaworNzcyNjcgYzNhZGNmYWMwNzcyMjg2MmI2MjJhMWVkOTM4MTQ1MjJhOTJlNWQzNyBsZWdhY3ktdHJ1bmsKKzc3MjY4IGEwZmNlOTY2NWY0NGFkOWYxM2JjZmYzZjgxNTYzZDFiMTY5OTYzZWQgcmVsZWFzZTI2LW1haW50Cis3NzI2OSAyNDAyZjI5MWU4MDE5YmFlYjliYTkwOGE5NmRiNTE1NjQxYzQ1MzIyIHB5M2sKKzc3MjcwIGU1NDQzNGQyZTJhN2QzN2UyNGIyNDQ1Nzk1NzVjYjVkZjNjOGZiMDMgcmVsZWFzZTMxLW1haW50Cis3NzI3MSBmNmUzNDAwMTRmOTY5NjlkZjZmZGY1OTczOTNlYjU1Nzc4NThlNDg1IGxlZ2FjeS10cnVuaworNzcyNzIgZWI5MjRmYWQ5MjcyMDYyMGQ5NDg2MmE2Y2JjZTU3NTk0NGU1ZTRmOCByZWxlYXNlMjYtbWFpbnQKKzc3MjczIDAzYmZlMzJlZjg0OWNhODYzZDY4NDAzODEwZGY2ZDY2NDU5Yzk5NjIgcHkzaworNzcyNzQgMzUxZmM0MjUwYzFiMGM3YTY1OTlkODI1ZWFkN2ZmNjVhMmRlNDk3ZCByZWxlYXNlMzEtbWFpbnQKKzc3Mjc1IDBmOGE1ODc5MjU2M2MzMzU0YmExZWIzOGRhOTk1NjUzZmNlOWEwNjggbGVnYWN5LXRydW5rCis3NzI3NiA5YjlhZGM0MmM3M2EyYWViYjE0OGNlNGZjYzRhZjZmOTdjYjhmZDliIHB5M2sKKzc3Mjc3IDljMWYzMDZmYjBkZmE1ODQ4YjUzMDM3ZGFiM2Y0NDQwZDVkOTU2ZDcgcmVsZWFzZTI2LW1haW50Cis3NzI3OCA3NDRlMzkxZTQyZmRmMTYwMGU1ZDUwN2Y0NTU0ZGMxMTk4NjVhZjNiIHJlbGVhc2UzMS1tYWludAorNzcyNzkgNTE3NDliNmQ2MmQzZWIyYTQwMGY4YzMzNWI2NjdkZTlmNmYyZWI5NiBsZWdhY3ktdHJ1bmsKKzc3MjgwIDkwZjFlOTJkYjZmMjI1NThlM2VjNGMzMjkxYTIxZjljYzY1N2NmMmQgcmVsZWFzZTI2LW1haW50Cis3NzI4MSBiNTU4NTAwNzBhNTUxOGUzNzEyYTFmY2E3OWI2ODViN2JmZmIyMzkxIHB5M2sKKzc3MjgyIDIzNGJlYWFmZDBjNmRkMmEwNGYzMjYxOGQ2M2FhYmQ0MTM3ZDI4YTAgcmVsZWFzZTMxLW1haW50Cis3NzI4MyAwNmM5NjhlYjRiNDAzYzI4NTUzMjUwZDI0MTJjMWQ2YzQyNzBmZmRlIHB5M2sKKzc3Mjg0IDdiY2U3MjZlYzQ0MGIxNmRjMWU5OGUwOTUyZWY5NDdlNDg0OGMzMTEgbGVnYWN5LXRydW5rCis3NzI4NSAzOTExNTI0YWZjMmQ2ZjFmZTgyMjZmNGZmZjAyMzY1Y2QzNWE2MTQ3IHB5M2sKKzc3Mjg2IGM3MjY1MjE0NWIyMzVkNzM3MmM4OGNjZTMwYTczYTEzNzhiOWJjMTkgbGVnYWN5LXRydW5rCis3NzI4NyBlY2M4YTQ1ODk0Yzk0MWZhMmFmMWM2YjYyNGE4MDY5NTNmYThmMzljIHB5M2sKKzc3Mjg4IGM4NTdiNTY2OTliNTcyZDZhYjY4YmQ4ZDViNDI2MGM3ZDU4OGE1NGUgbGVnYWN5LXRydW5rCis3NzI4OSBjNTgwMmFiOWUzNGU3MTU0ZjRjZDUwYjY3NTRiZDBhN2JmMWZjYWJmIHB5M2sKKzc3MjkwIGZjODMzZWRiYTc2OTlmYmJjY2VhZDhmYjg0NTVmNTUzNGY0Y2Q1ZWUgbGVnYWN5LXRydW5rCis3NzI5MSAyY2JkYWIyNDk4NTg5NzBkODQyM2I4Yjc5MjQ3ZjFjNTk2MmIzMTFlIHB5M2sKKzc3MjkyIDRiYzI2YTgwZTczN2VhM2QzZDU1NmJlOTM2NjQ0OThmZjViNjU2NmMgbGVnYWN5LXRydW5rCis3NzI5MyBmN2UwOWJhMGNiNTVhM2YzYjk2MjI5Y2JiMzEyY2IyZmUxNTVjYmY1IGxlZ2FjeS10cnVuaworNzcyOTQgNjA0OWZlNDAyMmZmYTQ2N2MwZjA1NDY4MWE3ZjYzMWFiMzVjY2UwMyBweTNrCis3NzI5NSBkMzk5ZjZkYzllZTQ4MzlmM2VkMzczNGZkODYwMDM2ZjEzMTI3ZWRiIHB5M2sKKzc3Mjk2IDBmZjJkYWE4M2QwZDdkNTNlYjM5ZDdlZWQyY2I3YjQ2NWVkZWJiOTcgcHkzaworNzcyOTcgZWZiYWM3ZDNhMzY4NTA0NGZiNWMyZDg3Mzk5OTYyOWUyNzU1OTUxZiBweTNrCis3NzI5OCAwZmNlZjlkMzk1OTQwMWIxODRhZGMyYTkxMmEyMWI2Zjk2ODE4Y2I1IGxlZ2FjeS10cnVuaworNzcyOTkgNTljNDcxNDE4NzE4NWYwOTFkODA4MTU3MDgzNjY3ZjcxM2MwZWNkNSBweTNrCis3NzMwMCAyZjY3NjI1ODg2ZjYwMDM1NTdlYjdmOWE4ZDQ4MTk2ZTQ3OTY3YmZmIHB5M2sKKzc3MzAxIGQ1NzI5MWY1ZTY2ODExYzFiMTk5NTQwNjEyY2NmZjkzMjk4NjY3ODggcmVsZWFzZTMxLW1haW50Cis3NzMwMiA4Y2EzNzc4NTMzMjFlM2VkNmE3MTQxY2JiZjU3NzNkMmVmN2FkYmVkIGxlZ2FjeS10cnVuaworNzczMDMgNGZiOGVhZjE0ZjA5Y2IxOWY3Zjc5NDUzMjQ1ZmFlZGNmODk5YTU5NiByZWxlYXNlMjYtbWFpbnQKKzc3MzA0IGUxZjEzMTNjZTZkYTE4ZjcyZjkwNDBlNWU2OTY2ZjI4NThmNDE5MDkgcHkzaworNzczMDUgNzBmNmZhMzA4NGU2N2RkODgyODg2N2MwNjY0MjEwY2JlMTQ3NDQ1MiByZWxlYXNlMzEtbWFpbnQKKzc3MzA2IGFmZjVkZTVjYzQ0MTBmZDhkMTJlZmFiYTY3OTE1YTI2MTk2YmE0NzIgbGVnYWN5LXRydW5rCis3NzMwNyAwZmUyNWUwN2I3N2IzY2NhZDFiMzc5YmRiZjhkNTNlZGQ2YzEzNTM2IHJlbGVhc2UyNi1tYWludAorNzczMDggMzE3NTJjYTAwN2NmMmYzZTQwYjUzYzJmMDdjZmZjMDIxMWIwMWIwMCBweTNrCis3NzMwOSBmYTJiMjdmYTU0MTllODFmOWZjNTRkZDhkNDBlZGNlOWQ1ZjFjMjJiIHJlbGVhc2UzMS1tYWludAorNzczMTAgNDQyZTE3MGI1NmMzZjdmNDlmZGFlZjMwYTExOWFkYzk1NmEzNDA3MiBsZWdhY3ktdHJ1bmsKKzc3MzExIGU2MjJiMmNmZWYxMmQ2ZmYxOTM4NjVkYTRiOWJkM2ZiZDRlY2JlMDIgbGVnYWN5LXRydW5rCis3NzMxMiA3NzY2NDdlM2ZiMDdkZDI0YzRiOGNmOWJkMzkzZDI5MTNmZTQ0M2Y2IHB5M2sKKzc3MzEzIGIwNTc0M2NlNWU5NDMyZmY1Njc1OTMwYTNhZWZjN2JiOWMyNmY5N2MgbGVnYWN5LXRydW5rCis3NzMxNCA0YWFiMDI5NTRkZTFkOWRjZGQ0MjE0MTAyNjZlMjdmODUzYTU0ZDc3IHB5M2sKKzc3MzE1IDIyZTBmYzIwZTkxMTMzZDg3M2NlODVkOGVhZDI2ZmYzODJjMjNiMjEgcmVsZWFzZTMxLW1haW50Cis3NzMxNiAyY2RiYTUxNjdkZjFhMTU1ODg0NTQ4NjU1MmI1ZGIzN2I4MWIzYmM4IHB5M2sKKzc3MzE3IGEyZDZkMzQ1NDcwZTk0YTM4MDY4NWFiMDU3Y2UyYWRlMTU5MDhiNzggbGVnYWN5LXRydW5rCis3NzMxOSAzZWNlZWYzNzgwNjVhNTVhOTdkNmIyZDIyZDVjNjc1Y2I4MGEzYjEwIHJlbGVhc2UyNi1tYWludAorNzczMjIgZjlkMmMzNDI2ZTE0OGM1MTE1YTMzMjg2ZmZhM2EwMTZhNWRmNzMzYyBweTNrLWNkZWNpbWFsCis3NzMyMyBkNmJhMzdlMzI3NzYzNzA2N2RkODJhNThjZDU3MWZhNDFkZDUyNTg1IHB5M2stY2RlY2ltYWwKKzc3MzI0IDg4MmM5ZTcxMWEyZDA1OTNmNGNiZDVmZDNjMDk2NTA4NDExNmNlZjQgbGVnYWN5LXRydW5rCis3NzMyNSA4NmJmNDQwYmY5YmYzNTdhY2RjYjQzMDc2M2QxZGNlN2VmN2JkMzcwIHJlbGVhc2UyNi1tYWludAorNzczMjYgNjEzYjk4ZDBkODhiZTAyZjdkNTQ3ZTIwODIzZGUzODQ1MmFlODAxNCBweTNrCis3NzMyNyAwN2E3NDlmMDY2YTExNzFmMzViMzY0ZTgyMmZkMjhjOTNlNDRmMTEzIHJlbGVhc2UzMS1tYWludAorNzczMjggYTE5MDE3MTFiMjI1YjQwMzliY2E4ZWYxNTk3YWUyYmRlYTg3YTkzYyBweTNrLWNkZWNpbWFsCis3NzMyOSAzMDcwNjZmMDJhYzUyYTQyMzNkN2I3OThiZTUyNTFlMDE3YmZhNTljIHB5M2stY2RlY2ltYWwKKzc3MzMxIGY1NjBhODE3YmZjYjUxMjUyMDQ2Mjg1OTY2MzcwOGViYWM0NmY0M2QgbGVnYWN5LXRydW5rCis3NzMzMiA4ZTgyZGQ1NTIyZjAzOWM3OGY4NmMwMTYxZGZmMzM5M2Y5Zjg2ODZiIGxlZ2FjeS10cnVuaworNzczMzMgYThmYmYyOTRkMjJlNWM1ZmQ5ODRmNWQxY2M2ODIzYTZjNGJkNjA5NiBsZWdhY3ktdHJ1bmsKKzc3MzM0IDk5ZTdjMWI4YjFlMWVlMTk4Mzk3YjIzZTRjYzAxMTYyMjM3MTY2ZTMgcmVsZWFzZTI2LW1haW50Cis3NzMzNSBiM2JiOGIzZTVlNGViYTVlNjhhYTIyOWNmOWUzNWQyM2VhNzZhYzQyIHJlbGVhc2UzMS1tYWludAorNzczMzYgMGZhOWVlNGVhYjg4NzQzZjU4MDIwZTM5MjY2ODI5NGQ0Y2UzYTgwYyByZWxlYXNlMjYtbWFpbnQKKzc3MzM3IDZhZDUzZjY3MDU2YTg0MjA3NDdiYzFhOWEyZjlkMmQxYzljNDU5NzUgbGVnYWN5LXRydW5rCis3NzMzOCAyNWMxZTU3Y2ExYjNlMTg5N2Q4ZmMzYTJmYjc4NmM3ZmNiYTk0YmM5IGxlZ2FjeS10cnVuaworNzczMzkgNjE0NGNkNGQ0MjFiYTMyNmRjYWFhODRmYTZjYjI1YzE0YzVhY2YyOSBsZWdhY3ktdHJ1bmsKKzc3MzQwIGM2MTgxMzdmM2ZkM2I3ZDQ5NWIxOWQ5OWYxNDIxMWMyYjdkZThkOTUgcmVsZWFzZTI2LW1haW50Cis3NzM0MSA3YjEyNTQ1NzM2NTY0YmM5OTcwNzU2MzgyOWFjMDViZjhhMDg5Y2YxIHB5M2sKKzc3MzQyIDg3MTYxMDY5ZWVmMjNmY2VlMjdhNWFlM2M0ZjY3MTgwZGUxNzE0YzcgcHkzay1jZGVjaW1hbAorNzczNDQgMzE1YjU4Y2IxM2E2MzdjOWRmNTEwYTY3YTRiOWNmN2E5NjMyZGFhMyBweTNrLWNkZWNpbWFsCis3NzM0NSBkODhlM2Y1OThhYTQxMmNmM2MzZDdiNzc4MzUwZGI4YTcyZGQwOWY2IHB5M2stY2RlY2ltYWwKKzc3MzQ2IGRlNzNiODU4ZGUxMWQyMTM5Y2M0ZjY0ZmRkY2E0ODZhZDIxNmZiYjQgcHkzay1jZGVjaW1hbAorNzczNDcgZmU1ZWM5OGRlOWRhMWU3MzA5ZGY1NDA3YjcxMjAyZDViMWY5ODA2ZCBweTNrLWNkZWNpbWFsCis3NzM0OCBiODI2OTQxMDcxNTFjMjhhNWUxY2M0MDZkODE3MGUwODQ4ODViY2M1IHB5M2stY2RlY2ltYWwKKzc3MzQ5IDIyNDU4ODRjODZlNjE1NzFiZDI3ZGI3MDgzYzBmNThjOTg2MjA5OWQgcHkzay1jZGVjaW1hbAorNzczNTAgZTEzZDA3MjQzYzczYTBjODJjMDhhZGIwMWQ0ZDg2Zjk2NWE1OTk4NCBweTNrLWNkZWNpbWFsCis3NzM1MSA3NDBhNzg3ZGM1OWEwYjIzZjRjY2Q2ZjZmY2I2MWVjNmM5ZjcxYmQzIHB5M2stY2RlY2ltYWwKKzc3MzUyIDE1OTA0ZDViOThkYjQ3NjAwYTViODk5M2RlZmE5N2QwMWFmMjQxNTIgbGVnYWN5LXRydW5rCis3NzM1MyAyMmEzMjkyY2Y2NzIyYzdkMGVkZjQ0ZWFmZDVhYjgzNGYyZTM2NjEwIGxlZ2FjeS10cnVuaworNzczNTQgZTBiN2U4MWFjZjZmMzMyNWM5NzE5Njg5MmI5NDY5NzA4YjY1ODI5OSBsZWdhY3ktdHJ1bmsKKzc3MzU1IDg5MDNlYTZhOWU2NDc5MTU2NzQ1NWE0ZmFhYWY0ZWFiMzBjOTFlMmYgcHkzaworNzczNTYgZDM5NDIwYTI3ZTY0NjA4YzYwNzc2OTVmMTQyYjFkNmEyZGEwNWRhOSByZWxlYXNlMzEtbWFpbnQKKzc3MzU3IGFmZTZkZGU4MGFiYjM5ZDYxODY0YmFhMDc0ZjUwODVjZDIwNGM3YTMgcmVsZWFzZTI2LW1haW50Cis3NzM1OCA1MThhY2IxMmYzNTdlYmEwMGRkYWMxZTg5YTYxY2Y4NGNlZmVmNzk1IHB5M2stY2RlY2ltYWwKKzc3MzU5IGE2NGNmZWYxZGEwNzUzN2YzNjcxNGZlMzFkMGRmYjQyMTExNWE4ZTQgbGVnYWN5LXRydW5rCis3NzM2MCBmMjFmMmM5MzMyOWViMDg3ODg4ZDU4ZWZlYmY0YzlkNjJiOWNiZmE3IGxlZ2FjeS10cnVuaworNzczNjIgMTBiNjY3OGY1YzA0YjNiNjA1YjU0OGZlYmJmNjhhYTY2N2RjZmE0MSBsZWdhY3ktdHJ1bmsKKzc3MzYzIDM1ZmUyMDY5YWIxZDllYTg0ZmRhOGM3ZDUyMDUzYmY2ZDc5MzZhZmEgcHkzaworNzczNjQgNTllMWIwMzA2YzBlODZiNGNkZjRjNzg1OTRlYmEyMGE1YjU5ODczNCByZWxlYXNlMjYtbWFpbnQKKzc3MzY1IDg0Y2FhYzcxZDc5YmQzZTllZTdlNzRlNWNjYmI4YTNjOGQ1MTJkYjIgcHkzaworNzczNjYgYjBlZDM1Yzk5ZGM2ZDlhMDNmMmQxYjIzOTNjMDJlMTcxZTBlMjYxNyByZWxlYXNlMzEtbWFpbnQKKzc3MzY3IDdhNjc1MTViZjhlMzA4YjY4NGYwOGJlZjgwNzU1NmMzOTc3MTM1M2UgcmVsZWFzZTI2LW1haW50Cis3NzM2OCA3Y2FmNTRjZTUyOWU3ZDIxYjNjYzRmNGViMDEyZmQ0OWJmZjMzNmNmIGxlZ2FjeS10cnVuaworNzczNjkgMGRkMWFhMzMyNjVmMzhjMjQ2NmRjNzVmOWIyMDcxYTJmZGZiN2Q1NiBsZWdhY3ktdHJ1bmsKKzc3MzcwIDllOGQ3NzUwZTQ3MGI4ZTAyOTdhODA5NmM3N2U1MTFmYWVlNDkxYzggbGVnYWN5LXRydW5rCis3NzM3MSBiYjcyNzAzMDAwNDdmNDQzODY1MThlYzNhNWMxNjNiNmViMDNkZGUwIGxlZ2FjeS10cnVuaworNzczNzIgMGM3ZWFkMDM0YTAzYTkyZWQ1ZDVkNzc5YjI2OGY1MzJkNGZmOWVlMiByZWxlYXNlMjYtbWFpbnQKKzc3MzczIGRhM2ZkN2E3NzlhY2QyNzgwN2RmYjQ5NGM1ZWNmMmY4MjhhNDY4ZWYgcHkzaworNzczNzQgZjNmZTU3OWU4ZjE0N2FmMTU5M2IyOTYwNDMxM2EwZmFhMjExOGI3YyBsZWdhY3ktdHJ1bmsKKzc3Mzc1IGY1Y2ViZjExZDVlMDg5NTE4MjgwN2Y4ZDgwOTdiOGVjZDUyOTM5ZTAgcHkzaworNzczNzYgYWM0OTMxYWIwMzY5ZTYzZGRlMGJmZmVkMmUxNWVkNzMwMWM0Nzc5MiByZWxlYXNlMjYtbWFpbnQKKzc3Mzc3IDYxNTAyNzEwZmNlOWYzNjkzNGU5NzEwMTdjNWNhMDM1M2UxOTBiOWYgbGVnYWN5LXRydW5rCis3NzM3OCAxYmRhMWY2Yjg1ZDRhZTBhYzk3OWQ0YjA3MDllNTNkY2ZlYzYyMmRjIHJlbGVhc2UyNi1tYWludAorNzczNzkgZDg0NjgyMDhlODgyNDYwOWU0ZDQ4ODBkNjM2YTFhY2E2NDE1ODIyNCByZWxlYXNlMjYtbWFpbnQKKzc3MzgwIGExZmI1NzU1MzFiMTAzNGI4ODY1MjI1ZTg4M2IxMTI3ODc4NTQ1OGEgcHkzaworNzczODEgYjc3NDk1Yzc3YWU0MDdhMmUxNDRlNjI5YzM5ZjU1NGRkNDEzNTg2YiByZWxlYXNlMzEtbWFpbnQKKzc3MzgyIGFlZTVhMWYzMmIwMGJmNjAxZjVjNjJiZTZjYTY0ZTdiN2M1YjRkODggbGVnYWN5LXRydW5rCis3NzM4MyA0NDFiZmNkNTVmMmQ5YjdhMzRiOWRiNzdkNTVlMzM2OTRlYjc1ZDAxIHB5M2sKKzc3Mzg0IGFkYzg1ZWJjNzI3MWNjMjJlMjRlODE2NzgyYmIyYjhkN2ZhM2E2YjMgbGVnYWN5LXRydW5rCis3NzM4NSBiMzg2ZTUzZGY5MDY5MmM2YTI2YTllM2I1NzBjNDJjZWZhOWVmMTMxIGxlZ2FjeS10cnVuaworNzczODYgZTU3Y2ZjNTI2NjU2ZjY2ZDNmYzNlYTBiYTdjOTIyNzZjNGRmOWJjNSBsZWdhY3ktdHJ1bmsKKzc3Mzg3IDVhYjJiYzJmNmRiODE1ZWU1MTQ0Zjg4ODg0ZGY5ZjQwNWQ1YTFhYjIgcHkzaworNzczODggYWYxZWQxOTcxN2VmMzljOTMyMjcwYjJmYmQ0ODM0MGQwNDI1NmI0NSBweTNrCis3NzM4OSA4OWE5ZGQ4YzYyOGQ0YzA1NDFjMTk4ODFiMDVkMjM2NDI4NGU2YTMzIHB5M2sKKzc3MzkwIGFhZGZjMzFiM2YxNDFmMzg5ZmVlNGM1ZWZhY2UzNWVmMGE3NDkwZjIgcmVsZWFzZTMxLW1haW50Cis3NzM5MSA0Njc1ZjExZmIxMjVkNjllOTBiYmY4YjQxNDg1NjYzNzYyZmIzNWI4IGxlZ2FjeS10cnVuaworNzczOTIgYjQwN2U4YmVjYTRhNDdlNDBiYTRhYTZmYTQyMDFiZDJkZmQ2ZGNkOSByZWxlYXNlMjYtbWFpbnQKKzc3MzkzIGYyZDU0MDk2ZGM4YzI4MzkzOTA4MWM2YWE4MGRkZTZmYjRmOGQ4M2IgcHkzaworNzczOTQgZjljMGM0MTFmODBjY2QxNjYyOGJlNDBkMTc5Y2M5ZTk2NTU1Mjg1NiBweTNrCis3NzM5NSBhYjg4ZGFhNGQyY2UyYzFmM2RkNjRmZDBjNDA5N2VjZWYwMWNhNzM2IHB5M2sKKzc3Mzk2IGE3YWIxYWJkZWI5MjBhNTRjNzM5OThjNzc2ZDgxZDllZjJlNjI2ZGEgcHkzaworNzczOTcgYzFiZWMyZGIxZmNkNzM1ZTcwMmFmY2QzZjU1ZmJmMGIwZWY3OWUxYyByZWxlYXNlMzEtbWFpbnQKKzc3Mzk4IDdlMmFmNGU1NzAzOWZiYjY3MWI0YjZmOTcxNDIwYmJjMTNjNGZiNDQgcHkzaworNzczOTkgNjdmN2EwZTllMjMzMjQzOWM3MDMyYWM0ZjlmNDc1ZDY4ZWU2MmNmMyBweTNrCis3NzQwMCBjMmZkZjI1MzI5ZmYzMGNmOGQ2OGMwYzBlN2NmNDc5ZDdiMjAzNzQ1IGxlZ2FjeS10cnVuaworNzc0MDEgMmNmZjNiY2U0MDk2NzI4Mzc4YjAxYTc3Mzg5MjRkOTZkM2ZlYTU2MCBsZWdhY3ktdHJ1bmsKKzc3NDAyIDFmMTc3ODE4ZjFkMGE3MzRmYzYxNDIyYzNiZjIyODlhMjQ4NjY1MTMgbGVnYWN5LXRydW5rCis3NzQwMyA3NTUwYjRiOTA1YzcwN2NmZGJmNDdmYjY1ZDUzMDg2YTdkMDQ4OTJhIGxlZ2FjeS10cnVuaworNzc0MDQgM2ZhNjcwN2RmOThjYzA0YzkyNDYyZjkyOTYyMzU0MTQ3Y2Q1Zjg0ZiByZWxlYXNlMjYtbWFpbnQKKzc3NDA1IDc4YzNlYjVjMDVmYjI4NjMzNTViOTgwMTUzOTVmYjY2OTQxYmYwNmIgcHkzaworNzc0MDYgZTdmYTM5NTk5MzU1NDFhOWNiMWM1MmUyYmJmYWViMzE5MWY0ZmJiYiByZWxlYXNlMzEtbWFpbnQKKzc3NDA3IDMzOThhOGI3NDMzZDA2MjZlNzYwZjlmZWE4YTFhYjc3YzA3YWM0MDMgcHkzaworNzc0MDggNDA1YzliNjM5ZTA1NTE3ODM5N2Y0YTJjNjY0Y2RiNTc3N2RiM2VkMSBweTNrCis3NzQwOSBmYmY0OTg3ZTUxNGEyNzI4M2YxOTJjZjc1NjU0OWQ2MGM0N2FkOTczIHJlbGVhc2UzMS1tYWludAorNzc0MTAgM2UxNzEyMjIxZmE2ODY3ZjVkYmUzMTMxMzBkOGViNGMwOTExNGVlZSBsZWdhY3ktdHJ1bmsKKzc3NDExIGE2NjY2NzcwNGFiMGU2ZTgxZmM2OWM5NGIwMjRiMmNhODhlMTBiMmEgbGVnYWN5LXRydW5rCis3NzQxMiA5N2E0MDQxNzllNTlkNDhlODBkMTJiOTExZjk2MzY3YWJkY2Y5NzJhIGxlZ2FjeS10cnVuaworNzc0MTMgMjU0MjU1N2ExMmJkNzBjZDI3Y2ViZjI2NDJlZDgwMDJiNTJkNWEzNiByZWxlYXNlMjYtbWFpbnQKKzc3NDE0IDcxZjI0OTFkOGYyZjRhNTdhODMwNTE2YmZjYzRhYWU4Mjc3MWUxOGYgcHkzaworNzc0MTUgNjhmYTk1M2I1ZTc2YjE0MWZkNzU3NWZmMmZhM2U1ZDViYmUyZjBlZCByZWxlYXNlMzEtbWFpbnQKKzc3NDE2IGNjMzJkNTdlMDZiMDQxNzYxYmFiYzU5YzkyMGFlZTMzNjc5NjU5YjkgcmVsZWFzZTI2LW1haW50Cis3NzQxNyBmMDAxMDllMTZlYWI5MDgzMDBmZThmZTkwM2YyMGM5ZDQzOGZkM2M2IHB5M2sKKzc3NDE4IGRkMzFiMWMwMzNiMmIwYWFiMDI3MGVhOWNmNGU5MWQ4NjVmNzljYzUgcmVsZWFzZTMxLW1haW50Cis3NzQyMCBkY2U3NGE4NzMwZjU3Y2ViYzA3M2U0NDVhYmRlMjIzZWMwYjdjY2I3IGxlZ2FjeS10cnVuaworNzc0MjEgMzNlNDAyOTA5Y2YyOWJhMGVmM2QxODMxNTkzOTdiZWExNmQzZjkwYSBsZWdhY3ktdHJ1bmsKKzc3NDIyIGVkZmVkMGUzMmNlZGYzYjg0YzZlOTk5MDUyNDg2YTc1MGEzZjViZWUgbGVnYWN5LXRydW5rCis3NzQyMyA4YTVhYzlmZjUwNTdmMGU2NmY2NTY4NWM0ZWU1MzYyNzVkYjk1MWMzIGxlZ2FjeS10cnVuaworNzc0MjQgMmY5MzZiNzgzMWI2N2NmZTdjZmQ3MDQ4ODVjM2NkNWYzYjUzOTI5NSBsZWdhY3ktdHJ1bmsKKzc3NDI1IDhhMzIwNjk0ZTUzYjVmYzc5NTY2NWU2MzI2MGMyYzEwN2NjZmZmMjggcmVsZWFzZTI2LW1haW50Cis3NzQyNiAwNWZiNzFmMDI1M2Q4ZGEyMmE1M2RiNGJmOTA3MDZmNzJmMDI3YjE2IGxlZ2FjeS10cnVuaworNzc0MjcgOGY1Y2QzZWI3YzczNGNmNjZlZmM1ZTZmODBlMGU0Njg2NzBkN2U5MyBweTNrCis3NzQyOCBkOTgwNWE5NjM1MWMwNjAxYWFkZjAzMzhlMDAyNjk1MGI0MmVlZDE5IGxlZ2FjeS10cnVuaworNzc0MjkgYjRjZTBjOGIwYmNmZmU4OWU0ZTIyODM3M2NjYzM2NjE5NGFmY2U0YiBweTNrCis3NzQzMCA5Yzg1MmEzMWU4N2NlMDFmNmZjMDJhOWUwY2E1ZTg2N2ZlM2NjMmM1IHJlbGVhc2UzMS1tYWludAorNzc0MzEgM2VlYzJlOWQ2NDkzZjU1YTBkMmY5MjJhZDM2N2UyMjkxNmQ4NjE2MSBsZWdhY3ktdHJ1bmsKKzc3NDMyIDIzNWM4MjY0MzQ3NGM4OTczMDBkMzQ4NTgwYWUzZjI0OTk5MGZhYzUgcmVsZWFzZTI2LW1haW50Cis3NzQzMyAzMmVhYjQ0M2E5NmIxMzUxZDBmNGIxOWI1MjdhNjJhZDYwZTI1NzJkIHB5M2sKKzc3NDM0IDNlYjI5YWM3YjIwYTY0YzkxY2M3NDUyN2UwMzliZGFlNWFjZjg5NGYgcmVsZWFzZTMxLW1haW50Cis3NzQzNiBmMjM1OGQzM2YxMDlkZGRkNWRmODMzOTkyYWUyMzBlYzFmMjUyNjFiIHJlbGVhc2UyNi1tYWludAorNzc0MzcgZWZhNTg2N2Q4YTE0ZDE5Y2I5M2Q3ZjM1NDE2OWMzN2NmYzFlOGRlNCBweTNrCis3NzQzOCBlMzBmY2I5NTZiNWZjZjIyYjFkYjYwY2RmZmNjNzE2NzBlOTJlMmFlIGxlZ2FjeS10cnVuaworNzc0MzkgNDFjZWE2NmEyNDI2YTU0NjBlMTUxZTIxMDc1OWVkMDY3NGNhZTMwYyByZWxlYXNlMjYtbWFpbnQKKzc3NDQwIDlmOTBkYjI3NjBkOWI4MWViYTE3YzIyMzhiODY2M2YyN2NkYjZkOTEgcHkzaworNzc0NDEgZDA4ZDg2ZWFkMzc1YTIyZGJiODMwMjAxMTZiMGQwZDA0ZmNhY2RiNiBweTNrCis3NzQ0MiA4ZmQxMmVhNjNjNmFjNmUyZDVkNjM5NzQwMWE4Y2UzYTc3ODQ1ZDc4IGxlZ2FjeS10cnVuaworNzc0NDMgMmY1NGY3ZTljMmIxOWI2MmI1OTU0NGM0NDE0ZTdiYTlmZjI5ODZmYyByZWxlYXNlMjYtbWFpbnQKKzc3NDQ0IDdjZTIyNThkZWU4YTU4OWM2NDYyOGM2NmEwMjE1MjcxNjU1MGZkY2MgcHkzaworNzc0NDUgN2Q3YjU3NjViNDZmN2M0ZTEyMjEyNjBkMGRmNDk5NDE2ZDM1NGI4YSBsZWdhY3ktdHJ1bmsKKzc3NDQ2IDFjY2E4ZDhmOWVlNTBlNmJjNjY2YmY2YTQwMDczZGVlNWJlZmY2MWYgcmVsZWFzZTI2LW1haW50Cis3NzQ0NyBjNWRiZWZiYzkzMjEyY2I3NWUyZTg5YWE0ODAxNWYzMWY2YTQxYmUxIHB5M2sKKzc3NDQ4IDIzZjIxZjQ4MjI5NDg1NWVhYjlhYmQ3YzZmMGFlMTE1MzNhY2FkNzcgbGVnYWN5LXRydW5rCis3NzQ0OSBiNzY0OTczM2EzNTQ1ZTQxYWM4MWJmZDc0MDJkNTM0NmQ2ZDI1OGE4IHB5M2sKKzc3NDUwIDJhOWY2NmRmNGRjNDY3OTM2M2Y1ZDMzNTlhMzU5NWZhYjgwN2VmMTQgbGVnYWN5LXRydW5rCis3NzQ1MSBiNGYzMDFjZWExMTU2YTRjYmY5ZThjNjA2OGUxMTIxYjM3YjU0OTI4IGxlZ2FjeS10cnVuaworNzc0NTIgYzMyZDNiMDhmY2RjMTU1OTg3NmI2YmJiMzAwNDMzNjc2NjUwODM5YyBweTNrCis3NzQ1MyBiZTMyZjYxMTE4M2I5MDNmNDY1MzdkNjU0MTJkYTkxNGU5Y2Q1NGJmIHJlbGVhc2UzMS1tYWludAorNzc0NTQgZjVmZDAxYmE0N2JlMGI3ZTg4MjI5NDU0NDJkMTZiZGMyNjcyODU1YyByZWxlYXNlMjYtbWFpbnQKKzc3NDU1IGI4MGQyOTYyOTc4YzhjZjE5ZDJlNWJkNmM1OWZlYjBmM2VkYWI1YmEgbGVnYWN5LXRydW5rCis3NzQ1NiAyYTljZmUyY2U1OWI0MGJjOTk5NzYzYzBmNWZiZTBlOTVmYTRhZTIxIHJlbGVhc2UyNi1tYWludAorNzc0NTcgNjYyZGZmYzFiMzRkM2Y2MGQ1ZjYxNjA3OTdkZWUwNTQzYzE4NDg4ZSBweTNrCis3NzQ1OCA3YjVmNWFmNGY1YWNiMmRlZmNhOGVlMzcxMDc2Yjg1ZjNmZWIwNTAwIHJlbGVhc2UzMS1tYWludAorNzc0NTkgYTZiZjY4ZTZlODI0Yzc5MDE4NmEyODY0NWI1NzRhNDNmMDBjNDhiZiBweTNrCis3NzQ2MCAzYzBhNDMzYjI2ZTFmY2ExZjQ4NWQ2MDY5YTRhNzQwNjRjODUwNmRlIHJlbGVhc2UzMS1tYWludAorNzc0NjEgNjZmMWQ0YTRjNzk5NGY5M2IyYjQxMmI1Nzc5N2JkNTA4Nzk5Y2FhMSBsZWdhY3ktdHJ1bmsKKzc3NDYyIDVjYTE5NDhhOGZkNjkzMjIyZTQ3NWQwYmU5ZGJiNDU5NjRlZTlmM2UgcHkzaworNzc0NjMgZDUxMzU4NjQ1ZTYwNjM3NTk5MzE2MTgwMTRmMDM2ZmYzY2QxZmNlNiBsZWdhY3ktdHJ1bmsKKzc3NDY0IDg1MzdjMzczNmU5OTY3N2VjNWIyNDc1ZmYyMTk1ZTJhZDJlNDI0NGQgcHkzaworNzc0NjUgZDFmZDBhMzRiYjM2ODI5MDAwNWZlNjU2MzRlNWM4OTdiZjJjYjY2ZSBweTNrCis3NzQ2NiBiYWQxYWUzZmQwNjA3M2EyOWZkMmM0ZmNlYzc4OTVlZTgyZGZhNjM2IGxlZ2FjeS10cnVuaworNzc0NjcgMzEyNTBjMzQ4MzNhNDQyMmZhYTdhMDc5MmY5NGJhMmMzNzE4MjZhMiBsZWdhY3ktdHJ1bmsKKzc3NDY4IDE1YjA2NjhmMGRjNTk3ZmU2NGQxYTJlNGE5MDI3NDE5OTkwMGM1YTEgcHkzaworNzc0NjkgNjIyZjc5YmJhNTIzMWE4M2M2ZThjMGJmODkwMDg0YjNkMjFiYmY4MSBsZWdhY3ktdHJ1bmsKKzc3NDcwIDkyMjVlYTY3N2M0YjI3MTM3OTAwMWM0OTdjMDE3OTI3MTUwNmQzYmUgbGVnYWN5LXRydW5rCis3NzQ3MSBlNWU1NWZmZTlmNzM4YjA4ZDNlODE5NmIyMmY0Y2ZlYWIyNWJhMWY5IHB5M2sKKzc3NDcyIGIyMWVmYzBjZmU4YmJlNTUyMDk3ODI4MDc0ODNhNTI4NzgxOTRiMDcgbGVnYWN5LXRydW5rCis3NzQ3MyA4ZTI3ZDNiOGQyZWM0NTk2OGYwYWQ2YzA3YjZjYTM0NTdkYTJkMTdjIGxlZ2FjeS10cnVuaworNzc0NzQgYWI5MDVmNzRiZjExN2ExYTY4ZDA3ZTg1YjYyMDBiN2JhYTEwNTQxNyBweTNrCis3NzQ3NSBjNWI2YTViODNhYjVkYzY3MjcwNzNmMWEyMDg2NzgwYmU0NGNiZTk2IGxlZ2FjeS10cnVuaworNzc0NzYgOWZjN2YyOTdkMTMyYjlhNWExMjkzMWUxYWI3NTExZjJjMWU0NjlmYyBweTNrCis3NzQ3NyA1NzEwMjI4M2FiNWVjZjU1MzM5ZDBmOGE5MjY4ZGZjYjY4MDVjZGY3IGxlZ2FjeS10cnVuaworNzc0NzggYzVhMGE1ZDZhY2IwN2JhOWMyMzg2MDRiMjM4YWNhYzhmMzVlNDBmMCBsZWdhY3ktdHJ1bmsKKzc3NDc5IDRmNGYwMDFjODFmNTU5ZTM0ZmFlY2QwMTk1N2M5Y2I4OGIyZGJkMDIgcHkzaworNzc0ODAgNDc4YWJjN2JjYWFhZGNhMzM2MzMzNmYzOGYyYmY2ODA3NDhiNTlkNCByZWxlYXNlMzEtbWFpbnQKKzc3NDgxIDBmOTc0YmIyMzhlZGFhM2YxYzJkMWViZmZjNGRlNDA1YTRiZGZjYWQgbGVnYWN5LXRydW5rCis3NzQ4MiBjN2YzM2Q1MjE2ZjljNDBjMjJhMDE5N2NkZDg4OTk1ZDA4NzUyMjg2IGxlZ2FjeS10cnVuaworNzc0ODMgYjM5YTAyMTlmNzI3ZTkzYjRkNjkxYzE3MjgzZGUyNWZiZDRjNGE3ZSBsZWdhY3ktdHJ1bmsKKzc3NDg0IDEwMzA2NzgwZTVjMGNmNWRkZjczNDVjZmNiNzJjMzE2Y2I4ZmU0ODggbGVnYWN5LXRydW5rCis3NzQ4NSAyMDFiNDYxYTEyYmRmYjFjODJkYzcwMDEwNDRkMGRmNTBhMjY1MDgyIHB5M2sKKzc3NDg2IGU4Zjg0NjFkNmQxZGY1MWYxNjhmOWFiYWQ0ZDIyOGM3ZDM5OTQzZTggbGVnYWN5LXRydW5rCis3NzQ4NyBjNDMwZTY2NGU2MDViZmUwZDYyZTI0MDRkZDI3MWZiYWFhMGUxY2U3IGxlZ2FjeS10cnVuaworNzc0ODggMDNmYTYxYTM3ZTJkNTJkMDAxYmU5MDcyNjZiNmE4YTM4MjY5ZGRlZSByZWxlYXNlMjYtbWFpbnQKKzc3NDkwIGFmMTgwOTgxM2RlOTZkNjQzMWYxYWE5ZTQ5ZWE3ZmM0NWZmMjM1NWMgbGVnYWN5LXRydW5rCis3NzQ5MSA3NmZiN2RiZDczODg0MjMyZTMwYWUxY2EwMDlhMTZjNGI4NjI1YmU5IGxlZ2FjeS10cnVuaworNzc0OTIgOTIzODRkN2Y0MjVhNTk4ZWRmZjI5MjgyMWE5NGU1MWI2YTY0ZjVkYiBsZWdhY3ktdHJ1bmsKKzc3NDkzIDE2ODJiOTYyZThkZWUxYzhmNTllYjk1MWRhZDI4ZGU2N2Q3ZWU0MWUgbGVnYWN5LXRydW5rCis3NzQ5NCBjZTExYzEyNzBiNjkwNmY5NDI4YTY1ZjkzYzMxNWE3ZmUwOGM3NGJjIHB5M2sKKzc3NDk1IGQ3NThlYjJjODI4ZTg2YTYyMThlY2IxZmMxNGVmYzZhOTFlOGJkZTAgcmVsZWFzZTI2LW1haW50Cis3NzQ5NiA5YmFiM2Q3YWI0ZjUxYjczZTk2NDY2NTFkNTExMDU0ZjMwN2E2NTEzIHJlbGVhc2UzMS1tYWludAorNzc0OTcgYjNmNTBkNmNiNjQwNmJhMmJjMzI5NjQyMmRhNDg2MTMyMDVmOTljYSBsZWdhY3ktdHJ1bmsKKzc3NDk4IGQxNDBmNDkwMWE0MjM4MDZlOWZhYmVlNzZmY2QwODc3Y2I1YmUxYTcgcHkzaworNzc0OTkgOWU3M2JlNWZhODBmODZjYzVjMDI5OTZhMjAwMjEwYjE1YTNjY2FlMyBsZWdhY3ktdHJ1bmsKKzc3NTAwIDM1NDY5ZTc5ZmY4MDQ2ZmUyYTEzYzgyZjYxOTkxZDZjZmU4MDRkZjYgcmVsZWFzZTI2LW1haW50Cis3NzUwMSBlYjg0ZjcyMTdjNjVkOTI3OGU0Y2YwYzY2MDFmY2I4NTg5MDgwZTZhIHB5M2sKKzc3NTAyIDgwNDEzYzE4MmEyOGI2ODAwZTczOTcxMjI1YjEyYTU3YTQzMGNmMzEgcmVsZWFzZTMxLW1haW50Cis3NzUwMyA2NTdmMTY1ODI5NDM3MzliOTA2ZjY2ZjdlZmFkNDAxNDQ5MmM4YjFjIHJlbGVhc2UyNS1tYWludAorNzc1MDQgYzc2ZDQxZTc0NGMyMzE5MDMwMDg5NTM2Y2JiZjVlNTViYTNiMTY2MyByZWxlYXNlMjUtbWFpbnQKKzc3NTA1IGQzYmVhMTY2OWYyZDg5M2YyOGQ3NTE3Y2M0ZGQyZDQ1NzU0MzdhMTAgbGVnYWN5LXRydW5rCis3NzUwNiBlZWYyZWJjMDgxZGVlMDA2ZjZlMzcxYmM5ODAyNWMwNzc0NTJlM2RlIGxlZ2FjeS10cnVuaworNzc1MDcgYmUwYmYwYmJkOTRhZmZlYzU0MTY0ZjA2NWNlNDJjM2U2ZWUyOGUzMSByZWxlYXNlMjYtbWFpbnQKKzc3NTA4IGIzMDQ4YTUyZTNjODVhYzgzMjM1YjdiOWQ1MTVmMTU0MmViMjIyMGEgcHkzaworNzc1MDkgM2FhZWYyZWRmZGIzNTVkZTU4YmRkMmUxMWU4NDgyMWZiY2IyYmJlMiByZWxlYXNlMzEtbWFpbnQKKzc3NTEwIDFmODRkZGFmYjZhMzkyYzRiMDAxMTM1NTZmZTA3ZDY5MmE3NzIxODAgbGVnYWN5LXRydW5rCis3NzUxMSA3ODYxMGI0OGMzOTZjMTY0ZjM1YTczNWYwNGQ1NjdkMTNmYjk1ZjI4IGxlZ2FjeS10cnVuaworNzc1MTIgZWYwZDA0ZGU0YTQzZjllMGM4NDBkNTAyMWM2YzZlZGNiZjIzNmFiYiByZWxlYXNlMjYtbWFpbnQKKzc3NTEzIDA4MmQwZWFmOGRkYWRjOWM3OTU4ZDhlZjA5YTc3NWJiMzI3NTYwNzIgbGVnYWN5LXRydW5rCis3NzUxNCA3NjA3NjY1OWIyMjQ5ZTA0NDE3ZmI4ZTk0MmFlMzkyZmU3NjJhMTc0IHJlbGVhc2UyNi1tYWludAorNzc1MTUgZjQ3ZDE5OWVlNjY5N2YwZjYwNDYzYmJiMGJkN2ZmZDI2NzMyNTFhNCBsZWdhY3ktdHJ1bmsKKzc3NTE2IDIwMDZmZDgxNmQyMjUyMDJjMDQ2YmJmYTYyODRhYmRhZmI1M2I2MDMgcHkzaworNzc1MTcgOTAwNjI0NWIxOWFmZjljZmZjMDAwMWE2MGY5ZjlhMGUyYTlkYmU0ZSBsZWdhY3ktdHJ1bmsKKzc3NTE4IDQyODhjNDBjODQ0MDc1YjNjZGUxN2Q4NGVhNzBkZmJjYmMzYzMzOTIgcmVsZWFzZTI2LW1haW50Cis3NzUxOSA1NjczZGMzYjY0MzJlNGM5MGM5ODViNTFlNGNhYjM4NGJiMDU1MWE1IGxlZ2FjeS10cnVuaworNzc1MjAgZWFmYWJhZDVlNjAxZWVkNTU1MTIwN2U5N2FmMWFiMGZhYjYwNTNlZiBweTNrCis3NzUyMSAxODlhNWFiYjIzMjNlMWNmMzVmOThiOTE1NGJiMjY4YjEwNGJiMTdhIHB5M2sKKzc3NTIyIDMyZDZhOTRjZDBmYTM5ZmU1ODhjYmM3Y2UxOWU5Yzk5OTUyZmRhNTAgcmVsZWFzZTMxLW1haW50Cis3NzUyMyBhMTZiMjRiMjVhYzMxYTdiZjg5NWJhN2JiODRiY2M5NmE5OTU1NzdkIHB5M2sKKzc3NTI0IDBmYWIzYzJkZDMxNGNmYWY4MzFiNmVjMTBiOWY4ODlmN2M4NDFmMTMgcmVsZWFzZTMxLW1haW50Cis3NzUyNSAyNjljMDk5MjFiYjJmYTQ3YmFlZDQxZjEwYWZkNDc5NTdlZDdlOTI5IGxlZ2FjeS10cnVuaworNzc1MjYgMDg5NTA0MGFkZWZmNTI2MmI0YTBlMWJiNTQ5MjRmMzM3NTgwNWQyOCByZWxlYXNlMjYtbWFpbnQKKzc3NTI3IGYyMjE4M2U2ODg1Yzk5NGM3YzY5OTJiZGVmOWU1NzY5ZDA1ZjM5NTEgcmVsZWFzZTI2LW1haW50Cis3NzUyOCAxMWFkNDJhNzg2YTIxMzk2NGZhMzZiOWQ1MTI1ZTIzNGQxNjQ3NDU2IGxlZ2FjeS10cnVuaworNzc1MjkgZDE0OTNjZDkxMzAwNmQ1M2FkMDY2NGU5ZmY4ZWJjMjhlYTBlMDdkYSBweTNrCis3NzUzMCA4ZTE3OWEwZmNiNWViOGI1NDQxOWIwZTY0YmRkNWFhZTNjMDBmYzMzIGxlZ2FjeS10cnVuaworNzc1MzIgY2EwMGFjYzljMzA0ZWI3YTlmZmE0ODVmNjE4OWUwYTg3OGIxMGMxOCByZWxlYXNlMjYtbWFpbnQKKzc3NTMzIDVjMzJmM2I2NWQyMTZmYjM0ZGQ3OTRhM2IwMTU3MGM0ZmE1M2Q0OGMgbGVnYWN5LXRydW5rCis3NzUzNCAxNzRiZGFiMDI0ZWI4MzUwMDM5NTE0MTdkYjIwMTVkMWY1NjVmMzU4IHJlbGVhc2UzMS1tYWludAorNzc1MzUgNjM1MWQzZDUzZGVkMzc4MGRkYmYzZWI0NmFlOTFlMDIzY2IzNjkwZiBweTNrCis3NzUzNyBkODFlNDg4NDZiNGViZjhhMmY4ZjIxNWIyNjQyZGI1NjcxNjI5NDIwIHJlbGVhc2UzMS1tYWludAorNzc1MzggMjlhMTQxMGNkN2RjODJjNTEwMDdiYTU5MjhiMWRiZjUwNzg0MzkyYiByZWxlYXNlMjYtbWFpbnQKKzc3NTM5IDFlYTdmYmQ5OTI5NDU0Mzg5NTUzY2MzMTQxOGZjMDE3YWE2ZTY4ZjYgcHkzaworNzc1NDIgYjVlZTQ3ODIxZjRiZDg3Y2NjMWJkOTczYzdmYzhiZjJkYjI2ZjY4NSBweTNrCis3NzU0MyBlZDhiMGVlMWM1MzExY2VmYWRkMTJiNmUzNTdmY2NlMjAzZDQxMjc3IHB5M2sKKzc3NTQ0IGE2Y2M0MjEyY2Q1N2UzMGQzNWExZGVlMDU5ZWI4MmJkYTk5ZDFkN2EgbGVnYWN5LXRydW5rCis3NzU0NiBhNGEzZTY4ODQ0NmU0ZWUyNTFiOGVhMmZhNjk5OTYzZDBmMDg2NWQyIHJlbGVhc2UzMS1tYWludAorNzc1NDcgZTM1M2Y1ZDc5ZjRjYzkzNGYyZjY4MTc3MThlZmQyMDNkMWEwNGIyOSByZWxlYXNlMjYtbWFpbnQKKzc3NTQ4IDgxYjMxNDUwNjFkOThjZWM0YzJmZmYyNGY4NDI5OGMxZDM3NTg1MjIgbGVnYWN5LXRydW5rCis3NzU0OSBmYjczYWEyNDUwMTRhYjk2NWVlMTY5ZDE2NWMzZWUzNWQ4YmQ0OTE5IHB5M2sKKzc3NTUwIDUzNjZkNTc1ZTJjZDFkMjRiYWFmM2Q5ZGYzYmJlYThkODhhODEzOTkgbGVnYWN5LXRydW5rCis3NzU1MSA2MGUwNjljNThhMzVkYzIyY2U4ZWIyYTUzYmY5NDYzMzFkM2QxOTkwIHB5M2sKKzc3NTUyIDdhZWNmYTQ0MzJkZjNhOGRlYWU5NjUxODcyYzAzYzhhZWYxMGE5NWUgcmVsZWFzZTMxLW1haW50Cis3NzU1NSA3MDdkOGNhNWVhMGIwMjNiMGIzZTUxZWNhNDk5M2RkZmFkOTQ5OWMxIHJlbGVhc2UyNi1tYWludAorNzc1NTcgOTNmYTEwYmVmMWUyMmZmOTU5YmY3MDhkYTc5OGQ3ZDRjNjEzZTRlMyByZWxlYXNlMzEtbWFpbnQKKzc3NTU5IDkyYTYyZGZmYTQwNDljYzc4NDAxMTQyZGExM2IxOThjYmZhN2Y2YzUgcmVsZWFzZTI2LW1haW50Cis3NzU2MSAzNWY3ZTIzMDk3ZDgzMGE2ZGNlZDdhNDBhZjJhODhhNDgzZTFlMWY5IGxlZ2FjeS10cnVuaworNzc1NjYgOTMwNDY0ZjMyMjA0NjUzYWZjYjQ0MDc5ZDBiMGI4Nzk0OWZjYWQ5MyBsZWdhY3ktdHJ1bmsKKzc3NTY3IDIzZjEyY2JmMTIyYzEzMTQ3YTA0ODlmODc5ZWMxODE0YWM3OWI4MTYgcmVsZWFzZTI2LW1haW50Cis3NzU2OCAxYWUzMzc5YzAyMDhmNmVjOGY0Y2EyNGU5NWY4YzNkZmRmODEzOWY4IHB5M2sKKzc3NTY5IGEzMDY4MGJjYjc1ODljYmVmZDZhY2JhYWJlMjY1NTIwNThiYTMwNTIgcmVsZWFzZTMxLW1haW50Cis3NzU3MCA0NTQ3YTliZmY3Yzc3ZTc3MzcwZGJjY2JiMWE4NjBiNjYxMDgxNmZkIGxlZ2FjeS10cnVuaworNzc1NzEgNjZlNTdlYjU5OTUxMDgxODI3NjRhYzRkNDU2YzkzNGE2ODA1MGU3MSBweTNrCis3NzU3MiBhOWZiMjAzNzA4YzQxMTk3NjA0OWI0NjEwYTg3OWM3MTA5ODI0YjY2IHJlbGVhc2UzMS1tYWludAorNzc1NzMgMWNlZmZiM2M4Y2IyZTU1YzljODQxMjhhMGNjYWJmODg5Yzc2ZjAyOSBsZWdhY3ktdHJ1bmsKKzc3NTc0IDNiZDZkZjExZDFkNmMyNmEyNGRkYWUxNzQwNzVkMGYwYzBkMmE3ZjkgcmVsZWFzZTI2LW1haW50Cis3NzU3NSBkZjAyMDA3OWUyODg5ZDQwYWUyMmM4NTU4NGYxODQ5ZWIzMGE5ZGM5IGxlZ2FjeS10cnVuaworNzc1NzYgOGY3OTcxYjgyMGE0MzViMTA1ZTFlNDcxZjAxYWYwZDY0ZmM1N2YxYiBweTNrCis3NzU3NyBmYjMzN2NiNDZiOWRlODVmZmQ1MmE2YmIwZGQ3YmE1NDk5MTIwMzJmIHJlbGVhc2UzMS1tYWludAorNzc1NzggNzMyMmM1NjkxMjk0ZDRkYzI1NzY1ZDhhZWJiYzMwMThmMjY2NmYyNyBsZWdhY3ktdHJ1bmsKKzc3NTc5IGI5ODg4YzEzMzlkZjUyMGJhZWNjOWI4YzhhNDFiZmYwNjYyMGI5NjkgcHkzaworNzc1ODAgNmVjMTRiYzZhYjBjOWI1NjVkNDk4MTE2NDAwMzc5MTA5Zjc4MzM3YSByZWxlYXNlMzEtbWFpbnQKKzc3NTgxIDgwMDU1OWM5ZDUwNGJmZWExYjQ5NmZhNDE0NWQ0ZTBlZjVhNGFhM2UgbGVnYWN5LXRydW5rCis3NzU4MiBkNjBiN2IyYzRhMWY1MTc0ZDg5ZmJjYTg2ZTZjZTAxYjQ5MWJkM2E1IHJlbGVhc2UyNi1tYWludAorNzc1ODMgYTExN2NiOTI2ZDIwN2UwOWFlMjkzMTExZjBjNTllYTE1MTY3MjNhNyBweTNrCis3NzU4NCA4ZTk2NzcwMDdhMWU4YzNjMzRjMTdhYjg1MmE4ZjdiODY5ZTc3ZDhkIHJlbGVhc2UzMS1tYWludAorNzc1ODUgMGM4Y2JkYmFmYWFkZGE3YWU3ZWUxOWJiNWVjYzU0ZDliMWQ0ZTI5MSBsZWdhY3ktdHJ1bmsKKzc3NTg2IGMyNDc1MjZkNWE1YjAzNDJjZGI4M2JjYmJiYmM1YjhlODc5MjBkNmIgcmVsZWFzZTMxLW1haW50Cis3NzU4NyBhNDg1ZmNkZmU4NTk2MDM4OWNhOTU1YTdlNTY2NzdjYTZjYzdkZmE1IGxlZ2FjeS10cnVuaworNzc1ODggM2I0OWVmNmIwOWZmYTBhOTU4YTI4MWQzNjJmMjc1ZmYxZTllNWVmZiBsZWdhY3ktdHJ1bmsKKzc3NTg5IDVjOWM1M2E3MjFhNTU0YmZiMDI1ZjE0YjBkZDY1MjIzY2FiZjRmYjIgbGVnYWN5LXRydW5rCis3NzU5MCAzZTYyOTQ3MTg1MGFmZTgzOTlmN2E3NGE4MmU1MzYxZTlmM2E5M2UyIHB5M2sKKzc3NTkxIDYwMzZkNzg2OWJkMWY4NDExNmRkZTEzNWNjMjIzNDRlY2NlZTk1YWIgcmVsZWFzZTMxLW1haW50Cis3NzU5MiBiYjEwZjNmZmFlMDI4MWQzNjlhYzJiNzQ4MjA3YjI5NmEzNjQ2ODJlIHJlbGVhc2UyNi1tYWludAorNzc1OTMgM2FhZGNlMzlkMzQ1MmQ5Yjk2ZWEzOWYzZmQ0ZDVkYWY4ZWJjOTJlYSBsZWdhY3ktdHJ1bmsKKzc3NTk1IGZlYWNhYTZlNDBiODRiNzA0ODE4ZmU2MTJmOGU0ZTg4YzFiMWRmYmMgbGVnYWN5LXRydW5rCis3NzU5NiBhOWQ1MThmYWRhNTk5NTY1ZWNjODFkNWZmZWU1NWUxMTU1YWYwODlkIHJlbGVhc2UyNi1tYWludAorNzc1OTcgMTIxZGVlZDU5NjhlZTY4ZTQxZThkNGYyOWVlMTgxM2U2YmIwNmJhNSBweTNrCis3NzU5OCBkNTlmNzZkNmI3OTU3N2RjMWEzZGMxYzI4ZjBmODEwMGViYTQ1MWUxIHJlbGVhc2UzMS1tYWludAorNzc1OTkgZWMxOTI2NDNhZGNiYTI5YTZlYmRhZTRkYzM3YjMxODc3YjQ1YmQ4ZSBsZWdhY3ktdHJ1bmsKKzc3NjAwIDg2YTM1ZTU5YjZiMTk1ODVlNGM0YTJhMDdmMDU1NWY1ZjBkN2I2ZWQgbGVnYWN5LXRydW5rCis3NzYwMSA5ZTU5YmUxZDBjMzcxMGJiMWVhZjIzNGE4ODE4Njg1NmVjNDNiYjIxIGxlZ2FjeS10cnVuaworNzc2MDIgMmRlZjFkZmRmMWY2Mzk4YmQwZDk1ZjEyMzUxNzExZDM5MmY1OWNkMSBweTNrCis3NzYwMyAxNmNkYzE1ZTVkNzViYjFiMzA2ODQxYjhiOWVjMjcwYzIwZjgwNGZiIGxlZ2FjeS10cnVuaworNzc2MDQgZjZhNjI2ZjM0ODQwZmEwYzNmNWViYWQ4Yjg2MDI4ODBiNmJkYzc3MCBweTNrCis3NzYwNyBkZjRkMjE1OGZhMDQ4NjFkNWYxZjQzMTE1ZGNjYmU4NDY5NGFhMDEwIGxlZ2FjeS10cnVuaworNzc2MDggNzViZmE1ZGExYmViNTI1MjdkNzRiZTBjOTFjZTAzMDI2MjY2Nzc1OSBsZWdhY3ktdHJ1bmsKKzc3NjA5IGY4MGU2YmQ0ZmQ0ZTZhN2NjNGE2MTVlYzE2M2E5YTcwMjA3NmEzMzEgbGVnYWN5LXRydW5rCis3NzYxNCBiYWM4MjFkZmZlYTgwNGYxZWY5MTZmMzBkZGM1ZjU2ZGRjNmUyN2MwIGxlZ2FjeS10cnVuaworNzc2MTUgNWRiYmM0M2M1OTFiOTJkNzI1YjdkOTEwMTYxZjU2NzAzODE4M2FkOSBsZWdhY3ktdHJ1bmsKKzc3NjE2IDg4NjMyMGYxYmE4MmEwNWEyZDdkYjAxZjJkOTAxNmYwNzA5MGZiN2IgbGVnYWN5LXRydW5rCis3NzYyMiA3M2ZlY2Q0ZTdmZWMzNGU5Mzg4MzIwNDA0MTYxZWM2YjdkODQ0ZjY5IHB5M2stY2RlY2ltYWwKKzc3NjIzIDI2NWViMjUwZTRhNTgxNzU4ODJlYmEyNWViOTI3NTIyNDE3NmY2M2EgcHkzay1jZGVjaW1hbAorNzc2MjQgOWM1NjNhNGYzZjlhMjQ0YjRhY2ZhMWE4OWM2YTI1ODk1ZjJlODNjNCBweTNrLWNkZWNpbWFsCis3NzYyNSA0NjRhMjM2NzY1NDA5ODJhZjAwOWUwZjgxYzEyN2VjN2Q0MGEwNmEwIHB5M2stY2RlY2ltYWwKKzc3NjI2IDg3NTI1YmQ0OWE5ZDYxNTQzZDA1YjFmYmU5NDBhM2UwYzhhYmM5N2YgcHkzay1jZGVjaW1hbAorNzc2MjcgZDY2YzZlYmJjNjE3NDBmMGRiNTZlYmFkYjMwZTAwOGMyZDQzYTBlNCBweTNrLWNkZWNpbWFsCis3NzYyOCA4MGIwNzhkMDU1NzczNjYxOWE5MWViZjUzYTM3YmQ1ZTlhZDQ2MjM5IHB5M2stY2RlY2ltYWwKKzc3NjI5IGQ4MjhjYzkxYzA5YjUwODA3MTFkMmRjNTQzMGE0MjZhNGRmMjFkMWIgcHkzay1jZGVjaW1hbAorNzc2MzAgMTNiYjlhOTdlMWM1MDI0YjU4NGIwYjE0MzExMTQwNTJmN2E2MzdlZSBweTNrLWNkZWNpbWFsCis3NzYzMSA1MTcxMmM0MmM1ZmIxZjc2YmMxYTI4OTc4YWJhYzM2NjlkYWU4ZDMzIHB5M2stY2RlY2ltYWwKKzc3NjMyIGNlYzE0MGY3MmQwM2ZiZWZkMmE0M2FkZDA1ZDUzNGEzOTFkZjAzNGIgcHkzay1jZGVjaW1hbAorNzc2MzMgYzFkY2U5NTk2ZTc3MWI5YjQyMTk3ZmRiYjI1OTdhZWI0MGFjOTEyOCBweTNrLWNkZWNpbWFsCis3NzYzNCAwNGRlYTAwNjAyNTdiZmEyN2UyZDFiZDI0NzMwMDZiODA0Yzc4YTRjIHB5M2stY2RlY2ltYWwKKzc3NjM1IDQwYTNiZTc4YmM5OWJkMDk3YTliMTU5MzM2YWZkYmQzN2MyNjJmYmYgcHkzay1jZGVjaW1hbAorNzc2MzYgNzNlM2VlNDYzYzk0ODc3MGQ4ZTE2ZTM5NzQwZjRhMzE0YWFiM2NhOSBweTNrLWNkZWNpbWFsCis3NzYzNyAwMDJmN2FiMzVlMTdkMDZlZTU5ZGUyODQ3ZDM4YzBkZGI1NTE3MmExIHB5M2stY2RlY2ltYWwKKzc3NjM4IDNkZjliNDBmZjRmY2U5NmI4MWFkMjIxNDI1Y2UzODNhYTRlZDFlODMgcHkzay1jZGVjaW1hbAorNzc2MzkgZjY0NmFhYTkxYjBlN2NkMjg0Yzg2OGY2OTU3ZDgxYzUwM2E5YmQ2NSBweTNrLWNkZWNpbWFsCis3NzY0MCBmZjM1NjNiYmJiODAzOWJhZWI1NjM1NzhiMzNmMjAwM2VmZDE0YzExIHB5M2stY2RlY2ltYWwKKzc3NjQxIDljZjIwYmQxNTE2YjljOTVmZGUzNGYzYmJkMGFjNjM5ZTE5MWI4MDUgcHkzay1jZGVjaW1hbAorNzc2NDIgZWVmNzZjODEyYmNiZGNhZjg5ZDMyMzQzODA1Mjg2ZDI0Mzk4NGQwYiBweTNrLWNkZWNpbWFsCis3NzY0MyBjMTRjOTQ1MzEyNzM3YmNiZmM2Zjc1NzhmYmI0YzU5ODk3ODViOGZlIHB5M2stY2RlY2ltYWwKKzc3NjQ0IGI0NzFlMDdhMjM3NWM2YTI4NzJjYmNlMzE4OTM1NjFlZmIxMTdkZDEgcHkzay1jZGVjaW1hbAorNzc2NDUgYjRhZjIxNDU2NzhiOGU5MmNlMjY2MTAzZjE4ZmJlNTYxYTE4Yjg5NCBweTNrLWNkZWNpbWFsCis3NzY0NiA2OTRhZmYxNjc3N2Y4MDRmYmMwYWY3Y2Q5MWI4MWQ0MTNmOTE4NDM2IHB5M2stY2RlY2ltYWwKKzc3NjQ3IDdkMTk5NjcyN2QwODRkODdiNjJjMWZlZGI4Y2YwMjhhNzZkYjY3OTggcHkzay1jZGVjaW1hbAorNzc2NDggZGJjMDBmZTM3NzcxOWQ0NGFkZjM2YjAyYTE2Y2NmNjQxNWJhOGNkZSBweTNrLWNkZWNpbWFsCis3NzY0OSAxY2FiZGYyODkzOGVlNGVmMGRmOTFjMGQxMTQxYzcxM2ZjODc4N2JlIHB5M2stY2RlY2ltYWwKKzc3NjUwIDBiZDJiMDcyMDgzMjk4NWM4YzE0NDgxMDE4MDQxY2JkOTMwYjRlNGQgcHkzay1jZGVjaW1hbAorNzc2NTEgOTMxZWM1NTg5MjcxNjRiMDc1ZDQ4MTFiMzg2NTYxM2FmMzZjMGJmNCBweTNrLWNkZWNpbWFsCis3NzY1MiAwYmFjM2RiNGQ1ZTI4Yzc4YWMzYzYzNmVkMThlYWU3MjY5ZTE4MDdlIHB5M2stY2RlY2ltYWwKKzc3NjUzIDYzMjYzY2NkYjA4MWFhMmFiZTZlNDAwN2Q2MjRkZWE1NmQxODE3M2YgcHkzay1jZGVjaW1hbAorNzc2NTQgNmQ4OTZlNDI0YTNkYTQzNmU4Mzk1MDlmODZjNjIwZDBiZDNhZmUxZCBweTNrLWNkZWNpbWFsCis3NzY1NSBiMjIxNGVlMjc5ODc5NDgxZmM2YzNiODRjYzc1ODI5NzQ1Y2I3NzQ2IHB5M2stY2RlY2ltYWwKKzc3NjU2IDA4MTNlODlkMDE5M2Y2Nzk5M2Y4NjU3ZjViZjIyZDE4NWVjMTk5MDQgcHkzay1jZGVjaW1hbAorNzc2NTcgNGFkMDNmNzFkMWUxM2NkNTMwZGVjOWY0ZTg4Y2RlMTQ3ZjBjNTZlNyBweTNrLWNkZWNpbWFsCis3NzY1OCA1NzdjMDk5YWRhODgxNzAxOTc3ODM3ZGU1OTBhYzZmM2NlMGYxMmE0IHB5M2stY2RlY2ltYWwKKzc3NjU5IGYwNDA4NjM3YmU3N2YyOTk3OWU4NzcxYjdjMDIzMzgwMWZiNDE0MTMgcHkzay1jZGVjaW1hbAorNzc2NjAgYjE5OGIwZTIxZDYyY2M2OGQ2ZWFjYThjMzU1ZTk4MDc2ZmUwZjZkMCBweTNrLWNkZWNpbWFsCis3NzY2MSBkNDJhODU0NjNmOWNmNDI4ZTI0ZGQ0NWYxMzMwODBmM2Q3Nzg4MmU3IHB5M2stY2RlY2ltYWwKKzc3NjYyIDVlZWMzYjExZTQxZTE5MzdkYTA5MDg0NDNkOWYyNzYwMDMwMDNkZTMgcHkzay1jZGVjaW1hbAorNzc2NjMgZTAzYjliZGNkNDA1ZThkOTRiYzFhMzdlZTA5OTY3YjUyZTViMzU4NCBsZWdhY3ktdHJ1bmsKKzc3NjY0IGFlNmZiMDViNGMxOWRlNjMzN2Y4N2M5NDg2MTg1ZDIzMmJhZGE2NjAgcHkzay1jZGVjaW1hbAorNzc2NjUgNzgyYTQwZmYzZjBkYzIyY2I2NjU0ZDgzY2UxYjlhZDkxMGY0NzU4MiByZWxlYXNlMjUtbWFpbnQKKzc3NjY2IGYzNGY4YWU3NjQ2ZTcwNjM5YWU0MjlhNTE3MmM1YTZhZmY5ZGVjZWEgcmVsZWFzZTI1LW1haW50Cis3NzY2NyA0Zjk1YjQzNTIxNzljODJkODM5N2U1MzllNGJlMGRiYWQyZjgzM2M1IGxlZ2FjeS10cnVuaworNzc2NjggMDU5ZTFmZDc4NjVjZmU3YjVlYTE3OWVmMjdlOTRjMTBmZTU5ZWJjYyBweTNrLWNkZWNpbWFsCis3NzY2OSBmZWU3YTg4YjA2ZDFmZWM5NTlkNzNkYjNlZDhkY2ZhMTViMjE4MWYyIHJlbGVhc2UyNi1tYWludAorNzc2NzAgZjM4YzExOTZkOWZmMTdlNGYzOGQyZDE1YTQwZmE2YmM4MTc0ZGNkNiBweTNrCis3NzY3MSBmMWFjZDAxNzI1ZTAxODY1MWQwYmE4MmVkNzVjMTVlYjgwNWViZTAxIHJlbGVhc2UzMS1tYWludAorNzc2NzIgZmJlNmVjYjkxYzRiZTU5NTk4NGMxNzQ2NGI2OTQ4YTU0ZTNiYjYyMiBsZWdhY3ktdHJ1bmsKKzc3NjczIDIyY2RlYzdmNDRjNTJmMmJjNmE4YjJiMzNjMzIyZDVkYTMyMGI5NDQgcmVsZWFzZTI2LW1haW50Cis3NzY3NCBjYWE2NGRjNDRkMTZlZmMyYThiZTYxMTNhNmMzMGY2NDFjMzEwM2Q3IHB5M2sKKzc3Njc1IGY1NjgzODNhY2M5ZjgwMjkwZDBiYzNlMGQ3NDNiMTA3MzEyZmM2ZDkgbGVnYWN5LXRydW5rCis3NzY3NiBhOTk2ZDY2ZmFlZDBjYTJkZGRiNmI2ZTY0MDc2Yjc0NTdiNWVjNGY2IHJlbGVhc2UyNi1tYWludAorNzc2NzcgNWMyMzY3MDRkYWYxNWE5MDgzYTVkNmRiMzg0ZTA0NDBjYjYyMmQ5ZCBweTNrCis3NzY3OCBiNjM2Y2M3MmQyZGU3M2IzZjE5ZjE5ZjcxZWEzNzg5OWQ0MDUwYjU4IHJlbGVhc2UzMS1tYWludAorNzc2NzkgZjg1MzliNDk3ZDRhYTEzMmE2NTE1YTIzZDA4ZjMxOGE2ZmNkMjY3MCBsZWdhY3ktdHJ1bmsKKzc3NjgwIDllMTI0ZTY0MDJiYzcyMWQ3YWMwYzhhY2ZlNDUwYjZiOWI5ZjQyZGIgbGVnYWN5LXRydW5rCis3NzY4MSBlZDQwMjdlNjY2MDA2ZTczODY4MjA1YWE1OTI5MTUwMDhlMjcxMjI3IHJlbGVhc2UyNi1tYWludAorNzc2ODIgMWY3MTVhMzc3ZWQwOWQyNWU1YWRjNzM5Njc4N2FmYjUzY2Q3MGU1NiBweTNrCis3NzY4MyA0Y2ZkYzhiN2ZiM2FmMjZmNzU4ZDU4OTQwMDkyYmFjNzU3ODUxMDdiIHJlbGVhc2UzMS1tYWludAorNzc2ODQgZjZmY2VjMjhhZjllNDU5NjQ2ZGUzMWU1YTNhYzFlNTJiY2U3NmUwNiByZWxlYXNlMjYtbWFpbnQKKzc3Njg1IGZlNDg4NGIwNDFiOTNkODI3NTFiODUzM2MzMjI1OGUwZjZhZWRmNWQgcHkzay1jZGVjaW1hbAorNzc2ODYgZDBkMDU3OWRkMWQxM2NmMzI3ZmRkNDBmYmMwN2ZhMmUxZmVhMGY5YSBweTNrLWNkZWNpbWFsCis3NzY4NyA0ZTY5OWQ3YzMyZWNmOGJhMDI0YzkzYmY1ZDA2ZmU2ZTQ3NzQ3NDdhIHB5M2stY2RlY2ltYWwKKzc3Njg4IDJjZjQxZDhmNzg3YWExMDk5NTkwOGE1MDljY2RkZTllZjg1MzE0MTcgcHkzay1jZGVjaW1hbAorNzc2ODkgYWRjOThiZjE1M2VjMDRiYWI3ZGQwZWFjYTk2M2Y4NzM4ZmYwYzhiNyBweTNrLWNkZWNpbWFsCis3NzY5MCAwMWNlN2E4NThkYWRiMjNhNTIzODQ4ZGI5MzAzZmVlYTViOThkNzdlIHB5M2stY2RlY2ltYWwKKzc3NjkxIDZiNzYxODE3YjcxNzQxYWEyZjA0NTY4MWU0Nzg0N2I3NGJmOGM1NzYgbGVnYWN5LXRydW5rCis3NzY5MiAzMWNkZTZlNjNjMDNkOGIzOWNjNjM4NmRhNWE4YjQ1M2E0Mjg4NGM2IHB5M2stY2RlY2ltYWwKKzc3NjkzIDYwN2UyNTI1YzA1MDdkNTMyOTE3NjFiOWEwOTM2OTU5ZGQyY2ZmMmQgcHkzay1jZGVjaW1hbAorNzc2OTQgMGVjNjAzNTM2NTZlMDQxMzM4NmVmOGYxMDVmYzdhMzdkNmNhNmUwZSBweTNrLWNkZWNpbWFsCis3NzY5NSBjZWMyZjI4MTExODIzN2Y1MTcwOWU5YWUzMzNkYTQ3YjI3ODc4ZWFjIHB5M2stY2RlY2ltYWwKKzc3Njk2IGQwZTRiZDc2YzY5Mjc0MzZlNjg2MmIzMTRiYzFlNThhMDUyOGNiODAgcHkzay1jZGVjaW1hbAorNzc2OTcgZDNiODNmZGJjODFhNDQxODdhZTc2OTBkMmI1YTc1M2Y1OTE2N2U4OCBsZWdhY3ktdHJ1bmsKKzc3Njk4IDdhOWYzNmNjNmRmMTFhZWQyNzRjYzk5ZWUxMDM3ZmVlZTNmNDFiNWQgbGVnYWN5LXRydW5rCis3NzY5OSBhNjc4ZmUxYzljOGJlOTM2MTQxZDIxOTAxODVjYzcwMDdlYjNhMmY0IHJlbGVhc2UyNi1tYWludAorNzc3MDAgNjgwMDY2NjNhODUyMzJiOTZlYWY1YjlhOTFhZjViMzQyNTUyNGU1NSBweTNrCis3NzcwMSA3ODdjNjgwZjFmZTg4Y2Y4NTY4NDdhNWZiNTU0MDI0MjNjNWMzNzZmIHJlbGVhc2UzMS1tYWludAorNzc3MDIgZjY2OWNmMTAwZWJiZWQzZmVjODUzNzNiYjY5ZmNhYTRlNzU1Y2M4YyBsZWdhY3ktdHJ1bmsKKzc3NzAzIDk3MDVlZjNmZGIyMjc4MTdlNWU4MDVlYzY5MmE2ODdlOWFjZDk5MDAgbGVnYWN5LXRydW5rCis3NzcwNCBmYTY5ZTg5MWVkZjRlN2NkZmRiZDNkMzg3NjU5NjU1NWM1ODM2MzVkIGxlZ2FjeS10cnVuaworNzc3MDUgYWM2ZTk2MGEwMTRkODJhZTJkNjlmYmEwZjdjMWQ0OTA5OTAxMDMxMyByZWxlYXNlMjYtbWFpbnQKKzc3NzA2IDJkZDY0YzI0ODU0YzkxMGQxMjc2NGM4YjZlZTBhOTg3NjEzMTg2ZGEgbGVnYWN5LXRydW5rCis3NzcwNyBiYjFjMzNlZmZmOTMyOTNmZWExOWM0MGQxYTQ1YTNjNjFiNTE1ZmVjIHJlbGVhc2UyNi1tYWludAorNzc3MDggMzAxZWQ2OWVkZGM0ZWFjY2MxYWI4MjE2MDNmN2FhODg1N2U0ODcxOSBweTNrCis3NzcwOSA5MDIyM2UzNDU4ZWIzMzlkZjAyMzZlNDQ1NjQyYzAzY2FjY2Y5MmQ0IHJlbGVhc2UzMS1tYWludAorNzc3MTAgMWVhNmNlYmJkODE4ZjdkNTcxMmYyZTFjMzVmNTliMDNlNTkzMzIyYiBweTNrLWNkZWNpbWFsCis3NzcxMSBmMGYyMjFlMWE3YzAzMGY3ZjdkZDk1YmM3OWU4M2U3OWJkMDRlZDdjIHB5M2sKKzc3NzEyIGJhZDVlMDNlMjQ0NWUzZTU0NjYyNzYwMWIyOWE2MjU2NjIxNDlkNzMgbGVnYWN5LXRydW5rCis3NzcxMyBkNzdjOTQ3ZmY3ZGI1YWVlZjIxNDNjYTlhZWMzNTk2YWI2NWE0MDg3IGxlZ2FjeS10cnVuaworNzc3MTQgYjQwYTVhNTY4ZTc2ZTQ0YjBkNjY1MTE5YWJiNTM1MmNkYjMwYWRhMiBsZWdhY3ktdHJ1bmsKKzc3NzE1IDE3ODkxNTY2YTQ3OGM0MjQ5NGEwNGQ4MDhkNjRhNDUxNDhhY2FmODcgbGVnYWN5LXRydW5rCis3NzcxNiA1YWIzMDEyZjkwYjc0YzgwNTQ2MGQwODNkMGUxMzAxN2QzNWE5OTQyIHB5M2sKKzc3NzE3IDgwN2Q4M2Y1N2JjODgzOWQ1NzVhNGYyZjVmMTVlMGM5YzEzYTliMzIgbGVnYWN5LXRydW5rCis3NzcxOCA1ZGI4MmE1N2RkZDA2NmJlNmU0NWNmYjYyN2RiZDA2ZTVhNzVmNjU4IHJlbGVhc2UyNi1tYWludAorNzc3MTkgMzk0N2ZkY2EyZjQwZGZmYzFlMDNhODlkM2I4NDg5OTA0MmNkZTc0MSByZWxlYXNlMjYtbWFpbnQKKzc3NzIwIGZmYzRhNDRiZmRiOThmM2Y5ZDcwZTMyMWZlNmFlMGQzN2I5YWQ1MjkgcHkzaworNzc3MjEgODc2NTZlODNkYzE5NjgzMjE2YjQ1NmM0ZjViNWQ4MTk4MTVmZTY5YiByZWxlYXNlMjYtbWFpbnQKKzc3NzIyIGJlMTJkMzYyMTUxOTU1M2UyMDk0NzJlNDQwYTI2MmNiYzNjNzA5YWYgcHkzaworNzc3MjMgOGMzZDJhNzFlZDAxNWVlYzExZTg4ZjJkNGExYTIxMmFiZmExZTVjZCByZWxlYXNlMzEtbWFpbnQKKzc3NzI0IDJkNzIzOWNhZDcxMzJiZTViZGIzZGIyYmM2OGFhNzU4ZGM1MTM3ZGIgcmVsZWFzZTI2LW1haW50Cis3NzcyNSAxZGM5MWU5ZGQ1YzEzYTRiYzJkM2JiN2Q0YjU4OTZhYjI2NGYyMzI1IHJlbGVhc2UyNS1tYWludAorNzc3MjYgMjMyNTMzZjcxYWJkNmY2ZGE5OWNkZTMxMmYyOWY0YjgwMzQ2Y2RhYyByZWxlYXNlMjUtbWFpbnQKKzc3NzI3IDZmZmNkYWZhMDExODk5NDQ4NWExNzRjZTQxMjgzMTQxYjgzNDEyMWIgbGVnYWN5LXRydW5rCis3NzcyOCA3MWFjZDQ0ODJlNjU1YjdkMWExMzc2NDM3MWI3ZTU5MGVhNDQ3N2MyIHB5M2sKKzc3NzI5IGRhYjM0YjYwYTcyZTFhYTIzNDQwZDZjYzJkNDIzMDQxYmEwMzBmZDUgbGVnYWN5LXRydW5rCis3NzczMCBlOThlZTk0NWUyNjI3MzA0Nzk4M2IzNjYwYWUwYjkyMjcxMTg2ZmQxIHJlbGVhc2UyNi1tYWludAorNzc3MzEgYzEwYWNlNWI3NmNlOTU0ZDBjNDI1YmViMWE2ZGMyYjJiZjI2ZTM1NyBweTNrCis3NzczMiBmZmI5NDkyMGVmZjNhYjk3YjJlMGViNDY0ODdjMjI1NWM2ZGRmY2UxIHJlbGVhc2UzMS1tYWludAorNzc3MzMgNjhkMWM4MWZmZjJlYTQzODI2M2FjYjFhNDQyMmY4Yzg1ZmQwZmM2MyBsZWdhY3ktdHJ1bmsKKzc3NzM0IGVhYjZjZGUyYTMxYzg0NWFmOTVhMzgyNmNhNTg1ZjU3ZDA4ZTE0ODUgcmVsZWFzZTI2LW1haW50Cis3NzczNSA1YzFkN2EzYmEyOWMxNmVlYzc4NzU0MjFhMGRkZGIyZTdlNmIzMDE5IGxlZ2FjeS10cnVuaworNzc3MzYgYTI1Njc5MWFhMTlkMGY4ZmUxYWUzZDRmMjdlYjgxYTUxOTFjMDI1NyByZWxlYXNlMjYtbWFpbnQKKzc3NzM3IDBjY2U2MGI2OGU0NjVjMDkxNDRiNDBkNDc5MWUyZmE5MjljOTU5ZDIgcHkzaworNzc3MzggNmEwNTcwZWUyMzY2ZWQ2ZGU2NTFkODUxMTdmNWRjNzE3MGIzMWE3OSByZWxlYXNlMzEtbWFpbnQKKzc3NzM5IDY3ZmYwNDA3NDI3MDMyMTE5ODFmYzZlMzc5MWUyYTFiNmJlYzBiNjEgbGVnYWN5LXRydW5rCis3Nzc0MCBmYmZlNWU0MjM0OWY2YTNlMDJkNjliZWQ4ZmZmOTVjOTZmNzQwOGY0IGxlZ2FjeS10cnVuaworNzc3NDEgMjQxOGEwYTlhOWE5MjVjN2RiOTk0MTJmYWI1Y2NlMjNhZTdjZDkxMCBsZWdhY3ktdHJ1bmsKKzc3NzQzIDVlODkzMGYzNzBkNTQ1N2UzMDQ5OTlkYjc4OTEzZTBjYTU2Y2U3YjIgbGVnYWN5LXRydW5rCis3Nzc0NCBmZjY2MzI0ZjUyYTEyNDIyZDNkZmI5YjhjNDliNmI5MTIxMzllNTAxIHJlbGVhc2UyNi1tYWludAorNzc3NDUgMDgzNTdkOTg3ODJiOWQzZTlhYWU2ZDc3MDkyNjJjNWI1M2UyMjY1MSBweTNrCis3Nzc0NiAyMzU5MzNkNGRhOGVkZTA5M2MzZGM3ZDE4ODRmOGExMjUzMzI1NzY5IHJlbGVhc2UzMS1tYWludAorNzc3NDcgNjk4NWMwZTg1YjRiYzhhY2Q1NTI2NjM3MWUyZWZiYzI2Y2Y1NmUwOSByZWxlYXNlMjYtbWFpbnQKKzc3NzQ4IDc4YzBhYzA3YWE5ZWIyNzZlNjU5MmNmY2U1NWM4NTFkNmE2MTM3YTYgcmVsZWFzZTMxLW1haW50Cis3Nzc0OSA4ZGQ0OWE4NmFkYWE1NDgzMWZhOTlmMTY1YmE1OTYxYTBhYzYyYmE0IGxlZ2FjeS10cnVuaworNzc3NTAgNzcyMzg5NTBjNmRkNDA1ZjcyNmIxMjM3ZWZiNzVlM2I5NDFmZDVhMiBweTNrCis3Nzc1MSAxZjE2NWM0NDAzMDY0YjQxZWU2N2U5YWI3ZjM2NTZkNzNlYzg3YzI3IHJlbGVhc2UyNi1tYWludAorNzc3NTIgNjIwODgzNmZlZGY5OWE1NDYyODQ2YjgzNTg4NzZiYWJmOWI5MzYwNyBsZWdhY3ktdHJ1bmsKKzc3NzUzIDNlMGZlZDI1YzBhZTU5YzdkMDcwNmQzNGMwZjdhZGYwMmIzMjAyNjAgcmVsZWFzZTI2LW1haW50Cis3Nzc1NSAyMmFlYTEzMWI2YWZjMTkxOWNkNzc1MDFmNWFlYzc2OTZiYWU3ODRhIGxlZ2FjeS10cnVuaworNzc3NTYgMmJkZTZkNGExMGVkZWRmYTVmNmUwZjdkYTcxZjY2MzU5OWUzYWExZCBsZWdhY3ktdHJ1bmsKKzc3NzU3IDc0MTE4N2JmYzYxMDJlZTUxMjQ3MGNiZGRlYzRkYzE5NWE0ODNiYzkgcmVsZWFzZTI2LW1haW50Cis3Nzc1OSA1ODI2NmYxYTJlN2YzZTM2MTZlMTEzYjA3NmQ5OTI3NmU2ZjcwMmM3IGxlZ2FjeS10cnVuaworNzc3NjAgYjI1Yjc4Y2U3OThkYzg3ZWNjN2NjMDE4ZWM5MjA4ZmNkNjVkYjcwZSByZWxlYXNlMjYtbWFpbnQKKzc3NzYxIGY5ZmQxNzk1ZmNmNzRlMTNkOTA5MmI2YTc5YzAzNDRmNjg4MDk2MWYgbGVnYWN5LXRydW5rCis3Nzc2MiAxMGFkN2Q4ZTVkMTcxNWE1NDVjZTE5ZGIzNWY2MTk4ZjI4OTEwZGNmIHJlbGVhc2UyNi1tYWludAorNzc3NjMgYmMyYjg4YmVhZTQ1ZGE4ZDk3ZWQ1ODVjZmUxZTYzOTQ2YTcxOTlkNSBsZWdhY3ktdHJ1bmsKKzc3NzY0IDkwN2ZmMTNiZDRlMmUxNDU2MzYzMDZkYzA2NDEyZjI2YzQ4MDAzNTAgcmVsZWFzZTI2LW1haW50Cis3Nzc2NSA3Mzc5Y2Y3MGZkNjAzYWY1ZjhlY2M3Nzk1MGQxMjcyYzRjNGJhNDdkIHB5M2sKKzc3NzY2IDgyMzJiMTBlMzRlMTM4OGJkYWVhMzI4Y2EzYzE3ZDQ0YWYyNDkyYjcgcmVsZWFzZTMxLW1haW50Cis3Nzc2NyA5MmU2ZThkOTA0YTI5ZWRlYzMwYjA5Yjg5ZDRjOTViMmMwMjQyY2Y5IGxlZ2FjeS10cnVuaworNzc3NjggM2MwY2Q3YTdkYjhlZTMwMTcxY2M0YmQwNGY3NzMzMjljM2Q5NThmYyByZWxlYXNlMjYtbWFpbnQKKzc3NzY5IDgwNTYyMDUxYmI3MGFiNTcxMDY1MjExODlkNTgzYzFlZjJkZDhhY2IgcHkzaworNzc3NzAgZDgxNWRkMmZiNWJmOTE4NjI3MzRkYTU1NWQ0YjU1MTY2NGE3MTVmNiByZWxlYXNlMzEtbWFpbnQKKzc3NzcxIDI3NDZjMjE3ZGQ5ZTBhODRjZGE1N2M5MzFlNGQzYTE1MmNhNWZjMTIgbGVnYWN5LXRydW5rCis3Nzc3MiBmZGU5NzE5ZTIwNTZmNDNhZWE1NjM2MmIxYzAxNDIyN2IwMTBkZDE0IHJlbGVhc2UyNi1tYWludAorNzc3NzMgZGYzMzU5OTE4NTE3ZDIxNjJhM2I5NmJkNzM3NjYxODdjY2NjYjc0NiBweTNrCis3Nzc3NCAwZGRmOGQ5NjkwZTVhZTdkMWQyNGJkZWRjYTg2YTBmOWE2YzMwZWNmIHJlbGVhc2UzMS1tYWludAorNzc3NzUgNjcyNmFlYjg2N2I5MDAyMGNhZGJjYjkwOGY0OTg0MThmMjYwNWM1YyBsZWdhY3ktdHJ1bmsKKzc3Nzc2IDQ5ODMxMWZkODgyMmNlNzlhY2RlNDk4NDAwNTU1YTcyYWFlN2YzYWQgcmVsZWFzZTI2LW1haW50Cis3Nzc3NyAzNGUyZDUxNjJjZTkzYzIxMjMyMWY4N2JiYTVjODUwM2M5NTgzYjVjIHB5M2sKKzc3Nzc4IGFmZDIwZDNkODVkYzg4ZjQ2Y2JjYjQ3Y2IyNDJmNGEzMTRhMWExMDkgcmVsZWFzZTMxLW1haW50Cis3Nzc3OSA3NWQyNGIyNDUyYTU5YjM1NmY0Y2RmNGRjMDAzMjZmOGU4YmFlMWRjIHB5M2sKKzc3NzgwIDEyMDU0NjM0NmY5Mzk3OTQ2MDQ4OTE0Y2QzYWJmMjUxM2VlMjEyODkgcmVsZWFzZTMxLW1haW50Cis3Nzc4MSA3NDhlMjgyZTA5MWNlNDNmNmEyNzU0ZjdkYjhkZDMwOThkZDEyNjNkIHB5M2sKKzc3NzgyIDFkZDgyMzJkNGVjYjk4MWM0NTQ2ZDhhZDZjYjEyNTUwZGI2ODE4MDcgcHkzaworNzc3ODMgZDRlMjJmZDUyOGUyYTJlMjY1MTc5YTE0MWQ2NzkzNWY2YWRiZGVmYyByZWxlYXNlMzEtbWFpbnQKKzc3Nzg0IGY2ZjllZTgzZWNiZjNjNDc1ZmE0NTc5MTMyYTgwZTFjNTQwNWYzOWIgbGVnYWN5LXRydW5rCis3Nzc4NSBkYzcxNDdkMWI3ZDk0ZGJmMjk5M2EwYzhhYzJlMWExNjRmNWQzZjVjIHJlbGVhc2UyNi1tYWludAorNzc3ODYgOTZkNWM3MDMxNDQwNTI5MzUxODY5ODUxOWY5MDAyOTc3MzhkN2QyNCBweTNrCis3Nzc4NyBlMjBlMDJmYzE0NDdmYzczMmVlNTc3ZDFhNWIzZmQ1MmI2OGFhZTU4IHJlbGVhc2UzMS1tYWludAorNzc3ODggYWQ3YTYxNTc0YmQ2ODllNjA2ODM3M2VlZDk1MTg3YTg1YzgxNjdlNSBsZWdhY3ktdHJ1bmsKKzc3Nzg5IDk1NzVjZTBkYjIwNDdjMWM1NjZhYTZlOTg5ZDk2MTI2YTJiZTliMTUgbGVnYWN5LXRydW5rCis3Nzc5MCBhOGE0YmM2OWJlYTEyMjUwZGZmNTJmZmRhMGQ5OWMxNmIyYmZjYmZlIHJlbGVhc2UyNi1tYWludAorNzc3OTEgZTY2MGNiNTJiZjAwNjBkY2M3MWIwYTU5ZjdhODgwZjNlYTEwMWViOCBweTNrCis3Nzc5MiAyYmZlZWY2Mjk5MzYyODA0NDFiMmJlNjMzOTQ1ZmVkZTE1OTkxYjljIHB5M2sKKzc3NzkzIDIwMDcwODgwZWE0ODMzNGIxZmNlMTQ3OTA2MDJkNDc5OTNlMDk1OTYgcmVsZWFzZTMxLW1haW50Cis3Nzc5NCBkZWJlNjE2NzNhOGIxMDViZWJiMjE4YjA3NTFiNzhmY2Q3YmQ2OGM0IGxlZ2FjeS10cnVuaworNzc3OTUgN2EzNmNhMDQ3NDJkYTliMjhjNjRjMWYyM2ZlNTk0NDlhMmJmNTlmYiBweTNrCis3Nzc5NiBmOTg5ZjRmMzAyNDUyMjdkOWExOTQxNWZmNTA4MDE3NzZlOTlhYTQ4IGxlZ2FjeS10cnVuaworNzc3OTcgNGY4YjJhMTczYzhkYzVjM2E0ZWRkZDA2MGQ0NTRlM2E2ZTc4ZjViMCBweTNrCis3Nzc5OCAxYTAwODFiODVjMDQ4OTVkYWUyN2UyZmY3OTM5N2FmZTUxNGQyMmFkIGxlZ2FjeS10cnVuaworNzc3OTkgMDExZDk2N2MxYTA0OTY2YjBkZWYyZDNiN2Y0OTAwNThhMWM5YWI4NyByZWxlYXNlMjYtbWFpbnQKKzc3ODAwIGY0MWQzNTNlYjY2MDI2NmRmZjVhYzZjZTc3NDU3ODFjYjVmZjBjOTAgcHkzaworNzc4MDEgNmE0NzkyY2JmNGM5ZjM2OWE1ZTRhYzhiZTVmZGU4N2FmOWMxZWY0ZSByZWxlYXNlMzEtbWFpbnQKKzc3ODAyIDBiZDYxNmRmYzk3Nzg1YTMxMTZkODdhN2Y1OGMwMTU0OGE2ZjllY2MgcmVsZWFzZTI2LW1haW50Cis3NzgwMyA3ZmI3NjQ0YTBiYzY4YTc1ODk4NTVmNTlhMzc1YWI1YzlmNWUwMmEwIHB5M2sKKzc3ODA0IDNmMzZjOWU2YTVhZjdmMjQ0NTY1MGE5Nzg3M2U1Mjc4MDNjMzM4NjUgcmVsZWFzZTMxLW1haW50Cis3NzgwNSAxYWJjMjE5MWJlYWY0OTRjOTNhNmJhZmYzMjU0ZDlkMWJkMTNjZjIyIHJlbGVhc2UyNC1tYWludAorNzc4MDYgYTVlNjhhYjc4OTViZDgxYzY3ZmQwMDE0ZGY3NTIxMmU3ZjIzNTVkYyBsZWdhY3ktdHJ1bmsKKzc3ODA3IDY3MTBhNDNmMTkzZjBmODQ4MGQ4MzFjOWRlNWZlN2M2ODRhNjJiMWUgcmVsZWFzZTI2LW1haW50Cis3NzgwOCA0Y2Y1YWU3MGNiMTE5ZWIyYjRhYmVjMmVkZDI4YzA5MDAyN2FlNDU1IHB5M2sKKzc3ODA5IGY2MDY0NzRhMjEwZDFjZThhYzNjOTFlNGI4ZmRmNThmYWJjOWViNjAgbGVnYWN5LXRydW5rCis3NzgxMCAyNDVmMzYyODIxMTM2Yzc5MGY2MGRhYzczYmNiNmMyZjljOTNjMjM2IHB5M2sKKzc3ODExIDY1OGViNWFlNDYxNTgxMjYwMjZkZGNhOWRiYWU2ZjFhNDUwOGJhYjUgbGVnYWN5LXRydW5rCis3NzgxMiA4MmFkNzg3MTFlZGI1MjlkM2VhNWIzOGNiYzQ2MTY0OGQ0YWNjZmJhIGxlZ2FjeS10cnVuaworNzc4MTMgMzIxODcwYjVkMDMwYWQwNjVjNWQyMGNlMTliOGRhZDQ2NWY4YzUxNCBweTNrCis3NzgxNCBmMmY1OWQ3YjQ2MTQ2MGNhMDVlNjBiNDAxODhhYmUwYzUwY2EyYWY3IHJlbGVhc2UyNi1tYWludAorNzc4MTUgNTQ3MjVlMmU4YWRkMGU5MTQxZTZkNjMxOTBiYzQ2YzRmMDRjMGFmNyBsZWdhY3ktdHJ1bmsKKzc3ODE4IDVhYTkwMjQ4YTk5ZjhmYWVjNzljZTE5ZDg5MzU0OTQ2N2M4NDI2YWEgcHkzaworNzc4MTkgMzhiOTBmZTM0NjIzN2U5YTkzYzBiZWRkN2I0NjExMjExNjc2NmQzMiBweTNrCis3NzgyMCAwZDRiMDU4OWZiYzcyMzMyNTgwMGU2Y2M0NDU4NzMyN2RmZTRjNGU1IHJlbGVhc2UzMS1tYWludAorNzc4MjEgYzU3OTk4ZTNiZTMzYWY5MmQxYTFiOGQyYWRhM2NhOTRkNDdlMjQzNyBsZWdhY3ktdHJ1bmsKKzc3ODIyIDNjZTg2MGI5ZTczMjM3YTQyZjlkODUyZjE5MWRjZmVhZTcxMWQyZGIgcmVsZWFzZTI2LW1haW50Cis3NzgyMyAyYjA4ZGU5YTFmYTAxMjAwZjkwOWNlNDBmM2IzMjBjNTJiYWZjNmNkIHB5M2sKKzc3ODI0IDZkZTY0ODk2YzZmODgxODFlMjM5MzE3ZmM0YmIyMzRhYWQ1OTJiZDggcmVsZWFzZTMxLW1haW50Cis3NzgyNSAyZGFiNDc2MDZhYjYzY2RhODJlZjlkM2YyMjFhY2YwMTVlMWNjNjRjIHB5M2sKKzc3ODI2IDNiNjUwNjgwODdjNjJmNTA4MmYyMzYxNGVmYTc4NmQ2MGVkNmZmODggcmVsZWFzZTI2LW1haW50Cis3NzgyNyAyMGYwZGEzMWZhMmNkNzliM2QwMTg5MzIwZWI3NmE1ZmJiNTAyZTM0IHJlbGVhc2UzMS1tYWludAorNzc4MjggODc5MTAxYTBiNTc5NzAyNTFlOWZkMzUxNzlkZDNjMTc2ODUyZTgyMSBsZWdhY3ktdHJ1bmsKKzc3ODMwIDI3NWNkOWZlMDRmMWJmOTZkNTFlODg3YTQzMGVlOWVjMDE3MzU4OTAgcmVsZWFzZTI2LW1haW50Cis3NzgzMSBkZGUyMGFlNjdmOWYzM2FiMDkwYjlmNDViMjJjYjdiNzhkZTg1Mzg2IHB5M2sKKzc3ODMyIDhlZjI1MjNjM2E1YzU3MjEwMjNjMjhhMmM3ZWFhY2IyODFhZjYyMDEgcmVsZWFzZTMxLW1haW50Cis3NzgzMyBhMmM5MTczNzg0MTFlMjNlYTk5MTBiYjhkZmI2ZmU0MzZlZjY5ODUwIHJlbGVhc2UzMS1tYWludAorNzc4MzQgNjA4NTNjMWFjNTYyZDI1OTg5MGRkZjQ3MjU4YjU1ZmQ0ZGMxYmY4MSBsZWdhY3ktdHJ1bmsKKzc3ODM1IGViZjRmMjI2YWVlZjlkZWJmZTZiZDU0ODhiM2FkOGYyYTIxNzE3NzkgcHkzaworNzc4MzYgZDAxNDYyM2VjZjcyMGMyZGY0NTA4ZWMxYWMyNWM3NWVlMGI4MTQ2MyBsZWdhY3ktdHJ1bmsKKzc3ODM3IGYyMGY4ZmM2Y2ZhZTM0NDFkMDE5ZThiYmY0NjEzYjA5MTQ3MjEwNzQgcmVsZWFzZTI2LW1haW50Cis3NzgzOCBkNmZiMzc4ZDc2NWFmOTE1ZTNmYjBmMjE3ZmU5ZGJkMjEwYjNhOTIwIHB5M2sKKzc3ODM5IDEwOWVjMDZiYmNmMWI4MDUxMWY0NDcxNzhhN2JhOTRhZjQ1Mjg5NmYgcmVsZWFzZTMxLW1haW50Cis3Nzg0MCBlMGFkMWYzYzkxYWYyMmNjYWU5ZGQzNjAyYTg5ZGRkYjUxOGFjMzhkIHB5M2sKKzc3ODQxIGJmYzEzY2U2MmZhYjBkYjQyZDJlNTk4Y2M4N2MwZjkwMjI1YThmYTggbGVnYWN5LXRydW5rCis3Nzg0MiA2Mjk1ZTE2MzAzYTcxODNkNmM1M2VkMWJiZTYzN2ZhYzc4MDJlZjBlIGxlZ2FjeS10cnVuaworNzc4NDMgNTg5M2VmOWE5Yjg0YmY4OGIwYTFkZjg5NDk2Y2QzMTg3NmRlNDBjMyBweTNrCis3Nzg0NCBlZmMyMDMwY2U2YjE2ZDg4ZWMzOGExMjMxZjBhMWI3NDRmODg3Yzc3IHJlbGVhc2UyNi1tYWludAorNzc4NDUgNzQ1MGUwM2E1MDFkYmI5YmY3YzFjMjhkYThhOWE3MmZkZjAzNzJlMiByZWxlYXNlMzEtbWFpbnQKKzc3ODQ2IDg2YjhmNGNiOTIzYWMzMzhkODQ4YmVlMDc1MjFjZWFiNTM2ZDQ2YzYgbGVnYWN5LXRydW5rCis3Nzg0NyBjMGM3NmQ0OGNkMmI4ZWMxOTgyZmM5NDJmOTg0OTA5MGQyN2YxZmVjIHJlbGVhc2UyNi1tYWludAorNzc4NDggNWM0N2NkMTczNmMxNjJhMGQ1YWIxYzMxZDIwNTMxODgxYWYxMTI3YiBweTNrCis3Nzg0OSBkMzRkM2I4ZjlkZWU0ZTE3YWIzOWRlZmU1NTQ4YmVlNjcwZGRmYzhkIHJlbGVhc2UzMS1tYWludAorNzc4NTAgMzkzMzJjMGFmODU2NWVhOTRiYjM5OTBjY2Y1YzY1NGFlMjAyNDVjMyBsZWdhY3ktdHJ1bmsKKzc3ODUxIDgyNGU1ZWNmOTAyMjViNTlmMzYyZDY3OTFkOWVjNDJhZTI4YzVlMTEgbGVnYWN5LXRydW5rCis3Nzg1MiA5MzRkNDk1OGE0MTUxYWZlNTk4NjM2YTBhY2I5MjA3YTg3MTU3ZGFjIHB5M2sKKzc3ODUzIGQ3OWFhNWI2Njk3MWM5ZjFjMjkwYWRlMTQzMGY1MDE1ZWEzOWJjOGUgcmVsZWFzZTI2LW1haW50Cis3Nzg1NCAwMTlmNTJhZTBmZThjY2I5ZmJjYmQ0ZDNhNDljODkzNWUwODVjODdmIHJlbGVhc2UzMS1tYWludAorNzc4NTcgMmJmNzM1N2QxMjJjMjZjMTMxOThlZGI5ODhlMWE0ZjUyMmY1MzRlMSBweTNrCis3Nzg1OCBkMjFiMDVmZjkyMGFmYWYwMjNkYTY1MmVjZmE5ZDRjZDZiZTAxZTFiIGxlZ2FjeS10cnVuaworNzc4NTkgNWE3ZDdlZWI4OGMxMTMyNWE1ZGQ1M2M0ODFlNzcyODc5OTNhZTg3OSBweTNrCis3Nzg2MCAwOTBmYzM5Y2U1ZWMzNWRkNWE0MmYzNjFiMDdmZWVlNjA3MTg0NzhhIHJlbGVhc2UzMS1tYWludAorNzc4NjEgOTc2ZWM0NWQ5MDkwYWY4NGQ5MGQ0ODJmYWE1NDE3NWE0ZWFjMDhhZiBweTNrCis3Nzg2MiA2OTA4YmE0NDVkMmIzNWMzOTBkODE3ZjIzZTc2OTQ4Y2Q0NTFjNWVjIHB5M2sKKzc3ODYzIGY1NjIwN2I5MzZjYzM1OTQ4NWI0YThkZTZhZWE1MWM0NDAwZDY0MzIgcmVsZWFzZTMxLW1haW50Cis3Nzg2NCBlOTU2NTcwYmMzYjlmMDRkOWY5NTQ1YmE3Y2QzNzg5NmZlN2NjMDE4IHJlbGVhc2UyNi1tYWludAorNzc4NjUgZmM1ZWM3ZTA0MTc3M2NmYjUyZjIzODBiOWE0YjE1OTViYzI3ZDdkYSByZWxlYXNlMjYtbWFpbnQKKzc3ODY2IGZlMDg2YWJiNGFlYmU5ZTYwOTA4YTU1Y2Y1MjBlYTBkYTcyZjQwYzIgbGVnYWN5LXRydW5rCis3Nzg2NyA2OGM1NmM0Yjg2MzFjYmQ5Yzg3NzI3MzQ0OWE1ZjZlZTJkNjFlOTE3IGxlZ2FjeS10cnVuaworNzc4NzEgZjBiYzZkOGFhMjFlMDI1M2MyZDJkZGVjZjAxZWIwOGFjNzk0MWZjYSBsZWdhY3ktdHJ1bmsKKzc3ODcyIDcwOThhNDZmMGI3NWU1YWFjZmFmODFkNjVkNzJlMzYxM2IwMjM1MzIgcmVsZWFzZTI1LW1haW50Cis3Nzg3MyAzOGM5Y2NjYmJlNWE0YWNkNDAwNTE1N2FjYTFmNmNlODU5NDIxZjBlIHJlbGVhc2UyNS1tYWludAorNzc4NzQgYTIwNDc3NGQ5YzcwYmRkYzJjZmI4MDc1NzVhZDVjNDZiYjhhYTg3NCByZWxlYXNlMjUtbWFpbnQKKzc3ODc1IDJkZGJlNjJhNjgyMGZhNWQ3YjcyMzY1NTgyNDhjNDZiMDhlNDcwNDAgbGVnYWN5LXRydW5rCis3Nzg3NiA2ZTZiNTk0MTNhMTM4OTliNzVkZmIxYjBjOWE5N2IyOGVjNzYyMGQ3IHJlbGVhc2UyNi1tYWludAorNzc4NzcgNTY2ZDVjOTU3YzE5NzU5NzIzNTM3YTM3OTk4NzAxMWExZjY5OGQ0NyBweTNrCis3Nzg3OCBjZTBkNGRjNDg4ZDI5MDVkY2ExOTFmZDNlYzc0MGQ1MzZjMjE3ZGFmIHJlbGVhc2UzMS1tYWludAorNzc4NzkgZjYyODQyYzI1YmQ4MzNmZDY2MTcyODZkMGYzY2I0YWRlMTk2ZmM0MiBsZWdhY3ktdHJ1bmsKKzc3ODgwIDZiMzNlYTk0ODg5NjYxODExZTA5ZjYyODJmOThmY2M0Y2ZmYTM3MTIgcmVsZWFzZTI2LW1haW50Cis3Nzg4MSBmZDU4MDFiODM4OGQxNTcyMmEwNDdmY2VkNDhlYjdlMDcwZTVlOTFhIHB5M2sKKzc3ODgyIDk4MWEzOWYzNTkxNGQ0MGMyYjY0ZTRjMjMwY2M1NmI3MmNhYzFjNTcgcmVsZWFzZTMxLW1haW50Cis3Nzg4MyA2OWJmZmEzYzc4MmUzMjU4OTRlZjU1ZmNlYTY4ZjU1ZWE4MDU4YzA4IHB5M2sKKzc3ODg0IDFlNDdiZDZiYmVkNTRmODQ0ZGRkMmFjMmNmOWYwYzEyZWVhMmY1MzkgcHkzaworNzc4ODUgYTczYjkyZDFlOWZkNTgyZTc1YWEwNmI1ZjM4NGY4ODlhZmMxODVjNSBsZWdhY3ktdHJ1bmsKKzc3ODg2IDA1MDhlYWQxOGQ2ZjVhMDkyZTlkOTUwYzcyYzE0NjcwNTUwOWVlZjMgbGVnYWN5LXRydW5rCis3Nzg4NyA1NmEyMjA4MjcyMDljYmIzM2QyMGQ0NDUxMzc5OGJjMjk4M2NhMGM1IGxlZ2FjeS10cnVuaworNzc4ODggMTU5ZGE5YTQyZmVmMWM2YWIwMmI5MmZiY2MwNjM1YmUwMjU0MzQ0YyBweTNrCis3Nzg4OSBiY2JiOTA0OGY0ODAzNzNhZjljOGI3YjM0YzFlM2ZkZTk4MWU2Y2E0IGxlZ2FjeS10cnVuaworNzc4OTAgNzcxMzBmMmZlOTQ0ZTRhY2QxMGYwMzViNjc5NGE0MmQxMmIxZWE5MSBsZWdhY3ktdHJ1bmsKKzc3ODkxIGVmNTYzOWM3MTk2NDM1Y2UwYmU3ZTRlMzExZmQxNTNjNWJkNWIzM2UgcmVsZWFzZTI2LW1haW50Cis3Nzg5MiAyNDY2NWE5ZDg4MWFkZTI1Njk3YTc0YzRkMTk4ZGE3ZWRmNDc4NzQ0IGxlZ2FjeS10cnVuaworNzc4OTMgNzViYjJmMTY5MWMwZWE5OGIxNzZlNjMyZmI5MDExNGIzYmZhM2M0ZiByZWxlYXNlMjYtbWFpbnQKKzc3ODk0IDM4ZTMwN2ZiODM5ODU2YWM5NzBlZmJjMmM3MGNmZmE2N2I4NGQ2MTcgcHkzaworNzc4OTUgMzExZGI3YTY4YTgyOTM2ZDEzNGFkZDc0Nzc2ODJkYWY3ZGQzMWM3MiBweTNrCis3Nzg5NiBjN2UzMmI0ZTM4NzRiYmJjZTA0ODM4OGQ1ZWYzOWFkZmNiMTIyNDc1IHB5M2sKKzc3ODk3IGQ4ODdkYjUwMWEyMjExYWEzNGQ3MWUxYmY3MGExZmYzZWE5M2EzNTEgcmVsZWFzZTMxLW1haW50Cis3Nzg5OCBmZDI0ZGVkYmE1OWVhNWYwZTAxM2NkMDljNWUxMGE0NzBiOTY2ZDA1IGxlZ2FjeS10cnVuaworNzc4OTkgYjJkYmYxMWUyYWM0Y2VmMDQ1ZDAzZWFjNDRlOWFiMzA1Njk0OTVkOCByZWxlYXNlMjYtbWFpbnQKKzc3OTAwIDg2MDRlOWEyNTdjYzhmY2E4NTBkZGI2MmRiNjY2MzU5NjNhYmM5ZTIgcHkzaworNzc5MDEgYzdkY2JkNjVjMjEzNTIzZTM0MzZkNTZkOTg3ZGYwODc4NWFjNGMzYSByZWxlYXNlMzEtbWFpbnQKKzc3OTAyIGM5Nzk1N2Y1Y2RmOTI0NWEyZTk0ODg0YTdmZTM2MzBmMDllNmYyMGEgbGVnYWN5LXRydW5rCis3NzkxMCBhZjQ5OGFiMmFmYjRhNWQxNmFkNTg2YThhOGMyOTVkMzY5N2NmMDI2IGxlZ2FjeS10cnVuaworNzc5MTEgNjUyZTBiNzQ4ODVhYzc3ODE4MjBiMDc1ZGRiZmUyOGI0ZDJhYzQ1MCBsZWdhY3ktdHJ1bmsKKzc3OTEyIGQwNTE3NzljNWJiZDZkYWQ4ZjQ0ZTljZmU5MzBlOGRmNTJlYzU0YWIgbGVnYWN5LXRydW5rCis3NzkxMyA1YmFkZWJkYjQzOGNlZjc1NWJjMGQ0NDRiNTZhNWQzMjY5YmY4NjdlIGxlZ2FjeS10cnVuaworNzc5MTQgNGNiZmYwMTM5ZjViODA4OWY4YTBhOGNkNzIxZTUzYThkNzhjZjE5YiBsZWdhY3ktdHJ1bmsKKzc3OTE1IDUyNWI2YzVkNWIxMmNjZmE2NmVmNDFmZGU2NTIwZWNiM2VkODI1YTcgcmVsZWFzZTI2LW1haW50Cis3NzkxNiBjMzdmOTliNTRkN2NmNDUzZTkyZjYzOTc5Y2VlYTQ0YjBhOGFjYTE5IGxlZ2FjeS10cnVuaworNzc5MTcgYzc3MDNiNjQ5NTE2YjczMDM2MGJhYjRjMTY0M2Q3M2Q1YTMzYzkzYyByZWxlYXNlMjYtbWFpbnQKKzc3OTE4IGNkMDBhOTQxODZjOTM0OTc3YTUzYWZjNDNhMjE2ZjkzYTI4Njc0ODAgcHkzaworNzc5MTkgZjNmMDhlZTgzYzU1ODYzOGFkZDRhYzIzNTM5MjQ4NWI3MjEyMDc3NiBsZWdhY3ktdHJ1bmsKKzc3OTIwIGRmMmI5YTZkMjhhZWY4NWI5YTJlNTYyNjRhODM4MDZhMzYwYWEwNjIgcmVsZWFzZTMxLW1haW50Cis3NzkyMSA5OTJjYWUyNDZhMGM3ZmE3ZGFkYjMxYzk2OTY5ZjM5NWZiMTZkZTgzIGxlZ2FjeS10cnVuaworNzc5MjIgN2NiMTRiNTIyZjgxY2JjNmIwZTk5NzkzMWNmMGQ3ZGY5NjA1YWU0ZCBsZWdhY3ktdHJ1bmsKKzc3OTIzIDZmZDJiODE0N2YyYTM3ZTVhYWNhYTQwNThkZjY0NDY1NjBhYmQxMjQgcHkzaworNzc5MjQgMDBkNzgzOGVhZjNhZDM2ZTc5OWVmNjMzMzQzYTJjMjFkMTE5ZGE0ZiByZWxlYXNlMzEtbWFpbnQKKzc3OTI1IGQzMTI3ZjZkZTE2YzA4N2Q5MWZmZGRhY2YxZTRmYjdhNzFhZWYzZTMgcHkzaworNzc5MjYgN2NkMTgyYmVlNjMwYzMzNTAzMmQ5YzQ5NjEyODA1Y2JkMmRhZDU2ZiBweTNrCis3NzkyNyAwOGNmNGIzNTMxYzk0NjQ4ZTBlZDgxNjlmMDhiMzZiN2I3NTMwMDEyIHJlbGVhc2UzMS1tYWludAorNzc5MjggMzgwOTQyODkyZGMwZTBlYmEzOWVmNDNlOTNmZDI1OWRlMzJhMTNhNyBweTNrCis3NzkyOSBiN2ZlY2UxNWJhNWZiOTg3NDg1NGRmZjM4ZDdjMDUwYTM4OTUwOTE2IHJlbGVhc2UzMS1tYWludAorNzc5MzAgYjg4OGRiNzY0NWFhOGNmZjI3ZWU2Nzg3MDEzYzM3MDkwYjc0YjY1YSBsZWdhY3ktdHJ1bmsKKzc3OTMxIGViOTg3YzlkZjM3OGZjNDZiOTg3M2FhMzM5NWNlZDMwOWNkNTU0OTQgcmVsZWFzZTI2LW1haW50Cis3NzkzMiBhODdmY2UwM2EzNGRkMjA0NDk3OGFhYTA2ZDkxNGM3MDI2NzMyMGQ4IHB5M2sKKzc3OTMzIDk2N2JmZDM2OTczNjY5NzMxMTNlMDcwMmIwYmVjNjU4OTIxZDJlZDMgcmVsZWFzZTMxLW1haW50Cis3NzkzNCA5YjM1MWNiOWVmOTgzMzk1NGVkNDBmZDk3MWQ3ZDkxNzc5NmQ1ZjFhIHB5M2sKKzc3OTM1IGVmODE3ODQ3NzU2N2Y3YzA0YTljYjI3Y2Y3YzZhYjA0ZTdiNDYyMTMgcHkzaworNzc5MzYgY2NjNmU1ZDVhM2IzODc5MGQ1Mjc3Zjc0YTUzYzRiOTJjZmVmZjZhNyBsZWdhY3ktdHJ1bmsKKzc3OTM3IDk5M2Y3MDNhNjFiYWUwOGU5MTBjYTdhN2I4NmE1MjAxODhkMDhkNDQgcHkzaworNzc5MzggMmIxZDY2NWU2NjI4NDY4NmMwNTI5OWUwMmE3MGVlMTAyNzlhYzk4NCByZWxlYXNlMzEtbWFpbnQKKzc3OTM5IGRhYmI3NzM0ODUwMWFhMTZkMjZhNmMwYjA5OTZhYzgwNDE5YWNlNmMgcHkzaworNzc5NDAgNTRkMDI1YjJmNDVhOWYzZTE3ZTAzNmM0ODY2NmVjMGRkM2U0ZGU2MyBweTNrCis3Nzk0MSA3MmVjZmZmZTlmMDI1NjZhYzc2YjllMGNhNDY2ZTE1YWZhYWM5NDEwIHB5M2sKKzc3OTQyIGZmMDQwODgwZDFiZTk4NDkyYWRlYmY3NThhZjk3YWY5N2EyZDBmYTcgbGVnYWN5LXRydW5rCis3Nzk0MyA0NTg3YjA2MmI4ZDA2NWNiNzkwNmRkNDNkNTBkODgxOTg1ZGRiN2E0IGxlZ2FjeS10cnVuaworNzc5NDQgY2U0Yjg0YzAyZTVhNzU1NmM4NGZmOWM2ZThmOGI1ZjFhMzQxZGU1ZCBsZWdhY3ktdHJ1bmsKKzc3OTQ1IDMyMzQ0YzVjZjkzMmVhMzI2ODgyYWNjMTFjZmJkY2RlNWMxNjMwYzEgcmVsZWFzZTI2LW1haW50Cis3Nzk0NiA3NDQyZGI1NDc2NDVlMjBlMzRhMGNhY2VlMzJmNzQ5MzhkYzM3MWM0IHB5M2sKKzc3OTQ3IDBkN2U1ZWRjNDUyNjgwODcxOTIzY2VmNzg1NWI2OTEzMTgxMjI5NzAgcmVsZWFzZTMxLW1haW50Cis3Nzk0OCA4ZDgwNWM2YzJkYjM3YmU2NzljNWZjMTJjY2I0M2YyNzcyMDY0NzdmIHB5M2sKKzc3OTQ5IDM5YzhiNDc4MjRjNTA5MTU0Njg5YmM2MzlhNWRhM2RiZmU1Yjg0M2EgbGVnYWN5LXRydW5rCis3Nzk1MCAxYzdmZWFjMGQ2ZDYzODhiYzZiNmRhMmUxZWNiNzU1NGU5MDFjY2YzIHB5M2sKKzc3OTUxIDhhMmViNzc2MTIzMDk3MGFkYWFjZDEwOTNjMmQ4YTk4MzcyMWNkMWIgcmVsZWFzZTMxLW1haW50Cis3Nzk1MiA0YWU4YjljYTQwZmZlN2FjYTcyMDlmNmFiNDAyZDIwZjRlNzJiMTM2IGxlZ2FjeS10cnVuaworNzc5NTQgZDc1Zjg4N2RhNzcyZjgxZWNkNDYyY2E2ZDY3Mjc2MmYxMGYxZDEwZiByZWxlYXNlMjYtbWFpbnQKKzc3OTU1IGE2NGEwMTM0ZTY2Y2UwODljNWUxNDIyNTA5NGQ3N2EwYTU1M2Q4MzUgcmVsZWFzZTI2LW1haW50Cis3Nzk1NiBhN2E3NzBiY2U5M2QyNWYxNDBjZTYxZTI4MzY1ZGZiZWJmYzlkOTdlIGxlZ2FjeS10cnVuaworNzc5NTcgMzBlNDI0NmVlODAzMjg1MDkxNGQzMTJlYTIwMDdiMDdiYzNmMjI4NSBsZWdhY3ktdHJ1bmsKKzc3OTU4IGZiYTFjNzhmMTA0ZTljMzk3OTM3OTlkNjg1YjRmZmJlZDIxYTg1NmIgcHkzaworNzc5NTkgM2MxODhlZDhlNTIxZWUzN2M0MTRlMTM1ZjBlY2ZkMmQ2OTAyYzJkYSBsZWdhY3ktdHJ1bmsKKzc3OTYwIDcwM2EwNGUyOWNlNjM0MjNlMTZkYTFhZjQ2ZmUyNWZlZTAyYmYwZTggbGVnYWN5LXRydW5rCis3Nzk2MSBjNzI1NGU4YmMxZGJkMWZkNDE3ODE1MmFjNWFlODE1MTdmYjBiYzdjIHJlbGVhc2UyNi1tYWludAorNzc5NjIgMGMyYjA4OTg2NDNlMjk2ZDFlZmZmNjIzY2I1Njc2NDM1MmRlZWQxYSBweTNrCis3Nzk2MyA1MTRiNTZlZmQ4OWEyNDM5ZDg0OGRmMmEyM2RmNGMyYTJhNjE5NTcwIHJlbGVhc2UzMS1tYWludAorNzc5NjUgZWViOGE5OWNhMGM1YTJmOGYxOTNlNDc3MGRhZjM2YzNlMWNlYjU5MiBweTNrCis3Nzk2NiAyZjgyOTM5NmE1NGUzN2JlZGNhOTI0YmRkMDAxYTBlYjU1YmMyMWI5IHJlbGVhc2UzMS1tYWludAorNzc5NjcgZjQ0MTQyMmY2ZjU1NzRjOTVjYzYwOWYzZTZkODNlNWJkY2RkOGFkNiBsZWdhY3ktdHJ1bmsKKzc3OTY4IDNjMDIwMzQ5OWFlNTM1YzVlNTU3ZGNmMWMxNDA0NDYwNTk4MjFjOTQgbGVnYWN5LXRydW5rCis3Nzk2OSBiYjZmODNiOWJhNDllMDJmMjBjYzllMDViZmVjYjNkZGQ0MTYzZDE3IGxlZ2FjeS10cnVuaworNzc5NzAgNTRlOTc1NTgyYzY1NGE4ODQ2NTZlOWU2MDNjMjFlOGEwNzRiYmMzZCBsZWdhY3ktdHJ1bmsKKzc3OTcxIDQ1MWVkMzJjZmM1MDYyNDIzM2I4OTUzZThjMWU5MDUzMjFlNjU4ZTMgcmVsZWFzZTI2LW1haW50Cis3Nzk3MiAzN2Y2MjY0ZDFhYTMzOTg5MWIzNmQ2ODE2NGI2NjFiYjVhMzQzYjNjIHB5M2sKKzc3OTczIDRhYWIxNGFmNWUyZGY3MjA1ZTBiODNjZTE4NTA2MjExODc4MTRjNDQgbGVnYWN5LXRydW5rCis3Nzk3NCAzMmUwZjFhYTM0YmNmNzMxMjBjZWE1YzQxYjRkNjdmNjVlMjI3M2FjIHJlbGVhc2UzMS1tYWludAorNzc5NzUgNzgxM2M0MDk0MmU5OTRhOTRhM2JiNjU2MGNlNWIwZWU3NTFjYTMzNiByZWxlYXNlMjYtbWFpbnQKKzc3OTc2IGVlMDhmYjgzNWJmMTJhYTg1MzAwOWE3Yjc4YjU1NGJmYWZkNWU3MWIgcHkzaworNzc5NzcgMTUxNTBjZDhmZDM2NTM0OWZjNGE0YTg1NTU3NTdjOGZiYjcyNmQyZCByZWxlYXNlMzEtbWFpbnQKKzc3OTc5IDMwNGNlOGZjYzMyYTFmODMwODJmYmRmNDVkNjU4NzdhZWUzZTY5NDUgbGVnYWN5LXRydW5rCis3Nzk4MCBkZTVmYTkyNWRmZWE2MTUxMzI4N2IwNjk5MzNlYmE2ZjUyN2QzNjg0IGxlZ2FjeS10cnVuaworNzc5ODEgODFmMmVjZDNiMTNlOGZkZjJjODE3Mzc5ZDA3MTA2YmY4NzBmZTcwYyBweTNrCis3Nzk4MiBjMWE3Yzk0OWMxMTAwZDhmYWRkZTUwNWNkYjQ2NmZmOWVkZjM5NTBkIHB5M2sKKzc3OTgzIDc2Y2Y2MGUyZDAwNTc5NmY2MDAyYjU4MDdkNGI4MTA5Yzk0ZTkyMzMgbGVnYWN5LXRydW5rCis3Nzk4NCBjZmE4N2Q0NjZjMDQ0ODAzZTIwOTFiNzg2YmY0MTFmYTdhNmE5NjNkIHB5M2sKKzc3OTg1IGI1YWQyMTkwZGNlOGMwZjZlZGU5YmZmZjBiYzhhNjk3Njk0NmI1ZmEgbGVnYWN5LXRydW5rCis3Nzk4NiBlMWJkZWJkMTM2ODU5ZWVkYTFhYjkzOGEwZWEwYWE2Y2ZkMDc0NDhhIGxlZ2FjeS10cnVuaworNzc5ODcgNDI2Y2M1ZjJhZDI0MjBhMGJiNDk2MzEwMTRkMWRmZTI4MzYwYTUwZSBweTNrCis3Nzk4OCA1NTUwNTg0MmU5NzM5ZWEwZTNlZWI4MjY5OGYwMTE3YWM1ZjI3MzIyIHJlbGVhc2UzMS1tYWludAorNzc5ODkgN2M5MzM2ODMwMTBkY2IyOWE4ZTNmNzgyMTFiMjQ3M2ViZDdhMjQ3YiBsZWdhY3ktdHJ1bmsKKzc3OTkwIGViNTUwZTgzOTQ2MDk3OGYwMDY3ZWZkN2NiMTZlMjQ0NzZmY2ZlMDIgcmVsZWFzZTI2LW1haW50Cis3Nzk5MSA1MTNjNGEyNjAwYThiZTA3NjM2ZDhjOTQ1YzUxYWNjYjQ4NWE5ODMyIHB5M2sKKzc3OTkyIDVlNTE4MzVmODU5NTEyZWQyYzI0OGJjMTEzNzJmMmYxMDMxMTk4OWYgbGVnYWN5LXRydW5rCis3Nzk5MyAxY2YxNmNlNDE1ZWFlMDZlNDYxNjk5MGE2ZjZiMDQzYWU0Y2QyODk3IHJlbGVhc2UyNi1tYWludAorNzc5OTQgYjExYjgwMzAyNjhkZGMzYTBlYzA0NzA5ZTRkYTMyYzNiYTZmZGUxMSBweTNrCis3Nzk5NSA5NzljM2I2MjUwODM5N2FjOTg3NWU0ODM3YWMzNjQ3OGUyMjE3YzAzIHB5M2sKKzc3OTk2IDExYjdjODEwODE2YmVmNDg5Mjg3ZGJmMjUzOGMxMjcwZWZiYzdiNWUgcmVsZWFzZTMxLW1haW50Cis3Nzk5NyAzMmEzNjBiMTNmYTMyMDZhZWI0NDRmYjc5ODkyMzU3NWNlNGZkN2ZhIGxlZ2FjeS10cnVuaworNzc5OTggY2QzMWE5ZDY3ZWIxMzlmNTMwNjFjNDg2MGYwYjVmZGExMjIxYzc5OCBweTNrCis3Nzk5OSAyNzQxNmNlNjJhYzZiMTE0MGJmYzE1MmYwOTk4OWE4N2Q5ZDhkODU2IGxlZ2FjeS10cnVuaworNzgwMDAgYzAzYzkzYWM4MTUxYzMzMjE3ZTFmZmUwMWM1YmVlNGJhYjBjZWQxZSBweTNrCis3ODAwMSAyYTcwYzcyYjg3YzdmMTJmOWQwOWVhYjgzMjE3ODNiZDkyNjYxNDIyIGxlZ2FjeS10cnVuaworNzgwMDIgZWRlYTQ4YjEyMGUzMzliZWI1ZGJhMmY0YWViOTUxOWZmNjdiMmNkZCBweTNrCis3ODAwMyAzZGQ5MjFhMTkwYjhlMWM2MGY1Y2I2NjYxYmY2ODkxNGU3ZDM0MmJjIGxlZ2FjeS10cnVuaworNzgwMDQgNDJhYzhjYjEzZWQwZGY4MDNlZjM3Y2IzZmM3MjQ4NTAzYTEwYzdiNSBweTNrCis3ODAwNSBhMTNlOGQxZDM3OThjNTAxODMzZmU2YTY2MTViYjRlNzNiNmI4Mjk5IGxlZ2FjeS10cnVuaworNzgwMDYgZmYwZmNkNTE1NGQzMzE2NjdkNWE4NTYzZDRmOTVlOTg3NzJkMzY2YSBweTNrCis3ODAwNyBlOWRiYmNkNGFkNDBhYTdmODY4YzNmNmIxMTViNzYyNWZlNzhhY2Q2IGxlZ2FjeS10cnVuaworNzgwMDggOTRkMTQ4MGJjNTYzMDQxYzIyZDE1ZDU0ODgxMDZiYzVhMTc4ZjIxMiBweTNrCis3ODAwOSA3OGU3OTkyZjI4NTc5ZmE1ZDMyNWM4Y2ViNzdmOTI1YzgwZWI5MWE0IGxlZ2FjeS10cnVuaworNzgwMTAgMGQ4ZjIwZTQ2YzFmYTE5NDc0NmEyYTMzMzcwYzRlN2ZmNDU0OGEyYSBsZWdhY3ktdHJ1bmsKKzc4MDExIDc4Yzg4YjA3Nzg0MzFhNzBhMmMyYjY5Y2RjMWIzNTEyZmE2NjVlY2IgcHkzaworNzgwMTIgOGU1OWY5Zjc4OGY1YjA0ZTYwNTY1MWVlYjcxYWRkZTE1MjUxNmZmZSByZWxlYXNlMjYtbWFpbnQKKzc4MDEzIGZhYjM4MDY3NDk1OTZmMzExYWY5NDU3MjYxZjk1M2UyZDM2NTlhODMgcmVsZWFzZTI2LW1haW50Cis3ODAxNCAyYjhmNDU4YmJjZjU4ZThkNzFhZjZmYjRjY2FkNGI0NjVjZTEyMTdiIGxlZ2FjeS10cnVuaworNzgwMTUgMTNmNjk1YWI5MTExY2M2OWRmMTAxMzExMmUyYmFhM2Q0YjIwMDI0OCByZWxlYXNlMjYtbWFpbnQKKzc4MDE2IDBlYjQyMjYyNGRiNWVmYTNiZjgyYTg4M2JkNThjNzc0MDMwODZjOGYgcHkzaworNzgwMTcgOWNlZTA4NzkxNWFhMWRiMmQ4NDM3YTM2OGY4OTNmMDU0NzI4NmUxYyByZWxlYXNlMzEtbWFpbnQKKzc4MDE4IDUwYmQ5Y2QyZWQ0ODE0M2I3Yjg5ZDQ0Mzg3MzY3MjY0ZDkyYzU2MDAgbGVnYWN5LXRydW5rCis3ODAxOSA3MWUwODkyNjViMjg1M2NjYmIzZjUyNDA5OWIzN2JlODc0MDM2MzljIGxlZ2FjeS10cnVuaworNzgwMjAgNDE4MDU1N2I3YTliYjlkZDUzNDFhMThhZjE5OWY4NDNmMTk5ZTQ2ZSBsZWdhY3ktdHJ1bmsKKzc4MDIxIGZlODMyYzVkMzA2NmIxNjMyN2QzZDJkMjUzNjg1M2VlNWQxNWRhNWIgbGVnYWN5LXRydW5rCis3ODAyMiA1ZTlhYjRjMjViOTE0YThiNjY4OTA4MDk2ODBmODllZWNmM2VlNzY4IGxlZ2FjeS10cnVuaworNzgwMjMgODJjZTNhMDg1NzFjOTUyN2FmYjU4OTkzMGQwODdlMmE0NGJhYjE5NiBweTNrCis3ODAyNCA0MDAyZjFjNDZiODY5Y2UzN2QzMGRjNjllZThjNTBjOThiOWY2MjdhIGxlZ2FjeS10cnVuaworNzgwMjUgNjNiM2E2NWFmZjUyYThlMmVmZjg5ZDIzZWE3ZjkzMzUwYjZhYWMzZiBweTNrCis3ODAyNiBhZDY4M2NlZGZiYjNhOWMyOTI2YTZmMjZkNDBkNGZmM2FhNWEyMzkwIHJlbGVhc2UyNi1tYWludAorNzgwMjcgMjIyYjZkODBlNzY5MjQwMDFmMmYzOGRmYTAzNzBmZjk4YTdjMWY5YyByZWxlYXNlMjYtbWFpbnQKKzc4MDI4IGRkMjIzMGE4YzQxZGExMTdlMTU2YWFjMDk1OGNiZDQxY2E4ZDhkZDggbGVnYWN5LXRydW5rCis3ODAyOSBjYWNmMjA3ZmJkZWQ0M2M0YjQwNmM0MjBiMjFhMWI5YjE5NDU1YzBjIGxlZ2FjeS10cnVuaworNzgwMzAgZTljYjNmZDM0MWU5ODJlNTMzMjUyN2JkOTE5OTg0NzM1NzdkN2NmYSBsZWdhY3ktdHJ1bmsKKzc4MDMxIDg3ZDhiOTVmNTY3NTYwNjE1MGNlMmU2ZmVjMzU5NTlhMjA2YTFjNGUgbGVnYWN5LXRydW5rCis3ODAzMiBkN2Q0OGEzMGFkZjMwMzRiOGI4Njc4NjIzNTEwMDM2NmNmMDdjNjMwIGxlZ2FjeS10cnVuaworNzgwMzMgNjA5ZmExOGIyNGJmY2M2YWI4NGI5ZWUxM2I1MDQ5MmU0ZDJiYTE2ZCBsZWdhY3ktdHJ1bmsKKzc4MDM0IDgxYjIzMDZlNmJmMzFiZTNkZjQxZmRkZGMwNWI3ZWQ2MmI1MWVhNjggcHkzaworNzgwMzUgZjJjOTFiZjViN2I5NjYxZTY2MGYyODkyMzNlODRjYjNjOGNiYmU2OSBsZWdhY3ktdHJ1bmsKKzc4MDM2IDZjYTlkOTZmMTQwZTkwNDI5NTE0YmFjZTBhOTQ5NTcwMWIwNzcxZmQgbGVnYWN5LXRydW5rCis3ODAzNyBjYzM2N2MwNzcyNDU4ZDNlZGMwODE2OTUwNTI1MjNmZTI4OThkMTFiIGxlZ2FjeS10cnVuaworNzgwMzggZWY4ZjFjMmNiNTFmOTBiNWJhNmFkNjk3ZDY2N2QwZDFjNTRlNDgwYSBsZWdhY3ktdHJ1bmsKKzc4MDM5IGU0YWU3OWQ1M2UyMzdhMzVlOTU3ZDJlNTVkNTljYmY1ZGVmNzhmODMgbGVnYWN5LXRydW5rCis3ODA0MCA4NzM4NzU2NTdhZDBmM2YyMmJlMjg0OTE0MTYwNjBkMDI2MzU0YmI2IGxlZ2FjeS10cnVuaworNzgwNDEgMmJhNzY3N2JmYTk1MTQ4YmM0NmU2ZDhhNDRjY2ZjNjBiNGFkOWFkNyBsZWdhY3ktdHJ1bmsKKzc4MDQyIDczNDY1N2I0YjNlNWNmODA1YTZmYWE0YzQ5YmZmM2JiNDEyOWM4OTIgbGVnYWN5LXRydW5rCis3ODA0MyAwM2JhZjZkZjMyZDI2OGUzMTlkMGJjMWM5OGFiOWM3ZjRlZGFjNDM0IGxlZ2FjeS10cnVuaworNzgwNDQgNTUxNDRjYWUwMmJhYjFkNTEzNzg3M2Y4OTdhNWU4OGViZTIyZjMzOSByZWxlYXNlMjYtbWFpbnQKKzc4MDQ1IDBiNDJlMWFhNGE4YmJiMzBmNTA4MTQ4NGZmOTJkMGJkOTQ1NDA5ZGIgcHkzaworNzgwNDYgMjIzNTg3MDBhNGQwYmJiNDc3MDY1NGZiNTE0M2NlNTViYjllMzc5NyBsZWdhY3ktdHJ1bmsKKzc4MDQ3IGEyYWIyNmM1ZjA4YjVhNDhiNzM3NmVhMjgwZTdmMmFhOGE4ZDEyZTcgcmVsZWFzZTMxLW1haW50Cis3ODA0OCAyMWE0NzFjMzQ0ZTNhMDU5ZmFkYmM5ZGRmMGUxZGIwNmMwMjc0NDQ2IGxlZ2FjeS10cnVuaworNzgwNDkgYjdhNWRmMTQwODY5ZTdhZDY2YTY0YWU3MmZkODMyOTUxZGNlMWEyMSBsZWdhY3ktdHJ1bmsKKzc4MDUwIGM1OGVkMjU1NGY1Yzg3MzZiZDAxMjFhMWRiZTA4ZTUxNGI2MDM2YmQgbGVnYWN5LXRydW5rCis3ODA1MSBlZGUwZjA1ZGM2YzA4MTZmMzU3NDQyMmRjMmQzZDg4ZWVkNDhlYTBlIGxlZ2FjeS10cnVuaworNzgwNTIgYTY2ZWI4YTYzZDViNmE4NTljZWJkZWU0MGEwNjgwMzUyN2I4OWYxZCBsZWdhY3ktdHJ1bmsKKzc4MDUzIDEwMTAxY2Y4OWQyMDRhOGU3Zjc0Mzg3YWYxN2M2NDdjMDNhMDE2OTAgbGVnYWN5LXRydW5rCis3ODA1NCA3YzI0ZmVmYzJjZDRiMWMzNWJlMzc1ZDQ0OTBiNWE1ZGQ2YmEwMTM5IGxlZ2FjeS10cnVuaworNzgwNTUgNmI4MmEyMzIzNTAxMmE3NGEzN2YwOGY4NGI2NjI0MWU5ODNmODQwZSBsZWdhY3ktdHJ1bmsKKzc4MDU2IGY0YzUxYWUxNjdjNTUyZDUzNjBjZTQxZTg5ODRmNDVjNDYwZTNmMDIgbGVnYWN5LXRydW5rCis3ODA1NyA4MjE0ZDRmYzMyMzQzNjViNzZkNmQzYzZjYjU3OGQ4MzgzYTM5N2MwIHJlbGVhc2UyNi1tYWludAorNzgwNTggZmRlYzMwYWViOTNmM2FmMzdiY2VjYWRiYTQyMWI4MzdlMWUwOGMyMCBweTNrCis3ODA1OSA1MmJiNDAzMjg2M2UxNjIxN2RhMjZhMzJkOTc3N2NmOTc1YjkwMzhhIGxlZ2FjeS10cnVuaworNzgwNjAgOTM3ZWIwZmUxZjljMWMzM2UzMjYyYTgyZGEyMGQzNDAyYzU5NGVmOCByZWxlYXNlMzEtbWFpbnQKKzc4MDYxIDNkMzc1MzAxMTE1ZGIzYzAxYjExYjQ2NTFmMmVhZDhhY2EzNmZlMmIgbGVnYWN5LXRydW5rCis3ODA2MiA2YTZmYzBjMDkxY2RlZmM2NWU5NzczN2RkOTVmYzE5MmVkMWI1MjU3IHJlbGVhc2UyNi1tYWludAorNzgwNjMgNGFjYmJiNWE0OGZjZDAxY2NjM2M4MzhkMGE1OTY4N2QyNGEzNzZiNyBweTNrCis3ODA2NCBiNDdiY2NhMDAxNWFjNjBkNTIyNDlhNzkwZjNhMGFlNzZjNjQ5OTM0IHJlbGVhc2UzMS1tYWludAorNzgwNjUgZGU1M2JhYTVhYzdkZThiMzFiNGI2ZDQyNTE0OWFiYTY0OGQ4YjQ0OCByZWxlYXNlMjYtbWFpbnQKKzc4MDY2IDM3NzZjMzFjMGU4MjA4YmE3MDUzY2QwM2VkYTkwMjlkYTI4OWJmZjQgcHkzaworNzgwNjcgYzk2NDU3ZGY0MGUwZDljYWJhMzA5N2ZhOTc1NzhmNDRmZmI3ZTU1OSByZWxlYXNlMjYtbWFpbnQKKzc4MDY4IDRlNDBhMjkxMTc1MDkzMWFlMDMzZjcyNzM1ZWNmNzE5MmE1YmUyYWMgcmVsZWFzZTMxLW1haW50Cis3ODA2OSAxMGYxOWQxYzNiNzcxOGJmOWY1ODczMmFhYTE0N2E4ZTNhNDY3YzY2IHJlbGVhc2UyNi1tYWludAorNzgwNzAgNzljMDIyZDc3MjEzYzI0YTIyY2QwY2RlMTNmM2Q1YzAwZjFhMDEzNyByZWxlYXNlMjYtbWFpbnQKKzc4MDcxIGNhNjdjMzdjZDI2ZGMwMGI4OGUwZmMyYWE5ZjkxOTdlNWU2ZGQ0ODUgcmVsZWFzZTI2LW1haW50Cis3ODA3MiAxOTdmMjQzZGRhYjUzZTg4ODkwYTViZmI0MWYyOTZkOTI3ZDgyNTBmIHJlbGVhc2UyNi1tYWludAorNzgwNzMgYjBjNzQzYzdkN2VlYWYwYjRjNGIxYTA1MzI2NzU5YzcyNThmNjkyMSBweTNrCis3ODA3NCA3ZDA3ZGEyYjdkY2FiNzNmMGJlMzY2NDg2MTMwMjQxYWY4NzM2YmNlIHJlbGVhc2UzMS1tYWludAorNzgwNzUgYjZkZjc1YzE3ZTAyZGMwOTA2MWJjNWI5NjY5Nzg0Yzg3ZjBlMzIzNSBsZWdhY3ktdHJ1bmsKKzc4MDc2IDU2OTQ0NDRmZDVkMmU5ZmU3ZTZjZjFlMzVlNzQ2NDRhOWE3N2JhZDEgbGVnYWN5LXRydW5rCis3ODA3NyA1M2Y4M2YyMDJhNmQ2ODQ2OThkMTRkZDNiNzRjODk0MDFmOTZjZGUzIGxlZ2FjeS10cnVuaworNzgwNzggOTE4OTgwM2Y4MzQwNzg2M2Q0NjlhNjlkZjAzOTczYWIzMzczODk1YiBsZWdhY3ktdHJ1bmsKKzc4MDc5IGIxMTZmZmJjZDFiMDcxMTlhMTY0MTY3ZTU4YzUyOWE2YTVmZDBkOTQgbGVnYWN5LXRydW5rCis3ODA4MCBkNTMwYTcyYjQ2ZmM4MmI5Yzg4YTA2MjRiOGY5YzIzYWYzYTFmM2YzIGxlZ2FjeS10cnVuaworNzgwODEgODdjZDg5M2NiOGJhMjZkMjUzOTlhZTNhMmJmOTNjOTgwNGFlNzBmNyBsZWdhY3ktdHJ1bmsKKzc4MDgyIDIxODA0ZGM3YWZmNGI0MTliMGVlZGViM2ZkMDA2NWIwNmI4N2NmZTAgbGVnYWN5LXRydW5rCis3ODA4MyBkZmQ0NmE1ZGI4NzJiZWJmZGY1YzE1YTY1ODVmNDZiNjMzM2Y3MDY3IHJlbGVhc2UyNi1tYWludAorNzgwODQgMGNmZTgzNmM0YThkMDYxMDRiMjBlM2M3NGRjYjkxMjhhOWMyOWFiZCByZWxlYXNlMjYtbWFpbnQKKzc4MDg1IDZhODkyY2VkZjNhNDNhZjI1MDNlMDhlYjdlMjFiNTM1MDg2YzQ3NmIgbGVnYWN5LXRydW5rCis3ODA4NiA4NmE4NGJlMzNlNmFhODZjM2M3ZGUyZTE2ZmJlZWZjMzM4NjYwNGQwIGxlZ2FjeS10cnVuaworNzgwODcgMWJlNzExNDQ3M2ViNWE5ZmU3MThkZDRkOWVjNGQ3ZTAxMWJkMjlhNiBweTNrCis3ODA4OCBiZDVlZTEzZmRkYTFlY2Q4MDU5NTRjNjFjNGZmNzNiMDZkYjQzZWE2IGxlZ2FjeS10cnVuaworNzgwODkgNTdmZjc3MDJlYzc0ZTdiOGZiYjMwNWNkZjAxN2M0ZDNiNjY2MGEzOSByZWxlYXNlMjYtbWFpbnQKKzc4MDkwIDBjZjk3YWQyZmQxZjYxYThkZjViNWFhMjZjYjlhMjFhOTdhOTkwYTMgcHkzaworNzgwOTEgNjQwMDRhOTg2MmU0NzIxZDU4Njg0MWI2MDIzN2UwMzg5MDRlMWY5ZiBsZWdhY3ktdHJ1bmsKKzc4MDkyIDgwZTAyMWZlMzRlZDdiM2I5MDQ5ZjJkNDk5NzQ1MGM1NzgyYTYxZjcgcmVsZWFzZTMxLW1haW50Cis3ODA5MyA3MGUxMTVjMzRmOTcwOGE0MjFmMWM4Y2Y0MTZkZjI2MGNhMjU3NGY0IGxlZ2FjeS10cnVuaworNzgwOTQgM2Q5NGIxZTc3OWM1ODI5MmI1NjNmZjZhMTE0ODVmZmI0OWNmMzliMiBsZWdhY3ktdHJ1bmsKKzc4MDk1IGI4MzRjOGVlOGU3YzkyZGRiNDQwYWVkY2JjODZkOWZkYjQyMTkwNDkgcHkzaworNzgwOTYgZjEwOGY2Mjc1ODU1NTY3NDc0N2JmYjllMjE1NDY0ZDY4NGJjODZiYyByZWxlYXNlMjYtbWFpbnQKKzc4MDk3IGEyODA4NDRiNjhmNDg1NTRjZjg2MGM2NDg3ZDliMDU1MzYyNzgxYzQgbGVnYWN5LXRydW5rCis3ODA5OCBmYWNhOTdjNWYwMzgwNDYxMTY0NjNiNjMxYjY2ZGEwYzc4NDEwNmNmIHB5M2sKKzc4MDk5IDEzZmNhYTc5MzI0YmI4NTE0ZTJjM2JhOGNiMWExMmFiNTVjNDRkOWMgbGVnYWN5LXRydW5rCis3ODEwMCAzZjM5MGY0OGIxMTMxNGVkYTQ2ZWNmNGY0ZDQ2YWRmODA5Y2FjNjIxIHB5M2sKKzc4MTAxIGM4YzBhYTFmZDRhNmQ1MjllMDMwNzc1NmJkN2QyNDE0NjhkMjBiZDkgbGVnYWN5LXRydW5rCis3ODEwMiBjODZkOTNhZWNkN2EyNTAyZDliNzU2Mzc1YmQ1ZjA3ZTE2OWI3NWU1IGxlZ2FjeS10cnVuaworNzgxMDMgZDg0ZGFjZGIyZDEyNTI0OTgwYTY5MWU1NDgyMjJjNzJiOGNiM2JmNiBsZWdhY3ktdHJ1bmsKKzc4MTA0IDYwMGFiOWNlZTQwMzUwZTYzZmMwNDJjZTJjYzZkNjFkNWNlNzJlOGIgbGVnYWN5LXRydW5rCis3ODEwNSA0YmNmOTY4MjlkMWEzZDg5N2Y0MWU3ZGE1ZTU2ZTExYzQ4MTEzNjBlIGxlZ2FjeS10cnVuaworNzgxMDYgOTM2NzZhZTk3YzY4YjUzZTZhMDk2OGMzNDE1OTlhMGFmZTM1Y2ZmYSBsZWdhY3ktdHJ1bmsKKzc4MTA3IDQ4NGRhMTNmMTI1MzUzYzdjODQ5ZTZkMGYzMTJjMWU4YmZmNGVkNDUgbGVnYWN5LXRydW5rCis3ODEwOCBkYmYwM2ViN2MxMmVkNDIwY2U2OGQ0N2E5YzE3ZTE3ZmU0Yzg0Y2I4IGxlZ2FjeS10cnVuaworNzgxMDkgYTk4YjEzNjA4ZDIzYTQ1ZGIwNjI2ZWEyOTk3YmJiODY5ODMzYWE1NSBsZWdhY3ktdHJ1bmsKKzc4MTEwIGU3ZTg5YjQ1ODM0MThiOTQxZDUyOTljZjg4OWQ5MjdlMWFjMTkwOGYgcHkzaworNzgxMTEgMzdlODlkZWJlZjZhM2RlNDk3MGZhNGIzOTZkZjM4MDYzZmRmZGM4OCByZWxlYXNlMzEtbWFpbnQKKzc4MTEyIDc1ODk2MDVkYWVkMTA0MmFmOTkzMjUxNGNjZDhkZmI5N2M5ZGFhMmYgbGVnYWN5LXRydW5rCis3ODExMyBhOTFmZmM5NjQ0ZWI5ZTZmMjY4NzIxNGE3NWE0MDdhYTY4Yzk5YWEwIGxlZ2FjeS10cnVuaworNzgxMTQgNDdmYTU0ZGFiMzhjYTcwYmQ2M2E0NWFkOWRiMDkzOGM3MzVjNTYwZiBsZWdhY3ktdHJ1bmsKKzc4MTE1IDRlMGRiNDQ1NjRiMTczZDA5ZjhhN2E1YzAxMjhhNDQxY2JjYWViNDAgbGVnYWN5LXRydW5rCis3ODExNiBmNDhjNDcxYWM4YzllMGU5OGJiYTE2OGYxM2EzMTc2NGY2Njc4MjFiIGxlZ2FjeS10cnVuaworNzgxMTcgOTZjMjY3MDNiNDkwYTRiNTc5N2MyMzI1MzQ4NDMxNjcwZmVmNDhhMSBsZWdhY3ktdHJ1bmsKKzc4MTE4IDhiZThkNWRiOTZhMjVjYWQ4ZTljMjY0YTYzZGVjZDZmOWYzYzdkODQgcHkzaworNzgxMTkgNTllMTYyYjlmMjI1NDNmNzQ4YjU4MmUxZTIyNmY0NmE5ZDc1YmMzMSBsZWdhY3ktdHJ1bmsKKzc4MTIwIDNlZWYzOWU3Yjc0ZjMyMjk0YzgxZTYxZGVjOGFkMTczNjhkODEwODcgcHkzaworNzgxMjEgZTVjNTY0NjU5MjAzNzM2YjEzNDM4ODllNWMyZGEwMTI0ZGUwMzg4MCBweTNrCis3ODEyMyBlYThjYzEzOTUxYjBiYmE1YzQ4MjBjY2QzYWJmYzEzZWI5YjUzZGZkIHB5M2sKKzc4MTI0IDZhNmVkZGI0NTk5NjdiMTAwMGU2NDcwOWQwZDJmMmM3YWU0NWFhOWUgcmVsZWFzZTMxLW1haW50Cis3ODEyNSAyNjUyODU5MTIxN2NmMzczZTM1NmQ1ODBmZmIxN2Y0MWVkZDAxNDMyIGxlZ2FjeS10cnVuaworNzgxMjYgYmRiZTEzNzlmM2VhZjdmMmZkYzk2YzYxZjEwOGIyZjMxYTU5OTFlNCBweTNrCis3ODEzMCAwYmViN2M4Mjk0YzdmNDM5YzI0MzhkMjBkNThjNTMzMTlmMWNlZjg1IGxlZ2FjeS10cnVuaworNzgxMzEgMGFmNjk5ZjA5ZWUzZTJjZDA1YjQ4YmQ4ZGMzZGRlZjc0ZDdjNWUxMCBsZWdhY3ktdHJ1bmsKKzc4MTMyIDYxZDE3MDFkOWM2NjJlY2IzOTQ0Mjg0MzI0MTNmMWE5MTg3ODVjOTYgbGVnYWN5LXRydW5rCis3ODEzMyAxMTY1OTU5NGY5ODIyNWVlZTM1MTA0NGYxNzIxNTk2MWIwZGEwNzZiIHB5M2sKKzc4MTM0IGM1MjllNTFmODM3NzU4ZGJkNWExOWZhZDg3MzY1YTQxZTcyMGMwMDQgcHkzaworNzgxMzUgNWRjZWNhYzFjOGQ2NzVlYzAxODM0ZjM4NDlmNzQ0NGI3ZDRjYmM5NyBweTNrCis3ODEzNiBkMWUyZjc5NGQwMjA2NDI1ZmQ5Zjc3YWM1ZWUwYjI0NjAwYjIyYzk0IGxlZ2FjeS10cnVuaworNzgxMzcgMTcyZmRiMWQ3MzM3YWRiNGJjOGMxMGY0Nzk1MjVlOGExZDYzZGQwMyBsZWdhY3ktdHJ1bmsKKzc4MTM4IGMyYmRiZDkzNWI1ZTUwY2I2N2IwYzdiYmIyYTQ4MWIzOTZiZTUxNWUgcmVsZWFzZTI2LW1haW50Cis3ODEzOSBhNzFkZWE4OTg3N2Q4OTZmNjYwOTBmN2QxZmJmODI2NGZlNDdkMzFjIHB5M2sKKzc4MTQwIDY4N2NhNGIzNzRmNGM3NTY4YjQwOTYyMTkyMmM5ZTJmNmUzZDY2MjggcmVsZWFzZTMxLW1haW50Cis3ODE0MSBjNDVkY2JkY2FiODczNjJkYWM2YjRkN2NjMjYwOTg4YmRhOGI0ZTZhIGxlZ2FjeS10cnVuaworNzgxNDIgYmZkNDc5OGIxZjc3ZTAwZGI2YTc5ZDgxM2M2Yjc2MzM5NTY2Yzc0YiBsZWdhY3ktdHJ1bmsKKzc4MTQzIDE0ZWUzZDRjN2JkNWM4NTRlM2I2NjNjNGRiYjAzZjQxNDc0YzYwOTUgcmVsZWFzZTI2LW1haW50Cis3ODE0NCA4M2M4ZGZiNTQ0MjEyMGViZTFkOThjYjhmYTEyODEyMzkzNGVhNWQxIHB5M2sKKzc4MTQ1IGZiMDk4MGUxYTRjZTQyZjZjMzQzNDRlZDVjMjRkMTk4NDNlM2MzYjIgcHkzaworNzgxNDYgNWVmZmJkNTUyMWUzZjZlZjU3YTUxMjZkMzMyZDc0MDdlZDBkYjU2NiByZWxlYXNlMzEtbWFpbnQKKzc4MTQ3IDIzNmFiNDhlZGQwY2VhNDk4ODhkMzk4MDg2OWI5ZTQyNWRlNWJjNTIgcmVsZWFzZTI2LW1haW50Cis3ODE0OCAyYjliMjFiODMwZDkyNDYwMzVkZDhkNjM3NDg0YzA1Y2U4YmE4NmU0IGxlZ2FjeS10cnVuaworNzgxNDkgNDcxMjM5MTVlYTIwZDkwZGZmYTM3N2ZiYWY0NmYwZTgzMGNhN2Q2OCBweTNrCis3ODE1MCAzYmQ2NWIzNDZiZmNhMTY3NzhlYjYxODA5NGEzMTNmODkyOGRlNjk4IGxlZ2FjeS10cnVuaworNzgxNTEgNmFlNTBjMmMwYWI5ZjNiODE0ODg1MDQzZTUyNDRkYzUyNzhlOWI0ZSByZWxlYXNlMjYtbWFpbnQKKzc4MTUyIGYxNTZiNWU3M2IwZDFhMTMzOTM1ZjE1Zjc5ZWJjOTE0YWZhNjA0ODAgcHkzaworNzgxNTMgOGNmMDdhNjVkNmY4NTU4ZjljYjQ3NTFiNmM1NDE1NWQ2NTQ3NjMxMSByZWxlYXNlMzEtbWFpbnQKKzc4MTU0IDgyYWE5NjhhOTUwNGE2YjM1MjM1N2Y4Mzk3MTFkYjJlNDJmMDBiMjUgbGVnYWN5LXRydW5rCis3ODE1NSAzMzQ1MmQ5NTMwMWYxNjA3Mzc1ZWUzZTM2OGFjNGM3MWViYmVlMDc1IHJlbGVhc2UyNi1tYWludAorNzgxNTYgNTkwMjk0NDk1ZTVmMmQzMDYxNjA4YzE1NDcwNWM0YjU1OTdlZGRlOCBweTNrCis3ODE1NyAzNzg4YWIyOGNjYWQ3MGU2ZTQ4ODkzNWI4YzE0MzZlODBhNGY2ZTBjIHJlbGVhc2UzMS1tYWludAorNzgxNTggNTZmZTE2Njk4ZWU4Mjg4YWExMDQxZTNhMTc1ZDAyZGY5YTNlMzkwMiBsZWdhY3ktdHJ1bmsKKzc4MTU5IDdiMTYyYzZhOTM0NGZjMDJkZDk2NTI0ZTY1ZTVlOWU5ZTE5N2FjZTkgcHkzaworNzgxNjAgNmY2OWI4ZmMyYmEzZWY2OGE3MGQ1YjVjMmJlOTg2ZTlkMTJlNzQ2OCBweTNrCis3ODE2MSAxMjE4YTJhMjI1M2NjYTM0M2FhN2MwMTJlZTBhOTA2NTE5Nzc1ZTQ0IHJlbGVhc2UzMS1tYWludAorNzgxNjIgNjk0Yzk3YTJjZGRjMTZkYjMxZWUzMmNjMmVjZDU0Y2FiNGQ3OWU1ZiBsZWdhY3ktdHJ1bmsKKzc4MTYzIDIyOTZjNWU2YWQwZGU2NmJjNjQzNWU3NzRmZjFlOTBiZTBjYjdkMWEgcmVsZWFzZTI2LW1haW50Cis3ODE2NCA4MTI5NDYyY2FhMzA3YTU4OTFjNjhmNzBiZjI0ZDhhYTMyNGRlOTNiIHB5M2sKKzc4MTY1IDUzN2I2NjdhZDQ1MDAzYzhkNjY3ZDZmMGM4MDc4MmUyZjZhNTFhOGEgcmVsZWFzZTMxLW1haW50Cis3ODE2NiBiMWM5ZDZiY2YzZDRjODQyYzA2OTcwY2I4MTlhMDcyNmE1YjNiNjZkIGxlZ2FjeS10cnVuaworNzgxNjcgNmFjYjlhZmM3NWNkZTRhY2Q4NjA4ZjNhMzdjMjE5NGVmZDNkNTBmOSBweTNrCis3ODE2OCAzMzQ3YjRlZWFiNDA0ZTdkOTMzMDdkMzk4ZmZjZGY4NjY2Y2UxYmVmIHJlbGVhc2UyNi1tYWludAorNzgxNjkgMjYzYThmOTA1NzhkMDZmZGY3NTFiNzNhMThmYWQzN2M1OWIyYWQ0MiByZWxlYXNlMzEtbWFpbnQKKzc4MTcyIGQ0Mzc0MDI0NzUwMzMyYmQwOWExN2YxNGFmN2E5MzU0OTI0OGRhYTIgcHkzaworNzgxNzMgMzJhNGVlMjQ4MDY5NDM0ZTA4Zjg1ZmEzMDkyZmRlY2EwNjU4YThiMiBweTNrCis3ODE3NCA0MTU3OTIwMDdmZjllZWIzN2U2ODMwNTY4YjdiZGU0OTY4YTQxMTYxIHJlbGVhc2UzMS1tYWludAorNzgxNzYgOGM0YzM5MWNhYWViZjU3NjE3MzQ0ZjljZmQyNWEzNDdiNWIzOTk4YiBsZWdhY3ktdHJ1bmsKKzc4MTc3IGEzMzc1YTBmZmUyZTQ1OTA0M2VlMjE1MTYzNDk5MTA5NzJmZThlMTggcmVsZWFzZTI2LW1haW50Cis3ODE3OCA3MGY0NTZiZjc2Mzg3ZDQ5OTAyZDM5YWZmZjIyOWEwNDQ4ZDA0NDE4IHB5M2sKKzc4MTc5IGUwZWI5NzczYWY4MTgzNGQzZDU5OGEzNjEzNDI1ODI5ZDFhNTc0MjYgcmVsZWFzZTMxLW1haW50Cis3ODE4MCBhNzk2ZjI4YWNlZTJlNzVkYjE5N2MwMjRiMzAzMGI3NGM1ZWI4M2EyIHB5M2sKKzc4MTgxIDY4YmU0NDQyODkwOWVkMzRjN2ZmNjIwZjkyYmVjODQ1NTU5MDkwMTEgcmVsZWFzZTMxLW1haW50Cis3ODE4MiBkYzEzMDRmMDQ1YTYwZTUyNDY0OTYwNzBhN2Y3NjBiNTUyMTMwYjkxIGxlZ2FjeS10cnVuaworNzgxODMgYTBlZmNmOWI2ZWRkNTQyZTZlNWU2N2FmY2ExZGJkNGRmZWY3ODU0YiBsZWdhY3ktdHJ1bmsKKzc4MTg0IDIwMjJlZGU4Y2EwYzYxZjQ0ZmRmNDRjMDE2ZWIwMjc4NWYzMTQyZmEgbGVnYWN5LXRydW5rCis3ODE4NSA5MDFmY2FhZTUyNzVjZDg0NGVjNWI3ODdkY2M5NjEwMTdjNzk5MTk3IHB5M2sKKzc4MTg2IDg3NTZjM2RlNmQyNGI4ZTIyOWU0OTNlMGMxNmU1ZTQzYjJhMGE2YzUgcmVsZWFzZTI2LW1haW50Cis3ODE4NyBkMjkxYjgzMDQyZmI2Yzk4ZTFhNGM0MGJkMmI1NWQ4Mjk4Y2JkYjljIHJlbGVhc2UzMS1tYWludAorNzgxODggMzFmNThkOWM3MDE2ZWM4Zjk2ZDA2NTE5ZmY3OGQ3ZDQ4ZjRmZWJiYiBsZWdhY3ktdHJ1bmsKKzc4MTg5IDVlNmVkYjRlNzZmNTgzNzAxMTBjNjAwYTAwMzkxZDEyZjRhNTg1ODggbGVnYWN5LXRydW5rCis3ODE5MCA2YjI5YjlmOTY4MDU5OWNiNjU2MWUwZjc5MDkzMTEzNGE2NGZmZWViIHJlbGVhc2UyNi1tYWludAorNzgxOTEgZWY3NDc2NGE2MzIwOTgzNjEwNDMxYjMxNjE0YjVhM2U2NDUzZThkZiByZWxlYXNlMjYtbWFpbnQKKzc4MTkyIDNiYWFiZDFkNjhhMjg2ZjQzM2FkZGI0MjJkNWZmMzBkMGE2YjBlYTcgcHkzaworNzgxOTMgMDI5MzE4MjQ2OWE3NzM0ZGQzMmU0OGQ4YWJmM2U0Y2I0ZDg1OWEyNCByZWxlYXNlMzEtbWFpbnQKKzc4MTk0IDQxMWIzMjk5MzhkYzRjYWQ3ODE0MTM4MGYyNDM4YWM1MTQ3YjFmYjUgbGVnYWN5LXRydW5rCis3ODE5NSAxNzI1ZmJhYmU3M2JkNDA1YTA4NTIwYWM3NzgzOThmNjc5NDQzNDcxIHJlbGVhc2UyNi1tYWludAorNzgxOTYgN2FlNDNjMDUxMTZkM2Y5MzZhM2MyMmVmOGE0NDNmOTRmMjkxYTBkNyBweTNrCis3ODE5NyA2Mzc0ZTE4NTkzNDY0MTdkNTI1MDk4Njc3OGFkNmU0NTRlMmMyOWE0IHJlbGVhc2UzMS1tYWludAorNzgxOTggYjY0MWMxYWE2NDNlMTkyOGNhOTA0YmQwN2YzMTQwNDE2NmExNmNmMiBsZWdhY3ktdHJ1bmsKKzc4MTk5IDQ2NWMwNDdlZjMxMWMwY2M0MGYwZTdkM2JhYTUyZWEwMzc3MzljOGUgcmVsZWFzZTI2LW1haW50Cis3ODIwMCA3N2Q4NTkwMjY5MTljZTRhYmU4ZTIzNmRhM2VmZDg4Y2I5OGNiYThhIHB5M2sKKzc4MjAxIDRmNmMxYjgyNzdlYjQzNmVjYmJkYTUwODA2NDhmN2UyMjYwOWJiOGMgcmVsZWFzZTMxLW1haW50Cis3ODIwMiA3YTU2ZjJjYWUzZWNkN2RhMjc2MmZkODg5NjI4MmQ1YjdhOTY5ZDYwIGxlZ2FjeS10cnVuaworNzgyMDMgMTViMDQ5ZmFjMTkxYTQwNjVjYjA4NmM4Yzc3OTU3N2Y5MTk1NWZiNiByZWxlYXNlMjYtbWFpbnQKKzc4MjA0IGQ0ZmJiN2U1M2M5MjkyYjk0ZGZhODJmNWU0ZDIzNWQ5ZTdhOTlkMzEgcHkzaworNzgyMDUgYjczMjZmOWI1OTliNzBmMzUxZTc5YWMxMzRiMDIxYjRmODgwYWIyOCByZWxlYXNlMzEtbWFpbnQKKzc4MjA2IGViZmQwZWFlYmUyNzExOGYyOWE0ZjdhYmU3ODg4YzQyMGUyZTQ1OTEgbGVnYWN5LXRydW5rCis3ODIwNyBiZmIzZTg0Zjg1ZmZmNTllZjM0Yzg5NWUyYmQ5MjE4MjVjNDVhMTYyIGxlZ2FjeS10cnVuaworNzgyMDggZWVjZjFiZWYwNTJkM2RhNTExMjNkMjg1YjgzZDE4YjRjNDFhNWUxNyByZWxlYXNlMjYtbWFpbnQKKzc4MjA5IDU4YjMwZGJjZjk5YzQ4ZDZiODVlNzUzM2JlMGJkMGEwNjcyM2E3NDQgcHkzaworNzgyMTAgYTY3MWVlM2JiY2I0OThlNzQ5NDYzZWY0ZDg5MzdiNzc0NjhjZDgxOSByZWxlYXNlMzEtbWFpbnQKKzc4MjExIDBkYmUyOTMwZWUzZjBkZDI1OTBkNTBiMzM0YmQzMTA4YTA1NTlmM2QgbGVnYWN5LXRydW5rCis3ODIxMiBhMjcyNDQ0ZjBlZjBjOTAyMmYzN2VjODZmZDQ1N2VmZjVjNjJkZDhiIHB5M2sKKzc4MjEzIDIyNTM1NTdkNmZhMmZlNjExMmU4M2MyMzVkNDkwOTVjNzkwMmI5NTIgbGVnYWN5LXRydW5rCis3ODIxNCA0YzBiZTM3YjQ2YjAzNjhjMDNiNGQ3YmViZWJjOGNiNjc2YzBhZTkxIHB5M2sKKzc4MjE1IGRmYzY3YWQ0ZGNlZTU3YjY2NjI3Y2IwZjhkOGRkNDExYTY0MmRkYjUgbGVnYWN5LXRydW5rCis3ODIxNiA4ZjAyYzU0YWMyYWM4YTcwZmU3MTJkOTBjYmUzMGJmYzc1NDcwYjJhIGxlZ2FjeS10cnVuaworNzgyMTcgZTNkMDcxMjMzYmVmYzBhZTE1MzYyYjc1MzdkM2MxMGY5ZmM4ZjQ5YyBsZWdhY3ktdHJ1bmsKKzc4MjE4IGVhMWFkYzY4MzVjY2QxOTJmZDM4OWFjOTQ2ZTljYjE1YWM3MTYzNzUgbGVnYWN5LXRydW5rCis3ODIxOSBmMjI1ZDVlNmUwZTUwYjBjZmNmZTIwODQ4ZTVmNmFhYTA1ZGYyM2NhIHB5M2sKKzc4MjIwIDkzZTNlNmM1MTUxMzc1N2ViODE1MzM4ODE3ZWFkNTVjNDEwMjA3OGYgcHkzaworNzgyMjEgOWE1ODFjMDIxMGYyZWY3Nzc3YmFlMjhmZWYzNjc5YTIxMGNiZTYzNiByZWxlYXNlMjYtbWFpbnQKKzc4MjIyIDQxYzVlOGVmZWFhM2M1OGM5MjU5YTFkYjNhNzlmMGU3YTY5MjU4MmEgcmVsZWFzZTMxLW1haW50Cis3ODIyMyBmYjhjMDM4OGUzODVlNGVkOWM4NDMwZTMyYmMwOWE4Y2UyYmYwNTcxIHJlbGVhc2UzMS1tYWludAorNzgyMjQgOTkyZmQwNTQ3ZmY4ZDU3ZDg0ZjM4ZWE1YTY0MGU4MjZhYjVlOTYwOCByZWxlYXNlMjYtbWFpbnQKKzc4MjI1IDI4NmFmMzA4YzFiYmFhYTg4YTExNWUwODM4OTQ0YWM2Nzc1ZGQwY2YgcHkzaworNzgyMjYgOGE5ZWYyY2Y3OTRmZTZlNmNiNzBiZmI4MmE2Zjc0NmY2ZWI5MzZmYyByZWxlYXNlMzEtbWFpbnQKKzc4MjI3IDU5N2Q2ZDM2MmRkZTQwZDgwZmI3MTdkYjMzODc5OTUyMzg1MDU3MDkgbGVnYWN5LXRydW5rCis3ODIyOSA1YWE5ZjgzZGQwMGQ5ZmUyZDRjMjQ0ZDI5YWViMGU5MDA3OTAxOTc5IGxlZ2FjeS10cnVuaworNzgyMzAgNzJmNDZjYmZhNTdhYWQyMjM3YjZmMjhmYjhlY2E1YjdkODJlZGYyNiBweTNrCis3ODIzMSA1ZTYxNGVhYWE1MDUxYWI5NGViMmExMzFiMzdkNmVhMGY5YmM4NzYzIHB5M2sKKzc4MjMyIDZlNzRkM2U1MWQzM2U5Zjc5MWE2MWZkZDRlNWVmMDM3OTMyZjMyNTQgbGVnYWN5LXRydW5rCis3ODIzMyA0ZmM4YjZmZTRhZjg2N2EyYmFmZGM0Yzg3NDBiZGZjMjNiMzBiYWYzIHB5M2sKKzc4MjM0IDdkYTdmOWJmZGFhYzAxNzg5ZDdkMzQ1YTdlYTMwNDg2OWQ2YTAwYzIgbGVnYWN5LXRydW5rCis3ODIzNSBjNDg1ZTU1YWFmOTY1ZjU0NjU5NjlhNjA3ZGNmMGRhZDE2NzhhMzFlIHJlbGVhc2UyNi1tYWludAorNzgyMzYgOGIxNmYxNDA4MjQ5ZTlhZTJmOTlhNjUxODgwZWI4YjFjYTY0ZWYyNCBweTNrCis3ODIzNyBmNzI1Y2YxMjMzNGI5N2MwMTEyOWJiOThmOTVhZWU5MzJkNjNjOTk5IHJlbGVhc2UzMS1tYWludAorNzgyMzggMDkwNmM2ZjY0ODQ3NDQ5YTdhM2E1MDMwZmY5ZGEwNzU5N2MxN2QzOSBweTNrCis3ODIzOSA0NzRlYzU2ODVhMmRmMGVlY2Y3M2I3MDk4YzVhMjdiY2UzOGM3MmJiIHB5M2sKKzc4MjQwIDNjNzA0NDYxZWFkYTA5Y2I5ZTM3ZjhiNDliOTY2MDdlZDEwNTc3ZTEgcmVsZWFzZTMxLW1haW50Cis3ODI0MSBmOTgxN2VjOGI1NGMwNGIzNjNmNDI5NWVlY2Y4ZDQ4OGJkMWUwMDQ1IHB5M2sKKzc4MjQyIDY3NGMyN2Q4N2VhOTkyMWI1YmQwZmY1M2E5N2FlMTI1MzE0MWYyZTQgcHkzaworNzgyNDMgMWJmMDQzZWRiOGQ1NzRmYWVlNTk2YjMwMzk3ZjlhZDg3NTI5Y2M0NSBweTNrCis3ODI0NCA1MjgyMzgyMGRjZTEzZThkMWYyOTljZjUwODFiMzQ4MzU3YzE5MzAxIHJlbGVhc2UzMS1tYWludAorNzgyNDUgZTc0MjNiZWQwZWM0M2UyYTQ0ZmZhYzA5MjUxNjFmNjIyZGMzMTU0NSBsZWdhY3ktdHJ1bmsKKzc4MjQ2IDhkODcxZTBmYTcwMTg2MjIwYjQ0OGExNTY0ZmEyMzJkZmE2YzRhYmUgbGVnYWN5LXRydW5rCis3ODI0NyBlYWY4YTkzY2RiZmY0Y2E4NjNlNjI3NGNmZTI4MjZjYmJiNGFhMzAyIGxlZ2FjeS10cnVuaworNzgyNDggN2FiNjM4ODRkNjhiNmY1N2Y2NzM1NDUzYjA3NjRjYmRjZWYwNzQzYyByZWxlYXNlMjYtbWFpbnQKKzc4MjQ5IDNhNzEzMmY2NTYyMzEzNjgxMDg0Yjg5MjM1YTg3YmE5OTgzOTIwYWEgbGVnYWN5LXRydW5rCis3ODI1MCBhY2IyN2I5NzkyM2EzYTdlYTQyOTNmZjliOTAzM2M4MWJjZjVjNTdiIHB5M2sKKzc4MjUzIGRlNGNhODgxNGUwZDg4MzE3ZjRjN2EzZjAyODIwMjM4MGMzMmRmNjcgcHkzay1jZGVjaW1hbAorNzgyNTQgNTU3ZTQ1Nzk5N2E4MTY0Y2UyNzYxNzBiN2YyZmQ3YTFhZGE4NzdiNSBweTNrLWNkZWNpbWFsCis3ODI1NSBiYTQwN2MzZDgyMGNkODU2ZGMzYWNlNzZjOTA3ZjYwNDhiYzI0NDk1IHB5M2stY2RlY2ltYWwKKzc4MjU2IDg2NzI3MGQzY2E4OTg5MDRjMjUzOTNlZjlkMDdhZDQ4YzI0YmVjNDYgcHkzay1jZGVjaW1hbAorNzgyNTcgYWM1YzJjZmVhNDJmNmQwNjdjMDExYjRlMWU4MGEyYjk3YTU1YTkzMCBweTNrLWNkZWNpbWFsCis3ODI1OCA5ZmNjMDMwYThlNzAxYjgxMTVhZjg0MWJhYjlmZThmZTY3NzliMzFmIHB5M2stY2RlY2ltYWwKKzc4MjU5IDNlN2RkMjA2ODVkODg1YThhN2E2NDg4YTAxNWY4YTJmMzRkYzJjMTUgcHkzay1jZGVjaW1hbAorNzgyNjAgZjY3YmNkNGVjYmVlZmQ1NmE1YTQxMzFhYmVhZThiODAwNTgwODBjZiBweTNrLWNkZWNpbWFsCis3ODI2MSA2NmY5NzUwYmM2ZmYzNjFkY2VkNmRjNzdjYTQ5YWM3NTBkMmFiZjczIHB5M2stY2RlY2ltYWwKKzc4MjYyIGZiYzE1OTUzMWJlMWNjNWMwNmMzZWE5ZjY4YzI5MGQ4NWE3MjNmYTUgcHkzay1jZGVjaW1hbAorNzgyNjMgMTI5YmJjNjYzOWJkODdmMDk2OWNjZjU3ODUzYWJkMGE5YzQ2YTNhOCBweTNrLWNkZWNpbWFsCis3ODI2NCBiYWRkNGU3MDU3MzNhYmY0MzU0OWFlYzM2NTM0ZjliYmYwOGZjOGM5IHB5M2stY2RlY2ltYWwKKzc4MjY1IDQyMDljMzk4YzkyOTdhYTU1YjliMGVhYTkwYTk4OGY1ZDA3MDdlOWIgcHkzay1jZGVjaW1hbAorNzgyNjYgZTBlM2Y2MzQxNTcwNDZmOTAxY2IyOTIxZTAzYWQ4Mzg1M2ZjODBhZiBweTNrLWNkZWNpbWFsCis3ODI2OCAzYzEyYmRmNmNjNmQxN2YzYjA4N2U5NjQ0MDJiYThhOGVkMzY0YTk4IGxlZ2FjeS10cnVuaworNzgyNjkgYWIyMWEwNDgxZDcyNjRlNjE1MTQ5OTA2NmJiNTZkZDAzOWM2ODJiZSByZWxlYXNlMjYtbWFpbnQKKzc4MjcwIGQzMmQwM2Q0MTk0NzY4N2IwZDI2ZjhlNTdiOTM4Zjg2MmU1NDI3YWEgcHkzaworNzgyNzEgYjk4Mzc3OWYyMTIxYjg1NDUxMWE5NTBmMjc0NzZiMmVkYTQ5Y2FmZSByZWxlYXNlMzEtbWFpbnQKKzc4MjcyIGRjZGE5ODVjNjQwMzQyODA4Y2U3ZGIwNzZhY2FiMmJlMTk1YzZmMjIgbGVnYWN5LXRydW5rCis3ODI3MyBhZjAwZjcwYTFmZjEwNDRjMjdjZWQxZjllMWQwYWQ0YTJmN2NhNjVjIHJlbGVhc2UyNi1tYWludAorNzgyNzQgZGI4NmJmMzljY2FhNjhmM2JmM2Y5ZTcxYzE3NjI4YzJmZmMzMGQyMyBsZWdhY3ktdHJ1bmsKKzc4Mjc1IGQzYWUwNDFlN2I4YzI2ZWQ5NWQ0YTc3MmVmOWNjODdjZTc4YjYxNTMgcmVsZWFzZTI2LW1haW50Cis3ODI3NiAzNzkwZjNlZGExYzU2YjhhYzZmYmVjZTQ3NzkzMTEzMjE5ZTA5NWRhIHB5M2sKKzc4Mjc3IDM5MGIwZTcwN2Y1NGI1ZGMwOWFjMTcxNDc0M2I2YzBkMzMwMDdiMDQgcmVsZWFzZTMxLW1haW50Cis3ODI3OSAxYjI0MmZiMzNiZTcxMjNjYWE2NTAwZTNmOGNiODNlMjE5MTZkM2Q0IHJlbGVhc2UyNi1tYWludAorNzgyODAgYzhlYTc1NTk4ZmQ2ZDJlNDBjMjM0OWNhMDg2MjI2NDQ3NTE4MDg5NSBsZWdhY3ktdHJ1bmsKKzc4MjgxIGI5MjJlMWViZTM4MDIyNjkxOWY0MTQ1NTM4Nzk1NzNmOWQ2ZjA2ZGUgbGVnYWN5LXRydW5rCis3ODI4MiAwZWQxOTM3NjlhNWYxZWRiZjU1NzE5MDA1MGVlMjM2ZTAxZjBkM2Q4IHJlbGVhc2UyNi1tYWludAorNzgyODMgMDM0MDgwNGFkNzEzZTA0ODY0YmI5YWMxNWRiYzJkNzY4MDBjZTZkYSBweTNrCis3ODI4NCA0ZjMwNDQ1MmJiZjY5YWFmZTA2YTliNmZiOTliMmJkNGIwM2E0YTA0IHJlbGVhc2UzMS1tYWludAorNzgyODUgODBiNjEyY2Q5NGE0ZTdkZTFkZTI5OTBhMGJmMmYxNDM3ODA0OGEwYyByZWxlYXNlMjYtbWFpbnQKKzc4Mjg2IDUwMzNhNDI5NWM5NmFlYjcyYTAzYzM4NTcyNDkzMDU1NjJlMDJmNDMgcHkzaworNzgyODcgZTE0NGM2M2UxZmE2MTEyNGUzNzcxZjJmNTU1OTc4MzBlOWIxMjhiMyBsZWdhY3ktdHJ1bmsKKzc4Mjg4IDBkM2M5NzFlYjIwNjk3NTliYjcyNjc5OWZjZThiNmYzNDVhMjBlMjUgbGVnYWN5LXRydW5rCis3ODI4OSAyMGI4NTdiYjEwYjgwODVkOTJjZjUxOTMyZTgwNmQ1YmVkOTQ2M2ExIHB5M2sKKzc4MjkwIGI3NDlhNzlhNTFjY2I0Y2JhNzJkNDc2MWU1Mzg1ZjU0ZTEzYmQ4YTQgcHkzaworNzgyOTEgMGQyZDY2MDYxMzAzYmQ1YjVkMDliNjI4MjRlYzg4YjY1YTljNDZkMCByZWxlYXNlMzEtbWFpbnQKKzc4MjkyIDE3MjBlZTA4M2VlZWY2NGZjMDlhZDNlZGI5NzA5ZjIzNTFjM2ZkOTcgcmVsZWFzZTI2LW1haW50Cis3ODI5MyA2ZDZiZTY1ZDM4ODFmYjYyMWM2MDg0MGVhZDRhZTUxNDBhNzQ1NWY5IHB5M2stY2RlY2ltYWwKKzc4Mjk2IDk2YTRhYTFmMzFjMTM2OTEwMzRmMTQ2YzM0OTRiOTA4ZTVjZGYxMTAgbGVnYWN5LXRydW5rCis3ODI5NyBhYjZmZDllNDU0MzYyMDQyMWNkOTM1ZDg4ZTQ2MmJlZmFiYmFmZmE3IGxlZ2FjeS10cnVuaworNzgyOTkgNTgxZTIxZDdhMTkyODU3YTU1ZTgwYjRhMmM1MzhlYjZlNDE3ODQ4MyBsZWdhY3ktdHJ1bmsKKzc4MzAwIGNjMGU2OWM4ZjBjMjM3MjlmNDQzOGYyZTQ0MGE4MmE3NmI3MDJjOWEgcmVsZWFzZTI2LW1haW50Cis3ODMwMSBmOGRkZmNlZDJhMzQ3YTdjNzg5YTZjOGNjNzFiNDhlMGExZmQ2YmE1IHB5M2sKKzc4MzAyIDAzNjliYmFhNWQyZGZiZjlhYTFmNzVkZTU3NDY0ZjgwMTAwOTI0ODggcmVsZWFzZTMxLW1haW50Cis3ODMwMyAzZGU5YmFjYWQ5NWJjMmJhNGMyZDExYTU4NmZhNDU3Y2QyYjQ1MTYwIGxlZ2FjeS10cnVuaworNzgzMDQgOGI3NDU1ZTAxYTExMTUwZDdjNzFiYjZhOTE1Zjk3NzRlNzUzYTVkNSByZWxlYXNlMjYtbWFpbnQKKzc4MzA1IGY4NjEyZDQxMGUyYzQxOGIyOGVhMThkZGU3ZGZhNzY4MmNiYjQ1OTcgcHkzaworNzgzMDYgZjBhY2YyMTM4YTk2NmE3ZTNlZTdkOTZiYzAyNWExOWZjMDgzMmMyMCBweTNrCis3ODMwNyAyMDQ1NGZiMGJlNmVmNzc0NGRiZTFkYTgxMDk4NjhlZDhjNWNmNDE1IHJlbGVhc2UzMS1tYWludAorNzgzMDggYzI1NGU1NGFjODU2NDZmZGRmOTk5ZGE4OTU1Nzk0ZWFmMzg2OWJmNyBsZWdhY3ktdHJ1bmsKKzc4MzA5IGMxYTRmMjdhZThmZTgzNjY4OGQ3YWVlOTMwNzllMzA3MWU1NDE0NDIgcHkzaworNzgzMTAgMTVkOGVkOTQ4ZmI1NjExYjRhZjZlZDBkNTlmMWM1NzE5MmJlYzFkYSByZWxlYXNlMzEtbWFpbnQKKzc4MzExIDllY2UzZGQxZTkwMTBkMzI2ZmI5MDcyOGRkNDFmMjIzODI3NTc4OGUgcHkzaworNzgzMTIgNTBmOGJmNjE3MDZhNDYwYWJiNjdjNWE0MGQ3ZGJmYmY5OGI3Y2I2ZiBsZWdhY3ktdHJ1bmsKKzc4MzEzIGM0NWVjM2IxMWJiYTllZDgyNGFlN2ViOGIzOWVlN2NhZGE1OTQ3MGMgcmVsZWFzZTI2LW1haW50Cis3ODMxNCA1MjI3YTU1ZWQ3MTQyYmQ5OTUzMWNmZWQ2YjBkOGFhMzBlODJhMmQ4IHB5M2sKKzc4MzE1IGFlNjVjN2QzNWYyN2FhMmI4YjgxNzAwNmE3NzRhZTYyMjVhMjhjYmQgcmVsZWFzZTMxLW1haW50Cis3ODMxNiAzOGY3MzI4MmYwMzgzMGIwMmI1NDNjZjc5ZTJmYTAyNTc4NjBkNjg2IHB5M2sKKzc4MzE3IDVkNzc0MWUxZTY3Mjg2ZTEzODgxZDY4ZTgzMjAwMzBjZDJlNGU0NjEgcmVsZWFzZTMxLW1haW50Cis3ODMxOCAyMzExNTAxNWU1Yjk2ZTc0MWE4NjFiYTUyZDgwMDQ4MTZhODE0NWRiIGxlZ2FjeS10cnVuaworNzgzMTkgMzFjN2RlZjliZjUxZTc4YmNhZWIwZTM1MzAxNTQ3NTg3NGE3OTI1MSBsZWdhY3ktdHJ1bmsKKzc4MzIwIDEzMmQ0MjM0ODIxNmM3M2VkY2Y2NDc0ZTFhYTkxYTlhZmEzNzhmMTkgcHkzaworNzgzMjEgMmViMTM2NThmNTczYTliYjZlZWQwNDc0MDE0OTI0MTY4ZGUxMTE2ZSByZWxlYXNlMjYtbWFpbnQKKzc4MzIyIDhmMmQxMDAxNGMwODQ2NGY5MDZhMmQ5MTU0NTE3MjliMjljNWRhMTMgcHkzaworNzgzMjMgN2EwYzMwZTdlNGNhZjA0NjlkZTVmYzU2ZmU0YWRlMmNlNTkzOGI5OCByZWxlYXNlMzEtbWFpbnQKKzc4MzI0IGQ3YzMzNzdmOGE3YjY3NDJmNzYwMGUzMjRmODRmYmMxODQ5ZDE0ZGEgcmVsZWFzZTI2LW1haW50Cis3ODMyNSBjODhiNjYwMmY4MmQ3NWY2ZjBkYzIyOGE0MjY0ZTRhZGY5ZDk4NWVlIHB5M2sKKzc4MzI2IGE2MDhmYzM3OGQ5MjIxZDQ0MjBhMTVkZWQ4N2QzYjYwMjVjOWU2YzYgcmVsZWFzZTMxLW1haW50Cis3ODMyNyA0OTAyZWEwMjU2MzA3OTk1YmM5OWQ1NGQxMDRjZjIyMDI1MWM4YmI0IGxlZ2FjeS10cnVuaworNzgzMjggNTMyZGE4Njk3M2NkNGExZDk2ZDFlZWY1MTdmMWVkMzkzYmQ3ZmJkMyBsZWdhY3ktdHJ1bmsKKzc4MzI5IGZmODRlMDg5M2NiMWFiNmY3ZjZkNDQ3MzU1YmIyOGQ3YWUyNDlhNGUgbGVnYWN5LXRydW5rCis3ODMzMCA5NzlhYzE3ZWM4MjNkMDZmNjU0ZWRjZjEyYWRiZGM1MDQ5NTkxZmQyIHJlbGVhc2UyNi1tYWludAorNzgzMzEgNDBjYjIyMzNmNzI2ZjFjNjBmYzIzZTEyNzMwZTBjZGYzYjg1ZDkxMCBsZWdhY3ktdHJ1bmsKKzc4MzMyIGZkOTQ4ODg1NDA4ODc3M2NjNDQyN2U5MzIwOTQzN2UyMTQxYzA3MDUgbGVnYWN5LXRydW5rCis3ODMzMyA1YzQ0NjZiMTZkNmQ1NzZlMzE1M2YzY2Q0M2Y0YjQwNDhkMTQwMjBmIHB5M2sKKzc4MzM0IDczY2Q4MzcwNmJjNDU0MmQzNzg4YzAyZTVmNThiYzViNWZmOTRiOWUgcmVsZWFzZTMxLW1haW50Cis3ODMzNSAzMzU3YjhlYmIyNTk1YzMzNTI0YzU0Zjk4ZTkwZDZjYjc4NjlkZGEzIHB5M2sKKzc4MzM2IGVhMDJlY2UzMjNmZTBlODQ0NDE2Mzk2N2Y5MDIyNGUwZGUwOGM3OTYgbGVnYWN5LXRydW5rCis3ODMzNyBlZjczMmMzZGI2M2RjNTlmODQ2YzVkNGY2NTgzNGFiNGNkOTMyMjQ2IHB5M2sKKzc4MzM4IGJkMTNlZWVkYzNiMDNjYzAzNWMzOTY1M2ExN2ViODRhMTczMWZkNWQgbGVnYWN5LXRydW5rCis3ODMzOSAwNDdmMTk5NzdjNDI4NDM2YzJhZGNlZTkyZTg4ZTk3N2MzN2M3MTI1IGxlZ2FjeS10cnVuaworNzgzNDAgYjgzZjk3MTZmMTM1Yjg2N2Y4OTcyNDU0ZTA3MTZlNTI0MWZjOTk2YyBweTNrCis3ODM0MSBkMjg4ZTU0OTFiY2FhYmMwMTZjZGY1Y2I0YWNjZjE2YjE5ODYxMzA0IHJlbGVhc2UzMS1tYWludAorNzgzNDIgN2ZiMDEzZmYwMTRmMTk1ZTg1MWRiNTg5NzkwZDU2M2ZhNTllNWI1OSByZWxlYXNlMjYtbWFpbnQKKzc4MzQzIDVmY2IwZTBiZTg5ZTliMTAxMjEzMWU3YjVkMDk4ZTNhZjI2OWIxNDggbGVnYWN5LXRydW5rCis3ODM0NCA4N2YxYjhmZmMyOGQ3NWRlMTY1MzYwODJlZDkzZWI1YjY0YTY0N2EzIHJlbGVhc2UyNi1tYWludAorNzgzNDUgNzdkODc3ZDBiZjA2ZDkzZWQ0MzUzYjM5Mjk5NDQzZTA1NWFmMTAxZiBsZWdhY3ktdHJ1bmsKKzc4MzQ2IDMxY2I2MWUwZjJiYzAwODY2ZWNkNjE4MjAxNzQwYjU4OTc5Y2E5NzAgbGVnYWN5LXRydW5rCis3ODM0NyA5YjU4MDZhMDA4ZTcxNGVjMmVlZDYzY2RjYjY4N2Y3ZmZhMWM2NmY0IHB5M2sKKzc4MzQ4IDlkNTViMTdhM2M2NDdhZjI1MTZkYWI4NzUyNjNhNTRhMmNiZTJhMGYgbGVnYWN5LXRydW5rCis3ODM0OSAxNTI4NmQ5ZjFhOGUzODAzMjVjNzA5YWZiZWI1MmQxNDVmMjc4YmZlIGxlZ2FjeS10cnVuaworNzgzNTAgOGMwZTQ4OTZkYmZjNTI0NTYyNTkwYTAzMTNjZWYzNTdjMjg3MjQzZiBweTNrCis3ODM1MSBhNGM0NWY4ZTcwYWFlMWYzOTkzMzA0MDM4MDMwMTQyYmNkNjI0MDhmIGxlZ2FjeS10cnVuaworNzgzNTIgOGU4YzQ1YWI0NGRjZjdmN2VhNzI4MmZhOTYyMTZmMDA2ZTFiYTVmNyByZWxlYXNlMzEtbWFpbnQKKzc4MzUzIDU3NjdkOTI0OWY1ODkyM2UzMzMzNTY3NTg1MWQ3ZGY5MWE4NzM1NDggcmVsZWFzZTMxLW1haW50Cis3ODM1NCAwYmQxNzM2ZTMyOTczZDY2MTgwNjZkNTJkMGEwMzQyYjc2N2Q5ZjBhIGxlZ2FjeS10cnVuaworNzgzNTUgZmM0YjAwNWNiZDI4ZjQyMzA5ZjA1NWFmYWFlMjNlM2M3NjAwYWQ4MyByZWxlYXNlMjYtbWFpbnQKKzc4MzU2IGZjMjg2ZmU0NjYxMjMzMGNiMmE0YWFmZDgyZDcyYzY0NDM0ZjM0ZDYgcmVsZWFzZTI2LW1haW50Cis3ODM1NyBhNWZhYWFiOTk1YzQyYzlhNjMzMTQ2MzUzNGRkNDE5NTcxZWU3Y2U0IHB5M2sKKzc4MzU4IGI0YzZiNzY5NGYwYzJlYzgzMTk5ZmE0OTlhNTNmZWE5ODMyZWMzNjMgcmVsZWFzZTMxLW1haW50Cis3ODM1OSBhYzM2ZWM4YmFlNmM2NTA2ODg2MDZiOTJkZjQ0MTFkNzJjMDUyMjk1IGxlZ2FjeS10cnVuaworNzgzNjAgNDYwY2U5ZTg0ODM4M2U1ZjRmZmU2ODJlMmMxNGIyZDFlMDVhYzYzNSBsZWdhY3ktdHJ1bmsKKzc4MzYxIDRhMTE4MWVjNDAzNjRmZmE1NGE3OTY3NjU0M2VmOGU5YWVlNTg1MzEgcmVsZWFzZTI2LW1haW50Cis3ODM2MiBhMWQwNzhiODgyNDcyYTQyNDkxNjQwY2E1M2JmNGQ5ZDZiOWFiMmNhIHB5M2sKKzc4MzYzIDEzOWMxMDQ4ZjMxYmQ1MDBhODg2MWY4MzQ4YjQxOGNiYzIyMmYzNjkgcmVsZWFzZTMxLW1haW50Cis3ODM2NCBiNTJlM2ZmMGE0YzhiMjNlYjY4Y2I3NGU1MDRiYWMyOTk0ZTFlNThlIGxlZ2FjeS10cnVuaworNzgzNjUgOGM5MzBlNGQ1MWJkMjkwZTIwMTdjNDkyYmFkMTZmZjdhOTlmMTU4NiByZWxlYXNlMjYtbWFpbnQKKzc4MzY2IGRmNTZiYTFjYjBhZjI4MjU4YThiODg5YTc1ZWRhNzBkODczNWUzM2YgcHkzaworNzgzNjcgOTI2NzBjYzFhNmJjNDAyZGQxMWFkNTEwMmFjZDE4MjhmYzE4NmE4MiBsZWdhY3ktdHJ1bmsKKzc4MzY4IGZlYzU1ZjUyNzc1Y2U3NzUxODUzZTI0NmQyMWUzNDA0OTVmOWIxMDggcmVsZWFzZTI2LW1haW50Cis3ODM2OSBiZjhkOWYwMzU5YzEyMjYwM2ViNjc5M2ZiNTYzOGFkMjk4NzZmZmVhIHB5M2sKKzc4MzcwIDI0M2NjODBkNGEwNjdiNDkzNDkxZmE5ZjMxMjdiNzk5MjlhMDYzMzIgcmVsZWFzZTMxLW1haW50Cis3ODM3MSA3NmFjN2ExZDcxYjc1ZWFlNmVhNzUxNWViODc2OTEyNWRhNDlhMzg3IHJlbGVhc2UzMS1tYWludAorNzgzNzIgOGE1NmI4MmMxMjg0NTI5MTFkNWJkYjAzYmFlZWU3MTExNDlmZjk1OSBsZWdhY3ktdHJ1bmsKKzc4MzczIGRhMzczZGFjMjQxNWUzMmJjMjVmZTNjOWZjM2VmMWEyMzQ5YzI1N2IgbGVnYWN5LXRydW5rCis3ODM3NCA4OWJjMjhmMjAwMjFmYjQ2MDJhNGRlYzczNDUwZjM5YTVlMDY3OWY5IHJlbGVhc2UyNi1tYWludAorNzgzNzUgODY5MGQwOGQ5NTNmOTdlNTU4Y2YxN2FmYmU5NDM0NzJhNjBjZTRiMCBweTNrCis3ODM3NiAwZjU0ZDQzMjczNGM3NjY1ODgzOGM4NWFlMDJjODIzNTFhYjhlMjAzIHJlbGVhc2UzMS1tYWludAorNzgzNzcgMWRkMWVhZGE0NmMyZDcwZGVhZDRlZmYyMzQyMzBhYzcxOWJkNTg5ZSBsZWdhY3ktdHJ1bmsKKzc4Mzc4IGJkNGM5MTZmMGVmYTVkMWVmNjdkMzcyZTgyNDkzZmI0NTY5YWUxZmQgbGVnYWN5LXRydW5rCis3ODM3OSA5ZTFjYTFjMTE5MDIxYzQ4MTJiZTQxODcxNmI3N2JjZTJlZGJjOWRmIGxlZ2FjeS10cnVuaworNzgzODAgYjE3ODE0YmUwNWYxYzFmNWE2NzI1OGQxZjNmODUzMzYyZDA4NTQwNCBsZWdhY3ktdHJ1bmsKKzc4MzgxIGUyYTQ0NDViMGU3YzMwMGQwYTcyMDJlYTk2MTRiMzU5OTRhMzRkZmMgcmVsZWFzZTI2LW1haW50Cis3ODM4MiA5ZmQ4MDNhYmUxNDFjOTQ2OGI4ZmE2N2VjM2I5M2E4NGQ3ODI1Y2I2IHB5M2sKKzc4MzgzIGI5MDhhNDBmMDAyMDUwOTEzMmMxZDRiYWYxNGIyZDcwNmIzNzM3NTEgcmVsZWFzZTMxLW1haW50Cis3ODM4NCBkZGE1MTY1YTIzNzRlN2Q4NjYxOGNkNzcxNDQ4ODIxOGE5ZDhkZGI2IGxlZ2FjeS10cnVuaworNzgzODUgMjg3NDUwYjJkN2E3OGQ1ZDBkMzMyMzcyOTQ2OTQwZmQ5NmMxYmI0MCBsZWdhY3ktdHJ1bmsKKzc4Mzg2IGVhNjhkNzU1MjliMTFjZmNkYzE3ZTczYjBhZWE4OTA0ZmYwZGFjNGIgbGVnYWN5LXRydW5rCis3ODM4OCA3N2RlN2IxYmNkNTlkYTdlNjc2OGRkODA0YjQ5ZmJhMzRjMGRlZDkyIHB5M2sKKzc4Mzg5IGFiMTA3OTNhNDZhNzAxYzJlODNiM2MwMzRiZmY5ODU0OTY0ODI1NDggcHkzaworNzgzOTAgMTI0OTcwNzJmOWRhY2UyMGNlN2IyYmI1Y2NmMDg5NDczZjYzOWEzMCByZWxlYXNlMzEtbWFpbnQKKzc4MzkxIGZjZjIxMmE5M2RkNDJmMDRmM2UwZmQ3YzJjOTUwYWQ3YTY0Y2Y1YjcgcmVsZWFzZTI2LW1haW50Cis3ODM5MiAzMmIyMTA2MWVlOWZmZjI1NGMzMjIyNGNiNmYyYzU5ZDVkY2ZlNzM0IGxlZ2FjeS10cnVuaworNzgzOTMgZGY1NzE5YzI5OGRiMmQ4ZmJiYjkxOTM2MGViZTdkYWIyNzRjOWRmZSBsZWdhY3ktdHJ1bmsKKzc4Mzk0IDc3ODA0ODJhNjRkYTY5ZjYxNjZmOWJjZDdiOTQ4N2EwMmNhMTE3MWMgcmVsZWFzZTI2LW1haW50Cis3ODM5NSA0NGVlNGYyNzFkN2FlYmY4YWYyMGYwYmQ4OWY0NzE5Njc1NjM4OTFiIHB5M2sKKzc4Mzk3IDc5OGUwZDBjNzI0NmRkYjIwN2MyNzVkMmRhOWE1ZDNlNTg4YTFhM2EgcHkzaworNzgzOTkgNDEwYzFjODBkNjYzYWIzYjlkZTk5M2ZjNjIyZjI0YzJjNmM4NjUwNiBsZWdhY3ktdHJ1bmsKKzc4NDAwIDhkM2ZmMmZiYmU0YjRhNDlhMWIzZWVkMTllYjViNTQwZmE3MDNkNzQgcHkzaworNzg0MDEgNjk2Zjc2N2U3N2ZmOGI5OWMyNjI2NTM5N2Y4NzE3MzNiY2ZmMDRkYSByZWxlYXNlMzEtbWFpbnQKKzc4NDAyIDY3ODI1NmU4MGZjNjAxZDNiMzZlYzYzMTI2YzIxZjc2YzM0MTljZDIgcmVsZWFzZTI2LW1haW50Cis3ODQwMyBlODU0MTJmNTQ0YzgzZTIzM2YyYWJhOTA5ZDQ3ZDU0YmFkZDk4NWE5IGxlZ2FjeS10cnVuaworNzg0MDQgOTU0YjhlMjc2Njc0NjMyMWVmNzRjNmIzMTEwZTVmMzU2ZWRiNjZhNSByZWxlYXNlMjYtbWFpbnQKKzc4NDA1IGU4MDMyN2NiNjg0NjgxZDRmNWM0NjYwMGFmYTM4NDk2ZjgxMzRjN2UgcHkzaworNzg0MDYgMTA3YzRjNmVjNjQ5NTFmYTg4NzBlNTkwMWIwNjQyZThiZDExZjE3MiByZWxlYXNlMzEtbWFpbnQKKzc4NDA4IGE1ZjZkZDE4OTI4MmYwMWRhNjQ5ZmQ3YTlmYzkyMjIxYjRhNmRhYTAgbGVnYWN5LXRydW5rCis3ODQwOSBhOWE0MzgxMDBmOGQ0YjJjYWI4MDVlMzczYTQ0MzU3MjI0MWQyMzI4IHJlbGVhc2UyNi1tYWludAorNzg0MTAgYTk5NDVhZmNjNGVkNGQ3MmJjYmRlNmJkOWMxZWVhMGQ4ZTY0YzNjZiBweTNrCis3ODQxMSAxNzcxOWQzOTVmMWU2ZGU0N2YwZjg3YTg5ZjFlMDZhNDJmNzQzMTYwIHJlbGVhc2UzMS1tYWludAorNzg0MTIgYzQ2NWQyMTQzODc0ZGNhZjVmYzllNWI3MjhiMGM1YzA3N2M0OTdjNCBsZWdhY3ktdHJ1bmsKKzc4NDEzIDA3OTVkZDdiMmM5ZDFiMjQwMTJjOWJjZDdlMzYyODg1NDM4NDU5NWUgcmVsZWFzZTI2LW1haW50Cis3ODQxNCA4MjBlYWY5Mzg4MDQ1YmNkMzIzOWVjZjRiOTQwNTQzMmI3NGY3ZTE1IHB5M2sKKzc4NDE1IDRmNzUwM2FlZWE4NWZjODVjMDUzYjU4MmFmMThiNDhjZTgwOTQyMzYgbGVnYWN5LXRydW5rCis3ODQxNiA5ZWJiY2I3YTM5ODk3MGNjOWRkYTViZDljZThhMDk5YWEwZDIyYjFjIGxlZ2FjeS10cnVuaworNzg0MTcgNDUyMTJhMjQ3ZWQ0ZDVkNGFjNDkwMDA2M2M2ODI1YmU1ZTJjNGI2NCBsZWdhY3ktdHJ1bmsKKzc4NDE4IDJiODJiMTZhNjM3NTZjNDY5NWFjOWM2NmU4N2MzZTNiMjIyNWUwYTYgbGVnYWN5LXRydW5rCis3ODQxOSA1YWMzNDljMzIyZmQzZmZjNzU3ZmM2NGE0YWI2OGMzY2M4NTE5ODlkIHJlbGVhc2UyNi1tYWludAorNzg0MjAgNTllY2VhMTM3NjliMzk4ODAzYjJlYjhhMTdkNmNmZjk3ODA0ZjFlNCBweTNrCis3ODQyMSBjOGVmOTA2YjExYjg4MzIwMTdhNTVhMjM3MjgwYTczNjA4YThlMjk5IHJlbGVhc2UzMS1tYWludAorNzg0MjIgNTZmNGQ2YzUxNDUwMTZlNWE1ZmYyZGM5YTBmNzdhOTcwNTliOGI2YyBsZWdhY3ktdHJ1bmsKKzc4NDIzIDkyMjViNGY4Y2IxZTczYzgxMTVhYzVkZGJjZjdiNTMwNmZhZmIzZDUgcmVsZWFzZTI2LW1haW50Cis3ODQyNCBhZjU4N2I0YjU5MDkxOTRmMzNlMTJlNjMyOWUyODI3M2JlNzlmNjZkIGxlZ2FjeS10cnVuaworNzg0MjUgYzBmYTE0NTM3MGU0MWY0MTAyODQ5NTExMTg5OWRiMzQ1YzcxZTJiMyByZWxlYXNlMjYtbWFpbnQKKzc4NDI2IDNkNGRiMWY1YjNiMTU1ZDViZjc0N2YxZGQyZjU4ODA0MWNlODQ1YjAgcHkzaworNzg0MjcgZTcwOWY2ZjZmNDVjYTljZDlmZGUyZmI5ZmU1OGJiNzM2MTRkNzFiYyBweTNrCis3ODQyOCA1Zjk5MzlhZjJmNzFhY2ZkY2VmZTU2YzZiNDIwZGUzYTAyNjBmZWVlIHJlbGVhc2UzMS1tYWludAorNzg0MjkgYWY5ZTZlZGJiMGZmNzk2YWJmYTU1NjI4YmQ4N2FjMDcxZmE3MjU4OCByZWxlYXNlMzEtbWFpbnQKKzc4NDMwIGU0N2E2NGY5Y2M3N2JmZWFjZWYwMDYzZDYxYTQ1NmY0ZTZiODk3NDAgbGVnYWN5LXRydW5rCis3ODQzMSAzMTgxMjU1ZTI4Yzk5Zjk2ZDgzMzNkNTcwNmQ2ZWRiNmNkNzdjZDE4IGxlZ2FjeS10cnVuaworNzg0MzIgYzk1MGZhYzc0MTFiYTY0MGM5M2ExZDRiMGM2YjI0MzdkYjkxM2I1NCByZWxlYXNlMjYtbWFpbnQKKzc4NDMzIDI4Nzg4ZjcyZDhjMGZlNWRhNWM5NjU1N2ZjOTVhZjYwZTkxNjIwOWYgcHkzaworNzg0MzQgOTRlMmI2OTAyOTY5NmQwYTBhMDIwOTlkODgyOTA0ZjYwNWY5MDhhOSByZWxlYXNlMzEtbWFpbnQKKzc4NDM1IGI3ZGU3YzVhZmEwNDI5M2M3MTkzYTUwM2ExZTc0ZDJhMTJiMjFhODIgcHkzaworNzg0MzYgMTljZjUyNmJlZmE0NjliNTljYmZjZjlhZjFhMDBjMWU2MTMxZjkwOCByZWxlYXNlMzEtbWFpbnQKKzc4NDM3IDEyMjIxYjZjYzhjZGM3ZDA4OGFjZWY0ZmNkODVkYzEzNjM0ZWNhZDcgcHkzaworNzg0MzggZjVlYTEyNjRiN2FlMTc4N2YzYTBhOTIwMTBlMmExZTBiZTBmOWI1YSByZWxlYXNlMzEtbWFpbnQKKzc4NDQwIDM4M2Y0MDk3NWM3NWMzYzMxY2VlOWI0MWMzM2E4NmUwY2QxNWMwNjYgbGVnYWN5LXRydW5rCis3ODQ0MSBiZDgzNTdhOTFkM2U2MzkyNjFiYTFkMTFkMjJiODQwODJhMDgwZjA4IHJlbGVhc2UyNi1tYWludAorNzg0NDIgODViZjg0NDY5YTMyYzlkZTQ2ZTQ5ZmM5ZmQzODRkZjBiOGIzZTAxNCBweTNrCis3ODQ0MyAyMTgzMjc3Y2JhYjE4NzY2ZDdhYjEzMzhmMjY0Mjg5MmFjN2QzZTE4IHJlbGVhc2UzMS1tYWludAorNzg0NDQgYWNjYWI0YmFiNjM0Y2Q2MWM2YzMwODY2NTM4OWVmNWQ1YzBiNWM1ZCBsZWdhY3ktdHJ1bmsKKzc4NDQ1IGVjZmU5Y2ZhYTMzNDczMTEzNGE5NTdhZTU3MzUwNzAyYmZkYmMxNzggcmVsZWFzZTI2LW1haW50Cis3ODQ0NiA4OWE1MGExMTgyMDE5MTJkZTdlNjg3ZDc5Mjc0MGQxY2I5ODg1MzY4IHB5M2sKKzc4NDQ3IDVmMDRlMGNkODE3MTc5MDNiNjMwMjYzZDA2NjdiZGQxMzFiYzZlNWEgcmVsZWFzZTMxLW1haW50Cis3ODQ0OSA2YzE0YzI3OTI1YjllNTgzZDc3ZTliNDQxZDQwMmExZTE0NWNhODg0IGxlZ2FjeS10cnVuaworNzg0NTAgYWFjYzBkNDhkNDRkN2UxMDViNmNmODg2MzZjMmRmYjA3MDljMGQxNyByZWxlYXNlMjYtbWFpbnQKKzc4NDUxIDg1NTNkNDJjOTRiMWE5ZmNhZWNkNzVmMGE0YjM3OThlMTQxNGFiNTUgcHkzaworNzg0NTQgMWE2MmY0ODlhNjhhMGE5MzY2Mjk4ZGNkZDcyNTU2OGExOTZiMDU3OCBsZWdhY3ktdHJ1bmsKKzc4NDU1IDQ3ODBlMDM3N2UxMGY2OGQxYjM4ZmQ1MjUwYTQ5MjhiMjM4ODUwNmQgcHkzaworNzg0NTYgZTFiYzAwMjJiMjNiMmQ5MTBhMjNiODVmM2Y2NmJjYTJmZDY4NGUxMCBweTNrCis3ODQ1NyA5NWIzYmI2YjlmYWFiOWM0OGY3N2U1OThkMTYwZTQzNWM1NGI3YzNjIGxlZ2FjeS10cnVuaworNzg0NTggM2FiNzQwOTQwNWZhM2EzYjkyYmRkYjdlYjE3MTJiYjIzNTJiYWYzMiByZWxlYXNlMjYtbWFpbnQKKzc4NDU5IGMxMmI5NTUzNTA5NDg4MzllNjcyMGVjZDA5OWQ4MGVkZWY1YTEyMjggcHkzaworNzg0NjAgMDgzYzhlNTM1NGFkYjMzYjc5NjNiZDAzOTQ2ZjQ2N2MyM2U2Y2E3OCByZWxlYXNlMzEtbWFpbnQKKzc4NDYxIDdlM2M0NzM1NGRhMzQyNmU3YmNmZjIzZjBiZGMyYWZlZjVkMWQyZGIgbGVnYWN5LXRydW5rCis3ODQ2MiA3ZDM0M2Q1YmZiM2YxY2RmYzgzOTY3M2NiZjI1MzAxMDUwMzFhZWYyIHB5M2sKKzc4NDYzIGFkMmY1ZWFjZDJhMDM2ZDRlODRhYjQwOWQyOTg0Y2E1MzkzZTliOWEgbGVnYWN5LXRydW5rCis3ODQ2NCA5YWMzNTIxNWFmNGE4Yzk3YzJiZTJkOTc0MzFjNzhiYTkyMWI3MTE4IHB5M2sKKzc4NDY1IDNkY2RjYTAwNzA5NTU2NmU0MjY2MTc2Mzc3NzFkODJjNzljNDM5YmQgbGVnYWN5LXRydW5rCis3ODQ2NiAyNTJmMWUyM2U5ODYwMzE2ODRkYzgyNmMwYjM0MmUzNmMzMmU1NDNlIHJlbGVhc2UyNi1tYWludAorNzg0NjcgOGIyMDQ4YmNhMzNjMWQ0M2UxOWFiNGM3ZjE2MzdlMGRlNzY2Yjc2NiBsZWdhY3ktdHJ1bmsKKzc4NDY4IDUzNWUyMTU1YWYxYTgyZTEwMzRhYzgxNTA5YjAyNTFkNGYzYjlkMTQgbGVnYWN5LXRydW5rCis3ODQ2OSBkYzFjZDhlZGZhNDY1NzJlMWU2OTEwNGNjMTgxNjAzMTMyMWZkZmE2IHB5M2sKKzc4NDcwIDYwNDNkMGJkOGJmNzBhNTc0ZDgyN2U2NTRlYzY0NWVkNWRiNTQ5OTUgcHkzaworNzg0NzEgNjJiYWJmNDU2MDA1YjY3Y2RkZWQ2MjA4MmRlNzVhNzFlNzE0NzVkMCByZWxlYXNlMjYtbWFpbnQKKzc4NDcyIDk0ODZmZjQwMmFjYzM4ODE5NGQyODc1ZDRmYWYwZGYyNmU1ZjNhYWMgcmVsZWFzZTI2LW1haW50Cis3ODQ3MyAzMzNmZThkNzkzMjk4YmMxNmRjYmMxNmIwOGY1YzE0Y2NiYmJhNDAxIHB5M2sKKzc4NDc0IDc4NzRkMTNjOWFhNzY3YTc4ODEwYjQwZGE1M2JmZjIyNWQ2NDUwOWIgcmVsZWFzZTMxLW1haW50Cis3ODQ3NSA4ZTY0NjE1YTRjODYzNWZhZWQ0Yzc0YzVkYmNjNGFlN2IxMmUyMTY3IHJlbGVhc2UzMS1tYWludAorNzg0NzYgMmYyZDIyNTc3NzQyODA2YmU2MTZmOTZhNjc0MDU1OGVjOTE3ZTk0ZCBweTNrCis3ODQ3NyA1ZTJhNTg0MzA3YmE5ODdjOGMxMTEyNDJkNjljN2ZjNmI1NGQ5NzM2IHJlbGVhc2UzMS1tYWludAorNzg0NzggMjMxYzg4ZWU4ODg1YzEwMzBlOTYwNmYyNzYxODhhYWQyNjU1YWQxNyBweTNrCis3ODQ3OSAzMjcwYmExYmVjNzZhMzg5YjA3M2MzMTE5ZWY4NDQ4MGFiNTk1YWMwIHJlbGVhc2UyNi1tYWludAorNzg0ODAgMmI2OGUzMTQyZDE3ZTgzM2Y2MTZmMTUxNzk5YzUzZWM5NWUyNjFkNCBweTNrCis3ODQ4MSA1NmY1MzdiZWRhZmVkOWZmN2RhODVhN2E5M2E0ODhkNTM2ODhiODcwIHB5M2sKKzc4NDgyIDQwNzBmNGNmOGM3NzJjZDUzOWUyYjY3ZTFmNjQxMmM0MjJmMjc2NWUgbGVnYWN5LXRydW5rCis3ODQ4MyA0MDY2YjQ1ZDI4YWIyOGJkNmUyNWRmNjkzYzVhM2NmYTJjOTE4MzQ5IHJlbGVhc2UyNi1tYWludAorNzg0ODQgZTU0MDMyM2Q4N2E4YjIwMjJhM2U1ZGM2ZTc3ZDgxODA3ODUxMWY3MiBweTNrCis3ODQ4NSAwZDU5MGU1ZTg0MGM2MzViMmI1ZmU3MDFmYmEyOWQxNjQwMmZhZmY5IHJlbGVhc2UzMS1tYWludAorNzg0ODYgYWJhOWY2NTQxYWQ2OTgzYjUwNDljNzM5NThmMDhjNTAwM2QxMjBkYSBsZWdhY3ktdHJ1bmsKKzc4NDg3IDJhMGFjOWJkZTk5YWZkMDI3YzNkN2MyYWRjODY5OGM2NDcxMjUxMmMgcHkzaworNzg0ODggZDBjMmI5YzJiYWJiMGVkOTY2ODk3ZGJjMTA1OGRjM2MwNTBjMmFkNSBsZWdhY3ktdHJ1bmsKKzc4NDg5IDBiNDg0NjQ4OTA1NWFjZTRmYjY3Mzc4MmE4OWYyZGQ0MjUzNTE1YmUgbGVnYWN5LXRydW5rCis3ODQ5MCBmMTM5Y2EwMzRjM2I3NTAzODA0ZWE1NmEwNWNlOTc4M2ZhZjMxY2I3IHJlbGVhc2UyNi1tYWludAorNzg0OTEgYmYxNDZmMTAzZWU2NzNmMmMyNzg3YTQ3YmEzMDVjNjQ3MmY0ZTA3ZiBweTNrCis3ODQ5MiAwMTk0ZDhhNmIxZWZmYzQyMDY2NjQ3N2ViZTcwNWM0NWU5YWRhNTMyIHJlbGVhc2UzMS1tYWludAorNzg0OTMgYWUwOWFiMjY4NmVkMDQ5NDYxMmQ0OGJlOGIwNWE4MmQwMGFkYmMyNiBweTNrCis3ODQ5NCA4OTFlNzlkNzcwZDg4ZTY3YjA0Yjc2YjVhNDhjMDQ5NDExNDYyOGE5IHJlbGVhc2UyNi1tYWludAorNzg0OTUgODE1MDkyYTVlNWMxMjk4M2E4MzZhNjc2MTRjYWEwZmI1MDlkNDc4NiByZWxlYXNlMzEtbWFpbnQKKzc4NDk2IGQ2MmJkZDg0ZGYwYTNiZGE1ZWUyM2E5OTIxOGJlNWU2MDUxYzU1N2EgbGVnYWN5LXRydW5rCis3ODQ5NyA3NzU5MzdhMzRmOTY2MmIzODg1NDdmMTdhMTM2N2M5ZDliZGI4MTdmIGxlZ2FjeS10cnVuaworNzg0OTggODY0MDJmYTBjNWI4OGVjZjllYzA1MzQ4MzJhMmYxODY1YTVmN2JmYiByZWxlYXNlMjYtbWFpbnQKKzc4NDk5IDU2MGYzZjRlZTlhN2Q4MTllN2E2M2NkZGNmMzk5OGVmOTdhMTk3NTEgcHkzaworNzg1MDAgNTYyMDVmNTQ3Yjc0NjA1OWM1Nzg3YjAzNTQ5NzM5YjMwMjc0MWFmYyBweTNrCis3ODUwMiA4ODcxM2MwZWQwMTAyNWE4MDQ1NDRmYWUxMjAyZThkOWY2NzFiMTQ3IHJlbGVhc2UzMS1tYWludAorNzg1MDUgODFkNjgzM2M2Mjc4YmVmZDAxMjMwZjVmOGY1MjQyZjgxNTFmYWI0MyBweTNrCis3ODUwNiA4OGYxNDdkMjYzNzI2MWY2MzM3NTNkYjA4ZjYyZWMyMWMzN2NkZDcyIHB5M2sKKzc4NTA3IGE5ZTFmMWQzNGM5NjcxYmJlZTE1YWNlNGM5MTJiMDNjNTIyNTg0MjkgcmVsZWFzZTMxLW1haW50Cis3ODUwOCA2NzlmNTJiOGFlZjRjNmQyZjY5ZDI5YjBkNGEwNGZmYTRhNmQ5ZTMzIGxlZ2FjeS10cnVuaworNzg1MDkgODFkY2MwYzg0NWRmYjY2OGVhYzAxODhjNWMxZjY5NzcyMzE2MDIxYyBsZWdhY3ktdHJ1bmsKKzc4NTEwIDAxYzU4Y2VmODJkNDhhOWE4YWIxNjI3ZWNmNzIxNjQzMDdlMTk3YzggcHkzaworNzg1MTEgNWQ5ZjNhZmJjNGU0YmMwYzUxM2VlNmExNTE2NzM4ZjUzZTRhMTNiMyBsZWdhY3ktdHJ1bmsKKzc4NTEyIDEzZmY5ZmRiODQzMWI3MjkzZjMxYmRhNGI4MTdjNmIzNzNlNmQ3OTMgcmVsZWFzZTI2LW1haW50Cis3ODUxMyBmMzc4NjNhN2VkNjc3YTg3MTMyZTc5YjhkMDYwMDA4MWQwYjEzNGZhIHB5M2sKKzc4NTE0IDIwODBhYjg4MGE4MGVkMGJhZmVjZjAxMjc5OGI1ZjAxNmNlNTFiOTEgcmVsZWFzZTMxLW1haW50Cis3ODUxNSA3OTliYzQ5NjRhMWQ5MzAyZDZjYTc0MWE1MTIxODU2YzMxZGQzNWRjIGxlZ2FjeS10cnVuaworNzg1MTYgNzUwODAyNzU5MjFiOGU4NmI1NDU5Nzc2NTE5MjNiNjlkYTk4NGE0NiBsZWdhY3ktdHJ1bmsKKzc4NTE3IGVhYmZhNzc4YjA3NmI2MGU4NTVhMjA2ZTExMWRlZTQzNDU2MDgyZDkgbGVnYWN5LXRydW5rCis3ODUxOCAyY2RlYzg0OGI3NGM2MTQwMTI2ZDE0N2FlYWNkYWNmMmNiMGM4YTNjIHJlbGVhc2UyNi1tYWludAorNzg1MTkgOThlOWM0ZmZkMzQzYWYxY2VjNTA0NmRkMGU4NWRjZDE3ZWM4OWU5MiBweTNrCis3ODUyMCA5ZTgxMTNlNzZhZGJmMDE0NTRjZGFmMGJjMzU0MzY1NGFiOGI3ZTkzIHJlbGVhc2UzMS1tYWludAorNzg1MjEgOGUzZDAzYjgwOTBiY2IyMWRhY2VjZDFkOWZmYjNlNTIwODBiNDNmMyByZWxlYXNlMzEtbWFpbnQKKzc4NTIyIDFjNmZjNzBmNDlkMWFiZWVmOTE2NDhkNDI5YWU0ODU2M2VhMmMwZDQgbGVnYWN5LXRydW5rCis3ODUyMyA2ZTY2NGJjYzk1OGQ2MGYyMWU3OGRjZjEwZjg0MGZkMzVjNzMxMDE4IGxlZ2FjeS10cnVuaworNzg1MjQgNTU3Nzg4NTVjZDI1YTlhZThmYjY2NzVlOWY4YzI5MjdkYjk4OWY1ZCBweTNrCis3ODUyNSAxMjQ2OWYyMDY1NmJlZTA1Nzk1MTBlODdjZmViOWVlNDgzN2Y2OTNkIHJlbGVhc2UyNi1tYWludAorNzg1MjYgMWYxNTgyMzhmYTc2NGQ3MDBhYzlmY2RlNzQ4YjBlYTRhN2IzNGYzMCByZWxlYXNlMzEtbWFpbnQKKzc4NTI3IDRhZmM1MGQxNTU0NDVkMDFkMmM5M2Q2Y2E4NmNlZmM2MzliNzAyZjMgbGVnYWN5LXRydW5rCis3ODUyOCBlMWI3MGM2ZGY5ZTc3M2RmZDcwMjkxYjhkZDVlYzFjMTBjY2Y0MzFhIGxlZ2FjeS10cnVuaworNzg1MjkgOWI0ZTBjZDc4MTdhZGExZTJmMzEzMzQ5N2U3ZDIwMWQ2ZDhkY2UxZSBweTNrCis3ODUzMCAzNzBlMWExYzIzODY5ZGY4MTlkMzFiNDRhYTlmMzJkZjIyODQ4Zjk4IHB5M2sKKzc4NTMxIDA3N2YyYjhiM2U1NzI5MDkzM2RkOTJiY2U0YjUwZjAzMjAyNzYyNDcgbGVnYWN5LXRydW5rCis3ODUzMiA4NTRiMzRhMDY4OTZmZDZlNDdhMTZlOGRlM2U0YzI4ZjBjMzM0NDlhIGxlZ2FjeS10cnVuaworNzg1MzMgOTI0Y2EyOTViMTQ2MDAwMjYzMGIwYTM3ZDFmMDJlODNhMDI3OWJiNiBweTNrCis3ODUzNCBkMWM2Mjg4MmM3M2JkMGRjNGZmMmExNTY0MWRjZDMwMzAyN2Q5ZTg4IHJlbGVhc2UzMS1tYWludAorNzg1MzUgZjUzZmUzM2UwM2VhMWI0OWJmNzY5NmJhMjRjOWUzM2FkYmNlNmIwNSByZWxlYXNlMjYtbWFpbnQKKzc4NTM2IGM0NTgwNWJhMzIzZjdmYWE5YWExNzAyMzg3YjBlMWU0MjNkODEyZTQgbGVnYWN5LXRydW5rCis3ODUzNyA5NDFlMWJmMDRmNTUzMmUxMmYwZmZjOTAyN2RiZjBmM2I1MjZlNmM3IHJlbGVhc2UyNi1tYWludAorNzg1MzggZjAyODNiYjYyMzYxNGFkOTUyYWZhYTdjZWNkM2M5ZjZiMjNhMzA3NCBweTNrCis3ODUzOSA3ODNmMDliMDg3MDZlYTMwZTIwYzVmMGU0NjM2NmEyYjIzODgxNzJmIHJlbGVhc2UzMS1tYWludAorNzg1NDAgMDI2NWNkYzhkNWJiMGNlYmI0ZDkxY2M0OTMyNjc0ODRlMWE3NDRjMiByZWxlYXNlMjYtbWFpbnQKKzc4NTQxIDhkNDhmOWI1OTY4OWJhNDY5ODI2NTU3YThkZGQ5ODZiZDRjZGUzZjUgcHkzaworNzg1NDIgOWI3MjI3N2Q2YjMwYTdjMDhjOWQ2ZDBiNmJkMmY5YzE0MjUxMzgwZSByZWxlYXNlMzEtbWFpbnQKKzc4NTQzIGQ1ZjUwYWU0ZjFmNzhlMTk5ZjEzNzM5MWFkZjQ4YzdlZjJiYjgzOGIgcmVsZWFzZTI2LW1haW50Cis3ODU0NCBmNWJhYzQ3MzcwNjlhNDEzZTg5MmQ3YTUxMDc4OTVkYzFkNmIxZGIyIGxlZ2FjeS10cnVuaworNzg1NDUgNmZhZmI2NGVjMzI4MDhkMjM5ZGQ1ZDBjNTBmNTZlNmQ0Nzc3MjM5MSBweTNrCis3ODU0NiA1ODkwMDRiMjJmNTRjMTM0N2U3ZmVjMzU2YTdkZjMxMGY0NWFhNGVjIGxlZ2FjeS10cnVuaworNzg1NDcgYWZmNjkyYmRiNmRiMTA3OTc4MzMxOTFmMzZhZjMyZjgzMjU4MWNjMSByZWxlYXNlMjYtbWFpbnQKKzc4NTQ4IDg4N2RlNWRmZDk2MDE1YWQ0NDAyOWNhMWViZmI0NDRlYjA1ZTUyYTkgcHkzaworNzg1NDkgZGM4NDZhMjExYzY1OGFhYWUwZjA5MDhlM2MyOGE3NDEwYWYwMWNjNyByZWxlYXNlMzEtbWFpbnQKKzc4NTUwIDQ2YWUxNjRiMTViYTkxZGM2NDkxZTkxYTg2OGIyZDI3MWMzMzE3YzYgbGVnYWN5LXRydW5rCis3ODU1MSA0ZTMwNDMxMDk3NDlmMjk1NzQ2NjhlNDQ2NWU0OWJjY2JiOTdiZjdiIHJlbGVhc2UyNi1tYWludAorNzg1NTIgNThjMzU0OTVhOTM0Mzg3ZDA2NGVkZjU5NjM0YWQ3M2NiOGZlMjhlNCBweTNrCis3ODU1NCA0YmM1YjA0MWQzYWE2YmJlMDkwMWRmMjI2N2U1OGI4ODg4Nzc3Yzk1IHJlbGVhc2UyNi1tYWludAorNzg1NTUgNDBhNDA2ZWVkY2FjOTJlMTFhOTIzNTlkZDY3NGRmY2FjNTc5MmFlOSByZWxlYXNlMzEtbWFpbnQKKzc4NTU2IGQ1NjE1ZWVlNTYzZTU2NDA1MzdkZTk4ZDJiYmJhMWM3NDBhZTg2ZjAgcHkzaworNzg1NTcgY2RmNTk2MDRhMTc0NGQ2YjUzYmI3MjllOTk0Njc2MmZlYzljOWUzNSByZWxlYXNlMzEtbWFpbnQKKzc4NTU4IDhiN2I1YzllNjdmNGQ2NzAzYTc4NzE0ZTU0NDk4Zjg4YWIzMzFmODQgbGVnYWN5LXRydW5rCis3ODU1OSA5MTI3ZDcwNzMwYzViMGQ2MWYwMzdhMTAxZjNhYzA2ZjcwMjNkODgyIGxlZ2FjeS10cnVuaworNzg1NjAgMDQ1OTBlYzZmMzdkZGY2NTc1MDI5NTA4OTc2NmQ5MjliMzE3NWM4NyByZWxlYXNlMjYtbWFpbnQKKzc4NTYxIDQzODY4MGJlNTQ3MmI3YWMyMmU2NzY2NDc4ODUzMmZhYTczNTM3NGYgbGVnYWN5LXRydW5rCis3ODU2MiAzOWE1MDNjODgwMDJhOGY2MWVjNzAyZmNlNTZiNjUzZDg4ZjNlNTk1IGxlZ2FjeS10cnVuaworNzg1NjMgZmJkZTExZDFjMWY1YjNiNzlmZDUzYzcwYjNmOTY5NzJhN2U5Mzg0MCBsZWdhY3ktdHJ1bmsKKzc4NTY0IDkzNDIzOWIyNjhhZGMzNTdiYzA5NTQ1NTM0ZWYzODBmYWZiZjg0NmMgcmVsZWFzZTI2LW1haW50Cis3ODU2NSBjOGIyNjI3NmM1ODc3OTg1YjRiMjQ1MGE4YzU0YTdlMjg4MTJmNWY5IHJlbGVhc2UyNi1tYWludAorNzg1NjYgODlmNDJiNjgxY2U1NTc3MzI3ZjgwNDEwMzJmNjE0NjhhMzNjMTZlNSBsZWdhY3ktdHJ1bmsKKzc4NTY3IDY5YTEwM2VmYWU4ZDRlYjY5NDIxOWI4YjUyYTcyODE0MjBmODgxZmIgcmVsZWFzZTI2LW1haW50Cis3ODU2OCBmOTllN2FlNzEyYjBiMjRmM2VlY2Q0Y2M1MTIxZmIyMjhlM2JkYjRjIHB5M2sKKzc4NTY5IDg0OThmMGQ5ZjAyNjM2MmU5YWUxMTU0NTE2Y2VhNzI4YTkxZWI5ZmUgcmVsZWFzZTMxLW1haW50Cis3ODU3MCBhY2ExODg5NzBjNDdkMDZlYjMwNjc3MjYxZDliNDFkMTAwMjNjOTFhIHJlbGVhc2UyNi1tYWludAorNzg1NzEgMmM5YmYyMThjZTI5ODc4ZjQ3MTg0NTg5OWJlYzNjN2RjZjcwY2E0YiByZWxlYXNlMjYtbWFpbnQKKzc4NTcyIGM5ZjY4ZTQyYWI3OTZhM2JhYjRmOGNmM2NjNjljZTEwNTAzY2I5OTAgcmVsZWFzZTI2LW1haW50Cis3ODU3MyAxMTEwMTNkZDVhOGFhMGVlMGUyNTE3Y2ZiNjJlYWI5YjgwODc0ZDQ4IHJlbGVhc2UyNi1tYWludAorNzg1NzQgNGYxODk0NWZiOGIxN2ZkYmM0NGJmYzgyNzg3NjRjODZlY2Y1OWVmMyBsZWdhY3ktdHJ1bmsKKzc4NTc2IDgzZWY2NzUyNjAxMWFmZjRmZDk0YjEwMzhlMDM2MWY0N2I4ODI4MGEgbGVnYWN5LXRydW5rCis3ODU3NyBmOTIzZmU1NWE0MGMzYjc1ZTk1MGJhNDI0Y2QyYTJmNzI1ZDNhMjZiIHB5M2sKKzc4NTc4IDc1NWQ3YTNhNmJiNzU2ZTNhNjIzYzI5NWFjOTI3MzJjMzU1NzU2MzkgcmVsZWFzZTI2LW1haW50Cis3ODU3OSAzOGIwMmRkMmQ0NTliYWM2NjEwOGIzYjE3ZjgwY2NlNDQzNGNmMGFjIHJlbGVhc2UzMS1tYWludAorNzg1ODAgNDcyOGFhMmM4YTEyODQ1YTI4ZDM3OGRlZTk4ZGJhYWE5ZTIyMTU3YiBsZWdhY3ktdHJ1bmsKKzc4NTgxIDdhODllMWVjNGYwMDVjZTBlMTM5ZTIzYzFkNTdmMjIxNTkzOTA5OTYgbGVnYWN5LXRydW5rCis3ODU4MiA2ZDVjMzFmMjRhMjFiMmQ4NGY2YThjNjFkYjRmNzJhMjI4Njc0YzNjIGxlZ2FjeS10cnVuaworNzg1ODMgNmI5NjhlMmYwNWRkYjBkOTAzMWFiNWRiNTQwNTUzYmMyYTkwMWQ3NyBweTNrCis3ODU4NSAxYWNiNjQzYjJjZjQ0NWEwMDljZGI3YTU1YWQxM2ZjNTI5NWRlYWU5IGxlZ2FjeS10cnVuaworNzg1ODYgZTY0YzRiNDNlYjNjMjc2ODkyNDIyNTI4M2MzZDY5MjQzYmZlNmMwMSBsZWdhY3ktdHJ1bmsKKzc4NTg3IDRjYTgzYzViODU1MWJmZWNiYjhjMDcwY2Q0ZWE3NTliOGM4NmY4NWUgbGVnYWN5LXRydW5rCis3ODU4OCA4NDAxZGU2NWUxMmEyMThjMDRiNDYzODAwNTE2ZTg0OTkxODZmMzkxIGxlZ2FjeS10cnVuaworNzg1ODkgZGFiZGVlYzRmOWMxZDMzMTk1NDY3OGYyZmVkZjY1OWZlNGIxZWEzYiBsZWdhY3ktdHJ1bmsKKzc4NTkwIDgyZWRhMzQ1YTVmNmUxM2Q5Y2ViNjA4ZTgyZGE0MjNkOTYxNDBiMTEgbGVnYWN5LXRydW5rCis3ODU5MSA0YjdiNjk1M2NkMDY0OTcwZjUwNjdjZmNjZjkzYzNhNDhiMTAwNjFmIGxlZ2FjeS10cnVuaworNzg1OTIgMTM3YTIxZmNkMzg1MGFiOTU5ODYzNGM4ZWYwY2MwYTVmZWU2MTRiZiBsZWdhY3ktdHJ1bmsKKzc4NTkzIDgzZTdlZTE4NTE2MjNjY2FlMzZjMjQyOWNhOTkwZGI0MGJhNDc4MjAgbGVnYWN5LXRydW5rCis3ODU5NCA5NzBmYjRhOGU2NTRhYzliZjc5ZDQ5M2MwZTZlZGMxYjYwMjljNTU5IGxlZ2FjeS10cnVuaworNzg1OTUgMTJiY2I2OTkzOGIzYzAxMjc3N2MyNDUwNTU1ZGJiYmNhNGIxNzhiNSBweTNrCis3ODU5NiBjMzFhN2MwYzYzOTk4NTVlOWY4NGE4NjE3YThkOTliMzBiZmI3YjA3IGxlZ2FjeS10cnVuaworNzg1OTcgNWM2N2MxZWY4YWQzZjQ0ZjZkNjZhMjRiNzFmMTNkNmRhMTFjYmU2MCByZWxlYXNlMjYtbWFpbnQKKzc4NTk4IDAxZDZhMTRhYmE2NTE3NmZiMDk2OGZmMmIzMzhmMWMxYTdkNjA0ZjkgcHkzaworNzg1OTkgOTUxYzk3ZTI4NzhkNzFkODI0MjVjMTljMDQzMzlkNGY4ZTBkOWUyYSByZWxlYXNlMzEtbWFpbnQKKzc4NjAwIDhkNzIxNDdmNDQyY2Y5ZDVhMmY3NzQ2YWJhOWM0MmIwNzQ3YjcxNmUgbGVnYWN5LXRydW5rCis3ODYwMSBlYmE5NDJlNzc4OTU3YTExNjE0YTQzNjZlNDIzMWRmMDA5MzU5NzkwIGxlZ2FjeS10cnVuaworNzg2MDIgYjMwZjhjZTgyMTY3N2Q5MzBmNzA0ZGU1MTFhOWQ2YmM3YmExNGVlYiBweTNrCis3ODYwMyBiMDQ0NDA1ZDYyZTU1YzFlNTUwMmJjZTMxYTZmYWNhNWY4M2NmYzIyIGxlZ2FjeS10cnVuaworNzg2MDQgZjU0MTExMjUyNDVlZTI3M2Y3MzE2NTljZTUzNWQ0ZDUwMDVjMTRiZCBsZWdhY3ktdHJ1bmsKKzc4NjA1IDJkMjQxNzY1ZTYzMTc0Zjc5OTM0YzNhNWYxZTFkMzkwY2Y0ZGI2NmQgcHkzaworNzg2MDYgYWFiNWI3NmFhMDU5N2Q4MTQ5OTdmOGZiOWZkYmI2ZjVkZjFiMTdhNCBsZWdhY3ktdHJ1bmsKKzc4NjA3IDY4MTU5N2QwYzU4ZGYxMDcwZWFkMjI4ZWVlMDE2OTVkMDEwZTQ3ZTggcHkzaworNzg2MDggZDRhMTg4ZGFjMjIyODU2OTBmOWVjNTk3NTI5NmY0YWM1MWZlMjA3NCBweTNrCis3ODYwOSA2NTM3NzYxYzMxMDE4M2YwNDM5Y2NlYzg2MDM2OTBhOWVmYzliNDM5IHJlbGVhc2UzMS1tYWludAorNzg2MTAgN2VlYzYyMzhlMTVhYzRlN2ZhMjIzYWIxZmI0Y2MwYmZhY2MyZGE5NCBsZWdhY3ktdHJ1bmsKKzc4NjExIDA4Njg0NjM4MWU4ZjNkNmZiMGUwZTE5YzY2NzgyYThlOGQ0N2FhMzQgcHkzaworNzg2MTIgMWU0YzRiMjM1YTg5ZGQ3NTRmMDUzNDE4NTdiN2M1ZThhOWMwMGM1MiByZWxlYXNlMzEtbWFpbnQKKzc4NjEzIDI1YzBmNGQ3YWU1NjllNDNmYjRiM2E2MjBlYjllODc1MmZkYTIyYzkgbGVnYWN5LXRydW5rCis3ODYxNCAzOGNlZjhkZWFlMjJlZjAxNzMzZWI3MWRkZmFmYTY2MDhiOTVjMjVhIGxlZ2FjeS10cnVuaworNzg2MTUgNTg0ZWM3YTcyNTViMjQwZTlmNTdmYzQwNTZmMGU3MzM2MmNlYjA0NiBweTNrCis3ODYxNiBiZDljNzk5M2VlNzVlMzY1OWQ5YzYzZjQwOGIxZjQzYTc3OTZmMTY0IHB5M2sKKzc4NjE5IGJmZjA1MDQ1MDI4M2VjNzVjNmNlMGFiMDk1NjIwNGJjNjBhNGM2MGUgcmVsZWFzZTI2LW1haW50Cis3ODYyMCBiODc1MGM3MmI5YmM0N2ZjYjZiYWUxMWEwYzYzNmVlMjRlM2VmN2YzIGxlZ2FjeS10cnVuaworNzg2MjEgNjg3ZDg1MTdhMGMzOGNmYTJlNjY2MDZmY2IyNDhlNWU1NmNmZGZlMiByZWxlYXNlMjYtbWFpbnQKKzc4NjIyIDI5ZmFjNGIxYTUxZTc2M2QzZjA3Mjk0MzkyMWNmMGFjM2YyOGU1MmEgcHkzaworNzg2MjMgOGFjZTJlYWQ1NTIzN2IxZTcyYzZmMzRkODg0M2Y5OGUwNjA5N2YwOCBsZWdhY3ktdHJ1bmsKKzc4NjI0IDRiNDEzZGZhMjdmOTkyYTdiZTIzMjE4MzRjNjljZGVlMGExZDY5OTMgcmVsZWFzZTMxLW1haW50Cis3ODYyNSBjNTNjYzZiZDZiNjEzMDgwNjA3MTA5NTA5NDQ2N2JjMzZlNmMzZjJmIHJlbGVhc2UyNi1tYWludAorNzg2MjYgYzRmY2E3NzhiNTczYTUyNjYyZDZhMDM2NzQxYzU3MjUyNTE0NTMxZCBweTNrCis3ODYyNyBiOTk5OTg0NTNkNTIzYWUxMGViYmEzZGZiMWQ0YTlkZjc1MDBkNDZjIHJlbGVhc2UyNi1tYWludAorNzg2MjggZGUwNmI1OWFhNDNjN2Y5YWE1OGQxYWNlZDhkNmQ2YWNlZDQ4OTZiOCByZWxlYXNlMzEtbWFpbnQKKzc4NjI5IDViYjI5NWE5NGIwZjdkMDRkNGEyNzgzNGJiY2FlMjBjYjE4NTM3OWMgcmVsZWFzZTI2LW1haW50Cis3ODYzMCBjMzU5ZDVhY2RjNGI1YjQwN2M4MGQ1OGQxYzJiMDJkMGYyNDU1OWRlIHJlbGVhc2UyNi1tYWludAorNzg2MzIgNmYxZTJmZmQ3YmRlODllMGFiZjNmOWRiYzkyN2Q2MDVjZDM4ZjllMSBweTNrCis3ODYzMyBkZmE3NDkxMTQwZDk0YzZlMWUyZTM0MDM0OWQ1MmNiMGM3MDkyNzYyIHJlbGVhc2UzMS1tYWludAorNzg2MzQgZGYwMjcwYmVmOTcxOGY0YjIwNDM2ZDNkNDI3Yzg0NmZhNmQzZjBmZCBsZWdhY3ktdHJ1bmsKKzc4NjM1IDg2Nzg1MzQyNDJhMDkzOGRhMTdhNmRhMjI0ZGRmODJlODc1ZmEwNjMgbGVnYWN5LXRydW5rCis3ODYzNiBiZmVhNmMyMDJlZGU1NzY3N2FjYjUzZDU0Y2U3ODFiMDE5ZDk1Y2IzIHB5M2sKKzc4NjM3IDYwZTdlNmQzZTQ1YTg5MDdiZTkxYTgwNzA1ZWExYWM0OTkyY2NjODUgcmVsZWFzZTMxLW1haW50Cis3ODYzOCA3ZjUwMDY0MWMwNmExZDk0YzczNTBiYjk5MjlkNTU1NTkzNzg3NmRmIGxlZ2FjeS10cnVuaworNzg2MzkgZGQ4NTI3Mzk5NTgyM2FhNjJiOGNkYTBlODMyNDkxN2E4YWI0MjA2MyBweTNrCis3ODY0MCBkN2E2MmMxNjUwNWIxMmNjYzI2Nzg0NjBkNDliNmViN2U0NzA4Mzc0IHJlbGVhc2UzMS1tYWludAorNzg2NDEgZDVmYmRhMDNjNjAzM2NlMWFlYTA0NWMxNWVkMjA2MGZmMzllZWYzZCBsZWdhY3ktdHJ1bmsKKzc4NjQyIDk5NDRlNTEwNGE1NTk3MDM5OTAzZjM4ZjhkNTQ5M2RmYzVkYWI3NWIgcHkzaworNzg2NDMgNzU5NTkyMWExNDc0ODJmMjEwNjBhYzFiNTE5NTYwMjk1OGM5ODMyMiByZWxlYXNlMzEtbWFpbnQKKzc4NjQ0IDQ2MWQ5Y2QxOTViNzNiMzA2NjcyNjg4ZjIzMDJhYjEyYmEwYWY3MGEgbGVnYWN5LXRydW5rCis3ODY0NSA3NzkwMGU3ZGVhYTU4NzAwNWRmMTJmMmVmZTQ4NGIwNmFmN2VlNWQwIHB5M2sKKzc4NjQ2IDI2MjY5ZGZjMjJhYjQ3ZTQxMTRlZDdkZGY0MTIwYTMzODVmMTdmMzggbGVnYWN5LXRydW5rCis3ODY0NyAwYjI3YzNmMThjYjM4NmY1NjI0NzdmMzRmZmI2ZjhmZTQwMTA4OWYwIHB5M2sKKzc4NjQ4IGZkOGZkZDM4ODk2M2E5NjIxZDhkYjVmZDA2OGZkMDZhNTIyOGUxYWYgcmVsZWFzZTMxLW1haW50Cis3ODY0OSAzMDJkYmM2YzQ4MDcxZWRkNDRkN2U1ZmFkMzZhMDM1MzZkYTI2YjQ5IHB5M2sKKzc4NjUwIGI2Y2FiMjFkODBiOTViNjdhMDVmMzA5ZTFjNWJkYmZlYmE5ZDI5ZGYgcmVsZWFzZTMxLW1haW50Cis3ODY1MSBhM2MwMDU2NmMyZDU5YzJkZjkxZTdjZDQ3N2QwNGQwZjQ1MDE2Y2I1IHJlbGVhc2UyNi1tYWludAorNzg2NTIgODQxMzBjMjI2NWRjYTZmOTIwNzJjOGE2MTMyODI5ZGFiMmZlY2U2ZSBsZWdhY3ktdHJ1bmsKKzc4NjUzIDI5NWQ1OWZhNmU2MmUxZDJjNTE5MThhZjNkOTdkNzhlNzI3OTNmOWEgbGVnYWN5LXRydW5rCis3ODY1NCBkYjRkYTFlZGYzNGY1YTI1MWY1ZDA0MTRiYzRiMDQ5ZTBkMTljMDE5IHB5M2sKKzc4NjU1IDZmYWNiYzE4M2E0YTFmZjdjYzZjYWE1YmVmYTUxNGZkZTI1OWJmMDcgcHkzaworNzg2NTYgOTg3YmEzN2E1NDk0M2FkNDM5NTM4MzBjNjliMDYxYWM2YjkxM2Q0MSBsZWdhY3ktdHJ1bmsKKzc4NjU3IGVlYTE1ZmIwMjQ0ZTJlYjU2MTNiOTkyMWUxNDRkN2ViZTQ5ODkwOWEgcHkzaworNzg2NTggOTUxZmVjMTk2ZWRjNzBhOWRhZGM0NjRiMzhkZGU2MzNkY2U3YmU5NiByZWxlYXNlMzEtbWFpbnQKKzc4NjU5IGY4MzVlMjgyN2QxYWE2MzAzYjcwNGM3OGZkYWE5MDBhOWZlOTRjZDEgcmVsZWFzZTI2LW1haW50Cis3ODY2MCAwMmFlZmM0MjU3ZGU3NmY2M2VlMGI2YzMxNjk3ZWEwZDY4YjAyZGU2IGxlZ2FjeS10cnVuaworNzg2NjEgY2U4YmU2NGIzNGE4YTZkMTNmNDRjNWViMjY1MjE0NjU0ZmZjMzI1NCBsZWdhY3ktdHJ1bmsKKzc4NjYyIGQ4YjJmYTg4Nzg4YjFmNmIzZDczZGVjYjJiNjMwNWFjNjUxZGM3NWEgbGVnYWN5LXRydW5rCis3ODY2MyAwNDk1NWU3ZWI1OTcwNmZiODYyMzAyNWY2MDQwZDE1MDUwZmQxZWFlIHB5M2sKKzc4NjY0IDMxOWU2MjE1YzU2Y2I5OTVlYmY4YWM1Yjk5OTliY2UyZWJkNWU5MjggcHkzaworNzg2NjUgNGRmMzNlODNmMjZmMTBiNTdiNTc0MTI5ZmM3YjIzMzlmZmQwOWE4OSByZWxlYXNlMzEtbWFpbnQKKzc4NjY2IGFkMjJiYzIyZGRkY2JlZjM2MTkxNjk2YTAwNDI5YzdhNjA4ZDUwMWEgbGVnYWN5LXRydW5rCis3ODY2NyAzNTc0YzVmZTIwN2M0NjYxMzM3Njg5Y2U1MDRkZDkxYTk2MzRhYmJlIGxlZ2FjeS10cnVuaworNzg2NjggNjliMmFiYjk1MzQ4NzdkZGQ2NTI2MmZhYWMwZmU1ZjI2ODQwZjA1NCByZWxlYXNlMjYtbWFpbnQKKzc4NjY5IDgxZGMxNzJiZmRhYmRjZjM0NTYxYjg4ZmNlMjVjOTk0YWUyMDc2MDcgcmVsZWFzZTI2LW1haW50Cis3ODY3MCA3NTU3MTViM2NmMjNhM2U5MDcyOTBjYmU3MGIxNzkxYWZjZTEwM2NjIHB5M2sKKzc4NjcxIDQ1YzRiNmQ2ZTJhNTM0Y2U3YmM2MmZhNWNiZGJhMjYzYjgxYmY5MzMgbGVnYWN5LXRydW5rCis3ODY3MiAwMjFjYjRmNDU1OWE1ZmFhYzRiZjFhNmU5YmI0ZWI4Yjg0ZDdjNDJiIHB5M2sKKzc4NjczIDViODE5ZWM0ZTIwNWZjMGZkOWQxMmQ0NmRmMDQ5YzA1NDk3YWIxZWQgbGVnYWN5LXRydW5rCis3ODY3NCA0MzJmOGJhNjczODE4MTJiNDdiZDhhMGFmZjY1YTA2ZGIwN2NkMDQwIHB5M2sKKzc4Njc1IGZlZjRlMjUzZTg4YWYzNWMxMmI3YmQyNDg3M2U2MDNiY2ZkZDdiNjYgbGVnYWN5LXRydW5rCis3ODY3NiAwZmNhMzk3ZDUwZjdmZTY0NDc0NjI3NjQ3NGE3NjQxZDcwMmI5M2M1IHB5M2sKKzc4Njc4IDdiNDhlYmFhZGI2MDAwY2ZiNTQ2ZjZhYTcyOGU5NDQ1NTc0ZThkZjAgbGVnYWN5LXRydW5rCis3ODY4MCA3ZTk2YjBiY2JhMjdlZDc5ZDk5NDYzM2UwMzk1OWVjZjVhMGYyN2RkIGxlZ2FjeS10cnVuaworNzg2ODIgMDE5NzU5OTE2YTliYTdhMjRjOTFkMGFiNzAzZDg0NjZlMzJiMjg3ZSBsZWdhY3ktdHJ1bmsKKzc4NjgzIGU1MDMwMzNlMzE0MzZiOTQ5Y2FkZTQ3ODlkMmRhMzZkY2UxYWEyYWUgbGVnYWN5LXRydW5rCis3ODY4NCA4MjQ0NjNjNDQ4OTg0NDA1OGQ3YmNjZDFlN2YxYjYxMWVhNjU5ZmJmIHB5M2sKKzc4Njg1IDdjZDdmZjZiMGFkYjI4OTEyNTgyY2UwOWZlZWFlYzJmYThhYThkYTMgcmVsZWFzZTI2LW1haW50Cis3ODY4NiA4Yjg2NGFhNzhlOTI1MTdhM2RmNDA5ZjZlZDZkZGU0ZDRlNWZiZGYzIHJlbGVhc2UzMS1tYWludAorNzg2ODcgYWU3ZjI2ZDI0ZTFkY2Y3NDk3ZmUyOWI3ZGY4YmQ1NzFlZDI5YWM3ZSBweTNrCis3ODY4OCAwNGQzYWU1MmZmNzMwMmEzODc5YmJiYjNiNmY0MjFkOTQwNTVjYzViIGxlZ2FjeS10cnVuaworNzg2ODkgMzI2MTk5OTZhMDE0OGM0ZDc5NjMxNjg4MWMzYjk5MGY3ZjE5NDczNyBweTNrCis3ODY5MCBjMmQ5ZDUwZjM3YzU5YjYzM2I0Y2I4YTk1OTA0YWI3OTRjZTUyYzYyIGxlZ2FjeS10cnVuaworNzg2OTEgOTFmYjM5NGMwNGQ2M2Q5OWZlZTJhY2RmOGM3MjZmZmIyMzc0YzVhYyBweTNrCis3ODY5MiA4MTQ3NzE5MmNmN2E5OWEyMjlmOTYzODdiOTZiN2ZhMGI1OWVlZjkxIHB5M2sKKzc4NjkzIGNlZDVmMWY0MTRiMDBjNjU0N2QzMzdkMmRmNDYwYjAwMGUxMjY3NzAgcmVsZWFzZTMxLW1haW50Cis3ODY5NCBmZDE1NWEzNjhmNWJkNDY1ZDY1MzEzMTc3MjA1YzAyZjY2YTFkMDlkIGxlZ2FjeS10cnVuaworNzg2OTUgODE3NTIyZTM1MmQ2NmY2ZDU0OGI4YjIwZTAxMzY2YWEyODA5ZWQ4NSBweTNrCis3ODY5NiAxOWYzMGI0MjJjYTNmZDE3YmE5NDQ4Mjc5Nzc1YjBlYjFmY2U5Zjg2IHB5M2sKKzc4Njk3IDUwNDgwODNlOTlmZmNlNDMwOTNhN2VkZjJmNTc4YjNmNjJlYWUwYTUgcHkzaworNzg2OTggMzAwM2MxNjU2ZTJhZGVlYjVmYWY1YmIyMDIwY2E2NTJjMzMzYmQzYiBweTNrCis3ODY5OSBiZjU4NmIyNzc2ZjY3Y2M4ZWNkM2Y5ZWRjNjE0YTU4OWZiMDVlZGNmIHJlbGVhc2UyNi1tYWludAorNzg3MDAgZWNjYTcwM2JjMGRmNGRiNDVlYmM5NTZjOGQ3MzIxODY2YTg1M2FjZiByZWxlYXNlMzEtbWFpbnQKKzc4NzAxIDMxOTdlY2MwOTQ0YTE3ZjU1OTQzMGJkM2E0MWNhNDhjOTk3YjcyNTMgbGVnYWN5LXRydW5rCis3ODcwMiBkOWU2ZjMxODU2OGZjOTM2M2EzNDZmNzYwYTAzNzA5NzA1ZDliNGE1IHB5M2sKKzc4NzAzIGNjNzBmNjhlOWMxMTEzYzk3ZmE0YjA2NzIxYjNjNDc3ZTMwZTZjZmMgbGVnYWN5LXRydW5rCis3ODcwNCA0NTRlZmY4NDBiZDQyMmFmMDlmMGViMjUwOTdjNTAxMGI1MDgzNWU0IGxlZ2FjeS10cnVuaworNzg3MDUgOGRjNDBjNjM3NjFjOGZkY2I1NTk0ZTUzNWRmNDFlMTQ1NDg3ZDFmYSBweTNrCis3ODcwNiAyNWU5ZGRiY2UxMGFiZTRmYmVlMzg5Nzc0ZjM0MjcwNDNmZjg3ZTQxIGxlZ2FjeS10cnVuaworNzg3MDcgMmI1MDhhYTJhNDM2YmM1NWIyNDc1NDU3ZTQyODNmNjRlZjNmZTZhZSBsZWdhY3ktdHJ1bmsKKzc4NzA4IDJkNWNhMjgwNWVhNWYxYmNkNzc0OGU2YTk3NDNjNDZjNGI3MjNjNzEgcHkzaworNzg3MDkgMzJhYzQyOGNkMThiMzQyZTRkOWI2YmI5Nzg5ZWNiNzhhZGNlMTljZiBsZWdhY3ktdHJ1bmsKKzc4NzEwIDIxNTYzOGZjZjA5YmEwODYzMjBkODFjYzY1Zjc1MGJiN2IxNjZjMGYgbGVnYWN5LXRydW5rCis3ODcxMSA1ZDViY2E2ZWNiMTUxODQyOTNmNTM0NDBmMGQ5NWI4MjJhMmNiNmYyIHB5M2sKKzc4NzEyIDVjMzE3Njc3NWU4NzMwY2IzZDdjMzA0Mjk4ZWEzODViNmRjM2M3ZjkgbGVnYWN5LXRydW5rCis3ODcxMyA0YTExOWQ4NGQwYjU3NTc0M2IwMTc3YmNmOTg2ZWExYjA4NWM2Yzk4IGxlZ2FjeS10cnVuaworNzg3MTQgYjY4YTlhOGMyYzFmNDlmMmMwMThjMTYxMWU5NWIyN2RkMmY4ODkzMSByZWxlYXNlMjYtbWFpbnQKKzc4NzE1IDY3NDMwODc1YzFhMDM2MzFhZWVjMTQwOGRhOTcwNzg1ZGUwYWY3ZjggcHkzaworNzg3MTYgYWE0ODUyNjQ1MWQxNzA1NmUxMDNmMTE1NDI4YTVkZDE3ZDBiMTBhOCByZWxlYXNlMzEtbWFpbnQKKzc4NzE3IDVhYTNiZmM0OGNiZGViYjhlZTViZTk4MzBiZWY4ZjI3MWJhMTU2ZDUgbGVnYWN5LXRydW5rCis3ODcxOCBiYjA4YTNlYzE1NGRhNzM3NjVlMTE0NjY1ODcwMWFjMjE1N2ViYWZjIGxlZ2FjeS10cnVuaworNzg3MTkgNWIxNzY0Mzc0NTQ1YTNmMmRmMTczNWYxOWExOGE3YjBlZDRjZTQ3ZiBsZWdhY3ktdHJ1bmsKKzc4NzIwIDk2NmViMWI5ZTlkYmMzZGJmOGRjZTAzNDViMzk4ZDFkZjY0NzY4NDIgbGVnYWN5LXRydW5rCis3ODcyMSA3NDQ0ZDM0OGQ3NzFmMGY5ODFjMzgwMzZhY2FlMmQ2ZGM4ODFhNjc1IGxlZ2FjeS10cnVuaworNzg3MjIgNDhhNmMyNjIxMjI2NWM1M2I2ZGZmYjdiYWM1NGUwOTRjNWZmYjA2MiBsZWdhY3ktdHJ1bmsKKzc4NzIzIDQ4NmMxYzllZTAwNmMwNjdhZWY0ZmI0ZDA3YThlZmJlZjk0ZTdlMTYgcHkzaworNzg3MjQgZWZlNTI4ZWU5NThhNmIyMWQ1ZDU4NTY0NzQxYmEzZTUxY2FiMGNjYiBweTNrCis3ODcyNSAyNGM2YTU4M2E4NjZhYzhkMjA1ZGEzZDEwNWNjN2JjMjkxMjczNGM3IHB5M2sKKzc4NzI2IDRjNWM1YjQ2NjhiNGE2YWQ0OGI2OGI3MDAzOWU3MTE5YjcwYTY0NWMgbGVnYWN5LXRydW5rCis3ODcyNyBmMzYyY2Q0YmQyYzUxYzZjYzA1NDkyNTI2NjY5MjdlNWMyMWQ0OGNkIHB5M2sKKzc4NzI4IDEyMGQ2Y2NmMjZiMDRlOTk0NjhjMTY0YTE4NGEwOGUwMmYyYzZmYTQgbGVnYWN5LXRydW5rCis3ODcyOSA5MjU4ZjQwNWE3YWM0NjZiNDg1NzJhZGEwMjNkOGRjOWU0ZGI4NzYzIHB5M2sKKzc4NzMwIDk3Y2E5YjE0YTY2MDdiZWM3YmZiYzY5ZTBiNTc5ODU2MTU2NmI2NDIgcmVsZWFzZTMxLW1haW50Cis3ODczMSBkMGJiYmYzYzU1ZjVlMDE1YzM5YTEwNTFkMGJjNDVhZTNjYzllYzViIGxlZ2FjeS10cnVuaworNzg3MzIgYmRmNmQ3NjhhOGNjNWY4ZmFkMDc1YzhkMzgzZDJlZDAwNTk3ZGZiNCBsZWdhY3ktdHJ1bmsKKzc4NzMzIGMyY2Y2YzcxNzBjNTE1MmIwNTI4MmI4YjM2NTljZDk1MjY5MzQxNGQgcHkzaworNzg3MzQgZWJkYzJhYTczMGMwYmQxYzI3MzcxYzMyZTc0ZTVjYTAzODgyMzg1ZSBsZWdhY3ktdHJ1bmsKKzc4NzM1IGEwN2Y3MGZjODJhMTEwMmYxYmI1ZGFkMmUzMTgzZmRlNDYzM2YzYjEgbGVnYWN5LXRydW5rCis3ODczNiBlOGMxMTg5MTU3NjJlNzcxOWY1NjkzOGFiZWU0ZmUwZWMwNTZmNjM5IGxlZ2FjeS10cnVuaworNzg3MzcgNWE5NjMxYjlkZDIyNzYxN2I2M2IyZjc2YzA3MDAzYWEyYzA4YTU4NSByZWxlYXNlMzEtbWFpbnQKKzc4NzM4IGQyZTEwMjdlZGRlODRhMDI4NTNmY2Y5NzkwZjMxMWYxMGY0NmNmMGEgbGVnYWN5LXRydW5rCis3ODczOSBkY2ZiYzM0YjJlM2M2YWI3OTllNmY2YTk1ZDUyMmM4ZjEzZjkyYmEyIHB5M2sKKzc4NzQwIGY5ZWE5MTdhZmYxM2YyYWFlZTMyNWQ4Mzg3YmNiN2E1YmNjYmYyMmQgbGVnYWN5LXRydW5rCis3ODc0MSAxNDliOGI4NzUxNGQxMDQxNmI1OTg4ODRkYjVmNzQ2NTFmNjI1YjM4IHJlbGVhc2UzMS1tYWludAorNzg3NDIgMjEyNDc4NjQwYjFjMjYzNTM1ZmQwY2JmYTZkN2Q1ZGZhODg0ZjdjNSByZWxlYXNlMzEtbWFpbnQKKzc4NzQzIDE2YTI2ZDQzNzRlNDZiZmM5NzdlZWU0MWUwODA0ZWI1ZjgwZDYwYmIgbGVnYWN5LXRydW5rCis3ODc0NCA0ZmE5NmE5MTM4MDg3MWI2OGUxYjg0ZTdhODc1NzhlN2ExMThiZTczIHJlbGVhc2UzMS1tYWludAorNzg3NDUgYWQyNTZhNmM2NTk5MGM4YTM1Mzg3YjBkM2M5MmFjMGZmOWMyMTA4ZiBweTNrCis3ODc0NiAzMTdkMGM0M2FiMmI2YmM4NjQ0MzViNDVmZjY1MGM1ZTM3NWRmMDJiIGxlZ2FjeS10cnVuaworNzg3NDcgZjczNTYxMTI3ZjU3ZTNlMjM4NzNlOWE1ZTA0MWEyYmNkYjE1NWQxOCBweTNrCis3ODc0OCBlNmQxNDE1ODc1OGUxOGI2M2FmNTJiZDBiNTkxNjcyYjI1MjQyZTI0IHJlbGVhc2UyNi1tYWludAorNzg3NDkgMDgwMmJjOTczYjMyNGRhMjUxYmNmZmMxM2FkM2E5YmY1MGZmYTYwOSBsZWdhY3ktdHJ1bmsKKzc4NzUwIGNlOTczYjVjNzc5ZjAzMDRhZDNhYTIwZTVlNjMyMjM0NWFiZmU1ZDEgcHkzaworNzg3NTEgYzE2YjM3YjE4OTFiMDBjMDY1NzkxNDIxZTFkMDM1N2UwYTIwZDY2MCBsZWdhY3ktdHJ1bmsKKzc4NzUyIGVlODgwMjgxNWJhZDJiN2ZmOWY1NjBmOTBhZmNlYzNlNWRmNzNhOTAgcHkzaworNzg3NTMgY2RlMjY4N2UzN2MxNjUwOTI2N2Y4MzUzNjk3MTg5MmIxNGM3NGZjMiByZWxlYXNlMzEtbWFpbnQKKzc4NzU0IDRmMDIxNzk0OTNjMjVkMWZjYmQxOTU1YzBiMDdhNGViMGU3YTg5ZjEgcmVsZWFzZTI2LW1haW50Cis3ODc1NSAyOTkwYmQzYWU4ODM4YTc2ZWZmMTlkZjkxZDBmZjdjNDBjZGU4MmRjIGxlZ2FjeS10cnVuaworNzg3NTYgNDlhMGE5NTBkMjE5YjIyYjlmNWY5ZGNhMDI3NWY5NDRjZmFjYzczMyBweTNrCis3ODc1NyBlMmQ0MTA3OWQwNTk2N2U1YmI2YTZmODdjYjk3MzA1ODg5YmE1ZmE5IGxlZ2FjeS10cnVuaworNzg3NTggZTIzY2JhMDNjYzRiMzNkOWUxM2Y1OGQwMjFiY2JjZjgwMThhYjJiZiBsZWdhY3ktdHJ1bmsKKzc4NzU5IDI3NDIyZDE3MzFlOWU0Njk2NDhmNjk2NjEyNzMwMzExMjhlY2E3MzYgbGVnYWN5LXRydW5rCis3ODc2MCAxNzRiMDg3OWI3ZDBlY2FjYjI2Yjc1M2ZiNmE5YTVmOTU5OTlkNjExIGxlZ2FjeS10cnVuaworNzg3NjEgNzFlNGFiMjEzNDZkNDFlNTA0MTEyODU4MjQ5N2E3Mjc4Y2IzNGZmYiBsZWdhY3ktdHJ1bmsKKzc4NzYyIGNmYjQ0MmQ3MDJjZDQ3MWE2NTAyYTlkMmZiNjZlOGFhMWVmNjc2NDUgbGVnYWN5LXRydW5rCis3ODc2MyAwYTI3M2NhMTBmYTVlNGRmZTY1NjE4NDlkZDgxOTkzNjg3OTJjNTJhIHB5M2sKKzc4NzY0IDRhNmJlODY0YzZiODliMTdjNjM2OGQ5ODM1NzBhYzkyZDQxMTM4NmEgbGVnYWN5LXRydW5rCis3ODc2NSA4NWM5NWZkNWQ3ZTNhMDQ0YTIwNDBjZDE1NTg1MWFhYWY2ODRmY2RkIHB5M2sKKzc4NzY2IGVkYWFmY2E4NzQzMWM3Y2RmYzE1OTkwMmM4NGEzOGNmYTE2NDNiNmQgcHkzaworNzg3NjcgYWI3Yzg3ZWQ1Y2FkZDA0YmE5M2U3OGUyNWNjN2MxMjg1N2IwMWVlMyBsZWdhY3ktdHJ1bmsKKzc4NzY4IGRhMTk4OTQ5NDZlMWY2MTJjMWVjNDA0NTY4MDQyMTZkMDk2NzVlNTIgcmVsZWFzZTMxLW1haW50Cis3ODc2OSBlNDVmZjAyNzQ4MmZlNDg3OTNkZDdmZTJiMTU3ZTQ2ZDI3NTg4NjZhIGxlZ2FjeS10cnVuaworNzg3NzAgOGYyYzM2MGQwMjE0YjUwNDUwODI3NjdmNjM4NGE5NThlYmEzMGYxMyBsZWdhY3ktdHJ1bmsKKzc4NzcxIDViMWRhMzJjOWQ0ZTJkNGIwZDg3ZDk3NzM3YmIwNDBjOGUwZDIyMjggbGVnYWN5LXRydW5rCis3ODc3MiBjNzUyMDY0ZmMyNjI3MjE0OWUyYmVhMDc1ODdjNWY0M2I0ZjEwYzVlIGxlZ2FjeS10cnVuaworNzg3NzMgMzdhODQyNDlhYTA0Nzc3YjE2MDRhZWRiMTQ3ZDk4ZWI2MmUxMTk4YyBsZWdhY3ktdHJ1bmsKKzc4Nzc0IDg1ZWE0NTRhMTNkY2RhMTM2M2RmYTYxNmE5NWFlM2RiYjFkNzIzZjYgbGVnYWN5LXRydW5rCis3ODc3NSAxMzFjMjEwOGQyYjFhZjk4N2VkODdiMmNlNDdhMTdhMjk5NjhhYzBiIGxlZ2FjeS10cnVuaworNzg3NzYgNDY2MDM4N2I5YjM1MjMzMTY4YjhmN2RkMDhkZWU2NzExOTBiMDMyYiBsZWdhY3ktdHJ1bmsKKzc4Nzc3IDQxYWVmMDYyZDUyOTMxZjVjNmU0MzM4OWFkMGJlMmM3MzM1ZDJmZWMgbGVnYWN5LXRydW5rCis3ODc3OCBkYTcxNDY0ZDJjZmYyMThlNTBmNjAxYjQ3MjBmYjk1NzczNzgyNTJjIGxlZ2FjeS10cnVuaworNzg3NzkgNTc1YjEyYjE5OGExNjQ0YTk5MWFlM2JlNzM3MzAxZDJhNTdhNWZiYiBsZWdhY3ktdHJ1bmsKKzc4NzgwIDBmNDY4ZTJkOTNkMGFkMWQwNjIyN2JkMTE2YWFhZjZjN2EyMDc3ZTAgcHkzaworNzg3ODEgYzY3NmZmMGQ4NDk1ZjU3ODc3YzRiNDY2YmE2MmQwM2Q0ODhhYTU4MSByZWxlYXNlMjYtbWFpbnQKKzc4NzgyIGM2ZWQzMzAzNWQ2OTJhZjA1NjJjYWQ5YjA1YmVhZjI5NDVhNDJkNDQgcHkzaworNzg3ODMgZGEzYzVlZmU0MjUyZGQyMzMwMDU1MGYwOTk2NDU5ODE4MzMwMWFmMiByZWxlYXNlMzEtbWFpbnQKKzc4Nzg0IGIwYjgwZWMyZTNhMGZlMGI3NWRkNDkwZGNmNDNiYjMzOWQxMzZiM2QgbGVnYWN5LXRydW5rCis3ODc4NSAzOWQ3MDQ3ODA3ZDUyOTVhNmQ0OGFkOTQzNDgzOGYwZGIzN2RmZDc3IHJlbGVhc2UyNi1tYWludAorNzg3ODYgNDQ1ZjgwMWNhMmQwYjQyOTFjNTJhY2Q3OTI3NGM5OGE4YTM2MjVhMSBweTNrCis3ODc4NyA1NWY2YTNkNWMxNzc5NTczN2FkNjk0YjY0MDI4OTEyNzAzZWMxY2RkIGxlZ2FjeS10cnVuaworNzg3ODggNjY3MTkzMmJkOGI4YmZkMjA4MTQ2NWRkYjY3YTY4ZWE3NWYzMTdlZSBsZWdhY3ktdHJ1bmsKKzc4Nzg5IGEzZjYxNzgzNTRmNWRjMWMwNzU0MzY4YjFiNzQ5ODBmYjU0YzdhODkgbGVnYWN5LXRydW5rCis3ODc5MCA5NmUwMDExZWEwYTQ0Y2E2YTk3NGJhZGI0MzE1YjA3OTIyZGM0NjdiIGxlZ2FjeS10cnVuaworNzg3OTEgMmFjNGY0ZjdlMzkxMTYxY2EwMjEzNzY2YzNlZTkzNmY0YmMzZjFlZiBsZWdhY3ktdHJ1bmsKKzc4NzkyIGEyZjFjMTVjYWU2YzQwNWUyMWU4NDE1ZmZiODM1NjM5MzYyYTY5M2QgcHkzaworNzg3OTMgNzMzY2NjM2YzYTY4MDViMTFiZjVkNjM4YmRjZTBkOGUyMTM5MGM4YiBweTNrCis3ODc5NCAxNDYxNmRmOTI0MDc5ZDExNTJkYWViZWJmNDgzMTRkMjQ3OGI0MWQ2IGxlZ2FjeS10cnVuaworNzg3OTUgY2RmZGVmZWM5OWFiY2RhMTRkY2RhYTdmNDE1MWU4MDVmODAxNjNjMiBweTNrCis3ODc5NiA2OGUwNTA3NjMyYTkxZjc5MDA2YmI2OGM0M2NmODg3N2VmNzQ0OWRjIHB5M2sKKzc4Nzk3IGFjODA4ODRkZGNjMzI2Njk0ODMzOTc0NmFiNjVhYzA1NGMzMDEyNWEgcHkzaworNzg3OTggMDI0YzUzYTg2NTIxZjkwYzAwNDIxMmNmNzc0OTAxNzAxYWI2NmRmZiBweTNrCis3ODc5OSBiM2U2NjczYjZhZTRkMWUwODgyZWFkZmY3MjU2Y2U2NTQzZGNmNTk1IHB5M2sKKzc4ODAwIGQ5Mjg3OGJiYTdiYmY3MGZlY2IzYmFlMzc0ZjcyYWFhOTA0ZmNmMDEgbGVnYWN5LXRydW5rCis3ODgwMSA4OTVjZmViZGUxNzI3YmE3ZDU3OThjY2VhYjJlYjBmYzk4YjZmMWRlIHB5M2sKKzc4ODAyIGM1NTdhNTRhZDZkMWY4N2ZhZWUwNDVlMDhiOWJlOTRlZmRiMzRjNzYgbGVnYWN5LXRydW5rCis3ODgwMyAxY2RhM2Q3Nzc3YWU3ZTNkNTVhYTBmNTYxZDQyMmQyZDJjNDU4Y2MzIHB5M2sKKzc4ODA0IGM4NzAzOTZiNmFlMWExMWE5NWE0NTc5ZDRjOTU3ZTdhMDkxNzdkNGEgcHkzaworNzg4MDUgNTlhMTU3M2I4M2FjNDZiMThlMTg0YzdjYjY5NjgzYWJlNWYxNjhhMiByZWxlYXNlMjYtbWFpbnQKKzc4ODA2IGYxMjY4MmFmNTU3YjYxYWE3ZTAzOTRmMTM0MjY1NWI1ZmIxNGJhYmIgbGVnYWN5LXRydW5rCis3ODgwNyAyYTRlOTJlZmYzMGE3NDJhN2VhNDU5Zjg4NDFmYjVjMzIwYjJjNDhkIHB5M2sKKzc4ODA4IGU0MjE1NWM0NzQ5NGFmZmRjNjViN2MzMDE5ZTg1NWUwMmJhNDdhMDMgcHkzaworNzg4MDkgODhkMjY1ZGU3ZGFlMjA2ZDBjZGJiYjIzNjljY2Q2ZDkyY2RlNjNhOSByZWxlYXNlMzEtbWFpbnQKKzc4ODEwIDJlZWY5YjBlYmQ1Y2RmOTU4NGZkNzFkNzZjZjE4YzA3ODRmYmM2MjMgbGVnYWN5LXRydW5rCis3ODgxMSA1NjY3OWFmYWYwN2RiMmFkODYwYTg3MDA2NWJlZmIzYTdlZDBlOGQ2IGxlZ2FjeS10cnVuaworNzg4MTIgMWY1ZGE1NWVlN2Q3ZjAwMjY2ODM5MDMzMzdhZWZlM2UxNDIzZDBmNiBsZWdhY3ktdHJ1bmsKKzc4ODEzIGUyNzYyZjQ5NTM5MzVlNTFhMDdlYzlkNjVkZDVmZDI4N2JhZTRkNmQgcmVsZWFzZTI2LW1haW50Cis3ODgxNCBiYmYyZWRkNzUyYjYzMmYwODk2OTczOTczZDQwNTU1MTZmNWUzMzQ3IGxlZ2FjeS10cnVuaworNzg4MTUgMjY5YTEyYTUwMTIzZjNiZDk0Y2E0YTllMmUyM2EwMDMwNjE0ZjhkZCBsZWdhY3ktdHJ1bmsKKzc4ODE2IDNjOGUyMDAwNDNkNjllODllOWJhNmViOWVhYzUyNDJiZTEzNTI5MDAgcmVsZWFzZTI2LW1haW50Cis3ODgxNyA1NWY0ZGU1ZTM3OGE4OWViOTI4OGM3ODY5YWFmNzljMWI2ZjI5NzE0IGxlZ2FjeS10cnVuaworNzg4MTggNjUzMzQzMDNmZGQzZmEyNjZjZDZiMGQ3OTUzMmJlYTcxZWYyYzZiOSBweTNrCis3ODgxOSA2ZDliZTFhOTdjMTcyMmU2YTkxZDZiMjE1MDJmMWVhNTBmOWY1MjEyIGxlZ2FjeS10cnVuaworNzg4MjAgZGZiMjM5YzUwMDg5MmZlYzk1NzdkNDNiYzgxMjRjNTNlODRjNGY0OCByZWxlYXNlMjYtbWFpbnQKKzc4ODIxIDlkZDFlY2I1YTI0YzFiNDQyMjc1MzM5YTAyZDU3ZmJmYmNjNmE4YjIgcHkzaworNzg4MjIgZmE0NjMwOTE2Njk5MDQ2MzU3YTVhYzE2ODg0ZjNmYzQ3YmQwZWFhNiByZWxlYXNlMjYtbWFpbnQKKzc4ODIzIDAxN2FhZmU4MzI2ZmFjNmVhMThkYzcyNWQzODEyOGU5ZGU4NjU3ODkgcmVsZWFzZTI2LW1haW50Cis3ODgyNCA1MzBiNzFjZDNiMjk2MTJlOThkNmJlMTA4MWZmNjgzZTUzMGMxYjFmIHB5M2staml0Cis3ODgyNSBiYzBjYzY3NzFjYWE3ODkyNDAyOTZkNzYzZWZmMjEwNTM3NDdhZjRiIHJlbGVhc2UzMS1tYWludAorNzg4MjYgNDQ2ODY2NmQwMWM0YmE1MWE2NzI5MDFmYzk3MTBlZmNkZTYyZjJjYyBsZWdhY3ktdHJ1bmsKKzc4ODI3IDU1NTFmZTY2NjcwYzI0NGQwZDQ1MGFmOWYwY2ZjYWJkNmI2ZmNhYWQgbGVnYWN5LXRydW5rCis3ODgyOCBhZGJiMzdkM2QwZTUwM2QxYjA3YmY2NjNiOTBmNzhlOTJjOGZlMTZkIGxlZ2FjeS10cnVuaworNzg4MjkgMTM1Y2Q4MDY0ZDZmYjg1ZTg0OWY3YmEzYzM5ZGE1MTgzZGVhM2JhNSBweTNrCis3ODgzMCA1YjRhNjZkNjAxYzNhNDQ2MzAyMzRlZGQ4NDNkNmYxOWY4ODc4OGMyIGxlZ2FjeS10cnVuaworNzg4MzEgMDUzZWY2ZTgzY2VkN2M1ZDM4OGU0MGQ1YjA1YzZkODYzMmM5MzA5MiBweTNrCis3ODgzMiBhZDhmNjNkOWRjZDgwMzQ4ZDFiZTc4YjZiY2ZlNjk1YTUxN2ZhNjIwIGxlZ2FjeS10cnVuaworNzg4MzMgNmUzN2UxMjc1ODFiNGMxMDMwYzljMDg3NDg5NTM2MzZhYjAzNTc4YiBsZWdhY3ktdHJ1bmsKKzc4ODM0IGExMTEwMjRhMGJjYjZjNzJkNDMwMTM2YTIzMTA3NzUzZmNhODQwYWMgcHkzaworNzg4MzUgOGIyNDZlODU2MGRiNWQwMWFlODFmOTlmZTlkY2VhYTFmMzZkOTRkMyBsZWdhY3ktdHJ1bmsKKzc4ODM2IGU1MzY3ZDY3YTdmOGFiYjc4NmYyOTUwZTg1OGFkYTA4OTExMGU1OWYgbGVnYWN5LXRydW5rCis3ODgzNyBiOGVkZTBmZWU2MWExMzlmYmZmNzkxN2EyODc0YjA2OTg4N2RkODllIGxlZ2FjeS10cnVuaworNzg4MzggODMxZTMwYzBmZDczMDY4NWFjZTI1MzRhYmIxZWE2ZmNiY2JhZTY3ZiBsZWdhY3ktdHJ1bmsKKzc4ODM5IDkwM2QzZTYzM2E5MjU3YzkzZDgzMWZjZDkwZjI2ZWE0NGQzNzNjYWMgbGVnYWN5LXRydW5rCis3ODg0MSAwNmFkMzJjMDM0ODY0YjZhZDg5NGNkZTAxMWY5YjMyMjlmZmFhNGI5IGxlZ2FjeS10cnVuaworNzg4NDIgOTM0NzM3OWJkNWZiOTdkM2U2M2U3ZTQzOWYzZDhkMTQwM2Y5NjYwZCBsZWdhY3ktdHJ1bmsKKzc4ODQzIGI2MmY3NmFkNDMwZTI4MDIyZWI3NjlmNzU0Mjg4NDUzMzdjNmMzNjMgcHkzaworNzg4NDQgNGRkMDhhNWNjYThhZDljNGE2NjU0NmYyMTIyZDgwYTJjMWJlMzZiZSBsZWdhY3ktdHJ1bmsKKzc4ODQ1IDIwMTYwYjQ2MWNkM2FlYjMwNDZmYWY5OWU4ZmQ0YWFhMzU1NjU1ZWMgcHkzaworNzg4NDYgZWY0OGU0OGYwNjZlOTk5MTU3MzU2ODJiMjlhNWIxMjNiMzRjZmQyMyBsZWdhY3ktdHJ1bmsKKzc4ODQ3IDNlZDk1NDkwYmE5ZDNkYzcyOGMwYTliZWY1NWYzNWI3NzY0YTM3ODAgbGVnYWN5LXRydW5rCis3ODg0OCA2ZWEwYTU4ZWQ4Mzc2OTA0ZGI5OTFiZTg1ODZjZmVhMDk1ODgxMDE3IHB5M2sKKzc4ODQ5IDQ5MTJjZjNiMDE5MGIzNmRhZTViNGFjYTc3MDYyNzc3MDY1ZGUxNjkgcHkzaworNzg4NTAgZmNmZTMyNDY2M2E2MTcxN2E0OWI1ODJkNDVlNDE3MjJlNWJjNzM0OSBweTNrCis3ODg1MSA1YzVkZThhY2IzM2MxYTUxMTY5MzBlYTg2MzlkZjhjMDI3ZDY0M2M5IHB5M2sKKzc4ODUyIDljMmQ5MTkwMTRkMDdhYWRiZTYxNGIxMzg4NzI4YTA3NWY0NzM2MWUgcHkzaworNzg4NTMgYTU2NmU1M2YxMDZkNjBmZWFiYWNhOTA0NTI5YWU2YjdkNWQwYTc4OSBsZWdhY3ktdHJ1bmsKKzc4ODU1IDEzNWFhN2VkZjc5MmI4Mzc0OWFmYTM5NDVmMzJhNzRjODc0NTg3NDcgbGVnYWN5LXRydW5rCis3ODg1OSA1Mzk0ZDgxYzQ1MTNiYWI4N2MyYTMyZDgxZDRiZTM2Y2E0N2I4OTg0IGxlZ2FjeS10cnVuaworNzg4NjAgNjJkN2YwNDk3MDNiNDgzMDU3OGJhMTBkN2RkNTA0ZmI1M2U5ODdmYiBsZWdhY3ktdHJ1bmsKKzc4ODYxIDkwMjdiMTVmOWJiNzYyYTU3NGViZjFkOGFkZmE0MDk1N2U2MzczMTAgcHkzaworNzg4NjIgOTk0ODcxNDUzMmY5MjExNWEwMDU0MDI5OWRlOWIxNGVjZTRlMzRmMSBweTNrCis3ODg2MyBkZDQ4ZTNmMzJkZTU1NGYzZWE2MzMzNTRiOWQ2ZDZkYmRmMGViYTRhIHB5M2sKKzc4ODY4IDIzNmZiMGFmNDQwNDk3MDk2ODNhYmI1MWRmMjA1ZDk2MDc1MWQxYmQgcHkzaworNzg4NjkgYjA1NmJjNzY3YWUxZWIxOGY5Mjg1YWNiMmQxNWFlOTYxMGY3OGQyMCBweTNrCis3ODg3MCAyNmIxOTgwOWQ4MmU4ZjM3YTYyNWIxOTQ5NDhkZTVlZWMyZDBmNDI3IGxlZ2FjeS10cnVuaworNzg4NzEgNjliNzFjMzM4OTkyNWIxMzY1ODhiMDA5MTIyMTNkMjkwNzdkYzUzNSBweTNrCis3ODg3MiA0MjI2MWM2Y2E1NjQzMDFmMmRlZmNiZjgxMDg1N2VkYWNiM2ZiNGJlIHB5M2sKKzc4ODczIDFiY2I0NjU0NzJiZTU5YTgzNmNhMzY0NGMyZmI2NzY1ZTNmNmYwNmMgcHkzaworNzg4NzUgZjQ5ZDI0YjQ0NTZlYzllOTQxYTI4NTNjNDAyM2YxMDJkM2ZmYzU0NCBweTNrCis3ODg3NiAwNmZkYzVlMGMyYzI0M2M4M2M1YmU5YTQ2ZmNkY2I4OTIyZGJhYTU3IHB5M2sKKzc4ODc3IGM5ZGQ4MjNjMTQ2ZDFiNmYyMmZmYzgzMWRlOGUwZDY2NDMxMWIxOGYgcmVsZWFzZTI2LW1haW50Cis3ODg4MCBhYzc1NGZhZWI2M2U4OGY1ZTExZGQyZWQwMTVlMDRiZDVmMmJmNDc2IGxlZ2FjeS10cnVuaworNzg4ODEgODJhMjMwNDcxOTRiZmQwNTg2YzNiZDY2MGRlOTFhNTE5ZWNmNDYyZiByZWxlYXNlMjYtbWFpbnQKKzc4ODgyIDA3YWRiMDk0NDBlZjg5NjY1MjQ4ZTU2NThhOTQyYTllMTExZjhmOGMgcHkzaworNzg4ODMgNmFlMDkwZmQ5OWZlM2IxMzMyMDcyNGIzMzU5ZDc3YTU2NDkxYmQwYyByZWxlYXNlMzEtbWFpbnQKKzc4ODg0IDI3M2ViNWMxYjliOTczNWFlNjNmNWY4YTBiMDM2ZDhhM2FhZWExMGYgcHkzaworNzg4ODUgOTAwZmNhY2M2NDAzNGExNzRjYTk0YzcxMjZlYzQ1ZDBjNTM0NTk0MyByZWxlYXNlMzEtbWFpbnQKKzc4ODg2IDFlMDFlZjk3NTg5OTlmNmZjZmZmMDE0NDdmYTBkYjczYTc3MTRiZGEgbGVnYWN5LXRydW5rCis3ODg4NyA3NmYwN2NjZDdkYjVjNzVlZWMyZmE2YmJjOTNkZTU1YWJjNTYxZmIxIGxlZ2FjeS10cnVuaworNzg4ODggNjcyNjQ2MzY0NmZiNDA4OGVmMzIzMzc2Y2ZjZjQ0MzIxZjlmNzUyMyBweTNrCis3ODg4OSA5ODA4MDhkZTMwYzkxZWYzNTk1MjhmNTcyNDQzMmJkN2FiOTZmMDQyIHJlbGVhc2UyNi1tYWludAorNzg4OTAgZTQ3NDM4NmZmOTZlODg1OWE5OTJlMzkyY2EzMDIwZWRkOTQ4YTNjMCByZWxlYXNlMzEtbWFpbnQKKzc4ODkxIGY4MDhiMTZjY2ZkNmFkZTMxYWQ1MzRjZjdhNTA3ZjhmMDIwY2VmZTkgcHkzaworNzg4OTIgZDZmMjA0ZDQwNjk1ZWJlZjYxM2FkNGZkZWQ3ZjFkMzRkNmFhMzFlNSByZWxlYXNlMzEtbWFpbnQKKzc4ODkzIGMxZmIwN2E1N2M4ZDY3OWEzMjdiODdiZTcxNDI5ODZjMjdjNjJkZDIgcHkzaworNzg4OTQgYzIxYjNlMzJlZDdiOGUyZTZhNTQxNDZlYjYxMzQ1Y2MxYTkwYTI3ZCBweTNrCis3ODg5NSA1ZGNjMzYxOWQ2ZDFkYTgzYTA4ZGQ0MDNiYzVkMzc2NDk0YzhiZTUxIGxlZ2FjeS10cnVuaworNzg4OTYgNjczNTNmYjQwNWVjOTJiZTEwOGQ1OWIyNTJmN2RjNGMwMTEwN2I4MyBweTNrCis3ODg5NyAyMmM4NzcwZjk5MjM5NmIzY2RhMWJlZWNiNDFkZDlmZWQ4NDZlOGY0IHJlbGVhc2UzMS1tYWludAorNzg4OTggMWVlMjQ1MmNlOTQyNjYxNmU1MjI2MDEzMzI1MGU0MWI5ZjcwODllMiBsZWdhY3ktdHJ1bmsKKzc4ODk5IGY0MGE4MDg1MjQ4MDM1YjE3MWIzZDZjNzMzODBlMmMzN2M4YmMzYzAgcHkzaworNzg5MDAgZTEwZDYxY2EzNjhlZGZhZGZjNmRiNTAzM2Y0YzdmZGRkYTFhYWVkMCBsZWdhY3ktdHJ1bmsKKzc4OTAxIDc3YzVjOTBiZWVmMDI4ZDhjOThkNDMwOWZmMDJiNmMwMzZlMTcwNGUgcHkzaworNzg5MDIgZjY1OTc3ZGNmMjFhY2FkMDNlMWU2NGI0NTQ2Y2VmNDI4Zjg5ZTJlNCBweTNrCis3ODkwMyA0ZmJmM2U3MDhmYzQwMWI3MTVmODkwZTFlYjliYmY3YzljYjNiN2Q3IHJlbGVhc2UzMS1tYWludAorNzg5MDQgYjNlZTVmZWQ4ZGE0ODEwNGZkNzllYTBjZjk4NGYyZmE4MGIwNzA4YSByZWxlYXNlMzEtbWFpbnQKKzc4OTA1IDgwMjgzNzA5NzE5MTc2OTI2ZTg0MmZiMTJhMjJkNDYzNTc5NzFjYjUgcmVsZWFzZTI2LW1haW50Cis3ODkwNiA5MGRhYTA3YTQzYmZlOTQ3YmQ1YzI0MTczNWU5M2M3YTg0NWUxMjlmIHJlbGVhc2UzMS1tYWludAorNzg5MDcgNWExNmJmNmRhOTg5MmY4NWRhY2IxMzY1YjYyM2I4ZjA4YjY3ZGM1ZCByZWxlYXNlMjYtbWFpbnQKKzc4OTA4IGYyNTVhNDZiMzE1YWY2Mjk1ZDk1MTc0N2QwNTcyMzU3NTQ2YzY3OTggbGVnYWN5LXRydW5rCis3ODkxMCBkYTk0ZjE2NjZkYTE4ZDE3YzJhOGM1N2I1NmUwNDI4NTk3NzYxZmFkIGxlZ2FjeS10cnVuaworNzg5MTEgNTVlY2RiNzljNjYwMmRkNmU0ZmVmYmZjMDRiYmQ5YjYxOWFkYjRlNSBweTNrCis3ODkxMiBiMWIyMmM2MDIyMmI0MDAyZWE3MGUzZjdjMGNjZTk1Mjg2MTZkZTVlIHJlbGVhc2UzMS1tYWludAorNzg5MTMgNDYwODIzYzY3NWY4OTM4YmIxZjU0YWU5ZTc1YzM1ODNkNTE3YzVhMCByZWxlYXNlMjYtbWFpbnQKKzc4OTE0IDQzY2E2N2JkNzAwYTY5ODEwM2E2NTJiYTIxNTBjM2ZjZGVkM2EzODAgcmVsZWFzZTI2LW1haW50Cis3ODkxNSBhZDAxN2QxYjgwNzJlMGZhODhkNjdiNjNlYWRhNDMwNjNjZTBmODBiIHB5M2sKKzc4OTE2IDVhNmU4OTcwNjRkNmJiMTkyMDg1OTFkOGQ1MDM0YTNlMGUyYzYxZGIgcmVsZWFzZTMxLW1haW50Cis3ODkxNyA2ZDVhYmZmN2ZjMzEzOThiMWRmYzZlYmRjMTFjYmZmMTdlM2VmNjEwIGxlZ2FjeS10cnVuaworNzg5MTggZDFlZGYyODI0MDA4MjVmMWQxNGIxYzhmZTcyYWVlZGNjZTNkNGI1MCBweTNrCis3ODkxOSAyN2FhNDZkMDIxNGFiYzAwNjQ0MTAwYTM5OGYxZjViNzFkMDM2ZWMwIGxlZ2FjeS10cnVuaworNzg5MjAgYTdiNThmMWU4YWYwODVkODc0NWRiODdjNmQxY2I0Y2E2MTk0ZGE2NCBweTNrCis3ODkyMSBiODc4YTBhZDRkOGM2YjRjYjY1ZGE4MmM2NWQ3NWE5MjkwYzFiNmU3IGxlZ2FjeS10cnVuaworNzg5MjIgNTFkMjZmMzFiY2U5NTUyYjYyMmNjZjVlMGRlZmY1ODIyZTVjNzFkNiBsZWdhY3ktdHJ1bmsKKzc4OTIzIGUxZDUxY2QzMTVkMDg1MzQxNmI2YTJkY2RkYmE1ZjI1ZWMyNDk3ZmQgcmVsZWFzZTI2LW1haW50Cis3ODkyNCAzMmM1YWQyOTY2M2NkZTM3NDJjYWQxMDliZjBlMGEyZWQzNDdiOThlIHB5M2sKKzc4OTI1IDE5ZTk2NjBkOWFhNTEyZmUzNDZiYTQyNGY1MzU1N2Y5MTY4M2VjOWQgcmVsZWFzZTMxLW1haW50Cis3ODkyNiBlODA4ZmM1NDhjZDY2NWM5YTYxNDJlNTA4Mjg3YjZhYWM0MjQxNzI5IGxlZ2FjeS10cnVuaworNzg5MjcgMDAyNmU0NDM2MmU1N2QwNGU1NDg1YjRiYTNkYTFjNDZjZmZmYjcyNSBweTNrCis3ODkyOSA2Nzc0ZThjNmMzOWYzODRjZTU3YjhmODUwZGRiNjVkZTI3NzExNmM1IHB5M2sKKzc4OTMwIDg1OTI5NmE3MDkyZjBjYmI2ZjFjMTJiZTEyZGNjM2VmYWNjYWQ0ZmUgcHkzaworNzg5MzEgZTBhMTc3MGRmNTI3ODYxMmVkZWM0MzNiNDExNWViODhhZTExNjQ4MSByZWxlYXNlMjYtbWFpbnQKKzc4OTMyIDcyOGVmMDA3MmRhZjIyZDg5ZjNjODMxOGZmYjhkODRiZmMyZDgzY2QgbGVnYWN5LXRydW5rCis3ODkzMyAyOTA5YTRjYjFiYTcyZjEzY2Q1MDM5ODQzNzRlMWE3MDk0MTAyNTgwIHB5M2sKKzc4OTM0IGFkYzM5MGU2Njg5MDQwMWQ3NjFmMTc3NGZjMDhiNTY3N2RlYWI5NWMgbGVnYWN5LXRydW5rCis3ODkzNSBjYzEzMjEyMTJlNzM0NjBjYmIxZTVlOWQ5MDcwMGY5Zjk2MWEzOTgwIHJlbGVhc2UyNi1tYWludAorNzg5MzYgZDZlMjdmYTIyZjQyYTI2NmM2NmVlYjYzOGQwNTZjYzAyZWExZjgxYiByZWxlYXNlMjYtbWFpbnQKKzc4OTM3IDVmZTVhMjZlMzE2OWU4OWNkYTk1ODBiYmY4OWYzN2ZmOTlhZDY3NTggbGVnYWN5LXRydW5rCis3ODkzOCBkMzkwNWE5ZjQwZjQwNTlkMmQ1Yjk3YjI1NzdkNTEyYzdmZmViYzM3IHB5M2sKKzc4OTM5IDBiNDU3ZjE0OTc2MWRiNmFhZjcwYzI4ZGUyNTA1YjBlZjI0ZTUzMGYgbGVnYWN5LXRydW5rCis3ODk0MCAxYTgxMGNlMTNkYmQ3YzQzYmM3YjczMjMzNzljYzQ1ZTFiNzUyM2Y5IHB5M2sKKzc4OTQxIDk2OTY5MzJhZDgyNzVlNzNmYTk3YzUwODBhNmVhYjExZTZjYWUzYTggcHkzaworNzg5NDIgN2ExOGMyNzYyODg2MTY1NDMwOWFkZGE0NDNhYWM4YjI3NjM4N2JlNSBweTNrCis3ODk0MyBkMzBlYjQyMmM1NjRiZjYxYTBjM2Q4MGQwODIyMWY5YWEyMDQyMTYwIHB5M2sKKzc4OTQ0IDQ2MWI4OWI5NTU1ZDBjYTkzMmM1OWY0MjEzZDFlMjg1Mzk4YjIyMzkgbGVnYWN5LXRydW5rCis3ODk0NSBmMDk3ZjJiYTIzMjkzNzI3MzMzYTZmYjk4ZTVhYzVjM2NjMTRlNjBjIHB5M2sKKzc4OTQ2IDc2ODcyMmIyYWUwYTU5ODQwNzkwZGUxNTAyNWRkNTc3YmEyMzNiYzcgcHkzaworNzg5NDcgMzcyZDFkZTg2ZGU5Zjg2MzBkZTY4ODZjOTc5MmU2MDM4YmM1NTk4YyBweTNrCis3ODk0OCAzZDY4MDk0OWY3NTVkODZiYTlhZTcxMjM0YjUzMTg1MDI0MGI3YWE2IHB5M2sKKzc4OTQ5IGYxMjcwZTAwZjU4Nzg3NmMzY2FmMWFlYTU2OTdmMGM0NDMwNDI4MWIgbGVnYWN5LXRydW5rCis3ODk1MCBkZjhmODFkZjg1OTVjZTVmOTRkNGI1M2I0ZDkxZjY4MTI5ZjY0NTQ2IHB5M2sKKzc4OTUxIDMwOGNmZjdkZjY0ZjE3NGVkZTg2OWEzNmFiYjkwZTBmMjQzNTc5NzkgcmVsZWFzZTMxLW1haW50Cis3ODk1MiA0MDNkMGEyN2JkNTZlZTU1MzY0YzdjZmZjNGFiODBmMGI0MDkzOWVhIGxlZ2FjeS10cnVuaworNzg5NTQgZTdmMTFmNDRkNTE0NTVmNDJjZjJlODc4ZGRjMTRkOGQ1Mzk2OWNiNCBsZWdhY3ktdHJ1bmsKKzc4OTU1IDc3YzcxZjI1OGRmN2NhNzVmODViNDk4N2I1MzU5NzcyNjM4NGE1ZmYgcHkzaworNzg5NTYgNWI3NTRlODgyODU3Y2ZkMWIzMzQ1ZjQzMTJkZDg4MjU5YTNjYThlMiBweTNrCis3ODk1NyBiOTNjZmFmY2RjYWQ3YzMzY2I5NTM2ODhkMGUxMTE1NmFkMzBlYmIxIHB5M2sKKzc4OTU4IDljZjcwMmM5MWE5ZThhZWY4NDkzZjNhNWY1MGY3NDViNjg1ZmIwYmMgcHkzaworNzg5NTkgZTdiNWZjODY0NmFiZmE5MDFlNzJhMzNhYzM5OGFmOWVkNTJlZDc2OSBweTNrCis3ODk2MCBjOGNjYjRlMGM2ZmVhN2QzZDAzM2QyZTdiZDQ2NTk4OGYyZTVkZjQ2IHB5M2sKKzc4OTYxIGM0NWYyMTcwNWVjYjc5ZTM0MWJmYjRjMzkzZjFjNTc1MjNiNTM2YjIgcHkzaworNzg5NjIgOGE5MDllNmQyY2FmYTc5M2VmZTQ3YmI0MTYyMzU1MDAzN2EzYWE2NyBsZWdhY3ktdHJ1bmsKKzc4OTYzIGMxNmUwNzU1ZmNkN2QwNzhkNDY1MTQ5NDY1NjZiMGI5NDJlMWM5NjEgcHkzaworNzg5NjQgYjU3MGM1YjliMmVmMzU0ODQzNjdlNTYxNDUzMDE5MDk5ZGI0YmFjMyBsZWdhY3ktdHJ1bmsKKzc4OTY1IDU5ZTIyM2EwNTY4MGZhMjkxYmZkMzNlMzEzMWM2NzQxOTc1YTAyMTMgcHkzaworNzg5NjYgZDM2MGYzN2E0YjU5NWZiOWEzNDUzMDU3NWQxZmU0NWU5NmQ3NjI4OCBsZWdhY3ktdHJ1bmsKKzc4OTY3IDhmMTk5M2I4NjZmNzkwMjE0ODAxYzBjYzE4MWQ0YjMwYWI3YjhjMjggcHkzaworNzg5NjggZWVmZDUyMWYxOWNlMDVmMzlmNzRiMDJjNzE5MmI2YmYyYTgwY2IwYyBsZWdhY3ktdHJ1bmsKKzc4OTY5IGJiMDZhYTkxODM4MjFkNDUyMjdiMzgyZjk3MjgwYWUwYTk2YjAyZDMgbGVnYWN5LXRydW5rCis3ODk3MCAwOGM1NDczYmVkY2MzOTNlZmU1NGYyZWNhNTFlMTFhOGFjMTExOThmIGxlZ2FjeS10cnVuaworNzg5NzEgZTFkZTA4MGM0NTU2ZDM5NTAwMDRiNjQzNDU4YmFhNGMwOTg5YWVhMSBsZWdhY3ktdHJ1bmsKKzc4OTcyIGI3NGYxYmI4OGU2MDk0ZjMzM2I4MmM3OGM2ZDVhNmJkYTIyYjFkNDMgbGVnYWN5LXRydW5rCis3ODk3MyBhZGI1ZTkyOGJkZTIwZjcyZTY1NjFlMGUwZmZlMGJjZDJmZTk3NTVhIHB5M2sKKzc4OTc0IDM4ZjJmNTI2MmIyMDNhZDU2ZjEwOTgwZDZhNzViNGFiMDg1MGFlNjQgbGVnYWN5LXRydW5rCis3ODk3NSAzN2FkNDBhMjhkM2JmNDBiOWM3MDIwYmU0ZGU5NDk2MWJhYWE4ZTIyIHB5M2sKKzc4OTc2IDk1ZjIxYjJjMjE2YzA4ZmRkOTZiMWZiNjUwOWIwZGNiMWQ4NjQwZWUgbGVnYWN5LXRydW5rCis3ODk3NyA4ZTM4YjdiZWY3MDAwNDJmZjZjZTNmYTBhZjk1OGI1MmUwMThlYzQxIHB5M2sKKzc4OTc4IGRiMzc5YTkwYjQ2ZTQwNDAyZDQ1MGIwNGZiMGRhY2I2ZmM2OTA1NjEgcHkzaworNzg5NzkgNzNlNDJjMGY1Yzk5ZTUyMWZkYmYxZTgwOTljNzBmYzNmY2I5MDIxOCBsZWdhY3ktdHJ1bmsKKzc4OTgwIGI4OTAwYTFkOTgzNTMwODhjNTEwYWIxNjEyNjVkYWY0NGY1NzRmOTMgcHkzaworNzg5ODEgYTJkYmE2ZmUzZmJlNWE4OGNhYTIyNDY0YWY1MzY3N2MyYjMxMDA2OCByZWxlYXNlMzEtbWFpbnQKKzc4OTgyIDhhYTU1MzBlODQwNzNkODhmYmFlYmQzMTc3ZTgyMWFlY2M3ODM5NzIgbGVnYWN5LXRydW5rCis3ODk4MyBlZWI5YmYxNTI1YmFjOGFhZGRjMzUwMGNjZTQ0N2M4OGExODgyOTZhIGxlZ2FjeS10cnVuaworNzg5ODUgYzE5YjRiZmI4MDZhYThjMTUxNWQ4MzdmMWQ5YzQ4MWQxODUxY2MxMiBsZWdhY3ktdHJ1bmsKKzc4OTg2IGM0ZGQzMGI1ZDA3ZWFjZmIzZWFlZDQ0N2U4NWE5ZTExNWM2NzdkY2YgbGVnYWN5LXRydW5rCis3ODk4NyA1OTkzMTE3OWM1ZTJjNTgyM2QxNjJkMjc2MGI3YmMyODU4YTdkNGE3IHB5M2sKKzc4OTg4IDc5ODQ1ZTNkNWNhYzIxZTVlYTM2NmQ4ZGM2YTExNDhiY2NmZDNlMmIgbGVnYWN5LXRydW5rCis3ODk4OSA5ZmZjOGYwNTE1Y2RlYzYwODRmZTVlZTJhODFkMzc1ZjA2OGRhNjgxIHB5M2sKKzc4OTkwIDkyM2M4NzM5Y2E4NjE3NGZlZjkyNDhkNjUwZTg0MDE3MzIyYTdiNjIgcmVsZWFzZTMxLW1haW50Cis3ODk5MSA4NTI3OTliYjNmYjEzY2MxYmE3NWI0ODE1MTM3NWY3MTM2MzE1MGI1IHB5M2sKKzc4OTkyIDQyNTcyZTM0NzEwOGEyZDFkZDc1Mzk1YTY3MDYzNjI4YjQ3ZjZjZDkgcHkzaworNzg5OTMgYjQ1MzNiNTgwZmM5ZWMxYTNkYTU1NWY1YWQ4MzhkNjQ4ZjEzZjcxZSBweTNrCis3ODk5NCA3NDUxNDAwMGY4Mzc1ZDY0Nzk5OWU1NmQ2MzAyM2ZmZTI4ZjllZTUxIHB5M2sKKzc4OTk1IDY2MWNhMGIwNWEzMWU3NTViYzMxZWIwYmEyMjc1NDE2OTI0ZmFmNTMgcHkzay1qaXQKKzc4OTk2IGJmNGE0YWNlZmIyZjg3MDhiMzg5MjY3Njk0ZDc5ZmI0MWMwZjVlM2QgbGVnYWN5LXRydW5rCis3ODk5NyBjOTY2ZTZmZDYxNzhiMTNkZDQzN2U2YzU4ZGJlYjZjNThlYzk4ZTQ0IHB5M2sKKzc4OTk4IDk1YjI2OWM4NjhkYWM5NDViMWFjZGRlYTZiNDQzZWVlNzI0YWZkMjQgcHkzay1qaXQKKzc5MDA5IGFhNjMyOTQzYjhiZGRhZDExMmVhNzBhMGU1ZWI0OTZhNTY5NGJlMjUgcHkzaworNzkwMTAgOTdiNjYyYjEwZmY4MzkwZTQxOTE3NGNjYWFiYWU2NDZlMTliZTc4ZSBweTNrLWppdAorNzkwMTEgMmUxNmM5NjM0MDFkZTAzYjA2OWVjNzkzY2UwMmEyMWE3MjY2N2I0YiBweTNrLWppdAorNzkwMTIgYmM2NWI4NmZhZTk0NjJlN2Q4YTZiZThmOTNkMTFiZDZlZGM3ZjBkNSBweTNrLWppdAorNzkwMTMgMTkwZWFkYWVhYmM1MmFkN2RmZDI1MzBkNzU2NmQxZTlhNjM3YjUyZSBsZWdhY3ktdHJ1bmsKKzc5MDE0IDBmMDgwOTYxZWNlZjEzMWIwNGYyMzgyZjQ5YTY4YTAwYmI2YjhmNzIgcHkzaworNzkwMTUgM2JlM2FjMDE5YmRiMDRlNDM5MGQxOTYxNzhiNzg4ZDFhZDVkMzcyZSBweTNrLWppdAorNzkwMTYgMjA2NGJmNjJhMzlmNzg2OGIzYzM3NDBhOTRkMDUyM2FmMTI5NWYyMyBsZWdhY3ktdHJ1bmsKKzc5MDE3IGJhYzcyZjExYTk4YzU2YzM2MDc4ZTJlZGUzMmIwNTFhNTgwODdlNTMgcHkzaworNzkwMTggMzBmMjgzMDM5ZTBlOTlhNzU3ZDA4MDMwM2UwMjg4YjFhYzQ1YTE1YyBsZWdhY3ktdHJ1bmsKKzc5MDE5IDQ0MDdhYzRjNjM2MGJlNDFmMGJlYWU3OTAzY2I0OTZmMmJlOTUxMGMgcHkzaworNzkwMjAgNThlM2JjMjFjMmRkNzAxZWI0MmE1NzVjN2UwYWIwNTYxZmQzOTMwZiBweTNrCis3OTAyMSA3MDY1NTlkM2FjNTkwOGVjYWE3ZDQ3MGQ4NTYxNjY1ZGUxY2Q5YmFmIHB5M2staml0Cis3OTAyMiA2OWMwZDVlYTJlMWUzYzNiNDcwZThlNDZlM2Q3OGYwM2Y4MjNhNmMzIHB5M2sKKzc5MDIzIDViODg4ZjU5MGZlMjRjYjIzNGUxMjZmYzRjZmJkY2ExMjdjYzdiZjEgbGVnYWN5LXRydW5rCis3OTAyNCA1ODI3ODBlZGQwZTg4YTNiYzY1MzM2NjllMDUwZTU3MDQ2ZTMyZDdjIGxlZ2FjeS10cnVuaworNzkwMjUgODAzOGFmMWUyMDY1NWViNjMzY2U2OGI0MTkwY2FhYzZmNDE0OGRjZSBweTNrCis3OTAyNiA4YTQ2OTNkNTE3ZmVjZjFhM2M4NDkxNTcwNzcyNDA2MzY5MGJlOTlkIGxlZ2FjeS10cnVuaworNzkwMjcgN2YxNjJhMzA5NDk3ODVkOGJlMTAxOTNkODYzODRkN2QzZTZkMGQ5YiBsZWdhY3ktdHJ1bmsKKzc5MDI4IDM0NjU4MmY4NWZhZjg4NDdmNWIyZjViMWQ5MWE4MmU1ZmQ2ODM1NGUgcHkzay1qaXQKKzc5MDI5IDEwYjc2MDZhOTNlZDAzOTFhMjMzNTVlYzM0MDNmOGVkZmMzZDFkZWEgcHkzay1qaXQKKzc5MDMwIDliNDYyNTcwMDI1MWI3NDAwNmNmMjQ1YWJjZGY2ZDAyZDg4Y2ViMWYgbGVnYWN5LXRydW5rCis3OTAzMSA3ZGYzZTEzZDNlNTA5ZTBmMmIwOTk4Y2M3YWM5OWJkNjcxNjdjY2E3IGxlZ2FjeS10cnVuaworNzkwMzIgNzQwOWI1YTdjODFhNmYwNjJmZTczNjc0ODFkMGY1NjE4MzBhN2RlYSBsZWdhY3ktdHJ1bmsKKzc5MDMzIDgwZGM0ZDEzMWQ4NWRkMzMxMjBmOWVhYWVkODM5ZjUxYWI2OGQyODMgcHkzaworNzkwMzQgYjg3OTIwOWMyMDJmZDMzMzg4MTAyYTRlMzQ5ODZhNTI1ZGY2ZDRhMSBsZWdhY3ktdHJ1bmsKKzc5MDM1IDUyNDc5ZTA0NTRlOTBjZmNlYzkzZTMzMmEyOTQ0YjA2NmViM2YxOTggcHkzaworNzkwMzYgMGFjMTkxOTBhNzEwZmE3NzM0Y2RmYzZmNGMzZDYzYjRmMzdmYjE0NiBweTNrCis3OTAzNyBlM2JlMWYxYWQ2MWVlMTE1MmVlMjNlYjlmY2Y2NDEyZjg5M2YzYThhIHB5M2staml0Cis3OTAzOCA1MzFkMzAyM2I0OGI3Y2VkMDM0OGZkMTA2M2JlODIwMmQ4OTIwYWVjIGxlZ2FjeS10cnVuaworNzkwMzkgNDM1ZmEyMTVkMzNmMDhhNjhiNjlkODVkMzAxZjI3MTAyZDAzZjJiNiBsZWdhY3ktdHJ1bmsKKzc5MDQwIGQ2MmNhMWVhY2NiOWRhYmY3Y2QxNTRjNTdkMzY5YTc2MTY2ZTg4MTYgcHkzaworNzkwNDEgZWEyNzhkOWMwYjJhYTMzZjM0ODgwYWM4MmRmMWIyMmJiNDljMWM2ZCBweTNrCis3OTA0MiBiMWFlNGY4Mzc3ZmI2ZTMxZTUwZGE1NGFmMmVjNGMxOTQ2M2NkOTVlIHB5M2staml0Cis3OTA0MyBmNzIyMGNhMTEzNjNjOWM3Y2EzMDM4YTU4NmI3NzIxNDViMTdkYjNiIHB5M2staml0Cis3OTA0NCA4NTU1YTRjYjdjNGNiNjM2ODRmNDQ5NGRiZGRkNmU4ZDliMzYxNjM4IGxlZ2FjeS10cnVuaworNzkwNDUgMTViZGI5NGM4MDU1Y2RlOWEwMWZiNzcwMmEyNjM1NmE3ZjY0ZDgwZSBweTNrCis3OTA0NiBiZmU5ZWUwMmY0YzA3ZTFjYjcxNmUwMmQ3OGEzMDA3ZjJiYTVhYzQ5IHB5M2staml0Cis3OTA0NyBhMWI2YTU0ZTJiNmE1MWM1MzU3ZDQzMDIxZjljYmFlM2ExYmNlNDc3IGxlZ2FjeS10cnVuaworNzkwNDggZDllYzRjOGNlNjk1NDJjNWZhNjNlZWQwMGFhNzU3YTllZDM4ZjBmYyBweTNrCis3OTA0OSA3NmY5ZTNiNmM1ODRlNDhjMWQ4YzlmNDIxMDlhYTYzNGFiMzc1NTRmIGxlZ2FjeS10cnVuaworNzkwNTAgNDg1ZmUyMGRhYjEyMWNiNDY5MTRkZjNhZmE1YTUzMDNiNDk2MTc0YiBweTNrCis3OTA1MSA0Mjk0NjJkNGNhMGMyMDBjNWQyMjNiYWIxNzY2ZTI5MDRkOTdjZjc5IGxlZ2FjeS10cnVuaworNzkwNTIgNDYxODNiZjRmMTQzNjkwNWE5NWI5MWE4OGYwZjliOTgzYjM4MjQ3YyBweTNrCis3OTA1MyA0NjU2ODQ2YTg5YjI2NzVhMjc1M2NkZTcxZGIzMTQwYzU4NjdhY2Y4IHJlbGVhc2UzMS1tYWludAorNzkwNTQgMmNmYTQ0OTcxODhmZWY0NTUwYjRkNWFjMGNjZTdiYTNlNjVhYzc0ZiByZWxlYXNlMzEtbWFpbnQKKzc5MDU1IGQxZGJlNWRmMTc5MWYyOTE4NmM3NTgxNzhmYTcwY2UzYjhjZGU0ZDUgbGVnYWN5LXRydW5rCis3OTA1NiA4NzEyNWQ3NjQ3ZDY4NWIxM2FmNzY2ODViM2M3ZDRhY2MyMWU2ZjFmIGxlZ2FjeS10cnVuaworNzkwNTcgZDdiOWUyOTQxZTE0NWQ3ZGRkYmExMzQ4YmViYzcwMzE2MDIyMDYyYiBweTNrCis3OTA1OCAyNWRlNzE2N2EwNTU4ZjlhMzYwMDIzODc2NDAzOTgzNjA0MWY2MDQxIHJlbGVhc2UzMS1tYWludAorNzkwNTkgMzQ0Y2I2YTRlZjdkYWQ3YmU0NzEzODVjNWQ5ZjMxNWIzMWU3MzAxZSBsZWdhY3ktdHJ1bmsKKzc5MDYwIDIyZjU4OWE4ZTNhYjk4ZTZhYWFkNjYzZjUxMGZlNmIwNGQxODFlN2YgbGVnYWN5LXRydW5rCis3OTA2MSAzZjRjN2M0ZWVmNjJhZjgyM2IyMmNiNmEzYTljZTVjYmMwZjc3NDUxIHB5M2sKKzc5MDYyIDAzODUyZWIwOGRiMTYxNDY4OGNhNmI3MTUwYTYxNThhMjhlNjJkOGUgcHkzaworNzkwNjMgOTlhZjRiNDRlN2U0OTAzOTA4MTdhNTk3YTU0MjU0NmQ3NDllNjk4ZSByZWxlYXNlMjYtbWFpbnQKKzc5MDY0IDE2YWFiMDJlZDk5YzY3ZWMyNjJiOTdhMjk4ZjMyN2EyMjJjNTkyZjMgcmVsZWFzZTI2LW1haW50Cis3OTA2NSBhNWRiMGRmMzIzODIwOTQzZDY5NGE2MGQ5MjM1ZmIxOWQ1NmQ0MWVlIHB5M2sKKzc5MDY2IDcyYTgwOWQxNjVmNDM2Y2M5MDhkYjE3ZDk5ZjlmZmEwYTM2ZGVlYTAgcHkzaworNzkwNjcgMTViODdlYTE0MTNkNmU4MDIwZDNjYzVkNjA3NmQzNGIyZTZiM2E1MSBweTNrCis3OTA2OCBlMTVhOGE0NzY0OTRiYjk0MmFkOGQ0MmEzMWY1MWIxMTM3ODYzMDQzIHB5M2sKKzc5MDY5IDRmMDlkNWIxNDc1ZmZhYzM1NjYwMzFmMDY3ZDc4N2RmY2E2YTJhYjggcHkzaworNzkwNzAgMzdiMWI5MGRlNWMxNTVkOTNiM2EwMjg1ZTIzZmYxMTQ3YmU5YzRjMCBsZWdhY3ktdHJ1bmsKKzc5MDcxIGVlYTcyYjgxYTIzYzY1Y2NiZjYwNWI4NmRhOWRkYzAyZjQxZWE0MTUgcHkzaworNzkwNzIgOTZlZmViZGE0ZWEyYzk2ZDMxZWI2Njg1YTlkZWNkNmExYmE2N2MzMSBweTNrLWppdAorNzkwNzMgZmJjM2YxNjkxYWQ4OWQ1YzQ4MzhhMjY1M2ZkY2E5MTZmNmFmMmZlMCBsZWdhY3ktdHJ1bmsKKzc5MDc0IDBiMWU1MjI4MDdmMmM3YjFkZDE3MWE3MDhmZjEzYWMzMjExMDliNGYgcHkzaworNzkwNzUgOTEwMzg1NWI4MjZiZDQ3NzcyNDQ5MDY2NjQwNzNkOTg5OWUyNDVhZiBweTNrCis3OTA3NiBiOGI0OWM4MjNmZTQ0NWJlOGQ4YmUyMmEzNWFmMTczMjA5OGNjYjVmIHJlbGVhc2UzMS1tYWludAorNzkwNzggYTBhNjdjMmZiN2ZmNmU0MDM5OTBlMGE5YjIxYTFlNGRhMDg4NzVhMiBsZWdhY3ktdHJ1bmsKKzc5MDc5IDhmYTEyODRjZTAwZTU5MDAyN2E0NGU1ZTJmNDYwODFkYTQxMmRiNzUgcHkzay1qaXQKKzc5MDgwIGRkMTJmNzg4YTU0NGRmNjZmMDkxOTA4N2Y3MWU1ZDM2Nzk5ZDlmZTUgcHkzaworNzkwODEgNDcxZDA3ZDJhMjNmNWVmN2VkMjhiYWE5MjQ5NmUzNWZmODBjMzg4NCBweTNrLWppdAorNzkwODIgYTI0MWU0MTU4ODgyM2U3MTFiZjFkMzk3OWZhMmY0NmJmZmQ1YzA3OSBsZWdhY3ktdHJ1bmsKKzc5MDgzIGQ5NDQxMTQwMzA5M2JiMGJjN2Q4MjllNjllNzM3NTQxODdkMjQ2Y2QgcHkzaworNzkwODQgNzdmODUzZmUzY2YyNjE0M2RlYTU5ODIzZThmZmZhNTA1ZDE0NmVlNSBsZWdhY3ktdHJ1bmsKKzc5MDg2IDUwZTA2YjZhYjk1NjVkZjY3YTJlZWIwZjJhNzM1ZWFjZDc1MTY5M2EgbGVnYWN5LXRydW5rCis3OTA4NyBkMWMzYWJjOGUwYzI5YzYwYzc2ZTY3NDliODJkNDE5Zjk2YmU4NTc0IHB5M2sKKzc5MDg4IDc5MWJhMjAxYmFhOTc3NmJmYzI4YzAwMjQyMzEwMmU1NzY1MGE1MzggcHkzaworNzkwOTIgNDI4NWVhMzNhNWRmZTUyMWZiYzAxZjZhYTE3MTQ3YTAxMTAwYjA1YSBweTNrCis3OTA5MyBiOWZmYTlmZDEwMWI1YjljNDljMDM4MmM2NTI0MTRiYjllM2FhOGYyIHB5M2sKKzc5MDk0IDhhMjhiZTQ1YzI0MjNjYmMxMDUwMTRlMWIzOGNhOWM1OGQ2MmY2NjIgcHkzaworNzkwOTUgNWZiZDljNjM4OWM3NTNhZTJjMTMwMzk1OWYwOTJiNmFjNTc4YjBkOSBweTNrCis3OTA5NiA0YjM1NmMxYjI1ZjY2ZDkwOWJhYzMyYzBkMTcwM2M4MWNiOWU2ZTYzIGxlZ2FjeS10cnVuaworNzkwOTcgMDBkYWE4YjczNmNjN2ZjNWI4MzFhY2ZiZThmY2FlOWZlNDRlNmU1NSBweTNrCis3OTA5OCBiNjM4N2Y0M2NkZGJkOWMzY2RkYWI4YTBmZTQ3OWI0Y2NmMDAxNDlmIGxlZ2FjeS10cnVuaworNzkwOTkgOTE0MzFiMDU4NDc4ZWMxODU4NjdjNzVjODgwNmQxZTcwNWFhYzIxOCBweTNrCis3OTEwMCAwN2M3NjY0ZjIxYTE4OTkxOTY1MTRjODUxM2MwMzdjMGQ2MjVjZjc3IGxlZ2FjeS10cnVuaworNzkxMDEgMjUxMmMyYWQ1ZGU3MDViYjYxNGFkZDJmZTYwMjI4MDYwNTZhYmQ0MiBsZWdhY3ktdHJ1bmsKKzc5MTAyIDQ1ODdlMWY3NGVkODVkMTI4ZTUyOGU3N2QzMWM2M2E0ODBiNWQzNzYgcHkzaworNzkxMDMgMmIxYjAzNzk3MThiNDlkNzcyYWFkMTYzNWM3YTY0Yjk0OGIxZDcwZCBweTNrCis3OTEwNCA2MzBjZTYyYzk0NmVmNDdhYzQ0MmZlZmNiZDBhNjczZjBlNTExMWY2IGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzkxMDUgODNhNzY4OWYxYmI1ZDMzMmFkYTk1NDNiZGFmNTUwY2ZlNTQwMjY4ZCBsZWdhY3ktdHJ1bmsKKzc5MTA2IDk5NmEzMTkyMGQ0OGMwOTA3ODFhNTcyZTBlOTQxZTA2OTNlYjk4NzEgbGVnYWN5LXRydW5rCis3OTEwNyAxOGY5NGUyM2NhODBhNjc0N2U1OWFmZDMzMDVlOTViNmRjNDYyNzExIHB5M2sKKzc5MTA4IDNmOTA1MzU5OGNhMGQ1N2I3M2ZlOTFjZmQ0MDM0ZmMzOGEyMTAxZWEgcHkzaworNzkxMDkgYThlMzk3NzlmZWRmMjRlN2I2MDYxNDhmNTkwOGY2ZjM2MDc1MzcyZCBweTNrCis3OTExMCAyZDY4M2I4ZTNmNTAyZjg2MGQxOTA5ZjNjNjRhMGIxYzkzNDY5ZmNkIHB5M2sKKzc5MTExIDQ3NDFmNmRkN2M2OWEwYjI5NDExMDNiZGM1NzY2NmExNDk4YjI3NjkgcHkzaworNzkxMTIgMjI0NTkxYmE2YTE4NGY5NGRjMjFkZWFiNWZmNzQ1NWJhMjEwNjVmMyBweTNrCis3OTExMyAxZTBkMThlOWY4YzFiYzg5YjI2ODdjNGE5Y2Q4MjJjYjliYjc3ZjJjIHB5M2sKKzc5MTE0IDBmMDBkYTY5MDRhNjU3ODE1MWFlZTIwMmFlOWFmYmRlZGJhN2Q1Y2UgcHkzay1qaXQKKzc5MTE1IDlhYjA3YWJlMjMwZGI5OGIxOGQ0NmZlMmFlMGFlMjhkN2Y5NGI2YTQgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTExNiBlNDMyMzNkODAwNjRmNTgzZGNiYTgxZjVlOTc2ZjEyMTI0YzI5ZjdiIHB5M2sKKzc5MTE3IDAyZTIxNTc2ZGEwMzc3MzkwYjRiYTlkMGVjNTJlODFhMjVkMGJkN2UgcmVsZWFzZTMxLW1haW50Cis3OTExOCBjM2M3YTNiZTQwYjM1NjZlMzFiMTI5NWFkYjRiM2YwMmYwMTU1ZWU3IHB5M2staml0Cis3OTExOSBhY2MzZTM1ODNmYWM5ODhhMjQyZjk4NWQ1NTQ1ZDg2MWEzZDJlMGJjIHB5M2sKKzc5MTIwIDlmZjEwMzVmNjIzNjVlYmYwZDhlYzU2NDczMzJlZmYzNTg2OGRiNDUgcmVsZWFzZTMxLW1haW50Cis3OTEyMSAzZDM4YzAwMzJjZWFhOTVmYmRmYWE5MzlmYTgzMDExNTM0Y2YyZDI3IHJlbGVhc2UzMS1tYWludAorNzkxMjIgZjBlZmFhYjA0MzgxOWFiNWZmN2QwMWY2ZmJkNDAzNjY3ZWM1ZjhjMiByZWxlYXNlMjYtbWFpbnQKKzc5MTIzIGZlNDExNTY5MmY3NmMxMDZjODliNmEyMzNjYTc0N2VjZWUxZjJkZjMgbGVnYWN5LXRydW5rCis3OTEyNCA5YWNiN2MxNTYwNzU4MTk3ZWY1MmU4ZDFmYjU5ZWMwOGZlOGQxZmQ2IHB5M2sKKzc5MTI1IGE1Zjc5NmZiNjFhMTAyNjRkYWMyZmIyMmRlNmM2ZDhkYzUwOTQwMDAgbGVnYWN5LXRydW5rCis3OTEyNiA3MDY5NTdkNmVjZGZmNTBhNzg5YjMwZThiMjk4MGE3ZTBiNGFjODI1IHB5M2sKKzc5MTI3IDEzZmY4NWIxMGRiMGU1NzM0MGU3N2M5OTRlYWE5OWFlN2M1ODNmZTMgbGVnYWN5LXRydW5rCis3OTEyOCA3NGJiMGY2MmIzMmU3YzcyZTZiMGZjYTA4OGU1MzJhMWZiNDg2NzdmIHB5M2sKKzc5MTI5IDEwOWM0ZTYyZWMyMzU3NzJmM2RhZmE0ZmMyNDI3YzI0NTdiNmQ3MWMgcmVsZWFzZTI2LW1haW50Cis3OTEzMCA1YTU1YTMyNjExNjQ0ZGE5Y2NhZDQzYWE2MzM4MTlmZDUwYjM2MjUyIHJlbGVhc2UyNi1tYWludAorNzkxMzEgMGUzYzEwYmNkYmE0MWQyN2IyM2RmYzk5YTFhOTk2YjdiMTcxMmE1OCByZWxlYXNlMjYtbWFpbnQKKzc5MTMyIGE2ODJiNzA4N2FjYmIzZjlmZTUzOGVkODk1YjdkYWZiZjg2YWE2NjggbGVnYWN5LXRydW5rCis3OTEzNiAxODAzNzRiZjJkNTI5ZGYzNDU0NDhmYmI5MDZlMGQ2ZjlhYTAwMGI4IHB5M2sKKzc5MTM4IDM3YzlhYjdkNDhmMWY0NzRmYmE5YmZmMWUzY2Q2OTEwZTgwNDdmNDIgbGVnYWN5LXRydW5rCis3OTEzOSA2NjUxZWZiNzVkOWVhMmE5YjZmZjU3ZjNhY2RjOGFlYmQ4N2UyZDlkIGxlZ2FjeS10cnVuaworNzkxNDAgZTA3NmU1NTgzNGQ5ZjIxMTMyYWFmZTY5NmU1MTc1ZmEzYTI4Yzk1YiBweTNrCis3OTE0MSBlNTIzYmMxYzMwMzQ0NDVmYzhiZjU3ZjljMjk1MGMxMjFkMjU4NWJjIHB5M2sKKzc5MTQyIGU4NjcyMDAzYWU4NGZmMTJhNTg4NGZiMTJmY2ZhZmU5NTlhNzE1NzcgcmVsZWFzZTI2LW1haW50Cis3OTE0MyA4NWNiZTQ0YjM5MjVmODMyYWRhMDcwMzk2YTkxNjZmNjA3MDIxMTk4IHB5M2sKKzc5MTQ0IDYzNTg2NTkyYTNhMDY5NTRlMDk2MDhlNTc3ZjdkYWNiN2Y5MTg1MzUgcHkzaworNzkxNDUgYTYxMmM4YjYxYjRhYTg0YTdmOGVmMzQwYmE4YTUzY2M1ODU1MjIzNCBweTNrCis3OTE0NiBmNzdmODUwMWRhN2ZhYjk0NDQ5NzRhMWRmNTE5ZmQ2ODc5N2JhMGFjIHJlbGVhc2UzMS1tYWludAorNzkxNDcgOTYwZWZhMzI3YzVkOWMxOGRmOTk1NDM3YjBhYzU1MGNiODljOWY4NSByZWxlYXNlMzEtbWFpbnQKKzc5MTQ4IDdjOTI2ODE0NjlmN2JiNDU1MzFhMzFkNTU4OTZkZDEzMWNiYzdjN2IgcmVsZWFzZTMxLW1haW50Cis3OTE0OSAzNTJkNjFhNjlmNTk1YmE0ODllOWU3ZTBiNGVhOGQ2NDI3YWEyMzk3IHB5M2sKKzc5MTUwIGVkYWQ5NDhiNGQ2NmZhYjMxYjAyMzRhNDE4MTJjMzk0NGUwNmIwZjkgcHkzaworNzkxNTEgNTU0ZTBmNDM1ZDA4YWJiNzA0MTVmYWJlNzVlMTgyNjhlOWE2MWZkYyBweTNrCis3OTE1MiA2MjIzYzNmZDYxZjA5ZDczMGZiODBiMDZkMzU2ZjdlODE0MzA5ZjRjIHB5M2sKKzc5MTUzIDhhOTIwYTg5MDlhMDhiZTM5MGM0MjgyNzA1ODljMmFlZTUyNjRiYWUgcHkzaworNzkxNTQgYWU5ZTEzNzQxMWYxZjM4ZjI3MjQ1NTRlMTlmNWFiYjgyNzI2MjdlZSBweTNrCis3OTE1NSBkODcwMGI0ZjFiOWY1MTUyNTA2YzZkYWU3YTM1MTU1YmY5NGFmYmU4IHB5M2sKKzc5MTU2IDRmNzE5YmU3Yzg3NTg1ZjViMTU3ODAzZmRiMDAwNGQwZWYwZGVjNTUgbGVnYWN5LXRydW5rCis3OTE1NyBlNjE5MDQ3YTJmMzY2MDhlYTk2ZmU5NDMyNWVlMjJlMWY4MmIyY2RmIHB5M2sKKzc5MTU4IGE5YTgwN2I3Y2Q0MzlmYzk3ZTQ0MDYwZTJmNDdmODEwMzQzMTEyZjkgcHkzaworNzkxNTkgMGUwNjMyYzU0M2U0MTQ0ZjIyZjMxZDViOTA4ZmNkYmFlOTRlY2YzMyBsZWdhY3ktdHJ1bmsKKzc5MTYwIDcxMWQ1MTczN2VlNmJlOWY2ZWNhZjRhZmI2YjA1OTJlNWY1Yzc0MDEgbGVnYWN5LXRydW5rCis3OTE2MSBkYmM1ODA0ZTgyODU4NWM0MjEwMzQzNDg5ZWJmODIxZjI4ZDFhOTcyIHB5M2sKKzc5MTYyIDZiNmZmZDUyNmUzYmU0ZWQ5OTkyMWNjYjk0ZDZlM2MwOGNhODdiNjAgcmVsZWFzZTI2LW1haW50Cis3OTE2MyBhN2I4OWYyYWMxZGE2YTVlMjQ1ZTc5M2UwYWNiN2FlOThhODg4NmIwIGxlZ2FjeS10cnVuaworNzkxNjQgZGNiOWY0MjcwNDQxYWY3ZWRiMGJhZGRmNmQ3NTkxYjA4ZDU4Zjc5YyBsZWdhY3ktdHJ1bmsKKzc5MTY1IGM4Yzg0MDE2MjgwNDlmOTdkOGE2ZGRmZjQ2YmQzMDAzZjgyZjgwNmEgbGVnYWN5LXRydW5rCis3OTE2NiA3ZGRjZjdkMjgzNmFhYzMyYTUzM2YxMDYzMWFlODFhMmY3OGNlOWE5IHB5M2sKKzc5MTY3IDM1NjYzNjZiODljZjE1OTk0MzA1ZTlkMTc2Nzk3MDM2MmI1OWRkOTEgcmVsZWFzZTMxLW1haW50Cis3OTE2OCA0YmQxYWMxMTMyY2RmZDUwNTlmNzhlZmZkNDUzOWQ3NTRhODJiM2VhIGxlZ2FjeS10cnVuaworNzkxNjkgZjA3NjZjZmY3ZjU5NjhlYWIzOGI4OTgwNDJlZTg5NzgyYjJkOWEwZiBsZWdhY3ktdHJ1bmsKKzc5MTcwIGY4NTdkNGVkMDc3NDc1OTM2ODdkYzM2NWNkOTllOGY3ZTliYmExY2UgcHkzaworNzkxNzEgMTBiZDFkMGY2MmRlMmRjODg1OTY2MzFhY2M5YzRmZjZiZjIzNmY2OSBweTNrCis3OTE3MiBlYTRlNjg5MjhmZjU2YjZmNTQzOTJjYmEwZTNjNDU2NGNhZmQ0MTdjIGxlZ2FjeS10cnVuaworNzkxNzMgMWFlNDc0YzljMzRlNmJjODE1ZmI3NzY1YWFhMzZmNWM2NjAzZjU4YiBsZWdhY3ktdHJ1bmsKKzc5MTc0IDJjOWUwYWIzZjBjN2VmZDkxZmNmYzM3YzIwOWU3OTQzYjQzNDA2MTEgcmVsZWFzZTI2LW1haW50Cis3OTE3NSA2YTEyNTRlMjBjODk2N2JlOTM4ZTllYThiOTM4ZTJiOTMyOTQyYTk2IHB5M2sKKzc5MTc2IGNiMGUzNzI2ZDkxZGFiMDVmNDVkMTMwMzI3NmY1NDliNTRhYzg3MGQgbGVnYWN5LXRydW5rCis3OTE3NyAzMWYwZDlmY2RiNDVjMTdlN2QwYmE2OTcxNmZjN2M3MWM2ODg4Y2YwIHB5M2sKKzc5MTc4IGFjOTYyYmM0MWU4NWZjOTMzYmY3NmJhNzYxNjdjZTkyMGZiNTA1OWQgbGVnYWN5LXRydW5rCis3OTE3OSBiYzVlMGQyZTE3OWQwMDg2ZWIxYzE2OWQyNDE0NDE4M2YyOWE2MTEzIGxlZ2FjeS10cnVuaworNzkxODAgNDU1ZWY3MDE1YmE4MDJkYTA4ZWU3OTYxN2I1NmQxMDlhMDJkZDQ1MyBweTNrCis3OTE4MSA5NTBjMTAzMGY4MTY0MDdmMWI0YjAzMTQzMDhjZDc0MDM1OTE4MWJiIGxlZ2FjeS10cnVuaworNzkxODIgNTc1ZWM3NzNkZGE0MGNmODgzYjZmMmVmZjFhYzdlZTczOWYxMDE5MCBweTNrCis3OTE4MyAyODg2ZjZhYTVlZjYxOWE0YmQxNjVlN2EzMzg1N2I2OTQ4YjA3ODJiIHB5M2sKKzc5MTg0IDQxNDA0NGRiZjM0Mzk0MzE2YTQzMDhmMGUwYzU1NTRmMmRjNWUxYTggbGVnYWN5LXRydW5rCis3OTE4NSBkNGZhMmVhYWI1ZmE4YTU2YzAzYjNmMDJlNGNkMjE3NWY4OWU1MTlhIGxlZ2FjeS10cnVuaworNzkxODYgYzExZjFjZWNiZWIzNWExODZlMjZlNmViYmI1YTNmY2U2MzAxNDZkOSBweTNrCis3OTE4NyBjM2I5YzMzMzMwMWM3YjdmNmY1MzAzYzY4Yzk5NTNlMjBjOTFlZWUxIGxlZ2FjeS10cnVuaworNzkxODggZTgyM2UyN2MyMjVlYWEwNjE3MzlhNjIwN2IxMTM5Y2IzMTk5ODI4NiBsZWdhY3ktdHJ1bmsKKzc5MTg5IGRkNjhlMDRlZTJlODYyMzQ5Njg2NjcwNDlhYTE1MDcwZGYyMzc4NDMgbGVnYWN5LXRydW5rCis3OTE5MCA2MjA5MTJmODMwODI2ZTk1ZWMwMDA4YmQ0ODY4ZTM4YTI2OGU5NDk3IHJlbGVhc2UyNi1tYWludAorNzkxOTEgOThlNDE2NjA1NzRjM2RlZDNhZjYwYThkN2ViYzM5YTA3MzAzY2ZmNiBsZWdhY3ktdHJ1bmsKKzc5MTkyIGRlZmFhZDIwMTdiNWNjMDg5ZTc0ZmI4ZjRiOTExMThjZTFhOTU5NGIgbGVnYWN5LXRydW5rCis3OTE5MyBmY2VmNGRhMzFlMjQ1YmQwMzA1MjAzZmMwMTYwYWQwNmZmYTM5N2ZmIHB5M2sKKzc5MTk0IDIyYzZhMjc2NGNhYjVmZjgwYTI3OWY0NmVjYzY4MDg4ZjljMzczODggbGVnYWN5LXRydW5rCis3OTE5NSA2M2YzYTk0ZjVlOWQ1MDU4NWY0MDk5MDZiNDQyYzI2N2Y5OTI2ODZhIGxlZ2FjeS10cnVuaworNzkxOTYgNDRmZmI4MDkyZWQ2MjkwMzMwYzU0MGVjMTgyMzEwN2EyOGVmNjQ0YyBweTNrCis3OTE5NyBiMjVkMTAyNGYzOTQ2OGU0MzliOTRjNmY3ODg3MDdlZTQ4MGFiYmMwIHJlbGVhc2UyNi1tYWludAorNzkxOTggYzZmNmJlNTMxN2FkMzYxOTZiYTBmMTBkOGUyMmVhZjlkNjdlZTU1YiByZWxlYXNlMjYtbWFpbnQKKzc5MTk5IDhlNDFmMTc5NGQ0NDk1YjhjYjIyNDZlNThmODAzY2IwZTRhYjBlYjkgcmVsZWFzZTI2LW1haW50Cis3OTIwMCAwZmI2ZDM0MjAxNmRkNWM4YTI2YmRmMjhkYjg3Y2Y1NDNjNTg2ZWJlIHJlbGVhc2UyNi1tYWludAorNzkyMDEgOGYxMjAyY2E4ODhlOTViYjI1ZjlkZjc0YjE1YmRjMmJiYmQ1NzJmOSByZWxlYXNlMjYtbWFpbnQKKzc5MjAyIDEyZTIwNzVkYmJlMGUxZjM1YzAwNzhlYWQ3M2Y1OWNjODk4YmM2NGUgcmVsZWFzZTI2LW1haW50Cis3OTIwMyA1ODEyNjNhZjU4MjBmZDFkNjRhYjdlMmI0NTE3NDUxNjU4MzcwNzQyIHJlbGVhc2UyNi1tYWludAorNzkyMDQgOGQ4YzliZjJhMDRlMjdmNTZjNmEzYWU2OWExOWU0ZDQ0OTg5YmM5ZiByZWxlYXNlMjYtbWFpbnQKKzc5MjA1IDY0M2JmOWZmMjI4ZmU0ODBkODBjYjIyYTI5MjBmNWJhMTRhMjcyNmEgbGVnYWN5LXRydW5rCis3OTIwNiBiOWUyN2RlODVlNGJjODY4Mjg5OWQwOGYzYjRmMjEzYTY3MWQ1MmE3IHJlbGVhc2UyNi1tYWludAorNzkyMDcgZTA2MmRkMzU3MTQxOTJhMzE4ZTljNTIxMGUzOTU3YWNjMzU4ZjJmZSBsZWdhY3ktdHJ1bmsKKzc5MjA4IDA5YWE4NzJmNzlmYzVmM2Y5ZTc4Yjg2ZTJhN2E2YzBhNTFmZmE3ZWQgbGVnYWN5LXRydW5rCis3OTIwOSBlYzg0ZmJjZGY3Y2JiNTE5NDE0YzQzMzQzZDA2NDFjMTVmMzgyOTIzIHB5M2sKKzc5MjEwIDkzZjcyMGU5NTE4YWRiZGRhNjgwZmIzZTVkZjk5NTc3OTc2MTRkZDkgcmVsZWFzZTI2LW1haW50Cis3OTIxMSBlZGM5MmJjZTRkNmUyZDkzYWJmNDUxYmI5NDU2Y2U5ZjNiZWI0OGZmIHJlbGVhc2UyNi1tYWludAorNzkyMTIgY2Y1OGI3MzMyMmY4YzRiMGJjNDI2NTFhNTA5MDY5YWZhMDdjZmFkMyBsZWdhY3ktdHJ1bmsKKzc5MjEzIDM4ZTliOWRhMDE2NDJlYmI0NjhiYmNlMDIzY2IyNGZkOGE0ZjJjZTcgcmVsZWFzZTI2LW1haW50Cis3OTIxNCA3NTk4NTE3YjEyMTgwN2ZhYjA1MDA0NTc1OWU1ZmU3MGMwODk0Mjc2IHJlbGVhc2UyNi1tYWludAorNzkyMTUgNjRhMDJiMTMzZTcyM2E5NDY2OTg0MDgzNzU0MmUyNjY5MjUzNDY2YiByZWxlYXNlMzEtbWFpbnQKKzc5MjE2IDllYWJiYTZkZWQwOTYyYjFhOGUxZTk1MzI0MjFkNDM2YTViZjIwNWUgcmVsZWFzZTI2LW1haW50Cis3OTIxNyA0NWQyMjg0Y2MwNjNkZTVjOTNkZDQzM2JkNWMyNzU5MmUzNzE4N2ZmIHJlbGVhc2UyNi1tYWludAorNzkyMTggNzY3ODExMzg1ZmE2ZmRmNzg2ZDZlZmRmYWZhNzVmYjJkZDc2NDEwMiBsZWdhY3ktdHJ1bmsKKzc5MjE5IGRiOTYxYmEzN2NmZTQ0NDY5YzY4ZTUyMmZmZmJlOTUxZWZhNmIyM2MgbGVnYWN5LXRydW5rCis3OTIyMCBlZjFmMzg4ZjQ4M2ZiODUwMDE2YTYwMDNkY2YxMGFhYjdmYzllMDdjIHJlbGVhc2UyNi1tYWludAorNzkyMjEgYzY5NDYxOGRhYjU0M2MyZjg3MGMxYTI2MDE2MWUxZDE3MDIwZTBhMCBweTNrCis3OTIyMiBjOTJjYThiYTFkOTc1MGY2NTk3MDcyYThmNTlkMWFiZTZiN2NkNjcyIHJlbGVhc2UzMS1tYWludAorNzkyMjMgZDEzOThmZjAxYTA3NGI0YzAxOTQ3ODc2YTY2ZGMwOThmMjg0M2ZmZSByZWxlYXNlMjYtbWFpbnQKKzc5MjI0IGFjMjMxNGI1Zjk2Mjg4MjU1NjkyNmY1ZTkxNzlkNzFiMTZlNjA1MTQgcmVsZWFzZTI2LW1haW50Cis3OTIyNSA1M2RiZDg5NmM2YzY5MmY0MjRjMTY1MjJmMGFiOTk4NDI0NTMzNDI3IHJlbGVhc2UyNi1tYWludAorNzkyMjYgMWJmNDhhNWRkZWFkNTM2MzM1NDE5YWUxNWZiY2QyZmQ4ZjE2YmU5ZiBsZWdhY3ktdHJ1bmsKKzc5MjI3IGY5NmM4MjkzZGQ3Zjg4ZDg3YmU4MjNmMDQzOTZlMzI2ZjNiNTc5YWYgcmVsZWFzZTI2LW1haW50Cis3OTIyOCBkYjk0YWVkZWIwZTA0YWExMWJlNGYxZDU2MTdkMTYxMWY4YmZlNTc2IGxlZ2FjeS10cnVuaworNzkyMjkgOWY2MTg3NTAwNjRlZWNkYWVkODZhNThkOWRmZTFlM2E4YWE3NWQ5NSByZWxlYXNlMjYtbWFpbnQKKzc5MjMwIDBkMWNkZDE0YzlmYTE5NjE4YmVhNWY2Y2RhZDI3OTlhYTk3OThmYjMgbGVnYWN5LXRydW5rCis3OTIzMSBhMGI2ZjI4NzExZTVlZTgzZTRhYTNhM2E1NmRlNWU2NzU1OTRhYzZkIHJlbGVhc2UyNi1tYWludAorNzkyMzIgMGMzNDQ4MjdlMDQ4ZjI2OTM3MmZlNjIzYjBkNDVlOWJkOTY1MTI1NiBsZWdhY3ktdHJ1bmsKKzc5MjMzIGM3YTYxNTQ0NjBmYmRhOWVkYjdlOWE3NzA4M2MwODU5ZjYxYTI5Y2UgbGVnYWN5LXRydW5rCis3OTIzNCA5MmYyNTYxNzQxNTQxYTQxODFiMGNkMGNiYTNjNGFmODJhNzIxMWIwIHJlbGVhc2UzMS1tYWludAorNzkyMzUgNjUxYThlNWM0NjBmYTlkMjBiODNkZWEzMGU0MWE4ZDNlYjM2MzExMSBsZWdhY3ktdHJ1bmsKKzc5MjM2IGMwNzNmM2MzMjc2ZWYzZGY0ZmFhYjhiYzkzY2ZiODkxZmZhOWJjMDIgcmVsZWFzZTMxLW1haW50Cis3OTIzNyBkYmFkMWMwNjY4YzlmOGNmZDgzNGM4ZjM5MWIyYjY2MmYyZDkzOTQ5IGxlZ2FjeS10cnVuaworNzkyMzggN2UzYjQ5MDg3N2NlY2RiYTY4Nzg0NThiNmJlNDA3MmFhZDZhZWRlMCByZWxlYXNlMzEtbWFpbnQKKzc5MjM5IGVjNmE5OTVlY2ZiZjgyNGI3MmJmNjFhMWVkMWVjZTk0NGM1MDYxNWEgcHkzaworNzkyNDAgOTcxNGY4YTc3YjE2MGZiNjFlYTM2OWRkNTBmMjQzYzdlM2Q2YTdkOSByZWxlYXNlMzEtbWFpbnQKKzc5MjQxIGJhYzhhMDQyNzBmY2YxNjNhYWIyMDRjOTI0ZGU4NDM2ODI3N2M4YjcgcmVsZWFzZTMxLW1haW50Cis3OTI0MiA0OGY0MGExNzg1Y2FhZjJmM2FlYTQ3ZTg1ZGE1NDdjMWZiZGI4OTU2IHB5M2sKKzc5MjQzIDQxYjIyNTA2N2Y0ZDEyODc2NTMwMjBjZGZjYTNhYjVmYjJhNTRhMDcgcHkzaworNzkyNDQgZDBiZGQwOTg1NjM3NDg2NmFkZTU1MGQ4ZTk0OTQ4NWM1NmMxMzFjZiBweTNrCis3OTI0NSAzODMzY2YzM2NhNjE3NDk3MTI1ZWE5ZWYyZjYxNmM5Y2E1NjhkMjA4IHB5M2sKKzc5MjQ2IDQyOTNjMzM2NjhkZjdkNjI2ZTM0ZjZiMDg4NjBjMzhmZGNmYjUwMWIgcmVsZWFzZTMxLW1haW50Cis3OTI0NyBjMmQyZTI2YmNmN2ZkMjVmZTkxYTQzZjFjYjg3ODM0MjViZjAwMDJhIHJlbGVhc2UzMS1tYWludAorNzkyNDggNjdmM2Y3ZTUzNjZiYzdlM2I5YzE1NmIxZmE3ZDM5YTQ3MDE0MGI4NiByZWxlYXNlMjYtbWFpbnQKKzc5MjQ5IGEzNjZkNjMxYTYyOWE0YWNhNjA3ZmY0M2ExYTk1NGQ2ZjNhY2NiYzIgcmVsZWFzZTMxLW1haW50Cis3OTI1MCBlMTZhMjdiNTUyYTZlMzQ0ZTVjNDAzNGQzMTg5NmJkN2JkY2VlMDczIHJlbGVhc2UzMS1tYWludAorNzkyNTEgZmJhY2Y5NzJmYTQ0ZTY5NTZhOTRlZmE1Y2EyZTIzMmU1N2Y0MTBiYSBweTNrCis3OTI1MiA3ZTZkNzE1MWZkZTg3NGNhNmQxYjNjMDMxMmVmODljZTUwZTYzNGY5IHB5M2sKKzc5MjUzIDJkMmYyMzg3MmQ5MGExMDAzMGNjYmRlNWZkMGViZDBmZGNjMTcxYmYgcHkzaworNzkyNTUgYzUzZjZhM2QyZDNiMGJlNDE3YzNhNTVlOWU3MzkxMTRhYWIzYzg2NyBweTNrCis3OTI1NiAxM2E0NDgwMTJhODRlN2QzMWUyODFhZGUwZjk1MGM1Y2NlMTJmOWRlIHB5M2sKKzc5MjU3IDgyNmQwNTQ2OTBjYjhkYTZhNTgzYzhiYWQ1NTVlYjc3YTQ5YTc0MDkgcHkzaworNzkyNTggZDliOGYyNzNhYjhkYTZkMTYwYzgyOWY4YTgzYTBkMDIwNmExMmVlYyBweTNrCis3OTI1OSA5MDIxN2E4NjY0MmQwN2JhZTAyNjU5YWIzZDIxN2FiZTk5NmMzMjNlIHB5M2sKKzc5MjYwIDdmODE2ZjZiNWQwYjA5NDA3NDE3MTBjNmEwZWRiZjNlNGExODk1NDEgcHkzaworNzkyNjEgNWMwOTJkNGI0OTljZjI3OGNmZWQzNTY2Y2FmNDk1OGZmYzU2NjBkNSByZWxlYXNlMzEtbWFpbnQKKzc5MjYyIDgxZGMwMjI5ODYxNGJhMTZkNTIxZWJmZjFiNTJlZWY0NTk4N2ZmMmUgcHkzaworNzkyNjMgMjg1OGNhZTU0MGU0MTFiODIwMTc0Yjk5NDg5OGZkYTE1ZTEyNTc5MCBsZWdhY3ktdHJ1bmsKKzc5MjY0IGY5MDk3Mzk2MmVhZjFjNDFjNDRlYzRhNzdlZmY0ZGQ1YzA1NTIzOTkgcHkzaworNzkyNjUgODRjYzEzYTE0NGZmYmQ1MjI4YTUwNjA2NjFkMmExYWZhZDlmOTg1NSBsZWdhY3ktdHJ1bmsKKzc5MjY2IGI0ZDhmYTRkMDA0OWMzYWQ2MDNjN2Y2MTQ4ODg4MzY3YTgzOThmMmQgbGVnYWN5LXRydW5rCis3OTI2NyA2NTdkMDJhNTAzZmE1ZDU2M2YwNmExYTg2NGFjOTFhYWYwOGQ3NzM3IHB5M2sKKzc5MjY4IGViMGZmNzEzYTVlOWMxNGVjODk3ZTBiNmRhZTI3MWMxNmI0MzdiZDcgbGVnYWN5LXRydW5rCis3OTI2OSAzN2MwZTI4ZDFhZDRlZmUzMTAwMDRkM2U5YzNkMGFiZDE0MmQzNGZiIHB5M2sKKzc5MjcwIDAxNjE5NjQ2NDljMzhhNjRkYTYwNzkyN2VmMzhlMzAwZTJmZmFhNDIgbGVnYWN5LXRydW5rCis3OTI3MSAyMjlmMjUyYmNlNzczNmU2NjQ3YzM4NjU2MjNlNTYwOTg4MTYzNGNlIHB5M2sKKzc5MjcyIDEwNmJlZTNmMWZlNTE2MzZlMTFhNmM2MDkzZTg1ZjJkMmU3ZmM3ZmEgcmVsZWFzZTMxLW1haW50Cis3OTI3MyA4YzNiMTIwZjI1OTYyZGVjMGE2ZDZlOTNhMTE0NmMxNjEyOWYxOTk0IHB5M2sKKzc5Mjc0IDNkYzY4ODJhNzI3ZDczYTY2ZDllNGQ2MmViYTZiYjg3NzBkMmI2NzggbGVnYWN5LXRydW5rCis3OTI3NSA3Njk4MWVlNTBiNDgyZmViMzdkYzgzZjk2OTg1MzA3MDIyMWIxNTMxIHB5M2sKKzc5Mjc2IDJkNjE3ODQ4MGNjNzEyNmE3ZWNjNGEyNjdiN2M2MmEzZTRkMzE1OWYgcHkzaworNzkyNzcgMzZlOWYzOGU4YTNjMmVlZjJlZjI2YWNjM2U0NTdiMjBjZTg1YTgwZSByZWxlYXNlMzEtbWFpbnQKKzc5Mjc4IDUyY2Y3ZTY1ZGFkMTRiYWIyNjFjODAwODM5M2U5ZTFlNDgwMmRkYjIgbGVnYWN5LXRydW5rCis3OTI3OSA1YjNhNjAxZWQyMDViNWI0MDNmYzM1MjE4MDk5YTM4MWRkY2FmMmUwIGxlZ2FjeS10cnVuaworNzkyODAgMmI2MWVlZDI4ZmFlNGU5MWQwYjlhNzk2NWU2MTgxNjI3NDFiNDNkZCBsZWdhY3ktdHJ1bmsKKzc5MjgxIDdhZDU2MjNmNDEzMjFkYjQ1YjU1MzdkNTAyZmJhMjQyMjM2ZGI2OGIgcHkzaworNzkyODIgODQ0MDVjMjJlNGM3ZmZkOTg5MTU1ZDhmNjhmYjAzMWVlYmI1M2NhMyByZWxlYXNlMzEtbWFpbnQKKzc5MjgzIDYxNTFkMDljZTAzOTQ5MzExM2RjZjllZDFlYzA5MTBmOTdjZThkZGIgcmVsZWFzZTI2LW1haW50Cis3OTI4NCAxNWRlNTM5MDcwN2RhNDQ2OTQwMTMxNjU3OTRiZjkzZGZhYWI3NTQyIGxlZ2FjeS10cnVuaworNzkyODUgOTZhMjQxZDRhMGFiMTcxMjYxOTUxZjQwNzM4ZWYxNTM4NWZmYzA4ZCBsZWdhY3ktdHJ1bmsKKzc5Mjg2IGUyYTk2OTNiNTU1ZWQ2ODUxMmM1NzQ1ZjNmYmRkNmFlZjE4OWQyN2IgbGVnYWN5LXRydW5rCis3OTI4NyA1ZjVkNDczNmRlNzRhZDZkZmUyMWU2YTEyNDY1MGUyZDkwZDgyYmZiIHB5M2sKKzc5Mjg4IDIyNGI3MGQzZDFkNDRlNTYwMGE4MDUyZTg2MDMwZTQ1MDEwNjIwZmEgbGVnYWN5LXRydW5rCis3OTI4OSBjOTM3NTIxZWQ3MDkyYTgxZjcyZGYyZThlZmNlMmI0ZjQ0MDM3NDI4IHB5M2sKKzc5MjkwIDlmYmUyMzcwZGMwMjE3YThkMzhjMDk5NzJmNjliNzdlNzRmOTg0NjcgcmVsZWFzZTMxLW1haW50Cis3OTI5MSA3ZjQzNWMzODVkYTI1YzRmNWNjODljMzNiMTc0OGZiM2I1YmRlZmJkIHJlbGVhc2UyNi1tYWludAorNzkyOTIgMDFiNTc1MTVmMTk1Njg0MDdiYTQyZWQ4MjEyYmVkYzllYTUzYTI2OSBsZWdhY3ktdHJ1bmsKKzc5MjkzIDgwNmE4Y2FmYzk5NzdhZjdmNWI2NzYzYzVlZWMzMjhhNDExYzhlMzggbGVnYWN5LXRydW5rCis3OTI5NCA2ZGY3OTlhMmMyNGU0YTI0NmUyZjg3MzZlYTNkMjJhNDViZDgxYzhjIGxlZ2FjeS10cnVuaworNzkyOTUgY2ZjNTc3MDJhZjdmZDk1YjlhMjU5YzYzYzc0NTE1ZTEzYjUyM2FmMSBsZWdhY3ktdHJ1bmsKKzc5Mjk2IDc2N2IwODMxNjU5ZTAyN2E2OWM2NjQ1YTUxNTBiMDM4NWJmMTFiMWYgbGVnYWN5LXRydW5rCis3OTI5NyBmMDAxNDU1NDE2NmY5M2MzYmQ3Njk3NzMwYWZkMmQ1ODlkZDY4NmU2IGxlZ2FjeS10cnVuaworNzkyOTggYjc4NzJiMGU4YWIyNDFlMzc5ZGQ0OTU3NzY2OGZlMTYwMzE4YWVmNiBweTNrCis3OTI5OSA3M2NhYTM2MWY5Y2RlMTRiYzJhODExNTM4Yzk2NjY1NzNiM2NjNDI0IGxlZ2FjeS10cnVuaworNzkzMDAgZTNmZGZkYjFhOGZmOGZjNmFkNjI4ZjBlOTg0MmM4ODlhOTY2OWRiYyByZWxlYXNlMjYtbWFpbnQKKzc5MzAxIDJlMGQ1OGFkYWRiZTBlYjQzOGE2ZDViMWJmMTEwZjBmZDdjZjA0MGUgcHkzaworNzkzMDIgMWRjMTg0MTJhN2VlNWYwMzdkZDFiMGJlZmU1NTRhNGJhMTdjYTlkZSByZWxlYXNlMzEtbWFpbnQKKzc5MzAzIDNjNGRmZTg2ZWMyYjY0ODI0YWViYjE1ZGQ3MjRjZjczZmZhMGQyMGIgcHkzay1qaXQKKzc5MzA2IDBhMTIzY2RlZDJjOTczYjdiMWZhOWExZmY4ZjUyYmFkMzFlNmEyNzcgbGVnYWN5LXRydW5rCis3OTMwNyA4MGJlZWM4ZmI3NDAzZjIwNjliMjBjYTIwOWI2MzQ2OTZlNGI1NGQ0IGxlZ2FjeS10cnVuaworNzkzMDggNWI2NzljMjQ5ZTNjMWNkNjcwZWJkNTUwZTc3MTFhNTg2OTE3N2E4MSByZWxlYXNlMjYtbWFpbnQKKzc5MzEwIDQ3N2QzNmU1ZDkxMzk1ZTEzZDQzMGI2OGQ4M2U4NTQ3ODA3YTBmZjEgbGVnYWN5LXRydW5rCis3OTMxMSA4ZjAxNmE4MDE2NDJmOWY5M2U4MmNjYWU3MDdlM2JiY2NhNjM1ZWM2IGxlZ2FjeS10cnVuaworNzkzMTIgZTAwZGQwNzA1NmFhZjM5NzJkYWM3Y2YyYmRmMjg2ZDAyZTdlN2VjMSByZWxlYXNlMjYtbWFpbnQKKzc5MzE0IDBmNDJmMzRjMTZlODJiMTBjMzMzY2RkYjJlODA2Nzc5ODVmYzYzNzAgbGVnYWN5LXRydW5rCis3OTMxNSA2NWZmNTI2ZTA1ZWJiZDU1MjRmZGE2OWFkNDJiYTAyNzZlNGIwY2NiIHB5M2sKKzc5MzE2IGNkOTg0OGNmMTg0N2FkYjFjY2I5ODUxMmM1NjIwOGZmOTBmODQzYzcgbGVnYWN5LXRydW5rCis3OTMxNyAzMjQ0ZWZiNmQ4OGY4OGFhZjFiZGY2ZDE2ZWU4Y2IyNGVlZDdjOTExIHB5M2sKKzc5MzE4IDU0MzU4ODA3MTNhNzgzZmE1YTY2YTNmMTJlNGFkODg3ZTRlYmYxNjcgcmVsZWFzZTMxLW1haW50Cis3OTMxOSAxNzgxNjk1ODg2ZGNlODg3YWE3MGQ3NDJlNzRjYTE5NGMzM2EzZjViIHB5M2sKKzc5MzIwIDY4NGNkNzM4MTUzNWE1YTIwOTFhOGM0Njk1ZGQyMDdiMmM1YmQ3MGIgbGVnYWN5LXRydW5rCis3OTMyMSA4ZTk5YjYwMDBmMGRmZTMzZDFkOWU1MjMyYjhhYmQ5YTlmMjI3YTI2IHB5M2sKKzc5MzIyIGE5ZGI1MWNmMWZiYzRkZWRkMzZmYWRmOTY1NzJkZDMxZDZhODg4NjQgcmVsZWFzZTI2LW1haW50Cis3OTMyMyBmNDI4ZjY2ZjdlOWJiNjZkMDkwODNjY2VjYjcxZjA3Nzk4YTk5MTAwIHJlbGVhc2UzMS1tYWludAorNzkzMjUgMTJlZTQ2NDM1ZDAxNzFmYTA5MGI4NzUxZjA5NzNhMmQyZjdkM2UzZiBsZWdhY3ktdHJ1bmsKKzc5MzI2IGZiM2RhNTZkNTQ4ZjBkMjg4MmEzMDdkNDQzZjhlMTQ3YmZkNzBhMWMgcmVsZWFzZTI2LW1haW50Cis3OTMyNyA5MmM5MzI0NjI1YjZhNWEwMDFjMGM4NjNlNmE4MjlmMzc4MmRmMjIyIHB5M2sKKzc5MzI4IDhlNzZlNDZjMTk5NDc1Nzg5MDZkN2Y0NGY2NzQxMWE3Zjk0ZDg5MzkgcmVsZWFzZTMxLW1haW50Cis3OTMyOSBiMDFlZmY0ZWZmZDdlZmE0MjU4M2Q0ZTAwM2UzM2Y4MmE5ZWZlOGUyIGxlZ2FjeS10cnVuaworNzkzMzAgZmE1ZTI5OWNlMDkxYzY3NmYwY2QyYWE3NmE0OTQ0YWZmNjBlNzAzMyByZWxlYXNlMjYtbWFpbnQKKzc5MzMxIGE3MDI2NDhjOGY0MTA0OTNjMmFmNDA2ZDAxMTM5YjJlMmRjMWJkZjggcmVsZWFzZTI2LW1haW50Cis3OTMzMiAzYmEyMzdhMzI2YzI3YjljYmVjYzMwNGRmZmM1NDc1ODMzMGViZDYxIHJlbGVhc2UzMS1tYWludAorNzkzMzMgNTZkZDVkNTA3MGE1YTQ1NDFjN2U1OWVhZGQyZmE1YWRiMzg5ODFhYyBweTNrCis3OTMzNCBiMGViOWY2ZjJkMTBiMWYzMjk1YjY4ZTM0NDFlYTZiYzMyMDQyYTdkIGxlZ2FjeS10cnVuaworNzkzMzUgZjIwZThiOTFmNmU4ZGE5OTJiMWYxYTc3Y2Y1NzQzZTc0NzRlNzNiOSByZWxlYXNlMzEtbWFpbnQKKzc5MzM2IDEwMjYyM2Q2ODQzZmM0OTFkMWRmZWUxNmYyN2YxOTkxZjdlODkxOTIgcmVsZWFzZTI2LW1haW50Cis3OTMzNyA2ZTFkYWQ4NTMwMDdhMmEzNGViYmYyZWY1MGUyM2Y4NzZhZDFkMjQyIHJlbGVhc2UyNi1tYWludAorNzkzMzggNjY1OTVkNDg0ZWE4ZDVmYzc3NjQwNjFkODI4M2YwNWExMDAzN2ZiOCByZWxlYXNlMjYtbWFpbnQKKzc5MzM5IDQ5ODZjZjBhOTFiOGU5Y2JjZjRmZWU2YjQ5NTI3MWNkZGQwM2FjNWEgcmVsZWFzZTI2LW1haW50Cis3OTM0MCBlOWI5NThlODM5MWJkMmUzNDg0YThhY2IxNzFhOWI2YjI0NTAxMzQ0IHJlbGVhc2UyNi1tYWludAorNzkzNDEgMTU1NmU2OTdiMmQ3MGIxYTM2MDRlMjYyYjEzODFkOWIyZjk5MzhkNCByZWxlYXNlMjYtbWFpbnQKKzc5MzQyIGY4NGY4Mzk2M2E3OGFkNjQzNDM4NmIxNjk1YmM0NGI1MTM0OTk5OTkgcmVsZWFzZTI2LW1haW50Cis3OTM0MyAyN2Y5NzI0NDY5OGVkYTA2MDkyNTM5NGNlZWUxM2M1NWQzZGE1N2FlIHJlbGVhc2UyNi1tYWludAorNzkzNDQgYjIxNGNhOGViNmJkMGFiZTVmMTFlMDNlNWY1ZjVlMTU0ZTg2MmI2OSBsZWdhY3ktdHJ1bmsKKzc5MzQ1IDUyZDg0NTgzMWFlODY0ZTAwZDUyZDJiOTA1ZWUyNTM3YjBmZjE3MjggcmVsZWFzZTI2LW1haW50Cis3OTM0NiAyODkwMDZkYzQ2ZWUyNGI0NjYyYmExNGFmOWYxODllNzIzYzAwZWI3IGxlZ2FjeS10cnVuaworNzkzNDcgODFiNzUwOTI0MDkxNmVkYzYyN2U3MTIzZDFkNmY1NTM4MTAyNzEwYiByZWxlYXNlMzEtbWFpbnQKKzc5MzQ4IDk4OGUwNDU3ZTMxMzM5NmNkNTE0NThhMGJjNGRmZGE1YjI5NjU1ZTUgcmVsZWFzZTI2LW1haW50Cis3OTM0OSA3MjAxMTgxMzYwZmRmMjdkMGQxNWM0MzU0Yjc1NTI0YTI0Y2ZiNzZjIGxlZ2FjeS10cnVuaworNzkzNTAgMzdkYTliYzQ2MTc0MmZjNGU0MDY4ZDg2NzNhY2Y5Y2ZiNjI5NTU5YyBsZWdhY3ktdHJ1bmsKKzc5MzUxIGNjOGUzNjk2MmJhY2U2YzUzOWYyMjVjMTEwODVlODMxOTY1NDAzYjYgbGVnYWN5LXRydW5rCis3OTM1MiA5NzYyODQ4NDllOWQ4MTQxMGNlMDY0YjE5ZWUxZmQ1YmZjYmQ2ZTQ3IHB5M2sKKzc5MzUzIGQ2MGJmYjFiOWMwNTJlNzNlODQwMzdlMWE4YmZiZDlhMTgxZDIzNjMgcmVsZWFzZTI2LW1haW50Cis3OTM1NCBlOTFhMDg2YjQxNzgzZTczNzRjZDU4NTliYjk4NmQ5ZDg0OWJiN2E0IHJlbGVhc2UzMS1tYWludAorNzkzNTUgNWFhY2M3NjgwZDNmNzJiZmYyYzYyNTVlN2U1YzliZDEyMWQ4NjlkNyBweTNrLWppdAorNzkzNTYgNDQ2OTY0ODJhYzQyYWJjZTZiOGU4YTQ5NDVhOWU2ZDg3MGZlYjg0NCBweTNrLWppdAorNzkzNTggMWU3NDFlYjMwYjE3MDRhMzUzNmQ4NjcxOGE0YzE2NmZkNGY0NjZjMiBsZWdhY3ktdHJ1bmsKKzc5MzU5IDY1N2U3ZDIxMzA1Mjg5Y2M0MDFiZGUyZTliY2Q3NDRhZWNmYWMzMmIgcmVsZWFzZTI2LW1haW50Cis3OTM2MCA1MDVjZmYxMjVhMDNjNjk5N2E4NTg3MjA4ZmVmOWIwMDc1ZDE2ZjM0IHB5M2sKKzc5MzYxIDAzMTZlNmEyOGE1NTM1ODcxYjNhYjdjNTM1OWZjNmJlN2FkMzBmZGIgcmVsZWFzZTMxLW1haW50Cis3OTM2MiBkZTg0YTZkMGU2OTcwYzBlODkwY2NkNTc5YWI2ZWIxZjc0OGYxMmEyIGxlZ2FjeS10cnVuaworNzkzNjMgNGJjOGY5NjUzZThlMmJkNzNhNzBkMTlhYWY5MjJlOTA1YTQwMjkwYyByZWxlYXNlMjYtbWFpbnQKKzc5MzY0IDU5OTNkYTZkMjQwOTUxNTFhMzE2MTI0ZmNhNzc0ZDViNWU3MjU2NTEgcHkzaworNzkzNjUgMTk1N2MyODk0MjkyNWJiOGRlZmZiYWViYTA0Mjc2NTZiZDY2NDllZiByZWxlYXNlMzEtbWFpbnQKKzc5MzY2IDAzZWFiOTk4YjA3YTE1YTI2NzhkYTRkMDg3YTg2NjFmZTEyNTMwYWQgcHkzay1qaXQKKzc5MzY3IDYyZmIwODZhMzk3NTgyYTIwNmZmZTA3MDVhNThiZGFiMGM3MDdiMjYgcHkzay1qaXQKKzc5MzY4IGNkMGNhNTZiNzg4MGU4YzQ1ZmE0OTY2NzA1MWRkNmRjNzljOTU1OGUgcHkzaworNzkzNjkgMjNkYTU2NjA3YjMzZmFlZjkwMmUyYTk0MjMzYzNkYmY0YjA3MmRmYyByZWxlYXNlMzEtbWFpbnQKKzc5MzczIGQ4Zjg1NTMzM2ZiNDhiOTg2NTIzMTE5YmRlZDQ3YjQ5NDNjNmU3MTYgbGVnYWN5LXRydW5rCis3OTM3NCBkMmRlYWE3MGZhZGI0NWNjNDAxNzQ5Y2RmNjk0YjEzMmFkMjFjYjZmIGxlZ2FjeS10cnVuaworNzkzNzUgMGFiZmEyNjA3ZjU0ZWI4NjU3ZTMyZGY1MzI5NDE1ZmQ4ZTJkNmZjMyBweTNrCis3OTM3NiA5MzRjYmU3MzY4MDM3MmNlMjg1NWEyOThmNzI0ZTE4MjI0NzhlY2VlIGxlZ2FjeS10cnVuaworNzkzNzggNTMyZDcxNDIwZjQ2MTU1ODUyNDRhZWRiZDkzYmM1NTdiMDkwYzVmZiBsZWdhY3ktdHJ1bmsKKzc5Mzc5IDIyOWVhOGNjYzU1MzA3NWM2NDQ3ZmFjMjY5ZGRiMzY2ZTE3MDY0YmQgbGVnYWN5LXRydW5rCis3OTM4MCA4M2ZhNGY4OTk1Njg4MmY1ZWIwN2NhNjUyNjg5NzBkZjRiODIwMWE2IHB5M2sKKzc5MzgxIDE3OWM2NDczODYzMzBiMThiZDIzNjY3NWE5ZWQyMGJmYTEzOTc2YjUgbGVnYWN5LXRydW5rCis3OTM4MiA2MjM4NWQ5YjdkYTA0MzhjODI2NmZhMjVlMDkwNDQ3MWJjMTI3N2Y0IGxlZ2FjeS10cnVuaworNzkzODQgNzQzMGZhN2VlYThjYjlmOTAwNDEzZTk1NDY1ZDAxYjUyNWZhZDFkMSBsZWdhY3ktdHJ1bmsKKzc5Mzg1IDRjZWI1ZGMzNWNjNjVhNjRmYTk0YmNhMWM3M2U2NDVmNGE1OTU4YTMgbGVnYWN5LXRydW5rCis3OTM4NiBjYWM2NjFkYjc3OTVmMTljNmJmMGI3ZjFmZWU3N2U5NThkNmU4Yzk5IHB5M2sKKzc5Mzg3IDQ5NmQ3NjM2MDc2Mzk0NWI2ZTEyYzk4MWI5YzU0MDRkMzFmNTRhZTYgbGVnYWN5LXRydW5rCis3OTM4OCAyZTA4MTNkNjczOGRiZjRjYWU2YWI5ZGMzZWE2MzY1ZDI1NWJiN2EzIGxlZ2FjeS10cnVuaworNzkzODkgNzI1MWU3MzdhNWQ4Y2FiZDZkYmY3MjRhMTRiOWYzN2ExYzczODg1ZSBweTNrCis3OTM5MCA5Y2FhYWZkNTk5ZDY1MzQzYjE0ZjAzZWIzZmUxNWIwNGMxMzk4OGRkIHJlbGVhc2UyNi1tYWludAorNzkzOTEgYzNjMzRmODQ3OTk4YTAwNjY1Nzc2MGQwNzZmYzhiZTgyNjg4ZTdlNyByZWxlYXNlMzEtbWFpbnQKKzc5MzkyIDRiOGRlY2I0NTcyY2Q3MDJlOGI3ODAyNTgyOTMzOTkxODEyMTczYzQgbGVnYWN5LXRydW5rCis3OTM5MyBlOGIwOGQ3NzNlNzg1Zjg3MmQyNWNjYzA4NmQ0ZDFhNDgwY2QxNWQxIHB5M2sKKzc5Mzk0IDAzMDk2MjA5MjM3M2U5NTQyOTVlOTBjMTlhZGRiNzg1NWMwZTk2NzggcmVsZWFzZTMxLW1haW50Cis3OTM5NSAyNDhhN2FkZTQ0NGZiZWY1NGYxNWI4YzQ1ODY1YzY3MTMwMDViMDFjIGxlZ2FjeS10cnVuaworNzkzOTYgZWQ5YTNkYmMzMTJlOWIwYTUyYjZmODJlNzIwY2RhZDUzMTAwY2Y3OSByZWxlYXNlMjYtbWFpbnQKKzc5Mzk3IGQxMWZiYzc5NjQ5OWEzMzhkMDQwMmI4ODlhOTA0ZGE5NTQxMzhjMzkgbGVnYWN5LXRydW5rCis3OTM5OCBkNjg5M2M3MGRmNmE0N2QxODFhYzU3YzNiNjg2ZTU1ODRkZDViYzAwIHB5M2sKKzc5Mzk5IGViMWI2NDY4ZTk3NzQ2ZjYzMDk3ZjJmODA2YTNjOWU5OWJlM2NkNmMgcmVsZWFzZTMxLW1haW50Cis3OTQwMCA1ZDU0NjkyYjZkYzNlM2UzZTlkNGMwOTY4Y2YyMmY1MDgzNzExNjNmIHB5M2sKKzc5NDAxIDA5YTdhMTllN2NiOWIwOTM4ZjAyZTA5N2VmNTdjNDE3MzUwN2U4MWIgcHkzaworNzk0MDIgM2I0ZTlmYTljMWU4ZGMxYTMxYTQ0Yzg5ZTc1Njg2Y2M3MjM3MTE5ZCBsZWdhY3ktdHJ1bmsKKzc5NDAzIDVmOWE3MDY0ZDYyYWEwMDU5MzYwMzAxNDUzZDg5MTIzNTg2NTBhYjAgbGVnYWN5LXRydW5rCis3OTQwNCA0ZWY2NWUyMzk2YWU5YTVlZWFjNDRlZDc0MjU1ZWRiOTc2N2RhMDlmIHJlbGVhc2UzMS1tYWludAorNzk0MDUgNGY4NDFkZjhjOTc2NmY5MzVlOTkzNzRjM2I0YjgwZTcwNjdlMTZkNCByZWxlYXNlMjYtbWFpbnQKKzc5NDA2IGU1ZGQ5Zjk4NjQ0MGM4ODJmYmY0YzBlOTllNzE3YTU4ZWYyZDhmY2YgbGVnYWN5LXRydW5rCis3OTQwNyAwZGZkNjIwNzZkZWQ0MWUyMDlmNTgzNDFhNjQwNzZmNTVlMTQ3ZTI5IHB5M2sKKzc5NDA4IGUxYTg0ZjIyMTUzN2QzYjM2NzUzODJmOTdjZTFkYWViNDI1NWM5YjIgbGVnYWN5LXRydW5rCis3OTQwOSAxYWE2ODQ2NzJjZTZmYTY2YjQ0Mzk5NTA0MzgxZjllMzI2NTIxNTBmIHB5M2sKKzc5NDEwIGUxOGQzODIwMTI4MDU3N2UxNDJmNDgxMzcwMjNlOTlkMzc3ZWYyYmMgbGVnYWN5LXRydW5rCis3OTQxMSBjOTljMzc5Y2VkMmZjMDVmMjk3MjdiYTI2ZjhhMDI4ZmNkZmUyYTFhIHB5M2sKKzc5NDEyIGQ2Y2E5Y2QxYjQxMWU2NTExMDExYTVkOTFlNzM4MmJiN2UxYTkwYzggbGVnYWN5LXRydW5rCis3OTQxMyA3MzI5MzEyZmNiZDdhNTI0ZGFiMDNiYmFiYmI1NmZkYjk3MGU3OGE4IGxlZ2FjeS10cnVuaworNzk0MTQgZmNjMTA4MzNhMWM5YjVhNWYwZWRhOTNjYTk5ZWM3Y2ZkODUxODYxNCBweTNrCis3OTQyMCBlMjc3MGJmMzJkY2Y2ODM5N2QyYzVjYmZkNmE1NjljMTc5OTA2YTZmIHB5M2sKKzc5NDIxIDkzODI4NGNkYTE1YmY1ODEyMjIwM2VlZGY3ZDkwMTdkNDdlMjQyMzMgcmVsZWFzZTMxLW1haW50Cis3OTQyNCAxNDQzMjcyNGQwZmU3ZmFhYmEwOTkyM2M3Y2UyMmFmOTMxZTA0YTBjIGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzk0MjUgZTZiOWVmNDllMzNmOWYzYjExZjY0Nzc5ZDdlNjhkNDg5Mzg5NTcxOSBsZWdhY3ktdHJ1bmsKKzc5NDI2IGUwYjhlY2EyMjUyOTM1OTY5ZTJkYjQ3ZWYxMGNmMzkxMGNkOWRlYmUgbGVnYWN5LXRydW5rCis3OTQyNyAzOGU0MTAwNTBkYzdjMTVkNWUwNGIwZmYyOGRmNzFkNTQzY2VmMjYzIGxlZ2FjeS10cnVuaworNzk0MjggMTZhN2QzMjYwNWJiODMyZGEwYjEwNTI0OGQ0ZTdiMzI5MmQ0ZTViNSBsZWdhY3ktdHJ1bmsKKzc5NDI5IDFhMGUyMTcwNjNiNzU0MjhjN2FkMjBkMDE4ODY5OGRiMDVmMTQwMDEgcHkzaworNzk0MzAgODcwMTU4MWZiNDU1MDYzNzM3YzliMTBlYWE2MzVjNDQzMTQ3N2E5YSBsZWdhY3ktdHJ1bmsKKzc5NDMxIDE4OGY4NjA3NTljMTQwNDg4Mzk2MGQzYzdmZjlhM2FhMTFhY2M0OWYgcmVsZWFzZTI2LW1haW50Cis3OTQzMiBkODE4N2VkOTQzMjU2MGUzNzNjNGFjOTI1MmQ3MDBlZjAzM2EyYzYxIGxlZ2FjeS10cnVuaworNzk0MzMgYjkwNzIyZDNhZWZhMGJlYmVkNjZmZDZiN2U1YzRkZDRiZDk3NzI4MCBsZWdhY3ktdHJ1bmsKKzc5NDM0IDgyNjM3ZTY2OGNhMWNjYjZiNDFjMGEwMmUxZDQwNDQ2ZjYzNjU2N2QgcHkzaworNzk0MzUgMDMwZDZiZjFkOTk1NmY3NzBmOTgxY2QyZmJjNmQ3NjUyYzc2MWM0YiByZWxlYXNlMzEtbWFpbnQKKzc5NDM2IDk1YTc4YTJkNzAwZDgwY2I4MDczOTQzNjhhMzdhOGVkOWFkNTRkMmYgbGVnYWN5LXRydW5rCis3OTQzNyA5NDIxZjY3YjZjMmExNDYwYjVhYWIzYTA0MDNlNjk0NGQ1ZjJkNTcyIGxlZ2FjeS10cnVuaworNzk0NDIgMjBiYWY2M2IwOTRjZDBiZDY3MjllNDE2MDZiZTNjMWJhNzliZThjNSBsZWdhY3ktdHJ1bmsKKzc5NDQzIDJlY2I4ZTk5NjBmYzNhODcxYjc1NDIyNjYwOGMwMzJmNzY0MjAzMjkgbGVnYWN5LXRydW5rCis3OTQ0OCBjOGVjYWJiZTgwMTY5OTkwNGIxMTUwMjc3NmEyNDE0OTQ5MTg1YmIzIGxlZ2FjeS10cnVuaworNzk0NDkgZTQwN2ViYThlMzhkNDQ5ZjgxODMyOTNiZTI5NTJhZDJiZGZmNjNmZCBweTNrCis3OTQ1MCBhY2IxZGM2NjhhOTdiYjhlNDMwOWY2YjE5YzNmNWU5MWRlZDA2MjkyIGxlZ2FjeS10cnVuaworNzk0NTEgNGJiYWZkZjRkNWMxYmViYjJhMjA2M2MxMGMxM2ZkYzgwNDQ4MGU4OCByZWxlYXNlMjYtbWFpbnQKKzc5NDUyIDY2MGI5ZjI0ZWRhYzhlMzcxNTk0OWU3NjQ2OWU4ZDU2YzM3MGUzMmUgcHkzaworNzk0NTMgNTI2YmIwODJjMDU1MjVjOTNmZmYxMWIxMjk5OGRlZDQ1M2IyYjBhZCByZWxlYXNlMzEtbWFpbnQKKzc5NDU0IDU2NDE2OTE1MTUxMGNmZTkxZmJlMGI4N2RiMjE3MmQzNzE0MTk3YjEgcHkzaworNzk0NTUgZTVmZTJmNjI1OTgzY2M2ZjNmMzFiZGM5OGYzMWJhY2IxNjI2NDdiNCBsZWdhY3ktdHJ1bmsKKzc5NDU2IDBmNmEwYjFkYjRlMmIxZWMwYjdjOTQ5NWFmMWVlYTE2MzJjZmM5MzIgcHkzaworNzk0NTcgYjIyN2RiOWEwMDI5NzQ0YmJjZmIxMjIwOGViMDc4NjcwZjkxMTEwMCBsZWdhY3ktdHJ1bmsKKzc5NDU4IDhjNWM1ZTg2ZmIyMjdhNjI3YjY4ZTBjMDc3ODM5ZWUxMTY5ZGE4MDQgcHkzaworNzk0NTkgMGU3YWU1M2I0ZTc5MDI0Y2NhZTZhMzNkYWFjOTdiMjY5MTU3Yjc5NSByZWxlYXNlMjYtbWFpbnQKKzc5NDYwIGU4MTFhYTA5NGYxOTQyOTU3ZTQ4ZGI2ODlmMjcxOGIyMjNhOWY5NzYgcmVsZWFzZTMxLW1haW50Cis3OTQ2MSA5MTcwYWE5NDRmMjkzMzQ1YmQ2ZjhkYTc2YzdhYTAxOWNhNGRlYjVlIHB5M2sKKzc5NDYyIGUxMTgzYTEzN2Q4Y2E4ZjRkN2IxNWE3NTFkNWQ2ODFhNDFmNGNkZTQgcHkzaworNzk0NjMgYWIzMDdmN2RlZmExZWM3OWQzYjZhNmQ5OTdhNTY1ODNlMjAzODEyYiBweTNrCis3OTQ2NCAyMjk0NmQwMGVlY2NlZjdlNDZjNzRkZWVjM2U2NTg4YWE2NDI5MDg3IGxlZ2FjeS10cnVuaworNzk0NjUgZjk2YWQ4MDA3MTJlZTYxZjRhYTEyOTBjNTk2MzgxMmNiNmU5MWRjNCBweTNrCis3OTQ2NiA4NmI3MWY0MGU4YWFlMjcwNGQwOGY1ZTZlN2NiNzJjYWIwZjRkOWJjIHB5M2sKKzc5NDY3IDcxYTQ1ZWNjNGRjOTExZWQwM2JhMjc2YjMyMGYzZGQ3YTNmMGUyYjEgcHkzaworNzk0NjggMzA5ZTJkM2U4ZGNjMjFhZTcwZDM0OGY1YjA1MGZlOGY2ZDliNmFjMiBsZWdhY3ktdHJ1bmsKKzc5NDY5IDhlNmExNjE1N2ZhZjFiZGY1NDRiNDU2NzU0OGUyZWRhM2Q5ZWZhOWQgcHkzaworNzk0NzEgYTJhYTZkZGZlOGUyOTU4YWNhNmU2MjMwNGY1ODAxNGEzYTkyMmYzMyBsZWdhY3ktdHJ1bmsKKzc5NDcyIGRiNWEzYTI3N2MwYjU4MGViZjUxZmM0YTMxOTIwMWQwNmQwYzU5YTEgcHkzaworNzk0NzMgYmIyY2ExYjYzMzIxYTc4YjQxMzM0N2FkOGY0Y2FiZTBlNGNlOTRhMCBweTNrCis3OTQ3NCA0MGY3ODdiMTUxYWM2YzA1MzVhNzM1NmUxZmQyNjQ1MWU2MzIyNjM2IHB5M2sKKzc5NDc1IDJiNjMyMTkxNWU5MmI2MWE2Yzg2OWU3OTc0MDhkNTZlYWQ5ZDYzYTIgcmVsZWFzZTI2LW1haW50Cis3OTQ3NiAwYmMwNDUyNWFmNjM4YmQwMDRiMTEwNDU1Y2ZkNTMyZDYzM2JkMTQ0IHJlbGVhc2UyNi1tYWludAorNzk0NzcgNjAwMDk2MzJlZDExOWY3YmRmMzk5ODVlNjcyYmQ1Y2E1OWQ2ZWM4MCByZWxlYXNlMzEtbWFpbnQKKzc5NDc4IDhlZTJiZjgyMWY2MjY3MTNmOThiYjQ5ZDdiYjVkMTA0NDM5MWU4YWQgcmVsZWFzZTMxLW1haW50Cis3OTQ3OSBlNjNkNDY3OGZjYTczZjI0ZDQyZTE0NzJmYmI2ZWFhNTY5MThlZDk3IHJlbGVhc2UzMS1tYWludAorNzk0ODAgYmI4YmQzMzU4YmNhMDJjZTVhNzAxYmJiNmE3YjY0ODFjYTAyZTgyYSBsZWdhY3ktdHJ1bmsKKzc5NDgxIGJlYTc1ZmY2NTExNDZkYWFkMDAyZDQxZDg3ODk3Njc1NmU1MmJkYmMgbGVnYWN5LXRydW5rCis3OTQ4MiBkNDkzNTI0MjZkZTUxMzMzZDM3ZTY2NTE0MThjZGZiMzAwMDllYTZjIHJlbGVhc2UyNi1tYWludAorNzk0ODMgMjEzYTBhZTJkYjY1YjJlMjUxOTllMDEwNWI0MmUwODA4MTliYzc2MSBsZWdhY3ktdHJ1bmsKKzc5NDg0IDJhMzEwYTQ0OGEwYTdlMjAxNDVjMmJjZDg5MWRiODY4N2IzMGFhMmMgcHkzaworNzk0ODUgNTFiMmFmOWM0NjllYjRhOTUzNmNkMDlkYjBiMjgxZDE1OTRhYmEwOSByZWxlYXNlMzEtbWFpbnQKKzc5NDg2IDJkMDZjNmM3ZTczMjdkZWJkY2Y2ZmFjZTFmZGQwOTVjZWVkODhmZGUgcmVsZWFzZTMwLW1haW50Cis3OTQ5MCBiYmIzNDA1MDFmMjlmYzBmMzM2NjA0MTM3ZjE1MzlhM2YwMTZkMzJmIHJlbGVhc2UzMS1tYWludAorNzk0OTEgOWI5ZmQyOTkwNzJkOGZjYzM4NDY3NWQ4OWJmODU0YmE1YTJhNjZhNyBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5NDkyIGMzYzgyZDgwNDBkNmY0ZWY2NjNiYmQ5MGE1ZTY1ZTg4ZGExMWVmY2UgcmVsZWFzZTI2LW1haW50Cis3OTQ5MyAwNGNjMDc1YmRkZjViYjk5NjNlZjUyMDU0MmFmNzc5N2MyZmI1MTdjIGxlZ2FjeS10cnVuaworNzk0OTQgNjZlNzU3ZDhlYTkzNGNlZWMxZDZiNzA3OTU5NGU2MGYzNDFkZWRhNSBsZWdhY3ktdHJ1bmsKKzc5NDk1IDc3MzlhZWVmZGJjMDE0NGM2OWRiOTc2ZjkyYTkzZTEwMzlhNzk2YTIgcmVsZWFzZTI2LW1haW50Cis3OTQ5NiBjOTZkMjc4Njc3YWYzY2QwOGQ4YmRjMGM0OGQ2NjJjZmNkYzgwM2UzIGxlZ2FjeS10cnVuaworNzk0OTcgMzMyOWMwNWU2ZTMxOTM3OWI4OGFjNDkwOTFlNDA1ZDc3YzE1NzIwYyBsZWdhY3ktdHJ1bmsKKzc5NDk4IGU0ZTRiYmQzOWEyMTNjY2U4Y2JlZDc5YTc0YTliMmUzMDc0YWNjMzAgbGVnYWN5LXRydW5rCis3OTQ5OSA0MGEyZTdhYzhhNDdlMjJhMDE1NjM3NWU5YTZiNjI1OGI5NzhiZWM3IHB5M2sKKzc5NTAwIGExNGEyMDVhYjFmYjg0OTAxZDViZTZlMWZjZDY1MTFhNGNkOGRjNjIgbGVnYWN5LXRydW5rCis3OTUwMSBiYzY4MTRjMzRkNWYyMGUzZTk1YTQ5MGU1ZGE0YTZmM2NhZTdkNWY1IHB5M2sKKzc5NTAyIGY2OTc2OWFiMGViODE2NjczNWU1NWQ2MzZkNjkxODljNDdmOTMyZjIgbGVnYWN5LXRydW5rCis3OTUwMyA1ZTBmZjY1Mjg0ZmEyMDg5YjA0ZTM2YzYxYjIxYTIyMzczNmMyMWU5IHB5M2sKKzc5NTA0IDFkMDAyN2QzNGE1MWUyMWM5OTIyODRlYjMxNTQ2Yjc1ZDkxYmZmYzkgbGVnYWN5LXRydW5rCis3OTUwNSAxMzYxODc3NTg1ZjJjNDkxZWJiMGUwN2U2YTA1NDBjOTJjMTY1YTYzIHB5M2sKKzc5NTA2IGJmM2M0OGYyNDE3YzQ0NzEzZDQzNDgwOThjMGFlMWE3ODg2MWE2OTggcHkzaworNzk1MDcgZGRkNTUwOTUxYjgzZmIxNzBiMDFkZTdmODhmMWI3MzNkMWE4NWE2MiBweTNrCis3OTUwOCA0ZGQ2ZWI2YmU4MmZkNTJmMGJlNzY4ZmQzNmU3ODUyMWU4NGMxYThiIHB5M2sKKzc5NTA5IDYzMjY5YzQxODVjNTJlNjlkNjU3ZjJjYjBhYzQ1Y2YxYzQwMTMzMGYgbGVnYWN5LXRydW5rCis3OTUxMCAwYzAyNTg0YzRlNTM0ZmU3ZjM4NWMxODFmNDYzMDBmMmQwOTYzNWNmIHJlbGVhc2UzMS1tYWludAorNzk1MTEgYTYwOTU0ZWI1MThiOTg0OWE5MjczMjQ0ODAyZGIyMWUxMjMzNWM1MiBsZWdhY3ktdHJ1bmsKKzc5NTEyIDk2NTFjODRjNTIwZDllOGJhNWRjOTMzNDVlNWVmZWE0ZTZjOWU1ODEgcmVsZWFzZTMxLW1haW50Cis3OTUxNCA2MGY5MTI0ZmRlYWMwNTEwODlkZWQ4MGUxZTgxODRlMjliYTJlZjk1IHJlbGVhc2UyNi1tYWludAorNzk1MTUgNDE5ZmY3MDI0NDc4Mzg5ZTBmZjUwODZlYmU0ZjVhNDZhYzFlYzk1OSBsZWdhY3ktdHJ1bmsKKzc5NTE4IDM0ZDgyMjE5NmQ4YmQwZDZhYmQwODYxOGI5NWQyMTI1N2QyMDYwNTYgbGVnYWN5LXRydW5rCis3OTUxOSBlZjZlYmMwNmE3ODZkYzAwYTM4OTFmNzk0MWZlZGYwNzhkMjM5MjU2IHJlbGVhc2UyNi1tYWludAorNzk1MjAgZmZlN2M3OTFiNWI5NDg3OGY0YWFlM2UwZDc3MTc5YjRlMTcyMDZjOSBweTNrCis3OTUyMSAxMzIzMjEyZGExNTQwMDRhZmU3Mjg3M2NhNmYwNDZmYTVhNWFlOTRjIHJlbGVhc2UzMS1tYWludAorNzk1MjIgNWU5ZWFkYzc2ZTg3ZWY3YmU2ZDJhYWM0MWVhY2M1NmZmYzQ1ZmMwNyBsZWdhY3ktdHJ1bmsKKzc5NTIzIGNhZDEyNjQyOGY0OGQ3OGI5N2RhNzcxZmFiNWQ0Yjc2MmQ4OWM4OGEgcmVsZWFzZTI2LW1haW50Cis3OTUyNCA1N2Q4ZDdmMzE3ZjUwMWI0MTU1YTk5NDUyMTIxYTMyOGNkZWE5NTZhIHJlbGVhc2UyNi1tYWludAorNzk1MjUgZmQ1YzBlYTI4NzBiYWM0YjBkMWM5Mjk5ZjAyY2JlNzVjNGFkMDdkNyBweTNrCis3OTUyNiBlNGY5NjkwMTJlNjgzY2FlMmVkODkxODJjNmU1MTNiODFmNGI4MmI5IHJlbGVhc2UzMS1tYWludAorNzk1MjcgZDU3Y2YxYWEyZGQ0ZDAwYzNjMzcwYWUzZGM1OTdhOGQwMDYzMjRjNSByZWxlYXNlMzEtbWFpbnQKKzc5NTI4IDk5ZTUyMzEzMmFlYTQzZDc4YTc2NGUxMDRjOTFjNjA3Nzk0MWI0NTAgbGVnYWN5LXRydW5rCis3OTUyOSA4N2JjMGYxMDg3MDIxMzkxMDcyOWU1MWIzMzA5NGIyYWEwOWIwMjk0IGxlZ2FjeS10cnVuaworNzk1MzAgYTJlNjI3ODI3YmYzNTA5YWI0YTY3ODFiZmZiNmUzZTg1MjczMDExMCByZWxlYXNlMjYtbWFpbnQKKzc5NTMxIDAxZThiMTNmYTk5YTU2NWRjNWE5ZWUyNTlmMDEyMzhjZTY0NjE2NzIgcHkzaworNzk1MzIgZWNiOWE2NjA5YmIxYzU0NTA5YmI4YzhmMWY3N2EzODYyMmYxNzhmNSByZWxlYXNlMzEtbWFpbnQKKzc5NTMzIDU5MjBmOWE1ZTIyZDhkMzNjMTEyNDRiODE1ZmUyMjI4YjUzMGY5MjYgbGVnYWN5LXRydW5rCis3OTUzNCA4MzIwMjJmNjNiY2JkNjc1NTQwODgxOGQ4YTYxYjZmYTg2NGIzM2EyIGxlZ2FjeS10cnVuaworNzk1MzUgN2I4YmEwMTljZDE1YjUyMDk4N2EzODE1OWUzZGJlYWRhNGNlOGMwMiBsZWdhY3ktdHJ1bmsKKzc5NTM2IDRmY2FhZDNmNjY5YjIzZjZiZTNhNzA2MTk4NThjYTdlOGZiZTVjZDcgcHkzaworNzk1MzcgNTcwZWFlMTQ4MWViNjAxMWZjMDlmYzJiYzM3ZWM0NGVjYWMyYThhMyBsZWdhY3ktdHJ1bmsKKzc5NTM4IGMzNmYyM2RhODhjMWFhNTQzZmQ2YzQ2YWNlNmE5NjI5YmUzZTViMmQgcHkzaworNzk1MzkgMzc0OGJjYTRkODY5OGFiMDdjNzYwODQxMjQxY2IxN2QwZDAyYjc4YyBsZWdhY3ktdHJ1bmsKKzc5NTQwIDI1YTdjZTAyMzA2Y2RmMWQzYzEyYjlmZjI4Nzk5NWI5NmVkYmVhNGQgbGVnYWN5LXRydW5rCis3OTU0MSBkMDBmMmVhMjVkMjBhNDFmMjQ2ZDY2ODBmNWYzMWM3YzdkMzIzYmVmIGxlZ2FjeS10cnVuaworNzk1NDIgN2I2N2MzNDI5MTdjY2U2OTEwNDdhN2E1MDBiYzAxY2I4N2JlZGY0MiBsZWdhY3ktdHJ1bmsKKzc5NTQzIDEzYTgxMTJlY2E1MmZjM2NmNGM4ZGU2YjljMzE5Y2U5ZTgxMjEzYWEgbGVnYWN5LXRydW5rCis3OTU0NCBhNGRhZDIxOGM2ZTM0NTY4NWQ3NWE3MmE0MWE5N2MzYjI1NWNiNDdiIHJlbGVhc2UyNi1tYWludAorNzk1NDUgMWUyYzlmZWE3Y2JlMDEwYTZkZGJlYmY5YzMxNjNkZjFjZTRhYzM4NiBweTNrCis3OTU0NiA1Y2M4MmNjZTQ1MjE1ZmM3ZTdmOGEzMWRmYzkyZjNhMGQwNGVhYjY3IHJlbGVhc2UzMS1tYWludAorNzk1NDcgYzc5NjViZDVkMjAwNGUyYzdmMzMyOWRjMjg0YjZjNTQ4MDEzMjM2NCByZWxlYXNlMjYtbWFpbnQKKzc5NTQ4IDZkZTNkZTNhYjcxZjc1MzZhOGExMDhmZDY1YWE0MTlkMDdjNTJiZTQgbGVnYWN5LXRydW5rCis3OTU0OSA4ODJkNjgxZDUwYTAwNGVlYzQ0NmE4Mjc0MDczNzgyNDExZDMxYTU3IGxlZ2FjeS10cnVuaworNzk1NTAgNTRiMGE2Zjc1ZWQ1Nzk1MDZkNmJhMGM4NTFjOWQ4MDZhMzkxYTM0YyBweTNrLWNkZWNpbWFsCis3OTU1MSA3OGUyMDk3NzkyYmVlYWQxYzgyYzk0OTllMTM5MDllYTkyNTFiMmZkIHB5M2stY2RlY2ltYWwKKzc5NTUyIGZkOGZlZjZhZmVmZDhjZGJmZDRhYzI1NTIyYzg4NWE3MDA4NTg5MTEgcHkzay1jZGVjaW1hbAorNzk1NTMgZTk1Zjg3NTVmZjFlM2Y2NjM0ZjJiZTdjMmE1NWMxOWUzYjJlN2FkMCBweTNrCis3OTU1NCBiNGRlYWVhYjk2ZTc4ZDNkY2UyMzU2MzkzZDU3OTdlYjkxYjZkNWRmIHJlbGVhc2UzMS1tYWludAorNzk1NTUgNmRmNmMxOWZiYWUzNThjNDU4MThmMzNlODMwYTYyZWIzMzIxM2YyMyBsZWdhY3ktdHJ1bmsKKzc5NTU2IDA0ZTc3NWIzM2U5ZTJhMzdlYzViMjM1NTRhNWQzMTQ5ODhhN2I3MTMgcHkzaworNzk1NTcgOTYyMDFmNDg4Y2MzY2UyODRmZTAwYmY5YWIyZjBkMzczZGVkMmY1MSBsZWdhY3ktdHJ1bmsKKzc5NTU4IGE0MDRlMzcwMmY3OWYyOGMwMmMzOTZlYzU2YWU2MTNmYmI4ZjlmMDQgbGVnYWN5LXRydW5rCis3OTU2MCBjOGE2MDFlNzQ0Y2Y2ODgzMGRkNjQzMGY2MjM3YmNhYTZlNTcxZDE2IHJlbGVhc2UyNi1tYWludAorNzk1NjMgZjE3MTcxMjg4MGM4ZWJkMmY0NTA2MzgxNjUzZWE5Njg1YmU2MjkyNSBweTNrLWppdAorNzk1NjQgNmQzNDE1YzE1YjhiZjkyMDhiYzQ4MDg0ZTM3NDE5YzlhMGU3YWYwMCByZWxlYXNlMzEtbWFpbnQKKzc5NTY1IDFiZWE1NDA0ZTA4N2MwZTVmYjUzODA3MDFiYTk0YjljYThmYmRiZjEgcHkzaworNzk1NjggNTEyYjgwMjUwNzg5Yjc3MjhjMTVlYjAxODNmZjI3ZWE1YjcxNDkwOCByZWxlYXNlMjYtbWFpbnQKKzc5NTY5IDI0NzhjMzhmZWZmNzQ5ZjhlNmFmNTgzNmQ2YTdiNDdhNjc1ZjM3YTQgbGVnYWN5LXRydW5rCis3OTU3MCA1YmFkODE4ZDE0ZjI4NzNmMzkzOWZhN2IzNmZmNjhhZjE1ZDNiZDI1IHJlbGVhc2UzMS1tYWludAorNzk1NzEgM2Y0NDgyNTI2ZjU1YTI2ODc4N2EwMWQyNzhiMzVmNDg2OWNkY2M3ZiBweTNrCis3OTU3MiAzODgwNmRmMDVkMDlkNmRlZjhjNjQ3Nzg0YjhhOTM0OTM4NDg5YjE0IHJlbGVhc2UzMS1tYWludAorNzk1NzMgNGQ5ZDk3NjBjODhiZWY2ZDcwMjMzNzdlNGMyNGRkMGNkNjc0ODg2ZSBweTNrCis3OTU3NCA0MTVjNGJiNDVmZTY4Nzc0ZjRiMDhkNTg2ZTg3ODcxNWY0Mzk0ZGY1IHJlbGVhc2UyNi1tYWludAorNzk1NzUgYjY0NzMxNTRhNzBiYzMzMTVlZTVhNzNiYTc2ZTBlNGFmNDI0MThkMiBsZWdhY3ktdHJ1bmsKKzc5NTc2IGVhYjM2MTYxN2Y2YTdkMDQxOWRhNDhjOTEzMTYyY2MzMjIwMWY1NGIgbGVnYWN5LXRydW5rCis3OTU3NyBiYWM0YjI4OWY3OWFhZDUzMDZjODQ2NjY4MTNlNjc2MjNmODA2Mjc3IGxlZ2FjeS10cnVuaworNzk1NzggZWI5ZmRhOTBkYTZlZDg0ZDU0N2NiOWM1OWM2MzFkNjdlMzI3MjRiMSBsZWdhY3ktdHJ1bmsKKzc5NTc5IGYzODkxOWJiMjZjYzcxMTlmZDVhODlkYzI3YzNkNjVmNjg5OGRmY2YgbGVnYWN5LXRydW5rCis3OTU4MCA3YTRhMGM2OWUzYTVmMjNmZjI3YmZkNzIzY2I3OGExMWJmMzM3MTg3IGxlZ2FjeS10cnVuaworNzk1ODEgYjU3ZGE0YTRhM2VkOTVlYmQxZWFhNjY4NmVkNGUzYTkyZTMzMmQwOSBweTNrCis3OTU4MiBlODFjYTg4ZDQ3OGNjNTU4MzIxOWUzZmE2M2IyOTM1M2QzZTZiM2I1IGxlZ2FjeS10cnVuaworNzk1ODMgMTMwNjAzM2Q4YWQyYWI3MTlhYzgzOWMxNGM4MjJmNjkzNTA2NWFjNyBsZWdhY3ktdHJ1bmsKKzc5NTg1IGUzNWZlYjk5NWJkOTZjNDUwYjJhMGQzY2NjMmM0MGM1NGVlZmIyMjkgbGVnYWN5LXRydW5rCis3OTU4NiBjNWIyMDY0NWU5MzM1MGM3NDJiODg3NWVlZmRkYmUwYzI3ZmFmMWNhIGxlZ2FjeS10cnVuaworNzk1ODcgZjc3NTU2ZmViZWM4MjBjZjIwMzU2MWNlYmYzZDkzYTdlZDIwOTlkNyBsZWdhY3ktdHJ1bmsKKzc5NTg4IGFlN2NmNTc4ZGU1YWRkZTAwMzk2ZjVkNWNiMzk2OTA1N2FlYzE4MmMgbGVnYWN5LXRydW5rCis3OTU4OSAxN2YwOGQ2NWNjMGQ4MWRkNDc0MmQ1YmY5ZDZiZjdlNTVmYjRkNzAwIGxlZ2FjeS10cnVuaworNzk1OTAgNTdmNGM5OTA4MmRmNTYwOTcxNjNkZGZiMDdhN2MwZWI5YTc0ODA1YyBsZWdhY3ktdHJ1bmsKKzc5NTkxIDQ4ZmQ2OWMyYTJiNDk0ZjJiMTBiMDlkODVjM2M2N2I2MWUwMzE1MDAgcHkzaworNzk1OTIgMWRmMzRmYTQ5MWJkYTA0YjAyMmI1NmMyZmFjYTVkNjI2NjI1YjE1MyBsZWdhY3ktdHJ1bmsKKzc5NTkzIGQ3N2UzODQ2MGUzY2E3ZDZiMmM4ZGViOTBlMmJkODlmOTQ3MjM0N2QgcHkzaworNzk1OTQgNGI1NWNlYTU1MDY3NzZmYWQ4OGNlZDM4MDE1MzAwNzVjM2JjMTJiMCBweTNrCis3OTU5NSA1MTQ5ZDQ4NGQ1NmFjODFkYjc1ZGQxZjM1OGVhNTQ5NTU4OGZiOGU1IHB5M2stY2RlY2ltYWwKKzc5NTk2IDIwNDk3ZDg1ZTAxMTJlYzNlNGM4MWZlYjE1NGYzYjMyOTAxZmU3MWUgbGVnYWN5LXRydW5rCis3OTU5NyAzZjFkNmVkNDgwZGQ4MWIwNDMzYjQ3MWJkNGE3MGExNDRmYjk0NWEzIHB5M2stY2RlY2ltYWwKKzc5NTk4IGU4MDUyYTYwYmJiN2I2ZWYzMmYwYjcwNGVhN2Q0MjY0N2Q1ZjkwYjUgcmVsZWFzZTI2LW1haW50Cis3OTU5OSBjZmJhNTljMzgzNDE1YzI5MmE1NjQxMDM0MWNiNTcxNDZkZWVhYjFmIHB5M2stY2RlY2ltYWwKKzc5NjAwIDg3MGZmNjIyMGEwYjk5YjA0MjBjM2NlMWI2NmZlMzI5OTdkMzhiMzAgcHkzaworNzk2MDEgMjc3ODU4M2JlMjFkNjJjZWVhODRmM2UwODg1YjVkNzUwZDdjMjFhYSByZWxlYXNlMjYtbWFpbnQKKzc5NjAyIGQxMTAxYWE5ODRjMDc1YmM3ZGM2ZWUyOWRjNzA3YWVhYjkyMWIwNzIgcHkzaworNzk2MDMgNGFjMDVkMWY2MGMxODA2OGI2NDg0NjE5MzRlYTAxMzk2NDdiZTg5MiBsZWdhY3ktdHJ1bmsKKzc5NjA0IDY2ZGIwM2E3MDc2NzljNjlhN2U3MDA2Y2M0MjM1ZjdiYjJkODg5OWQgcHkzaworNzk2MDUgNjk5MjQ2N2JiOGI1OWM2MzEwZDRiNTE4ODlhNWFkNjA5MDM4NDE4YyBweTNrCis3OTYwNiA0M2E4MzdkMjcyOGExMzQxZjA0NmYwMTkxZmFmNzhlNDcyZDdiNTg0IGxlZ2FjeS10cnVuaworNzk2MDcgMWZmOGRkNjdiZTgyMjdhNzcwMGY4ODJkMWMxNWJiMjVhMTE3YzU2NSBsZWdhY3ktdHJ1bmsKKzc5NjA4IDJmNWRjMmZhMGU1NmEyNTEwMWIzMGFmZGZjZjRjMDUzODM2OGIzZGEgbGVnYWN5LXRydW5rCis3OTYwOSBjY2E0YjcyZjQ1MGI2NDc4NjcyYTg4ZGVkOTllYTMyMTQ4YjhmNmY2IGxlZ2FjeS10cnVuaworNzk2MTAgMjU1YTQwMWMxOWIwNWFhZTZhNjJmYTUwMjkyMTI5MjNlMmU3NzdlYiBweTNrCis3OTYxMSBlZmViYjdiY2FlOGIxNjRiMDI1MTA1M2M5MjliMjBkN2JiNTU0NWFhIHB5M2sKKzc5NjEyIGI0Nzk2ZWZjYTcxNjRmZmZjYzJjYTIxODQwODEzNzViMDNiN2JkOTIgcmVsZWFzZTI2LW1haW50Cis3OTYxMyBhMWRhYmY0ZTg4NjY1NjFiYjU3NTdmM2FiYzY0ZmYwOGM4ODZlYjU2IHB5M2sKKzc5NjE0IDdkYzhiODhiYjE1YTQxZTRiNjZlYjhlOWUyM2YzODZhNzViMDQ2MjggcmVsZWFzZTI2LW1haW50Cis3OTYxNSA4ZDczMTdjOTI0Y2VmODI0MjY5ZWVkZDIxZTU2ODM4MzQxMTU4MDllIHB5M2sKKzc5NjE2IGVlZWEzNDAxNGM4MDI2ODZkNTZiZTE4MjQ5MDFiMGI4NGU2ZDI5NTMgbGVnYWN5LXRydW5rCis3OTYxNyAyNzhlN2VjYzBmNzdlZjBkZTYyM2ExM2IzMzNlNDY2ZDA2NjQyNjQyIGxlZ2FjeS10cnVuaworNzk2MTggOWQ1MGJjZDNmMGM5Y2E4NWI3ODJlMzQ4ZTRkN2M5Njg1ZWVjNjZmMCBsZWdhY3ktdHJ1bmsKKzc5NjE5IDdjOTIzODA4NWE1Y2UwYTI2ZTIxMGEzNTUyMzk2YjBkNTFkZTA5ZWYgcmVsZWFzZTI2LW1haW50Cis3OTYyMCAzNzdiMjZkODc2ZTBkZmU3YWU1OTFlYzZlZDZkZTNmMGVmZTRhY2QyIGxlZ2FjeS10cnVuaworNzk2MjEgNTNhZmNkYzlhZTBhYmM2OTEwYzM1YzI1MTAyZjhiYzE3NWNlOGYzNyBweTNrCis3OTYyMiBmNzZjM2RlYzg1OGI3YjljODUxMDM3ZmVkODdhYTFkM2JiOTlmNWFlIGxlZ2FjeS10cnVuaworNzk2MjMgNzBiN2U0YTdmN2NlMjBiMmU3NzExMzM2M2I3OWU5Y2FhNzUzNTBmNyBsZWdhY3ktdHJ1bmsKKzc5NjI0IGFhYjY0MjgzZDAwYTFmZTZlNDQzOTk0YjJjMzkxMDQ3YjlmNDFkOTIgbGVnYWN5LXRydW5rCis3OTYyNSA4NGVjYjM1YTA2YmRkZjZjYTE4NmM2OTJhNTU4NzhlMzY3YWUzZWZiIGxlZ2FjeS10cnVuaworNzk2MjYgMWI1ZDVlNzRmNzM4ZjQxYTQ3NDhkYmNkNzE3NjNhNjM3MTZmMDAwNyBsZWdhY3ktdHJ1bmsKKzc5NjI3IGYwYmIxMGNlMDVjNzcyNjY3MGM1MTNlY2U0NDAxNWYwYTI0MzE4OTcgcmVsZWFzZTI2LW1haW50Cis3OTYyOCBhZWEzMTllYTI2YThlOTAzMjNlM2M1MTc4MzJlYWRlNjEzYTRmNzdlIHB5M2sKKzc5NjI5IGZmYTBhYTcwYzc0NjgzZjQ1MGI4ZmM2OWRkZTRmM2IxY2IzYTFlYTkgbGVnYWN5LXRydW5rCis3OTYzMCA3NjU5NDNjMTExNWI5NWJmZGEzYzgyOGQ1YjBkZTFkNjk4YTBmMDUxIGxlZ2FjeS10cnVuaworNzk2MzEgYzM0ZGRjYTM2Nzg2YzFjNGQ3MTg1ZWUzMWI5ZWM3NTlhOTY5MDU0OSBweTNrCis3OTYzMiA1NDYyYzVhOTFmOGRjYjlkYzhmNDNmNTFlMjg4YjRiZDNiMTY3MGRiIGxlZ2FjeS10cnVuaworNzk2MzMgMGFiODllOGJkZWRjNTc2NmRlMjE3Y2EyNDdlODYzMGUyMDBhNjUyYSBsZWdhY3ktdHJ1bmsKKzc5NjM0IGE3ZTlmOGUzNTUzZjdjYTU2OTczMWMwYTQ3NjJjZDZhNWQwZGMxZjMgbGVnYWN5LXRydW5rCis3OTYzNSBkNDc5OWVlNjRjMjNiMWM1ODRiMjI0Mjc5ZGRlMWYzN2QwZjc3ZTBkIGxlZ2FjeS10cnVuaworNzk2MzYgNDg3N2MxMTU5MTUzZjVlZmQ5OWRjY2M1YWI4ZDJmNzdiM2U0YTQ4ZCBsZWdhY3ktdHJ1bmsKKzc5NjM3IDRlZDA0YTM5YzBhOTFiOTNkNTZhZjZlYmY1MTFmMzRlMGQ3NTkwNjIgbGVnYWN5LXRydW5rCis3OTYzOCA1NDk2NTAzYjhiMWFiZDcyZjAzZDQ4NjU4ZjA2MjJjOWQyNGI2YzhhIHJlbGVhc2UzMS1tYWludAorNzk2MzkgODZmNjk5NzY2MDE2MmNiZGRhMDE5MmMzZWMwOTc5MDg3MjRhNjlmMSBsZWdhY3ktdHJ1bmsKKzc5NjQwIGQzODU4OTU4ZGZmNTNlNjI0MzUyMjFhYjE5NTg3ZDUzMGU5ODJlMzEgbGVnYWN5LXRydW5rCis3OTY0MSBiNTI5YTE0MmNjNDllNmYzMTBhYjc0NjJmZDJmZjIyNjFiNWI0YzQwIHB5M2sKKzc5NjQyIGQzMzRhN2E1Njg0NDk4Y2U3ZWU5NTlhNDgwMGI2MDMwMTk4MTI2M2YgbGVnYWN5LXRydW5rCis3OTY0MyBlYmNlYjc3OTY3ZGU4NjM0OGExMmZhZTAwMzk0NmRlMjk5MGM5MTY1IGxlZ2FjeS10cnVuaworNzk2NDQgNmQ0ODM1YTgxYjYzMmFkMDIwZjZiMGI4ZDQ4YjYxYWRkYmZkMDNhZSBsZWdhY3ktdHJ1bmsKKzc5NjQ1IGZhNjQxZDYwNTQ2ODg0ZmQ5YzA2MjExOWZhYjdkYWViNzRjMDBkNzIgcHkzaworNzk2NDYgNjZiNjBhNmU4MTk4NDZmNmJlMGVhNjc5MTU5ZmEwYmQ2YzVkNzZkMiByZWxlYXNlMjYtbWFpbnQKKzc5NjQ3IGE4OGUwZjZhYjk0NWExNjY5MzEzYTRhMjBhYjg1YTEzYzZlOTk1ZWMgcmVsZWFzZTMxLW1haW50Cis3OTY0OCA4OWU4N2JhOGFiNGUwYjBmNTMxNjRkZGIyMWIzZGYxZDRkODExY2ZiIGxlZ2FjeS10cnVuaworNzk2NDkgNmZlNWRjMTc1YzI2NGRmMmFiMTIyNTM4N2FiZDkwZWZlNWE5Yjg5MiBsZWdhY3ktdHJ1bmsKKzc5NjUwIGZkZDAxMzc0MzJmODUzNzM5ZjQxNWY3ODUwZGJjYjljNWY4Mjk2ZTkgbGVnYWN5LXRydW5rCis3OTY1MSA1ZWJjYTYyMjg5MDM2YjM3YmNiN2ZkNGUwOGI0ODk3ZGExMjE1NDY3IGxlZ2FjeS10cnVuaworNzk2NTIgNTBiMmMwZmU1ZTI3YjM5YzIzNGMxOWYyZTMzZjllMmEzODcwMjYyNyBsZWdhY3ktdHJ1bmsKKzc5NjUzIDE1NGRjZmEzMmIyMDFhZWNkYWI3NmY1ZmNlYzNjOGQ4ZWE2MmNiM2MgcmVsZWFzZTI2LW1haW50Cis3OTY1NCBhNzA3Y2EyNjAzNDFiNWY2ZjI4MGE3MjU0ZWE2YTg4NDE4ZDZmZTVjIGxlZ2FjeS10cnVuaworNzk2NTUgNjI5ZTdiM2M4YjJkOTc2ZGM3MGY2NGUzYzdhZTFiOTc1NDI0MjUxYSByZWxlYXNlMjYtbWFpbnQKKzc5NjU2IGVhNGM2YzA2ODk1MDA5ZDBlMDNmOTczYTAyNzA2MjZmODNiY2VjYWUgcHkzaworNzk2NTcgNjU4YjM5ZTY2ZGVmZWQ2ZjZkZWY3YzZlMzMyMWUyMmUyMjFjYzEyZCBweTNrCis3OTY1OCBkNWYyYzc0MjViNGE5NDdlZTg1MWJmZDU0YzI5MmJmOWM4ZWM2ZGQyIHJlbGVhc2UzMS1tYWludAorNzk2NTkgNDRkMzJhNmM5ZTM1N2EzM2FjNjI2MzlhNzk5MzAxNzkzNDUwZDA0NSByZWxlYXNlMzEtbWFpbnQKKzc5NjYwIGRhN2IwMDA2YTc5OTdlNzdiNWQ3OGZmM2M4M2VjOGU1NjY4ZTliZWQgbGVnYWN5LXRydW5rCis3OTY2MSBhZDk0YWY5MTI5Y2NhM2RkZGU2MjY4ODI1ODQ0MzM5N2RhMjJlMTJiIGxlZ2FjeS10cnVuaworNzk2NjIgN2NhNmEzNDMxZjllMjdjYTExNGZmN2M0M2IzMGM0ZWMxOGYzZjg1OSBweTNrCis3OTY2MyBlNDdhNmZmNWI1MjBmMGQxZTUzZDgwYzRkM2VlYTA5NWUwYjczODJiIHJlbGVhc2UyNi1tYWludAorNzk2NjQgMjgxMWJlOTVjOGM4NDQ4YWVlYzk5YjZlODZjZDI2ZmVjNTA3OGRiYyByZWxlYXNlMjYtbWFpbnQKKzc5NjY1IGM1NGRkM2VlZWQ1NmIzZjJjZWUwZWRhNDI2ZjNiZGRmMTc4NzExYjQgcHkzaworNzk2NjYgOGM4YmRjMTFlOWI5OTI5YzU1MTE3Y2I4ODkxY2Q1ZGRhMWVlMThiNyByZWxlYXNlMzEtbWFpbnQKKzc5NjY3IDFkNDg0YzRkYmY2MDRjZGJkNzFkOGQ3Y2Y0ZDA2MTllN2ZmYjQzN2EgcmVsZWFzZTI2LW1haW50Cis3OTY2OCA1MDc4MjIwYmQxZWE2MzIwYmMyNzlmZTE1OTdlOTcxZGYzODI5YzkwIHB5M2sKKzc5NjY5IDMzNGQ0NTYyYzg3NWE5MDIxNTc5ZDRlY2FlNTY3YjM5MDYxZjZkMTYgcmVsZWFzZTMxLW1haW50Cis3OTY3MCBjZjgwMzc3MTg0ZmZhYTY4NjQ0MzFlMzU0MGM5Y2ViNmIxZWFhMDMxIHB5M2sKKzc5NjcxIGMyYjIxN2ZlNGVkNDU0ODFlYjY5MmVjZWJhODkyMmJmZGRlOGI1MDYgcmVsZWFzZTMxLW1haW50Cis3OTY3MiBjMGI2Mjk5YjkzZWViZTg2NmJkZGJhODc3NGQyYmNmOGViZWZjYjcyIHJlbGVhc2UyNi1tYWludAorNzk2NzMgYjFjMDBjN2QzYzg1NWQ1MTcyNjQ3NmRmYTU2ZjA0YjI4NjhhNmYxZCBsZWdhY3ktdHJ1bmsKKzc5Njc0IDA1NDBhOTYyODY5ODhhNGRhYTczNDEyYjlkMzc3NzAxNjg3YmFmZDEgbGVnYWN5LXRydW5rCis3OTY3NSBjZjM0ZmMxZTg0MTNlMTdjOTdmYmU5ZDMwM2Q0NWIzOWYzNDhhY2MzIHJlbGVhc2UyNi1tYWludAorNzk2NzYgYjE5NDFjZmZmYTVjODUxNjFmYTIyMDMwYjllMDEyZDNkZjUwNDNhZiBweTNrCis3OTY3NyBkMzFlMjY5YWFjZGViZDA4MjQ5MzcwNTg1ZThiYmRjZjgzZWIyNWUwIHJlbGVhc2UzMS1tYWludAorNzk2NzggYTY2NTQ1ZGIzYjA2OThhOTkxNzc1NGI2YTNmYTVmZmE1NDAwMWMwMSBsZWdhY3ktdHJ1bmsKKzc5Njc5IGViMDQ5YzNjMDgzZmM4MjE0MzY0M2EwMmJmMjQxMjJlYjc3ODdkZDQgbGVnYWN5LXRydW5rCis3OTY4MCAyNzQ1MWE5Njc2NTAwZDA3NDY3Zjg3YjljYjJhOGE4ZmQ5ZDg3MzEyIHJlbGVhc2UyNi1tYWludAorNzk2ODEgNTNlZTM4ZTYzOGJmOTBlOTgzZThhZjkzMzZjYTdiNmI1NTRmMDdlZSBweTNrCis3OTY4MiAzYjFkMGEzYWRmZmZhZTc0OWRjZTI4OGExNzkyZWQ5N2VlZjhjYzhlIHJlbGVhc2UzMS1tYWludAorNzk2ODMgYmQ1MTIxYmY2OTk2ZDBjM2U5ZTE1Yjc3ZTE0MTJmNzE0MTA0ODMwNSBweTNrCis3OTY4NCBiYTQ4MmY0ODg3ZjdkNjgwMmMyZTgxNjcxN2YxOWIzNTA0ZTkwZjI2IHJlbGVhc2UzMS1tYWludAorNzk2ODUgYTU4NGYyNDMxODBkNTJhNmQ2YzIyYzEwM2U3MmRkNzczM2RhNzY3OSBsZWdhY3ktdHJ1bmsKKzc5Njg2IDdkMjcyNDg4YjYzYzlhNDJmMjM4ZWI3NzFkZDJmOTI2MzViNzUyMGMgcmVsZWFzZTI2LW1haW50Cis3OTY4NyA1ODBmMmY1YmE4NWYzNjUxODE2ODEzZWM3NzM2OThiMmI1YjdiYjY4IHJlbGVhc2UzMS1tYWludAorNzk2ODggOWIyNGFhMzZjMDZmODNlM2JiNDFmZDdmNTUzZGVkNmMzZjc0M2FiMSBweTNrCis3OTY4OSBkMTUyMzVkMjEzN2MxNDg1ODFkMjk2NDlmMmYyNzkyZDk0ZDk1YzA3IHB5M2sKKzc5NjkwIGVhMTBjYjYxMzkwYWVhMjBmYmQ5NjhjMDM1ZGM1MmYxNTA4ZTRkZTIgcmVsZWFzZTMxLW1haW50Cis3OTY5MSA0YTZlMjAxMzU0NzA2OGYwNzcwYjdiYzI2ODJiYmQwNjRiODBiN2M0IHJlbGVhc2UzMS1tYWludAorNzk2OTIgYzY2OTk1YmVmZTQyNDIxYjU2ZTkwYWYzNDdhNGVkNDE1OWM3NDliMCByZWxlYXNlMjYtbWFpbnQKKzc5NjkzIGI2MmE2ODIxMTdlMDBmMzg1MjkwYTVlNGRhY2I4NWVkZmVlYTQ5NTggbGVnYWN5LXRydW5rCis3OTY5NCAzNTI3ZDY1NzllYzI5MGZkOTBkOWI0ZmM0N2U2YTcyNzUxZmU0NWIyIHB5M2sKKzc5Njk1IGQ1YWJkOGRmZDRmNGJhYTBhYmZiYzhlNjJkZTk1MzE0ZDVhZjk3MTIgbGVnYWN5LXRydW5rCis3OTY5NiAwNmE0NmY5NTE5NGVmMTQxNTFjZWNjNjU2MWJkOWE2OTQ5M2NiY2Y1IHB5M2sKKzc5Njk3IDhhYjk2MGI2MTFhNmYxYjkxYmVjODhhYjMxYjkwZmZmMjg2MTI0MzIgbGVnYWN5LXRydW5rCis3OTY5OCAzOWVmZDNmYzU5ZWZhN2YwOGMwODlkZDIwNDE4NGZiNDI0MDUyYmY2IGxlZ2FjeS10cnVuaworNzk2OTkgODc2NjYzNzZkOGIwNTA0MjZhZWY5NTM1NDM1ODhjN2E4ZjQzZDRkYSBsZWdhY3ktdHJ1bmsKKzc5NzAwIDQwYmM4YjFjYTkzMjk4OWY3YTFmNzdiMmEyYjFmN2I1NzZiZGFmODkgcmVsZWFzZTI2LW1haW50Cis3OTcwMSAzYTBmNTI1YjU5YjU5NzQ4YzE0MDJmNDQzYTEwODI5MWZjMGYwZjk4IHB5M2sKKzc5NzAyIDg2YmYzOGVhMzEyMzZlM2JlYWUwOTA2OWE4NzVjYjgwMjA5OTljNzYgcmVsZWFzZTMxLW1haW50Cis3OTcwMyBhYTEyMWEzOWE5NTY3MGU0ODYyNmEwYTc3YmQ4NmRjYWE0N2E0MzExIHB5M2sKKzc5NzA0IGRhMzRkMWY0M2NiMDAwNWZmZjlkOGVkNzZhMWQxN2E0ZjU1NzE2MDMgbGVnYWN5LXRydW5rCis3OTcwNSA3ZWI5MDdjODU0YjQyYWQ5ZGJiYjE4MjU2YjhmNGE0ODg5ZmI0ZmQ0IHB5M2sKKzc5NzA2IGMyMWJjODBjODNmNjJmZGQxNjE5ZTAxMTdjNWNjMWI1MjZmNmRmZjMgbGVnYWN5LXRydW5rCis3OTcwNyBiMjYyNWFjYzI0ODRlNTBlYjYwMjM1YmRhNDVmZTlhODc1NGRhMDJiIGxlZ2FjeS10cnVuaworNzk3MDggMmU1NTljMGFkOGMzNDI4ZmYyNmMyZmYyZWVkNzI4MzUyNzFhNTg2ZiBweTNrCis3OTcwOSA2MTk5MGY3NjM0ODU5MzBlNzkzZWI5Y2ZjOWQ5ODcyNjg5MjNkNTllIHJlbGVhc2UyNi1tYWludAorNzk3MTAgZTE0NjEzMTI0Y2MxNDI4ODg0MDdlNzA5ZjZiMjMyMzRkZjAxY2Q3ZCBsZWdhY3ktdHJ1bmsKKzc5NzExIDY2MTU4ZTRmZDAyMjdlNDA1ZTZhMmI5ZmI1ZDhjZmQwNjk0MGNhZGMgbGVnYWN5LXRydW5rCis3OTcxMiBhMTg0MjI3Y2ZiOTQzYTBjMGQwMjUyMGFhYTA5YTg5NWJjZjdlMzM3IGxlZ2FjeS10cnVuaworNzk3MTMgYzczYTY1OGRhNmZhYzM0NDAzMmRjNDI4MmI0OTk4MzljNDQ2Nzk0YyBsZWdhY3ktdHJ1bmsKKzc5NzE0IGUyOWEyZTAzZTczOWU2NjY5ZWRjNmFhOWRjNjk1MWI0ZDdlY2ZhYzEgbGVnYWN5LXRydW5rCis3OTcxNSAzZjc4NjRjMWNmM2Y2MTU0M2Q0ZDE3YTc4NWMyNThmYzNjZGRlMjE2IHB5M2sKKzc5NzE2IDM0NWI2YWIzMmQ2NTRmNDY2NGU4MDI2YWQwNjRmMDM4ODg4MTk5MDMgbGVnYWN5LXRydW5rCis3OTcxNyA4MmMyMDM0YjgwOTVmODQ0MDM0OTFmOWVmY2EyZmJlMzYxYjAzMDcyIGxlZ2FjeS10cnVuaworNzk3MTggZWUzNDI1ZDFjNjg4Y2ZkODE1Y2M1NWM2NDNmOGY2MDNhMWZhMDJlNCBsZWdhY3ktdHJ1bmsKKzc5NzE5IDRkODRlM2ZhMzMzYTIxZjg5ZGY3NDc2MTFhZTQxMzgxMzRhOWY2ZTggbGVnYWN5LXRydW5rCis3OTcyMCA5YjUwMGEyYzg1OWQwNmZiNjcxNDNkYWIxMmJlOGY0OWUyNDQzYTUxIHB5M2sKKzc5NzIxIGM4Zjk1NTAwM2IyYzFjNWEzNzZiM2NlNzE5M2VjZTVlMzEyMWU2MDUgcHkzaworNzk3MjIgNmEyNGRlZmNjMDBiMmNiOTgwNWE4MmY3ZDc1M2QxNThkYTJhZTBjMiBsZWdhY3ktdHJ1bmsKKzc5NzIzIDk2NWVjNjM1NmQ1ZDg0NDQyMGRmMDQ2YjZmNjVmYWNjYTE3YzM1MmIgbGVnYWN5LXRydW5rCis3OTcyNCA4MWMyZjU5MmU4MDgxMGE4NDY2MWJmMmI4NjE5ZjMwMzI2MjJhMzkwIHB5M2sKKzc5NzI1IDNjNGMwYTcxNmExOGE0OGZkNTNmMGQ0MmE5MDM5OGViNDkzOGIzMTggbGVnYWN5LXRydW5rCis3OTcyNiAwY2ZhYmVkNDY2NjljZTlkMGE4NGE2MWFkNGIxYzk3OTFiODUyNzYwIHB5M2sKKzc5NzI4IGRhOTM5YWIyYmZlMjc3N2E4MDk0MWYzMDZjYTdjNTk4YzI3NzFlYzQgcHkzaworNzk3MjkgMzk5MjEwMjYzZTcxMGMwN2E4ZjFjMDE4Zjc0NWE5NzU3YjFlZTkwMiBweTNrCis3OTczMCBlYjQxNjc2NzIxNjNjOGUzMWUwNDEzZDIzODk2OWUwZDlhN2UzZDkwIGxlZ2FjeS10cnVuaworNzk3MzEgMGQ1NjdjZTVlY2U0YTQzMWRmZDFiNWI0ZmI4MjVhYjZhMjdjZTZjOCBweTNrCis3OTczMiAzOTVhMjdhNDRhOWU0MjQ2ZDhmY2JlNDc1NTU0ZDU0MTgxNzliMTU1IHJlbGVhc2UzMS1tYWludAorNzk3MzMgZDU4NjJkMTJkOTJhYjRkNDRlYTljMzBiNjA4ODhmYmZjMTE2NWNiZiBsZWdhY3ktdHJ1bmsKKzc5NzM0IGY5YzM2OGZlMWFjZjMwOGUzMjRhYmQ3MGI3Yzg3ODEyNGJjNzdmMTQgcmVsZWFzZTI2LW1haW50Cis3OTczNSA2Nzc3Y2ZhYjUxNTJlMmNkZmZlY2JmYzY5YmE5MmZmZTZkZGQ5MDRhIGxlZ2FjeS10cnVuaworNzk3MzYgOWVlOTdhNGFiMTVjMGM5YjdjYzk1MTQ1N2Y1NGYwNDVmOGEzZGVhNyByZWxlYXNlMjYtbWFpbnQKKzc5NzM3IDJkYTUxM2I0NzJjYmU1MGRlNGY2NDhiMzQzNjFmODE5MmI4MzIwYzUgcHkzaworNzk3MzggYThkZGUwMjVhNmY5OWYwMWYwYjc4YTFkZWZhZDFmZTU3OGIyNGNkZCByZWxlYXNlMzEtbWFpbnQKKzc5NzM5IDBkZWYyOGRiNzc5OTdlZWMzNDA0NzhlOWE4OWY0NjVhZDQxYzEwM2QgcHkzaworNzk3NDAgNDYwZjQxYmQwZTM0YWNlZTY0NWM0NDFiYjdiNTU4MGJlYWVhYWVjNyBsZWdhY3ktdHJ1bmsKKzc5NzQxIDU3MTVkZTJhNDA1MTA1MWUyYWUxODcyMjgxNzMxYmE3YjZkOGMxOTEgcmVsZWFzZTI2LW1haW50Cis3OTc0MiA1OGRjNGYzMTZmZjY0NmNkYzMxODZmNzZiYzA4NDVkMzMwNGJkOTk2IHB5M2sKKzc5NzQzIDgxZmUxZDQ1YWU3N2ZhNDJjOTMxMDQ1NGRlZWQ5NDJmZTljZDJlYTEgcmVsZWFzZTMxLW1haW50Cis3OTc0NCA1Y2E4ZTQxNTA0YjZmOTI3OWE2ZDVlNjRiMGQxYmYyMGNkNTkwMjBlIGxlZ2FjeS10cnVuaworNzk3NDUgYzM5OWU5M2JmMGU0NWRjMmI3MWFiMWY0OTM0NzBhMGEzNTg0NzVmYyBsZWdhY3ktdHJ1bmsKKzc5NzQ2IDcyNDA5YjIzMTk2NzMzYTM0M2Y3ZjY2NjMyZmI3OGMzMDhjNjBiNzAgcHkzaworNzk3NDcgYzFiODdlMTNlOWQzZmYxNWM0ZTFmYjUyMmYxNTAxN2ZjYjUyOWUyOSBweTNrLWNkZWNpbWFsCis3OTc1MCAxZTZmMjY4MDE2ZTQ3Mzk0YWUxYWI1YWIxNzk3MjQwMDY2NGQ1NDdiIGxlZ2FjeS10cnVuaworNzk3NTEgZWMxYTU0MTJmZjkwZGVhZTNlZGZlYjQxNGZlODFmMTJmMWQ5MzZjNiBsZWdhY3ktdHJ1bmsKKzc5NzUyIDdhYzNkODhlMzVjMjEwZmYyZTIxYWQzZDQzYmQwYmQyMTY0ZDg4ZWIgcHkzaworNzk3NTMgOGUwNjQxNzg1NTA3NDUzZjE2NGQxMjkxZDY5MTE1ZDUxMTc2ZmQyYSByZWxlYXNlMjYtbWFpbnQKKzc5NzU0IGRjNjM0MTFhMDEwNGViYTQyYmY2ZjI5YzRlY2NlMjY1ZmVhNThlY2YgcmVsZWFzZTMxLW1haW50Cis3OTc1NSA1ZGRhM2YzMmEyY2UyZGQwMWZiNmMzNjgxOTkxMTY1YmYwMDk5ZWUwIGxlZ2FjeS10cnVuaworNzk3NTYgOGFhMjk2ZmE2ZDZjNTNhMDc0YTNiMzAwYmRlMmQ1MGJmNmMwMDFhMSBsZWdhY3ktdHJ1bmsKKzc5NzU3IDQ1ZGQ5YmYzNjFlYzAzMTVmMTg5N2I3MzVkNGY3N2M1NTQ0ZTY0OGMgcHkzaworNzk3NTggOTMwN2RlZWVlNDEyYTIyM2YxNGY1ODMxMjgyNDBmZmM1MzgwNzViMiByZWxlYXNlMjYtbWFpbnQKKzc5NzU5IGY0MTZmMmMyYzA5OWU4NDc1MzdmNTg5M2Q4YWI3MjQwNWQwYWRhYTEgcmVsZWFzZTMxLW1haW50Cis3OTc2MCBiNmM2ZjQyY2RkZGU1ZGY0ZGVkYWY1YmRmYzBmNjBiZjI1ZWRkNGJkIGxlZ2FjeS10cnVuaworNzk3NjEgMDIyNWQyOWYwYmQ5OGUzMzUwMTNlMTZjMTQ1NjlkM2Q3OWVhNmY5MSBsZWdhY3ktdHJ1bmsKKzc5NzYyIGFjYzkwMGRjMTg0YmE5YjBjNjJmNTgyZjhmN2NlZGNhNzZlMjJlY2UgbGVnYWN5LXRydW5rCis3OTc2MyAwZWNlOThiODUzZDUxMDQxZDU5YmYwZmExMmMzZjFjYmE4MzhhZmY0IGxlZ2FjeS10cnVuaworNzk3NjQgYTY2MWM5NmI4ZDEwZWNmN2I4Yjk5ZDVkN2M5ZTY4Zjg4NmQ2ZmY1ZSBweTNrCis3OTc2NSBmYjJkNjRhNGQ4NzJjMzJjNTM3ZTc2YzU2ODkyNWVjMTc2ZDM0M2IxIHB5M2sKKzc5NzY2IGI2OWRjZjYzNTAyYzRkZjI0MmY5OTEzMmZlNmRkZTQ1NzgxMmU0M2UgcmVsZWFzZTI2LW1haW50Cis3OTc2NyBjMDRhNjIyMmNjN2RkNTlkZjI3NWIyYzkyNGI0Yjk3ZjdmOGRmZTNlIHJlbGVhc2UzMS1tYWludAorNzk3NjggYTkwM2JiMzVlZjRmNTM1NzUwZTA3MmI3OTBiOWVhZjRkZjhkYzY5OSBsZWdhY3ktdHJ1bmsKKzc5NzY5IGM1NGNmZTgyOGI4NGEzY2QwYTEwNWUxYWUwNzkzOTJiNDZiYWY0YWQgbGVnYWN5LXRydW5rCis3OTc3MCA4MDA0MzU3ZDViY2MwMzcyZTUyMTg2ZmJhMmVjYzRhMjljZTMyYmM2IHB5M2sKKzc5NzcxIDcxNzc5ZjRhMjA3ODI5NGI1OGRmMjc2Mzc2MThhZTJlNzI2YTQ5NmQgcHkzaworNzk3NzIgMzNhMDJlNGFjNGMyZjFlN2U5N2JkZTQ1MTA5NWE3NGUyYjBhMzJiNiByZWxlYXNlMjYtbWFpbnQKKzc5NzczIDg5M2M3NGQ1NDdlZTczODA2MmI2NmQ1ZTNiZjMyMzdkZWFhZWRlNzYgcHkzaworNzk3NzQgMWFiZjM3ZGIyNTdkOTg4ZGJmNjAzNjEwN2IxN2MwNTEzNDg4NWJiYyBsZWdhY3ktdHJ1bmsKKzc5Nzc1IDIzZGJjOGEzYjk3YTk5OTk2YTdmYjA2ODNkODc5NjVjOGQ0ZjBmYzYgcmVsZWFzZTI2LW1haW50Cis3OTc3NiA2MGNhODk4M2RkM2IxZTI1ZmYzNDMwNzhjMzZiMWIyYTliYWEzYTJiIHJlbGVhc2UzMS1tYWludAorNzk3NzcgNTM1MjIwNGM4ZTg4YzViZDFmZTdhOWFlMDE3NWFhNjVlYWJjZmQyYiBsZWdhY3ktdHJ1bmsKKzc5Nzc4IGU2ODE1ZTFiNzUwMmM2NDA5ZTRmZDdkMGVhZTAyMzcwMTFlNzQ3YTkgbGVnYWN5LXRydW5rCis3OTc3OSAxY2M0ZDJkYjVjZDZiZGIzYjQ2Y2ZiNGMwODQxZDAwMjExMTBmZGE2IGxlZ2FjeS10cnVuaworNzk3ODAgY2ZlNWZhMzRkYjQ2NjY0YzRmZTk4MzBiMTQ1ZGJkMzExYWRiYTcyNCBweTNrCis3OTc4MSBjNDBmYmZmZjZkN2FiYzg4ZDIwYTAxNmViMmNiMDNhMTU5NGM4MTAxIGxlZ2FjeS10cnVuaworNzk3ODIgN2Y2OTE4MWI2NTJjMGE5YmZiNTdmNmQ5NGYyZGY2MzIxNWE2OGVlZiByZWxlYXNlMjYtbWFpbnQKKzc5NzgzIDAyYmQyZjYwYmE1ZDhkNTJmMzY4MjIwNmZlMjI1YzRkNzRkNmVjYjIgcHkzaworNzk3ODQgMjczY2RhMmIwMDUzODEyYmFlZmQyMjM1YjJmZTg2YTVmZGYzODIzMCByZWxlYXNlMzEtbWFpbnQKKzc5Nzg1IGZkY2JlYjlmMzc0YzcxNWU2ZmZmMWM4M2JhYzRjZGFiMDU0NTY5NjkgcmVsZWFzZTMxLW1haW50Cis3OTc4NiA5N2U5NWM5ZDI2ZGFiZjIxNGY4YmM0ZDQ3ODMyMTlmZWY5YTVkNmZiIGxlZ2FjeS10cnVuaworNzk3ODcgZTRiZGMyOTZmYzhlNDI3YjA1NzI2M2M2YTdkOWViYjFmM2ZjOThlYSByZWxlYXNlMjYtbWFpbnQKKzc5Nzg4IGU5NGQ0NDZjNmQwZWY5MzljOTllMmE0YzhiMzlkZmE4YTQzYjlhNzUgbGVnYWN5LXRydW5rCis3OTc4OSA3MmMwZTE1YzAzYjI0YTIzM2FhZjRmN2FkMGRhZDllMTVkODE2YTEyIHJlbGVhc2UyNi1tYWludAorNzk3OTAgMjRjYjQxMTJiNzMxMTMwOWEyMDZlZTljYmRlNWQwZmMwNDk5M2ViYSBweTNrCis3OTc5MSAzMmE4YjUyMGQ3NjdkN2M5YzQ3NDFiOTlkZDViZjYzZmM2ZmE1MjllIHJlbGVhc2UzMS1tYWludAorNzk3OTIgMjhiODIzOTgzZmNlOWQ3MzliMGQxN2RiYTk0Zjg1ZGVhNGZkMDIwMSBsZWdhY3ktdHJ1bmsKKzc5NzkzIDZiZWU0M2VhN2MwMGUzYWFjMzMxYzYzZjE5YWU2MDViNjUyOTEwYWUgbGVnYWN5LXRydW5rCis3OTc5NCBmODdkMmIxYmE0MjkwYzMwMzgyMjk2NjI2YzBjZmQxOWMwMWU5OWE1IGxlZ2FjeS10cnVuaworNzk3OTUgYzJiMDkzZDY4MGNmMzIzMTM0YjQ5YTJkYWZlMTVjMzA2MGFhMTE3MSBsZWdhY3ktdHJ1bmsKKzc5Nzk2IDJkMGNlMzA3ODA5YjRkMDYzY2NkNDlhOTQyNzE1M2E2MWMxODhlNTcgcmVsZWFzZTI2LW1haW50Cis3OTc5NyAxMWRlMmMyOGQxYTA5MTA2NTc3NmRjZWMxZWZlZGNhZGE2YTQ2MDg2IGxlZ2FjeS10cnVuaworNzk3OTggNzA4OGQxODM0Nzc4NGYyOTA4NjFmMmE5ZmUxZTYwZWI2ODhlZGMzZCByZWxlYXNlMjYtbWFpbnQKKzc5Nzk5IDllYzU5OGI0N2RhNGRiYzcwZTljODFiNzJmZjUwOGE2NjFmMWM1NzUgcHkzaworNzk4MDAgYTdiNTNhZDdhZDk3MjZjZTI1NjU5MzdlZTIxZjQxYWRhOWNhMGRlOCByZWxlYXNlMzEtbWFpbnQKKzc5ODAxIDBhNTNjMjU0YTE5MzdkYzA3YTJkZmI3ZTY1MGU3NWJlMWRhMzFmZjggbGVnYWN5LXRydW5rCis3OTgwMiBlNzdiMmZmMjRkZGIxNGY5NTg2YWY3YjY2Njk5MWUyMzI3MzhkZGEyIHJlbGVhc2UyNi1tYWludAorNzk4MDMgN2YyZDdiZmIwNTY3MDZjZjM3ODEyZjk5MThhYzI0Y2NmNmU5MTJkMyBsZWdhY3ktdHJ1bmsKKzc5ODA0IGFjZTcxMTU1MGI1OTdlY2FmYWYyNzFhOTNlMjQ5ODNjNzA0OTM1MzAgbGVnYWN5LXRydW5rCis3OTgwNSA5ZGU1NjMwZmM2MWJhMDA5YzgxYjUxYjFmYjVhOTg5ODJjMzg3ZTE1IHB5M2sKKzc5ODA2IDhmNDVkMzdjNTVhMTQyYmY2M2YzZTFjYjVjMjJmZjQzNTdkOTY1MTAgcmVsZWFzZTI2LW1haW50Cis3OTgwNyA1ODZlMWNlOWYyNDNjODRhNWY1YjM3MWRjNzgyOGI2ZGUxMDYyZDgyIHJlbGVhc2UzMS1tYWludAorNzk4MDggM2M5ZjA4ODdlZTNmOWFlYTlmYjUyMjA1YmY5ZjA3NDhlNTI0NjljNyBsZWdhY3ktdHJ1bmsKKzc5ODA5IDVkYWE3NGJjZjZhMTU5MDkyYWRhMTA0ZDYwNTEyZjlmNWE1N2U1MmYgbGVnYWN5LXRydW5rCis3OTgxMCAzY2U2NmM2OTIyYWJhZGJhM2Q4OWVjNDExNTg2YzNlY2VjMGQ0ZWViIHB5M2sKKzc5ODExIDlmZDg4NTJlY2RkNGMyMDJlOTExOTA5ZWMxZWUxZmNhZDRlMzhjOTIgbGVnYWN5LXRydW5rCis3OTgxMiA2NjQxNzM5ODRmMmQzYTIxZmFhNGM5NzY4YmUwNjMyNzQ2NTFlMTdlIGxlZ2FjeS10cnVuaworNzk4MTMgOWU1ZTlkOGZhODQ3NGZkMWI1ZmI5YmEwMDFkMDYxNmNjMDc3OGE4YiBweTNrCis3OTgxNCAyNWMyODUyYmZkMTViNTQyOTEyZTE3NTkyZWVhMjAyMGZiZmMxNmY5IHB5M2sKKzc5ODE1IDFhZGNmNGE0Njg1NjA2ZTViZmI1YTI2Y2UzOGM1NGQ1MGE2YTliNjcgcHkzay1qaXQKKzc5ODE2IGM1YmU1MzdiNWJhOTA5ZDk5NWJmNDAxZTEzNTQxZjY5ZTI4ZDUzOWMgcHkzay1qaXQKKzc5ODE3IDkyMjA3OWY3MjRhNjIwYzIzYTkwNDJmMzRlN2RmZDJhZGYyYzMyZTcgbGVnYWN5LXRydW5rCis3OTgxOCA5NDI2MmQwZTA2NGE1ZWE4OGYzMzdmNTBlMGNmOTJlZDJmYzkwM2Q5IGxlZ2FjeS10cnVuaworNzk4MTkgZWVlYTc4ZGY4YTNjNzJmNDczNjdhOTQwNmY1MWMwOTZkNjAxMDAwOSBweTNrCis3OTgyMCA5NjAwNjI1YzE1YWZhOWMwYTQyMGI4ODExNDcyMWI0YmEyOWExZTllIGxlZ2FjeS10cnVuaworNzk4MjEgYzEwMDI0YWJkMTE4ZmZjYWZjYzdkZGZlMjY4ZjE3N2JkMTgyMDc1YyByZWxlYXNlMzEtbWFpbnQKKzc5ODIyIDJmZmIyMjRjNjFmNmM3ZDBiYjJiODZjZjQ1MjBmZjJiYjViMTEwZmMgbGVnYWN5LXRydW5rCis3OTgyMyAyNmM2ZGUxOGNkMzBiNWRiMGM0Nzk1NjI4ZjJiMzNkMDczZWVhOTAxIHB5M2sKKzc5ODI0IDM2N2FjNDhiZjA4NWE1YTNiM2JhMWIzY2MxNmE5M2I3YTNlY2FlNDUgcmVsZWFzZTI2LW1haW50Cis3OTgyNSBhMGMwODNlMWQzMWZkZDJmOTNkM2E0NmJmYTQ3NThlNDViZjFkMzk2IHJlbGVhc2UzMS1tYWludAorNzk4MjYgOTViZjk3ZGNjNTkxOTI2MDIzODRmZjlkOWZkMzJiYjlhZGE1NTM5NCBsZWdhY3ktdHJ1bmsKKzc5ODI3IDcyNzQ2MWQ2NmQxMDIyNGRjNzkwZjMwMzkxMjEzZjZkMzQ5OTYxOWUgcmVsZWFzZTI2LW1haW50Cis3OTgyOCA3ZDg5ZDBkYWU5OGU1NTcxOGViYjRhNDYxMTMwZDA0YTZlZWMyY2M3IGxlZ2FjeS10cnVuaworNzk4MjkgYTY1YTk0YjAwOTAyZWMyMmNiZWY4YWNjOGEyMTQ3YjVjYTBlNjdlNiBweTNrCis3OTgzMCAzNzc1YTRmZDExYzJhNzNjZmExOWMwNmY1MWE5MzRiYjIxNmY2YjE5IHJlbGVhc2UyNi1tYWludAorNzk4MzEgZDQ4ODAxYjg2MzgwMWY3MGZmNTVkMGE4ZGVkOWUwN2QyOGUxOTEzMyBweTNrCis3OTgzMiAyYjkzZTMxNjU5NjFlMWE5MjMwZGMzYWRkOTRhMWE1MTJjMzk5YmY0IHJlbGVhc2UzMS1tYWludAorNzk4MzMgNTc2YjBlODczNmM3ZmVhNzRhN2ZjYzM2YmRjMzE2YjkzMzlhZDlkMCBsZWdhY3ktdHJ1bmsKKzc5ODM0IGYxZWEwM2UzN2ZmNmVjYjdmMTI0MDExZDQ3Yzg0NjdmZjY5NTBlZjUgcmVsZWFzZTI2LW1haW50Cis3OTgzNSA3Yzc2YTdiNDExNjAzNWM5NmM5Y2NlYjNjNWRlMjQxNjBmNjg2ODQ0IHB5M2sKKzc5ODM2IDZmZWI1YWRkNzYyYWM2ZTE5NTE0YTFiNGI2MThhYmExMDZiYzQ0MDkgcmVsZWFzZTMxLW1haW50Cis3OTgzNyBiNjZmYzg4ZmE5NmQxYmI3NjYyMzgzYTI0YzlmYzY2NDg5OGU4YjNjIGxlZ2FjeS10cnVuaworNzk4MzggNjRmZGY2NmY2OWIwYjc4YjU0YzJhYjJkZmRjMzMzYjMxNmI3MGI2OSByZWxlYXNlMzEtbWFpbnQKKzc5ODM5IDc3NzRkNjBhODlhOTI4ZTVjNjExYzk3ZDBmMTcwOGNkZTVmNTFjYTMgcHkzaworNzk4NDAgNjk2Y2I1NDk2YTBiODZkMmRjOTAyZmE3MTA0ZGFkOTdiODNlYzZlMiByZWxlYXNlMzEtbWFpbnQKKzc5ODQxIGM2NzMzOWUzNzFhOWIyNWQxZDM5M2IzNTFiZGY0NGYxNDhhMDUxMjcgcHkzaworNzk4NDMgYzhjZmIxZDA3NDI5Y2ExMTFhMjkzYmY1MjJjNTRkZWZiYzk0NTY2YiBsZWdhY3ktdHJ1bmsKKzc5ODQ0IGI4ODg0MmY2NTM0ZGU0OGUxNmMxM2VhMWNiMDE2NjlmZjgxNDU5ZGIgbGVnYWN5LXRydW5rCis3OTg0NSBiNjEwOGY3MjBmNjk4MzNhMzRjYjY4OWJmYWJmMTJjMThiMGE3Y2E3IHB5M2sKKzc5ODQ2IGYxOTRhM2NlZWZhYWMwMGQxZDIxZTcxOTEwNDViOGVhMDYyN2NlNjYgcmVsZWFzZTI2LW1haW50Cis3OTg0NyAyZjI4ODMyZGMzNmMzYjAxYTg3Y2UyMjZhODY2MTYzNmM4ZjI0YjQxIHJlbGVhc2UzMS1tYWludAorNzk4NDggYTczZDYwNDUxYjQ5MGM2YTFhNzJmZmIxYmU3NGZlYjJmOWFhMmE1OCBsZWdhY3ktdHJ1bmsKKzc5ODQ5IDIwYTU5YmFkYWZhMWMyMjE0Y2E2Y2I5YmVhYWE4YWUwMjBkYjRlZDggcHkzaworNzk4NTAgM2NlNGFhYzIwOTM1Nzc2MDM1ZjA3YTMyMmFjNWU4NGQ4NzA2NDgwOCByZWxlYXNlMjYtbWFpbnQKKzc5ODUxIGQ1MWEyYzdjYzgxMWExMmE4NTI0ZTMxNDY1MGE0YjE4ZDk2MGNjYzYgcmVsZWFzZTMxLW1haW50Cis3OTg1MiA1YjBmMWQ1YmQ1NWE5N2MwMDZiZWQxMzAxNTQ3N2RlY2IyNTkwYjM2IGxlZ2FjeS10cnVuaworNzk4NTMgYmJjYzU0YWNiZDhhMmQ5MDU0YTdjYjc3MTkwY2VhNWMzNWExMDUyZSBweTNrCis3OTg1NCAzMzI3ZGYzMmMxMTdjYWMyYjFmMjU1NTE0YjVmNTg1YjAzMzQ2Nzk2IHJlbGVhc2UyNi1tYWludAorNzk4NTUgNjNhZjQ5NmIxNDkzOTQ3M2ZlNjY3MGQxYTMyZGRlZTgwNDY1ZDliYSByZWxlYXNlMzEtbWFpbnQKKzc5ODU2IGY0ZWM0MDczYmQyZTU5NjgwZDFlNTU5NjZmMGMzMDRhNzRkZDUxOWYgbGVnYWN5LXRydW5rCis3OTg1NyBjZTk3OWI2NGIyM2E3OTBiYTQxNmUyNjQ1MjJhYTM5NjVkZDIwZWM4IHB5M2sKKzc5ODU4IGEzMWY4MGQ1ZDFhMTZlYmY0ZDc3MTg1NDIxY2EwMzNjNzcxZTM2MzAgbGVnYWN5LXRydW5rCis3OTg1OSAwMWMxYWEzYTQ5YTdjZDFmNTVmNDJjN2U2MGE1ZjcyYjZhZWRjNWMxIHJlbGVhc2UyNi1tYWludAorNzk4NjAgNTY5Yjg1OWFkZTIwNzczMDJlNmQ1OWJmZWIwMWJlOGUwY2ZhYjQ2NiBweTNrCis3OTg2MSA4MjczZjg5OTRhODg4MGFmM2E4NzFiNGYzMmRmMzdhOGZhNWI4YWNkIHJlbGVhc2UzMS1tYWludAorNzk4NjIgOWM0OGFiNzI4Y2UwZDRmMzE1N2I4ZGE5YWQxMjg3NmFmMjExMGU1OCBsZWdhY3ktdHJ1bmsKKzc5ODYzIDJiNGZjZmMzNWYxMjIzZTBhNTYzNGEwNTIyMWVjMDhlMWYyNTY1MmYgcHkzay1qaXQKKzc5ODY0IDcxMjk3MGIwMTlmNzBjYjIxMWM3MDM5OWRkMTBmNWUwNzcxMzAwYTQgcHkzaworNzk4NjUgNmMxYWRlOWVhMWU0NDU0ZDZmM2ExNjIzYWQ5NDc5NjgzYjhlYTY4NCBweTNrLWppdAorNzk4NjYgOWJhOGM2ZTUyZmEwZGRmYjdmNDNhYjJmODAwM2RjMjM5MTEwM2Y0NiBsZWdhY3ktdHJ1bmsKKzc5ODY3IGJlMDQ0YjhjMzQzYTM1ZjU5MzU2MTgzNjU5MzI4MmI4ZDFhMzk3YTkgbGVnYWN5LXRydW5rCis3OTg2OCBiYTVlYzc1NjA5MzMzN2UzMTE0NGJiMjFjMWFjZjZjMDZlZjE1M2UxIHB5M2sKKzc5ODY5IGVlYzJkYjA5YTZjMTIzOTFmM2IyNWUyOTk1NDRhNDdjNTA3NGRjNjAgcmVsZWFzZTI2LW1haW50Cis3OTg3MCA4MWQ5MGNlZWUzYmRmYTdmZDVjNmQyMTU5OGI3ZWU4NTljMzE4NzRmIHJlbGVhc2UzMS1tYWludAorNzk4NzEgODkyZGIxOGM3ODE1NDgyMGI0MWYwMGRiMGNkNDA1NTQ2NjliZWY0NiBsZWdhY3ktdHJ1bmsKKzc5ODcyIDFhNmYzZDM2YmJkOTYxYjA0NjQ5NjcxM2Y3ZTU2OTBhYTg4OGE1NDYgcmVsZWFzZTI2LW1haW50Cis3OTg3MyA4MmFmMTEzZTAyMGI5N2FmNzc0NTBkODFiOTg1NGE2Nzc0NjU1NzcxIHB5M2sKKzc5ODc0IGUzY2Y5NzdlMmU2NDY3ZTU5ZGVlMjE3Yzc1OWUwYjc5YTI1YTc3MzIgcmVsZWFzZTMxLW1haW50Cis3OTg3NSA4ZDhmN2UwODJlZjZhODRjZTEyMDQwODcwN2E4YzY3NjRlNGQwODliIGxlZ2FjeS10cnVuaworNzk4NzYgOWNlNTMxNjFjM2E5ZGRkYWYyMzIwYmY0YTVjN2NhOTNkYTkxYTg5NSBsZWdhY3ktdHJ1bmsKKzc5ODc3IGZiNmNkOGFkOGY2OWU2YjBhMDFmNmUxM2U3NTk4NGZhNmJiNmU0N2UgbGVnYWN5LXRydW5rCis3OTg3OCBjMDk1N2RhZGE1YzI3ZGY2MmY0M2ZiZThhMDc0OWQ3YTdmMmVlNGQwIGxlZ2FjeS10cnVuaworNzk4NzkgZDc5NTk5YjIxZTgxMTVjZjk2N2EzMmU5MzYxZTBmYmQ2ZDBjZDJlZiBsZWdhY3ktdHJ1bmsKKzc5ODgwIGM5ZTRlMTJlOWNiNmUwNmQ1NzNkOWU3NmU0ODk1MjJhNmQwNjg4MDQgbGVnYWN5LXRydW5rCis3OTg4MSBmMzY5ZGIwZDU4NDU2NTk0MjU3YzMzMDM4MDEyNDY3YWJlN2EwYTgwIHB5M2sKKzc5ODgyIDEwZjFlNjNiMmIzNzQ4MzgxMGM1NDE5NjljOTFhOTcwZjU1MjU1NGMgcHkzaworNzk4ODMgYjYxOWFiY2UwMjY5Nzc2YjFhMzJkMDZmNmNlOTdiNTRmMDc2YjkyYiByZWxlYXNlMjYtbWFpbnQKKzc5ODg0IDg1ZWQ3NDBiZTMyM2Q3MWZiYzkwZjFlZWU4YzMxMzJlYjc5Njk0NGMgcHkzaworNzk4ODUgZDBhNzRiNjUwNWQzYzdkZTUwOTlhNjk1MjU1NDhlYjNiMGIxNzE4YSBsZWdhY3ktdHJ1bmsKKzc5ODg2IDFjOWJlZmRlODM4NWU4Mzc4MWQ3NTdlMjM1ZDJhNWE1MmNkMzk0NGYgcHkzaworNzk4ODcgN2U1NWIyMWM2NjU4YjVlM2EwODQ0MTYxYTZlYzBjYmEzZWMyZWVjOCByZWxlYXNlMjYtbWFpbnQKKzc5ODg4IGRkYjczMjQzOTY3YmIyYWM0OGM4Zjg3ZTJmMTA3ZjAwNGU1ODMwMmUgbGVnYWN5LXRydW5rCis3OTg4OSBlOGFhOWE3ZGFmMDMyODVhMjY4M2M5YmM5NjkyNjEyOGMxNzY3ZGVmIHJlbGVhc2UzMS1tYWludAorNzk4OTAgMjBkYWQyMDA1OGU0Mjk3ODU5MGFiN2FlNTgzY2UwZDUwZDllZTNhYyBsZWdhY3ktdHJ1bmsKKzc5ODkxIGE4ZTkwY2VjYzY5ZTE1ODI3YTljNTM4NjU2Y2Y5NmQ3NjFjMDY5NDEgcmVsZWFzZTMxLW1haW50Cis3OTg5MiBjMzFjNDNkNmFkNzkyOTg5ZTFkM2M5M2EzMTg1YzAzYWZmNzdmYjY1IGxlZ2FjeS10cnVuaworNzk4OTQgN2IwMDQ1NGJiZmUwYTYxNjBiOTZhODBlZTA0Mjk0ZmNiYjMwZDlkMCBsZWdhY3ktdHJ1bmsKKzc5ODk1IDI1YzNiM2FiZjNlN2M4YjUzZDk1ODBhMzhjOTc3NTliNzJkYWYwZDcgbGVnYWN5LXRydW5rCis3OTg5NiBjYjBiODQwMGU3YzRmOWNjNTk2M2RlZGY2N2VhNjA0NDU1M2JkN2YwIGxlZ2FjeS10cnVuaworNzk4OTcgMzhiMjQyNGY4NWU4YWMwZDgzZDMwOTFkY2ZiYzY5ZDVkZWUyZTgwNSByZWxlYXNlMjYtbWFpbnQKKzc5ODk4IGEzOWJmMzhmMmUwYzE3NzU4NjkzNmYyYWViYjUzNzc1YmZhODZhY2QgbGVnYWN5LXRydW5rCis3OTg5OSAyZThkMmQ3YzQzYzBiNThlY2ZiODY4ZGMzNzQzNWJjN2VkMjUxOTNlIGxlZ2FjeS10cnVuaworNzk5MDAgNzNlNWUzZWFkZDg5M2UwMDk4NWZmOGNiMDc5MThiOTdmNjUwYTcxNiBsZWdhY3ktdHJ1bmsKKzc5OTAxIGFjMDc4YThjM2UxYWYwOWQzZWVhZGNjOTFmNDAwOGNjY2UzNDQ2MTIgcHkzaworNzk5MDIgNzY2MGM1M2Q1NzE5ZmU3MzRlZTNmOWUzMTU5NTE3YjNjMTUxZDAyMiBsZWdhY3ktdHJ1bmsKKzc5OTAzIDgyMjdiNjRlOGQ3ODhlMjJkOGNhYjE4YTE4OGY0MWQ0ZjI2ZDJhOWEgbGVnYWN5LXRydW5rCis3OTkwNCBiODk5ODEyOGRlMDhiNTRmMTZjNTk3MTZiMDllNGM5Nzc2YzYyODFlIHB5M2stY2RlY2ltYWwKKzc5OTA1IGUyNDQ0ZjI4NzliNDM1Yjc4N2IzMDQ4NDYwZTc0NDJmMmZlNzdiNGQgcHkzay1jZGVjaW1hbAorNzk5MDYgOGU1YzcxYzc2ZThmYTEyZjI5MmVhYmE4YzQ5YmQ4NmRlYThjZTk3ZiBweTNrCis3OTkwNyA2ZjE5NTlmNjZkNjkwYTM3MzFjMWE4N2JjYzhhNjMxNDAxOTU4YWFjIGxlZ2FjeS10cnVuaworNzk5MDggMjRjZTRhMDA4OWJlMzI5YzFjZjk5ZjUzYmI1Y2QzMGNhYzM3MDI3MiBsZWdhY3ktdHJ1bmsKKzc5OTA5IDdjYmZmMGIxZWI1ZDE4N2E2MmIyMjI1ZGIzNDhjYjZiZDQ5YjczNDEgcHkzay1jZGVjaW1hbAorNzk5MTAgYTE2MjhiZDk3YmI2ODU0ZjkzNWE0MmJmODJkMmY5MzYyNDFmYTczNCBsZWdhY3ktdHJ1bmsKKzc5OTEyIGE3OTJiOWNiMGQ3YWFiYTFkZGUwMDE0NzNkZTY5YWJjOWQxZTQyNzkgcHkzaworNzk5MTMgMjRkN2Y1NTQwMGQzYTFhYjk0ODA4ZmY4NTRmYTU5ZTFlOWVjOWE3YSByZWxlYXNlMjYtbWFpbnQKKzc5OTE0IDgzN2YzYmIxNTc1ZmI4OGZjZDE5OGU0N2E1NjBlZTE1NzM3ZGExNGQgcmVsZWFzZTMxLW1haW50Cis3OTkxNSA0OTkxOWIzMWZmMjAwNzY2Y2YyOTZhMDU4ZTg3ODExMjI4Nzg2N2Y3IGxlZ2FjeS10cnVuaworNzk5MTggMzVhOWRhMDM5NjYzMDMxZTBlZTI1N2NhMTFjOWY3OWFkODc0ZjJjNiBsZWdhY3ktdHJ1bmsKKzc5OTE5IGE1ZWQwMzc3M2U0ZGViNzVjZWM3YWQ1ZDljNzdlMjk2ZTcwNTNjNzggcmVsZWFzZTI2LW1haW50Cis3OTkyMCBhNWI3ZGNiOWFmOGZhMjg1N2QyOWQ3N2U2OWFhZGQyMzZjOWRjYjhmIGxlZ2FjeS10cnVuaworNzk5MjEgM2VjMTkzMWZkMjU2NGI1OTg4NGNiN2VmNWJiOTY0ZDE1NzRmYzk4YSByZWxlYXNlMzEtbWFpbnQKKzc5OTIyIDQ2NGY2Njk2MjBmYWQ2NTE3NTI4MzRlM2FlNWFkM2I3MzFlNDJmODYgcHkzaworNzk5MjMgNWUwMzhmZDJjMTQzMjg1ZmI0OGY4YmRmYjdhZDg1OWZjZTA2YWJkMSBsZWdhY3ktdHJ1bmsKKzc5OTI0IGMwMGIwNzE4ZmQ1MzNhNzIwZTkxYjYwYjUxNzYwNjBlYmM2N2NhNDcgbGVnYWN5LXRydW5rCis3OTkyNSA3YTRkMDI2YjYzOTAwMjQzNGY1YmY5OTU1NmM2N2Q4MzI5MDNhNGE2IGxlZ2FjeS10cnVuaworNzk5MjYgZWQyNjE2MzA3MGY1OGMxZWU4N2M0MzQxZmM3YmE1ZDdkZWJlZTA4ZSBsZWdhY3ktdHJ1bmsKKzc5OTI3IDNhZTcwNzhkNDI3OGIyZTdlNWRiODdjZmQ0OTBjYmRhNmQ4ODEyMzEgbGVnYWN5LXRydW5rCis3OTkyOCA2MTU1MGExMzAyYjA3YTczMTQzNmE4NGIyZDg2ZWIyYmFiM2IyZmIwIGxlZ2FjeS10cnVuaworNzk5MjkgNGNjMTc1OGRjZGY3OGMyNzJmNjk5ZDFlZTQ5MjZlYWY1MjM2OGY2ZiBsZWdhY3ktdHJ1bmsKKzc5OTMwIDJiYWYxY2VlNzFmMmI2NzA4NGFiY2UxNzVkNjZmMDVkOTVmOWRhMDUgbGVnYWN5LXRydW5rCis3OTkzMSA4MDU1MTIzMjljNzUzNGM0MzRmYWUwM2EwODc3NmRhNWY0ZTA2ODM4IHB5M2sKKzc5OTMyIDU1ZmQ0ZTk4N2IyMGUwNzBiMmEyMjlkZjliMDJmMDU4MWFhYmViYjkgbGVnYWN5LXRydW5rCis3OTkzMyA4YzZlNGI3YWQxNThiZWEyOTg3NzI3ZGViYjlkYTFlZTJiNzg3ZjY5IHB5M2sKKzc5OTM0IDA1OTJlNzg0MTc3Nzc0Zjk5OWZiZGFhY2YxYjQxZjRkNjhkMTNjMTMgbGVnYWN5LXRydW5rCis3OTkzNSA5N2I1ODhlZTYyZjBmYjQ2M2Q2NWZiZWRkMTU3ZmYyZDk1NmU3OTcwIGxlZ2FjeS10cnVuaworNzk5MzYgZjM0Y2I1MDFmOGY3ZTMyNjM0Yzc5MzE0MWZhZGFjNGE4MGE1N2FjNyBsZWdhY3ktdHJ1bmsKKzc5OTM3IDU3MGQ5YWM4NGQ3NzdhOTk0ZGZlMWRmZWUwOGNiOTE1ZDk5YjY3N2MgbGVnYWN5LXRydW5rCis3OTkzOCA3MzAxZGE0OTFkNWJiNWI0NmJjODUwOGQ5YTNhY2YxYWZhMWExNDc1IGxlZ2FjeS10cnVuaworNzk5MzkgMzQ4MDljZmQ4NjAxNjg1MmViOTllYzY3ODMzMDVhMTdhMDg1ZWY5ZiBsZWdhY3ktdHJ1bmsKKzc5OTQwIDVmODc4MmFhMGY4YzI4YTM0YmM3YjAwOThhZDZhZWI5MDMyNGYzNDYgcmVsZWFzZTI2LW1haW50Cis3OTk0MSA0NDE2ODIyNGFjNjEwODA3YWFlMjg4MzZlODRjZDRiZWZlMWZhZTRlIGxlZ2FjeS10cnVuaworNzk5NDIgOGY4OWVmOTA5MDA5YjUxYTU0Njg1MzAxZGRhNTdjYTQ2YjAxM2U1YiBsZWdhY3ktdHJ1bmsKKzc5OTQzIGQwMDdmNWU1ZTFmMDE5YTI4MDFjMTU2MjFmMzZmZDA5N2RjNjdlMWEgbGVnYWN5LXRydW5rCis3OTk0NCBjZjdjOWJhMmRlNmU5NDM0YmQ1YzY5NGJhYjQ3ZjAzNzI3M2MwMTQ0IGxlZ2FjeS10cnVuaworNzk5NDUgNGZlYzJlNWUzMzk4YWNiZDk0NDg3YzljMTM3Y2Q3MDQyZmU4ZDk1YiBsZWdhY3ktdHJ1bmsKKzc5OTQ2IGUwZTM1NWFlOTliMjYyNmVjNjAzOTI4NWZhMmFkNGZhNDdiODZkMGEgcHkzaworNzk5NDcgMDA2MWU5ZTMyOWMwNTZhMDAzNDdkZWQ5YmYzNDJjNmU4Nzg4MWE1NyBsZWdhY3ktdHJ1bmsKKzc5OTQ4IDc5MTIzNjZiNDhkOGIwNmQxN2Y4YzQ1YzQ5M2I4MDdjNzRiNjY1ZDMgcHkzaworNzk5NDkgOTkyNmUxMmJmNDg1MDY0ZDFlYmFjODQ1ZjliNjczNzczN2U1NGJjMyBsZWdhY3ktdHJ1bmsKKzc5OTUwIGUxNTkzZTFlNjUyZWVjODdiNTU0NTQzYTYxNmMzYmE3Y2U1NWYxZTkgcmVsZWFzZTI2LW1haW50Cis3OTk1MSA2OWMzNzIwM2ZmYzFkNzkwNjE3NThjODFjZjJiYjQwMThhYTUyZDU2IGxlZ2FjeS10cnVuaworNzk5NTIgZjI0NGZlZTk4OWE5ODFjZWJkMGFkZGRhMjFjMzUwYjE3ZWZiOTc2YSBsZWdhY3ktdHJ1bmsKKzc5OTUzIDg0YWFkNjcwNDYwZTUwNzc5ZGUyMTA5NzRkMjg2M2ViNjQ5NjE2NzggcHkzaworNzk5NTQgOTAyODAzM2U2ZmNjM2Q0ODI3MTBjMzE1MDIxYTBjMTczNDdhNmU5MyBsZWdhY3ktdHJ1bmsKKzc5OTU1IGY0NzA1NzYzNzg3YjU4OWQwY2ViZjY5MGFiM2EzNWE4ZjFkZjY4MzIgcHkzaworNzk5NTYgYTY1ZjkxYmJjMmZiMjk1YjlhZjA5ZGVlMDQ3OTg3ZGJkNDliN2IxNyBweTNrCis3OTk1NyAzMGM4MDAyMjg3NGU3YzkwNTRlNDMwMTAxZjFhZGI3Y2JlMTM4MzYyIHB5M2sKKzc5OTU4IDY2YWQyNjdhNzNiZjYyYTBjOTFhNDc2NzMxMDk1OGFiNTUxMzY5OGQgcHkzaworNzk5NTkgZDM5OTU1MjE2YzA3YTJjZmQ5ZWY0MmFjZTc0ZWM5MTM4NWMzYWQ0YSByZWxlYXNlMjYtbWFpbnQKKzc5OTYwIGMyZTFkZTNmMTFmYzFiMjc2YWJkMjI1NzU0OTE4MzUzM2FhNzgzMGMgcHkzaworNzk5NjEgMDI3ZDU3NWM2ODljMTAyMDliNDJmYWEwYmI3YTIxYTJlYjI1MjA5MyByZWxlYXNlMzEtbWFpbnQKKzc5OTYyIGI0YTE1NWU0ZDMxMjkyZGMwYTI4ZWYxOGRhODQyMTM5ZGNiNWI5NjIgbGVnYWN5LXRydW5rCis3OTk2MyA4ZWQ5OTZkYzBlNTIwOWJhYTZjZTU2ZGIxODM5MDg2ZDAwYWVhNWVlIGxlZ2FjeS10cnVuaworNzk5NjQgOWY5Y2IxYzU3ZjJhN2RjZDM3MWJhODczMmI3YmQzZWFkZjA4YzU1ZCBweTNrCis3OTk2NSBjNDE0Nzg0NzNlYWVhZTUyZmQ4ZTk0NjRhNzQxNGEyZDJkZmU0YjFkIHB5M2sKKzc5OTY2IGE4NGRkZDhkZTlkMWRiYTAyYjNiMWM5MzQ1Yzc3MjE5NmU0OThlMDYgcHkzaworNzk5NjcgZGQ0M2UwYzkzMTc1Y2E2NGIxZWJiMGRhZDcwMDEwNjkyYzg5NmUxMSBweTNrCis3OTk2OCA0YWQ5NTJhNmFmOTU3MWQxNDdkMGFkYzBlNmYzMTY4NmFmNTg2Y2I1IHB5M2sKKzc5OTY5IGI0ZjYwZGYzMWIxNDEyZWVmMzYxNDllZTRkYzU2YmY3NmY4ZDEyOWIgcHkzaworNzk5NzAgZTM1MTU3OTEzN2YzZTQyNGMwYjcwYTgxM2Y1ZDRlYTJkODEzZGIzZSBweTNrCis3OTk3MSBmZDNjYWVhOTJjZDlmOTFlYzhkYmE0N2E0ZjcwMTdhYzg1YzkyMDYwIHB5M2sKKzc5OTcyIGNiNmYyYzg5ZjQzNzJjYzM2NmQzNmQ3NjgxNjkyZTJhZTc4OGU3NjcgcHkzaworNzk5NzMgMDkzZTJiNzE1NjQ1NzQ5MTkxNzdkZGE4ZDk4ZjVlMWY5YTUyZjkxMSBweTNrCis3OTk3NCBkNjU0Mzc0OTI0MjYxOTcwODIyNDk4NDVmZjhmMTM5MTBiZDg4ODMwIHB5M2sKKzc5OTc1IGY1YzRmYzBkMzM3MzM2ZGMzNmE1NDJkZmUxMTQ3Nzc2OGExZTRlMDAgcHkzaworNzk5NzYgMWE2MmJlZWQ4ZDE1ZWY4ZGFlZjQ1OWZmODcxNWUxMjZkN2RiMGUyMiBweTNrCis3OTk3NyAzYjY4OGRhMThmNTNlMzk1MWExYzZkZWU5ZTBhZWZmMzQ0ODY2ODhmIGxlZ2FjeS10cnVuaworNzk5NzggNzVmOTIwOWYzZmI5OTBmOTkwNzk5MmY4NGJiMzNlOThkNDRmMTJlMyBweTNrCis3OTk3OSBhYzA2MWVmMTQ4N2U0N2I2OTdiM2JhMjIzOTQzOTg2ZmQ3ZmM0NGE3IGxlZ2FjeS10cnVuaworNzk5ODAgOWRlMjYxY2Y1YmMyOTk2YzY5NTJkNmZhODM4ZjYyZmQ2OGI4N2JiMSBweTNrCis3OTk4MSBhZmJiYzk4M2UwYmQwNDEyOTU0YTVjNWJjM2IyOTA2YmIxOTFjY2QxIHB5M2sKKzc5OTgyIGQwM2Y1YWNiNGI4N2VmNmU1ZjE4M2RmNTg0ZTYxNTM5YWY2MmJhN2UgbGVnYWN5LXRydW5rCis3OTk4MyA2MTBiNjg1ZTA1MjViZDZjNDE3NDBmZDA4OTY3ZmE5MWIxZTRiY2VjIHB5M2sKKzc5OTg0IGEyOTI5MWNlNGZjZTNjMWQ4NDJkZjMyZDg5ZDAxZjY1MzIyNzMwYTUgcmVsZWFzZTI2LW1haW50Cis3OTk4NSBlZGViMDdjNDExYWYyOTQ3NWMwZjQ1MjIyMDNlYmE4NWZhMzNmOTk4IHJlbGVhc2UzMS1tYWludAorNzk5ODYgZTQ3NWI3NzFkZDRjMGY5OGQxNGZjMzE2ODBlNmY2YzJmMmE3Y2RkYSBsZWdhY3ktdHJ1bmsKKzc5OTg3IDJhZTVmNjBlMjdjOTk1NmRhZWRjNjAxMTAyZTQ0NGE0ZTFkYjYzODggbGVnYWN5LXRydW5rCis3OTk4OCA1NjgwYmEyZGM5YzI2ZWVjZWI2NDcwM2U0Y2Y5YTA4YTgyMGMzMmY4IGxlZ2FjeS10cnVuaworNzk5ODkgYmFlMzc5MDNmNzk3NWQ2Nzc4Y2EzYzUyNGVhYjFmZGI2NDk5OTM1MyByZWxlYXNlMjYtbWFpbnQKKzc5OTkwIGFkMmZmMWMzNmIxYWMxNmNlOGY4NGFhOTI2NTBmYjRjYTViNTlhYTcgcHkzaworNzk5OTEgZGU1MTUxNDBiNWZiZTRjNGIwY2JlYTliMzA4NjQzOWJiN2NkNTZmOCByZWxlYXNlMzEtbWFpbnQKKzc5OTkyIGZlZGIxZjkzMjJkZjNjM2ZhMTEwYWQ3OWMzZDRlM2FhMjZiMjYxNTAgcHkzaworNzk5OTMgODFkMGVhNmQyZGEzN2EzMzkxZTgxOWU2ZjY3YmM0YThhOGMyYWY2MiByZWxlYXNlMzEtbWFpbnQKKzc5OTk0IGU2OTcyZjFjOWQ2ZDAxNjcxNWM5YzQxYmY4Y2UwZGZlOTlmOGM0NTEgbGVnYWN5LXRydW5rCis3OTk5NSA2MzE0NGYxNDU0ZDIwMGY5MTdiMTEwZjFlZjRkOGEwZGNiYjNjZGE1IGxlZ2FjeS10cnVuaworNzk5OTYgNDJlNjA1N2NmMjhmZDdjOTNlMzE4OGVmMDg0MTMxZGRkYTVkYTRkOCBweTNrCis3OTk5NyA4NjBmY2VkYTJkODk0MGI1NDA3NzYxODhkZWVjNGVlNzliYTNjNDgwIHB5M2sKKzc5OTk4IDRmMTJkY2I5Y2U2ZjExNzdkOTdmZDJkMjdmMjgzMTIzOGI2ZTdmMDcgcmVsZWFzZTMxLW1haW50Cis3OTk5OSA4MTA1OTM5MDg1Mjc3NzQwNDcwMGQ1MjU1ODMzNGIwMzY2YTA4NzVlIHB5M2sKKzgwMDAwIDk4YTE1ZmMzOGI4YmYzMWU3Zjc4ZjdkN2ZhMzdjZWE5ZTk3Y2YwY2EgbGVnYWN5LXRydW5rCis4MDAwMSAxMTYzY2Q4YzM5NTZkYjMyMzFlOWExMzRlMDkxNjJlM2M0OWIzOGEyIHJlbGVhc2UyNi1tYWludAorODAwMDIgOTFlYmNmZjViYjI0YzBjOGI0NDc5Mzg1ZGY2MTNmYzA1ZjlmZTJmZSBweTNrCis4MDAwMyA1NTc2NjU0ZTRiOTFhNTVjOWNmOTAzMDA4NTgwZDZhOWQxYmZiYjhkIHJlbGVhc2UzMS1tYWludAorODAwMDQgNzEzZjFmNmJmMzM5YmVmN2ZmMzQ0ZDFhMWFhNjUyMmE3N2I3OWExNyBsZWdhY3ktdHJ1bmsKKzgwMDA1IDlkMTAzOTA0ODQ5OGE4OGViZTE1NTc2MDJkMDU2MmFhMTM3NmYyYmYgcmVsZWFzZTI2LW1haW50Cis4MDAwNiBiODFkODNhODk5ZjM2NzlmZGFkNzg1NWNlMTYwNzZiMGI1NWQ5MTM4IHB5M2sKKzgwMDA3IDU3YmJmY2U4YjI3ODg4Zjc2NTcyODQ5YmFiZWRlOTYyZWI5ZDU4NzkgcmVsZWFzZTMxLW1haW50Cis4MDAwOCBhMmY1YjNiMTllYjI3ZWU5MWY2MDUzMGJiMDczNTMwYzlhNjNjODQ5IHB5M2sKKzgwMDA5IDE5NTA3MGU4NWNlMTUyMDdlNzYxMjBlODUzYTAwZGYxNzgwNjQyZTUgbGVnYWN5LXRydW5rCis4MDAxMCBmMWMwMzZkZTE5YjdkMTY1NTMxOGY5NmEyNmUxNzBiNDZlMWIyMTc1IHB5M2sKKzgwMDExIDg5NzUyYzAzZjM0MmNlNjQ3MWRiNjEzNThjZTliOTVkMTc4ZGRhNGUgcmVsZWFzZTI2LW1haW50Cis4MDAxMiA3N2M0OWU3MzUyNDk3OWFhZDQwY2UwMzEwMjk3NDE1YzQ5YjIzZDQyIHJlbGVhc2UzMS1tYWludAorODAwMTMgZDQ1MDdmNjE1MzFkY2E0YTg2NTNkODJlYmRlNGRiNDViZmEzZmRmNyBsZWdhY3ktdHJ1bmsKKzgwMDE0IGI1MzZhOGE5NmZhOWEyZDc3MjFkNTFjMmQ1YzFkZTY0MGQ1ODhkNDggbGVnYWN5LXRydW5rCis4MDAxNSAwOTE1ODg5NGEzYjA1ZjJiM2VlZWUzMDI0OWFmYzgzMDBhNmEzMjgyIGxlZ2FjeS10cnVuaworODAwMTYgZDQ4NjcwNTg5MmFiNmUxYjYyYmMwZWNmMDkyMzUwNjQyMDFiNDVlYiBweTNrCis4MDAxNyAwYTFjYTBkNzQ0YTQyNjljNTM2ZWM4NjMwM2VkZjhkMzZiYmJjNWY4IGxlZ2FjeS10cnVuaworODAwMTkgMWE5MGZlMzdiNTlkNzM2YzM0Yzk5MmY5NDliYWYyM2Y5NWQyZTlmMyBweTNrCis4MDAyMCA2MGE3ZTU4YTEwZGFkYmY0ZTY1Yjk3ZWI0MzE4YTc4NGM2NTk5OTc0IHB5M2sKKzgwMDIxIDUyMzc3MjM1ZDA1NTIxMTBjZmQzMDQyYTE0NjRjNjAyYTc2NjE1Y2IgcmVsZWFzZTMxLW1haW50Cis4MDAyMiA2M2I1ODEyNGE1NTRhMzZmMWE3YzNjMDNmZDU2ZDQwNDdhNTFkYWE4IGxlZ2FjeS10cnVuaworODAwMjMgN2EzOTBlYjUwZGYxMzQzMjMyYjY3NWYwYjA3Yjc2OTI5ZDI2ZDBiNCBweTNrCis4MDAyNCA2NTFlZGZkMmRiMzg4ODJmODVkODg5MGQ1OGNiOTA0ZGU1YTdiZjlmIGxlZ2FjeS10cnVuaworODAwMjYgNWU4ZTZlN2VlZGIyMTRjNTEyMWY3OTlhNzBmMDk1NGFiNzFjMDkyNSBsZWdhY3ktdHJ1bmsKKzgwMDI3IGE4YmViNjE0OTIyZjkwMmM5NjQ5Mzg4ZWU2MDQ0NjZmMGVhYjIzOGYgcHkzaworODAwMjggMjUxNzMyMDkyNjAxMzU0ZjJmYzllMmFhMTE0NDdiYmQ5ZWI1Yjc5NyByZWxlYXNlMzEtbWFpbnQKKzgwMDI5IDAxNWU4ZjdmNTI2NGY0ZDExMTQyZDI2ZDU3YTA2MmZiMmQwZWY0M2YgcmVsZWFzZTI2LW1haW50Cis4MDAzMCA0N2E1N2RmNjk4OTZmY2YwZjU3NzhkNDM0ZWNmYThlMmVkMWFkNDE2IGxlZ2FjeS10cnVuaworODAwMzEgNzk5NDI2OWFkM2ExZmE3OGRhNDljNjAwNTNkNTc3MTU3YjhiMjRlNiBweTNrCis4MDAzMiBiOGYyOTdjZGZhZGVmMWZkZTRlNmM4MDkxZWNiOWRlYThmNzIyNmRjIHJlbGVhc2UzMS1tYWludAorODAwMzMgZGYyZTllOGQ0MjhlY2ZkYjM5ZGUzYmFlYWZlNjYwM2MzNDMyZDY0ZiBweTNrLWlzc3VlNDk3MAorODAwMzQgYjkyYjU3ZmZiMzFlMTY4ZWY1MjE3YWUxOWZhZDI0MjU2NThhZDkwNyBweTNrLWlzc3VlNDk3MAorODAwMzUgNzY5OGQxYTEwYjAxYzAyM2NkZTY0NGYyOTc3MmNkYmUzZjMwNmQwNiBsZWdhY3ktdHJ1bmsKKzgwMDM2IDdiY2VlNzE3MGQ3YmMzNzIwZDkzNzk0MmNhMDM3YzAxZGZjODBhNTEgcHkzaworODAwMzcgNmZmZTZmOGNhMDkxNjQ2Mzg0MjlhYjNmZTJlMTQ0MDczOWVhZjM3NyBweTNrLWlzc3VlNDk3MAorODAwMzggYTVjODg2ZWE0ZjZmMzE5Y2MzODNkOGQ5ZDcwNjE5MmRiZmE1ZjFiNiByZWxlYXNlMjYtbWFpbnQKKzgwMDM5IGQ2ZGVlM2FkMjU5YjU2YmVkYzdlODIzZGEwMDNmZTI5NmNjMjE2YjEgcmVsZWFzZTMxLW1haW50Cis4MDA0MCBkNGUyMTAzMjNmNzEzNzQwMjY2Yzg2NWZiZWM3NmEzNzMwMWI3MzY5IHB5M2sKKzgwMDQxIDM0MWE2YmRjY2QyZTcyYTM4OGNlNzZiNWY0ZDJhZWNlZjk3Y2IzMTIgcmVsZWFzZTMxLW1haW50Cis4MDA0MiBhOTIxM2Y5MWFiMTY5ODE4YjdmOTVkMWE4OTMxODIzMThjMWQ0MzMxIHB5M2staXNzdWU0OTcwCis4MDA0MyAwODI0ZjI2ODYxYmFiYzNmMjEyYTlkMzZiMjcxMzA2MWU1ODlmMmRmIHB5M2staXNzdWU0OTcwCis4MDA0NCA3MDJiNmM5OWU3NTdjNzEwNjQxZDQ4ODA1MDNlM2QyMWU2MWM4NzUwIHB5M2sKKzgwMDQ1IDdlMGNlNWY2M2EzYmNhNDlhZDMxMWZlODExMTAzNWFjZTZjODc5YzcgcHkzay1pc3N1ZTQ5NzAKKzgwMDQ2IGI0YzY1MzQzMmNiNjc0YzY2OTIyNmY3MzVhZDA5NGQ1MWM0NzQ0YTUgcmVsZWFzZTMxLW1haW50Cis4MDA0NyAxZGQ0ZWZkZWZmZjE1ODc2M2I1NzZhNzU0YzJjYmRkM2ZjNzE5N2RkIHB5M2staXNzdWU0OTcwCis4MDA0OCBiOTViYTBjYzFiN2U1MTE5M2U4YWVlMjg0YTVhMzdhZDBkYjZiNjc0IHB5M2staXNzdWU0OTcwCis4MDA0OSA1Yzk5ZmRiN2RhNzM3NWQzMDYwOTIzZmIxZTRiZWEwMTVkNDBkZDUzIHB5M2staXNzdWU0OTcwCis4MDA1MCBjYjg3NDVmYTY1ODg0MjkxZDIwZTU1OGZmMGQyYTczMzQ3ZjE3ZTk5IHB5M2staXNzdWU0OTcwCis4MDA1MSAzNmIwMDViYzA4OGZmNTJhYWFhY2ZlNmMxOTdiYzE2MThlODY0ZmFhIHB5M2staXNzdWU0OTcwCis4MDA1MiBmMWEyZjNiNmJmYzY0ODUzZjcxYmJjODIzZWEzZmNmZjA4Mjc2ZjMzIHB5M2staXNzdWU0OTcwCis4MDA1NCA1YjZmZTdkMzU5OGJjZTIyYWM1MTJjODQzM2Y0ZWRjYzRiZDU4ZDZkIHB5M2staXNzdWU0OTcwCis4MDA1NSBlOTg0ZjllMTU2NjZjZTZkMzJlZWExM2MxMTAzZjBlOTI1ZDUyMWY2IHB5M2staXNzdWU0OTcwCis4MDA1NiA1MTdjYzRkNTllMTJlMjQxODU4YjkxOTZlZmI2YmY0MmZhNTU2NDY2IHB5M2staXNzdWU0OTcwCis4MDA1NyA5OWU5YzhkNjkwYWI5NDgwNzEzY2E3NWRiMDlkNDJmZDY4ODUxYzk1IHB5M2staXNzdWU0OTcwCis4MDA1OCAyODU1MzU2NGYxYzY2YTQ2MDcyYmU3ZjA3ZTc0ZGI1MTY3ZWU5MGE1IHB5M2staXNzdWU0OTcwCis4MDA1OSBmZDdhMTNmMGViYmRkYzQwYTg2YjgzMGE4ZmU0MzI1ZjYzZWZjNDYzIHB5M2staXNzdWU0OTcwCis4MDA2MCA4NjkzZmMwNmFjOGVjOGUxZGNmYjI4NTZiN2MwYzViZDYyNTk0MzQ4IGxlZ2FjeS10cnVuaworODAwNjEgNzM1YmVkNmM4ZTM2MWQ4NDcxOGYxYjZlOTY1YmFmMzMyNjFlNjc4NyBweTNrCis4MDA2MiA2NDkzYWU3Mjc5MWQzN2JjZjE3YzAyYTM5ZTQ1ODA5MjgzNTNjY2RhIGxlZ2FjeS10cnVuaworODAwNjMgNDUwYzY5MjEwNTgxZTk0Y2VkODhhMWFiYWY5YTJhM2U3NzIzNGNkNSByZWxlYXNlMjYtbWFpbnQKKzgwMDY0IDZiYmYwN2EzZTAxYjVjMDgyNWE4ZDE4OGMzMjZlZTk3NDc2OThmYzIgbGVnYWN5LXRydW5rCis4MDA2NSBiYWU3OTc2NTE2MGQyMjBkNjEyOTZmZTE2OTM5NzczMjQ3NjM3MjFjIGxlZ2FjeS10cnVuaworODAwNjYgNjJkMTE3ODUyMDRmNDA4NTZmMmMzZWNmZjI4YTVlZTVhN2Q5MGU5MiBweTNrCis4MDA2NyAzNjRmMWFjMzIyNjRlZjdkNDRkYWE1MTk5ZTAwMDA4NWQ2ZTIzYzY5IGxlZ2FjeS10cnVuaworODAwNjggMjEyNjdiZjA3MjBlMDE2NjFiNzNlMTBiODE3NDA5YTZiN2U2ZmViZSBsZWdhY3ktdHJ1bmsKKzgwMDY5IGZhOTMwMGZjYjAwNDA4N2UyOGUwNzUzNTRjNmMwNTdkYzRjNWY3MmIgbGVnYWN5LXRydW5rCis4MDA3MCA2MTAyZDg2ODZhYWVkYTc5ZjYwZDdhMDY0YTE0OWVjMzk2NjAzZGZkIGxlZ2FjeS10cnVuaworODAwNzEgMDFkMWZkNzc1ZDE2YjU2OWYyY2ZiZjBiMTk2NGI3NmQ1ZGQ2NWIyZCBweTNrCis4MDA3MiAyMjE2M2Q4Y2FmM2UzM2NiZTVkYTljZmY2N2RkMmJiMzZkMjIyYWQyIHB5M2staXNzdWU0OTcwCis4MDA3MyA5MDY5Y2E1MWU2MTQ4MjgzNmE1MzY3ODUzMmM2MTNlY2UxNjA0YTM5IHB5M2staXNzdWU0OTcwCis4MDA3NCBkNDQzZDg1ZjYyYzE3N2Q2NTExOGRkODgyZjQwOTE0NjZkZmQyZTlkIHB5M2staXNzdWU0OTcwCis4MDA3NSBjYTExYzgzMGY1Y2M5ZGFjZGZkNTkzYTAwZjE0NDZmYThmZjVhZTZjIHB5M2sKKzgwMDc2IGIxMjc2ZmNkYzNiZDc1MDIwYjAyNDA1MWI4YjBmNjY1NWNmOTZhY2UgcHkzay1pc3N1ZTQ5NzAKKzgwMDc4IGNkYmNhN2MzNDMxZDI2ZjE4NTY4YjhkNzIyZGQyZWZiMWExN2ZjZTUgcHkzaworODAwNzkgZDM1MWUxNWZlZTI4ZjA5ZGRkOTY2ODEwNmZlOWFlYWJiY2QzMGU3YiByZWxlYXNlMzEtbWFpbnQKKzgwMDgwIGI0MDQzNmJjZjRiMmI0NmQ1MzYzYzE0OTNkZDE1ODgyYWQ5ZGJmZTEgbGVnYWN5LXRydW5rCis4MDA4MSBjNWE0ZDlkNzJmOTgyMTkyMzZlMjU5MWUyODUzMTNlMTdmMTI3ZGNhIGxlZ2FjeS10cnVuaworODAwODIgN2U4NmY0NDIxMmQ2NTVhNTRiMjU0ZDcwOGVlNDIwYTYwY2ExYzA3MyBsZWdhY3ktdHJ1bmsKKzgwMDgzIDE0ZjMxMGE2ZTQ5Mjg2YzdhZWY5NTc0MWIyY2Q5ZGM4NmM1NzJmMjUgcHkzaworODAwODQgNDg1ZTM0ZWMxYTFhOGI5NjM2ZWM4ZWU0ZTI2ZDk4ODQ0MzRjYTg0NCBsZWdhY3ktdHJ1bmsKKzgwMDg1IDc2NDk0NjM5OTM1MmRmMGNjYjc5YWQ3YzgyZmY5M2MwMjRmZjNhNWUgbGVnYWN5LXRydW5rCis4MDA4NiA0MjI5NjYyZWRlODcyZGJlYzAyN2Q1YmMyNTQyOWRiOWFmNzJiNWYzIGxlZ2FjeS10cnVuaworODAwODggM2E0NDczYmVlYWY1MjM5NWVkZDU1MmM2N2RkOTgzMzIwMmM4OTIwYiBsZWdhY3ktdHJ1bmsKKzgwMDg5IGY0YmQzYjJjYjAwMGViMzI1NzlhYjAxNDc0MDNjMzVhZGU3ZjI1NmYgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDA5MCA1ZTg1MWIyOWVkOTViMTg3ZDI0MWYyYTBlODA0MmFmZjQ1NjYxMjMwIHNpZ25hbGZkLWlzc3VlODQwNworODAwOTEgYzFkMWYwMDBiNDA0ZTY1MWRlZmRhYmRiNmU2ZDk3OGMwMmU5YTk1OSBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwMDkyIDczZDc4ZmVmOTFkNzBmYTJmZTI2ZWM3OTEzMDg2NzJlM2Q2YWIwOWQgcHkzaworODAwOTMgNWZhNDAyYTQ2ZjVhN2Y3ZTM2MDY4YjUzMjZjZmYwYmY3NjE5OTY2YyByZWxlYXNlMzEtbWFpbnQKKzgwMDk4IDMyNDAxNjcxODYyMTgwODdmNTAwM2ZkNTA3N2IxNWVhYWJkNDMzMjIgbGVnYWN5LXRydW5rCis4MDEwMCBmOThiZDg1YWViYjBmNTM3MTg3NThkNTFlOTNjY2NmNzJiYmUzOTBmIHB5M2staml0Cis4MDEwMSA3YjllMzI4Zjc1MzMyMWQwYjk3ZmU3NGJjZWEzZTRhNzY3ZTE4OTkyIGxlZ2FjeS10cnVuaworODAxMDIgNTFiODU1MTZkN2Y5M2E4M2QyM2E0YjA4NDRjOTIwODcwOGU1YjIzZCBweTNrCis4MDEwMyAzNWFiNWNiZDdlNzkwYzAyM2U1ODkyNTkwM2JmNTU2NWY1ZjIxMmI2IHJlbGVhc2UzMS1tYWludAorODAxMDQgODIwYjdlMGE2ZjM4YjFiNTQxNGNlMGI5MmVmMTg0ZmQ0MmQ3NDU1OSByZWxlYXNlMzEtbWFpbnQKKzgwMTA1IDEzN2I0MjRlMmY3ODRiZDlkYjg0NTY1NWE3MmQ1NDA1MDFjMzAxMjAgcHkzaworODAxMDYgODEyOTc5NzVkMjUzZTljZjM3YmU0ZmZiZDBkYjRkY2FiM2QwNmI1NSBweTNrCis4MDEwNyBhZmIyNWMyZDA1NjE5NGNkZmNlZDhlNGYwZTQ5MTE5NGVmZmNiYWNkIHJlbGVhc2UzMS1tYWludAorODAxMDggMDA1NTEwYWMwOTk1YjZmZmFjMjA4MDAxOTcyMTQwMmFiYjcwZGI2ZSBweTNrCis4MDEwOSA4N2QxMjBiOWVmZjJhZTM2ZmI0MmJmNmVhNzY2MTQxMjIxNGU3NjZhIHB5M2sKKzgwMTEwIDU0N2YzMGEwZDRiMWVkNjU2OGUyNWRlYzk2M2YzNjJlZjMzZmM5NzMgcmVsZWFzZTMxLW1haW50Cis4MDExMSA0Y2JiMGZkZWJmNzM3Y2FkYjQwYWNlZjkyZWJiMDJkNzY3MDUzNTQwIHB5M2sKKzgwMTEyIDk1MTc4ZTE3ZTk2MTBjZDgwNDEzODZiYTBjY2U4MDI4YmI3ZjE0YmYgcHkzaworODAxMTMgYmRhYTI4OWQ5ZjE5OWQ4ZTFlNmY5NGUzZjYzNTc3YzgyYjM0N2ZjMSByZWxlYXNlMzEtbWFpbnQKKzgwMTE0IDA0NDJlN2E0MThjZWJmYzM5NDdkN2QzZjU5N2NlMTM4Y2QzZDFjZjIgcHkzaworODAxMTUgMTE2NDBjMWE0NjI4OGE4NmUwZTQ4MDQzMGQwNDVhNjU4YzBmNjhhMyBweTNrCis4MDExNiAxNWIwOWNjZmFjN2NmZGVlZjZjNDVjNGM5YzQ0ODRhMGIzNGNiNzVkIHB5M2sKKzgwMTE3IDYzMzVjZjM0NWFmYWU4MTNiMmM1YjBmNTA0MDIwNTZkYjgxY2UyMzIgcmVsZWFzZTMxLW1haW50Cis4MDExOCA0NGE3NTA3ZjZkYjU0MjdmNTdkYjk1NWVkYTBhMTcxYTJiNzYyNWRiIHJlbGVhc2UzMS1tYWludAorODAxMTkgY2MxMGExNTI3NTIxZDEwNmI4ZWEzYTk3OWQ0ZmEyMzk3MmVmMGY1MCByZWxlYXNlMzEtbWFpbnQKKzgwMTIwIDQ1YWVkY2FlOWM0NzljMjA2NjYwNGFkYTY5Y2U4NjZkODM2NDRhZTAgbGVnYWN5LXRydW5rCis4MDEyMSA4YWI1YmJhZTVlZmU5ZTg0OWYwODg1Y2MxNDM0MWYzZDYxYjMyNzQ1IGxlZ2FjeS10cnVuaworODAxMjIgODFiYmQ1NjcwZWMzOWVjNzI3MjFjZWY1MzBiYmRkNmZhNWQ5ZTE3OSBweTNrCis4MDEyMyA2M2I4MTVjYzZmNGIxZmQ5YjAxOGUyYjkyMmFlZTAzYmRkNTVmNWQ2IGxlZ2FjeS10cnVuaworODAxMjQgMzY5NmQxN2ExMGIzYTQ1MjgxZWQwYWQ5MjAyYzc3OWU2NjFmNDEyZiBsZWdhY3ktdHJ1bmsKKzgwMTI1IGE3NDkxZDQ3ZDQ1NDZmZGMyYmY4ZTA2ZWY0M2JkZjA5ODljYTIxODIgcHkzaworODAxMjYgY2U2MjRjY2EyMDJhZTkxNGYyODg5Zjc5MzliYjRjZjgyZGFlYTNjYiBsZWdhY3ktdHJ1bmsKKzgwMTI3IDQ2MGE5ODRhOWVkNTcwN2QyZmEzNDdhN2JiNjRkNTQ5NDYyNzg3YWEgcmVsZWFzZTI2LW1haW50Cis4MDEyOCA3NzM0MDhjYTVlZTYzM2ZmZGFjMGM5ZmRmMDAxYmI0ZWI3ZWRhYTRlIHB5M2sKKzgwMTI5IDc4NGEwMjI2NjRlM2EyYzE5YjI1MzY3OWQ0MzYyMTlkNzQ3YmQyYjYgbGVnYWN5LXRydW5rCis4MDEzMCAwYTAxYTNlYTE0MGE5N2UwNDgyZGEzZjhiZjRmODM4NzVmZmFjYjgzIHB5M2sKKzgwMTMxIDY4ZmQ3MGE5ZTc3YWZkY2U3ZWU5YzY3MzIwNmYyNDFhNmU0MjI5ZTcgcmVsZWFzZTI2LW1haW50Cis4MDEzMyA1ZTFkYmMzYWU3Njc5N2I3Nzc2MDg3MDUxYjczYzM4ZjUzNzI4MTNmIHJlbGVhc2UzMS1tYWludAorODAxMzQgMWEzMzA0Y2U5YTJlN2FmYTZhZGUzZGNlMGEwZDE5YWIzN2UwMjRkMSByZWxlYXNlMzEtbWFpbnQKKzgwMTM1IGRjNzY1YmNhMjRhZGQ4NGZiNWRlNTk1MDExZWNmOWNlODdjYTlhYzYgcHkzaworODAxMzYgZTUzOTBmZWRjYjZiMTYyYzNkZGNhZTIxOWY1Yzc1MDMyMTY0YTRjMiByZWxlYXNlMzEtbWFpbnQKKzgwMTM3IDdiNjllNjMwZDIzNzc5MGI1Njg1ZjlmMjA4MzA0ZjhmNDc5NzQyNjMgcHkzaworODAxMzggYzUzMmFmYjBmYTg5MjgwMmUxM2ZmY2ZmZTliNTQzZDRlNDgxNjllMSBweTNrCis4MDE0MCAwNDZmOTdlZDU2Nzk0ZWZkZTc1MmQ4ZGI4M2EyNzU4NGFlNDZiMzhhIHB5M2sKKzgwMTQxIDBlMzZjYzBkNmFiMDIwMzM2OTkyMTM5NWFhMTE2MmUyMmQ2ZWVkZmIgcHkzaworODAxNDIgNzM0ZGQyZWRhMWNjNGNhNGJhNjAxM2FmNWY2OTY0YTc1YWM4M2RkNyBweTNrLWppdAorODAxNDMgNzMyMWM3ZDY0MmFkZGE5OTU4MzMyN2M3NmIwZTQ2Zjc5Y2QyZDFjMCBweTNrCis4MDE0NCAyNWUzNWUzODM4Yzc3NTlmZDdmN2M2OGIyN2NkYjFlYTRlMGU4OWM1IGxlZ2FjeS10cnVuaworODAxNDYgN2IwNjU2OTI5Y2RiOTI0NTI1MGJiNGNkMzA1NDFkODA3M2YyMWQ2MCBsZWdhY3ktdHJ1bmsKKzgwMTQ3IDI5MzhiZjg5OTg2Mzg5NWE0ZDJhMmM4OWM0YmJiZDdlNzcyOGU3NzEgcmVsZWFzZTI2LW1haW50Cis4MDE0OCA0ZjEyMjBmM2UyYzdkYjhhMjY3NTFhNDRiYTBhYjFjNDA5MTZjMTMyIHB5M2sKKzgwMTQ5IDRkMDIwODY2MWIxZjczODdhNGM5ZDRkNWMyZTE3OGZmNTAxYjU4ZjkgcmVsZWFzZTMxLW1haW50Cis4MDE1MCAzODRkZDQ0OWE0ZWU4ODJlYjkwMGFjZThjZGVkMzM3ZWM2MGFiOGY5IGxlZ2FjeS10cnVuaworODAxNTEgNzQ2MmU3NTJmMGZhMjhiYWJkYzkwOTk1MTg4Zjk4MDYwNDQwYTAxMCBsZWdhY3ktdHJ1bmsKKzgwMTUyIDMzZDQ3OWEzODY2NmFjNTk1ZjNkZGJiMWQxMjNjMjMxOTAxOTAwMTMgbGVnYWN5LXRydW5rCis4MDE1MyBmMmUyYjE5NmRiOTIyYzI3OGQ3NTAxMDI1ZDJlNzM0ZGZiYjc0M2QxIHB5M2sKKzgwMTU0IGU1ZjZkZTE4YjcxNTZlNWMxNDI4YzAwNmQ1MjBiNzM4OThhYjZlMzEgcHkzaworODAxNTUgY2MzODJmMzliMzk4Y2Y5OTgxZjE4MDgyZGUzY2ZkZWQzYzc5MjdmMiBsZWdhY3ktdHJ1bmsKKzgwMTU2IGQ3ZDVjNzY1NDVmYjM3ZjVjMDVlZDQwZGNjYjk3ZjRiZjU3MThhZmEgbGVnYWN5LXRydW5rCis4MDE1NyBiYWM5OTIyOWRhMmRjYTk0YjYzY2ZlYmFiZDZmZTkxZTRhOTJkZTdmIHB5M2sKKzgwMTU4IDlhY2U1NWIyOWY3ZTljZTBiYjZkMjNiMzQ1MjZhMGU1ZDU3YjI1NzUgcHkzaworODAxNTkgZWIzMGU2NjJmZDZhYzEyNzczYmEzM2VlYmMyOWJhMTA5MDc1ODZmZiBweTNrCis4MDE2MCBmNzMwNzEyZDk3YjhkZGMyYjYyZTYzNjFkOGQxZWUzZjI0ZWFhNzE0IHJlbGVhc2UzMS1tYWludAorODAxNjEgZDQxOWU3MzczMzcwMjE2NWJjNTM2ZmVhZTAzMTdkYjdiMWY2ZTk5MiBweTNrCis4MDE2MiAzMTZiZWMzZjE4ZWM5MTUxMGRjZTM3NzAxMzcwZGJhNGMyNmEzM2IxIHJlbGVhc2UzMS1tYWludAorODAxNjMgMGYzN2FmYjhhOWYyYzBlOWY1NTA2YTNkZDk5YWM1MDRkMWE3ZTNiYSBweTNrCis4MDE2NCBkM2VhYjQ1OTczOTUxYjhjMDZlZjAyYjllODJlMDBlMTQ1NmJkNzViIHJlbGVhc2UzMS1tYWludAorODAxNjYgN2M5MGFjMTk0ZTQwODJkNjAzMzI4YzFkY2U5NmQ3YWE4MDA4YjJiNCBsZWdhY3ktdHJ1bmsKKzgwMTY3IGUwODdiNWQzZDE5MWMyMTA1ODdjNzMwYzk5MjUwNWQ5OTk0MzI2YzEgcHkzaworODAxNjggZWE0MmFmOTY4ZDlkMDU1YTJjOTg0OTVlMmNlNTgwZGZkZDJhOGZiMSByZWxlYXNlMjYtbWFpbnQKKzgwMTY5IDhlZmJjY2UwNzU3ZGY2MDQ3YzE4OTZmYmExNDQzN2ZlNTNkODdkNDEgcmVsZWFzZTI2LW1haW50Cis4MDE3MCA3ZTI3MGRjZjRiZDU5MGJiOWY1MDQ5OGIyZmVlMjAzNTNmNjQ4MjgyIHB5M2sKKzgwMTcxIDBjMGQ4MTllZGI5ZGNmNjk3Y2NmMjMwOGExYmVlNWJjNWE4MTQ4NTYgbGVnYWN5LXRydW5rCis4MDE3MiBhMDdmNjA4MjVlMWFiOWExYmYxMDI4OTFkZjhkMGQ4ZGI3MGI5M2QyIGxlZ2FjeS10cnVuaworODAxNzMgYTdlNjlhNWYyMzM3ODQ2MTBlMDc4NzljNTU0YjA5YjVkMTE2ZjdkNiByZWxlYXNlMjYtbWFpbnQKKzgwMTc0IDZjYmU4NjQ1NzE3ZDNlOTlkZDJhNTY4MzFiNGRiOTdhYzc2YzFjN2EgcmVsZWFzZTI2LW1haW50Cis4MDE3NSA2NTRlMWNjOWI0ZmY1NmE4ZjVlNWE0OWIyYjdiZWM3OGFjNWNmYWUwIHJlbGVhc2UzMS1tYWludAorODAxNzYgZmE4YTAzZGZjMmQxY2I2YzYzNmViNjEyZmM3MDI1NWJkYWM5YWM4YyBweTNrCis4MDE3NyAxM2Q4NmZjNjk5NDA4MWJlYTkxMTZjMGI4Mzk2YmVkZjA4ZjYwMjIzIHJlbGVhc2UzMS1tYWludAorODAxNzggMmY1NDc1NmFlYjExNjZjN2YwYjE4NTAwOWM0ZTEzY2IwYTc0OWJhYSBsZWdhY3ktdHJ1bmsKKzgwMTc5IDIyNzM3YTk5YmY4YzQ0NGJjNGFmZjNmYmI5NDY5MjJhOGZkNzU4ZDYgbGVnYWN5LXRydW5rCis4MDE4MCA2Y2IxYzQ4MDRmOWM4YjFlY2Y3Mjk1NWM1NDVlNmU0ZDhjYzYxZjdlIHJlbGVhc2UyNi1tYWludAorODAxODEgZmU2YjZjMTg5YmI0MTUzZDVjYWJhMGQxNWRjNzUyNmJjNTRkN2Y4OSBweTNrCis4MDE4MiAxZjNkMmU2MTJiNDRhYjc3ZTE4MWI0MTMwMTkyOTk5ZDM4MGI3NTZlIHB5M2sKKzgwMTgzIGZiM2U0MDBjMmNkYTQwODU5MjQ5NWI5MmFkNjMwZjI3ZmEyODQzYTggcmVsZWFzZTMxLW1haW50Cis4MDE4NCA0NTA1ZWI1N2I0Y2E3ZGY4MDE5NDBkZDBjZTk3MmRmZGMxYmE5MTY0IHJlbGVhc2UyNi1tYWludAorODAxODUgYmVkZDZlZTAzZTYwNGU3NTY5YzZmODBkNjg2YzI0NGIyNjIzNmU2MSBweTNrCis4MDE4NiBmNzYyYzZhNTRiZmNjNzZjNmM1MmU5NjlhNzBmZWM1NTIyMmNhNGI1IHJlbGVhc2UzMS1tYWludAorODAxODcgYTk2ZmQwZTg3NGI0OThhNGU2NDgyN2UwYTFkZTYyZTJiMDU3YTJiMyBsZWdhY3ktdHJ1bmsKKzgwMTg4IGJjYTU3NDM3NjEyNzJkZDFlYWIzMjU4NjFiZGRjMGVhZGIzYjk0MjUgcmVsZWFzZTI2LW1haW50Cis4MDE4OSA3MjY3ZTBhY2UzM2MxNzQyNTBhN2ZjNTZmYzY5NTRmZmE1ZTFhYWFiIGxlZ2FjeS10cnVuaworODAxOTAgMDQzZjE0MzA0ZGVkMDQ3MzU3MDJjMWU0OTIzMmQ5YTIzNjhkZjQ4YSBweTNrCis4MDE5MSAyY2ZiMTBhNmMyYjVkNzBiNTNmZDc1ZDZhZjA0MTQ1NmNlNzM1YjM5IHB5M2sKKzgwMTkyIDlkMzVhZmQ4ODIxZjAwNzVhOGI0MzdmOTY0M2IzMzhmZGRlMGRhNmMgcmVsZWFzZTMxLW1haW50Cis4MDE5MyBhNTJjYjk5MWY1NGMxYjI3NWNiOTgyMmNiNjA4OTIyN2U1NWRlYTI4IHJlbGVhc2UyNi1tYWludAorODAxOTQgNzY2NDllZDQ1YzYzN2JhZjk0ZTQ5MTQxMTQ5ZDc2Zjg3YWQ1OTgxMiBsZWdhY3ktdHJ1bmsKKzgwMTk1IDA2NDRjYTNmZTMwYTA0ZWY2NmMzMGJkNDc3NTI4NjlmZTk5YWIxNzkgcHkzaworODAxOTYgNDc3NGQ1OWVlZjdiMzc2MjEzYzhlZjkxOWYxNDFmMGZiMTFlM2NiZiBweTNrCis4MDE5NyAyOGZjMzE2ODhiN2MxMDMxZjI1NmExNzRkYTcwY2YwYTEyN2RhN2UxIHJlbGVhc2UzMS1tYWludAorODAxOTggOWFhYzFkM2Q4NzNkMTgwZWI0NGRkOWFlNjA1OGU3MDg4ODI5MmY1ZCBweTNrCis4MDE5OSA0ODVjM2YwOWEwOWI0OGY4YTNlOTk5MjI2MDY4N2VmMDZhNWMyN2YzIHJlbGVhc2UzMS1tYWludAorODAyMDAgOTM4NmUzZGQ1NzAwYzcwODFjMWM3MDMxYTAwYzI2NGY2MTllY2JiNyBweTNrCis4MDIwMSAxOGExOTU2MzNiNTk5ZWRjMWYxMGM2NjFkY2RlNzQ0NzM4MmQ0NGYyIHJlbGVhc2UzMS1tYWludAorODAyMDIgOGY1YzQ4MGY2ZDZmNTk1MTVmOGY4MGFkYjZkZjFiZGRjMmMzZDc4NiBsZWdhY3ktdHJ1bmsKKzgwMjAzIGNmNTc1NmVjNmVkN2Q3ZjQyYjRmNThjYWMyNDkxMDc0N2ZiYTgxYzUgcmVsZWFzZTI2LW1haW50Cis4MDIwNCBhYTcwN2YxM2M0MDI4YTI3NDEwMWFkZmU1NDJjODQ0N2UzNDAyYTdmIHJlbGVhc2UzMS1tYWludAorODAyMDUgYTcyNzc5NjcyZjE1OWYzMWMwMTliMjI1OTZiZTAwMjgzMjQ5NWNhYSBweTNrCis4MDIwNiBjZjgwNjk4ZjI3NTY4MjhhYWE0ZGEzOWMzOTIxOWVlZWJmMmZkN2Q1IHB5M2sKKzgwMjA3IGI4NzUwMjFjZDk5MzcwMjEwMGQ0ZDlmNmUyZmE0NTFmNDE0OTM5OTkgcHkzaworODAyMDggMmRlYjc4YmM1ZDM4NTkyMTMyNzNmZGE4N2FlZTc4MWNjYzQ1MTkwMSByZWxlYXNlMjYtbWFpbnQKKzgwMjA5IDZlMmUyYjYyNjg1ZWQ3YTljMDcwY2M2ZjM1Mjk1MTc2NjE0YWM5MTAgcmVsZWFzZTI2LW1haW50Cis4MDIxMCA0MWUyZjA1NGQ1MzkwMWNhODIzOTMwOWU1ZTYxZjdlMmEzMzBmYWQ2IHJlbGVhc2UyNi1tYWludAorODAyMTEgN2E1NjRkNzRmZDRhOGEzNzg5MTlkZTViNWFjZmQ5OTFjNmE0MGZhNiBweTNrCis4MDIxMiA3ODk2MTJjZDA5NzA1ZmQyNzFkNTcyYWE1NDI0NzlmMzRlNzk4NjQxIHB5M2sKKzgwMjEzIDgzNjgyZTdkNTlhNjQ0MzkxZTYwYjgzNGY4OTIyYWI0NTU4YjdlNTEgcmVsZWFzZTI2LW1haW50Cis4MDIxNCBjZTYwNWU5NTAwMDgwNmNlMjc1NDQ0MmIyMDNiODc5MDVjMTUxZjUwIHJlbGVhc2UyNi1tYWludAorODAyMTUgNDA5MmU0NTY2ZGIzZmYyNjE5YzIwMjI2NzQyZjJlOTM4MjJjZTI4MiBsZWdhY3ktdHJ1bmsKKzgwMjE2IDdmOTI2MzJmOTEyZDZjN2EzNDYxYjY1MTU2M2NjMDQ2ODVhNTFmNGUgcmVsZWFzZTI2LW1haW50Cis4MDIxNyBiNTE0ZjgzMTFmMjg1NWQ1ZDVlNTZiOGUwNGMzZjlkOGVkY2E2YzRmIHB5M2sKKzgwMjE4IGJjZmI2YmFkZmY4ODQxYmMwZTRjYzAwZDJhNjE5OWJkZWZlOTI3MmMgbGVnYWN5LXRydW5rCis4MDIxOSA3MTg2MGNkYjQ4ODY5MWU2MDE0N2QzOTdmMTA2OTQ3M2Q1NTFjNzRlIHB5M2sKKzgwMjIwIDFmMDJiNDNlMDkwODkyNDdjYmRhYmQwMzY1MDQ2ZDIyNmVkMTQ1OGIgcmVsZWFzZTMxLW1haW50Cis4MDIyMSAyZjMxMWRhYjA2OTczNTgwYjM1NTgyZTE0YTI3NWE1YmNlNzRhODJiIGxlZ2FjeS10cnVuaworODAyMjIgOThiMmNkMTBhYjA1ZjAxZDJhNmNlZTJhNzdlZmU2NzcxMTAzOGY0MyByZWxlYXNlMjYtbWFpbnQKKzgwMjIzIGY3N2UzN2FmYzg3MGE0MzhjZGM3MDMyN2MwNDEwNGIxYTZiZTVjZWIgcmVsZWFzZTI2LW1haW50Cis4MDIyNCA3YWQ2ZWE5N2Q0NDAyMzE1ODY3MDFhMDVhODExMGE2NDU1YmE5NzNjIHB5M2sKKzgwMjI1IDMwMWZiZThiZmFkMTg1OWUxNzVjZjAxZTA3ZWM4OWY2NGFjMGEwMTUgcmVsZWFzZTMxLW1haW50Cis4MDIyNiAzMjI4NTMxMzg5NmM4NDAxMDJmOWUzMWNlZTRmMTMxYzFkM2I1OWJiIGxlZ2FjeS10cnVuaworODAyMjcgN2ZlZjg3OTZmNzc3MDQyZDdiODJiNWQ4M2Q1N2ViOTZjOTNhMTMwNCByZWxlYXNlMjYtbWFpbnQKKzgwMjI4IDM5YjU2MWM1M2U5YWQ3YmJmNjFjMGE4YWNiMDhjOWE1M2QzNmRjNmUgcHkzaworODAyMjkgYzEzZjgyNWZkZWFiNzZiMjQ5MGQ3NDI0NTA5NDdlYjBmYTY5OGM2ZiByZWxlYXNlMzEtbWFpbnQKKzgwMjMwIGJlMTdiZGE1YTY1OGUyYWIxYjk5NWEzNmNkMmZiMGU5YzEwZDFhZmEgcHkzaworODAyMzEgMzU5OTU0Y2YwY2NkYTlkMGUyZmMwNjA4NWVkODBmNjY1OWEwMGUyMSByZWxlYXNlMzEtbWFpbnQKKzgwMjMyIDU5MjdmZGY1ZDQ4YzVhZWVlMTdhMjgyZDBjNWNiYjIzMWEzMmQyZDIgbGVnYWN5LXRydW5rCis4MDIzMyA4Yzk4MjhjMTUwNDA5ZjI3ZjExZWEzZjIwYjY1OTczY2M2NTcxYzRiIHB5M2sKKzgwMjM0IGJmOGQ1NDAyYWJmZjI5ZjU0NmNkMjM1MmYyZmQ4OTYyODE5OWIxZTEgcmVsZWFzZTI2LW1haW50Cis4MDIzNSAxZmI2MDgxNDIwNDA0ZjVkYWViNzU5ZDZlY2RjNmZmMThkZGM1ODEwIHJlbGVhc2UzMS1tYWludAorODAyMzYgNWY1ZWU5NGYxOTI2M2RmN2U1NjA5OGJjNzNjMmI1MzAwNmRlM2I3YyBsZWdhY3ktdHJ1bmsKKzgwMjM3IGMyMzdiZjNkMDQzY2FhZDBiYmM1MDA5MTM3NGJlOTQ1YWQyOGE1MzcgcmVsZWFzZTI2LW1haW50Cis4MDIzOCBlZjczYWM3MWUyOTUwMmY2ZGNlZmYzYTM2OTQxN2I5NGRiZTVlYWE0IGxlZ2FjeS10cnVuaworODAyMzkgZTBmY2EzZTdjZWI5NGJkYzU3NDExZjY3MTM5ZTc1OWEzOTFlYTZiMSByZWxlYXNlMjYtbWFpbnQKKzgwMjQwIDYyMDNmNDcxNjU4NWYyZWU1OGNmY2Y1NTdjYjhjNmU5Mzk4YzcxNjcgcHkzaworODAyNDEgOGQwOGZkYzk3YWE0YzUzM2NlZmE4YjA4NGRkNjhjNjNkOGVjMTVlNSByZWxlYXNlMzEtbWFpbnQKKzgwMjQyIGRjNzNlZTJhOGI5ZWM2YjBiYjU3OGEwZTA2OGQxYmU5ZmQxN2QzMjMgbGVnYWN5LXRydW5rCis4MDI0MyA3MjViZThmOTQxOGI4M2U0MjRlM2NjNDUzY2ZjZWI5ODBlYjVkYjA4IGxlZ2FjeS10cnVuaworODAyNDQgODJkZTBiNDg4ZjJkZDczMWNkNjAwNTU5MDJiN2U1Y2FkNmQ2ZGU4NSBweTNrCis4MDI0NSBiMDE4MzE5YTYxNWIzNTIzMGM2ZWM1MDRiOWU5NDI4NDI5ZTQ3MjM2IHJlbGVhc2UzMS1tYWludAorODAyNDYgZjI3MzJjY2MxMmI0NzBkNDk0ZjJhOGVkOTE1NzQ3ZmYyNmJkYjJhMSBweTNrCis4MDI0NyAzOTczODk4MDU2YjYwZmNiNmE4MDIyMWNlMjRhZmY3MGY0NWUzYTAwIHJlbGVhc2UzMS1tYWludAorODAyNDggNzYzODIyM2YyZTAyZTk1MTIzNzhhZjg4MGE2NmQwNTA0NTlhZGNjOSBweTNrCis4MDI0OSA4ZGUyODVjYWRiMjQwMzMwNWQyYWFhY2IwMWFhNjM4MWYxMTE0MjFiIHJlbGVhc2UzMS1tYWludAorODAyNTAgYWUyNzgxOTIyYTZkZTU3MTVmOTUyNGU3OGJjMGZiZjAyZmNlNzZkMyByZWxlYXNlMzEtbWFpbnQKKzgwMjUxIGNlYTM4ZWY2MDcwMGVmMWI4YWY3ZDJiY2RiNjBhOWVlM2Y2ODIwNzUgcHkzaworODAyNTIgODI3NjNiMjAwYTc5Mzc5NTYwOGY4NzA3ODc5MTViNGQ0N2Y4MWYyZiByZWxlYXNlMzEtbWFpbnQKKzgwMjUzIGRhODcwNDk5MzAwMTZmYjUyMDc1NDQ2NjMwYjM5ODk3YzEzODBkOWYgcHkzaworODAyNTQgYmI4ZmU3OWRjNWNiMzUyZmE0YWEzMGE4NDdjM2VjNTJiM2IzNTEwNiByZWxlYXNlMjYtbWFpbnQKKzgwMjU1IDdkMzQzMmIwN2VhMWE2MmRmYTgyN2MzMzUwODQzNDk5ZWUwZDJmMTggcmVsZWFzZTMxLW1haW50Cis4MDI1NiBiZTEwZjRmYWFmMTJjYTE0MGI2ZjFmODkzYjI5ZGIzYmY4Y2Q0YjY2IHB5M2sKKzgwMjU3IGMyZmRkZGIyYjRhNTVhZmZmNWEyMzVkZGExMjIwMDZlY2MxNGI3MzAgcmVsZWFzZTMxLW1haW50Cis4MDI1OCA0MGEzYTYzM2M1NjQ4NGZkNjhmMTUwZGM3YTBkMTFjMzg0Y2ZkYmQzIHJlbGVhc2UyNi1tYWludAorODAyNTkgMzg3NDI4ZmE2OWZjZGIwZTUyZDAxMWViMzJmOTU4ZmExMjFlY2M1MiBweTNrCis4MDI2MCBlNzczZTI0YjE0ZTZiZmU3NTVmMzFmNTMzOGEzZWJmZWZmNWRlZmIwIHJlbGVhc2UzMS1tYWludAorODAyNjEgN2NmYTc5NzVhYjBlMTllMDIzNjNjZTA1OWJmMWJhNDcwNTJlZmRhNCBweTNrCis4MDI2MiA3Y2ExMjcyZjQzYTM0YWUzYWFjMzgyOTZhOTZhYTIwNzM4OGQ0MWM2IHJlbGVhc2UzMS1tYWludAorODAyNjMgNzNhNjE2NWQwMDJiZDQ2NDRlNjkzNTJiZTc0MmQ1ZmQ0ZDNiMzQ4NyBweTNrCis4MDI2NCBkMDcxMjAxZjI2MTJkNjdlZjMwNzI4MGNjMjM2NzZkM2QyNDhlMDgyIHJlbGVhc2UzMS1tYWludAorODAyNjUgNmVjYTdmYmQ1MzllZGYxMGZiYjA5M2NmNzI0Y2I0NTAxOGNiZDUxZCBsZWdhY3ktdHJ1bmsKKzgwMjY2IGFlMjcyZDIxMmE5ZGFjYWZkNmQ5MTRkNDkzZmUwZjA2ZGVjZDhjMzAgcHkzaworODAyNjcgNGU1YzZiMjlkOTI5NWZlNzE5N2YwMTljYmNlN2MzMjU2MTM1ZGVlOSByZWxlYXNlMjYtbWFpbnQKKzgwMjY5IDFmZDI3MDllZDNmZGI5ZTAxMzE3NDI3NDk4Y2Y1NjQ1MjJjMGFmZjUgcmVsZWFzZTMxLW1haW50Cis4MDI3MCBmODhlYTFiNGZkYmU3Yzk2OTk4YWIyZjc4NzlhMzI2MTA1YmY2OGIzIGxlZ2FjeS10cnVuaworODAyNzEgZTMxN2U4NGU4YTFhYTFhOWRiOThkNDIzNDFhMGEyMjNhYTRlMzAzMSByZWxlYXNlMjYtbWFpbnQKKzgwMjcyIDA3MDM1ZGUwNWQ0YmQ0ZmNiMDI4MjUyYzEyYjIwZTQzMWIxNzU0YzAgcHkzaworODAyNzMgMGYwMWJkNjIwODRlZmE2YTVlZTFhOGE0MTU1MGVlNmM2NzM5Zjc2NSBweTNrCis4MDI3NCA2ZGE3MTdiZmU0MjU3ODRlZWYxNGY2YjUzZjVjZTE4OThhNzY1MWQwIGxlZ2FjeS10cnVuaworODAyNzUgNTA2ZmFkZGM4YTllNzJmODkzYmY1Y2RiYmNmNDJlODc4NTdkNDgzMiBweTNrCis4MDI3NiA1N2QwOTc5NTA5Njg3MzZiNDQ5NGZjMjRjYTVhZDcyM2M3MTczYjMyIHB5M2sKKzgwMjc3IDdjOGViMmJhOTEyOThiOWVmNjgwNDI5MzlmNzRkYTU1M2U0OTEwN2QgbGVnYWN5LXRydW5rCis4MDI3OCBkMWQyMDlmMmM4MDM5ZDg3YzA2ZGUwZTU5MTgxMDExZTg3NjJhZmZmIHB5M2sKKzgwMjc5IGQ3ZmVmZmE3OGZhMDE2NzQ5NWZkYjVmNDgwMjA2ZTZmOGY2MTE1MDAgbGVnYWN5LXRydW5rCis4MDI4MCBkMDlmODQyNThlNTIyZGRmN2MyNzFlYzQ4ZDUzZGVmZTRjNTM5MmJlIHB5M2sKKzgwMjgxIGEyMmYyYWU4NTY0NTI1MTg1ZTQ4ZmZkZTIzMDNiMjkzYzQ2YjYwMDkgcmVsZWFzZTI2LW1haW50Cis4MDI4MiA0ZGRjYTdmZDM2MzkxOTAwOGVlNTZiZGY4NWQ2OWZhMmUzODI3YzJlIGxlZ2FjeS10cnVuaworODAyODYgYmQ0NWUwMTEwOTkwMTRlYWViYTZhMzdiZGNjNDhkYzY3YTZmNGY2ZSBweTNrCis4MDI4NyAyNTllZmU1Yjk2MWIxZGNmZmQ0MzQxZGFkMWE4YmYwNGZjODk3Y2M5IHJlbGVhc2UzMS1tYWludAorODAyODggODZkMDhjYjZiYTVjMWE0ZGYzNzE0MTM1MjI1ZTJkNjNjNDg5OWFmZiBsZWdhY3ktdHJ1bmsKKzgwMjg5IDE5YTlhNDU3YTQ3YWM2MDMxNTlkMTYzYTQ0M2NjMmYwMzQ5ODFlZjkgcHkzaworODAyOTAgOGIzNmY3MTc1MjM4NmI5ZDY3NWZkNTFkYzI4OGQ4ZjEwZTJkY2I5MiBweTNrCis4MDI5MSBhZjI3YzVhOWZlYjgxNDg2Y2U1MTBjMTFjMmI2YWQwODA1ZGQ5ZWY4IHB5M2sKKzgwMjkyIDhiMzQ0NWRmYTcxOGVjZjE3ZTk4NjM4YjhjOTA1YjAxYjM1NWY3MTIgcmVsZWFzZTMxLW1haW50Cis4MDI5MyBmMzRmYjE1MTBjYmM1MDU1NmJmOWMzYjk5YjdjOTUwZGUxOWZlZGQ4IHB5M2sKKzgwMjk0IGNjZTBhNWIyMDE1ZTI0OWUxNzI5MWJiMWJkYmU0ZTVlMTRiZDUwYTcgcmVsZWFzZTMxLW1haW50Cis4MDI5NSBmNDA0N2I1YTBmNTRiZDUzZjU1OGRhYmNmMWY4MGMyODhhZGY1OTRhIHJlbGVhc2UyNi1tYWludAorODAyOTYgNDczYTBmNjc4ODA2MTI2MmEzYzE5ODhhNTc5ZTFhODc5MjI0ZWYxOCBweTNrCis4MDI5NyBkOTVhY2U1MjhkNjU3MjZlMjYyMWUxNDUyNTg0YTE0OGQ4Njg4OTRjIHJlbGVhc2UzMS1tYWludAorODAyOTggZjVhZmFkYjc0NWRhMWEzMWQzMGZjOTc5ZjQ5Y2FjYzMxMzYyODdmYyBsZWdhY3ktdHJ1bmsKKzgwMjk5IDFiNDNlZTFlZTNkODg1MjVkMWFiOGJiYzcwYjk4NTNhN2FhN2JkOWYgcHkzaworODAzMDAgYTJhNGQ5ZGM3ODg0ZjRlZjQ5YTk2NmFkMGU4N2Q2ZWFjYmQ0MWIwZSBweTNrCis4MDMwMSA3MDM5YzYwNDRhYjY1MzRmYWIxNzVmZGRhZjRjOTZmZjk4OWUzNDJjIGxlZ2FjeS10cnVuaworODAzMDIgOWI5MmU3NjcxMTM1ODU3MThiZGJkNzA0NWJlNzVjMDUzYjFhNWI2ZCBweTNrCis4MDMwMyA4ZTJhNzg4NDkyOWRhMmQxZjc5NjI1NjdkZDkxN2E4MTcyMDFhODdiIHB5M2sKKzgwMzA0IDk1Y2NhZmMxNDQ3NTgxNjE1YzdhN2Y2MmZiNzlmNDVlNjliZjViNWQgcHkzay1jZGVjaW1hbAorODAzMDUgOGE5MWNiMzZlMDk0Y2NjODk3YTM4ODc1YmEzMzQwN2FjNzhlMmRkNCBweTNrLWNkZWNpbWFsCis4MDMwNiAyZGIwNmZhZThjMmVhZDY1NGZiOWY2NmQ2ZTBhMTAwOWUwZjI4MWE2IGxlZ2FjeS10cnVuaworODAzMDcgOTQyNTQyMzFhYTZhZjk5NDdmNTgxZmVhYTMyMzAzMzAzMmU1MWU4MSByZWxlYXNlMjYtbWFpbnQKKzgwMzA4IDgxOWQ4MTM0NzUyMjhlNzJjMDc0MmRjNWZhYjc3OTAwYTVkZmFmYmEgcmVsZWFzZTI2LW1haW50Cis4MDMwOSBjMjkwNWIwZWYxZDI0ZDRjZDllN2UzNzFjMDgzZWI5YWM1Yjc0YmM5IHB5M2sKKzgwMzEwIDBhN2EyNWJiYjM0ZjcyYjRlYjZjYjAzNjU3NDRhZjM1ZGJmNGM4YjYgcmVsZWFzZTMxLW1haW50Cis4MDMxMSA2ZDgzNmIxMGUzNzA5ODZlOTAxODA4ZjM3ZTU3YTcyNzNhMDU4NjBlIHB5M2sKKzgwMzEyIGE1NTgyN2IwZWMzYmI5NTM0NTM3M2JlNjM2YmRhNDk0NGI0ZWZiZjMgcHkzaworODAzMTQgYzkxZmI1MDZmMDhkZjA5NDVjYmY5OGM5NWFlYzI5OTEwNThlMWI1YyBsZWdhY3ktdHJ1bmsKKzgwMzE1IGMxZDhhMDA1NWZkYTZlNDBhM2Y2ZjcyM2UwZDc2MGViZTQwMTU1NWMgbGVnYWN5LXRydW5rCis4MDMxNiA5ZDg2ZjA3MDFkOWM5ODg3ZjY2NzhjOWFlMDBhNjlkNzI0YmU4OTVkIHJlbGVhc2UyNi1tYWludAorODAzMTcgZjM2YTBlYmViMTYzOTE1N2ZkNzlmZjc2YmJiODQ3ZTk1YThhMGNmMCBweTNrCis4MDMxOCBhMGI4YWYxYmU1NjBiZGFkNjA3NWVjNGVhMDNjZTNmMjAxNzkxNmNkIHJlbGVhc2UzMS1tYWludAorODAzMjAgOWJhMDM3ODNlY2UzY2I0NWRhZGZjNGVjMjdiYjhjMzc4ZGFkZDA4ZCBsZWdhY3ktdHJ1bmsKKzgwMzIxIDhlNDI0NzQxMTc1NDI0MmMzNjQxZmVmYTEyNzk1NGU1ZDc2NTY0NTUgcHkzaworODAzMjIgOGE1YjJkMDYyOThkN2Y3MGViNDNiZThiODIyNzkzNTY5YmNiZTRhYyBsZWdhY3ktdHJ1bmsKKzgwMzIzIGEzY2UyNzViZjA5NTczYjYyMTU0ZWQxMTZiZmVjYjc4MmU0MTZlNTcgcHkzaworODAzMjQgODg4Yzc1YTFiZTU1MjE5YmYzNzAzOGM1MTJlNjJmYWQ2OWY3YjUyMCBweTNrCis4MDMyNSA3NjhjZTEwNzk5ZjJkODUzYzRlNGYwMTYxNjcxYmM3Zjc4MGNkZjZhIGxlZ2FjeS10cnVuaworODAzMjYgOTJhNjMzYTMwYWNiNmNhMTI1MjY3YzI4N2ZjZTJlM2NjZDRiZDVmZSBweTNrCis4MDMyNyA2N2I4MWMzMjg0ZjliMDg1ZjJmNjZhMjJjOGQxMGM4YjdiNTI0MDQ5IHB5M2sKKzgwMzI4IDFjMTA1YjM3MDc0NjA1MzA1MmUwMjQ5MTVjYjAwNGMxZGFlYzkzMjMgcHkzaworODAzMjkgZTA5MWQ5N2Q1MGQ1ODMwNGRiZTQ1MDI0OWMzNzdkNjllYzAwYTk4YiBweTNrCis4MDMzMCAwNzM3OWZlNzVjNTcwN2ZkZjA2ZDY1ZWYzZTQ4NTU0NjYyYzJjZTAwIHJlbGVhc2UyNi1tYWludAorODAzMzEgNTdhYTMxMDEyY2E1MWNjM2RhODM1Y2I4OWVmNjNkNDEzZjcxZmJhMCBweTNrCis4MDMzMiA5MjY2OTk2NWM5OTcxOTRjMmNkOTlkMTFiNWM2M2NkMGU5MzRhYmIwIHJlbGVhc2UzMS1tYWludAorODAzMzMgYjE5YzYxNmQ1YjRhZDhlZjEwODMyODgzNDJjZTliN2NlNWJhOGQ5MiBweTNrCis4MDMzNCA3ZDQ5ZjAyMWM4NDIwOTNiMGNkODJmMWQ0NTk2YThlODBjYTFkNzdhIHB5M2sKKzgwMzM1IDlmNGY2NzBiMTQ4Y2JhNjE2NGNiNTBhYzA0NDAzMmVmNmZkYWVkZmEgcHkzaworODAzMzYgMmIwOWQ4MjFiY2UxZTg5N2I5ZjYwOTc2NzM5NDMxMzYwODNhNDcyMyBsZWdhY3ktdHJ1bmsKKzgwMzM3IGNhZDRlMDlmMDJhMTMzMDdkYjAzZDg5OTE2MDg3NWIxOTJiOGI5NTUgcHkzaworODAzMzggNGIwMWU4MGQ2YzFmZjY4ZmZkNjFjZGQ1NDg0NzNjNDZhZjQ3NjFhOSByZWxlYXNlMjYtbWFpbnQKKzgwMzM5IGIzODc1ZDFiMzg0NzM5MzNlODBiMDI0ODdhODM1YmE4YmM2ODMxMjAgcmVsZWFzZTMxLW1haW50Cis4MDM0MCAxODZiYzNiODBmNTcxMjI5YWQ1M2VlZjA5OTA0MjQyNWI2ZTdkM2YyIHJlbGVhc2UyNi1tYWludAorODAzNDEgOTRiNjQ5NDBkYWM0NjRjN2MzYzYzMTk4NGUyYTFlYjRlMDFiNmU4NCByZWxlYXNlMzEtbWFpbnQKKzgwMzQyIDU0ZjE1MDIwMjg4YTQ2YzZmZTYzMDg2YzMzOTA0Nzc1NGZmMjA2ZDQgcHkzaworODAzNDMgMjM0MDk1OTUxMzcwNzFjYWQzZTcxZGIzM2JjZTg3NzlmMDdiYmVjMyBweTNrCis4MDM0NCA1YzYyNWEwNDhmOWE1NmJiM2IyOTZjNDZjMWY1YjAwOGYxYTc5OWVhIHB5M2stY2RlY2ltYWwKKzgwMzQ2IDEwNGU4YzgwMWU1ZDM4MTljNGUxYzg3OGRmYTJlOWFmZjU1MmJmNjEgcHkzaworODAzNDcgYzQ0OTgxN2Y0YjU0ZGQ0OTRkZDNjNGEzNTUzZmM5YWIxYWIwNmU1MSByZWxlYXNlMzEtbWFpbnQKKzgwMzQ4IDZiN2UyMDAwMGY5NzY2NzdhNjc1YjkwZDMzNmZiMTE4ZGNlNmExMjEgcHkzay1jZGVjaW1hbAorODAzNDkgM2YyNzczYWU4NDQ4YWQyMjkxNzRlMzlhZDMzZjNmN2M5ZDU5ZDlhZCBweTNrCis4MDM1MCA1NDc4MDA0MmQxZTdkNzQzNTY3ZTc3YjZiZGMyODM1MmYwYmNlNzZhIGxlZ2FjeS10cnVuaworODAzNTEgOGMwNTE3ZjUwYzRlOTQ5MjAzNTBlOGRhYzhmNWE1MmM2YjI1ZGY4YSByZWxlYXNlMzEtbWFpbnQKKzgwMzUyIGRlMzk0NTEwMWE2ZTAwYjYxYzUxOTE4MWY0YTA3YTA3OWQ0M2I5MjQgcmVsZWFzZTI2LW1haW50Cis4MDM1MyA3ZmMyNGI0ZTVmZWRjOGU0YjgwNDYzMmMyMjJiMTIzYWJlZTg5MDNmIHB5M2sKKzgwMzU0IDg4OTlmNDA4MDQzYzQ3NzU1MDEyY2IyYTJlNmM5NjRjYWFiNDMyZTAgcmVsZWFzZTMxLW1haW50Cis4MDM1NSAzZDczN2YyYWI5MDE0MGQwMDgzOWNmNDEwOWNlYTE4Y2I5YmNmNDA1IGxlZ2FjeS10cnVuaworODAzNTYgMmMzZDdiZDcxNjM2NDhhMDkzMGI4YjE5NTY0OGY3NTBhN2VkOWM0NyBweTNrLWNkZWNpbWFsCis4MDM1NyA3MzZjZjc1MWZmNGY1YTU3M2UyYzExM2RjMmUzNWQxM2E4YjQwNmQxIGxlZ2FjeS10cnVuaworODAzNTggMGU2NGJhMzIyOTJiYTU3ZjJiMmFlOGNlZjU0ZmU3NmYzZDMyMDlhNiByZWxlYXNlMjYtbWFpbnQKKzgwMzU5IGIzZDIwZDQ0NjYzODk4MmU1ZjY4M2UxMGRkZjAzNDZmOTIwZDhjNjggcHkzaworODAzNjAgZGI3MTZhNzRiNTE3ZmM1ZDkyZjI1YzMwNGYyMTFmOTBlNzI3ZjgxOSByZWxlYXNlMzEtbWFpbnQKKzgwMzYxIGRkMThjY2NiNTViMDhkOWU5OWNiM2IwZjgzZDFjNzg3MjIwODZlOTIgcHkzaworODAzNjIgOWRjODY0ZWY2NDI1ZDVlZTgyZjg0MjY5YjhjNzljNDYyZDFiYWM2NiBsZWdhY3ktdHJ1bmsKKzgwMzYzIDkxN2Q2YTc0ZmQ0ZjNhNDg0YjQxOWIyOTYyMWQ1MTg3ZjM2ZjlkMTUgcmVsZWFzZTMxLW1haW50Cis4MDM2NCA4N2M5OGZiNzc4YjRmZDAyY2ZjZGVhYTAyYjFjNWYzYjk4ZTU1MmY0IHB5M2sKKzgwMzY1IDViNzI2YzYwMWUyMjE2MWE2YTBjYjYzZDc4NTRlYzJkNTM4ZGM5MmUgcmVsZWFzZTI2LW1haW50Cis4MDM2NiAzYThhNjE4NGY0MGE1NGVkN2VkOThkOTBhOGNjOGZhNGUzYzMxODk3IHB5M2sKKzgwMzY3IDI2OTAyZDliZTAzM2M2YzAyYTg5NTc0ZDA3N2JhNDcxZGY5YzRkN2MgcmVsZWFzZTMxLW1haW50Cis4MDM2OCBjMDEzYTcxODI5YmYyM2ZjNzcxM2ViODlhZjE2OWJjYzFhYzdmZjU2IHB5M2sKKzgwMzY5IDRhZDkwNDYwMjQ2MWJhMGNjOTE0NDdhMWUzZGE3MWEyMDg3ZTdiN2EgcHkzaworODAzNzAgNTlhZDI0NGZlMjk0MjkwMDUyNzkwNWUyMWUzNmM5NjU1NDQwOTE3MSBweTNrCis4MDM3MSA4N2Q5ODgyMzVjNTE4ZTcyZmVjMWZhOGFhMDYxYzMxY2JiZjZhYjAzIHJlbGVhc2UzMS1tYWludAorODAzNzIgMzFkMjhmMDRiODIzNTU5NmJkYjI3NGM3Y2JjYjE3NzYxNWVjZDU0YyByZWxlYXNlMzEtbWFpbnQKKzgwMzczIDg4YzdkZDNkNzU3OWI2Y2I4YjhmYmE2MjUyMWNjNTZlMzcwNTM1MWIgcHkzay1jZGVjaW1hbAorODAzNzQgNjZjOWE5NTljMDdlZmUxNjA0YWRmMWJhYTY1Mzk4MGJlYjc0MjIxNyBsZWdhY3ktdHJ1bmsKKzgwMzc1IGI2NmZhNzc3MGJiZGZjZmNkY2IxNzMxODg5MTdiMTU4Mzg4ODk4YTggbGVnYWN5LXRydW5rCis4MDM3NiA5NjE5MGI1YjNmNmRiODhlZTM0YzQxZjc0YTA4NTUzNzUyNzI4ZDA5IHB5M2stY2RlY2ltYWwKKzgwMzc3IDU4OTYzYTc2NTQ3MWQ3ZjE4ZmEzYzYzMGI2NTY5ODZkMmU5ZmM2NmYgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDM3OCBmNjMyYTM4NjFkMTI1NWI2YTQwMzNiYjcyOTQ3YmZjNzU0ODdiMDc2IHJlbGVhc2UyNi1tYWludAorODAzNzkgYjQ1ZGRhMGI1MzhmYWFiZTFmNTU0ZjhiNzJmNjI0MGM1MzkwOGVhYyBweTNrCis4MDM4MCA0YjdmM2FlMjJjOGZkZjhmOTMyMzBmZTA4MTMyN2Q3MjViMmE0ZDQzIHJlbGVhc2UzMS1tYWludAorODAzODEgYzRiNTM0MzM3MzVhMmY4ODVmN2NkYjNlODFiZGY1ZTI1NmY0Y2UwNCByZWxlYXNlMzEtbWFpbnQKKzgwMzgyIGQyZmFkNDIxMGRkNWZiNWI0Mjg4OGQ0Y2I3ZWJjNmFmODkwYmZhZmIgcHkzaworODAzODMgMTQ5YmFkZjczYmNhZDE2MzI4ZTExNjdjMTllMTA5NWVhMzhkMWMwMCByZWxlYXNlMzEtbWFpbnQKKzgwMzg0IDJmZTQ3MzhlZWIyMzYxOWU5OGNlOGYwMDAxNGUyNGI5ZWRkZTI3YWIgcHkzaworODAzODUgYjA1ZDAyNWJjMGRmNmFjMGJjNzVhMmUwYmVkODExM2UzNWRhYmM2MiByZWxlYXNlMzEtbWFpbnQKKzgwMzg2IGJhMTJmOTIxMzRiYTQ5MTk1ZTAxZTU0NmY5YTdlYzYxYmUyMmFiNjUgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDM4OCBhOGUwOTNhMjQwOTQ5MjQ5YjE0ZDBjMTM5M2EzMDYyYmY5OTAzYmFkIGxlZ2FjeS10cnVuaworODAzODkgZWRjN2YzMzA1MTA1MGU0ZjM3NmE4OGIxZjFkMTI3YmJjNzFiMzc1NCByZWxlYXNlMjYtbWFpbnQKKzgwMzkwIDQ3MzgwMWFlOWU4ZWQ3ODkzMDUzYWExZDQzMTVlMjVkYmIwNTg0ZjMgcHkzaworODAzOTEgNTQ1MjZlZWM4YmM2ZTY0NzA2NjFlOGJjZDhiMjU2ZDg5MmRiMmYyZSByZWxlYXNlMzEtbWFpbnQKKzgwMzkyIGM5YTMyZWRkMmJhN2M4OTQyNjE1NmFlNTgyNjU0NmMxYWNkMjQ4MDQgbGVnYWN5LXRydW5rCis4MDM5MyA4ZGQxMjQxMjM4MDEwYzg1MDZkZDcxZDAyOTI4OTU4NTZmMjFlNGQ4IHB5M2staml0Cis4MDM5NCAxZDE4ZDczZjI5YjUzZDE3OWE2NTA5ZTlkZjE2OTEzMTZkMzA1NTYxIHB5M2sKKzgwMzk1IDkyMjhjNmFjNmNjNjc4ZTNiODZlNjI5NzM3OTk5YWM0NGM5MGVhYmUgcHkzay1jZGVjaW1hbAorODAzOTYgNWE1MjRjNmQ0ZTgzNTIzNDY5OTQxNTk4NjQ5MTg5ZWZiNDQ2YTFmOSBsZWdhY3ktdHJ1bmsKKzgwMzk3IDNkZDYwNjM1M2FiNDNiOTYwM2MxNTBmZWIxZWVkYmZmYzYyOGNhNmQgbGVnYWN5LXRydW5rCis4MDM5OCAwNTJkNDg1MTVjNzYyZmU3N2MzMzdkNDg4NzIzNzEzZDQyNTViYmZiIHB5M2stY2RlY2ltYWwKKzgwMzk5IGI0ZWQxNzI3ZGY3NGNjMGNjM2MwYTFjMjY1ODg5NzdhOTBmNmYzY2UgcHkzay1jZGVjaW1hbAorODA0MDEgNTYyOTY3ODgxZGM1MjVkZWJjMmEwMWJmYTQ3ZDNjZTNjZjBkYmViMyBweTNrCis4MDQwMiBlNjU2NGRhMDE3MThhNWIyNWZkNDk3MTllZmM4ZjcyODYyYmZjMjAzIHB5M2sKKzgwNDAzIGQyYzUxMmQwZWNiNjJhMzQ4YzJlOWIyMzY3MzNkY2NhZTIzY2U4MmYgcmVsZWFzZTMxLW1haW50Cis4MDQwNCA4NmZhZGFlYmNmNjZkM2EwMTA3NzAyNjlmM2QyYWE4ZGFiZGIxZmY2IHB5M2sKKzgwNDA1IGM2YjRmNGYyYjlhOGI3MDQwNmI3ZTA5MzQ4NWM1NzU1ZjFkZWU3NGUgcmVsZWFzZTMxLW1haW50Cis4MDQwOCAyMjU4MjUwYzFmYmIzZTdjMTVmMmIzNTU3OTUyN2NmZDJhYTk4MzJlIHB5M2sKKzgwNDA5IGQ0MjZiYmZkNWJkNzkyZWI5MTgzZjUzYjczODc0NDdkYTdlNjMzNjYgcHkzaworODA0MTAgZmZmODFkNzI2MjhlM2ZmYTEwYjVmODQwMmU1YjAwMWMyZmMzYjliMSByZWxlYXNlMzEtbWFpbnQKKzgwNDExIGU3NjA2YzE1NDFmOGI0OWYyMGJhMDk1OGVlYzAzYjdlMDYzMjQ0ZTkgbGVnYWN5LXRydW5rCis4MDQxMiBhMDU5ZWE5NjZiOGNmZDE1NzhmMmUzNGUxMTAzNTBiODEzYjYzYjczIGxlZ2FjeS10cnVuaworODA0MTMgODQyOGVhYTJkM2FkMTAxY2EzYjI0ZmM1ZTRmZjZiMWIyMjBkZTQxZiBweTNrCis4MDQxNCA4MWVmMWU4NDUyZmIwNTlkOTE1YWI3NTFhZDUwNTNhOWVlMzM5M2VhIHJlbGVhc2UzMS1tYWludAorODA0MTUgNjEyZTg2YWIwNWYxMzFiNmEwMDI5Nzg4YTczZDY5NWY5ODEwNTBjYSBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwNDE2IDUyY2Q3ZTA0MGZlZjBkMTYyYjg3NzA3YjRhZmI3YmU5NGRlN2UzNTYgcHkzaworODA0MTcgNjEwYThlZmE4OGRiNjU2MWIzNzhiNzIxZjNkN2RmOWM3OGQ3ZWY3OSByZWxlYXNlMzEtbWFpbnQKKzgwNDE5IDBlYzE2ZDgzMTk5MDU4NGZiMzI3ZTBhODg1OWM4MjQ2YzAzNzQ3MmUgcmVsZWFzZTI2LW1haW50Cis4MDQyMCBmYzk3Nzg0ZTVjYzIxZjI5ZTU2NmI2MWNiMTMwYzc4N2NiMTUwZTcyIHJlbGVhc2UzMS1tYWludAorODA0MjEgZGM4YzhkNTQ1MDRlMTg0MzU3MzgwYWNmMTVlYzU4N2EzMWFiMmNjMCBweTNrCis4MDQyMiA2N2E2MDQ4MjljOTcwYzdiYjYxYWE0OTg0MjEyYTQxNjVmYmRkNDhiIHJlbGVhc2UzMS1tYWludAorODA0MjMgMmMzMWRhYzY5NGZmMDQzYzhhN2M4Y2U1MTM3MDQ1MTFlMDJmNzg5ZiBsZWdhY3ktdHJ1bmsKKzgwNDI0IGU3OWE2YzgwMjkzNDE4OWY2OWE3NzNmYmI0MzVkMmNkYWY1ZTI1M2YgcHkzaworODA0MjUgNzRlNDlmYjViYTEyYjJlM2FjMzliOGViNDY4OWM0MjMxZmRjYzU3ZiByZWxlYXNlMjYtbWFpbnQKKzgwNDI2IDgxYWEwMDI4NGJkMjExOTAwY2VmMGM5MDY5ZjY1MWY3MjVmNWI0YmEgcHkzaworODA0MjcgNTRlNWFiMjliMzBiZmY0MzYwZjJiZjk3NWI5MTA3NGZmM2U1NjBhZCByZWxlYXNlMzEtbWFpbnQKKzgwNDI4IGQ3Yzc4M2VmNDU0ODZmZWI4NDc4OTBiNDc2N2E0NTRhNjJjODRjNWIgbGVnYWN5LXRydW5rCis4MDQyOSA3NjkxODk5ZTE4NWYyNzcxMzYwZTZmNjdkYmM2ZTk4Yzc5MDAzMDhiIHB5M2sKKzgwNDMwIDk1YzVlMDk0YjM4MDY0ZDU0ZTNjZWU2MjQ0OTE2MGQ3YjBiOWUxMGYgcmVsZWFzZTMxLW1haW50Cis4MDQzMSAwNjhhMmU3MTU3YWNlY2JkNmMzMTkyYjIwOGFkNGNiMGZjMTdhYzliIHJlbGVhc2UyNi1tYWludAorODA0MzIgY2EwY2JhYzdiODk4MWNkZjBhYTMxMWFjNmU5ODhkZDVlM2I3ZmQwOCBsZWdhY3ktdHJ1bmsKKzgwNDMzIDU4N2RmMGQ3NDc4NTMzYThkMDlmZDhiY2QwNTUzM2I5ZGFmMzA0YTUgbGVnYWN5LXRydW5rCis4MDQzNCA2NzJhZGZjNWRiNDc5OWJiYzc0ODM2NWJkODI0NWNmMGYxZDQzNjBlIGxlZ2FjeS10cnVuaworODA0MzUgNjVkNmM3YmM1ZDVhNDY0N2I3YjZjMGM0NDZhM2QwNjI4NDMzYWMwNyByZWxlYXNlMjYtbWFpbnQKKzgwNDM2IDgwODEwZDgyMzE4ZmQwNzNhNDlmMjA0NjA4MWE4ZmY4OWMwNjRiNmUgcHkzaworODA0MzcgZDgxZWZmMTE4ZDgxOGVmNjFmODIzZDlhYzk2NWFjYTgzMzAyODgwOSByZWxlYXNlMzEtbWFpbnQKKzgwNDM4IDVlNjk1MTljNGUzN2RiMmUxOGI2MDQ0NDY3NjY2NjNhOTU4NTBlNTUgcmVsZWFzZTI2LW1haW50Cis4MDQzOSAzYjgzNDFkMDUyMTZlYzg4Zjk1OGE2ZDZjYjg3NzU5ZGFmMGU1YmM3IGxlZ2FjeS10cnVuaworODA0NDAgMmE3NjhlYTA2MDIzMGU1Yzg0YTgxNGU4YjE5NmI3ODlhZTI0OTcwMCByZWxlYXNlMjYtbWFpbnQKKzgwNDQxIDY0NDYxZjY4YTEwZTAxYWJmYWIxZjUyZDczM2M5Mjc1ZWJiY2Y4NjEgcHkzaworODA0NDIgOTFmOTE2OGFhZGQwZTMzZjQ4MmJjOTUzYjYxYjUzZjM5MWMyNGFhMyByZWxlYXNlMzEtbWFpbnQKKzgwNDQzIGY0ZmU1M2Y4NjYyNzU2NTJlYzE4NjYxYTljM2JjY2QxMjI4OThhZWQgbGVnYWN5LXRydW5rCis4MDQ0NCBlOWQ4ODhjMDhiZjhhMTZhNjdjZDQxZjVmYzgzZDBiOGUwZTY3NzE1IHB5M2sKKzgwNDQ1IGMzOWFjYmI2M2VjM2Y1MWM5ZGNmM2FlMDE5Y2ExNzMyYjdjNjM1ZDAgbGVnYWN5LXRydW5rCis4MDQ0NiAyNGZmODc0MGU0ODEwYmM3NjI1ZWE4ZjY5NzEyYTQ4ZTAxMTcxNTY0IHJlbGVhc2UyNi1tYWludAorODA0NDcgM2E5YTIyZDdiMjJlODEyNmVjM2NiZTk1MTQyOGNmMDUyOTkwMDUxOSBweTNrCis4MDQ0OCA3YmQzODQ3MmVhMjEyMjUxMDNlZjRmMTE4N2MyMDQ5NmMyOTA3ZmNlIHJlbGVhc2UzMS1tYWludAorODA0NDkgZTRjMWViY2I0NjA0OGUxN2ZjZjM3YTlhNmRhYjhhYmUyYjAyMDI1MCBweTNrCis4MDQ1MCA3OTEyOGVmZThhOTkzYTFjNjdhNTU3MTA3NDJiYzBkNmFiMzcyODMyIHB5M2sKKzgwNDUxIGEwOWQ3ZjQxNGNkMTVjMTYyN2Q2MTEyNjM5YWVhMjJmM2U2NWUwNjEgbGVnYWN5LXRydW5rCis4MDQ1MiA3NmEwNTJlZWRlZTY3ZjQxOTVjMWJlZDIzZjhhZTg5ZTc4OWVjZWM4IGxlZ2FjeS10cnVuaworODA0NTMgY2U0OTE2Y2EwNmRkMDM3Y2ExMjIwMWU1OGI5MzZmZGRmZDQxN2E3MiByZWxlYXNlMjYtbWFpbnQKKzgwNDU0IGE1MWFkOGYwOWI2ZjdmMTZmMTQ5MTM0NDUzYzQzNmE2ODU2YzRjZmUgcHkzaworODA0NTUgNWVkMzRmM2Y2YzM1NTFjMjUyNWJhOTEyNjc5ZTMyNThjNjk4OTg1NSByZWxlYXNlMzEtbWFpbnQKKzgwNDU2IGE5MTk2MTE5ZDMzNWIyZTBjMjFjZjMxNjVhMDA4ZTBhYmVlNjA3NzkgcHkzaworODA0NTcgMGZmOGFkZGU2MDljZjllMTc3ZThkNTBhYmJmMDIxZTZhNGYxYzUxNSByZWxlYXNlMzEtbWFpbnQKKzgwNDU4IDZhZmY5YjBhMjg4ZDVmNDU1MDQ0MjA2YTI1NjgyMWFlOTI0NDBjNDYgbGVnYWN5LXRydW5rCis4MDQ1OSA3ZTIyMjk4Nzc0NTlmZTM1MjI1ODNjZTI4ZjkyMmZkOWQ3Njc5NTI5IHB5M2sKKzgwNDYwIGQ1ZWNlNDhlMTYwNmRmZWU2MmIwNjk4ZTcyZjIyNzA2MDA0ODkyOWYgbGVnYWN5LXRydW5rCis4MDQ2MSA5MjBmMzQxMDZjMzQ0YzZmOTJlMDdlODM1NTlkNDViNTc3ZWJmNjAzIGxlZ2FjeS10cnVuaworODA0NjIgNDY5ODljY2M2NTI5NTljZGZmZjdjMWNlNjdmOTNiYmNjZmJmMDA2ZiByZWxlYXNlMjYtbWFpbnQKKzgwNDYzIDBmODdiZTYzMzNkYTM3MDA4ZmUxMTJiNjc2YWE3ZWM2NjgxY2MyZmYgcHkzaworODA0NjQgZDA1M2JiM2Q3ODQyY2JhMWZjNDUyMzAyYzkzMzYwYWFkN2YzOTlmZSByZWxlYXNlMzEtbWFpbnQKKzgwNDY1IGVhZjU2MmY1ODA3ZGUxOTFkNDExNzNhOGE1MWI3NTM2NTFhZTE2ZjMgbGVnYWN5LXRydW5rCis4MDQ2NiAwNjMyMmFiYTg0ZmFmNTc3YjIyNWU2ZWM3NGRmMzYxMTc1ODc4NzQ0IGxlZ2FjeS10cnVuaworODA0NjcgOTgwOGRiOTc5ODU0MTE0OTBhNTE1NjAwNjZhYTVhNmMwZmQ5ZTYxOSBsZWdhY3ktdHJ1bmsKKzgwNDY4IGJlYmNjMjI0YzdjMmMzYmU3Mjk3Nzg4Y2YzNDQ1ZmVmMjNmNWQ4MGIgbGVnYWN5LXRydW5rCis4MDQ2OSA1ZTJkNjE3NTFkOTgwOWYzMjU1YWJkNTA2MWEzNWNmZmYwYTQ4MWZhIGxlZ2FjeS10cnVuaworODA0NzAgMDM2M2M2OTdlMGRhMzA4MDhjODA5MWFhZWE0ZjMxZmQzMmFlMWY1NyBsZWdhY3ktdHJ1bmsKKzgwNDcxIGMyZmZkMjBkNmNmODk2ZTlmYzBhNjRjY2MyMGNlOWRkOTdkZjg5NGEgcmVsZWFzZTI2LW1haW50Cis4MDQ3MiBlZGUxNmEyNzkyYjRjODU5NzMzZmUzN2E5NGQ4OTlmNzBmMmMwZGUxIHB5M2sKKzgwNDczIDAzZjMxZjdlNzYyNzZhZGI5MzI0NDc4YTUwM2Q1MTA0YjRlNmMxMmEgcmVsZWFzZTMxLW1haW50Cis4MDQ3NCBkMjNmNjI2YTczNzk5MWFhMjQ4YmIxNTAwY2U0YmU3ZmM4OWM4OGVhIHB5M2sKKzgwNDc1IGZlMGM0N2RkNWY4NGYxNDBhNjc3YjdhZjBhOTk2ODQ0NmUwYjE1ZmUgcHkzaworODA0NzYgNmZiMzg0N2QzOWVmMzlhMDU3ODUyZmMxY2MxYTJiNTJkOWZjNDkxMCBsZWdhY3ktdHJ1bmsKKzgwNDc3IGMzNmM4MzZmZjQ2NTEyNjVjZTM0YWViY2VkN2M2MzkwMWJjOGU2YmUgcHkzaworODA0NzggYjlmMjEwMmFkNWYwMjY4NWY2Y2U2ZjNkNGE3ZjRkNDQ4YjJmMzEzNyBweTNrCis4MDQ3OSBlZGZkMGUxYjk3NTRkN2U1ZDU5MjE3Yzc0ZTAyZjY1ZTQ0NTgzMDVmIHB5M2sKKzgwNDgwIDVhYzBhYWUyOGY0YzAyMmRlMmE3YmJmZTllZGQ1MTkzZjE3ODU4MmUgbGVnYWN5LXRydW5rCis4MDQ4MSA5NmNhNTBjYjI2MTM1OTNhZmIyM2Q3ZWE4MWIxZDU5YTE1NmJmMDg4IHB5M2sKKzgwNDgyIGQ4MDRkZDk1NzM3YzNhZjNlMWU4ZGU2YmM1N2FmMDI3MWUzMjg1NjEgcmVsZWFzZTI2LW1haW50Cis4MDQ4MyBjMWZiN2Q1ZWU0MzczYjk0YTkxMWNkM2RiMDg0ZDI0ZmQwYWQ4ODljIHB5M2sKKzgwNDg0IDVmMTk2MjIyMDc5Mjg4MDljYmI2NDcyNzczNjUxYTAzZDAyYTk1NjYgbGVnYWN5LXRydW5rCis4MDQ4NSBlOTgyNjZjNTFhMGUwOGUxYWVkYzExZGU4ZDVlODRkMjUyYjQ3OGVmIHB5M2sKKzgwNDg2IGVhNDNmN2Y2ZTg0Y2Y5NWY3Yzk0NTdiY2JhMTFlODMzYmFiZGE0YzQgcmVsZWFzZTI2LW1haW50Cis4MDQ4NyBmNTIzZTQwZGY5YzU2OGY3YmQ3NDFjYmZjNmQ5N2YxZWVkZjA5YzY0IHB5M2sKKzgwNDg4IGMwMjE0NGIxYzk4Y2EwYTFmMjU3NmJkNGRlOGVmYjY2NzhjNjY3YzggcmVsZWFzZTI2LW1haW50Cis4MDQ4OSA2NTQ4YzIzNjc2YTY4N2FhMmRlY2EzZmYxZmVkZTNhMjg1NTk5NWU0IHB5M2sKKzgwNDkwIGVmMGE4OTgxYzM3MDMxYzBkNWY0MDg1N2E5OWMyZWY5NWJkZTVmMDIgcmVsZWFzZTMxLW1haW50Cis4MDQ5MSA5MTY1MjMyZTZkMWFlNDRjNzAzYzZjNzFjNTg2MDAxZTIzMDJjYjAyIHJlbGVhc2UzMS1tYWludAorODA0OTIgOGM3MTc5MTI1ODAzMjRlN2ZkMTEzNWE5YjYyNzNlNDM2MDA0OWY0YiBsZWdhY3ktdHJ1bmsKKzgwNDkzIDJhMDMwYzFjZTk3MmQ1ODcwMzcwM2E5NmY2NGQ4NjM1YmFmNmNiZTEgcHkzaworODA0OTQgYjcxODI2MjQ5ZmJlMTNjN2EzNGRmYzFkYTRlNWYwZWZhZjczYmM5NCByZWxlYXNlMzEtbWFpbnQKKzgwNDk1IGFhNjg1NGE2ZjZkMWQwODRhZTBiNWY3ZjYxNDViODRiZGVjNWEyZjQgcmVsZWFzZTMxLW1haW50Cis4MDQ5NiBkMmE0ZTk2YjU0YTZjZmU1NzljZDQyNTEzNjBjMTIzYTE4Zjg5NGUzIGxlZ2FjeS10cnVuaworODA0OTcgYWI4ZmU5NDc3MzIzNDNkMmU0NzdiYTU2NjVlNGRkZjRiM2JkMjVjZSBweTNrCis4MDUwMSBlZmQ3MDU1M2EwOTg5MjMyZmYxZjZiNDdiZGYzYjUzYzAwZjU3YzZmIHB5M2sKKzgwNTAyIGMwM2EzYzZhNDU2MjYwYjZmOGMwNTVkOWY0MWQxNGE5NWNkODg4OWMgcHkzaworODA1MDMgZDYzYmIzNWRlMmYwMGFhMzgzYjBlM2E0YjRjOTljMjMxODQ5ODIwMSBsZWdhY3ktdHJ1bmsKKzgwNTA0IDA0OGY2YTkyYmRlM2E2YjhkNzUzYjBjMWExYzg0NWU5NGE4NzMzNTEgcmVsZWFzZTI2LW1haW50Cis4MDUwNSAxMGRhZjYzNGUyNGY0ODI2OThhY2Y3OTRlNzQ2ZWRlZDMzOTY2NDVjIHB5M2sKKzgwNTA2IGNmMjA0YTczNzgzZDg1ZGJjMDRkYjRiYzhlNTliMWVhZTQ1NjdiMzcgcmVsZWFzZTMxLW1haW50Cis4MDUwNyA3ZmMyMTFkZjNkNWIyMDUwNGE0ZGFiMjJkZjlmMWU2ODVlMjI4YWNiIGxlZ2FjeS10cnVuaworODA1MDggODYwMDczNTA1YWNhMzI5ZDQwYmM5ZmEwZWJlMTE0MzBkYWIwM2I5ZCByZWxlYXNlMjYtbWFpbnQKKzgwNTA5IDNmZThjZjc4NzM1MzAzNzQ4NGYzZDZjZDEwZDZiMGE5NTZmYWE1NmQgcHkzaworODA1MTAgYjg3N2QyZDA0YzE0Njc1YjEyMGU4NGZkYjQ3MTdiYmIwMDZkNjI1OSByZWxlYXNlMzEtbWFpbnQKKzgwNTEyIDMwOTAzNWMyMmRjZGNjZmI2YmNkZWM2YjA2MjVhZDVmM2ZiMGY0ODEgbGVnYWN5LXRydW5rCis4MDUxNSAzYjI0NGViMjBmYTEzYjE4ZjE1MTNhNGE3MDFiY2ZlM2ZkZjA5ODgyIHB5M2sKKzgwNTE2IGQ1NTkwYTk4N2NiMDZlMGMyMTQxMzQ3MzVjOTU4NDIzYTY0NGM5ZmEgcmVsZWFzZTMxLW1haW50Cis4MDUxNyBkZDQ2NjQ5NDU0NmRkZTM3MjZhYzVkODRmYzJkNmRkNGQ0ZGVhMDI5IHB5M2sKKzgwNTE4IDExYzlhZGFlZjk2YjBiYzM2MWFkOTVhYzZjOGJkMDc4YzYzOTUwYjQgcmVsZWFzZTMxLW1haW50Cis4MDUxOSAxNTcxZjA5ZjRhMjc3NWRkMzg2YTY0ZTA0NDY2MjFlZTIxZGY3M2U3IGxlZ2FjeS10cnVuaworODA1MjAgNzg0Y2ZiYWEyMjlmMTYwY2RiNmEwZmZhZTk5MzZmNmZkNjQzNWJlOCBweTNrCis4MDUyMSA4M2I5MzAzNmVjM2Q3YzY1YmRhMzk2N2MzNDQ3Yzc3NjEzNTE1ZTdhIHB5M2sKKzgwNTIyIDE4YjJkYmJiYzViMjUyMzcyNWMwMmE4YjFlMDBkZDJlMmZkZWJlN2MgbGVnYWN5LXRydW5rCis4MDUyMyBjMDdkMmU1YWNmNjVjMWYzNmFlZDY4MDRiZWI1MTcxNTA5ZTRjMDI4IHJlbGVhc2UyNi1tYWludAorODA1MjQgMjJkZTZjNzFjZGI0MTUyMTZlZGY3ZjNmMzM0OGIxZGMxYzE2YjU1NCBweTNrCis4MDUyNSA0NmFhZTQwNjc0MmQ5ZjE2M2ZiY2I0YjRjM2RmYzI3ZDUxMDhhMzUzIHJlbGVhc2UzMS1tYWludAorODA1MjYgNzEyMzAxNTA2NzMwZDc0MjEzZjBkNGQ0MmQwYzg1Mzg1MzM2ZWQwMSBsZWdhY3ktdHJ1bmsKKzgwNTI3IDZkYTllYWZiMWRhYWRiZWRiYzAzMGQxNzVjY2UwYTZiMDQxNDYxYWUgcmVsZWFzZTI2LW1haW50Cis4MDUyOCBlMjVjNzhhODJhMDgzYjhmYjk5NmUxZTUxOGVjYjI1OTZlMjVlZjNjIHB5M2sKKzgwNTI5IGQ0NDdjNjBmYjRkODg2YzRjZDc3M2U4YWM1MDMzOGYyNDVhMTUxMDcgbGVnYWN5LXRydW5rCis4MDUzMCAxZTFiMjM1MWNmMTJmYjQ1ODJjOTM3ZWEyYzdmZTk5OGM0ZWU5YzM2IHJlbGVhc2UzMS1tYWludAorODA1MzEgZmZlOTlmNTIyZDg2M2JjYTlhNDFiYWQ5NzYyZmMyYWU1YzQwNDFjNyByZWxlYXNlMjYtbWFpbnQKKzgwNTMyIGQ2MjcwOGFlMjZhNTUzNmMwYTA1Nzc3NTMzZWQyMzMyYWIwMjJmYjQgcHkzaworODA1MzMgYzg2OTQwOGQ0ZDNlZGRjMTg0MDk2NGYxN2EyMDM3YmQ1YmI0Y2M2NCByZWxlYXNlMzEtbWFpbnQKKzgwNTM0IDYxYWU2NjRkZTU2YmEwNWExNzQ5NjI1NjA3NmJmOWE4ZTAwMjI3MzggbGVnYWN5LXRydW5rCis4MDUzNSA5NjllZjVlYjgwYzQzNTMyNzM3MDc2NGJhOGQ5MDJkMDU4MGU2OTZhIHJlbGVhc2UyNi1tYWludAorODA1MzYgZjEwYTM3ODc4ZDg0MmQyNzIxOWFlZjZmMWExNWU0MjQyMTFiYTZjMCBweTNrCis4MDUzNyA3MTE1MmNlNzAxZWE1ZDQyZjg2Nzc1YjhmYTg1YTQ5YTJiMDFhYzE2IHJlbGVhc2UzMS1tYWludAorODA1MzggNWMzODJiZmMwMTVhNjY0ZGI5OGU4ZmQxNzY3NjI2MDVmZDgyZjQ1YiByZWxlYXNlMjYtbWFpbnQKKzgwNTM5IDZhOTBkYzk2N2ZlZDAwYzEzNzZiODAxYmQxZGJlZDgyZDYzYWJiM2UgcmVsZWFzZTMxLW1haW50Cis4MDU0MCA0NDhlZjkwMDA4MWNlMmM4ODZjMzg2Zjg3YzlmOTNhY2I4NTA0YTdmIGxlZ2FjeS10cnVuaworODA1NDEgZWVmNGI5NTRkNjQ0MzkwZTQ3ZmE5YjJjMjVkM2NhYzhkYjdjNGUzYSByZWxlYXNlMjYtbWFpbnQKKzgwNTQyIGNhZmVmNzQ1NGRmOWVjYWU2OWNiMWUzOWY1M2FjM2NmMmQ2YWJmY2MgcHkzaworODA1NDMgMTY0YjNhY2FkOWRhY2ExM2UwMGY5ZDA5ZTJiMjhhN2VlM2QyZDVkYyByZWxlYXNlMzEtbWFpbnQKKzgwNTQ0IGFkYzA3OTdiYTkyMTJmMzFlZGQ3MTcyZjk4OGNhYmQzZTM5NDU3N2EgbGVnYWN5LXRydW5rCis4MDU0NSAzNjkxZDc1YjA2MjYzODQxNjRlZDgzMzIxMjY4NzU0MDI3YjVjZTMwIHB5M2sKKzgwNTQ2IDZlY2IzYzgzZmU4MWJmMDU2MjFkMWVkZTM0NDQ5ZTc0MmQzODM5YzggbGVnYWN5LXRydW5rCis4MDU0NyAxN2NjMmY1MzI1NjMxM2FiOWQ1MzQ4ZTAwMmI4OGIxN2RkMDEzMWZkIGxlZ2FjeS10cnVuaworODA1NDggY2NiMWQ1ZWYwNGQ2YTkyMmNkZjNjNTg3OWMxNTc0NjMyMzFhN2Y4OSBsZWdhY3ktdHJ1bmsKKzgwNTQ5IGFlNmY1ODY1YjM4NjA0MWQxZDhiMGY0YTM0OGE3ZDNiNjBmNGYxMzYgbGVnYWN5LXRydW5rCis4MDU1MCAxYWIyNDk0MWM5OTZhZmU5NzA5ZWU0NzRjYjIxZDExZjhlYWQ2OGRhIHB5M2sKKzgwNTUxIDNiNjk3OTA1NWY1YWUxODk0NzUzYjUxOTU3NDk4YWYzY2E4YTM1ZjEgcHkzaworODA1NTIgNmQ5ZDg1NDU4NjFlZWE0YjRmOTNlNjEyMzhlYWJhOTQ5YzJhODY1YSBsZWdhY3ktdHJ1bmsKKzgwNTUzIDEzNzkxNjU0M2VmYWU3ODgyNmE1M2YwZDQzMjk5MjE3OTc0YTVjYmIgbGVnYWN5LXRydW5rCis4MDU1NCBjN2E1ODIyYmYyOTQ4NzM2MzhlMjc5MWZkNTQzMzE4NjFkMzEwMWE5IGxlZ2FjeS10cnVuaworODA1NTUgMDdjZTVhZjMxN2VlMmIzYmUyOTZjODFmNDEzNjRkYjlmZDcxMThkMyBsZWdhY3ktdHJ1bmsKKzgwNTU2IGZiMTBlZjBlZmEyMzU1MmJlN2VmZGI5MzI3OTYwYzZlNjBlZTVkNzcgbGVnYWN5LXRydW5rCis4MDU1NyBmZDNhYmY4MmFjOTYwNWNhMjhhY2M4YTA1MWZkMzMyM2ZlMmQyZTgzIGxlZ2FjeS10cnVuaworODA1NTggMzE2YjU3MDE3ZDBmMjU3NGMyMDBiOWZkMDQ3MThiY2VhYWIyZmZmNiByZWxlYXNlMjYtbWFpbnQKKzgwNTU5IDhjNjQ2OTY3YmE2YjdmMzk0ODQxZTYzMDZmNjc0NThjZmYzMmI5N2UgcHkzaworODA1NjAgODI3OTIwYzU0NmFmNTgwNGY2NTdjYjJkMzJjZGY5YTBkNGM4YTljOSByZWxlYXNlMzEtbWFpbnQKKzgwNTYxIDRhNjlkMzJhMTdiOTA3NmU3MjYwODdjNzJkMzkxNmM1NDJkMTMzNTIgbGVnYWN5LXRydW5rCis4MDU2MiA0NTcyMWI5Y2EyMjA0MTQ0NTQ1ZTc5MDUwYzZlZTBhOWUwYWQwZDEzIHB5M2sKKzgwNTYzIDgxZDcwMzNkOTVhMzVlNDNhODAxMWJlODcxMzdjNjI0ZDRhOWFhMjEgcmVsZWFzZTI2LW1haW50Cis4MDU2NCBiODhhYTEzY2VhZjI1NDFhNDZhZDE0ODc0OTg3NDVmZThlM2Y2MzM2IGxlZ2FjeS10cnVuaworODA1NjUgOTY3ZjdiYzJkY2M4NjM1NDFmMTJkNzZhM2FlM2I5MDRiY2Q3MmExMCBsZWdhY3ktdHJ1bmsKKzgwNTY2IDgyZDQ4NzI0MTMwNjdiOTYwNDQ5MzFmNTRkNjIwZTUyMmI3ZDUwNDAgbGVnYWN5LXRydW5rCis4MDU2NyBiMGYzNDJhYjUwOTUxOGE2YzAyNTZhYjFkNTYwODNlYjg2YzI0ZWUzIHJlbGVhc2UzMS1tYWludAorODA1NjggZjA5MGJkNzJhY2Q4MmE2MTA0MTE5YWY2MGVhMDhmNDg5NzA3M2ZhMCBsZWdhY3ktdHJ1bmsKKzgwNTY5IDBkYzIxMTVmNmJiZWFkZjA4NzIyMmQzYjU5MmRjM2U3YWQyZWU5ZDIgbGVnYWN5LXRydW5rCis4MDU3MCBiYWVmZDdiNDI1ZjE3ODFjYjUxOWVjMzk1OTc1MjhiMjBiNjhjNmVhIGxlZ2FjeS10cnVuaworODA1NzEgM2EwNDg0MjAwMDM0MzhmNTc2ZDIwODc4YjIyMDk2ZWIyMmQ0MTY1MSBsZWdhY3ktdHJ1bmsKKzgwNTc0IGU4NGE0Y2RlNzljN2NhMGI2MTNiMmI0NzM0Njg4YjlmNTFkMGI3MDQgbGVnYWN5LXRydW5rCis4MDU3NSBlYzc3MTVlYTJjNzUxMmJlZGMyMjM0NTUyNjhjMDI3NzZmMmJiNGQwIHJlbGVhc2UyNi1tYWludAorODA1NzYgNjViZTFlNjc4ZTYzZTI2OGM3ZjZkMDM0MTI5MDc4Y2ZiNmI1N2E5NSBweTNrCis4MDU3NyBkNzRlZDdlMjFlNjI5MWE5ZmZlYzlhMGFkMTk4YTIxYjA4ZGVlNDA4IHJlbGVhc2UzMS1tYWludAorODA1NzggNTFlMzBiOTE2ZmM0OTdjZmViYWVjZWE1ZDY5ZWE3Y2Q3YjgxOWJjOCBsZWdhY3ktdHJ1bmsKKzgwNTc5IDIyMGQ0NzY3ZmE5NzgxYmJkNTY5NzllYWQxNzgzMjNkZWRkYTIxODkgbGVnYWN5LXRydW5rCis4MDU4MCAwYjVjNDhjNzYyMjQzZTdmYWM1OTU3YTFiZWFkN2ZiY2M1NzRhOWI1IGxlZ2FjeS10cnVuaworODA1ODEgYzllNDBjZWRjOGJjMjVmZWZjZDk2ZjFiYWQ4YmM3OTg3NzFmNjczNSBsZWdhY3ktdHJ1bmsKKzgwNTgyIGZmMWE1OTNmOGQyM2MxZjc3ODgyY2RkYTNjZWVjZDQ0MTU1MjE3ZjMgcHkzaworODA1ODMgNTc1NDhjY2UxZWEwNWFiNjE0NDRhNjdkNGUzYzQ4ODg3YmY4ZGU0NiBsZWdhY3ktdHJ1bmsKKzgwNTg0IDFlMWNjNjcyZWJkZDI3NjVmM2E4ZmQ5ZjgxYWFlOGQ3OTBhMjUzZWEgcmVsZWFzZTI2LW1haW50Cis4MDU4NSAwNGExOGU1OWNjMmM0MDRkMDJkNDNmMDMwMjkzNDRkMjU4MzQxZjgzIHB5M2sKKzgwNTg2IGNkODhmNWZlMmQwNjUyMzAwZDkzODNiZTg2ZTI4ODRjOGRmZGE0NjMgcmVsZWFzZTMxLW1haW50Cis4MDU4NyBmZDdlYzYwN2UxMDFhNTk0M2MyZDQ5YTE3MTk4ZWY0YTM5ZmM4ZTcwIHB5M2sKKzgwNTg4IDY5NTBlYWI1MWZmZTYxN2RhMDEzNDI4N2MzYThjNWQwNTMwZDkzMWMgcmVsZWFzZTMxLW1haW50Cis4MDU4OSBhNDM3NzY1NTNhYjUzMDc4M2NiNGNkYzE2Nzc5ZWZjZDVlOGY0YmNlIHB5M2sKKzgwNTkwIDA1ZmUxMzdiN2VmZjAzNTY4NjhjNTkwMGMzYWQxMDM4NDgzZTQ4ZmEgcmVsZWFzZTMxLW1haW50Cis4MDU5MSA3MjE2OTJlZDRhN2NhOTllOWQ5OWRkZTdhMTFkNzM5NzZjOTg3YmUxIGxlZ2FjeS10cnVuaworODA1OTIgOTdjZTZjZTZhMjg5NDhiYzZmNDU1Yzg4M2JiNmY2YTM1NzExZjVmOCBsZWdhY3ktdHJ1bmsKKzgwNTkzIDBmNjVmYmU2NmUzYTNiZjlhNjhhYzQ4OTM2OGM2MTk2MDg3YWM3NDQgcmVsZWFzZTI2LW1haW50Cis4MDU5NCA1OWIyYWRiNTJiMTZiMTg5MzIzNDY0ZDIwZjI3ZDNiZmM3NTM0YzkwIHB5M2sKKzgwNTk1IGU3ZjA1ZGI1ZjNiMDMyNzQ0NjhjOGZlYWZiYzY2MjIyYzIzYmJiMzQgcmVsZWFzZTMxLW1haW50Cis4MDU5NiA4MDdmY2FjNGYxN2I1M2E0NmE2M2ExYjIzYzA1MjFhMmZkZGRjODk1IGxlZ2FjeS10cnVuaworODA1OTcgZWE4M2E2MWY2NDMwZTFhNWUzYjdhNjBmZTM3ZmU4OGY1ZjAyMzhkMSByZWxlYXNlMjYtbWFpbnQKKzgwNTk4IDBmM2Y4YjllYjZmZjhkYjFkYTk3NjBjODhlYWYzOWQyMjdhOGM3YjkgcHkzaworODA1OTkgMWQyYjMyMmM0NmJlMzQ1ZDBmZmE3YjFiOGUyYzc4NDgwZmU5MzZiMCByZWxlYXNlMzEtbWFpbnQKKzgwNjAwIDQ5M2JiNDU4NWUzODBmMDk5MGE1YTA1MTQ3MzJlOGU4NDljNWI2ZjUgcHkzaworODA2MDEgZDlhZmE1ZDEyMWVhN2I2ODk1NzliMzI2ZjljYmFhMmJhN2E1YjA4ZiByZWxlYXNlMzEtbWFpbnQKKzgwNjAyIDk0ZTNlOTg5YWUyM2Y3ZGM0Yjc3MjdhMTcxMTdiNzhlYjkxZGRjNTIgcmVsZWFzZTI2LW1haW50Cis4MDYwMyAxODVkZTMxYzhhNmM5YTk0NmViMjk4ZDQ5MmI5NTExMDJlY2ZkNzc2IHB5M2sKKzgwNjA0IDAwNzMxOWE5Yzg4OGNmZDY1MDBkMzk3MTVlNDJlZmIyOWNlMGVkNmEgcmVsZWFzZTMxLW1haW50Cis4MDYwNSA1Zjg4MzA5MzVkNzQ0NDk0MjZjOGU0MzNhMDA5NDNiYTdiYjg1NmNkIGxlZ2FjeS10cnVuaworODA2MDYgNTkzYTIyNTUwMjc1N2QzOWY1NTgzYTUxN2I3ZmIwMzU5ZjcxNjg1YiBsZWdhY3ktdHJ1bmsKKzgwNjA3IDJkNWMzNDVmMzRiOTljYzg3M2FiOGQ5YmQ1ZmI1Y2QxN2M0MDYyODEgbGVnYWN5LXRydW5rCis4MDYwOCAwMWJkZDUzZjc0ODk5ZWQ4YTQxNzM2OTVhMTdiMzk4ZTRlMTA4OGYyIGxlZ2FjeS10cnVuaworODA2MDkgODQwMDkxM2ZjYzU1NWQ2NjRhMmRmMTcxODVkZWRhM2E3MjNiOWM3YyBsZWdhY3ktdHJ1bmsKKzgwNjEwIDM0MzFlMTMzOTEzYzljZjg0ZTljNzZmMDdmNjdmZTU4YjVkZDFhMGQgbGVnYWN5LXRydW5rCis4MDYxMSA0ODZmZTgyYmFmYjg0Zjc4NWZmODUyYmQwYzE1ZmU1ZDYyMWY4MDY0IHJlbGVhc2UyNi1tYWludAorODA2MTIgNzc4MTIxYjIzODhiM2QxNWZkNzk4MjI5ODAzOWVmMjhiY2ZhYzE2MSBweTNrCis4MDYxMyBlOTE4Yjg0ZWY5NjhjYzg5MDU1ZmYyMmFjYzAxYmY3Zjk4MmM2NTI4IHJlbGVhc2UzMS1tYWludAorODA2MTQgNGI1NzAxOTE1MGE4YjNkY2VmY2VhN2MyNmIyNTU0NGU5YWIwMjkzYSBweTNrCis4MDYxNSA3N2RkYjhkM2M0MzM1NGQ1ZTNhOTAzYzA2ZjA4YzU2ZWU3ZTEyZGJiIHJlbGVhc2UzMS1tYWludAorODA2MTYgNGQ5NjM0Yjg0NDliYjhkNDg0M2ExMTE4MjQyMDIzNWJkZGEyYWQ1NiBsZWdhY3ktdHJ1bmsKKzgwNjE3IDZjZGE2MDFmNGM1ODU2ZmE2MjI1YWJjMTljN2FiNzk4MDhlYTAzNTQgcmVsZWFzZTI2LW1haW50Cis4MDYxOCA5ZTUwNTcyMDE1YWQ1YjE5MTU1NzY4Y2E3OGVmMDUxZDQ2ODE5NWNlIHB5M2sKKzgwNjE5IDQwNTIzN2IxMTEwNDI1Mzg0MTA4NWM3NTNjNWEzNTg2NjU1ZmE0NmQgcmVsZWFzZTMxLW1haW50Cis4MDYyMCBlYzZlOWUwZTMxNmQyODljZDU5ZDI0MGI0ODJmNWE3Mzg0Y2FiOTllIGxlZ2FjeS10cnVuaworODA2MjMgNDdmYzZmZTVlNDU0ZmNkMThkOTYzN2FjM2RjNzhhZTg4Nzk2NTE4MCByZWxlYXNlMjYtbWFpbnQKKzgwNjI0IGZjODIyYWYxMWJiYzY4YjY4MWFhYWFjOWQ0ZjA1NDBkZDhjNDQzNzcgcHkzaworODA2MjUgZDY2ZGIxYjIyZDEwOTg5NDk2YTkxYmM3Y2IyMGEwMTk3M2YwYjQ2NyByZWxlYXNlMzEtbWFpbnQKKzgwNjI2IDRkZGZiNWRkNGJiNzk0YmE2MGU4NTZlZWJjMGM4NGU0NWM0MTk2Y2MgcHkzaworODA2MjcgYzQ4MmI0MWFlODU1NGZhNGMzN2MxMTMzNWIzZTA4ZDIyMWM2NjE5ZCBsZWdhY3ktdHJ1bmsKKzgwNjI4IDA2ZTAxMTBiMDgyMDhiOTFjZGI0YTNlYjEyMjBhNWU2MDZiOTI0ZWEgcmVsZWFzZTI2LW1haW50Cis4MDYyOSBmNjI3MDAyN2U0OTlmMTk2YjAwZDVjOTgzNmU4YmZiZGVjNGIzZmM2IHB5M2sKKzgwNjMwIGFjZTM0NTM3NzgwMDBjYzAzZGI1NjVjZjI1NGEyODUzNDBkYWYzZjggcmVsZWFzZTMxLW1haW50Cis4MDYzMSBjOTA4ODE5MjdiYWRhNmQ5MDlhYzVkNGZkMjVmNWFhZDcxNzg2ZWIyIGxlZ2FjeS10cnVuaworODA2MzIgYjZiM2U0Zjc3N2M5NmU2YjM1YTc3MjI5NGVjNThhYTE0M2VkOWM4MCByZWxlYXNlMjYtbWFpbnQKKzgwNjMzIDljYzY5M2Y5YTVkZTAzZDdhNmFmZDRiZWE2MzFjY2NkNDNkODZkMmEgcHkzaworODA2MzQgZjMyYjhhM2FlOWQ2MDI5NGUzMTBlYmRkMjg4NDRhZGY3NmZmNDU5MyByZWxlYXNlMzEtbWFpbnQKKzgwNjQwIDM2YTQxNzk4MTBmMGI2NzBmZTQ3ODBjODkxOWQ0OTE0MGYyMjBjZmEgcHkzaworODA2NDEgNjk5MDQ5YjNjN2Q3MTNmMzg5ZjhmYmQ4MzdhOWMyZjhiZDVhMmRiMSByZWxlYXNlMzEtbWFpbnQKKzgwNjQyIDJkMmE4NThmZTNlMTk0Y2Y5ZDA5M2ZjMzdjYjU1YzE1MDRjOTdiZjkgbGVnYWN5LXRydW5rCis4MDY0MyA3ZTM2MWE2YTJhYzgyMmU3NTEzOTYxOGI1MmYwNzFlMzdkYWNkOGJiIGxlZ2FjeS10cnVuaworODA2NDQgZmU1YTAwNmFmNTJiZGU3MmNmMjg0MDFkZjIzMTIyNWVlN2ZmYzFhYyBsZWdhY3ktdHJ1bmsKKzgwNjQ1IDlmY2VjZTQwNWUyOTUxMWRiNDhjZjRmNmQ3ZjQ3NzVhZjQwYjIwOWUgbGVnYWN5LXRydW5rCis4MDY0NiA1YTQ4ODY1YmJjMWU2YjAzY2Q2OTUzNGVmZTZhOTRkMGUxYmM3MThlIGxlZ2FjeS10cnVuaworODA2NDcgYzJlMGI5M2Y4NjlmNDFjYzVhNDU1NmNmZjFmMGE1ZDk5ODViY2RjNiBsZWdhY3ktdHJ1bmsKKzgwNjQ4IGJmZDI1NDFkOGVjNWEzNTA5ODAyMjlhMTQ5NjhlNjk4NGRmMDZhMjQgcHkzaworODA2NDkgMTAyMDZjYjIzYzgwMjFiZmI5MzMxMzZjYTc1OTY5ZDg0ZjQ3Mjg4MCBsZWdhY3ktdHJ1bmsKKzgwNjUwIDYyMWQyZTk4NGQxODc2ZDA4ZGRlNmJiMGIxODgzNzNiZDJjZTZhNjkgcmVsZWFzZTI2LW1haW50Cis4MDY1MSAyZDNhYmE4Y2Y2YTM0OGM2N2EyODhiYTViMGQxNTU2MTFiMjIzZWM3IGxlZ2FjeS10cnVuaworODA2NTIgMmJkYjhlYmZjNGE5NTIzZDU5NTFjZGMxYmU3NTA1NzUxOTVjZGYxYiBsZWdhY3ktdHJ1bmsKKzgwNjUzIDFiODk0NTk0NDkwZmJlMzlmMGYyZTZkNmZkNWY4NzA5ZWNiYjY1OGIgbGVnYWN5LXRydW5rCis4MDY1NCA3YTM1ZTBiOGFlMDhjNWI1Mjc0NDhjMTU1YTAzNmQ2NmJkNTUzNmJkIHJlbGVhc2UyNi1tYWludAorODA2NTUgZTQ3YWVhODZmNzE0MzM0ZWZhYTEyMDRlZDExNWVhMmJmM2VlZGQzYyBweTNrCis4MDY1NiAwOTFkOTc3YzRkMzc0M2NkOTQ3YzIxMTAxZDdhMjBiNGYyNzE1ZmVhIHJlbGVhc2UzMS1tYWludAorODA2NTcgYmM2MjMwYzY2YzE0MWUwYWJiZTIxMTMwMGM3MDk2N2ZkNGMyZmMyZiBsZWdhY3ktdHJ1bmsKKzgwNjU4IDAwYWM0Njg4Y2RjZDBmM2QzM2UyNjhmMjEyMzRjZDUwNDdjM2M5NDkgcmVsZWFzZTI2LW1haW50Cis4MDY1OSA3YTlkMTcyYTE1ZTkwOWUxZDQzZjRiMDZjOTU4NTU4ZWRhNTBiMTI2IHB5M2sKKzgwNjYwIGFmODEwNDMxYmRhYzlmMzJhNWQ1YzVmNTUyNmFkMzRlNWIyNjA5YTEgcmVsZWFzZTMxLW1haW50Cis4MDY2MSA1OTFkZTZjOWZmZTk0NzQ4ZjU0YmYxNzUzZmIxNDlmY2U5NmIxMTBiIHB5M2sKKzgwNjYyIDUxY2Q1M2QzZjYwMGJmYzU1NDU0MDljMzY3MTRlOGNlZmQ4NWRlMjkgcmVsZWFzZTMxLW1haW50Cis4MDY2MyA3NzQyMzAwNzg5MjZlZjdmNmU0M2QxMTkxYzMyNTE4ODczZTliNGNlIHB5M2sKKzgwNjY0IGIyNWU0YmE0YWY2MTZlOTMzYTkwZWY5NzY5NTkxNDdmNGIxODAyNjIgcmVsZWFzZTMxLW1haW50Cis4MDY2NSA4ZmM5ODdjYWM5MTNmMmNkYWQ0ODI0ZmFhNDZkZDE5OGNhNWFhNDM4IGxlZ2FjeS10cnVuaworODA2NjYgM2U0NTEzOTQ3YzU3YmYzYmRlMTcxM2U2NzYyZGUzM2RmYWY5YWI5YyBweTNrCis4MDY2OSAzYzRjZDdkZGYxZDAxNzQ2NjRiMGU4NjA1ODM3YTA1NTU1N2ExNzMzIGxlZ2FjeS10cnVuaworODA2NzAgM2ViNmVhZDk5YTYxYWQxMjgwZTI4NTg0NDQ1MmYyYTU4NTQxNTFiMiByZWxlYXNlMjYtbWFpbnQKKzgwNjcxIGM5MDYwYzFjMWY5MDU0MjY4ZGJjODIwZDI0NThiMjI5OTZjMThiOWQgcHkzaworODA2NzIgOGUzNGQ1OWJhZGY5OGY3ZDYyZmJjOWI5NDJhOGI1ZDIzYWFiMWVhZSByZWxlYXNlMzEtbWFpbnQKKzgwNjc0IGFiNjQyMzc5ZGRjMDI5NDU2YTJhYzgwMWUwYTRlZTFmMzk2NjFkZjIgbGVnYWN5LXRydW5rCis4MDY3NSBhYmZjN2VkMzU1ZTRlMTEyZWZiZjMxNWE0MWRiOWNkYzk3MDA5NTQ1IGxlZ2FjeS10cnVuaworODA2NzYgNWI2YTdmMmEwNWM2ZDE2ZDI1OTE0OWNlMzliNGUzMDAyNTJkNmExYyByZWxlYXNlMjYtbWFpbnQKKzgwNjc3IDU1ZTBlY2NjN2Y0NmYzNDdkZjQwMGYzYTQ4MjIxZTY3MjdhNGU3MDIgcHkzaworODA2NzggNTJhM2FiNWU4ZThjZjY1OWQ3MDA5YjFhZGU2MTJjNmJjNmVmMzY2YyByZWxlYXNlMzEtbWFpbnQKKzgwNjgxIDNlYmFjMGU0NjBlMDM5ZTM5ODRjNjk0MDgzN2RmNTdkNmZjMTRiZmUgbGVnYWN5LXRydW5rCis4MDY4MiAyNDVlNDMzZDYwZWI1ZGM1M2UxMWQzZjFiZjVmOGE4NGY0NDViMTVkIHJlbGVhc2UyNi1tYWludAorODA2ODMgMTkzMDRkODIzYzg3NDdjMDk3YTQ1YTEwNzAwYmMwMDU3Yjc4OTYzZCBweTNrCis4MDY4NCA4MmRhMjkwZmY3MjIzZTZiYmFkMTYzYzU2OTgyYzZlZGRlNjIxODJkIGxlZ2FjeS10cnVuaworODA2ODUgMmRiNGIzMDBhNDIwODU2NDJjNTVkODc1ZmI5YmUyNjBkYzFjOGZhZCBsZWdhY3ktdHJ1bmsKKzgwNjg2IDU4YmUzYWYxMzBlMjZhOWViOTRlMzQ4N2JmNTU1YTAwNzdlNjRhYTQgbGVnYWN5LXRydW5rCis4MDY4NyBmODliYTEwZjk3MzQ5NTk5ZTcwYmI5MGMyYTcxZmY5Y2E5OWMyZjlmIHNpZ25hbGZkLWlzc3VlODQwNworODA2ODggZTI4ZmVkZjM2MzU5Njk0ZDMwOTg3NjRkMzA3OWQ3Mjg5ODEyMzZmYSBweTNrCis4MDY4OSAyMTM1NWRhYWYyM2E0NmRiOTc2YzI5MTQyODZmYjY4MzcxYTA4ZjE5IHJlbGVhc2UzMS1tYWludAorODA2OTAgN2IzMDdhMzAyNzQ0NzU4ZDIwZTIwMjIxMDJmYjAzNDY1YTI3M2M4MCBsZWdhY3ktdHJ1bmsKKzgwNjkxIGYwZTIxYWM3OTVmNDc1YzM4OTY4ZDM1NmUwNzgyYzBiNDhhZmQxNTcgcmVsZWFzZTI2LW1haW50Cis4MDY5MiBmZGExZGRhZTA0OWM2NzZlYTE0NDZlZTVjYmQ4ZGI4OGQ0MGYwNGQ5IHB5M2sKKzgwNjkzIDQ2ODU3MDlmYWIzZTEzNzcwNjUxMTcwYWViZDFmMGVkYTUzNGZmOTIgcmVsZWFzZTMxLW1haW50Cis4MDY5NCA5ZjRjYTAwNjEwZTMzOGIxMGM0Y2FkNDk4ZWY2N2IyMDkxNzFhNGFlIHB5M2sKKzgwNjk1IGZkMjZlYjlmYjBmOTJhNGEzOWE5NDJhMWI0N2IzNDNmOGY2NjQxYmQgbGVnYWN5LXRydW5rCis4MDY5NiA5NGI1MmU1Y2JlMjk0M2JlYjRkYTU2MTMyODZjZTlkMGQ4MGIwOWFkIHJlbGVhc2UyNi1tYWludAorODA2OTcgYWJmMjIwMWRjMzdjYmVmMWMwNDE4YWY5NjA3MWY0ZmEwM2UzZWU2YSBweTNrCis4MDY5OCAyMTM2OWQxODlkOWU0NzlmNDMwZjM2Mjg5NTNjMjhlYzA2MzAzZjRlIGxlZ2FjeS10cnVuaworODA2OTkgN2Q5OGUwZWE5ZGIzNTRlMzA5M2NlNWU3NzM1NTU2OTk3OGIxNTJmNyBweTNrCis4MDcwMCBkOTVkZjI2MjJmOWY1Yjc3NDc5Nzg4ZjhkYWJiNjAyMzU5NDA0Yzc4IGxlZ2FjeS10cnVuaworODA3MDEgYjFkZDc3MTU0NWUyMTI3ZTNkOWZkNzA0MThkZjQ4YWNlMTNjMzdlNCByZWxlYXNlMjYtbWFpbnQKKzgwNzAyIDQzMTI2NzYyNmEwMzVjZTRlOTI4OThhNmI0NGMzNjJkYzVkZTFmNWYgcmVsZWFzZTMxLW1haW50Cis4MDcwMyBjZjAzNjFjMDI1NTFkMDllMmEwZmM2NTZiZjI1YTU4MmQ3M2ZjOTFhIHB5M2sKKzgwNzA0IGIzYzNiMTI0NjBkNDgxMTA5MWVmMGNkMTRhODEyZThjZmM4ZGJmMmEgbGVnYWN5LXRydW5rCis4MDcwNSA4Yjc1MzI5OTI0NjQyZWI5OWUwNTYwNDE3ZGJkMjIxN2ZmYmU2ZGQ0IHB5M2sKKzgwNzA2IGM2MmIxZDAyNTUxYWUyODY0MTZhNjNhOTRhNTYzZTdkNmY3ZjYzM2QgcmVsZWFzZTI2LW1haW50Cis4MDcwNyBhNzc0NjdiY2FkZTBiNzgzYTk4MTUwYmEwNjE1YzkzZWExOTE2ZTE4IHJlbGVhc2UzMS1tYWludAorODA3MDggMDNjMzIwOTJkMjY2ODI4MWMyYmFjYmRiMDg0MDI1YjMyN2YzNDVjMCBsZWdhY3ktdHJ1bmsKKzgwNzA5IDYyYjlhNzQzMTA0N2Y2ZTk5ZDA3Mjk2NGI0NGFjM2IxMTBiYTkzODMgcHkzaworODA3MTAgZDA2MmI4ZTc5MDUyMWUxM2Y3ZjkzYTk2ZjI3M2Y3ZmI3NjViNWM4YiBsZWdhY3ktdHJ1bmsKKzgwNzExIGI3ZmNiMmFmOGNiNDA4ZGU2N2FiZTg1MWUwMDA4ZDM5NjY5NjQwN2QgcmVsZWFzZTMxLW1haW50Cis4MDcxMiA1NmQ4MzFlNmY1MDg4MWFkZGRlODUyNGM3YmJhMDAyNjJiNjAwOTk5IGxlZ2FjeS10cnVuaworODA3MTMgNDc2N2M2NjZiMjViMDhiM2JmNTliNGRhMWZlNzY3NDFhNTczNjI3ZiByZWxlYXNlMjYtbWFpbnQKKzgwNzE0IDVkNGE1NjU1NTc1ZjJjNGM2ZGE0ZWU2YWNhZjAzYjkyYTMxZjE5YmIgcHkzaworODA3MTUgM2VkMjhmMjg0NjZmNjA2YTE2YWQyNGY4ODgxZjY1OTc0MGRmZTBjNyByZWxlYXNlMzEtbWFpbnQKKzgwNzE2IGY5OTJjZWQzMmMyMDU3OGEyOTMwMWNmZmUyMzI2ODM1Y2Q4MzBlYjIgbGVnYWN5LXRydW5rCis4MDcxNyBkOTJmZjcwODFiMjAzOWQ2Y2M4NTU5YzFiMjMzYjBiZWUxNWM3NDlkIHJlbGVhc2UyNi1tYWludAorODA3MTggZjAyNTVlZjRkYmViZDFmMjM4ZWQ1OTFiZjA3NmRjM2E5NDlhN2JjMyBweTNrCis4MDcxOSA3YWFmNTlkOGVmMGJmYmI0YWRiZDlhNGZjMzRjMzMyNWZjYzYyNDliIHJlbGVhc2UzMS1tYWludAorODA3MjAgOWI0MzhiYjA2ZDRkNjIzZTJlMjM1OGM1Njc3NmJiMjkwYWY2MmYxMSBsZWdhY3ktdHJ1bmsKKzgwNzIxIGZlM2JmMzk5YTE5YzEyNjczN2ViNDU4MjRhOTI0NTdhMmFmOGM5ZTggcmVsZWFzZTI2LW1haW50Cis4MDcyMiA4MWNlZjViNzRmMWE3YWU1OTgzN2UyYjljNzhlMGUwMzQxNTc5MTU5IHB5M2sKKzgwNzIzIGNhMDFhYmQ4YWQ4NzE2ZmMzNzE2MmM0MGEyOGE4YThiODQ1NWRjN2UgcmVsZWFzZTMxLW1haW50Cis4MDcyNCA0ZmQzYWI1ZmE3MWQ2MDZhZTdlMjgwMzEyOTI5OGRlN2JlYWYzMmYwIHB5M2sKKzgwNzI2IDY4NTBhYTc4NmMxODc2N2U3YTNkMjRkM2U5MmQzNmQ5YzU1YjhlOTMgcHkzaworODA3MjcgNTEyZDYxYTY5MmU0ZWIzN2VkNTczZmI3YzA5MTA3YjE1ODRhNDcxOSBweTNrCis4MDcyOCAxMzhiYjVjOTMwNzQ3ZmFlYjY0ZTQ4M2UzN2YyMDVkNGE0ZGM0NjVkIHB5M2sKKzgwNzI5IDE4Y2MwNWU4Mjc1MjI3MWU2NjRiNTNmYmU2MDQ1MTZkNTQ1YmRhOWMgcmVsZWFzZTMxLW1haW50Cis4MDczMCBlOTkxMGQxOTMyMTQ2ZTBhNTM5MjEzNGRmMDY0MGIyODZlYzkxMzUyIHB5M2staml0Cis4MDczMSAxODFjZDE0OTJjYjBjNzViYTk3ZGIzMjAxOWZiYjgxMzczMTM4YTIxIGxlZ2FjeS10cnVuaworODA3MzIgYTExODkwNTI3MjI5OWZiNWU2YTIwMDczNDlhMGFhZjcwNDY2NGQxZCBsZWdhY3ktdHJ1bmsKKzgwNzMzIDAyZTE4N2JhYWY1MTRkN2I5NjJjM2EwNGU0YWMzMTlhOTc3ZWNkNTEgbGVnYWN5LXRydW5rCis4MDczNCAwY2Y4MGI3MGY4MzhhMDM4MWEzMmNmN2I1NWYzNjQ4NDVkMDM0ZGM3IGxlZ2FjeS10cnVuaworODA3MzUgOTgyZWVjOWE4YzI4ODUzYWZkNWU0ZDhmOTg5NDA3MGU4ZDU4ZmVjNyBsZWdhY3ktdHJ1bmsKKzgwNzM2IGViNDcwYjg1ZTY3YWZhNjVmYTNiZDMwMDIzNzlmMTQxZDNkZWRhYzYgbGVnYWN5LXRydW5rCis4MDczNyA3ZWU1NjJjY2VhODAyYzEzNjk4N2YxYjJmOTBhOTlkMmQ5OTQ0OTdhIGxlZ2FjeS10cnVuaworODA3MzggNjM2NTkxZjRjMjE2MmE5MTAwMDMyZmYwMGFmZjQ4OWRkYzFjMjZkOCBsZWdhY3ktdHJ1bmsKKzgwNzM5IDgxNDI0NTNkYjgwY2EwMDFiNTE3OGRmZDYzY2QzY2VkNjM1YzFkODIgbGVnYWN5LXRydW5rCis4MDc0MCA3YzYyZTcyZDg1NmIyOTIzMjdlYmQyODlhMDJhZWZlMGY3OWM3MGJhIHB5M2sKKzgwNzQxIGY2NTY5ZTM0YmQyODFhYTFlMjFlYjExNzkzODI1Y2QxMjM0ZTQwOWIgbGVnYWN5LXRydW5rCis4MDc0MiA3Njk1ZjZhN2UzYTNiNjQyNjJmNzJmOTllNTMzODM3NGY3YjYzMTNjIGxlZ2FjeS10cnVuaworODA3NDMgNjZmYmNhMjg3YTAxMTg0MmMxMDFiNjYyZjI0OTI0MmE2YmRmMTU0MCBsZWdhY3ktdHJ1bmsKKzgwNzQ0IDNjNzY4M2Q2YTNjNDcxMzY0ZTI5ODM2NTZlMmU4NTUyZTU4N2IyM2YgbGVnYWN5LXRydW5rCis4MDc0NSA4NWQ2OTNlNWYyMjkzYmI0MWExNTJmMTI0MWUxNTI1YjMzMjVhZmRmIGxlZ2FjeS10cnVuaworODA3NDYgNTVhNTkzY2MzMjgwM2JjNzRkYmJmYWYzYzY5YTQxNTFhZDY2MDg4OCBsZWdhY3ktdHJ1bmsKKzgwNzQ3IGNkMzNkNmNkMjEwMTk1NjQzMzk1MmFmZDMyYzI2ZDViN2JiM2Q4ODEgbGVnYWN5LXRydW5rCis4MDc0OCBlMGVlMDk1MWU5NTNmMTUxY2YzZmMwOGM3YTA5Zjc1MjQ1ZDU1MzkyIGxlZ2FjeS10cnVuaworODA3NDkgNWVjMTU1ZWM3ZGIyNzBhNGU1MGVmYmE4OWIwNWNkODFkMmMyNTQ5ZCBsZWdhY3ktdHJ1bmsKKzgwNzUwIGQxNzZhYTQ3MzI4NzU2NzhmNGRlZWQ0OGM4ZDA1YTBmNTcxMThlYmQgcHkzaworODA3NTEgYTUxNTM3ZTcwNGE5YjQ0NGU2Y2U1OTg0YzgwMmNjODk1YmM2ZWUxNiBweTNrCis4MDc1MiBiNzYwZjZmZjg5ZWFiMjdhMjRjYjUwZTViZmVjNWU0ZWI0Yzk5ZWM5IGxlZ2FjeS10cnVuaworODA3NTMgYzBlYTA3OTI1NDAwMjg0ZmY0OWMxZWU3MTRlOWRjMjUzYWY1NmE5ZSBsZWdhY3ktdHJ1bmsKKzgwNzU0IGVjYzMyZTJmNDY1NjZlNWRlYzlmNjliNDgyMjUzMmY1MTk0MDBiMWMgcmVsZWFzZTI2LW1haW50Cis4MDc1NSAxODMzNGYyM2Y2ODZmYzI1ODk2NDAyNGQ3MGI5YzE0NjY3ZTdlNjUwIHB5M2sKKzgwNzU2IDExNDM5NzJmMDRiYmQ1Nzc4ODBmMWMzYmIyMDJjMDE0NDEyMzFjNmUgcmVsZWFzZTMxLW1haW50Cis4MDc1NyAxYjRiNTA2YWEwNDI3NjlmOTBhZmExMWExZjM0NjZmMDQ1NDM2ZGZhIHB5M2sKKzgwNzU4IGY1NTBlZDg5Mzk4ZjU4ZTUxYWQ5NWUyZTUyNGU3OTJmYzdkYWM0Y2UgbGVnYWN5LXRydW5rCis4MDc1OSA2ZjQ2NjhiOTdkNjg0MDM1NDM5YmRmMzhmNTkxOTQzNzRiYzFlMTYyIGxlZ2FjeS10cnVuaworODA3NjAgYzc0Mjk5ZGU4MDFhYmEzNWIzNjIwOTQ5NTIwN2NkZDg1Mzk4ODYxMyBweTNrCis4MDc2MSBmMzg0ZTExYzFiYjVmNjhhODc3ZDhhOTUzZDdlZDdiM2RlOWZlMzQzIGxlZ2FjeS10cnVuaworODA3NjIgMzkwN2Q1MjY0OGEwZjI1NjEzMzVlNzBlYjgxMDhlODdkODA4MTFiMiBsZWdhY3ktdHJ1bmsKKzgwNzYzIGFkYzJlYmRhNzYzNmFhZmJkYzc1MDFjYjA3NmM3NzY5NTg4MzdhM2IgcmVsZWFzZTI2LW1haW50Cis4MDc2NCAwYTRjYTg5MmE1OWU1ZTkyOTgxOTEzZjc2ODA1OWU4MDVhZTkwNjE2IHB5M2sKKzgwNzY1IDliYTZmY2VjNGYxNDllMTdhMjIxMjc1NGU1YzkzOTRiNjE0ZTA3MmEgcmVsZWFzZTMxLW1haW50Cis4MDc2NiBkOTIyODA1MTczMDUzNzFjMDUyYmYxMmU0ZGI2N2NhZGQ3ZTBkMjdjIGxlZ2FjeS10cnVuaworODA3NjcgOGM5Yjc4NWIxODQ5ZDA2YjNkN2FkZGRjNDUwMTg4ZDZkMmY2YTYzYiBweTNrCis4MDc3MSBkNDlmMTMxMGUyM2Y5MDJhZDhhZTM3ZThkNTc1MDQ3ZTRkNjA3YzNlIHB5M2sKKzgwNzcyIDZlNGJmY2YyMDgwYzcxNjE2NmFjZTQ3YWJiMmRkZjk0NGRjOTk1NmIgcHkzaworODA3NzMgY2Y0ODUzNTEzMmUwZGMwN2VkMGUzYjdiMDJiMjUyNzQ5YTdlMmM3MiBweTNrCis4MDc3NCBlMDEwNWZkNTIwMzI5MTdlMzAwNTk1ZjM2MDVlNWFmZDVkMzJmNjk2IHJlbGVhc2UzMS1tYWludAorODA3NzUgZDc0YWM3Y2NhNjA3NzBhMTEyZGFhM2QyZTc4NjViMzMwNmFjNjc4YiBweTNrCis4MDc3NiAxMzRhNjNhZjIyYTlhNThhODY1NmMyODFlNzNlYTdmOTFhMmE1OTZmIHJlbGVhc2UzMS1tYWludAorODA3NzcgYmI1MWU0YmJmZjhjMjhiMjIzY2RlMDExOGUyOTUwMGE0MGYyYTY0NCBsZWdhY3ktdHJ1bmsKKzgwNzc4IGRkNjBkZTJmYWUzY2Y2ZDNhZGEyYzZkODUxMjk0NDQ2MGNhODk4MTcgcHkzaworODA3NzkgNDM4MGUwNDM0M2VlOTg1YTdhOTlhMDY5N2YyNjg2MGQ0OGE3YjU4NCByZWxlYXNlMjYtbWFpbnQKKzgwNzgxIGI3YWUzYTZiMWQ4NGIyNzQwYTcyNjQzYTdmZDZiM2E1YWI3ZGM5ZWUgcHkzaworODA3ODIgZjQ0MTFhM2NkZjEzOWJhYzc3OWUyYmVkZDFkNzY3MDE5ZjgxMmY3OCBsZWdhY3ktdHJ1bmsKKzgwNzgzIDMxYTMyZTRlMDI1NmZmOWIxM2IxNTRjOGI1YWFmYTRmYjAxZDgzMGMgcHkzaworODA3ODQgZGM2ODUyMDk4OGE3ZjliOTZhMjUwMDQzYjdlZGY2ODliYzBkMmNiNyBsZWdhY3ktdHJ1bmsKKzgwNzg1IDgxM2RhZWU5NGY3MzgzZjFlYTEzNGExZmQxZWU1N2ZkNTgxZTk4ZmIgcmVsZWFzZTI2LW1haW50Cis4MDc4NiBmYmI1Y2QzNDViNDJlOTFkYzIzZmQzOTY3MWYzOGIxZWVhMjZiNmNhIHB5M2sKKzgwNzg3IDdiMjk5NDA0ZTc4MTBjZDZiOTY2OTkyOGRmMjQ5NGNmYjdkOTdlNWEgbGVnYWN5LXRydW5rCis4MDc4OCBmMDVhMjk4OTM3OWVjOWE2YjMzNTNjMjZlODM4NzBkODcyNGI5Yzg3IHJlbGVhc2UzMS1tYWludAorODA3ODkgNmRiOWJhNDJlNDY4NzIzODBlMDliZjc1NGEwYTVlNjg2MWM5MGI0NCBsZWdhY3ktdHJ1bmsKKzgwNzkwIDM1MjIxYzAxNThiNWE3MmZkMTRmMjNjNmU1OTBhNTJlOTk0ZDIyMTEgcHkzaworODA3OTEgY2NhZGU1NzcyNjc0NjQzNzU3Nzg4ZGU0M2RhZDI5NWE1ZDVlMDFkZCByZWxlYXNlMjYtbWFpbnQKKzgwNzkyIDUwYTRlYzM3MzYxZDAwZGU0MGIxODhmZDdkODdiYzg5YjI3MDk1ZmUgcmVsZWFzZTMxLW1haW50Cis4MDc5MyBiNjA4ZTJlZDlmNzU4OTFiYmZkZjQ3NTJhZDAzYzhjNGU2M2Y2OTExIGxlZ2FjeS10cnVuaworODA3OTQgNGI2OGQ2YzhjZDUyYzRlMDZmN2E3ZDU4ZTVjYjU3NGMyZTY5ZTdhNSBsZWdhY3ktdHJ1bmsKKzgwNzk1IDM1OTMyYTI0YmU4NTA5Y2Q5YjYyN2I3ZWQ4ZTZlMGE1M2QxMTEwOWEgcHkzaworODA3OTYgZDRhYTM1OTA3ODA4NzYyZGVkMDk4ZjhlMWU0ODVlZmJkY2RmZTE1OSBsZWdhY3ktdHJ1bmsKKzgwNzk3IDYyN2YxMTQ0MGI4OWU2MjI1YmI0ODc5OGU5MGYyZTg5MzBjMDBiNTIgcmVsZWFzZTI2LW1haW50Cis4MDc5OCA3NDgzZWNiNjIxZTBmNjBiZDg4MWM3ZTAzNTE4NDU5OWE0OWFkN2ViIHB5M2sKKzgwNzk5IDhlZTgwYzJmOTkyNjc5YzdiZWViZDJiMjAxNTQxYTFhYjRiNzZhZWIgcmVsZWFzZTMxLW1haW50Cis4MDgwMCA1NzVlOTM4YThjYTUyNWIyM2U4MGNmZDgzODBiYjVkYzU1ODQ2NTZkIGxlZ2FjeS10cnVuaworODA4MDEgMTg5YTJkZTNlMDM0NWYwNDRlNTgwNDAyNzg4YmFmMjhkM2I5YTg4MCByZWxlYXNlMjYtbWFpbnQKKzgwODAyIDMzYWMxMDlkZTBjYzJkMjAwNGE0YjA5YTRmNGI2ZDZkNDViOWYzNjUgbGVnYWN5LXRydW5rCis4MDgwMyA4MGQwNTYzMDI2M2FkZDI1OGVlM2E3NWUyZmEzODAyYzU3ODlkYTE3IHB5M2sKKzgwODA0IGY2Nzg1YmNlNTRiNTMzMmRlNWU1NmY3OTE2MzJjNTY5MzA5ZTc4NmIgbGVnYWN5LXRydW5rCis4MDgwNSAxZjc1MDZmMjM3NzE2ZmEwODVhMmE0YWJlYmMwYzRhYTNmMDQ1OWRkIHB5M2sKKzgwODA2IDkwZjRiNjJkNDc1OWQwNDhhNTM4NzY0MjY3MmM1NTFiNzUzYzEwZWYgcHkzaworODA4MDcgNjg5OTEzOTMwMWM5ZTg3YzM5MGMwZWVjMjczMDNmZjA0MzhiY2YxOSBsZWdhY3ktdHJ1bmsKKzgwODA4IDNiNThmMjQ0MWNjODdmZGQ2YjZjYTZiNWYzMjQ1ZTdiMjQ0ZGY4NTcgbGVnYWN5LXRydW5rCis4MDgwOSA5NDUzOGIwNDRjYmVmYWIwZTk0NjdlMmJkNzE5M2E1NmE3N2Q5M2ZiIGxlZ2FjeS10cnVuaworODA4MTAgZjk1YzI1OWI4MGIzY2U1YWQ1NTlmOWY4NDZlMTc2MmJjNjUzODAzMSBsZWdhY3ktdHJ1bmsKKzgwODExIDdiZTgxMjllZTBmZDIxZGQxODk5MDUwYTQ5OTUxODk1ZDk5ZWUwNDQgbGVnYWN5LXRydW5rCis4MDgxMiA0N2EyNzAwYzAwYjQ5ZDg2NWQxY2QyOTRkOTZjOTIyMzNmOTAwY2YxIGxlZ2FjeS10cnVuaworODA4MTMgNWNlYTI3Mjc1YWYxMjU4MmIwNzhjMzM5NmIzMjNlNmM4YTdkYzJjNiBsZWdhY3ktdHJ1bmsKKzgwODE0IDJkOGZhNzRmOTI2M2U0MDAxMjlkYjUzYzQxNDI0ZTA5NTg1Y2FlOTYgbGVnYWN5LXRydW5rCis4MDgxNSBmZmY0MzlmMDg5ZmU1NWFiNTRiOGM3Mzk0ZmUyMWI5NDA1OWY0NjMyIGxlZ2FjeS10cnVuaworODA4MTYgNmZiNmZhODAyMjIxZTdmNTg0YTNkYmY2YjlkMjRjZDgxODU4ZTEwYiBsZWdhY3ktdHJ1bmsKKzgwODE3IDg0NWM2ZDgwMDMwMjQ0NmNhODNiODRmMGIwY2I1MDc4MGU3MTY2MDUgbGVnYWN5LXRydW5rCis4MDgxOCA3N2I3ODYwNzYwMGU1MjRkMmU4NjdkZDU0ZDhiNjQ1NTBmNGJhMTJhIGxlZ2FjeS10cnVuaworODA4MTkgM2ZlNGMzNGY3OGMwMjlmNzhlOGUzMzM5ZGNmMWNjODkwOTI1MjNmZiBsZWdhY3ktdHJ1bmsKKzgwODIwIDk1YzQwMGI5ZDc0Y2EzN2E2ZmM3MjdjOTA4ZmEwMGIzMmE4MDdjYmYgbGVnYWN5LXRydW5rCis4MDgyMSAwZDE0ODI3YmNjMGRmYTllZTIwZDMyZDg4YzQ1MWQ4OWM4OWNlZDkzIGxlZ2FjeS10cnVuaworODA4MjIgOGUzYjVmYmMxZTQxYmYxYjNmNzA2YTQzOWFjYTY2NTM1ZmI0Nzk5NyBsZWdhY3ktdHJ1bmsKKzgwODIzIDAzNzhmNmUzNDZmMDMyNTk4NzA2Nzc1MDZhN2VkYWEyYmJhNDlkZjIgbGVnYWN5LXRydW5rCis4MDgyNCA4ODQ2NmVmMWYwY2RlNjgxODA4YmQzMjM3NjRiNDQ5YmJhYTljZWFkIHB5M2sKKzgwODI1IDhiZjM0NTk0YjY2ZjMxNTNiOTgwZTg2Yjg0OTA5ODExODAwYjlkOTEgcmVsZWFzZTMxLW1haW50Cis4MDgyNiBmMzMwOTA0MmEwYjMxYmVlMTZjMjNkOTkzMzUyOTdiOWI2ZWRiY2ViIGxlZ2FjeS10cnVuaworODA4MjcgMDNiYTYwZDFlNDkyYTM5ODQ1NTcwMTA2ZTI5MmIzZjVjYjRlN2U1NCByZWxlYXNlMjYtbWFpbnQKKzgwODI4IDk0NDkzOGFiYjI2Y2UwNjA5ZjA0MzBkODQzNjZlMzNkOTNkMTJjY2UgcHkzaworODA4MjkgZjRjZWI0YWUwMjQ3ZGJhMzI2MjI4MTFmNzM1YmJhZTc3MzBhMTA0MiByZWxlYXNlMzEtbWFpbnQKKzgwODMwIDI2YjgxYzRlNWZiYTQ3ZTRjNjY4MDNjM2E4OTY1OTU1NjQ5ZTQyNTEgbGVnYWN5LXRydW5rCis4MDgzMSBmMGZhOTQ0YjE1YzBjZjFmODcwNjBkYWYzZjkyNzdiMjAyZTU4ZWI2IHJlbGVhc2UyNi1tYWludAorODA4MzIgOWJlYTM3YTg1MDg4NGNkZDIyNzkxYzk0YTA0MGYyZmRjM2QyZGJhMCBsZWdhY3ktdHJ1bmsKKzgwODMzIGM0MjQyOTliMzg4NGI0MGM3NmE5MGZiN2I1NzdmMDdmNmEyMzBjYzEgcHkzaworODA4MzQgOGI1ZGRlMmMzMWZiM2Y2NjYwNWYzYzk1NmM5MWJmNDQwZjZhYWJhMyBweTNrCis4MDgzNSA3OGU3ZmMwMWM1MWFjNTgzNWY0ZDUzYjNmMWUxMTZjMmMyOWQ4MjQwIHJlbGVhc2UzMS1tYWludAorODA4MzYgNWRjYTBhM2ZiOTkzYzQwNWVlM2E1YWRhMmZiZjM5NzJkMDBlMmU1MiBweTNrCis4MDgzNyBlM2U0NjZmNTNmOWVmMGExNDIyZGU2Njc5ZGRhNGUyNzcyMDMxMzcxIGxlZ2FjeS10cnVuaworODA4MzggOTk1ZWI5NmNhZTY4NmJlZjM1Nzc4ZjBlNGI5NWFhZjI5Nzg1YTI1ZiByZWxlYXNlMjYtbWFpbnQKKzgwODM5IGIzMDNjMzUyNTRkZTQxMzE3ZDljODcwNDQ4MWNiMzg3N2ExYTc2YzIgbGVnYWN5LXRydW5rCis4MDg0MCA2NTU4ZDk2YWRlMDNhZDMzODZiOTVmMjQ0YjJkZWI4YzVkZDVkYTYwIHB5M2sKKzgwODQxIDJmMzEzMDA4YTQxZDQ1ZjJhNmVjZmY2NGFjNjMyYmQ1ZTVhMmRlODQgcmVsZWFzZTMxLW1haW50Cis4MDg0MiA2M2Q1YjlkMzhiMTc2ZmE0YjEzNTdhMDExZGQ2M2NmOTZiMjQwMWY3IHB5M2sKKzgwODQzIDhhZmQ2ZjI4YWNhOWQyMmFlOWJlZTYyYTUyOTA3M2E2YjViMmUyOTggbGVnYWN5LXRydW5rCis4MDg0NCBmMTFkNGQyYjQ0YjY3ZDRhMWE3MjQwOTE2ZGYzOTIzNThhMGUwNjM1IGxlZ2FjeS10cnVuaworODA4NDUgZTExNDZiMjVmNzczMjI0ODY0MzNjODc2N2RkZTIzYWJlZjBhMWZlMCBsZWdhY3ktdHJ1bmsKKzgwODQ2IDFjZmIyMjk4NDRhNzhjNTQyMjI2MjdmMTc5ZDZkZTMxNDMxNzUxMDggcHkzaworODA4NDcgZTUwM2JiOGIzZjYxNWIzNmYzNzI3MmFkNzNlMDk4ODFiMzUzOTM1NSByZWxlYXNlMjYtbWFpbnQKKzgwODQ4IGRjMmFhYzYyNGZmOGY5YjYzNmJlZWZkMzQxMGJjMGMyNzMxYjNkZTUgcmVsZWFzZTMxLW1haW50Cis4MDg0OSAwMTZkYmFiMzUxZjJlMTNlNmQwYzZmNjMyZWUyMmFjNzkzNzQ5ZjEwIGxlZ2FjeS10cnVuaworODA4NTAgODVjYzNlZGM3ZDQ2ZTQyNjQ0YmNlOGJiNTc0MWRhMjZkYTM1NjEyNiByZWxlYXNlMjYtbWFpbnQKKzgwODUxIGFhN2U2YjljYWI2ZDQ5MmRjNmY3MGY4YTE0MjVmZTg2MTZiYjFhODUgcHkzaworODA4NTIgZTIxODAzYzRmMWVlZjVmODkyNmJlZjZlNjVlNDllY2YxODNiNjU3MiBsZWdhY3ktdHJ1bmsKKzgwODUzIGQyYTQ0MDA1NzhhNWM3M2VkNmU3ZTZmM2FmMjIzMmZkNjBlOTdhMzUgcmVsZWFzZTMxLW1haW50Cis4MDg1NCA4OTQyZTk2Mjg2ZGM2NDE3N2VlYjJlY2QyMzNlZjE3NTVmYmNkYTBjIGxlZ2FjeS10cnVuaworODA4NTUgOGI2NDE1OTc5MmJiYjFmNzE2OGIxNmJhMGVkYzY1MGNmNGQwYTM1NCBweTNrCis4MDg1NiA1YjU1ZGM5NTU0ZmNiZDc3ZTA3ZDFiZWI2M2ZmZDE5MWUxMmY2ZTQwIHJlbGVhc2UzMS1tYWludAorODA4NTcgMGVkMWViZTViYzJmYzkzY2YwZjAyMTMyMDJlMTQzNmIxZjY2MzYyYiBsZWdhY3ktdHJ1bmsKKzgwODU4IGU0YTBiYTI1MWM0YTRmZGQwNTg1ZWQ0NmJhN2Y4MmRhOGU0ZDFkMDYgcmVsZWFzZTI2LW1haW50Cis4MDg1OSBiOTJlZjhlYmNjYjk3NjBiNGFlNDk2ZmU1OTdlZjhjYTAxMDhmNWFmIHB5M2sKKzgwODYwIDM5YTJiZTQxMjdkZDQ0MjI1Y2FlMjU4OGQ3NDgyMGVlMWI2N2RiMWUgcmVsZWFzZTMxLW1haW50Cis4MDg2MSAzY2JjYzI3NDU5NzI5MmQxYzQ0Yzc3YTRkMDEzMjhiODI4NjIwOGQzIHNpZ25hbGZkLWlzc3VlODQwNworODA4NjIgOTk2NWVmODI1YzdmN2IyZDg1OTBkY2EzMjZkNmI0OWViMjg1NmQwYiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODYzIDJkOGEzYmI4ZmI2MDhhNzNhMjcwYmU1NWIxYzhkYTM0NmY3N2RlNzAgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2NCAzZGE2NzM4OGI5NmEzN2QxNjFlNWE1NWE3OTA3Yjk0ZjY0NjNkMmI1IHNpZ25hbGZkLWlzc3VlODQwNworODA4NjYgNjI1NGMwMjhjNjNkMjQwMGVmZDFhOTMzNjNhZjY2YmFiNzUwNTRkMyBsZWdhY3ktdHJ1bmsKKzgwODY3IGVhNzAwMWMzZjAwMGZmNjkxMzc5NDM0YjVjZTAwNTRlOWNhZWNhMGQgcmVsZWFzZTI2LW1haW50Cis4MDg2OCAyMTY2YjYzYjZmZGY4NmY2YjlmZDE4ZjgzMjIxYWM2MWUwN2EwNWY4IHJlbGVhc2UzMS1tYWludAorODA4NjkgYjRiMzIyYjJlOThiOTkwMTY5NGJiZWQ5ZTYyY2Q2NTVmMzRlMmNiYyBsZWdhY3ktdHJ1bmsKKzgwODcwIDM0NmM0YzJlMzg2ZTc0MzVjNWRhZGRlNjEyMmE1M2EyYzY1NjEwYjEgbGVnYWN5LXRydW5rCis4MDg3MSBjZWJlMjg1NzAwMDY5MGVmMjFiMjVlNDJjMjBhNDU3YTAyMzMxODUyIHB5M2sKKzgwODcyIDRjZGNmZjBlOWEzNmVkOGRlYWEyNzY1M2RhYzBjOWMwYzJlOWYxMzYgbGVnYWN5LXRydW5rCis4MDg3MyA2YjI3YTk1YzJjNTIyODE0YTZlOTFmM2EzYjJjYWU0MGZmMjczYzE1IGxlZ2FjeS10cnVuaworODA4NzQgZTRlNTQ4NmVjY2JlMGU2MzcyYjQ4ZDMxNDA5OGU3YWIyN2YyOGEzNCBsZWdhY3ktdHJ1bmsKKzgwODc1IGNjOTI1MDJkZTRjOTUxMTQ0YjJjZTdiZmY0NDkyZDk2OTI0NTMyOGQgbGVnYWN5LXRydW5rCis4MDg3NiAzYjQ5MDk2M2Y5MmM4NzQ4NjNjYzE3MTJmZmMxMzExODdiZmYxODFkIHB5M2sKKzgwODc3IDI5N2UyMzMyOGM2YzY5NTgwYmE4MThiNzg1YjA2ZDAxZGM3Y2Y4M2Qgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg3OCA1NGVmYWY2ZDJmODkyYTk1YTY3ODIxNmUyMTg0YjcwYzQ0YjllMWM4IHJlbGVhc2UyNi1tYWludAorODA4NzkgMGE4Mzk2OWI2ZjM1ZGIxNmViMmI2Yzg5MjllNDRhYWVjNjdkZDM0NSByZWxlYXNlMzEtbWFpbnQKKzgwODgwIDlhZjk2MGZiYWNjYzVlNGU1MWE3NmI4ZTM1NGUzYTBjY2M5Y2RjNTAgbGVnYWN5LXRydW5rCis4MDg4MSA1M2Y5Yjg0ODgyYTA1Njk1NDA3ZDVhYmVlNDI3NmE5ZjY3ZTVlY2FlIHB5M2sKKzgwODgyIGFiMGIyODU1YzllNDI5MTNhMmQ1ZTE2YmM2N2FjMzllMDA1ZGE1NjggbGVnYWN5LXRydW5rCis4MDg4MyBhZGU4MjkzYmE0ODdhMTk0YjQ2ODE1YTRjN2RhZWY1NzA3NzIwZDcwIHB5M2sKKzgwODg0IDJkM2FlMTJhZDA5MzY4ZGM3MDU5OWJkMzIwYzkzMzVlZTQxMjgyZTYgcHkzay1qaXQKKzgwODg1IDdlNWJkZjU5YTQ4NzEzNjBlNWMwNGRiMWExNjBjYzdhMDk5Nzk5YjggcHkzaworODA4ODYgNjkzZjc0YzQyZTVlZjlkYjNhNmMyOTdkMjllNDhmNDMwZGIzMTIxYiByZWxlYXNlMzEtbWFpbnQKKzgwODg3IDlkNzZhZjk1YzE2NmRhOTI3Y2Q4YjIzOWZhMGRmZGI5MDYyMjlmNWYgcHkzaworODA4ODggOGFkMWM3NGQ1OTA5NzMxNTU0MDFhNmExNDZkN2Y3YzcyMWFiZmQ4OSBweTNrCis4MDg4OSAyYWE2MDUxNjhmMTEyZTEwMzY5OTYxZDZjZDgzZGNjNzBhYjFkMjlhIHB5M2sKKzgwODkwIGYxODJlMDkyMmRjNzQ3NmYzNjVkN2RiZDFkNTQxMGI1MzE4OTQ0NmMgcHkzaworODA4OTEgZjQyMzA3NjVkZGJiMTc4ZGY1ODA0NDI0MmFkN2YwMGIxOTAxNjVlYSBweTNrCis4MDg5MiA1NDhmYThlZGI3ZjBmYjc5ODM5MjIwMDViODg5YmY2MmI0NGMyNDE1IHB5M2sKKzgwODkzIDVhYjRiNGVmY2Y2MWYzN2Q1MmUxNjNiM2JlMjI4NThlZWRiOWQ0NzUgcHkzaworODA4OTQgYTFjOWE5MTI2MGQ5MWEzYWY1ZDgwMGM2NjdlY2UwMzIxNzNjYjExMSBsZWdhY3ktdHJ1bmsKKzgwODk1IGE0OTI1NmIyMjY5NTdhMzA5M2YxN2ViZGU3Njk3MzY3MWIzMTU1NDQgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDg5NiBiMGI3YmEyNmJlNmMxOTE3ODEyMTBhMDMyNDllMWY0ODM0NDhjNTI0IGxlZ2FjeS10cnVuaworODA4OTcgNWZiMzk3N2ZiMzQxZTM3YmM5OTQ3NGM1MTljZTcyZGY0MzA1ZjQxNyBweTNrCis4MDg5OCA4M2M1ZjI3YWY1N2M5MmNlMDQzN2Q2OTA0ZDA2N2Q5OGUzZmVkZmRkIHJlbGVhc2UyNi1tYWludAorODA4OTkgY2E3N2VkNzM5ODI3MDE5ZjIyZTEzZDA0OTM3NGM5YWMwMzcyMGY5NSByZWxlYXNlMzEtbWFpbnQKKzgwOTAwIDBiMDk3MWRhZjU4YzAwNzA3MjQ5MDVkODM1Mzk5YTdmNTAxNzhmYTQgcHkzaworODA5MDEgZDYxNTE0ODg3MjZmOGFlNzY0NjUwMzMwYWZmNDZmZTZlNGFlYmZmMSByZWxlYXNlMzEtbWFpbnQKKzgwOTAyIDUyNjAxMDRkYjk5ZDc0MzQwNmIxNTU2NWEyY2U1YmI0OGUwNjA2M2MgcHkzaworODA5MDMgMDY5ZTdlZmE2NDViNTEwNzY1ZWU1MGI3NmY3NzNkZmI3N2E0Mzg3ZSByZWxlYXNlMzEtbWFpbnQKKzgwOTA0IDU5ODFiMmRhMTMxYTEyNzM0MDRkYWQyZWE3Y2RkMTg1OTAxMDI1ZmYgcHkzaworODA5MDUgNDI3Yzc1MDBiMmI3MGM5ZmM5ZjUyNDY1ZWNjY2U0YmEyOTRjNWFiZSBweTNrCis4MDkwNiAyNDU5ZWU2YWM3YzdhYWUwMmUwOGU2MDkxMGFlY2NlNjE0YzRhOTM1IHJlbGVhc2UzMS1tYWludAorODA5MDcgMTYzMjE4MzQxNTZhMDQwZTgyNzA2OGExMWQyODZlMjA4YTQ4N2Y1OCBsZWdhY3ktdHJ1bmsKKzgwOTA4IDVjOTA5NDc5MmQxYWNjZjQwOWVhZTQ4NzZkYjk5YTc2YzhmM2MxNzAgbGVnYWN5LXRydW5rCis4MDkwOSA0OTBkMWMyMDM2ZTk2MzU2MWU2OGM1NTg0OTkxMWI4OTBkMWZhNDY2IHJlbGVhc2UyNi1tYWludAorODA5MTAgZmU3ZTU2Zjk4NmNkNDUwZmUyNGM1MzRmZGUxOGQxNDUwNDEyZGNmMyBweTNrCis4MDkxMSBlM2EzZWQ2MTRjN2UwOWUzMzI2YTdiMjA2ODQ4ZmVkNmMwOTcwNDRiIHJlbGVhc2UzMS1tYWludAorODA5MTIgNjFjNGNhOTRhMzY2ODI4ZDJkZGI2NWFjNTQ2YzgxYzQwMjg5YjI5YSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDkxMyBlMDQ2YWRiMTA0Nzk3ZjQzZDQ2NTc4MzJmNWM3ZTVjOTY3YTRkYjQ4IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTE0IGUyOTk0MmVhMmZkZjg0MWYxNGU5YTdhMTczMTczNDM0Zjk5Yjk0NGIgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDkxNSAxOWJlZThlYTQ4ZDhhYjU3YjUyOTczNDQzMWFiODEwM2RlZGY2ZGI1IGxlZ2FjeS10cnVuaworODA5MTYgZDAyYjMxNzNjM2M1YjkyMTBjMmMxMmU4NjE3YTg4YWM0NjE3ODZlOCBsZWdhY3ktdHJ1bmsKKzgwOTE3IDM1MzI4ZjA2OTIxY2U5Y2Y1OTAwNmEzNDdmYWM1M2Y5ZDFhMjNmNjEgcmVsZWFzZTI2LW1haW50Cis4MDkxOCA1YTM4ZTdlMTZiZjhjYjkxODg0ZDNlMjhiY2JkZWYwZDMyZDYxMTUyIGxlZ2FjeS10cnVuaworODA5MTkgZmFjYzY5MTc1OWExYzMxOTY5YjViYjQzMzVhZmRjMDFiZGQyYjJmZiBweTNrCis4MDkyMCA3OTY3YmM3YjAxOGQ0YWU2MTg1Y2JhOGFlMjE1MGNiOGEwYTIzNWFlIGxlZ2FjeS10cnVuaworODA5MjEgOWRhYmZjMTlkMWFjNGZmOGY0ZWM5Y2UxNGZhOWQwZWFhMjhiNjI4NyBweTNrCis4MDkyMyBmNzM3ZDZjYmIwNDU2MWZhMzkyN2RkNTJlOTcxODhjYzIyODIzYTZiIHB5M2sKKzgwOTI0IGY1MGQ1Y2E0NjkwY2I2Nzk5MjQyYWNkNDI0MmRmZWJmN2YzOTRmYzkgcmVsZWFzZTMxLW1haW50Cis4MDkyNSA3MWFhMDk4YTA4MmUyNjIzOWU5ZmMxZDc5NTZhODUxMTVkZGQzNDBmIHB5M2sKKzgwOTI2IGI2MDI2NzZjYWRjZDg1YjVhOTgyNzQyMzZjNDBiNmM0ODNhOTBmMTIgbGVnYWN5LXRydW5rCis4MDkyNyBmMTg5ODE5MDQ1MDc5ZjhhYzIwZjJlODZkOTIxZWY1ZTM3OGNjZTJmIHJlbGVhc2UyNi1tYWludAorODA5MjggYmNiMGNmOTI0NjkzYmYwNWJlZDI0M2E2ZjU4ZTYzMmM3MDlmMjhkZSBweTNrCis4MDkyOSAzNjgzNzFmYTdmNWMzNjdkNDQ1OGUyYTE0YjY3YmUyYWYyMmFkODk5IHJlbGVhc2UzMS1tYWludAorODA5MzAgODM5OTUzNTgwYjZkZmNjNWUyMjlkZDk3NTVmZjg2YTQxNDJhOWEwYyBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwOTMxIDY1NDYxYTcwNTQ5NjdkODkyYTU0ZWJjMmEwODAxYzk4OGUwYWU3ZWUgcmVsZWFzZTMxLW1haW50Cis4MDkzMiAyNmVkYWI5ODlkMmY4ODU1NGZiODYyNGU2YjlmNmFhNmQyNTgxM2JmIGxlZ2FjeS10cnVuaworODA5MzMgZjU4YjlkZWNlMjVlYjhiZGU5OTQyMWI0ZmUzMTE4YjViYjJmMDk4OSBweTNrCis4MDkzNCA5ZmU1NjJhMmYwZTMxNDVkODNhMmI1MDQyZjhlOWI0NGFmM2JiYzk1IGxlZ2FjeS10cnVuaworODA5MzUgZTkyZmI5NWYyMzE3ODJlMDcxYjg0MWNkNWM0Njg0ZGRiY2ZiOGRiOCByZWxlYXNlMjYtbWFpbnQKKzgwOTM2IGI0ZmFmOTljNjQyZjc1MTA2NGRmMTYwOWJiY2M0YTc5NmQ1N2JlMDggcHkzaworODA5MzggODI1ODkzN2UxMzljMjI2M2Q3N2E4YWU5MWJlOWE1Yzk4ZThjNDlkNyBweTNrCis4MDkzOSA0OGQ3OTU5MTY3ZGVmN2RiZTlhOWY1NjEzZTMwZjBhNTk0NjI0ZDFjIGxlZ2FjeS10cnVuaworODA5NDAgMjNiZDYxYzdkYmJjZDU1Njk4NmIzM2E0NGI0MDkyZDk5NTc0YWIxNyBweTNrCis4MDk0MSBjN2QwNjc4OTUyZDNkYjhjNzkxZjY3MmZiNjgzNTU4N2UyNTBlZDJhIHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQyIDBlMzk4MmFlMjgxZDgyMzc1ZDcyYWEyMzhkYTk3ZmFmMjMzODE1YzYgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDMgYzg2N2Q5OTFlOTFmMGQyMjQ1MWNkZDMzYTI2Y2M2NWJjMzkzNTlmYSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0NCBkNmRhMzgxOTc3Y2U1MTZlNGI0MTY3ZDRjNmIyYzA3MWY4ZWYxNzRhIHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQ1IGE5MDM3MjI0OWZkMzVkZjY2NjQzNzJhZDMwZDAwN2NjNWFkYjMyMTYgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDYgY2JkZDAxM2RhZjZkNjE0ZGMyMmY0OWJjNDM3NzVmM2M5MmY4MDQxZSBsZWdhY3ktdHJ1bmsKKzgwOTQ3IGUyYmNjZDM3MmNkNjNiYmM2ZTRjZDM5NGMyYjI5OTI5NTkzNTU5M2IgcHkzaworODA5NDggODVhYzI3ZmE5MTNmYmFhZTJlN2EwMDA2MWNhMGZiMjA2MzgxNzI0NCBweTNrCis4MDk0OSAwN2E0N2E1MTQ1NDg3YWI3Nzg0YmE5MTM4N2JjOWJmOTJkNTA0MDZiIHB5M2sKKzgwOTUwIGE3NzQzN2JkZTMxYWYzMWM3ZTRiOWI3OTJjNGZlYWVhZGIzODBmMTMgcHkzaworODA5NTEgMWFiYjNkM2UzZThkZjUyZjZmZGFlZThhNDVkMTc3NzJjNTgzMDJlMSBsZWdhY3ktdHJ1bmsKKzgwOTUyIGNiYTFkMjFlYWIzZDJjZGU4MmRiOTE2NjQ5MzRmMDU0MDk5YTRkMGMgbGVnYWN5LXRydW5rCis4MDk1MyA3NGFlMGViOTMyZGVhZGFmM2UyZTNlNTU0MmQ2MGVhNzRhYmZlNTVkIGxlZ2FjeS10cnVuaworODA5NTQgNTNkNzYyMzBmYTE4NmY1NmJkN2E4ZmNmMTVmOGFlNzU0YWZiYjU1NCByZWxlYXNlMjYtbWFpbnQKKzgwOTU1IDdlNmYxZTgwYjNjNjU2N2U3MGEwZDY3ZDhlY2QyYWFlN2Q2OWI1YzUgcHkzaworODA5NTYgNDY0NGNmZjI1MjViZTBkZTdlMTNiMzliNDAyOTg3Nzc1MWQyNDRhZSByZWxlYXNlMzEtbWFpbnQKKzgwOTU3IGY4NTFlN2I2ZTBkNWM1ZDBhOTE5NmMxZjU0YjlmMzkxZjIyZDcwN2EgbGVnYWN5LXRydW5rCis4MDk1OCBiZWRlODUwN2YwYWNkNGM4YWNmZmFhZGM0MjBjZjBjNWYzYTVhOTU4IHJlbGVhc2UyNi1tYWludAorODA5NTkgZGIxMzM2Y2M4NTFjMmE4NWRiMGNmMWI2MjQzZGE5NzE3MWVlN2NlZSBweTNrCis4MDk2MCAzMjRmODk4ODZhMWNiNmRhMzJiZTIxOTFkMWQxMmJkY2RlZDVmZWQ3IHJlbGVhc2UzMS1tYWludAorODA5NjEgZDA2ZWYzMGE0NDFlZGI1YmFkNTdkMmFjZjkwZDRlYmFkMmJmNGQ0MCBsZWdhY3ktdHJ1bmsKKzgwOTYyIGI3YTBmMDIxZmY3ZDk3MzU4Nzg4ZmQ0NjkyYTc1ZDMyMDI3YzdmYWMgcHkzaworODA5NjMgYzE0MjNiMGE5MzI5MzY3NjQ1MzQ4ZGQ5YjM4NTM2OTFjODE3Y2JmOCBsZWdhY3ktdHJ1bmsKKzgwOTY0IDRmN2U1MDg5ZmM5N2FlN2FmODNmZWU5MmVkZjgwM2E1ZGQ5OWFjMjMgbGVnYWN5LXRydW5rCis4MDk2NSBhZmUyNTkyMzU0ZDk3YmM1MWFlNGQ5NzE3MTQzZGIxNTM0ZTgxMjRjIGxlZ2FjeS10cnVuaworODA5NjYgNGE5NDBkOTllYzg0YjFiMmFiYmFhYTBjOTI0NDI3YTMyYjAzZGY1YyBsZWdhY3ktdHJ1bmsKKzgwOTY3IDkzMDM5NWIyZGU5MDM2YjBlNzI3ZDgyNDAxMGVmNWY1YTJmN2ZlNzMgbGVnYWN5LXRydW5rCis4MDk2OCAzZmFlN2NiNDkyMDk1YjEyOTFlNjEyOTAwNTE4NGJiZmZlNTFhNTM4IHB5M2sKKzgwOTY5IGM1ZmRlNGE0MmNiMGE1ZTE1N2E2YzFjZmZmYjc1MDQ3ZjVkOTI4NmEgbGVnYWN5LXRydW5rCis4MDk3MCBmNjE0ZGJlYzJmNGY3OTJkN2QyN2Q3OGNjNTcyZmRkOTMxZDEwZTBjIGxlZ2FjeS10cnVuaworODA5NzEgMjI3ZmE3ZGI1MGRlZDAzYTg1NDY3YjAxNTNkYjExZTIzMjM1ZjYxMSBweTNrCis4MDk3MiAwZDk3MzJmNjA3NzY5MjkzNGRjZDQ4OTA4MDU1ZDFjOTkzNzAzMTZkIHJlbGVhc2UzMS1tYWludAorODA5NzMgYjEwYzNhMjRkMmY5ZGI4ZmQ0MWQ4Y2NkNTQ0MzRkY2EzMzg1NDQ1NiBweTNrCis4MDk3NCA2M2Q2ZjVmZWRiZjMxNDU2NWIyOWM3OGI0MGM4YWQzMjNhMGIwOTdmIGxlZ2FjeS10cnVuaworODA5NzUgMTdkMjFlOWU2MzIwMTMzZmMyZTkyMjYwNTgzMGJhNDhlODhiZDFjZiBweTNrCis4MDk3NiBiOTRjMTMzZGI0NTE2NjJiYWQyOTMwZTE2ZTUzNDM1ZTE3NGI0MjcxIGxlZ2FjeS10cnVuaworODA5NzcgMDI3MDE1MTFiNzU5NmMwMDE4ZWQ0NWQ3MTZlMjViMzEwMWQ5ZjRlOCBsZWdhY3ktdHJ1bmsKKzgwOTc4IDMzY2I1Yjk5MmQzOTJlYWYwNDNlZWJjODZkOTYwNTY1Y2Y2ZDk0Mjcgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NzkgYjdmMDJjNjcwYmQ3YzRmODZiMjc5ZTA1MTNhMjJjZDdhNGYzZjIyOSBweTNrCis4MDk4MCA3MDNmOGIxMWIyNTBiZGYzNzQ0Y2Y3Zjk5MjY1MDNkZDIwMjk1YWFhIGxlZ2FjeS10cnVuaworODA5ODEgOWY0NjdjNjJkOTU0MDhlNDEyYzk4YzJiMDIyZWM3YzJkMjM3MjgyMyBweTNrCis4MDk4MiAyODUyMjBmMjRjYzhmM2EzZWU1MjYxZDczMGU0NDBmYjNjYjk4NDIwIGxlZ2FjeS10cnVuaworODA5ODMgNDc4NDcxY2NmN2ZkMTllYzYzYTkwMzFmMjVlNmFjZGU1OWU2ZmYxNCBweTNrCis4MDk4NCBiZTFhZGYzYzhhMzMyYzVhZjJiMzg0YTQ3OWJmYjIzZDc0ZjNmYWViIHJlbGVhc2UzMS1tYWludAorODA5ODUgZTI2M2FjMmJlNGZkNDIwNjgyODRkMDg4NGZiNjNjZDQ0OGQ1Y2U4YyBsZWdhY3ktdHJ1bmsKKzgwOTg2IDJmN2FiOTIyMTIxYTQwYjcxY2FkNmRhOGM2YjU0ZWEyNmFiM2NjNDggbGVnYWN5LXRydW5rCis4MDk4NyAzMjkzZGE4M2RmMWUzMDg2YjgyZTA3YWUzNTA1YTYyN2VhM2UwYmYwIGxlZ2FjeS10cnVuaworODA5ODggZTQzNTg4OGI4ODI1ZTU3ZjI2NjcxZTRmNjQ3ZmFjNTU0MGY3NDRhNiByZWxlYXNlMzEtbWFpbnQKKzgwOTg5IGNhZmI2MjI1ZGVkODZlNmQyMWVlMzk4YmE4OTZiY2Y2ZmY0ZWIxMzAgcHkzaworODA5OTAgNzQzMzU1ZTNlZjRhYjExYmMyZDM1MWMwNmM4MTA1ZTE3OTA2MGYwNyBsZWdhY3ktdHJ1bmsKKzgwOTkxIDhmZjhmMGE1MjZkZDA3Yjc0MjljZWZhNTYyMzQ2NmYxMDU4ZDBiMzUgbGVnYWN5LXRydW5rCis4MDk5MiBmMmNiM2FmNTU2MmZiZDkwNGJiNjE1MmI2OWYxNDFjMzY4MDFhMTkyIHB5M2sKKzgwOTkzIGRjY2RmYmU1NzdiYTU3MmQ2NjQ2MDc5ZmM2Nzc0NWU0ZDYzMzM5NTQgcHkzaworODA5OTQgMjRlYzcyNTk0MTk2NWE5MWZlMzEyMWQ0MzU3NmVlZTUwNDUzNjIzMSByZWxlYXNlMjYtbWFpbnQKKzgwOTk1IDMxYjk0MTJjYWQwMWJkMDNmYzVmMjc3NWYxYTEwMjNjZWEyMTM5NjggcmVsZWFzZTMxLW1haW50Cis4MDk5NiBmMjE5NGU2ODg4MWViZjQzNzYxOWFjMGJmOTUwOWY0NzhmYWQ3YTBlIGxlZ2FjeS10cnVuaworODA5OTcgZDZkZjc0OTc4MGM1NDc5M2M3NWY0NDM3MTQ5MWM2YjBiYjQ1ZmQwMyBsZWdhY3ktdHJ1bmsKKzgwOTk4IDZiYjk4OTFkNDI3NWJkNDJhNjliM2Q5MDNkMTNiNjg3NTQzYzkxNWQgbGVnYWN5LXRydW5rCis4MDk5OSA4OGNmNTc2ZjljZWVhMjVmMWY3OWZiYjI5ZDgwYmJmYWNmZmQyZTZlIHB5M2sKKzgxMDAwIGYwZjQxMThjNzZlOTkwZjZmYWEzYTNhNmMzZGRlMTUxNjU3YmRiNTcgbGVnYWN5LXRydW5rCis4MTAwMSBmMTkxZDVmODBlYjA0MWJhZGU1NTQyNjE3ZmU1NzViZDlkY2Y1NDNiIHB5M2sKKzgxMDAyIGJlZDA0NDkyMzk4ZGVkNjA2MzZmNWEyMWE4Njg5ODU5YWNmZmJiMmMgbGVnYWN5LXRydW5rCis4MTAwMyA2NjNiMzlkNGE3ZWY3ZDY3ODdiMmViYmVhODAwYjE5ZGYyYTE3MTNiIHB5M2sKKzgxMDA0IDRkYTdmYmEzMzcwZmNhMGU4OTk0MTg5ZjEyOGM1ZmI0ZWU2OGNkZTkgbGVnYWN5LXRydW5rCis4MTAwNSBmY2IyMWQyY2ViNzNiMjkzMzkxNDUwNzVmZjQ4Y2NjNDFhMWI2ZmNlIHB5M2sKKzgxMDA2IGFiOWFlNTY3NmFkYWU3MjUxZjVkYTEyZGI5NmU0ZDc0NGUxOTAwNjkgcHkzaworODEwMDcgNDM1YTgzNTVkYWI2YmVmYzQ3MTQxZGMyMTZjMTBkYjBmMmIxZWNhNiBsZWdhY3ktdHJ1bmsKKzgxMDA4IDZmYThlMTM4MWI0OTkzYjE1MzYwZjFkOGU4ZDI1ZjllODQ5NjA0ZTkgbGVnYWN5LXRydW5rCis4MTAwOSAxMTdiNGI4MWI4NjQwMmZmMjk5ZDc4OGY2MzJiZTlmYzRhMDY0YmIxIHB5M2sKKzgxMDEwIDJlOWJjNjFjMWMxZWM3MTg4Y2ZkZTZhODE3OTIxNjhjZTFjMDRiMjEgcHkzaworODEwMTEgZmI3MTkwNDkwNDRmY2M4YWQ3OTEzZDJmZjM0NjcwZjU4MDQzZWQ4YyByZWxlYXNlMjYtbWFpbnQKKzgxMDEyIDJjOWUwOTVkNTJmMDBkZDYzYjNhOWQ3NzE3MjQzZTlkNDhlZjRkODEgbGVnYWN5LXRydW5rCis4MTAxMyA1MGZhM2Y0YzgyOWIzNDFiNmFhYjAwMjk0NWZhOWQ0YjJjNTk5NzEzIGxlZ2FjeS10cnVuaworODEwMTQgZGQxYzhmZjJlOTkwMzA4MTc0MDA5Y2M1ZWRjYzBjZTkyYzc1OWI4YiBweTNrCis4MTAxNSAxMTM5YjVkOTk2YjAwNDE0OTJiMGMwNGY3OGZmNjBlODQxOWQ2Zjg1IHJlbGVhc2UzMS1tYWludAorODEwMTYgYjk2NmQ1ODM1ZDNiMTEwYWUzNTFlZWFhOWQxYjM1MjNmNjIzZWQ1OCBweTNrCis4MTAxNyBkMzE1YTc5ZjFlY2NlZTU0NTJjYmIxNWE0NzkyZDI2ODZiMjU4ZmJjIHB5M2sKKzgxMDE4IDY3NzUxMWVkZjA1Yzc4M2E5ZWM5M2UzYzFmMGZlZGI4YTA0MTNkYTUgcmVsZWFzZTMxLW1haW50Cis4MTAxOSAwMzc1MzMxNmY4MWY3YjEzN2ZkNTg5ZmI2Y2ExNTAxMjMyNjljMjE0IHB5M2sKKzgxMDIwIDZhMmQwY2M3ZDYwNDljYTRlMDFmZDVmYmZlZDAxMmFkZmVkMDNjNWYgbGVnYWN5LXRydW5rCis4MTAyMSAzMDNkYjIyNjExNWRkNmNkZjA5MWIwMmJhMjcyMjllNzIwNjg0ODNmIHB5M2sKKzgxMDIyIDcyNGU4NzViMTk0MWM1N2YxYjIxZDc0NjljMGY5YTU2NThhYmQ1MmEgbGVnYWN5LXRydW5rCis4MTAyMyAyMjk0YmNmNDBlNTE5NTdkMTgwZGExZjU0ZDYzYzZjZTJjOWU5ZTY0IHB5M2sKKzgxMDI0IDNkYzI1ZDAyNGE1MWMzNGI1ZmZjNDY0MjA5NGMwYTU5YzFjODIxZWYgcHkzaworODEwMjUgZjhjMTljNWY1ZGQyNDgzYTAxNDVkNjkxMmI5YWMyOGUzM2YzZjZiZSByZWxlYXNlMzEtbWFpbnQKKzgxMDI2IGQ2OThmYjA1NmE0NTljOWEyZTQwY2MyNjQ0YTQ0MTdjOTYxYTRmNzggbGVnYWN5LXRydW5rCis4MTAyNyBiNmUwM2NhOGEyMDZkZWYzMzE2Mjk5MDhkODUxOTk5MjQwOWE5OGRhIHJlbGVhc2UyNi1tYWludAorODEwMjggMTlhYWM4NGFjMWRhZGViYWY4YjdkNmExMTBiOGI4NWRhZThmYTliNyBweTNrCis4MTAyOSBmZDI1MDMwMjIzYjA3MDI3MDAyZTdkNjU5NTZlNDgwM2NjNzA2YjdhIGxlZ2FjeS10cnVuaworODEwMzAgODRiYWY2MjU4YzNiZjM4NTM5NzUyYmIzYzkwZTFlMGVkN2RiZTE1MSBsZWdhY3ktdHJ1bmsKKzgxMDMxIGUzODMzNWQ0ZGY5MWRlNjQyN2M5YTIxYjU0MWZjZTRmODJkOTU2NWMgcmVsZWFzZTI2LW1haW50Cis4MTAzMiBjYWIxNGJlMGFkYTE1OWRhOWY3ZDk0YzVlZTdjNTZlNjFlMTU3YmM2IHB5M2sKKzgxMDMzIGYxOTc0MDdiZGJhMmY3ZDY0NDkyMmVmNzkzODhkNWM4YjRhYzg1OGEgcmVsZWFzZTMxLW1haW50Cis4MTAzNSA1ZWEwZjU4NThiNzIyYTEyYTdlOWE5MTU5MjhiMTUzZmY0ODFhYjY3IGxlZ2FjeS10cnVuaworODEwMzYgYmMwY2VhNTg0NDc4NDdmMjNkMWI0MjYwNGZkYmM1MDM0MjA2NzdmYyBsZWdhY3ktdHJ1bmsKKzgxMDM3IDVjYWQxMGIyNzdhNDc4MzEzN2U4Mjg2YmIzMTQzYmE5OTBlNWRkMzYgbGVnYWN5LXRydW5rCis4MTAzOCA2OWNlNmM5MzdkNmVjOWVlNGY4N2E4NjhkNjg1MGFmMTVkODc2ODc5IGxlZ2FjeS10cnVuaworODEwMzkgNDNkMDE2OWRmOTQzZmEwMzM1ZTdjZmZmMTIwZjc1ZWZhZDUzMDBkOSBsZWdhY3ktdHJ1bmsKKzgxMDQwIDMxM2Y4NTU4NmVmOGViODM1NGEwMWQxNTQ0OTllMDQzNzI3MTFmZDIgbGVnYWN5LXRydW5rCis4MTA0MSA2N2RjMGE5OGI4ZjZmYzkyNWRkNzNlNzdjMDAxOWQxZGE3NTc1Y2NiIHB5M2sKKzgxMDQyIGZjNDZlNDM3MjI3ZDYyOTFkMTFmODlmZDUwMTI5NDFkMzhhNTMxNTAgbGVnYWN5LXRydW5rCis4MTA0MyA1ZWIwZTU0NTE2MTI0N2NmZTZmZWQyMDdiY2NlMWUzZDdlNDNmMjgyIGxlZ2FjeS10cnVuaworODEwNDQgZmIxOWVjNTc4ODUzMzM5YzYwMDBhNGVmOGE2MmVmOGNhY2NkY2FjMiBweTNrCis4MTA0NSA0ODhkYmUyNjJmNjgxZDRhMThlOTE4MjE2YmVkMzc2NTExNWYyODgzIGxlZ2FjeS10cnVuaworODEwNDYgN2Y1YTU3MWIxZWNiOGEyODgwNzJkOGVkZTdiOTBhZTQxYTU0MDZiZSByZWxlYXNlMjYtbWFpbnQKKzgxMDQ3IDIwYWU4MzgyMWVmMDUzNzI5MmRmMWYwYWI5ZGNhMDE0NGY5MGRhNWYgcHkzaworODEwNDggOGM0OTljYjM3MjNhNGIwOWU1M2MyZjNiZGEyMzhhZDVmZDdlNjZkZSByZWxlYXNlMzEtbWFpbnQKKzgxMDQ5IDczNmQ2Y2U5YjYwYmFhOTM0ZGQ0YmFkOGNkNGY0ZDUzN2VlMjA1NGEgbGVnYWN5LXRydW5rCis4MTA1MyA5NDU3MzhlMTg3MjYzOTE0ZmViNDM5ZjIyYWQwMDViYjRmZjk3ZjVhIGxlZ2FjeS10cnVuaworODEwNTUgNmE4ZGZmZjZkMjQxYjUwMDEyYjkwNzUzODA2NTlkYjUzM2FmZDk0ZiBsZWdhY3ktdHJ1bmsKKzgxMDU2IGU2NDc5OGIzNmVhNGRlZjA2YTY3MmFmNzcxNGFiOTQ1YThhMmQ0YTEgcHkzaworODEwNTcgZGE2Y2Y4ZjNkOGMyZWM4NmQyNTk4MjhmM2IyNzY2OTUyY2E4N2FiZSBweTNrCis4MTA1OCBmMDI1YjZiMGZlMGY2ZjliZGFkYjNmZmRiYWU0YTc1ZjA3MWNhNzBkIHJlbGVhc2UzMS1tYWludAorODEwNTkgMzE0OGQ3MDUyOGI2MDY3MTY1YzcwNjc0ZWFlOTczYzM3YzlhZjM4NSBsZWdhY3ktdHJ1bmsKKzgxMDYwIGU3NjI5ZWZjNTVkMDA3ZTUyNDdmNjlkMDQ3M2E4ZWFlOWE0MjY0NjUgcmVsZWFzZTI2LW1haW50Cis4MTA2MSAwZjg1MDdmNTQ5NDI5ZTBjMmE0NzJjOTc3ZTI1NzkzNjQzMjAyOTA0IHB5M2sKKzgxMDYyIGJiZTlmOThhMGMwMjBjZWRlNjY3ZmVhM2Q5MTg2ZmU4ZjdjZWQ4N2UgcHkzay1qaXQKKzgxMDYzIDgyOWE4NmUxMWJkN2UxNGU5MGRiZDY0YjRiN2MzMTg0ODMzZmZlM2EgcHkzaworODEwNjQgZjEzNThhYTMzYTZlMjM0ZmQxNzVkNGM2Nzc5MGE3ZTlmMDZhZDg3ZCBweTNrCis4MTA2NSBjYmZkMjdkYjhkYzI3ODA3ZjY5OTdiY2NkODViYTI4N2YzNDVhYmVmIGxlZ2FjeS10cnVuaworODEwNjYgZmM5ZTIxNTk2OWQ4MzZhMmFmMzBlMTk2MWU4YTYzNzAwYjhhY2NlMiBsZWdhY3ktdHJ1bmsKKzgxMDY3IDVhYjA0NDM4NTZjYWI4YTJlNTM0NDcwNDY2NWRiZmY4MWRiNDY3N2IgbGVnYWN5LXRydW5rCis4MTA2OCBkNjA0ZmFiNzQ5ZGQ3NDAzYmQ4ZDQyM2FmMzIzY2U2MzgwZTc0YjJiIHB5M2staml0Cis4MTA2OSBjNzU1MTJhODVmZDFhZWMzYmEzM2VlN2U2MTYzY2FiNDdhMjI2YWYzIHB5M2staml0Cis4MTA3MCBiNjZlYmI3Nzc1NjhiMGU5ZTIwYWE1NzliYzFkNzJlZjZmMGEzNDI1IGxlZ2FjeS10cnVuaworODEwNzEgYmEwZmUwMjRlODlmZDRjYTU1NTZlMzE1ZDlkOTU1ZGU0ODRhYTY3OCBweTNrCis4MTA3MiA0NTQwOGNiNGI3MjMyYjlmMjRkOWNjY2IyMzQxMDQxZDQzOWIxMzU4IGxlZ2FjeS10cnVuaworODEwNzMgNjQ5ZDY3MTBhODFmZjc1Njg1MzA2NGRjMzlhY2ZhZDhhYjMzNzM5YiBsZWdhY3ktdHJ1bmsKKzgxMDc0IGY4MGU5MzU4MmI3ZmU2ZGU4MzNlZTNjNGZiY2Q0ZGVmMTg3NTZhNmUgcHkzaworODEwNzUgMDAyMjBlYmVlZDBhOGYyNGI0Y2Q3ZDAzNTYzNWFiYWQ0ZjBhYmY2NiBweTNrCis4MTA3NiA4YWMwZjBkYjVmNTk3NWZlY2E3ZWU0N2JjZTExOGFhOGQzMzE5ZTlmIHB5M2sKKzgxMDc3IGYxNWQ2ZjFhMmZhMzBlZDgzZDdjMjM1ZTZkNzYzYzM3NGFmNDRjZmMgbGVnYWN5LXRydW5rCis4MTA3OCAxZjY5ZjI4MTlkMzEzNTdkNGVkZWJiMjY3ZWUzZWZiNDQ5ZWYzOTQyIHB5M2sKKzgxMDc5IGMwZGQzM2E1YWRiZTZjNWEyYTA4MjY0MzIxZDM5YjgwODJjYmYwYTkgbGVnYWN5LXRydW5rCis4MTA4MCAwYWMxMWRiNWZjOTZlNDcwNTM5ZDJlY2M1ZTJjZmVkNTljZWMyODQ4IHJlbGVhc2UyNi1tYWludAorODEwODEgMDExOTQwYmFlZmIwYmU5MTM1ODIwMTIwNmNmNDYyNjQ4MmY5MjExNSBweTNrCis4MTA4MiBmYjYyZTNhOWQ4ODZmZmJhYTFjNDczZmI4ODE1MDI5YTA4ODUzMzcwIHJlbGVhc2UzMS1tYWludAorODEwODMgOWMzMjFhYWVlZjEyNjA4NmEzODI3YzIzZTM0NmY1ZWMzMGZmMjY1NiBweTNrCis4MTA4NCA4MWEzYTMyMjZjZjVkZDQ1YjRkNzJiMTlhOGRmMzFhZWEyNjNkMTQzIHB5M2sKKzgxMDg1IDlkZmVkOGRkMWM2ZDk4OTU0M2E0MjRjNDA4YmI5OTZiYTdlYzhjODEgcHkzaworODEwODYgMzUzZjQwZWVkMWJjNmQ0ZWNkN2ZmMGUyNTc4NWFlNmZkZjE0OWJlMCBweTNrLWppdAorODEwODcgNGZkN2ZlYTU5ZTViMmJjZjM3MGE2NTI5OWMxNGI2YmI0MmNkOTdkNiBsZWdhY3ktdHJ1bmsKKzgxMDg4IDNlNmNhNGIwM2M3OWE0ZDRmNTZlYWY2OTBhZGJmYTI4YTE5NDkzMjAgbGVnYWN5LXRydW5rCis4MTA4OSA4MTFmYzYzMTkwYTdjZDFhNzJkN2ZmNWU3YjgxNmFkYmQ0ZGY4MjBmIHJlbGVhc2UyNi1tYWludAorODEwOTAgZGZmNmZjMzg4OGM2MmU5OGU5YzRjZTAxZTU3NTk5MDdlMDQ3ZTZmYiBweTNrCis4MTA5MSA4NjgwMWQxZDkwMzg2YmFiMDZhZWVhOTcyYmRmYzhhMmQxMzdmNWE3IHJlbGVhc2UzMS1tYWludAorODEwOTIgMzBmNGJiYmFkZTBiNzExN2I1Mzc5MWM4NTA1Y2JiMWRkNWYyMzBlMiBweTNrLWppdAorODEwOTMgNDk1OWI2ZjViYzg2Y2RjNTA3ZDhkYTY0MTA5ODYzYWY5YmVjMmM4NiBweTNrLWppdAorODEwOTQgNWUzOTM0YTMxYzhkYzAyODg1YmJkOGEyOThmNGIxYmRjMThmNGNkOCBsZWdhY3ktdHJ1bmsKKzgxMDk1IGFmMmY4NGU2NjI1MzdjMzlmNTBiOGJhYjg0Y2ZkMDdiZDc4YTlmNWYgcmVsZWFzZTI2LW1haW50Cis4MTA5NiA1NGRjMTA5ODhmMTU0YzBkZWZlNmFhZjY2MzMxZTY5Yjc4Y2E3OGUxIHB5M2sKKzgxMDk3IGVmNGRlMDUzZDU3N2Y4NWZlOGFmZjk4YzczZjhjNDY2ZTM4ZWQwMGEgcmVsZWFzZTMxLW1haW50Cis4MTA5OCAzYThjYTY3YWU0MzExYjA0OWQxZjk5OGM1NjkwMDgxNDFiZWU4Y2U1IGxlZ2FjeS10cnVuaworODEwOTkgMmE3MGM4MDM0OWIwZWQwYTAyZWIwMGI3NzU2MTI5YjEwMWMyYmY0MyByZWxlYXNlMjYtbWFpbnQKKzgxMTAwIDQ4ZDk2NjRjNDdhM2Y1ODczMTMxNjhmMTU3OGI0ZjI5Yjk5MTlmOTIgcHkzaworODExMDEgNGIxMGVmOGEwMjRjZWZhMzMwNzdlMWMzNDg0YzJlNTlhM2YwNWNkMiByZWxlYXNlMzEtbWFpbnQKKzgxMTAyIDIxYTgxYzdhYTRiYzUwZjc4YTMwMDc4MTMxZWJhOGE4ZWVlMTM4MjAgbGVnYWN5LXRydW5rCis4MTEwMyBiOWQ0YWRmOGIxN2U5ZmYwYWJiZDU3MWQ3OTMyNTI1ZmZkMTViOGU0IHB5M2sKKzgxMTA0IDRiODk2M2NmODBiMjg2ZDY4ZTUxOGVhNjQ2MGI3ZmM0MmViMzY1NTUgbGVnYWN5LXRydW5rCis4MTEwNSBiNzYwNGVhMmY0N2U3ZjVlMDdhZTlmMTcwNjBhYTEwZjdjYmY0N2E0IGxlZ2FjeS10cnVuaworODExMDYgNzNmM2I4ODUxNzVkYjM3ZTAxYTA5NjE1NzQ3MmRhYTJkZDYwNmZmNiBsZWdhY3ktdHJ1bmsKKzgxMTA3IDc3MzcxNGU1ZWFhZWM5NjMwMWQxY2Q5YmViMjZhMWYzOWQwY2EyMGIgcHkzaworODExMDggMmRkY2QzMDUzM2Y3MmZkNjA3Njc4NGY2OWFhMDhhMTg4NTlmZGVhMCBsZWdhY3ktdHJ1bmsKKzgxMTA5IDZmNDc5NjBiNTY0Nzg5ZGNmOGU4MTgzYTUyNTYyNmU4NjVhYmE4Y2MgcHkzaworODExMTAgZWZhZjYyYzJjZjc1OTliNDhjZjNkYWVmMjg3NzRiMzY0MjM2Yzg3ZCBweTNrLWppdAorODExMTIgNWRlYmVjYjQ4MjgyZGFhMDQ4OGNiNzEwMGVhYjI1NzgzZmRhYzgzYyBweTNrLWNkZWNpbWFsCis4MTExNCBiNjQ2NDAxNGNhYTA3Njc2YmNmOWNjM2JjMDgzZTEyZDg1YmI3N2I3IGxlZ2FjeS10cnVuaworODExMTUgZTE4MzZhN2I2YjZlNzY5Yzk2ODMyMTEzNTZiOWFmNTc0Y2YyMzZmOCBsZWdhY3ktdHJ1bmsKKzgxMTE2IDFiM2ViZWQ4YjZjNjUyYTVlNmJhZDg0ZWNkODg5ZTNjMjVhZDIzOTIgcHkzaworODExMTcgMDEzZDc2YWE4OTUxYzJjNDg2MmU3ZDFhNGM0ZTJmMTlmNTI3NzE4MiByZWxlYXNlMjYtbWFpbnQKKzgxMTE4IDMzMDI3M2VjNjAyODM5YWJlYjc4MjQzMTBmNGIyNWQwNjQxYTY0MzYgcmVsZWFzZTMxLW1haW50Cis4MTEyMiBjMWJhODgxNmIxODdlOTM1NjVmNzI4Y2M0NTg2YjM5Y2E4MmY5Y2FiIHB5M2staml0Cis4MTEyNSA5ZWM3YWNmMGEwMDU4NzBmZTg4OTZlMDNkOTJiODg5NWQ3NmMwYzhlIGxlZ2FjeS10cnVuaworODExMjYgYjU1NGVlYTI2MTBjYzhkNzAyZTYzMzIzNzQ0MTA2ZjRkNTMzMTc3YSBsZWdhY3ktdHJ1bmsKKzgxMTI3IDkxZjQ2MmI5MDRiMWZkMjg2OGRlMTI2ZDM3ODhlYTY1YjkzNDU1OGEgcHkzaworODExMjggMzRhNjg2ZmJmZmViOWU1YTY1YjMzYTkxMDJlNTM4NGY3OTFjYjIxYiByZWxlYXNlMjYtbWFpbnQKKzgxMTI5IDEwMzVhOGZkN2RmYjk1NzExYzc1NDU4ZjMwMGQwMjA2M2ZkNDNkYzMgcmVsZWFzZTMxLW1haW50Cis4MTEzMCAwNmM2ZDNhNjdjMTdiMWY4NzliZmMxNmE0ZThmYWRlNTg0NGU2NjQwIGxlZ2FjeS10cnVuaworODExMzEgMmMyOWNkNTY2OGM3NzI4NTJlNjNmYmFkMTZkMjUxYWY3YmI0N2NkZSByZWxlYXNlMjYtbWFpbnQKKzgxMTMyIGU1NTYzMmFhNjhlOTc0MmVkNGVlZDlmZGRkMjVkOTFmMDg1ZWYzYjYgcHkzaworODExMzMgOTBhOWEzNGU1ZWI1MjNjM2VhZTJmYzYwZTE0ZDYwNzgzZjM5ZmYzMiByZWxlYXNlMzEtbWFpbnQKKzgxMTM0IDg0MTBmODNmZDE1OWY2ZWU1MDg3MGJlOWYyNDI0MWQ4N2Q5Mjk1YzMgcHkzaworODExMzUgNjhiYzM1Nzc1ZDMxMzQwMTc1ODEyMzExNjBlYzBkMWJiZTM4ZmMwNiBsZWdhY3ktdHJ1bmsKKzgxMTM2IGM4MDZlZGY4ZDczNDBlZmYxYjJmYjY3NTQzOGZkYmQxZjFiYWYzNDQgcHkzaworODExMzcgZWJhNDk0NzhhYWQ5NjUxNzZhYTBmYTMxNTQ2NjM4MWU4YjUxZTU5MCBsZWdhY3ktdHJ1bmsKKzgxMTM4IDQzMWExNTFlMTAyZDUyNmNlODJjZWQ1MzRmYmNiMmU4NTUwYTgxZjkgcHkzaworODExMzkgNTM2MWY2ZGQxMzk5NjM5YzdmZmExMGIzOGI1NjM1YmZkZGI2ZmJmZiByZWxlYXNlMjYtbWFpbnQKKzgxMTQwIGVlNTk2ZGE4NjJmODI3ZTZlOTljODVmM2I5YWM0ZGY0MjIyYzBhYjggbGVnYWN5LXRydW5rCis4MTE0MSA2Y2JkNGJjYTA5N2EwYWZkMzljOGI1ZDBmNzg0ZGY1ZDQ2OTQzYzg4IGxlZ2FjeS10cnVuaworODExNDIgMTY5OGM1NWIyYWY5NGJjZTU0MDg1NGIwODc1M2U1Y2IzYzMxZDVjZCBweTNrCis4MTE0NCA5Mzc5MDg0NzE3NGE3NDdhZDRjM2ZlM2U3ZmVkMzU3Zjg2MDFlMjE5IHB5M2staml0Cis4MTE0NSAwNjM2NGRhZDhkZGQxNWE0ZjA0MWU3YTZlN2VjZTFkMGQyZjUwNWRiIGxlZ2FjeS10cnVuaworODExNDYgZTRmMjY5NjE1YTI1Y2NlMzEyMDI2MzA1M2YxMDY2YTgxZTIwZjE2ZiBweTNrCis4MTE0NyBiMzg2ZWI4MzQ3NWY0OWY2N2FmM2RjN2NlY2Q4ZGY0MmY4OTEzM2I2IHJlbGVhc2UyNi1tYWludAorODExNDggZGEzZmE4ODFhODAwMzkwNTIwYmZmZTY5OWRiMTQ0YTNkNmFjOGU2MSBweTNrLWppdAorODExNDkgZTA5NmFhZTUzNWI5YjViYTkzYTdjYjczMWMyODNjYmYxYmZiNGI1ZiBsZWdhY3ktdHJ1bmsKKzgxMTUwIDJmYTczYjI5YjMwNTk3NTA3YjZmZDA2OGRmMzJmYWMyOGEzMzhiNTQgbGVnYWN5LXRydW5rCis4MTE1MSBjYjllMDlmM2ZhOGVlYzNjOWE0NWJhNDZlZmJkM2Q4ZDcyMDQyZGQwIGxlZ2FjeS10cnVuaworODExNTIgMzFjZjFiMTI1MzBhOWQwYWVlM2MyNWRjODMyOTlkYzk4MGY3NDJlYiBsZWdhY3ktdHJ1bmsKKzgxMTUzIGFlNGJiNjcwMTA3OGUwZTNiYzQ1Nzg0YjkwNGE0ZTA2ZTU2NDRiNjMgcHkzaworODExNTQgY2E0OTZiZmFjZDFiZTViN2UwNTQzYTBhZjhhNGVmMTlmMDc2ZTcxZCBsZWdhY3ktdHJ1bmsKKzgxMTU1IGNjZjFjYTczYzBlOTc4OWU1ZTY4NDgzOWM2NGY0ZDE1OGIzZDBhNTMgcHkzaworODExNTYgOWU1YjczZWE2YTdjZTFmYTFjNzY0NTc0YmQ4NDIxZWYzZTFmYjE1YiBweTNrCis4MTE1NyA5ZjYyZjU4NjViNDQxZWI4MDk5MGE3MjEyOTgzYTkzMmE0M2MxZjkxIHJlbGVhc2UzMS1tYWludAorODExNTggMjYyMjc5NmFlY2E5NGVhMmZiNjRlZjNlMTE4NDU1ZTA1NzdjODhmMSByZWxlYXNlMjYtbWFpbnQKKzgxMTU5IDU4YTU2YWJhMGViMmMyZTI0YjUzZWE5YTUxZDZmZjVlNGEzODMyYWYgcmVsZWFzZTMxLW1haW50Cis4MTE2MCBhNmE2N2I3MzRkOGIzNjAzYmM2MjU1OTM3MWU4YzRlMTdmZjVlMmNhIHJlbGVhc2UzMS1tYWludAorODExNjMgNzQyZjE5YjQ3MDIwNGI4NWJmZGIzNGY4ZjhjMDFiZTAzZTc5NjQxMiBsZWdhY3ktdHJ1bmsKKzgxMTY0IDBjYjBmYWQ1MTRmMzc1MjFjNjZhM2E3OWE1YzdmMDA4NTc4ZmI1N2QgcmVsZWFzZTI2LW1haW50Cis4MTE2NSAzYjI0N2FmNmNlZTc5MmRjY2M0NDZlYzZjNTRiNWIyMGUxMGQ5OWQyIHB5M2sKKzgxMTY2IDI1MmZlNWM0Y2Q1M2Y4NmRkNjlhYjRiMjExOWE1MTdkZmViOTlhOWMgbGVnYWN5LXRydW5rCis4MTE2NyBlYWY4MWExMzBhZDZjNDQ5OWNlMmQwOGNkNDFmMzFlZWEwZGU1NjU2IHJlbGVhc2UyNi1tYWludAorODExNjggOWVlMjI4ZDA4OWVkZDI4Zjg2YWNlZmM4YzA5YzU1MGZlZjExY2MzMCBweTNrCis4MTE2OSAyYjBhZjY5YWVmOTdkMjI4ZWNmNzJjMmE4ZDMxNzdiMTRmMGE1OGQ4IHJlbGVhc2UzMS1tYWludAorODExNzAgYWIzMWIwMDlhMWVlMjkzNGIwYjZlOGYxNWNiN2I2ZDg4MTRhNTc1NyBweTNrCis4MTE3MSA5YzFhMmJkNTE1MjhjM2E3ZDU1MmMwMDUyM2UzNWRiMmM4ODBiODAzIHJlbGVhc2UzMS1tYWludAorODExNzMgMzA5ZDljZjg0ODA4NTBlNGY4ZWFiMzllZjk5YTI5Mzg3ZmNmNThiYyByZWxlYXNlMzEtbWFpbnQKKzgxMTc0IDU5ZmY3ZDgxMmFlMzQyZjY1MTRlMDNkMTdkNDUxYWNhYzQ4MzlkMzAgcHkzay1qaXQKKzgxMTc1IDIzNjlkNGYxODllNDJjNjc3NDQxNTUwMzliZjA5NzQzOTA1YjM0ZjIgcmVsZWFzZTMxLW1haW50Cis4MTE3NiAxMTRjNGE0MmZjMWQwMzA3M2EzZGZlYTFlMzM0OWFhOWM4MjA5MjdjIHB5M2staml0Cis4MTE3NyBhODE0ZTdlNzI5MDBmYWY0OGZkODhmMTA3MWEyZGE1NWI0YjZlZGU1IHB5M2staml0Cis4MTE3OCBmZGU5YjQzNTQ1ZmJhZjgzYzExNmE5NjFlNTQyOWE2YTYwMDA5NzJkIHB5M2staml0Cis4MTE3OSBlNmJmZTkzYjY1YmJkYTI0M2Y1MzMyZDBmZDljMmNiZjc0MzQ0NjU4IGxlZ2FjeS10cnVuaworODExODAgMGQwMjhkMzU5MGRhMDNkODk1N2Y4YTUzY2JiZWI4ODNlZWU4ZmJlOSByZWxlYXNlMjYtbWFpbnQKKzgxMTgxIGZhOTAyZjhlMGRiMGVkZjgwYTY2YmYzN2FmNDZhMWI3OGI1MzgzNGIgcHkzaworODExODIgMGUzN2E5NWNkY2ZiNWM3M2Y3NzZkZjA4ZDc1ZmU1MjNiM2I5MWZmYyByZWxlYXNlMzEtbWFpbnQKKzgxMTgzIDc3MjAzNmE2ZjdlZjAyODc5YzNjNWVmMjdmY2U2ZDQ3MGRjNWI0MTUgcHkzaworODExODQgMzYzZWZmYjVmNzI3Zjg4NjRkNDBkMTdlOTQ0NDEyMWMwYWFmYTM0YyByZWxlYXNlMzEtbWFpbnQKKzgxMTg1IGVkZWY4OGY2ZjFhYjYxMTI3NTcxNjg2ZWNmZDM5MGMwMDczNDczNTUgbGVnYWN5LXRydW5rCis4MTE4NiAwNWEyYWIyNzFiNjVmNDgzNmQ5NjMyNGMyMmFkZjA2NzNkM2RjODdlIHJlbGVhc2UyNi1tYWludAorODExODcgOThjMTYxMDQwMDAyYzUyOTM4YmFhYThhZjYwZjc4YWJlODJlOGQ5OSByZWxlYXNlMjYtbWFpbnQKKzgxMTg4IGQ5NzJkMDUyZWUyMjE3YWIzOGRmMDg1MTU1MmUwZWEzNmIyNTNkYjggcHkzaworODExODkgYzRlMTFiMGM3ZWU1MTgzYmRkYzIyYzJhY2E0ZmE3Zjc3NmNjYzMyMiByZWxlYXNlMzEtbWFpbnQKKzgxMTkwIDQ3YjRkYTg2YjliOWY1ZDBmMjg4ZDBjNDI4MzAyZTBhY2Y1MTQxOTAgcHkzaworODExOTEgZWE1Njg1ZDk5NDBhM2I5OTU4YjNlMDQ3NTJhMDgxNTU4MTRmYTMyMyByZWxlYXNlMzEtbWFpbnQKKzgxMTkyIGJiOWFlMTI2MzNhOTlhODRhYjBkY2NlYjE1ZTY1YTU5NzAxMTM2MzggcHkzaworODExOTMgZjNlYTdjZDczNWVjZTc0MTYyMmE4OTEyNzNhM2MwYTk4ODJiZTgzZSByZWxlYXNlMzEtbWFpbnQKKzgxMTk0IGI1YmE3ZWE0MjQ2YjJjZTZmMTJmODM3YjlkMTU5MTcxOTU5NTNlMjcgcHkzaworODExOTUgZTkwOTYwMWUwMjE5OWQyNDA1ODc2YjllMTVmYzVmODBlN2EyNzI5NyByZWxlYXNlMzEtbWFpbnQKKzgxMTk2IDFlMTQ5YjUwYWNhNjE4YjM3Y2M5OWI3ODdkZGUzM2E0MDU1NjQyNGEgcHkzaworODExOTcgOTMxMTkxOGMwNjQ5ZGM5ODY5MzAzMzM4NTE3ZmIzN2JjOWU2NzI1ZiBweTNrCis4MTE5OCAwNDJlNmEzOTZhODY0NDcyZTJlYzAyYWE1YTk4YTRjOTRkYzcwODg2IHB5M2sKKzgxMTk5IGRjZjQ3MTE3MTU4ZjAxMjgxOTk4ODJmNTM0ZjU5YzE4NmQ1YjdkNzggcHkzaworODEyMDAgZDJlNjc1NGNiYmQ1ZTc0NDc2NzdkYmFlZGE0ODBmZjU1MDZlM2ZlOSBsZWdhY3ktdHJ1bmsKKzgxMjAxIGU0ZGVkZjU0YzQxZTI0MTI4OTliYTdiMDE3MGNkZmJmM2MzOTVkOTUgcHkzaworODEyMDIgOWFkZTNlNjIzNzEwZjA0OGRlOWViY2VmZDc1ZDA2OWZlNThkOWE2YyByZWxlYXNlMzEtbWFpbnQKKzgxMjAzIGVmMGY2MzRhZDVmYWZkN2I1Njg5ZjlmZGEzZDM3MDQ5NGJmOTA4MzMgcmVsZWFzZTI2LW1haW50Cis4MTIwNCA5OTM4M2YxYmMxN2M4ZjUxNTVhNjA4YWYxNDg3MWVmYTc3MGY2MTBmIHB5M2sKKzgxMjA1IGEwYTUzNTlmOGQxMzY5ZjJmNWFkM2QzYTNlNjg4NThiOGQ3ZjAwZTAgbGVnYWN5LXRydW5rCis4MTIwNiAxODY4OTBkN2ZlNzI0MzYxYWE4YTM1YjgwMmNhYjAxZWU5N2FjZmU5IHJlbGVhc2UyNi1tYWludAorODEyMDcgY2M5YjgyODBlM2Y1ZmQwYWZkOGIzODlmNzkxOTJhNzUyMzgyMTBjMyBweTNrCis4MTIwOCA3OTcwYzQ5OTAxNDQyN2M0NjJjZDU0MmQ0Mzg0OGE4NmYzZjAwNDdjIHJlbGVhc2UzMS1tYWludAorODEyMDkgNTQ2OGYzYWVlNGFlMWIxMTIwYzFjZGY0YTMyMDk5YmIxOThiNWNkNiBweTNrCis4MTIxMCBmNTlmM2M3MzczNGRiMzY1NjAwMmNkNzhlZTk3NDA3MmY3YzJlNTVkIGxlZ2FjeS10cnVuaworODEyMTEgNzc5ZGJjNTBmMWY4OGRlZjcyOTMzZTNiYzA5NTFlZmIyMjY3NjY0ZiBweTNrCis4MTIxMiA5MmQxYzg4MTkwNzFmYzJiMWE4MjkwMGU0ODY5NjhiMmJjYjE3NzdmIHB5M2stY2RlY2ltYWwKKzgxMjEzIDQ2NTJmZTBjM2I4OTc0YWZkMDg2OTAxNWU5Y2RhMzIwMGFjYmYyYzUgbGVnYWN5LXRydW5rCis4MTIxNCBlYzE5OTE5ZTI3Y2ZlNjkwNGQ3YzY5NDgwY2JlZGEzYWQ3MjIxOWYxIHB5M2sKKzgxMjE1IDdmMDUzZTI1YjMzNTJkNGE2YzhkNWYzZWUzMzlmY2M1ZGI0Y2EzZTEgcHkzaworODEyMTYgMzc4YjFjZDg0NzJlZWZiMWRkMGEwNjY4YTFhZTkyOTc2MzFkZDE0MSByZWxlYXNlMjYtbWFpbnQKKzgxMjE3IDllNDM4NWRiMzcwZWQ4N2JiYWIyODBkYjZkNzg0MTg5Mzg2YmZmMjIgcmVsZWFzZTMxLW1haW50Cis4MTIxOCA2OTkwYzZkYjdjMzk5NGM4ODQ0ZDQ2ZTY2MjQwNDBmODA3OGVlYzY4IHB5M2sKKzgxMjE5IDRjOTU4ZTQ4OTNiYTY5ZjgxOWE2YmVlNzJmMTMxNmMwMGFhN2ZlNDEgcHkzaworODEyMjAgMWQ0ZGJmYThlZDRmMmFmNWJkZGUwZTRhNjQ0MjQ3YzJhNTM3ZGM2YSBsZWdhY3ktdHJ1bmsKKzgxMjIxIGNmMjZmMDExNDk2ZWQyYmUzZDhiZjJiMzA0NzJhNDRiMGZlYjE0NGYgcmVsZWFzZTI2LW1haW50Cis4MTIyMiA4MDAyMTQ4YzFhMWI3ZGEwZjkwYzljN2I1N2VhNGExMzI4ZmYwNTNkIHB5M2sKKzgxMjIzIGNhOWQyZjBhOGI4YWNhYTExYjVjOWQ0Njk3MjA2NmMyYjRmYzIyNDYgcmVsZWFzZTMxLW1haW50Cis4MTIyNCBmMzZlMGUyZGFmNDMyZTZmYzM5NGEyMmVhYjNkODBkOGUzOWJiNDIwIGxlZ2FjeS10cnVuaworODEyMjUgZjM1MGFjYmNlNzkwZjFlNGMyYzdiYWQxYmJmMWFmZTQ1OGFhZWU3OCByZWxlYXNlMjYtbWFpbnQKKzgxMjI2IGY1YzY0NTVjMTQzYzY3NTQ3M2E5YTdlNzU3MDJiNDg0MmMxNWZmYzQgcHkzaworODEyMjcgNjg4NmVlOWNiNzJjOTA4ZGFkOWJjN2IzNjJjMGQ2ZDEyNDViMjNiNiByZWxlYXNlMzEtbWFpbnQKKzgxMjI4IGQwOGRhNDU0NGUzMTIxNDhkYzFjMzFiYTgzYjA2NWI3ODQwODQzNTUgcmVsZWFzZTMxLW1haW50Cis4MTIyOSBlZjIyZGMwNjVlMGUxMWI0M2I5YWZlZjE5OThiNGMzMzNiMTMwZDE1IGxlZ2FjeS10cnVuaworODEyMzAgZTU3NjUwYTRjYTgxYTY0NzBlM2RmYWUwNDFmZGNjM2QyN2JjNjg5MiByZWxlYXNlMjYtbWFpbnQKKzgxMjMxIDk2NzgyNmRkNWZjNmMxMzE4NGE4NmJjMjJiY2EzOGE4ZGNkNjJlZjEgcHkzaworODEyMzIgODQ0YmQ3Yjg0MjFiNzNjM2FiYzFiOWQ2MTAyNDgzMjVmYWFiNGJhMSByZWxlYXNlMzEtbWFpbnQKKzgxMjMzIDRiYjAzY2MxZDQyMWY2Y2U1ODgzNjVhZjk3OTk4NTQyMWVmMmZkYjggcHkzaworODEyMzQgYjI5YWI0ZTc2NzM2MmViNGRjYTc2MTcyZDBhNzJiYTAyZjg4M2JhYiBweTNrCis4MTIzNSAyY2E0NjI2ZDljOTMwMzQ4ZTY1MjJlNzIzNTQ2MmJiYmNkYTEzMThjIHB5M2sKKzgxMjM2IGUyMGE2NzdhZjAwMDQ4MTljZjA4NGMyNDNhMTc5OTAyMDZhMjBhYjkgcHkzaworODEyMzcgMDhhYmJkYzk5YmU2OGRlNzQyYzlkZDY1MDJkMTI1Y2IzYTdmNGY5MyBweTNrCis4MTIzOCBiNGNmY2E1YzQyOGU1MjE0N2FlYjAwNjQ1YzA0YzI4NDE4YmRiNWVlIHJlbGVhc2UzMS1tYWludAorODEyMzkgYTA5ZWIzZDU5ZmY3ZjYxZWYwY2E2NDFkYjJmM2VhODg0NmQxMzBjNyBweTNrCis4MTI0MCBmODM3NjEyMDA3ZGM5YWI3Nzc3MDc5MTg1MzcwMzdhM2NkZDE0ZWIzIHJlbGVhc2UzMS1tYWludAorODEyNDEgOGEwMDc5ZDhkMWNlZjQzOTNkY2NiZjcwOTQxOTQ4YzlkZDdkN2NkZCBsZWdhY3ktdHJ1bmsKKzgxMjQyIDdhN2FlNDc2ZGY0ZmUwNDI1MDViZTlkOGE2NTcxNGJhYjYyOWIzMDYgcHkzaworODEyNDMgYzE3NzgzYWVkY2I4OGFiYWY5ZDNhMzNjMTFmM2YwZTdhYmJjYjU0YyByZWxlYXNlMjYtbWFpbnQKKzgxMjQ0IDhiNjQwMWFlMTI2Mjc4MTI0ZDYwYTc3MjExOTU1ZjI5YTA4ZmJmMjQgcmVsZWFzZTMxLW1haW50Cis4MTI0NSAzZjFhNmIwYjc5MGM3ZGM1ODVlNDNkYWI2Mjg1MGUxOWMyMGIyZTBhIGxlZ2FjeS10cnVuaworODEyNDYgNGQyN2U4ODA3MjRhYmQxZTE4YmI0NjU2MTEwN2Q3MjEwYjZkNTMzZiBweTNrCis4MTI0NyBiYzAwZTQ2M2E5NWJmNWVkZGEyNjBiNWFlNTY3NmE3MTNjODFjNjAzIHB5M2sKKzgxMjQ4IGEzM2JlZTE0YWJjNTFiMjA5MzI3YzBhOTU3ZGZkNmI4YmQyYjAyMzkgcmVsZWFzZTMxLW1haW50Cis4MTI0OSBkZGRkMWJjN2U4MzkxNzBlMjY3YjhiZjQ2OTYyM2VkMTNhNTQ0OGNiIHB5M2sKKzgxMjUwIDg5NGM4ZTQyMDc0YTkzYjFlZTA1YzZkZWZmOTkzNzM5YWJlOTk4MmIgcHkzaworODEyNTEgNTU2OTYxZjRmMTZkYTcxMmM4M2QzODkyYjBmMWZhNjhlYzJiYTk0YyBweTNrCis4MTI1MiBmM2Y5NWVkODI3NDRkYjAyZTVhMTI0MjllNzFlN2Y5Nzc4MmRjMmRmIHB5M2sKKzgxMjUzIDMxY2VlMmNmN2MzNzZhYTMzZWMxMjkwNTkwMTg4NjU5MmViZWM5MDggcHkzaworODEyNTQgY2E4MTY0NmRkMjljYmU3MmM2MmQ0YjUxMjZhMDY4NzY0Njk4YTcyMSByZWxlYXNlMzEtbWFpbnQKKzgxMjU1IGQyOTM5OTEwMDk3MzgyMDIzOTcwNzU0NjdmZTk0ZTA4YTBmMGU4MjYgbGVnYWN5LXRydW5rCis4MTI1NiBkMTJiNjVhNzk4MjRmMDBjOGVmNTU1MGRhYzhiNjFmMzIzZGZlMDRhIHJlbGVhc2UyNi1tYWludAorODEyNTcgYzg2ZWViNzMzMzE2YmEzNGVmZmI4MGE3ZDJlMzE1ZTRlNWJhZWJjMCBweTNrCis4MTI1OCA5M2EyNTE2OTg3ZTAwMjIxMTg3YThhMTllMDk5NDZjMWViM2M3NmQxIHB5M2sKKzgxMjU5IDBiMDRjNWNhNTc3ZDE2ZDQ3NzM0MTFiM2VlYzgyZDU2ZDA4YzY1NWIgbGVnYWN5LXRydW5rCis4MTI2MCA3NjY0M2MyODZiOWYwNTE5NmRiMDNkODg1MTc5NmZhZGI3MjExMzYwIHJlbGVhc2UzMS1tYWludAorODEyNjEgYjVmMmM0NDIxYTMxODZiZWVlNDU2MTA3NjYyMzkzYjY5NWNjYzE3OSBsZWdhY3ktdHJ1bmsKKzgxMjYyIDA5OTMyNjUzNTYxYjlkZTQ3ZGZmMjRiZjQ5NjM5MmE3NDMwNTcyMmQgcmVsZWFzZTI2LW1haW50Cis4MTI2MyBlYzU5NWZmMjU3ZTA2NDAxYTUyM2IwNDJhNzA5OWQyMGQzOTc2ZDZjIHB5M2sKKzgxMjY0IGZmNGE5NjhjYTdiYmU3NmU3Mjk2MjllMzVkOTBjOGEzOTg0NmRiZWUgcmVsZWFzZTMxLW1haW50Cis4MTI2NSBjOTgxZjBjODY3OGI0OTg3NWY5NmY3NTJhN2RmZTU5OTI3NjA0YzlmIGxlZ2FjeS10cnVuaworODEyNjYgMzllYjkxYTVmOWRjYTgzNmJmMmFlYmExM2Y5ZDgxMmJhNjE5YWQ0NCBweTNrCis4MTI2NyBkNmNiMmYxMGU2NWVmODczNDkyOGZjNmFjYTYwZWE3ODE5NDRiNjU5IHB5M2sKKzgxMjY4IGI5YTBmMjZmYTJjOTYzMzdkMTE5N2JkMDY4NWUxOTRhNzMxNDAxZDQgcmVsZWFzZTMxLW1haW50Cis4MTI2OSA3ZjY0ZmFkMTc3ZGQ2YzZjYjljMTRlNDNhYThiMmRhMjZlOTJjNjlkIHB5M2sKKzgxMjcwIGYwMWFiMWIxM2QwYWU3N2EzMjQwN2UxOGUwMzhhNTRhMjI0YmE2MDAgcHkzaworODEyNzEgODQwM2Y1MDZkOWU1NGE0Nzc4YmVhZGJkODQzOGJiZWVhOTYzOWZlOCBweTNrCis4MTI3MiBkZTdjODU4MGY5ZWJlNjYwMzIwOTY4NDllNzI2MDI0YWQ0NjRlYjAxIHB5M2sKKzgxMjczIGJmMTRiOTYzOGM3M2E1ZTlhOGUwMjMyYWI0MTdlODFkYzdmOGFjNTAgcHkzaworODEyNzQgNWRiZDJjMjliMGU5NmViZTAzZDZiOGUxODIyZGE1MmE1YTExYjczOCByZWxlYXNlMzEtbWFpbnQKKzgxMjc1IGYwZmNkNjkxODdjZDI2ZDA3NzZjOTQ0OWNiYmUyY2YyMmI5YzRhZWMgbGVnYWN5LXRydW5rCis4MTI3NiBkZWM4ODcwMmM5YmM3MzZkMzM0NWE4YTcxNDBhOWE2MzRlYmE0Y2I3IHB5M2sKKzgxMjc3IDE3NTdiYmViZjc1YWRiMTYxZjBkY2FiOTI5OGNjMGM2MGM5MzQzOGYgcmVsZWFzZTI2LW1haW50Cis4MTI3OCA4MmRiZjkzZjc2MGY0ZTg4MDFlYjY1ZmJhZDIzM2UwOTE5MzcyOTUyIHJlbGVhc2UzMS1tYWludAorODEyNzkgZTc0NjY4NTQ0NWRlZWIxMDM1YjliNTU4Y2VlYzA1NzlmNmFkOTM1OCBsZWdhY3ktdHJ1bmsKKzgxMjgwIDY2NjYwN2NlNGFkYTlkYmNiOTRmNWRjZDJiNzFmZTAzNWY2YzFkNWMgcmVsZWFzZTI2LW1haW50Cis4MTI4MSA0NTVkM2ZiYjE0ZWNiNzVhY2MyNmRlMDRjMzg4MGU4NTZhNDQwOTE5IHB5M2sKKzgxMjgyIDg3MWJmYTFmZGE1OTBkMTJiNzNjNWZmN2ZjM2ViOTI4ZjcwYWJlNTUgcmVsZWFzZTMxLW1haW50Cis4MTI4MyBmMWUzN2E4ZmIyZDEyYjg5OWE2YTAxNjQwYjU2YTE1ZmVjZTlmMzIzIHB5M2sKKzgxMjg0IDFlNTJiZWQ4NzdjMTc3ZjY0NTg4M2IwNmIxZjIzYzA5ZmMxZWZiY2QgcmVsZWFzZTMxLW1haW50Cis4MTI4NSA4ZGEwODhkNmE5NWIyZjFlZDc4ZTNjOTM1ZWI3MTQ1NjBiZjYxMmFjIGxlZ2FjeS10cnVuaworODEyODYgNmIzODkyNmE1ZmNkYzRlYjdhYTczN2UwZmJlZjkyZDk3NjBlNGFmOSBsZWdhY3ktdHJ1bmsKKzgxMjg3IDgwZGM1NzAxNzdjNjY4YTYyYjEyNjI1NjkxNzYzMTVlYWRmZDhmM2UgcmVsZWFzZTI2LW1haW50Cis4MTI4OCAxOTc1MTFjNGI3NWE5N2EzYzA0YTY3YjFhZTk0M2Y3NzY2ODIyMWMyIHB5M2sKKzgxMjg5IGVkMGE2OWQ2NmMxMTM1MDhiNzZmZmYwYjVhMzI0ODlmYzVmYjk5YjggcmVsZWFzZTMxLW1haW50Cis4MTI5MCBiZWM4MThhNzY5MDJhMmY0ZWJmZWM4NTUyZTkzYmNiYzkzYTgzM2FmIHB5M2sKKzgxMjkxIGNmNzRlYzNlMWY4MjY4MjgzMmNlZTZmMjE0NWYyZjExOTJmZjQ5NTAgcHkzaworODEyOTIgNjEzYjYzZjU4YmViZjI5ODRjZmVlMmQ0OTFlM2Q0YzMxOGYzYThmYyBweTNrCis4MTI5MyA4NTliODM4ZWNmM2RiNjVlZmNiN2RkOTFlNzc2N2NiZTE4NGFhNDkwIHB5M2staml0Cis4MTI5NCBkN2Q4MDQ2ZjdhNTJmZjY0NDljNGI4YmU0NzU2MWZlZGNmNmNmYmVmIGxlZ2FjeS10cnVuaworODEyOTUgZThlZGFiZDU0MTliM2UzNDZiNzk1NzQ4YWFiNzI3ZDVmNjdkYWM1YiBzc2xvcHRzLTQ4NzAKKzgxMjk2IGI3NWU2MmZjYWU4MWE3MjczYjFkNzJlZTYwMzJiN2ZkOWE5NWFmZDkgc3Nsb3B0cy00ODcwCis4MTI5NyAyODU5MGQ1YjZiOGIwODY3ZTg1ODY2ODNkY2EwMjA2MzM4YjdiMDMzIHNzbG9wdHMtNDg3MAorODEyOTggZjI0NzE0NmY4YTk1OWVmYzcyMjljNzBjMTRlYjQ3YzdmNzVmNWNlNCByZWxlYXNlMjYtbWFpbnQKKzgxMjk5IDI2ZDc2MDUyMDNkY2MyMDczMDljODY1MzBjYzc5NDZjYmZlOGFiNWYgcHkzaworODEzMDAgMTVmYTU5ZmMxNDlkYmNjYTk5ZTQ2MDRjZmM1YmY5YzUyNTVkNDU3OSByZWxlYXNlMzEtbWFpbnQKKzgxMzAxIDVmMzEzNTBhZmI2MDk4YWQ3YjVjNmIzZTdiNWYzODMyMjU0MDVhMTYgc3Nsb3B0cy00ODcwCis4MTMwMiA2MzkxMDU1ZWZjYTBkYjk2MGNlMDZjMDZkOGM0YmZjNTQyNTMzYzBkIHJlbGVhc2UyNi1tYWludAorODEzMDMgMTA2NWQxYzUzMzA5YWVjNGNlYWQ1NmYyOTVmZDVjYjhmNGFkYWU1MCByZWxlYXNlMjYtbWFpbnQKKzgxMzA0IGYxNGY0MmYzMjkyMmUzZWM5OWY4NzM2OTE4MzAwNjg4ZmYwNjA2MGQgcmVsZWFzZTI2LW1haW50Cis4MTMwNSBjOWVkMGMzZjZkY2RkN2IxZGY2NGVmNjU5ZTY5ZDY3OGYyOGI4Y2E4IHJlbGVhc2UyNi1tYWludAorODEzMDYgYzk5ZmNhMDNmYTM3OGUyN2VkODc0NzRiNTkwOTMwOTk5MmJjMGJlZiByZWxlYXNlMjYtbWFpbnQKKzgxMzA3IDE4ZjYyYTdhN2RiYTgyMzdiNmJlYjVkNDA5ZWEyMzg0MmU1MGM1YjAgcmVsZWFzZTI2LW1haW50Cis4MTMwOCBmNzZmODEwNDRkNDA4M2Q1M2E4ZjlmYWM2OWM4MjRjMDgwMGRkNDYxIHJlbGVhc2UyNi1tYWludAorODEzMDkgZWY3MmYxNTg2NGE5OThmNTI3Y2FmNDdlYjk3ZmNiY2FhODczYmUwNiByZWxlYXNlMjYtbWFpbnQKKzgxMzEwIDA1MjY5NTczZDIxNzJmMGM0NDU1ZjY3N2NhZGI0ZjUyOThiMDY0NDAgcmVsZWFzZTI2LW1haW50Cis4MTMxMSBjMWMxZThjOGRjOWNkMWFkNzQ3MmY5ZjllN2Y0ZjAxNmYxMzY3OWVlIHJlbGVhc2UyNi1tYWludAorODEzMTIgNjg0MWIyYTE2YTUxZDVhNTk1MjMxZDlhMDBmZDM1ZjAxMjJmNDA0MSByZWxlYXNlMjYtbWFpbnQKKzgxMzEzIGNlMzgwOWI4MzQ3MzY4MDljNWI4ZmU5YmI2MDZhMGU4ZGRhMjBhZDIgcmVsZWFzZTI2LW1haW50Cis4MTMxNCA3ZmM0OGFkMTYwODdlZjNjYzI2MDU4MTU4MTg5NTJjZDcwODYxODk0IHB5M2sKKzgxMzE1IDdmMTVhNjAwNjE2MjdkZjliYzU3MTRjMDI5OWNkNTQ5MzRkNjM0NGQgcmVsZWFzZTI2LW1haW50Cis4MTMxNiBhYTc3N2Q0M2YyMmY1ZTk0NjJiNWViOWQzMzY1MzA4ZWNhOTZlNmI1IHJlbGVhc2UyNi1tYWludAorODEzMTcgYzhkMTY2ZWM1NDMwMWRmMzc0MmVlOGQzODU4N2JiMGI2MGEzNDc0OCByZWxlYXNlMjYtbWFpbnQKKzgxMzE4IDc1ZDczOTY1NTZmZGU4MzMwMTdhMTA2MmFlZTI4ZmVjZWViMzgxZDMgbGVnYWN5LXRydW5rCis4MTMxOSA5NDJiM2MxNjhmMTVkYWY1OGI2NDZiNDg5ZTE1MTgwZDBjZTAwYzI1IHB5M2sKKzgxMzIwIDE1MDRjYzVhMTVhMWM0ZTMzZjdjM2JjMDAzOGViODE4NTNjZWE2NzYgcHkzaworODEzMjEgODQ2ODY2YWEwZWI2NmZmN2FmOWNkODZkNjliNGY1YTViZGUxZTdlOSBweTNrCis4MTMyMiA5OTk5OTc0ZmY1MDY5NWJkNWYwM2ZlODViOTYzY2M3NzIyMTQ2MDBlIHB5M2sKKzgxMzIzIDdiYTg1MWQxYjQ2ZWM0ZjQwZDAwZTFjN2M4NTdmN2E3OWM1MjI2MDQgcHkzaworODEzMjQgODljZTJmNmQ0YjI0MTc0YmZhMmNkYTYyMzU5Y2JjMGRiMzU5N2UxNiBweTNrCis4MTMyNSA3ZGNkMWEyNjk3OTdiYjBkYTNmMGVkY2YzN2UzMjI1ZmE5YTA4OGMxIHB5M2sKKzgxMzI2IDgxZDc4ZGQyNzNiMDlmMGQ2ODM3ODg4NjljNjZlY2I3ZTI5MjEyZGQgcmVsZWFzZTMxLW1haW50Cis4MTMyNyA4Yjc2NmVjNjk2ODVkNGY2Y2ZhMzlkOTNmYTc1Y2VhMjZiYTI5N2Q4IHJlbGVhc2UyNi1tYWludAorODEzMjggOWEyMzMwOWRmYWEzMTk5NDE1Y2Y2ZjcwZDU0MzRmNmJlZWVjNGVlMCByZWxlYXNlMjYtbWFpbnQKKzgxMzI5IGI2ZDJhMjdjM2UzYjQ0MmU0ODI3MjViODU1OWNmMzMwNWNkOGZiMzggcmVsZWFzZTI2LW1haW50Cis4MTMzMCAwODNmNjg2YWFmMTVhNGQ5OTU2ZWI3ZWVmYmVjZDg0NDgyYzkxZjdhIHJlbGVhc2UyNi1tYWludAorODEzMzEgZjM3ZWNmNGE4ZmYxMGFlOGUwM2NkZmVhMWJiNWRhNDZjOWU4OTI0ZSByZWxlYXNlMjYtbWFpbnQKKzgxMzMyIDc3ZWIxZmI1OWM3ODA3ZWE4ZGVmZWMwYTlkZmM3MGQ2NzMwZjhjODQgcmVsZWFzZTI2LW1haW50Cis4MTMzMyAzZDBhZThlZjAwNDQ2MjhjZTM5ZmU1N2E4ZWJiNjQ5ZmFhOWQwYmVlIHJlbGVhc2UyNi1tYWludAorODEzMzQgMjhiYmQzMWNiY2FiNmQ2OTYxOTAyMjNjMzNkMzkzNzE1OTc0MjAzYSByZWxlYXNlMjYtbWFpbnQKKzgxMzM1IGY1YWFlODViNjg2NGU2OTRmNWEwNTVjZWUzMGNjOGM1MTEwYjRkNWYgcmVsZWFzZTI2LW1haW50Cis4MTMzNiA3ZjEwYWVjYjA2MzIyYjMzYmIyNWUwZjUwMThkNGJmNmE4YmRmYTc3IHJlbGVhc2UyNi1tYWludAorODEzMzcgYWU0YzkzMWE3MWYwNjk2OTU3NzI2MmE4YTU1OGZlOTEyYTE1ZDU2NiByZWxlYXNlMjYtbWFpbnQKKzgxMzM4IDFhMzRkZTA0Mjk3Mjg3MDdiZmIwZTgwYmVjMjVlYzA0NDA3N2Y4NjkgcmVsZWFzZTI2LW1haW50Cis4MTMzOSBkMWYyNjVjZWE3MGI3NDM2YTljMDU4Y2ZhZTBhMzI4ZTMzZWRlM2M4IHJlbGVhc2UyNi1tYWludAorODEzNDAgYTcyYmM1NGVjNzFkZjg2MWJhY2MxMzg5NTAwYmVjZTBiYzczZDJjNCByZWxlYXNlMjYtbWFpbnQKKzgxMzQxIDZhZTA3MzMyNmU3ZmI4MjQ1ZjgxNDQ5OGRlMWQwYzEwOWY2MTQ1NDkgcmVsZWFzZTI2LW1haW50Cis4MTM0MiBmNDkwZDE1ODE5OGFkZWVlMTUyYmY4ZDI5YjRhYzg2OGEyZjk4YmE1IHJlbGVhc2UyNi1tYWludAorODEzNDMgYmY0ZTgzZGU0ZWE1Mjk4YThlZTgxODQ1OWU2ZGNjZTM5MTRmMzkzMyByZWxlYXNlMjYtbWFpbnQKKzgxMzQ0IDA3NDEwYWVlN2ZjMGVhZjhjNWI1OTc5Zjg1NjcxODkzMTFkZDI0MTAgcmVsZWFzZTI2LW1haW50Cis4MTM0NSAzNGU4YmZlYjBiOTg3OWQxMWI3ZjMwZmU2ZjExMWE5ZDUxY2VhOWE3IHJlbGVhc2UyNi1tYWludAorODEzNDYgNTkwNmEwZmNjODI2YjUxZjI4ZGMzM2VlNzJmYTk4ZmYyZWFjZTYxZSBweTNrLWNkZWNpbWFsCis4MTM0NyA4ZjZlNjdmNjkzZmY1ZTM2YzdlODQ4MTU3NjUxNjY3NTUwMzNkMWU1IHB5M2stY2RlY2ltYWwKKzgxMzQ4IDY1YjU2MWYzOTY3OTNjNGQwOWExMTZkNjE3MTYxNDkyOGE1NmE2NzcgcHkzay1jZGVjaW1hbAorODEzNDkgZTAyM2FkM2UyY2FjY2IyNTI3OWE0NGMxZjkzMWEwMTljMDc2OGU2NyBweTNrLWNkZWNpbWFsCis4MTM1MCA4YzZmOTgxNjk5ZTgyNWFjMGVhNWNiZGEwNzFlZWRjOGRiY2IzZjU4IGxlZ2FjeS10cnVuaworODEzNTEgNjg1MjVlZjM2YjY2OGMzNTdlMDVmOGY2YWEyZDA4MWY0OWUzYjZjNCByZWxlYXNlMjYtbWFpbnQKKzgxMzUyIDRiZmIwMGNlMTJiODU5ZTk1ZDE0MjVkNDZkNWUxZDAzNTRmYWUzZTYgcHkzaworODEzNTMgNDlkN2RlOWQ3YjFhYTAxODI1YzIwMDNjMjY5NzM2NjYyMjg1Yjg1MiByZWxlYXNlMzEtbWFpbnQKKzgxMzU0IDIwYTM1NmVlYjBmNzAxMDNkZWIxNTFiNGQzM2QyNWE0YWIzZWIwZDcgbGVnYWN5LXRydW5rCis4MTM1NSAyMWJiOTNlMDk4OGM0MWI4MWIwMzU4YmQwNzdiMGM1N2FiYTVhNzJjIHJlbGVhc2UyNi1tYWludAorODEzNTYgNWJmNGE4NjMzYzU4Yjg1NWIwZjhjNzNlMzdkZTc2NmU1MGE0Nzc3MyBweTNrCis4MTM1NyBlYWVhODA4YjdmYjg2NzFhODg0ZDFmZTJkZDE3YTJjZmNmZjhjNDJjIHJlbGVhc2UzMS1tYWludAorODEzNTggYjdmNzFmNjA0MzdiNTk2YzU1YWRhZDAwYzI4YTNhNGIyYzYwMDk4MSBweTNrCis4MTM1OSAwY2FmYzIwZTU2Mzc2MzQ2NWNjMDZkZjFhMGU0ZDdlM2Q2MmY2ZTk5IHB5M2sKKzgxMzYwIGU2OGUwMjhkMDkxZTgzNTQwZDE5NDBlOTQwMTU0NWJlNTE5ZWE4OTEgcHkzaworODEzNjEgZTVmZGU3YWQxYjdjYzY5NDAyMzgzMDY2YjY5NGZjNTAyYTg2Y2UwZiBweTNrCis4MTM2MiBjY2RiMDlmNzlhMDM4NTU1Y2FlNGUxOTE0MmQ3NjFmZDA4MjYzYzE3IHJlbGVhc2UzMS1tYWludAorODEzNjMgYmE1MDg4OGNjMDM5MTRmZDAwMTQwMTI4NWQ4ZGQwODhjNWExNzI2OSByZWxlYXNlMzEtbWFpbnQKKzgxMzY0IGRlZWQ1ZmNlODJkNjA2OWYwNTFhZDE3MzVmMmM2YWJkMzhjNzMyYWUgcHkzaworODEzNjUgYzFjNzc2NzRkYmM4YzI5ZDE3ZGRhODlkOTEzZjVlYjFiYjhjYTI3NyBweTNrCis4MTM2NiAyNDhhOTE1ZTM1ZWYwMTYxZGI3ZTJiYzFjOGViM2M1ZDRlYzA2NGI2IHB5M2sKKzgxMzY3IDIzZWU4YWE4NTdlZTM2Yjk5N2QwYWZjN2NhYTJhODZiNGYyYWRkOWUgcHkzaworODEzNjggODJhNDQ4M2Q5YzRhOTQyN2EyZjQyNDVkNjA4MWRmMjI4MWE1YjQzZSBweTNrCis4MTM2OSAxZjNlNzgxMjYxMmI4YmExMjZhZTJhOGViY2UxYmY3YzI1NDE3YjMwIHJlbGVhc2UzMS1tYWludAorODEzNzAgNzQzYzIwN2RjMmI0MjA1Njk2OWI4ZjVkY2ViYTliYzFhMWEyNDQ3YSBweTNrCis4MTM3MSAwMjFmNWVjNWQyZDRmZTM3ZDEwZmRmMjUxYTNiMTVhOWIxMGVmMzczIGxlZ2FjeS10cnVuaworODEzNzIgMThkY2Q5MDNjNTVlMTViMjQ1M2RhODRjMzUzZDhhMDY2YmI4MDAzNCBweTNrCis4MTM3MyBkYTk0MTUwN2VkOTNjNDRjNDAzYzYxMWYwODBjZDY3NzUzMzE5OTVkIHJlbGVhc2UzMS1tYWludAorODEzNzQgYjg0ZjhkMWEwNTIyYzZmOTI5NGZmMjc5MDI4ZjdkOGJmMjE3ZmEwNyByZWxlYXNlMjYtbWFpbnQKKzgxMzc1IDUwM2FmYzYyZDYzMmUxNzhmODZmY2I2MTE0MTQwNGUxODBjYjU5YmYgcHkzaworODEzNzYgZmQ3MmFmMDA2MGM4NTQwYWVjZDk1NDBjNDk0NmYzMjdlNzY0MDllNyByZWxlYXNlMzEtbWFpbnQKKzgxMzc3IDVkNmI3Njg5MGYxN2Y4ODBmZWRlZTBhMDA0ZTgyYzY1MDdjMmEzZGQgbGVnYWN5LXRydW5rCis4MTM3OCAxMjk0MjdiNWU5MTQxYWU4ZGM2MjhjMmQxZjVmMDIzMTc5NmI5MDIyIHB5M2sKKzgxMzc5IDRkODNiYTVkMGFmNWI0NTgxODA4ZjA4MTA1YzljZjhiMDFkNjE0MGQgcmVsZWFzZTI2LW1haW50Cis4MTM4MCA2MmMwZTVmMTQxMzhmNjk2MTBmMjFhYmU4MGY1OTRlMGRhNWM0YjQwIGxlZ2FjeS10cnVuaworODEzODEgNTVlMjM2OGY3MmYyNzRlNmU5MzBhYWU1MjRhMmI1ZmNmZjBjN2NiNSByZWxlYXNlMjYtbWFpbnQKKzgxMzgyIGQ5M2JkNTI1NDczYzVmNjg3ODFiYWUyNDdiYjk1NmMyMTc1MTdhNDYgcmVsZWFzZTI2LW1haW50Cis4MTM4MyAzMjcxYWYwMzVkMDE3OGNkYzU1ZjlhOWIzZDdlOWQ5OWQ2MmNjODM0IHJlbGVhc2UzMS1tYWludAorODEzODQgZjJkM2JmOWRhOWE4MTU0YTZiZGQyY2M5NDg5ODAzZTJkYjdhNDVkYSByZWxlYXNlMzEtbWFpbnQKKzgxMzg1IDZmZTI2MGJjMDk4N2RjMmMzY2RlZjVmMDgwYmUwYTcxYjk0OWE4Y2IgbGVnYWN5LXRydW5rCis4MTM4NiBiM2IyNjVmYmFhYmRmOWVhYjQyYzRkYTYwNDQxOGMxMDdjOWEyZDg1IHJlbGVhc2UyNi1tYWludAorODEzODcgMWU2YjQzNWU4ZWI2YTUyODFiZWFkNzYwYTE0NjY1OTA2MWNhOTUwYSBweTNrCis4MTM4OCA5ZGQ1MjJmN2MwZGUyMWNjY2JkMTY0ZWVkN2QwMjZlZWE5MzE3OTBiIHJlbGVhc2UzMS1tYWludAorODEzOTAgN2Q0ZWUwZGM4NzY0NDAxN2VmZDUzMDc0NzllYTkyMGNkMmRkMDFmZiBweTNrLWNkZWNpbWFsCis4MTM5MSA0ZjlkYjM1YTQwODYxZGI3Zjc3NTUzODU2ZDExMTliN2ExNmNlNmJkIHB5M2stY2RlY2ltYWwKKzgxMzkyIDVlZTQ3ZjBiMjZiMDJhMDdjMzdkYjU2MDA0NTAwZGNjNGNlNTg0NzkgcHkzaworODEzOTMgMjIyOGMyNWNjZTNlNzJmZWIzODY2OGFjMjhmNWMwYzMyYmU1NWNiNyBweTNrCis4MTM5NCAzNzAzMmIyYTU5MmRiMDIzNGFmMTY2MDRiMDAwZDE2NDM4MjIxMDY5IHJlbGVhc2UzMS1tYWludAorODEzOTUgMzg3MTlmMTE2MTliY2Q4OTE1ZjVkMjJhZDQ5YWUxZTBlYTRlYjJlYyByZWxlYXNlMjYtbWFpbnQKKzgxMzk2IGUzZGFhYzA2NmI5MmU3OGUyYmYxOGNlZmY5NGJmZjhjZmJiYTBhZjMgcmVsZWFzZTMxLW1haW50Cis4MTM5NyBkNjAxNmZhNThkZjZiNWNlMWYzN2E1OWY2MTNkOTU3NjlmNDM3YzBlIHB5M2sKKzgxMzk4IGMyOTE3YWM1ZDUyNmRjNGQzZjYyYmQ2MWQzYWE4MDg1ODk0MzkwODAgbGVnYWN5LXRydW5rCis4MTM5OSAzZjA4ZDk4YzhmYTVmMDcxNjMzNWMxNmQ0MGJkYjNmMzI5NGZkMmNjIHJlbGVhc2UyNi1tYWludAorODE0MDAgNzk1NzYyYjVlMGQ2ZTZiMzdlZGU4ZTFiYTdmYmY5MjNhMGY2ZDQxNSBweTNrCis4MTQwMSA5ZGI4YzQxNDkyMWY3MDI2ZGQzNGJlNjA5ODhkMmU5YjM4ZDg0ODg1IHJlbGVhc2UzMS1tYWludAorODE0MDIgZTE5NDBkZGIzZjU2NWE2Mzk0ZmE1ZDZhN2M2MWExMDQxNWU0MGEwMCBsZWdhY3ktdHJ1bmsKKzgxNDAzIDQ0MTQ5MTU3MmZjZTNhZDhkYzkwZTJiNTQ4ZWM1ODg4ZDJjNWM1NWYgcHkzaworODE0MDQgYjA3MmI5ZmIwZmQyZGVjYmUwNGYxM2JiNGFhY2I0MmFkMGI4Y2I5ZiBsZWdhY3ktdHJ1bmsKKzgxNDA1IGYxMzhkMWJhY2ZjNDI4ODA2NjQyMDAxNDk5YmM3MTZkMzNkYjQwNmIgcmVsZWFzZTI2LW1haW50Cis4MTQwNiBkZTYxYTY5NzEyZGFkN2M0NWFmY2EzZjI3MmQxZGVlNGZiYzJmYzk5IHB5M2sKKzgxNDA3IDZjYTJlNmIzYmYzMTc3OWU2ZTA1NzY3MDY2ODM4ZWZmZGI2NTUzNDMgcmVsZWFzZTMxLW1haW50Cis4MTQwOCA3MzQxNmIxYmJjZDViY2FhZmYyMjdiNTY2NTQxNmI2ZmIzMjI3ODZmIHJlbGVhc2UzMS1tYWludAorODE0MDkgM2Q2NGQxYWZlNjc3OWE3MzA0YjBkYmRjZTUyYTFiYzIzODI0ODYzYSByZWxlYXNlMjYtbWFpbnQKKzgxNDEwIGUxZjRmYzYzZDJiM2QyYmU0YWYxN2RmNTU1NmJmYWZiOWE2MTdjNzkgcHkzaworODE0MTEgNTA2ZTliZTg2MTM5Mzg0ZTVlZGIwN2IwODRmNmVlYWVhMGQwZmZjNCByZWxlYXNlMjYtbWFpbnQKKzgxNDEyIGU5YTA0MmEyNTE5NzEzOGY2ZTIzMDhmN2Y0YmFmNmE2NmMyMjBiNDAgcmVsZWFzZTMxLW1haW50Cis4MTQxMyA5NDZjYzVlZTI5NTExMGYzNDVkNTNmZjYyZjdjZjlmZWNmNjc2ZDI4IHJlbGVhc2UyNi1tYWludAorODE0MTQgMGYwOTY4MjlmYzkwYjhiMzVkOTMzNTg3N2MwZjUwMGFkMTgyODE0MyBsZWdhY3ktdHJ1bmsKKzgxNDE1IGZmM2M2NzY2MTNhZGIxNzBhZjgwYTFhMzI1NTYzMTFlOGMxYWQ5YTAgbGVnYWN5LXRydW5rCis4MTQxNiA4NTQyYjc3YTI4ZWE5NjU4NmMwMDgxZDY1YTNjNGM1MmM4MGRiZTdlIHJlbGVhc2UyNi1tYWludAorODE0MTcgYjAyNTBmZmEyMjY3NzVkZWZiMzVlZGJlMzkwYzg4N2E3MDJiZmUwNiBweTNrCis4MTQxOCBmZmYyOWQzZTdhMzkyMTViMTdkYjg5NzMwYTYxMGNlZjBiNjQxMjBmIHB5M2sKKzgxNDE5IDFiMDQ2NzY2MWVmNWE5MGY0MWY4NmY1MjAwYTI4YjRlYzZiMTM0MmYgbGVnYWN5LXRydW5rCis4MTQyMCBmYmZjMzUzNjQ3ZTNjMWIzNWY4ZmEyOTFjNTEzNDU3ZTBmNjA1ZDMzIHJlbGVhc2UyNi1tYWludAorODE0MjEgMjliNTZjMzhhMDMzZGNkYTEwYzc2MWVlNGNiMTMxZDMzZDg5MTlhZSBweTNrCis4MTQyMiBhYmMzZjVhMWNjNWU4Y2FjYWQzNWQxNWJhNWNlM2NlYzczYTVjNmNhIHJlbGVhc2UzMS1tYWludAorODE0MjMgMDZiMDkzNzZjYzViMDQyY2UwZDE2MWIzMDM0NGE1ZDhjYzM0ZTU1MyByZWxlYXNlMzEtbWFpbnQKKzgxNDI0IGVjYTk4YmRjOGExNGY0MGIyMzJhMzg0ZTJlMTliYjlkOTUyYTc2ZTAgcHkzaworODE0MjUgMjNlMzgxOTJhZjk2NDg4M2ZkZDZlMWI0NmM5NjI0MzRhNmVkNjU4OCByZWxlYXNlMjYtbWFpbnQKKzgxNDI2IDMxNjNkYTIyZDU4NTAyYWNjN2RjYjMyYzA4NWRlMzgwMzAzNjM5NGIgcmVsZWFzZTMxLW1haW50Cis4MTQyNyA4YjJkOWQxMDFjODVhNDk2NmZiMjkzNWE0ZTcxYTk5ZTA5MjQ2ODRlIHB5M2sKKzgxNDI4IDY5ODVjNmI5ZDk3OGU1NzEzYTM1MDE5MDA5MDE0ZGFhMTZmMTYzYmQgbGVnYWN5LXRydW5rCis4MTQyOSBiMTRmMzlkMGYyMGEyZGFlNTRmNDkzN2EzMzZhMmE2Mjc0Njg0ZWRhIGxlZ2FjeS10cnVuaworODE0MzAgNmEwOGVlYjRiMzIyMzkyOTc1NGFlN2VmNTA3MWQ2YmNmMmMxZmNmNiByZWxlYXNlMzEtbWFpbnQKKzgxNDMxIGZlYmQ5YzI4OGU3NmY4MGJjOTNhZjgyMTk3ZDhkNDEzY2M1NzFjM2MgbGVnYWN5LXRydW5rCis4MTQzMiBmMDVkMjk5Njc3NmUwZWY0ZjM2ODNmZTIxZmZhNTRiY2NiYzUxNzMzIGxlZ2FjeS10cnVuaworODE0MzMgMTFkNTg1MTYwMzNmN2Q1NDMyOWUwYTZlNjEyOGQxYjJlMmY1NGNmNCBsZWdhY3ktdHJ1bmsKKzgxNDM0IDVkNjc0OTcwYWNkOWEwNjhjYjcxYzUyYjdiNGEyMGVmOGJiZTNjZmEgcmVsZWFzZTI2LW1haW50Cis4MTQzNSA0OTVlYmUwNGQ0Nzk4Y2JjMGY2ODZhZGM4NDc4MjVkOTIwY2NjYzUzIHB5M2sKKzgxNDM2IDZlZjdjZmIxZjhmNDgzMWMwYjAwNWVjMzJkNTJiNmRlNDRjOGM4ODAgcmVsZWFzZTMxLW1haW50Cis4MTQzNyA4YzhkNDBjZTVjYTE1YTQ0NGNmZjljNmUxMzE1ZDYwZjhiYzY3ZTAzIGxlZ2FjeS10cnVuaworODE0MzggZjM4OTU2M2ZmMzcyM2U2MjY1Y2JmMDVkNzgzN2QzZWE5MTU0MTg0OSBweTNrCis4MTQzOSBlMjBlYWUzYjVmZTQ1NDBhNzZhMzA0Y2FlOWQ1MWVhNDVjOTk3YThjIHJlbGVhc2UyNi1tYWludAorODE0NDAgYzBkYmZiNmE3ZDU2NzMwM2M3YmJlMzhhNDdkOWZlMWI1NDI1YTExYiBsZWdhY3ktdHJ1bmsKKzgxNDQxIDNhNmU5NjM3YzMzZGQ5YmUzMDc1OTkxZDVmZTNmNzY3Y2E5YWRjY2IgcmVsZWFzZTI2LW1haW50Cis4MTQ0MiBhOWNhZDVhZTQwNWQ4ZDJhOTVmOGNhYTFjYWMzOWY5NWIxZjI5NTBkIHB5M2sKKzgxNDQzIDcyZmEwMGFjMzhiZTNlMGRkODZhZTc4NjA4Mzc2YTkyY2Q4ZGExYTYgbGVnYWN5LXRydW5rCis4MTQ0NCA1MjQ5NWNjZjYxY2M4OGRlZTczNWYyYmMxNWQ2NzQxZmYwY2MzYTdiIHJlbGVhc2UzMS1tYWludAorODE0NDUgOTU0MTNlYmQ0MDgxMzYzODgzZTI1YjI0MWRmODQ0OTViMDcwYTliMiByZWxlYXNlMjYtbWFpbnQKKzgxNDQ2IDJkMGIwOThmNmNiN2Y5ODcwNDI3YWNlOTMzNDgzNTMxNzZkNTE3ZjQgcHkzaworODE0NDcgMTk0ZjQ4OGI4YWQxYTc3YjQ1ZWI4OWNjNGU4YWM4MTRiMGRjYjVlMiByZWxlYXNlMzEtbWFpbnQKKzgxNDQ4IDFhY2NhOWM0NTU2MmI4ZWY0N2FmOGNhZjYwNjRlZWM2N2MxMzY5YzEgcmVsZWFzZTMxLW1haW50Cis4MTQ1MCAwZTI2Y2I5NzZjNGQ5MGJiZGQzOGE3OTIyOTc0NjQ3OTBiNmRkYjQzIGxlZ2FjeS10cnVuaworODE0NTEgMGY1MjhlZTE1ZWY3MjA2MGI3MTM2MTFjYTQ2NjMxZDc0ODg5MTNhYyByZWxlYXNlMjYtbWFpbnQKKzgxNDUyIDAyMmM5M2VkMWI4ZThmNGJkNjhhNDRmNjdkYTgyMzc5MTIzOTQ4ZmUgcHkzaworODE0NTMgNTVlODE5Y2I1MzYxMDM1OTI1YzgyZDY0ZjM2NzQ0YWE5NDQ3YTc0NCByZWxlYXNlMzEtbWFpbnQKKzgxNDU0IGM2ZGZjM2RkMmQ1ZGY0YTFmYjMxZDRhOTlmNGYxYWIwNjFkNDMxNjcgbGVnYWN5LXRydW5rCis4MTQ1NSAyZWE5MDkyMGNjMTBkM2ExOTgxZDNjYjQxZTY0NGJhNzMwOGEzOWI1IHB5M2sKKzgxNDU2IDE0ZDIzYmRkZjc5MzMzNGFlNjlmZjkzMTMzNTkwZWI3ZDQwZTk0NGIgcmVsZWFzZTI2LW1haW50Cis4MTQ1NyA4MTViYTM4NzJmODUwNDc4Njg4MGY1MjBlMjAwZDE5MGIyZjMwOGM0IHB5M2sKKzgxNDU4IDgwYmU3MjE4NzY3YjcxMmI3NjA2YzYyYmZhZWUwY2FhZThmZjc1YTcgcHkzay1qaXQKKzgxNDU5IDk5ZTllZDIxNGFhZGU2ZGMwM2FiNDMyOWNjYTMzYTIwZjk3Y2Y2NTMgbGVnYWN5LXRydW5rCis4MTQ2MCAyYTM4OTczNGQ1NzAyMGI5MjYwZmVhNzY1YTdkZTljYjNmZjRhMWFhIHJlbGVhc2UyNi1tYWludAorODE0NjEgMWFmMjczNTBmNDFiYzZmY2E3ZTVhNDZmMDQ2OTAwMzM1NWUxOTVkOSBweTNrCis4MTQ2MiA4NDZkYmNmOTcwYWJlYTVjODVlMzM3NDkzODE2NmZmOTA1MDY5MWRkIHJlbGVhc2UzMS1tYWludAorODE0NjMgYjczOWQzMDM0ZWM3NTEyNTg2NjUxNDlhODE2ZDZjZWYxNTMyOTgyZCBsZWdhY3ktdHJ1bmsKKzgxNDY0IDlhMDIzOWMwZWEzYjQxY2RkYjlkMGM5MmVlNDAyYmM3Y2ZiZWNkMWMgcmVsZWFzZTI2LW1haW50Cis4MTQ2NSAwYTY0N2QwOGU2ODVmYWYwYjk3Nzg2MGM3M2Q2ZTJmZTlkYTM1YTA5IGxlZ2FjeS10cnVuaworODE0NjYgZjIwNWQ2NjA1NmY4OWRkOWNmZjY1MjkyMzk0MmYzMTE2OTEyMzU2YyBsZWdhY3ktdHJ1bmsKKzgxNDY3IDc1NWExYmM1NjMyNmVlMDVhN2IzZDUwZWI0YzI4M2VmNDE1Njg3OTggcmVsZWFzZTI2LW1haW50Cis4MTQ2OCBkNmE4ODk2OTcxN2Y1NWJjOGRmZjcwYzkwYmViZDdiOGQ5MzMzZTczIGxlZ2FjeS10cnVuaworODE0NjkgNjNiNTc4ZDgzM2VlN2FkOTNlMjhhM2Y3YzU3OGE5NmRiMThmYzczYyByZWxlYXNlMjYtbWFpbnQKKzgxNDcwIDM1NmE2ZmM5ZTU3ODVjM2Y2NzY1NDYyYjE5OTRmNjczMDMzMWI1OTggcHkzaworODE0NzEgYmY4MmMxZDA0ZTA2Y2RhYmZjZGI5MjI4MTViMTRiZDQxMmJlYmQxOSBsZWdhY3ktdHJ1bmsKKzgxNDcyIDk3MjZjMjE3Mzg4NTgyZTFhYmJlZTYxNmIxM2FkMzAwYzMzMzNiN2YgbGVnYWN5LXRydW5rCis4MTQ3MyBhYjA4MmUzODdkZDVjZTI5NTgzZWNmMTY3NWYyYzk1MGNiMzdhZWM4IHJlbGVhc2UyNi1tYWludAorODE0NzQgODMwY2Q4OWIwMWU4ZjA0ZjVlMTIzZWZlYjY3MzkyYzY0NDQxZjc0NSBweTNrCis4MTQ3NSBjZDQ5MzY2OTExNjNmZGMyOWE0NDRlYWYyNDQ1YmEzZDU0ZTdmMjlmIHJlbGVhc2UzMS1tYWludAorODE0NzYgNmZlZTI2Yzg5ZjZlNGIyYTc2MjkwNjZlMzA0OTM3NGM4NmFlZGU1MiBweTNrCis4MTQ3NyA2ZGM5ZWM4ODU0NjM5MWM3MzE4MThhYmM2N2U3MWU3ZDYxMTAwMTkwIHJlbGVhc2UyNi1tYWludAorODE0NzkgZWU3NmYwYTA2NWMyNGM5ZmNjMjlkNGVhM2QyZTc5MTViZDliNzg0NyBsZWdhY3ktdHJ1bmsKKzgxNDgwIDFlMDZhNmMzMTIzNDFhMzFmZWRmODZhNzAyYmY0ZjM4ODkxNDJmYzUgcmVsZWFzZTMxLW1haW50Cis4MTQ4MSA2OTIwN2Y4MDFiMzE2NjQ1NDNiYTQ5MWI2YWNmYmYwMTJiYjc5YTMzIHB5M2sKKzgxNDgyIDRlNDk1MjYzNjExMzQ1Yjc4NDBmMWVhYjllMmJjNDdiMzRmNWI3Y2MgcmVsZWFzZTI2LW1haW50Cis4MTQ4MyA1NGI1MWFiYjY5NTEyNGRjZTcxMjY0MGYwNzliZDA5NzI3N2Q4YjFiIHJlbGVhc2UzMS1tYWludAorODE0ODQgMWU4YzkyMzE2NDYzNDc0ZTZhYmE1ZjU2NjczZDE4MjM1MzVhM2JjNCBsZWdhY3ktdHJ1bmsKKzgxNDg1IGIwZGVlMzJhMWM2YjA5NWRmYWE5MzdhOTczZDM4YjYzNzRhMDQ4ZDIgcHkzaworODE0ODYgMGJjOGZmZTZiYTlhYzg1ZGZmODVlMTIyZTI4ZDQ3NWQ0YjE0M2U0ZSBweTNrCis4MTQ4NyBhMGE2ZThiZmFhZjcyYTA5MzkxYTUxOGMyYmRkMDdkY2E4ZTU2YzVlIHJlbGVhc2UyNi1tYWludAorODE0ODggZGNhM2NiMTlkYmRkNDcxMjVhN2FhOWEwNjIyYTdkNTM0NTY3ZTIwNiByZWxlYXNlMjYtbWFpbnQKKzgxNDg5IDIxZmEwOWYyNTBlMzAwNmNkYzBiYzUyODU5ZGQ1MzNiMDE1ZTU3NTkgbGVnYWN5LXRydW5rCis4MTQ5MCA0MGNhZDc1OWEzNTU0NzU1Y2RlNzk4OGZkZTAxNTE2M2I5NTA5ZjFhIGxlZ2FjeS10cnVuaworODE0OTEgNzc1MDU3OWMzNzVkYTFkOTI4ODk0NjhjMDcwZWJhZjIwY2EyMzMxOCBweTNrCis4MTQ5MiBlNjRlYTE2MTk4MjBjMGI5YTNmZDU1MGU0OTE1OTFjMWM0ODZlMzI2IGxlZ2FjeS10cnVuaworODE0OTMgMDM2MDE3ZjJlNzRjNmE0NmU0OWUyNmI3NmUxMzgwM2U0ODRkMTFjOSBweTNrCis4MTQ5NCAyZjI0YTJlZjczMzFjNjJlZGYxNjA5MjUyMjFkMzQxM2M3NWNiMzI2IHJlbGVhc2UyNi1tYWludAorODE0OTUgOGFkNjE3ODA1MzVlZmI0YWRmODQwZjc3N2RmOTA2ODg3ZDNiMjJlYiBweTNrCis4MTQ5OCBiMDM4ZmRhNTkzZjZkNThlMWU5NTM2NWYxZTlkZDBjM2QzNWEyNmMwIHB5M2sKKzgxNDk5IGM1NmZiNjNjNjQ4ZjQ5ODMyNjk0YzQxMTQ5N2RjY2UyZjZiYmM0MWQgbGVnYWN5LXRydW5rCis4MTUwMCBlYmRhNjgwM2Y4ZDVjM2UxYTc2N2VjY2UxMTFjZjUwZjMzOGY1NmQyIGxlZ2FjeS10cnVuaworODE1MDEgOTBkNjMxNDY4NGQ0M2JlNDVlNTliMmIzZThiNjA3NDFmOTI2OWE1ZSBsZWdhY3ktdHJ1bmsKKzgxNTAyIGUzYjUzMzhiZTA1ODg5MWJkOTUyZmZkZjY3OTIxNjZjNTI4NDIyMjQgbGVnYWN5LXRydW5rCis4MTUwMyA0YmUyMWEwOGRkNzA3MTZlNjhjYzY0MzY1Y2ZmM2VlNWQzYTgzNmM4IHJlbGVhc2UyNi1tYWludAorODE1MDQgYmYwNGVhZjFhZjc0OGE4M2JkNzQyZWZiMDQ5MzQyYmFkZjkyYTk5OCBweTNrCis4MTUwNSA2MTQ0NzYwZTgzNTBkNGMzYjA4N2Q5ZjE2MzhlNTMzMzA2MTQ4M2VkIHJlbGVhc2UzMS1tYWludAorODE1MDYgNTg0OTE5MTExODJjZTEzYzIxMDdhOTg5N2Y1N2MwM2IzMzkzYTgxMCBsZWdhY3ktdHJ1bmsKKzgxNTA4IGY5MDM2OGM4N2IzM2U2ODUyOWVhMTBiZmM3MTdjNGY0YTRkMGYyYjUgcHkzay1qaXQKKzgxNTA5IGE4ZWFiNjcwMzI2NjY0Y2JhYThjZGIxODM0NDdhOGYxZGZlZmVjYjMgbGVnYWN5LXRydW5rCis4MTUxMCA2OTNlMmJlZjRlZTNiYzgyMDRiMzVkNzczN2VlNzRiZjcyZjNjMWMzIHJlbGVhc2UyNi1tYWludAorODE1MTEgN2Y0MWQ3NWFkNDM1ZDJkODM2ZGZjN2M4ZGEwZDFjMWQ3ZTM0NjNhYyBweTNrCis4MTUxMiBiNzNiZWJkZmU1MjU5YzJhYjdjMzlhOGQ3NzM1M2IzYTEwYzdmMTZiIGxlZ2FjeS10cnVuaworODE1MTMgNzAzMjg3YTk5OTM5MTcwZmMwMzEyYzMyN2ZiNzI2YzNjNjE4ZWNiNSBweTNrCis4MTUxNCA0ZTAwOTE0ZWM0NDdiYmJmZjU3NTg0MWIwMWY1MGU1YmVkYmVlOWEyIHB5M2sKKzgxNTE1IDViYzRmY2YwNDE0M2Q2YzVkMjk5MjRiM2RhYjQ0ZTg0MDk0ODZmZTIgcmVsZWFzZTMxLW1haW50Cis4MTUxNiBjZTI2MTcyM2IzNTYyYmFiYThkMjgyYjQ1YWFkZThlOWZjNTFmYmRlIGxlZ2FjeS10cnVuaworODE1MTcgNzgxOWJhNzdlNDVjMDAwNjNjNmFlMzA5OGQyNzExM2M0YzIzNTRkMiBsZWdhY3ktdHJ1bmsKKzgxNTE4IDIyOTdjZDU3ZDk0NWYyZmE5YzRiNjg3OWIzOGMxYzc2MDRjMzllOTggbGVnYWN5LXRydW5rCis4MTUxOSAyMmNhZGYyNjRhZTUyMTdmMjM5ZTRlYjM5NmQzM2NhZTY4NmJhY2M4IHB5M2sKKzgxNTIwIDEzMjEyZDc0Y2UwMDhlOTA4NGU5Y2YxOWYzMDQ2MjllOWFmYWM3MTUgcmVsZWFzZTI2LW1haW50Cis4MTUyMSA1NGI0ODhjYmQzN2UzOTE0MWE2ZmExNjgzMGMzNWE2NDliYTVjYjRmIGxlZ2FjeS10cnVuaworODE1MjIgNzYxYWM5NzAzYTk2YzE0MWYxNzMzMGExMjQ4ODg4NWUzNGEyZTJjNiBweTNrCis4MTUyMyBlOGE5MzkzYTA3NDhkNWQ1MDQyOTBlMGQ2OTkyNDRhMjA2NThkNDY1IHJlbGVhc2UyNi1tYWludAorODE1MjQgZDA5YzlhOTM3ZTEwYmY2YTcxMmZhOWNhOGYyYTBkYTllNDcyOTJiYyByZWxlYXNlMzEtbWFpbnQKKzgxNTI1IDhhYzNkNTI3NzQ1YzRlM2FhN2Q4OTZmOTExNjBhMTllY2RmMTg5MTAgbGVnYWN5LXRydW5rCis4MTUyNiA0NzA4MDA4MGFiNjE5YjU3MTI0OTgwMjg1MWFhZDJhYjNhMzU4Y2QwIHB5M2sKKzgxNTI3IDQ0ZjQyMjJkOTFiZDcwZjFkMDg5MWQ3MTNhZjVjYzk1MDJhMTg2N2EgbGVnYWN5LXRydW5rCis4MTUyOCA2ZGZmM2Q5MjEyYTg2NWMyMTI4M2ExOWU3YmNkMWEwN2FmOGZhMzFmIHB5M2sKKzgxNTI5IDU1ZGM5ZWYxNWFiMWEyNDVmNDQzMGQwZDI3YWI1MzZmM2U5OTc3ZDcgcmVsZWFzZTI2LW1haW50Cis4MTUzMCA4MmMyNDI2ZjdmM2U5YTA3YWY5MjE0MzRhYzNlMzNkODRmZmFmZTg0IHJlbGVhc2UzMS1tYWludAorODE1MzEgZjEzMzdmZTZiN2I3NzllYzIzMDUxMTM0ZWYzNTQyOTI3ZmFjOGU0NCBsZWdhY3ktdHJ1bmsKKzgxNTMyIGU0YWY3MDJkNjFiN2QzY2FkNzdiMTU1MDc3M2EyZmQyNjIzYjkyYzQgcHkzaworODE1MzMgNGMyZDZlMWI4OTBlZDZjYzQzNmFjOTk5YWFjNTI2ZmIxY2RlMjdkYyBweTNrCis4MTUzNCA5M2M1ZTYyNDEzMDk2NjgwOTI0OThjOTI5ZDNhNDk5NDZjZmE5YjZhIHJlbGVhc2UzMS1tYWludAorODE1MzUgMDgwZTU1MDkxNmVkY2Q5YTg0YTZjZDVlMDFiZGYxNWNkMmZhODljYyBweTNrCis4MTUzNiBmNzg4YWZmNTcyZDExYzk1OTgyNDVjOTdjMjY0YmYxOGM2ZThkNTkwIHJlbGVhc2UzMS1tYWludAorODE1MzcgYmQ1ZjVkZjdlZDc4OTRjN2FhYmU5YTNmNGE2ZGNlNGQ0ODQzZDNkMyBsZWdhY3ktdHJ1bmsKKzgxNTM4IDZhM2MyZjA5NGJiYWQ3YzdiYTI4NjMzMGExZWNkNDFmMDE5YTNlMGQgcHkzaworODE1MzkgOGRiYmQ5MGVlZGE4NmU3YzZhMTI1YWVhZGI4NmQ0ZTkxZTc4ZGJmYSByZWxlYXNlMjYtbWFpbnQKKzgxNTQwIDlmNzljYjk4ZDU1ZjQ0ZWRhYTk5MTM2NjczODJmOTIwYzRjYzZjN2MgcmVsZWFzZTI2LW1haW50Cis4MTU0MSA4MWE1ODBkOTQ3ZWY0ZThhYzg4Zjk2YmUyMDA3NzQ4NDNjM2M4OTY4IHB5M2sKKzgxNTQyIDE5YjNlNDg1M2M3NDMyMmMwZDdhOThkZmE3ODhkNGRkZjBiOWFhNjQgcmVsZWFzZTMxLW1haW50Cis4MTU0MyA0OWQ0OTc3OTA2MDdmOTJlYWZhNGZjNzhiNzVkMmZiYzlmNGFkOGM4IGxlZ2FjeS10cnVuaworODE1NDQgNzAyZDI2MWYzYTI5YWJkZTFiODc1NWMyZTMwNGVmNDZmODA1MzJhOSByZWxlYXNlMjYtbWFpbnQKKzgxNTQ1IDlhZWM2YWQ1M2ExYjk3NGFiZjEwNGYzNGZhMTlmYzg0OGZkOGQ2ZGYgcHkzaworODE1NDYgOWI4YjE0MDNmOGRkYTg1NDA4NjA2NDVjOGZkMTVkOTc0NWEyMDM2OCByZWxlYXNlMzEtbWFpbnQKKzgxNTQ3IDRmOTgyZTk0YWUxNmFhYmYyMDRkNWRiMjM2YTdkYWNhZGYxYWVlMDYgcHkzaworODE1NDggODMyOGM1YzMyNzJjMzUxMDQyMDllZTI0YWQ0NGIwOTU0ODMxNTlkYSBweTNrCis4MTU0OSA2MDI3MDNkMDU2MGFmNTNhMGRmY2VlY2UzOTRhOGYwMGJjYWU2YjAwIHJlbGVhc2UzMS1tYWludAorODE1NTAgZmQ5OTQ2N2FiNGQ1OTY1MDJlZDNkNjY3ZjU5NWJmZDMzMzMyODE0ZCBweTNrCis4MTU1MSA1NmE1NDkzNmRhMWRiZDQ5MmUxYjYyNjZlNjcyNzg2NTY1MjkxYWQ1IGxlZ2FjeS10cnVuaworODE1NTIgYzRmNzM5NzVhNDQwYTkyZGUxODA4NTdkMWVmMDRlZGY3ZWQ3YTRjYiByZWxlYXNlMjYtbWFpbnQKKzgxNTUzIGUzYWQxYjhjNDUyMTI4ZmQ2YmU0MDg5OWU2Nzc1OWU5NjM2MjVlMzMgcHkzaworODE1NTQgODE4MGFiYmQwN2NiMmU2MGFmYWMyNWEzOGQ5NmVjNDdiYmFlNDE4ZiByZWxlYXNlMzEtbWFpbnQKKzgxNTU1IDQ3NDVlMTNhYTllNDM2NDI5YTc5Y2I0NWE5MzdhYTM3N2RkYmZjNmQgbGVnYWN5LXRydW5rCis4MTU1NiA3Y2ZiZmZhNmEzMGIyODJiYTRlZDY0ZTU3NjFmNjllM2E1NjA0NmY5IHB5M2sKKzgxNTU3IGM0MmZmYjNkNjNhZmM3OGExNWQ0ZTcwZDJiYjMyNjRlMDZiYWMxYTAgcHkzaworODE1NTggM2Y0ZDJhODE4MTBjNWNjN2NiMTNlNTYxZDcyNWI2MzQ5YzVlMTYzYyByZWxlYXNlMzEtbWFpbnQKKzgxNTU5IDEzMDdkOTc4Nzg5ZmVmYzNkYWIxMTEwNjBiODRhYTNiZGRlNDFjMmUgbGVnYWN5LXRydW5rCis4MTU2MCA3ZjMxMmY2MGZkYjA1MThkNTU1ZDljOGUwZTM5YmU2OGQ0YmMwOWEyIHB5M2sKKzgxNTYxIDAxNDgyNzAwNDM0ZDhhMDlhM2UzNjIzM2M3Nzg5MmI3Y2UzNmNlMjIgbGVnYWN5LXRydW5rCis4MTU2MiA1NTVmZjU4Y2I3Y2I4YTdhZTM0MTI4ZjQ1NmIyZWYzNTNhMGY0M2U3IGxlZ2FjeS10cnVuaworODE1NjMgZGRhMGUxYWRkOGIzMTI2YjEzZjYxY2NhYWM0YjA2M2UwZTk2M2M4NCBsZWdhY3ktdHJ1bmsKKzgxNTY0IGMyN2VhZDUxYzdkYzYzMjMxOWFiMzVhM2M0OTZmMjExZjVkMWQ2MzYgcHkzaworODE1NjUgY2ZkMjE1ZDk0OTljM2VhMWZlNTMyMTliMjQ5Yjk1M2UwNmFmNjgzZCBweTNrCis4MTU2NiAzMTFhMjUzYjU4Yjc1ZDEwYmQwNGYzMGMwMWRkYTIzMDBiMDY0YmUyIGxlZ2FjeS10cnVuaworODE1NjcgOTZhN2EzY2M1ODk3ZWI0MDhjY2Q0OTQzMzZjMjkyMjg4MGQxYTcxYSBsZWdhY3ktdHJ1bmsKKzgxNTY4IDZiODlkZTM2YTc0ZmMyOTBmYWFhMGFiOGJkNTBjNGM1OTdiYWIzOTAgcHkzaworODE1NjkgMGNjZjBmZGM1OTY2NTJlMTMxYjg2ODM1ZThmZGM1MzEzNzhjNzQ2NyByZWxlYXNlMjYtbWFpbnQKKzgxNTcwIDRiMTQyZjdiMzgxMmQwOTljYjg2NDMwNWNlYTM2MWViYTlkZGRmYTEgcmVsZWFzZTMxLW1haW50Cis4MTU3MSA1Y2NjNzFkY2I1ZGVhNDQxN2RiODViOTQ5ODZkMWI5MDA3MGRiMDVkIGxlZ2FjeS10cnVuaworODE1NzIgYzliZWNjYjYzZWE5MDlhNDNjMDM3ZGYyMmEzMGY0YmRhYThjMTJmYSBweTNrCis4MTU3MyBmNTAxYmU2Mzg4NzhhMTViMmZjYmM1MTM1OTFmOTlmZDczODkyYTYzIHJlbGVhc2UyNi1tYWludAorODE1NzQgMjVmMmEwZjBlOWRlYmQzMDhhMjIxYjliYWFhOTcyMjc1YWU5YmFjOCByZWxlYXNlMzEtbWFpbnQKKzgxNTc1IDVjYzNhMGMxNDgwMmViYmEwNTA2MGFhMjc0NTQxZTMyMzkxMDZhNzkgcHkzaworODE1NzYgN2ZlOWI3OTAwNTRiYWRiODY1NGUxODlhNzNkZDJmZGMwYjg1NTg4ZCByZWxlYXNlMzEtbWFpbnQKKzgxNTc4IDk1MjZhOTA4YTI1OGRiODY2YmE2NWU3MjhjYWY5MDA0MmNiYzAwMGUgbGVnYWN5LXRydW5rCis4MTU3OSAxYTU5MjhiMjU5M2M5MGY3NjhjYzMxMzM0ZTdiOGE5NzNjN2I0ZmNhIGxlZ2FjeS10cnVuaworODE1ODAgYmQ5Y2IyNGJhNjhiNDJkNTMwZmI5YzcxOWY0NjllYjhkNGEzNWFjMSByZWxlYXNlMjYtbWFpbnQKKzgxNTgxIDYyMTk0MTU1Nzg5ODM2ZWM5MjU2MTU1OGIwYzFhZTY0NWZlMDQ0NTYgcHkzaworODE1ODIgN2M5NDc3NjhiNDM1ZDkzODk5OTZkZDVhY2YzZjhmOGUzMmQ3MmQ2NCBsZWdhY3ktdHJ1bmsKKzgxNTgzIGYxMmIwMWU2OGY2NDRmYzIwZGQ5OGI5YjQ0OWRhYjI4NjgxMjQ2YjcgcHkzaworODE1ODQgYjY5N2UyMWQxZTc4NjdmOTIyYTI5NWRjNmQzZmNiZTMyY2M5NzlmYyBsZWdhY3ktdHJ1bmsKKzgxNTg1IGYwMDA3NTRjODk0M2UxODA2OTAzNDg4MTlmMDVmMGJiZWVjOGUxNDIgcHkzaworODE1ODYgNDQxNTU5OWI3MDExNmZlNDkxNDllY2Y2NDRhMTZlYzIwY2Q3NWQ3OCBsZWdhY3ktdHJ1bmsKKzgxNTg3IDJjZmIxOGYxYzI5MzNjZDUwOWE1YTRhNDBmMGI3MzZiMGUyYmY1NzIgbGVnYWN5LXRydW5rCis4MTU4OCAzMDhlZGYxMWM3Y2ZmNjg1MmE2MTQxN2MyMDU0NTE5MWYzMzM0MjcwIHB5M2sKKzgxNTg5IDlhMDRiZGM0ODA4OTgzZjJmMTdhYTk1OTZjMTQ1YjkxMWExYjlkNjEgcmVsZWFzZTMxLW1haW50Cis4MTU5MCA4NTJkNWVhNjI1ZTc0OTUyMzI1NGFkODYwZGE2MjZlMjFjNWY4OTc0IHB5M2sKKzgxNTkxIDQ5YWI1ZGJjNGZhYzljNDNiNGI0MzQzNDI2ODIxZjhlMmE1MmJhY2UgcmVsZWFzZTMxLW1haW50Cis4MTU5MyBkNWM3OWQ4OWIzOTNhZmU2ZjZjZjZmZjZhZWU5YTQ4MTcwZTBiYTdkIGxlZ2FjeS10cnVuaworODE1OTQgMmI1ODdlN2YwMjk5YjlmOGQ2MTE5MGExOTRhMDg3ODU0ZGM3MzIyNyBsZWdhY3ktdHJ1bmsKKzgxNTk1IGI3OTlmODYyZmIyMThiNDJiYzdjNzRjMjUyYjk0MjE5ZWE0NTU2NzEgcHkzaworODE1OTYgMzIyYmY0ZmY0ZDNkNmVmYTU0NDhjMmJhOTlhMzk0MjljZWZiZDZlYyByZWxlYXNlMjYtbWFpbnQKKzgxNTk3IGE5MTc0NzMzNmVhZTYwMjRmNjYzODYxODBjNzRjM2U5NGU4ZDM3YmIgcmVsZWFzZTMxLW1haW50Cis4MTU5OCAwMzcyYjRjN2I5ZjRmNmEyN2YzZGFlODcyMWRkNGVkNDI2MzE5MzY3IGxlZ2FjeS10cnVuaworODE1OTkgMTY0MTkzYWRlNGJhZjBlNzQ2NTMxZmVlNmJhZmUzZmZmNmM0YWEwZSByZWxlYXNlMjYtbWFpbnQKKzgxNjAwIDYzZTc4ZmNmN2Y5NGFjZTY2MWMwNzQ3ZTg5NTNmY2YyMmI3MjcwMjcgcHkzaworODE2MDEgYTdhOWI1OGQxYzE4Njc1MjgwN2FjYjNhODNiYTRiZWYzYTY3OWYwOSByZWxlYXNlMzEtbWFpbnQKKzgxNjAyIDZlNzFlY2E2Mjc4Y2I1NzU4MzE5MmI4OGE5MGE3YzliNjlkMWM4ZTkgbGVnYWN5LXRydW5rCis4MTYwMyA1ZDQzYjk2NjM2Yzg4ODdmY2NjYmEyMjlhZmY0YmY1Nzk3M2JkYjMwIHJlbGVhc2UyNi1tYWludAorODE2MDQgMDQ3MGRjNjNkMTJhOTgwM2JlY2IwNjIwYjc4N2ZhMzE5NjkyYmZjNyBweTNrCis4MTYwNSA5ZmE1ZWQ0Y2EwYmI1YjQ4Y2EwZTNhN2NlYjVmY2RlOTFhN2Y0NWNkIHJlbGVhc2UzMS1tYWludAorODE2MDYgZWQ3OWRhM2E1OTFjNGE4MDliODYyNDgzMGVjYmFlOGQ2ZTMxMjk3NCBsZWdhY3ktdHJ1bmsKKzgxNjA3IDZiN2FmNWEyNWQyZThkMmEzYzA0OGM1ZWZjNjhmN2I1MzlmZjI2ZDkgcHkzaworODE2MDggMDVkNmIyNWRkMTk3MTVhYjg1ODdlOGU3YjdiODk2NzU3OTZmYjQ5YiBsZWdhY3ktdHJ1bmsKKzgxNjA5IDlhNGIwMmJhYTdjNDMxMzBlOGUyYjBiZmFjNTczNWRhNWZlZDM0N2QgcHkzaworODE2MTAgM2VkZmFkMjU0OWM2MTc4ZGExMzQ3NDhjODkzZDdmYmUzZGQ4MTRjNyBsZWdhY3ktdHJ1bmsKKzgxNjExIDU4MzM3OTUwNjFjNWQ5NzA4NWU5NThjNzM0NmYxYWM0Nzc1ODBiNGYgcHkzaworODE2MTIgZTc2NmMwZDg2Y2ZmOWQxZTViYTZlM2E1N2NjZGQxODFkMGZiYTUwMyBweTNrCis4MTYxMyA2NmIzZWRhNjI4M2ZlYWM2YTlhNDAzMWYzZTAzY2Q1OTcyZThiNDNhIHB5M2sKKzgxNjE4IDMyNDJhMGQyMmRlNjM4YWI3MmRkNDE5ZjlhNGEyZDJjOWVkNzQ0ZmIgcmVsZWFzZTI2LW1haW50Cis4MTYxOSBjYWMwMGNiYmU3NzA5NDMzOWJhMWFiYzE5M2VkZjFiZDJlMmM5MzBlIHJlbGVhc2UzMS1tYWludAorODE2MjAgYjFiMzE3NzU4Njc2NTMyYzY1MmUzZmJjMGJiNzBkZTYxNjM1YTkwMSByZWxlYXNlMzEtbWFpbnQKKzgxNjIxIDc5NDUwNDVjM2E3NTkyMDVlMjVlMTU3YWI2MDc5YmU5NTFjN2FiNzAgbGVnYWN5LXRydW5rCis4MTYyMiBjOTYzNDc4YjkwOTJkZWNlZjQxM2NmNjBhOTkyOTBkNmE5ZDFhMzYzIHJlbGVhc2UyNi1tYWludAorODE2MjMgOGUyMWM2ODMxYzdmYTZiM2Y5ZGJkY2JlZjUxMzYxOTExZjBiZDdhNSBweTNrCis4MTYyNCA4YTEzZjc3M2E5NzYzOWU5OGZjN2RlYTE3ZDg1NzYyMmQxNmI3NGFiIHJlbGVhc2UzMS1tYWludAorODE2MjUgM2U2NDI1YzIyMWVjZmM1YTVlMDYwMDhmYTNkM2VhMmU1OGI4MjM4MCBweTNrCis4MTYyNiBlYmI5MTMwYWIwYzQ1OGZhYTA2ZWY1MzE0OTQ5ZDYxNjdjZjc1YjliIHJlbGVhc2UyNi1tYWludAorODE2MjcgNTdiOTAzNTAzNzJmOGMwMjZmNmM2ZTU4MGFlYTBhZGI0OTM5OGFjNCByZWxlYXNlMjYtbWFpbnQKKzgxNjI4IDcxNDY1M2RkNGFhZGFkNDUzY2NhYjliYWNkZWMxMWVlMDgzYzM3ZTIgcHkzaworODE2MjkgZGMyNzY4Yzk5OGRlMTI1MGFlYmVhZmNmZGNjMmMzNDM3MGE1ZDIyYiByZWxlYXNlMzEtbWFpbnQKKzgxNjMwIDY2MTA5ZDBlNGU2ZGYxZGVhNGI3Zjk4YzBhMTFiM2FlYTJmMWE1ODUgcHkzaworODE2MzEgZWJkNjVlYzU0ZDdlOWJlZjVkNmQ1YTI4Y2Q3YTBhYzUyMjY1MDI5ZSByZWxlYXNlMzEtbWFpbnQKKzgxNjMyIDYyY2E1NDBkOGI2ZTYxNTFhZDEyZTk1OTgyMDliNzAwNGY3ZTllZDggcHkzaworODE2MzMgOWY5MmNiYWE1MzlkNmE0M2M1ODIyOTU4M2NjZmJjYWIzZmViMmY3MSByZWxlYXNlMzEtbWFpbnQKKzgxNjM0IGY4MTI3MWMxOGViMDFhZGM2NTk5YjkxNjQ4ZjgxZWZhNjFiNDc4ZTAgbGVnYWN5LXRydW5rCis4MTYzNSA1M2VlNDczMjJkZDJhMmMyYTM0ODI2YjFjNDM1MDQ5NjE3Njc0YmMyIGxlZ2FjeS10cnVuaworODE2MzYgZDY5YjFhMmQ5YmYwZWYxMDQ4MWUzNDdmOGYzMWZiZjA5NDZhYTdlNCBsZWdhY3ktdHJ1bmsKKzgxNjM3IGQ0MjYwZGNhZmM3ZmI2MmI1MzcwM2JjNDQ4MGFiMGIyYjE0ZjJmYWUgcmVsZWFzZTI2LW1haW50Cis4MTYzOCA5YzBjMjdhOWI3MWM3OWNmMjExNmZlNmM5NzM0ZjM4YzJjMWJiYTYwIHB5M2sKKzgxNjM5IDEwOTc3NzA4ZGIyZWFhYjNlYzk1NGQ5ZjBjMDcxYmE2Mzg3NDI0ZDkgcmVsZWFzZTMxLW1haW50Cis4MTY0MCA4OThlYmIyOTkwZGZhNTlmMTlhN2ZjNzlhMjBlNjliZWJmN2I0Yjc5IGxlZ2FjeS10cnVuaworODE2NDEgMmRlNzEyMzNiNjliMGQyMDE2ZWM2YWI2Y2M4NTcxNTY0NWFlZTk5OSByZWxlYXNlMjYtbWFpbnQKKzgxNjQyIGU0Y2JiYmI3ODYzYjkyZGI5YmE2NzNkOWVjYzFiZjcyOWU3MDJiNGQgcHkzaworODE2NDMgY2ZlMTM4NjAwZjY0YzRjN2IxNWUxZTFhYzgwYjI3ZWNmNDdmMzY4YiByZWxlYXNlMzEtbWFpbnQKKzgxNjQ0IGEwM2I5NTY4MzU5YzU1ZGRlYzI5N2EzZGZlYzRlZWU0OTgxZTQ5MDEgcmVsZWFzZTI2LW1haW50Cis4MTY0NSA4ZTI5NGRmMGUzODJhNDZiMWFlMDYyZTFlODIxYzhiNGRiYzZmMzdkIGxlZ2FjeS10cnVuaworODE2NDYgN2IxMTI2YjViZTJkNmYwZDE0NTMwMzkwZDA3M2EzZTcxYjdhMDMxZSByZWxlYXNlMjYtbWFpbnQKKzgxNjQ3IDM3OWVlMjEyMTUzZTAzZjhhZjBmNjBjYzZmYjY3ZGJjN2FjZjUyNmMgcHkzaworODE2NDggZDIwZGIzZWU4NDU3NTVmNWU2N2I1MGNhNjllYjY2NWMyOTdkZmFlZSByZWxlYXNlMzEtbWFpbnQKKzgxNjQ5IGJkNDdjZDFmOWJjMmU4YmNjMjYzMDk4MDlhZGVhNTBiMWNiYzJhYjIgbGVnYWN5LXRydW5rCis4MTY1MCAzNGE2MzdiZmQ0YmU3OGI5ZTQ2MWQ0ZjMzM2M0MGNjZTg3ZTgxZjZlIHB5M2sKKzgxNjUxIGVhNDNiNDA2NDUwZjk0ZmMyNmJlZWU1N2U4ZjIzYzFmNzY0ZGJhZjAgbGVnYWN5LXRydW5rCis4MTY1MiAzYjgwNzA5MTMxNjk0OTZmOGFiM2NlMDU0OTBhNDk3MjU0MmM3NWNmIGxlZ2FjeS10cnVuaworODE2NTMgYjQ3YzRjZjI1ZjAyMmQ3NTkwNjA0MWUzMzg2YTg4MjY3YzhlN2U4OSByZWxlYXNlMjYtbWFpbnQKKzgxNjU0IGMzYWRiOTFjYTU4OTQ3MDk5ZWJmZDhmMTE1ZDIzNTM5MDQ2ZDQyYWMgcHkzaworODE2NTUgZGZmNWYwOWI1YTg2MDE4MmRjZjZjYTczMmY0MWE1NTUwNDY1ZTQ1MiByZWxlYXNlMzEtbWFpbnQKKzgxNjU2IDk3ZWRmMGVhMDNmOWIxNGUyYTQ5ZDQ4YTZhYTE1Y2E4MGNmMzMyZTYgcHkzaworODE2NTcgZGZiZDM0NWY1M2YwM2E1ODVlN2MwNDIyNjVkNzBiZDNjNWYwMjM0NyByZWxlYXNlMzEtbWFpbnQKKzgxNjU4IDZiMDcyOTRiMTM1MjBlMmRmNTY1NmQzZDBiZDEyNWM1NjdlZGIyY2IgbGVnYWN5LXRydW5rCis4MTY1OSBkZDM3OGI4ODViOTQwMzY1NDBmMmM5NTk1MDFhYWU3NDJlOWY5NWI0IHJlbGVhc2UyNi1tYWludAorODE2NjAgYmI2M2VhZWZjNWE2OGQ3OGZkZDVhYTgyMmIyZTYyYzk0YzhiNGI3MiBweTNrCis4MTY2MSA4MzNkZTc5ODg1ZTRmYzkyYzY4NDBmOGExMmY3YmZkNmYxOTI1MjVmIHJlbGVhc2UzMS1tYWludAorODE2NjIgZjZlOTAxODI2ODZiYzYxNWQ0N2VlODQ5NmM4ZDkwOTgxMTEzZDg3OSBsZWdhY3ktdHJ1bmsKKzgxNjYzIDI5MWIwYmI2M2ZiNzZiYWQ4NDAwMzExYWM1NzU3MjE4NzhmODg1OWUgbGVnYWN5LXRydW5rCis4MTY2NCBlZDk4M2IxMTZhN2RlMDBhZDcxYjJmNTcwYzRjYzc5NzU0OTBkMTIxIHJlbGVhc2UyNi1tYWludAorODE2NjUgOGJiZDRlYjRlZmM0MWUzYzM3NzdjMzViMjNkZWFkMWEzODM0ZmQzNyBweTNrCis4MTY2NiBjZWE1ZWY2ODJiZGQ0YzY4MzU1MGEwYjkyYTlkZmQ3MGQ3YjVjYjRjIHJlbGVhc2UzMS1tYWludAorODE2NjcgOWFmNjAwYTY2MTE1NzAxMDg5ZmM3NWNkNmNjZjA0ODVjYzVmOGY3NyBsZWdhY3ktdHJ1bmsKKzgxNjY4IGFlMTFmNTZhZDVkNzQ3ZGFmMjA3MWI3YmY3MzBmYjZkNzRlOTQ5N2IgcmVsZWFzZTI2LW1haW50Cis4MTY2OSAxYjRjMzA3NDJhMjRhM2M2NzllODBiNTI4ZDkwZTNlMjgyYmIyOWNiIGxlZ2FjeS10cnVuaworODE2NzAgYmZiZjJkNjUwZjI2OTM0ZDcyODk5ZGRlZGZjOGUxZmQzMmEzYTIxMyBweTNrCis4MTY3MSAwNTM0Y2UwMWJhNTAyOWIzZjU0NjFiYTUzZmE0ZTIyNDZiMzYzZmNjIHJlbGVhc2UzMS1tYWludAorODE2NzIgODgyNWE3ZTZhNWYwMWU2OTdkMzYxZWZhNTQ1OWViMjFiYzc1OTU2ZCBsZWdhY3ktdHJ1bmsKKzgxNjczIDM3OTdlZTU3ZDNkNmUzODViZWE3NDE0NjNlZDcyNmY4M2IyYjhmNjEgcHkzaworODE2NzQgMTZmYmRmMTBkMTAwMThmY2NkYzgzZjEzMDUzZGU2OTEyMWMzNDVmYSByZWxlYXNlMjYtbWFpbnQKKzgxNjc1IDNkMTFiYTc5ODlkZjBiNTA4ZWM5MGY2YWQ4NTM5MDBiNjM3ZTAzMTMgbGVnYWN5LXRydW5rCis4MTY3NiA1ZTI4YTNkZmRlZWYzZjRmMWM2NzQyNWFmZDY0NDhhZGMwOWVjYmY0IHJlbGVhc2UyNi1tYWludAorODE2NzcgMjViNDE2M2ZmZTNmZDJlNjlkNzViZWU4MDI3YzRhNDMwYmU2YzAxNSByZWxlYXNlMzEtbWFpbnQKKzgxNjc4IDM4ZGRlY2NmMDJhOTQyMjdjNTJlZjRmZDdjOTc5MDBmZTQyYzUzMjAgbGVnYWN5LXRydW5rCis4MTY3OSAxMWFjYzU3ZjU4MDRjYWJjMGMwODRkY2ZmNjVkMDEwNWRhZTUzOTI5IGxlZ2FjeS10cnVuaworODE2ODAgNmUxMjBkOTMxMTJlY2E0MmY3ZjQ3OTY1MGJkODkwYjM1ODU1ZTczYSBsZWdhY3ktdHJ1bmsKKzgxNjgxIDUzMmU5ZTZhYzgyNWYxY2ZiMzZhZjc0NjNmZDhiN2ZiOGQ3YjVmMTQgbGVnYWN5LXRydW5rCis4MTY4MiAyNjgwMzE2OGNlOGE3NDcyZGY1YWRhYzkzYTg5MDM4YWVkOGE5MDgyIHB5M2sKKzgxNjgzIGNiNGZhM2U0YjhkNTc2ODAxOWE2OTU0ZjczNWZhYjQ1YjlkMWRhZjQgbGVnYWN5LXRydW5rCis4MTY4NCBkZDY2MzY4MjE3YzE2MjZlMzFmNGJlYmQ4NDNiYzlhZWQ4M2RhMTA4IGxlZ2FjeS10cnVuaworODE2ODUgMjJjMGUyMjhkNWE3YzEyZjYzNDM2MzFhMzA0YWJkOGI2OTRiYmIxZiBweTNrCis4MTY4NiBiZjIxMDNhMjJlMDA3OGU2YTNkNGE1ZDJiM2E5MTRiZDMwZjllMzRlIHJlbGVhc2UzMS1tYWludAorODE2ODcgM2I2N2ZhMzU4NWYwN2M1NTA3ZTkxNWI2MDM4MTc1ZGJjYzY5ZWY0NiBsZWdhY3ktdHJ1bmsKKzgxNjg4IDlmYTU1OTAyNTlmNDY0YjBkNTRhZGFhNDk1NGZhNTg0OWQ0ODRmMzIgcmVsZWFzZTI2LW1haW50Cis4MTY4OSAwNzdkMjkzODQzOTkxOGQ2M2FjZDAxZjQyMWQzYzk5NTg5YmI2ZDA2IHB5M2sKKzgxNjkwIDdiNTliMWY2MzNjYjRlMjY4YTJmZDA4YjY5MjczN2EzZjE0ODhiYTUgcmVsZWFzZTMxLW1haW50Cis4MTY5MSBlYWNiZTc3NGYwMjllNGQ4OWU3ZmE0NzdhYzliNDNlNTE4YzQ2MGEyIGxlZ2FjeS10cnVuaworODE2OTIgNDE5OTAxZTY1ZGQyMTlkYTY4ZWVmMGJhZmE0OTY2NjdiZjgyMzNjZCBsZWdhY3ktdHJ1bmsKKzgxNjkzIDgyNDU2ODNlNmVjNjEwY2JlOTBmNzNhOWE0ODlhMDNkMzUzOGUwOTUgcmVsZWFzZTI2LW1haW50Cis4MTY5NCAxMDlhOThmOWZjZGRkMzRiYmE5NmVkY2Y1MDVlMmJjOWFhYTg4Y2NjIHB5M2sKKzgxNjk1IGNkMTkyZDFmY2Q2NzYzYjFjM2M1ZDFiYTA3YzczYjgyNDZjNjYwNGMgcHkzaworODE2OTYgODQ5ODhiYjkxZmJmNjM5OWI4YWM2MmYyY2JkODYwYTQ2MjQ0ZTc3ZiByZWxlYXNlMzEtbWFpbnQKKzgxNjk3IGMxNjBhZjA5YzViMDE2NWVmM2QxMmRkNzUxMzE5ZjA3YTM5MTc4NTkgbGVnYWN5LXRydW5rCis4MTY5OCAyYjI1YjUwZWFlYWRkNTU4OWM1OTk3YWM0YjcyODI4M2E1MzIyMzdkIHB5M2sKKzgxNjk5IDBjNzc2NGFhNjk0YTE4NmE0MTA1ZDQ5YmE0ZDkwZGFmNTA4NjMwOTEgcHkzaworODE3MDAgNGMwYjJiYmRkODJkMTcwNDdhOGMxZjU5MjgxMGE2YThmYWM0NDNlMSBsZWdhY3ktdHJ1bmsKKzgxNzAxIGE4MGMxYjk2NGE2ZmU5NmZiOWZiYjg2ZDdkZDAwYWQ3ZWY1NWYzNjcgbGVnYWN5LXRydW5rCis4MTcwMiBiYmFmNjA2MmYyNDE0MzZjOWMwODgwMzgxOWEwNTQ4NTZmNDc2M2E5IHJlbGVhc2UyNi1tYWludAorODE3MDMgZjIxNGUxYmYwMzFkMjk3NzU5ZDI3MWZkZjE4YzI2ZWY4YTAzM2U3MyBweTNrCis4MTcwNCA1MmU5MmU3N2IzMTE0ZDQ3ZjkzMTcyNzMzMDQwMmYwODhjZjgwM2JmIHJlbGVhc2UzMS1tYWludAorODE3MDUgNzM0NDQ4ZTg1NmFhN2M2Y2VhMDEwYmMxNTFhOGJkZTc1YmUzNGFjNiBsZWdhY3ktdHJ1bmsKKzgxNzA2IDA5MTc2ZDBiZGUzODQ5ZTBkMWU5ZTM5OWY4YjIzOTMzZmFmZjg2MzUgbGVnYWN5LXRydW5rCis4MTcwNyBkNzU0MWE0OTBjYmQ4NDIzNWRlZTdkZTIxYWJiNzQ5NjViMWMzNWUyIGxlZ2FjeS10cnVuaworODE3MDggOWJiNWMyMmVmMTM0MjNjNWYyMmM0MjZlMTg1OWIxZWY3YTlmZDI1ZCBweTNrCis4MTcwOSA1Y2RmMjY1NzZlOGVhMWZkNDA0MTc0YTllM2I3OWEzNDY0MmI1YzJiIGxlZ2FjeS10cnVuaworODE3MTAgMTQyY2I2ZjYwZmQ3ZTk1MWM1MmM3NTM3ZDZkZWU2MjA0NDVmNGZmYyBsZWdhY3ktdHJ1bmsKKzgxNzExIDIzZWQ4Mzc2MTVhYWI0OWUxMDVlMDkzNjEwMTYyODNiNjI2MmZkZDIgcHkzaworODE3MTIgZGRhOWJlZTVjODRhMDAwZDA4YzE5YzliYTYwZDc2ZWQwMTg0NTEyMSBsZWdhY3ktdHJ1bmsKKzgxNzEzIDYwNjEzZTgxZmIxZTg1MmQxM2JjN2VhNzI5ZmUwN2U1NjRhYmQ2OTYgcHkzaworODE3MTQgNTkwOWUxZjc2YmU3NDBkNjJjMmEwODQ0ZTA3YTcwZTdjOTBiODgyZSBweTNrLWNkZWNpbWFsCis4MTcxNSAyYjU3MDJkODhmMjc1ZThmYTA3OWJmN2VlMjhmYWI3YWQ4NDBhM2Y1IHB5M2stY2RlY2ltYWwKKzgxNzE2IGM4ODY0ODI3NzEzOGYxYmM1YjZjMGJjNTBmMjlkNDAxMzY2OWEyYTEgcHkzay1jZGVjaW1hbAorODE3MTcgNmI1MDEzZmVhODFiYmYwZWY1NDc4ODFiZjAzYzAxMWRhYmIxNGQ5YiBweTNrLWNkZWNpbWFsCis4MTcxOCA2MWY1NDZlODYxYzEyZjc2MTdiOThmY2ZlNThlNTM2YmM5MDFmNGY2IHB5M2stY2RlY2ltYWwKKzgxNzE5IDA4MjlmNjAyMDgwYjlkYjc3MmU5ZjRjMmQ2NzFjZjM4ZTJmZTNmZDkgcHkzay1jZGVjaW1hbAorODE3MjAgNmYxZjA1YzcyNWI3YzBmNTc3YTFkNmJlYTNmYWJmZDA1MmI5NWU4MiBweTNrLWNkZWNpbWFsCis4MTcyMSAxZmQzNjVkMzY5NTk2MmYzMWM5YTJlNDY4ZTkzZGEwZjExMTA4YTEwIHB5M2stY2RlY2ltYWwKKzgxNzIyIGE0MDlhNWFiODNiYmNiMmM3OGU1YzNkOTU3YmU1YWI3Mzg2MTVmZDEgcHkzay1jZGVjaW1hbAorODE3MjMgYTU2MTA1NDAxZDUyNmQ0MjM3ZGQxYmYzZmVhOGJiYWQ5NDg5ZWEwNyBweTNrLWNkZWNpbWFsCis4MTcyNCAwOWMwNWFkNDViNWYwYmRmNzE4OTFjMGI4MGM5OWNmZjcxZTY4ZTk3IGxlZ2FjeS10cnVuaworODE3MjUgMDljMDZjYTI3ZjdmODQ2Y2VkMzgzNjBhOWM2YjVlYWNmYTUyZDkxNiBweTNrCis4MTcyNiA0M2U5YTNlNjE3OTZlNmQ4ZDAwMmQ2MTJjMjM3ZTM2ZDJmNTg2MWNiIHB5M2stY2RlY2ltYWwKKzgxNzI3IGNiNTBkYjk0MTJjNzA0YzhlNzdhNDQwMTVkMTRiZGE1YmEzZWNjOTggcHkzay1jZGVjaW1hbAorODE3MjggYmU1ODgxNGUyNWQ3ODUxNTJkOGRjYjI4ZjliMTY0MjE4MmJlZDExZSBsZWdhY3ktdHJ1bmsKKzgxNzI5IDNhNTcxZmQ4YzNiZWEwYjFhMGFkMzE2OWU1NmE1N2E4ZjA2NzkwN2YgcHkzay1jZGVjaW1hbAorODE3MzAgZWMxNzRmNDJmMTViZDkwZGRmMmQxNTZhZDE3YWRlMGYzYWMxMGVjNSBweTNrCis4MTczMSAwZTNlYzQxODg0NWFkYzc1NTc4Y2Y5ZDFiYjdkODJmYTFiNTVjYjU1IHB5M2sKKzgxNzMyIGFhNWNlODYxNWM0ZmM3MDUyNmVjZDQ5MWRhZWY4NTVhY2ViOTFlMmEgcHkzay1jZGVjaW1hbAorODE3MzMgMmYyODJmOGY5Mzg4NDhkMzIxMGZjM2JiMjUwYjViMTE2ZTZhNGEwYyBweTNrLWNkZWNpbWFsCis4MTczNCA3NmNmNGFjZjdiNDNmMmQ2MjYyM2M1NTkyMDBjMWY4NmQ3ZTI4ZWIzIHB5M2stY2RlY2ltYWwKKzgxNzM1IDk4NmJhMGVjMmM1NWYzNTA1NWUwYzlhZmExNThjZTFmYzY1MzE1OGQgbGVnYWN5LXRydW5rCis4MTczNiA4ZmE0YTVlNWFmNTUyZGY3OGQ4ZTQzZWQ4MzBlYmUwMGIxOTU2ZTFmIGxlZ2FjeS10cnVuaworODE3MzcgMDZiZDRhNDQ4MzlkOTZkNTQ2MGFhMjM0NDJiNjU4N2I2NzE1YjBmNCBweTNrCis4MTczOCA3MmRjMGVmMzk0YWNiYjQ2NGViZmFjYjBkNWIxODhhMjYwMDI0YTEzIHJlbGVhc2UyNi1tYWludAorODE3MzkgZjg2YzZhNmUxNzQ0MTQ4MjIzNjhkMWUzMmM1YjUwYTY0YWMyYzUyMSBsZWdhY3ktdHJ1bmsKKzgxNzQwIDY3YzMzY2I5NjIyZGE4ZWM0MjY1NDZmMGNmNTQ2OTM0NTRjODBjMzggbGVnYWN5LXRydW5rCis4MTc0MSBlMTJkODdjNDU1OTE5OGUxNmVjNmQxMjAwM2EyNjkzMWViYjE0ZGIwIHJlbGVhc2UyNi1tYWludAorODE3NDIgMWMzMGY5ZWI0MGI4MjYwNzJiZDk2NjQ3NmY4OGM1OWExM2Y5NmRjZiBweTNrCis4MTc0MyA5MTI1MTdjY2RiM2ZkNmZiODY2NDZlYWIwZTUyMDgwZTQ4MDY1YTRhIHB5M2sKKzgxNzQ0IDM3MjFkNGU1YjJlZWQzNzQ4ZGQwZGMyNDllODk5NDlhMzBiOTI4NDMgbGVnYWN5LXRydW5rCis4MTc0NSAzNjYyZDJiNWFmYWFlZGRiNWRkZGM2Yzg4ODk3OTBmZjRmNWFkNzRkIHJlbGVhc2UyNi1tYWludAorODE3NDYgZDBkMDU3YjVkMzYxMzI4NWE4MmI3OGVlODc0MzgzZWM4YzRlYzk0ZSBweTNrCis4MTc0NyA4Yjg3MDE1NTEyNTM5YTA1YmQwYzc4N2Y1OTg2OTNkY2FmM2QwMTlmIGxlZ2FjeS10cnVuaworODE3NDggY2U5MjA5ODExYzBhYWNmYTE1MDNjODBlYTNiZGY0YjlmYzIxYWIxNSBweTNrCis4MTc0OSA0YTExNTIyOTgwYjdiOGU1MzY4MGViOWNmNWQ5MGQ4YTc4MjE3YmI1IGxlZ2FjeS10cnVuaworODE3NTAgYWYyYmRlNzJjZTYxYTJjMzI3MzA4NDY0MDEyM2E0Nzg1N2NiMDZhNiByZWxlYXNlMjYtbWFpbnQKKzgxNzUxIDVlMWIzYjYzNGQ1MzQ2NDkyYjdlN2RmMGQ1ZjQ4Y2IxZGFjYmYyYzQgcHkzaworODE3NTIgNjEwYmE5OWI4ZDBkYTNkMDJiZWYxYWE2ZjI3MjdkMjM3MjE5NmU2OSBsZWdhY3ktdHJ1bmsKKzgxNzUzIDJkMmIzODI0ZTM5YTUxMDQzMWQ2MGZkMGM3YjQ3OGE2Mjg0OWRmZjMgbGVnYWN5LXRydW5rCis4MTc1NCAzZDRmMWMyNTlkMmQwYWIwNDFkODU1ODNiNzhhYzhlOTNiMWE5NTJjIHB5M2sKKzgxNzU1IDljMzA5MTAyNGJjODQ4NmQ2MzQyYjFjZWMwNjhhMDBhYTI0Mzk4YTEgcHkzaworODE3NTYgY2EyNjNkMjAwNWU3NjExZTVjNjQ0YTA4NDg2OWNhZWI4MWExNGVlOSBsZWdhY3ktdHJ1bmsKKzgxNzU3IDBhNGIzM2U0ZWUyMzYzNjUyMjc0NmZhM2QyMjk0MDE3Y2EzOGJjNmIgcHkzaworODE3NTggNTAzMmYxZDVhMWUxNWMxODM1OTFjNDUxN2M3ZTQ0NjhmYzkwNDBiOCBsZWdhY3ktdHJ1bmsKKzgxNzU5IGMxY2FlZTMyNTQ0ZmI3OWY3NGZjOGYwYzg2MmRhNGVkYTE2YjQ1NDUgbGVnYWN5LXRydW5rCis4MTc2MCAxZDliN2QwNTJiY2M1ZjU3MjIxMDRiNzM2ODQ4Y2Y0MmI0NGRiMzMyIGxlZ2FjeS10cnVuaworODE3NjEgNzQyZDMyOWRmZGZkOTVjZjAwNTNiNTI0NjM0MzVhYjIxMGE4ZjZjMCBsZWdhY3ktdHJ1bmsKKzgxNzYyIGRhN2E4ZmY3NjQ5OTc2Y2FlNGY5YzFmMGVlN2I3NDkwZDhkMmI3ODEgcHkzaworODE3NjMgZDc4NzJkZGI0Yjk4MDgwOGFmNThiMDM2ZDMzZjEzNTcyZDc4ZTk1OSBsZWdhY3ktdHJ1bmsKKzgxNzY0IGNkYzdjYThkYjhkNmFiNDQ5NjBkZWNlMjM0Zjk2ZWU4YjI1MWU3N2UgbGVnYWN5LXRydW5rCis4MTc2NSBlMGRlMzM3NjdjMjk4Y2RjOWYwMTU2YzY5N2M5M2M1ZjUyNjliODVkIHB5M2sKKzgxNzY2IDE0MTBhYzYwYTc1NDEyMWY5MDBiM2UwNmE5OGU3MWQ3OWI2MDBkY2MgcHkzaworODE3NjcgM2UwYmMwZTE3ZjU2MGVkNGQ3MmZkZmE5YmJmODQwOWU0YmYzYWVkNyBsZWdhY3ktdHJ1bmsKKzgxNzY4IDI2YmI1MzhlZjZlYTU4MzMzMTM1MTMwMDUxYmQyYzJiNzg3ZTc4NDcgcHkzaworODE3NjkgZTFjYWVkNjk1NDQ4MWZjZTYxZDJjZmNkNjJkOGRjYzVhMTY0NzExOSBsZWdhY3ktdHJ1bmsKKzgxNzcwIDRkZmQ5MTc0MmViOWJiZTIxYjMzYTFkMWJlODI3NDE4Y2JkMzMwZTAgbGVnYWN5LXRydW5rCis4MTc3MSBkMTNkZWMxNDY4Yjg3NDg5YzA2YjQ0NTY0YWY1MmQyODVhNzQwYmJjIHB5M2sKKzgxNzcyIGNkOGVlMDE5OTg5ZDE3NTU3ZjY2ZThhYTUwYjg0YTFhOWVhMmIyMzAgbGVnYWN5LXRydW5rCis4MTc3MyBmZGRhM2Y0NjE0MmU0Zjk3YjE0NjRhMWFiNThlOTA3NDcyNWQwNmRhIGxlZ2FjeS10cnVuaworODE3NzQgMGU3YzdmMThjZDI0YjAzZWNkMmZjYzhkYzE5MDNhMGQ1MjQwNTBmMiBsZWdhY3ktdHJ1bmsKKzgxNzc1IDM4MWM1ZWViNTExMDM4ZDA5MWQ4ZTA4MDhjNGI4NTA4N2VkMmY2ODQgbGVnYWN5LXRydW5rCis4MTc3NiA2YTI4ZWYyOWIxMTAzOTQ0MzUxZTJkZGMxMzBhZDBiZTI5Zjc3MWZhIGxlZ2FjeS10cnVuaworODE3NzcgNTg5YjYxMWQ3YjRmYTI4YzcyMjdiNDY0ODE3NDUyOGUxZmIyYTUxYiBsZWdhY3ktdHJ1bmsKKzgxNzc4IDMwMWI3OGNjOTk5YjI5YmYxYTRjNGE2ZDU5NjE4NTVjYzdlY2FlMzcgcHkzaworODE3NzkgNjhmZDIyNTk1ZGI1Nzc2MDkyMzk4ZWVjNDE1MzUwMmZhNDE0NzYyMyBweTNrCis4MTc4MCBjNGQ0ZGRhY2Y5YTU5Njg2YTA3YjVhYjhiODkzODJlYjkwOGNiYjU1IHB5M2sKKzgxNzgxIDg0OTY1MDUwNzA1MmU2ZjQ2ZTQ3ZGNlMWJkNzEzMzdjNDczNTViMTUgcHkzaworODE3ODIgNDc1Y2JkZTFlZDE5YTdmNDBlMjQwMjk0ZjQyZGE1YTY3MjllODE1OCBweTNrCis4MTc4MyA2YTFkNmQ4Y2JjNTIxM2E2NDk0Mjk3YzI1YTRiNmIwMzY5MmY2OWIxIHJlbGVhc2UzMS1tYWludAorODE3ODQgMzE0MzM5NmE5NGYxZWUzNWViNmY2MjJlZTJiN2M4MDczNjQyYjMwNyBweTNrLWNkZWNpbWFsCis4MTc4NSA0OTViYjczYjFjZjFmM2E1NjY2MmZmZTJmZGU4M2UzZjYzZjdiNTVkIHB5M2stY2RlY2ltYWwKKzgxNzg2IDQzYTNmMmFjYzk0ZWMyZTE2MGUwMDhmNTE5ZmFjZTk2NjRhZGQ0NDkgcHkzay1jZGVjaW1hbAorODE3ODcgMzAzOGVhYzQyZjdkYzdlNGRkMDg5YjUwYTdkODEwZDFlNDZmZWRiMSBweTNrLWNkZWNpbWFsCis4MTc4OCBmNmRhZjUzMGY4OWVhNjNkYzZlNjE0MDcyOThhYTczN2FlNjNkZWJmIGxlZ2FjeS10cnVuaworODE3ODkgZWQwY2EzODkyMWM3Njc1MzE1MzY4OWNhYzRlZjU0MjMxZTRkODg3ZSByZWxlYXNlMjYtbWFpbnQKKzgxNzkwIGRmOGRjOGQxZDU3MWM2ZDAwNTFjMTZlNmExMGY5ZWI1ZWI2NmExMTkgcHkzaworODE3OTEgNzM0ZmVkNTYxM2FlZmE5NGNmMzRiOTBhZTllNTlhOTBkY2Q1MGZjNSByZWxlYXNlMzEtbWFpbnQKKzgxNzkyIDlkNDliNzQ0MDc4YzY1ZGY3YTE2OTJkYzBkZThlNTRiN2Y2MDJhN2MgcHkzaworODE3OTMgY2VmMzc0YjE0ZjViZWU1MzUwNzIwMjBhOTQxZDQwZmNiYTlmMDdkMyByZWxlYXNlMzEtbWFpbnQKKzgxNzk0IGMzZjJlZDRkOGU2NWVjZWE0MWRlZGIyYWE1MmQ2M2ZjNTc0NzZlNTEgcHkzaworODE3OTUgYzMyYjAzOGUwMDIyZTZlMzQzZTM1Y2I2NzcyNzZmN2EyMmZiZjBkOCByZWxlYXNlMzEtbWFpbnQKKzgxNzk2IGVkMjZlYTc4NTM2YmEzYjliNzllNDQ2MjYzZjE3Y2RmMTBjM2Q3ODkgcHkzay1jZGVjaW1hbAorODE3OTcgZmY4ZWM5NGJlYWVhZDhlNzIzMTc1MzYwMDY5YjZlMzExZjIxY2M0MyBweTNrLWNkZWNpbWFsCis4MTc5OCBiMWI3YWY1MTgzZTM1YmNkMzc5ZjZhMmE2M2RmNTVhNGMyZTNkODA1IHB5M2stY2RlY2ltYWwKKzgxNzk5IDczNmZhMzZlYTgxZTIwMmRiOTkxOWQyMTllYTJkNmY4ZmExYWFhNDQgcHkzay1jZGVjaW1hbAorODE4MDAgYTIyZDg5ODg4OTk1MDFiNjM5NzU4N2ViMmVlOTJmYmU1MjkwMjk2MSBweTNrLWNkZWNpbWFsCis4MTgwMSA2ZThkY2I4ZTllNmJmYjk4NTEzMDNiMWYxMTZhNTFkOWZkNzMyYjE4IGxlZ2FjeS10cnVuaworODE4MDIgMmQ3NDMwZGVkZWMzODM2M2VhZjAwMzA4NGNhZTFkYTYwN2JhMDEwNSBweTNrLWNkZWNpbWFsCis4MTgwMyBmZTJhMGUxZWM5NWRjZjkwMWY5ZDRlYmRlZjUyYWJjMDUxMDcxNWI5IHB5M2stY2RlY2ltYWwKKzgxODA0IDBlZmExYWQ4YmI3NTA2YWIxNTcyMjkwNDFlZGYzYWNkZDJmYzE2YjcgcHkzay1jZGVjaW1hbAorODE4MDUgYjExY2MxZjFhNjk4YzUwOWExNTg4ODY5YzZhYmI2YzYxM2UxMDQwMCBweTNrLWNkZWNpbWFsCis4MTgwNiAwZDkzNDc5MzRjYzViNGE5MmFhMjY1NGU2MDU2MDQ0NzU1YTA0OWVhIHB5M2sKKzgxODA3IDYwMGMyMzEyNzIwN2Q4MjA2NTc2ODg5YjVlYTJiNWUxMGJjODZkM2EgcHkzaworODE4MDggZmQ4ZmNjYjJlZTkwOGNkNGZkNzBiYjdiMWMwMGUwMDczZWMyYTNiNSByZWxlYXNlMzEtbWFpbnQKKzgxODA5IDFhMTAxNmZhMDcyMzAwZmE2OTc5ZmNjMGZjZDA3OGRmY2RhYjYyZDUgcHkzaworODE4MTAgZTkzMmRjODg4NTE3YjFmODdmMzZjOTFmMzRiOTM0YmE1NzE0MmQyYiByZWxlYXNlMzEtbWFpbnQKKzgxODExIDljZTU1NjNlZWNmYjc5NDBkZWU5Njk4MjIwZjAwNTcyNTQzY2JjY2YgcHkzaworODE4MTIgNjM0MmQxNDY3YTRkNDQ4ZDI4ZmE3MzRhZDhlMzBmYTFjMTNlZmE3YSByZWxlYXNlMzEtbWFpbnQKKzgxODEzIGEyMTQ1YTA2YTcyNjhmMjAzMDkwOWI0MTY3ZmRhMmFlM2RiN2FmMDUgbGVnYWN5LXRydW5rCis4MTgxNCA5NWNjMWU2ZDAyNDY5NGFhNWZiYmVmODcxYjc0NDlmYzM5NWY5YjZjIHB5M2sKKzgxODE1IDUzODE5NmNmOTFmZjc4MjkxMzZkZWIzMzQ1MDQ3M2EzMmMwZDI0ZWMgcmVsZWFzZTI2LW1haW50Cis4MTgxNiAyZjYxZTNhMTQ2YjFjZGNlNDExYjk1Njc0NDUwN2M5NGZkNThiZGYyIHB5M2sKKzgxODE3IGY1Y2U1ZTFiYjIzYTIxMzZjZDhmZDAzMjliOGZhNzU5OTMxMWNlMTEgbGVnYWN5LXRydW5rCis4MTgxOCBmMmM0ZGQyMmNhNjFhMjEwNzVkYWY4MzI0MjRhNmVjMTI3MzJmNGMxIHB5M2sKKzgxODE5IDgyMjI4MGNlZTA0YjUyN2Y4YzI4YWU3ZTg1YzIzNWI1NWE3MGJjY2UgcmVsZWFzZTI2LW1haW50Cis4MTgyMCAyNmZhYzc0ZWJhYjMyOWUxZDFjN2E0ZGViZjY4MzIxYWJhZGY0YWEyIGxlZ2FjeS10cnVuaworODE4MjEgZmVjZDhmYjdiYmVmNWRiMDc3ZWQ3OTk4M2I2N2Q3NDQzZGVmN2U0ZSBweTNrCis4MTgyMiBiNDRhMmZlNTMxZWY1MWZhNzg1MDYzZDEzMGNmODVlOTk5YmYxMDJjIHJlbGVhc2UyNi1tYWludAorODE4MjMgZDM3OTdlOWRmZDJjMTk3NTg3YzBkMjY4MTY3NzQ5ZDk0MmM5NTAzYSBweTNrCis4MTgyNCBkZGRiOThlZjNiZTVlZjkwNjZkNTYxM2U2ZTI3NjMwNThlZWRiN2VjIGxlZ2FjeS10cnVuaworODE4MjUgZTVmMGIyN2JjMTc4Mzc5OGM2NWU4ZmI0ZTU3MWY4NWVmMjEyODU3MSBsZWdhY3ktdHJ1bmsKKzgxODI2IDgyNWY2NTQ0NWEwYTAxZWYxYTc1MGFlZGZjYTUyNWU2ZjZhZDk2YTMgcHkzaworODE4MjcgNWM2ZTc1YThkNjFkNTVlNjNmYzc5MzM3ZWZkYzdiZDg2NmU1N2ZjOSBweTNrCis4MTgyOCAzZTg2MjU0MDM5YjkwOTZmYTQ4ODY0ZWYxMDFkOTE1NzU3YjI0NmM3IHJlbGVhc2UyNi1tYWludAorODE4MjkgMjcxODE1OGM1OGQwMGZmYzc4YmI0Y2FmZTkwNjM5MTZkMDFlODRhOCBweTNrCis4MTgzMCBhMzYwZTExNDg2NmI1NTRkOGZmMWIxYWRjNWFjNGM4MzlkM2JjYjQwIHB5M2sKKzgxODMxIDRmNjEzMzJhZjM1ZTY5ZmJiMTRlY2I4YzcwNThhMmRkYjI4NDllNDUgcHkzaworODE4MzIgYjk1MTg2MDZjZGRjZTkxZDFhZTk3MDMzYmM2MTQ1ZDU3MzM1N2ZmZiBweTNrCis4MTgzMyBkMjI2NGY5YWM2MWVjZmQ2Y2YwODMzM2YyZGIzZjI3MzVmMDA0NGZjIHJlbGVhc2UzMS1tYWludAorODE4MzQgMzViNGMzNTZmMjRhNjI4MTJiZjg5MGViZWM2ZWVhMTM5ODk4ZjBlYiBsZWdhY3ktdHJ1bmsKKzgxODM1IDExNjZmYjdlZmIwN2E2ZTU1NGU5NWMzMzY2NDE5ZmUzZDc2ZjVlOWQgcHkzaworODE4MzYgZDVlYzI0M2NhYTEyMjRhZmI3NjRjMjQ0YmY0YzA0OTY5OTExNTljOSByZWxlYXNlMjYtbWFpbnQKKzgxODM3IGI1YWY1YzkzMTM1YjI0ZjM0MTQ1ZDY2YTc5NzRhMDZmMDQ5NWNmYTggcmVsZWFzZTMxLW1haW50Cis4MTgzOCA2NTA5ZjlhM2NkZTVhZTI3ZTA0NTdlYTI3N2JmNzk1OGY4NWNhN2E0IHB5M2sKKzgxODM5IDlmN2I4YjMyYjA3NGFhOTFkMzEzNTIxMjBhNDY5MTk4MWE3MDk5MGQgcmVsZWFzZTMxLW1haW50Cis4MTg0MCBhMDZhZDczODM1NTIzZjI0ODZmMDM2YjUwMTYzNWFlYjRhYmFhNTY0IHB5M2sKKzgxODQxIGQyODFlZDU5ZmYwYmU0ZjI0MDJmNGYxNjk1MjE0ZjY3YzEwNTk4MDcgcHkzaworODE4NDIgN2NjYzU1ODExNDEzMWYwOWIxNmVjZGQxZTZkYWJmYWRlZGI1OWQxMiByZWxlYXNlMzEtbWFpbnQKKzgxODQzIGQ5MjcwOGNmMWMxZmEzMzY0YjU2NDEwOTM2MjVlN2VlNTRjZmEyYTYgcHkzaworODE4NDQgYTI1YWQ5YzRhY2UwMDE4Zjg1MmJiNDM3NGVjMTU1ZTg4MzNhODllYSBweTNrCis4MTg0NSBkNDdmZTQxMzRlN2QxMWJmNDAzNjEwN2M4MmU2NWI3ZjMxNjUyNDczIHJlbGVhc2UzMS1tYWludAorODE4NDYgZjgzZjIwMWIxMjc2MDg0ZGE3M2NhZTVlZjdlOTgyOGM0YjQyNjkyYyByZWxlYXNlMzEtbWFpbnQKKzgxODQ3IDE5NjZjMWJjOTA0OGU0ZWVkMWEyMDEwYTVkMGUyMmY5MjY2OTkzYTQgbGVnYWN5LXRydW5rCis4MTg0OCAyN2Q5YmNjN2U2NjFlY2JkN2ZhN2ViOTg1Y2NjZWVjYjg3OGQ5ODQwIHJlbGVhc2UyNi1tYWludAorODE4NDkgMmNmZTE1YjNjZGY1NTJjMDc2YzViNjEyYWI1MTM5NWE4MzIzNTBkOCBweTNrCis4MTg1MCBiMmMxOTk1NjMzYmRjODVlYmMwZWRjY2ZhNzBjYjNjOWRlM2JjOTAwIHJlbGVhc2UzMS1tYWludAorODE4NTEgZDMyYjBlODBmYWFjZDFkMDc3MjUzNTY2MzhlNGE3ODJiMzQ5OTVkNiBweTNrCis4MTg1MiA2ZjM4NTUwMzg5MTliNjIyYjk5NGI4NzFiMjk1NGViODBlYzc3MGRmIHJlbGVhc2UzMS1tYWludAorODE4NTMgODY0YWM3YjNjM2Q2Y2VmM2NmNWEyYTYyODA2YWY1NTQxY2NmOTY0MCBsZWdhY3ktdHJ1bmsKKzgxODU0IGQ3MTEzY2FjZDQyOGI2MWI1ZDhhM2Q1OTdkNDZkNzUyNDZmMGEyNGMgcHkzaworODE4NTUgNmU2ODY2Y2VjMzdlYTJjMDA3Y2M5Mjc2MDM5Njg5ZTZjOWFiZjIxYyByZWxlYXNlMzEtbWFpbnQKKzgxODU2IDk2YTUxMzM4MjVkMjM2Njg4MTgxN2Q3OGFkN2U3ZGNjMzY0NjM5OTAgcHkzaworODE4NTcgYzYwNDAyZmMwNjZmMTBjMDNhNjVlYzA4NjhlNjE3ZTUwMjRiYjliYiBweTNrCis4MTg1OCBiNmVlMjA1Yjk0OThiZDBmZTczZmExOWYzODIxZWUzZDYzNTNlMWEwIHJlbGVhc2UzMS1tYWludAorODE4NTkgZjFhYWRiZWJjNTc3MjkxMjMxMjI4ZmRmNjJlODM5MjEyNzZmZWQ3NyBsZWdhY3ktdHJ1bmsKKzgxODYwIGJhMmYyZDA4NTA0YjA1MDA2ZjE3NWI0NTgxNDY2ZDM0NTA4MzExMTMgbGVnYWN5LXRydW5rCis4MTg2MSBjMTE0NWU2NjhkNzIwODY0NDg4ZGRjZTAwMTk1YmRhYzU1OTU3MzhhIHJlbGVhc2UyNi1tYWludAorODE4NjIgODY1ZTM0Y2Q3ZTViNzY5Mjk3Y2FkYWUwNzBjMGYxZTIwZDgzOWNmOCBweTNrCis4MTg2MyAzMzc1MjM5ZDQzNzBlMmU2NmQ4N2RiNDY4ODNkNjIxMmE3MmU2MTExIHJlbGVhc2UzMS1tYWludAorODE4NjQgMzI5YzEyOWUwN2I2OGFmMjYyNzlkNDhlOWNjZmQ4YzhjOGVlODg5OCBsZWdhY3ktdHJ1bmsKKzgxODY1IDhmNThiOWU1OTY2ODhkNDJlNjY3YWNlNjRlY2QzYzBhZjgzM2RhMzQgcHkzaworODE4NjYgYTJlYTFhMjMxODZiMDg3NjcwMTY4MDgxMzk2MTVmZTZhZTQ5MTdhZCByZWxlYXNlMjYtbWFpbnQKKzgxODY3IGYzM2U0NjRhOWE2MGFhOWYwNDk3OGM2Y2YwZjU1N2ZlYzA4ZDYwZTcgcmVsZWFzZTMxLW1haW50Cis4MTg2OCA1YmY3MzM2ZWEwYWFkODliZDI0ODIyMGMyOTg0ZDkxZDc1MTdlMmVkIGxlZ2FjeS10cnVuaworODE4NjkgNzdjMGNhNjlkNTE4NGQ4OTIyYzVlMTdiYzc1NTU2M2FlNmNiZjcxMCBweTNrCis4MTg3MCAxNDI5YWM2YmViYzNmOGQ5YTdhZDE3MGQ5MTIyNzUyNDU0YmY4NjM3IHJlbGVhc2UzMS1tYWludAorODE4NzEgZGRiNDdmZDYxMmE2NzAxYjM3ZDVjZjM1NjRlMGVhYjAwZDM1ODRjYSBweTNrCis4MTg3MiBlMDg3MTYyNTczYWNjNjc2OTI2ZjJlOGZiZGJiMTdiNGRkMmJiNzc4IHJlbGVhc2UzMS1tYWludAorODE4NzMgZmU1ZWQ3MDI4M2VmZTYwOTQxYTdlYWMzNTQ4NDE0ZTMzOTFkMjA1OCBweTNrCis4MTg3NCA4Y2ZhMGRjMzhhYTc0MmI5ODAzOTE4NGEyNmM1MGZiZmMxZWViY2JjIHB5M2sKKzgxODc1IGZmNTBkNDVlMDYxODEzNTMyZDNmNjA3NjQ4OTdjNjc5OWQ4Y2ZjMmEgcHkzaworODE4NzYgY2QxMDI0MjgxYjczMmJiODQ4ZTA5YjFlZjA0ZTZlNGZkYjZiMDYxNCBsZWdhY3ktdHJ1bmsKKzgxODc3IGYyOTQ0NzNkODc5MzE1ZmIzMjZiNzY4ZTdkZTQ2ODgxMzUyZjNkMWUgcHkzaworODE4NzggN2Y1NDBmZTc3NWZjY2UzNWRiN2QzNmViODY1ZjU5Njg0Y2JkYjRiZCBsZWdhY3ktdHJ1bmsKKzgxODc5IDVmZTRhZDViNWFiOWViNzJhMmZkODMwNGFkZmRhNzJmOWQyZjJhMmUgcHkzaworODE4ODAgZGJlN2FlNjY2Y2UyMjlkNjk0ZThhOTY3MDkxNzE4NDY3M2I4YjAyOCBsZWdhY3ktdHJ1bmsKKzgxODgxIDBkMTY2ZTU3ODg0ZGY0MTdkYTgxOGYxN2FmMDk4Y2I3NjUyZTQ3NGEgbGVnYWN5LXRydW5rCis4MTg4MiBhODg3MmI2NTA1Nzc2YTY0ZDBmMjY4ZDA0N2ZmNmRlYzRmNzYzNzEzIGxlZ2FjeS10cnVuaworODE4ODMgNzJmNzc0OTAzNzcyMDE2Y2ZjNzQzNmYxNzRiM2JmY2I0OGEzZWY2ZiBweTNrCis4MTg4NCA5ZTEyYzY0OWQzMTI3NWYyYzFjNzk0YzFmYTNiNGI3OTRiY2Q3ODg0IHJlbGVhc2UzMS1tYWludAorODE4ODUgYWViNDdkMzBmYmE0ZTM4ZGExZThmMTIyMWU0ZDA2MjA0MjM3MWUxZSBweTNrCis4MTg4NiAwNzY3NjNjNjY3Zjk1NjViOGUyODI5MWVlZmE3YzQ3Y2U0ZmIzYzU0IHJlbGVhc2UzMS1tYWludAorODE4ODcgOGMzYTIyMmZhNmQxNThmNWZiYWViYTNjNjNmNTM0OTFkNzFhNmVlZiByZWxlYXNlMjYtbWFpbnQKKzgxODg4IDRjOTlkYThjMWU4MGU3ZmVjYjNjODU3M2U2N2IyMGQ3Yzk4ZWU4NzAgbGVnYWN5LXRydW5rCis4MTg4OSA3ZWY0NmE2MWRjOTdlYjc1MmY0ODA4NjlkZThkNzMxNWZiYWIzZDk1IGxlZ2FjeS10cnVuaworODE4OTAgMzQyMGRmYzU1OWJiYjgzZjQ0ZjZiYWI3MmM5OTE0YTExZTg2NTZkZSByZWxlYXNlMjYtbWFpbnQKKzgxODkxIDgzMTljYTBkNTQzNDkzMTBjNWVkNzY2MmQwZDdiZWM1Y2Y0Zjg0NjYgcHkzaworODE4OTIgNDQ2N2M0YzFkMzhlY2ZmZmFlYzBmMjI2NTFjNTgzOWQ5NTcwMWUyNSByZWxlYXNlMzEtbWFpbnQKKzgxODkzIDI2Njg1MzExZDMxMzI0MTBhNDc3MWQzYjUzY2M5ZjEyMGYxZWQ4NmYgcHkzaworODE4OTQgNGMzYmU3NGNhNTAxMjdmMDYzOGI2OGZkZTE4YzA1ODRjNGU3NGY1MSBweTNrCis4MTg5NSAzYmExYjViNGMxMDg4NTAwODRjMWJkZTQxYzk3NDRhYmVjMzI3MTFhIHB5M2sKKzgxODk2IGViYzRlODk2OTI0ZTJhOGM0ZTAwNzM2ZjAwMmJiNDA3ZmY2ZjVjNWQgcHkzaworODE4OTcgNmFkYzgzZDk5OWQwZTQ1MmQwMzY2YjlhNGQxMGI3ODZkNmRkMmM0MiBweTNrCis4MTg5OCA2ZmY4OGRjYTgxMzM5ODdjMTc4MTFkYjE3ZmYwODA2MTdmOWVkMjI4IHB5M2sKKzgxODk5IGNkNTk2YThmOTFmMzc4NjE4Y2NiNTE5YTI4MDFiNTk4ZDcxZWE4YWEgbGVnYWN5LXRydW5rCis4MTkwMCBiMDkxYTdlNDI4NWY5M2NiNWZhM2RmMzAxNGFmNjBkODM5Yzg2ZTE2IHJlbGVhc2UyNi1tYWludAorODE5MDEgMmE4ZWUxMWUzZTE4YTNkNDQ3MTJhNDkxNTQ2YzIwNGQ4YjcwZWQ3OSBweTNrCis4MTkwMiA3M2Q4MmIwYjZkZWU0ZGE1Y2U5ZGQ1YTg4NGRjZDJkNmI1YTJlNzA3IHB5M2sKKzgxOTAzIDUwYzIzOTE3NDk3NjE5MzllZjJhMWUzNmM1YTlhMjkxZDIzYmYxZjcgcmVsZWFzZTMxLW1haW50Cis4MTkwNCA3ZGI3Zjg0NDI0MTRmYzRiODdhZTI5ZjZiMDE2NzQyZGU3ODQ4ODZkIGxlZ2FjeS10cnVuaworODE5MDUgOWRhYzU4MTYzYjc5OTlhYzUzMDk3YTc3Zjc5YTI4YmMzMjcxNTliNCBweTNrCis4MTkwNiA2NjE1MTlmZWMzYjg2ODhmYzc1MDg1YTdiMTlhYjAzNGNiNmYzNTgxIGxlZ2FjeS10cnVuaworODE5MDcgOTgyNDU0NjRiNjY1NGEwNWRhODU0MjIzYWE5MWMyYTJiNTQwYTRmZSBsZWdhY3ktdHJ1bmsKKzgxOTA4IDc1NzYyNjBkMWI2NTQxNTAwNTgyZjJlOWQyM2MwNzI4NGEwNzEwMzIgcHkzaworODE5MDkgMjJjMDQ1ZDFiYzhjY2Y5M2NmMmE0MzAxYjQwYTEyNzIyNDlkNzRlZiByZWxlYXNlMjYtbWFpbnQKKzgxOTEwIDhkNWRkMjI3NjY4MDU2NGY3MzY1MGUxNjRmNzlmOGFiYTBmMzFkNGIgcmVsZWFzZTMxLW1haW50Cis4MTkxMSA4OGFlYzUxMjQxODVkZmU0MTgyMWVmODE1NTkwYTdiMjMzM2I1OGNiIHB5M2sKKzgxOTEyIDQ0ZGM5ODUwMmFjMzIzYTVjZGM5MTU3YWRhOTZjYjE5OWE4NjM4NjMgcHkzaworODE5MTMgYTY1M2UzMDYxMDhmNTM0M2FjYmU2Yjg2NjRlNjEwM2ZjM2I2MjZjNyByZWxlYXNlMzEtbWFpbnQKKzgxOTE0IGJkOGExZmQ0YzMxNmYyMGRlYzUzZmY5MTg1YTE2Y2QzYWJjOWJhZWIgcHkzaworODE5MTUgYzhiYzJkOGU5YWUxY2ZjNmI5MDQxZmVmNzBhN2I3MTAxMDI3ZjllMSByZWxlYXNlMzEtbWFpbnQKKzgxOTE2IGY1MmFlZmRhYjE4MjBlNjhhMmU2NTIzZmM2ZGVkMDQ4M2QxOGVkM2MgcHkzaworODE5MTcgMmIyZjU1M2YxY2U2MTEwNTg0MDRmMWM2M2EyMTViZmMzMGFmOGFiZSByZWxlYXNlMzEtbWFpbnQKKzgxOTE4IGY2MGFhZjk5YjgzNmJmNmVlZTE4MTY5OTdjNDA4NjZhMWU3NjVkNTYgcHkzaworODE5MTkgYTI1NTFiMzBmMDQ5NjQ5ODUzZDQxODE4NGQyOTc2YzJiYzMyMDg3MCBsZWdhY3ktdHJ1bmsKKzgxOTE5IGZlNmJlMDQyNmUwZDM1M2RiODRlYzg2OWE1YjAyZGJiYTZjM2Q0YTUgcmVsZWFzZTI2LW1haW50Cis4MTkyMCAwMTY3ZjkxNzIxYTg0YzYxOGZlMjNhOWNjNTY0ZjA1OGFkMjliMDQ1IHB5M2sKKzgxOTIxIDg2MjQ1ODI4MDlmOWM3MmQ0ZTM0N2RjNWE1Y2Y5YzgzMDJhMGI4OGUgcmVsZWFzZTMxLW1haW50Cis4MTkyMiBkOTI4MjA2NWY1YzllYmMyNGZkZWM3MDMzNWRjZWIwNmI4Y2UyYTM3IHJlbGVhc2UzMS1tYWludAorODE5MjMgMTM3ZGE3Y2U1ZThlZDFiYjdhZjRmNzQ2NmY1NThjYzhhMTQ1NjkzNSBweTNrCis4MTkyNCA3MjE2OWZmZTMyYTAyY2UxZGVmNzRkZjdhMzAzMGFhNjQ0NWZhNmM1IHJlbGVhc2UzMS1tYWludAorODE5MjUgNmVhYTc5YmUwNDQ5ZmQwNGY2ZGRhN2IwMGFhMjE4NTc5ZDkzNGVjYyBweTNrCis4MTkyNiAxMDMxOTIxN2FmNDQzMGRmNGZlZWQ1YzFlN2UxZWI2MjZjYTUzNjQyIHJlbGVhc2UzMS1tYWludAorODE5MjcgMzAyMjkwNGY5OTcxMWJiOTdlMjcxYzlmMDAwMjFmNWNmZWNmMjI4OCBweTNrCis4MTkyOCA4MTY5ZjMzZjIyNjg4ZjI0YTJhNDZiNmRmM2U5Y2E0OGJhMDBjNGIxIHJlbGVhc2UzMS1tYWludAorODE5MjkgNDQ0YzAyNWUyOThkYTM2OTZlZjA5MGI4YTViNDJhYThiMzQ4YTdmYyBweTNrCis4MTkzMCBlODBkYWIzZTkwOWY3YjMzYjkxM2NiYmJkZGQyNjcyZWYxNjUwZDg2IHB5M2sKKzgxOTMxIGExMGE3Y2U5N2Y0NWE3YjQ4NWE2NDdmOTExMDcxODI5OGE3YmVlYmYgbGVnYWN5LXRydW5rCis4MTkzMiA4NGRhYjI5YmRlYTcwYTM5MjMxODQzOGM5MTc2NmViZTk0OWE2OWRkIGxlZ2FjeS10cnVuaworODE5MzMgYzJiOTIzODM0ZGVhNzVkZWFlNWEzNjljYzYzZGU4YmFiNjMwZjljYiBsZWdhY3ktdHJ1bmsKKzgxOTM0IDYxZDRjYzY3ODE2NTVkZTk5OWM2YjhlODE3NTc5MzhkZWQ5ZGJjOTggcmVsZWFzZTI2LW1haW50Cis4MTkzNSA4MDExMGZkNDMxOTExOTI5MTk4Njk1ODY0ZTlkNTMxNGQzMjI5OTFiIHJlbGVhc2UyNi1tYWludAorODE5MzYgNmNlN2ViY2Y5MzU4ZGU1Zjk1NjMyNTFhZTNiYjljZDlhMTU3Yzk2MSBweTNrCis4MTkzNyA1MmViMGMwOTNiNjg4N2I5ZGU4NjVhYmM2OGFlNTc1YTA4OWRmY2E2IHB5M2sKKzgxOTM4IGE0OTBhYTMwM2Q4YWRkZmI4MzAyMDk1YzdjMDg2MDQ3MTEwMzU0NGUgcHkzaworODE5MzkgNGU5ZGQ2ZDgwMDYzODBkZGJmNWQ5ZTk4YjU1NTMxYWZhYjU0OGJmMyBsZWdhY3ktdHJ1bmsKKzgxOTQwIDMxZjAxYzg4MWM0NjBmMzZjMDY5YWIzM2ZiNTdhZWYwMjgxMGJjYWEgbGVnYWN5LXRydW5rCis4MTk0MSBhY2ExM2E1ZDYxNDRkMzhiNjg2MjZhODg5OWI2ZWEyYTZhYmViNTE4IGxlZ2FjeS10cnVuaworODE5NDIgNDFlZDU4ZWQ1YzkzYmFjMWQ2OGU1OTYzYTRjY2ZhOTY1ZTlkMmNhYSBsZWdhY3ktdHJ1bmsKKzgxOTQzIDhmMjdiNjFhNDBmYTk5MDUzMzFhNzMwMzljODgwNTcwYmZjMzVhN2YgcmVsZWFzZTI2LW1haW50Cis4MTk0NCA2MDZiYWQ1ODQzNDQ2NGQzMWNhMDBiOWFlOTMxNzkwYWQwMGYyYjczIHB5M2sKKzgxOTQ1IGRiNTUxNjdmYTVlNzk4ODhlNzdkYjQ3NzRjOTU3ZTg3OWFkNWUyOWYgbGVnYWN5LXRydW5rCis4MTk0NiA1MTYwMDQ4ZDUzNjE3MTEwYzE4M2IzZjhlOTA2YjQxMThlYzdjNjcyIHB5M2sKKzgxOTQ3IGJkODZiYmE1ZWQzM2EwMWViMzM1OTViYTliNmExMzM5NTNiN2NmNjEgcHkzaworODE5NDggZTU1ZmFkM2Q1YWU0ODRjNDFjZDE3MmU4YWE5YTgzYzI0NGQyN2QzNyBweTNrCis4MTk0OSA5NTUwZWRhMWMwOTY0ZTY0Y2I2ZDc2MWU4MzFmNWNjNGZlYjU1NmJiIHB5M2sKKzgxOTUwIDliMzMzYmYwOGQ0NWY3NWMwYjY5MWMwMGE4MzViN2U4M2ZiZGQ1ZWEgcHkzaworODE5NTEgNDRjYWM1YzU2NWI3ZjA5OTkzMzY3NWVlOWFjNjg0NDUwOWZjYzIzMyBweTNrCis4MTk1MiBkMDY1NzdkYjcyNzg1MmM1MGJiYTQyOTZkOWQzODJjMGJkNzM3ZDY0IHB5M2sKKzgxOTUzIDczZTUzNTRmOTJlNzE0MjhhY2MxMzE4YjhlOGQ0NDc1NzkyNDJlOWUgbGVnYWN5LXRydW5rCis4MTk1NCBlMGM0ZGFkZGZjNTQ2OWNlZDA3NzkwZDFiNzc5MDc1NjlkM2RmMGU2IHB5M2sKKzgxOTU1IGI5MGUzMzVhNjA5YTk3OTFjNWQ5NjAyNmM4NGRlNWY1MDQ5Zjk5MjkgcHkzaworODE5NTYgOGJjMGJmMjIwMTRkODMxYTg0NGI1MGQyODVkOWY4N2JmNjNkYmQxYyBweTNrCis4MTk1NyAwYTU1YWRlNmQ4NTc4MWMzOGM4MjBiZjc2YjIyNjYwMzU5NzY4MWQ0IGxlZ2FjeS10cnVuaworODE5NTggMGIyZTBiNjgzOWEyNzM1YmM4ZjIxYzlhZmY5M2QwZmYzZjExMmQ2OCBweTNrCis4MTk1OSBiMDBjNzM2NTU1ZGU3MGUzY2QyZWFhNDdjMDJhYzQ3YjI1NjdjOTBiIHJlbGVhc2UyNi1tYWludAorODE5NjAgMGY1ZDExNGVmZjAxNDQyYTNiMjEwY2RmZmVjYzhjY2U4NzIzZmMwYSByZWxlYXNlMzEtbWFpbnQKKzgxOTYxIGU1ODViMjQzMWM0YTU0NjlkNWI0OThiNjJhODBjZWE4ZDU3YWIzZjUgcHkzaworODE5NjIgNTI5NWI0ZGJmMzU1YTg0ZDY5MTA4NDg3ZTE1Nzc1NzU1N2UxMDk3MCByZWxlYXNlMzEtbWFpbnQKKzgxOTYzIGI5ZWNkY2VjMGZmMGQ4YmRjMWY4OGU0M2RkMjUwZGNiYjI2ZjMxNmEgbGVnYWN5LXRydW5rCis4MTk2NCA4ZjEzN2E1YzQxM2NhMzE2MjdlOWY3OWZkZWU3OWUzMDUyNjQ2YThkIGxlZ2FjeS10cnVuaworODE5NjUgN2FjNjE0OGU2YTdmODRhNmJkZWU0YWU2OTVhNzIyYzM0MDAyMGYzOSBweTNrCis4MTk2NiA0ZWFjMTM1YTMzYWZkNjk0ZDM3MDM4NTJlNDNkZGViY2Y4YTk2YmEzIHJlbGVhc2UzMS1tYWludAorODE5NjcgY2ZmMGE5MjMxNDBiZThlYzhiNzg4ZmI4YWZlNmU2YzExN2NhMGEzYyBsZWdhY3ktdHJ1bmsKKzgxOTY4IGQwNjRlODkzNGY0ZDBjY2UwNGM5NWNhNWE4MGY5MGU1ODFmYTVhNDggcHkzaworODE5NjkgMmU1MmZiY2FhYTczYmRkYzIzMTE4MTUyNTI5ZDUxMGUxYWIzYzU0MCBsZWdhY3ktdHJ1bmsKKzgxOTcwIDEzODNiODRiMTdhY2Y3NmNlNTFmNTczMDBhMTcxMTk5MjRiOTM0NWEgcHkzaworODE5NzEgZjgyZDk2YjlmMDNlZGFhYWRlY2I0NWViNGFlMTUzMjdkZGZjMTIzNyBsZWdhY3ktdHJ1bmsKKzgxOTcyIGIwODRjMGE5MzRhN2U5NjM4MTc0OWQ4ZjVmN2NhY2IwNmU1ZGFiZmUgcHkzaworODE5NzMgYjMyYTI4MTZmNmU5Yzc4NDQzOTNiZGY1MTJkOTg3NGNlMmJkZWM1MyBweTNrCis4MTk3NCAwODQwYTI4M2FmNWY5YWI2MmVkYWVjYjcxOWQ4ZWZkODM5OTJkNGY4IHB5M2sKKzgxOTc1IDljYjkwMTY5YjI1YTg2M2RmNzJkZjhmNWY1OGU3NTIxYmE2ZTUwMTIgcmVsZWFzZTMxLW1haW50Cis4MTk3NiA5OWI4MGMyODhmYWM0NWVlZDBmODIzZTY3MmVlNmI3NWM1ZDVlMjI1IHB5M2stY2RlY2ltYWwKKzgxOTc3IDkyYjhiNjc4NDRlMTAxN2Q2NmU2OWY4M2U2NzhhODZiM2E0ODAwODggcHkzay1jZGVjaW1hbAorODE5NzggODY3Yjk3NmUzNDlkYWQyMzk5N2E4NzgxNTUwMGIxM2RhZmU3ZWMxYiBweTNrLWNkZWNpbWFsCis4MTk3OSAwNzIzZWUxOTU0N2I5NTYxNWMwNmRjMTE1NDU3YzcyYzNiMDVhYTUyIHB5M2stY2RlY2ltYWwKKzgxOTgwIGQ3OGIxNTgwODcxMGE3ZDY3NWQ4YmFmOTQxMjIzOGUwMWZhY2YxMzkgcHkzay1jZGVjaW1hbAorODE5ODEgYjc4YTkxOGI3YTBlYzY0YmU4OWMyYzhkYWNkZjBmYTk1YWFjMTZkNSBweTNrCis4MTk4NCA5YmU2MGMxODUwMzJhNjVlMjJhNTk2MTg5NDgyYjQ3NzI3YzdkMDFlIGxlZ2FjeS10cnVuaworODE5ODggZWY1ZGU1NmYyNGM2NGNkZTA2MDRiM2Y3MTE0NWYzMzdiMjIyNWYwMSBweTNrCis4MTk4OSA2MjNiNzM4MTE2ZDI0MmYwYmJjYmZiZGM1ZDU5MTZlN2EzMjBmMzNjIHB5M2sKKzgxOTkwIDk1YjVjYTI0NjhjYzYwYTJjZDI0NjRiM2UzMzc5OTVkMjFmNDcxYzYgcHkzaworODE5OTEgYTU3ZDU5Y2NjYjhmYTVjZWIyYTNhMjNkMzE1Nzk4MTNlMDFhNjMzMSBsZWdhY3ktdHJ1bmsKKzgxOTkyIDZmOWIwYzI0MDE5MWRmNzNjMmYxMDU3YjE5NjIxNmI2MGU5MmRkMGYgbGVnYWN5LXRydW5rCis4MTk5MyA4ZjNmY2MyMzk3ODFiNzY0YzM1MTNiMWFmZmFhMGRmOGIwOGUzMWNiIHJlbGVhc2UyNi1tYWludAorODE5OTQgMGViYzcyZTM2NmExZDk2ZmI4ZThjYzY5NTVmNzI4OGE5ZTg0Y2NhZCBweTNrCis4MTk5NSA3YWMwZjY3ZWJiYmE4OTRiY2Q5YjBiNjVmYTkzYTYzNjdiNmZiNTg2IHJlbGVhc2UzMS1tYWludAorODE5OTYgOTFiYjU3MmI3NTZlMDZkNDc2ZDZiZGEwMGIwNGZjOGU5ODA2MzM1NiByZWxlYXNlMzEtbWFpbnQKKzgxOTk3IDNlYTY2ZTNhMTI5YTRmOTdiM2I3YzZjNDg1ZTcyN2RkNDVjYzA0ODggcHkzay1jZGVjaW1hbAorODE5OTkgZTQzYWI1MmI1N2IyMzQzOWU5ODhlY2YzNGI0ZDc1ZThhNTBjNTIzYiBweTNrCis4MjAwMCAzMmM0ZmZmNDQ1YWQyY2ZmZjA5N2FjOGZlNGYzMzlhNTMyNTBmMTgzIHB5M2sKKzgyMDAxIDQ5ZGQ1OTkxNTBjYTcxNWMyMWUwYTc5YWFjYWQ2OWM2ZmU5MTY0NWEgcHkzaworODIwMDIgZmE4OTc3MzI0ZWQ4NjcwYWIwYWUxN2Y1OWMyZjE5MzI1NGFjMzc4YSByZWxlYXNlMzEtbWFpbnQKKzgyMDAzIGYxOWFlNWNlYzhjZTc5ZjE2MDVmOTNiYjFiNWY1NjNkOGFiODBiM2IgcHkzaworODIwMDQgMzU0Yjc1MWU0NmQ2MWNiNzFmNTk0MGIwMDg4NjI0OGFhZWE3NWRkNiBweTNrCis4MjAwNSAzNTZkMGVhOGVhMzQ3ZjBkN2QwYWRhYTc2NTE2YTI1ZTZjNmM5OWYwIHB5M2sKKzgyMDA2IDI0NjZhZmVkNmY1ZWNlNjllMTUzYmE2M2Q3MmVhZDdlOGMwZTM1MTEgcHkzay1jZGVjaW1hbAorODIwMDcgYjg0ODg3Mzk4NzllYzk4YTUwMTMzZTE3OGRlNzRiNDBkZjhlMmMyZiByZWxlYXNlMjYtbWFpbnQKKzgyMDA4IDgxODU1Y2VkYzE1NmY1OThjYjY5MzhkN2Q4YWU1ODViNTFlMDc3NjggcHkzaworODIwMDkgNDhmNTg1OTc2MGVmNGEzYmIyODVmNmI3ZTZmODNlNzkxNTQzMzU1NiByZWxlYXNlMzEtbWFpbnQKKzgyMDEwIDhhODdjNWFmYWRkYWJlMzE1ODY2MTBjZDY5NWZhNDgxYmUxMTA3NGUgcmVsZWFzZTI2LW1haW50Cis4MjAxMSA1ODQxMzY3NmJlZmI2NGJjMzA5NDdhN2U5MjRiZmI1ZWNhMmQzYzUyIHB5M2sKKzgyMDEyIDIyZWE2OTZhYTc3YWM2M2U1M2QyMmI2Y2RkNDQzNDkxYzMwMTRlZWMgcmVsZWFzZTMxLW1haW50Cis4MjAxMyA3YmM4MWY4NTM1ZWE0MTYwNGI0ZmQ5YTk3ODk1MDg2ZGNiMzQ3M2M3IHJlbGVhc2UyNi1tYWludAorODIwMTQgYWRiOGM4MWNjMzlhNDRmMTMwMmY0ODkyNTZiNDYzYmFjYjlmZjUyNyBweTNrCis4MjAxNSA5ZGM4NGM0MjRlNDEzNjU3YWY4N2YzODc5MTZjZDQ3NWI0NmVlZjBkIHB5M2sKKzgyMDE2IDQyMmExODNlMGJiZGNjNzJhODA2NWQzODFlOTY0YjU3OGQ3ODBjMzMgcmVsZWFzZTMxLW1haW50Cis4MjAxNyAwMDMwYTc0NzA2NjYwMTE2YmRiMmQzY2MwNTRlOTdmMGRkZTRiYjJlIHJlbGVhc2UyNi1tYWludAorODIwMTggODRmZWZiZjFkNmMwODBiMmIxNTEzMWMyZjg0ZWI5NDk2MjUwZTZlMyBsZWdhY3ktdHJ1bmsKKzgyMDE5IGU3NTM1NjJjYzAyM2MwM2YxYWFhMzUwODI0YjA1NWNjZWUxMTRiYzggcmVsZWFzZTMxLW1haW50Cis4MjAyMCBjNDFjYjQ4NGYwOTA2Y2UwZjZjMzc2NTM5ZGE3MzZlNDM1ZTBjMTJhIHJlbGVhc2UyNi1tYWludAorODIwMjEgZDMwZjZjNTlmODEwNzU3NjkxZjUzYWUwZDlhZDkwN2I1NzI3OTE3MSBweTNrLWppdAorODIwMjIgZDMzNzdlYmQzZWU1NGZmZDc3ZmFhYmYyNTEwYTZhMjFjMGE2MDM4NiBweTNrCis4MjAyMyBiNDIzNzcwM2EwY2M1MTQxMWZlZWFmMDc5Y2M0OWZkMzFkYjY4ZTQxIHJlbGVhc2UzMS1tYWludAorODIwMjQgODExMzVjY2Y1ZjU1ZTNlMjBkZjZmYTlkNTBlMzc1ZTcyNzM5YTVhYSBweTNrLWR0b2EKKzgyMDI1IDU1ZTI0YzI0M2UyZjFhODdjYjljMDRhYWYzMDZjYWIzOWI3Mjc0NjYgcHkzay1kdG9hCis4MjAyNiBjNjg0NWU4MzA4NmY1ZjgzMTU4OTc4NGZkMmQ0OTA5YzE5YzZhZWYxIGxlZ2FjeS10cnVuaworODIwMjcgZGEzYzQ3OTRkNmRkNmM1MTk5NzZmOTg0ZWNmYTZjOTc2ZjJhMTg2YiByZWxlYXNlMjYtbWFpbnQKKzgyMDI4IDM0NmNlMjU1YTUyZmVmMWRlZTFjNmFmMWJjNDJkNzg1ZDJjYjA1YzQgcHkzaworODIwMjkgZTRkNTA2NDBmMDc3N2M0Nzg2ZjYxNDNiYmNkNDdiY2EwMTAzOTZjOCByZWxlYXNlMzEtbWFpbnQKKzgyMDMwIDczNTc4MmEyNzVmNTBhODU0YzdiNTE4YjZkYzU5MTJlMzY3ZGJmYmUgcHkzay1qaXQKKzgyMDMxIGYzNDEzNTUzZjhmNWVhMWEyNjkyYmRkNzY4NzU3Mjk2NjJmNDRiYTcgcHkzay1kdG9hCis4MjAzMiA4NTYyNzY5NTJlMDg2Mzk3YTUwNTdkMjY3ZDRiNTIyNGQzY2E1MTljIHB5M2stZHRvYQorODIwMzMgYmNjMGE5OTdmMzIxZmNhZTFkNGUxNDExNzVjZWRmNjU2ZmIxMzY3MCByZWxlYXNlMzEtbWFpbnQKKzgyMDM0IDZkM2IwNWE0MjliNWFjYTVlMmY1MGZjNDQxOWFlNjgwY2NhNzdiZTUgcHkzaworODIwMzUgMmRkMWZlNzA0N2ZmZDlmZDc2NmFmYmY1YWZiMjE2ODg2MjRmYTkyMCBweTNrCis4MjAzNiAxYjA4YTU0MTU1MWFhZDg2N2VjNTlmOGI0Y2FhYjMyZTRmZGFkOTAxIHJlbGVhc2UzMS1tYWludAorODIwMzcgMjgzZDk0NzJkZjRlZDNiN2E1YmY4MDA0ZjRmMWQ2ZTFiODMwMDk1ZiBweTNrCis4MjAzOCA4MDdjZGVhNDc4MTdiYmU3ODJlNzg2NzE0YTEyZDg5ZjhkMWFjOTI4IHB5M2sKKzgyMDM5IDAxN2U2MGFlNjA1ZjRiZTFlMjEzNjUyYWUwMTUzOTA5NWI1ZjJlNDUgbGVnYWN5LXRydW5rCis4MjA0MCBmNTg4OWYyYWMzOWJiMzhlMjI2OTA1MWQzMjU2MDlkM2JmOThmMzQ1IHJlbGVhc2UyNi1tYWludAorODIwNDEgMmJiMGEyN2EzZTM1YzQyN2NhMGZmYjM3MjU4OTM4YTcxZGI4ZTRmOCBweTNrCis4MjA0MiA4Y2MwZTFjOWJhNmQ2MDlmYjhhNTM1YjczZDA3YTM4MjVjYzFhYmU4IHJlbGVhc2UzMS1tYWludAorODIwNDMgY2I0OTk3YjZhYThiZTY5OGI5ZmE4OTM5ZDE1YWFlMmY3Y2E1NmIzZiBweTNrCis4MjA0NCAyY2MwOWYwNjk1MGIwNDgyNWUyMzc2ZTNlMTBhZjgzNTQ1NTUyNzdhIHJlbGVhc2UzMS1tYWludAorODIwNDUgNGQyNTYzOWEzYjE0YmQ2YmNlMmQ4ZmM0ODBlMDBhNmExZWRkOTNlYyBweTNrCis4MjA0NiBiMWQ2Y2NhZDhlYWQ2NjY2NGYwNmIwYjk3ODliNDgwZDA3YWFiNGUyIHJlbGVhc2UzMS1tYWludAorODIwNDcgODRlZDM0NDZhMjlhMWI4MzBmNmJhZTdkMGFmMzYwZDU3YTE5YzUyMCBsZWdhY3ktdHJ1bmsKKzgyMDQ4IDE3NjRlMGJlNDg0YzZjODJmNDAwYzlhMjZiMzVhODI1MzdkNWRhOWQgcmVsZWFzZTI2LW1haW50Cis4MjA0OSAyZmUwODAyYzQyYzc0NWRjZTcyYzVmZTA3ODA1ZjFmMzBiNjIzMDdiIHB5M2sKKzgyMDUwIGMyZTczZDg0NGQ4MjJiZDMyZTg0ZGRiYWE5MzBkOWI1OGJiNjZlYzggcmVsZWFzZTMxLW1haW50Cis4MjA1MSBjNDhkZGM5NmY0NTRhZTI4YjQyZmI4NjU3YmJlNWM1NzE1ZmU1ZDhjIHB5M2sKKzgyMDUyIDZiZmRjZDI1ZWVhNzBkZjAzZTNjYjEzMjZkZThjMzAwYWExNDg2NTIgcmVsZWFzZTMxLW1haW50Cis4MjA1MyA1YzBkOGMyODRjMzJkYzhlN2EwMjY5M2YyOTJkOGJlMGU2MTg3NWQ3IHB5M2sKKzgyMDU0IDZhOTk5MGVmNGE2ZjVlOTczMmEzOThiMWRhYjI3ZDgzMzkxYzMwY2EgcmVsZWFzZTMxLW1haW50Cis4MjA1NSA0NmFiNWU0ZGJhNmJhYzdkMWU3YmIyMGRiY2ZlMDAwNWUyOGE2NjNiIHB5M2sKKzgyMDU2IDFkYTc3MzNlOGYyNDczMWEwYjg4ZGJkNjkwNzgwNGNhMDJhMTFkYzMgbGVnYWN5LXRydW5rCis4MjA1NyBmM2RkOTMwNjY1YmQxNzkzNjMwODgxMzMwNGEyYzQwODRjNWJiMDkxIHB5M2sKKzgyMDU4IGRhMWFhZmE1NWFlMDIzOWVlNTI2ZmVjODRhNGM0MDQyNjZhMTMxY2QgcmVsZWFzZTMxLW1haW50Cis4MjA1OSA5MDdmNTY0NDc2YmU2NjllYmVhZWQ0MThlZmVhZDJlYmU2MGJmY2FjIHB5M2sKKzgyMDYwIDU5YzYwYTU5YjI3YTU3ZTdjNGUxNjJiNmJlZDI2NGRmMDJjNmZkYjYgcmVsZWFzZTMxLW1haW50Cis4MjA2MSA5ZDRkNGFjMGE3YmZlODExNzRhZjRkMDExNWVjZmQwZDRhNmFjMTkwIHB5M2sKKzgyMDYyIDA3NDQ5YjM2NzkzNTdkYjJlZWE5NmE4MzAyZGY4N2MwM2NiYTViNWMgcmVsZWFzZTMxLW1haW50Cis4MjA2MyBmYTgzMDM3MWM3MjQxNzRmYmExYjUzYTA5OTFmMGEzZDUxOGQyMTA2IHJlbGVhc2UzMS1tYWludAorODIwNjggNGQ2OWJkYjcxYzlhZDUxY2RjNjg2OTY0NTI2YzI1NmRiZjI3OGQzZCBweTNrCis4MjA2OSA0NjM1NjI2N2NlOGZiYjU5ZDliMDY3NTI4ODU3ZGE4MTAyZmFkNWE2IHJlbGVhc2UzMS1tYWludAorODIwNzAgZTVmNTAwOGZkNTZkNTBmNDk4MDNiNWU1ZGIyZjg5YmI3MGI5MjgzNyBweTNrCis4MjA3MSBiZjk0ZWI4ZmFmNjI1MzdmZDc0NDZiZTQzZDg5YzliMjJiMzUzNWU2IHB5M2sKKzgyMDcyIGVhMjUxMjliOTRmZWVjNTAwOTg0ODJjNGVmYTgyNWVkNzFkNTM2NTYgcmVsZWFzZTMxLW1haW50Cis4MjA3MyA5MGNjMjY2Nzk4YTI0ZmM1MGMxNWI3NjIxYzFiMzQ4NDg5MjAxMTY0IHB5M2sKKzgyMDc0IGM1NGRkNTc2ZGQwNTU0ODJmMWNjMTczMDQ0Y2U3ZWQwZDU4ZDYzNjEgcmVsZWFzZTMxLW1haW50Cis4MjA3NSBkYTU1ODQ2MWQ5YTk0YmI3ZWU5ZTc5ZmNjMmJjMGUyNGZlOGFlNzA4IGxlZ2FjeS10cnVuaworODIwNzYgZWY4YTJhYjI2ZTlmZWZlZmIzOWY1N2Y5ZmMzMjBhZjhmYjk0Yzk4MSBweTNrCis4MjA3NyAxZjBlMDc4MWY3M2U0NjFiMWE1OTkwYjE1YjFlYjU5Zjg5ZjM5ODE5IHJlbGVhc2UyNi1tYWludAorODIwNzggNWRlNTJlYjI1MmRhNzA2ZGEzZjY5NTRkNTBlMWU4NGE3YzEzYzBmOSByZWxlYXNlMzEtbWFpbnQKKzgyMDc5IGRkNzAwNTE0NWY2ZTY1ZjIzNmVhYjVmMjA4NTg3OTkzYjJiM2QzY2IgcHkzay1kdG9hCis4MjA4MCAxOGJjZjZjMmQxZTM3YjI4MTgxNGY0NDQwNTk0ZDhiYjdlYmQzNWE4IHB5M2stZHRvYQorODIwODEgZjY3NjdkZGU5YjI5ODliODdmZjA2MzE2NjBjN2E3OTY4NmE0ZTI1YyBweTNrLWR0b2EKKzgyMDgyIGI0YTVhODY5ZTFjNTlkOGFmMzU5OTlhMjY2ZThlZGJjODhhNjc3ZmMgcHkzay1kdG9hCis4MjA4NCAzYWZjN2Q4YTQ0NWFhNWFjOTVmMjE3YzUzODdjNjM3OWI1YzU3NTVkIHB5M2sKKzgyMDg1IDBkYTRjN2QxZjNlZjIzM2U1YTM0M2U2NGZkNWMyOTQ5ZGRkNTc3M2UgcmVsZWFzZTMxLW1haW50Cis4MjA4NiBiOTAxOWYwZGQ4OWQzZTE3NjkxMjUyZDEyOGYxMGE4MzVmMTBiZGFlIHB5M2stZHRvYQorODIwODcgNDI5YjMyOWEwM2Y4MzM0YTYyOGNhZGNmMmUzYTYzM2QxMDBmMmE0OSBweTNrLWR0b2EKKzgyMDg4IDM0MzAwNWM0YTRlM2Y1ZTFlMWRhMDY5OTk2MjY3MmFjNmY3MjIxNDQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDg5IDQ0NmE5NjY4NThmMTQ4MWU3MDQ3YmYwMjdlYzI3NmU0NWI3MjJlZmEgcHkzaworODIwOTAgYzRmNWM3MzRkYTZlNGMxMzdhZDA2MjY5MzNhMDA4NzZjNTk4NDhjMiBweTNrCis4MjA5MSA1YTI4YzZjYjQ3NTI3YjlkNDc3OTNmZWJkOGZhZTA4ZDczNDkzNTM1IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5MiAwNjk1MzVlNTBhOWU0ZmRkNGRmMGRiNmJkZTZmZjkxMjU1ZjU5Y2M1IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5MyA0NjZjMTYyYzczMGMyMGNkNGRjNzZkMzRkZGFhYmU0ZjJmOWE2NzMzIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NCA4OWE0MmUwNzEzZGRiOWVlYjA5ZGY1MDEzMGIzYWJiY2I5ODQ5ZmUyIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NSBlZDA3NzQwYzc2NjdhZmY5ZTlhNzBmYTU1MWMwNTMxMWU3OTljOWRlIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NiA4ODBiZGU1YWI3YzU0MzQ1MzFjZDRkMzI2NzhiYzdlN2ZiNDYwMjBkIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5NyBhYzVmNTUzN2M3M2I2ZGU0NzU0Y2U5MTRlMGNiN2QxOGQyOTQwZjVlIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5OCA4MGQ0ODAwNzc0MzM5ZWViNTJiZjY5YWQ2Yzc2M2FmZThmNmJlNzY2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA5OSBmNzNmYTM1ZjZmMDVkZTQ1YjVkYTY4MWRmMDkzNTMzZTRjOTQwNjU0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMCAzNWY4MDE1MjYyNzhkNGE0ZDI2OGEyNmRmN2M2OGNjYjAxZmI0OGU5IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMSA1Y2ZlMDVmMmE0ZTljNTZhYzBjYTM2MjAzODU1NWQ1MDMyY2Y5ZjJkIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMiBjZWMxYjU1ODQ1MTdiMDk3NTI3ZTM0YzgyNTk1ZDY5NzQ5MzJmNWQ3IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwMyA4MDYxM2RjZjgwOTEwZDZkMGJhZTM5NzI5NTNlMDA1MzcxY2IxODA3IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNCA0ODNmMzYyYjhlYzMwNDM4MzJhNjExN2Y0NDVhNTAzZTg2NWE5NzAwIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNSAzMDYzMzZhMWNlMjkxMTcwYWUzODA0MzY0ZTRmZmUxNmZmYmJjN2E2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNiBhNTZmYWE2YjhmYTAyZmQ2NjQ5YzExOWU2NWU1YmY5ZjY3ZTE4YjZiIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwNyAxOTkxYTlhYWZmNWUzOTg1MTUyMjdlMjM1NDU2YzYyZTIwNzNlNjNhIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwOCBiNjE0NjQ3YTM0MDA1MmI3MTczZTAxMzQ1ZTI2ZGJhNWFiNTZhOGE5IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEwOSBlYmFjMmViNzI1NWI2NTUzYjFlNzNkN2RkOGJhNTk5YTYwODQ4OGI4IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjExMiA5Mzg5NmEwOTQ2YzJlZjU4NGE5N2M1M2RmMDU5NDg4NjNhNzIyYjA3IGxlZ2FjeS10cnVuaworODIxMTMgNWM4NGZjYzFkOTA2ZWFlYzliNWZkNDAwMzVkN2I1MTkyMzE5ZjBjYyBweTNrCis4MjExNCA2ZDk3NDZjZDkzNWM2MGQ3ZjU5Nzc0ZjUyZTI0ZDgwMDhmOGJlYWU1IHB5M2sKKzgyMTE1IDY1NGU1M2U3NWNkMmIwMmNhYzM4MDA3MTE3MjFlNzcxZDBiOWU1NTMgcHkzaworODIxMTcgZWUzNWY3MTU2NzYxMmIxZTU5NzhkNWNhZjJiZTQwOTIzZmM0ZTU3ZiBsZWdhY3ktdHJ1bmsKKzgyMTE4IGM5MTUzOGMxYTdlNmMwNzc4ODA4ZDk5ODU4YzU3NzMwMjExOTQ3NzEgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTE5IDZhY2RkYjVmZThlMjFiZTZkYWMwODk1OGQ3MzAyNTliZjg4N2EwNDIgcHkzaworODIxMjAgYmRlZjQ1NGY3MjEyYThiYWJlMDBkZjZjOWQ5MWM1NzczOWVlNTNjOCBsZWdhY3ktdHJ1bmsKKzgyMTIxIDkyMzczNTEzNzAzMGYyYzRjOTA3MTI5YjEzN2QxNzgxMzFiZTg0OTYgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTIyIDNmMDljYzM4ZTk3ZTMwY2UzMzQxZGEzNWEyYTI3OTA4NWUxYTNmOWIgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTIzIDk2NWE0NGMyYjI5N2I5YjZjZTJjODc0MGViMTgxMDNmZGE5NmRkYTQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTI0IDUzZDNkMDY4YmY0YzRiOWU3MjBkZWE4ZTVmMWE3OGE4YTIxODVjY2EgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTI1IDk4NjNiYzg2MzBhMzlkZDczYWE2ZTdkNjhiZjVkZWYyNjgzNmJiNzcgcHkzaworODIxMjYgY2UyMWViNWMxN2E1ZjMwM2NjMjc5YjA1NGM0MDRmN2Y3MDI4NWFkYSBsZWdhY3ktdHJ1bmsKKzgyMTI3IGQwMTRkMWY2NTgyMzE5NWMxMWFmYzMxYTJlYTY3ZGIyZWM1ZmRlOWEgbGVnYWN5LXRydW5rCis4MjEyOCBkZDg4MDU3YjI3YjFjZDlmNWJlOWJkZjFhYTQyNWJhZGRhMWIzOTg5IHB5M2sKKzgyMTI5IGYzZDQ1YzQ0M2IxMzc5ZTE4YmY3ZDhiNjg3MmZkMjBhNzI3Njg3MTcgcmVsZWFzZTMxLW1haW50Cis4MjEzMCAxYTg2ZDg0NWZiYzZmMzk0YWRkNmE0MjBjMjdmOThhODI1MGJjYjVkIGxlZ2FjeS10cnVuaworODIxMzEgNzNmOGZhY2EyOTBiZmViNjQwY2NmYmU0MWViNjg2YzAyNTI1OWVmNyBweTNrCis4MjEzMiBhMTAxZDA3M2E1Y2QxZmJjNDU0ZmNiNWMyZjA1NTVkNTY2NWU5Y2Q1IHJlbGVhc2UyNi1tYWludAorODIxMzMgMWFmOTU2NzQ1ODhkMWQzYWUyY2E4ODVlZDAzMjE2MGY4OTVlMmI4MyByZWxlYXNlMzEtbWFpbnQKKzgyMTM2IDU4MTczOTVhMDQ4ZTVmZjE0ZmM4NTE0NzcwNmVmYmY2MDVmNTA3ZmEgbGVnYWN5LXRydW5rCis4MjEzNyAxM2U1YjBiMjA3MWEyYTQyMDY3ZmIwM2ZhY2M5MzE0MDlmYTZiYTUwIGxlZ2FjeS10cnVuaworODIxMzggN2U0Y2Q3MDNhMThiNzMzM2U4ODdiNTVjOTU3MTA0MDkyMWM3MjlkOSBweTNrCis4MjEzOSAxZjEwYzkxMmMxMjdmYzMwZGY5ZmU2MzIyMTZjZGZmMDU4ZjkxZGZjIGxlZ2FjeS10cnVuaworODIxNDAgZGFhOTE4ODhkYTUyYTM5NjYzNTk0ZDQxYjBiZjM3ODE5YTI5MjBiNyByZWxlYXNlMzEtbWFpbnQKKzgyMTQxIGYyNjhjMmFlMDgzNWY0MjRiM2IwN2RkZTljOTRjYzU0MTdjM2UwMjIgcmVsZWFzZTMxLW1haW50Cis4MjE0MiBhZjc1MWExZDZmNDQ5NDdhMjQxNDNhZWM1NWE0YTcwNzc5MjM4YWU4IGxlZ2FjeS10cnVuaworODIxNDYgMGNkOTlmOGMzMGUxMzkwMDA4YTk1ZTE0MGM2NGMyOTY0ODkwNGI4ZiBweTNrCis4MjE0NyAwYWZkNzYwZTdjNzY1MzFiMGRmZDQxYWIzMDA1NWExNDQ4ZjIwZGM0IHJlbGVhc2UzMS1tYWludAorODIxNDggMGI3YWNkYmQwMmViMzQzODQyOTY4Yzc4NTljM2IyZjM3YzVhZmE4OSBweTNrCis4MjE0OSA1YTMyNWUwZjFmZDAxMzU3Zjg0YjU4YjVlZWUxNTM2NGM0MzY3YWIyIGxlZ2FjeS10cnVuaworODIxNTAgNmU1ZDIxZTIyM2QyMjQ4NDE2ZjY4ZWVkMGQ0ZGFlOWNiZWIzZTgzYSBsZWdhY3ktdHJ1bmsKKzgyMTUyIDU2ZWQ2OGMyMTVhNzFmZjk3YTQyZmY1OTY4ZjU2OTUyMmFiM2MwMTEgcHkzaworODIxNTMgNWQzMmI2YWZiNTJlZWVkOTI2NGQ1MjYwNTIzN2Q2MzExNTQzN2VmZCByZWxlYXNlMzEtbWFpbnQKKzgyMTU1IDEwOGY5NGQ1M2VkYmUyYTFkMGFiODMwYjA5MmI0YjE3NGMzYWI4OTggbGVnYWN5LXRydW5rCis4MjE1NiBkOWZjYmE0Y2MxNDU0NWE5YTg0ZTRmZGY3OWY4MGIwMzMyYTRlYTdiIHB5M2sKKzgyMTU3IGY5MThkMzVlYzU2Yjg1Mjg5MDM5NDllNjBmYjAzMDE5OTdhMDFhNDggbGVnYWN5LXRydW5rCis4MjE1OCAzNzZlODFmOWViYjFkMzkxZjdjOWJhMGM2ZDE1NTc2ZDk3NGRiOTYxIHJlbGVhc2UyNi1tYWludAorODIxNTkgOTA2MDYzY2U3MTE5NjU5NTljOTlkYjQ1YmY4NTEwYWQ5M2Y2NzQ4NyBweTNrCis4MjE2MCAxODYzNWNiZDY2ZTBhMzNhZDQyOWU1NTQxYTdmZjcwOTdhMmZmNDY4IGxlZ2FjeS10cnVuaworODIxNjEgZjc4ZmNiMWIyM2Y1YjhlMDAxMDNkYzE2ZTA4MDJiNTFhZTAwN2YzYyBsZWdhY3ktdHJ1bmsKKzgyMTYyIDFjNjk1YzBhYWZmYjQ4YzJkMjI2YzVhYTdmMmUwNDYwZmJjNjUxYWEgcHkzaworODIxNjMgNGUyNGRmZWRmODBjNTFlNTAwOWFhYjk2NDJhZWE2ODg2MWE2NjQ3MCBweTNrCis4MjE2NCBhMTIwNmE2OWU3N2E1M2I5MGNiZDY2Y2EwNGQ0OTJhZjJkMWUwYTNkIHJlbGVhc2UzMS1tYWludAorODIxNjUgNTNhMTUyYjQwMGE3ZTViYzYzYzNlNzI4ZDk4MjQyZWExMmIxYTZiMCBsZWdhY3ktdHJ1bmsKKzgyMTY2IGYxN2EyYzFlMjkxOTI4YzQ2MzcxNmUwMDQ3MTdjOGQ2OWI5ZWIyYzIgcHkzaworODIxNjcgNGRkOGNmZjZiN2JlYjFmNmYxMDNjNGNjZTZlMDhkMDQ2Yjg4MGMxNiBsZWdhY3ktdHJ1bmsKKzgyMTY4IGQxNWJlOGI1YzdjYWQ5NmQ0ZmJmM2QwNmJkMWFhOTBkNTBkNmFhMGYgcHkzaworODIxNjkgZTlmYjA0MmU0NmZiNTAwMDVmNzdlYTE2NDMzZTRmNDE4NWVmNDJkYyBsZWdhY3ktdHJ1bmsKKzgyMTcwIDg4MzZkMjcxNjcwYjZiYjg2NGYxYWIzYzQ0ZDY1MmE5OTIyNjgzNzkgcmVsZWFzZTI2LW1haW50Cis4MjE3MSBlYjk1YWYwYTk5Y2JiMWJhMGFiZjVkYTVhNDE5NmY5NTU2YjNkMzZlIHB5M2sKKzgyMTcyIDI5MDdjZThiZmJiNjAyNzYxN2I5ZmE0MDlmYjYyMDRkYmI4YzY2NmQgcmVsZWFzZTMxLW1haW50Cis4MjE3NyBjYTRmMmU5ODY5YjY3NTJmY2Q5Y2JhYjExMmIxMWQ5MjZkNzdjNmM5IGxlZ2FjeS10cnVuaworODIxNzggNDI2ZWY5YzM3OTE2ZmFmZDNiOGI1ZGE0NjY5NzIxMGU5YjI5ZjZlMiByZWxlYXNlMjYtbWFpbnQKKzgyMTc5IDA3NDg1OWVjZGMxODczMjJkYTk2MjM2N2VmMGQ3YWVlZGI1MTI3MGEgcmVsZWFzZTI2LW1haW50Cis4MjE4MCA3NmJjNmI1NzczNzNjZjU0ZGZlZGQxYjEwYjJmNzRkNDkzNTgzYzdmIHB5M2sKKzgyMTgxIGM4ZDVkMTIwNWZlODMwYTViMWQ2YTQyMDYwMWI2MWJhYmVkMGNhMTYgcHkzaworODIxODIgMGU0NjM3ZWEyMGQwMDEzYTU3MGRjOTEyMDY4ZGM3NDM4NTFjMzg4MCByZWxlYXNlMzEtbWFpbnQKKzgyMTgzIDY2ZWY5YTc3YzhhZmQ1Y2MxODUyYTY3NjIyYWFlMzJlODFhZWFjMDUgbGVnYWN5LXRydW5rCis4MjE4NCAzY2YzNTIzMWY3ZDNlZDM3NWExYTk5ZGZkODViNmZmMGJjNjY2YWY2IHB5M2sKKzgyMTg1IDNhZmUzNjFlZmNmMzhiZjg4NjY1ZWE3MTIzMTc0MGFmN2MxNzdmNWEgcHkzaworODIxODYgY2Y3OTc0MWY3YTIzZmM1NWZlNTAzN2E3NWJhY2YzYTRlYzFjMjc3YyBweTNrCis4MjE4NyA5NWQyMDM1YTE2NGI5YjA1ZTA1NDBkNjZhODM2NTdjMTRjNTExNGRjIHJlbGVhc2UzMS1tYWludAorODIxODggNWY0NTY5MjQ4OWRhMWZkMzU2MWQwNjM5YzY4MDRmM2QxMGRhN2VkZiBsZWdhY3ktdHJ1bmsKKzgyMTg5IGNiMWFiOGU5MTU4MTA3MDg3ZTAxYzNmOWVhMmZlODg1ZTUzYzNlNzkgbGVnYWN5LXRydW5rCis4MjE5MCA2MWZjODRiYzRiMTQ2MjY1ZDBjYzliZDk0NDczNjkzYWUxZGNlMTI3IHB5M2sKKzgyMTkxIGIxN2ZjZGQzOGE1YjQwMmEwYTAxMTliY2I2MGMxMjM3MDkxMTgyNTMgbGVnYWN5LXRydW5rCis4MjE5MiAwZDQyNDU0MTJkMGI1MzNiNTU5OTVlZGEyYTgzNDZmMDNkMjg0MTM4IHJlbGVhc2UyNi1tYWludAorODIxOTMgYzU1MTU3ZTAzYWI5NDNmOThiYjJhNGY0Njk4NjgyNWVmNmJhZmY4MCBweTNrCis4MjE5NCA0NWJhYTQyOWZjNDljY2Q5OTE1YjZkMzIwNDU1MzE2ZWFjOTVhMjdkIHB5M2sKKzgyMTk1IDNkNmYwYTIwNTBlMjkyNmY3MDkzZGEyYjFjZTk1MTI2YmRmYzU1OGQgcmVsZWFzZTMxLW1haW50Cis4MjIwMCA1ZDUzOGQxZTcwOThkOTZhYTFiMTlhYzU1MTAzNjc3ZGExYmFlMDY2IHB5M2sKKzgyMjAxIGEzOWI1MmVlMGIxZDRkOTJlYWI2MmFhOTlkZmFlYzkwM2JkOGY4NDcgcmVsZWFzZTMxLW1haW50Cis4MjIwMiA4OTM5NzAxNDE2MDgyYTI5YmU1MTk0ZjBmNTVkMGY1MTVlNmY2MzQzIHB5M2sKKzgyMjAzIDM0NzQ0YTc2MTQzYThlNjU2ZTFiNjFhN2M5NGYzZDNkNjgyMzNjMTAgcmVsZWFzZTMxLW1haW50Cis4MjIwNCAyMWU4NmRkMzI4ZjE1N2VjNWZjNzMxMWY3NTE5ZDVkM2IzZDk3MjgxIHB5M2sKKzgyMjA1IGI4YjBhMTVmOGE3Y2E0ZTg0MzFiYTlhMGE1M2ViMzg0ZjJmZDMwMjAgcmVsZWFzZTMxLW1haW50Cis4MjIwNiBiYjYyMjJhNGVkMjQyNmU5YzdiZWNjOTg3NWYxYzA5NWIwZTFmYmIyIHB5M2sKKzgyMjA3IDEzYjJhNTkyYzE4NjgzZTJmZGZlMDQ3NmEwODEzYjVhZDBhYmEwMDAgcmVsZWFzZTMxLW1haW50Cis4MjIwOCBiY2MwZTgyNWZhYTBjYTgwZTkzM2E3Mzg0ZGVhOGZjOTQ5MjljMGUxIHB5M2sKKzgyMjA5IGM0ZGQ1YTg4OWVjZGZiNjgzZmQ5NjU4NmVlYzZjMmRhNTBiMzk5NzYgcmVsZWFzZTMxLW1haW50Cis4MjIxMCA0NmI0ODdlNGE3NWI4YzM5ZjA4ODBmZDNjOWM4NjgzYTRjNjNlOTIyIGxlZ2FjeS10cnVuaworODIyMTEgNTcxMTVhYjA2YjI3ODAwNjEzNmRhMzllZjRkYjc3YjRhOTI1YmYzNiBweTNrCis4MjIxMiA1OThlOGRjMThiODNlODlkNmI3MDJjOTQyNWExZmQwYWJiOWNiOTYyIHJlbGVhc2UyNi1tYWludAorODIyMTMgZWY2NDJlMjQwNDdhYjY4MTU2NDhmM2M5ZTJkYzc5YjExMWU3YmEzNSByZWxlYXNlMzEtbWFpbnQKKzgyMjE0IDRlMDk5ZTUwMDRhMWU4MjVjYzI0NGYxMTM3MTE2YTZhNTc4ZDZhNTcgcHkzaworODIyMTUgZDk2YWNjNDFjNTlmMmY0NzdkNGFkYTUxYjRlZGMyMjhkNGRkYTNmOCByZWxlYXNlMzEtbWFpbnQKKzgyMjIwIDY5ZmRmNjhlMGI1YjQ2MDQxMTUyYjIxYjBjMDhlYjk0N2E1ZTA3MTUgcHkzaworODIyMjEgYmE1NTg0NGJmNWMwMzE0YjY5NTUzZjFiYjczN2IyNmViOTQ3NmM4YyBsZWdhY3ktdHJ1bmsKKzgyMjIyIDgzY2EwZWE5ZWYxZmIyMTZjYWZjZjUwZTVlNmFiYmUwZGY2YTY0ZDAgcmVsZWFzZTI2LW1haW50Cis4MjIyMyAxYzVjMTQ2ZGU2NDI1ZDAwZTA5ZDBhYzgzNWI5ZjBkOWQ1ZTVmODIzIHB5M2sKKzgyMjI0IDBjODc0OTA3NjdiZjFjNTE2NzkyNjM2Y2M3YWUyMTc0ZjgwNmM5MDEgcmVsZWFzZTMxLW1haW50Cis4MjIyNSBiNjYzY2Y2YmJlOGIzNzFjYmM0YjEwNmQ4ZmFlOTYxNzQ5MjZkOTUzIGxlZ2FjeS10cnVuaworODIyMjYgMDllYjM2MjZkMmFhZTgxMWQ2ZTQzYjMwZWNlZTM5MzNkMzdhNTc4YiBweTNrCis4MjIyNyAzZDMxMDhhYzIyYjJjNmU1Njg1NTE5NzA2YTY4ZGE1MDkyMWI5Y2Y3IGxlZ2FjeS10cnVuaworODIyMjggMmNkMjIyNTdhODZkN2I4MDY5YTYzMGU0YTYwNGQwNmU5ZTVkY2U5ZCBweTNrCis4MjIyOSBhMzRmZDZmODE2NTE3OWJmYTM1MmZkZjFlMWE4YmJlODAwNDdiOWYwIGxlZ2FjeS10cnVuaworODIyMzAgZTI0OTkwZDA1NDRmZmZmOWYyNGE2NzZhY2E1MGFjNWE5YTExZjE0MSBweTNrCis4MjIzMSBmMjMyYzU2OWQyMjVkN2MxNDcwZDI2YzZjMDFhNWFkN2E1YzhjZWExIHB5M2sKKzgyMjMyIGM1MWJmMzE1M2YyY2E4OWI0MGE4OGI2MDRiMjhjMGFmMTM0ZjMyYmMgcHkzaworODIyMzMgMWJhMGFiMDJlM2I4NTcwNzM0MWFhZmYxMjIzN2RlZmQzMjdjYjJmOSBsZWdhY3ktdHJ1bmsKKzgyMjM0IGNiNmQ5YmQ1NTllZmQzYWQzMzZlNTk0ODU1Y2VhMWE5ZjQ0ZWVhOGQgcHkzaworODIyMzUgYTQ1NmIwMGMzYjc1M2JkZDk2NWVlNzg1ODE3YmMwMGE1NzViNDc3MCByZWxlYXNlMzEtbWFpbnQKKzgyMjM2IDdkY2NlNmEyODFjZTJiZjZhNWQ0N2U4OTk5ZjBlOTM0MjBjZDcyZGYgbGVnYWN5LXRydW5rCis4MjIzNyAxNTJiNDQ2NDJiMmM0MTdlYjZhZTJhYjAyNGQzZmU2ZmZjZmU0MzE4IHJlbGVhc2UyNi1tYWludAorODIyMzggNGFmZWYyZTQwYjYzMzI0OWJkNjBjMzY1NmI0ZWU1M2Y2NmFlYTFkZSBweTNrCis4MjIzOSAyMTU1MmE0OGViZDE5NjhkYjkxNThjNDk1ZmU0OWJlNTc3MGE1MzI0IHJlbGVhc2UzMS1tYWludAorODIyNDIgMmY2ZmVkNjA2MTNlMTJjOGU5MjExMzM0MGVjNmFjNWMxYjBmNDdjYSBsZWdhY3ktdHJ1bmsKKzgyMjQzIDdiMDRkOWE2OThhZWU2NzZjMmIwNThkYmU5YmEyNTQ3NjNmMTNmNTYgcmVsZWFzZTI2LW1haW50Cis4MjI0NCBkMTcxMjc2ZWQ3NmRhNzIzMzRiNzgwMDYyZmQyYWZkZDE1ZTNkMjIwIHB5M2sKKzgyMjQ1IDFkY2FlNTJjNDk1Yzg0NmMxY2ZjZDZkOGRiOWQxMTMyYjQ0NTQ5NzQgcmVsZWFzZTMxLW1haW50Cis4MjI0NiAyOWU1MDk3OTNkM2M0ODE4YThmMGM1NzBiZjY5NWQ5MDUzNTVhNDhiIGxlZ2FjeS10cnVuaworODIyNDcgYWRhZmVlOTU4OWU0NDI5YWRhYjA3ZmYyY2NhNTFmZjBiZDMwY2MxMiBweTNrCis4MjI0OCBlZDg5YjFhYWRjOTNkMmQxZGE3OTA4OTM1NTg5MzgzYTQwZDQ3MjlmIGxlZ2FjeS10cnVuaworODIyNDkgYzkxMmI1YjI0YzhmMmQxYjI0YTcwNzQ1ZjMyNmExODRjNzA5YzM5YiByZWxlYXNlMjYtbWFpbnQKKzgyMjUwIDAxNGU3YzAwZGMyODA1ODMxZjJlZjI0ZjE0Njk5YWQyNWJlMWM3ZTUgcmVsZWFzZTI2LW1haW50Cis4MjI1MSAzOTZlYjY2MGVlOWI0MGJkOWVmMjU4NTJmNTAyMzA3ZWZlNmYzYmUwIGxlZ2FjeS10cnVuaworODIyNTIgMzUyZGRhMDc3MDdiZjkyOGQzZGI5ZTljZTRjOGQ4ZjFjYmQ4ZmQyMSBweTNrCis4MjI1MyBhMzljZWI2Y2VkZTMxNWQ4MzM1ODIzMzc3ZDJhYjMyNWEyMDQ5NmM2IHJlbGVhc2UzMS1tYWludAorODIyNTQgNDU2ZDZjNWQyNmRjNmU2ZTVlZjY1OTY3NTAxYTIwZDY1OGFmMzRjZCByZWxlYXNlMjYtbWFpbnQKKzgyMjU1IDdmZDNmNmVhZjY0OTVjMzA3ZGViNDU5NjgzMzA4N2MxZWFiY2RjMjMgcHkzaworODIyNTYgNzA2Njg4ZmU0NTkzNTY3M2Y5NTM0NDhiNzhhN2IyMmNmY2MzMTVmNyByZWxlYXNlMzEtbWFpbnQKKzgyMjU3IDVmYjNmMWE3NDcyNmE2YjgzZDlhYWI0ZGMwNzNmODFmZTEyMTViNzMgcmVsZWFzZTI2LW1haW50Cis4MjI1OCBmNmQ1ZWE3NjkyNzI3OTYzNDMxODMwMjllNDJmOTY0MjY3ZmMwMzgwIHJlbGVhc2UzMS1tYWludAorODIyNTkgZTQ3NTM4NTVlYzAxYmJlNTE2MTQ3MjI3YjUxN2Y3Zjg2NTFhNTkzNSBweTNrCis4MjI2MiA2ZWE2ZDg1MTUwYjEyYjgxYjc5MzQ4YTkxMzhlNDZhOGE5OWY4YTQ0IHB5M2sKKzgyMjYzIDU0N2U2NWRiNGQzODgyZWZlYjk5MzM3ZGNjMjRmZDllNWQyZjk4NDggcHkzaworODIyNjQgNmI0NTQzNzdhZmZlZDU4Zjc3N2Q1MDYwY2RiZDhhYTUzYWM4MzUyNiBsZWdhY3ktdHJ1bmsKKzgyMjY1IDgxNTI4NGM5ZDcxOTE1NGRhMzc5MzIwYTExYWRhOWRmMDExOTNjNGIgbGVnYWN5LXRydW5rCis4MjI2NiA2NzZhNDgwZWZjMDhjYmRhNGNlODU3Yjk1MTc4ZWI4OTI3YWMyZjQzIGxlZ2FjeS10cnVuaworODIyNjcgZjc5YmU3OTgxMzBmMmIxY2ZjODViMmZiZjg5MWFlNjgzZGE2ZDhhNiBsZWdhY3ktdHJ1bmsKKzgyMjY4IGVlMWVkODBkNzk2MzM5MTc5NWNjMjUxNTdiNGUzMjg2MGRmODAwNmIgcmVsZWFzZTMxLW1haW50Cis4MjI2OSAxYTNkOGVjMGM1ZmE4YWI2NWRlZTE1NTRiNDNkOTg3MDA2NjU2NmE4IHB5M2sKKzgyMjcwIDViMzhiNTIzNGRlZGI3MmFkYzc0NmQ1MjY4NDRhZDc1MWQzNmMwMGYgcHkzaworODIyNzEgMDI4NDJlY2Q4ZTViOTRhZGE4YmFjM2JkNjIyOTNhZmM1N2VkN2Y3ZSBsZWdhY3ktdHJ1bmsKKzgyMjcyIGEzZGQzOWUzNmM5ZGYxOWM2MDBmZjVmODFhOWZjZDNkMmQ0M2Q3YjggbGVnYWN5LXRydW5rCis4MjI3MyBmMTE3NGU3OWY3ZjQzZTc1OTdmNmI3M2M1MTMzZmEwMzExNDQ5YTAwIHB5M2sKKzgyMjc0IGQzYzc1YzJmNDZiZTI2YmJjNjllZjA5ZmMyZjY4MWFiMWIzNGY2OTEgcmVsZWFzZTI2LW1haW50Cis4MjI3NSAwMjA0NDU3M2VlZWMxZWFhMzNjM2FhNDY3MzBiOGY1OWY0M2NhMDc0IHJlbGVhc2UzMS1tYWludAorODIyNzYgNmIwMzEyNDkzNzU1OWU3MDliNGQ4MmVhMWE3ZGE4Y2IxZDk2NzNkYiBsZWdhY3ktdHJ1bmsKKzgyMjc3IGM1MDU2MzgyNDA5NDQ0OWE3ODAyOTU0ZDk2NTcyYTc5NGFhN2E0YmYgcmVsZWFzZTI2LW1haW50Cis4MjI3OCBjODhmNzYwMGJiMTdiYWU3MDg1ODE2ZTA0NGViNDFjM2Q2YzdhZDliIHB5M2sKKzgyMjc5IGY1MDVkZjAzYTdkN2NiZjczOTYxMmQ3MjQ3ZGFkMTlhYTQxNWE3YTcgcmVsZWFzZTMxLW1haW50Cis4MjI4MCBiMDRjZWY1NWZkZjQzY2M2YzIyOGMzYTYxNTliMDFmYzhkYzY4OGI1IHJlbGVhc2UyNi1tYWludAorODIyODEgN2Q5MjgwMjliYzBlOWYzNjA2N2U3YzBkN2ZiNWI5ZTMzNzdhM2E4NiBweTNrCis4MjI4MiBlZWUyNTc5MjgzMDAxYTk4MDQ5NTY4ZjJlZDRiNzdjZGYxZDQzMmM1IHJlbGVhc2UzMS1tYWludAorODIyODMgZGNmOWJjZDlhMWUwODEwNDdkZGYzZjAzYjJmOWUyMGY4YjlmM2ZmNyBweTNrCis4MjI4NCBhMTgzMjNmYmFmOTU4ZmE0N2ExNTMwMDQzZTExMDEyZGM3ZTIxZjViIGxlZ2FjeS10cnVuaworODIyODUgZGVlZDE1NmQzM2Q4MDZmMGRkYzM2OGJkNzQwZDk4MTIwYzUyNDI3NSByZWxlYXNlMjYtbWFpbnQKKzgyMjg2IDBiZTI0MzliYmNkODAxODVmZWNlMjFmYTMwZDNlYmU5NTFmMzAwYmEgcHkzaworODIyODcgZTY0NzQ2ZTAyZTQxMDEwMGYyNmUyYjhhMTJlMTdjZjA3NTQ4YWI5ZSByZWxlYXNlMzEtbWFpbnQKKzgyMjg4IDI4MTgyODNjMTQ5YTJmNDdiZTM4MGJkMmQ5ODhmNmNmNGQzNTAxYjQgcHkzaworODIyODkgOTMzYTM1NTZmNTYzMzU4OGZiMTJiMzY4OGQ5ZjFjN2YzZWQwMjhjOSBweTNrCis4MjI5MCBlYzBmZDVhNmJiNDU2Zjc4N2UwNDI3ZWIwYjUxY2VmYWJjNzkxNjI3IHB5M2sKKzgyMjkxIGNiNmYzYTQ0MWFjMmRlMTZlMWVkZmQ2ZGFjYzY4MWVhNGY5Y2YwNTQgcHkzaworODIyOTIgMmYzNTAxZjhkNDU2ZmRmZDQwY2RhMGJjMjkwNzI5YWRhNDNhNjY5MSBweTNrCis4MjI5MyAzNThkODZhNTcyZmIxODlhMjQzNTA5ZTg2NTk1ZmVhNDE3NjZiOGM3IHB5M2sKKzgyMjk0IGNiZDUxMzllOGZlNDg5NzVjZGJhOWQzMjUyYzlkNzNiNmE4NjRmZTQgcHkzaworODIyOTUgMDg5NzNlNjA4YTJhNDQwZjVlNzVhZDZiZGFkOTRiMzZlOGJhMWMwZSBweTNrCis4MjI5NiAwNTU1ODg0ZTk4NjIzNGI4MzIwOTNhNzM5ZWViNzA2MTQ3YzFjYmMyIHB5M2sKKzgyMjk3IDgyMGYzYjZjYjU1MTE4NzQ5NzcxZmQzY2E5ZGIyNDRiMmZjZTJlZTggcHkzaworODIyOTggNTA0YzQ5OWU4Yzk1ODJkNWIxN2RiNjZhNzMxYjI2NjA4MjVlMzIxMiBweTNrCis4MjI5OSA5ZjIyOTQ4NzQ5MTBjZWRkYmIxZmU1ZmFhNjE3M2U1MGFiOWQxMzU4IHB5M2sKKzgyMzAwIDhhN2NjYjk2MTgxNDU5MWY5YmI4Nzg2NDdkOTRjMWY1NjAwYTJlZGQgcHkzaworODIzMDEgOGRmNjE5MjU5MDU2NGU2NWU2N2E2NGZjMDYxYTJkMjNmYTI5NjkyMiBweTNrCis4MjMwMiAzMjY1MWVlNzc5ZWQwMGNmMTcyMDc1ZTFhZTNhMTUwMDk3N2FhMzRiIHB5M2sKKzgyMzAzIDM2NzBjNjZlZTE0OWE1YzM4Mzk5NmI5MjczMWQ5MDQ4Y2ViZDVkNTQgbGVnYWN5LXRydW5rCis4MjMwNCAxZDE3OTdhZjQ2MjIwYjU3MjA1MmQxMGExZWJhMTYzNDRmOTBmNTA0IHB5M2sKKzgyMzA1IGFhMjYyYzViMThiNTMyNmRiYTEyY2YyYmU4OTMzOGQ4YmI5ZDY4YzQgcHkzaworODIzMDYgOTM1MDc1ZDMzNWZlOGJlN2JiYjhlZTM3NWQ4NmNmNWEyNGYzMzk5ZCBweTNrCis4MjMwNyA0NmZlYzc3Zjk1ZThkMTVlZDAyNDc2OTI2ZmNhY2JkNTY4ZDU0YTJlIHB5M2sKKzgyMzA4IDZlYzgyNWM5YjNiNTAxZjJhYzEyODgzMmRiNzNmMmY0ZDg0ZTdiNmUgcHkzaworODIzMDkgMmUzNzYwM2NhMDRkYTI2YjQxMzcxNWJkODlkYzJlODUyYjBmNTJjMCBweTNrCis4MjMxMCA0YWE1Yjk1ODljNDIxMjA5MjM4MmMxYTNkOTY3ZjRiMjE1NTUxODQxIHB5M2sKKzgyMzExIGE4NTdkZDQwNzk2NDgyZmFmNDJiODE2YWEzOWRiMjg1YWUxMWU4MWMgcHkzaworODIzMTIgMmJjMDgwMDBhODU3MjdlMTBlYTk0ODM0MWQwNDNhNWFkY2EzOTJlYSBweTNrCis4MjMxMyBkZDMwYmM1ZDE4NGU5MTQ2YWE4ZTQ1YjRmYjI3NGY4OWE3MWUzOWY3IHB5M2sKKzgyMzE0IDQ4OTNlNDAwOWY1NjcxMjQ4Yjg2YjBkMTlmNzRjOTg5MWMzOGRiN2MgcHkzaworODIzMTUgOWY2OTllNTE0YTYyYzI3ZTUyODY4M2ZlY2QxMDQ5YmIzMWNiZDQ5MCBweTNrCis4MjMxNiBhOWNlZDQyM2RhY2U3NWEyNzMyYTU4MTAzY2EwZjgxZDkwYzgyNzBmIHB5M2sKKzgyMzE3IDQ3ZTI5YTVjM2RkZmZmMjUwZGUzNjNjNTMxOWRjNTk0YWY5NjRkZmEgbGVnYWN5LXRydW5rCis4MjMxOCAzYmRjZGVjZWE1NjEwZTI2Zjc1MzRmYTk2MjE2NmZhOWQ4OWM3MjkxIHB5M2sKKzgyMzIwIGIwN2IyYzk1NGE4MDc3ZjRjOWFkM2ZjNDg5MzE0ZWQ4NTc0ZjJjYTEgcHkzaworODIzMjEgZDdlMzQyM2M5ZGE4MjAxYmI0YjJhZDNlMjNlOTI0NDMwYWQwM2FlMyBweTNrCis4MjMyMiBlNDJiZTZlNmFjMmQ3MzY0MmQzZjAyYTlmM2ExZmVmZGQ5YzE3MzIwIGxlZ2FjeS10cnVuaworODIzMjMgZmQxYTExMjkzZTYyZTFjYjRiYzIwMTc5Yjg0NjQ5OWQ5NDBkNWFjZSByZWxlYXNlMjYtbWFpbnQKKzgyMzI0IDlmMDE4OGU0ZjgxYTg4NjI3MDk0ZmUxYmEzZTYzYjhlNDk4ZmEyMzAgbGVnYWN5LXRydW5rCis4MjMyNSAyMDAzYjcwYTliYWRkYjY1MTBlOGZlOTkxNGI0YTlkZDExNTIwMjAxIHJlbGVhc2UyNi1tYWludAorODIzMjYgZWFjNjRhNDYxMGYxMjI2MmI2YjU1YjE0M2I0OGRhZjQ3ZTMwOGYxNiBweTNrCis4MjMyNyBiOGQzNjVkYTE3OTg5NDFiNzUzMTI1ZWQyYmI1OGY5NTFjM2EyZTRiIHJlbGVhc2UzMS1tYWludAorODIzMjggMjhmOWEwMDBhMzc5ZDRjNWUxMDhhZjU5OGYxMTAzZThmYmRmMDUxNSBweTNrCis4MjMyOSAzY2QxNmFjNTE4NzcxNTNlYjJmZDg2NTFjZWQ1MTM2ZjEwYmZiNjA0IHJlbGVhc2UzMS1tYWludAorODIzMzAgYzBhNDliNmE2ZmIxMWQ4ODA2ODA5NmE4OWRlOWQ4ODA5NWJjZDg1OSBsZWdhY3ktdHJ1bmsKKzgyMzMxIGY4MTZiOTkxZTViMzFjYTc3MjFlOGMyNzEwZTk0NWQzN2RlMzlhZjIgcHkzaworODIzMzIgODgyNzYxN2EwN2RjOTFmNmUyZDY0MzY4NWQ3MjJjOTQ1NmI2ZGIyNCBsZWdhY3ktdHJ1bmsKKzgyMzMzIGQ3MTQxMWEwYTQ3MzE2YWViMzhjMWVjOWE4ZDE0MDM2N2NmNmYwMTggcHkzaworODIzMzQgMmRjZjQ3YjU5NDNmNGVlNGY1ZDkzMTY5YjYxMTBlMWVjNTRhNmE0MyBsZWdhY3ktdHJ1bmsKKzgyMzM1IDM3Y2U1YWRhZThiOWI4OGU5NzRhNWQ5YTk4NmM5Y2IwZDk1Y2RjZjAgcmVsZWFzZTI2LW1haW50Cis4MjMzNiA3NDY1NzlhOWVhZDcwNWNlN2ZjZGRhZDU4OGM1M2ExYWQ3M2EwNmQwIHB5M2sKKzgyMzM3IDI1YjcyMjFkZGE2OTFiYzVhYjM0ZTVhYWU5NTVlNzE0ZjllZGYxZTAgcmVsZWFzZTMxLW1haW50Cis4MjMzOCAzY2IzY2U3ZGNhYjg1MGY4ZjE1Y2RiN2RmZmJlMjU3YWM1YzA3YzAwIGxlZ2FjeS10cnVuaworODIzNDAgMDI5MDRjNmVlNTAyOTc2MTEzZDJhNmE5NDUxMzRlODdhNmMzOWY0NCBsZWdhY3ktdHJ1bmsKKzgyMzQxIDI1MjBiODE4ZGEwNTIxOTNkOGZhMGY3MzUwYTg2Y2E0MzAzNTc3N2QgbGVnYWN5LXRydW5rCis4MjM0MiBjOGJkYjMyYjA0YWFhY2FhYjJjOTk5ZGQyNWI3MTg0Njc2MTYzNzgxIHB5M2sKKzgyMzQzIDY4YjY3MGYzNjE0ZTkwYjQxZGRmYmJhN2RjMTI4ZDU5NTU4MDI0OTUgcHkzaworODIzNDQgY2UwMzI1Mjc2ZDJhZmFmMjQwMzgxYjIyZDQyNzk2MTJkYzkwZWIzOSByZWxlYXNlMzEtbWFpbnQKKzgyMzQ1IDljYTk1MjRkM2U1NzhhNDFhZDU4NDJiMmQ1MmM5NjdlMDQzODM3NTggbGVnYWN5LXRydW5rCis4MjM0NiA2OWY2ZDIxMzAyODEyNGM3MzA5OTVmN2ViOWM1NzUxNDM5MzZmY2IyIHB5M2sKKzgyMzQ3IGI4MTdlNzE2NTE2ZWRmMDNiZjg2MzVkNzY0NjE1Mjc5ZGI4MGFhZDggcHkzaworODIzNDkgOTVmOGIyNWU1M2NlMDllNGVlODEzMWRiM2I1ODUxM2Y1NzQ0NThiOCBweTNrCis4MjM1MSAyY2Y0Y2ExZWQ2ZDZjZDZmM2FlZGQwNmRhNzg1Zjc3M2U5MGZjMDZiIHB5M2sKKzgyMzUyIGFjZDg2NDg4NjVhYWM1ZTFmM2NlNzY4N2NkYjY1YWYzOTY4NzQwYTIgcmVsZWFzZTMxLW1haW50Cis4MjM1NCBkZmJkYjk4YzkyZTdmMWI3ZjNmNmQ3NzNjNmJlNWE3ZWQxNjJiYmRiIHB5M2sKKzgyMzU1IDBlMTZkZGQ0NDE1NzhlYmRmY2NkNzkxMDFmNWVhNWQyMDEyNDg1YWEgcmVsZWFzZTMxLW1haW50Cis4MjM1NiAyYThjNjhiYTAwMGJhNGYyMDc1ZDlmNjkzZGM4OTcxMDgxNTY2NDY5IGxlZ2FjeS10cnVuaworODIzNTcgZWJmYjZiYzA4MmQ5MmVkOWE0OTk0YzAxNDc5M2RhNzU5ODM1NzE4YyBweTNrCis4MjM1OCBhNGUxYzU2YmU1MzJjZTU4ZjU1MGFmY2RkNGIwZGFjZmFmYWI1MWM4IHB5M2sKKzgyMzU5IDJmOTA1MWZlNmFkOWM2NTE1MjBmNGExYTZlMzJmZDQzYWQzYzkxZTMgcHkzaworODIzNjAgZmU0NDgyOGVhN2VkZGUxZGViNTc2OTE0OWY1NDE5ZWRkNmUyOTdmMyBweTNrCis4MjM2MSBjNTE5MjkyMzNlMTk1NDlmMTA0MDIxM2UxZWQ1NzY5MjQyYWU2OTg3IHJlbGVhc2UyNi1tYWludAorODIzNjMgMTRmOTRjMDFhMDAyYTU4MTE5N2QzZTg4OTRjYzE4ZmNjNWRlMDA5ZiBsZWdhY3ktdHJ1bmsKKzgyMzY0IGY3YjU0MzUyNzcxZDJjZmJiN2MyMDg0OTZkZmYxNWVjNTU5N2UzZmYgcmVsZWFzZTI2LW1haW50Cis4MjM2NSBiNzJjMzNmNDk2YWM4ZTFkNzU3NzMwNjk1ZTkyOTg2MjIwOGZkNjM4IHB5M2sKKzgyMzY3IDcxOTlmZjM4NmY5ZWM3Y2YyYzlhYmJjYWE4NjAyYjdjMTA4MjdlZjYgbGVnYWN5LXRydW5rCis4MjM2OCAyZjhkMTc2MjZjZGZmNDRkNWNjYTAxZTgzYTZiYjMwNWM4YTU3ODhmIGxlZ2FjeS10cnVuaworODIzNjkgMTdmMTdkYzZkNDhiYzRlYjlmODBhYTA0NTE2YTY0NDcyZWY4MjIwMyByZWxlYXNlMjYtbWFpbnQKKzgyMzcwIDA3MTMxZjA4YzNkZTE5NWMwMzgzNTkxYzM0NWI0YWEzMjNlZTFjMGIgcHkzaworODIzNzEgMjk2NDI0Mzc0ODM2MTY1NmQ5MDEwNjg2NzAzNTg2YmM5NGE2ZjBiZiBweTNrCis4MjM3MyA5ZTI5MWFjMDdjNWJjZjU3MjUwZjUzZWQ0NWM2ZmE5MGUzNmZjNDVmIHB5M2sKKzgyMzc0IDBmZTk3OTMyNjQyZTc3YmE3ZTQyZDQzNTlkYTczMWU3NzM5MDIzYjAgcmVsZWFzZTMxLW1haW50Cis4MjM3NSA1MDcyNTkwYjRkZmRjNGYwM2U3MDJlMDUzZTNkMWM2NzlkZGM3YThhIHB5M2sKKzgyMzc2IDI5MGJkMGMxNTBhNjQ1OGQ4MTcyYTE0MDkxOTdlZjE0OThiZjU2OGUgcHkzaworODIzNzcgMTU4MTY2ZWY2ZjA2ZDAxNGZkZTA4OTk1ZGZhZTdjN2Y4NTU2MjJlNyBweTNrCis4MjM3OCBhOTJhYzc1NzAxMTgzYWExNWZlMjk0NjY4YTI0YWMyOGUxNTAxYmIxIHJlbGVhc2UzMS1tYWludAorODIzNzkgYjVkZmEzMzk0OTljMjg0NDE0YzYwNDc1NmFmNTFiNTlkZDdjN2E2ZCBsZWdhY3ktdHJ1bmsKKzgyMzgwIGI4OGRhNGY3N2Y2ODZjNzVkMzQxMTEwNzA0ZmYyYTRkMzY0YzE0MGQgcmVsZWFzZTI2LW1haW50Cis4MjM4MSBmY2FlOTU5YTJmYWI1MmY0MDZlN2U3MjFiNWNkYTZmNDZlYmUzYjk1IHB5M2sKKzgyMzgyIDMyMWVkYmE1Zjc5NWJmNmEwMGZlZDZhNmI2MTViZmM4ZTI3NWU0NWQgcmVsZWFzZTMxLW1haW50Cis4MjM4MyAyNWZiZjAyMzEwMmQ5YjkwYzY3ZTQ4YTQyYzRlNDZmMTZiMDExNjc2IHB5M2sKKzgyMzg0IGU2YmI5OTBhYzlmNjg3MDIwNGJjYzYwMjEwMjhiZmE3NmE2YmMyZDggcHkzaworODIzODYgNGZjZTI1YWJmZGQ4MmZiZDA1MWJiMTI0YzYwNzlkOGIzODYzYTYwNiBweTNrCis4MjM4NyAxNmQ4OGVjYTNjMzNhMTlkZjI1ZGQ2NWYzMjJkYjIwYTIxOGY2MWJhIHB5M2sKKzgyMzg5IGQzNGNlMGRlOTQxY2E4OWE0YzMzZDU5M2M1NTFmYmU4NmM5ZWYwZDIgcmVsZWFzZTMxLW1haW50Cis4MjM5MCBlNmYxYjNkMTA0MGE0NzVhMDQ3NjUyMWJhYmYxNWVlNDI4OWIzMzQ4IHJlbGVhc2UzMS1tYWludAorODIzOTEgMmJjNTRkYTRiODJjMWFiNGMyOWU0NzBkNzJhNmZmNjg5YmJmYmU2YSBweTNrCis4MjM5MiAzMDg0M2JlMmUxMWEyNmMzNDUxZTE2MDE0YzNhNzU0MWI4OTU2ZjhkIHB5M2sKKzgyMzkzIDA0M2VmMDRmNjRkMjJjN2I2OTk4ODM0ZGJhNjAxM2VmMmM2NDNhMzkgcHkzaworODIzOTQgMzBlMWQ4ZDA4MTA1NzgwZjMzZjJhYzRmYmYxYmE3M2FkY2FhOTljMCBweTNrCis4MjM5OSA5ZGNjOTNmZTc1MjgyZWRmOGQyZDgyZjdhNDgxMTliNTcxY2Q1YWFlIGxlZ2FjeS10cnVuaworODI0MDAgYzVhZmU5NTUyNzc5M2M4Mjg4NDZiMzg2YWU0MDgzZjBlOTJhOWViMCBsZWdhY3ktdHJ1bmsKKzgyNDAxIDlmNTQzMGU0Nzc3MDA3ZTNlNzNjYjUwNWU3MmM1NDY1NGRjM2I4YTggcmVsZWFzZTI2LW1haW50Cis4MjQwMiAwMWM5NTgxYzdlM2Y0OTRkYzBmMDMyM2NjMTA1N2ViOGJjMDlkMWJiIHB5M2sKKzgyNDAzIGU5YzhhOTY1ODRkNDM0ZTEwNjIzY2Y0ZTMwYzFiOWYwYmZlODRiMDcgbGVnYWN5LXRydW5rCis4MjQwNCA3NmJjMjU1ZDI5ZmRmNGUzYmU3MGUwNjg3N2ZkMDVlMzgyNzViYjFkIGxlZ2FjeS10cnVuaworODI0MDUgZGI2ZmQ0MDVlNTk0ZmQ2YzMyOTgyNjM0NTAzNzFmMTU5YThmYTg2MSBweTNrCis4MjQwNiA4MTZjZDg1OGQzMzFhOGQ1MDY2NDM5Y2M2ZWU4NzM5YWU5NzAxZjNkIHJlbGVhc2UyNi1tYWludAorODI0MDcgM2U4NzhlMjY5YjA5ZWU1YjFkMDQ2MWFlZDRmNGY3Y2M0OGE3MzhiMCBweTNrCis4MjQwOCAzYTkzYTA2ZTVlMzBjZGZhODk0Yjc1N2VmZWZiMzdkNzcyN2FjYWI2IHJlbGVhc2UzMS1tYWludAorODI0MDkgYjA0NjE2YmU3ZjE0ZDcwNjA0NDdmMDMzZDQ4NjYzNGQyNDRkOTk1MCBsZWdhY3ktdHJ1bmsKKzgyNDEwIGNlODE0MjJlZTM1YjMxMDU4ZTg4MDRmY2NlZGE4NTk1ZGVhOTc3NzMgcHkzaworODI0MTMgZTBkNWE0YTQ5MTEyYTI4ZTExZDA3OTk3ODk3YTA3NDE2MTg1MjJiOCBweTNrCis4MjQxNSA4YjhmMzY5OTQxYzFlZGI0Mjg5MDZkNTI3OWJmZTMzNDZjYzNmMGY4IGxlZ2FjeS10cnVuaworODI0MTYgMzE4NWIwNTVmOTM3NjZkMmFjZjRmYjgzZWE4NzFiMDU0ZTljNmY4YSBweTNrCis4MjQxNyBhODlhM2Q5MmY4YWVhZGZiODI1YzU0MzY2ZGM5MmYzYTk1NDkyZTc0IHB5M2sKKzgyNDE4IGE5YTI2N2E4MWRhYzQyM2FkNThiZDY0NWEwZTBkYWQzYmVlZDI2ZDcgcmVsZWFzZTI2LW1haW50Cis4MjQyMCBjNTNlMTM1YTA4YjY5MGE5MDQ1NzI3ZWMzOTc3YjVkMDBkYTIwOTU1IGxlZ2FjeS10cnVuaworODI0MjEgYTkyNzE5YjQ5ZTVlYmFlODVmMDNiYjdhM2E5YWE3Yzc1ZmYwODQwMSByZWxlYXNlMjYtbWFpbnQKKzgyNDIyIGZhMTFkMmI0Zjk4YTJlZWIxMTYxZTY3ZjM4YmRlZTdhOTA3MGI0NjMgcHkzaworODI0MjMgMTNjMDZhNmY0Njc2NzZlNmRkOTMwZTM1YWM4ODI4OWU0YjRkYjgzMCByZWxlYXNlMzEtbWFpbnQKKzgyNDI5IDQzZjA2Y2EzNmFiMzBkMTY4YTBjZjA3ZGJhZWI0MzZkZWVhMDkzZjEgbGVnYWN5LXRydW5rCis4MjQzMCBmZTk1NTNhNmY3OThkNzExOTM4NmJlNjZlOTJkNWZiNDQwZjhkMmNkIHB5M2sKKzgyNDMxIDZkMGRlZGIzYTI0ZWMwNzY3NDQ3ZTFiOTk5YmJlMWZiYjQzMjY2YzEgcmVsZWFzZTI2LW1haW50Cis4MjQzMyBiYTljZjBkZjIxYjAwOTkwNzJmMWEzYWM4MDc0M2ZlOWJlNmJkMGVkIGxlZ2FjeS10cnVuaworODI0MzQgZmVmNjM0OGMyZGQ2Y2YyMWI1MTM3ZjE4YTk3NWUyNjMxZjdlNzc4YyBweTNrCis4MjQzNyA0YjBjODgyNzVmM2I2NDI1ODUzOTQ0MTE4NGU5YzM2NjlhZjk4OWY0IHB5M2sKKzgyNDM4IDM1MzcwZDcyMzZjOWM2YWU2MmI2NDIwNTA1ODhkODJhMDk4Yzc2Y2YgcHkzaworODI0MzkgMTc4NjYyOGVhNmZmNjQxMGRiOTAzZWYyNGVmMTI0ZWQ1ODY2ZTc5YSBsZWdhY3ktdHJ1bmsKKzgyNDQwIGUxN2IxY2IxYjYxYzljYzYzZjYwZmMxZWM5YzA5YzRhNzAwN2IyODUgcHkzaworODI0NDEgZjQzMGE4OTE5NmM5YWZlZjNkZWY3OGEyOTc1ZDNhOTJlMjQxZTk1OCBsZWdhY3ktdHJ1bmsKKzgyNDQyIDMzMDRkYzU2ZGRhNDQwN2Y4Y2M2NTI4ODcwOGQ4ODlhZmI2N2E0NzUgcHkzaworODI0NDMgYjNiZmFiYzA0NDdjNTE4YTdmOGI2YjUzZWU4MDNlOTFhYjAyYWQyMyBweTNrCis4MjQ0NCAzNmFiZDc1NTRiYWQ4Y2NhMjc2NzM2ZGRmNGY0YzNiNjFkNWUyNDJkIHJlbGVhc2UyNi1tYWludAorODI0NDUgOGE2ODlmMjk3OTcwYzk1YzQwNjljYTlmOTEwNmFmNmUyNjk5NzkzOCByZWxlYXNlMzEtbWFpbnQKKzgyNDQ2IGVmNjc5OGE5OWVhZDJlYjY3MDMzYTk3ODdiODNmMjk4ZjM0NDRiNTYgbGVnYWN5LXRydW5rCis4MjQ0NyBiNTQwYTYxMmY2MDE3MDE1ZWJjNTk1ZTYwZTM0NGFmZWE5YzcwYmE3IGxlZ2FjeS10cnVuaworODI0NDggN2YxNDk2ZTQxMTI0NzM4ZGVmNGE2NzhmZmJmNmVhYzFhYjZkNmQzNSBweTNrCis4MjQ0OSBlODM0YzVkM2E5YTMzZTMwNDU4NmYwOTFiMTE5YTE5MDU4YmI1ZGI3IHJlbGVhc2UyNi1tYWludAorODI0NTAgYWVjNDIyMTExY2RlYTM1NzM3ZjA5YjljZjAzZjMwMWIwN2E2ZjhhMCByZWxlYXNlMzEtbWFpbnQKKzgyNDUxIGYxYmE0ZTZkNmMxMjMxNzM0MjFkZmMzMGE4YTlhNzAwYjM2OTlhODkgcmVsZWFzZTI2LW1haW50Cis4MjQ1MiA2MWFkNjg5NGVkNmFhNzZjMGEzOTk3Yzg1ZTlkYThhOTc3MTVmNWIwIHB5M2sKKzgyNDUzIGNiNzgwMGM2NDkxMjNjYzc0MzBhZTMxMmFhNjYyZmI1YTU5ZmFmNmQgcmVsZWFzZTMxLW1haW50Cis4MjQ1NSBkZTE2YTkxNWJkMmFjN2Q1ODdkMjBjMzM3MDZhMTY2NThjMzUwMjA0IGxlZ2FjeS10cnVuaworODI0NTYgNTI5YjIxNzUzMzliZjA2MTU3NzlmZjJjYjg0ZTdjMzk3MDdhMzg4YyBweTNrCis4MjQ1NyA0M2MwNDcxMWFhY2JjYmFiNTI0YWRlY2ZlYTg0ZGNkYzU1OTMyOTAzIGxlZ2FjeS10cnVuaworODI0NTggMzE0NDNjZjRkZWYyZjJjMWI1NjRjNGI3ZTgxNmQ0ZWI0ODk2ZWU4OCByZWxlYXNlMjYtbWFpbnQKKzgyNDU5IGZhMTZhY2IyZmZkZDYxODVhNjNhZGJkZDliY2YxMzdhYzY3MmU2ZGUgbGVnYWN5LXRydW5rCis4MjQ2MCBjNzJmZDhhMmFlMDFkMDY2YjBmYThlOGNkY2NiZmFmY2E3MWEzNGI2IHJlbGVhc2UyNi1tYWludAorODI0NjEgMWViMzZmMTY5Yzk3MjhmZmM3MDM3MzlmNDBiYTRiNGM2ZjZiZjZjOCBsZWdhY3ktdHJ1bmsKKzgyNDYyIGQzZmExOTliNGExNzQ2NmQ5ZDM1NmVhYTZlNTJlYmQ0ZWMzOGYzOTggcHkzaworODI0NjMgOGJmNmQ4YmVhZmUxZDU0ZThjNzAxM2Y2NjNlOGM4NzY2ZWM1OTYyMSByZWxlYXNlMzEtbWFpbnQKKzgyNDY0IGYyNzFlMWQwZTljNDQyNDk1NGIxYzhmNzZhNGI3YmQ3YzJhNGY2YWUgcHkzaworODI0NjUgZDgzMWZjMGMyNjM0MmMzM2NkNzUzYjQwMjRjMTVhNzc2NDk4ZjM1MCBweTNrCis4MjQ2NiBiOGIxMWQ0MzQ5NDA2MWQ0MmY0ZjZhMTkxMGJiYjZiODYzOWY4Y2RjIGxlZ2FjeS10cnVuaworODI0NjcgYjBiZTg5ZjcwZmY5Yjc2ZWRjMGRiNDFjYTIwOGQ5MWNmNmY3MGIzNiBweTNrCis4MjQ2OCA5OTAwYTk5OGI0NjBjZWQwMGM1ZjI0MmQyOGQyYThlM2RlOWE2NzFjIHB5M2sKKzgyNDY5IDlkYzVmMzg1ZjQ5NDJjNDc5NWRjZDRlYzA2YWU3YzNjMTYyMTE5ZWIgcmVsZWFzZTMxLW1haW50Cis4MjQ3MCA0ZGUxM2ZlYWVhMDE4MDVlMTQ4MWM4MTUwNmRhYjczYjUyM2ZhMWJhIHJlbGVhc2UyNi1tYWludAorODI0NzEgZWJlMWIzZmY4ZDMwMjE4MTg1YTQ1N2ViMDEyMzk3NTM3NWFiYTQ2NCBweTNrCis4MjQ3MiA2MWNiOTQxMGE4NDI0YjUwODUxMzcxOWE0MmZjMmFlNGNkMDIxYjhlIHB5M2sKKzgyNDczIDRkM2I0ZjM0MTkyYjIzOWU4N2Q4YmEwNzczNjYyMDE1NjgyOWNjNDEgbGVnYWN5LXRydW5rCis4MjQ3NCAzMjM5NmU4MDA0OGY5YTg3MDZiMTZhZTYxYmQ4MjlkODlkMzE5ZjA2IGxlZ2FjeS10cnVuaworODI0NzUgNjk3NTZjZGY1MzdiNGZhMzdkY2E5ZDdjOGYwZjM5OTM4YTI0OGUwYiBsZWdhY3ktdHJ1bmsKKzgyNDc2IDhlMjBmZmM2MTk4NjczY2FhZmRjNzIwMWFiOWJmZjY4MDk1NmZhOTcgbGVnYWN5LXRydW5rCis4MjQ3NyBjYzRiZDc2NmZlMTA5YTU3MjFkNjUxYWFlMzY1NjcwN2IzOTIyMGViIHJlbGVhc2UyNi1tYWludAorODI0NzggYzU4NTVkZGRmMGUxZmFiYWU5ODFhNzVlZDRhOTM0NjUwOTJiODk5YyBweTNrCis4MjQ3OSA1NjEzZDJlMWQ3Nzk1MjdlYWI4YzRlOGVkN2EyNjhkMmUwODRiMGNlIHJlbGVhc2UzMS1tYWludAorODI0ODAgYWFlNzM4MWFjMGIyZDBhNWM0OThlYjUyZTMzZDdjOTc0MzQyNzFjNiBweTNrCis4MjQ4MSBkOTdjMjQ1MjMzMjEwYzc5YmI2NDk5N2JkZTkxYWI0NzhjOTg2NjgzIHB5M2sKKzgyNDgyIDJhYWI5NTdiZjYxZmVjNjVhYWNiYWRlNWE1ZTdmZjZlMjA5ZGIwZTggbGVnYWN5LXRydW5rCis4MjQ4MyA2Y2ZlN2I5MDQ2NDlhMDczYzIwYzgzNjQ2YzA0NGZkZmRiNTYxNzdiIGxlZ2FjeS10cnVuaworODI0ODQgNWQ4MzRmY2RmOTgwY2RmYTFmYWQwNGJiZWMxM2JlMzQ4OTM1ZjhkZiBweTNrCis4MjQ4NSAyMzNjOGRhYjhmZmE5ZjcxMDUyOWIwNjcxZmE1MGVmZWZkNTY0MzBkIHB5M2sKKzgyNDg2IGFjODIzZTcxNmQ1NzE3ZThjY2MwZTEwMmYxNjdhM2RiODY3NGNmMTcgcmVsZWFzZTI2LW1haW50Cis4MjQ4NyBiYjIxMWEyZGRhYmQ1ZjBiODYyY2I4Y2UyYmY3NTg0ZDVhMGZmNDA1IHB5M2sKKzgyNDg4IDU1ZWRmNzlhZDgyNzdmMzk5YzQ3ZDA5ZTMxNDUzZTYyZTQ3ZjYzMjcgcHkzaworODI0ODkgZDM1ZjhlNWI0MTk3YThkN2ExNTA0ZmY0NzRkZjJmOWU4ZDE1MTMwMSBsZWdhY3ktdHJ1bmsKKzgyNDkwIDQwZjE5YjBiZmE2MWE1NmI0MTQwZDFjZjY1YWMwMmViNmNjN2QxMDUgbGVnYWN5LXRydW5rCis4MjQ5MSA2YWNiMjUzNTZkMmYxYTY5ZGYxNDQ4MWQ0ZjRkODU1YTE5OTQ5MjdlIGxlZ2FjeS10cnVuaworODI0OTIgYmU4ZTFhNmViZjdhYmU3NWEzODE0YzQyZDMyOTAzYjg5YmVjZjg4NiBsZWdhY3ktdHJ1bmsKKzgyNDkzIDRjYTVkMGFlYTQxZDM2MDljZjQ2NmJmZTgzNTkxMTJmZmYyNWE3NjMgbGVnYWN5LXRydW5rCis4MjQ5NCA4YmI5MzI4OGRiNmQ2OGU5YzE4YTg1Y2FiOTVlZGIyZTAzZDE1MmI1IHJlbGVhc2UyNi1tYWludAorODI0OTUgMjkxMTZiMmZjZmZlOTI4MTM3MTY0ZTI3NTg1OGZiM2M2OTA2ZGRkNyBweTNrCis4MjQ5NiA3MTg0NDIxZjgzYjU2NGZhYjU5ZmUyZmIzMGI0MjI3NjZhYTAyYzQwIHJlbGVhc2UzMS1tYWludAorODI0OTcgYjNiOTEyZDQ1M2E1ODJlNDFkZmZmZTcxYTkxNGUxY2ZkZTdiYjRmNyBsZWdhY3ktdHJ1bmsKKzgyNDk4IDk5Yzg0YTUxZjU3NjViYmViYmZmNzUwOGZhZmM1ZjRlMDFhNTQwYWUgbGVnYWN5LXRydW5rCis4MjQ5OSAyZDVmNTE1MGRjZTI0ZGE3Y2I2ODZiZWNjZWUwMmIyOTc1NTgzYTA3IGxlZ2FjeS10cnVuaworODI1MDAgODBjOGI0MzQxMzEyYTMzOWEwMGYzNzYzMWMzODU1MDA3ODc4ZDdjZCBsZWdhY3ktdHJ1bmsKKzgyNTAxIDU0ZmRjYzBmNGJhY2YzNzQ4NGRiYmNjZjJkN2FlZWMyYmM4MmE3MTggbGVnYWN5LXRydW5rCis4MjUwMiAyMTQ1NTkzZDEwOGRlNjJlYmY3NzA5ODdhNGFjMmE1N2QyNjhjOWQxIGxlZ2FjeS10cnVuaworODI1MDMgN2Y3ZDgyMzQwMmM2OWFlNjIzMmFlMjYwOTNjZDQ4MmE0ZjM1N2YzYiByZWxlYXNlMjctbWFpbnQKKzgyNTA0IDNmNDZmOGE5ZGI1NDk1MTkzMzlmYjlkNTk4YjRiYjBmY2ZkYWJkMjMgbGVnYWN5LXRydW5rCis4MjUwNiA3NmQ5MDg0M2RiYTYxM2M1MDEzODFmNTYzNWI1YWVkNmFmNDQxZGY2IHJlbGVhc2UyNy1tYWludAorODI1MDcgMzZkMDFjMDE3YjliZWVmOTE3ZjViYmU0ODA3ODUxMmUwZTdmNDhkMCBweTNrCis4MjUwOCAxOTRiNmU2MmJlOTUwZDBjYzk4ZWE1Y2JhNWVjMjM2NTZkMDUwYjMxIHJlbGVhc2UyNy1tYWludAorODI1MTAgMjYyNTI5ZDFjMzE1Y2QxOWU5ZDY1ZDEwNDFkYmU3ZTQyZGM5Zjk4YSBweTNrCis4MjUxMSAyYWVlODI5ZWRmZTI4MDIyOGJjZjk4YTliZGZlM2EyZGUxYjliOWQ2IHJlbGVhc2UzMS1tYWludAorODI1MTIgZDc2ZDBlZWIyM2NhYjg0M2FiYzYzN2FhOTQyM2FmMGY0ZmYyMWM2NiByZWxlYXNlMzEtbWFpbnQKKzgyNTEzIDk3NmFhNGE4YmNmMzA3YWJiNTJlYzAwZTMzMTJjOWEyYjEyYmU4OGQgcmVsZWFzZTI3LW1haW50Cis4MjUxNCBlNDJiYWY2NzhkMTQ0MDA2MjAyMmFhZTk4ZTg2ZDc2M2YyZTlhYTRlIHB5M2sKKzgyNTE1IGZlNDZhOGRiYWY2OGNhNzQ0ZGY2YWFkOTE2NmM5M2U1OGE2NmYzMTkgcHkzaworODI1MTYgMTc4NDU1YTJmMWFhNWJiZDk2MDBhMGFmMWY2NWIyOWVjZDAyZmQ4ZiBweTNrCis4MjUxNyAzMWE2ODU0Zjc4MTM5OTE5ZjkyMWU0YmM4NjZhODkzODRlZWE3MjRkIHB5M2sKKzgyNTE4IDM0ZDgyNzI0OWNlMGJjMjk4ZmI5ZTNkMmMwYzgyY2Y3YTViYWRjMTcgcHkzaworODI1MTkgZmE3MTUxMmE3NGY5MTRkNjk3NjBlOTAzN2I4MGZiMWFkZmJjMzQ2ZiBweTNrCis4MjUyMCA2YzNjNTQzZWRlOGM0OTdlZWVmNGY3MmMwZTdjMDBiMmE5M2RmOTQ3IHB5M2sKKzgyNTIxIDI2NzRkM2JkZGIxODFlOGUzM2M2N2MwYzc1YWJhNzY1ZjVjZDJmODggcHkzaworODI1MjIgMzRmMDE1YmNhNTRlZGIzMzM5MTY0Zjc2Mzc2N2M2YTBhNDhmYmQxOSBweTNrCis4MjUyMyAzMjY4MmIyNTNmZmM4MTdlMTZkYTlhNmUxMjE1YWYzYWZlYzgwMWNiIHB5M2sKKzgyNTI0IDRjMzBhNmY0MGU2ODRlNjM4NTM4M2Q5N2ZlN2NiNWRmZGZkNGYxMmUgcHkzaworODI1MjYgNGI5MzQ4MDNjZDM0MTQyNDMxNGRhZDg3MGMyZjhmYzBkODZmNjIzNSBweTNrCis4MjUyNyAxMzU1NzU5NGUyMGI3YWQwODY0NzQ5MTAxYmNjZjhjMzc1MmFlNDg2IHB5M2sKKzgyNTI4IGI2N2Y3MjA5OThhODgwMWE4YWQ4Yjc0Y2JhYTgzZTJhZmIwNzgxZDUgcmVsZWFzZTMxLW1haW50Cis4MjUyOSAwZjY1NDhhODY3NjhiMzI4MTA2MzIxYjg4NDg5M2NlZDM2ODQwYTJmIHJlbGVhc2UyNy1tYWludAorODI1MzIgZWNkNzFiNjEyN2U0MjY3OGRjMWEyYjFmNTcxZjY0MWNlZDBhMjhjMyByZWxlYXNlMjctbWFpbnQKKzgyNTMzIDM0MzkwMzExOGNiNWJiNjcxZTE2OWM0NTFiZWM0OTljNmZhNTBlNzUgcHkzaworODI1MzQgMTI0YTc2YWU3YTcwZTc1NzBkOTQyM2VkN2E2NWY2ZDQ5NDliOWM0ZiByZWxlYXNlMjYtbWFpbnQKKzgyNTM1IGYwNjkxYjRhMzgzYjgyYWVlODUzYTEzYWY3Mzk5NjRmYWU4NWRjMzggcHkzaworODI1MzYgM2ZjZTZjZGI0NzMzNzcxMTY5NTM4MzE5M2I0NzRkZjk0ZWM3YThjNSByZWxlYXNlMzEtbWFpbnQKKzgyNTM3IDFlYWY0YmJlNGIxYzFjMThiOTFjZWNlOWQ5OWM0NjY4YmE0ZjNkOGIgcHkzaworODI1MzggNjFjYWNlY2NmODA1ODEzNTNiODRkNzNjMGRhYTEwOTkxNmExYWJlMSBweTNrCis4MjUzOSAxODI4MjAzOWM1YzljMDA2ZGM1ZmQ1ZjNmMDYyMWZhMTEwYjMxZDk2IHJlbGVhc2UzMS1tYWludAorODI1NDAgOTM5MzI2MTk5NmNlZTIzMGM2NTI4NWFkZDdlMzBmYTVmN2E5MDZjNiBweTNrCis4MjU0MSA5ZTM1NGVhMzgyY2NlN2NiMDBjZWY1YmUyYmVkZTBjZjk5YzM5ZjMxIHB5M2sKKzgyNTQyIDc2N2I0YzU3YWVhNGQ5YmQ3YTQwZjZmZjNhOWM1NmE4YzA5NmQ2ZDggcHkzaworODI1NDMgMzgzMDM5ZWYyNmEwZTA5ZTUxNjBmNmE5NDg0YzI3ZWQxOTAzNDJiNSByZWxlYXNlMjctbWFpbnQKKzgyNTQ0IDNhZTkxM2E5Y2RhOTBlYTNlMjVkOTc5ZDI3NTQ0ZjkyNDE2NjFmMDYgcmVsZWFzZTMxLW1haW50Cis4MjU0NSBhNjNmNmJhYmE2YjU0ZGU5ODc4ODkzNGNkMzhmZDFkMTEwZWYyOTFjIHJlbGVhc2UyNy1tYWludAorODI1NDYgYmU2NjJkMTI0Mzg1OWVkNDM3YzA4NjliNjZkM2I3OTc5YWJmODFjOSByZWxlYXNlMjYtbWFpbnQKKzgyNTQ3IDM2MTQzMWM0ZDM0NGM0NGFjZjZlNmVkY2UwN2UyMDA0NzYwYmY1NTggcHkzaworODI1NDggN2NlNmUzNjRlMTE4MzA2N2U3Y2E4Mzc5ZmFkMjY4MWY0NjNhOTJjYSByZWxlYXNlMjctbWFpbnQKKzgyNTQ5IDNiMTU0ODY2MDhmMDViZWNkMTRjNzYwNTRjNWQ5OWJhNDU0ODI2OGEgcmVsZWFzZTMxLW1haW50Cis4MjU1MCBiMDc0M2Q1MmI2YTMxN2IyOTFmNzUzZDVlYmI3MzU3YWMxZDg1MmY2IHB5M2sKKzgyNTUxIDM0M2NmNWEwOGZmMDBmMDcyMzdjMTkwOTVmMzRiMTk0ZTc2YzQyYzIgcHkzaworODI1NTIgYzZmMTZiOGNiODU4ZGI5NThiMTg0YmQ2ZDQ1MjIyMTBhN2ZhMDU2YiBweTNrCis4MjU1MyBkMjgzMDA5MTIzN2NlYTNjYzIzNWE2ZDA1MWZlMDMyYzMxMDE0MGVjIHB5M2sKKzgyNTU0IDY5MmI3OTg5Y2Q5MjAzNjkwNTBlNzViYjZhZDBiNTViM2NiZWNlY2QgcmVsZWFzZTMxLW1haW50Cis4MjU1NSBmYjM2MGMwNzkwNTk3NmIxZDBlNzc2ZmNjNmQ2OWE2MjkxNzQ4MmI0IHB5M2sKKzgyNTU2IDNhYTIyNDI4NTgyYTM4YTI3MWI5ZWFlZTZjMzRhMWMzMjdlMWZmMDAgcmVsZWFzZTMxLW1haW50Cis4MjU1NyA4MzdlM2NkM2QwODM0NjMzZGViMTlmZjNlZGE5ZTYxNjFiZjVmMWU5IHB5M2sKKzgyNTU4IGQ4ODBjMTE0MzE3NTY3YmM4OTljZWU2ODRlOGIzNTdhZmIzZmRlMTkgcHkzaworODI1NTkgYzFhMjNhNTQwYTI5ZGY2MjZjOGQ1NDdmOGE4MTBjOTQ4ZDE2YTUxZiBweTNrCis4MjU2MCBmZTUyMTdhOGFmZmJkYzBmNGFjNzY4MDc0ZDlhYWYyY2I2NmU5MTI4IHB5M2sKKzgyNTYxIDQ2YWJkZTA3MWZmZmNlMDEzMmNkM2M4Nzc5Y2IwOWY2ZWMwZDJhNWUgcHkzaworODI1NjMgYTFjNDU2MzE3YjdjM2EyMzY4ZTZlODJiM2ExZDc3ZWQwZWMzMWYwMiByZWxlYXNlMjctbWFpbnQKKzgyNTY3IDdmZmQyYTQ0OTQyY2Y2NTYyNzhkMDRmZDlkMjY3YjFlZjc0OWFlNjcgcHkzaworODI1NzAgZGNjMmU4YmY2NGNmZjYxZmRiYzk4Nzc2NTkyNmE0YTU2NmE1M2YzNyBweTNrCis4MjU3MSAwMTQ1MDEyMGMwZGQxOGQ0ODdiMWQzYjRkNWQ4ZDQyMzA4ZmE2NTM5IHJlbGVhc2UyNy1tYWludAorODI1NzIgZTFmNDhlYjAxNGM3MDQ2YWVlMTZmZjljZTBjZDU2ZjcwNjgxNDI4MiByZWxlYXNlMzEtbWFpbnQKKzgyNTczIGNmNGY3Zjk4ZjE5ZTcyYmMxY2I2ZjFlY2I4NDE0YTExNzdkOWQ4ZjcgcHkzaworODI1NzQgZTg0ZDUxNjQ0MTQ0NjBhMzZmZmY3ODBjMjdmNzMyNDg1OTYxMmI2NyByZWxlYXNlMjctbWFpbnQKKzgyNTc1IGM4MWZjMWZmZTk0NjcwM2M3OTFlZmJmYzBmZDFlYzBjYzNjOTZmMDAgcmVsZWFzZTMxLW1haW50Cis4MjU3NiA3MjY0ODNkOTdiNWMwOTM2ZjgwZmVmY2Q4NjcyMDNmOTVkMjdjZjY3IHB5M2sKKzgyNTc3IGE3YzhiNGE2Njc4YmYxMDIxMzAwZWE3MDZkM2Y4OTEwNDJjYjE3NzcgcHkzaworODI1NzggMzZkNWUyZjVkNjAwNDM5NTRhMTU1ZDA0NmUzMTk3MmFlNTVmOWFkYyBweTNrCis4MjU3OSA4ZWQ3ZDExMWIyYzk3ZmVkNjBlNmFjNDI4NDFmZTA1MjNkZDI1NDc2IHJlbGVhc2UzMS1tYWludAorODI1ODEgNzA1ODY5ZDFiZGYwZmRhMjExZjA5OWMxZDQyNTk2NTJmNGFkM2Y1MCByZWxlYXNlMjctbWFpbnQKKzgyNTg1IDQwMDFkNDU4ZjBiMjBjYzdmM2ExNGRiZDhjZWFjOWMzN2UwOGI3ODMgcHkzaworODI1ODYgZWU5ZWUyZjlmZWI5Y2NmYzBiNjdiYjE2ZjEwZjFjMjdjMDI4OTgwOCByZWxlYXNlMjctbWFpbnQKKzgyNTg3IDlkNWZlOTM2MWRlMjFkZTY4Y2JmZjM3Yjk2M2MyYWI5MjNjOGU2ZTMgcHkzaworODI1ODggNjgwYmY2YjhhYjgyNDBhOTZlZWU5YjQzYzRmMWUwZjM1NTdiOGIxNyByZWxlYXNlMjctbWFpbnQKKzgyNTg5IDZlYzU3MjJhMDdhNWYyYWJlOGE3NmNmZDc3OTAzNmU4ZWMxNmE4YjkgcHkzaworODI1OTEgYjZmZWU1NWZhYTFiYmJjODA4NmI2YjkyZjlmNzhkMDdhOWU0YzY2OSBweTNrCis4MjU5MiAzYjczZmI4MDgwN2FhMWJjMmZlMGY5OGQ4MThiZWEzNDI2ZGVhYzRmIHJlbGVhc2UyNy1tYWludAorODI1OTMgODdjZGFmZTNiZDZjNzBhMzYyY2JkZjI5ZWVlOTRiZDEwZjQxMmJhZCBweTNrCis4MjU5NCA4YmJmMjRlNTFjY2ZhYWRhM2Q3MmY5MGE0ZmJjYTQ2ZDRmZmUyYmY0IHB5M2sKKzgyNTk1IDUwOTdiMWI0OTYwMTJlMWUzNDBmOWRiNjYwZmQ1ZTBmZGY5MzgxMWQgcHkzaworODI1OTYgYTA3ZWY1ZWFiOTBiYjI1YjEwNGU2NTg1ZGFhMGYxYjc2ZjMzMzk0MyByZWxlYXNlMjctbWFpbnQKKzgyNTk3IDRkMjkxYWQwNzg5MTQ5ZmMxMWQwMTYyNTVhZmFlYjk4MDU3OTBiMWUgcHkzaworODI1OTggM2RjMjE5MDczODc1NzRlNzM4YWM3ZjIzZTQzY2E1YzhlMWQ0OWExZCByZWxlYXNlMzEtbWFpbnQKKzgyNTk5IDkxNDU3YjIwMTRlNDBiNjE5MTYyMGU5ZTc1MWVjYjI0YWNjYmM1NjkgcHkzaworODI2MDAgODcwYjZiNDU1ZWYwNWQxYjUzYTMzMDkzOGY4MGJjNzY2NTU5M2NlNSBweTNrCis4MjYwMSAxZjI4MTRlYjRkMWRkMWIxYTY3MTQzMzhkODNmZTExYTZlNzM0ZWEzIHB5M2sKKzgyNjAyIDg2ODkwNDQ2YTQ3YmNmNTI4NGJkZmYzYTJkYTE5MWJlMjYxMDUwNWQgcmVsZWFzZTMxLW1haW50Cis4MjYwMyAzOWM3ZDU0ZjI4NDhjMGQxZmEyZTMwMDhmNzRiZTlmNTA4NmQ5ZTI2IHJlbGVhc2UyNy1tYWludAorODI2MDQgMWYzN2QwODJhOWFhZjgwMzdlMDNmNmIzMDVkYzc4ZWQxMDljYmViYiBweTNrCis4MjYwNyBmMWE0MTQ3YjNjMDIzY2NlYTdjNmRmOGZjYzYxMzBhOWQzOTA3MTQ1IHB5M2sKKzgyNjA4IDIzOTllMDQ1MWQwZGVjODY2MDFmMzRjMWZiYmNlMzFlZTI4YTBhYjcgcmVsZWFzZTI3LW1haW50Cis4MjYwOSBkMzZkYzM3YzY3Zjg4NzA2M2VkZWZhMzcxNGMwODBmY2ZhOTY0MDBkIHJlbGVhc2UyNi1tYWludAorODI2MDkgNzRiMGViNzY1YTUwNDliMjUzZTFjYzM1MWRhOGZmMzllMzA4MmM2NiByZWxlYXNlMjctbWFpbnQKKzgyNjA5IDA3MjhiMjk1ZjUzYmQ2YTNkNzBmNWY1YzcyNWE4NTViOGYzYWYyMjkgcHkzaworODI2MTAgMjAyZjMxZDQwMzg5Y2UzZjY1OWZiMTU2MzA4ZTgyY2VlMDAzODA3ZCBweTNrCis4MjYxMSAwNjE4YzYyMzFhMWYxOTI3MTY1OTljZDYwMmZmNGJhMDAyMjJmZTlmIHB5M2stZHRvYQorODI2MTIgZTEyYWVjZGMzMzJjNzg3Nzk2ZGYyOTMwM2NmZjYxY2YxMWQ3NWI4NSBweTNrLWR0b2EKKzgyNjEzIDRmZTQ5M2Q5OWRjYzFjMjE3YmNjNTI3YjBmMzYzZmJjMDBkZWRkY2MgcmVsZWFzZTMxLW1haW50Cis4MjYxNCA3MGIwMzg4ZjlkM2Y1MjU2NWE4NTg5MGNhYWMzZmI5NDRlMzBlMmE0IHB5M2stZHRvYQorODI2MTUgM2VhNmY2OWRiMjQyNjE5ODI0YjA4YmE4MjJiN2ZkZWUyMGNkMmY5MSBweTNrCis4MjYxNyA1ODEyZGQ0NDgwN2FmOTY1MTdlZjJmM2FmODExYzFhZDRkN2M4M2EzIHB5M2sKKzgyNjE4IGQyYjE2ODlhMzM4MWVjNjUyZDdjNGVjODUyM2M5Mjc2YWI0OGRmYWYgcmVsZWFzZTMxLW1haW50Cis4MjYyMCAwNTYyZjJlMDUyOGQxMmRiZDJlMjU0YWYwNGQ0MjBiZmQwOTk4NjRkIHJlbGVhc2UyNy1tYWludAorODI2MjEgNDNhYmEwOWU4OTQ2OTM2ZWQ1M2UyYmFiODJhYjY4ZGViOThhMjFiOCByZWxlYXNlMzEtbWFpbnQKKzgyNjIzIDkxMmFiMmZiNDNmNThiMDEyOTg4MzkzNGFiZGJmNDY3ZDA3NzBhMWMgcmVsZWFzZTI3LW1haW50Cis4MjYyNCBmNjQxYmQ1NDZkZTQxMjhjZDc5Y2U3OTMyMDdkMjMwMGI0ZWY4NzAwIHB5M2sKKzgyNjI1IGU2NTU4NDllNzljNmM4MmE5ZDQ5N2I3OGMwNmIwNDMxYWIzOTI1MWYgcHkzaworODI2MjYgODc1NTVmNDVjZDZiZTU4NjdkODJkOTgyNjY5NGUyYTRlYmJkYzdkYSBweTNrCis4MjYyOCA3NGIyY2JkYTliZGE0NDdmOTk3ODM4MTIzNTU5Mzk5MTU4MTM3MGQ5IHB5M2sKKzgyNjI5IGNjZjhlNjAyMGNmMzRiNWY1ZWM4OGRkNWYyNjhiMTMzNzQ2YWYxMGQgcHkzaworODI2MzAgZjYyNjZjNDU5MTU2MzA2YzliYWJkNWZkOGYzMmQ3NzZjM2QxMGMwYSBweTNrCis4MjYzMSBlN2RhOTY4ZTNlNWEwZGE2NGJhZDlkZWQ5ZjRhZjVhMjA0Njg4MzQxIHJlbGVhc2UyNy1tYWludAorODI2MzIgNWYzZTE4NmJlZjBmMDgzNTNiNzJhZDM5NDA5OWExY2IyYzRmNjY1ZSBweTNrCis4MjYzMyAzNGUzZGJkNDdlNGZhM2VkMGI2ZjY1NGEyY2VkNDEzOWNkN2E1MzFjIHB5M2sKKzgyNjM0IDk0NjQ2NGZkNjkyMTBkNzBiNGFjNWRkZjY3OWUyNzlmYWFmYjVlZTIgcmVsZWFzZTI3LW1haW50Cis4MjYzNSA1NTNmMTBiMDM3ZDllZTIzM2JkNTFhYzBjODM5MTljYzdhNWY4YzViIHJlbGVhc2UyNy1tYWludAorODI2MzYgMzg0ZjczYTEwNGU5NGUxMGQ3OWU5YzE5M2U3ZmQwZTJmMmM4NDg4NCBweTNrCis4MjYzNyAzODJkY2IwYzYwNzNhMTQ2OGJmNDcwYjIyZjcyY2ZlMDc0ZWU2NDk0IHB5M2sKKzgyNjM4IDU1YTAyNGY1MTUyNGJmZDAzNzE4OGQ2MWY4YWVlYmJmMjMyMWY1YTQgcmVsZWFzZTMxLW1haW50Cis4MjYzOSA4YzZiM2RjNjUyZmI5MjMyMmE4ZDM0ZjZhNjM1NDFiM2UzZDMyNjQ5IHJlbGVhc2UzMS1tYWludAorODI2NDAgYTAwODJhNzRkMTI1YTJlODVmOGNkMDVhNTNiMTYxMDY2YmFkYjU1NiByZWxlYXNlMjctbWFpbnQKKzgyNjQyIDA0MDY3OTA4N2QwMzUyYjU2NTEzY2U1Mjk0MjNjMjkyMGMyMjY2MTkgcHkzaworODI2NDQgY2EwNTM3MWNmZjEwYTJmOWQwZjJhMDNiNTEzODQ0ODQ4ODY4NzFhMCBweTNrCis4MjY0NSBmODQ1ZWQxZDg5ZDViYjhjMDMwYThhMTcxMGNkODBiNTFhMmI1ODFiIHJlbGVhc2UzMS1tYWludAorODI2NDYgY2EwYTMzMDFhN2VhMWJhYWJhZjVjMDJkYzY1M2IyN2ZiODlmYjM0YSBweTNrCis4MjY0NyAxMGU2YTU0MzBiNzk0NGI2YmViZjE1M2UxZDZmYWEzYTQwNWI4MDkwIHB5M2sKKzgyNjQ4IGM3MzA1YmE4NDYxOTdiOTM1YmZlZGEwNWQ5NDhlYzg1ZjYyYTExOTYgcmVsZWFzZTI3LW1haW50Cis4MjY0OSBkMTU2ZjdiMzljM2MzNDMyM2ZhZjk0N2I5ZmJmMjAzNmY4MTg2NTcxIHB5M2sKKzgyNjUwIDViYzdkYmQzMWQxYjQ5NDZjMzk1ZGM2MzIwY2Q0ZWExZTYzMGViYzQgcHkzaworODI2NTEgYjA0NDYyNTMyMmUzMTZjNjQ4NGE1MzI2MWRmZGIzZWI0YWZlMGFmMiByZWxlYXNlMzEtbWFpbnQKKzgyNjUyIGE2MzE4ZGFmYjhlYjVjMmQ4MTlmZDcwODIyZGJlYjVlNWZmNzBmZWYgcmVsZWFzZTI3LW1haW50Cis4MjY1MyAzZDhhN2Y3MDFjYjFjMjUzN2Y1ODFhMTc4MGExMjZlZmY2NTUyZDY5IHJlbGVhc2UyNi1tYWludAorODI2NTQgMDlmNWZkMDEzYzBiZTJmZTdiYjBmNDk0NjRhZTMxZTcyNjYzNGE5NyBweTNrCis4MjY1NSA5NzUyYjg1YzAxMTkyZmU4MzhkYWVkMGVmYWJhNTI3MDZkMDI2YzUxIHJlbGVhc2UzMS1tYWludAorODI2NTYgNmVkYzNlMmE3ZGE0YWFkYWZhY2U0NTY5YjBmYzdiYmIzNTU0NDNiMiByZWxlYXNlMjctbWFpbnQKKzgyNjU3IDk3NGY4ZDhiYzBkNDRkMTVkOGI4ZGY1Mzg1MmViYmE4Y2U3ZDg2MGMgcmVsZWFzZTI2LW1haW50Cis4MjY1OCBjOGJlY2Y2MDZhMGFhYzA5NmJmODVmNDk2ZDY4Yjk2MzgyODY3NGNhIHJlbGVhc2UyNy1tYWludAorODI2NTkgNzMwYjcyOGU1YWVmYjU2Y2NmYzRlOWMyY2M5MzRjMmFkODYzODA1OSBweTNrCis4MjY2MSA3YTIxNmJjMmJlZDY1MGI5NzA1YjY4OGE4YzBiNjhlMjc0M2NkNmQ5IHB5M2sKKzgyNjYyIDM1MjhjNGU3ODBiZjA3YjhmOTAyYWNlNzUzNzBkNzY3ODU3YzBmYmYgcHkzaworODI2NjMgZTRiZGE0YTUyMGNhNzUyOTJhMTcxNjBiNTU0OWQzZDYzNDAzMGNlYiBweTNrCis4MjY2NCBmZjJkMWIyY2RjNjkxMzlmMzJkZTc4NDcxM2QxYmRmMDVkMjhlMjMxIGltcG9ydF91bmljb2RlCis4MjY2NSBjNjdmOThhZGI4ZjM2MWNiMTkzNjc2YzhmNTFjOTE1NmU5MjdhYjBjIGltcG9ydF91bmljb2RlCis4MjY2NiA1YjYzMTg1MzcyZDFmMzdhYTcxZDZmMTJiY2IzNDY3Mzc3Y2M5N2MzIGltcG9ydF91bmljb2RlCis4MjY2NyAxNmUzNDhmMTY1Zjg1ZDM0ZDZlYjhiOTc0OTU0MmY0ZGNlMWVmZmI4IGltcG9ydF91bmljb2RlCis4MjY2OCA0NGJkNGFkMWY2ZDQyZmFiMjA0NDUwNjQ0ODUwMGQyMzcwMzdlZDNmIGltcG9ydF91bmljb2RlCis4MjY2OSA1YjZmMDNmMzkxZGFmZTI0NjBhMGEzOTk4NTgzYjU2Mjk3ZGU3MzExIGltcG9ydF91bmljb2RlCis4MjY3MCBlOTYyNzlhYzZkMTQ2OGEzNGQxYTdmNDMyNzA3NTM4ZTBiNDI4MTYwIGltcG9ydF91bmljb2RlCis4MjY3MSBhOTdmNzUwM2U1MGM0MDU2ZmUzMGJhNWY0MzQ5MjUyMGNkZGMyMWM4IGltcG9ydF91bmljb2RlCis4MjY3MiA2MGZjOTQ0NmFhMmUwMzUzNzZkZmEwNzExM2NlYTZmZmQ2YzkzMWNkIGltcG9ydF91bmljb2RlCis4MjY3MyBjMzBkODQ4MDdjNjJkMDk1ZTg0ZGRhNWZkMzI3NTBiZGFhM2ViMzc5IGltcG9ydF91bmljb2RlCis4MjY3NCBkZmUyNjAyMzFjNDljMTQyOThhZTEzYjUxNGRhZTMwNThmNDYwYWFmIGltcG9ydF91bmljb2RlCis4MjY3NSAwY2Q5NDE2YTFjMWU2N2I3ZjQwOWU2ZjMzM2E3ZGI2MTIyNWRiMTU5IGltcG9ydF91bmljb2RlCis4MjY3NiBmNzM1YmIyYjA2ZGUxODU5OGRjMzA4YTE5NDQ4MjEyM2IzMjY1MWFmIGltcG9ydF91bmljb2RlCis4MjY3NyBiZWJjYjZhYjA5YTU2NWIxMzc2ZGUxYTcwYmQ4NTlhNTUxYWY2ZDJkIGltcG9ydF91bmljb2RlCis4MjY3OCBjODcyZTRmYWExZTc0MjM5MWViZTA3MjVmYzgzMzM2ZWRjYjgxOTcwIGltcG9ydF91bmljb2RlCis4MjY3OSAxNGRhN2MzZTkyMjMyYjE0YzM4ZDdmMDBmNTFhN2M3MGM4YTJlMGRiIGltcG9ydF91bmljb2RlCis4MjY4MCAwOTUyZTJkZjNjNGQxYjk4NGNjMGVkZGI3NjVkOThiMjJmYjI4MjI0IGltcG9ydF91bmljb2RlCis4MjY4MSA3NmYzNmNhMTA2MWY0NGZhNWE3YjkxM2I2OTI0MjRmMzc5NDFhZWUzIGltcG9ydF91bmljb2RlCis4MjY4MiAyMmI5Mzg4ZDdjMGVmOTBhN2U2NjE0Y2VlNDA0YmYwNWQ1OWZlYWMwIGltcG9ydF91bmljb2RlCis4MjY4MyBlNDIzM2U5Yzg0NjEyMjY1MWRhYzgxNWJlODQyMTc2NDBjNzkyYzc1IGltcG9ydF91bmljb2RlCis4MjY4NCBlNzY2ZjdiY2IyZDU1YzM0Nzc0ZGEzMmJlNWNmOWI4ZWNhM2RhMzYxIGltcG9ydF91bmljb2RlCis4MjY4NSA1Y2E0MWRlZWJkMGZmYTJlZWY4NjMwZGRhN2I4ZmNkZDBmNGU0Zjc1IGltcG9ydF91bmljb2RlCis4MjY4NiAyZTlmYzUzMmQxZDFiZDliYzgxYjA1Yjk0OTkwYTA0MTM5ZGUyYzVmIGltcG9ydF91bmljb2RlCis4MjY4NyBlMWQ4NmNmMmNmZTQ0YmUwOTQ1M2YxZWExOThiZTBiOTE4MmM0ZWZhIGltcG9ydF91bmljb2RlCis4MjY4OCBlMGZiNDllYzk0NWNjYTU3MjQyOTQ2N2EwNjg5NTM2MzM1OGJlMjA3IGltcG9ydF91bmljb2RlCis4MjY4OSBhMmM3ZjIwNjBlNWJkYmQ4N2NmYmFmZDU0Nzc5ZmM1OWY0YjYzYzg1IGltcG9ydF91bmljb2RlCis4MjY5MCAxYzFmZDk1ZTEzYjQyZWJlZmJjMjY4MWYwMzE4NzZlMjQ0MjU1OGUxIGltcG9ydF91bmljb2RlCis4MjY5MSAwYTMwYjU2Y2EzYWM5ZGUxYjE1YzhhMzY2ZmQwZGMxNmVlYjIwOWFkIGltcG9ydF91bmljb2RlCis4MjY5MiAzNjBlMWEwOGU1M2I5NDgwYWE1ZGNiMzhlMDk5ZWRkYmMyOTYzZmYyIGltcG9ydF91bmljb2RlCis4MjY5MyA2MGZiZmFhN2Q5M2RmZGIxOWQ0ZGIxM2Y5MzJhMmMxZDA1M2VjMzRlIGltcG9ydF91bmljb2RlCis4MjY5NCA5NTBiNDc1NGJiZTJhYmZjMGM1MDFiYmYxZjYwYjkyNTNhNTgxMTk0IGltcG9ydF91bmljb2RlCis4MjY5NSBmZmViODUxMjhjN2U4NDgzMzE2OTZiNmUxNGIyM2E0ZWE3Zjk4ZWE5IGltcG9ydF91bmljb2RlCis4MjY5NiAwMWU0ZTNkMzc3NGQ2MDQ1YzI5OTIzNTg0YzA4ZjdlODQ1MjI4NGM1IGltcG9ydF91bmljb2RlCis4MjY5NyBlODFlZDNhZDA2OWQ5YWMyZTVlYTljY2Y4OTNhNTgwYWZkOTAzYzgwIGltcG9ydF91bmljb2RlCis4MjY5OCAxYWRjMjNkY2U5NzE3YzQ4NDAxMDBhZDJlMzM5MmU0YzYzNjNiYTMzIGltcG9ydF91bmljb2RlCis4MjY5OSAxNzdhODJlY2ZmNjcxMDZhYmJjNGM2NzU2NWMwZjUxY2JlNjAwMjUzIGltcG9ydF91bmljb2RlCis4MjcwMCA4MjQ5N2YxYzFjNTQxNTI4M2FhY2JlYmEwM2IzYWNhNzM0ZjA3ODA5IGltcG9ydF91bmljb2RlCis4MjcwMSA5MGNhNDVkNjU2YzJkNjU3MDU1YWU1NjdiZmQ1Y2IwMzUyNDlmOGQ5IGltcG9ydF91bmljb2RlCis4MjcwMiAzMGJiYzE4NjBmYmIyZTdiZDA2NjY5YzQ2NmFlNzc0ODc0YTdmZDYyIGltcG9ydF91bmljb2RlCis4MjcwMyA4NjVkMThhZmRhMTUxMDk5M2JjZWI0ZGEyMDZhMDU0MjZmNmM1Yjg3IGltcG9ydF91bmljb2RlCis4MjcwNCA3YWYyMjllYTJlNjY1YTllYzFhZWE2Zjc3MWM1ZTBmMGRmZmVlZWY0IGltcG9ydF91bmljb2RlCis4MjcwNSBhMjljYzM4NTAwMjlmNTdlNzIyMzFhYTNkMzZjNmIzYTljYzg0OGM4IGltcG9ydF91bmljb2RlCis4MjcwNiBhNDIxYjRiNDVhYTY2MjBmMmQxYTQ1MWY1YjFmODJmNzBhZjY4ZTY0IGltcG9ydF91bmljb2RlCis4MjcwNyBhN2JiODRmODQ5OGExZjZiYzU1YmNkMWMyZGEzYzZlMWIwNTUzNzJiIGltcG9ydF91bmljb2RlCis4MjcwOCBhZjdlYzE2OTEwNDdiY2MzMmEwNjI1NzA4ZmIxMmVlMzU5MWZiOWQ4IGltcG9ydF91bmljb2RlCis4MjcwOSA2OGIwZTcyZWY0ZjIyMWQwYjVlNmEzYmVhNzUyYTRiY2M4OTY2YWQ4IGltcG9ydF91bmljb2RlCis4MjcxMCA4ZTcwYTVlYzFhY2E2Mjk1NDhlOWMyN2YxMTczMDVkZjljODljZWU0IGltcG9ydF91bmljb2RlCis4MjcxMSA2ZGNhOTM3MDJlNmJkMDJkZGM3ZWFiNDJjYTFiOTdiODE3NzBjZmU4IGltcG9ydF91bmljb2RlCis4MjcxMiA3NmMzNWQ4YTI2YTAxMjBkOGQwYjc5MzgyNGY5ZDg5OGUwZWNhM2Q5IGltcG9ydF91bmljb2RlCis4MjcxMyBhN2NmOTAzYjE3ZGNiMWUyNTZmNzI3N2VkNThlNmM1YjI4YmRlNDgwIGltcG9ydF91bmljb2RlCis4MjcxNCA3OGU2YTZmYmQzNjIxYmQ4ZjcxMDM0OTczMjFmNDg1NzcxYTI5ZjhjIGltcG9ydF91bmljb2RlCis4MjcxNSBhYjE3YjBjMjJiYTFkMjRlMDU0ZGI5Mzk0ZDUwY2ZmNzFiOTYyZTBjIGltcG9ydF91bmljb2RlCis4MjcxNiAwOTViMjk3MmM0NGYxMTIzNmMwZTI5MzAzYzIzN2QwMDRlZDljNTBlIGltcG9ydF91bmljb2RlCis4MjcxNyAzNmY2ZWQwNjUxZTEzNDBlYmY4MWU0OWQ1MGI5MjIwZjlmMWU0YzlhIGltcG9ydF91bmljb2RlCis4MjcxOCA4NTJlNGE3NWUxNTY5MDRhZTQ3ZGY5YmY1YmVkZmY2ZDVjNDZmMTc1IGltcG9ydF91bmljb2RlCis4MjcxOSBmMGVmODNkOTEzNTQ1YmRlMzA5YzRiNGEwMGZkYzA4MTM0YjJjZWE4IGltcG9ydF91bmljb2RlCis4MjcyMCBlY2JhOGZhNWM3NDNlZTBhMjM5NjU1OTE2ODkyMDJhNTg5ZDYxMzcwIGltcG9ydF91bmljb2RlCis4MjcyMSA4ZGNmODQxZjFiZDQwNWZlY2JlZmIwNDZhZDRiNDI1MzMxODY1MGIwIGltcG9ydF91bmljb2RlCis4MjcyMiBiYzBiNGM5MThkZGI0YTdkM2U4OTJjZTQ5ODRjZTc5NTBhMDMwNGRlIGltcG9ydF91bmljb2RlCis4MjcyMyAwZTc4MmE2ZTZiYjc2ZTNlZGE3NmE3YWQyZmNmMDhhYmU1ZWFkZjcxIHB5M2sKKzgyNzI0IGM3ZjM2MTcwMjhhODM5OTE3YjUxMmNhNWJhNTdiZmI4NmRlOGQyZDIgcHkzaworODI3MjUgYTIxNzcyNjJmNmI3ZTVhNzQ0Zjc0MmI0MGRiNzdlZDkxMzA4Y2RhNSByZWxlYXNlMjctbWFpbnQKKzgyNzI2IDA4ZWVlODlhZjdiOTlkMTNhMDU5OGRmNTkyNzc4ZTlhOTYyMzI4YTMgcmVsZWFzZTI2LW1haW50Cis4MjcyNyA4YzYxNGJjNzY2YjQ1Mzk5ZjMxMWRlMGIzMmVhZTI4MTgwNmEwYTYxIHJlbGVhc2UyNi1tYWludAorODI3MjggMGQxMjIwMTc1ZjI5ZWQwMWYwMDk2NmQ1Y2FhNmNhOWQ0N2MyNzJjMyByZWxlYXNlMjYtbWFpbnQKKzgyNzI5IDhhYWFmMDFmY2YwM2VjYTQ0MWFiODRlOWYzOGQzYjFlMGEwYWZlNmMgcmVsZWFzZTI2LW1haW50Cis4MjczMCBmM2JmZGZmMjE0NmFhNGUxMDMyM2E1MGZjYzRhOTdmOTljZTM3M2IxIHB5M2sKKzgyNzMxIGNmY2Y2ZjYzZTBiNGFjMDViNTJhMDkxNTEwZTVjZDVmZWE2YTFmZjUgcHkzaworODI3MzIgNTg1YzcwZGMxZWFhNGY3ZWVmYmZmYjFhN2ZiMzFkMmUwNzM4OWRjNyByZWxlYXNlMjctbWFpbnQKKzgyNzMzIGRiMjkzZmQ3NTI4Yjk0YzAxN2NkYzJjMDZiNTVkMzczN2Y3YTM2NmYgcmVsZWFzZTMxLW1haW50Cis4MjczNCA1MjNhZmZkNGQ0NzI5MzcwOTA3Y2VmMzU5ZDBjNTQ5ZGYxYzM5MmIzIHJlbGVhc2UyNy1tYWludAorODI3MzUgNDNhMGZjMTg0YTU4MTc0OTEyZWFhMTRjY2ViZmQ3YWY1YmZmM2RlMiBweTNrCis4MjczNiA0N2Q0OWI0MDYyMDNhMGYyYTk3ZjE1ZTFlMDY4YTI4ZjM3NjQwNTRhIHJlbGVhc2UyNy1tYWludAorODI3MzcgZTBkZWRkMmRjZmE4MWUwMTFhOTY3MWQ1ZDZjZmQwN2MwYzRiZDcwYiBweTNrCis4MjczOCA3ZTk0YzAzYmI4NGUxNTNlYzFmMTFlNGE3ZGEwYzI0NzMwMTQ2ZTRhIHJlbGVhc2UyNy1tYWludAorODI3MzkgMTBjMDYzMGYxYzE0M2E1Njc1M2MzYzQwZjVmMDBmOGVmMjljNWZkOSBweTNrCis4Mjc0MCAwODlmZDcxMGRjYTg4NDkxNTllM2VjYzUxNTNiYTI3N2FmODU0ZDUzIHJlbGVhc2UyNi1tYWludAorODI3NDEgN2Q5YWIzNWU0M2JjNjZhZjljNDJkOWVkNzg4YmRlZDMwMjY3OWE1NCBweTNrCis4Mjc0MiA4MTVhZTdmMzczMmJlZWJkMWE2ZTFjYTMxMmE2YTVlYjMwZjIyZjE0IHJlbGVhc2UyNy1tYWludAorODI3NDMgNWFlN2RmNmM5M2VkOTliNGJiMTU3YWNlODY1NjBiM2E4OWQzMmY2MyBweTNrCis4Mjc0NCBlM2Y4M2Y1NmRkM2NkZTkzNmM3ZDE5MGZmMzg5ODdmMTljYjg4YWRlIHB5M2sKKzgyNzQ1IGU5N2NkZDVjNWU0ZmM5OTE1NjkyYjgxYzY2ZWUzMzkyYjQwZjViMDMgcHkzaworODI3NDYgOTJhOWRjNjY4Yzk1MjlmMDE4YTYyMGI0NzA3YmMwOWNlMTg2MTZjMCBweTNrCis4Mjc0NyBkNDFhMzFmNWJmODJmNjI0YWYyMTlmOTY5YTdlNTZjYTUzNTU5OTUzIHJlbGVhc2UyNy1tYWludAorODI3NDggNGVmZjljMzVjNTRhN2JiOTg1NGZlMWI2MzEzNGE1ZWM1MmU3YWJmZSBweTNrCis4Mjc0OSBmYmE5ZTkxZTg4ZGNkZjBjNzQ5MzQ2YmY2NmQxMDQxNGU2NTlmZjdkIHB5M2sKKzgyNzUwIGM3MGQ1MGQyMWY4NTFhNmE1NzE0MDY5OWVmMmRhOWU3YmFiM2NmNTQgcHkzaworODI3NTEgZGUxYjlmYzNlMWU3MjIwZjQzMmY2MDdiNThhNDYxM2ZhYTFlNTY3ZiByZWxlYXNlMzEtbWFpbnQKKzgyNzUyIDhlYTYwYWUxNDk2OGYzNjlhMjljMzQyMjg5NWQ2OTVjNTg1MTczMjAgcmVsZWFzZTMxLW1haW50Cis4Mjc1MyBiZDE5YzcxNzhmMjQyYzM4NDE0MWY2MjJhMzMwN2FjYTA2MWIxN2RiIHB5M2sKKzgyNzU0IGY0NzgxYWE4MmIzNzUwYjFkNDg5ZDYwYzMxYjc2YTQ5YzM5ZTAzZTIgcmVsZWFzZTMxLW1haW50Cis4Mjc1NSA1MDI1YmEwNTUzYjYzMjllYjE1OGQ0M2VjMTZjMjU4YzU5ZjkyNmRkIHJlbGVhc2UzMS1tYWludAorODI3NTYgNjM2MTNjNGY2MzE3ZjA2YTA1MTY1YTNlNzI2ZjYxMGQzNTEwODIwNiByZWxlYXNlMzEtbWFpbnQKKzgyNzU3IDRkMjIyZWUyYTFjODU0NzZkYzBkNmNlZDVmODJjZjkxYzBhM2Y4MjQgcHkzaworODI3NTggN2I1NzI4OWViZTBkNGVmOTkxZjU1ZmYxYzk3YzkwNDM4M2U1M2NiMSBweTNrCis4Mjc1OSA5ODNlMmMwYmY4ZGNkZWNkYTk5YmY5MTIwNzYxZjI4NWEwYzNjOTUwIHB5M2sKKzgyNzYwIDM1YzU5ZDExYWUxMzgzMjc5M2IzMDhiNDFjNzRjOTk1ZTg0ZmE5NDUgcHkzaworODI3NjEgYmNiNzllMWFhMDBmN2Y0NGQwOGI2Yzc4NTY3YTU1MTM4MmY2MzJmOSBweTNrCis4Mjc2MiAzM2RlOWNhZjcwOTAwMDAyMmE5NzJiYmJiZGE1MDZiMTJiMDNiODA5IHB5M2sKKzgyNzYzIDI1NGVmNTIwNTEyOGFjNmQ2MDI5MWI2ZTI5YTVkMDBjNTNhZDY1M2MgcHkzaworODI3NjQgOTQzNzg0NzBhZTFjOTA3ODNmMjJlNzg4NTk4NzE4YzNkNDdhODBiYyBweTNrCis4Mjc2NSBmZjFhODAzNzY0OGM0YmM5YzU0ODc1ODc0OTUwN2E3MWE1MTYwMDBhIHJlbGVhc2UyNy1tYWludAorODI3NjYgOGJlMmI5ZTQ4NzE4N2JkYzI4NTdiZmI4MjgxNGRlODU4MTZmYjhiMSBweTNrCis4Mjc2NyBhYWMwOTJlYWY5ZDE4MmQxNTZiYzJkN2EyMDBjOTM2ZmEyNmViYzE3IHB5M2sKKzgyNzY4IDBmYmRjM2ZhMDI0YmU1OGU4ZjFiMWQ4ODg3ZWY4ZDhlOGQ0NWIwM2IgcmVsZWFzZTMxLW1haW50Cis4Mjc2OSBkYWIyODZkMmJhODJmZmFiYzk5MmEyYzE3ZDZiYzc4MGM5ZDcyOWE3IHJlbGVhc2UyNy1tYWludAorODI3NzAgNDk4NjFkZmIyNzAxODAyMTExNWYwYTIxMDNlMjM2MGMwYjIxNDJhYyByZWxlYXNlMjYtbWFpbnQKKzgyNzcxIGVkM2JjN2E5NmZmYjRiYTM3ZDNiNjAzOTAyNmVhMWE3NjJlNjAwYTIgcHkzaworODI3NzIgYWNkNmNjY2NlODM3YjkzNTE2MTA2NDYxNjZlNmVkYTczODFlYjcwMiByZWxlYXNlMzEtbWFpbnQKKzgyNzczIDQyOWQwYzdjZGI4NTZkYzU5YjIzYTE5YmViMTgyYzE3MTI3N2FiYjEgcmVsZWFzZTI3LW1haW50Cis4Mjc3NCBhY2VmNWQ2NjA4MzMwMDk4YzY2ZjNlMWNhODZiNDNlOGI5YWVmNGM5IHJlbGVhc2UyNi1tYWludAorODI3NzUgMDNmNzNjNDZmODljN2NhNzQyYzg5ZTVlZjRiMDNkZjljYWEzMTE1MyByZWxlYXNlMjctbWFpbnQKKzgyNzc2IDAzMDM2YWZjYTU0OTFhMDE0NDk3MTY4ZTJiMmE5NjI0MmU4Y2VlNzcgcmVsZWFzZTMxLW1haW50Cis4Mjc3NyA1ZTYwYzdkYjBmNTEwZWRiYTMxNmZkYTlhOGZjNWJjZWRmMjgyMzZlIHB5M2sKKzgyNzc4IDI4NzU1ZWI1M2YzODk0NjBlZGIwYjJlMmEyZDRmZTZkMDYyNjI3NTYgcmVsZWFzZTI3LW1haW50Cis4Mjc4MCBiNThiNGFhNDY5YzRmODE3OGY3MmVmYmYyYTNlNzU0MWZjOWZmYzVmIHB5M2sKKzgyNzgxIDE2MzYxMjRlNWZmZWViNmNjMTEyMjk1MWFiNGEzMzNmOWZkNzEwYzAgcmVsZWFzZTMxLW1haW50Cis4Mjc4MiA3ZTA5YzY0ZDRhNjRjZTBkMjY0NzFjMjc5ZDA1YTQ4NmFhNGZkMDRhIHJlbGVhc2UyNy1tYWludAorODI3ODMgZjc1NWQxYWI4MDc0NmRiNmNhNTBlYWYxMzBhNjkzZmU0NjI1NTM3NSByZWxlYXNlMjYtbWFpbnQKKzgyNzg0IDUwZjRmMTEzYmJjM2Y3MzFmYmYwMzIxMGQyOWFjYjVjYzE5YzU5OTUgcHkzaworODI3ODUgYTk5ZThhZGFjMDgxZGZjYTI1YmYzOGY1YzFiMGEyYjFlMzQzMDVkNSBweTNrCis4Mjc4NiAzNjdkNjFlNmE3MGYwNjhmMTc1Yjc0OTk1OGJmYTVmMzlmNTk4NmQwIHJlbGVhc2UzMS1tYWludAorODI3ODcgNTU1MzNkNTgyOGIwMzFhNmFhYjYyZjllOGM4MDUxZDUyNTVjOGFlNiByZWxlYXNlMjctbWFpbnQKKzgyNzg4IGYwZGQwM2JmNmJjNWZjMDc3ZDdhNTUwMTNkYTA2MjUwNDIzNWQwMjAgcmVsZWFzZTI2LW1haW50Cis4Mjc4OSA1ZGIyZTA3YzQ0NTFmYzJiMzkxMjI5MGU3MmIwNGZmNmIzNjRhZWQ4IHB5M2sKKzgyNzkwIGJhMGY2ZTE3ZWIyMjNjMDNiZGEzYTZhZWJmYWU3MDgwZTFiM2YyYTggcHkzaworODI3OTEgMGIwNzFlMWVmZDQxNGYwYmQ0MTlkODU5MjViYmU2ZjhiN2E3YmQ0MyByZWxlYXNlMjctbWFpbnQKKzgyNzkyIDgxZDA1NTdkZjY0N2JmZjVkNjM4MmRmNGQ1ZmMwYjg0OGNhZTNiNzkgcmVsZWFzZTMxLW1haW50Cis4Mjc5MyBmOTdiZTU4MGQ4YzE2ZWIwZjlhYjYxNTA4ZjZhZTkxNGRjM2QxN2E5IHJlbGVhc2UyNy1tYWludAorODI3OTQgYjkxNTE2MjQyN2FiNGY2ZTc0OTc2OTQ2ODUxZTFmOWFmZDJlOWQ1NCByZWxlYXNlMjctbWFpbnQKKzgyNzk1IDQyNGUzZmNmZDNhZDExZTA1MTc1NDU0ODk4YTAyYjM2ODkwZDI4NzkgcmVsZWFzZTMxLW1haW50Cis4Mjc5NiBjZTkzNWU3MWJkMDdlNTE4ZTJjNzdjNDE5YjAxODAwYmNmOTU2MjVjIHB5M2sKKzgyNzk3IDQ3MDdlZGU0ZDE0ZmYxNGU3MWIyMzU0ODkxNTAzMDlkMjAwN2Y4M2QgcmVsZWFzZTI2LW1haW50Cis4Mjc5OCBjOGI3N2VmZThiNTZlOTczNzczZWZmN2MxMGYyYTM4Yjc4YzBlM2UwIHB5M2sKKzgyNzk5IDBlNmZiZjUxODg1M2ZlYmZmZDc3M2NlNGYwMGRjMzMwY2EwMGZmZGEgcHkzaworODI4MDAgZWRhYjUwMWY5ZGY4ZWZlMTgyMjI1NmExYTRmYTUyZTNmNmRiNTY2NyByZWxlYXNlMzEtbWFpbnQKKzgyODAxIDI5N2YyYzI4ZjE4MjkzMzlmNGE4YjFmM2MwZDA4YmRjOWY5MTdjNzcgcHkzaworODI4MDIgZDVkNTEyYjg2NWE3NWQzZGIyNDU4MmY3MGEwNjk1MGVlMzliZDRmMiByZWxlYXNlMjctbWFpbnQKKzgyODAzIDUwMTJmZmFlMThmYWM2YjkyY2MzN2VhMTNmMDU0NmQyMGU1Y2E0NmEgcmVsZWFzZTI3LW1haW50Cis4MjgwNCA5MGJmMDYzMWJmYjhlZTg3MGRlYzdkYjlhYWE0OWQ2YmJhOGRkODI0IHB5M2sKKzgyODA1IDRjYjBlODdjMDdjYTM2YTFmMGRmMTU5MDQ0YjU4NDU0Y2E5YjJlOTEgcHkzaworODI4MDYgNjEyZTEyNjMxNTExYjIyNGQzYjRkMTgwNDBlZmE2ODEwMzcwNmY3MiBweTNrCis4MjgwNyBkMDkwZjYyNTRjNDUzZGNlN2Q3NGRmYjA4ZTc3NmM5ZTJmZjU2YzllIHJlbGVhc2UyNy1tYWludAorODI4MDggMzY1ZWVhYjRhMzUwMjYwYWY3ZTEwNzYxMmE4ZjI2NjBmZmFhZTMxOSByZWxlYXNlMzEtbWFpbnQKKzgyODA5IGZjZmE3YmJlMTg1ZWFmYzBhOWIxNTdjNjI5ZjEyNWExMWJkODQzZGYgcmVsZWFzZTMxLW1haW50Cis4MjgxMCA3ZjU3NzUzOTVkMzI4YjBjMjBkZjFjYTBjNDE3ZTRhMmY1MzgyYWVmIGltcG9ydF91bmljb2RlCis4MjgxMSBiZTEzZmYzNzU1ZTlmYWI3MTYzMWNjOGU4NzQzZWJjNTQ5NmQ3MDRmIGltcG9ydF91bmljb2RlCis4MjgxMiA4MWYwZjBkNTNkMTA4NGU2MTcyYWUyNjAzZGU1MDdlZTc4NTZlZDEyIGltcG9ydF91bmljb2RlCis4MjgxMyBkMTM5MTRlY2QzNzBmZmJiNDk4MTJmNWVmYzdiNmJhMzg0NjU4ZjNlIGltcG9ydF91bmljb2RlCis4MjgxNCAxODlmYTkyZDE1ZGM1OTc4MjllNzVmMDRkYjFkOTg2YmYzNmQxOWFjIHB5M2sKKzgyODE1IGIxNDM4ZDI2YzE2N2I4NjIxZGU4YzIyODllNzA0MWVjYmExZjI1MWIgcmVsZWFzZTI3LW1haW50Cis4MjgxNiBhMzUyYjkxNTZjZWVjYjI3ODg0OTg1OTkwM2NkMGQ1ZTRlNWQ4ODdmIHJlbGVhc2UzMS1tYWludAorODI4MTcgMGY0YjdjMDdkMWIzN2I1MjExYzdjMjM1ZjEwOTM0MjBlYmM2ZjRiYyBweTNrCis4MjgxOCA1M2U3YWU4Y2EwMzkxNDhjZDRhMTI1NjY4ZGQ3MWMyOGYzN2M2MzM0IHB5M2sKKzgyODE5IGVhY2NmMWExY2I5MDNiNGRkNjgyM2UyMTFmODk5MTQwYTlmY2MwMWYgcHkzaworODI4MjAgNGMxMWU0MTQwY2VkMWZhMzg4ZDc0ZDZhYmQ5NGZlYTA4ODQ0Mzk5OCBweTNrCis4MjgyMSAwNmIzODkxYTYzOTUzNGJiNGU0MzUyYmNjNzEyZjE1MDBkODcxYWRjIHB5M2sKKzgyODIyIDFjZjQzYzZlNjU2NmIzNjI5ZmYzMmMzYjI4NzQ3YmJiMWU3ZjZiZjYgcHkzaworODI4MjMgMTEyOWQ0ZGZlZWQ2ZmUxZDFiZmU4YzJkYzkxYTdhOWFkY2IwMTc3MCByZWxlYXNlMjctbWFpbnQKKzgyODI0IDQzMjkwOGQ1MjFjZWZlZWI5NTc1MmRiY2Y0ZDY5OGUwZjBhYmYxNjAgcmVsZWFzZTMxLW1haW50Cis4MjgyNSAzMmQ4YjIyYjBlN2M1ZTYyOTBkMGY0ZTdjYzk0NzA3ZWY1ZDYyOWJiIHB5M2sKKzgyODI2IDVjYTIyYTFiZTNjZDIxNjhlMzE0YTQ5N2JmZDk4YTIzNGZiNzI4MTUgaW1wb3J0X3VuaWNvZGUKKzgyODI3IDE5NDM4NGI1MzgwZTUyNDM4ZDJhYmI0YWEwNzM2MGJhNTc0MTAyZjcgaW1wb3J0X3VuaWNvZGUKKzgyODI4IDRkZDk4NTJkYWU5YjNlNzBlYjk5NDFhMGFmY2QzNGI3ZDA2MGVmODAgcHkzaworODI4MjkgNzM3NTE5ZWYxNjJlNmVmMjc2NmE2ZWJiMTQ2YjA3ZDRlNmY4NDA2YiByZWxlYXNlMzEtbWFpbnQKKzgyODMwIGFiMTAyYTIyNjAzODNiMTJkYzU3Mzk0YzA1NTY4MzBjOGY2NTY0MDggcHkzaworODI4MzEgM2YzN2UzY2NjMTMxMzg3ODdlY2I4N2EzNjcxYzI2ZTA5Yzk4MjdkMSBweTNrCis4MjgzMiA2NTc2ZmQ0YzBkMmUzMTE4ZDQ5NGQwZWRmMGViMjQxMTQ0N2IwOWYyIHB5M2sKKzgyODMzIDQ5YjgzYmZjZmE4ZmJiYTNmZjk2ZDZiNTM2YzczOGQ4NjJlOGZlYjEgcmVsZWFzZTMxLW1haW50Cis4MjgzNCA4NDlmNmUyMjBhYTBkMjMxMGY4YTYzMzI2MDUwMTEwYmM5MWM0MzE0IHB5M2sKKzgyODM1IDMwZjY5NWVjOTQ5YmQyMjU1MzhkNDhhMWRjYzM3ZWUwYmUyOGRkOWEgcHkzaworODI4MzYgOGU0MmM3YTVkYWI4ZDhmYjY0ZGExMGQyYTAwZGUxYzY4YmM0MjI1NiByZWxlYXNlMzEtbWFpbnQKKzgyODM3IGY1YjE4ZjI2OGY1N2Q4ZTk2MDJlY2VmMjYwY2QwNWExYjAxZGUyNTUgcHkzaworODI4MzggMGJiNGRhZDgxNjE0Yjc5ZjIyNmZkMzJlZmYzOGNhMTA2Y2ZmYTRjZCBweTNrCis4MjgzOSA2NjRhMjBmNGE4MzZjNzgyMmNkYjU2MTk1MGVlOTI2MjY3MTQ1NGE3IHB5M2sKKzgyODQwIDdlYWJhNDEzZmRhNGI4ZjI1NzYwMmEwNTZmOTJiMTVlMWNhMGMzOTcgcmVsZWFzZTI3LW1haW50Cis4Mjg0MSA5NGY1Mjk3NjRjMzg3M2M2NTFlZDQ1MTgxZTgwYjI2OGJiMzVlMTg3IHJlbGVhc2UzMS1tYWludAorODI4NDIgZmNkNDEyM2FlZDkzNDZjNjc5ZmY4ZThlYWU2MGQ3NjRjYmIzZGNhYyBweTNrCis4Mjg0MyA2MGZkZjE0NzAzMmNmMTVmOTc5NjkxZDdiNjI4NDMzMzRmNjBkNDIxIHB5M2sKKzgyODQ0IDY0Y2FhNzQ4YTI4ZWFjOTFkNWEwNTZlYmRlYmJlZjkwNTBlMTgzZjUgcmVsZWFzZTMxLW1haW50Cis4Mjg0NSA0ZWY2MzlmNGQ4MTAwYjQyOTBjZDU1YWM5NjM5OTExMWEyZGRiNjc1IHJlbGVhc2UyNy1tYWludAorODI4NDYgMWY5OTgyM2Y0ZmFlNzhhMWQ3NWU5Yzk2MmE3YTViYjg2MDExZmM0NCByZWxlYXNlMzEtbWFpbnQKKzgyODQ3IDViMzUyMTMzYzQ1MjFjOWU4MjhiMzJlYTM5YzBiY2U5YTlhZDViYjEgcmVsZWFzZTMxLW1haW50Cis4Mjg0OCBiOWVkZGYzYzFlOTBhMWU2ODlhNjJjYzYyZWJmMDUwYjlhZjRjYWI2IHB5M2sKKzgyODQ5IGVkZmQ3ZWE0OGVkYjI1ZWQ2ZmM5MWI4NDA4MDBlMTEzNzM3ZWY5MTMgcHkzaworODI4NTAgYjU3NDlkZDhjNDIxYmIxZDA4MjQ2NTI2OTJjYWY2YWZhNjhiZDAzYyBweTNrCis4Mjg1MSBkYWVhOTc4YTQ4YWU4OTRmNzYzMTlhY2U1NTc0ODI1ZjYyYWE1N2YzIHJlbGVhc2UzMS1tYWludAorODI4NTIgYWQ1MWFiOGI2NGJkMDNlOTExZTE3MmU5ODUyMzkxMzk3NTBhMzMxOSByZWxlYXNlMjctbWFpbnQKKzgyODUzIDRmZDViYTM1ZGY2ZTU2OTUxODBkMDI4OWJhNTE4MjI4MTBlOGM4YTggcmVsZWFzZTI3LW1haW50Cis4Mjg1NCA5OGE0ZTk2ZjFmNjc0MDFjZTZkOWE2MTdkMmMzNGE0MGM1YmIxYWMwIHJlbGVhc2UyNy1tYWludAorODI4NTYgMzFhM2Q3NmYzODM1MTlmZTZiNTQ2ODU0ZWExNmM1MmJhNTA2MTc0ZSBweTNrCis4Mjg1NyAyYzc1NzllMDRhZDIxNDU1ZmFmZWZhZWU0MjgxOGNmM2M4OWY1NGExIHB5M2sKKzgyODU4IGVmNjdlNzQ4MTI0NDc3NWQ1OGRlOTViYmJjZDI5ODM3NzUwZmI4MDUgcmVsZWFzZTMxLW1haW50Cis4Mjg1OSBhZWRiNTNkOGMyYjhjZDU0NzIxYTk2NTJmMjY5MzU4OTU5ZDc1MGRjIHJlbGVhc2UzMS1tYWludAorODI4NjAgNjdlZGM0MjRlOTdiODJjZGVmODU0NjcwNjk2YjA5NzEwMjE2NTg4MyByZWxlYXNlMzEtbWFpbnQKKzgyODYxIGU2MDdmZTE1ZjJkNjk0MjVmNDU4YTZhZDk0ZWE1OWZjZmQ4OWZiMzAgaW1wb3J0X3VuaWNvZGUKKzgyODYyIDFlMzY3YWZlZmQ3ZTBlOTk0MTMyZWI0ZDEyMDY3ZWFhODA5ZjljY2QgaW1wb3J0X3VuaWNvZGUKKzgyODYzIGE1ZmI3MDdjYWJkZWViZDg2ZTk5NTE0ZDlkNjcwZGZlNTY4NDUyYzYgaW1wb3J0X3VuaWNvZGUKKzgyODY0IGQ0OTNhMWI0NDU3ZTlhOTExZjU3MTI1ZDRkOTE5NDA4YjU5NWI5ZDUgaW1wb3J0X3VuaWNvZGUKKzgyODY1IDIwYmI2ZmQwYmQ5YzM1ZjViNTA4ZjU2MWQ5Yjg0NTllYzZlYjBlNGIgaW1wb3J0X3VuaWNvZGUKKzgyODY2IDMzMWUzN2UwNTJjZjNiYzUzYjc1YjgwYTY3MzE2NjExZmE2OWVjODkgaW1wb3J0X3VuaWNvZGUKKzgyODY3IDNjOWIzODQ0Zjk3ODgxMTBjZTcwMmM0ZGE0MDhkZjMzYmU1MTZmMWYgaW1wb3J0X3VuaWNvZGUKKzgyODY4IDA5MTZlODU4NWFjYjJkOWU3ZDkyYTM4OTRiMzBjMWNiMjlkYzI0NTggaW1wb3J0X3VuaWNvZGUKKzgyODY5IDdmMGRhYmI3ZmQ4ZGQ2MTI2YTU5NGRjNmU4NmViMGRlMjdiMTU3NTMgaW1wb3J0X3VuaWNvZGUKKzgyODcwIDViMWI3ZjU1NzRjMDAxYmI4YTgyN2NmZGUwNDQwNjBiNTI2NDcyZjYgcmVsZWFzZTI3LW1haW50Cis4Mjg3MSA4NjM1NTIzZWY1YzYzOTU1MGE3NmZjNDRiM2ZhZGI1MjVkYmY2MmVlIHB5M2sKKzgyODcyIGQ0ZjY3Yjg2NDkyODhhNGI1MDhhZTI1YWZmZTRhYzAzZjY4YjBmZDUgcHkzaworODI4NzMgYWQ5NWUyMzEyOWM3NmNiMjZkOTBiNTM5OGEwMDQ2MGU1NjAxZjQ2NiBweTNrCis4Mjg3NCBkMzBiOWRmZmI4NmQ0MTA3NTNkM2ZmODZhZjM2Y2IyZTZkOWUyYmZiIHB5M2sKKzgyODc1IDc3MDIzMjkyZmM2MTRiY2E5NTRjYjgxN2JmMGQ4ZmI3MGFhZTk2NDkgcmVsZWFzZTI3LW1haW50Cis4Mjg3NiAxOGJkYzQzY2U1ZWQyOGU1ZGUxZjM0YWMxMmMxY2ZlNmVkODg0MmZhIHJlbGVhc2UyNy1tYWludAorODI4NzcgN2Q3ZTYzZWIzYjUzMDE4NDU0ZGM0NTNiZWJhMGFmODYxY2Y2NzIzNSByZWxlYXNlMjctbWFpbnQKKzgyODc4IDc3ZGZlMmE3NzVkMTk5OTBjM2YzYjdjZDdhMzc3ZTBkNDYzYWVlZGQgcmVsZWFzZTI2LW1haW50Cis4Mjg3OSBlYjAwNzVlNjA3MjViOWYxMzIzY2NhM2Y5MzczN2ZjN2U3MTkyY2YzIHB5M2sKKzgyODgwIDQxMzYwZjgwMzlhYmZiMzQ2MjYyZThhNGUwMjJkZjIxYmMzYThmNTMgcmVsZWFzZTMxLW1haW50Cis4Mjg4MSBkNzRkZTA1MGM0NDVkYmU5ZWNhODNhNTk2MWMyYWU1OTQyYjQzYzUxIHB5M2sKKzgyODgyIDRiNDU2NzgwYzhkOGFmNDI5YWQ5ZmMzMjBhZTNlNThiNzIxZmFmYWUgcmVsZWFzZTMxLW1haW50Cis4Mjg4MyA2MTQxY2IyZTI2ZTE0NzAwMzliYzBiNDIwMzYzMjJkMjNjNTQ3Mjg3IHJlbGVhc2UyNy1tYWludAorODI4ODQgMGYyNDMxNDAxMDIxMjc3MTk2M2U1OWZhOWE2ZWFjZGZlN2IzMDM2ZCByZWxlYXNlMjYtbWFpbnQKKzgyODg1IGMwZTA3NTZlMDk5NjYzNGVlZDVkYzljY2FiMDM0MzgwNWRhMmU5ZDQgcHkzaworODI4ODYgMzgwNWZmZThmZjM4MzE1ZWI2ZTIyMjUwMGVkZTQxN2Y2ZDM2NDk4YSByZWxlYXNlMzEtbWFpbnQKKzgyODg3IDZjNzYzZDYzMWRiYTA1OTQ3NjdlMmNkNzJmNWVmY2QwNzdlMjhmNzAgcHkzaworODI4ODggMmI2OGE4NDQxNDU4NzJmZmFmZTUxYzI4MzM5NmNhNmMxYzkxMjgwNyByZWxlYXNlMzEtbWFpbnQKKzgyODg5IGQ0ZjYxYjM2Y2NlNmU2ZTcwMDI3YTllYzI1ZTBiMjcxYmQ2N2M1ZTYgcmVsZWFzZTI3LW1haW50Cis4Mjg5MCA5ZjFkOWFlZjM3NGM3N2Q5OTlhZGQyZGZmMzIwY2Q3OTMzMzEwNWViIHB5M2sKKzgyODkxIDBmODNjYTEyMDc1MjkwYmIwNWQzNjRjZTIwMTU1NDM3NzA4YmE4ZmYgcmVsZWFzZTMxLW1haW50Cis4Mjg5MiA5Njc1N2M2OTBiMDVmMmRmNGJjZTllYjY5YzcxZmNhNGQwMTFhMmMyIHJlbGVhc2UyNy1tYWludAorODI4OTMgYzcwOGM5NDZmZjNlNDNlN2RjY2ZhOTA3NjhmZjgxYjhlZGRkZDMwNiByZWxlYXNlMjYtbWFpbnQKKzgyODk1IGExZjdkZWEzNjIxOTZiNmIxYWJjNDQ1MGJjN2E3NDBmZDQ4ZGQwMzggcHkzaworODI4OTYgYTI5NzNlNzA1MDU3YTcxYzAwN2NjNmM1M2QyZjA2NGI2YWVkOWU0OSByZWxlYXNlMzEtbWFpbnQKKzgyODk3IDBiMjkxZTJmZjAwZmM5MWE5N2U4MGI1MDUwZTY2YTVhYmI5ZGRlNDIgcmVsZWFzZTI3LW1haW50Cis4Mjg5OCA2MzMzZDNhN2U1YzczOWU5NTU3MTc5ZDEyNTA2M2ZkOWQ5NjgwMzMwIHJlbGVhc2UyNi1tYWludAorODI4OTkgNDY5Mjc4MTAyNzkwODdhMzM4YWMxMjVmNDM3NDU1MGU4MDQwNjc5MyBweTNrCis4MjkwMCA0ZmUyOGE0OTFhNjMwODkzZWE1YTZjOWRiYTI4Y2JlNmE4ODUxNzU3IHJlbGVhc2UzMS1tYWludAorODI5MDEgYzc0NWRmOTQ2MmU2NzdlZDgxMmVlODZmNjJiODAyMjM3MGY3ZTRiZCBpbXBvcnRfdW5pY29kZQorODI5MDIgYWQyNjNjYzM4NmE1NDIyMzJiYjJlZWRjZjM2NDRhMTFlYWFhMDE0OCBpbXBvcnRfdW5pY29kZQorODI5MDMgZmVjZmYwNGQwYWIxM2IwZTg5YzYzYjg3MTZhYWNkNTJiZGRiMTQ1NSBpbXBvcnRfdW5pY29kZQorODI5MDQgN2NkZmFjZTFhYjA5NjI2ZWQxZTRhYTZjYjZhNTY1ZjZiOTNmMDg5ZSBpbXBvcnRfdW5pY29kZQorODI5MDUgNzMwYzhiOTA3ZDdkY2M4NzkxZWY2ZTM0MDBiYjliNmEzNzVhODExMCBpbXBvcnRfdW5pY29kZQorODI5MDYgZmY5ZGRjMTYxZWUzZDA2OTdiYTFjMWU5OGZhNjI4ZTkyZmRjOGJkZiBpbXBvcnRfdW5pY29kZQorODI5MDcgN2I3MWI2ZGM3NDQ0ZTBhMWNjYmMwNGUzNWI1MWU2NTAzODNkYjUyNyBpbXBvcnRfdW5pY29kZQorODI5MDggODlmOTdhMTIxM2NkOWIwNDc1ODQxMTdjODI4YThjZmM0YzhlN2I5MyBpbXBvcnRfdW5pY29kZQorODI5MTAgMjAyNmVhNDQyODg5OWM5M2E3ZWUzNjIwN2FkODk0Y2EwZWIyYjE0NCBweTNrCis4MjkxMiAwYjc1M2EzZmU0YjBlMTc5ZTQ1Zjk3OGUwMmYxZmI0NmVhYmExYjI5IHJlbGVhc2UzMS1tYWludAorODI5MTMgNWZmZmFjOWFjN2Q2YzI2OTU2Zjc5ZDkxM2NhMzYyZjJlNWRlY2RmMCBpbXBvcnRfdW5pY29kZQorODI5MTUgMWYyN2EwNWM2YzMxZDRhMTMxNTJkM2MzOWY3Zjc1OWM3ZDQ0NjFhYSBweTNrCis4MjkxNiAyNGY3ZmEyNTgxZTZmMWQ0ZDJlMGZhMTFkMzViMmI1NGQ4YWMyZTQyIHJlbGVhc2UzMS1tYWludAorODI5MTcgZTcwMzE5ODNlNmZkZjNjNTQ4NTM3ZDdjOGY5YzIxNWY1MGJmNTMzMyByZWxlYXNlMjctbWFpbnQKKzgyOTE4IGUyZWM1ZmJjNmNmMTM3Y2M2NGNhMGMzYTU5YjgwMGRkOTQ3MDBhOTIgcHkzaworODI5MTkgYTBiOTUzNzdhYWFkOGQ2ZTliZGJlMTQwYzM0ZmJkY2FiZTkzNGM4NyBweTNrCis4MjkyMCA3Y2JmOGM0ZTI3Mjc5MWZkNzhiMTMyM2MzYTFkY2YwNGM1N2Q4MDg4IHJlbGVhc2UzMS1tYWludAorODI5MjEgODRmZjQxNzk0ZDNmMmI0OGRhMjZlODg2MmVlZWZkZTE3ZjkzM2RmYSBweTNrCis4MjkyMiAzYzczMDEwYmQwYjBjZjdmMmQ4MjViYTliMmQyZWU0Y2JjMzQ1NDBkIHB5M2sKKzgyOTIzIDdhMDBjYTRiOTU5MmI4NWE2NWVlMjEwNWQyMzgzZTA4N2Q5ZTQ5MWEgcmVsZWFzZTMxLW1haW50Cis4MjkyNCAwMTcxMWY2MGZmZmNmY2Q0MjFmZjExOWI1ZTZlMjJhZDYzYjU2ZWFjIHJlbGVhc2UyNy1tYWludAorODI5MjUgNGM0NWEzMmMzY2M5OThlZTUyMmQyODRjMzcxNDFkM2MyYjFiMzg5MiByZWxlYXNlMjYtbWFpbnQKKzgyOTI2IGVhZjA0YTNmNDUxYTJkYmIwMWZmNDZkMWQ5YzBkOWQxN2FjNjZmNDQgcHkzay1jZGVjaW1hbAorODI5MjcgYzc0MWExZjIyOTc2OThiOTY3OGZlYzBlMGYwNWMxZWIzMmIwMzM4ZCBweTNrCis4MjkyOCBmYThmMzg4MzQyODc4ZTI2OThiNDVjNTdmYzRkZGRlN2MyYjkwYmJkIHJlbGVhc2UzMS1tYWludAorODI5MjkgZTA1YjY0NmQ2Yjk4NTAxZjgxMzdlOGNhZGEzNjMzYTA3MzM0Yzk3ZiByZWxlYXNlMjctbWFpbnQKKzgyOTMwIGIyMjg5M2JlMDhjNzFlMTczZjY2ODM4NjY1NzlhYTY5OTVjZGYwZTYgcmVsZWFzZTI2LW1haW50Cis4MjkzMSBjZjRiODMzYTQ3ZGU4NWFlYzQ3NTgwMDQ0ZmU1ZDZlYmE1MmQ2N2MyIHB5M2sKKzgyOTMyIGYyODMzMDg4MWRiNDRlODA1MjNiNzQwOGUzZmMxYWU0NWVlZTc3ZGQgcmVsZWFzZTMxLW1haW50Cis4MjkzMyA5MDVmYTU3MTk0MDMwZWM1NmIwMmMyOWIzNDFlMWFlMDVhMmRmOWVjIHJlbGVhc2UyNy1tYWludAorODI5MzQgMmE3OWI3MjNhYmRjZjk1MmUxMjM5YjBkOTU0MjA5MTg3MDAwMzgyNyBweTNrCis4MjkzNSA4YzQ0MGNmOTA3NzZkMmQ0NzM4Yzc2OWE1ZGY1ZjU1NDlmYzk3YWUwIHJlbGVhc2UyNy1tYWludAorODI5MzYgOWU2MTlmMTZmNjZhYTQyNGM0ZjgxNjk5NDI1MjI2YjU2YTBlMGQ1YiByZWxlYXNlMzEtbWFpbnQKKzgyOTM3IDNjNzhiM2NmZDQ2MmNmNDhhYmJkYjhjNGFiMGRlNmI5NGZkZjFiOGEgcHkzaworODI5MzggYWJmNjlkNDAyODgzYjdiM2RlMmMzYzlhOTI3ZTgzNTZmMjRhZGZjNSByZWxlYXNlMzEtbWFpbnQKKzgyOTM5IGQxZDgxMjQ2YjIyOTk2ZTNmNTY4MTdlNmQ1MDY1MTlhYmQ4MzU2NmUgcmVsZWFzZTI3LW1haW50Cis4Mjk0MCAxZTIxZDk0ZTA1ZjQ2MjkzNDZlZDBkZWYyYjM2ZTZkYjgzMWU2YzBmIHJlbGVhc2UyNy1tYWludAorODI5NDEgMjY4MzMzMzc1NWYzNjJiNmI1NDdhMDA0MjNiYzk1ZmI5MWE3NDAxMSBweTNrCis4Mjk0MiA2ODAzNmYyYjVhYzhkOWY1Mzg5MzBjNTAyY2VkYWIzMDZlODZkM2YwIHJlbGVhc2UzMS1tYWludAorODI5NDMgYjFkYzYwYjNjN2FlYmMyNDcwYjJjYjRjZDM5OThmNzQ0ZTk3M2YxNCBweTNrCis4Mjk0NCBkYjJkY2NhMjQwNjk0NzI3YmIwOTFmOTRhN2I5MmYwNTM4MWFkM2E5IHJlbGVhc2UzMS1tYWludAorODI5NDUgMTkxOTE1NTllYzAyYzVkZmIyZmU5ZDcyMGMxNTM0ZDZkNzZmOTM2NiByZWxlYXNlMjctbWFpbnQKKzgyOTQ2IGMxNmIzZjZhYzUxMWI2MjQ3M2Q3OWIyNGMzNjQ1OWYwYzdiYmQ0ZGYgcmVsZWFzZTI2LW1haW50Cis4Mjk0NyAyMTFlMzE4ZDIzZWZhOGY2Y2RhMjlmMmQyNTI1OGJjMDFjNzU5ZmJjIHB5M2sKKzgyOTQ4IGRiM2FkNmVjMGE0YjE2ZDk3ZTJjMjFiMzEzZmZlNGM5MTc5Mjg2MjkgcmVsZWFzZTMxLW1haW50Cis4Mjk0OSA5Nzg2ODNmZGU4MjAzNzQxN2Q4MTg0NDUyMGYyZDg3YjFkYTBlYmM3IHB5M2sKKzgyOTUxIDZkYzNkMjIyODNmZjU0ZmM0YjYxZjBmYTlkMmQ0ZWVlYzU1MjI1ODkgcHkzaworODI5NTIgMTZlODYyYTViNmYyNmRlZDk4N2MwODdhMzhiZWUzNDZhYjA5M2MxYiBweTNrCis4Mjk1MyA0YmYwMzM3NzU4NGRiMDc2NDliOGRlMzVlNmVkMjZkNTNhNTllYTkwIHJlbGVhc2UyNy1tYWludAorODI5NTQgNDFhYjE2MWQ0N2E3YmY0NWRjNThiNDc5NjE3NjgyMGUyZGFhYjU0MSBweTNrCis4Mjk1NSA3ZTQ1MWNlOTBjMWE2MjQ0YTNiNGU5YjAxOGE2OTIxMWUwOTFkNjQwIHJlbGVhc2UzMS1tYWludAorODI5NTYgMGQ5MTgxMmY2MjYwOTY4N2YwYjIzZGEzOTIyYzUxZDc2YmRlNGEwMyByZWxlYXNlMzEtbWFpbnQKKzgyOTU3IDMxZGY2ZjhlOWYxZDRkMDQ5ZDliMmI5NmFlOGRiODc3NDdiOTZjNDAgcHkzaworODI5NTggNjdmOGYwNWNkNDBkYzBlMjYxZWMyYWJlZjBkNzhiMTQ1YjYzYmNmNiBweTNrCis4Mjk1OSBjY2QzZTU0NTYyZmE3YTBkNjUzY2ZlNzA4YTE4MDg5ZWEzMjYyNzAxIHB5M2sKKzgyOTYwIGE0ZGFlN2UyZGY3ZTY2NjNmMGQzY2ZiYmEzYWNlYzg1M2YwYjk1NTIgcHkzaworODI5NjEgNDgzNTEwNmVjZTBjNTMyNGEyMGM2MjI2ZjYxZDk5YzgwMzRkOWZmZSBweTNrCis4Mjk2MiBhNjVjOTlmOTQ4OTAwOTViMGNjYTRhMzAyMjZlZTVjMzcxNTYyNDljIHB5M2sKKzgyOTYzIGJiN2ZjMDhmNzIzZWM3ZGI3ZmIxZGY5ZWY2MzY4Y2I3ODZhNDE4ZWIgcmVsZWFzZTMxLW1haW50Cis4Mjk2NCAyZjk1NWJmOTMwMzdiNmQ2OGNiYjg0YjJkNGMxMzg2ZGI4MzQyMDA5IHB5M2sKKzgyOTY1IDI1MjE2YTdlMjM0ZDZhYTM4NWNiM2EyNGZkMmExMjM2OTA0Y2FhNGUgcHkzaworODI5NjYgZDM1NzgyYWMyMWY4NjFmOTY5OTk2ZGQ3ZGQ4MWU2Y2I5NDE0OWMyYiBweTNrCis4Mjk2NyBiNzk0MjkxNTQ4MGY3OGJhNTM5NmFhOTQ5NjQxNjEyOTBlNzdjOTA4IHB5M2sKKzgyOTY4IGM5MDAyMWZkMWZiZmFmZmJmYmRiNGYzM2QxNGY0NzVkYmU2YzM4OTQgcmVsZWFzZTMxLW1haW50Cis4Mjk2OSBjOTZhNzIyYmUxZGJjMWM0ZTBkMGJiNDQ2ZDA3NTUzZTM0YmIyYmQyIHJlbGVhc2UyNy1tYWludAorODI5NzAgYjljOTg5YTJmYWQzMTM3N2NiMjU5MDQ5ZTM3YmI0YjZhZTRjOGNlZCByZWxlYXNlMjYtbWFpbnQKKzgyOTcxIGFhMGI1NmRkMTRhZjdiOGI1ZDQzYWUwZjRkYzQwNDgzZDY0NmVkYmIgcHkzaworODI5NzIgYWQ2NmVmZjk4MDBiYmMyY2YyNDY3MjZhYWJkZDNjZjY3YmZmZGJiYSByZWxlYXNlMzEtbWFpbnQKKzgyOTczIDM1NDU0Njg0NmMyOTdhZTNlMTMyOThjOTUzMzc5NGQyYmQ2OTg1ZDkgcmVsZWFzZTI3LW1haW50Cis4Mjk3NCAzZmRkOWI0MzAyNGM2MjFmMTJmYzI2OTJiOGM1YzBjZWI4NmNhMjRjIHJlbGVhc2UyNi1tYWludAorODI5NzUgN2YzMTNlZDllODhmMzI0MzlhMGU0ZDNiMTVjOWVhMzhhMTE2MWFmYiByZWxlYXNlMjYtbWFpbnQKKzgyOTc3IGExMTIxNDA5Zjk2YjIwZGVmYWE0ZjQ3NTEyZjE5NDUwYmVlMjZiNDEgcmVsZWFzZTI3LW1haW50Cis4Mjk3OCA3M2RkYjhiMmI1NzQ3ZThjMzJiM2ExNmQ0MmU1ZGYzYjZiYjY1MTAxIHB5M2sKKzgyOTc5IDVjZmYwNThkNmNlZDVjMTU5YjFhZmRmYTM4OTIzYzYyNzQ1NWIzY2UgcmVsZWFzZTMxLW1haW50Cis4Mjk4MCAzZmE2MDU2ODhkMDM1YTU0NWI2MDIwMTNiYjBjMGMxNmU3NTgyMTFiIHJlbGVhc2UyNy1tYWludAorODI5ODEgZTFiYzJjODkzNWQyMGE3ZThmNzAyZDE5ZTc4ZjIzMGFhYjJhMTRlMSByZWxlYXNlMjctbWFpbnQKKzgyOTgyIDFjNjZmNzJmNmJjOTNiMWRiNDNjMDM1M2VjY2E0MjA4ZDMwNDY0ZjMgcmVsZWFzZTI2LW1haW50Cis4Mjk4MyBmMjQxNTkyZWNlNGViZTVkZWE5MzAwNTc3NTA4OWVmNjkyNzJiOWM3IHB5M2sKKzgyOTg0IDc0MmZkZjdmNjU0MDA1NjI2ZmU3N2M3MWJmY2U1YjI5ZWNjNDYzM2QgcmVsZWFzZTI2LW1haW50Cis4Mjk4NSA4NzJiMzRjYjI2ODg1MTQ0MmU0MTkzMzgwMWZlNjY0MzlkYzZhNDVjIHB5M2sKKzgyOTg2IGIyZjEzODVhMjM1ZTBkODk4NmUyOTc0ZGMwYWU3MzQ5ZGIwMDJiMDEgcHkzay1jZGVjaW1hbAorODI5ODcgMzMzN2EyOTU1ZTExOTI3YjNkZmE3YWU4OGQ3NGE5NTdhOTAwMGUxZiBweTNrLWNkZWNpbWFsCis4Mjk4OCAxNjkzNDdmOWQ0YzRmMjVkYjA3YzlmZDg0ZmQzNzQ5NzFlNmMxNDIzIHB5M2stY2RlY2ltYWwKKzgyOTk1IDljNzY2Y2QyMTFkYjBlYWE2MjdhNTgxYjEwMTMyOGQwOGQ4ZGEwNDEgcHkzaworODI5OTcgYTE0YTc4NjkyYzdhMTU4MGVhNzk5NTU1MzYwMmY2MGJjMmU3ZGY3NCBweTNrCis4Mjk5OCBjMGQ4ZmUyNWUyNjZlYzg2NjFmMzRmNmU5NzlkNDY3NGIwMDUyNGU3IHB5M2stY2RlY2ltYWwKKzgyOTk5IDFlMjYxY2NlNDExNjQ1YTM2YjU3Yzg3ZjQ4NDhmNWZlMmJlMjU4NzcgcmVsZWFzZTMxLW1haW50Cis4MzAwMCA0NWVkMGNmMmMzODZhNmZiYzk3ZTYwNmY0MjA0MzZhYzI5MTlhMGUyIHJlbGVhc2UyNi1tYWludAorODMwMDEgYzE2MjAyMjBhNDNkMjhmNzcwMDgyMzA5Zjg0NWY0ZTI2NzY1MjRmOSByZWxlYXNlMjctbWFpbnQKKzgzMDA1IGNiZDZmNWQyNGFmOTA2MWVhMmFiYWFlYmUyYjExMmMwNjQzYmVhOTYgcHkzaworODMwMDYgOTA1N2VhMDE0NDYxN2YyODY0MTBlZWQyODYyNmM2ZTU4MzczNTVlYiBweTNrCis4MzAwNyA3NWFmNGEyN2EwNzA5NzFhMDNlYjRkYmMzOGJlN2E2YmI0NmIxYTFkIHJlbGVhc2UyNy1tYWludAorODMwMDggZDBiYTNiOGIwZDQ4MmIxMWVmZjk2ZDg4ZGM2ODIzNWQ3ZGI3Njg4OSByZWxlYXNlMjYtbWFpbnQKKzgzMDA5IGJmZGI1ZjA4YzBmODFmYjUyYzllZGVjOTVmYmQwYTE1OWFiYmI0OTQgcHkzaworODMwMTAgMTVlZGQ1ZmJiY2FlMWQzYmMxOGQwOTY3NTkxNzNmNTg3N2NkMjk1YSByZWxlYXNlMzEtbWFpbnQKKzgzMDExIGZlZTQ5OTQ2MjBmYmY5ODUxYWMxM2Q4NzA2ZmMxYzFlMWNiZWYxODAgcHkzaworODMwMTIgZjRlYjFjNmEzNGVmNDMwYWQwZWJlYjJmNmIxZTFlNWNiMmQ2ZTZiMCByZWxlYXNlMzEtbWFpbnQKKzgzMDEzIDcwNzljNjA3ODE0Y2FhYjRjMGIxODNhNjUzYzdiYTU4NjEwZDdjNTAgcmVsZWFzZTI3LW1haW50Cis4MzAxNiA1YjQ2ODY4Nzc2OGNkNTE4YWI4MmM2NzEwN2ZlMzA2OGIzY2E2ZWEzIHB5M2sKKzgzMDE3IDcwOTI1ZDNjMDI3OTQ3ZjY5OTM2OTgyMjNjODRhMTQyYjM4NzE5ODcgcmVsZWFzZTMxLW1haW50Cis4MzAxOCAyZjFhODM2ZjBmYWMxYTIzZjBkYjUxOWY3YzhkMTk1Nzg4ZDcyZDE0IHJlbGVhc2UyNy1tYWludAorODMwMjUgMjBlNTZlY2NkZjUyMjYzODZhZTQxY2VjMzJlZGYwNDY4YmFiMjI5NSBweTNrCis4MzAyNiA0YjQwYmY5MWViZWIzMjZlNTk3ODQ4MDc4ZTA1NGFiODA3OWZhMmEwIHJlbGVhc2UzMS1tYWludAorODMwMjcgYmI2OGU1MzQ1NGI2ZDY0YzZkMzYwYjMyMzIwZmM4MjU1OWU2ZmJjMiByZWxlYXNlMjctbWFpbnQKKzgzMDMwIDM2NzUyOWRjMzRkMTFmMTI1MzRmMmIzMDM1Y2IyOTZhZWI1ZmI0M2UgcHkzaworODMwMzEgZTVjZGIxMjc2OGNiNGFiOWJhOTQwYzcxY2YxNDM5MzFkZDMwZDk2ZiByZWxlYXNlMjctbWFpbnQKKzgzMDMyIDdiNWQxNTI3YzBjZThhMzA5MDY1Njg1ZWVhZTkzZmVhYzgyMGVjMDcgcmVsZWFzZTI2LW1haW50Cis4MzAzMyA1MjBiZjRkMWNiNjY1MTZiOTEwNzQ2YmE4YjE2NzcwNTY3MjBiNjYwIHJlbGVhc2UzMS1tYWludAorODMwMzUgNDU0NWZmNTA2MWI3YTdhMjI0M2JmYzYxYzNhODNhMTZmMGJhMTQ3ZCBweTNrCis4MzAzNyA5ZGJiZTZlN2I2NjhjMTU4NDZkN2M5ZmIzNWE2ZTA0YjM2NmRhYzU1IHJlbGVhc2UzMS1tYWludAorODMwNDUgMWY0ZWQ3MWI2OGUyMjQ2ZTVkZDYxZWU1YWYyYjhlYTMzMTNiZTZmYyByZWxlYXNlMjctbWFpbnQKKzgzMDQ2IDMwNTkwMmIzYzFhMDA5ZmJjZGUxNzQ3YTUzYWRlZmQ2MTc3NWZkNTMgcHkzaworODMwNTMgMjlhM2VkYTg5OTk1M2RjMmIzMTU2OGQwZWM2NzI1OTk2MTYwZTM1MSBweTNrCis4MzA1NCBlZTAxZjU0ODFjNjgwYzkwY2MzY2QxNmQ2MGY4ODlkN2I3OTYyYzE4IHJlbGVhc2UzMS1tYWludAorODMwNTkgM2U2MDliZjQ2MmZmMzExY2MzMDZkMDhlNDE2NThlODk1YmE2NzQ2MyBweTNrCis4MzA2MiAxYzQ0MWUzOWRiZTQ2ZDg4MGY3ZjE3ZmExNjA4NGViMDY3MGYwMzY1IHBlcC0wMzg0Cis4MzA2MyA4ODUyMGZiNDViZjJlZDRhM2I3OWE2M2Q0N2RjMDNmMDNhNjU0NzMxIHBlcC0wMzg0Cis4MzA2NSA1OTEyNDlkOTgzODNhYzYzNDFkZGJjMTc2Mzk0MzlkODg3ZDZjZmJlIHB5M2sKKzgzMDY2IDE2ZWRkNGZiYTZhNWMyZDZiZTA0MGYxYTk2ZWEyMmM1Yzc4YzdiZTIgcHkzaworODMwNjcgMmFkOGU4Y2U0NmM2YjhmOGU2OWYzNjlhOTA2MzQ5OTQ0ZmRkNDY1NSBweTNrCis4MzA2OSA1YTY5OGExNTJmMzAyMzVkMDQ5OTQ4MzU0ZDkxYWEyNTVkNjA3ZWIxIHJlbGVhc2UzMS1tYWludAorODMwNzAgNzIxZTcyOGFjMDYwZjBhNDBiZDAxZjllYmMyYjY0OTZlN2M5YjRiZSByZWxlYXNlMjctbWFpbnQKKzgzMDcxIDUzNWNhYjFhOGMwMDQ5NmUzY2Y1ODczZDFmMzEzMDQ1YTcxNmVkNjYgcmVsZWFzZTI3LW1haW50Cis4MzA3MiAzN2Q4NDg5MWM2NzFhMmQxN2I0NWFkZTQ1MjZhZjk0ODYxOWE2YjdlIHB5M2sKKzgzMDczIDhlZjk1N2MzODFmZGE3MjcwOTFlYWQwZWY0MzEyMDEyZjVmMWY5NmMgcHkzaworODMwNzQgZmFhNWYwMTdmZWE1ZDg5ZjkzYjc1OTYyN2U2YTQyYzY1YWFmN2RhZiByZWxlYXNlMzEtbWFpbnQKKzgzMDc1IGU2MGZkYjM0OGJkYzYxMTBhYjBlZDc4ZTMwMWNlMWQwZjg2NDk4NDcgcHkzaworODMwNzYgYzQ4M2Y5NDk3ODcyYjYzMjFhOWQ1YWJlY2E4MmZmMzk0NTBlZTI4ZiByZWxlYXNlMzEtbWFpbnQKKzgzMDc3IGJmZmQzOTliNzY0YzZkZDY3ZDgzNTM5MzgzMDBkYTgyYWRlYjI0ZGYgcmVsZWFzZTI3LW1haW50Cis4MzA3OCA3NmUwNzkyMjUwNzljNmY1MzkwZjNkY2Q5NGFmYzJlNmZiMTBkYWE2IHB5M2sKKzgzMDc5IDk5NmVlOWUwMzgxNjcwNzVlN2UxMzVkYTI5NTE4YWM5ZTViZjkzN2YgcmVsZWFzZTI3LW1haW50Cis4MzA4MCAzYTkzZmQyZWJiNDBjZWMyYmY2YTFjNTZiOWFmNWNjYmFiNzU4N2FjIHB5M2sKKzgzMDgxIGMwY2Y3ZDcwMDFlMjMyMGMyYjgyN2I4Njc1MDkyNWZjNGQ3OThmOWUgcmVsZWFzZTMxLW1haW50Cis4MzA4MiA1Y2UzYzA2NDQ4YTc4ZWY0NmYxZWZlMjVhYTI2OTAwNzk2MWIyNzgxIHJlbGVhc2UyNy1tYWludAorODMwODMgYmRjMDY5YTFhNzIxYjI4YWQyMTg0OTIzMmJkNTQyNmRkYTg3MTUwNiByZWxlYXNlMjYtbWFpbnQKKzgzMDg0IDE4M2M1NjI1ZTAwYmRmNjhkMDQ4N2Y2NzZlYjZjYmFkOTIwM2JhMGQgcmVsZWFzZTMxLW1haW50Cis4MzA4NSAxY2U4NGM2MWYzYjEzNjAwMTM5YTEyMTZhM2JmMGE5NjQ0OWEzOTQyIHJlbGVhc2UyNy1tYWludAorODMwODYgZTI2N2VlOTc2MGJkMTRhOGI0MjcwZTEyYWY5ODJjOTQxZmE3YTY3ZCByZWxlYXNlMjYtbWFpbnQKKzgzMDg4IDEwMjc0YTdiYzUzNzc2MWZkYmY4MjYzMGUxYTM2OTQ4MTg4OGE4NjkgcHkzaworODMwODkgZTYzODNjODFkYTQxY2EwNTZiNWNmNjE3ZDE5ZWRjOWJiMzMyN2UxZCBweTNrCis4MzA5MCBmNTIzYjM5ODUyZTc0NjBjZjc3ZDk1MGU2ZmI0ODZlOTcyOGRkZDZkIHB5M2sKKzgzMDkxIDA0ODNiOGU4YmM1OWYxN2M3ODFiNTQ5N2I3OTk3YWY4MWMzY2M2MWYgcHkzaworODMwOTIgMjg1NWQ2MzYzMTkyOWZmNTU3NGRiM2YxNGQ5YTNhZTQ5ZjlkYmY5NyBweTNrCis4MzA5MyBlYzQyYjcyODI2NGRiNmNkNGQ2ODBmZjE0YTBlNzExZDgyYThjYzlhIHJlbGVhc2UzMS1tYWludAorODMwOTQgMjc4NmQ2MmNjNzljMzhhN2EwMTg0ODcxNTgyY2U1MTQ0NjY3MGVhNSBweTNrCis4MzA5NSA3NjRlYzliYmYwMTNhMWYwMTEwYTczZTAzM2E3YzBlOTYwNDhmYTRhIHB5M2sKKzgzMDk2IDg3MjNjMWRkMWQyNWMxYTg0YmQ5ZjJlOGNkMDY2NTkxMzBlNzIzNDQgcHkzaworODMwOTcgMWY4ZmNiYjYzOTZiYzY5ZTZjOTIwMGI1OWJmMjcyNmFmZDBhMjZhMCByZWxlYXNlMzEtbWFpbnQKKzgzMDk4IDk3Yjg0MWIzYjBiNDdiYzY5MjJjOTEwYzFjMDYzMDcxNDY4MzY5NDMgcmVsZWFzZTI3LW1haW50Cis4MzA5OSAwNjBkZTA2MGYwM2ZmMGI2ZDk2YmVhN2EyMWQ1ZjIxMmVjYThjMGEyIHB5M2sKKzgzMTAwIDY4NjE5YzM3MmVmMDEzZjlkYmU4ZGEzMWRlM2FjYTQxZjEzNzJhZGMgcHkzaworODMxMDEgNTgwYzc4OWI3ODVkNWQ3Mzk2MDk3MTFiMTJmYTM3NTdhODAxN2UxYSBweTNrCis4MzEwMiAzODNlODQ2M2Y1NmMwMDA0YjU1Y2ExYmJjZTExMjYxMjk5MzQ5ODY5IHB5M2sKKzgzMTAzIDBmMmIwZjM3NzY0MjQ2ZWMxNDI4MjNiNjQ2MmQyZjA5ODc3NmJlY2EgcHkzaworODMxMDQgMjI3ZGVlMjc4NjM4YTdmNzhlMjE1MmJjMmE3MDVhOGYwMmMzMWI4MCByZWxlYXNlMzEtbWFpbnQKKzgzMTA1IDMyZmFjYmVkZmQwZWJjNGVhMzYyMjg1ZDQ2MmFiZjJjZGYyMzk0OWQgcmVsZWFzZTI3LW1haW50Cis4MzEwNiA0ODI3MTc5NjAyNTdhMDkwZDEzMGFhYzI4YTZhNzc1MTc2MzFiMjBmIHB5M2sKKzgzMTA3IGU0Mzc5NTM0MjVkNzA1NDMyN2Y3NmUyOGY3ZWE0OGE4Y2M1NWM3MGIgcHkzaworODMxMDggYWY5MzQxMzI0ZDNkODJlMTgzODZhODBmMGFmY2E3NzQ1MGQzYjU5YyBweTNrCis4MzEwOSA3MWYxYzBiZThhYTc3NjU0OGVjMzMzNGY4NGFhNjAwY2YzYzMzZGM5IHB5M2sKKzgzMTEwIGRiMzdhZjA3ZDRjMjcxMjA4NGE2ZmFjYWUzNGViMzRjZGFjNzRjMWYgcmVsZWFzZTI2LW1haW50Cis4MzExMSBmOTk3MDM5MWVlYWIyOGMyYTZmMWM0ZTE0ZWE3NmJjMjBjNWFhOTkwIHB5M2sKKzgzMTEyIGFmZGI1MzMyMzA2NTlhNDI3YTM2YjJmNjViMzdiY2UzYjFmOGYwMDkgcHkzaworODMxMTMgZTc3Mzg4NDU3N2E1MzM0Yjc3MWFjYTIwZDU3MTY3MDg3ZTQ2ZWY3ZCByZWxlYXNlMzEtbWFpbnQKKzgzMTE0IDg5OTMxYzgzNjg1NzRhOGI0NjQyZTI3ZmM2NDk3MGE5MTRiNTVjYjYgcmVsZWFzZTI3LW1haW50Cis4MzExNSA0ZWQ2MGM0YmM4YjYwMTY5YmJiNDNhNmVmNTIwNGQ3NmU5YTNiZjViIHB5M2sKKzgzMTE2IDhmYTQyNGFlY2QwZGI4ZTZhZTcxMDdlZTljNjViZWZmY2M2YzJkNWUgcHkzaworODMxMTcgZGMyYTdjMzQ0YmFhZmVhMTBiYTBkOTEwYmNmMTExNGZlNmE2NGZmZiByZWxlYXNlMjctbWFpbnQKKzgzMTE4IDkzNTc4MGM2MmM1OTU3NzAwOWRhZDAwYTVhZmExZTc5ZjhhNmI1MWQgcmVsZWFzZTMxLW1haW50Cis4MzExOSBlZDMyOGU2NzJhY2UxYTNkOGE3ODk4YmEyYzYyNTBhN2M5NjA5YjM2IHJlbGVhc2UyNi1tYWludAorODMxMjAgNWFhNzI2NDE0ZjhmMDhkNDY2MDVhNWM0Y2NhMDlmOTNlMmM4N2I5NSBweTNrCis4MzEyMSBiMGFmNjNhYTA5ZWFjYWJlNTY2OTk0YjdjNGMzNTBkYjQ0ZTM3MWE5IHJlbGVhc2UzMS1tYWludAorODMxMjIgODA3MmRmZDk3ZTFkZGYzN2ZkMGNkZmE5OTk5N2QzODE4ZDA3OTA4YiByZWxlYXNlMjctbWFpbnQKKzgzMTIzIGMzODY2Y2Q5MWFlMDBlNWRkYzIzZmVjYTcyODEzYTE5MDE2NTJiMTUgcmVsZWFzZTI3LW1haW50Cis4MzEyNCBmZjY0NDk2NDMxNDJlMjRjZDJkMGM1MGYzNWU2YTYwMWMxNzhjOTQxIHJlbGVhc2UyNy1tYWludAorODMxMjUgMzNlNGE0N2E2YWQxMGRiNTUzMzAzY2MyYjMzOGQxNzE4NDk4ZTg4NCBweTNrCis4MzEyNiBkODk2ZjNmOTRhNGRmMjI4OGY1NmU2MDc1MTVlMDMzZGQyYTY5MWQ3IHJlbGVhc2UyNi1tYWludAorODMxMjcgNGNjYmMyOWM3ZjExMzI5YTcwOTc3ZGJiZDVhYjEzNzZiOWFjMjNiNiBweTNrCis4MzEyOCAzZjI0NWJlNTkzMzliZmZiMWM4ZDE2YzFiYzljNGI4NGY0MzY2MTA2IHJlbGVhc2UyNi1tYWludAorODMxMzMgYWQ1ZjI3OTNmN2FkZjA4ZjY1ZTg4MDUxZTFiNTJhZjA5ZTRmOTQ3MCBweTNrCis4MzEzNCBmODEyNjM2N2EyZGVkZGRhMjZjMzYzZTQ3ZmU1M2JlZjA5ZDIzZmZjIHJlbGVhc2UzMS1tYWludAorODMxMzUgM2U2NTkyNTgxZDBmNWE4MjI2NDU2NmJmNWY1YjBjZjFiYjg3ODBlMyByZWxlYXNlMjctbWFpbnQKKzgzMTM2IDUzNDNlYTdjMTk4NjM0OWI5N2Q2ZWU3ZGQ2ZWYwNjM4MGVkY2JkN2QgcmVsZWFzZTI2LW1haW50Cis4MzEzOSBhMTZiNWJiZGYxOWI0MjgyYTQ1NTRkMzhkNmQ4YzAzNmE0M2M1MTBkIHB5M2sKKzgzMTQwIDllY2JhOGExMDEyNTUxYTY0Zjk5NWU3YWVmZTU4Njg1NjRlMGY0ZGEgcHkzaworODMxNDEgMmM1NmY0YWIzNmYyNmE0YjNjODUwNDFjYzZmMTZhODU3ZGUyZGVhMSBweTNrCis4MzE0MiAyZGQyOTllN2E2ZGJkMzcxNTk5NDA2ZTlmNGRjNDkwNjdjYzJmZTQ0IHJlbGVhc2UyNy1tYWludAorODMxNDMgZWY5YjM5ZGY1OTM2ODA2MmI0Nzc3MWZlM2ZiMDA5ZDI2MzFiZmRiZiByZWxlYXNlMzEtbWFpbnQKKzgzMTQ0IGIxOWY4YTQ5MjlkNWIzYjhiNTQ5NmZmODM4NTE5YzJhYTI0NDI4NmEgcmVsZWFzZTMxLW1haW50Cis4MzE0NSBmZGIwY2ZkY2NmODU4MjVmMjgwYTgzNWUzNjNjOTYwMDg0NWY4YTQ5IHJlbGVhc2UyNy1tYWludAorODMxNDYgZDg2YzE4NTY4ZTg5NzU3NGE1YTEyZmUwYjI4MGY2MWQ2ZWRjNTMxMiByZWxlYXNlMzEtbWFpbnQKKzgzMTQ3IGQzM2ViYjNlZjBiMTA3ZDg3NWEyOTc2ODMzZTRhMWFiYjI4YWM4YWYgcmVsZWFzZTI2LW1haW50Cis4MzE0OCA5MDRiM2ExNjE2ZjM3YzM4MjU5ZDgzODgzZjMwNTdkY2VhMDJjOTYzIHJlbGVhc2UzMS1tYWludAorODMxNDkgOWUzMDNkNjcxNWNlODlhYTY2YzUzOTA3OWRhY2I3OTgyOTliMjM4NCBweTNrCis4MzE1MCA5ZWNiZGVmYzk4NDlhYjkwOWEwM2JjNjJiZTlkZTVlZmI0YmI2MzllIHB5M2sKKzgzMTUxIDUxM2U0OThiMjIzYzJhNmQwNzFiZTI5YTc5M2YzNmFlZTIyMTJlYzAgcHkzaworODMxNTIgMTBjZTA0MTQwMDk2ODg0YzI1MWEyNDEyMGJhNTJhM2ZkMmE1NGZlNiBweTNrCis4MzE1MyBmZThhMmNlOTE0ZWE4Y2RhYWMyN2E1OGU5ZWRjOTliMDNlYWUzNmZjIHJlbGVhc2UyNy1tYWludAorODMxNTQgZmRiNzFkNmMxODIyNGY4MTBlMmM4ZmJjNGM4N2NmM2FmYjYxMWU2MyBweTNrCis4MzE1NSBlZWNjMDE4YWFjM2VkZGQ3YmZjODA5NTcyZjRlNTg4ZWVkN2JkZjRlIHJlbGVhc2UyNy1tYWludAorODMxNTYgNTVmNDVlOTA2NzRkNmMwNTVlYWNmZmQ4Yjc0NGI4MTYyZjJmYmExZSBweTNrCis4MzE1NyBmNmI5MjgwOGI5YjM0MzU2ZTQzMjNhZGM4MDUwYTVkZDhlNmFjNzU5IHB5M2sKKzgzMTU4IDc0YjE2ZjQzOWUwN2JhMDQxYWVlYjQzYjhkYTAyMDE3NTMyMDA1ZGMgcmVsZWFzZTI3LW1haW50Cis4MzE1OSA0ZDNkZTE2ZDAyY2MyODhlZjhjYmQ4ZjRkZjk0ZGRlMzliZmE5YThhIHJlbGVhc2UzMS1tYWludAorODMxNjAgYzNiZTIwYzM5MGEyNzA5OGIwMmJlMzhjYjE5MzQxNGQ0OWE4ZTI2ZiBweTNrCis4MzE2MSAyY2VkMWNjZDM1ZWE0MGVjOThhMTU1NmU0ZWVmMDIxNTFhNzExNWRjIHB5M2sKKzgzMTYyIDZhOTlkOTFiZTBmOGJjYjg5ODJiMTlkZjFiNTUzYzg2NzI1N2IzMTYgcHkzaworODMxNjMgN2E0MWUwYzQ4ODU1MGMzMDNmZjY1NDBlMThjODQwMDBiOGUyNzYwZiBweTNrCis4MzE2NCBjY2IyMTk5YzE2YmEwZWUyMTM0YmRhZTA5Yjc2NjRlM2I3YzJhNGIxIHJlbGVhc2UyNy1tYWludAorODMxNjYgZjlhMDA3YWZkNDBmMzcyZjhkZWFhZGViNTI4YzJjOTUyY2YzODMxZiBweTNrCis4MzE2OCAzNWMxNDU2MjM0ODAyZTExODFlYzg0YTQ3MzQwZjhjNWI1ZDI3YWM2IHB5M2sKKzgzMTY5IDNlOWI5MmNmY2FjYzUxZjdiNDQ0YTI5NWU0ODQ2NjUwYjI1NDYwMmIgcHkzaworODMxNzAgMDk3MDU3NzAwOWUwNTcxN2QwYzVjMDM2Yjc4ZThjN2IwMTNjNWJlNyBweTNrCis4MzE3MSBhZGVmZDVjMDIzNWRmYjM0MTgyOTg3ZWEyZTkyZmI0ZjZjNTUxNzNiIHB5M2sKKzgzMTczIGJjMDM0NzZjZTkwMTliMDNhMjU3MzQ1YjU3YjRlNmFmZjM0ZjA2N2EgcHkzaworODMxNzQgMGI4NDA5NGIxNTE1OGNlNjQzYWQ0MzkwNmJkZDM0M2JhOThlOTQ2NCByZWxlYXNlMjctbWFpbnQKKzgzMTc1IDMzNTUzNTZmMWM3NGQ0NDhiYTVlNTAzNjI2YWUyOTZjZGRiNGEyMWMgcmVsZWFzZTI3LW1haW50Cis4MzE3NiA1NTIyNDMzMTUwZTFkOThjYjE1ZTBhOWFkOTk3NzIyMzA1YzVmMmZmIHJlbGVhc2UyNy1tYWludAorODMxNzcgZjliODYwZWYyNGJhZDkyMTI5ODY1MDQxYTE4MGNmMzYxYmNlMTY2NSBweTNrCis4MzE3OCBlMWMzYWRmYTU3NDRkZjczMmRiZjUxNDQ1MmRiY2ZiOWI5M2UyYmZhIHJlbGVhc2UzMS1tYWludAorODMxNzkgZGZlMDA5NWZjYWIwZjZmNWM4Y2M3Y2Q3NDcxYTcyNWQxOTc3YTk2ZiByZWxlYXNlMjctbWFpbnQKKzgzMTgxIDJkZjczMzk1MWJhYjQ3YzM1NzcwMTUwMTJmNzIwYzFmYzE1NWM3NzEgcHkzaworODMxODIgZjIxNGFkMDljMzg0MmQxMDU0NDYwMjYxOWJkYmU4OTNiNWE4Yjc3MiBweTNrCis4MzE4MyBlMmQ2MmI1YTg3MzAxMWU2ZDllNmZhMWZmN2ZiMDlkMjNhYTRlNTAwIHB5M2sKKzgzMTg0IGU5MThhZmQzNTA4Njg4NDJkOTVkYTAyOWQwYjg3MjQzM2U5YWJkNjcgcHkzaworODMxODUgZmQ5YjQyMWNkYmFmNTVjNTRjN2ExNTRjN2QwZjkxOGY5N2Y2OTgxMSByZWxlYXNlMzEtbWFpbnQKKzgzMTg2IDViNWJjZjRiOWZiMDIxYTZlMDEyMWRlNDdiMzg1NWZmMDg0NDM1ZGEgcHkzaworODMxODcgYzNmNTgzM2RiODQzMWNkZWUzYTViMTI0MzdlNjllNGM5N2M1YmZiYSByZWxlYXNlMjctbWFpbnQKKzgzMTg4IDY4NWQzOTE4ZjJhNWUxYmM5NDQxN2JmYjU5OTdiYjVkMjZmM2JmNWQgcHkzaworODMxODkgYjVmM2Y3NDIzMzE4NjcxOTRkMDA4YmQwNGI1MWQzY2MxOWVkOTI5OSByZWxlYXNlMzEtbWFpbnQKKzgzMTkwIDFjZDQ1NGRhNDkyOGIzZWNhNjUyNGZmNzUzYWExNzQyOWM0ZDgyYWUgcmVsZWFzZTI3LW1haW50Cis4MzE5MSA4MDMyNTBmNWM0YzI2OGY0NDNiZTI3YWNmMzQ1YTUyMjFlOGFjNDdlIHB5M2sKKzgzMTkyIDE2ZjVjZmIxNmM2YWNjMjk2YzRhZTI0NzU1MGVhMzU3YzM4MTZhZTYgcmVsZWFzZTI3LW1haW50Cis4MzE5MyA0M2RjMTI5ODkyYWRkYmEwYWUwMThjNzJiZDcxZDlmNGU4YmJhYTkzIHJlbGVhc2UzMS1tYWludAorODMxOTQgZTRhYjBmYmJiYzk0NjBlY2IwNzBkNWIzZjc2OWE3N2FjM2MyOWYxNyByZWxlYXNlMjYtbWFpbnQKKzgzMTk1IDRhN2IzOTVlZGI2OWQ3NmRkYzEyNzhjZjE4M2RiMjljMjlhOWNkZGEgcHkzaworODMxOTYgNWVkY2UxNGI2Mjg3NzMyNmYwMGFmZGZjYTQzNGJkMjQ5NTFjYWFmZiBweTNrCis4MzE5NyBhYzdlYjZlYWVmNjg4NzdjZjgyMGFlZmVhZjU4MzZlODEzYzIzYzE2IHB5M2sKKzgzMTk4IDc0ZmQ3ZTgwYjFiZTQyMzY4OGE1ZTY2NGUzYTMwOGJkMWRlZjA0ODggcmVsZWFzZTI3LW1haW50Cis4MzE5OSA1ZDQ1YzY1MTM0OGJlM2I4ZjJmNTliZjYyMThhNmY1NjJiYzRjNDhmIHJlbGVhc2UyNi1tYWludAorODMyMDAgMzE1YzJiNTI0YzU5ZTk1OTYxMTRjNDVkMmZmMDdmNjhiNjg5YTJlZSByZWxlYXNlMjYtbWFpbnQKKzgzMjAxIDMwNjgzM2VmMTE5ZDFjYjVlOWNhYjUxNWE5MDE4OTU5ZGVjZDYwYjggcHkzaworODMyMDIgYmI5ZWVmOGQxYWM2YTRmYzU4ZDNmNWFkOTQ4NWVlMmE2ZTIyZGRlOCBweTNrCis4MzIwNCA4ZThjYjE2OGEwODlmNzQ2YWExNzAwMDRkNGIzZjk0ZGRiNjhmY2YwIHJlbGVhc2UyNy1tYWludAorODMyMDUgZTBiY2I5NzAzNDQyZGFkODg0ZTQzZDk3MWU1YzMzNzg4NGViNWE5MCByZWxlYXNlMjctbWFpbnQKKzgzMjA2IDZkMzFiNjAzNzJjNDgzN2NmZjFjNmQyMjYxNDE2NjhmMmQ5Mjg2ZGYgcmVsZWFzZTI3LW1haW50Cis4MzIwNyAxNzQzZGZlZWI5YjAzZDZiN2I1OTg0YTNhMDQ5N2QxMTk0ZTllMmFkIHJlbGVhc2UyNy1tYWludAorODMyMDggZWEzYjUzNTEzNmU3Zjg1MzI5ZTRjZmRlNTEzODc1NDhiYTAxODQ5MCByZWxlYXNlMjctbWFpbnQKKzgzMjA5IDliY2JjMzQzNzc4ZjNjZGJiOTI4MGQyYmQwZWI4YTMyNGUzYzJmZTUgcHkzaworODMyMTAgMzExOWM0ZDcyNzZiMTVlZGQ2MTg5OWY4ZDhlYWEyMTAyMjNhMzM4NSByZWxlYXNlMzEtbWFpbnQKKzgzMjExIDBiYjQ3YzUxZTkzM2Y4NjhlZTNiNGFmODA2NjNhYjk3ZDU0ZjQwNzMgcmVsZWFzZTI3LW1haW50Cis4MzIxMiBhYTE5YTdjYzFiZjM1MmJiZGU4NjNmOWFlMWJjNmFhNDYwNTc4NmJkIHB5M2sKKzgzMjEzIDc5ZTM3NjgyNGIzODhhNzZiMmQ3MmQzNDYxYjUxMTQ5YTY1M2Q4YWYgcHkzaworODMyMTQgMDEzMmU0ZWU5ZTdmMjQxYzAzMGM1NjViYWE0ZTY5YmE1OTk2MzRmMiBweTNrCis4MzIxNSBkNTVkMjFjMzk2YzVjZDIxOWJjMjMyNDU5ZDdlMWZjNWIzMDUwZmQ3IHB5M2sKKzgzMjE2IGJlNmQwMTRkZjk1NjBhOWRlNWRlNzRkOWViNGFkNzZjYTUzOGRmN2QgcHkzaworODMyMTcgNTE0NjZkNjc3MjJlMDYxMDExYmQxMjYyYjE0ZGFkZDEyODViOTMwMiBweTNrCis4MzIxOCAzZDk5Njk2Njg5ZjliMmFkOTFiZWIyZDA0NTJiZDY3MWFkNmNkMGUwIHB5M2sKKzgzMjE5IGUyZTMyYTg2OTgxMGRmOGY3YzFhZjE1NmU5MGNlODBlZDZlMjY4NTYgcHkzaworODMyMjAgZTVhMmY1MGZlZTY0ZTEyMzNhNzI4ZGU2NTdhZGRjZmE4ODQzN2YzYSBweTNrCis4MzIyMSAwNzE2MDkwNjBmMDU1YWY5MzYxYTVlYTM3MjE3YWYzZDZiYWVkZDUyIHJlbGVhc2UyNy1tYWludAorODMyMjIgNTJiYzE5NDA1YzBmMzMyM2EzZDViNTIwMGI5MmUwZjAzMzRmYzIzNyBweTNrCis4MzIyMyAwNTRmMzI3OWUzY2NlOTU2MGIzOTU2NDUxZTAyYWE1YjMyODgzMzY4IHB5M2sKKzgzMjI0IGVlMzdiY2I4ZjAzZTcyMmVlZjlmN2VlODk4NDdkNDRjNDE3NTBjMWQgcHkzaworODMyMjUgMDU2NDM2MDY1MjkwZjcyYjVkZjdkMzBiNzBmM2Y3ZTBmY2EwMmJiZiByZWxlYXNlMzEtbWFpbnQKKzgzMjI2IGEyNzQ2OGFmNWVjMmRiNWJhNjQzNGQ5Yzc1ZjQ2YjU1NTc0YjBiNDcgcHkzaworODMyMjcgMDU0MGU2N2Q3OTI0MWY3OTI1OWZjZGExM2Q4OGU0ZTJmNDk5ZTAzZCBweTNrCis4MzIyOSBmNmQzYmY0ZmFhOWE3YjU4NTdkODNkM2IxNWYwZWVkZTIxYTQwNzBlIHB5M2sKKzgzMjMwIGYyMGZmOTlhMjQyNzVmMmRmZDMwMjVhMWQyMzk1ZTIxOWViZmY1ZWIgcHkzaworODMyMzEgODM0NzE1ZmFmMTY1YTUwMGJlOTYxZTRjMjAzYWM0ZGNmOTlmNjExNSBweTNrCis4MzIzMiBjNTVmYWY0NzQ1OWUyZWI3NzNlNzRjZjNiM2JmZjBjNDk4ZjYzNDk2IHB5M2sKKzgzMjM0IDEyNTBiMDY4ZjMxNzAxZDlhYWNhMmM3ZjNlY2E4YTZlMjYzMTY2M2IgcHkzaworODMyMzUgOTRiMzkwM2RlMTA3NmIyYjMyNTY3NWY1OTlkNTE4NmUyZTQzN2I0OCBweTNrCis4MzIzNiA5MWNiYjU1ZTIwYmU1NGZhMjU5YmRkZGJjZjk0NGQ3Y2NlNjQ4NDBjIHB5M2sKKzgzMjM3IDE2MTg5YjdkYTNiNjJmNDZmN2U2YjZhNmY1MjhmZmRhM2Y0ZTIwMDIgcHkzaworODMyMzggZjQzNWI3Yjk4NjkwOTdjN2RkMzY3YmYwMDZmMGUyMjNlZDJiNGNiYyBweTNrCis4MzIzOSAyOWFiNTM2Y2ZlZjY3ZjI5ZDY4YTE1ZDExN2RjZjdlMGRjNzQxZGZlIHB5M2sKKzgzMjQwIDkwMjEzMWIzMTkyMjdkODE4YTdlMjg0ZTE3MTQ1NWU5NTE2NzQwNGMgcmVsZWFzZTMxLW1haW50Cis4MzI0MSBiNzVjYTI1YTE0MGJhY2M3ZWZiZTRiM2M5ZWIxMDZhMzUwZDc5ZGUyIHJlbGVhc2UyNy1tYWludAorODMyNDIgODlkNzhiNjY3ZDA3YmU1NDEyMDU2YjJhMDQ2NjBhNGRhZDE5YzQ2NiByZWxlYXNlMjYtbWFpbnQKKzgzMjQzIDRhZTBlMTNlOTQ2NjNlYjcyM2VkZWZlZjgxNWRlYTkzOWRhMTQ1YWUgaW1wb3J0X3VuaWNvZGUKKzgzMjQ0IDk3MDdjODU1MTQ4ZjY4ZTRkZGUxMjZiYzIxNTYxMzgyMjQ4YTJhNTYgaW1wb3J0X3VuaWNvZGUKKzgzMjQ1IDhhNzljYWE0ZjQ3MzI3MWRlZDdiZDAyY2I3ZGExZDdhZGNkNzAwNWQgaW1wb3J0X3VuaWNvZGUKKzgzMjQ2IDI3YzZhOTQ4ODk0OGZkZDU3NzdjMzY2ZjIzYTBkZGZhZGZmMjkyYzQgaW1wb3J0X3VuaWNvZGUKKzgzMjQ3IGExNWUxMGQxY2RjMGRmZjc4ZTA4NzQ3NTU3M2Y3ZDQ3NTllNzdmZTcgaW1wb3J0X3VuaWNvZGUKKzgzMjQ4IDlhNzRjNzVkZDgyNTI1ZmIxYTQzZmZlMDVkMGFjM2M2NDRjYzYzYTkgaW1wb3J0X3VuaWNvZGUKKzgzMjQ5IGVkMDkwMTE2YjczNGY3YzM3ZTIwNmI5YWM4NTZkZWFmNjI2ODcxOWMgaW1wb3J0X3VuaWNvZGUKKzgzMjUwIDYyMTk5NTkxMDkzOTJlMGU1OTUzMTNmZjAyZTIxMGIzZDAwMThlM2YgaW1wb3J0X3VuaWNvZGUKKzgzMjUxIDA5ODM1NmY1Yzg0NjFkMzRkYmUxN2E5NDFhMmM3MTRiMDJlYmVmNTggcmVsZWFzZTI3LW1haW50Cis4MzI1MiAzMjZiMTVkOGMzNDEzNjU4NzUzOTRhOTdlZDhjOTYxNjg1MjA4MGI2IGltcG9ydF91bmljb2RlCis4MzI1MyBkZTNmZmY0MjcyYzg0YjhmNDAyNGNhYzVmOWU3MzM5OWQ1ZDlkMTM4IGltcG9ydF91bmljb2RlCis4MzI1NCA4MDdiZWVmYWQ1MWM0YmU1NjdkM2FjZmViZDRjNTNlZTdjNThlOWE3IGltcG9ydF91bmljb2RlCis4MzI1NSAwNjMzODE1N2I0ZjcwODNlMGI4ZGQzNzQ3MDU2NGRiNGZiNDFlMzNjIGltcG9ydF91bmljb2RlCis4MzI1NiAwNGU0OTI1ZTVhOGNkNmNhOTEwZDMxYTgyMjg0MGQ1NmVjZmVlNjViIGltcG9ydF91bmljb2RlCis4MzI1NyBkYzVkYTAyMTM2ZTk4OTgyYzAyYzhlNTBiNTY2YzVkMzY3NzZhOGYxIGltcG9ydF91bmljb2RlCis4MzI1OCBhNGUwYjdhZjRiYTQ0YjAyMDU3ZWQ4NDEwMzAwNmRhYWFjNTdlZmEyIGltcG9ydF91bmljb2RlCis4MzI1OSBhOTY2YzNkNDNhN2VhYTYxMTI0MGU5ZjhjNTE2YzgxNmI1MmY0MmRmIHB5M2sKKzgzMjYwIGNiMThiYzhkZDQ2OTNhODRjZmY0ZGE5ZTdmYzhiODEzMzZmYzc1ZWIgcHkzaworODMyNjEgMGExNzQ4ZTEzZGU5NmRjNTU3YzVlYWRjMDE3MzI4NDQzZTFjMzU5OSBweTNrCis4MzI2MiAwZjZhMWU0NzZkMzEwY2FlZjA0MzAyNWEzNDhlNmVmODg3M2UyYTM3IHB5M2sKKzgzMjYzIDQ4NTU3ZGIwZWVlYTE4Zjg5MjUzNzFkNWE0NTQ1MjA3NDZiMzE1NWYgcHkzaworODMyNjQgMjQ5NzVhYWQ0MjY4MDlhOGIwNGMyYzc3ZWNlYzUyMjBkNGU2YWJmOSBweTNrCis4MzI2NSA3MTExYjc5N2VjMTE1ZmMzNGE0Y2ZiZTlkNWRkZjgyNDE1MGI5NGJmIHB5M2sKKzgzMjY2IGM1YmZlMTg2MGE1ZDgwZTBkZWRmN2YyM2MzN2I3ODc5MDI3OWU1OTggcHkzaworODMyNjcgMjk0MTIzYWVkNDZiNjUxMGRlM2U2ODk3ZjUxYzdlZTM0YTM2ZDFmZSByZWxlYXNlMjctbWFpbnQKKzgzMjY4IDk3MDRiOWQ4MTBlNWI3MWViNzU5NDY4Y2U4YTg5NjFjZTQ0MzM4ZmMgcHkzaworODMyNjkgODQwNjMzZDM3MmJjZGFlYWViMmQ4MmEwY2U0ODA5NTRhZTlhNzMyYyBweTNrCis4MzI3MCBlZmQ5N2EwMzkzNzQ5YTVmNWU4ODZjNWU3ZGQ1YmE3MzVlMjJjMzg2IHB5M2sKKzgzMjcxIDAzNzZlNjQzNWY1N2MxMmQ0NWUxNjgwNTNiYjYxMTJkZmMzMTQ4YmQgcHkzaworODMyNzIgMWM1ZjYwZjM4MWIyNjRhY2Q2ZjcxNDRmMDc3NjM2ODdjZDUzMWIwNCBweTNrCis4MzI3NCBhZDk4YjUyNWI1ODdjNjZhZDZhZmJlNjIyMTI2Y2I0NmRhYzIwOGVkIHB5M2sKKzgzMjc1IDQwZDZhN2MxNTgzNmEyZjE2NzQyYTBlNGY1YjY1ZTlhMmMyZTY4NzQgcHkzaworODMyNzYgYTFlMmFmNjUzN2RmZmYyMjQxZDA0MzRjNmE2NDY1M2JhZGRmZTA3ZSByZWxlYXNlMjctbWFpbnQKKzgzMjc3IDQzODBmYjIyNmIxMTI3MDViZjVlZDUzZDMxNmNmNzI4YWUwNzc0MDkgcHkzaworODMyNzggNTc5YjMzOWFiMTVmNTY2YmI1ZTQ0ZmZiYTAwZDUxODk5M2Y2OWY5ZSByZWxlYXNlMzEtbWFpbnQKKzgzMjc5IDI5OGM5NjlmNTY1Yjk2NWJmN2MxYmIxZDlhYjA3MzY2ODVhY2M2NjcgcmVsZWFzZTI3LW1haW50Cis4MzI4MSBhN2NjMDhiNGJhMjY5ZDlhNzRhOGE0OGJhMWNiN2RkYzI4MzAxOTcwIHB5M2sKKzgzMjgyIGFiYmI0OWFkMWZjMzMzMDY5ZTI0MjU1OGVlMmFiYWRiMGRjODJkMzEgcmVsZWFzZTI3LW1haW50Cis4MzI4MyAzODExODBhOGY0NDcxMmJjMTM0NDA1ZDYxZWQyNDFkYjBiZjc2Njk3IHB5M2sKKzgzMjg0IDkzNGIwOTBkZmVjODBlZDRiN2NlNGI2YjBhNzE3NGY4ZmFmY2MxYTQgcHkzaworODMyODUgZmU0YmI3Y2IxZmU4N2IyYzEwMmZmZjFiMjdkZmVjYjUyMDI3YTM1MCBweTNrCis4MzI4NiAyYzlhOGU2MTEyYjM5OTIwMTE2ODU0MWJjZWVhNTVkYTVlNTc2YmFiIHB5M2sKKzgzMjg3IDQ2ZDJlYzc4ZWY3OTU3NmNhNWI5YzYzNTc0YzgxM2I1NTkyOTA4NjQgcHkzaworODMyODggYmNmOTNlMzc2NmU4ZTQwM2JlMzBhMTg3NTc1MDdkOTViZjk5OTcyYiBweTNrCis4MzI4OSA3OGEzZGIyZjdlMGYxNzEwZWU5MWI5MmJiYTYyYTVjMWNmYWIwNTY1IHB5M2sKKzgzMjkwIDIwY2M5MzE3OTY5NTg2ZDlmZGJkMDEwNDg2ZmQ1YWM0NjkzZmFiMDUgaW1wb3J0X3VuaWNvZGUKKzgzMjkxIGMzYjY3M2I5NDYxMjNmOTM1MzJhMDJiOTU0MDA3YzE4MzM5YWQ5MWEgcHkzaworODMyOTIgYjgwM2NjMmQ2YTVjYmY3N2QxYTRhYzdjMDdkNzBiYjIyNGY0OTY1NCBweTNrCis4MzI5MyA2NzBkNGNiZjE0NjQ1MjJhYjU0MDZlZmMxNjEwNzAzZDcwMDdjOWUyIHB5M2sKKzgzMjk0IDc4NzFhYWYxMTFhMjVkMjk5MDE2OTRjMWI4NWI3ZWQzZjI2MTdjY2YgcHkzaworODMyOTUgMTAwMmMzZGM5MGQxYTVhN2IyOTIwNzY1ZDQ3YWYyNjI4ZDFlM2UyYiBpbXBvcnRfdW5pY29kZQorODMyOTYgNDY3MDE5NTg4ZmNjN2IyMzZkZDNlZmY5NmRkNzkyOWRiMTI2MmE3NiBweTNrCis4MzI5NyAwOGI5NDNhMWE5MzQ0ZDNjODBjMDYyNDM0MDMwYjVmM2VkZTg5ZDNkIGltcG9ydF91bmljb2RlCis4MzI5OCBjN2RjNWM3YjdhZjE5NWY3NGM2NjZhNjA2MDQwNzI0NGE5ZWE1YjdjIGltcG9ydF91bmljb2RlCis4MzI5OSAzZTc0ODczZjIxZWE1OWEzYmUyMzc0OTJlMjU3MWFhY2MwMzk0YmNmIGltcG9ydF91bmljb2RlCis4MzMwMCA4Y2Y2ZDI2NDQ5NzU3ZjI0ZTc5ZGE1YmI0ZGNmMDI0OWIwYzYyZGYwIGltcG9ydF91bmljb2RlCis4MzMwMSA2NWVlMGJjOTc0NzVmMTMyZDVmNjcxYTZlNDA5NDVlMDlhNDc5OWE2IGltcG9ydF91bmljb2RlCis4MzMwMiBkNmViZWRjZDZlYzRlOGU1NDg1ZjAxZGE2NmI4ZDc1MDc4MDMzN2RkIGltcG9ydF91bmljb2RlCis4MzMwMyA1MTA1YzEyYzMxYjI3ZDliMjg3OTIyODQ5MmQ1NDU2MmY0MWVmYzczIGltcG9ydF91bmljb2RlCis4MzMwNCA4ODJmZDg1NWYxMDJiNDM5MmVmMTNkOWY0MGY2ODgzMTk1MDRlNWEwIGltcG9ydF91bmljb2RlCis4MzMwNSA4OGFkYjY0YTdhZmQ5YmU3YmUyYzZjMTI3NDRlMDEyNTAyMDE3NGM5IGltcG9ydF91bmljb2RlCis4MzMwNiAwMDQ5NjE4MDFkMTg2NTYyNjZhYzVjNTdiZTIzMDczMTQ2NTliMWNiIHJlbGVhc2UyNy1tYWludAorODMzMDcgODQ1Y2VmMmViMWQ3YzdlNzMxYzY1MmI1MTkxZjlkZDI4MWRhMTdlNyBweTNrCis4MzMwOCA3YzRhNzc2MDQwMjc3MzJmNjAwNDc2ZjgzNWY0ZTJhYjY3MTU0ODRjIHB5M2sKKzgzMzEyIDY2MWU0YmY4NWM1ODg1ZDJkYzAyMGI2YTA4YWI3NGM3ZjI1YjMxMWMgcmVsZWFzZTMxLW1haW50Cis4MzMxMyBjMmVhMDUxNjFjOTMwOTdjNDIwZjRkNWQwOGIyODRhNGJjYzJkM2QxIHB5M2sKKzgzMzE0IDU4OTQ1OTBlOWM4ZDVmYWJiYmI3MGIyYTA2NjQ5MjdhMzI1NGQ4YzkgcmVsZWFzZTI2LW1haW50Cis4MzMxNSBjM2IxMzYyNjY1Mzg4YWM5ZTAwOGQ5ZGQzMjYyODcwZGQ5ODUyYmQ2IHB5M2sKKzgzMzE2IDMyZDk0ZjMxNmRhOTg0N2ZmZTI2YjRjYjIyNzQzY2MyNTNmMjNjNDUgcHkzaworODMzMTcgN2FhOTc1Nzc3MjAyM2RiMTQ0NjQzY2RkZDQ4NmZiYmI0NTUwM2UxMyBweTNrCis4MzMxOCA2YjIzYWEzMDAwMzIxZDc5Y2QxOTlhZDZlN2MxOGE3OWU0YjcwMzZhIHB5M2sKKzgzMzE5IGUxN2IxNjAwZjQ0MDZiNmVlMTlmMDJlY2RjYzA4ZjRhYjg4YTI3NmQgcHkzaworODMzMjAgNTUwYjM4Y2FmNWMxZmM3YmZhYTAwMDFiZTY3NDhkMzlhNGQ4OTA0MCBweTNrCis4MzMyMSA4YjQyNjkzZTk1YjhjMzc4M2I1MjlhYmI5OGIzYzVmMWM4NzdkMWQ5IHB5M2sKKzgzMzIyIGY1NzRhMDcxODg2ZGQ3YzRhYzRlYjg0ZDZmMmUzZWI0YWJlOTdkMjAgcHkzaworODMzMjMgNzkwMzUzYmVjZjhjZWNiOWM1NTEyYjRlNmExMjcwZjg3M2M2NzU4MiBweTNrCis4MzMyNCA1N2VhMDA1MTZlZGVhOTU2MTkzMTQ5NGE5YjIwNDI0MGY1ZjJmMzE3IHB5M2sKKzgzMzI1IDZmOGRlZmQwMTdkNzM2ZTcwNTMyYTFlMDVlNWIxYjllYTBhNTRkMzkgcHkzaworODMzMjYgNmUxM2VhZDM4OTU2MDQ4ODExMmU2Y2IxYWEzZGUwNWEzODAyY2NmMCBweTNrCis4MzMyNyBhNDViMzhkY2RmMTZjYTAwNjdkYWYyOTY4ODJmZDIyZmFkMWMyYTE2IHB5M2sKKzgzMzI4IDc0NTUxYzBiNTEzYjZjOTgzMjA4YmJiYmFlYzNhMjkxMWE2YmFiZGQgcHkzaworODMzMjkgZmI2YTEzODA3YWM5NWFlMzFhYjU1OTkwZTVlMDUxOTNlZGVjNWQyZSBweTNrCis4MzMzMCBmYzgxNWYzYjI3ODEyNzRjOGY4ZjlhZjE1NGE5MTRiODllODk5NjE2IHJlbGVhc2UzMS1tYWludAorODMzMzIgMWI1MGU2MjdjNjNhY2U1ZjAyMzg4ZGEwMjliMTA0NmQ3NmNhNDg2MCBpbXBvcnRfdW5pY29kZQorODMzMzMgMTlmZjM2MDMyN2U3ODM4MjFhYmVhMWY5NjhhZGUwMTJiYTYzZWFkNSBpbXBvcnRfdW5pY29kZQorODMzMzUgMDQzY2FhYzZjODc1OTMxM2E4YmYzNzRkMjZmYjI4NDIwZjc3ODZlYiBweTNrCis4MzMzNiAyOWU2MGNlNjNhZTViZTA2ZTFlN2UzYTg2MGQ4MTM5Yzk0YWFjYTE2IHB5M2sKKzgzMzM3IGU0ODZkMTlmMmIwYjgxYzNiOTA2MjlkZTQ1NDk5OThlNDc1NDM1MWEgcHkzaworODMzMzggOGE4MDFhM2FjYTM0OTlhMWFhMGMyNDEyODQxOWQ5MzBhZGM4ZTliMiBweTNrCis4MzMzOSA0M2QxNGJiZDZlYjExNzg0MmI3YmYxZjY3M2I3NGNkY2Q5ZjJjMjk5IHB5M2sKKzgzMzQwIGRlZDU4ZTQ0OWRhMzMyZTZmNTYxZjNhYjQ2Y2UwZDIxYmEzZmRhYzQgaW1wb3J0X3VuaWNvZGUKKzgzMzQxIDEyNWY1NGE3MGFiOGZiZThmZmY1Mjg5YjdhNzVhMjU2MDdkMTkyMzkgcHkzaworODMzNDIgNTk0N2IxYmIwZmVjZGMxN2U1MTNmYzdkNGU4ZDNjMjc2Mjk1NWRiNyBweTNrCis4MzM0MyBiMzdiNzgzNDc1NzQ5MmQwMDliOTljZjBjYTRkNDJkMjE1M2Q3ZmFjIHB5M2sKKzgzMzQ1IGZjZTc4YTIwOGRiMjcwYjAzY2M4OTU1NDg1OTgzMTc2MmZlZjQ5NjMgcHkzaworODMzNDggMDljYTQ2NDkwNzA3ZWY5ZGU0M2U1Y2Q1MDlkM2RlOTRkN2ZiYTk0YyBweTNrCis4MzM0OSBhNmI3MThlODE0NDgwY2ZjNmIzMWUzYWQyM2YwYjY4NGRlYTFlYTM4IHB5M2sKKzgzMzUwIGM1NTg3NmE2ZmEzY2MwMDBhOTNhZWZlZGRiNmUzNmY1YzAyNzA0OTggcHkzaworODMzNTEgYjEyZGRhNjJlOTNiYjk0YWMwYTNlMDgwYzQ0YjQ2MzhiNWVkODlmYyBweTNrCis4MzM1MiBlMDFkMjZhMzQ2ODk5YzhhYzU3OWU0OTA5OWQ3YWIyYmU5YmQ3MWJlIHB5M2sKKzgzMzUzIDRkYTNjNTcwMzQzYmIxMWUwOWI1MTZhM2FiMTM0ZmE4MDBmMDc4YWMgcHkzaworODMzNTQgMjVmNmQ1NzBlN2MxNjEyNjEzZjdmMjE4MDYzNDRhNDEzYjIzMWEwOSByZWxlYXNlMjctbWFpbnQKKzgzMzU1IGJlNjFjODA4YjUyODk2ZjJlMmFiZjg1YWNiOTdmZGYyYTYyOTUwMWQgcHkzaworODMzNTYgZTI1MGU4ODUyNGQ1YjA5YjJkY2JlMjAyMWMzMzU3OTJlN2I2M2EyMSBweTNrCis4MzM1NyA4YmRiZDMyYzJlYmJkZDZhMDJiYmNkMWUyMzdmYTAyNjdkMzJkMmNlIHB5M2sKKzgzMzU4IGY5Y2MwOWRhY2VkYWRkNGM1MmI5MWRhMjYwZjMwZTcyZmZiM2EyZjkgcHkzaworODMzNTkgYWI4OWQwZjUyYTdmMzBiN2I2MDllNzRmOTYwNzg0OTY3ZmE3ZDZlNiBweTNrCis4MzM2MCA5ZWI0YmE0NWE2YjI4NmI2YzU2MTJjNTJlNTRhMTAyMDk2NDE1NjIyIHB5M2sKKzgzMzYxIGUyMzdiMTVjMmJlOTk0MjQzNjJjNWE5NDUxNTczMDc4NTk4ZWQ4OTggcHkzaworODMzNjIgNmVjNjY4NjIyZDY0ZDljYTMwM2ZlMDU1ZGE5MmM4ZTM4MjM5MWVmYyBweTNrCis4MzM2MyA2ZWVlZDM1MjY2MzQyNzQ3ODA1MmE3MTRlMzMxODdhMjdhNDdiZDRhIGltcG9ydF91bmljb2RlCis4MzM2NCBiMjQ4NDFjMzA5YmU1NDY4MTUxMWNhNDczMGM0OTk2Njk2MWI4YzdiIGltcG9ydF91bmljb2RlCis4MzM2NSAxOGIyNzM0ZjdmMzhjYzVlZWIyOTZlMDcwZDQ5OWFlMzBiNGVhOTkxIHJlbGVhc2UyNy1tYWludAorODMzNjYgMjYzZmFkYTI1NjVkYTIzM2MyMWQ2NGQ1Yzg1YzdkNDdhODhiYTYwZSBweTNrCis4MzM2NyAyNjU2NWViZDVlMzJlZTdkNDE2NTU5MGEyMTAyZmUyZjMxNzQzOWI4IGltcG9ydF91bmljb2RlCis4MzM2OCA2ZjViYTcxMzE2ZTcxNjFiNzdmZmZlZmMzOTdiY2UzMWE3MWEyNzU2IHB5M2sKKzgzMzY5IGFmNjkyZWU5MGY2ODM4MDU2ZThmZjljOTJlYjE0NzM5YjFiOGEzNTIgcHkzaworODMzNzAgMjhmMzdhMmI0NDRiZjM1NGM3YWU3NGM3MjlmMGUwNDE3MjFhYmRjYSBweTNrCis4MzM3MSBlMmE5ZjYzM2Q2MTI2ZmFmZmM3NDIyOWY1YzUzMTNmMDRkZjc3ZmI1IHB5M2sKKzgzMzcyIDFjZTlkNGZiMTNjMjY1MjAyMDliYTdhYjczOTNmNDljZDM2ODYzMzcgcHkzaworODMzNzMgNjVhZjdiZTYxNGE0ODE4YzhmNDRhMzNhOGIzOTJjNDk3MmIxMjc3YiBweTNrCis4MzM3NCA1YjI0ZDFlMTgyNjk5ZDExZmE4Mzg1MzM5NzI0ZDYzOTNjZjQ0MTg3IHB5M2sKKzgzMzc1IDIxZDhjNDJjMGIxMDc4MDA5NjhkMGNjYWU1OThlYmFmMjEzMzgzMmQgcHkzaworODMzNzYgMjgxMmJmZDg0YjUwMDBhNWFjNTdmZTIzZTMzOTk5MjBhOGQ2M2RlYiBweTNrCis4MzM3NyAzODcwNDNkMjA4MGI1M2ZkODNhMTk3OTIxNjIzYzc4NjdhNWZmZDQzIHJlbGVhc2UyNi1tYWludAorODMzNzkgZjI5YzMxOWZmNTY3OWEzZjY0MWU0ODhmMTY5MTVkNjkxMTljMTlmYSByZWxlYXNlMjYtbWFpbnQKKzgzMzgwIDQ2MDNhNWM0Njc1YTQzMjAyNTU1MDg4NzkzOWJmMDZiZDRkNTEzNzggcHkzaworODMzODEgZTgwNTc3ZDU2YThmYzQ4M2QwMmJkZDQyZWQ5OGM3ZjhmZDcwMjk5NSByZWxlYXNlMjctbWFpbnQKKzgzMzgyIGRjYjE2ZDcwMzY1MzhhMWQzN2UwMGE4MmExNzAxYjQ2MTQ0OGZjYTkgcmVsZWFzZTI2LW1haW50Cis4MzM4MyBlZGRhNzU5NmM4MzEyNzk1ZmIyOTVjMTMxZjc3MmNlMDk1MTMzZmMzIHJlbGVhc2UzMS1tYWludAorODMzODQgNzhiY2FmZjBkZDJiMDJhY2JiYjdiYzE4YTZmYzU3MWM4ODc2ZDI3MCBweTNrCis4MzM4NSBkYWQwODVjOGRlMDk5YjFiNjk3NTAyZDIyOWU5MmFjZGI4YzA3ZDI3IHB5M2sKKzgzMzg2IDZkZTcwZDQ5YjkxNjVhZDg1ZjY3MWZiNTgxYTQxNjU5OGFhZTJkMWIgcHkzaworODMzODcgOTcwYjdjZDUyNDUzYjVlYTM3Y2RiMzEyZThkNzcwYmE0NzRmYTViZSBweTNrCis4MzM4OCA3MzQ0NDI3ZTg3ZGZjYjM1OWU4NDIwMWE1MjQxM2Y1NTNkNTFiMThjIHB5M2sKKzgzMzg5IDZiZjI5MmU5MDZjMmMyM2ViMTA0YTBkZjQxNDhhZTliOTRlNzkzNjMgcHkzaworODMzOTAgM2M0YmQ4NjEzMzgzZTRkNjE1MDM5OGRhMzk5YjMwODQ0NzNjYzVkZSBweTNrCis4MzM5MSA1NDEwZTExNjdmN2QzYzUzNTY0ODQ2ODVmMGJkYTQ5YTJjNTMwMDI5IHB5M2sKKzgzMzkyIDZlZjMyZDIwOGZjYzRmNGU3NWM5YTJmMzE3NWJhY2EyZjQ5MDZlMzIgcmVsZWFzZTI3LW1haW50Cis4MzM5MyAzMWY0YzRiNmM0NDUwMzMwNmYzYTQzZjE0YzdhMmZjYTZjYTRhYWE4IHB5M2sKKzgzMzk0IGE0YWQxMDk3NTc3NmM1OGU5ZjVlNDU3MWQ3MWM1YjI5NzVlNzQxZDMgcHkzaworODMzOTUgNjZjYjE1YzYyZGI0MmU2ZDc1MGFlNmU5Y2E2ZTc1YjJhMjlmMWVmOCBweTNrCis4MzM5NiBmMmY3OTYxOWY2YTQ5NDcwNWE4MjA0ZTE3ZWRmNDliMTVhYTYyMGE1IHB5M2sKKzgzMzk3IDVlZTNlMjcxMmQ3ZGNmYmY3YTIzOGRlMjgzZGQzYWMzODdmZDJhY2EgcHkzaworODMzOTggY2IyMzFiNzk2OTNlNDZkZmVmZTJhZmIwMTcyYTM4M2E5NTk1ZDE0OCBweTNrCis4MzM5OSA2ZDM1ZDZlNTg1NjIxZmYzZTZmMWQ2NDM4NGIwODU0MGRkYWIzYTc2IHB5M2sKKzgzNDAwIDg5N2ZkNTEwNTFiYjZmMjZhZWEwYmM5ZWVhMTA1YWM4OGRlM2JjMDAgcHkzaworODM0MDEgMzk4ZmE3Yjc3NTNhZTBhNjY4NjllOTYyMmE2Yzg2NGM5OGQ2ZjA4NyByZWxlYXNlMzEtbWFpbnQKKzgzNDAyIDUxYWFkNTA5YzIwZjE1MTU5NTUxYWQ4YmQzNjYzYjA3N2E5OGM4MjggcmVsZWFzZTI3LW1haW50Cis4MzQwMyAxZjAyNzFjMDM2ZTE2OGZlNGFiMjA0MGMwMTkyOWFmOWZlNzE4NjY5IHB5M2sKKzgzNDA0IGNjMmY4NjRiYWM5Y2VlM2I4Yzg3YTliMzQ0NGJlNjE3ZGYzMjIyYTMgcHkzaworODM0MDUgMTM1Yjk5MWQ2NWI2MGU2ODc1MWIwNWQ1MzdiNjY4MGY0ZmNiOTkzNCBweTNrCis4MzQwNiBjZjk4OWEzNGM3N2UzMDM5YmEwNTc1NWI1MjAxYTg1MjNhNjM3YmU4IHB5M2sKKzgzNDA3IDg4YzNkYjZmNDc5ZTQzYjljODc4ZDU1ZTZjZjYzZWRiZjkwOTFmNmEgcHkzaworODM0MDggMjI5OTNkMjdmYzhkZWU0Y2JlMGEyZjM5MzUxODFlMWIyMTYxOGM5NSBweTNrCis4MzQwOSAwYmU1NTA0MjEzZDM4MGYwZmJiY2FiOTQ2MWQwM2JlMThmODViODI3IHJlbGVhc2UzMS1tYWludAorODM0MTAgZTMxNjVlZWFhNzAwYzU4ZDFhNjAyOWYwZDE5MTA4NzI4ZGI4MzhlMyByZWxlYXNlMjctbWFpbnQKKzgzNDExIDc0NTk5ZDM5NTRlMjhkNGM5Zjc0NjE5M2UzNTc4ZGI3NjVmNzNjODEgcHkzaworODM0MTIgMGZlNTVjMjg2ZWRmZDQ3MjY0Yzk3YjhiMDBjOTcwNzZmOTBhMDU4MyByZWxlYXNlMjctbWFpbnQKKzgzNDEzIDc2NjA1Y2ZjNGNmMzgzYmM4ZWJmZmYzMDYxY2MwM2ZhYTY5ZTFiZjggcmVsZWFzZTMxLW1haW50Cis4MzQxNCA2MjVjMjFkZGUxMzgwZjgxZjU0ZDRhMmYyNmMwZmZiODI2MWQ5ZTQ2IHJlbGVhc2UyNi1tYWludAorODM0MTUgYzgzYmE1NTE1MWIxZjMwZDJjZWQ1OTgzYjc0ZWQwOTQwMjY1MWE5OCBweTNrCis4MzQxNiAzMDIwMmMwMDE0MDE1NGQ1M2Q0NWIzYzc2NjQyMjdkODM5NThjYjM0IHJlbGVhc2UzMS1tYWludAorODM0MTcgZWY3NWVjZDBlMWE3YjMyYTk1NDBjNDIyZTZjMmY2NjNkYTVjOGU1NSBweTNrCis4MzQxOCBjYzMzNTA4ZTgwY2Q3ODE5Mjk3YjlhMWRhZTdhMzQxMTVmZmVjMmIzIHJlbGVhc2UyNy1tYWludAorODM0MTkgNzFmYzkyYjg4YjE5YjgwMWU4OTg5YjM4ZDFlYmU4NmE2YTM3MDUyZCByZWxlYXNlMjctbWFpbnQKKzgzNDIwIDAxY2JkOTMyMDI2NDQ4YTc1MTA1Y2ZlMDVkYTA5Njg2ZTViZjM2ZGEgcmVsZWFzZTI2LW1haW50Cis4MzQyMSA4NDM2M2M3NDdjMjEyMGFhNDJiNDhhMWJhMDRiMTdlMDg5MmJlMmI2IHJlbGVhc2UyNy1tYWludAorODM0MjIgOWVlMTk2YTdmOWEyYTMyYmU0NGY4NzYxMWVkNTdhMmQyYzA2NTgyOCByZWxlYXNlMzEtbWFpbnQKKzgzNDIzIGRiYzhkYTgxMzYzMGU2MTBmMGZlNTA4ODU0NmZmZWUwMjE2OWRiMjMgcmVsZWFzZTMxLW1haW50Cis4MzQyNCA5ZGUwN2M1NWZkZGEyNzY5ZWRjNTc5ODVmYzk5Nzc2ODJmNzFlMDIzIHJlbGVhc2UyNy1tYWludAorODM0MjUgYmM2NmUxNTY2YTE5Mjg0NzJhYmYyYWNlMTg4OGIwMjJmOTAzMjcwOSByZWxlYXNlMzEtbWFpbnQKKzgzNDI2IGJmNWM2MzBkYWFmNzUyZDI2ODQzM2JkODIzYTI3M2E5MDQ4MTUxNGIgcmVsZWFzZTI3LW1haW50Cis4MzQyNyA5M2IzYWU2M2QyZjMxMzg4NDE3ZmJmNjQwOWM0MWY1ZDkxZjEzNmQxIHJlbGVhc2UzMS1tYWludAorODM0MjggMTBjMWI2MTQxZDUzNWM1ZGViYjYwYTEzZWZmNWQyMDhmYTk1Mzc4MSByZWxlYXNlMzEtbWFpbnQKKzgzNDI5IDlmMmZiZWU0MjBkYWMyYTFkY2QzMzIwYjFmOGZkNzg5ODlmZmI5NjggcmVsZWFzZTI3LW1haW50Cis4MzQzMCAwZGNhZTQ1NWVjMDc2ZGJkMzhmNWU5ZjdiMDQ5ZDVjYjU2ZWJlZDBiIHJlbGVhc2UzMS1tYWludAorODM0MzEgYmEzNDI3OTYyMzA2MzdhOGY3ZTQzMmY4Y2NkMTVjNTU4MDNiODgzZSBweTNrCis4MzQzMiA2NjFlMGIwYjQwYmYxZjNjYzhkMDVjOGNhYmU1ZmExMzU2MDg4MDU2IHJlbGVhc2UyNy1tYWludAorODM0MzMgMjBjNzI0NGJjYTc4MDM3NjVlMGU2NzVhNDZiODI0YjMxZTI1YjRiNSByZWxlYXNlMzEtbWFpbnQKKzgzNDM0IGI0OTIwMTQ4NGY3ZmU1ZjNhMDQ1ZDczZjdkZWJmMzlhMGYyZGE4NzkgcmVsZWFzZTI3LW1haW50Cis4MzQzNSA5MTgwMjg0MGYwZjc4M2YxZGQ1NTQ0NWU1ZGNjMzk5ZDQ1ZGMzZmQ5IHJlbGVhc2UzMS1tYWludAorODM0MzYgMzQ5OWVkNmNiZDA3N2NkNTZjNDZkMjU1MzU1MTcwMzBlMmZhYzYwYyByZWxlYXNlMjctbWFpbnQKKzgzNDM3IDQ5MDNlNzU3NzQ1NDg1OGE1NzE0ZWM5Mzk0YjYxZmM0MDg1NWY1MTQgcmVsZWFzZTMxLW1haW50Cis4MzQzOCA0NmIxNGEyOTUwZDAwZWI3NjUzNjNhYzAxYWM4OWQzOTM1NzQ0OTE4IHJlbGVhc2UzMS1tYWludAorODM0MzkgNGY2NzkxMDRjYjg2YmRlNjQzYzE5YjczMGM5YTJmYzRkNDZiZTc4OSByZWxlYXNlMjctbWFpbnQKKzgzNDQwIDQwNGE5YWMxYTlhMmI3ZWUzZmI2NWU1ZGExMDhjMWE0M2I0ZDYzNGIgcHkzaworODM0NDEgM2MwZmZlMzk1NTdkZWU1NWRhZDRlZjhlZGQ3MmQ5NmU4YzlkMGUxYiByZWxlYXNlMzEtbWFpbnQKKzgzNDQyIGE4Y2ZlZjg4NDA4ZjNjNDU1Y2U0MzRhNzliYjEzZWU5OTNjYjZkMDQgcmVsZWFzZTI3LW1haW50Cis4MzQ0MyA3MjA3OThhMWVlNzE5MjJmYWE3MzRhYmE1ZGNjZDc3ZjdkYzE2NzIwIHJlbGVhc2UyNi1tYWludAorODM0NDQgNzY1YmZkOGVjOTY4OThjZDUzZDk0NjdhZjY5OTIxNTZhYTVhNmIzZiBweTNrCis4MzQ0NSA1YWYzNjFhZGFhZTlmZGRiYWM3ZjQwYjA4YWUzOGQyZTRjZTM0YzM4IHJlbGVhc2UzMS1tYWludAorODM0NDYgNzViM2VkZGEzYzJiZDk1MzhkYjY5N2YzNWJiODJlMTUzYjVmYWIwYyByZWxlYXNlMjctbWFpbnQKKzgzNDQ3IDE0NmZlZjAyNDlmOWZmYzEwZGY4Nzk3NjY4NjAxODNjZjFlZDViZTQgcmVsZWFzZTMxLW1haW50Cis4MzQ0OCA0MTVlYTJjM2NmZThhOWMwZjA4MzIyMTJhMmNmZTNkNTRlZWM1YWUwIHJlbGVhc2UzMS1tYWludAorODM0NDkgNGEwMDJkYTdmYmZiM2Q5NjYxYjY4YjIyZTRjYTBiMzNmYmYwZWE0YyByZWxlYXNlMjctbWFpbnQKKzgzNDUwIDNkNzgyM2U2ODk3Yjc2MTIwMDQ1MzdiMjQ3NmY2YjJjNzgyM2Q3OWUgcmVsZWFzZTI3LW1haW50Cis4MzQ1MSAyY2E4NDJkY2JlMTFlODQ0ZjAxY2EyY2MxNGVlZjcxNzJhYzUyZTBmIHJlbGVhc2UzMS1tYWludAorODM0NTIgNDczYTgwNjhmNmM1NGE0MjczNTkzZmRmMTFiMDlhZmJjMzg3N2E1MSByZWxlYXNlMjctbWFpbnQKKzgzNDUzIGJlYWIyZmIyOTZjY2RiNjgxMDY3MDYyMGQyZDFjZjY4YmQzZGQ3ZWYgcmVsZWFzZTMxLW1haW50Cis4MzQ1NCAwMWQ5Y2E4MmZkNGU0ZWUzMDNlZmViZGM4YjhhMzgwM2ZlM2NlYzlhIHJlbGVhc2UzMS1tYWludAorODM0NTUgYWFkNTc2NmJmMzZmYzZjY2Q5OGYyN2RmOTM2ZjUwMzdhYTliODg5YSByZWxlYXNlMzEtbWFpbnQKKzgzNDU2IGM3MDZmODY3OWRmY2UzZjRhNTdjZjkxZTdiMThmOGZjYmUyMTc4YWYgcHkzaworODM0NTcgOGMxMDQ1YjkyYjZmMTlkMjdkN2Q5YjgwN2E1Y2U3YTJhMGFkYTY4YSByZWxlYXNlMjctbWFpbnQKKzgzNDU4IGYwNGY0MjEzNGE5MjE3NGZkMDM4NjNlNzA0Y2U1ZGVkMTQ1ODEzY2YgcmVsZWFzZTMxLW1haW50Cis4MzQ1OSAyYmMxZmMyZDhjYzA5ZDczNGQ1YjhhNGJlNzJkYTBkNWZkOGZjMzEyIHJlbGVhc2UyNy1tYWludAorODM0NjAgNjlmODdmOWQzM2U3MjIwYjZiZWIxNjk1ZmM4MjVlMDY0YjcyNzZlYiByZWxlYXNlMzEtbWFpbnQKKzgzNDYxIGJmNjgyMjVkZDJiY2U2ZDVkOTU3MWQzYjlhMzgzOGFmNjUwNmMxNmMgcmVsZWFzZTI3LW1haW50Cis4MzQ2MiA5ZWE1ZGI1NjdiZGQ4YmZmOTI4MDc2OTllNDBkYWFiM2QwNGUzNTE1IHJlbGVhc2UyNy1tYWludAorODM0NjMgYzQzMmFkYWMxMTZhZDcxNDg4MmMzYjI2ZmNlYjI0YjE2ZDQwZWFhOSByZWxlYXNlMzEtbWFpbnQKKzgzNDY0IDkzZDEyNGE4MTk1Y2M0OGE1YjllMmNiMzQ4ZWFhZTEwOWFkZTA4ZmIgcmVsZWFzZTI2LW1haW50Cis4MzQ2NSA5ZjFlZWNiY2MzNjYyMGRlMTU4MzMzZTg0NTg4NzdhNWJkNzEwY2NiIHJlbGVhc2UzMS1tYWludAorODM0NjYgMTk4YjJjZDNhNmQxYjg3YjhhYzJiOTMxYTFlODE3ZjVlYjQwMjA2YyByZWxlYXNlMjctbWFpbnQKKzgzNDY3IDM5NWVjYWU2MDJjYjEwMWU2ZGQ4NjU1ZTA0YjYzMzVmZmI4ZTkwNDAgcmVsZWFzZTMxLW1haW50Cis4MzQ2OCA1YjdlMzVhYTFmMWQxNzNhOGZkMGVjNTNkZWVkNWIzMTM2N2RhODcwIHJlbGVhc2UzMS1tYWludAorODM0NjkgY2I1MjIyNTcyZmNkOTNlYjViMjZlZDVlYjg2MThhOGE5NDlkMDlmOSByZWxlYXNlMjctbWFpbnQKKzgzNDcwIGNkMTFlMWExZmQ4OWJjMTU2ZTQzYzA3N2IzMjFiZDhjNGFiNTE5N2QgcmVsZWFzZTMxLW1haW50Cis4MzQ3MSBmMzU0MTQ2NDJkZmZhMzM1YjI3Yjc2ODQ1NGYwY2I4Zjk1NzI4ZTVhIHJlbGVhc2UyNy1tYWludAorODM0NzIgMjI4YTBlZjIzYTdiMmU1NGFhNDI4N2NiNjYyZGFiMDRjYTk0MDNiNyByZWxlYXNlMzEtbWFpbnQKKzgzNDczIDkyZjk2OGQ4NzRiODZlODFkZWU2YzFiNDkzNTIwOWY4ZTA1MzA1NGYgcmVsZWFzZTI3LW1haW50Cis4MzQ3NCBmNDZkY2Q4YTMxMTM1YTgzMGE2ZGE5Mjk4NzlkYjFhOWMzZjIzYmU3IHJlbGVhc2UzMS1tYWludAorODM0NzUgMjc1NDRmYjBmN2YxNDg1OTA0OTQ0NzBhM2VhYjhkZTFmMmMzOTA4MiByZWxlYXNlMjctbWFpbnQKKzgzNDc2IDEzMTJlNTk0ZWJlNzg0OGU2NzUwN2IwYmMyYzY3NDJkNTFlZTY1M2QgcmVsZWFzZTMxLW1haW50Cis4MzQ3NyA5YmY3YTBmNDJlYWMzOWY1Mzk2MjkxNjY5OTc1NDk2MDllNjgzMjYyIHJlbGVhc2UyNy1tYWludAorODM0NzggNmFlYTcwOTI4YTZhYzZkNDk2NmM5NmQ0NGM2YWQ1MzExZGYyMzUwYyByZWxlYXNlMzEtbWFpbnQKKzgzNDc5IDFhYmRiY2ZhYTA4OWQwODBiMTM2ZWJhZmRkNTY4OTQ0NWE4OWZlN2EgcHkzaworODM0ODAgZjM2YTA0MDc4YmZkYmZlYjI2NGQ3OTMzMjE1NmQwMzVlZTAzOGU0NSByZWxlYXNlMjctbWFpbnQKKzgzNDgxIGViZDRiMjhmNDZhMGYyOWJiZjlkZTU4NzhjNjhkMjYwYjNjMWQ2ODQgcmVsZWFzZTMxLW1haW50Cis4MzQ4MiAwZGQ0ODAwMzhhODg3MmM4NzJkN2VhOTExODFkZjM1MmJmNDQ0ZDQ0IHJlbGVhc2UyNy1tYWludAorODM0ODMgZDE1YjQzYzI3MmZiYjZkNjQ3ZGNiZDgxNzY1Zjk0MjhhYzU0MjZiZCByZWxlYXNlMjctbWFpbnQKKzgzNDg0IDk1MDFjZDY0MGM4ZTg3ZTJlY2YxMTc2OTIyNzBiY2RhNjhjOTVkOWIgcmVsZWFzZTMxLW1haW50Cis4MzQ4NSA4ZjhiYTRiZmJmYTUwNjQ3NjRiYzJmYzQ2MmZlZjY1YjMxZDQ1Nzg1IHJlbGVhc2UyNi1tYWludAorODM0ODYgNzQzNDA2NzQ5YjJkNzA1Y2MzOTFkMTQxZTg4ZGZkZjUxODVjMTI2MSByZWxlYXNlMjctbWFpbnQKKzgzNDg3IGU4ZmM5YTllMTk5MWEwNzk5Nzg1MTU2NDJjZDM2YmM2YTUyYTZkNzQgcmVsZWFzZTI2LW1haW50Cis4MzQ4OCBkZTZkZWY3OTMyNmM5MzY2NzZmMWRkYWM1MTFlOGFmOGFiM2YzMTE1IHB5M2sKKzgzNDg5IDJhNGIyZmVjODI3N2M3YjhmNWZiNWMzMjIwOGU2MzAyY2NjMjkzZTYgcmVsZWFzZTI2LW1haW50Cis4MzQ5MCAyYzI1M2Y2ZTAyZTdmOTI1NDA5NWM5YmUzN2NmODI5ZTdlM2NhMjExIHJlbGVhc2UyNi1tYWludAorODM0OTEgMzg4MTI5NDhjNTMyMTExNzdjOTk5MWQ3OGNlODg2NTFiZDVmZmRhYSByZWxlYXNlMjYtbWFpbnQKKzgzNDkyIDk3Y2IxZGQ4NTY2ZWIyMzVjY2U2OTc1MmVjNzg1NTYxOTVkNjZiZmQgcmVsZWFzZTI2LW1haW50Cis4MzQ5MyA1ZmQwOWU0MTBkMzZiZjM2MGVhMWUyMTViNDI0ODc1NmE2NDkwMWZmIHJlbGVhc2UyNi1tYWludAorODM0OTQgYjdkNWNiYmVhMTgwY2ZmZGI0MDhiYzkzZDIwYWU5ZDBkMTc2NjhmYSBweTNrCis4MzQ5NSA2MWFkODFhNzc0YzU1MDYzZmIxMjllY2U5ZGYyODc0N2UxOTM4MDAzIHJlbGVhc2UyNi1tYWludAorODM0OTYgOWM3NWE5NDE4N2M3M2Y2YTc4OTQ1ODYwMDI0MDQwYWMyN2I1NzMyYyByZWxlYXNlMjYtbWFpbnQKKzgzNDk3IDBkYjY1YzY1MTBkYWE1NjhmMGVlMWIzOTZhOTA3OTBjMDU5YWMwMWIgcmVsZWFzZTI2LW1haW50Cis4MzQ5OCAzMTc0ZDViYTQ2ZTM4ZjFiODAxZWJhMGI2MzMzNTEwYzA1MTg3ODAwIHJlbGVhc2UyNi1tYWludAorODM0OTkgYmMxMGE0NDI3MmRmYzdlZjhmZWE5ZTdiMDYyOTJhMGY2YTc1ZTRlMCByZWxlYXNlMjctbWFpbnQKKzgzNTAwIGZkYmZjZjlkYTJjNzEwY2JmYmNhODhlYWViMjE0ZjMzOTczNzA5NjcgcmVsZWFzZTI2LW1haW50Cis4MzUwMSA4YWRhMzVlOWY0NWQwZjEzN2VhNTNjMjQwZGUzN2YxOWU0NDBkNzFmIHB5M2sKKzgzNTAyIDJjMzY3NTAxNjE0NTFkZDUwMmMzMTI3OWQzNDNhZDBkMDIyYzEyYjIgcmVsZWFzZTI2LW1haW50Cis4MzUwMyBlNDhlZjcxMzFjZmJjN2Y0NDA0MGQ2NTI2ODI1NTMxNjE3MWVmZjZiIHJlbGVhc2UzMS1tYWludAorODM1MDQgYzk2NjMxMzIzOTBkY2RjNjZiZTQwOWVhZmM5MDZkNmJjNmE2NDJhYSByZWxlYXNlMjctbWFpbnQKKzgzNTA1IDBhYWM3Yjg3NzFlMTdmZTNhODJiOTc1MTRmYmY4ODM1NTBhMThkYTMgcmVsZWFzZTI2LW1haW50Cis4MzUwNiA4YTE0OWE5ZjlkYWY2NTcxNjQ1MDA2ZWI0ZTM0M2M2NjA4ZDc2YzIyIHB5M2sKKzgzNTA3IDJlOTdhZWJhZGU0ZGRiY2YzNmUzNjQxOTc4OGNmZThjZWE5ZDM5YTQgcmVsZWFzZTMxLW1haW50Cis4MzUwOCA2M2IyMzQ5ZWY3OTBkNGY0NmI3YzBlNDhmZDc0MmQ1NGUwNDAzNjNhIHJlbGVhc2UyNy1tYWludAorODM1MDkgNzJjOGZhYjkxMTZlYjA4YmIxYzI4M2Y0YTk0MmUyNTBlOTFjZjk0ZiByZWxlYXNlMjctbWFpbnQKKzgzNTEwIGRlOWYzNTNlZTg2NWQ5ZTU4NWIxNjJkNjNiMTY1MjNjNjMwYTE3NTMgcmVsZWFzZTI2LW1haW50Cis4MzUxMSAzN2QzY2Q4YzEwZmI0NTExOTdlNTRlN2JkZWZjZWQ3ZmQwNWNjYTI2IHJlbGVhc2UyNi1tYWludAorODM1MTIgNzUxYzZkZDcxYjVlZDU1ZDQ5NWNlNDA3NTE0MWUxMDkyZjIwMDdkOCByZWxlYXNlMjYtbWFpbnQKKzgzNTEzIGViNmY5OTI1NDMxMzczOGRkYzc4ZWYwMjhlZWE3ZWJhNjZmYTMxMjQgcHkzaworODM1MTQgMTg1ZTNmNzI2NmU5MGQ3NDNhMzk3MWY1YThkMzdhZmQwYTdjN2FmMiByZWxlYXNlMjYtbWFpbnQKKzgzNTE1IDMwMDg2YWEzMzEyMzUxMmFjMzRlZjRjYjlkOGQwMGNkYzU3YjgwYjIgcmVsZWFzZTI2LW1haW50Cis4MzUxNiBkOGRiZjI0MDBkOGEyMWM5ZTRlYWFiNDg1OTliYTk4ODk3ZTgxNWU1IHB5M2sKKzgzNTE3IDhhMmE4MmJiNzFjODIyNDdlMWRmMDg3MjdiMWIxYzZkY2ZjODFiMDggcmVsZWFzZTI2LW1haW50Cis4MzUxOCAyZGMwYjcxMzFjNzIxMDgwYWQ5MTY5YzY5ODQwM2ZmNzg0MDZjOTI2IHJlbGVhc2UyNi1tYWludAorODM1MTkgMDdjODRiOTgxNDAxNDg2MmQwM2RhNjA0MWEwNjgwNGUzZGVkMmMyNCByZWxlYXNlMjYtbWFpbnQKKzgzNTIwIGZkNGIwN2FiNzk3Njk5NjQwMDY1MDEwZGMzZGViOWZhOWIxN2MwMWIgcmVsZWFzZTI2LW1haW50Cis4MzUyMSAzOWUxNGRmNzY1ZTQzMWI5YTc4ZmE0NzUzYTNjMzcyZDE5NmE4MzNlIHB5M2sKKzgzNTIyIDkwNGVmNGJiZmY1ZTU2NGJmNDE2ZDA2NTBhZjk3ZTdlOGQ3MGIyNTQgcmVsZWFzZTMxLW1haW50Cis4MzUyMyBiNjE0NGRhYTQzMzlhMThhYjEwZTZlMWZmNjJkNjQzZTJjYTk0YTQ4IHB5M2sKKzgzNTI0IDYxZDM0ODFlYmE3NDFkNzU3Mjc3ZTI3YjU3NDJiYmE3MzIwMzRiOTEgcHkzaworODM1MjUgNzdiYmIwNWQzMTBlNjNkZGU2ZGRjNWFjNmEzMDY2MDllM2RhOGFlNCBweTNrCis4MzUyNiA5MjQ2YWFkZmNkNzg5YzIzZjEzMzlhZDVhMDFmNGFhZGE2NzNkNTJjIHB5M2sKKzgzNTI3IGViNzkwNDk1YzZhNDUwMmM5YTBlYjE1NjVjYjY5MGQ4MjQ0ZTUxY2YgcHkzaworODM1MjggYTM0OWZhZDUwN2EyMjQ1ODE1ZTUyYmQ5N2ZiZWQ5YmIwY2Y4MjNlMSBweTNrCis4MzUyOSAxNjQwZWZhN2ZmMjljOTI0Yjg4NzhmY2ZiZDE5Yzk0OGZhMTA2N2E1IHB5M2sKKzgzNTMwIGIwOGQzNTA2MjA4ODVmMDJmYWYyNDkyNTA3MmZkNzBlNTgzOGUzNzkgcmVsZWFzZTMxLW1haW50Cis4MzUzMSA4NWNkYWY1ZjNjZGMzZTE0YzA4MWU5ZjI3OTg3NDg2ZTg1ZDhhNzRlIHB5M2sKKzgzNTMyIGEzMTQ5YzkzMTY1NjU2ZThmOTUwMDUzNTk5MDhmZTJjYjM1OGY2NGIgcmVsZWFzZTI2LW1haW50Cis4MzUzMyA2YmFlYmE1NGZkMjRiZDcxYmFlMDA1NTkwYTFmYWJhMDFiY2QwYzRiIHJlbGVhc2UyNy1tYWludAorODM1MzQgMzA2OGUwMGEzMjA3NjhhNWMwMjQzZmMzNGY1YzYzODljZWRkZjc5MCByZWxlYXNlMzEtbWFpbnQKKzgzNTM1IDNiZTI0NjRjMGMzOTQ2ZGMyMjg1N2QyY2UzOWFlYmI4NTg4YTc1ZDQgcmVsZWFzZTI2LW1haW50Cis4MzUzNiBkN2YzMDg1ZDFiMDNlNDJmZDc2YTgzNWQwNjlkMWU1Mzk2ZTk5NjhlIHB5M2sKKzgzNTM3IDdjM2I4NDlkMTgxYWUyZDk4MTE1NjI0OWNiNWY1ZmVjNjAwMDkwOWQgcmVsZWFzZTI2LW1haW50Cis4MzUzOCA1MTZmOWUzNGFmMjA5NmRhMDlmNjM5MzVkZTk2ODA0Y2M3Y2QyMjEyIHB5M2sKKzgzNTM5IGNhNjMyYmFkNmQ2MGNiNDZhNWJjMTMyOGNjYjc5Y2EwZjYwNjNjYWEgcmVsZWFzZTI2LW1haW50Cis4MzU0MCBkYmE5OTgyOGQ5MWMzZThlZTE5NzdkMTFjODI4YmRmMjEzNDVjN2EzIHJlbGVhc2UyNi1tYWludAorODM1NDEgNjUzNjE1MGRkNGY0Mjg2NWQyODQ0NzcxZmFkMmNkMmYyOWM2YzIwNSByZWxlYXNlMjYtbWFpbnQKKzgzNTQyIDU4YzIyZDMwZjc0OTM2NDc3YmEwYmQ2ZDljODc0ZDc3ZDM5NzMzMWYgcHkzaworODM1NDMgNjcyNDkzZmZkNzUzZjk5Y2VmYTk2NTc1OTcxZGFiNjk0MWI3ZjQ4YyBweTNrCis4MzU0NCBjZWNjNmQyYTViNDljYmNjNDRkOTdhMDVkNzdhYWI3YjRlZjMxZTY2IHJlbGVhc2UzMS1tYWludAorODM1NDUgYjZjNWZjY2NiNmRlNWQ1N2RmOWQ1MjgyZTU3YTJhNWM2MjNhOTU2MCByZWxlYXNlMjctbWFpbnQKKzgzNTQ2IDcyMDJjOWEyMDU2NjYyOWRhZDZkMTY3OTQzMzQ4YWY5ZjllOWI4MDAgcHkzaworODM1NDcgMGJmMzZjZGQ4MzM0NTQyNTEwYzVlZGNmY2FjNjM5MzQyZmVkNmI4ZSBweTNrCis4MzU0OCA2ZTNjMjA5M2JiMjEwODRjMDFkY2E0MmRmYmY1OGMyMzVkNTgxZTdjIHB5M2sKKzgzNTQ5IGY4Y2U2NGE5NmM4OTYwMmE1ZjBiOTVlOTA5YWI4YTJhZGU0YmEzYzMgcmVsZWFzZTI2LW1haW50Cis4MzU1MCBhMjRjOWE3NDAxZjQ1MzUxN2UzNTZhYzAxMGVkNzI1MTI4MDEwYmIxIHB5M2sKKzgzNTUxIDY5OWZjZGFmOTk4MTJjYTkxYWM5MjRiNzVkYTU2M2FhNzVlNGY0NTkgcHkzaworODM1NTIgMzA3ZTFjZWU0YTU4MTBmNDBlYjRhMzcxYTk5YzI4MmZlMjViZTBlOCBweTNrCis4MzU1MyA3ZjY4Zjg1NTQzZDRmOTFhN2UyMjRhNGI2NzFmMTdmYjdiMmNjNGE5IHB5M2sKKzgzNTU0IDdmMDcxMDg3ZDgyMGQ5OTJkYjE2YTdiMTUwMDdlMGFjY2VkNDNhMDAgcHkzaworODM1NTUgNjJkOGNmY2NkMThiNDRmNTZlOTZjOTc2MzJhYmNkMjdiNzU5OGFiMyBweTNrCis4MzU1NyA1MTEwMmFiZGVjNTAyMTJmMDU2NzcxMzQyY2IxYTU1N2NjMWU0YTJjIHJlbGVhc2UyNi1tYWludAorODM1NTggYjRmNjE0NzE3OGU1YzJmNzkyNzJiNDIyNGU4OGNlMTlmMDcwMGQ5NSBweTNrCis4MzU1OSBhZmY4ZDdiY2EzZjMzM2ZhOTk2NTQ2ZTllYzUxOWY2NWY1Y2JjMGZlIHJlbGVhc2UyNi1tYWludAorODM1NjAgNDg3NGVmZDFmNjU3YTM2Zjc3MGQ0YWI5MGRjYjM0YWFmNjY0MTBhZiBweTNrCis4MzU2MSA3ZWJmNWY5MDExYjE5MGQyZTgzOTQ0YTZlZDk1NTc5M2NjODBmYWYzIHB5M2sKKzgzNTYyIGI0Yjg5ZDFiNDJjZDQ0NWJhNWIxNDZhZjA4M2I5NjdkYmM4NjIwMjEgcmVsZWFzZTI2LW1haW50Cis4MzU2MyBiYjJkY2YxMjAzYzRjNDcwZjQxYTQ4ZDJjNzViMTJiM2QzOWYwODMxIHB5M2sKKzgzNTY0IGFjMjlmNzBjNjFkYmEzNDQ2Yzc1YmRlMmIyMDdlODk2NDc1ZTA1NTAgcmVsZWFzZTI2LW1haW50Cis4MzU2NSA0MmUxOWMxNGIxNDkyYTVjOWE2MzMzM2M1YTg5MTZhY2VkNGI2MTY1IHB5M2sKKzgzNTY2IDQ3YmE5MDVhN2U4N2RjNjFiNzg4ODU0OTJhYmQ3OGNmNDA2OTE0NGUgcHkzaworODM1NjcgZDBiYjgwZTgxYjM5YTYzYzQ2M2QzYzY3NGUwY2MyNjIwMDMxN2JlMSByZWxlYXNlMjctbWFpbnQKKzgzNTY4IDM3YmE0NzIzMjAyN2E2MDI5OTRhZjExYmE1NWYwZTM0MWJkY2NhOTkgcmVsZWFzZTI3LW1haW50Cis4MzU2OSBmZjZmYWJmMjVjZWY0OTU3YzkzZTc5YTQyZmUwYmNhNmNlYmZiZDk0IHB5M2sKKzgzNTcwIGRmMzc4ZTQ0YmE5YWQzZWY4NGUwMjVkMmU5MDhkYjUyMTlhZTI1ZjYgcmVsZWFzZTI2LW1haW50Cis4MzU3MSAyMzYzOTNjNTU0ZjcxNDkwZGVjYzZmMmNhZmZjMzEzOTdmNTYwYmVkIHB5M2sKKzgzNTcyIDc5NTg4ZDQ4NjdiY2IyNDc1ZDYyNjgxYTcyNGUyOTUxMzY5MDkwNGEgcmVsZWFzZTI2LW1haW50Cis4MzU3MyBkYzk0MTM0MTg2Yzg3NTNjNmMwZTUzNmMzOTI2N2ZlNWZhYTMxY2Y5IHJlbGVhc2UyNi1tYWludAorODM1NzQgODgxNmY0ZTlmNzEyY2YzYjdmMTlhYmQxNGM5NmNiM2ExZWNkYTI0ZCBweTNrCis4MzU3NSA3MGE2YTcyN2VjZDczMjkzNTM4NWE1YmI5ZGZkODlhMjM5MjA3Yjg1IHB5M2sKKzgzNTc2IDY0OTQ3NmM2NjNmY2Y2MTBlNTZkY2Q0NTIyMmRhYWFiMDlmNTVhMzkgcmVsZWFzZTI2LW1haW50Cis4MzU3NyBjYzMzNjY5MmJhYjkwNTQ3NWI5Yzc1ZTVlM2IyZjJhMTUwNTkxYzljIHJlbGVhc2UyNi1tYWludAorODM1NzggOTU5NDAwYWUwNWIwNDZjNjBlZDg5M2FmY2ZhMWU2MGMzYWNkYjJjYiByZWxlYXNlMjYtbWFpbnQKKzgzNTc5IDMxOWM5ZjlkYzQ1NjE5NDZkY2Q1YmI0OGExZDMzOTA0OGZhYTE5OTkgcmVsZWFzZTI2LW1haW50Cis4MzU4MCAzZDAxMWMyZWMyMzdjZDkzNTU4ZWFiZWY3YzBhZjkyN2I2ZTMxNjMzIHB5M2sKKzgzNTgxIDNhZjZjYWU1ZTAyNmJiYTczY2Q2NDU2ZmJhMTJlNmEwN2IyZmUyYTkgcmVsZWFzZTI2LW1haW50Cis4MzU4MiBkNmFjM2QwOWI3OWQ0YTc3ZWQ3NTczM2Y2YjdiMGQyZmIzN2Y0NDdkIHJlbGVhc2UyNi1tYWludAorODM1ODMgYjg1Y2Y4NWI3ZWRiYzU0ZTUxNTU5Mjg2OWM1M2I3Y2UxZmY4Mzk2MCByZWxlYXNlMjYtbWFpbnQKKzgzNTg0IGNlYTZlZDdhMGFhMTFhMGY4NDk3ODk3NDExYzRiZWNlYzNmZTg5MDYgcHkzaworODM1ODUgNGRmYjhhNjFlNjlmZDAzOGYzODJlODBjYzQwMWQ3ZjcwODJhY2JkNiByZWxlYXNlMjYtbWFpbnQKKzgzNTg2IDc2ZTFjNWYzMTkzMWYwZmUwNzliNmU0NTMwOWQwYWJlYThhYmI3ODkgcmVsZWFzZTI2LW1haW50Cis4MzU4NyBlOTcxYzEwNGE1YzIxZTNkMzc0ODBmYjg0ZGMyNTc4MTNkZjBlYjNiIHJlbGVhc2UyNy1tYWludAorODM1ODggZmQyNDk3NTBjYmFlNWE0ZTYwMDQ4NThiOTk4YTE4MTRmY2E5OWQ1MiByZWxlYXNlMjYtbWFpbnQKKzgzNTg5IDZmODFkNmY5YTZkMWM0YTdkY2RkMzU4MjU1Y2Y2NGNmNDhjOTNiYmYgcmVsZWFzZTI3LW1haW50Cis4MzU5MCA2NzMwY2Y5ZDYyN2E1ZGFlODFiNDk3NWFhZTIxM2NhM2NhMTg4MWVlIHJlbGVhc2UyNy1tYWludAorODM1OTEgNzQ0OWQwNDIxM2M2ZTQxZTdhNzQ0MzY5OTNhMDM3MjM2MDQxMjljMCByZWxlYXNlMjctbWFpbnQKKzgzNTkyIDIxNjIwZDliMDg0ODBjZTNhZGMzNjZkYWU2ODJiNzlhY2I3OGQ4NjcgcmVsZWFzZTI2LW1haW50Cis4MzU5MyA1OTU2NzZlNDY2YzBkNDMwYzBlYTIxMGU3ZmRkZDA3YzhmZmJiZWUwIHJlbGVhc2UyNy1tYWludAorODM1OTQgYTljZDI1NTBmZjQwYWNlYjBkNzY0ZjJkMDI0MDlhNjVkYjU4Y2NlZCByZWxlYXNlMjYtbWFpbnQKKzgzNTk1IDEzZDJiYWNjNTZhNDE1NDUyZDdmMTAyOWIyNWRlMjEwZGM4ODNjODAgcmVsZWFzZTI3LW1haW50Cis4MzU5NiBmM2ZlZjIwYTY2ZGQwOGJkMmJlZGExMGE0MDUyODUyYjA0NWY5ZDBmIHJlbGVhc2UyNi1tYWludAorODM1OTcgMjlkMzRlNGQwYTlhMzY3YWU4MDQzMjg1ZWY3ZTgwNDdjMjhlOGNkZCByZWxlYXNlMjYtbWFpbnQKKzgzNTk4IDYxYjY5YmYxZWViZGNlMTFhZmNiMzBhMDdjOGQ4MDFmYzRiYTI0OTEgcmVsZWFzZTI3LW1haW50Cis4MzU5OSBmMmQ4M2ExMzcwM2ZhOWZjMTUyMDBhOGQ1OTczYmFlOGM2N2YzNjNkIHB5M2sKKzgzNjAwIDVjNGNkZjMzYzEzMjVhNzA1NmU3ODgwZDllNTc3Y2Q2ZWEzNWJjNzcgcmVsZWFzZTI3LW1haW50Cis4MzYwMSAxMmM5MWY0YmI0MTQ0OWFiYWM2YWRhZmZjMmQ2YzhkZDBiZDdlYTZkIHJlbGVhc2UyNi1tYWludAorODM2MDIgNjNmYjhkYmJmZGEyNWU0Mjk0YjlhM2ZiZGU0YmVkY2QyZGQ3MGI0OCByZWxlYXNlMjYtbWFpbnQKKzgzNjAzIDQ0Mzg5NmYzMjRjZTIwZmE2OTYwNjg3NzA4NmMwM2ZjZWI4MDAyOTAgcmVsZWFzZTI2LW1haW50Cis4MzYwNCBhMmYwMTMwMjFlMWRkYjFiZmYwODU2MzExOTk0NTc0YzE1ZTMyZTg3IHJlbGVhc2UyNi1tYWludAorODM2MDUgMzdkMzk5YWE4YzE2ZmRhNjc1ZTkyYzY0NTc3OGZhNTUxNWQwMjE3NCBweTNrCis4MzYwNiBmZDIwZWJhMWYyMDExZDYzMDQyZDMzYjlhNGNlZWZkZjI4NmFlYmE5IHB5M2sKKzgzNjA3IDQ3NTBhOGE4YjRjZjQxNzQ1ZjIzYjA5NWIxZTkwZmIzMmU3YTgzN2MgcHkzaworODM2MDggNjM4NDEwYTI5MDQ2ODFjYjA4MjY5ZTg2OWJiZmQ4NzQxOGNmNmFmYiBweTNrCis4MzYwOSA3YTQ3YzRkMzBmNmUxYjNmNDZlYmQwYjQ0Zjg3MWQwMTcxMDNmODk5IHB5M2sKKzgzNjEwIGQ0ODVjNjgwYzY1ZmFjOTM3M2QwOTMyZWE5Y2ZmYjZiMTZlNjJjZjIgcHkzaworODM2MTEgOTUyYThkZTVjYTY1YTE3N2Q5NGZmZTRkYmE2M2RjOTkzMjI5OTM4NyBweTNrCis4MzYxMiA1OTNkNjQxN2VkZjEwNzlmMmMzZTUzNTAyZjYwNTdlNjI0NDllYzZjIHB5M2sKKzgzNjEzIDIwMjQyYWYyNDNkMjBlMjMwNzdjYmQ0MzVhOGJhYTIzZTdhYTYxYzEgcHkzaworODM2MTQgMmQwM2Q2YzRjODI5YzI5MGQ5MDUxNGYxZjVmZWU3NGFlMjNkNTc5NCBweTNrCis4MzYxNSA0NDgyYTQyODg1Zjc1YTUxNjFkZDZlYWNkMDUyMmEyZDg0MWUyYTE4IHB5M2sKKzgzNjE2IDI5ZjIwZWYxMDc1NWEwYWEyNGEwYTExNGFmOGM5MDI2MzllOTM1NzYgcHkzaworODM2MTcgNjAxNWI2ZWM4MWYyYzc3MDNjYzFiMjFkYjI4ZjA3MDUwNzdjNTAxYyBweTNrCis4MzYxOCAwMzFlNmIzNDhhOGU4YWY5ZDNiMTNlNGMzNmQ4NTY0NzFlNWFjNWI0IHB5M2sKKzgzNjE5IDc2MmQ4OWZhY2VhYWFhYzY5ODE2NWI0NzU3NThhYWY2YjU2NmJhODMgcmVsZWFzZTI2LW1haW50Cis4MzYyMCA0NTQwYjZmNDI4ZDM2MzQ3NDg0NjhiMzcxZjIyYTg3MDg5OGE3NDYzIHJlbGVhc2UyNi1tYWludAorODM2MjEgZDU3NTUyYWJmMTgwZTU4ZGQyNDBjNTg2NTg1NDNiZjVkOTY1YzQxYiByZWxlYXNlMjYtbWFpbnQKKzgzNjIyIGI5MmYwYzQ5ZjBlOGY5Y2E2NTY1YjNiYWI1MTlkZjNiMzA1ZjAzMzYgcmVsZWFzZTI2LW1haW50Cis4MzYyMyA2OGNmYzg0ZTRkYjFjODZjMjk0OTlmY2RkOWNkYjM0ZGY2YTg2MDE3IHJlbGVhc2UyNi1tYWludAorODM2MjQgNGMwYjM3ZDg2OWNhZjg3ODZiOGU4MTM4ZTgzZWIxNjBjNjA3NGY1MCByZWxlYXNlMjYtbWFpbnQKKzgzNjI1IGE2OTM0YTFiZmEzYjBmYzYwNTFlMTkzZWEwMGM1ZDEzNjU1NzViYzEgcmVsZWFzZTI2LW1haW50Cis4MzYyNiA2NTdhZTg3N2MwYmYyMDAwNjBjYWUxYjgwMGZlMzU0OGQzZTQ0ZjJhIHJlbGVhc2UyNi1tYWludAorODM2MjcgOGM3OTkwOWE3ZWU3YTYxZjkzZTdjMTI3NjM4ZmNiMzBkN2FjZGNjOSByZWxlYXNlMjYtbWFpbnQKKzgzNjI4IDRkZjcyZmViMzlkOTA1ODFjY2RhNWZkMTA3MDYzNjYwZGEzYWFjNTIgcmVsZWFzZTI2LW1haW50Cis4MzYyOSBlZjExOWRiYmU4ODc2NjE1NWM4YTRlNGI3ZDU5NWM2MGRkMWYzZjE3IHJlbGVhc2UyNi1tYWludAorODM2MzAgYTg4Y2I4MDA1MTEwZjU3M2RiYmM5MDZjZjFkMWI4YzNiZThjOWQyOCByZWxlYXNlMjYtbWFpbnQKKzgzNjMxIGIxZTA0M2RlOWM1YTU4NDAxNGJjYTU4MjZhY2VmYzVmOTNhZGI5ODcgcmVsZWFzZTI2LW1haW50Cis4MzYzMiA1Y2Y2NzliZTNkZmM0ZWE4ZjNmZjg2ZGMyNWQxNzQwYmJiY2ZmYjFjIHJlbGVhc2UyNi1tYWludAorODM2MzMgNmZmZjBmZmZmODViNGVmYmYwZGYzMzUzMjAwZDc5ZTgyYWYzMzliNSByZWxlYXNlMjYtbWFpbnQKKzgzNjM0IDJhY2EzNDQ2MGZkYjQwOWNmNWMxMWMzMjBiMzEyMTQxMDNkOWQ0YjAgcmVsZWFzZTI2LW1haW50Cis4MzYzNSAzZWZiNDU4MTc5MGEzMWM3Nzg2MjBkNDk2NDU4Y2Q1YTRhMjRmM2ZhIHJlbGVhc2UyNi1tYWludAorODM2MzYgNmE2YzEzYTdmMDMwMzhhMGRjODRkM2JlNjYxNDI1ZmY1MDZmNTMxMyBweTNrCis4MzYzNyAzMGE4MDBkN2VhY2NhYWE3MTg3NjBmYjEyMjhlNWY4NzQ3NDdlYzY3IHJlbGVhc2UyNi1tYWludAorODM2MzggZTdlN2M1NjcxOGFmMjZmNTU2MDY2MmRkYzEwMTNiODdiZjM0ODE1OSByZWxlYXNlMjYtbWFpbnQKKzgzNjM5IDE5OTY0OTQ0Y2MwMTNlN2MxZjUxZGU3YzczNTA2YjJkZTlkZDU1NWIgcmVsZWFzZTI2LW1haW50Cis4MzY0MCA4NmQxMTllOTRkYTNhMDZiYzAyYmU3NmJjOTc3YjRmZTdjNDY0ZDMyIHJlbGVhc2UyNi1tYWludAorODM2NDEgNjNmMzgzNzllNGVkYTBiNjc2MWQ1MDhhY2NhM2JlN2Q1YWJjYzNmYSByZWxlYXNlMjYtbWFpbnQKKzgzNjQyIDdiNTg0YTEzYmM5NjVhYmJiZjY5NjMzOGNiM2NmYzc3YzYzOTMxZGUgcmVsZWFzZTI2LW1haW50Cis4MzY0MyBmMzA2MGU2ZmI3MTc1ODVkYTQ2ZmNiNjJkYjIxZWJlNjc4ZTE1Y2IzIHJlbGVhc2UyNy1tYWludAorODM2NDQgMThjOGM1MDA0MTA5ZWQ3MjhkODhlMDgyOWVlNjdlNjY0Nzk4MTU2ZiBweTNrCis4MzY0NSA2OTQ1NDE2YzhkMDQ1YzY4YWVhZmM4NjQyYWJlYjdhYWUwZmUyMGFhIHJlbGVhc2UzMS1tYWludAorODM2NDYgNTE3ODU5Y2IwZTkyMDAyM2Q1YWFjMDkzM2IzNDUxYjkwYWUyYmFhMiByZWxlYXNlMjctbWFpbnQKKzgzNjQ3IGM4MmI2ZWZmYjY5NTMxYTVmM2M4OGZjY2NjN2E5OTI1MWJjNWU2Y2YgcmVsZWFzZTI2LW1haW50Cis4MzY0OCBjZGY2YTNhNTA0MDc0NmQzMTBhNTI0ZmRiODVlYzBmZTVkMGU1ODViIHJlbGVhc2UyNi1tYWludAorODM2NDkgMTI4OGEyNTkzMjg3NmY2MzQ1ZDI3YWE3ODZhMTU5Njg4MWRhYWVlNCBweTNrCis4MzY1MCA1NzEwNWU4NzU2MDRmZWZiYWRlMTM3NjY3YmRjNTM3NWM0ZDUxMDU5IHJlbGVhc2UyNi1tYWludAorODM2NTEgZWJjOTA1MTdiOGQ5NmJmZjgyYTE3ZDAzZDUyYmU4YmMwODc4NzE4NSByZWxlYXNlMjYtbWFpbnQKKzgzNjUyIGUxZWY1MjYzMzM1MGRmNjQzNjRjNzJiOGIzYzQxNGQwOTY2YjhkNjkgcmVsZWFzZTI2LW1haW50Cis4MzY1MyBmODY0ZmZiOGYyZWRlZjY4NmM3NzZlNzU5Yjc4NjM1NWQ4NjkzNDNmIHJlbGVhc2UyNi1tYWludAorODM2NTQgZDI2NWY5MWMzODdkMmZhODQwODg1OTQyZjRjOTUwNzVmZTY2ZDUwMyByZWxlYXNlMjYtbWFpbnQKKzgzNjU1IGE3OTM3ZGE2MjU5MWMyNWU4Y2E3MDE5NDdhN2EwNmMzOWI1MDBhYTAgcmVsZWFzZTI2LW1haW50Cis4MzY1NiA0OGM1OWU5MDU1MzI1MWU3ZjU4NDIwYWJjMGIzN2E1NmM3MmU0ZGI4IHJlbGVhc2UyNi1tYWludAorODM2NTcgN2NlZTFiOTYwOWU0N2RlMDNmZjA4MTU0NDQ0ZjkxMTMwZjJmN2M3YSByZWxlYXNlMjYtbWFpbnQKKzgzNjU4IGIyMDY2Njc4ZDkzN2NmOTkwZmVmNWU4ODBlZTU4MjkwM2I2Y2ViMDYgcmVsZWFzZTI2LW1haW50Cis4MzY1OSBlMjEwZWQ2M2IwNGU0MjM4YzgyMTcxOGY2ZjE1OTAwZjJjZjgzY2QzIHB5M2sKKzgzNjYwIDNkY2ZlMjlkOWNhNTQ0N2MwZjg2ZDQwMjk2ZDY4NTAxZWY4ZWY5NWMgcHkzaworODM2NjEgYTNmNjQ1MzgxZDYxY2UyZTFmYWU2MmI0MTA1NDIzNTYzMzY5NmIwMiByZWxlYXNlMjctbWFpbnQKKzgzNjYyIGY5YzRmMDk5YTI0ZGRkZjc3NDk1OTE4MWVjZmM4NjRlMjI3ZWEzYTkgcmVsZWFzZTMxLW1haW50Cis4MzY2MyA2NjYwMWZiOTBkM2RmNjQ0OGIwN2ZhODE0ZmY5NTM0MTNmYjc3Zjk4IHB5M2sKKzgzNjY0IDcxYWU1MjNlYmE1YmFkZGY3YjgxYThiY2E4Yjc3MzBlMDVjNjRlYmQgcmVsZWFzZTI3LW1haW50Cis4MzY2NSA0NWRiYTIyYTc0ZmM5YTM5ZTgxOGJhYTAzYzY0OGU2ZmYwZTcyNDRlIHJlbGVhc2UzMS1tYWludAorODM2NjYgOWQ5YTgzYjI1MDQ1NzgxZmViZTdkMGFjZjExNzM3NzU4ZjAwYjlmNiByZWxlYXNlMjctbWFpbnQKKzgzNjY3IGFmMzY1NWYyZjI0OGMzZDM0NGYyMWVmNzVhMDhkYTQ0MDMyYjkyNzcgcHkzaworODM2NjggMzNlOWJlMmZhNGQyMzkxZTc1MGEzYTZjMmMyYWZlOThjODcyZDU1YSByZWxlYXNlMzEtbWFpbnQKKzgzNjY5IDYzZTFkMGRjNDRlZTA3YTE2ZjY5NmVhODc4Y2U0ZjU1OTJhMmZlMWUgcmVsZWFzZTI3LW1haW50Cis4MzY3MCAzM2QyZjQyNDU1NjEwMzM2YmUyN2I0YWMwMTljZjI5MWUzNTA3MzRmIHB5M2sKKzgzNjcxIGRjMjBkZjljOWJhOTVmMGFjNjc5NDg2N2ZjNTI3Y2YyNTBmZDQwMjEgcmVsZWFzZTMxLW1haW50Cis4MzY3MiAwM2FhMDVlYmQ5YmM1YmJlOTk0YjQxY2M3ZTRiZmNlNjgwMjcyYmE0IHJlbGVhc2UyNy1tYWludAorODM2NzMgNzFjNDMxNWQ0OWYyN2YyMTgxZmJhODFkZmJlMmZjZjY4MmIxYzQzYSBweTNrCis4MzY3NCBmZjQ0NTZkZDRhNzhjYTRkM2FhMzE2YzQxZDU4MDAyY2UwMjIyYzAyIHJlbGVhc2UzMS1tYWludAorODM2NzUgMjg1MGJkOTE5Mjc3MGQ0YjFkNjI4N2RjOGUyOWE3MzdlOGFlMDI4NCBweTNrCis4MzY3NiAyM2MwODlkYzVjZmYwZTkwNzQwZTZmOTU4MjVkMmVkNzcyYmY3MWY3IHJlbGVhc2UyNy1tYWludAorODM2NzcgZDZiMzM2ZGQ2NDU3NzZmZTEwZjQ2ODk2OTY2ZjBiYWQ1ZTBjZTI5YSBweTNrCis4MzY3OCA5ZDY4ZTc4NDVlNDIwNTA5NTBmNDMxMjViOWZlYzkzMTUxMGQxM2MyIHB5M2sKKzgzNjc5IGM0YmJkYTJkNGM0OTg2NWQyNmViMzlmOWNlOGQ5NzcwYjRiNTc5MGEgcmVsZWFzZTMxLW1haW50Cis4MzY4MCAwNDIwZjU0N2YzYmYyNDExMDYxYzY4MWQzODA1MjZjY2ZjZTgwYzNmIHJlbGVhc2UyNy1tYWludAorODM2ODEgMzk4YTI1Y2Q2MTJkZGFhZWQ1Y2U5ZmVjMDQ4MTkyNTM1MzQwY2UyOSBweTNrCis4MzY4MiA5NzE5ZTVlOGE4YWY5MmViZThlMTc0MTVjMDllYWIwYjk1OTFkZjY1IHJlbGVhc2UzMS1tYWludAorODM2ODMgYjMzYzgwZjdhYjE3NjZiNWM3NzAwMjhlZTRlZGYyMTg4MDdlOTIzZCBweTNrCis4MzY4NCBmMjgzOGViMWJiMWVmOTBhZjk1NzA3ZGFlODZjZDFkNGE2NDA2ZmNjIHJlbGVhc2UzMS1tYWludAorODM2ODUgOGE5ZTk3NjEyN2FiMTM5NzZmNzEyM2YwMjRkMTc2OGJkMDE2NWY2YyByZWxlYXNlMjctbWFpbnQKKzgzNjg2IDM3NzViZjgyOTliMzEzNTZmYjhjNzliZjIxMzJjYTIwNTFhNWFjYWIgcmVsZWFzZTI2LW1haW50Cis4MzY4NyBmNDNmNmQxNzMwNzZlOWFiNWE3ZTY3NTY1Mzg3YjRlMTQwMzQ5ZmU2IHJlbGVhc2UyNi1tYWludAorODM2ODggY2Y5ZmVhMjJjM2E5ZTE2MWY5YzJhY2U2MjQxYzI0MzJmZjQ4YjMzYSByZWxlYXNlMjYtbWFpbnQKKzgzNjg5IGQ2ODZmMzAzMzE3NGE5MzAyNWViZWY0MDY5ODkyNTkxOTJhMWQ3MjkgcmVsZWFzZTMxLW1haW50Cis4MzY5MCAyMGQ3M2ZlYzlmNjIzMDFkZDI0M2RhZGIzZjAzYWNlMjhkYTA2NTBhIHB5M2sKKzgzNjkxIGMxZGM5ZTc5ODZhMmE4ZTEwNzBlYzdiZWU3NDg1MjBmZWJlZjM4MmUgcmVsZWFzZTI2LW1haW50Cis4MzY5MiA1YTczZGQxNWJlMDg0YmU1ZDgxMjJlZjJhODJkZWZkN2NiNjk3OGNkIHJlbGVhc2UyNi1tYWludAorODM2OTQgMjFhOWM5NDAxMTBkMjY1ZTNkNjM1NmM3ZmI4NzM3MjgzNWM5ZTJhMCByZWxlYXNlMzEtbWFpbnQKKzgzNjk1IGZjYTNjOWZiNWExYjYzYzI0NTcxNTgzZDM2NmM4YmQ1ZTFmYzc2NTQgcmVsZWFzZTI3LW1haW50Cis4MzY5NiBiZjY5NTA5NjI2ZmY5NTRhMWNjYjIxMjQ4ZTRjNjc5NTQwMzIyNTYwIHB5M2sKKzgzNjk3IDZlNzk1ZWMzOGU4MDA4Mjg1MGMyYzliYTE2MWJkYTg3YTZjZTc0NTYgcmVsZWFzZTMxLW1haW50Cis4MzY5OCBhZjM5ZTI1NWZlYWQwNTZhZDMwMTJiYmM3NmQ0NjA0NTMzYjUwN2E1IHB5M2sKKzgzNjk5IGYwZWNhNzRmMDBlMTRiMmRmMjI1OGE5ODI3MDc2ZWQ0ZWE2OTE2YzAgcHkzaworODM3MDAgMTQ4OWYzOTlhYmExZTcxZTA2YTFmZjQzNmQ2MWI2MzkyODQ0MDFhZCByZWxlYXNlMjctbWFpbnQKKzgzNzAxIGY0YzlmNmYxZmU3NmE2MmUzYTZiMGI3ODc2YzZjNjJjMDI4ZTgxOTMgcHkzaworODM3MDIgOTE1YjAyOGI5NTRkNzVjM2FkODNhYTkyNjRlMzNlOGYzZTJkZWFkNyByZWxlYXNlMzEtbWFpbnQKKzgzNzAzIDU4MzM0MzU3ODczMmUyZWIzNGQ4M2VjOTRjMGFiZjA0OGZhZWZmMzggcmVsZWFzZTI3LW1haW50Cis4MzcwNCBiM2ZkZDQ0NWUwMzc5ZDczMTQ0NWU1MmRjY2Y4NTdmYTljOTAyNjBkIHJlbGVhc2UyNi1tYWludAorODM3MDUgODk4OTNhMDAyMjczZWVjNTU5ZTIzN2U3YTlmNmY2ODAzOTU2NzY4MyBweTNrCis4MzcwNiBiYTczNTMxNDc1MDc3Nzg2Y2Y4ZmNjYWJkYTE1NmFkZDJhMGYyOGNiIHJlbGVhc2UzMS1tYWludAorODM3MDcgNGM0ZDhhZGU5ZGJhYTE2YzUzM2ExZjY5MmFkODAyZDBiNWNkN2Q5NyBweTNrCis4MzcwOCBmNTk4NDIzYTQ2MjE2OWY3MzEyMDBkZGRkMjY4ZjQxODE0NWEzOThiIHB5M2sKKzgzNzA5IGU2ODg2MzU5NzA2MTNmNTFiMjU2ODc2NTM4NjNlYjI0MTA0Mjk1ZjEgcHkzaworODM3MTAgNzcxOWNjN2VjZjQ1NDZhYWQyZjAzYjhhN2YzZGU3ZDVkNjM3MThmZSByZWxlYXNlMzEtbWFpbnQKKzgzNzExIGU1ZjEyNThjZmM1ODk1ZjEwNjk4ZjFiZTRmMDgzN2Q5MDBjYjVkMDMgcmVsZWFzZTI3LW1haW50Cis4MzcxMiA2YzEyYjE3MTc5MmUyNTBmOGU3NWJkZjQwZmRlZjQ3ZTdmMTVjOGVkIHB5M2sKKzgzNzEzIDU5MzExMTJlYWJlNzdmZDEwODdmMWZjNmFkNzNkMzQzYTNkMmM3OTQgcHkzaworODM3MTQgNzE2ZTYwMTU3MGRhMWM1MTlhNDkyNDhmNjMwNDJmM2U0MmI2YjJhYiBweTNrCis4MzcxNSA0ODVjMDU0YzlhYTE2NTE1MGNjNGEwZGYwY2Y0MjEyMGM5NzE0M2UzIHB5M2sKKzgzNzE2IDcwNDJmYTUzOWU3YzgxNTRjYmJjMDBkYmJlOTZlNThkODE5ZWU0ZjEgcmVsZWFzZTMxLW1haW50Cis4MzcxNyBjNWEyODI3OTdkNWUzNTJlZGQwMzA4YmYxZjQ2ODQzYmM1ZjBmZWMwIHJlbGVhc2UyNy1tYWludAorODM3MTggMGU0NTI5ZDczM2FjNDFhMWNkM2MzMWY0ODk0ZmJmMjRiNWQyYzkwOSByZWxlYXNlMjYtbWFpbnQKKzgzNzE5IDU3NmI3NjU4NDRhZjkyZGE1MzM2Y2ExNWQ0OTc3MWY5ODEzZjU5YzkgcHkzaworODM3MjAgYjM5ODQ2YmM3YmE1NTY3ZTNmNGE3YmRlM2E2YTQzN2I4M2RkNmVmNiByZWxlYXNlMjYtbWFpbnQKKzgzNzIxIGNiMzRjZDYzMDAwMDIwMGEzOWNmZDI2Y2Q1OTYxODVmNWRiMWEwODIgcmVsZWFzZTI2LW1haW50Cis4MzcyMiBmZDdmNzNlMTI1NjgwMGM3MDcxNmJlNjRhOTU4MTQ1NzNmNzhiODYwIHB5M2sKKzgzNzIzIDgzMDQzYzE1MjU2NjgxZTZlYTVjZTg1ZmQwZTRjMzI2NTY4NWZhYTAgcmVsZWFzZTMxLW1haW50Cis4MzcyNCA5ZGU1NmM0MzE3Yzk0M2UwYTkwYTMxZjA0NDEyNDE0MzJjMDViZDE3IHJlbGVhc2UzMS1tYWludAorODM3MjUgYjRhNTMzMmQyYmNhY2NhODIyZWZjNjdmMzE1ZTkyMzJhNjRhOTgwNiByZWxlYXNlMjctbWFpbnQKKzgzNzI2IDJkODhjYTY0YTkwYmMxZDE4ZTc4YWFlZGNmYmEzMDNhYzkyMDZkZTIgcHkzaworODM3MjcgODI4MjI3YTAwNTM4OThiYWU0MjdhMzIyNWQ5YzkwYmQyOGUxMTcwNSBweTNrCis4MzcyOCAzNWZlZTkyMTFmM2I1ODVjOWRhNTU5MGY5M2FhMTkyZmRjZjMxNTk2IHJlbGVhc2UyNy1tYWludAorODM3MjkgOGY0ZjQ2OGZlMjllMDhhZmM2MWJkNGVhNjE5OTg0YjM2ZDZhNzZiMSBweTNrCis4MzczMCA5YzcwNDZmZDRkNjY3MjA5N2JjMDUwOWQ0N2ZkNmFiM2M4ZWIyNjYzIHJlbGVhc2UzMS1tYWludAorODM3MzEgY2E3ZWQ5NDFiY2I5MzQ0MTNlZGM0YzM0NjkzYWE2MzQxZDFhZGRkZSBweTNrCis4MzczMiBjYTZkNmVkMjNiMjM4Yjc5NjczYjA0YmE0ZjQ4Njc0Y2ExMmEyZTU5IHB5M2sKKzgzNzMzIDk1ZmQ0ZmMyN2I5YmI1ZWNjOTI0MjVlOGYyMjU4M2QzNDhlZjMzZjIgcmVsZWFzZTMxLW1haW50Cis4MzczNCA1NmFiOWUxMTFjMWMwZjViNzM5OWE3NmExMjFkYTc3ODI4MmIxNGM5IHJlbGVhc2UyNy1tYWludAorODM3MzUgMzQ3NGRkZjFlYmZlNGEzODQxYjNlOWNhZTBjMzM3NWEzYzU5MjNmOSBweTNrCis4MzczNiBlYWZlMDdkNDBlYjczNTllMDdiMTk0MGU5YzlmYzY4YzMzMmQ5OWZiIHB5M2sKKzgzNzM3IGMxNWFjZDFlOTE2YjM1MDRmNDdiMDA4MWU4ZjExNDZlOGQ1ZGNjZjUgcmVsZWFzZTI3LW1haW50Cis4MzczOCBhMTg1Y2FlZGYzMmNmZWRkYjg0MThkMWYxOTMxZDczMDFkMmY5OWZjIHJlbGVhc2UyNi1tYWludAorODM3MzkgMzViZDU3ZDNkMjMyY2RiZDM2MWQ3ZDc5MWZhNmE3NDc5Y2M5MGM2MyByZWxlYXNlMjctbWFpbnQKKzgzNzQxIDgxMDAwMTc5MzlmNDk5YzdmODU2YTM1Nzg3ZjQwMjBlYzlmYzI3MjIgcHkzaworODM3NDIgNjMzOWE3YjMyNDVjY2MzZWZhZmU2NzIxMzY1OWZmMmYzMWU4MWE3NyBweTNrCis4Mzc0MyA2NzY1MmE3ZjBhZWUyMzc4N2EyZGExMTFiYWI5MjEyZjNlZWUwMGNlIHJlbGVhc2UyNi1tYWludAorODM3NDQgYzE2ODAzYmJkNzkwZDczMmE5OTg1ZTkzODhjODgzMGY4M2FlMWFjOCBweTNrCis4Mzc0NSA3MmYwMDY3MDRmYmRjODE0NTJmNDU3MmFlMDMyY2VhYWYxNzI3ZGNhIHB5M2sKKzgzNzQ2IDM4NGQyMTg5YTk2YTkwMWY2OWExZTY2MDFiZTRkNGMzYjQyYmZhYmYgcmVsZWFzZTI3LW1haW50Cis4Mzc0NyAyOTIyNmMwOGU1NDdkODg4MGE0NGNlMzhiNTYxZjY2YzY5YjZkNjM5IHB5M2sKKzgzNzQ4IGEwMzczOWFmOWQzODVlYjJiNWY5MjFhNTcyZjgwY2U3OTI5NTZkNWUgcmVsZWFzZTMxLW1haW50Cis4Mzc0OSBmY2I3ZTM1OTI0ZTYzNGZjZWIzMWQyYjgyNDZkZDY5Yjg1ODY3ZjkxIHJlbGVhc2UyNy1tYWludAorODM3NTAgYmIyYTMxNWQ2YTAzNTAwMmQxM2E5OTIzYTQyYjgzZmFmMWZiOTFhOSBweTNrCis4Mzc1MSBmODA2ZmIzZDFmMjc3NjM5Yjc1ODVjMjk5MzNjYTlhYzFhZjgxYjZjIHB5M2sKKzgzNzUyIDg4Y2Y5YTBlZDExODEzZjU5ODYwOWI0NWFhN2QxZDliOTViY2FiOGIgcHkzaworODM3NTMgNmIyOGI4OGY2YzRlODg1ZjRjOGYxMmZhYWRjYzRlMzIyMjBhNWYzMCByZWxlYXNlMzEtbWFpbnQKKzgzNzU0IGI5MDZlOWU1ZjJhN2ZhOTM4NDBiNWM2ZTUxNDRkMjllM2UxMWNhNTcgcmVsZWFzZTI3LW1haW50Cis4Mzc1NSA3NmY4NDAyY2E3ZjM1NDBlZjAzMjRjZmZlYjhhMWY4ZGQ3MTVjNzljIHB5M2sKKzgzNzU2IGZhNjMxNGIxNDFkYzQyZDI3YTc5MDU4ZGE4ZWU3NDk3ZTNlNzJmOWIgcmVsZWFzZTMxLW1haW50Cis4Mzc1NyAwZjhhNGZjZmRkMWU1OTRjM2UwNDRhNmY1OTY3OWNlNmEzN2NjMDZiIHJlbGVhc2UyNy1tYWludAorODM3NTggYjA2MjIyZjE1NWZmNWVkNWIzNWE2NzBlNTgzNWE1MmZmZTMyN2EzMSBweTNrCis4Mzc1OSBhZDI5MmZjZTc5ZjllY2IzNjJmZjBmYjQzZmZjMWY3ODRlNzEyYzc1IHB5M2sKKzgzNzYwIDJjMTA1MTBhMWFlZmM1NTU1ZGNjYTEzZjBhOWJjZGQxMTA0YmQzM2QgcmVsZWFzZTI3LW1haW50Cis4Mzc2MSBiYjI2MDhmNzNlYjdjNmQzNDgyZjhkOTRjY2ZkMzc2ZjA5N2I0MGY5IHJlbGVhc2UzMS1tYWludAorODM3NjIgZjdiZDI4YjNjNjgzOTRkMWQ2YzljMDM5OThhYjA1MGZlNDQxNTg0YSBweTNrCis4Mzc2MyA4Y2U2OTA5Njk2ZDQyZjE3NjI4MTk5OGM4NGUxMzAwNWRhOGZhYzMzIHB5M2sKKzgzNzY0IGQxNGUxZTcyNDhiYTNmNmZhZWM5MGEwYjYwNjgyMDBiNDBmNTJkMjMgcmVsZWFzZTMxLW1haW50Cis4Mzc2NSAzMDc1YTdlODVjMTg4MTQzNmVkNTY4MjAwNDVjMGY4NDZjOWJmNjA2IHJlbGVhc2UyNy1tYWludAorODM3NjYgNzY4NjRhYzViNjdkMDEyNjNkZWY4MWQyNzBlMjA2NGIwMTI5MGJiNiByZWxlYXNlMzEtbWFpbnQKKzgzNzY3IDA2YmJkZGExMzJmMzU0OTU4Y2FlNzU4ODUwNjY5ZTc0NzQ1NDM5MmEgcHkzaworODM3NjggNDNlNmJmODZjMzdmMmMzMDQ4ZDRlNDA1NmJmNWQ2ZWM3OWIyN2UwZiBweTNrCis4Mzc2OSAwOGFlZDAwZmJlYzMzOWEwZDdmM2MxZmY1NTE3MzllMzRhMDJlMzQwIHJlbGVhc2UyNy1tYWludAorODM3NzAgMjYwYWJlOWNlZmFjMjhhMjM4YzJhODhjZmE4ZWZkOWQ1ODBmYjE0MCBweTNrCis4Mzc3MSA3YmNmNjI1NWRlMmZmZjNkMmI5OTFlNWY3MDM5NzhlYTBhNDlmMGZjIHB5M2sKKzgzNzcyIDM5NGU0OGM1MTZjNGEzYjEyMzY2ZWI4NzdiOWQwODkyYThjNDQ4NzIgcmVsZWFzZTMxLW1haW50Cis4Mzc3MyA0MGI0ODM3ODMzYThiNTMyZmYzNzQ1OGE3YWE1MjEyZWZkMDZlMDBjIHJlbGVhc2UyNy1tYWludAorODM3NzQgOWQxYzY1ZjgzMjNlZmMyZGVmMjIzM2Y2NTU5MjNmYzBlMzc5ZjQ2YiBweTNrCis4Mzc3NSAwNjMyNzljNmZjMTYwZTBhZDM5M2JlMWM4ZjVjMGQyMDVlOGEyYzNhIHB5M2sKKzgzNzc2IGJjY2M4NGUwNGEyY2FlNzMwOTRhNGQzYzhiMGZhODE0ZWVmNDk3MjMgcHkzaworODM3NzcgZWMzMjE3YTllNTIxNmRmYjJlZjNkNzJlMjBhMDUzZWYxMGE5YjM4ZCBweTNrCis4Mzc3OCA3NjA4NTMyZjkzM2E0NmVhZjQyZWYwN2I4ZDY0MDc1ZmM2M2JiN2EwIHB5M2sKKzgzNzc5IDI3NWFjZmNjY2NjYjA4YjU3NTkzZmM1N2NlYjQ0NDE5ZTQzOGJmMzkgcHkzaworODM3ODAgOWI4MDJiNmI0Mzk1MDlkM2FlZWI3NTRiMWI5ZDg2N2YwYzg0NjU1NiBweTNrCis4Mzc4MSBmMjdiMjdjODJkOGZmNDhiYjNhZGM1MDU1MjNmYTA1NTc5ZWVlYmNiIHJlbGVhc2UzMS1tYWludAorODM3ODIgNzE3NWQxODA1Y2MwZGY2MGFlYzFjNDY3ZjlkZWYzNjQxZjg5ZDgyYiByZWxlYXNlMjctbWFpbnQKKzgzNzgzIDBlZDY2NWU4YTExNTQyOWJmY2Y1YWQyM2RiNmQ0NjI1MzhkNzFhYTggcHkzaworODM3ODQgMjgxMzZhZjAwY2NhYjZkNDdjOWNlYmIxNWVlYmFlM2YzOTE2NTY0NCBweTNrCis4Mzc4NSA0ZTMyNTg4OTQ4ODlmYmRhYWVmMmMwNWE0OWUyMWMzNzMyZmMyZTc3IHB5M2sKKzgzNzg2IGM2ZDg5MjZjOTlkZjU4NTBiNzMyNTRmYzBiZDc2YmM0ZWM0ZmYwMTQgcmVsZWFzZTMxLW1haW50Cis4Mzc4NyA4N2YzMzMwMzgwMzVlNzhjMWY5MDlhOTRmMjkwYjZjZjYwZjYyZDNlIHJlbGVhc2UyNy1tYWludAorODM3OTIgYzFkN2Y3ZmU0N2EwNTcwNzA3ZTU2OTY0YjExZTA2NzE0NGY0MzAyMyBweTNrCis4Mzc5MyBmYjA2ZmFiMTZhM2ZlNjA1YjkyYTM5ZmQwMjEyYTljY2Y4MGZmNzZjIHJlbGVhc2UzMS1tYWludAorODM3OTQgYWU4YzI1Zjk0YWRmNGQzNTE5ZGRlOGQxODgxNDcxZTFjNjEyNWI4NCByZWxlYXNlMjctbWFpbnQKKzgzNzk1IGQ5NWZiYzRhZWU3YzNiOGU2MTIyMWE3Yzk5Zjk5MTgxMTE3MDRmNDMgcHkzaworODM3OTYgOWQzYmEwZDY2NWE2NTA4YzQxN2I1MzU4ZDZlZGIzYThlZGUxYzBjMSByZWxlYXNlMzEtbWFpbnQKKzgzODAyIDI0YjNkZWQ1MTgyNTRjM2FmN2IzMzcyYzcyOTE2OGFhYTAzOGJmNGUgcHkzaworODM4MDQgNGVmZWQ2MmVhYzNhODZjMWVkZjYyNDU1MWRlMjZiZjMxNTk4N2JhMyBweTNrCis4MzgwNSA2MDNjMzU1MDhiMzYzZGMzYmJlNWNlZTc3ZjgxNmVjODA0MGRkMDgwIHJlbGVhc2UzMS1tYWludAorODM4MDYgNzA5OWVjMGJjYmQyYzk5MjhiMjYwOGRkMTc5OWZjYzdmMmY3NzJhYSByZWxlYXNlMjctbWFpbnQKKzgzODA3IDE1ODM5Y2E0M2Q5NmEzNWUzZjE4OWYxNTZhNDYxMjY5YTJiNmRjNWYgcmVsZWFzZTMxLW1haW50Cis4MzgwOCBiYmUyMjIzZTM3NTA2YTA0YjU2Yjg4ODg1NDk0ZWVkYzUyYzIzYmE0IHB5M2sKKzgzODA5IDRiY2Q1MzYxN2E2NTZiZWQ3MzUwYTY4MzhhNGI2MTZjNzA0MmM4NmMgcHkzaworODM4MTAgMjhmZWY5ZTdjM2JiNzMyZjFmMTYwOTY4YTBlNmQ1Mzk4ODBhOTA1MiByZWxlYXNlMzEtbWFpbnQKKzgzODEyIDkyNDczOGFhYjcwZmRkNjlkZWQxNTBhMjk2YmM5NzYxMzFiOGJlZTUgcHkzay1kdG9hCis4MzgxMyA4YzIxMGU2MWNhNzc1NDEwZjcyZjg0ZGExM2U2OGM2MWM2OWI2YTY5IHB5M2stZHRvYQorODM4MTQgYmZmZDFlMjg1NGIzZDM2YjE1MzU4ODg5NzcwMDczZDc1MTBmMTExNiBweTNrLWR0b2EKKzgzODE1IGEwYmRjZGQwZjA4NjQzN2M4MzFjZmIxODI0MDdlODVhNGU5N2RhNzIgcmVsZWFzZTI3LW1haW50Cis4MzgxNiBlNDFjYTY2NzJmODIyZTA5NmNlNmU2OTg1ZGQyMGMzNmM1NTBjYzhhIHB5M2sKKzgzODE3IGY0ZDkyYzZkNGQ0MmE1M2QwNjBhNzNlODNhYmY5YjNiZmQwZjE4MzggcmVsZWFzZTMxLW1haW50Cis4MzgxOCBiZjMzNTliN2VkMmVkNWE3Yjc5YmMyODQ1NmFlMzBiYjQ0MjVmM2RlIHB5M2sKKzgzODE5IGU2MWEwOTRiNDgxOGQ0NTkzMTdmZTNjNjIwYjVjZWRlYWY1MmU5ZjcgcmVsZWFzZTMxLW1haW50Cis4MzgyMCA0YjI0YjdhNDIwYzkyN2ZlNTJhZjAyZDM0YWMwMDQ5ZGUxNzQxMjdkIHJlbGVhc2UyNy1tYWludAorODM4MjEgMDE3ODc1NjNlMmNiMzQ0ZmU5MzQxNzNhNDA3YmU1YzliMjI3NmZiNCBweTNrLWR0b2EKKzgzODIyIDAzNzBjMTFmZDIxZGYzZDRhOTQ0ZjcwYWJkZmYzMmRiMDM0NjI1ZGUgcHkzaworODM4MjMgYjZmZWI2N2EwNWYxZjE2ZmFiN2IzZTUxZmI2Yzc1Y2U0YWYyZDdiYSByZWxlYXNlMzEtbWFpbnQKKzgzODI0IGUxNjU2MDU4NWUzNWM2YjM2NGUzM2ZlNjAzMTRmMTA5OTRiOTk1ZDAgcmVsZWFzZTI3LW1haW50Cis4MzgyNSA1ZWE3MDdkMmNhYTg4ZTlmZjMxYjY1MzRlMWZmZWU4MGJkODJhZjY5IGltcG9ydF91bmljb2RlCis4MzgyNiBiZTE1OWYzZGI1ZDZhZTBkZTMxNjJkYmQyNTBkN2I2NDI2YWYxYjI4IGltcG9ydF91bmljb2RlCis4MzgyOCAxMDg2ZGFkNTBjNzQ4MDkyMGQ4MzBlMWVjNTg1NzZmNzVmMzdhNDU5IHB5M2sKKzgzODI5IDZiMjE4OWQ4ZThjNDRkMmY0MjIwYmExY2JjZjU2ZGNjZWM2MTdmOTYgcHkzaworODM4MzAgYjRmNTQ2MzliN2IxOTVjZjliNzgwNTE5ODdhYmRiMmJmYmI0NDE3ZCBweTNrCis4MzgzMSA5ODNmMTEwYTIyNGUyYTQ1ZWI1OTgzZjlmNzVmMGRlMzhlZmRlYmIxIHJlbGVhc2UzMS1tYWludAorODM4MzIgY2M1YTI0NmIyZGExYmI4MmU4ZjE3ZjQ0NjhkNjgxM2RiNDkxMGViMiByZWxlYXNlMjctbWFpbnQKKzgzODMzIDc1ZWJlNmNjODA4MzM1MWE1NWZiMWU3NjkzY2ZiMmZkNzU0ZDkzMzggcHkzaworODM4MzQgYzUyZjVkZjUwNDQ4ODk3NWQ5YWQ5YTJhOTMwZTYxODZhY2U0NTNjNiBweTNrCis4MzgzNSA4NjgzYWVhNGI3MmVmOGRjNzk5MWFiM2Q4Zjg0MTU3MDgxZmRjYzc5IHB5M2sKKzgzODM2IGUxM2VhODNlMmVkYjNkZTIyZTcyZGU1Mzc0ZTI3NjFlYWZhNDViYzcgcmVsZWFzZTI3LW1haW50Cis4MzgzNyA0MGQxMWI4MTM5ZGE1MGIwNDdmZWIyZjVmODE5MGE5NTYyZjRmZDVmIHB5M2sKKzgzODM4IDUxNWUwZDcwNTU0M2ZlNTc1OTdlN2EyOTQ0MGU2ZTY5ZGUxOTlhZjkgcHkzaworODM4MzkgMDhlMDVkNDI0ZDk3YTYyOTMwMzhkZDVlYTNmZDgwY2M1NDAwMGQ4ZSBweTNrCis4Mzg0MCA2MGFjNDFhZTdmMzEyMGQwNTZjZDYwZDliYjE0OTNkNDQzNmI1MTQwIHJlbGVhc2UyNy1tYWludAorODM4NDEgYjlkMTk4MDIxNzQ1ODk0Mjg3NmUyNzcxZTRmY2ZmZDA4M2QyNjI1YyBweTNrCis4Mzg0MiBkZjI1ODkxNWY1MmZjYjRhYWYzNmNmMGI1OTZkN2Q5MTcxOThmODdkIHJlbGVhc2UzMS1tYWludAorODM4NDMgNWU3ZjE1ZjJjMGJlNmNjZWIxZjM5YWEzNDVhMmJmODA2MTRkZDliYyByZWxlYXNlMjctbWFpbnQKKzgzODQ1IDhiMzc5NmNjMzA5ZThmOTgwNTllYjJjYjQ2ZmU4Y2M2OWJhYjZhODcgcHkzaworODM4NDYgY2MwZWU2YmI1ZTliODcxZWRmZDE5MjhiMDVhNzcxOTg0NjQ0ZDY2MCBweTNrCis4Mzg0NyBmZWZmYzFhMjU5OWM3M2U3NTljMGU4NTExNjQ1NzQxMDkyYmQ0YjRjIHJlbGVhc2UyNy1tYWludAorODM4NDggNzZiYTQxYjc3ZjUzODkzOTUyODQ5ZjcxMzYxZTlkNmEzMjgyYzdjOSByZWxlYXNlMjctbWFpbnQKKzgzODQ5IDQ0NjE5YTU2NmI2YjYzNjEzZjliYTlmMGMwZDIwMGI4MWY3YWEwODggcmVsZWFzZTMxLW1haW50Cis4Mzg1MCBmYTg2MjIyNjU2MDkxMjA3MWY2NTdjM2Q2MmI3NzRkOWE5OGE1Njc1IHJlbGVhc2UzMS1tYWludAorODM4NTEgNTdlNjMxZjA4OGQ3MzYwNTQzMjg0N2IzYTQ0ZjkxMzE4ODVmMGI1NCBweTNrCis4Mzg1NCA0Y2E0OTdmNDgxOWNmZGFkODI2NzAxYmJhNjdkMWUzZTUxYWMyZTdmIHB5M2sKKzgzODU1IDc3YzZmNjBhMWIyNDBiNTA5ZGRjY2I0YTI5ZTBjYTM2ZWU1ZmQ3ZjcgcmVsZWFzZTMxLW1haW50Cis4Mzg1NiA1NWM3MGU3OWM2ODg4NjdjMTFkNzI4OGNmMDQ0MDJhZDYyMzY1OWU4IHJlbGVhc2UyNy1tYWludAorODM4NTggNTUzOTc1MzNkYTUxOGEwM2JiNDNjOGEzYjJkNTM3ZjEwMjgyOGY0NCByZWxlYXNlMjctbWFpbnQKKzgzODU5IGViNWFhOTFmMGUxNmY2ZGRiMTQ3NDk5MzdlNDI4YmU3ZjYzZWRmZTMgcHkzaworODM4NjAgN2Q0NDI1ZTMwOGY3Yjg1MjY2ZWJiMjAzYThmNDYyMzZlNGQ1OGZhZCBweTNrCis4Mzg2MSAxYmQzNTM0MTM2YTAzNjQzNTczZWE5YmQ0NDdkNWE2OTg1NDg1Zjc4IHB5M2sKKzgzODYyIDFhZDU5MjJhZWM0NTNlNDcwMzE3ZjFmMGFmMWE3NDAyNzc5ZGNmMGQgcHkzaworODM4NjMgZDIyODA2ODE4ZmUzYTUzZGI0MDNlMmIyMjE0MmZkNjE0ZWZkY2E2ZiBweTNrCis4Mzg2NCBlYTNhMmQxYmRlZDJhMDViNWRkMDczMzVkZGYxYmNkM2ZhZDNmYzIwIHB5M2sKKzgzODY1IDhkNmI0ZmZjMDUxMmFhNDcxNzE4YWM1YzI2OWM1NTI3NThlNjBiNmYgaW1wb3J0X3VuaWNvZGUKKzgzODY2IDAyMTM1MTU5NWZhYzM2YjIxN2ZkMjJhZTE2ODlkNjI3MTVhNmY4ZWYgaW1wb3J0X3VuaWNvZGUKKzgzODY3IDBkYTNiNTljM2QzODA2MTdjYjViNmJmNTQ4NTVhZjkzMGZkZDljMTIgaW1wb3J0X3VuaWNvZGUKKzgzODY4IGY4MTJiNzk2NDExOTlhMGU5NmQ5MGVlN2ZmOWM5Y2Y0OTMzNGI5MWEgaW1wb3J0X3VuaWNvZGUKKzgzODY5IDNmOGNlZjgzN2YwNzNjMmJjMzc3OTcwNTFiMmE1ZmRiOTZlZjE0Y2QgcHkzaworODM4NzAgMTBjOTVjMGYzNGQzNTViZTlmNWQ2OTdlOTg3NDUzOWIyYzhjNmVmZCBweTNrCis4Mzg3MSA1MjM1NGNiMjk2NDQ5MjZhMTk1OWRkMmEyYjQyNDE0OWFkMjhiYmNmIHB5M2sKKzgzODcyIDljNDQ1YmFkMzViMDg2ZDA0MTczMTMwYTVmOTg0YzViODM0ODVjZjcgcHkzaworODM4NzMgN2Y1ZTExNWQ3NmRmYWQzZjY0ODg1M2NkMmYxN2FlZmMyYWY0ZGI4NiByZWxlYXNlMjctbWFpbnQKKzgzODc0IGExM2JkYjJiODM5OGZiZjE5MWQzMjEyY2MyMjFkOTg5N2MxOTk0YmMgcHkzaworODM4NzUgOGNlMWRmMzUyOGI3NmZjYjJhZWUyYjcwZWU3MGU5YWE5ZTI5NDQ4YyBweTNrCis4Mzg3NiBjNzk5NWU5YmMyZTM2ZDlmMWEyMTY3MTUwMmM1NzBjZmZlNzNiZGFhIHB5M2sKKzgzODc3IDhiOTNjZjMzYjk4N2M4Nzc5ZGVjZjU4MDFiYTE1YzUxYWVhOTc4NmQgcHkzaworODM4NzggNjg4ZWRiYmJlNjU4MTc1ZTZiOGZlMzgwNTdlN2ZhN2M2MGJmMTk4ZiBweTNrCis4Mzg3OSA1ZTNjNjFjYjcwMTQxZDM2MzBkM2VlMGJkMjI2ZGQ4MmYzMGQyMDgzIHJlbGVhc2UyNy1tYWludAorODM4ODAgOTQ2OGQxMzA0Mjg0MjVkMjY1MjE5MDgyYzRmZTllZGZhNmU5MjAxYSBweTNrCis4Mzg4MSAzYWU5NWYyMDc2MDYzNDRmNDIzYjU1ZWZiMjhiNTg4MjdmNjFhZWM0IHJlbGVhc2UzMS1tYWludAorODM4ODIgN2I3ZWJmNTU4ODk0ODU0NzM4YzQxODM0ZDEzNGU1ZDI5ZGFmODc3YSBweTNrCis4Mzg4MyAwMDE1MjlkNjQ3ZmU0OWRhYWQxNDAxZmYzMjM1NTNmZDVlOGJkNjUyIHJlbGVhc2UzMS1tYWludAorODM4ODUgM2E0YmU5ZDI1YTVmODMwNjBjZDI3ZDgxZTk2N2RlMjcyOGEyODA2OCBweTNrCis4Mzg4NiA1YWUzOTBhYzZjNjFkOGFlOWE2ZDk3YTQ0NzBkODVhNzk1ODc1MzAzIHB5M2sKKzgzODg3IDVjMGQ1ZGU1NmZkZjlhYWJlODk1MDE3ZDg1ZmVlNjAxZmUxZTc5MjkgcHkzaworODM4ODggZGUwODA5NzcyZDdlNzAzZTBkMDkxMTg2NjlhNDFmMTkxZmM2M2ZjZSBweTNrCis4Mzg4OSA4YmEwOWNkYjZmYzQ4YjJhZGYwZWM2YmM3NmMxODIxZTg5M2E4Y2Y3IHB5M2sKKzgzODkwIDc5NWViMTI0MDNiOTQ0MjBkYjQ4OGM0MDM4ZjZkZGVlZDJhNDI2NmEgcHkzaworODM4OTEgZGZiYmU3YjMwZTkwMWIzNmZhNDUxODQ4OWIzOTc2OTcyN2ExNmI4ZCBweTNrCis4Mzg5MiBlMTYwNzljNmE0OGY1ODNjZDM2OGQ4ZjRmMDgwNmZmY2Y3ODE2ZWQ4IHB5M2sKKzgzODkzIGYxNjI3Y2ZjYzg5MDUwYjZmNzUzNjlhOWY0MzFkNTYzZDlkZWRhMGMgcmVsZWFzZTI3LW1haW50Cis4Mzg5NCBjMzhmM2I5NjliNGFlNTA0NDRjZGI1YjY2YzcwYmZiMzdlOTczMzY3IHB5M2sKKzgzODk1IDdkYzM3YWUxNzVmY2Q1NzA3ZTc0ZTYwYTUxZTA2NGNmZjk3NDlkMmMgcHkzaworODM4OTcgNmZiMDMxMDM3ZjI5YjUwYmI5NGQxNzAyMzA5Y2ZhNzIzMmI5YWE2NiBweTNrLWR0b2EKKzgzODk4IDM1NWQ3MjczNzM2NGZiZGQ4NTk5ZThmMzM3M2E0ODhjZjUyNzNiZmMgcHkzay1kdG9hCis4MzkwMCA3MmQwNTA0ZTY0ODk2MDQyNGZiMmNiNTFkY2I4ZGZiNzkxYmQ0YmI4IHB5M2sKKzgzOTAxIGM4OWFkNmY5Y2RkYzE4MjIzY2U0YzcxNTg0Y2VjYTQ5MTk5ZDEyOWUgcHkzaworODM5MDIgOTUxMTdhYWI5YTg2ZGY3MmQyZjE5YmMxZDFmYTg2N2Q1NDdhMGZhMyByZWxlYXNlMjctbWFpbnQKKzgzOTAzIDUwMzg4YTgzZWMzZjdlMGIyYzk0NmJjMmIyZTQ0ZjhjOTg0Y2FiYmMgcmVsZWFzZTMxLW1haW50Cis4MzkwNCA1MGY4ZjUyNDdjODEwYWViODAxOGU0Y2EzN2E0NGUwNWI2NzkyNmM5IHJlbGVhc2UzMS1tYWludAorODM5MDUgMGFlNzA2YTcxYTNhNTBkYzFkMTViOTVkMGU5NTU0YmQwMjIxN2I4NiByZWxlYXNlMjctbWFpbnQKKzgzOTA2IGE1NmQ4YTgwYjg4MzllNTU5N2RmZDMwNWE3NjQyMWE2Mzg5YjMxMTkgcmVsZWFzZTI3LW1haW50Cis4MzkwNyA0NmQ0OGQ3MTU0NDJmY2JiODAyZWVkMzk3NTZmZDMyMDkyOWZiODJjIHJlbGVhc2UyNy1tYWludAorODM5MDggNjAwNzZmMjhjMDIzYWM2ZWFhMjg4NTgyMzlkOGJmN2U5Y2JmMzYwZCBweTNrCis4MzkwOSBjMmUxZGIzMGY3NTYyZmFjZTUwZGExYTU0OGRmN2Q1NmRiMGY3MDRjIHJlbGVhc2UyNy1tYWludAorODM5MTAgMzBjYzI3ZWIzNTRhY2Y1MWM0NmJkZTJmMjcxMDUxNGNlNmI4ZjFjYiBiYnRlc3QKKzgzOTExIDk4NTM2NThhODM1NWJiZmI4ZTQzODgzMjU1YjEyMDEyMjA0ZTc5ODQgYmJ0ZXN0Cis4MzkxMyAyOWFmOWFiYzc2Y2FkYTE1M2ZhYzcxODYyZjkwMzRhZjJiNDg1MWFhIHJlbGVhc2UyNi1tYWludAorODM5MTQgYjE4OTJiN2YxOTY2ZjRlYzhiOTMwN2ZmYzQ5OTEwZTUxM2YxNmYxZCByZWxlYXNlMjYtbWFpbnQKKzgzOTE1IDRjNTIzZTFlZjEwZjJiNzIxZjYwNzRjMmJmYzYxMzQxMmNkM2VmODMgcmVsZWFzZTI2LW1haW50Cis4MzkxNiBjMzkxMmFhYzFiNzNmNjBmOWI2Y2U5NzdiYzBlOWRkZjI2Zjk3ZjhkIHJlbGVhc2UyNy1tYWludAorODM5MTcgNmNkMjkyYzljMjk2MGU4MDk3NTJjNTgwMTFiOWFjNGM2MzVhNWZjMSByZWxlYXNlMjctbWFpbnQKKzgzOTE4IDM3MTU2OTA3ZjM1OWNiOWRhNWE4OWEyYzlhZWU2Njg4NTAwM2IxNDQgcHkzaworODM5MTkgMTA5YmRlNWU0MWI5NDRlZjNhZGU5OGFjNjE0OGY2YmMyNmU0YTU4YyByZWxlYXNlMzEtbWFpbnQKKzgzOTIwIGI2NWRjZTU5MDJhMjg0N2JmYzUzOWE3NWQ0NDJmZGM0OWRmNjBhYWIgcmVsZWFzZTI3LW1haW50Cis4MzkyMSBmZjk2MTRlZGYzYTA1NDZmYzZmMTViOWYyYzA1NTgwZmU2YjQzNjI5IHB5M2sKKzgzOTIyIDE0ZmI2N2U3ZmEwNDY4YzEwN2I2ZDExODVkODQzMDEzOTdmYjNjMjggcmVsZWFzZTMxLW1haW50Cis4MzkyMyBmYTQ4NWRjZWE2MTNlOTE1YTM5ZTE0OTE1ODI0YmJjMzFlZmMzMjU2IHJlbGVhc2UyNy1tYWludAorODM5MjQgYmNlYTM1YTJkMmQyYmQ5NWUxMDVkOGU4YjEyYzFkNTA0MjFkYTI3NCByZWxlYXNlMjctbWFpbnQKKzgzOTI1IDE5YWYwODI4N2NjNzkyOTNmMTYxNDk1NTliODUxOTg3Y2I5NGIxZDAgcmVsZWFzZTI3LW1haW50Cis4MzkyNiBhZDZjOGUyMjg3MTJlNGM5NDFjOWZhOGNhNTIxZWQ4NDQ1MjY0ZTZmIHJlbGVhc2UzMS1tYWludAorODM5MjcgYzJkYjI3YWE2YmYyNTAwYmFjYmJjOGY1MzljNWU0MDBmM2MwMzY5YyBweTNrCis4MzkyOCAxMzIyZWYzYzRhNmM4MjkyZTgwZDk5YWNlYWVkNGE0NmRjZGE2YTc3IHJlbGVhc2UyNy1tYWludAorODM5MjkgZGVhMWQyNjhlMzRlZDY3ZjEzMmNkOWIwNTgxZDFkMmE2YjViYTM1NiByZWxlYXNlMzEtbWFpbnQKKzgzOTMwIDllMDAzYTI2MjA5MzNjOTg2YmI1ZjEzODBhMWE3OGI3NTE5YmY1ZmIgcmVsZWFzZTI3LW1haW50Cis4MzkzMSA0Zjc2Y2U2OWFlZDBkYzI3NDQ0YmQzNDViOTgwNzEzOTVlMzJiNjFjIHJlbGVhc2UyNy1tYWludAorODM5MzIgMzkwOTJmODZiMGFmMzJkZWE1YzBiMDk1MGIxYmEwMmNlZTM5MTMzZSBweTNrCis4MzkzMyBhMzg1M2JmYTI1MTgxNmRkNTcxZTRiNmM1ZDhiZTI3OGMxNTVkMDc2IHB5M2sKKzgzOTM0IDNkNmEwMmYwYTJkOGE3YWUzNzc3YzA1ZWI5OGU2YjExNGQ1MzYyMDkgaW1wb3J0X3VuaWNvZGUKKzgzOTM1IDdlNTI1ZTEyNWI3MTVlMzlhMTY2ZjNhYmU3YWFlOWE3ZDM0Y2IzOTAgaW1wb3J0X3VuaWNvZGUKKzgzOTM2IDdkZDVmNWNmYTE3OTQ2NzY3OTM1NGIyYjQwMDU3NDQyOTI3YzA5NzEgcHkzaworODM5MzcgMGExYWQ5YjExNDk2MjI1NWQyMzA1MGU5MDQxMjJkZGQ2MzE2Nzk0ZCBweTNrCis4MzkzOCAyY2I1ODE3NGFhN2RhMDcyYzU5ZDU1MzFiNGU2YzA5YmU1NjRlM2JmIHJlbGVhc2UzMS1tYWludAorODM5MzkgMjllMjBiZGIyYjExYWIwY2UxNDY3MzY2OWYyYTNiZDVkMjI2MWRmNSBweTNrCis4Mzk0MCA0MDU1NmFlNDI0YjczNzlmNGU0YTYxMmYyYzlkYzI3ZDhlOTE4MDA0IHJlbGVhc2UyNi1tYWludAorODM5NDMgNjg5NjliOWRjM2IwNjAwNTZjZGRhNmRiZjA1MjhkMzVmMmMzMjk5ZCBweTNrCis4Mzk0NCA3MzY0OTQwNjcyZjAwNDQ3MTNlZWE0OGFjM2ZjNDczMTdlYTcxMWY5IHB5M2sKKzgzOTQ1IDkzMGIyODAzYzcxNjZiMjIzY2UxNzBmYWVmNGM0ODFhYTZjY2Q2OGUgcmVsZWFzZTMxLW1haW50Cis4Mzk0NiBjM2ZmNmU5MTAwNjhiMmZlODc3ZDUwZGU1YzhkMGZiYWVmN2Y4OTA2IHJlbGVhc2UyNy1tYWludAorODM5NDcgNTYwNjZhNTgyNWNhMjBiY2Q1Mjc0YzRhZDY5Yjg1ZTQwMTkyNzVmYyBweTNrCis4Mzk0OCA3NmQ0NjNjOTkwMDYzOTZkYzQxNTEyMzM4MWExZWIyOGYzZWEzNjRhIHB5M2sKKzgzOTQ5IDkxMDhlN2RjZDdkODA1ZTdiY2QwOGRiMWRkNmM2MTVhMDZhNzc2YzAgcHkzaworODM5NTAgYTFkZTQ2Mzk1NjRlNWFmMWQ5ZTJmNzQyZGNiZDg1OWMwZDQzODFjMCByZWxlYXNlMjctbWFpbnQKKzgzOTUxIGYyMmU5NTA1NTFhZDJiODljMDQ4YzQ1ZDgwYmE1YmIwN2JkZjU4MjYgcHkzaworODM5NTIgM2ZhOGY0MWExMTAzYzk4Y2FmMjY5NGJjYTdlZWE2MjExMGNjNmYzMSByZWxlYXNlMzEtbWFpbnQKKzgzOTUzIGQxYjAzNWUyNDM3MmJlMDE3ZGZkZDRkZDI0ZDBiMTM2ZDQ3NDk2NWYgcmVsZWFzZTMxLW1haW50Cis4Mzk1NCAzZGJiY2QzNGQ0OTRlMjU4YjBjOWZlNTQwZGI1YmYyOTkwNWUzZWM4IHJlbGVhc2UyNy1tYWludAorODM5NTYgODQ5OWFlNWQ5NzE5NmE3MmE1Yjg3NGIzY2JmOTBhODNkYTRlNzM1OSByZWxlYXNlMzEtbWFpbnQKKzgzOTU3IGFiMmQ5NDkzMWIwYzEwNWZhNTNjNjAyMzlmY2IzOWI4MWRlZDQzY2IgcmVsZWFzZTI3LW1haW50Cis4Mzk1OCA1OWRiMzYzZmE1OTQ1YzE3OTA3ODU0YmZkMDAyMmNkNjRjN2JhMTg3IHJlbGVhc2UyNy1tYWludAorODM5NTkgZmQ0NjA2ZWZjNzAwYWJiMjU3OGRiZjg4NjAyMDE1ZmU5OTI1YWZjOCBweTNrCis4Mzk2MCBmN2Q4YWExMGMzZWZhNzY4YTc1YzE2MGEwNDgxYmI2ZjQ0YjBmOTkyIHB5M2sKKzgzOTYxIGVkNjZiMjQxNzFhZjEyZThiNzU2NWJmOWU5ZTBjNWY0YWY5YWFhODcgcmVsZWFzZTI3LW1haW50Cis4Mzk2MiA2OGM0OGY4YWE1NTUzODIzNGZkNWJhNmNlMzJiZmU5Mjc5MzJmMmRmIHJlbGVhc2UzMS1tYWludAorODM5NjQgNTM0M2Y1NzE0ZmVlYzUxYWQzY2ZlMWE3YTVhNjg0MGUyMGM2MjI3NSByZWxlYXNlMjYtbWFpbnQKKzgzOTY1IGJlODNkMjkzYTFlOWFmOWU2N2M4NzA1MmYyZDljZThhMDExYWJkZWMgcmVsZWFzZTI2LW1haW50Cis4Mzk2NiAwMDU3MjFlNTBlMGJhMTRmYjM4YmIyNTA1ZjE4MTExNDEwMWZlMmVhIHB5M2sKKzgzOTY3IDY0YjVjNmYyOTYwMWNkODllNGZjZGZhNzcyMjgyNTJjZDk2YmE0YzEgcmVsZWFzZTI2LW1haW50Cis4Mzk2OCBjYjQ2MWE5MTQ0ZGIwMzU0M2M2NTUyZWRkMDAzZTJhZjhkYzM0ZDYzIHJlbGVhc2UzMS1tYWludAorODM5NjkgZDJiNzIxMTg1YmZhMmNkMTI3NDQ0OGYyYWI2OTYwZTYyYjkxZmJlYiByZWxlYXNlMjYtbWFpbnQKKzgzOTcwIDRhNWFkOTE4ZjdhZjQ1NDRiOTFmMTg3M2VkYmYzNGJkMWRjMDAzMjAgcmVsZWFzZTI2LW1haW50Cis4Mzk3MSA4N2IyZGE4NDAyNTJlN2FiYWZjOGY5Mjc2MTFlOWQ2ZmNmNWJiNmZhIHB5M2sKKzgzOTcyIDAzZTg4NGZhYzRkYmEyNTI5MGI3OGJlNjA0NDVmZjgxNGFkYjg0MjMgcHkzaworODM5NzMgMmRkOTY0ZGFkMTY4NTRmMjcxNWVlODc5MTNmMjU0YmY4N2RhMzg5YSBweTNrCis4Mzk3NCBhNDQ5Y2UxZjM4NWI3MzQ1MDZjZjAzMjc5NzVhMTIyOTc0NGM3NDdmIHB5M2sKKzgzOTc1IGFhODljYmI3YmMyMTliZWExMThjMTQ1NGE1ZGFkMWFmOTEzYmM1NTAgcHkzaworODM5NzYgZmEyZDk3MjBhNjZjYjEwZjYxMTA0MTcxOTEzMjA3ZDRkZGZhZWI5NCBweTNrCis4Mzk3NyBkNmY4ZTg2YTFiZWMyMmMzYWZjYjUzNDhkNzUzNTEzMjE5MmNhYjEyIHB5M2sKKzgzOTc4IDc1NTViMDAzNWE3Nzc0MTFkODRkMTk2YzhkMmQxNTZkZDhiMGQ2ZmEgcHkzaworODM5NzkgMjdiNTUzY2RkODViNjQ2YWI5ZDRjY2I4YjRiMTk3ZDk5YzE2ZTIwYyBweTNrCis4Mzk4MCBmMWQ5MjJkODIwY2FhY2FhYjRkNjc4YmY4NmFkOGI0MGQzZWUzZGRhIHB5M2sKKzgzOTgxIDkxM2FhOGE0MzA0YzU3NGIyZWQyMjJjYmMzYmM2NTc0OTM1MTI4YzcgcHkzaworODM5ODIgM2E4MGU2N2EwZDM3MjVhOGJlN2QxY2QzZWVlYjNhODUwNjZiNWQ1MyBweTNrCis4Mzk4MyBhYTljOGU4MmM0MzU3NmJmMTc1ZjdhYmFiYTdhMTM0MGNhZDdkNmRhIHB5M2sKKzgzOTg0IGQ0YjY3MGFhNmQ2YjgzZGM2NzNlZGM5YTdmOTJlNDI0OTYyNThjMDYgcmVsZWFzZTMxLW1haW50Cis4Mzk4NSAwNjgyOTFkNDRmZDdmOGExYTVjMGU1NGM1YjBjMzhiYTA5NTU3NDM5IHJlbGVhc2UyNy1tYWludAorODM5ODYgZTU0YmFlYmJkNmZmMDEwNDM3NTJjYmRkZTUyNGY3ZjQ1ZTE1NzBiYiBweTNrCis4Mzk4NyAyOTFjOWFmYWIxMmNlMDVkOGRiMmM1ZmU3Y2UyYzk5NTFmYjhmZmJmIHB5M2sKKzgzOTg4IDQ3NDJlN2FlYTJmNTljY2Y2MmQ4MDk4MWJkZTI1NzkxNDJkMzg1YzUgcHkzaworODM5ODkgN2JlNTkxNjMzM2RmZGE2ZjA3N2Q5YjMzNDJkNWMzMTNlOGZiYjFkOCBweTNrCis4Mzk5MCA1MGMwZGJhZWFhMDQ4MDExNjk3ZjM3ZGRkNzRhOGE5YjQyMTBhNmI5IHB5M2sKKzgzOTkxIGFiNjk0Njk3MmI3ZmRiYmQ0OGZmOWRiMDBlMGM0ZTM2YTJmYjA2NjMgcHkzaworODM5OTIgZDg2ODZjNmU2YjVlYmQ2ZDMyMmUwNDVmMDc0NWU4ZmNhNTljODRlOSByZWxlYXNlMjYtbWFpbnQKKzgzOTkzIDNhZjU5N2YxMjMyYWY2OGExNWQwOWM1M2IwYWIyNDNhZmE2MjVjYmMgcHkzaworODM5OTQgZDU0ZGE5MjQ4ZWQ5ZmZhZjY1ZjY1MWNhNzE5ODhjZGNiMTMwY2Q4MiByZWxlYXNlMzEtbWFpbnQKKzgzOTk1IDcwNjM0YzNlMDMxMDdhMWRkYWYzMjYxZGRlOTFkMjFlNGMwOTkzZGMgcmVsZWFzZTMxLW1haW50Cis4Mzk5NiBmNzYzOWRjZGZmYzM2ZGJhNGRiMjExOGEwNGNiOGJmZjMxMDVhYTA4IHJlbGVhc2UyNy1tYWludAorODM5OTcgOTQyMzJhMGM0NWFlMzQ4NjVlMGU5YmVjYjRkY2MxNmE3NGI1MTgyZSByZWxlYXNlMjctbWFpbnQKKzgzOTk4IGNiYTJhOTYxMTE3MDE0NzcyODA1MWM2ODE0ZGVjNTI4ZTMwNDE5ZmQgcHkzaworODM5OTkgMWI1NWI3MWM3YzIxMGVhYTRlYzU3ZjFmZWNiZTkxMTlhYTE5OGQwMCBweTNrCis4NDAwMCBmOGI0ZWJlOWM0MWI5ZDlkNmU4NzNjZjM2MTU5ZjhiMjkwMTc0NjcxIHB5M2sKKzg0MDAxIDM4ZDJiNjRhYjdjMTVmYjc1YmY3OGJmMzc0NzdiMGNiZjgwNzg3OGUgcHkzaworODQwMDIgZDQ2MDBlZTVlODJmMGU5NzE2NGUzMDdkNzk1N2Y2M2U4ODZkMzIyMyByZWxlYXNlMzEtbWFpbnQKKzg0MDAzIDQ5NGExYjk1NDU2OTZiNWI3MjZkMWUxNmY1OGZjMzdmMmRkMmU4YTUgcmVsZWFzZTI3LW1haW50Cis4NDAwNCA5NzEyNDljNzRlODA1ZDhiNzZmZDc4NzljZTc3MzA1YTM4NjJiZThkIHJlbGVhc2UyNy1tYWludAorODQwMDUgOTgxNTU1ZTk5ODZlMzI5NGM0MjE0NmU1MjM5YWI5NjBmZTdjN2FlNSBweTNrCis4NDAwNiBhZWQ0ZDdmMTI4MjFkNzExYTBjMGM1MmEzOGQ5NWI2OTYxMTc1YzQ2IHB5M2sKKzg0MDA3IDA2M2M5OWQ4MDMyYzUxODc1MjMzYmM5ODVlYjA4NWU5ZTk0Y2I4YzYgcHkzaworODQwMDggNzk0ZWI0MGJlZjNhNjU1NGE4OTljMDY3NWM5ZTlmNWZkZWVlODFjMyBweTNrCis4NDAwOSAyZDdiYmExY2YzYmM1NzUyOTIzY2FiNDA2MDRlMDYzOGQ0OGZlYTNhIHB5M2sKKzg0MDEwIDI5M2UzMzJiOGI0YjA1YTY5NzIyY2U5NjM3YzU5Mzg3M2VkODM5OTMgcmVsZWFzZTMxLW1haW50Cis4NDAxMSA4NWFkZmU1Nzg3N2IxYzk1NTk1MDhkZjhkYjJmZDI2ZGJiMTEwNTUzIHB5M2sKKzg0MDEyIDk1MzAxMGMwYjE2ODdmZjlmNDY1OTE2ZThmZWY3ZmJkYWVjZDhlNGUgcHkzaworODQwMTMgYTY1OTJmY2Y3NWU3N2VmNDRhNjk2Yzg0YzNjZmMzNjY2ODJmMGZmOCBweTNrCis4NDAxNCBlMDEzODUwODYwZmFmMTM1Yjc3OTFlMjE5ZTViOGYxNmExNmI4YTIwIHJlbGVhc2UyNy1tYWludAorODQwMTUgMmIwZGY5ZTFmNjllYzllNjE0NWNhMmIwMmNjOGVmMGUxMDY5YjIxNyBweTNrCis4NDAxNiBmMWQxOGY0ZDYxNjNiNTlhZjMyYWZjYjI0ZDk2YWIwNDY0MzYxY2I2IHB5M2sKKzg0MDE3IDk0YjI5MGFiYmFmYmFhNTNiNDhhMTE5N2QzNGMzMDEyODE2NjZhNzIgcHkzaworODQwMTggYTRmZDM3YTFiZjM3NDM1ZDhmNTAxYTQ5N2M4OTlhOTQ5ZGVmM2I0NCBweTNrCis4NDAxOSAxMmZlNGM4OGY5ZTY2NzRkYWJhZjgwNGQ5ZGUyZWM4YzlkZjQyMzdiIHB5M2sKKzg0MDIwIDI3NzExYjBjZDFmMDNiNTRhM2I3NWZhYWNiNzI0MGRkODI5MjEwY2YgcHkzaworODQwMjEgMjg1NDRkNjY4ZWQwZGZiNDY1N2Y0MTNhODEzNzdjM2M5MzI2ZmViYSBweTNrCis4NDAyMiBlZjc1OTU1MTM4ZDIyNzU5ZTZlMzM3NWJiNWZjM2YxMDIyMGMxODM1IHB5M2sKKzg0MDIzIDBhYWM0MGM3NzQ0NDM0MjgxM2ZiMjBlYjQyMWVlNTNjMDc5ZjgyZjkgcHkzaworODQwMjQgYjdhYjc3ZmQyN2I3MDczMDMwMTA1NDRhM2M1ZTNjMzMzZjBjYWM0OCBweTNrCis4NDAyNSAyYzZkMTNjNDA1MThiZWEyMzZjMTdjZDM1ZDJmZmQ5MTcyYjkzY2RlIHB5M2sKKzg0MDI2IGI3MjIwZTQyOWFiYjQ3NDgwMTExNDE2YWIyMTg4MjM4NWNiY2MwMDIgcHkzaworODQwMjcgOWJkMDgyNzAxNzc2NzM2NWI2NTZhMDRmOGY0YzgzM2IwMGU1ZTkyZiByZWxlYXNlMzEtbWFpbnQKKzg0MDI4IDQ1YjI0YWRmZDA2NDlmMDg4YjcyMWFjMTAyMDIwMzE4MzRkZTUwMjIgcHkzaworODQwMjkgYWI2NzBlNDE0YzI2OWU3YjRkYmM5OTdhZTU1NTIyYjM0MmU3MGMwMyByZWxlYXNlMjctbWFpbnQKKzg0MDMwIGQzNjAzMTFmMGU1MjQ3NmFlMTdkYjBkMGI0YjVhNTMyMGYzOGY4NTcgcHkzaworODQwMzEgNWYzMzY1M2UzODM3ZWVlMDA2YTExM2EwMzg5MjAzMWQ2M2EyZGI5ZCByZWxlYXNlMjYtbWFpbnQKKzg0MDMyIDNhNzlhYTJjNDU0OWZlMzUzODNlYjUzZWEwNjUwZTg1ODgxZTBlNTMgcHkzaworODQwMzMgZjI5MjNhMTc1MWQ4MjU0NmJiZmJjMmQzODcyNGY1MWQyODllZjAwMyByZWxlYXNlMzEtbWFpbnQKKzg0MDM0IDBlNzIxODMwNjdlZTdmZTk4MGI2MWY4NjliOWU4YzdlN2UwMDk5M2YgcmVsZWFzZTI3LW1haW50Cis4NDAzNSBjNjhmMjcxMzQyZDA2NWRmMzkxMWI2MzU1MWY1Njg5MWViNTVjYzVkIHB5M2sKKzg0MDM2IDM3YzQ4NzkwZDA4ZTBkZjliYzE0ZDdmYTgzNDNhODI1NzMyYjBiZjMgcHkzaworODQwMzcgNjU2ZmU2MjkyZjlmNmU5Yjc2YWExMzcyMmYyOTUwYTVmZGQ1MjlkYiByZWxlYXNlMzEtbWFpbnQKKzg0MDM4IGIxZjk5MzM1YzY3NzRlN2I1ZTRjMTA5ZDRkMGE0MzBjZGNlYWUyZGEgcHkzaworODQwMzkgYWZhZTk5OTc4MjI2OWYzNDdlY2NiMmUzNGQxZGU5YmQyOWQ5YzkwMiBweTNrCis4NDA0MCAxZTdkY2ZjMDQwNjE5YjhhZGE1ZGE5ZWEyNzU1ZDIwZDc1NmIyM2M3IHJlbGVhc2UzMS1tYWludAorODQwNDMgM2ExYjViMWMwNjliMmE0NjUzMGEzMzNmYjU2MmZlNmQ1N2Q0ODUyNSBweTNrCis4NDA0NCA5NWNlOGRhMzdlNzg3ZmU1Y2JhNWY3Y2RjN2ZjNmQxOTI2NWM3NmU2IHJlbGVhc2UzMS1tYWludAorODQwNDUgZDhkMGFiZTYxZTgzZTdhMDA4YWI3ZGE4ZjU1MGE4YjhlN2YyYTE4NSBweTNrCis4NDA0NiAwNWJhODgyOTJkNGM1ZDljYzY3YzBlN2JhNjQwYzI2MDVmNzAxOTgyIHJlbGVhc2UyNy1tYWludAorODQwNDcgZDY2N2JhOTNmMDJhYzg4NzE3YTE5ZTczMDg4NzQ4ODIxOGM2NmY0NCBweTNrCis4NDA0OCAyMDNiMThkNWM2MjZkZmE5NjM5MDgxM2JhNzQwMmY5NTkyYjViMWMzIHJlbGVhc2UyNy1tYWludAorODQwNDkgNzUzODA0OWVmZGU4OWNiMTZiNWVlM2M2ZTEzNGUwODQ1ODQ3MzdjMyByZWxlYXNlMzEtbWFpbnQKKzg0MDUwIDM1MzQzNTFjODMwMDE0MWEzMzdjYTZjZDQ1ZDc0NTQ5ZjA4ZTExOTIgcHkzaworODQwNTEgOGRiNWJkNzAxYWIzNjBmYTAyZDFkODM2NDVjMGVmZTA2ZDc4MzM5MSByZWxlYXNlMzEtbWFpbnQKKzg0MDUyIDAxNWYwNTEyOTdjNTIzOWFkMzkzNjBkNjY0NTYyYzYwYTUwMjIwNTQgcmVsZWFzZTI3LW1haW50Cis4NDA1MyBjMjMzYzg0YmY0MDNiNGNiMDRjZjgyYjUzZmU5YzEwODk5MjJmOWQ4IHJlbGVhc2UyNy1tYWludAorODQwNTQgOGQwYWI1NTVhMTYwMGRjZDI2NzVjMWQwNTQzZGE1Zjc4MDY3YzYyYyBweTNrCis4NDA1NSAyNjZmM2E4NzdmNjRjOGNlNjY3MjI5MWE4ZTIwMWJkYTdhZmE2YmZkIHJlbGVhc2UyNy1tYWludAorODQwNTYgNmRmYzdkYTE3OTE0MzQ0MDJjYzBiOGVhMDljYzY5NGI5ZTk0NjA4NCBweTNrCis4NDA1NyAyYjM2ZjI5YzMzZmM2ZTQ3YTNlMTY2NmRjYWNkNTYxZDQxM2EwMmQyIHB5M2sKKzg0MDU4IDk0ZDFkYWQ1NTk1NTM0NzU1ZDgwMDgxYWY2OWIxMmEwM2M4MGM4ZjYgcHkzaworODQwNTkgNjRmYjBiZDU1ZDNjZGQ0YmZhMzJhZjBjNDFkZTA3MjBhMDI1Nzk0NyBweTNrCis4NDA2MCA4ZTA5OTFiYTI5ZjQ1NzNkYWIzMDY4ZjU1ZWJkMWNmNTdjMjhkN2Q1IHB5M2sKKzg0MDYxIGY4OGNkZDlhNDRlYTZjMTdlMTllOGY1OTI1NGJkZTRiZjJmZTkwNWEgcmVsZWFzZTMxLW1haW50Cis4NDA2MiA4ZjJmMDU4YjdkODkxMjJjMjc4NzRhZmEwNjliMDVjZTdmYWZmOWQ3IHB5M2sKKzg0MDYzIDU2N2QwMDkyMGVkNjM2NmNiYmE3NGIxOGU5OGM3NjlhNGZlNzAyMjAgcHkzaworODQwNjQgN2ExYWRiZWMwZGI4NzY1N2I4MjJiOWIzYjVkMGM4N2E3OGE0ZDUyYiByZWxlYXNlMzEtbWFpbnQKKzg0MDY1IGI5ZGQ0NjdkMDU3NDE4OTE2MWEyYjA1ZjZmZDE0M2RmNTEyMTdkYzkgcHkzaworODQwNjYgOTk2NjJkYjlkYzQxOTg2ZGFkNGEwNzFlZjY2MGExMGFmMjFhZmVhZiByZWxlYXNlMjctbWFpbnQKKzg0MDY3IDgyN2E2MzNlNjhjZDNlNDRkNTRhZTQ5NTJjOGM1N2YwNGRlYzZhYzcgcHkzaworODQwNjggNmZiMTAxM2UzMDc5YWEwM2YzMTU5MDcxYzBiODJhMzlhY2Q1YjVjMyBweTNrCis4NDA2OSAwMDg3NWNjMzRkMTc1MTI3YTYyZjY3MDRhOGVlMTQzNzAxNDYwMTkzIHB5M2sKKzg0MDcwIDkwMjhmMjNkYjc0YmU0MWVjZmU3NzYxMTMzMTRhM2U3YWUwMDA5ZjggcHkzaworODQwNzIgZTc4M2M3ZDVhZTM2NDY0OGJhY2VjMmQxZWIzZmE1MWZiMTI1M2EwMCBweTNrCis4NDA3MyA3YTU0ODQ4ZDQ5Mjk0OGY3ODcxZGU3OWQ4Y2EwZmM3ZTZjMGJmMWY4IHJlbGVhc2UzMS1tYWludAorODQwNzQgOTg2ODZiMTAzMTRlOThkMDFmOWM4MTA2NjU3YzJjNmRkYmZiMGVkYyBweTNrCis4NDA3NSBkZTQ2ZTQyNTA0MzFjNmI2NGIxOWJmOGVhNTQxN2FhYzY5ZTQ3OTI4IHJlbGVhc2UzMS1tYWludAorODQwNzYgMjBmZGQyNGRkOWFhZjI0ZDNhNGUzYzBmYWY0MjcwNzhlZTZkOWY1NSBweTNrCis4NDA3NyA3OWQ1NzJlYTE3ZGY0MzJkMjAzNWYyOWMzYTRjMTYwMzg5ZjA5MWU4IHJlbGVhc2UzMS1tYWludAorODQwNzggNmU4ZjU4Nzg4NDljOGU2ZDM5ZTA3MzYxZDcxYTBkMDcxMGQwNDQyYiBweTNrCis4NDA3OSBkMTU4ODA4ZGJkNWEyNjk5YTg1YzNiNWYzNjQxMTljZTM3NjE1NjdjIHJlbGVhc2UzMS1tYWludAorODQwODAgNjczYzRlOGEwMWM0N2JiZjk0NTY3MmVkYTg5NGNjMjc3NDg2MWVjYiBweTNrCis4NDA4MSBiMDlmOTNmZTI5ZmJmODA1NzJiYjNmNGJmOTY2MTU4ZDI5NGJmODg3IHB5M2sKKzg0MDgyIGE5MjdhNTljZWUwNmM1N2M4ZjkzOTc1ZDA4ZTM0YWRhZTY4NmFhODYgcHkzaworODQwODMgMTgzOThmOTlmYzU1ZmQyN2ZkYzM2MTQzM2QyNTE0ZDBiOTQ3MzI0NCBweTNrCis4NDA4NCAxMzQyNzZlZWQyODA4OGE0MjczM2UzNzFjMTFmYWIwZGMwYmJiMmMxIHB5M2sKKzg0MDg1IGU5ZTBhMDBjY2ZiMzUxYWE0YjdjMDQxZjUxNzIzNWM2MzZiNGUwZGUgcHkzaworODQwODYgODVhZTQ0MmZmOGE1ZDM1MzU4NzJlMDVmNGFlNmZiODczM2I4NDhhMiBweTNrCis4NDA4NyA4Y2M4Y2U3YzM5MDk0MTFhMWJkNjZmOWUyMDczNGQzODgzNjIyNzVmIHJlbGVhc2UyNy1tYWludAorODQwODggZjA5OGUxYzhiYzU5NzY2OGU0NWI3MjBjY2Q0ZjJjZThmNTJiMjkyYyBweTNrCis4NDA4OSA5MmY3ODc3MDg4YWZlNDY5NzljZTllYjBlYzIxOTYxZWI4MGM0MTU1IHB5M2sKKzg0MDkwIGJmMThkZDcwYzE4MDMwNDYyNjU4MmNlYTIxODNiZmFiOGFjMTYwZGYgcmVsZWFzZTMxLW1haW50Cis4NDA5MSBiNGQ4OGY5ZWYzZjk5MjM0ZDE1MzJjNDY2NTExMWQ3NmRkNmUxYzAzIHJlbGVhc2UyNy1tYWludAorODQwOTIgOTFkNGM3YjFiYzI1Zjg5MjlmMTJmZWY3OTA1YmI1ZWI0MzU1ZDE0YyBweTNrCis4NDA5MyA0YjIzZTI2OWM0ZDk5YTY4NGM2MDk2YTY4N2Y2YTUyNjAzM2Y3ODM5IHJlbGVhc2UyNi1tYWludAorODQwOTQgNWQ5YmRmNWFhMDdiZmQ0OGU3OGIzN2I5MmRhNGY0ZGQ1MzQ1ZTQ1NSBweTNrCis4NDA5NSBmYzg5YjhkZWZmMWUxY2NkNWRiZDhhMjkzYzNlZjhkMTkwNzg2NjM0IHB5M2sKKzg0MDk2IGFhZTNlMGM1MTBmZmU1MDY4MWVkYTdiMWM1NDk2NGE3ODQwMGZiZjMgcHkzaworODQwOTcgZDUyZjljOGZlNWQ2MDliNDU2NzRlZWZkMmIwYjY5MTBjNmQ1YjVhYyBweTNrCis4NDA5OCA3MTVjNDRiNjBlZjM3MzZlNDNhZjQ2NjllNTNkNzhkZDJhOTk5YjQ2IHB5M2sKKzg0MDk5IGEyMzNiZTY4ZDMyZWE4YzlmMzAyMDQ3ZmNmNzdkY2I1Y2ZlMGQ5MzkgcHkzaworODQxMDAgZTQ0MzJlZmM4OGI5ZjhhMjQxNjUyYjg1NDYyZjYyZjBhMjY1NTNiMiByZWxlYXNlMjctbWFpbnQKKzg0MTAxIDkwN2Y3M2UyMjdhNmI5ZTFmZTgwNDBmY2YwYzYyOGJmNjE4NjhiMTEgcmVsZWFzZTI2LW1haW50Cis4NDEwMiA4OTk0ZDhkNjEwZDQ0OTllODA1MGIzMzA3NzQ3NzFmNTIzOWIzNDczIHJlbGVhc2UyNy1tYWludAorODQxMDMgOWZlNzRlYjAyOGFiMDFmOWMzMDFiZjAyNzQ3MWYyNTdkZDk1N2E5ZiByZWxlYXNlMjYtbWFpbnQKKzg0MTA0IGRlZTMwYzQ2NzM5ZWJkMWM4OWZhNjYxZTc1ZGJlMzNkZGJiNDJjNjcgcmVsZWFzZTMxLW1haW50Cis4NDEwNSBkYzMyYTdkOWRhODAyOWZjNDc5MzE5ZDg1OGZhNjU1Y2Q0MzJmOWZlIHB5M2sKKzg0MTA2IGUzZGYzNDU0NGRiOTA4OWYzNzZiMTkwNmU4YzRmODI4MzFlNzIzYWMgcHkzaworODQxMDcgNDA4NWNjNTYwZTllYTUzMjg4NzJkMmY0YTQ3ZWI0ZWU4MjFmZGQ3MyByZWxlYXNlMzEtbWFpbnQKKzg0MTA4IDc1NmY4YjM5ODIzMGIzYTlkZTZjZWRjYzllZjhkNWM3N2M2NzQyMjcgcmVsZWFzZTI3LW1haW50Cis4NDEwOSBiZTBhYTFkMTM4NGNmNjJhODZmODU1NTA5MTk1ZTlkZjFiZjkyYjY5IHB5M2sKKzg0MTEwIDFkODNkOTJlZmZlODExMDRhYTgwYjhlNmM5OTA2YzY0MDQzOWIxZGMgcmVsZWFzZTI3LW1haW50Cis4NDExMSBiMDg5ZWQ1NzZiMTMyNWI1Y2ZjYmZmNDUzNDM1OTYzZjBkNWE3ZTUwIHB5M2sKKzg0MTEyIDc3YjA1MmM2NGViYmMyZTI3ODFhMzU1NjAwNDFkZTRmZTc0ZWJmYzEgcHkzaworODQxMTMgNDcyNTA4MmMyODJmMDNmZTVhZmU5ZDFhOThkNDViMDljYTlkOGJlMCBweTNrCis4NDExNCAxN2Q1YjAzMGU4Nzc5OTAyZDgyZjc2ZWQzMmE2OWQ4ZDVlNzExMzFhIHJlbGVhc2UyNi1tYWludAorODQxMTUgNGRmMGQyYTEzYWExNGYxM2ZiZmEyYThkZGFlOWNjMTAyNDFlN2YwOSByZWxlYXNlMzEtbWFpbnQKKzg0MTE2IDQxYzYwODdmMmU2ZGFlOGYxNDI5M2Y4ZWFlZTIzYzUwNWVlMWZmOGYgcmVsZWFzZTI2LW1haW50Cis4NDExNyA4MDU5ZTZiNjI0NjM2MDhmNzNmZTA4N2I1YmM1YWJmZGZkMGY0ZjBmIHJlbGVhc2UyNi1tYWludAorODQxMTggZTE4OWRjOGZkNjYxNTRlZjQ2ZDljZDIyNTg0ZDU2NjY5YjU0NGNhMyByZWxlYXNlMjYtbWFpbnQKKzg0MTE5IDk1MmQ2NTBhMGFmZDc2OWNkNjJmZTQ5ZGMwZWFlYmRhMjdiZDYxN2IgcmVsZWFzZTI2LW1haW50Cis4NDEyMCBiNjYyYTM5ZjA4MjNlYTk0ZjM1ZTk1MzhlNDVjYzAyNzBkYWU4YzRlIHB5M2sKKzg0MTIxIDBjOGJmZDI4NWVmOTQyODE3MGYyN2Q5ZDIxOGE5ZGQ1Njg4YmFjOWQgcHkzaworODQxMjIgMDVjNGJhYTg3NTQ5YzNkNWUyZWQwZjk0NGYxNjc2NWFjOTFkODFlZCBweTNrCis4NDEyMyAwNDk4ZDY4ZGFkNWQzNzkxYzJkZDQ2YTA1OTdlMmNlNmRhYzQ5YzM3IHB5M2sKKzg0MTI0IGI5MTA1OWU1OWQwZGMyMjUzZThiOTdhZDhlNWYyM2VmNjQwOGQwNjMgcHkzaworODQxMjUgNzQ1YmQ2MzllZDRkY2Q2YWNjOGJhYTJkZGYwMzIzNjVmMjRhZTRhZCBweTNrCis4NDEyNiAwYWRhN2NlMjRkZTJjZDQ5MTdhOGI4YzZmNmMzYTdiODAzZDQ0NmE5IHB5M2sKKzg0MTI3IDk3ZjQ3ZWFjMDlkYjRhZGU4N2FhZWJjYjE0M2Q5MjE4ZDQyMTEyNmEgcmVsZWFzZTI3LW1haW50Cis4NDEyOCA2MGE0Nzc3YTczYTA2MmZmNTc3YmE4ZGI2MmQ0ODFlZTgwOGQ2YzQ2IHJlbGVhc2UzMS1tYWludAorODQxMjkgMjc2NzhmZjBjZGExNDRkMWEwMzkwZGFhMzIzMDhmOGYwMGZmZmVlNCBweTNrCis4NDEzMCA2Y2I3NzZlNTcyOTZiYTNmMWM3NTRlNTc1Zjg1YTNiOGQ5MGQ1Yjc3IHB5M2sKKzg0MTMxIDQ1NDhmNGFiMTljZWUzYzQzZmZhOWRlYzAxMWIwNzA5Y2VjZGU1MGQgcHkzaworODQxMzIgNzdiZjU4Mjk2Yzg3MDU5ZjZjNDY0OWU2MjI4MDMzZjRmOWE1NWQxNSBweTNrCis4NDEzMyBiMmE5YTU5YzJkNTcyYmZhMjQ5MDg4Yzc0NTY3MjExZTRjY2JhNDlkIHB5M2sKKzg0MTM0IGEwNDllMjIwZjAzMDk2MDZkODQ3MDQwNmI2MDczNGM2MzliMGU2OTEgcHkzaworODQxMzUgNmNjNjU1NDE2ZDYzOWJmZTI4MjYzM2I1MGRkZmVkODAwMWQyMDcwZSByZWxlYXNlMjctbWFpbnQKKzg0MTM2IDI0ZTA2ODMzYjViM2I3MjdkYmIwMDA2Y2I1M2JjM2QwZWRkMzVmMzEgcmVsZWFzZTMxLW1haW50Cis4NDEzNyA5ZGQ3NjM0MjNhNTY2ZGRjNjhhMmQwOGVkODBjNWY5MjZlOTVkMDhiIHB5M2sKKzg0MTM4IDVmY2UwMWE1MWFhNWU1MTU0NTljMWZiY2MzMmZiNTFlMzc1YjM1OWYgcHkzaworODQxMzkgNGJjOWRmZDk1YzgwNzU2YjY3YTFmNWFmMWE4OTk4YWEyMzhiYTNmNSBweTNrCis4NDE0MCAyMTJhMTZmOTA2YTY3MjVjODE4OWI2YjZhOTg1ZTlhZGRhYTNkMGRhIHB5M2sKKzg0MTQxIDZmZDk2YzAxYjQzNzEyNmQ5MDY2MzA5YjljNDQ1NzFhMzU3NGY1MWYgcHkzaworODQxNDIgOTkwYTc2NmZmOTgzMzU2MGQ3MDhmMjNmZmQ2NGQ5MDE2ZjJhYjEzZCBweTNrCis4NDE0MyBjYTJhODU5ZTliZjYzNTEwYzBlYzNlOGM3YTkwNzYxZjgxZGZiNWIzIHB5M2sKKzg0MTQ0IGNhZWViZjc0OTdjMzhkNTdkNzM1MTg5NDcxNDczZDk3YTMyZmNlODcgcHkzaworODQxNDUgMjdlMTc2MTY5MzNlZjg5ZjJjMTE4YzdlYTgzYmZmZTM3ZTU2YWM5OSBweTNrCis4NDE0NiBlZTNkY2RmZTJmODczNjVmNWIwMzM5NmE1Y2FlMzM1YzZmYzgyZDI0IHB5M2sKKzg0MTQ3IDc5MjViYmRmYzgwNWYwMTM3NzMxNTUxOTgxYTIyMWUzMzkwNTJmNjggcHkzaworODQxNDggNmVkMzgxMzU1ZDBkNDQ4YTAzMWQ0NmIyZWY1MTkxZWQxMDNkYTEwYyByZWxlYXNlMjctbWFpbnQKKzg0MTQ5IDM1ZTY3YWY4MDZlNTAzZDQwNmQxODZkZGYyNjFkN2MzN2RjN2FmNDEgcHkzaworODQxNTAgYjYyNGM3NDE3YWQ0ZTZlOTFiYmMzOWI3MDMxYzNlZTA5YTJhZjQwMyBweTNrCis4NDE1MSAyYTRjZWViZGZjZmIyNThlZDZlZGFmYjVhZGQzNjM3OGQ5MDcwMGQwIHJlbGVhc2UzMS1tYWludAorODQxNTIgZmViYWVhMWE2ODcxZWZmZDgzNzk0MTgwZmUzMjY3OTczM2VhYTk3ZCByZWxlYXNlMjYtbWFpbnQKKzg0MTUzIDM5ZTFkMzgyNmY0ZWEwZWYzOTFjY2IxOWQzZmQ0Zjg0ZTk0YjkwMTQgcHkzaworODQxNTQgZjNkNTgzN2UzMWI3ODZjM2M0YjM2OWE5ZTM5MDFiYTk1Yjg5MWQxYyBweTNrCis4NDE1NSAzZmEwYTk1NTM0MDI0ZDg5NjA5ODBhZDA3OTk4ZmNhNTY2ODNiY2JlIHB5M2sKKzg0MTU2IGZkYTlkMWZlN2YwNmI3NmQyYjQ1NjU0ZjA0NGFmMzk1NDhhMWJlMDQgcHkzaworODQxNTcgNTFhNzc4NDYyOWJiYWQ4NGRhOGMyZTdiMzM5ZDQyZGJlNGM2MDkxMSBweTNrCis4NDE1OCAzNWM1M2U3ZTIyODBkYzdhOTgwNmM2MGI4NzVjYmQ0OGViMjQyMThiIHJlbGVhc2UzMS1tYWludAorODQxNTkgOWE1NDk0MGEzMzJlZTY5MTc3ZWVmNzk1OWY4MjUyYzEyODEyODQwYyBweTNrCis4NDE2MCBmNzgzMjc4NzkwY2E2MzkzOTIzM2ExMmI1NDZkYTBjY2YwNTgyN2E4IHJlbGVhc2UzMS1tYWludAorODQxNjEgYTAxOTkyZTIxOWMwOTAzMzk3NmI2OGJiODNiNDhmY2EyYTcxZmEyZCByZWxlYXNlMzEtbWFpbnQKKzg0MTYyIDJiMzIzMTJkY2FiMTUwNmFlOWViZjc4NWNhNjVhZWI0ZDJlY2NlZDUgcHkzaworODQxNjMgNjg2YjE4YmZmYjg2NGZhZTgzYjNhZGU4NzM0NjUxMjI3MTM1OGEzNyBweTNrCis4NDE2NCBmYzc5NGFkZDU1OWQ1YWFiNzQ0Y2Q3ZDY0NGQyNDQzNjMxYTAwZTUwIHB5M2sKKzg0MTY1IDQ5NDMwNzhjOTBjOWFkNDg1ZjI3ZGUwZWU2ZWQ1MWExYTI5YWRjNTMgcHkzaworODQxNjYgNzE0MDBjZTBjNzIxZDE1NzA4ZTA0NWY2ZTE2N2FkMDY3YTM4YzJjOCBweTNrCis4NDE2NyBiZGQ3NmFkM2JjNzZiMDExNjAwYWI2M2FlODdiNmM3Zjk1MTI4YTYyIHB5M2sKKzg0MTY4IGVlNzY1YTY3YzBiMTFiMTk1NDJjNTYzNWQ3MTMxZDkxOTlhMmM3OWMgcHkzaworODQxNzAgMGVkNzZjN2I5ODQ3NGJkNjQ1ZWMzYjE0ODljNjM5ZDhhNzBhN2UwYSBweTNrCis4NDE3MSBhOGQ4ZGUyM2NiNzc4NWM0MDcyYWQ5MWNlNTEwNjJiMGM4NzRiZDZmIHB5M2sKKzg0MTcyIGM3MDkzNTE0NThhNjZhZjY5OTdlZDg1NDAyYWY0NTEyN2U2MGNkMGMgcHkzaworODQxNzMgYzEzMGY0MzJmMjRhMDM5YmY2YmVmZmRlODEzMGNjZGIzMDM5NzAxMSBweTNrCis4NDE3NCBjYTU1Nzk0OGE1Y2Y2N2I1MjA2NDQ1NzYzMmQ4ZDM5YjcxNDAyZGNiIHJlbGVhc2UyNy1tYWludAorODQxNzUgNmNkYTVmZDBhM2NmMjNmYzM5NWZhZGEwYWNkMDNmYzkzYzZlYTliMSByZWxlYXNlMzEtbWFpbnQKKzg0MTc2IGI4NzEyNDRkN2Y3OTc4OTBmNzBkNTRjMGZiYjJiNDQ1MzFhNzgzYWQgcHkzaworODQxNzcgOGY5N2M2NGIyMzMzNjIxNjBjNGI3Mzc1ODQ4YzNjZWVmNWJhYzE1MCBweTNrCis4NDE3OCA3NDljMjJmZmEzNmVjNzU3N2JkODEzNWM4NDEzM2E4YTNhZGI1ODViIHJlbGVhc2UyNy1tYWludAorODQxNzkgYzM3MDg2NmYzMGE3NWFhOWZhYzYyNjM3MjlmODQ0OWZjNDc1ZDQ3NiBweTNrCis4NDE4MCBkZjk2MTA2NGY4MTFjZmNkMTlkOTQzYzczNDA0ZTc0ODE3ZmFiZWU2IHB5M2sKKzg0MTgxIDIzYTU5OGMwMTkxMWYyMDQyMDVhNGVkNzE0MDZjMmUyNzVlYjA1MTcgcHkzaworODQxODIgNjg3Y2M4NTRjYjRiZmRmOWI0OThhMzA1M2RkNWUyNTk1ZWI3YWY2OCBweTNrCis4NDE4MyBlNjdlMDdjYjUxNzFjZDg5NTI5ODI4YWI1NzNlYjU5ODM0NGJkMWE5IHB5M2sKKzg0MTg0IDA1YTNkZmRhMDRmZmM2YTMyNWY4OTYzMTM4ZmU1YTE4MWM5ZTdlOGIgcHkzaworODQxODUgNzkwZDQ4Nzg4ODc0YzUxODEyMjQ4YTk1YTFlZTFlNzU3ZDc3YjI1ZiBweTNrCis4NDE4NiA4MGY5OGFmMTdkZWY4ODNkYTQzNWM3N2ViZTg0NDA3OTNmMzEyMjQzIHB5M2sKKzg0MTg3IDIyOGU2ZjAwMWFlMTNiMTQxMWQ5MWJmMTVjOTI0ZWM0ZDdlNjllNzEgcHkzaworODQxODggOWFkZWE5NDU1NzUzOWU0Y2M1YzZiZGZiNjYzN2FlYTVhMmUwNGFlMSBweTNrCis4NDE4OSBlYTBkZWNkMmFjZmI2MmQ3YjAwZDkxNzUzN2Q0Mjc2YjY3NjBhZDBlIHB5M2sKKzg0MTkwIDRmODMxZDQ1MTI1ZjBlNTkxYjY3YzJlMmY5ZWYwODc5MmFlOTE2OGEgcmVsZWFzZTMxLW1haW50Cis4NDE5MSA2NWZlMDU5Yjk3YmYzMzg5MjhiMmVmOThmYWVhODAwNDkyMzY3ZTY3IHB5M2sKKzg0MTkyIGFjMTJkOTQ4YTg5NTc2NDIyZTgxNmVkYWZhZmMxYTVjZjlhY2I0MWEgcmVsZWFzZTI3LW1haW50Cis4NDE5MyBhOWU3OGY2ZjY5NGU2NWE5OGE2Mjc5YzU3OWE3NDMwZjMwNzQzYTJjIHB5M2sKKzg0MTk0IDJjYjI2NjNlMzM2ODkwZjU4ZTY3MzIwZGY4NWI0YTdhZDFkYTUwM2UgcHkzaworODQxOTUgYWI4NGEwYzdkNjNjNjBmNmNkNTQ3NGVmMWVhNGNlYTRiODkxZjkxOCBweTNrCis4NDE5NiBmNjcyM2Q1NWRlNGI2Y2U3MTExOGY5NDI1MmU2OTA4MDFjNTFmYWMwIHJlbGVhc2UzMS1tYWludAorODQxOTcgZDBlOWZlYmZhMDBhYzcxYWYwOTY4ZjlmMjQwOGIxMGFkMmQ5Y2Y5OCByZWxlYXNlMzEtbWFpbnQKKzg0MTk4IDg1NzgwNjE0N2VlNzM0MWQ2YjYzNGRkN2RhMDlkMzc2MGUyNGZhN2UgcmVsZWFzZTI3LW1haW50Cis4NDE5OSBmMjQzMDU4NTk2M2M1ODQ1ZWUyMTFmMzRiYWI4N2Y2ZDA4YjAwMTg4IHB5M2sKKzg0MjAwIGY4NzEyYTA3YjBiMTEzMjE2YzE4ZmJkMzhmOWEyOTA0NWMwMzY3M2YgcHkzaworODQyMDEgMDgyZWFmYTA4ODAyNzIxZmE3MzcyNWI4ZGY3NTFjZjE4OTY4NTdhZCBweTNrCis4NDIwMiBmNjViYmZiYjgyM2ZmYzFhZjQwZWQxZmUzMGE3NzE2MDQ0ZDYxM2YxIHB5M2sKKzg0MjAzIDM4Y2U5NDdjMjhmYjQwMTYxM2IxOGQ3NDI5NDg0NTQ2ZWNiN2YxNjkgcHkzaworODQyMDQgOTE1NWRiNjU5YzIwZmZmMWY3MWRiNzdiNTRiMDdmODgzMTk0MTVkMCBweTNrCis4NDIwNSBhNGVjN2E2YTY4OTVlNGU0NmI4ODRjNzVkODU4NzUwMDFkNzgyMDg0IHB5M2sKKzg0MjA2IDVkM2NhMWMwMThhZTQzNDEwZTAzZDEyMGE4NWNiZjViZGUxMDM2ZmMgcHkzaworODQyMDcgMDUyZjQyZDAyMjJmZDlmNTkwMzY3Y2RkNmRkNzk1ODJlOGJiM2E2NiByZWxlYXNlMjctbWFpbnQKKzg0MjA4IDY2MTQzYzIzNjg0ZGEzYmY1NGY0Yzg5Y2VmZGRlOGZmMGRkM2IxMDggcHkzaworODQyMDkgNWZkMjZmNDUyNjAwMGFmM2ViOTU0YjNjY2I0MGFhMzllNjQ2NjhlNyBweTNrCis4NDIxMCBhZjRhOTFjOTQwNzE3YjkxNmU0Njk0NjljZTBkN2FhMTU3NTQ0ZDA5IHB5M2sKKzg0MjExIDg4ZTg0M2NlMTE2MGU4MjBhMzRmM2UzMDljNjlmZmQ2NDliYjYyOGIgcmVsZWFzZTMxLW1haW50Cis4NDIxMiBiYTZmZGU4YTNhOTk3ZDU2ZGFlMDJiNzc1YjgwZTA0YmUwOTgyOGIxIHJlbGVhc2UyNy1tYWludAorODQyMTIgOGM2YzcyYjZmMWVkMGE2MTA1NTliMGY4YzgzYzZiM2JjMzc3NTZmZiBweTNrCis4NDIxMyA1NGM5Yzg2YWQxMDRiMjdhYTQ2NjRiY2E5OGRhNTU5MjJhOWQ1ZTU5IHJlbGVhc2UzMS1tYWludAorODQyMTQgYzE4ZWViOTY5MTAyZjI0YWQ5NmFkZTMxNmIxNGJiZmRjNjNhMzQ2NCBweTNrCis4NDIxNSAzOGNlZWFlMGQxZjA3OTZmMDIxNjBmMDAzNmYwM2Q3NTVjZDYwNzhlIHJlbGVhc2UzMS1tYWludAorODQyMTcgNTQ5YTQwY2EyMDc0ZDcyMzg4NTRkMzI5MDI5NmM5YTAzMDU5YWE5MyByZWxlYXNlMjctbWFpbnQKKzg0MjE4IDM1MjhiYTdiNDMwNWNhNzViZjdhMDZjMWNkMzFhMTZhNWYxNGMzNDkgcHkzaworODQyMTkgZjJjN2U0YjFkODA0NWMxMjM1MThiN2Q2YWZkZDMwNjE0MzE0NjViZCByZWxlYXNlMzEtbWFpbnQKKzg0MjIwIDM5ZGFjMGE4ODk2YTI3ODZiYTE1Y2U0NDRjYjI3NDg1MGIzNzQ5OGIgcmVsZWFzZTMxLW1haW50Cis4NDIyMSAzMGEwZGNmNWEzZDhhNTgxYjVlZTEyNDg0NzI1MDU4Zjk2NTg4M2ZmIHB5M2sKKzg0MjIyIDVhMjk5ZDc4NTk4NzgzNjE2N2UyMDQ2ZWU4MjlhMjAxMDRiMWE4ZDUgcHkzaworODQyMjMgODdkNDY4YWUzYzNjMmNmNzE0ZTdiOGExODVhNGU1NWFlNzU2NWRiYSBweTNrCis4NDIyNCBkNGUyMGY5ZjEyN2E5ZjRmZGU2OWRkYjQ1YzZhNzY0NzliOThmZDE5IHB5M2sKKzg0MjI1IGFiNjNjNDU3OGIxYmQxNDQxNGJlZmM4MTEwNGMzOTc0YzZkZjQ3ZTQgcHkzaworODQyMjYgNjVjZTk5MjM2ODk3ODY1ODQ2NjMxMWMxZmFkNDZhMjFhOWZiYjMwNCBweTNrCis4NDIyNyBmM2RiNTA0Y2RmYjFmM2Y1NTM4NzkxYTU0ZWI3ODA0M2M4Y2ExN2Q5IHB5M2sKKzg0MjI4IDgzOTdmMmUwMDdlYmMyNGU0ZWFhNGQ3MWJkNjRmMjM1N2UzZjNmODYgcHkzaworODQyMjkgZmE3ZDFkNWQyYWZiNjAxNWE5NzMwYWZmZjM5ZmI3YWRiZmE3ZjMzMCBweTNrCis4NDIzMCA3ZDJiZDg5NTVlZGI4M2IwOTQ4OTI4ZThiNGQzZjY1MzUzY2FmOTljIHJlbGVhc2UyNy1tYWludAorODQyMzEgMGMzZDc2M2YzOGYxNDJhNzg1ZWFiZTc3MDhiZDg4NTlhM2JmMDc0NSBweTNrCis4NDIzMiA5ZDU5MTZhYjYwZTBmMzI0MTExN2M5ZWIxYzEyMDkyZjRkMzQxOTMyIHJlbGVhc2UyNy1tYWludAorODQyMzMgOTk2NjA0Y2RlNDFmNWZlODBjZDY4NGVjOTFjZmQzNzgxZTk5MDkwYyByZWxlYXNlMjctbWFpbnQKKzg0MjM0IGFiY2Y5NTc3ZDVkYjNmYzU1NGQwNDk3M2M1MmRlMGUyMWY5Mzk5NDcgcHkzaworODQyMzUgMWVmZTgyM2UxZjE4ODVlN2QwZDE3YmJjNDJhNGNmOGFlZGViOWEzMCByZWxlYXNlMjctbWFpbnQKKzg0MjM2IGM0ZjVkOThlZTg3YjAzYjFlOGY1NzI4YTY5MDRiZWJhZjg0OTliZmEgcHkzaworODQyMzcgNDk3YTdlMjg0ZTRkYzhlMDAzNDFkYTBjZTZmNjBlNTZkMDhiZTVjNiBweTNrCis4NDIzOCAyZjNhYzgzNGI1MzYzNGVlYmE1ODA4ZjUwYTU0M2QwOTBjNjBkYjVmIHB5M2sKKzg0MjM5IGIxOGM4MGM2ODc1NDAwYmZhOWFjNTMxNGIxNDkxMjVlZGZiYzU1ZmMgcHkzaworODQyNDAgZGZkMDIyOTc0OGVmZDRjMWE2NWJhZDkxYjc5YWU2ZWRiYTQwOGRhYyByZWxlYXNlMjctbWFpbnQKKzg0MjQxIDk3YTVmYjFjOTZjZWIzZTE4NWU0ODQyNDdiOTUwMWU0OTE5ZDc3ZGUgcmVsZWFzZTMxLW1haW50Cis4NDI0MiA4ZTE4NGE4YmIwMGU2NDk3NDFhMjQ2M2I4OTA3ZWM2NDRiM2RmY2Y5IHB5M2sKKzg0MjQzIDQ2MWEyMGFiNDMzZmVlNGI3YjdjMGM2MjVmMTg5ZWNhZjUwZDZlNDggcHkzaworODQyNDQgMzAyZmUyNWNkNmIxMTg4ZjJiYmQ1ZjA0OGQ1ZGIzZjg3ZTAxNzk1NyBweTNrCis4NDI0NSAxMGRmOTM4NzJjYTczMDQyMDI3NWFiNWI3ODM4ODU5NzFjYjFkZWNiIHJlbGVhc2UyNy1tYWludAorODQyNDYgZjVkZWUzMGNjZDM5ZmQ1MGQ4NDk0ZDkwNDU2OGE1YjQ5MzA4ZDlkMCByZWxlYXNlMzEtbWFpbnQKKzg0MjQ3IGY5YWI5YzkyZGI4ZGIyNGRlNmM1ZTVlOTQzNWExMDQxY2Y3ZTJmNDYgcHkzaworODQyNDggYWFjYjE1MjkxZDU0NjEwY2UzMWI3NWYwODRlZjI5OGIwMmUyYzk3NSBweTNrCis4NDI0OSBhMzRiZTAzZjcwOWEzNDliNjExZjIzYjlkNmRjZDVhMWEwMzY3NjRjIHB5M2sKKzg0MjUyIDAxYjBhNmNiMTNkNDNjOWVhMzVmNTJlMGM0ZTU0OTM1MTEzYzg1MmMgcHkzaworODQyNTMgNmUwZmUxYjgzZmYwOTU2ZDVhYzU2NTQwOTc0YWJlM2Q4NGE4ZTlhZSByZWxlYXNlMzEtbWFpbnQKKzg0MjU0IDljNGU4NTc4NWQ0ZTRjNWU5NDA2OGNkMmU2ODg0MmRjZWY4ZjM0ZTggcmVsZWFzZTI3LW1haW50Cis4NDI1NSAwMTMwZTU3NGY1YmU1YTM4NzI3ZDM0ZWQwYzBiOGU1MzNmMDEzOTE0IHJlbGVhc2UyNy1tYWludAorODQyNTYgN2ZmM2ZhNDI5NzIxODNhNWJhMjJkNDViYTk5OTA0ZDRhZWM5NThlZCBweTNrCis4NDI1NyBhNWE1ODcyMDUwZTMwMzg0ZGY4Njc5OTc4MzdhMTYzODVmN2RhNTM1IHB5M2sKKzg0MjU4IGIwMTdhNGVmNzY5NGZhZWE5M2NkNGMwYjA1MjhmZWUwYzcxMjU3YmMgcHkzaworODQyNTkgNGFjZmEzZmU2YTVlYjUyYzE1MmJlYWVkY2M2ZDdkNjJmM2U5Y2QxNSByZWxlYXNlMjctbWFpbnQKKzg0MjU5IGU0OWM1M2Y3NTM1YzA4ZDUxNzZhODE4M2Y4MDlhZTY3OGM0Y2E4ZWMgcHkzaworODQyNjAgZTgxOTA2ZTkyZjk5YWVkZTY2NDBhNjUwZmM3NDU2ZGY4NzFlYzcyOSByZWxlYXNlMjctbWFpbnQKKzg0MjYwIDZhYjY1Njc2NWJjYTM4N2Y3NWQyNmFiNzRmOGZhZmJiZTkwYjFmNGEgcHkzaworODQyNjEgMzUzMDRjMmZlOWUwYmI4ODEzMWEwNWJhMzBhNjhkMDgzOTk1MmM0NSBweTNrCis4NDI2MiBlOTE4NDljZDA2Njg5ZGRlMzE3NWYxMmJkMDJmOWI0MzZjNTQ4NGY5IHB5M2sKKzg0MjYzIGYyZTkxZTA4YzFjNTdmMGFlMDNhZmY4NWRiODM0N2YwYzIwZDhkMzEgcHkzaworODQyNjQgM2FjZDg2ZjhjNTUyNDczYWI5YjYyNmE5OTQxNGNiNGIyMGIxMmIwMyBweTNrCis4NDI2NSAxYzg4MzRmM2NkYjk2Mzg3N2M3MjQ0MWFjOTI3OTQxMTg0Yzc1ZmIzIHB5M2sKKzg0MjY2IDU5NDhlNDhmYmQ4ODBjZDE0ZWU0ZDk4NDIwYWNlOTNkN2RjMjlkZGYgcmVsZWFzZTI3LW1haW50Cis4NDI2NyA4ZjVmYWY1Njk2ZTdhZjJlMTE4MTM3ZTE1YjRiNjU5Y2JjOTg4Mzg0IHB5M2sKKzg0MjY4IDAyZTJkOWVhYjczMDE5OWM1YmFhOTQ2MTkwMmIzMDI2ZGM2NmY1YTAgcHkzaworODQyNjkgNzE2ZDNkMTAyYzBhYTEyNmQ1OTFhNThkMjk0ZTFjMGVlOTIzYWE1MSByZWxlYXNlMzEtbWFpbnQKKzg0MjcwIGE0MTJjZWVlZjBmMWVlYmFjN2ZlN2VlYTdkOGQ1YzVkYThkYjg1YzIgcHkzaworODQyNzEgY2YzOTlkZTEyYjU0MjdkN2FiZmJkOTQ0YTFjY2IzY2Q1ZTVmZGQ0OCBweTNrCis4NDI3NyA3ZTFlMzQzYjcwOGIxODJmNzg3NWM0NzAzNzUzZmNkNGIzNmMyNTgzIHB5M2sKKzg0Mjc4IGFhMjViODY3N2NjM2Y3OWQ0YjUzNTRmOGJjYWNkMWNhMTBmZmQ4ODcgcHkzaworODQyNzkgNTFhMjRhOTE1NDA4NTkzYjg5ZmQxMGNmYTMyOWE2MmIzNTRjY2I2NyBweTNrCis4NDI4MCBiNTM1Y2RlOTMyNzM4M2Y4MWRmMDJlZWIwZDA4YmY3MTZiZGM1YThhIHJlbGVhc2UyNy1tYWludAorODQyODEgMWEwODU5NjIzODgyZjcxZGVlZjE2ZjU4ZmRmMDA0NjIxNzY4ZTA4MSBweTNrCis4NDI4MiA0MmM3MGYxN2MyZmVkZTYxMTYxMDg1NjhhNzViMGVlYzA4YjNjNzNhIHJlbGVhc2UyNy1tYWludAorODQyODIgOWQ0ZGM1ODU1YzUxNWI4MDQ1MjkzZjFiNDBhNmRkYzljYjExNjMwMSBweTNrCis4NDI4MyBiYTUzNmFjN2FiNGU0ZGIwMjg5OTZlYmU5YmNjNTEyMTU5ZDJkYmRhIHB5M2sKKzg0Mjg0IGU3OWJhNTU1OTIyYTE2ODdiYjcxOWRiZjdkYjkyODc4Y2M4MTJkMjkgcHkzaworODQyODUgNzZlOWNmODQ1Njc2MDJiOTBhN2M0YTc3MDc2NThmZWIyNDQ0ZWFlYiByZWxlYXNlMzEtbWFpbnQKKzg0Mjg2IGI5NWVjMTcxZjUwMzY0M2M3Yzk2ZDJjYmEyMTRlYzBhMGJjYThkZDYgcmVsZWFzZTI3LW1haW50Cis4NDI4NyBlZmFhNDdlOTJhOGU4N2UwMzMzMzI4Njk1ODJlZTQ5ZjBhZjJlMzJiIHB5M2sKKzg0Mjg4IDc4OTVjNDU1M2JmNTQ0OTA2N2M1MGZlZmQ4OTA0Yzc3ODJjZTExN2IgcHkzaworODQyODkgOTBiZjIyNDM1NTJkMzM0M2E2NTgzNmY1YzY1N2M0OTJmNzI3NTJiZCBweTNrCis4NDI5MCBlMmJjZTFjNTk2YmViM2E5ZWNlN2FhM2Y4YTdmMWI3YjQ3MDBjYjc0IHJlbGVhc2UzMS1tYWludAorODQyOTEgZTcxNmFhMjA5NGZhOGQ5NmNiMzc1ZDA2NDM2MWE2OWU1M2JjNGVkNiByZWxlYXNlMjctbWFpbnQKKzg0MjkyIDlmODc3MWUwOTA1Mjc3ZjhiM2MyNzk5MTEzYTA2MmZkYTQxNjQ5OTUgcmVsZWFzZTI2LW1haW50Cis4NDI5MyA2ZGI3ODM1YjBhOTVhZmMxZDRmMGFlOWYxNzM5NDhiODU0ZTdiYTBlIHJlbGVhc2UyNi1tYWludAorODQyOTQgMmRlOWQ0NDU3MDgyMTIzZDkwMDlhN2YyNWQwZDk0Y2NmNjViNzI1MyBweTNrCis4NDI5NSBjMWE4M2YyYzcwODc1N2RkZDJjZjJiMjFhYjA5YTUxMDVhZDBmZWM5IHB5M2sKKzg0Mjk2IGQ0YTFmOTE0MmY3YTlkNDc3ZWE3ODQyZmVkMGFjNjNmODIxZjRhODIgcmVsZWFzZTI3LW1haW50Cis4NDI5OCBkYjI5MzYwY2FkMGZhYzNhNjQ5OTNiOTg4NmYxNGRmN2ExN2EyYmMyIHJlbGVhc2UyNi1tYWludAorODQyOTkgNGIxMjk2YjI2MmNhNGJlYWZjNWFjNTdjZWM4MjQ5NzdjNjQ0ODg1NiBweTNrCis4NDMwMCBmOTFmMjllZjRlZTdiNWY1ZWNmYmM5MDVlMjdkOWFmYTlhMDA5OTdkIHJlbGVhc2UyNy1tYWludAorODQzMDEgYzFjNGY4Zjg1MDcwZGE0ZDdiNjlhZTM2ZTllMDEyMWM5MDVlMTVmZSBweTNrCis4NDMwMiA4ZmUzNmUyYjhlZDEzYzIyMjJmZDFkNWI3ZDdlOWRhMDllYTE5OGExIHJlbGVhc2UzMS1tYWludAorODQzMDMgODBhNDgxNGVjZjVkNjUyMWQ2MWNlNjAwYjZhYTViNmQ2OThkYTFjMiBweTNrCis4NDMwNCBiZTc2YjM3ZmU3ZmQ4NDA5ZDNkMmYyN2YyODJlOWI0MWVjM2Q4MWZjIHB5M2sKKzg0MzA1IDYxODBmNDU2NDcxNGRiMTMzZWNmZDI1MzdhMGQ2ZGVmM2Q4ZTYxMTIgcmVsZWFzZTI3LW1haW50Cis4NDMwNiBmNjVlOWMxNThjMDQwNjIzYTk2N2JlNTNiMDRlYzY0MmY0NzZkYWRlIHB5M2sKKzg0MzA3IDg2NzY5OWM5YjYzZmY1ODQ1ZWMwMmYxNzQ0ZTNlNzZkZmQ3MTg1MTIgcHkzaworODQzMDggMTQ4OGNkMTAzZDdiODIxNGY3YTExMDMwMDc0MGZlZjZmYzM1YWQ1ZSBweTNrCis4NDMwOSAxZTIzYzNiMmUyMzI1OWE5MGE5M2JmNGJjZjU1NTYwYzVkMGNiZGZjIHB5M2sKKzg0MzEwIDg3YmRmNTNmZjRiYmZjYTQyOTk2NTMwYTdmMGU5YTg1YjU0MzMxYzggcHkzaworODQzMTEgZjZiM2U2NGI3NjIwNjc4MDI4NmJiMjVmMzViNGUzMGQ2ZTk2ZjNiZiByZWxlYXNlMjctbWFpbnQKKzg0MzEyIDA1M2ZmNjViZTU0Y2IzNjNjNWEyODQ4MTU2ZmEyM2NiNzQyNzAwYjkgcmVsZWFzZTMxLW1haW50Cis4NDMxMyAyY2NkMDQzYWFkNWMxMDkwYWM1OTRiM2M5NmE5Mjc0MTQ3MWUyZGMwIHB5M2sKKzg0MzE0IDg3MDM3ZDgzODBiZjRhMzllZjEzN2YxZjQwODg0MGI5MGQ2OTYzYTYgcHkzaworODQzMTUgM2FjOWEzN2U0MjliYTYyNzkxYWZhMjZiZWZmMmE0OWU2MDMzNjgzNyBweTNrCis4NDMxNiA5NGMwZjk3OTE3ZGRjNjkyODE3OGZmNzJkMGMyMWViYWYwNzVhOGRlIHB5M2sKKzg0MzE3IDA0ODJiMzBjYTQ2NjI5M2VlODJjYmMzNTZjMjI1Yzg1OTNjNzY5MGQgcHkzaworODQzMTkgYWVmYmE4OTllYWVlYjQyNDdhMWFmMmYyYWJkMTEzOWFkYzc0NWI0MiBweTNrCis4NDMyMCA4MzMwMzQ2YjVjNWZhOGI2ZmViOTRkZWM4NDlmZmE3MTBkMTgyYTJjIHB5M2sKKzg0MzIxIGViZmI5NGYyY2JjMzU2NGM4OTJjNWRjODZhMzhhOGIwOTNkNTUyNDkgcmVsZWFzZTI3LW1haW50Cis4NDMyMiAxOTAzNzU0NDUyNDE5ODZhM2E4NDdjOGE0ZDc4ZTgxNGVkNTRhMGFkIHJlbGVhc2UzMS1tYWludAorODQzMjMgNjU1MjA1NTYyNjk1MDFlMzlmZGFkYjgzMGYyNzRkY2RmZTI2Y2U4ZCBweTNrCis4NDMyNCA3OTE1ZDI2NmVlMmIyNWRjYTQ2NWY3MDQ2NTJkMzRlMTkyMWMwMTUyIHJlbGVhc2UyNy1tYWludAorODQzMjUgZWQ4M2Q1NDYzMTVkMmUwYTNhYjNlMDYwNWZhMDUzNjM2ZDg5YWMzZSByZWxlYXNlMzEtbWFpbnQKKzg0MzI2IDMyNWQwMTZjMTlmNzFmODQ3NDM5MmRjZDcwNmI2N2Y5YTI2ODU3YTAgcHkzaworODQzMjcgOWQ0YWZkOGU4NjIxMTU0YzFmOGU2OTViNjAyZjk0ZjVjNDEwM2I3ZCBweTNrCis4NDMyOCBkZWJjMjg0MmI0YjFiZjk0Yzg0NjA4MTgyMjBlNDEwNTE5YmIwMjMxIHBlcC0wMzg0Cis4NDMyOSAwMTEyZjA2NGNlZGZhYjJhZjg4NzVhNTg5YTBjNWNmMWI0Nzc5MTkyIHB5M2sKKzg0MzMwIGQwYjQ2MGE0N2Y3ZmZhNThkZjk4ZDVjNjEwNDIxZTBlNzUyZDFmZjMgcGVwLTAzODQKKzg0MzMxIDA5M2EwOTVhYTc0YzY0ODk5OTY2NGI4ZjY3ZjA4OWJlZDg4NGI0MmYgcGVwLTAzODQKKzg0MzMyIDFhYmE3MzM5ZmE2YzJiODhlNTM1ZWExZjFjYWY0OTUwYjg2Y2Y4ODggcHkzaworODQzMzMgY2IxZjVkMDU0NTEwZTQ3YTRjYjMwNjkzNmYyMWEzYjU1YTYxNTJkOSBweTNrCis4NDMzNCAzNGRmZWU1OTBhMzA3MWIxZWZmZDQwNGM2MWViMmMyYWIyNTMxMWIwIHBlcC0wMzg0Cis4NDMzNSBkNzE2MjIwNzMxOGY2N2NiMDhhYjQ4ZjkyZTg3YzczOWFiNDgxMjhlIHBlcC0wMzg0Cis4NDMzNiAzM2M0Y2NhZmM0ZjUzOGExMmNkNmRhZDJjNzNiOGMyOGFmNTllNjhlIHBlcC0wMzg0Cis4NDMzNyA5ZmFjMTk3MGQzODA2ZjIzYjU4MjdjM2RhYzUyYjU0NmM3NmJlNzBjIHB5M2sKKzg0MzM4IDc4ZTQwMzE2ZTAyMzQ2YWZjNjc3ZjlkMzVhYTQ3ODkwMTVhMTAzNzEgcHkzaworODQzMzkgZWFhZTBkZjZkMDYzMGUxNTI0NjUxYmMwYzZmZWQzZmNjZGYzMmI2OCBweTNrCis4NDM0MSA1ZGMwNmEwNTk2MzBhZGMzNmZjZWJhYzgxZDU5ZDNiZjUyZmMwMTU2IHB5M2sKKzg0MzQ0IDAyNjVkNWY3YmQwNzIxNjZhMmI4M2FiOTQ2OTNjODg2NWEzZDE3ODkgcHkzaworODQzNDUgNGM5NzhjZDM2NDBmYzllN2M0NDc5NGI5NjRiYzU4NGYzOGFjZmRmNSByZWxlYXNlMzEtbWFpbnQKKzg0MzQ2IGIyZThkY2QxNTA0MDM0MWZjZjc2MThkMjFhMDYwZWY1MTg0NzRmNjYgcmVsZWFzZTI3LW1haW50Cis4NDM0NyA4ZjZlNDFjM2EyMThhOThmMDAyNmY1MTMzYzFmOWFlZjg3MGY1Y2RlIHB5M2sKKzg0MzQ4IDVjODlmOTU3MWJhNTQ5MGVjNDY1MjFmYjcyOTgwYzExYjEyMWQzYzMgcmVsZWFzZTMxLW1haW50Cis4NDM0OSAzZTIwYWJkN2RlZjZlMzYwMDhiYWQ1YTQwYmE3OTMwZDljYzlhNGVkIHJlbGVhc2UyNy1tYWludAorODQzNTAgNGJiMzE3ZWI0OTZhMDg3NTdhMmJjZmRjOGI1NWIyMzNmOWRkMzU4NiByZWxlYXNlMjctbWFpbnQKKzg0MzUxIDljYmE5OTA2OGM1NGFhOWZlOGVjY2VmYjhiMWI0NTZjNmI0MGY1YjYgcHkzaworODQzNTIgOTI5Nzk3NDYwNGZmZGIzMTlhOWU2ZDlmMTE4NGFlMjRlYzYxYmFmNiBweTNrCis4NDM1MyA5MTVkYTlmMmRhMTk5ZThiNTRhNGQ1NGRhMGVmYmY4MDg4ODVhZTFiIHB5M2sKKzg0MzU1IDgwZDJlN2QxZDdkNTM0ZmE0NjU5MTJjYWI0YWM0MDFmNDA5YjYwNjcgcHkzaworODQzNTYgOWM1MWYzODM2NTYzMmExYjdiNzg1YTI3OGQ1MTRiMjgxNmVhMGYwYSBweTNrCis4NDM1NyA3MjY3MDVkMDJhZGQyMWU2ZDJjMWJjNTUwN2FmM2QzNmMxNDRjYzQwIHB5M2sKKzg0MzU4IGVmZTlmNmM4YTMxZDRmYzgwZDUzNzFlYmY4OGQwNWNlZmIzYjBmNTYgcmVsZWFzZTMxLW1haW50Cis4NDM1OSA4YWQ1OWI1MjNmZDhhMDY0MjZmNTQwZDVkMzYxNzJiZTFjZjUxZWQ1IHB5M2sKKzg0MzYwIGUxZGNkY2I1MjAxZDQ4NGY4YTBlNWFjYjM4NTYxZmY4NGUzOGUyMzkgcHkzaworODQzNjEgMjk0MTAxZjc3Y2JlY2E0YTFhNzkxNDczNGRmMGJlODYwNmI0ZjY1OSByZWxlYXNlMzEtbWFpbnQKKzg0MzYyIGU2YjQ1NmY5MzQ0N2ExMDA1Y2FiMWY0NjY4NWI1M2ZmZDNjMmRmOTYgcHkzaworODQzNjMgMDQwZWU5NGE5MzUwZWEyNDM3ODAyMDUwYTIzYjM5OGIyMjk3ZWFlMSBweTNrCis4NDM2NCBmZTcyMTRiYzZkNjZiMzM5ZmYxZmYzMWExZmM2YjFlOWQzNzc5YmY5IHB5M2sKKzg0MzY1IGE0OTJmMWFjMDU3NTQ3OWU2YjhlZGE3MGVkNzE1N2QwN2YwMTM2YjkgcmVsZWFzZTMxLW1haW50Cis4NDM2NiA1MzcwZDgxYTVmMmQyYjMwMDRlYzgzNWUyY2M2YzljY2I5MDY0N2IyIHB5M2sKKzg0MzY3IDBhNzg0ZjZhY2FlNzY4MjRjYWFhMzQ1NmIxNmJjYWEyZTc2ZjQ3YTIgcmVsZWFzZTMxLW1haW50Cis4NDM2OCBmOTIwNDNjN2ZmOTg0MGUzOGJkNjIyYWNhMWQ1MWE0OWExNzQzNDE0IHJlbGVhc2UyNy1tYWludAorODQzNjkgZWE4OTNkYjIzZTczOGM2MDg4YzUwNDE0MzdmZWUxYjRhNTQ5MWEwZSByZWxlYXNlMjctbWFpbnQKKzg0MzY5IDQ3NDM3MzhjY2FmZTE3YWM5ZTVhM2NlNmQzNDMxZDgxZDg4NzhiMGUgcHkzaworODQzNzAgODQ4ODM2MDdlMjFhNGIxYWZlYWU0OGJlODE2MjU5NjA0MWY0OTJjMSBweTNrCis4NDM3MiA3YjJkMGQ3N2U0YWM2ZTU0NzczYWU5ODY5OTBjNDI0ZjRkMDYzYTUzIHB5M2sKKzg0MzczIDgwMzg5MjkzMzNhOWM3ODI5YjU3MDBkMDg1ZmUyZjFkMWY5MTFiYzUgcHkzaworODQzNzQgMDhmN2FlMTBjYzc5MmFlYWIwOGU5NmQ0MmNlYzUxZThiYzlmYjdhOCBweTNrCis4NDM3NiBjYThmOGM2Y2MyYjFiMjgxN2UxNDRjNzcwY2ZmNjMyOTY5Njk3M2ZmIHB5M2sKKzg0Mzc3IGFjMzdhMjhkZGM4ZjQ5YjRhOWI0YTdlYTg2N2JkYTVmODA5ZDdiY2MgcmVsZWFzZTMxLW1haW50Cis4NDM3OCAxNTcwZjZlOWE2ODc0NTllYjdlZWY0ZTE5ZDI2YTQxMmRhZjdkYzg5IHB5M2sKKzg0Mzc5IGQ1MDNmN2E0NTQ1NjZiOTQ4YmIxYzc2ZDNmNWJhZmU1OGFlNGZiZjUgcHkzaworODQzODAgNjI5MzBjYjA1ZWQ4YjhhMTQ0YWUyMmUzNWIwYjA4NmY5MjU0YWU0OSBweTNrCis4NDM4MSAwMzI2OGJmOWEyNTY0Zjg0ZmNmMWM4NTkyODMxMDA4ZWY3MDMyZmMwIHB5M2sKKzg0MzgyIDRmMjkwNWVhNzgwOTY3M2YwNDUyZjMyZjlkMWQyYmU1Zjk4YzFhODYgcmVsZWFzZTI3LW1haW50Cis4NDM4MyBhMGU3NTZkOTJkNjAwNjEwZjliYjgxOWM1YTNkZDg2MzAzNzNiZDRjIHB5M2sKKzg0Mzg0IDhjMjE2MGI1YzgxYWY3YTg4MjBlZjY0YzljNjE4YmZiMzMwZDUyODAgcHkzaworODQzODUgOWNhODNjNjRmNzdhZTE1NTkyNmQyZjBhNjk1NDg2ZTMyYWJkOGIyNyByZWxlYXNlMzEtbWFpbnQKKzg0Mzg2IDJlNTc2MTVlNjFmMGYxYWNhNmU1MTc4NjhhNmI1NWNhYjFmYTJjOTYgcmVsZWFzZTMxLW1haW50Cis4NDM4NyA5ZmQzMjZhZjYyZDQ1YzhkYzJhYzY5MDMyMjkyY2FhZGI4MWJmMDVkIHB5M2sKKzg0Mzg4IDQ5ODBiM2U5ZTg0YTE4MTQ5YjZiZmI3MGRjOGM2NzMzOGMxM2E5MzggcHkzaworODQzODkgN2U5YWJkNTNiOTI5OGU3MGZmNmU0YWNmMDY4YjdkZTIyZmUwZTY3OCBweTNrCis4NDM5MCAyOTczZGFhNDcyNGIxZWQ2YWYzZDllYmZiOTRlYzVhOTIxOTU0YzRmIHJlbGVhc2UzMS1tYWludAorODQzOTEgZDI0ODcwZDAwYzQyNTlmODBjNzc2NGNmMzkzNmIyMGI2MjJkNjJiMyBweTNrCis4NDM5MiBiM2I4ZDA4ZjlkMDZlY2ZiZDgzNjNiNGJiMjg1YjBiMDYyNTUwNmE3IHJlbGVhc2UzMS1tYWludAorODQzOTMgZGExOWQwMmFhYWFhM2Q2ZmI3OGUwZTk4YTNhYjhmZjg5OTUwYzdiZCByZWxlYXNlMjctbWFpbnQKKzg0Mzk0IDVhMzEwMWY1NThlZGRlMzQzYWNjNDQzOWFkZDBlNDA5ZTU4MjRiOTEgcHkzaworODQzOTUgNDEzNDk4MTc0Njk3NjhmN2YyYzI4YWIwY2RmZjI1NGQ5ZmZmM2UzOCByZWxlYXNlMjctbWFpbnQKKzg0Mzk2IDNkMWM3MjYyYWExNGRjYzM4NzhkYTY0MjkxNzVhNWExZDE4OTI3OWYgcmVsZWFzZTMxLW1haW50Cis4NDM5NyA5NDQyMzI1MjE2MjRiYjc4Y2IxMDFmODNmYzllMzJiYjgxYTIxNTk5IHB5M2sKKzg0Mzk4IGQ4NTBjMzdiNjZiNmY2ZmQzMDc1YTU2ZDAyOTc3OGQyZTNjMDQ4ZDIgcmVsZWFzZTMxLW1haW50Cis4NDM5OSAwNjFlMjcwMzJlNjE5MzYzMmZkY2ZhOGY1ZDkyMWRlNjMzYjA2NmFjIHJlbGVhc2UyNy1tYWludAorODQ0MDAgMmRjMTdkY2M5NzM0NjlmMjlmZmFmM2UzMmUwM2Y5ZWJlZDE1MmVjNyBweTNrCis4NDQwMSBkZTQyMDdjOWI5YzEyOGQ4MjYzOGU2Yzg4NzA3N2RlOTBjNTE3ZTdjIHB5M2sKKzg0NDAyIDMwNDVlYjk0MDU5N2JjMmM0NGIyNDVlNGU3NDZjZWI0N2QwNzUxZjIgcmVsZWFzZTI3LW1haW50Cis4NDQwMyBmYThiNTdmOTg3YzVmMTViODQ1OTQ2MzVlMDdkMmFhYTNmOTAzNDUyIHB5M2sKKzg0NDA0IGQ2NjgwN2M1MDM4YmZiNjZmNGYzMzM1ODBjOGE3Zjk2YmUyMDQxZWYgcmVsZWFzZTMxLW1haW50Cis4NDQwNSA2YmEwMzMyMmJjMjMzYmJkZDI4MzVjYTY2ODVkYzg3NDk4ZDM4ZjExIHB5M2sKKzg0NDA2IDA2M2I1NTRkMzE1M2YzNmY2ZWU0N2M2YzQxYjVkMGUwMTU2ZWYxNmYgcHkzaworODQ0MDcgNGQ4YTI1YTRkMWY2MDgwNWQ4MjRjMTQwN2RiMDA2MmVhZDQ0YWU2ZSBweTNrCis4NDQwOCA5MjVlOTExM2YwYWFlZmYxM2I2M2RlYTdmOGU4MmU0MDJkZTJlNDZiIHB5M2sKKzg0NDA5IDdhMzk1YmNlYWM5MWFmMzYwZDMzYjU4MzM5OTQ0YTM3MWM4Nzc1MjggcHkzaworODQ0MTAgNDU0N2IxNDkxMTY5MDM3YzBkZjU0MjgyZjZhNDUwNDNlM2MzZjAyYSByZWxlYXNlMzEtbWFpbnQKKzg0NDExIGZhNGQ3OGI5ZTNhMmE2Yjg0Yjg0NThlYWQ3MmQ1N2Y3NDQxMWYxNTkgcmVsZWFzZTI3LW1haW50Cis4NDQxMiA2MTlhZmM4MWM5NzMxZTE1ZDVlMWRiMmY4YjU1NTNiYmEyZTM0NjQ3IHJlbGVhc2UyNy1tYWludAorODQ0MTMgZmE5NDk1MzE2Y2E5MDBkMTkxNzYxNzRkMTZiZDAwZDYyN2I3YTFjNCByZWxlYXNlMzEtbWFpbnQKKzg0NDE0IGEzYjY0MTkyOTZlNTg0YmY3YmRhNTI5MDEyYzUxNTg0OWQ3OTdmNzEgcHkzaworODQ0MTUgMjVlZGI2ZjQzOGI5MjZkOTljOTFkN2U5M2FiYjM0YTFkMDdjMjQ1ZiBweTNrCis4NDQxNiA1MzhhZTYyMjRhNWViNWVmZWQ5OGY3YTU4ZmY5OWY2ZDA5Y2MxMzA2IGltcG9ydF91bmljb2RlCis4NDQxNyBkNzkyMTZmYzIxY2U3NTExOWNiOTdhMWI1M2RiMTY2ZjQ0MGM2ZDcxIGltcG9ydF91bmljb2RlCis4NDQxOCA4MmVhYzNjMmM2OTdkZjBhMTBiYjJmMGY2NmEyYjRlN2IyNTg3ZTg1IGltcG9ydF91bmljb2RlCis4NDQxOSBlZDNkODYxYzQ5MGNhMmZjNzA0M2RkNzE5NDJlYzU0ZmU1OTE3NjI3IGltcG9ydF91bmljb2RlCis4NDQyMCBhMzliYTdhY2JlMjg3MDRhMjgyMTU5NDk3MjFiZTY2ZGQ2ZmY5MzVhIGltcG9ydF91bmljb2RlCis4NDQyMSBlNjYwZTdiZDc5OWQ3MGZjYTdhNzJmYTM0ZDhmNGNkODIzZTgyMTZiIGltcG9ydF91bmljb2RlCis4NDQyMiA4MDY0MWM3YTZmNGY5YzI0ZmZlZmVjYWMwNzY4NDcxOWEwZGI0YWIxIGltcG9ydF91bmljb2RlCis4NDQyMyAzZDc4NTJiODYxMjg0ZDljNjcxN2E1ZWViODUwOTQ2MGY1NGRhMTZlIGltcG9ydF91bmljb2RlCis4NDQyNCBiMjFmZDk0ZjRmYjM3YjMzODE4NjM4ZmNjZjEwMzEyMDU5Zjk0NzM1IGltcG9ydF91bmljb2RlCis4NDQyNSBmMGQwYTA3MGYxMjhmMmI3MGZhZmQ4YTM1MTdmYWVmNGY0YTViYzFmIHJlbGVhc2UzMS1tYWludAorODQ0MjYgOTNkNmFkODUyMzUzNDFkZmMyMTdjZDhlNGQ3YWE3ZTY3NTFmNGUzMiByZWxlYXNlMjctbWFpbnQKKzg0NDI3IDgyMjExYjE4NTBkNGRhMmJjM2Q3MDJmMTZhNDg1ODI5NWU0MGNkYzMgcmVsZWFzZTI3LW1haW50Cis4NDQyOCBkY2IyYWE0MWNkNzgwYTAwM2NkN2QxMGVkMmZiNTViNmIxMjU5YjJiIHJlbGVhc2UzMS1tYWludAorODQ0MjkgYTBkOGRlMDRjM2E4Mjg1MmJiODc3ZmE3MDI0ZGY2NTE3YjZiOGJlMCBweTNrCis4NDQzMCAxZjA0YjAwNzZmZDgxNWUzOTRkN2JjNGJmN2YwZjZhYjBhYjg2MmY4IHB5M2sKKzg0NDMxIGE3Y2FkZDdiMzRiNTI2ZjAyNzU3ZDM0OWFhMzY5ZGE1M2ZhMDQ1NTMgcHkzaworODQ0MzIgNDdiOTNjZGE5MWRmNWIyYmQyYzk3ZDcwNGUwMmE2MjVmOGJjNmRmYSBweTNrCis4NDQzNCA4MWE5YWM3M2Q2MTk2MzI5ZmIyMGVkMDhjMDE0ZTFkOTQ5OTNmZjU1IHB5M2sKKzg0NDM1IDAyNjBlMDRkMmNmYzgyOTg5MmI4MjE4ODU3ZTk2YWNjNDlkMmU2MWIgcHkzaworODQ0MzYgMTFmYzc5OGE4YjQzMjcyMmUwOWY2YmEwYjQ3ODM5NmE5NGNjMTExOSBweTNrCis4NDQzNyBiZDc0MzVhODcwOGI2MzdlZjJmYTJiOGJmZDczNWQ1NGRiYjA5ZmQxIHB5M2sKKzg0NDM4IDU1ZGI2MGZjYWI1NDI0MjcwYjVlMTVlZjVmNTViMGJjNjZmNjFhMGQgcHkzaworODQ0MzkgYjhjZmJiZmUxODM5MDY3ZTc1ZTJlNzNlMTA4MWFiNDU1NzMwMmMwMiBweTNrCis4NDQ0MCBkMWM2YjFhYjViYTc4NTQwODE3MjRlYTVkNmVjOThhMTc3NWIxMTExIHB5M2sKKzg0NDQxIDhiOTRmMTVjYjY1MGJhMWFhZGViMjU5MjAwZjczNmNiMWEwZjZiYTggcmVsZWFzZTMxLW1haW50Cis4NDQ0MiA0YWQ3ZWZkOTA5YmNlOTRiYzJmYTFlZWMzMjM2NDEzNDRkNDA2NmE2IHJlbGVhc2UyNy1tYWludAorODQ0NDMgMTZjZWZkZmVkNjgyMGQyYzU2NDc2MjE5OGUxNDhkYWMyOWJkYjRkMiByZWxlYXNlMjctbWFpbnQKKzg0NDQ0IDE2ZDhhNGU5NGRkMDg3MjQ5NjIyYWY5YjNkZWE4NWY1NWM2MDVlYzggcHkzaworODQ0NDUgMzNjZmFhMzJjOGU4MGU3NWVjNThiZTlkYjI1YjIxODYyYWM4Y2VkZiByZWxlYXNlMjctbWFpbnQKKzg0NDQ2IDhkYmQzMTZiZWJkZjk4NzI1MWRjYTIyZmUyYjYwNDc0YzA5ZTJjYjAgcmVsZWFzZTI3LW1haW50Cis4NDQ0NyBkNTZiM2NhZmIxZTY1NWVmYjgxYzg1Njg4NDQ5ZWRiMmU2MDk3OTdkIHB5M2sKKzg0NDQ4IGI2NWQwMzcxYTczMTU4YjRiOTZlNjE3ZjI4MDg5MDNmYzU5NjBlMmUgcHkzaworODQ0NDkgYjhlZTgwODYzZDYzZmFiODA3ZmQ3YzM5ZjU5YTljY2NiZWJhM2M1NSBweTNrCis4NDQ1MCA3ZDE3NTJkNjIwNTBjOWEzMzYwZmU4NDkyNmViMDljM2JjYzJmYzlmIHB5M2sKKzg0NDUxIDYzMzE2NmQ0ZmMxMmFkOTJhN2Q4YzFjNzllOGYzYWI3ZDFlZjA0ZDQgcmVsZWFzZTMxLW1haW50Cis4NDQ1MiA4M2E2ZmZmM2Y2ODMzNGZkN2NiZGE0YzMxNzgxYzEwMjUxMTM2ZDViIHB5M2sKKzg0NDUzIDEyNzA0NTFmNDYwNDlkN2E5ZDkxNjZlYzNiYzAzYmQwYjE5NGFlODMgcmVsZWFzZTMxLW1haW50Cis4NDQ1NCAzNTY5OWYzODdkYTZlN2QyZDZkZDY3NmIxOGM2NGVjMGE3MjkyNGE3IHJlbGVhc2UyNy1tYWludAorODQ0NTUgOThmMzM3YTY5NTdjMTNjOTA4ZWRhMGI5ZWQ0ZDczZTk1MmI1OGI4NiBweTNrCis4NDQ1NiA3MjY0MGU3MTEzNDQxOGE3MDA2NWE3NTYzNGJjMWRlOTg0N2RhODZlIHB5M2sKKzg0NDU4IDVlMzNiMjdjNzFhODYxNzIxOTc1OTM0ZThiZmUzYzA3NWRmMTZiM2YgcHkzaworODQ0NTkgMjAyNzQ3ZGFlM2NmYWViNGQ2OGIwODE4MTEyNGUwMDI2MzM0ODFmZiBweTNrCis4NDQ2MiBiYTg3Y2FlZWNiOTE0ZjdiMTgzNjY3NDQ4Yzk3MGE2ODM2NzVkNzc3IHB5M2sKKzg0NDYzIGI3Y2IyNzc3M2U3MjkxZjVmMDY0NTBiNmEwMzU2ZTJlMmU2YzA1YzMgcmVsZWFzZTMxLW1haW50Cis4NDQ2NCA3MDAxOWM1Y2YzNWY4ZWM3Y2IzZmUyOTJjMzdjOGRlMzY1ZDg3YjlhIHB5M2sKKzg0NDY1IDk4ODcxOGU5ZjkzZDE1ZTJhOTM3YTZlMWM4NmMwZGI0MmZkN2ZiYzYgcmVsZWFzZTMxLW1haW50Cis4NDQ2NyAwNmU1ZmQ0OTU5ZThhMWU0MDQwNWYwZDJmN2IyY2I1MDdjMDk0ZTA3IHB5M2sKKzg0NDY4IDFmNDcyMDZkNTc3ZjA3YWNlM2QyMWNkMTU3YWVhNGQyMDA4YTY5NTcgcHkzaworODQ0NjkgZjhiYTk1NThhZGJmOTE1YmEyZjkyMzcwMTQyZDI4YmM1YjQzOWI2MiBweTNrCis4NDQ3MCAzZjc3NjRjNDBjMGJmYjk1MmE5NTVkNzdjNjBhOTY5ZTBmNjQ2YmUzIHB5M2sKKzg0NDcxIGRiYzk1NzYyY2Y1ODYzNWM2NWQxNzE1ZDExOGViN2I0YTcyNmE1MDIgcHkzaworODQ0NzIgNTI0YjQ0NGE4MDk1MDk1YTZkOWNiYWMxYmUyMGU0NDBkNTU1M2RiZiBweTNrCis4NDQ3MyBlOTJhZGE2NDJkYmRmZGI3MTdkMzNjOGFiMzlkYmU3N2ExMjM5ZWRiIHJlbGVhc2UzMS1tYWludAorODQ0NzQgODk1YWViNDU5NWMyZjcwZTZhZDUwNjE3YjRmYmIyYmExYjE5NWU1MCByZWxlYXNlMjctbWFpbnQKKzg0NDc1IDQ3MmRjZjUwY2E3MWM4N2ZjODMxYjk5OTdmZmI3NTUwMmZiZmYyYzIgcHkzaworODQ0NzYgNTMzMDViYWVmNTg4ZDg1N2NlMTBiMDYyMmMyMThlM2MzNGE1NWM3ZiBweTNrCis4NDQ3NyA0MDUyZDNlMjg2NWJmOGExYWY0N2FiNDc5MTdjMDBjOTkxMTgxY2FkIHB5M2sKKzg0NDc4IDVlNTVlOTVkNWM3NzRiNGZjMmMxMjM3NTEzZmQ2NTlkMjIzZDlmNGYgcHkzaworODQ0NzkgNjhmZDQzMDg1OWE0OWMzYTgzN2UxZThhMTE3OTZhNTUxMWM4YTI2YSBweTNrCis4NDQ4MCBlYTZkMDgyYTljZjgwODY3Y2MxYjMyMGYxZmYyNWFiMTAxOTc4ZGYzIHB5M2sKKzg0NDgxIDQwZWI1OWUyZjJkMzUwNmZkZTdkYTVhNzVmOWUyMjU5MDhhMjYxODggcHkzaworODQ0ODIgZTVhZTAzZWY3ZmMxM2M4NTcyZTYzNDRhMzg0NzQ4NjFkYWZlYTkxMSBweTNrCis4NDQ4MyBkZThkM2Q3OTFlNmE3ZjQxY2I4NWMzZTgwOTZiMGFiMDA3NjJkNmFlIHB5M2sKKzg0NDg0IDAzMjU0ZmM4MzkwMTE2M2QzYzQ5M2M0ZjQwYzdkMDU4MGRkNzYzNjggcHkzaworODQ0ODUgZTljZDE1ZDUzOWUxYTNmZWRhMDA1Y2JiOWVjYjNmZWUyOTQ1ZTI3MiBweTNrCis4NDQ4NiBiMmIyNjJjNWRhYTg2MzA3M2EwMGMyYjBmZjQ0OWEwOTFlZTcyMDE2IHB5M2sKKzg0NDg3IGI3MGQzM2VlZmQ5NjBlNGQwYzJkNmMzNDhiZTJkNTY3ZjI1OWI5MmUgcHkzaworODQ0ODggMDBjNjk1N2M3NzE5MGIyOTFiZGJhYzNiYTM0ZmMwYWUwOWI3MGU2ZiBweTNrCis4NDQ4OSA5MGViNGM5NzNmNTJhZmY1MWE1ZmE5ZjEzNTIyM2I2NDNjODk2Yzc2IHB5M2sKKzg0NDkwIDBhZjk0ZWU5OWE0ODRiZGMyNTIxYjNkMmJhNzExOTc0MWU1ODc0MzAgcmVsZWFzZTMxLW1haW50Cis4NDQ5MSA5MTk3YmFlNjE5YWE0MGIyNTk4MmE1NDRkNDJjZTM0NzQ2ODFkNmE4IHJlbGVhc2UyNy1tYWludAorODQ0OTIgZWQ0NWEyNmY2NjY0ZGE3MTk4NjIzNGFiZGQ1NTBkMjYyMWM3MjZkNyBweTNrCis4NDQ5MyA0MzMxOWUyOTJkNjRiYTE5YTkyODA3MjdhZjc4MmRjMzZhMDVhMzBhIHJlbGVhc2UzMS1tYWludAorODQ0OTQgNThiODEwMWVhYzIzOGU2MDUzYWQxODI1YTE5NmQzYmY2NDgwYjQ5YSByZWxlYXNlMjctbWFpbnQKKzg0NDk1IDBmNmVlNTljMmE3NjNhODJhNzVhZWRlNTk1MTNiNDE5ODk3YTNlYzggcHkzaworODQ0OTYgZGFiYzExNTExNmJkNzQ4ZDIxMWVkODNmZjBiOWYyMTg1MDc5ZTU1ZiBweTNrCis4NDQ5NyBkMmI4ZjExMDMyMTI0YmJiMjcyM2NmNzIyMjM1NjlkYzZlZjUwOTk2IHB5M2sKKzg0NDk4IGY5OTRlNmZkMDY4MDYyMTQyNDI5MjZmNjgzZWQ4MDNlNjNlM2M4MGYgcmVsZWFzZTMxLW1haW50Cis4NDQ5OSA4ZWNlMjljOGJiYTI4ZWQ1YTZlMjQxYzRkMGU4YmU0ZDE0NzJkYjA4IHJlbGVhc2UyNy1tYWludAorODQ1MDAgMWI1ZWU2ZTg0NWNkZjAxNzM3ZDg5NTZmOWU3N2YzNmY1YzkyNTcwNSBweTNrCis4NDUwMSA3MjUyMzEyMTEyNzMyN2MwMjIwOTZkMzBlN2IyOGE0YTVhODk0OTVkIHB5M2sKKzg0NTAyIGNlNTQ2YTFiOWZlYzFmNjBiZWRiM2YzMTQ2ZDA2ZjA5ODgwNWNkN2QgcHkzaworODQ1MDMgYTQxNWNmOTRjN2RhN2YzNThiYzQ5NWVmOGFlNWQ2MzExNjZjOGIyNyByZWxlYXNlMzEtbWFpbnQKKzg0NTA0IDU5OTdhZTJlYWIzNzE5MTc4NzRiNzNkMjZhMzEzM2M3YzNhMGIyNjIgcHkzaworODQ1MDUgYzNhZDg4M2I5NDBiZTRlZWFiNzUyYjBlYWJkZWY2ZGY2MDA5YzAwNSBweTNrCis4NDUwNiA3OGVhNDQyMmRmNGMyYzhkODEzYmQzN2M1NjA3NzA1OTgwYmY2Y2JkIHB5M2sKKzg0NTA3IDIzY2Y1NDE4NmY1NjUzMjA2OWNmODM5Mzc3NDllOGE4Yzg2OTA0YTkgcmVsZWFzZTMxLW1haW50Cis4NDUwOCA5ODA4M2Y4NzY0NTU0NzI2MmQ5ODE2MjdjOGIwNjQxY2VkYWZjMzYyIHJlbGVhc2UyNy1tYWludAorODQ1MDkgOTcyMDgzNmFhM2NiODkzMTU2ZDQ0YzM3NzY5YWQ1NzRjOTUwODdjNyBweTNrCis4NDUxMCA2MWM0NDc5MzIzOGQxNzE0ZWNkMGY2OWZkZDUxYTkwOGEyNGZjMmYwIHB5M2sKKzg0NTExIGIzMmNiZmE5NjczOTRlMzM5MmVjNDRiMDFmNTdhODM4NWJiYmJlYjcgcHkzaworODQ1MTIgYzc4ZWIwMTZkMWM1MTQ4NmRhNjExZjQwNzk1NjYxZjcxNWQ2Nzc1ZSBweTNrCis4NDUxMyBjNGIzNGIyYTVjYzBlZWViNTcyNWFhZDdjMDAzNzc3ZGMzMDE1ZDdkIHB5M2sKKzg0NTE0IDBiMGJkODEwMjg5MWJiOTNlNmVhYmY2MDU1MGI2M2M2MDM3ODUxMjYgcHkzaworODQ1MTUgN2EzNGRlZjM1ZGU3NGJkNzJmYjY1YzFhZWNlM2MyOGI4NmUwNTRjYSBweTNrCis4NDUxNiAzYzM2ODQ5ZjA2Mzk3YjVhMWY0NjIwNGNkMzU0NTRiOTExYzY3MzVmIHB5M2sKKzg0NTE3IGE4ZDU0ZTgwMjNmMjFhNjJmM2IzNmJhMzgyZjA0ZGJiZGFjMzU3OWMgcHkzaworODQ1MTggOGJiMTYyYjAxOTI2ZjVhZjk4YmY0OTliZWEzZTY4ODUxZDhkZjg5NiBweTNrCis4NDUxOSAyNjNiMTA3N2FiOTc1YjNkZWUwOWU2NjAzMmVjNjBlOTg5M2MwMmM1IHB5M2sKKzg0NTIwIDBkODYxNDA3NTVmMGQ0OTUzOTNlOGY2NjEwMTU1ZmY5YmRlZWE4ZmYgcHkzaworODQ1MjIgNTZkYzJhNWFmMjBhMWFlZGJlZWU0OTA5Y2FiZDZmMDE1ZDU0NzlmMyBweTNrCis4NDUyMyA2MjA5ODc1MWRhNjdiNWVlZjliYjg1YjIxNTcxMjJhMjJkYzA3MTRkIHB5M2sKKzg0NTI0IDE2MTE5MTI5MzI0ZDQxZmFmMzQ0N2EzNjkzMDE4ZjA1MzI1MmVkNzUgcHkzaworODQ1MjUgN2Q5YjRlMDE4YzYyZTkyM2RjZTk1MmVlNjhlMDBlZjJlYWI5MTljMCBweTNrCis4NDUyOCA3OGM0ZGRhN2NkYzYzNzM3ZmEyNDg3ZTE1MjUxZGYxZTk1YTJiOGMwIHB5M2sKKzg0NTI5IDUxMDQ4ZjYyNzZjZTg0YTNjOTkxOTU5NDFkMDUwZmJhMmMwZWZlZDMgcHkzaworODQ1MzAgZGM1ODkyZjczZTAzNmRmODQ2MGNkZWMwMmNkN2ExY2JhMmMwNTJlZCBweTNrCis4NDUzMSA0ZjdiNTZiNzg3MjUyNTYxN2M1NmI3YmZjODQ5N2YyZTMwZDIxYTcxIHB5M2sKKzg0NTMyIGE3NWU5ODkzNzU0MmJjNTMyMzQzMjlkMDZjNDIxNTdlN2VlMGNjNjYgcHkzaworODQ1MzMgYjBhYjgzMmY4OTIxMjgxODgyZTRlMjE3ZmMwZDMzMDlhMDhmZTUzMyBweTNrCis4NDUzNCA3ODE0ZGM5ZjMxYTI1YzkzNzdlYzY2YzUzZTMxOWMyNWE2NjQxYjQyIHB5M2sKKzg0NTM1IDdlMGQ4NjZjYTg3MTQ4MjRjYjJhOWY4ZTU0ZWViYzg1OTgzOGU3NjggcHkzaworODQ1MzcgN2E3YjUzMWJjYjY0ZDEyNWRkM2JiMDFmNGI3MDMxYTcwMDQ1OThhNSBweTNrCis4NDUzOCA3ODg3OTcxZGRhNDgzYmNiZmYyMTlmMWViYTU5ZDMwZjBlZTQ5ZjFkIHB5M2sKKzg0NTM5IDIxMzkxNjAyODdhMTFhMmQwNmVhYWIxNjIyZWE5MzBlMzExMTU2NGYgcHkzaworODQ1NDAgNTZkNDM3M2NlY2I3M2M4YjQ1MTI2YmE3YjA0NWIzYzdiM2Y5NGIwYiBweTNrCis4NDU0MSAxZDBkMzNjMDUxNWVlOGJjNmZmZTY3NGQ5YTFjMmVmNjljOTEwNTNiIHB5M2sKKzg0NTQyIDVjOTlmOGM5MGU2NjQxNjU0YTMzZDM3N2VmMjBiYTMzZDg3ODkxOWEgcHkzaworODQ1NDMgYzM0ODkyNTc1YmMwZTRhZjExMTAwNTEwMDBmOTc2YTFjYjQzMTBjZSByZWxlYXNlMzEtbWFpbnQKKzg0NTQ0IDg3YWE2MmJkMTcxNTZlOWUyODhhZGMwMjE4ZDczYWZhZmMzMzM1N2IgcHkzaworODQ1NDUgOGVmNjhlYmVjMGUxZTJlNmIxNjhmYzEyN2Y2NzhiNWNhNDk3ZDgxZiBweTNrCis4NDU0NiA2OWNiMDlmMjY0MjQwY2EzYzMwMzE3NjBkZjNhMTM0ZDYwZjI0NTUwIHB5M2sKKzg0NTQ3IGU1NThhYzQyNWE1MTg1YmYxYjU2MDgzMTE2MjRkMDk1NmVmMTI2MjQgcHkzaworODQ1NDggMDcxMjI1YWY2NGEzZDcwNTZiMGQ1MzQ2YTAwZGU5N2FjMTI4ZTM2NSBweTNrCis4NDU0OSA2NTdmNzk1MTk5YjllN2UzNDkxMjdlZmZjMmZmZTI5NzYzNWU0ZmQzIHB5M2sKKzg0NTUwIDYzMjRkMjM5NjNhNzE5MDQ1YzUzNGZjYjExM2E0MWZkNjJmMjdlOTIgcHkzaworODQ1NTEgZDM4OTM3NDcxZjg5ODRhYzk2MDVhOWU1N2JhZmIyMmM3MWRjNjE3MiBweTNrCis4NDU1MiAzOWFhYTJhN2ZkNGJmNmVhMjU2NWU0M2NkMTU4MmI0MTZiMzNkY2U2IHB5M2sKKzg0NTUzIDFkMzc0ZTViYTJmMTMyZWI5OWI3ZDU1YzZkYzQxMWNlMmVlN2Y2MDkgcHkzaworODQ1NTQgNDk0NDFlODhjY2MxNGFkNDhmZmMxYzIxYTM2NGQxMTYxYjc2OTU4ZSBweTNrCis4NDU1NSBkOTM5YzgwYzY2NmJkMzczOGI0MDc3OTllMjc2ZDVmYWM0OGYzMTExIHB5M2sKKzg0NTU2IDA2MmFiNTE0NzQ4NzQ1OTdjZWI2NWUxM2EzODQ0NzNhOWExYTc3NzIgcHkzaworODQ1NTcgMDQ3YTlkN2NhMjQxZGMxYjhjZmY2YmJhYzhkMDkzZmI4YzQ4ZGNlZiByZWxlYXNlMzEtbWFpbnQKKzg0NTU4IDJjMmEzOGUwY2YzMDc2NTUxY2FjODU3N2QxNmRlYWY0YjFiOWEzMzMgcmVsZWFzZTI3LW1haW50Cis4NDU1OSA5YmRjNTkwMTIwN2I4Y2Q4MGY3M2M3NWRjN2NjNWVjN2JmYmE0MmEyIHB5M2sKKzg0NTYwIDRhMTQ1NWQzNjhmZjVmZmFkYzgxNGY3ZTlkNmFiZjU1ZDczYTEyYjMgcmVsZWFzZTI3LW1haW50Cis4NDU2MSBmNmRmZDZjNTYzZTExNThhNDg2YzZmM2E2NGVkZGE1MmU3YjhmOGJlIHB5M2sKKzg0NTYyIDIxNDA1ODEyZjMxMjcwY2ZmYTQ2MGQ3ZGM0MzU1NGVhYjhjY2FhNWYgcHkzaworODQ1NjMgMGMwZjFkMGViNzdlOTgwZjcwZmI0M2VjZDgzZDg2NzBiZDQ1Njg1NSBweTNrCis4NDU2NCA1NDEzMzg3OTU5NTA3MTE5YTExZjY5OWZiNjQ4OWIzZmQxOTBlZjM5IHB5M2sKKzg0NTY1IGVmMTZiNGI3OWQ1NDdmNjI5ODlmMjBhOGU0YzRlNGM5ODM5OTY2ZWEgcHkzaworODQ1NjYgNmE4YjVhNjE4ZTdhZWYwYzRmNDZhZTI0NjM0MDAwYmU2Y2FlYWNhMiBweTNrCis4NDU2NyBiMzA2MTA1YmY4M2RmYTI2NWVmYzAyNWFjZjhhN2UyMTdhYjkzOTc2IHB5M2sKKzg0NTY4IDEyNDdmYTc1MTc3MjFhZGNhN2U1MzU0MWFiMTczNzEwZWNhOWFjY2EgcHkzaworODQ1NjkgZmFhYWI1YTY1N2ViNTQ5YjIxN2RkYjBkNGIyYjNiMDA5YzEwMWEyNiByZWxlYXNlMzEtbWFpbnQKKzg0NTY5IDE2OTJjMGI2MDMxNzY0MTU2MjczZjIwOTM3NzNhZTc4M2I5NTg3M2UgcmVsZWFzZTI3LW1haW50Cis4NDU2OSBjZDkxOGFjN2JkNTU0Yzg5NmY1OTNiOTZiYjU5NTRkMmZhMmNlNDg0IHB5M2sKKzg0NTcwIDU0Yjc5NjRkZDdhOTVlMzA5MDIxMDI2NjU3ZmJlZjBkMzdiM2MyODYgcHkzaworODQ1NzEgNTY3ODc1OWE4MDA5YTcwN2Q4NTZiNTE5MjY1OWQzZmFjN2JhYzYwYyBweTNrCis4NDU3MiA1M2NkOGVjZGNlOGFlNjcxYWI1OTYyMzdmZjZkMmFmNzk1NTU5YjI3IHJlbGVhc2UyNy1tYWludAorODQ1NzMgYjMyZmRhOWY3MmZmOTVkMTRkMWUwY2FjZWVhMGUxZTY0NmU0OWJmZCBweTNrCis4NDU3NCA2NTY0MmYwODVjNTVjOTQ1YTliYjA1MzBhNDkwYjI5MjBkNDE4ZWNjIHB5M2sKKzg0NTc1IDExYmE2Mzk3ZTNhNGZlNDc0N2FlMTE1NmEwN2MxODZmOGQxMjcxNGMgcHkzaworODQ1NzYgYzJmODQxOGEwZTE0NjEzOTFkZjYxMmM1ZmQyMzg4NzMyMzQ3ZTJjNiBweTNrCis4NDU3NyBlMDdjNDQ4M2FkM2I2ZmIxNTE1ZDc3Yzg5MGNjMmQ5MTBlODVkNjQwIHB5M2sKKzg0NTc4IDljZWQ3ZjJmMjBiM2YxZDczYWM3M2MxOWRjMTkxMDU4ZTZmMmRkZmQgcHkzaworODQ1NzkgOTRlMWYyMzZjODhkNzc5M2Y2YmIxN2M0Y2M5ZTMyZjMwNTdkMzQyYiBweTNrCis4NDU4MCA2YmEyMGI5MDM5YWU2OTkwMjhmOTgyNDBmOTFhM2E0OGEwNjg2MTc4IHB5M2sKKzg0NTgxIGU4M2FmMTQxZGZmZGFhOGY1NWEyN2VjMTZjNDQwMjM5NmZhODU4YzMgcHkzaworODQ1ODIgMWExZTcyNTRkOTY1NTY3ZmE0ZDFlNmFjMWRlMTVkMjNmOGIxMTkwOCBweTNrCis4NDU4MyBlNGRlMjE3NmY5OGUzMGY0YzRlOGIwYWM3YjVjNDI1OWEwYmZmOGYwIHJlbGVhc2UyNy1tYWludAorODQ1ODQgNGFjOGFlN2U4MDIyYzQ0ZWNjZTcxZWI5MDFlMWRmMzA2OWExYWU2OSBweTNrCis4NDU4NSBhZGZhMWU0ODg3MzRlMmNjZTU3MmI4YzI1MTU0OGRkZTk5Yzg2MWE0IHJlbGVhc2UyNy1tYWludAorODQ1ODYgYzIxOTkxNzVhZGE4ZGU4MWYyY2UxZmFjYTViZGE2NWZjODkzMjFjMSByZWxlYXNlMzEtbWFpbnQKKzg0NTg3IDYwOTVlYTlkY2ZmNDAwOTUwMjBjZWQ4MzUyNjQ1OWFlODUzOGI2YzAgcHkzaworODQ1ODggMWMyMmMxZTQ1M2Q0YTFjY2U3ODUzODRjODM3OGRmMTBkMmUxYTI0NCBweTNrCis4NDU4OSA4NGMyNGRiMTM2NzdjNzQwMjEwYWYyYTQ2YzgzMzc0ZTFiNWE4YThmIHB5M2sKKzg0NTkwIDNlNWE4OTM3NmRmNTQ0MDRmY2Y1MWYwOTQ1OWIwNTRjMDRkMjU0ZWEgcmVsZWFzZTMxLW1haW50Cis4NDU5MSA3NDMyZTUwOGViNjZhOWUwYzhhZGM0NDY2ZTVhMDI1YTc4ZjdjYzg3IHJlbGVhc2UyNy1tYWludAorODQ1OTIgNGEzZGRiODYyYTcyY2FmZGY1YWE4MzFiMGU1ZTBmZjE4ZjgxMThkNSBweTNrCis4NDU5MyA1ZGQxZTU5NGQ5MTk1ZWI1MTI5MDg1MWEwMWEzYThkMTc5MDE4MTFkIHJlbGVhc2UzMS1tYWludAorODQ1OTQgNGI2OGQ0NzM0OGE0ZGFiNzg1NDU2MjI5MDg3YTA2NjI0Nzc5YzRhNiByZWxlYXNlMjctbWFpbnQKKzg0NTk1IDc3MGMzZWMwNTY4NTZiNDQ4NGJiMzQ2Mjc4MjM5NGU0MmQzYzNhNTAgcHkzaworODQ1OTYgODlmZTUxNzlhZWM1ZjAwYzU4MmY5OTE5MzlhYTAxNDkxZmRmZDc0ZSBweTNrCis4NDU5NyA5MWM3ZjQ0ZTRiZWE5ZGNhZmExODNhNDJlYmNkNjAzYjAzMjhlZWNjIHB5M2sKKzg0NTk4IGIyZjdjZjljNjc3NjM1OWYyNzUxNjBmYWQxNTNkNTg4ZTIxNzMxN2YgcHkzaworODQ1OTkgNjNjZWVmMDQ1M2Y0MDZhYmQyMGY5YzRmNWYyMjE5YzdlYjM4NDJiNSBweTNrCis4NDYwMCAyNDAwZjU1ZWEzMTI1MzA4ODg4ODVlMGNmOGNmODljMDIwMjVmYTYyIHJlbGVhc2UzMS1tYWludAorODQ2MDEgNWQ3M2IwMzY1NzNiNzg3ZjUwMjAxNTZhNmRkMDM1ZmE1NjgyODRlZSBweTNrCis4NDYwMiBkNmQ0Yjg0NjRiOGNmNmViMTAyODRkZTE1YWY5YmJjMDEzNmMxMjZjIHB5M2sKKzg0NjAzIGFmNDE0YjI5ZDQ2Nzg3MTNjMjRmOTNkYmIxYWE5N2Y5ODc4ODM1MWEgcmVsZWFzZTI3LW1haW50Cis4NDYwNCBlZjBhMDdkNTRkYzE3ZDMwYjg0OTUwNjIxNmQ0NDJkMjFmZmFlMWI2IHB5M2sKKzg0NjA1IDRjNjRlNjg4ZjY2NWVmZDYyNTA0NzExNGY4NzY0NzA0NzNkOTA1NDEgcmVsZWFzZTMxLW1haW50Cis4NDYwNiBkMDA4ZjQwNmRjOThjOWQxYzNiN2RkZDRkNjUxYzY5ZTUxNGM2NjY4IHJlbGVhc2UyNy1tYWludAorODQ2MDcgYzJkNmYwY2Y5MjZhMmYzZTNmYTAwYTE2NjEyZDk5MGQzZTFhNWI1ZCBweTNrCis4NDYwOCA5NjBkZTAxMDA4MWI3NjMxMDNhOTU3NGFkMGEwMmRiODhkODAwNTk5IHB5M2sKKzg0NjA5IDM4NGFlZTYyNzNlODA1YjY5NmYwMzNhNWVmZWRkNDJkNjljODVmM2QgcmVsZWFzZTMxLW1haW50Cis4NDYxMCAwM2E2Zjc4MzlkNmQzNTMyZmVlNmJjMzgxMzExNjYxMjNhN2YyZWI4IHJlbGVhc2UyNy1tYWludAorODQ2MTEgNTU4ZjMzOGUxMzIwODExNzdlYzZiMGJlMzVhOTc2N2M0MjkyN2FhYyBweTNrCis4NDYxMiBlMDYyM2I2YjQzYjYzN2EzMjEwNWMyOTJmOGQyNGFmZGU5YzhmNjllIHJlbGVhc2UzMS1tYWludAorODQ2MTMgYmFmMWE0ODJiNTdkNzY2ZjdjNWU2NTc5NTE1NjU0NTk0YTExNGIwNyByZWxlYXNlMjctbWFpbnQKKzg0NjE0IDg5MjNlMTQ5M2EzNDQ5MzZlY2I3YThjOTczMDczZGYzNTRmOGQ1MTIgcHkzaworODQ2MTUgZDI3ZDRiZDQ4OGRjODM5NDY0ZWUwYzUyZTAyNGU2YjhlYTFlNDU1NCByZWxlYXNlMzEtbWFpbnQKKzg0NjE2IDBmZGE4MmIxYmZiYmM1MzhkYTY2OTliZTVjYzQyZDE3YzdhY2NmNGUgcmVsZWFzZTI3LW1haW50Cis4NDYxNyBkNTMzMTcxMmI1MDlkNTdmNDI1ZTFhMGQ3NDA0YzkxNzU0YzU5ZTAwIHB5M2sKKzg0NjE5IDc5YTE0ZDM2ODU0MDFjMzUxOWQ4OTE4NWFkY2VhNmZiMDc2Y2NhNWYgcHkzaworODQ2MjAgZTNlZGQyZjliYjZhYzMwNmMxNjRiMWMwMzU3OGQ0YWU2MjBlMTA4ZiBweTNrCis4NDYyMSBlNjBlZjE3NTYxZGNlYzQyNmIyMjFlYTJiMjJjMDkyY2MxZjNlMTJiIHJlbGVhc2UyNy1tYWludAorODQ2MjIgYTBiNGIyZGZkOWQ1YTgxM2NjNDUwOWM3NDAyMWMyZTNkMWVjMjE0ZiByZWxlYXNlMjctbWFpbnQKKzg0NjIzIDg1MTY3MjQ5OGZlNTM0ZGI2ZTY1NTdiZjExOTVhMTYzNjBiYWM4MGQgcHkzaworODQ2MjQgYzQ3ZmYzYTUzYTRhNTFhYWUwMDZmM2E3YWIyNmYzZWY4YjFkYmE2NyByZWxlYXNlMzEtbWFpbnQKKzg0NjI1IDU3NTg0NDQyN2E5NWNmYzE0MTRmZjAwNDZkYTg0OWFkNjczMjRjODYgcmVsZWFzZTI3LW1haW50Cis4NDYyNiBhYTY2ZGY3NzJlMjM3ODQ3YTMzOWUxYTNlZGU0NmY5MTViYTg0YWI0IHJlbGVhc2UyNy1tYWludAorODQ2MjcgZjhmNjZlYmNkNWIxZWI3MWEzYzgyYWZiMWVhYjY5OTFlYWM1YzcwZCByZWxlYXNlMjctbWFpbnQKKzg0NjI4IGRjNTk4NmQwZTVhNDQzMTZjMjcyYzc4M2FkMWEzYWI0Y2FlY2RmMzAgcmVsZWFzZTMxLW1haW50Cis4NDYyOSBhNGNmZDViNWRmOTY2OTc1MzFjOWU4NTM4ZjhmZWI2NjcwYjI4NDI1IHB5M2sKKzg0NjMwIDQ1YjIzZjNmN2Y2YjllY2NkNDRlZDIzOTU5ODZlZTBmZDQ4NzNjYTIgcmVsZWFzZTMxLW1haW50Cis4NDYzMSAyOTdmNjZjYjM3NjQ0YTQ1MjcwODc0OWE0MDM2NjJhZDhkNzgwZTFiIHB5M2sKKzg0NjMyIGIxODY1Y2E3YjY1YzE0NmNlMGZjNWEyYmU0ZTFhMmJjM2Q5MmUzNTcgcHkzaworODQ2MzMgN2MyZWI1YjZjYzU4YzY0YmJlMDcxMTZkOGY5ODVlMmQ2OWE3YmUzMSBweTNrCis4NDYzNCA4NjI3YzNlYzk3MTEyNmY0MDk0NzkxYmU4ZDUzZjBkNjUxY2E4NzUzIHB5M2sKKzg0NjM1IGEyYWVkZGMxOWI2NmI1YzM4ZTUyMTlhYzMxYjZlNmU5ZTEyN2I4ZDEgcHkzaworODQ2MzYgYjFjZjNmN2YzMDRjZjA4NGRmNGUxOTllMDIyY2Y3ZGQ3YTNhNTA5OCBweTNrCis4NDYzNyAxMzIyMjY2Zjk2MTE1YWQ1MjdjMDRlZTYxMTBhMWZiYTViZjNjNzAxIHJlbGVhc2UyNy1tYWludAorODQ2MzggNDQxZTk0Y2U0MDg3MTZmYWQ2NzVkZDAyYTE1YWMzZmI0ODliNDFkMCBweTNrCis4NDYzOSBjYWYwYjRiMDU2OWVhZDA3MjI3YjYxNDIwN2YyY2I4ZDI1ODQ5ODFhIHB5M2sKKzg0NjQwIGE1OGJmNjY3MjVmODZmMGMwZjg4NGRiZGFjYjI3MTdkNWVhZmExZmMgcHkzaworODQ2NDEgZjhjODk2YWQ3ODdmOGQwOGIzNzI1ZTY0YjcxYWViMDA1MjZiOWZkOCBweTNrCis4NDY0MiAyYzU0NzIxMGY4YzlmOTJhZTFmYWRiNzI3MGM3N2IxNmVjMWMyNDhhIHB5M2sKKzg0NjQzIDQ2MmUwYmUzYjZjNDZmNmY3ZmU2YjkwYWU5MTEyNTcxMmQzNzhjYjIgcHkzaworODQ2NDQgYzg4NTUwY2EwZmFmYjY0YWU1OTljYWQwNjQwNTNhOGU2Y2Y1OGY0ZCBweTNrCis4NDY0NSA2MzYxOWI0MjVlY2FhMzkxNGZmYTZjZTlkMzljYjBlZTcxZmNjMjE5IHB5M2sKKzg0NjQ2IGZlYTg2YzVlMzM4NTg5MGE1M2UzNDBhMTcwZDVhMWY4NDlmMGQ3MTYgcHkzaworODQ2NDcgNzFiMjY0ZTFiYjcxNjQ0Nzc5MTFiMThjNWQ1ZTZjNjU4ZmRmMGU4YiBweTNrCis4NDY0OCA5NjU5ZThjNDAwNzliMjlmMjZlNWJkZDQyYjc0ZTIxOGRiZGU3YTFiIHB5M2sKKzg0NjQ5IGJhNTQwOTZiN2E0Mjg5MGVmYWI5YjkxOWNiZDBiNzY3NjYwNDEwYjggcHkzaworODQ2NTAgMzhjYTYzNTE4MDg1ZjU3NGU0MDEzMjA0Y2Q1MjgzNDE3ODQ2MDg2NyBweTNrCis4NDY1MSBhNTFmNDY3ZjVlMWU4MGIwMGE1OTQzYjQzNTY3NjY3YjgzMzE3ZGRkIHJlbGVhc2UzMS1tYWludAorODQ2NTIgZDEzYzJmOTBjMTY5YWE3NmEyZjA2NzQ0Nzk3Y2NkOTlhOTQ0ODI4NyByZWxlYXNlMjctbWFpbnQKKzg0NjUzIDAyN2Y4MTU3OWI0YTBhYzAxZjU2MmU1ZGE2NzI1N2MxNGFhODI1NzggcHkzaworODQ2NTQgZDQ5MjcxNTRiNzdiOGYyMzYxMGRmMTllMTQxNmNiYWI2OTkzNjg1NiByZWxlYXNlMzEtbWFpbnQKKzg0NjU1IGZjNzZlOGM2MTdkYzQ3Yzc3OWQwYzM5NDk3OGIyOGFiMWUyNTMyZjIgcHkzaworODQ2NTYgYWU0NzA3OTQ5Y2IyNDYwOTFmYmI2MmU2MTkwNDgzZDYyMjVlNmYyYiByZWxlYXNlMzEtbWFpbnQKKzg0NjU3IDFiN2VhNDNlNWM3OTY3YjU1MzZlNGNlMzdjZWMwOWFhNTQ2YjU2YjkgcHkzaworODQ2NTggNmYxNGYwMjM1OWU4MGFiMzhmY2QyNzQ1ZGJjMjdhZDE2YTQwYTE1NSBweTNrCis4NDY1OSA4NDIxN2IyZDhjMGMwNmNkNjk4ZmE2MGM1MjZlZTQ0Mjg3ZmQ5ZjJlIHB5M2sKKzg0NjYwIGJlZTY4M2NhZTcxZmM3OWRlOTBmOGI2ODZlNDY2ZGVhZjc0NzEwYTEgcmVsZWFzZTMxLW1haW50Cis4NDY2MSBmMTIwN2Q5YTliMDdjMTM2Y2M5MTIyYzMxZDgyMTJhN2MzZDcwMGMyIHJlbGVhc2UyNy1tYWludAorODQ2NjIgMmRhNWVjZDIyNGZmZTdmZTc0OWNjN2FmM2MwZjQ2MjliOTVlMGU2ZSByZWxlYXNlMjctbWFpbnQKKzg0NjYzIDVhYmFjZDM1MTQ4NTFkYTI3NGExZGE3YWNlZThhNWI3MTJiMTdjYmEgcmVsZWFzZTI3LW1haW50Cis4NDY2NCBiMzA0MzM2ZTBlMzViNDc4ZDUwZDljMTdhYmI2YmRlMzRiYjVkZTU1IHB5M2sKKzg0NjY1IGVkZDA1NmM0YTQwZDIyMjU2MGQ2OTEyMmVkNzFkYTg1YWZiYmE1NWQgcmVsZWFzZTI3LW1haW50Cis4NDY2NiBiOGU1MTI1ZTZmYmQ3MzZiMTQzOTEzOWVhNDEwM2VlNmQ0YzQ3NjgzIHB5M2sKKzg0NjY3IDQ1N2FhOGRhNDkwYTg3N2ZlYWMwNTJhZjA0NDM2ZDQ3MTAwNGQ2MjcgcmVsZWFzZTI3LW1haW50Cis4NDY2OCBjMjBkZTk2YTQzNWFjNjA5NTA0ZTIyNzk5ZTA2ZWE5NTZkNmIxNDI3IHJlbGVhc2UzMS1tYWludAorODQ2NjkgOWZhYTgwZDAxMTFmMWYzMmVlYjQ3M2RhOWU1ZDUxZWIyMjlkMjFmZCBweTNrCis4NDY3MCBiMzE0YWRjOWJjZGVlYWRkMDFlYTMzMGIwYWMzN2JmMjk3Zjg4YzUzIHJlbGVhc2UzMS1tYWludAorODQ2NzEgMmVlYTg5ZDA5M2UyMTQyMTA4YWFiMDc0MGYzMDc1MGFkNDU4ODBlZSBweTNrCis4NDY3MiBjNjY2OWY0YmY4YzU0ZWRjNTUzY2NiY2MzMTdjNjhkMGFlMzhhOTBhIHB5M2sKKzg0NjczIGQwZjlhZmNiMDYxOWVlYjA4ZTI3NWQ1NGJmODA1MzgyOGY2NmMwMzEgcHkzaworODQ2NzQgMzc4ZTE1N2FjMDI1ZmM5OWFlZWE5NGI2MzMyNDg5ZDVhYjVlZDk5NyBweTNrCis4NDY3NSBiNDNkNjNiZjBmNzhmMTA0NTQzYTY4ZjI5ODkxZGRhM2Y3Yjg0ZTM4IHJlbGVhc2UzMS1tYWludAorODQ2NzYgMjFhZTQwNDZlNDcxMDFkOTJjNjNhZGJmOGM0N2VhNjViMTljYzE5OCByZWxlYXNlMjctbWFpbnQKKzg0Njc3IDdlMmNlYjVkMjhlMzM5MzJmZTIxNTU2NzA4ODUwZTYxN2Y0NTdmMTcgcHkzaworODQ2NzggMzkwYWNmNTEzNGU5NGFhNGMyMmJkNmMzODM3OWQyMTVmZTU3ZThlOCByZWxlYXNlMzEtbWFpbnQKKzg0Njc5IDVjNGJlNjNjYWI0YTIyZTE5MDQ4ZjVmOGMzZWEyMTg0YzJlMzA5MTggcHkzaworODQ2ODAgOTMzOTczOGY4NTA0Zjg4MzcyMDlmZDJkNTY5N2IyMzc2NGM0NTJlMiBweTNrCis4NDY4MSAxNmE0MmQ1ZjIyMDljM2NhMTM5ZWI4NGUyN2EwYzMwNGY2MzBhZTY3IHB5M2sKKzg0NjgyIDlmMGQ2OWNhZWQzYjJkZTE2ODU4ZmMwOGZjNTg3N2Q3NmQ4MjcwZDggcmVsZWFzZTMxLW1haW50Cis4NDY4MyBlMjcwMzBlMGNjZWRhOGU4ODc5OTg3Yjg5Mzk3YTY1YjI2NDYwNjM4IHJlbGVhc2UyNy1tYWludAorODQ2ODQgY2FlY2I2ZWJjODNjMmE1NmEwZmM4YWMwYmQ1Njk0N2IyMzBkMDA5ZCBweTNrCis4NDY4NSAyNWNjMjI2ZGM5YmQ0YWIwZTI0ZTQ4MjQ2YWQ3MzlmZjAyYzQ4MjIxIHB5M2sKKzg0Njg2IDI1Mjg5NWQ0OTE1NzBkNWEyNzQ1MjgwOWI1ODI3MTdiZTQwOWIyNGQgcHkzaworODQ2ODcgOTk5ZDdkMjEyZjE3OTJlMDRjZGYzYThmYzY5YjExODI1NjM2NTEzZiBweTNrCis4NDY4OCA1ODMwNzlkZTM3ZTEzOTBhODIzOGQzMTQ1MTZkMmU2YjUzMGU1NDY1IHB5M2sKKzg0Njg5IDkyNjU3NTJhMWM4M2Q5YTUxOWQxYjEyMDg5Mzg0N2VjZjVlNmM0MWMgcHkzaworODQ2OTAgZTgyN2I5YjhhN2I0YTVlZWEyY2NiYWNiZTBkYTBkYWFhNTAxZDU3YSBweTNrCis4NDY5MSAxMTY3ZTM5M2FhNGQ2YTRlZTBhYTM4Yzc2M2M4YTY5OTkwMzEwZDI0IHJlbGVhc2UyNy1tYWludAorODQ2OTIgNmFjY2MyYzY1Y2I4NDc4MDFlYjdkYzI0NzEwZWQzOWQwYTg3MmNhOCBweTNrCis4NDY5MyA1Njg0NGI3MTZjZDc1NjBhYzEwMDJmZDcwYzE2MTJlNjM0Yzc2YjRkIHB5M2sKKzg0Njk0IDU4NmE0MTFjYWM3YzcwZjg4ODZjOGM3NTBjY2Y5YmIyNzQxMjBjOGIgcHkzaworODQ2OTUgNDcwYTUzNjA1NzBjYzAxZTdlNTllZTQyZDJiM2Q5NThhODYwMGE2ZiBweTNrCis4NDY5NiBhNjA4ZmUxZTg2ZjAwODIyNDQ3YTBkYjU0ZjUzMTM5ODIwNDMwNmJkIHB5M2sKKzg0Njk3IGYzMWUwYzdjMDJlMzMzZDc5MjBlMjMzYTY4NjZmODI5OWY0YTAwYjMgcHkzaworODQ2OTggZTA4MGYxMWZjYTE5YjBkZDIwZmE5ZDA3ODRiZTFkZmI0YzZiMTRiMiBweTNrCis4NDY5OSAxNzY0Nzk2ZTllY2EyZDM1NWU0ZGY3YzBjY2QzMmE2ZDU4NDkyMTk1IHB5M2sKKzg0NzAwIGZlNDdlYTg5NzJlYmU2YmEzZjg4YjYyNTZhYzkxZDc5YTVkNTczYjAgcHkzaworODQ3MDEgODg3ZWYzOTk3NmQzOWRkODVhZmQ4NDExMjFkMjI1ZWRiMmUyNjM4YSBweTNrCis4NDcwMiBlZmM5OWEyMDdiYmU3ZDJkNjI4ZWI2NjYyMzZiMWNiZmFhNjU5MzdkIHJlbGVhc2UzMS1tYWludAorODQ3MDMgMjBhMjE1M2IwZGRhODk1ZDRiMGE0YzFiYWRhMGRjNTRhNjUzZDVmYiBweTNrCis4NDcwNCAxY2ZhZDU1ZGU1YmQ2NjBhMmNjNzI5NmVkNjFlZGYzY2Q1NmYxMmU4IHB5M2sKKzg0NzA1IDVjOWMwNGMyOWIyYzBiZmE4Y2VhZTdiZDM3M2YyM2I0MjRkYzZlMTQgcHkzaworODQ3MDYgZWM5MmE5ZmQ3NzgwNmYwYTc5MTNiZTcwOTM4NmJkZDQ0ZjQyNzliZSBweTNrCis4NDcwNyBmNzJmZDJjZGEzNDQyZjU5NTA0MmM0NGE0MDdmMGVmNzI3NmI5NjcxIHB5M2sKKzg0NzA4IGNiOTEzMDdmNzA3MmViYWM5NGU2YWJlMTk5MTg2NzAwYWU4M2ZhZTMgcmVsZWFzZTI3LW1haW50Cis4NDcwOSBlMGE3YjY5Njg1NWY0MGM5NDkzMmU5ODdjYTU0NTE2YzY4YmM3MjJiIHJlbGVhc2UyNy1tYWludAorODQ3MDkgNTIxZWI3ZmVlNjdhNzgxY2FiNWVkMWY1MzhkY2FjOTdiYTU3OTRkMiBweTNrCis4NDcxMCAxYmU4NzRjZTRlYWVmMzA0NDI0Y2U4ZWNmMzhhOWQ5NzZiMmZkYWRiIHB5M2sKKzg0NzExIDdjZjNiZjAxNTBhNGQ1YzYwMjRjYzcwNDZkMzc3ZDBkNWUyYThlNTYgcHkzaworODQ3MTIgMDA0MjUyMDljNDZlZTI1NTdhNzZhZmI4ZWJjZDBkNmMzNjQ5ZDZkMCByZWxlYXNlMzEtbWFpbnQKKzg0NzEzIDZlYjRhZmJlNzdlODU0ODBjMzcxMDg0ZjFmYjI4N2E3OTdkNDhlZWEgcmVsZWFzZTI3LW1haW50Cis4NDcxNCBkOTA1Yzk0ZjlhZTFkMWFlZGM2MjczNDE2MTVmMWVmZjlhOTA3NGE0IHB5M2sKKzg0NzE1IDhmODFlZDhhY2JiMDI0NDRlYTc0MWE2NjVlNjQ4YTQzZmNhOGI0NDggcmVsZWFzZTMxLW1haW50Cis4NDcxNiA2MDFhMGRlZmQxNWJiMmI5OTJhZjE0MTBmNWNjN2EzMWRmZmQwMDAzIHJlbGVhc2UzMS1tYWludAorODQ3MTcgN2M4ZjM0NTlkOWFmOGE3NmMzMjE2NDc2YmVlYjg2MzA1MDY5NDZmNyBweTNrCis4NDcxOCAxN2E4ZjcwNGYwN2Q4OTQyYjU3YjUyYWQyNTUyNjAxNTZmZTQwY2I3IHJlbGVhc2UzMS1tYWludAorODQ3MTkgZmQ2NzM3YWE4OGRjNDZkZmEzY2U3OWE0MzY0YTczNTFlNjdjYjc0MiBweTNrCis4NDcyMCA1MzM4NThhMjk4OWEyZmI4ZDdkNjhhMDFhMDM4MzhlZTAzNWExMjMyIHJlbGVhc2UzMS1tYWludAorODQ3MjEgYzRlNzIzM2Y1NDhkYmRlOGZlYjY2NzNlYTQzOTU5OWMzOTNlMmJmZiByZWxlYXNlMjctbWFpbnQKKzg0NzIyIGIwMDcwMDFmY2E3MTBjNWMwNjBlZTEzM2FhZThjY2U0Y2I4OTA0M2YgcmVsZWFzZTI3LW1haW50Cis4NDcyMyBhMzUxMDg2MTA1YzUzY2UxNDMzZjY2ZDQ3YmQ5MDNlNWY3MjY0NmUwIHJlbGVhc2UzMS1tYWludAorODQ3MjQgNWYzYTY0NTY0YzUxYTEyODYxYjBhZTFmMWRmZWI0MTQ4OGYzNjE5MyBweTNrCis4NDcyNSA1NjcxNGU5YzYzZWZiODRjOWM1NzJkZWU5NDU2MGJhMTM4MmFlZDUzIHJlbGVhc2UyNy1tYWludAorODQ3MjYgYzM1YjQyYThkYTNmYjg2ZDg3MjE0ODIwNGY1ZGE0NGU1MjdlOTYyMyBweTNrCis4NDcyNyBmM2IxZWVhMTFjZTE5NWJiMzdjMTk0NmUxZDlkNmZhMjIxMDZlYWJiIHB5M2sKKzg0NzI4IGY0MzIwZTEyNGIxZmIxZmI3MDVlOGIxM2UxYzQzN2YwZDg2Y2M0MjggcHkzaworODQ3MjkgYjBjOWE4MmUwZWM1YTMzN2VhNjRmMDI5YjJhZDM3MjFiMzgxZjBiZCByZWxlYXNlMzEtbWFpbnQKKzg0NzMwIDg1MmJiMDUyMTU2YTgxMDljODFiNTEwZTAyZmIyOTk0NzBjZTIwYzMgcHkzaworODQ3MzEgZWQ0M2ViZGEzNWYyZTVkZjM5ODY0ZGMzOTViN2NmMzhhMmY3YTJjZiBweTNrCis4NDczMiA2MzkzOWFmYWY5ODRiNGE3OTBjZmVkNGM1MDdlYzM4MDdhMDRlY2I3IHJlbGVhc2UzMS1tYWludAorODQ3MzMgZWY2ZjAzOTcxZmIzNDg3MGNkMTljMDI1NzljOWNkMDQ5MTllMjA4NSByZWxlYXNlMzEtbWFpbnQKKzg0NzM1IDM4MDhlMzc5ZmMzY2U5M2E3Nzg2OTRmYTkzYjI4YjFkYmJjNDQ1ZmEgcHkzaworODQ3MzYgMzc3NGY0ZGVmNzU0ZjFmOGE2YjVhOWFkOTMxMDI5Nzg1ZjE1YzcyZiByZWxlYXNlMzEtbWFpbnQKKzg0NzM3IGZiOTBmMmZmMTc2NGI5Y2U4MjY5OTZlZWE4ZDZhOWQ5ZWE3MTYyYTQgcHkzaworODQ3MzggNjdlZDZkNGY3MGIxYTY2ZmI5MjZmYWFhZDZhN2JiMjVmOGIwYjA2MyByZWxlYXNlMzEtbWFpbnQKKzg0NzM5IDdhYzBlNjA3YzRkNjYyYTNiZDY0N2M1Mjc3M2VjMzdjMGYzNDg0MTggcmVsZWFzZTI3LW1haW50Cis4NDc0MCBkMmU1ODE5ODkzM2JlNDhiZjFiOWZkMWJhZTgxODMxMTZkYjI1NzU4IHJlbGVhc2UyNy1tYWludAorODQ3NDEgODg2OWIxYjg1NDM0OGM0MDk2ZmNlYWRjZTM4NzdlNzM5NDQ4OWFiZiBweTNrCis4NDc0MiA2M2JkYTc4OWQ3M2I2M2Y3YWE4M2U3MzZlMjM0MDhmNzkxYTZmNTVjIHJlbGVhc2UzMS1tYWludAorODQ3NDMgZmE5NTEwYzc5NjQ4MWEwZDk0NjU4OTg3ZDM0ODE5NzM0Y2Y1NGNiMSBweTNrCis4NDc0NCBiN2UyNDRmMzRjYzgwZDAzYjc1MWE2NzI1NTFhODQxYzJkODJmZTg3IHB5M2sKKzg0NzQ1IDc2YjhkYWRhMDZjYmU2YTkzMjUwMGI4NjQ5NjY3MDNkMmJlMDg0MDYgcmVsZWFzZTMxLW1haW50Cis4NDc0NiA0YjljODUyNmVhNGNiNzBjZTQ4MDgwOGYyYTYzYmM1MzQ2MGFjZTk2IHJlbGVhc2UyNy1tYWludAorODQ3NDcgNmQyODJiNThkOTBhYTJmZDM2YTgxMzA5ODY1NThkNjcyOTlkNGU3YyBweTNrCis4NDc0OCAyYmI0ZGQyYWQ1YjUwNzA3YThhOWUxNDIxZTMyMmU0NjJlYjhmNThjIHB5M2sKKzg0NzQ5IDdhYjU5MjMzZTgzZjY5YjViMzcxZmY3MTE4ODkxNjIwOWNlOTViYTIgcHkzaworODQ3NTAgOTIxMDI5NTA3YWQ3ZDQ0YzQ3NTljOTA2MGJmOWYzZTNkNWMwM2ZiYyBweTNrCis4NDc1MSBjMWI3MDkwNzZiZjYzYTFkMWI3NTIyMjlhNjc5NTE1YTdiODU5NDdjIHB5M2sKKzg0NzUyIDljZGJhNjg2NGViNjBjYTJhNTkzNDQ5MWQxOTVjOTU5OGQ5NzE2NTkgcHkzaworODQ3NTMgYTNlZTg3N2ZlZDg5YjVlZDM3Y2NiOThkMzBjODVkMWVlZDExMGY1MSBweTNrCis4NDc1NCBiMTg2YWZhMzcwZTZkMTA1NWU1MWNmYmRjMjE0NmUyNTNiNjQ2N2QxIHB5M2sKKzg0NzU1IGNmYTExOWMzZTQzY2ZlODcyZGQ1NTNkNTA1MzhiYTUyMDUyOTU1NDAgcHkzaworODQ3NTYgZWU5NjdmMWM3MzFiN2QwMzZmZjA0MzE1ZDA1MDJjYmY4ODYxNTAyNCBweTNrCis4NDc1NyAwZGU4MTY0NzU1M2JhMDRhYjcxNDE3MzZlNGFmMzE3NTIwYzkxZTQ4IHJlbGVhc2UyNy1tYWludAorODQ3NTggOTA2NGZjNTdkM2ZhOTA3ZDExMDFmZjYxMzFiYmE1MDQ5YWFkZWM2YiByZWxlYXNlMzEtbWFpbnQKKzg0NzU5IDFlODliNWVlMDJmODVlZjliMjcwOGNhNDQ2YTlhMTY0MTg1NjY2MDYgcHkzaworODQ3NjAgNTg0YjFlZGExMTQxNDc2M2IwYWZhZDBiNWFiMzgyOTVjMzY2YzkzMCBweTNrCis4NDc2MSAzMTRkNDE2ZjRkMjNlMjhjNjU2ZGQ1NzcwMWU5OTQzMjZhNmI1NTBiIHJlbGVhc2UzMS1tYWludAorODQ3NjIgYjFlNzY2Yzc5YTM2Nzc0OWM5YmUzZWFmYjcyMWNlZDU1Mjg2MmRiOSBweTNrCis4NDc2MyBhZGQ2NjQ5MjRhZTk5MTFjMDRkN2YxZmMzOTU0OGM3YzNlMWFmNjQ2IHB5M2sKKzg0NzY0IGIwZDI2ZThkOGEzMzBhYTU2NDIwMzdiYjE4OWE1NzRkZTJjNWNhYmEgcmVsZWFzZTI3LW1haW50Cis4NDc2NSAyZjgzNzA1MzhmZmJiMTdjM2FjYWQ5ZTY0Y2RiZDEwZWFlYTgzY2M1IHB5M2sKKzg0NzY2IDI4ZTZhNDFjNWJhMGIwNDJkYzhmZGI5MDk4NjNkYTU2ODcyYmJhNjMgcmVsZWFzZTI3LW1haW50Cis4NDc2NyA4MmRiODBiNjBiODdiYmFiZjNhZGY1ODdhZTQ2NThkZDc2MjEzMWI2IHJlbGVhc2UzMS1tYWludAorODQ3NjggZDBmYzM1Nzg3NDY3NDY5NDMyYzQxZWQ3MmI4MjdjZDc3N2M5NjU5ZSByZWxlYXNlMjctbWFpbnQKKzg0NzY5IDFlOTIyZDcxY2U0YmY2YTE4OTczZjUzMzdmODZjMzRlZjc1OGFmMWQgcmVsZWFzZTMxLW1haW50Cis4NDc3MCBiYmE4ZmE4OGQxOWEyMWI5MzgyOWY1ZWRjM2ExOTYxNjU4NjdjODc0IHJlbGVhc2UyNy1tYWludAorODQ3NzEgYTU5YWU5Mzg5MTMxOTM2NTgwNmFjMDljNWM0NzE4YmMxOGUwMWIyMyByZWxlYXNlMjctbWFpbnQKKzg0NzcyIDI3NGEwYmY0Njg3MWVmM2E1OTFmMmI5M2EzMTNlZmM4MjA2OWRkM2IgcmVsZWFzZTI3LW1haW50Cis4NDc3MyA0NDE5OWFhODkzMmI3ZDE0ZDAzYTBlMDMxOGE5YjgwNWE5MGRiYmQyIHJlbGVhc2UyNy1tYWludAorODQ3NzQgNTU3ZTI1MzdjOWFlMjM1MzhkOWRkYjRlYTFlYjQ5YmRjNDU5ZGZlOCBweTNrCis4NDc3NiAzMzBkNzlmY2IzZDNkNTg2MjhmOGNlYWIzNTU4MTUzYzk2NTRhNGFkIHB5M2sKKzg0Nzc3IDBmM2I4ZjkyOGVjMTNkOGY5MWVjNDkwZTViNTI0ZmU5MGJhN2ZhYWMgcmVsZWFzZTI3LW1haW50Cis4NDc3OCAzZDIyZWU2NWU0MDc1YTliMzZiMzcxYzJhNDM4MTUzMzFlNDViNDY4IHJlbGVhc2UyNy1tYWludAorODQ3NzkgMmFkOGQ3Y2JjZWFiYjAxNzIwNTkxMjgyZjEzNTc3NWI0NWU1YmJlOCByZWxlYXNlMjctbWFpbnQKKzg0NzgwIGVhMTIxZjg3MzFhNzhiYjU1NWNhNDI1MGJhZWQ0ZWZkMGM4Y2YzZjMgcHkzaworODQ3ODEgNmZmMGVmMWZjYjNjZDk4ZTUxYjMzNTg3NGE4NjgyYWFlOGVhYTRkZiBweTNrCis4NDc4MiAyMDVmZjJiMDJjNzcxMjBlZTIwYjE3N2RjM2I3NjhiZTc0NjQ3ZjY4IHJlbGVhc2UyNy1tYWludAorODQ3ODMgN2RiZmM3ZWYzOWYyYjYzNmQzMGE4NzY0NTEzMTNkOTc3YzE4ZDgzOSByZWxlYXNlMzEtbWFpbnQKKzg0Nzg0IDU1NzM1NWU0NmJhNjE5ZGU1Mzc2MmY3NTMwZWJkNGVkN2Y5ZWE1Y2YgcHkzaworODQ3ODUgNzdjODljODlmNjBlMTEyMjg5ZmU3OWM0M2Q5N2JlZTI1N2JiYjllNSBweTNrCis4NDc4NiAyZDA4NGFkNDY4ZGJkMDBjOTg5MGNhODE0OTYwMjc3ZGY3ZTJlMzM5IHB5M2sKKzg0Nzg3IDgyMzRkMjZiMTNjMTllZjU2OWQwNDgxODE4YmMwZmQwOTUzZmM5NDQgcmVsZWFzZTI3LW1haW50Cis4NDc4OCA5MWEwMGI2YjEyOGJlZDBkMDRlYzgzZTc5NWZjYTJlMGIzNmZhNGQxIHB5M2sKKzg0Nzg5IGVhODQ4M2Y5ZTU1YWE2NjA5MzMyMGMyZjE0MjJhODY1NGNjMDE5ODcgcHkzaworODQ3OTAgOWY1NWZhYWEzMTkzYWNjNjcyNDJjMzIyZTljNjMzZTQ3ODdjNzZjNiBweTNrCis4NDc5MSBlMmRlYzljMGQxM2NmY2FiYzEwN2FjODRiYzQzZDhmY2M5MmIxMTM1IHB5M2sKKzg0NzkyIGNmYWYwZjdlZTBjMmM5MmVjMzEwN2JkMmJkZDYyNmNiNWUxNDdmMTggcHkzaworODQ3OTMgYTYwZGVlY2FjMjQyNGVmZDBhM2VkMDRiYzNhNTAzYzA5Yzk4OWQyMiByZWxlYXNlMjctbWFpbnQKKzg0Nzk0IDNhMjk2M2I2ZjQ0M2U4NTAxOTA4ZmM3MWNmMDA4MDNiYTQ1ODE5ODkgcHkzaworODQ3OTUgZmJlNWQwOGE5ODY2MTM5OWJmNjU3MWU5MmU4YmM5ZTY3N2E3ZWEzMCBweTNrCis4NDc5NiA2OWVkNWVjYjUwMjZhZGRjYjUyMjM3M2U3YWY1YWZiNmZjNmE2ZjFlIHB5M2sKKzg0Nzk3IDQ0ZTQzYmVkNjc0YTU0ZTU5MTM4NDE4ODExZTI0MTQ4MGE5ZWY2MTMgcHkzaworODQ3OTggZTVmMGZmN2Q3YTA2ZWU5MGIzYzZkYjk5M2E5ZGE1YWUxY2E4MmM4ZCBweTNrCis4NDc5OSA0YTRmYmUwMjI3YWE0OTUyNWZiYWEyYjVlM2Q1ZDA2NmVhYWYzN2IzIHB5M2sKKzg0ODAwIDJkOGU0MDg1OTM1MTJlY2MwZDVkMDE4NTBhODYxM2UyODdkNzQyZDggcmVsZWFzZTI3LW1haW50Cis4NDgwMSAyMGM0NWNkYWQ5Y2YxZThkNDFlNmM1YzkyMDc2YjhhYzUxMjFhZjhjIHJlbGVhc2UzMS1tYWludAorODQ4MDIgYjI3NGE5MGE4ZTJiZGZlMDlhMGEwMDU0M2M4YzM5ZDAzMGViMTM2YiByZWxlYXNlMjctbWFpbnQKKzg0ODAzIGE0MmRiOGY1NGJhMTcwNmQzMThhZDc2ZTViYmZlNzNjYTQyZTgxMWYgcHkzaworODQ4MDQgMTIzZjM1MTRiNDViNTI3YmYyNjIxMDc1NTcxZTQ3MzUyZGJiMTU3ZCByZWxlYXNlMzEtbWFpbnQKKzg0ODA1IGRiOWU2MmMyNjVmZjUwZTU5M2NiMmU0NjdjZGY2NTdkYzJiZWRlMWIgcmVsZWFzZTI3LW1haW50Cis4NDgwNiA3Zjk5YWM1MzAxNGE1NDI4MWY5OWJlZDFjOTJkZTJmNDcyMTU0ODFhIHJlbGVhc2UyNy1tYWludAorODQ4MDcgMGU5NmY5ZmE4NGEyNGE2OWY1YTFjYWE0YzgxMzRlZmZjYWZlMmU5MyBweTNrCis4NDgwOCBmZTVmOWNjNDA3NmViYjc5NmJlN2RhZmM5YzViZTQwOGE2ZTUwNTJhIHJlbGVhc2UyNy1tYWludAorODQ4MDkgODBkMWM3NzM0ZGYyNTdlNDdhOWM2MWJiODRhYTE4ODk0NDdkOWEzOCByZWxlYXNlMzEtbWFpbnQKKzg0ODEwIDBlMjlhZTUxZDliYzZhZTAzYTk3ZjI0NjEzNGZhY2YwN2NjMTg1NjkgcHkzaworODQ4MTEgOTA1ZWU5ZTNkYTZkZTA3MWE4MWQ1NzViY2E5NmI4YTU0OWU1N2M4ZSByZWxlYXNlMzEtbWFpbnQKKzg0ODEyIGVkZWQwY2FlZTYyMTMzMTAwMmU5YWU1OGJkYmZkZGQwMmM5YzdkNzkgcmVsZWFzZTI3LW1haW50Cis4NDgxMyA1MzQ4NTNiYThjZDM2YWI1ZjJjZWVjOGFjN2U4NjVlZDVhOTFmYWY4IHB5M2sKKzg0ODE0IDJiZjJhN2E0ZTE3ZDY0NTJiZTc0MDU2NjY5NmMyMDY3Y2IzMDk0ZjcgcHkzaworODQ4MTUgZDdhZTFiOWYxMGFiN2I2ODAzM2Q4ODc2ZThkNjI2YjUxMTYzZGU0MyByZWxlYXNlMzEtbWFpbnQKKzg0ODE2IDJiOWRlYTJhMmZmZmQ2MjkxMzE2YzRhZDhhMTlkZDk4NjQ4YWQ3MGIgcmVsZWFzZTI3LW1haW50Cis4NDgxNyAwNzFiZDhmMzUzNWFjMGRmY2ViNDA0YTI2MzgwZDQ5NzliZjEyOWQ4IHJlbGVhc2UzMS1tYWludAorODQ4MTggMzk3N2RjMzQ5YWU3OTQzMGEwN2I1ZTk2MDRkM2NmNWIxZTM3NjY0YiBweTNrCis4NDgxOSA5MTUxZDVmYWFlM2Q2YTg3MjRhNWI3NWJkNzIxNjViYjY1MzllZmVkIHB5M2sKKzg0ODIwIGI4MWU4ZTNmYTViYmU2NzZkYmRhMDg0ZmNlYzliYWEwZTA0ODNlOWQgcHkzaworODQ4MjEgZjY0M2Q1M2M1MWJkOGIxNzJjZWIxOTg4ZWJkOGE1MDc3NDBiYjE5YSBweTNrCis4NDgyMiBlNjMzZTNhNmIyNTU2OGZhMGVkYjM5NTQxMjc5ZWQzOWQ5M2IwYzBmIHB5M2sKKzg0ODIzIGI2OTUxYjA1MjE3YjIxYWFjNjg3NzBiM2NlM2Y2MmY3NmY0NTNiM2EgcHkzaworODQ4MjQgMzU4NDhhM2I3ZDhhNWFmYmQyYWQ4MjUwYmY4NjRjY2MzNGQ1NTJjYSByZWxlYXNlMzEtbWFpbnQKKzg0ODI1IDdlZjVjNmJlNzIzMjk3ZmY3NzI2ZGM0M2QyMDc0MmFjYTRhODEzODYgcHkzaworODQ4MjYgOWFmZmI0ZDZlOTdlMmQyZWFlZTNlNzVlMGY0MjU2NGQxNDVmMGEzNyBweTNrCis4NDgyNyBjNzc5ZGU2NDQwNWE5MDNkNDE4YWZjMzE3Y2E2NjcwZTNmMTc5YzZkIHB5M2sKKzg0ODI4IGQ4OGZkZjVjNWIzNzY0MmUxNGI5ZmQ4ZmMzODBjZTVkMzhlNDBlMmUgcHkzaworODQ4MjkgYmVkOTUwY2JkMGMwMWU1MzBkYjY5MWMwYzZiZjJiZjc4MDU4M2E0MCBweTNrCis4NDgzMCA1YjAxODdjMGQwMDI0ODEyY2RjMjBmM2NkZTg0Nzc3NmE5YTFiNWI4IHB5M2sKKzg0ODMxIGJjZTk3OTNmYjU0NTBlZDkxYjU1YWE0MWRkZmY3OWNjNWZlYTliZjIgcmVsZWFzZTI3LW1haW50Cis4NDgzMiBhOTdkMTJlNTQ2NWY3OTUyOTc0ZDRkMGVjODA5YmIwZTA1MjgxYmUzIHJlbGVhc2UzMS1tYWludAorODQ4MzMgNjFkZmM3OTY1N2Q3MzdkMmMwNzJjZWNjMGZhZTAyZDFkMjBhZTNmYyByZWxlYXNlMzEtbWFpbnQKKzg0ODM0IGMwZDMxNjc3NzNhOTczMjM4YmE2OGQ3OTlhMWEyMDYwNDE2MzIwYWMgcmVsZWFzZTI3LW1haW50Cis4NDgzNSBiZWI5ZDE3NjUwM2U0NjJhNDUzYmE3Zjk3ZWY5NzJjZTYzOWUxYWIzIHJlbGVhc2UyNy1tYWludAorODQ4MzYgYWQ2M2Y5NjY5MjNjNDEwMzQxNjNhYWJmMGFmYzgwYzcyNjY1ZjhkOCBweTNrCis4NDgzNyAzZWRjMjYzODBlNDk2YWIwZjNiODZhYmIyN2NiNWY2NTA0OGVhYWRhIHJlbGVhc2UzMS1tYWludAorODQ4MzggMWRlYmZmNDJlYTQ2ZDExM2VjMDBlMDJlMWNhNDAwNjQyOTFjYmE3MiBweTNrCis4NDgzOSBmMmVjMDExNWY4YjIwM2U1MWQ0NzgzNWMwYzkzYWUzYTMwZTc3NTZhIHB5M2sKKzg0ODQwIGExNmI2N2Q0ZjMwMzE2ZDEwY2JjNDEzMWY2YzNmZWFkMjg0YmY4NWEgcHkzaworODQ4NDEgYjU3NzRiMjdiM2RiZDlhZWQyZjg4MTQ4NzAyNWVmY2EzNDhkYzY5MCBweTNrCis4NDg0MyA5ODUwNzJjZDMxZDAzYjgyZmJjOGI1NDU5N2E3MWU4ZTU5MTYwZjIxIHB5M2sKKzg0ODQ0IGQ2NTdlOGE2MDEyNjY0OWNmOTUzNmMzNjJjNGRmZWM4NzM3MzVmMzQgcHkzaworODQ4NDYgZDE3NzFiNGNkMGNiYTgzMmFiN2ExNDQ3MzY2ODg1Mzg4Njc0ZTVjNyByZWxlYXNlMjctbWFpbnQKKzg0ODQ3IDFiZTk1MGRjYmIxYTVmODFhZWNmMmJiNGZlYTRjYTU4M2ExZGQ3MmMgcHkzaworODQ4NDggMjMyNDE2N2VjMDFkM2FhMjBmNjM1MzFlNWM0Mzk2ODk5ZGZkNWMyMCByZWxlYXNlMzEtbWFpbnQKKzg0ODQ5IDNmMDAwNDczNmQyODM5Y2E0NDY0NDBjNGIwZTRjMjdlNzdjYThmN2MgcHkzaworODQ4NTEgZmQ1YzRjZmVkN2NkMGMzYWRiMGIzN2E1YjYzZGJjMzQwOWJjNjcyMSBweTNrCis4NDg1MiBhMTc3ZGRkZTQ1ZDFiNzRhMTY3NzllYmVlNmRmNGVlMjIxNjBmZmQ0IHB5M2sKKzg0ODU2IDU3NjFmOGUzNTJlYzIxZmRkNmU3NjNkOGQwMmMwNmZmNTU4MzBkODcgcHkzaworODQ4NTcgNjg5YTgxM2Y0YWZjMGRkOWQ5NjZiZDA4NzNjNmZmZDRlNTBhMDVmYSBweTNrCis4NDg1OCBhODg2OWFmNWQ1ZDBjYTY3NTI2OWVmNTFlZjRiZTE5ZjFkNmRkOTI2IHJlbGVhc2UyNy1tYWludAorODQ4NTggODI1ODlhODg5ZTA3MGZmNzc3MTFjN2ZjZTY3YTcxZTAyNGVlMGVhMCBweTNrCis4NDg1OSBjNDM4Zjk2MzQ2ZTkwZjFhYmVkZjdiMzE0MWFiZDk3MWVkYTU4OTYzIHJlbGVhc2UyNy1tYWludAorODQ4NTkgZTNjM2MzMGYxNDA5ODA4OGE0ZDFmOThiZTVhYThiN2ZkMzljZDhhMSBweTNrCis4NDg2MCBmYTQ3YWY3M2E2OTFlMDA2YmY3MTA1ZDdlNjU0MTEzNTQ3ODI2MWMxIHJlbGVhc2UyNy1tYWludAorODQ4NjEgY2EzNTQyYWRlZTBkYWViYzJjYWQ2YTY0N2Y2OWJjZGUxODg2ZDA0MiBweTNrCis4NDg2MiBlMDY0MWRiZGM4ZjYyYTdlOWFiNjM3NTVlYTg0NzM2YjZjMTdiM2Y5IHJlbGVhc2UyNy1tYWludAorODQ4NjMgZTM5YWQ1ZGMxMWNmZTRkNzQwMDYzYjE5N2RhOTNhYzcyYzI4YTgxOCByZWxlYXNlMzEtbWFpbnQKKzg0ODY0IGRjNDIyZGFhNWRhZGQwYmZjNTQyODc4NDQyZGE1MWRkY2U3NzQ1YzAgcHkzaworODQ4NjUgYTQzMWM0OGFkNDJiMWExOTgzMWFhNWMxZDQ1YTRjODk5NmU0YTgxNyBweTNrCis4NDg2NiBmNzdjYjhkNzZlOTkxNTdhNDAyMDNhNDRkZWI2ZjUxYjI3ZGFkZDYyIHB5M2sKKzg0ODY3IGNkMmVmNzUyODczNjViNmU5YTU1NGNlMmNjZDZjZDkyNTE3NDhmZGMgcHkzaworODQ4NjggOTM4ZDg0MjU3ZDExMDI2MGRjYzEyNjY2NTZjYTgxZDdjMGM2YjQ5YyByZWxlYXNlMjctbWFpbnQKKzg0ODY5IGM4N2VkNmY1OGI4MzA5ODgxZjExNDIwMGU4N2UxYjVjZDI1ZjI5NzAgcHkzaworODQ4NzAgZGYzOWIwYmM0MTA2NzNiNTgxNjgyYzZlYzFlNDkzYjE3NmViMjc5OSBweTNrCis4NDg3MSAwMDY0OTBmMGU3MWZkNjZlYzUxZDNhNGQ0NGMyMWYzMTZkYmZhYmI4IHB5M2sKKzg0ODcyIDAxZGJiODI3NzE3ODg5NjI1ZmFhNTA3OGY2ODEyZTc3ZTljNjZiM2UgcmVsZWFzZTMxLW1haW50Cis4NDg3MyAxNTE4MTcxNzc1MTQ5YzdjYWRiMWM1MzMyYWMzNDVkYjQxODQxMjRhIHJlbGVhc2UyNy1tYWludAorODQ4NzQgZDA2MDQ3NGUwZTI0NTg1NjQxZGE0OGZmZmFlYzk5ZjZiYTFkZDM3ZiBweTNrCis4NDg3NSAyZjI4MDcyN2EzMDdmNmVkOTZjNzBjZjQ4NWVlNTYxNzYyYzE2ODk3IHB5M2sKKzg0ODc2IDI4NjdhZTkwMmZhMzE0NzM2NDY0M2ZiYWI4MGY1YTRiMmNiOGI1MDEgcHkzaworODQ4NzcgZDM5MDQwMGQ3MWY3Yjk2ZWMyMzFhNGMxZjgyNjgyODc2ZjZhMzYyYyByZWxlYXNlMjctbWFpbnQKKzg0ODc4IGI0OWFlZTM4Nzc5YmMwYTlkYjI2NzE1OGNkYzMzNGViZjk5MWU2MGQgcHkzaworODQ4NzkgNGFhMmEyMGFjMzM1YmYwNWE1YWQ1ZjVlMjllOGNkMzA4MGRlY2NkNSByZWxlYXNlMjctbWFpbnQKKzg0ODgwIDI5ZWFkNTRjMDVhZDg3N2FjMWFmODVhMTBkODRmOGFlOWUyOGUxM2EgcmVsZWFzZTMxLW1haW50Cis4NDg4MSAyZGMxZDE4N2VlMDRhZTNlZDNkMWRhZjc3NDlkMTYxOWY4YzQwMDkzIHJlbGVhc2UyNy1tYWludAorODQ4ODIgNDQ5ZDEwNGUxODM2MjczYWVhZTVkOGI3NjBjZTEzZWQ2ODVlNDJiNCBweTNrCis4NDg4MyA0OTgxY2YwYTljYTRjZjllMTc3ZTkzZTdhMjczYzZjODJhMDU2ZTA0IHB5M2sKKzg0ODg0IDc3NDI1ZjJkN2Q3NjU5NzU3NjQ5MDgzMzgxNTg5ZjUxMTMxYThhNmUgcmVsZWFzZTMxLW1haW50Cis4NDg4NSAwNGI0NWQ0NTEwNTlmNTBmMWVmYWYzMDNmNmQ5ODdkNzM1MjhiNjlmIHJlbGVhc2UyNy1tYWludAorODQ4ODYgOTI5MWFhM2Q4ZDM1NzIzNzc1MmI0YjQ5ZTNiY2JlNGYyZWYyNmMxYiByZWxlYXNlMzEtbWFpbnQKKzg0ODg3IGYzZGNiMzE0YzNlMzAyZTU1NDIyZjg2YzQ2ZWM3NmEzYWU2MDZhMTcgcHkzaworODQ4ODggNzFiOTU5NDJjM2E0OWI4ODkyMmY5MTg4ODYzMGI2Y2JiOGNjMzZlZCBweTNrCis4NDg4OSA5ZGM4NDUyMjQ0ODYxMjk4MTI4OWEyNTdlYmNjYzNhMTk2NDE0YTU2IHB5M2sKKzg0ODkwIGI2OTg0MmI1MGUyNjM4ODI4ZjFiMzRiMzQ2Yzg1Y2EyMjg4YjNiNzkgcmVsZWFzZTI3LW1haW50Cis4NDg5MSA2NWY1ZTJjM2YyZGQxOTE5ODBmZmE2ZDNmZmM5OWRlZGU1NzQ1MDJiIHJlbGVhc2UzMS1tYWludAorODQ4OTIgOTI1ODg5ODZiNzhiZDI4YWRiM2QwMmM5NDg1ZmUxZjk5YTQ3MDg5MCBweTNrCis4NDg5MyBlNTI5NGNhMjdhYmUyZDEyMzA0MGEzZTNkMzk2YzdkY2UxOThiM2I0IHB5M2sKKzg0ODk0IGY3YTc2ZmM5N2IyMjBkZjMyNTljNGQyZTEzMzA2YTllYjEzMjI0ZDYgcmVsZWFzZTMxLW1haW50Cis4NDg5NSA0NTExMzkzMjJhMTMxMTk1ZDcwMDMxYmIzMTQxMzFiOTA3ZGNiNzg0IHB5M2sKKzg0ODk2IGNkNWI5YTcwYTY4NWJiNzMzOTgzMzliZGUxOGNjMDgzNjllYTk2ZDggcmVsZWFzZTI3LW1haW50Cis4NDg5NyA1MDFhZTk0ZTViZjYxNTg0MGRiY2YwMmVjZmQ3YmVjNjUyM2I0MjI3IHB5M2sKKzg0ODk4IDQ0Yzg5YzU5OTNjODNhMTg5NzdkMzZjOGRlMGEyMTI0NTliMTY0ODcgcmVsZWFzZTI3LW1haW50Cis4NDg5OSAwYWNlOWVlZjEyMGJlMWYxZjFhNDk1NDJjMGEyMzc3ZDJkOGQ3Njg2IHB5M2sKKzg0OTAwIGE0OGUwMzFkODE3OGZiODBjYTBhOWVjMzM2ZmNhYWQxNWE3OWFiMDIgcmVsZWFzZTMxLW1haW50Cis4NDkwMSA3ODVhOTZmY2QzNDBkZjJkNTk0ZmE1MTdhYzQxZTBhZjRlZWExZWU1IHJlbGVhc2UyNy1tYWludAorODQ5MDIgYjI5ZTg1NTYwMTVjYjczMTBhMTg1ODcwZTZmYzlhZTIyMTE0MjQxNyBweTNrCis4NDkwMyBhMDU0MzMwNjA5NDExODZlMTk5NGFhZGIwNmVhYTY5NWVkOTg1YmEwIHB5M2sKKzg0OTA0IDUzNGFmOTFmMzg0NTQwNjJmZTI2ZGM3MTc4MmZkZWVkNjNmM2RjZjAgcmVsZWFzZTI3LW1haW50Cis4NDkwNSA5MzNkNGI1YjdmM2Q2OGI3ODQ1NWI5MTlhNWJiZDNmYzc0Zjk2MDVkIHB5M2sKKzg0OTA2IDc2MDUxZWIwNzQyMmM3ODhmMzVkMzJjOThhMjIwMDc0ZWFkNWQ3ZGMgcHkzaworODQ5MDcgOGRmYmY2NmYzNjljZjVhMmU3YWE1NjJlN2Q4NDg4ZTE3OWU3OTM0YiBweTNrCis4NDkwOCBkZDMwODBiODBkZGE5MTk0NTU3ZGNmMjM0YTc5Yjk0MWJhN2JhZDMwIHB5M2sKKzg0OTA5IDQzNzRiMWVhZWFkMTc3NmY1YjkyZDY4YmQyODY0NzIxZDg4NjRiOWUgcHkzaworODQ5MTAgMTdlYzllZDUwMTMzYjhiYWVkZGE2MGUyODMyM2M2NzY0ZGExNDYyMyBweTNrCis4NDkxMSAwMzY1ODUzODJkZTE5YmI5N2YxNTEwYzAyYTcxMTZmNWY1NmE0MGE3IHB5M2sKKzg0OTEyIDRmNGJkZGRhYzI1YjIzYjY1MzI0YjZkYjM3ZDg5NDdjOTY3N2JlYjQgcHkzaworODQ5MTMgNzZmZDY4YmJhMWE4ODVhNDVmMDc0NzFkYWJiZmFmZDYyZGY4MmUyNiBweTNrCis4NDkxNCA4ZTQyOGI4ZTdkODE1ODZlMjNiNWY5MmY5Y2E5YjE4ZGFmMTRmNDQ5IHB5M2sKKzg0OTE1IDZjNzc3NTdkMDg4MTE1YTAxY2RkMjkzMWYwMDJkNzA2ODdhMmUzMDIgcHkzaworODQ5MTYgYjU1NzI1MzU5OGIxZjljZDM4MDIwMzNiMDFmOWQ3YmUzZTcwNDE4OCBweTNrCis4NDkxNyBlYzAyODA2NzA0OWRhNjdjNzUxZDI3OTg1OGRiNzFkN2JmNmQ0MGQ2IHB5M2sKKzg0OTE4IDJjZGRmODc4ZTM5NTU1M2I2ZmFlOTc5OTcyMzhhMWU5NTQ1ZDRlNjIgcHkzaworODQ5MTkgY2Y4ODE3MTQ5OWI1YTc4NTBiZWVlN2FlYmRhNDJmZWVkYzE1NjQ1MyBweTNrCis4NDkyMCAzYTRhZmFhOTZhYzMzMjNjMGRjNDU3MzEzMTkxZmFiMDRlNTc3ZTZiIHB5M2sKKzg0OTIxIDQ4NmMyZDZhNzU0NjVkMDFmNjE2YmExNmFjOGE1MGQ2YWM3YjI5ZDUgcHkzaworODQ5MjIgYTg4ZGZmMjdiZTFmN2IyZWIwOWQwOTgwNGJmNGQ5ZmExNDliMjQ5NyBweTNrCis4NDkyMyBmMzViZDA4YzEyYWVmMmM0NmI0ZGI3OWE4Y2ZhN2ZkZTliYWZjMzk5IHJlbGVhc2UzMS1tYWludAorODQ5MjQgNmJkMjc2ZjVkMWJjZTc5OTY3NWY4YzgxMWYxYjgyNzk4M2UyYjBkMyByZWxlYXNlMjctbWFpbnQKKzg0OTI1IDk2ZGI2NDA2NzRjYjdhYWE1M2VmMDk0MWQ5NjI3N2Y1NDkyOWJlMjAgcHkzaworODQ5MjYgM2NhY2UxMjg5ZGU0ODhiYWNmNjIwYmExNGVkNDRjODc1ZjUxOTRiNiBweTNrCis4NDkyNyAzOGIwZDVkMGRkMzBlNTBhNzMwM2U0ZjQzZDY1ZWZkYjFjZWZhYTQ1IHB5M2sKKzg0OTI4IDBkMGYxZGI2MzQzMTNmMzYzMTNlMTRiOTlhM2I1MmNiNjhmOGQ4NWIgcHkzaworODQ5MjkgMDBlNGNlMzFkNDA0MGQ1YzM0YjY1N2RkMTc5Y2VhNTk2NTY4MjNkMSBweTNrCis4NDkzMCBhNmFmOWM3YzhlNjdlOGU0NmM3OTc4MDliODEzYzc2ODUwYWM4OGU4IHB5M2sKKzg0OTMxIDg2MWMzNWNlZjdhYTllNTIyNmQ0Y2MyZWIxZTllYjUyOWExYzk4NDggcHkzaworODQ5MzIgMmM3M2U2Y2U2YTc1Njg0NjhjNzM4MzZhMWM3MjYzY2ViYjE2NjgyMiByZWxlYXNlMjctbWFpbnQKKzg0OTMzIGJmMDExZTMwZmMwNzYyN2I1MjhhYjhjZjE1Yjg1NGQ0OTc4YTZkZDEgcHkzaworODQ5MzQgNDdiMTBlNGE1MWQ3ZThkNGMwZGZmNzY0ZTQ4ZWMyZmE3NjczYmJlNyByZWxlYXNlMzEtbWFpbnQKKzg0OTM1IDM2NGQ2ZWY3Y2NhZTRjYzI0MTc3ZWU0NThkN2QzYzk5OWMzZDQ3Y2EgcmVsZWFzZTI3LW1haW50Cis4NDkzNiBlOTA0Mjc5ODQ0NDJjZjViOTg5YmRiMzA0YzBhNWUzM2ZhZDE1ZTU3IHB5M2sKKzg0OTM3IDYwMzY3OWQ4NTMyOTMwODkyYTJkODg3ZjA1NmYwODg5NDdlZTY4OTkgcHkzaworODQ5MzggN2Q0NWY1MzlkYjk3YzgxMWYyYzU3NWYwZTZhNDkxMTM3ZTQwYmE1MSBweTNrCis4NDkzOSBiMWVjNDhiN2ZmZGZmZWI1MmFmZGYyYjI3NWU4NjUyZWU3NjEzM2EyIHJlbGVhc2UyNy1tYWludAorODQ5NDAgZDhiYjk4ZTQyYzJmZmNhMzhlOGZhN2M2OGZmM2UxNWFkY2RmYzU0OSByZWxlYXNlMzEtbWFpbnQKKzg0OTQxIGY4Y2U5ZjM1OWYzYTY0ZjkxZGQyNWM2ZWYxMWEzYTgzOTYwZmU1ZTYgcHkzaworODQ5NDIgYTBlMGNiODkzZTMxZTMyMGNhZWM3ODFhYjVlYzJkNzg2Y2VkM2MxZCByZWxlYXNlMjctbWFpbnQKKzg0OTQzIDMzNTlkMmUwYTk2NzE3MDliZmQ2MGNlM2QwMjZkNzdiNDVjNWJiZWEgcmVsZWFzZTMxLW1haW50Cis4NDk0NCBlNTlhMTg4MjU4YjM0ODgzOGZmN2Q2MjQ0YzA4ZjNkMGIyNTkzZTM0IHB5M2sKKzg0OTQ1IGQ2ZDY1NWZkZGYyMmFjZWNkYzY5YzE1YzNlYjM3YzJmMjU1N2I2ZDggcHkzaworODQ5NDYgNDg4OWE4MTZlZWMxNjlkOGFhOTVkY2QyZWFiNzYzM2Y1NjM4MGIxNiBweTNrCis4NDk0NyBiMWY1MTM0YjAwNDliZDY4ZWFkOTk1ZDU4NWMyY2EzMWYzZmM5NWFlIHJlbGVhc2UzMS1tYWludAorODQ5NDggNGVjMTIxMTU2ZWU5ZWY0OTI3MGZmNDFkNWM4M2MyYmM5ODRiOGYwZSByZWxlYXNlMjctbWFpbnQKKzg0OTQ5IGE0ZWU4YTVjNjg0MzcyNDQ1ZDg2MGViYWYzMDUwMzM2OGQ1NGJmNjIgcHkzaworODQ5NTAgOWFkNjlmYzRhZWY3NWQxYzMwMWY4NWU0MDdjYWQ5OGQ4NjRkOTBkZiBweTNrCis4NDk1MSA4Y2VlYjU5ZjQ1NTBhZjUxZGE0NzQ1MDhmNjhlOWExZmJhNzIzMTYyIHJlbGVhc2UyNy1tYWludAorODQ5NTIgMDhiZDFhMDhjNjJmNzVlNGQ2MzkzYWVkZjUzNTMxODA0MjdjZWE1YyBweTNrCis4NDk1MyAyYjkzMjc3Nzc4MzJhMjQ0YWYyMWZmNzJhYWU4NWQwYzk0MDMwZGI4IHB5M2sKKzg0OTU0IDllMjIxNjQyMGNkNzk1YjI5YjM3OGY4NjZhMzBhODk2YWFlZjJhNWMgcmVsZWFzZTMxLW1haW50Cis4NDk1NSBjNTM3NzBiMTU0NmRhZDRiOTI5OTU5Y2UzNTNjNzMyMjkyYzk2MWUzIHJlbGVhc2UyNy1tYWludAorODQ5NTYgYzllZGJjZTNmY2FkOGM2Y2QyZDU0MzEwMmExYmU3MGJjZmExNTVjNCBweTNrCis4NDk1NyBlMWM4ZWIzOTA1MDcwMjhhOTEwMjBkNmI2OTc2MjQzYjU5YTEwMjJjIHB5M2sKKzg0OTU4IDA1YTVmNzFjMWE3OGY3ZGNkOGQ5OTQ2MDMyMTAwMzRmNjJlYTJiMmMgcmVsZWFzZTI3LW1haW50Cis4NDk1OSA4MjA4YTQzMTkxZTI5YzkyNDcwMGE5MDg4YjhjY2UxYzk4MDEyOWQ2IHJlbGVhc2UzMS1tYWludAorODQ5NjAgOGFjNzBiMTJjYTYxZmFlMjE0ODc0MDY3NDNlMWEzMmI4ZjQ3Zjc2NiByZWxlYXNlMzEtbWFpbnQKKzg0OTYxIGIzZDBkZWFmNTBlNTIzMmM2ZDliZWM3NWI0MDZkNWJlZGIyYzM5Y2MgcHkzaworODQ5NjIgZDVmZTA0MGY0YTQ4YTI3ODBmZTMzMTJkOTM4MThkNTg4MDA4MzU4MiBweTNrCis4NDk2MyA2YjlmODhkZGI0Y2VlOTE0OWExY2ZkNWY3OTAzZjdiNDEzODkzZjc4IHB5M2sKKzg0OTY0IGYyY2VlYWFhYzkzODBiNTQyM2UyYzUzZDNkOTY1MWEyYWYwNWFmMTkgcmVsZWFzZTI3LW1haW50Cis4NDk2NSBlYmNkODExNTU4ZDY3ZDYwNDY3YTIyNTAwY2FmMTJiYWUyNGRiZjZkIHB5M2sKKzg0OTY2IDM0NzRjZWU5Yzc1OGE4NmU5NDI3ZTMxZTFmNTczN2NmZmQ1YmZkMjEgcHkzaworODQ5NjcgZDUwMDFkNmM3NzM2OGVmYmRhZWYzMzYyOWIxOTIyNTYzMjFjNTA3MiBweTNrCis4NDk2OCBmNzAzYTY0M2U2Y2UwN2I4YzE5NThmZTBhNzRkODFmNjIwMzFmMTVmIHB5M2sKKzg0OTY5IDIyNWE2ZDFjZjgxMWY3MGE3NDgzMjExOGRiZTQxNjVhOTQ5ODNlMDIgcHkzaworODQ5NzAgOWVhNTA0ZDQ1ZWVhYTdlMWJmNDI4ZjhhNjQyOWRiYmNhZjA1NzljNyBweTNrCis4NDk3MSA5NmU3ZWUyMzJhYmYxMWUyZGNiODNhYzE3YThlOTY2NGU5ZDhlYjMzIHB5M2sKKzg0OTcyIGRmZDU1ODRlYjFhY2I1OTliZDQyYmVlNGE4MjI0Y2JmOWU5NGM2MTUgcmVsZWFzZTI3LW1haW50Cis4NDk3MyBhNjc2YWMwNmVhY2MwODdkNjgxY2QzNzA2NzcxY2FlOGUyMDgwODVkIHB5M2sKKzg0OTc0IGZmOTJjYzM1NmMzNTgzMTM0YTJjNTM1ZGY0ZThlNjEyZDZlOGE3NWYgcHkzaworODQ5NzUgZWUxNTI4NTJjOTRkZjk0Njc0MmY2OTBmZTYyZmFhZDlhZWJiNDg2OSByZWxlYXNlMjctbWFpbnQKKzg0OTc2IGY0YTFjNzk2YmM5ODc0NTNlNTY4ZjYyYzViYTRiNWVjMmNjNmE3Y2MgcHkzaworODQ5NzcgNjMzYzZiMTFhNWE5ZTc4NTFhZjk3MTM2NmZhYzkzMTJhYzI0ZjU5ZCBweTNrCis4NDk3OCBkNTYwZWVjZTA4NTdmMDZjM2QwZDUzZDhiZTY4NmNkNTBmYzE5ZThkIHB5M2sKKzg0OTc5IGUzMTQ5MmY0NDBjOWU4ZTUxYTliZTJiNWMzZTFiMDdmMzQwNGM4NjMgcHkzaworODQ5ODAgYTBlY2I4ZTJkNzY5ZTdhM2MyNmFmZmVjYTU1YzA4ZWU5MDNlZGM1ZCBweTNrCis4NDk4MSA1MWQ4ZmZmY2QyNjBlODBhYTI1ZDUzMTE4MDA2MmYzN2ZjYzU4NDJkIHJlbGVhc2UzMS1tYWludAorODQ5ODIgMjBmMzQ1ZmMwMzYxMTRiOTRmNWY5OWZhZTQ3NjQ1Y2Y5ZTgyOWE0MiByZWxlYXNlMjctbWFpbnQKKzg0OTgzIGQwODhmYWEzNTQ1NmVhZmI3ZTYyNTQ1MzIyZGI0MTllNGY4YmFmOTMgcHkzaworODQ5ODQgMmU1YmRlMzgzYTVjNzRhYTE4ZjJlNDRjYWY2MDFhM2RmZDJhOTJhNiBweTNrCis4NDk4NSAwYzc3ZDAwZjRmODI0ZTI4OGI0YjgxNDhiZmUxN2ZmZGM5MmIzNmFiIHB5M2sKKzg0OTg2IGFiM2Q5MmZlYTlmZGE1ZTViZjlkZTdlNzUyZTA5MmFmMjE0ODMxNTEgcmVsZWFzZTMxLW1haW50Cis4NDk4NyAxZGViY2NmYmNiYzlhOGVlZDA4YTM5NTA2YzBjMDY3NzcwYmRlODE4IHB5M2sKKzg0OTg4IDI4ZDQxZDM0YTJlNjE1NTkwNTU0OGQ1M2IzNjYyYTMzZDljMmIzOTMgcHkzaworODQ5ODkgN2FjYTQ1ODQ2MWFiMjcxZTcwM2ZmOGJlMTU0YzM4NjkxODIwNDhjYiBweTNrCis4NDk5MCA3OTUyY2ZhYmJiODg3NWY5ODc0ZTc2MjdkZjRhYmVhOGFlZTk3ZTgxIHJlbGVhc2UzMS1tYWludAorODQ5OTEgODdhZmU0NzQyOWM1NmQxN2Y0OTU0NTUwYmU3Mjg1Y2Q2ZWZjMmE0NCBweTNrCis4NDk5MiBhYTU2ZWJiOGZlOTQ3MzRhMzJmMTA5Y2MwZWE4NTBkOWU1MWM3ODY3IHB5M2sKKzg0OTkzIDI2MGRjN2RlMWU4N2JlOWI1YWI3ZmUzYWNhMmYxZmM4MjA0Yzk5NjcgcHkzaworODQ5OTQgMDA3MjI4ZDBlNTY5ODQ2MzFlODgwMGU3NmI4MTllMWU4YjY4MjdmMCBweTNrCis4NDk5NSAyMzUwNDRiMzlhOTIxMWE1NmJiNGQ0Yzk2Y2RlZTc5OGUxOWJlYjMwIHJlbGVhc2UzMS1tYWludAorODQ5OTYgMTJlMGRmZmVmN2JkMjQ4MjViYjNiZDc5MzVlMzQ0NzY2ZTA3ZTM3OSByZWxlYXNlMjctbWFpbnQKKzg0OTk3IGY2YTBlYjczMGE5Yjc4NGJjMGI0N2YzY2E1ZGM4ZGQwMjNkNzk1ZjYgcHkzaworODQ5OTggOGNjNGJlNjQ4YWI0OTA2ZGRiNGQ2YzFiNjVhNjE2ODEwZDcxYmU0YSByZWxlYXNlMjctbWFpbnQKKzg0OTk5IDI2MGRjMzZjMmM4NjFlZjdiY2NhODllZDRlODI4NTc4MGNiYjFjMjAgcHkzaworODUwMDAgYjk0NTNkNTA0ZjhjYTRhZWZhMjg1ZGY0ZDEzYjI0ZmNmMDk0YmYyZCBweTNrCis4NTAwMSBiMjc4ZDkzZjk1OGVlYzE4NDM4MzAxMDAxMmVlZmUzODRmMGU4MjA0IHJlbGVhc2UzMS1tYWludAorODUwMDIgZTViNzA3OTM1NjZlZGRhNWVlNGFlY2U1MzQ3MTAyODU2MDJlNjc3YyByZWxlYXNlMjctbWFpbnQKKzg1MDAzIGM5ZTI5OTI0OTMyMzgyNWY2M2JiZWU4YTA4ODcyNWZjMjIyMWI2YjYgcHkzaworODUwMDQgOTc3NGMxMWUwM2Y2YjBiOGQ4NTMyYjEyMDU3MTdjMDJkNzFlNDM1OSByZWxlYXNlMjctbWFpbnQKKzg1MDA1IDRjZDBlZGYwYjM1NjE5NzBkZmJhNWJkMGJlYjkyYjM0M2Y2ZmQ5MzUgcHkzaworODUwMDYgYzliMDhjNThmMDYzMGI5MWM5YjNmODgyYTU4Mzg5NmMyZTJhMzNjMiByZWxlYXNlMjctbWFpbnQKKzg1MDA4IDBiNDhjNmY4NjcxZmQ0ZTMwYzE5OGJlZGNkNTU2MjRkYmM2YThmZDAgcHkzaworODUwMDkgYzUyZjc1YzNmYmEyZDg2NDk4YTA1Mzk2ZjMyYTc5MTFjMWIwZjhiNyByZWxlYXNlMjctbWFpbnQKKzg1MDEwIDY1MTExNjVlNDgzMGQ4ZmY2ODQ2ZDQ3OTk1ZGI3ZjFiMmUzNGMxMjYgcmVsZWFzZTI3LW1haW50Cis4NTAxMSBiYzdkODgwOGYxOTVjOWQyNTE0N2M3YWYwMzQwZjgzZTkxMDAyYjczIHB5M2sKKzg1MDEyIDI2NWY3MDE3NzcyYjg3MTEyZjA2NTYxZTdiNTFiMzY3YmVmZDIxOWUgcmVsZWFzZTI3LW1haW50Cis4NTAxMiA0M2ZkOWUyYjVlN2QxZmMzY2JjNGNmY2M3MTEwMTZkN2YxNzJjZDA5IHB5M2sKKzg1MDEzIDYzYmE3YTRlN2MxMDIyMzFhZjY3MzFhNTRmNjgwZDI4NzUxOWU1ZTIgcmVsZWFzZTI3LW1haW50Cis4NTAxMyA0MDlkNmM3NmMzMDdlNDMwY2YyMjRmYzhlNmU2MTc0NzgxNzZhMTBkIHB5M2sKKzg1MDE1IDQwM2FmMzVmNDk0ODdiOTRlNjgxMTBjYzc3M2UzNTM5ZDE1MDdjMjcgcHkzaworODUwMTYgNmM2OGRiZjkzMmQwNjg0ZjBlM2U4NzRlZDc1YTFjYzM1NDY4YWRjNSByZWxlYXNlMjctbWFpbnQKKzg1MDE3IGFjOGFhMjI1YzQxNzVhZmRhY2EzMjg3YTZlNmRkMzAzZGNkZWU2OTcgcmVsZWFzZTI3LW1haW50Cis4NTAxNyAyOGU4ZmZiMmFjY2I2OTg0NWIxMWRiZTllOTA3MjQ1MzlkMTg4YTVhIHB5M2sKKzg1MDE4IDI2ZGZlNDRjOWZhYTQ1OWYwZDBlN2UwMzJkOTExOGUxNmVjMjhjZWQgcHkzaworODUwMjAgMDVjNThiM2Q2ZDM5NDFhYWQzMWMzYWU0NjE0ZDc1YjlmYWI1NTE5MiByZWxlYXNlMjctbWFpbnQKKzg1MDIyIDdhYzMwZDU4YjFkMjE2ZDgzYTU0MzA2NGE0YTRmMjBiN2EzYjM3NmQgcmVsZWFzZTI3LW1haW50Cis4NTAyNSAyZmM3M2Q3Yzc2MjJkMjA2ZWU5ZjMxOWQ0MWYxZmEwYTk4MzZkOWUzIHB5M2sKKzg1MDI2IDg4ODEyNjBkMWQxNGZiZDlkMWFkMWQ4ZjRmZDg2ZTNlYjAzZWVkNGUgcmVsZWFzZTMxLW1haW50Cis4NTAyNyAzZjBmZmM4MTk5ZWFmY2YwMzExZTljNTIwZmNmOWNiMzI4Y2NjYWM5IHJlbGVhc2UyNy1tYWludAorODUwMjggZmQ1ZTUxMDM1MzM1YjM4YjlkMGRiNDMzMTFlYTg4Y2Y5NjQzODE4YSBweTNrCis4NTAyOSBlOTM4ZWNjNTUwMDU0OGJhOTQ1NjVkYTc4MjIwOGY4ZmU3NzExYzE3IHJlbGVhc2UyNy1tYWludAorODUwMjkgNTJlZmIxMDQ0ZGU1OTM0Zjk3MzE5NTQ1OTlhZTYwMmY4ODBmYmJlYSBweTNrCis4NTAzMSBmZjVkM2U1YzRiYjU5NTg4MGJlMzc4ZjE4OWRkZDY5MDMzOTg4OGUwIHB5M2sKKzg1MDMyIGFlZDA0YjNmMGZlMzgyMmZmNTM3NGFjYTIxYWFlZTg4ZmQ2MDJlMmMgcHkzaworODUwMzMgNmI0OWVhMTFiMTU3NzkwYjE2ZjYyNmRkNzJiYWFhOTMzYjA3ZjdjMiBweTNrCis4NTAzNCA1YTdiYjg1YTVkOTljMzU2MzdiYzQ0MzgzNjVhY2U2NWUyMzBmOGFjIHJlbGVhc2UzMS1tYWludAorODUwMzUgMWRjMmI1MGQzNDRmODVlNjNjOWI0YzE1MGQ0MDU1YzkwMGJhYWFjMSByZWxlYXNlMjctbWFpbnQKKzg1MDM2IDdiZGEwYTYzMmIwZDQ1NWM1NDk0ZTEyZTdiZGViMjQ5NzUzNWE4MDEgcmVsZWFzZTI3LW1haW50Cis4NTAzNyA0ZDNmYmNmNmY5NmEwZTgyMzg4ODdkNTY0ZTU3ZDhlOTI0NmY4YjE2IHJlbGVhc2UzMS1tYWludAorODUwMzggY2U0YTIyZmM5Y2M0NDFjOTUzMjAzYWU0ZTk2YWI1NDU4YjEyODAwMSBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDQzIDNkNDkwYzNhMDE5ZTIxMGI2MzRlZmJiN2ExMTA0ZDg4YTk5NmVlMTMgcHkzaworODUwNDQgZjc2ZWYxZjQ2MjY2MzcwNjQwNGNjYTdjMTJjYzZmOTQ4NDdiMmIwNCBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDQ1IDdkZmE5OTAwZjhjNzg4NWNmY2NjOWMwYWE5YTE0OTZkNGRmNDQ0YWEgcmVsZWFzZTMxLW1haW50Cis4NTA0NiBlMTJiYTQyZjg2MWZjN2ViMDUwY2M4NDIzMGU0MWQ3Mzg4MzVkZTdiIHJlbGVhc2UzMS1tYWludAorODUwNDcgZTM4MmZmNzQxNzkwMjYyZTljYjRkOWYzNzVjMTZhMGEzN2FlZjdhNSBweTNrCis4NTA0OCBjOGRjNGI1ZTU0ZmJkNGUxNGNmNTY1NTJjN2I5NjlkYmQ3OGU0YTQ0IHB5M2sKKzg1MDQ5IDNmNDI3M2QzMGIzODUyNTExYTM2MDIxZDU2NjgxYzNmMzZiOWQ3NjYgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDUwIDA5ODEyM2E3YTAzY2I3YjFhNWMxMmI3YTRhYjkyYTdkOWU0NmI2YjEgcmVsZWFzZTI3LW1haW50Cis4NTA1MSA0YzQ4ZWJhMTIxMjNlZTU2NzkxY2I4ZjA3NGE0YjMwNzA4NTQzZmJiIHJlbGVhc2UyNy1tYWludAorODUwNTIgNjk0Y2I1ZDg2NTI1MTUwY2MxZWYzNDY0ZTZkMWMwODk0NmVkNWVmNSByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTMgYTRiMzk5OGE3YWQ0MmRhNjEwMDNmZTU3ZTA5NDc1ZTY4YTJmYWVlYyBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU0IGZhZmU4NDJlMzIwMGNiOGFkNTc0OTI4YjFmODM1MGE3MTNlZjEzN2YgcHkzaworODUwNTUgNGU1ZDIwMWZmMjk0MDFiMDU4OTdmZTU5OWI1M2RkYzMwMTlkZTE3YyBweTNrCis4NTA1NiAzNTNmMGMyYmFmNzdkMmRkNWY5MDk0NTVjZWM2NWFlYTEyNzM5ZmJjIHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUwNTcgY2VhMzdmYjAzZGMwZjQ5ZmRmY2NjNzgxNzYzOTk3YzU0NTU5YjMzMCByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTggNDVmNTZlMzBhZmE1NzVmMzIyZDEzNzUzMzA0ZjQ0ZjU0YjRkZDdiZiByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTkgOTUyM2RiZTBiNjQ5OWU5YTEwZmI2YmMzMWU2ZDVmOGE4ODY4Y2RmMyBweTNrCis4NTA2MCBlMDYyODg0NzY1ZDY1YWRmODQ5MWVmMjhkNzM0NTNlOTk3NTk0YmNiIHJlbGVhc2UyNy1tYWludAorODUwNjEgMDVjZTU4NWY2NGM0ODhhODlhNjAxNGRkNjM3ZTU1YjdiNzUxZGUwMiByZWxlYXNlMzEtbWFpbnQKKzg1MDYyIGUzMzJjZDk1ZjQxNGFhMDg5Y2RlYmQ4YjRiYzVjZDQ0ZGJiZWNhZWUgcHkzaworODUwNjMgOWRhMTNlNTYwYTNhOTZkZDU0YjNjMWVhZWZmMmJiZWU1MTlhZjI1NiByZWxlYXNlMzEtbWFpbnQKKzg1MDY0IGFmYjJmMTQ0Yjk4YzIzNjU1YThlZDhiYTE2MWM0ODg5MzhmYWJlNjcgcmVsZWFzZTI3LW1haW50Cis4NTA2NSA0M2I3OWQ4MGY1YWVjZWFiYTMwN2NhZDk4OTU3NDdhMjMyOWI0YjE4IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA2NiA3ZDliYWY2NDlmMmQ4ZDdkZDI0MTdmOWNhOTZiNTQ4Yzc1ZDQ1MzcxIHB5M2sKKzg1MDY3IDY0ZTQxMTdmNzg4NzU0YWZmMDQyM2RjMDkwYTBiOGUwOGExMGNmZWUgcmVsZWFzZTMxLW1haW50Cis4NTA2OCBkMWJlZTdjZjZjMmYyYWU1ZGU1NWE5YTkxZDY4ZTVmZTE2OTI1MDk2IHJlbGVhc2UyNy1tYWludAorODUwNjkgZmFkNzhlODZkMTZlY2QzNWJiYjU5YmI3Y2ZkYjY4YjJlNmExNDY3MiByZWxlYXNlMjctbWFpbnQKKzg1MDcwIGRkOTRhYzJhNDJiMTdlZmFjZDUxMWQ3NTRjMjQzZjhkNGY5OWI1MmEgcHkzaworODUwNzEgN2UyNzVhNGNmOTQxMGQ0MjkwZGJiYzRjZDQ3ODRlMTlhMWI2OGZjZCBweTNrCis4NTA3MiBhMDhlNDI3ODllNmQ1MWQyMjQ2MzUyZGFkNDhmYmFlNzg4MWVjNjg5IHB5M2sKKzg1MDczIDQ3MmE2ZWVjMTk2YWJmYzE0ZGQ1MDQzODllM2NiMzIwZTVmZDZhMjQgcHkzaworODUwNzQgMGY4YzJlYjg5ZjQ2ZDVjMGZhYjczYjg3MmU5MmZjZDFhYTE0MGY5OCBweTNrCis4NTA3NSBkYzM4MzM5ODQ3MzRiMjQ5M2VkZjIxYzIxOGZiNmI2MzI2YTFiNWQ4IHB5M2sKKzg1MDc2IDZjOGFkYzIwMGVlMDJmMWQzYTAyNGY0MzFiOWVmZGIzYjgyNjc3ZDUgcmVsZWFzZTMxLW1haW50Cis4NTA3NyA2YzFmMTBlMDc0NTU2NDA3Y2E5NDM3NjVjM2IzMzllNGM4YjRmYzZkIHB5M2sKKzg1MDc4IGZiN2VlMGYyYzZmNGEwNDdhNzAxYTFiZjUwNWUwM2QwZmIzZjM0MTYgcHkzaworODUwNzkgYzE4NDIzZjRiOTY4OGM4OWEwOWZlNjQwYWU5NTljZjUwZGI4NWQzYSByZWxlYXNlMzEtbWFpbnQKKzg1MDgwIGQxMmQ1NTBlYmYzNDU1YWI4OTAxZmY0YTUxOWZlZjAxOWM5NzViNmEgcHkzaworODUwODEgNTUyMmM2YjJhZjg3MmNlMTBiNDQwMTg5NTUwZmQ5NTIxYjAyZGRkYyByZWxlYXNlMzEtbWFpbnQKKzg1MDgyIDRjZjc3ZDE5M2Y1N2Y1ZTA3NmIxYTE5OTU1ZWFiYmRlZTdlYmJkMzQgcHkzaworODUwODMgZGM0NTU1NjQ2ZTgwN2Q4MjZmMjY1MGQ4OWRlODlkNjg4YjkwZDI3YSByZWxlYXNlMzEtbWFpbnQKKzg1MDg0IDA2ZjVlMTkwODU1YTNmZDc3Mjg0ODg5MGRkMmM4YjkyNDEzODdlNzAgcHkzaworODUwODUgYzg2OWVhMDdjZDlkMjY4YzllNmVjODNmYWMyMmUwODJiMDI2OWJiNiByZWxlYXNlMzEtbWFpbnQKKzg1MDg2IGIzYzdlNTE2MjdmZGM2OTkwYmRhNmFhNjUwZDZkMDExMjllNTQzZjIgcHkzaworODUwODcgN2JiMDUxM2NkMGI4Mjg5MmViMjU3Y2ZlN2QzMDY4MzdlNGMyZjQxZiBweTNrCis4NTA4OCA3MzQ4NWNiZDZjOWViNmVjNGUwMGEwNWI2NzI2NDA4YTI0N2RkNTM4IHB5M2sKKzg1MDg5IDU5ZGZiMjEzODNmOGJmOWY2ZDE2ZmVhOGUyOTU1OTI0NGE1NWRiZjQgcmVsZWFzZTMxLW1haW50Cis4NTA5MCAwZWUyMTEzYTRmZGU2MjM2NmRiNjczNzI5Y2M1Mzc1MDYwMzlmOTM5IHB5M2sKKzg1MDkxIDc3OGNiOGU2YzYzODMwNDAzNDFhZTQ3NzZhMGNkZjFjY2NjOTQ4NWYgcmVsZWFzZTMxLW1haW50Cis4NTA5MiBlMTJiMTA0MzU1MzA4ZGJmNzI1YTk1ZDVmM2U5MjM2NTgyNTI5YTRjIHJlbGVhc2UyNy1tYWludAorODUwOTMgN2M3ZDFkOTZlMmMzMzQxNGJkNDliMTFiZTAwNTIxNDllODA4ZjllOSBweTNrCis4NTA5NCBjNjIwZmU4N2M3MDNiMDkwZmM3ZWEwZmQ5NDcyOWYyOTdmMGFjNzNlIHB5M2sKKzg1MDk1IGFjOGQ5Y2FjMzAzMzVlM2EyM2M4MWZiZWFhOGQ0OGM0ODM1MWVlZTQgcHkzaworODUwOTYgMTkxZWQyYWQ1OTk3YzFmYzU2ZmEyMzY5MzVlNTk1ODdiOGNmMjM1ZiBweTNrCis4NTA5NyA5NjFmNTM1NGViNTQxZjQ0NTBlNTBmNDUxOGRhMDQzMTc4YWJhYjNiIHB5M2sKKzg1MDk4IDgwMGFkZGM5ODU3MTlmZWU0MTY3ZjczN2ZkYTRhODJmODcwMDY2NzEgcHkzay1pc3N1ZTk5NzgKKzg1MDk5IDNmYjU4M2M4ZTk3ZTdmNjQ5MDI5ZGM2MGU4NjE3YWMzYTBmZmEwNjkgcHkzay1pc3N1ZTk5NzgKKzg1MTAwIGY0ZDA0NzQ5MWNiNDJhODNmMmE2OTYyNzBlZDM4Nzg1Y2ZiMTQ0NmMgcHkzaworODUxMDEgOTQxMDkwZWQ5NmRmNGYwN2FmNzg2MTgzNTliZmFlODljZmY0ZWFiOCBweTNrCis4NTEwMiA2NDM0Y2RjZTcxNTI4NTIzYTlkMmRkMTEzZTE0NDM3N2JkNTk2MzViIHJlbGVhc2UzMS1tYWludAorODUxMDMgMGI0YmY2Y2RlMTFkZWUwZDQ1NjRkYmQyN2NkNmZhZDJmMDBhNDA0ZSByZWxlYXNlMjctbWFpbnQKKzg1MTA0IDFkMTViNTY3YTc0YjI4M2ViM2Q2ZjhiOThkOThjY2MyNTBiNGJhYzUgcHkzay1pc3N1ZTk5NzgKKzg1MTA1IGFmOWRlZTEyN2UzYzJiNWQwNmE3YmEzOWJmZTdjMzM5MjM3NjI5MzIgcHkzay1pc3N1ZTk5NzgKKzg1MTA2IGM0YzZkODQyZDgyYTAxODcyNTkwZDAyYTM1ZmVkM2M2ZTQ0NjYxOTYgcHkzay1pc3N1ZTk5NzgKKzg1MTA3IDM0YWJlMzY5MTllNTNhNGEyMmM0MWMxZmQwNTk2ODMyYzYyODg0NjMgcHkzay1pc3N1ZTk5NzgKKzg1MTA4IDE0NzI1OGEwYWRmODVjYzRiYzZhY2I5ZGRiZWNlZjcyZWEwODFkYzEgcHkzay1pc3N1ZTk5NzgKKzg1MTA5IDI1ZThiNzgyN2M3ZGYzOTZiNGFiNGFmMWJiMmRjZTE3MDk5ZWE1NzEgcHkzaworODUxMTAgYTQzMGY4ZmVjNGEwZmM0ZGFjOGM5NmM3ZDg3NGE3MjViNWFjZDk1ZCByZWxlYXNlMjctbWFpbnQKKzg1MTExIDAwNzdlZTMwMTM0YzZiM2Q0ZDdiMWYwNjkyYmIwOWVmYjkyODUwNTAgcHkzaworODUxMTMgNmRkY2Y3NDI4MjI3YTIyNDg1MWQ3NGI2YWQyMWU5MzAzOGRkMGE2MCBweTNrCis4NTExNCA1OTM2ZWMzYzRlYzAyN2ZmOTNmZDBiYTZjZjA1MDc0NDg1NGViOTAxIHB5M2sKKzg1MTE1IDAxYjk2Zjc4ZmI3MGI3YmVhYjhmN2UyMTJiODFjNGZkNjgyMGNjMTIgcHkzaworODUxMTYgMWFkZDhlNWYzMTk4NTE4YjMyM2U3N2YyYWZjYzQ5ZGVhOWQ0NDNlYiBweTNrCis4NTExNyA3NDZlOTE1MDExOWFkYjcwODIxNjA0NGIxMDI0NzNmZjJiNjRkZThiIHB5M2sKKzg1MTE4IGU3MTBlNzkyZWYyZTc2YjQ5MWZmNjA0YzljY2EwYWNjOTFmZTE3MGIgcHkzaworODUxMTkgZWYxNjg2ODhhZjBhOTZmODE1ZGQyNzFiMzE2MjNhMjlmYjVmYmY4NyBweTNrCis4NTEyMCBhOTM0OWZkM2QwZjdiY2FlYTE1NjBhZmE0YzVjZDg5MzMwMWYwOGM2IHB5M2sKKzg1MTIxIGVhNDcyM2FhYzQ3OGY0YmQ0NDk4YjEyYTNlMmE3OGFhYzdlMjcyYTggcHkzaworODUxMjIgNDAzM2Y4M2MyZGYxOGQ5OGZhMjc2ZWYzNTdhYTIzYjljYWMwOWUwNyByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUxMjMgOWZlMWRjZTJiZmE0NDUwNjI5ODIyMGI1YjI4MzNmMjlhYTcxY2M3MyByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUxMjQgZDk1NzNlMzYyNGVjMTIyMWVmOWQ5ZGVlMWE2Zjg5YzU3Y2ZlNmRmZSByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUxMjUgN2FkZDQ1YmNjOWM2NzJjMzg0MzI2MGM5MzQ3MThmMjZlYTdiY2MwYiBweTNrCis4NTEyNiBkNzg3ZWY5YWNiNzI0ZThjNTk3NDk3NGUwYTdjNmNkZDY0MTM4YmQ1IHJlbGVhc2UzMS1tYWludAorODUxMjcgYjk5ZjUyN2UwZDc3YzcwMzNlYzFkZTc5OGMzNThkNjE3MmQ1OTg5YyByZWxlYXNlMjctbWFpbnQKKzg1MTMwIDlmMjdkNzJiZjVkZjg5MzA4YmY0MGM2ODJhNjE5ZTg5Y2RhOTM4YTkgcHkzaworODUxMzIgMjgyYzc3ZGIzZDM4OWJkNzM0MWI0YmQ2YThjNWMwODU4MDlkNWU3ZiBweTNrCis4NTEzMyBjYjJmYmI1ZTY0MDk2NGU3ZjdkZTZkZjBmYzdlNDQ5NzdhMWE5MWQ2IHJlbGVhc2UzMS1tYWludAorODUxMzUgMDRmNTNjYTQxNTk2ZWU4MDEwMzkzMjMwNzU4MTI2MWVkZjQ1YWZhZSBweTNrCis4NTEzNiA4N2Y0YjMyOTA1ZGYxMDUwZWYwYWM4NjVmNTg0YjRkYWY1MzIwOTRjIHJlbGVhc2UyNy1tYWludAorODUxMzcgNTk3ODA0YjQxMTI1OWI4YzBmNTY1ODQ5YTY0OTRjZTFjNmY3YTNhZSBweTNrCis4NTEzOCBkYWVjZTdhMjM0ZGM5MWE4MTkwNjQzNDUzMDk4YjBhZDUxNmZkZWIzIHJlbGVhc2UyNy1tYWludAorODUxMzkgNTlkZTIyNWExOWNmOGFjNTQ3YTBjZGJiNDlhOWZkN2MyZTA2ODUyNSByZWxlYXNlMzEtbWFpbnQKKzg1MTQwIGE5YTMwY2ZiODlhNWQzNGJmODZmNzAxNzA2MmNmYmE5NTE1ODlmNzMgcHkzaworODUxNDEgNmYxMzNlODdhNGY4YjFlZWUwODA5YWQ1NWFlZmQ1ODM0MDcwZTM4NyByZWxlYXNlMzEtbWFpbnQKKzg1MTQyIDE1YzM2NzFjMTc4MzJkOWFmOWIxN2VlMTk4NjlmZmZhOThjNjUyMTEgcHkzaworODUxNDMgOWI1ZTZhNTdhYjEwNTQyOTFlNzdjZTUxMDhlMzExOWJmOTZkNjFiMSByZWxlYXNlMzEtbWFpbnQKKzg1MTQ0IDJmNjgzMWNkMjQxZWQ3MjkxNzQ5OGIwZDliNWFkMTBhMmNjOGI1NGQgcmVsZWFzZTI3LW1haW50Cis4NTE0NSAwNjIyZDRkMDhhZjAyNWYyNTFiNmZmZTZiZTVkYzBjYjNkMWM0YmI0IHJlbGVhc2UyNy1tYWludAorODUxNDYgMmU2ODQwYzBjMTI2NmI0NjA2ZTg1NDU4NmY3ZjJiMjkxMGQ0ZTRiYyBweTNrCis4NTE1MyA5NTI1OGE2YTA2ODNlNmE1NDk1Y2QwZDE1NGJmZmVlY2QzMGFmZTljIHB5M2sKKzg1MTU0IDM0MGQxYmY1OTUxZTEwOGIzZmQwMDM5OWU1MGVjMTNlMTYyMjI4ODcgcHkzaworODUxNTUgNDcxZGJkOTA2YWFkMDExZDI0ZGQ4YjI0ZDMyZjRiMzNmODAxYTljYyByZWxlYXNlMjctbWFpbnQKKzg1MTU2IDkxZTYyMzg5MGI5NGMxZGUwNDJmNjcwMDg0NTRiZDMzMDgyMjVmYzQgcHkzaworODUxNTcgZGU0MThkOWRkNzMzMWI2MzI4MjVkMzhmYzY3ODcxOTFhODgxMTBhOSByZWxlYXNlMzEtbWFpbnQKKzg1MTU4IGNlNDc1ZDM1YjUwZmM2MzZlNTJhMDU1ZWY1Mjc5OTAyNTA1OTAzMGUgcmVsZWFzZTI3LW1haW50Cis4NTE2OSA3YzBmMTgzN2U4Y2JlMjVkNDdiMzgxNzVjYTMzNjBmM2Y2YTIwMTg2IHB5M2sKKzg1MTcwIGJlYmU1ZTM1NjYxZTIwNzZlYTdhMTFhNDI4NjM5NGYwNWVkNGRmYWYgcmVsZWFzZTMxLW1haW50Cis4NTE3MSBhNzQ4YmZjYjY5NzMzY2Q5ZmQwZTkzODc4NTdiMzQ2MmQ5M2MwZTBjIHJlbGVhc2UyNy1tYWludAorODUxNzIgZGU3Y2RiNzI2MzUwMmI3NDc3ODY0YzlkYWIwZTcwY2UyYzA1YWJlZiBweTNrCis4NTE3MyAwY2MzZmY4MDIwYWU2NWM5NmNkM2JjZDM1N2FlYzI4ZTkwYmY1ZjIzIHB5M2sKKzg1MTc0IDQyODMxNGVlYjJjNzYzYjljY2I4N2MzMGQ2NDdhNTdmNGI4YmFkY2IgcHkzaworODUxNzUgYmI1ZTE4YTliZGUzYWUyMjdjM2YxZDAyYmZhZmQ2MzliMzNmNzk0YiBweTNrCis4NTE3NiA4ZGU1MzVkZWYxMjIyZTRiNzY1ZjAyOTQ4Y2QzMWQ0MTBjMTQ1MTBhIHB5M2sKKzg1MTc3IDkwNDg4MDdiZTgzYWJiOTk5MDNlNTczODA4NDEwYmI1MDI1OGY4ZmIgcHkzaworODUxNzggYzk5MGViOWI2MGE5ZTQ3OWIxZWY1ODczYmZiNGM5OWUyNDBmZjkzZiBweTNrCis4NTE3OSBlZjVjNTcyMTdiMjAzZWE3NTBjYjhmNGJmNTU1MWZjZjEyNTEyZjgxIHB5M2sKKzg1MTgwIDEyMTJlNTAwYTU4NTBlOTQ0NDExMzRhZjA1ZDFmNWQ1MWRhY2ZkNjAgcmVsZWFzZTMxLW1haW50Cis4NTE4MSBmM2E3MGQ5OWQ3ZTBmYjVjYTViNmQwNTEyZjQ3Yzg3YmY4MGQ5MjhmIHJlbGVhc2UyNy1tYWludAorODUxODIgMDcwYThmNjY0MjIwZTZjNTM4ZTU4YWQ3NGRjZDM0OGI1NjJiMzE4YSBweTNrCis4NTE4MyAzOTRlMjUzODJhNTkyMzZiN2Q1NDhiNGFjM2MwOWVmYmMxYjUxZDMxIHJlbGVhc2UzMS1tYWludAorODUxOTMgZGVjMDg3ODlhOWI0MjMzZjczM2VmM2IxNWI4ZGU5N2M2ODIyYWU5NCBweTNrCis4NTE5NCAwZjg3MDg1YjI5MGY0MDYwZmE4MGQ5YWZkNGVkNmI5YTNlMjE4ZjgyIHJlbGVhc2UyNy1tYWludAorODUxOTUgYjllMjZiMGM0NjE3OTg3OTVhY2Y0Y2FmZTUzMjRkZmE3NDc4YTBhOCByZWxlYXNlMzEtbWFpbnQKKzg1MTk2IDliYmQ0NDk4NjU4ZWUzNzEyYzFhMzUyOGI2M2UwYmE5ODY0ZjY0MGUgcGVwLTM4MgorODUxOTcgM2JiM2VlNmU2MGUwYTgyMjE5Yjg5MjZkNmFkOWEzZGU5YmJhMmM2ZiBweTNrCis4NTE5OCBiYThjZDIwMDdkMjkyMmY1NGVjZDA1NWNmNTY5YzMwZDIxOThlZWQwIHJlbGVhc2UzMS1tYWludAorODUxOTkgMTM5ZGQ0Y2ZiODBmNTc4ZDY1M2M3M2JhYTViMzBhZjU0ZTgzNThkOSBweTNrCis4NTIwMCBmN2M5MTA3ZjdhYmRlMmY1MDdhYWY3OTljNWMwMjFlNDBlMzYyMWU0IHJlbGVhc2UzMS1tYWludAorODUyMDEgZDFlMGNmODE4YWQyOTlmZmU2NDVhYmU5YTEyYjhjZmZmNTBmZjFjOSByZWxlYXNlMjctbWFpbnQKKzg1MjAyIDJjMmJhMWIzMDgyM2YyMDhkNjBhMzk0OTAwNTczZmJlN2QwMmZmMTQgcHkzaworODUyMDMgOTQ1YTU1ZDRlNzNlZjgyNTE0MDczYWZiNjNhOWJkMzg1ZGFmOWRlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjA0IGYxMWRjOTQwNGQxMTg2MWMyYzExZmQ0NTAyODc2NzBjZjlkYWNiNDkgcmVsZWFzZTI3LW1haW50Cis4NTIwNSBhZDQxZmJmMzNlM2I5OGQ0ZDdiMjY4NTMxNDg3NjBmNDc0NmY3YzlkIHB5M2sKKzg1MjA2IDMyYzMyYjcwYWEzM2JiMzQwNmMyMGM4YjQyODc3MTYyNzEzZjhmOTcgcmVsZWFzZTMxLW1haW50Cis4NTIwNyBlMWY2Y2U4MzZmYzUzMTdmYTM5MDVkY2RjODQzODY3ZWM1M2ViMTUwIHJlbGVhc2UyNy1tYWludAorODUyMDggOWViOWUzZjY2ZTNhZDhmZWFmZmRkNWY3NTZmNjg4Y2UwNmY4MDczYSBweTNrCis4NTIwOSA4YmQwYTA2M2NlYjljZTdhOTE0MTFlYjAzNWQyZGZmM2ZjNTE2Y2YxIHB5M2sKKzg1MjEwIGI3N2U5MTQ0NWQ5YjcxZjFhNDQxOWI2ZjliMzI2ZWU0MWUzNDkyZDUgcmVsZWFzZTMxLW1haW50Cis4NTIxMSBiMzM0ZWFhZGI1MDhjZWUyNGZlYWUxMzU5YmExNjc2Mjk4N2YxNTZkIHB5M2sKKzg1MjEyIDZhZjdiNDEwMmQ3N2RjYTEzMzk3OTExNjgxMjZlZGM0M2RjN2U3ZWMgcmVsZWFzZTMxLW1haW50Cis4NTIxMyAzNjMzZDhmZTU1NTA2YTlhM2Q4NzE1ZGViZTc1MGFhNDE2NGM5ZGMxIHJlbGVhc2UyNy1tYWludAorODUyMTUgZDE2MWY4Yzk2NGViOGFiNmFkZTRjNTRmNGI3MjUzNWM5ODhhNGFjNCBweTNrCis4NTIyMCBjMjhmZGVlZWE3ODYwODg4OTk1OGE5ZTI0NjQ0ZGVmYTUwMTQyZThkIHB5M2sKKzg1MjIxIDVmMjBmN2YxNWVkZjcwNDVkOWJmM2U4MmE2NmRjMGJkODFjYzI2YjUgcHkzaworODUyMjIgOGZlOGIyODEzNTZjM2RiM2I4NTMxZTExNmU4NmVkMGFjNjMzOTA2MSBweTNrCis4NTIyMyA3NTNiZjIzZTQ1YzViZThjMjM3ZGEyYmJmNTRlNDBhOGI2M2E2YTE1IHB5M2sKKzg1MjI0IGIwNjViMTk0MGNiZDlmYTNjZTY2MzQ2ZmY2M2JlOTMwNTc2MDhhYjQgcmVsZWFzZTMxLW1haW50Cis4NTIyNSAxMmM2ZGE1YWNkNzMwNjdjOTFkMTZjODM3YzVlNDlkNmZmZmJjNjNlIHJlbGVhc2UyNy1tYWludAorODUyMjYgMDk4MTZmYzljZGU1NTdkMTE2ZWIyYTZjMzk4NTJlODk1NjRjNmFjNSBweTNrCis4NTIyOCBmYjgyODQwZjBlNzBiZWNmNzVhMTJhMDlmYThmZWNiYzE3ZGFiMTdkIHB5M2sKKzg1MjI5IDk5ODg5MGNmZjIwNWYzMjQ1ZjdkZjBmMzY0N2Q1YzVkMDNjMzQ2YzQgcHkzaworODUyMzIgM2Q0MjUwY2NjY2U5MTgyNjVjN2E0ZDUwZWFmYWE0YWQ3YTEyZTIxOCBweTNrCis4NTIzMyA3NzYwOTVhYTA1OGQxZTEwOTNhNDI4MWM2Y2ZiMzYzNTI5NDBkNzBkIHJlbGVhc2UzMS1tYWludAorODUyMzQgYzZkZGJmYjdhYjQzODE5NTRmNmFiMGI2MGNiNjRhYjNjMDQyOGRkNyByZWxlYXNlMjctbWFpbnQKKzg1MjM1IDc5YmI3Y2FlNjliZWNiOTY0ZTAxOGQ3NmM4MGNkZjcxOTEwYzVkNjEgcHkzaworODUyMzYgNzU5ZTVkMjc1YmViMzk5YTFjYjJiMmQ3ZDY4ODEyM2MyYWI5MDI2MyBweTNrCis4NTIzNyA2NGNhMDFlYzE3MTVmYjM2ZTE4MzczNjJkNzI1NzkwMGQ1MTQwMzU1IHJlbGVhc2UzMS1tYWludAorODUyMzggY2Q3MzkxN2YyNDc4Mzg2NmVmZWY0YzEwOWRhMmQyODAxODA2ZTJkOSByZWxlYXNlMjctbWFpbnQKKzg1MjM5IDFjNDE3ODExZTUwOGY5OWU4NWIxZGM0MGU0YzU2NGJkZjhiNmVkOGMgcHkzaworODUyNDAgOGJjYmRkNjczMGE3NTczOGNkMDUxZDM5YTY0ZmQ4MGU1NjQ2MjA0ZSBweTNrCis4NTI0MSA3YTBiNDFmMWM3M2I4NTJhZjRjZjVkMDkxMTdlZTZjNDk4ZjM4Y2VlIHJlbGVhc2UzMS1tYWludAorODUyNDIgZWVkYmU1ZWE0NGNiMjE1OTNkYWIzYmNkZjMxNjE3ODYwZjg4ODA3NyByZWxlYXNlMzEtbWFpbnQKKzg1MjQzIGViN2Q2OWQ4OTY1MDFjYjk2ZTE2NGEwYzkyMTE3MmU0OGIwYzljODYgcmVsZWFzZTMxLW1haW50Cis4NTI0NCBhNjhmODc2MzU1NWIyMTRlZjczNTI5YzkyNzcyMTEyM2FhZTBmOTg1IHJlbGVhc2UzMS1tYWludAorODUyNDUgNTM3MGQ0ZjA4NjQ4MDljZWUxZTNlZjYyOWY3NTgwZGE4MWU1OWQ3OCByZWxlYXNlMzEtbWFpbnQKKzg1MjQ2IGE0Yzk3NDZjYjAzYzVhNWJhODQyYmFkY2JkODBjOGJhYjg3NDRlNGUgcmVsZWFzZTMxLW1haW50Cis4NTI0NyBiZmVlNTQ3ODFiYTFmOTNlNGQ5MGRjZjZlZmYwN2YxN2RmM2E1ZWU0IHJlbGVhc2UzMS1tYWludAorODUyNDggYzk4NzliMzQwMmU0YWI3MmQyZDM5YjQ1ZGI1YWEyM2UzZGNmNmVhNiByZWxlYXNlMzEtbWFpbnQKKzg1MjQ5IGViOGUxMzc4NGRlNzM4NGM1OWZkYmU0NzZhZTM5Y2IwMmExMjA1NmUgcmVsZWFzZTMxLW1haW50Cis4NTI1MCBiOWE3NWRkNzQyMGQwNTY2YjczMjI1ODcyYTc0NWRiNjliODc3MWJmIHJlbGVhc2UzMS1tYWludAorODUyNTEgOTBlMTczNWRmNGQ5NjJjZWUwMGM0ODYxMWNhMGFlZmU4ZTU4ZWIwNCByZWxlYXNlMzEtbWFpbnQKKzg1MjUyIDJkZTgzMjNiZDRlYmEyYWEzNTNjZGIxZmQ2ODBhMTkzYTc0MzlhNGEgcmVsZWFzZTMxLW1haW50Cis4NTI1MyBhMDQ3OTM0MGYwMzUyZjJhZTYzYmIzNmZkOGQ2NGY2MTY5ZDk0NzA1IHB5M2sKKzg1MjU0IGYwMDQ0MGFmOTQxMzc4ZGFiNDRkNGUxZDA3NGJiYmMwYzUzNjA5MmEgcmVsZWFzZTMxLW1haW50Cis4NTI1NSAwNDRjYzhhOWYxOWNmYTFiNzdmYWQwYjhlYTM2MWY5ZmVhNTQ0ZDEwIHJlbGVhc2UzMS1tYWludAorODUyNTYgNmY5ZDE1ZmNjZmE0YWNmMWFmYTM3MGYyMWZiM2NmZGZhYjIzYTc2OCByZWxlYXNlMzEtbWFpbnQKKzg1MjU3IGM2MWMwMmFjMjA5OWZiZjc4NjRlZmZjYmViNDQwNjdjOTNkYmQyMjIgcmVsZWFzZTMxLW1haW50Cis4NTI1OCA2OTU5YWRiYTNiNmE1ZDIyN2RiODkxOTgxYjI5OGIwOGNjOWZkOWVjIHJlbGVhc2UzMS1tYWludAorODUyNTkgYTVjNjNiM2E5NmE5YThmMjI0MmMzZDIwOTczM2IzYWU4NDgyM2Y0YiByZWxlYXNlMzEtbWFpbnQKKzg1MjYwIDI4MzA2MjQ0YWZhMGY0NTg5YzFjNTllZDc0NDAzOGI4MmRkYjQ5M2IgcmVsZWFzZTMxLW1haW50Cis4NTI2MSA2NDk4OWIwMzM5OGNhMmY4ZmI2Njg4NGYyMTlkYTlkOTNhYTcwZjgzIHJlbGVhc2UyNy1tYWludAorODUyNjIgZmY3MzRmMjI1YjQ3ZTk2ODliZDJkZDEwNTg1ZTcwMmM2NDQ4ZDAyMyByZWxlYXNlMjctbWFpbnQKKzg1MjYzIGNhYjQ1ODYzOGU0ZGI1NDdlMGRmNjNkNDA3OTVmMmNmOWQyZTg4MjkgcmVsZWFzZTMxLW1haW50Cis4NTI2NCBiYWE5OGJhODVmZDQxMTg5YzBhOTVjMTUwZmZkNDU1Y2VkZGZjNzYxIHJlbGVhc2UyNy1tYWludAorODUyNjUgMmMxMTViZjUyY2ZmOWNlNWZiZmMyMzBjYzRkYjBhZjU2NzRlY2RhOSByZWxlYXNlMjctbWFpbnQKKzg1MjY2IDI4NTY1MWExNTM1NWVjZGU0MDU5ODk5NGFmOTViNDJkYzIwNzhkMjQgcmVsZWFzZTI3LW1haW50Cis4NTI2NyBjZTIwMjE1MmUyMWExMTQzZTZlOWJlYWNhZjgwMmZlYjdlMTljZWYwIHJlbGVhc2UyNy1tYWludAorODUyNjggNTM2ZDg2NTBkYTNkZjBkOTY3ZGM5Nzc4ZTMzNDNhYjJhYzk4OTZjYSByZWxlYXNlMjctbWFpbnQKKzg1MjY5IGU5ZTI0MWE5M2Y5ZWUzMGNlZjkzODEwNjIzYWZkN2E4MGQ5YjkyY2MgcmVsZWFzZTI3LW1haW50Cis4NTI3MCA3ODM5NmVmNGQ4MWNkNmI3NTNjYTU4MzczYThjZWZhNDhmNTNmMGJkIHJlbGVhc2UyNy1tYWludAorODUyNzEgMWEwZTA2Njk3NzljY2FmNmQ4MjcwODgxMDc1NjEzYmFmMjFlNmRmOSByZWxlYXNlMjctbWFpbnQKKzg1MjcyIDUyMWVhYzMxYTg5M2E5OGEwZDVhZjM0NDZlODM1YjBkZmY0N2M0YjUgcHkzaworODUyNzMgMWNmZDNiMTI0ODlkYWU5NGExZjY0YTc5N2ZjNjAyYzk5ZDdiMGI1NCBweTNrCis4NTI3NCA5YWZlZDcwZDNhY2ExYzYzNzhhZTJjMzRkM2E1ZGRjZmY3OWE3N2NhIHB5M2sKKzg1Mjc2IGRmODQ0YmI2NzI5YTRiYzY2MThiYWRlMmM2MGJkOGE1OGU5MGQ3NWUgcHkzaworODUyNzcgOTI1N2YwODNmY2ZmMjJmNDNmY2E5OGVkMGM3YWY5NzZkYjNmZTRjNCByZWxlYXNlMzEtbWFpbnQKKzg1Mjc4IDAxOTIwNTViY2MzYmU5MTU5MDc2MTc3ZmI1ODI3MzE4ZDBjYzAzYWQgcmVsZWFzZTI3LW1haW50Cis4NTI3OSBkNjcyNzUzYTAzZjAwOGNlOWIyODRhZDliZTQ3ZDAzMGMxODQ3YjNiIHJlbGVhc2UzMS1tYWludAorODUyODAgNzAxODI2MWYyYWMxZGExMTEwZTU3NzZmNjMwZjdkMGNkYWU0MzhiZCByZWxlYXNlMjctbWFpbnQKKzg1MjgxIDJkOTllZGM0ZjEwZGZiMGNmZGE0YTI2YTdmYzFjMGQwYjQyZTU4YzggcmVsZWFzZTMxLW1haW50Cis4NTI4MiA1YjU1ZThhOWMxMDcxZDM2NDQ5NDQ4MzgyYmNmNTVmYjhjYjdmYmNmIHJlbGVhc2UyNy1tYWludAorODUyODcgMDY2ZmIzZmFmNmQ1MzkyZjJlZjMyMjMzMDhkOGUzMTBlNTcxODY0YiBweTNrCis4NTI4OCA4NjI5ZjdkOGI1ZTMzN2IwYTA5N2FmODA3NzkyNTM3OWQ3MDQ2ODk3IHB5M2sKKzg1Mjg5IGQwY2UzZWIxMWIyODZhYjU0OTk5OTJkMWViOGIzMmRmMDVmOTMzMmEgcHkzaworODUyOTAgNGRhNTVjNDkzNDM1NzAwMTVhNDk0OGYwZGMxZTNhOTMzNTM3NmIwNSBweTNrCis4NTI5MSBiOGU3OGNmYzk0ZWJhNmFlNDYyNWU5N2IyOTU2NjQxOGEyM2E0ODUyIHB5M2sKKzg1MjkyIDMyZGNjY2RjNzNmOGY2ZmRlODVmOGE1ODNjYWVkNDQ5OGQ3ODZkMTEgcmVsZWFzZTI3LW1haW50Cis4NTI5MyA3YzEwMzFkMzgyM2NjNGRiNDQ1OTI4N2QzODQ1MDQwYWE0MTY4Yzc3IHJlbGVhc2UzMS1tYWludAorODUyOTUgNjJjNThkYzkxMmU4MTY1NTRiODc4Y2Y3NmRjZmMxZmRjYWIwNmE3ZiBweTNrCis4NTI5NiBmMjM3ZmRlOTI1ZmE3ZGQ0ZTg3NzIyZDc2ODJiMzlhZWIwMGE1YmI0IHB5M2sKKzg1Mjk3IGMxZTk1NDJiNmM3NGFhNjNmMDhhNmE0NGRhN2M4M2E2YzhjNjY0OWMgcHkzaworODUyOTggZTNhZTViMDBiYTE1ZWVlN2I2NWI0MGNhMDkyYjU0MDU0OWQ5MmYzMSBweTNrCis4NTI5OSBhNjJjNGQ1Y2RmNmM3NDM4MTcwZWM2MjNjYWM4NWZlZjIxZjI0MzExIHB5M2sKKzg1MzAwIGIyNDU3ZWI4MzRhZTA5ZDI4NDYyODgzNzllY2JmMzcxNTk5ZTg1M2MgcmVsZWFzZTMxLW1haW50Cis4NTMwMSBkZmIzNGU1ZmUwNjYxOWE4NWMyZDg4Y2IwZTA3MTk3NjliNDlmY2RkIHJlbGVhc2UyNy1tYWludAorODUzMDIgMDcxZjFmN2FmNTIyM2I4OGIyMWVmM2M2YTZkMmMxZGJlMTE3MDQ3NiBweTNrCis4NTMwNCAzOTAxNGYwYWJjMzI4Mjk1YjNiNzgwYzc2MTI3OTA3NDk4Nzg1ZTVkIHB5M2sKKzg1MzA1IDc4NzlhOGVjN2Y3OWE5MzIzY2NjNTBhZWY1NDBlOGZmNGY2NmJiOTAgcHkzaworODUzMDYgMWYzOTE5YWY4YTUzNmQxOGVlZDQ3NTQ4YzA1YjJlODY5MDE4YzE4NCBweTNrCis4NTMwNyAyMTQ3Y2MxNTIyMjcxNTQxMTkwMGNjMjUyNTc1MzdjMmQ3YjhlMDBkIHB5M2sKKzg1MzA4IDhmZDVkMDY0NjJlNmI4ZDVmMTYxODY5ZTdjN2M3NGVjOTQ1MDE0NDggcHkzaworODUzMDkgZTRiZGQwN2NlMGM2MjY5MzhjY2Q5OTM2ZmYyM2YxNTlmZWRhMThkNSBweTNrCis4NTMxMCAxYzQ3NzRiNGU5OGE0NjJjY2QwMDIwYjA1Y2RhYTkwM2QyMzc1ZWI3IHB5M2sKKzg1MzExIDc3YTZhMjQ5ZTI0ZThlNjJlZWY1ZjM1ZjBlYjBiMTJiNjY3NDRmMjEgcHkzaworODUzMTIgZmE2ZTUwMjA4ZDkzMDk1YTQ4ZmIyNmJmMzVmZThmZjQxNTZiOTUwZCByZWxlYXNlMjctbWFpbnQKKzg1MzEzIDM5YTBiOTQzZTNlMWYxN2YxMjJmMWRlYzgwMWYwNjVlZmU3ZDUyN2YgcmVsZWFzZTMxLW1haW50Cis4NTMxNCA4ODRjNzFjZDhkYzY5NWE5MmIxNmMzMTM4Nzc5MmFhZmMxMmMzZDFhIHB5M2sKKzg1MzE1IGExNGUwNzRmYTQyZmM1NTJjMjQ5ZGM2N2IxMjc3NTI0NDRjZWI1M2YgcHkzaworODUzMTYgYzQxMTU1MmNkYzdjZDNiZTg5ZjYxMjM1MTU3MmY2MDFjM2NiNmVhMSBweTNrCis4NTMxNyA4YzU3NjAyZWExYjMwYzJhYTIxZWRiYzdlZGNhMWUyMmYwOGM3ZmQ5IHJlbGVhc2UzMS1tYWludAorODUzMTggYWNkYjMyMDA1YzBhYzMwZmFjMjg1ZjgzOTQ5YWRhODE2NTI5NjFhMCByZWxlYXNlMjctbWFpbnQKKzg1MzE5IDZhMmY4ZjY5MmYwNDhjYzg5ZTgyNGMyOWU4MmRkNGVmYzAzMDYyNmMgcmVsZWFzZTI3LW1haW50Cis4NTMyMCBhOTk2NGE0ZDNjMjlmMDYxZmVjMTkwZTFkZWMyOTAyNDkxNmY2ZGFjIHJlbGVhc2UyNy1tYWludAorODUzMjEgNGM5OGVlZmYzN2U3ZjNjMzJlYTk2MDBhNzc2OTFlNWEwMzUwZjBiMCBweTNrCis4NTMyMiAxYTA0MWYzNjQ5MTZiYjNkM2FiMWIzODZiYTQwNWM2NjhhMDcxZWNhIHB5M2sKKzg1MzIzIDQ5ODczNDRjZWUyMDAxMjhlYWEyNzVmOTBiOGQ5NjlmN2RiZTUzYjAgcHkzaworODUzMjQgYjFmYjA1MzliZjk4YmNiNDQ5NjQ5YzIxMGI4MjQ3M2NlMTI5MGMwNSBweTNrCis4NTMyNSBkYmUwMmU5MTZhZWNjZjRiZTg1NzVkNTAxOGE1ZjcxNThlNTg5YzU5IHB5M2sKKzg1MzI2IDU2OTNkZWRlOWEzYTA4NDAyYTcwZWYwMWQxMTc4YzlkYmY3M2VlMjYgcHkzaworODUzMjcgOWMwMjYxODNkODJhNGVhOTA0MTg5ZGMwMmVmNDNiYzI2YjFiN2E4YyBweTNrCis4NTMyOCBhZWRkYjE4N2ZjYmViYTU2ZTM3YzQ3MDMxOGY3ZDQyMzMxMjdiMjdmIHB5M2sKKzg1MzI5IDBiYmMzYmIwMGZjNGViZGJlYzdlNDE4Yzk4ODQ4MTRiZmU3NzlmOGMgcmVsZWFzZTMxLW1haW50Cis4NTMzMCA1MTU3NWJkYzU0MjA2ZmVhZjgxYTA4NWE3ZTA1ZDc0NTlkMDUzYmU1IHJlbGVhc2UyNy1tYWludAorODUzMzUgNDJkNmMyNjJjOTQ2NjcwNTdlYzQyNWJkYjJiYmRiZjZjOWYzMDUwMCByZWxlYXNlMjctbWFpbnQKKzg1MzM2IDBjNDg4NGRiNTNlMDQ5MDI1Y2ZkNTY2ZjViYzY5MjM4NDBjYzMzY2UgcHkzaworODUzMzcgNjU0M2ZhNGIxNDU4MTUyMzRiYjJiOWY3NzE2YzE1MWMyYWE3YWVlZSByZWxlYXNlMzEtbWFpbnQKKzg1MzM4IDdlMDFkNjk2NGQ1ZDdlMGFiMDc3YWNiZTcyMGNkNmFhZmI0NTk3MWYgcmVsZWFzZTMxLW1haW50Cis4NTMzOSAyZDE2NGIxYWViNzliN2RlMzFjZGU0YzI5NWViMDEyNzgyNWJlMWY2IHB5M2sKKzg1MzQwIGE3YWIwNDhjNjg0NWQ4ZTkzYzNhY2NhYmEyZjdkMGMyNzMxZjg4ODEgcHkzaworODUzNDEgZTdjOWE4NWZlOTYzYjU4ZGUwZjY4NGQ2YTM5ZDNkYzM5NWQ2NDQyZSBwZXAtMzgyCis4NTM0MiBjZjJjNTgzYjJjYmViZjE4YmRhYjQ5MTAxZjFlNTMyYWZmYjczZjY5IHB5M2sKKzg1MzQzIDgxMGI1NDBhZTY1MGY3NmRjMDJiZThhZDEwZjVkYzg1ZDIyNjhkZTMgcmVsZWFzZTMxLW1haW50Cis4NTM0NCAwZjZmYmE2NWJjZGU3ZDI5MTQ5MGY4MGJkNmI1MjY0NzJiODY1ZDJlIHJlbGVhc2UyNy1tYWludAorODUzNDUgYjYyODk5ZWQ3ZmI3ZDViMzc2MmYxOGE2ZDA0ZTcxMWVhZmMyMTlhZCBweTNrCis4NTM0NiBkNDc1Yzk0NTQ2YmVkNjU0ZTk1ZTgzM2VmM2M0NTg2ZWIxOTJmZDM3IHJlbGVhc2UzMS1tYWludAorODUzNDcgZmRlYjBkY2I5YTNmZDBkMTlmNDYzYmRhMmExZjY2OGU1NjdiODNlYyBweTNrCis4NTM0OCAyZmE5ZDczNDVhYzdmYTNjOTQ4MTM2MTEzMmQ0YWY0NjQ1MTZlZDk0IHJlbGVhc2UzMS1tYWludAorODUzNDkgNTFkMzA0ZWM2YzExYjU5NzRmNzRlZDU4OGE1YTgyNjJkNGI5MzFkOCBweTNrCis4NTM1MCBhOWE0NTYyNGNlZGYxZGUzMjQ1NWNkMmUyNmU4NjgyMDkzYWY4Yjk2IHJlbGVhc2UyNy1tYWludAorODUzNTEgMjMxMzRlMTY3M2Q3MWJhOWJkMGY0NDg3MGUzN2E4MWM2ZjZiOThjYSByZWxlYXNlMzEtbWFpbnQKKzg1MzUyIGVkNWU1OThkYTE1MGVmNmI5MDU2YTA3MjczMGE0YjQ5M2E4YjMzYmIgcHkzaworODUzNTMgMjVkMDc4NzM5YzJhNGVkODM4NWRkNmFkMTZlNzFlNzM5NmQwYjE0MCBweTNrCis4NTM1NCBjMDE5ZTk3N2YyMjJjMzBiZDM2ZWEzMDA3MTJhODc1MTU0MzQzYTYyIHB5M2sKKzg1MzU1IGVmMjFmOGM5OWZiMzQwNTJjZWQzNmJlYmUyOGY5ZDRjNWRlYTY1ZTIgcHkzaworODUzNTcgZGEwMTJkOWEyYzIzZDE0NGUzOTlkMmUwMWE1NWI4YTgzYWQ5NDU3MyBweTNrCis4NTM1OCBhZDE1Yjg5MTA2ZGUzYmUwNWUwZjAzOTZiMDY3YTg3Y2VkZmUwZTAxIHJlbGVhc2UyNy1tYWludAorODUzNTkgNDUxOGIyYzJkNjE0ZjEzODE3ZDhlODc1Zjk1MDMzMmNhNWE3MThlZiBweTNrCis4NTM2MCBjZGM5NWZkZGRiN2IyYmE5ZGFhMDMyN2NhYTVmZTljMWY4YmNmMmRlIHJlbGVhc2UyNy1tYWludAorODUzNjEgNWVkZTE1ZTEyNDU4MTY5OTA5M2VjYzQ1MjA2ZmEwYjdmNWQzZjAwYSByZWxlYXNlMjctbWFpbnQKKzg1MzYxIGQ1MGJmYjdhYjU3YzkyNmJmMDdmYWJiOThjYjc4YWFjMDYwODM4YjcgcHkzaworODUzNjIgNDc1ODMwNDI0YzFlODE4NjA1OTk0NTNiMzA5YTk3NGU2ZTNmY2FjNiBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MzYzIDVhYWVmYTk3NTJhY2I0OWE4MDdhZGNlY2EzNWQyMDg1YmEzNDEzNjYgcHkzay10dGstZGVidWctb24teHA1Cis4NTM2NCA2MmMxNGVkNmI4YTBhNjI0YTlhMDU5YjhhMDQ0ZGE3YjhmNWFjNTdkIGlzc3VlOTAwMworODUzNjUgMjY3NmFmNjU1MTRkNGQ5N2E5ZmEyYjhiNzQ0MjgzMTEwZmZmNTgzZSBpc3N1ZTkwMDMKKzg1MzY2IGQ0OTA5YTA1NmQ0ZTc4MDNiZThhMDkyMWUxODE3YWIyZTVkODlmMDMgcmVsZWFzZTI3LW1haW50Cis4NTM2NyA0MWE5Zjk1MWViZWE1ZTFhYzZjZWU2MzExZGZjZDczNDU4ODU3MjcwIGlzc3VlOTAwMworODUzNjggMGFkYjY0NDA1ODFlZTFkNWE2ZjNhNmVhNDQxZmNjNWU5Njc5Y2Q2NyBpc3N1ZTk0MzcKKzg1MzY5IGY3ZjcwNTI5MzEwZjg0YjkxM2M5MmM4MTQ2ZGZmZWFmN2M3YmVkMzAgaXNzdWU5NDM3Cis4NTM3MCA5ZDZkODMwNjNlYzIyYmRjNDIzZDQxMWFlYzAwMGIzOGQ5M2ZjZWM2IHB5M2sKKzg1MzcxIGNiZGU4MWVmNGFmN2MwMmVjODRlOGE4OGMwZDJlMzI0MWFlZDRjY2UgcHkzaworODUzNzIgMThiNzI1OWNkOTJkODM4ZWY2OWZkY2RhNzY4MzdiM2M4ZDVmZTZkNSBweTNrCis4NTM3MyA5N2Y4MGQwYTFkNTYzOGEzYTFmM2U3MmZmYTQ0ZjA2ZTU0NDA3ZWI4IHBlcC0zODIKKzg1Mzc0IDY2OWMzNzI4NzUwYjE3NTZmYmRiOGEyOWVhZDE2MmJjMzllMWMwMTMgcGVwLTM4MgorODUzNzUgNWZhMTI1YWUwN2E2NDE3MjM4YTBmNWQ3NDAxZWNjOGFlMTcxZmE0MiBweTNrCis4NTM3NiBmMzIwMGJlNGVhYTA5ODRkODEzM2I1M2E3ZWEwZjA2OGMzMjQxNWJhIHJlbGVhc2UzMS1tYWludAorODUzNzcgZmFhNGUyMmFhYmE3ZTRiMzZlZjkzZmEwY2U2MWIwZjBkY2EzMzEzYiByZWxlYXNlMjctbWFpbnQKKzg1Mzc4IDhjZjFhZmYxODU5YzYyNjNhNzVhMDBlZWZjNDgxMmI1ZjhlYWFmYjAgcGVwLTM4MgorODUzNzkgNmQ5MThkOTEwYTk2ODdmOThlOThlNGIyMzk0Nzk3Y2EzY2Y2NzE3YiBwZXAtMzgyCis4NTM4MiBkMjQ5MjhjMjgwMDE5MThiNGRjNmVjM2UxMzFlYzkyNWU2NWYwMWE0IHB5M2sKKzg1MzgzIDljNzIzYWZhNDRkYWJiNDIxODE5YTdjNzQ0MmU2OGY0YzI4ZGU0YmQgcHkzaworODUzODQgNDYxM2UxNDQ5MDAwNjgyNDNmYzBkODI4ZWRiN2MxZTExOTc2M2NjZCBweTNrCis4NTM4NSA5ZTE0N2MzNDkxMjZjNmU4MWQ2MTRjNTBiNzk2YjNkZjc0MGFkZDZhIHB5M2sKKzg1Mzg2IGRlZDYxZTI2Yjg0MTRmNDdhZGQ2Y2E3NDk5YTFmNDQzNjlkNWQ3MDcgcHkzaworODUzODcgYTgxNzIwNWQyNTRhOWY3OWZlN2ZkZWMyM2UzYzJlYjQ1YWE5NjY2YyBweTNrCis4NTM4OSAzOWIzOGNhMWFjMDRiZDFiNTFhY2IxZTk1ZjFiNWJmZDE0ZDNlYzg4IHB5M2sKKzg1MzkwIDJmZmJmYmMwZDNjYjE2YzYxN2UyYzg5YTY0NmM5NDZhZjFmMGUzOWUgcmVsZWFzZTI3LW1haW50Cis4NTM5MSA2MTczMWVjOWEwNDgxZTU3MTYwNjgwMTk0NjFmM2ViOTk3YWYxMWJkIHJlbGVhc2UzMS1tYWludAorODUzOTIgZTJhYTNiMWQwOGJjYmMxMGFmNDNkYjBmMmNlMzM2ZTBiMjg3YTk1NSBweTNrCis4NTM5MyA3OTA5NDM2NDA4ZTJlZTA4YzRhMWIxMmE3OWE2YjIwZmIyOGE3NjI2IHJlbGVhc2UyNy1tYWludAorODUzOTQgM2U4ZDI4ODg2YWQ2NjBkOWMzOTRiMTQyZjJhYThmYjhlYWFiMzNlNiByZWxlYXNlMzEtbWFpbnQKKzg1Mzk1IGYyZjUyYjQwYzFmMjhkMjgwNGVhNDYwZTBjMTRmMmNmN2RhMDhlNWIgcHkzaworODUzOTYgZDdhNzFmMWQxZTM0MWMyYTljZDFjMzJkNDVhOWU2YWIzNzEwN2YwYiByZWxlYXNlMzEtbWFpbnQKKzg1Mzk3IDIxOTU3YjNiMGFjYTA5MzM0MWMwNjI2MjViNTNlNTRlYjVjNzczZWMgcmVsZWFzZTI3LW1haW50Cis4NTM5OCA3NWJlYjY3NjJlM2IwMjM2NzlkMjBmYjZkZWU5YjNkMTg3ZDNjMjQ0IHB5M2sKKzg1Mzk5IGMwOTA4Y2ViZjE4NDEwZmM3MGQ4Y2UzZDkyYWUxNjRmNDhhNzQ1NzMgcmVsZWFzZTI3LW1haW50Cis4NTQwMCBkMGY2MGJlYjI4ZjIzZjIzMDQ3OWIyZGEyM2ZlOTgyMzUyNWE1N2VkIHB5M2sKKzg1NDAxIGVhZDUzNjRjNGE1OWE3MzNhNGFlMGRkMjZiYTZiZjI1MjA2Yjg3MzkgcHkzaworODU0MDIgZjI5Y2UwY2MxZDRjZTZiNmNkMGRlMjBhMzA1OWEyYzEwYjQ3YTcyYiBweTNrCis4NTQwMyA3NTIwNmRmOGU1OGM2MDI4NTBkMGVmOWZkNmMxYjY2OGJhMTQ2YjE3IHB5M2sKKzg1NDA0IDJjZTY0OTYwZDQ5MGRiNmRmYTQ3M2JmM2Q2ZDVjMGQ4NWZmNzE1YTYgcHkzaworODU0MDUgMjBmNDYzYTQ1ODRkN2M0MmUwMzg2YThmMTAwNmEzOGVlOTkwM2ZhYyByZWxlYXNlMjctbWFpbnQKKzg1NDA2IDI0NmQzZGZjZTdiMTAzZDBkNTdmMjRkMTllZTEwZTkwNTZiN2M5ZmEgcmVsZWFzZTMxLW1haW50Cis4NTQwNyAyM2VjMGJlMDdlMjBlZGRmODk5YzRjNTE0NzdlYzgzNjc0NWIwYTM3IHB5M2sKKzg1NDA4IDEyMzI3YjlkMzMyNTE5ODFhNTgxMzFhNjAxZTUyNTg5YWIwNmVmMGEgcHkzaworODU0MDkgY2I2ZTliMDNkMGMzMjBjODZiM2VkNmZkOTE3ZjNiMTFlZmNmYTUwNSBweTNrCis4NTQxMCBhMTU2Nzg5Mzc4M2YyMzJkZTBhMzY4YmY2NWY5YjdlZmIyMTY2MjM3IHB5M2sKKzg1NDExIGJmNWNmZTlhMGJiNWU1MWU4Mjk1MTNiNjQ1NzQxMGQ0NTFlMTQ2NmUgcHkzaworODU0MTIgZDAyZDZiYjAyNTM4NTI1Mzk2ZmIyNzAwY2EzMTY4MmNhOTlhZWE3NSBweTNrCis4NTQxMyBlNTE3YzNmNTYwOTE4NGIxYTM3ZWRmNDg0MTU5MGZiNDU4ZjVhOTIyIHB5M2sKKzg1NDE0IDVlZjc2YmMxNzFhZDZkN2Q4ODRiYmU0YTdhZWY1YzQ5NzAzMWFhYTEgcHkzaworODU0MTUgMzcyMTM0MzhlMjFmYWZmZmU3MWNmNzBlYWI3ZDcyMWU2OTQ1ZDkwZCBweTNrCis4NTQxNiA0MGVjYjRkMDBmMjVhYjliMTQ2ZWJlOTJlMDIxNTI5ZGE4NjYyMGM5IHBlcC0zODIKKzg1NDE3IGM0OGMwOWU2OTNlNmM5MThlNDhkMjE5MWRlY2M1YzBhMDkwNjkxMzcgcHkzaworODU0MTggZmE5MDU3MDA3NzU1NTFmNDc1MDY5NDY0NTY4YzlmZjVhMjdkMDE3ZSBweTNrCis4NTQxOSAwZDE2ZDUwYzU3YTBmMjM0MmNlMjg1N2FhMDA4MDg1ZDBhYWJlNDlhIHB5M2sKKzg1NDIwIDE4NzViZmVkNTY4OWI5ZDAyOTI5YjY4ZGZhOWZhOGJjYWY5MjExNTEgcHkzaworODU0MjEgMzYxOWMxMjE0MDA3ZDNkNWUzZDA3ZDIzNTdmNjdiMjJhZDI0MzJmNyByZWxlYXNlMzEtbWFpbnQKKzg1NDIyIGVlYWVkY2JlMjgxZDU4NDRmYjM1YTNkMDM0YTMwMzBjZTRmOGVmMjIgcHkzaworODU0MjMgNjg5OWE5Y2E1ZjM1MzVkYjM0OTJhYmRhMDFmNmM0OGYxNTgzZGU3NCBweTNrCis4NTQyNCA4YjE5MjUwMmE0YTlhZDc4ODM5MDY5NmNkYTM3YzI2ZjEzYzZiNzg4IHJlbGVhc2UzMS1tYWludAorODU0MjUgNjEwYzI1YjVjZmEyODliZjc1NDY3OGI2ZDM0NmZjNjUwOTNmOWIyNiByZWxlYXNlMjctbWFpbnQKKzg1NDI2IGExZWRkYzY0Yjc1MDQ5Yzk3ODgxMDVhOTNlMWUzNzQ3YmFlNTk5NTAgcGVwLTAzODQKKzg1NDI5IDE5NjBmNThhZjc4NWQ0YTcwYWRiZmMwNDE5MmU3ODJiODE2YmYxOTUgcHkzaworODU0MzAgYTc1ZmQzMWRkYWJiZWVjYjAzOGFlYzZiZjRiNGI1YzcxYmQ3NmM5YiBweTNrCis4NTQzMSAwMGQxM2IyZjgxYTNjMzFhMTIzODg1ZmZmMGJiYjc4NDZiY2E2NWIxIHJlbGVhc2UzMS1tYWludAorODU0MzIgNjFjMzU0NzJhNGY4MWE0MjI3NzcxYzFmODBkYjcwYTgzZTE1YWM2NiBweTNrCis4NTQzMyA2NDc0YWRkZDI4MzhiNzY5NzdmZGI4NWJmYzYyMzcwMGNiMzQ3YjNlIHJlbGVhc2UyNy1tYWludAorODU0MzQgZjJmN2I3MGZjNWViZTRmOTBhYTQzNTA4NGI5MWZjOTRlMWQ3YzYzMSByZWxlYXNlMjctbWFpbnQKKzg1NDM1IDMzMzVlZGNlNDhhMzU0NjQ5YjJhOGE4YmM4ZGNjYmJhYTcyMDUxNTUgcHkzaworODU0MzYgYTRhNmQ4MjNmZjg5NTE2NjIyZjE1MjNlNGQxOTZhOTk5MGJjZGQyZCBweTNrCis4NTQzNyA0NzU1NzQ0NzI0ZjIwYmFkNDc3OTZiNWNkNzY3ZmEwNjc2OWViMTYwIHJlbGVhc2UzMS1tYWludAorODU0MzggMWYyMjVkNjY5NDFhOTIzMDI2NTIyMWM4MDIwMzZlYTg0MWMyYjdiNSByZWxlYXNlMzEtbWFpbnQKKzg1NDM5IGU3NmY1NTQxNThhODViZWEzYWY1MWQ5ZDhmNzc2ZTc4NDk2ODliZGYgcmVsZWFzZTI3LW1haW50Cis4NTQ0MCBlOWVhMDk3ODdhMzVjZjkzY2Y1MzVmOTY2NDlkZmFjMTI2YjBlZmQ0IHB5M2sKKzg1NDQxIDRjNTcwNmJjMmY0MzA1MWZjNjhiZjY0MmUwMTdhMWQ0YmY2ZDBlZTEgcHkzaworODU0NDIgNDlkZjc3ODg4OWU2ZmFjY2UzOTZlMGQxYmNjY2U2NzI5YTU5YTEzOCBweTNrCis4NTQ0MyBhNDY3MTFkZTkyOTEyMDcyYmQxODc4Y2FjZDcxYmZkYWFhMTU1ZDA2IHB5M2sKKzg1NDQ0IDc4YTEyYjgyOWE5YWE5ZTc3YzRiYWY5YzM0MjAxNmEyNWQ2MTZiZDYgcHkzaworODU0NDUgMWU3MmFiZjA3M2M1NmY1ZTMxMDMxMjAyZWJkODNlMzZjODQ2MDMzOCByZWxlYXNlMzEtbWFpbnQKKzg1NDQ2IGViZTE0Y2NiYTFiN2I1MWE4NGIxOGI5YTA2OTQyN2M1ZjhjYzJmYmEgcmVsZWFzZTI3LW1haW50Cis4NTQ0NyA2ZmQ0OWQwNTIxMzQ1ZGFkMWZjODJlOTYzNTdiYWM1Y2E3NjUzZTQ1IHJlbGVhc2UyNy1tYWludAorODU0NDggZmEyN2RkMTI5OGZlNTc3NjUwODcyZGNkMTY0ZjZlYWExNDAyZDRjYyByZWxlYXNlMjctbWFpbnQKKzg1NDQ5IDJmM2UwZWVjYzc2Mjc3YmY1M2MxNzcwYTQ2Mjc4OWVlMGQ1NmZkOWMgcmVsZWFzZTI3LW1haW50Cis4NTQ1MCBjY2M0MjRjOTY2NDI2YmQxNTIyMjAyZjIwOTRmMjkyZmViMGE0OTRlIHB5M2sKKzg1NDUxIGI1Y2UwNmJiYjA2ZmUyMTMwMzEwNzI5MjQ1ZTM1ZGM5NjIxOWYwZDEgcHkzaworODU0NTIgZWEyZmU5NTgxYzJkOGYwYTIwMzdmYTFhYjBmODQ5MzIxMjJmZTZlNSBweTNrCis4NTQ1MyAzMGIzZDdjNTI1M2Q1ODhlYjUwNzA2OTA1ZWU5MTkyMjk0ZWQyNzY2IHB5M2sKKzg1NDU0IDM2MTFlYTQyYjc5MmRjMTNjNTU0OGM5NjhiNWQzNzhmZTI5OTM1OWQgcHkzaworODU0NTUgYmE2NTgxZWNiNmYxZWU3YTQ4MzIzNTRiNzg4OWIwZDJmOTQyZDg2YyBweTNrCis4NTQ1NiBmZDA0NGNkYTk3ZDgzNzBmY2UzM2ExMzkwOGViYzA2MGI4MGY5MTU4IHB5M2sKKzg1NDU3IDZhYjBmOTIxOTY2MGI4ODJlZmQ0ZGY2NGM5MzE2MTVjOGY1ODFiY2IgcHkzaworODU0NTggYmVhZTc2ZWQ1ZWJmZTNmOGUzYzA2YmM4NjZhZDBlNmNkZjliNGJlZCBweTNrCis4NTQ1OSA3ZDc5Njg4MTU2ZGI1ZmRiYzkwMGQ4Yzc3MDcyZTYxN2I0OTFlMjQ3IHB5M2sKKzg1NDYwIGRjMjAwY2YyZjU2NThhYzEwNWRlZjUyZDY5M2FlNzc1MmQ5NjVkOTAgcHkzaworODU0NjEgMmYxNzlhM2NiMjA2NjBhMzJjY2Y4MTVlN2Y0NGIxNWNjNTMxZGEzZSBweTNrCis4NTQ2MiA4MmNkZThiNzM3MjgyMzE5MWM5OThkNDAwYzQ3ZmJhMjNlZDdmN2QxIHB5M2sKKzg1NDYzIDRhOGUwZDg5NzU1YjY0YzJlOTAzNTMyZWJmYjYxMTliNWVjMDVkNmEgcHkzaworODU0NjQgNjdhMjE4NTcwZjRhNGUxNmIwNDVhMzU4MzY4MWMxMDYxYTBlZWEzZCBweTNrCis4NTQ2NSA2NjBhZmRhZWIyZDZlNjA3MjNlYWRjYjY1NzRmYTA1YWFhYThiZGZmIHB5M2sKKzg1NDY2IDI4NTNjYWQ5Y2JjMDI0MzAwZTA1N2IwMDRhYTU2ZDg0ODg3MGFlMTcgcHkzaworODU0NjcgZTJjOThjNjBkZDY0ZDBhNWQyMTA0ZDczZmNiNTg2YTI0MTBlMTc0MyBweTNrCis4NTQ2OCBiNjUyMDYxMjliNWM5NGM2ODZkMTQ3NWE5MzA5MTI4OGRkYzU0NGI3IHB5M2sKKzg1NDY5IDk5NWMzM2UyMjYzYjFjOTEwYWFiNDFhZjRmMWExZWJhZjdjYjg4NzkgcHkzaworODU0NzAgYTVlZWFkMTQxY2I0NjM1NmY1ZWJjZGQ5ZDJlNGNiNTE4ODgzYTg5MyByZWxlYXNlMjctbWFpbnQKKzg1NDcxIDZhODQ4OTU1NDAxOTgyYzI2ZDZmY2RhYTk1NzIyNzM2NjRiM2ZhOGIgcmVsZWFzZTI3LW1haW50Cis4NTQ3MiA3MWU3NmQwM2ZjNjdmMjUwNzc0YWNiZmFmZmJlZGY0YzQ0NGY2YWY0IHB5M2sKKzg1NDczIGQ3ZjkwNzM1N2RhN2U5NTBjYmNkYzQxOTg3YzA1OGYxYjdjYzY5ZmIgcmVsZWFzZTMxLW1haW50Cis4NTQ3NCA4MTNiNTFhNmE0MTc5OTdkNTVjMTg1Nzk0Y2ZmNGMxZWFmZTJhOTRjIHJlbGVhc2UyNy1tYWludAorODU0NzUgOTgyYzhlYzczYWUzN2UwZWQ2ZDU0OTczZWJhM2Y3MGJmNjM5ZWM4YyBweTNrCis4NTQ3NiAzZDllZjA5OGRhZjJlMzZmY2JjNmQyMmY3YTk1NmFiNjczYjAxMzBkIHB5M2sKKzg1NDc3IGEyN2ZjMGZmMzY3OGIwMDk2NjM0MDc2NTBmMjllYTRmMjE3MzRmMDEgcHkzaworODU0NzkgMDhhOWMwNDYwMDRkZDExYTk0YWY5ZjFlYzMxMjJmYWQ0MjhkYjZmZSByZWxlYXNlMjctbWFpbnQKKzg1NDgwIDEyNDQyYWMzZjdkZGJiYTNjYmU5ODA0YTkzMjg5MDU0ZTliZGVjNDQgcHkzaworODU0ODEgMTkwZjI0N2VkYjllZWJjZjMwZGZmYjJhZmQxNDk5N2VlYjBiYzcxYiBweTNrCis4NTQ4MiBhZDQwYzBhM2UyMjE1NmExZTNjNWNjZjUyZDg4ZDhiZWI1NjAzYWQyIHB5M2sKKzg1NDgzIGI4M2YwYTY2N2U3Y2ViMmVlZDFjMGQzNmQ4YTRiMDc0ZGE4MzZmOTUgcmVsZWFzZTMxLW1haW50Cis4NTQ4NCAwN2I2YmI3NmVlNDM5MjNjNTU2ZmQwMDk3MTVmMGMzYTU1ZDU5YzNmIHJlbGVhc2UyNy1tYWludAorODU0ODUgMDc4ZTJlNDdlNTJiMDZhZmUxMmQxODE5OTk5ZWVmZGEyMTY3ZTYzMiBweTNrCis4NTQ4NiBiODg2YmY2MDI1MTNiNGY3ZTk3ZTE1NzE1ZmY0MDNkNWNiODdjN2U3IHB5M2sKKzg1NDg3IDkwYzJiNjU0OTBjNzUzMjMxNmFkMGQ3MTVkM2E2NzM2OWM1M2MxNDQgcHkzaworODU0ODggODBkM2EzNzQ5OWIxYjJiMjA5YTZlZDg1NzlmNjc2YjA1NTQ3NGUzNyByZWxlYXNlMzEtbWFpbnQKKzg1NDg5IDA2N2U4YjIwMDBkZDA1NzkyZWYwNDNhNjA2NzZlNWY1ZjVjZTIzYjMgcHkzaworODU0OTAgM2U3OTEzNGM2NTM1N2E3NjJkYTI1ZmFlMTA2ZTUxZWYzYWE0MDBlYiBweTNrCis4NTQ5MSAxYTYwMTNlZTk3NGIwODc3Yjk0YTEzM2M2MGJkMzI5MmM0NzhjYzdkIHJlbGVhc2UzMS1tYWludAorODU0OTIgMjUzYTI2ODc4NTg1NzQ4ZmJlOGJmNjU4MTI3MGFlYzg2NDc2Njg4ZSBweTNrCis4NTQ5MyBiN2VjZDk0NGI3Y2ViMmFkMWM3ZmNiZTEwODJhMmJhN2IwYmZiMjk4IHJlbGVhc2UzMS1tYWludAorODU0OTQgZDUyZDVkMzU5ZGIzMTAwMTBlZjc1ZDVhYjVhN2YyNWQ1YmVlMjgyNiByZWxlYXNlMjctbWFpbnQKKzg1NDk1IDA1MmMxOTlhZTE5YTliMDliODMyNDlkNjJhMTc1Mjk0NmEwYmJhZjYgcHkzaworODU0OTYgZjNkYThjZDc0MTEzNzhiNmQwOWQ1MDY4ODUwN2IxOWM4NTMwZDJlMCByZWxlYXNlMjctbWFpbnQKKzg1NDk3IDQ2OTU2YTI1YzI2NDFiZmU3YmM4YzVhYzNlYzU2YjE4ODk5ODg3MDYgcHkzaworODU0OTggNjI5NjYzMmFkMmNiZTY1ZjcwMzFiYmUxY2U2ZmYxYzIzMzIyYmFmYyByZWxlYXNlMzEtbWFpbnQKKzg1NDk5IDQyNjkyNjdlNmU1N2RhMjQzMjVkZDc2YjM2MjAzNDFhYWZiMjk4NDggcmVsZWFzZTI3LW1haW50Cis4NTUwMCA2Y2YyMjNlY2FhNmYwZGM1MzI3YzVjMTkyNmUzMTVmODcxNjA0MTcyIHB5M2sKKzg1NTAxIGNlYjEyNzAzYzZkYmEzMzAyNjE1ZWMwZWUxNmQ2Nzc2NjI1OGI5ODQgcmVsZWFzZTI3LW1haW50Cis4NTUwMiAyN2MwNTEyNDcyMzNhNmUyNGIzNmIxNzYzZTUxYjYxNGNkYWJmZTI1IHB5M2sKKzg1NTAzIDRkNWYwYzQ0ODdlYjlmZmIzNjVlOTMzMmQ3NWE0ZGVkMzNiYmM1OTYgcHkzaworODU1MDQgMTc4MmRhNDQwZmIxZTQ0NmY3NzhkZDdlNDMyNWFiNWM4NjY5OTlhNyByZWxlYXNlMzEtbWFpbnQKKzg1NTA1IGZlYThmMjFiMTk5ZDc0ZDdiNDA4ZGE5NWU3ZDUzNWE5MGYwNmIyNTcgcmVsZWFzZTI3LW1haW50Cis4NTUwOSA3ZDFlNDUzYjEyMGI2ZTYyYjlhNTA2MWFhZjYyNGJjY2E4NzkwZmNhIHJlbGVhc2UyNy1tYWludAorODU1MTAgODlhOGJmNTMyNWNkMTVmZWE5ZTMwZWU4ZmE5Mzc4ZTgzZjY3NGRlNSBweTNrCis4NTUxMSA1ZTE1NzYwNTA3NDliZWJhMThiMWMyOWNhMzg0N2U1ODQ5ZTJkOGZlIHJlbGVhc2UzMS1tYWludAorODU1MTIgMTc4MDY4NGFlM2FkOTdjMGZiZTZjYTNhYWM3MWYwNzkxNmIwNTQxMCBweTNrCis4NTUxMyBjM2YyYzVkMzVhZmFmY2Q4OWY3ODBlZGYxMGQ4M2E5OTAyNWE0NDM3IHJlbGVhc2UzMS1tYWludAorODU1MTQgZTUxMjM3MmY3NDk0NmQ2ZjhhM2I2MDU4NjgwYmYzMjUxMWE2ZWE2OCBweTNrCis4NTUxNSBjYzFkOGEyZGIzNDg2ZTQxMjgzN2EwOWI5NWQyYzkwNGE0NDAwYmE2IHB5M2sKKzg1NTE2IGY2M2Q3NDc2MjJiZDUxNzM0N2YxZWFmZTAxMmExMmFiOWVmMmE1NzAgcHkzaworODU1MTcgNDUzZmQ4MTgyYzJmOTZlOWUwZTE3YzNmMzNjZGY3MmQ1MDJlYTJiZiBweTNrCis4NTUxOCBiYjMwMzkzZDFlYTE4OWFkM2NiNjdiOTU0ZTdmNzM3ODAyMzg5ZjczIHB5M2sKKzg1NTE5IDE1Nzc1MWNjNGNkNTE4ODM3MDBlOTkzNmYyMjk3YzljZDZiNTJkZWYgcHkzaworODU1MjAgZTc3M2ExZjIzZDQzMzkzZTdiYmY3YTMyZjc0YjQxNTA3OWJmNjAzMSBweTNrCis4NTUyMSA5YzczZmUzZjQ3ZTI2OTA2MDk5M2QzNWE3N2MzYzUwNGM5Yjg0ZDk2IHB5M2sKKzg1NTIyIDZhMzY1YjlhMjJiYTljM2IwMWRlNTA4N2IwNmQyYTJhNTVhMTE4M2YgcHkzaworODU1MjMgNTIwMjVjMzU0MWQ4ODhmZDE5YjA0NzVkNGJlOTJkMWFkZmQwYjU1NyBweTNrCis4NTUyNCAxZjVhMjhiYTc0NzdkMDJhM2I4MTUyMDI5YTI5OTFhOGNlNjAzYzlmIHB5M2sKKzg1NTI1IDg4YmRlZjUzNjBhZjAzYWNlZmZlYjdjZjE3ODU5YTkwZWM3MDNhNzkgcHkzaworODU1MjYgMzIwZDBmYTIxNjU4ZDFkZjc0MTg5NmI0NzM1MjM2MDViMTk2MTk5NCBweTNrCis4NTUyNyA0ZWJjMDMwOGY0YjEyZWUzZjhiNThkOWJjOGFlZGQ5ZTZjNmEzNzRjIHB5M2sKKzg1NTI4IDBiNTBkODcwNjEzNDQ2MzRhNzExMzI5MmZmZTM5MTIzMGZhNzRiMTEgcHkzaworODU1MjkgODBmZTA2NmMxMzVhOTA0NzY4MWI1ZTQ3MWMzNTQ1M2YxYjhlNTg3MyByZWxlYXNlMjctbWFpbnQKKzg1NTMwIDQxODY4Y2E1Mjc0NGM4ZWQyZjNhN2UwZDQ1NGY3NDYwNzJiZWExNDEgcHkzaworODU1MzEgNTYzM2FmNTkwMDU3MDJiOTUzMTAwNTZkMWE1ZTRmYTRiZmU2MTg3ZiBweTNrCis4NTUzMiA4ZjZhYmEyM2ZiMmFiYzc1YmU5ZWIyYzBjY2U5NGJmMTJkZGQ1OGJjIHB5M2sKKzg1NTMzIDEwNDM1OGI1ZDRkMTQ0NmRiYzA1YWJlMGVmYmM4Y2RiMjNlMTU0MDggcHkzaworODU1MzQgZGMyNWM1MGE3YzExNjA2ODg0OTEyZDAyYjUwMTEzNmJkMDgwMDVkZCBweTNrCis4NTUzNSA2YjgzMTQzNzZkZTJlZWI0ZTQ1NmVlMDc0NWY4NWUyZjE2MTA1ZmZkIHB5M2sKKzg1NTM2IDkyZWE1NmI1MmQ4ZjczMTRiYzU3YWE5N2MxODUyYTgxOGZkMzAyOTggcHkzaworODU1MzcgOTcxMjU4NmZhNDJmNWY5ZmVhMGUzNzEwNTU3ZTgxYzhiODM4ZDdiZSBweTNrCis4NTUzOCBhYzg2ODA2ODVmZGVhYTNlNzdmODA4NWRmNTQ2NzU4NTNlZTY2OGM2IHB5M2sKKzg1NTM5IGQ4Mzg0ZmNlM2M3M2I5ZGFhZjQ2YTdiY2Q1MTUwZjE4ZTBmOTZlZDEgcHkzaworODU1NDAgNzhkNTM4NTkzOTVhNDQ2MmU3M2Y2ZWM2NzM1YzU2MzEzNTJiNTFkOCBweTNrCis4NTU0MSBmMzNiYjg1MDc4OWVhODUyZWQzODY2NDU1NDZhOGRkMjU5ODQ5MzQ1IHB5M2sKKzg1NTQyIDdkZTM2NWMxOTg2YmFiYWI2ZGM5OGVlN2IxNzdmMzRlMjY0NGQxN2IgcHkzaworODU1NDMgNmY0Y2Y3MzAzMmZjOWI4ZmM4NDZiMmFhMmI0MTZhMjcxNjJlMzJkNiBweTNrCis4NTU0NCA5MzQ3YjBhODVjYWY1ODZhYzBlZDE2ZWQzOGMzNWY1OWExYTE4ODBlIHJlbGVhc2UyNy1tYWludAorODU1NDUgZWVjNDk5ODQ3ZGY3YmI5ZDgzODRiYmFkYjg0MmEzZDE4ODY2MzM3YSByZWxlYXNlMjctbWFpbnQKKzg1NTQ2IGI3MWFhZjRlN2Q4ZDkwMWJhZmYwNmNjZDE1NTU5MWFkY2FiM2Y1MmQgcHkzaworODU1NDcgMGUyY2JjMzFmYzkyNWUyOTYyMmU4NGZiZmYzNDI0YzgwNmJhMDBhOSBweTNrCis4NTU0OCAzOTRjMDBiNGM5MTk0Y2ZkNzI2ZWEzMmIzMTI4MjFmODc0NmY5MzBmIHB5M2sKKzg1NTQ5IDg0NGVkNmRkZGMwMzFlZmU5NjRlMzVkY2JiOGQ1MjljMjBmZmE0ZmUgcHkzaworODU1NTAgMzQ4ZjMzNjk2NDAyMTU1MDE0OTljN2YyZWE4MDU5YWY5MWY5NzBjMiBweTNrCis4NTU1MiA5MDA1Mjg4OWNlM2RlMzNjMWFlMGEwOWI0ZDA0ZmIzYzEyYmNlODZhIHB5M2sKKzg1NTUzIDI5MmIxZGYwMWJhZDg3YzdjM2Q3MTc1ZjZhNjc4MzFmNzQ4MTliY2EgcHkzaworODU1NTQgM2M0MjI1YmY4N2I0MTI2NjM0NTY4ODNhYjhkNWUzZDVmNmU3OGZmNCBweTNrCis4NTU1NSAyYjE3YmU2MmM3NGZjYzgwMzUyMzE0MTc2MDBkYWY3NGY5MjM3ZjVjIHB5M2sKKzg1NTU2IGQ0MzkwYjZiZjdlYzhlMTZmMmU0MTBlMzk1NTcxMmYwNjFkNTczMjIgcmVsZWFzZTI3LW1haW50Cis4NTU1NyBkZGYyZWFkMjZhYWE0NWVhNjllMDhmMTFmMTMxZjE5M2U1Y2Q3M2M4IHJlbGVhc2UzMS1tYWludAorODU1NTggNGQ2YzYzYzY1NTUwYzIzNjk5NDgyNjgyYzQ3NDZhYjY3Y2JlY2RhYiByZWxlYXNlMjctbWFpbnQKKzg1NTU5IDkzMmY5N2JmYmRjMGM1MDQ5ZmVhZmM4MjFhOGFiMTQ2ZDE0MTdkMTIgcHkzaworODU1NjAgZmNkYzJmYWU1MGMwODFhYzliNzAzZGNhYzk1N2Y5ZmIwMzM0ZDBlZCBweTNrCis4NTU2MSBmOThjM2UyZmQwNTUwMzMxMjQ1MmUxMGE4YjVjNzc2MDUxYzNiMzgxIHB5M2sKKzg1NTYyIGZkNWM4M2Y3NjQ0NzUwYmQyNGFhZmYwY2MyYmU4ODc2YjMxNzkzZWIgcHkzaworODU1NjMgMzYxOGQ5ZDc5MDJkM2NiNDQ4YjI1MTdiMGZkNDgwZDQwOGFiMTVmZiByZWxlYXNlMzEtbWFpbnQKKzg1NTY0IDBiZDBlODdhNjg1MTU0MjI0NmRhNWE3ZTNmZTU5ZjczNWQyOTI2NTggcmVsZWFzZTI3LW1haW50Cis4NTU2NSBmOTE4NGU3Y2QyNWNlMTMwNzUyMDRkYTc4ZGY0M2I4MTcyZjc2ZmM4IHB5M2sKKzg1NTY2IGRkMDg2N2JkOTU1NzkwZDhjODYzNTk2NzE0ZDNkNGYyYzk1ODIzMDUgcHkzaworODU1NjcgMDllZmZmZTcwMDMwNzAxOGVmZTFiMTY3ZTBlZjZkM2ZmNGM2N2UwZCBweTNrCis4NTU2OCA3NmM4ODhmZDIzODBkZjI2YjgwMzI2ZjFmNjY1Yjk4OTI5NWIxMTNmIHB5M2sKKzg1NTY5IDU1ZWQ1YzUyNDQyOGNhMjI4NjRkYjY0ZDhiMDVmNjU0NjhiNWRiNWQgcHkzaworODU1NzAgOWVkNjhkZDZiNzFmZjcyMzM5YjdiYTk3Y2E1ZDI0NzQ3NWUzZWU5YyBweTNrCis4NTU3MSA2MDM5ODQ1MDkzNDMwMmMxMDZlYjkzNDI5OWE4YjQ2NWMxMjViNTQwIHB5M2sKKzg1NTcyIDY4NmEyYTkxZjgyNjA4MGVlOGU1YzMyYjliZjdmMDk1NWYyNzZlYWQgcHkzaworODU1NzMgM2YyZTE0NWM0YTAyZTY2MjBmY2M4NTUwNmNkNjJmZGYyNTQzNWFkMyBweTNrCis4NTU3NCA1MTgxYzNiZjg5NzBlMTdiZTEzZDIxMzQ0NmExMGJiNjNjOGU0NmRhIHJlbGVhc2UyNy1tYWludAorODU1NzUgYTQ0MmVjYjcwODQxZjJkZDdjNTVhMDk1NDc1OWM2YzY0ZmE1ZjYzNiByZWxlYXNlMjctbWFpbnQKKzg1NTc2IDBiYTUwZDQ4NWYwNzI2OGEzNDdlNTA1YTZmYWQ3Y2QzZDJhNWJmOGUgcHkzaworODU1NzcgYjRiZGQ0MjhlYjJiMWYyMzlhMzI0NDIzYjQxN2FiNTRkM2E2MDI1ZiBweTNrCis4NTU3OCBiNzQ5ZGM0YzM3NGMxNjdlYmExMjhjOWE5NjI1MjVkYjFiMjZmZGU1IHB5M2sKKzg1NTc5IGUxZGM5ODYxYjQzZjM5YzExMjI3ZDZiM2QwMTExZTUyNjhmMjM4NDggcHkzaworODU1ODAgNmRjYmE5M2Q2MjYyMDJhYzA1OWUwZGEwMWUxODFiZWYzMmI2NWQxNCBweTNrCis4NTU4MSBkZjBlMzQ4ZTcxNzYyZTlhNTg0NWNkYmY4MGZiZDZhOWM0OTViMzQ2IHB5M2sKKzg1NTgyIDM3OTRjOWI1MDgyNGZkN2I1ZjgzODQ2ZWY4Nzk5YzA2MjFlYmMyNjYgcHkzaworODU1ODMgYmE4NmYzNGYwOGRhNmJjYTFhODhhYzk2ZTdmODViZjM4MmMyN2IwOCBweTNrCis4NTU4NCA5MzA2ZmYxYzNkNDZmN2QxN2JmMWIwYzYzMTdkMGIwMzUyMmQ5NGJiIHB5M2sKKzg1NTg1IDM0MDM1OWQ4MGNhMDU2YTIwY2Y1MjQ1OTE3YzBmMDI5MTIxZmY2NDkgcHkzaworODU1ODYgNDQzYWIyY2JhYmNiY2FkYWRmODk5MGE5ZWE3ZTZjODBhMGZhZTg4YyBweTNrCis4NTU4NyAwMjgzMDU1M2RiZDE5OTI5Nzc3OTMyYTYwMDQwZWU4Nzc2ODJmNzI5IHB5M2sKKzg1NTg4IGZkNTEzNWNiZDkyOGRmMzMwZTM5N2UyNjg4ZTc5OTVjODU4YjUzZGIgcHkzaworODU1ODkgNjA4N2IxZjZjYTliNzRlYjgyY2NiNTA2ZjM4MDJmNTY5ZGJlZTJjOSBweTNrCis4NTU5MCA2YjI2Njg4NzNmMzBkMjkxYzA5NjYzZmUxZmEzNjYzZDUwY2UxMTM1IHB5M2sKKzg1NTkxIDQzNTc1YjA5NjllZDA2M2MwOWY3NDRkYTgxYzBjMzYyY2M4ODg5MjIgcHkzaworODU1OTIgNmVjZTYyOTQ0NWI2MGIzNTE1YjYyYTdmNGIzOGQyYTIwNzA5MjQzOCByZWxlYXNlMjctbWFpbnQKKzg1NTkzIDFiZjc2N2YyOGRiNGRmNjIzNGUyMjAwYmNjOGU3NzZiYjA3ZGNkYWQgcmVsZWFzZTMxLW1haW50Cis4NTU5NCAwNTA1ZWJhNjIzNDcyZmNlZmJmYzFiNjM5MWNkNzFkMzYxNDlkZTg5IHB5M2sKKzg1NTk1IGM5OWNmOTEwMjQ3NmM0OWM1NTA1ZDNmOTdlNGI3MTNiOGVmZGNmYTggcHkzaworODU1OTYgZWFiYzVjNTNmMTM0ZWFjY2M1MWI3MDUxNDljOWMxZWQzYWQzMzBhOSBweTNrCis4NTU5NyAyODgwZTcyYTQ2NGJkMWMxYTg4NTFlZjU5ZTgyZDAzMGZjYzk5MGY0IHB5M2sKKzg1NTk4IDZlNTU5NzkzZTQ1MGNlZTM1NjUzMjY2ODA4NWFiMDNiZWNiMjhiZjAgcHkzaworODU1OTkgMTU4NTk3NDBhYWU2YzJkNzAyYzVjNzljNGU5YjFhODgwYWQ5ZGY2ZiByZWxlYXNlMzEtbWFpbnQKKzg1NjAwIDcwMjUyNzhjNWE0MWE4YjZjODU5MzQxZmQ0NzMxYzBhNGEyMTY4YTAgcmVsZWFzZTI3LW1haW50Cis4NTYwMSBmNjIxNmM1ZjA2ODAzYWU1YmQ5ZTVmOTYzNzNjZGZmYWNlMWZjMzJlIHJlbGVhc2UyNy1tYWludAorODU2MDIgMTVlM2FkMGNhMzY0OGI5Zjk3MGNmZWZlZDZkYmNlODJmNjEwN2M1ZCByZWxlYXNlMjctbWFpbnQKKzg1NjAzIGNhYTE3YTAzMzE3NmIyOWU4NjY0ZTYxZjEwNTI1NzBlM2E3ZmUyMzkgcmVsZWFzZTI3LW1haW50Cis4NTYwNCAwODg0MDI0NjkwMTZiYTUxZjliNWJhZTBhODM4YTk3NDY3MDhmMDc0IHB5M2sKKzg1NjA1IDkzMWYyMzkwODI5NjZmZmNjOWRmNjkzYzQ0ZGMwZDNjYzYxNWM4MjggcmVsZWFzZTI3LW1haW50Cis4NTYwNiA4NzMzYzY5MDNmY2NhMjZkZmZiZjA5YWFjZDQyNjE2MjM4NTljYzk4IHB5M2sKKzg1NjA3IGJlNjBjOTYwYWMwOWE0MGUwNDI1MTAwMDk3ZjM0YzJmYmIxMzFhMTAgcHkzaworODU2MDggMmU4NTA0NzExOWQyMWJhZmY5MTQ3OGM1ZDY5MDZiMDJhZjFkZTk5MiBweTNrCis4NTYwOSA1YjJhZjM1YjhiNGI2MDZhMmMwYjBiNWE3MzBhZDMwMTRlZDQ2NTU5IHB5M2sKKzg1NjEwIGQyNTM0NmMwYjlkMDhkNjJiYWMzYmZiNjBjMjI3ZTQzYmZhMjc1NTMgcHkzaworODU2MTEgM2I1ZWQ4NDkwYWIyYzJhMzJhMDZjYzUwMDlhZTllYjdmMDk4NDI4NyBweTNrCis4NTYxMiA2OTc0MWQ0YjhhNjAwMzlkMDVkYTRiMzA5OWQwZWIxMmM3OTEzZjA1IHB5M2sKKzg1NjEzIDk2ZDdlNzg3NGY4YzQ2MjY1MWU5MzFjMTM0ZjExMmQ3Njk5OGM4Y2MgcHkzaworODU2MTQgOTY2ZWMzMWI4MzQyYzc2MjA4ODNiMjg3NTU0NDg1NTVhNzI2YTgxOCBweTNrCis4NTYxNSA1ZGE4MzdmY2Y2NzU5M2FlYTU0NzI0Nzg5MjhkNDI0YzhmMzJiZjQwIHB5M2sKKzg1NjE2IDQ3M2I5MjFlM2ExZjNiNmQxNWVmNzk2NjY4MjYyNjQ2YTRhYjRiOGMgcHkzaworODU2MTcgN2RkZjYwYzg4OTZhYTA0MTg5OTYxY2JiMzUxMjg5MDY3N2NmMTJkYiBweTNrCis4NTYxOCBhNGRkMzgzOTEyZDg5OGRiZGJhNjU4NzlhYjgzYTdlNDBmNGFkOWJjIHB5M2sKKzg1NjE5IGE5MDQ3Y2UxZTgxZGFjMjcwYzJjZDllY2UwNzhmMDMwYWE4MWU3MDkgcHkzaworODU2MjAgMTljYTcwYjQ2M2M1OTkyY2JhZjdlYmI3YWU1MzI1YThlYWMwMDc1NiBweTNrCis4NTYyMSBhYTJlNDYzN2Y2Y2U5NzE2NDJhNDc4MWVjOTFhNDFlYzM5YjljZDhkIHB5M2sKKzg1NjIyIDU3MzdhZDcxZTllMTllOTQ2ZTJjNTBiNmI2MzA1ZTM0NjU5NTY1MGYgcHkzaworODU2MjMgODdkY2ViZTc4ZDY3Y2EyYjI3ODFiNjhiM2U3NTkyOTNlMTFjNTE4NiByZWxlYXNlMjUtbWFpbnQKKzg1NjI0IDA5OTllM2E0NDczNWJlNjFlNWVjMTZhMDFiYTJkOTc1MTI5Njg0MDYgcHkzaworODU2MjUgZDY5OTcwOGRjMmMxOTA0YmM5MzBlY2M1ODE4Zjg4MzRlYjcxNGI2OSByZWxlYXNlMjUtbWFpbnQKKzg1NjI2IDVhMmQzNDQ5YjU3NWUzYTEwNTdhMWRiYmRiMDBlNTUxOTBkMTcwNTQgcHkzaworODU2MjcgMDY2MDhjYzI1ZmIyMDRjYWU0NzYwZTVlMzM4MDNkMDA4NTEyYTEwYyBweTNrCis4NTYyOCBjZTRkODEwMjU3YjQ0ZDhiNWFkNmVhZTkyOGM5YjUxNWQwNWIyOWIwIHJlbGVhc2UyNS1tYWludAorODU2MjkgY2E5NjkwOTJmNDVhNmNkYjg5MjExM2JhMmQzOTFhNmQwYmRmNmZhYSBweTNrCis4NTYzMCAzMTFkN2FiYmZiZTMwMGExY2JjYTRiZjIwM2JhNjk1YmY4ZmFjZTE5IHB5M2sKKzg1NjMxIGJiMjEzNTllODhiOTQ2NGUyNjgxZDk3OGY5OWU4M2MyODNhY2M4ZGQgcHkzaworODU2MzIgMzE3NTBjNzI3YWUzMDUwYzAwMWM4MDIyNzM1ZTZlNmYxNTk3MWVlMCByZWxlYXNlMjctbWFpbnQKKzg1NjMzIGJjYjI2MGQ2OGIxNThhYWVkMzBiYmE1MjcyMWRhNGM1MTVkZmJkZWQgcHkzaworODU2MzQgODdlNWI1OTM4YzY1ZjBjYWM0MzA4YzU4OGUyMTJkNjVhYTczZmU4NCByZWxlYXNlMzEtbWFpbnQKKzg1NjM1IDQyMmE0ZmIwYTQ5MTI0NGQ1NDM0MDkwYjdhNjAyMTRlNGQwNmVkYWUgcHkzaworODU2MzYgMDczZTFiZTc2YjQ3NDM1ODk0ZTZmZGQ4N2E5ZmVhMGVhYjE0ZjA5ZCBweTNrCis4NTYzNyA5YjIyNTBmYjgwZDhiNWJiNGI5MDEwNTJlZWMyNGE4ZDIxNzg0MDJiIHJlbGVhc2UyNy1tYWludAorODU2MzggOWU0NWZjODA1Mjg4YTc3Yzg0YTI1MjNiOTRiN2E1ZWFlN2ZkMzRhNiBweTNrCis4NTYzOSA2ODQ0MDI3MjU0ZmFlNmIxYmY5NmFlMjdkYmFkMzZiZDM0YjFjZGYwIHB5M2sKKzg1NjQwIDE4NmFmMDUxZDA0ZjIxMGIxYzdlMDZlODkzZDRlOGRjZWJlNzZmNTAgcmVsZWFzZTI3LW1haW50Cis4NTY0MSA5OTRiODc5OWYyOGQ2OGE1ZTRiOTBjMmE4Mjg0ODcxMmE5Nzc1YWJjIHB5M2sKKzg1NjQyIDIxZGQ3MTkzOGE0NDcyZDI0NmU1ODM4NTA2NTBiNzZiYzM5MGIwMjUgcHkzaworODU2NDMgNzRkODFhM2EwZDU2NWExODc4NTlkZDZhOWMzMDBjZTU3Y2ZiYWM5NiBweTNrCis4NTY0NCAwNWQ3YjE5OTFmZjcyZTc0ZjE1MjZhOGExZWM3NTUzNzY3MzYzMzU0IHJlbGVhc2UzMS1tYWludAorODU2NDUgYjQyZjk0OTY0OGJhYzU3ZmRjMDAxMTliM2I3NTk3YTc1MWU3OTQxNCBweTNrCis4NTY0NiA2MzNkZTU3ZmI3M2FlMTE2MzIyNDA5Nzc0MGQxYTQyMTI0ZjBmZjkxIHB5M2sKKzg1NjQ3IDNjOWFmYTkyZjhmZGM2NTMyYjExODY3OTgwMDJjMDA0OTcyYjE3MDUgcmVsZWFzZTI3LW1haW50Cis4NTY0OCA2MjNkZWFlNzczMjQzNjdkNTE2YWE0ZTFmMmQ0MmQ1Mjg2MjlkMDcyIHJlbGVhc2UzMS1tYWludAorODU2NDkgMzlhMmMzYjEwYTdiMWZlZmFmZjRmN2IyNjMzZDQwYjcxMGJmOTczYiBweTNrCis4NTY1MCA5YWMzZmUyY2E0OWViNWVmYWI4NDNiYzg1NWQxMGZkMzU5YWRlNjkzIHJlbGVhc2UyNy1tYWludAorODU2NTEgZWZkMzY5OTgxYjhkZDU2MWNiNmFiYzdjYTI1M2VmOWZjNmU5YTczNSByZWxlYXNlMzEtbWFpbnQKKzg1NjUyIDM4YWQ1N2RiODhhYzRiZTJmNTJjNzA3NTFhYTRiMzEwOGJlNTcxNjggcHkzaworODU2NTMgMjQ0Y2JjYjY3ZGNkODdlMTFiNjM2MzQ3MGIyYjg3ZmI2ZjUxYWNmOCBweTNrCis4NTY1NCAzOWNkY2M3ZDNlMjBkNTQ0ZWFhOGE1YzRhYTNkNjkwNjg2OGU4ZjdiIHB5M2sKKzg1NjU1IDAyM2I0MTM3NjI5MGExMjFjNzdhMjRiNzAxNDcwY2FlNzBhMWIyM2YgcHkzaworODU2NTYgM2E0N2ZiY2IyOWIxMjA1MDg3YzllM2NhOWIwMjU1NmE3ZGRlN2U2NiBweTNrCis4NTY1NyA3YWY0MDZmMjE5YTRlNjFiNDk4YWRjNzFmNWFhMjdmY2ZjYjlhZTMxIHB5M2sKKzg1NjU4IGQ1OGNlM2ZmYjFjYjY5N2YxZWVkYjRhNTNlYTNiMTEyNzZiZDhlZTEgcmVsZWFzZTI3LW1haW50Cis4NTY1OSBiMDIyOGFmNmRiMTE4MGExNzFjN2RlMTIwNTdhZDkzNjYwNTNhZGMyIHB5M2sKKzg1NjYwIDk1ZTNhZWViYjVhYmNkODFlNDgxNzViNGZmMGQyMjk5NWRlMTVlMjYgcHkzaworODU2NjEgZDFkZWY3YjJhYmQyZjU5YjQzMjU0YmEzMjQwOTc0NjJmMWRiMjBmYiBweTNrCis4NTY2MiBiMmE5Y2EyYjYxYTI0MWIwZWQ4ZmQ3ODA4ODExMzAwOGUzNDI3NGEwIHB5M2sKKzg1NjYzIGMxNDdmOTEwYWY3MDA4NmZkNjNkZWFlMGUzZjYyMGI5MTYzYjQwZDggcHkzaworODU2NjQgZTg5NjlmYjgyMmZjMmEyNzlhZTM0YmU3M2Y4ZTFlMTVjNDUzYTNkMCBweTNrCis4NTY2NSBmOGZjMmQwM2Q3ZTQyYTEyZTkyZWMyNzQ4NjM0NzUwOTJlYWQ4ZTdkIHB5M2sKKzg1NjY2IGU3NTgwNjUyYWZiOGU2Y2U2YTM5NWFkZmVmZmM1MTU2MzQ3MmJjZWMgcmVsZWFzZTMxLW1haW50Cis4NTY2NyBhMzE2NTgxMjkwMDgwNzQwZjdiNjMyMGNkNTczMzQzODFiMjY3NmI5IHJlbGVhc2UyNy1tYWludAorODU2NjggYjFjYTdkNWE5Yzc0ZDcwY2FjMTQ0ZDQyOWQ3MTJmNzhiNzczMTU0ZCBweTNrCis4NTY2OSBiMWJkYTFlYzk5NWZhMTAzNmRlMDlmYWEzM2MzNTUwYjJmNDM2ZjQ3IHB5M2sKKzg1NjcwIGUwY2NiNWY1MGUwYzc5MDYzN2VlMzExNTI3NzA1MDQzODAwMzcxYmIgcHkzaworODU2NzEgMTZlYWQ4M2Y3OWNjOTljZTE0MTdiM2YwNDgzYThhMWViNGVkZTFmNSBweTNrCis4NTY3MiA5NmE2OTc2MmI0ODE2MTY3ODE2MDczOGY0MzkwYjQwMjJiNDNmYmE0IHJlbGVhc2UzMS1tYWludAorODU2NzMgN2FhMTRjYWM2ZjRkMDI3MzllY2RiNGI1ZDMwNWQ2ODFkNTkzODE2NyByZWxlYXNlMjctbWFpbnQKKzg1Njc0IGViODgzN2VmZDg0YzViMWVkYWFmY2JlOTA0NWU3NDE1ZmQ5NzZmOTIgcHkzaworODU2NzUgMzUxZDc5NGQzMmY0NDMyOWMxMDczNzNlMWRhZWM4NjI1MzBlZWQyMyBweTNrCis4NTY3NiBhYTIwM2Q0NzhiYjgxMGY2ZGUyYjYxMDJmZTQxNTlhNDIxMTYyMGZjIHJlbGVhc2UzMS1tYWludAorODU2NzcgZDM5N2IwMjYzMWI1NDdkOTRjNjdiNGI5MTM4NGU5NWU2ZDEzMGYwOSByZWxlYXNlMjctbWFpbnQKKzg1Njc4IGJlYTE0ZjAwZDNlMDEwMDcyN2ZmN2MwZjg4ODUxZDc2M2UwNjdjYTMgcHkzaworODU2NzkgYjBhOGZjZGEwNjU0N2Q2ZDM0ZTMzNDcyMjgyNTljMjUxMDM0ZTJmZSBweTNrCis4NTY4MCBjZTlmNWNlMzNhZDJhMGY1ZDAzY2QwOGFhYTc4MzU4MzYxZDJmODRiIHB5M2sKKzg1NjgxIGE0YzEwYTQ0ZDlhZTExYmVjOWM5OTk0MjZlODc0NDY5NmVjYTFjZTUgcHkzaworODU2ODIgMTdjOTZhYWY5M2M4N2QxMDdhM2EzMDU3OTg0OWY5NDliMzRhZmJlNyBweTNrCis4NTY4MyA1YjA2OTg5MmU0MTNhOWUxMTVhYmE5NjA0OTQ4ODljZmRiYzJkOTQzIHB5M2sKKzg1Njg0IDhmMDYyNTk1NGZmYTNjZGQ3MTE2MjM5YzVjYzk4YTA2NmFmMzcyNjcgcHkzaworODU2ODUgY2RmZDE5OGE2ZjFkZTMxMzY2OTk1ZWM2ZDg1MGZhNjg5MDhkYTZjYiBweTNrCis4NTY4NiA3NTJlNGI1YzY0ZTk1Y2FjNDE2MjY0MWRjNDM3MTY0MGE1NjVlYmMxIHB5M2sKKzg1Njg3IGM3Mjc1NzAzM2Q0NGY4NTNkMGY2NGI1OWEyODBmMmIwNjA4NTRlN2EgcHkzaworODU2ODggNjhiZDc1YzY5ZGIxNTBmZmRjY2IyMDM3ZDQyZmRmM2Y0MWRkNWQ0MSBweTNrCis4NTY4OSAzYzMzNjM0OGEyZTk4NmZlNDc3OWMxNTNmNzg3NGM0NTk4NzExZjE4IHB5M2sKKzg1NjkwIDM3MmM5ODA3ZDc1ZDk3MTRlNjA2NDNiOTBhZjBhMWE4YjBkOTYxODMgcHkzaworODU2OTEgNzdjMTNjOWM2ZTU5ZTM5ZTk2OGM0YjRlZmZiNjNmNzE4ZTM1MzU4YSBweTNrCis4NTY5MiA1MTk1OWYzOWE3ZmIxMzZhNWVmMjkzNjhiYjczODMxMWI4NjVmZTdkIHB5M2sKKzg1NjkzIGIwYmE3ZWViOThhNTVlOTQ0MmIxZDA1MTlkODNiYWZkZmVhMGVkZmIgcmVsZWFzZTMxLW1haW50Cis4NTY5NCAyZjdlMDE2OTQ5MjY3NTg2NjViMTY5YjRjODlkM2YxY2JmZTUzMjgyIHJlbGVhc2UyNy1tYWludAorODU2OTUgODZmMDA2MTJjYmQ2MGU5ZTE2NTQwZTgyNGJiZGQ2NDUxZjE3MzQxNCBweTNrCis4NTY5NiBlY2ZmNDFlMDY4ZTZmZTkxZTMwZDFiYTQ4OGRmZmRiYmIxZDQyYzIyIHB5M2sKKzg1Njk3IDgyYjA4M2M5NmEzOWZiZjcxMzA5Y2E4M2I3MmMzZTJmMjgyZTVjMzcgcHkzaworODU2OTggMjQ2YzA4YzgyNWExMDU4OGQ4MDZhY2ViMTJkOGMxNDJjOGE5MjUxNiBweTNrCis4NTY5OSA1MDM2MDBiYjI1ZWFhODk4ZmUyNmI4Zjc2MzhhYmJkNmYyZTJiN2VjIHB5M2sKKzg1NzAwIDNmYWZmN2U1MWY0MGRlZWQwZDQ2ZmI5ZjJlMTJlZDEyZGZhYjUzNTggcHkzaworODU3MDEgMTVlNDE1NTJkY2JkN2NjMDMyMTY2NmM0MjJlOTEzNzAyZDczNDY5ZiBweTNrCis4NTcwMiBiYjMzMzk3M2RlMzhiYzMzOTA4MjZkMDVmMWI3MWI5YzNmMmVjNDhmIHB5M2sKKzg1NzAzIDI3Y2U5OWZjMjUyNzAxNDc1ZTlmOTkwODFhNGJmODBiYWNmNzRlYTIgcGVwLTM4MgorODU3MDQgMWE5MDUzOTFlM2VkNmVkNDI4YjdiNmI1Mzk3NjY2MTk1ZmMzYjYyYSBweTNrCis4NTcwNSA4OTEyMTkyOTgyY2M4Mzc4MTkzMjlhM2ZmODUxMDk4Y2QyYTQwMWNhIHB5M2sKKzg1NzA2IDY2MjhmODZkYjJiNmI3ODkwMmFjYmI1MjY2OTA1NTFmNTU5ZmQyZGIgcGVwLTM4MgorODU3MDcgMWVjMmJmYTU0Y2FiYjliYjYzNDc4YjViYjYxOWM5ZmVlMzMzZmI3OSBwZXAtMzgyCis4NTcwOCAwMjYzNWJhZWFkNWY1YWI1YTczMTZjYWE2ZTBhYjE0MzI2ZDUyNGY2IHBlcC0zODIKKzg1NzA5IGUyYmExMjQ5YTJmNTYzNjYwMjJiOTY4NzkxYThmYTU1M2M2Yzg1YzIgcHkzaworODU3MTAgZDYwN2I2MzEzMDVkYzBhNzAyMDhkYTgyNDVhZDBmZDVjYWExMTkyZSBwZXAtMzgyCis4NTcxMSA0ZDU1ZjBiMDkwZDU4MGQ4MmY1YmQ1NzhjMDY4ZmQyYjE5ZjczMWE5IHBlcC0zODIKKzg1NzEyIDEzMDNjZWFmNDQxYTljOTNmODJlM2Q0NDIwMGVlMjkyNzEyNjIxNTkgcGVwLTM4MgorODU3MTMgYjQ3ZTRlZTE1NDAzMmNlOGI0NGM4YWFlMjA4NWViNGEwODkxODBhOSBwZXAtMzgyCis4NTcxNCA3MGQyYjRhZWRjMDllYTQ3ZjAxNGVhMjIxZmUxNmYzYjY4NTljYjllIHBlcC0zODIKKzg1NzE1IDU5ZTliNThkZGFmODQ4ZDNhZTBkMDg2MWRhMTQ2M2E4NzZhZWE2YWQgcGVwLTM4MgorODU3MTYgNDJiODRkMzE4OGQxMGVmYjIyNmI1YjgyZWIyZjMxMDA3OGFmYjlmZiByZWxlYXNlMzEtbWFpbnQKKzg1NzE3IDRmMGRkZGFmODJkNmE3NDc3ZTQ0YzU2YzQzMWU3NWQ1MDMxMzI5NzEgcmVsZWFzZTI3LW1haW50Cis4NTcxOCA3NzE3ZjhjNDVmY2MzN2ZmNzA1MjMxYWIyNmE0ODgwZjIzMTNhYmJmIHBlcC0zODIKKzg1NzE5IDZlOGQyZTJkOGQ4MjhmNzM5ODlkNzUzZDZlNWFiMmMyN2NjZWZkYjggcGVwLTM4MgorODU3MjAgZTNlNmFhNjMzZjMzYjRlOTY3ZjcwM2ZkNTdiZjVmMjEwNGNjMjAyMiBweTNrCis4NTcyMSA3MDcyYTViMjgxZDM3ZTVjOTcyYTdhZTgxNzIyNWFkNzhhNGFjYWYyIHBlcC0zODIKKzg1NzIyIGI1MDI1NTY5Y2JkNDA2Y2JhZTk0YjkzN2M2OWFlZDllNGJmZWMwYTIgcmVsZWFzZTI3LW1haW50Cis4NTcyMyA4ZTYwZDdhOTYxNDIyNzJmZjE3MWJlN2MwNmNlYmVlNmIxYzZhZGJhIHJlbGVhc2UzMS1tYWludAorODU3MjQgYWQ4OTIzNzYwZDVjMGRhNzQyMzg1OTk0Nzg2NjcwNTMyODQ4ODEyOSBweTNrCis4NTcyNSAwNTExYzg2OGE0ZTM4YTRjNDBiYTVmOTU4M2I1M2Y1NTY1MmVkYzkyIHB5M2sKKzg1NzI2IGI2YWQ0MDEzNzdmYzU5YmNhOTE5MGNjMTUzYTE3YTNlMjFmZmEyN2QgcmVsZWFzZTMxLW1haW50Cis4NTcyNyAxZjBhYjcyOWM2MzI1MzViNGUyMDczMDhkYzkzMDExNzFhN2Y4MmIyIHJlbGVhc2UyNy1tYWludAorODU3MjggMDQwOTBhYjM1MzFlNDMyM2UxNDM4OTlkZjRlZmY0YmJlNWFkZThmMCBweTNrCis4NTcyOSBjNDdlZjE4MGJlMzlkNmM0ZWUxYTRlOTNjYjRiYThiNjA4NzAxYzg3IHB5M2sKKzg1NzMwIGUxMWFjMzAxOTliMTBhYzM1NzliZTY2M2Y4MTU0YzM0YmUzMjgzYmMgcHkzaworODU3MzEgMzRiZWFiOTU5NTk1OWFkZWVkNDc4Mzc2YWNjOWMxMzNiNWUyNDc2ZCBweTNrCis4NTczMiAwMzY3NzBkZDkwOTY3Y2EyZDk0NmY1OGQ0NDFmNjU1YTJlOGQ1MzVjIHB5M2sKKzg1NzMzIDk2MmUxZjRjOWMwMDNiNDgyNzI3YmQ0NTQ0NDAzZmMwMDNiZGJhNzkgcHkzaworODU3MzQgMDg2NTE5YzFlN2QyOWE4MjQ3Njc5Y2U2ZGNmZWU0ZTliZjQzMzJiYSBweTNrCis4NTczNSBkM2I2MWRjNzMyZWZmMjU3MWYxNDNhZTMzZGMzM2RhZjE5ZDA0NzQzIHB5M2sKKzg1NzM2IGE2NjFiNDI0ZWQ0N2E5YmY0MzM3ZDMwOWNlZmUwNTRjZWY3ODQ2YmQgcmVsZWFzZTI3LW1haW50Cis4NTczNiBhOGVmZjM5YWViMDk5NWE4YzMyYmQwZGI5NjBlZGMwZjExMGU1MzNlIHB5M2sKKzg1NzM3IGNmNjM0YTM5N2JlYzgxYTQyYTgzZDc2ZjVkNWU4ZTA2ZGIyN2QyMTIgaXNzdWU0Mzg4Cis4NTczOCBkNGQ1M2I0ZGI5NmVkMzg4OWFlNWQ2OTY2MzUwOTg4Y2Y4YTU2ODU4IGlzc3VlNDM4OAorODU3MzkgNTJjYmY0NTlkYThiY2ZhYWZiYzdkYmE2ZjZjZGZjMTJlZWRkZDM0NyBpc3N1ZTQzODgKKzg1NzQwIGVkY2ZjNGM4OWYzMDQwMTU1Mjc3ZDQyMGExYjhmMjA0OTM1NDY1MDAgaXNzdWU0Mzg4Cis4NTc0MSA1OWFhYzA3NDVlYzc1YjhjNWIyYTkyMjk0ZmQ2ZTkzOTgxZGE4ODQ2IHB5M2stc3RhdC1vbi13aW5kb3dzCis4NTc0MiAzYmFlY2Q0ZTBjMTJhMTNjYTYxZmVlZjBlMTU2M2M4MDliNTc5NDJkIHB5M2sKKzg1NzQzIDZkY2Y2MTQ0N2MzM2Y2ODFmMTQ2NmEzNzYyMGU0MzA5MDY5MDU2NTkgcmVsZWFzZTI3LW1haW50Cis4NTc0NCAxNjE4Y2IxNWI1Yjk4NDQwMGQ4YWU4YTI5MjA0ZjJiZTY0YTIzZTczIHB5M2sKKzg1NzQ1IGU4NTBiYjkzMGM4NDJmMWI1YzVkM2U2ZWNlYjUxNTk5YTliNjc5NDUgcmVsZWFzZTI3LW1haW50Cis4NTc0NiA1Y2YxZTZlNjFjNmMzNzVhZWE4ZmEyYzkwYmE4NWEwYzBlZDYxMWM1IHJlbGVhc2UzMS1tYWludAorODU3NDcgNTBkZDg2ZjZmMjRhZDRiODc4ZDdiODI5YTAzOWIzYTUzYTBhMzMwYyBweTNrLXN0YXQtb24td2luZG93cworODU3NDggMzAxNmE2YTRhNjgwYjg0YTNjMGU0ZDIwNjIwMTFkNzI1NDA5YTRiYyBpc3N1ZTQzODgKKzg1NzQ5IDY0M2EwN2NjOWQ3ZmI4OTM5ODFlNzRiNGFkOTg4NzJmYjQwYzkwNzQgaXNzdWU0Mzg4Cis4NTc1MCBlNTNjODBiMDE2MzMzMjg3ZWYzMTZmMWMzYmNkNjFiYzg0YmI2N2IyIGlzc3VlNDM4OAorODU3NTEgZDdjZTM3YjliY2VkMjAzNmYxZTcwNmE5N2M2ODYyMzVhMGYzOTY1MyBpc3N1ZTQzODgKKzg1NzUyIDJmMWE1NTA2NzkzMTE1MTc1ZGU3ZDQ0ZmJmZjc1MDdkN2YyODQxNzMgaXNzdWU0Mzg4Cis4NTc1MyBmOGZjMjRhMWY5YTZjMmRiYjY2NWE1M2ExZTY0YTc0NWM1YmRlNmIwIGlzc3VlNDM4OAorODU3NTQgZWNmYzBkZDE1ZDU3ZjBkOWE4YWY3NjIxOGNiOTA4ZGUzNTk4MmFhNCBpc3N1ZTQzODgKKzg1NzU1IGU3MTFiODU4NjE3YmU3MmNjNjY0MTk5MjlmOWFiZjI1NTg4N2M4OTIgcHkzaworODU3NTYgOTg1ODlkMGYxMTAxMmFjNjNmOGE5ZGU5YWY3YTQ3MzQ4YzY0YTFmNiBweTNrCis4NTc1NyBjNWY5N2IwNTQxNTg1ODI1YzY2ZGMwYTQzYjhmY2U0NDZkMzJlY2UwIHB5M2sKKzg1NzU4IDgwYzA0NjlmOTg1OTdmODFlNmMzODYxZTg4NWI2ZTEyYTA0ZWMwN2MgcmVsZWFzZTI3LW1haW50Cis4NTc1OSA4ZTZiN2FiMWUxYTE0MDdkNmYwOWNjZmU4MWY4Mzg5YWIyZTQ2MTNkIHJlbGVhc2UzMS1tYWludAorODU3NjAgY2JlMDIyNDcwMTQ3MWM0NzI5ZjQ3MTYyMWI1MWVjMjI0NDM0ZDNkOCBpc3N1ZTQzODgKKzg1NzYxIDM5MzY2YmE1ZjFjMTA3NGI3ZDNhZDE5MzU0MmI2MzU5NGE1NGI4NDEgcHkzaworODU3NjIgYmVjMTZhNWUwY2RhYzFlZjM4ZWU2NjQ0Y2I4OTcxYTE5NTNjY2E1YiBweTNrCis4NTc2MyBhYmRhODI0MGE2NDA1ZGJlOWE5ZTM5Nzg5OGM0OTY2ZWYxYjIzZDM3IHB5M2sKKzg1NzY0IGFlY2I1NmMzZjRlYjVlNzJmM2NlYTkzNzY5M2Y5OTk4NDhlOWQ5NGYgaXNzdWU0Mzg4Cis4NTc2NSA0NTA3OWFkMWUyNjAwOWFjYzBmNTcyNDQwY2FjMjJhYjBhNzc0OTUwIHB5M2sKKzg1NzY2IDM4MTZlYjEyODZjMGNlNTk1OGJlYTk1Y2JiNjg5MTIyYmY2MzQwY2EgcHkzaworODU3NjcgMmUxOWQxZjRiNjEyZWM4OTNkZjBmODZlNjgwZmE0OWI4ODFiZWI4MyBweTNrCis4NTc2OCA3MTdhYWNmZDJkY2Q2ODM2Y2E5OGZlN2ZkZDRjYmQ5ODA1YjJlNmQ1IHB5M2sKKzg1NzY5IGU4ZDVhZDBjMmY1YmNiMWUwNGNiODNkNjc1NmUzMDdjNzg0NmNlMjQgcHkzaworODU3NzAgYTJiYjUwZmZkZmYzZDRmOWY0MTI3YTIzNDM3NGZjYWY3ZGMwNWI0YyBweTNrCis4NTc3MSAyZjk0ZDY4YzI3MzEyNzc3YTgzNGQ2YjczZGM3YzI5YjczMTNhMDZkIHB5M2sKKzg1NzcyIDBiNWJmYmE3YTkwN2U2YjlhMDEwMGFlMzRmNWNkM2Y4NGZkNjY0Y2UgcHkzaworODU3NzMgY2FhNTZjZmYyZmIzYTc4ZWFjMmIzNGZkNzgzYzdkZDE3ZGNkZTRiNyBweTNrCis4NTc3NCAwODAxNDVkM2JiZjc2ODFhNjE1Nzg1OTdmZDlkOGQ5YzUwMzJhNzg3IHB5M2sKKzg1Nzc1IGU0NTNlNWFiMjA3Y2E0MjNjMzI1N2JiOTRhYjA4MWJjZTY3N2YzOTAgcHkzaworODU3NzYgMjQ0MDkwNDM4NjIzZTExZjEyYzQzNzRlZTc4MGQ3NjY4MjViNzZmZCByZWxlYXNlMjctbWFpbnQKKzg1Nzc3IGU3OWM1NzY3YmQwNWQwNmYzOTNjZmI2MTBhNDg2NmE0NWJjMjIyODEgcHkzaworODU3NzggMDJjMTYyNmZmNjBmZTJhMGU5YzU2NTU5ODJjMDRiY2E5NmFlMzhlMCBweTNrCis4NTc3OSAyNzJiOGZmNjBiYTRjMDg0M2UwNzgxYzZiZWM5YjQxM2MzNmRmNWI0IHJlbGVhc2UzMS1tYWludAorODU3ODAgODc4N2Y0YmI0YjIxNjA1MTk4OWFjNTVkYjRhNzM2N2IyZDg0NjJjZCByZWxlYXNlMjctbWFpbnQKKzg1NzgyIGJkMWIzMWMzNzQxMGJjMDNhYzg1MTExYzVkMTBmNTI3ODA4NmZiNDAgaXNzdWU1NjM5Cis4NTc4MyA2ZTRlZWE3NTQzYmMzNjg5NGQ1MWE4YjMzYmM2ZWViMjQ0Yzk2ZGU2IGlzc3VlNTYzOQorODU3ODQgN2I1NDYyOTUxYWM5YjUxMWU3OWNhMTJhMmU3ZjliYWQ1Yjk2ZDk3ZSByZWxlYXNlMjctbWFpbnQKKzg1Nzg1IGY5ODQ0NjlkZTBiYjZkM2RjZDFiNmY1M2ZjNmY1ZTQzZDI0YjIwYjYgcHkzaworODU3ODYgODUyNTU0NDk2OGYzYTU5NjRmYmUyZjA1OGVkZjdkOWJjNTg0MWQ2NiBweTNrCis4NTc4NyAxMmViMjQ0NjM2MTA5NDE3Yzk0NjYzNDFiYjZmMjZjYzYyZjI3MThkIHB5M2sKKzg1Nzg4IGM2YTBlYjdmNzNiZmNmZDcxNmY4YWIyOWFjYjY5ZWEyMDVlNjVmNzggcHkzaworODU3ODkgNDZiYmJkY2Q3NzdmNTViNmJjMjVlMDYxYjI1N2Q1MmFlMzcyYjU5YiBweTNrCis4NTc5MCBmZTM1NTdkYmVmODkyNTIzNTI3NDAxNWRhYWRiNzI4MjhkYjJlYmZmIHJlbGVhc2UyNy1tYWludAorODU3OTEgMzFhMGFiN2FjMmQ1YjU1MjdjYmE1YWRiOWFiMmFlMzQzMjg2MjA3NCByZWxlYXNlMjctbWFpbnQKKzg1NzkyIGVhMGY4M2NmN2U5OTU5NjMyMjY3MjAxNzQwODQzMjljNjZjY2U2ZWEgcHkzaworODU3OTMgODQ2YzBlMTM0MmQwYmExYWVkNTFhYzAxODcyM2UxMTZhMjY5NDQ2ZSBweTNrCis4NTc5NCAxNDM4ZDZiNjcwNTI2NTBmODI2MTUwZGQ1YjcyYWUyMGM2YWJhYThjIHB5M2sKKzg1Nzk1IDA2ZGZhZWI1OGJkZTAxYzM2OGYzZDE1ZWY1MTk0OGNjYWZkMDI0ODAgcmVsZWFzZTMxLW1haW50Cis4NTc5NiA4NThhZjYwYjJkYmJjZDliY2M0YzZmZjAwNTUxMDk3NDdkY2MyOWI4IHB5M2sKKzg1Nzk3IGQ5ODViYTk4MTFlOThlYTU4MGMxM2FmNzVmNWE3OGVkOTQ3NjE4NDUgcHkzaworODU3OTggOTkxMmQ2MWNkZjM0YzJiMDkyMDBjNDBiMjk1YWVjNWE3MmJmOGRjMyBweTNrCis4NTc5OSBjZDgwZDA1ZjJmZDY3ZGI2MTYwMDhhYzY3ZjA4YzFiNmVkMGViZDNmIHB5M2sKKzg1ODAwIDViNmUxM2I2YjQ3M2I1ZmRjMmZmNTBkNTk5MGMyZmZjNTViYjgzYWQgcHkzaworODU4MDEgMzgzNWJjYmZiMjljMGM2YjMxMDI2NWIwYjRkMTI0ODJhY2MwMjBiZiBweTNrCis4NTgwMiA5MDJmNTc3ZTdmOTQ5NTliMDU3MzkxNzY2YzBlMTRhM2ExNmI4ODhmIHJlbGVhc2UzMS1tYWludAorODU4MDMgYmU4YWU2YjE3NTM5ZDI5OTVjMDZjYTY5MGZjZjFmMmU1MDI1MDBkNSBweTNrCis4NTgwNCA4ZDdmMTgzMzJkYjdkZDQxOTRkYjcxZjFiM2YxMTRjOTU3NWI2MTYwIHB5M2sKKzg1ODA1IDFhMDhmNGE5ZWFmZGM0M2VhZjNkYWI2M2VlYWNjYmNiZWRhNTNkMjMgcHkzaworODU4MDYgYTMwZTc1ODIwYjhkZWVmNzEwMWIyMWNlN2VkNzZjM2E3OGQ1MmM5MyBweTNrCis4NTgwNyA3OTIwMDVkZTI3N2M4NmE4YTQ4MTllZTRjZmVkMDJjZmNmYTczMWJlIHB5M2sKKzg1ODA4IGU5OTZjNjFlNDdjN2IzOTM5NTYxNWU5Yjg2OWNkMjM3ODUyY2YxYWYgcHkzaworODU4MDkgMDk4MTc3YWNmNzNmMjA4NjA4MWJiMTdhYTIzMTMzMTliMzgyNDE1ZSBweTNrCis4NTgxMCBiOWRjZmRmZmNiNjIwYzUyNzI0YTFkZGJlZDBlOWJmNTA1ZGFkMDM1IHB5M2sKKzg1ODExIGViZjY3NDFhOGQ2ZTM3OWRjNzEwZjlhOTA4N2RjMjI0ZDQ3MmQ1ZWMgcHkzaworODU4MTIgYTk0ZmI4ZGI5ZjFhNTBmNjFiMGNhZjU0YTc3NzQwOWRlODY2NjhmYiByZWxlYXNlMjctbWFpbnQKKzg1ODEzIGRiNWFiZDgxZGM5NGVkNmE2OGQ4MDdkODkyYTI1Njk5Mjk5MjA3MWIgcmVsZWFzZTMxLW1haW50Cis4NTgxNCAxODk4OWFkNDQ2MzZhZDc1ZWYxODU4NTA2YWU5NGU4OGNhZGIzNWE2IHB5M2sKKzg1ODE1IDUzNjM5ZTU3YmE0MDkyM2FmMzVjNDMzYjBkYTM2ZjBjZTE2MjlkNzAgcmVsZWFzZTMxLW1haW50Cis4NTgxNiBhNGEyNzI0MGZlMDkzNGI4MDliNzM4YWI3MjljYWNmMTY5ZWFkY2UzIHJlbGVhc2UyNy1tYWludAorODU4MTcgZjE0OGY4NjRiMTY4YjA4N2U4OTI3MzgwNmQyNzdlZTFkODU4Y2E1OCBweTNrCis4NTgxOCBiMTcyZDc1MzdiOTliNTQwNGM5Njg5NjhlYjNjMTNlYjk4ZDg2ODcxIHB5M2sKKzg1ODE5IDViNTM2YzkwY2EzNmRlZmIzMGY2Nzg1OGJmYWY3ZGNjNGI0M2Y0NTMgcmVsZWFzZTI3LW1haW50Cis4NTgyMCBhODIwNzJjYTA2YmFhMDUxZDNjMDAxYjE5YTBkZGQ1OWU2N2ZkOGFkIHB5M2sKKzg1ODIxIGM1YWViZmZjOWZhYzQ2NWZhODIwNWM4NzM2NjI5MzAwM2UwYmVkNWUgcmVsZWFzZTMxLW1haW50Cis4NTgyMiBjY2YyZmYwODg2NmI5YmU2YzJhZDVjNjkwMjBiMTJhNGUwMTUyMWEzIHB5M2sKKzg1ODIzIGI0ZTM3MGM4ZTdjYWY0MzIxMjUxYThlODJjNzA4NjlkZjA0NTMxNDQgcHkzaworODU4MjQgMzliOWU5ZGUzNzJiMjAxMDMwZjU1ZWZiYjBlNjUxZTEyZTExZTc2ZCBweTNrCis4NTgyNSA1YTA1NDU0ZTU2NWZhNzhmMzUwNzYzOGNiM2RhMWZlYWNiZDU0NGYwIHB5M2sKKzg1ODI2IDE5MDhhMTQ2ZTk2MWRjMzlmODBiMGQ5NDhkZjk1ZjM5MjYwZjQwN2QgcHkzaworODU4MjcgZGI1YTUwODBmOWI4YTBlZTFlYjZkNGRkOWE2ODJhOTM4MDNkNGM5MiBweTNrCis4NTgyOCBjYjY0MThmNGQ2MGI5Y2Y2NDliMDM0NDYwNDhlZWYzNDU3YWI4NTkwIHB5M2sKKzg1ODI5IDRlMzYwNjUyODNjZjJjNmY3NmQ3NWNmMTM2YWMzMjY3Nzk4NjQ2ZWEgcHkzaworODU4MzAgMTU5NTMwZjBlNDA2YTg2NGUyNDQ1OTc4MTE2ZGUxYTAwNWQ1ODY0NiBweTNrCis4NTgzMSA2NjBkNWYzMjQ4MmVmNDg5NDNhMDZlYzg3OGEwYTc0NjNiZGRlYzgxIHBlcC0wMzg0Cis4NTgzMiBmNTcwZGE5YTQzZjg2ZTBjYjFiYjc2YzA3ODIyZTc4NDk2NGI1YWI0IHJlbGVhc2UyNy1tYWludAorODU4MzMgNDRkODE5MjJhODhmMzVkYmJlYzI1ZDg2YzJlZjY1M2U3NjU0MWQ4YyBweTNrCis4NTgzNCA1YzFjZTVjMzYwZGEyMWZkZTNmMGIwZWRiMzdmNDBjY2UxNjdhMjkxIHB5M2sKKzg1ODM1IDNhOWMzZWM1ZTlkMmNmZmIwY2ZiYTY0NTg3NWRlYWEwOWRkY2I3N2IgcHkzaworODU4MzYgMjM1MmU1ZTQ0MDUzZTk1YmI2ODZiZmI3Njg5MThjMmUxNjBkMDA0YyBweTNrCis4NTgzNyAwZjA3ZDJkYmY4MjBiODk0OTI1MGM0ZTkwYTFhNDFiNjFkZjJmZDU4IHB5M2sKKzg1ODM4IDRlOTJjZGVmZTRjNzQzN2ZmOTJhOGYxMmUzYmM2NjM5NTliYTZhOGUgcHkzaworODU4MzkgZDdkMzIzZGUzNWU3NmQyODA5MjkyNmVlZTcxOTljNTAzNzliZmM2NyBweTNrCis4NTg0MCA5ZDNlYmEwM2ZkMjVkMWQ3ZWVhNGM4NWY3ZDQ2MDMxZGIwNzQwODg4IHB5M2sKKzg1ODQxIGNlZWJiM2Y0NWY5ZmM2MjM4OWQzOGZhYWFmMmJhZDRmMzkxMjI5NDUgcmVsZWFzZTI3LW1haW50Cis4NTg0MiA3NzJiNTVmMDI4MzVkZTY3NjhjYjM4ZjE4YmNlYjYwYTdjODQyZGI1IHJlbGVhc2UzMS1tYWludAorODU4NDMgZDM1MTAwY2M2YzZiMWI0OTAzNTM1OTU2MmI1YTM2Y2Q5Zjk4YTFjMCBweTNrCis4NTg0NCBlNTVhMDBjZjY3OGE3ZTk3MWRjYjFjZjAxM2ZhMDNhN2M1YTVmMWE4IHB5M2sKKzg1ODQ1IGI5YzdiZGNhYTAzMWQ4OTIxNjU0YzYyOGRkZTZjZDNjMDc1YjgzY2MgcHkzaworODU4NDYgZTUxNWQxMjQxODU4NmU1MTMzZGM0YjU5N2M3MDQyMGM0NzU2OWE2NCBweTNrCis4NTg0NyAzMmM0ZThlOTVjYTNjYjViZjg4ZGRkZDM5NWQ0ZWVmMGRhYzYyZTM3IHJlbGVhc2UzMS1tYWludAorODU4NDggODQxODkyZTI3MWY3Zjg1MTQxYmFiYmQwNjY5YjEyM2Q4OGY2MjVkYyBweTNrCis4NTg0OSBhOWM3OWE5ZDJkOTFkMDlmYTI4NGNlNGY0OWI3NDRhMWYxMjYzYjkzIHB5M2sKKzg1ODUwIDlkYTVlMDRiMDc5M2I5OTI2ZjEwMWE4ZDAzMTIxZmE2ODdhMDg4MjQgcHkzaworODU4NTEgMTE4NzE1NmExZjMyYzExNmQ3YmE0YTlkYTUyMzE0ZWIxM2RmYjFmNiBweTNrCis4NTg1MiBjODkyZTQ1NDdmZWRjYzk2MjY1ZGZmMWEzYWI2YmQxZDk0M2M5ODM0IHB5M2sKKzg1ODUzIDI5YWYxODFkZTJmMmQ4OGYzOWEzMjEzMTNkYzFiOWI4OWRmMzIwNDUgcHkzaworODU4NTQgYmExYzczZTE2YzhiMWY5M2E4YWE1Zjk0MzBiNWExZTMwZTNkMTU3ZCByZWxlYXNlMjctbWFpbnQKKzg1ODU1IGZmNmZhMjBiZGFmOGRlY2NjNWQ4NGE2MGJmOTRjNTU2MzZiODdlZWIgcHkzaworODU4NTYgOWU0YTI4MDllNTVjZTBmMDc0NDNlNjI4MzMzMTA2OWE1Y2U0OGE1YiBweTNrCis4NTg1NyA0YjU0MjIxN2U5M2VkMDE3ZjVlZWIxOWMyZWNiZjU3YThiYTI3ZWI3IHB5M2sKKzg1ODU4IGJmNWRhNjM2MDUzYWI5OTI2ZGM3YWRiYTY1MGI3YTk2OWYwY2U0ZjAgcHkzaworODU4NTkgNjkzOGQ3YWQ2MGU0MWFlNTA5Y2FiNGI5NTQyM2MwYWI0OGNmNDVjMSByZWxlYXNlMzEtbWFpbnQKKzg1ODYwIGRmMDIwOTM1ODhkNmJjMmExZWQ4ODgwZjViNGViMGE5NDVjMDg0YTUgcmVsZWFzZTI3LW1haW50Cis4NTg2MSA0ZGNhM2YwZTBmYzA0NjdkNzdjYmNlOWI4NjI5ZTU1ODNmNmMyNmZmIHB5M2sKKzg1ODYyIGU5ZTNmZTRjOWUzMDBlNWFjYzIxNTczOWQ0YTBiZDc4ZGM3MzMzYjAgcmVsZWFzZTMxLW1haW50Cis4NTg2MyBlYmI4MmYwMWRiZTI2MTA5YzRmNGRhMWRiMGMzNWMxOWM0NTgxMzIyIHJlbGVhc2UyNy1tYWludAorODU4NjQgNTlhYmRiOTI3OGY3MjAzMjQzNzNjYTJlYjFmZjgzMDUwNGNhMThjZiBweTNrCis4NTg2NSAwZDUwYTkxMWQ3NGZlNjJhYzBjNjk1YmFlODU0ZmVlZWY5ZGQzZjEyIHJlbGVhc2UzMS1tYWludAorODU4NjYgYWYwNmYwOTcyZDk3YTc2ODdjNmExZjJjZjlmODAyNzM0OTYzYjM5YiByZWxlYXNlMjctbWFpbnQKKzg1ODY3IDA1MWFhNDI3ZGZlZGZmNTlkMmQyOTAyNTUwMTU0YzI3NDIzNzZhMWQgcHkzaworODU4NjggMjE0YjkwNTE4NDFlYTg5ZTk3ZDkxMzM0MGM4NjJhNTIyYzNkNGY3YSBweTNrCis4NTg2OSBhZGQxYmMwNWU0MjY2ZGJiOWQwODRlZDJkNjkzOGYyOGUyNTdlYWE4IHJlbGVhc2UzMS1tYWludAorODU4NzAgZjVlM2RlODdiMTRiZjA0MDc5MGI1MWIwNTJkNTM4ZTAxYTQxYTgwNCByZWxlYXNlMjctbWFpbnQKKzg1ODcxIDY0ZGUxNzQ2Y2Q2ZTM5NjMyMGEyYzhjMWUxNWUxZjM5NzM1NjUyMjYgcmVsZWFzZTI3LW1haW50Cis4NTg3MiAzZTc4ZWRlOGZkMjEyNDdiN2FiZWIwN2Q0ZWEzYjdhMjlkNGU3ODY1IHJlbGVhc2UyNy1tYWludAorODU4NzMgZTQ0MjVkNjhkYWRmMmMzODY0NzU5ODQwZWYwYzczNzljYjhhNzdmMyByZWxlYXNlMzEtbWFpbnQKKzg1ODc0IGEyODE5ODlhMjE4YjBjMWQ1ZTlmYzU1ZTc0MzU1NzlkN2FjZjU4YTggcHkzaworODU4NzUgM2ZmOTkwODljMDJlMzA0OTE2YmJjY2RkZjNhNWEyYzBkNjVhODkwMCBweTNrCis4NTg3NiA2ZGZmNTgxZDMwZjM4MWZjMDhlMzVkNzRjZGQ4OTA3MTc4NzU5M2VjIHB5M2sKKzg1ODc3IGU1ZjI2OWRkMzE4Yjg3ZWExN2U2MWU5ZWU5NzI1NzQwNmI5ZjEyYTQgcHkzaworODU4NzggNWE4ODJmNzg5ZWMxZTdkNThhYmYxZDBjMzhmZDRhM2EwYmU5MDlkMSBweTNrCis4NTg3OSA1YjE2M2YyYTYwMmJlY2EzMTgyMWI4ZmVkYTZlNzM3NmZmODVmNzljIHB5M2sKKzg1ODgwIDdhZDM1YWNiMjBiMGQ0OThjMjIwMzU3ZWYyMGY4OWIyZmE0YWQwYzIgcHkzaworODU4ODEgMjExMGQyNjlhODZlYzAwZWQzNDViM2UwMGFmNTBiODU4MzRjM2I1MyBweTNrCis4NTg4MiA3MzEyMzNmOTA0ODY5ZDlmNTk3YzUzMzU4Y2JmMjBhMjc3ZDRkYjQxIGlzc3VlMTAyMDkKKzg1ODgzIGI5Y2ExMDJhNzZkMDMzNDM0NDQ5ZmI3N2UzNDEzNDg4YjkzZmNiNjYgaXNzdWUxMDIwOQorODU4ODQgNjZiNDRjY2EyOWJiODMzMDUwNDJlOTM1Y2RjMGU0MmVkOTk0NDA4NSBpc3N1ZTEwMjA5Cis4NTg4NiBkMDdiOWIwY2FhZWYxZTRhOTRhOGNhNjBjZTkxODUxZmEyMThkN2UyIGlzc3VlMTAyMDkKKzg1ODg3IDNmN2QwMzQyOTQ5MTg2ZTUxMzI2ZDgxYzk2NjZhYjRjYjg5YTlhOGMgaXNzdWUxMDIwOQorODU4ODggNmYzMWYwYWY1MzU3NjUwMGE1NTIwOGFjYjczZWZhY2ZiMDAzZGVhZSBweTNrCis4NTg4OSA1YjhlNjg4ZWE1YWVkZDljZDViOTUwNmZmMDRlZmVkMGFjMTE1Y2JjIHB5M2sKKzg1ODkwIDE1ZWFjYjRjNTQyMjgzMjFmMzg5NjEzYjBkNzAzMWQ1OTJiZGZkNmMgaXNzdWUxMDIwOQorODU4OTEgZGMwNmFlZDliOTg0NWYwY2M2OTc4NGYzNDE4OTk2NmY5MTQ0OTNmYyBweTNrCis4NTg5MiA1MzgzYWU4ZGIzY2RkMWI1ZTAxOTU0NWU5MjhmMGUxN2YyNmZmZDA1IHJlbGVhc2UyNy1tYWludAorODU4OTMgMWMxMTRkMzlhZTUyNjJhYzUzZGZiODUzYmQ2NDI4YjcyNzFiOWI3ZSBweTNrCis4NTg5NCA2OThkMzBiNDUxMTZjYmM0MGQ5NmVkZTU2YzExOTVkYjFmMGQyNmI3IHB5M2sKKzg1ODk1IDYxM2M3YjU5NmZlNzgxMmRlODdiNDAxN2ZlNWMxN2ViY2FlYWYwNjcgcHkzaworODU4OTYgMWI3YTAzODVjNjVmN2FiODg5NzczMTM4MmYxNTkzMGJlZTdkMjYyNiBweTNrCis4NTg5NyA3MGViZGJkNzlhMDJkMDgzY2ZiOGJiNjExODM5ODBhMzVjMmRiOTZjIHB5M2sKKzg1ODk4IGM2ZDg2NDM5YWE5MTg0NTE4NTQxZjllMDFkZTkwNTY0YjM2YWQ2MmMgcmVsZWFzZTMxLW1haW50Cis4NTg5OSA0MWEzMDE0MDkyNWJlMTM1MjZlNGI0ODAwMDVmNDI3NmExMmVlMzAwIHB5M2sKKzg1OTAyIGE1NmEyYTgwM2NkNzhlZjk0MTdlOWQwMDZlNDliYzkzZGUzNzQ3MWEgcHkzaworODU5MDMgYjY2ZGVkNGJmZjIxMzdjYjJjNGExYWZlNTZkZDk4Y2ExZTVhYTM5ZCBweTNrCis4NTkwNCA2YWMxODU3NmU4ZmE5OTZlYWJmZThmMGZlMWI3YzI1ZWIxMWRlZjA4IHB5M2sKKzg1OTA1IDY0Y2VlOGQxMWYyZThiOGI2NWU2ZWNiZDczNjBmMWY3YmEyYzdhNTIgcmVsZWFzZTI3LW1haW50Cis4NTkwNiBlOGM4NDAwY2FhOTljYTU3ZjljYmYzNjIzOWJiOGM2OTAyZThkOTQ5IHJlbGVhc2UzMS1tYWludAorODU5MDcgNGFmMTRmOWFhOTcwNTY1YjIwNDEyYzgyNTczZTc4MzFjNjI2OTlhOSBweTNrCis4NTkwOCA1ZTcyMGY5ZDFlNmMxOWQ3ZmMzZTMzMTBkOTUyZjU2MDBlMzBhMjViIHB5M2sKKzg1OTA5IDhjNWExMDFhNjM1NDU4MzcwMzVlY2I1ZTU1MWI1MWFlYjZjNzNiMmUgcHkzaworODU5MTAgOGE4ZjJhYTlkYjBmOTkwZDViYTczM2VlMjhlYTVjM2VmNDdkNzNiZSBweTNrCis4NTkxMSA3MjJiMmE0ZmFlMGQxOTZmNjNjNjMxMGQ3ZTBhMGU0NWVmMGE4YmVjIHB5M2sKKzg1OTEzIDRkMjNkZTRmNDEwMjNjNzkzY2I2NjY4ZGU5YWRhZGI4N2U0Zjk4OTMgcmVsZWFzZTI3LW1haW50Cis4NTkxNCAwODYwYmU5YzgzNDMzYTYzZjk5YzdmNGJhYzY2NjIwZTRkMTZmOTY2IHB5M2sKKzg1OTE1IDE2YjkyOTcxYzJkNDQwYzJlZmRhYjU3MmU4YTk2YjI5MzNmYTIyNGMgcmVsZWFzZTI3LW1haW50Cis4NTkxNiAwNTBmMGY3YmUxMWUyNjIyNDk5MDExYzBhZTVmNTA2Zjg2ZTc3ODMxIHB5M2sKKzg1OTE3IGYzNDk4ODhmYWU2NDM5YzBiYmNiYjIyNzZkZjljNDFlMmUwNmRlODMgcmVsZWFzZTI3LW1haW50Cis4NTkyMCBjZmY3OGZmYjkzMmEyNzZmY2QzMGRhMzQ4MzMyN2MxODUyOTIxZWYxIHB5M2sKKzg1OTIxIDBiNWU2ZjdlZGY2ZTYyYWZjZjhmZTg0NTEyYWYyZDljMzdjMWIwYWQgcHkzaworODU5MjIgOGU2MzM4Y2UwODQ2NjRiZWFjN2Y1ZTJlNmEyODgxYjM0NGJjMzAwZSBweTNrCis4NTkyMyA0YTdhM2U1MWNkMjlhMDI2OGFjNzUxZjk0ODE5ZDM1NTJhYzYwMzRlIHB5M2sKKzg1OTI0IGQxNDcyNmY0YjQxMDdiNTZlMTg4YjhhODFmYTY3MmQyZWJmN2NiMjcgcHkzaworODU5MjUgY2YxZDI3MzIxYzc4MjE3MjhhN2RjMDJmZTE3Mzk4MDRlMzNjOGY5NSBweTNrCis4NTkyNiA0MDQyNzc2MGUxNjI5NGFhOTQ3NDQ2M2FlMjU3MGQ1OTRkNDhiMTRjIHB5M2sKKzg1OTI3IDM3MmQ2YWZmMTViZThjNjRlNmUyODkzMjQxODJlODk5YTcxN2VmMTYgcHkzaworODU5MjggOGZhMTMyYTNhZmI1YmU5ZmE1ZjkxMzUzZjZiNmU3ODRhMTBiY2JhZiByZWxlYXNlMzEtbWFpbnQKKzg1OTI5IDVjMTNjZDBmOTliNDVlNDU5NmE4YjhkODczZGFlNDBmNTUxNmMwOTAgcmVsZWFzZTI3LW1haW50Cis4NTkzMCAxNTMyY2EyMWI5MjA1ODY3NjRkNWVkMTNjYWU5ODk5YzhiYmZjNWUyIHB5M2sKKzg1OTMxIDYxYTlhZTUyMmRjY2E2YjQ5NjAyNDk5ZTg4ZGMxMzgyZmNkZDFiYTIgcHkzaworODU5MzIgZjNhMWVhYzYzNWY5OGM3Y2VkNzRiNjIwMTJkOTJkMGQ5ZTAyZTA2NiByZWxlYXNlMzEtbWFpbnQKKzg1OTMzIGY4ZDM0NDg0OTU5NmUxNTE2YTRiYWI0MTg0ZWZjZmRmY2RhNGJjYTUgcmVsZWFzZTI3LW1haW50Cis4NTkzNCBhNGZkM2RjNzQyOTk3MDc2N2E5NjFjZTAyMDcxYWY2NjE5MjBkMTI2IHB5M2sKKzg1OTM1IDhiMzJlNGY2YmQ5OWQyZmIzZDVhNDJlYzYyYmJmNDYwMjkyMjgwOTIgcHkzaworODU5MzYgYjE4Mjc1YjExN2QyMTBiNDExOGQ1ODNlMDE1NTAyNzA0MTA5NDBjMSBweTNrCis4NTkzNyBhMDYyNmY5NzI3ZTBmMmQwOGEyOTUzMzk3NzI2NWZhMjA5ZDg3MzhlIHB5M2sKKzg1OTM4IDc2NWQ0MjFkOTQzYzczNTE0ZjBmYTgzNGI3ZTQ5ZDg2MjIxMDcxYWIgcHkzaworODU5MzkgMWQ1NWNjMjg0ZDRhYjVhZmUzNzRiZGFkM2Q5MjAwOWE5YTgwMjllOCBweTNrCis4NTk0MCAyYzJlY2VkNjM1ZjYwZDBhM2I3Nzk5OTA0ZDZkNjg3ZWE2ODYzMmMyIHB5M2sKKzg1OTQxIGViNTBjNDhkOWNiNDkwOGFhNGM1NWRhYjNmZGNkYjVmM2EyZWU1ODAgcmVsZWFzZTMxLW1haW50Cis4NTk0MiAzZGEyM2RlYjZlOWE1MTllYjZmOTg1N2RhYTJhY2UzNDUwNjEwN2MzIHB5M2sKKzg1OTQzIGQxNjE3MTRlN2M5MjhjNGUzM2EzN2Y4ZTAyNWVmNGVhOGU2NzRiN2IgcHkzaworODU5NDQgNTU2ZjU5MTY2NTQ5OWMyNDIxMTQ5NjdjMDdmYzgzOGFkNTczNmEyZSBweTNrCis4NTk0NSBiZWRlZDQ3YmIxN2Y4YjBlM2UwNmQ3Nzc0NjQ3OGU5NzY0M2RmZDdjIHB5M2sKKzg1OTQ2IDkyNmU4YjZiNmM5ZDZmNzgzYWRmM2YxZjdhZTkyZTdiODMzYThmYmMgcHkzaworODU5NDcgZTcyN2NmMzU0NzIwMTA4MzMyZmRjZDAyZGNiZjkzYTM4Yjg3OTkzZCBweTNrCis4NTk0OCA1Mzg2ZjFmNDI4YTE1ZWFiNThlN2NiMzYzNjJjNjdiNDI4NWZkMWMwIHB5M2sKKzg1OTQ5IGYyNGE1M2VkZTllZDhlODRjYmM5MTRhYzNhYWU5OWU5NDQxZTc3YWYgcHkzaworODU5NTAgMWMwMjBiY2Q1MGNkN2ViNDUwZGRhNjQzMjVmOWFlZTExYmI3NDA5MCBweTNrCis4NTk1MSA1YzAxM2VjMjczMjdkZGFmOTE2OTNlOTY5OGJiOWE3Y2FjNWRjMjExIHB5M2sKKzg1OTUyIGUzOGQyZDE3MzA4NWZmMjg1ZWM0NjlhZTY1MGJlZmNjYjMzNTdjZGEgcHkzaworODU5NTMgNDBhYzQ1YTA5MmI3N2Q0YTE3YzE5ZjY0NjMwMjk2OWNkMTg0ZjdkOCBweTNrCis4NTk1NCBjODVmNTMzOTA2OGExMWI5YjE1MTE2NTFhNWE2OTVkY2VhYTE0MDlhIHB5M2sKKzg1OTU1IDY0ZWY2MWQ5ZmZkYzQxNDFjYTIxMjFmZTFiYzJhYzI4MzFjNTdlMTQgcHkzaworODU5NTYgM2NjYzZhYjU0NmMzYjEyMDYzNzJhMmFhOTI5OGJlYmIwYTg3ZWEyNiBweTNrCis4NTk1NyAzZmRiYzZhNGIwZDBmN2Q4MTAyNDcxMTQ1YWJlOGM2MWRkOWQ3NmU0IHB5M2sKKzg1OTU4IDE4ODMwMjljN2I4YTc0OTQxNmYyNDdjYTdlZGJkN2ZmNjE0ZTc4MTcgcHkzaworODU5NTkgYmFhZDUyZTc4ZGNiM2NhMmYwYTdiMWQ4OTNlYTMxZGQwOGNlZWZjZSBweTNrCis4NTk2MCAwZjc2NWMzM2Y0ZGUyNzNmODc3NjViZDYzNDI3MDExYmI1NzI0ZjE3IHB5M2sKKzg1OTYxIDNiMjEwZDA0OGY1ZGFjNDljZGQxODg1ZmRlMDY3Mzg4ZDlkMmYyN2UgcHkzaworODU5NjIgOThjZWNhMjUxOTg4ZTJlZDM4YTk2YjI4OGZjZGEzNjM3ZTg2NmMyYSBweTNrCis4NTk2MyA5YjY2YTlmMTM3YjZjMDk4ODBjM2I1NTIxMmZiOWE3YTEyNjExYzU3IHB5M2sKKzg1OTY0IDYwMzAxMGFmODBjZjM2N2YwMjEwNTFmZjJkZTZhOGQ3ZjIwZTdkZDQgcHkzaworODU5NjYgNjRhOTdjNGViYWRjZjQ5NGI5YmYxM2M3OGQ5ODUyZTgzODc1ZWYxMSByZWxlYXNlMjctbWFpbnQKKzg1OTY3IDE4MmNiM2Y4MmIwYjY1NzgzYmVjZDcwNDI4MWUxNDMxZTY3MzViNWIgcHkzaworODU5NjggNDgwZTQ1ODI4ZDRiMTkxMjBjYWVhZWI5YTM0MThiNzlmMWQyYTZiNyByZWxlYXNlMzEtbWFpbnQKKzg1OTY5IDBhMmVjMTc0ZmJjZDYyOGMxMjNkNjg5NzdiZDBjNTc1Yjc3YzExNjUgcmVsZWFzZTI3LW1haW50Cis4NTk3MCA5MGJjNzFkNmJlZGZhMTcyNjNkYTk4YjZhY2VkN2MwODVkZDcxYTRhIHB5M2sKKzg1OTcxIDMyMjdiNmYyMDRjYzRiMjYwY2RmN2Y1ODRkMTI2NTE2MDEwODY5OWQgcHkzaworODU5NzIgYWJiZDlkMjZhZTZjNjRlZTQ4MzUzYmRmYzZmNTljZWIzYzc5YzMyNyBwZXAtMDM4NAorODU5NzMgZWE3YjI2MDBmZGM1OThhZjM1ZTBkNDJlYTQ0Mjk5NDkzM2Q2MjI2ZiBwZXAtMDM4NAorODU5NzUgNzEwOTY4YTJlMTYzYjhkOTcyNGM0NmRiMWYyZTRiNTVhNDNjMTRmYSBweTNrCis4NTk3NiA5MzU2ZDc2NWQ3OGUzZDFiMDk4ZmMzMDE3ZTNiZDRhNThhZGM5YTY2IHBlcC0wMzg0Cis4NTk3NyBmOTcyMWE4Zjg3YmQ4YmQzZDgzZGFiZTU4OTlhNmE3YTIxNzUwZDgwIHB5M2sKKzg1OTc4IGVmNmRhZDc1MTdjNWM1NGY5ODcwYTRiZWYyOTZhZWQzZGUxNzY2YmYgcHkzaworODU5NzkgZTZhZjE0NmJiMzhiODg2MGM0NzBkOWRmNDBhODI4NmExN2RiZmU0YyBweTNrCis4NTk4MCBlYTE0OTc3YTM2ZGVmODhhYmRkNWY1ZTBjYjcyMjdkNjJhMzBkOTBjIHB5M2sKKzg1OTgxIGIwMzc3OWYwMDczOWQ0YzZjOTRlOGQwMjU3ZjAyNjAwODY2MDJiZDYgcmVsZWFzZTMxLW1haW50Cis4NTk4MiA4MTliMWUwNTM1ZDE5MGE2ZDU0ODUwZjY5ZjgzYjc1MmQyMTY2NDg2IHB5M2sKKzg1OTgzIGI3MTgwYWZhMGRmZjJmNzhlNzVlMGJkN2QxZDAxYThjMWRmYjA4MjYgcHkzaworODU5ODQgMzZlYTcxOTAyZmM4ZDFjOTgyYWEyMWNhNzg2YmIwMGU5NGUzOWYxZiBweTNrCis4NTk4NSAzODU2YzYxYjVjOGJiYmVkM2QzNWRmNzIxODI0ZTlmNGUzYTAyMmZkIHJlbGVhc2UyNy1tYWludAorODU5ODYgYjAxZmMzYTQyZDM1ZmI4YmQ5ZDRhOTY0MzkyMDk4Y2YyYTFkNTEwMCByZWxlYXNlMzEtbWFpbnQKKzg1OTg3IDcyYTJkNGQ5NDAwMzJkMjU1YmU0YTk1ODhjOGMzZjk2YjZjZTcxYTUgcHkzaworODU5ODggZDY5ODIwNTU0M2JkNzE5NjA5NWY1OWMzYmM1YTQ5MTliZDkxOTM4YiByZWxlYXNlMzEtbWFpbnQKKzg1OTg5IGUyMDNlZDA3MWZjYWI0MzcxY2FjM2E0ZDA2NDJlNmJiODI0ODdkNzkgcmVsZWFzZTI3LW1haW50Cis4NTk5MCBiOTQzOTY1ZmM0MmJjOTFmNzBmM2QyZjg4ZWQ2NzMyOTdlMGFhMzM2IHB5M2sKKzg1OTkxIDhkODI0MzQ4MzIyOGMwM2ZkZTljODU2YjE0ZmVjMjkyYTdhYWE5Y2QgcmVsZWFzZTMxLW1haW50Cis4NTk5MiAyNGIxOGNkNGQ1ZjM1NDk3MjRhZGJiZmQ3M2JjMmQ1ZWJkZDlhYTJmIHB5M2sKKzg1OTkzIDQyYWQ0YWU2ZDhlZWJiNmIyNDBhOTc1ZDJmMWEwNjQyZTk2M2YzYjUgcHkzaworODU5OTQgNjI0ZTgzMWNlNzAwMjkxZmU4ZTEzY2QyNjY1OGJjMzdiMmUyNmQzMiBweTNrCis4NTk5NSBjZTUzZmVhN2Y5NTczZjhhZmU4YjY2NThiZDhmOTA3ZjdhZWVkNjAwIHB5M2sKKzg1OTk2IDViNjI3MDM1YTkyMmY3YTQxMjE1NTg4MzM5YjUyZWZmYmE2ODkxOTYgcHkzaworODU5OTcgOTI1MWJhMjcyZjJjYTMzZjA4YWJjNTFhOGU4YTUyNmVkNjg2ZmM4NiBweTNrCis4NTk5OCAwYmMyYjA2NDA2ZjhiZTNhMzE2MTI0ZTgzNjNhYjNhOTJlOTE0NjFhIHB5M2sKKzg1OTk5IDE5NTRjOGUzMWNiMzhhODlkNjdiMzE1YzQ2NjMzNmE5MGVlNTkyYjAgcHkzaworODYwMDAgZjE4MjUxOGYzZjQyOGNjY2VmMzc4Yzk3NWY0NDI0MTFmYTI0ZTQ1YSBweTNrCis4NjAwMSA3MWY0ZjNiMWMzMzU2ZWVjNWM4Y2M1ZTE2ZDJkY2UwYjNmZmE2MWY3IHJlbGVhc2UzMS1tYWludAorODYwMDIgOWYxMDk2OGY1MTFkNzNmMWJhYzNmOTM3NDczNjQ5OGE2ZmQ1Y2M5MSByZWxlYXNlMjctbWFpbnQKKzg2MDAzIDczNmYzYTEwZDE3MzMxMDMyNzVlYTkwMDVhNWYwMWRkMTQyNDM3ZDIgcHkzaworODYwMDQgMDZlMjE1MDAxMTlhMjljZWYwNzFmZTY3Yjg4YzJmMmE5MWQxOGZkMyByZWxlYXNlMzEtbWFpbnQKKzg2MDA1IDczMmZmYTg2Yzc5OGE5YWU2YmMyOWU3YjgzM2FjZTJjMjRhNzhhNjUgcmVsZWFzZTI3LW1haW50Cis4NjAwNiAyMTE4NTg3MjNiOGNhOTRiNTdlYmQ2MzY2ODE4OGUwMGQwYjliOWQxIHB5M2sKKzg2MDA3IDJlMWFkNzEyMWUyOTdmMTc2YWFkYTJkNjFmNDRhYTBhMDg1MzYzMWEgcmVsZWFzZTI3LW1haW50Cis4NjAwOCA0NTllOTViNjkzMWJlNDNhMzIwM2RlMTU0YWY0Njk5NThiNDg5ZmM5IHB5M2sKKzg2MDA5IDg3NzA5YzZlNTY5MDU3MzdiMTA5OWUxNmJjOGNmNmZiNjE5NDZlYjAgcHkzaworODYwMTAgOTBiYzBjNWQ3MjJmNzc0YzU0ODhhZGQ2ZjVjNzUyYzg5NTZkODhlZCByZWxlYXNlMzEtbWFpbnQKKzg2MDExIDMwNWU5M2ZkNWI2ZDRhZWRiNmYzNWQ3Y2UxZjM2ZjYyOTgyNTc4ZWMgcmVsZWFzZTI3LW1haW50Cis4NjAxMiAzYTc1NTliYThlYjU5MjAzNmEyYWNlMGQxODM2ZGJkMDEyYzVkZTc5IHB5M2sKKzg2MDEzIDQ5YTMxYWUwMzQ4YTU4YzE0YTNkZTIxMWUxZWVjODgxNTdlMjJhYzcgcHkzaworODYwMTQgNjEyYWJiMWU3Njc2MjFjN2I2YjI3ZmRjNzEwNDEwOTQxZjY2YzViOCBweTNrCis4NjAxNSA4YmUwODc2MWRkYzBiZTU3ZjQ1NGRmZGIzMzA2MDE3NzkwZTk5ZDY4IHB5M2sKKzg2MDE2IDk3ZjMyYmE1ZmY4NTRhNmFiZDJlZjkzN2NjNzk5ZDUyOTY1ZDQ3NzcgcHkzaworODYwMTcgMGVlODZmZDkwMmYxZWYzNWJkZWE2NGEzOWMzNWI5YTY5ZmVhZjY0ZCBweTNrCis4NjAxOCAwZWMzMTcwZmFhOTVlNTgyZTVmMGE5NjUxNzBhOTM0MWMyNzc1MDVkIHB5M2sKKzg2MDE5IGFmOWY5ZWZjYmI5ZGI2NGQ2NWEzZjQzZDNhNTA1ZmYyNzIzNjdkNGUgcHkzaworODYwMjAgMDg1ZGU5NjAzYjYyOWZmMjE0NTBlMGE2MDJmYjllOGRkMTY5MGE0ZiByZWxlYXNlMzEtbWFpbnQKKzg2MDIxIDc2MDhkY2FmNzg2ZGRkZGJmYjBkZjA3ZDM3NjdiZmY0MjA5YTA1MWQgcmVsZWFzZTI3LW1haW50Cis4NjAyMiA5NGM1YWQ5ODFjMWI3ZjYxYTM1MGMxNGFmNjQwODc2MGYwMWUwMWQwIHB5M2sKKzg2MDIzIGI0ODE5ODM4ZWI1YjczZjIxNDE0ZGE5NGMxN2Y5NGIxMGY5Mzk1ZjEgcHkzaworODYwMjQgMjE4NzJjMjRhMjViOTA5Y2I0NDgyMjJhNDgyZDQ1MmZkNWVjMjg3MSByZWxlYXNlMzEtbWFpbnQKKzg2MDI1IDllMjkxYmU0ODljZjU1MTRmYjQyNzFiNGIyMWZmNjJkOTMzMTM5ZjEgcmVsZWFzZTI3LW1haW50Cis4NjAyNiBmYzg2NTg2MTliZGY0OWRlYTNjYTQxOWZhYTdlM2UwYjU3MTg5YWQyIHJlbGVhc2UzMS1tYWludAorODYwMjcgZDhkMzM2NDhkMWIyYzdlOGJhMjk0N2Y2NjdlYzU4ZTdkYWU5MTJiYSByZWxlYXNlMjctbWFpbnQKKzg2MDI4IGM5ODIwNzMxODgzZDliZDRmZjRiMGEwYjkxYWEzMzU5MTRmZDYzNDUgcmVsZWFzZTMxLW1haW50Cis4NjAyOSBmM2FmYTEwY2U3NzcxOWUzYmJkYzAyYTgxN2NkZTM2NjEzMGZiZDgzIHJlbGVhc2UyNy1tYWludAorODYwMzAgMTMxZTdjYzllNDE2Y2Q2MTg4MWY5MDNiM2NiYzFjYTZjMjhhNmRmOSByZWxlYXNlMjctbWFpbnQKKzg2MDMxIDMyYzE5MWE1YzFjZjk0OTViZGEwZmM0Njg4MWNiNDIyZjU3NzhmNzMgcmVsZWFzZTI3LW1haW50Cis4NjAzMiBiODliMGM3ZjM3MDk0YTBiNzMzYTA5NmFkNGE0ODU5NjQ4M2YzOWU5IHJlbGVhc2UzMS1tYWludAorODYwMzMgYWUwNmMwNDhkZTI0NzI4MDQzMThlOGViNTA2MGQxMzRiYmYwZjlmYSByZWxlYXNlMjctbWFpbnQKKzg2MDM0IDMyMTdiMTBmODQxM2E4YWQ3OThjYTcwOTY5MzYwM2UzNGNjYTllMTAgcHkzaworODYwMzUgOWI4MTQyOTYyMGY0Yjc3NDVlZWIzZGMyZGI2ZmJkMjY5ZGQ4NGFkNiBweTNrCis4NjAzNiA0MTI3YWIxZjYzMzhjMmM4MGU0MzU2NzQyNjg4YzU3YjdmNWY1YzMyIHB5M2sKKzg2MDM3IDk3ZGY1ZGRlOWY4MWJhNmQ0ZTI3YmE0ZTE2ODJlZGFmZmZmMjE4MzMgcHkzaworODYwMzggYTY4MzBjYzgyMmFhYmUzMzNkOTUyODY3ZmY5Njc2OWZmMDQ0OTc5YSByZWxlYXNlMzEtbWFpbnQKKzg2MDM5IDE0MGQ0NzFiMDYxYTUzZDE3MmY5ZTQyYTYyMDM2MWI3MTE0ZjM3MzMgcmVsZWFzZTI3LW1haW50Cis4NjA0MCA3NWFjMTNmZTdkYTAzYmJjYTRjMzNlOTEwYjllYjJiMGQyY2IzNzMwIHB5M2sKKzg2MDQxIDZmYTQ4ZmEyYTg2NTY4Yzk1ODM1MjMyZmI3OTBlMzY1MDQxY2UzYzAgcmVsZWFzZTI3LW1haW50Cis4NjA0MiA5NDQzMmU0Y2RkY2Y2MjQxYzkzMDNkMDg3ODY4ZmQ2NDM0NGRhMjIyIHB5M2sKKzg2MDQzIDVjNWI3YTliYWMwNWM2NDU5Y2U4ZDkyNDhhNjE0N2YxNmFkZjQxMmIgcmVsZWFzZTI3LW1haW50Cis4NjA0NCA0OTc5NjRjZjllNThlNjBiYWI3ZmIxZGE5ODE5OTQxYzUwNTVhNzAxIHJlbGVhc2UzMS1tYWludAorODYwNDUgNWJkYzBkNmM2OTM5MzNiYzgzZDkyZjBkMjY1MTRhOTg0M2NlZmQxOSBweTNrCis4NjA0NiA1NzU3OTQyNTkzYTBlYmI1MDc5ZmEyMTZjMTMwNmY3ZTQyODBiZDRjIHB5M2sKKzg2MDQ3IGRlMWU1ZWVhN2U3NWQxMDViZTA4YWM0YmJmMmMyMDA5MGUxZjMzZjcgcHkzaworODYwNDggNzE5ZWJjYjkzNGYzZGM0NDAxNTU2NjY4YzFhZTVjMDc2MDZmOTJhNiBweTNrCis4NjA0OSBiYzZjY2U0YWIzYzYzNjc3MDBmOWQ2YWQyYTQ4YWQ5ZTI5ZDliMDZlIHB5M2sKKzg2MDUwIDAwMDVhMTgxZDEwYmJiOTRmYTBlMTIyZGZiOTM5NjM5ZTQxNjczOTggcHkzaworODYwNTEgZWEyYzJmYzAxOWQ2NWM0MTNiZTFiNjJmZmVkM2MxNDM1YWRkODE3OCBweTNrCis4NjA1MiA0MWQ1ZDNkN2RhMjE4ZjlhMjRlNzAzOWViYzZmNGUyYWYyNmQzNWU4IHJlbGVhc2UzMS1tYWludAorODYwNTMgMGE5NDkyMzc4M2E0N2Q0MDE5OGU0MjUxNzM2ZTZmODRiNjk1NDg4MSByZWxlYXNlMjctbWFpbnQKKzg2MDU0IDQzYWNjOTU0MzQxNmI0NWIwNTBiZmE4N2VhM2M3Nzk5NzM4ZDA5MjUgcHkzaworODYwNTUgOTEwM2FhOWIyNzA0YzliNTljYzMwZWI4YzU2ZjI3Y2Y4Nzg3YTI5MiBweTNrCis4NjA1NiAwNTk5ZDIxODg4MzdlYzQyMWYwOTU2ZGY5N2ZjZmZiZWJjOTJhZjhjIHBlcC0wMzg0Cis4NjA1NyBmZWRkYjlhODNhZWYxYzZhYzY4MTUzYzQ4MTQ2N2UxYjVkMTc5MjI2IHBlcC0wMzg0Cis4NjA1OCAwODkyYjJjMzYzNmQ5ZTBjMjhjMzBlYjc2ZjMxZjdmMDg0OTNhYjIxIHBlcC0wMzg0Cis4NjA1OSA5N2I5ZDQwODg5MTRlMzg0YjFiMjNhMzFlYjFlY2ZiZjA0MzhkZTQyIHBlcC0wMzg0Cis4NjA2MCAxMjQzM2U5ODlkOWM5MDE5ZTczZDNhYWYxM2NkMGNkYzM2MjYzMmM3IHBlcC0wMzg0Cis4NjA2MSAzOTMzYWI2ZjZmN2FjOTNkOWU3ODg5ZjVmN2FiMjQ5ZWEwYTYyNWFkIHB5M2sKKzg2MDYyIDUzYjUxZjVlOTVjNGNjYmEzNTVjNTUyMTdhZDEyZDk1OWE3MGMwNTcgcHkzaworODYwNjMgZDBmMWNhMWE4MTM5MWNkMzMyNGRhYjk4YTJlODBlNGZkYzM4Mzk3YSBweTNrCis4NjA2NCBiNjQyNDQxZGExZWE1OTBmYjI3MGNjNDIzOWFmMzFiMzVjMDU1NGQ1IHB5M2sKKzg2MDY1IGVhYTUwNzI1MTIyYjY2YzU5MmUzM2YzNDgxYzM5ZDRiOTJkMmUzYjkgcHkzaworODYwNjYgYTJjZTgyMThlMDI5MmRjZGJjOTMxNzNhZmQ3ZTdhM2I0ZmNlYjk2MyBweTNrCis4NjA2NyA2NDcwNTY2MTk2YjNkMzVkNTM4N2Y2MDE5NmM5ODg3NWY3YWY4YmFkIHB5M2sKKzg2MDY4IDBhM2FlNGEyNTVkZTNhYjc1NTA1ZTFmYzg0ZDAwMjllMTNjMTU2ODQgcmVsZWFzZTMxLW1haW50Cis4NjA2OSBmYjEyZWViMWU3YTliYTIxOGVhOWVlNWZjZTVmYTlmMDk3OTk1ZGFhIHJlbGVhc2UyNy1tYWludAorODYwNzAgZDBiMjBhNjUyMWQyMTQ2ZWQ1ODdiYjQ5ZDIxMmNiNWYwYzMxMDVhYSByZWxlYXNlMjctbWFpbnQKKzg2MDcxIGI1ZTFlNmYzMTQzN2YyYzc1NmM2NTVkODdhYjdhMjQ1OTg0NGIyMDggcHkzaworODYwNzIgYzgyNDg3NTEzZTc2OTA2YWI0MDcwMjFjOWViODEwODZiNzk4MjE5NCByZWxlYXNlMzEtbWFpbnQKKzg2MDczIGZmMmM1YzljMDc5YmEwNmMzZTlhNzczNDM3NjVjODExZmU3MzhmNjIgcHkzaworODYwNzQgN2RjMTM2YTAxMDEzNzA2NmIyYThmOTE1ZTE1ZTkzMzI3ZTY5YTZhOSByZWxlYXNlMzEtbWFpbnQKKzg2MDc1IDQ1MWM5YmI3NTE1OWU0MmFmZDkyMWY4NTU5NmY4N2M4OTc1MDE4NDYgcHkzaworODYwNzYgNzIwZDQ1YTZlMzE2OWQ2YjU1YzYyZmQ5NTBmZWQ2Yjc0NWU2OGI0ZiByZWxlYXNlMjctbWFpbnQKKzg2MDc3IGZlMmQxOWIyYTVjNmQyZGY4ZjhiMGE1MmFkOGY1NjlhZjk0NmRhZTMgcHkzaworODYwNzggYmEyYWUwOTdmNTY3NTMxMmIwOWUxZGFhM2JjNmRmYTA1NmRjZTY4ZSByZWxlYXNlMzEtbWFpbnQKKzg2MDc5IDIwNmRlZDk0MzUzNGQzNmI2NWY0MTBiM2RjOTA4Y2FhMTk5Yjg1NmYgcmVsZWFzZTI3LW1haW50Cis4NjA4MCA4ZTY1ODQ5ZjcxZjUwOTM4ZTZkZmZjNjNlNjIzYzIyOWI3N2NlZjFkIHB5M2sKKzg2MDgxIGJlZWRjNzg1NmY1YjEzOTI5OWM3NjBiZjRhOTA5ODA5NmUwZDBkNzEgcHkzaworODYwODIgOWQxMTMzYzE4NjNlNGMwNjZjMTQ4MWI0ZDU5ZDc3Y2ZkOGIyNjY0MSByZWxlYXNlMzEtbWFpbnQKKzg2MDgzIDlkYjg1Nzk2MDQwMjcyMzVmZDY3YTM1OThjNjQ2NjIxMmI2YTQwNDggcmVsZWFzZTI3LW1haW50Cis4NjA4NCBmMDMwMDU4NGM4MjQ0NGM4YmJmYTkzZmVhN2E2MTgzMDE3MGQ5OWUwIHJlbGVhc2UyNy1tYWludAorODYwODUgZTVkYjMyZjRmNGNkNjgyYTI3ZjgzN2I1N2NmMzVhNmZhODRkMGU5MCByZWxlYXNlMzEtbWFpbnQKKzg2MDg2IGU3MWMyZTFkYWY1NzBiZmJkYzRjYTk3YmViMGJmM2U1YTg4ZTU0N2EgcHkzaworODYwODcgNDkzYTJkNDA3Yzk0NDY4MDYxZmZkYjcyMjI2ZDVlNDAzOWQ1NDAxMCByZWxlYXNlMjctbWFpbnQKKzg2MDg4IDQzZDJkNWFmYmY3MzhiNTkxNDMzZjA4ODU1ZWU0MzBhNGM4ODViMGYgcmVsZWFzZTMxLW1haW50Cis4NjA4OSA3YzU4ZmFmMjJlOWYyZWM1Nzc5ODg0Y2ZiOGEwOGI0YzFkOWRmN2UyIHB5M2sKKzg2MDkwIGNiOWUxMDAzNGU0YTY1ZWMyNzFkZWUwYzAzMzM0MmNhYjdjNDU1MTMgcHkzaworODYwOTEgODQ4OTEyNzg5Yjc5NGFiNDA1ZWE5MjZiZTI0ZTI2ODgyYjYwNjgyNSByZWxlYXNlMjctbWFpbnQKKzg2MDkyIGQ4YWIzNWVjNDg2ZTkwODY2M2JmODhlZTA1NGQwMDVhMTIzOWFlZTQgcHkzaworODYwOTMgNTk1MmI5MzdhYjlhMjhiMjIyNWQzYzk4YzZiZWZhM2VkMGY4ZGFkNSByZWxlYXNlMjctbWFpbnQKKzg2MDk0IGIzYzA5OGMzYTgyNjY5ZjIxOTRlM2IzOWJmMTMwYzYyNzIwZjVjOWMgcHkzaworODYwOTUgNjIxZjNlOWFjZWRkYzVlNzhkNjhmODg5MjVhZTYzYjllMjU5MGE5OSBweTNrCis4NjA5NiAzNTIwZmVhNWU5MjJlYjdhMzEwN2JiNTVmYjE3ZjNmY2FmODY3MTIxIHB5M2sKKzg2MDk3IDUyMDg0ZWE2M2M0MjEyMWE5N2E0NTg5YjEyZmIwOGFkNTcyNzE1YzIgcHkzaworODYwOTggYzc5MWQwMjYxMDA2MjRiNDMxMTYzMzExYzQwODZjMjhkNWViMDhhMiBweTNrCis4NjA5OSA1MzhmNDRiMzJiMGE4ZGI5OTA2N2EyNDZjMTA2NzllNGYzNDczOTE3IHB5M2sKKzg2MTAwIGZmODE2ODg5YWE2MWZjNjIyN2FlODVkYTg5ZjA0M2Q5OGQ0ZDcwMzYgcHkzaworODYxMDEgOWM3YWQwZWQ2NmNiZWNhZGI1NmFiZDVmZDZmZWY1MmU2YTk3NmE1MyBweTNrCis4NjEwMiBiZTFkN2Y2MTlmYzBmMDA2MWY4NmYxNWVlNzRmMjgyOWFmMDQ2NzJiIHB5M2sKKzg2MTAzIDhlMTlmZjk2NGNjOGRhMTYyMGI1ODdlNzgyM2I3MzczMGI4NjBkZmEgcHkzaworODYxMDQgNGVhOTRjNWY2ZDEwMjUyNTRkOTc5M2VlNWJlZWIwNTc0OWQ5OWUzYyByZWxlYXNlMjctbWFpbnQKKzg2MTA1IDg4OWZkOGVjYmZmNDI0NDlkYTUzZmFkNjRiZWIxMzdlMDNlNzI0MTYgcHkzaworODYxMDYgYTM3ZDZkODFmNGIxZTlkNWI4YTA0ZDdhOTA2NjQ5NDM2MjQ3YTdiMSByZWxlYXNlMjctbWFpbnQKKzg2MTA3IGE2Mzk1OWVlYzhmZjRhZGRiYjg5NDk2NGQzMDBiZjk4ZTcyYzUwYzMgcHkzaworODYxMDggYjM0NmM4ZDMzZTU2MDFlYzdhMDliOTViOGI5ZjY0MWEzNjYyOGM4ZSByZWxlYXNlMzEtbWFpbnQKKzg2MTA5IGRlYjIzY2JhYjVhYjYyMzUzOTU2ZTYwODM5MmIwY2U2YTNjMTcwMmMgcmVsZWFzZTI3LW1haW50Cis4NjExMSBmZjZmMzliM2MzOGU0NmJkNWE1MjRiNDY0Njc4NmNjZGUxZTBhZTk5IHB5M2sKKzg2MTEyIDU3M2RiMmFmMmRkYTc0ZjIzMzdkY2FlNDdkZDFjYjk5YWZmMWU1YjYgcmVsZWFzZTI3LW1haW50Cis4NjExMyBmM2I3MTg4MTcxYzAyY2I1Y2Q3YTdmNzk2Mjc0OTk0ZWVkYzEzZjNiIHB5M2sKKzg2MTE0IDM2ODcyYTBlZDk0MzM1ZDgwODAwMWEyMDM1MWYxMjUzZmNkZjAzYzAgcHkzaworODYxMTUgZDdlZGQxNWJhMGYyYWMxMDRmMzZjNzNlNjdhNjY0OGRkZTNjZDBmOSByZWxlYXNlMjctbWFpbnQKKzg2MTE2IDE1NzY3OTAyYjU0NWZjN2JjNDJiYjNhMWE4YjU5NmI4MThjZGI0ZWEgcHkzaworODYxMTcgNDlmMThhOTUzM2NkZTI2MjA4ZTA3ZTViZWUxNzk2YmYwMWUxOTIwYSBweTNrCis4NjExOCBlZGY0MDZlYWIxZGI3ZmEyZTAzOWE0YTU2ZjZhMzE1OTIyNDdiN2U3IHB5M2sKKzg2MTE5IDZlZWQwZmMxODgxOGMxMGE2NTM2ZjkyNmY1YjdkYTJmYzgzM2FjMjIgcmVsZWFzZTMxLW1haW50Cis4NjEyMCA0Y2NkMDY4Y2JhMGM5YjAyMjZiMTFlNzIyYWQzNmRiNGU5YzZmZWEwIHJlbGVhc2UzMS1tYWludAorODYxMjIgZjRmNzk1NTZhNTIyZTA0ZjA2MzhmYTkzOGJjNjFlMWU2MTM4OTM1MyByZWxlYXNlMzEtbWFpbnQKKzg2MTIzIDAwNGQ1ZjE2NTczOGRlY2MwY2YyY2NjMzgxZjYzM2M0MGZjYzA0NWUgcmVsZWFzZTI3LW1haW50Cis4NjEyNCBhMjg1ODQzZTk1OGE0YzNhNzdjMzM1MWMyMGFiYWQzNDQzZWJkYjkxIHJlbGVhc2UyNy1tYWludAorODYxMjUgNDU3NzkyYWZkZWNkNjEwYmZiYmUyZmRjMDk5Nzk0ZTUzZDNkMDNmNCBweTNrCis4NjEyNiAyM2I0OTY3ODQwMWYxODE3MGFkMWQ0M2Y0MGVjODkyMDM1M2NjMWZhIHJlbGVhc2UyNy1tYWludAorODYxMjcgNTNmYjk5MTYzMjdlMGZlYmQ1NDgwODdlNzBkNTQ0MjYyYTYxNjJjNiBweTNrCis4NjEyOCAxMDk1Mzg3MTZjNTkxZDE2MzBlODlmN2RmZTk1Y2U5NGRiMmMyYzEyIHB5M2sKKzg2MTI5IDBjZTBmOGViZGQyOTg1MjIzODIzMjM3ZDUxOTg3ZDQ2MWE3N2ZkOWQgcHkzaworODYxMzAgMTkxMDY3ZjQ5ZmNhMDU1MmYyNjZlNmJjOTY3MTY4ZWQ3YzUzNDU2OCBweTNrCis4NjEzMSBmOTgwZjk0NGJlMTkzNTQyNmQ0ZjRkZjE0YzU2Njk1ZTZmZGEwNDQ0IHJlbGVhc2UyNy1tYWludAorODYxMzIgNjgzNDFmOWM1OTM3M2ZiZTg2YmViMmVjNWY2ZGQ5NzgyYmZlMGRjZiByZWxlYXNlMzEtbWFpbnQKKzg2MTMzIDI2OTczMjZkNGE3N2QzZWM4N2E5MzU5OTAyNTIyNDQ4MDVhMWNkNTggcHkzaworODYxMzQgYTlkYmM4N2EzZmY0YWNhNzQ3NjI2NDI2NjVhMTQyZWU3YWVhY2FiMSBweTNrCis4NjEzNSA2ZDIwZGRlOTYwOWM5MWU3ZWY2YjMwMjAxYTMwNzkyZTM3NTJkMmVjIHB5M2sKKzg2MTM2IGI5NmVkYjAyZWY2MzBmNzE5ZmU5ZDY2M2E0YjJkZjA1NjlhZTI1MTggcmVsZWFzZTI3LW1haW50Cis4NjEzNyAyZDQyMmYxMDAyMmZmMDcxNDc3YjRhZjUxYjE4NmZiZGM2N2IyODQ4IHB5M2sKKzg2MTM5IDU4ZTU0ZjU2M2RlN2NmM2Q0MmE2MGFjZjIwZGI0NjBhNTQ5OWMyNzMgcHkzaworODYxNDAgOGE0ZTI2Mzc5NmEzZTVmZjU5NTIyNmU4Y2ExNjU4M2U4MTUzMWNlMiBweTNrCis4NjE0MSBiOGMyMDZlNWVkNDRhY2ZkM2M3MmVlMjdlZjNiYjkzNTM4MjVjNDFmIHB5M2sKKzg2MTQyIDhlZjMyOTU1YTM0OTRlOWM2YzRmOWNhYmU4MTIwZTJmNGY5YzlkZDMgcHkzaworODYxNDMgNWIwNjVjZjYwZGRlMTJhMDY5ZjhmZmFkZTNlMGI0NmQ3NTQxNTZjZSBweTNrCis4NjE0NCBmMjU1MDEyYjM0NmJjOTRhMTYwNTk1ZDgwMGFiN2IxYTNjNDczMWVkIHB5M2sKKzg2MTQ1IDY3MDg1ZjIwMjE0MjkxMjJmYTEyZWRhYjdmMjI4YTFkOTM3MmQwZWQgcmVsZWFzZTMxLW1haW50Cis4NjE0NiAxNDJkNTM5MGFjNWM2YTAyYWFiMmY5YzQyMzY4ZTNlYzlhMzU5NzE0IHB5M2sKKzg2MTQ3IDRkMWFiMmQyNWJhZjZkOGVjNGJiOTViZmE4NDFhODBhNDFlZjk4ZGMgcHkzaworODYxNDggZGMzMDM4MmJhODlhMTMwN2M4NDBjNWQ5Y2JhOWEzMDNlOWJkYjkzMCBweTNrCis4NjE0OSBmMjlmNjJjMzU3ZTE0Yzk1ZmQyNDZhODNjODYwNjcwMzVkNzg3ODI5IHB5M2sKKzg2MTUwIDgxYjBlODllM2RmM2NkOTQzYWZmNDFlYzVkN2I3ODE0OWMyZDRlMzEgcHkzaworODYxNTEgOGE1ZjA4NzNkNzM4MDIxOTg1YmE2ZTgyNDQ5NTU1OWUyMTRiZGIyMSBweTNrCis4NjE1MiA4ZDY1OWE1NDc5Y2E4NDg5M2EzOWZmYTg0MDE5OGQ1NjM1ZDVjYjA2IHJlbGVhc2UzMS1tYWludAorODYxNTMgNDYyNDFhMzViNWZjNTA3YzNkZjI2Njg2ZTkxODQ3OWM3MjRmMjhkNSBweTNrCis4NjE1NCAyOTk3MzVlNWZkN2Y5MTE0YzMzYWJlMmU1Mjc1ODRhNzFhNDQwYWI2IHJlbGVhc2UyNy1tYWludAorODYxNTUgYzk2NzMxNGVmNjFlNzNmMmU3NmM0ZWRmYjQxMGZjYWI3ZDZlYTI0MyByZWxlYXNlMzEtbWFpbnQKKzg2MTU4IDcxYWM1MjNhNmIxMjM4NDIyM2U4N2I0Njg0MTNhOTQ3NWIzMGYyZDUgcmVsZWFzZTI3LW1haW50Cis4NjE1OSBlMWI2MWIwNTJjNjZiZDNmNGEwOTgxMzJiNDEwMjYwNjYyMTU2NGIwIHB5M2sKKzg2MTYwIDFlNGQ0NmE2MWZiZWVlZWIzZWI0NTA5MGY5OGVhNmI3ZWM4NmEzMTMgcmVsZWFzZTMxLW1haW50Cis4NjE2MSA4NDRlY2UzNzM3NjQxNGNkM2Y1ODZhMmZkMTkwNTY5N2E4OTI3NTFmIHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODYxNjMgN2M1ZDFkY2UzOWZhYWE2YzBjMzcwMGEwZDkzNjUyODQ3YmVlZDI3OCBweTNrCis4NjE2NCA1MjMxYTVhMzdhN2FjZmU4NjczYjEyNDE4YTY1NGY5MzNmYzViZmQ2IHJlbGVhc2UzMS1tYWludAorODYxNjUgYmViYTJkZTIwMGRkMTY1ZTJhMzNjNGU1MTlmZjk4N2Y0MTc0N2I0MiBweTNrCis4NjE2NiA2ZTA3YzdlNGM3Y2NhOTQ4NTY1YWYwOTg2N2RiZDBmZWMxMTQyNDU0IHJlbGVhc2UyNy1tYWludAorODYxNjcgY2M3YTg4ZTA4ODk5MzlhYTYyMGUyNDcwNzFkYjZkNTNkMmFmMDI0NyBweTNrCis4NjE2OCBmZjY1ODVhMmEyNDMyYzFhYTFjZjQ4ZTE1MTRhZDU3ZTdmY2Y2MzNkIHB5M2sKKzg2MTY5IDY2MzFlNWY2ZDJjZWU0MjJlMzJjYTBjN2RiYzc3ZmY2ZDYwMmM2NjAgcHkzaworODYxNzAgMDVlZWQ5ZjBjZTAxNTUyNjA4ZWFiMGQ2OWMwMmYzYzZlNTdmMmYyZSBweTNrCis4NjE3MSA0Mjk0ZTJjMDAyNDU0MDAxZDQ3NGY5OTY0ZDkxZTQ2ODc4YzJiYWFlIHJlbGVhc2UzMS1tYWludAorODYxNzIgMWY0NWJmYjk4NDczNzAxN2MyZjg3NGM2NGIyMDJkYmMwYTJmMDk4OCByZWxlYXNlMjctbWFpbnQKKzg2MTczIGRkZjAwMGFlZjViMDdhNDRlYzRkZmI5OGMzOTljYzk1MTc2ODBkYmYgcHkzaworODYxNzQgMzI5MmNjMjIyZDVjZDg2MTMzZGRlZGE1NDVlODllMzMyNDBhZDVjZiBweTNrCis4NjE3NSAyNzBiNTAyOTZlYTlmYjBlZDA3NWI4NzMxZmQ0MmQ2MzFjOTUxMTkxIHB5M2sKKzg2MTc2IGVhNWFlZjMyYTE3ZjE3MzZjOTY0ZTQ1YWQ2MDVhNDljYTAxZGVkODkgcmVsZWFzZTMxLW1haW50Cis4NjE3NyA0YmI5Yzk3NGY1MTk4NzZjNzAwNDhhNjEzNmIxNGE5YmU2ZGVmYmViIHB5M2sKKzg2MTc4IDRlZTY4MmZiZWMzMGRiYjE0NjQyYmUyYmMwNjUwNzg1NTg0YWZkNGMgcmVsZWFzZTI3LW1haW50Cis4NjE3OSA2MmIzYTBhOTliMTllNGE2ZDU2N2VkMzg5OWNkOGE4NmQyMDNhNWE5IHB5M2sKKzg2MTgwIDJkNWRiZGU2NGEzNThiMjY5OTM0NTY0OTExODJlMjNiODFiZjE2MDQgcmVsZWFzZTI3LW1haW50Cis4NjE4MSA0OGU1NTQ5ZTJjMjU4OWYzZGJiMWMwZTUxMjhhNjJjNTljOTQ3Zjc4IHJlbGVhc2UyNy1tYWludAorODYxODIgN2FiNzJiYTM4ZmUwMmUxMmIxNGQ4YjE3ODkwMDljZGU5YTBiYjQ2ZiByZWxlYXNlMzEtbWFpbnQKKzg2MTgzIGI4MzZmMDQ3NTljZDM2MzNmYWY2MmZmNThjOTRjNTZmMjA1NTMxOTkgcmVsZWFzZTMxLW1haW50Cis4NjE4NCA5NDdiNWFjYzY0YmQ5MjdlNGQwNjc2MjgwYjA4Y2JhNmE5Mzc0N2Q2IHJlbGVhc2UyNy1tYWludAorODYxODUgNmUxYWUzMjNmZGU2MjZiNjJmY2FiMmRhZjJkNjFlMWU3YTVmMWM0ZCBweTNrCis4NjE4NiA0MzBkNTBlM2FjNTMxYTRmMzhiMTIwY2E4YTdmNzNhODdhODc4YmZmIHJlbGVhc2UyNy1tYWludAorODYxODcgOGNmOGJiNWRjNWY4NmVhMmMwMTFjOTQwOWU2NmUwMDRmNTY3NDVjNyBweTNrCis4NjE4OCBlYzlkZDk3MzUzMmYzYzA0ODI5MDdhZDRkYTIzNWMyMzdjYzc1MjI4IHJlbGVhc2UzMS1tYWludAorODYxODkgYmI2NmE0ZjVlYmMyYWJhODU1OWIwMTM4NThhOTYzYTI4OWMyOWZiYiByZWxlYXNlMjctbWFpbnQKKzg2MTkwIDFjZTY5ZWU2OWU4ZWMwMTg1NDI0OGM3MTBkMjViZjQ4NTIwODE1NzggcmVsZWFzZTI3LW1haW50Cis4NjE5MSA0YzFjNDhiM2FmNjYyNmI2MDY4MDVkMWRmNmFmMzI0MmNhNmJjMDNkIHB5M2sKKzg2MTkyIDc5YjNmYzY4MWNiMDk0ODZiNGExYmYyMTgyMTRhODNiMGJiN2JmYmIgcHkzaworODYxOTMgMmQwNWU5ZmRiNTk3ZjAyZGNjMTk0NGZjMjdlMDlkOTlmYWY0NWJkNiByZWxlYXNlMzEtbWFpbnQKKzg2MTk0IDdkMjgwODdmYmFmM2E5YTY5N2Y0NzI4NzA1NzI1OGI3NDAwMzFhMjcgcmVsZWFzZTI3LW1haW50Cis4NjE5NSBiMDI0OWQwODM5ZWRhYjEyM2U4MzQ2YzExNmJjYjkxNTVkN2YxZjgwIHB5M2sKKzg2MTk2IDEyNDNlYzY3OWMyOThiYTY0ZWYyZjU2MTRkMjFlMDhlYTZkNzIyZmIgcmVsZWFzZTMxLW1haW50Cis4NjE5NyA2MmZmMTE2NDQzMzkxZDBlM2Q5OTViNDNiN2RjNDY2MWRiMTRkYTE2IHJlbGVhc2UyNy1tYWludAorODYxOTggMTg4OTZkNTgwMjkwYWNhMzA2ZTljOGVkMmFhMjI4MzQ0ZTY0MGJkZiBweTNrCis4NjE5OSBjNTAwYjQxMzhmN2I5YzExNzlhODBkOWViZDhlMzAxNzdkNDg5MmU0IHJlbGVhc2UyNy1tYWludAorODYyMDAgNjIwODU3MzNmN2RmYjllYzJhYTIyYmNmNDIwZDk3NjdjNGY4ODNjNSByZWxlYXNlMjctbWFpbnQKKzg2MjAxIGIyNTRjNjUwN2MzNWQyNzQwODk0ZWIyYzMyNWQxZDYyNTQwYTQwMzcgcHkzaworODYyMDIgMjU5YTliZWMyMzI2YzY5MWFmZmNlNjE3ZGRkMjZlZTk4ZWE0MDc1NiBweTNrCis4NjIwMyBlZDM1YjExZWJlYzY4Y2U3ZjVkNjA4OTdhOGEzYTMxNDE5ZmQwMmU2IHJlbGVhc2UyNy1tYWludAorODYyMDQgMmEzMzJlNzE1NzY2Mzg2ZWRjOGZjY2FiMTI5NzdiMGQxYTc1NGM2MyBweTNrCis4NjIwNSBlMjEzZTQ2NWEyZGM4NTUyYzk4ZTVjNTc3YTM5N2IyNWY1ODM3NTJlIHB5M2sKKzg2MjA2IGVkZjhjNGIwMDA0MWUwOTU4YTM4M2M5MDY4NDc3N2ZkOTI2YTkxODggcmVsZWFzZTI3LW1haW50Cis4NjIwNyBmZTg5NjJmYzBlMTE5OTNkZGM0MDUxNTlhMjVlYzJjYzdiOWY4ZDNiIHB5M2sKKzg2MjA4IDIzOWZmZWU1ZWRhZTUyOTQ0NmFjMzRjM2ZjYWYxZTNiOWM0N2UyOWMgcmVsZWFzZTI3LW1haW50Cis4NjIwOSA1YjIxMWRjOTY4ZGZjN2JjOWE5ZmYzZWUzZGFmZGNmMjFmMmJlZWNmIHB5M2sKKzg2MjEwIGQzMWVhZWM4ODNlYjNlYmI3MTA4YWNhYmI2YmY1ZTRkNTgxMDQyZWMgcHkzaworODYyMTEgNDliMGQ0MjMwMjNlZDc0ZmEzMGM4YmQ1OTczMzE2YjZhZTMxZTFhNCBweTNrCis4NjIxMiBjMzdiZWY4ZGNlYTJjYjU5MGQxMDVjYjk1NjRhYWI2NjQ2OTBlZWU2IHJlbGVhc2UyNy1tYWludAorODYyMTMgZWRlZmM1ZDJiM2Q3NGU5ZmI1NzM0ZDQ0MGRiMWJmODIwNGU1ZDMyOSBweTNrCis4NjIxNCBkMzNkNjJhYjkxY2NhY2Y2ZTM3OTNhOTE1ODgyYjA3MWI5MTMzNmYxIHB5M2sKKzg2MjE1IDczY2E2ZGZiMjJhYTE1MTM4MjAzODkxMmUwODBlNjZjNGMxNmIxODYgcmVsZWFzZTMxLW1haW50Cis4NjIxNiAxODVhYjdjNGI5NDY5MWE4OGVmZjcyMzUxMmRkYzEzNDY5ZDI3NWY1IHJlbGVhc2UyNy1tYWludAorODYyMTcgMzg1ZDIzOWJjYmZhNzgwNjY2YjE1NDczYjNkNTk1Yzc3YmZlNTI2NCBweTNrCis4NjIxOCA4MjIyMTQxMDU2MmIzZGIwOGNmMWQ5MzBjZmFjZGI3NDVjNzM4NDExIHB5M2sKKzg2MjE5IDQ1OGIwNWFiZjk4NzNkOWE3NmUyYmMzZTdkNDlkNGI4MjNhOGMwMjYgcHkzaworODYyMjAgNTcxZDMxN2I0Y2Q1ZjJmM2U2NTMxOTg0YjlhMTUyNGZlZTFkYThhYyBweTNrCis4NjIyMSA1ZGVkMjVlMDZhOWFmYmFjMmZhOTBkZDVlZDQ0MGZhMzcwOWNlMWU3IHB5M2sKKzg2MjIyIGY5MGVkMzdhZTE2ZjBhNDQyZjQ5OWVhMDYxYzljODQ3MTNjMjAzOTUgcHkzaworODYyMjMgM2JmODY3ODVjZDljNWUzNzkxYjU1MmJkZDExYzk0OTRlYzBmNTYxZCBweTNrCis4NjIyNCAxMGUwNTgwODk1ZWQ0NTgwNDIwYThhMzFlMzI1MjJjMjhlMTcxM2RmIHB5M2sKKzg2MjI1IGZkZDM2ODFiMTQzOTk2NDMyNDllYjM0ZTcxZTNmNjYxMWQwYzgxNTIgcmVsZWFzZTI3LW1haW50Cis4NjIyNiBlM2ZkMTIwNWIxMDU1ZTU4NTZlOTE1OThkNjkzMzA1YTY2NzI4ZmQwIHB5M2sKKzg2MjI3IDMyMDdkOWY0ZDAwYWVkMzJlODBkNTdmODMyMDU1YjA4OWRlZjdjYjMgcmVsZWFzZTI3LW1haW50Cis4NjIyOCBhMDkwYmY3MTZhNjg3MzU2NzljMWE0ZmQwYTM4Mzg0NjE0NTFjNGZkIHB5M2sKKzg2MjI5IDlkNzNmOTgyN2M5ZjRhNWY5YjNjYjQzZGFmNWMzZDgwMTc1ZjUwMzEgcHkzaworODYyMzAgNTNlYzM4ZDMxOTg4YTFkMmQ1OTExMjBiZDE0YWVjZTJmMDM5M2I1YiByZWxlYXNlMzEtbWFpbnQKKzg2MjMxIDg5MTFmNDc1YWQzZDJmZjNjZGNkMTYyNTAyYmNjMWZlODU0MTdhNzMgcmVsZWFzZTMxLW1haW50Cis4NjIzMiA5NmRiYjBjMTY4YjY3OTUzMTM3ZTUwOGNjYjkxZWU3OWU1MjQ5ZjkyIHJlbGVhc2UyNy1tYWludAorODYyMzMgYWNiMGEzY2MxZTE4YzcwOWQ1YjYzMmIyMjFjMDRiNjgzNjg0YzEyNSByZWxlYXNlMjctbWFpbnQKKzg2MjM0IDlmODYyMTFmMGE0MjczYmM5MDFiODY1NWVjNWE1NjkwMGEyZjc1YzggcHkzaworODYyMzUgMjIyM2FmZTNlYWJhOTQ4MDQ5NzE5ZjdmNTQ2MTA5YmUwNDYwMTY0MCBweTNrCis4NjIzNiA5NmYzMGZkNTRlMGZlYTZmYmRhZTNmOTdjNDIyOTE1MzVhN2I1ZTg4IHB5M2sKKzg2MjM3IGY1ZGQ0YTU0ZDc5YjUxNWY5ZmEyOTdkNTk5M2M4NzVkMWViNzZlNDAgcmVsZWFzZTMxLW1haW50Cis4NjIzOCBhMTdiMjFjMjdhMzM4NDc0OTI3M2U3ODU1YjM0OTVmNmJlZGQ4OWRjIHJlbGVhc2UyNy1tYWludAorODYyMzkgNWQ4NGYxYjczZDUxMDI4MmQ1NTk0MzZmNDMxMTNmM2Y3MTQ5OTZlZiBweTNrCis4NjI0MCBmZjA3MmFhNzBjMWRhNzRhOTFjMTVlZDA4MWZjODI2MGMxMGI4ZjIyIHB5M2sKKzg2MjQxIGNjZDk5ZDU0NzlkY2U3OTE3YTk1ODVkMGFmNzA0NDcwNDJiOWRkOTQgcHkzaworODYyNDIgZDQzYmYzMGZhZjZlYjg1MDA3ZWVlZjc4YjlkZmQ0Y2YxMDMxZjRhYSByZWxlYXNlMzEtbWFpbnQKKzg2MjQzIDYzNmZlZDhlNzhkNjNmNjJhZjE4MjBiNjFlYjZmODM5ZGZmZWYwMDcgcmVsZWFzZTI3LW1haW50Cis4NjI0NCBiNTY0OGUxMGMyM2E3ZGMxYTgyZGNkYzI4YmU5YzU3YzIyOWZjNWU2IHB5M2sKKzg2MjQ1IDJiN2ViMGU4NmQwN2NkZmM1Y2E1MWUzNWVjZjA1MmExMGViZGVmZjAgcmVsZWFzZTMxLW1haW50Cis4NjI0NiBkZjM0OTkxYzdkMGU5NWFiN2NkMGE4NDk2MzNhYjE3NDA2MjczMjlhIHJlbGVhc2UyNy1tYWludAorODYyNDcgZmM0ODM3NTA3OWE2YWU2OWEwZTc1NzNjNGMxNmM3ODAwNmE3MmNiZCBweTNrCis4NjI0OCA2OGY4YTk1YjUwYzdmYWUyNmMzZWMyMDgxMGE3OWE3NDQ1ZjY5ZDE3IHB5M2sKKzg2MjQ5IDUxMTVkNGEyZDg5ODI0NjAzZDBlMTg3YTM3YTBlMTM4NGIzZDcwMTggcHkzaworODYyNTAgN2NiODA0MzU4MWI1N2ZlZmY4Mzc3NDRjYTk1M2M1NjdkMDU4YjJmYSByZWxlYXNlMzEtbWFpbnQKKzg2MjUxIDMwNDVhZGEzOTI2OTE1NzYyN2IxMmZmMjBmYTc0ZjMwOTUwZWU4NmMgcmVsZWFzZTI3LW1haW50Cis4NjI1MiA2ZGRjNTc2MzRkZTU2ZWQzMzFhNmI1OGFjMWEyZWZiNzgwOTZjODJjIHB5M2sKKzg2MjUzIGJhMGFlYzY3Yjk5YTBhOGUzZmFlNmY4NmMwZmMxYWVlMTkxMDQyMzcgcHkzaworODYyNTQgODgzOGM1NmI2OTUyNTFkMjYxNjY4MjJjZjNkMTUxOWYxOWFmNmU5YSByZWxlYXNlMjctbWFpbnQKKzg2MjU1IDNiZjQyZDkxMGRiOGI4Nzg3NGJhNTBlM2JkNGI0YjE2MDhlNjUxNzQgcmVsZWFzZTI3LW1haW50Cis4NjI1NiBmZjEyNTcxMjhjNzUwZTdkNjk0ZTMxZTVjOWY0NzQ2ZjcyNDg2N2JmIHB5M2sKKzg2MjYwIGY0NTdjNDZmOTA5ODM2YzljMWZlMThiMjhhMWE0YjhjM2E5ZDE2YzIgcHkzaworODYyNjIgZTg1MDI1NjdlZmFmNDllM2ZhYmRhYTk3MmQzMWVkZTEyZjU2MGJiZSBweTNrCis4NjI2MyBiZTU0Njk4MDhjZTliODc2M2E3MjY0MjZmOTZkNWZiM2U4MDhiNjMxIHB5M2sKKzg2MjY0IDM4MjZhZGNhN2EzYmY0Y2E0MTg4NzA3ZjM0MWNhNTljODAwNzczYzEgcmVsZWFzZTI3LW1haW50Cis4NjI2NSA0ZmViNTFmNmZkNzZiZDlhYWMyZDQ4OWYxNDQ4ODNhZGIwM2U4ZDhkIHJlbGVhc2UyNy1tYWludAorODYyNjcgMDczYjA3YjNiZGFlY2Q1OWUxMzY0M2VjMTNiOTI0ZmEwNzNiYTY4YyByZWxlYXNlMzEtbWFpbnQKKzg2MjY4IGRiNjU3NDNkMDYyZmM1YWYyMWM4NjQxZjA1ZTgzYWZkYzM0MzdkZmQgcHkzaworODYyNjkgNzYyYjk0NDUwMzY3NWU0NzU1YTNmYjcyMzhkYjk2ZjczMTA3ZDY3ZiByZWxlYXNlMzEtbWFpbnQKKzg2MjcwIGYwYzdlMmIxMTI3MzlmM2RkODVlYjUyYjgxOGM1ZGFjY2Q3MDhlZWYgcmVsZWFzZTI3LW1haW50Cis4NjI3MSA0MzQ4YzliNmE3MmQ2ZDk0YjU1MTc2ZGNiMGVmZDk0NGE4YjUwMDY4IHB5M2sKKzg2MjcyIDc3YjhjOTVmMGMxYjUzYzAxOWEzYjQwZDYyNGU0ODkxMmU0NzlkNjggcmVsZWFzZTMxLW1haW50Cis4NjI3MyA5N2I5NWFlMjM0OGIyYWE3MzIwY2RjMTU4NzgwOTEwMzM0NzYwMDY5IHJlbGVhc2UyNy1tYWludAorODYyNzQgN2E5ZGJhODlhN2NlODQ2YjQ5YjM4MjBmZTQxOGI2YzI2YjJjNDIyMCBweTNrCis4NjI3NSAxMGJkZGEyNDI2NTQ1NTBmOWEzZDg5NjM1MzAwZjIyNjE4M2RkZGJlIHB5M2sKKzg2Mjc2IGFmMDRhYWUxOTNmZmY2NTllNjdhYjM3NjkzMjUyYmQ1ZDhmZDgwNTIgcHkzaworODYyNzcgNzA0MjVmZDQ3ODU2NTBiYWQ0YzdmN2RkNWE1ZjVjMWM2ZjNkNjhkNyBweTNrCis4NjI3OCAyY2MzZDYyZjA2ODA4OTkzZjQ1NWE4YWM5Mjc0YjNlYzBiOGUzMjc2IHJlbGVhc2UzMS1tYWludAorODYyNzkgMTQ5OWRiOTljNGNkY2YyZGYzMjI2NDY3OWEwNTNiMzAzNDNhOWJlYiByZWxlYXNlMjctbWFpbnQKKzg2MjgwIDI4NjQyNGU3NWNkOTI0ZTFhMjE2MmI1MDJhZGE0ZjgxOWExNjNhYTAgcmVsZWFzZTI3LW1haW50Cis4NjI4MSAzN2Y0M2RlNjVkMTBlOWY4MmY3NjMxODkwN2IwNjgyYmU3NmUyNzI5IHB5M2sKKzg2MjgyIGQwMzYzMmMzNjhkMzcyODVmMWM2YjllMGE1ZmU0MjE3Y2FkNGEwMDkgcHkzaworODYyODMgNjFiYmQ0Yjc1ODc0ZTIwODRjMzZlODM0YWEwMzQ2ZjkzZTdjMzc1YSBweTNrCis4NjI4NCBmNmI4ZjMzNmUwMGFhMzc2Nzg5M2ZhYWRmZjVkODIzNjBkYzUyZGY3IHB5M2sKKzg2Mjg1IGI2MDNkMjQ4ZDRhZDkxMTBkMGZkZWFmYjVmMTg5NzQ1YTU5NjVlZDEgcHkzaworODYyODYgYjFjMDZmYTQ4Y2M0YjA5Mzk5MWFiNDViMWYwZjAxNGI1ZmFkZTlmYiBweTNrCis4NjI4NyAzMjg5OTJiMGVhNzlhZjRlODc0NDgxNGE2MjFjMWVkYjIyMDQxMGFiIHJlbGVhc2UzMS1tYWludAorODYyODggZGNmMTdmYTg0ODIxNzZlNzZlNTkyMTkwYTczMGUwYmQwZjE2OWJiMiByZWxlYXNlMjctbWFpbnQKKzg2Mjg5IDM5NzllMGNjMzNjMTMzMjBkYjA0OGVjMWMwNGQwOWRmMmE4MzgzYjIgcHkzaworODYyOTAgYWQ2NDkwYTU2ZDE1OGI5YjZmZDBlZjBjYzRmNDM3N2JjZmFlZTViNCByZWxlYXNlMzEtbWFpbnQKKzg2MjkxIDc0NWQwZjE2ZGY3NmE4YjAxMGFiNzE2ODg1ZjQwYWY3MzQ2ZDI3MDIgcmVsZWFzZTMxLW1haW50Cis4NjI5MiA2ZTg0MzIxMTY2NGQ3MjE2OWE1NzdmMzNjODZmMzJjMGM3ZjVkYzliIHJlbGVhc2UyNy1tYWludAorODYyOTMgZTQ5ZWJiZDJjNDk2MWVkMmE3Y2U3OGFjMjRhNjIyOWNlMTQxMzVkZiBweTNrCis4NjI5NCBjMDhmN2Q2YTAyMzE2OWViOTFiNjkxNzQ4NjUzMGFjMjIyNGE2YjBiIHJlbGVhc2UzMS1tYWludAorODYyOTUgNTM4NGU0ZTQ2Mzc0ZGFkNWJiY2EyNmMzYTQ5ZDllNzQ1MjYxODkzNyByZWxlYXNlMjctbWFpbnQKKzg2Mjk2IDA1NDNjMDJlOTQxYzEwMjRjNjMzMzBiNDdjZDJlYTk1ZmE3ZmIwNDAgcHkzaworODYyOTcgMjI2MmY2YzQ0ZWJjYTY2OTM0YWY0NDJiYzI4YTY1OTBmNDY5YzQ0ZiByZWxlYXNlMzEtbWFpbnQKKzg2Mjk4IDhmMDllZWRjZDcwYTBhODkzZTg3M2ZmNTRlZDgwMThmYjE2NzkzODMgcmVsZWFzZTI3LW1haW50Cis4NjI5OSBmZGNhYWMwZTAxMGEwMzU5OTE3NzBkZDk3Mjk0Mzg4ODNjZjcyZjMyIHB5M2sKKzg2MzAwIDMzNTQyM2Q3MzZhN2ZmNDNiMWY3ZmJlMTFkMGViODcwMzU5M2UyZTIgcHkzaworODYzMDEgZThmMWVmNWZkNDIzODM5NjdiNTMyMzg0ZmUyMWY2ZDBiNTI0MmY2MiBweTNrCis4NjMwMiA0MThkY2IxYzQ1ZjdmYjgwMWRmNThkNjAwNTMxZDdhOTFkNzY4N2VhIHB5M2sKKzg2MzAzIDgwNDczYWQ2OTdhYzMwNjc1OTdlY2YwMDhkMzRjZjI2NmEyZDcxNGEgcHkzaworODYzMDQgODE1NGRiOGExNTkzM2RiNWQyNjAxZTg2YjYyZmYzOWQ2N2U2ZTkxNSBweTNrCis4NjMwNSBmODIwOGMzMzk3OGY4ZjRmN2ZkMzU3YzRhMGQ1Zjg2MDJlNWVmYTEwIHB5M2sKKzg2MzA2IDg4ZDA0ZjAxNDNjNzI3NmVmYWI3ZjA4ZTk2MWJkYjM5ODc5YzVmODcgcHkzay1jZGVjaW1hbAorODYzMDcgODU1YTEwZWZiMTBhMjlhZmUxZDI5NGJmY2Y4OWQxNzU4MmZlYmE2MiBweTNrCis4NjMwOCA3NmJjNzE4ZmU3YzkyYTllNzMxYTNiNjg2NzhlNTA3YTc5ODcwMjM3IHB5M2sKKzg2MzA5IDNkYjE3YTQ5NGRjOTRkMjU1NmU5ZmIzNGJmMTQ3YmI1ZjNmNzVhMGEgcHkzaworODYzMTAgM2MxYmZlNTRjZDIwOTZhMTg2ZmRhNzU0YWM4YTlhYzg5NzlmOGZhOSBweTNrCis4NjMxMSA2ZDEyOTRhZGZhZjQ0MDljMDc4ZmE5M2Y0NTM2ZmVkYzNiYjMwYWM3IHJlbGVhc2UzMS1tYWludAorODYzMTIgOTZjODBmNDJiY2U2Y2I5N2MxMGM0MmEwYzBjMTgwZGVkN2M3MzRmNSByZWxlYXNlMzEtbWFpbnQKKzg2MzEzIGQ1NWI3ZDBiYzk3MzdmYzA2ZjE0ZGMxN2U2MDQxN2RhZDU3MzU5YTAgcHkzaworODYzMTQgMDc0NTMzYTc1OTYyZTBhMjBkMGM2MWQ2MDFkYjdmZTk0YjVlMWNlZCByZWxlYXNlMjctbWFpbnQKKzg2MzE1IDFmZmJkNjc1M2ExNTQzN2FkNDA1ZGZjZGNkNGYwZjg3ZDJiMTFlMWMgcHkzaworODYzMTYgMjk0OGQ1ZmIxZWJlYjVmOThhMTkwYzkzYmY3NzM4N2U0NDAwYjZlZSBweTNrCis4NjMxNyAyZDY4MjQ4ODQ0MzViN2I3M2I2Mjg2Y2JmYjQwOTZlMWIxMWRiMTQxIHJlbGVhc2UyNy1tYWludAorODYzMTggYThhYWNkYjQ1MjBlMTZlOGMxZjlkNWEyMWFkY2ViZjM1NWRkNWIwZiBweTNrLWNkZWNpbWFsCis4NjMxOSBiMGRlMGNlOGE3MjY0YjQ4ZGI4MzBiOWNkZDU2YTI2ZjFkZjJlNTI3IHB5M2stY2RlY2ltYWwKKzg2MzIwIDgzNzhlYjgwNzc0NmJiMWUyN2M2YzMyOWJmYjgzN2U0MGIxYjQ1NjkgcHkzay1jZGVjaW1hbAorODYzMjEgMTY5OGIwZjY0MGI2NGU1ZTI0MDMwYjJkNjFkZGFmY2E4NjM1MzhlYyBweTNrLWNkZWNpbWFsCis4NjMyMiBjYTJiOTM3ZTFhOGQxMjY1ZWYzYzY5MWY5MTE1OTlkZDBjZWRmN2EyIHB5M2stY2RlY2ltYWwKKzg2MzIzIDJiMWY4NGE0YWQzM2MxNWY1ZGEyZjhlZGYwMzQ4MjRiMmIwNzUwNGEgcHkzay1jZGVjaW1hbAorODYzMjQgMDcwMzY4MTc1YjI0OWM1NzRlNTU2OTU2ZjRiMTNlYWQwNzUyNzU4NyBweTNrCis4NjMyNSAzYmQ3MzExM2U4MTA3YWU1YTBlNzEwYTRjMWUxNjQ4NWI3MmFhOGYyIHB5M2stY2RlY2ltYWwKKzg2MzI2IDQyNzA4MGYyYWFiNWVkMzVhM2YyMzE2ZjkzYjk3OTJlY2E0OWVkYzYgcHkzaworODYzMjcgM2YxMDM0YjQzNDc4M2M0MDIwYzcwNWNlZGM3OTAzMDFmMzViMDFlYyBweTNrCis4NjMyOCBmM2M1MzM4NTdmYWJiYjc5NmQzM2M3YzM4NzE2NTYyN2E3MWE3ZTMzIHJlbGVhc2UzMS1tYWludAorODYzMjkgMGFkNmEwZDAxNDlhYTgyYTI1MjBkMTQzMTE4MTIzYjEzNDc3MTI0NyByZWxlYXNlMjctbWFpbnQKKzg2MzMwIGQ2ZDcxZDRkNmI2NTA2Yjc1ODJjNzRjNGU4OGUzMTJlMWM4OTE3MzggcHkzay1jZGVjaW1hbAorODYzMzEgMThjYmFiYTYxZmE1NjQ0M2IyMDNiMTcyNDhhODhmNGZkNGRhMGU4ZCBweTNrLWNkZWNpbWFsCis4NjMzMiAwMGJjM2FmODliN2NkYTE1NjRkM2ExZWQzZjZiNTc2MWVjZDJkMGIwIHB5M2sKKzg2MzMzIDhhYjFkZTA4MTNiM2JmNzQ2MzRmNjhmYTc5NDgwZjdlMDI4MWQwNTMgcHkzaworODYzMzQgNzg4MDNjZjE0YTk0YWZiM2M4NGQzMjI5Njk2YmNlNGVmZDBhYjA2OCBweTNrLWNkZWNpbWFsCis4NjMzNSBhZDY0OGYyYjVlMDAwNWRmMmE2MzQyZjI3M2M2ZWMwNDY0ZjgyYWI3IHB5M2stY2RlY2ltYWwKKzg2MzM2IDQ0Y2QwNDBkZGE1NjY2MjVhOTU1MThkM2YxOTNmZDE4Y2Y2NGU3ZmEgcHkzay1jZGVjaW1hbAorODYzMzcgNDI4YjYxMmNiMDc2ZDgzODg3ZDU0MzdkNTZlMWZjNDk5ODI1NjcwNiBweTNrLWNkZWNpbWFsCis4NjMzOCBiYWI3ZTcwM2UzZWE5ZDExNDcyYjMwNGMyNGE4NWJiMDc1MjY1NjRjIHB5M2sKKzg2MzM5IDU2YjZjY2NhMWQ0Y2I1YzdlNTVhNjY0NzNlNjJhYjAyODM4N2M3MGUgcHkzaworODYzNDAgOTAwODExZjY3MDVkNzVlNDQzMjAzZTZjNTE3MDUxNGI5N2JkYjA3MSBweTNrCis4NjM0MSAxYjVmNDdlMmUwZjAzMGYxNGE4MTVmNjk3MWZiOWQ3ODMzNjIwMzZiIHB5M2sKKzg2MzQyIDZhMmI5MTE3ZDQ3N2I3NjBjYTJkMGZiNGNkM2JiZDkwZjE0OTRhYWUgcHkzaworODYzNDMgNzZhMWM1ZTg4MzUyZjczZDJjYWY3NDZlZWU1MDEyZTVkNmNmNGZmMyBweTNrCis4NjM0NCBmYzNiMTJlYmZiOWEyYjQzYzNkYjFlNWFkYTQ4MWEzYTZiZDQ0MGMwIHB5M2sKKzg2MzQ1IDc1ZTAyZmRiZDMzZTZjY2IyMzkzY2RmZGI5ZDVhYTYwYzFjN2E2YWYgcHkzaworODYzNDYgMzA2MzM5YzMxNzU4NjU2MTAzODk2NmQ5NWI0ZmU0MTUzMTJjNjQ2OCBweTNrCis4NjM0NyAzMjNkNDNlODk1M2FmOTFjOTU0ZTk2YWE3NDk4MWZiN2RmMjljODUyIHB5M2sKKzg2MzQ4IDlhNjZmZWIwN2EwYWMxMmFhNmFkYzBmODAyODI1ZGM1MTVkNzNjOTkgcHkzaworODYzNDkgYjM0N2I1Y2Q0MTEyNjk4MzYyNGI3MTk2NzY2MTcyNDFkZmRkNTY1ZiByZWxlYXNlMjctbWFpbnQKKzg2MzUwIDY0MGEwOGVjOGZhMjk0YzZkZGIxODQ4MTRiYWM4NjUxMmEwOWM4YTYgcHkzaworODYzNTEgYjZkYTk3OTMwZjYzMWZhY2E5OTUyYzM0ZjVhMjYxMzYyZDRlZTJkZCBweTNrCis4NjM1MiBiNDkzOGMzNGI4MDM2MGNjN2IxNDQyNGUzYjIzMTI1YjBhNmY2OTNjIHJlbGVhc2UyNy1tYWludAorODYzNTMgNDQ4YWI3NTE2YzBhMDZkNmE4OTJiMWFjNWNiYTE5NTY4MGViNmJiYyBweTNrCis4NjM1NCA2NDZkZmRjNDhjYTg2ZjEyOTIxMDVhZWZkY2NkZjczNDY2YWYzMTU0IHB5M2sKKzg2MzU1IDE5NGYzMGRjNDcwMzQ1OTQxNWQ5ZmM0NWQ3ZGUwZGE4MWE1YzEwMzMgcHkzaworODYzNTYgOTRkMGNjYjYzYjQ2NGNjZmY2MDI0YTc0NzU4Y2EzNTI3MmI3MmZmZCBweTNrCis4NjM1NyA3NGZhNjNhYWIzZmQ2Yzc5N2QwZWRiMjYyNjZlZDM1OTlhOGYxM2UwIHB5M2sKKzg2MzU4IDZmMmE5MjFkOTcyMDMxNTg5NTdmNGRlMTZlZDljYWE5M2YxODBhMTcgcmVsZWFzZTMxLW1haW50Cis4NjM1OSA0MGViMGM5YTNmOTIzZjk5NGU4M2M4YjU0ZTViYzFkMDNiZmViMGY2IHJlbGVhc2UyNy1tYWludAorODYzNjAgODYxOGRmNmVjYWRkOWI2NjY5MDc3Y2Y2MDlkMzZlN2RmYTIwZWMwZSBweTNrLWNkZWNpbWFsCis4NjM2MSBmZTljZjUzNTExOTAyN2I3ZjFhN2UxYTQ1YmI3ZWRiODc0MGNlMmE0IHB5M2stY2RlY2ltYWwKKzg2MzYyIDczNjcyZTQ0NWNjOTEzMjNhMTcwNjM3MzAzYmMwOWYxZGJlYWNiNDUgcHkzay1jZGVjaW1hbAorODYzNjMgN2E4NDBiNmQyZjIyNDk3NWM5ZTc3N2YzN2RiMDlkZmNjODMxZDNhNyBweTNrLWNkZWNpbWFsCis4NjM2NCA2MDAwNTkxNGRmYzc2MGE4MjMwOTNmNjAxYzkwNDA0NTJmNTdkOGUwIHB5M2sKKzg2MzY1IDljMDk4NTdiZGEwYjQ5ZDAzZjhkMGQ4NzUxYmZjOTFlYTFkYTA4MzAgcHkzaworODYzNjYgYWYyNmJjMDk0OTVlM2NlMTRiZjUyOWJkMTU2YzRhOWEwYTliMzc0MSBweTNrCis4NjM2NyAzMTJhZDhmOThmZTM3MTdlNWE4YTg3YmVhZGFkMjYwOGRmOGNlNGM4IHB5M2stY2RlY2ltYWwKKzg2MzY4IGUzM2YxNmNhOWVjZmRmNjY3ZjRiZjVmNGY4NWYzZjUxYWNmZjIxZWIgcHkzay1jZGVjaW1hbAorODYzNjkgZWVlYmI2MjJmZDA4Zjg1MDIyNTBmMDMxMmVmOTQwNDgxMzhjNWU1NCBweTNrCis4NjM3MCAwYWE4YWY3OTM1OWQ1YjUwYzU5NDBjYTFkOGZlMjZmZDBhNmQ0YTVjIHB5M2sKKzg2MzcxIDhmNWQyYjUyNzYzNGE4YzFmMmUzMjJjYTQ2YzMwMDA0MTA4NTk1ZjYgcHkzaworODYzNzIgYmI5ZTQ3Yzk5MWI0MTgyZmNiMmMwMzkxMGY1NjVjMzIzNGI2ZmIxNiBweTNrCis4NjM3MyA2NTM2NGM0NGUyOTU4ZThlZWM3ZDg3M2M4ZmIwZjJjZGNjYzZmMmQyIHJlbGVhc2UzMS1tYWludAorODYzNzQgZDBmYzEwNjYxN2UyYTcwNTc0ODE4NDliNjViMzYxODA5MmJlMGE4YiBweTNrCis4NjM3NSBjNGRjYmU1MWMyZTMzOGNlNWJiN2U2OThhMGIzNGMyMWI1NTI0NGQ1IHB5M2sKKzg2Mzc2IDlmYTUyNDc4YjMyYjlmYTdmOWNhYTIxOGI5NDgzYmUwNDQzOWE0ZWYgcHkzaworODYzNzcgNTU3YmJmNmIzZDcwYWM4MjE5ZmE2YzAwNTY5YmZkNjYzYzM3MmUzMSBweTNrCis4NjM3OCAyZGQ1MTllNTk5Y2MyM2Q3ZjVhYmM5YWIxOTVhZDhlMjk0MWJiOGFlIHB5M2sKKzg2Mzc5IDQ5MTk2NDI2ZWQyZjE0MzIyNTg1NTA5MGZiNmEwY2U2ZTY5OGY1NGIgcHkzay1jZGVjaW1hbAorODYzODAgMTZhNDZiNmU3MDU0NGExNDk5NjMwZDFiZDY2NGUxYzhmMTJjYWM3YSBweTNrCis4NjM4MSBmMDA1MDJmNTdiMjhhZTgwZDg0ZjJlOWNiNjRlYTMyNDNiN2E2ODE2IHJlbGVhc2UzMS1tYWludAorODYzODIgNmEyODFmMDQwYmIxMzRmMjJjNWExODNlZGY5ZmViYzgyMjA3ZWJjMSByZWxlYXNlMjctbWFpbnQKKzg2MzgzIDU3NDI4ZTMxMjNhY2MzNDFjNjY1M2ZlZTcyNzc0MWU4MmVjNjYwMjAgcHkzaworODYzODQgMWIxNmJkMmJmNmM3ZDBjYWJjYzM1ODFlM2M3NDgyODc5MGRhYWIwMCByZWxlYXNlMzEtbWFpbnQKKzg2Mzg1IGFlOTI2ZWNjZGQwZWQwY2E5MDI0MWQ5YmY0MTUyYzZiN2VjMTRjMDQgcmVsZWFzZTI3LW1haW50Cis4NjM4NiAxODE3YTE2ZDFlYWI2YTk2MGRlNzdiYmU2N2I2MjZmNDgzZGFlNTI1IHJlbGVhc2UzMS1tYWludAorODYzODggZWI0YTM0N2I5OGMxNmNkYzNiMWYxOWEzNDM5Y2Y4ZjNlOTY0OGZlZCBweTNrCis4NjM4OSAxODE3YjcwODhkOGRmZWQxZDAwZDZmM2QyM2EzM2Q3MDE2YWRiN2UzIHJlbGVhc2UyNy1tYWludAorODYzOTAgZjkzZmFiZGI4N2FiNDE4MzExZWU1MGYwM2JhMWM3ODUzZWRlM2RiZSBweTNrCis4NjM5MSBlMDI3NThlNTUyZTkyNTc4OGVkN2Y0YzBmZTVlNzYwMjFhMWY3OWZhIHB5M2sKKzg2MzkyIDk2MWM5ZTg4MjFkZDVkYjU1YzVmZDcyMjYwMTU0NzE1MzMyODgxYWIgcmVsZWFzZTMxLW1haW50Cis4NjM5MyBhNWIzOWQ4OWRjY2I3MDYwZTg5NDU2NzM5MjBiOGIwNjQ0NThhMzI4IHJlbGVhc2UyNy1tYWludAorODYzOTUgMDZmNzZlZjI3Zjg2YzA0YjI1YWIxNzg0ZWZjOWRjOWNmMDg5NzQ3OCBweTNrCis4NjM5NiBkZWE0Zjc2NDE5NDBmZTNkOWEzMzgyMGYyNDYyMTFjOTM5MGRhNjM2IHJlbGVhc2UzMS1tYWludAorODYzOTcgNzRhNTg5NGI5NTEzNGYwODllZjUzNTI1OWFjMmNmYjM2YzNiYjVkZiByZWxlYXNlMjctbWFpbnQKKzg2Mzk4IDhlNmExY2QxZjQyYmYzZjcyMDBlMWE0YTIxNTg4YTczNDIwNzNjMTcgcmVsZWFzZTMxLW1haW50Cis4NjM5OSA3Y2VjMGRkMzkxZDY5ZjczNmUzYjZmZTUzZWVlNjU4NzZmMGIwY2I5IHB5M2sKKzg2NDAxIDMxYjFhYTMwMzA2YzU2M2QwNjQ5MmRhMDk1ZWNkMDY4YzU2MmNlZTggcmVsZWFzZTMxLW1haW50Cis4NjQwMiBlNTQ2Zjc2MDVjZjEyMzBhYjBkMzMzNDY1ZWI1NDQ2ODY4YWYzNmM1IHB5M2sKKzg2NDAzIGM1ZTA0OWZkODE3MGM4YTRhY2IzMTExNGRhZjM1YTZhMWEwODk4MjEgcHkzaworODY0MDQgYWFmY2Q1ZTBmYWYxYmY5ZWM4YzgwMGExMzg0YmI0ZWVhODgxMmRmNCBweTNrCis4NjQwNSA2N2ViM2Y1M2RlZWI5MjljODM3ZTU1ZDhkNGEzYWMyMjY2YmNlZDBkIHJlbGVhc2UzMS1tYWludAorODY0MDYgNWI5ZWM1YWNkYWM0Mjc0YWQ0NGQ2YWY4MGFhZDVhOGU1ZGEyZmEzNiBwZXAtMzE1MQorODY0MDcgNzc5Mzc3ZjMwNzdkOWUwNjFlNjRmN2I5YzRkNGViNmY4NjIwYTBkNCBwZXAtMzE1MQorODY0MDggNzIzZWQxYjc3ODcxYmEyMWU1NDY1NGRmNmRlYTY0MjE2ZjcxYWM1NSBwZXAtMzE1MQorODY0MDkgYjUyMmFiZmQyZmRlNzAwNDRjMjAzNzg3NzgzODBjN2VlODg4MTVkMyBweTNrCis4NjQxMCA5OGJkM2NhMWVkODYzNmY5NmI1MTNiYTQ3NDQxYmRiN2RiNDUwZWE1IHB5M2sKKzg2NDExIGM2OWFhMDcyODJhODhhZTgyY2E2NzhkZmI1Mjc4YjQyMDZiNDdkOWUgcmVsZWFzZTMxLW1haW50Cis4NjQxMiAxMmRhNWZiODExMzQwMThmZjg4ZTczMGQyNjM0MGJmOGU5MjE0ZjNiIHJlbGVhc2UyNy1tYWludAorODY0MTMgNTU3MmI4Njk2N2ZmNzZlNmIyOGQ1MWYxMjI2MTk0OWNmZGE2MDhlYSBweTNrCis4NjQxNCA4NTdkOWZlNjAxNjk4MjYzYzNkY2I0NjEzZDQ5YjY4YzJjNjFjYjEzIHB5M2sKKzg2NDE1IDE2NmM3YmU3MmU3OGE2NjI1NmRmMTA1M2I3YTVhNjIwNWIzMTNjNmMgcmVsZWFzZTMxLW1haW50Cis4NjQxNiBkZjJlYmRkYzI4YzYzMmIyMmYyYmY4NGVjZjI3MDk5YmE2YzVjZjJlIHJlbGVhc2UyNy1tYWludAorODY0MTcgYzNkODVkMmFlMWM4N2EzZjk2OWVjOWE4NzM5ZWNjYTdhODVjN2JjNiBweTNrCis4NjQxOCAxYTY1MjkwZTZkMDM2MDVjMDYxMTc5OWZkMDMxZGJmYzFlNmQ0YTBkIHJlbGVhc2UyNy1tYWludAorODY0MTkgNTAzMDdhNzk1NDI0NTIwMzg2OGU2MzAwNDI1YTYzYjk5MDc0YmNmNCBweTNrCis4NjQyMCAwYTFhNGM0NDQzODE2ODFkZWRiYjQxOTJkMWU2MTM1YTRkYTRhODhiIHJlbGVhc2UzMS1tYWludAorODY0MjEgYmU1MGM5MWU2ZGE1M2Y0MWNjNTk0ZmQ2NDA4MTAxY2M4NWFhODc2YSByZWxlYXNlMjctbWFpbnQKKzg2NDIyIDYyYWIzOWVmZTFjNGI0OTU2YTk3OGEwY2Q4YjA4MDkyZWI2MjlkZjAgcHkzaworODY0MjMgZWM0MjExMmMyMTAwOWJhM2U3MDJjOTc4ZDg3NjM2NGIzN2ZmZTExNiByZWxlYXNlMzEtbWFpbnQKKzg2NDI0IDhlYjFjOWU4MTg3YmQ4NTA0MTQ1ZGYxYjBhNDk0NDhhYTk1YjhmNmYgcHkzaworODY0MjUgYzlkM2UxMmJjZDQyZTZlOWE4ZjVlNTY3ODM5NTcwZTUzMTYyYzVkNSBweTNrCis4NjQyNyAwNTA5ZWNkZmY4YWU3Yzk1ODUyMjNlMTg0OWM1MzRlODcxYWYzNGFkIHB5M2sKKzg2NDI4IDU2ZmIxZTc3Njc0ODYxODQyYjczNDI4ZmMxZmMxMDc3N2VjOTEyNjcgcHkzaworODY0MjkgMDMyOTYzMTZhODkyMzFjNjhlZjZiYWFiZDhmN2I0OGI3MGJhY2M1YiBweTNrCis4NjQzMCAwYTI3YzlkYjlhYzc5MzMxYTJlYjZkODhkZTc3YjM0NmJhNGJmYzlkIHB5M2sKKzg2NDMxIDhkNjUxNjk0OWE3MWQwNzU4NTVjZTkyYTZiOTZlNTk1NDJmNDI0NjkgcHkzaworODY0MzIgMTI2MTAyYmE3NDhmOGYzZjJkNmRiYTM3ZTU4NmE5ZjZmNGYzMzkzMSByZWxlYXNlMjctbWFpbnQKKzg2NDMzIDZhYTc3ODNlYTBlOWU2YTNkYzVlNWE5ZTU5N2ViZTg1Mzk0ODMzM2UgcmVsZWFzZTMxLW1haW50Cis4NjQzNCBkMmVmODhlNzFiNGFjOWY3NDRlYzkxN2Y5MjY0NWMwZDFjMDhjODY2IHJlbGVhc2UyNy1tYWludAorODY0MzUgZTJlZjQ3YmMyODFkNDk4MzJmNDZhYzQ5NDRiYWM3OTNjYTM4Njc5OCBweTNrCis4NjQzNiBjZTQxMjdlYzVlZWI3ZGFmZGViMGMwMjY1MTU0ZWYwMWZjZmU3YmJiIHJlbGVhc2UyNy1tYWludAorODY0MzcgZjZlODEzYjQ4YWYzZGFjYWU3YjYyZDIyYjkwOGVkYzRkMDg1YTI4NyByZWxlYXNlMjctbWFpbnQKKzg2NDM4IDNkNTQ4YjcxZDA4MjgxY2U1ODI3MzRjZjI3ZmYwMTkzMTFmYWNjMGQgcHkzaworODY0MzkgYzIxYWVmM2ZmNWUyZjM3YzZlZTFlMDQ3YmFmNzMxOWEzNTg0YTZiNSByZWxlYXNlMzEtbWFpbnQKKzg2NDQwIGNhMGVkYTQwMDIxNDgxNDI2YjBhYTAxM2RhODE3YTE3OWJlNzdlMDMgcmVsZWFzZTI3LW1haW50Cis4NjQ0MSA1YWNlMWRhMzI3NWU5ZTgwZmUzZjE2MDNiOWZjOTY3ZTEyOGE0MTk1IHB5M2sKKzg2NDQyIDAzMjQ2MjQ3OWUwYmQzMmFmZTY3ODc0MWM0MzhhYTVkN2NkYWIyNjIgcHkzaworODY0NDMgNWZkOTE3ZDQxYzljMmQzN2RkZDNmODlkOGRkOWY1MWRkYjkxNmMwOSBweTNrCis4NjQ0NCBjYWJjNzYxMTU0Nzg0OTlmNDQwZGU3ZGQ4MjJmMGVjYTRhZTdmYTY1IHB5M2sKKzg2NDQ1IGE4M2Q5ODg4YTBkOWFiYTA3ZDA0NmFmYmZiYTlhYTE2MTA1MDAzODYgcHkzaworODY0NDYgZDEyYjk5MzYyOWExNjc4MTlhM2E5Yjg0YzNjMzAxMjE4ZjNkOTVmNiBweTNrCis4NjQ0NyA2YmRkMzJjYjU1YTlhMmYwZmM4NGE4MjNlNzUzN2YwMGQ4MjhjZTBkIHJlbGVhc2UzMS1tYWludAorODY0NDggNGM0ZmU3MTM5YzY4ZTIxYmJmYTQ4MjEzNGY1NDM1OGEzNmRkNjRiMCBweTNrCis4NjQ0OSBiMTFhODRkZTQ0OTI1ZGNiOTYyN2UxY2MxMjU5YjA3NjE3NmE2NmM4IHB5M2sKKzg2NDUwIGM2YjJmNDE3ODMwZWFiNDU2NWQ4YmJlNzg1MzEzNjUwYThiNmM2NjQgcHkzaworODY0NTEgZDkyYTViODUwZjVlNTY4MDhiZWRjMDE3MjM5MDZlZDY0YzVlNmUyZSBweTNrCis4NjQ1MiBkOWU2YjhhNzcwNzA1MmJkNDA5ZWQ0NmY4NzQ2NzU2ZWY1MzU5ZDEyIHB5M2sKKzg2NDUzIGQxOGU5ZDcxZjM2OWQ4MjExZjZhYzg3MjUyYzZkMzIxMWY5YmQwOWYgcmVsZWFzZTMxLW1haW50Cis4NjQ1NCBkNWVlOTZlN2FjZWJiM2ZiNTIwYWIzODM4MTlhNGZkMTBjNmE0NTdiIHJlbGVhc2UzMS1tYWludAorODY0NTUgNjNkOWYwMGZlYTA3MzBjMWM0MzdhNTBmNjRhNDJiNzc5MmJkY2JmYiByZWxlYXNlMjctbWFpbnQKKzg2NDU2IDRkNDVhNGFmMzJhOTZmNzE4YzEzZjc5Mjc0MmUyNjMwMTMzYmMzYWEgcmVsZWFzZTI3LW1haW50Cis4NjQ1OSA1MDIyZTViNzNhZDE5N2MxNjY3NjVjZTdjMGEyMDQ2NWE1NDFjMzcyIHJlbGVhc2UyNy1tYWludAorODY0NjAgY2UzODhmYjFiZTAxZjkyMTliNWY4NDA2NmM5OTUzMWUxYzM0ZDIyMyByZWxlYXNlMzEtbWFpbnQKKzg2NDYxIDBmMzk4MTg4YzdmNjA2MTAwMjQ5YmQwZjkzYzRiZTU0NTZhODkzMjcgcmVsZWFzZTMxLW1haW50Cis4NjQ2MiBiN2QwMmFlNDVkMTUzNTE3NDhjODRmNTg4Y2FmZDlmMmU4MGIwZGVmIHJlbGVhc2UyNy1tYWludAorODY0NjMgZmNhYmU0N2ZlMWRlNTA0ZjAzZWJjZjZlYWNkNDMyOTdhYjk3NmM3MCBweTNrCis4NjQ2NSAyNGZjOGM4NTJkMTNhNDc2NTY1MWJlNzY4ODYyMjhiNzljZTU4MmM1IHJlbGVhc2UzMS1tYWludAorODY0NjYgYjQ1ZWFiYzdjMDA0NmM1MTdjNDE0YjFkOWIwYWQ3ODg0NzA2ZDdhMCByZWxlYXNlMjctbWFpbnQKKzg2NDY3IGJhMDE0NTQzZWQyYzIzNWM2NjRmZWE0YTJhNzU3Y2M5NTEwZTk0NjEgcHkzaworODY0NjggNjgzMzI3MTM3MzY1MTQ2OTgyNzlkYjIxNGJlNjM4MGU0YTA4YzFhYSBweTNrLWNkZWNpbWFsCis4NjQ2OSA2Mjg5NTlmYjQwYzMzOWE2OTIxZmViNjM3NDY1MzI2OTY1Mjg2Y2E3IHB5M2stY2RlY2ltYWwKKzg2NDcwIGU0NWQwYmI3ODBkY2IzY2YyMGFhZmQyMmQxMTQ3Y2VmM2Y1MGZiNzUgcHkzay1jZGVjaW1hbAorODY0NzEgZjcyM2FhMTU3YTgyZDk3NjcyODllODYyNTQ2OGYyYzQ5OGU2YjNjOSBweTNrLWNkZWNpbWFsCis4NjQ3MiBkYTAzYzY1MDUyNDBlYWViZTIxOTBmODA1NGI5YWE5NWQ2M2JlNjY4IHB5M2stY2RlY2ltYWwKKzg2NDczIDY5YzkxMzFhYTMyMjRlNzY3ZDhkNzYyMTZkOWYyNDdiMGI1YWU5MjcgcHkzay1jZGVjaW1hbAorODY0NzQgMzM1ODI3MTBlMDE0MWZlYzA0YTljNmI4YzM2YmJiZjM4MzhmMjQ2NiByZWxlYXNlMzEtbWFpbnQKKzg2NDc3IDk4YzhlNzkzYzBiM2RjY2VmYTRlNWJlMGJmMTg2YjRhYjhiNGQwOWUgcHkzay1jZGVjaW1hbAorODY0NzggMGRmNmFjNjIyNzJiYTk1ZDIyYjNlNWM4Mjc3NmUxNzYwNDhkMmYzYyBweTNrCis4NjQ3OSA0YjhjZWQ1ZmVmYjc0NmIzODMzYjY4OWRkYjc5ZjZjNTdhMzk3YWIyIHB5M2sKKzg2NDgwIDM0NjI3ZGNhMjE5NmVkOGMzMjM2M2E5ZWFhMGU5MDhjYTcwZmJkMGQgcHkzaworODY0ODEgNTJmZTYwMjE2ZTg5MzIzMjIxN2FkYjk3MzgxZDJjMmMyOTgxMjBkMCByZWxlYXNlMzEtbWFpbnQKKzg2NDg0IGFlNjYxMGNhOTBhMTljZjY4MzE5YzEwZjU1MjQ5Y2M5ODkwYzNlZjcgcHkzaworODY0ODUgNTVhYmMwOTY1ZTlkNzY1ZDMwMzM2YWNhMjliMjBhZGI1YWRkMGYzMiBweTNrCis4NjQ4NiBiYjEyMzc0YzhkYzZlN2FjMTUxMDBmMDA3MzcwMzU3NjE1MWJkZDQ5IHB5M2sKKzg2NDg3IGM0ZmU0YjEzMDBkNTc4OTUzMTUwZGRmMWI3M2E0ZmMyNzY5YzNhYTAgcHkzaworODY0ODggZWYxZGI3ZjVjOGE5ZjIxMDU1YjNmMzg5N2NiZGJlYjQ5YWY0N2YwYyBweTNrCis4NjQ4OSBmZjZiMmJmNzVkODEyNjcxYWRjYjc1OWUwNTliZDEzOTE4YzY2YTJkIHJlbGVhc2UzMS1tYWludAorODY0OTAgNDY3OWZiZGZjODE3ZjY2YjE1YTYzMGNiNDZkZDFjZjFlOTAzZGUyMiByZWxlYXNlMjctbWFpbnQKKzg2NDkxIDU4NmE5MmNmNGNjN2Y0NzM1OGFiOTk4Yzk0OWQwNjJlZjc1MmM5OGUgcHkzaworODY0OTIgYzlmYjMwZmQxZjBhNWNhZmQyMmUyNmFhNGExOTFmZDMwNzJkZTg3MCBweTNrCis4NjQ5MyAwZDFiNjYyMzAyNDdjNTVjZTI4YmFmMDQzNDgwMTAwZjlhNDcwNGYzIHB5M2sKKzg2NDk1IDUyYmY3OWZkNmQ2YzZmNGI2YTYyOWIzMmEyNDg4Y2VjZjJjMmU0NWYgcHkzay1jZGVjaW1hbAorODY0OTYgZDU0YzhmMTZjNTFjMmJmNWZmZjQyZjIyNTNjMjgzNGVlMmE1YTRmMCBweTNrLWNkZWNpbWFsCis4NjQ5NyBiZDY4Y2VmNGYxZWUwOTg4ZGUzOTlkZGRjODMzYjY5ZDMyODJjNzY5IHB5M2stY2RlY2ltYWwKKzg2NDk4IDc4MjZkOTA3Yjc2NWJkM2UyNjY4MTQzNGQ3MmE2ZWRiNDdlZTUxMWQgcHkzaworODY0OTkgZDhjYzk1ZDdkZTYyYTFmYmU1ZWJmZTY3YTUzNWQzMGIwNTc3ZjA4MyBweTNrCis4NjUwMCA3NWE4MmZlMjc0YTdjODZmZTdhNTY2MmFlMjM0ODAwMjE0N2JhOTE2IHB5M2sKKzg2NTAxIDM3OTAyOTcxNGUyNDU5ODk3MTA2YTIzNTY2Y2I4MDg1Y2Q4N2UwM2EgcHkzaworODY1MDIgOTRiYmNlY2Q5NTgyNTdkYjBhMWQyMzA1ZjM3MDVmMDY4NDJjMWVlZCByZWxlYXNlMzEtbWFpbnQKKzg2NTAzIDUyZTUxOTliNjUxMzNlMDU2M2NiMDFjMjcxNDVkYTQwMjQxNGFhMTMgcmVsZWFzZTI3LW1haW50Cis4NjUwNCBiNDE0MDRhM2Y3ZDQxOWIxYWYyNGM0YzQ4NzZjOGM2NjQ0YjFmMzY1IHB5M2sKKzg2NTA1IDY2ZThkMzVkNzFmZGVhZmI3ODFhOTI5NTdlMWExMGJkM2NmODM5YzcgcmVsZWFzZTMxLW1haW50Cis4NjUwNiBjZGMzOWY2YmViZjEwYmJkZjc1NTJkZTEyNmEyNDZlOTIwNDY5NjYzIHB5M2sKKzg2NTA3IGFmMTNmYjZmYjNkZjdlNGE2ZDlmNWJkYjYxOWJkZmFjYmQ5MmRiNDQgcHkzaworODY1MDggMTViZDUwZWUyYzRjM2U5ODY4YWNjOWM2YzY1MzAxYmVhZjE0NGJmZiBweTNrCis4NjUwOSA4MDVjMjhkZDY3YjNlMjFiMDc3MjgxZTRjOWI1MjYzOWY0OGY3N2Q2IHB5M2sKKzg2NTEwIDQ4M2JiZWJjNTdiZmZiNWY2OTQyMWZkZmE0YWMyYWI2NzllNzIyYjQgcHkzaworODY1MTEgZjlmYjkyZWE0ODUwMjkyODA3ODQ3ZjAxYTg1ZWNiYjM0Njc0OTkzZCBweTNrCis4NjUxMiBlMTA1ZTZhYzg1MzY1MTRkNjkzNjM4Y2EzYWNlNDljYTY1NDQ1MjBkIHJlbGVhc2UyNy1tYWludAorODY1MTMgMjdlMzJkNTIwMDU1NjA4OTc1MjUzOTZkZTY2ZWUyMTYyMWUwYWNiYyBweTNrCis4NjUxNCA1YmM0NjNiMDRjODMzM2QzMWY3NGE2ZjM1MDgyNWVjNTdlOTYxZTU2IHB5M2sKKzg2NTE1IDAxOTQyMWE4OWVmNTlkYzBiMTZmYTY5M2Q0OGRjMGU0ZmM1MWIxNDkgcmVsZWFzZTMxLW1haW50Cis4NjUxNiA4YjZmYWVhMzA1NzM0MGQ1NmZlZjllNTRkYzg3OWJkYjk1YjQ1ZGMzIHB5M2sKKzg2NTE3IDI5NzgxNjBmNDkxNDk1YmIxMzUyYTBhMDBkMjBkYWJhZjQxMTY2ZTQgcHkzaworODY1MTggODJiMTYxZmEyODE4NDEyNGQ5NjdlY2ViYmNiMTM5NWI1NzAxMmUyZSBweTNrLWNkZWNpbWFsCis4NjUxOSBmMGRkYzkxYmFlYzA0YTQ3MjlmYjRjN2UzNDU4NzM1OGIxOGJmNzA3IHB5M2stY2RlY2ltYWwKKzg2NTIwIGJiMjc2OTM4OWM1MzE0NzNlMGU5YzhjMTQ3ZmQ5ZGJjNjJhOTFmZjkgcHkzaworODY1MjEgMzc4ZDRmNGU5Y2I1MGQ4ZmQyMjc5NGRkYjJjNDk5ZWE0NGUwNzI1MiBweTNrCis4NjUyMiBmYjdkZGYxZDM1OTQwMjkyNzAzZTcwMWRlODY3YTVjMWY1MDE4NDY0IHJlbGVhc2UzMS1tYWludAorODY1MjMgOTMyYTNmZmE0ZTU2MTFlZTk3MDZhMmIxNmIxZjdhNDFlMmE2ZWE2YyBweTNrCis4NjUyNCBhMDE5YmI0ZmZiNTBlNTU3NTY5ZDlhMmE2ZWU4YjFjZTVhNDQxYzllIHJlbGVhc2UzMS1tYWludAorODY1MjUgMWRhYTQwYjQxMjExNzI2OGU0ZDIwNDI1ZTBiYTdlYmY5MDZlMTY5ZCBweTNrCis4NjUyNiBhZTMxNWE3ZjYyZDI3ODExZjNkMzc5MTFhM2MxNzAxMDlkY2M1OTE3IHB5M2sKKzg2NTI3IDY3YWI3NDAyZTBkZWNkZWIzYWY0MzMyZTZlMTYyN2E3NmRmNTYxMzUgcmVsZWFzZTMxLW1haW50Cis4NjUyOCAyN2M1NDUzYTE0N2Y1MTFjYzI4ZTM4OTA3NDJkNWE0MzFiM2I5NjA2IHB5M2sKKzg2NTI5IGI4NDIwZTc2NzYzOGU1NjI2ZTQ5NTM5NjY4ZWZlMDI1OTBkN2Q2MzUgcmVsZWFzZTMxLW1haW50Cis4NjUzMCAwY2NhNzNiMGE1YmYwMDg3NzdlZjk0NTk2MTIwM2ZmMDRlZGFiMTNjIHB5M2sKKzg2NTMzIGExZGE4MjQzYjYzZTZhYzI3ZDAyNjc3ZDA0ZDllNTgxNWI1MmFlY2EgcHkzaworODY1MzQgNDIwMzAxNDAwNDAzZjBlMjM5YTdhNzcyOWM2NDdlYTk3ZjY5NzU4NCByZWxlYXNlMzEtbWFpbnQKKzg2NTM1IGU5ODNlYjIyMjlkZmRhMGU3Y2NjMTQwN2NiNWRmNWUwNjYzOGVhZmQgcHkzaworODY1MzYgNGIzYTU1MDIwMDJkMjE4OTAwZmU5NzE0MWU2NjkxZmNjZjlkNWU0MiByZWxlYXNlMjctbWFpbnQKKzg2NTM3IGQ5Yzg5MDcyMDQ0ZTQ4ZDc1YmQ0ODkxYTk2NDE1MTViODVhYjdmZTAgcHkzaworODY1MzggZTM3MzQ0YThmMGM5MWMzOTQxMjcyN2JhZmQ1Njg5NzQ3YjQ4YzMxMCBweTNrCis4NjUzOSAzNTA4OThlMDk1YWE2ZmJjZjA1ZWY5YmI4ZGM2NDM0NjE4ODBjZDQ1IHJlbGVhc2UzMS1tYWludAorODY1NDAgYjliZTQ1ZjQzM2I5MmRiODUzMDBlMDM5MzIwZDA0OTM5MmUyYzMwOCBweTNrCis4NjU0MSA1MWY3MmM1ZmUyOGU0YmYxYWM4NmM4MDljZDQxOTY4YjI3NGY3OGZiIHJlbGVhc2UzMS1tYWludAorODY1NDIgZDRmNWUyN2VkMTg2YjZkYjM2YWRlYzdiYmJkZDBjODhmMjExYjMxYSBweTNrCis4NjU0MyA0NTcyZDI4ZGJhYzczM2EzZDcxMWZhNDdkYmFjMzlmODFhYTQ5NzZiIHJlbGVhc2UzMS1tYWludAorODY1NDQgY2RkY2JlM2JmNTdhMmU4Mzc5N2NjZDU0MjE2Nzg0MTY2MjJlMThhNiBweTNrCis4NjU0NSBjNjRlZDZkYTQ4YjlhYjM4YjU5MjYzODNkMDBmMDVhY2IyMDQ3YTM5IHB5M2sKKzg2NTQ2IGQyMmFhNWFlNzc2MjVmNzY5ZTc5ZDk2NjA1OTY0YTAzNjI0NDU3NGMgcmVsZWFzZTMxLW1haW50Cis4NjU0NyA1ZWQzN2MyYzA1NzQxZGVlOWFiMTBmNjk4YmE1NjI0NDJhY2RiYmVlIHB5M2sKKzg2NTQ4IGU5YWMzZjMxMTE5OTU3ODFmYjk1NjFhYjViMWJjZjBjZDg5NmExZDAgcHkzaworODY1NDkgODRhMzA1ZTJlNTQ4ODkzMTc0YzZhNTMwYjAzOTEwMzhlYzRmNDM4MCBweTNrCis4NjU1MCA0YjRjNzIxMzJhYjZlYjJiMzVjZGJhOWFlZTllN2MzYWFkMDEyNjZkIHB5M2sKKzg2NTUxIGU1MzBmYzc2ODJiZjI5NjRiYTY5NTA0MzFiODc0NGZmYmRhZWIxMjQgcHkzaworODY1NTIgNDA5NzBlODllNjBhYmEzOWY0NzUyNTQzNTMzZTYwNzE5M2M4MGRjMCBweTNrCis4NjU1MyA4MjVlNDgwYzkzMGRhMTAzMWVjNzkxN2QwOWM0NGYwMTIzOWFiMmI2IHB5M2sKKzg2NTU0IGYwNzk2NDM5MTViNTNlOWNmMDE4ZjYzODNhZjkzODg3YjhmN2M5MmYgcmVsZWFzZTI3LW1haW50Cis4NjU1NSAyNDVmNmNhM2IyMzMwZmViNGEyNzgxYmRjNDI3NjBiMmE5MThkYzU0IHB5M2sKKzg2NTU2IDUzZGQ3MDBhMzViNmYyZmU2NzcwMDc5ODQxMTFlZGVjMjFlYWQ2ZTcgcmVsZWFzZTI3LW1haW50Cis4NjU1NyBkZGIzYmM4ZTY5OTBkZjRmMWE2MTU2NGQxZmFiYmYzMzE3MjM0ZmUzIHJlbGVhc2UzMS1tYWludAorODY1NTggMTliNzExYTc3ZWZmMWI0MzdkNjY0NjRiMDBmZWM5MDk0ODFhYmMyYiByZWxlYXNlMjctbWFpbnQKKzg2NTU5IDJkZDUzOTI1ZjAwNzFkZDY1ZThlMTMzMDdjNDgyMDFkNzJkMjUxZWMgcmVsZWFzZTI3LW1haW50Cis4NjU2MCA1ZDU1YzViYjhhYjFjNDA1NGQ3NjQwNjIxYWYxZWU0MmVlNDI1ZjhlIHJlbGVhc2UzMS1tYWludAorODY1NjEgYjQ2YmNlODdkMmFmMDFlNDU4OTgyNGQ5ZmY5MmQzMzkxNzgyY2E3ZCBweTNrCis4NjU2MiBkZWJjNzY2NDE5MTIyYWY2MDhhNzZhNTcwODg1MGE5OTQxYmZmNjhmIHB5M2sKKzg2NTY0IDQwYjBjNjliYjJiZDc1MDZmNThkZThjOWU5MDBjMzA5MTcyY2EwMjEgcHkzaworODY1NjUgYzIwYWRlNjNmM2RiY2ExYjhhMjc4MjRmYmVjNjA2MTE3YzdjYjY1OCBweTNrCis4NjU2NiA0ZWQ2MTAxZjhhYjI1NTU0M2NiNzVjZmNjMDM1ZDljZjc2Njk0YjQ5IHB5M2sKKzg2NTY3IDdmMzJjNWY1NmQxYTExOGQ3ZTAzNzAyOTNmNWRhMmY1YWM0MDg5NzIgcHkzaworODY1NjggYTE5MzZmYTYzNTgwZDYyYzkzMWY1MjMwNDk4NTI4OTg5OWYxODVlNyByZWxlYXNlMzEtbWFpbnQKKzg2NTY5IDU5ZTU2YjgyZTZjYjJjZmI1OTUzMjk3ZTViMTI1YTFkZDM4NzkyM2UgcmVsZWFzZTI3LW1haW50Cis4NjU3MCA0ZTJkYTUyN2Y1YjFkYjFhZmUxODQ4MWNhNmY1YWEzNmNlZjRhNTBmIHB5M2sKKzg2NTcxIGFlZjhmMTg1MGQyNGQ3MGRiZTIyMTk3YmUwNzUzZDkzMTkxNjg2ZmYgcHkzaworODY1NzIgNzhhMzgwZDU3ZmVhMTk0YWMzMjRkZjk4NWJhYTlhNzAxZmE1OGE0MyBweTNrCis4NjU3MyA1MWUxY2JkZDhmZDI4NTZkZmVhM2I2NDgwZTRjYzdiNThhM2MzZWJkIHB5M2sKKzg2NTc0IDJhZTRlZWQ0YTNiMzc4N2U4NDlhZmM4ZmNkNmM2ZjA0NTc4NTdhNzEgcHkzaworODY1NzUgODM4ZjY5NDhkZWI4YjZmODA1NjhmZDg5ZTcxMDBmMmUxMzZiYWIyMCBweTNrCis4NjU3NiAzZDJmNTVjY2Q2NjBlYzYxNTM1YWI2NGNkZDNmYTZiMTc4ZDk3Y2JhIHB5M2sKKzg2NTc3IDgwYjQ4YTNhMjQ3MzRjNTM4OGYxODgxYmE3NThlMTI1MWNiOTcyZTIgcHkzaworODY1NzggZDU3MTgxYWNhZjhjNDNkNjQzYTM4ZWZkYjE0NzlhNzI3Y2MzMjczOCBweTNrCis4NjU3OSAxZWY0NjUxZmVlZjg5YjgwMmFjZDczZTUzYzM5MGIxMmJkNWExMzg2IHB5M2sKKzg2NTgwIDQxZDU4YmVjM2UwOGI0NWEzODAyNDQ1MzNlZDk5ZTg1NmE3NzljODQgcHkzaworODY1ODEgNGU1MTJhOTQ5YjYwYzA0ODAxNTc0N2M1ODQyOTZmOTg0ZWFhZTk2MCByZWxlYXNlMzEtbWFpbnQKKzg2NTgyIGE3YzIyMTA3YWVjZDA0NTcyYmYwNGMzODRjYzBlZjE2MDg2MDQ5ODEgcmVsZWFzZTI3LW1haW50Cis4NjU4MyA2NmQ0MGI2YTJiYjFhZDgwZGJmOGQ0NTJjNjY1MmU1OWM5ODRlZTU2IHB5M2sKKzg2NTg0IDNhMGU3MDAwZGM4ZjlkNzA4YWE1ZWFiNTE2MWQ2NDdiNzExYmZjM2UgcHkzaworODY1ODUgZWE4MzU1Y2RkZDlmODE5N2JmODU3ODcyMzA0YzViNzIyMDU5MzFiNCBweTNrCis4NjU4NiBiYzlkYzdlN2YzNzNkYWM2ZDU1MTZjYjgyNGRiNDliNjMwODhlNTE5IHJlbGVhc2UyNy1tYWludAorODY1ODcgM2M5YjFjMDViYTllYzU3YmQ0YzFhOWMzOTdiYzg5MmM5ZjA0YjY4MSBweTNrCis4NjU4OCA3Y2RiZGJmMzQ4MGI4ZjAyYjlkMDk3ZjhhMGRlNWEyNTZkMDgyYmQ4IHJlbGVhc2UzMS1tYWludAorODY1ODkgYzQwNGMyYTM0NmE1ODQ0YjVhOTU4ZGIwMmUzNjcwMGM0MDcwZjczZiByZWxlYXNlMjctbWFpbnQKKzg2NTkwIDYzMWQ4NDRiYmM0NTkzMmQ1ODhmNTRiNjdiOTRiZmRlNmQ1MzczOGIgcmVsZWFzZTI3LW1haW50Cis4NjU5MSA5NjVmODU5ZTYwYWZmOTE3NjhlZjZkNjMxN2NmOWNiNzNiYzcwODM2IHJlbGVhc2UyNy1tYWludAorODY1OTIgNTA3NTE4MjJmNjIyMzA2NjVhYTFmYzQ5YjI3YzM1ZmFiMDY4MjIwYSBweTNrCis4NjU5MyBjMDZlZDI1ZTY5YjgzMzI3ZDViNWM5ZGFiNThjNGNjMTJjNzYzYzRhIHB5M2sKKzg2NTk0IDRmMjlhYThmOWY1NGIxYTI1ZDY5YjQwZmVlOTFmMjhiOWM1MzA0ZjQgcHkzaworODY1OTUgNDNlNTBiYjkyM2E5NmVlYWE1OGUxOWM5OTBmOTQ2NTQxZTlmZjUyNiBweTNrCis4NjU5NiA5ZmU3NmMyNmVhOWZlN2JmM2JlYjM0ZmRkMTI5OWNiMTgwZWM2ZWE4IHB5M2sKKzg2NTk3IGRlZGY3MTliMjZhMzc0ZDI5MjRhMmIwMGE2ZDM3YjI0ZGE5ZWM2MjkgcGVwLTAzODQKKzg2NTk4IDEyOTNmODE5Y2UzNjYyMmU0YWMzNzY1ODMzNGQ1YjIwNWMzNDk4OTQgcHkzaworODY1OTkgNTNiZTFhNjdlOTY0YWVjYzM5Mzk0YWI0YTBmZjMyODgxNWNlYmU4OCBwZXAtMDM4NAorODY2MDAgMTNhMmE1ZGUxYjdmNmViYzU1MzA2YzU2YzkxNTk0MDkxOTg5YmVjYiBwZXAtMDM4NAorODY2MDEgODZlM2Y2MzI0ZTY1MDIzNTBlMWUxYmNjNjQ0Mzk0YTRmZDBhMGZmMiBweTNrCis4NjYwMiA0NGIzMTIxOWFlY2QzMzJlYmQyY2ViMmM5YmUyMjY0ODBkZTdjOTUzIHJlbGVhc2UyNy1tYWludAorODY2MDMgNjcxZTZiZDE4MTE0M2QyODQ2ZGFjMTI4MDVhMDAxYmRjM2RjY2FiYyBweTNrCis4NjYwNCBiNmQ3YzViNmYxZjIwMTNiMDE0MWY1YzViMmVkYmYxN2MxYTNkYmM3IHJlbGVhc2UzMS1tYWludAorODY2MDUgZjVkYjUzNzgzOTIyZDI3Njc3NzgzOTg4ZjJiOWFjN2I0ZWY3MDAzOSBweTNrCis4NjYwNiBlZWQ0MmQyODM1NjIyZGY4YWE0OTQ1MGI1NjdmNDliNmUwOWJkYTNjIHJlbGVhc2UzMS1tYWludAorODY2MDcgNmVhYmY4YzFhNzVjN2U1MjMyY2RhZGZiMmI1ZjE4ODI0MThmMDU4YiBweTNrCis4NjYwOCA5ZmVjNmFiY2E3ZDc2NzYyMjYyZWZkNjRhNjg4NGJlYWMwZjQ1ZTViIHB5M2sKKzg2NjA5IDRhZTJkMDExYTgwYmE1Y2ViNGE0NTNkYWRkNjJkZWM2OWNjMTgyYjYgcmVsZWFzZTI3LW1haW50Cis4NjYxMCA1OTMwN2FhN2QyZmU2N2EwODFhZTRlZjcxMzM3MTdjNGQ4M2EyYTJkIHB5M2sKKzg2NjExIDQzMzU2OTNkZjI1OTc5ZDliZjg3NTIwYmEwNzdlMWI5YjU2MmJjZDQgcHkzaworODY2MTIgMWNkYzljMWM0MzBlODVjNWI2NTNhZDEyNjNkNDFmODE3ZjQxMGYzZiByZWxlYXNlMzEtbWFpbnQKKzg2NjEzIDdhZWMyMzg2ODI4NzdiMzliMmM0NjI4NDMyM2Q3NDhkYWE3N2MzNjggcmVsZWFzZTI3LW1haW50Cis4NjYxNCAxMGExYzM5OTg2NGU0NjNiZDA3NDE3YjIzZTAzYWU4NWZlYTZkYzYwIHB5M2sKKzg2NjE1IGNmZDUzODMxMWI2ZmE2MGZiYzkzNTgzNmE0ZWE0MDdkOWU1MTk4NmMgcmVsZWFzZTMxLW1haW50Cis4NjYxNiA0OGZkYzJkOGY4OTZlYzc0ZDUwNzkyNjI5ODc2Zjk3ODlmZjY2MDQ0IHJlbGVhc2UyNy1tYWludAorODY2MTcgN2FmMTllOTlkMmY4NWViOTdjZTBkZDNjNzQ3MjcwMjQ1OTA1NTZjOSBweTNrCis4NjYxOCAyMzhjYWFmNjg1MmI3MzNlZjA1MGQxNjY5YWY5ODc3YTcyZDEzMWRjIHB5M2sKKzg2NjE5IGFkZDdlOTcyMWY4MDk0NzEzNjFlYjRhYjRhM2M1Nzk4MDE4YTUxZGUgcHkzaworODY2MjAgZTAxMjM3ODMxYWQyZmFkNjljNWZkYmQxMjRiOTA3MWYyMGQ4ZDUwMSBweTNrCis4NjYyMSAzOThiMjE4MjFkMWI0YTAwYTQ0N2YyYzMyNmIyY2VhMmIwNDQ1YzI1IHB5M2sKKzg2NjIyIDI1NzUxMmI5N2Y4MjNkM2U3MDBhZmFiYjg3OWJmMDBmOTBkZDU3NjIgcHkzaworODY2MjMgMWI0NDhmZDdlMWEyNDhjNDkzMjE1N2FmMTQyYThmMjdmMWE2ZDU5MCBweTNrCis4NjYyNCBhY2Q5NjI4MjQ4MTkxNDg5ZTA2MzFiOGFiMzlkYTU3NzU2YWJmYzViIHB5M2sKKzg2NjI1IDQ1OWE2OTAyNWQ5YzE2YmRiOWE4NDI2MDMyMjI4OWI2Mjg5ODc1NDEgcHkzaworODY2MjYgNjIxODJhYmMxMTZhYmFjNTVlOGZmZDc2YjNjNGQxNmEyY2EwYjcyMyBweTNrCis4NjYyNyAwN2NhZGMyYzY0MzgyOTlmZTNjNGUyZGFhMWJlNmI4Njk1ZDljZjNiIHJlbGVhc2UzMS1tYWludAorODY2MjggODM3YWQ1ODU0ZmM5M2I0MGM1MTQyOTJkMGZiYmY2OTIzYzAzZTUxOCByZWxlYXNlMjctbWFpbnQKKzg2NjI5IDJiZWIyNTM2OTI4OTc1MjY3NDM0MmMwZWE4NzVkNzk5YzBmY2U1MjEgcmVsZWFzZTMxLW1haW50Cis4NjYzMCA1YzA2ZDNkMWI5YzkwZDUwMzhmN2ViMmVkM2E4Y2JiYzhjOTE5NmYwIHB5M2sKKzg2NjMxIDU0NGI0NTNlNjBhNThlZWMwZTZhNDI4MzRkNzA2Y2EwM2JlMWM4NjIgcHkzaworODY2MzIgMjA2ODI1NWI0ZGEwMGExOGZjNmNiYjZhZmM4Y2JiMWU5MDVlNTg0NiBweTNrCis4NjYzMyBmZGZjNmRjYTgwNDgzYjNkMTNmY2U1Y2NiNmRjMTkyNDBlNDczZDUyIHB5M2sKKzg2NjM0IGQyOWE2N2MyNjYwMGM3NjgzNGI5MGM2MTc4ZjZmNWIyYzgyNTNiMDkgcHkzaworODY2MzUgOWEwYzI0MDFjNmE2ZTFmMDFiY2U3OTUyMTMwZmQ1NTMxOTY2MTM4ZSBweTNrCis4NjYzNiBmNTQ3NjhhNWUyZjU1ZGM2ZTFlNzc5MjAyMDU0NzRiYTAwNDMwNzQ4IHB5M2sKKzg2NjM3IDYxNGM4NDY3MGM2M2QzNWEwZjI3YTg4OGQ4Njk4NTM5MDQ5M2ZlN2QgcmVsZWFzZTI3LW1haW50Cis4NjYzOCBjMTNmODk4MGNhN2ZkZmIzOGM0NWI0MDZmOGE5MzM5NWE4Nzk0ZGIzIHB5M2sKKzg2NjM5IGY4Y2ViNmFmZDdhOTFhYWM5YTc5Nzk5MTU5YjliNmRjZjQzOTUzMjIgcHkzaworODY2NDAgOTcxNzE1M2Q1NThkMDQ5ZTRjMzUyMTU1ZTk5ZTg3MWRjNzE4YzZmYiBweTNrCis4NjY0MSA2MWQxZWMzMDdiYjBkYjQ5MWViNmNiYjFiMjBlMmFiN2U4MTY5Yzc2IHB5M2sKKzg2NjQyIDMyMmFhM2U4Mjc2OGJlM2JjN2MyODZhODdiNWUxOGJmNWI3Mzc0MjAgcHkzaworODY2NDMgMTc5ZGM0YzM0NzBmM2NmNzZkZmI5Yzk4YzI3OTExMDdiY2E1NDc0MyByZWxlYXNlMzEtbWFpbnQKKzg2NjQ0IDk0M2E4NjQ5OTAwZGZmOTg1NTFlYzIyNTU1NGZmNmVhODlhM2EyODUgcmVsZWFzZTI3LW1haW50Cis4NjY0NSBlZWQzMjg4ZGVkODk1ZmIyZDg5ZTRhYzRlOTk1YjUyMGRlYjdkZTg5IHB5M2sKKzg2NjQ2IGE3ODQ0NTdlMDAwZTVjM2M5ODU3OTY1MjM0NDgyYjZjOGFlZmUyNzggcHkzaworODY2NDcgMWVmOGU5YTc1ZmVmM2M3MjIzMDVmNjQ4YjdiNDg0ZWU2NDQ4MTBiMSBweTNrCis4NjY0OCAyMmJjZGFjMTgxYmNhOTExYmU4MDFhYzZhNDVkMTRmNDQ0ZGU2ZDQwIHB5M2sKKzg2NjQ5IDFlYzA1ODBkOWQ5ZDdiNjc4OWYyOWRiODgxMjhjZDVkZjcxZTM3ZTAgcHkzaworODY2NTAgNWJhOGJmY2U3ZWMxZDZkYzA2MTM1YjQ5NzFmZmIwMGQyMmM1ZDBjMiBweTNrCis4NjY1MSA4YmExNmFhYmQ1NjQ2YjcyODY1ODhlMTlhZGFhMGRlNGQwNmJkYTE1IHB5M2sKKzg2NjUyIDQ4NWRjZmZjODhiNDVlMTY4NWVjMWNmYzY4N2NlNjRjZDAzNWIzNzUgcmVsZWFzZTMxLW1haW50Cis4NjY1MyBmNDdmY2Q1YjUwMWRlYzFhODJkYjNmOGU0NDQ1NDk0YTZiN2RmNTRkIHJlbGVhc2UyNy1tYWludAorODY2NTQgN2IxNGYxZmY2MDJiYjUwOGRkNTU0OWE5NzQxNGU3MWIzMjk5YTk3NiBweTNrCis4NjY1NSBhZGQ4YTAzZGRlZTZlMzVkNDc2YzVlNjY5NjgyYmM0NGY4MzViYmU0IHB5M2sKKzg2NjU2IDA3YTQ4NzBmNjBhMDdmMGY1M2NkNWUwZjE3ZjQ4NTFiMzI1NzI2OTYgcmVsZWFzZTMxLW1haW50Cis4NjY1NyBhMDgxNjI1ZGQ2YzYyN2ViMzU0N2ZmNjUwNTBkNzRlMmRmMDhiYTBhIHJlbGVhc2UyNy1tYWludAorODY2NTggZmZjMzcyYzhjZmEwYzc2M2UzYzQ1ZjMzMmI0ZDFmODA4ODEzMmFiMiByZWxlYXNlMzEtbWFpbnQKKzg2NjU5IDVkMTEyYzc4N2Q2ZTk0ZjBkMTdmYjQ4N2QyMzJjZDlkMTZkYmIyYjIgcmVsZWFzZTI3LW1haW50Cis4NjY2MCBmMDJmM2IzM2RkOGY5MWY0MmIxYzcwMzAzMDJhODI1NThiMGQ0NWQ0IHB5M2sKKzg2NjYxIDVhYmZjMWNjMjJkMTFmM2M4Y2ExYjZhMDhiY2M3MjdhYmQ3ZTUyZmIgcHkzaworODY2NjIgNjZlMGY1YzY1MTU4Njg5ZTNjYTYxZGVlZWU1MGY2OTRlMjBmMzQ0OCBweTNrCis4NjY2MyBjNWNhMWE5YjFmZGY1ZjJjNGY3YWRmYThjOGUxZWY4M2Q0ZTg1OWU3IHJlbGVhc2UzMS1tYWludAorODY2NjQgMGIyNzE2ZjhhZmI1OTA0ZDQyODI5YjQ5OWIxN2I3ZjU1YmUwYTI2NyByZWxlYXNlMjctbWFpbnQKKzg2NjY1IDBlZmQ0MjU4OWYxNzFlMzgxOGE4ODFlOTA2YTZjODdhYTJiMmM5YzAgcHkzaworODY2NjYgZGM2YTI3YmY4NTkyOGNhNzVlM2JhYWJiNDBmYjE1NDM2YmM4ZTdjYiByZWxlYXNlMzEtbWFpbnQKKzg2NjY3IDlhMTkwNjhiYThiMTBlMTEzYzQ0ZTE0ODllNmNkNjQ4MjEwNDcwY2YgcmVsZWFzZTI3LW1haW50Cis4NjY2OCAxMDJkYjBjZmZlNTFmNmNjNGM5ZWYwN2RkZjNkNDhmZjBmMmZhNTYxIHB5M2sKKzg2NjY5IDNlOTVmMDg5MjM3YTllMjc5OTdkMjFmZGMwYzJkMTkzOTI5NzAwMmIgcHkzaworODY2NzAgMDgxM2MyYWNmNzQxNTUxOTRkYzBkMDA5ZGE2OGJmY2I4Yjc0MzMzYSBweTNrCis4NjY3MSBhZGE2N2RlNjQ5MTk5NzFjYWI5YmMyMjYyYzA3M2RmNTIwMGFjOTdkIHB5M2sKKzg2NjcyIDUzODJjYTk1YzNmNmMzMTZkOGZkYmY5NmM5MDIzMDU5NDdkZWMyZWQgcmVsZWFzZTMxLW1haW50Cis4NjY3MyBkNmI2Zjk5ZjVhZjllMDE1MWEyMjg0MzFmZDFlYjRjZWJhNDQyZjhiIHJlbGVhc2UyNy1tYWludAorODY2NzQgYWE2NGQ0ZjFhNzk1NjE1MzVjYWY1YjE2NzI3Mzg1NDEzNGM2OGNhNyByZWxlYXNlMzEtbWFpbnQKKzg2Njc1IDJmZjc1ODMxNWZhMTBjNWI4ODZkYzZlYWYyNDhlZTY2ZTNmNTNhYzIgcmVsZWFzZTI3LW1haW50Cis4NjY3NiA3YjcwNTEyODI3Y2YzOTRkMjllOGI1YWMxYWQ2NDljNzQ5MDY1NDQxIHB5M2sKKzg2Njc3IDBhOWZkNWM5NGRjMzU5NTg5ZDRjYTEyMmE4YjRmYzgxMjY4NmQ1ZWUgcmVsZWFzZTMxLW1haW50Cis4NjY3OCA0YzJiMmJlNzE0NTdmNzUwYmJjNmM3Njc5NzM0YTEwYmIwMTEzMmQ0IHJlbGVhc2UyNy1tYWludAorODY2NzkgYzZiN2RmMWJkZjUwZTQ4YjYwZGQ3ZmQyNDQ2N2U3NGVjN2E0NjM4ZiBweTNrCis4NjY4MCA3ZWU1OTBhZWIyYjM0MjEyNGVlYjM2ZGIwNDIxZTEyNDlhMjU2ZmYwIHJlbGVhc2UzMS1tYWludAorODY2ODEgZDk3NzQxMjFhNmRmZGE3ZjVlOTBiOTQ1ZjdmNzM0MGJlYzZmODNkZiBweTNrCis4NjY4MiA2ZjI1Y2FjMjgzNmVhZDc5NjM5ZWI4NGU1YWMxMzliZDEwNDRkZWEyIHJlbGVhc2UzMS1tYWludAorODY2ODMgNGYzNTg2NmZkOGNiMTJlYTg1ZWZlYzYwNmRkYmU2M2Y2Njk2NGM4MSByZWxlYXNlMjctbWFpbnQKKzg2Njg0IGYxNTBiNjc4NTQ4ZWRmMDljOTgyZGFlMTFkNzg4MmNjN2QwODNiOTggcHkzaworODY2ODUgMzM2MjU4OWMwYzAyYWJlMjA3NWJkZmJiOTVhYjRiNWU1MjlhZDFmYyByZWxlYXNlMzEtbWFpbnQKKzg2Njg2IGUwZWNjZmE5YWQ2YmEwYTA0YmRjN2Q0YjI0YzllMjVhOGEwNzg3ZjcgcmVsZWFzZTI3LW1haW50Cis4NjY4NyA4MmFjNzUzYmY2MmE5YTBkOTAwNDc2YmU2MTI2ZDhhYmMzNWZlYjQzIHB5M2stY2RlY2ltYWwKKzg2Njg4IGU4ODQwMzMxZjc3OGU3N2RiZTBkZTU5OTZiMmQ5YTllNzFiMmM5NWYgcHkzay1jZGVjaW1hbAorODY2ODkgYWE0ZGVhZjM0NGQxOTkwMjZlN2MyZGNjMmMyYzVhNTM0YjQ2ZjBmZCBweTNrCis4NjY5MCBkY2FkNzA2YjM4ZmM0OGI4ZGVhYWRhZmYyYjk2ZmU1NjM1ZmRmN2IwIHB5M2sKKzg2NjkxIDBjNjY4MTQ2YjEyNmE2ZmQ0MmExNTAwMmJhZThkM2M5MzU4ZGQ2ZGMgcmVsZWFzZTMxLW1haW50Cis4NjY5MiA4ZGNiMTc3ODFlODMyNGZmMGFjMjU2MzFhMTBhYWRmZmRhMjIwOWJiIHJlbGVhc2UyNy1tYWludAorODY2OTMgMTI3ZjUxNjhhNzc0ZjljZGVmNTVmNDYwODFhNzUwNTVhOWU2M2YzOSBweTNrCis4NjY5NCA5OGUxZGRkNTA1YmMyOWFmYTRhOGZjNGU4MTgwYTJhNmE5ZDE5MDU1IHB5M2sKKzg2Njk1IDU4YWM1MTYwZDFiN2JiYmNlNzhkMTUxZGVjMGVkZmI1YTZiNmRkMzkgcmVsZWFzZTMxLW1haW50Cis4NjY5NiAzZjYyMzUwZWRkMmU5MzY0NjdlMzcwZDQ1MjE2MzY2YjQzYWExNjU0IHJlbGVhc2UyNy1tYWludAorODY2OTcgNDAxMDkzMDE4Mjg1NDRmMDQzYTE0NjgwMGZhN2Y3ZTUwYmNjNzg4ZiBweTNrCis4NjY5OCBjYzljNTFmOTUyNGY5ZGZlMWIzMjE2YTk0NGU2NjMwNWQ5YzU5ZWI5IHJlbGVhc2UzMS1tYWludAorODY2OTkgMmMzNzAwNjVjMWI0ZGU5MTUxZjAzODQ0ZTU5ODViYzAyMDQ2NmQwNyBweTNrCis4NjcwMCAyNjBmZjM3OTExNWM3YjdjNDVlOWUwZTZlM2I4MTM4MTMxNzQxMDQxIHB5M2sKKzg2NzAxIGRjYjYwYmYyNmRjZTk4YTYwZTE4N2NiNDg2ZTA2NmEwY2YwNzE5NGMgcHkzaworODY3MDIgNWE2OWE1ODljNmYwODY5N2VkZTVkZTNlMzMxOTVhMTQ4NTU3ODBlNyBweTNrCis4NjcwMyBhNzM5ODgzZWU2YzU2MDYxN2ZjNzQzYWE2NjVjZWE1ZTU1ZGVhOTQ2IHJlbGVhc2UzMS1tYWludAorODY3MDQgOTUyMjgyYTUwNDdmYzIxZmZhYjIyODUxYjA0NTcxN2FjZmVlNWFjYiByZWxlYXNlMjctbWFpbnQKKzg2NzA1IDMzMDNhYmUyOWQwYjM4ZDIyNjhhMTllNDlhZTU0ZDkzYzc0N2UyYmYgcHkzaworODY3MDYgYTRiN2E0MWRhYmQ5NGM4MzYxMTVhYjcwODM5MDVlMGQ3NmViZTkwYiByZWxlYXNlMjctbWFpbnQKKzg2NzA3IDYzZjExNGIwOWNhZmE5MjBmNDAwNGViYjM2MDI3ZmVmYTBiNjM0YWEgcmVsZWFzZTMxLW1haW50Cis4NjcwOCAwY2U1Nzk1MWFlYzYyYTkyMzExNDMyZTM3NTZjMjg5N2VkNGExYzdmIHB5M2sKKzg2NzEwIGM4NmYxNzEwNDY3ZTdhNWQ0YWM4ODYxYTljMjFkODc3ODljNmZjN2IgcHkzay11cmxsaWIKKzg2NzExIDZjYTI4OTBiYWI2NzhkZmI1YjAzY2EzMTg4Zjk2YWY3ZGE1ZThlN2UgcHkzay11cmxsaWIKKzg2NzEyIDBmOGM1MmVjOWY3ZjE1YzFlMTNkZGY3MTlmMTkwYmU5ZTAyYzViZjggcHkzay11cmxsaWIKKzg2NzEzIDlhZGYzOTdmNTZlN2I0M2M3ZGE5NzE3NmVhZGQwMTljZjdkNjczYmEgcHkzaworODY3MTQgOGI0YTUzMWFkMzUyYTQ0OGI4ZDdmOWE5M2EzYTk0MTFmY2ZlNWJmYiBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MTUgMWFlNTFkMTNjMjViOTIzNTYwNjg5M2QxODM3YmQzNmZhMmY1ZmQ2OCBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MTYgYmUwZjRkOGJmY2VhYWNhNTY0MjdhMWUyMTFhZGI0NjIyNTY2NTRkZiBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MTcgOWYyM2M1ZjQ4NTZjMDI0NGU4NzkzNjQ4MDY5M2Y1YjE2MjExMmMzMiBweTNrCis4NjcxOCBiYWI5YzIwN2UxY2Y4YWQxNmQyMzI0NGQwZGEyYzE0M2U3ZGViNDkxIHJlbGVhc2UzMS1tYWludAorODY3MTkgMTQwNGFiMDc2YjU4ZjQ0YzYyM2M2ZjFiYWJhZjk1YTIxYjJkN2U0ZiByZWxlYXNlMjctbWFpbnQKKzg2NzIwIDQzNmRhZjA5NWU4OTY4ZTVjZWFjNGY5MWFkY2FlYzU4YjlkYmI3ZTcgcHkzaworODY3MjEgMDgyODgxNGUwM2FkZGI4MjBhNzU0ZGJhNDI0NDEzYmM1YTI5MzU0OSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjIgNjFmOWQzYmYyMzRjZjBmOTBkZjkyYjM5ZTdmYmQ4NmNiYzRjYWY1ZSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjMgMDkyNGY0MGJiNmRjNTFjNWJjZjY2MjQ4ZmZlYjJhNGM0Nzc1YzdjYSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjQgNDI1OGUyOGNmNDQwNjBhZTQzZDliMzk4MGJlYmIwZmE2MjlkMGMyYyBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3MjUgNjUyYmFmMjNjMzY4NmU1MjBhZWQzZDBlN2I3N2M2ZTVhNGEyNDQzZiBweTNrCis4NjcyNiAyODg5ZWQ3MzQxZTA3ZTlmZjk0Y2ExNWM3OTM2MmExNDg2ODU5YTcxIHJlbGVhc2UyNy1tYWludAorODY3MjcgMGExYmFhNjE5MTcxYWYzMjQ4NjllY2JjYjZjNzE0NDAyOTg3NTllYyBweTNrCis4NjcyOCBmM2E2MWRhZmJmNmJhZDg4ZjE1ZjgxZDdmNTMwM2E1NWQ0NzQxOGMzIHJlbGVhc2UyNy1tYWludAorODY3MjkgNGZlZDAwNjU5ODMxNDFiYTAyYWMwNjQ2MjRiY2I2N2QxYmIzYzQ5ZiBweTNrCis4NjczMCA4M2IwNTE3ZDBmYzVlMDJmMWU5ZWJiNTYwNjIxNzhkNDhjNzBmZDdmIHB5M2sKKzg2NzMxIGE3NjNlZDNkNmU4Y2FhODdhYzE3YWI4MjAwZTkzN2RlNWNlOTIzZjEgcHkzaworODY3MzIgODJkYTJhYmNlNzIyMGMzNDYzMGM1ZjljOTBmMzMyNzExYTQ0NDRmZiBweTNrCis4NjczMyA5Y2QxMDM2NDU1ZTdkNjI4NWI0YzFmYjM0M2QzMjFiMWU2YzQ3NzM5IHB5M2sKKzg2NzM0IDM5NWFjNmUzMTlhODk1OWIzMjExN2YxNWEwY2NhMzc2ZWIwODgzOWEgcHkzaworODY3MzUgMjZmODBmNzI0YjRmZjE2OTAwNjU3MWE1ZjNmNDBhMGVlZWIzNjdhYyByZWxlYXNlMzEtbWFpbnQKKzg2NzM2IDI1MzJjNGJjMDM3M2ExNjhjY2Q4ZTY3NzljOGFmYmJlNzU3MjUxMjIgcmVsZWFzZTI3LW1haW50Cis4NjczNyBkNmU4YjdlMjUwYzY1YWMzN2U5MzlkZDg3N2M3NTAwYTRhNzBiNGYwIHB5M2sKKzg2NzM4IGI3MzgxMjY5MGM2ZTY1OGZiYzk5ZmQ3ZGNkMDRkM2Y3Zjg3ZDlkMWYgcmVsZWFzZTMxLW1haW50Cis4NjczOSAyODc3MjY1YmRiMDFjYTE1YWIxNWZmNmE3MGI1YjQ1OGU4NzNlMTZhIHJlbGVhc2UyNy1tYWludAorODY3NDAgOThjYTY1NTMyM2MwNWNiM2QxYWE3MzI2ZDhmMzc5YTZhMzUyNzg0YiBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3NDEgNGRkN2ViMmQ5ODU2Y2VmM2ZlNDE2MmU2NzQyYjNiOTliZDg5ZjQwMCBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3NDIgODU4ZTg2ZGI0NDJmNWFkODFhY2I0NDkzODgxOGE3M2I0NDM2NDVkNSBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY3NDMgY2VhZDA0YjNjNWVkMTNmMmY1YjNiZGM0ZmYxZmI4OTk3NzQyZDMwMCBweTNrCis4Njc0NCAwY2IyNjUyNjQxOWQ4OGI3YTQ2ZDUzNWVlMzdhNTcxNjc3OGVhMmZmIHB5M2sKKzg2NzQ1IGM1NGM0MTFkM2RhN2ExNGI2YjNlODllMDI1OTQxZjJkZDYyODY0MDQgcHkzaworODY3NDYgMDNkOTMzOTQ4YmYzZWFhOGM3OWM2NDlkZWJkNTZjYmI2Y2Y1OTUxNiBweTNrCis4Njc0NyA2Nzg4MjEwNWRkNjU1OGJjYjUwYzNmMjc3MjVhYzk3MTdjYjhlNmUzIHB5M2sKKzg2NzQ4IDRkMzk1MmEyMWUyNTc2MGEyOWEwYzY4Yzc1MzMyOGViNDYxNDVlOTQgcHkzay11cmxsaWIKKzg2NzQ5IGFlODJjNzcwNzY5Y2FkNTVmMWYyMDY5NThkYjg3YzUzZjVlN2ZkNDQgcHkzay11cmxsaWIKKzg2NzUwIDExNzhlMjU0NWRjYjVjNjgyYTIwNjVjNTJiM2FiNWM0OTgyZjllYzQgcHkzaworODY3NTEgZWRlZDY5MTQ5N2I3NDhjM2NlYjhlZGUwYzFiMTY3ZGM3MjhkYTU1ZiBweTNrCis4Njc1MiBmM2RmOTNlMjYyNjc1YWM1YjljZThkNzcxZjgwNmU4OTc3ZjVlYjY0IHJlbGVhc2UzMS1tYWludAorODY3NTMgMGRhNDJjZDAxNTc2NTVkZmNlYjBjZTIxMTA1ODc4YWJmZDFmOWNlNSByZWxlYXNlMzEtbWFpbnQKKzg2NzU2IDQ1N2M3ZTcwNGVjMjk5YzM5ZjYxNTI3ZGZiNjZlYTA1ZDJkMWVlOTIgcHkzay1jZGVjaW1hbAorODY3NTcgMmQ2Y2RjODE4NWNhZTU3NWNmZDIzZGZhYjNlZDEwZTgzNDk1OGEwYiBweTNrLXN0YXQtb24td2luZG93cy12MgorODY3NTggMTQwZDhhNjU3NzA1NDMzYTgzNDVlYzg0YzNjZmI1ZDI1NTNkMTdjYyBweTNrCis4Njc1OSAwNmQyMzAyNmY5MDQ1NjliN2VlMTU4ZjJlYmNhZmViNzgwNDE5OTg1IHB5M2sKKzg2NzYwIGY1OWRiZjI4ZTEyYzNmNmI5Y2M4YTlhNDQ2YjIwYzgyZGMzODU3NjUgcmVsZWFzZTI3LW1haW50Cis4Njc2MSBlNDhlZDJlZjZkNWZmYjM5MmQxYmQ3OGI5MDM2MjY4MmQ5N2NiZjVhIHJlbGVhc2UyNy1tYWludAorODY3NjIgN2FiNGZkYTc3MDMxMjc2NTUzMTI0YjhiMGQ5ZjI4MGI3ZGI5NDVhOSByZWxlYXNlMjctbWFpbnQKKzg2NzYzIDE5MjMyMDIwZTQ5MWQ3OGVmMWIwNmEzZDdhOTNlYzc5Njc1MTBlMTcgcmVsZWFzZTI3LW1haW50Cis4Njc2NCA4Y2U5YWU1YTE1NDI3YjA3ZGRmYzBhM2ExNGE2MDY0YWVmMjY1ZmNmIHJlbGVhc2UyNy1tYWludAorODY3NjUgNmMzNWFiYzdkMGQyMTkyZTMyMTM5ZDIxYmJmOTcyNWQ4Nzk5ZTE4ZSByZWxlYXNlMjctbWFpbnQKKzg2NzY2IDQ1YWI1NWZhM2RjMGRmOTU4MTY0YmMwMTQ0ODdiMDBhMzdmZjAwNDIgcmVsZWFzZTI3LW1haW50Cis4Njc2NyA3Nzc3MWIwODVlY2E3NWQ0Yjc3MDU4YTNjNDlkZmRlNjQxYzI2OTE5IHJlbGVhc2UyNy1tYWludAorODY3NjggYTgwM2ZkODQxZmQxN2MzYzQzNThmMjhkMGIxZjYyYmI1OGRjYzg2ZCByZWxlYXNlMjctbWFpbnQKKzg2NzY5IGQ2YzU3NTAxNTNiYjExODY0NGJlMTA2OTU5YWExNTUyN2NiYWYxMzkgcmVsZWFzZTI3LW1haW50Cis4Njc3MCAzN2IzN2I2YTg5NzJiZDZmMDU2OGQ5MWY5NTg4YmU2ZWEwN2YyNTZiIHJlbGVhc2UyNy1tYWludAorODY3NzEgMjk1NWYzMzc5NjllODE2NDRmMTA3Y2MyZTc4NjE5ZDIwZjYwNDU5OCByZWxlYXNlMjctbWFpbnQKKzg2NzcyIGUxMGY2MThjOTY3YWMyOTNjNmIyYTE2ZTU4NGExMDg2ZGJkNTk2NWUgcmVsZWFzZTI3LW1haW50Cis4Njc3MyA4MzVjMTc2MjM5ZDAyNTdiMmU2OTY2MDIxOTExNWRlY2NlNDBkMTc1IHJlbGVhc2UyNy1tYWludAorODY3NzQgZmIyYWE0NWExYjIyZTNiMWI1ZjMzNDM4NDZhMWZlMGM1MzEyOWFiMiByZWxlYXNlMjctbWFpbnQKKzg2Nzc1IDhiNmE5ZWNiZTk4OWMwYjRjMGI3YmRmOGJhNWY5ZGU1NzVmNTk0YmYgcmVsZWFzZTI3LW1haW50Cis4Njc3NiAyZTU4MTI2ZGJhZDA4NzAzYmUyZjMzYzM4YTg3YzQxZGU2YjU2Y2U3IHJlbGVhc2UyNy1tYWludAorODY3NzcgNDEzNjUxNWNkZmFjZGZjNzg0NDk4YTJiYjdjMTRkM2FiODI0N2JhMiByZWxlYXNlMjctbWFpbnQKKzg2Nzc4IDdjMGViOGQ1NjE0NmI5YWVhZjM5N2M0ZTdjMGQ0ZmI3ZjAxNjBhMTYgcmVsZWFzZTI3LW1haW50Cis4Njc3OSA3MWI3NzE1MTkzMzNhMDRiMTIzM2QxYmE1YWZkZjI2Njg0NzM5NWE1IHJlbGVhc2UyNy1tYWludAorODY3ODAgYTM3MmZjNDg2MjgxNjY3NDE2ODQ0MjgxMTUyMGRhMjlkYzdhMTc2MSByZWxlYXNlMzEtbWFpbnQKKzg2NzgxIDQ1ZTQ5MjY5ZTBkOGVmMWRkMjgyMjNmNjQ5YTJlYWU3YmE2OTEyM2IgcmVsZWFzZTMxLW1haW50Cis4Njc4MiBlNzU5M2ZlYjVhZDVjM2ZiMjJiNzQ4ODEwOWY3Yjc3YzNlMzA1MTFlIHJlbGVhc2UzMS1tYWludAorODY3ODMgYTlmMGVjNjA0YzhhZDA4ODBiZGExOTdkMWRiMTllOWE1OWJlYzAyMCByZWxlYXNlMzEtbWFpbnQKKzg2Nzg0IDA1ZWU2ZjhjMDI2MGFhNWJlMWU1YTFmNGY3Njg5MTQ0ZDVlOWZiZGMgcmVsZWFzZTMxLW1haW50Cis4Njc4NSAzOWI1YWY3NzNlNzU5NmFiNzc3MTlhZjEzZDA2NTY5NDdmNTlkZjI3IHJlbGVhc2UyNy1tYWludAorODY3ODYgOWJlYWQ5MDlkOGVmZWRlYzdmNDA2MzRkNjAzNjliZTU0ZmI2OGRiNyByZWxlYXNlMzEtbWFpbnQKKzg2Nzg3IDliMzQ0YmUxYmU5YTdlOWI5MDI1NGViNGFkMmJlYzgwNzU5YWJlZTYgcmVsZWFzZTMxLW1haW50Cis4Njc4OCAzZWU2ZDAzOGFmOWI0NmU4MDkzNGZlOTcwY2VlMGU2NzcxMjY3ZTJmIHJlbGVhc2UzMS1tYWludAorODY3ODkgNzI4MTkzN2IyZDY1YjNkNThiYzdjYmQ1ODliNDM3Mzk0NGM1ZWZmYiByZWxlYXNlMzEtbWFpbnQKKzg2NzkwIDlkNmUyNDY1ZjU5MjU0NjRmYjA5NGRlZTVlMThlYTJkNmVkMWQ4MjkgcmVsZWFzZTI3LW1haW50Cis4Njc5MSA0ZWExYzZhNGU5MmQwZmI5OTZiNDQ5ODJlMTY4MWVmN2RhNzEyYmQyIHB5M2sKKzg2NzkyIDJjMTY3MjgxNjJmZGRiZWI2YjJmY2IyZjlmYTIyODc3ZmYxZjI2YTEgcmVsZWFzZTI3LW1haW50Cis4Njc5MyAwMDAwYmJhYjA4YjQ0NzY4NDZjMDIxZTQ1OTc5MjFmZDA2NTJlM2Y0IHJlbGVhc2UzMS1tYWludAorODY3OTQgYjBlOTdkYmQ5OGI4NDM4ZTFjNmU4MTc2MmI0NDNjNDg5NWI0YWYwYiBweTNrCis4Njc5NSBmYTAxN2JjYWVlMTAwMDNiMjM4OGExZGYzMjQxN2ZlYWViODY2NWE5IHB5M2sKKzg2Nzk2IDUwODRjZTk0ODQzNzg1OWQ1MWEyNjc2MTUwNDY3MWE4Y2MwYmMzZTQgcmVsZWFzZTMxLW1haW50Cis4Njc5NyA0NmZlYWVjNzI5YmRjNjdiZmIyMDQ5MWZkYWNkNjYyOWY0YTcwZjlhIHB5M2sKKzg2Nzk4IGZiNWM0NWQzOGUyYWY1MTUwZGIyNThjMmY1NDMzODY5MDBkMzliOTIgcHkzaworODY3OTkgYWM1MjA3ZGQ4ZDlhMzM0NjYzZjc4NzQ4ODY5OGE1NGUzYTc3NTljZiBweTNrCis4NjgwMCBhY2ViNDUxNmE4ZDQ0YTJkNTBhZTVjNTZlNjQzYTBjYmFlMzE1ZDIxIHB5M2sKKzg2ODAxIGJmNWY0MTc0YjhjMmQ1ODg4YTA4YjRjYzZiNjM5Y2VkNWIxZTAyN2EgcHkzaworODY4MDMgMjMxYjBiYmMxZjkwNDY0YzVkZDMyMjg3OWVmOGFiMDJkYjdjN2JhYSBweTNrLXN0YXQtb24td2luZG93cworODY4MDQgMzI5ODQyZGYwNmExMGEzZjY5MTViM2MxMjBlZGZjYTAxNTE5OGY1NSBweTNrCis4NjgwNSAwZTFkZDQ1NDhhYTE3YzFiMDhiZjdlZDhlYTIyOGYxZWQ2NjYyODhkIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgwNiAxMzJhOTRlYzBjZTgwZDZlZTY1YTc3ZWU2NTA0YjNkYmFlZjA1ZGU1IHJlbGVhc2UyNy1tYWludAorODY4MDcgNDI3OWU0MTdiMmEwMjRiMGNiNGJlODAyZDExMjA5ZDJhZDllMjAzMiByZWxlYXNlMzEtbWFpbnQKKzg2ODA4IGZhZGY3NGMwYzUwNDNkOTc5OGViMzhhNjAyZGE2NzYwYWUyM2RlNWIgcHkzaworODY4MDkgNzg2ZWUxMWUwYzg0MWEwYjUzZTYxNDcxMDJkYmVkNTM5YWRiOTg0YSBweTNrLXN0YXQtb24td2luZG93cworODY4MTAgYzdhMzQyYTc5OGU3NzEzNzc5MDA0NmY5OGNlMTk5YzE5MmE3MmI0ZCByZWxlYXNlMzEtbWFpbnQKKzg2ODExIDc0OWIxZTcxMzkxY2FlMzYyMmU0MjgwNWYzNjdiMmY2ZGQxYmZlMDkgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODEyIGM4MTYzYzJhMWI2ZjRkZTE0MTY2MGUzZmIzOTFjOTkyYTcyNzNlOGQgcmVsZWFzZTI3LW1haW50Cis4NjgxMyBjODJjYTNiZWI0ZGYxNWU5NTMyZGMxMzc1ZjM5ZmRiYzZkYmE5ODI3IHJlbGVhc2UyNy1tYWludAorODY4MTQgOWZlZmYxNzdmNDRkMTI2OWFlMjNkNjM2OTBjYjYzMTFjMGVmOGI3NiByZWxlYXNlMjctbWFpbnQKKzg2ODE1IGFkNzlmOWIzYTAyMTk3MGFmMGVlZDRlMmM3ZjQxZmQzNzk3ZDM0NTkgcmVsZWFzZTMxLW1haW50Cis4NjgxNiBmMjIyMjVhOWQ3MjA4MmFmNjZhOTMzMzA4MmEwMTFlM2I0ZGYyZDdlIHJlbGVhc2UzMS1tYWludAorODY4MTcgZWE0ZWM2ZGU5Y2VmZTA5YTg2ZDhiMzI0YTJjOGQwZDg0NjI4MGY2ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MTggYWJiYzU4YTA2ZTQzZDQ4ZDllZjNmOGI1NGU2ZWY2NDlkNzUzNDQ0MyBweTNrLXN0YXQtb24td2luZG93cworODY4MTkgOTZjYTk5ZGZlZmQ4ZWU3MWI0MDNkYTk2ZGI5YmVkNmQ2ZWJlNjRlZCBweTNrCis4NjgyMCA4NmE2NTM5ZDJjMjUzNWRlZWM1MTk0N2U0OWQ2YmYzODIxODdkNDVkIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgyMSAwYjYzNDA3MzA5MTNjNGNjNTU3NTk2ZTZkODIxZWU2MmJkNGE1NWM0IHJlbGVhc2UzMS1tYWludAorODY4MjIgYjRiZmRjNTJhZDUxMDZiMTc0YTlkYzE2NzNlZmM4YzhlMzM0N2NjNyByZWxlYXNlMjctbWFpbnQKKzg2ODIzIGNjZjI2MzNiOTVkZDg5ZjVjMWVmMTU4OTY0MzUxNDliZGNiNjk0YzkgcHkzaworODY4MjQgNjMzNDFkZDM2MGFmNWY3MDM4NzAyYmY2ZDkxNGZjMDdkZDkwYTFhOCBweTNrCis4NjgyNSBmZWU5OGI2MDQxMzljN2Y1YmE4MTNhYTc3Mjg2ZmU0Y2ZiOWYyZGM1IHB5M2sKKzg2ODI4IDU5NjIzOWRhM2RiNzlkZWQwYzU4MmFkODg0ZmE2YTU1ZGU4NTgwZTggcHkzaworODY4MjkgZDNiYWQ0MWFkNzAxNzc3ODg4NDU0MWRlMjczNDI5ZGI0ZDhhZDkyMyBweTNrCis4NjgzMCA1OGMyYWM2MGNjYjlkYWI0ZDI1ZTdlMmU5MGRkZTI3NjliZGI0OTdmIHJlbGVhc2UzMS1tYWludAorODY4MzEgODJhZGUyMTNhNjZkZjkyZmI3NDM3OTIxMTdmNWYwZGJkMGJmNmZkNyByZWxlYXNlMjctbWFpbnQKKzg2ODMyIDUzOTVmOTY1ODhkNGYwMTk5ZDMyOWNiNzllYjEwOTY0OGRjNGVmNWUgcmVsZWFzZTI3LW1haW50Cis4NjgzMyA3ZTM4ZjhmYmJhZGRhYjhhMTZhNjY1YTQ5NGFmZWNmY2Q1MGRmM2U4IHJlbGVhc2UyNy1tYWludAorODY4MzQgYTRmNzU3NzNjMDA2MGNlZTM4YjBiYjY1MWE3YWJhNmY1NmIwZTk5NiByZWxlYXNlMzEtbWFpbnQKKzg2ODM1IGRjMjZlNGE3ZDJlNjBkMDUyM2U2MTAyMjFjNTU5NzE1ZTgyOThlNDYgcmVsZWFzZTMxLW1haW50Cis4NjgzNiA2M2FiMzlkMTE4NjBlMTU2MjgzMDQwMzJkYjM3YmI1YTlmY2UxYTJkIHJlbGVhc2UzMS1tYWludAorODY4MzcgODczN2ZiMTdmNDQ0MDFhMGEyZTk3ZDU0YzlhZTUwZDVmYzRjYzczNSBweTNrCis4NjgzOCBhMjdmYjFlNmUwOWQ0NGU0ZjExZDc3ZjQ5NzIxNjc0NGJkYWQyZWFhIHB5M2sKKzg2ODM5IDQxY2QwOTJiZTkzYWE0MDY0NGJjODg1Yzc5M2Y3NTQzYzQxZDljOWMgcHkzaworODY4NDAgZjk1MTI3NGFmM2M3ZjU3Y2YwODQzZDBkZjViOWQ3ODRjZmIxYWJjYiByZWxlYXNlMzEtbWFpbnQKKzg2ODQxIDcyZjBiZWEwNTQ1Nzc5MDA4NGJmODI3OGFiYTA2ZTlmMDJmNWY4YjQgcmVsZWFzZTI3LW1haW50Cis4Njg0MiAxYjc3ZjJlYjE2MDY3ODY2YThiOTI1ZTlmZGVlM2ZiODMzOTA1YjRkIHB5M2sKKzg2ODQzIDBmMGM2Yjg3OTc5NmJlZTc3ZWEzYjc1Y2YwMmRhZjIzYjIzMzg5ZmQgcHkzaworODY4NDQgZDBhMTZmOWYzNzQxZmQzYzkzNGNmZmQzOTQ5MDc2MWY3NTZjZGM4NiBweTNrCis4Njg0NSA1MzgxOGU0YzRmY2E1NjQ4ODQwN2Q5Y2NiMmY4YzhjMWJhNjVmNjYxIHB5M2sKKzg2ODQ2IDViZTNlZmI0N2JmZDU4MzY4Nzg2YjUyZTMxYzBhNDU4Mzc2ZTZiZWEgcmVsZWFzZTI3LW1haW50Cis4Njg0NyBlMGE1MjUyMDJjNzdjYzY3OTc1NWZmODFlZTM1MzUyZTFlYmJkYTY0IHJlbGVhc2UzMS1tYWludAorODY4NDggYzRhYWM4ZTY5ODg4NjViNDBlZjdhOGY3MTc4NmJhZDg4NzVkNTdmNyByZWxlYXNlMjctbWFpbnQKKzg2ODUwIDI3ZWU0MmIwZmFmNmNjYjA3ZTMwYjIxZDlkNmY2NGI3Y2U3ODBjNzAgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2ODUxIDcyZmY0MzUzMjIxNDgwYjYzZDY4MTg1M2IyYzgwMmJkMGVmOTRmODEgcGVwLTAzODQKKzg2ODUyIGQyNGFhM2IxZWUyODE2OTc0NDk4ZmUzMTMzNWE2ZDkwMDYyNzZlY2QgcGVwLTAzODQKKzg2ODU0IDAzZDBkMTg2NzEzYjRmZTQ5N2NjZTg0ZDBhODMxNzMxNDI1YzkzZTAgcHkzaworODY4NTUgYmRkNTc4NDFmNWUyZjQ2ZjhjMGQ2YTAyZDQyNzA4ZWM1NzQ0NDdiNCBweTNrCis4Njg1NiA5M2NkNGRlOGVlMGIwNGExMzAyZmFjYjgwZmZiZDQyNjI2ZDhiMDU2IHB5M2sKKzg2ODU3IDY5ZWM3NzUyNjE4MGZiZTkwZTBiMjQ2ZDJiODYzN2M3OGNkZmZkMGEgcHkzaworODY4NTkgMTZlM2M5NWJjNDZjNWE0ZWNiZTI5NzY2MzVjMWE3ZjhmZWI1NmFlYyByZWxlYXNlMzEtbWFpbnQKKzg2ODYwIDdhNWYyNjU0OGUxYzI4NTMwYzg3NGFjMTI4NjFiOTNmZjc1OGE0MTcgcmVsZWFzZTI3LW1haW50Cis4Njg2MSBlNWZjYjQyMjZiNDJhNjczNmY0M2RmMzE0NzBlZTc5NDRlZThhYjQwIHB5M2sKKzg2ODYyIDJlMGQ5MDA5YWI2YjllMWM3MWUxZjk2ZTcyZDlkM2YzMDJiMjlkZWEgcmVsZWFzZTMxLW1haW50Cis4Njg2MyA4ZmQxM2M1ZDM4ODIzOTc0NDFiOTcwNzZhNzM0ZjAxYWI5M2RmNmNkIHJlbGVhc2UyNy1tYWludAorODY4NjQgZTgxMmRiMzQ0YTY1ZDU1MmFjMDIwMGU1NGU3N2UxZjhmMjRmY2NhYyBweTNrCis4Njg2NSBlYWQ1MzA3MDNiOWJlNWNiODlmYTRjMjMxZmU3ZmU5M2NmMzU3YTY3IHJlbGVhc2UyNy1tYWludAorODY4NjYgNjY3ZDI4MzQ0MDE3MTlkYTJmYTQzOTVkOTdhMjhkZTM5NjRkYTlmNSByZWxlYXNlMzEtbWFpbnQKKzg2ODY3IGNkNmQwY2FmZmVmMjRiZTA2ZDJlYzg4MDZiNmMyMDkwOGYzMGRhYzUgcHkzaworODY4NjggYjBmZjMzM2VjM2RhMWJkNjMyNmExNTQ3YTE3MmEwODQ2Zjg0MzVmZSBweTNrCis4Njg2OSBlODlhYTkxNDc2MjRjYTYzOWI5YWNlM2IzYTU4MDAyMTdjNjE2ZTZkIHB5M2sKKzg2ODcwIGU3MzkyZmZlZTA3MWE3NmFjMGVjYjUxODA1MWMyNTIyMjIwODNmMTMgcHkzaworODY4NzEgNmNhODkyMmRhZmI1M2I1OWQ4ZTc5N2RlZmY3ZGZhY2Y0NWY5NDJiMyBwZXAtMzgyCis4Njg3MiAwY2NhOTY2MTUzOTUxYjk2M2JmMTlmNTFhMDgwOGIxYTM4ZGNlMmMwIHJlbGVhc2UzMS1tYWludAorODY4NzMgZGU2ZTc5YzViMWVkNDQzZmY4ZDU0YjJmZmJmODY3ZDg0Mjg0ZGNjNyByZWxlYXNlMjctbWFpbnQKKzg2ODc0IDY3OTlkNTRkYjM3ODEyYWJmMTBhMWQyZTIwODM5NWZhNzg1MDNmNGMgcHkzaworODY4NzUgZTMyYTMwMGFjYWMyZmM4NmM3ZDNjNDNlZTNkMTQ4NDcxMjgxYWNjOCBweTNrCis4Njg3NiA5ZTlhNzA5YjM4OWVjYWUzNmIxNDZmOTA3ODkxMWIxZWY2OTE3NmUyIHJlbGVhc2UzMS1tYWludAorODY4NzcgZWQ0YmZiNzVkMjhkODgwNjQ1YzgzNDU3OWFmNWI2ZmE4MGE3ZmYzYSByZWxlYXNlMjctbWFpbnQKKzg2ODc4IDMxMmIyOTE2Y2ZkNDVkOGJmMzExYmRiYTI2MjkzZmE4ODQ5NTg2MGMgcHkzaworODY4NzkgMzJlNjc1ZGFhMGU1MWJmZTJmNTRkMzcyY2NiZGUyYzRiN2MzZWFlNiBweTNrCis4Njg4MCBmMTZiZjRjYWU1ZDczN2ZhZjQzNmYwZTFlZmRjYjVmNDRkZDQ3MWJmIHB5M2sKKzg2ODgxIDI4YjY3YjU3MGYyYmY5YTU5YmU0MzUyZGIxNGNmYTIyNTVkZWQ0MzIgcHkzaworODY4ODIgYjQwNWE3ZjBhZWQ3MWI4ZGE1OTFiZmZlMGQ3ZTIwZGVmMDRiOWIzOSBweTNrCis4Njg4MyA4MzA0YmQ3NjViY2Y3N2Y4MzdmNTE2OWE4OGI1ZDc0NGI1ZTJkMDMyIHB5M2sKKzg2ODg0IDcyNDkyMGEwMTVmNzAxYTIxZGQ3ZTMyOWE0OGY1NGUxM2QxZGUxYTkgcHkzaworODY4ODUgZWRhOGRhM2E3NWIzYzYyNDcwMTQzNjlkZWQ1ODkwYWYyMDlmYzc5YiByZWxlYXNlMjctbWFpbnQKKzg2ODg2IGRlYjlmMmQzN2I2M2JkMTMxYWE5NDg4NjhhZGUzZmRlNDhjNGU0MDkgcmVsZWFzZTMxLW1haW50Cis4Njg4NyBmZDZlNTY1M2IzMTAyNTA2MmZiN2JhNjM5Y2MyMjk4NmYyZmIwMWY4IHB5M2sKKzg2ODg4IDE4Mzk5ZTYyMGI0MTEwY2Q0OTZjYzk3ZWEzZWE5YzhlY2FjMDUwMzIgcHkzaworODY4ODkgZTQ0NDEwZTU5MjhlZTMxMTRjNjU4ZGY2N2NkMTgwZTViNTAxMTVkOSBweTNrCis4Njg5MCBiODBmNWJmMjZlOTg3YjhkNTUwYTUzM2RjODg0Mjc1NDRhZjI5MTYxIHB5M2sKKzg2ODkxIGY3OTkyOGFkYWI1NzlmM2NmMWFiZjhmZGNiZWI3YWZlN2M0YmNlNGYgcHkzaworODY4OTIgN2VhMDJmMzFjMjUyY2JlYjQzZTdlYmFjZTQ5MjE2MTBhNWNiZTg0ZSBweTNrCis4Njg5MyAyZjZkMGYzNjFhYjkyYzk3Yzc5NzZlNDBhNjcxMDViMGE0MzE3NGQ2IHB5M2sKKzg2ODk0IDM0MDM2OWZiMmU3MGVmNDk5MTc2YzhhMzRhYWIzMzc2NjUxNDlkYTMgcmVsZWFzZTMxLW1haW50Cis4Njg5NSA3NDY3YTFjMTFhZWI0NjU0NDY1ODhhYjZjZjgyNjExMTFkNzE2ZjkzIHB5M2sKKzg2ODk2IDY1NmQyNGQxOTc0OWIwYjJmYWMzZDlhZDdjYTdlOGQyZGExNzdhNTMgcHkzaworODY4OTcgZDYxMDA3NDk3MGQ3OWUzZjU1N2IyN2QxYzZiNWM5ODdhYzMyYTAyZCByZWxlYXNlMjctbWFpbnQKKzg2ODk4IDA0ZThiZDlhMWFiYWUzNzk5ODlkNTMxYzgyYzg0MmQ0NTg1YzAwY2UgcmVsZWFzZTI3LW1haW50Cis4Njg5OSA3ZmQyYzdkYmRkYTY4MzhiZGY4Y2I1OGI5MGJkMDI2ZDZhM2EwYmE4IHJlbGVhc2UzMS1tYWludAorODY5MDAgMjk4NGI1N2Q2N2RhNDkzYjg5OWIzZDMyMDU1MWRkZmI0NGQyZjkxZiByZWxlYXNlMjctbWFpbnQKKzg2OTAxIDJiMmZjNDI2MjE3MDFmODk2OTU0MjMxMjk0OWE3NzA4YzhmZDlmY2IgcHkzaworODY5MDIgMTE1NTJlYTZhOTQ0YzNiMzM2OTA3YjFhMDA5ZDVkOWUwMzYyMzYzZCBweTNrCis4NjkwMyA2OTNmNzQzMGMzY2E1MDgwN2IzMDUwYzcxNjBmN2MzNWE5ODRhZjlhIHB5M2sKKzg2OTA1IGZlZTNhMmYyNDNlOGU3ZjJiMDFkOWYxMDQ0N2YxNjJhYjNmYTM3M2MgcHkzaworODY5MDYgMDkyM2Q5YjNkZTZlYTgyMmMyOWQ1MWEyZjEzMThlYjQ2ZWI0ZWUwYiBweTNrCis4NjkwNyA1Y2I1M2YwOTRjMWE4OGQwYzFlYzU4ZGUxODE4Y2ZlNzgwOTkzMjcwIHB5M2sKKzg2OTA4IDkxODRhMzkwOWRlMGM5OTM5MmRiZWIzNzRlNDU0MzI5M2Q1Mjk0NGIgcHkzaworODY5MDkgOGI5NWVhMzE3MjViM2VlODFlYTI2OGM3MTUwOTQ4ZDhkNjVjZDQ2ZSBweTNrCis4NjkxMCAzOGJlYzkwZmQ4YWI2MDNkOGZmODg5MTk0OGVkOWI5Y2M5MDg4YzdmIHB5M2sKKzg2OTExIDAwYzhjZGY1MzkzNmIzNWFiYzIxYWYwMTQzZjI5MzhkZDkzMzRjNjggcHkzaworODY5MTIgMTQ4OTZmMTMxM2RiMDlmZjRjYWYzNTEwZmY1ZjBjYTdiMGI0MzBhOSBweTNrCis4NjkxMyBmZjdjNTkzNzc5MDMwMGE2MmMxNWRiOGQ2NDYyMWMzOWIxYjY3YjA5IHB5M2sKKzg2OTE0IDcxODA5ODVjMWMyMjNkMzMyMGQ5YjI2NjI2N2FjNGUyMmU1YWI4NzkgcHkzaworODY5MTUgZTVjMjhkNjc2OWNmZDE3MTZmMjczMWUzZGJjMWFhOTU5N2I5ODc1YyBweTNrCis4NjkxNiAyYmFhZDhiZDBiNGZjODY1ZjJkOGQ0YmUyOWM0MjM2MGQwODE5NWQzIHB5M2sKKzg2OTE3IDM3MDAyZTRmZjY3NzJmYmZlYzkxYzYxNmM4NTNkM2MzMDRhMWViZGUgcHkzaworODY5MTggNWRhMDkzYjQ5YzJhMmQzNDIzNjhjMjk2N2U1MGRmOTExMDc0ZmJjNCBweTNrCis4NjkxOSAxM2M3MWM4YzVjMGY4NWVkMTVjMzJkOTA1MzY1NjI5ZWYwOGJlMTExIHB5M2sKKzg2OTIwIDRlMThiOWJlMjVhNDA4ZTFiOGQzZTY3NTZkZmE2M2QyOWJlMjc3NjAgcHkzaworODY5MjEgY2Q4ODc2N2I4ZDBjOWZmMTQ5MTJjZjViMDkwMDU4YjczNTlmZTQxNCBweTNrCis4NjkyMiA0Mzk2NTU4MGM1NTZkYjk0NTRiZjcwMTQwODY4ZGZhN2RiMjk2M2I0IHB5M2sKKzg2OTIzIGM1YjU0OGZkMGM4YzgyNjEzMmMyNTdjYzRjMGM0NjI3NGNjMGIyYTcgcHkzaworODY5MjQgYjkzMTdhOWEzZDNhYjc0N2Y2M2VmYzE5MTk2OGVhMTMxY2Y3MTc0MiBweTNrCis4NjkyNSBlMzFhNDk3MjA4NGFmNTI2OTUyN2ZjMTBkMDZlODNmNzc4M2UwMjgwIHB5M2sKKzg2OTI2IDA3OGU1YzdiMzE1OWYwY2JmZjBlNjc3NDczZDE0OWRlYTM1YzlhYWIgcmVsZWFzZTMxLW1haW50Cis4NjkyNyBlNzg0NGI3ZjZlZDQ5ZWI4MmU0ODkzMjg3NDM1YTQxMGM4OGE4NTdlIHJlbGVhc2UyNy1tYWludAorODY5MjggMDllZDQxMWExMDkwNjI4ZTZjMzc3MDkzNDgyMzRiZDYzOWRjYzk3YSBweTNrCis4NjkyOSA5MGI2Y2JmMmIxMWI2MTNjYmFiYjI4MjdlZWMyNzI2MTM4ZTJhMmYwIHB5M2sKKzg2OTMwIDg5Y2RhMDgzM2JhNjAzOTFjMTYyMTM3OTQwZDQ4ZmNlYzIzMjZhZDcgcHkzaworODY5MzEgMGRkZmE1YmNmYmQzNzAzYTdmMjk1YWY2NjZkZTdiMDM0ZTdiYjIwMCBweTNrCis4NjkzMiBkMmVhNzExYWIxMDdjNWI0ODY5MDE4NGZjMmY4NTJjNmQ0M2Y4YTQ1IHB5M2sKKzg2OTMzIGRjNzM0NzI5MzVjNThkYzkyNjEzZjhhYzQ0N2RiMmNkOTViYTgwNTggcHkzaworODY5MzQgN2U0ODMzNzY0Yzg4YzAwMzdhMWY5ZGZmN2Q0ZGFmNzA2MzY0NDRkZiBweTNrCis4NjkzNSA5YTIwNTgzMDljMWFhNjA3ZDIzYzE2ODllMDJhYTczZTBjNDRkMTFjIHB5M2sKKzg2OTM2IGI4YmJjMGZjNjE5MTg4YzQyZTFlZTQwMzMyYWJkMjcyYzc2MzRhMTggcHkzaworODY5MzcgZTMzOWZjYTZlNTFhMTAxNmYxODg1NzA2ZGE0MDk0NDUxYTM0ZTdjMSBweTNrCis4NjkzOCBhMzYzMGRkOTIyMTgwYjIxOWZiMzFmYjM4YWNkNDJiYzM5YzZjNDcwIHJlbGVhc2UzMS1tYWludAorODY5MzkgNDVhZjVhMDY4Y2M3ZjQwNmFmODFmMzZlOTVhMTU5OGRlY2MzYjE3NSByZWxlYXNlMjctbWFpbnQKKzg2OTQwIDFhZGQ4Y2VmNzUyN2ZlOWE2ZmY2NDkxMjkzMTc5MWFiNzIwMzEwODYgcHkzaworODY5NDEgNWYyNDEyODQzYmI5MWU2ZDFkZjI5M2U4YWIxOGIxMDc0ZDkwNmQ0ZSByZWxlYXNlMzEtbWFpbnQKKzg2OTQyIDg2MjljMmEyMzRkYjAzNmQzZGI4NDY5MGI4NGQ2YWQxZDcyOTM5ODEgcmVsZWFzZTI3LW1haW50Cis4Njk0MyBkZWUyMDE1NWZkNjU3NDhkOGZjMjdiNGJkODI1MmY0Mjc5NjBmNDA2IHB5M2sKKzg2OTQ0IDE4ZDg5YTMwZmFiZjk5MzM2OTFmNDY4OGVlMjQxNGNkOGIxYmE1NjQgcHkzaworODY5NDUgZTExZjdlNjYyMzY5MTA2ZDJhMDdiMDNlMGFjNzhmOGU5ZGEyZTU2MyBweTNrCis4Njk0NiA5OTZmODRlNTA1YmUzNTJkZDA5NDViYzAzZGNiZWE0YTFkZDQ1ZjVlIHB5M2sKKzg2OTQ3IGJmNDk1ZGRlMjBlMzkzMmRhOWI3MmNiMjk2ZTdiZWEwYTViMzcxZmQgcHkzaworODY5NDggMTA5OGZhYjg1ZTQ3MjczNmE4OGFmNTNjYTc3ZDU3YzljMTM4NzZiZSBweTNrCis4Njk0OSBmOTA1ODJjNmNiNWZmNmI3MjM1MWJjMjhiZGU0NzdhYTZlNDY5OGFmIHB5M2sKKzg2OTUwIDY0YzY0MmJiN2ZmNzlhZTZiMjUxZWJlZTJlNWVmNGIwMDUwYmI1YTMgcHkzaworODY5NTEgZTAyMDIxZmJmZTIyYjVjNTNiYmI5YWViOGQ3NzNiZWE2YmFkNjlmMSBweTNrCis4Njk1MiAxY2JmZWZmZWExOWY3NjdkYTZhMzJhMWVhOTc2ZjlkMDMzOTZmNjdlIHB5M2sKKzg2OTUzIDZlNDlhZjJlMDg5MTA5ZmM4YTI4NmRkNzEzZGU2ZjY0NTE3ZTk4MzMgcHkzaworODY5NTQgZDdkZTMxYWU5NWE0NDdjYzUwYjdkMTM1YTUzMTUwYWExZGIyMmMxMSBweTNrCis4Njk1NSBkN2ZhMTdhNDY2OWRiODVhYWJkMTUwOTYxYjM5NmE3NmQzMjk2MjliIHB5M2sKKzg2OTU2IGM2MTRmNzg2NzVkNGE3MDEyNDM2NDhhNDU4ODYwNWE5NjYzOTRhZDIgcHkzaworODY5NTcgMDlkMjNmYjBkNDI4ZWRkNDA0MTI2OGE0YzBjZTNkZGZjNTM5YjljNSBweTNrCis4Njk1OCBhMGNmNjRhNTI5MWU3NWEzMWNlMjNiYjlkOWZkYmM2ZDEyMjZlZDNjIHB5M2sKKzg2OTU5IDc4NTFiZmIxYmQ3MzM5Zjg2MGVkYjNiMTY3ODk2NTNkOGIzM2I4OWUgcHkzaworODY5NjAgNzY4NTRlNDVjNDY1MjcwZjJkMDAxODA2MTUwNmNmYTA0OGUwOTM4NiBweTNrCis4Njk2MSA4YmY5MGI4NzEwZDAzNzgyN2M5MTQxNjNkNTA5NjQxZWI5MDhlYTFjIHB5M2sKKzg2OTYyIGE1YTNhZTliZTFmYjAzOTUyODY4NGJiYzIyODlmZWQyNmQ0MThjNjIgcHkzaworODY5NjMgMTA3NTYxYzU4ZGUxMDQzNTMxNWMzYWQxYzhmMmQ1YzdjODM5Nzk1NCBweTNrCis4Njk2NCA0OGMyOGMyODFkNTdhZmZlNDY5NzFjZjljOTdjZWFhMTE4MGQwYzAxIHB5M2sKKzg2OTY1IDM4MzUzYmE0MDhhMWQ4NDI2ZGE3NWYwNTE4ODhlNGEyMDIwYzg2Y2UgcHkzaworODY5NjYgNTc3YTI1ZDY1NWM0YWFmYzE4N2VjNDA4OTA1ZmMzNDc4OWY4YWU0NyBweTNrCis4Njk2NyA4MWY0ZDFmZGY1NzM0MTMyZWQzMDNhNjI5MTJkNGYwMmFiZWIxODEzIHB5M2sKKzg2OTY4IDdjMWI0Y2E0NWRiNmRkOWUwYzI1OGI5NjFkYzUxZDI1MzdkMzUwNDMgcHkzaworODY5NjkgOTRmYTUzYjU4ZWU1MzQ4ZWZmMTVjYWM2ZGQ5YjJkNGU1ZGQ4OWQzMyBweTNrCis4Njk3MCA3ODIxNjI2MzQyNWQxNTgxZTlmZjhlZmI3Yjk5NzhhNGNhNTA3MDNmIHB5M2sKKzg2OTcxIDRhNTk5OTAyMzEwZGI4YTRkOTlkYzg2YjA4YjAxYTU1NTQ0MWYxMzQgcHkzaworODY5NzIgNWI2ODY3NWQ3MjY5YzZhNWMwNDlkYmUzN2MyZTYxZDI0ODg0YWIyMCByZWxlYXNlMzEtbWFpbnQKKzg2OTczIGZkYjM1MjMxZWJlMjU5ZjUyZTI4MzE4YjExZDlhYjkxY2UxM2Y5M2EgcmVsZWFzZTI3LW1haW50Cis4Njk3NCBmZTJhNTZhMWJhNzQ0MzRjYzAxMWI1YjcwOGY1ZTBmYjJjM2Q5ZTg0IHB5M2sKKzg2OTc1IGZhYWQxNzk3ZmM5MmNkNjFlZTU3ZTkzMjI2YjMwNTk5ZmQ4OTljYzMgcHkzaworODY5NzYgNWZkYTUxOTgzNGRmODUyYjhlNGY2NjNiNzUyNmJhYjY2NjgxNWNmNyBweTNrCis4Njk3NyBhZTEwMjgyZTdmNGVjN2YyZDcyYzQ2NWMzNWIyMjE0Yzc5MzYwNjY5IHB5M2sKKzg2OTc4IDMwMWQyM2Q2ZGQ5YjZlZDgwMzM4NjQwZGFlNzFlODU4NDI4OTRlMGEgcmVsZWFzZTI3LW1haW50Cis4Njk3OSA1MjNhNmZjNTNhNzA1YzQ1Y2ZjMjg5OWEzOTA2ODVkNmQ2YmE4ZTIyIHB5M2sKKzg2OTgwIGIzMDA0ODY2M2I3YmZlNjFlN2I1MmRlMGJhOTgzMTBjYWNiMzcwMmYgcHkzaworODY5ODEgM2QyYmZkMjBjMmY0ZDkyZGY1NGJhZDc1ZjUyZTQ2MzU0MDY3MzhiMCBweTNrCis4Njk4MiAzMjE0ZTIzMWExYzQ1OTNlNWZiMzBiYzlkYmRiM2EwZGIyZThiNTE5IHBlcC0wMzg0Cis4Njk4MyAyMmYwY2YxYTI3MTFiMjQ0NzE4MDExZjY3NjMzZGQ0ZDhlMDgzZjRmIHB5M2sKKzg2OTg0IGY3NGY1YTA4M2I2Zjc4NTdiN2Y3NTRjYmQwZGFhMmI0YTg1YTk5YjQgcHkzaworODY5ODUgODNhZDAwYTNhNDg5MTgxNjUyZDRiZjJlZDViYWRjM2FiYzQyNmVkZCBweTNrCis4Njk4NiBiMDM0ODMyNDE0Zjc4NzgwNmQyYWE1M2E4ZjhjNzYxYTViOTI1YTMzIHB5M2sKKzg2OTg3IDY2NWYwZmM2ZGRkN2JmMzhkZjUwMTExOTE5ZDM3ZjZlNTIzMzdmYTggcmVsZWFzZTMxLW1haW50Cis4Njk4OCA3Y2U5MDAxZDdhNzcxZDI0NGY0MjljZmEyNTRmYTJlZGUyOGE1NzFhIHJlbGVhc2UzMS1tYWludAorODY5ODkgMzE4MmM2MDg3ZTUyZWUxMGY2YWUxNGQ3ZmM0ODMwODc0MTY4YzYwZiBwZXAtMDM4NAorODY5OTAgNTU2ZGYwODdkZTRmYzEzMmU5ZGQ0MDZkMDg0YjlkZTMyMmI1YmI5MSByZWxlYXNlMjctbWFpbnQKKzg2OTkxIGU3NTZlYzhmNDE0M2JiOWEzZjE0ODNjNGMzMjI2MDY3MjJiMjYwN2YgcGVwLTAzODQKKzg2OTkyIDVhNzIzYjdhZWZiNzBmNzI4Y2NlZjNkNTIzNTNiYzVhYTQxMTE2YjMgcmVsZWFzZTI3LW1haW50Cis4Njk5MyA0Yzk4NDQ3MzI5MjU3MzM5Yjk1OWQxN2IyZTNmYjA4Y2YyNWVjODI0IHB5M2sKKzg2OTk0IGJkM2JhODk5NDJlMzE2ZDM1Y2E5YTIyMWM1MmU2NDkwYjdkZjhkMDggcGVwLTAzODQKKzg2OTk1IGY4OTVhMjIyMWZlMTNiMDA5ZmRiNWJlMDI5NWIxYzZkMmJmOTNhNmYgcGVwLTAzODQKKzg2OTk2IDNkZmVjOGYxNGU3MzJlN2JkNmUwMzVlNjZiNDVmMjAyYWMxOWQ4YjUgcHkzaworODY5OTcgM2Q5YTg2YjhjYzk4MDQ2ZjBkNzQ1NjQ3OTgyOTQxMGUzODZiZTZiMyBweTNrCis4Njk5OCA2MmI2MWFiZDAyYjhkNzA5NTM5NzY4NzhlZDVjZTJjMjE1NzkxNGZjIHB5M2sKKzg2OTk5IDE0ODY0MTZjODZkOTdkODIxODEwNzM5YmJmYWNmZDhlM2NiYTdjZDYgcHkzaworODcwMDAgNmIwMzQ5MWVlMTcxYjQ5YmYxNzBlMzMyYzFkZWVlNjE5MGU2MGU0YiBweTNrCis4NzAwMSA0Y2RhZmIwMmIyMGUxNTc0NTJhZjQ2OTdhZmQ4Y2Q3ZGM0N2M4Mzk2IHB5M2sKKzg3MDAyIDVlYzRlZDUxOGVmOGZkODQ5YzkzMzk2YmMwYmExZjUxYTZlZTIxNTQgcHkzaworODcwMDMgYTZlOTQ5YTZmZmM5YzlmMWQ3MjVmNThmMDk4MDExN2IxN2JhNTYwYiBweTNrCis4NzAwNCBkNjE4M2JjZWJkZGU2ODJlOTQzMjA2NjBhYWMxOGVjMmRlOTg5NjNlIHB5M2sKKzg3MDA1IGQyOWI1NWFjMTYzMTkzODA2MGY5NDI0YjRhMTRmODk0MmQ4YWQ5ODkgcmVsZWFzZTI3LW1haW50Cis4NzAwNiA3YzIzYTY4ZmEzZGU4NmEzN2RlOTkxZjZhMTZiYmE2OTQ2YjJkNjdhIHJlbGVhc2UzMS1tYWludAorODcwMDcgN2I2YWY1NmVlNzRkMDg0NzBkMGMxMTI4NWI2YzNmMTVjMGU5Yzc3YiBweTNrCis4NzAwOCBhMmZhYmUyMjRlODczNjMyMTM4MzE4N2UyYjg4MmU4YzM4OGJhODRhIHB5M2sKKzg3MDA5IGE5MDcxMTBkZjI1YTA4OTc4OWJlMGI4N2M1MzE3YmY3NGFmMTg4ZTIgcHkzaworODcwMTAgYjM3ZGE2MGM5MDcyYTE2MzAwZTVlZTEzM2QzMzk2YjZlYTcwNGI2MyBweTNrCis4NzAxMSA1NmVlZDhmNDA3YmY5NDY5YTRkZDI2ZmRhMTRmOGJhNGIwMzRjNDgzIHB5M2sKKzg3MDEyIDFkMzUzMWFhY2VhMGUxMDk1ZGZlNTY0NjEzNzRmZDcyYWU2MjUwMGMgcHkzaworODcwMTMgNGRmOGI0MzQyZTcwMjQzZjc5NTE2MTA0YTY0YjNlOTE5N2Y0OGI4MyBweTNrCis4NzAxNCBiMWU3ODk2MzFkYmM0MjFkM2JiNjQ3NWNiMmNhMjhlZTAxYTc1OTFlIHB5M2sKKzg3MDE1IDUxZDI4YTBkMWMzMmU4ZDhiZmE1YTI0Nzg1ZGM0NDAzOWNjNzY4NzcgcmVsZWFzZTMxLW1haW50Cis4NzAxNiAzYWFmMzdjMjRkYjhmYTc3ODZlZWRhY2M0YTVkNzdkMmEzM2UzZjczIHJlbGVhc2UyNy1tYWludAorODcwMTcgMmUxZmNmMjhjOTE0NWNmNjcwYWM4ZWU3ZWQ4ZTM0ZGE2NGQwM2FlNCBweTNrCis4NzAxOCA4OTNiMDk4OTI5ZTdlZmVlNGY3NTNiNWRhZTkwODU4MzVkM2I3NTI2IHB5M2sKKzg3MDE5IDcxM2M2YjZjYTVjZTIyZWEzY2VkYTgwZGQxY2Q0YWJlZmI3YTA3NzUgcHkzaworODcwMjAgOGIwMmY3Zjk0NzViMmEzNzQ4OWExNzJjZDhlZWZjMzM5YjZmNzdmNyBweTNrCis4NzAyMSBmMzVhNmQ3ZTMyNWZmNTMyY2IzOTY1NTdhNjM2ZWYyNTY0ZjNlMTFlIHB5M2sKKzg3MDIyIDQ4YzQwNzA5NDE3YjljNjBkYzRiZGNmYjdjMGQzNzUxMjgxNmIzZjQgcHkzaworODcwMjMgZjgyZWVhNDc4MWYxNTYzYTM1ODIxOThkN2QzMDIzM2YwZWE5MGVjNCBweTNrCis4NzAyNCA3MjE0ZGM1YmZmNWNmYjc5ODkxNTQ1NzM3MzQ0OGMxZmEzNDVhZWI2IHB5M2sKKzg3MDI1IGMyNTc4YTY4ODc5ZDljNWI3ZWI4Y2Y5MzNjMjczMWM3YTNkOGNmZjEgcHkzaworODcwMjYgMjk2ZTZmODVmNTZkNDE2MzAxYTdmNTk1YjdkYjg2ZjVjOTgzMWZiZCBweTNrCis4NzAyNyBkNTgyZGFiYjMwZjg1Yjc3MGYwMmZkNzM5ZDBlNGExMjdkZDliNTllIHB5M2sKKzg3MDI4IDQ4NDUwZjA1OTcwYjkwMDgxNDFjNzYzNmYyMzNmZDIwN2UzNTI3NTEgcHkzaworODcwMjkgOGNhYmNmNGY5MDMzOGI1YTlhNTA1NTg4NzI4OGNlNmQyMzE4YjEwNiBweTNrCis4NzAzMCBiZWRlODNlMjA4NTM0YzJkYWZhZGRiZjJmNjNlYTNkYTlkNjQxNDIxIHB5M2sKKzg3MDMxIGRlN2YyOGE2NDBlNWE2OWNiNmNiZWMzNGY3M2Q4NmNlYmI2MjQ2NDQgcHkzaworODcwMzIgNTczYTY3Mjc2MjE3MWYwNGQyMTYwZDQyMTViMmNhOGM1MzA4NjU0ZSBweTNrCis4NzAzMyBhOGYzODQ3NjE5ZjRkYjI0ODdmYmM2Yjc2MzQwMTY2MTM5ZWY3ZThiIHJlbGVhc2UyNy1tYWludAorODcwMzQgOWI2MDM2MTFmNmQ0YzZkNGFhNDlmZjM2ZTc2ZjQ5NmYwZmIwZmIyNCByZWxlYXNlMzEtbWFpbnQKKzg3MDM1IDI5NDgwNmNhYzhjNTRiZTUzYmJkNWY1ZThmMDQ0N2E1ZDIyN2NkNDMgcmVsZWFzZTMxLW1haW50Cis4NzAzNiBkZGM2YzQ3YmY4MjVlMzk4ZTBmNGFkNTFlMDRhMTM5MDE0OGRkM2M5IHB5M2sKKzg3MDM3IGYxNGY2MTlkNzA1MDAyNzU5MDQ1ZTAyNjQ0YTNkZWFiYjYzOWEyZDUgcmVsZWFzZTMxLW1haW50Cis4NzAzOCBiMzJkMTllYjQzMzhlYzE1NmZkZTg0MjViNDU2MmEwOTYwMzI0ZjEzIHB5M2sKKzg3MDM5IGZkNjM4Y2E3NDYzNGFhMTdmYzM4Mjg3ZDQ2NTY1YTFhOTEzYTFhNzUgcHkzaworODcwNDAgYWUzZmE3ODFlZWYyZTQwMzVmYzIxYWM4OTIwZTNjZGRlNTRhNjM2NiBweTNrCis4NzA0MSBmMWJlMzQ5MjM0YzNlNGRmNDNkMGNmM2JjNTk3OWU1YjA0MmJmOWZlIHB5M2sKKzg3MDQyIGNiNmQ1ZDE1MWJiNDIxYTM2MDYwNmM3ZjA4MTkzOTliZmI5MGYyZTMgcHkzaworODcwNDMgZjJhNGFkZTM2YTFlYTgxMzA1NGM5MmE1NmEyN2JkN2ZlZTA2ZWI2YSBweTNrCis4NzA0NCBiNTVmM2Q2MzljZDg2Zjk1NDdkNTY4M2NlZGNkODE2N2NhOTBiNmZkIHB5M2sKKzg3MDQ1IGMyY2E4NjdjZGQxYTIwNzg3MDEwZTAzM2RiNDgzMGU0YmQzNjA0NDMgcHkzaworODcwNDYgNWVlYmU0YWQwZDg3OGQ1MTQwN2RhZWZhZmM4YzBkNzkyNGM4Mjk0OCByZWxlYXNlMzEtbWFpbnQKKzg3MDQ3IDBmZDZhZTBhODU2N2RhMTg5MWZlNWFlNGQwZGE5NDUzNWQ5OTQ2NDkgcHkzaworODcwNDggOTgzMmU5NmU3MzBhOTA1NGUyMDdkZTI5YTU0NWM2NTU3ZmEwMmRhZiBweTNrCis4NzA1MCA3NTcxMWQxNzQzY2NlNjg3ZjY5YmFjODk1M2ZjOTUyMzgwYTA2Y2VlIHB5M2sKKzg3MDUxIDRlNjI5MjdhMmJkYTk1OTk0NzcwNjZkNTliNjc5NTM0ZDc3MzA4MjAgcHkzaworODcwNTIgNzc5YTIzYTA4ZDhjZWVmMDczZjk2OGFhMjdlMDM4NzI3N2JhZDg2MyBweTNrCis4NzA1MyAzMzlkZDYyMmRlNWE1ODMyNDg0MTQ2NzA0NTlkOTI5OTk0ZjFlOWFkIHJlbGVhc2UzMS1tYWludAorODcwNTQgYmE3MDlhZDNmZjRjYTY5Y2Y2Y2U4NDE3YzY5YTEwMWExMWFiNTE0NyBweTNrCis4NzA1NSAwNGNlYzJlMWNhNDFhODc0Y2I4NTlmNjI4ZjhlNGRjYjY5NDNmNTU3IHJlbGVhc2UyNy1tYWludAorODcwNTYgMTgyN2E4YWM5YjE4ZTljODQ2YzY4NTY0ZTU1MzkyZThiZDgyNDc3ZiBweTNrCis4NzA1NyAzZmVlODhlNjQ0MmEzZGEyNWY5ZjVkYWZhNjkxZDQ5NzNmY2Y3Y2Y5IHB5M2sKKzg3MDU4IGRmZTg2ZGEyN2U2OGMzOGU2ODQ4YWE0YzQyMmU1ZWIzMWYyMjM1NDkgcHkzaworODcwNTkgNjgyNWIyY2Q5YjgxYzM4YmRmMjkwODZlYjhkZTMwNzAxMzU4MDgwNCBweTNrCis4NzA2MCAzZDFiY2I1NGE4MmI2NmNmNGVmYmE1MjEyYWYwNWRmYTQ2NDkzNThhIHB5M2sKKzg3MDYxIGI3ZjA4YTBhZWEyODg2NTEyZDkxYTJlN2MyZjQ4NGZjODYzYzc4ZWEgcmVsZWFzZTI3LW1haW50Cis4NzA2MiAxMTA5NGI1Mjg4Zjk4OTdlMjNhYzU3NTg2ZDM3NmU3OWY5NDBhYjQ5IHB5M2sKKzg3MDYzIDU2ZjQyZTE4NGExOTZlOTg3MDg0NmNmMDZkODAxNmNmYjM3NGE2MDYgcHkzaworODcwNjQgMmY1Y2QxODY5YjFhNWY2YzFjM2MyMWI5ZTFjOTYxZjFmNTA1ZDRlYSBweTNrCis4NzA2NSBlYzc5YWFmOGMwYmZjMmMwZjNmM2Y5NTljOTU1MjlkOTJiM2JmM2I2IHB5M2sKKzg3MDY2IDgzNThkYzEzYTU3NDg1YjA4OThlNmNmNGI3MWExZjM2ZDY0NmY1NDEgcHkzaworODcwNjcgMWNjYmJkZGJlYTg4MWU3YmU2ODMyYTIzZjZhYjQxNzVhMWNiOGZhZCBweTNrCis4NzA2OCA4Mzk1NWU0NjFjNGJhNzM1YWFmYjM2YzQ4NjU2M2MzNDJhNjY0NWNiIHB5M2sKKzg3MDY5IDZmYjU2NDA0YjZiYjIzZWQ1MjVhZGRkYTYyY2U0YWNiNjhmMjJlZGQgcHkzaworODcwNzAgNGQwYmZjMzAzNzI0NjQ5MzJlNDkyZWU1NzJmYjJmZDU0YWE3NGYwZCBweTNrCis4NzA3MSBjMzhkYTRjNTQxODRlOGYwN2FmN2Y5OTM4ZjRiYzYzNDc0Y2Y3MjU0IHB5M2sKKzg3MDcyIDA3MzE3NmYwMzgxM2YwZTRkYTMzM2Y2OWJjMDgwNjdiYWQxZjQ5ODIgcHkzaworODcwNzMgNjlhNTBiYTQ0ZTY1YjdmOWNhNmZkNTYxZTU3MTcwYjA3NDQxNzQwYiBweTNrCis4NzA3NCAyODVlMGNmYmY5MGYzMTM4OWYyYjkwOWU5NTA1YjZmYmI5ZjczOTAyIHB5M2sKKzg3MDc1IDVjM2FjODc5NWU5YzRkNDM3MzM2NTJlN2E0MTRiN2NhMDJhZjkyMWMgcHkzaworODcwNzYgNjgxYThlODljNjVjODIzOGFkYWU2ZTRhZTdlZTY2MDQ0MmRjNzA4ZiBweTNrCis4NzA3NyBiMzY3YjUzMmE4MjMzOWE0YzQzMTA0MWNlMjg0NGYzMzA5Yzg1MjlmIHB5M2sKKzg3MDc4IGNiM2NlYmNlYmE1MGZkMmFhN2Q4MTQ1ZDM2NTc2MDdhYWY0YzA4NGUgcHkzaworODcwNzkgYjhlZWQ3YTU2YThjZWU1NDNkNTA1ZDE2YTcxODcwZjk4ZmEzMDdkYiBweTNrCis4NzA4MCA1OWY5NzJiMWQ1NjcwMWYxNWZkNmFkOGUyYTQzMjQ4NDQ5NDBkNzcxIHB5M2sKKzg3MDgxIDU5N2MzMDY5YWZkMzk5MTc0NzAxMGIyNzg1Yjc3NWQ4MTYyYjA5ZTAgcHkzaworODcwODIgM2YyNDI0NGIxMGZkODhkNmZjMzRjYjI1ODc4NTdmODcwZDYyY2MyNCBweTNrCis4NzA4MyA4MTcwNTU1NDE2YWM0NDg4MjNlMzk4MTc0MTQwZjhiODkyMWFiMjBlIHB5M2sKKzg3MDg0IDVmMjg2YmEwMTM5NmU3MzM4ZTg3MWU1NWUwMDZiZjUzMWVkYzdmZWMgcHkzaworODcwODUgNDk2NWJlOTBmZTE5OWE4MzM3MmQ2NjM1Mzk5MjQwMmY2ZmRlZjZlYSBweTNrCis4NzA4NiA5MDJkYjQ3MjI1OTRjMmY5MDU1ZTU3MmUzZDUyNjcyNTY1NTk3Mzk3IHB5M2sKKzg3MDg3IDkwNzllY2Q0MzNhMjI1ODk0NTZhODVhODkwMzgwNTA1MTlhMTdlYjEgcHkzaworODcwODggYjYzNWNlYTk0MTk1NzgwYzg3MTZlMjM2NDc5YWYzMTliY2MyNjI1MyBweTNrCis4NzA4OSBmNDQ4ZGQ2YjY3ZGJjMGZlNTY5MDE1Y2U2YmU1MDY0ZGJjOGMzZDc5IHB5M2sKKzg3MDkzIDA2MjkwN2Y2ODVhYzRlNzFmZTcxN2JhMGIxOTNhYmI0NmU4ZmNjMWYgcHkzaworODcwOTQgMjNmZjRhMGMzNzViMzMzMmE5N2U1Nzk4MDU4YmMzNzM0ZGVmY2EwMSBweTNrCis4NzA5NSAxZTRhNmU1NTc2YWY0ZTQ3MDJiYWRjOGUwZmE3Y2ZhZTVmZTFhZDc2IHJlbGVhc2UzMS1tYWludAorODcwOTYgMjZlZGZiMjdhMGNlOGU5NDNjNWRjOGQ1NjA1NWNkZjQ3NzZjNzNiZSByZWxlYXNlMjctbWFpbnQKKzg3MDk3IDBhZTA3Y2FhYjUwNmZlZjE0ODExOWExYzVkMmNlNjkwMmEwOGQ1MjcgcmVsZWFzZTMxLW1haW50Cis4NzA5OCAyNmM2NTkzNTcxZjFmYWU3ZDAyMzQzZjM2MmRiM2U4YTA5ZmI1MzAyIHJlbGVhc2UyNy1tYWludAorODcwOTkgZTExNWIyYmZhOWQ3YzY1MzlkMGQ4MWY2YjU1YTNlZjUyNmVkY2YzYyByZWxlYXNlMzEtbWFpbnQKKzg3MTAwIDE1YTc1NzBlM2ZmZDAzZDI3NmUwYWFkZWMyMjQ4MTk3ODNlMjY2ZGYgcmVsZWFzZTI3LW1haW50Cis4NzEwMSAzMGVhY2E0NzM1Y2I4YzhlNjFiNWY5MmZiYmE4ZWQ0YTRlZmNlMjE0IHB5M2sKKzg3MTAyIGM0ODk4Y2VmNDcxNWYwOGZlNzNiYzI3YzY5M2M0ZWJmMzVmODBkYmEgcHkzaworODcxMDMgMjdkNmFhNGYxODExMWY1MjM4ODQyMGVjZjU3NzBjMzM0NGVhMDk2MSBweTNrCis4NzEwNCAyNTEzZDg5MmIyNTQxOGI1ZDBhYTJhYmU1NTNiZTkzODU1NzVjMjJjIHB5M2sKKzg3MTA1IDg2OGQ1NmFjMWM1OTA2NjI4ZjNlODEyMmQwZWMxM2VmM2E0OGVhOTMgcHkzaworODcxMDYgYzIzNDliNmJmZmFmMmE0OWQzYWY0M2I2ZjdmODFkZjhmYTVlNGFmYyBweTNrCis4NzEwNyA0YTk0YzJkYmY5ZTg0YTQ1MWVmYzY2YmEzNWE0ZjY3MjQ1MWYwZDE1IHB5M2sKKzg3MTA4IDg3ZjIzYzc5NDllZTgxMDkzM2Y5NDE3ZmM1Yzk0NjJhMTk1ZWY3ZGUgcHkzaworODcxMDkgYTFmMzZiOTM3M2JiYWYxOTFmNTFhODMyOWM4ZWI4NGEwZDZjNzBkYSBweTNrCis4NzExMCAzOTAwOTg0MTQ3MWI1OTdhM2IyYjc4ZTdmNWUzZjA4M2U5OTNhMmE0IHB5M2sKKzg3MTExIDZlZjFhZWFlNDJiZWI2ZWM4NTFlZGZiMDMxY2MyMDVjOTgxMTEzMjAgcmVsZWFzZTI3LW1haW50Cis4NzExMiAxMWZjNmMzODA4YjY0MDQ3ZWJlYzI0YjMyNDE1NmI3YzJjYzcxZDkwIHB5M2sKKzg3MTEzIDJmYjFlYzVjNzM1ZWIyMDM3YWZkZDE1NmJlMDE0NWYyNDBmY2JmNGYgcHkzaworODcxMTQgMTIxZWQ4NDhjNjcwYjJiNTJlNmUyNmRiODMyMWJkZjQwNzU5MTc5OSBweTNrCis4NzExNSAzOTZkOWZhNGZhMjQzMmFmZjg4ZjVlNGU3ZGZhNjc5NmVjN2U5NWY0IHB5M2sKKzg3MTE2IGFiMTM1NTM3MDJmNTVjMjVlMWIzYjY3YjljOTU4NDBhZTRjZTJmYWMgcHkzaworODcxMTcgNDE3ZjhjY2NkMjA4OWE2OTk4NTRmOTliY2NiYTE5ODIzMzNjMDA2MCBweTNrCis4NzExOCA1MGRlOWYxYTZkNTQ3MDNlNDk5OGE3NzU0ODA1MGIyMWIxODc0Nzc4IHB5M2sKKzg3MTE5IDc4ODk4NGI3ZGE2ZjJlZWYxODA0OWYwODljNTI0ZWY4OTkwMjhjYWIgcHkzaworODcxMjAgYmRlZDA2N2Y5MWU4ZGQ4YjU3Y2I2YjYzMWQ4NjM2MzE4YzlkZjM1NCByZWxlYXNlMzEtbWFpbnQKKzg3MTIxIDc1Y2FiNmNkOTdjNjM1MjNhNDM5YjEyMTk1MjdmYjVmNDM1MTJlYmIgcmVsZWFzZTI3LW1haW50Cis4NzEyMiA3ODZmYmVkNzhkNTdkNzc3MjUwYzI2MGU1NzQ4ODA4MzQ0NTQ2ZDlkIHJlbGVhc2UyNy1tYWludAorODcxMjMgYWEzMGIxNmQwN2JjNDU0ZmZiNjI1NTY4YTFlNGEwMTgxOWJmMDNhNSByZWxlYXNlMjYtbWFpbnQKKzg3MTI0IGY0ZjU2ZWZhMjg3MDIwMWNmY2Q1MzVlMDUzNGE3NjhiODZlODc5MjcgcHkzaworODcxMjUgOWU3MmI2ZDBmNDhiYTNmOTI1N2JmZTYyYmI3NzYyNjE2NTJiMjY3MyBweTNrCis4NzEyNiAwODIxZWYxMjJkNTMxZGNlMWE3OTNmMjZmZjc2ZDE0OWY0ODFlY2Y0IHB5M2sKKzg3MTI3IGE0NmUxOWU4NjY4MDE2NTMzOTYxMWFhYWRlNDdiMzBiMWUwNzcyZjAgcHkzaworODcxMjggYzcxOGNiNzg2YWViNWZjNTgwMjk3ZWVjZGYyMDcyZjI4NjU1ZWU4OCBweTNrCis4NzEyOSAzMjRkOTNkNjg1MzMxZGY2YWY5OGNhODRlM2Y5N2Y5NGRmMDgyYzQzIHB5M2sKKzg3MTMwIGQ5NGQzNjVkN2NlNWVjNmZiMDVlODI3NDA2MDQ2NjkxZWE1MDZjZmIgcHkzaworODcxMzEgNTIyMDEyMmUzZTliYzdkMzlmZWE3MzZkOWM5ZTZiZTA5N2YzYjM1NSBweTNrCis4NzEzMiA3YjdmNmVmNGY5OWM3ZmY2MTI0MDE1M2VmN2JjNWY4NmYzOThkYzcwIHB5M2sKKzg3MTMzIDk1YTczZTRiMmNlYjNlMDI5Zjg2ZTNhOTE0Y2FlYzQzYjljOWNlNjggcHkzaworODcxMzQgNGM3ZTMyZTU5Mjg4NTdmODA2YjEzNDFhZDJhZmJhMGY4OWFjODc2NiBweTNrCis4NzEzNSAxMTM5MjViNzliOTdiMDNjNmVlYjc0YWJlYjdjYTQzMDNjMjgyMDBiIHB5M2sKKzg3MTM2IGQ1NzU5MWJkZjYxZThlOTgzNjU0ZWRiZDI1YzlmM2I4MGNjMWZkNmMgcHkzaworODcxMzcgNTBkMTcwYmI3MWM3NTMxODYxNDY3Y2NjNTc1ZDA0Yjk2ODIzZDRlNCBweTNrCis4NzEzOCBiODQyNjFiZDZkNGE0ZTZlYjBiYTc3NDIxNGQxNDJmNGNhYmM1M2FkIHJlbGVhc2UyNy1tYWludAorODcxMzkgZTAwNzJiZGRkMmQ1NTcwMGEzOGNmYWJlZjY3ZGE5OGFhOTRiYWQwYiByZWxlYXNlMzEtbWFpbnQKKzg3MTQwIDhkNGZlZWRlYWFlZDM0NWE0ZmY0NWEzMTA1ZDFmNTEyNzU1YzJiNTQgcHkzaworODcxNDEgMTY5YmYwMWJiNTA3ZTA3ODk0YWEzZDgzMDNkYTBmYzRkMzhlMzdhYiBweTNrCis4NzE0MiAyMWRmODE1NWM3NzBmM2NmYTY2Njk0NDAwMTJjOWE5MWMyMjE0MGZlIHJlbGVhc2UyNy1tYWludAorODcxNDMgZjhiZWE5OTYwNDYyMTE4YmI2MWIzM2QwZDczNDdiYjZiZTlkY2MyMyByZWxlYXNlMjctbWFpbnQKKzg3MTQ0IDgwMDU2M2FjMDU3ZWRhZTNlNmUyNTFlNWUzYmMwM2E4OGQ5YzljOWIgcmVsZWFzZTMxLW1haW50Cis4NzE0NSBkMjgxMjZlYmQ2MGQwMmRhOTcyMjM0NWQxMjNiYzYxMTU2OTJmNWI2IHB5M2sKKzg3MTQ2IDZlOWYzOTdiYmEwMjVlMmFiM2VlMjA2YjJjNTZlODFhZGNiNjE4ODAgcHkzaworODcxNDcgYzUzN2JkMzdmNTA4YWYxM2MyMTI4ZjQyZDUyMWVhMjU2MGVmYTI5OCBweTNrCis4NzE0OCAxYjY1OWEwMDU3MGJkYjRiN2RiMGE2ZTMyZmNkMDk2Y2RiM2JkYzU2IHB5M2sKKzg3MTQ5IDc0MDMwMmJiM2FkZmIzODRiNjc2NDZiNDE2OGI5ZGI0NzlkODJlOTkgcHkzaworODcxNTAgYmJjZTQyZjZkZDdkYmJmMjZhOTYxMmQzMjJlZjYzYjNiZGYyNTY4MCBweTNrCis4NzE1MSAzYzU4OWNhNDFkM2EzZDFiMTYxNWEyNjY0Y2VjODM0MGJmODM4Mzk1IHB5M2sKKzg3MTUyIDE0ODZkMzE3MWM2ODY3OGFmNTdiMTY5NTk2N2Y3ODQyYzA0OTZhMmYgcHkzaworODcxNTMgMzhkYzQxMzk4NTRjOGNiOGFiNmM3ZmE0OGY0OTY2MTM0OTVjNjU3ZiBweTNrCis4NzE1NCA5Y2IyZWNiYjFmMGNhOWI3NmU0MmY5MmViMjUzN2YyNjY4M2M5ZTM2IHB5M2sKKzg3MTU1IDhjMjU0YjY0YTQzODA0Y2QyOTFmNWNhYjlmMzMyNzEwNzEzNDA5NTUgcHkzaworODcxNTYgOGRlMzM1NjI4NTVmYWY5Y2I5NmFjNjNmOGRmNDMzOWNjODE2OGMzMCBweTNrCis4NzE1NyBjODZkYzJiZDNhZTgxMzEzZTQ3ZmFjOTNmMjJhYTc0ZDNmYTZmZDI4IHB5M2sKKzg3MTU4IDc0ZmU3M2MxMDYxMWQyM2QxZTM4YjYzNTU5ZGU1Y2EwOTliOWQ4Y2IgcHkzaworODcxNTkgNzM4ZWFlZWQwYjFhMjQ3MjlkMTYwMjllZDZkNDdmMzQ2ZTFkMzQ4ZCBweTNrCis4NzE2MCA0Zjg0OTcyMGJmNDEzNzMwZjZkYmNlN2IyM2NlODNmNDVmMTcxNWQwIHB5M2sKKzg3MTYxIDAxMzNiOGNiN2Q4MDZkMzdlMzU3MzNkN2I0OWU5NjUwNmM0NTg4ZjYgcHkzaworODcxNjIgMzMwYTk4NTIzOTZkZjg4ZWZkNmNlOTJlNWNjMjljMzgzMDk2Y2RlYiByZWxlYXNlMjctbWFpbnQKKzg3MTYzIDcyNTNiZTk2YTE5ZWJmMTY4OGE2ZWJjN2Y0ODA0M2VlMmU0OGJlNjYgcmVsZWFzZTMxLW1haW50Cis4NzE2NCBmYTU1YjAzYmU1NzQwMmUxODk0ZjRkZmM2MzkxZjQ3NGZiMzk2NjA5IHJlbGVhc2UyNy1tYWludAorODcxNjUgMDRlZDlkYmM2ZTA1MWMzMDlkNjllOGI4YzE4YmQxMGMzZGNhZjBiZCByZWxlYXNlMzEtbWFpbnQKKzg3MTY2IDcxNGI4ZTFlZjcyNjNlMjgwOWM5YWQ5YTUzZjA1OThiMDgzYWE1MWQgcmVsZWFzZTI3LW1haW50Cis4NzE2NyBhYzNjNTUyNzFmZGQ0MmEwMWMxM2U2NGJmM2FmNmMyOGJlY2JhNzFmIHJlbGVhc2UyNy1tYWludAorODcxNjggYWE5OWRjOGY3MDVkZmJhOTJkNTVmYWI2NjQ4MWY0YmMwYmI3ZGFmNCByZWxlYXNlMjctbWFpbnQKKzg3MTY5IDIwN2VhOWEwNTA2MmYyNDJhNzI3NjE1MDE2YjM0ZDlkOWViNTM1NjEgcmVsZWFzZTI3LW1haW50Cis4NzE3MSBkNmM3MDJkNDBmZmIyZGU4ZTFiZjQyNzU2MmY1MGM1MTc1NTBhNzJhIHB5M2sKKzg3MTcyIDM1MzA3OWFmNGY1Mjc1YzkxMTlkMjNhMTVhNDhjMzI0ZDcxNGQ5NjUgcHkzaworODcxNzMgNzA0MzZiNDZlNDM0ZDJkOTJlODY0ODc0OTcxYTMzYWYwYTU0YWQ0ZiBweTNrCis4NzE3NCBiMWJkZWY1Njk2NmVlMTM0OWZiNjkxMzhiMTE0MzYxNDYzNTgyNTdkIHB5M2sKKzg3MTc1IDhkMzhjNmEyNzE4MWMxZDE1N2Q4NjAwMTdiMzk1NDNlZjYwNmE3NWMgcHkzaworODcxNzYgYTgxMWY3YzEwZTgyNTBmYjRlMzQ0ODFjMTYwNDE1NmNmMjE4YzhkZSBweTNrCis4NzE3NyBmMjJkOTEzMzJkYjk0ZjZhM2Y2MGFkZDI4YThmZTg0MzQwNjRiZTQ1IHB5M2sKKzg3MTc4IDMwNmQ4OGEzMjM1NzIzZDM1M2Q1ZDEyN2Y4NTMwZDZkOTc2YTJlZTUgcmVsZWFzZTMxLW1haW50Cis4NzE3OSBiOTdkODQzZDY0NTYyOTZlYTEzNzQxOGE5NWRiZjk2OWRmZWZjNmQ3IHB5M2sKKzg3MTgwIDI2M2M5OThiMmY0NTljODcxNTYxZTI3ZDQ1MDlhMzJjNGRjMjJmNzIgcHkzaworODcxODEgM2I2Mjg1NTRlMWFhMTVlM2Y4MmNhNzYxYTVmZDhjYTNhZTFlMTBjMiBweTNrCis4NzE4MiA2MTJkZDVmMmFhYjMxYTc2ZGJlOGFlODkxZTNiNDI1Mjg5NjFkNzZkIHB5M2sKKzg3MTgzIGNlMjg3NzY4NzM3MDA2ZTUwOWIxMDlhYzk2NGRhODE3MmFlOTBlYjcgcHkzaworODcxODQgNTNiZGYxYzgxNDg2YmNlZGExZjQ1ODhmNWRhYmIwOTY2OWJkOWMwNSBweTNrCis4NzE4NSAyY2Y3YmIyYmJmYjhlZWY3YjY5NDI0YTZmNjA0MjYwNzU5NTc4Nzk2IHB5M2sKKzg3MTg2IDk5OWIxYWEyNDY3ODNhZWY5MGUyNjc1YThmMzcyYWI1MGFiOGYxYmUgcHkzaworODcxODcgMTU1MzFjYmUzZjU1ZmQzZWNmMWYwZTQ3MzRjOThjYzAwMmE2MDQxYSByZWxlYXNlMzEtbWFpbnQKKzg3MTg4IDBlYWRkMWIyZDI1OGM4MDQ2MjIwN2I5OTczNGJjMWQ2MmIzOWM3OGUgcHkzaworODcxODkgNWJmYTQzNmEyODdiZjA0MDQ3MGIyZTc4ZmRhYjdlZmQzMzE1Zjk0MiBweTNrCis4NzE5MCA3YWNhMzJhMjg5MGVmMjA0YTY4OGYwOWJlNGM1MjM4YWFjNjAwODg5IHB5M2sKKzg3MTkxIDY2ZDllMzg4MTc2MTAyMmEyNzdhOWRlODIzNGFiNDU1ZDU5MGU2OTYgcHkzaworODcxOTIgZDAyZTc2ZGFjZTViZjExZTMxMzc1NzUyZWYyNGU4OTI4ZjBlMzcxOSBweTNrCis4NzE5MyA1NTRmMjZjZTMzZTE5OTljY2Y5MjZjMGJiZDcyZDg4YWNkYTIyMjU3IHB5M2sKKzg3MTk0IDMyNDJmZDE3NzE2NjRlYjA3NGYwNjc4YjI1MGI1OWViMzRhMWNiOTAgcHkzaworODcxOTUgYjc0MDUxY2FkNzE3ODIzNzA3ZWEwNDczYTBhODBhZDg4MWIxYWJiMiByZWxlYXNlMzEtbWFpbnQKKzg3MTk2IGE5MWIzMTY4ZmNlMjk4MWViZTFmNTczMjZiNzFlYTViZGQxNjU2YTAgcmVsZWFzZTI3LW1haW50Cis4NzE5NyBjZmU3Y2ExYTdiYWIyNDVmNTljYmRmYjMzNjM1ZGMzODA2NDFmOTIyIHB5M2sKKzg3MTk4IGYzMTMwYzJjNDZmNWE0ZWU0M2ExZDNkZDBjNmJlYjVkYjZjYmExOGEgcHkzaworODcxOTkgOTllY2E2MmQ2OTE5OTRiNjgwNmQ5ZTQ1ZWQ3NmJkNmEyY2M4NTg5OSByZWxlYXNlMzEtbWFpbnQKKzg3MjAwIDgwODE3NjJlYjZkMWFlYzFhZTYwOTUxODY4Zjg4ZGNmNmMyYWFhNTQgcmVsZWFzZTMxLW1haW50Cis4NzIwMSAxMGVlNGYzMmI5MWM0MDJjODQ3YTBmNDU1NTVhNTM3MjMzZGUwYjAzIHB5M2sKKzg3MjAyIGI3Y2ZiNWYwZmM1NWIzNjYzNjcwOWNjMTA5ZDcxNTdlOWQ2YjQ3YmYgcHkzaworODcyMDMgZWQyYWMyMTA4NGY0ZDk5MzY0MjU1MWE0M2E1YzhmY2VmYTNiZTcwYiBweTNrCis4NzIwNCAyODcyZjQ2ZTgxOTcwZDRhMDRjOGU1YzNiYjBjZWI0MzdjMmQ3OGM2IHB5M2sKKzg3MjA1IDQ3MDg4ZTVjYjQwMTMxZmVjMzRlM2NlYWEyYzhiNmM1NzJlYjIyM2YgcHkzaworODcyMDYgZWFiOGY5MWY1NzU0ZGQ4N2VkOGJmN2Y2OGRjMjE2MGM1OTQ0NDRkYiBweTNrCis4NzIwNyBkZTA1ZDg0Njc5NWU0Yjc3NjFhMjMyZjM3MzAwOWNkNjIxZTZiNTRkIHB5M2sKKzg3MjA4IGZhM2QwNzg3Mjk5MzQxMTEwZTcxNTMzZGIzZThjYmU2ZDA2NmYzYmIgcHkzaworODcyMDkgMDYyMDZmMDAxYmNkNGM3MjFlMzBiYjI2YjJhODNlOGZjMTQyMzdhZCBweTNrCis4NzIxMCBiYzg4MDliM2U0YmU3ZjVmMWFmMTgzM2JhNTA1NDY3YTM5ZTEyNjdjIHB5M2sKKzg3MjEyIGY3ZTllYThjNjFhMDI3Nzc1M2NmMjYwNmMzN2YwMWMxZTY1NjNiZDAgcHkzaworODcyMTMgNjY4YzQyMThhZTI2ZTczNmZkMmYxZDc1NWQwOWMzMTE3YzNmMzQ0ZiBweTNrCis4NzIxNCA0ZjgxYjVkMzU2Y2NkNDVmNGZjOWVlYWNiZjdiZDE1NWFiNDU2YmUzIHB5M2sKKzg3MjE1IDc5NGY1NGJiOTcxMzgwYzQ0MzhkOTg1NDFiNmM3ZWMyYzVhZDRlYmEgcHkzaworODcyMTYgZjhjZjk3MzE0YWVlYWUzNjBmNGY5OWYyNzRhZjYxODBjYTdkMzdiZiBweTNrCis4NzIxNyBjMjg3NzExNzdmYzQwNWZkMDJlYTM0NWFhOTViMGM0MjVhMGFmZWRiIHB5M2sKKzg3MjE4IDE5MTE2MTkxZDUyZDhhYjNkOWVmYTZiZmQ1ODcyNTUyOGU0OTJlNDQgcmVsZWFzZTMxLW1haW50Cis4NzIxOSBiYWYwZDE4OWVkMDczNGI3NGYyZDE0MzNlNWUzOTA1NDA4ODMwZGI5IHJlbGVhc2UyNy1tYWludAorODcyMjAgMTZiNmFlNzVkZTk0NjgyMDNjZjBlMzg4ODI3MzU3MDI5YjExODdhYSByZWxlYXNlMjctbWFpbnQKKzg3MjIxIDEwYmZkM2MxMjlkYWUyNzFiYWQ2NzZkNzYyZGRlY2Y0ZTVmMmViMmYgcHkzaworODcyMjIgMjYyYmEwYWI0ZTIxZWYxZTc5YzYwMmMzNjZlODAwODA4ZmExNTcxNCBweTNrCis4NzIyMyA3ZjhjZGNmYmIwOGUxODM1ZmRkNDFkODcwZDFmM2MwZTllYTVlMjg3IHJlbGVhc2UzMS1tYWludAorODcyMjQgYWM4ZGE1NTc4NDkzYzRkNGIwMDliNTllYmE1ZmJhZDdjMDdiM2M0NyByZWxlYXNlMjctbWFpbnQKKzg3MjI1IGIwODRiNTBlNGFhNmRjOTE4M2RjMGU4Mjc2NDg3ZDk1NzY4OGI4MmQgcHkzaworODcyMjYgNzFmYjAzMjc0YTg5Y2MzYTY5NzljYzE0ZDc2NzNjN2E2MTUxMTU0ZSByZWxlYXNlMzEtbWFpbnQKKzg3MjI3IDlhYzg2OTlkODhkNjFkYjMxZGRkNGVlM2I1YWRkZTQ0OTUzMTNhZmQgcmVsZWFzZTI3LW1haW50Cis4NzIyOCA2ZjQ2YWZjNTE0MzRjYTg5MTA5Njc5YTFhOGYyNTUyMmJiMGM2NWI5IHB5M2sKKzg3MjI5IDU5YjQzZGMzNDE1ODUyOWJhMjA4ZGVkZWJkZDczZmRjZTM4MWE3NGQgcHkzaworODcyMzAgZGEyMGU3YTAxZmE2M2E2ZDhhYjM0ZjIxMGRhMTI4Y2U0NDE1NjRlZSBweTNrCis4NzIzMSA2OWI4NTk2NGVjODg4MzgwMDkxOTc5YTE3NTgwNjdiMDRmZjM3NjcwIHJlbGVhc2UzMS1tYWludAorODcyMzIgOGNjZjU4YjBhNWRhNzc2MDA2ZDdmYzk4ZDllNjk3NWM4MjI2NWE3OCByZWxlYXNlMjctbWFpbnQKKzg3MjMzIDc2NzQyMDgwOGE2MmFlZmEzMWI0Y2FhZDFmNjMwMTRhNWViN2ZjMGEgcHkzaworODcyMzQgMDcyZWUzZjc0M2MyMWYzNzcwY2NmMTNhZDQ4ZTEwYTE4MDQ4MDYzZiByZWxlYXNlMjctbWFpbnQKKzg3MjM1IGIwNjZiZDBiNjRlN2NmNjg0MmY4OGQ5ODZmYzljMjlkN2MzNTJiNDMgcmVsZWFzZTMxLW1haW50Cis4NzIzNiAxMjM4MWYxOWUyYWRmYzhmMTY4NTBlOWM2NWM2Y2E2NzE2NzAyOGMxIHB5M2sKKzg3MjM3IDMxMTBkNGE0ODg3OGI0ZDUxN2MyMDMwMjRiNzZhMGM2N2M4N2ZjNDAgcmVsZWFzZTMxLW1haW50Cis4NzIzOCBmM2FkNTJmNjZiOGE0MmE1NzkzOTMyYzcyMmQwNDlmODljMjZlZGM4IHB5M2sKKzg3MjM5IDZhZmJlNDYxMmQ0OTQzYmY3ZGQzYjVkNDg1YjdiNGUyNzhjNTU5OTQgcmVsZWFzZTMxLW1haW50Cis4NzI0MCA3OWEyYjZhMTI4MDUxMWRmYmYzYjg4NWZhMDBhZTg2NzA4NDA4MDExIHJlbGVhc2UyNy1tYWludAorODcyNDEgZDE4ZjQzMTNiMTk3ZTU2YjJiMjIxZDQzODE2ODI4M2IzY2RmMGJhOCBweTNrCis4NzI0MiA3ODNmMzExY2E4NjkzY2VlMDMyZGZkZDQ3OWRhNWU2MWIwNTFkYTVlIHJlbGVhc2UzMS1tYWludAorODcyNDMgOGQ3MTcxYjNjZGQ2OWE3Mzg3OGVhYzA5NDA4OWQwZTdlYjM0ZGQ1MCByZWxlYXNlMjctbWFpbnQKKzg3MjQ1IGUxNTY1MTlhMWM2MDM3NDRmNzE3MmVlYzdkNzc4NDQ5ZTJjZDg5MTUgcHkzaworODcyNDYgMzhhYWE3MmMwMTMxYTk1NjkyODAxNjYxNTMyMDA3MTg5MDA1ZjJmOCBweTNrCis4NzI0NyBkNmNjYmQzZjViNDU1MWNlNGZlMmQzZDBmMDM0YTc2ZTk2NzJkZmY2IHB5M2sKKzg3MjQ4IDQwZjU0MzYzNjg0NmM3OGI2YzBiYzYxNDk2YmY2MTg0MjFlMWEzMDIgcHkzaworODcyNDkgZjlkMDk1NTk2ZWE5NjQwMWRkOTIwOTJhNThmOWU5YTk0MDNlNzA1YSByZWxlYXNlMzEtbWFpbnQKKzg3MjUwIGQ3MDlkMTE0Y2RlM2MwNWM0YTA3NDU2ZGNjYmNkMjVhYjVjYTBjNDYgcmVsZWFzZTI3LW1haW50Cis4NzI1MSA1MzFmNDIzYjAxOWQzMWY1MWUwYWRjNDlhNjgwZGJhMTlmYmUyNjZhIHB5M2sKKzg3MjUyIDdjMzcxNWIxMGNkZDQ1YmUyYmVmNmIyMDI4ZDMwOWRjNDdiMTVlYmUgcmVsZWFzZTMxLW1haW50Cis4NzI1NSA0ZWU0MDg2ZGQxYjc0MDVkMGJjMjg4ODg5NzQ2MWQ2ZjU3Y2QxZGFhIHJlbGVhc2UyNy1tYWludAorODcyNTYgYTYxNTQ0Nzc4ZmE3NDFjOTg1NWY5MTVhN2JjYTc2ZTk0NDgzYTI4MyBweTNrCis4NzI1OCAxYzAyN2EwODNhNmU5MGI3YjM5ZmI3MWQ3NjI3YjdkZDg2YTFkZDBhIHB5M2sKKzg3MjYwIDhlNzAxYmZmZTZlMmMwYjJlMzdhODE5ZGUyZjA3YzNjZWFkZTc4MGQgcHkzaworODcyNjEgMTc4NThhYjJjZDkyYTQ4MDk4NjQ5YzA0NWI0NThjZjY3Mjk0YWQ2YiBweTNrCis4NzI2MiBjZmI3ZjYzMjJmYmJiYWFiZmRkOWViN2Q5MjNlMGNiYTBlMjNjNzBlIHB5M2sKKzg3MjYzIDc5YTkwZmEwNzlhOGJmMTgwMjdkMTUyN2ZlMTZiYmM0ODg5MWE5NGYgcHkzaworODcyNjQgYWE0MjhhYTliNjhiMmE3MjI3NzU2MTc1YzIwMTI0NzZiNGE3NDg5OCBweTNrCis4NzI2NSA0MDEyNWNkZGFmYjkwNTI5ZDEyZWQwNWQ5MWZiMzQzZGE5OTZhYjVkIHB5M2sKKzg3MjY2IGE5NmEyYmNjZGY4YTI3YTEyM2M2Nzc2ZWMyMTMyNjllYmZhODMyZTIgcHkzaworODcyNjcgMDE5YWQ5ZjMyYzEzZThhYmFhMjcwZGYxMTA4NWNkZWVlNDM3NWVlMCBweTNrCis4NzI2OCA0NzE2MzA4NDA0MjYzZWIxOWM1MmNlMjk2YThhNDY4MDA2MTUxOWNhIHB5M2sKKzg3MjY5IGFmZTVmNmIxYzc2Njc3NzFjMWE4MjhkOTc3YjJlZmE4NDc2Y2UwMWQgcHkzaworODcyNzAgMjNkZGJkODM1OTUwYjg5YzE5OGQ2NjA5NTgyMTJlM2U1MGRmMjk1MSBweTNrCis4NzI3MSBhMGZjYWQ5MDcwYWQxYzdjOWJjMTIyYzQ2YWViYjFhZDQ2OGE1NDI0IHB5M2sKKzg3MjcyIDZkYTM3YzM0ZjhhMzAzMjQwZThiZGJmNTFhMTdiMWViYmNiYWEzYTEgcHkzaworODcyNzMgYjU4MDkyNzg3MjEzNzc0NGIxOWFjZjhmMmYzYjk2M2NiZWZiYWVkMiBweTNrCis4NzI3NCA0ZGNlYzE0NmI5OWQ0NmVlZTQ1YzQ1MTdjODRkM2JhNWM5MDdmMDM4IHB5M2sKKzg3Mjc1IGEyOGU4NzIxMTE3YzI2YzQ3ODYzN2Y3ZGNmZDkxNjViNjI5ZmVkZTQgcHkzaworODcyNzYgOWEyZTU2ZDExNDZkZjI4MzBjOWY2Nzg0ZmFiYmE0NDU4ZDQ2Njg1OCBweTNrCis4NzI3NyAyZDI5OTdmMTllOTBjNTk4NmE0YjI4OTY3ODQ0OTc0OThmODZhNWU2IHB5M2sKKzg3Mjc4IDI2MTMxODNlYzAyNTFiMGM4N2FmM2EwYjg2OGZjOTQzODg1M2ZjZDUgcmVsZWFzZTMxLW1haW50Cis4NzI3OSA1YjQ0MDU5MjQ3ZGI2MmJhODhmNWQ3NWMzMGNmMzA5ZDZmOWM1YTVkIHJlbGVhc2UyNy1tYWludAorODcyODAgMDBmN2Y1MWNlOGJhNTk0N2IxMjI1NTlmNjZhMTc3NWU4YWZlNjQ4MiBweTNrCis4NzI4MSBmZjA3YTA2ZjZkNjVkMGEzMDE2N2U5MWZiMjY3YTI3OTBhNGM5YmZmIHJlbGVhc2UzMS1tYWludAorODcyODIgM2I1Y2M2NjM4ZjNkMTBkNDgxNjVkNDBiZjQzMWFkMWZlMGY4YjYxMyByZWxlYXNlMjctbWFpbnQKKzg3MjgzIDVlYzJjMmJmYWRlZDUyMzEwZGIxMmYyYWMwODgzNTk3NzBiZDA1NzkgcHkzaworODcyODQgOWNjMTk3OGVjOWQ0OThjNDkxMjMzZjdhNWRjMWY0ZTZlZTAwOWNlZCBweTNrCis4NzI4NSA5YjE1OTRjMTU0NGI3ZWNjODc0MzQ2NmU3MWMwNzQyMzE2MzMxM2E1IHJlbGVhc2UzMS1tYWludAorODcyODcgODBlM2FkNWE2MzFkNTc1M2EzMGQ3MGRiOWZjM2IyMTc2YzI5MjQzZiByZWxlYXNlMjctbWFpbnQKKzg3Mjg4IDRhZTJjMjExMTZmMWRmM2RkYThkYzMwNjBmOTRlYWI3ODNlYWQwOTggcHkzaworODcyODkgN2Y1NDk5MDhiZjUwMzJhOWZhNDAyZDdjODJhZDZkMWNlNmRmY2M5ZiBweTNrCis4NzI5MCBhNTFhNGY1ZTg3ZTQ5ZTIzYjA4NjU1NjBhY2FkYjU5ZTI1M2JiNTFjIHJlbGVhc2UzMS1tYWludAorODcyOTEgNTY5OTk0OTVhOWJhYzViYjQ1YjU3MjczNDEyODdjMTFlNjEyZWQ3MSByZWxlYXNlMjctbWFpbnQKKzg3MjkyIGI3NTBjNDVhNzcyY2U4YmQ5NjFlMTU2M2I3YTQ1MDQzNjY4ZjI2NjQgcHkzaworODcyOTMgZjU5Y2RhNTdhN2ZhODMzOTQwODJlNzBmYTVkZTlkMzdiZDFlYjY0YSBweTNrCis4NzI5NCBhZDliNWM1ZDI4MzFmNGJkMDI1ZWMxNmU2YzRmMzQ5ZGM0MGY5YmFlIHB5M2sKKzg3Mjk1IGQyZDUyNmRiMjc3MzZhY2JiZTQwYTg3ZDI4YzFiM2YzMTVmOTVjYWIgcHkzaworODcyOTYgY2E3YTVkMTI3ZDU3Y2RkNGFlNjM2MTU5ZWM4NTc2ZTAwOWNjZTE5YSBweTNrCis4NzI5NyBlY2QyOGU4NGM0NGIwZjRjNGU3N2M5NmI1Mjk3MGRhODgwYWZkNDQ4IHB5M2sKKzg3Mjk4IDljMWZjZWRlZjJjMTlkNWY1Zjk5YzcxMWMwYWVjNjE2MTQxYjQ1ODggcHkzaworODcyOTkgM2RlNmNkOTAyNjI0YzdiOTA4ZjBlMGJhZjBhNTg0ZTdkNzJjMmQ1MyBweTNrCis4NzMwMCAzZjE3NTJkNDI1M2JiMTNmZDlhMTlhZjUzYTEwNzViZDE5YmQ2YTU5IHB5M2sKKzg3MzAxIDFhYTRlNWNhOTE3NDIxNzQzN2UxOWRjYTk1Njg1NGZlMTZjOWE5MWUgcHkzaworODczMDIgZGU1YjkwZGFhYmI0MmUxMjE0N2I5OTMxMDY4NTczYmMxZmQ1YzI5ZiBweTNrCis4NzMwMyBlMDhjMjBhNjdmNjQ3ZmVhZDg3OGYzMjM3ZDg3MTAyNzY1ODliNTZiIHB5M2sKKzg3MzA0IGE2MTgyODdlYWZkNjU4YjE5ZjhiMGU2ODgxNzYzYjEzMTUxZjAyMjYgcHkzaworODczMDUgMDAzN2Q2NWRlYmQ4ZDk4YzllNDEyN2U3YTAwOWZhZmYzMGE5YTIyMCByZWxlYXNlMzEtbWFpbnQKKzg3MzA2IDdlOGViNjM0ZjBhOTFjNTQ3ZTg3ZWYyNzRiMjA5MmJjZmQwMGMwZTEgcHkzaworODczMDcgMmFhMDUwYTQ0YWE4MWY0NjUwYTc1ZWQ3MGEzMWRiMzBjMThjZmI3YyByZWxlYXNlMzEtbWFpbnQKKzg3MzA4IDU5ZTIzMDI5N2JmZmFkZGQ0ZDM2ZDNlYzk5YmYwYmFjYmI2MjliNGMgcmVsZWFzZTI3LW1haW50Cis4NzMxMCBkODRlYzg1NjAwYjFhOTgwNGQ2YjU0ZTk1MmQ1ODA1YzY5ZDA4MjY2IHJlbGVhc2UyNy1tYWludAorODczMTEgZmQ3MjYxNGI5MDMyMTAxYTU3YTQzYTRiMDBmNzkzMGQ3OTEyODE4NyByZWxlYXNlMjctbWFpbnQKKzg3MzEyIDRjMDYxOWI4MzJlMWJjZTNlMjc2YzNjYjBmYTI0ZjdlNDcyYTQ0ODkgcHkzaworODczMTMgZDliNDQyNjQ3OWFjNjE3OGVlN2JlNWY3YjAyMGFlMDNhZTI4M2VjNyByZWxlYXNlMzEtbWFpbnQKKzg3MzE0IGM2ODgzZWM0ODg4MDQyYjNmODMwMmQ4MTA2ZWNiZTNhOGRhNTlhZjcgcmVsZWFzZTI3LW1haW50Cis4NzMxNSA1YjkyZmIwMmU4M2JjNWZjOWI4NzA1YjdiNmYwN2MwZTIwYTExN2ZjIHB5M2sKKzg3MzE2IGFiNjUwMDMzNDZjMTFhMTUxYzUyYjBkN2MyYTQ4NzAyOTgwMjcyYWUgcHkzaworODczMTcgNDM2YmJjN2YwYWE2OGFhNzU2NTk1YTA2NTZhMmNkNGQwOGRmMDdlOCBweTNrCis4NzMxOCBkYzMyNzg4ZjBlNGUzMjU4YmJkOTllNTRmN2Q1YTE2ZDkwZjkzYzdkIHJlbGVhc2UzMS1tYWludAorODczMTkgZmMyZjBjODZiNDk3Y2I5MzhkNTRiZDBjYmNhMDg2ZjU1ZTgzZWVhNCByZWxlYXNlMzEtbWFpbnQKKzg3MzIwIDJjNDI5ZDhjNWVlMjAyYTM3MjM4MDNkNjM3N2NmZjU4NDZiNjBkMTEgcmVsZWFzZTI3LW1haW50Cis4NzMyMSA4NWMyZmUzMWIxMWVjMDk4NDZkZWNlZGJjODVkM2Q2Njg3ZGU3NDhmIHJlbGVhc2UzMS1tYWludAorODczMjIgNGQyYjQyOGQ3ODgyMjU4YTQxYTQ3NGI4ZmIzZjI3NjFjMDBmYjJhMiByZWxlYXNlMjctbWFpbnQKKzg3MzIzIGU5ZDkyNGZlMzdlMDNhMzA1ZTZhNmVjZTJiNTY4ZDJmY2Y1OGNkMzUgcHkzaworODczMjQgZWE4Zjk0Y2U4MjkzMjY5NmRlMmVjZWMzNmYyZDJhY2Q1NTBmMDNlNyBweTNrCis4NzMyNSBhZWQyYmJhZmE1NTBlOWRmZGY0MWQzMjI4NTdmMDI0Yjc1YjRjNzZkIHJlbGVhc2UzMS1tYWludAorODczMjYgMjM5MWNlMzVhZDY5N2YyYjI2NDM3MDYzZGVmOWQ4NWE5NTg2MTZkYyByZWxlYXNlMjctbWFpbnQKKzg3MzI3IDliZmQ2YWJmMDFjYTI5Y2RlNGZiZWVjOTBmOGUyNDg3OTdhYTdmNzcgcHkzaworODczMjggMDc0YzIxNzE0YTAyNzhlNDgyOTM0OTVjMzk5NDQxZTA1NWU0MjEyYiBweTNrCis4NzMyOSAwYzJhN2U1Nzg1Yzg2MTEyY2NkYWE1ZTI5OGJjNjJkMTE5OTgyOTk3IHB5M2sKKzg3MzMwIDdhNTViODA4ZTQ5MWMxMDI3NjYyMDExNTQyNGEyNmQ5ZTIyY2U3MzMgcmVsZWFzZTMxLW1haW50Cis4NzMzMSA2OWIzYTE1MWFlYzU3NDMyMTkzZDM2ZWViOWZmMzRjZTM5YmU4ZTU1IHJlbGVhc2UyNy1tYWludAorODczMzcgMDcxMTNkMWVmOGU1MWE1MmZkNTQ3ZGRhNjcxMGYxNWE2MzIwMzgyOSBweTNrCis4NzMzOCA2MTkzNWM4ZGMwOWUwZGI1Yzk2NjI2NWRmYjgwOTQ0NTdmNWE1ZTc1IHB5M2sKKzg3MzM5IDAxNmI0MjVmMGNkMGNlNDRlYjM0ZmMzNzU2M2RmZjBjOWJiZjIyNGIgcHkzaworODczNDAgYjZkM2ZlNzA4MDJmMzI5MGQ2M2FkYjViOThmY2E3YjRlNDA3MWZkYyBweTNrCis4NzM0MSA1YTZhMWNhMjRlMDRjZmFhMTVmNzcxM2JiNzc0MTNiOWY1MTM5NGQ1IHB5M2sKKzg3MzQyIGM3MGFhMDExYzA1OTg1ZTQ2MmViZGQ0NmZlMTlmNDIwYzQ2Y2FmNWIgcmVsZWFzZTMxLW1haW50Cis4NzM0MyAzNDFiOTNkODMxNTcxZDg0OGFjYWU2ZGIxODNlNzRkYWVlMGI2NDIzIHJlbGVhc2UyNy1tYWludAorODczNDQgMjJkYjRkMmY2NTU0OTg5OTlkYTUyOGVmYzNjYjM5ZDA0NWEyNWIwNyBweTNrCis4NzM0NSAwNTUwYTI0NDdjMWU2MzFhMDM5YTc0OGNmOWNlOTdiNjA3OWJhNDlhIHB5M2sKKzg3MzQ2IDNhMjk1M2UyMWY3ODU3MzQ2ODdmMWQ3Yzk1MzhhMjFjZWYzZTU0NmMgcHkzaworODczNDggNWJiZjViNmQzNjU4MDUyNWM0N2E1YzdiYjczYTFlMGNhNzJiODcyNSBweTNrCis4NzM0OSBhYzhjNmM3YzBjYjM1Njc1NGQ5YTk0MTc1ZGYwNDk3NDFmNzk1ZGVhIHJlbGVhc2UyNy1tYWludAorODczNTAgODkyMjM2MTM3ZGI5NjE4MTJiNDllYTljZmNmNWMwZTFiMTU5OGVlOSBweTNrCis4NzM1MSA0M2JjNTkyMmYyOTkwNjQ1YzUxMzVmZTYzZTYwNjJmOTE2OWU3ZTJkIHB5M2sKKzg3MzUyIDYxYmM4NjI2NjdlNmUzZDlmM2IxM2E1NTFjNDIxNTJjMDNkY2I5ZDcgcHkzaworODczNTMgMjZjMGY3NjllOWI0NzFkMWI5MGI3NzU5YTZiYjdiNTlmMGQ3NWExMSBweTNrCis4NzM1NCAyODcxN2RlNGM1NjJjYzNhOWQxYWYzZDk3NjdmNmMwOGVkOTRmNTRiIHB5M2sKKzg3MzU1IDQwOWJhMjUwODcxMjI4ODRlYTA2NmY4ZTIzNzVmMWJjM2I5Njc5ODIgcHkzaworODczNTYgYTVlZDRhMTI0MzBhYTdiMWRmODdkM2M1ODUwZWMwODdkYjE0M2FlMyBweTNrCis4NzM1NyA4ODRiMTRlZDhmNTQzZGQ3NmExMDc0NTU4YzhhNmIxNDdjMzcyYWVlIHJlbGVhc2UzMS1tYWludAorODczNTggNjhhNDJiOTQ0ZmUzOThhYTZiNDk0NGJjYzljMGQyMjUwNzQ5ZDBkZSByZWxlYXNlMjctbWFpbnQKKzg3MzU5IGNkMjdjM2M0NDIzNGFmZWU1YTU0MmIxOGNmNGI3NzhhOTgzOGNhNGQgcHkzaworODczNjAgYTBhOTk1ZTBlNjQwMTlmNmMwYjg2MTUyOTk5OWZhODhmNTJkMTZhMCBweTNrCis4NzM2MSA3OGMxNTIyODhmNTNhOGZkMzNjM2Y2ZTQ0MzY5ZWUyYzk4MGI0ZDk3IHB5M2sKKzg3MzYyIDRjMDQyNjI2MTE0ODMxZjcxZGQ3MGNkMjQzYmU1NGM4NzIyMDhiYjEgcHkzaworODczNjMgYmYzNmQ2YmRkZTYwYjRhZjA1MGIzZTVkOWE0Y2JhN2MyMDVlYzVjYSBweTNrCis4NzM2NCA5Y2YxNTEyZjg4MTJjMjAwMWUwZTc1MWQ2ZjkyY2RjNWEyMGZmNmFlIHB5M2sKKzg3MzY1IGM3YTA1MzdjN2YzYzI4NjcwOGU1ZmIyNGRiYmI5OWViNzNkODIyODYgcHkzaworODczNjYgYTA2NjQ3ZmY1ZDk4MThlMWZkMTlmNTAwNmM1NDkwMjA5OTRjZTc5NSBweTNrCis4NzM2NyBlNjVjZDIxZDVmNzMxNGVlN2E1MTA4NDQxY2E5NjQ3YTQ1YmFiZmUwIHB5M2sKKzg3MzY4IGZlN2E4YTFiZGYzZDZiYzcyMTAzMDI2MjYyZWFhZjc2MzM4NzY1YWQgcHkzaworODczNjkgNzJmNTM2ZDEwNzUwZjRiOGYxNGQzZmM0NGNiYjMxZjkwMDRmY2VhYiByZWxlYXNlMjctbWFpbnQKKzg3MzcwIDZmZTk0ZmMwMmZjNzU4ZDMwZWQ3NGU1YzgxMTNlMmY2NzVjOTEyY2YgcmVsZWFzZTMxLW1haW50Cis4NzM3MSA3YWMwM2VjM2IyNzhiOTVkOTViMzU5YjZhYzA5NzI3YmZhYTFjMGFhIHB5M2sKKzg3MzcyIDhhZGI3NWM2OTMwNDcyODc0YmExMzU2MTBmMzZiMjVmMjQwNDY0ZmIgcHkzaworODczNzMgMGI5NDYzNWVkMmY2ZmE4OTM5MzM5YzQyNjI4NDQwYTMzNjM2NjQxNSBweTNrCis4NzM3NCA0NDAxMDAzOWJkZGZhNjk5ZDQ4YWZhZDc1YTc1ZjY4MGMzNWFiNWI5IHB5M2sKKzg3Mzc1IDM4MTU1NjM2OWNhZjZhMmVmMzRkZTNiM2JhOTA3OTE2YWNiNjViYjMgcmVsZWFzZTMxLW1haW50Cis4NzM3NiA1ZjQ5ZDNjYjE5NGY5NzBkNTExOTlkMWMzOWYzMzllNmRkZTBmOGI4IHJlbGVhc2UyNy1tYWludAorODczNzcgNzM2OTY0ZjcwOGRlYzIzOGZjNTFhMDczZjBjYTlhZGUwNDUwMzhiMiBweTNrCis4NzM3OCAyOWRiOTdjMTc2YzljZDlkMDE1MDFhMmZhMjQ3NGJmNGE5ODY4NzNjIHB5M2sKKzg3Mzc5IDUxNWRlMjI3NzAwMTg0ZDEzZTc0ZDE5YTZhOWI3MGU1OGI1NmMyZDMgcmVsZWFzZTMxLW1haW50Cis4NzM4MCA3YTQ4NTkwYWZkOTJlNGJmOGYyYTgxYzU4ZWQ4NDk4YzQ3ZGM4NDFkIHJlbGVhc2UyNy1tYWludAorODczODEgYzJkNWNkMDMyYmM5MTYxZjk0MjViYzk0MWI5Y2FkMjRlY2RhNjk5NiBweTNrCis4NzM4MiAzYzE4MmY3MWQ0YzljNTY2MDdlYWFmZTdjNGI2NTU3YTBmZmUzOTdlIHJlbGVhc2UzMS1tYWludAorODczODMgOTY1MzE0ZjEyZjcxOWRiOWMzZWZhNTIyMGFmNjRmYmVkNGI1MWZjMCByZWxlYXNlMjctbWFpbnQKKzg3Mzg0IDkzODVjNTM2ZjQ1NDgwMjc5NzEyZWRhYzg2YmJkNjNiODg3NjI4NTYgcHkzaworODczODUgZWU5YmRhY2QzY2I2MTAwOTk5NzliOWM3MGJiZTFkZGY3NjExMjMzMCByZWxlYXNlMzEtbWFpbnQKKzg3Mzg2IDBhZjk0Zjk3NmQ1MDE4ZmQyYzViMDZiY2Y1Yjg0OTRmOTMxMjg2ZGIgcmVsZWFzZTI3LW1haW50Cis4NzM4NyBkYWU1MTc2ZDdiN2YzMDBjMjJlMWIwMGQ2MTkyOGJhNDI3YzQ5YWFlIHJlbGVhc2UzMS1tYWludAorODczODggZDE2YWRkNTZkYWMwMzRiOWVjY2RhMGM4Y2E2N2JlZWY5ZDEwNGIxNiByZWxlYXNlMjctbWFpbnQKKzg3Mzg5IDU1MmJhYzc1NThlNzc5MmIwYjQxYjE3ZTY4Zjk4MDdkOWU1YmE0NTIgcHkzaworODczOTAgNGUyMjIwMmU2MmY4M2NkMTIzMGEyYTBjM2QzZGQxODMyN2MyMDk4NyBweTNrCis4NzM5MSA5ZmI4OWZhYTU5NTgzM2EyMDA0OWQzNzNjNWQyYjk0ZmJjZWNjM2MzIHB5M2sKKzg3MzkyIDRlMmI4NjBlNjU3YzlhYmI0MmRiYzM1YzI0MzdlNzYyMjUwNjYyYzAgcHkzaworODczOTMgZTU4ZmE5ODNhOTRlZjhjZmMwYWIyNTFlYjk2ZWZhMjAxOTQxZWRjZCBweTNrCis4NzM5NCA0ZmFmZTk3ZDBhZGJhNmYwNDAzMjkyMmQ1MGUwNDdlYzMwYWViYzQzIHB5M2sKKzg3Mzk1IDViODAyNmZhYTBhNzNkNjE3OTE1NzZmN2I1ZjQ3ZWM4NTAxMDYyZWUgcHkzaworODczOTYgMTNiNGEwZjUyYzJjMmNiZjRkZDZkNmQzMmZjYWZmYzQyOGNiNjU3NSBweTNrCis4NzM5NyA3YzMwZDBmMTAyOGM0ZDM3NTQ2YjY1MTg5NTUwNmJmMmUzOGI1MzhmIHB5M2sKKzg3Mzk4IDQ3Y2M0ODk2NWU1MjUzNDhiZmRiYzQ0YWE5MGNjMmU0YzJmY2MxOTEgcHkzaworODczOTkgNmY1NmIyNDdhN2NkMjgyMzNjYjA4NzU3ZmEyODRjMzgwMWQzMzdmOSBweTNrCis4NzQwMCBlM2FmNWYzYTc5MDRjMGQ1MzQzZWM5NjMzZWE2NmU3YWNmZDIzYTY2IHB5M2sKKzg3NDAxIDliMjYyNDg4MzBmNjVjYTYxZGU4ZDc2MmExYmZmYmM5NzYwYTZiZmIgcHkzaworODc0MDIgZmM5NmJkMThiZGM2MWM1ODkyNDIwMzAwMTZkYjEwNmEwOGE0MzI4NSBweTNrCis4NzQwMyA2ZDU2MjdhMDY2Nzc4ZGRkOWIxZWI2NjUzNzZkZDJlYzRiYTI1ZTdjIHB5M2sKKzg3NDA1IDNkODZjZDlmYzUzNGFlZmFhZjU3MzZjYmQ0M2FlZjk4NmE4OWM5NDUgcmVsZWFzZTI3LW1haW50Cis4NzQwNiAwYzRhZmM1ZjU5MzhlMjdiZTk1MDIxM2I5YTU5YmM5MmZlYzRkYmM1IHJlbGVhc2UyNy1tYWludAorODc0MDcgNDdkYmYzZWMxYWQ3ZDgyOWQxNmQzODQzODhjMjlhYjMxN2YzZDQyZCByZWxlYXNlMjctbWFpbnQKKzg3NDA4IDI0ODk0ZmE3YzU4YzUwYzViZmE2OGI3OTdlNjkyM2QxM2Y1ZDAxOTMgcHkzaworODc0MDkgNTE3OTRhZGE2ODEwYWY0OThkNTcyMWM0MzU2ZDI2YTMwNGIyODE3ZCByZWxlYXNlMjctbWFpbnQKKzg3NDEwIDIyYTBlYTdkOTc0ZWI2ZDIzNmJhYWEzOTQ0NjE0MGZhYTk3YzkwMjkgcmVsZWFzZTMxLW1haW50Cis4NzQxMSBmNTY3YTZjODU5MzY0NWQ4Nzc2NzM0ZjM1YjMyM2VhZThiNmMzYjM0IHB5M2sKKzg3NDEyIGZjYWE5ODdjY2VhMDIwNjI3YzRmMGY3OTc2NTY3MjJmMWFmZTA1NjEgcmVsZWFzZTMxLW1haW50Cis4NzQxMyAzNjcxOThiNzMzY2RiYjQyNjZmYTE0MTM4ZmJjODAzNmI2M2ExMDI0IHJlbGVhc2UyNy1tYWludAorODc0MTQgYjE2OGIyY2MxYjIxZDJlMjQzYThhNmNlOTExN2ViNjVjNjNhMzNkZiByZWxlYXNlMjctbWFpbnQKKzg3NDE1IDgxNWI2OTE3NTVmYTBiZmMyNDRiMzUyNTU5MjFkMjY1ZTdmNDNmZjggcHkzaworODc0MTYgODY4NTcxMTU4NmQ0MzFlYzZiZDVkMzVjMDdmMDE0Y2FjZjBhZTZiNCByZWxlYXNlMzEtbWFpbnQKKzg3NDE3IDU2NGE0MTY2NmVmNmY0YjE2MjVjNzZkZjUyZDYxYTFlYWEzYTE5NDkgcmVsZWFzZTI3LW1haW50Cis4NzQxOCA4YjUzZjI1NjE1OWFhM2FhYjg0MGFkOGQzM2U0MzJhMmY2MjkxNWE2IHB5M2sKKzg3NDE5IDUyZDI5YzcxNThmZTIwNzkyYTMzMTQ5Njc2NDVlNzc0OTAzMDViMWUgcmVsZWFzZTMxLW1haW50Cis4NzQyMCBjZDFkZWU1NWFjZTg0ZWU2OWM5NmFlYzE0Y2I5ZTM1OTlkMDQ2NGYwIHJlbGVhc2UyNy1tYWludAorODc0MjEgMjA0YmY0MzNkMzY2YTMwN2U0NmQ5ZmJjYzI5NTNmN2UyYzNkYzJkOSBweTNrCis4NzQyMiAwOThjOTdlOTVkOTMxOWY1Yzc2ZWIzOGQ2Yjg1ZWQxNDI5MzY0ZTAwIHJlbGVhc2UzMS1tYWludAorODc0MjMgMGRhZjM5MWExZjFkZjg2OGQ3MDBmNDlkNzdmZWJhZDlkM2JhMGMyMSByZWxlYXNlMjctbWFpbnQKKzg3NDI0IGQ1YzhjZTNhNzBkNDg5OGQ1ZjliZmY3ZTQ3NmIwOGYyZjIwNWUwZjMgcHkzaworODc0MjUgMmYyZGU2Y2M2MmM3ODA0NGQxNjA4NDg4MTU4ODFmYmM0MjBkZTVhYSBweTNrCis4NzQyNiA1NzJmNzNmZjI4YzIyMmZlNDAyZWZjYzljODcwNTk1ZmEzNTFjNmY4IHB5M2sKKzg3NDI3IGE4NDIwNGYxMTZmOGI2N2Y0ZTJjMDlhOGM3ZmRjODAxY2M4MzEyOTggcHkzaworODc0MjggNWNmODU1NWU1YmU1NWFlMTI0NmEzZTkwNTUxMGYzOWFhYzNhNTczNCByZWxlYXNlMzEtbWFpbnQKKzg3NDI5IDU5NWYyNTg4MDZlZmYwYWRiY2I1YTQ1OTE2OTM0Mzg0OGRkMTE0ZjggcmVsZWFzZTI3LW1haW50Cis4NzQzMCA0MzhhNDY5ODAwNGFkZDU0ODZjZjdiYzRiY2RjOGQ0MjgzNGVhNGE5IHB5M2sKKzg3NDMxIDU2MWVhNjQwMTg4YjM0NGQ2MDRlYzBhMmRkMTM4MGFjNDEwMjU4ZjQgcmVsZWFzZTMxLW1haW50Cis4NzQzMiAzZjkwNTFkODY2MDMyOTE5MjZhZmQwYzBmYjNlMDE0MDRhMDY3OTQxIHJlbGVhc2UyNy1tYWludAorODc0MzMgOGU3ZDRjMzk3NDU4N2NkMzViNDU5OGMyMjYzNDBjYzAzNmE2NjU0NyBweTNrCis4NzQzNCA1M2E0MWExMTc0MTFiYmIwZjAxNTliZjNlYmEyY2Q1ZWFhYmIwYWVhIHJlbGVhc2UzMS1tYWludAorODc0MzUgYzYzYWNlNWE1MzQ2YmIwYTliMTUyMTM3MjA5MDUwMzJhNGM3NjA1ZiBweTNrCis4NzQzNiBhODJkZjIwOTg1OGE2NGRmZTExY2UxOTc5NjZmMWQ1ZmUxYjQ2ZDM2IHB5M2sKKzg3NDM3IDZmZjUwY2VmOTg0ZWU1NTliMjk5NzdmNDQzYTIzZjdiZjU2MGRiOTcgcHkzaworODc0MzggOTI1MDJiMzY3NGNiZWM3OGNmODJiMjMwYWZkY2FmYzYxZTYzMjNmZSBweTNrCis4NzQzOSA2ZjQ4MzQyZTllM2RmNjliMmU3NmYxOWNlNmIwNDIxZjUxNGI0NjVlIHB5M2sKKzg3NDQwIDk5ZDE0NjNlZGI1NmMxZWQ3NWVjODUxY2QyZmMwYzYxN2U0YjU5ZmYgcHkzaworODc0NDEgODlhNDE2ZmQ3YzI5NzA3YmQ0MWZmODQ1YTc5YzFlZDc2YjA2ZGI0NCBweTNrCis4NzQ0MiA2YTYyM2E3NjcwNjIyYzcyYzNkNTRkODYzZDJkNmQ5YzU4ZTk4NzY3IHB5M2sKKzg3NDQzIGUyMTlmYjQxMzRlM2JkN2Q2YzgyNzcyNTMwYjM2Zjk2NDFhODkyYzEgcHkzaworODc0NDQgNGRjMjQ4YWMyNjRmNTg5MDQxOGYzMjZhOTI1YTEyYjlkYmZlNGExYSByZWxlYXNlMzEtbWFpbnQKKzg3NDQ1IGNmMThkOWU1MWI5ZDYwMDQzM2EzYTdiZGUzZWZmM2RlOTI1ZGFiMjIgcHkzaworODc0NDYgMzZhYzNkOWQ3NGMxNTA1MjlhMWNjYTZlNTRhNDFlZDkyYTI1ZjRjZSBweTNrCis4NzQ0NyA4M2JjZGFkMjUzMzVmOGIyMThhYTEwNWViOWMzNTRkOTQ2OTIwYWU5IHB5M2sKKzg3NDQ4IDEyMWJhMDRmMGZiYjEwMWFiYjM5N2FhYmUwNGY2Y2U5ZThhNjJkNWMgcHkzaworODc0NDkgMjE5MmJiOTVmNTRiMGRhZTFlM2Y4OTU4MGRmOGNlNmQ5Y2MzMTg3YyByZWxlYXNlMzEtbWFpbnQKKzg3NDUwIDkzZjU2MTk0Y2Y1YjgyYzMzYmUyMzdiMGYwYjQzMjM2ODZhNDEyYTAgcmVsZWFzZTI3LW1haW50Cis4NzQ1MSA3NjU3OTZhMzRhYmUxODhkMDQ1OTM1MjZlNmRhZTY2ODAzZDg5NDUyIHB5M2sKKzg3NDUyIDgxOTgyYWNlZDg2YmM5NWM3MzVlMGJiZmU4NzI2ODcyODE2NmY0NWMgcmVsZWFzZTMxLW1haW50Cis4NzQ1MyBiNWQwM2NlYjhkNzkwNzhlMzkzYjdhNDBjMDQ3Yjc4NDIxNjU4M2RhIHJlbGVhc2UyNy1tYWludAorODc0NTQgZDRlMGRhNzYxODhiNjAyNjdhYmE1OGRjODNkMWYzYWRhYzNiZmM5ZiBweTNrCis4NzQ1NSAzYjYxNWVlNzg3YjBmMDY3ZTQ3ZDRmNzUxNTNiMjEzZTU4MzM4MGU0IHB5M2sKKzg3NDU2IGMzNGFjOWY5ZGU4MzE3ZDM2MjZkNjljM2UxNDU1ZjAzODUyMjZiMDkgcmVsZWFzZTMxLW1haW50Cis4NzQ1NyA1YzA4MmYxOTdkZGY3NzNlZDllYjJhMTkxMDg3Njg1NzBkZTljNDNhIHJlbGVhc2UyNy1tYWludAorODc0NTggZmRiOGIwMmMxZTY1YjM1MjNmYmJjZThhYmEyMGNiNDIxMmYzMzFiYyBweTNrCis4NzQ1OSBlMWJmM2MxYzk1NjEzNDI1YWRkZTg1ZDk3YjczNGVmYjlhZDJhMWRiIHB5M2sKKzg3NDYwIGNhZjg5YTZhMTdhN2U4NGJhMGY0YmEyYTE0YjBmYWEzMmM0MDcwYmQgcHkzaworODc0NjEgY2VmMjgxN2VhMTU3MjVlOTRmMDkyNzc1YTE0OTBkNzA1NTcwNjcyNCBweTNrCis4NzQ2MiBkNWZhYTlmZmRmMmE5MzM4NGUyMmRmOGMyMjk5YzQzYTA2OGM4NGExIHB5M2sKKzg3NDYzIDA5NjczMTYyMGZmMmFlYWNjYjU0MjNlNzM5N2NlZjAzNDU0ZjJhNzIgcHkzaworODc0NjQgYzM3ZDZkYjAyYzg0ZDAzZGM2NjI2MGQzYmZiZDk1MTA2NDY0NTJlZCByZWxlYXNlMjctbWFpbnQKKzg3NDY1IGQyYzI4YTM3Zjc2MzA2NzUwNDQyMGU1YTg4OTA5MDcwMGRkN2RjMjYgcmVsZWFzZTMxLW1haW50Cis4NzQ2NiA4OWFlMmMzYjA4NWNjMWIzOTdiNjJjMDhlZWVkZjY3YzJjMmRhNzI4IHB5M2sKKzg3NDY3IDUxMzI0MTU0Zjg5M2Y3YjU1ZTExOWJhMDhlNTgyOTFhMzNiOGI3ZDggcHkzaworODc0NjggMWM1NjBmNGI1ZTViNDlkMDRlMmNjYzIyY2JlNTU5MTA0ZTcwNjU4NiBweTNrCis4NzQ2OSA5NjhkYjNlNWIxZDgwMDA4ZmU2NjI3MGM2Njg3ODNhZmE2MzhmYmJiIHB5M2sKKzg3NDcwIDYxODc2NjFjZGMwODhiYzJiMjAxNjYwZTM3Y2Q5YWVjOWUyNzNmMWIgcHkzaworODc0NzEgMzljZWE5ODA5MDVkM2QyYzMxZWE3MzU2OTI2MGQ0Mjg4ZDFiNmI4NCBweTNrCis4NzQ3MiAyZTk2NzBkNjcwMTczMWU1Y2ZjYjMwODZmNmMyZmRhYjEzNjZkZjJjIHB5M2sKKzg3NDczIGM1MTBjMTUwNWNlNzIzNGViMDM5ZjUwM2VhMWQ2NjlhM2M5YjE2NWUgcHkzaworODc0NzQgNTcwMWE4MDg0MDAxOTE3ZjZmYTJmYzE2YWM5ZTc3ZWI0NzQxNWVmYyBweTNrCis4NzQ3NSA4NGMxZDI2Nzk3MDc4ZmY4ZjAwOTIxNzBkYTczNjIzZGY3ZWUxNDg0IHB5M2sKKzg3NDc2IDJkODJjZGY2MmIyY2RlMmZkNTg1MzZjYTU3NzA0MmE1Nzg0NzQ2YzkgcHkzaworODc0NzcgNmM4YTFjMTE3NjFiNDg5MTI0MjhkNWVhMmRkNjRkMTU5MmE0YzAzNSBweTNrCis4NzQ3OCA4ZTlhNDdkYjM5M2NlZmJlMzgzNGE0OTJjZDg2ODdjYmJlOGY0YWU4IHB5M2sKKzg3NDc5IGVkOGRmNWE5MGNmMTk2MjUwNThkMjJkOTM2ZDFkMTQ0ZjlkOTYyNDAgcHkzaworODc0ODAgOTUwM2IwNjYyNTJkZGIxNzk5YjM4YTIxMjk5YzYxODAxYmY0YjMyOSByZWxlYXNlMzEtbWFpbnQKKzg3NDgxIGQ1MWFmZTQ3ZGU3MzJhNDBiZTVkMTU5Zjc0ZjM5ZTMxMDJjZWE3MGUgcmVsZWFzZTI3LW1haW50Cis4NzQ4MiBmYTRkZTY2YzdkZWViM2M3YzhmZTNiZDE5NzRlMzkwOWQ3Y2M0MzQ2IHB5M2sKKzg3NDgzIGM1NjZjNDEzMTQzOWYxNzc4ZjMxNTMwYjlhMTBkZGY3NDcxZGI5NzEgcHkzaworODc0ODQgYTY3YjQyYmZmNDcxODYyN2ZmZTMxMzA5NTQ1ZGQwMjYxZjFjMGVmYyBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc0ODUgMzhkNjY5ODAxODdlMjg0NjQ1YjA4MWU2YjFmMmIxOWI4OGZlY2Q4NSBweTNrCis4NzQ4NiA2NzhkODMzNmY0YzNkYzY2ZTM1NzNjMjg1N2RhOTQ5MDU2ZTU2NzliIHB5M2sKKzg3NDg3IDFiMjE2MGFkNGM2ZTRhNmI5MTc2MmI0MGRiYWRhOTJmMTdiNjlkODAgcmVsZWFzZTMxLW1haW50Cis4NzQ4OCA0ODhlZDU1MGI3Zjg4OGNlZjhlYjA1YmQ1MTc5MzQxZTE0MjU5YWNmIHJlbGVhc2UyNy1tYWludAorODc0ODkgNGI5MjZhMTNkYzU0MjhmYWFmY2JkZTFmNzBiZWMyZTljYzI2NmU2ZiBweTNrCis4NzQ5MCBhMDE1MzNiMDFiOWM5YmMxNjhmZTdkMTA3NTAzNjkzNzdlMzZiNGQ5IHJlbGVhc2UzMS1tYWludAorODc0OTEgZDViYmM2NWJjMmIzZTAxYTM0ZWFkYjNjNjg1OTA3MGQ2MjBhNGJhNSByZWxlYXNlMjctbWFpbnQKKzg3NDkyIGMxN2E0OTk3MjI0NDE0NzQ4NmE3OTVmYmNkYzJlY2M3NWNkZjZiMGMgcHkzaworODc0OTMgYmYwOWVjZjY4YTE5OTk4NjFiNzFlYTE0MjY4YjdkNDRmOWQwYzMxNiBweTNrCis4NzQ5NCA0ZDIwYWVhNjA1YzVmYjQ0MDBjM2I3YjEyNjcwYmIwY2I2ZTE2NjZkIHJlbGVhc2UzMS1tYWludAorODc0OTUgZmJiZWZjZDZhMWE2OTVhZGZiNmUwY2I0N2E5MzRmZGUxZjRjNGM4MCByZWxlYXNlMjctbWFpbnQKKzg3NDk2IGY0YmE1NGUwYmE3NzQ1MDYzMjU2ODMxOThjOGVjODUwMTgwOTRiYTIgcHkzaworODc0OTcgYzJhZTkwYWNjOTA4ODU2NjYwODlkNGM1ZDRlMTI3NTE2ODQzMDM4MyBweTNrCis4NzQ5OCAxMDhiYzEyNjkzMGY3ZjhmMTJlZWJjZjRiZDRjMTA5ZTcxMmU2Njc4IHB5M2sKKzg3NDk5IGUyMGE2NDM2YTkyNzBmOGFlN2Y1MGIyNWQxY2UwZTQ2MjBjODc2ZGYgcmVsZWFzZTMxLW1haW50Cis4NzUwMCBkZDZkMWVjYmViNTZkM2NhMzMyYWUyZDkyMTFjNmM0NmY0ZTMwZTEyIHJlbGVhc2UyNy1tYWludAorODc1MDEgYmNkNmE2NWI4YjIyM2U1NWEyOTk1MzI3NTMwOWVhMWZkZGQxZDZjOSBweTNrCis4NzUwMiA0NDJmMWRhMDFhODk4MmQ0YWVjNDdmZGY1ZjI5MDRhMmY5NDQ4Y2FiIHJlbGVhc2UzMS1tYWludAorODc1MDMgZDRkM2M4OWFiMzg4ZjBjOTUxZWY0ODIzYTM5MmZmMjIzNGYyMTNiNyByZWxlYXNlMjctbWFpbnQKKzg3NTA0IDkzZTk1YjJlMWExYTIzYjNiMWI1YmU5Y2VmNjJlMDNjM2E2ZWEzODUgcHkzaworODc1MDUgNGJiN2Y3YjE1MWZlYTk0OThjYjUyNjcxOTcyYmM3Yzc3ZDM0YzE4MyBweTNrCis4NzUwNiA2NmQ4NDQ2YTAxOWJlNzY3OTk0NGNjM2M5MDc2YWQ5OGFmNjYyOWE1IHB5M2sKKzg3NTA3IGY2MTE5NjQ1M2M3ODFlNzA2ZmVjYjE4ZGViMDc5OTI5NzFjMjRhZGUgcHkzaworODc1MDggMjJjMTJhNWQ4ZWQzMDUxNTUyNzA1OWJjNjljMDZkN2E3Mzc2YTQ5MyBweTNrCis4NzUwOSA1ZGFlMDRkNDllMTVjOTlkZTg1OWNjMjUyOGUyMzdjMTkxZjVmZWU4IHJlbGVhc2UzMS1tYWludAorODc1MTAgYzY5NDY4NWI3NWUyNDNhMWNhYTdiMmIwMTg4YjQzYTY2ZTNiYWI5MCByZWxlYXNlMjctbWFpbnQKKzg3NTEyIDY2NDcwNWRiZmU2Mjk5ZTE5ZDMwMTNiNDcyZWQwNTkxNzQyNjQwYTEgcHkzaworODc1MTMgZWZkYzVkMGQ4MWI3MjFjMjhjYTYzZTg3M2FkNDYzNWNlY2U5ZTY2MCBweTNrCis4NzUxNCBiYmY3NTFmZGY0MjA2NzdjNTRiZGMyMzQ2ZWZkYjZjNzc5ZDJkZWRjIHB5M2sKKzg3NTE1IDJkMDlhZjRjMTM3YzljNmYzY2Y0YjE1NTNmZmY1YzQ3MDY0Mjg0MDggcmVsZWFzZTI3LW1haW50Cis4NzUxNiA4OTU0OTUzNWQ5NzU4NzQyMzBlMmI5OTVmZTNjMTVhMmMxMTFkODNlIHB5M2sKKzg3NTE3IDZmMTk2MjJkZDM0MmI0ZDkyZjBjN2U3YjU4MGYwYzllYzhjMTZiMjAgcHkzaworODc1MTggZmM4MzRiMzIzZjI2N2RkNDRkZmU5YWU3ZWY5MTk3ZDI3OGJlNWFhZiBweTNrCis4NzUxOSA1NjA1ZjY5MjBiNjM4ZTQwOGU5YmNjNWJmYjU0MmJhNDA3NWRlZWJhIHB5M2sKKzg3NTIwIDMwNWFmNmY1Y2FiZjk0ZWI0MmI5NTcwOTZiZTEyNmNhOWExMjQ4OGQgcHkzaworODc1MjEgNTMyMDlkMDBkM2FiMTkyZTQ2NWMzNDU3NGJhNGQxZWI5M2MzNjhjMCBweTNrCis4NzUyMiAwMDA0MDEzYWU5ODRhOWM0MTUzMDMyZTNiYmUwMGU3ODBiMzZhNjI4IHB5M2sKKzg3NTIzIDEwOWRlZmMxYThjZmIyZTJiMmY0MjA3M2QzZGE2MDYwZTgwMTEyMGUgcHkzaworODc1MjQgM2E0ODE2YzM2ZGY3ZmVjZDc5Njk0ZWZjMjFjZGYxOGQ5NDNmOGMxZiBweTNrCis4NzUyNSBlMGM1MmMwZTg1ODYyMzMwY2YyMzM1ZDY2YmY0ZjdmMWEzNzlhNTVmIHB5M2sKKzg3NTI2IDdkNTUxZDVlZjRmY2Y0Njk4ZWQ2MmNhODg1M2I3NmE5NzA5ODk5YWQgcHkzaworODc1MjcgY2Q2ZTM0M2UyNzhlOGMyNGIxMDhhOTJjYzUwNGE2NWQ1ODg2YzExYyBweTNrCis4NzUyOCA2MTQ0OGNkYzBmYThjMGY1YjJlMzI3YTgzODkxMTBlYjc1YzZhOTA5IHB5M2sKKzg3NTI5IGVmOTM1MzFkMGFjNDdjOTIxZmVmMjllOGMwNzQ5ZDRjNTQzNjNlMjcgcHkzaworODc1MzAgMmUyNDc2ZmI4M2VmZjkwZWQ3Y2VmMDUzY2EyNTEyNzc0NDdkMDU2NyBweTNrCis4NzUzMSA0YTc3MzljNTI3NGI4YTViODJmZmQ2NDEzODE5MTkxYmMwNGVmOWEzIHB5M2sKKzg3NTMyIDg4MDU4NmI4ZDBkMDE1N2JhZjRkOWVkNmI1NTAzMDJjZTQ0ZThjZjMgcHkzaworODc1MzMgMDE3MTRlZmRjNmNmMTIwOTRjZDcwZTU0OGY4ODI3ZTczOTQ5OThjYiBweTNrCis4NzUzNCA4ZmNiOGYyNjU1YTU5MjQwODUzY2YxNmVmYzhmYTUxYWYyMmE3Nzk1IHB5M2sKKzg3NTM1IDE0ZmQwZGZiMTZmZmMzNjI2OWE2YWQ5M2I4MjI2ZDdjOTI3NjQzOGQgcHkzaworODc1MzYgZjUwOTEyOTgzNDYxN2M5NjFhYzM3NjQzZGY3MWEzNWEyNTE4YmY0YSBweTNrCis4NzUzNyBiOTAxZGE1NjFjZDE0MDcwZmJjNzY2NDIzNTJjMDQzOGYzODBlZmFhIHB5M2sKKzg3NTM4IGE4YmUwNTY3M2YzNDM3N2YwZjQxMDQ5OGZlYjhiOGMxMDVjMWM4YzggcHkzaworODc1MzkgNWFhNDMzYTI3N2Y5MzdmYzc4Y2EyY2VlMDI3YzZlYzZiZjk4YWZlMyBweTNrCis4NzU0MCBhNGVjMjBjYzkwNjY2ODIxYjE2NWE5NmRlNjgzMGM5NTI3YmNmM2IyIHJlbGVhc2UzMS1tYWludAorODc1NDEgNTRmMWQ1NjUxNTU1NzRhNzczYjMzMTU2NDM3OTJjODIyNGU3MGQ5YyByZWxlYXNlMjctbWFpbnQKKzg3NTQyIDE4YmNlZTg1NjliYjM3YTQ0ZTJiY2M5ZTg1MjAzN2MwYmEyNDlmOTkgcHkzaworODc1NDMgY2M3OGE2YmVmYmYyZjFmNmVlYTRiNTgwZjI4YTE1OWQ3YTg0ZDY0YyByZWxlYXNlMjctbWFpbnQKKzg3NTQ0IDA1Y2NjZDQyNTdhMjJhODc4NDI5MzdmYzI5YzdmZmFmMTc1YzM2NmQgcmVsZWFzZTI3LW1haW50Cis4NzU0NSAzNTQ2Y2UxYWEzNTViYzY3NDE5ZTY1YmQ1NGExZjJhYTdjNDc3ODY1IHJlbGVhc2UzMS1tYWludAorODc1NDYgNTJhODYxNzQ2MTI5N2JiOTU5NDZjN2Y5YmFlNjhhMDcwNGExZTFmYyByZWxlYXNlMjYtbWFpbnQKKzg3NTQ3IDZjY2RiMWUwMTYxMTU3NGQxYmUwM2U5ZmU1MjFiNGVmYTNkMmYyYTMgcHkzaworODc1NDggNjk0NjBjODA1NzM3YmU4MzUxZjVjZWIyZTUwZWFmNTVlYjdlYjQwMSBweTNrCis4NzU0OSBiN2JlNjUyZGFmNmVlMzIyMjA3YjNhNDBjYWJlZGU4MWRmYTA1YzdlIHB5M2sKKzg3NTUwIDc3ZGVkYWEzNmQzYWNiOGFmYzMxYzM2NWIyMTg3YjliYjkzYmNhZWMgcHkzaworODc1NTEgNzQxYjkzYmM2OGE1YmViZThkNzFlZGI0MjkwZjQ2NzMwN2NmMjdhYiByZWxlYXNlMzEtbWFpbnQKKzg3NTUyIDk1NTllMTE1MjU5NWI5NWRkMmQ0MTczMmY2NWI0ZWEyNTg0MzI0ZjkgcmVsZWFzZTI3LW1haW50Cis4NzU1MyAwZDk3YmI5OTQyNWRlY2ExZmFjYmY5MDUyOTA4Y2NhZGEwODNmMWZkIHB5M2sKKzg3NTU0IDViYmMxZGM0NTlhNTgxZjY3NmQ5NTgzYjI0ZTZjMmQ5YzY3MWU1YjIgcmVsZWFzZTMxLW1haW50Cis4NzU1NSAxZGYyMDIxYzdjM2M0N2QyZmJhZDA4YWNiZDUwMmJiYjcwYTliZWIyIHJlbGVhc2UyNy1tYWludAorODc1NTYgMjQ5ODhmOWY4NTBiMWMzZWEwMTZiMTYyNDc2OGZiNGYyZTY0NGMxMyBweTNrCis4NzU1NyBmYTU5ODhmN2M4YmQyNTcwNjQ4YzU0YTIwODYwOWY4MzRmNzdiMDU4IHB5M2sKKzg3NTU4IDJhNzczYmVmNDBjMjExNzQzZTA0YzY1YmZmZmVlZDhlY2FiNzFkMzEgcHkzaworODc1NTkgNjAzMjNhMGU4MGQ3YzFmZmEyYjMyZmUyNGUzZGNkM2EyZDg1ZjZlMCBweTNrCis4NzU2MCAzN2E5MTViZGY4MjdiYTUxNDI1NmVlYmIyZDhlYmEyNjEyZTA3OGEzIHB5M2sKKzg3NTYxIDQyN2Y5ZjE1NTA0ODVlODQ0MjhhOGVmYjhkN2Q1MDk1MDQyZTc5YmYgcHkzaworODc1NjIgMmI0MGU0Yzc3Nzc1NTM3MjZlNzIyZGM1YzhkMjhlYmY5ODVhZTJlMiBweTNrCis4NzU2MyBiMGZhZjdhNDUyMzk1MTE0MzQwMGU3NjM4YzVhZWNlOWM2ZTllZjIyIHB5M2sKKzg3NTY0IDhiNWVlYjVmNDU0NjY0YmM3ZDZkYjY4MzY3MTA3MmViNDNjOGYzNGIgcHkzaworODc1NjUgZTJlNTljYjRmNTBjYjJjMjljMDAyNzEwMTY3YTJhNDI0MTBlMDJmMSByZWxlYXNlMzEtbWFpbnQKKzg3NTY2IDAwYmIwNDA2YmZlZDk0MDFhYWNhNGZmYmQzNzhlYzNiMjUyMmY2Y2EgcmVsZWFzZTI3LW1haW50Cis4NzU2NyBhYjYxYmFiMzIxYzEwMTE5NjcwMjE3YWExZjc5M2IwZjg5ZWYwOTEzIHB5M2sKKzg3NTY4IDdlNzE2YjlhNDAzZDE0OTQ5ZGYyYTRlOTVlZDY3YjI3ZjYzYmE5MWYgcmVsZWFzZTI3LW1haW50Cis4NzU2OSBmMDY5N2NhOGFkNDc2ZGQ4OGFmMzZhMjY5MmIyMThiMjJkNzA1NTRmIHB5M2sKKzg3NTcwIDJlNTkyYTRlNjhhYjhmNjA3MTQ0OGMwZWI4OTczMzg1NWFjMDQxNDMgcmVsZWFzZTMxLW1haW50Cis4NzU3MSAyZTFkYmIyNTJmMjU3ODE5YTAxMjkzZDQ3ZTRkZmNmODJiNTUwYTY2IHB5M2sKKzg3NTczIDEwYjgzNjY4MzdkODBkZTczNWExYmMyMTE0OTQyZWIxZDFiMzIwYzYgcHkzaworODc1NzQgNDFkNWI2Y2ExOTIzZWY5ZjRiNzA3OGJmMTEzNjk5ZWU0YjdmNmZjOSByZWxlYXNlMzEtbWFpbnQKKzg3NTc1IGU4ZTY0ZWI0Y2E0Y2Y1N2Y0OGRjZTEzNjkyYWE0N2FmMTE4MThhOGYgcHkzaworODc1NzYgOTEzODYzNGI4YmQxNDYwMmRkMjVmYWFjNWFhYTRmYzhlNzNhYWY4MyByZWxlYXNlMzEtbWFpbnQKKzg3NTc3IDRjODNhMjlhNzEyZjkxNWRhNGY5ZmJhZTIxMzc4OGJkM2U2MGZmNDggcHkzaworODc1NzkgODdlNmJkYjM3M2QxM2Q1NWY5OGU2YTEwYTAzOThiNzcyYzYzNDdhOSBweTNrCis4NzU4MCAxNjMxOWY5YmU5N2M0ZWI5YTE1YWUzMDgxM2E0ZDFmZGMyOTVmYzc3IHB5M2sKKzg3NTgxIDU0ZWY1MmY5NzFhNTE5N2YzY2U2YTAyMWE4MzA0ZWRhMWFiYWMzZTggcHkzaworODc1ODIgNjNiZjg0Y2ZkOGE2MTRlYjg1NjAwMTJjNTkwZGM0YzhmZDQ0MGQyOSBweTNrCis4NzU4MyBmMGI1NmEzOGE1MjQzYmUwMTdjM2ZmYThjZDFhZWUzZTRkYjU4OTBkIHB5M2sKKzg3NTg0IDQ0ZWIwOWE1NTM5M2YwN2JlOWE0YjliODFmYjNiMzc0NTUyMjI3MWIgcHkzaworODc1ODUgZjM3Zjk2ZmNlN2I5NGRhN2YzMzcyOWQ1Y2Y3NjY0YzkyZWFmOTNkOSBweTNrCis4NzU4NiBmZGI2YmQxZDUzNTRjZTgzNmU0NzE0OWM0MDBhMTY4NDYyOThiYTY2IHB5M2sKKzg3NTg3IDhjN2RmMDM1NjAzNjAyMGZlZGRhMDY4NWNiOWYzYTBmMmNjYjE5YmIgcHkzaworODc1ODggY2FjZmZmMzQ5ZDQ4ZDczMmNiMGZkOGE5NDIyZmQ0Mzk1ZDhkYWVjYiBweTNrCis4NzU4OSAwZGZiODM5N2E5NzNiYWU2YjE2ZDFhN2YxYjY5NTY2NDliMjExNDJhIHB5M2sKKzg3NTkwIDcwMjAzN2MwMzlmZjAxMzk0OTQ0ZGViYmZjM2YzYTJjZGNiNzJmMTMgcHkzaworODc1OTEgYzcyZWU2ZTNiN2RmOGJiOWQxOGNiZjQwZmEyZGYwNDMxNTcxNDQyOSByZWxlYXNlMzEtbWFpbnQKKzg3NTkyIGExM2I4NjYzZmViYWM3N2VkZTU0MzNjZjQ0MTZjZDdkYzU4M2MwMjUgcmVsZWFzZTI3LW1haW50Cis4NzU5MyA1NTEwMDYzYjM5ZDQwMWUwZThmOTljMDkzNzA0NGRhMjlmZWIyZGI0IHB5M2sKKzg3NTk0IDNmZTY2ZmMyMjE3YjMwMWE5YmU0ZTY4MGQ1MDc2NmE0YzM4MmIyMzUgcHkzaworODc1OTUgYjY4ZjM4N2ZiYjQ4YThiZTQ1M2ExZTM4MjY1ZGM4ZjcwMjFiM2YwNiBweTNrCis4NzU5NiA4NzU3MjFkYTc0NmQzNWI3Y2I5NjE2ZWJmZjU2MTlmNjQyNjFiYmY5IHJlbGVhc2UzMS1tYWludAorODc1OTcgNTNkYjI5MGU0NmVmOTNiODhkY2U4Y2U2Y2VmMzU5NjNiOGViOTc2OCByZWxlYXNlMjctbWFpbnQKKzg3NTk4IDhmOTI0Y2FmMmU1ZTk4ZGM5ODRjYmI1MTM1OWRhZmE4Njc4NTkxYTAgcHkzaworODc1OTkgZWNhMjVmMWRlYWU3MzE4MzBiYmVjMjQ1M2RiZThmMWZiMTNkZTI3MCByZWxlYXNlMzEtbWFpbnQKKzg3NjAwIDUwMGViM2QwODk3ZjQ5MTNkYTg4Y2EyMjBmN2ZjY2JkMGRjNDE0Y2IgcmVsZWFzZTI3LW1haW50Cis4NzYwMSAzYmM3NDYxNmM5ZmZjMzE5YTIyM2U3ZDk2YjgyYTMyNmM2Zjc2MzE2IHB5M2sKKzg3NjAzIGZhODU1MDIxM2JjZmRkZTcyMzJjZmEzNDY5NTcyODI0MTZhMzcxNTAgcHkzaworODc2MDQgMzM1NDNiNGUwZTVkNjE1MDU4ODA1YmY1Njc0ZDg3NmY2NTk1N2QzZCBweTNrCis4NzYwNiBjZDhjOWI2N2YwMzM4NTI2NjQzMzA1NTdjMTc3NjQ1OTlmMzA5NWNlIHB5M2sKKzg3NjA3IDVkYmE2N2NhNmNjZmI1NWMwMTdlOGE2NjFmNjU2NjZhZGJjYmVmN2UgcHkzaworODc2MDggN2JiMzdhNGNkN2NmNzU5ZWQwMTc1NmQwZDg3NjY0NTAxMmExNTNjYiByZWxlYXNlMjctbWFpbnQKKzg3NjA5IDVkYjg5ODUzY2FjZTE5NjgwN2MwMWZmYzYzMWE4ODFjZmFkZjc0YjIgcmVsZWFzZTMxLW1haW50Cis4NzYxMCA5MDBiYTA3ZTQ4MjRiOGUwOGVjOTZjMzVhZjE2MTliNjIyN2IzZTMwIHB5M2sKKzg3NjExIGNjZWQwYTdjZWI0M2U4MDQxNTdhYzFmNDE0ZjcyOTNkMzg0MjUyMDEgcHkzaworODc2MTIgNDE1YTc5MmUxMjQ5M2I4YzIxYmFhZWNkNzdkNTU4ZTRkOTg4ZWEyYiBweTNrCis4NzYxMyBhOWFhNWU0ZWI4YzNhZTU1ZjkwZDE2MWVkYzhhYjU1NmVkZGExZDI4IHJlbGVhc2UyNy1tYWludAorODc2MTUgZjhjMmQ4OTBmZDEwNTRiOWQzNWRjY2E4ZTA5MmIzYzQ1MjYwNTNhMyBweTNrCis4NzYxNiA4ZGJmODU1YzkwZWRhYzc4MTk2OWVlYTQ2MDUxYjc3MGU0MjAxNWZlIHB5M2stY2RlY2ltYWwKKzg3NjE3IDU3ODU3YTYwZmE5Nzg1YmVlMDQ5MmMzNWI4YjNhYzRlMDc0ZmMxMWUgcHkzay1jZGVjaW1hbAorODc2MTggZGQ0OTQ1NWQ4YThjOTE3NzcyN2JlOWM1Y2M4YWRjNDA2NjliYjZmZSBweTNrLWNkZWNpbWFsCis4NzYxOSA2YWY5ZTgwMDAzMzI5NzhhNGEzZDhkNmI4MGY0MWYxMDQ3ODE1YTJjIHB5M2stY2RlY2ltYWwKKzg3NjIwIGE2Y2Q4NGNhN2IyYTc5NjUwZjQ0MmUwN2RiY2Q1MjhiNWYyNTM5NzkgcHkzay1jZGVjaW1hbAorODc2MjEgYWVlNDU0NDAwZWQ3MTdiODI3YmZlYWU1MzhmMzM3NjY3ODNkMjg3NCBweTNrLWNkZWNpbWFsCis4NzYyMiA0YWE2NmU1MTQ4OGYzOTQ1YWRiZjdmMWZmNTJjYmFkYjkwNGQ2ZTJhIHB5M2stY2RlY2ltYWwKKzg3NjIzIDBiMmVhOTAzMDBjMGM5YmZmZWE1MTUxMzI5NjE1OWZkMGFiYzM4YTcgcHkzay1jZGVjaW1hbAorODc2MjQgZDJjYTViMzEwNGFhM2NiOTdjMTRkNzA1YzIzN2JkZGNmNzA5MmQ1ZCBweTNrLWNkZWNpbWFsCis4NzYyNSBkMzkzZWM1MzZjYTlkNWQzZWEzMjAxMjIzN2QxOTQ4NjkwNjI5ZDA4IHB5M2stY2RlY2ltYWwKKzg3NjI2IDNmZWFkYTcyMjMzYzQ3MzRlNzJjOTQyMzdmMmI0ZTQ0NDg3N2YzMTAgcmVsZWFzZTI3LW1haW50Cis4NzYyNyBkYzYyNDViZmU1NjYxYWY5NmZjOTI2YzYxYmYxZDk4NzY2MzM1ZjM3IHB5M2sKKzg3NjI4IDc0MzZkYWVjOTQyMTBlMjUxZmI4YTY5MDI1MmRjZDlkYTUyYzlhY2QgcHkzaworODc2MjkgNDQ5NmRlYjI2MjY1ZGEzNjA3ZTA4NmFjNTAzM2U2ODRiOGFhZWIyMiBweTNrLWNkZWNpbWFsCis4NzYzMCA3OThhYTNmZTAzNDdiNTlkOTliYzA4N2VhMzUxODM0N2QxZjQ3ZTQ3IHB5M2stY2RlY2ltYWwKKzg3NjMxIDIxZTRmMWFhMjQzMGMyZmM1OTk2YTM3YzY3MGE0YTFhZWY2YzM5NjYgcHkzay1jZGVjaW1hbAorODc2MzIgMGZjMjQ5M2EzODYzZDdlMmQxNTMzMDgxNjI0NGY2MjFiNzBmMmZkNCBweTNrLWNkZWNpbWFsCis4NzYzMyA1ZDM2ZjBhNTM3ODNhZGU0MGJkMWJlNzU2M2M0MjM0MWMxNTFhOWQwIHB5M2stY2RlY2ltYWwKKzg3NjM0IGU3MGM5MzYxMmQ3ZmNiZDJiYzk5ZjFmZjFmNjMzY2EzZmM0NzY1ZDQgcHkzay1jZGVjaW1hbAorODc2MzUgZDQ0YmE3NTIxMDNmMjNiN2FhNzgyOWE5YThiMzY3NjE1YmNkZDYyYSBweTNrLWNkZWNpbWFsCis4NzYzNiAxNmU4ODZhNzZjNWE1OWM0OThjZWE5YTcwNGI4ODMxZjZmZjY2ZmMzIHB5M2stY2RlY2ltYWwKKzg3NjM3IGZlNzIzYjhkN2M1ZmUzMDk3YWZjODllN2FlZDVkZDc1ZmMyZGQ2MDkgcHkzay1jZGVjaW1hbAorODc2MzggNjQwMTQ5MTNlYjg4MDliODVmZGI2YzllMjcyOWNhZDBjNGI5YTJjZSBweTNrCis4NzYzOSBiMzQ0Mzc3ZmRkOGRiNTZiNDAxMDlkODE1NzU5OWQyMjYyOTI0Y2ZkIHB5M2sKKzg3NjQwIDMzNjVjN2I2NDg5MzdkZmU1MmQwYTU2ZWNjOTI3ODNkZGY5NGQxZTYgcmVsZWFzZTI3LW1haW50Cis4NzY0MSA4ZjMzYjUwMjE4M2JmMDM5NDgxMmVkNTFjYWJmYTNkMWEwODE3YjA1IHJlbGVhc2UzMS1tYWludAorODc2NDIgZmYxMjYxYTE0NTczM2E0NmRiZmMwYjE0ZTA5MTczMzgyZjlkMjU0MyBweTNrCis4NzY0MyA5ZWExMmU4NmQ1NjUyMjdmM2Y2OWYyOWE5ZDUzNTQzNzZjZmJmMWVhIHJlbGVhc2UyNy1tYWludAorODc2NDQgMTUyYTA5ODViMTM4Yjc5MThkMTdkN2M4Y2U1YjRlMzJhZGZkZmE1OSByZWxlYXNlMjctbWFpbnQKKzg3NjQ1IDBhZmM0MTM5Y2M3MDI5MWM0YTFmMzAyNDM4NzQzNGFkNjI1ZWE3OGYgcmVsZWFzZTI3LW1haW50Cis4NzY0NiAwY2FlMjFkZTk5MjEzOGY0ZDU1YTY0ZjYyYmM5NzQyNGE0ZjhlYzk5IHB5M2sKKzg3NjQ3IDAwNzFhMTczNDY5MDk5MDdhYTZjNTAyZDcwMDMwNzBlMzliZGJhMWYgcHkzay1jZGVjaW1hbAorODc2NDggNmM0NjNiMDdkYmRiNzJhYzU0ZDQxMGRmOTI0ZGVhZTIwODU3MzFjYSBweTNrCis4NzY0OSBkYmI2ZmIyYzViOWQ3ZTZhMDk5YzhhZjkyZjA1YjRjMmNiNzdkMDI4IHJlbGVhc2UzMS1tYWludAorODc2NTAgZWI5NTRjNzY1NTIxYWE3MjdkNDI2NGY3NDIwZTNmYzliZDQ0OWI0YyByZWxlYXNlMjctbWFpbnQKKzg3NjUxIGE1YWUzYTE3ZDVmYjE4MTQxNWZjMzJjNWY0NGJhZWZmYTZhM2Q0ZWUgcHkzaworODc2NTIgZTBlNGVmYjYzMzU0Y2RiNmY0NjZjZTUwNjMyMjgzYWVjYzM3ZmU3YiBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc2NTMgMjU2Zjc5NGMyY2MwMjg0NDQwYmY1ZWNjNzYyMGYzMzg3MGUwMmZkOSBweTNrCis4NzY1NCA1ODFlNjcyNDc4ZjdlYTRhMWYzMjcyYmU3ZWE4MDZlODI5MjVlYjI4IHB5M2sKKzg3NjU1IGM0ZDY3ZmE5MDlkY2QyZGExOWQxYzQxZWYwNTZhMjA3NjYyYmI0ODAgcHkzaworODc2NTYgYjAyMGRmOWVlMzgxNmNiMGE5MzY0ZTQwYzRlYTdhYjg1MDIzYTBiNyBweTNrCis4NzY1NyBkMzllZmE1NGRlYWYwNDkzMDk5OGU0MDI5MTcyOGUyZmY3MTRjYmYwIHB5M2sKKzg3NjU4IDQyNjBlMzAyNTJlYjJiYjdkNTVlYjQ4M2RiZTU1MjhkNjY5YmM1N2IgcmVsZWFzZTMxLW1haW50Cis4NzY1OSA3MzBiMWFmMDkyMzg3NDgzZDA3Mjg4ODFmYTg5ZjA2ZGQ2ZjZiMzhhIHJlbGVhc2UyNy1tYWludAorODc2NjAgMDRhYTViZTcwNmFjMDE3NzExYTFhYTk1YjFhOWY1MzQyNDNmYTBkMyByZWxlYXNlMzEtbWFpbnQKKzg3NjYxIGE1ZGFhMTQwMDFhOGVlYmE0YWQwMjk3YjY2N2VlNTk2MmEwNThmOGIgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjYyIGY4OWUzN2NkNmM2NTc3MTY4ZGNiM2YwMjUzMDY3YzIyNmRiZTNhYjQgcmVsZWFzZTMxLW1haW50Cis4NzY2MyA4OGU1YWU1YjdkYzI2YTAxYzY1YmFlOTUyMzI4MWQ3OWM1YzEzYmQ0IHJlbGVhc2UyNy1tYWludAorODc2NjQgZTI4ODY4Y2Y5ODI1ODljNzVlMTdkMGQ0MGRlM2EyOThjN2E4MzdiMSByZWxlYXNlMjYtbWFpbnQKKzg3NjY1IDc0NjE0M2VjMWY2MGRhMTI5NTRhN2VhNjcxZjkxNTM2ZjQwMjkyYTAgcHkzaworODc2NjYgNGFmOTg3ZWMwMzNhMGQwNmUxMzE5OWY4OWE1MmVmZWFhZWNhMTBhZSBweTNrCis4NzY2NyAyODUzOGYyZTBjYzI0N2YzZjVmODlhNDcwOGZhNGZmYWY0OTM4NGQxIHB5M2sKKzg3NjY4IGQ4ZWQwY2M5ZTMzODJjMjY5NGNjZDBmNGVhMzEyYWNmM2I1YTE1YmYgcmVsZWFzZTMxLW1haW50Cis4NzY2OSA5M2I3YzAwMDhiMDg1ZTA3YTI5NDQ0Zjg5NjFhOWYyZjdmMmMxMGI3IHJlbGVhc2UyNy1tYWludAorODc2NzAgNzNiMjQ0NzZjYTNiYWFmNzA3ZTc3NjNiN2JmZDdmNzIyNTBmZDUzMyBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc2NzEgYTA0OGQwY2YyYWQxZDgyMTA3ODQ5NWNlMzk3MDJiYjQ0NzNkYWE5NSBweTNrCis4NzY3MiA1Mzg0ZTcyMGYyOGZkMTk4MzYwZGNkNjZlOTg1NmZiMTNlOWJkNzdhIHB5M2sKKzg3NjczIDQzOWJmOTY4MGJlZjI2NjAzYzhmNGE3NzE5MjkxOGFlMzczN2UyMDYgcHkzaworODc2NzUgZThiY2M3ZGJhYjdkYzIwYzMzOWYzODMxM2Y4YTQ0YzRkYTU0M2NlYiByZWxlYXNlMzEtbWFpbnQKKzg3Njc2IGM4OThkZDIxNWJhMDY2NTc0ZjdhZTQ4ZTE5YTc2Zjg4MzVmZjU2M2EgcmVsZWFzZTI3LW1haW50Cis4NzY3NyBmYTU5YWMxMTY0ODQwZGU5YzE4YjQ5MmNjYTM0MzY2ZDgyNjY4MzliIHB5M2sKKzg3Njc4IDU3NzZmNDI0ZDg1NzgxMmQ3MWZhYmQ2NzE1ODYxMzdkMjIyM2UzMjAgcHkzaworODc2NzkgMjgxMTkwNjFmN2QwMTE4OGRlNDI1ODExOWY2MzA0MGZkOGZjODdjYSBweTNrCis4NzY4MCA4MDYwMGMwYzMzYjc4YjFkYzg1ZDcxZThhMmRhMDIyMDRjMjc0YTRiIHB5M2sKKzg3NjgxIGY1YjEwNWM5ZjQ2YmY2ZjJhYmMzN2NlMTRhNjdjZTVjMmViMDNiZmEgcHkzaworODc2ODIgYmExNmZmODZkNGY2Y2QxNTk2ZGEyNjBiZDNiM2ExNzg5YmZkZDVkNCBweTNrCis4NzY4MyBkYmE5YjljN2EyZGI3NmY4NDc3MGFjMjEzZjZkOTM4NmFhNjU0MTAzIHB5M2sKKzg3Njg0IDZjYjdlZDdiNjY5N2U1MzUyYTNmZjRlZTQ0MWMwNDU3ZThlYzE5ZTggcHkzaworODc2ODUgOTQ4NjkyNzEyZmQ3MTBkNGMzMTE4ZjEyMGEyYmVlYmJlYTk5NmEwOSBweTNrCis4NzY4NiA5MzFkMjMyMGY1NmEwN2I0NzFkZDQ2MzM4NGYwMzU3NjBkNjk3NTY3IHB5M2sKKzg3Njg3IDRjNDZmNjYzMmRkZjk3NzY0YmVkMDQyZTQ3MGM4YTliMDk4MzBlOGYgcHkzaworODc2ODggNzc0ODNmM2U0OTFhNzkzNjBjMDA5ZGJjNGNkNDU2Y2FmZTNlYWFhMSBweTNrCis4NzY4OSBjNDE3ZDgwNTc2ODI3NDA5N2NkMzVjOWIwZjAwMWYzYWIwYzhjYmYzIHB5M2sKKzg3NjkwIDc0N2M1NWE5NGNiMGU1ZTUxOGRmZTY2ODZjNmEyMTdmYjFmNmFjZjcgcmVsZWFzZTMxLW1haW50Cis4NzY5MSA2YjdkOWYxYzJjZTUxYTg0Y2YwYTIzMjY4ZGM0YWY4MDg0NzAxZjllIHB5M2sKKzg3NjkyIDI0NTM1OTM4MmIwZmFkM2U0MzI4YzdiZGI1MGRjNTMwYWRiYTZlY2QgcmVsZWFzZTI3LW1haW50Cis4NzY5MyBmZWIyM2UyNGRjYjVjNzBmMzMxMTA3OTljZjcyOTZhMmQ0MWE3NmQwIHJlbGVhc2UzMS1tYWludAorODc2OTQgYTMzZTFmMDIwOTFmOGZhMTVlN2I4MmIwNzRlYjJjOTU5NDQ5ZTkwMyByZWxlYXNlMjctbWFpbnQKKzg3Njk1IGE2NmE2ZTQyNTM4ZmU0MDkxM2Y2NTYzZDJiY2VkNGFmZTdhOTcyZjUgcHkzaworODc2OTYgZTlhNTFkNDYzNTc5MjQ0MzE1NjNhN2E2MmUwOTQ4ZTM2YzM0YjlkYSByZWxlYXNlMzEtbWFpbnQKKzg3Njk3IGE0NzZlYjA4N2VlOTc2ODMzMWU4M2EzNTI0ODA0ODM1NTc1OTdhYmMgcmVsZWFzZTI3LW1haW50Cis4NzY5OCA4YWM0YmNjYThlMzE2MWYyZWZiN2JkYWVjYzE3ZTc5ZjI0NGJiMWFlIHB5M2sKKzg3Njk5IDlhY2VkNWFlZDExYWY1YWUxN2JjN2Y0NDRiNWI4YzM2NmQ3Y2U3MjIgcmVsZWFzZTMxLW1haW50Cis4NzcwMCBiMGI0NDE0YzBiZGMyMWRlNDM2NTI0Nzg4ODA4N2RkNzMxMWY2MDlkIHJlbGVhc2UyNy1tYWludAorODc3MDEgNzhkZTNhN2ZiODk2MzRlMjk2YmMyNTc0YTVkMmE1NDExZTNiYjJlNiByZWxlYXNlMjctbWFpbnQKKzg3NzAyIDI3NWZiOTg0OTQ5MWZlMTVhN2YyMGJjMWJiN2M2ZWMyNjNmNGUyOWYgcmVsZWFzZTMxLW1haW50Cis4NzcwMyBmNDk4ZWE5NzhjNmZlMGVkYzlkYTVlYTg4ZTk5YzQwZjhiOThlNDQyIHB5M2sKKzg3NzA0IDYxMTU2N2VjNGQ3YjcxNWNiODA2OGMwMDkyNDJmZGI4ZDczNDQxYjcgcHkzaworODc3MDUgOGMxODk5MmQzNzUwYWMyM2RhYjc5MDFjNjZjNTE3YzE4NGFkYmY1MSBweTNrCis4NzcwNiBmNjBhODk5YTIwNGU1YjI4ZWRjYzZlZWI0MTM3N2I3YzNkNGIyMWYzIHJlbGVhc2UzMS1tYWludAorODc3MDcgNDA5NGJjMTNhY2ZjYzQxMzBmM2MyNDk2MzgxNDMxODEzZDYyOGRjOSByZWxlYXNlMjctbWFpbnQKKzg3NzA4IDlmNDllZTUyMzk3NTYxMDk4MDJlZTc0MzJmNjA3ZTUwZmQxMjA4OGUgcmVsZWFzZTMxLW1haW50Cis4NzcwOSA1YmNmMTA4YTNmNWRmZjI3ZGEyMTA3ODhlYzMzYjY5ZTU1YjAyYmMwIHJlbGVhc2UyNy1tYWludAorODc3MTAgNmU1YWFkYTRmZGQ1ZjE3Njg4NjJiZWI0YmY3MDUxM2U0MjVhMDVhYyBweTNrCis4NzcxMSA1MDExODcwZWM4NmJkNGYxOGIyNTQ0YmU0YjZhMjY1MzdiNTJhYTIxIHB5M2sKKzg3NzEyIGE3YzQ5OTI2NmE5ZmUwMjUxYjZlNzE4ZjhmOGFhY2RkZmUzNDg5Y2EgcHkzaworODc3MTMgOGY1MDljNTI2MGE5OGFjMzk4ZWFlODU4MmYxMzU3ZjE2ZGIxZWEyMSBweTNrCis4NzcxNCA4OTMyNzNkNzkzYzZlZjUxYzU1MjljODBlMmI3ODJiOTI0MDMyMDM1IHB5M2sKKzg3NzE1IDczMWRlYzRlNzUxMzgxNjRhZDljOGIzZGRkMGE4MTAzMDJkNjM4NjQgcmVsZWFzZTI3LW1haW50Cis4NzcxNiA5YWQ4OTY0MjZmNzk2NDE4MDEzYmFmMzU5YWVhNGY4MGNmY2VlZjczIHB5M2sKKzg3NzE3IDcwYmVhMmRhZGVmOGE3MTRkMmIzYTdkM2ZjZjY1NjRlMGQ3ZjZiOTQgcHkzaworODc3MTggOGI4NDhkM2M2YWQwMTQ0NTA4OTlmZWNkMGY4Y2UyYTQ3MWMxNWNkYyBweTNrCis4NzcxOSBkMzZlMzQ1YTFhM2NlY2JlOWRkZjhmNjYwMDBmZDBmMTJjMzRiMzc5IHB5M2sKKzg3NzIwIGYwZWIzNDQ4Y2UzODQ1OTI5MzQwN2MzZmEwYzk0NDI4ZDc5ZDg5YzEgcHkzaworODc3MjEgOWNkODNjNjU4YmE0NjIwYmYzMjMzOGJjNmZhOTY3ZmIxNGFkZDJmNyBweTNrCis4NzcyMiAzNzRkYzkxMGRiMzNhZDY4YzA3Mzg4OWY3YTk1NmRkNDhjZWQwN2U3IHB5M2sKKzg3NzIzIDE4ZGJjM2JhMTZjMGVhZmQ4MGM2NzJmMzc4YTY3YzQ3ZjJmZWIxM2QgcmVsZWFzZTI3LW1haW50Cis4NzcyNCBjMDA3YzNkYmJkM2ZiZDllZTNiZDViODRjYzZjNzZmZWYxZTk2Yjg2IHJlbGVhc2UzMS1tYWludAorODc3MjYgYWQyZjM0MzgwYWFjODY3ODQ3NGJkNjUzY2UxMzk2YmNlYmRjNmM1YyByZWxlYXNlMzEtbWFpbnQKKzg3NzI3IDNlMWMzZDJhODY4OTA3MDVmMTM3Mjc2OTA0NWFkNmE5YmJkMzQ0NjIgcmVsZWFzZTI3LW1haW50Cis4NzcyOCBmNzhlN2RiMWQ1ZTg2NGVjZTc5OWQ5ZTdlMTk1Nzk3MzYxMWExMmU2IHB5M2sKKzg3NzI5IDQ1NDk0MjZlZTRkNjUyZWJjODVkYmZjYWMwZDIwMzY1MDEzMDY4YzUgcHkzaworODc3MzAgZjRhODA4ZjVhNjZkMWNlZGRjZTQ0MzUxODM3MDM4YzdmZTZjZjBjMCBweTNrCis4NzczMSBhN2QxNWRmN2Q2N2QzZjBmMTEzMWZlNDhjMDhlYmRlZDhkMDdmNWNiIHB5M2sKKzg3NzMyIDk4YzhhYTIzN2ZjMWNjMTM5OGUyZDhkNTcwMWQ4NTE2MDE0YWVkYmIgcHkzaworODc3MzMgM2JmNGQ5ZjE2NjBhNGMxZGNlYTUzNWI5NDQ0ZTY0OTJjZDY5MjQzZSBweTNrCis4NzczNCBjZDI3OTgyMDg3ZWFjNGJiMjQxOGU1OTMwYmI1YTcwMGM3YzMwYmVlIHB5M2sKKzg3NzM1IDhhYThkY2E0NjY4NGI1NGZiY2RkZWU1NzlkZjdhMWU2OGZiYmE2OTEgcHkzaworODc3MzYgMWU2MmEwY2VlMDkyMmMzZjlmYjgzN2M1MTlmOGEzOTMzOGUzYTM3YSBweTNrCis4NzczNyA2NDJjODgwNjgzMGY1ZmI0MjAyNDEwMWQxYTgxNzI5ZWJkNjg3YzcxIHB5M2sKKzg3NzM4IDIwMDQzZGE3ODcyNmEzOTRhMmIyYjZkMmEzMDUwZjYyYTU4NTFiMDMgcHkzaworODc3MzkgNjI5ZWIzYjY5OTA5ZjFjY2I2ZjFlMGFhZGVkM2ZhNDliNTA0YWE2ZCBweTNrCis4Nzc0MCAzNDc4ZDAwN2RmMjM3MjJkZjlmZDM3ZmIyZTdmNDVjZTA2NGNiNTdiIHB5M2sKKzg3NzQxIGEzYjdjMjkwNzU0YTBhMTUyMzgxYThjYTgxM2NiZWY5NzQ4OTZhNDAgcmVsZWFzZTMxLW1haW50Cis4Nzc0MiBhNmJjNDk3YjE5NjI0M2NlZDhlMzIwMTExMDFhOWM1YzRlN2Q4MzcwIHJlbGVhc2UyNy1tYWludAorODc3NDMgN2M1YzM3Yjk2MjgxNmI3ODc1NGU5MDVjYTlkZmQzZWI3NTkxN2Y3MyByZWxlYXNlMjctbWFpbnQKKzg3NzQ0IDhhZjZlOGZjMDIwNWJjY2M2NTgwMjdkMWVmMzc5M2NlNzYyNjhiY2IgcHkzaworODc3NDUgNDU1N2Q0OTVhNDg0NmMzZTUyMjVmNWZkNWEwYzZhNTQ4YTk5ZTI0NSByZWxlYXNlMzEtbWFpbnQKKzg3NzQ2IDA4MTkyMjY1ZDE3MmM0YzEwODk3NDdiNmMwODEyOTIzZDI0NzNjOGUgcHkzaworODc3NDcgYzBmZWY4YTE0NGZhZDk4ZGU4ZWQ2YWUwZDI5MGQzNTI0MDViMTMyYyBweTNrCis4Nzc0OCBlZmNiMTRmOTRlNzY5MTNiZGZjMTYxM2U3Njk4NzI4YWYzOTI2MThhIHB5M2sKKzg3NzQ5IGRkM2YyOGZmZDAyOTA4OWQwOGQxZjE2ZjM1MjhmNmNkMGI1ODk4NDQgcHkzaworODc3NTAgNDk3ODlhNTJhOTc2MjQ0NDMzNmQ0ODJjMjhlYjM2OTA2YzM2OWNiOCBweTNrCis4Nzc1MSAwZWZmYjE3NWM5ODE5Yjk0NDJlMjUwYzY0Y2NjOTg1ZTcxZTc0MDNhIHJlbGVhc2UzMS1tYWludAorODc3NTIgODVmYmQ3NzU1MzRlYjdkODA4MzZhYzhiZjU0Yzk5NTgxMWQ1ZTFkZSByZWxlYXNlMjctbWFpbnQKKzg3NzUzIGEwZDRlZGE4ZGEwYWYwZmU4YzA0MTY2Njk0MmMyMWE1ZWZhZTJmYTAgcHkzaworODc3NTQgNGNjNDdhOTA4M2UzODk5OTZmZmFkNGU5YjZiMzk2MjhiYjJmMTY4MiBweTNrCis4Nzc1NSA0YTgyYmU0N2E5NDgxYjFjMDNiYjk1MWFlOGU4YzY4YzVlOWEwMWUyIHB5M2sKKzg3NzU2IGRlODYyZGMwY2NjYWY2OTEyMWUxZThlNzQ4NDY5NDMwZTBmMDBlNGIgcHkzaworODc3NTcgMjk2MWFmODBkNTQ1NThiNjdlYzRiMzVjNzYzZjdmMzBkZGJiY2ExNCBweTNrCis4Nzc1OCA1MDYwYTkyYTg1OTdlNTBlZWUzOThhMTdjMGU0OTU4ZDU0M2JjOWRmIHB5M2sKKzg3NzU5IGU5MzQ4ZDY4Y2ZjZDAwMDhlOWQ4ODU2ODY5MjAxNDE2MTAyYjI0MjQgcHkzaworODc3NjAgYzA0MjViNWVkZTQ3YWQ2ZjJhN2QxMWI0MjAzNTE2ZmRkZmQwNzNlNyBweTNrCis4Nzc2MSBhNDRiYWRmOWUwMGY2M2QzZGM1ZGY5ZTlkNzA2MTAxNWJlNWZjNGRkIHB5M2sKKzg3NzYyIGJjNTdmZGQ4OTU2MmIxNzIzMTk4NzAwZDE4YTRhYTA5NDAxNzAyZmYgcHkzaworODc3NjMgNzk5Y2QxNTIzMTExN2Y5MzM5OTAwNTNhMGQ2ZmJkNDEzYmMxN2ZlNCByZWxlYXNlMzEtbWFpbnQKKzg3NzY0IGI3NDI2YmU2YmJiNGNhMWYzOGZhY2E3OTE1Y2UyZDg4MzcxNDVmZWYgcmVsZWFzZTI3LW1haW50Cis4Nzc2NSA3NDUyMjVhZTI5ZWYwODFiZmVkNjBlMWI3NTZhNWQxZWYzNWE0YzIyIHB5M2sKKzg3NzY2IDkxMmZkMjBkZTBlMDcyMGNiMDQ0ZmU0N2ViZTMwZjI3Y2M5MzZmMmMgcHkzaworODc3NjcgMTMyMzc0ZDUzN2U0ZDEwZDc2ZDZmZmU3NjhmM2U4NDJjYjQzMTg4ZiBweTNrCis4Nzc2OCBlZDAyNTkyMzA2MTEyYTBjZTJkNzAyMzI4MTg4ODM3MDczNTQ4ZTNkIHB5M2sKKzg3NzY5IGJkYjU3ZjQ2M2M4NWZiNTRmM2Y5ZDJkMTJlMGY3NDc3M2Y0ZTk3ZTcgcHkzaworODc3NzAgNGJmM2E1YTA0MTIwOTM3OWY3N2FkNzcxYTkwMzUzZDQ4NDQ1OGFhNSByZWxlYXNlMzEtbWFpbnQKKzg3NzcxIDA3NjI4OThmZDgwMjg2ZTg3ZmY5ZGFhMWQwMjY5ZDI5ZDFlZTAzYzQgcHkzaworODc3NzIgOGY1M2E0ZTg5NjMxM2M1NmRmZTc1ZjIxNDg1ZTZiNThjYzgwNTkzMCBweTNrCis4Nzc3MyBkZTM4Nzk0ZDE3NDk4OWEzOWVkNWVmMjE4NjVmMjY5YTljY2Q5ZDExIHB5M2sKKzg3Nzc0IGYwNmMyNzhiNGYyMTIzZWJiZWY3ZmMxYTQ0ZDkxZDQxMGE4NWUzZTcgcHkzaworODc3NzUgNThiNzg0NTUzY2E0ZjVhODQyZWYyZThkMmM5MTRhYjcyMzA3OWZhMSBweTNrCis4Nzc3NiA5MmY2MWE2OTJlMzk0MTMxYWRiMzVhMzBkNDY2YTk5Y2QwOTcxODM2IHB5M2sKKzg3Nzc3IDUxMGY3ZTI5ZTcyODE3ZWUxZjZhZDg5NDhjMWRiYmJmMzZhNTRmNWQgcHkzaworODc3NzggMjBlM2FmMWQ1MzBhOGZiMzk5MmM3M2MxZDY5MmY0NzU4YjczYTk4OSBweTNrCis4Nzc3OSBjZjllMWY3NDY0ZGM1OGVjZTlhNzcyZGRlZmFjNjM5OTA4ZjkzMDdiIHB5M2sKKzg3NzgwIDkyZjJkN2QyOGZlZWRiMzIwZDZhNWExZWU0NGYxZmJmZjg4OGZlNDcgcHkzaworODc3ODEgMzRkODkxNTgwZjM4ZDQ1NmYwMjM1MDA2ODQ2YzhiYmM0MzQ3NTFjZiBweTNrCis4Nzc4MiAyNDdiN2JhNmZmYWQ0NDg5MTg5MDdiNGI3ZDAxMTRkZGNhNmE4MjJkIHB5M2sKKzg3NzgzIDhjNDQ4YTQyNzdhMGQ0ZmI5YTY1Y2E1Y2Y4Yjg2N2Y0ODZhZTY5MDYgcHkzaworODc3ODQgYWJiNjg2YTVhMWRmY2Q2YzAyZmY0NTdhM2YyMjcyMmFjYmI1OGI0ZSBweTNrCis4Nzc4NSBjOWI0ODRmMmEwYjcwNzQ5NTdlYzI2ODU5YjE1OTljN2M1MjU1ZjM1IHJlbGVhc2UzMS1tYWludAorODc3ODYgNzFlMWE5OTYxODM2MTlhM2EyNjIzMDViNDhmY2RlM2MxZWE0ZGZkMyBweTNrCis4Nzc4NyAzZDgyNGI1MTM3ZGRiMTMzZGZlNTdhNTg2ZjU3MGEwNjUzNmRlYWYzIHB5M2sKKzg3Nzg4IGQ4MjRlOWNmYmVlODZkZjBhNWIzNTE5YTJmZTZmYjc2ZTM3MjcyNzAgcHkzaworODc3ODkgYTMyODhhNGUyZWFkOWFkMTAzNzZkM2JjYTQxZjIzZmMyNTU5ZmYwZiBweTNrCis4Nzc5MCAxNDIyODgwODljMWE0NjU2YTFhMmQ5NjJkOWM4ZWI4ZTNmMWYyMjEyIHB5M2sKKzg3NzkxIDVkNjY2ODU0ODQyODQyZjkxY2FhYTM1OWMyMThlNzJiYTMxZTAzNzEgcHkzaworODc3OTIgY2NiYzg0MjIyZmRhNThhMzYwNmNjZmI5NDljYzFkMjQ3YjVmNDI5YyBweTNrCis4Nzc5MyAxNzc0ZDZhMmY1YmZlZjhmMWU2YjQxNDU5YjE1NDg4NmNmNzVmMzlmIHJlbGVhc2UzMS1tYWludAorODc3OTQgMjY4MzZlNDdkZmI5MWM0NzFiNmExOTFmNTZkNWQ4NGM0ZTRiNmIxMSByZWxlYXNlMjctbWFpbnQKKzg3Nzk1IGQyYTY0NjEyZDIzNWI2ZWYyNDJlZDlhYzNmZTNkN2IyN2Q1MjgwZDIgcHkzaworODc3OTYgNjRjMjQ1MzEzY2ZmOWZkZDQ2ZTU0ZGNkM2M1YjM5OTgyNDRmNDAxOSBweTNrCis4Nzc5NyBhNGNmYjI3ODI0MTY0YWZkMWNjYjI1NWM3MjcwMDhhNGEwMWQ0YWE0IHB5M2sKKzg3Nzk4IDU5MTkyMjI5OWFjYzExMThhZDAzM2E3YWI4ODQxZmZmMTY5NzgwN2YgcmVsZWFzZTMxLW1haW50Cis4Nzc5OSBiMzMyZTczYjU1NjcwN2M0YTEwODhiMDA4OWQwM2U2NzE2MmM4YzE1IHJlbGVhc2UyNy1tYWludAorODc4MDAgN2U3ZmM5NGZkMGQ0MTRmYmVjMjMzZTdhMjRiNTI2NmI2ZmJmMzM5OCByZWxlYXNlMzEtbWFpbnQKKzg3ODAxIDQxOWNhMDg5ZDM2NWYzMDE0YTRlMDJiNTBhOTRlZjMwZjc2NWQ3MjEgcmVsZWFzZTI3LW1haW50Cis4NzgwMiA2YTFkMDgwNjIzZDc3YjgyNWMxZGU3NzI5OWYzODY4MzNiNmMzNWQwIHB5M2sKKzg3ODAzIDcyMjI2OTc5NjRmYzc0NDM5OWM4ZWUxMThiYjM5NDhhZDE1ZGQxZGEgcmVsZWFzZTMxLW1haW50Cis4NzgwNCBjN2ZkOWI2YWEwMDJlZTMwMWNlM2ZmOWU4ZTdjMTZmMmVlZGEwYmZiIHJlbGVhc2UyNy1tYWludAorODc4MDUgOGEzMDJhMDllZTgzYTc2OTA1ZWVkMmUwNTdmZmZlOGI5MGE2YjAzMiBweTNrCis4NzgwNiAwMjBkYTliODdkYWE4OTEzMzRiYjc4NDM4YTEwNGYwYWFkM2VkNzI3IHB5M2sKKzg3ODA3IDFkNGRjOWRmMjQ5NjcyODIzNTZmYjk2OGVhNDg0MDBkNjcyNDZjODQgcHkzaworODc4MDggMDFiMjUzMzMxYTg2ZTA2ODBiN2Q0YjdmYjRhNjg4MjNhODcyOWI0NiBweTNrCis4NzgxMCA3YmE1ZjU3Yzc0ZTU3NjI4Y2E0MWNmNTVmNjMwZDk0MmNmYjE5MWI5IHB5M2sKKzg3ODExIDdlNTc3N2UxZjBmZGEzZjEzNmM5YzE0NmU5MzBiYzJkYmIzMGEyOWYgcHkzaworODc4MTIgMTJjYzgxMDYyZDRhODRmNjcwYjhiYTg4M2Q0NmU4OTNhMDI1OWM4MyBweTNrCis4NzgxMyA0M2M4YzFiZGQ5NGZkOGFlZmU5ODg1ZTMyMWMxMWY4NjEwNzRhZGQ3IHB5M2sKKzg3ODIwIDgzZDNkNWUwNjg3ZWZlNGQxMTg4N2UwYmVhZDM5YmI3YTE0NWJiNGEgcHkzaworODc4MjEgMmVlNmI0NDRjOTNkZWU0ODUwMTE2MDYwMzRiOWQ3OWEwNDBjMGYxMCBweTNrCis4NzgyMiA1MjYwZmQxMmM3NjNkZGQzYzlkMzIzZjVkMzEzNDk1MzQxMmIzNDY5IHB5M2sKKzg3ODIzIDBiMGEyYjZjM2FkOTgzNTc3Yjg0MjcyZGQ1YjZiYzQ3OGU5OWE2OGMgcHkzaworODc4MjQgMDkzM2MzNzUzYTcxMmI5ZjhhZjJkMjNlNDBhZTBkZGExZjhhYzI1NCBweTNrCis4NzgyNSAxNDI3MGZlODRkYzc3MWY5ZGRmODY3NWRkYTliMDA4MzY0ZDQxMGNiIHB5M2sKKzg3ODI2IDNlYTI4MDk5NzAwMWQ0MjNhYTRhOGYwNGZkZDg2YzkwZWE5NDRhODcgcHkzaworODc4MjcgMzc3ODE1OTg1Y2FmMGQwM2MzZTM2OGI5YjQ5MDNhNGMzY2UwOWFlOSBweTNrCis4NzgyOCA1ZjhlYjllN2FjZGMwNjVhZTNhMDA2ZTE3OTFmZWVjNzkyNjU4M2Q2IHB5M2sKKzg3ODI5IDEyMDc0ZjNhYjgwOTVmOTFhNDczNjhhYmFkNzFkMWY2ZmFmYzVhMTIgcHkzaworODc4MzAgZGY5YTA2MTYwMDRkOTJlOTdmODcxYThhOTVkZTM5N2QwZDkwZjU5YSBweTNrCis4NzgzMSAxMzNkZWU4MmEwMDk2MTZlMWMwZGNjZmE1ZGJhOGY5MmIxNzMzODkzIHB5M2sKKzg3ODMyIDNlNzVjZjNmNjM1NTU2N2RkYTg2ZjBhNjY3ZmE3NzcyYWQ2ZTk4ZmQgcHkzaworODc4MzMgNjY1ODdlOTBmZGZiNjI3Zjg4YWIxYWM3YTI5ZjMxMDRkYTJhOGZkNCBweTNrCis4NzgzNCBmNTk1MGRmMDNjZTIxMGM1MGNjZDk2NTFlYTRjMDY2Y2JiZDk0OTMyIHB5M2sKKzg3ODM1IDZhNTcxMTk2NTU3MWFiMjA2YjU0OWVmNGYwMDYzNjY5MGQ0NjE3MTUgcHkzaworODc4MzYgNTRmYTYyMTY1ODUzMzViMjNhYzU0ZGMzYmVmZmFkZWI2NWI0MGU0MSByZWxlYXNlMzEtbWFpbnQKKzg3ODM3IDBkZTE5MDVhNzYxZjg3YWQ4MjM0NWM2NmY0YWUzMmNjYjM1N2VmODkgcmVsZWFzZTI3LW1haW50Cis4NzgzOCAwODBhMGU5NmI0ODJiMTNjMDg4N2NlMmViNjI5YTcwNzc3YTQ0ZGI2IHB5M2sKKzg3ODM5IGIwYjc5YzM3MzRhY2RmYWY5ZmY0M2U3NWZlMzlhOTAwZTZlZDI4NzkgcHkzaworODc4NDAgY2FkMTgxMWQ5ZTEzZTlmZTgxNWQxNDc4NzhlZWMzMDYwNDdmYWMxZSBweTNrCis4Nzg0MSAzOTdiOTlmNTkxMmU3NmI2YzU3NTExZmY5ODdkNTE5MzliZjczM2RlIHJlbGVhc2UzMS1tYWludAorODc4NDIgNjMxZTgzMDAxNmMwZTc0ZjVkOTM0YWQzNWYwN2ZiNGE3Y2I4YjUzNSByZWxlYXNlMjctbWFpbnQKKzg3ODQzIDMxNDY1OTY4YWUyNjM1YzY1ZjcwN2VlODI1ZmQxZDE0MmFkMjE2NGQgcHkzaworODc4NDQgYzZiOGM1YjU2NGE4YzQ0ODYyNjdiMjg5YjUzOTJiMzU0MTI1ZDcxZCBweTNrCis4Nzg0NSA4NzU3Y2Q2NTkyOTE5NGE0YjRjODBhYzBjZjNkMDhmODY2NThmYmFmIHB5M2sKKzg3ODQ2IDI1M2Q5MWU0ZjY3MjkxNDQyNTY4OTZmMGNjMDY5NmM1MTVlYzI1NDAgcHkzaworODc4NDcgM2I3OWVjODNjZTIxNjY2ZjRiNTA2NWE3NzVjODk5MWQ0ZWFmMzljMCBweTNrCis4Nzg0OCBlNDgwNjA0NzY3YzRkMzEzNzgyMjc4MjYwOTIwNWJlYzQ0MTU3ZGNhIHB5M2sKKzg3ODQ5IDE1OTY3YjdmMDU4ZjFiNzgyYTlkMGI2MWZmYWI0YWIyMWViOWE0OGEgcHkzaworODc4NTAgMGUxZjRkZjQ3OGY2NjhhNzRkYjE3ZGQ1YjdlNTViZjc1NTBjY2E0NCBweTNrCis4Nzg1MyA2NDkyYTcxMzg4N2U4ZDkzNTBjZDA2M2U4YzRkY2MzOTMxZjVhMDI0IHB5M2sKKzg3ODU2IGRjOWE1NmRkYTQyODdmNzc2MDg2NjQzMWQyYjIxYTY5ODQyMjJhZDcgcHkzaworODc4NTcgOTBjYmE2YTY3MmYwZTliZDdjM2I2YTU0YmY1Y2I5OWM2NjI4ZjZmOSByZWxlYXNlMzEtbWFpbnQKKzg3ODU4IGQ2NTY2YTcwY2FhMGE4NGI0ZjIxN2EyYTdlN2YyMDQ2Mzc1Njc4OTQgcHkzaworODc4NTkgODIzOWVjNmYzOWU2MjU1MTA4OTdlOTM3ZTlkZmU1NWRjMGZjZmJiMyBweTNrCis4Nzg2MCBjMDNmNjRjNzFiMDVhY2UwZWNiYzVkMmU3NjdmZTZjYjI4ZjUwOWM4IHB5M2sKKzg3ODYxIDA5MzIzYzkxMTA5ZDJmY2UxZTU3MDU1Mzg0MDQ3NjVlYmU1NWU0ZDYgcHkzaworODc4NjIgYzZkNDUzNDU2MmY0MGExMjcyZGNjY2U4MTFkM2E2NTIyYWI2MGU3MiBweTNrCis4Nzg2MyBmMTJkYTUzYjhkNjgzMDU2N2ViNWJlNzgyOWNkYjljZmQxNTQ3YmMyIHB5M2sKKzg3ODY0IGFiZTIwMWRmZDNkY2UyZmI3MTE4ODllY2RhZGQ2ZDY0M2NlM2VkYTQgcmVsZWFzZTMxLW1haW50Cis4Nzg2NSAwNzU5NzRhOTBjMzFiMGM3ZWUwNWUyNmQ4MjY1M2Q1NDU4MjQxMDliIHB5M2sKKzg3ODY2IDRkMTkyNzA5MWIzOWY3OWZhMDRiMDUyMzBiYjI5MDJhOWZhOWZlMjEgcmVsZWFzZTI3LW1haW50Cis4Nzg2NyBlYTBiOTRkNDc1NGQ3NTViZWZhNDg3NTZlODBhYzIxY2QzNmZiZTNmIHB5M2sKKzg3ODY4IDIwNTE3YWEzYTM1ODlhYzYwODlhOGY4MWFiMTBkMWU3NTkyZGIyYjkgcHkzaworODc4NjkgNzI2M2JkOTBlMTEwZDQ2NmE0NGQyYzhmMTJhYTc0ZDNhMDQyYzU0MyBweTNrCis4Nzg3MCAzZWQzYzdjNmI2MDVkNzgwNzBlMGJhMTUyOTNkNDI0N2MzZTU0MTc1IHB5M2sKKzg3ODcxIDFmNzFjNDNhZDdlMzM4ZmYzMGU1ZjczZTA5M2FmYjhiYmVjYzVlOTIgcHkzaworODc4NzIgNjE1Nzc4YmU5OGU5OTUyNWU3ZGZlMjcxMjBjZGUwZjIxNTg5MzkzZCByZWxlYXNlMjctbWFpbnQKKzg3ODczIDhiYmZmMWMyNGEzMTJhMGJmNzMzODQzOGViOTY3ZDNiZDYyYTBiMjQgcHkzaworODc4NzQgOTY2Yjg3ZjIzOTVjYzljNzJiNjlmM2RhOTRhMTljZjU5YjA3ZmVlOSByZWxlYXNlMzEtbWFpbnQKKzg3ODc1IGFkYzdlMTY3MWQ4YzM5NWEyYjg4ODU2MzBlMjQ0YThkOGU3MWMzZmYgcmVsZWFzZTI3LW1haW50Cis4Nzg3NiA5ZjEzZGM0MzlkYzUxYzY5NTVkMjJmYmFlMmVhYWM4NDUyN2Q4YTJhIHB5M2sKKzg3ODc3IDE5YzA1MDUxYmYxYTAyZDIwZjhkMjEwYmU2MDU1Mjc5YWQ0OTA2MDggcHkzaworODc4NzggOWIyZTYwYWU0ZmVmOTdkYjMwZDczNzJmYTFjNmVmMmU1YWFhMzYyZSByZWxlYXNlMjctbWFpbnQKKzg3ODc5IDdlYzIxNjUzYTRkMWU1NzJlNjdlODVjMzQ5NGY5NmRlYmQ3ZjQ5ZGYgcmVsZWFzZTI3LW1haW50Cis4Nzg4MCA5NTMwMWE0Mjg1MmY1NDI1ZTlhZTEwZDlhODFiY2FmMTE5NDEyOGYzIHJlbGVhc2UyNy1tYWludAorODc4ODEgMmU3NDM2OWI0ZjQwNjBhYzY3NzljNjI4ZjNlYzBlYzNiY2NjOGYxYSByZWxlYXNlMzEtbWFpbnQKKzg3ODgyIDBjOTRjNjgxZmM1MzIwZGMyODA4ODEzMjM0ODdkNDZiOWEwYzQxYjkgcmVsZWFzZTI3LW1haW50Cis4Nzg4MyBlNGQwN2E2ZjdhYmZjMTY2MTlmYTU4OTMxMWNjY2M5YWI1ZmU2YThmIHJlbGVhc2UyNy1tYWludAorODc4ODQgNWFiOTYzNjRlNzYxOTAwZDQ1MzJhNzFlNzhkOTQyYzRkZjkwYmJiNiByZWxlYXNlMzEtbWFpbnQKKzg3ODg1IGRlNzYyYjAxYzM2NjRiNDk0N2NhMzgyMzVlYjliNTYxYTIwOTllM2EgcmVsZWFzZTMxLW1haW50Cis4Nzg4NiA1OGExYjdlOGU3NTMyMzY5ZDBmYzVmOTllYmMxM2Y3ZjFkNjYzZjM0IHJlbGVhc2UyNy1tYWludAorODc4ODcgNWY3NzkwN2IwMDQxZTdlMTJhOTE0ZmY5YmJmNTZmNTQ5MzdjYjExMyByZWxlYXNlMzEtbWFpbnQKKzg3ODg4IDRhZDYxOTZmMzBhNWIyMjA4YWZhNzY5MmU4OTdkMzJlNGFiNTQwYTYgcmVsZWFzZTI3LW1haW50Cis4Nzg4OSBlMWI4MGUzOWU0MGYzMGMzMjc1MGEyYjI5MTc2ZjA1ZjdjNTdmZjUyIHJlbGVhc2UyNy1tYWludAorODc4OTAgYjMzYmY2NjRjNDhhYTQ5NWU4ZWI5NzIzN2JiMmI3NjIwZWRiNGEzMSBweTNrCis4Nzg5MSAxNTcxY2MwNzJmYzJhZTMwOGU3OTk5MzQ3NmQyYmRhZjg0YWExNzU1IHB5M2sKKzg3ODkyIDY4MWQwNTQyYmJiZDA3ZTY0Mjg5ZTM5YzcwNTM3MzlkMDZmM2JkMDggcmVsZWFzZTI3LW1haW50Cis4Nzg5MyBmZmIyYzI0YmNiNjI2ZGQ4ZTEyZThmMzM0OWEwOWEyOTkxYzkzNDA0IHJlbGVhc2UzMS1tYWludAorODc4OTQgNGJkMjk2YzQ5NTI2ZjYzNTAzNTYxYjI0Yjc3MmM2MTQwY2I1M2M1OCByZWxlYXNlMjctbWFpbnQKKzg3ODk1IGEyMmQ2MWJlNDg0MmI0MGM3NDU0NzlmMDlkYmEzZTlkYzllNDIwYTggcHkzaworODc4OTYgZmU2ZmNhZjdiYjE3ZGE0ZmYwNTk1NGNhYzZiOTdmMTU3MzUyMzM1NSBweTNrCis4Nzg5NyBmOGM2ODMxODRhZmZkYjdmZmZiYmNiNWJmZTQxOTJkNTkzYzQ4Zjg5IHB5M2sKKzg3ODk4IDk3NGIyN2M5ZDg0OWRmNGM5ZDVhMjMxNjY5OGJkZmZmNDA1ODg4OGEgcHkzaworODc4OTkgMWEzN2Y0YmExZjkyMDE4M2ZlODIxNjcyYTQ3M2YxODNhODdkM2RkNyBweTNrCis4NzkwMCBjMmM0YTk5NDQ1OTZmNGMxMzZlMDQ4N2RkM2QzZWUzY2Y4NzNmYjcxIHB5M2sKKzg3OTAxIGM0YTUyNTI2ZTc3ZmE2NDIxNmRiMzRiYzAzN2NiODc3YjliMjM0NmYgcHkzaworODc5MDIgYjVhNzliNWNhMjAzNzJhNjAxN2I0YWFiYWY1ZjcxNGY5M2NhYzVmYSBweTNrCis4NzkwMyAzYzEyYWI5ZTIxNGU5ZWNkNTE0MGUyMTIyNDM3YjJiOTgyNjc1MGI0IHB5M2sKKzg3OTA0IGVhM2FjNjJlZmU2N2NkNGNkZjdmYTI3NWM4YjBmNDdmZjM0YjVjMzYgcHkzaworODc5MDUgYTJiMTYxZjE3NTI1MmZkZTdkMTRmYmNmZWNkMWU5N2YwMDUxZjgzZSByZWxlYXNlMzEtbWFpbnQKKzg3OTA2IDU2N2Q5NjFiZTA4M2M1NzRlYTYzNGQ5MTVjMGQxOTFkYmVjOGIwZTQgcHkzaworODc5MDcgZWM1ODg5MDk3NWYxZDJmMGNiZmM5YWJmZWJmMTZkYmViMjBjYmY2OCBweTNrCis4NzkwOCA5ODU1YzhjY2NiMzZjMGUwNGFkMTk1NGQyMGU3N2VhNDhjN2MwNmZhIHB5M2sKKzg3OTA5IGRiN2EzMmQ5MGNmNGEyZDkzNThiNzBjZjM0ZTlkNmNkNGZlMzNjODQgcmVsZWFzZTI3LW1haW50Cis4NzkxMCAzZTZkZTg4NTFmMjMxMDE2NWY3OWQxZWIzNDBiZDA1ZDYyMTFkOTdmIHB5M2sKKzg3OTExIDE0NTA1MjFiOWQ5M2Y0YWMwZTVlYWE2MmRmMTFjZmQ4YTMxMDdhMTAgcHkzaworODc5MTIgZTBhNjZhYTM0MjdhNjk2OWIzY2E4MzExZDBiYjgzNzVkZDRlYTI0NiBweTNrCis4NzkxMyBlNDdkOGQ5NTViZDYxMDgzZGYxOWMzMWRiYjM2YjIwNjkzODQ4MGMzIHJlbGVhc2UzMS1tYWludAorODc5MTQgYWU5OTRiZDQ2NjE3OGM5MmU4OTNmZDQ0MzVmZDBhYzNhZDY4ZmU5YiBweTNrCis4NzkxNSA2NWFkZDdhNDBmNzAyMmYyOWM0OTA1YjM2MDFkMTI4MjlmMmI2YjQ3IHB5M2sKKzg3OTE2IGVkZjMwMWFmMjYxNjEzYWRkMGI3MzlkMzk1YzcxYjY1NWFmODY5MTcgcHkzaworODc5MTcgYWM2Y2MxNDA0ZTE1MDU3NDQwZWNlYTgwNmM3ZmEwMDdmOTdlNTgwMCBweTNrCis4NzkxOCAxYzY1YWI0NGQzNjcxYjNkNDhmY2E0MWI2MjdhMTU0NWUxNzBiYTE0IHJlbGVhc2UyNy1tYWludAorODc5MTkgZDcwNTIyY2M5ZDRmZTdhNjQyZTFkNTczZjE5N2JkNzBjMDFjMTRjMyBweTNrCis4NzkyMCBhZDBlYjU3ZWIyYjViODc2ZDk3YTA3MzUxZTU5ZDJhOGJmMTExOWNkIHB5M2sKKzg3OTIxIGMwZjNhYzE5MzkyYjYxOTM0MzhmOGZlZmNjNDE1YmUwNThjMTA2MjcgcHkzaworODc5MjIgYjE2YjBkNzU0ZmM5M2E1N2VhYzZkOTEwMTZmMGU4ZmViODZjZDEyNiBweTNrCis4NzkyNCBkNTczOTcxMzExMjQyYWU4ODJiYzBhYjllMDU5NTYwODQ2N2UyYjNkIHB5M2sKKzg3OTI1IGRiOGQxNTkzMzEyMWMyN2ZiNjBlZjdkOWZhNGI0MWMyODJlOWYyMDkgcHkzaworODc5MjYgNzhmZjA4Y2NkMThiN2ZkYmE5ZDFmYzkxZWI0NDRlMjUwN2RmMDNmNCBweTNrCis4NzkyNyA3NTEzNzJiNzllZDY5MjVhNzcxNGM0NTVkMmY2N2IzNWJkMjMxYjc3IHJlbGVhc2UzMS1tYWludAorODc5MjggMjA5Njk4MjFiYjYxNGEzYWI5NzYyNTJkZTMwNzkyODI3Mjk4ZDI5NSByZWxlYXNlMjctbWFpbnQKKzg3OTI5IDdiNTE1OTRhMTVkZWQxNThkNGJiMjc0Mzg1ZWViYzJjOWYzNmU4NmUgcHkzay1jZGVjaW1hbAorODc5MzAgZWQ2ZDA1M2VlYmE1ZWI2NzJlODg5ZGM4ODk1M2EzNmM4MTBhMjQ4NSBweTNrLWNkZWNpbWFsCis4NzkzMSA5ZmEwN2U3Y2RmMzg2MmFmNTA3ZjMzOTVmZWViNWEzMDIyNGMxYjBlIHB5M2stY2RlY2ltYWwKKzg3OTMyIDRiNDY5Yzg3ZDdlMmVhODEzMzUyMjQzOWZlMTFiOTI0NzhjMzg0NzIgcHkzay1jZGVjaW1hbAorODc5MzMgODMwOTUyYTcxZDIxNzdkODFhNGFkZWZhMzNiNjZjNzlmYjQ1OTQxZCBweTNrLWNkZWNpbWFsCis4NzkzNCAwNDhhZDA3MTdhNDUyMjlhZjMwYjc4YmM5N2RhNGEwODRiOTczM2FkIHJlbGVhc2UzMS1tYWludAorODc5MzUgZjgyN2Y3MDNlZjY1YzBlNDAzYzJlYThjZDU4OWQyMmQ3ZDM2YWUyZSByZWxlYXNlMjctbWFpbnQKKzg3OTM2IGEzYzM3OTU4YTIwOTQ4ZGM1OGExZDIwZTM3OTQ3MWVmNTRjMzQ0YjUgcHkzay1jZGVjaW1hbAorODc5MzcgNzA3Zjg5MjdkNjYzMDYwYjdjMmVjN2Q2YTEyZTIyY2ZhMjkyMTY3ZiBweTNrLWNkZWNpbWFsCis4NzkzOCAyMjQ0YWM2YzJhOWJmYmZkM2ZjNmQzMThlNDMwNmU1MzE2ZmE1ZDhjIHB5M2sKKzg3OTM5IDU0Yzg2NDQ0NTNmOTEzNGRjMWI4NWRlYzVmMmE3MGUxZDM5NTRmMDggcHkzaworODc5NDAgYzBiOTVjZGFmNDYwYTJhODIzM2ZhYWZmOTA3ODY0MGYyOGUyOGZmZiBweTNrCis4Nzk0MSBjYjc1NGE1ODJiMzQwYzU5MDE5YzRkNDMwNDMwNzgyZTdlYWU3ZWViIHB5M2sKKzg3OTQyIDI1ODFhMTdiMjlhZjAzMzE5MjI1YjAzYjg3YjAwNDNiMWRlYmUwNGIgcHkzaworODc5NDMgZGYzNGJiMDg2OWJjODUyZDRiNGZkMDdjZTI2N2IxY2E3NzA0NDUzMSBweTNrCis4Nzk0NCBlYzk2YjViNTcyM2JjZjQzMjY3NTAxMjQ1YzQ3Yzk4YmU5Y2Y3NDE5IHJlbGVhc2UyNy1tYWludAorODc5NDUgMWIxYTY0Mjk3MTQ5N2FkMGNlNTgwZDY3MWFmODMxNzdmYzYyOWZjYSByZWxlYXNlMjctbWFpbnQKKzg3OTQ2IDdmMGQwYzlhMmQ3MjkzOTljMmYyOGNjMzkwMjhjYzUyOTBmY2FkNjYgcHkzaworODc5NDcgMjY5Y2Y0NmMwOWFmNWI4MzM3YjkwMjE3YjIyNjkwMjQ2NGFiMjliNCBweTNrCis4Nzk0OCBmZWY1MjFmNDVhZjNhOTBhNjhiNjc0MDk3MTUzM2Q1MWE3ODM3ZGQxIHB5M2sKKzg3OTQ5IDQ5YjBiMmJjMGU4MzMxYmRmOWU0MjBiZGFmMzJmODFiZGYxYjZkOGYgcHkzaworODc5NTAgNDM1MDcyMWRlZTU1M2YzY2M2MTVmZmI0NjQzZTcyZDIxMWMyMGFlNSByZWxlYXNlMjctbWFpbnQKKzg3OTUxIDYwMDkzODhjYTVhMjNmZmNhYjc2MjE1YmYzZjliYTFjOThhMjFjMTEgcmVsZWFzZTMxLW1haW50Cis4Nzk1MiA3NGJmOTNiZTU2NzEwMmQxMThmNDM0MjgzMzRmY2E5NWUzMTQ3YTJlIHB5M2sKKzg3OTUzIDYwMWJjYjZmZjc1MmQ3NWM3MDJmMWJjZWIyNDgwZDE3MDNiNmE3ZjEgcHkzaworODc5NTQgMjM2ZTExYmExOGM1NzM5NmQ1NzJlNGI4MmU0YTU3MWVmOGY5MzZmMyBweTNrCis4Nzk1NSAyZWExY2ZkZjkyOWJlZTA5Mzg2ZTU2M2MwYzI0MTE0MDQwNzA1NmYwIHJlbGVhc2UzMS1tYWludAorODc5NTYgZGRhYTE3YzA5OGQ5M2RlZGM2N2NiNzZhZjYwN2Y4MjM1NTk0MWFlMyByZWxlYXNlMjctbWFpbnQKKzg3OTU3IDkxNDQ2ODE3Y2MzZThlNzNmY2U0MGE3OTNkNzUwZGMyNjBlNTA4ZmIgcHkzaworODc5NTggYTUwMjE0OTY2ZDI0ODJlYTZlZWFlMjdmNmVjYjJhMDc0YjE2YzBmNyBweTNrCis4Nzk1OSA3N2ZlM2YxNjA4N2FmOWYxYzczNWU2MWE4YWVkMTAxNGRlNmRlYTNmIHJlbGVhc2UzMS1tYWludAorODc5NjAgYWVjY2JkMTY5NzBmOGY2NWEyMmY2YTU3ZWYwOThlZTMwZThkOTQyYyBweTNrCis4Nzk2MSBlMTUyNjBhNDRlNDQ3OGZhNDZkZjcwYzJlYzc5MjBiMDNkYWEzYWZmIHJlbGVhc2UyNy1tYWludAorODc5NjIgNTA0OGIyNzIwMGQ3NGExMDc1Y2ZlNWNiZTNlMDc1ZTUyZWVlYWVhMCByZWxlYXNlMjctbWFpbnQKKzg3OTYzIDZjYzUyNzdmNWU3YWEzMzM1MjFlYzc0NTZmZTE1YjNlNmFlZjdhZjAgcmVsZWFzZTMxLW1haW50Cis4Nzk2NCBhYzBlYjVkZjJjMDViZWMxOGUzYTk3N2MyYzljMjA4YTU4YWM2ZDA5IHJlbGVhc2UyNy1tYWludAorODc5NjUgZDEyMDIxOGQ4MGFiNDNiNGM3ZWU5MmEyNWJhYWYzZmViZDNmMjFkNyByZWxlYXNlMzEtbWFpbnQKKzg3OTY2IDNlZWFlY2YwMDVjMTRkMzhjNGY3ZDIwNWEzNTlkYjFlZjY5YzQzMmMgcHkzaworODc5NjcgNmRjZDQ5MTUwNmVkNTA1MzMxODg0NzJhNTk1OWIzZDgyYjdlMTQyYyByZWxlYXNlMzEtbWFpbnQKKzg3OTY4IGI5YjU1MWVkMDg1OGQyYjdkYjE0MzNiMDMxZTgxNWQ0NDIxMjcwMjggcHkzaworODc5NjkgNDVhMzkxY2RjNjhhYzI4ZGNkM2Q0YWJmOGEyYTBmMjM2OWZhM2YxYSBweTNrCis4Nzk3MCA0YWJmYjc2NzBlYWRkYTkwN2JkNjFlMjJlMTUyMTk3MDIzMzYyMWY4IHJlbGVhc2UzMS1tYWludAorODc5NzEgNDFiZGMwMzJlNzFhY2Q3ZjQ0NTU1NGE1MTFlYWE5ZjVjYjA2NjA2ZiBweTNrCis4Nzk3MiBlMWNjMzU3Mjg0ODFlZWRkNGI3NTNlNjBhYjcxYWYwMmU3MzkwOWU5IHB5M2sKKzg3OTczIDRlODZkNjk1YmE5OGE1ODIyOWRlNDgyZTM1MmQwYjY4M2Y5NmUxYTIgcHkzaworODc5NzQgYzY2OWE2OTc2YmY4Y2YyYjdhNzQ3MzYxMDVlNTUyZWI0YWIwMjVlZiBweTNrCis4Nzk3NSBjY2JkNjU4N2Y4ZWQ1Yzg3MjJkMDQ3MjI1YmEzYzAxZTE2NzBiZGJmIHB5M2sKKzg3OTc4IGY5MTZjMmFhMjM4ZmU4YTIwY2U2NThhMmI5ZmFhMDg1YWQwMzQ2OWMgcHkzaworODc5NzkgZWZkZjI1NjE3YjdjZDQyN2VhNDdiODk0YmVjM2I4YWMyYWU5ZTU0OSByZWxlYXNlMzEtbWFpbnQKKzg3OTgwIGUxMjVkOTJmNzQzOGUxMmZmZjhmM2NkM2RjNjU5OGM3M2MxODA1MDEgcHkzaworODc5ODEgODcxOWRkNzEyMzg0ZGI1OTY5YTUyOTNlZDJhNGRjMTk3M2U0M2ZjYyBweTNrCis4Nzk4MiAxMGQ2N2RiNjc5NDIwZjRlNzUzNzk1Y2I0MjYxOTVhNDZkZWQwZmJjIHB5M2sKKzg3OTgzIGNiZGM4YjFlNmJkMzljYTFjNWE5YjRjMGM3OTY5MTYzYzAzYmI3ZWYgcHkzaworODc5ODQgNGVhZTMzZjM3OTdjNWQxY2QyMmU2OWQ0OTg0MWZlYjdjZmU4NzczOSBweTNrCis4Nzk4NSAyNWQ1M2U0NDk3ZDg1MjdkODllMjYwMGI3ZDg1ZDc5ZjBkOWExM2VlIHJlbGVhc2UyNy1tYWludAorODc5ODYgMmYwODk0YzAyYmYyYjg4Y2EwMjJmMTlhM2U5MmRjZThlZjgyYjgwNyBweTNrCis4Nzk4OCA3Y2JiNWYzYjY5NTRiOWFjMmYyNWIyOThhNTFhNmIwMDRiNjRmYTVmIHB5M2sKKzg3OTg5IDdkNjU4YjQ5YjNlMTRlOWIxNjNlYzJiM2JjMTZkOTQ5MWQxNDUwMTAgcHkzaworODc5OTAgM2FjOWI3Y2Y3NjE0Y2RlMDJmNWFkYTA1MzQ1YjMwM2I4NTZhYjc3MCBweTNrCis4Nzk5MSA2MDhmM2E2MTU4YThjODEzMzc4OTA3NTMyMTYxZWIxNTU1ODE5YThiIHB5M2sKKzg3OTkyIDQ3NGIyY2UwNzk0ZmZhZmZjYWU0ZTM2ZGM1MWZkOTUxZjQ1NWExYjcgcmVsZWFzZTI3LW1haW50Cis4Nzk5MyAwMzUzYjE2MTNhYTgxNGJjNmM5M2UyNDQ5ZTIyMzQ5YmUxMjg4YTQwIHB5M2sKKzg3OTk0IGYxOTgyNGFhYjM5YzgwYmQ0NmNlY2NmOTg5YmExNjAzY2ZhOGM2MWQgcmVsZWFzZTMxLW1haW50Cis4Nzk5NSAyNDRhMjc0NzczOTZkNGEyOTgwNGE0YmZiYWFlMTA2OGMzNzJmOWIxIHJlbGVhc2UzMS1tYWludAorODc5OTYgZjZlOWFjNGI4ODEzNmIzOGQ5NDdjMWU2MDE1ZmZhMjkxYWYxNmFlYSBweTNrCis4Nzk5NyA3Zjg4ODhiNGZkZmNhZmU5YTNkMDBlODIyMTlhNjVjOWUxZmU3MzdjIHB5M2sKKzg3OTk4IGQ4NjQzMjhhNzRlNDE0MmFhMjg2ZjgyMmM0YjgyN2QxYjcwY2Q5MzAgcHkzaworODc5OTkgOTZmZmU0YTMxMWRkNGQ1ZjA1NDhjM2JkMDVkNGUzM2JlZTRjZjM2ZSBweTNrCis4ODAwMCAzNTkzYjBkOWNhYTc0YzkwNDhiMDlkODRlMDE5ZDQxNzVmMDBjMDI2IHB5M2sKKzg4MDAxIGZlYmUwNGE2ZDQ4NjRkZDg4YTg4MmYxN2YzM2YwMTAyYjQ3Zjk2MjMgcHkzaworODgwMDIgNDQzMGU0ZDYzNTk0N2EyYTE0YmQ1OGIzNjQ0NDIyNTg4MWE1YjIxOCByZWxlYXNlMzEtbWFpbnQKKzg4MDAzIDE4YWI4ZTBlNjcwMjViYzMzOWJiNDJkZGJmM2JlMDQ4OTMyMjI5YTYgcHkzaworODgwMDQgMmFmY2RmNjhhMzg5MWY3OTUyYmExYzhlMzMzMzRkMzc5YjY0NTAxZSBweTNrCis4ODAwNSBiMDRkYTU0NGUxM2JiZjU0M2Q3ZmNkZjJmY2I0NDAwNTZkNjgzNjE5IHB5M2sKKzg4MDA2IDQ4NDU0NzY1ZDhlMGNlNjU1MGEwNGM0ZDUzYWIzN2EyOGE5N2M4NjggcHkzaworODgwMDcgOTExZDBhNzQ2MDllMjE4MDIwZDNkZmUyZWQwYTE4NGMwNTBjNTUwOCBweTNrCis4ODAwOCA3YjJkN2NlZGFmYjBhMTE2MmYwZDI1YmZjOGZiNjBjZGY1NzBjM2U1IHB5M2sKKzg4MDA5IDBiNGM5OTUyOTlkZGNlZGQxNTI3YTJjZWNlMmI5MDdhMjZlZmIxMjYgcHkzaworODgwMTAgNGRjNTUwMzczMWZlYTE3NjdjZDZjYWU4ZWQ5YThjMGYzYWUzOWRlNCByZWxlYXNlMzEtbWFpbnQKKzg4MDExIDI5MzAzOTNmMGJiYjkxZGE1YzRlNjA0NTVhNWU2ZGFlNDFiODNhYTEgcHkzaworODgwMTIgYWUwOTk0NTgzMzQ1MWJiOGNiNWM3MzE5ZWYxYWU3OWY5MmYyZTk5OCBweTNrCis4ODAxMyBjMGM1OTRhZWY4NDIzNWU3MDBhMmYzMmFjNmY0OTI5ZGJiYmM0M2ExIHB5M2sKKzg4MDE0IDM5NjlhNmNhMTZhZjI5MTc2YzQ4NjUyODNiODZmMmUwOGRlNWQyOWQgcHkzaworODgwMTUgM2Y5OWMzNmQwMGI4YWQ1ZjI3YzU2OWVjMDE4NjcyYzE2Mjc1NzE1ZiBweTNrCis4ODAxNiA5M2I3YzA1ODBjNDM0NjliZmJhMTdjZjUxMTg4NDVkOGMxNGEzNDJlIHB5M2sKKzg4MDE3IGYxMzBiZTAxZDIzMDBkOTk0MzJmM2JhZWNjZWYxZjRiYWY3OTEyMzAgcHkzaworODgwMTggYmVlYWIwZmE0MWU1ZWFmZjY5NmFhZTU5ZjIzMmM2YjQ3ZTAwMzcyYyBweTNrCis4ODAxOSBiMDM3NDdhZGE0NGQ2YTgwMjUxMzYxMmEyYTQ5OTA3ZTJiNzM3NjE0IHJlbGVhc2UzMS1tYWludAorODgwMjAgZWYwNzc3YWY5OTc4ZWUyYjI3ZjQ0Yjk4OWY2YWNmZWY2ZjRjMDViMiByZWxlYXNlMjctbWFpbnQKKzg4MDIxIGI4Zjk3ZDhjZDQ4NWYyN2FkMzVjMzNkYmRhODRhZDA0ZjIwZWIwMjIgcHkzaworODgwMjIgM2MzMTYyMzZlYWJkMmFlZDc3ZGI1OWRkMDZmOTc0OGRlOTIxNjRhNCBweTNrCis4ODAyMyA0MWQ4NzRlY2JkODFmYjQ2NjE3Zjc4ZGIwMTVhNTRlMGZmZTg3OWFlIHJlbGVhc2UzMS1tYWludAorODgwMjQgN2FjYjgzOWYzNjEzMmViNDhhYzZlODBmMDY1YWUzN2NhOTdiYjdlYiByZWxlYXNlMjctbWFpbnQKKzg4MDI2IDhkZGNhZTJiNjRiNDcxZmQzZWVhNzAyNDljMjJhZjczNDJkMjJlMWEgcHkzaworODgwMjggNGEyMGUzY2EyNWU5YWQ3ODE0MzRjZjgxZjVhYzM0ZjQ2MDg1OGRmMyBweTNrCis4ODAzMiA5MDc2ZTQyMjBmYTRmMGQzNzBlNzA3NGVlMjAyN2JiZTAxZGVmOTU5IHB5M2sKKzg4MDMzIGU4NGQ1ZWZhNmQ3NTRiMTNlNDY3ZGM5Yjg0MDg2ODg1ZjNjMmFlODUgcHkzaworODgwMzUgYWI5ZGM0MjU0N2MwOThlMzQ3ODY0ZjZhMjA1YjRhNTk2NmRiZGUxMSBweTNrCis4ODAzNiA4NjVkNWIyNGJmMjhjYTQxYjUzNmJlZmMzMjY0MDdjMDNlNzRhNGQ1IHB5M2sKKzg4MDM3IGZlMTAyM2FmNmI1OTY5ZDRjNTE0YzQyZTkxZWNmY2VmYzEyYmU2YWEgcmVsZWFzZTMxLW1haW50Cis4ODAzOCBhZGE3MDJjMDRkMTRjMzc0YmVmNjFmNjJmMWRiYmQ1NjQxMGRjNjhhIHJlbGVhc2UyNy1tYWludAorODgwMzkgNDJlZmMxMWFiNzgyZDBkMWQwMmM1OGY4N2M2MmQxNTljN2JlOTk5YSBweTNrCis4ODA0MCA4NTY1ZTcyM2I0YTBlYTNkYWExNGI1MzVlYTI0NWFlNzQxY2NmY2RmIHB5M2sKKzg4MDQxIGZjMWQxNTkxNzg5NTVmYzIxOTZiMWQ4Mjk0OGFiOGRiMTQ5NGQzY2MgcHkzaworODgwNDIgYjExMDRiNDI1MTM0YzZlOWRkMTYzOGJhNGJkYzQ2Y2M2OGMwNjUxYSBweTNrCis4ODA0MyA5ZjI4MmNmYTg5YTIxODZhNWU5NmIzZjM1ZTUzMzc5NzU3OGYxZjYwIHB5M2sKKzg4MDQ0IGI3YTk3ZjExYjQxYjM3NmQ5NDFhYjQ0ZDMzYjFiZjQ4YTRjYTAyZjUgcHkzaworODgwNDYgYzkxZGUzMjY4MzVlOTc4ZmQ5NWZlOWU1NjBiZDA1Njk1MzUzNjViZSByZWxlYXNlMjctbWFpbnQKKzg4MDQ3IDFmNmUwNDVlOGE2OWJhYjVjNTVjZjZlMmU4YmRiZjY2Yjc3YTAzMmIgcHkzaworODgwNDggZDY3MDQ4MmE1ODIxMTc1ZjljZjkxMTcyM2RkMDU0MzViMWQyMTM0OCBweTNrCis4ODA0OSA0NWRhODMzMjc2MzVmZGJjZDVjNDg0NTNhMTI4YmNiMTUxYWRmMGUzIHB5M2sKKzg4MDUwIDJjZjY3YzZhYTZlZTY4ZjBhYmU4MDdhNjUzZDIxZGVhZDBlZjFkMWYgcHkzaworODgwNTEgMzg0NzM3YTc0MDgwZTNlMTc0YjVlODVjOGZiNjUwZDU2NTdhNzYyNSBweTNrCis4ODA1MiA0NzI0Yjk0YzU3NDU2OGI2MjM4YmQ3NTA1MzFhMTI5OGJkNjhiNGQ4IHB5M2sKKzg4MDUzIDM2OGU5MTAzMTg4MDIwMGIwODRmM2Y2MTZkOGYxZTJjYmRmZmM2MmIgcHkzaworODgwNTQgYWVlZmEyMjFiYmU2NTI4MDVmMGY1MmY4NDYxNDNmYWEzOTE5NTAzYiBweTNrCis4ODA1NSA2OTFiYzJjMmZjMjJkNTVlY2RkNTVmMmEwNGFjNmJlYjZhZGJlNjdkIHB5M2sKKzg4MDU2IDUyNWFlYWEzZDUzZjI5ZmU1MGE0OTY1ZDc4NzJmMTdmZDJjNjdhZmUgcHkzaworODgwNTcgZmFlYzFiNWE5NmRiNzQ0ZDc2Yjk5YjFlMTJjODU2ZDBhNzZmODA1ZiBweTNrCis4ODA1OCAzNjkxMDg1MWE3MTVjZmI1ZjU1NGVlMzIyNDYwZDcxM2ZhNGFmNzAwIHB5M2sKKzg4MDYyIDdiMzFiZWI4OGNkYjJmMTk2ODMwNGUwMjhjZDQ4OWMwY2RmYWVjYzMgcmVsZWFzZTMxLW1haW50Cis4ODA2MyAzNjc0ZGNiNDFhOTRmMzBjMDcwZTllZmNkYWFiOTU5ODlkZmQ3MDBjIHB5M2sKKzg4MDY0IGRkODdiMGVmY2RkODM0YTJlNWJjNDU5MTA0MWFmNjI0NzUxNjFjYWQgcmVsZWFzZTI3LW1haW50Cis4ODA2NSBjNTljZWEyMTg1NDc2NzM1ZDBiN2RlYzczNWE5OWI4MWY1OTVmMGZjIHJlbGVhc2UzMS1tYWludAorODgwNjYgZGY4YjZhMmJkZGRkNzJmOGQ0MGE4MjY0MzAxMTFhOWE2ZWFhYWRkMyBweTNrCis4ODA2NyA4MTFiNGZiOGYwY2M2OTIwMWE0YjE3OWQwY2YyNzFiOGIwYWM1ZDQzIHJlbGVhc2UzMS1tYWludAorODgwNjggMWY2ZDE0MThjYzE4MzE2N2JiZGFmNmJjMGI2YTBjNWZlODBiOWI3NiByZWxlYXNlMjctbWFpbnQKKzg4MDY5IGE3OGM2ZDBjM2Y2OWNkOWY3NjNiMjE3YTBjMzMzMzRlZDE0N2NjMzAgcHkzaworODgwNzAgNmU4ZTBmZTE4MjA1ZjAwYTI1MjY5ZTFiODcyODJkOWUzNzI2N2RmZCByZWxlYXNlMjctbWFpbnQKKzg4MDcxIGI5NDhkYmQxZmFjMWI0YjdjNmI0MTFjMWFmYzYxMWE1YzY4YTI4Y2QgcmVsZWFzZTMxLW1haW50Cis4ODA3MiBjYWNjMzVhMWUwYzNkMTU5ZGU4MzE0OTQ5YzZkNDdmNGZmN2I4MGIwIHB5M2sKKzg4MDczIGQzNWEyNGE5NDcxNzhkNDkzZTQzN2NhYWQyY2EwNjE1MDU3ZTEyYjUgcHkzaworODgwNzQgNGQyNzVjNTgyMTRiMzEzMjkxZDI5ZGEzYThiNTJjYzQ0MWZmZTdkYSBweTNrCis4ODA3NSBlZGUyNjBhNTNmYjUwYTg3YTlmZjRlMmNiMjczYWQ4YmQ5MDU1NTQ2IHB5M2sKKzg4MDc2IDI5NWZmNTVhMjY1ZTdiODcxNGZiMTA1MGQzNzY5M2NmOTgxNGU1NmYgcHkzaworODgwNzcgOWEwMGRlMjUwZTFlNDk4MmMyY2QyMTIwMDIxNmM5MzJhYzJlODVjZSBweTNrCis4ODA3OCA4OTYyOGYzZWNkY2JiN2I5YWZkMTM0MGQ1ZTc3ZWYwMDMxOWY5YzQ0IHB5M2sKKzg4MDc5IDQxNTE3M2Y4N2Y0NWQ4MjFkYzEzMjk5OTBjNGUyODVhNjUyMTg2ZjIgcHkzaworODgwODAgNmU2ODI2NTM4OTc0M2IxM2ViZDVhYTNiM2E5YjA5M2MzODRjN2Q3NCBweTNrCis4ODA4MSBmZDhlODBmYzJkOTQzNjRlZDRlOTQyNjI3ZDQyNTNkZjk4MDJmNjY1IHJlbGVhc2UzMS1tYWludAorODgwODIgNjEwMTYyOTgxMGUwMGRkMjUxNjM3M2RjY2VhYjA4ODc3MzNlYTlhZCByZWxlYXNlMjctbWFpbnQKKzg4MDgzIDk5ZWFiNWVkZjk5ZGVjNzJmYzdkMDM5NzYwMjdkYzU4M2IyZDYyNGEgcHkzaworODgwODQgNTdiZDBkODY0Y2IwMzdhMTQ3Y2MxZTEwZmQ0Nzc0ZTBlNzRiZTRkOSBweTNrCis4ODA4NSBmNWEzYjYzOTdhNTM4ZDgxMDIyOWMzNmM0ZjkxNDQwOTJjZGJmMDBhIHB5M2sKKzg4MDg4IGVkOGYwNThkYzY0YjA3NWNmNTZlMjc5NjgzMDIxNmY1NGRhYTI1M2IgcmVsZWFzZTMxLW1haW50Cis4ODA4OSA1MmU4MDI5MTRjZjg5NjIwYzhlYTc4NjY2MjIzMmM0ZDQ0ZGQxYWMzIHJlbGVhc2UyNy1tYWludAorODgwOTAgMmQ0MmY2NGIyOGZkZWYyMWNiOGE1OTkzMTBjNjQ1OWM0YTRlMmZiZiByZWxlYXNlMjctbWFpbnQKKzg4MDkxIDM0ZDQ4ODQ4ZDQxYmM4MTFiMzYyMmZjY2FmZDJkMWY3YmZjN2NiYjcgcmVsZWFzZTMxLW1haW50Cis4ODA5MiBmNDQxYzZlM2E3NjkxMjljMTE4MDRjN2VlODM0N2VmYTI1NzU1MjMwIHB5M2sKKzg4MDkzIDRlMGJjZWM4MDlkZDgwOTRiOTlmMWY1MTcyN2QwMGQ0Mjc2YTZlYTAgcHkzaworODgwOTQgNzYxZTlhZDE2NWVmMWZjMTliZDNmNWVjM2ZkNGUyODgwYjFlM2Y3ZCBweTNrCis4ODA5NyBmYzVkMDJhZTUyZGQ2YmQ4Mjc1MjAzZDU3MmZmNTQ4NTA2Zjc1Mzk1IHB5M2sKKzg4MDk4IDJmZGU1YWJmYjVmMWI3ZmJhMGYxNzlkYzMyZDM4NDMyMjU2NmNjMGEgcmVsZWFzZTMxLW1haW50Cis4ODA5OSBlYWM1NDU3ZmYxOTViMDhlZjc1NDQwOTliMzFjNTRjM2IyMzNlZDZmIHJlbGVhc2UyNy1tYWludAorODgxMDAgNDk2ZWE1MDI4YzAxYWM1ZDcyODIxNzUzNDExZmQ3MDQzNWJjM2I2OSBweTNrCis4ODEwMSAzODI0YmVmMzc2Y2M3ZmVhY2YzMDg4MDlkNDJkNzg4NDE4MmI3MWE3IHB5M2sKKzg4MTAyIDEwOWFmMDM5ZjQ0ZjBkNTk2NjI3MmFhNTZkMzFhMTA2MWNkM2I4NzQgcHkzaworODgxMDMgY2M4OTc1NzI0ZjlhOGJmNDhhNWIzZWU0MjJhMDY5NDI5NWQ0MDcxNiBweTNrCis4ODEwNCBkNzA1OGY3NGJkMDRiNGZhNmZkNWE4ZjZkN2NjM2Q5ZTQ3N2Y2Mzc5IHB5M2sKKzg4MTA1IDQxYzUxZjVjZjVkOTk0ODAwNjJkNTAwNzAyMTc4MDBiZTA4MTY4YmIgcHkzaworODgxMDYgYTdhYTgzNzNiNWZjYjUyMDRhNzFmODk2YjhkMWExMTJiMDUxMDllZiBweTNrCis4ODEwNyAzYzFjOGQ0MjY5NjYzMDFhYmVlZTM4NzE3ZjkyZDE1ZDdmOGU1MmRlIHB5M2sKKzg4MTA4IDk5MTQ3MGJlMDM0MGJlMGM2YmFkZDZmMDJmYzAyMjRlOWM2YjJhNTIgcHkzaworODgxMDkgZGU5MjUzNjFlYmE1MTE2NzY5ZGNlMzVlMTZmMmFmOTRkYmUwYmFjNCBweTNrCis4ODExMSA5MWFiZTg1NTA3MmEzNjZkMmQ4ODE4YzA1MDI4NzczMzZkNmRkM2MzIHB5M2sKKzg4MTEyIDA3ZTFlYjI0NGRmODhiMzY4MDBmMmJhNjg3YTI4MjJlNjczYzY0ODIgcmVsZWFzZTMxLW1haW50Cis4ODExMyAwMmVjMTk5N2Q3NWU4N2NjNWI5OGYzOGIxNGRhNjg3N2UzMzIwZjlkIHJlbGVhc2UyNy1tYWludAorODgxMTQgYzM1NDAwYzM2MzA0ZTg5N2E4NDBlNDhiMjI5ZjM1YzczYWZjNWEzOCBweTNrCis4ODExNSBhOTI1ZWE0ZTEwNWY4MTRmZmFmYzlmZDlmMzE0YjkxZmJmMzc0ZGUzIHB5M2sKKzg4MTE2IGI4ODBjODIyN2MwMjcyYzJkMjE5YzFiNzY5ZmE0MDMxMWFhODFlMjAgcmVsZWFzZTI3LW1haW50Cis4ODExNyAyMzNjYzc0MDI3NGI3MTI2YjQ3ZmFlNzg5NWI0NGEwMjRmNTRiM2FlIHB5M2sKKzg4MTE4IGU0ZTRiZmMwOWUxOGRiM2NmY2M0OWE1YjBiMjk2ZWI5MDRjN2YwZWIgcHkzaworODgxMTkgNmI4YjZlNWFlYzBhNWY0NDhkNjg1MWE0YmNkOTNkMTA5MjVkNDQ4MiBweTNrCis4ODEyMCA3ZjdjMmFhYjg2MWMxMWE4NDBmNDRiYTQxZjM2OGRmZjAyOTQ4YTVmIHB5M2sKKzg4MTIxIGRhNDRiYjBjZDRlOTkyZDg3NjgxOWZmNzdhMmUxZDIzZDRmMGM2MjUgcHkzaworODgxMjIgZmJlYmYwZjA2MDU3OTgwOWIzZmIyM2UxMWY4NmI3NjE3YmQ5MWVlNyBweTNrCis4ODEyNSAzYjNjNTM2MzA2MzdhNWEzYjc0OGRhYTIxYTliYmU5ZjUwYjJlMmFkIHB5M2sKKzg4MTI2IGFlZjQ4MjQyMGU5NmNjYmEzOGZlODA3MjlkYjRlOGZiOGE2YTM5MTYgcHkzaworODgxMjcgY2U0MDc1NGE4NDJhM2RiNTFjMWM2MjQ4NTAxNzI4NGUxMjUzZDQ3ZCBweTNrCis4ODEyOCAzZDMzZjQxZTgxOGRiZjFjZTZhYzhkMDFmMGFiNmM5ZmI4NWEyN2IyIHB5M2sKKzg4MTI5IDkzZTk4ZDQwZjJhNWE1NDk5ZDEyZDIzMmQwYjU0MGIzNThkZGVlNGIgcHkzaworODgxMzAgNWU3MGVlZTg2YzYxMzBiMWJkMjE3NmE1MzAyOGIwNjg3YzFiZTdlZiBweTNrCis4ODEzMSBjODM5NmQyN2Y1NmU4ZDY1OWVkOTI4MzRmNDNlODUzMjY2Y2FlMmYzIHB5M2sKKzg4MTMyIGYzNjUzOGJhOTBhOGZhMzBhMGVjODE5MzlmOTg4NjMyNDlhYTQ4ODIgcmVsZWFzZTMxLW1haW50Cis4ODEzMyBkZjkxYTAxOGRlM2FiNTA1OGNjYTA2MTNlNmUzYTMyMjY1ZWE2ZmFjIHJlbGVhc2UyNy1tYWludAorODgxMzQgZmI2NjhhYWEyZmE0ZjBkNzVjYThhODg1NWI1ZjgwYThmODg1YTU4OSBweTNrCis4ODEzNSBlNGUzMmM0ZmY2MjYyN2EzZTVjMGI2NDE2ZDkyM2JiMGU5NDVlZDg2IHB5M2sKKzg4MTM2IGNjMjE2MjcwOGJmNjJiNWJmNzVhYzE0MDBhYWE2YTcxYTAxOGU5NGMgcHkzaworODgxMzcgOGUwYjYxN2M2YzIyMTZkMzQ5ZDgxODk0ZjAzNmNlNGQzODRiYjQ0YSBweTNrCis4ODEzOCAxNjQ4MDExYzY1ZGE5YTBjMjZkYmJmNDY3ZDQxNWE2NGRlOTQwZGFlIHJlbGVhc2UzMS1tYWludAorODgxMzkgMjQxNjFjZjQwNWY0YzIyMzc0MzBiN2ZlOTZhMDk3ODU3ZDRhYWVkMiByZWxlYXNlMzEtbWFpbnQKKzg4MTM5IGRlOGRiN2FhZjdhMjk2MDU3YWUyNjEyNWI5OTYxOGM5NjFiNGZlZjYgcmVsZWFzZTI3LW1haW50Cis4ODEzOSBjNDA4MTdjOTU1MTRiMTQ3MWRiMjY3MGUzNDc0NzQ4ZWM4NDM5MGJhIHB5M2sKKzg4MTQwIGI5NjgwNTNhZmFkMGRjNTFlOGIwODdlNTlmZjExZTU5NDk4NjM4MWMgcHkzaworODgxNDEgNzg4YjAxYjVhNzRlYTE3YzYwZjc3ZDZiMmQxZTlmYTgwZjViNTc4ZSBweTNrCis4ODE0MiAzMGM5MTM0MmI2YWU2MzY1YjczM2IxMzM2MDcyMWRkOTRiMDcyZDc3IHB5M2sKKzg4MTQzIGIzY2FkZjVjZjc0MjZjNWIyNzgyMGU0Zjc3ODk3OTBiZGM1YjAwMTAgcHkzaworODgxNDQgMDg2NzNlNWY1NDlhMjdjYzcxNTgxZTY3OTllZjdkMGQ2YWJmNmMxMyBweTNrCis4ODE0NSBiYWE5MjJiNDYyMzdkYjJiMjlhMjg0MDMxNGRkMDZjMzcxZTEzOTU2IHB5M2sKKzg4MTQ2IDRmN2YzOTk1MTk0YTFjOGIwM2Q0Mzg2MzFiZDY4YWNhNGUxMzgxMGUgcHkzaworODgxNDcgNGM0YWJmYjg4NGZiNDhmZTE1Y2NkNmFjNmViYTU5ZWU4ZmQ1MmQyMyBweTNrCis4ODE0OCBiY2YwMzBmNzNlZWViNDE1N2NkOWRmOGYyMzUwYTdlZDUwYjM3ZjM5IHJlbGVhc2UzMS1tYWludAorODgxNDkgYjhjMGNhMzU5NzlhMmNkZThjMWY4N2ZmZTQyNTBkM2Q4NzRkNTZkZSBweTNrCis4ODE1MCA0MzFkZGNkYjQzMTA2YWQ5YjZiZWIzOGE2NGI2ZDlmMzBmZDEwNmI3IHB5M2sKKzg4MTUxIGZjMmFkZTg4YWI0MTc5ZmI4YzFlZDM5ODllYWNhZDcwYTAwMGM1NmIgcHkzaworODgxNTIgZDFjMDYzMDZjMTliZTgyYmUzOWIyNGJiNmZjZjZkNWViYzkxYjM1OSBweTNrCis4ODE1MyBhMGE1YzVkOWFhNGZkZjFmMTY0NDI3ZDAxZjlhMmM3MDY3N2JmYmMxIHB5M2sKKzg4MTU0IDNiYjIxZGY2NGFhNTEyMDE1ZWI0YmM0NjkxOGU1OWIxY2Q0Y2VhMDAgcHkzaworODgxNTUgNDA2M2U1MjY5ODJmMjZiYTAyYzI2M2EyYmU3ZGViYzg4ZWE2NjU0ZCBweTNrCis4ODE1NiA2ZjQwYjQ3MDllOWE1MmZkOGVjYTY0YTE3YmMwYjQxMmUzMjdlYzcwIHB5M2sKKzg4MTU3IDVhNjVlYzI4NzcxMzc0NTk2ZjJlZTRjZmIwMjM5ZWMzMjY2Y2MyM2IgcHkzaworODgxNTggZGQyN2RmOGQxNGVmYzE5N2ZlYjE3OTk4ODk1OWE1MjkzMGJkYTVmOSBweTNrCis4ODE1OSAyZGU2OTllNWY4ZjMxYTUzMjFlMjA3ODE4MTJkYzQxOGM2NDNjOWRjIHB5M2sKKzg4MTYwIDkwYTJkOWI3MDJiY2JhYWZiYTljYWQ3NzcyMTZhYmExZDVlN2VjZmEgcHkzaworODgxNjEgZjNiZmViMmZiY2ZiMDZkNWYzYmViMjgwMTRjZjQ5OWNkYTFkZDRjYyBweTNrCis4ODE2MiAwM2UyYTg3NTU3MDkwYWE1MmJhMDI4YjRkYmI2NmJmNzQzZTIzNWZkIHB5M2sKKzg4MTYzIGMxNzVmNWRmZjM5NjA0YmQ5MDdlNDUyOGU3YjRjZDg0MGZjNGQ3NWMgcHkzaworODgxNjQgODI1ZWJhZGViZjliYTI5MjE4NWVkNmVkZDM0OGIzNTMzNzI0MDZjNyBweTNrCis4ODE2NSAxZTNmMTY5YjllNDZhZTRlMWJhODMxMjI5MTkyYmM1Y2FjYzZkYmY1IHB5M2sKKzg4MTY2IDcwOTE5YmFkNzQ1ODQxZDAyNjZjN2FiZmI3YzFlZTZhMjM4NDg2ZTMgcHkzaworODgxNjkgN2Y5YTk4Zjc2NmQ3NWM5YjU5NDQ4OTAyY2RmNTQ5MWNkNDViYWFkYyByZWxlYXNlMjctbWFpbnQKKzg4MTcwIDQ3M2U0MzY4MzllZTYzOTFlMmM1NzA2NmUxY2Q1MWRlYjljM2VlN2EgcHkzaworODgxNzEgOGEzMGEyY2I0YjllMzQ3MmQ4OTJkYmEzNmQ4ZGQwZDkwYmEyNWU4ZiBweTNrCis4ODE3MiA1OThjMTk1ZTUyZjM2MDg2ZmU5MzkwMjhkY2U3MWM0OGZmZjEyMzIyIHB5M2sKKzg4MTczIDNiOTNkMDA5OWNlZDA3YzdhNWNiZDRhYThhOWVhZGQwMzc4OTg0ZTkgcmVsZWFzZTMxLW1haW50Cis4ODE3NCBiMDIyNTk1N2UwMDY1OTk1ZmIyMWE3OGEyYTMwMzE2M2EwNDA4NTE5IHB5M2sKKzg4MTc1IDkzYTQxZGY4YzczNzhjZmFiNmY3Njg4NTZjOThlMmZiZDJjY2FhZjEgcmVsZWFzZTI3LW1haW50Cis4ODE3NiAwYjUyOThlN2IyZDU0MDViZDcyMzc5ZWQ2NmIzNjgzMjg4OTg4NzFjIHB5M2sKKzg4MTc3IGViNGJhMDNkN2M0ZGYzMjMyMjNjNzZiYmM2MWQyYzgxYzFjNTQyYmIgcmVsZWFzZTMxLW1haW50Cis4ODE3OCAwZDZlY2NmMDBiNWJkNjdkMWMyMDk5ZWNmYjdlMzgwOTM3MDk2NDIzIHB5M2sKKzg4MTc5IDcxMjgxMDE3YzQzZmM0M2ZmYjE3N2QyYWQ4MWYwNWU2Y2UzZmExYjMgcHkzaworODgxODAgZmFlMTllNTUxN2I2NWJlMmJmMzA3M2QzMzc1MDM4MTcyMGQ2MGUzZSBweTNrCis4ODE4MSAwMzIyMGVkNDhiY2FlMGRlMGZjY2RjYmMwYWQ4YzY4YTViMGNkODc5IHB5M2sKKzg4MTgyIGMyYmQ2OTIwNzhkMjBlNzNhZTQxOTZkMmU0ODFlMmNjYjg3NGI0OGUgcHkzaworODgxODMgMzJjODk2Njg4YzkxZDA2OGE4NjNiNzYzZDJlMzc3ODM1ZGM0YmM5MCBweTNrCis4ODE4NCAwOGYzMmQxMWI3ZWZiYTI1NDU1ZGMwZDY5OTcyZDk3NmYwNmI5Y2ZjIHB5M2sKKzg4MTg1IDg5YTNmNmMxMmYwMjEyZGQ2MWZmNWFlMDA5YzIzYTI2ZmVmZDM3OTIgcHkzaworODgxODYgNzU3YTliMTgzNmIxOWYyYjY3ZjZhZmI2YjEzZGFhNmZkMDk0MDk5NyBweTNrCis4ODE4NyAwMDc1M2QwNGJiYmZiMzNkNTg1YTFkMTY3YmI5ZGQwMGFlMDJlZGQ2IHB5M2sKKzg4MTg4IDNjYWJjZTBiNmNhZmNhY2M5MDE4ZmE1ZGZhZmNhM2UwYmMyYjgwNGMgcHkzaworODgxODkgMjE5NzU0ZTljMzljMmZhMDYyODA0MGM5ZjJhNzVhMjMzYjY5MjM4ZSB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTkwIDcwNTc4MGJhOWUzYTA1M2I1YzhjNTJiMzc2ZGM0NzlkMWNjY2ZiZmQgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5MSA3NzZjM2MyOTRiYjczNWM0ODljMDQ2Yjg4Zjg4NzVjMGU0ZjRhN2FlIHB5M2sKKzg4MTkyIGY2MzkyYzRjZTYxOTg3Nzc3ZGY3ZmM5MzRmYTBiODllNWIzZWI0YzQgcmVsZWFzZTI3LW1haW50Cis4ODE5MyAzMmZjMWNhZmZiMTcwMjZmYTg1YTdmYzIyZTVkMTBhNTZkNWU5YjU0IHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTQgODJiN2Y1M2MyYWNkNGE5M2E3ZGIzYzZlNDQyMDJjNzRjOThlYTBmMyB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTk2IGY5OGFkNjUwOTAyOTVhNTQ0MjRkNWI1OWUyMzY2NzBjNDkzMTg3MmEgcHkzaworODgxOTcgNjViMDk3YWVkYTgwMTNjYTc3MjdjNTk5YTgwMzM0M2VmODQwMDcwYiBweTNrCis4ODE5OCA3YjMwZDljZmEwZDllNTE4ODRiNTRmMjRhZGFiY2VkNTIwZGRhNWY1IHB5M2sKKzg4MTk5IDQ4NzE4YjE5YzBkYzA4MmUwYWUyMDFiZGRjNzE4MGRmOGM3ZmVmZmEgcHkzaworODgyMDAgYmRmOTg2NGZkMjc2MDg1MzAzYTlhMTYwZmQ0ZDk2OTQ3ZDUzYjFjOCBweTNrCis4ODIwMSAxZjIxNWZkYTIzODM4Y2UzNzU4Nzc4MWQ5YWYxZmQxMTM3YWU4OTAxIHB5M2sKKzg4MjAyIGE2NzVhNDQ2ODYyMDg0Mzk3ODg1ZDE3YTMwNjE4YjAzZjNiZDRmMjMgcmVsZWFzZTI3LW1haW50Cis4ODIwMyAxZDNiZTdiMDFkODQ1ZWE2NGVjMGY5MzQwZDJkZjg0MmRmMTdhMDQ1IHB5M2sKKzg4MjA0IDhlYWEzMjc5N2Y5MmUyOTJlOTQ1ZDBjMGRlOTM4ZTkyMDRjZDI2NzAgcHkzaworODgyMDUgYWM0N2QxMWE4Y2EyNGQ0NjFmNjBhNDc5YmNlMGY3MTYyOWI0NmNhNiByZWxlYXNlMzEtbWFpbnQKKzg4MjA2IDQ0YzFiNTZkNzc4N2Q3MTUyMjMyOTY0MzdlYzQzNjE5NTg4NTc5ZDggcmVsZWFzZTI3LW1haW50Cis4ODIwNyA4MDU2MTc2YzA1M2YwNWZjMTE3ZWQ5YTUyNjUyOTk5ZTQ5ZDFmMDQzIHB5M2sKKzg4MjA4IDI3OWEwYzk1OWY3ZGFlZjBiOWMyNjEzZWUzOWRkMjUxN2ZlMDlhMmUgcmVsZWFzZTMxLW1haW50Cis4ODIwOSA1OTFkNTRmZmU5NjlkNzQ2N2NkYzEwMThiODg0N2FkMGFkMDlhY2E5IHB5M2sKKzg4MjEwIGY4MmEwNGNiMTUwYTJjMDY4ZjE1OWM5ZTM5ZDcyMGNhMzA2MWFjYzggcHkzaworODgyMTEgYjBhYjMzNTIyZGRhOWY4M2NiYWUxNDNkYzk5ZDA3YTNhYzIyMDk5YiBweTNrCis4ODIxMiAwZTMwZDQxM2I5ZTk3ZjQ2Y2NhOTgwZDc2NGRhODdmYzUyOGUzZDc3IHB5M2sKKzg4MjEzIGJhYzI5NjY4MGNmODQ2N2JjZDJkOTE3YjZhOWM2ZGFkOWQyYjk5Y2QgcHkzaworODgyMTQgYjIyY2M3NTYzYjI4ODIzMTFiZDlhZGVhNDZlMzk3OGQzMTg0NDYzYSByZWxlYXNlMjctbWFpbnQKKzg4MjE0IGZjMmFiN2NkZGNmMDA1OGE1MWY5MTUyZjhmMTljMDMwZTAzZGFmZjYgcHkzaworODgyMTUgZGQ3MzI4NjcyOTY4MzFlMDNhMTc4MjIwMWZjYjMwZDQ4YzE3OTUyZSBweTNrCis4ODIyMCBkMjFjYjZhN2ExNGVlOWFjMzNhMDMyN2NhMmE5MmQ2MjY0NjViZjhmIHB5M2sKKzg4MjIxIGU3OTU5MzA5ZjU5YzY1YjRlYTI4NjM2ZDdiMjM4OWNhZTIzZDc0NGEgcHkzaworODgyMjIgZTQwNjQzYTNjMzFkZmZmM2FiYTc2ZWZjNjVmNzg2NWRiZGZhNmUxNiBweTNrCis4ODIyMyA3YzdlZTRlMTE4NTBkMDc3Zjc1NTc2ZmFmNTdiODVjZTdmODRjZjllIHB5M2sKKzg4MjI0IDJkYjYxN2U5MGNhMGMxMjBkM2MzYWY3MGYwMmJjZjcwYmFkYThjNjkgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODIyNiAzZWY4NjUzMjdkN2IwNTgwZWMwYjAyMTRhMTJjOGJkNTk5NThkZTQ5IHB5M2sKKzg4MjI4IDg1MjE4NmU1YWUyYWM2OWUyMWQwNDIxMzAyNDk4MTY3YzYwNzFkZjQgcHkzaworODgyMjkgY2Y3NTAwZjA4MGZkM2FjNjNlNDMwYzY0ZjkzNzI5MTU0ODFjMmNkYyByZWxlYXNlMzEtbWFpbnQKKzg4MjMwIGQ3Y2QxYjYyNjA4Yjk4MzFjNTQxZjQ0MGE2MGEyYjM5NmY1Mjk3M2EgcHkzaworODgyMzEgMDg1ZTBkZDYzNzk2YjgwZDNmOGRlZTdmOTBlZDczZGFmZDliMDk2NiBweTNrCis4ODIzMiA1YzUxNzI0YmY0MTExNmEwODMyYjBjMzM3NmRiZmE4ZDIxMmI0MzcxIHB5M2sKKzg4MjMzIGJlMTFlNTY1M2ZkYTk3NTRmZWNiNDE0YjQxNjhmMzRlNzI4Y2ExN2MgcmVsZWFzZTMxLW1haW50Cis4ODIzNCA2NDcxM2UzMTY4M2Y4YjcxZTI0Yjc5Y2Y5ODdkYjljMDMxZDU1ODE2IHB5M2sKKzg4MjM1IDMzNDgxMmJhNTg3NDIyYmRjNGI4OTBmNzliZDM0YzE3ODVjNTNlNzQgcHkzaworODgyMzYgNmExZmI5NDY0N2NiNGRkZmM4Y2ZhOWRkNjdkODhmMzg3NDA3NjMzNSBweTNrCis4ODIzNyAyYWFkNzA3ZWRhNjI3OGEyYTNjNjY1NjkwNjVlZDQxNGFiMzAzMTM4IHJlbGVhc2UzMS1tYWludAorODgyMzggZjEyZmU2ODVlNDRkMjhkYzk3M2M2MTJkNmVlYmFkNjYwMDMwM2E2NCByZWxlYXNlMjctbWFpbnQKKzg4MjM5IDc5MWY1MmZiZTVlMDYwYWZiZGU0NTlkOTBjY2M3N2M5Mjg0NDc1MjYgcHkzaworODgyNDAgNWYxYWQ2NWExYjg0Yzc3N2ZkNTM0MTM5MDI1ZTA3NjU0NWJkYTkwNiBweTNrCis4ODI0MSAzYzc3NzJmZmZiYWQzNGEyNjMwMmNkMzMxMjQ2ZGI5NTVlNDQ1ZTU0IHJlbGVhc2UzMS1tYWludAorODgyNDIgYzY5MDYwOTk5NWE2Mjc2MjczNzNkNjRmYzhhZmQ3NzkzY2U0MGQxYyByZWxlYXNlMzEtbWFpbnQKKzg4MjQzIGIwZWZiNmYwZmU5NDMyNjNmNzY1ZTMwMGFkZTAxMWMwZDhkYWYzMjYgcmVsZWFzZTI3LW1haW50Cis4ODI0NCAwYzYwNGU2NTQyOWUzMmI4MjM0N2Q5NzMxNDE4NTc1ZGZlMjg4NGYzIHB5M2sKKzg4MjQ1IDQ2ZjA3ZGM0MzdmZmJkNzkyNWE1MzFmZWVlNDg4NzkwZGMzZjdlZTMgcHkzaworODgyNDYgOGExOWY2MDI5Y2U1OTdlMjk3NGEyZTRiYmYwNzViMzg0NTA5YzlhYiBweTNrCis4ODI0NyBjODI1ODhjYTNhNzkwOWRjYTdkNmY5MDEwOTNjY2I0YzlmOTM5MjgxIHB5M2sKKzg4MjQ4IGQzYjRmYTJkZDcyODhlYzcwMTE1MmY3NzA3NzUxZjI0ZjAwZGQ2NTEgcmVsZWFzZTI3LW1haW50Cis4ODI1MSAyYzkzNzJhMWM2ODViNWI5MGU0YmNhYTU1NWIwODZmYTYxZTExMjBjIHB5M2sKKzg4MjUyIGRjNTAxZWZhMDViNDEyNWJjNWU1YmU2M2NlOTM5YmYyMWMzZjU3MTAgcHkzaworODgyNTYgMzZlZWIyODJjZDg0NGVhODkwZDIxODdmM2YxYTQ0MzBkNzE3OTM3YiBweTNrCis4ODI1OCBiZmE1ODM1ZTEwZjBlNzE4NWFkNzQ2NDhiOTFkNjA3ZDZkMzdiODgxIHB5M2sKKzg4MjU5IDU5NWMyYjU2NjgxZWJiNzZkZGE4NmY3MDMxYmI5MDg1MmEyNmIxMTEgcHkzaworODgyNjEgZGZiZDk1NjhmNDljYmU5MDE3M2I2NjNkZjAxNjZjZWIwMTVkZDQwNiBweTNrCis4ODI2MyAyYmVmN2FiNjI1NmI0MjEyNDQ0NTlkY2FjZmFhYjUzZWNhNjBiZDhkIHB5M2sKKzg4MjY0IDkzYzQwODFkZmQxOTVjYmRiMDdiZThmZTE4MjVjMzIxZGMwYTYwMDQgcHkzaworODgyNjUgMjY1NzRiMDI3MDQyYzg4MDMxYTc4YTc2OWVmOGI1YjY3MDFiMWVlNCBweTNrCis4ODI2NiBhY2YzZTI0ZGQwZDBkZmQxZTIwYzkwN2Q2OTZkM2RhOTY1YThmNTZmIHB5M2sKKzg4MjY3IDdjM2RhZmJlZTlkMGI2YjFjMTEyMTVhNTJjMTY5Yzc2ODNkMGNjYmUgcHkzaworODgyNjggZTgyNTAxODEyYWUzZDMxNjU2MzVkOTdmNmY5N2E5ZjhmMWRjZjcwZiByZWxlYXNlMjctbWFpbnQKKzg4MjY5IGE5ZGRkZmJhYjI0MTc5YzBiNjllYjA4MzExY2Q2ZTdhZTE5NWI0NmUgcmVsZWFzZTMxLW1haW50Cis4ODI3MCAxODIwN2I5ZDlhNjBmODE1NjIwYmU1NmUwNWNhMGY1Yzk3NjhkMzI0IHJlbGVhc2UyNy1tYWludAorODgyNzEgMGYwYzVmOWFjZTlmM2JiNGI1MjBiYzRmNDRkOTQzZWRlOWM3NThiMCBweTNrCis4ODI3MiBkZTY3OTJiZGQ5NjU5M2JkNTFlMjEwYjg3OTc5MjIxMmE2YTE4ODAwIHB5M2sKKzg4MjczIDA4NmMyYmNkOGQ3NGU2YjQ0NzQ2OGY3NDYzNWZhZTI2NGFiNmJlZmUgcHkzaworODgyNzQgNGEyNzIyMjVjM2RlNzFlNjFhMDcxODVlNDQwM2I5MjRiZjBiODg2YSBweTNrCis4ODI3NSBiYzA5ZGI4MmE1ZDBmNTQzNjkxMGU1MTBmODc4NzI2MDAxMTNhMzc0IHB5M2sKKzg4Mjc2IDAyZWZkYjllMDllOTBlYzI1OTAwMzk0NmQ0ZjQ0ZmNjMTliYTEzODIgcHkzaworODgyODAgNGY5NDg3Mzg0NmEzZmE1ZmY5NGVjMmI1NzlhZjk5NTNiMjM1MGM0MCBweTNrCis4ODI4MSAwYTlmNjgwYTJjZjA1YzNiYWVjNGM2OWE0ZDY3YzBkY2QxOTkwYjU5IHB5M2sKKzg4MjgyIDk4N2U2NjE1YTA3OTZhZDkwMDRmYzFjM2FhMDkwMTQ2YmVhNWI0MGMgcmVsZWFzZTMxLW1haW50Cis4ODI4MyBhNmRmM2MzZTM3NDIzNjEyNGZmOTY4OTBjNzYzNDYyZDFjMjdhNWJjIHJlbGVhc2UyNy1tYWludAorODgyODQgMzFmNDBiZTkyMjUyNGM2MjkzZWQ3NzA2NjJlNTcwYjBiMDI2MmYxNSBweTNrCis4ODI4NSA4ZmE3M2EwODg1Yzk1ZThlMTZmNWRhNzAyZWFkMDI0MmNmN2FjM2E3IHJlbGVhc2UzMS1tYWludAorODgyODYgY2E5MDk0MzhjZjlmODkxYmYwNzQ3NDQ0ZTRmZmU2MzllYjAyM2YyNCByZWxlYXNlMjctbWFpbnQKKzg4Mjk5IDczYzQ5NTc5YTQ4N2M0YmQxYjc1OGQ4YzVjZTI4OGYxNGExNDM0ODMgcHkzaworODgzMDAgOTAwZmMxZWU0NDg3ZWZlMTg3ODAwNjEwZjg2M2M1NjBiNDMzZmRlZiByZWxlYXNlMzEtbWFpbnQKKzg4MzAxIDk0NGFkZjdlZGEyZWJiMWVhNjExNGI1MTZiZjZhMTJlOWI5MWIxZGEgcHkzaworODgzMDIgOWU2NTk1MTI2NmEyMDUxMjk1MDE1N2VlZWE2ZGRiODk5ZWNiYmY5NyBweTNrCis4ODMxOCBhYTg3MzAwNGNlYTgwZGU3YWRmYmZiMTVjMjZlOTMwMGM5ZjY4YzliIHJlbGVhc2UyNy1tYWludAorODgzMTkgNzczY2IzMzJjYzYzYjZjNmE3YzU1MzRjMjgwNjFjNDk4NTg0MGUzOSByZWxlYXNlMzEtbWFpbnQKKzg4MzIwIGQzMzkwM2ViMzM4ODU0MWZhZWQ3YzQzYTkxNzVkMTA4NGIwOGYzZGYgcmVsZWFzZTI3LW1haW50Cis4ODMyMSAxN2Q2ZjE2NWVhZTk3ZjliNGVjNmNkNzFmMTllNWI4Y2FjMDhhNTNlIHJlbGVhc2UzMS1tYWludAorODgzMjIgNWJlNzAxMTM5MDg5Y2Y4Zjg0ZjU5MjI0NDJlNGRlMzI1Mjg4MjU4OCBweTNrCis4ODMyMyA4ZTk5Njk0MThkYmViY2I4YmJmNDQ5YTY1NmY0MzlhMzg0NmVkOTQ3IHJlbGVhc2UzMS1tYWludAorODgzMjQgYjIxNzg2NDE5YmI4MzNkYjEzNjcwMTAyNDM5NTMxYzFlZDU4MDFhMiByZWxlYXNlMzEtbWFpbnQKKzg4MzI1IDc4MmJmNWYzN2FjYjA2ZmVkNmYwNGJkMWRjM2YxZmU3NmViYzM5N2IgcmVsZWFzZTMxLW1haW50Cis4ODMyNiAyZTNjNTg0MWEwYTY2NDBlZTc2NDQxYTY2MDY4ZDE3ZDk2MGIzMDYwIHJlbGVhc2UzMS1tYWludAorODgzMjcgYTFkMWJmYzM4M2VmY2Y2ZTFkNzNlODRiODY1M2MwODVmODE1MTcxYiByZWxlYXNlMzEtbWFpbnQKKzg4MzI4IDYyNzA5NDYxMTVkMDg0NWM1Zjk5YmQzNTdjNmNiMmY4MjhkODdhNzIgcmVsZWFzZTI3LW1haW50Cis4ODMyOSAwMzg2NDNkMzlmYzE1NmRmM2IzNjJmYWVhNTUwYmI1MmMyZmMwMDFiIHB5M2sKKzg4MzMwIDQ1MDY0OTU2NTg2MzFiZWI5MmYwYzYxNjhlN2ZjN2I0YmM5MGIxYWEgcHkzaworODgzMzEgOGNjMTAyNzlhYzdkZDZlNDY3NTM5M2VjODNiOGFjMTAzYzA4NDI5YSBweTNrCis4ODMzMiBlNTY2OGFkYzFlZDllNmFiYTA2ZGY2OTg1YWY1MzlmODIwNThkNjUyIHB5M2sKKzg4MzMzIDA3NzQ2YmUwYmJhZDQ3ZTY2YzE1ODBjMmEzMWMwMTIxODg3ZjJhMDggcHkzaworODgzMzQgMGJiYTUzM2MwOTU5ZjYyNTQwMGQ1ZWU3NzgyMjg1ZGNlMGZkMThkOCBweTNrCis4ODMzNSBmOTAyZmM3NzkzZTEyYjQ4YjYwMTM4YzI4NmU1YWNjM2Q5ZGRhODEzIHJlbGVhc2UzMS1tYWludAorODgzMzYgZjIyYzk5ZGI4YTQ2NTZmZjU2MGM5YzZmMjdjZGRiZWZiNzIzYWFiZSByZWxlYXNlMjctbWFpbnQKKzg4MzM3IGNlOGRiNDg1ZTI2ZTQzNTY4YWQzOGU2M2M4ZTRiNjg2OWU5ZTVkMTQgcHkzaworODgzMzggZGM1NmM4MjcxZmE4NTFmYzcwZDQ5YWM3MTY3ZWM4MmQ4MTc1YmYyMiByZWxlYXNlMjctbWFpbnQKKzg4MzM5IDQzNTUyMTJmZTJjNDMwMzExYTgyYjA4YjkyMzMwNWZlMmRhMTFkMDcgcmVsZWFzZTMxLW1haW50Cis4ODM0MCBjY2ZiNWJhNTBhNDRlOWMxYzA3NGVkYjE0MmY4MTc0MmRkMjA1NjJiIHB5M2sKKzg4MzQxIDVhNTA0ODVhMzc1ZjExYzhlMTYwZTg5YjI1MDU3NDUwMzc5ZjgzYTUgcHkzaworODgzNDIgYmM2ODVhZGJhYTE1Y2UxNjJkNDYxY2MxMjY1Mzc4ODJmZGVkM2RmNSBweTNrCis4ODM0MyA0NjBmMmYxYzVlYzgzZmJjMGRkNmQ5ODE2YTE2YWViNDgwODI4YWUyIHB5M2sKKzg4MzQ0IGJiM2Y2ZDNjYzBiM2MzN2RkZjFkYjlmODM0Yjg5NWU0ZDNiMGUzYWYgcHkzaworODgzNDUgNTI2N2U1MjYzZTQ3N2Q0ZmY4NjY1NjA3YWE1ODI4Y2JiYjJiZmFkYyBweTNrCis4ODM0NiAzOWI1ZmM2Yzc5MmQ0YjU5NjlkYzg4ZTAxZTE5YTk2NzgyYmNmNWMxIHB5M2sKKzg4MzQ3IDg4ZDY5YzJmOWVmYTMyMzM1ZTM0ZGY0MDk0YWY3NjY3ZTVjNGFmYWYgcHkzaworODgzNDggOWIzM2Q2NWNkYWU0YWViNjVjYzI4YjgyZDMwZDE5YzYwZjQ0NWUwNSBweTNrCis4ODM0OSA4ZDI1OTI1OTEwYjEwYjU1NmRjOGYxOWNkOWY3YjQwZjMyMzhmMjVlIHB5M2sKKzg4MzUwIDBkYTY4ZTJlNGQ3ODBiNjhiZDVmYWY3YjNkNzFiMDA0ZDg2YTIzZTggcHkzaworODgzNTEgYWNhOTFjNTVmMzhkNDUwZmZmZGU3NWUyNGFmNWRkY2E1N2ZhYWJjMyBweTNrCis4ODM1MiBhYmFiMmM1M2Y1OGZkMzM3NDA2YjRiYTAxZjA0NmFlZmMzMzZhMmI0IHB5M2sKKzg4MzUzIDQwNWE0NGM2ZGNlZGI0NTdjM2QzOWQ0MDQzOTlkZmM1YzkyNTgwMDIgcmVsZWFzZTI3LW1haW50Cis4ODM1NCBiNWUzNmE1NDljMjUzNzkxZWE0OWMzOWNiYmE0ODJiM2E2Nzk5NDlmIHJlbGVhc2UzMS1tYWludAorODgzNTUgOGUyMDk4NmIzZDZlOWI4ZGRjYzZhNWYyNGNhMTVmMzEzZThiYTkwNyBweTNrCis4ODM1NiA1MTZiOWRiNmFmZTRhZjQ4Yzk5MTY3NGMwYmQwNGU5MTU3ZDg4MTcyIHB5M2sKKzg4MzU3IDM5NGNiMDIyNDdmYzM2YjkxNjdjMDYyMGI0OTI0NTJkNTI5NWNmYTMgcHkzaworODgzNTggYjdiMWRjZTNlNzdmMjk2NTNlZmVkMTNlNGUxMGExNzYyMGVmNGZjZiBweTNrCis4ODM1OSBkNjFlYmZjZTE4ZWQzYWUxMmI4ZGRlZDc0ZGFjMjUxZmNlYTY1YzUzIHB5M2sKKzg4MzYwIDE1MThiOTM1ZGUxMGU3MDczMDU5MThiZmJkNjBlNmE5YjcwODU5NWYgcHkzaworODgzNjEgYjU3MDJiMjBiNDc2MGU1OTFiZDQwNzY3MDZmYzkwMzJlYmYzODBjZiBweTNrCis4ODM2MiBiNGM3ZDIwM2MzZDE0MzBjY2I3NTUxZDQyYzljOWQyZjRmMzdjZDg4IHB5M2sKKzg4MzYzIDNiOWQ3Yjg0NTYxODM5MjgwZDg4ZWMxMTEyM2U2ZDcxODNmMWNhYzggcHkzaworODgzNjQgMDlmMDdjN2RjM2RjMjVkZTE1ODljMzA0NGJjZDY1OGI3ODA1MDc2NyBweTNrCis4ODM2NSAzZTAyMTM2NmU1MWZhYzYyYWE1NGVjYjljODFkN2Y1YTI3ZDcxNzczIHB5M2sKKzg4MzY2IGYxZmFlYzQ5MzUwZGNkYTZlODljYWQyMGM4ZjE5M2QxZGUwYmE3NDggcHkzaworODgzNjcgYmNlNzU4OTM5ZDc5OTNiYzAzYTgxN2Y1YWU5MTRhYmNkZDg5NmYxZiBweTNrCis4ODM2OCAxZDljNWEyYWE2OTRlN2YyZTUyNWFlYjRlMWQ0NTI0MWU3YzZkOGI4IHB5M2sKKzg4MzY5IDI2MTM2N2U5ZTZjMWM4YTFjZDZiMDJjODFkNDMwNDdjM2QwZmYyNTAgcHkzaworODgzNzAgMzQxMWNjN2Y2NGRmNjY5YzRhMDJiYmQ4NmRlM2U2OTBlM2NkYmUxMyBweTNrCis4ODM3MSA5ZmRmYzA1ZWZiYjViZmNmN2M3YTU1NGYxNzk2OTQ4MDk1ZmM1MDhjIHB5M2sKKzg4MzcyIDk0NmVjZTI2YTQ4ZjNiZmU5YWQ4ZDVjMTQyYmZhMjU1ZjM3YjRkOWMgcmVsZWFzZTMxLW1haW50Cis4ODM3MyA2OGQ2MTdkZDMwY2QzOTE5OGVlZmRiMDAwNjExYzhmYTIzMmNlZWNmIHJlbGVhc2UyNy1tYWludAorODgzNzQgN2M3MWIwYTVhMjkwMTRiOTYwMGY2MDNjODlkZDg4NDVmMWU1YjM0NyBweTNrCis4ODM3NSBlOWZiNmQ1MDQ1OWFmNWM1ZGFlNTliNTEwYWIxNTllMWM5MDhkOTlhIHB5M2sKKzg4Mzc2IGJiNzU3ZmFjYmZhNjExMjAzNmQ2NWM1NGZmZmMyOTExNmY1ZWNmZTUgcmVsZWFzZTI3LW1haW50Cis4ODM3NyA1NzQyYzc5MDg2YTg3OTgwNDc2YTNkMDY1NGQ4ZTFmZDdhZWNkMWUyIHB5M2sKKzg4Mzc4IGY1MmUzNWM3NWUzM2M2ZjhkZDE3ZDdiODdmOGQwN2UxYjU3ZmY3ZDAgcmVsZWFzZTMxLW1haW50Cis4ODM4MSBkNjk2NmQ5Yjc2MDlmY2M3MzFiM2Y5OGY5Njg0MGI0MzI5MzcxZDMxIHB5M2sKKzg4MzgyIGRjZjE3OTFjYjE3NjdhNTE2ODc0ODkzYmVlMGE0YmIzMGVjOGE3MWMgcHkzaworODgzODMgMDcxZDI1YWZhZGFhODk2ZTk3MWNlY2FmMzNhNmM2NzM3NGUwOWZhMiBweTNrCis4ODM4NCA2NDNhYzk0NmVmZjQ5ZjQ3NTVhMWExMmEyNjY2NDc5ZGFjMzg2OGNhIHB5M2sKKzg4Mzg1IDE0NmU4MWU0ZTUxZTRhOTU0NzVmNzEyOTBjNDEwMjdmOGNlYWYwNzIgcHkzaworODgzODYgZjViODg5YzM2Zjk5MGE2ZGY4YjAxOTVlMWFhYTkxYTBjNjJmMjZhOSBweTNrCis4ODM4NyA1ZGZlMGM0MmZmZThkNDIyOWRkYzVmMTJlNWVhOGM1YjNkZmYyMDA0IHB5M2sKKzg4Mzg4IDU2ZTYxN2MyYjVlODNlYzE3MGFhNzExNWEzYzQ4OThhOGY5MWMwZWMgcHkzaworODgzODkgNzJiNDJkYzA0MWYzZmY1ODc2YjJjNTU5NjRjZWJjNzZlY2I3NjRkZiBweTNrCis4ODM5MCAwMzdmMTZiMDJjYTU1MmM2ZmQ2Yzg5MmZmYjZkNjA4NTFiNWQwZjQwIHJlbGVhc2UzMS1tYWludAorODgzOTEgMmI0ODIyYjdjNDI0ZWM1OTgzN2JlNjEwNjViZDgxZWJmMzhjM2I3NyByZWxlYXNlMjctbWFpbnQKKzg4MzkyIGQxYjVkODA0ZDJhNTQ1MjcxMzc3MTgyODAyOWQ4YjU3NjI2MDZjNjkgcmVsZWFzZTMxLW1haW50Cis4ODM5MyA4MDg0YzY2OGI2Mzc3MzU1NTg0ZjgyMTBjODJiMzljNGNjZWQyZjg5IHJlbGVhc2UzMS1tYWludAorODgzOTQgYjQwOWQ3ZWNiNjY1NzQyNjI0NmQ5NDFhODM4YzFjOWZjYzcxYWY0YiBweTNrCis4ODM5NSAxMmFjYWY3YTQ5NTVkZGE1MGIzMzhhMDg1ZTFlMzNkN2IyZWQwZjhkIHB5M2sKKzg4Mzk2IDRkMmE1ODkxOGRmMTU4NzYyZmM1NWUwZTE4NzI4YjQ0NDkxOTM1NWYgcHkzaworODgzOTcgODlkNTJlZmZjMzBhYTdkMzljMjdhYzBkODU5YmY0YmU2Y2U4YjEzZCByZWxlYXNlMjctbWFpbnQKKzg4Mzk4IGQ5YjcxM2U5NWYzOWU5MGQzYTVhMTcxMzBiNWFlOGE2NDUxZDY2NjUgcmVsZWFzZTI3LW1haW50Cis4ODM5OSAwMmI4ODEzMjZmNmVkODJjMGUwOTY5Yjc1YjVhNjJjZjg2YjZlMDllIHB5M2sKKzg4NDAwIDIwZDgyODczYWE5NzdhOWY1NmYxOGFiMDBjNTM2MzQwZGNhNmUxZDkgcHkzaworODg0MDEgMDZhNjU3ZDFhM2FjMTk5ZjVkNDBhMmE0NDk3NWJjMzZhM2I1NzA4MiBweTNrCis4ODQwMiBjMzEwZDI5NGZkZGUwZmIwNzY5NjczNmNmZWNhNWUzOTY3OTQ3NGU5IHB5M2sKKzg4NDAzIDJjYmU5ZDA1OGY3ZTkyYjFkYjRjODVkMGEyNzM1OWEzZGIxYmE4YTAgcHkzaworODg0MDQgMTExNTc3YmY1YmE4OTY2ZjdiY2E5OGVkNzljZmUxMzU5MGFlYTM0NiByZWxlYXNlMzEtbWFpbnQKKzg4NDA1IDExYzY3YTYwODRjOGVkNGYyZjMxMTFhYWQxOWUyYWUwNTAzNjZkZDggcmVsZWFzZTI3LW1haW50Cis4ODQwNiBiYmFmOTMwNGEwZDA0YTBjYzQyNThmMjU3MzUxZTA4MWQyMDg0ODMwIHJlbGVhc2UyNy1tYWludAorODg0MDcgZjNjZTRhYmJhYWY4NWU4ZmIzZGViMDU4ZTIwYWI1YzYzNDRmY2Y3ZiBweTNrCis4ODQwOCA4ODNhMDIzZWI5NDMzZDYyZjAyNzNjNmE3MDZmYTljZTUxZjMxYTA5IHJlbGVhc2UyNy1tYWludAorODg0MDkgN2QzMjA4MjBmNDYyZGQ4M2I1M2Y3NDIyYWU0ZDZmNGNmZDU0OTkxMCByZWxlYXNlMzEtbWFpbnQKKzg4NDEwIGJhOTVjMGJkZDhhOGQ3ODM0OWUxMDk2ZDQ4NGEyNjIwYmY4NGRmNzYgcmVsZWFzZTI3LW1haW50Cis4ODQxMSAxMDY2MDNjYTUzYzM3YzBkNWE4MjJmMDgxYjQwZTFjOWM1MmIyYjE2IHB5M2sKKzg4NDEyIDZhNTQzMTE2YmYxNzQ3NWMyMjhlNzYwNGYwNTc2OGU3ODIxNmEyMTkgcHkzaworODg0MTMgMThjMWY1Mjg5NjUwMWM3ZWUxM2IwMzg0NTRhMzlhY2I0NWE4Nzk3OSBweTNrCis4ODQxNCA5M2RmOTVlNDAzZDFhNDg2MTUxZjNlNGE5MWQ1ZDM2MDY3NDUyYWVhIHB5M2sKKzg4NDE4IGI0NWY0ZjM5ZjIwNGQ4NjVjOTJkZmMwN2IwZDMyMzRhYTkwNTdlZjAgcmVsZWFzZTMxLW1haW50Cis4ODQxOSAwODg1NTE0ZDg5N2MwYzRiN2NiZTJhY2UzZTQyNGY4ZmQ5YzRhZGI3IHJlbGVhc2UyNy1tYWludAorODg0MjAgNWJhYWMxODZmMGMyOGJlYzVhMzM4MGVjMjA2ZTQyNmUyMzBmM2EzNCBweTNrCis4ODQyMSAwM2VjNjFlMTM0NjBiMjcxYWE1Zjc5ZGM2NGQ0YTkyOTk3ODJiMGE4IHB5M2sKKzg4NDIyIGQxZDlkN2UwMGI0YTVhMTk4ODgyMTE5ZmQxMzhkMjZjZDk3YzVkZjYgcmVsZWFzZTI3LW1haW50Cis4ODQyMyBkODAzMWJhMzhlMTZkM2VkYzhhYzNiYjVhYmRhZGM2YTc0NDI1NTM2IHB5M2sKKzg4NDI0IDQzYWY5ZTM2YmRkNThhMmJhNzhkNmIwZGUyYWQ0NzBiY2ZiNGYzYWIgcHkzaworODg0MjUgMmVlMmM3NjA4MmM4YzZhZWY1ZTYyNTU2MjBkYTc2NzEzMTY1YWIwZSByZWxlYXNlMzEtbWFpbnQKKzg4NDI2IDlmZjNiNjY5NTQ4ZjgzMmE5MjlkOGFiYWI0NTE2YjEyZjA0ZjU3YmYgcHkzaworODg0MjcgN2E4OWY0YTczZDFhZmQ2NjQ0OWRmZjdkMGI1NzMxYzc2ZGRlNDIyMCByZWxlYXNlMjctbWFpbnQKKzg4NDI4IDVlN2RkNjU3ZjllYjc1MWYzYjE0ZTZlYjU5MDA2MzhmNTIwMmVhYTMgcmVsZWFzZTMxLW1haW50Cis4ODQyOSA5MDdmMzg3OTIzNWE4ZDRhZWE2MTAyOGEyOGE4ZTdjMzRmYzAxZmY0IHJlbGVhc2UyNy1tYWludAorODg0MzAgYWQyZjhjNjg2ZTA4NTVhNzIyZDMwMDczNTlkMjMxZGEwNTFlMjYyNyBweTNrCis4ODQzMSAzOWNmMjBkNWFkNGM1ZWE1NTM3YTlmMWNjMzA1YzUzZGQ4OWVjOTMyIHB5M2sKKzg4NDMyIDZkMzlkYWVkZWRkNTUzNmU3OWZjNTZkNzMyNWYxNWM5MzVkNTNlZWMgcHkzaworODg0MzQgNmMxY2E5ZGViNDJhOTUyODZiYjI3ZWI1NWI2Y2E0YzQyZTVjYTQ4ZSBweTNrCis4ODQzNSAxNWE4ZTIyYzQxMDFkZWRhOTVhZWFhYWQwMTgxNjM3NzNjOTFlNjYyIHB5M2sKKzg4NDM2IDIyZDk0ZjU1YjBjNzAzNDJhYjg3ZGY5NmJmNzlhY2E3N2YyN2ZkNGYgcmVsZWFzZTI3LW1haW50Cis4ODQzOCA5MmRlYmRmOTgxYzVmMzQ0M2U4NzdmNThiNDg2MTE1N2I3Y2QyODY0IHB5M2sKKzg4NDM5IDZjYWI5YTk5NDEwNTAzNTQwZmUyMWRkYjkyMDdkZjMwYWVkNzIwMmEgcHkzaworODg0NDAgNWFmMDM1NTg5YWE3NzcyZWZmZDA0MjdjNjc0YzI5ZTllMjY3NmE2NyBweTNrCis4ODQ0MSA1ZTM3NjY5MTcyYzhkMjc4MzRkYWY4NjhlNmRmMjhjY2Q4MWEzMDgxIHB5M2sKKzg4NDQyIDEwMWJjNjY5NTFjN2NhNGU2MzliZGU4NjlhZjQxNWMzNDdjZmZiOTMgcHkzaworODg0NDMgNzg4ZWFmYWVmN2RjNDgyMGRiNzhjYjQ5YTU3YTBhZGY2M2ZjNTBjZSBweTNrCis4ODQ0NCA1OTAwZDk0OGZlNTdhNDM5OWRjMmZmZWMzYmExMjY0YjIxN2Q0ZTE2IHB5M2sKKzg4NDQ1IDQ5NmFjNGQxYTlhYmI5NjVjOWUxMTllMjQ0ZTYzYzdkYjE2ZDE4NDggcHkzaworODg0NDYgYTIyMmEwMTVlMjhkOGFlOWFmMzg5OTI1OGRjNmMxNWMzZDQwYWRkMCByZWxlYXNlMzItbWFpbnQKKzg4NDQ3IDY2MzgxY2VjNmM3MzI1YzMwNjA2NzM0ZGQzNzY2NWRkMTA0ZDY1ZWIgcHkzaworODg0NDggMjAzOTQ1MDYwYmFmZjIwNmE2YTc3Yzg2YmFhZDg4NzAxYWQ0NGY3OCBweTNrCis4ODQ0OSAwZjUyY2ZjOTFmYWVjMDg5OTc3NTQ4N2MyZmRiMDQ0NWQzMGNlY2YxIHB5M2sKKzg4NDUwIDQ0MTkwN2MwODE0ZTVjNzFlOGNlNDQ5MzY0OThiZmFiNzMwZWQ3YmYgcmVsZWFzZTMyLW1haW50Cis4ODQ1MSBhODNjYzk2MWM0M2EyZDMyNjliZGE0ZTczY2ViOTg5OTFhYzM0MjE5IHB5M2sKKzg4NDUyIDM1YzBlMzdmZTk1MDEyM2YwYmNlYzVjNTk0ZjU1NDViOWU2ZjZmODkgcmVsZWFzZTI3LW1haW50Cis4ODQ1MyBhZWM5NTI3ZjYyMjMyNzY5OTY3MjE5NThkOGMxYzM1NjJkOWE1YTY5IHJlbGVhc2UyNy1tYWludAorODg0NTUgYmY4NjQzOTVkMWM4OGIxYzMyYzJhZjk1YTg4YTg0NjgxNjU4YjQ4MyByZWxlYXNlMzItbWFpbnQKKzg4NDU2IDdiMDExY2Y2NGY5MDZjMjJmYThjYWU0Y2NlYjc1ODRhOGQ4NGMyNTUgcHkzaworODg0NTcgMzcxZjA0ZTFiZDNmOGIzZTkyYmNjMmRlNjhiNjlkNDdiNDdlYjBkNSByZWxlYXNlMzItbWFpbnQKKzg4NDU4IDc5MDJmNWJlMmM5MDZiZjBiNzZhYTQzN2Q1NzA2ZGFjN2JjMTRhZDUgcmVsZWFzZTMyLW1haW50Cis4ODQ1OSA5ODM2MzA3OTczMzhlMmRmN2IwYWViZTBmMzNiNDFjYjZmZmJmNWM0IHB5M2sKKzg4NDYwIDUxYTA4MGJhY2IyNTA4ZDU0NjBiYWMwM2QwMWIwY2Q3ZTQyNDBiZDEgcHkzaworODg0NjEgZGE1ZGQzZTIzYzg3MDI1MjA4OWMwYzRkZjNkYzk0ZDIyZmY4ZGFmYiByZWxlYXNlMzItbWFpbnQKKzg4NDYyIDZjMWUwNWE0YjU0MWYxZTIwMWFmMzQ5ZWU0MTgxNTRjYjU5M2NiZGIgcmVsZWFzZTMyLW1haW50Cis4ODQ2MyAyN2VhM2FlMzYyY2Q1MWZmNmEyYmIwMmRiMTc0MjI5ZjgzZDNhYTJkIHB5M2sKKzg4NDY0IDk1NGNkNWRiNTFkYzM1ZWY0M2I4ZjQzOTQ1Y2RkMmZhODgxZjVlZjAgcHkzaworODg0NjUgOWY4MTQ2ZjQ1ZWFlODdjOTI4OTUzODJhMGNjZDAwNjdmZmE1ZjA4NSBweTNrCis4ODQ2NiBhMWYzNWMyMWE3MTJjMTE4NWY1YzBhMzIzYjUwYmMzNjgzOWQ1MWU5IHB5M2sKKzg4NDY3IDYxNGUzMjkwMGVmN2RiODZjNmEwYzhkZTFjMDg3Mzk4ZDUyNjVmNmUgcHkzaworODg0NjggZWI4ZmMxY2UxYzgxZWI4M2ZhNzZlMjYxOWI5N2FhYmE5YmUyYTUwMiByZWxlYXNlMzItbWFpbnQKKzg4NDY5IDQ4MjU4NzE4MDI1NWE1MWIwOTIxNjQ1ZWU2ODQxZTM2YjQ4MTA0YTYgcmVsZWFzZTMyLW1haW50Cis4ODQ3MCBiMTdiYmExYzczMDNjZTdlNTlkZmJjMjc4ZjY0ZTU1Nzk2NzMyZjQwIHB5M2sKKzg4NDcxIDQ1MGY4ZDUxZGRhODY5YjNmMzU4MjllYzI1NTZhMWNhYmY3NDk2MTUgcmVsZWFzZTMyLW1haW50Cis4ODQ3MiBmZjg2YTE3OWJjMTNjYTcxMzUzNzBiNTczYTJmZTVlMzYzODU5OGQ3IHJlbGVhc2UzMi1tYWludAorODg0NzMgMTg1Mzk4OWY3NGU3NmFiNDc1Y2IyNjQ1NDY3YmNiOWE4ODMwOGEyMCByZWxlYXNlMzItbWFpbnQKKzg4NDc0IDE1OGQ2ZGVmMmVmODdmMzEyOWFlMGQ0MWM2ZmQyMDZhMWJkYTM1NzIgcHkzaworODg0NzUgYTAzNmMzMGFiNWFlNGFjOWQ3MDViZmU3ZjY0YWUzZDYxNjUwYzk5MyBweTNrCis4ODQ3NiBhYjE2NjRiMjk4ZmNkYjFmOGU5NmM5YjNmNDBhYzk3ZWY5MTYwZGUxIHB5M2sKKzg4NDc3IDAwYTRmZmE3MmRiZTNkMWVhMWQyZDQ2ZjM1MjY5NTEwNDc5MDcyZTcgcmVsZWFzZTMyLW1haW50Cis4ODQ3OCBiYjg1N2Q5YzMwNzEyMGM1ZGZhMjIyNDQ2MWNiNDU5Yzc3NzVmZDI2IHB5M2sKKzg4NDc5IDI4NDAyNmUwMDM0MmQ0YWVlMzI5MGM4MGRlZDJiMWE2MTdlNGJiNGUgcmVsZWFzZTI3LW1haW50Cis4ODQ4MCAyYjhlNmEyMWFlYWExOTU0YjM5ZGJmYWUzMjFmOWE0M2YyODE5ZWFiIHB5M2sKKzg4NDgxIGVmMjhhYWQzYmJhZTBmNTdmMjY0YTBhYmRlNWQ1NGE4YjYxN2RhNzEgcHkzaworODg0ODIgYjRjMTVkODcwOTRkOWVhNTE3ZGZkZmNkZDQ1ZGM1OGU4YTcxMGE4OSBpc3N1ZTEwMjc2LXNub3dsZW9wYXJkCis4ODQ4MyAyM2RlM2FhNzIyMzA2ZDJiZmZlYjBmZWNhMTQ1NzViMTFjYTE5Mzc3IGlzc3VlMTAyNzYtc25vd2xlb3BhcmQKKzg4NDg0IGY1ZTljMTdiODVhZDA2YjE3YmQ1ZDMxY2Y4ODE1YjBmZDUzNzMxMGUgcHkzaworODg0ODUgYzYwNjBlZjVjNDA1MTQ2Y2VkMjJiZWE0OGRkYjI0ODllODk1ZmY0ZiByZWxlYXNlMzItbWFpbnQKKzg4NDg2IDQxYzUyODAzMzBmZDYyNDJkNzFlM2YwYTkyMjFlNzcyODYxMTUyMmIgcHkzaworODg0ODcgNDI5NWUwOTVhZDRmYjhlOTJiY2Y2MWU2MGE1MDZlOWRmNDRhNDFkYiByZWxlYXNlMzItbWFpbnQKKzg4NDg4IGI1NTg2OTU5ODY4M2ZhOWI1YjdlMDQ5MTMyYTkwMzRkMDczMjZlN2MgcmVsZWFzZTI3LW1haW50Cis4ODQ5MCA3ODY2MDcxNGYxN2EzNTU3ZjhiNWU0MTdmYWJiYTIyYzc0M2VlZGUwIHB5M2sKKzg4NDkxIDY3ZWMyNmNjNGI0ZjdlMzFkM2MzY2Q0ODRiZmM3Mjc3NzVjZDc3YjkgcHkzaworODg0OTIgY2UyMGFjNDFlMzFmZDk0MDQwNGNkMDhjNmY4MzJkOTg2MjA2ZGQ0MCBweTNrCis4ODQ5MyBmZWQ3NjhiNzExMzYxODNmNmUyNDI1NjZmODBhZmFlYTQzZGI3ZThkIHB5M2sKKzg4NDk0IDdmODVmYmMxNmNhZWRkMDgzODI4MmY4MWNkYjk4ZDY1NzQxMGNlM2IgcHkzaworODg0OTUgNDczZDIzM2EwNDc4MWRmZjM3OTI3MzlmOTc4ZDM0NDAwNjhlYTY3YSByZWxlYXNlMzItbWFpbnQKKzg4NDk2IGFlMTg2YjNiMmM1NTZlMWNiMzJiM2MxZTk4NjdhMGQ1ZmUzODMyMzUgcHkzaworODg0OTcgMTlkZjQ3ODM5YmNhYjU1ZjdmNjMxOTM2YTExNjhiNGQzZDkxY2JjZSByZWxlYXNlMzItbWFpbnQKKzg4NDk4IGVhMjYwZDM5M2NkZWUzYzNlMzYxNGY5NTdkZWI3MmRiZDc3ZmIwNzAgcHkzaworODg0OTkgYzkwZTBlNWIwZDI1NDcxMDUxZTJhZTZjMTMyZjQ1NGY3NDNiZGFmZSByZWxlYXNlMzItbWFpbnQKKzg4NTAwIDM3MmIyZWYwZmYzN2I2YTFhYTEyZTQzMGNiMmRlYzk5OWI2NDc5M2MgcHkzaworODg1MDEgMjQzMzliZjBjN2U2NmE3ZWExZWNhMmE1MmMyNGYyOGZjYWQ0ZmVmNSBweTNrCis4ODUwMiAzMDQxMWFmMzRlZWJmYWZhNzU1ZmUzMzhmZjM4ZTU0MmQzNzAyYTVlIHJlbGVhc2UzMi1tYWludAorODg1MDMgNWNlNDk5MTgwZDI0NWY4MGI2NmEwNTdlOGRlY2IyYTMzNWFkMWRjNSBweTNrCis4ODUwNCA5ODA2OTc3Njk4NjYyMDVkMDlkMzAwMjAxZmY4NTI1NzcwNDg3YzNmIHJlbGVhc2UzMi1tYWludAorODg1MDUgMjQ3YTI4MTA5MzJhYTU1YzEyNWM1NjEwNjVjMjkyNzQzNGM0MDk1NSBweTNrCis4ODUwNiBhNzUxNWE5NGZkYjViNTA1ODliMjNmMTIxZjYwZWQ0YThkZWY2YzFjIHB5M2sKKzg4NTA3IGUyZjk2YmQyOTI1MmU2MjFiYjllMTU2M2ZiYmIwZWNhODIzMWRlNTMgcHkzaworODg1MDggNjQ4MmRkMWMxMWVkMWMxYWZiOTlkMjM0ZTI4MzBmMzRjOWYzNDc4NiBweTNrCis4ODUwOSAxNmVlNDJkZTBmYWI5MmYxOTBjOGNjYTI3NGM5NGVkNDZiNDkxZDFkIHJlbGVhc2UzMi1tYWludAorODg1MTAgMmI1NGJlNjU1MTY5OGE3MTg1NmE1MmU1YzFhYWQxMjJjODg0MzMzNSByZWxlYXNlMzItbWFpbnQKKzg4NTExIDMyN2E1YTc4YTI1N2NmZTI3YWNkOTAxYzY1ZTA4NGJhNzE5NjE4ZDkgaXNzdWUxMDI3Ni1zbm93bGVvcGFyZAorODg1MTIgMmY4ZWM3N2QzMmNkNDcxOGFhYzc0MTU1NTNiZjc0NWQ1ODMwYWJhMyBweTNrCis4ODUxMyAwNTg2YzY5OWQ0NjdhNjRjM2UyM2RkODc2ZDJkMzYyZTYzM2Q4OTBkIHB5M2sKKzg4NTE0IDYyOTk0NjYyNjc2YTdiZTc5MGUwZGNjYzYzMjgxOGI3ODhmNmJmMjEgcHkzaworODg1MTUgMGU5ZjNiYjYzZDAwYjdhYTUwZGRiYjFlNTc2OGEwODgxZTIyZGQ2ZSByZWxlYXNlMzItbWFpbnQKKzg4NTE2IDJmODljYmJlYzBiNDg0ZDExYjk2NDEwNWQwZGMzMjQ5NmZhZjI4YTggcHkzaworODg1MTcgMDg3NDY5OGIxMjAxZGY5YzJlYzk1ZDA5ZGU4MTA4OGQ1ZGM5MTg5MiBweTNrCis4ODUxOCBlYzNjMDY3NjE4NTZkZDYzMGE5NWUzOTkzMTY5YWZiNzg4ZWU3ZWMzIHB5M2sKKzg4NTE5IGFjMGQ4ZTIxYTQ3ZGViNTVlYWM5Mjc0OTRhMjM4YzE4NjJkNzAwNDMgcmVsZWFzZTMyLW1haW50Cis4ODUyMCA0NGNjOWVmNDMxMjdmOGI2ZDliNWZhNDFmY2Y3YTYxMzk3YmE3ZGJhIHB5M2sKKzg4NTIxIGYyZWRhZjYyZDgyM2ZiNjZmZTc5ZjRkYmYxYmZmNzM4MzIyMWUwODAgcHkzaworODg1MjIgN2Y4ZGExMGJmY2VmY2YzN2VkY2E3OWE4YmFkZTc4ZmJkMjFiMmNkMCBweTNrCis4ODUyMyAxNjVkMDE1YTJiYWYwN2YzMzdkMGY1NjJkMzJkYzVmMmJiZjBjNjI4IHJlbGVhc2UzMi1tYWludAorODg1MjQgMDNmN2FmYmMxNjA4NDhkNGUxN2I2NjBkM2RlZjU3ZDcyOTRmYmQxOSBweTNrCis4ODUyNSBjOGM1N2U3NjY0Mjg1MzFkZjY4YmFhMWNmNTdmYjc2NmJmNzA5MjZkIHB5M2sKKzg4NTI2IDc0ODYxYTQyYTZlNmEyODljM2FiNWI3NzE5YmYwY2Y0ZjBiNzUwMjMgcHkzaworODg1MjcgYmExYWViMzYyMTgyMWYyMjIxMjkxNGY1NWQ4NzE4ZDY1NGM1MWY2YSByZWxlYXNlMzItbWFpbnQKKzg4NTI4IDAzNWVmZGFmODIyOWM3OWM0MjBkMTA0NjFiMDY4ZGU0Yzc2NGNmZTAgcHkzaworODg1MjkgMjMyNWZlMzZhYTM0NTY2M2U5NGVmZGYyNDYyZDA2MTdmZmU0Zjc2OSBweTNrCis4ODUzMCA1YTlkOTBkNGY4OWViODBmMTM0M2JjZjM4NWI3N2U4NTE1ZmVhODZkIHJlbGVhc2UzMi1tYWludAorODg1MzEgYWJhMTZhNTY4M2QzNjg1ZWVlMWQ2MWFhNzQ1NjNjYjZjMTgwZWNhYiBweTNrCis4ODUzMiAzMjM4NmZhNjdhMTJhNzY5MTczMzdhM2MzYjgzODQyODY3YjE5OWQzIHJlbGVhc2UzMi1tYWludAorODg1MzMgY2Y5MTc2ZjJhNjIwNWFkYzRmMzQwNGI2ZTkyNjZkMmEyYzdjYWI4NSByZWxlYXNlMzItbWFpbnQKKzg4NTM0IGExY2ZlODE1ZDk3YWFkMGFmNDkyZWVmNWU4ZTIyOTY1OWM1MTMyMjcgcHkzaworODg1MzUgNWEyOThhZmFjYjk1NTQ3NTdiN2QxMjFhZTkwYzE2N2NmZmUyNTU3MiBweTNrCis4ODUzNyBkZTVjM2EzOWFkZTcyNGRiNDI2NWIyOGYwZjYwMGZjMzc4NWJhNmNjIHJlbGVhc2UyNy1tYWludAorODg1MzggZThkZmU2MDJlZmExY2RlYTk4ZmM1Y2UxYTg4YTU1MGQ2ZTRkZDdhNyByZWxlYXNlMzItbWFpbnQKKzg4NTM5IDk4NjFkYzExODMyMjJmZTBiYjU5YmZhZWViMTMxMzA5MTMwYjJjZGYgcHkzaworODg1NDAgOGJhNzY1MzI4MDMwNmE0M2YwOTI4NmU2OTM5YmViYmZhMmNmYzRiMCBweTNrCis4ODU0MSA3MzI2ZjA2NGQ4M2FmZWE1MjBjYTY2M2M4ZjMzZmJhZWRjOWE5ODU0IHB5M2sKKzg4NTQyIDYwOWYyYjgyMzM1MGU0MmMyNjY0ZWJiMDE4Y2M4NTJhNjg3Njk0MjAgcHkzaworODg1NDMgYmY4OTA2Y2UxMDRiNTAzZGM4YjI4NWI2YjM0MWQwM2NkMzQzZjFlMSByZWxlYXNlMzItbWFpbnQKKzg4NTQ1IGZkNmVjNWUwODRhMmM3ZTZlMWQzNWU2MTRmZDc2NDc0OTAwODc2ZGIgcmVsZWFzZTMyLW1haW50Cis4ODU0NiBkYjdlZjM0ZWVkYWY1YmViOWNkOTI1YTYzYTBjNGMxNzMyNDc4NGExIHB5M2sKKzg4NTQ3IDNlNGQ5NTlmOGUxMmVkZmVlMmVhNWY1ZDA3MTdkOGVlNTMzMjhkOTMgcHkzaworODg1NDggZmVhYjIzMGJkMGRkZTQwYTU5OWYwNDNlN2NjNTJhZGY5YTZjOWY3NCByZWxlYXNlMzItbWFpbnQKKzg4NTQ5IGNjM2MzYTQzODM5OGRkYWYwOWE3MmZlNGI0MWM2Nzk3NjE5NTg2Y2EgcmVsZWFzZTMyLW1haW50Cis4ODU1MCA1NzBjNTkzOWJjMDNlNzIyOGI5MjA0MDU3ZjZmOThlYTdmNjNjNTQ3IHJlbGVhc2UyNy1tYWludAorODg1NTEgY2JjYjI2YTlkMmJkZGQ5MjA0Y2I5NDBmMWY2MmZiM2M4NDZjYTMxNSBweTNrCis4ODU1MiA0NTczOWNhNjNlYjM0NWIwMGExYWIxMDEwOTg5MjdlMzM0ZTJmNjQ1IHJlbGVhc2UzMi1tYWludAorODg1NTMgMjM2YzRkYzZmMGU3ZDdiYjgyNjQ3YzZkODMzZWNlYmQwZWJhNGE4ZSBweTNrCis4ODU1NCBjOGMwZTQyOTQ0YTE2OTdhNjk5YzNhZDJhOTgzMDhhZDAxMTBkNjZkIHB5M2sKKzg4NTU1IDM2NGU0YzEwNjI5N2VhZmFlNmYyNGFiYjljNDE3MjVlYmM2M2Q2MWIgcmVsZWFzZTMyLW1haW50Cis4ODU1NiBiMjQ1ZDY5YjRmMGFkNGU3YWY4NjkwYTNmNWQ5NzVmMmY3M2U2Y2UxIHJlbGVhc2UzMS1tYWludAorODg1NTcgYzc5NjY1ZmIyNjdhYTM3NDcwY2QyMzY1ZDE3MmQ5YzdkZTAyZDYyMiByZWxlYXNlMzEtbWFpbnQKKzg4NTU4IDYxNGE4YzdiOTUyNWFkMDYyOGEyZDY0YmExZTAwZDc5MDk1MjRkMTYgcHkzaworODg1NTkgOTI2MjljY2FhZTc2NDZlNTRiMmM1MDMyN2RhZGNkY2U1ZjQ2ZDliOCByZWxlYXNlMzEtbWFpbnQKKzg4NTYwIDU4NWRiMDY4MDY5ZWQ2MTZlZWQ0NGYyNTMzNzU1ZTQ5MWMyMTJjNWEgcmVsZWFzZTMxLW1haW50Cis4ODU2MSBlZmYyZThmMTViZWQwOGYyNjVhMGFkMzBlZTNhZjUyYjhhODU1NjAxIHJlbGVhc2UzMS1tYWludAorODg1NjIgNWIzNWJiYmUzMmU3MGFiNjcwZGFiNDE5MzdiNDk0MzYzYjg1MjJmZiByZWxlYXNlMzEtbWFpbnQKKzg4NTYzIGUzYzY4NDE1YTMyZDEwMGM2ZGUzMmNmYjkyNzM0OTdlNDQ2YmZlYjAgcmVsZWFzZTMxLW1haW50Cis4ODU2NCBkMzU2NjQ5NTA0ZjlmNDc2YTcxZTRiMWI1OTIyYWUzMjViZTgyNGVhIHJlbGVhc2UyNy1tYWludAorODg1NjUgOGVlZWU5ZDZkMzJiOTEzMWZjMjFkZDc5ZGI1MThlNjE2ZGZlZGFjMyByZWxlYXNlMjctbWFpbnQKKzg4NTY2IGM3Yzc2Y2ZiZGI0ZTAxOWU3OWY2NjJlMzZiMTYxN2M1NTUxMTkzNTMgcmVsZWFzZTI3LW1haW50Cis4ODU2NyAzZTVmMmUyYTg0YWJlNGU4ZDEzNGRjN2M2NTRiNzJkYWQ5ZWQ2NjZkIHB5M2sKKzg4NTY4IDIyNmYwMDFhNzAxZmYzNGFmYjVmMGU4OGVjNTU4NThhODU1YzlhODAgcmVsZWFzZTI3LW1haW50Cis4ODU2OSAzNGFlMzE2MzE4ZWY0NTRmOWMyMzkzZDJlM2I3ZDYwMGFmN2YwMzkzIHJlbGVhc2UyNy1tYWludAorODg1NzAgNzIwYTJmNDRjYmYyY2NhMGY3NGMzZDNlNTliNTY4M2NlOWY1MDJmNCByZWxlYXNlMjctbWFpbnQKKzg4NTcxIDc4ZGIzZDBjNmRiNzJhMWI2ZDE5ZjA5ODE2YjQ2NjliMjhlOGQxNmQgcmVsZWFzZTI3LW1haW50Cis4ODU3MiBiMzU2Yjg3MWJmNjdkMmI1MGZlMzBiZTg3ZDUwNjI4NDNhZGU2YWI1IHJlbGVhc2UyNy1tYWludAorODg1NzMgMDFjOTZiMzc1ODZkZDY3YzQ5ZGZlN2Q2YzgxYTliMTE0MjMzZmUzNSByZWxlYXNlMzEtbWFpbnQKKzg4NTc0IDAzNTI2NzgxMjgyYWUyNThiYjZkNGQxOTVkZDc4ZjUzN2JlY2ViNDMgcHkzaworODg1NzUgNzQwYWI5MjdiZjg5OGJkY2NjNmYxNGU5NTBlM2ExNGRkNzhiOTNjNCBweTNrCis4ODU3NiBiMTdhMDY0OTI5YjA0YzhmNzZhM2U2OTJjMDJhMGI5YTg1YjBmMWEzIHB5M2sKKzg4NTc3IDlmZjdiYzM2MTA2MDQzMzhkZWZhZDFhYTJlM2EzYmY0YTdmMDc4ZWYgcHkzaworODg1NzggZWI1ZWQzZGE2ODYyMzRhMDE1OGI0ZTFiMjQ1ZmQ3ZWJlYzllYjQ5OCBweTNrCis4ODU3OSAxNzYyZDc5ZWFiNjVmNWZjM2I2Mjk3YjU1OTM0Nzc0MjkzZGUwYjcxIHB5M2sKKzg4NTgwIDdmZDgwYzYxZGRhYTNmODBlYjI0YWU0ZjI2MTMyZmJhMGFmNzhhYmIgcHkzaworODg1ODEgZDNmOTNhMTJkNmE5MTVlZTQyMzAxMzAwMDk2ZTcxYmE3OTY0ZGYwYiBweTNrCis4ODU4MiA2MzZiMmI1NTIwNzNkMWYwYjgyYmViYTBhMGVkNDU3ZWI0NzI0NmU4IHJlbGVhc2UzMi1tYWludAorODg1ODMgZmQ0MDExMGQ1ZDg3MzdmOGFkN2EyMjQ5MjJjOTIwOWQzNGY2N2E3YiByZWxlYXNlMjctbWFpbnQKKzg4NTg0IGJkMjUyYzEyZGExZDg4M2M0MWQzYmI2MGEyOGYxYTFhM2QzODYzYWEgcHkzaworODg1ODUgZjRiMWE2NTc5NTQxN2I0YmJlOGVkODk0N2I5ZWNiMTgyZDJhZGEzZCBweTNrCis4ODU4NiBiZTZjMzhkMTgxN2IzMDIwYjc2MDQwMGFhMmY1YWVmNzE3YTljOTIzIHB5M2sKKzg4NTg3IDM2YzFiNjhiMDU4NjVmYjlmYTE4OWI1YjllMGQxZjg4MDg4YTMyYmQgcHkzaworODg1ODggMTlkMDdmYTQyMDA0YjEyNDFlZjY5MzFhOGIyMWZmODAzYmNmZmYwOSBweTNrCis4ODU4OSA4NDJmZWU2YWUwZTUwMzA4OTBlZGY1ZDcwOTNiZTViODlhNTM4NmRkIHB5M2sKKzg4NjAyIDdhYjU2OWIxOGM5OGY4ODRhYmE1ZTVjYjUyNzUxZmY2M2ZhOWFhNzQgcHkzaworODg2MDMgOGM1YjgxMTQ4NGJjMmQyZWUxMzQ2YTNkYTU0NjUyY2U4MzQ5MjBlMiBweTNrCis4ODYwNCAxMmNhNDc3YzQzNzhjMTc1OGQwOTk5NTE2ZTA5YjQ0OTFjZjBhZDczIHB5M2sKKzg4NjA1IGI3ZTg1ZmQwZDFjOTJkYjlmZjliMmQwN2U3ZWE3ZmYwZmJiNjE5ODUgcmVsZWFzZTMyLW1haW50Cis4ODYwNiAxODYzNmI4NzFkMDE3NDIyOTljZmE4MGQzOTg1OWZkYzFmYmU4ZDc2IHJlbGVhc2UyNy1tYWludAorODg2MDcgNGI2MDUyMzIwZTk4M2FkNzk4ZDQxZDMwYzQ5NmZkOWMxNzIxMjQwNyBweTNrCis4ODYwOCBhMDM4MzQyODcyYTM0YzU0ZDcwOTNhNzQ2ODM4YzFlYWZhNjQxYzE3IHB5M2sKKzg4NjA5IGE5ZWIwMDg3YjYwMjE0M2JkNjU5ZmIxZGE5NWEwNzdmMjQzODBhM2UgcHkzaworODg2MTAgNzg1OTMzYmE0OGFjNmIwNDc2MWU1MGY0MjA5YmM2MDgwMTQ2ZTRlMiBweTNrCis4ODYxMSA2NmVkNzFhNmUyOWE4ZjFiZjM5YmJhM2Y2OGIyNmYwZmE2MjA4NDRlIHJlbGVhc2UzMi1tYWludAorODg2MTIgNjc1YjQ4YzRjODhhMWJiNzFlOGJhYjUxZWRkMDczOGM0ZjFkMTYxNyByZWxlYXNlMjctbWFpbnQKKzg4NjEzIDcwNmJlNmVlOTY2OGI0NjQ0MDViZGI2NWI2ZDgzNTk3MWZkNWE5MzMgcHkzaworODg2MTQgNmYxMmFhZGZmYzlmYjkxZDNlMTM5ZGFlYTY1NjU3MmI4M2I3M2RhMiByZWxlYXNlMzItbWFpbnQKKzg4NjE1IDhiM2VmNzE5YmNlZDJkYWE4Zjg0MGIwMTkxNDJjNmIzZTUwNDljMjYgcmVsZWFzZTMxLW1haW50Cis4ODYxNiBkYjQ2ZWRhMjBmZDAyOWZiNzAxMjA5NGM0YTQwNWI0MTMxN2M4ZTRjIHB5M2sKKzg4NjE3IGE3NDkyNGVlYTg2MWE5ZGU5NjFmNTdkM2VlN2QwNjYzZjIxZDk5NGIgcmVsZWFzZTI3LW1haW50Cis4ODYxOCBmNzFhY2M0YjIzNDEwMmI2NzU3OWJlZDJjMTM3ZTBmMDJlNjdlNjVhIHB5M2sKKzg4NjE5IDg3NDI1ZGMyM2YyNmU1ZGVmMWNlMmM2YTAyZTNiMDMzZWQzMDIyZjIgcHkzaworODg2MjAgZDIxOTAwNTExNjc1Y2VhNDlhOTBjN2FjYmIwMmExZWU1ZWZjNWQzMCBweTNrCis4ODYyMSAyNzk2MWRjYTgzMzMwMmMxZjIxNWYwYzk2NTdmMDgyZTkyOWJjMTM0IHB5M2sKKzg4NjIyIDE3ZDFjNmNlZGU3ZWQzYmNjZTI1MjE1M2FlZGFhODFiMjg0ZDA2YzggcHkzaworODg2MjMgNTlmOWVkMTJmMTdhNGVmZWY0MzE4MzA0NTg1ZDE2MDJlYWFkMWNmZiByZWxlYXNlMzItbWFpbnQKKzg4NjI0IDNkM2JhNDUyZjhhZGVjNTMzY2QzMjg2MWJjN2Y3OTdhMzMxODI5YjMgcHkzaworODg2MjUgYWFhZjdiNThlMjA5MGMyZWI2NTA4NmNlZDM0MzRiMGE2YzdjMDA5MyBweTNrCis4ODYyNiAyNjdkYmQ2Yzk4YzMxOTMwMWU5NWM3MDFjYmMxYTg3MDZlYTI0NTIzIHB5M2sKKzg4NjI3IDUzYTQ1ZmI3MDc4NmZhM2RjZWQxMzFkNzZmOTM3YTRkNGU2OGZkNDUgcHkzaworODg2MjggNzNjNWFiYjQxMjk2ZDY5OTc0ZjZiMjMxYjEzOTlkMDJhYjBhZGU4ZSBweTNrCis4ODYyOSAyYTE5ZjAyNWI5NzRhYTViZGUzMzNkOGMxOGIwNTBlNDlmYzFhMWM4IHB5M2sKKzg4NjMwIGE4NjdmMDJkOGY4ZDdmNmIyZDljMGVlNTE3MWVlM2Q5ZDA3YTQxODEgcHkzaworODg2MzEgNjU0YzlmMTNjZmU5ZTEwNzJmNGZiYjEyMGE1NmQ1NWMwMmM4M2NlMSBweTNrCis4ODYzMiBmNDU1NWQzNGYzNDBhMzA5YjEwMmIwMzExNjM3ODY3ZmIxYTA0OWJjIHB5M2sKKzg4NjMzIGIzMjI2YWQ5YTM5OGRmOWRmYjZmNTkwNzIyNzNiMGNmMTc5YmFlNmEgcHkzaworODg2MzQgYmE4ZTMwMmI2MjZjMDA4ZDFkMzFmMzlmODk2ZWVjN2FjZmE4MTczMiByZWxlYXNlMzItbWFpbnQKKzg4NjM1IGM2ZDMwM2I5OWM4MmFhZjI4YThjZjE4MWY3OTJlMmE0NGY0MTZjNGIgcGVwLTMxNTEKKzg4NjM2IDRkZDkzZDBmNWQxZTA3OGRlNzMxNDc5YjIzMjkyZWEzMDU5ZjcxNGYgcHkzaworODg2MzcgNjgwOGQ1ZGJhMWVjMTNmMGZhOTg4YmE5MjVlODFkZmQ1ZGNiNDY0ZCBwZXAtMzE1MQorODg2MzggOWViMjAyZTYzMjBlNGFkYzk3ZWRjOWMyODlmNjcxOTNmMDVkYWIyZCBlbXB0eQorODg2MzkgNDA5MjI5NmEzZDhkYTViMWYxYTA2MmZhYzIzNGExNGFiN2E4NTFiNSBweTNrCis4ODY0MCA3ZmE4NmE5MTk1NjcyYzhkODg4NGViNzYwNDJkY2UwMzIyNWIzNGExIHB5M2sKKzg4NjQxIDYwYTViNGIyMzU1ZGU1ZjczNjY2NTdjODNmY2I1ZDI3ZjE5MTRjMjMgcmVsZWFzZTMxLW1haW50Cis4ODY0MiAwYjU5NmZmNmQ0Njk3NTdlMjczMjAxNzBjM2Y2OGUyYTFhODlmMWVlIHJlbGVhc2UyNy1tYWludAorODg2NDMgNzNkYWY5MWM2MTVjNTNjYzc4YjVkNDljODY0MGM1YWFlYzNiYmI5ZSBweTNrCis4ODY0NCA3NjQxZmUwODlkYTFkYWQ3Y2FmM2YwOTMyOGRkNGE5MDBkNjczYzNhIHJlbGVhc2UzMi1tYWludAorODg2NDQgOTA3ZDViMmVkNWExOWY1ZTIzZDYxNWQyYjIxNGJlMjFhYTBmYjI4YiBweTNrCis4ODY0NSA1NzE3ZGQyMTY2ZWUwNTg0NjI1MmZlZGVmN2Q4ZDQ5ODU0NTIzMzQ5IHJlbGVhc2UzMi1tYWludAorODg2NDUgN2VlYTJhNTc0ZGZjODRjNzA5MTgwOTQ1Mzg4YzhkZGQ2MzNiYjVjMSBweTNrCis4ODY0NiA3NjRiOTllZThjODEwOWY0MGNmOGYwMjYzZDE2MjM2YmRiY2YxZjVlIHJlbGVhc2UzMi1tYWludAorODg2NDYgYzg2ZjkwMzQwY2Q3ZDIyNzJkNjdlYjFjOTBmNDE1ZTNlYWFjNzUzYSBweTNrCis4ODY0NyAwN2FmZmEwMzM4YmFkMjk0MTA1MWEzZWM4NjljZWI0ZWY0ZmYyMGU5IHB5M2sKKzg4NjQ4IDMxZDRiMDRjYjViMDU2N2QyZWQ0YWY3NzNkMTg4Zjg0NWZjYWVkZTMgcmVsZWFzZTMxLW1haW50Cis4ODY0OSA5N2QwNTBjMzE3MmY5ZTJlZGM4MmIyOTIyOGRiZDY4OTFmY2QyYmEwIHJlbGVhc2UyNy1tYWludAorODg2NTAgMjc2ZGU5YjI5MzAzMGMxMDRkZWI3YzY3NWUzYWY2OTk2OWE5ODc0MiBweTNrCis4ODY1MSAzNzRmMGIyMmU0YTRjNWIxYmU0MGQwNjFkNWY4NDY5YmExZDU0YjJkIHJlbGVhc2UzMi1tYWludAorODg2NTIgMDkxMjlhYWZiOTUzNmJkY2ZiZmQ3YTQ0YzNiYzJlMWQwMjk3MmUzNSBweTNrCis4ODY1MyBmZWQyYzZkNDlmMTk4MDA2ZTU0YjM3OTFhNDk1ZjdiYmFjYmUwODlhIHB5M2sKKzg4NjU0IDk3OWRhOGYxMzlkZDNkNmUyMTlmMGJhYmZmNDc2Zjk1Y2NlNmE1MjEgcmVsZWFzZTMyLW1haW50Cis4ODY1NCA2YThmYTJlOWIxMDU1Y2FkN2NjMjE4Mzk5MDNmOWYzOTgzYzM1NzgwIHB5M2sKKzg4NjU1IGNkMTQ3ODI4ODZjYWEyODUwM2JiMzU2ZjViM2MzN2E0MWUyMTFiNDEgcmVsZWFzZTMyLW1haW50Cis4ODY1NiA3MjJhZWViNTdlYWJiZGZmOWJmNTFiNGY4NDNlYTFmYzQwZmVkMDE5IHB5M2sKKzg4NjU4IDEwMjU2YmQ2ODc4NzkxNWY4ZjNmZmQ1OTQ2MTFkNjcwMDY5MDI3ZTIgcHkzaworODg2NTkgNTlmNzRhYWQ5NzAzMWYxOWRlYWRjZThmODY5MDQ1YWRmZDk4NDc5MCByZWxlYXNlMzItbWFpbnQKKzg4NjYwIGM3N2IyNWFkZmVjMjNjNDE0MWE1MWNkZTFhODU5Mzk1ZDkzMTBjMTUgcHkzaworODg2NjIgYTU4MTI5Y2RkMzY1NzMyNGEyZWYwODg0ZDQ5ZmRjNGRiZmI0YzUxNiByZWxlYXNlMjctbWFpbnQKKzg4NjYzIDg2ODdhMWI3MzUxNmNjNTIwMzFjNzcwOTgyZDkyZDkyZmJlNGRiZGMgcHkzaworODg2NjQgMTkwOWMxMmVmMDZjN2MxYzJlMjI0MjYyOWMzYjgyZDFkNzc0NDg3NSBweTNrCis4ODY2NSA2Y2VjMDkxMDIwYTJjOTk2OWFjOGFhMjk3ZGFmMmYzNmRlZDQ5ZmQ0IHJlbGVhc2UzMi1tYWludAorODg2NjYgNzQyZDczYTk5NDI1NzRiNTEzMGM5NGRlMWYzYTI4NmMxZTIyNzBjYiByZWxlYXNlMjctbWFpbnQKKzg4NjY4IDY1MGQxNDgyMGJkOGM2NmRmNGEwYmFhNWQxZGRhZTNkNDA4NzViMGYgcHkzaworODg2NjkgYTk1NjU5MjViYTcwNjFkNjM3MTg0MDY0ZDc4ZmI1MmY4ZGM4MmIyMyByZWxlYXNlMjctbWFpbnQKKzg4NjcwIGE1YjVmZGE2Njg5YzY1M2Q4NWQ2ZjQ3ZTdlMGE0NmQ0ZTIxZDFiM2QgcmVsZWFzZTMyLW1haW50Cis4ODY3MSAyZjA3ZDM3NWNlNmVlY2FiNDcxZTVkOGViYjg4OTEwNmYxNjlkYTEwIHB5M2sKKzg4NjcyIDQ1NjUwZWIzNDY4NTExN2E3Yjg2Zjc1NmZiMTI2ZGNiMmYzZmQ1MTEgcmVsZWFzZTMyLW1haW50Cis4ODY3MyAyMTQzNmU0ODE2MWZjMzE3MDIwMTAwMWNjYWJhN2E1NWIzOWRiNTc1IHJlbGVhc2UyNy1tYWludAorODg2NzQgZGM4NjI2ZTA4NTc3ZDZiMWZkMTJlNDBmZDU5YzllNTIzMDA4ZDZhMyByZWxlYXNlMjctbWFpbnQKKzg4Njc1IDcyOGZiYzI2MzU5YzEwN2ZmNzU1Y2U1YmI2YjliM2IwODBmMWJlZjEgcGVwLTMxNTEKKzg4Njc5IGNiZDA2MDgxMDNmNjEwNmVmYTFkNjUyM2Q5ZTBlYWI5OTRkY2ExNGYgcHkzaworODg2ODAgYjdkNjJiYzAxOTk4ODkyMTJiZGNkNDBkNWQwNGEzY2E5ODhkMzQ1ZiBweTNrCis4ODY4MiAyZGRjYTU1ZTA5OGRkYTJiMWE2ODU2YTM1OWUxOWY3OGQ5ODVjNjg4IHB5M2sKKzg4NjgzIGJiZGRhYzVjMThkMzk4MGU3NjU4YTA5YmQ0ZmU4NTQxNzk4YzM1M2MgcHkzaworODg2ODQgN2M2YjIxZGIwMGUzZTNmMTU1ZDJiOGE5MWQxMmNkMjg0ODIwODc0ZSBweTNrCis4ODY4NSBhMmQ2MTExN2MyZDI2NDlmOTA5MGY2ODlhYTg1YzU1NzVhNmQ3MzM5IHB5M2sKKzg4Njg2IDEwYjgzOGY2ZTVhMWE5NGJhNzNhMWQzYzY1Yzk1MGNkZDhkNWRiMzMgcHkzaworODg2ODcgZmRmMzJmYTBmNDQwZTcxZTUwZDBmZmMzNTIyOWQ2YTE0YzdkMmE0MiByZWxlYXNlMzItbWFpbnQKKzg4Njg4IGIyOTRmZjc1NzMzNjVjZGRjY2E4YTI3YzE2NDlmZDE4ZDE5OTQ0OGMgcGVwLTM4MgorODg2ODkgZjhhNzdmZDY3NWY1YTNjZTA1MWVlNDA0YzdiNTZkYjFjNzJlYmYxZCByZWxlYXNlMzEtbWFpbnQKKzg4NjkwIDQ0NzM0ZDM3NTM5MzE1NDhhYzRhOGVkOTI4MmIwMzQ5YjhiNjAxNTIgcmVsZWFzZTMxLW1haW50Cis4ODY5MSAyNjExY2JkNzVjNGY5NzFjZjZmYmY2YjMzNzI3OTk2NjdiNTk1MDMwIHB5M2sKKzg4NjkyIGEzNjYwOTZiOTVhZDJhNmI1ZjhhODZiNGE5MDhkMjI4NzFiOGNkYzkgcmVsZWFzZTMyLW1haW50Cis4ODY5MyAxNzk3MzAwZjg3Yjk5ODY1YjY2NTgxY2VkYWE4NDc2ZDI0NTg3NTFmIHJlbGVhc2UyNy1tYWludAorODg2OTQgOWFjYzkwMjFmMTFlMzAyMTgzNmM4OWNlODI1ODNiYmY4ZWY5N2E5MyBwZXAtMzgyCis4ODY5NiA4ZTA3ZmM5NDg2ODA2ODQ5MDVmMjZlY2E0ZTYyY2I4ZmJkYWVkNjQ4IHB5M2sKKzg4Njk3IDliNzI1NDY3MGNlOWRhMDAyNzUzY2EwMGMyNDhlYWJmNWRkZjNmYWUgcHkzaworODg2OTggNzJmMzBmOGVmMzMxZTliNWY1MTQwZThmMzFlYTdkY2JlYjkwMDBhMiByZWxlYXNlMzItbWFpbnQKKzg4Njk5IGI4MmMzZTU5M2RiNjU1NWZiODE2NTgxNmJjN2EyOWNhMWIyMjdjNDYgcHkzaworODg3MDAgMWQxOTg1MThjYjg3NWMzOWU1M2FlZTNhZjdkNTRhNjZmYzEyZDNmMyBweTNrCis4ODcwMSA1ZGMzNDkzZTA3YTlmMmE4MzBlNzlhYjMwODFjMDY0OTAzMGMzZDE2IHJlbGVhc2UzMi1tYWludAorODg3MDIgZGE5NTQ0MGQ5MmIzNmIwMDgyMTg3MTExNWQzM2IwYzUxMDhjMTFmMyBweTNrCis4ODcwMyA3M2E0OTlmMGVhZjFiMGFlZjI4NDRhNjFhMTljMTM0MDk5N2Y4ZDdjIHB5M2sKKzg4NzA0IDg3ZGUwMTdkYTRiZjdjYjNkNjAyNzY1MTdkMjE4MzBiM2FlOWUwZDcgcHkzaworODg3MDUgNzI5MGI4ZjNjOWZiOTk4NDY2OWQwODA3ZTk4NGJlYzcxMzUxM2YwMyBweTNrCis4ODcwNiAzM2U3NjhkMjNiMTZhNTcxMGU0ZjUyMmE2MjA4ZTkyYmNjMmQzY2U5IHB5M2sKKzg4NzA3IDZmMTE3ZDI3YWQxYzVlNjMyMzlkZDUyYzMyNTYyZDgyNDI1YWY4NjcgcHkzaworODg3MDggYzdhOTM2MzYyMjgxOWYzZWFiNzcyYzc4MDQzNGIyMzQ3MWZlMGIyNSBweTNrCis4ODcwOSAzNzhlZTMyOGI2MGUwYjE2MzZhYTI0NzU3YmVhMWExNWY5MjgxYWU0IHB5M2sKKzg4NzEwIGExZGJlNTNmMzc5ODQ1ZmY2MzY3MDliMDhhYjQ1NjMzN2M4NjVjOTMgcHkzaworODg3MTEgNGRhYzQ3NjllYTI0OGFhY2M4MzA3N2U1N2E2NGQyYzEzNDFjMjNhYSBweTNrCis4ODcxMiA2YjEyZDJiNjhmMjUzMzNkZDVhZmZlNmUzZThmNDZiNTVjZDQyNDI0IHB5M2sKKzg4NzE3IDBkYzZhOTBkZWUyMTkxMjJhYmY1NjZhYzg1OGFlYTY1YzQzMDA4MmYgcHkzaworODg3MTggNmM4ZWM1ZjhiOWU1MWJjZTE1NGUxMThlZmE5MWY3MWIwMDk2ZWJkMCByZWxlYXNlMzItbWFpbnQKKzg4NzE5IGE0ZTdmYmVkNzUzYzczMWE1NTI2N2NlNzEwMDlhODBkODI3MDRkNGEgcHkzaworODg3MjAgNzM4ZmVlYzljZWQwMWZjMzEzODkyZGIzYjEwNTg5ZmI2MDI1Yjg3YSBweTNrCis4ODcyMSAyMGE1YTA4YzNiNmNhOWQ4YTQwODY5N2I5NTc2NzBkNWUzZDYyOWMwIHB5M2sKKzg4NzIyIDIwOGE1MjkwZmQzOGVjOGM0ZmUxMzhlNzllODIzZDAxODc0M2VjYzYgcHkzaworODg3MjMgYTE3MjcwNjNhN2RmZWIwZDJhNjNhNmIxYTI5ZjQ2ZmVjMzJiMDU4MiByZWxlYXNlMzItbWFpbnQKKzg4NzI0IGY1Mzk4ZmI4MTQyODliMjRhOGIwNWZhZWQzNDRmN2Y5MGI3NzU2ZDcgcHkzaworODg3MjUgMmZjZTljNzQyY2RlYWI0ZGVkMTExNTJlY2JkZDkwNjdlMTBlZjBlMiByZWxlYXNlMzEtbWFpbnQKKzg4NzI2IGRkYzBiYjZhN2I3YzcyYzdhYmI3YjFjNDgwZGVhOGZkOTE4ZGI5Y2UgcHkzaworODg3MjcgNThjYjBmZTA2ZGFhMzY1MTk1MzU1MWJlNWIxMWIxNDUwMTU0N2IwMCByZWxlYXNlMzItbWFpbnQKKzg4NzI4IDk2NWFiOTkxMWZjZDBlZjE0YWZlMGRhOWY4MzU1NWM2ODk3OGU3ZDAgcmVsZWFzZTI3LW1haW50Cis4ODcyOSBmMjA0NmRmY2E3MzExMzY3MmQ1OWI1MDQ2ZmY4NmIwYjAzYjQxZDA5IHB5M2sKKzg4NzMwIGI1MjgxZjVmYWRlNGRkNTY3ZjFmMWQ1NmZhYzljZTdkNTdlYjlmOTkgcHkzaworODg3MzEgYmM5ZWZiYmU2M2NmM2ViM2EzYjdjMWI5MjQ2YzU0NGY2ZmE1ZmViMiByZWxlYXNlMzItbWFpbnQKKzg4NzMyIGE4Mzg5NDY4ZTY1MTM3YzUwNjVmNzAyYzg0NmI5YzBlNTYxZTU5NzIgcmVsZWFzZTI3LW1haW50Cis4ODczMyAwODgwNGFlYTA4ZjFjNDhhMTZjODQ5ZGExMjcwN2U1MWE4N2Q4NmQ5IHB5M2sKKzg4NzM0IDJmNWY3NTViMjY4NzhjYjBmYjM1YzBjNTkwNzNhYWYxOGViZTM2ODMgcHkzaworODg3MzUgZDJiNWJkZTVjMWZhNGM5NGE3NDdjNjcwMTYzZDZhYzcwMWY5NjA5NiBweTNrCis4ODczOSAxYTA1YmMzNmEzMzQwYTRlNmI1OTYxNTM4NTQzZjEwZTliZjhjZjdhIHJlbGVhc2UzMi1tYWludAorODg3NDAgM2Y3MGM1NGQ4NmQ4OWFkY2Y3YTc0NTIwMjU5NjdhOGY3MGJlMjljZiBweTNrCis4ODc0MSBlMmRmYzhmMjRkM2Y2ZWE4Mzg2M2QyZTMyYzBjMzAzZTAyNmFhYWZkIHJlbGVhc2UyNy1tYWludAorODg3NDIgOTNmZDE2NjcwNzc0YTI3N2I5MTczOTA0MjZiODRjMjhhYjc5NmM3YSBweTNrCis4ODc0NCBlNzQyMDliOWIyZjUyODhmOTM3ZDZlMzQxMWEyY2YxMGE4NjQ2YjA0IHB5M2sKKzg4NzQ1IGU3YjZhZGJhNTcxYWE5M2E0NDE0NWYwZWJmN2I1YmJhMmUzODU5MzEgcHkzaworODg3NDYgNTBiMzhlNGIwMjMxMjY3YjkxNzU1YzRkMWEwMDcyMGYzODE5NTI2OCBweTNrCis4ODc0NyAwZTcxODBlNGMzY2RiOTQ4NDE4YmMxN2I1NzRkMWZmNjUxNDI5ZjRkIHB5M2sKKzg4NzUyIDg1YTM0YTMxNjk2OTI3ODU5M2Q0NTRhODZlZjQzYTJmNzZjMmQ3NmMgcHkzay1jZGVjaW1hbApkaWZmIC0tZ2l0IGEvTWlzYy92YWxncmluZC1weXRob24uc3VwcCBiL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAKaW5kZXggYTY2MzA1Yi4uODFhMDdjOSAxMDA2NDQKLS0tIGEvTWlzYy92YWxncmluZC1weXRob24uc3VwcAorKysgYi9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwCkBAIC0xMzcsNiArMTM3LDE4IEBACiAjIyN9CiAjIyMKICMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpBZGRyOAorIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKKyMjI30KKyMjIworIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOlZhbHVlOAorIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKKyMjI30KKyMjIworIyMjewogIyMjICAgQUREUkVTU19JTl9SQU5HRS9Db25kaXRpb25hbCBqdW1wIG9yIG1vdmUgZGVwZW5kcyBvbiB1bmluaXRpYWxpc2VkIHZhbHVlCiAjIyMgICBNZW1jaGVjazpDb25kCiAjIyMgICBmdW46UHlPYmplY3RfRnJlZQpAQCAtMTU1LDYgKzE2NywxOCBAQAogIyMjfQogIyMjCiAjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6QWRkcjgKKyMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCisjIyN9CisjIyMKKyMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpWYWx1ZTgKKyMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCisjIyN9CisjIyMKKyMjI3sKICMjIyAgIEFERFJFU1NfSU5fUkFOR0UvQ29uZGl0aW9uYWwganVtcCBvciBtb3ZlIGRlcGVuZHMgb24gdW5pbml0aWFsaXNlZCB2YWx1ZQogIyMjICAgTWVtY2hlY2s6Q29uZAogIyMjICAgZnVuOlB5T2JqZWN0X1JlYWxsb2MKQEAgLTI4Niw2ICszMTAsMzggQEAKICMjIyAgIGZ1bjpNRDVfVXBkYXRlCiAjIyN9CiAKKyMgRmVkb3JhJ3MgcGFja2FnZSAib3BlbnNzbC0xLjAuMS0wLjEuYmV0YTIuZmMxNy54ODZfNjQiIG9uIHg4Nl82NAorIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE0MTcxCit7CisgICBvcGVuc3NsIDEuMC4xIHBybmcgMQorICAgTWVtY2hlY2s6Q29uZAorICAgZnVuOmJjbXAKKyAgIGZ1bjpmaXBzX2dldF9lbnRyb3B5CisgICBmdW46RklQU19kcmJnX2luc3RhbnRpYXRlCisgICBmdW46UkFORF9pbml0X2ZpcHMKKyAgIGZ1bjpPUEVOU1NMX2luaXRfbGlicmFyeQorICAgZnVuOlNTTF9saWJyYXJ5X2luaXQKKyAgIGZ1bjppbml0X2hhc2hsaWIKK30KKworeworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDIKKyAgIE1lbWNoZWNrOkNvbmQKKyAgIGZ1bjpmaXBzX2dldF9lbnRyb3B5CisgICBmdW46RklQU19kcmJnX2luc3RhbnRpYXRlCisgICBmdW46UkFORF9pbml0X2ZpcHMKKyAgIGZ1bjpPUEVOU1NMX2luaXRfbGlicmFyeQorICAgZnVuOlNTTF9saWJyYXJ5X2luaXQKKyAgIGZ1bjppbml0X2hhc2hsaWIKK30KKworeworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDMKKyAgIE1lbWNoZWNrOlZhbHVlOAorICAgZnVuOl94ODZfNjRfQUVTX2VuY3J5cHRfY29tcGFjdAorICAgZnVuOkFFU19lbmNyeXB0Cit9CisKICMKICMgQWxsIG9mIHRoZXNlIHByb2JsZW1zIGNvbWUgZnJvbSB1c2luZyB0ZXN0X3NvY2tldF9zc2wKICMKQEAgLTM4OCw0ICs0NDQsMjggQEAKICAgIGZ1bjpTSEExX1VwZGF0ZQogfQogCit7CisgICB0ZXN0X2J1ZmZlcl9ub25fZGVidWcKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgorfQorCit7CisgICB0ZXN0X2J1ZmZlcl9ub25fZGVidWcKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlX0ZTQ29udmVydGVyCit9CisKKyMgQWRkaXRpb25hbCBzdXBwcmVzc2lvbnMgZm9yIHRoZSB1bmlmaWVkIGRlY2ltYWwgdGVzdHM6Cit7CisgICB0ZXN0X2RlY2ltYWwKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgorfQorCit7CisgICB0ZXN0X2RlY2ltYWwyCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZV9GU0NvbnZlcnRlcgorfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggOTI2OWRkZi4uZjQ1ZGU1YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtMTI3LDYgKzEyNyw5IEBACiAjIGJ1aWx0aW4gbW9kdWxlIGF2b2lkcyBzb21lIGJvb3RzdHJhcHBpbmcgcHJvYmxlbXMgYW5kIHJlZHVjZXMgb3ZlcmhlYWQuCiB6aXBpbXBvcnQgemlwaW1wb3J0LmMKIAorIyBmYXVsdGhhbmRsZXIgbW9kdWxlCitmYXVsdGhhbmRsZXIgZmF1bHRoYW5kbGVyLmMKKwogIyBUaGUgcmVzdCBvZiB0aGUgbW9kdWxlcyBsaXN0ZWQgaW4gdGhpcyBmaWxlIGFyZSBhbGwgY29tbWVudGVkIG91dCBieQogIyBkZWZhdWx0LiAgVXN1YWxseSB0aGV5IGNhbiBiZSBkZXRlY3RlZCBhbmQgYnVpbHQgYXMgZHluYW1pY2FsbHkKICMgbG9hZGVkIG1vZHVsZXMgYnkgdGhlIG5ldyBzZXR1cC5weSBzY3JpcHQgYWRkZWQgaW4gUHl0aG9uIDIuMS4gIElmCkBAIC0yMDcsNyArMjEwLDcgQEAKICMKICMgRmlyc3QsIGxvb2sgYXQgU2V0dXAuY29uZmlnOyBjb25maWd1cmUgbWF5IGhhdmUgc2V0IHRoaXMgZm9yIHlvdS4KIAotI2NyeXB0IGNyeXB0bW9kdWxlLmMgIyAtbGNyeXB0CSMgY3J5cHQoMyk7IG5lZWRzIC1sY3J5cHQgb24gc29tZSBzeXN0ZW1zCisjX2NyeXB0IF9jcnlwdG1vZHVsZS5jICMgLWxjcnlwdAkjIGNyeXB0KDMpOyBuZWVkcyAtbGNyeXB0IG9uIHNvbWUgc3lzdGVtcwogCiAKICMgU29tZSBtb3JlIFVOSVggZGVwZW5kZW50IG1vZHVsZXMgLS0gb2ZmIGJ5IGRlZmF1bHQsIHNpbmNlIHRoZXNlCkBAIC0yMzEsMTUgKzIzNCwxNCBAQAogIyBzeXN0ZW0gZG9lcyBub3QgaGF2ZSB0aGUgT3BlblNTTCBsaWJzIGNvbnRhaW5pbmcgYW4gb3B0aW1pemVkIHZlcnNpb24uCiAKICMgVGhlIF9tZDUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIE1ENQotIyBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBSRkMgMTMyMS4gIFRoZSBuZWNlc3NhcnkgZmlsZXMKLSMgbWQ1LmMgYW5kIG1kNS5oIGFyZSBpbmNsdWRlZCBoZXJlLgorIyBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBSRkMgMTMyMS4KIAotI19tZDUgbWQ1bW9kdWxlLmMgbWQ1LmMKKyNfbWQ1IG1kNW1vZHVsZS5jCiAKIAogIyBUaGUgX3NoYSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgU0hBIGNoZWNrc3VtIGFsZ29yaXRobXMuCiAjIChOSVNUJ3MgU2VjdXJlIEhhc2ggQWxnb3JpdGhtcy4pCi0jX3NoYSBzaGFtb2R1bGUuYworI19zaGExIHNoYTFtb2R1bGUuYwogI19zaGEyNTYgc2hhMjU2bW9kdWxlLmMKICNfc2hhNTEyIHNoYTUxMm1vZHVsZS5jCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKaW5kZXggZWFlMjk3OC4uZmFjYThjZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKQEAgLTkwLDcgKzkwLDkgQEAKICAgICAgICAgaWYgKFB5TGlzdF9JbnNlcnQobGlzdCwgaW5kZXgsIGl0ZW0pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QobGlzdCwgImluc2VydCIsICJuTyIsIGluZGV4LCBpdGVtKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoaW5zZXJ0KTsKKworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGxpc3QsICZQeUlkX2luc2VydCwgIm5PIiwgaW5kZXgsIGl0ZW0pOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC0xOTMsNyArMTk1LDggQEAKICAgICAgICAgaWYgKFB5TGlzdF9JbnNlcnQobGlzdCwgaW5kZXgsIGl0ZW0pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QobGlzdCwgImluc2VydCIsICJuTyIsIGluZGV4LCBpdGVtKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoaW5zZXJ0KTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChsaXN0LCAmUHlJZF9pbnNlcnQsICJuTyIsIGluZGV4LCBpdGVtKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYnoybW9kdWxlLmMgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWVlNWEyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKQEAgLTAsMCArMSw2MDcgQEAKKy8qIF9iejIgLSBMb3ctbGV2ZWwgUHl0aG9uIGludGVyZmFjZSB0byBsaWJiemlwMi4gKi8KKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8YnpsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKyNpZm5kZWYgQlpfQ09ORklHX0VSUk9SCisjZGVmaW5lIEJaMl9iekNvbXByZXNzIGJ6Q29tcHJlc3MKKyNkZWZpbmUgQloyX2J6Q29tcHJlc3NJbml0IGJ6Q29tcHJlc3NJbml0CisjZGVmaW5lIEJaMl9iekNvbXByZXNzRW5kIGJ6Q29tcHJlc3NFbmQKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzcyBiekRlY29tcHJlc3MKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0luaXQgYnpEZWNvbXByZXNzSW5pdAorI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzRW5kIGJ6RGVjb21wcmVzc0VuZAorI2VuZGlmICAvKiAhIEJaX0NPTkZJR19FUlJPUiAqLworCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKKyAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXAorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTIFwKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAxKTsgXAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCisgICAgfSB9IHdoaWxlICgwKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKSBQeVRocmVhZF9yZWxlYXNlX2xvY2soKG9iaiktPmxvY2spCisjZWxzZQorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQorI2VuZGlmCisKKyNkZWZpbmUgTUlOKFgsIFkpICgoKFgpIDwgKFkpKSA/IChYKSA6IChZKSkKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJ6X3N0cmVhbSBienM7CisgICAgaW50IGZsdXNoZWQ7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBCWjJDb21wcmVzc29yOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJ6X3N0cmVhbSBienM7CisgICAgY2hhciBlb2Y7ICAgICAgICAgICAvKiBUX0JPT0wgZXhwZWN0cyBhIGNoYXIgKi8KKyAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBCWjJEZWNvbXByZXNzb3I7CisKKworLyogSGVscGVyIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIGludAorY2F0Y2hfYnoyX2Vycm9yKGludCBiemVycm9yKQoreworICAgIHN3aXRjaChiemVycm9yKSB7CisgICAgICAgIGNhc2UgQlpfT0s6CisgICAgICAgIGNhc2UgQlpfUlVOX09LOgorICAgICAgICBjYXNlIEJaX0ZMVVNIX09LOgorICAgICAgICBjYXNlIEJaX0ZJTklTSF9PSzoKKyAgICAgICAgY2FzZSBCWl9TVFJFQU1fRU5EOgorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyNpZmRlZiBCWl9DT05GSUdfRVJST1IKKyAgICAgICAgY2FzZSBCWl9DT05GSUdfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpYmJ6aXAyIHdhcyBub3QgY29tcGlsZWQgY29ycmVjdGx5Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgICAgICBjYXNlIEJaX1BBUkFNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIGVycm9yIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBhcmFtZXRlcnMgcGFzc2VkIHRvIGxpYmJ6aXAyIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9NRU1fRVJST1I6CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUjoKKyAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SX01BR0lDOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJJbnZhbGlkIGRhdGEgc3RyZWFtIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9JT19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiVW5rbm93biBJL08gZXJyb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX1VORVhQRUNURURfRU9GOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSBsb2dpY2FsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX1NFUVVFTkNFX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJuYWwgZXJyb3IgLSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgc2VxdWVuY2Ugb2YgY29tbWFuZHMgc2VudCB0byBsaWJiemlwMiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGVycm9yIGZyb20gbGliYnppcDI6ICVkIiwgYnplcnJvcik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKKyNpZiBCVUZTSVogPCA4MTkyCisjZGVmaW5lIFNNQUxMQ0hVTksgODE5MgorI2Vsc2UKKyNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKKyNlbmRpZgorCitzdGF0aWMgaW50Citncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK3sKKyAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gVXNlIGEgbGVzcy10aGFuLWRvdWJsZQorICAgICAgIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCisgICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIHNpemVfdCBuZXdfc2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKSArIDY7CisgICAgaWYgKG5ld19zaXplID4gc2l6ZSkgeworICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgbmV3X3NpemUpOworICAgIH0gZWxzZSB7ICAvKiBvdmVyZmxvdyAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgYnVmZmVyIC0gb3V0cHV0IHRvbyBsYXJnZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfQorCisKKy8qIEJaMkNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb21wcmVzcyhCWjJDb21wcmVzc29yICpjLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuLCBpbnQgYWN0aW9uKQoreworICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBjLT5ienMubmV4dF9pbiA9IGRhdGE7CisgICAgYy0+YnpzLmF2YWlsX2luID0gMDsKKyAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBjaGFyICp0aGlzX291dDsKKyAgICAgICAgaW50IGJ6ZXJyb3I7CisKKyAgICAgICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KKyAgICAgICAgICAgRG8gY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcyBlYWNoLiAqLworICAgICAgICBpZiAoYy0+YnpzLmF2YWlsX2luID09IDAgJiYgbGVuID4gMCkgeworICAgICAgICAgICAgYy0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgICAgICAgICAgbGVuIC09IGMtPmJ6cy5hdmFpbF9pbjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEluIHJlZ3VsYXIgY29tcHJlc3Npb24gbW9kZSwgc3RvcCB3aGVuIGlucHV0IGRhdGEgaXMgZXhoYXVzdGVkLiAqLworICAgICAgICBpZiAoYWN0aW9uID09IEJaX1JVTiAmJiBjLT5ienMuYXZhaWxfaW4gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChjLT5ienMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYy0+YnpzLmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICB9CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICB0aGlzX291dCA9IGMtPmJ6cy5uZXh0X291dDsKKyAgICAgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzKCZjLT5ienMsIGFjdGlvbik7CisgICAgICAgIGRhdGFfc2l6ZSArPSBjLT5ienMubmV4dF9vdXQgLSB0aGlzX291dDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgLyogSW4gZmx1c2hpbmcgbW9kZSwgc3RvcCB3aGVuIGFsbCBidWZmZXJlZCBkYXRhIGhhcyBiZWVuIGZsdXNoZWQuICovCisgICAgICAgIGlmIChhY3Rpb24gPT0gQlpfRklOSVNIICYmIGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX18sCisiY29tcHJlc3MoZGF0YSkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJQcm92aWRlIGRhdGEgdG8gdGhlIGNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGInJyBvdGhlcndpc2UuXG4iCisiXG4iCisiV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0byB0aGUgY29tcHJlc3NvciwgY2FsbCB0aGVcbiIKKyJmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0JaMkNvbXByZXNzb3JfY29tcHJlc3MoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcHJlc3NvciBoYXMgYmVlbiBmbHVzaGVkIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuLCBCWl9SVU4pOworICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5RG9jX1NUUlZBUihCWjJDb21wcmVzc29yX2ZsdXNoX19kb2NfXywKKyJmbHVzaCgpIC0+IGJ5dGVzXG4iCisiXG4iCisiRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdFxuIgorImluIGludGVybmFsIGJ1ZmZlcnMuXG4iCisiXG4iCisiVGhlIGNvbXByZXNzb3Igb2JqZWN0IG1heSBub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0JaMkNvbXByZXNzb3JfZmx1c2goQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJSZXBlYXRlZCBjYWxsIHRvIGZsdXNoKCkiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc2VsZi0+Zmx1c2hlZCA9IDE7CisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIE5VTEwsIDAsIEJaX0ZJTklTSCk7CisgICAgfQorICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitCWjJDb21wcmVzc29yX2luaXQoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OworICAgIGludCBiemVycm9yOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwgJmNvbXByZXNzbGV2ZWwpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCEoMSA8PSBjb21wcmVzc2xldmVsICYmIGNvbXByZXNzbGV2ZWwgPD0gOSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCBjb21wcmVzc2xldmVsLCAwLCAwKTsKKyAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorQloyQ29tcHJlc3Nvcl9kZWFsbG9jKEJaMkNvbXByZXNzb3IgKnNlbGYpCit7CisgICAgQloyX2J6Q29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgQloyQ29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEJaMkNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImZsdXNoIiwgICAgKFB5Q0Z1bmN0aW9uKUJaMkNvbXByZXNzb3JfZmx1c2gsICAgIE1FVEhfTk9BUkdTLAorICAgICBCWjJDb21wcmVzc29yX2ZsdXNoX19kb2NfX30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQloyQ29tcHJlc3Nvcl9fZG9jX18sCisiQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsPTkpXG4iCisiXG4iCisiQ3JlYXRlIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJjb21wcmVzc2xldmVsLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGNvbXByZXNzaW9uLCB1c2UgdGhlIGNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkNvbXByZXNzb3JfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2J6Mi5CWjJDb21wcmVzc29yIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEJaMkNvbXByZXNzb3IpLCAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilCWjJDb21wcmVzc29yX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIEJaMkNvbXByZXNzb3JfX2RvY19fLCAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQloyQ29tcHJlc3Nvcl9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpQloyQ29tcHJlc3Nvcl9pbml0LCAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogQloyRGVjb21wcmVzc29yIGNsYXNzLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKmQsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGQtPmJ6cy5uZXh0X2luID0gZGF0YTsKKyAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGxlbiBtaWdodCBub3QgZml0IGluIGF2YWlsX2luIChhbiB1bnNpZ25lZCBpbnQpLgorICAgICAgIERvIGRlY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcyBlYWNoLiAqLworICAgIGQtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOworICAgIGQtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgZC0+YnpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNoYXIgKnRoaXNfb3V0OworICAgICAgICBpbnQgYnplcnJvcjsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHRoaXNfb3V0ID0gZC0+YnpzLm5leHRfb3V0OworICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcygmZC0+YnpzKTsKKyAgICAgICAgZGF0YV9zaXplICs9IGQtPmJ6cy5uZXh0X291dCAtIHRoaXNfb3V0OworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgeworICAgICAgICAgICAgZC0+ZW9mID0gMTsKKyAgICAgICAgICAgIGxlbiArPSBkLT5ienMuYXZhaWxfaW47CisgICAgICAgICAgICBpZiAobGVuID4gMCkgeyAvKiBTYXZlIGxlZnRvdmVyIGlucHV0IHRvIHVudXNlZF9kYXRhICovCisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZC0+dW51c2VkX2RhdGEpOworICAgICAgICAgICAgICAgIGQtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkLT5ienMubmV4dF9pbiwgbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChkLT5ienMuYXZhaWxfaW4gPT0gMCkgeworICAgICAgICAgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZC0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgICAgICAgICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19fLAorImRlY29tcHJlc3MoZGF0YSkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWRcbiIKKyJyYWlzZXMgYW4gRU9GRXJyb3IuIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbVxuIgorImlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZW9mKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJFbmQgb2Ygc3RyZWFtIGFscmVhZHkgcmVhY2hlZCIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitCWjJEZWNvbXByZXNzb3JfaW5pdChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBiemVycm9yOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6QloyRGVjb21wcmVzc29yIikpCisgICAgICAgIHJldHVybiAtMTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CisgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgMCwgMCk7CisgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitCWjJEZWNvbXByZXNzb3JfZGVhbGxvYyhCWjJEZWNvbXByZXNzb3IgKnNlbGYpCit7CisgICAgQloyX2J6RGVjb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgQloyRGVjb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfZW9mX19kb2NfXywKKyJUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLiIpOworCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX19kb2NfXywKKyJEYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLiIpOworCitzdGF0aWMgUHlNZW1iZXJEZWYgQloyRGVjb21wcmVzc29yX21lbWJlcnNbXSA9IHsKKyAgICB7ImVvZiIsIFRfQk9PTCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCBlb2YpLAorICAgICBSRUFET05MWSwgQloyRGVjb21wcmVzc29yX2VvZl9fZG9jX199LAorICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksCisgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfX2RvY19ffSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfX2RvY19fLAorIkJaMkRlY29tcHJlc3NvcigpXG4iCisiXG4iCisiQ3JlYXRlIGEgZGVjb21wcmVzc29yIG9iamVjdCBmb3IgZGVjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBCWjJEZWNvbXByZXNzb3JfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2J6Mi5CWjJEZWNvbXByZXNzb3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEJaMkRlY29tcHJlc3NvciksICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilCWjJEZWNvbXByZXNzb3JfZGVhbGxvYywvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIEJaMkRlY29tcHJlc3Nvcl9fZG9jX18sICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQloyRGVjb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIEJaMkRlY29tcHJlc3Nvcl9tZW1iZXJzLCAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpQloyRGVjb21wcmVzc29yX2luaXQsICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogTW9kdWxlIGluaXRpYWxpemF0aW9uLiAqLworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9iejJtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfYnoyIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fYnoyKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJDb21wcmVzc29yX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyRGVjb21wcmVzc29yX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfYnoybW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0lOQ1JFRigmQloyQ29tcHJlc3Nvcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkNvbXByZXNzb3IiLCAoUHlPYmplY3QgKikmQloyQ29tcHJlc3Nvcl9UeXBlKTsKKworICAgIFB5X0lOQ1JFRigmQloyRGVjb21wcmVzc29yX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyRGVjb21wcmVzc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJkJaMkRlY29tcHJlc3Nvcl9UeXBlKTsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwppbmRleCBlYjc0MGY5Li40MDAzN2IxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwpAQCAtMzgsNiArMzgsMTAgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCiAvKiAtLS0gUmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogUHlEb2NfU1RSVkFSKHJlZ2lzdGVyX19kb2NfXywKQEAgLTE2Miw3ICsxNjYsNiBAQAogZXNjYXBlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKmhleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7CkBAIC0xNzQsMTIgKzE3NywxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHN0cik7Ci0gICAgbmV3c2l6ZSA9IDQqc2l6ZTsKLSAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8IG5ld3NpemUgLyA0ICE9IHNpemUpIHsKKyAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gNCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJzdHJpbmcgaXMgdG9vIGxhcmdlIHRvIGVuY29kZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG5ld3NpemUgPSA0KnNpemU7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmV3c2l6ZSk7CiAKICAgICBpZiAodiA9PSBOVUxMKSB7CkBAIC0yMDUsOCArMjA4LDggQEAKICAgICAgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CiAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjICYgMHhmXTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjICYgMHhmXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAqcCsrID0gYzsKQEAgLTIzNiw4ICsyMzksMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9JTkNSRUYob2JqKTsKLSAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKG9iaiwgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUob2JqLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIob2JqLCAoY29uc3Qgdm9pZCAqKikmZGF0YSwgJnNpemUpKQpAQCAtNTg4LDcgKzU5Myw3IEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKHVuaWNvZGUsIHBidWYubGVuKTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogCiBzdGF0aWMgUHlPYmplY3QgKgogbWJjc19kZWNvZGUoUHlPYmplY3QgKnNlbGYsCkBAIC02MTMsNyArNjE4LDMyIEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb2RlX3BhZ2VfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgcGJ1ZjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7CisgICAgaW50IGNvZGVfcGFnZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY29kZV9wYWdlLCAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY29uc3VtZWQgPSBwYnVmLmxlbjsKKworICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIGlmIChkZWNvZGVkID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7Cit9CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTY0NSwxNyArNjc1LDMxIEBACiAgICAgUHlPYmplY3QgKm9iajsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmRhdGE7Ci0gICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgbGVuLCBzaXplOworCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iaiwgJmVycm9ycykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfQVNfREFUQShvYmopOwotICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUob2JqKTsKLSAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZGF0YSwgc2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIFB5X1VOSUNPREUgKnU7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShvYmosICZsZW4pOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBzaXplID0gbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpOworICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopdSwgc2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIob2JqLCAoY29uc3Qgdm9pZCAqKikmZGF0YSwgJnNpemUpKQpAQCAtNjc2LDE0ICs3MjAsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEY3KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTcwMCwxMiArNzQyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhzdHIsICJ1dGYtOCIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzMwLDEzICs3NzIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTc1MywxMyArNzk0LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzc2LDEzICs4MTYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04MDcsMTMgKzg0NiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODMwLDEzICs4NjgsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04NTMsMTMgKzg5MCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTg3NiwxMSArOTEyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04OTcsMTIgKzkzNCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05MTksMTMgKzk1NiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUxhdGluMSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTk0MiwxMyArOTc4LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTk2OCwxNCArMTAwMywxMiBAQAogICAgICAgICBtYXBwaW5nID0gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTg5LDcgKzEwMjIsNyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChtYXApOwogfQogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYmNzX2VuY29kZShQeU9iamVjdCAqc2VsZiwKQEAgLTEwMDMsMTggKzEwMzYsNDIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVNQkNTKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb2RlX3BhZ2VfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc3RyLCAqdjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBjb2RlX3BhZ2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiB2OworfQorCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMTAxLDkgKzExNTgsMTEgQEAKICAgICB7ImNoYXJtYXBfZGVjb2RlIiwgICAgICAgICAgY2hhcm1hcF9kZWNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY2hhcm1hcF9idWlsZCIsICAgICAgICAgICBjaGFybWFwX2J1aWxkLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkYnVmZmVyX2VuY29kZSIsICAgICAgIHJlYWRidWZmZXJfZW5jb2RlLCAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICB7Im1iY3NfZW5jb2RlIiwgICAgICAgICAgICAgbWJjc19lbmNvZGUsICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsibWJjc19kZWNvZGUiLCAgICAgICAgICAgICBtYmNzX2RlY29kZSwgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJjb2RlX3BhZ2VfZW5jb2RlIiwgICAgICAgIGNvZGVfcGFnZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNvZGVfcGFnZV9kZWNvZGUiLCAgICAgICAgY29kZV9wYWdlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCiAgICAgeyJyZWdpc3Rlcl9lcnJvciIsICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAogICAgICAgICByZWdpc3Rlcl9lcnJvcl9fZG9jX199LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggNTRjMTM0My4uZWUxN2Y0ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC01ODgsNyArNTg4LDcgQEAKIFB5RG9jX1NUUlZBUihyZW1vdmVfZG9jLAogIkQucmVtb3ZlKHZhbHVlKSAtLSByZW1vdmUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2YWx1ZS4iKTsKIAotc3RhdGljIGludAorc3RhdGljIHZvaWQKIGRlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKICAgICBQeU9iamVjdCAqaXRlbTsKQEAgLTYwMSw3ICs2MDEsNiBAQAogICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrICYmCiAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggLSAxID09IGRlcXVlLT5yaWdodGluZGV4ICYmCiAgICAgICAgICAgIGRlcXVlLT5sZW4gPT0gMCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03MDQsMTAgKzcwMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfY2xlYXJtZXRob2QoZGVxdWVvYmplY3QgKmRlcXVlKQogewotICAgIGludCBydjsKLQotICAgIHJ2ID0gZGVxdWVfY2xlYXIoZGVxdWUpOwotICAgIGFzc2VydCAocnYgIT0gLTEpOworICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNzY3LDggKzc2Myw5IEBACiBkZXF1ZV9yZWR1Y2UoZGVxdWVvYmplY3QgKmRlcXVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0LCAqcmVzdWx0LCAqYXNsaXN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKWRlcXVlLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXF1ZSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgYXNsaXN0ID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKQEAgLTgzMiw4ICs4MjksNyBAQAogCiAgICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2sodiwgJmRlcXVlX3R5cGUpIHx8CiAgICAgICAgICFQeU9iamVjdF9UeXBlQ2hlY2sodywgJmRlcXVlX3R5cGUpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIC8qIFNob3J0Y3V0cyAqLwpAQCAtMTE0MSw2ICsxMTM3LDM1IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkZXF1ZWl0ZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3QgaSwgaW5kZXg9MDsKKyAgICBQeU9iamVjdCAqZGVxdWU7CisgICAgZGVxdWVpdGVyb2JqZWN0ICppdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfG4iLCAmZGVxdWVfdHlwZSwgJmRlcXVlLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQodHlwZSA9PSAmZGVxdWVpdGVyX3R5cGUpOworCisgICAgaXQgPSAoZGVxdWVpdGVyb2JqZWN0KilkZXF1ZV9pdGVyKChkZXF1ZW9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBjb25zdW1lIGl0ZW1zIGZyb20gdGhlIHF1ZXVlICovCisgICAgZm9yKGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWVpdGVyX25leHQoaXQpOworICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGl0LT5jb3VudGVyKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVpdGVyX2xlbihkZXF1ZWl0ZXJvYmplY3QgKml0KQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoaXQtPmNvdW50ZXIpOwpAQCAtMTE0OCwxNCArMTE3MywyMSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZWl0ZXJfcmVkdWNlKGRlcXVlaXRlcm9iamVjdCAqaXQpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShpdCksIGl0LT5kZXF1ZSwgaXQtPmRlcXVlLT5sZW4gLSBpdC0+Y291bnRlcik7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBkZXF1ZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWRlcXVlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilkZXF1ZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImRlcXVlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTExODMsNiArMTIxNSwxNiBAQAogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZGVxdWVpdGVyX25leHQsICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBkZXF1ZWl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZGVxdWVpdGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLAogfTsKIApAQCAtMTIzNiw5ICsxMjc4LDM4IEBACiAgICAgcmV0dXJuIGl0ZW07CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZXJldml0ZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3QgaSwgaW5kZXg9MDsKKyAgICBQeU9iamVjdCAqZGVxdWU7CisgICAgZGVxdWVpdGVyb2JqZWN0ICppdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfG4iLCAmZGVxdWVfdHlwZSwgJmRlcXVlLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQodHlwZSA9PSAmZGVxdWVyZXZpdGVyX3R5cGUpOworCisgICAgaXQgPSAoZGVxdWVpdGVyb2JqZWN0KilkZXF1ZV9yZXZpdGVyKChkZXF1ZW9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBjb25zdW1lIGl0ZW1zIGZyb20gdGhlIHF1ZXVlICovCisgICAgZm9yKGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWVyZXZpdGVyX25leHQoaXQpOworICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGl0LT5jb3VudGVyKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlcmV2aXRlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJkZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoZGVxdWVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC0xMjY2LDYgKzEzMzcsMTYgQEAKICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRlcXVlcmV2aXRlcl9uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZGVxdWVpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGRlcXVlcmV2aXRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwKIH07CiAKQEAgLTEzNTQsMTMgKzE0MzUsMTUgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKml0ZXI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisKICAgICBpZiAoZGQtPmRlZmF1bHRfZmFjdG9yeSA9PSBOVUxMIHx8IGRkLT5kZWZhdWx0X2ZhY3RvcnkgPT0gUHlfTm9uZSkKICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgIGVsc2UKICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBkZC0+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopZGQsICJpdGVtcyIsICIoKSIpOworICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilkZCwgJlB5SWRfaXRlbXMsICIoKSIpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNTczLDEyICsxNjU2LDggQEAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobWFwcGluZykpIHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIG9sZHZhbCA9IFB5RGljdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBvbmUpID09IC0xKQpAQCAtMTU5NiwxMiArMTY3NSw4IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIG9sZHZhbCA9IFB5T2JqZWN0X0dldEl0ZW0obWFwcGluZywga2V5KTsKICAgICAgICAgICAgIGlmIChvbGR2YWwgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCkBAIC0xNjc4LDkgKzE3NTMsMTMgQEAKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlaXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmZGVxdWVpdGVyX3R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlcXVlX2l0ZXJhdG9yIiwgKFB5T2JqZWN0ICopJmRlcXVlaXRlcl90eXBlKTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlcmV2aXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmZGVxdWVyZXZpdGVyX3R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAoUHlPYmplY3QgKikmZGVxdWVyZXZpdGVyX3R5cGUpOwogCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NyeXB0bW9kdWxlLmMgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIE1vZHVsZXMvY3J5cHRtb2R1bGUuYwpyZW5hbWUgdG8gTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwppbmRleCBkNWE0MmZmLi41MTAwNzg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NyeXB0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpAQCAtNDUsNyArNDUsNyBAQAogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGNyeXB0bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAiY3J5cHQiLAorICAgICJfY3J5cHQiLAogICAgIE5VTEwsCiAgICAgLTEsCiAgICAgY3J5cHRfbWV0aG9kcywKQEAgLTU2LDcgKzU2LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfY3J5cHQodm9pZCkKK1B5SW5pdF9fY3J5cHQodm9pZCkKIHsKICAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZjcnlwdG1vZHVsZSk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IDg4ZDRmOTcuLjQ4YTVjZjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC0xMywxMiArMTMsNDAgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAotI2RlZmluZSBJU19CQVNFU1RSSU5HKG8pIFwKLSAgICBQeVVuaWNvZGVfQ2hlY2sobykKIAotc3RhdGljIFB5T2JqZWN0ICplcnJvcl9vYmo7ICAgICAvKiBDU1YgZXhjZXB0aW9uICovCi1zdGF0aWMgUHlPYmplY3QgKmRpYWxlY3RzOyAgICAgIC8qIERpYWxlY3QgcmVnaXN0cnkgKi8KLXN0YXRpYyBsb25nIGZpZWxkX2xpbWl0ID0gMTI4ICogMTAyNDsgICAvKiBtYXggcGFyc2VkIGZpZWxkIHNpemUgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqZXJyb3Jfb2JqOyAgIC8qIENTViBleGNlcHRpb24gKi8KKyAgICBQeU9iamVjdCAqZGlhbGVjdHM7ICAgLyogRGlhbGVjdCByZWdpc3RyeSAqLworICAgIGxvbmcgZmllbGRfbGltaXQ7ICAgLyogbWF4IHBhcnNlZCBmaWVsZCBzaXplICovCit9IF9jc3ZzdGF0ZTsKKworI2RlZmluZSBfY3N2c3RhdGUobykgKChfY3N2c3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShvKSkKKworc3RhdGljIGludAorX2Nzdl9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgICBQeV9DTEVBUihfY3N2c3RhdGUobSktPmVycm9yX29iaik7CisgICAgUHlfQ0xFQVIoX2NzdnN0YXRlKG0pLT5kaWFsZWN0cyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19jc3ZfdHJhdmVyc2UoUHlPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKF9jc3ZzdGF0ZShtKS0+ZXJyb3Jfb2JqKTsKKyAgICBQeV9WSVNJVChfY3N2c3RhdGUobSktPmRpYWxlY3RzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK19jc3ZfZnJlZSh2b2lkICptKQoreworICAgX2Nzdl9jbGVhcigoUHlPYmplY3QgKiltKTsKK30KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfY3N2bW9kdWxlOworCisjZGVmaW5lIF9jc3ZzdGF0ZV9nbG9iYWwgKChfY3N2c3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShQeVN0YXRlX0ZpbmRNb2R1bGUoJl9jc3Ztb2R1bGUpKSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTVEFSVF9SRUNPUkQsIFNUQVJUX0ZJRUxELCBFU0NBUEVEX0NIQVIsIElOX0ZJRUxELApAQCAtNDcsOSArNzUsOSBAQAogICAgIFB5T2JqZWN0X0hFQUQKIAogICAgIGludCBkb3VibGVxdW90ZTsgICAgICAgICAgICAvKiBpcyAiIHJlcHJlc2VudGVkIGJ5ICIiPyAqLwotICAgIFB5X1VOSUNPREUgZGVsaW1pdGVyOyAgICAgICAvKiBmaWVsZCBzZXBhcmF0b3IgKi8KLSAgICBQeV9VTklDT0RFIHF1b3RlY2hhcjsgICAgICAgLyogcXVvdGUgY2hhcmFjdGVyICovCi0gICAgUHlfVU5JQ09ERSBlc2NhcGVjaGFyOyAgICAgIC8qIGVzY2FwZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0IGRlbGltaXRlcjsgICAgICAgLyogZmllbGQgc2VwYXJhdG9yICovCisgICAgUHlfVUNTNCBxdW90ZWNoYXI7ICAgICAgIC8qIHF1b3RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgZXNjYXBlY2hhcjsgICAgICAvKiBlc2NhcGUgY2hhcmFjdGVyICovCiAgICAgaW50IHNraXBpbml0aWFsc3BhY2U7ICAgICAgIC8qIGlnbm9yZSBzcGFjZXMgZm9sbG93aW5nIGRlbGltaXRlcj8gKi8KICAgICBQeU9iamVjdCAqbGluZXRlcm1pbmF0b3I7IC8qIHN0cmluZyB0byB3cml0ZSBiZXR3ZWVuIHJlY29yZHMgKi8KICAgICBpbnQgcXVvdGluZzsgICAgICAgICAgICAgICAgLyogc3R5bGUgb2YgcXVvdGluZyB0byB3cml0ZSAqLwpAQCAtNjgsNyArOTYsNyBAQAogCiAgICAgUHlPYmplY3QgKmZpZWxkczsgICAgICAgICAgIC8qIGZpZWxkIGxpc3QgZm9yIGN1cnJlbnQgcmVjb3JkICovCiAgICAgUGFyc2VyU3RhdGUgc3RhdGU7ICAgICAgICAgIC8qIGN1cnJlbnQgQ1NWIHBhcnNlIHN0YXRlICovCi0gICAgUHlfVU5JQ09ERSAqZmllbGQ7ICAgICAgICAgIC8qIGJ1aWxkIGN1cnJlbnQgZmllbGQgaW4gaGVyZSAqLworICAgIFB5X1VDUzQgKmZpZWxkOyAgICAgICAgICAgICAvKiB0ZW1wb3JhcnkgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBmaWVsZF9zaXplOyAgICAgIC8qIHNpemUgb2YgYWxsb2NhdGVkIGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgZmllbGRfbGVuOyAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBmaWVsZCAqLwogICAgIGludCBudW1lcmljX2ZpZWxkOyAgICAgICAgICAvKiB0cmVhdCBmaWVsZCBhcyBudW1lcmljICovCkBAIC04Niw3ICsxMTQsNyBAQAogCiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdDsgICAgLyogcGFyc2luZyBkaWFsZWN0ICovCiAKLSAgICBQeV9VTklDT0RFICpyZWM7ICAgICAgICAgICAgLyogYnVmZmVyIGZvciBwYXJzZXIuam9pbiAqLworICAgIFB5X1VDUzQgKnJlYzsgICAgICAgICAgICAvKiBidWZmZXIgZm9yIHBhcnNlci5qb2luICovCiAgICAgUHlfc3NpemVfdCByZWNfc2l6ZTsgICAgICAgIC8qIHNpemUgb2YgYWxsb2NhdGVkIHJlY29yZCAqLwogICAgIFB5X3NzaXplX3QgcmVjX2xlbjsgICAgICAgICAvKiBsZW5ndGggb2YgcmVjb3JkICovCiAgICAgaW50IG51bV9maWVsZHM7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBmaWVsZHMgaW4gcmVjb3JkICovCkBAIC0xMDMsMTAgKzEzMSwxMCBAQAogewogICAgIFB5T2JqZWN0ICpkaWFsZWN0X29iajsKIAotICAgIGRpYWxlY3Rfb2JqID0gUHlEaWN0X0dldEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqKTsKKyAgICBkaWFsZWN0X29iaiA9IFB5RGljdF9HZXRJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaik7CiAgICAgaWYgKGRpYWxlY3Rfb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihkaWFsZWN0X29iaik7CkBAIC0xMjEsMTQgKzE0OSwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X251bGxjaGFyX2FzX05vbmUoUHlfVU5JQ09ERSBjKQorZ2V0X251bGxjaGFyX2FzX05vbmUoUHlfVUNTNCBjKQogewogICAgIGlmIChjID09ICdcMCcpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKChQeV9VTklDT0RFICopJmMsIDEpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjAzLDI1ICsyMzEsMjQgQEAKIH0KIAogc3RhdGljIGludAotX3NldF9jaGFyKGNvbnN0IGNoYXIgKm5hbWUsIFB5X1VOSUNPREUgKnRhcmdldCwgUHlPYmplY3QgKnNyYywgUHlfVU5JQ09ERSBkZmx0KQorX3NldF9jaGFyKGNvbnN0IGNoYXIgKm5hbWUsIFB5X1VDUzQgKnRhcmdldCwgUHlPYmplY3QgKnNyYywgUHlfVUNTNCBkZmx0KQogewogICAgIGlmIChzcmMgPT0gTlVMTCkKICAgICAgICAgKnRhcmdldCA9IGRmbHQ7CiAgICAgZWxzZSB7CiAgICAgICAgICp0YXJnZXQgPSAnXDAnOwogICAgICAgICBpZiAoc3JjICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKmJ1ZjsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgYnVmID0gUHlVbmljb2RlX0FzVW5pY29kZShzcmMpOwotICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldFNpemUoc3JjKTsKLSAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCB8fCBsZW4gPiAxKSB7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNyYyk7CisgICAgICAgICAgICBpZiAobGVuID4gMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBQeVVuaWNvZGVfUkVBRFkoKSBpcyBjYWxsZWQgaW4gUHlVbmljb2RlX0dldExlbmd0aCgpICovCiAgICAgICAgICAgICBpZiAobGVuID4gMCkKLSAgICAgICAgICAgICAgICAqdGFyZ2V0ID0gYnVmWzBdOworICAgICAgICAgICAgICAgICp0YXJnZXQgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNyYywgMCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0yMzUsMTIgKzI2MiwxNCBAQAogICAgIGVsc2UgewogICAgICAgICBpZiAoc3JjID09IFB5X05vbmUpCiAgICAgICAgICAgICAqdGFyZ2V0ID0gTlVMTDsKLSAgICAgICAgZWxzZSBpZiAoIUlTX0JBU0VTVFJJTkcoc3JjKSkgeworICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNyYykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiJXNcIiBtdXN0IGJlIGEgc3RyaW5nIiwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNyYykgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgUHlfWERFQ1JFRigqdGFyZ2V0KTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzcmMpOwogICAgICAgICAgICAgKnRhcmdldCA9IHNyYzsKQEAgLTMyOSw3ICszNTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChkaWFsZWN0ICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKElTX0JBU0VTVFJJTkcoZGlhbGVjdCkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhkaWFsZWN0KSkgewogICAgICAgICAgICAgZGlhbGVjdCA9IGdldF9kaWFsZWN0X2Zyb21fcmVnaXN0cnkoZGlhbGVjdCk7CiAgICAgICAgICAgICBpZiAoZGlhbGVjdCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTAyLDcgKzUzMSw4IEBACiB7CiAgICAgUHlPYmplY3QgKmZpZWxkOwogCi0gICAgZmllbGQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+ZmllbGQsIHNlbGYtPmZpZWxkX2xlbik7CisgICAgZmllbGQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBzZWxmLT5maWVsZCwgc2VsZi0+ZmllbGRfbGVuKTsKICAgICBpZiAoZmllbGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHNlbGYtPmZpZWxkX2xlbiA9IDA7CkBAIC01MTEsMTEgKzU0MSw5IEBACiAKICAgICAgICAgc2VsZi0+bnVtZXJpY19maWVsZCA9IDA7CiAgICAgICAgIHRtcCA9IFB5TnVtYmVyX0Zsb2F0KGZpZWxkKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZmllbGQgPSB0bXA7CiAgICAgfQogICAgIFB5TGlzdF9BcHBlbmQoc2VsZi0+ZmllbGRzLCBmaWVsZCk7CkBAIC01MzAsMTYgKzU1OCwxNiBAQAogICAgICAgICBzZWxmLT5maWVsZF9zaXplID0gNDA5NjsKICAgICAgICAgaWYgKHNlbGYtPmZpZWxkICE9IE5VTEwpCiAgICAgICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmZpZWxkKTsKLSAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9OZXcoUHlfVU5JQ09ERSwgc2VsZi0+ZmllbGRfc2l6ZSk7CisgICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fTmV3KFB5X1VDUzQsIHNlbGYtPmZpZWxkX3NpemUpOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqZmllbGQgPSBzZWxmLT5maWVsZDsKICAgICAgICAgaWYgKHNlbGYtPmZpZWxkX3NpemUgPiBQWV9TU0laRV9UX01BWCAvIDIpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5maWVsZF9zaXplICo9IDI7Ci0gICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fUmVzaXplKHNlbGYtPmZpZWxkLCBQeV9VTklDT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWVsZF9zaXplKTsKKyAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9SZXNpemUoZmllbGQsIFB5X1VDUzQsIHNlbGYtPmZpZWxkX3NpemUpOwogICAgIH0KICAgICBpZiAoc2VsZi0+ZmllbGQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTQ5LDExICs1NzcsMTEgQEAKIH0KIAogc3RhdGljIGludAotcGFyc2VfYWRkX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VTklDT0RFIGMpCitwYXJzZV9hZGRfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VDUzQgYykKIHsKLSAgICBpZiAoc2VsZi0+ZmllbGRfbGVuID49IGZpZWxkX2xpbWl0KSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJmaWVsZCBsYXJnZXIgdGhhbiBmaWVsZCBsaW1pdCAoJWxkKSIsCi0gICAgICAgICAgICAgICAgICAgICBmaWVsZF9saW1pdCk7CisgICAgaWYgKHNlbGYtPmZpZWxkX2xlbiA+PSBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAiZmllbGQgbGFyZ2VyIHRoYW4gZmllbGQgbGltaXQgKCVsZCkiLAorICAgICAgICAgICAgICAgICAgICAgX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChzZWxmLT5maWVsZF9sZW4gPT0gc2VsZi0+ZmllbGRfc2l6ZSAmJiAhcGFyc2VfZ3Jvd19idWZmKHNlbGYpKQpAQCAtNTYzLDcgKzU5MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX3Byb2Nlc3NfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgYykKK3BhcnNlX3Byb2Nlc3NfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VDUzQgYykKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKIApAQCAtNzEwLDcgKzczOCw3IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBpbGxlZ2FsICovCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAiJyVjJyBleHBlY3RlZCBhZnRlciAnJWMnIiwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICInJWMnIGV4cGVjdGVkIGFmdGVyICclYyciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3QtPmRlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0LT5xdW90ZWNoYXIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzIzLDcgKzc1MSw3IEBACiAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwJykKICAgICAgICAgICAgIHNlbGYtPnN0YXRlID0gU1RBUlRfUkVDT1JEOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJuZXctbGluZSBjaGFyYWN0ZXIgc2VlbiBpbiB1bnF1b3RlZCBmaWVsZCAtIGRvIHlvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgaW4gdW5pdmVyc2FsLW5ld2xpbmUgbW9kZT8iKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJuZXctbGluZSBjaGFyYWN0ZXIgc2VlbiBpbiB1bnF1b3RlZCBmaWVsZCAtIGRvIHlvdSBuZWVkIHRvIG9wZW4gdGhlIGZpbGUgaW4gdW5pdmVyc2FsLW5ld2xpbmUgbW9kZT8iKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTc0OCwxMCArNzc2LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUmVhZGVyX2l0ZXJuZXh0KFJlYWRlck9iaiAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqbGluZW9iajsKICAgICBQeU9iamVjdCAqZmllbGRzID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICpsaW5lLCBjOwotICAgIFB5X3NzaXplX3QgbGluZWxlbjsKKyAgICBQeV9VQ1M0IGM7CisgICAgUHlfc3NpemVfdCBwb3MsIGxpbmVsZW47CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeU9iamVjdCAqbGluZW9iajsKIAogICAgIGlmIChwYXJzZV9yZXNldChzZWxmKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzYyLDE0ICs3OTIsMTUgQEAKICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSAmJiAoc2VsZi0+ZmllbGRfbGVuICE9IDAgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RhdGUgPT0gSU5fUVVPVEVEX0ZJRUxEKSkgewogICAgICAgICAgICAgICAgIGlmIChzZWxmLT5kaWFsZWN0LT5zdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhlcnJvcl9vYmosICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIik7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlX3NhdmVfZmllbGQoc2VsZikgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhsaW5lb2JqKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdG9yIHNob3VsZCByZXR1cm4gc3RyaW5ncywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiKGRpZCB5b3Ugb3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGU/KSIsCkBAIC03NzgsMTggKzgwOSwyMCBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgKytzZWxmLT5saW5lX251bTsKLSAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobGluZW9iaik7Ci0gICAgICAgIGxpbmVsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShsaW5lb2JqKTsKLSAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBsaW5lbGVuIDwgMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxpbmVvYmopID09IC0xKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICArK3NlbGYtPmxpbmVfbnVtOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZW9iaik7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShsaW5lb2JqKTsKKyAgICAgICAgcG9zID0gMDsKKyAgICAgICAgbGluZWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmVvYmopOwogICAgICAgICB3aGlsZSAobGluZWxlbi0tKSB7Ci0gICAgICAgICAgICBjID0gKmxpbmUrKzsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogICAgICAgICAgICAgaWYgKGMgPT0gJ1wwJykgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIGNvbnRhaW5zIE5VTEwgYnl0ZSIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgfQpAQCAtNzk3LDYgKzgzMCw3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zKys7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICBpZiAocGFyc2VfcHJvY2Vzc19jaGFyKHNlbGYsIDApIDwgMCkKQEAgLTk1MywxMyArOTg3LDEzIEBACiAgKiByZWNvcmQgbGVuZ3RoLgogICovCiBzdGF0aWMgUHlfc3NpemVfdAotam9pbl9hcHBlbmRfZGF0YShXcml0ZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgKmZpZWxkLCBpbnQgcXVvdGVfZW1wdHksCi0gICAgICAgICAgICAgICAgIGludCAqcXVvdGVkLCBpbnQgY29weV9waGFzZSkKK2pvaW5fYXBwZW5kX2RhdGEoV3JpdGVyT2JqICpzZWxmLCB1bnNpZ25lZCBpbnQgZmllbGRfa2luZCwgdm9pZCAqZmllbGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmaWVsZF9sZW4sIGludCBxdW90ZV9lbXB0eSwgaW50ICpxdW90ZWQsCisgICAgICAgICAgICAgICAgIGludCBjb3B5X3BoYXNlKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwogICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgcmVjX2xlbjsKLSAgICBQeV9VTklDT0RFICpsaW5ldGVybTsKIAogI2RlZmluZSBBRERDSChjKSBcCiAgICAgZG8ge1wKQEAgLTk2OCwxMCArMTAwMiw2IEBACiAgICAgICAgIHJlY19sZW4rKztcCiAgICAgfSB3aGlsZSgwKQogCi0gICAgbGluZXRlcm0gPSBQeVVuaWNvZGVfQXNVbmljb2RlKGRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKLSAgICBpZiAobGluZXRlcm0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgcmVjX2xlbiA9IHNlbGYtPnJlY19sZW47CiAKICAgICAvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZmllbGQgd2UgbmVlZCBhIGZpZWxkIHNlcGFyYXRvciAqLwpAQCAtOTg0LDE3ICsxMDE0LDE2IEBACiAKICAgICAvKiBDb3B5L2NvdW50IGZpZWxkIGRhdGEgKi8KICAgICAvKiBJZiBmaWVsZCBpcyBudWxsIGp1c3QgcGFzcyBvdmVyICovCi0gICAgZm9yIChpID0gMDsgZmllbGQ7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBmaWVsZFtpXTsKKyAgICBmb3IgKGkgPSAwOyBmaWVsZF9kYXRhICYmIChpIDwgZmllbGRfbGVuKTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGkpOwogICAgICAgICBpbnQgd2FudF9lc2NhcGUgPSAwOwogCi0gICAgICAgIGlmIChjID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBpZiAoYyA9PSBkaWFsZWN0LT5kZWxpbWl0ZXIgfHwKICAgICAgICAgICAgIGMgPT0gZGlhbGVjdC0+ZXNjYXBlY2hhciB8fAogICAgICAgICAgICAgYyA9PSBkaWFsZWN0LT5xdW90ZWNoYXIgIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX3N0cmNocihsaW5ldGVybSwgYykpIHsKKyAgICAgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICAgICAgICAgICAgICBkaWFsZWN0LT5saW5ldGVybWluYXRvciwgYywgMCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChkaWFsZWN0LT5saW5ldGVybWluYXRvciksIDEpID49IDApIHsKICAgICAgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpCiAgICAgICAgICAgICAgICAgd2FudF9lc2NhcGUgPSAxOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0xMDA5LDcgKzEwMzgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdhbnRfZXNjYXBlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkaWFsZWN0LT5lc2NhcGVjaGFyKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZCB0byBlc2NhcGUsIGJ1dCBubyBlc2NhcGVjaGFyIHNldCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTAyNSw3ICsxMDU0LDcgQEAKICAgICAgKi8KICAgICBpZiAoaSA9PSAwICYmIHF1b3RlX2VtcHR5KSB7CiAgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICJzaW5nbGUgZW1wdHkgZmllbGQgcmVjb3JkIG11c3QgYmUgcXVvdGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTEwNTcsMTQgKzEwODYsMTMgQEAKICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplID0gKHJlY19sZW4gLyBNRU1fSU5DUiArIDEpICogTUVNX0lOQ1I7CiAgICAgICAgICAgICBpZiAoc2VsZi0+cmVjICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5yZWMpOwotICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fTmV3KFB5X1VOSUNPREUsIHNlbGYtPnJlY19zaXplKTsKKyAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX05ldyhQeV9VQ1M0LCBzZWxmLT5yZWNfc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFKiBvbGRfcmVjID0gc2VsZi0+cmVjOworICAgICAgICAgICAgUHlfVUNTNCogb2xkX3JlYyA9IHNlbGYtPnJlYzsKIAogICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAocmVjX2xlbiAvIE1FTV9JTkNSICsgMSkgKiBNRU1fSU5DUjsKLSAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX1Jlc2l6ZShzZWxmLT5yZWMsIFB5X1VOSUNPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUpOworICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fUmVzaXplKG9sZF9yZWMsIFB5X1VDUzQsIHNlbGYtPnJlY19zaXplKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5yZWMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG9sZF9yZWMpOwogICAgICAgICB9CkBAIC0xMDc3LDExICsxMTA1LDIyIEBACiB9CiAKIHN0YXRpYyBpbnQKLWpvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSAqZmllbGQsIGludCAqcXVvdGVkLCBpbnQgcXVvdGVfZW1wdHkpCitqb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKIHsKKyAgICB1bnNpZ25lZCBpbnQgZmllbGRfa2luZCA9IC0xOworICAgIHZvaWQgKmZpZWxkX2RhdGEgPSBOVUxMOworICAgIFB5X3NzaXplX3QgZmllbGRfbGVuID0gMDsKICAgICBQeV9zc2l6ZV90IHJlY19sZW47CiAKLSAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZCwgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CisgICAgaWYgKGZpZWxkICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmaWVsZCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZmllbGRfa2luZCA9IFB5VW5pY29kZV9LSU5EKGZpZWxkKTsKKyAgICAgICAgZmllbGRfZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZpZWxkKTsKKyAgICAgICAgZmllbGRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZmllbGQpOworICAgIH0KKyAgICByZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMCk7CiAgICAgaWYgKHJlY19sZW4gPCAwKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTA4OSw3ICsxMTI4LDggQEAKICAgICBpZiAoIWpvaW5fY2hlY2tfcmVjX3NpemUoc2VsZiwgcmVjX2xlbikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc2VsZi0+cmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGQsIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDEpOworICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKICAgICBzZWxmLT5udW1fZmllbGRzKys7CiAKICAgICByZXR1cm4gMTsKQEAgLTEwOTgsMTAgKzExMzgsMTEgQEAKIHN0YXRpYyBpbnQKIGpvaW5fYXBwZW5kX2xpbmV0ZXJtaW5hdG9yKFdyaXRlck9iaiAqc2VsZikKIHsKLSAgICBQeV9zc2l6ZV90IHRlcm1pbmF0b3JfbGVuOwotICAgIFB5X1VOSUNPREUgKnRlcm1pbmF0b3I7CisgICAgUHlfc3NpemVfdCB0ZXJtaW5hdG9yX2xlbiwgaTsKKyAgICB1bnNpZ25lZCBpbnQgdGVybV9raW5kOworICAgIHZvaWQgKnRlcm1fZGF0YTsKIAotICAgIHRlcm1pbmF0b3JfbGVuID0gUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOworICAgIHRlcm1pbmF0b3JfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOwogICAgIGlmICh0ZXJtaW5hdG9yX2xlbiA9PSAtMSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTExMDksMTEgKzExNTAsMTAgQEAKICAgICBpZiAoIWpvaW5fY2hlY2tfcmVjX3NpemUoc2VsZiwgc2VsZi0+cmVjX2xlbiArIHRlcm1pbmF0b3JfbGVuKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB0ZXJtaW5hdG9yID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7Ci0gICAgaWYgKHRlcm1pbmF0b3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbWVtbW92ZShzZWxmLT5yZWMgKyBzZWxmLT5yZWNfbGVuLCB0ZXJtaW5hdG9yLAotICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkqdGVybWluYXRvcl9sZW4pOworICAgIHRlcm1fa2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKKyAgICB0ZXJtX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CisgICAgZm9yIChpID0gMDsgaSA8IHRlcm1pbmF0b3JfbGVuOyBpKyspCisgICAgICAgIHNlbGYtPnJlY1tzZWxmLT5yZWNfbGVuICsgaV0gPSBQeVVuaWNvZGVfUkVBRCh0ZXJtX2tpbmQsIHRlcm1fZGF0YSwgaSk7CiAgICAgc2VsZi0+cmVjX2xlbiArPSB0ZXJtaW5hdG9yX2xlbjsKIAogICAgIHJldHVybiAxOwpAQCAtMTEzMCw5ICsxMTcwLDEwIEBACiB7CiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdCA9IHNlbGYtPmRpYWxlY3Q7CiAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgUHlPYmplY3QgKmxpbmUsICpyZXN1bHQ7CiAKICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJzZXF1ZW5jZSBleHBlY3RlZCIpOworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInNlcXVlbmNlIGV4cGVjdGVkIik7CiAKICAgICBsZW4gPSBQeVNlcXVlbmNlX0xlbmd0aChzZXEpOwogICAgIGlmIChsZW4gPCAwKQpAQCAtMTE2MywxNCArMTIwNCwxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhmaWVsZCkpIHsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmaWVsZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBmaWVsZCwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTExODAsOSArMTIxOCw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwogICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghYXBwZW5kX29rKQpAQCAtMTE5NCw5ICsxMjMwLDEzIEBACiAgICAgaWYgKCFqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihzZWxmKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPndyaXRlbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIodSMpIiwgc2VsZi0+cmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cmVjX2xlbik7CisgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+cmVjLCBzZWxmLT5yZWNfbGVuKTsKKyAgICBpZiAobGluZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNlbGYtPndyaXRlbGluZSwgbGluZSwgTlVMTCk7CisgICAgUHlfREVDUkVGKGxpbmUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dzX2RvYywKQEAgLTEzMjAsNiArMTM2MCw3IEBACiB7CiAgICAgUHlPYmplY3QgKiBvdXRwdXRfZmlsZSwgKiBkaWFsZWN0ID0gTlVMTDsKICAgICBXcml0ZXJPYmogKiBzZWxmID0gUHlPYmplY3RfR0NfTmV3KFdyaXRlck9iaiwgJldyaXRlcl9UeXBlKTsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMzNiw3ICsxMzc3LDcgQEAKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgc2VsZi0+d3JpdGVsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRwdXRfZmlsZSwgIndyaXRlIik7CisgICAgc2VsZi0+d3JpdGVsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRwdXRfZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmIChzZWxmLT53cml0ZWxpbmUgPT0gTlVMTCB8fCAhUHlDYWxsYWJsZV9DaGVjayhzZWxmLT53cml0ZWxpbmUpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBtdXN0IGhhdmUgYSBcIndyaXRlXCIgbWV0aG9kIik7CkBAIC0xMzU4LDcgKzEzOTksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNzdl9saXN0X2RpYWxlY3RzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeURpY3RfS2V5cyhkaWFsZWN0cyk7CisgICAgcmV0dXJuIFB5RGljdF9LZXlzKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzNjksMTUgKzE0MTAsMTcgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIiIsIDEsIDIsICZuYW1lX29iaiwgJmRpYWxlY3Rfb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFJU19CQVNFU1RSSU5HKG5hbWVfb2JqKSkgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWVfb2JqKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImRpYWxlY3QgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIG9yIHVuaWNvZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaWFsZWN0IG5hbWUgbXVzdCBiZSBhIHN0cmluZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lX29iaikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGRpYWxlY3QgPSBfY2FsbF9kaWFsZWN0KGRpYWxlY3Rfb2JqLCBrd2FyZ3MpOwogICAgIGlmIChkaWFsZWN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWFsZWN0cywgbmFtZV9vYmosIGRpYWxlY3QpIDwgMCkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cywgbmFtZV9vYmosIGRpYWxlY3QpIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoZGlhbGVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEzODksOCArMTQzMiw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogY3N2X3VucmVnaXN0ZXJfZGlhbGVjdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZV9vYmopCiB7Ci0gICAgaWYgKFB5RGljdF9EZWxJdGVtKGRpYWxlY3RzLCBuYW1lX29iaikgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOworICAgIGlmIChQeURpY3RfRGVsSXRlbShfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cywgbmFtZV9vYmopIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC0xNDA1LDcgKzE0NDgsNyBAQAogY3N2X2ZpZWxkX3NpemVfbGltaXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKm5ld19saW1pdCA9IE5VTEw7Ci0gICAgbG9uZyBvbGRfbGltaXQgPSBmaWVsZF9saW1pdDsKKyAgICBsb25nIG9sZF9saW1pdCA9IF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0OwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZmllbGRfc2l6ZV9saW1pdCIsIDAsIDEsICZuZXdfbGltaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0MTUsOSArMTQ1OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbWl0IG11c3QgYmUgYW4gaW50ZWdlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZmllbGRfbGltaXQgPSBQeUxvbmdfQXNMb25nKG5ld19saW1pdCk7Ci0gICAgICAgIGlmIChmaWVsZF9saW1pdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBmaWVsZF9saW1pdCA9IG9sZF9saW1pdDsKKyAgICAgICAgX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQgPSBQeUxvbmdfQXNMb25nKG5ld19saW1pdCk7CisgICAgICAgIGlmIChfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCA9IG9sZF9saW1pdDsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU1NiwxNyArMTU5OSwxNiBAQAogICAgIHsgTlVMTCwgTlVMTCB9CiB9OwogCi0KIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2Nzdm1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgIl9jc3YiLAogICAgIGNzdl9tb2R1bGVfZG9jLAotICAgIC0xLAorICAgIHNpemVvZihfY3N2c3RhdGUpLAogICAgIGNzdl9tZXRob2RzLAogICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKKyAgICBfY3N2X3RyYXZlcnNlLAorICAgIF9jc3ZfY2xlYXIsCisgICAgX2Nzdl9mcmVlCiB9OwogCiBQeU1PRElOSVRfRlVOQwpAQCAtMTU5NCwxMSArMTYzNiwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNT0RVTEVfVkVSU0lPTikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgLyogU2V0IHRoZSBmaWVsZCBsaW1pdCAqLworICAgIF9jc3ZzdGF0ZShtb2R1bGUpLT5maWVsZF9saW1pdCA9IDEyOCAqIDEwMjQ7CisgICAgLyogRG8gSSBzdGlsbCBuZWVkIHRvIGFkZCB0aGlzIHZhciB0byB0aGUgTW9kdWxlIERpY3Q/ICovCisKICAgICAvKiBBZGQgX2RpYWxlY3RzIGRpY3Rpb25hcnkgKi8KLSAgICBkaWFsZWN0cyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoZGlhbGVjdHMgPT0gTlVMTCkKKyAgICBfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIl9kaWFsZWN0cyIsIGRpYWxlY3RzKSkKKyAgICBQeV9JTkNSRUYoX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIl9kaWFsZWN0cyIsIF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIHF1b3RlIHN0eWxlcyBpbnRvIGRpY3Rpb25hcnkgKi8KQEAgLTE2MTQsOSArMTY2MSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCB0aGUgQ1NWIGV4Y2VwdGlvbiBvYmplY3QgdG8gdGhlIG1vZHVsZS4gKi8KLSAgICBlcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oIl9jc3YuRXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBpZiAoZXJyb3Jfb2JqID09IE5VTEwpCisgICAgX2NzdnN0YXRlKG1vZHVsZSktPmVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2Nzdi5FcnJvciIsIE5VTEwsIE5VTEwpOworICAgIGlmIChfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJFcnJvciIsIGVycm9yX29iaik7CisgICAgUHlfSU5DUkVGKF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmopOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJFcnJvciIsIF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmopOwogICAgIHJldHVybiBtb2R1bGU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwppbmRleCA3M2FiMmZkLi44MzhkZDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKQEAgLTExNDIsNiArMTE0Miw4IEBACiBXQ2hhckFycmF5X3NldF92YWx1ZShDRGF0YU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBQeV9VTklDT0RFICp3c3RyOworICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTExNTUsNyArMTE1NywxMSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgaWYgKCh1bnNpZ25lZClQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpID4gc2VsZi0+Yl9zaXplL3NpemVvZih3Y2hhcl90KSkgeworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmbGVuKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCh1bnNpZ25lZClsZW4gPiBzZWxmLT5iX3NpemUvc2l6ZW9mKHdjaGFyX3QpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbG9uZyIpOwogICAgICAgICByZXN1bHQgPSAtMTsKQEAgLTE4NDMsMTEgKzE4NDksOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwcm90bykpIHsKLSAgICAgICAgUHlPYmplY3QgKnYgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocHJvdG8sIE5VTEwpOwotICAgICAgICBpZiAoIXYpCisgICAgICAgIHByb3RvX3N0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHByb3RvLCAmcHJvdG9fbGVuKTsKKyAgICAgICAgaWYgKCFwcm90b19zdHIpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBwcm90b19zdHIgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICAgICAgcHJvdG9fbGVuID0gUHlCeXRlc19HRVRfU0laRSh2KTsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgImNsYXNzIG11c3QgZGVmaW5lIGEgJ190eXBlXycgc3RyaW5nIGF0dHJpYnV0ZSIpOwpAQCAtMzY3OSw4ICszNjgzLDEwIEBACiAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cCwgaW5kZXgsIHYpOwogICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgfSBlbHNlIGlmIChiaXQgJiBvdXRtYXNrKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2N0eXBlc19mcm9tX291dHBhcmFtX18pOworCiAgICAgICAgICAgICB2ID0gUHlUdXBsZV9HRVRfSVRFTShjYWxsYXJncywgaSk7Ci0gICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh2LCAiX19jdHlwZXNfZnJvbV9vdXRwYXJhbV9fIiwgTlVMTCk7CisgICAgICAgICAgICB2ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh2LCAmUHlJZF9fX2N0eXBlc19mcm9tX291dHBhcmFtX18sIE5VTEwpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCB8fCBudW1yZXR2YWxzID09IDEpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOwogICAgICAgICAgICAgICAgIHJldHVybiB2OwpAQCAtNDI0Nyw3ICs0MjUzLDcgQEAKICAgICAgICAgICAgIHdjaGFyX3QgKmRlc3Q7CiAKICAgICAgICAgICAgIGlmIChzbGljZWxlbiA8PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgICAgICBpZiAoc3RlcCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHRyICsgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VsZW4pOwpAQCAtNDU5NywzOCArNDYwMywyMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFNpbXBsZV9yZXByKENEYXRhT2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICp2YWwsICpuYW1lLCAqYXJncywgKnJlc3VsdDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBQeU9iamVjdCAqdmFsLCAqcmVzdWx0OwogCiAgICAgaWYgKFB5X1RZUEUoc2VsZiktPnRwX2Jhc2UgIT0gJlNpbXBsZV9UeXBlKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzIG9iamVjdCBhdCAlcD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBzZWxmKTsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIiVzKCVyKSIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICB2YWwgPSBTaW1wbGVfZ2V0X3ZhbHVlKHNlbGYpOwogICAgIGlmICh2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodmFsKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBuYW1lLCB2YWwpOwotICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCB2YWwpOwogICAgIFB5X0RFQ1JFRih2YWwpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00OTQwLDcgKzQ5MjgsNyBAQAogICAgICAgICAgICAgd2NoYXJfdCAqZGVzdDsKIAogICAgICAgICAgICAgaWYgKGxlbiA8PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgICAgICBpZiAoc3RlcCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHRyICsgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKaW5kZXggZWYxNGU5MS4uZTk0MGVjNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKQEAgLTY1OCwxMyArNjU4LDYgQEAKIAogI2lmZGVmIENUWVBFU19VTklDT0RFCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgICAgIHBhLT5mZmlfdHlwZSA9ICZmZmlfdHlwZV9wb2ludGVyOwotICAgICAgICBwYS0+dmFsdWUucCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iaik7Ci0gICAgICAgIFB5X0lOQ1JFRihvYmopOwotICAgICAgICBwYS0+a2VlcCA9IG9iajsKLSAgICAgICAgcmV0dXJuIDA7Ci0jZWxzZQogICAgICAgICBwYS0+ZmZpX3R5cGUgPSAmZmZpX3R5cGVfcG9pbnRlcjsKICAgICAgICAgcGEtPnZhbHVlLnAgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhvYmosIE5VTEwpOwogICAgICAgICBpZiAocGEtPnZhbHVlLnAgPT0gTlVMTCkKQEAgLTY3NSw3ICs2NjgsNiBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAgICAgfQogI2VuZGlmCiAKQEAgLTk1Miw5ICs5NDQsOSBAQAogICAgIGVsc2UgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZzLCBQeVVuaWNvZGVfRnJvbVN0cmluZygiPz8/IikpOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBQeUVycl9TZXRPYmplY3QoZXhjX2NsYXNzLCBzKTsKIGVycm9yOgogICAgIFB5X1hERUNSRUYodHApOwpAQCAtMTY5NSwxMyArMTY4NywxNSBAQAogICAgIFB5T2JqZWN0ICpzdGF0ZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19zZXRzdGF0ZV9fKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdHlwLCAmc3RhdGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR5cCwgIl9fbmV3X18iLCAiTyIsIHR5cCk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eXAsICZQeUlkX19fbmV3X18sICJPIiwgdHlwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiX19zZXRzdGF0ZV9fIiwgIk8iLCBzdGF0ZSk7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX19fc2V0c3RhdGVfXywgIk8iLCBzdGF0ZSk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCA5ZGE4OTBkLi5mNmY4ZTQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC05LDcgKzksNiBAQAogCiAjZGVmaW5lIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNICJfY3R5cGVzL2NmaWVsZC5jIHB5bWVtIgogCi0jaWYgUHlfVU5JQ09ERV9TSVpFICE9IFNJWkVPRl9XQ0hBUl9UCiBzdGF0aWMgdm9pZCBweW1lbV9kZXN0cnVjdG9yKFB5T2JqZWN0ICpwdHIpCiB7CiAgICAgdm9pZCAqcCA9IFB5Q2Fwc3VsZV9HZXRQb2ludGVyKHB0ciwgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0pOwpAQCAtMTcsNyArMTYsNiBAQAogICAgICAgICBQeU1lbV9GcmVlKHApOwogICAgIH0KIH0KLSNlbmRpZgogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC01Miw3ICs1MCw3IEBACiB7CiAgICAgQ0ZpZWxkT2JqZWN0ICpzZWxmOwogICAgIFB5T2JqZWN0ICpwcm90bzsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGFsaWduLCBsZW5ndGg7CisgICAgUHlfc3NpemVfdCBzaXplLCBhbGlnbjsKICAgICBTRVRGVU5DIHNldGZ1bmMgPSBOVUxMOwogICAgIEdFVEZVTkMgZ2V0ZnVuYyA9IE5VTEw7CiAgICAgU3RnRGljdE9iamVjdCAqZGljdDsKQEAgLTEwNiw3ICsxMDQsNiBAQAogICAgIH0KIAogICAgIHNpemUgPSBkaWN0LT5zaXplOwotICAgIGxlbmd0aCA9IGRpY3QtPmxlbmd0aDsKICAgICBwcm90byA9IGRlc2M7CiAKICAgICAvKiAgRmllbGQgZGVzY3JpcHRvcnMgZm9yICdjX2NoYXIgKiBuJyBhcmUgYmUgc2NwZWNpYWwgY2FzZWQgdG8KQEAgLTEyMTQsMzcgKzEyMTEsMzAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBVX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgd2NoYXJfdCAqcDsKIAogICAgIHNpemUgLz0gc2l6ZW9mKHdjaGFyX3QpOyAvKiB3ZSBjb3VudCBjaGFyYWN0ZXIgdW5pdHMgaGVyZSwgbm90IGJ5dGVzICovCiAKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCh3Y2hhcl90ICopcHRyLCBzaXplKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogV2UgbmVlZCAncmVzdWx0JyB0byBiZSBhYmxlIHRvIGNvdW50IHRoZSBjaGFyYWN0ZXJzIHdpdGggd2NzbGVuLAogICAgICAgIHNpbmNlIHB0ciBtYXkgbm90IGJlIE5VTCB0ZXJtaW5hdGVkLiAgSWYgdGhlIGxlbmd0aCBpcyBzbWFsbGVyIChpZgogICAgICAgIGl0IHdhcyBhY3R1YWxseSBOVUwgdGVybWluYXRlZCwgd2UgY29uc3RydWN0IGEgbmV3IG9uZSBhbmQgdGhyb3cKICAgICAgICBhd2F5IHRoZSByZXN1bHQuCiAgICAgKi8KICAgICAvKiBjaG9wIG9mZiBhdCB0aGUgZmlyc3QgTlVMIGNoYXJhY3RlciwgaWYgYW55LiAqLwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIGZvciAobGVuID0gMDsgbGVuIDwgc2l6ZTsgKytsZW4pCisgICAgcCA9ICh3Y2hhcl90KilwdHI7CisgICAgZm9yIChsZW4gPSAwOyBsZW4gPCBzaXplOyArK2xlbikgewogICAgICAgICBpZiAoIXBbbGVuXSkKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgaWYgKGxlbiA8IHNpemUpIHsKLSAgICAgICAgUHlPYmplY3QgKm9iID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigod2NoYXJfdCAqKXB0ciwgbGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBvYjsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCh3Y2hhcl90ICopcHRyLCBsZW4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogVV9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3QgbGVuZ3RoKQogeworICAgIFB5X1VOSUNPREUgKndzdHI7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCiAgICAgLyogSXQncyBlYXNpZXIgdG8gY2FsY3VsYXRlIGluIGNoYXJhY3RlcnMgdGhhbiBpbiBieXRlcyAqLwpAQCAtMTI1Nyw3ICsxMjQ3LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmc2l6ZSk7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPiBsZW5ndGgpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsb25nICglemQsIG1heGltdW0gbGVuZ3RoICV6ZCkiLApAQCAtMTM3Nyw2ICsxMzcwLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBaX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogeworICAgIFB5T2JqZWN0ICprZWVwOworICAgIHdjaGFyX3QgKmJ1ZmZlcjsKKwogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgICood2NoYXJfdCAqKilwdHIgPSBOVUxMOwogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwpAQCAtMTM5NiwzNyArMTM5MiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGUgc3RyaW5nIG9yIGludGVnZXIgYWRkcmVzcyBleHBlY3RlZCBpbnN0ZWFkIG9mICVzIGluc3RhbmNlIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfSBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgLyogV2UgY2FuIGNvcHkgZGlyZWN0bHkuICBIbSwgYXJlIHVuaWNvZGUgb2JqZWN0cyBhbHdheXMgTlVMCi0gICAgICAgdGVybWluYXRlZCBpbiBQeXRob24sIGludGVybmFsbHk/Ci0gICAgICovCi0gICAgKih3Y2hhcl90ICoqKXB0ciA9ICh3Y2hhcl90ICopIFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgLyogV2UgbXVzdCBjcmVhdGUgYSB3Y2hhcl90KiBidWZmZXIgZnJvbSB0aGUgdW5pY29kZSBvYmplY3QsCi0gICAgICAgICAgIGFuZCBrZWVwIGl0IGFsaXZlICovCi0gICAgICAgIFB5T2JqZWN0ICprZWVwOwotICAgICAgICB3Y2hhcl90ICpidWZmZXI7Ci0KLSAgICAgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodmFsdWUsIE5VTEwpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGtlZXAgPSBQeUNhcHN1bGVfTmV3KGJ1ZmZlciwgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0sIHB5bWVtX2Rlc3RydWN0b3IpOwotICAgICAgICBpZiAoIWtlZXApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAqKHdjaGFyX3QgKiopcHRyID0gKHdjaGFyX3QgKilidWZmZXI7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBrZWVwOwogICAgIH0KLSNlbmRpZgorCisgICAgLyogV2UgbXVzdCBjcmVhdGUgYSB3Y2hhcl90KiBidWZmZXIgZnJvbSB0aGUgdW5pY29kZSBvYmplY3QsCisgICAgICAgYW5kIGtlZXAgaXQgYWxpdmUgKi8KKyAgICBidWZmZXIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh2YWx1ZSwgTlVMTCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtlZXAgPSBQeUNhcHN1bGVfTmV3KGJ1ZmZlciwgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0sIHB5bWVtX2Rlc3RydWN0b3IpOworICAgIGlmICgha2VlcCkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAqKHdjaGFyX3QgKiopcHRyID0gYnVmZmVyOworICAgIHJldHVybiBrZWVwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ3MSwxMyArMTQ1MCwxNiBAQAogCiAgICAgLyogY3JlYXRlIGEgQlNUUiBmcm9tIHZhbHVlICovCiAgICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSk7CisgICAgICAgIHdjaGFyX3QqIHd2YWx1ZTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgICAgICBpZiAod3ZhbHVlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCh1bnNpZ25lZCkgc2l6ZSAhPSBzaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlN0cmluZyB0b28gbG9uZyBmb3IgQlNUUiIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZClzaXplKTsKKyAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHd2YWx1ZSwgKHVuc2lnbmVkKXNpemUpOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIH0gZWxzZQogICAgICAgICBic3RyID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZgppbmRleCA3YWZhMGVkLi4zNTdkMGVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS5kaWZmCkBAIC0xLDc0ICsxLDE0IEBACi1kaWZmIC11ck4gbGliZmZpLm9yaWcvY29uZmlndXJlIGxpYmZmaS9jb25maWd1cmUKLS0tLSBsaWJmZmkub3JpZy9jb25maWd1cmUJMjAxMC0wMy0xOSAxODoyOTo1NC41ODg0OTk4NjIgKzAxMDAKLSsrKyBsaWJmZmkvY29uZmlndXJlCTIwMTAtMDMtMTkgMTg6MzI6MDkuMTEzNDk5NDc5ICswMTAwCi1AQCAtMTEyMjgsNiArMTEyMjgsOSBAQAotICAgaT84Ni0qLXNvbGFyaXMyLjFbMC05XSopCi0gCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKLSAJOzsKLSsgIGkqODYtKi1udG8tcW54KikKLSsgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKLSsgICAgICAgIDs7Ci0gICBpPzg2LSotKikKLSAJVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgotIAk7OwotQEAgLTExMjQ1LDEyICsxMTI0OCwxMiBAQAotIAk7OwotIAotICAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCi0tCVRBUkdFVD1NSVBTOyBUQVJHRVRESVI9bWlwcwotKwlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwotIAk7OwotICAgbWlwcyotKi1saW51eCopCi0gCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCi0gCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwotLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKLSsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKLSAJOzsKLSAKLSAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQotQEAgLTExMzA3LDcgKzExMzEwLDcgQEAKLSAgIGFzX2ZuX2Vycm9yICJcImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LlwiIiAiJExJTkVOTyIgNQotIGZpCi0gCi0tIGlmIHRlc3QgeCRUQVJHRVQgPSB4TUlQUzsgdGhlbgotKyBpZiBleHByIHgkVEFSR0VUIDogJ3hNSVBTJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgTUlQU19UUlVFPQotICAgTUlQU19GQUxTRT0nIycKLSBlbHNlCi1AQCAtMTI0MjIsNiArMTI0MjUsMTIgQEAKLSBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL2ZmaS5oIE1ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBtYW4vTWFrZWZpbGUgbGliZmZpLnBjIgotIAotIAotK2FjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyBpbmNsdWRlL2ZmaV9jb21tb24uaDppbmNsdWRlL2ZmaV9jb21tb24uaCIKLSsKLSsKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgZmZpY29uZmlnLnB5IgotKwotKwotIGNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgotICMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQotICMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyZQotQEAgLTEzNTIxLDYgKzEzNTMwLDggQEAKLSAgICAgInRlc3RzdWl0ZS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyB0ZXN0c3VpdGUvTWFrZWZpbGUiIDs7Ci0gICAgICJtYW4vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbWFuL01ha2VmaWxlIiA7OwotICAgICAibGliZmZpLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGxpYmZmaS5wYyIgOzsKLSsgICAgImluY2x1ZGUvZmZpX2NvbW1vbi5oIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTIGluY2x1ZGUvZmZpX2NvbW1vbi5oOmluY2x1ZGUvZmZpX2NvbW1vbi5oIiA7OwotKyAgICAiZmZpY29uZmlnLnB5IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGZmaWNvbmZpZy5weSIgOzsKLSAKLSAgICopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OwotICAgZXNhYwotZGlmZiAtdXJOIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZS5hYyBsaWJmZmkvY29uZmlndXJlLmFjCi0tLS0gbGliZmZpLm9yaWcvY29uZmlndXJlLmFjCTIwMTAtMDMtMTkgMTg6Mjc6NDQuOTg4NDk4NTg1ICswMTAwCi0rKysgbGliZmZpL2NvbmZpZ3VyZS5hYwkyMDEwLTAzLTE5IDE4OjMxOjI5LjI1MjUwNTE3OCArMDEwMAorLS0tIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTEyIDA1OjEwOjUxLjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmZmaS9jb25maWd1cmUuYWMJMjAxMi0wNi0yNiAxNTo0Mjo0Mi40Nzc0OTg5MzggKzAyMDAKIEBAIC0xLDQgKzEsNyBAQAogIGRubCBQcm9jZXNzIHRoaXMgd2l0aCBhdXRvY29uZiB0byBjcmVhdGUgY29uZmlndXJlCiArIwogKyMgZmlsZSBmcm9tIGxpYmZmaSAtIHNsaWdodGx5IHBhdGNoZWQgZm9yIGN0eXBlcwogKyMKICAKLSBBQ19QUkVSRVEoMi42MykKKyBBQ19QUkVSRVEoMi42OCkKICAKLUBAIC05MSw2ICs5NCw5IEBACitAQCAtMTE0LDYgKzExNyw5IEBACiAgICBpPzg2LSotc29sYXJpczIuMVtbMC05XV0qKQogIAlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAgCTs7CkBAIC03NiwyNCArMTYsMjQgQEAKICsgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKICsgICAgICAgIDs7CiAgICBpPzg2LSotKikKLSAJVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgorIAlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAgCTs7Ci1AQCAtMTA4LDEyICsxMTQsMTIgQEAKK0BAIC0xMzEsMTIgKzEzNywxMiBAQAogIAk7OwogIAotICAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCisgICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKiB8IG1pcHMqLSotcnRlbXMqKQogLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKICsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKICAJOzsKLSAgIG1pcHMqLSotbGludXgqKQorICAgbWlwcyotKi1saW51eCogfCBtaXBzKi0qLW9wZW5ic2QqKQogIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgogIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fbWlwczY0KScKIC0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCiArCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAgCTs7CiAgCi0gICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKLUBAIC0xNzAsNyArMTc2LDcgQEAKKyAgIG1veGllLSotKikKK0BAIC0yMTIsNyArMjE4LDcgQEAKICAgIEFDX01TR19FUlJPUihbImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LiJdKQogIGZpCiAgCkBAIC0xMDIsNyArNDIsNyBAQAogIEFNX0NPTkRJVElPTkFMKFNQQVJDLCB0ZXN0IHgkVEFSR0VUID0geFNQQVJDKQogIEFNX0NPTkRJVElPTkFMKFg4NiwgdGVzdCB4JFRBUkdFVCA9IHhYODYpCiAgQU1fQ09ORElUSU9OQUwoWDg2X0ZSRUVCU0QsIHRlc3QgeCRUQVJHRVQgPSB4WDg2X0ZSRUVCU0QpCi1AQCAtNDAxLDQgKzQwNyw4IEBACitAQCAtNDk5LDQgKzUwNSw4IEBACiAgCiAgQUNfQ09ORklHX0ZJTEVTKGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9mZmkuaCBNYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgbWFuL01ha2VmaWxlIGxpYmZmaS5wYykKICAKQEAgLTExMSwzICs1MSw3MCBAQAogK0FDX0NPTkZJR19GSUxFUyhmZmljb25maWcucHkpCiArCiAgQUNfT1VUUFVUCistLS0gbGliZmZpLTMuMC4xMS9mZmljb25maWcucHkuaW4JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJmZmkvZmZpY29uZmlnLnB5LmluCTIwMTItMDMtMTUgMDE6MDQ6MjcuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDM1IEBACisrZmZpX3NvdXJjZXMgPSAiIiIKKytzcmMvcHJlcF9jaWYuYworK3NyYy9jbG9zdXJlcy5jCisrc3JjL2RsbWFsbG9jLmMKKysiIiIuc3BsaXQoKQorKworK2ZmaV9wbGF0Zm9ybXMgPSB7CisrICAgICdNSVBTX0lSSVgnOiBbJ3NyYy9taXBzL2ZmaS5jJywgJ3NyYy9taXBzL28zMi5TJywgJ3NyYy9taXBzL24zMi5TJ10sCisrICAgICdNSVBTX0xJTlVYJzogWydzcmMvbWlwcy9mZmkuYycsICdzcmMvbWlwcy9vMzIuUyddLAorKyAgICAnWDg2JzogWydzcmMveDg2L2ZmaS5jJywgJ3NyYy94ODYvc3lzdi5TJ10sCisrICAgICdYODZfRlJFRUJTRCc6IFsnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L2ZyZWVic2QuUyddLAorKyAgICAnWDg2X1dJTjMyJzogWydzcmMveDg2L2ZmaS5jJywgJ3NyYy94ODYvd2luMzIuUyddLAorKyAgICAnU1BBUkMnOiBbJ3NyYy9zcGFyYy9mZmkuYycsICdzcmMvc3BhcmMvdjguUycsICdzcmMvc3BhcmMvdjkuUyddLAorKyAgICAnQUxQSEEnOiBbJ3NyYy9hbHBoYS9mZmkuYycsICdzcmMvYWxwaGEvb3NmLlMnXSwKKysgICAgJ0lBNjQnOiBbJ3NyYy9pYTY0L2ZmaS5jJywgJ3NyYy9pYTY0L3VuaXguUyddLAorKyAgICAnTTMyUic6IFsnc3JjL20zMnIvc3lzdi5TJywgJ3NyYy9tMzJyL2ZmaS5jJ10sCisrICAgICdNNjhLJzogWydzcmMvbTY4ay9mZmkuYycsICdzcmMvbTY4ay9zeXN2LlMnXSwKKysgICAgJ1BPV0VSUEMnOiBbJ3NyYy9wb3dlcnBjL2ZmaS5jJywgJ3NyYy9wb3dlcnBjL3N5c3YuUycsICdzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TJywgJ3NyYy9wb3dlcnBjL2xpbnV4NjQuUycsICdzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUyddLAorKyAgICAnUE9XRVJQQ19BSVgnOiBbJ3NyYy9wb3dlcnBjL2ZmaS5jJywgJ3NyYy9wb3dlcnBjL2FpeC5TJywgJ3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMnXSwKKysgICAgJ1BPV0VSUENfRlJFRUJTRCc6IFsnc3JjL3Bvd2VycGMvZmZpLmMnLCAnc3JjL3Bvd2VycGMvc3lzdi5TJywgJ3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMnXSwKKysgICAgJ0FSTSc6IFsnc3JjL2FybS9zeXN2LlMnLCAnc3JjL2FybS9mZmkuYyddLAorKyAgICAnTElCRkZJX0NSSVMnOiBbJ3NyYy9jcmlzL3N5c3YuUycsICdzcmMvY3Jpcy9mZmkuYyddLAorKyAgICAnRlJWJzogWydzcmMvZnJ2L2VhYmkuUycsICdzcmMvZnJ2L2ZmaS5jJ10sCisrICAgICdTMzkwJzogWydzcmMvczM5MC9zeXN2LlMnLCAnc3JjL3MzOTAvZmZpLmMnXSwKKysgICAgJ1g4Nl82NCc6IFsnc3JjL3g4Ni9mZmk2NC5jJywgJ3NyYy94ODYvdW5peDY0LlMnLCAnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L3N5c3YuUyddLAorKyAgICAnU0gnOiBbJ3NyYy9zaC9zeXN2LlMnLCAnc3JjL3NoL2ZmaS5jJ10sCisrICAgICdTSDY0JzogWydzcmMvc2g2NC9zeXN2LlMnLCAnc3JjL3NoNjQvZmZpLmMnXSwKKysgICAgJ1BBJzogWydzcmMvcGEvbGludXguUycsICdzcmMvcGEvZmZpLmMnXSwKKysgICAgJ1BBX0xJTlVYJzogWydzcmMvcGEvbGludXguUycsICdzcmMvcGEvZmZpLmMnXSwKKysgICAgJ1BBX0hQVVgnOiBbJ3NyYy9wYS9ocHV4MzIuUycsICdzcmMvcGEvZmZpLmMnXSwKKyt9CisrCisrZmZpX3NvdXJjZXMgKz0gZmZpX3BsYXRmb3Jtc1snQFRBUkdFVEAnXQorKworK2ZmaV9jZmxhZ3MgPSAnQENGTEFHU0AnCitkaWZmIC11ck4gbGliZmZpLTMuMC4xMS9zcmMvZGxtYWxsb2MuYyBsaWJmZmkvc3JjL2RsbWFsbG9jLmMKKy0tLSBsaWJmZmktMy4wLjExL3NyYy9kbG1hbGxvYy5jCTIwMTItMDQtMTIgMDQ6NDY6MDYuMDAwMDAwMDAwICswMjAwCisrKysgbGliZmZpL3NyYy9kbG1hbGxvYy5jCTIwMTItMDYtMjYgMTU6MTU6NTguOTQ5NTQ3NDYxICswMjAwCitAQCAtNDU3LDYgKzQ1NywxMSBAQAorICNkZWZpbmUgTEFDS1NfRVJSTk9fSAorICNkZWZpbmUgTUFMTE9DX0ZBSUxVUkVfQUNUSU9OCisgI2RlZmluZSBNTUFQX0NMRUFSUyAwIC8qIFdJTkNFIGFuZCBzb21lIG90aGVycyBhcHBhcmVudGx5IGRvbid0IGNsZWFyICovCisrI2VsaWYgIWRlZmluZWQgX0dOVV9TT1VSQ0UKKysvKiBtcmVtYXAoKSBvbiBMaW51eCByZXF1aXJlcyB0aGlzIHZpYSBzeXMvbW1hbi5oCisrICogU2VlIHJvdW5kdXAgaXNzdWUgMTAzMDkKKysgKi8KKysjZGVmaW5lIF9HTlVfU09VUkNFIDEKKyAjZW5kaWYgIC8qIFdJTjMyICovCisgCisgI2lmZGVmIF9fT1MyX18KK2RpZmYgLXVyTiBsaWJmZmktMy4wLjExL3NyYy9zcGFyYy92OC5TIGxpYmZmaS9zcmMvc3BhcmMvdjguUworLS0tIGxpYmZmaS0zLjAuMTEvc3JjL3NwYXJjL3Y4LlMJMjAxMi0wNC0xMiAwNDo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJmZmkvc3JjL3NwYXJjL3Y4LlMJMjAxMS0wMy0xMyAwNToxNTowNC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMTMsNiArMjEzLDEwIEBACisgCWJlLGEJZG9uZTEKKyAJIGxkZAlbJWZwLThdLCAlaTAKKyAKKysJY21wCSVvMCwgRkZJX1RZUEVfVUlOVDY0CisrCWJlLGEJZG9uZTEKKysJIGxkZAlbJWZwLThdLCAlaTAKKysKKyAJbGQJWyVmcC04XSwgJWkwCisgZG9uZTE6CisgCWptcAklaTcrOApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZwppbmRleCAwMGJhN2VmLi5mNDE0OGE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZwpAQCAtMSw4ICsxLDkxMSBAQAorMjAxMi0wNC0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBuZXcgc2NyaXB0LgorCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisKKzIwMTItMDQtMTEgIFphY2hhcnkgV2FsZG93c2tpICA8endhbGRvd3NraUBnbWFpbC5jb20+CisKKwkqIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHksCisJbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFN1cHBvcnQgYSBNYWMgc3RhdGljIGxpYnJhcnkgdmlhCisJWGNvZGUuIFNldCBpT1MgY29tcGF0aWJpbGl0eSB0byA0LjAuICBNb3ZlIGlPUyB0cmFtcG9saW5lCisJZ2VuZXJhdGlvbiBpbnRvIGFuIFhjb2RlICJydW4gc2NyaXB0IiBwaGFzZS4gIEluY2x1ZGUgYm90aCBhcworCVhjb2RlIGJ1aWxkIHNjcmlwdHMuIERvbid0IGFsd2F5cyByZWdlbmVyYXRlIGNvbmZpZyBmaWxlcy4KKworMjAxMi0wNC0xMCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgKGZmaV9wcmVwX2FyZ3MpOiBBZGQgbWlzc2luZyBzZW1pY29sb24uCisKKzIwMTItMDQtMDYgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgbmV3IGlPUy94Y29kZSBmaWxlcy4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDEyLTA0LTA2ICBNaWtlIExld2lzICA8bWlrZWxpa2VzcGllQGdtYWlsLmNvbT4KKworCSogZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weTogTmV3IGZpbGUuCisJKiBsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IGZpbGUuCisJKiBSRUFETUU6IFVwZGF0ZSBpbnN0cnVjdGlvbnMgb24gYnVpbGRpbmcgaU9TIGJpbmFyeS4KKwkqIGJ1aWxkLWlvcy5zaDogRGVsZXRlLgorCisyMDEyLTA0LTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIG00L2xpYnRvb2wubTQgKF9MVF9FTkFCTEVfTE9DSyk6IFN1cHBvcnQgeDMyLgorCisyMDEyLTA0LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy94ODYvZmZpNjQuYyAoVUlOVDEyOCk6IERlZmluZSBkaWZmZXJlbnRseSBmb3IgSW50ZWwgYW5kIEdOVQorCWNvbXBpbGVycywgdGhlbiB1c2UgaXQuCisKKzIwMTItMDQtMDYgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogdGVzdHN1aXRlL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIG1pc3NpbmcgdGVzdCBjYXNlcy4KKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMi0wNC0wNSAgWmFjaGFyeSBXYWxkb3dza2kgIDx6d2FsZG93c2tpQGdtYWlsLmNvbT4KKworCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIG1pc3NpbmcgdHJhbXBvbGluZSB0YWJsZSBmaWVsZHMuCisJKiBzcmMvYXJtL3N5c3YuUzogRml4IEVOVFJZIGRlZmluaXRpb24sIGFuZCB3cmFwIHN5bWJvbCByZWZlcmVuY2VzCisJaW4gQ05BTUUuCisJKiBzcmMveDg2L2ZmaS5jOiBXcmFwIFdpbmRvd3Mgc3BlY2lmaWMgY29kZSBpbiBpZmRlZnMuCisKKzIwMTItMDQtMDIgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2FsbF93aW4zMik6IFNpZ24vemVybyBleHRlbmQgdGhlIHJldHVybgorCXZhbHVlIGluIHRoZSBJbnRlbCB2ZXJzaW9uIGFzIGlzIGFscmVhZHkgZG9uZSBmb3IgdGhlIEFUJlQgdmVyc2lvbi4KKwkoZmZpX2Nsb3N1cmVfU1lTVik6IExpa2V3aXNlLgorCShmZmlfY2xvc3VyZV9yYXdfU1lTVik6IExpa2V3aXNlLgorCShmZmlfY2xvc3VyZV9TVERDQUxMKTogTGlrZXdpc2UuCisKKzIwMTItMDMtMjkgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwpOiBVbmlmeSB0aGUgZnJhbWUKKwlnZW5lcmF0aW9uLCBmaXggdGhlIEVORFAgbGFiZWwgYW5kIHJlbW92ZSB0aGUgc3VycGx1cyB0aGlyZCBhcmcKKwlmcm9tIHRoZSAnbGVhJyBpbnNuLgorCisyMDEyLTAzLTI5ICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfcmF3X1NZU1YpOiBNYWtlIHRoZSAnc3R1YnJhdycgbGFiZWwKKwl2aXNpYmxlIG91dHNpZGUgdGhlIFBST0MsIHNvIHRoYXQgZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIGNhbiBzZWUKKwlpdC4gIEFsc28gaW5zdHJ1Y3QgdGhlIGFzc2VtYmxlciB0byBhZGQgYSBmcmFtZSB0byB0aGUgZnVuY3Rpb24uCisKKzIwMTItMDMtMjMgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogTWFrZWZpbGUuYW0gKEFNX0NQUEZMQUdTKTogQWRkIC1ERkZJX0JVSUxESU5HLgorCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisJKiBpbmNsdWRlL2ZmaS5oLmluIFtNU1ZDXTogQWRkIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkZWNvcmF0aW9ucworCXRvIGFsbCBkYXRhIGV4cG9ydHMsIHdoZW4gY29tcGlsaW5nIGxpYmZmaSBjbGllbnRzIHVzaW5nIE1TVkMuCisKKzIwMTItMDMtMjkgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IEFkZCBuZXcgQUJJIEZGSV9NU19DREVDTCBhbmQKKwltYWtlIGl0IHRoZSBkZWZhdWx0IGZvciBNU1ZDLgorCShGRklfVFlQRV9NU19TVFJVQ1QpOiBOZXcgc3RydWN0dXJlIHJldHVybiBjb252ZW50aW9uLgorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBUd2VhayB0aGUgc3RydWN0dXJlCisJcmV0dXJuIGNvbnZlbnRpb24gZm9yIEZGSV9NU19DREVDTCB0byBiZSBGRklfVFlQRV9NU19TVFJVQ1QKKwlpbnN0ZWFkIG9mIGFuIG9yZGluYXJ5IEZGSV9UWVBFX1NUUlVDVC4KKwkoZmZpX3ByZXBfYXJncyk6IFRyZWF0IEZGSV9UWVBFX01TX1NUUlVDVCBhcyBGRklfVFlQRV9TVFJVQ1QuCisJKGZmaV9jYWxsKTogTGlrZXdpc2UuCisJKGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVik6IExpa2V3aXNlLgorCShmZmlfcmF3X2NhbGwpOiBMaWtld2lzZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBUcmVhdCBGRklfTVNfQ0RFQ0wgYXMgRkZJX1NZU1YuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX1NZU1YpOiBGb3IgRkZJX1RZUEVfTVNfU1RSVUNULAorCXJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdCBzdHJ1Y3R1cmUgaW4gZWF4IGFuZCBkb24ndCBwb3AKKwl0aGF0IHBvaW50ZXIgZnJvbSB0aGUgc3RhY2ssIHRoZSBjYWxsZXIgdGFrZXMgY2FyZSBvZiBpdC4KKwkoZmZpX2NhbGxfd2luMzIpOiBUcmVhdCBGRklfVFlQRV9NU19TVFJVQ1QgYXMgRkZJX1RZUEVfU1RSVUNULgorCShmZmlfY2xvc3VyZV9yYXdfU1lTVik6IExpa2V3aXNlLgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBbTVNWQ106IEFkZCBpbmxpbmUKKwlhc3NlbWJseSB2ZXJzaW9uIHdpdGggSW50ZWwgc3ludGF4LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBbTVNWQ106IExpa2V3aXNlLgorCisyMDEyLTAzLTIzICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0Lmg6IFByb3ZpZGUgYWJzdHJhdGlvbiBvZgorCV9fYXR0cmlidXRlX18oKGZhc3RjYWxsKSkgaW4gdGhlIGZvcm0gb2YgYSBfX0ZBU1RDQUxMX18KKwlkZWZpbmUuICBEZWZpbmUgaXQgdG8gX19mYXN0Y2FsbCBmb3IgTVNWQy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYzogVXNlIHRoZSBhYm92ZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmM6IExpa2V3aXNlLgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyBbTVNWQ10gKGZmaV9jbG9zdXJlX1RISVNDQUxMKTogUmVtb3ZlIHRoZSBtYW51YWwKKwlmcmFtZSBvbiBmdW5jdGlvbiBlbnRyeSwgTUFTTSBhZGRzIG9uZSBhdXRvbWF0aWNhbGx5LgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmggW01TVkNdOiBBZGQga2x1ZGdlIGZvciBtaXNzaW5nCisJYml0cyBpbiB0aGUgTVNWQyBoZWFkZXJzLgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmM6IEFkanVzdCB0byB0aGUgQzg5IHN0eWxlCisJd2l0aCBubyBkZWNsYXJhdGlvbnMgYWZ0ZXIgc3RhdGVtZW50cy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYzogTGlrZXdpc2UuCisKKzIwMTItMDMtMDYgIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV9jYWxsKTogQWRkIF9fQVJNX0VBQklfXyBndWFyZCBhcm91bmQgY2FsbCB0bworCWZmaV9jYWxsX1ZGUCgpLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEFkZCBfX0FSTV9FQUJJX18gZ3VhcmQgYXJvdW5kIHVzZSBvZgorCWZmaV9jbG9zdXJlX1ZGUC4KKwkqIHNyYy9hcm0vc3lzdi5TOiBBZGQgX19BUk1fRUFCSV9fIGd1YXJkIGFyb3VuZCBWRlAgY29kZS4KKworMjAxMi0wMy0yMSAgUGV0ZXIgUm9zaW4JIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYyAoZmxvYXRfdmFfZm4pOiBVc2UgJWYgd2hlbgorCXByaW50aW5nIGRvdWJsZXMgKCVsZiBpcyBmb3IgbG9uZyBkb3VibGVzKS4KKwkobWFpbik6IExpa2V3aXNlLgorCisyMDEyLTAzLTIxICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwIFsqLSotY3lnd2luKiwgKi0qLW1pbmd3Kl0KKwkoc2V0X2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFycyk6IEFkZCB0aGUgbGlicmFyeSBzZWFyY2ggZGlyIHRvIFBBVEgKKwkoYW5kIHNhdmUgUEFUSCBmb3IgbGF0ZXIpLgorCShyZXN0b3JlX2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFycyk6IFJlc3RvcmUgUEFUSC4KKworMjAxMi0wMy0yMCAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIChtYWluKTogUmVtb3ZlIGJ1Zy4KKwkqIHNyYy94ODYvd2luMzIuUyBbTVNWQ10gKGZmaV9jbG9zdXJlX1NZU1YpOiBNYWtlIHRoZSAnc3R1YicgbGFiZWwKKwl2aXNpYmxlIG91dHNpZGUgdGhlIFBST0MsIHNvIHRoYXQgZmZpX2Nsb3N1cmVfVEhJU0NBTEwgY2FuIHNlZSBpdC4KKworMjAxMi0wMy0xOSAgQWxhbiBIb3VyaWhhbmUgIDxhbGFuaEBmYWlybGl0ZS5jby51az4KKworCSogc3JjL202OGsvZmZpLmM6IEFkZCBNSU5UIHN1cHBvcnQuCisJKiBzcmMvbTY4ay9zeXN2LlM6IERpdHRvLgorCisyMDEyLTAzLTE5ICBjaGVubmFtICA8Y3NpdEBheHdheS5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBGaXggQUlYIGNsb3N1cmUKKwlzdXBwb3J0LgorCisyMDEyLTA0LTAyICBQZXRlciBCZXJnbmVyICA8YmVyZ25lckB2bmV0LmlibS5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaS5jIChmZmlfcHJlcF9hcmdzX1NZU1YpOiBEZWNsYXJlIGRvdWJsZV90bXAuCisJU2lsZW5jZSBjYXN0aW5nIHBvaW50ZXIgdG8gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZSB3YXJuaW5nLgorCURlbGV0ZSBnb3RvIHRvIHByZXZpb3VzbHkgZGVsZXRlZCBsYWJlbC4KKwkoZmZpX2NhbGwpOiBTaWxlbmNlIHBvc3NpYmx5IHVuZGVmaW5lZCB3YXJuaW5nLgorCShmZmlfY2xvc3VyZV9oZWxwZXJfU1lTVik6IERlY2xhcmUgdmFyaWFibGUgdHlwZS4KKworMjAxMi0wMy0xMyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CisKKwkqIHNyYy9zaC9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEb24ndCBBU1NFUlQgQUJJIHRlc3QsCisJanVzdCByZXR1cm4gRkZJX0JBRF9BQkkgd2hlbiB0aGluZ3MgYXJlIHdyb25nLgorCSogc3JjL3NoNjQvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisKKzIwMTItMDMtMDkgIERhdmlkIEVkZWxzb2huICA8ZGplLmdjY0BnbWFpbC5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgKGZmaV9jbG9zdXJlX0FTTSk6IEFkanVzdCBmb3IgRGFyd2luNjQKKwljaGFuZ2UgdG8gcmV0dXJuIHZhbHVlIG9mIGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4gYW5kIGxvYWQgdHlwZQorCWZyb20gcmV0dXJuIHR5cGUuCisKKzIwMTItMDMtMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogc3JjL3g4Ni9mZmk2NC5jIChmZmlfY2FsbCk6IENhc3QgdGhlIHJldHVybiB2YWx1ZSB0byB1bnNpZ25lZAorCWxvbmcuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQ2FzdCB0byA2NGJpdCBhZGRyZXNzIGluIHRyYW1wb2xpbmUuCisJKGZmaV9jbG9zdXJlX3VuaXg2NF9pbm5lcik6IENhc3QgcmV0dXJuIHBvaW50ZXIgdG8gdW5zaWduZWQgbG9uZworCWZpcnN0LgorCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChGRklfU0laRU9GX0FSRyk6IERlZmluZWQgdG8gOCBmb3IgeDMyLgorCShmZmlfYXJnKTogU2V0IHRvIHVuc2lnbmVkIGxvbmcgbG9uZyBmb3IgeDMyLgorCShmZmlfc2FyZyk6IFNldCB0byBsb25nIGxvbmcgZm9yIHgzMi4KKworMjAxMi0wMy0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmX2NvcmUpOiBQcm9wZXJseSBjaGVjayBiYWQgQUJJLgorCisyMDEyLTAzLTAzICBBbmRvbmkgTW9yYWxlcyBBbGFzdHJ1ZXkgIDx5bGF0dXlhQGdtYWlsLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgLW5vLXVuZGVmaW5lZCBmb3IgYm90aCAzMi0gYW5kIDY0LWJpdCB4ODYKKwl3aW5kb3dzLWxpa2UgaG9zdHMuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTItMDItMjcgIE1pa2FlbCBQZXR0ZXJzc29uICA8bWlrcGVAaXQudXUuc2U+CisKKwlQUiBsaWJmZmkvNTIyMjMKKwkqIE1ha2VmaWxlLmFtIChGTEFHU19UT19QQVNTKTogRGVmaW5lLgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisKKzIwMTItMDItMjMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjLyovZmZpdGFyZ2V0Lmg6IEVuc3VyZSB0aGF0IHVzZXJzIG5ldmVyIGluY2x1ZGUgZmZpdGFyZ2V0LmgKKwlkaXJlY3RseS4KKworMjAxMi0wMi0yMyAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwlQUiBsaWJmZmkvNTIyMjEKKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCk6IE5ldworCXByb3RvdHlwZS4KKwkoZmZpX3ByZXBfcmF3X2Nsb3N1cmVfbG9jKTogVXNlIGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBmb3IKKwl0aGlzY2FsbC1jb252ZW50aW9uLgorCShmZmlfcmF3X2NhbGwpOiBVc2UgZmZpX3ByZXBfYXJnc19yYXcuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCk6IEFkZAorCWltcGxlbWVudGF0aW9uIGZvciBzdHViLgorCisyMDEyLTAyLTEwICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCSogY29uZmlndXJlLmFjIChBTV9MVExERkxBR1MpOiBBZGQgLW5vLXVuZGVmaW5lIGZvciB4NjQKKwl3aW5kb3dzIHRhcmdldC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCisKKzIwMTItMDItMDggIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmKTogQWxsb3cgZm9yIFg4Nl9XSU4zMgorCWFsc28gRkZJX1RISVNDQUxMLgorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX2Nsb3N1cmVfVEhJU0NBTEwpOiBBZGQgcHJvdG90eXBlLgorCShGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMKTogTmV3IHRyYW1wb2xpbmUgY29kZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBBZGQgRkZJX1RISVNDQUxMIHN1cHBvcnQuCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChGRklfVFJBTVBPTElORV9TSVpFKTogQWRqdXN0IHNpemUuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX1RISVNDQUxMKTogTmV3IGNsb3N1cmUgY29kZQorCWZvciB0aGlzY2FsbC1jYWxsaW5nIGNvbnZlbnRpb24uCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jOiBOZXcgdGVzdC4KKworMjAxMi0wMS0yOCAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwkqIHNyYy9saWJmZmkvc3JjL3g4Ni9mZmkuYyAoZmZpX2NhbGxfd2luMzIpOiBBZGQgbmV3CisJYXJndW1lbnQgdG8gcHJvdG90eXBlIGZvciBzcGVjaWZ5IGNhbGxpbmctY29udmVudGlvbi4KKwkoZmZpX2NhbGwpOiBBZGQgc3VwcG9ydCBmb3Igc3RkY2FsbC90aGlzY2FsbCBjb252ZW50aW9uLgorCShmZmlfcHJlcF9hcmdzKTogTGlrZXdpc2UuCisJKGZmaV9yYXdfY2FsbCk6IExpa2V3aXNlLgorCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IEFkZCBGRklfVEhJU0NBTEwgYW5kCisJRkZJX0ZBU1RDQUxMLgorCSogc3JjL3g4Ni93aW4zMi5TIChfZmZpX2NhbGxfd2luMzIpOiBBZGQgc3VwcG9ydCBmb3IKKwlmYXN0Y2FsbC90aGlzY2FsbCBjYWxsaW5nLWNvbnZlbnRpb24gY2FsbHMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYzogTmV3IHRlc3QuCisKKzIwMTItMDEtMjMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CisKKwkqIHNyYy9hbHBoYS9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBDaGVjayBmb3IgYmFkIEFCSS4KKworMjAxMi0wMS0yMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCSAgICBDaHJpcyBZb3VuZyAgPGNkeW91bmdAbnRsd29ybGQuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBBbWlnYSBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDEyLTAxLTIzICBEbWl0cnkgTmFkZXpoaW4gIDxkbWl0cnkubmFkZXpoaW5AZ21haWwuY29tPgorCisJKiBpbmNsdWRlL2ZmaV9jb21tb24uaCAoTElLRUxZLCBVTkxJS0VMWSk6IEZpeCBkZWZpbml0aW9ucy4KKworMjAxMi0wMS0yMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAbGludXgtbTY4ay5vcmc+CisKKwkqIHNyYy9tNjhrL3N5c3YuUyAoZmZpX2NhbGxfU1lTVik6IFByb3Blcmx5IHRlc3QgZm9yIHBsYWluCisJbWM2ODAwMC4gIFRlc3QgZm9yIF9fSEFWRV82ODg4MV9fIGluIGFkZGl0aW9uIHRvIF9fTUM2ODg4MV9fLgorCisyMDEyLTAxLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIHJ0bC1vcHRpbWl6YXRpb24vNDg0OTYKKwkqIHNyYy9pYTY0L2ZmaS5jIChmZmlfY2FsbCk6IEZpeCB1cCBhbGlhc2luZyB2aW9sYXRpb25zLgorCisyMDEyLTAxLTA5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogY29uZmlndXJlLmFjIChpPzg2LSotKik6IFNldCBUQVJHRVQgdG8gWDg2XzY0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDExLTEyLTA3ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBjYXZpdW0uY29tPgorCisJUFIgbGliZmZpLzUwMDUxCisJKiBzcmMvbWlwcy9uMzIuUzogQWRkICIuc2V0IG1pcHM0Ii4KKworMjAxMS0xMS0yMSAgQW5kcmVhcyBUb2JsZXIgIDxhbmRyZWFzdEBmZ3puZXQuY2g+CisKKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMS0xMS0xMiAgRGF2aWQgR2lsYmVydCA8ZGF2aWQuZ2lsYmVydEBsaW5hcm8ub3JnPgorCisJKiBkb2MvbGliZmZpLnRleGksIGluY2x1ZGUvZmZpLmguaW4sIGluY2x1ZGUvZmZpX2NvbW1vbi5oLAorCW1hbi9NYWtlZmlsZS5hbSwgbWFuL2ZmaS4zLCBtYW4vZmZpX3ByZXBfY2lmLjMsCisJbWFuL2ZmaV9wcmVwX2NpZl92YXIuMywgc3JjL2FybS9mZmkuYywgc3JjL2FybS9mZml0YXJnZXQuaCwKKwlzcmMvY3Jpcy9mZmkuYywgc3JjL3ByZXBfY2lmLmMsCisJdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYywKKwl0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYywKKwl0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYzogTWFueSBjaGFuZ2VzIHRvIHN1cHBvcnQgdmFyaWFkaWMKKwlmdW5jdGlvbiBjYWxscy4KKworMjAxMS0xMS0xMiAgS3lsZSBNb2ZmZXR0IDxLeWxlLkQuTW9mZmV0dEBib2VpbmcuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmkuYywgc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgsCisJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUywgc3JjL3Bvd2VycGMvc3lzdi5TOiBNYW55IGNoYW5nZXMgZm9yCisJc29mdGZsb2F0IHBvd2VycGMgdmFyaWFudHMuCisKKzIwMTEtMTEtMTIgIFBldHIgU2FsaW5nZXIgPFBldHIuU2FsaW5nZXJAc2V6bmFtLmN6PgorCisJKiBjb25maWd1cmUuYWMgKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUpOiBGaXgga2ZyZWVic2Qgc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0xMS0xMiAgVGltb3RoeSBXYWxsICA8dHdhbGxAdXNlcnMuc2YubmV0PgorCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfcHJlcF9hcmdzLCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YpOiBNYXgKKwlhbGlnbm1lbnQgb2YgNCBmb3Igd2luY2Ugb24gQVJNLgorCisyMDExLTExLTEyICBLeWxlIE1vZmZldHQgPEt5bGUuRC5Nb2ZmZXR0QGJvZWluZy5jb20+CisJICAgIEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvcHBjL3N5c3YuUywgc3JjL3BwYy9mZmkuYzogUmVtb3ZlIHVzZSBvZiBwcGMgc3RyaW5nCisJaW5zdHJ1Y3Rpb25zIChub3QgYXZhaWxhYmxlIG9uIHNvbWUgY29yZXMsIGxpa2UgdGhlIFBQQzQ0MCkuCisKKzIwMTEtMTEtMTIgIEtpbXVyYSBXYXRhcnUgIDxraW11cmF3QGkubmlmdHkuanA+CisKKwkqIG00L2F4X2VuYWJsZV9idWlsZGRpcjogQ2hhbmdlIGZyb20gc3RyaW5nIGNvbXBhcmlzb24gdG8gbnVtZXJpYworCWNvbXBhcmlzb24gZm9yIHdjIG91dHB1dC4KKwkqIGNvbmZpZ3VyZS5hYzogRW5hYmxlIEZGSV9NTUFQX0VYRUNfV1JJVCBmb3IgZGFyd2luMTEgYWthIE1hYyBPUworCVggMTAuNy4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0xMS0xMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoQU1fQ0NBU0ZMQUdTKTogQWRkIC1nIG9wdGlvbiB0byBidWlsZCBhc3NlbWJseQorCWZpbGVzIHdpdGggZGVidWcgaW5mby4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDExLTExLTEyICBKYXNwZXIgTGlldmlzc2UgQWRyaWFhbnNlIDxqYXNwZXJAb3BlbmJzZC5vcmc+CisKKwkqIFJFQURNRTogVXBkYXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIE9wZW5CU0Qgc3lzdGVtcy4KKworMjAxMS0xMS0xMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBsaWJ0b29sLXZlcnNpb246IFVwZGF0ZS4KKwkqIE1ha2VmaWxlLmFtIChub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpOiBBZGQgc3JjL2RlYnVnLmMgaWYKKwlGRklfREVCVUcuCisJKGxpYmZmaV9sYV9TT1VSQ0VTKTogUmVtb3ZlIHNyYy9kZWJ1Zy5jCisJKEVYVFJBX0RJU1QpOiBBZGQgc3JjL2RlYnVnLmMKKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCSogUkVBRE1FOiBVcGRhdGUgZm9yIDMuMC4xMS4KKworMjAxMS0xMS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KKworCSogY29uZmlndXJlLmFjIChHQ0NfQVNfQ0ZJX1BTRVVET19PUCk6IFVzZSBpdCBpbnN0ZWFkIG9mIGlubGluZSBjaGVjay4KKwkqIGNvbmZpZ3VyZSwgYWNsb2NhbC5tNDogUmVidWlsZC4KKworMjAxMS0wOS0wNCAgSWFpbiBTYW5kb2UgIDxpYWluc0BnY2MuZ251Lm9yZz4KKworCVBSIGxpYmZmaS80OTU5NAorCSogc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyAoc3R1YnMpOiBNYWtlIHRoZSBzdHViIGJpbmRpbmcKKwloZWxwZXIgcmVmZXJlbmNlIHRyYWNrIHRoZSBhcmNoaXRlY3R1cmUgcG9pbnRlciBzaXplLgorCisyMDExLTA4LTI1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KKworCSogc3JjL2FybS9mZmkuYyAoRkZJX0lOSVRfVFJBTVBPTElORSk6IFJlbW92ZSBoYXJkLWNvZGVkIGFzc2VtYmx5CisJaW5zdHJ1Y3Rpb25zLgorCSogc3JjL2FybS9zeXN2LlMgKGZmaV9hcm1fdHJhbXBvbGluZSk6IFB1dCB0aGVtIGhlcmUgaW5zdGVhZC4KKworMjAxMS0wNy0xMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CisKKyAgICAgICAgKiBzcmMvYXJtL2ZmaS5jIChGRklfSU5JVF9UUkFNUE9MSU5FKTogQ2xlYXIgaWNhY2hlLgorCisyMDExLTA2LTI5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYzogTW92ZSBQUiBudW1iZXIgdG8gY29tbWVudC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jOiBMaWtld2lzZS4KKworMjAxMS0wNi0yOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwlQUiBsaWJmZmkvNDY2NjAKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmM6IHhmYWlsIGRnLW91dHB1dCBvbgorCW1pcHMtc2dpLWlyaXg2Ki4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jOiBMaWtld2lzZS4KKworMjAxMS0wNi0xNCAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jICh0ZXN0X2xhcmdlX2ZuKTogVXNlIFBSSXU4LAorCVBSSWQ4IGluc3RlYWQgb2YgJWhodSwgJWhoZC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmggW19fYWxwaGFfXyAmJiBfX29zZl9fXSAoUFJJZDgsCisJUFJJdTgpOiBEZWZpbmUuCisJW19fc2dpX19dIChQUklkOCwgUFJJdTgpOiBEZWZpbmUuCisKKzIwMTEtMDQtMjkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBzcmMvYWxwaGEvb3NmLlMgKFVBX1NJLCBGREVfRU5DT0RJTkcsIEZERV9FTkNPREUsIEZERV9BUkFOR0UpOgorCURlZmluZS4KKwlVc2UgdGhlbSB0byBoYW5kbGUgRUxGIHZzLiBFQ09GRiBkaWZmZXJlbmNlcy4KKwlbX19vc2ZfX10gKF9HTE9CQUxfX0ZfZmZpX2NhbGxfb3NmKTogRGVmaW5lLgorCisyMDExLTAzLTMwICBUaW1vdGh5IFdhbGwgIDx0d2FsbEB1c2Vycy5zZi5uZXQ+CisKKwkqIHNyYy9wb3dlcnBjL2Rhcndpbi5TOiBGaXggdW5rbm93biBGREUgZW5jb2RpbmcuCisJKiBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TOiBkaXR0by4KKworMjAxMS0wMi0yNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBBbGxvdyBmb3IgbW9yZQorCTMyLWJpdCBBQklzLgorCisyMDExLTAyLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIG00L2F4X2NjX21heG9wdC5tNDogRG9uJ3QgLW1hbGlnbi1kb3VibGUgb3IgdXNlIC1mZmFzdC1tYXRoLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDExLTAyLTEzICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgorCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTEtMDItMTMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogaW5jbHVkZS9mZmlfY29tbW9uLmggKFVOTElLRUxZLCBMSUtFTFkpOiBEZWZpbmUuCisJKiBzcmMveDg2L2ZmaTY0LmMgKFVOTElLRUxZLCBMSUtFTFkpOiBSZW1vdmUgZGVmaW5pdGlvbi4KKwkqIHNyYy9wcmVwX2NpZi5jIChVTkxJS0VMWSwgTElLRUxZKTogUmVtb3ZlIGRlZmluaXRpb24uCisKKwkqIHNyYy9wcmVwX2NpZi5jIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSk6IENvbnZlcnQgYXNzZXJ0aW9uIGludG8KKwlGRklfQkFEX1RZUEVERUYgcmV0dXJuLiAgSW5pdGlhbGl6ZSBhcmcgc2l6ZSBhbmQgYWxpZ25tZW50IHRvIDAuCisKKwkqIHNyYy9wYS9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEb24ndCBBU1NFUlQgQUJJIHRlc3QsCisJanVzdCByZXR1cm4gRkZJX0JBRF9BQkkgd2hlbiB0aGluZ3MgYXJlIHdyb25nLgorCSogc3JjL2FybS9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9wb3dlcnBjL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCSogc3JjL21pcHMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvaWE2NC9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9hdnIzMi9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKworMjAxMS0wMi0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvc3BhcmMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRG9uJ3QgQVNTRVJUIEFCSSB0ZXN0LAorCWp1c3QgcmV0dXJuIEZGSV9CQURfQUJJIHdoZW4gdGhpbmdzIGFyZSB3cm9uZy4KKworMjAxMi0wMi0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KKworCSogc3JjL3NwYXJjL3Y5LlMgKFNUQUNLRlJBTUUpOiBCdW1wIHRvIDE3Ni4KKworMjAxMS0wMi0wOSAgU3R1YXJ0IFNoZWx0b24gIDxzcmNzaGVsdG9uQGdtYWlsLmNvbT4KKworCWh0dHA6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTI4NjkxMQorCSogc3JjL21pcHMvZmZpdGFyZ2V0Lmg6IENsZWFuIHVwIGVycm9yIG1lc3NhZ2VzLgorCSogc3JjL2phdmFfcmF3X2FwaS5jIChmZmlfamF2YV90cmFuc2xhdGVfYXJncyk6IENhc3QgcmF3IGFyZyB0bworCWZmaV9yYXcqLgorCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIHByYWdtYSBmb3IgU0dJIGNvbXBpbGVyLgorCisyMDExLTAyLTA5ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIHBvd2VycGM2NC0qLWRhcndpbiogc3VwcG9ydC4KKworMjAxMS0wMi0wOSAgQW50aG9ueSBHcmVlbiA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIFJFQURNRTogTWVudGlvbiBJbnRlcml4LgorCisyMDExLTAyLTA5ICBKb25hdGhhbiBDYWxsZW4gIDxhYmNkQGdlbnRvby5vcmc+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIEludGVyaXggdG8gd2luMzIvY3lnd2luL21pbmd3IGNhc2UuCisJKiBjb25maWd1cmU6IERpdHRvLgorCSogc3JjL2Nsb3N1cmVzLmM6IFRyZWF0IEludGVyaXggbGlrZSBDeWd3aW4sIGluc3RlYWQgb2YgYXMgYQorCWdlbmVyaWMgd2luMzIuCisKKzIwMTEtMDItMDkgIEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmM6IFJlbW92ZSB4ZmFpbC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jOiBSZW1vdmUgeGZhaWwuCisJKiBzcmMveDg2L2ZmaTY0LmMgKFVOTElLRUxZLCBMSUtFTFkpOiBEZWZpbmUuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQ2hlY2sgZm9yIGJhZCBBQkkuCisJKiBzcmMvcHJlcF9jaWYuYyAoVU5MSUtFTFksIExJS0VMWSk6IERlZmluZS4KKwkoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUpOiBDaGVjayBmb3IgYmFkIHR5cGVzLgorCisyMDExLTAyLTA5ICBMYW5kb24gRnVsbGVyIDxsYW5kb25mQHBsYXVzaWJsZS5jb29wPgorCisJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBidWlsZC1pb3Muc2gsIHNyYy9hcm0vZ2VudHJhbXAuc2gsCisJc3JjL2FybS90cmFtcG9saW5lLlMuCisJKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyk6IEFkZCBzcmMvYXJjL3RyYW1wb2xpbmUuUy4KKwkqIGNvbmZpZ3VyZS5hYyAoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSk6IERlZmluZS4KKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV90cmFtcG9saW5lX3RhYmxlKQorCShmZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UsIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5KQorCShGRklfVFJBTVBPTElORV9DT0RFTE9DX0NPTkZJRywgRkZJX1RSQU1QT0xJTkVfQ09ORklHX1BBR0VfT0ZGU0VUKQorCShGRklfVFJBTVBPTElORV9DT1VOVCwgZmZpX3RyYW1wb2xpbmVfbG9jaywgZmZpX3RyYW1wb2xpbmVfdGFibGVzKQorCShmZmlfdHJhbXBvbGluZV90YWJsZV9hbGxvYywgZmZpX2Nsb3N1cmVfYWxsb2MsIGZmaV9jbG9zdXJlX2ZyZWUpOgorCURlZmluZSBmb3IgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSBjYXNlIChpT1MpLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEhhbmRsIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgY2FzZQorCXNlcGFyYXRlbHkuCisJKiBzcmMvYXJtL3N5c3YuUzogSGFuZGxlIEFwcGxlIGlPUyBob3N0LgorCSogc3JjL2Nsb3N1cmVzLmM6IEhhbmRsZSBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFIGNhc2UuCisJKiBidWlsZC1pb3Muc2g6IE5ldyBmaWxlLgorCSogZmZpY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW46IFJlYnVpbHQuCisJKiBSRUFETUU6IE1lbnRpb24gQVJNIGlPUy4KKworMjAxMS0wMi0wOCAgT3JlbiBIZWxkICA8b3JlbmhlQGlsLmlibS5jb20+CisKKwkqIHNyYy9kbG1hbGxvYy5jIChfU1RSVUNUX01BTExJTkZPKTogRGVmaW5lIGluIG9yZGVyIHRvIGF2b2lkCisJcmVkZWZpbml0aW9uIG9mIG1hbGxpbmZvIG9uIEhQLVVYLgorCisyMDExLTAyLTA4ICBHaW5uIENoZW4gIDxnaW5uLmNoZW5Ab3JhY2xlLmNvbT4KKworCSogc3JjL3NwYXJjL2ZmaS5jIChmZmlfY2FsbCk6IE1ha2UgY29tcGF0aWJsZSB3aXRoIFNvbGFyaXMgU3R1ZGlvCisJYWdncmVnYXRlIHJldHVybiBBQkkuICBGbHVzaCBjYWNoZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBGbHVzaCBjYWNoZS4KKworMjAxMS0wMi0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJRnJvbSBUb20gSG9uZXJtYW5uIDx0b20uaG9uZXJtYW5uQG9yYWNsZS5jb20+OgorCSogc3JjL3Bvd2VycGMvYWl4LlMgKGZmaV9jYWxsX0FJWCk6IFN1cHBvcnQgZm9yIHhsYyB0b29sY2hhaW4gb24KKwlBSVguICBEZWNsYXJlIC5mZmlfcHJlcF9hcmdzLiAgSW5zZXJ0IG5vcHMgYWZ0ZXIgYnJhbmNoCisJaW5zdHJ1Y3Rpb25zIHNvIHRoYXQgdGhlIEFJWCBsaW5rZXIgY2FuIGluc2VydCBUT0MgcmVsb2FkCisJaW5zdHJ1Y3Rpb25zLgorCSogc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUzogRGVjbGFyZSAuZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTi4KKworMjAxMS0wMi0wOCAgRWQgIDxlZEBrZHRjLm5ldD4KKworCSogc3JjL3Bvd2VycGMvYXNtLmg6IEZpeCBncmFtbWFyIG5pdCBpbiBjb21tZW50LgorCisyMDExLTAyLTA4ICBVbGkgTGluayAgPHVsLm1jYW1hZmlhQGxpbmtpdHVwLmRlPgorCisJKiBpbmNsdWRlL2ZmaS5oLmluIChGRklfNjRfQklUX01BWCk6IERlZmluZSBhbmQgdXNlLgorCisyMDExLTAyLTA5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCVBSIGxpYmZmaS80NjY2MQorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgKG1haW4pOiBDYXN0IHZvaWQgKiB0bworCXVpbnRwdHJfdCBmaXJzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIChtYWluKTogTGlrZXdpc2UuCisKKzIwMTEtMDItMDggIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxyZXNwaW5kb2xhQG1vemlsbGEuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEZpeCB4ODYgdGVzdCBmb3IgcGMgcmVsYXRlZCByZWxvY3MuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMDItMDcgIEpvZWwgU2hlcnJpbGwgPGpvZWwuc2hlcnJpbGxAb2FyY29ycC5jb20+CisKKwkqIGxpYmZmaS9zcmMvbTY4ay9mZmkuYzogQWRkIFJURU1TIHN1cHBvcnQgZm9yIGNhY2hlIGZsdXNoaW5nLgorCUhhbmRsZSBjYXNlIHdoZW4gQ1BVIHZhcmlhbnQgZG9lcyBub3QgaGF2ZSBsb25nIGRvdWJsZSBzdXBwb3J0LgorCSogbGliZmZpL3NyYy9tNjhrL3N5c3YuUzogQWRkIHN1cHBvcnQgZm9yIG1jNjgwMDAsIENvbGRmaXJlLAorCWFuZCBjb3JlcyB3aXRoIHNvZnQgZmxvYXRpbmcgcG9pbnQuCisKKzIwMTEtMDItMDcgIEpvZWwgU2hlcnJpbGwgPGpvZWwuc2hlcnJpbGxAb2FyY29ycC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIG1pcHMqLSotcnRlbXMqIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBzcmMvbWlwcy9mZml0YXJnZXQuaDogRW5zdXJlIG5lZWRlZCBjb25zdGFudHMgYXJlIGF2YWlsYWJsZQorCWZvciB0YXJnZXRzIHdoaWNoIGRvIG5vdCBoYXZlIHNnaWRlZnMuaC4KKworMjAxMS0wMS0yNiAgRGF2ZSBLb3JuICA8ZGF2ZS5rb3JuLmN5Z3dpbkBnbWFpbC5jb20+CisKKwlQUiB0YXJnZXQvNDAxMjUKKwkqIGNvbmZpZ3VyZS5hYyAoQU1fTFRMREZMQUdTKTogQWRkIC1iaW5kaXIgb3B0aW9uIGZvciB3aW5kb3dzIERMTHMuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTAtMTItMTggIElhaW4gU2FuZG9lICA8aWFpbnNAZ2NjLmdudS5vcmc+CisKKwlQUiBsaWJmZmkvMjkxNTIKKwlQUiBsaWJmZmkvNDIzNzgKKwkqIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlM6IFByb3ZpZGUgRGFyd2luNjQgaW1wbGVtZW50YXRpb24sCisJdXBkYXRlIGNvbW1lbnRzLgorCSogc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmggKFBPV0VSUENfREFSV0lONjQpOiBOZXcsCisJKEZGSV9UUkFNUE9MSU5FX1NJWkUpOiBVcGRhdGUgZm9yIERhcndpbjY0LgorCSogc3JjL3Bvd2VycGMvZGFyd2luLlM6IFByb3ZpZGUgRGFyd2luNjQgaW1wbGVtZW50YXRpb24sCisJdXBkYXRlIGNvbW1lbnRzLgorCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jOiBMaWtld2lzZS4KKworMjAxMC0xMi0wNiAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAobGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCk6IFVzZSBkb3VibGUKKwliYWNrc2xhc2hlcy4KKwkobGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3ApOiBMaWtld2lzZS4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMC0xMi0wMyAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogc3JjL2FybS9zeXN2LlMgKGZmaV9jbG9zdXJlX1NZU1YpOiBBZGQgVU5XSU5EIHRvIC5wYWQgZGlyZWN0aXZlLgorCShmZmlfY2xvc3VyZV9WRlApOiBTYW1lLgorCShmZmlfY2FsbF9WRlApOiBNb3ZlIGRvd24gdG8gYmVmb3JlIGZmaV9jbG9zdXJlX1ZGUC4gQWRkICcuZnB1IHZmcCcKKwlkaXJlY3RpdmUuCisKKzIwMTAtMTItMDEgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIFtfX3NnaV0gKFBSSWQ2NCwgUFJJdTY0KTogRGVmaW5lLgorCShQUkl1UFRSKTogRGVmaW5lLgorCisyMDEwLTExLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgorCSAgICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogc3JjL3g4Ni9zeXN2LlMgKEZERV9FTkNPRElORywgRkRFX0VOQ09ERSk6IERlZmluZS4KKwkoLmVoX2ZyYW1lKTogVXNlIEZERV9FTkNPRElORy4KKwkoLkxBU0ZERTEsIC5MQVNGREUyLCBMQVNGREUzKTogU2ltcGxpZnkgd2l0aCBGREVfRU5DT0RFLgorCisyMDEwLTExLTIyICBKYWNlayBDYWJhbiA8amFjZWtAY29kZXdlYXZlcnMuY29tPgorCisJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBzeW1ib2wgdW5kZXJzY29yZXMgb24gbWluZ3ctdzY0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCSogc3JjL3g4Ni93aW42NC5TOiBDb3JyZWN0bHkgYWNjZXNzIGV4dGVybiBzeW1ib2xzIGluIHJlc3BlY3QgdG8KKwl1bmRlcnNjb3Jlcy4KKworMjAxMC0xMS0xNSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cDogUmVuYW1lIC4uLgorCSogdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwOiAuLi4gdG8gdGhpcy4KKwkqIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHA6IERvbid0IGxvYWQgbGliZmZpLWRnLmV4cC4KKwkqIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHA6IExpa2V3aXNlLgorCisyMDEwLTEwLTI4ICBDaHVuZy1MaW4gVGFuZyAgPGNsdGFuZ0Bjb2Rlc291cmNlcnkuY29tPgorCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfcHJlcF9hcmdzKTogQWRkIFZGUCByZWdpc3RlciBhcmd1bWVudCBoYW5kbGluZworCWNvZGUsIG5ldyBwYXJhbWV0ZXIsIGFuZCByZXR1cm4gdmFsdWUuIFVwZGF0ZSBjb21tZW50cy4KKwkoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBBZGQgY2FzZSBmb3IgVkZQIHN0cnVjdCByZXR1cm4gdmFsdWVzLiBBZGQKKwljYWxsIHRvIGxheW91dF92ZnBfYXJncygpLgorCShmZmlfY2FsbF9TWVNWKTogVXBkYXRlIGRlY2xhcmF0aW9uLgorCShmZmlfY2FsbF9WRlApOiBOZXcgZGVjbGFyYXRpb24uCisJKGZmaV9jYWxsKTogQWRkIFZGUCBzdHJ1Y3QgcmV0dXJuIGNvbmRpdGlvbnMuIENhbGwgZmZpX2NhbGxfVkZQKCkKKwl3aGVuIEFCSSBpcyBGRklfVkZQLgorCShmZmlfY2xvc3VyZV9WRlApOiBOZXcgZGVjbGFyYXRpb24uCisJKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpOiBBZGQgbmV3IHZmcF9hcmdzIHBhcmFtZXRlciwgdXBkYXRlIGNhbGwgdG8KKwlmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoKS4KKwkoZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKTogVXBkYXRlIHBhcmFtZXRlcnMuIEFkZCBWRlAgYXJndW1lbnQKKwljYXNlIGhhbmRsaW5nLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IFBhc3MgZmZpX2Nsb3N1cmVfVkZQIHRvIHRyYW1wb2xpbmUKKwljb25zdHJ1Y3Rpb24gdW5kZXIgVkZQIGhhcmQtZmxvYXQuCisJKHJlY192ZnBfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgorCSh2ZnBfdHlwZV9wKTogU2FtZS4KKwkocGxhY2VfdmZwX2FyZyk6IFNhbWUuCisJKGxheW91dF92ZnBfYXJncyk6IFNhbWUuCisJKiBzcmMvYXJtL2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQWRkIEZGSV9WRlAuIERlZmluZSBGRklfREVGQVVMVF9BQkkKKwliYXNlZCBvbiBfX0FSTV9QQ1NfVkZQLgorCShGRklfRVhUUkFfQ0lGX0ZJRUxEUyk6IERlZmluZSBmb3IgYWRkaW5nIFZGUCBoYXJkLWZsb2F0IHNwZWNpZmljCisJZmllbGRzLgorCShGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUKTogRGVmaW5lIGludGVybmFsbHkgdXNlZCB0eXBlIGNvZGUuCisJKEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFKTogU2FtZS4KKwkqIHNyYy9hcm0vc3lzdi5TIChmZmlfY2FsbF9TWVNWKTogQ2hhbmdlIGNhbGwgb2YgZmZpX3ByZXBfYXJncygpIHRvCisJZGlyZWN0IGNhbGwuIE1vdmUgZnVuY3Rpb24gcG9pbnRlciBsb2FkIHVwd2FyZHMuCisJKGZmaV9jYWxsX1ZGUCk6IE5ldyBmdW5jdGlvbi4KKwkoZmZpX2Nsb3N1cmVfVkZQKTogU2FtZS4KKworCSogdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwIChjaGVjay1mbGFncyk6IE5ldyBmdW5jdGlvbi4KKwkoZGctc2tpcC1pZik6IE5ldyBmdW5jdGlvbi4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmM6IFNraXAgaWYgdGFyZ2V0IGlzIGFybSotKi0qCisJYW5kIGNvbXBpbGVyIG9wdGlvbnMgaW5jbHVkZSAtbWZsb2F0LWFiaT1oYXJkLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmM6IFNhbWUuCisKKzIwMTAtMTAtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgbGliZmZpLzQ1Njc3CisJKiBzcmMveDg2L2ZmaTY0LmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogRW5zdXJlIGNpZi0+Ynl0ZXMgaXMKKwlhIG11bHRpcGxlIG9mIDguCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYzogTmV3IHRlc3QuCisKKzIwMTAtMDgtMjAgIE1hcmsgV2llbGFhcmQgIDxtandAcmVkaGF0LmNvbT4KKworCSogc3JjL2Nsb3N1cmVzLmMgKG9wZW5fdGVtcF9leGVjX2ZpbGVfbW50KTogQ2hlY2sgaWYgZ2V0bW50ZW50X3IKKwlyZXR1cm5zIE5VTEwuCisKKzIwMTAtMDgtMDkgIEFuZHJlYXMgVG9ibGVyICA8YW5kcmVhc3RAZmd6bmV0LmNoPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCB0YXJnZXQgcG93ZXJwYzY0LSotZnJlZWJzZCouCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYzogUGFzcworCS1tbG9uZy1kb3VibGUtMTI4IG9ubHkgdG8gbGludXggdGFyZ2V0cy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYzogTGlrZXdpc2UuCisKKzIwMTAtMDgtMDUgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworICAgICAgICAqIE1ha2VmaWxlLmFtOiBQYXNzIEZGSV9ERUJVRyBkZWZpbmUgdG8gbXN2Y2Muc2ggZm9yIGxpbmtpbmcgdG8gdGhlCisgICAgICAgIGRlYnVnIENSVCB3aGVuIC0tZW5hYmxlLWRlYnVnIGlzIGdpdmVuLgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzogRGVmaW5lIGl0LgorICAgICAgICAqIG1zdmNjLnNoOiBUcmFuc2xhdGUgLWcgYW5kIC1ERkZJX0RFQlVHIGFwcHJvcHJpYXRlbHkuCisKKzIwMTAtMDgtMDQgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaDogQWRkIFg4Nl9BTlkgZGVmaW5lIGZvciBhbGwgeDg2L3g4Nl82NAorCXBsYXRmb3Jtcy4KKwkqIHNyYy94ODYvZmZpLmM6IFJlbW92ZSByZWR1bmRhbnQgaWZkZWYgY2hlY2tzLgorCSogc3JjL3ByZXBfY2lmLmM6IFB1c2ggc3RhY2sgc3BhY2UgY29tcHV0YXRpb24gaW50byBzcmMveDg2L2ZmaS5jCisJZm9yIFg4Nl9BTlkgc28gcmV0dXJuIHZhbHVlIHNwYWNlIGRvZXNuJ3QgZ2V0IGFkZGVkIHR3aWNlLgorCisyMDEwLTA4LTAzICBOZWlsIFJhc2hicm9va2UgPG5laWxAcGFya3dheWNjLmNvLnVrPgorCisJKiBtc3ZjYy5zaDogRG9uJ3QgcGFzcyAtc2FmZXNlaCB0byBtbDY0IGJlY2F1c2UgYmVoYXZpb3IgaXMgYnVnZ3kuCisKKzIwMTAtMDctMjIgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogc3JjLyovZmZpdGFyZ2V0Lmg6IE1ha2UgRkZJX0xBU1RfQUJJIG9uZSBwYXN0IHRoZSBsYXN0IHZhbGlkIEFCSS4KKwkqIHNyYy9wcmVwX2NpZi5jOiBGaXggQUJJIGFzc2VydGlvbi4KKyAgICAgICAgKiBzcmMvY3Jpcy9mZmkuYzogRGl0dG8uCisKKzIwMTAtMDctMTAgIEV2YW4gUGhvZW5peCAgPGV2YW5AZmFsbGluZ3Nub3cubmV0PgorCisJKiBzcmMvY2xvc3VyZXMuYyAoc2VsaW51eF9lbmFibGVkX2NoZWNrKTogRml4IHN0cm5jbXAgdXNhZ2UgYnVnLgorCisyMDEwLTA3LTA3ICBEYW4gSG9yw6FrIDxkYW5AZGFubnkuY3o+CisKKwkqIGluY2x1ZGUvZmZpLmguaW46IFByb3RlY3QgI2RlZmluZSB3aXRoICNpZm5kZWYuCisJKiBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaDogRGl0dG8uCisJKiBzcmMvczM5MC9mZml0YXJnZXQuaDogRGl0dG8uCisJKiBzcmMvc3BhcmMvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCisyMDEwLTA3LTA3ICAgTmVpbCBSb2JlcnRzIDxuZWlsQGxpbnV4LmludGVsLmNvbT4KKworCSogc3JjL3g4Ni9zeXN2LlMgKGZmaV9jYWxsX1NZU1YpOiBBbGlnbiB0aGUgc3RhY2sgcG9pbnRlciB0bworCTE2LWJ5dGVzLgorCisyMDEwLTA3LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEFNX01BS0VGTEFHUyk6IFBhc3MgYWxzbyBtYW5kaXIgdG8gc3VibWFrZXMuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCisKKzIwMTAtMDUtMTkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGxpYmZmaV9jdl9hc194ODZfcGNyZWwpOiBDaGVjayBmb3IgaWxsZWdhbCBpbiBhcworCW91dHB1dCwgdG9vLgorCShsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wKTogQ2hlY2sgZm9yIC5hc2NpaS4KKwkobGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3ApOiBDaGVjayBmb3IgLnN0cmluZy4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIGZmaWNvbmZpZy5oLmluOiBSZWdlbmVyYXRlLgorCSogc3JjL3g4Ni9zeXN2LlMgKC5laF9mcmFtZSk6IFVzZSAuYXNjaWksIC5zdHJpbmcgb3IgZXJyb3IuCisKKzIwMTAtMDUtMTEgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogZG9jL2xpYmZmaS50ZXg6IERvY3VtZW50IHByZXZpb3VzIGNoYW5nZS4KKworMjAxMC0wNS0xMSAgTWFrb3RvIEthdG8gPG1fa2F0b0BnYTIuc28tbmV0Lm5lLmpwPgorCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfY2FsbCk6IERvbid0IGNvcHkgc3RydWN0cyBwYXNzZWQgYnkgdmFsdWUuCisKKzIwMTAtMDUtMDUgIE1pY2hhZWwgS29obGVyIDxtaWNoYWVsa29obGVyQGxpdmUuY29tPgorCisJKiBzcmMvZGxtYWxsb2MuYyAoZGxmcmVlKTogRml4IHNwZWxsaW5nLgorCSogc3JjL2lhNjQvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogRGl0dG8uCisJKiBjb25maWd1cmUuYWM6IERpdHRvLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDEwLTA0LTEzICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIG1zdmNjLnNoOiBCdWlsZCB3aXRoIC1XMyBpbnN0ZWFkIG9mIC1XYWxsLgorCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jOiBSZW1vdmUgYnVpbGQgd2FybmluZ3MuCisJKiBzcmMveDg2L2ZmaS5jOiBEaXR0by4KKwkqIHNyYy94ODYvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCisyMDEwLTA0LTEyICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisJICAgIFdhbHRlciBNZWlubCA8d3Vub0Bsc3Z3LmRlPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBPUy8yIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisJKiBzcmMvY2xvc3VyZXMuYzogRGl0dG8uCisJKiBzcmMvZGxtYWxsb2MuYzogRGl0dG8uCisJKiBzcmMveDg2L3dpbjMyLlM6IERpdHRvLgorCisyMDEwLTA0LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmM6IFJlbW92ZSB1bnVzZWQgYXJncyB2YXJpYWJsZS4KKworMjAxMC0wNC0wMiAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KKworCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBhY2xvY2FsLm00OiBSZWdlbmVyYXRlLgorCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIG1hbi9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKworMjAxMC0wMy0zMCAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBtc3ZjYy5zaDogRGlzYWJsZSBidWlsZCB3YXJuaW5ncy4KKwkqIFJFQURNRSAodGVzdGVkKTogQ2xhcmlmeSB3aW5kb3dzIGJ1aWxkIHByb2NlZHVyZS4KKworMjAxMC0wMy0xNSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAobGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlKTogTmV3IHRlc3QuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBmZmljb25maWcuaC5pbjogUmVnZW5lcmF0ZS4KKwkqIGxpYmZmaS9zcmMveDg2L3VuaXg2NC5TICguZWhfZnJhbWUpCisJW0hBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEVdOiBVc2UgQHVud2luZCBzZWN0aW9uIHR5cGUuCisKIDIwMTAtMDMtMTQgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0B1YnVudHUuY29tPgogCiAJKiBzcmMveDg2L2ZmaTY0LmM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCiAJKiBzcmMveDg2L2ZmaS5jOiBVc2UgLyogLi4uICovIGNvbW1lbnQgc3R5bGUuCiAKKzIwMTAtMDItMjQgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBkb2MvbGliZmZpLnRleGkgKFRoZSBDbG9zdXJlIEFQSSk6IEZpeCB0eXBvLgorCSogZG9jL2xpYmZmaS5pbmZvOiBSZW1vdmUuCisKKzIwMTAtMDItMTUgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0B1YnVudHUuY29tPgorCisJKiBzcmMvYXJtL3N5c3YuUyAoX19BUk1fQVJDSF9fKTogRGVmaW5lIGZvciBwcm9jZXNzb3IKKwlfX0FSTV9BUkNIXzdFTV9fLgorCisyMDEwLTAxLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KKworCSogUkVBRE1FOiBBZGQgbm90ZXMgb24gYnVpbGRpbmcgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKworMjAxMC0wMS0xNSAgRGFuaWVsIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBtc3ZjYy5zaDogTmV3IGZpbGUuCisKKwkqIHNyYy94ODYvd2luMzIuUzogUG9ydCBhc3NlbWJseSByb3V0aW5lcyB0byBNU1ZDIGFuZCAjaWZkZWYuCisJKiBzcmMveDg2L2ZmaS5jOiBUd2VhayBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIGV4Y2VzcworCXBhcmVucy4KKwkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBfX2RlY2xzcGVjKGFsaWduKDgpKSB0byB0eXBlZGVmIHN0cnVjdAorCWZmaV9jbG9zdXJlLgorCisJKiBzcmMveDg2L2ZmaS5jOiBNZXJnZSBmZmlfY2FsbF9TWVNWIGFuZCBmZmlfY2FsbF9TVERDQUxMIGludG8gbmV3CisJZnVuY3Rpb24gZmZpX2NhbGxfd2luMzIgb24gWDg2X1dJTjMyLgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2FsbF9TWVNWKTogUmVuYW1lIHRvIGZmaV9jYWxsX3dpbjMyLgorCShmZmlfY2FsbF9TVERDQUxMKTogUmVtb3ZlLgorCisJKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmKTogTW92ZSBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGNvZGUKKwl0byBmZmlfcHJlcF9jaWZfbWFjaGRlcCBmb3IgeDg2LgorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBUbyBoZXJlLgorCisyMDEwLTAxLTE1ICBPbGl2ZXIgS2lkZGxlICA8b2tpZGRsZUB5YWhvby5jby51az4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IENoZWNrIGZvciBfX2kzODYgYW5kIF9fYW1kNjQgZm9yCisJU3VuIFN0dWRpbyBjb21waWxlciBjb21wYXRpYmlsaXR5LgorCisyMDEwLTAxLTEyICBDb25yYWQgSXJ3aW4gPGNvbnJhZC5pcndpbkBnbWFpbC5jb20+CisKKwkqIGRvYy9saWJmZmkudGV4aTogQWRkIGNsb3N1cmUgZXhhbXBsZS4KKwogMjAxMC0wMS0wNyAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CiAKIAlQUiBsaWJmZmkvNDA3MDEKQEAgLTE0OCw2ICsxMDUxLDEzIEBACiAJKiBzcmMvcGEvZmZpLmMgKGZmaV9jbG9zdXJlX2lubmVyX3BhMzIpOiBIYW5kbGUgRkZJX1RZUEVfTE9OR0RPVUJMRQogCXR5cGUgb24gSFAtVVguCiAKKzIwMTItMDItMTMgIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJUFIgbGliZmZpLzUyMjIxCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfcHJlcF9yYXdfY2xvc3VyZV9sb2MpOiBBZGQgdGhpc2NhbGwKKwlzdXBwb3J0IGZvciBYODZfV0lOMzIuCisJKEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwpOiBGaXggZGlzcGxhY2VtZW50LgorCiAyMDA5LTEyLTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgogCiAJKiBzcmMvc3BhcmMvZmZpLmMgKGZmaV9jbG9zdXJlX3NwYXJjX2lubmVyX3Y5KTogUHJvcGVybHkgYWxpZ24gJ2xvbmcKQEAgLTMyMiw2ICsxMjMyLDExIEBACiAJKiBtYW4vTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCiAJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCiAKKzIwMTEtMDgtMjIgIEphc3BlciBMaWV2aXNzZSBBZHJpYWFuc2UgPGphc3BlckBvcGVuYnNkLm9yZz4KKworCSogY29uZmlndXJlLmFjOiBBZGQgT3BlbkJTRC9ocHBhIGFuZCBPcGVuQlNEL3Bvd2VycGMgc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKwogMjAwOS0wNy0zMCAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KIAogCSogY29uZmlndXJlLmFjIChfQUNfQVJHX1ZBUl9QUkVDSU9VUyk6IFVzZSBtNF9yZW5hbWVfZm9yY2UuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkKaW5kZXggNTI3MmYzMy4uZjNlZThiMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nLmxpYmZmaQpAQCAtMSwzNSArMSw2IEBACi0yMDEwLTAxLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KKzIwMTEtMDItMDggIEFuZHJlYXMgVG9ibGVyICA8YW5kcmVhc3RAZmd6bmV0LmNoPgogCi0JKiBSRUFETUU6IEFkZCBub3RlcyBvbiBidWlsZGluZyB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotCi0yMDEwLTAxLTE1ICBEYW5pZWwgV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+Ci0KLQkqIG1zdmNjLnNoOiBOZXcgZmlsZS4KLQotCSogc3JjL3g4Ni93aW4zMi5TOiBQb3J0IGFzc2VtYmx5IHJvdXRpbmVzIHRvIE1TVkMgYW5kICNpZmRlZi4KLQkqIHNyYy94ODYvZmZpLmM6IFR3ZWFrIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGFuZCByZW1vdmUgZXhjZXNzCi0JcGFyZW5zLgotCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIF9fZGVjbHNwZWMoYWxpZ24oOCkpIHRvIHR5cGVkZWYgc3RydWN0Ci0JZmZpX2Nsb3N1cmUuCi0KLQkqIHNyYy94ODYvZmZpLmM6IE1lcmdlIGZmaV9jYWxsX1NZU1YgYW5kIGZmaV9jYWxsX1NURENBTEwgaW50byBuZXcKLQlmdW5jdGlvbiBmZmlfY2FsbF93aW4zMiBvbiBYODZfV0lOMzIuCi0JKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jYWxsX1NZU1YpOiBSZW5hbWUgdG8gZmZpX2NhbGxfd2luMzIuCi0JKGZmaV9jYWxsX1NURENBTEwpOiBSZW1vdmUuCi0KLQkqIHNyYy9wcmVwX2NpZi5jIChmZmlfcHJlcF9jaWYpOiBNb3ZlIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gY29kZQotCXRvIGZmaV9wcmVwX2NpZl9tYWNoZGVwIGZvciB4ODYuCi0JKiBzcmMveDg2L2ZmaS5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IFRvIGhlcmUuCi0KLTIwMTAtMDEtMTUgIE9saXZlciBLaWRkbGUgIDxva2lkZGxlQHlhaG9vLmNvLnVrPgotCi0JKiBzcmMveDg2L2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQ2hlY2sgZm9yIF9faTM4NiBhbmQgX19hbWQ2NCBmb3IKLQlTdW4gU3R1ZGlvIGNvbXBpbGVyIGNvbXBhdGliaWxpdHkuIAotCi0yMDEwLTAxLTEyICBDb25yYWQgSXJ3aW4gPGNvbnJhZC5pcndpbkBnbWFpbC5jb20+Ci0KLQkqIGRvYy9saWJmZmkudGV4aTogQWRkIGNsb3N1cmUgZXhhbXBsZS4KLQkqIGRvYy9saWJmZmkuaW5mbzogUmVidWlsdC4KKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLmV4cDogVHdlYWsgZm9yIHN0YW5kLWFsb25lIG1vZGUuCiAKIDIwMDktMTItMjUgIFNhbXVsaSBTdW9taW5lbiAgPHNzdW9taW5lbkBnZW50b28ub3JnPgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UKaW5kZXggZWMyZmQ2OS4uYWE2MDM0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTElDRU5TRQpAQCAtMSw0ICsxLDQgQEAKLWxpYmZmaSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDA5ICBBbnRob255IEdyZWVuLCBSZWQgSGF0LCBJbmMgYW5kIG90aGVycy4gIAorbGliZmZpIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMTIgIEFudGhvbnkgR3JlZW4sIFJlZCBIYXQsIEluYyBhbmQgb3RoZXJzLgogU2VlIHNvdXJjZSBmaWxlcyBmb3IgZGV0YWlscy4KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC05LDggKzksOCBAQAogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAKLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi1pbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIAogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0KaW5kZXggZjQ3ZGQxYS4uNGE4NTVkNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmFtCkBAIC0xMCwyOSArMTAsMzIgQEAKIAlzcmMvYXZyMzIvZmZpLmMgc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpdGFyZ2V0LmggXAogCXNyYy9jcmlzL2ZmaS5jIHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZml0YXJnZXQuaCBcCiAJc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvZmZpdGFyZ2V0Lmggc3JjL2lhNjQvaWE2NF9mbGFncy5oIFwKLQlzcmMvaWE2NC91bml4LlMgXAotCXNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKLQlzcmMvbWlwcy9mZml0YXJnZXQuaCBcCi0Jc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgc3JjL202OGsvZmZpdGFyZ2V0LmggXAotCXNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCisJc3JjL2lhNjQvdW5peC5TIHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKKwlzcmMvbWlwcy9mZml0YXJnZXQuaCBzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgXAorCXNyYy9tMzJyL2ZmaXRhcmdldC5oIHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBcCisJc3JjL202OGsvZmZpdGFyZ2V0Lmggc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKIAlzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggXAotCXNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2Rhcndpbi5TIFwKLQlzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpdGFyZ2V0LmggXAotCXNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgc3JjL3NwYXJjL2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKLQlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L3dpbjY0LlMgXAotCXNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mcmVlYnNkLlMgXAotCXNyYy94ODYvZmZpNjQuYyBzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0LmggXAotCXNyYy9wYS9mZml0YXJnZXQuaCBzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIFwKLQlzcmMvZnJ2L2ZmaS5jIHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAotCWxpYnRvb2wtdmVyc2lvbiBDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgXAotCW00L2x0fm9ic29sZXRlLm00IG00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNAorCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggc3JjL3Bvd2VycGMvYWl4LlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIFwKKwlzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgXAorCXNyYy9zMzkwL2ZmaXRhcmdldC5oIHNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TCVwKKwlzcmMvc2gvZmZpdGFyZ2V0Lmggc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIFwKKwlzcmMvc2g2NC9mZml0YXJnZXQuaCBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBcCisJc3JjL3NwYXJjL2ZmaXRhcmdldC5oIHNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAorCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvZGFyd2luLlMgXAorCXNyYy94ODYvd2luNjQuUyBzcmMveDg2L2ZyZWVic2QuUyBzcmMveDg2L2ZmaTY0LmMgXAorCXNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBzcmMvcGEvZmZpdGFyZ2V0LmgJXAorCXNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgc3JjL2Zydi9mZmkuYyBcCisJc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCisJc3JjL21veGllL2ZmaS5jIHNyYy9tb3hpZS9lYWJpLlMgbGlidG9vbC12ZXJzaW9uIFwKKwlDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgbTQvbHR+b2Jzb2xldGUubTQgXAorCW00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNCBcCisJbTQvbHR2ZXJzaW9uLm00IHNyYy9hcm0vZ2VudHJhbXAuc2ggc3JjL2RlYnVnLmMgXAorCW1zdmNjLnNoIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorCWdlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorICAgICAgICBsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCisJc3JjL2FybS90cmFtcG9saW5lLlMKIAogaW5mb19URVhJTkZPUyA9IGRvYy9saWJmZmkudGV4aQogCkBAIC02OSw2ICs3Miw3IEBACiAJImV4ZWNfcHJlZml4PSQoZXhlY19wcmVmaXgpIiBcCiAJImluZm9kaXI9JChpbmZvZGlyKSIgXAogCSJsaWJkaXI9JChsaWJkaXIpIiBcCisJIm1hbmRpcj0kKG1hbmRpcikiIFwKIAkicHJlZml4PSQocHJlZml4KSIgXAogCSJBUj0kKEFSKSIgXAogCSJBUz0kKEFTKSIgXApAQCAtODYsNyArOTAsNyBAQAogbGliX0xUTElCUkFSSUVTID0gbGliZmZpLmxhCiBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJmZmlfY29udmVuaWVuY2UubGEKIAotbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvZGVidWcuYyBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCitsaWJmZmlfbGFfU09VUkNFUyA9IHNyYy9wcmVwX2NpZi5jIHNyYy90eXBlcy5jIFwKIAkJc3JjL3Jhd19hcGkuYyBzcmMvamF2YV9yYXdfYXBpLmMgc3JjL2Nsb3N1cmVzLmMKIAogcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwpAQCAtOTQsNiArOTgsMTAgQEAKIAogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTID0KIAoraWYgRkZJX0RFQlVHCitub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2RlYnVnLmMKK2VuZGlmCisKIGlmIE1JUFMKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9vMzIuUyBzcmMvbWlwcy9uMzIuUwogZW5kaWYKQEAgLTE0MSw2ICsxNDksOSBAQAogZW5kaWYKIGlmIEFSTQogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9hcm0vc3lzdi5TIHNyYy9hcm0vZmZpLmMKK2lmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKK25vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvYXJtL3RyYW1wb2xpbmUuUworZW5kaWYKIGVuZGlmCiBpZiBBVlIzMgogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaS5jCkBAIC0xNTEsNiArMTYyLDkgQEAKIGlmIEZSVgogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpLmMKIGVuZGlmCitpZiBNT1hJRQorbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9tb3hpZS9lYWJpLlMgc3JjL21veGllL2ZmaS5jCitlbmRpZgogaWYgUzM5MAogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZmkuYwogZW5kaWYKQEAgLTE3MywxMiArMTg3LDE3IEBACiBsaWJmZmlfY29udmVuaWVuY2VfbGFfU09VUkNFUyA9ICQobGliZmZpX2xhX1NPVVJDRVMpCiBub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUykKIAotQU1fQ0ZMQUdTID0gLVdhbGwgLWcgLWZleGNlcHRpb25zCitBTV9DRkxBR1MgPSAtZworaWYgRkZJX0RFQlVHCisjIEJ1aWxkIGRlYnVnLiBEZWZpbmUgRkZJX0RFQlVHIG9uIHRoZSBjb21tYW5kbGluZSBzbyB0aGF0LCB3aGVuIGJ1aWxkaW5nIHdpdGgKKyMgTVNWQywgaXQgY2FuIGxpbmsgYWdhaW5zdCB0aGUgZGVidWcgQ1JULgorQU1fQ0ZMQUdTICs9IC1ERkZJX0RFQlVHCitlbmRpZgogCiBsaWJmZmlfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gYGdyZXAgLXYgJ15cIycgJChzcmNkaXIpL2xpYnRvb2wtdmVyc2lvbmAgJChMVExERkxBR1MpICQoQU1fTFRMREZMQUdTKQogCi1BTV9DUFBGTEFHUyA9IC1JLiAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL3NyYwotQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykKK0FNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjIC1ERkZJX0JVSUxESU5HCitBTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtZwogCiAjIE5vIGluc3RhbGwtaHRtbCBvciBpbnN0YWxsLXBkZiBzdXBwb3J0IGluIGF1dG9tYWtlIHlldAogLlBIT05ZOiBpbnN0YWxsLWh0bWwgaW5zdGFsbC1wZGYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluCmluZGV4IDQ5YWZjYzEuLjQzZWQ4NTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0zNiwzOCArMzYsNDUgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLUBNSVBTX1RSVUVAYW1fX2FwcGVuZF8xID0gc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbzMyLlMgc3JjL21pcHMvbjMyLlMKLUBYODZfVFJVRUBhbV9fYXBwZW5kXzIgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCi1AWDg2X0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzMgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvZnJlZWJzZC5TCi1AWDg2X1dJTjMyX1RSVUVAYW1fX2FwcGVuZF80ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjMyLlMKLUBYODZfV0lONjRfVFJVRUBhbV9fYXBwZW5kXzUgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvd2luNjQuUwotQFg4Nl9EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzYgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvZGFyd2luNjQuUwotQFNQQVJDX1RSVUVAYW1fX2FwcGVuZF83ID0gc3JjL3NwYXJjL2ZmaS5jIHNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TCi1AQUxQSEFfVFJVRUBhbV9fYXBwZW5kXzggPSBzcmMvYWxwaGEvZmZpLmMgc3JjL2FscGhhL29zZi5TCi1ASUE2NF9UUlVFQGFtX19hcHBlbmRfOSA9IHNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L3VuaXguUwotQE0zMlJfVFJVRUBhbV9fYXBwZW5kXzEwID0gc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaS5jCi1ATTY4S19UUlVFQGFtX19hcHBlbmRfMTEgPSBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMKLUBQT1dFUlBDX1RSVUVAYW1fX2FwcGVuZF8xMiA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUwotQFBPV0VSUENfQUlYX1RSVUVAYW1fX2FwcGVuZF8xMyA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCi1AUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKLUBQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzE1ID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKLUBBUk1fVFJVRUBhbV9fYXBwZW5kXzE2ID0gc3JjL2FybS9zeXN2LlMgc3JjL2FybS9mZmkuYwotQEFWUjMyX1RSVUVAYW1fX2FwcGVuZF8xNyA9IHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaS5jCi1ATElCRkZJX0NSSVNfVFJVRUBhbV9fYXBwZW5kXzE4ID0gc3JjL2NyaXMvc3lzdi5TIHNyYy9jcmlzL2ZmaS5jCi1ARlJWX1RSVUVAYW1fX2FwcGVuZF8xOSA9IHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpLmMKLUBTMzkwX1RSVUVAYW1fX2FwcGVuZF8yMCA9IHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZmkuYwotQFg4Nl82NF9UUlVFQGFtX19hcHBlbmRfMjEgPSBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCi1AU0hfVFJVRUBhbV9fYXBwZW5kXzIyID0gc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpLmMKLUBTSDY0X1RSVUVAYW1fX2FwcGVuZF8yMyA9IHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZmkuYwotQFBBX0xJTlVYX1RSVUVAYW1fX2FwcGVuZF8yNCA9IHNyYy9wYS9saW51eC5TIHNyYy9wYS9mZmkuYwotQFBBX0hQVVhfVFJVRUBhbV9fYXBwZW5kXzI1ID0gc3JjL3BhL2hwdXgzMi5TIHNyYy9wYS9mZmkuYworQEZGSV9ERUJVR19UUlVFQGFtX19hcHBlbmRfMSA9IHNyYy9kZWJ1Zy5jCitATUlQU19UUlVFQGFtX19hcHBlbmRfMiA9IHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL28zMi5TIHNyYy9taXBzL24zMi5TCitAWDg2X1RSVUVAYW1fX2FwcGVuZF8zID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUworQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF80ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2ZyZWVic2QuUworQFg4Nl9XSU4zMl9UUlVFQGFtX19hcHBlbmRfNSA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW4zMi5TCitAWDg2X1dJTjY0X1RSVUVAYW1fX2FwcGVuZF82ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjY0LlMKK0BYODZfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF83ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZmZpNjQuYyBzcmMveDg2L2RhcndpbjY0LlMKK0BTUEFSQ19UUlVFQGFtX19hcHBlbmRfOCA9IHNyYy9zcGFyYy9mZmkuYyBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUworQEFMUEhBX1RSVUVAYW1fX2FwcGVuZF85ID0gc3JjL2FscGhhL2ZmaS5jIHNyYy9hbHBoYS9vc2YuUworQElBNjRfVFJVRUBhbV9fYXBwZW5kXzEwID0gc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvdW5peC5TCitATTMyUl9UUlVFQGFtX19hcHBlbmRfMTEgPSBzcmMvbTMyci9zeXN2LlMgc3JjL20zMnIvZmZpLmMKK0BNNjhLX1RSVUVAYW1fX2FwcGVuZF8xMiA9IHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUworQFBPV0VSUENfVFJVRUBhbV9fYXBwZW5kXzEzID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvbGludXg2NC5TIHNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TCitAUE9XRVJQQ19BSVhfVFJVRUBhbV9fYXBwZW5kXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKK0BQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19hcHBlbmRfMTUgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvZGFyd2luLlMgc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUworQFBPV0VSUENfRlJFRUJTRF9UUlVFQGFtX19hcHBlbmRfMTYgPSBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUworQEFSTV9UUlVFQGFtX19hcHBlbmRfMTcgPSBzcmMvYXJtL3N5c3YuUyBzcmMvYXJtL2ZmaS5jCitAQVJNX1RSVUVAQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRUBhbV9fYXBwZW5kXzE4ID0gc3JjL2FybS90cmFtcG9saW5lLlMKK0BBVlIzMl9UUlVFQGFtX19hcHBlbmRfMTkgPSBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZmkuYworQExJQkZGSV9DUklTX1RSVUVAYW1fX2FwcGVuZF8yMCA9IHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZmkuYworQEZSVl9UUlVFQGFtX19hcHBlbmRfMjEgPSBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaS5jCitATU9YSUVfVFJVRUBhbV9fYXBwZW5kXzIyID0gc3JjL21veGllL2VhYmkuUyBzcmMvbW94aWUvZmZpLmMKK0BTMzkwX1RSVUVAYW1fX2FwcGVuZF8yMyA9IHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZmkuYworQFg4Nl82NF9UUlVFQGFtX19hcHBlbmRfMjQgPSBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCitAU0hfVFJVRUBhbV9fYXBwZW5kXzI1ID0gc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpLmMKK0BTSDY0X1RSVUVAYW1fX2FwcGVuZF8yNiA9IHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZmkuYworQFBBX0xJTlVYX1RSVUVAYW1fX2FwcGVuZF8yNyA9IHNyYy9wYS9saW51eC5TIHNyYy9wYS9mZmkuYworQFBBX0hQVVhfVFJVRUBhbV9fYXBwZW5kXzI4ID0gc3JjL3BhL2hwdXgzMi5TIHNyYy9wYS9mZmkuYworIyBCdWlsZCBkZWJ1Zy4gRGVmaW5lIEZGSV9ERUJVRyBvbiB0aGUgY29tbWFuZGxpbmUgc28gdGhhdCwgd2hlbiBidWlsZGluZyB3aXRoCisjIE1TVkMsIGl0IGNhbiBsaW5rIGFnYWluc3QgdGhlIGRlYnVnIENSVC4KK0BGRklfREVCVUdfVFJVRUBhbV9fYXBwZW5kXzI5ID0gLURGRklfREVCVUcKIHN1YmRpciA9IC4KIERJU1RfQ09NTU9OID0gUkVBRE1FICQoYW1fX2NvbmZpZ3VyZV9kZXBzKSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXAogCSQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHNyY2RpcikvZG9jL3N0YW1wLXZ0aSBcCiAJJChzcmNkaXIpL2RvYy92ZXJzaW9uLnRleGkgJChzcmNkaXIpL2ZmaWNvbmZpZy5oLmluIFwKLQkkKHNyY2RpcikvbGliZmZpLnBjLmluICQodG9wX3NyY2RpcikvY29uZmlndXJlIENoYW5nZUxvZyBcCi0JY29tcGlsZSBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiBkZXBjb21wIGluc3RhbGwtc2ggbHRtYWluLnNoIFwKLQltZGF0ZS1zaCBtaXNzaW5nIHRleGluZm8udGV4CisJJChzcmNkaXIpL2ZmaWNvbmZpZy5weS5pbiAkKHNyY2RpcikvbGliZmZpLnBjLmluIFwKKwkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBDaGFuZ2VMb2cgY29tcGlsZSBjb25maWcuZ3Vlc3MgXAorCWNvbmZpZy5zdWIgZGVwY29tcCBpbnN0YWxsLXNoIGx0bWFpbi5zaCBtZGF0ZS1zaCBtaXNzaW5nIFwKKwl0ZXhpbmZvLnRleAogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwpAQCAtNzcsNyArODQsNyBAQAogIGNvbmZpZ3VyZS5saW5lbm8gY29uZmlnLnN0YXR1cy5saW5lbm8KIG1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCiBDT05GSUdfSEVBREVSID0gZmZpY29uZmlnLmgKLUNPTkZJR19DTEVBTl9GSUxFUyA9IGxpYmZmaS5wYworQ09ORklHX0NMRUFOX0ZJTEVTID0gbGliZmZpLnBjIGZmaWNvbmZpZy5weQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KIGFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwogYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKQEAgLTEwMCw1MSArMTA3LDYwIEBACiBhbV9fYmFzZV9saXN0ID0gXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCithbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCisgIHRlc3QgLXogIiQkZmlsZXMiIFwKKyAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKKyAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCisgIH0KIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChsaWJkaXIpIiAiJChERVNURElSKSQoaW5mb2RpcikiIFwKIAkiJChERVNURElSKSQocGtnY29uZmlnZGlyKSIKIExUTElCUkFSSUVTID0gJChsaWJfTFRMSUJSQVJJRVMpICQobm9pbnN0X0xUTElCUkFSSUVTKQogbGliZmZpX2xhX0xJQkFERCA9CiBhbV9fZGlyc3RhbXAgPSAkKGFtX19sZWFkaW5nX2RvdClkaXJzdGFtcAotYW1fbGliZmZpX2xhX09CSkVDVFMgPSBzcmMvZGVidWcubG8gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBcCi0Jc3JjL3Jhd19hcGkubG8gc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KLUBNSVBTX1RSVUVAYW1fX29iamVjdHNfMSA9IHNyYy9taXBzL2ZmaS5sbyBzcmMvbWlwcy9vMzIubG8gXAorYW1fbGliZmZpX2xhX09CSkVDVFMgPSBzcmMvcHJlcF9jaWYubG8gc3JjL3R5cGVzLmxvIHNyYy9yYXdfYXBpLmxvIFwKKwlzcmMvamF2YV9yYXdfYXBpLmxvIHNyYy9jbG9zdXJlcy5sbworQEZGSV9ERUJVR19UUlVFQGFtX19vYmplY3RzXzEgPSBzcmMvZGVidWcubG8KK0BNSVBTX1RSVUVAYW1fX29iamVjdHNfMiA9IHNyYy9taXBzL2ZmaS5sbyBzcmMvbWlwcy9vMzIubG8gXAogQE1JUFNfVFJVRUAJc3JjL21pcHMvbjMyLmxvCi1AWDg2X1RSVUVAYW1fX29iamVjdHNfMiA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvc3lzdi5sbwotQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfMyA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZnJlZWJzZC5sbwotQFg4Nl9XSU4zMl9UUlVFQGFtX19vYmplY3RzXzQgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjMyLmxvCi1AWDg2X1dJTjY0X1RSVUVAYW1fX29iamVjdHNfNSA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luNjQubG8KLUBYODZfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfNiA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZGFyd2luLmxvIFwKK0BYODZfVFJVRUBhbV9fb2JqZWN0c18zID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9zeXN2LmxvCitAWDg2X0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c180ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9mcmVlYnNkLmxvCitAWDg2X1dJTjMyX1RSVUVAYW1fX29iamVjdHNfNSA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luMzIubG8KK0BYODZfV0lONjRfVFJVRUBhbV9fb2JqZWN0c182ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni93aW42NC5sbworQFg4Nl9EQVJXSU5fVFJVRUBhbV9fb2JqZWN0c183ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9kYXJ3aW4ubG8gXAogQFg4Nl9EQVJXSU5fVFJVRUAJc3JjL3g4Ni9mZmk2NC5sbyBzcmMveDg2L2RhcndpbjY0LmxvCi1AU1BBUkNfVFJVRUBhbV9fb2JqZWN0c183ID0gc3JjL3NwYXJjL2ZmaS5sbyBzcmMvc3BhcmMvdjgubG8gXAorQFNQQVJDX1RSVUVAYW1fX29iamVjdHNfOCA9IHNyYy9zcGFyYy9mZmkubG8gc3JjL3NwYXJjL3Y4LmxvIFwKIEBTUEFSQ19UUlVFQAlzcmMvc3BhcmMvdjkubG8KLUBBTFBIQV9UUlVFQGFtX19vYmplY3RzXzggPSBzcmMvYWxwaGEvZmZpLmxvIHNyYy9hbHBoYS9vc2YubG8KLUBJQTY0X1RSVUVAYW1fX29iamVjdHNfOSA9IHNyYy9pYTY0L2ZmaS5sbyBzcmMvaWE2NC91bml4LmxvCi1ATTMyUl9UUlVFQGFtX19vYmplY3RzXzEwID0gc3JjL20zMnIvc3lzdi5sbyBzcmMvbTMyci9mZmkubG8KLUBNNjhLX1RSVUVAYW1fX29iamVjdHNfMTEgPSBzcmMvbTY4ay9mZmkubG8gc3JjL202OGsvc3lzdi5sbwotQFBPV0VSUENfVFJVRUBhbV9fb2JqZWN0c18xMiA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBzcmMvcG93ZXJwYy9zeXN2LmxvIFwKK0BBTFBIQV9UUlVFQGFtX19vYmplY3RzXzkgPSBzcmMvYWxwaGEvZmZpLmxvIHNyYy9hbHBoYS9vc2YubG8KK0BJQTY0X1RSVUVAYW1fX29iamVjdHNfMTAgPSBzcmMvaWE2NC9mZmkubG8gc3JjL2lhNjQvdW5peC5sbworQE0zMlJfVFJVRUBhbV9fb2JqZWN0c18xMSA9IHNyYy9tMzJyL3N5c3YubG8gc3JjL20zMnIvZmZpLmxvCitATTY4S19UUlVFQGFtX19vYmplY3RzXzEyID0gc3JjL202OGsvZmZpLmxvIHNyYy9tNjhrL3N5c3YubG8KK0BQT1dFUlBDX1RSVUVAYW1fX29iamVjdHNfMTMgPSBzcmMvcG93ZXJwYy9mZmkubG8gc3JjL3Bvd2VycGMvc3lzdi5sbyBcCiBAUE9XRVJQQ19UUlVFQAlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5sbyBcCiBAUE9XRVJQQ19UUlVFQAlzcmMvcG93ZXJwYy9saW51eDY0LmxvIFwKIEBQT1dFUlBDX1RSVUVACXNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5sbwotQFBPV0VSUENfQUlYX1RSVUVAYW1fX29iamVjdHNfMTMgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmxvIFwKK0BQT1dFUlBDX0FJWF9UUlVFQGFtX19vYmplY3RzXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCiBAUE9XRVJQQ19BSVhfVFJVRUAJc3JjL3Bvd2VycGMvYWl4LmxvIFwKIEBQT1dFUlBDX0FJWF9UUlVFQAlzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5sbwotQFBPV0VSUENfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfMTQgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmxvIFwKK0BQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzE1ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCiBAUE9XRVJQQ19EQVJXSU5fVFJVRUAJc3JjL3Bvd2VycGMvZGFyd2luLmxvIFwKIEBQT1dFUlBDX0RBUldJTl9UUlVFQAlzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5sbwotQFBPV0VSUENfRlJFRUJTRF9UUlVFQGFtX19vYmplY3RzXzE1ID0gc3JjL3Bvd2VycGMvZmZpLmxvIFwKK0BQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c18xNiA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBcCiBAUE9XRVJQQ19GUkVFQlNEX1RSVUVACXNyYy9wb3dlcnBjL3N5c3YubG8gXAogQFBPV0VSUENfRlJFRUJTRF9UUlVFQAlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5sbwotQEFSTV9UUlVFQGFtX19vYmplY3RzXzE2ID0gc3JjL2FybS9zeXN2LmxvIHNyYy9hcm0vZmZpLmxvCi1AQVZSMzJfVFJVRUBhbV9fb2JqZWN0c18xNyA9IHNyYy9hdnIzMi9zeXN2LmxvIHNyYy9hdnIzMi9mZmkubG8KLUBMSUJGRklfQ1JJU19UUlVFQGFtX19vYmplY3RzXzE4ID0gc3JjL2NyaXMvc3lzdi5sbyBzcmMvY3Jpcy9mZmkubG8KLUBGUlZfVFJVRUBhbV9fb2JqZWN0c18xOSA9IHNyYy9mcnYvZWFiaS5sbyBzcmMvZnJ2L2ZmaS5sbwotQFMzOTBfVFJVRUBhbV9fb2JqZWN0c18yMCA9IHNyYy9zMzkwL3N5c3YubG8gc3JjL3MzOTAvZmZpLmxvCi1AWDg2XzY0X1RSVUVAYW1fX29iamVjdHNfMjEgPSBzcmMveDg2L2ZmaTY0LmxvIHNyYy94ODYvdW5peDY0LmxvIFwKK0BBUk1fVFJVRUBhbV9fb2JqZWN0c18xNyA9IHNyYy9hcm0vc3lzdi5sbyBzcmMvYXJtL2ZmaS5sbworQEFSTV9UUlVFQEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUVAYW1fX29iamVjdHNfMTggPSBzcmMvYXJtL3RyYW1wb2xpbmUubG8KK0BBVlIzMl9UUlVFQGFtX19vYmplY3RzXzE5ID0gc3JjL2F2cjMyL3N5c3YubG8gc3JjL2F2cjMyL2ZmaS5sbworQExJQkZGSV9DUklTX1RSVUVAYW1fX29iamVjdHNfMjAgPSBzcmMvY3Jpcy9zeXN2LmxvIHNyYy9jcmlzL2ZmaS5sbworQEZSVl9UUlVFQGFtX19vYmplY3RzXzIxID0gc3JjL2Zydi9lYWJpLmxvIHNyYy9mcnYvZmZpLmxvCitATU9YSUVfVFJVRUBhbV9fb2JqZWN0c18yMiA9IHNyYy9tb3hpZS9lYWJpLmxvIHNyYy9tb3hpZS9mZmkubG8KK0BTMzkwX1RSVUVAYW1fX29iamVjdHNfMjMgPSBzcmMvczM5MC9zeXN2LmxvIHNyYy9zMzkwL2ZmaS5sbworQFg4Nl82NF9UUlVFQGFtX19vYmplY3RzXzI0ID0gc3JjL3g4Ni9mZmk2NC5sbyBzcmMveDg2L3VuaXg2NC5sbyBcCiBAWDg2XzY0X1RSVUVACXNyYy94ODYvZmZpLmxvIHNyYy94ODYvc3lzdi5sbwotQFNIX1RSVUVAYW1fX29iamVjdHNfMjIgPSBzcmMvc2gvc3lzdi5sbyBzcmMvc2gvZmZpLmxvCi1AU0g2NF9UUlVFQGFtX19vYmplY3RzXzIzID0gc3JjL3NoNjQvc3lzdi5sbyBzcmMvc2g2NC9mZmkubG8KLUBQQV9MSU5VWF9UUlVFQGFtX19vYmplY3RzXzI0ID0gc3JjL3BhL2xpbnV4LmxvIHNyYy9wYS9mZmkubG8KLUBQQV9IUFVYX1RSVUVAYW1fX29iamVjdHNfMjUgPSBzcmMvcGEvaHB1eDMyLmxvIHNyYy9wYS9mZmkubG8KK0BTSF9UUlVFQGFtX19vYmplY3RzXzI1ID0gc3JjL3NoL3N5c3YubG8gc3JjL3NoL2ZmaS5sbworQFNINjRfVFJVRUBhbV9fb2JqZWN0c18yNiA9IHNyYy9zaDY0L3N5c3YubG8gc3JjL3NoNjQvZmZpLmxvCitAUEFfTElOVVhfVFJVRUBhbV9fb2JqZWN0c18yNyA9IHNyYy9wYS9saW51eC5sbyBzcmMvcGEvZmZpLmxvCitAUEFfSFBVWF9UUlVFQGFtX19vYmplY3RzXzI4ID0gc3JjL3BhL2hwdXgzMi5sbyBzcmMvcGEvZmZpLmxvCiBub2Rpc3RfbGliZmZpX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMikgXAogCSQoYW1fX29iamVjdHNfMykgJChhbV9fb2JqZWN0c180KSAkKGFtX19vYmplY3RzXzUpIFwKIAkkKGFtX19vYmplY3RzXzYpICQoYW1fX29iamVjdHNfNykgJChhbV9fb2JqZWN0c184KSBcCkBAIC0xNTMsMTcgKzE2OSwxOCBAQAogCSQoYW1fX29iamVjdHNfMTUpICQoYW1fX29iamVjdHNfMTYpICQoYW1fX29iamVjdHNfMTcpIFwKIAkkKGFtX19vYmplY3RzXzE4KSAkKGFtX19vYmplY3RzXzE5KSAkKGFtX19vYmplY3RzXzIwKSBcCiAJJChhbV9fb2JqZWN0c18yMSkgJChhbV9fb2JqZWN0c18yMikgJChhbV9fb2JqZWN0c18yMykgXAotCSQoYW1fX29iamVjdHNfMjQpICQoYW1fX29iamVjdHNfMjUpCisJJChhbV9fb2JqZWN0c18yNCkgJChhbV9fb2JqZWN0c18yNSkgJChhbV9fb2JqZWN0c18yNikgXAorCSQoYW1fX29iamVjdHNfMjcpICQoYW1fX29iamVjdHNfMjgpCiBsaWJmZmlfbGFfT0JKRUNUUyA9ICQoYW1fbGliZmZpX2xhX09CSkVDVFMpIFwKIAkkKG5vZGlzdF9saWJmZmlfbGFfT0JKRUNUUykKIGxpYmZmaV9sYV9MSU5LID0gJChMSUJUT09MKSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAogCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgXAogCSQobGliZmZpX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIGxpYmZmaV9jb252ZW5pZW5jZV9sYV9MSUJBREQgPQotYW1fX29iamVjdHNfMjYgPSBzcmMvZGVidWcubG8gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBcCi0Jc3JjL3Jhd19hcGkubG8gc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KLWFtX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yNikKLWFtX19vYmplY3RzXzI3ID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpICQoYW1fX29iamVjdHNfMykgXAorYW1fX29iamVjdHNfMjkgPSBzcmMvcHJlcF9jaWYubG8gc3JjL3R5cGVzLmxvIHNyYy9yYXdfYXBpLmxvIFwKKwlzcmMvamF2YV9yYXdfYXBpLmxvIHNyYy9jbG9zdXJlcy5sbworYW1fbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzI5KQorYW1fX29iamVjdHNfMzAgPSAkKGFtX19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKSBcCiAJJChhbV9fb2JqZWN0c180KSAkKGFtX19vYmplY3RzXzUpICQoYW1fX29iamVjdHNfNikgXAogCSQoYW1fX29iamVjdHNfNykgJChhbV9fb2JqZWN0c184KSAkKGFtX19vYmplY3RzXzkpIFwKIAkkKGFtX19vYmplY3RzXzEwKSAkKGFtX19vYmplY3RzXzExKSAkKGFtX19vYmplY3RzXzEyKSBcCkBAIC0xNzEsOCArMTg4LDkgQEAKIAkkKGFtX19vYmplY3RzXzE2KSAkKGFtX19vYmplY3RzXzE3KSAkKGFtX19vYmplY3RzXzE4KSBcCiAJJChhbV9fb2JqZWN0c18xOSkgJChhbV9fb2JqZWN0c18yMCkgJChhbV9fb2JqZWN0c18yMSkgXAogCSQoYW1fX29iamVjdHNfMjIpICQoYW1fX29iamVjdHNfMjMpICQoYW1fX29iamVjdHNfMjQpIFwKLQkkKGFtX19vYmplY3RzXzI1KQotbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yNykKKwkkKGFtX19vYmplY3RzXzI1KSAkKGFtX19vYmplY3RzXzI2KSAkKGFtX19vYmplY3RzXzI3KSBcCisJJChhbV9fb2JqZWN0c18yOCkKK25vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMzApCiBsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpIFwKIAkkKG5vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykKIERFRkFVTFRfSU5DTFVERVMgPSAtSS5AYW1fX2lzcmNACkBAIC0yMjksOSArMjQ3LDExIEBACiBkaXN0ZGlyID0gJChQQUNLQUdFKS0kKFZFUlNJT04pCiB0b3BfZGlzdGRpciA9ICQoZGlzdGRpcikKIGFtX19yZW1vdmVfZGlzdGRpciA9IFwKLSAgeyB0ZXN0ICEgLWQgIiQoZGlzdGRpcikiIFwKLSAgICB8fCB7IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtMjAwIC1leGVjIGNobW9kIHUrdyB7fSAnOycgXAotICAgICAgICAgJiYgcm0gLWZyICIkKGRpc3RkaXIpIjsgfTsgfQorICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIpIjsgdGhlbiBcCisgICAgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC0yMDAgLWV4ZWMgY2htb2QgdSt3IHt9ICc7JyBcCisgICAgICAmJiBybSAtcmYgIiQoZGlzdGRpcikiIFwKKyAgICAgIHx8IHsgc2xlZXAgNSAmJiBybSAtcmYgIiQoZGlzdGRpcikiOyB9OyBcCisgIGVsc2UgOjsgZmkKIGFtX19yZWxhdGl2aXplID0gXAogICBkaXIwPWBwd2RgOyBcCiAgIHNlZF9maXJzdD0ncyxeXChbXi9dKlwpLy4qJCQsXDEsJzsgXApAQCAtMjYwLDYgKzI4MCw4IEBACiBESVNUX0FSQ0hJVkVTID0gJChkaXN0ZGlyKS50YXIuZ3oKIEdaSVBfRU5WID0gLS1iZXN0CiBkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzID0gZmluZCAuIC10eXBlIGYgLXByaW50CithbV9fZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcyA9ICQoZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgXAorICB8IHNlZCAnc3xeXC4vfCQocHJlZml4KS98JyB8IGdyZXAgLXYgJyQoaW5mb2RpcikvZGlyJCQnCiBkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMgPSBmaW5kIC4gLXR5cGUgZiAtcHJpbnQKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACkBAIC0yODIsNiArMzA0LDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtMjg5LDYgKzMxMiw3IEBACiBFQ0hPX1QgPSBARUNIT19UQAogRUdSRVAgPSBARUdSRVBACiBFWEVFWFQgPSBARVhFRVhUQAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAogRkdSRVAgPSBARkdSRVBACiBHUkVQID0gQEdSRVBACiBIQVZFX0xPTkdfRE9VQkxFID0gQEhBVkVfTE9OR19ET1VCTEVACkBAIC0zMDcsNiArMzMxLDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMzE5LDYgKzM0NCw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMzMzLDYgKzM1OSw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTM2NSw3ICszOTIsNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0zOTUsMjkgKzQyMSwzMiBAQAogCXNyYy9hdnIzMi9mZmkuYyBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZml0YXJnZXQuaCBcCiAJc3JjL2NyaXMvZmZpLmMgc3JjL2NyaXMvc3lzdi5TIHNyYy9jcmlzL2ZmaXRhcmdldC5oIFwKIAlzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC9mZml0YXJnZXQuaCBzcmMvaWE2NC9pYTY0X2ZsYWdzLmggXAotCXNyYy9pYTY0L3VuaXguUyBcCi0Jc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbjMyLlMgc3JjL21pcHMvbzMyLlMgXAotCXNyYy9taXBzL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgc3JjL20zMnIvZmZpdGFyZ2V0LmggXAotCXNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBzcmMvbTY4ay9mZml0YXJnZXQuaCBcCi0Jc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKKwlzcmMvaWE2NC91bml4LlMgc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbjMyLlMgc3JjL21pcHMvbzMyLlMgXAorCXNyYy9taXBzL2ZmaXRhcmdldC5oIHNyYy9tMzJyL2ZmaS5jIHNyYy9tMzJyL3N5c3YuUyBcCisJc3JjL20zMnIvZmZpdGFyZ2V0Lmggc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TIFwKKwlzcmMvbTY4ay9mZml0YXJnZXQuaCBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgXAogCXNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUyBcCi0Jc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9hc20uaCBcCi0Jc3JjL3Bvd2VycGMvYWl4LlMgc3JjL3Bvd2VycGMvZGFyd2luLlMgXAotCXNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBcCi0Jc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIFwKLQlzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpdGFyZ2V0LmggXAotCXNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TIHNyYy9zaC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIHNyYy9zaDY0L2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBzcmMvc3BhcmMvZmZpdGFyZ2V0LmggXAotCXNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAotCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvd2luNjQuUyBcCi0Jc3JjL3g4Ni9kYXJ3aW4uUyBzcmMveDg2L2ZyZWVic2QuUyBcCi0Jc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBcCi0Jc3JjL3BhL2ZmaXRhcmdldC5oIHNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgXAotCXNyYy9mcnYvZmZpLmMgc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCi0JbGlidG9vbC12ZXJzaW9uIENoYW5nZUxvZy5saWJmZmkgbTQvbGlidG9vbC5tNCBcCi0JbTQvbHR+b2Jzb2xldGUubTQgbTQvbHRvcHRpb25zLm00IG00L2x0c3VnYXIubTQgbTQvbHR2ZXJzaW9uLm00CisJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9hc20uaCBzcmMvcG93ZXJwYy9haXguUyBcCisJc3JjL3Bvd2VycGMvZGFyd2luLlMgc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBcCisJc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgXAorCXNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIHNyYy9zMzkwL2ZmaS5jIHNyYy9zMzkwL3N5c3YuUyBcCisJc3JjL3MzOTAvZmZpdGFyZ2V0Lmggc3JjL3NoL2ZmaS5jIHNyYy9zaC9zeXN2LlMJXAorCXNyYy9zaC9mZml0YXJnZXQuaCBzcmMvc2g2NC9mZmkuYyBzcmMvc2g2NC9zeXN2LlMgXAorCXNyYy9zaDY0L2ZmaXRhcmdldC5oIHNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TIFwKKwlzcmMvc3BhcmMvZmZpdGFyZ2V0Lmggc3JjL3NwYXJjL2ZmaS5jIHNyYy94ODYvZGFyd2luNjQuUyBcCisJc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUyBzcmMveDg2L3dpbjMyLlMgc3JjL3g4Ni9kYXJ3aW4uUyBcCisJc3JjL3g4Ni93aW42NC5TIHNyYy94ODYvZnJlZWJzZC5TIHNyYy94ODYvZmZpNjQuYyBcCisJc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaXRhcmdldC5oIHNyYy9wYS9mZml0YXJnZXQuaAlcCisJc3JjL3BhL2ZmaS5jIHNyYy9wYS9saW51eC5TIHNyYy9wYS9ocHV4MzIuUyBzcmMvZnJ2L2ZmaS5jIFwKKwlzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaXRhcmdldC5oIHNyYy9kbG1hbGxvYy5jIFwKKwlzcmMvbW94aWUvZmZpLmMgc3JjL21veGllL2VhYmkuUyBsaWJ0b29sLXZlcnNpb24gXAorCUNoYW5nZUxvZy5saWJmZmkgbTQvbGlidG9vbC5tNCBtNC9sdH5vYnNvbGV0ZS5tNCBcCisJbTQvbHRvcHRpb25zLm00IG00L2x0c3VnYXIubTQgbTQvbHR2ZXJzaW9uLm00IFwKKwltNC9sdHZlcnNpb24ubTQgc3JjL2FybS9nZW50cmFtcC5zaCBzcmMvZGVidWcuYyBcCisJbXN2Y2Muc2ggZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSBcCisJZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSBcCisgICAgICAgIGxpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIFwKKwlzcmMvYXJtL3RyYW1wb2xpbmUuUwogCiBpbmZvX1RFWElORk9TID0gZG9jL2xpYmZmaS50ZXhpCiAKQEAgLTQ0OCw2ICs0NzcsNyBAQAogCSJleGVjX3ByZWZpeD0kKGV4ZWNfcHJlZml4KSIgXAogCSJpbmZvZGlyPSQoaW5mb2RpcikiIFwKIAkibGliZGlyPSQobGliZGlyKSIgXAorCSJtYW5kaXI9JChtYW5kaXIpIiBcCiAJInByZWZpeD0kKHByZWZpeCkiIFwKIAkiQVI9JChBUikiIFwKIAkiQVM9JChBUykiIFwKQEAgLTQ2Miw3ICs0OTIsNyBAQAogQUNMT0NBTF9BTUZMQUdTID0gJChBQ0xPQ0FMX0FNRkxBR1MpIC1JIG00CiBsaWJfTFRMSUJSQVJJRVMgPSBsaWJmZmkubGEKIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYmZmaV9jb252ZW5pZW5jZS5sYQotbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvZGVidWcuYyBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCitsaWJmZmlfbGFfU09VUkNFUyA9IHNyYy9wcmVwX2NpZi5jIHNyYy90eXBlcy5jIFwKIAkJc3JjL3Jhd19hcGkuYyBzcmMvamF2YV9yYXdfYXBpLmMgc3JjL2Nsb3N1cmVzLmMKIAogcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwpAQCAtNDc1LDE5ICs1MDUsMjAgQEAKIAkkKGFtX19hcHBlbmRfMTUpICQoYW1fX2FwcGVuZF8xNikgJChhbV9fYXBwZW5kXzE3KSBcCiAJJChhbV9fYXBwZW5kXzE4KSAkKGFtX19hcHBlbmRfMTkpICQoYW1fX2FwcGVuZF8yMCkgXAogCSQoYW1fX2FwcGVuZF8yMSkgJChhbV9fYXBwZW5kXzIyKSAkKGFtX19hcHBlbmRfMjMpIFwKLQkkKGFtX19hcHBlbmRfMjQpICQoYW1fX2FwcGVuZF8yNSkKKwkkKGFtX19hcHBlbmRfMjQpICQoYW1fX2FwcGVuZF8yNSkgJChhbV9fYXBwZW5kXzI2KSBcCisJJChhbV9fYXBwZW5kXzI3KSAkKGFtX19hcHBlbmRfMjgpCiBsaWJmZmlfY29udmVuaWVuY2VfbGFfU09VUkNFUyA9ICQobGliZmZpX2xhX1NPVVJDRVMpCiBub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUykKLUFNX0NGTEFHUyA9IC1XYWxsIC1nIC1mZXhjZXB0aW9ucwotbGliZmZpX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gICQoQU1fTFRMREZMQUdTKQotQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMKLUFNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCitBTV9DRkxBR1MgPSAtZyAkKGFtX19hcHBlbmRfMjkpCitsaWJmZmlfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gYGdyZXAgLXYgJ15cIycgJChzcmNkaXIpL2xpYnRvb2wtdmVyc2lvbmAgJChMVExERkxBR1MpICQoQU1fTFRMREZMQUdTKQorQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLURGRklfQlVJTERJTkcKK0FNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1nCiBhbGw6IGZmaWNvbmZpZy5oCiAJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLXJlY3Vyc2l2ZQogCiAuU1VGRklYRVM6CiAuU1VGRklYRVM6IC5TIC5jIC5kdmkgLmxvIC5vIC5vYmogLnBzCi1hbS0tcmVmcmVzaDoKK2FtLS1yZWZyZXNoOiBNYWtlZmlsZQogCUA6CiAkKHNyY2RpcikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKIAlAZm9yIGRlcCBpbiAkPzsgZG8gXApAQCAtNTIzLDEwICs1NTQsOCBAQAogJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKIAogZmZpY29uZmlnLmg6IHN0YW1wLWgxCi0JQGlmIHRlc3QgISAtZiAkQDsgdGhlbiBcCi0JICBybSAtZiBzdGFtcC1oMTsgXAotCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgc3RhbXAtaDE7IFwKLQllbHNlIDo7IGZpCisJQGlmIHRlc3QgISAtZiAkQDsgdGhlbiBybSAtZiBzdGFtcC1oMTsgZWxzZSA6OyBmaQorCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gJChNQUtFKSAkKEFNX01BS0VGTEFHUykgc3RhbXAtaDE7IGVsc2UgOjsgZmkKIAogc3RhbXAtaDE6ICQoc3JjZGlyKS9mZmljb25maWcuaC5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBybSAtZiBzdGFtcC1oMQpAQCAtNTQwLDYgKzU2OSw4IEBACiAJLXJtIC1mIGZmaWNvbmZpZy5oIHN0YW1wLWgxCiBsaWJmZmkucGM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9saWJmZmkucGMuaW4KIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACitmZmljb25maWcucHk6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9mZmljb25maWcucHkuaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTOiAkKGxpYl9MVExJQlJBUklFUykKIAlAJChOT1JNQUxfSU5TVEFMTCkKIAl0ZXN0IC16ICIkKGxpYmRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmRpcikiCkBAIC01ODYsMTIgKzYxNywxMiBAQAogc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjLyQoREVQRElSKQogCUA6ID4gc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKLXNyYy9kZWJ1Zy5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3ByZXBfY2lmLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvdHlwZXMubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9yYXdfYXBpLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvamF2YV9yYXdfYXBpLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvY2xvc3VyZXMubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9kZWJ1Zy5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL21pcHMvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIHNyYy9taXBzCiAJQDogPiBzcmMvbWlwcy8kKGFtX19kaXJzdGFtcCkKQEAgLTcxNCw2ICs3NDUsOCBAQAogCXNyYy9hcm0vJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2FybS9mZmkubG86IHNyYy9hcm0vJChhbV9fZGlyc3RhbXApIFwKIAlzcmMvYXJtLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9hcm0vdHJhbXBvbGluZS5sbzogc3JjL2FybS8kKGFtX19kaXJzdGFtcCkgXAorCXNyYy9hcm0vJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2F2cjMyLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvYXZyMzIKIAlAOiA+IHNyYy9hdnIzMi8kKGFtX19kaXJzdGFtcCkKQEAgLTc0NCw2ICs3NzcsMTYgQEAKIAlzcmMvZnJ2LyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9mcnYvZmZpLmxvOiBzcmMvZnJ2LyQoYW1fX2RpcnN0YW1wKSBcCiAJc3JjL2Zydi8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApOgorCUAkKE1LRElSX1ApIHNyYy9tb3hpZQorCUA6ID4gc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCk6CisJQCQoTUtESVJfUCkgc3JjL21veGllLyQoREVQRElSKQorCUA6ID4gc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS9lYWJpLmxvOiBzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApIFwKKwlzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllL2ZmaS5sbzogc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKSBcCisJc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9zMzkwLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvczM5MAogCUA6ID4gc3JjL3MzOTAvJChhbV9fZGlyc3RhbXApCkBAIC03ODYsOSArODI5LDkgQEAKIHNyYy9wYS9mZmkubG86IHNyYy9wYS8kKGFtX19kaXJzdGFtcCkgc3JjL3BhLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9wYS9ocHV4MzIubG86IHNyYy9wYS8kKGFtX19kaXJzdGFtcCkgXAogCXNyYy9wYS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCi1saWJmZmkubGE6ICQobGliZmZpX2xhX09CSkVDVFMpICQobGliZmZpX2xhX0RFUEVOREVOQ0lFUykgCitsaWJmZmkubGE6ICQobGliZmZpX2xhX09CSkVDVFMpICQobGliZmZpX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJmZmlfbGFfREVQRU5ERU5DSUVTKSAKIAkkKGxpYmZmaV9sYV9MSU5LKSAtcnBhdGggJChsaWJkaXIpICQobGliZmZpX2xhX09CSkVDVFMpICQobGliZmZpX2xhX0xJQkFERCkgJChMSUJTKQotbGliZmZpX2NvbnZlbmllbmNlLmxhOiAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9ERVBFTkRFTkNJRVMpIAorbGliZmZpX2NvbnZlbmllbmNlLmxhOiAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZmZpX2NvbnZlbmllbmNlX2xhX0RFUEVOREVOQ0lFUykgCiAJJChMSU5LKSAgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CkBAIC04MDEsNiArODQ0LDggQEAKIAktcm0gLWYgc3JjL2FybS9mZmkubG8KIAktcm0gLWYgc3JjL2FybS9zeXN2LiQoT0JKRVhUKQogCS1ybSAtZiBzcmMvYXJtL3N5c3YubG8KKwktcm0gLWYgc3JjL2FybS90cmFtcG9saW5lLiQoT0JKRVhUKQorCS1ybSAtZiBzcmMvYXJtL3RyYW1wb2xpbmUubG8KIAktcm0gLWYgc3JjL2F2cjMyL2ZmaS4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL2F2cjMyL2ZmaS5sbwogCS1ybSAtZiBzcmMvYXZyMzIvc3lzdi4kKE9CSkVYVCkKQEAgLTgzNyw2ICs4ODIsMTAgQEAKIAktcm0gLWYgc3JjL21pcHMvbjMyLmxvCiAJLXJtIC1mIHNyYy9taXBzL28zMi4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL21pcHMvbzMyLmxvCisJLXJtIC1mIHNyYy9tb3hpZS9lYWJpLiQoT0JKRVhUKQorCS1ybSAtZiBzcmMvbW94aWUvZWFiaS5sbworCS1ybSAtZiBzcmMvbW94aWUvZmZpLiQoT0JKRVhUKQorCS1ybSAtZiBzcmMvbW94aWUvZmZpLmxvCiAJLXJtIC1mIHNyYy9wYS9mZmkuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9wYS9mZmkubG8KIAktcm0gLWYgc3JjL3BhL2hwdXgzMi4kKE9CSkVYVCkKQEAgLTkxOSw2ICs5NjgsNyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hbHBoYS8kKERFUERJUikvb3NmLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2FybS8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2FybS8kKERFUERJUikvc3lzdi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hcm0vJChERVBESVIpL3RyYW1wb2xpbmUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXZyMzIvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hdnIzMi8kKERFUERJUikvc3lzdi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9jcmlzLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKQEAgLTkzNCw2ICs5ODQsOCBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9taXBzLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbWlwcy8kKERFUERJUikvbjMyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21pcHMvJChERVBESVIpL28zMi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9tb3hpZS8kKERFUERJUikvZWFiaS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9tb3hpZS8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL3BhLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvcGEvJChERVBESVIpL2hwdXgzMi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9wYS8kKERFUERJUikvbGludXguUGxvQGFtX19xdW90ZUAKQEAgLTEwMjksNiArMTA4MSw3IEBACiAJLXJtIC1yZiBzcmMvbTMyci8ubGlicyBzcmMvbTMyci9fbGlicwogCS1ybSAtcmYgc3JjL202OGsvLmxpYnMgc3JjL202OGsvX2xpYnMKIAktcm0gLXJmIHNyYy9taXBzLy5saWJzIHNyYy9taXBzL19saWJzCisJLXJtIC1yZiBzcmMvbW94aWUvLmxpYnMgc3JjL21veGllL19saWJzCiAJLXJtIC1yZiBzcmMvcGEvLmxpYnMgc3JjL3BhL19saWJzCiAJLXJtIC1yZiBzcmMvcG93ZXJwYy8ubGlicyBzcmMvcG93ZXJwYy9fbGlicwogCS1ybSAtcmYgc3JjL3MzOTAvLmxpYnMgc3JjL3MzOTAvX2xpYnMKQEAgLTEyMjEsOSArMTI3NCw3IEBACiAJQCQoTk9STUFMX1VOSU5TVEFMTCkKIAlAbGlzdD0nJChwa2djb25maWdfREFUQSknOyB0ZXN0IC1uICIkKHBrZ2NvbmZpZ2RpcikiIHx8IGxpc3Q9OyBcCiAJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLQl0ZXN0IC1uICIkJGZpbGVzIiB8fCBleGl0IDA7IFwKLQllY2hvICIgKCBjZCAnJChERVNURElSKSQocGtnY29uZmlnZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JY2QgIiQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikiICYmIHJtIC1mICQkZmlsZXMKKwlkaXI9JyQoREVTVERJUikkKHBrZ2NvbmZpZ2RpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCiAKICMgVGhpcyBkaXJlY3RvcnkncyBzdWJkaXJlY3RvcmllcyBhcmUgbW9zdGx5IGluZGVwZW5kZW50OyB5b3UgY2FuIGNkCiAjIGludG8gdGhlbSBhbmQgcnVuIGBtYWtlJyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhpcyBNYWtlZmlsZS4KQEAgLTEyMzIsNyArMTI4Myw3IEBACiAjICAgICAod2hpY2ggd2lsbCBjYXVzZSB0aGUgTWFrZWZpbGVzIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4geW91IHJ1biBgbWFrZScpOwogIyAoMikgb3RoZXJ3aXNlLCBwYXNzIHRoZSBkZXNpcmVkIHZhbHVlcyBvbiB0aGUgYG1ha2UnIGNvbW1hbmQgbGluZS4KICQoUkVDVVJTSVZFX1RBUkdFVFMpOgotCUBmYWlsY29tPSdleGl0IDEnOyBcCisJQGZhaWw9IGZhaWxjb209J2V4aXQgMSc7IFwKIAlmb3IgZiBpbiB4ICQkTUFLRUZMQUdTOyBkbyBcCiAJICBjYXNlICQkZiBpbiBcCiAJICAgICo9KiB8IC0tWyFrXSopOzsgXApAQCAtMTI1Nyw3ICsxMzA4LDcgQEAKIAlmaTsgdGVzdCAteiAiJCRmYWlsIgogCiAkKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKToKLQlAZmFpbGNvbT0nZXhpdCAxJzsgXAorCUBmYWlsPSBmYWlsY29tPSdleGl0IDEnOyBcCiAJZm9yIGYgaW4geCAkJE1BS0VGTEFHUzsgZG8gXAogCSAgY2FzZSAkJGYgaW4gXAogCSAgICAqPSogfCAtLVsha10qKTs7IFwKQEAgLTE0MjQsNyArMTQ3NSw4IEBACiAJICB0b3BfZGlzdGRpcj0iJCh0b3BfZGlzdGRpcikiIGRpc3RkaXI9IiQoZGlzdGRpcikiIFwKIAkgIGRpc3QtaW5mbwogCS10ZXN0IC1uICIkKGFtX19za2lwX21vZGVfZml4KSIgXAotCXx8IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtNzc3IC1leGVjIGNobW9kIGErcnd4IHt9IFw7IC1vIFwKKwl8fCBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTc1NSBcCisJCS1leGVjIGNobW9kIHUrcnd4LGdvK3J4IHt9IFw7IC1vIFwKIAkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWxpbmtzIDEgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKIAkgICEgLXR5cGUgZCAhIC1wZXJtIC00MDAgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKIAkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWV4ZWMgJChpbnN0YWxsX3NoKSAtYyAtbSBhK3Ige30ge30gXDsgXApAQCAtMTQzNCw3ICsxNDg2LDExIEBACiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtYnppcDI6IGRpc3RkaXIKLQl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgYnppcDIgLTkgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBCWklQMj0kJHtCWklQMi0tOX0gYnppcDIgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LWx6aXA6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgbHppcCAtYyAkJHtMWklQX09QVC0tOX0gPiQoZGlzdGRpcikudGFyLmx6CiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtbHptYTogZGlzdGRpcgpAQCAtMTQ0Miw3ICsxNDk4LDcgQEAKIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKIAogZGlzdC14ejogZGlzdGRpcgotCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCB4eiAtYyA+JChkaXN0ZGlyKS50YXIueHoKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgWFpfT1BUPSQke1haX09QVC0tZX0geHogLWMgPiQoZGlzdGRpcikudGFyLnh6CiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtdGFyWjogZGlzdGRpcgpAQCAtMTQ2OCwxNyArMTUyNCwxOSBAQAogZGlzdGNoZWNrOiBkaXN0CiAJY2FzZSAnJChESVNUX0FSQ0hJVkVTKScgaW4gXAogCSoudGFyLmd6KikgXAotCSAgR1pJUD0kKEdaSVBfRU5WKSBndW56aXAgLWMgJChkaXN0ZGlyKS50YXIuZ3ogfCAkKGFtX191bnRhcikgOztcCisJICBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWRjICQoZGlzdGRpcikudGFyLmd6IHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLmJ6MiopIFwKLQkgIGJ1bnppcDIgLWMgJChkaXN0ZGlyKS50YXIuYnoyIHwgJChhbV9fdW50YXIpIDs7XAorCSAgYnppcDIgLWRjICQoZGlzdGRpcikudGFyLmJ6MiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5sem1hKikgXAotCSAgdW5sem1hIC1jICQoZGlzdGRpcikudGFyLmx6bWEgfCAkKGFtX191bnRhcikgOztcCisJICBsem1hIC1kYyAkKGRpc3RkaXIpLnRhci5sem1hIHwgJChhbV9fdW50YXIpIDs7XAorCSoudGFyLmx6KikgXAorCSAgbHppcCAtZGMgJChkaXN0ZGlyKS50YXIubHogfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIueHoqKSBcCiAJICB4eiAtZGMgJChkaXN0ZGlyKS50YXIueHogfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIuWiopIFwKIAkgIHVuY29tcHJlc3MgLWMgJChkaXN0ZGlyKS50YXIuWiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnNoYXIuZ3oqKSBcCi0JICBHWklQPSQoR1pJUF9FTlYpIGd1bnppcCAtYyAkKGRpc3RkaXIpLnNoYXIuZ3ogfCB1bnNoYXIgOztcCisJICBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWRjICQoZGlzdGRpcikuc2hhci5neiB8IHVuc2hhciA7O1wKIAkqLnppcCopIFwKIAkgIHVuemlwICQoZGlzdGRpcikuemlwIDs7XAogCWVzYWMKQEAgLTE0OTIsNiArMTU1MCw3IEBACiAJICAmJiBhbV9fY3dkPWBwd2RgIFwKIAkgICYmICQoYW1fX2NkKSAkKGRpc3RkaXIpL19idWlsZCBcCiAJICAmJiAuLi9jb25maWd1cmUgLS1zcmNkaXI9Li4gLS1wcmVmaXg9IiQkZGNfaW5zdGFsbF9iYXNlIiBcCisJICAgICQoQU1fRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUykgXAogCSAgICAkKERJU1RDSEVDS19DT05GSUdVUkVfRkxBR1MpIFwKIAkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIFwKIAkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGR2aSBcCkBAIC0xNTIwLDggKzE1NzksMTYgQEAKIAkgIGxpc3Q9JyQoRElTVF9BUkNISVZFUyknOyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRpOyBkb25lKSB8IFwKIAkgIHNlZCAtZSAxaCAtZSAxcy8uLz0vZyAtZSAxcCAtZSAxeCAtZSAnJCRwJyAtZSAnJCR4JwogZGlzdHVuaW5zdGFsbGNoZWNrOgotCUAkKGFtX19jZCkgJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIFwKLQkmJiB0ZXN0IGAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIHwgd2MgLWxgIC1sZSAxIFwKKwlAdGVzdCAtbiAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgfHwgeyBcCisJICBlY2hvICdFUlJPUjogdHJ5aW5nIHRvIHJ1biAkQCB3aXRoIGFuIGVtcHR5JyBcCisJICAgICAgICckJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgPiYyOyBcCisJICBleGl0IDE7IFwKKwl9OyBcCisJJChhbV9fY2QpICckKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyB8fCB7IFwKKwkgIGVjaG8gJ0VSUk9SOiBjYW5ub3QgY2hkaXIgaW50byAkKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyA+JjI7IFwKKwkgIGV4aXQgMTsgXAorCX07IFwKKwl0ZXN0IGAkKGFtX19kaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtZXEgMCBcCiAJICAgfHwgeyBlY2hvICJFUlJPUjogZmlsZXMgbGVmdCBhZnRlciB1bmluc3RhbGw6IiA7IFwKIAkgICAgICAgIGlmIHRlc3QgLW4gIiQoREVTVERJUikiOyB0aGVuIFwKIAkgICAgICAgICAgZWNobyAiICAoY2hlY2sgREVTVERJUiBzdXBwb3J0KSI7IFwKQEAgLTE1NTUsMTAgKzE2MjIsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stcmVjdXJzaXZlCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKQEAgLTE1ODcsNiArMTY1OSw4IEBACiAJLXJtIC1mIHNyYy9tNjhrLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvbWlwcy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9taXBzLyQoYW1fX2RpcnN0YW1wKQorCS1ybSAtZiBzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCS1ybSAtZiBzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9wYS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9wYS8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL3Bvd2VycGMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQpAQCAtMTYxMiw3ICsxNjg2LDcgQEAKIAogZGlzdGNsZWFuOiBkaXN0Y2xlYW4tcmVjdXJzaXZlCiAJLXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpCi0JLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCisJLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9tb3hpZS8kKERFUERJUikgc3JjL3BhLyQoREVQRElSKSBzcmMvcG93ZXJwYy8kKERFUERJUikgc3JjL3MzOTAvJChERVBESVIpIHNyYy9zaC8kKERFUERJUikgc3JjL3NoNjQvJChERVBESVIpIHNyYy9zcGFyYy8kKERFUERJUikgc3JjL3g4Ni8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKIGRpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAogCWRpc3RjbGVhbi1oZHIgZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MKQEAgLTE2NTQsMTMgKzE3MjgsMTQgQEAKIAlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKIAkgIGlmIHRlc3QgLWYgIiQkcCIgfHwgdGVzdCAtZCAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKIAkgICQoYW1fX3N0cmlwX2RpcikgXAotCSAgaWYgdGVzdCAtZCAiJCRkJCRwIjsgdGhlbiBcCisJICBkMj0kJGQkJHA7IFwKKwkgIGlmIHRlc3QgLWQgIiQkZDIiOyB0aGVuIFwKIAkgICAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCiAJICAgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiIgfHwgZXhpdCAxOyBcCi0JICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZCQkcCcvKiAnJChERVNURElSKSQoaHRtbGRpcikvJCRmJyI7IFwKLQkgICAgJChJTlNUQUxMX0RBVEEpICIkJGQkJHAiLyogIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiIgfHwgZXhpdCAkJD87IFwKKwkgICAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkMicvKiAnJChERVNURElSKSQoaHRtbGRpcikvJCRmJyI7IFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICIkJGQyIi8qICIkKERFU1RESVIpJChodG1sZGlyKS8kJGYiIHx8IGV4aXQgJCQ/OyBcCiAJICBlbHNlIFwKLQkgICAgbGlzdDI9IiQkbGlzdDIgJCRkJCRwIjsgXAorCSAgICBsaXN0Mj0iJCRsaXN0MiAkJGQyIjsgXAogCSAgZmk7IFwKIAlkb25lOyBcCiAJdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBlY2hvICIkJGxpc3QyIiB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCkBAIC0xNjkyLDggKzE3NjcsMTMgQEAKIAkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQoaW5mb2RpciknIjsgXAogCSAgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgIiQoREVTVERJUikkKGluZm9kaXIpIiB8fCBleGl0ICQkPzsgZG9uZQogCUAkKFBPU1RfSU5TVEFMTCkKLQlAaWYgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24gJiYgXAotCSAgICAgaW5zdGFsbC1pbmZvIC0tdmVyc2lvbiAyPiYxIHwgc2VkIDFxIHwgZ3JlcCAtaSAtdiBkZWJpYW4pID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJQGFtX19ydW5faW5zdGFsbGluZm89eWVzOyBcCisJY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCisJICBufG5vfE5PKSBhbV9fcnVuX2luc3RhbGxpbmZvPW5vOzsgXAorCSAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMSBcCisJICAgICAgIHx8IGFtX19ydW5faW5zdGFsbGluZm89bm87OyBcCisJZXNhYzsgXAorCWlmIHRlc3QgJCRhbV9fcnVuX2luc3RhbGxpbmZvID0geWVzOyB0aGVuIFwKIAkgIGxpc3Q9JyQoSU5GT19ERVBTKSc7IHRlc3QgLW4gIiQoaW5mb2RpcikiIHx8IGxpc3Q9OyBcCiAJICBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIFwKIAkgICAgcmVsZmlsZT1gZWNobyAiJCRmaWxlIiB8IHNlZCAnc3xeLiovfHwnYDsgXApAQCAtMTczMiw3ICsxODEyLDcgQEAKIG1haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tcmVjdXJzaXZlCiAJLXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpCiAJLXJtIC1yZiAkKHRvcF9zcmNkaXIpL2F1dG9tNHRlLmNhY2hlCi0JLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCisJLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9tb3hpZS8kKERFUERJUikgc3JjL3BhLyQoREVQRElSKSBzcmMvcG93ZXJwYy8kKERFUERJUikgc3JjL3MzOTAvJChERVBESVIpIHNyYy9zaC8kKERFUERJUikgc3JjL3NoNjQvJChERVBESVIpIHNyYy9zcGFyYy8kKERFUERJUikgc3JjL3g4Ni8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKIG1haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWFtaW5mbyBcCiAJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1haW50YWluZXItY2xlYW4tdnRpCkBAIC0xNzYxLDI0ICsxODQxLDI0IEBACiAJYWxsIGFsbC1hbSBhbS0tcmVmcmVzaCBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1hbWluZm8gXAogCWNsZWFuLWdlbmVyaWMgY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBcCiAJY2xlYW4tbm9pbnN0TFRMSUJSQVJJRVMgY3RhZ3MgY3RhZ3MtcmVjdXJzaXZlIGRpc3QgZGlzdC1hbGwgXAotCWRpc3QtYnppcDIgZGlzdC1nemlwIGRpc3QtaW5mbyBkaXN0LWx6bWEgZGlzdC1zaGFyIGRpc3QtdGFyWiBcCi0JZGlzdC14eiBkaXN0LXppcCBkaXN0Y2hlY2sgZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIFwKLQlkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4taGRyIGRpc3RjbGVhbi1saWJ0b29sIFwKLQlkaXN0Y2xlYW4tdGFncyBkaXN0Y2xlYW5jaGVjayBkaXN0ZGlyIGRpc3R1bmluc3RhbGxjaGVjayBkdmkgXAotCWR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBcCi0JaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBcCi0JaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIFwKLQlpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAotCWluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcGtnY29uZmlnREFUQSBcCi0JaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwKLQlpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgaW5zdGFsbGRpcnMtYW0gbWFpbnRhaW5lci1jbGVhbiBcCi0JbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwKLQltYWludGFpbmVyLWNsZWFuLXZ0aSBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1hbWluZm8gXAotCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKLQltb3N0bHljbGVhbi12dGkgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHRhZ3MtcmVjdXJzaXZlIFwKLQl1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1kdmktYW0gdW5pbnN0YWxsLWh0bWwtYW0gXAotCXVuaW5zdGFsbC1pbmZvLWFtIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyB1bmluc3RhbGwtcGRmLWFtIFwKLQl1bmluc3RhbGwtcGtnY29uZmlnREFUQSB1bmluc3RhbGwtcHMtYW0KKwlkaXN0LWJ6aXAyIGRpc3QtZ3ppcCBkaXN0LWluZm8gZGlzdC1semlwIGRpc3QtbHptYSBkaXN0LXNoYXIgXAorCWRpc3QtdGFyWiBkaXN0LXh6IGRpc3QtemlwIGRpc3RjaGVjayBkaXN0Y2xlYW4gXAorCWRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi1oZHIgXAorCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RjbGVhbmNoZWNrIGRpc3RkaXIgXAorCWRpc3R1bmluc3RhbGxjaGVjayBkdmkgZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gXAorCWluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIFwKKwlpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBcCisJaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gXAorCWluc3RhbGwtbGliTFRMSUJSQVJJRVMgaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gXAorCWluc3RhbGwtcGtnY29uZmlnREFUQSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBcCisJaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBpbnN0YWxsZGlycy1hbSBcCisJbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWFtaW5mbyBcCisJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1haW50YWluZXItY2xlYW4tdnRpIG1vc3RseWNsZWFuIFwKKwltb3N0bHljbGVhbi1hbWluZm8gbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIFwKKwltb3N0bHljbGVhbi1saWJ0b29sIG1vc3RseWNsZWFuLXZ0aSBwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgXAorCXRhZ3MtcmVjdXJzaXZlIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWR2aS1hbSBcCisJdW5pbnN0YWxsLWh0bWwtYW0gdW5pbnN0YWxsLWluZm8tYW0gdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwl1bmluc3RhbGwtcGRmLWFtIHVuaW5zdGFsbC1wa2djb25maWdEQVRBIHVuaW5zdGFsbC1wcy1hbQogCiAKICMgTm8gaW5zdGFsbC1odG1sIG9yIGluc3RhbGwtcGRmIHN1cHBvcnQgaW4gYXV0b21ha2UgeWV0CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FCmluZGV4IDE2N2RlNDIuLmJjYzcxNzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FCkBAIC0xLDcgKzEsNyBAQAogU3RhdHVzCiA9PT09PT0KIAotbGliZmZpLTMuMC4xMCB3YXMgcmVsZWFzZWQgb24gWFhYWFhYWFhYWCwgMjAxMC4gQ2hlY2sgdGhlIGxpYmZmaSB3ZWIKK2xpYmZmaS0zLjAuMTEgd2FzIHJlbGVhc2VkIG9uIEFwcmlsIDExLCAyMDEyLiAgQ2hlY2sgdGhlIGxpYmZmaSB3ZWIKIHBhZ2UgZm9yIHVwZGF0ZXM6IDxVUkw6aHR0cDovL3NvdXJjZXdhcmUub3JnL2xpYmZmaS8+LgogCiAKQEAgLTQzLDcgKzQzLDcgQEAKIEZvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRldGFpbHMgYW5kIHRlc3Rpbmcgc3RhdHVzLCBwbGVhc2UKIHJlZmVyIHRvIHRoZSB3aWtpIHBhZ2UgaGVyZToKIAotIGh0dHA6Ly93d3cubW94aWVsb2dpYy5vcmcvd2lraS9pbmRleC5waHA/dGl0bGU9TGliZmZpXzMuMC4xMAorIGh0dHA6Ly93d3cubW94aWVsb2dpYy5vcmcvd2lraS9pbmRleC5waHA/dGl0bGU9TGliZmZpXzMuMC4xMQogCiBBdCB0aGUgdGltZSBvZiByZWxlYXNlLCB0aGUgZm9sbG93aW5nIGJhc2ljIGNvbmZpZ3VyYXRpb25zIGhhdmUgYmVlbgogdGVzdGVkOgpAQCAtNTQsMTIgKzU0LDE3IEBACiB8IEFscGhhICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBBbHBoYSAgICAgICAgfCBUcnU2NCAgICAgICAgICAgIHwKIHwgQVJNICAgICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IEFSTSAgICAgICAgICB8IGlPUyAgICAgICAgICAgICAgfAogfCBBVlIzMiAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgSFBQQSAgICAgICAgIHwgSFBVWCAgICAgICAgICAgICB8CiB8IElBLTY0ICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBNNjhLICAgICAgICAgfCBGcmVlTWlOVCAgICAgICAgIHwKK3wgTTY4SyAgICAgICAgIHwgUlRFTVMgICAgICAgICAgICB8CiB8IE1JUFMgICAgICAgICB8IElSSVggICAgICAgICAgICAgfAogfCBNSVBTICAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgTUlQUyAgICAgICAgIHwgUlRFTVMgICAgICAgICAgICB8CiB8IE1JUFM2NCAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBQb3dlclBDICAgICAgfCBBTUlHQSAgICAgICAgICAgIHwKIHwgUG93ZXJQQyAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IFBvd2VyUEMgICAgICB8IE1hYyBPU1ggICAgICAgICAgfAogfCBQb3dlclBDICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKQEAgLTcxLDE1ICs3NiwxOCBAQAogfCBTUEFSQzY0ICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgU1BBUkM2NCAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IEZyZWVCU0QgICAgICAgICAgfAorfCBYODYgICAgICAgICAgfCBJbnRlcml4ICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwga0ZyZWVCU0QgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBNYWMgT1NYICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgT3BlbkJTRCAgICAgICAgICB8Cit8IFg4NiAgICAgICAgICB8IE9TLzIgICAgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBTb2xhcmlzICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgV2luZG93cy9DeWd3aW4gICB8CiB8IFg4NiAgICAgICAgICB8IFdpbmRvd3MvTWluZ1cgICAgfAogfCBYODYtNjQgICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IFg4Ni02NCAgICAgICB8IExpbnV4L3gzMiAgICAgICAgfAogfCBYODYtNjQgICAgICAgfCBPcGVuQlNEICAgICAgICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgV2luZG93cy9NaW5nVyAgICB8CiB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tfApAQCAtMTEzLDkgKzEyMSwxNiBAQAogTWljcm9zb2Z0J3MgVmlzdWFsIEMrKyBjb21waWxlci4gIEluIHRoaXMgY2FzZSwgdXNlIHRoZSBtc3ZjYy5zaAogd3JhcHBlciBzY3JpcHQgZHVyaW5nIGNvbmZpZ3VyYXRpb24gbGlrZSBzbzoKIAotcGF0aC90by9jb25maWd1cmUgLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyBcCi0JQ0M9cGF0aC90by9tc3ZjYy5zaCBMRD1saW5rIFwKLQlDUFA9XCJjbCAtbm9sb2dvIC1FUFwiCitwYXRoL3RvL2NvbmZpZ3VyZSBDQz1wYXRoL3RvL21zdmNjLnNoIExEPWxpbmsgQ1BQPVwiY2wgLW5vbG9nbyAtRVBcIgorCitGb3IgNjQtYml0IFdpbmRvd3MgYnVpbGRzLCB1c2UgQ0M9InBhdGgvdG8vbXN2Y2Muc2ggLW02NCIuCitZb3UgbWF5IGFsc28gbmVlZCB0byBzcGVjaWZ5IC0tYnVpbGQgYXBwcm9wcmlhdGVseS4gV2hlbiBidWlsZGluZyB3aXRoIE1TVkMKK3VuZGVyIGEgTWluZ1cgZW52aXJvbm1lbnQsIHlvdSBtYXkgbmVlZCB0byByZW1vdmUgdGhlIGxpbmUgaW4gY29uZmlndXJlCit0aGF0IHNldHMgJ2ZpeF9zcmNmaWxlX3BhdGgnIHRvIGEgJ2N5Z3BhdGgnIGNvbW1hbmQuICgnY3lncGF0aCcgaXMgbm90CitwcmVzZW50IGluIE1pbmdXLCBhbmQgaXMgbm90IHJlcXVpcmVkIHdoZW4gdXNpbmcgTWluZ1ctc3R5bGUgcGF0aHMuKQorCitGb3IgaU9TIGJ1aWxkcywgcnVuIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgYW5kIHRoZW4KK2xpYmZmaS54Y29kZXByb2ogc2hvdWxkIHdvcmsuCiAKIENvbmZpZ3VyZSBoYXMgbWFueSBvdGhlciBvcHRpb25zLiBVc2UgImNvbmZpZ3VyZSAtLWhlbHAiIHRvIHNlZSB0aGVtIGFsbC4KIApAQCAtMTMzLDExICsxNDgsMzAgQEAKIAogU2VlIHRoZSBDaGFuZ2VMb2cgZmlsZXMgZm9yIGRldGFpbHMuCiAKLTMuMC4xMCA/Pz8tPz8tPz8KLSAgICAgICAgRml4IHRoZSBONjQgYnVpbGQgb24gbWlwcy1zZ2ktaXJpeDYuNS4KLQlUZXN0c3VpdGUgZml4ZXMgZm9yIFRydTY0IFVuaXguCiszLjAuMTEgQXByLTExLTEyCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB2YXJpYWRpYyBmdW5jdGlvbnMgKGZmaV9wcmVwX2NpZl92YXIpLgorCUFkZCBMaW51eC94MzIgc3VwcG9ydC4KKwlBZGQgdGhpc2NhbGwsIGZhc3RjYWxsIGFuZCBNU1ZDIGNkZWNsIHN1cHBvcnQgb24gV2luZG93cy4KKyAgICAgICAgQWRkIEFtaWdhIGFuZCBuZXdlciBNYWNPUyBzdXBwb3J0LgorCUFkZCBtNjhrIEZyZWVNaU5UIHN1cHBvcnQuCisJSW50ZWdyYXRpb24gd2l0aCBpT1MnIHhjb2RlIGJ1aWxkIHRvb2xzLgorCUZpeCBPY3Rlb24gYW5kIE1DNjg4ODEgc3VwcG9ydC4KKwlGaXggY29kZSBwZXNzaW1pemF0aW9ucy4KKyAgICAgICAgTG90cyBvZiBidWlsZCBmaXhlcy4KKworMy4wLjEwIEF1Zy0yMy0xMQorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgQXBwbGUncyBpT1MuCisJQWRkIHN1cHBvcnQgZm9yIEFSTSBWRlAgQUJJLgorICAgICAgICBBZGQgUlRFTVMgc3VwcG9ydCBmb3IgTUlQUyBhbmQgTTY4Sy4KKwlGaXggaW5zdHJ1Y3Rpb24gY2FjaGUgY2xlYXJpbmcgcHJvYmxlbXMgb24KKwkgIEFSTSBhbmQgU1BBUkMuCisJRml4IHRoZSBONjQgYnVpbGQgb24gbWlwcy1zZ2ktaXJpeDYuNS4KIAlFbmFibGUgYnVpbGRzIHdpdGggTWljcm9zb2Z0J3MgY29tcGlsZXIuCi0JRW5hYmxlIHg4NiBidWlsZHMgd2l0aCBTdW4ncyBjb21waWxlci4KKwlFbmFibGUgeDg2IGJ1aWxkcyB3aXRoIE9yYWNsZSdzIFNvbGFyaXMgY29tcGlsZXIuCisJRml4IHN1cHBvcnQgZm9yIGNhbGxpbmcgY29kZSBjb21waWxlZCB3aXRoIE9yYWNsZSdzIFNwYXJjCisJICBTb2xhcmlzIGNvbXBpbGVyLgorCVRlc3RzdWl0ZSBmaXhlcyBmb3IgVHJ1NjQgVW5peC4KKwlBZGRpdGlvbmFsIHBsYXRmb3JtIHN1cHBvcnQuCiAKIDMuMC45IERlYy0zMS0wOQogICAgICAgICBBZGQgQVZSMzIgYW5kIHdpbjY0IHBvcnRzLiAgQWRkIEFSTSBzb2Z0ZnAgc3VwcG9ydC4KQEAgLTI2Nyw3ICszMDEsNyBAQAogQXV0aG9ycyAmIENyZWRpdHMKID09PT09PT09PT09PT09PT09CiAKLWxpYmZmaSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEFudGhvbnkgR3JlZW4gPGdyZWVuQHJlZGhhdC5jb20+LgorbGliZmZpIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQW50aG9ueSBHcmVlbiA8Z3JlZW5AbW94aWVsb2dpYy5jb20+LgogCiBUaGUgZGV2ZWxvcGVycyBvZiB0aGUgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gcHJvamVjdCBoYXZlIG1hZGUKIGlubnVtZXJhYmxlIHZhbHVhYmxlIGNvbnRyaWJ1dGlvbnMuICBTZWUgdGhlIENoYW5nZUxvZyBmaWxlIGZvcgpAQCAtMzE4LDUgKzM1Miw2IEBACiBUaGUgbGlzdCBhYm92ZSBpcyBhbG1vc3QgY2VydGFpbmx5IGluY29tcGxldGUgYW5kIGluYWNjdXJhdGUuICBJJ20KIGhhcHB5IHRvIG1ha2UgY29ycmVjdGlvbnMgb3IgYWRkaXRpb25zIHVwb24gcmVxdWVzdC4KIAotSWYgeW91IGhhdmUgYSBwcm9ibGVtLCBvciBoYXZlIGZvdW5kIGEgYnVnLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8KLWdyZWVuQHJlZGhhdC5jb20uCitJZiB5b3UgaGF2ZSBhIHByb2JsZW0sIG9yIGhhdmUgZm91bmQgYSBidWcsIHBsZWFzZSBzZW5kIGEgbm90ZSB0byB0aGUKK2F1dGhvciBhdCBncmVlbkBtb3hpZWxvZ2ljLmNvbSwgb3IgdGhlIHByb2plY3QgbWFpbGluZyBsaXN0IGF0CitsaWJmZmktZGlzY3Vzc0Bzb3VyY2V3YXJlLm9yZy4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNAppbmRleCBjOGU1MjZmLi5kMzMzZmYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9hY2xvY2FsLm00CkBAIC0xLDcgKzEsOCBAQAotIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuMTEuMSAtKi0gQXV0b2NvbmYgLSotCisjIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS4xMS4zIC0qLSBBdXRvY29uZiAtKi0KIAogIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsCi0jIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xMywxOCArMTQsODM5IEBACiAKIG00X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCiAgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKLW00X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjVdLCwKLVttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42NS4KK200X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjhdLCwKK1ttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42OC4KIFlvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEl0IG1heSB3b3JrLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8uCiBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KIFRvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBsdGRsLm00IC0gQ29uZmlndXJlIGx0ZGwgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQorIworIyAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA2LCAyMDA3LCAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIFdyaXR0ZW4gYnkgVGhvbWFzIFRhbm5lciwgMTk5OQorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDE4IExURExfSU5JVAorCisjIExUX0NPTkZJR19MVERMX0RJUihESVJFQ1RPUlksIFtMVERMLU1PREVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRElSRUNUT1JZIGNvbnRhaW5zIHRoZSBsaWJsdGRsIHNvdXJjZXMuICBJdCBpcyBva2F5IHRvIGNhbGwgdGhpcworIyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcywgYXMgbG9uZyBhcyB0aGUgc2FtZSBESVJFQ1RPUlkgaXMgYWx3YXlzIGdpdmVuLgorQUNfREVGVU4oW0xUX0NPTkZJR19MVERMX0RJUl0sCitbQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKQorXyQwKCQqKQorXSkjIExUX0NPTkZJR19MVERMX0RJUgorCisjIFdlIGJyZWFrIHRoaXMgb3V0IGludG8gYSBzZXBhcmF0ZSBtYWNybywgc28gdGhhdCB3ZSBjYW4gY2FsbCBpdCBzYWZlbHkKKyMgaW50ZXJuYWxseSB3aXRob3V0IGJlaW5nIGNhdWdodCBhY2NpZGVudGFsbHkgYnkgdGhlIHNlZCBzY2FuIGluIGxpYnRvb2xpemUuCittNF9kZWZ1bihbX0xUX0NPTkZJR19MVERMX0RJUl0sCitbZG5sIHJlbW92ZSB0cmFpbGluZyBzbGFzaGVzCittNF9wdXNoZGVmKFtfQVJHX0RJUl0sIG00X2JwYXRzdWJzdChbJDFdLCBbLyokXSkpCittNF9jYXNlKF9MVERMX0RJUiwKKwlbXSwgW2RubCBvbmx5IHNldCBsdF9sdGRsX2RpciBpZiBfQVJHX0RJUiBpcyBub3Qgc2ltcGx5IGAuJworCSAgICAgbTRfaWYoX0FSR19ESVIsIFsuXSwKKwkgICAgICAgICAgICAgW10sCisJCSBbbTRfZGVmaW5lKFtfTFRETF9ESVJdLCBfQVJHX0RJUikKKwkgICAgICAgICAgX0xUX1NIRUxMX0lOSVQoW2x0X2x0ZGxfZGlyPSddX0FSR19ESVJbJ10pXSldLAorICAgIFttNF9pZihfQVJHX0RJUiwgX0xURExfRElSLAorCSAgICBbXSwKKwlbbTRfZmF0YWwoW211bHRpcGxlIGxpYmx0ZGwgZGlyZWN0b3JpZXM6IGBdX0xURExfRElSWycsIGBdX0FSR19ESVJbJ10pXSldKQorbTRfcG9wZGVmKFtfQVJHX0RJUl0pCitdKSMgX0xUX0NPTkZJR19MVERMX0RJUgorCisjIEluaXRpYWxpc2U6CittNF9kZWZpbmUoW19MVERMX0RJUl0sIFtdKQorCisKKyMgX0xUX0JVSUxEX1BSRUZJWAorIyAtLS0tLS0tLS0tLS0tLS0tCisjIElmIEF1dG9jb25mIGlzIG5ldyBlbm91Z2gsIGV4cGFuZCB0byBgJHt0b3BfYnVpbGRfcHJlZml4fScsIG90aGVyd2lzZQorIyB0byBgJHt0b3BfYnVpbGRkaXJ9LycuCittNF9kZWZpbmUoW19MVF9CVUlMRF9QUkVGSVhdLAorW200X2lmZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwKKyAgIFttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbQUNfQVVUT0NPTkZfVkVSU0lPTl0pLCBbMi42Ml0pLAorCSAgWy0xXSwgW200X2lmZGVmKFtfQUNfSEFWRV9UT1BfQlVJTERfUFJFRklYXSwKKwkJCSAgWyR7dG9wX2J1aWxkX3ByZWZpeH1dLAorCQkJICBbJHt0b3BfYnVpbGRkaXJ9L10pXSwKKwkgIFske3RvcF9idWlsZF9wcmVmaXh9XSldLAorICAgWyR7dG9wX2J1aWxkZGlyfS9dKVtdZG5sCitdKQorCisKKyMgTFRETF9DT05WRU5JRU5DRQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgY29udmVuaWVuY2UgbGlicmFyeSBhbmQKKyMgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcworIyAtLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0CisjIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgaGVyZS4gIExJQkxUREwgd2lsbCBiZSBwcmVmaXhlZCB3aXRoCisjICcke3RvcF9idWlsZF9wcmVmaXh9JyBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB3aXRoICcke3RvcF9idWlsZGRpcn0vJywKKyMgYW5kIExURExJTkNMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3Bfc3JjZGlyfS8nIChub3RlIHRoZSBzaW5nbGUKKyMgcXVvdGVzISkuICBJZiB5b3VyIHBhY2thZ2UgaXMgbm90IGZsYXQgYW5kIHlvdSdyZSBub3QgdXNpbmcgYXV0b21ha2UsCisjIGRlZmluZSB0b3BfYnVpbGRfcHJlZml4LCB0b3BfYnVpbGRkaXIsIGFuZCB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkKKyMgaW4geW91ciBNYWtlZmlsZXMuCitBQ19ERUZVTihbTFRETF9DT05WRU5JRU5DRV0sCitbQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubAorZG5sIEFsdGhvdWdoIHRoZSBhcmd1bWVudCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9jdW1lbnRlZCwKK2RubCBMVERMX0NPTlZFTklFTkNFIHVzZWQgdG8gdGFrZSBhIERJUkVDVE9SWSBvcmd1bWVudCwgaWYgd2UgaGF2ZSBvbmUKK2RubCBoZXJlIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBhcyBhbnkgb3RoZXIgZGVjbGFyYXRpb24gb2YgbGlibHRkbCdzCitkbmwgbG9jYXRpb24hICBUaGlzIGFsc28gZW5zdXJlcyBsdF9sdGRsX2RpciBpcyBzZXQgd2hlbiBjb25maWd1cmUuYWMgaXMKK2RubCBub3QgeWV0IHVzaW5nIGFuIGV4cGxpY2l0IExUX0NPTkZJR19MVERMX0RJUi4KK200X2lmdmFsKFskMV0sIFtfTFRfQ09ORklHX0xURExfRElSKFskMV0pXSlkbmwKK18kMCgpCitdKSMgTFRETF9DT05WRU5JRU5DRQorCisjIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UgYWNjZXB0ZWQgYSBkaXJlY3RvcnkgYXJndW1lbnQgaW4gb2xkZXIgbGlidG9vbHMsCisjIG5vdyB3ZSBoYXZlIExUX0NPTkZJR19MVERMX0RJUjoKK0FVX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwKK1tfTFRfQ09ORklHX0xURExfRElSKFttNF9kZWZhdWx0KFskMV0sIFtsaWJsdGRsXSldKQorX0xURExfQ09OVkVOSUVOQ0VdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQkxURExfQ09OVkVOSUVOQ0VdLCBbXSkKKworCisjIF9MVERMX0NPTlZFTklFTkNFCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIENvZGUgc2hhcmVkIGJ5IExURExfQ09OVkVOSUVOQ0UgYW5kIExURExfSU5JVChbY29udmVuaWVuY2VdKS4KK200X2RlZnVuKFtfTFRETF9DT05WRU5JRU5DRV0sCitbY2FzZSAkZW5hYmxlX2x0ZGxfY29udmVuaWVuY2UgaW4KKyAgbm8pIEFDX01TR19FUlJPUihbdGhpcyBwYWNrYWdlIG5lZWRzIGEgY29udmVuaWVuY2UgbGlibHRkbF0pIDs7CisgICIiKSBlbmFibGVfbHRkbF9jb252ZW5pZW5jZT15ZXMKKyAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1jb252ZW5pZW5jZSIgOzsKK2VzYWMKK0xJQkxUREw9J19MVF9CVUlMRF9QUkVGSVgnIiR7bHRfbHRkbF9kaXIrJGx0X2x0ZGxfZGlyL31saWJsdGRsYy5sYSIKK0xURExERVBTPSRMSUJMVERMCitMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9JyIke2x0X2x0ZGxfZGlyKy8kbHRfbHRkbF9kaXJ9IgorCitBQ19TVUJTVChbTElCTFRETF0pCitBQ19TVUJTVChbTFRETERFUFNdKQorQUNfU1VCU1QoW0xURExJTkNMXSkKKworIyBGb3IgYmFja3dhcmRzIG5vbi1nZXR0ZXh0IGNvbnNpc3RlbnQgY29tcGF0aWJpbGl0eS4uLgorSU5DTFRETD0iJExURExJTkNMIgorQUNfU1VCU1QoW0lOQ0xURExdKQorXSkjIF9MVERMX0NPTlZFTklFTkNFCisKKworIyBMVERMX0lOU1RBTExBQkxFCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgc2V0cyBMSUJMVERMIHRvIHRoZSBsaW5rIGZsYWdzIGZvciB0aGUgbGlibHRkbCBpbnN0YWxsYWJsZSBsaWJyYXJ5CisjIGFuZCBMVERMSU5DTCB0byB0aGUgaW5jbHVkZSBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgaGVhZGVyIGFuZCBhZGRzCisjIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCB0byB0aGUgY29uZmlndXJlIGFyZ3VtZW50cy4gIE5vdGUgdGhhdAorIyBBQ19DT05GSUdfU1VCRElSUyBpcyBub3QgY2FsbGVkIGZyb20gaGVyZS4gIElmIGFuIGluc3RhbGxlZCBsaWJsdGRsCisjIGlzIG5vdCBmb3VuZCwgTElCTFRETCB3aWxsIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX2J1aWxkX3ByZWZpeH0nIGlmCisjIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHdpdGggJyR7dG9wX2J1aWxkZGlyfS8nLCBhbmQgTFRETElOQ0wgd2lsbCBiZQorIyBwcmVmaXhlZCB3aXRoICcke3RvcF9zcmNkaXJ9LycgKG5vdGUgdGhlIHNpbmdsZSBxdW90ZXMhKS4gIElmIHlvdXIKKyMgcGFja2FnZSBpcyBub3QgZmxhdCBhbmQgeW91J3JlIG5vdCB1c2luZyBhdXRvbWFrZSwgZGVmaW5lIHRvcF9idWlsZF9wcmVmaXgsCisjIHRvcF9idWlsZGRpciwgYW5kIHRvcF9zcmNkaXIgYXBwcm9wcmlhdGVseSBpbiB5b3VyIE1ha2VmaWxlcy4KKyMgSW4gdGhlIGZ1dHVyZSwgdGhpcyBtYWNybyBtYXkgaGF2ZSB0byBiZSBjYWxsZWQgYWZ0ZXIgTFRfSU5JVC4KK0FDX0RFRlVOKFtMVERMX0lOU1RBTExBQkxFXSwKK1tBQ19CRUZPUkUoWyQwXSwgW0xURExfSU5JVF0pZG5sCitkbmwgQWx0aG91Z2ggdGhlIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2N1bWVudGVkLAorZG5sIExURExfSU5TVEFMTEFCTEUgdXNlZCB0byB0YWtlIGEgRElSRUNUT1JZIG9yZ3VtZW50LCBpZiB3ZSBoYXZlIG9uZQorZG5sIGhlcmUgbWFrZSBzdXJlIGl0IGlzIHRoZSBzYW1lIGFzIGFueSBvdGhlciBkZWNsYXJhdGlvbiBvZiBsaWJsdGRsJ3MKK2RubCBsb2NhdGlvbiEgIFRoaXMgYWxzbyBlbnN1cmVzIGx0X2x0ZGxfZGlyIGlzIHNldCB3aGVuIGNvbmZpZ3VyZS5hYyBpcworZG5sIG5vdCB5ZXQgdXNpbmcgYW4gZXhwbGljaXQgTFRfQ09ORklHX0xURExfRElSLgorbTRfaWZ2YWwoWyQxXSwgW19MVF9DT05GSUdfTFRETF9ESVIoWyQxXSldKWRubAorXyQwKCkKK10pIyBMVERMX0lOU1RBTExBQkxFCisKKyMgQUNfTElCTFRETF9JTlNUQUxMQUJMRSBhY2NlcHRlZCBhIGRpcmVjdG9yeSBhcmd1bWVudCBpbiBvbGRlciBsaWJ0b29scywKKyMgbm93IHdlIGhhdmUgTFRfQ09ORklHX0xURExfRElSOgorQVVfREVGVU4oW0FDX0xJQkxURExfSU5TVEFMTEFCTEVdLAorW19MVF9DT05GSUdfTFRETF9ESVIoW200X2RlZmF1bHQoWyQxXSwgW2xpYmx0ZGxdKV0pCitfTFRETF9JTlNUQUxMQUJMRV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCTFRETF9JTlNUQUxMQUJMRV0sIFtdKQorCisKKyMgX0xURExfSU5TVEFMTEFCTEUKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29kZSBzaGFyZWQgYnkgTFRETF9JTlNUQUxMQUJMRSBhbmQgTFRETF9JTklUKFtpbnN0YWxsYWJsZV0pLgorbTRfZGVmdW4oW19MVERMX0lOU1RBTExBQkxFXSwKK1tpZiB0ZXN0IC1mICRwcmVmaXgvbGliL2xpYmx0ZGwubGE7IHRoZW4KKyAgbHRfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgTERGTEFHUz0iLUwkcHJlZml4L2xpYiAkTERGTEFHUyIKKyAgQUNfQ0hFQ0tfTElCKFtsdGRsXSwgW2x0X2RsaW5pdF0sIFtsdF9saWJfbHRkbD15ZXNdKQorICBMREZMQUdTPSIkbHRfc2F2ZV9MREZMQUdTIgorICBpZiB0ZXN0IHgiJHtsdF9saWJfbHRkbC1ub30iID0geHllczsgdGhlbgorICAgIGlmIHRlc3QgeCIkZW5hYmxlX2x0ZGxfaW5zdGFsbCIgIT0geHllczsgdGhlbgorICAgICAgIyBEb24ndCBvdmVyd3JpdGUgJHByZWZpeC9saWIvbGlibHRkbC5sYSB3aXRob3V0IC0tZW5hYmxlLWx0ZGwtaW5zdGFsbAorICAgICAgQUNfTVNHX1dBUk4oW25vdCBvdmVyd3JpdGluZyBsaWJsdGRsIGF0ICRwcmVmaXgsIGZvcmNlIHdpdGggYC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCddKQorICAgICAgZW5hYmxlX2x0ZGxfaW5zdGFsbD1ubworICAgIGZpCisgIGVsaWYgdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiA9IHhubzsgdGhlbgorICAgIEFDX01TR19XQVJOKFtsaWJsdGRsIG5vdCBpbnN0YWxsZWQsIGJ1dCBpbnN0YWxsYXRpb24gZGlzYWJsZWRdKQorICBmaQorZmkKKworIyBJZiBjb25maWd1cmUuYWMgZGVjbGFyZWQgYW4gaW5zdGFsbGFibGUgbHRkbCwgYW5kIHRoZSB1c2VyIGRpZG4ndCBvdmVycmlkZQorIyB3aXRoIC0tZGlzYWJsZS1sdGRsLWluc3RhbGwsIHdlIHdpbGwgaW5zdGFsbCB0aGUgc2hpcHBlZCBsaWJsdGRsLgorY2FzZSAkZW5hYmxlX2x0ZGxfaW5zdGFsbCBpbgorICBubykgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWVuYWJsZS1sdGRsLWluc3RhbGw9bm8iCisgICAgICBMSUJMVERMPSItbGx0ZGwiCisgICAgICBMVERMREVQUz0KKyAgICAgIExURExJTkNMPQorICAgICAgOzsKKyAgKikgIGVuYWJsZV9sdGRsX2luc3RhbGw9eWVzCisgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCIKKyAgICAgIExJQkxUREw9J19MVF9CVUlMRF9QUkVGSVgnIiR7bHRfbHRkbF9kaXIrJGx0X2x0ZGxfZGlyL31saWJsdGRsLmxhIgorICAgICAgTFRETERFUFM9JExJQkxUREwKKyAgICAgIExURExJTkNMPSctSSR7dG9wX3NyY2Rpcn0nIiR7bHRfbHRkbF9kaXIrLyRsdF9sdGRsX2Rpcn0iCisgICAgICA7OworZXNhYworCitBQ19TVUJTVChbTElCTFRETF0pCitBQ19TVUJTVChbTFRETERFUFNdKQorQUNfU1VCU1QoW0xURExJTkNMXSkKKworIyBGb3IgYmFja3dhcmRzIG5vbi1nZXR0ZXh0IGNvbnNpc3RlbnQgY29tcGF0aWJpbGl0eS4uLgorSU5DTFRETD0iJExURExJTkNMIgorQUNfU1VCU1QoW0lOQ0xURExdKQorXSkjIExURExfSU5TVEFMTEFCTEUKKworCisjIF9MVERMX01PREVfRElTUEFUQ0gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRETF9NT0RFX0RJU1BBVENIXSwKK1tkbmwgSWYgX0xURExfRElSIGlzIGAuJywgdGhlbiB3ZSBhcmUgY29uZmlndXJpbmcgbGlibHRkbCBpdHNlbGY6CittNF9pZihfTFRETF9ESVIsIFtdLAorCVtdLAorICAgIGRubCBpZiBfTFRETF9NT0RFIHdhcyBub3Qgc2V0IGFscmVhZHksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBzdWJwcm9qZWN0JzoKKyAgICBbbTRfY2FzZShtNF9kZWZhdWx0KF9MVERMX01PREUsIFtzdWJwcm9qZWN0XSksCisJICBbc3VicHJvamVjdF0sIFtBQ19DT05GSUdfU1VCRElSUyhfTFRETF9ESVIpCisJCQkgIF9MVF9TSEVMTF9JTklUKFtsdF9kbG9wZW5fZGlyPSIkbHRfbHRkbF9kaXIiXSldLAorCSAgW25vbnJlY3Vyc2l2ZV0sIFtfTFRfU0hFTExfSU5JVChbbHRfZGxvcGVuX2Rpcj0iJGx0X2x0ZGxfZGlyIjsgbHRfbGlib2JqX3ByZWZpeD0iJGx0X2x0ZGxfZGlyLyJdKV0sCisJICBbcmVjdXJzaXZlXSwgW10sCisJW200X2ZhdGFsKFt1bmtub3duIGxpYmx0ZGwgbW9kZTogXV9MVERMX01PREUpXSldKWRubAorZG5sIEJlIGNhcmVmdWwgbm90IHRvIGV4cGFuZCB0d2ljZToKK200X2RlZmluZShbJDBdLCBbXSkKK10pIyBfTFRETF9NT0RFX0RJU1BBVENICisKKworIyBfTFRfTElCT0JKKE1PRFVMRV9OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIEFDX0xJQk9CSiwgZXhjZXB0IHRoYXQgTU9EVUxFX05BTUUgZ29lcyBpbnRvIF9MVF9MSUJPQkpTIGluc3RlYWQKKyMgb2YgaW50byBMSUJPQkpTLgorQUNfREVGVU4oW19MVF9MSUJPQkpdLCBbCisgIG00X3BhdHRlcm5fYWxsb3coW15fTFRfTElCT0JKUyRdKQorICBfTFRfTElCT0JKUz0iJF9MVF9MSUJPQkpTICQxLiRhY19vYmpleHQiCitdKSMgX0xUX0xJQk9CSlMKKworCisjIExURExfSU5JVChbT1BUSU9OU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENsaWVudHMgb2YgbGlibHRkbCBjYW4gdXNlIHRoaXMgbWFjcm8gdG8gYWxsb3cgdGhlIGluc3RhbGxlciB0bworIyBjaG9vc2UgYmV0d2VlbiBhIHNoaXBwZWQgY29weSBvZiB0aGUgbHRkbCBzb3VyY2VzIG9yIGEgcHJlaW5zdGFsbGVkCisjIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuICBJZiB0aGUgc2hpcHBlZCBsdGRsIHNvdXJjZXMgYXJlIG5vdCBpbiBhCisjIHN1YmRpcmVjdG9yeSBuYW1lZCBsaWJsdGRsLCB0aGUgZGlyZWN0b3J5IG5hbWUgbXVzdCBiZSBnaXZlbiBieQorIyBMVF9DT05GSUdfTFRETF9ESVIuCitBQ19ERUZVTihbTFRETF9JTklUXSwKK1tkbmwgUGFyc2UgT1BUSU9OUworX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCisKK2RubCBXZSBuZWVkIHRvIGtlZXAgb3VyIG93biBsaXN0IG9mIGxpYm9ianMgc2VwYXJhdGUgZnJvbSBvdXIgcGFyZW50IHByb2plY3QsCitkbmwgYW5kIHRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0IGlzIHJlZGVmaW5lIHRoZSBBQ19MSUJPQkpzIG1hY3JvIHdoaWxlCitkbmwgd2UgbG9vayBmb3Igb3VyIG93biBMSUJPQkpzLgorbTRfcHVzaGRlZihbQUNfTElCT0JKXSwgbTRfZGVmbihbX0xUX0xJQk9CSl0pKQorbTRfcHVzaGRlZihbQUNfTElCU09VUkNFU10pCisKK2RubCBJZiBub3Qgb3RoZXJ3aXNlIGRlZmluZWQsIGRlZmF1bHQgdG8gdGhlIDEuNS54IGNvbXBhdGlibGUgc3VicHJvamVjdCBtb2RlOgorbTRfaWYoX0xURExfTU9ERSwgW10sCisgICAgICAgIFttNF9kZWZpbmUoW19MVERMX01PREVdLCBtNF9kZWZhdWx0KFskMl0sIFtzdWJwcm9qZWN0XSkpCisgICAgICAgIG00X2lmKFstMV0sIFttNF9icmVnZXhwKF9MVERMX01PREUsIFtcKHN1YnByb2plY3RcfFwobm9uXCk/cmVjdXJzaXZlXCldKV0sCisgICAgICAgICAgICAgICAgW200X2ZhdGFsKFt1bmtub3duIGxpYmx0ZGwgbW9kZTogXV9MVERMX01PREUpXSldKQorCitBQ19BUkdfV0lUSChbaW5jbHVkZWRfbHRkbF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtaW5jbHVkZWQtbHRkbF0sCisgICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIEdOVSBsdGRsIHNvdXJjZXMgaW5jbHVkZWQgaGVyZV0pXSkKKworaWYgdGVzdCAieCR3aXRoX2luY2x1ZGVkX2x0ZGwiICE9IHh5ZXM7IHRoZW4KKyAgIyBXZSBhcmUgbm90IGJlaW5nIGZvcmNlZCB0byB1c2UgdGhlIGluY2x1ZGVkIGxpYmx0ZGwgc291cmNlcywgc28KKyAgIyBkZWNpZGUgd2hldGhlciB0aGVyZSBpcyBhIHVzZWZ1bCBpbnN0YWxsZWQgdmVyc2lvbiB3ZSBjYW4gdXNlLgorICBBQ19DSEVDS19IRUFERVIoW2x0ZGwuaF0sCisgICAgICBbQUNfQ0hFQ0tfREVDTChbbHRfZGxpbnRlcmZhY2VfcmVnaXN0ZXJdLAorCSAgIFtBQ19DSEVDS19MSUIoW2x0ZGxdLCBbbHRfZGxhZHZpc2VfcHJlbG9hZF0sCisJICAgICAgIFt3aXRoX2luY2x1ZGVkX2x0ZGw9bm9dLAorCSAgICAgICBbd2l0aF9pbmNsdWRlZF9sdGRsPXllc10pXSwKKwkgICBbd2l0aF9pbmNsdWRlZF9sdGRsPXllc10sCisJICAgW0FDX0lOQ0xVREVTX0RFRkFVTFQKKwkgICAgI2luY2x1ZGUgPGx0ZGwuaD5dKV0sCisgICAgICBbd2l0aF9pbmNsdWRlZF9sdGRsPXllc10sCisgICAgICBbQUNfSU5DTFVERVNfREVGQVVMVF0KKyAgKQorZmkKKworZG5sIElmIG5laXRoZXIgTFRfQ09ORklHX0xURExfRElSLCBMVERMX0NPTlZFTklFTkNFIG5vciBMVERMX0lOU1RBTExBQkxFCitkbmwgd2FzIGNhbGxlZCB5ZXQsIHRoZW4gZm9yIG9sZCB0aW1lcycgc2FrZSwgd2UgYXNzdW1lIGxpYmx0ZGwgaXMgaW4gYW4KK2RubCBlcG9ueW1vdXMgZGlyZWN0b3J5OgorQUNfUFJPVklERV9JRkVMU0UoW0xUX0NPTkZJR19MVERMX0RJUl0sIFtdLCBbX0xUX0NPTkZJR19MVERMX0RJUihbbGlibHRkbF0pXSkKKworQUNfQVJHX1dJVEgoW2x0ZGxfaW5jbHVkZV0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbHRkbC1pbmNsdWRlPURJUl0sCisgICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIGx0ZGwgaGVhZGVycyBpbnN0YWxsZWQgaW4gRElSXSldKQorCitpZiB0ZXN0IC1uICIkd2l0aF9sdGRsX2luY2x1ZGUiOyB0aGVuCisgIGlmIHRlc3QgLWYgIiR3aXRoX2x0ZGxfaW5jbHVkZS9sdGRsLmgiOyB0aGVuIDoKKyAgZWxzZQorICAgIEFDX01TR19FUlJPUihbaW52YWxpZCBsdGRsIGluY2x1ZGUgZGlyZWN0b3J5OiBgJHdpdGhfbHRkbF9pbmNsdWRlJ10pCisgIGZpCitlbHNlCisgIHdpdGhfbHRkbF9pbmNsdWRlPW5vCitmaQorCitBQ19BUkdfV0lUSChbbHRkbF9saWJdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWx0ZGwtbGliPURJUl0sCisgICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIGxpYmx0ZGwubGEgaW5zdGFsbGVkIGluIERJUl0pXSkKKworaWYgdGVzdCAtbiAiJHdpdGhfbHRkbF9saWIiOyB0aGVuCisgIGlmIHRlc3QgLWYgIiR3aXRoX2x0ZGxfbGliL2xpYmx0ZGwubGEiOyB0aGVuIDoKKyAgZWxzZQorICAgIEFDX01TR19FUlJPUihbaW52YWxpZCBsdGRsIGxpYnJhcnkgZGlyZWN0b3J5OiBgJHdpdGhfbHRkbF9saWInXSkKKyAgZmkKK2Vsc2UKKyAgd2l0aF9sdGRsX2xpYj1ubworZmkKKworY2FzZSAsJHdpdGhfaW5jbHVkZWRfbHRkbCwkd2l0aF9sdGRsX2luY2x1ZGUsJHdpdGhfbHRkbF9saWIsIGluCisgICx5ZXMsbm8sbm8sKQorCW00X2Nhc2UobTRfZGVmYXVsdChfTFRETF9UWVBFLCBbY29udmVuaWVuY2VdKSwKKwkgICAgW2NvbnZlbmllbmNlXSwgW19MVERMX0NPTlZFTklFTkNFXSwKKwkgICAgW2luc3RhbGxhYmxlXSwgW19MVERMX0lOU1RBTExBQkxFXSwKKwkgIFttNF9mYXRhbChbdW5rbm93biBsaWJsdGRsIGJ1aWxkIHR5cGU6IF1fTFRETF9UWVBFKV0pCisJOzsKKyAgLG5vLG5vLG5vLCkKKwkjIElmIHRoZSBpbmNsdWRlZCBsdGRsIGlzIG5vdCB0byBiZSB1c2VkLCB0aGVuIHVzZSB0aGUKKwkjIHByZWluc3RhbGxlZCBsaWJsdGRsIHdlIGZvdW5kLgorCUFDX0RFRklORShbSEFWRV9MVERMXSwgWzFdLAorCSAgW0RlZmluZSB0aGlzIGlmIGEgbW9kZXJuIGxpYmx0ZGwgaXMgYWxyZWFkeSBpbnN0YWxsZWRdKQorCUxJQkxUREw9LWxsdGRsCisJTFRETERFUFM9CisJTFRETElOQ0w9CisJOzsKKyAgLG5vKixubywqKQorCUFDX01TR19FUlJPUihbYC0td2l0aC1sdGRsLWluY2x1ZGUnIGFuZCBgLS13aXRoLWx0ZGwtbGliJyBvcHRpb25zIG11c3QgYmUgdXNlZCB0b2dldGhlcl0pCisJOzsKKyAgKikJd2l0aF9pbmNsdWRlZF9sdGRsPW5vCisJTElCTFRETD0iLUwkd2l0aF9sdGRsX2xpYiAtbGx0ZGwiCisJTFRETERFUFM9CisJTFRETElOQ0w9Ii1JJHdpdGhfbHRkbF9pbmNsdWRlIgorCTs7Citlc2FjCitJTkNMVERMPSIkTFRETElOQ0wiCisKKyMgUmVwb3J0IG91ciBkZWNpc2lvbi4uLgorQUNfTVNHX0NIRUNLSU5HKFt3aGVyZSB0byBmaW5kIGxpYmx0ZGwgaGVhZGVyc10pCitBQ19NU0dfUkVTVUxUKFskTFRETElOQ0xdKQorQUNfTVNHX0NIRUNLSU5HKFt3aGVyZSB0byBmaW5kIGxpYmx0ZGwgbGlicmFyeV0pCitBQ19NU0dfUkVTVUxUKFskTElCTFRETF0pCisKK19MVERMX1NFVFVQCisKK2RubCByZXN0b3JlIGF1dG9jb25mIGRlZmluaXRpb24uCittNF9wb3BkZWYoW0FDX0xJQk9CSl0pCittNF9wb3BkZWYoW0FDX0xJQlNPVVJDRVNdKQorCitBQ19DT05GSUdfQ09NTUFORFNfUFJFKFsKKyAgICBfbHRkbF9saWJvYmpzPQorICAgIF9sdGRsX2x0bGlib2Jqcz0KKyAgICBpZiB0ZXN0IC1uICIkX0xUX0xJQk9CSlMiOyB0aGVuCisgICAgICAjIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLgorICAgICAgX2x0X3NlZF9kcm9wX29iamV4dD0ncy9cLm8kLy87cy9cLm9iaiQvLycKKyAgICAgIGZvciBpIGluIGBmb3IgaSBpbiAkX0xUX0xJQk9CSlM7IGRvIGVjaG8gIiRpIjsgZG9uZSB8IHNlZCAiJF9sdF9zZWRfZHJvcF9vYmpleHQiIHwgc29ydCAtdWA7IGRvCisgICAgICAgIF9sdGRsX2xpYm9ianM9IiRfbHRkbF9saWJvYmpzICRsdF9saWJvYmpfcHJlZml4JGkuJGFjX29iamV4dCIKKyAgICAgICAgX2x0ZGxfbHRsaWJvYmpzPSIkX2x0ZGxfbHRsaWJvYmpzICRsdF9saWJvYmpfcHJlZml4JGkubG8iCisgICAgICBkb25lCisgICAgZmkKKyAgICBBQ19TVUJTVChbbHRkbF9MSUJPQkpTXSwgWyRfbHRkbF9saWJvYmpzXSkKKyAgICBBQ19TVUJTVChbbHRkbF9MVExJQk9CSlNdLCBbJF9sdGRsX2x0bGlib2Jqc10pCitdKQorCisjIE9ubHkgZXhwYW5kIG9uY2U6CittNF9kZWZpbmUoW0xURExfSU5JVF0pCitdKSMgTFRETF9JTklUCisKKyMgT2xkIG5hbWVzOgorQVVfREVGVU4oW0FDX0xJQl9MVERMXSwgW0xURExfSU5JVCgkQCldKQorQVVfREVGVU4oW0FDX1dJVEhfTFRETF0sIFtMVERMX0lOSVQoJEApXSkKK0FVX0RFRlVOKFtMVF9XSVRIX0xURExdLCBbTFRETF9JTklUKCRAKV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQl9MVERMXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX1dJVEhfTFRETF0sIFtdKQorZG5sIEFDX0RFRlVOKFtMVF9XSVRIX0xURExdLCBbXSkKKworCisjIF9MVERMX1NFVFVQCisjIC0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYWxsIHRoZSBjaGVja3MgbmVjZXNzYXJ5IGZvciBjb21waWxhdGlvbiBvZiB0aGUgbHRkbCBvYmplY3RzCisjICAtLSBpbmNsdWRpbmcgY29tcGlsZXIgY2hlY2tzIGFuZCBoZWFkZXIgY2hlY2tzLiAgVGhpcyBpcyBhIHB1YmxpYworIyBpbnRlcmZhY2UgIG1haW5seSBmb3IgdGhlIGJlbmVmaXQgb2YgbGlibHRkbCdzIG93biBjb25maWd1cmUuYWMsIG1vc3QKKyMgb3RoZXIgdXNlcnMgc2hvdWxkIGNhbGwgTFRETF9JTklUIGluc3RlYWQuCitBQ19ERUZVTihbX0xURExfU0VUVVBdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX01PRFVMRV9FWFRdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX01PRFVMRV9QQVRIXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19ETFNFQVJDSF9QQVRIXSlkbmwKK0FDX1JFUVVJUkUoW0xUX0xJQl9ETExPQURdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX1NZTUJPTF9VU0NPUkVdKWRubAorQUNfUkVRVUlSRShbTFRfRlVOQ19ETFNZTV9VU0NPUkVdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX0RMT1BFTl9ERVBMSUJTXSlkbmwKK0FDX1JFUVVJUkUoW2dsX0ZVTkNfQVJHWl0pZG5sCisKK200X3JlcXVpcmUoW19MVF9DSEVDS19PQkpESVJdKWRubAorbTRfcmVxdWlyZShbX0xUX0hFQURFUl9ETEZDTl0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfRExQUkVPUEVOXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCisKK2RubCBEb24ndCByZXF1aXJlIHRoaXMsIG9yIGl0IHdpbGwgYmUgZXhwYW5kZWQgZWFybGllciB0aGFuIHRoZSBjb2RlCitkbmwgdGhhdCBzZXRzIHRoZSB2YXJpYWJsZXMgaXQgcmVsaWVzIG9uOgorX0xUX0VOQUJMRV9JTlNUQUxMCisKK2RubCBfTFRETF9NT0RFIHNwZWNpZmljIGNvZGUgbXVzdCBiZSBjYWxsZWQgYXQgbGVhc3Qgb25jZToKK19MVERMX01PREVfRElTUEFUQ0gKKworIyBJbiBvcmRlciB0aGF0IGx0ZGwuYyBjYW4gY29tcGlsZSwgZmluZCBvdXQgdGhlIGZpcnN0IEFDX0NPTkZJR19IRUFERVJTCisjIHRoZSB1c2VyIHVzZWQuICBUaGlzIGlzIHNvIHRoYXQgbHRkbC5oIGNhbiBwaWNrIHVwIHRoZSBwYXJlbnQgcHJvamVjdHMKKyMgY29uZmlnLmggZmlsZSwgVGhlIGZpcnN0IGZpbGUgaW4gQUNfQ09ORklHX0hFQURFUlMgbXVzdCBjb250YWluIHRoZQorIyBkZWZpbml0aW9ucyByZXF1aXJlZCBieSBsdGRsLmMuCisjIEZJWE1FOiBSZW1vdmUgdXNlIG9mIHVuZG9jdW1lbnRlZCBBQ19MSVNUX0hFQURFUlMgKDIuNTkgY29tcGF0aWJpbGl0eSkuCitBQ19DT05GSUdfQ09NTUFORFNfUFJFKFtkbmwKK200X3BhdHRlcm5fYWxsb3coW15MVF9DT05GSUdfSCRdKWRubAorbTRfaWZzZXQoW0FIX0hFQURFUl0sCisgICAgW0xUX0NPTkZJR19IPUFIX0hFQURFUl0sCisgICAgW200X2lmc2V0KFtBQ19MSVNUX0hFQURFUlNdLAorCSAgICBbTFRfQ09ORklHX0g9YGVjaG8gIkFDX0xJU1RfSEVBREVSUyIgfCAkU0VEICdzLF5bWyAgICAgIF1dKiwsO3MsW1sgOl1dLiokLCwnYF0sCisJW10pXSldKQorQUNfU1VCU1QoW0xUX0NPTkZJR19IXSkKKworQUNfQ0hFQ0tfSEVBREVSUyhbdW5pc3RkLmggZGwuaCBzeXMvZGwuaCBkbGQuaCBtYWNoLW8vZHlsZC5oIGRpcmVudC5oXSwKKwlbXSwgW10sIFtBQ19JTkNMVURFU19ERUZBVUxUXSkKKworQUNfQ0hFQ0tfRlVOQ1MoW2Nsb3NlZGlyIG9wZW5kaXIgcmVhZGRpcl0sIFtdLCBbQUNfTElCT0JKKFtsdF9fZGlyZW50XSldKQorQUNfQ0hFQ0tfRlVOQ1MoW3N0cmxjYXQgc3RybGNweV0sIFtdLCBbQUNfTElCT0JKKFtsdF9fc3RybF0pXSkKKworbTRfcGF0dGVybl9hbGxvdyhbTFRfTElCRVhUXSlkbmwKK0FDX0RFRklORV9VTlFVT1RFRChbTFRfTElCRVhUXSxbIiRsaWJleHQiXSxbVGhlIGFyY2hpdmUgZXh0ZW5zaW9uXSkKKworbmFtZT0KK2V2YWwgImx0X2xpYnByZWZpeD1cIiRsaWJuYW1lX3NwZWNcIiIKK200X3BhdHRlcm5fYWxsb3coW0xUX0xJQlBSRUZJWF0pZG5sCitBQ19ERUZJTkVfVU5RVU9URUQoW0xUX0xJQlBSRUZJWF0sWyIkbHRfbGlicHJlZml4Il0sW1RoZSBhcmNoaXZlIHByZWZpeF0pCisKK25hbWU9bHRkbAorZXZhbCAiTFRETE9QRU49XCIkbGlibmFtZV9zcGVjXCIiCitBQ19TVUJTVChbTFRETE9QRU5dKQorXSkjIF9MVERMX1NFVFVQCisKKworIyBfTFRfRU5BQkxFX0lOU1RBTEwKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9FTkFCTEVfSU5TVEFMTF0sCitbQUNfQVJHX0VOQUJMRShbbHRkbC1pbnN0YWxsXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWx0ZGwtaW5zdGFsbF0sIFtpbnN0YWxsIGxpYmx0ZGxdKV0pCisKK2Nhc2UgLCR7ZW5hYmxlX2x0ZGxfaW5zdGFsbH0sJHtlbmFibGVfbHRkbF9jb252ZW5pZW5jZX0gaW4KKyAgKnllcyopIDs7CisgICopIGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlPXllcyA7OworZXNhYworCittNF9pZmRlZihbQU1fQ09ORElUSU9OQUxdLAorW0FNX0NPTkRJVElPTkFMKElOU1RBTExfTFRETCwgdGVzdCB4IiR7ZW5hYmxlX2x0ZGxfaW5zdGFsbC1ub30iICE9IHhubykKKyBBTV9DT05ESVRJT05BTChDT05WRU5JRU5DRV9MVERMLCB0ZXN0IHgiJHtlbmFibGVfbHRkbF9jb252ZW5pZW5jZS1ub30iICE9IHhubyldKQorXSkjIF9MVF9FTkFCTEVfSU5TVEFMTAorCisKKyMgTFRfU1lTX0RMT1BFTl9ERVBMSUJTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19ETE9QRU5fREVQTElCU10sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgZGVwbGlicyBhcmUgbG9hZGVkIGJ5IGRsb3Blbl0sCisgIFtsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnNdLAorICBbIyBQT1JUTUUgZG9lcyB5b3VyIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGxvYWQgZGVwbGlicyBmb3IgZGxvcGVuPworICAjIG9yIGl0cyBsb2dpY2FsIGVxdWl2YWxlbnQgKGUuZy4gc2hsX2xvYWQgZm9yIEhQLVVYIDwgMTEpCisgICMgRm9yIG5vdywgd2UganVzdCBjYXRjaCBPU2VzIHdlIGtub3cgc29tZXRoaW5nIGFib3V0IC0tIGluIHRoZQorICAjIGZ1dHVyZSwgd2UnbGwgdHJ5IHRlc3QgdGhpcyBwcm9ncmFtbWF0aWNhbGx5LgorICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICBjYXNlICRob3N0X29zIGluCisgIGFpeDMqfGFpeDQuMS4qfGFpeDQuMi4qKQorICAgICMgVW5rbm93biB3aGV0aGVyIHRoaXMgaXMgdHJ1ZSBmb3IgdGhlc2UgdmVyc2lvbnMgb2YgQUlYLCBidXQKKyAgICAjIHdlIHdhbnQgdGhpcyBgY2FzZScgaGVyZSB0byBleHBsaWNpdGx5IGNhdGNoIHRob3NlIHZlcnNpb25zLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgICAgOzsKKyAgYWl4W1s0LTldXSopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGFtaWdhb3MqKQorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgcG93ZXJwYykKKyAgICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz1ubworICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgZGFyd2luKikKKyAgICAjIEFzc3VtaW5nIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgYSBsaWJkbCBmcm9tIHNvbWV3aGVyZSwgdGhpcyBpcyB0cnVlCisgICAgIyBJZiB5b3UgYXJlIGxvb2tpbmcgZm9yIG9uZSBodHRwOi8vd3d3Lm9wZW5kYXJ3aW4ub3JnL3Byb2plY3RzL2RsY29tcGF0CisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgZ251KiB8IGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICAjIEdOVSBhbmQgaXRzIHZhcmlhbnRzLCB1c2luZyBnbnUgbGQuc28gKEdsaWJjKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBocHV4MTAqfGhwdXgxMSopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGludGVyaXgqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBpcml4W1sxMjM0NV1dKnxpcml4Ni5bWzAxXV0qKQorICAgICMgQ2F0Y2ggYWxsIHZlcnNpb25zIG9mIElSSVggYmVmb3JlIDYuMiwgYW5kIGluZGljYXRlIHRoYXQgd2UgZG9uJ3QKKyAgICAjIGtub3cgaG93IGl0IHdvcmtlZCBmb3IgYW55IG9mIHRob3NlIHZlcnNpb25zLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgICAgOzsKKyAgaXJpeCopCisgICAgIyBUaGUgY2FzZSBhYm92ZSBjYXRjaGVzIGFueXRoaW5nIGJlZm9yZSA2LjIsIGFuZCBpdCdzIGtub3duIHRoYXQKKyAgICAjIGF0IDYuMiBhbmQgbGF0ZXIgZGxvcGVuIGRvZXMgbG9hZCBkZXBsaWJzLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIG9wZW5ic2QqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBvc2ZbWzEyMzRdXSopCisgICAgIyBkbG9wZW4gZGlkIGxvYWQgZGVwbGlicyAoYXQgbGVhc3QgYXQgNC54KSwgYnV0IHVudGlsIHRoZSA1Lnggc2VyaWVzLAorICAgICMgaXQgZGlkICpub3QqIHVzZSBhbiBSUEFUSCBpbiBhIHNoYXJlZCBsaWJyYXJ5IHRvIGZpbmQgb2JqZWN0cyB0aGUKKyAgICAjIGxpYnJhcnkgZGVwZW5kcyBvbiwgc28gd2UgZXhwbGljaXRseSBzYXkgYG5vJy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9bm8KKyAgICA7OworICBvc2Y1LjB8b3NmNS4wYXxvc2Y1LjEpCisgICAgIyBkbG9wZW4gKmRvZXMqIGxvYWQgZGVwbGlicyBhbmQgd2l0aCB0aGUgcmlnaHQgbG9hZGVyIHBhdGNoIGFwcGxpZWQKKyAgICAjIGl0IGV2ZW4gdXNlcyBSUEFUSCBpbiBhIHNoYXJlZCBsaWJyYXJ5IHRvIHNlYXJjaCBmb3Igc2hhcmVkIG9iamVjdHMKKyAgICAjIHRoYXQgdGhlIGxpYnJhcnkgZGVwZW5kcyBvbiwgYnV0IHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8ga25vdyBpZiB0aGF0CisgICAgIyBwYXRjaCBpcyBpbnN0YWxsZWQuICBTaW5jZSB0aGlzIGlzIHRoZSBjYXNlLCBhbGwgd2UgY2FuIHJlYWxseQorICAgICMgc2F5IGlzIHVua25vd24gLS0gaXQgZGVwZW5kcyBvbiB0aGUgcGF0Y2ggYmVpbmcgaW5zdGFsbGVkLiAgSWYKKyAgICAjIGl0IGlzLCB0aGlzIGNoYW5nZXMgdG8gYHllcycuICBXaXRob3V0IGl0LCBpdCB3b3VsZCBiZSBgbm8nLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgICAgOzsKKyAgb3NmKikKKyAgICAjIHRoZSB0d28gY2FzZXMgYWJvdmUgc2hvdWxkIGNhdGNoIGFsbCB2ZXJzaW9ucyBvZiBvc2YgPD0gNS4xLiAgUmVhZAorICAgICMgdGhlIGNvbW1lbnRzIGFib3ZlIGZvciB3aGF0IHdlIGtub3cgYWJvdXQgdGhlbS4KKyAgICAjIEF0ID4gNS4xLCBkZXBsaWJzIGFyZSBsb2FkZWQgKmFuZCogYW55IFJQQVRIIGluIGEgc2hhcmVkIGxpYnJhcnkKKyAgICAjIGlzIHVzZWQgdG8gZmluZCB0aGVtIHNvIHdlIGNhbiBmaW5hbGx5IHNheSBgeWVzJy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgcW54KikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgc29sYXJpcyopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQorICAgIGxpYmx0ZGxfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGVzYWMKKyAgXSkKK2lmIHRlc3QgIiRsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnMiICE9IHllczsgdGhlbgorIEFDX0RFRklORShbTFRETF9ETE9QRU5fREVQTElCU10sIFsxXSwKKyAgICBbRGVmaW5lIGlmIHRoZSBPUyBuZWVkcyBoZWxwIHRvIGxvYWQgZGVwZW5kZW50IGxpYnJhcmllcyBmb3IgZGxvcGVuKCkuXSkKK2ZpCitdKSMgTFRfU1lTX0RMT1BFTl9ERVBMSUJTCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlNdLCBbTFRfU1lTX0RMT1BFTl9ERVBMSUJTXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlNdLCBbXSkKKworCisjIExUX1NZU19NT0RVTEVfRVhUCisjIC0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX01PRFVMRV9FWFRdLAorW200X3JlcXVpcmUoW19MVF9TWVNfRFlOQU1JQ19MSU5LRVJdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doaWNoIGV4dGVuc2lvbiBpcyB1c2VkIGZvciBydW50aW1lIGxvYWRhYmxlIG1vZHVsZXNdLAorICBbbGlibHRkbF9jdl9zaGxpYmV4dF0sCitbCittb2R1bGU9eWVzCitldmFsIGxpYmx0ZGxfY3Zfc2hsaWJleHQ9JHNocmV4dF9jbWRzCittb2R1bGU9bm8KK2V2YWwgbGlibHRkbF9jdl9zaHJleHQ9JHNocmV4dF9jbWRzCisgIF0pCitpZiB0ZXN0IC1uICIkbGlibHRkbF9jdl9zaGxpYmV4dCI7IHRoZW4KKyAgbTRfcGF0dGVybl9hbGxvdyhbTFRfTU9EVUxFX0VYVF0pZG5sCisgIEFDX0RFRklORV9VTlFVT1RFRChbTFRfTU9EVUxFX0VYVF0sIFsiJGxpYmx0ZGxfY3Zfc2hsaWJleHQiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBleHRlbnNpb24gdXNlZCBmb3IgcnVudGltZSBsb2FkYWJsZSBtb2R1bGVzLCBzYXksICIuc28iLl0pCitmaQoraWYgdGVzdCAiJGxpYmx0ZGxfY3Zfc2hyZXh0IiAhPSAiJGxpYmx0ZGxfY3Zfc2hsaWJleHQiOyB0aGVuCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX1NIQVJFRF9FWFRdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX1NIQVJFRF9FWFRdLCBbIiRsaWJsdGRsX2N2X3NocmV4dCJdLAorICAgIFtEZWZpbmUgdG8gdGhlIHNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCwgc2F5LCAiLmR5bGliIi5dKQorZmkKK10pIyBMVF9TWVNfTU9EVUxFX0VYVAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU0hMSUJFWFRdLCBbTFRfU1lTX01PRFVMRV9FWFRdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NITElCRVhUXSwgW10pCisKKworIyBMVF9TWVNfTU9EVUxFX1BBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX01PRFVMRV9QQVRIXSwKK1ttNF9yZXF1aXJlKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGljaCB2YXJpYWJsZSBzcGVjaWZpZXMgcnVuLXRpbWUgbW9kdWxlIHNlYXJjaCBwYXRoXSwKKyAgW2x0X2N2X21vZHVsZV9wYXRoX3Zhcl0sIFtsdF9jdl9tb2R1bGVfcGF0aF92YXI9IiRzaGxpYnBhdGhfdmFyIl0pCitpZiB0ZXN0IC1uICIkbHRfY3ZfbW9kdWxlX3BhdGhfdmFyIjsgdGhlbgorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9NT0RVTEVfUEFUSF9WQVJdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX01PRFVMRV9QQVRIX1ZBUl0sIFsiJGx0X2N2X21vZHVsZV9wYXRoX3ZhciJdLAorICAgIFtEZWZpbmUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQgZGV0ZXJtaW5lcyB0aGUgcnVuLXRpbWUgbW9kdWxlIHNlYXJjaCBwYXRoLl0pCitmaQorXSkjIExUX1NZU19NT0RVTEVfUEFUSAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU0hMSUJQQVRIXSwgW0xUX1NZU19NT0RVTEVfUEFUSF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU0hMSUJQQVRIXSwgW10pCisKKworIyBMVF9TWVNfRExTRUFSQ0hfUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19ETFNFQVJDSF9QQVRIXSwKK1ttNF9yZXF1aXJlKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgdGhlIGRlZmF1bHQgbGlicmFyeSBzZWFyY2ggcGF0aF0sCisgIFtsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aF0sCisgIFtsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aD0iJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIl0pCitpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGgiOyB0aGVuCisgIHN5c19kbHNlYXJjaF9wYXRoPQorICBmb3IgZGlyIGluICRsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aDsgZG8KKyAgICBpZiB0ZXN0IC16ICIkc3lzX2Rsc2VhcmNoX3BhdGgiOyB0aGVuCisgICAgICBzeXNfZGxzZWFyY2hfcGF0aD0iJGRpciIKKyAgICBlbHNlCisgICAgICBzeXNfZGxzZWFyY2hfcGF0aD0iJHN5c19kbHNlYXJjaF9wYXRoJFBBVEhfU0VQQVJBVE9SJGRpciIKKyAgICBmaQorICBkb25lCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX0RMU0VBUkNIX1BBVEhdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX0RMU0VBUkNIX1BBVEhdLCBbIiRzeXNfZGxzZWFyY2hfcGF0aCJdLAorICAgIFtEZWZpbmUgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpYnJhcnkgc2VhcmNoIHBhdGguXSkKK2ZpCitdKSMgTFRfU1lTX0RMU0VBUkNIX1BBVEgKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NZU1NFQVJDSFBBVEhdLCBbTFRfU1lTX0RMU0VBUkNIX1BBVEhdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NZU1NFQVJDSFBBVEhdLCBbXSkKKworCisjIF9MVF9DSEVDS19ETFBSRU9QRU4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DSEVDS19ETFBSRU9QRU5dLAorW200X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbGlidG9vbCBzdXBwb3J0cyAtZGxvcGVuLy1kbHByZW9wZW5dLAorICBbbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9sc10sCisgIFtpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KKyAgICBsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzPXllcworICBlbHNlCisgICAgbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9scz1ubworICBmaQorICBdKQoraWYgdGVzdCB4IiRsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzIiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKFtIQVZFX1BSRUxPQURFRF9TWU1CT0xTXSwgWzFdLAorICAgIFtEZWZpbmUgaWYgbGlidG9vbCBjYW4gZXh0cmFjdCBzeW1ib2wgbGlzdHMgZnJvbSBvYmplY3QgZmlsZXMuXSkKK2ZpCitdKSMgX0xUX0NIRUNLX0RMUFJFT1BFTgorCisKKyMgTFRfTElCX0RMTE9BRAorIyAtLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfTElCX0RMTE9BRF0sCitbbTRfcGF0dGVybl9hbGxvdyhbXkxUX0RMTE9BREVSUyRdKQorTFRfRExMT0FERVJTPQorQUNfU1VCU1QoW0xUX0RMTE9BREVSU10pCisKK0FDX0xBTkdfUFVTSChbQ10pCisKK0xJQkFERF9ETE9QRU49CitBQ19TRUFSQ0hfTElCUyhbZGxvcGVuXSwgW2RsXSwKKwlbQUNfREVGSU5FKFtIQVZFX0xJQkRMXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsaWJkbCBsaWJyYXJ5IG9yIGVxdWl2YWxlbnQuXSkKKwlpZiB0ZXN0ICIkYWNfY3Zfc2VhcmNoX2Rsb3BlbiIgIT0gIm5vbmUgcmVxdWlyZWQiIDsgdGhlbgorCSAgTElCQUREX0RMT1BFTj0iLWxkbCIKKwlmaQorCWxpYmx0ZGxfY3ZfbGliX2RsX2Rsb3Blbj0ieWVzIgorCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsb3Blbi5sYSJdLAorICAgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2lmIEhBVkVfRExGQ05fSAorIyAgaW5jbHVkZSA8ZGxmY24uaD4KKyNlbmRpZgorICAgIF1dLCBbW2Rsb3BlbigwLCAwKTtdXSldLAorCSAgICBbQUNfREVGSU5FKFtIQVZFX0xJQkRMXSwgWzFdLAorCQkgICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliZGwgbGlicmFyeSBvciBlcXVpdmFsZW50Ll0pCisJICAgIGxpYmx0ZGxfY3ZfZnVuY19kbG9wZW49InllcyIKKwkgICAgTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZGxvcGVuLmxhIl0sCisJW0FDX0NIRUNLX0xJQihbc3ZsZF0sIFtkbG9wZW5dLAorCQlbQUNfREVGSU5FKFtIQVZFX0xJQkRMXSwgWzFdLAorCQkJIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYmRsIGxpYnJhcnkgb3IgZXF1aXZhbGVudC5dKQorCSAgICAgICAgTElCQUREX0RMT1BFTj0iLWxzdmxkIiBsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuPSJ5ZXMiCisJCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsb3Blbi5sYSJdKV0pXSkKK2lmIHRlc3QgeCIkbGlibHRkbF9jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzIHx8IHRlc3QgeCIkbGlibHRkbF9jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXMKK3RoZW4KKyAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKyAgTElCUz0iJExJQlMgJExJQkFERF9ETE9QRU4iCisgIEFDX0NIRUNLX0ZVTkNTKFtkbGVycm9yXSkKKyAgTElCUz0iJGx0X3NhdmVfTElCUyIKK2ZpCitBQ19TVUJTVChbTElCQUREX0RMT1BFTl0pCisKK0xJQkFERF9TSExfTE9BRD0KK0FDX0NIRUNLX0ZVTkMoW3NobF9sb2FkXSwKKwlbQUNfREVGSU5FKFtIQVZFX1NITF9MT0FEXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzaGxfbG9hZCBmdW5jdGlvbi5dKQorCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfXNobF9sb2FkLmxhIl0sCisgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKKwkgICAgW0FDX0RFRklORShbSEFWRV9TSExfTE9BRF0sIFsxXSwKKwkJICAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNobF9sb2FkIGZ1bmN0aW9uLl0pCisJICAgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfXNobF9sb2FkLmxhIgorCSAgICBMSUJBRERfU0hMX0xPQUQ9Ii1sZGxkIl0pXSkKK0FDX1NVQlNUKFtMSUJBRERfU0hMX0xPQURdKQorCitjYXNlICRob3N0X29zIGluCitkYXJ3aW5bWzE1NjddXS4qKQorIyBXZSBvbmx5IHdhbnQgdGhpcyBmb3IgcHJlLU1hYyBPUyBYIDEwLjQuCisgIEFDX0NIRUNLX0ZVTkMoW19keWxkX2Z1bmNfbG9va3VwXSwKKwlbQUNfREVGSU5FKFtIQVZFX0RZTERdLCBbMV0sCisJCSAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9keWxkX2Z1bmNfbG9va3VwIGZ1bmN0aW9uLl0pCisJTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZHlsZC5sYSJdKQorICA7OworYmVvcyopCisgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWxvYWRfYWRkX29uLmxhIgorICA7OworY3lnd2luKiB8IG1pbmd3KiB8IG9zMiogfCBwdzMyKikKKyAgQUNfQ0hFQ0tfREVDTFMoW2N5Z3dpbl9jb252X3BhdGhdLCBbXSwgW10sIFtbI2luY2x1ZGUgPHN5cy9jeWd3aW4uaD5dXSkKKyAgTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99bG9hZGxpYnJhcnkubGEiCisgIDs7Citlc2FjCisKK0FDX0NIRUNLX0xJQihbZGxkXSwgW2RsZF9saW5rXSwKKwlbQUNfREVGSU5FKFtIQVZFX0RMRF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgR05VIGRsZCBsaWJyYXJ5Ll0pCisJCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsZF9saW5rLmxhIl0pCitBQ19TVUJTVChbTElCQUREX0RMRF9MSU5LXSkKKworbTRfcGF0dGVybl9hbGxvdyhbXkxUX0RMUFJFT1BFTiRdKQorTFRfRExQUkVPUEVOPQoraWYgdGVzdCAtbiAiJExUX0RMTE9BREVSUyIKK3RoZW4KKyAgZm9yIGx0X2xvYWRlciBpbiAkTFRfRExMT0FERVJTOyBkbworICAgIExUX0RMUFJFT1BFTj0iJExUX0RMUFJFT1BFTi1kbHByZW9wZW4gJGx0X2xvYWRlciAiCisgIGRvbmUKKyAgQUNfREVGSU5FKFtIQVZFX0xJQkRMTE9BREVSXSwgWzFdLAorICAgICAgICAgICAgW0RlZmluZSBpZiBsaWJkbGxvYWRlciB3aWxsIGJlIGJ1aWx0IG9uIHRoaXMgcGxhdGZvcm1dKQorZmkKK0FDX1NVQlNUKFtMVF9ETFBSRU9QRU5dKQorCitkbmwgVGhpcyBpc24ndCB1c2VkIGFueW1vcmUsIGJ1dCBzZXQgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CitMSUJBRERfREw9IiRMSUJBRERfRExPUEVOICRMSUJBRERfU0hMX0xPQUQiCitBQ19TVUJTVChbTElCQUREX0RMXSkKKworQUNfTEFOR19QT1AKK10pIyBMVF9MSUJfRExMT0FECisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9ETExJQl0sIFtMVF9MSUJfRExMT0FEXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9ETExJQl0sIFtdKQorCisKKyMgTFRfU1lTX1NZTUJPTF9VU0NPUkUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgZG9lcyB0aGUgY29tcGlsZXIgcHJlZml4IGdsb2JhbCBzeW1ib2xzIHdpdGggYW4gdW5kZXJzY29yZT8KK0FDX0RFRlVOKFtMVF9TWVNfU1lNQk9MX1VTQ09SRV0sCitbbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9yIF8gcHJlZml4IGluIGNvbXBpbGVkIHN5bWJvbHNdLAorICBbbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlXSwKKyAgW2x0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT1ubworICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgordm9pZCBubV90ZXN0X2Z1bmMoKXt9CitpbnQgbWFpbigpe25tX3Rlc3RfZnVuYztyZXR1cm4gMDt9CitfTFRfRU9GCisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCisgICAgYWNfbmxpc3Q9Y29uZnRlc3Qubm0KKyAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRhY19ubGlzdCkgJiYgdGVzdCAtcyAiJGFjX25saXN0IjsgdGhlbgorICAgICAgIyBTZWUgd2hldGhlciB0aGUgc3ltYm9scyBoYXZlIGEgbGVhZGluZyB1bmRlcnNjb3JlLgorICAgICAgaWYgZ3JlcCAnXi4gX25tX3Rlc3RfZnVuYycgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9eWVzCisgICAgICBlbHNlCisgICAgICAgIGlmIGdyZXAgJ14uIG5tX3Rlc3RfZnVuYyAnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIDoKKyAgICAgICAgZWxzZQorCSAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJGFjX25saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgIGZpCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGVjaG8gImNvbmZpZ3VyZTogY2Fubm90IHJ1biAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgIGZpCisgIGVsc2UKKyAgICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBjYXQgY29uZnRlc3QuYyA+JkFTX01FU1NBR0VfTE9HX0ZECisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgXSkKKyAgc3lzX3N5bWJvbF91bmRlcnNjb3JlPSRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUKKyAgQUNfU1VCU1QoW3N5c19zeW1ib2xfdW5kZXJzY29yZV0pCitdKSMgTFRfU1lTX1NZTUJPTF9VU0NPUkUKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NZTUJPTF9VU0NPUkVdLCBbTFRfU1lTX1NZTUJPTF9VU0NPUkVdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NZTUJPTF9VU0NPUkVdLCBbXSkKKworCisjIExUX0ZVTkNfRExTWU1fVVNDT1JFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfRlVOQ19ETFNZTV9VU0NPUkVdLAorW0FDX1JFUVVJUkUoW0xUX1NZU19TWU1CT0xfVVNDT1JFXSlkbmwKK2lmIHRlc3QgeCIkbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCB4IiRsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuIiA9IHh5ZXMgfHwKKyAgICAgdGVzdCB4IiRsaWJsdGRsX2N2X2xpYl9kbF9kbG9wZW4iID0geHllcyA7IHRoZW4KKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB3ZSBoYXZlIHRvIGFkZCBhbiB1bmRlcnNjb3JlIGZvciBkbHN5bV0sCisJICBbbGlibHRkbF9jdl9uZWVkX3VzY29yZV0sCisJICBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT11bmtub3duCisgICAgICAgICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgICBMSUJTPSIkTElCUyAkTElCQUREX0RMT1BFTiIKKwkgIF9MVF9UUllfRExPUEVOX1NFTEYoCisJICAgIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlPW5vXSwgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9eWVzXSwKKwkgICAgW10sCQkJCSBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT1jcm9zc10pCisJICBMSUJTPSIkc2F2ZV9MSUJTIgorCV0pCisgIGZpCitmaQorCitpZiB0ZXN0IHgiJGxpYmx0ZGxfY3ZfbmVlZF91c2NvcmUiID0geHllczsgdGhlbgorICBBQ19ERUZJTkUoW05FRURfVVNDT1JFXSwgWzFdLAorICAgIFtEZWZpbmUgaWYgZGxzeW0oKSByZXF1aXJlcyBhIGxlYWRpbmcgdW5kZXJzY29yZSBpbiBzeW1ib2wgbmFtZXMuXSkKK2ZpCitdKSMgTFRfRlVOQ19ETFNZTV9VU0NPUkUKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX0RMU1lNX1VTQ09SRV0sIFtMVF9GVU5DX0RMU1lNX1VTQ09SRV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfRExTWU1fVVNDT1JFXSwgW10pCisKKyMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9BVVRPTUFLRV9WRVJTSU9OKFZFUlNJT04pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQXV0b21ha2UgWC5ZIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00IGhhcyBiZWVuCkBAIC0zNCw3ICs4NTYsNyBAQAogW2FtX19hcGlfdmVyc2lvbj0nMS4xMScKIGRubCBTb21lIHVzZXJzIGZpbmQgQU1fQVVUT01BS0VfVkVSU0lPTiBhbmQgbWlzdGFrZSBpdCBmb3IgYSB3YXkgdG8KIGRubCByZXF1aXJlIHNvbWUgbWluaW11bSB2ZXJzaW9uLiAgUG9pbnQgdGhlbSB0byB0aGUgcmlnaHQgbWFjcm8uCi1tNF9pZihbJDFdLCBbMS4xMS4xXSwgW10sCittNF9pZihbJDFdLCBbMS4xMS4zXSwgW10sCiAgICAgICBbQUNfRkFUQUwoW0RvIG5vdCBjYWxsICQwLCB1c2UgQU1fSU5JVF9BVVRPTUFLRShbJDFdKS5dKV0pZG5sCiBdKQogCkBAIC01MCw3ICs4NzIsNyBAQAogIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gdGhleSBjYW4gYmUgdHJhY2VkLgogIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFNX0lOSVRfQVVUT01BS0UuCiBBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sCi1bQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xMS4xXSlkbmwKK1tBTV9BVVRPTUFLRV9WRVJTSU9OKFsxLjExLjNdKWRubAogbTRfaWZuZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwKICAgW200X2NvcHkoW200X1BBQ0tBR0VfVkVSU0lPTl0sIFtBQ19BVVRPQ09ORl9WRVJTSU9OXSldKWRubAogX0FNX0FVVE9DT05GX1ZFUlNJT04obTRfZGVmbihbQUNfQVVUT0NPTkZfVkVSU0lPTl0pKV0pCkBAIC03OSwxMiArOTAxLDE0IEBACiAKICMgQU1fQVVYX0RJUl9FWFBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEZvciBwcm9qZWN0cyB1c2luZyBBQ19DT05GSUdfQVVYX0RJUihbZm9vXSksIEF1dG9jb25mIHNldHMKICMgJGFjX2F1eF9kaXIgdG8gYCRzcmNkaXIvZm9vJy4gIEluIG90aGVyIHByb2plY3RzLCBpdCBpcyBzZXQgdG8KICMgYCRzcmNkaXInLCBgJHNyY2Rpci8uLicsIG9yIGAkc3JjZGlyLy4uLy4uJy4KQEAgLTE2NiwxNCArOTkwLDE0IEBACiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dXSkKIGZpXSldKQogCi0jIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOQotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LAorIyAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDEwCisjIHNlcmlhbCAxMgogCiAjIFRoZXJlIGFyZSBhIGZldyBkaXJ0eSBoYWNrcyBiZWxvdyB0byBhdm9pZCBsZXR0aW5nIGBBQ19QUk9HX0NDJyBiZQogIyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcgYWNsb2NhbC5tNCwKQEAgLTIxMyw2ICsxMDM3LDcgQEAKICAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKICAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAogICAjIGluIEQnLgorICBybSAtcmYgY29uZnRlc3QuZGlyCiAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgogICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQogICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgpAQCAtMjc3LDcgKzExMDIsNyBAQAogCWJyZWFrCiAgICAgICBmaQogICAgICAgOzsKLSAgICBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgIG1zdmM3IHwgbXN2Yzdtc3lzIHwgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKICAgICAgICMgVGhpcyBjb21waWxlciB3b24ndCBncm9rIGAtYyAtbycsIGJ1dCBhbHNvLCB0aGUgbWludXNvIHRlc3QgaGFzCiAgICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQKICAgICAgICMgc28gd2VhayB0aGF0IHRoZWlyIGZ1bmN0aW9uaW5nIHNob3VsZCBub3QgYmUgaW1wYWN0ZWQuCkBAIC0zNDIsMTAgKzExNjcsMTMgQEAKIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgogICBBTURFUEJBQ0tTTEFTSD0nXCcKKyAgYW1fX25vZGVwPSdfbm8nCiBmaQogQU1fQ09ORElUSU9OQUwoW0FNREVQXSwgW3Rlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhub10pCiBBQ19TVUJTVChbQU1ERVBCQUNLU0xBU0hdKWRubAogX0FNX1NVQlNUX05PVE1BS0UoW0FNREVQQkFDS1NMQVNIXSlkbmwKK0FDX1NVQlNUKFthbV9fbm9kZXBdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoW2FtX19ub2RlcF0pZG5sCiBdKQogCiAjIEdlbmVyYXRlIGNvZGUgdG8gc2V0IHVwIGRlcGVuZGVuY3kgdHJhY2tpbmcuICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCkBAIC01NjcsMTIgKzEzOTUsMTUgQEAKIGRvbmUKIGVjaG8gInRpbWVzdGFtcCBmb3IgJF9hbV9hcmciID5gQVNfRElSTkFNRShbIiRfYW1fYXJnIl0pYC9zdGFtcC1oW10kX2FtX3N0YW1wX2NvdW50XSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMDgsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEFNX1BST0dfSU5TVEFMTF9TSAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KICMgRGVmaW5lICRpbnN0YWxsX3NoLgpAQCAtNjEyLDggKzE0NDMsOCBAQAogIyBBZGQgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlIG9wdGlvbiB0byBjb25maWd1cmUuICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogIyBGcm9tIEppbSBNZXllcmluZwogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOAotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA4LAorIyAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LApAQCAtNjMzLDcgKzE0NjQsNyBAQAogICAgICAgIFtkaXNhYmxlXSwgW200X2RlZmluZShbYW1fbWFpbnRhaW5lcl9vdGhlcl0sIFtlbmFibGVdKV0sCiAgICAgICAgW200X2RlZmluZShbYW1fbWFpbnRhaW5lcl9vdGhlcl0sIFtlbmFibGVdKQogICAgICAgICBtNF93YXJuKFtzeW50YXhdLCBbdW5leHBlY3RlZCBhcmd1bWVudCB0byBBTUAmdEBfTUFJTlRBSU5FUl9NT0RFOiAkMV0pXSkKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBhbV9tYWludGFpbmVyX290aGVyIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXNdKQogICBkbmwgbWFpbnRhaW5lci1tb2RlJ3MgZGVmYXVsdCBpcyAnZGlzYWJsZScgdW5sZXNzICdlbmFibGUnIGlzIHBhc3NlZAogICBBQ19BUkdfRU5BQkxFKFttYWludGFpbmVyLW1vZGVdLAogWyAgLS1dW2FtX21haW50YWluZXJfb3RoZXJdWy1tYWludGFpbmVyLW1vZGUgIGFtX21haW50YWluZXJfb3RoZXIgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKQEAgLTc3OSwxMiArMTYxMCwxNSBAQAogZmkKIF0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9QUk9HX01LRElSX1AKICMgLS0tLS0tLS0tLS0tLS0tCiAjIENoZWNrIGZvciBgbWtkaXIgLXAnLgpAQCAtODA3LDEzICsxNjQxLDE0IEBACiAKICMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDgsIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNAorIyBzZXJpYWwgNQogCiAjIF9BTV9NQU5HTEVfT1BUSU9OKE5BTUUpCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MjEsMTMgKzE2NTYsMTMgQEAKIFtbX0FNX09QVElPTl9dbTRfYnBhdHN1YnN0KCQxLCBbW15hLXpBLVowLTlfXV0sIFtfXSldKQogCiAjIF9BTV9TRVRfT1BUSU9OKE5BTUUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBTZXQgb3B0aW9uIE5BTUUuICBQcmVzZW50bHkgdGhhdCBvbmx5IG1lYW5zIGRlZmluaW5nIGEgZmxhZyBmb3IgdGhpcyBvcHRpb24uCiBBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05dLAogW200X2RlZmluZShfQU1fTUFOR0xFX09QVElPTihbJDFdKSwgMSldKQogCiAjIF9BTV9TRVRfT1BUSU9OUyhPUFRJT05TKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBPUFRJT05TIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgQXV0b21ha2Ugb3B0aW9ucy4KIEFDX0RFRlVOKFtfQU1fU0VUX09QVElPTlNdLAogW200X2ZvcmVhY2hfdyhbX0FNX09wdGlvbl0sIFskMV0sIFtfQU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkKQEAgLTkwMywxMiArMTczOCwxNCBAQAogZmkKIEFDX01TR19SRVNVTFQoeWVzKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9QUk9HX0lOU1RBTExfU1RSSVAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE9uZSBpc3N1ZSB3aXRoIHZlbmRvciBgaW5zdGFsbCcgKGV2ZW4gR05VKSBpcyB0aGF0IHlvdSBjYW4ndApAQCAtOTMxLDEzICsxNzY4LDEzIEBACiBJTlNUQUxMX1NUUklQX1BST0dSQU09IlwkKGluc3RhbGxfc2gpIC1jIC1zIgogQUNfU1VCU1QoW0lOU1RBTExfU1RSSVBfUFJPR1JBTV0pXSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgMgorIyBzZXJpYWwgMwogCiAjIF9BTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk0NiwxMyArMTc4MywxMyBAQAogQUNfREVGVU4oW19BTV9TVUJTVF9OT1RNQUtFXSkKIAogIyBBTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgUHVibGljIHNpc3RlciBvZiBfQU1fU1VCU1RfTk9UTUFLRS4KIEFDX0RFRlVOKFtBTV9TVUJTVF9OT1RNQUtFXSwgW19BTV9TVUJTVF9OT1RNQUtFKCRAKV0pCiAKICMgQ2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCkBAIC05NzQsMTAgKzE4MTEsMTEgQEAKICMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4KICMgICAgICQoYW1fX3VudGFyKSA8IHJlc3VsdC50YXIKIEFDX0RFRlVOKFtfQU1fUFJPR19UQVJdLAotWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLUFNX01JU1NJTkdfUFJPRyhbQU1UQVJdLCBbdGFyXSkKK1sjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICBZZXMsIGl0J3Mgc3RpbGwgdXNlZAorIyBpbiB0aGUgd2lsZCA6LSggIFdlIHNob3VsZCBmaW5kIGEgcHJvcGVyIHdheSB0byBkZXByZWNhdGUgaXQgLi4uCitBQ19TVUJTVChbQU1UQVJdLCBbJyQke1RBUi10YXJ9J10pCiBtNF9pZihbJDFdLCBbdjddLAotICAgICBbYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtICIkJHRhcmRpciInOyBhbV9fdW50YXI9JyR7QU1UQVJ9IHhmIC0nXSwKKyAgICAgW2FtX190YXI9JyQke1RBUi10YXJ9IGNob2YgLSAiJCR0YXJkaXIiJyBhbV9fdW50YXI9JyQke1RBUi10YXJ9IHhmIC0nXSwKICAgICAgW200X2Nhc2UoWyQxXSwgW3VzdGFyXSwsIFtwYXhdLCwKICAgICAgICAgICAgICAgW200X2ZhdGFsKFtVbmtub3duIHRhciBmb3JtYXRdKV0pCiBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjcmVhdGUgYSAkMSB0YXIgYXJjaGl2ZV0pCkBAIC0xMDQ2LDYgKzE4ODQsMTYgQEAKIEFDX1NVQlNUKFthbV9fdW50YXJdKQogXSkgIyBfQU1fUFJPR19UQVIKIAorbTRfaW5jbHVkZShbbTQvYXNtY2ZpLm00XSkKK200X2luY2x1ZGUoW200L2F4X2FwcGVuZF9mbGFnLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NjX21heG9wdC5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jb25maWd1cmVfYXJncy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9lbmFibGVfYnVpbGRkaXIubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfZ2NjX2FyY2hmbGFnLm00XSkKK200X2luY2x1ZGUoW200L2F4X2djY194ODZfY3B1aWQubTRdKQogbTRfaW5jbHVkZShbbTQvbGlidG9vbC5tNF0pCiBtNF9pbmNsdWRlKFttNC9sdG9wdGlvbnMubTRdKQogbTRfaW5jbHVkZShbbTQvbHRzdWdhci5tNF0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUKaW5kZXggMWIxZDIzMi4uYzAwOTZhNyAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29tcGlsZQpAQCAtMSw5ICsxLDEwIEBACiAjISAvYmluL3NoCiAjIFdyYXBwZXIgZm9yIGNvbXBpbGVycyB3aGljaCBkbyBub3QgdW5kZXJzdGFuZCBgLWMgLW8nLgogCi1zY3JpcHR2ZXJzaW9uPTIwMDUtMDUtMTQuMjIKK3NjcmlwdHZlcnNpb249MjAwOS0xMC0wNi4yMDsgIyBVVEMKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOSAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFdyaXR0ZW4gYnkgVG9tIFRyb21leSA8dHJvbWV5QGN5Z251cy5jb20+LgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTcsOCArMTgsNyBAQAogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKICMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQogIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKQEAgLTEwMywxMyArMTAzLDEzIEBACiBmaQogCiAjIE5hbWUgb2YgZmlsZSB3ZSBleHBlY3QgY29tcGlsZXIgdG8gY3JlYXRlLgotY29maWxlPWBlY2hvICIkY2ZpbGUiIHwgc2VkIC1lICdzfF4uKi98fCcgLWUgJ3MvXC5jJC8uby8nYAorY29maWxlPWBlY2hvICIkY2ZpbGUiIHwgc2VkICdzfF4uKltcXC9dfHw7IHN8XlthLXpBLVpdOnx8OyBzL1wuYyQvLm8vJ2AKIAogIyBDcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5LgotIyBOb3RlOiB1c2UgYFsvLi1dJyBoZXJlIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgc2FtZSBuYW1lCisjIE5vdGU6IHVzZSBgWy9cXDouLV0nIGhlcmUgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgdXNlIHRoZSBzYW1lIG5hbWUKICMgdGhhdCB3ZSBhcmUgdXNpbmcgZm9yIHRoZSAubyBmaWxlLiAgQWxzbywgYmFzZSB0aGUgbmFtZSBvbiB0aGUgZXhwZWN0ZWQKICMgb2JqZWN0IGZpbGUgbmFtZSwgc2luY2UgdGhhdCBpcyB3aGF0IG1hdHRlcnMgd2l0aCBhIHBhcmFsbGVsIGJ1aWxkLgotbG9ja2Rpcj1gZWNobyAiJGNvZmlsZSIgfCBzZWQgLWUgJ3N8Wy8uLV18X3xnJ2AuZAorbG9ja2Rpcj1gZWNobyAiJGNvZmlsZSIgfCBzZWQgLWUgJ3N8Wy9cXDouLV18X3xnJ2AuZAogd2hpbGUgdHJ1ZTsgZG8KICAgaWYgbWtkaXIgIiRsb2NrZGlyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBicmVhawpAQCAtMTI0LDkgKzEyNCw5IEBACiByZXQ9JD8KIAogaWYgdGVzdCAtZiAiJGNvZmlsZSI7IHRoZW4KLSAgbXYgIiRjb2ZpbGUiICIkb2ZpbGUiCisgIHRlc3QgIiRjb2ZpbGUiID0gIiRvZmlsZSIgfHwgbXYgIiRjb2ZpbGUiICIkb2ZpbGUiCiBlbGlmIHRlc3QgLWYgIiR7Y29maWxlfWJqIjsgdGhlbgotICBtdiAiJHtjb2ZpbGV9YmoiICIkb2ZpbGUiCisgIHRlc3QgIiR7Y29maWxlfWJqIiA9ICIkb2ZpbGUiIHx8IG12ICIke2NvZmlsZX1iaiIgIiRvZmlsZSIKIGZpCiAKIHJtZGlyICIkbG9ja2RpciIKQEAgLTEzOCw1ICsxMzgsNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcwppbmRleCBkNTNlMzA5Li5iMDI1NjVjIDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcwpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBBdHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgogIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMDktMTEtMTknCit0aW1lc3RhbXA9JzIwMTEtMDYtMDMnCiAKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTU2LDggKzU2LDkgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTE4MCw3ICsxODEsNyBAQAogCQlmaQogCQk7OwogCSAgICAqKQotCSAgICAgICAgb3M9bmV0YnNkCisJCW9zPW5ldGJzZAogCQk7OwogCWVzYWMKIAkjIFRoZSBPUyByZWxlYXNlCkBAIC0yMjMsNyArMjI0LDcgQEAKIAkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKIAkJOzsKIAkqNS4qKQotCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKIAkJOzsKIAllc2FjCiAJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KQEAgLTI2OSw3ICsyNzAsMTAgQEAKIAkjIEEgWG4ubiB2ZXJzaW9uIGlzIGFuIHVucmVsZWFzZWQgZXhwZXJpbWVudGFsIGJhc2VsZXZlbC4KIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KIAllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLW9zZmBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXltQVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKLQlleGl0IDs7CisJIyBSZXNldCBFWElUIHRyYXAgYmVmb3JlIGV4aXRpbmcgdG8gYXZvaWQgc3B1cmlvdXMgbm9uLXplcm8gZXhpdCBjb2RlLgorCWV4aXRjb2RlPSQ/CisJdHJhcCAnJyAwCisJZXhpdCAkZXhpdGNvZGUgOzsKICAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQogCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KIAkjIFNob3VsZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQKQEAgLTI5NSw3ICsyOTksNyBAQAogCWVjaG8gczM5MC1pYm0tenZtb2UKIAlleGl0IDs7CiAgICAgKjpPUzQwMDoqOiopCi0gICAgICAgIGVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwllY2hvIHBvd2VycGMtaWJtLW9zNDAwCiAJZXhpdCA7OwogICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5bMDEyXSo6KikKIAllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CkBAIC0zMzMsNiArMzM3LDkgQEAKICAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQogCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCVNVTl9BUkNIPSJpMzg2IgpAQCAtMzkxLDIzICszOTgsMjMgQEAKICAgICAjIE1pTlQuICBCdXQgTWlOVCBpcyBkb3dud2FyZCBjb21wYXRpYmxlIHRvIFRPUywgc28gdGhpcyBzaG91bGQKICAgICAjIGJlIG5vIHByb2JsZW0uCiAgICAgYXRhcmlzdFtlXToqTWlOVDoqOiogfCBhdGFyaXN0W2VdOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBhdGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCiAJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgKmZhbGNvbio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZWNobyBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwllY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgKjoqTWlOVDoqOiogfCAqOiptaW50Oio6KiB8ICo6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay11bmtub3duLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwllY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBtNjhrOm1hY2h0ZW46KjoqKQogCWVjaG8gbTY4ay1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTQ3Nyw4ICs0ODQsOCBAQAogCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MwogCWV4aXQgOzsKICAgICBBVmlpT046ZGd1eDoqOiopCi0gICAgICAgICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCi0gICAgICAgIFVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKwlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAogCWlmIFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMDAgXSB8fCBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTEwIF0KIAl0aGVuCiAJICAgIGlmIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0gbTg4a2RndXhlbGZ4IF0gfHwgXApAQCAtNDkxLDcgKzQ5OCw3IEBACiAJZWxzZQogCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KIAlmaQotIAlleGl0IDs7CisJZXhpdCA7OwogICAgIE04OCo6RG9scGhpbk9TOio6KikJIyBEb2xwaGluT1MgKFNWUjMpCiAJZWNobyBtODhrLWRvbHBoaW4tc3lzdjMKIAlleGl0IDs7CkBAIC01NDgsNyArNTU1LDcgQEAKIAkJZWNobyByczYwMDAtaWJtLWFpeDMuMgogCWZpCiAJZXhpdCA7OwotICAgICo6QUlYOio6WzQ1Nl0pCisgICAgKjpBSVg6KjpbNDU2N10pCiAJSUJNX0NQVV9JRD1gL3Vzci9zYmluL2xzZGV2IC1DIC1jIHByb2Nlc3NvciAtUyBhdmFpbGFibGUgfCBzZWQgMXEgfCBhd2sgJ3sgcHJpbnQgJDEgfSdgCiAJaWYgL3Vzci9zYmluL2xzYXR0ciAtRWwgJHtJQk1fQ1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAJCUlCTV9BUkNIPXJzNjAwMApAQCAtNTkxLDUyICs1OTgsNTIgQEAKIAkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCiAJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCiAJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgICAgICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgotICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAotICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQotICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisJCSAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KKwkJICAgICAgNTIzKSBIUF9BUkNIPSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCisJCSAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorCQkgICAgICA1MzIpICAgICAgICAgICAgICAgICAgICAgICMgQ1BVX1BBX1JJU0MyXzAKKwkJCWNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgorCQkJICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7CisJCQkgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIgOzsKIAkJCSAgJycpIEhQX0FSQ0g9ImhwcGEyLjAiIDs7ICAgIyBIUC1VWCAxMC4yMAotICAgICAgICAgICAgICAgICAgICAgICAgZXNhYyA7OwotICAgICAgICAgICAgICAgICAgICBlc2FjCisJCQllc2FjIDs7CisJCSAgICBlc2FjCiAJCWZpCiAJCWlmIFsgIiR7SFBfQVJDSH0iID0gIiIgXTsgdGhlbgogCQkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCQkgICAgc2VkICdzL14gICAgICAgICAgICAgIC8vJyA8PCBFT0YgPiRkdW1teS5jCisJCSAgICBzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKIAotICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQotICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KKwkJI2RlZmluZSBfSFBVWF9TT1VSQ0UKKwkJI2luY2x1ZGUgPHN0ZGxpYi5oPgorCQkjaW5jbHVkZSA8dW5pc3RkLmg+CiAKLSAgICAgICAgICAgICAgaW50IG1haW4gKCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCi0gICAgICAgICAgICAgICAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7Ci0gICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKwkJaW50IG1haW4gKCkKKwkJeworCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCSAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7CisJCSNlbmRpZgorCQkgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKIAotICAgICAgICAgICAgICAgICAgc3dpdGNoIChjcHUpCi0gICAgICAgICAgICAgIAl7Ci0gICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOwotICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzJfMDoKLSAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQotICAgICAgICAgICAgICAJICAgIHN3aXRjaCAoYml0cykKLSAgICAgICAgICAgICAgCQl7Ci0gICAgICAgICAgICAgIAkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOwotICAgICAgICAgICAgICAJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKLSAgICAgICAgICAgICAgCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgCQl9IGJyZWFrOwotICAgICAgICAgICAgICAjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLwotICAgICAgICAgICAgICAJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAJfQotICAgICAgICAgICAgICAgICAgZXhpdCAoMCk7Ci0gICAgICAgICAgICAgIH0KKwkJICAgIHN3aXRjaCAoY3B1KQorCQkJeworCQkJY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMSIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MyXzA6CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJCSAgICBzd2l0Y2ggKGJpdHMpCisJCQkJeworCQkJCWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBicmVhazsKKwkJCQljYXNlIDMyOiBwdXRzICgiaHBwYTIuMG4iKTsgYnJlYWs7CisJCQkJZGVmYXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCQkJfSBicmVhazsKKwkJI2Vsc2UgIC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8KKwkJCSAgICBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJI2VuZGlmCisJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCX0KKwkJICAgIGV4aXQgKDApOworCQl9CiBFT0YKIAkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsKSAmJiBIUF9BUkNIPWAkZHVtbXlgCiAJCSAgICB0ZXN0IC16ICIkSFBfQVJDSCIgJiYgSFBfQVJDSD1ocHBhCkBAIC03MjcsMjIgKzczNCwyMiBAQAogCWV4aXQgOzsKICAgICBDMSo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQogCWVjaG8gYzEtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEMyKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCiAJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCiAJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCiAJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKIAlmaQotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEMzNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzNCo6KikKIAllY2hvIGMzNC1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM4KjoqKQogCWVjaG8gYzM4LWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQogCWVjaG8gYzQtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIENSQVkqWS1NUDoqOio6KikKIAllY2hvIHltcC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJwogCWV4aXQgOzsKQEAgLTc2NiwxNCArNzczLDE0IEBACiAJZXhpdCA7OwogICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQogCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCi0gICAgICAgIEZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKLSAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKLSAgICAgICAgZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKLSAgICAgICAgZXhpdCA7OworCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OwogICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKLSAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAotICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICBlY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgogCWV4aXQgOzsKICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KQEAgLTgwMSwxNCArODA4LDE0IEBACiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKIAlleGl0IDs7CiAgICAgaSo6d2luZG93czMyKjoqKQotICAgIAkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgotICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tbWluZ3czMgorCSMgdW5hbWUgLW0gaW5jbHVkZXMgIi1wYyIgb24gdGhpcyBzeXN0ZW0uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKIAlleGl0IDs7CiAgICAgaSo6UFcqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKIAlleGl0IDs7CiAgICAgKjpJbnRlcml4KjoqKQotICAgIAljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KIAkgICAgeDg2KQogCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KIAkJZXhpdCA7OwpAQCAtODYzLDcgKzg3MCw3IEBACiAJICBFVjYpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OwogCSAgRVY2NykgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CiAJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKLSAgICAgICAgZXNhYworCWVzYWMKIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKIAlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KQEAgLTg3NSw3ICs4ODIsMTMgQEAKIAl0aGVuCiAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWVsc2UKLQkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaQorCSAgICBpZiBlY2hvIF9fQVJNX1BDU19WRlAgfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAorCSAgICB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwkgICAgZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpaGYKKwkgICAgZmkKIAlmaQogCWV4aXQgOzsKICAgICBhdnIzMio6TGludXg6KjoqKQpAQCAtODg4LDcgKzkwMSw3IEBACiAJZWNobyBjcmlzdjMyLWF4aXMtbGludXgtZ251CiAJZXhpdCA7OwogICAgIGZydjpMaW51eDoqOiopCi0gICAgCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJZWNobyBmcnYtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgaSo4NjpMaW51eDoqOiopCiAJTElCQz1nbnUKQEAgLTk1Niw3ICs5NjksNyBAQAogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tbGludXgKIAlleGl0IDs7CiAgICAgc2g2NCo6TGludXg6KjoqKQotICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgc2gqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKQEAgLTk2NCw2ICs5NzcsOSBAQAogICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKKyAgICB0aWxlKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OwogICAgIHZheDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKIAlleGl0IDs7CkBAIC05NzEsNyArOTg3LDcgQEAKIAllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICB4dGVuc2EqOkxpbnV4Oio6KikKLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCiAJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KQEAgLTk4MCwxMSArOTk2LDExIEBACiAJZWNobyBpMzg2LXNlcXVlbnQtc3lzdjQKIAlleGl0IDs7CiAgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKLSAgICAgICAgIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgotICAgICAgICAjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCi0gICAgICAgICMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKKwkjIFVuaXh3YXJlIGlzIGFuIG9mZnNob290IG9mIFNWUjQsIGJ1dCBpdCBoYXMgaXRzIG93biB2ZXJzaW9uCisJIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgorCSMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKIAkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCi0gICAgICAgICMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCSMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CiAJZXhpdCA7OwogICAgIGkqODY6T1MvMjoqOiopCkBAIC0xMDE2LDcgKzEwMzIsNyBAQAogCWZpCiAJZXhpdCA7OwogICAgIGkqODY6Kjo1Ols2NzhdKikKLSAgICAJIyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCisJIyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCiAJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KIAkgICAgKjQ4NiopCSAgICAgVU5BTUVfTUFDSElORT1pNDg2IDs7CiAJICAgICpQZW50aXVtKQkgICAgIFVOQU1FX01BQ0hJTkU9aTU4NiA7OwpAQCAtMTA0NCwxMyArMTA2MCwxMyBAQAogCWV4aXQgOzsKICAgICBwYzoqOio6KikKIAkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKLSAgICAgICAgIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKLSAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAorCSMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCiAJIyBOb3RlOiB3aGF0ZXZlciB0aGlzIGlzLCBpdCBNVVNUIGJlIHRoZSBzYW1lIGFzIHdoYXQgY29uZmlnLnN1YgogCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0LCBvciBlbHNlIEdEQiBjb25maWd1cnkgd2lsbCBkZWNpZGUgdGhhdAogCSMgdGhpcyBpcyBhIGNyb3NzLWJ1aWxkLgogCWVjaG8gaTU4Ni1wYy1tc2Rvc2RqZ3BwCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgSW50ZWw6TWFjaDozKjoqKQogCWVjaG8gaTM4Ni1wYy1tYWNoMwogCWV4aXQgOzsKQEAgLTEwODUsOCArMTEwMSw4IEBACiAJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCiAJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OwogICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQotICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKLSAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhpdDsgfSA7OwogICAgIE5DUio6Kjo0LjI6KiB8IE1QUkFTKjoqOjQuMjoqKQogCU9TX1JFTD0nLjMnCiAJdGVzdCAtciAvZXRjLy5yZWxpZCBcCkBAIC0xMTI5LDEwICsxMTQ1LDEwIEBACiAJCWVjaG8gbnMzMmstc25pLXN5c3YKIAlmaQogCWV4aXQgOzsKLSAgICBQRU5USVVNOio6NC4wKjoqKSAjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAotICAgICAgICAgICAgICAgICAgICAgICMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KLSAgICAgICAgZWNobyBpNTg2LXVuaXN5cy1zeXN2NAotICAgICAgICBleGl0IDs7CisgICAgUEVOVElVTToqOjQuMCo6KikJIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKKwkJCSMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKwllY2hvIGk1ODYtdW5pc3lzLXN5c3Y0CisJZXhpdCA7OwogICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQogCSMgRnJvbSBHZXJhbGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KIAkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KQEAgLTExNTgsMTEgKzExNzQsMTEgQEAKIAlleGl0IDs7CiAgICAgUlszNF0wMDA6KlN5c3RlbV9WKjoqOiogfCBSNDAwMDpVTklYX1NZU1Y6KjoqIHwgUiowMDA6VU5JWF9TVjoqOiopCiAJaWYgWyAtZCAvdXNyL25lYyBdOyB0aGVuCi0JICAgICAgICBlY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJCWVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KIAllbHNlCi0JICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCQllY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQogCWZpCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQmVCb3g6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIGhhcmR3YXJlIG1hZGUgYnkgQmUsIFBQQyBvbmx5LgogCWVjaG8gcG93ZXJwYy1iZS1iZW9zCiAJZXhpdCA7OwpAQCAtMTIyNyw2ICsxMjQzLDkgQEAKICAgICAqOlFOWDoqOjQqKQogCWVjaG8gaTM4Ni1wYy1xbngKIAlleGl0IDs7CisgICAgTkVPLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbmVvLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIE5TRS0/Ok5PTlNUT1BfS0VSTkVMOio6KikKIAllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEyNzIsMTMgKzEyOTEsMTMgQEAKIAllY2hvIHBkcDEwLXVua25vd24taXRzCiAJZXhpdCA7OwogICAgIFNFSToqOio6U0VJVVgpCi0gICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgKjpEcmFnb25GbHk6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKIAlleGl0IDs7CiAgICAgKjoqVk1TOio6KikKLSAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAogCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCiAJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7CiAJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZtcyA7IGV4aXQgOzsKQEAgLTEzMTgsMTEgKzEzMzcsMTEgQEAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICAgcHJpbnRmICgibTY4ay1zb255LW5ld3NvcyVzXG4iLAogI2lmZGVmIE5FV1NPUzQKLSAgICAgICAgICAiNCIKKwkiNCIKICNlbHNlCi0JICAiIgorCSIiCiAjZW5kaWYKLSAgICAgICAgICk7IGV4aXQgKDApOworCSk7IGV4aXQgKDApOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViCmluZGV4IDE3YzkxNDUuLjc4MTc2YTQgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5zdWIKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgogIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMDktMTEtMDcnCit0aW1lc3RhbXA9JzIwMTEtMTAtMjknCiAKICMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgogIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCkBAIC03NSw4ICs3NSw5IEBACiB2ZXJzaW9uPSJcCiBHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKIAotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTIzLDggKzEyNCw5IEBACiAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgogbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wyLydgCiBjYXNlICRtYXliZV9vcyBpbgotICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBsaW51eC11Y2xpYmMqIHwgXAotICB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCisgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWFuZHJvaWQqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgXAorICBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCisgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCiAgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKICAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQogICAgIG9zPS0kbWF5YmVfb3MKQEAgLTE1Niw4ICsxNTgsOCBAQAogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OwotICAgICAgICAtYmx1ZWdlbmUqKQotCSAgICAgICAgb3M9LWNuaworCS1ibHVlZ2VuZSopCisJCW9zPS1jbmsKIAkJOzsKIAktc2ltIHwgLWNpc2NvIHwgLW9raSB8IC13ZWMgfCAtd2luYm9uZCkKIAkJb3M9CkBAIC0xNzMsMTAgKzE3NSwxMCBAQAogCQlvcz0tY2hvcnVzb3MKIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OwotIAktY2hvcnVzcmRiKQotIAkJb3M9LWNob3J1c3JkYgorCS1jaG9ydXNyZGIpCisJCW9zPS1jaG9ydXNyZGIKIAkJYmFzaWNfbWFjaGluZT0kMQotIAkJOzsKKwkJOzsKIAktaGl1eCopCiAJCW9zPS1oaXV4d2UyCiAJCTs7CkBAIC0yNDksMTMgKzI1MSwxNyBAQAogCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCiAJfCBhbTMzXzIuMCBcCiAJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCisgICAgICAgIHwgYmUzMiB8IGJlNjQgXAogCXwgYmZpbiBcCiAJfCBjNHggfCBjbGlwcGVyIFwKIAl8IGQxMHYgfCBkMzB2IHwgZGx4IHwgZHNwMTZ4eCBcCisJfCBlcGlwaGFueSBcCiAJfCBmaWRvIHwgZnIzMCB8IGZydiBcCiAJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQgXAorCXwgaGV4YWdvbiBcCiAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKIAl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbGUzMiB8IGxlNjQgXAogCXwgbG0zMiBcCiAJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKIAl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCB8IG1ldGFnIFwKQEAgLTI4MSwyNyArMjg3LDM4IEBACiAJfCBtb3hpZSBcCiAJfCBtdCBcCiAJfCBtc3A0MzAgXAorCXwgbmRzMzIgfCBuZHMzMmxlIHwgbmRzMzJiZSBcCiAJfCBuaW9zIHwgbmlvczIgXAogCXwgbnMxNmsgfCBuczMyayBcCisJfCBvcGVuOCBcCiAJfCBvcjMyIFwKIAl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCi0JfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgfCBwcGNiZSBcCisJfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgXAogCXwgcHlyYW1pZCBcCi0JfCByeCBcCisJfCBybDc4IHwgcnggXAogCXwgc2NvcmUgXAogCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKIAl8IHNoNjQgfCBzaDY0bGUgXAogCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAogCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKLQl8IHNwdSB8IHN0cm9uZ2FybSBcCi0JfCB0YWhvZSB8IHRodW1iIHwgdGljNHggfCB0aWM4MCB8IHRyb24gXAorCXwgc3B1IFwKKwl8IHRhaG9lIHwgdGljNHggfCB0aWM1NHggfCB0aWM1NXggfCB0aWM2eCB8IHRpYzgwIHwgdHJvbiBcCiAJfCB1Ymljb20zMiBcCi0JfCB2ODUwIHwgdjg1MGUgXAorCXwgdjg1MCB8IHY4NTBlIHwgdjg1MGUxIHwgdjg1MGUyIHwgdjg1MGVzIHwgdjg1MGUydjMgXAogCXwgd2UzMmsgXAotCXwgeDg2IHwgeGMxNnggfCB4c2NhbGUgfCB4c2NhbGVlW2JsXSB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCiAJfCB6OGsgfCB6ODApCiAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgogCQk7OworCWM1NHgpCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJOzsKKwljNTV4KQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCisJCTs7CisJYzZ4KQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKwkJOzsKIAltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBwaWNvY2hpcCkKIAkJIyBNb3Rvcm9sYSA2OEhDMTEvMTIuCiAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgpAQCAtMzEzLDYgKzMzMCwxOCBAQAogCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KIAkJOzsKIAorCXN0cm9uZ2FybSB8IHRodW1iIHwgeHNjYWxlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCTs7CisKKwl4c2NhbGVlYikKKwkJYmFzaWNfbWFjaGluZT1hcm1lYi11bmtub3duCisJCTs7CisKKwl4c2NhbGVlbCkKKwkJYmFzaWNfbWFjaGluZT1hcm1lbC11bmtub3duCisJCTs7CisKIAkjIFdlIHVzZSBgcGMnIHJhdGhlciB0aGFuIGB1bmtub3duJwogCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAogCSMgKDIpIHRoZSB3b3JkICJ1bmtub3duIiB0ZW5kcyB0byBjb25mdXNlIGJlZ2lubmluZyB1c2Vycy4KQEAgLTMzMiwxNiArMzYxLDE5IEBACiAJfCBhbHBoYXBjYTVbNjddLSogfCBhbHBoYTY0cGNhNVs2N10tKiB8IGFyYy0qIFwKIAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAogCXwgYXZyLSogfCBhdnIzMi0qIFwKKwl8IGJlMzItKiB8IGJlNjQtKiBcCiAJfCBiZmluLSogfCBiczIwMDAtKiBcCi0JfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiB8IGM1NHgtKiB8IGM1NXgtKiB8IGM2eC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIFwKIAl8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCiAJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCiAJfCBlbHhzaS0qIFwKIAl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKIAl8IGg4MzAwLSogfCBoODUwMC0qIFwKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCisJfCBoZXhhZ29uLSogXAogCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKIAl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxlMzItKiB8IGxlNjQtKiBcCiAJfCBsbTMyLSogXAogCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAogCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKQEAgLTM2NywyNSArMzk5LDI5IEBACiAJfCBtbWl4LSogXAogCXwgbXQtKiBcCiAJfCBtc3A0MzAtKiBcCisJfCBuZHMzMi0qIHwgbmRzMzJsZS0qIHwgbmRzMzJiZS0qIFwKIAl8IG5pb3MtKiB8IG5pb3MyLSogXAogCXwgbm9uZS0qIHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBcCisJfCBvcGVuOC0qIFwKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCi0JfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogXAogCXwgcHlyYW1pZC0qIFwKLQl8IHJvbXAtKiB8IHJzNjAwMC0qIHwgcngtKiBcCisJfCBybDc4LSogfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAogCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAogCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCiAJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCiAJfCBzcGFyY2xpdGUtKiBcCi0JfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCi0JfCB0YWhvZS0qIHwgdGh1bWItKiBcCi0JfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiB8IHRpbGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlKi0qIFwKIAl8IHRyb24tKiBcCiAJfCB1Ymljb20zMi0qIFwKLQl8IHY4NTAtKiB8IHY4NTBlLSogfCB2YXgtKiBcCisJfCB2ODUwLSogfCB2ODUwZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBcCisJfCB2YXgtKiBcCiAJfCB3ZTMyay0qIFwKLQl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogfCB4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCiAJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCiAJfCB5bXAtKiBcCiAJfCB6OGstKiB8IHo4MC0qKQpAQCAtNDEwLDcgKzQ0Niw3IEBACiAJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKIAkJb3M9LXVkaQogCQk7OwotICAgIAlhYmFjdXMpCisJYWJhY3VzKQogCQliYXNpY19tYWNoaW5lPWFiYWN1cy11bmtub3duCiAJCTs7CiAJYWRvYmU2OGspCkBAIC00ODAsMTEgKzUxNiwyMCBAQAogCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCiAJCW9zPS1jbmsKIAkJOzsKKwljNTR4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzU1eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM2eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJYzkwKQogCQliYXNpY19tYWNoaW5lPWM5MC1jcmF5CiAJCW9zPS11bmljb3MKIAkJOzsKLSAgICAgICAgY2VnY2MpCisJY2VnY2MpCiAJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KIAkJb3M9LWNlZ2NjCiAJCTs7CkBAIC01MTYsNyArNTYxLDcgQEAKIAkJYmFzaWNfbWFjaGluZT1jcmF5bnYtY3JheQogCQlvcz0tdW5pY29zbXAKIAkJOzsKLQljcjE2KQorCWNyMTYgfCBjcjE2LSopCiAJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCiAJCW9zPS1lbGYKIAkJOzsKQEAgLTczMiw3ICs3NzcsNyBAQAogCQliYXNpY19tYWNoaW5lPW5zMzJrLXV0ZWsKIAkJb3M9LXN5c3YKIAkJOzsKLSAgICAgICAgbWljcm9ibGF6ZSkKKwltaWNyb2JsYXplKQogCQliYXNpY19tYWNoaW5lPW1pY3JvYmxhemUteGlsaW54CiAJCTs7CiAJbWluZ3czMikKQEAgLTc3NSw2ICs4MjAsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQogCQlvcz0tbXZzCiAJCTs7CisJbmFjbCkKKwkJYmFzaWNfbWFjaGluZT1sZTMyLXVua25vd24KKwkJb3M9LW5hY2wKKwkJOzsKIAluY3IzMDAwKQogCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCiAJCW9zPS1zeXN2NApAQCAtODM5LDYgKzg4OCwxMiBAQAogCW5wMSkKIAkJYmFzaWNfbWFjaGluZT1ucDEtZ291bGQKIAkJOzsKKwluZW8tdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5lby10YW5kZW0KKwkJOzsKKwluc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKIAluc3ItdGFuZGVtKQogCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KIAkJOzsKQEAgLTkyMSw5ICs5NzYsMTAgQEAKIAkJOzsKIAlwb3dlcikJYmFzaWNfbWFjaGluZT1wb3dlci1pYm0KIAkJOzsKLQlwcGMpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJcHBjIHwgcHBjYmUpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCiAJCTs7Ci0JcHBjLSopCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCXBwYy0qIHwgcHBjYmUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCiAJCTs7CiAJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxlIHwgcG93ZXJwYy1saXR0bGUpCiAJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KQEAgLTEwMTcsNiArMTA3Myw5IEBACiAJCWJhc2ljX21hY2hpbmU9aTg2MC1zdHJhdHVzCiAJCW9zPS1zeXN2NAogCQk7OworCXN0cm9uZ2FybS0qIHwgdGh1bWItKikKKwkJYmFzaWNfbWFjaGluZT1hcm0tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKIAlzdW4yKQogCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KIAkJOzsKQEAgLTEwNzMsMjAgKzExMzIsOCBAQAogCQliYXNpY19tYWNoaW5lPXQ5MC1jcmF5CiAJCW9zPS11bmljb3MKIAkJOzsKLQl0aWM1NHggfCBjNTR4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzU1eCB8IGM1NXgqKQotCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCi0JCW9zPS1jb2ZmCi0JCTs7Ci0JdGljNnggfCBjNngqKQotCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKIAl0aWxlKikKLQkJYmFzaWNfbWFjaGluZT10aWxlLXVua25vd24KKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCW9zPS1saW51eC1nbnUKIAkJOzsKIAl0eDM5KQpAQCAtMTE1Niw2ICsxMjAzLDkgQEAKIAl4cHMgfCB4cHMxMDApCiAJCWJhc2ljX21hY2hpbmU9eHBzMTAwLWhvbmV5d2VsbAogCQk7OworCXhzY2FsZS0qIHwgeHNjYWxlZVtibF0tKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eeHNjYWxlL2FybS8nYAorCQk7OwogCXltcCkKIAkJYmFzaWNfbWFjaGluZT15bXAtY3JheQogCQlvcz0tdW5pY29zCkBAIC0xMjUzLDkgKzEzMDMsMTIgQEAKIGlmIFsgeCIkb3MiICE9IHgiIiBdCiB0aGVuCiBjYXNlICRvcyBpbgotICAgICAgICAjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcwotICAgICAgICAjIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkIHdpdGggdmFsaWQgc3lzdGVtIHR5cGVzLgorCSMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCisJIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KIAkjIC1zb2xhcmlzKiBpcyBhIGJhc2ljIHN5c3RlbSB0eXBlLCB3aXRoIHRoaXMgb25lIGV4Y2VwdGlvbi4KKwktYXVyb3JhdXgpCisJCW9zPS1hdXJvcmF1eAorCQk7OwogCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCiAJCTs7CkBAIC0xMjc3LDggKzEzMzAsOCBAQAogCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQgY29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KIAktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1pbml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCiAJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1szNF0qXAotCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtc29sYXJpcyogfCAtc3ltKiBcCi0JICAgICAgfCAta29wZW5zb2xhcmlzKiBcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCiAJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCiAJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKQEAgLTEyOTEsNyArMTM0NCw4IEBACiAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCiAJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKIAkgICAgICB8IC1jeWd3aW4qIHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCi0JICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LXVjbGliYyogXAorCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtYW5kcm9pZCogXAorCSAgICAgIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCiAJICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAogCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCiAJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCkBAIC0xMzM4LDcgKzEzOTIsNyBAQAogCS1vcGVuZWQqKQogCQlvcz0tb3BlbmVkaXRpb24KIAkJOzsKLSAgICAgICAgLW9zNDAwKikKKwktb3M0MDAqKQogCQlvcz0tb3M0MDAKIAkJOzsKIAktd2luY2UqKQpAQCAtMTM4Nyw3ICsxNDQxLDcgQEAKIAktc2luaXgqKQogCQlvcz0tc3lzdjQKIAkJOzsKLSAgICAgICAgLXRwZiopCisJLXRwZiopCiAJCW9zPS10cGYKIAkJOzsKIAktdHJpdG9uKikKQEAgLTE0MzIsNiArMTQ4Niw4IEBACiAJLWRpY29zKikKIAkJb3M9LWRpY29zCiAJCTs7CisJLW5hY2wqKQorCQk7OwogCS1ub25lKQogCQk7OwogCSopCkBAIC0xNDU0LDEwICsxNTEwLDEwIEBACiAjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgogCiBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gICAgICAgIHNjb3JlLSopCisJc2NvcmUtKikKIAkJb3M9LWVsZgogCQk7OwotICAgICAgICBzcHUtKikKKwlzcHUtKikKIAkJb3M9LWVsZgogCQk7OwogCSotYWNvcm4pCkBAIC0xNDY5LDggKzE1MjUsMTcgQEAKIAlhcm0qLXNlbWkpCiAJCW9zPS1hb3V0CiAJCTs7Ci0gICAgICAgIGM0eC0qIHwgdGljNHgtKikKLSAgICAgICAgCW9zPS1jb2ZmCisJYzR4LSogfCB0aWM0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCiAJCTs7CiAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgogCXBkcDEwLSopCkBAIC0xNDk3LDcgKzE1NjIsNyBAQAogCW02OCotY2lzY28pCiAJCW9zPS1hb3V0CiAJCTs7Ci0gICAgICAgIG1lcC0qKQorCW1lcC0qKQogCQlvcz0tZWxmCiAJCTs7CiAJbWlwcyotY2lzY28pCkBAIC0xNTI0LDcgKzE1ODksNyBAQAogCSotaWJtKQogCQlvcz0tYWl4CiAJCTs7Ci0gICAgCSota251dGgpCisJKi1rbnV0aCkKIAkJb3M9LW1taXh3YXJlCiAJCTs7CiAJKi13ZWMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlCmluZGV4IGM1YzcwYjEuLjVhYWNmOWIgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlCkBAIC0xLDEzICsxLDEzIEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NSBmb3IgbGliZmZpIDMuMC4xMHJjMC4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4IGZvciBsaWJmZmkgMy4wLjExLgogIwotIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4uCisjIFJlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXM+LgogIwogIwogIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCi0jIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjCiAjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCkBAIC05MSw2ICs5MSw3IEBACiBJRlM9IiAiIgkkYXNfbmwiCiAKICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CiBjYXNlICQwIGluICMoKAogICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CiAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTE3Myw2ICsxNzQsMTQgQEAKICAgYXNfbGluZW5vXzI9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18yYT1cJExJTkVOTwogICBldmFsICd0ZXN0IFwieFwkYXNfbGluZW5vXzEnXCRhc19ydW4nXCIgIT0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIiAmJgogICB0ZXN0IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wkYXNfcnVuJyArIDFcYFwiID0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIicgfHwgZXhpdCAxCisKKyAgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cJHtCQVNIX1ZFUlNJT04rc2V0fVwiIHx8ICgKKyAgICBFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKKyAgICBFQ0hPPVwkRUNIT1wkRUNIT1wkRUNIT1wkRUNIT1wkRUNITworICAgIEVDSE89XCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPCisgICAgUEFUSD0vZW1wdHkgRlBBVEg9L2VtcHR5OyBleHBvcnQgUEFUSCBGUEFUSAorICAgIHRlc3QgXCJYXGBwcmludGYgJXMgXCRFQ0hPXGBcIiA9IFwiWFwkRUNIT1wiIFxcCisgICAgICB8fCB0ZXN0IFwiWFxgcHJpbnQgLXIgLS0gXCRFQ0hPXGBcIiA9IFwiWFwkRUNIT1wiICkgfHwgZXhpdCAxCiB0ZXN0IFwkKCggMSArIDEgKSkgPSAyIHx8IGV4aXQgMSIKICAgaWYgKGV2YWwgIiRhc19yZXF1aXJlZCIpIDI+L2Rldi9udWxsOyB0aGVuIDoKICAgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKQEAgLTIxNiwxMSArMjI1LDE4IEBACiAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCiAJIyBuZXV0cmFsaXphdGlvbiB2YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28KIAkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgorCSMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KIAlCQVNIX0VOVj0vZGV2L251bGwKIAlFTlY9L2Rldi9udWxsCiAJKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCiAJZXhwb3J0IENPTkZJR19TSEVMTAotCWV4ZWMgIiRDT05GSUdfU0hFTEwiICIkYXNfbXlzZWxmIiAkezErIiRAIn0KKwljYXNlICQtIGluICMgKCgoKAorCSAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CisJICAqdiogKSBhc19vcHRzPS12IDs7CisJICAqeCogKSBhc19vcHRzPS14IDs7CisJICAqICkgYXNfb3B0cz0gOzsKKwllc2FjCisJZXhlYyAiJENPTkZJR19TSEVMTCIgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQogZmkKIAogICAgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKQEAgLTIzMSw4ICsyNDcsOCBAQAogICAgICRhc19lY2hvICIkMDogYmUgdXBncmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiIKICAgZWxzZQogICAgICRhc19lY2hvICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYW5kCi0kMDogaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbCBhYm91dCB5b3VyIHN5c3RlbSwKLSQwOiBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcworJDA6IGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3VlcyBhYm91dCB5b3VyCiskMDogc3lzdGVtLCBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcwogJDA6IG1lc3NhZ2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwgb3IgbWFudWFsbHkgcnVuCiAkMDogdGhlIHNjcmlwdCB1bmRlciBzdWNoIGEgc2hlbGwgaWYgeW91IGRvIGhhdmUgb25lLiIKICAgZmkKQEAgLTMxOSw3ICszMzUsNyBAQAogICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKICAgICBkb25lCiAgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgorICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgogCiAKIH0gIyBhc19mbl9ta2Rpcl9wCkBAIC0zNTksMTkgKzM3NSwxOSBAQAogZmkgIyBhc19mbl9hcml0aAogCiAKLSMgYXNfZm5fZXJyb3IgRVJST1IgW0xJTkVOTyBMT0dfRkRdCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJlCiAjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKLSMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgogYXNfZm5fZXJyb3IgKCkKIHsKLSAgYXNfc3RhdHVzPSQ/OyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKLSAgaWYgdGVzdCAiJDMiOyB0aGVuCi0gICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMiJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMSIgPiYkMworICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7IHRoZW4KKyAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CiAgIGZpCi0gICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMSIgPiYyCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMiIgPiYyCiAgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwogfSAjIGFzX2ZuX2Vycm9yCiAKQEAgLTUyOCwxNjEgKzU0NCwxNCBAQAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCiBhc190cl9zaD0iZXZhbCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgogCi0KLQotIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgogU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KIAotY2FzZSBYJGx0X0VDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFwkXFwkMCwnJDAnLCdgCi0gIDs7Ci1lc2FjCi0KLUVDSE89JHtsdF9FQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYJDEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCi0gIDoKLWVsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnIDsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotICBleGVjICRTSEVMTCAiJDAiIC0tbm8tcmVleGVjICR7MSsiJEAifQotZmkKLQotaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8X0xUX0VPRgotJCoKLV9MVF9FT0YKLSAgZXhpdCAwCi1maQotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1pZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KLSAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCi0gICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0Ci0gICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiJDAiJyAnc2VkIDIwcSAiJDAiJyAnc2VkIDEwcSAiJDAiJyAnc2VkIDJxICIkMCInICdlY2hvIHRlc3QnOyBkbwotICAgICAgIyBleHBlY3RlZCBzaXplczogbGVzcyB0aGFuIDJLYiwgMUtiLCA1MTIgYnl0ZXMsIDE2IGJ5dGVzLCAuLi4KLSAgICAgIGlmIHsgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkY21kYDsgfSAyPi9kZXYvbnVsbCAmJgotCSB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbAotICAgICAgdGhlbgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gIGZpCi0KLSAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgIyBUaGUgU29sYXJpcywgQUlYLCBhbmQgRGlnaXRhbCBVbml4IGRlZmF1bHQgZWNobyBwcm9ncmFtcyB1bnF1b3RlCi0gICAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAgICMgICBlY2hvICIkc29tZXRoaW5nIiB8IHNlZCAncy9cXC9cXFxcL2cnCi0gICAgIwotICAgICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBkaXIgaW4gJFBBVEggL3Vzci91Y2I7IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIGlmICh0ZXN0IC1mICRkaXIvZWNobyB8fCB0ZXN0IC1mICRkaXIvZWNobyRhY19leGVleHQpICYmCi0gICAgICAgICB0ZXN0ICJYYCgkZGlyL2VjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgIEVDSE89IiRkaXIvZWNobyIKLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gICAgaWYgdGVzdCAiWCRFQ0hPIiA9IFhlY2hvOyB0aGVuCi0gICAgICAjIFdlIGRpZG4ndCBmaW5kIGEgYmV0dGVyIGVjaG8sIHNvIGxvb2sgZm9yIGFsdGVybmF0aXZlcy4KLSAgICAgIGlmIHRlc3QgIlhgeyBwcmludCAtciAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyBwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICAgIEVDSE89J3ByaW50IC1yJwotICAgICAgZWxpZiB7IHRlc3QgLWYgL2Jpbi9rc2ggfHwgdGVzdCAtZiAvYmluL2tzaCRhY19leGVleHQ7IH0gJiYKLQkgICB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAgICMgSWYgd2UgaGF2ZSBrc2gsIHRyeSBydW5uaW5nIGNvbmZpZ3VyZSBhZ2FpbiB3aXRoIGl0LgotICAgICAgICBPUklHSU5BTF9DT05GSUdfU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSAgICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgICBDT05GSUdfU0hFTEw9L2Jpbi9rc2gKLSAgICAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotICAgICAgICBleGVjICRDT05GSUdfU0hFTEwgIiQwIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KLSAgICAgIGVsc2UKLSAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKLSAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgIyBDb29sLCBwcmludGYgd29ya3MKLQkgIDoKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiJDAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIENPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0JICBleHBvcnQgQ09ORklHX1NIRUxMCi0JICBTSEVMTD0iJENPTkZJR19TSEVMTCIKLQkgIGV4cG9ydCBTSEVMTAotCSAgRUNITz0iJENPTkZJR19TSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMICQwIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxzZQotCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KLQkgIHByZXY9OgotCi0JICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIiQwIicgJ3NlZCAxMHEgIiQwIicgJ3NlZCAyMHEgIiQwIicgJ3NlZCA1MHEgIiQwIic7IGRvCi0JICAgIGlmIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYYGV2YWwgJGNtZGAiOyB9IDI+L2Rldi9udWxsCi0JICAgIHRoZW4KLQkgICAgICBicmVhawotCSAgICBmaQotCSAgICBwcmV2PSIkY21kIgotCSAgZG9uZQotCi0JICBpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIiQwIic7IHRoZW4KLQkgICAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKLQkgICAgZXhwb3J0IGVjaG9fdGVzdF9zdHJpbmcKLQkgICAgZXhlYyAke09SSUdJTkFMX0NPTkZJR19TSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0gIiQwIiAkezErIiRAIn0KLQkgIGVsc2UKLQkgICAgIyBPb3BzLiAgV2UgbG9zdCBjb21wbGV0ZWx5LCBzbyBqdXN0IHN0aWNrIHdpdGggZWNoby4KLQkgICAgRUNITz1lY2hvCi0JICBmaQotICAgICAgICBmaQotICAgICAgZmkKLSAgICBmaQotICBmaQotZmkKLQotIyBDb3B5IGVjaG8gYW5kIHF1b3RlIHRoZSBjb3B5IHN1aXRhYmx5IGZvciBwYXNzaW5nIHRvIGxpYnRvb2wgZnJvbQotIyB0aGUgTWFrZWZpbGUsIGluc3RlYWQgb2YgcXVvdGluZyB0aGUgb3JpZ2luYWwsIHdoaWNoIGlzIHVzZWQgbGF0ZXIuCi1sdF9FQ0hPPSRFQ0hPCi1pZiB0ZXN0ICJYJGx0X0VDSE8iID0gIlgkQ09ORklHX1NIRUxMICQwIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLSAgIGx0X0VDSE89IiRDT05GSUdfU0hFTEwgXFxcJFwkMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi0KLQogCiB0ZXN0IC1uICIkREpESVIiIHx8IGV4ZWMgNzwmMCA8L2Rldi9udWxsCiBleGVjIDY+JjEKIAogIyBOYW1lIG9mIHRoZSBob3N0LgotIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKICMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgogYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCiAKQEAgLTcwMSw5ICs1NzAsOSBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J2xpYmZmaScKIFBBQ0tBR0VfVEFSTkFNRT0nbGliZmZpJwotUEFDS0FHRV9WRVJTSU9OPSczLjAuMTByYzAnCi1QQUNLQUdFX1NUUklORz0nbGliZmZpIDMuMC4xMHJjMCcKLVBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sJworUEFDS0FHRV9WRVJTSU9OPSczLjAuMTEnCitQQUNLQUdFX1NUUklORz0nbGliZmZpIDMuMC4xMScKK1BBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXMnCiBQQUNLQUdFX1VSTD0nJwogCiAjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCkBAIC03NDgsOCArNjE3LDE0IEBACiBMSUJPQkpTCiB0b29sZXhlY2xpYmRpcgogdG9vbGV4ZWNkaXIKK0ZGSV9ERUJVR19GQUxTRQorRkZJX0RFQlVHX1RSVUUKIFRBUkdFVERJUgogVEFSR0VUCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUUKK3N5c19zeW1ib2xfdW5kZXJzY29yZQogSEFWRV9MT05HX0RPVUJMRQogQUxMT0NBCiBQQTY0X0hQVVhfRkFMU0UKQEAgLTc4Miw2ICs2NTcsOCBAQAogUE9XRVJQQ19BSVhfVFJVRQogUE9XRVJQQ19GQUxTRQogUE9XRVJQQ19UUlVFCitNT1hJRV9GQUxTRQorTU9YSUVfVFJVRQogTTY4S19GQUxTRQogTTY4S19UUlVFCiBNMzJSX0ZBTFNFCkBAIC04MTEsMTUgKzY4OCwxOCBAQAogTUFJTlQKIE1BSU5UQUlORVJfTU9ERV9GQUxTRQogTUFJTlRBSU5FUl9NT0RFX1RSVUUKK1BSVERJQUcKIENQUAogT1RPT0w2NAogT1RPT0wKIExJUE8KIE5NRURJVAogRFNZTVVUSUwKLWx0X0VDSE8KK01BTklGRVNUX1RPT0wKIFJBTkxJQgorYWNfY3RfQVIKIEFSCitETExUT09MCiBPQkpEVU1QCiBMTl9TCiBOTQpAQCAtODM5LDYgKzcxOSw3IEBACiBhbV9fZmFzdGRlcENDX0ZBTFNFCiBhbV9fZmFzdGRlcENDX1RSVUUKIENDREVQTU9ERQorYW1fX25vZGVwCiBBTURFUEJBQ0tTTEFTSAogQU1ERVBfRkFMU0UKIEFNREVQX1RSVUUKQEAgLTg3NSw2ICs3NTYsNyBAQAogSU5TVEFMTF9EQVRBCiBJTlNUQUxMX1NDUklQVAogSU5TVEFMTF9QUk9HUkFNCitheF9lbmFibGVfYnVpbGRkaXJfc2VkCiB0YXJnZXRfb3MKIHRhcmdldF92ZW5kb3IKIHRhcmdldF9jcHUKQEAgLTkyOCwxMyArODEwLDE3IEBACiBhY19zdWJzdF9maWxlcz0nJwogYWNfdXNlcl9vcHRzPScKIGVuYWJsZV9vcHRpb25fY2hlY2tpbmcKK2VuYWJsZV9idWlsZGRpcgogZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKIGVuYWJsZV9zaGFyZWQKIGVuYWJsZV9zdGF0aWMKIHdpdGhfcGljCiBlbmFibGVfZmFzdF9pbnN0YWxsCiB3aXRoX2dudV9sZAord2l0aF9zeXNyb290CiBlbmFibGVfbGlidG9vbF9sb2NrCitlbmFibGVfcG9ydGFibGVfYmluYXJ5Cit3aXRoX2djY19hcmNoCiBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCiBlbmFibGVfZGVidWcKIGVuYWJsZV9zdHJ1Y3RzCkBAIC0xMDEwLDggKzg5Niw5IEBACiAgIGZpCiAKICAgY2FzZSAkYWNfb3B0aW9uIGluCi0gICo9KikJYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsKLSAgKikJYWNfb3B0YXJnPXllcyA7OworICAqPT8qKSBhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7OworICAqPSkgICBhY19vcHRhcmc9IDs7CisgICopICAgIGFjX29wdGFyZz15ZXMgOzsKICAgZXNhYwogCiAgICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuCkBAIC0xMDU2LDcgKzk0Myw3IEBACiAgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmRpc2FibGUtXCguKlwpJ2AKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAogICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKICAgICBjYXNlICRhY191c2VyX29wdHMgaW4KQEAgLTEwODIsNyArOTY5LDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMjg2LDcgKzExNzMsNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMzAyLDcgKzExODksNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMzMyLDggKzEyMTksOCBAQAogICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKICAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7CiAKLSAgLSopIGFzX2ZuX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nCi1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgogICAgIDs7CiAKICAgKj0qKQpAQCAtMTM0MSw3ICsxMjI4LDcgQEAKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgY2FzZSAkYWNfZW52dmFyIGluICMoCiAgICAgICAnJyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiApCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2YXInIiA7OworICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52dmFyJyIgOzsKICAgICBlc2FjCiAgICAgZXZhbCAkYWNfZW52dmFyPVwkYWNfb3B0YXJnCiAgICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsKQEAgLTEzNTEsNyArMTIzOCw3IEBACiAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyCiAgICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCiAgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpbnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyCi0gICAgOiAke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufQorICAgIDogIiR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259IgogICAgIDs7CiAKICAgZXNhYwpAQCAtMTM1OSwxMyArMTI0NiwxMyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KICAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAotICBhc19mbl9lcnJvciAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIgorICBhc19mbl9lcnJvciAkPyAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIgogZmkKIAogaWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIjsgdGhlbgogICBjYXNlICRlbmFibGVfb3B0aW9uX2NoZWNraW5nIGluCiAgICAgbm8pIDs7Ci0gICAgZmF0YWwpIGFzX2ZuX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA7OworICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKICAgICAqKSAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyIDs7CiAgIGVzYWMKIGZpCkBAIC0xMzg4LDcgKzEyNzUsNyBAQAogICAgIFtcXC8kXSogfCA/OltcXC9dKiApICBjb250aW51ZTs7CiAgICAgTk9ORSB8ICcnICkgY2FzZSAkYWNfdmFyIGluICpwcmVmaXggKSBjb250aW51ZTs7IGVzYWM7OwogICBlc2FjCi0gIGFzX2ZuX2Vycm9yICJleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgorICBhc19mbl9lcnJvciAkPyAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIKIGRvbmUKIAogIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0JwpAQCAtMTQwMiw4ICsxMjg5LDggQEAKIGlmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgogICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KICAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKLSAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBJZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0LgotICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkLiIgPiYyCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KKyAgICBJZiBhIGNyb3NzIGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUgdXNlZCIgPiYyCiAgIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4KICAgICBjcm9zc19jb21waWxpbmc9eWVzCiAgIGZpCkBAIC0xNDE4LDkgKzEzMDUsOSBAQAogYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4gIiRhY19wd2QiICYmCiBhY19sc19kaT1gbHMgLWRpIC5gICYmCiBhY19wd2RfbHNfZGk9YGNkICIkYWNfcHdkIiAmJiBscyAtZGkgLmAgfHwKLSAgYXNfZm5fZXJyb3IgIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgorICBhc19mbl9lcnJvciAkPyAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWluZWQiCiB0ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwKLSAgYXNfZm5fZXJyb3IgInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKKyAgYXNfZm5fZXJyb3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKIAogCiAjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCkBAIC0xNDU5LDExICsxMzQ2LDExIEBACiBmaQogaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KICAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iCi0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRzcmNkaXIiCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRzcmNkaXIiCiBmaQogYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIgogYWNfYWJzX2NvbmZkaXI9YCgKLQljZCAiJHNyY2RpciIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9yICIkYWNfbXNnIgorCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCiAJcHdkKWAKICMgV2hlbiBidWlsZGluZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCiBpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIiID0gIiRhY19wd2QiOyB0aGVuCkBAIC0xNDg5LDcgKzEzNzYsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIGxpYmZmaSAzLjAuMTByYzAgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgbGliZmZpIDMuMC4xMSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNTAzLDcgKzEzOTAsNyBAQAogICAgICAgLS1oZWxwPXNob3J0ICAgICAgICBkaXNwbGF5IG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBwYWNrYWdlCiAgICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcwogICAtViwgLS12ZXJzaW9uICAgICAgICAgICBkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSAgLXEsIC0tcXVpZXQsIC0tc2lsZW50ICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcuLi4nIG1lc3NhZ2VzCisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2FnZXMKICAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQogICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJwogICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwpAQCAtMTU2MCw3ICsxNDQ3LDcgQEAKIAogaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KICAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCi0gICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBsaWJmZmkgMy4wLjEwcmMwOiI7OworICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbGliZmZpIDMuMC4xMToiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0xNTY4LDYgKzE0NTUsOCBAQAogICAtLWRpc2FibGUtb3B0aW9uLWNoZWNraW5nICBpZ25vcmUgdW5yZWNvZ25pemVkIC0tZW5hYmxlLy0td2l0aCBvcHRpb25zCiAgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQorICAtLWRpc2FibGUtYnVpbGRkaXIgICAgICBkaXNhYmxlIGF1dG9tYXRpYyBidWlsZCBpbiBzdWJkaXIgb2Ygc291cmNlcworCiAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICBzcGVlZHMgdXAgb25lLXRpbWUgYnVpbGQKICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyAgIGRvIG5vdCByZWplY3Qgc2xvdyBkZXBlbmRlbmN5IGV4dHJhY3RvcnMKICAgLS1lbmFibGUtc2hhcmVkWz1QS0dTXSAgYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdCkBAIC0xNTc1LDYgKzE0NjQsOSBAQAogICAtLWVuYWJsZS1mYXN0LWluc3RhbGxbPVBLR1NdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBbZGVmYXVsdD15ZXNdCiAgIC0tZGlzYWJsZS1saWJ0b29sLWxvY2sgIGF2b2lkIGxvY2tpbmcgKG1pZ2h0IGJyZWFrIHBhcmFsbGVsIGJ1aWxkcykKKyAgLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGUgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIHByb2R1Y2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wb3J0YWJsZSBiaW5hcmllcwogICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgIGVuYWJsZSBtYWtlIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgbm90IHVzZWZ1bAogCQkJICAoYW5kIHNvbWV0aW1lcyBjb25mdXNpbmcpIHRvIHRoZSBjYXN1YWwgaW5zdGFsbGVyCiAgIC0tZW5hYmxlLWRlYnVnICAgICAgICAgIGRlYnVnZ2luZyBtb2RlCkBAIC0xNTg1LDkgKzE0NzcsMTMgQEAKIE9wdGlvbmFsIFBhY2thZ2VzOgogICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KICAgLS13aXRob3V0LVBBQ0tBR0UgICAgICAgZG8gbm90IHVzZSBQQUNLQUdFIChzYW1lIGFzIC0td2l0aC1QQUNLQUdFPW5vKQotICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgLS13aXRoLXBpY1s9UEtHU10gICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKyAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgLS13aXRoLWdjYy1hcmNoPTxhcmNoPiAgdXNlIGFyY2hpdGVjdHVyZSA8YXJjaD4gZm9yIGdjYyAtbWFyY2gvLW10dW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGd1ZXNzaW5nCiAKIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKQEAgLTE2MDQsNyArMTUwMCw3IEBACiBVc2UgdGhlc2UgdmFyaWFibGVzIHRvIG92ZXJyaWRlIHRoZSBjaG9pY2VzIG1hZGUgYnkgYGNvbmZpZ3VyZScgb3IgdG8gaGVscAogaXQgdG8gZmluZCBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLgogCi1SZXBvcnQgYnVncyB0byA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4uCitSZXBvcnQgYnVncyB0byA8aHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzPi4KIF9BQ0VPRgogYWNfc3RhdHVzPSQ/CiBmaQpAQCAtMTY2NywxMCArMTU2MywxMCBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLWxpYmZmaSBjb25maWd1cmUgMy4wLjEwcmMwCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUKK2xpYmZmaSBjb25maWd1cmUgMy4wLjExCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgKIAotQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KIF9BQ0VPRgpAQCAtMTcxNCw3ICsxNjEwLDcgQEAKIAogCWFjX3JldHZhbD0xCiBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX3RyeV9jb21waWxlCkBAIC0xNzYwLDcgKzE2NTYsNyBAQAogICAjIGludGVyZmVyZSB3aXRoIHRoZSBuZXh0IGxpbmsgY29tbWFuZDsgYWxzbyBkZWxldGUgYSBkaXJlY3RvcnkgdGhhdCBpcwogICAjIGxlZnQgYmVoaW5kIGJ5IEFwcGxlJ3MgY29tcGlsZXIuICBXZSBkbyB0aGlzIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdGlvbnMuCiAgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfbGluawpAQCAtMTc3NCw3ICsxNjcwLDcgQEAKICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xNzkyLDcgKzE2ODgsNyBAQAogZXZhbCBhY19yZXM9XCQkMwogCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiAkYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogCiB9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZQogCkBAIC0xODE3LDcgKzE3MTMsNyBAQAogICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKICAgZmkKICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gPi9kZXYvbnVsbCAmJiB7CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gPiBjb25mdGVzdC5pICYmIHsKIAkgdGVzdCAteiAiJGFjX2NfcHJlcHJvY193YXJuX2ZsYWckYWNfY193ZXJyb3JfZmxhZyIgfHwKIAkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgogICAgICAgIH07IHRoZW4gOgpAQCAtMTgyOCw3ICsxNzI0LDcgQEAKIAogICAgIGFjX3JldHZhbD0xCiBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX3RyeV9jcHAKQEAgLTE4NzAsNyArMTc2Niw3IEBACiAgICAgICAgYWNfcmV0dmFsPSRhY19zdGF0dXMKIGZpCiAgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfcnVuCkBAIC0xODgzLDcgKzE3NzksNyBAQAogICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTE5MzgsNyArMTgzNCw3IEBACiBldmFsIGFjX3Jlcz1cJCQzCiAJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAKIH0gIyBhY19mbl9jX2NoZWNrX2Z1bmMKIApAQCAtMTk1MCwxMCArMTg0NiwxMCBAQAogYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAoKQogewogICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIGlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKKyAgaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBmaQogZXZhbCBhY19yZXM9XCQkMwpAQCAtMTk4OSw3ICsxODg1LDcgQEAKIGVsc2UKICAgYWNfaGVhZGVyX3ByZXByb2M9bm8KIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1CiAkYXNfZWNobyAiJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjY7IH0KIApAQCAtMjAxMiwxNyArMTkwOCwxNSBAQAogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KLSggY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUmVwb3J0IHRoaXMgdG8gaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbCAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisoICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJlcG9ydCB0aGlzIHRvIGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3VlcyAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjIgogICAgICApIHwgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAgICAgOzsKIGVzYWMKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgZXZhbCAiJDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCkBAIC0yMDMxLDEwICsxOTI1LDY0IEBACiAJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KIGZpCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogCiB9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbAogCisjIGFjX2ZuX2NfY2hlY2tfdHlwZSBMSU5FTk8gVFlQRSBWQVIgSU5DTFVERVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIFRZUEUgZXhpc3RzIGFmdGVyIGhhdmluZyBpbmNsdWRlZCBJTkNMVURFUywgc2V0dGluZyBjYWNoZQorIyB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9jX2NoZWNrX3R5cGUgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIkMz1ubyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoJDIpKQorCSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWluICgpCit7CitpZiAoc2l6ZW9mICgoJDIpKSkKKwkgICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBldmFsICIkMz15ZXMiCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja190eXBlCisKICMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKQEAgLTIyMDgsNyArMjE1Niw3IEBACiBybSAtZiBjb25mdGVzdC52YWwKIAogICBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX2NvbXB1dGVfaW50CkBAIC0yMjE2LDggKzIxNjQsOCBAQAogVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKIHJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKLUl0IHdhcyBjcmVhdGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjEwcmMwLCB3aGljaCB3YXMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgbGliZmZpICRhc19tZSAzLjAuMTEsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQAogCkBAIC0yMzI3LDExICsyMjc1LDkgQEAKICAgewogICAgIGVjaG8KIAotICAgIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgQ2FjaGUgdmFyaWFibGVzLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tICMjIgogICAgIGVjaG8KICAgICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAogKApAQCAtMjM2NSwxMSArMjMxMSw5IEBACiApCiAgICAgZWNobwogCi0gICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIE91dHB1dCB2YXJpYWJsZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICBlY2hvCiAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfdmFycwogICAgIGRvCkBAIC0yMzgyLDExICsyMzI2LDkgQEAKICAgICBlY2hvCiAKICAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCi0gICAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjIgogICAgICAgZWNobwogICAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfZmlsZXMKICAgICAgIGRvCkBAIC0yNDAwLDExICsyMzQyLDkgQEAKICAgICBmaQogCiAgICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCi0gICAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLSAjIworICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjCiAjIyBjb25mZGVmcy5oLiAjIwotIyMgLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0gIyMiCiAgICAgICBlY2hvCiAgICAgICBjYXQgY29uZmRlZnMuaAogICAgICAgZWNobwpAQCAtMjQ1OSw3ICsyMzk5LDEyIEBACiBhY19zaXRlX2ZpbGUxPU5PTkUKIGFjX3NpdGVfZmlsZTI9Tk9ORQogaWYgdGVzdCAtbiAiJENPTkZJR19TSVRFIjsgdGhlbgotICBhY19zaXRlX2ZpbGUxPSRDT05GSUdfU0lURQorICAjIFdlIGRvIG5vdCB3YW50IGEgUEFUSCBzZWFyY2ggZm9yIGNvbmZpZy5zaXRlLgorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgKKyAgICAtKikgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICAgICovKikgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEU7OworICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7CisgIGVzYWMKIGVsaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCiAgIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQogICBhY19zaXRlX2ZpbGUyPSRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlCkBAIC0yNDc0LDcgKzI0MTksMTEgQEAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9CiAgICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1Ci0gICAgLiAiJGFjX3NpdGVfZmlsZSIKKyAgICAuICIkYWNfc2l0ZV9maWxlIiBcCisgICAgICB8fCB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJmYWlsZWQgdG8gbG9hZCBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICBmaQogZG9uZQogCkBAIC0yNTUwLDcgKzI0OTksNyBAQAogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLSAgYXNfZm5fZXJyb3IgInJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQogZmkKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAjIyBNYWluIGJvZHkgb2Ygc2NyaXB0LiAjIwpAQCAtMjU2OCwxNiArMjUxNywyMiBAQAogCiBhY19hdXhfZGlyPQogZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgZm9yIGFjX3QgaW4gaW5zdGFsbC1zaCBpbnN0YWxsLnNoIHNodG9vbDsgZG8KLSAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY190IjsgdGhlbgotICAgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci8kYWNfdCAtYyIKLSAgICAgIGJyZWFrIDIKLSAgICBmaQotICBkb25lCisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLnNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL3NodG9vbCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQogZG9uZQogaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gXCIkc3JjZGlyXCIgXCIkc3JjZGlyLy4uXCIgXCIkc3JjZGlyLy4uLy4uXCIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gXCIkc3JjZGlyXCIgXCIkc3JjZGlyLy4uXCIgXCIkc3JjZGlyLy4uLy4uXCIiICIkTElORU5PIiA1CiBmaQogCiAjIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgdW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwKQEAgLTI1OTEsMjcgKzI1NDYsMjcgQEAKIAogIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgogJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAotICBhc19mbl9lcnJvciAiY2Fubm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9idWlsZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwogdGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCiAgIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgCiB0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKLSAgYXNfZm5fZXJyb3IgImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKIGFjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwKLSAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KIGNhc2UgJGFjX2N2X2J1aWxkIGluCiAqLSotKikgOzsKLSopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7CiBlc2FjCiBidWlsZD0kYWNfY3ZfYnVpbGQKIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKQEAgLTI2MjksMTQgKzI1ODQsMTQgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfaG9zdCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgogICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAogZWxzZQogICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAotICAgIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKIGZpCiAKIGZpCkBAIC0yNjQ0LDcgKzI1OTksNyBAQAogJGFzX2VjaG8gIiRhY19jdl9ob3N0IiA+JjY7IH0KIGNhc2UgJGFjX2N2X2hvc3QgaW4KICotKi0qKSA7OwotKikgYXNfZm5fZXJyb3IgImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7CiBlc2FjCiBob3N0PSRhY19jdl9ob3N0CiBhY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCkBAIC0yNjYyLDE0ICsyNjE3LDE0IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl90YXJnZXQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl90YXJnZXQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICJ4JHRhcmdldF9hbGlhcyIgPSB4OyB0aGVuCiAgIGFjX2N2X3RhcmdldD0kYWNfY3ZfaG9zdAogZWxzZQogICBhY19jdl90YXJnZXQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJHRhcmdldF9hbGlhc2AgfHwKLSAgICBhc19mbl9lcnJvciAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJHRhcmdldF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICR0YXJnZXRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQogZmkKIAogZmkKQEAgLTI2NzcsNyArMjYzMiw3IEBACiAkYXNfZWNobyAiJGFjX2N2X3RhcmdldCIgPiY2OyB9CiBjYXNlICRhY19jdl90YXJnZXQgaW4KICotKi0qKSA7OwotKikgYXNfZm5fZXJyb3IgImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIHRhcmdldCIgIiRMSU5FTk8iIDU7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIHRhcmdldCIgIiRMSU5FTk8iIDU7OwogZXNhYwogdGFyZ2V0PSRhY19jdl90YXJnZXQKIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKQEAgLTI3MDQsNiArMjY1OSwxMTAgQEAKIAogLiAke3NyY2Rpcn0vY29uZmlndXJlLmhvc3QKIAorCisgICAjIFskXUAgaXMgdW5zYWJsZSBpbiAyLjYwKyBidXQgZWFybGllciBhdXRvY29uZiBoYWQgbm8gYWNfY29uZmlndXJlX2FyZ3MKKyAgIGlmIHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3Mrc2V0fSIgIT0gInNldCIgOyB0aGVuCisgICAgICBhY19jb25maWd1cmVfYXJncz0KKyAgICAgIGZvciBhY19hcmcgaW4gJHsxKyIkQCJ9OyBkbworICAgICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciCisgICAgICBkb25lCisgICBmaQorCisjIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCithbV9hdXhfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCisKKworYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWJ1aWxkZGlyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2J1aWxkZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfYnVpbGRkaXI7IGF4X2VuYWJsZV9idWlsZGRpcj0iJGVuYWJsZXZhbCIKK2Vsc2UKKyAgYXhfZW5hYmxlX2J1aWxkZGlyPSJhdXRvIgorZmkKKworaWYgdGVzdCAiLiRhY19zcmNkaXJfZGVmYXVsdGVkIiAhPSAiLm5vIiA7IHRoZW4KK2lmIHRlc3QgIi4kc3JjZGlyIiA9ICIuLiIgOyB0aGVuCisgIGlmIHRlc3QgLWYgY29uZmlnLnN0YXR1cyA7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHRvcGxldmVsIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQuLi4gc2tpcHBpbmcgc3ViZGlyIGJ1aWxkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHRvcGxldmVsIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQuLi4gc2tpcHBpbmcgc3ViZGlyIGJ1aWxkIiA+JjY7fQorICBlbHNlCisgICAgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi4iICAmJiBheF9lbmFibGVfYnVpbGRkaXI9Ii4iCisgICAgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi5ubyIgICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyAgICB0ZXN0ICIuJFRBUkdFVCIgPSAiLiIgJiYgVEFSR0VUPSIkdGFyZ2V0IgorICAgIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuYXV0byIgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIkVEFSR0VUIgorICAgIGlmIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiAhPSAiLi4iIDsgdGhlbiAgICAjIHdlIGtub3cgd2hlcmUgdG8gZ28gYW5kCisgICAgICBhc19kaXI9JGF4X2VuYWJsZV9idWlsZGRpcjsgYXNfZm5fbWtkaXJfcAorICAgICAgZWNobyBfXy4kYXhfZW5hYmxlX2J1aWxkZGlyLl9fID4gJGF4X2VuYWJsZV9idWlsZGRpci9jb25mdGVzdC50bXAKKyAgICAgIGNkICRheF9lbmFibGVfYnVpbGRkaXIKKyAgICAgIGlmIGdyZXAgX18uJGF4X2VuYWJsZV9idWlsZGRpci5fXyBjb25mdGVzdC50bXAgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgcm0gY29uZnRlc3QudG1wCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciBcIi4vJGF4X2VuYWJsZV9idWlsZGRpclwiIiA+JjUKKyRhc19lY2hvICJjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciBcIi4vJGF4X2VuYWJsZV9idWlsZGRpclwiIiA+JjY7IH0KKyAgICAgIGVsc2UKKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjaGFuZ2UgdG8gZGVmYXVsdCBidWlsZGRpciBcIi4vJGF4X2VuYWJsZV9idWlsZGRpclwiIiAiJExJTkVOTyIgNQorICAgICAgZmkKKyAgICAgIHNyY2Rpcj1gZWNobyAiJGF4X2VuYWJsZV9idWlsZGRpciIgfAorICAgICAgICAgICAgICBzZWQgLWUgJ3MsXlwuLywsO3MsW14vXSQsJi8sO3MsW14vXSovLC4uLyxnO3MsWy9dJCwsOydgCisgICAgICAjIGdvaW5nIHRvIHJlc3RhcnQgZnJvbSBzdWJkaXJlY3RvcnkgbG9jYXRpb24KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25maWcubG9nICAgJiYgbXYgJHNyY2Rpci9jb25maWcubG9nICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZkZWZzLmggICAmJiBtdiAkc3JjZGlyL2NvbmZkZWZzLmggICAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZnRlc3QubG9nICYmIG12ICRzcmNkaXIvY29uZnRlc3QubG9nIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci8kY2FjaGVfZmlsZSAgJiYgbXYgJHNyY2Rpci8kY2FjaGVfZmlsZSAgLgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IC4uLi5leGVjICRTSEVMTCAkc3JjZGlyLyQwIFwiLS1zcmNkaXI9JHNyY2RpclwiIFwiLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpclwiICR7MStcIiRAXCJ9IiA+JjUKKyRhc19lY2hvICIuLi4uZXhlYyAkU0hFTEwgJHNyY2Rpci8kMCBcIi0tc3JjZGlyPSRzcmNkaXJcIiBcIi0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXJcIiAkezErXCIkQFwifSIgPiY2OyB9CisgICAgICBjYXNlICIkMCIgaW4gIyByZXN0YXJ0CisgICAgICAgL1xcKikgZXZhbCAkU0hFTEwgIickMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpciciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgICopIGV2YWwgJFNIRUxMICInJHNyY2Rpci8kMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpciciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgZXNhYyA7IGV4aXQgJD8KKyAgICBmaQorICBmaQorZmkgZmkKK3Rlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuYXV0byIgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnc2VkIHNlZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZ3NlZCBzZWQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQiICYmIGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0ic2VkIgorICA7OworZXNhYworZmkKK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9JGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZAoraWYgdGVzdCAtbiAiJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgPiY1CiskYXNfZWNobyAiJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGFtX2F1eF9kaXIiCithY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgYnVpbGRpciIKKworCiBhbV9fYXBpX3ZlcnNpb249JzEuMTEnCiAKICMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLApAQCAtMjcyMyw3ICsyNzgyLDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIgPiY2OyB9CiBpZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9pbnN0YWxsKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtMjgxMCwxMSArMjg2OSwxMSBAQAogJwogY2FzZSBgcHdkYCBpbgogICAqW1xcXCJcI1wkXCZcJ1xgJGFtX2xmXSopCi0gICAgYXNfZm5fZXJyb3IgInVuc2FmZSBhYnNvbHV0ZSB3b3JraW5nIGRpcmVjdG9yeSBuYW1lIiAiJExJTkVOTyIgNTs7CisgICAgYXNfZm5fZXJyb3IgJD8gInVuc2FmZSBhYnNvbHV0ZSB3b3JraW5nIGRpcmVjdG9yeSBuYW1lIiAiJExJTkVOTyIgNTs7CiBlc2FjCiBjYXNlICRzcmNkaXIgaW4KICAgKltcXFwiXCNcJFwmXCdcYCRhbV9sZlwgXAldKikKLSAgICBhc19mbl9lcnJvciAidW5zYWZlIHNyY2RpciB2YWx1ZTogXGAkc3JjZGlyJyIgIiRMSU5FTk8iIDU7OworICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bnNhZmUgc3JjZGlyIHZhbHVlOiBcYCRzcmNkaXInIiAiJExJTkVOTyIgNTs7CiBlc2FjCiAKICMgRG8gYHNldCcgaW4gYSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MKQEAgLTI4MzYsNyArMjg5NSw3IEBACiAgICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBpdCBpbmhlcml0cyBhCiAgICAgICAjIGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMgaGFzIGFjdHVhbGx5CiAgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuCi0gICAgICBhc19mbl9lcnJvciAibHMgLXQgYXBwZWFycyB0byBmYWlsLiAgTWFrZSBzdXJlIHRoZXJlIGlzIG5vdCBhIGJyb2tlbgorICAgICAgYXNfZm5fZXJyb3IgJD8gImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KIGFsaWFzIGluIHlvdXIgZW52aXJvbm1lbnQiICIkTElORU5PIiA1CiAgICBmaQogCkBAIC0yODQ2LDcgKzI5MDUsNyBAQAogICAgIyBPay4KICAgIDoKIGVsc2UKLSAgIGFzX2ZuX2Vycm9yICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyEKKyAgIGFzX2ZuX2Vycm9yICQ/ICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyEKIENoZWNrIHlvdXIgc3lzdGVtIGNsb2NrIiAiJExJTkVOTyIgNQogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQpAQCAtMjg2MSw5ICsyOTIwLDYgQEAKIGFjX3NjcmlwdD0ncy9bXFwkXS8mJi9nO3MvO3MseCx4LCQvLycKIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9YCRhc19lY2hvICIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgfCBzZWQgIiRhY19zY3JpcHQiYAogCi0jIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCi1hbV9hdXhfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCi0KIGlmIHRlc3QgeCIke01JU1NJTkcrc2V0fSIgIT0geHNldDsgdGhlbgogICBjYXNlICRhbV9hdXhfZGlyIGluCiAgICpcICogfCAqXAkqKQpAQCAtMjkwMCw3ICsyOTU2LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCkBAIC0yOTQwLDcgKzI5OTYsNyBAQAogc2V0IGR1bW15IHN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuCkBAIC0yOTkzLDcgKzMwNDksNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSB0aHJlYWQtc2FmZSBta2RpciAtcCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYSB0aHJlYWQtc2FmZSBta2RpciAtcC4uLiAiID4mNjsgfQogaWYgdGVzdCAteiAiJE1LRElSX1AiOyB0aGVuCi0gIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9ta2RpcitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGlmICR7YWNfY3ZfcGF0aF9ta2Rpcis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTMwNDQsNyArMzEwMCw3IEBACiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0FXSytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfQVdLKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KQEAgLTMwODQsNyArMzE0MCw3IEBACiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpLi4uICIgPiY2OyB9CiBzZXQgeCAke01BS0UtbWFrZX0KIGFjX21ha2U9YCRhc19lY2hvICIkMiIgfCBzZWQgJ3MvKy9wL2c7IHMvW15hLXpBLVowLTlfXS9fL2cnYAotaWYgeyBhc192YXI9YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0OyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9BQ0VPRgpAQCAtMzA5Miw3ICszMTQ4LDcgQEAKIGFsbDoKIAlAZWNobyAnQEBAJSUlPSQoTUFLRSk9QEBAJSUlJwogX0FDRU9GCi0jIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5nLi4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KKyMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcgLi4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KIGNhc2UgYCR7TUFLRS1tYWtlfSAtZiBjb25mdGVzdC5tYWtlIDI+L2Rldi9udWxsYCBpbgogICAqQEBAJSUlPT8qPUBAQCUlJSopCiAgICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9eWVzOzsKQEAgLTMxMjYsNyArMzE4Miw3IEBACiAgIGFtX19pc3JjPScgLUkkKHNyY2RpciknCiAgICMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZAogICBpZiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuIFwibWFrZSBkaXN0Y2xlYW5cIiB0aGVyZSBmaXJzdCIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAic291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biBcIm1ha2UgZGlzdGNsZWFuXCIgdGhlcmUgZmlyc3QiICIkTElORU5PIiA1CiAgIGZpCiBmaQogCkBAIC0zMTQyLDcgKzMxOTgsNyBAQAogCiAjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCiAgUEFDS0FHRT0nbGliZmZpJwotIFZFUlNJT049JzMuMC4xMHJjMCcKKyBWRVJTSU9OPSczLjAuMTEnCiAKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgpAQCAtMzE3MiwxMSArMzIyOCwxMSBAQAogCiAjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgogIyBzb21lIHBsYXRmb3Jtcy4KLSMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gIFllcywgaXQncyBzdGlsbCB1c2VkCisjIGluIHRoZSB3aWxkIDotKCAgV2Ugc2hvdWxkIGZpbmQgYSBwcm9wZXIgd2F5IHRvIGRlcHJlY2F0ZSBpdCAuLi4KK0FNVEFSPSckJHtUQVItdGFyfScKIAotQU1UQVI9JHtBTVRBUi0iJHthbV9taXNzaW5nX3J1bn10YXIifQotCi1hbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLScKK2FtX190YXI9JyQke1RBUi10YXJ9IGNob2YgLSAiJCR0YXJkaXIiJyBhbV9fdW50YXI9JyQke1RBUi10YXJ9IHhmIC0nCiAKIAogCkBAIC0zMTg3LDkgKzMyNDMsMTIgQEAKICMgV2UgbXVzdCBmb3JjZSBDQyB0byAvbm90LyBiZSBwcmVjaW91cyB2YXJpYWJsZXM7IG90aGVyd2lzZQogIyB0aGUgd3JvbmcsIG5vbi1tdWx0aWxpYi1hZGp1c3RlZCB2YWx1ZSB3aWxsIGJlIHVzZWQgaW4gbXVsdGlsaWJzLgogIyBBcyBhIHNpZGUgZWZmZWN0LCB3ZSBoYXZlIHRvIHN1YnN0IENGTEFHUyBvdXJzZWx2ZXMuCisjIEFsc28gc2F2ZSBhbmQgcmVzdG9yZSBDRkxBR1MsIHNpbmNlIEFDX1BST0dfQ0Mgd2lsbCBjb21lIHVwIHdpdGgKKyMgZGVmYXVsdHMgb2YgaXRzIG93biBpZiBub25lIGFyZSBwcm92aWRlZC4KIAogCiAKK3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMzIwMCw3ICszMjU5LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzI0MCw3ICszMjk5LDcgQEAKIHNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KQEAgLTMyOTMsNyArMzM1Miw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzMzMyw3ICszMzkyLDcgQEAKIHNldCBkdW1teSBjYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzM5Miw3ICszNDUxLDcgQEAKIHNldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzQzNiw3ICszNDk1LDcgQEAKIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgpAQCAtMzQ5MCw4ICszNTQ5LDggQEAKIAogdGVzdCAteiAiJENDIiAmJiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogCiAjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCiAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZXJzaW9uIiA+JjUKQEAgLTM2MDUsOSArMzY2NCw4IEBACiAKIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQoteyBhc19mbl9zZXRfc3RhdHVzIDc3Ci1hc19mbl9lcnJvciAiQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH07IH0KK2FzX2ZuX2Vycm9yIDc3ICJDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQogJGFzX2VjaG8gInllcyIgPiY2OyB9CkBAIC0zNjQ5LDggKzM3MDcsOCBAQAogZWxzZQogICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogZmkKIHJtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9leGVleHQiID4mNQpAQCAtMzcwNyw5ICszNzY1LDkgQEAKICAgICBlbHNlCiAJeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KIElmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9CitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgIGZpCiAgIGZpCiBmaQpAQCAtMzcyMCw3ICszNzc4LDcgQEAKIGFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X29iamV4dCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X29iamV4dCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTM3NjAsOCArMzgxOCw4IEBACiAKIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCkBAIC0zNzcxLDcgKzM4MjksNyBAQAogYWNfb2JqZXh0PSRPQkpFWFQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9jX2NvbXBpbGVyX2dudStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2NfY29tcGlsZXJfZ251Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzgwOCw3ICszODY2LDcgQEAKIGFjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfY2NfZys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZwpAQCAtMzg4Niw3ICszOTQ0LDcgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfYzg5K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19jY19jODkrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jdl9wcm9nX2NjX2M4OT1ubwpAQCAtNDAzMiw2ICs0MDkwLDcgQEAKIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgogICBBTURFUEJBQ0tTTEFTSD0nXCcKKyAgYW1fX25vZGVwPSdfbm8nCiBmaQogIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBBTURFUF9UUlVFPQpAQCAtNDA0Nyw3ICs0MTA2LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbgpAQCAtNDA1Niw2ICs0MTE1LDcgQEAKICAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKICAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAogICAjIGluIEQnLgorICBybSAtcmYgY29uZnRlc3QuZGlyCiAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgogICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQogICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgpAQCAtNDExNSw3ICs0MTc1LDcgQEAKIAlicmVhawogICAgICAgZmkKICAgICAgIDs7Ci0gICAgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKKyAgICBtc3ZjNyB8IG1zdmM3bXN5cyB8IG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCiAgICAgICAjIFRoaXMgY29tcGlsZXIgd29uJ3QgZ3JvayBgLWMgLW8nLCBidXQgYWxzbywgdGhlIG1pbnVzbyB0ZXN0IGhhcwogICAgICAgIyBub3QgcnVuIHlldC4gIFRoZXNlIGRlcG1vZGVzIGFyZSBsYXRlIGVub3VnaCBpbiB0aGUgZ2FtZSwgYW5kCiAgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLgpAQCAtNDE3MCw2ICs0MjMwLDcgQEAKIGZpCiAKIAorQ0ZMQUdTPSRzYXZlX0NGTEFHUwogCiAKIApAQCAtNDE4Niw3ICs0MjQ3LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthbV9jdl9DQ0FTX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YW1fY3ZfQ0NBU19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4KQEAgLTQxOTUsNiArNDI1Niw3IEBACiAgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKICAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgogICBta2RpciBjb25mdGVzdC5kaXIKICAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKICAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KQEAgLTQyNTIsNyArNDMxNCw3IEBACiAJYnJlYWsKICAgICAgIGZpCiAgICAgICA7OwotICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQogICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKICAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAogICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KQEAgLTQzMTYsNyArNDM3OCw3IEBACiBmaQogc2V0IGR1bW15ICRDQzsgYWNfY2M9YCRhc19lY2hvICIkMiIgfAogCQkgICAgICBzZWQgJ3MvW15hLXpBLVowLTlfXS9fL2c7cy9eWzAtOV0vXy8nYAotaWYgeyBhc192YXI9YWNfY3ZfcHJvZ19jY18ke2FjX2NjfV9jX287IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHthY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTQ0NDEsOCArNDUwMyw4IEBACiAKIAogCi1tYWNyb192ZXJzaW9uPScyLjIuNicKLW1hY3JvX3JldmlzaW9uPScxLjMwMTInCittYWNyb192ZXJzaW9uPScyLjQuMicKK21hY3JvX3JldmlzaW9uPScxLjMzMzcnCiAKIAogCkBAIC00NDU4LDkgKzQ1MjAsNzggQEAKIAogbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAKKyMgQmFja3NsYXNoaWZ5IG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4KKyMgZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKKworRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCitpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50IC1yIC0tJworZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnRmICVzXG4nCitlbHNlCisgICMgVXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBmYWxsYmFjayB0aGF0IGFsd2F5cyB3b3Jrcy4KKyAgZnVuY19mYWxsYmFja19lY2hvICgpCisgIHsKKyAgICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorJDEKK19MVEVDSE9fRU9GJworICB9CisgIEVDSE89J2Z1bmNfZmFsbGJhY2tfZWNobycKK2ZpCisKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiIgorfQorCitjYXNlICIkRUNITyIgaW4KKyAgcHJpbnRmKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHByaW50ZiIgPiY1CiskYXNfZWNobyAicHJpbnRmIiA+JjY7IH0gOzsKKyAgcHJpbnQqKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogcHJpbnQgLXIiID4mNQorJGFzX2VjaG8gInByaW50IC1yIiA+JjY7IH0gOzsKKyAgKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IGNhdCIgPiY1CiskYXNfZWNobyAiY2F0IiA+JjY7IH0gOzsKK2VzYWMKKworCisKKworCisKKworCisKKworCisKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9TRUQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCkBAIC00NTE1LDcgKzQ2NDYsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1NFRCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfU0VEPSRTRUQKQEAgLTQ1NDIsNyArNDY3Myw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wYXRoX0dSRVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX0dSRVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkR1JFUCI7IHRoZW4KQEAgLTQ1OTEsNyArNDcyMiw3IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKICAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKICAgZmkKIGVsc2UKICAgYWNfY3ZfcGF0aF9HUkVQPSRHUkVQCkBAIC00NjA1LDcgKzQ3MzYsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlZ3JlcCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZWdyZXAuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9FR1JFUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfRUdSRVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiBlY2hvIGEgfCAkR1JFUCAtRSAnKGF8YiknID4vZGV2L251bGwgMj4mMQpAQCAtNDY1Nyw3ICs0Nzg4LDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9FR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBlZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX0VHUkVQPSRFR1JFUApAQCAtNDY3Miw3ICs0ODAzLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZmdyZXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGZncmVwLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfRkdSRVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX0ZHUkVQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgZWNobyAnYWIqYycgfCAkR1JFUCAtRiAnYWIqYycgPi9kZXYvbnVsbCAyPiYxCkBAIC00NzI0LDcgKzQ4NTUsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0ZHUkVQIjsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGZncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBmZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfRkdSRVA9JEZHUkVQCkBAIC00ODAzLDcgKzQ5MzQsNyBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBub24tR05VIGxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBub24tR05VIGxkLi4uICIgPiY2OyB9CiBmaQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX0xEK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9MRCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KQEAgLTQ4NDAsMTAgKzQ5NzEsMTAgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotdGVzdCAteiAiJExEIiAmJiBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1Cit0ZXN0IC16ICIkTEQiICYmIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19nbnVfbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2dudV9sZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KQEAgLTQ4NzAsNyArNTAwMSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEJTRC0gb3IgTVMtY29tcGF0aWJsZSBuYW1lIGxpc3RlciAobm0pIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIgKG5tKS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX05NK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9OTSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiROTSI7IHRoZW4KQEAgLTQ5MjMsMTQgKzUwNTQsMTcgQEAKICAgTk09IiRsdF9jdl9wYXRoX05NIgogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICBmb3IgYWNfcHJvZyBpbiAiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiCisgIGlmIHRlc3QgLW4gIiREVU1QQklOIjsgdGhlbiA6CisgICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGVsc2UKKyAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGR1bXBiaW4gImxpbmsgLWR1bXAiCiAgIGRvCiAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0RVTVBCSU4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0RVTVBCSU4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4KQEAgLTQ5NjgsMTMgKzUxMDIsMTMgQEAKIGZpCiBpZiB0ZXN0IC16ICIkRFVNUEJJTiI7IHRoZW4KICAgYWNfY3RfRFVNUEJJTj0kRFVNUEJJTgotICBmb3IgYWNfcHJvZyBpbiAiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiCisgIGZvciBhY19wcm9nIGluIGR1bXBiaW4gImxpbmsgLWR1bXAiCiBkbwogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRFVNUEJJTitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfRFVNUEJJTis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9EVU1QQklOIjsgdGhlbgpAQCAtNTAyMyw2ICs1MTU3LDE1IEBACiAgIGZpCiBmaQogCisgICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICAqQ09GRiopCisgICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIERVTVBCSU49OgorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCiAKICAgaWYgdGVzdCAiJERVTVBCSU4iICE9ICI6IjsgdGhlbgogICAgIE5NPSIkRFVNUEJJTiIKQEAgLTUwMzcsMTggKzUxODAsMTggQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHRoZSBuYW1lIGxpc3RlciAoJE5NKSBpbnRlcmZhY2UuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfbm1faW50ZXJmYWNlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfbm1faW50ZXJmYWNlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJCU0Qgbm0iCiAgIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29uZnRlc3QuJGFjX2V4dAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6NTA0NTogJGFjX2NvbXBpbGVcIiIgPiY1KQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGFjX2NvbXBpbGVcIiIgPiY1KQogICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6NTA0ODogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JjUpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mNSkKICAgKGV2YWwgIiROTSBcImNvbmZ0ZXN0LiRhY19vYmpleHRcIiIgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTo1MDUxOiBvdXRwdXRcIiIgPiY1KQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogb3V0cHV0XCIiID4mNSkKICAgY2F0IGNvbmZ0ZXN0Lm91dCA+JjUKICAgaWYgJEdSRVAgJ0V4dGVybmFsLipzb21lX3ZhcmlhYmxlJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9ubV9pbnRlcmZhY2U9Ik1TIGR1bXBiaW4iCkBAIC01MDcyLDcgKzUyMTUsNyBAQAogIyBmaW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3N5c19tYXhfY21kX2xlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3N5c19tYXhfY21kX2xlbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICAgaT0wCkBAIC01MTA1LDYgKzUyNDgsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKICAgICA7OwogCisgIG1pbnQqKQorICAgICMgT24gTWlOVCB0aGlzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCiAgIGFtaWdhb3MqKQogICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KICAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgpAQCAtNTEzMCw2ICs1Mjc4LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE5NjYwOAogICAgIDs7CiAKKyAgb3MyKikKKyAgICAjIFRoZSB0ZXN0IHRha2VzIGEgbG9uZyB0aW1lIG9uIE9TLzIuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTIKKyAgICA7OworCiAgIG9zZiopCiAgICAgIyBEci4gSGFucyBFa2tlaGFyZCBQbGVzc2VyIHJlcG9ydHMgc2VlaW5nIGEga2VybmVsIHBhbmljIHJ1bm5pbmcgY29uZmlndXJlCiAgICAgIyBkdWUgdG8gdGhpcyB0ZXN0IHdoZW4gZXhlY19kaXNhYmxlX2FyZ19saW1pdCBpcyAxIG9uIFRydTY0LiBJdCBpcyBub3QKQEAgLTUxNjksOCArNTMyMiw4IEBACiAgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQogICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKICAgICAgICMgd2UgY2FuJ3QgdGVsbC4KLSAgICAgIHdoaWxlIHsgdGVzdCAiWCJgJFNIRUxMICQwIC0tZmFsbGJhY2stZWNobyAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCi0JICAgICAgICAgPSAiWFgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKKyAgICAgIHdoaWxlIHsgdGVzdCAiWCJgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCisJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgogCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAogICAgICAgZG8KICAgICAgICAgaT1gZXhwciAkaSArIDFgCkBAIC01MjEyLDggKzUzNjUsOCBAQAogIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKIHhzaV9zaGVsbD1ubwogKCBfbHRfZHVtbXk9ImEvYi9jIgotICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotICAgICAgPSBjLGEvYiwsIFwKKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKyAgICAgID0gYyxhL2IsYi9jLCBcCiAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICYmIHhzaV9zaGVsbD15ZXMKQEAgLTUyNjIsOSArNTQxNSw4MyBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CitpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqLSotY3lnd2luKiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgOzsKK2VzYWMKKworZmkKKwordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisKKworCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7Citlc2FjCisKK2ZpCisKK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorCisKKworCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9sZF9yZWxvYWRfZmxhZz0nLXInCkBAIC01Mjc4LDYgKzU1MDUsMTEgQEAKIGVzYWMKIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKIGNhc2UgJGhvc3Rfb3MgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKyAgICBmaQorICAgIDs7CiAgIGRhcndpbiopCiAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKQEAgLTUzMDAsNyArNTUzMiw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vYmpkdW1wOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19PQkpEVU1QK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19PQkpEVU1QKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE9CSkRVTVAiOyB0aGVuCkBAIC01MzQwLDcgKzU1NzIsNyBAQAogc2V0IGR1bW15IG9iamR1bXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X09CSkRVTVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X09CSkRVTVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfT0JKRFVNUCI7IHRoZW4KQEAgLTUzOTksNyArNTYzMSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byByZWNvZ25pemUgZGVwZW5kZW50IGxpYnJhcmllcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRNQUdJQ19DTUQnCkBAIC01NDQxLDE2ICs1NjczLDE4IEBACiAgICMgQmFzZSBNU1lTL01pbkdXIGRvIG5vdCBwcm92aWRlIHRoZSAnZmlsZScgY29tbWFuZCBuZWVkZWQgYnkKICAgIyBmdW5jX3dpbjMyX2xpYmlkIHNoZWxsIGZ1bmN0aW9uLCBzbyB1c2UgYSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcsCiAgICMgdW5sZXNzIHdlIGZpbmQgJ2ZpbGUnLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHdlIGFyZSBjcm9zcy1jb21waWxpbmcuCi0gIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICMgZnVuY193aW4zMl9saWJpZCBhc3N1bWVzIEJTRCBubSwgc28gZGlzYWxsb3cgaXQgaWYgdXNpbmcgTVMgZHVtcGJpbi4KKyAgaWYgKCB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJCU0Qgbm0iICYmIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgIGVsc2UKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgZmkKICAgOzsKIAotY2VnY2MpCitjZWdjYyopCiAgICMgdXNlIHRoZSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcuIFNlZSBtaW5ndyouCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlLWFybS0uKmxpdHRsZSguKmFyY2hpdGVjdHVyZTogYXJtKT8nCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKQEAgLTU0ODAsNiArNTcxNCwxMCBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCitoYWlrdSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKIGhwdXgxMC4yMCogfCBocHV4MTEqKQogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCiAgIGNhc2UgJGhvc3RfY3B1IGluCkBAIC01NDg4LDExICs1NzI2LDExIEBACiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KICAgICA7OwogICBocHBhKjY0KikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEZbIC1dWzAtOV1bMC05XSkoLWJpdCk/KCBbTE1dU0IpPyBzaGFyZWQgb2JqZWN0KCBmaWxlKT9bLCAtXSogUEEtUklTQyBbMC05XVwuWzAtOV0nCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCiAgICAgOzsKICAgKikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxQQS1SSVNDWzAtOV0uWzAtOV0pIHNoYXJlZCBsaWJyYXJ5JworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfFBBLVJJU0NbMC05XVwuWzAtOV0pIHNoYXJlZCBsaWJyYXJ5JwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2xpYmMuc2wKICAgICA7OwogICBlc2FjCkBAIC01NTEzLDEyICs1NzUxLDEyIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLW5ldGJzZCopCituZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCiAgIGVsc2UKQEAgLTU1OTUsNiArNTgzMywyMSBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisKK2ZpbGVfbWFnaWNfZ2xvYj0KK3dhbnRfbm9jYXNlZ2xvYj1ubworaWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBtaW5ndyogfCBwdzMyKikKKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisgICAgZWxzZQorICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK2ZpCisKIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KQEAgLTU2MTAsMTIgKzU4NjMsMTY2IEBACiAKIAogCisKKworCisKKworCisKKworCisKIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCitpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCitpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorICAgIERMTFRPT0w9ImZhbHNlIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKyAgZmkKK2Vsc2UKKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKK2ZpCisKK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKworCisKKworCisKKworCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKworY2FzZSAkaG9zdF9vcyBpbgorY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisgICotLWlkZW50aWZ5LXN0cmljdCopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisgICAgOzsKKyAgKikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKyAgICA7OworICBlc2FjCisgIDs7CisqKQorICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorICA7OworZXNhYworCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAordGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworCisKKworCisKKworCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gYXIKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuCkBAIC01NjI4LDcgKzYwMzUsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01NjQ4LDE0ICs2MDU1LDE4IEBACiBmaQogCiAKKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisgIGRvbmUKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KICAgYWNfY3RfQVI9JEFSCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisgIGZvciBhY19wcm9nIGluIGFyCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgpAQCAtNTY2OCw3ICs2MDc5LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTU2ODcsNiArNjA5OCwxMCBAQAogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKKworICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCitkb25lCisKICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgQVI9ImZhbHNlIgogICBlbHNlCkBAIC01Njk4LDEyICs2MTEzLDEwIEBACiBlc2FjCiAgICAgQVI9JGFjX2N0X0FSCiAgIGZpCi1lbHNlCi0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKIGZpCiAKLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Cis6ICR7QVI9YXJ9Cis6ICR7QVJfRkxBR1M9Y3J1fQogCiAKIApAQCAtNTcxNSwxMiArNjEyOCw3MCBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisKK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorZWxzZQorICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKK2ZpCisKKworCisKKworCisKIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCkBAIC01NzYwLDcgKzYyMzEsNyBAQAogc2V0IGR1bW15IHN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuCkBAIC01ODE5LDcgKzYyOTAsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCkBAIC01ODU5LDcgKzYzMzAsNyBAQAogc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgpAQCAtNTkyMSwxNSArNjM5MiwyNyBAQAogaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbgogICBvcGVuYnNkKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCR0b29sX29sZGxpYiIKICAgICA7OwogICAqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgIGVzYWMKLSAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiBmaQogCitjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPXllcyA7OworICAqKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj1ubyA7OworZXNhYworCisKKworCisKKwogCiAKIApAQCAtNTk3Niw3ICs2NDU5LDcgQEAKICMgQ2hlY2sgZm9yIGNvbW1hbmQgdG8gZ3JhYiB0aGUgcmF3IHN5bWJvbCBuYW1lIGZvbGxvd2VkIGJ5IEMgc3ltYm9sIGZyb20gbm0uCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGNvbW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dCBmcm9tICRjb21waWxlciBvYmplY3QiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgY29tbWFuZCB0byBwYXJzZSAkTk0gb3V0cHV0IGZyb20gJGNvbXBpbGVyIG9iamVjdC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKQEAgLTYwMzcsOCArNjUyMCw4IEBACiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKIAogIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiBvcHRfY3I9CkBAIC02MDYyLDYgKzY1NDUsNyBAQAogICAgICMgd2hpY2ggc3RhcnQgd2l0aCBAIG9yID8uCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJEFXSyAnIlwKICIgICAgIHtsYXN0X3NlY3Rpb249c2VjdGlvbjsgc2VjdGlvbj1cJCAzfTsiXAorIiAgICAgL15DT0ZGIFNZTUJPTCBUQUJMRS97Zm9yKGkgaW4gaGlkZSkgZGVsZXRlIGhpZGVbaV19OyJcCiAiICAgICAvU2VjdGlvbiBsZW5ndGggLiojcmVsb2NzLioocGljayBhbnkpL3toaWRlW2xhc3Rfc2VjdGlvbl09MX07IlwKICIgICAgIFwkIDAhfi9FeHRlcm5hbCAqXHwve25leHR9OyJcCiAiICAgICAvIDArIFVOREVGIC97bmV4dH07IC8gVU5ERUYgXChbXnxdXCkqKCkve25leHR9OyJcCkBAIC02MDc0LDYgKzY1NTgsNyBAQAogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgZmkKKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgogCiAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICBwaXBlX3dvcmtzPW5vCkBAIC02MDk5LDggKzY1ODQsOCBAQAogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCiAgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCiAgICAgbmxpc3Q9Y29uZnRlc3Qubm0KLSAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3RcIiI7IH0gPiY1Ci0gIChldmFsICROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgMj4mNQorICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgXD4gJG5saXN0XCIiOyB9ID4mNQorICAoZXZhbCAkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIFw+ICRubGlzdCkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgpAQCAtNjExNSw2ICs2NjAwLDE4IEBACiAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbHNlCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTYxMjYsNyArNjYyMyw3IEBACiAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotY29uc3Qgc3RydWN0IHsKK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiB9CkBAIC02MTUyLDggKzY2NDksOCBAQAogX0xUX0VPRgogCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwogCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQpAQCAtNjE2Myw4ICs2NjYwLDggQEAKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwogCWVsc2UKIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogCWZpCkBAIC02MjAxLDYgKzY2OTgsMTIgQEAKICRhc19lY2hvICJvayIgPiY2OyB9CiBmaQogCisjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2ZpCiAKIAogCkBAIC02MjIzLDYgKzY3MjYsNDggQEAKIAogCiAKKworCisKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzcm9vdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfc3lzcm9vdDsKK2Vsc2UKKyAgd2l0aF9zeXNyb290PW5vCitmaQorCisKK2x0X3N5c3Jvb3Q9CitjYXNlICR7d2l0aF9zeXNyb290fSBpbiAjKAorIHllcykKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisgICBmaQorICAgOzsgIygKKyAvKikKKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgIDs7ICMoCisgbm98JycpCisgICA7OyAjKAorICopCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX3N5c3Jvb3R9IiA+JjUKKyRhc19lY2hvICIke3dpdGhfc3lzcm9vdH0iID4mNjsgfQorICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisgICA7OworZXNhYworCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisKKworCisKKwogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7CkBAIC02MjU0LDcgKzY3OTksNyBAQAogICA7OwogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICcjbGluZSA2MjU3ICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgZWNobyAnI2xpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtNjM0OCw3ICs2ODkzLDcgQEAKICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1iZWxmIgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9jY19uZWVkc19iZWxmK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfY2NfbmVlZHNfYmVsZis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2V4dD1jCkBAIC02Mzg5LDcgKzY5MzQsNyBAQAogICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgogICBmaQogICA7Owotc3BhcmMqLSpzb2xhcmlzKikKKyotKnNvbGFyaXMqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQpAQCAtNjQwMCw3ICs2OTQ1LDIwIEBACiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgogICAgICo2NC1iaXQqKQogICAgICAgY2FzZSAkbHRfY3ZfcHJvZ19nbnVfbGQgaW4KLSAgICAgIHllcyopIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIgOzsKKyAgICAgIHllcyopCisgICAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICAgaT84Ni0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgorICAgICAgICAgIDs7CisgICAgICAgIHNwYXJjKi0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgICMgR05VIGxkIDIuMjEgaW50cm9kdWNlZCBfc29sMiBlbXVsYXRpb25zLiAgVXNlIHRoZW0gaWYgYXZhaWxhYmxlLgorICAgICAgICBpZiAke0xELWxkfSAtViB8IGdyZXAgX3NvbDIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgICAgTEQ9IiR7TEQtbGR9X3NvbDIiCisgICAgICAgIGZpCisgICAgICAgIDs7CiAgICAgICAqKQogCWlmICR7TEQtbGR9IC02NCAtciAtbyBjb25mdGVzdDIubyBjb25mdGVzdC5vID4vZGV2L251bGwgMj4mMTsgdGhlbgogCSAgTEQ9IiR7TEQtbGR9IC02NCIKQEAgLTY0MTYsNiArNjk3NCwxMjMgQEAKIAogbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAoraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CiskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAoraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKyAgICBNQU5JRkVTVF9UT09MPSI6IgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKyAgZmkKK2Vsc2UKKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKK2ZpCisKK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworICBmaQorICBybSAtZiBjb25mdGVzdCoKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorICBNQU5JRkVTVF9UT09MPToKK2ZpCisKKworCisKKwogCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4qKQpAQCAtNjQyNCw3ICs3MDk5LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRzeW11dGlsOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19EU1lNVVRJTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfRFNZTVVUSUwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkRFNZTVVUSUwiOyB0aGVuCkBAIC02NDY0LDcgKzcxMzksNyBAQAogc2V0IGR1bW15IGRzeW11dGlsOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9EU1lNVVRJTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfRFNZTVVUSUwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfRFNZTVVUSUwiOyB0aGVuCkBAIC02NTE2LDcgKzcxOTEsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bm1lZGl0OyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19OTUVESVQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX05NRURJVCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiROTUVESVQiOyB0aGVuCkBAIC02NTU2LDcgKzcyMzEsNyBAQAogc2V0IGR1bW15IG5tZWRpdDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTk1FRElUK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9OTUVESVQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfTk1FRElUIjsgdGhlbgpAQCAtNjYwOCw3ICs3MjgzLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWxpcG87IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0xJUE8rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0xJUE8rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkTElQTyI7IHRoZW4KQEAgLTY2NDgsNyArNzMyMyw3IEBACiBzZXQgZHVtbXkgbGlwbzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTElQTytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfTElQTys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9MSVBPIjsgdGhlbgpAQCAtNjcwMCw3ICs3Mzc1LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW90b29sOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19PVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfT1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkT1RPT0wiOyB0aGVuCkBAIC02NzQwLDcgKzc0MTUsNyBAQAogc2V0IGR1bW15IG90b29sOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfT1RPT0wiOyB0aGVuCkBAIC02NzkyLDcgKzc0NjcsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b3Rvb2w2NDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfT1RPT0w2NCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfT1RPT0w2NCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRPVE9PTDY0IjsgdGhlbgpAQCAtNjgzMiw3ICs3NTA3LDcgQEAKIHNldCBkdW1teSBvdG9vbDY0OyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTDY0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTDY0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X09UT09MNjQiOyB0aGVuCkBAIC02OTA3LDcgKzc1ODIsNyBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWciID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1zaW5nbGVfbW9kdWxlIGxpbmtlciBmbGFnLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD1ubwpAQCAtNjkyMyw3ICs3NTk4LDEzIEBACiAJJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGxpYmNvbmZ0ZXN0LmR5bGliIFwKIAkgIC1keW5hbWljbGliIC1XbCwtc2luZ2xlX21vZHVsZSBjb25mdGVzdC5jIDI+Y29uZnRlc3QuZXJyCiAgICAgICAgIF9sdF9yZXN1bHQ9JD8KLQlpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgISAtcyBjb25mdGVzdC5lcnIgJiYgdGVzdCAkX2x0X3Jlc3VsdCA9IDA7IHRoZW4KKwkjIElmIHRoZXJlIGlzIGEgbm9uLWVtcHR5IGVycm9yIGxvZywgYW5kICJzaW5nbGVfbW9kdWxlIgorCSMgYXBwZWFycyBpbiBpdCwgYXNzdW1lIHRoZSBmbGFnIGNhdXNlZCBhIGxpbmtlciB3YXJuaW5nCisgICAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIHNpbmdsZV9tb2R1bGUgY29uZnRlc3QuZXJyOyB0aGVuCisJICBjYXQgY29uZnRlc3QuZXJyID4mNQorCSMgT3RoZXJ3aXNlLCBpZiB0aGUgb3V0cHV0IHdhcyBjcmVhdGVkIHdpdGggYSAwIGV4aXQgY29kZSBmcm9tCisJIyB0aGUgY29tcGlsZXIsIGl0IHdvcmtlZC4KKwllbGlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMDsgdGhlbgogCSAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKIAllbHNlCiAJICBjYXQgY29uZnRlc3QuZXJyID4mNQpAQCAtNjkzNCw5ICs3NjE1LDEwIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPiY2OyB9CisKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ubwpAQCAtNjk2Niw2ICs3NjQ4LDQxIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID4mNjsgfQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLWZvcmNlX2xvYWQgbGlua2VyIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X2xkX2ZvcmNlX2xvYWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9sZF9mb3JjZV9sb2FkPW5vCisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBmb3JjZWRfbG9hZGVkKCkgeyByZXR1cm4gMjt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIiA+JjUKKyAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBtYWluKCkgeyByZXR1cm4gMDt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIiA+JjUKKyAgICAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEgMj5jb25mdGVzdC5lcnIKKyAgICAgIF9sdF9yZXN1bHQ9JD8KKyAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIGZvcmNlX2xvYWQgY29uZnRlc3QuZXJyOyB0aGVuCisJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlsdF9jdl9sZF9mb3JjZV9sb2FkPXllcworICAgICAgZWxzZQorCWNhdCBjb25mdGVzdC5lcnIgPiY1CisgICAgICBmaQorICAgICAgICBybSAtZiBjb25mdGVzdC5lcnIgbGliY29uZnRlc3QuYSBjb25mdGVzdCBjb25mdGVzdC5jCisgICAgICAgIHJtIC1yZiBjb25mdGVzdC5kU1lNCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA+JjY7IH0KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bMDEyXSkKICAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKQEAgLTY5OTMsNyArNzcxMCw3IEBACiAgICAgZWxzZQogICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IjsgdGhlbgorICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiICYmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJubyI7IHRoZW4KICAgICAgIF9sdF9kc3ltdXRpbD0nfiREU1lNVVRJTCAkbGliIHx8IDonCiAgICAgZWxzZQogICAgICAgX2x0X2RzeW11dGlsPQpAQCAtNzAxMyw3ICs3NzMwLDcgQEAKICAgQ1BQPQogZmkKIGlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCi0gIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DUFArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBpZiAke2FjX2N2X3Byb2dfQ1BQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZApAQCAtNzA0Myw3ICs3NzYwLDcgQEAKICAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgogY29udGludWUKIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogCiAgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCiAgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCkBAIC03MDU5LDExICs3Nzc2LDExIEBACiBhY19wcmVwcm9jX29rPToKIGJyZWFrCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogZG9uZQogIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAogaWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgogICBicmVhawogZmkKQEAgLTcxMDIsNyArNzgxOSw3IEBACiAgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KIGNvbnRpbnVlCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgpAQCAtNzExOCwxOCArNzgzNSwxOCBAQAogYWNfcHJlcHJvY19vaz06CiBicmVhawogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKIGRvbmUKICMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKIAogZWxzZQogICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGZpCiAKIGFjX2V4dD1jCkBAIC03MTQxLDcgKzc4NTgsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfaGVhZGVyX3N0ZGMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC03MjU4LDggKzc5NzUsNyBAQAogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAogIgotZXZhbCBhc192YWw9XCQkYXNfYWNfSGVhZGVyCi0gICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKIF9BQ0VPRgpAQCAtNzI3Myw3ICs3OTg5LDcgQEAKIGRvIDoKICAgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgImRsZmNuLmgiICJhY19jdl9oZWFkZXJfZGxmY25faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0CiAiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9kbGZjbl9oIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9kbGZjbl9oIiA9IHh5ZXM7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIEhBVkVfRExGQ05fSCAxCiBfQUNFT0YKQEAgLTcyODQsNiArODAwMCw4IEBACiAKIAogCisKKwogIyBTZXQgb3B0aW9ucwogCiAKQEAgLTczNTksNyArODA3NywyMiBAQAogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXBpYyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9waWM7IHBpY19tb2RlPSIkd2l0aHZhbCIKKyAgd2l0aHZhbD0kd2l0aF9waWM7IGx0X3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkd2l0aHZhbCBpbgorICAgIHllc3xubykgcGljX21vZGU9JHdpdGh2YWwgOzsKKyAgICAqKQorICAgICAgcGljX21vZGU9ZGVmYXVsdAorICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgbHRfcGtnIGluICR3aXRodmFsOyBkbworCUlGUz0iJGx0X3NhdmVfaWZzIgorCWlmIHRlc3QgIlgkbHRfcGtnIiA9ICJYJGx0X3AiOyB0aGVuCisJICBwaWNfbW9kZT15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWMKIGVsc2UKICAgcGljX21vZGU9ZGVmYXVsdAogZmkKQEAgLTc0MzYsNiArODE2OSwxMSBAQAogCiAKIAorCisKKworCisKIHRlc3QgLXogIiRMTl9TIiAmJiBMTl9TPSJsbiAtcyIKIAogCkBAIC03NDU3LDcgKzgxOTUsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBvYmpkaXIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG9iamRpci4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9vYmpkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9vYmpkaXIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBybSAtZiAubGlicyAyPi9kZXYvbnVsbApAQCAtNzQ4NSwxOSArODIyMyw2IEBACiAKIAogCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQogICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKQEAgLTc1MTAsMjMgKzgyMzUsNiBAQAogICA7OwogZXNhYwogCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLQotIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi1kb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCi0jIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCi1kZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgotZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCi1ub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKLQogIyBHbG9iYWwgdmFyaWFibGVzOgogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKQEAgLTc1NTUsNyArODI2Myw3IEBACiAgICAgKikgYnJlYWs7OwogICBlc2FjCiBkb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK2NjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAogCiAKICMgT25seSBwZXJmb3JtIHRoZSBjaGVjayBmb3IgZmlsZSwgaWYgdGhlIGNoZWNrIG1ldGhvZCByZXF1aXJlcyBpdApAQCAtNzU2NSw3ICs4MjczLDcgQEAKICAgaWYgdGVzdCAiJGZpbGVfbWFnaWNfY21kIiA9ICckTUFHSUNfQ01EJzsgdGhlbgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJHthY190b29sX3ByZWZpeH1maWxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3BhdGhfTUFHSUNfQ01EK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9NQUdJQ19DTUQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXNlICRNQUdJQ19DTUQgaW4KQEAgLTc2MzEsNyArODMzOSw3IEBACiAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBmaWxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBmaWxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3BhdGhfTUFHSUNfQ01EK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9NQUdJQ19DTUQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXNlICRNQUdJQ19DTUQgaW4KQEAgLTc3NjQsMTEgKzg0NzIsMTYgQEAKIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPQogCiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nIC1mbm8tYnVpbHRpbicKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgbnZjYyopCisgICAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtWGNvbXBpbGVyIC1mbm8tYnVpbHRpbicgOzsKKyAgKikKKyAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nIC1mbm8tYnVpbHRpbicgOzsKKyAgZXNhYwogCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zPW5vCkBAIC03Nzg0LDE1ICs4NDk3LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjc3ODc6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjc3OTE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID5jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucz15ZXMKQEAgLTc4MjEsOCArODUzNCw2IEBACiBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAKICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwpAQCAtNzg3MCw2ICs4NTgxLDEyIEBACiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZuby1jb21tb24nCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEhhaWt1LgorICAgICAgIyBUaGUgIi1zdGF0aWMiIGZsYWcgZXhpc3RzLCBidXQgaXMgYnJva2VuLgorICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgICAgICA7OworCiAgICAgaHB1eCopCiAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKICAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZwpAQCAtNzkxMiw2ICs4NjI5LDE1IEBACiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZQSUMnCiAgICAgICA7OwogICAgIGVzYWMKKworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgbnZjYyopICMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctWGxpbmtlciAnCisgICAgICBpZiB0ZXN0IC1uICIkbHRfcHJvZ19jb21waWxlcl9waWMiOyB0aGVuCisgICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSItWGNvbXBpbGVyICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIKKyAgICAgIGZpCisgICAgICA7OworICAgIGVzYWMKICAgZWxzZQogICAgICMgUE9SVE1FIENoZWNrIGZvciBmbGFnIHRvIHBhc3MgbGlua2VyIGZsYWdzIHRocm91Z2ggdGhlIHN5c3RlbSBjb21waWxlci4KICAgICBjYXNlICRob3N0X29zIGluCkBAIC03OTUzLDcgKzg2NzksNyBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1ub25fc2hhcmVkJwogICAgICAgOzsKIAotICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICMgb2xkIEludGVsIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogICAgICAgZWNjKikKQEAgLTc5NzQsNyArODcwMCwxMyBAQAogCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAJOzsKLSAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQorICAgICAgbmFnZm9yKikKKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKwk7OworICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKQEAgLTc5ODYsMjUgKzg3MTgsNDAgQEAKICAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCiAgICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctbm9uX3NoYXJlZCcKICAgICAgICAgOzsKLSAgICAgIHhsKikKLQkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisJIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xLCAxMS4xIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwogCWx0X3Byb2dfY29tcGlsZXJfcGljPSctcXBpYycKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXFzdGF0aWNsaW5rJwogCTs7CiAgICAgICAqKQogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIENlcmVzXCBGb3J0cmFuKiB8ICpTdW4qRm9ydHJhbipcIFsxLTddLiogfCAqU3VuKkZvcnRyYW4qXCA4LlswLTNdKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKwkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9JycKKwkgIDs7CisJKlN1blwgRiogfCAqU3VuKkZvcnRyYW4qKQorCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJworCSAgOzsKIAkqU3VuXCBDKikKIAkgICMgU3VuIEMgNS45CiAJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAJICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwogCSAgOzsKLQkqU3VuXCBGKikKLQkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKLQkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICAgKkludGVsKlwgW0NGXSpDb21waWxlciopCisJICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mUElDJworCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1zdGF0aWMnCisJICA7OworCSpQb3J0bGFuZFwgR3JvdXAqKQorCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctZnBpYycKIAkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLQkgIGx0X3Byb2dfY29tcGlsZXJfd2w9JycKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC04MDM2LDcgKzg3ODMsNyBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICopCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwpAQCAtODA5MywxMyArODg0MCwxNyBAQAogICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgOzsKIGVzYWMKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CiAKLQotCi0KLQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CitsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKIAogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgpAQCAtODEwNyw3ICs4ODU4LDcgQEAKIGlmIHRlc3QgLW4gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyI7IHRoZW4KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgUElDIGZsYWcgJGx0X3Byb2dfY29tcGlsZXJfcGljIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBQSUMgZmxhZyAkbHRfcHJvZ19jb21waWxlcl9waWMgd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzPW5vCkBAIC04MTIzLDE1ICs4ODc0LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjgxMjY6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjgxMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID5jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcz15ZXMKQEAgLTgxNjAsMTMgKzg5MTEsMTggQEAKIAogCiAKKworCisKKworCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAjCiB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIGx0X3RtcF9zdGF0aWNfZmxhZz1cIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY1wiCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdGF0aWMgZmxhZyAkbHRfdG1wX3N0YXRpY19mbGFnIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdGF0aWMgZmxhZyAkbHRfdG1wX3N0YXRpY19mbGFnIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcz1ubwpAQCAtODE3OSw3ICs4OTM1LDcgQEAKICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgogICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgICRFQ0hPICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKICAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3M9eWVzCkBAIC04MjA5LDcgKzg5NjUsNyBAQAogCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz1ubwpAQCAtODIyOCwxNiArODk4NCwxNiBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo4MjMxOiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjgyMzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz15ZXMKQEAgLTgyNjQsNyArOTAyMCw3IEBACiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLiRhY19vYmpleHQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPW5vCkBAIC04MjgzLDE2ICs5MDM5LDE2IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjgyODY6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiY1Ci0gICBlY2hvICIkYXNfbWU6ODI5MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zIG91dC9jb25mdGVzdDIuJGFjX29iamV4dAogICAgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPXllcwpAQCAtODM1OCw3ICs5MTE0LDYgQEAKICAgaGFyZGNvZGVfZGlyZWN0PW5vCiAgIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT1ubwogICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPQogICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQogICBoYXJkY29kZV9taW51c19MPW5vCiAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKQEAgLTg0MDIsMTAgKzkxNTcsMzkgQEAKICAgb3BlbmJzZCopCiAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICA7OworICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKKyAgICBsaW5rX2FsbF9kZXBsaWJzPW5vCisgICAgOzsKICAgZXNhYwogCiAgIGxkX3NobGlicz15ZXMKKworICAjIE9uIHNvbWUgdGFyZ2V0cywgR05VIGxkIGlzIGNvbXBhdGlibGUgZW5vdWdoIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIKKyAgIyB0aGF0IHdlJ3JlIGJldHRlciBvZmYgdXNpbmcgdGhlIG5hdGl2ZSBpbnRlcmZhY2UgZm9yIGJvdGguCisgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPW5vCiAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgqKQorCSMgVGhlIEFJWCBwb3J0IG9mIEdOVSBsZCBoYXMgYWx3YXlzIGFzcGlyZWQgdG8gY29tcGF0aWJpbGl0eQorCSMgd2l0aCB0aGUgbmF0aXZlIGxpbmtlci4gIEhvd2V2ZXIsIGFzIHRoZSB3YXJuaW5nIGluIHRoZSBHTlUgbGQKKwkjIGJsb2NrIHNheXMsIHZlcnNpb25zIGJlZm9yZSAyLjE5LjUqIGNvdWxkbid0IHJlYWxseSBjcmVhdGUgd29ya2luZworCSMgc2hhcmVkIGxpYnJhcmllcywgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZXJmYWNlIHVzZWQuCisJY2FzZSBgJExEIC12IDI+JjFgIGluCisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi4xOS41KikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLlsyLTldKikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCBbMy05XSopIDs7CisJICAqKQorCSAgICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICopCisJbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJOzsKKyAgICBlc2FjCisgIGZpCisKKyAgaWYgdGVzdCAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIiA9IHllczsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgd2xhcmM9JyR7d2x9JwogCkBAIC04NDIzLDYgKzkyMDcsNyBAQAogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCiAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bMC05XS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KQEAgLTg0MzgsMTEgKzkyMjMsMTIgQEAKIAlsZF9zaGxpYnM9bm8KIAljYXQgPDxfTFRfRU9GIDE+JjIKIAotKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuOS4xLCBpcyByZXBvcnRlZAorKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuMTksIGlzIHJlcG9ydGVkCiAqKiogdG8gYmUgdW5hYmxlIHRvIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIEFJWC4KICoqKiBUaGVyZWZvcmUsIGxpYnRvb2wgaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIElmIHlvdQotKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gbW9kaWZ5IHlvdXIgUEFUSAotKioqIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZCwgYW5kIHRoZW4gcmVzdGFydC4KKyoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIGluc3RhbGwgYmludXRpbHMKKyoqKiAyLjIwIG9yIGFib3ZlLCBvciBtb2RpZnkgeW91ciBQQVRIIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZC4KKyoqKiBZb3Ugd2lsbCB0aGVuIG5lZWQgdG8gcmVzdGFydCB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLgogCiBfTFRfRU9GCiAgICAgICBmaQpAQCAtODQ3OCwxMCArOTI2NCwxMiBAQAogICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwogICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwogCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCkBAIC04NDk5LDYgKzkyODcsMTEgQEAKICAgICAgIGZpCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCisgICAgICA7OworCiAgICAgaW50ZXJpeFszLTldKikKICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwpAQCAtODUxNCw3ICs5MzA3LDcgQEAKICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCi0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251KQorICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KICAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTg1MjQsMTUgKzkzMTcsMTYgQEAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKIAkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCiAgICAgICB0aGVuCi0JdG1wX2FkZGZsYWc9CisJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAkgIDs7Ci0JcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcgLU1ub21haW4nIDs7CiAJZWNjKixpYTY0KiB8IGljYyosaWE2NCopCSMgSW50ZWwgQyBjb21waWxlciBvbiBpYTY0CiAJICB0bXBfYWRkZmxhZz0nIC1pX2R5bmFtaWMnIDs7CkBAIC04NTQzLDEzICs5MzM3LDE3IEBACiAJbGY5NSopCQkJCSMgTGFoZXkgRm9ydHJhbiA4LjEKIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPQogCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OwotCXhsW2NDXSopCQkJIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQorCXhsW2NDXSogfCBiZ3hsW2NDXSogfCBtcGl4bFtjQ10qKSAjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCiAJICB0bXBfc2hhcmVkZmxhZz0nLXFta3Nocm9iaicKIAkgIHRtcF9hZGRmbGFnPSA7OworCW52Y2MqKQkjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgY29tcGlsZXJfbmVlZHNfb2JqZWN0PXllcworCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgY29tcGlsZXJfbmVlZHNfb2JqZWN0PXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCkBAIC04NTY1LDE3ICs5MzYzLDE2IEBACiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCXhsZiopCisJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtODU4NCwxMyArOTM4MSwxMyBAQAogICAgICAgZmkKICAgICAgIDs7CiAKLSAgICBuZXRic2QqKQorICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogCXdsYXJjPQogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTg2MDgsOCArOTQwNSw4IEBACiAKIF9MVF9FT0YKICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCWxkX3NobGlicz1ubwogICAgICAgZmkKQEAgLTg2NTUsOCArOTQ1Miw4IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCWxkX3NobGlicz1ubwogICAgICAgZmkKQEAgLTg2OTYsOCArOTQ5MywxMCBAQAogICAgICAgZWxzZQogCSMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgogCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKwkjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwKKwkjIGRlZmluZWQgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCiAJaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAllbHNlCiAJICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAlmaQpAQCAtODc1OSw2ICs5NTU4LDcgQEAKIAlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KIAkgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJwogCWZpCisJbGlua19hbGxfZGVwbGlicz1ubwogICAgICAgZWxzZQogCSMgbm90IHVzaW5nIGdjYwogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCkBAIC04Nzg0LDcgKzk1ODQsMTMgQEAKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKQEAgLTg3OTcsMjUgKzk2MDMsMzIgQEAKIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpCisgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH0nCisgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmkKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorICBmaQorCitmaQorCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KK2ZpCiAKICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICBlbHNlCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtODgyNCw3ICs5NjM3LDEzIEBACiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKQEAgLTg4MzcsMzAgKzk2NTYsNDIgQEAKIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpCisgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH0nCisgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmkKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorICBmaQorCitmaQorCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KK2ZpCiAKIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICBub191bmRlZmluZWRfZmxhZz0nICR7d2x9LWJlcm5vdG9rJwogCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1iZXJvaycKLQkgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyRjb252ZW5pZW5jZScKKwkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgZWxzZQorCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyRjb252ZW5pZW5jZScKKwkgIGZpCiAJICBhcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKIAkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCiAJICBhcmNoaXZlX2V4cHN5bV9jbWRzPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCkBAIC04ODkyLDIwICs5NzIzLDY0IEBACiAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSAgICAgIGxpYmV4dD1saWIKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgJEVDSE8gIlgkZGVwbGlicyIgfCAkWHNlZCAtZSAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGNsKikKKwkjIE5hdGl2ZSBNU1ZDCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZWxzZQorCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZml+CisJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICBsaW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworCWV4Y2x1ZGVfZXhwc3ltcz0nX05VTExfSU1QT1JUX0RFU0NSSVBUT1J8X0lNUE9SVF9ERVNDUklQVE9SXy4qJworCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKwkjIERvbid0IHVzZSByYW5saWIKKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICopCisJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgOzsKKwkgIGVzYWN+CisJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgIGZpJworCTs7CisgICAgICAqKQorCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGRhcndpbiogfCByaGFwc29keSopCkBAIC04OTE1LDcgKzk3OTAsMTIgQEAKICAgaGFyZGNvZGVfZGlyZWN0PW5vCiAgIGhhcmRjb2RlX2F1dG9tYXRpYz15ZXMKICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj11bnN1cHBvcnRlZAotICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJworICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKworICBlbHNlCisgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JycKKyAgZmkKICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9IiRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZCIKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTg5MjMsNyArOTgwMyw3IEBACiAgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CiAgIGVzYWMKICAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAgICAgYXJjaGl2ZV9jbWRzPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJHtfbHRfZHN5bXV0aWx9IgogICAgIG1vZHVsZV9jbWRzPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kc3ltdXRpbH0iCiAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgpAQCAtODk0MSwxMCArOTgyMSw2IEBACiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICAgICA7OwogCi0gICAgZnJlZWJzZDEqKQotICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICA7OwotCiAgICAgIyBGcmVlQlNEIDIuMi5bMDEyXSBhbGxvd3MgdXMgdG8gaW5jbHVkZSBjKytydDAubyB0byBnZXQgQysrIGNvbnN0cnVjdG9yCiAgICAgIyBzdXBwb3J0LiAgRnV0dXJlIHZlcnNpb25zIGRvIHRoaXMgYXV0b21hdGljYWxseSwgYnV0IGFuIGV4cGxpY2l0IGMrK3J0MC5vCiAgICAgIyBkb2VzIG5vdCBicmVhayBhbnl0aGluZywgYW5kIGhlbHBzIHNpZ25pZmljYW50bHkgKGF0IHRoZSBjb3N0IG9mIGEgbGl0dGxlCkBAIC04OTU3LDcgKzk4MzMsNyBAQAogICAgICAgOzsKIAogICAgICMgVW5mb3J0dW5hdGVseSwgb2xkZXIgdmVyc2lvbnMgb2YgRnJlZUJTRCAyIGRvIG5vdCBoYXZlIHRoaXMgZmVhdHVyZS4KLSAgICBmcmVlYnNkMiopCisgICAgZnJlZWJzZDIuKikKICAgICAgIGFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCkBAIC04OTY2LDcgKzk4NDIsNyBAQAogCiAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KQEAgLTg5NzQsNyArOTg1MCw3IEBACiAKICAgICBocHV4OSopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQogCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBmaQpAQCAtODk4OSwxNCArOTg2NSwxMyBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMCopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0JaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nK2IgJGxpYmRpcicKIAloYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKIAloYXJkY29kZV9kaXJlY3Q9eWVzCiAJaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPXllcwpAQCAtOTAwOCwxNiArOTg4MywxNiBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAljYXNlICRob3N0X2NwdSBpbgogCWhwcGEqNjQqKQogCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAllc2FjCiAgICAgICBlbHNlCkBAIC05MDI5LDcgKzk5MDQsNDYgQEAKIAkgIGFyY2hpdmVfY21kcz0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKworCSAgIyBPbGRlciB2ZXJzaW9ucyBvZiB0aGUgMTEuMDAgY29tcGlsZXIgZG8gbm90IHVuZGVyc3RhbmQgLWIgeWV0CisJICAjIChIUDkyNDUzLTAxIEEuMTEuMDEuMjAgZG9lc24ndCwgSFA5MjQ1My0wMSBCLjExLlguMzUxNzUtMzUxNzYuR1AgZG9lcykKKwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJENDIHVuZGVyc3RhbmRzIC1iIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRDQyB1bmRlcnN0YW5kcyAtYi4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX19iKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9fYj1ubworICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgIExERkxBR1M9IiRMREZMQUdTIC1iIgorICAgZWNobyAiJGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICBpZiAoZXZhbCAkYWNfbGluayAyPmNvbmZ0ZXN0LmVycikgJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KKyAgICAgIyBUaGUgbGlua2VyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCisgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncworICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCisgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisgICAgICAgJEVDSE8gIiRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgorICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPXllcworICAgICAgIGZpCisgICAgIGVsc2UKKyAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPXllcworICAgICBmaQorICAgZmkKKyAgICRSTSAtciBjb25mdGVzdCoKKyAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA+JjY7IH0KKworaWYgdGVzdCB4IiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA9IHh5ZXM7IHRoZW4KKyAgICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworZWxzZQorICAgIGFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKK2ZpCisKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTkwNTcsMjYgKzk5NzEsMzkgQEAKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CiAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAogCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCi1pbnQgZm9vKHZvaWQpIHt9CitpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLQorICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKK2Vsc2UKKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJZmkKICAgICAgIGVsc2UKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz0nbm8nCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC05MDg1LDcgKzEwMDEyLDcgQEAKICAgICAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKICAgICAgIGVsc2UKQEAgLTkxMzgsMTcgKzEwMDY1LDE3IEBACiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9taW51c19MPXllcwogICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgIGFyY2hpdmVfY21kcz0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgYXJjaGl2ZV9jbWRzPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICA7OwogCiAgICAgb3NmMyopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz0nbm8nCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC05MTU4LDEzICsxMDA4NSwxMyBAQAogICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICBlbHNlCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKwkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKIAogCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKQEAgLTkxNzcsOSArMTAxMDQsOSBAQAogICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAl3bGFyYz0nJHt3bH0nCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAgICAgICBlbHNlCiAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAJKiJDb21waWxlcnMgNS4wIiopCkBAIC05MzY3LDQ0ICsxMDI5NCw1MCBAQAogICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW4uLi4gIiA+JjY7IH0KLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAoraWYgJHtsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICRSTSBjb25mdGVzdCoKKwllY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKIAotICAgICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisJaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICBzb25hbWU9Y29uZnRlc3QKLSAgICAgICAgbGliPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAotICAgICAgICBkZXBsaWJzPQotICAgICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bAotCXBpY19mbGFnPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotICAgICAgICBjb21waWxlcl9mbGFncz0tdgotICAgICAgICBsaW5rZXJfZmxhZ3M9LXYKLSAgICAgICAgdmVyc3RyaW5nPQotICAgICAgICBvdXRwdXRfb2JqZGlyPS4KLSAgICAgICAgbGlibmFtZT1jb25mdGVzdAotICAgICAgICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRhbGxvd191bmRlZmluZWRfZmxhZwotICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0KLSAgICAgICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFyY2hpdmVfY21kcyAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMVwiIjsgfSA+JjUKKwkgIHNvbmFtZT1jb25mdGVzdAorCSAgbGliPWNvbmZ0ZXN0CisJICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKKwkgIGRlcGxpYnM9CisJICB3bD0kbHRfcHJvZ19jb21waWxlcl93bAorCSAgcGljX2ZsYWc9JGx0X3Byb2dfY29tcGlsZXJfcGljCisJICBjb21waWxlcl9mbGFncz0tdgorCSAgbGlua2VyX2ZsYWdzPS12CisJICB2ZXJzdHJpbmc9CisJICBvdXRwdXRfb2JqZGlyPS4KKwkgIGxpYm5hbWU9Y29uZnRlc3QKKwkgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGFsbG93X3VuZGVmaW5lZF9mbGFnCisJICBhbGxvd191bmRlZmluZWRfZmxhZz0KKwkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjFcIiI7IH0gPiY1CiAgIChldmFsICRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjEpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0gICAgICAgIHRoZW4KLQkgIGFyY2hpdmVfY21kc19uZWVkX2xjPW5vCi0gICAgICAgIGVsc2UKLQkgIGFyY2hpdmVfY21kc19uZWVkX2xjPXllcwotICAgICAgICBmaQotICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZwotICAgICAgZWxzZQotICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKLSAgICAgIGZpCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFyY2hpdmVfY21kc19uZWVkX2xjIiA+JjUKLSRhc19lY2hvICIkYXJjaGl2ZV9jbWRzX25lZWRfbGMiID4mNjsgfQorCSAgdGhlbgorCSAgICBsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYz1ubworCSAgZWxzZQorCSAgICBsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKKwkgIGZpCisJICBhbGxvd191bmRlZmluZWRfZmxhZz0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZworCWVsc2UKKwkgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorCWZpCisJJFJNIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY1CiskYXNfZWNobyAiJGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjIiA+JjY7IH0KKyAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjPSRsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYwogICAgICAgOzsKICAgICBlc2FjCiAgIGZpCkBAIC05NTYyLDExICsxMDQ5NSw2IEBACiAKIAogCi0KLQotCi0KLQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MuLi4gIiA+JjY7IH0KIApAQCAtOTU3NSwxNiArMTA1MDMsMjMgQEAKICAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CiAgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKICAgZXNhYwotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0icyw9XChbQS1aYS16XTpcKSxcMSxnIiA7OworICAgICopIGx0X3NlZF9zdHJpcF9lcT0icyw9LywvLGciIDs7CisgIGVzYWMKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgJGx0X3NlZF9zdHJpcF9lcWAKKyAgY2FzZSAkbHRfc2VhcmNoX3BhdGhfc3BlYyBpbgorICAqXDsqKQogICAgICMgaWYgdGhlIHBhdGggY29udGFpbnMgIjsiIHRoZW4gd2UgYXNzdW1lIGl0IHRvIGJlIHRoZSBzZXBhcmF0b3IKICAgICAjIG90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBzdGFuZGFyZCBwYXRoIHNlcGFyYXRvciAoaS5lLiAiOiIpIC0gaXQgaXMKICAgICAjIGFzc3VtZWQgdGhhdCBubyBwYXJ0IG9mIGEgbm9ybWFsIHBhdGhuYW1lIGNvbnRhaW5zICI7IiBidXQgdGhhdCBzaG91bGQKICAgICAjIG9rYXkgaW4gdGhlIHJlYWwgd29ybGQgd2hlcmUgIjsiIGluIGRpcnBhdGhzIGlzIGl0c2VsZiBwcm9ibGVtYXRpYy4KLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gIGVsc2UKLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gIGZpCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgJ3MvOy8gL2cnYAorICAgIDs7CisgICopCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgOzsKKyAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAogICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9CkBAIC05NTk3LDcgKzEwNTMyLDcgQEAKIAlsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aCIKICAgICBmaQogICBkb25lCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyB8IGF3ayAnCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMiIHwgYXdrICcKIEJFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKICAgbHRfZm9vPSIiOwogICBsdF9jb3VudD0wOwpAQCAtOTYxNyw3ICsxMDU1MiwxMyBAQAogICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbbHRfZm9vXSsrOyB9CiAgIGlmIChsdF9mcmVxW2x0X2Zvb10gPT0gMSkgeyBwcmludCBsdF9mb287IH0KIH0nYAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF9zZWFyY2hfcGF0aF9zcGVjYAorICAjIEFXSyBwcm9ncmFtIGFib3ZlIGVycm9uZW91c2x5IHByZXBlbmRzICcvJyB0byBDOi9kb3MvcGF0aHMKKyAgIyBmb3IgdGhlc2UgaG9zdHMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfFwKKyAgICAgICRTRUQgJ3MsL1woW0EtWmEtel06XCksXDEsZydgIDs7CisgIGVzYWMKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCiBmaQpAQCAtOTY0Myw3ICsxMDU4NCw3IEBACiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAKQEAgLTk2NTIsNyArMTA1OTMsNyBAQAogICA7OwogCiBhaXhbNC05XSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtOTcwNSw3ICsxMDY0Niw3IEBACiAgIG02OGspCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKICAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgotICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFteL10qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJworICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gZnVuY19lY2hvX2FsbCAiJGxpYiIgfCAkU0VEICdcJydzJV4uKi9cKFteL10qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJwogICAgIDs7CiAgIGVzYWMKICAgOzsKQEAgLTk3MTcsNyArMTA2NTgsNyBAQAogICA7OwogCiBic2RpWzQ1XSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKQEAgLTk3MzYsOCArMTA2NzcsOSBAQAogICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCiAKLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKyAgeWVzLCopCisgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KQEAgLTk3NTgsMzYgKzEwNzAwLDgzIEBACiAgICAgY3lnd2luKikKICAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9saWIvdzMyYXBpIgogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAogICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgJEdSRVAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKLSAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAotICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCi0gICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKLSAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAotICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gICAgICBlbHNlCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gICAgICBmaQogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgOzsKICAgICBlc2FjCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICA7OworCisgICosY2wqKQorICAgICMgTmF0aXZlIE1TVkMKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKworICAgIGNhc2UgJGJ1aWxkX29zIGluCisgICAgbWluZ3cqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorICAgICAgbHRfc2F2ZV9pZnM9JElGUworICAgICAgSUZTPSc7JworICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorICAgICAgZG8KKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorICAgICAgZG9uZQorICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKyAgICAgIDs7CisgICAgY3lnd2luKikKKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgOzsKKyAgICAqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisgICAgICBlbHNlCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIGZpCisgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorICAgICAgICRSTSBcJGRscGF0aCcKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwogICAgIDs7CiAKICAgKikKKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgIHNobGlicGF0aF92YXI9UEFUSAogICA7OwpAQCAtOTgwOCw3ICsxMDc5Nyw3IEBACiAgIDs7CiAKIGRndXgqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKQEAgLTk4MTYsMTAgKzEwODA1LDYgQEAKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIAotZnJlZWJzZDEqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCiBmcmVlYnNkKiB8IGRyYWdvbmZseSopCiAgICMgRHJhZ29uRmx5IGRvZXMgbm90IGhhdmUgYW91dC4gIFdoZW4vaWYgdGhleSBpbXBsZW1lbnQgYSBuZXcKICAgIyB2ZXJzaW9uaW5nIG1lY2hhbmlzbSwgYWRqdXN0IHRoaXMuCkBAIC05ODI3LDcgKzEwODEyLDcgQEAKICAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKICAgZWxzZQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBmcmVlYnNkWzEyM10qKSBvYmpmb3JtYXQ9YW91dCA7OworICAgIGZyZWVic2RbMjNdLiopIG9iamZvcm1hdD1hb3V0IDs7CiAgICAgKikgb2JqZm9ybWF0PWVsZiA7OwogICAgIGVzYWMKICAgZmkKQEAgLTk4NDUsNyArMTA4MzAsNyBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgZnJlZWJzZDIqKQorICBmcmVlYnNkMi4qKQogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgICA7OwogICBmcmVlYnNkMy5bMDFdKiB8IGZyZWVic2RlbGYzLlswMV0qKQpAQCAtOTg2NSwxMiArMTA4NTAsMjYgQEAKICAgOzsKIAogZ251KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK2hhaWt1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTk5MTYsMTIgKzEwOTE1LDE0IEBACiAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgICA7OwogICBlc2FjCi0gICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LgorICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NSwgLi4uCiAgIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDU1NSAkbGliJworICAjIG9yIGZhaWxzIG91dHJpZ2h0LCBzbyBvdmVycmlkZSBhdG9taWNhbGx5OgorICBpbnN0YWxsX292ZXJyaWRlX21vZGU9NTU1CiAgIDs7CiAKIGludGVyaXhbMy05XSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKQEAgLTk5MzcsNyArMTA5MzgsNyBAQAogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQogCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KLQkJdmVyc2lvbl90eXBlPWxpbnV4CisJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CiAJZmkgOzsKQEAgLTk5NzQsOSArMTA5NzUsOSBAQAogICBkeW5hbWljX2xpbmtlcj1ubwogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyMgVGhpcyBtdXN0IGJlIGdsaWJjL0VMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtOTk4NCwxMiArMTA5ODUsMTcgQEAKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisKICAgIyBTb21lIGJpbnV0aWxzIGxkIGFyZSBwYXRjaGVkIHRvIHNldCBEVF9SVU5QQVRICi0gIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICBzYXZlX2xpYmRpcj0kbGliZGlyCi0gIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRsdF9wcm9nX2NvbXBpbGVyX3dsXCI7IFwKLSAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgJHtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgICBzYXZlX2xpYmRpcj0kbGliZGlyCisgICAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJGx0X3Byb2dfY29tcGlsZXJfd2xcIjsgXAorCSBMREZMQUdTPVwiXCRMREZMQUdTICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKQEAgLTEwMDAyLDI2ICsxMTAwOCwyNyBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgIGlmICAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGw7IHRoZW4gOgotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIGx0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKIGZpCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCi0gIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgICBsaWJkaXI9JHNhdmVfbGliZGlyCisKK2ZpCisKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSRsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgKIAogICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KICAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCiAgICMgYmVmb3JlIHRoaXMgY2FuIGJlIGVuYWJsZWQuCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKIAotICAjIEFkZCBBQkktc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIHN5c3RlbSBsaWJyYXJ5IHBhdGguCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliNjQgL3Vzci9saWI2NCAvbGliIC91c3IvbGliIgotCiAgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgJGx0X2xkX2V4dHJhIgorICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFwkMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXCQwOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZztzLyIvL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgogICBmaQogCiAgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgpAQCAtMTAwMzMsNiArMTEwNDAsMTggQEAKICAgZHluYW1pY19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKICAgOzsKIAorbmV0YnNkZWxmKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJworICA7OworCiBuZXRic2QqKQogICB2ZXJzaW9uX3R5cGU9c3Vub3MKICAgbmVlZF9saWJfcHJlZml4PW5vCkBAIC0xMDA1Miw3ICsxMTA3MSw3IEBACiAgIDs7CiAKIG5ld3NvczYpCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0xMDEyMSw3ICsxMTE0MCw3IEBACiAgIDs7CiAKIHNvbGFyaXMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMTAxNDYsNyArMTExNjUsNyBAQAogICA7OwogCiBzeXN2NCB8IHN5c3Y0LjMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTEwMTcwLDcgKzExMTg5LDcgQEAKIAogc3lzdjQqTVAqKQogICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCi0gICAgdmVyc2lvbl90eXBlPWxpbnV4CisgICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3InCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTEwMjAxLDcgKzExMjIwLDcgQEAKIAogdHBmKikKICAgIyBUUEYgaXMgYSBjcm9zcy10YXJnZXQgb25seS4gIFByZWZlcnJlZCBjcm9zcy1ob3N0ID0gR05VL0xpbnV4LgotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMTAyMTEsNyArMTEyMzAsNyBAQAogICA7OwogCiB1dHM0KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0xMDMyMyw2ICsxMTM0MiwxMSBAQAogCiAKIAorCisKKworCisKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gcHJvZ3JhbXMuLi4gIiA+JjY7IH0KIGhhcmRjb2RlX2FjdGlvbj0KQEAgLTEwMzk1LDcgKzExNDE5LDcgQEAKICAgIyBpZiBsaWJkbCBpcyBpbnN0YWxsZWQgd2UgbmVlZCB0byBsaW5rIGFnYWluc3QgaXQKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsX2Rsb3BlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDQyOSw3ICsxMTQ1Myw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgogZWxzZQogCkBAIC0xMDQ0MywxMiArMTE0NjcsMTIgQEAKIAogICAqKQogICAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInNobF9sb2FkIiAiYWNfY3ZfZnVuY19zaGxfbG9hZCIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zaGxfbG9hZCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX3NobF9sb2FkIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49InNobF9sb2FkIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzaGxfbG9hZCBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsZF9zaGxfbG9hZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbGRfc2hsX2xvYWQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDQ4MiwxNiArMTE1MDYsMTYgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49InNobF9sb2FkIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiCiBlbHNlCiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRsb3BlbiIgImFjX2N2X2Z1bmNfZGxvcGVuIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfZGxfZGxvcGVuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX2RsX2Rsb3Blbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKQEAgLTEwNTI1LDEyICsxMTU0OSwxMiBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfc3ZsZF9kbG9wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfc3ZsZF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDU2NCwxMiArMTE1ODgsMTIgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbGRfbGluayBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsZF9kbGRfbGluaytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbGRfZGxkX2xpbmsrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDYwMyw3ICsxMTYyNyw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbGRfbGluayIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGxkIgogZmkKIApAQCAtMTA2NDQsNyArMTE2NjgsNyBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9kbG9wZW5fc2VsZitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2Rsb3Blbl9zZWxmKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgCSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgpAQCAtMTA2NTMsNyArMTE2NzcsNyBAQAogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0jbGluZSAxMDY1NiAiY29uZmlndXJlIgorI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTEwNjk0LDcgKzExNzE4LDEzIEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXZvaWQgZm5vcmQoKSB7IGludCBpPTQyO30KKy8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQoraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworI2VuZGlmCisKK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQogaW50IG1haW4gKCkKIHsKICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CkBAIC0xMDcwMyw3ICsxMTczMywxMSBAQAogICBpZiAoc2VsZikKICAgICB7CiAgICAgICBpZiAoZGxzeW0gKHNlbGYsImZub3JkIikpICAgICAgIHN0YXR1cyA9ICRsdF9kbG5vX3VzY29yZTsKLSAgICAgIGVsc2UgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICBlbHNlCisgICAgICAgIHsKKwkgIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpICBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgICAgICBlbHNlIHB1dHMgKGRsZXJyb3IgKCkpOworCX0KICAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLwogICAgIH0KICAgZWxzZQpAQCAtMTA3NDAsNyArMTE3NzQsNyBAQAogICAgICAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wgZXZhbCBMREZMQUdTPVwiXCRMREZMQUdTICRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY1wiCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIAkgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKQEAgLTEwNzQ5LDcgKzExNzgzLDcgQEAKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotI2xpbmUgMTA3NTIgImNvbmZpZ3VyZSIKKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xMDc5MCw3ICsxMTgyNCwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTA3OTksNyArMTE4MzksMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTEwOTY4LDYgKzEyMDEyLDggQEAKIAogCiAKKworCiAgICAgICAgIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBsaWJ0b29sIgogCiAKQEAgLTEwOTc4LDYgKzEyMDI0LDk3NyBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZW5kb3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVuZG9yLi4uICIgPiY2OyB9CitpZiAke2F4X2N2X2NfY29tcGlsZXJfdmVuZG9yKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgIyBub3RlOiBkb24ndCBjaGVjayBmb3IgZ2NjIGZpcnN0IHNpbmNlIHNvbWUgb3RoZXIgY29tcGlsZXJzIGRlZmluZSBfX0dOVUNfXworICB2ZW5kb3JzPSJpbnRlbDogICAgIF9fSUNDLF9fRUNDLF9fSU5URUxfQ09NUElMRVIKKyAgICAgICAgICAgaWJtOiAgICAgICBfX3hsY19fLF9feGxDX18sX19JQk1DX18sX19JQk1DUFBfXworICAgICAgICAgICBwYXRoc2NhbGU6IF9fUEFUSENDX18sX19QQVRIU0NBTEVfXworICAgICAgICAgICBjbGFuZzogICAgIF9fY2xhbmdfXworICAgICAgICAgICBnbnU6ICAgICAgIF9fR05VQ19fCisgICAgICAgICAgIHN1bjogICAgICAgX19TVU5QUk9fQyxfX1NVTlBST19DQworICAgICAgICAgICBocDogICAgICAgIF9fSFBfY2MsX19IUF9hQ0MKKyAgICAgICAgICAgZGVjOiAgICAgICBfX0RFQ0MsX19ERUNDWFgsX19ERUNDX1ZFUixfX0RFQ0NYWF9WRVIKKyAgICAgICAgICAgYm9ybGFuZDogICBfX0JPUkxBTkRDX18sX19UVVJCT0NfXworICAgICAgICAgICBjb21lYXU6ICAgIF9fQ09NT19fCisgICAgICAgICAgIGNyYXk6ICAgICAgX0NSQVlDCisgICAgICAgICAgIGthaTogICAgICAgX19LQ0MKKyAgICAgICAgICAgbGNjOiAgICAgICBfX0xDQ19fCisgICAgICAgICAgIHNnaTogICAgICAgX19zZ2ksc2dpCisgICAgICAgICAgIG1pY3Jvc29mdDogX01TQ19WRVIKKyAgICAgICAgICAgbWV0cm93ZXJrczogX19NV0VSS1NfXworICAgICAgICAgICB3YXRjb206ICAgIF9fV0FUQ09NQ19fCisgICAgICAgICAgIHBvcnRsYW5kOiAgX19QR0kKKyAgICAgICAgICAgdW5rbm93bjogICBVTktOT1dOIgorICBmb3IgdmVudGVzdCBpbiAkdmVuZG9yczsgZG8KKyAgICBjYXNlICR2ZW50ZXN0IGluCisgICAgICAqOikgdmVuZG9yPSR2ZW50ZXN0OyBjb250aW51ZSA7OworICAgICAgKikgIHZlbmNwcD0iZGVmaW5lZCgiYGVjaG8gJHZlbnRlc3QgfCBzZWQgJ3MvLC8pIHx8IGRlZmluZWQoL2cnYCIpIiA7OworICAgIGVzYWMKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgICAgICAjaWYgISgkdmVuY3BwKQorICAgICAgICB0aGlzaXNhbmVycm9yOworICAgICAgI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBicmVhaworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBkb25lCisgIGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yPWBlY2hvICR2ZW5kb3IgfCBjdXQgLWQ6IC1mMWAKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IiID4mNQorJGFzX2VjaG8gIiRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciIgPiY2OyB9CisKKworCisKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3BvcnRhYmxlX2JpbmFyeStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3BvcnRhYmxlX2JpbmFyeTsgYWN4X21heG9wdF9wb3J0YWJsZT0kd2l0aHZhbAorZWxzZQorICBhY3hfbWF4b3B0X3BvcnRhYmxlPW5vCitmaQorCisKKyMgVHJ5IHRvIGRldGVybWluZSAiZ29vZCIgbmF0aXZlIGNvbXBpbGVyIGZsYWdzIGlmIG5vbmUgc3BlY2lmaWVkIHZpYSBDRkxBR1MKK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgIT0gInNldCI7IHRoZW4KKyAgQ0ZMQUdTPSIiCisgIGNhc2UgJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIGluCisgICAgZGVjKSBDRkxBR1M9Ii1uZXdjIC13MCAtTzUgLWFuc2lfYWxpYXMgLWFuc2lfYXJncyAtZnBfcmVvcmRlciAtdHVuZSBob3N0IgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtYXJjaCBob3N0IgorICAgICAgICAgZmk7OworCisgICAgc3VuKSBDRkxBR1M9Ii1uYXRpdmUgLWZhc3QgLXhPNSAtZGFsaWduIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyAteGFyY2g9Z2VuZXJpYyIKKyAgICAgICAgIGZpOzsKKworICAgIGhwKSAgQ0ZMQUdTPSIrT2FsbCArT3B0cnNfYW5zaSArRFNuYXRpdmUiCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuCisJICAgQ0ZMQUdTPSIkQ0ZMQUdTICtEQXBvcnRhYmxlIgorCSBmaTs7CisKKyAgICBpYm0pIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKyAgICAgICAgICAgeGxjX29wdD0iLXFhcmNoPWF1dG8gLXF0dW5lPWF1dG8iCisJIGVsc2UKKyAgICAgICAgICAgeGxjX29wdD0iLXF0dW5lPWF1dG8iCisJIGZpCisgICAgICAgICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJHhsY19vcHQiIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkeGxjX29wdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkeGxjX29wdC4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICR4bGNfb3B0IgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgQ0ZMQUdTPSItTzMgLXFhbnNpYWxpYXMgLXcgJHhsY19vcHQiCitlbHNlCisgIENGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13IgorICAgICAgICAgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBZb3Ugc2VlbSB0byBoYXZlIHRoZSBJQk0gIEMgY29tcGlsZXIuICBJdCBpcyAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgcmVjb21tZW5kZWQgZm9yIGJlc3QgcGVyZm9ybWFuY2UgdGhhdCB5b3UgdXNlOiAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgIENGTEFHUz0tTzMgLXFhcmNoPXh4eCAtcXR1bmU9eHh4IC1xYW5zaWFsaWFzIC13ICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICAgICAgICAgICAgICAgICAgICBeXl4gICAgICAgIF5eXiAgICAgICAgICAgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHdoZXJlIHh4eCBpcyBwd3IyLCBwd3IzLCA2MDQsIG9yIHdoYXRldmVyIGtpbmQgb2YgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBDUFUgeW91IGhhdmUuICAoU2V0IHRoZSBDRkxBR1MgZW52aXJvbm1lbnQgdmFyLiAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgYW5kIHJlLXJ1biBjb25maWd1cmUuKSAgRm9yIG1vcmUgaW5mbywgbWFuIGNjLiAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKK2ZpCisKKyAgICAgICAgIDs7CisKKyAgICBpbnRlbCkgQ0ZMQUdTPSItTzMgLWFuc2lfYWxpYXMiCisJaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorCSAgaWNjX2FyY2hmbGFnPXVua25vd24KKwkgIGljY19mbGFncz0iIgorCSAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgaTY4Nip8eDg2XzY0KikKKyAgICAgICAgICAgICAgIyBpY2MgYWNjZXB0cyBnY2MgYXNzZW1ibHkgc3ludGF4LCBzbyB0aGVzZSBzaG91bGQgd29yazoKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAwIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMD11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMCwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMD11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMCIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMCIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDEgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAxLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCisJICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluICMgc2VlIEFYX0dDQ19BUkNIRkxBRworICAgICAgICAgICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKyAgICAgICAgICAgICAgICAgICAgKjZhPzoqWzIzNF06KjoqfCo2Wzc4OWJdPzoqOio6KikgaWNjX2ZsYWdzPSIteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmYzWzM0N106KjoqOip8KmY0MTM0NzoqOio6KikgaWNjX2ZsYWdzPSIteFAgLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmY/PzoqOio6KikgaWNjX2ZsYWdzPSIteE4gLXhXIC14SyI7OworICAgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2ZsYWdzIiAhPSB4OyB0aGVuCisgICAgICAgICAgICBmb3IgZmxhZyBpbiAkaWNjX2ZsYWdzOyBkbworICAgICAgICAgICAgICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJGZsYWciIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZy4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICRmbGFnIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgaWNjX2FyY2hmbGFnPSRmbGFnOyBicmVhaworZWxzZQorICA6CitmaQorCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpY2MgYXJjaGl0ZWN0dXJlIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGljYyBhcmNoaXRlY3R1cmUgZmxhZy4uLiAiID4mNjsgfQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRpY2NfYXJjaGZsYWciID4mNQorJGFzX2VjaG8gIiRpY2NfYXJjaGZsYWciID4mNjsgfQorICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2FyY2hmbGFnIiAhPSB4dW5rbm93bjsgdGhlbgorICAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRpY2NfYXJjaGZsYWciCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKwk7OworCisgICAgZ251KQorICAgICAjIGRlZmF1bHQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBnY2Mgb24gYWxsIHN5c3RlbXMKKyAgICAgQ0ZMQUdTPSItTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKKyAgICAgIyAtbWFsaWduLWRvdWJsZSBmb3IgeDg2IHN5c3RlbXMKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtbWFsaWduLWRvdWJsZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtbWFsaWduLWRvdWJsZS4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAtbWFsaWduLWRvdWJsZSIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGU9eWVzCitlbHNlCisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSIgPiY2OyB9CitpZiB0ZXN0IHgiJGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGUiID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iJENGTEFHUyAtbWFsaWduLWRvdWJsZSIKK2Vsc2UKKyAgOgorZmkKKworCisgICAgICMgIC1mc3RyaWN0LWFsaWFzaW5nIGZvciBnY2MtMi45NSsKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZnN0cmljdC1hbGlhc2luZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZnN0cmljdC1hbGlhc2luZy4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAtZnN0cmljdC1hbGlhc2luZyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmc9eWVzCitlbHNlCisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmc9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZyIgPiY2OyB9CitpZiB0ZXN0IHgiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmciID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iJENGTEFHUyAtZnN0cmljdC1hbGlhc2luZyIKK2Vsc2UKKyAgOgorZmkKKworCisgICAgICMgbm90ZSB0aGF0IHdlIGVuYWJsZSAidW5zYWZlIiBmcCBvcHRpbWl6YXRpb24gd2l0aCBvdGhlciBjb21waWxlcnMsIHRvbworICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1mZmFzdC1tYXRoIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1mZmFzdC1tYXRoLi4uICIgPiY2OyB9CitpZiAke2F4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgIC1mZmFzdC1tYXRoIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aD15ZXMKK2Vsc2UKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgiID4mNQorJGFzX2VjaG8gIiRheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoIiA+JjY7IH0KK2lmIHRlc3QgeCIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aCIgPSB4eWVzOyB0aGVuIDoKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZmFzdC1tYXRoIgorZWxzZQorICA6CitmaQorCisKKworCisKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nY2MtYXJjaCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZ2NjX2FyY2grc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2djY19hcmNoOyBheF9nY2NfYXJjaD0kd2l0aHZhbAorZWxzZQorICBheF9nY2NfYXJjaD15ZXMKK2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWcuLi4gIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAiID4mNQorJGFzX2VjaG8gIiIgPiY2OyB9CitpZiAke2F4X2N2X2djY19hcmNoZmxhZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKK2F4X2N2X2djY19hcmNoZmxhZz0idW5rbm93biIKKworaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgPSB4eWVzOyB0aGVuCitheF9nY2NfYXJjaD0iIgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorY2FzZSAkaG9zdF9jcHUgaW4KKyAgaVszNDU2XTg2Knx4ODZfNjQqKSAjIHVzZSBjcHVpZCBjb2RlcywgaW4gcGFydCBmcm9tIHg4NmluZm8tMS43IGJ5IEQuIEpvbmVzCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDAsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzErOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMSwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4KKyAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVs0OF0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tbXggcGVudGl1bSIgOzsKKwkgICAgKjU/PzoqOio6KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgICAqNlszNDU2XT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbMDFdOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0yIHBlbnRpdW1wcm8iIDs7CisJICAgICo2YT86KlsyMzRdOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2WzlkXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW0gcGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbNzhiXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNj8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtcHJvIDs7CisgICAgICAgICAgICAqZjNbMzQ3XToqOio6KnwqZjQxMzQ3Oio6KjoqKQorCQljYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgICAgICAgICAgeDg2XzY0KikgYXhfZ2NjX2FyY2g9Im5vY29uYSBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9InByZXNjb3R0IHBlbnRpdW00IHBlbnRpdW1wcm8iIDs7CisgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW00IHBlbnRpdW1wcm8iOzsKKyAgICAgICAgICBlc2FjIDs7CisgICAgICAgKjo2ODc0NzU0MToqOiopICMgQU1ECisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1WzY3XT86KjoqOiopIGF4X2djY19hcmNoPWs2IDs7CisJICAgICo1WzhkXT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0yIGs2IiA7OworCSAgICAqNVs5XT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0zIGs2IiA7OworCSAgICAqNjA/Oio6KjoqKSBheF9nY2NfYXJjaD1rNyA7OworCSAgICAqNlsxMl0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uIGs3IiA7OworCSAgICAqNlszNF0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLXRiaXJkIGs3IiA7OworCSAgICAqNjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLTQgYXRobG9uIGs3IiA7OworCSAgICAqNls2OGFdPzoqOio6KikKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMHg4MDAwMDAwNiBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAweDgwMDAwMDA2IG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNj11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMHg4MDAwMDAwNiwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDY9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNj11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKyAjIEwyIGNhY2hlIHNpemUKKwkgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2IGluCisgICAgICAgICAgICAgICAgICo6KjoqWzEtOWEtZl0/Pz8/Pz86KikgIyAoTDIgPSBlY3ggPj4gMTYpID49IDI1NgorCQkJYXhfZ2NjX2FyY2g9ImF0aGxvbi14cCBhdGhsb24tNCBhdGhsb24gazciIDs7CisgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICAgIGVzYWMgOzsKKwkgICAgKmZbNGNlZjhiXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb242NCBrOCIgOzsKKwkgICAgKmY1PzoqOio6KikgYXhfZ2NjX2FyY2g9Im9wdGVyb24gazgiIDs7CisJICAgICpmNz86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tZnggb3B0ZXJvbiBrOCIgOzsKKwkgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9Ims4IiA7OworICAgICAgICAgIGVzYWMgOzsKKwkqOjc0NmU2NTQzOio6KikgIyBJRFQKKwkgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgICo1ND86KjoqOiopIGF4X2djY19hcmNoPXdpbmNoaXAtYzYgOzsKKwkgICAgICo1OD86KjoqOiopIGF4X2djY19hcmNoPXdpbmNoaXAyIDs7CisJICAgICAqNls3OF0/Oio6KjoqKSBheF9nY2NfYXJjaD1jMyA7OworCSAgICAgKjY5PzoqOio6KikgYXhfZ2NjX2FyY2g9ImMzLTIgYzMiIDs7CisJICAgZXNhYyA7OworICAgICBlc2FjCisgICAgIGlmIHRlc3QgeCIkYXhfZ2NjX2FyY2giID0geDsgdGhlbiAjIGZhbGxiYWNrCisJY2FzZSAkaG9zdF9jcHUgaW4KKwkgIGk1ODYqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICBpNjg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICBlc2FjCisgICAgIGZpCisgICAgIDs7CisKKyAgc3BhcmMqKQorICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBydGRpYWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHBydGRpYWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1BSVERJQUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRQUlRESUFHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1BSVERJQUc9IiRQUlRESUFHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorYXNfZHVtbXk9IiRQQVRIOi91c3IvcGxhdGZvcm0vYHVuYW1lIC1pYC9zYmluLzovdXNyL3BsYXRmb3JtL2B1bmFtZSAtbWAvc2Jpbi8iCitmb3IgYXNfZGlyIGluICRhc19kdW1teQorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9QUlRESUFHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1BSVERJQUciICYmIGFjX2N2X3BhdGhfUFJURElBRz0icHJ0ZGlhZyIKKyAgOzsKK2VzYWMKK2ZpCitQUlRESUFHPSRhY19jdl9wYXRoX1BSVERJQUcKK2lmIHRlc3QgLW4gIiRQUlRESUFHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBSVERJQUciID4mNQorJGFzX2VjaG8gIiRQUlRESUFHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICAgY3B1dHlwZT1gKCgoZ3JlcCBjcHUgL3Byb2MvY3B1aW5mbyB8IGN1dCAtZDogLWYyKSA7ICgkUFJURElBRyAtdiB8Z3JlcCAtaSBzcGFyYykgOyBncmVwIC1pIGNwdSAvdmFyL3J1bi9kbWVzZy5ib290ICkgfCBoZWFkIC1uIDEpIDI+IC9kZXYvbnVsbGAKKyAgICAgY3B1dHlwZT1gZWNobyAiJGNwdXR5cGUiIHwgdHIgLWQgJyAtJyB8dHIgJGFzX2NyX0xFVFRFUlMgJGFzX2NyX2xldHRlcnNgCisgICAgIGNhc2UgJGNwdXR5cGUgaW4KKyAgICAgICAgICp1bHRyYXNwYXJjaXYqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzQgdWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjaWlpKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyYyopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnN1cGVyc3BhcmMqfCp0bXMzOTB6NVswNV0qKSBheF9nY2NfYXJjaD0ic3VwZXJzcGFyYyB2OCIgOzsKKyAgICAgICAgICpoeXBlcnNwYXJjKnwqcnQ2MlswNTZdKikgYXhfZ2NjX2FyY2g9Imh5cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqY3lwcmVzcyopIGF4X2djY19hcmNoPWN5cHJlc3MgOzsKKyAgICAgZXNhYyA7OworCisgIGFscGhhZXY1KSBheF9nY2NfYXJjaD1ldjUgOzsKKyAgYWxwaGFldjU2KSBheF9nY2NfYXJjaD1ldjU2IDs7CisgIGFscGhhcGNhNTYpIGF4X2djY19hcmNoPSJwY2E1NiBldjU2IiA7OworICBhbHBoYXBjYTU3KSBheF9nY2NfYXJjaD0icGNhNTcgcGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFldjYpIGF4X2djY19hcmNoPWV2NiA7OworICBhbHBoYWV2NjcpIGF4X2djY19hcmNoPWV2NjcgOzsKKyAgYWxwaGFldjY4KSBheF9nY2NfYXJjaD0iZXY2OCBldjY3IiA7OworICBhbHBoYWV2NjkpIGF4X2djY19hcmNoPSJldjY5IGV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjcpIGF4X2djY19hcmNoPSJldjcgZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3OSkgYXhfZ2NjX2FyY2g9ImV2NzkgZXY3IGV2NjkgZXY2OCBldjY3IiA7OworCisgIHBvd2VycGMqKQorICAgICBjcHV0eXBlPWAoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBoZWFkIC1uIDEgfCBjdXQgLWQ6IC1mMiB8IGN1dCAtZCwgLWYxIHwgc2VkICdzLyAvL2cnKSA7IC91c3IvYmluL21hY2hpbmUgOyAvYmluL21hY2hpbmU7IGdyZXAgQ1BVIC92YXIvcnVuL2RtZXNnLmJvb3QgfCBoZWFkIC1uIDEgfCBjdXQgLWQiICIgLWYyKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gJGNwdXR5cGUgfCBzZWQgLWUgJ3MvcHBjLy9nO3MvICovL2cnYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgKjc1MCopIGF4X2djY19hcmNoPSI3NTAgRzMiIDs7CisgICAgICAgKjc0MFswLTldKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDc0MDAgRzQiIDs7CisgICAgICAgKjc0WzQtNV1bMC05XSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDUwIEc0IiA7OworICAgICAgICo3NFswLTldWzAtOV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgRzQiIDs7CisgICAgICAgKjk3MCopIGF4X2djY19hcmNoPSI5NzAgRzUgcG93ZXI0Ijs7CisgICAgICAgKlBPV0VSNCp8KnBvd2VyNCp8KmdxKikgYXhfZ2NjX2FyY2g9InBvd2VyNCA5NzAiOzsKKyAgICAgICAqUE9XRVI1KnwqcG93ZXI1KnwqZ3IqfCpncyopIGF4X2djY19hcmNoPSJwb3dlcjUgcG93ZXI0IDk3MCI7OworICAgICAgIDYwM2V2fDgyNDApIGF4X2djY19hcmNoPSIkY3B1dHlwZSA2MDNlIDYwMyI7OworICAgICAgICopIGF4X2djY19hcmNoPSRjcHV0eXBlIDs7CisgICAgIGVzYWMKKyAgICAgYXhfZ2NjX2FyY2g9IiRheF9nY2NfYXJjaCBwb3dlcnBjIgorICAgICA7OworZXNhYworZmkgIyBub3QgY3Jvc3MtY29tcGlsaW5nCitmaSAjIGd1ZXNzIGFyY2gKKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgIT0geCAtYSAieCRheF9nY2NfYXJjaCIgIT0geG5vOyB0aGVuCitmb3IgYXJjaCBpbiAkYXhfZ2NjX2FyY2g7IGRvCisgIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuICMgaWYgd2UgcmVxdWlyZSBwb3J0YWJsZSBjb2RlCisgICAgZmxhZ3M9Ii1tdHVuZT0kYXJjaCIKKyAgICAjIC1tY3B1PSRhcmNoIGFuZCBtJGFyY2ggZ2VuZXJhdGUgbm9ucG9ydGFibGUgY29kZSBvbiBldmVyeSBhcmNoIGV4Y2VwdAorICAgICMgeDg2LiAgQW5kIHNvbWUgb3RoZXIgYXJjaGVzIChlLmcuIEFscGhhKSBkb24ndCBhY2NlcHQgLW10dW5lLiAgR3Jyci4KKyAgICBjYXNlICRob3N0X2NwdSBpbiBpKjg2fHg4Nl82NCopIGZsYWdzPSIkZmxhZ3MgLW1jcHU9JGFyY2ggLW0kYXJjaCI7OyBlc2FjCisgIGVsc2UKKyAgICBmbGFncz0iLW1hcmNoPSRhcmNoIC1tY3B1PSRhcmNoIC1tJGFyY2giCisgIGZpCisgIGZvciBmbGFnIGluICRmbGFnczsgZG8KKyAgICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJGZsYWciIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZy4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICRmbGFnIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX2FyY2hmbGFnPSRmbGFnOyBicmVhaworZWxzZQorICA6CitmaQorCisgIGRvbmUKKyAgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd24gfHwgYnJlYWsKK2RvbmUKK2ZpCisKK2ZpICMgJEdDQz15ZXMKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWcuLi4gIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA+JjY7IH0KK2lmIHRlc3QgIngkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA9IHh1bmtub3duOyB0aGVuCisgIDoKK2Vsc2UKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICRheF9jdl9nY2NfYXJjaGZsYWciCitmaQorCisgICAgIDs7CisgIGVzYWMKKworICBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgorCWVjaG8gIiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBEb24ndCBrbm93IHRoZSBiZXN0IENGTEFHUyBmb3IgdGhpcyBzeXN0ZW0gICoiCisgICAgICAgIGVjaG8gIiogVXNlIC4vY29uZmlndXJlIENGTEFHUz0uLi4gdG8gc3BlY2lmeSB5b3VyIG93biBmbGFncyAqIgorCWVjaG8gIiogKG90aGVyd2lzZSwgYSBkZWZhdWx0IG9mIENGTEFHUz0tTzMgd2lsbCBiZSB1c2VkKSAgICAqIgorCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorCWVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSItTzMiCisgIGZpCisKKyAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyRDRkxBR1MiIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkQ0ZMQUdTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRDRkxBR1MuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkQ0ZMQUdTIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgOgorZWxzZQorCisJZWNobyAiIgorICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBUaGUgZ3Vlc3NlZCBDRkxBR1MgZG9uJ3Qgc2VlbSB0byB3b3JrIHdpdGggICoiCisgICAgICAgIGVjaG8gIiogeW91ciBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSIiCisKK2ZpCisKKworZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIENGTEFHUyBmb3IgbWF4aW11bSB3YXJuaW5ncyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBDRkxBR1MgZm9yIG1heGltdW0gd2FybmluZ3MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY2ZsYWdzX3dhcm5fYWxsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsPSJubywgdW5rbm93biIKK2FjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorZm9yIGFjX2FyZyBpbiAiLXdhcm4gYWxsICAlIC13YXJuIGFsbCIgICAgICAiLXBlZGFudGljICAlIC1XYWxsIiAgICAgICAgICAiLXhzdHJjb25zdCAlIC12IiAgICAgICAgICAgICAiLXN0ZDEgICAgICAlIC12ZXJib3NlIC13MCAtd2FybnByb3RvcyIgICAgIi1xbGFuZ2x2bD1hbnNpICUgLXFzcmNtc2cgLXFpbmZvPWFsbDpub3BwdDpub3BwYzpub29iczpub2NuZCIgICAgIi1hbnNpIC1hbnNpRSAlIC1mdWxsd2FybiIgICAgIitFU2xpdCAgICAgJSArdzEiICAgICAgICAgICAgIi1YYyAgICAgICAgJSAtcHZjdGwsZnVsbG1zZyIgICAgIi1oIGNvbmZvcm0gJSAtaCBtc2dsZXZlbCAyIiAgICAjCitkbyBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyAiYGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywlJS4qLCwnIC1lICdzLCUsLCdgCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsPWBlY2hvICRhY19hcmcgfCBzZWQgLWUgJ3MsLiolICosLCdgIDsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKK0NGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiID4mNjsgfQorY2FzZSAiLiRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiIGluCisgICAgIC5va3wub2ssKikgIDs7CisgICAufC5ub3wubm8sKikgIDs7CisgICAqKSBpZiAke0NGTEFHUys6fSBmYWxzZTsgdGhlbiA6CisgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKyAgICAqIiAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsICIqKQorICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IDogQ0ZMQUdTIGFscmVhZHkgY29udGFpbnMgXCRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiOyB9ID4mNQorICAoOiBDRkxBR1MgYWxyZWFkeSBjb250YWlucyAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICAgICAgOzsKKyAgICAqKQorICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IDogQ0ZMQUdTPVwiXCRDRkxBR1MgXCRhY19jdl9jZmxhZ3Nfd2Fybl9hbGxcIiI7IH0gPiY1CisgICg6IENGTEFHUz0iJENGTEFHUyAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgICAgIENGTEFHUz0iJENGTEFHUyAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIgorICAgICAgOzsKKyAgIGVzYWMKK2Vsc2UKKyAgQ0ZMQUdTPSIkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIgorZmkKKyA7OworZXNhYworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgIENGTEFHUz0iJENGTEFHUyAtZmV4Y2VwdGlvbnMiCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMuLi4gIiA+JjY7IH0KQEAgLTExMDA1LDcgKzEzMDIyLDcgQEAKIGZvciBhY19oZWFkZXIgaW4gc3lzL21tYW4uaAogZG8gOgogICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic3lzL21tYW4uaCIgImFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiA9IHh5ZXM7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIEhBVkVfU1lTX01NQU5fSCAxCiBfQUNFT0YKQEAgLTExMDE3LDcgKzEzMDM0LDcgQEAKIGZvciBhY19mdW5jIGluIG1tYXAKIGRvIDoKICAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibW1hcCIgImFjX2N2X2Z1bmNfbW1hcCIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX01NQVAgMQogX0FDRU9GCkBAIC0xMTAyNyw3ICsxMzA0NCw3IEBACiAKIAogYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy9tbWFuLmgiICJhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4eWVzOyB0aGVuIDoKICAgbGliZmZpX2hlYWRlcl9zeXNfbW1hbl9oPXllcwogZWxzZQogICBsaWJmZmlfaGVhZGVyX3N5c19tbWFuX2g9bm8KQEAgLTExMDM1LDcgKzEzMDUyLDcgQEAKIAogCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtbWFwIiAiYWNfY3ZfZnVuY19tbWFwIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX21tYXAiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHh5ZXM7IHRoZW4gOgogICBsaWJmZmlfZnVuY19tbWFwPXllcwogZWxzZQogICBsaWJmZmlfZnVuY19tbWFwPW5vCkBAIC0xMTA0OSw3ICsxMzA2Niw3IEBACiBlbHNlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19tbWFwX2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEFkZCBhIHN5c3RlbSB0byB0aGlzIGJsYWNrbGlzdCBpZgpAQCAtMTEwNjgsNyArMTMwODUsNyBAQAogJGFzX2VjaG8gIiRhY19jdl9mdW5jX21tYXBfZmlsZSIgPiY2OyB9CiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgbW1hcCBmcm9tIC9kZXYvemVybyB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIG1tYXAgZnJvbSAvZGV2L3plcm8gd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tbWFwX2Rldl96ZXJvK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19tbWFwX2Rldl96ZXJvKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgIyBBZGQgYSBzeXN0ZW0gdG8gdGhpcyBibGFja2xpc3QgaWYgaXQgaGFzIG1tYXAoKSBidXQgL2Rldi96ZXJvCkBAIC0xMTA5NCw3ICsxMzExMSw3IEBACiAgICAjIFVubGlrZSAvZGV2L3plcm8sIHRoZSBNQVBfQU5PTihZTU9VUykgZGVmaW5lcyBjYW4gYmUgcHJvYmVkIGZvci4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE1BUF9BTk9OKFlNT1VTKSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgTUFQX0FOT04oWU1PVVMpLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2RlY2xfbWFwX2Fub24rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9kZWNsX21hcF9hbm9uKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTExMzAsNyArMTMxNDcsNyBAQAogICAgZWxzZQogICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgbW1hcCB3aXRoIE1BUF9BTk9OKFlNT1VTKSB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tbWFwX2Fub24rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9mdW5jX21tYXBfYW5vbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgQWRkIGEgc3lzdGVtIHRvIHRoaXMgYmxhY2tsaXN0IGlmIGl0IGhhcyBtbWFwKCkgYW5kIE1BUF9BTk9OIG9yCkBAIC0xMTE4MCw3ICsxMzE5Nyw3IEBACiBjYXNlICIkaG9zdCIgaW4KICAgYWxwaGEqLSotKikKIAlUQVJHRVQ9QUxQSEE7IFRBUkdFVERJUj1hbHBoYTsKLQkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgorCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2VhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19MT05HX0RPVUJMRV8xMjhfXyknCiAJOzsKIApAQCAtMTEyMDgsNyArMTMyMjUsNyBAQAogCVRBUkdFVD1GUlY7IFRBUkdFVERJUj1mcnYKIAk7OwogCi0gIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KikKKyAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqIHwgaHBwYSotKi1vcGVuYnNkKikKIAlUQVJHRVQ9UEFfTElOVVg7IFRBUkdFVERJUj1wYQogCTs7CiAgIGhwcGEqNjQtKi1ocHV4KikKQEAgLTExMjIxLDEwICsxMzIzOCwxNyBAQAogICBpPzg2LSotZnJlZWJzZCogfCBpPzg2LSotb3BlbmJzZCopCiAJVEFSR0VUPVg4Nl9GUkVFQlNEOyBUQVJHRVRESVI9eDg2CiAJOzsKLSAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyopCisgIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqIHwgaT84Ni0qLW9zMiogfCBpPzg2LSotaW50ZXJpeCopCiAJVEFSR0VUPVg4Nl9XSU4zMjsgVEFSR0VURElSPXg4NgotCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSB0aGlzIGZvciBzaGFyZWRsaWIKLQlBTV9MVExERkxBR1M9Ii1uby11bmRlZmluZWQiCisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAgIGk/ODYtKi1kYXJ3aW4qKQogCVRBUkdFVD1YODZfREFSV0lOOyBUQVJHRVRESVI9eDg2CkBAIC0xMTIzNiw3ICsxMzI2MCw3IEBACiAgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKICAgICAgICAgOzsKICAgaT84Ni0qLSopCi0JVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgorCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKIAk7OwogCiAgIGlhNjQqLSotKikKQEAgLTExMjUxLDMwICsxMzI3NSw0MCBAQAogCVRBUkdFVD1NNjhLOyBUQVJHRVRESVI9bTY4awogCTs7CiAKLSAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCisgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qIHwgbWlwcyotKi1ydGVtcyopCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwotICBtaXBzKi0qLWxpbnV4KikKKyAgbWlwcyotKi1saW51eCogfCBtaXBzKi0qLW9wZW5ic2QqKQogCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwogCisgIG1veGllLSotKikKKyAgICAgICAgVEFSR0VUPU1PWElFOyBUQVJHRVRESVI9bW94aWUKKwk7OworCiAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGMtKi1hbWlnYW9zKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjLSotYmVvcyopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWRhcndpbiopCisgIHBvd2VycGMtKi1kYXJ3aW4qIHwgcG93ZXJwYzY0LSotZGFyd2luKikKIAlUQVJHRVQ9UE9XRVJQQ19EQVJXSU47IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKICAgcG93ZXJwYy0qLWFpeCogfCByczYwMDAtKi1haXgqKQogCVRBUkdFVD1QT1dFUlBDX0FJWDsgVEFSR0VURElSPXBvd2VycGMKIAk7OwotICBwb3dlcnBjLSotZnJlZWJzZCopCisgIHBvd2VycGMtKi1mcmVlYnNkKiB8IHBvd2VycGMtKi1vcGVuYnNkKikKIAlUQVJHRVQ9UE9XRVJQQ19GUkVFQlNEOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGM2NC0qLWZyZWVic2QqKQorCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYworCTs7CiAgIHBvd2VycGMqLSotcnRlbXMqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CkBAIC0xMTMwMCw2ICsxMzMzNCwxNSBAQAogCiAgIHg4Nl82NC0qLWN5Z3dpbiogfCB4ODZfNjQtKi1taW5ndyopCiAJVEFSR0VUPVg4Nl9XSU42NDsgVEFSR0VURElSPXg4NgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogCiAgIHg4Nl82NC0qLSopCkBAIC0xMTMxMSw3ICsxMzM1NCw3IEBACiAKIAogaWYgdGVzdCAkVEFSR0VURElSID0gdW5rbm93bjsgdGhlbgotICBhc19mbl9lcnJvciAiXCJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC5cIiIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gIlwibGliZmZpIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gJGhvc3QuXCIiICIkTElORU5PIiA1CiBmaQogCiAgaWYgZXhwciB4JFRBUkdFVCA6ICd4TUlQUycgPiAvZGV2L251bGw7IHRoZW4KQEAgLTExNDAyLDYgKzEzNDQ1LDE0IEBACiAgIE02OEtfRkFMU0U9CiBmaQogCisgaWYgdGVzdCB4JFRBUkdFVCA9IHhNT1hJRTsgdGhlbgorICBNT1hJRV9UUlVFPQorICBNT1hJRV9GQUxTRT0nIycKK2Vsc2UKKyAgTU9YSUVfVFJVRT0nIycKKyAgTU9YSUVfRkFMU0U9CitmaQorCiAgaWYgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDOyB0aGVuCiAgIFBPV0VSUENfVFJVRT0KICAgUE9XRVJQQ19GQUxTRT0nIycKQEAgLTExNTI1LDcgKzEzNTc2LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2hlYWRlcl9zdGRjKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE2MzgsNyArMTM2ODksNyBAQAogZm9yIGFjX2Z1bmMgaW4gbWVtY3B5CiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1lbWNweSIgImFjX2N2X2Z1bmNfbWVtY3B5IgotaWYgdGVzdCAieCRhY19jdl9mdW5jX21lbWNweSIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX21lbWNweSIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX01FTUNQWSAxCiBfQUNFT0YKQEAgLTExNjQ2LDExICsxMzY5NywyMiBAQAogZmkKIGRvbmUKIAorYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic2l6ZV90IiAiYWNfY3ZfdHlwZV9zaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9zaXplX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBzaXplX3QgdW5zaWduZWQgaW50CitfQUNFT0YKKworZmkKKwogIyBUaGUgVWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxsb2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkgd29ya3MKICMgZm9yIGNvbnN0YW50IGFyZ3VtZW50cy4gIFVzZWxlc3MhCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3dvcmtpbmdfYWxsb2NhX2grc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl93b3JraW5nX2FsbG9jYV9oKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE2ODMsNyArMTM3NDUsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhbGxvY2EiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFsbG9jYS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9mdW5jX2FsbG9jYV93b3JrcytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE3MDIsNyArMTM3NjQsNyBAQAogICNwcmFnbWEgYWxsb2NhCiAjICAgZWxzZQogIyAgICBpZm5kZWYgYWxsb2NhIC8qIHByZWRlZmluZWQgYnkgSFAgY2MgK09saWJjYWxscyAqLwotY2hhciAqYWxsb2NhICgpOwordm9pZCAqYWxsb2NhIChzaXplX3QpOwogIyAgICBlbmRpZgogIyAgIGVuZGlmCiAjICBlbmRpZgpAQCAtMTE3NDYsNyArMTM4MDgsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfb3NfY3JheStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X29zX2NyYXkrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTc3Myw4ICsxMzgzNSw3IEBACiAgIGZvciBhY19mdW5jIGluIF9nZXRiNjcgR0VUQjY3IGdldGI2NzsgZG8KICAgICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKLWV2YWwgYXNfdmFsPVwkJGFzX2FjX3ZhcgotICAgaWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBDUkFZX1NUQUNLU0VHX0VORCAkYWNfZnVuYwpAQCAtMTE3ODgsNyArMTM4NDksNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZvciBDIGFsbG9jYS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgpAQCAtMTE4NDMsNyArMTM5MDQsNyBAQAogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBkb3VibGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBkb3VibGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfc2l6ZW9mX2RvdWJsZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3NpemVvZl9kb3VibGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChkb3VibGUpKSIgImFjX2N2X3NpemVvZl9kb3VibGUiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKQEAgLTExODUyLDkgKzEzOTEzLDggQEAKICAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfZG91YmxlIiA9IHllczsgdGhlbgogICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLXsgYXNfZm5fc2V0X3N0YXR1cyA3NwotYXNfZm5fZXJyb3IgImNhbm5vdCBjb21wdXRlIHNpemVvZiAoZG91YmxlKQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9OyB9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChkb3VibGUpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQogICAgICBhY19jdl9zaXplb2ZfZG91YmxlPTAKICAgIGZpCkBAIC0xMTg3Nyw3ICsxMzkzNyw3IEBACiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgZG91YmxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZyBkb3VibGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBkb3VibGUpKSIgImFjX2N2X3NpemVvZl9sb25nX2RvdWJsZSIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgpAQCAtMTE4ODYsOSArMTM5NDYsOCBAQAogICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2RvdWJsZSIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci17IGFzX2ZuX3NldF9zdGF0dXMgNzcKLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgZG91YmxlKQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9OyB9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGRvdWJsZSkKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICBlbHNlCiAgICAgIGFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0wCiAgICBmaQpAQCAtMTE5MjIsNyArMTM5ODEsNyBAQAogCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4uLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfY19iaWdlbmRpYW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9jX2JpZ2VuZGlhbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2N2X2NfYmlnZW5kaWFuPXVua25vd24KQEAgLTEyMTQwLDE4ICsxNDE5OSwxOCBAQAogCiAgICAgIDs7ICMoCiAgICAqKQotICAgICBhc19mbl9lcnJvciAidW5rbm93biBlbmRpYW5uZXNzCisgICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bmtub3duIGVuZGlhbm5lc3MKICBwcmVzZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgIiRMSU5FTk8iIDUgOzsKICBlc2FjCiAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLmNmaSBwc2V1ZG8tb3Agc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgLmNmaSBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2djY19jdl9hc19jZmlfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIAotICAgIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KKyAgICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD11bmtub3duCiAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogYXNtICgiLmNmaV9zdGFydHByb2Ncblx0LmNmaV9lbmRwcm9jIik7CkBAIC0xMjE2NCwyNSArMTQyMjMsMjYgQEAKIH0KIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXMKKyAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9eWVzCiBlbHNlCi0gIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPW5vCisgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPW5vCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wIiA+JjUKLSRhc19lY2hvICIkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID4mNjsgfQotaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA+JjUKKyRhc19lY2hvICIkZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID4mNjsgfQorIGlmIHRlc3QgIngkZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX0NGSV9QU0VVRE9fT1AgMSIgPj5jb25mZGVmcy5oCiAKLWZpCisgZmkKKwogCiBpZiB0ZXN0IHgkVEFSR0VUID0geFNQQVJDOyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBwYyByZWxhdGVkIHJlbG9jcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBwYyByZWxhdGVkIHJlbG9jcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfc3BhcmNfdWFfcGNyZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsaWJmZmlfY3ZfYXNfc3BhcmNfdWFfcGNyZWwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCkBAIC0xMjIyMSw3ICsxNDI4MSw3IEBACiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAucmVnaXN0ZXIgcHNldWRvLW9wIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5yZWdpc3RlciBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfcmVnaXN0ZXJfcHNldWRvX29wK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2FzX3JlZ2lzdGVyX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKQEAgLTEyMjU4LDE0ICsxNDMxOCwxNCBAQAogaWYgdGVzdCB4JFRBUkdFVCA9IHhYODYgfHwgdGVzdCB4JFRBUkdFVCA9IHhYODZfV0lOMzIgfHwgdGVzdCB4JFRBUkdFVCA9IHhYODZfNjQ7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyBwYyByZWxhdGVkIHJlbG9jcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgcGMgcmVsYXRlZCByZWxvY3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX3g4Nl9wY3JlbCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9hc194ODZfcGNyZWwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCi0JbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD15ZXMKKwlsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPW5vCiAJZWNobyAnLnRleHQ7IGZvbzogbm9wOyAuZGF0YTsgLmxvbmcgZm9vLS47IC50ZXh0JyA+IGNvbmZ0ZXN0LnMKLQlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD1ubworCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICBsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPXllcwogCWZpCiAKIGZpCkBAIC0xMjI3Niw3NyArMTQzMzYsMjQ0IEBACiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1g4Nl9QQ1JFTCAxIiA+PmNvbmZkZWZzLmgKIAogICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAuYXNjaWkgcHNldWRvLW9wIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5hc2NpaSBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9dW5rbm93bgorICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSAuYXNjaWkKKyAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCithc20gKCIuYXNjaWkgXFwic3RyaW5nXFwiIik7CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9eWVzCitlbHNlCisgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCIgPiY1CiskYXNfZWNobyAiJGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID4mNjsgfQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfQVNDSUlfUFNFVURPX09QIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIC5zdHJpbmcgcHNldWRvLW9wIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5zdHJpbmcgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3ArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgICAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9dW5rbm93bgorICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSAuc3RyaW5nCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworYXNtICgiLnN0cmluZyBcXCJzdHJpbmdcXCIiKTsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9eWVzCitlbHNlCisgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA+JjUKKyRhc19lY2hvICIkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID4mNjsgfQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQogZmkKIAoraWYgdGVzdCB4JFRBUkdFVCA9IHhYODZfV0lONjQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfIHByZWZpeCBpbiBjb21waWxlZCBzeW1ib2xzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfIHByZWZpeCBpbiBjb21waWxlZCBzeW1ib2xzLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT1ubworICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgordm9pZCBubV90ZXN0X2Z1bmMoKXt9CitpbnQgbWFpbigpe25tX3Rlc3RfZnVuYztyZXR1cm4gMDt9CitfTFRfRU9GCisgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgICAjIE5vdyB0cnkgdG8gZ3JhYiB0aGUgc3ltYm9scy4KKyAgICBhY19ubGlzdD1jb25mdGVzdC5ubQorICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRhY19ubGlzdFwiIjsgfSA+JjUKKyAgKGV2YWwgJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJGFjX25saXN0KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zICIkYWNfbmxpc3QiOyB0aGVuCisgICAgICAjIFNlZSB3aGV0aGVyIHRoZSBzeW1ib2xzIGhhdmUgYSBsZWFkaW5nIHVuZGVyc2NvcmUuCisgICAgICBpZiBncmVwICdeLiBfbm1fdGVzdF9mdW5jJyAiJGFjX25saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT15ZXMKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgZ3JlcCAnXi4gbm1fdGVzdF9mdW5jICcgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorCSAgOgorICAgICAgICBlbHNlCisJICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkYWNfbmxpc3QiID4mNQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mNQorICAgIGZpCisgIGVsc2UKKyAgICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorICAgIGNhdCBjb25mdGVzdC5jID4mNQorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSIgPiY2OyB9CisgIHN5c19zeW1ib2xfdW5kZXJzY29yZT0kbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlCisKKworICAgIGlmIHRlc3QgIngkc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgU1lNQk9MX1VOREVSU0NPUkUgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQorZmkKKworCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTAKIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgICotYXBwbGUtZGFyd2luMTAqIHwgKi0qLWZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKKyAgICAgKmFybSotYXBwbGUtZGFyd2luKikKKyAgICAgICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTEKKworJGFzX2VjaG8gIiNkZWZpbmUgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSAxIiA+PmNvbmZkZWZzLmgKKworICAgICA7OworICAgICAqLWFwcGxlLWRhcndpbjFbMTBdKiB8ICotKi1mcmVlYnNkKiB8ICotKi1rZnJlZWJzZCogfCAqLSotb3BlbmJzZCogfCAqLXBjLXNvbGFyaXMqKQogCiAkYXNfZWNobyAiI2RlZmluZSBGRklfTU1BUF9FWEVDX1dSSVQgMSIgPj5jb25mZGVmcy5oCiAKICAgICAgOzsKIGVzYWMKKyBpZiB0ZXN0IHgkRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IHgxOyB0aGVuCisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRT0KKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRT0nIycKK2Vsc2UKKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFPScjJworICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFPQorZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9yb19laF9mcmFtZStzZXR9IiA9IHNldDsgdGhlbiA6CisKKworaWYgdGVzdCB4JFRBUkdFVCA9IHhYODZfNjQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlLi4uICIgPiY2OyB9CitpZiAke2xpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKLQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9bm8KLQllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCi0JaWYgJENDICRDRkxBR1MgLVMgLWZwaWMgLWZleGNlcHRpb25zIC1vIGNvbmZ0ZXN0LnMgY29uZnRlc3QuYyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgIGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qImEiJyBjb25mdGVzdC5zID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZWxpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiNhbGxvYycgY29uZnRlc3QuYyBcCi0JCSB8IGdyZXAgLXYgJyN3cml0ZScgPiAvZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcwotCSAgICBmaQorCWxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZT15ZXMKKwllY2hvICcuc2VjdGlvbiAuZWhfZnJhbWUsImEiLEB1bndpbmQnID4gY29uZnRlc3QucworCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8IGdyZXAgLWkgd2FybmluZyA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9bm8KIAlmaQotCXJtIC1mIGNvbmZ0ZXN0LioKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlIiA+JjUKKyRhc19lY2hvICIkbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQorZmkKKworaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seS4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3Zfcm9fZWhfZnJhbWUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIAlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9bm8KKyAgCWVjaG8gJ2V4dGVybiB2b2lkIGZvbyAodm9pZCk7IHZvaWQgYmFyICh2b2lkKSB7IGZvbyAoKTsgZm9vICgpOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAJICAgIGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qImEiJyBjb25mdGVzdC5zID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAorICAJCSB8IGdyZXAgLXYgJyN3cml0ZScgPiAvZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCisgIAkgICAgZmkKKyAgCWZpCisgIAlybSAtZiBjb25mdGVzdC4qCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPiY1CiAkYXNfZWNobyAiJGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ST19FSF9GUkFNRSAxIiA+PmNvbmZkZWZzLmgKIAogCiAkYXNfZWNobyAiI2RlZmluZSBFSF9GUkFNRV9GTEFHUyBcImFcIiIgPj5jb25mZGVmcy5oCiAKLWVsc2UKKyAgZWxzZQogCiAkYXNfZWNobyAiI2RlZmluZSBFSF9GUkFNRV9GTEFHUyBcImF3XCIiID4+Y29uZmRlZnMuaAogCi1maQorICBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFwiaGlkZGVuXCIpKSkiID4mNQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFwiaGlkZGVuXCIpKSkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXCJoaWRkZW5cIikpKS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKLQllY2hvICdpbnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpIGZvbyAodm9pZCkgeyByZXR1cm4gMTsgfScgPiBjb25mdGVzdC5jCi0JbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubwotCWlmIHsgYWNfdHJ5PScke0NDLWNjfSAtV2Vycm9yIC1TIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QucyAxPiY1JworICAJZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDEgIDsgfScgPiBjb25mdGVzdC5jCisgIAlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCisgIAlpZiB7IGFjX3RyeT0nJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX3RyeVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4KLQkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9eWVzCi0JICAgIGZpCi0JZmkKLQlybSAtZiBjb25mdGVzdC4qCisgIAkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKIAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSIgPiY1CiAkYXNfZWNobyAiJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUiID4mNjsgfQotaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgorICBpZiB0ZXN0ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlID0geWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFIDEiID4+Y29uZmRlZnMuaAogCisgIGZpCiBmaQogCiAKQEAgLTEyMzY1LDYgKzE0NTkyLDE0IEBACiAgIGZpCiBmaQogCisgaWYgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIjsgdGhlbgorICBGRklfREVCVUdfVFJVRT0KKyAgRkZJX0RFQlVHX0ZBTFNFPScjJworZWxzZQorICBGRklfREVCVUdfVFJVRT0nIycKKyAgRkZJX0RFQlVHX0ZBTFNFPQorZmkKKwogCiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3RydWN0cyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9zdHJ1Y3RzK3NldH0iID0gc2V0OyB0aGVuIDoKQEAgLTEyMzk2LDIxICsxNDYzMSwyNSBAQAogZmkKIAogCi1pZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgotICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCi0gIHRvb2xleGVjZGlyPSckKGV4ZWNfcHJlZml4KS8kKHRhcmdldF9hbGlhcyknCi0gIHRvb2xleGVjbGliZGlyPSckKHRvb2xleGVjZGlyKS9saWInCi1lbHNlCi0gIHRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9hbGlhcyknCi0gIHRvb2xleGVjbGliZGlyPSckKGxpYmRpciknCisjIFRoZXNlIHZhcmlhYmxlcyBhcmUgb25seSBldmVyIHVzZWQgd2hlbiB3ZSBjcm9zcy1idWlsZCB0byBYODZfV0lOMzIuCisjIEFuZCB3ZSBvbmx5IHN1cHBvcnQgdGhpcyB3aXRoIEdDQywgc28uLi4KK2lmIHRlc3QgeCIkR0NDIiAhPSB4Im5vIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorICAgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKyAgICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJworICAgIHRvb2xleGVjbGliZGlyPSckKHRvb2xleGVjZGlyKS9saWInCisgIGVsc2UKKyAgICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJworICAgIHRvb2xleGVjbGliZGlyPSckKGxpYmRpciknCisgIGZpCisgIG11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisgIGNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgorICAgIC4pIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KKyAgICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OworICBlc2FjCisKKwogZmkKLW11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi1jYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KLSAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgotICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OwotZXNhYwotCi0KIAogaWYgdGVzdCAiJHttdWx0aWxpYn0iID0gInllcyI7IHRoZW4KICAgbXVsdGlsaWJfYXJnPSItLWVuYWJsZS1tdWx0aWxpYiIKQEAgLTEyNDk5LDEwICsxNDczOCwyMSBAQAogICAgICA6ZW5kJyA+PmNvbmZjYWNoZQogaWYgZGlmZiAiJGNhY2hlX2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQogICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4KLSAgICB0ZXN0ICJ4JGNhY2hlX2ZpbGUiICE9ICJ4L2Rldi9udWxsIiAmJgorICAgIGlmIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiOyB0aGVuCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQotICAgIGNhdCBjb25mY2FjaGUgPiRjYWNoZV9maWxlCisgICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxlIiB8fCB0ZXN0IC1oICIkY2FjaGVfZmlsZSI7IHRoZW4KKwljYXQgY29uZmNhY2hlID4iJGNhY2hlX2ZpbGUiCisgICAgICBlbHNlCisgICAgICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygKKyAgICAgICAgKi8qIHwgPzoqKQorCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIkJCAmJgorCSAgbXYgLWYgIiRjYWNoZV9maWxlIiQkICIkY2FjaGVfZmlsZSIgOzsgIygKKyAgICAgICAgKikKKwkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiIDs7CisJZXNhYworICAgICAgZmkKKyAgICBmaQogICBlbHNlCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KQEAgLTEyNTE4LDYgKzE0NzY4LDcgQEAKIAogYWNfbGlib2Jqcz0KIGFjX2x0bGlib2Jqcz0KK1U9CiBmb3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKICAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgogICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycKQEAgLTEyNTQxLDEzMiArMTQ3OTIsMTQ0IEBACiBmaQogCiBpZiB0ZXN0IC16ICIke0FNREVQX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FNREVQX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfVFJVRX0iICYmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ0FTX1RSVUV9IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NBU19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NBU1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDQVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke01BSU5UQUlORVJfTU9ERV9UUlVFfSIgJiYgdGVzdCAteiAiJHtNQUlOVEFJTkVSX01PREVfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVSX01PREVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTUFJTlRBSU5FUl9NT0RFXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtURVNUU1VCRElSX1RSVUV9IiAmJiB0ZXN0IC16ICIke1RFU1RTVUJESVJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJURVNUU1VCRElSXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlRFU1RTVUJESVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke01JUFNfVFJVRX0iICYmIHRlc3QgLXogIiR7TUlQU19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk1JUFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTUlQU1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7U1BBUkNfVFJVRX0iICYmIHRlc3QgLXogIiR7U1BBUkNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTUEFSQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJTUEFSQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4NlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9GUkVFQlNEX1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9GUkVFQlNEX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9XSU4zMl9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfV0lOMzJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfV0lOMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X1dJTjMyXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfV0lONjRfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X1dJTjY0X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X1dJTjY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9XSU42NFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X0RBUldJTl9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfREFSV0lOX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X0RBUldJTlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtBTFBIQV9UUlVFfSIgJiYgdGVzdCAteiAiJHtBTFBIQV9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFMUEhBXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFMUEhBXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtJQTY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke0lBNjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJJQTY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIklBNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke00zMlJfVFJVRX0iICYmIHRlc3QgLXogIiR7TTMyUl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk0zMlJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTTMyUlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TTY4S19UUlVFfSIgJiYgdGVzdCAteiAiJHtNNjhLX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTTY4S1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNNjhLXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQoraWYgdGVzdCAteiAiJHtNT1hJRV9UUlVFfSIgJiYgdGVzdCAteiAiJHtNT1hJRV9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1PWElFXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQT1dFUlBDXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfQUlYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfQUlYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19BSVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19BSVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfREFSV0lOX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfREFSV0lOX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfRlJFRUJTRF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0ZSRUVCU0RfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtBUk1fVFJVRX0iICYmIHRlc3QgLXogIiR7QVJNX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQVJNXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFSTVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7QVZSMzJfVFJVRX0iICYmIHRlc3QgLXogIiR7QVZSMzJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJBVlIzMlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBVlIzMlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TElCRkZJX0NSSVNfVFJVRX0iICYmIHRlc3QgLXogIiR7TElCRkZJX0NSSVNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJMSUJGRklfQ1JJU1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJMSUJGRklfQ1JJU1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7RlJWX1RSVUV9IiAmJiB0ZXN0IC16ICIke0ZSVl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkZSVlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJGUlZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1MzOTBfVFJVRX0iICYmIHRlc3QgLXogIiR7UzM5MF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlMzOTBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUzM5MFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2XzY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl82NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl82NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1NIX1RSVUV9IiAmJiB0ZXN0IC16ICIke1NIX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiU0hcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiU0hcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1NINjRfVFJVRX0iICYmIHRlc3QgLXogIiR7U0g2NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlNINjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiU0g2NFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UEFfTElOVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UEFfTElOVVhfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQQV9MSU5VWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQQV9MSU5VWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UEFfSFBVWF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQQV9IUFVYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUEFfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQQV9IUFVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQQTY0X0hQVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UEE2NF9IUFVYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUEE2NF9IUFVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBBNjRfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIAoraWYgdGVzdCAteiAiJHtGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUV9IiAmJiB0ZXN0IC16ICIke0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQoraWYgdGVzdCAteiAiJHtGRklfREVCVUdfVFJVRX0iICYmIHRlc3QgLXogIiR7RkZJX0RFQlVHX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiRkZJX0RFQlVHXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQogCi06ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9Cis6ICIke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfSIKIGFjX3dyaXRlX2ZhaWw9MAogYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKIGFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCkBAIC0xMjc2Nyw2ICsxNTAzMCw3IEBACiBJRlM9IiAiIgkkYXNfbmwiCiAKICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CiBjYXNlICQwIGluICMoKAogICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CiAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTEyODEyLDE5ICsxNTA3NiwxOSBAQAogKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAogCiAKLSMgYXNfZm5fZXJyb3IgRVJST1IgW0xJTkVOTyBMT0dfRkRdCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJlCiAjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKLSMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgogYXNfZm5fZXJyb3IgKCkKIHsKLSAgYXNfc3RhdHVzPSQ/OyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKLSAgaWYgdGVzdCAiJDMiOyB0aGVuCi0gICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMiJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMSIgPiYkMworICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7IHRoZW4KKyAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CiAgIGZpCi0gICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMSIgPiYyCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMiIgPiYyCiAgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwogfSAjIGFzX2ZuX2Vycm9yCiAKQEAgLTEzMDIwLDcgKzE1Mjg0LDcgQEAKICAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCiAgICAgZG9uZQogICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKLSAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKIAogCiB9ICMgYXNfZm5fbWtkaXJfcApAQCAtMTMwNzMsOCArMTUzMzcsOCBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgbGliZmZpICRhc19tZSAzLjAuMTByYzAsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjExLCB3aGljaCB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKICAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCkBAIC0xMzEzNywxNyArMTU0MDEsMTcgQEAKIENvbmZpZ3VyYXRpb24gY29tbWFuZHM6CiAkY29uZmlnX2NvbW1hbmRzCiAKLVJlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sPi4iCitSZXBvcnQgYnVncyB0byA8aHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzPi4iCiAKIF9BQ0VPRgogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLWxpYmZmaSBjb25maWcuc3RhdHVzIDMuMC4xMHJjMAotY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1LAorbGliZmZpIGNvbmZpZy5zdGF0dXMgMy4wLjExCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCi1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTEzMTY1LDExICsxNTQyOSwxNiBAQAogd2hpbGUgdGVzdCAkIyAhPSAwCiBkbwogICBjYXNlICQxIGluCi0gIC0tKj0qKQorICAtLSo9PyopCiAgICAgYWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKICAgICBhY19vcHRhcmc9YGV4cHIgIlgkMSIgOiAnWFtePV0qPVwoLipcKSdgCiAgICAgYWNfc2hpZnQ9OgogICAgIDs7CisgIC0tKj0pCisgICAgYWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKKyAgICBhY19vcHRhcmc9CisgICAgYWNfc2hpZnQ9OgorICAgIDs7CiAgICopCiAgICAgYWNfb3B0aW9uPSQxCiAgICAgYWNfb3B0YXJnPSQyCkBAIC0xMzE5MSw2ICsxNTQ2MCw3IEBACiAgICAgJGFjX3NoaWZ0CiAgICAgY2FzZSAkYWNfb3B0YXJnIGluCiAgICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKKyAgICAnJykgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgZmlsZSBhcmd1bWVudCIgOzsKICAgICBlc2FjCiAgICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNfb3B0YXJnJyIKICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKQEAgLTEzMjAzLDcgKzE1NDczLDcgQEAKICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKICAgLS1oZSB8IC0taCkKICAgICAjIENvbmZsaWN0IGJldHdlZW4gLS1oZWxwIGFuZCAtLWhlYWRlcgotICAgIGFzX2ZuX2Vycm9yICJhbWJpZ3VvdXMgb3B0aW9uOiBcYCQxJworICAgIGFzX2ZuX2Vycm9yICQ/ICJhbWJpZ3VvdXMgb3B0aW9uOiBcYCQxJwogVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iOzsKICAgLS1oZWxwIHwgLS1oZWwgfCAtaCApCiAgICAgJGFzX2VjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgOzsKQEAgLTEzMjEyLDcgKzE1NDgyLDcgQEAKICAgICBhY19jc19zaWxlbnQ9OiA7OwogCiAgICMgVGhpcyBpcyBhbiBlcnJvci4KLSAgLSopIGFzX2ZuX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJworICAtKikgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb246IFxgJDEnCiBUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgOzsKIAogICAqKSBhc19mbl9hcHBlbmQgYWNfY29uZmlnX3RhcmdldHMgIiAkMSIKQEAgLTEzMjU2LDYgKzE1NTI2LDE0IEBACiAjCiAjIElOSVQtQ09NTUFORFMKICMKK2F4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXI9IiRzcmNkaXIiICAgICAgICAgICAgICAgICAgICAjICRzcmNkaXIKK2F4X2VuYWJsZV9idWlsZGRpcl9ob3N0PSIkSE9TVCIgICAgICAgICAgICAgICAgICAgICAgICAjICRIT1NUIC8gJGhvc3QKK2F4X2VuYWJsZV9idWlsZGRpcl92ZXJzaW9uPSIkVkVSU0lPTiIgICAgICAgICAgICAgICAgICAjICRWRVJTSU9OCitheF9lbmFibGVfYnVpbGRkaXJfcGFja2FnZT0iJFBBQ0tBR0UiICAgICAgICAgICAgICAgICAgIyAkUEFDS0FHRQorYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIiICMgJEFVWAorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiICAgICAgICMgJFNFRAorYXhfZW5hYmxlX2J1aWxkZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyIiAgICAgICAgICAgICAgICMgJFNVQgorCiBBTURFUF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiCiAKIApAQCAtMTMyNjYsMTMxICsxNTU0NCwxNTQgQEAKIHNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKIGRvdWJsZV9xdW90ZV9zdWJzdD0nJGRvdWJsZV9xdW90ZV9zdWJzdCcKIGRlbGF5X3ZhcmlhYmxlX3N1YnN0PSckZGVsYXlfdmFyaWFibGVfc3Vic3QnCi1tYWNyb192ZXJzaW9uPSdgJEVDSE8gIlgkbWFjcm9fdmVyc2lvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbWFjcm9fcmV2aXNpb249J2AkRUNITyAiWCRtYWNyb19yZXZpc2lvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX3NoYXJlZD0nYCRFQ0hPICJYJGVuYWJsZV9zaGFyZWQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9zdGF0aWM9J2AkRUNITyAiWCRlbmFibGVfc3RhdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1waWNfbW9kZT0nYCRFQ0hPICJYJHBpY19tb2RlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZmFzdF9pbnN0YWxsPSdgJEVDSE8gIlgkZW5hYmxlX2Zhc3RfaW5zdGFsbCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaG9zdF9hbGlhcz0nYCRFQ0hPICJYJGhvc3RfYWxpYXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhvc3Q9J2AkRUNITyAiWCRob3N0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ob3N0X29zPSdgJEVDSE8gIlgkaG9zdF9vcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYnVpbGRfYWxpYXM9J2AkRUNITyAiWCRidWlsZF9hbGlhcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYnVpbGQ9J2AkRUNITyAiWCRidWlsZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYnVpbGRfb3M9J2AkRUNITyAiWCRidWlsZF9vcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotU0VEPSdgJEVDSE8gIlgkU0VEIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1Yc2VkPSdgJEVDSE8gIlgkWHNlZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotR1JFUD0nYCRFQ0hPICJYJEdSRVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUVHUkVQPSdgJEVDSE8gIlgkRUdSRVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUZHUkVQPSdgJEVDSE8gIlgkRkdSRVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUxEPSdgJEVDSE8gIlgkTEQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU5NPSdgJEVDSE8gIlgkTk0iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUxOX1M9J2AkRUNITyAiWCRMTl9TIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1tYXhfY21kX2xlbj0nYCRFQ0hPICJYJG1heF9jbWRfbGVuIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hY19vYmpleHQ9J2AkRUNITyAiWCRhY19vYmpleHQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4ZWV4dD0nYCRFQ0hPICJYJGV4ZWV4dCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfdW5zZXQ9J2AkRUNITyAiWCRsdF91bnNldCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfU1AyTkw9J2AkRUNITyAiWCRsdF9TUDJOTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfTkwyU1A9J2AkRUNITyAiWCRsdF9OTDJTUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcmVsb2FkX2ZsYWc9J2AkRUNITyAiWCRyZWxvYWRfZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcmVsb2FkX2NtZHM9J2AkRUNITyAiWCRyZWxvYWRfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotT0JKRFVNUD0nYCRFQ0hPICJYJE9CSkRVTVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIlgkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIlgkZmlsZV9tYWdpY19jbWQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUFSPSdgJEVDSE8gIlgkQVIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUFSX0ZMQUdTPSdgJEVDSE8gIlgkQVJfRkxBR1MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVNUUklQPSdgJEVDSE8gIlgkU1RSSVAiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVJBTkxJQj0nYCRFQ0hPICJYJFJBTkxJQiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiWCRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICJYJG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9hcmNoaXZlX2NtZHM9J2AkRUNITyAiWCRvbGRfYXJjaGl2ZV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1DQz0nYCRFQ0hPICJYJENDIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1DRkxBR1M9J2AkRUNITyAiWCRDRkxBR1MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWNvbXBpbGVyPSdgJEVDSE8gIlgkY29tcGlsZXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUdDQz0nYCRFQ0hPICJYJEdDQyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiWCRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vYmpkaXI9J2AkRUNITyAiWCRvYmpkaXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVNIRUxMPSdgJEVDSE8gIlgkU0hFTEwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUVDSE89J2AkRUNITyAiWCRFQ0hPIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1NQUdJQ19DTUQ9J2AkRUNITyAiWCRNQUdJQ19DTUQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIlgkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICJYJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1uZWVkX2xvY2tzPSdgJEVDSE8gIlgkbmVlZF9sb2NrcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotRFNZTVVUSUw9J2AkRUNITyAiWCREU1lNVVRJTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTk1FRElUPSdgJEVDSE8gIlgkTk1FRElUIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1MSVBPPSdgJEVDSE8gIlgkTElQTyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotT1RPT0w9J2AkRUNITyAiWCRPVE9PTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotT1RPT0w2ND0nYCRFQ0hPICJYJE9UT09MNjQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpYmV4dD0nYCRFQ0hPICJYJGxpYmV4dCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc2hyZXh0X2NtZHM9J2AkRUNITyAiWCRzaHJleHRfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXh0cmFjdF9leHBzeW1zX2NtZHM9J2AkRUNITyAiWCRleHRyYWN0X2V4cHN5bXNfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYXJjaGl2ZV9jbWRzX25lZWRfbGM9J2AkRUNITyAiWCRhcmNoaXZlX2NtZHNfbmVlZF9sYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz0nYCRFQ0hPICJYJGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nYCRFQ0hPICJYJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9J2AkRUNITyAiWCR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotY29tcGlsZXJfbmVlZHNfb2JqZWN0PSdgJEVDSE8gIlgkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSdgJEVDSE8gIlgkb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHM9J2AkRUNITyAiWCRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIlgkYXJjaGl2ZV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hcmNoaXZlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIlgkYXJjaGl2ZV9leHBzeW1fY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbW9kdWxlX2NtZHM9J2AkRUNITyAiWCRtb2R1bGVfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbW9kdWxlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIlgkbW9kdWxlX2V4cHN5bV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi13aXRoX2dudV9sZD0nYCRFQ0hPICJYJHdpdGhfZ251X2xkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hbGxvd191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICJYJGFsbG93X3VuZGVmaW5lZF9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ub191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICJYJG5vX3VuZGVmaW5lZF9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgJEVDSE8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nYCRFQ0hPICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9J2AkRUNITyAiWCRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9kaXJlY3Q9J2AkRUNITyAiWCRoYXJkY29kZV9kaXJlY3QiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT0nYCRFQ0hPICJYJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbWludXNfTD0nYCRFQ0hPICJYJGhhcmRjb2RlX21pbnVzX0wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiWCRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiWCRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWluaGVyaXRfcnBhdGg9J2AkRUNITyAiWCRpbmhlcml0X3JwYXRoIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIlgkbGlua19hbGxfZGVwbGlicyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICJYJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICJYJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICJYJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICJYJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1wcmVsaW5rX2NtZHM9J2AkRUNITyAiWCRwcmVsaW5rX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIlgkZmlsZV9saXN0X3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIlgkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICJYJG5lZWRfbGliX3ByZWZpeCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbmVlZF92ZXJzaW9uPSdgJEVDSE8gIlgkbmVlZF92ZXJzaW9uIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi12ZXJzaW9uX3R5cGU9J2AkRUNITyAiWCR2ZXJzaW9uX3R5cGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXJ1bnBhdGhfdmFyPSdgJEVDSE8gIlgkcnVucGF0aF92YXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXNobGlicGF0aF92YXI9J2AkRUNITyAiWCRzaGxpYnBhdGhfdmFyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9J2AkRUNITyAiWCRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpYm5hbWVfc3BlYz0nYCRFQ0hPICJYJGxpYm5hbWVfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbGlicmFyeV9uYW1lc19zcGVjPSdgJEVDSE8gIlgkbGlicmFyeV9uYW1lc19zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zb25hbWVfc3BlYz0nYCRFQ0hPICJYJHNvbmFtZV9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkcG9zdGluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maW5pc2hfY21kcz0nYCRFQ0hPICJYJGZpbmlzaF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maW5pc2hfZXZhbD0nYCRFQ0hPICJYJGZpbmlzaF9ldmFsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9pbnRvX2xpYnM9J2AkRUNITyAiWCRoYXJkY29kZV9pbnRvX2xpYnMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICJYJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiWCRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfYWN0aW9uPSdgJEVDSE8gIlgkaGFyZGNvZGVfYWN0aW9uIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZGxvcGVuPSdgJEVDSE8gIlgkZW5hYmxlX2Rsb3BlbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Rsb3Blbl9zZWxmPSdgJEVDSE8gIlgkZW5hYmxlX2Rsb3Blbl9zZWxmIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPSdgJEVDSE8gIlgkZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX3N0cmlwbGliPSdgJEVDSE8gIlgkb2xkX3N0cmlwbGliIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zdHJpcGxpYj0nYCRFQ0hPICJYJHN0cmlwbGliIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittYWNyb192ZXJzaW9uPSdgJEVDSE8gIiRtYWNyb192ZXJzaW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21hY3JvX3JldmlzaW9uPSdgJEVDSE8gIiRtYWNyb19yZXZpc2lvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfc2hhcmVkPSdgJEVDSE8gIiRlbmFibGVfc2hhcmVkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9zdGF0aWM9J2AkRUNITyAiJGVuYWJsZV9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcGljX21vZGU9J2AkRUNITyAiJHBpY19tb2RlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9mYXN0X2luc3RhbGw9J2AkRUNITyAiJGVuYWJsZV9mYXN0X2luc3RhbGwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworU0hFTEw9J2AkRUNITyAiJFNIRUxMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0VDSE89J2AkRUNITyAiJEVDSE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworUEFUSF9TRVBBUkFUT1I9J2AkRUNITyAiJFBBVEhfU0VQQVJBVE9SIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hvc3RfYWxpYXM9J2AkRUNITyAiJGhvc3RfYWxpYXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaG9zdD0nYCRFQ0hPICIkaG9zdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitob3N0X29zPSdgJEVDSE8gIiRob3N0X29zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2J1aWxkX2FsaWFzPSdgJEVDSE8gIiRidWlsZF9hbGlhcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitidWlsZD0nYCRFQ0hPICIkYnVpbGQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYnVpbGRfb3M9J2AkRUNITyAiJGJ1aWxkX29zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1NFRD0nYCRFQ0hPICIkU0VEIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1hzZWQ9J2AkRUNITyAiJFhzZWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworR1JFUD0nYCRFQ0hPICIkR1JFUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitFR1JFUD0nYCRFQ0hPICIkRUdSRVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRkdSRVA9J2AkRUNITyAiJEZHUkVQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0xEPSdgJEVDSE8gIiRMRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitOTT0nYCRFQ0hPICIkTk0iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTE5fUz0nYCRFQ0hPICIkTE5fUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittYXhfY21kX2xlbj0nYCRFQ0hPICIkbWF4X2NtZF9sZW4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYWNfb2JqZXh0PSdgJEVDSE8gIiRhY19vYmpleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3JlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCityZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0FSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1JBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9hcmNoaXZlX2NtZHM9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPSdgJEVDSE8gIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQ0M9J2AkRUNITyAiJENDIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0NGTEFHUz0nYCRFQ0hPICIkQ0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2NvbXBpbGVyPSdgJEVDSE8gIiRjb21waWxlciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitHQ0M9J2AkRUNITyAiJEdDQyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCituZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK05NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0xJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworT1RPT0w9J2AkRUNITyAiJE9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK09UT09MNjQ9J2AkRUNITyAiJE9UT09MNjQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGliZXh0PSdgJEVDSE8gIiRsaWJleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hyZXh0X2NtZHM9J2AkRUNITyAiJHNocmV4dF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4dHJhY3RfZXhwc3ltc19jbWRzPSdgJEVDSE8gIiRleHRyYWN0X2V4cHN5bXNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithcmNoaXZlX2NtZHNfbmVlZF9sYz0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzX25lZWRfbGMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz0nYCRFQ0hPICIkZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9J2AkRUNITyAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYCRFQ0hPICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworY29tcGlsZXJfbmVlZHNfb2JqZWN0PSdgJEVDSE8gIiRjb21waWxlcl9uZWVkc19vYmplY3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcz0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZV9leHBzeW1fY21kcz0nYCRFQ0hPICIkYXJjaGl2ZV9leHBzeW1fY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittb2R1bGVfY21kcz0nYCRFQ0hPICIkbW9kdWxlX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbW9kdWxlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIiRtb2R1bGVfZXhwc3ltX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJword2l0aF9nbnVfbGQ9J2AkRUNITyAiJHdpdGhfZ251X2xkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FsbG93X3VuZGVmaW5lZF9mbGFnPSdgJEVDSE8gIiRhbGxvd191bmRlZmluZWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitub191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICIkbm9fdW5kZWZpbmVkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYCRFQ0hPICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSdgJEVDSE8gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2RpcmVjdD0nYCRFQ0hPICIkaGFyZGNvZGVfZGlyZWN0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT0nYCRFQ0hPICIkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX21pbnVzX0w9J2AkRUNITyAiJGhhcmRjb2RlX21pbnVzX0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbmVlZF92ZXJzaW9uPSdgJEVDSE8gIiRuZWVkX3ZlcnNpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwordmVyc2lvbl90eXBlPSdgJEVDSE8gIiR2ZXJzaW9uX3R5cGUiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcnVucGF0aF92YXI9J2AkRUNITyAiJHJ1bnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NobGlicGF0aF92YXI9J2AkRUNITyAiJHNobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSdgJEVDSE8gIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGlibmFtZV9zcGVjPSdgJEVDSE8gIiRsaWJuYW1lX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGlicmFyeV9uYW1lc19zcGVjPSdgJEVDSE8gIiRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc29uYW1lX3NwZWM9J2AkRUNITyAiJHNvbmFtZV9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2luc3RhbGxfb3ZlcnJpZGVfbW9kZT0nYCRFQ0hPICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJHBvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRwb3N0dW5pbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmluaXNoX2NtZHM9J2AkRUNITyAiJGZpbmlzaF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbmlzaF9ldmFsPSdgJEVDSE8gIiRmaW5pc2hfZXZhbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9pbnRvX2xpYnM9J2AkRUNITyAiJGhhcmRjb2RlX2ludG9fbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfYWN0aW9uPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Rsb3Blbj0nYCRFQ0hPICIkZW5hYmxlX2Rsb3BlbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZGxvcGVuX3NlbGY9J2AkRUNITyAiJGVuYWJsZV9kbG9wZW5fc2VsZiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPSdgJEVDSE8gIiRlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9zdHJpcGxpYj0nYCRFQ0hPICIkb2xkX3N0cmlwbGliIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3N0cmlwbGliPSdgJEVDSE8gIiRzdHJpcGxpYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAKIExUQ0M9JyRMVENDJwogTFRDRkxBR1M9JyRMVENGTEFHUycKIGNvbXBpbGVyPSckY29tcGlsZXJfREVGQVVMVCcKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCitcJDEKK19MVEVDSE9fRU9GJworfQorCiAjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgotZm9yIHZhciBpbiBTRUQgXAorZm9yIHZhciBpbiBTSEVMTCBcCitFQ0hPIFwKK1BBVEhfU0VQQVJBVE9SIFwKK1NFRCBcCiBHUkVQIFwKIEVHUkVQIFwKIEZHUkVQIFwKQEAgLTEzNDAzLDggKzE1NzA0LDEzIEBACiBPQkpEVU1QIFwKIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKIGZpbGVfbWFnaWNfY21kIFwKK2ZpbGVfbWFnaWNfZ2xvYiBcCit3YW50X25vY2FzZWdsb2IgXAorRExMVE9PTCBcCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCiBBUiBcCiBBUl9GTEFHUyBcCithcmNoaXZlcl9saXN0X3NwZWMgXAogU1RSSVAgXAogUkFOTElCIFwKIENDIFwKQEAgLTEzNDE0LDE0ICsxNTcyMCwxNCBAQAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi1TSEVMTCBcCi1FQ0hPIFwKK25tX2ZpbGVfbGlzdF9zcGVjIFwKIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLWx0X3Byb2dfY29tcGlsZXJfd2wgXAogbHRfcHJvZ19jb21waWxlcl9waWMgXAorbHRfcHJvZ19jb21waWxlcl93bCBcCiBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCiBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCiBuZWVkX2xvY2tzIFwKK01BTklGRVNUX1RPT0wgXAogRFNZTVVUSUwgXAogTk1FRElUIFwKIExJUE8gXApAQCAtMTM0MzUsOSArMTU3NDEsNyBAQAogYWxsb3dfdW5kZWZpbmVkX2ZsYWcgXAogbm9fdW5kZWZpbmVkX2ZsYWcgXAogaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotZml4X3NyY2ZpbGVfcGF0aCBcCiBleGNsdWRlX2V4cHN5bXMgXAogaW5jbHVkZV9leHBzeW1zIFwKIGZpbGVfbGlzdF9zcGVjIFwKQEAgLTEzNDQ1LDEyICsxNTc0OSwxMyBAQAogbGlibmFtZV9zcGVjIFwKIGxpYnJhcnlfbmFtZXNfc3BlYyBcCiBzb25hbWVfc3BlYyBcCitpbnN0YWxsX292ZXJyaWRlX21vZGUgXAogZmluaXNoX2V2YWwgXAogb2xkX3N0cmlwbGliIFwKIHN0cmlwbGliOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC0xMzQ3MiwxNCArMTU3NzcsMTUgQEAKIG1vZHVsZV9leHBzeW1fY21kcyBcCiBleHBvcnRfc3ltYm9sc19jbWRzIFwKIHByZWxpbmtfY21kcyBcCitwb3N0bGlua19jbWRzIFwKIHBvc3RpbnN0YWxsX2NtZHMgXAogcG9zdHVuaW5zdGFsbF9jbWRzIFwKIGZpbmlzaF9jbWRzIFwKIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyBcCiBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYzsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtMTM0ODcsMTIgKzE1NzkzLDYgQEAKICAgICBlc2FjCiBkb25lCiAKLSMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCi1jYXNlIFwkbHRfRUNITyBpbgotKidcXFwkMCAtLWZhbGxiYWNrLWVjaG8iJykgIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXCQwIC0tZmFsbGJhY2stZWNobyJcJC9cJDAgLS1mYWxsYmFjay1lY2hvIi8nXGAKLSAgOzsKLWVzYWMKLQogYWNfYXV4X2Rpcj0nJGFjX2F1eF9kaXInCiB4c2lfc2hlbGw9JyR4c2lfc2hlbGwnCiBsdF9zaGVsbF9hcHBlbmQ9JyRsdF9zaGVsbF9hcHBlbmQnCkBAIC0xMzUyMyw2ICsxNTgyMyw3IEBACiBkbwogICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluCiAgICAgImZmaWNvbmZpZy5oIikgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyBmZmljb25maWcuaCIgOzsKKyAgICAiYnVpbGRpciIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBidWlsZGlyIiA7OwogICAgICJkZXBmaWxlcyIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZXBmaWxlcyIgOzsKICAgICAibGlidG9vbCIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBsaWJ0b29sIiA7OwogICAgICJpbmNsdWRlIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGluY2x1ZGUiIDs7CkBAIC0xMzUzNyw3ICsxNTgzOCw3IEBACiAgICAgImluY2x1ZGUvZmZpX2NvbW1vbi5oIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTIGluY2x1ZGUvZmZpX2NvbW1vbi5oOmluY2x1ZGUvZmZpX2NvbW1vbi5oIiA7OwogICAgICJmZmljb25maWcucHkiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZmZpY29uZmlnLnB5IiA7OwogCi0gICopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OworICAqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKICAgZXNhYwogZG9uZQogCkBAIC0xMzU2MSw5ICsxNTg2MiwxMCBAQAogIyBhZnRlciBpdHMgY3JlYXRpb24gYnV0IGJlZm9yZSBpdHMgbmFtZSBoYXMgYmVlbiBhc3NpZ25lZCB0byBgJHRtcCcuCiAkZGVidWcgfHwKIHsKLSAgdG1wPQorICB0bXA9IGFjX3RtcD0KICAgdHJhcCAnZXhpdF9zdGF0dXM9JD8KLSAgeyB0ZXN0IC16ICIkdG1wIiB8fCB0ZXN0ICEgLWQgIiR0bXAiIHx8IHJtIC1mciAiJHRtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMKKyAgOiAiJHthY190bXA6PSR0bXB9IgorICB7IHRlc3QgISAtZCAiJGFjX3RtcCIgfHwgcm0gLWZyICIkYWNfdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cwogJyAwCiAgIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1CiB9CkBAIC0xMzU3MSwxMiArMTU4NzMsMTMgQEAKIAogewogICB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKLSAgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIKKyAgdGVzdCAtZCAiJHRtcCIKIH0gIHx8CiB7CiAgIHRtcD0uL2NvbmYkJC0kUkFORE9NCiAgICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0bXAiKQotfSB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUKK30gfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1CithY190bXA9JHRtcAogCiAjIFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCiAjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgpAQCAtMTM1OTMsMTIgKzE1ODk2LDEyIEBACiBmaQogYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJhXHJiIiB9JyA8L2Rldi9udWxsIDI+L2Rldi9udWxsYAogaWYgdGVzdCAiJGFjX2NzX2F3a19jciIgPSAiYSR7YWNfY3J9YiI7IHRoZW4KLSAgYWNfY3NfYXdrX2NyPSdccicKKyAgYWNfY3NfYXdrX2NyPSdcXHInCiBlbHNlCiAgIGFjX2NzX2F3a19jcj0kYWNfY3IKIGZpCiAKLWVjaG8gJ0JFR0lOIHsnID4iJHRtcC9zdWJzMS5hd2siICYmCitlY2hvICdCRUdJTiB7JyA+IiRhY190bXAvc3ViczEuYXdrIiAmJgogX0FDRU9GCiAKIApAQCAtMTM2MDcsMTggKzE1OTEwLDE4IEBACiAgIGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IHNlZCAncy8uKi8mISQmJGFjX2RlbGltLycgJiYKICAgZWNobyAiX0FDRU9GIgogfSA+Y29uZiQkc3Vicy5zaCB8fAotICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1Ci1hY19kZWxpbV9udW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJyQnYAorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CithY19kZWxpbV9udW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYAogYWNfZGVsaW09JyUhXyEjICcKIGZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSA6OyBkbwogICAuIC4vY29uZiQkc3Vicy5zaCB8fAotICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CiAKICAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25mJCRzdWJzLmF3ayB8IGdyZXAgLWMgWGAKICAgaWYgdGVzdCAkYWNfZGVsaW1fbiA9ICRhY19kZWxpbV9udW07IHRoZW4KICAgICBicmVhawogICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CiAgIGVsc2UKICAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgogICBmaQpAQCAtMTM2MjYsNyArMTU5MjksNyBAQAogcm0gLWYgY29uZiQkc3Vicy5zaAogCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLWNhdCA+PiJcJHRtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKIF9BQ0VPRgogc2VkIC1uICcKIGgKQEAgLTEzNjc0LDcgKzE1OTc3LDcgQEAKIHJtIC1mIGNvbmYkJHN1YnMuYXdrCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIF9BQ0FXSwotY2F0ID4+IlwkdG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sgJiYKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCiAgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxCiAgIEZTID0gIgciCiAKQEAgLTEzNzA2LDIxICsxNjAwOSwyOSBAQAogICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFjX2NzX2F3a19jci9nIgogZWxzZQogICBjYXQKLWZpIDwgIiR0bXAvc3ViczEuYXdrIiA+ICIkdG1wL3N1YnMuYXdrIiBcCi0gIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZpbGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKK2ZpIDwgIiRhY190bXAvc3ViczEuYXdrIiA+ICIkYWNfdG1wL3N1YnMuYXdrIiBcCisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGZpbGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKIF9BQ0VPRgogCi0jIFZQQVRIIG1heSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlICQoc3JjZGlyKSwKLSMgJHtzcmNkaXJ9IGFuZCBAc3JjZGlyQCBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCisjIFZQQVRIIG1heSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlIHNvbGUgJChzcmNkaXIpLAorIyAke3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAogIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKICMgKGFjdHVhbGx5IHdlIGxlYXZlIGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KIGlmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuCi0gIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj0vewotcy86KlwkKHNyY2Rpcik6Ki86Lwotcy86Klwke3NyY2Rpcn06Ki86Lwotcy86KkBzcmNkaXJAOiovOi8KLXMvXlwoW149XSo9WwkgXSpcKToqL1wxLworICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9WwkgXSoveworaAorcy8vLworcy9eLzovCitzL1sJIF0qJC86Lworcy86XCQoc3JjZGlyKTovOi9nCitzLzpcJHtzcmNkaXJ9Oi86L2cKK3MvOkBzcmNkaXJAOi86L2cKK3MvXjoqLy8KIHMvOiokLy8KK3gKK3MvXCg9WwkgXSpcKS4qL1wxLworRworcy9cbi8vCiBzL15bXj1dKj1bCSBdKiQvLwogfScKIGZpCkBAIC0xMzczMiw3ICsxNjA0Myw3IEBACiAjIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0hFQURFUlMuCiAjIFRoaXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIE1ha2VmaWxlJy4KIGlmIHRlc3QgLW4gIiRDT05GSUdfSEVBREVSUyI7IHRoZW4KLWNhdCA+IiR0bXAvZGVmaW5lcy5hd2siIDw8XF9BQ0FXSyB8fAorY2F0ID4iJGFjX3RtcC9kZWZpbmVzLmF3ayIgPDxcX0FDQVdLIHx8CiBCRUdJTiB7CiBfQUNFT0YKIApAQCAtMTM3NDQsMTEgKzE2MDU1LDExIEBACiAjIGhhbmRsaW5nIG9mIGxvbmcgbGluZXMuCiBhY19kZWxpbT0nJSFfISMgJwogZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIDo7IGRvCi0gIGFjX3Q9YHNlZCAtbiAiLyRhY19kZWxpbS9wIiBjb25mZGVmcy5oYAotICBpZiB0ZXN0IC16ICIkYWNfdCI7IHRoZW4KKyAgYWNfdHQ9YHNlZCAtbiAiLyRhY19kZWxpbS9wIiBjb25mZGVmcy5oYAorICBpZiB0ZXN0IC16ICIkYWNfdHQiOyB0aGVuCiAgICAgYnJlYWsKICAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KLSAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX0hFQURFUlMiICIkTElORU5PIiA1CiAgIGVsc2UKICAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgogICBmaQpAQCAtMTM4MzMsNyArMTYxNDQsNyBAQAogX0FDQVdLCiBfQUNFT0YKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKLSAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBzZXR1cCBjb25maWcgaGVhZGVycyBtYWNoaW5lcnkiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQogZmkgIyB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiCiAKIApAQCAtMTM4NDYsNyArMTYxNTcsNyBAQAogICBlc2FjCiAgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCiAgIDpbRkhMXSo6Kik7OwotICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgImludmFsaWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsKKyAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJTkVOTyIgNTs7CiAgIDpbRkhdLSkgYWNfdGFnPS06LTs7CiAgIDpbRkhdKikgYWNfdGFnPSRhY190YWc6JGFjX3RhZy5pbjs7CiAgIGVzYWMKQEAgLTEzODY1LDcgKzE2MTc2LDcgQEAKICAgICBmb3IgYWNfZgogICAgIGRvCiAgICAgICBjYXNlICRhY19mIGluCi0gICAgICAtKSBhY19mPSIkdG1wL3N0ZGluIjs7CisgICAgICAtKSBhY19mPSIkYWNfdG1wL3N0ZGluIjs7CiAgICAgICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRoZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3VyY2UgdHJlZQogCSAjIChpZiB0aGUgcGF0aCBpcyBub3QgYWJzb2x1dGUpLiAgVGhlIGFic29sdXRlIHBhdGggY2Fubm90IGJlIERPUy1zdHlsZSwKIAkgIyBiZWNhdXNlICRhY19mIGNhbm5vdCBjb250YWluIGA6Jy4KQEAgLTEzODc0LDcgKzE2MTg1LDcgQEAKIAkgICBbXFwvJF0qKSBmYWxzZTs7CiAJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OwogCSAgIGVzYWMgfHwKLQkgICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogXGAkYWNfZiciICIkTElORU5PIiA1OzsKKwkgICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OwogICAgICAgZXNhYwogICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYwogICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKQEAgLTEzOTAwLDggKzE2MjExLDggQEAKICAgICBlc2FjCiAKICAgICBjYXNlICRhY190YWcgaW4KLSAgICAqOi06KiB8ICo6LSkgY2F0ID4iJHRtcC9zdGRpbiIgXAotICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1IDs7CisgICAgKjotOiogfCAqOi0pIGNhdCA+IiRhY190bXAvc3RkaW4iIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7OwogICAgIGVzYWMKICAgICA7OwogICBlc2FjCkBAIC0xNDAzNywyMyArMTYzNDgsMjQgQEAKIHMmQE1LRElSX1BAJiRhY19NS0RJUl9QJjt0IHQKICRhY19kYXRhcm9vdGRpcl9oYWNrCiAiCi1ldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkdG1wL3N1YnMuYXdrIiA+JHRtcC9vdXQgXAotICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKK2V2YWwgc2VkIFwiXCRhY19zZWRfZXh0cmFcIiAiJGFjX2ZpbGVfaW5wdXRzIiB8ICRBV0sgLWYgIiRhY190bXAvc3Vicy5hd2siIFwKKyAgPiRhY190bXAvb3V0IHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQogCiB0ZXN0IC16ICIkYWNfZGF0YXJvb3RkaXJfaGFjayRhY19kYXRhcm9vdGRpcl9zZWVuIiAmJgotICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJgotICB7IGFjX291dD1gc2VkIC1uICcvXlsJIF0qZGF0YXJvb3RkaXJbCSBdKjoqPS9wJyAiJHRtcC9vdXQiYDsgdGVzdCAteiAiJGFjX291dCI7IH0gJiYKKyAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJGFjX3RtcC9vdXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0gJiYKKyAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgXAorICAgICAgIiRhY190bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuIiA+JjUKK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZCIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicKLXdoaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZC4iID4mMjt9Cit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mMjt9CiAKLSAgcm0gLWYgIiR0bXAvc3RkaW4iCisgIHJtIC1mICIkYWNfdG1wL3N0ZGluIgogICBjYXNlICRhY19maWxlIGluCi0gIC0pIGNhdCAiJHRtcC9vdXQiICYmIHJtIC1mICIkdG1wL291dCI7OwotICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12ICIkdG1wL291dCIgIiRhY19maWxlIjs7CisgIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OworICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7CiAgIGVzYWMgXAotICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgOzsKICAgOkgpCiAgICMKQEAgLTE0MDYyLDIxICsxNjM3NCwyMSBAQAogICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCiAgICAgewogICAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCi0gICAgICAmJiBldmFsICckQVdLIC1mICIkdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIKLSAgICB9ID4iJHRtcC9jb25maWcuaCIgXAotICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1Ci0gICAgaWYgZGlmZiAiJGFjX2ZpbGUiICIkdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiRhY190bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIgorICAgIH0gPiIkYWNfdG1wL2NvbmZpZy5oIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICBpZiBkaWZmICIkYWNfZmlsZSIgIiRhY190bXAvY29uZmlnLmgiID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjY7fQogICAgIGVsc2UKICAgICAgIHJtIC1mICIkYWNfZmlsZSIKLSAgICAgIG12ICIkdG1wL2NvbmZpZy5oIiAiJGFjX2ZpbGUiIFwKLQl8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICAgIG12ICIkYWNfdG1wL2NvbmZpZy5oIiAiJGFjX2ZpbGUiIFwKKwl8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKICAgICBmaQogICBlbHNlCiAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCi0gICAgICAmJiBldmFsICckQVdLIC1mICIkdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAotICAgICAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgLSIgIiRMSU5FTk8iIDUKKyAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiRhY190bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQogICBmaQogIyBDb21wdXRlICIkYWNfZmlsZSIncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCiBfYW1fYXJnPSIkYWNfZmlsZSIKQEAgLTE0MTMwLDE5ICsxNjQ0MiwxOSBAQAogJGFzX2VjaG8gIiRhc19tZTogbGlua2luZyAkYWNfc291cmNlIHRvICRhY19maWxlIiA+JjY7fQogCiAgICAgaWYgdGVzdCAhIC1yICIkYWNfc291cmNlIjsgdGhlbgotICAgICAgYXNfZm5fZXJyb3IgIiRhY19zb3VyY2U6IGZpbGUgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorICAgICAgYXNfZm5fZXJyb3IgJD8gIiRhY19zb3VyY2U6IGZpbGUgbm90IGZvdW5kIiAiJExJTkVOTyIgNQogICAgIGZpCiAgICAgcm0gLWYgIiRhY19maWxlIgogCiAgICAgIyBUcnkgYSByZWxhdGl2ZSBzeW1saW5rLCB0aGVuIGEgaGFyZCBsaW5rLCB0aGVuIGEgY29weS4KLSAgICBjYXNlICRzcmNkaXIgaW4KKyAgICBjYXNlICRhY19zb3VyY2UgaW4KICAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSBhY19yZWxfc291cmNlPSRhY19zb3VyY2UgOzsKIAkqKSBhY19yZWxfc291cmNlPSRhY190b3BfYnVpbGRfcHJlZml4JGFjX3NvdXJjZSA7OwogICAgIGVzYWMKICAgICBsbiAtcyAiJGFjX3JlbF9zb3VyY2UiICIkYWNfZmlsZSIgMj4vZGV2L251bGwgfHwKICAgICAgIGxuICIkYWNfc291cmNlIiAiJGFjX2ZpbGUiIDI+L2Rldi9udWxsIHx8CiAgICAgICBjcCAtcCAiJGFjX3NvdXJjZSIgIiRhY19maWxlIiB8fAotICAgICAgYXNfZm5fZXJyb3IgImNhbm5vdCBsaW5rIG9yIGNvcHkgJGFjX3NvdXJjZSB0byAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgbGluayBvciBjb3B5ICRhY19zb3VyY2UgdG8gJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgIGZpCiAgOzsKICAgOkMpICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY1CkBAIC0xNDE1Miw2ICsxNjQ2NCwxNTAgQEAKIAogCiAgIGNhc2UgJGFjX2ZpbGUkYWNfbW9kZSBpbgorICAgICJidWlsZGlyIjpDKSAgIGFjX3RvcF9zcmNkaXI9IiRheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyIgorICBpZiB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLi4iIDsgdGhlbgorICAgIGlmIHRlc3QgLWYgIiR0b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogc2tpcHBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSAtIGxlZnQgdW50b3VjaGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBsZWZ0IHVudG91Y2hlZCIgPiY2O30KKyAgICBlbHNlCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBub3QgY3JlYXRlZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbm90IGNyZWF0ZWQiID4mNjt9CisgICAgZmkKKyAgZWxzZQorICAgIGlmIHRlc3QgLWYgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIGE9YGdyZXAgIl5WRVJTSU9OICIgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlImAgOyBiPWBncmVwICJeVkVSU0lPTiAiIE1ha2VmaWxlYAorICAgICAgdGVzdCAiJGEiICE9ICIkYiIgJiYgcm0gIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIgorICAgIGZpCisgICAgaWYgdGVzdCAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiIDsgdGhlbgorCWVjaG8gIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIDogJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUuaW4iID4gJHRtcC9jb25mdGVtcC5taworCWVjaG8gIglAIGVjaG8gJ1JFTU9WRUQsLCwnID5cJEAiID4+ICR0bXAvY29uZnRlbXAubWsKKyAgICAgIGV2YWwgIiR7TUFLRS1tYWtlfSAtZiAkdG1wL2NvbmZ0ZW1wLm1rIDI+L2Rldi9udWxsID4vZGV2L251bGwiCisgICAgICBpZiBncmVwICdeUkVNT1ZFRCwsLCcgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA+L2Rldi9udWxsCisgICAgICB0aGVuIHJtICRhY190b3Bfc3JjZGlyL01ha2VmaWxlIDsgZmkKKyAgICAgIGNwICR0bXAvY29uZnRlbXAubWsgJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGVzLm1rfiAgICAgICMjIERFQlVHR0lORworICAgIGZpCisgICAgaWYgdGVzdCAhIC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0ZSB0b3Bfc3JjZGlyL01ha2VmaWxlIGd1ZXNzZWQgZnJvbSBsb2NhbCBNYWtlZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGUgdG9wX3NyY2Rpci9NYWtlZmlsZSBndWVzc2VkIGZyb20gbG9jYWwgTWFrZWZpbGUiID4mNjt9CisgICAgICB4PSdgJyA7IGNhdCA+JHRtcC9jb25mdGVtcC5zZWQgPDxfRU9GCisvXlwkL24KK3gKKy9eXCQvYlMKK3gKKy9cXFxcXCQve0g7ZDt9Cit7SDtzLy4qLy87eDt9CitiTQorOlMKK3gKKy9cXFxcXCQve2g7ZDt9Cit7aDtzLy4qLy87eDt9Cis6TQorcy9cXChcXG5cXCkJL1xcMSAvZworL14JL2QKKy9eWwkgXSpbXFwjXS9kCisvXlZQQVRIICo9L2QKK3MvXnNyY2RpciAqPS4qL3NyY2RpciA9IC4vCitzL150b3Bfc3JjZGlyICo9LiovdG9wX3NyY2RpciA9IC4vCisvWzo9XS8hZAorL15cXC4vZAorLyA9IC9iCisvIC49IC9iCisvOi8hYgorcy86LiovOi8KK3MvIC8gIC9nCitzLyBcXChbYS16XVthLXotXSpbYS16QS1aMC05XVxcKVxcKFsgOl1cXCkvIFxcMSBcXDEtYWxsXFwyL2cKK3MvXlxcKFthLXpdW2Etei1dKlthLXpBLVowLTldXFwpXFwoWyA6XVxcKS9cXDEgXFwxLWFsbFxcMi8KK3MvICAvIC9nCisvXmFsbCBhbGwtYWxsWyA6XS9pXFwKK2FsbC1jb25maWd1cmVkIDogYWxsLWFsbAorcy8gW2EtekEtWjAtOS1dKi1hbGwgW2EtekEtWjAtOS1dKi1hbGwtYWxsLy9nCisvLWFsbC1hbGwvZAorYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiAtYWxsICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIjsgaWYgdGVzdCAiXCRcJG4iIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIy4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggOyBmaSBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IHRlc3QgIlwkXCR1c2UiID0gIlwkXEAiICYmIEJVSUxEPSR4IGVjaG8gIlwkXCRCVUlMRCIgfCB0YWlsIC0xICR4IFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IChjZCAiXCRcJGkiICYmIHRlc3QgISAtZiBjb25maWd1cmUgJiYgXCQoTUFLRSkgXCRcJHVzZSkgfHwgZXhpdDsgZG9uZQorL2Rpc3QtYWxsICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpci9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiBcXFxcXFwKKwk7IGRvIHRlc3QgLWYgIlwkXCRmIiAmJiBtdiAiXCRcJGYiIFwkKFBVQikuIDsgZG9uZSA7IGJyZWFrIDsgZG9uZQorL2Rpc3QtW2EtekEtWjAtOV0qLWFsbCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggLi9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLioiIFxcXFxcXAorCTsgaWYgdGVzdCAiXCRcJGZvdW5kIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKKy9kaXN0Y2xlYW4tYWxsICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpci9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgLWFsbCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCAoYWxsIGxvY2FsIGJ1aWxkcykiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIiMgcm0gLXIgXCRcJGkiOyBkb25lIDsgZWNobyAiIyAoc2xlZXAgMykiIDsgc2xlZXAgMyBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLi4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gInJtIC1yIFwkXCRpIjsgKHJtIC1yICJcJFwkaSIpIDsgZG9uZSA7IHJtIE1ha2VmaWxlCitfRU9GCisgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkYWNfdG9wX3NyY2Rpci9tYWtlZmlsZS5zZWR+IiAgICAgICAgICAgICMjIERFQlVHR0lORworICAgICAgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgLWYgJHRtcC9jb25mdGVtcC5zZWQgTWFrZWZpbGUgPiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgICAgICBpZiB0ZXN0IC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZS5tayIgOyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXh0ZW5kIHRvcF9zcmNkaXIvTWFrZWZpbGUgd2l0aCB0b3Bfc3JjZGlyL01ha2VmaWxlLm1rIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGV4dGVuZCB0b3Bfc3JjZGlyL01ha2VmaWxlIHdpdGggdG9wX3NyY2Rpci9NYWtlZmlsZS5tayIgPiY2O30KKyAgICAgICAgY2F0ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlLm1rID4+JGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUKKyAgICAgIGZpIDsgeHh4eD0iIyMjIyIKKyAgICAgIGVjaG8gIiR4eHh4IENPTkZJR1VSQVRJT05TIEZPUiBUT1BMRVZFTCBNQUtFRklMRTogIiA+PiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgICAgICAjIHNhbml0eSBjaGVjaworICAgICAgaWYgZ3JlcCAnXjsgZWNobyAiTUFLRSAnICRhY190b3Bfc3JjZGlyL01ha2VmaWxlID4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gXCJhXCIgdGV4dCBwYXJ0cyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBidWdneSBzZWQgZm91bmQgLSBpdCBkZWxldGVzIHRhYiBpbiBcImFcIiB0ZXh0IHBhcnRzIiA+JjY7fQorICAgICAgICAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCAtZSAnL15AIEhPU1Q9L3MvXi8JLycgLWUgJy9eOyAvcy9eLwkvJyAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSBcCisgICAgICAgICAgPiRhY190b3Bfc3JjZGlyL01ha2VmaWxlfgorICAgICAgICAodGVzdCAtcyAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZX4gJiYgbXYgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGV+ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlKSAyPi9kZXYvbnVsbAorICAgICAgZmkKKyAgICBlbHNlCisgICAgICB4eHh4PSJcXCNcXCNcXCNcXCMiCisgICAgICAjIGVjaG8gIi9eJHh4eHggKiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCAvZCIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICBlY2hvICJzIV4keHh4eCBbXnxdKiB8ICokYXhfZW5hYmxlX2J1aWxkZGlyICpcJCEkeHh4eCAuLi4uLi4gJGF4X2VuYWJsZV9idWlsZGRpciEiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgLWYgIiR0bXAvY29uZnRlbXAuc2VkIiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiID4kdG1wL21rZmlsZS50bXAKKyAgICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGVzLnNlZH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAgIGNwICIkdG1wL21rZmlsZS50bXAiICAgIiRhY190b3Bfc3JjZGlyL21ha2VmaWxlcy5vdXR+IiAgICAgICAgICMjIERFQlVHR0lORworICAgICAgaWYgY21wIC1zICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgIiR0bXAvbWtmaWxlLnRtcCIgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfToga2VlcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNQorJGFzX2VjaG8gIiRhc19tZToga2VlcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNjt9CisgICAgICAgIHJtICIkdG1wL21rZmlsZS50bXAiCisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmV1c2luZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogcmV1c2luZyB0b3Bfc3JjZGlyL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmUiID4mNjt9CisgICAgICAgIG12ICIkdG1wL21rZmlsZS50bXAiICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIKKyAgICAgIGZpCisgICAgZmkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGJ1aWxkIGluICRheF9lbmFibGVfYnVpbGRkaXIgKEhPU1Q9JGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0KSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBidWlsZCBpbiAkYXhfZW5hYmxlX2J1aWxkZGlyIChIT1NUPSRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCkiID4mNjt9CisgICAgeHh4eD0iIyMjIyIKKyAgICBlY2hvICIkeHh4eCIgIiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCIgInwkYXhfZW5hYmxlX2J1aWxkZGlyIiA+PiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgIGZpCisgOzsKICAgICAiZGVwZmlsZXMiOkMpIHRlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IHsKICAgIyBBdXRvY29uZiAyLjYyIHF1b3RlcyAtLWZpbGUgYXJndW1lbnRzIGZvciBldmFsLCBidXQgbm90IHdoZW4gZmlsZXMKICAgIyBhcmUgbGlzdGVkIHdpdGhvdXQgLS1maWxlLiAgTGV0J3MgcGxheSBzYWZlIGFuZCBvbmx5IGVuYWJsZSB0aGUgZXZhbApAQCAtMTQyNjgsNyArMTY3MjQsOCBAQAogIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAjCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KQEAgLTE0MzE2LDYgKzE2NzczLDE1IEBACiAjIFdoZXRoZXIgb3Igbm90IHRvIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbi4KIGZhc3RfaW5zdGFsbD0kZW5hYmxlX2Zhc3RfaW5zdGFsbAogCisjIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCitTSEVMTD0kbHRfU0hFTEwKKworIyBBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlcy4KK0VDSE89JGx0X0VDSE8KKworIyBUaGUgUEFUSCBzZXBhcmF0b3IgZm9yIHRoZSBidWlsZCBzeXN0ZW0uCitQQVRIX1NFUEFSQVRPUj0kbHRfUEFUSF9TRVBBUkFUT1IKKwogIyBUaGUgaG9zdCBzeXN0ZW0uCiBob3N0X2FsaWFzPSRob3N0X2FsaWFzCiBob3N0PSRob3N0CkBAIC0xNDM2NSw5ICsxNjgzMSwxMSBAQAogIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogTkwyU1A9JGx0X2x0X05MMlNQCiAKLSMgSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4KLXJlbG9hZF9mbGFnPSRsdF9yZWxvYWRfZmxhZwotcmVsb2FkX2NtZHM9JGx0X3JlbG9hZF9jbWRzCisjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCit0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisKKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCit0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCiAKICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCiBPQkpEVU1QPSRsdF9PQkpEVU1QCkBAIC0xNDM3NSwxMyArMTY4NDMsMzAgQEAKICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCiBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKIAotIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAogCisjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKworIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCit3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorCisjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorRExMVE9PTD0kbHRfRExMVE9PTAorCisjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKwogIyBUaGUgYXJjaGl2ZXIuCiBBUj0kbHRfQVIKKworIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwogCisjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisKICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiBTVFJJUD0kbHRfU1RSSVAKIApAQCAtMTQzOTAsNiArMTY4NzUsOSBAQAogb2xkX3Bvc3RpbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0aW5zdGFsbF9jbWRzCiBvbGRfcG9zdHVuaW5zdGFsbF9jbWRzPSRsdF9vbGRfcG9zdHVuaW5zdGFsbF9jbWRzCiAKKyMgV2hldGhlciB0byB1c2UgYSBsb2NrIGZvciBvbGQgYXJjaGl2ZSBleHRyYWN0aW9uLgorbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPSRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24KKwogIyBBIEMgY29tcGlsZXIuCiBMVENDPSRsdF9DQwogCkBAIC0xNDQwOCwyMSArMTY4OTYsMjQgQEAKICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKIAorIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCitubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKworIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKwogIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiBvYmpkaXI9JG9iamRpcgogCi0jIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCi1TSEVMTD0kbHRfU0hFTEwKLQotIyBBbiBlY2hvIHByb2dyYW0gdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCi1FQ0hPPSRsdF9FQ0hPCi0KICMgVXNlZCB0byBleGFtaW5lIGxpYnJhcmllcyB3aGVuIGZpbGVfbWFnaWNfY21kIGJlZ2lucyB3aXRoICJmaWxlIi4KIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAKICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAKKyMgTWFuaWZlc3QgdG9vbC4KK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKwogIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAKQEAgLTE0NDc5LDYgKzE2OTcwLDkgQEAKICMgVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIG5hbWUuCiBzb25hbWVfc3BlYz0kbHRfc29uYW1lX3NwZWMKIAorIyBQZXJtaXNzaW9uIG1vZGUgb3ZlcnJpZGUgZm9yIGluc3RhbGxhdGlvbiBvZiBzaGFyZWQgbGlicmFyaWVzLgoraW5zdGFsbF9vdmVycmlkZV9tb2RlPSRsdF9pbnN0YWxsX292ZXJyaWRlX21vZGUKKwogIyBDb21tYW5kIHRvIHVzZSBhZnRlciBpbnN0YWxsYXRpb24gb2YgYSBzaGFyZWQgYXJjaGl2ZS4KIHBvc3RpbnN0YWxsX2NtZHM9JGx0X3Bvc3RpbnN0YWxsX2NtZHMKIApAQCAtMTQ1MTgsNiArMTcwMTIsMTAgQEAKICMgVGhlIGxpbmtlciB1c2VkIHRvIGJ1aWxkIGxpYnJhcmllcy4KIExEPSRsdF9MRAogCisjIEhvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuCityZWxvYWRfZmxhZz0kbHRfcmVsb2FkX2ZsYWcKK3JlbG9hZF9jbWRzPSRsdF9yZWxvYWRfY21kcworCiAjIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmUuCiBvbGRfYXJjaGl2ZV9jbWRzPSRsdF9vbGRfYXJjaGl2ZV9jbWRzCiAKQEAgLTE0NTMwLDEyICsxNzAyOCwxMiBAQAogIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogCi0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotCiAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwogCisjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCit3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorCiAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogCkBAIC0xNDU4NSwxMCArMTcwODMsNiBAQAogIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0CiBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSRsdF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjCiAKLSMgSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50byBhIGJpbmFyeQotIyBkdXJpbmcgbGlua2luZy4gIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSRsdF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkCi0KICMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IKIApAQCAtMTQ2MjIsOSArMTcxMTYsNiBAQAogIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAKLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLQogIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogCkBAIC0xNDY0MCw2ICsxNzEzMSw5IEBACiAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKIAorIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworCiAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogCkBAIC0xNDY3MiwyMTIgKzE3MTY2LDE2OSBAQAogICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQogCi0gIGNhc2UgJHhzaV9zaGVsbCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLSMgY2FsbDoKLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotfQotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKLX0KKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorZnVuY19kaXJuYW1lICgpXAore1wKK1wgICAgY2FzZSAkezF9IGluXAorXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCitcICAgIGVzYWNcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiAKIAotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICBjYXNlICR7Mn0gaW4KLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlJHsyfVwkJSUiYDs7Ci0gIGVzYWMKLX0KLQotIyBzZWQgc2NyaXB0czoKLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfb3B0ImAKLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19hcmciYAotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRsbzJvImAKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAncy9cLlteLl0qJC8ubG8vJ2AKLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotfQotCi1fTFRfRU9GCi1lc2FjCi0KLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJDErPVwkMiIKLX0KLV9MVF9FT0YKLSAgICA7OwotICAqKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiQxPVwkJDFcJDIiCi19Ci0KLV9MVF9FT0YKLSAgICA7OwotICBlc2FjCisgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKK2Z1bmNfYmFzZW5hbWUgKClcCit7XAorXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIAogCi0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCitmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAore1wKK1wgICAgY2FzZSAkezF9IGluXAorXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCitcICAgIGVzYWNcCitcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogCi0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKworICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKK2Z1bmNfc3RyaXBuYW1lICgpXAore1wKK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCitcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorZnVuY19zcGxpdF9sb25nX29wdCAoKVwKK3tcCitcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAore1wKK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCitcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCitmdW5jX2xvMm8gKClcCit7XAorXCAgICBjYXNlICR7MX0gaW5cCitcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCitcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorXCAgICBlc2FjXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorZnVuY194Zm9ybSAoKVwKK3tcCisgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCitmdW5jX2FyaXRoICgpXAore1wKKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCitmdW5jX2xlbiAoKVwKK3tcCisgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKK2ZpCisKK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCitmdW5jX2FwcGVuZCAoKVwKK3tcCisgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKK3tcCitcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZWxzZQorICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2ZpCisKK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorZmkKKworCisgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgY2htb2QgK3ggIiRvZmlsZSIKIApAQCAtMTQ4OTcsNyArMTczNDgsNyBAQAogYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKIAogdGVzdCAkYWNfd3JpdGVfZmFpbCA9IDAgfHwKLSAgYXNfZm5fZXJyb3IgIndyaXRlIGZhaWx1cmUgY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogCiAKICMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KQEAgLTE0OTE4LDcgKzE3MzY5LDcgQEAKICAgZXhlYyA1Pj5jb25maWcubG9nCiAgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCiAgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgotICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0ICQ/CisgICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQgMQogZmkKIGlmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyIgJiYgdGVzdCAiJGVuYWJsZV9vcHRpb25fY2hlY2tpbmciICE9IG5vOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiY1CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjCmluZGV4IDg3YzYzZTEuLmMxNmJjYjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjCkBAIC0zLDkgKzMsOSBAQAogIyBmaWxlIGZyb20gbGliZmZpIC0gc2xpZ2h0bHkgcGF0Y2hlZCBmb3IgY3R5cGVzCiAjCiAKLUFDX1BSRVJFUSgyLjYzKQorQUNfUFJFUkVRKDIuNjgpCiAKLUFDX0lOSVQoW2xpYmZmaV0sIFszLjAuMTByYzBdLCBbaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbF0pCitBQ19JTklUKFtsaWJmZmldLCBbMy4wLjExXSwgW2h0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlc10pCiBBQ19DT05GSUdfSEVBREVSUyhbZmZpY29uZmlnLmhdKQogCiBBQ19DQU5PTklDQUxfU1lTVEVNCkBAIC0xMywxNiArMTMsMjIgQEAKIAogLiAke3NyY2Rpcn0vY29uZmlndXJlLmhvc3QKIAorQVhfRU5BQkxFX0JVSUxERElSCisKIEFNX0lOSVRfQVVUT01BS0UKIAogIyBUaGUgc2FtZSBhcyBpbiBib2VobS1nYyBhbmQgbGlic3RkYysrLiBIYXZlIHRvIGJvcnJvdyBpdCBmcm9tIHRoZXJlLgogIyBXZSBtdXN0IGZvcmNlIENDIHRvIC9ub3QvIGJlIHByZWNpb3VzIHZhcmlhYmxlczsgb3RoZXJ3aXNlCiAjIHRoZSB3cm9uZywgbm9uLW11bHRpbGliLWFkanVzdGVkIHZhbHVlIHdpbGwgYmUgdXNlZCBpbiBtdWx0aWxpYnMuCiAjIEFzIGEgc2lkZSBlZmZlY3QsIHdlIGhhdmUgdG8gc3Vic3QgQ0ZMQUdTIG91cnNlbHZlcy4KKyMgQWxzbyBzYXZlIGFuZCByZXN0b3JlIENGTEFHUywgc2luY2UgQUNfUFJPR19DQyB3aWxsIGNvbWUgdXAgd2l0aAorIyBkZWZhdWx0cyBvZiBpdHMgb3duIGlmIG5vbmUgYXJlIHByb3ZpZGVkLgogCiBtNF9yZW5hbWUoW19BQ19BUkdfVkFSX1BSRUNJT1VTXSxbcmVhbF9QUkVDSU9VU10pCiBtNF9kZWZpbmUoW19BQ19BUkdfVkFSX1BSRUNJT1VTXSxbXSkKK3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIEFDX1BST0dfQ0MKK0NGTEFHUz0kc2F2ZV9DRkxBR1MKIG00X3VuZGVmaW5lKFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10pCiBtNF9yZW5hbWUoW3JlYWxfUFJFQ0lPVVNdLFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10pCiAKQEAgLTMzLDYgKzM5LDEyIEBACiBBQ19QUk9HX0xJQlRPT0wKIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKIAorQVhfQ0NfTUFYT1BUCitBWF9DRkxBR1NfV0FSTl9BTEwKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICBDRkxBR1M9IiRDRkxBR1MgLWZleGNlcHRpb25zIgorZmkKKwogQU1fTUFJTlRBSU5FUl9NT0RFCiAKIEFDX0NIRUNLX0hFQURFUlMoc3lzL21tYW4uaCkKQEAgLTQ2LDcgKzU4LDcgQEAKIGNhc2UgIiRob3N0IiBpbgogICBhbHBoYSotKi0qKQogCVRBUkdFVD1BTFBIQTsgVEFSR0VURElSPWFscGhhOwotCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2FibGUgdmlhIGNvbW1hbmQtbGluZSBzd2l0Y2guCisJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUsIGNoYW5nZWFibGUgdmlhIGNvbW1hbmQtbGluZSBzd2l0Y2guCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX0xPTkdfRE9VQkxFXzEyOF9fKScKIAk7OwogCkBAIC03NCw3ICs4Niw3IEBACiAJVEFSR0VUPUZSVjsgVEFSR0VURElSPWZydgogCTs7CiAKLSAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqKQorICBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCogfCBocHBhKi0qLW9wZW5ic2QqKQogCVRBUkdFVD1QQV9MSU5VWDsgVEFSR0VURElSPXBhCiAJOzsKICAgaHBwYSo2NC0qLWhwdXgqKQpAQCAtODcsMTAgKzk5LDE3IEBACiAgIGk/ODYtKi1mcmVlYnNkKiB8IGk/ODYtKi1vcGVuYnNkKikKIAlUQVJHRVQ9WDg2X0ZSRUVCU0Q7IFRBUkdFVERJUj14ODYKIAk7OwotICBpPzg2LXdpbjMyKiB8IGk/ODYtKi1jeWd3aW4qIHwgaT84Ni0qLW1pbmd3KikKKyAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyogfCBpPzg2LSotb3MyKiB8IGk/ODYtKi1pbnRlcml4KikKIAlUQVJHRVQ9WDg2X1dJTjMyOyBUQVJHRVRESVI9eDg2Ci0JIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIHRoaXMgZm9yIHNoYXJlZGxpYgotCUFNX0xUTERGTEFHUz0iLW5vLXVuZGVmaW5lZCIKKwkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgLW5vLXVuZGVmaW5lZCBmb3Igc2hhcmVkbGliLgorCSMgV2UgbXVzdCBhbHNvIGNoZWNrIHdpdGhfY3Jvc3NfaG9zdCB0byBkZWNpZGUgaWYgdGhpcyBpcyBhIG5hdGl2ZQorCSMgb3IgY3Jvc3MtYnVpbGQgYW5kIHNlbGVjdCB3aGVyZSB0byBpbnN0YWxsIGRsbHMgYXBwcm9wcmlhdGVseS4KKwlpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorCSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQodG9vbGV4ZWNsaWJkaXIpIic7CisJZWxzZQorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQoYmluZGlyKSInOworCWZpCiAJOzsKICAgaT84Ni0qLWRhcndpbiopCiAJVEFSR0VUPVg4Nl9EQVJXSU47IFRBUkdFVERJUj14ODYKQEAgLTEwMiw3ICsxMjEsNyBAQAogICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CiAgICAgICAgIDs7CiAgIGk/ODYtKi0qKQotCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKKwlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAJOzsKIAogICBpYTY0Ki0qLSopCkBAIC0xMTcsMzAgKzEzNiw0MCBAQAogCVRBUkdFVD1NNjhLOyBUQVJHRVRESVI9bTY4awogCTs7CiAKLSAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCisgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qIHwgbWlwcyotKi1ydGVtcyopCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwotICBtaXBzKi0qLWxpbnV4KikKKyAgbWlwcyotKi1saW51eCogfCBtaXBzKi0qLW9wZW5ic2QqKQogCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwogCisgIG1veGllLSotKikKKyAgICAgICAgVEFSR0VUPU1PWElFOyBUQVJHRVRESVI9bW94aWUKKwk7OworCiAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGMtKi1hbWlnYW9zKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjLSotYmVvcyopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWRhcndpbiopCisgIHBvd2VycGMtKi1kYXJ3aW4qIHwgcG93ZXJwYzY0LSotZGFyd2luKikKIAlUQVJHRVQ9UE9XRVJQQ19EQVJXSU47IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKICAgcG93ZXJwYy0qLWFpeCogfCByczYwMDAtKi1haXgqKQogCVRBUkdFVD1QT1dFUlBDX0FJWDsgVEFSR0VURElSPXBvd2VycGMKIAk7OwotICBwb3dlcnBjLSotZnJlZWJzZCopCisgIHBvd2VycGMtKi1mcmVlYnNkKiB8IHBvd2VycGMtKi1vcGVuYnNkKikKIAlUQVJHRVQ9UE9XRVJQQ19GUkVFQlNEOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGM2NC0qLWZyZWVic2QqKQorCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYworCTs7CiAgIHBvd2VycGMqLSotcnRlbXMqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CkBAIC0xNjYsNiArMTk1LDE1IEBACiAKICAgeDg2XzY0LSotY3lnd2luKiB8IHg4Nl82NC0qLW1pbmd3KikKIAlUQVJHRVQ9WDg2X1dJTjY0OyBUQVJHRVRESVI9eDg2CisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAKICAgeDg2XzY0LSotKikKQEAgLTE5MSw2ICsyMjksNyBAQAogQU1fQ09ORElUSU9OQUwoSUE2NCwgdGVzdCB4JFRBUkdFVCA9IHhJQTY0KQogQU1fQ09ORElUSU9OQUwoTTMyUiwgdGVzdCB4JFRBUkdFVCA9IHhNMzJSKQogQU1fQ09ORElUSU9OQUwoTTY4SywgdGVzdCB4JFRBUkdFVCA9IHhNNjhLKQorQU1fQ09ORElUSU9OQUwoTU9YSUUsIHRlc3QgeCRUQVJHRVQgPSB4TU9YSUUpCiBBTV9DT05ESVRJT05BTChQT1dFUlBDLCB0ZXN0IHgkVEFSR0VUID0geFBPV0VSUEMpCiBBTV9DT05ESVRJT05BTChQT1dFUlBDX0FJWCwgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDX0FJWCkKIEFNX0NPTkRJVElPTkFMKFBPV0VSUENfREFSV0lOLCB0ZXN0IHgkVEFSR0VUID0geFBPV0VSUENfREFSV0lOKQpAQCAtMjI4LDE3ICsyNjcsNyBAQAogCiBBQ19DX0JJR0VORElBTgogCi1BQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnRdLAotICAgIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wLCBbCi0gICAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgotICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuY2ZpX3N0YXJ0cHJvY1xuXHQuY2ZpX2VuZHByb2MiKTtdLCwKLQkJICAgW2xpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXllc10sCi0JCSAgIFtsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ub10pCi1dKQotaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfQVNfQ0ZJX1BTRVVET19PUCwgMSwKLQkgICAgICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5jZmlfKiBkaXJlY3RpdmVzLl0pCi1maQorR0NDX0FTX0NGSV9QU0VVRE9fT1AKIAogaWYgdGVzdCB4JFRBUkdFVCA9IHhTUEFSQzsgdGhlbgogICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBwYyByZWxhdGVkIHJlbG9jc10sCkBAIC0yNzQsNjQgKzMwMywxMjQgQEAKIGlmIHRlc3QgeCRUQVJHRVQgPSB4WDg2IHx8IHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjMyIHx8IHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCiAgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciBzdXBwb3J0cyBwYyByZWxhdGVkIHJlbG9jc10sCiAJbGliZmZpX2N2X2FzX3g4Nl9wY3JlbCwgWwotCWxpYmZmaV9jdl9hc194ODZfcGNyZWw9eWVzCisJbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD1ubwogCWVjaG8gJy50ZXh0OyBmb286IG5vcDsgLmRhdGE7IC5sb25nIGZvby0uOyAudGV4dCcgPiBjb25mdGVzdC5zCi0JaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIGxpYmZmaV9jdl9hc194ODZfcGNyZWw9bm8KKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD15ZXMKIAlmaQogCV0pCiAgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsIiA9IHh5ZXM7IHRoZW4KIAlBQ19ERUZJTkUoSEFWRV9BU19YODZfUENSRUwsIDEsCiAJCSAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBQQyByZWxhdGl2ZSByZWxvY3MuXSkKICAgICBmaQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuYXNjaWkgcHNldWRvLW9wIHN1cHBvcnRdLAorICAgICAgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AsIFsKKyAgICAgICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLmFzY2lpCisgICAgICAgQUNfVFJZX0NPTVBJTEUoW2FzbSAoIi5hc2NpaSBcXCJzdHJpbmdcXCIiKTtdLCwKKwkJICAgICAgIFtsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXllc10sCisJCSAgICAgICBbbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD1ub10pCisgICAgXSkKKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgorICAgICAgIEFDX0RFRklORShIQVZFX0FTX0FTQ0lJX1BTRVVET19PUCwgMSwKKwkgICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuYXNjaWkuXSkKKyAgICBmaQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuc3RyaW5nIHBzZXVkby1vcCBzdXBwb3J0XSwKKyAgICAgICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCwgWworICAgICAgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLnN0cmluZworICAgICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuc3RyaW5nIFxcInN0cmluZ1xcIiIpO10sLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXllc10sCisJCSAgICAgICBbbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9bm9dKQorICAgIF0pCisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisgICAgICAgQUNfREVGSU5FKEhBVkVfQVNfU1RSSU5HX1BTRVVET19PUCwgMSwKKwkgICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuc3RyaW5nLl0pCisgICAgZmkKIGZpCiAKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjY0OyB0aGVuCisgICAgTFRfU1lTX1NZTUJPTF9VU0NPUkUKKyAgICBpZiB0ZXN0ICJ4JHN5c19zeW1ib2xfdW5kZXJzY29yZSIgPSB4eWVzOyB0aGVuCisgICAgICAgIEFDX0RFRklORShTWU1CT0xfVU5ERVJTQ09SRSwgMSwgW0RlZmluZSBpZiBzeW1ib2xzIGFyZSB1bmRlcnNjb3JlZC5dKQorICAgIGZpCitmaQorCisKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEU9MAogY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgKi1hcHBsZS1kYXJ3aW4xMCogfCAqLSotZnJlZWJzZCogfCAqLSotb3BlbmJzZCogfCAqLXBjLXNvbGFyaXMqKQorICAgICAqYXJtKi1hcHBsZS1kYXJ3aW4qKQorICAgICAgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEU9MQorICAgICAgIEFDX0RFRklORShGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFLCAxLAorICAgICAgICAgICAgICAgICBbQ2Fubm90IHVzZSBQUk9UX0VYRUMgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8KKyAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZSBtZWFuc10pCisgICAgIDs7CisgICAgICotYXBwbGUtZGFyd2luMVtbMTBdXSogfCAqLSotZnJlZWJzZCogfCAqLSota2ZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKICAgICAgICBBQ19ERUZJTkUoRkZJX01NQVBfRVhFQ19XUklULCAxLAogICAgICAgICAgICAgICAgICBbQ2Fubm90IHVzZSBtYWxsb2Mgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8KICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZSBtZWFuc10pCiAgICAgIDs7CiBlc2FjCitBTV9DT05ESVRJT05BTChGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFLCB0ZXN0IHgkRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IHgxKQorQUNfU1VCU1QoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSkKIAotQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seV0sCi0gICAgbGliZmZpX2N2X3JvX2VoX2ZyYW1lLCBbCi0JbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCi0JZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYwotCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAotCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZmkKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlXSwKKwlsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUsIFsKKwlsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9eWVzCisJZWNobyAnLnNlY3Rpb24gLmVoX2ZyYW1lLCJhIixAdW53aW5kJyA+IGNvbmZ0ZXN0LnMKKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPW5vCiAJZmkKLQlybSAtZiBjb25mdGVzdC4qCi0gICAgXSkKLWlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KLSAgICBBQ19ERUZJTkUoSEFWRV9ST19FSF9GUkFNRSwgMSwKLQkgICAgICBbRGVmaW5lIGlmIC5laF9mcmFtZSBzZWN0aW9ucyBzaG91bGQgYmUgcmVhZC1vbmx5Ll0pCi0gICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYSIsCi0JICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS5dKQotZWxzZQotICAgIEFDX0RFRklORShFSF9GUkFNRV9GTEFHUywgImF3IiwKLQkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLl0pCisJXSkKKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPSB4eWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUsIDEsCisJCSAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlLl0pCisgICAgZmkKIGZpCiAKLUFDX0NBQ0hFX0NIRUNLKFtmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKV0sCi0gICAgbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSwgWwotCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxOyB9JyA+IGNvbmZ0ZXN0LmMKLQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCi0JaWYgQUNfVFJZX0NPTU1BTkQoJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCi0JICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcwotCSAgICBmaQotCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgotICAgIF0pCi1pZiB0ZXN0ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlID0geWVzOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFLCAxLAotCSAgICAgIFtEZWZpbmUgaWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKSBpcyBzdXBwb3J0ZWQuXSkKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5XSwKKyAgICAgIGxpYmZmaV9jdl9yb19laF9mcmFtZSwgWworICAJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCisgIAllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCisgIAlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKKyAgCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgorICAgICAgXSkKKyAgaWYgdGVzdCAieCRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID0geHllczsgdGhlbgorICAgICAgQUNfREVGSU5FKEhBVkVfUk9fRUhfRlJBTUUsIDEsCisgIAkgICAgICBbRGVmaW5lIGlmIC5laF9mcmFtZSBzZWN0aW9ucyBzaG91bGQgYmUgcmVhZC1vbmx5Ll0pCisgICAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhIiwKKyAgCSAgICAgIFtEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuICBdKQorICBlbHNlCisgICAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhdyIsCisgIAkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLiAgXSkKKyAgZmkKKworICBBQ19DQUNIRV9DSEVDSyhbZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSldLAorICAgICAgbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSwgWworICAJZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDEgIDsgfScgPiBjb25mdGVzdC5jCisgIAlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCisgIAlpZiBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAtV2Vycm9yIC1TIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QucyAxPiZBU19NRVNTQUdFX0xPR19GRCk7IHRoZW4KKyAgCSAgICBpZiBncmVwICdcLmhpZGRlbi4qZm9vJyBjb25mdGVzdC5zID4vZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgorICAgICAgXSkKKyAgaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgorICAgICAgQUNfREVGSU5FKEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFLCAxLAorICAJICAgICAgW0RlZmluZSBpZiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpIGlzIHN1cHBvcnRlZC5dKQorICBmaQogZmkKIAogQUhfQk9UVE9NKFsKQEAgLTM2MCw2ICs0NDksNyBAQAogICBpZiB0ZXN0ICIkZW5hYmxlX2RlYnVnIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FKEZGSV9ERUJVRywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSB3YW50IGV4dHJhIGRlYnVnZ2luZy5dKQogICBmaSkKK0FNX0NPTkRJVElPTkFMKEZGSV9ERUJVRywgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIikKIAogQUNfQVJHX0VOQUJMRShzdHJ1Y3RzLAogWyAgLS1kaXNhYmxlLXN0cnVjdHMgICAgICAgb21pdCBjb2RlIGZvciBzdHJ1Y3Qgc3VwcG9ydF0sCkBAIC0zNzksMjEgKzQ2OSwyNSBAQAogICAgIEFDX0RFRklORShVU0lOR19QVVJJRlksIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIFB1cmlmeSBhbmQgd2FudCB0byBzdXBwcmVzcyBzcHVyaW91cyBtZXNzYWdlcy5dKQogICBmaSkKIAotaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgotICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJwotZWxzZQotICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworIyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgZXZlciB1c2VkIHdoZW4gd2UgY3Jvc3MtYnVpbGQgdG8gWDg2X1dJTjMyLgorIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCitpZiB0ZXN0IHgiJEdDQyIgIT0geCJubyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKyAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisgICAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJworICBlbHNlCisgICAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworICBmaQorICBtdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorICBjYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KKyAgICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCisgICAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKKyAgZXNhYworICBBQ19TVUJTVCh0b29sZXhlY2RpcikKKyAgQUNfU1VCU1QodG9vbGV4ZWNsaWJkaXIpCiBmaQotbXVsdGlfb3NfZGlyZWN0b3J5PWAkQ0MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLWNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgotICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCi0gICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY2xpYmRpci8kbXVsdGlfb3NfZGlyZWN0b3J5IDs7Ci1lc2FjCi1BQ19TVUJTVCh0b29sZXhlY2RpcikKLUFDX1NVQlNUKHRvb2xleGVjbGliZGlyKQogCiBpZiB0ZXN0ICIke211bHRpbGlifSIgPSAieWVzIjsgdGhlbgogICBtdWx0aWxpYl9hcmc9Ii0tZW5hYmxlLW11bHRpbGliIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wCmluZGV4IGNhNWVhNGUuLmRmOGVlYTcgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RlcGNvbXAKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgZGVwY29tcCAtIGNvbXBpbGUgYSBwcm9ncmFtIGdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzIGFzIHNpZGUtZWZmZWN0cwogCi1zY3JpcHR2ZXJzaW9uPTIwMDYtMTAtMTUuMTgKK3NjcmlwdHZlcnNpb249MjAwOS0wNC0yOC4yMTsgIyBVVEMKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBGcmVlCisjIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTcsOSArMTcsNyBAQAogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKLSMgMDIxMTAtMTMwMSwgVVNBLgorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CiAjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQpAQCAtODcsNiArODUsMTUgQEAKICAgIGRlcG1vZGU9ZGFzaG1zdGRvdXQKIGZpCiAKK2N5Z3BhdGhfdT0iY3lncGF0aCAtdSAtZiAtIgoraWYgdGVzdCAiJGRlcG1vZGUiID0gbXN2Y21zeXM7IHRoZW4KKyAgICMgVGhpcyBpcyBqdXN0IGxpa2UgbXN2aXN1YWxjcHAgYnV0IHcvbyBjeWdwYXRoIHRyYW5zbGF0aW9uLgorICAgIyBKdXN0IGNvbnZlcnQgdGhlIGJhY2tzbGFzaC1lc2NhcGVkIGJhY2tzbGFzaGVzIHRvIHNpbmdsZSBmb3J3YXJkCisgICAjIHNsYXNoZXMgdG8gc2F0aXNmeSBkZXBlbmQubTQKKyAgIGN5Z3BhdGhfdT0ic2VkIHMsXFxcXFxcXFwsLyxnIgorICAgZGVwbW9kZT1tc3Zpc3VhbGNwcAorZmkKKwogY2FzZSAiJGRlcG1vZGUiIGluCiBnY2MzKQogIyMgZ2NjIDMgaW1wbGVtZW50cyBkZXBlbmRlbmN5IHRyYWNraW5nIHRoYXQgZG9lcyBleGFjdGx5IHdoYXQKQEAgLTE5MiwxNCArMTk5LDE0IEBACiAnIDwgIiR0bXBkZXBmaWxlIiBcCiAgICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIHwgXAogICAgIHRyICcKLScgJyAnID4+ICRkZXBmaWxlCi0gICAgZWNobyA+PiAkZGVwZmlsZQorJyAnICcgPj4gIiRkZXBmaWxlIgorICAgIGVjaG8gPj4gIiRkZXBmaWxlIgogCiAgICAgIyBUaGUgc2Vjb25kIHBhc3MgZ2VuZXJhdGVzIGEgZHVtbXkgZW50cnkgZm9yIGVhY2ggaGVhZGVyIGZpbGUuCiAgICAgdHIgJyAnICcKICcgPCAiJHRtcGRlcGZpbGUiIFwKICAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyAtZSAncy8kLzovJyBcCi0gICA+PiAkZGVwZmlsZQorICAgPj4gIiRkZXBmaWxlIgogICBlbHNlCiAgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKICAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKQEAgLTIxNSwzNCArMjIyLDM5IEBACiAgICMgY3VycmVudCBkaXJlY3RvcnkuICBBbHNvLCB0aGUgQUlYIGNvbXBpbGVyIHB1dHMgYCRvYmplY3Q6JyBhdCB0aGUKICAgIyBzdGFydCBvZiBlYWNoIGxpbmU7ICRvYmplY3QgZG9lc24ndCBoYXZlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KICAgIyBWZXJzaW9uIDYgdXNlcyB0aGUgZGlyZWN0b3J5IGluIGJvdGggY2FzZXMuCi0gIHN0cmlwcGVkPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAncy9cKC4qXClcLi4qJC9cMS8nYAotICB0bXBkZXBmaWxlPSIkc3RyaXBwZWQudSIKKyAgZGlyPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3wvW14vXSokfC98J2AKKyAgdGVzdCAieCRkaXIiID0gIngkb2JqZWN0IiAmJiBkaXI9CisgIGJhc2U9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfF4uKi98fCcgLWUgJ3MvXC5vJC8vJyAtZSAncy9cLmxvJC8vJ2AKICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgdG1wZGVwZmlsZTE9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMj0kYmFzZS51CisgICAgdG1wZGVwZmlsZTM9JGRpci5saWJzLyRiYXNlLnUKICAgICAiJEAiIC1XYywtTQogICBlbHNlCisgICAgdG1wZGVwZmlsZTE9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMj0kZGlyJGJhc2UudQorICAgIHRtcGRlcGZpbGUzPSRkaXIkYmFzZS51CiAgICAgIiRAIiAtTQogICBmaQogICBzdGF0PSQ/CiAKLSAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuIDoKLSAgZWxzZQotICAgIHN0cmlwcGVkPWBlY2hvICIkc3RyaXBwZWQiIHwgc2VkICdzLF4uKi8sLCdgCi0gICAgdG1wZGVwZmlsZT0iJHN0cmlwcGVkLnUiCi0gIGZpCi0KICAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CiAgIGVsc2UKLSAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKICAgICBleGl0ICRzdGF0CiAgIGZpCiAKKyAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKKyAgZG8KKyAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgZG9uZQogICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KLSAgICBvdXRuYW1lPSIkc3RyaXBwZWQubyIKICAgICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJy4KICAgICAjIERvIHR3byBwYXNzZXMsIG9uZSB0byBqdXN0IGNoYW5nZSB0aGVzZSB0bwogICAgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KLSAgICBzZWQgLWUgInMsXiRvdXRuYW1lOiwkb2JqZWN0IDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCi0gICAgc2VkIC1lICJzLF4kb3V0bmFtZTogXCguKlwpJCxcMTosIiA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICAgIHNlZCAtZSAicyxeLipcLlthLXpdKjosJG9iamVjdDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgICAgIyBUaGF0J3MgYSB0YWIgYW5kIGEgc3BhY2UgaW4gdGhlIFtdLgorICAgIHNlZCAtZSAncyxeLipcLlthLXpdKjpbCSBdKiwsJyAtZSAncywkLDosJyA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgogICBlbHNlCiAgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKICAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKQEAgLTMyMyw3ICszMzUsMTIgQEAKICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuCiAgICAgc2VkIC1lICJzLF4uKlwuW2Etel0qOiwkb2JqZWN0OiwiICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCiAgICAgIyBBZGQgYGRlcGVuZGVudC5oOicgbGluZXMuCi0gICAgc2VkIC1uZSAnMiwkezsgcy9eICovLzsgcy8gXFwqJC8vOyBzLyQvOi87IHA7fScgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisgICAgc2VkIC1uZSAnMiwkeworCSAgICAgICBzL14gKi8vCisJICAgICAgIHMvIFxcKiQvLworCSAgICAgICBzLyQvOi8KKwkgICAgICAgcAorCSAgICAgfScgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCiAgIGVsc2UKICAgICBlY2hvICIjZHVtbXkiID4gIiRkZXBmaWxlIgogICBmaQpAQCAtMzk5LDcgKzQxNiw3IEBACiAKICAgIyBSZW1vdmUgdGhlIGNhbGwgdG8gTGlidG9vbC4KICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCi0gICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCiAgICAgICBzaGlmdAogICAgIGRvbmUKICAgICBzaGlmdApAQCAtNDUwLDMyICs0NjcsMzkgQEAKICAgIiRAIiB8fCBleGl0ICQ/CiAgICMgUmVtb3ZlIGFueSBMaWJ0b29sIGNhbGwKICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCi0gICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCiAgICAgICBzaGlmdAogICAgIGRvbmUKICAgICBzaGlmdAogICBmaQogICAjIFggbWFrZWRlcGVuZAogICBzaGlmdAotICBjbGVhcmVkPW5vCi0gIGZvciBhcmcgaW4gIiRAIjsgZG8KKyAgY2xlYXJlZD1ubyBlYXQ9bm8KKyAgZm9yIGFyZworICBkbwogICAgIGNhc2UgJGNsZWFyZWQgaW4KICAgICBubykKICAgICAgIHNldCAiIjsgc2hpZnQKICAgICAgIGNsZWFyZWQ9eWVzIDs7CiAgICAgZXNhYworICAgIGlmIHRlc3QgJGVhdCA9IHllczsgdGhlbgorICAgICAgZWF0PW5vCisgICAgICBjb250aW51ZQorICAgIGZpCiAgICAgY2FzZSAiJGFyZyIgaW4KICAgICAtRCp8LUkqKQogICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciOyBzaGlmdCA7OwogICAgICMgU3RyaXAgYW55IG9wdGlvbiB0aGF0IG1ha2VkZXBlbmQgbWF5IG5vdCB1bmRlcnN0YW5kLiAgUmVtb3ZlCiAgICAgIyB0aGUgb2JqZWN0IHRvbywgb3RoZXJ3aXNlIG1ha2VkZXBlbmQgd2lsbCBwYXJzZSBpdCBhcyBhIHNvdXJjZSBmaWxlLgorICAgIC1hcmNoKQorICAgICAgZWF0PXllcyA7OwogICAgIC0qfCRvYmplY3QpCiAgICAgICA7OwogICAgICopCiAgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyI7IHNoaWZ0IDs7CiAgICAgZXNhYwogICBkb25lCi0gIG9ial9zdWZmaXg9ImBlY2hvICRvYmplY3QgfCBzZWQgJ3MvXi4qXC4vLi8nYCIKKyAgb2JqX3N1ZmZpeD1gZWNobyAiJG9iamVjdCIgfCBzZWQgJ3MvXi4qXC4vLi8nYAogICB0b3VjaCAiJHRtcGRlcGZpbGUiCiAgICR7TUFLRURFUEVORC1tYWtlZGVwZW5kfSAtbyIkb2JqX3N1ZmZpeCIgLWYiJHRtcGRlcGZpbGUiICIkQCIKICAgcm0gLWYgIiRkZXBmaWxlIgpAQCAtNDk1LDcgKzUxOSw3IEBACiAKICAgIyBSZW1vdmUgdGhlIGNhbGwgdG8gTGlidG9vbC4KICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCi0gICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCiAgICAgICBzaGlmdAogICAgIGRvbmUKICAgICBzaGlmdApAQCAtNTMzLDEzICs1NTcsMjcgQEAKIAogbXN2aXN1YWxjcHApCiAgICMgSW1wb3J0YW50IG5vdGU6IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBtb2RlLCBhIGNvbXBpbGVyICptdXN0KgotICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LCByZWdhcmRsZXNzIG9mIC1vLAotICAjIGJlY2F1c2Ugd2UgbXVzdCB1c2UgLW8gd2hlbiBydW5uaW5nIGxpYnRvb2wuCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQuCiAgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorCiAgIElGUz0iICIKICAgZm9yIGFyZwogICBkbwogICAgIGNhc2UgIiRhcmciIGluCisgICAgLW8pCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAkb2JqZWN0KQorICAgICAgc2hpZnQKKyAgICAgIDs7CiAgICAgIi1HbSJ8Ii9HbSJ8Ii1HaSJ8Ii9HaSJ8Ii1aSSJ8Ii9aSSIpCiAJc2V0IGZub3JkICIkQCIKIAlzaGlmdApAQCAtNTUyLDE2ICs1OTAsMjMgQEAKIAk7OwogICAgIGVzYWMKICAgZG9uZQotICAiJEAiIC1FIHwKLSAgc2VkIC1uICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLyBzOjplY2hvICJgY3lncGF0aCAtdSBcXCJcMVxcImAiOnAnIHwgc29ydCB8IHVuaXEgPiAiJHRtcGRlcGZpbGUiCisgICIkQCIgLUUgMj4vZGV2L251bGwgfAorICBzZWQgLW4gJy9eI2xpbmUgWzAtOV1bMC05XSogIlwoW14iXSpcKSIvIHM6OlwxOnAnIHwgJGN5Z3BhdGhfdSB8IHNvcnQgLXUgPiAiJHRtcGRlcGZpbGUiCiAgIHJtIC1mICIkZGVwZmlsZSIKICAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKLSAgLiAiJHRtcGRlcGZpbGUiIHwgc2VkICdzJSAlXFwgJWcnIHwgc2VkIC1uICcvXlwoLipcKSQvIHM6OglcMSBcXDpwJyA+PiAiJGRlcGZpbGUiCisgIHNlZCA8ICIkdG1wZGVwZmlsZSIgLW4gLWUgJ3MlICVcXCAlZycgLWUgJy9eXCguKlwpJC8gczo6CVwxIFxcOnAnID4+ICIkZGVwZmlsZSIKICAgZWNobyAiCSIgPj4gIiRkZXBmaWxlIgotICAuICIkdG1wZGVwZmlsZSIgfCBzZWQgJ3MlICVcXCAlZycgfCBzZWQgLW4gJy9eXCguKlwpJC8gczo6XDFcOjpwJyA+PiAiJGRlcGZpbGUiCisgIHNlZCA8ICIkdG1wZGVwZmlsZSIgLW4gLWUgJ3MlICVcXCAlZycgLWUgJy9eXCguKlwpJC8gczo6XDFcOjpwJyA+PiAiJGRlcGZpbGUiCiAgIHJtIC1mICIkdG1wZGVwZmlsZSIKICAgOzsKIAorbXN2Y21zeXMpCisgICMgVGhpcyBjYXNlIGV4aXN0cyBvbmx5IHRvIGxldCBkZXBlbmQubTQgZG8gaXRzIHdvcmsuICBJdCB3b3JrcyBieQorICAjIGxvb2tpbmcgYXQgdGhlIHRleHQgb2YgdGhpcyBzY3JpcHQuICBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSBydW4sCisgICMgc2luY2UgaXQgaXMgY2hlY2tlZCBmb3IgYWJvdmUuCisgIGV4aXQgMQorICA7OworCiBub25lKQogICBleGVjICIkQCIKICAgOzsKQEAgLTU4MCw1ICs2MjUsNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbwppbmRleCA4OTZhNWVjLi40MDJmNzYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpCmluZGV4IDlmYTViMTcuLmYwZTY1MTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpCkBAIC0xOSw3ICsxOSw3IEBACiBUaGlzIG1hbnVhbCBpcyBmb3IgTGliZmZpLCBhIHBvcnRhYmxlIGZvcmVpZ24tZnVuY3Rpb24gaW50ZXJmYWNlCiBsaWJyYXJ5LgogCi1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMDgsIDIwMTAgUmVkIEhhdCwgSW5jLgorQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAyMDA4LCAyMDEwLCAyMDExIFJlZCBIYXQsIEluYy4KIAogQHF1b3RhdGlvbgogUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CkBAIC0xMzMsOCArMTMzLDYgQEAKIHlvdSB3YW50LiAgQHJlZntNdWx0aXBsZSBBQklzfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogQHZhcntuYXJnc30gaXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGFjY2VwdHMuCi1Ac2FtcHtsaWJmZml9IGRvZXMgbm90IHlldCBoYW5kbGUgdmFyYXJncyBmdW5jdGlvbnM7IHNlZSBAcmVme01pc3NpbmcKLUZlYXR1cmVzfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogQHZhcntydHlwZX0gaXMgYSBwb2ludGVyIHRvIGFuIEBjb2Rle2ZmaV90eXBlfSBzdHJ1Y3R1cmUgdGhhdAogZGVzY3JpYmVzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uICBAeHJlZntUeXBlc30uCkBAIC0xNTAsNiArMTQ4LDMwIEBACiBpcyBpbnZhbGlkLgogQGVuZCBkZWZ1bgogCitJZiB0aGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGlzIHZhcmlhZGljICh2YXJhcmdzKSB0aGVuCitAY29kZXtmZmlfcHJlcF9jaWZfdmFyfSBtdXN0IGJlIHVzZWQgaW5zdGVhZCBvZiBAY29kZXtmZmlfcHJlcF9jaWZ9LgorCitAZmluZGV4IGZmaV9wcmVwX2NpZl92YXIKK0BkZWZ1biBmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl92YXIgKGZmaV9jaWYgKkB2YXJ7Y2lmfSwgZmZpX2FiaSB2YXJ7YWJpfSwgdW5zaWduZWQgaW50IEB2YXJ7bmZpeGVkYXJnc30sIHVuc2lnbmVkIGludCB2YXJ7bnRvdGFsYXJnc30sIGZmaV90eXBlICpAdmFye3J0eXBlfSwgZmZpX3R5cGUgKipAdmFye2FyZ3R5cGVzfSkKK1RoaXMgaW5pdGlhbGl6ZXMgQHZhcntjaWZ9IGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBmb3IKK2EgY2FsbCB0byBhIHZhcmlhZGljIGZ1bmN0aW9uLiAgSW4gZ2VuZXJhbCBpdCdzIG9wZXJhdGlvbiBpcyB0aGUKK3NhbWUgYXMgZm9yIEBjb2Rle2ZmaV9wcmVwX2NpZn0gZXhjZXB0IHRoYXQ6CisKK0B2YXJ7bmZpeGVkYXJnc30gaXMgdGhlIG51bWJlciBvZiBmaXhlZCBhcmd1bWVudHMsIHByaW9yIHRvIGFueQordmFyaWFkaWMgYXJndW1lbnRzLiAgSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KKworQHZhcntudG90YWxhcmdzfSB0aGUgdG90YWwgbnVtYmVyIG9mIGFyZ3VtZW50cywgaW5jbHVkaW5nIHZhcmlhZGljCithbmQgZml4ZWQgYXJndW1lbnRzLgorCitOb3RlIHRoYXQsIGRpZmZlcmVudCBjaWYncyBtdXN0IGJlIHByZXBwZWQgZm9yIGNhbGxzIHRvIHRoZSBzYW1lCitmdW5jdGlvbiB3aGVuIGRpZmZlcmVudCBudW1iZXJzIG9mIGFyZ3VtZW50cyBhcmUgcGFzc2VkLgorCitBbHNvIG5vdGUgdGhhdCBhIGNhbGwgdG8gQGNvZGV7ZmZpX3ByZXBfY2lmX3Zhcn0gd2l0aAorQHZhcntuZml4ZWRhcmdzfT1AdmFye25vdG90YWxhcmdzfSBpcyBOT1QgZXF1aXZhbGVudCB0byBhIGNhbGwgdG8KK0Bjb2Rle2ZmaV9wcmVwX2NpZn0uCisKK0BlbmQgZGVmdW4KKwogCiBUbyBjYWxsIGEgZnVuY3Rpb24gdXNpbmcgYW4gaW5pdGlhbGl6ZWQgQGNvZGV7ZmZpX2NpZn0sIHVzZSB0aGUKIEBjb2Rle2ZmaV9jYWxsfSBmdW5jdGlvbjoKQEAgLTE3MSw3ICsxOTMsOSBAQAogQHZhcnthdmFsdWVzfSBpcyBhIHZlY3RvciBvZiBAY29kZXt2b2lkICp9IHBvaW50ZXJzIHRoYXQgcG9pbnQgdG8gdGhlCiBtZW1vcnkgbG9jYXRpb25zIGhvbGRpbmcgdGhlIGFyZ3VtZW50IHZhbHVlcyBmb3IgYSBjYWxsLiAgSWYgQHZhcntjaWZ9CiBkZWNsYXJlcyB0aGF0IHRoZSBmdW5jdGlvbiBoYXMgbm8gYXJndW1lbnRzIChpLmUuLCBAdmFye25hcmdzfSB3YXMgMCksCi10aGVuIEB2YXJ7YXZhbHVlc30gaXMgaWdub3JlZC4KK3RoZW4gQHZhcnthdmFsdWVzfSBpcyBpZ25vcmVkLiAgTm90ZSB0aGF0IGFyZ3VtZW50IHZhbHVlcyBtYXkgYmUKK21vZGlmaWVkIGJ5IHRoZSBjYWxsZWUgKGZvciBpbnN0YW5jZSwgc3RydWN0cyBwYXNzZWQgYnkgdmFsdWUpOyB0aGUKK2J1cmRlbiBvZiBjb3B5aW5nIHBhc3MtYnktdmFsdWUgYXJndW1lbnRzIGlzIHBsYWNlZCBvbiB0aGUgY2FsbGVyLgogQGVuZCBkZWZ1bgogCiAKQEAgLTQzOCw3ICs0NjIsNyBAQAogaGVhcC4gIE1lbW9yeSBtYW5hZ2VtZW50IGZvciBjbG9zdXJlcyBpcyBoYW5kbGVkIGJ5IGEgcGFpciBvZgogZnVuY3Rpb25zOgogCi1AZmluZGV4IGZmaV9jbG9zdXJlX2FsbG9jYQorQGZpbmRleCBmZmlfY2xvc3VyZV9hbGxvYwogQGRlZnVuIHZvaWQgKmZmaV9jbG9zdXJlX2FsbG9jIChzaXplX3QgQHZhcntzaXplfSwgdm9pZCAqKkB2YXJ7Y29kZX0pCiBBbGxvY2F0ZSBhIGNodW5rIG9mIG1lbW9yeSBob2xkaW5nIEB2YXJ7c2l6ZX0gYnl0ZXMuICBUaGlzIHJldHVybnMgYQogcG9pbnRlciB0byB0aGUgd3JpdGFibGUgYWRkcmVzcywgYW5kIHNldHMgKkB2YXJ7Y29kZX0gdG8gdGhlCkBAIC01NzAsOSArNTk0LDcgQEAKIAogQGl0ZW1pemUgQGJ1bGxldAogQGl0ZW0KLVRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGNhbGxpbmcgdmFyYXJncyBmdW5jdGlvbnMuICBUaGlzIG1heSB3b3JrIG9uCi1zb21lIHBsYXRmb3JtcywgZGVwZW5kaW5nIG9uIGhvdyB0aGUgQUJJIGlzIGRlZmluZWQsIGJ1dCBpdCBpcyBub3QKLXJlbGlhYmxlLgorVmFyaWFkaWMgY2xvc3VyZXMuCiAKIEBpdGVtCiBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciBiaXQgZmllbGRzIGluIHN0cnVjdHVyZXMuCkBAIC01ODksNiArNjExLDggQEAKIEBjIGFueXRoaW5nIGVsc2U/CiBAZW5kIGl0ZW1pemUKIAorTm90ZSB0aGF0IHZhcmlhZGljIHN1cHBvcnQgaXMgdmVyeSBuZXcgYW5kIHRlc3RlZCBvbiBhIHJlbGF0aXZlbHkKK3NtYWxsIG51bWJlciBvZiBwbGF0Zm9ybXMuCiAKIEBub2RlIEluZGV4CiBAdW5udW1iZXJlZCBJbmRleApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpCmluZGV4IDgxZDBiNzkuLmUyNTlhMTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9zdGFtcC12dGkKQEAgLTEsNCArMSw0IEBACi1Ac2V0IFVQREFURUQgMTQgRmVicnVhcnkgMjAwOAotQHNldCBVUERBVEVELU1PTlRIIEZlYnJ1YXJ5IDIwMDgKLUBzZXQgRURJVElPTiAzLjAuOAotQHNldCBWRVJTSU9OIDMuMC44CitAc2V0IFVQREFURUQgMTEgQXByaWwgMjAxMgorQHNldCBVUERBVEVELU1PTlRIIEFwcmlsIDIwMTIKK0BzZXQgRURJVElPTiAzLjAuMTEKK0BzZXQgVkVSU0lPTiAzLjAuMTEKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aQppbmRleCA4MWQwYjc5Li5lMjU5YTEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvdmVyc2lvbi50ZXhpCkBAIC0xLDQgKzEsNCBAQAotQHNldCBVUERBVEVEIDE0IEZlYnJ1YXJ5IDIwMDgKLUBzZXQgVVBEQVRFRC1NT05USCBGZWJydWFyeSAyMDA4Ci1Ac2V0IEVESVRJT04gMy4wLjgKLUBzZXQgVkVSU0lPTiAzLjAuOAorQHNldCBVUERBVEVEIDExIEFwcmlsIDIwMTIKK0BzZXQgVVBEQVRFRC1NT05USCBBcHJpbCAyMDEyCitAc2V0IEVESVRJT04gMy4wLjExCitAc2V0IFZFUlNJT04gMy4wLjExCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbgppbmRleCBlMDNiYmY5Li4xNjhlYmMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZmZpY29uZmlnLmguaW4KQEAgLTE3LDYgKzE3LDkgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IGV4dHJhIGRlYnVnZ2luZy4gKi8KICN1bmRlZiBGRklfREVCVUcKIAorLyogQ2Fubm90IHVzZSBQUk9UX0VYRUMgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8gYWx0ZXJuYXRpdmUgbWVhbnMgKi8KKyN1bmRlZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisKIC8qIENhbm5vdCB1c2UgbWFsbG9jIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvIGFsdGVybmF0aXZlIG1lYW5zICovCiAjdW5kZWYgRkZJX01NQVBfRVhFQ19XUklUCiAKQEAgLTMzLDYgKzM2LDkgQEAKICAgICovCiAjdW5kZWYgSEFWRV9BTExPQ0FfSAogCisvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmFzY2lpLiAqLworI3VuZGVmIEhBVkVfQVNfQVNDSUlfUFNFVURPX09QCisKIC8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuY2ZpXyogZGlyZWN0aXZlcy4gKi8KICN1bmRlZiBIQVZFX0FTX0NGSV9QU0VVRE9fT1AKIApAQCAtNDMsNiArNDksMTIgQEAKICAgICovCiAjdW5kZWYgSEFWRV9BU19TUEFSQ19VQV9QQ1JFTAogCisvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnN0cmluZy4gKi8KKyN1bmRlZiBIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AKKworLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIHVud2luZCBzZWN0aW9uIHR5cGUuICovCisjdW5kZWYgSEFWRV9BU19YODZfNjRfVU5XSU5EX1NFQ1RJT05fVFlQRQorCiAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgUEMgcmVsYXRpdmUgcmVsb2NzLiAqLwogI3VuZGVmIEhBVkVfQVNfWDg2X1BDUkVMCiAKQEAgLTE0OCw2ICsxNjAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCiAjdW5kZWYgU1REQ19IRUFERVJTCiAKKy8qIERlZmluZSBpZiBzeW1ib2xzIGFyZSB1bmRlcnNjb3JlZC4gKi8KKyN1bmRlZiBTWU1CT0xfVU5ERVJTQ09SRQorCiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIFB1cmlmeSBhbmQgd2FudCB0byBzdXBwcmVzcyBzcHVyaW91cyBtZXNzYWdlcy4KICAgICovCiAjdW5kZWYgVVNJTkdfUFVSSUZZCkBAIC0xNjcsNiArMTgyLDkgQEAKICMgZW5kaWYKICNlbmRpZgogCisvKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgc2l6ZV90CisKIAogI2lmZGVmIEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFCiAjaWZkZWYgTElCRkZJX0FTTQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYmNhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHJlCitpbXBvcnQgb3MKK2ltcG9ydCBlcnJubworaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgc3lzCisKK2NsYXNzIFBsYXRmb3JtKG9iamVjdCk6CisgICAgcGFzcworCitzZGtfcmUgPSByZS5jb21waWxlKHInLiotc2RrIChbYS16QS1aMC05Ll0qKScpCisKK2RlZiBzZGtpbmZvKHNka25hbWUpOgorICAgIHJldCA9IHt9CisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNkaycsIHNka25hbWUsICctdmVyc2lvbiddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIGt2ID0gbGluZS5zdHJpcCgpLnNwbGl0KCc6ICcsIDEpCisgICAgICAgIGlmIGxlbihrdikgPT0gMjoKKyAgICAgICAgICAgIGssdiA9IGt2CisgICAgICAgICAgICByZXRba10gPSB2CisgICAgcmV0dXJuIHJldAorCitzaW1fc2RrX2luZm8gPSBzZGtpbmZvKCdpcGhvbmVzaW11bGF0b3InKQorZGV2aWNlX3Nka19pbmZvID0gc2RraW5mbygnaXBob25lb3MnKQorCitkZWYgbGF0ZXN0X3Nka3MoKToKKyAgICBsYXRlc3Rfc2ltID0gTm9uZQorICAgIGxhdGVzdF9kZXZpY2UgPSBOb25lCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNob3dzZGtzJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAgbWF0Y2ggPSBzZGtfcmUubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBpZiAnU2ltdWxhdG9yJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxhdGVzdF9zaW0gPSBtYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgZWxpZiAnaU9TJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxhdGVzdF9kZXZpY2UgPSBtYXRjaC5ncm91cCgxKQorCisgICAgcmV0dXJuIGxhdGVzdF9zaW0sIGxhdGVzdF9kZXZpY2UKKworc2ltX3NkaywgZGV2aWNlX3NkayA9IGxhdGVzdF9zZGtzKCkKKworY2xhc3Mgc2ltdWxhdG9yX3BsYXRmb3JtKFBsYXRmb3JtKToKKyAgICBzZGs9J2lwaG9uZXNpbXVsYXRvcicKKyAgICBhcmNoID0gJ2kzODYnCisgICAgbmFtZSA9ICdzaW11bGF0b3InCisgICAgdHJpcGxlID0gJ2kzODYtYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IHNpbV9zZGtfaW5mb1snUGF0aCddCisKKyAgICBwcmVmaXggPSAiI2lmICFkZWZpbmVkKF9fYXJtX18pICYmIGRlZmluZWQoX19pMzg2X18pXG5cbiIKKyAgICBzdWZmaXggPSAiXG5cbiNlbmRpZiIKKworY2xhc3MgZGV2aWNlX3BsYXRmb3JtKFBsYXRmb3JtKToKKyAgICBzZGs9J2lwaG9uZW9zJworICAgIG5hbWUgPSAnaW9zJworICAgIGFyY2ggPSAnYXJtdjcnCisgICAgdHJpcGxlID0gJ2FybS1hcHBsZS1kYXJ3aW4xMCcKKyAgICBzZGtyb290ID0gZGV2aWNlX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWZkZWYgX19hcm1fX1xuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKKworZGVmIG1vdmVfZmlsZShzcmNfZGlyLCBkc3RfZGlyLCBmaWxlbmFtZSwgZmlsZV9zdWZmaXg9Tm9uZSwgcHJlZml4PScnLCBzdWZmaXg9JycpOgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoZHN0X2RpcikKKworICAgIG91dF9maWxlbmFtZSA9IGZpbGVuYW1lCisKKyAgICBpZiBmaWxlX3N1ZmZpeDoKKyAgICAgICAgc3BsaXRfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgICAgIG91dF9maWxlbmFtZSA9ICAiJXNfJXMlcyIgJSAoc3BsaXRfbmFtZVswXSwgZmlsZV9zdWZmaXgsIHNwbGl0X25hbWVbMV0pCisKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNyY19kaXIsIGZpbGVuYW1lKSkgYXMgaW5fZmlsZToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkc3RfZGlyLCBvdXRfZmlsZW5hbWUpLCAndycpIGFzIG91dF9maWxlOgorICAgICAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHByZWZpeCkKKworICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoaW5fZmlsZS5yZWFkKCkpCisKKyAgICAgICAgICAgIGlmIHN1ZmZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShzdWZmaXgpCisKK2hlYWRlcnNfc2VlbiA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KHNldCkKKworZGVmIG1vdmVfc291cmNlX3RyZWUoc3JjX2RpciwgZGVzdF9kaXIsIGRlc3RfaW5jbHVkZV9kaXIsIGFyY2g9Tm9uZSwgcHJlZml4PU5vbmUsIHN1ZmZpeD1Ob25lKToKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzcmNfZGlyLCBmb2xsb3dsaW5rcz1UcnVlKToKKyAgICAgICAgcmVscm9vdCA9IG9zLnBhdGgucmVscGF0aChyb290LHNyY19kaXIpCisKKyAgICAgICAgZGVmIG1vdmVfZGlyKGFyY2gsIHByZWZpeD0nJywgc3VmZml4PScnLCBmaWxlcz1bXSk6CisgICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmaWxlX3N1ZmZpeCA9IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCcuaCcpOgorICAgICAgICAgICAgICAgICAgICBpZiBkZXN0X2luY2x1ZGVfZGlyOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBhcmNoCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNfc2VlbltmaWxlXS5hZGQoYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBkZXN0X2luY2x1ZGVfZGlyLCBmaWxlLCBhcmNoLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgICAgICAgICAgZWxpZiBkZXN0X2RpcjoKKyAgICAgICAgICAgICAgICAgICAgb3V0cm9vdCA9IG9zLnBhdGguam9pbihkZXN0X2RpciwgcmVscm9vdCkKKyAgICAgICAgICAgICAgICAgICAgbW92ZV9maWxlKHJvb3QsIG91dHJvb3QsIGZpbGUsIHByZWZpeD1wcmVmaXgsIHN1ZmZpeD1zdWZmaXgpCisKKyAgICAgICAgaWYgcmVscm9vdCA9PSAnLic6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPWFyY2gsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9c3VmZml4KQorICAgICAgICBlbGlmIHJlbHJvb3QgPT0gJ2FybSc6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPSdhcm0nLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSIjaWZkZWYgX19hcm1fX1xuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorICAgICAgICBlbGlmIHJlbHJvb3QgPT0gJ3g4Nic6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPSdpMzg2JywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmICFkZWZpbmVkKF9fYXJtX18pICYmIGRlZmluZWQoX19pMzg2X18pXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9IlxuXG4jZW5kaWYiLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMpCisKK2RlZiBidWlsZF90YXJnZXQocGxhdGZvcm0pOgorICAgIGRlZiB4Y3J1bl9jbWQoY21kKToKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnLXNkaycsIHBsYXRmb3JtLnNka3Jvb3QsICctZmluZCcsIGNtZF0pLnN0cmlwKCkKKworICAgIGJ1aWxkX2RpciA9ICdidWlsZF8nICsgcGxhdGZvcm0ubmFtZQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhidWlsZF9kaXIpCisgICAgICAgIGVudiA9IGRpY3QoQ0M9eGNydW5fY21kKCdjbGFuZycpLAorICAgICAgICAgICAgICAgICAgIExEPXhjcnVuX2NtZCgnbGQnKSwKKyAgICAgICAgICAgICAgICAgICBDRkxBR1M9Jy1hcmNoICVzIC1pc3lzcm9vdCAlcyAtbWlwaG9uZW9zLXZlcnNpb24tbWluPTQuMCcgJSAocGxhdGZvcm0uYXJjaCwgcGxhdGZvcm0uc2Rrcm9vdCkpCisgICAgICAgIHdvcmtpbmdfZGlyPW9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKGJ1aWxkX2RpcikKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy4uL2NvbmZpZ3VyZScsICctaG9zdCcsIHBsYXRmb3JtLnRyaXBsZV0sIGVudj1lbnYpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuJywgTm9uZSwgJy4uL2lvcy9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLi9pbmNsdWRlJywgTm9uZSwgJy4uL2lvcy9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXBsYXRmb3JtLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIod29ya2luZ19kaXIpCisKKyAgICAgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKworZGVmIG1haW4oKToKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdzcmMnLCAnaW9zL3NyYycsICdpb3MvaW5jbHVkZScpCisgICAgbW92ZV9zb3VyY2VfdHJlZSgnaW5jbHVkZScsIE5vbmUsICdpb3MvaW5jbHVkZScpCisgICAgYnVpbGRfdGFyZ2V0KHNpbXVsYXRvcl9wbGF0Zm9ybSkKKyAgICBidWlsZF90YXJnZXQoZGV2aWNlX3BsYXRmb3JtKQorCisgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgIGJhc2VuYW1lLCBzdWZmaXggPSBvcy5wYXRoLnNwbGl0ZXh0KGhlYWRlcl9uYW1lKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdpb3MvaW5jbHVkZScsIGhlYWRlcl9uYW1lKSwgJ3cnKSBhcyBoZWFkZXI6CisgICAgICAgICAgICBmb3IgYXJjaCBpbiBhcmNoczoKKyAgICAgICAgICAgICAgICBoZWFkZXIud3JpdGUoJyNpbmNsdWRlIDwlc18lcyVzPlxuJyAlIChiYXNlbmFtZSwgYXJjaCwgc3VmZml4KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDMxM2MxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5CkBAIC0wLDAgKzEsMTUzIEBACisjIS91c3IvYmluL2VudiBweXRob24KK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgcmUKK2ltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBzeXMKKworY2xhc3MgUGxhdGZvcm0ob2JqZWN0KToKKyAgICBwYXNzCisKK3Nka19yZSA9IHJlLmNvbXBpbGUocicuKi1zZGsgKFthLXpBLVowLTkuXSopJykKKworZGVmIHNka2luZm8oc2RrbmFtZSk6CisgICAgcmV0ID0ge30KKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLlBvcGVuKFsneGNvZGVidWlsZCcsICctc2RrJywgc2RrbmFtZSwgJy12ZXJzaW9uJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAga3YgPSBsaW5lLnN0cmlwKCkuc3BsaXQoJzogJywgMSkKKyAgICAgICAgaWYgbGVuKGt2KSA9PSAyOgorICAgICAgICAgICAgayx2ID0ga3YKKyAgICAgICAgICAgIHJldFtrXSA9IHYKKyAgICByZXR1cm4gcmV0CisKK2Rlc2t0b3Bfc2RrX2luZm8gPSBzZGtpbmZvKCdtYWNvc3gnKQorCitkZWYgbGF0ZXN0X3Nka3MoKToKKyAgICBsYXRlc3RfZGVza3RvcCA9IE5vbmUKKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLlBvcGVuKFsneGNvZGVidWlsZCcsICctc2hvd3Nka3MnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0OgorICAgICAgICBtYXRjaCA9IHNka19yZS5tYXRjaChsaW5lKQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIGlmICdPUyBYJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxhdGVzdF9kZXNrdG9wID0gbWF0Y2guZ3JvdXAoMSkKKworICAgIHJldHVybiBsYXRlc3RfZGVza3RvcAorCitkZXNrdG9wX3NkayA9IGxhdGVzdF9zZGtzKCkKKworY2xhc3MgZGVza3RvcF9wbGF0Zm9ybV8zMihQbGF0Zm9ybSk6CisgICAgc2RrPSdtYWNvc3gnCisgICAgYXJjaCA9ICdpMzg2JworICAgIG5hbWUgPSAnbWFjMzInCisgICAgdHJpcGxlID0gJ2kzODYtYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IGRlc2t0b3Bfc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKK2NsYXNzIGRlc2t0b3BfcGxhdGZvcm1fNjQoUGxhdGZvcm0pOgorICAgIHNkaz0nbWFjb3N4JworICAgIGFyY2ggPSAneDg2XzY0JworICAgIG5hbWUgPSAnbWFjJworICAgIHRyaXBsZSA9ICd4ODZfNjQtYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IGRlc2t0b3Bfc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZiAhZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKK2RlZiBtb3ZlX2ZpbGUoc3JjX2RpciwgZHN0X2RpciwgZmlsZW5hbWUsIGZpbGVfc3VmZml4PU5vbmUsIHByZWZpeD0nJywgc3VmZml4PScnKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGRzdF9kaXIpCisKKyAgICBvdXRfZmlsZW5hbWUgPSBmaWxlbmFtZQorCisgICAgaWYgZmlsZV9zdWZmaXg6CisgICAgICAgIHNwbGl0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQorICAgICAgICBvdXRfZmlsZW5hbWUgPSAgIiVzXyVzJXMiICUgKHNwbGl0X25hbWVbMF0sIGZpbGVfc3VmZml4LCBzcGxpdF9uYW1lWzFdKQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzcmNfZGlyLCBmaWxlbmFtZSkpIGFzIGluX2ZpbGU6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZHN0X2Rpciwgb3V0X2ZpbGVuYW1lKSwgJ3cnKSBhcyBvdXRfZmlsZToKKyAgICAgICAgICAgIGlmIHByZWZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShwcmVmaXgpCisKKyAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGluX2ZpbGUucmVhZCgpKQorCisgICAgICAgICAgICBpZiBzdWZmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc3VmZml4KQorCitoZWFkZXJzX3NlZW4gPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCisKK2RlZiBtb3ZlX3NvdXJjZV90cmVlKHNyY19kaXIsIGRlc3RfZGlyLCBkZXN0X2luY2x1ZGVfZGlyLCBhcmNoPU5vbmUsIHByZWZpeD1Ob25lLCBzdWZmaXg9Tm9uZSk6CisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjX2RpciwgZm9sbG93bGlua3M9VHJ1ZSk6CisgICAgICAgIHJlbHJvb3QgPSBvcy5wYXRoLnJlbHBhdGgocm9vdCxzcmNfZGlyKQorCisgICAgICAgIGRlZiBtb3ZlX2RpcihhcmNoLCBwcmVmaXg9JycsIHN1ZmZpeD0nJywgZmlsZXM9W10pOgorICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBOb25lCisgICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmgnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVzdF9pbmNsdWRlX2RpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gYXJjaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJjaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX3NlZW5bZmlsZV0uYWRkKGFyY2gpCisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgZGVzdF9pbmNsdWRlX2RpciwgZmlsZSwgYXJjaCwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICAgICAgICAgIGVsaWYgZGVzdF9kaXI6CisgICAgICAgICAgICAgICAgICAgIG91dHJvb3QgPSBvcy5wYXRoLmpvaW4oZGVzdF9kaXIsIHJlbHJvb3QpCisgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBvdXRyb290LCBmaWxlLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgIGlmIHJlbHJvb3QgPT0gJy4nOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD1hcmNoLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXN1ZmZpeCkKKyAgICAgICAgZWxpZiByZWxyb290ID09ICd4ODYnOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0naTM4NicsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0neDg2XzY0JywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9IlxuXG4jZW5kaWYiLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMpCisKK2RlZiBidWlsZF90YXJnZXQocGxhdGZvcm0pOgorICAgIGRlZiB4Y3J1bl9jbWQoY21kKToKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnLXNkaycsIHBsYXRmb3JtLnNka3Jvb3QsICctZmluZCcsIGNtZF0pLnN0cmlwKCkKKworICAgIGJ1aWxkX2RpciA9ICdidWlsZF8nICsgcGxhdGZvcm0ubmFtZQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhidWlsZF9kaXIpCisgICAgICAgIGVudiA9IGRpY3QoQ0M9eGNydW5fY21kKCdjbGFuZycpLAorICAgICAgICAgICAgICAgICAgIExEPXhjcnVuX2NtZCgnbGQnKSwKKyAgICAgICAgICAgICAgICAgICBDRkxBR1M9Jy1hcmNoICVzIC1pc3lzcm9vdCAlcyAtbW1hY29zeC12ZXJzaW9uLW1pbj0xMC42JyAlIChwbGF0Zm9ybS5hcmNoLCBwbGF0Zm9ybS5zZGtyb290KSkKKyAgICAgICAgd29ya2luZ19kaXI9b3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoYnVpbGRfZGlyKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsnLi4vY29uZmlndXJlJywgJy1ob3N0JywgcGxhdGZvcm0udHJpcGxlXSwgZW52PWVudikKKyAgICAgICAgICAgIG1vdmVfc291cmNlX3RyZWUoJy4nLCBOb25lLCAnLi4vb3N4L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1wbGF0Zm9ybS5zdWZmaXgpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuL2luY2x1ZGUnLCBOb25lLCAnLi4vb3N4L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1wbGF0Zm9ybS5zdWZmaXgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcih3b3JraW5nX2RpcikKKworICAgICAgICBmb3IgaGVhZGVyX25hbWUsIGFyY2hzIGluIGhlYWRlcnNfc2Vlbi5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGJhc2VuYW1lLCBzdWZmaXggPSBvcy5wYXRoLnNwbGl0ZXh0KGhlYWRlcl9uYW1lKQorCitkZWYgbWFpbigpOgorICAgIG1vdmVfc291cmNlX3RyZWUoJ3NyYycsICdvc3gvc3JjJywgJ29zeC9pbmNsdWRlJykKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdpbmNsdWRlJywgTm9uZSwgJ29zeC9pbmNsdWRlJykKKyAgICBidWlsZF90YXJnZXQoZGVza3RvcF9wbGF0Zm9ybV8zMikKKyAgICBidWlsZF90YXJnZXQoZGVza3RvcF9wbGF0Zm9ybV82NCkKKworICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbignb3N4L2luY2x1ZGUnLCBoZWFkZXJfbmFtZSksICd3JykgYXMgaGVhZGVyOgorICAgICAgICAgICAgZm9yIGFyY2ggaW4gYXJjaHM6CisgICAgICAgICAgICAgICAgaGVhZGVyLndyaXRlKCcjaW5jbHVkZSA8JXNfJXMlcz5cbicgJSAoYmFzZW5hbWUsIGFyY2gsIHN1ZmZpeCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4KaW5kZXggMTM2ZjM2Yy4uNzlkNDkzZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0zNyw3ICszNyw3IEBACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACiBzdWJkaXIgPSBpbmNsdWRlCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAotCSQoc3JjZGlyKS9mZmkuaC5pbgorCSQoc3JjZGlyKS9mZmkuaC5pbiAkKHNyY2RpcikvZmZpX2NvbW1vbi5oCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgXAogCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCkBAIC00Niw3ICs0Niw3IEBACiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9mZmljb25maWcuaAogQ09ORklHX0NMRUFOX0ZJTEVTID0gZmZpLmggZmZpdGFyZ2V0LmgKLUNPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CitDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPSBmZmlfY29tbW9uLmgKIFNPVVJDRVMgPQogRElTVF9TT1VSQ0VTID0KIGFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwpAQCAtNzAsNiArNzAsMTIgQEAKIGFtX19iYXNlX2xpc3QgPSBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKK2FtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKKyAgdGVzdCAteiAiJCRmaWxlcyIgXAorICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAorICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKyAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKKyAgfQogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGluY2x1ZGVzZGlyKSIKIEhFQURFUlMgPSAkKG5vZGlzdF9pbmNsdWRlc19IRUFERVJTKQogRVRBR1MgPSBldGFncwpAQCAtNzgsNiArODQsNyBAQAogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUxMT0NBID0gQEFMTE9DQUAKIEFNVEFSID0gQEFNVEFSQAorQU1fTFRMREZMQUdTID0gQEFNX0xUTERGTEFHU0AKIEFNX1JVTlRFU1RGTEFHUyA9IEBBTV9SVU5URVNURkxBR1NACiBBUiA9IEBBUkAKIEFVVE9DT05GID0gQEFVVE9DT05GQApAQCAtOTUsNiArMTAyLDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtMTAyLDYgKzExMCw3IEBACiBFQ0hPX1QgPSBARUNIT19UQAogRUdSRVAgPSBARUdSRVBACiBFWEVFWFQgPSBARVhFRVhUQAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAogRkdSRVAgPSBARkdSRVBACiBHUkVQID0gQEdSRVBACiBIQVZFX0xPTkdfRE9VQkxFID0gQEhBVkVfTE9OR19ET1VCTEVACkBAIC0xMjAsNiArMTI5LDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMTMyLDYgKzE0Miw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMTQ2LDYgKzE1Nyw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTE3OCw3ICsxOTAsNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0yNjMsOSArMjc0LDcgQEAKIAlAJChOT1JNQUxfVU5JTlNUQUxMKQogCUBsaXN0PSckKG5vZGlzdF9pbmNsdWRlc19IRUFERVJTKSc7IHRlc3QgLW4gIiQoaW5jbHVkZXNkaXIpIiB8fCBsaXN0PTsgXAogCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCi0JdGVzdCAtbiAiJCRmaWxlcyIgfHwgZXhpdCAwOyBcCi0JZWNobyAiICggY2QgJyQoREVTVERJUikkKGluY2x1ZGVzZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JY2QgIiQoREVTVERJUikkKGluY2x1ZGVzZGlyKSIgJiYgcm0gLWYgJCRmaWxlcworCWRpcj0nJChERVNURElSKSQoaW5jbHVkZXNkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQogCiBJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQogCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCkBAIC0zNjYsMTAgKzM3NSwxNSBAQAogCiBpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4KaW5kZXggZGY3ZDJjZC4uYTUxNTgzYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmkuaC5pbgpAQCAtMSwxNiArMSwxNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGxpYmZmaSBAVkVSU0lPTkAgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgorICAgbGliZmZpIEBWRVJTSU9OQCAtIENvcHlyaWdodCAoYykgMjAxMSBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgICAgIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMDcsIDIwMDggUmVkIEhhdCwgSW5jLgogCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKyAgIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCisgICBmaWxlcyAodGhlIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAgIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorICAgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgICBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKIAotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAgIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAogICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCkBAIC01Nyw3ICs1OCw5IEBACiAjZW5kaWYKIAogLyogU3BlY2lmeSB3aGljaCBhcmNoaXRlY3R1cmUgbGliZmZpIGlzIGNvbmZpZ3VyZWQgZm9yLiAqLworI2lmbmRlZiBAVEFSR0VUQAogI2RlZmluZSBAVEFSR0VUQAorI2VuZGlmCiAKIC8qIC0tLS0gU3lzdGVtIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTc1LDE1ICs3OCwzMSBAQAogLyogTE9OR19MT05HX01BWCBpcyBub3QgYWx3YXlzIGRlZmluZWQgKG5vdCBpZiBTVFJJQ1RfQU5TSSwgZm9yIGV4YW1wbGUpLgogICAgQnV0IHdlIGNhbiBmaW5kIGl0IGVpdGhlciB1bmRlciB0aGUgY29ycmVjdCBBTlNJIG5hbWUsIG9yIHVuZGVyIEdOVQogICAgQydzIGludGVybmFsIG5hbWUuICAqLworCisjZGVmaW5lIEZGSV82NF9CSVRfTUFYIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKwogI2lmZGVmIExPTkdfTE9OR19NQVgKICMgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExPTkdfTE9OR19NQVgKICNlbHNlCiAjIGlmZGVmIExMT05HX01BWAogIyAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExMT05HX01BWAorIyAgaWZkZWYgX0FJWDUyIC8qIG9yIG5ld2VyIGhhcyBDOTkgTExPTkdfTUFYICovCisjICAgdW5kZWYgRkZJXzY0X0JJVF9NQVgKKyMgICBkZWZpbmUgRkZJXzY0X0JJVF9NQVggOTIyMzM3MjAzNjg1NDc3NTgwN0xMCisjICBlbmRpZiAvKiBfQUlYNTIgb3IgbmV3ZXIgKi8KICMgZWxzZQogIyAgaWZkZWYgX19HTlVDX18KICMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KICMgIGVuZGlmCisjICBpZmRlZiBfQUlYIC8qIEFJWCA1LjEgYW5kIGVhcmxpZXIgaGF2ZSBMT05HTE9OR19NQVggKi8KKyMgICBpZm5kZWYgX19QUEM2NF9fCisjICAgIGlmIGRlZmluZWQgKF9fSUJNQ19fKSB8fCBkZWZpbmVkIChfX0lCTUNQUF9fKQorIyAgICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExPTkdMT05HX01BWAorIyAgICBlbmRpZgorIyAgIGVuZGlmIC8qIF9fUFBDNjRfXyAqLworIyAgIHVuZGVmICBGRklfNjRfQklUX01BWAorIyAgIGRlZmluZSBGRklfNjRfQklUX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKKyMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKIApAQCAtMTMwLDM5ICsxNDksNTMgQEAKICNlbmRpZgogCiAjaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwotIyBpZiBGRklfTE9OR19MT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3CisjIGlmIEZGSV9MT05HX0xPTkdfTUFYICE9IEZGSV82NF9CSVRfTUFYCiAgI2Vycm9yICJubyA2NC1iaXQgZGF0YSB0eXBlIHN1cHBvcnRlZCIKICMgZW5kaWYKLSNlbGlmIExPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyNlbGlmIExPTkdfTUFYICE9IEZGSV82NF9CSVRfTUFYCiAgI2Vycm9yICJsb25nIHNpemUgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCiAjaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwogIyBkZWZpbmUgZmZpX3R5cGVfdWxvbmcgICAgICAgIGZmaV90eXBlX3VpbnQzMgogIyBkZWZpbmUgZmZpX3R5cGVfc2xvbmcgICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2VsaWYgTE9OR19NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNworI2VsaWYgTE9OR19NQVggPT0gRkZJXzY0X0JJVF9NQVgKICMgZGVmaW5lIGZmaV90eXBlX3Vsb25nICAgICAgICBmZmlfdHlwZV91aW50NjQKICMgZGVmaW5lIGZmaV90eXBlX3Nsb25nICAgICAgICBmZmlfdHlwZV9zaW50NjQKICNlbHNlCiAgI2Vycm9yICJsb25nIHNpemUgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCisvKiBOZWVkIG1pbmltYWwgZGVjb3JhdGlvbnMgZm9yIERMTHMgdG8gd29ya3Mgb24gV2luZG93cy4gKi8KKy8qIEdDQyBoYXMgYXV0b2ltcG9ydCBhbmQgYXV0b2V4cG9ydC4gIFJlbHkgb24gTGlidG9vbCB0byAqLworLyogaGVscCBNU1ZDIGV4cG9ydCBmcm9tIGEgRExMLCBidXQgYWx3YXlzIGRlY2xhcmUgZGF0YSAgICovCisvKiB0byBiZSBpbXBvcnRlZCBmb3IgTVNWQyBjbGllbnRzLiAgVGhpcyBjb3N0cyBhbiBleHRyYSAgKi8KKy8qIGluZGlyZWN0aW9uIGZvciBNU1ZDIGNsaWVudHMgdXNpbmcgdGhlIHN0YXRpYyB2ZXJzaW9uICAqLworLyogb2YgdGhlIGxpYnJhcnksIGJ1dCBkb24ndCB3b3JyeSBhYm91dCB0aGF0LiAgQmVzaWRlcywgICovCisvKiBhcyBhIHdvcmthcm91bmQsIHRoZXkgY2FuIGRlZmluZSBGRklfQlVJTERJTkcgaWYgdGhleSAgKi8KKy8qICprbm93KiB0aGV5IGFyZSBnb2luZyB0byBsaW5rIHdpdGggdGhlIHN0YXRpYyBsaWJyYXJ5LiAqLworI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgIWRlZmluZWQgRkZJX0JVSUxESU5HCisjZGVmaW5lIEZGSV9FWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgRkZJX0VYVEVSTiBleHRlcm4KKyNlbmRpZgorCiAvKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiB0eXBlcy5jICovCi1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdm9pZDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9mbG9hdDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9kb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdm9pZDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ4OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MTY7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDMyOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MzI7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDY0OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9mbG9hdDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9wb2ludGVyOwogCiAjaWYgQEhBVkVfTE9OR19ET1VCTEVACi1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfbG9uZ2RvdWJsZTsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfbG9uZ2RvdWJsZTsKICNlbHNlCiAjZGVmaW5lIGZmaV90eXBlX2xvbmdkb3VibGUgZmZpX3R5cGVfZG91YmxlCiAjZW5kaWYKQEAgLTE4OCwxMiArMjIxLDIxIEBACiAjZW5kaWYKIH0gZmZpX2NpZjsKIAorLyogVXNlZCBpbnRlcm5hbGx5LCBidXQgb3ZlcnJpZGRlbiBieSBzb21lIGFyY2hpdGVjdHVyZXMgKi8KK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX2NvcmUoZmZpX2NpZiAqY2lmLAorCQkJICAgICBmZmlfYWJpIGFiaSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGlzdmFyaWFkaWMsCisJCQkgICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorCQkJICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkJCSAgICAgZmZpX3R5cGUgKnJ0eXBlLAorCQkJICAgICBmZmlfdHlwZSAqKmF0eXBlcyk7CisKIC8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIHRoZSByYXcgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgRkZJX1NJWkVPRl9BUkcKICMgaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwogIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA0Ci0jIGVsaWYgTE9OR19NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNworIyBlbGlmIExPTkdfTUFYID09IEZGSV82NF9CSVRfTUFYCiAjICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDgKICMgZW5kaWYKICNlbmRpZgpAQCAtMjU1LDcgKzI5NywxMiBAQAogX19kZWNsc3BlYyhhbGlnbig4KSkKICNlbmRpZgogdHlwZWRlZiBzdHJ1Y3QgeworI2lmIEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAorICB2b2lkICp0cmFtcG9saW5lX3RhYmxlOworICB2b2lkICp0cmFtcG9saW5lX3RhYmxlX2VudHJ5OworI2Vsc2UKICAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKKyNlbmRpZgogICBmZmlfY2lmICAgKmNpZjsKICAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKik7CiAgIHZvaWQgICAgICAqdXNlcl9kYXRhOwpAQCAtMjYzLDYgKzMxMCw5IEBACiB9IGZmaV9jbG9zdXJlIF9fYXR0cmlidXRlX18oKGFsaWduZWQgKDgpKSk7CiAjZWxzZQogfSBmZmlfY2xvc3VyZTsKKyMgaWZkZWYgX19zZ2kKKyMgIHByYWdtYSBwYWNrIDAKKyMgZW5kaWYKICNlbmRpZgogCiB2b2lkICpmZmlfY2xvc3VyZV9hbGxvYyAoc2l6ZV90IHNpemUsIHZvaWQgKipjb2RlKTsKQEAgLTI4MSw5ICszMzEsMTYgQEAKIAkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAogCQkgICAgICB2b2lkKmNvZGVsb2MpOwogCisjaWZkZWYgX19zZ2kKKyMgcHJhZ21hIHBhY2sgOAorI2VuZGlmCiB0eXBlZGVmIHN0cnVjdCB7CisjaWYgQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGU7CisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGVfZW50cnk7CisjZWxzZQogICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOwotCisjZW5kaWYKICAgZmZpX2NpZiAgICpjaWY7CiAKICNpZiAhRkZJX05BVElWRV9SQVdfQVBJCkBAIC0zMDMsNyArMzYwLDEyIEBACiB9IGZmaV9yYXdfY2xvc3VyZTsKIAogdHlwZWRlZiBzdHJ1Y3QgeworI2lmIEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAorICB2b2lkICp0cmFtcG9saW5lX3RhYmxlOworICB2b2lkICp0cmFtcG9saW5lX3RhYmxlX2VudHJ5OworI2Vsc2UKICAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKKyNlbmRpZgogCiAgIGZmaV9jaWYgICAqY2lmOwogCkBAIC0zNTksNiArNDIxLDEzIEBACiAJCQlmZmlfdHlwZSAqcnR5cGUsCiAJCQlmZmlfdHlwZSAqKmF0eXBlcyk7CiAKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX3ZhcihmZmlfY2lmICpjaWYsCisJCQkgICAgZmZpX2FiaSBhYmksCisJCQkgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisJCQkgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJCQkgICAgZmZpX3R5cGUgKnJ0eXBlLAorCQkJICAgIGZmaV90eXBlICoqYXR5cGVzKTsKKwogdm9pZCBmZmlfY2FsbChmZmlfY2lmICpjaWYsCiAJICAgICAgdm9pZCAoKmZuKSh2b2lkKSwKIAkgICAgICB2b2lkICpydmFsdWUsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaAppbmRleCA0MmNhY2U5Li5jMTc5ZDY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmlfY29tbW9uLmgKQEAgLTEsNyArMSw4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpX2NvbW1vbi5oIC0gQ29weXJpZ2h0IChjKSAxOTk2ICBSZWQgSGF0LCBJbmMuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKLQorICAgZmZpX2NvbW1vbi5oIC0gQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYgIFJlZCBIYXQsIEluYy4KKyAgICAgICAgICAgICAgICAgIAogICAgQ29tbW9uIGludGVybmFsIGRlZmluaXRpb25zIGFuZCBtYWNyb3MuIE9ubHkgbmVjZXNzYXJ5IGZvciBidWlsZGluZwogICAgbGliZmZpLgogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTc0LDYgKzc1LDggQEAKIAogLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwogZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpOworZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcF92YXIoZmZpX2NpZiAqY2lmLAorCSB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MpOwogCiAvKiBFeHRlbmRlZCBjaWYsIHVzZWQgaW4gY2FsbGJhY2sgZnJvbSBhc3NlbWJseSByb3V0aW5lICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMTEyLDExICsxMTUsMTQgQEAKIAogdHlwZWRlZiBmbG9hdCBGTE9BVDMyOwogCisjaWZuZGVmIF9fR05VQ19fCisjZGVmaW5lIF9fYnVpbHRpbl9leHBlY3QoeCwgZXhwZWN0ZWRfdmFsdWUpICh4KQorI2VuZGlmCisjZGVmaW5lIExJS0VMWSh4KSAgICBfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLDEpCisjZGVmaW5lIFVOTElLRUxZKHgpICBfX2J1aWx0aW5fZXhwZWN0KCh4KSE9MCwwKQogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCiAjZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2gKaW5kZXggNmViZTQ2ZC4uNjc4MWI5OCAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5zdGFsbC1zaApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKIAotc2NyaXB0dmVyc2lvbj0yMDA0LTEyLTE3LjA5CitzY3JpcHR2ZXJzaW9uPTIwMDktMDQtMjguMjE7ICMgVVRDCiAKICMgVGhpcyBvcmlnaW5hdGVzIGZyb20gWDExUjUgKG1pdC91dGlsL3NjcmlwdHMvaW5zdGFsbC5zaCksIHdoaWNoIHdhcwogIyBsYXRlciByZWxlYXNlZCBpbiBYMTFSNiAoeGMvY29uZmlnL3V0aWwvaW5zdGFsbC5zaCkgd2l0aCB0aGUKQEAgLTM5LDM4ICszOSw2OCBAQAogIyB3aGVuIHRoZXJlIGlzIG5vIE1ha2VmaWxlLgogIwogIyBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCi0jIGZyb20gc2NyYXRjaC4gIEl0IGNhbiBvbmx5IGluc3RhbGwgb25lIGZpbGUgYXQgYSB0aW1lLCBhIHJlc3RyaWN0aW9uCi0jIHNoYXJlZCB3aXRoIG1hbnkgT1MncyBpbnN0YWxsIHByb2dyYW1zLgorIyBmcm9tIHNjcmF0Y2guCisKK25sPScKKycKK0lGUz0iICIiCSRubCIKIAogIyBzZXQgRE9JVFBST0cgdG8gZWNobyB0byB0ZXN0IHRoaXMgc2NyaXB0CiAKICMgRG9uJ3QgdXNlIDotIHNpbmNlIDQuM0JTRCBhbmQgZWFybGllciBzaGVsbHMgZG9uJ3QgbGlrZSBpdC4KLWRvaXQ9IiR7RE9JVFBST0ctfSIKK2RvaXQ9JHtET0lUUFJPRy19CitpZiB0ZXN0IC16ICIkZG9pdCI7IHRoZW4KKyAgZG9pdF9leGVjPWV4ZWMKK2Vsc2UKKyAgZG9pdF9leGVjPSRkb2l0CitmaQogCi0jIHB1dCBpbiBhYnNvbHV0ZSBwYXRocyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsgb3IgdXNlIGVudi4gdmFycy4KKyMgUHV0IGluIGFic29sdXRlIGZpbGUgbmFtZXMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7CisjIG9yIHVzZSBlbnZpcm9ubWVudCB2YXJzLgogCi1tdnByb2c9IiR7TVZQUk9HLW12fSIKLWNwcHJvZz0iJHtDUFBST0ctY3B9IgotY2htb2Rwcm9nPSIke0NITU9EUFJPRy1jaG1vZH0iCi1jaG93bnByb2c9IiR7Q0hPV05QUk9HLWNob3dufSIKLWNoZ3JwcHJvZz0iJHtDSEdSUFBST0ctY2hncnB9Igotc3RyaXBwcm9nPSIke1NUUklQUFJPRy1zdHJpcH0iCi1ybXByb2c9IiR7Uk1QUk9HLXJtfSIKLW1rZGlycHJvZz0iJHtNS0RJUlBST0ctbWtkaXJ9IgorY2hncnBwcm9nPSR7Q0hHUlBQUk9HLWNoZ3JwfQorY2htb2Rwcm9nPSR7Q0hNT0RQUk9HLWNobW9kfQorY2hvd25wcm9nPSR7Q0hPV05QUk9HLWNob3dufQorY21wcHJvZz0ke0NNUFBST0ctY21wfQorY3Bwcm9nPSR7Q1BQUk9HLWNwfQorbWtkaXJwcm9nPSR7TUtESVJQUk9HLW1rZGlyfQorbXZwcm9nPSR7TVZQUk9HLW12fQorcm1wcm9nPSR7Uk1QUk9HLXJtfQorc3RyaXBwcm9nPSR7U1RSSVBQUk9HLXN0cmlwfQogCi1jaG1vZGNtZD0iJGNobW9kcHJvZyAwNzU1IgotY2hvd25jbWQ9Citwb3NpeF9nbG9iPSc/JworaW5pdGlhbGl6ZV9wb3NpeF9nbG9iPScKKyAgdGVzdCAiJHBvc2l4X2dsb2IiICE9ICI/IiB8fCB7CisgICAgaWYgKHNldCAtZikgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIHBvc2l4X2dsb2I9CisgICAgZWxzZQorICAgICAgcG9zaXhfZ2xvYj06CisgICAgZmkKKyAgfQorJworCitwb3NpeF9ta2Rpcj0KKworIyBEZXNpcmVkIG1vZGUgb2YgaW5zdGFsbGVkIGZpbGUuCittb2RlPTA3NTUKKwogY2hncnBjbWQ9Ci1zdHJpcGNtZD0KK2NobW9kY21kPSRjaG1vZHByb2cKK2Nob3duY21kPQorbXZjbWQ9JG12cHJvZwogcm1jbWQ9IiRybXByb2cgLWYiCi1tdmNtZD0iJG12cHJvZyIKK3N0cmlwY21kPQorCiBzcmM9CiBkc3Q9CiBkaXJfYXJnPQotZHN0YXJnPQorZHN0X2FyZz0KKworY29weV9vbl9jaGFuZ2U9ZmFsc2UKIG5vX3RhcmdldF9kaXJlY3Rvcnk9CiAKLXVzYWdlPSJVc2FnZTogJDAgW09QVElPTl0uLi4gWy1UXSBTUkNGSUxFIERTVEZJTEUKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0uLi4gWy1UXSBTUkNGSUxFIERTVEZJTEUKICAgIG9yOiAkMCBbT1BUSU9OXS4uLiBTUkNGSUxFUy4uLiBESVJFQ1RPUlkKICAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtdCBESVJFQ1RPUlkgU1JDRklMRVMuLi4KICAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtZCBESVJFQ1RPUklFUy4uLgpAQCAtODAsODEgKzExMCw4NiBAQAogSW4gdGhlIDR0aCwgY3JlYXRlIERJUkVDVE9SSUVTLgogCiBPcHRpb25zOgotLWMgICAgICAgICAoaWdub3JlZCkKLS1kICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KLS1nIEdST1VQICAgJGNoZ3JwcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gR1JPVVAuCi0tbSBNT0RFICAgICRjaG1vZHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIE1PREUuCi0tbyBVU0VSICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCi0tcyAgICAgICAgICRzdHJpcHByb2cgaW5zdGFsbGVkIGZpbGVzLgotLXQgRElSRUNUT1JZICBpbnN0YWxsIGludG8gRElSRUNUT1JZLgotLVQgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KLS0taGVscCAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQuCi0tLXZlcnNpb24gIGRpc3BsYXkgdmVyc2lvbiBpbmZvIGFuZCBleGl0LgorICAgICAtLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgorICAgICAtLXZlcnNpb24gIGRpc3BsYXkgdmVyc2lvbiBpbmZvIGFuZCBleGl0LgorCisgIC1jICAgICAgICAgICAgKGlnbm9yZWQpCisgIC1DICAgICAgICAgICAgaW5zdGFsbCBvbmx5IGlmIGRpZmZlcmVudCAocHJlc2VydmUgdGhlIGxhc3QgZGF0YSBtb2RpZmljYXRpb24gdGltZSkKKyAgLWQgICAgICAgICAgICBjcmVhdGUgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIGZpbGVzLgorICAtZyBHUk9VUCAgICAgICRjaGdycHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIEdST1VQLgorICAtbSBNT0RFICAgICAgICRjaG1vZHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIE1PREUuCisgIC1vIFVTRVIgICAgICAgJGNob3ducHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gVVNFUi4KKyAgLXMgICAgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KKyAgLXQgRElSRUNUT1JZICBpbnN0YWxsIGludG8gRElSRUNUT1JZLgorICAtVCAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvciBpZiBEU1RGSUxFIGlzIGEgZGlyZWN0b3J5LgogCiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29tbWFuZHM6Ci0gIENIR1JQUFJPRyBDSE1PRFBST0cgQ0hPV05QUk9HIENQUFJPRyBNS0RJUlBST0cgTVZQUk9HIFJNUFJPRyBTVFJJUFBST0cKKyAgQ0hHUlBQUk9HIENITU9EUFJPRyBDSE9XTlBST0cgQ01QUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRworICBSTVBST0cgU1RSSVBQUk9HCiAiCiAKLXdoaWxlIHRlc3QgLW4gIiQxIjsgZG8KK3doaWxlIHRlc3QgJCMgLW5lIDA7IGRvCiAgIGNhc2UgJDEgaW4KLSAgICAtYykgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1jKSA7OwogCi0gICAgLWQpIGRpcl9hcmc9dHJ1ZQotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisgICAgLUMpIGNvcHlfb25fY2hhbmdlPXRydWU7OworCisgICAgLWQpIGRpcl9hcmc9dHJ1ZTs7CiAKICAgICAtZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKwlzaGlmdDs7CiAKLSAgICAtLWhlbHApIGVjaG8gIiR1c2FnZSI7IGV4aXQgMDs7CisgICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0ICQ/OzsKIAotICAgIC1tKSBjaG1vZGNtZD0iJGNobW9kcHJvZyAkMiIKLSAgICAgICAgc2hpZnQKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1tKSBtb2RlPSQyCisJY2FzZSAkbW9kZSBpbgorCSAgKicgJyogfCAqJwknKiB8IConCisnKgkgIHwgKicqJyogfCAqJz8nKiB8IConWycqKQorCSAgICBlY2hvICIkMDogaW52YWxpZCBtb2RlOiAkbW9kZSIgPiYyCisJICAgIGV4aXQgMTs7CisJZXNhYworCXNoaWZ0OzsKIAogICAgIC1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKLSAgICAgICAgc2hpZnQKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworCXNoaWZ0OzsKIAotICAgIC1zKSBzdHJpcGNtZD0kc3RyaXBwcm9nCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZzs7CiAKLSAgICAtdCkgZHN0YXJnPSQyCi0Jc2hpZnQKLQlzaGlmdAotCWNvbnRpbnVlOzsKKyAgICAtdCkgZHN0X2FyZz0kMgorCXNoaWZ0OzsKIAotICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWUKLQlzaGlmdAotCWNvbnRpbnVlOzsKKyAgICAtVCkgbm9fdGFyZ2V0X2RpcmVjdG9yeT10cnVlOzsKIAotICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0IDA7OworICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0ICQ/OzsKIAotICAgICopICAjIFdoZW4gLWQgaXMgdXNlZCwgYWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZS4KLQkjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgotCXRlc3QgLW4gIiRkaXJfYXJnJGRzdGFyZyIgJiYgYnJlYWsKLSAgICAgICAgIyBPdGhlcndpc2UsIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBkZXN0aW5hdGlvbi4gIFJlbW92ZSBpdCBmcm9tICRALgotCWZvciBhcmcKLQlkbwotICAgICAgICAgIGlmIHRlc3QgLW4gIiRkc3RhcmciOyB0aGVuCi0JICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgotCSAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdGFyZyIKLQkgICAgc2hpZnQgIyBmbm9yZAotCSAgZmkKLQkgIHNoaWZ0ICMgYXJnCi0JICBkc3Rhcmc9JGFyZwotCWRvbmUKKyAgICAtLSkJc2hpZnQKIAlicmVhazs7CisKKyAgICAtKikJZWNobyAiJDA6IGludmFsaWQgb3B0aW9uOiAkMSIgPiYyCisJZXhpdCAxOzsKKworICAgICopICBicmVhazs7CiAgIGVzYWMKKyAgc2hpZnQKIGRvbmUKIAotaWYgdGVzdCAteiAiJDEiOyB0aGVuCitpZiB0ZXN0ICQjIC1uZSAwICYmIHRlc3QgLXogIiRkaXJfYXJnJGRzdF9hcmciOyB0aGVuCisgICMgV2hlbiAtZCBpcyB1c2VkLCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLgorICAjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgorICAjIE90aGVyd2lzZSwgdGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIGRlc3RpbmF0aW9uLiAgUmVtb3ZlIGl0IGZyb20gJEAuCisgIGZvciBhcmcKKyAgZG8KKyAgICBpZiB0ZXN0IC1uICIkZHN0X2FyZyI7IHRoZW4KKyAgICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgorICAgICAgc2V0IGZub3JkICIkQCIgIiRkc3RfYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgIGZpCisgICAgc2hpZnQgIyBhcmcKKyAgICBkc3RfYXJnPSRhcmcKKyAgZG9uZQorZmkKKworaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgogICBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KICAgICBlY2hvICIkMDogbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQuIiA+JjIKICAgICBleGl0IDEKQEAgLTE2NCwyNCArMTk5LDQ3IEBACiAgIGV4aXQgMAogZmkKIAoraWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCisgIHRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1CisKKyAgIyBTZXQgdW1hc2sgc28gYXMgbm90IHRvIGNyZWF0ZSB0ZW1wcyB3aXRoIHRvby1nZW5lcm91cyBtb2Rlcy4KKyAgIyBIb3dldmVyLCAnc3RyaXAnIHJlcXVpcmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRlbXBzLgorICBjYXNlICRtb2RlIGluCisgICAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCisgICAgKjY0NCkgY3BfdW1hc2s9MTMzOzsKKyAgICAqNzU1KSBjcF91bWFzaz0yMjs7CisKKyAgICAqWzAtN10pCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0nJSAyMDAnCisgICAgICBmaQorICAgICAgY3BfdW1hc2s9YGV4cHIgJygnIDc3NyAtICRtb2RlICUgMTAwMCAnKScgJHVfcGx1c19yd2A7OworICAgICopCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0sdStydworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPSRtb2RlJHVfcGx1c19ydzs7CisgIGVzYWMKK2ZpCisKIGZvciBzcmMKIGRvCiAgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KICAgY2FzZSAkc3JjIGluCi0gICAgLSopIHNyYz0uLyRzcmMgOzsKKyAgICAtKikgc3JjPS4vJHNyYzs7CiAgIGVzYWMKIAogICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KICAgICBkc3Q9JHNyYwotICAgIHNyYz0KLQotICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCi0gICAgICBta2RpcmNtZD06Ci0gICAgICBjaG1vZGNtZD0KLSAgICBlbHNlCi0gICAgICBta2RpcmNtZD0kbWtkaXJwcm9nCi0gICAgZmkKKyAgICBkc3RkaXI9JGRzdAorICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgZHN0ZGlyX3N0YXR1cz0kPwogICBlbHNlCisKICAgICAjIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZAogICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKICAgICAjIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KQEAgLTE5MCw3MSArMjQ4LDE5OSBAQAogICAgICAgZXhpdCAxCiAgICAgZmkKIAotICAgIGlmIHRlc3QgLXogIiRkc3RhcmciOyB0aGVuCisgICAgaWYgdGVzdCAteiAiJGRzdF9hcmciOyB0aGVuCiAgICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkLiIgPiYyCiAgICAgICBleGl0IDEKICAgICBmaQogCi0gICAgZHN0PSRkc3RhcmcKKyAgICBkc3Q9JGRzdF9hcmcKICAgICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCiAgICAgY2FzZSAkZHN0IGluCi0gICAgICAtKikgZHN0PS4vJGRzdCA7OworICAgICAgLSopIGRzdD0uLyRkc3Q7OwogICAgIGVzYWMKIAogICAgICMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IHdvbid0IHdvcmsKICAgICAjIGlmIGRvdWJsZSBzbGFzaGVzIGFyZW4ndCBpZ25vcmVkLgogICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC1uICIkbm9fdGFyZ2V0X2RpcmVjdG9yeSI7IHRoZW4KLQllY2hvICIkMDogJGRzdGFyZzogSXMgYSBkaXJlY3RvcnkiID4mMgorCWVjaG8gIiQwOiAkZHN0X2FyZzogSXMgYSBkaXJlY3RvcnkiID4mMgogCWV4aXQgMQogICAgICAgZmkKLSAgICAgIGRzdD0kZHN0L2BiYXNlbmFtZSAiJHNyYyJgCisgICAgICBkc3RkaXI9JGRzdAorICAgICAgZHN0PSRkc3RkaXIvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcl9zdGF0dXM9MAorICAgIGVsc2UKKyAgICAgICMgUHJlZmVyIGRpcm5hbWUsIGJ1dCBmYWxsIGJhY2sgb24gYSBzdWJzdGl0dXRlIGlmIGRpcm5hbWUgZmFpbHMuCisgICAgICBkc3RkaXI9YAorCShkaXJuYW1lICIkZHN0IikgMj4vZGV2L251bGwgfHwKKwlleHByIFgiJGRzdCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CisJZWNobyBYIiRkc3QiIHwKKwkgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXCkuKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSBzLy4qLy4vOyBxJworICAgICAgYAorCisgICAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgICAgZHN0ZGlyX3N0YXR1cz0kPwogICAgIGZpCiAgIGZpCiAKLSAgIyBUaGlzIHNlZCBjb21tYW5kIGVtdWxhdGVzIHRoZSBkaXJuYW1lIGNvbW1hbmQuCi0gIGRzdGRpcj1gZWNobyAiJGRzdCIgfCBzZWQgLWUgJ3MsLyokLCw7cyxbXi9dKiQsLDtzLC8qJCwsO3MsXiQsLiwnYAorICBvYnNvbGV0ZV9ta2Rpcl91c2VkPWZhbHNlCiAKLSAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0cy4KKyAgaWYgdGVzdCAkZHN0ZGlyX3N0YXR1cyAhPSAwOyB0aGVuCisgICAgY2FzZSAkcG9zaXhfbWtkaXIgaW4KKyAgICAgICcnKQorCSMgQ3JlYXRlIGludGVybWVkaWF0ZSBkaXJzIHVzaW5nIG1vZGUgNzU1IGFzIG1vZGlmaWVkIGJ5IHRoZSB1bWFzay4KKwkjIFRoaXMgaXMgbGlrZSBGcmVlQlNEICdpbnN0YWxsJyBhcyBvZiAxOTk3LTEwLTI4LgorCXVtYXNrPWB1bWFza2AKKwljYXNlICRzdHJpcGNtZC4kdW1hc2sgaW4KKwkgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorCSAgKlsyMzY3XVsyMzY3XSkgbWtkaXJfdW1hc2s9JHVtYXNrOzsKKwkgIC4qMFswMl1bMDJdIHwgLlswMl1bMDJdIHwgLlswMl0pIG1rZGlyX3VtYXNrPTIyOzsKIAotICAjIFNraXAgbG90cyBvZiBzdGF0IGNhbGxzIGluIHRoZSB1c3VhbCBjYXNlLgotICBpZiB0ZXN0ICEgLWQgIiRkc3RkaXIiOyB0aGVuCi0gICAgZGVmYXVsdElGUz0nCi0JICcKLSAgICBJRlM9IiR7SUZTLSRkZWZhdWx0SUZTfSIKKwkgICpbMC03XSkKKwkgICAgbWtkaXJfdW1hc2s9YGV4cHIgJHVtYXNrICsgMjIgXAorCSAgICAgIC0gJHVtYXNrICUgMTAwICUgNDAgKyAkdW1hc2sgJSAyMCBcCisJICAgICAgLSAkdW1hc2sgJSAxMCAlIDQgKyAkdW1hc2sgJSAyCisJICAgIGA7OworCSAgKikgbWtkaXJfdW1hc2s9JHVtYXNrLGdvLXc7OworCWVzYWMKIAotICAgIG9JRlM9JElGUwotICAgICMgU29tZSBzaCdzIGNhbid0IGhhbmRsZSBJRlM9LyBmb3Igc29tZSByZWFzb24uCi0gICAgSUZTPSclJwotICAgIHNldCB4IGBlY2hvICIkZHN0ZGlyIiB8IHNlZCAtZSAnc0AvQCVAZycgLWUgJ3NAXiVAL0AnYAotICAgIHNoaWZ0Ci0gICAgSUZTPSRvSUZTCisJIyBXaXRoIC1kLCBjcmVhdGUgdGhlIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUgdXNlci1zcGVjaWZpZWQgbW9kZS4KKwkjIE90aGVyd2lzZSwgcmVseSBvbiAkbWtkaXJfdW1hc2suCisJaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisJICBta2Rpcl9tb2RlPS1tJG1vZGUKKwllbHNlCisJICBta2Rpcl9tb2RlPQorCWZpCiAKLSAgICBwYXRoY29tcD0KKwlwb3NpeF9ta2Rpcj1mYWxzZQorCWNhc2UgJHVtYXNrIGluCisJICAqWzEyMzU2N11bMC03XVswLTddKQorCSAgICAjIFBPU0lYIG1rZGlyIC1wIHNldHMgdSt3eCBiaXRzIHJlZ2FyZGxlc3Mgb2YgdW1hc2ssIHdoaWNoCisJICAgICMgaXMgaW5jb21wYXRpYmxlIHdpdGggRnJlZUJTRCAnaW5zdGFsbCcgd2hlbiAodW1hc2sgJiAzMDApICE9IDAuCisJICAgIDs7CisJICAqKQorCSAgICB0bXBkaXI9JHtUTVBESVItL3RtcH0vaW5zJFJBTkRPTS0kJAorCSAgICB0cmFwICdyZXQ9JD87IHJtZGlyICIkdG1wZGlyL2QiICIkdG1wZGlyIiAyPi9kZXYvbnVsbDsgZXhpdCAkcmV0JyAwCiAKLSAgICB3aGlsZSB0ZXN0ICQjIC1uZSAwIDsgZG8KLSAgICAgIHBhdGhjb21wPSRwYXRoY29tcCQxCisJICAgIGlmICh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkJZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkdG1wZGlyL2QiKSA+L2Rldi9udWxsIDI+JjEKKwkgICAgdGhlbgorCSAgICAgIGlmIHRlc3QgLXogIiRkaXJfYXJnIiB8fCB7CisJCSAgICMgQ2hlY2sgZm9yIFBPU0lYIGluY29tcGF0aWJpbGl0aWVzIHdpdGggLW0uCisJCSAgICMgSFAtVVggMTEuMjMgYW5kIElSSVggNi41IG1rZGlyIC1tIC1wIHNldHMgZ3JvdXAtIG9yCisJCSAgICMgb3RoZXItd3JpdGVhYmxlIGJpdCBvZiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gaXQgc2hvdWxkbid0LgorCQkgICAjIEZyZWVCU0QgNi4xIG1rZGlyIC1tIC1wIHNldHMgbW9kZSBvZiBleGlzdGluZyBkaXJlY3RvcnkuCisJCSAgIGxzX2xkX3RtcGRpcj1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgY2FzZSAkbHNfbGRfdG1wZGlyIGluCisJCSAgICAgZD8/Pz8tP3ItKikgZGlmZmVyZW50X21vZGU9NzAwOzsKKwkJICAgICBkPz8/Py0/LS0qKSBkaWZmZXJlbnRfbW9kZT03NTU7OworCQkgICAgICopIGZhbHNlOzsKKwkJICAgZXNhYyAmJgorCQkgICAkbWtkaXJwcm9nIC1tJGRpZmZlcmVudF9tb2RlIC1wIC0tICIkdG1wZGlyIiAmJiB7CisJCSAgICAgbHNfbGRfdG1wZGlyXzE9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgICAgdGVzdCAiJGxzX2xkX3RtcGRpciIgPSAiJGxzX2xkX3RtcGRpcl8xIgorCQkgICB9CisJCSB9CisJICAgICAgdGhlbiBwb3NpeF9ta2Rpcj06CisJICAgICAgZmkKKwkgICAgICBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIKKwkgICAgZWxzZQorCSAgICAgICMgUmVtb3ZlIGFueSBkaXJzIGxlZnQgYmVoaW5kIGJ5IGFuY2llbnQgbWtkaXIgaW1wbGVtZW50YXRpb25zLgorCSAgICAgIHJtZGlyIC4vJG1rZGlyX21vZGUgLi8tcCAuLy0tIDI+L2Rldi9udWxsCisJICAgIGZpCisJICAgIHRyYXAgJycgMDs7CisJZXNhYzs7CisgICAgZXNhYworCisgICAgaWYKKyAgICAgICRwb3NpeF9ta2RpciAmJiAoCisJdW1hc2sgJG1rZGlyX3VtYXNrICYmCisJJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIgorICAgICAgKQorICAgIHRoZW4gOgorICAgIGVsc2UKKworICAgICAgIyBUaGUgdW1hc2sgaXMgcmlkaWN1bG91cywgb3IgbWtkaXIgZG9lcyBub3QgY29uZm9ybSB0byBQT1NJWCwKKyAgICAgICMgb3IgaXQgZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiAgQ3JlYXRlIHRoZQorICAgICAgIyBkaXJlY3RvcnkgdGhlIHNsb3cgd2F5LCBzdGVwIGJ5IHN0ZXAsIGNoZWNraW5nIGZvciByYWNlcyBhcyB3ZSBnby4KKworICAgICAgY2FzZSAkZHN0ZGlyIGluCisJLyopIHByZWZpeD0nLyc7OworCS0qKSBwcmVmaXg9Jy4vJzs7CisJKikgIHByZWZpeD0nJzs7CisgICAgICBlc2FjCisKKyAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiCisKKyAgICAgIG9JRlM9JElGUworICAgICAgSUZTPS8KKyAgICAgICRwb3NpeF9nbG9iIHNldCAtZgorICAgICAgc2V0IGZub3JkICRkc3RkaXIKICAgICAgIHNoaWZ0Ci0gICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLSAgICAgICAgJG1rZGlycHJvZyAiJHBhdGhjb21wIgotCSMgbWtkaXIgY2FuIGZhaWwgd2l0aCBhIGBGaWxlIGV4aXN0JyBlcnJvciBpbiBjYXNlIHNldmVyYWwKLQkjIGluc3RhbGwtc2ggYXJlIGNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgY29uY3VycmVudGx5LiAgVGhpcwotCSMgaXMgT0suCi0JdGVzdCAtZCAiJHBhdGhjb21wIiB8fCBleGl0CisgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YKKyAgICAgIElGUz0kb0lGUworCisgICAgICBwcmVmaXhlcz0KKworICAgICAgZm9yIGQKKyAgICAgIGRvCisJdGVzdCAteiAiJGQiICYmIGNvbnRpbnVlCisKKwlwcmVmaXg9JHByZWZpeCRkCisJaWYgdGVzdCAtZCAiJHByZWZpeCI7IHRoZW4KKwkgIHByZWZpeGVzPQorCWVsc2UKKwkgIGlmICRwb3NpeF9ta2RpcjsgdGhlbgorCSAgICAodW1hc2s9JG1rZGlyX3VtYXNrICYmCisJICAgICAkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhaworCSAgICAjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJICAgIHRlc3QgLWQgIiRwcmVmaXgiIHx8IGV4aXQgMQorCSAgZWxzZQorCSAgICBjYXNlICRwcmVmaXggaW4KKwkgICAgICAqXCcqKSBxcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisJICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKKwkgICAgZXNhYworCSAgICBwcmVmaXhlcz0iJHByZWZpeGVzICckcXByZWZpeCciCisJICBmaQorCWZpCisJcHJlZml4PSRwcmVmaXgvCisgICAgICBkb25lCisKKyAgICAgIGlmIHRlc3QgLW4gIiRwcmVmaXhlcyI7IHRoZW4KKwkjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJKHVtYXNrICRta2Rpcl91bWFzayAmJgorCSBldmFsICJcJGRvaXRfZXhlYyBcJG1rZGlycHJvZyAkcHJlZml4ZXMiKSB8fAorCSAgdGVzdCAtZCAiJGRzdGRpciIgfHwgZXhpdCAxCisJb2Jzb2xldGVfbWtkaXJfdXNlZD10cnVlCiAgICAgICBmaQotICAgICAgcGF0aGNvbXA9JHBhdGhjb21wLwotICAgIGRvbmUKKyAgICBmaQogICBmaQogCiAgIGlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgotICAgICRkb2l0ICRta2RpcmNtZCAiJGRzdCIgXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAiJGRzdCI7IH0KLQorICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IH0gJiYKKyAgICB7IHRlc3QgIiRvYnNvbGV0ZV9ta2Rpcl91c2VkJGNob3duY21kJGNoZ3JwY21kIiA9IGZhbHNlIHx8CisgICAgICB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAkbW9kZSAiJGRzdCI7IH0gfHwgZXhpdCAxCiAgIGVsc2UKLSAgICBkc3RmaWxlPWBiYXNlbmFtZSAiJGRzdCJgCiAKICAgICAjIE1ha2UgYSBjb3VwbGUgb2YgdGVtcCBmaWxlIG5hbWVzIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5LgogICAgIGRzdHRtcD0kZHN0ZGlyL19pbnN0LiQkXwpAQCAtMjYyLDEwICs0NDgsOSBAQAogCiAgICAgIyBUcmFwIHRvIGNsZWFuIHVwIHRob3NlIHRlbXAgZmlsZXMgYXQgZXhpdC4KICAgICB0cmFwICdyZXQ9JD87IHJtIC1mICIkZHN0dG1wIiAiJHJtdG1wIiAmJiBleGl0ICRyZXQnIDAKLSAgICB0cmFwICcoZXhpdCAkPyk7IGV4aXQnIDEgMiAxMyAxNQogCiAgICAgIyBDb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZS4KLSAgICAkZG9pdCAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIgJiYKKyAgICAodW1hc2sgJGNwX3VtYXNrICYmICRkb2l0X2V4ZWMgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiKSAmJgogCiAgICAgIyBhbmQgc2V0IGFueSBvcHRpb25zOyBkbyBjaG1vZCBsYXN0IHRvIHByZXNlcnZlIHNldHVpZCBiaXRzLgogICAgICMKQEAgLTI3Myw1MSArNDU4LDYzIEBACiAgICAgIyBpZ25vcmUgZXJyb3JzIGZyb20gYW55IG9mIHRoZXNlLCBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gaWdub3JlCiAgICAgIyBlcnJvcnMgZnJvbSB0aGUgYWJvdmUgIiRkb2l0ICRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kLgogICAgICMKLSAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0dG1wIjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0dG1wIjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3R0bXAiOyB9ICYmCiAKLSAgICAjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCi0gICAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3R0bXAiICIkZHN0ZGlyLyRkc3RmaWxlIiAyPi9kZXYvbnVsbCBcCi0gICAgICB8fCB7Ci0JICAgIyBUaGUgcmVuYW1lIGZhaWxlZCwgcGVyaGFwcyBiZWNhdXNlIG12IGNhbid0IHJlbmFtZSBzb21ldGhpbmcgZWxzZQotCSAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90Ci0JICAgIyBzdXBwb3J0IC1mLgorICAgICMgSWYgLUMsIGRvbid0IGJvdGhlciB0byBjb3B5IGlmIGl0IHdvdWxkbid0IGNoYW5nZSB0aGUgZmlsZS4KKyAgICBpZiAkY29weV9vbl9jaGFuZ2UgJiYKKyAgICAgICBvbGQ9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3QiCTI+L2Rldi9udWxsYCAmJgorICAgICAgIG5ldz1gTENfQUxMPUMgbHMgLWRsTCAiJGRzdHRtcCIJMj4vZGV2L251bGxgICYmCiAKLQkgICAjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCi0JICAgIyBXZSB0cnkgdGhpcyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUKLQkgICAjIHN5c3RlbXMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG1pZ2h0IGJlIGJ1c3kgZm9yIG90aGVyCi0JICAgIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xlYW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3Ci0JICAgIyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KLQkgICB7Ci0JICAgICBpZiB0ZXN0IC1mICIkZHN0ZGlyLyRkc3RmaWxlIjsgdGhlbgotCSAgICAgICAkZG9pdCAkcm1jbWQgLWYgIiRkc3RkaXIvJGRzdGZpbGUiIDI+L2Rldi9udWxsIFwKLQkgICAgICAgfHwgJGRvaXQgJG12Y21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAiJHJtdG1wIiAyPi9kZXYvbnVsbCBcCi0JICAgICAgIHx8IHsKLQkJIGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0ZGlyLyRkc3RmaWxlIiA+JjIKLQkJIChleGl0IDEpOyBleGl0IDEKLQkgICAgICAgfQotCSAgICAgZWxzZQotCSAgICAgICA6Ci0JICAgICBmaQotCSAgIH0gJiYKKyAgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCAtZiAmJgorICAgICAgIHNldCBYICRvbGQgJiYgb2xkPTokMjokNDokNTokNiAmJgorICAgICAgIHNldCBYICRuZXcgJiYgbmV3PTokMjokNDokNTokNiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCArZiAmJgogCi0JICAgIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgotCSAgICRkb2l0ICRtdmNtZCAiJGRzdHRtcCIgIiRkc3RkaXIvJGRzdGZpbGUiCi0JIH0KLSAgICB9Ci0gIGZpIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQorICAgICAgIHRlc3QgIiRvbGQiID0gIiRuZXciICYmCisgICAgICAgJGNtcHByb2cgIiRkc3QiICIkZHN0dG1wIiA+L2Rldi9udWxsIDI+JjEKKyAgICB0aGVuCisgICAgICBybSAtZiAiJGRzdHRtcCIKKyAgICBlbHNlCisgICAgICAjIFJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKyAgICAgICRkb2l0ICRtdmNtZCAtZiAiJGRzdHRtcCIgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisKKyAgICAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKKyAgICAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90CisgICAgICAjIHN1cHBvcnQgLWYuCisgICAgICB7CisJIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorCSMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCisJIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgorCSMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldworCSMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCisJeworCSAgdGVzdCAhIC1mICIkZHN0IiB8fAorCSAgJGRvaXQgJHJtY21kIC1mICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCSAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3QiICIkcm10bXAiIDI+L2Rldi9udWxsICYmCisJICAgIHsgJGRvaXQgJHJtY21kIC1mICIkcm10bXAiIDI+L2Rldi9udWxsOyA6OyB9CisJICB9IHx8CisJICB7IGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0IiA+JjIKKwkgICAgKGV4aXQgMSk7IGV4aXQgMQorCSAgfQorCX0gJiYKKworCSMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKwkkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0IgorICAgICAgfQorICAgIGZpIHx8IGV4aXQgMQorCisgICAgdHJhcCAnJyAwCisgIGZpCiBkb25lCiAKLSMgVGhlIGZpbmFsIGxpdHRsZSB0cmljayB0byAiY29ycmVjdGx5IiBwYXNzIHRoZSBleGl0IHN0YXR1cyB0byB0aGUgZXhpdCB0cmFwLgotewotICAoZXhpdCAwKTsgZXhpdCAwCi19Ci0KICMgTG9jYWwgdmFyaWFibGVzOgogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhlNDkwMgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSw1OTUgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQk2QzQzQ0JEQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JCRDE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi87IH07CisJCTZDNDNDQkREMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JCRjE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TICovOyB9OworCQk2QzQzQ0JERTE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQzAxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyAqLzsgfTsKKwkJNkM0M0NCRTYxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQzkxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TICovOyB9OworCQk2QzQzQ0JFODE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JDQjE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi87IH07CisJCTZDNDNDQkU5MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQ0MxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgKi87IH07CisJCTZDNDNDQzFGMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA1MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLzsgfTsKKwkJNkM0M0NDMjAxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwNjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyAqLzsgfTsKKwkJNkM0M0NDMjExNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMDcxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jICovOyB9OworCQk2QzQzQ0MyMjE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA4MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jICovOyB9OworCQk2QzQzQ0MyRjE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovOyB9OworCQk2QzQzQ0MzMDE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovOyB9OworCQk2QzQzQ0MzMTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovOyB9OworCQk2QzQzQ0MzMjE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovOyB9OworCQk2QzQzQ0MzMzE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovOyB9OworCQk2QzQzQ0MzNDE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovOyB9OworCQk2QzQzQ0MzNTE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzM2MTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLzsgfTsKKwkJNkM0M0NDMzcxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLzsgfTsKKwkJNkM0M0NDMzgxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLzsgfTsKKwkJNkM0M0NDMzkxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzNBMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzQjE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovOyB9OworCQk2QzQzQ0MzQzE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovOyB9OworCQk2QzQzQ0M5NzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M4RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5ODE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOEUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzk5MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOEYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5QTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzlCMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkxMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLzsgfTsKKwkJNkM0M0NDOUMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLzsgfTsKKwkJNkM0M0NDOUQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkzMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggKi87IH07CisJCTZDNDNDQzlFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzk0MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzlGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBMDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0FEMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0EyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0FFMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0EzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0FGMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjAxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0IxMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLzsgfTsKKwkJNkM0M0NDQjIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oICovOyB9OworCQk2QzQzQ0NCMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E4MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovOyB9OworCQk2QzQzQ0NCNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBOTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQUExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0I2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0FCMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0I3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQUMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzRDE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmZmaS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk2QzQzQ0JCRDE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JCRjE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBzeXN2LlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkMwMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IHRyYW1wb2xpbmUuUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQzkxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBkYXJ3aW4uUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQ0IxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQ0MxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaTY0LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzA1MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gZGFyd2luLlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzA2MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBkYXJ3aW42NC5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwNzE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwODE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpNjQuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMjgxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGNsb3N1cmVzLmM7IHBhdGggPSBzcmMvY2xvc3VyZXMuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gZGVidWcuYzsgcGF0aCA9IHNyYy9kZWJ1Zy5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBkbG1hbGxvYy5jOyBwYXRoID0gc3JjL2RsbWFsbG9jLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBqYXZhX3Jhd19hcGkuYzsgcGF0aCA9IHNyYy9qYXZhX3Jhd19hcGkuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gcHJlcF9jaWYuYzsgcGF0aCA9IHNyYy9wcmVwX2NpZi5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHJhd19hcGkuYzsgcGF0aCA9IHNyYy9yYXdfYXBpLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkUxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHR5cGVzLmM7IHBhdGggPSBzcmMvdHlwZXMuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0M4RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M4RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfY29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzhGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfeDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzkxMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzkyMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfeDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzk0MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzk1MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5NjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfeDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0EyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0EzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2FybXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9jb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX2FybXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E4MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBOTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBQTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfYXJtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0FCMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2FybXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0FDMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkY5ODBCQTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmZmaS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTZDNDNDQjNBMTUzNEU5RDEwMDE2MjM2NCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUY2Rjk4MEI3MTQ3Mzg2MTMwMDA4RjEyMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTZDNDNDQkFGMTUzNEY3NkYwMDE2MjM2NCAvKiBpT1MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQ0ExMTUzNTAzOTYwMDE2MjM2NCAvKiBpbmNsdWRlICovLAorCQkJCTZDNDNDQkJCMTUzNEY3NkYwMDE2MjM2NCAvKiBzcmMgKi8sCisJCQkpOworCQkJbmFtZSA9IGlPUzsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JCQjE1MzRGNzZGMDAxNjIzNjQgLyogc3JjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0JDODE1MzRGNzZGMDAxNjIzNjQgLyogeDg2ICovLAorCQkJCTZDNDNDQkJDMTUzNEY3NkYwMDE2MjM2NCAvKiBhcm0gKi8sCisJCQkpOworCQkJcGF0aCA9IHNyYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkJDMTUzNEY3NkYwMDE2MjM2NCAvKiBhcm0gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQkJEMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLywKKwkJCQk2QzQzQ0JCRjE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TICovLAorCQkJCTZDNDNDQkMwMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgKi8sCisJCQkpOworCQkJcGF0aCA9IGFybTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkM4MTUzNEY3NkYwMDE2MjM2NCAvKiB4ODYgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQkM5MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLywKKwkJCQk2QzQzQ0JDQjE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8sCisJCQkJNkM0M0NCQ0MxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgKi8sCisJCQkpOworCQkJcGF0aCA9IHg4NjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkYwMTUzNEY3NzgwMDE2MjM2NCAvKiBPUyBYICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0M4QzE1MzUwMzI2MDAxNjIzNjQgLyogaW5jbHVkZSAqLywKKwkJCQk2QzQzQ0JGQzE1MzRGNzc4MDAxNjIzNjQgLyogc3JjICovLAorCQkJKTsKKwkJCW5hbWUgPSAiT1MgWCI7CisJCQlwYXRoID0gb3N4OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCRkMxNTM0Rjc3ODAwMTYyMzY0IC8qIHNyYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDMDQxNTM0Rjc3ODAwMTYyMzY0IC8qIHg4NiAqLywKKwkJCSk7CisJCQlwYXRoID0gc3JjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDMDQxNTM0Rjc3ODAwMTYyMzY0IC8qIHg4NiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDMDUxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbi5TICovLAorCQkJCTZDNDNDQzA2MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TICovLAorCQkJCTZDNDNDQzA3MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyAqLywKKwkJCQk2QzQzQ0MwODE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyAqLywKKwkJCSk7CisJCQlwYXRoID0geDg2OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDM0QxNTM0RjdDNDAwMTYyMzY0IC8qIHNyYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDMjgxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgKi8sCisJCQkJNkM0M0NDMjkxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgKi8sCisJCQkJNkM0M0NDMkExNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgKi8sCisJCQkJNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovLAorCQkJCTZDNDNDQzJDMTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jICovLAorCQkJCTZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi8sCisJCQkJNkM0M0NDMkUxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgKi8sCisJCQkpOworCQkJbmFtZSA9IHNyYzsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0M4QzE1MzUwMzI2MDAxNjIzNjQgLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDOEQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oICovLAorCQkJCTZDNDNDQzhFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8sCisJCQkJNkM0M0NDOEYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8sCisJCQkJNkM0M0NDOTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCAqLywKKwkJCQk2QzQzQ0M5MTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8sCisJCQkJNkM0M0NDOTIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi8sCisJCQkJNkM0M0NDOTMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCAqLywKKwkJCQk2QzQzQ0M5NDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8sCisJCQkJNkM0M0NDOTUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi8sCisJCQkJNkM0M0NDOTYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW5jbHVkZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQ0ExMTUzNTAzOTYwMDE2MjM2NCAvKiBpbmNsdWRlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0NBMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggKi8sCisJCQkJNkM0M0NDQTMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9hcm12Ny5oICovLAorCQkJCTZDNDNDQ0E0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8sCisJCQkJNkM0M0NDQTUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8sCisJCQkJNkM0M0NDQTYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovLAorCQkJCTZDNDNDQ0E3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCAqLywKKwkJCQk2QzQzQ0NBODE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLywKKwkJCQk2QzQzQ0NBOTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8sCisJCQkJNkM0M0NDQUExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCAqLywKKwkJCQk2QzQzQ0NBQjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggKi8sCisJCQkJNkM0M0NDQUMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGluY2x1ZGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlGNkIwODM5NTE0NzIxRUU1MDAzMUQ4QTEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzNEMTUzNEY3QzQwMDE2MjM2NCAvKiBzcmMgKi8sCisJCQkJNkM0M0NCQUYxNTM0Rjc2RjAwMTYyMzY0IC8qIGlPUyAqLywKKwkJCQk2QzQzQ0JGMDE1MzRGNzc4MDAxNjIzNjQgLyogT1MgWCAqLywKKwkJCQlGNkY5ODBDNjE0NzM4NjI2MDAwOEYxMjEgLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRjZGOTgwQzYxNDczODYyNjAwMDhGMTIxIC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNkY5ODBCQTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpLmEgKi8sCisJCQkJNkM0M0NCM0QxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaS5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXBhdGggPSAuLi8uLjsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTZDNDNDQjNCMTUzNEU5RDEwMDE2MjM2NCAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNkM0M0NDOTcxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOTgxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzk5MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlCMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlDMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlGNkY5ODBCODE0NzM4NjEzMDAwOEYxMjEgLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQ0FEMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0FFMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0FGMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0I0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0I1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IxMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQk2QzQzQ0IzQzE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpIE9TIFggKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNkM0M0NCNEExNTM0RTlEMTAwMTYyMzY0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgT1MgWCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk2QzQzQ0M0MDE1MzRGRjNCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovLAorCQkJCTZDNDNDQjM5MTUzNEU5RDEwMDE2MjM2NCAvKiBTb3VyY2VzICovLAorCQkJCTZDNDNDQjNBMTUzNEU5RDEwMDE2MjM2NCAvKiBGcmFtZXdvcmtzICovLAorCQkJCTZDNDNDQjNCMTUzNEU5RDEwMDE2MjM2NCAvKiBIZWFkZXJzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAibGliZmZpIE9TIFgiOworCQkJcHJvZHVjdE5hbWUgPSAiZmZpIE9TIFgiOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDZDNDNDQjNEMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQlGNkY5ODBCOTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpIGlPUyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBGNkY5ODBDNDE0NzM4NjEzMDAwOEYxMjEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYmZmaSBpT1MiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNkM0M0NDM0UxNTM0RjhFMjAwMTYyMzY0IC8qIEdlbmVyYXRlIFRyYW1wb2xpbmUgKi8sCisJCQkJNkM0M0NDM0YxNTM0RkYxQjAwMTYyMzY0IC8qIEdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyAqLywKKwkJCQlGNkY5ODBCNjE0NzM4NjEzMDAwOEYxMjEgLyogU291cmNlcyAqLywKKwkJCQlGNkY5ODBCNzE0NzM4NjEzMDAwOEYxMjEgLyogRnJhbWV3b3JrcyAqLywKKwkJCQlGNkY5ODBCODE0NzM4NjEzMDAwOEYxMjEgLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gImxpYmZmaSBpT1MiOworCQkJcHJvZHVjdE5hbWUgPSBmZmk7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gRjZGOTgwQkExNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaS5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCUY2QjA4Mzk3MTQ3MjFFRTUwMDMxRDhBMSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNDMwOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBGNkIwODM5QTE0NzIxRUU1MDAzMUQ4QTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsaWJmZmkiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IEY2QjA4Mzk1MTQ3MjFFRTUwMDMxRDhBMTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IEY2QjA4Mzk1MTQ3MjFFRTUwMDMxRDhBMTsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQlGNkY5ODBCOTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpIGlPUyAqLywKKwkJCQk2QzQzQ0IzQzE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpIE9TIFggKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0MzRTE1MzRGOEUyMDAxNjIzNjQgLyogR2VuZXJhdGUgVHJhbXBvbGluZSAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgVHJhbXBvbGluZSI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC91c3IvYmluL3B5dGhvbjsKKwkJCXNoZWxsU2NyaXB0ID0gImltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgcmVcbmltcG9ydCBvc1xuaW1wb3J0IGVycm5vXG5pbXBvcnQgc3lzXG5cbmRlZiBtYWluKCk6XG4gICAgd2l0aCBvcGVuKCdzcmMvYXJtL3RyYW1wb2xpbmUuUycsICd3JykgYXMgdHJhbXBfb3V0OlxuICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2Jhc2gnLCAnc3JjL2FybS9nZW50cmFtcC5zaCddLCBzdGRvdXQ9dHJhbXBfb3V0KVxuICAgICAgICBwLndhaXQoKVxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIG1haW4oKSI7CisJCX07CisJCTZDNDNDQzNGMTUzNEZGMUIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICIvdXNyL2Jpbi9weXRob24gZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSI7CisJCX07CisJCTZDNDNDQzQwMTUzNEZGM0IwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICIvdXNyL2Jpbi9weXRob24gZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSI7CisJCX07CisvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzOTE1MzRFOUQxMDAxNjIzNjQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQzFGMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzIwMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMjExNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMjIxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMDE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMyMTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzQxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzODE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzNBMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzQzE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlGNkY5ODBCNjE0NzM4NjEzMDAwOEYxMjEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQkRDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkREMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JERTE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCRTYxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCRTgxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCRTkxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MyRjE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMxMTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzMxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNTE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM5MTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzQjE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk2QzQzQ0I0QjE1MzRFOUQxMDAxNjIzNjQgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQpIjsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiXCIkKFNZU1RFTV9BUFBTX0RJUikvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9MaWJyYXJ5L0ZyYW1ld29ya3NcIiIsCisJCQkJKTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC42OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk2QzQzQ0I0QzE1MzRFOUQxMDAxNjIzNjQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCkiOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCURTVFJPT1QgPSAvdG1wL2ZmaS5kc3Q7CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJcIiQoU1lTVEVNX0FQUFNfRElSKS9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL0xpYnJhcnkvRnJhbWV3b3Jrc1wiIiwKKwkJCQkpOworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjY7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2QjA4M0FCMTQ3MjFFRTUwMDMxRDhBMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzMyX0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQUxVRSA9IE5POworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gaW9zL2luY2x1ZGU7CisJCQkJU0RLUk9PVCA9IGlwaG9uZW9zOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRjZCMDgzQUMxNDcyMUVFNTAwMzFEOEExIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICIiOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQUxVRSA9IE5POworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gaW9zL2luY2x1ZGU7CisJCQkJU0RLUk9PVCA9IGlwaG9uZW9zOworCQkJCVZBTElEQVRFX1BST0RVQ1QgPSBZRVM7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2Rjk4MEMyMTQ3Mzg2MTMwMDA4RjEyMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICgKKwkJCQkJYXJtdjYsCisJCQkJCWFybXY3LAorCQkJCSk7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworCQkJCUdDQ19USFVNQl9TVVBQT1JUID0gTk87CisJCQkJSVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVQgPSA0LjA7CisJCQkJT1RIRVJfTERGTEFHUyA9ICItT2JqQyI7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNLSVBfSU5TVEFMTCA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUY2Rjk4MEMzMTQ3Mzg2MTMwMDA4RjEyMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFSQ0hTID0gKAorCQkJCQlhcm12NiwKKwkJCQkJYXJtdjcsCisJCQkJKTsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CisJCQkJR0NDX1RIVU1CX1NVUFBPUlQgPSBOTzsKKwkJCQlJUEhPTkVPU19ERVBMT1lNRU5UX1RBUkdFVCA9IDQuMDsKKwkJCQlPVEhFUl9MREZMQUdTID0gIi1PYmpDIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBmZmk7CisJCQkJU0tJUF9JTlNUQUxMID0gWUVTOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTZDNDNDQjRBMTUzNEU5RDEwMDE2MjM2NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIE9TIFgiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJNkM0M0NCNEIxNTM0RTlEMTAwMTYyMzY0IC8qIERlYnVnICovLAorCQkJCTZDNDNDQjRDMTUzNEU5RDEwMDE2MjM2NCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2QjA4MzlBMTQ3MjFFRTUwMDMxRDhBMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxpYmZmaSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlGNkIwODNBQjE0NzIxRUU1MDAzMUQ4QTEgLyogRGVidWcgKi8sCisJCQkJRjZCMDgzQUMxNDcyMUVFNTAwMzFEOEExIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRjZGOTgwQzQxNDczODYxMzAwMDhGMTIxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgaU9TIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUY2Rjk4MEMyMTQ3Mzg2MTMwMDA4RjEyMSAvKiBEZWJ1ZyAqLywKKwkJCQlGNkY5ODBDMzE0NzM4NjEzMDAwOEYxMjEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IEY2QjA4Mzk3MTQ3MjFFRTUwMDMxRDhBMSAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24KaW5kZXggYjhiODBlMC4uOTVmNDhjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24KQEAgLTI2LDQgKzI2LDQgQEAKICMgICAgcmVsZWFzZSwgdGhlbiBzZXQgYWdlIHRvIDAuCiAjCiAjIENVUlJFTlQ6UkVWSVNJT046QUdFCi01OjEwOjAKKzY6MDowCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbHRtYWluLnNoCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggNjkzOWRjYy4uYzI4NTJkOAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaApAQCAtMSw5ICsxLDkgQEAKLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCiAKLSMgbHRtYWluLnNoIChHTlUgbGlidG9vbCkgMi4yLjYKKyMgbGlidG9vbCAoR05VIGxpYnRvb2wpIDIuNC4yCiAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCiAKQEAgLTMyLDUwICszMiw1NyBAQAogIwogIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KICMKLSMgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0jICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCi0jIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotIyAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0jICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotIyAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcwotIyAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwotIyAgICAgLS10YWc9VEFHICAgICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRwotIyAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKLSMgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KLSMgLWgsIC0taGVscCAgICAgICAgICAgICAgIHByaW50IHNob3J0IG9yIGxvbmcgaGVscCBtZXNzYWdlCisjICAgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisjICAgICAgIC0tZGVidWcgICAgICAgICAgICAgIGVuYWJsZSB2ZXJib3NlIHNoZWxsIHRyYWNpbmcKKyMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisjICAgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCisjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyMgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0KQorIyAgICAgICAtLW5vLXdhcm4gICAgICAgICAgICBkb24ndCBkaXNwbGF5IHdhcm5pbmcgbWVzc2FnZXMKKyMgICAgICAgLS10YWc9VEFHICAgICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRworIyAgIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBwcmludCBtb3JlIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgdGhhbiBkZWZhdWx0CisjICAgICAgIC0tbm8tdmVyYm9zZSAgICAgICAgIGRvbid0IHByaW50IHRoZSBleHRyYSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisjICAgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KKyMgICAtaCwgLS1oZWxwLCAtLWhlbHAtYWxsICAgcHJpbnQgc2hvcnQsIGxvbmcsIG9yIGRldGFpbGVkIGhlbHAgbWVzc2FnZQogIwogIyBNT0RFIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAjCi0jICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5Ci0jICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0Ci0jICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQotIyAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcwotIyAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKLSMgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQotIyAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKKyMgICAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQorIyAgICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0CisjICAgICAgICAgZXhlY3V0ZSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCisjICAgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKKyMgICAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKKyMgICAgICAgICBsaW5rICAgICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCisjICAgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CiAjCi0jIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4KKyMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLiAgV2hlbiBwYXNzZWQgYXMgZmlyc3Qgb3B0aW9uLAorIyBgLS1tb2RlPU1PREUnIG1heSBiZSBhYmJyZXZpYXRlZCBhcyBgTU9ERScgb3IgYSB1bmlxdWUgYWJicmV2aWF0aW9uIG9mIHRoYXQuCiAjIFRyeSBgJHByb2duYW1lIC0taGVscCAtLW1vZGU9TU9ERScgZm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBNT0RFLgogIwogIyBXaGVuIHJlcG9ydGluZyBhIGJ1ZywgcGxlYXNlIGRlc2NyaWJlIGEgdGVzdCBjYXNlIHRvIHJlcHJvZHVjZSBpdCBhbmQKICMgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgogIwotIyAgICAgICBob3N0LXRyaXBsZXQ6CSRob3N0Ci0jICAgICAgIHNoZWxsOgkJJFNIRUxMCi0jICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKLSMgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKLSMgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKLSMgICAgICAgJHByb2duYW1lOgkJKEdOVSBsaWJ0b29sKSAyLjIuNgotIyAgICAgICBhdXRvbWFrZToJCSRhdXRvbWFrZV92ZXJzaW9uCi0jICAgICAgIGF1dG9jb25mOgkJJGF1dG9jb25mX3ZlcnNpb24KKyMgICAgICAgICBob3N0LXRyaXBsZXQ6CSRob3N0CisjICAgICAgICAgc2hlbGw6CQkkU0hFTEwKKyMgICAgICAgICBjb21waWxlcjoJCSRMVENDCisjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKKyMgICAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQorIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sKSAyLjQuMiBEZWJpYW4tMi40LjItMXVidW50dTEKKyMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KKyMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgorIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgorIyBHZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhlbHAvPi4KIAotUFJPR1JBTT1sdG1haW4uc2gKK1BST0dSQU09bGlidG9vbAogUEFDS0FHRT1saWJ0b29sCi1WRVJTSU9OPTIuMi42CitWRVJTSU9OPSIyLjQuMiBEZWJpYW4tMi40LjItMXVidW50dTEiCiBUSU1FU1RBTVA9IiIKLXBhY2thZ2VfcmV2aXNpb249MS4zMDEyCitwYWNrYWdlX3JldmlzaW9uPTEuMzMzNwogCiAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCiBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KQEAgLTkxLDEwICs5OCwxNSBAQAogQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKIERVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskMQorX0xURUNIT19FT0YnCit9CisKICMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgotIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KIGx0X3VzZXJfbG9jYWxlPQogbHRfc2FmZV9sb2NhbGU9CiBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKQEAgLTEwNywyNCArMTE5LDI4IEBACiAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCiAJZmkiCiBkb25lCitMQ19BTEw9QworTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFIExDX0FMTAogCiAkbHRfdW5zZXQgQ0RQQVRICiAKIAorIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCisjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKKyMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQorIyBmdW5jdGlvbi4KK3Byb2dwYXRoPSIkMCIKIAogCiAKIDogJHtDUD0iY3AgLWYifQotOiAke0VDSE89ImVjaG8ifQotOiAke0VHUkVQPSIvYmluL2dyZXAgLUUifQotOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQotOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9Ci06ICR7TE5fUz0ibG4gLXMifQordGVzdCAiJHtFQ0hPK3NldH0iID0gc2V0IHx8IEVDSE89JHthc19lY2hvLSdwcmludGYgJXNcbid9CiA6ICR7TUFLRT0ibWFrZSJ9CiA6ICR7TUtESVI9Im1rZGlyIn0KIDogJHtNVj0ibXYgLWYifQogOiAke1JNPSJybSAtZiJ9Ci06ICR7U0VEPSIvYmluL3NlZCJ9CiA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KIDogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQogCkBAIC0xNDQsNiArMTYwLDI3IEBACiBkaXJuYW1lPSJzLC9bXi9dKiQsLCIKIGJhc2VuYW1lPSJzLF4uKi8sLCIKIAorIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KK2Z1bmNfZGlybmFtZSAoKQoreworICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKyAgICBlbHNlCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisgICAgZmkKK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2Jhc2VuYW1lIGZpbGUKK2Z1bmNfYmFzZW5hbWUgKCkKK3sKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKK30gIyBmdW5jX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KICMgY2FsbDoKQEAgLTE1OCwzMyArMTk1LDE4MyBAQAogIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCiBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCiB7Ci0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAotICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gIGVsc2UKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gIGZpCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCisgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICAgIGZpCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCit9ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKK2Z1bmNfc3RyaXBuYW1lICgpCit7CisgICAgY2FzZSAkezJ9IGluCisgICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworICAgIGVzYWMKK30gIyBmdW5jX3N0cmlwbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCitwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKK3BhdGhjZHI9J3MsXi9bXi9dKiwsJworcmVtb3ZlZG90cGFydHM9Jzpkb3RzbAorCQlzQC9cLi9AL0BnCisJCXQgZG90c2wKKwkJcywvXC4kLC8sJworY29sbGFwc2VzbGFzaGVzPSdzQC9cezEsXH1AL0BnJworZmluYWxzbGFzaD0ncywvKiQsLywnCisKKyMgZnVuY19ub3JtYWxfYWJzcGF0aCBQQVRICisjIFJlbW92ZSBkb3VibGVkLXVwIGFuZCB0cmFpbGluZyBzbGFzaGVzLCAiLiIgcGF0aCBjb21wb25lbnRzLAorIyBhbmQgY2FuY2VsIG91dCBhbnkgIi4uIiBwYXRoIGNvbXBvbmVudHMgaW4gUEFUSCBhZnRlciBtYWtpbmcKKyMgaXQgYW4gYWJzb2x1dGUgcGF0aC4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKK2Z1bmNfbm9ybWFsX2Fic3BhdGggKCkKK3sKKyAgIyBTdGFydCBmcm9tIHJvb3QgZGlyIGFuZCByZWFzc2VtYmxlIHRoZSBwYXRoLgorICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD0kMQorICBmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZT0KKyAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCBpbgorICAgICIiKQorICAgICAgIyBFbXB0eSBwYXRoLCB0aGF0IGp1c3QgbWVhbnMgJGN3ZC4KKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiYHB3ZGAiCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgICByZXR1cm4KKyAgICA7OworICAgICMgVGhlIG5leHQgdGhyZWUgZW50cmllcyBhcmUgdXNlZCB0byBzcG90IGEgcnVuIG9mIHByZWNpc2VseQorICAgICMgdHdvIGxlYWRpbmcgc2xhc2hlcyB3aXRob3V0IHVzaW5nIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzZXM7CisgICAgIyB3ZSB0YWtlIGFkdmFudGFnZSBvZiBjYXNlJ3MgZmlyc3QtbWF0Y2ggYmVoYXZpb3VyLgorICAgIC8vLyopCisgICAgICAjIFVudXN1YWwgZm9ybSBvZiBhYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgorICAgIDs7CisgICAgLy8qKQorICAgICAgIyBOb3QgbmVjZXNzYXJpbHkgYW4gb3JkaW5hcnkgcGF0aDsgUE9TSVggcmVzZXJ2ZXMgbGVhZGluZyAnLy8nCisgICAgICAjIGFuZCBmb3IgZXhhbXBsZSBDeWd3aW4gdXNlcyBpdCB0byBhY2Nlc3MgcmVtb3RlIGZpbGUgc2hhcmVzCisgICAgICAjIG92ZXIgQ0lGUy9TTUIsIHNvIHdlIGNvbnNlcnZlIGEgbGVhZGluZyBkb3VibGUgc2xhc2ggaWYgZm91bmQuCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZT0vCisgICAgOzsKKyAgICAvKikKKyAgICAgICMgQWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KKyAgICA7OworICAgICopCisgICAgICAjIFJlbGF0aXZlIHBhdGgsIHByZXBlbmQgJGN3ZC4KKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YHB3ZGAvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgKKyAgICA7OworICBlc2FjCisgICMgQ2FuY2VsIG91dCBhbGwgdGhlIHNpbXBsZSBzdHVmZiB0byBzYXZlIGl0ZXJhdGlvbnMuICBXZSBhbHNvIHdhbnQKKyAgIyB0aGUgcGF0aCB0byBlbmQgd2l0aCBhIHNsYXNoIGZvciBlYXNlIG9mIHBhcnNpbmcsIHNvIG1ha2Ugc3VyZQorICAjIHRoZXJlIGlzIG9uZSAoYW5kIG9ubHkgb25lKSBoZXJlLgorICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcmVtb3ZlZG90cGFydHMiIC1lICIkY29sbGFwc2VzbGFzaGVzIiAtZSAiJGZpbmFsc2xhc2giYAorICB3aGlsZSA6OyBkbworICAgICMgUHJvY2Vzc2VkIGl0IGFsbCB5ZXQ/CisgICAgaWYgdGVzdCAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiID0gLyA7IHRoZW4KKyAgICAgICMgSWYgd2UgYXNjZW5kZWQgdG8gdGhlIHJvb3QgdXNpbmcgIi4uIiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eSBub3cuCisgICAgICBpZiB0ZXN0IC16ICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiIDsgdGhlbgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0vCisgICAgICBmaQorICAgICAgYnJlYWsKKyAgICBmaQorICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHBhdGhjYXIiYAorICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRwYXRoY2RyImAKKyAgICAjIEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIGl0CisgICAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50IGluCisgICAgICAiIikKKyAgICAgICAgIyBUcmFpbGluZyBlbXB0eSBwYXRoIGNvbXBvbmVudCwgaWdub3JlIGl0LgorICAgICAgOzsKKyAgICAgIC4uKQorICAgICAgICAjIFBhcmVudCBkaXI7IHN0cmlwIGxhc3QgYXNzZW1ibGVkIGNvbXBvbmVudCBmcm9tIHJlc3VsdC4KKyAgICAgICAgZnVuY19kaXJuYW1lICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgICA7OworICAgICAgKikKKyAgICAgICAgIyBBY3R1YWwgcGF0aCBjb21wb25lbnQsIGFwcGVuZCBpdC4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0LyRmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisgICMgUmVzdG9yZSBsZWFkaW5nIGRvdWJsZS1zbGFzaCBpZiBvbmUgd2FzIGZvdW5kIG9uIGVudHJ5LgorICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2UkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIH0KIAotIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisjIGZ1bmNfcmVsYXRpdmVfcGF0aCBTUkNESVIgRFNURElSCisjIGdlbmVyYXRlcyBhIHJlbGF0aXZlIHBhdGggZnJvbSBTUkNESVIgdG8gRFNURElSLCB3aXRoIGEgdHJhaWxpbmcKKyMgc2xhc2ggaWYgbm9uLWVtcHR5LCBzdWl0YWJsZSBmb3IgaW1tZWRpYXRlbHkgYXBwZW5kaW5nIGEgZmlsZW5hbWUKKyMgd2l0aG91dCBuZWVkaW5nIHRvIGFwcGVuZCBhIHNlcGFyYXRvci4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgorZnVuY19yZWxhdGl2ZV9wYXRoICgpCit7CisgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQxIgorICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKyAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDIiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAogCi0jIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKLSMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0jIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAotIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCi0jIGZ1bmN0aW9uLgotcHJvZ3BhdGg9IiQwIgorICAjIEFzY2VuZCB0aGUgdHJlZSBzdGFydGluZyBmcm9tIGxpYmRpcgorICB3aGlsZSA6OyBkbworICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBmb3VuZCBhIHByZWZpeCBvZiBiaW5kaXIKKyAgICBjYXNlICRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciBpbgorICAgICAgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyKQorICAgICAgICAjIGZvdW5kIGFuIGV4YWN0IG1hdGNoCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPQorICAgICAgICBicmVhaworICAgICAgICA7OworICAgICAgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyKikKKyAgICAgICAgIyBmb3VuZCBhIG1hdGNoaW5nIHByZWZpeAorICAgICAgICBmdW5jX3N0cmlwbmFtZSAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIgorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9LgorICAgICAgICBmaQorICAgICAgICBicmVhaworICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgZnVuY19kaXJuYW1lICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcgorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0ke2Z1bmNfZGlybmFtZV9yZXN1bHR9CisgICAgICAgIGlmIHRlc3QgIngkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIiID0geCA7IHRoZW4KKyAgICAgICAgICAjIEhhdmUgdG8gZGVzY2VuZCBhbGwgdGhlIHdheSB0byB0aGUgcm9vdCEKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgTm93IGNhbGN1bGF0ZSBwYXRoOyB0YWtlIGNhcmUgdG8gYXZvaWQgZG91YmxpbmctdXAgc2xhc2hlcy4KKyAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgIGZ1bmNfc3RyaXBuYW1lICcvJyAnLycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZCIKKyAgaWYgdGVzdCAieCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiICE9IHggOyB0aGVuCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0ke2Z1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHR9LyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fQorICBmaQorCisgICMgTm9ybWFsaXNhdGlvbi4gSWYgYmluZGlyIGlzIGxpYmRpciwgcmV0dXJuIGVtcHR5IHN0cmluZywKKyAgIyBlbHNlIHJlbGF0aXZlIHBhdGggZW5kaW5nIHdpdGggYSBzbGFzaDsgZWl0aGVyIHdheSwgdGFyZ2V0CisgICMgZmlsZSBuYW1lIGNhbiBiZSBkaXJlY3RseSBhcHBlbmRlZC4KKyAgaWYgdGVzdCAhIC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICBmdW5jX3N0cmlwbmFtZSAnLi8nICcnICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdC8iCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgIGZpCit9CiAKICMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgotIyBJbiB0aGUgdW5saWtlbHkgZXZlbnQgJHByb2duYW1lIGJlZ2FuIHdpdGggYSAnLScsIGl0IHdvdWxkIHBsYXkgaGF2b2Mgd2l0aAotIyBmdW5jX2VjaG8gKGltYWdpbmUgcHJvZ25hbWU9LW4pLCBzbyB3ZSBwcmVwZW5kIC4vIGluIHRoYXQgY2FzZToKIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRwcm9ncGF0aCIKIHByb2duYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotY2FzZSAkcHJvZ25hbWUgaW4KLSAgLSopIHByb2duYW1lPS4vJHByb2duYW1lIDs7Ci1lc2FjCiAKICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgcmVleGVjdXRpb246CiBjYXNlICRwcm9ncGF0aCBpbgpAQCAtMTk2LDcgKzM4Myw3IEBACiAgICAgIDs7CiAgICopCiAgICAgIHNhdmVfSUZTPSIkSUZTIgotICAgICBJRlM9OgorICAgICBJRlM9JHtQQVRIX1NFUEFSQVRPUi06fQogICAgICBmb3IgcHJvZ2RpciBpbiAkUEFUSDsgZG8KICAgICAgICBJRlM9IiRzYXZlX0lGUyIKICAgICAgICB0ZXN0IC14ICIkcHJvZ2Rpci8kcHJvZ25hbWUiICYmIGJyZWFrCkBAIC0yMTUsNiArNDAyLDE1IEBACiAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KIGRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKIAorIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKyMgc3RyaW5nIGxpdGVyYWxseS4KK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAorIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgorbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworCiAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQogIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJwogIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCkBAIC0yNDMsNyArNDM5LDcgQEAKICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgogZnVuY19lY2hvICgpCiB7Ci0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCisgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0kKiIKIH0KIAogIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCkBAIC0yNTgsMTggKzQ1NCwyNSBAQAogICAgIDoKIH0KIAorIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIkKiIKK30KKwogIyBmdW5jX2Vycm9yIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgogZnVuY19lcnJvciAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCiB9CiAKICMgZnVuY193YXJuaW5nIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCiBmdW5jX3dhcm5pbmcgKCkKIHsKLSAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogd2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCiAKICAgICAjIGJhc2ggYnVnIGFnYWluOgogICAgIDoKQEAgLTMyNiw5ICs1MjksOSBAQAogICAgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbiAqLyopIDs7ICopIGJyZWFrIDs7IGVzYWMKIAogICAgICAgICAjIC4uLm90aGVyd2lzZSB0aHJvdyBhd2F5IHRoZSBjaGlsZCBkaXJlY3RvcnkgYW5kIGxvb3AKLSAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICJYJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgICAgICAgIG15X2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKICAgICAgIGRvbmUKLSAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiWCRteV9kaXJfbGlzdCIgfCAkWHNlZCAtZSAncyw6KiQsLCdgCisgICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIiRteV9kaXJfbGlzdCIgfCAkU0VEICdzLDoqJCwsJ2AKIAogICAgICAgc2F2ZV9ta2Rpcl9wX0lGUz0iJElGUyI7IElGUz0nOicKICAgICAgIGZvciBteV9kaXIgaW4gJG15X2Rpcl9saXN0OyBkbwpAQCAtMzc4LDcgKzU4MSw3IEBACiAgICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBcYCRteV90bXBkaXInIgogICAgIGZpCiAKLSAgICAkRUNITyAiWCRteV90bXBkaXIiIHwgJFhzZWQKKyAgICAkRUNITyAiJG15X3RtcGRpciIKIH0KIAogCkBAIC0zOTIsNyArNTk1LDcgQEAKIHsKICAgICBjYXNlICQxIGluCiAgICAgICAqW1xcXGBcIlwkXSopCi0JZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9YCRFQ0hPICJYJDEiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OworCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CiAgICAgICAqKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD0iJDEiIDs7CiAgICAgZXNhYwpAQCAtNDE5LDcgKzYyMiw3IEBACiB7CiAgICAgY2FzZSAkMSBpbgogICAgICAgKltcXFxgXCJdKikKLQlteV9hcmc9YCRFQ0hPICJYJDEiIHwgJFhzZWQgXAorCW15X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgXAogCSAgICAtZSAiJGRvdWJsZV9xdW90ZV9zdWJzdCIgLWUgIiRzZWRfZG91YmxlX2JhY2tzbGFzaCJgIDs7CiAgICAgICAqKQogICAgICAgICBteV9hcmc9IiQxIiA7OwpAQCAtNDg4LDE1ICs2OTEsMzkgQEAKICAgICBmaQogfQogCi0KLQorIyBmdW5jX3RyX3NoCisjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgorIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCisjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAorIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KK2Z1bmNfdHJfc2ggKCkKK3sKKyAgY2FzZSAkMSBpbgorICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCisgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCisgICAgOzsKKyAgKiApCisgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKKyAgICA7OworICBlc2FjCit9CiAKIAogIyBmdW5jX3ZlcnNpb24KICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY192ZXJzaW9uICgpCiB7Ci0gICAgJFNFRCAtbiAnL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKKyAgICAkb3B0X2RlYnVnCisKKyAgICAkU0VEIC1uICcvKEMpLyFiIGdvCisJOm1vcmUKKwkvXC4vIXsKKwkgIE4KKwkgIHMvXG4jIC8gLworCSAgYiBtb3JlCisJfQorCTpnbworCS9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KICAgICAgICAgcy9cKChDKVwpWyAwLTksLV0qXCggWzEtOV1bMC05XSpcKS9cMVwyLwpAQCAtNTA5LDIyICs3MzYsMjggQEAKICMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY191c2FnZSAoKQogewotICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIC1oLyB7CisgICAgJG9wdF9kZWJ1ZworCisgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLiotLWhlbHAvIHsKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KIAlwCiAgICAgfScgPCAiJHByb2dwYXRoIgotICAgICRFQ0hPCisgICAgZWNobwogICAgICRFQ0hPICJydW4gXGAkcHJvZ25hbWUgLS1oZWxwIHwgbW9yZScgZm9yIGZ1bGwgdXNhZ2UiCiAgICAgZXhpdCAkPwogfQogCi0jIGZ1bmNfaGVscAotIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyMgZnVuY19oZWxwIFtOT0VYSVRdCisjIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LAorIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgogZnVuY19oZWxwICgpCiB7CisgICAgJG9wdF9kZWJ1ZworCiAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKwk6cHJpbnQKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKQEAgLTUzNCwxMSArNzY3LDE4IEBACiAJcypcJExUQ0ZMQUdTKiciJExUQ0ZMQUdTIicqCiAJcypcJExEKiciJExEIicqCiAJcy9cJHdpdGhfZ251X2xkLyciJHdpdGhfZ251X2xkIicvCi0Jcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0Jcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKCR7QVVUT01BS0UtYXV0b21ha2V9IC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKCR7QVVUT0NPTkYtYXV0b2NvbmZ9IC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCiAJcAotICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgZXhpdCAkPworCWQKKyAgICAgfQorICAgICAvXiMgLiogaG9tZSBwYWdlOi9iIHByaW50CisgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAorICAgICAnIDwgIiRwcm9ncGF0aCIKKyAgICByZXQ9JD8KKyAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KKyAgICAgIGV4aXQgJHJldAorICAgIGZpCiB9CiAKICMgZnVuY19taXNzaW5nX2FyZyBhcmduYW1lCkBAIC01NDYsNjMgKzc4NiwxMDYgQEAKICMgZXhpdF9jbWQuCiBmdW5jX21pc3NpbmdfYXJnICgpCiB7Ci0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisgICAgJG9wdF9kZWJ1ZworCisgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgogICAgIGV4aXRfY21kPWV4aXQKIH0KIAorCisjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0CisjIFNldCBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcgc2hlbGwKKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCit7CisgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKKworICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKK30gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbG9uZ29wdAorIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAorIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgorZnVuY19zcGxpdF9sb25nX29wdCAoKQoreworICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJworICAgIG15X3NlZF9sb25nX2FyZz0nMXMvXi0tW149XSo9Ly8nCisKKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKIGV4aXRfY21kPToKIAogCiAKIAogCi0jIENoZWNrIHRoYXQgd2UgaGF2ZSBhIHdvcmtpbmcgJEVDSE8uCi1pZiB0ZXN0ICJYJDEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCi0gIDoKLWVsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0gICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKLSAgOgotZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlICRFQ0hPIHdpbGwgd29yay4KLSAgZXhlYyAkU0hFTEwgIiRwcm9ncGF0aCIgLS1uby1yZWV4ZWMgJHsxKyIkQCJ9Ci1maQotCi1pZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwotICBzaGlmdAotICBjYXQgPDxFT0YKLSQqCi1FT0YKLSAgZXhpdCAkRVhJVF9TVUNDRVNTCi1maQotCiBtYWdpYz0iJSUlTUFHSUMgdmFyaWFibGUlJSUiCiBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKIAogIyBHbG9iYWwgdmFyaWFibGVzLgotIyAkbW9kZSBpcyB1bnNldAogbm9ub3B0PQotZXhlY3V0ZV9kbGZpbGVzPQogcHJlc2VydmVfYXJncz0KIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKIG8ybG89InMvXFwuJHtvYmpleHR9XCQvLmxvLyIKIGV4dHJhY3RlZF9hcmNoaXZlcz0KIGV4dHJhY3RlZF9zZXJpYWw9MAogCi1vcHRfZHJ5X3J1bj1mYWxzZQotb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCi1vcHRfc2lsZW50PWZhbHNlCi1vcHRfZGVidWc9OgotCiAjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZwogIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgogZXhlY19jbWQ9CiAKKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCisjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KK2Z1bmNfYXBwZW5kICgpCit7CisgICAgZXZhbCAiJHsxfT1cJCR7MX1cJHsyfSIKK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworIyBmdW5jX2FwcGVuZF9xdW90ZWQgdmFyIHZhbHVlCisjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAorIyBieSBhIHNwYWNlLgorZnVuY19hcHBlbmRfcXVvdGVkICgpCit7CisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKyAgICBldmFsICIkezF9PVwkJHsxfVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCit9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KK2Z1bmNfYXJpdGggKCkKK3sKKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCit9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfbGVuIHN0cmluZworIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorZnVuY19sZW4gKCkKK3sKKyAgICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiR7MX0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfbG8ybyBvYmplY3QKK2Z1bmNfbG8ybyAoKQoreworICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKK2Z1bmNfeGZvcm0gKCkKK3sKKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKK30gIyBmdW5jX3hmb3JtIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKICMgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQogIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KQEAgLTYzNiwxNiArOTE5LDE2IEBACiAjIERpc3BsYXkgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdC4KIGZ1bmNfZmVhdHVyZXMgKCkKIHsKLSAgICAkRUNITyAiaG9zdDogJGhvc3QiCisgICAgZWNobyAiaG9zdDogJGhvc3QiCiAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgICRFQ0hPICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGVsc2UKLSAgICAgICRFQ0hPICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICAgZmkKICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkRUNITyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICBlY2hvICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBlbHNlCi0gICAgICAkRUNITyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgogICAgIGZpCiAKICAgICBleGl0ICQ/CkBAIC02OTIsMTMzICs5NzUsNiBAQAogICBlc2FjCiB9CiAKLSMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCi0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgotewotCi0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAotICBjYXNlICQxIGluCi0gIGNsZWFufGNsZWF8Y2xlfGNsKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGxpbmt8bGlufGxpfGwpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBlc2FjCi0KLSAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6Ci0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KLSAgICBvcHQ9IiQxIgotICAgIHNoaWZ0Ci0KLSAgICBjYXNlICRvcHQgaW4KLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7Ci0KLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgotCQkJb3B0X2RlYnVnPSdzZXQgLXgnCi0JCQkkb3B0X2RlYnVnCi0JCQk7OwotCi0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7Ci0gICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OwotICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OwotCi0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLQkJCWNhc2UgJDEgaW4KLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKLQkJCSAgY2xlYW4pCTs7Ci0JCQkgIGNvbXBpbGUpCTs7Ci0JCQkgIGV4ZWN1dGUpCTs7Ci0JCQkgIGZpbmlzaCkJOzsKLQkJCSAgaW5zdGFsbCkJOzsKLQkJCSAgbGluaykJCTs7Ci0JCQkgIHJlbGluaykJOzsKLQkJCSAgdW5pbnN0YWxsKQk7OwotCi0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgotCQkJICAgICBleGl0X2NtZD1leGl0Ci0JCQkgICAgIGJyZWFrCi0JCQkgICAgIDs7Ci0JCSAgICAgICAgZXNhYwotCi0JCQltb2RlPSIkMSIKLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQotCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKLQotICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCW9wdF9zaWxlbnQ9OgotCQkJOzsKLQotICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKLQkJCTs7Ci0KLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgotCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQotCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCi0JCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OwotICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OwotCi0gICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OwotCi0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgotCQkJYnJlYWsKLQkJCTs7Ci0gICAgZXNhYwotICBkb25lCi0KLQotICBjYXNlICRob3N0IGluCi0gICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKikKLSAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcwotICAgICAgOzsKLSAgZXNhYwotCi0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgotICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KLSAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKLX0KLQogIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKICMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKICMgcmVsZWFzZSBvZiBsaWJ0b29sLgpAQCAtODU1LDM4ICsxMDExLDIxOSBAQAogfQogCiAKKyMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorY2FzZSAkMSBpbgorY2xlYW58Y2xlYXxjbGV8Y2wpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CisgIDs7CitmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworbGlua3xsaW58bGl8bCkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CisgIDs7Cit1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2VzYWMKKworCisKKyMgT3B0aW9uIGRlZmF1bHRzOgorb3B0X2RlYnVnPToKK29wdF9kcnlfcnVuPWZhbHNlCitvcHRfY29uZmlnPWZhbHNlCitvcHRfcHJlc2VydmVfZHVwX2RlcHM9ZmFsc2UKK29wdF9mZWF0dXJlcz1mYWxzZQorb3B0X2ZpbmlzaD1mYWxzZQorb3B0X2hlbHA9ZmFsc2UKK29wdF9oZWxwX2FsbD1mYWxzZQorb3B0X3NpbGVudD06CitvcHRfd2FybmluZz06CitvcHRfdmVyYm9zZT06CitvcHRfc2lsZW50PWZhbHNlCitvcHRfdmVyYm9zZT1mYWxzZQorCisKKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQorIyBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgLS12ZXJzaW9uJyBoYXBwZW4gYXMgcXVpY2tseSBhcyB3ZSBjYW4uCit7CisgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKKyAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICBvcHQ9IiQxIgorICAgIHNoaWZ0CisgICAgY2FzZSAkb3B0IGluCisgICAgICAtLWRlYnVnfC14KQlvcHRfZGVidWc9J3NldCAteCcKKwkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKwkJCSRvcHRfZGVidWcKKwkJCTs7CisgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCisJCQlvcHRfZHJ5X3J1bj06CisJCQk7OworICAgICAgLS1jb25maWcpCisJCQlvcHRfY29uZmlnPToKK2Z1bmNfY29uZmlnCisJCQk7OworICAgICAgLS1kbG9wZW58LWRsb3BlbikKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KK30kb3B0YXJnIgorCQkJc2hpZnQKKwkJCTs7CisgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQorCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKKwkJCTs7CisgICAgICAtLWZlYXR1cmVzKQorCQkJb3B0X2ZlYXR1cmVzPToKK2Z1bmNfZmVhdHVyZXMKKwkJCTs7CisgICAgICAtLWZpbmlzaCkKKwkJCW9wdF9maW5pc2g9Ogorc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorCQkJOzsKKyAgICAgIC0taGVscCkKKwkJCW9wdF9oZWxwPToKKwkJCTs7CisgICAgICAtLWhlbHAtYWxsKQorCQkJb3B0X2hlbHBfYWxsPToKK29wdF9oZWxwPSc6IGhlbHAtYWxsJworCQkJOzsKKyAgICAgIC0tbW9kZSkKKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworCQkJb3B0YXJnPSIkMSIKKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgorY2FzZSAkb3B0YXJnIGluCisgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6CisgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7CisKKyAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCisgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCisgICAgIGV4aXRfY21kPWV4aXQKKyAgICAgYnJlYWsKKyAgICAgOzsKK2VzYWMKKwkJCXNoaWZ0CisJCQk7OworICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKKwkJCW9wdF9zaWxlbnQ9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tbm8td2FybmluZ3wtLW5vLXdhcm4pCisJCQlvcHRfd2FybmluZz1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1uby12ZXJib3NlKQorCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisJCQlvcHRfc2lsZW50PToKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorCQkJOzsKKyAgICAgIC0tdmVyYm9zZXwtdikKKwkJCW9wdF92ZXJib3NlPToKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0Igorb3B0X3NpbGVudD1mYWxzZQorCQkJOzsKKyAgICAgIC0tdGFnKQorCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X3RhZz0iJG9wdGFyZyIKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCitmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OworICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7CisgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorICAgICAgLS0qPSopCisJCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgorCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgorICAgICAgLVw/KnwtaCp8LW4qfC12KikKKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgorCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtLSkJCWJyZWFrCQkJCQk7OworICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKKyAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgVmFsaWRhdGUgb3B0aW9uczoKKworICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAorICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKyAgICBub25vcHQ9IiRvcHQiCisgICAgc2hpZnQKKyAgZmkKKworICAjIHByZXNlcnZlIC0tZGVidWcKKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgorCisgIGNhc2UgJGhvc3QgaW4KKyAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQorICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgOzsKKyAgICAqKQorICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCisgICAgICA7OworICBlc2FjCisKKyAgJG9wdF9oZWxwIHx8IHsKKyAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CisgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisKKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKyAgICBmaQorCisgICAgIyBEYXJ3aW4gc3Vja3MKKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorCisgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCisgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisgICAgICAkRUNITyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisKKyAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCisgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgfQorCisKKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAorICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorfQorCisKKworCiAjIyAtLS0tLS0tLS0tLSAjIwogIyMgICAgTWFpbi4gICAgIyMKICMjIC0tLS0tLS0tLS0tICMjCiAKLSRvcHRfaGVscCB8fCB7Ci0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLSAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0KLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0gICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotICBmaQotCi0gIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgotCi0KLSAgIyBEYXJ3aW4gc3Vja3MKLSAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKLQotCi0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotICAgICRFQ0hPICIkaGVscCIgMT4mMgotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICBmaQotCi0gICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLX0KLQotCiAjIGZ1bmNfbGFsaWJfcCBmaWxlCiAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCiAjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CkBAIC05NTAsMTIgKzEyODcsOSBAQAogIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKIHsKLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgotICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCi0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLSAgICBmaQorICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCiB9CiAKICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCkBAIC0xMDAxLDYgKzEzMzUsMzcgQEAKIH0KIAogCisjIGZ1bmNfcmVzb2x2ZV9zeXNyb290IFBBVEgKKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCisjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorZnVuY19yZXNvbHZlX3N5c3Jvb3QgKCkKK3sKKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCisgIGNhc2UgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCBpbgorICA9KikKKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIDs7CisgIGVzYWMKK30KKworIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICisjIElmIFBBVEggYmVnaW5zIHdpdGggdGhlIHN5c3Jvb3QsIHJlcGxhY2UgaXQgd2l0aCA9IGFuZAorIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgorZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKK3sKKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisgID8qOiIkbHRfc3lzcm9vdCIqKQorICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgorICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisgICAgOzsKKyAgKikKKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgorICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQorICAgIDs7CisgIGVzYWMKK30KKwogIyBmdW5jX2luZmVyX3RhZyBhcmcKICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAogIyBpZiBvbmUgd2Fzbid0IGNob3NlbiB2aWEgdGhlICItLXRhZyIgY29tbWFuZCBsaW5lIG9wdGlvbi4KQEAgLTEwMTMsMTMgKzEzNzgsMTUgQEAKICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgogICAgICAgQ0NfcXVvdGVkPQogICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgogICAgICAgZG9uZQorICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCiAgICAgICBjYXNlICRAIGluCiAgICAgICAjIEJsYW5rcyBpbiB0aGUgY29tbWFuZCBtYXkgaGF2ZSBiZWVuIHN0cmlwcGVkIGJ5IHRoZSBjYWxsaW5nIHNoZWxsLAogICAgICAgIyBidXQgbm90IGZyb20gdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gY29uZmlndXJlIHdhcyBydW4uCi0gICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikgOzsKKyAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgJENDX2V4cGFuZGVkICIqIHwgIiRDQ19leHBhbmRlZCAiKiB8IFwKKyAgICAgICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiICRDQ19xdW90ZWRfZXhwYW5kZWQgIiogfCAiJENDX3F1b3RlZF9leHBhbmRlZCAiKikgOzsKICAgICAgICMgQmxhbmtzIGF0IHRoZSBzdGFydCBvZiAkYmFzZV9jb21waWxlIHdpbGwgY2F1c2UgdGhpcyB0byBmYWlsCiAgICAgICAjIGlmIHdlIGRvbid0IGNoZWNrIGZvciB0aGVtIGFzIHdlbGwuCiAgICAgICAqKQpAQCAtMTAzMCwxMSArMTM5NywxMyBAQAogCSAgICBDQ19xdW90ZWQ9CiAJICAgIGZvciBhcmcgaW4gJENDOyBkbwogCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKIAkgICAgZG9uZQorCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisJICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAogCSAgICBjYXNlICIkQCAiIGluCi0JICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopCisJICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgJENDX2V4cGFuZGVkICIqIHwgIiRDQ19leHBhbmRlZCAiKiB8IFwKKwkgICAgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgJENDX3F1b3RlZF9leHBhbmRlZCAiKiB8ICIkQ0NfcXVvdGVkX2V4cGFuZGVkICIqKQogCSAgICAgICMgVGhlIGNvbXBpbGVyIGluIHRoZSBiYXNlIGNvbXBpbGUgY29tbWFuZCBtYXRjaGVzCiAJICAgICAgIyB0aGUgb25lIGluIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbi4KIAkgICAgICAjIEFzc3VtZSB0aGlzIGlzIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbiB3ZSB3YW50LgpAQCAtMTA5Nyw2ICsxNDY2LDQ4NiBAQAogICAgIH0KIH0KIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsCisjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KKyMgaW4gJGJ1aWxkJ3MgJFBBVEguCisjCisjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQsIGFuZCB3aWxsCisjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQorICAgICMgY29tbWFuZCBpcyBub3QgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCisgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAorICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgZWxzZQorICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CisgICAgZmkKKyAgZmkKK30KKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyIEFSRworIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAorIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5CisjIGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0gaW4gJGJ1aWxkJ3MKKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisjCisjIEFSRyBpcyBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gd2luMzIuCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgorIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKKyMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgorZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgb2xkSUZTPSRJRlMKKyAgICBJRlM9OgorICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCisgICAgICBJRlM9JG9sZElGUworICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgICAgICBlbHNlCisgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9JG9sZElGUworICBmaQorfQorIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKKworCisjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCisjIFdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgdGhlIGN5Z3BhdGggcHJvZ3JhbSB2aWEgTFRfQ1lHUEFUSC4gVGhpcyBpcyB1c2VkIHdoZW4KKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCisjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgorIyAoMiksIHJldHVybnMgdGhlIEN5Z3dpbiBmaWxlIG5hbWUgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dAorIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCisjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCisjIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbgorIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisjCisjIEFSR1MgYXJlIHBhc3NlZCB0byBjeWdwYXRoLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyB0aGUgZmlsZSBuYW1lIG9yIHBhdGggdG8KKyMgYmUgY29udmVydGVkLgorIworIyBTcGVjaWZ5IHRoZSBhYnNvbHV0ZSAqbml4IChvciB3MzIpIG5hbWUgdG8gY3lncGF0aCBpbiB0aGUgTFRfQ1lHUEFUSAorIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KK2Z1bmNfY3lncGF0aCAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAorICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgorICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5CisgICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorICAgIGZpCisgIGVsc2UKKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKKyAgZmkKK30KKyNlbmQ6IGZ1bmNfY3lncGF0aAorCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgorIyByZXN1bHQgaW4gZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0LgorZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKK30KKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKKyMgVmVyaWZ5IHRoYXQgQVJHMSAoYSBmaWxlIG5hbWUgaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KK2Z1bmNfY29udmVydF9maWxlX2NoZWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCisgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAjIEZhbGxiYWNrOgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjaworCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKKyMgVmVyaWZ5IHRoYXQgRlJPTV9QQVRIIChhIHBhdGggaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCitmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAorICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KKyAgICBpZiB0ZXN0ICJ4JDEiICE9ICJ4JDIiOyB0aGVuCisgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKKyAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycyJgCisgICAgZWxzZQorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKKyAgICBmaQorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCBGUk9OVFBBVCBCQUNLUEFUIFJFUEwgT1JJRworIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAorIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCitmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBjYXNlICQ0IGluCisgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgOzsKKyAgZXNhYworICBjYXNlICQ0IGluCisgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKKyAgICA7OworICBlc2FjCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCisjCisjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorCisKKyMgZnVuY190b19ob3N0X2ZpbGUgQVJHCisjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY190b19ob3N0X2ZpbGUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCit9CisjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQorCisKKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKKyMgY29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHRvb2xjaGFpbiBmb3JtYXQuIFJldHVybgorIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAorIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KK2Z1bmNfdG9fdG9vbF9maWxlICgpCit7CisgICRvcHRfZGVidWcKKyAgY2FzZSAsJDIsIGluCisgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKKyAgICAgIDs7CisgICAgKikKKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0CisgICAgICA7OworICBlc2FjCit9CisjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQoreworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKKyAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50CisjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZAorIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKKyMKKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKyMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorIworIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgorIyBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQKKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgorIworIyBBbGwgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uOgorIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCisjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKKyMgd2hlcmUsIGZvciBhbnkgZ2l2ZW4gJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9uIHRoZSAnWF90b19ZJyB2YWx1ZSBpcyB0aGUKKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCisjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisjIHdpbGwgYnJlYWsuCisKKworIyBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KK3RvX2hvc3RfcGF0aF9jbWQ9CitmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgorICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKKyAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCisgIGZpCit9CisKKworIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKKyMgQ29udmVydHMgdGhlIHBhdGggQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY190b19ob3N0X3BhdGggKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorICAkdG9faG9zdF9wYXRoX2NtZCAiJDEiCit9CisjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQoreworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUworICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7CisgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKKyMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQgaW4gYQorIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKyAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCisgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KKworCiAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgogZnVuY19tb2RlX2NvbXBpbGUgKCkKIHsKQEAgLTExMzcsMTIgKzE5ODYsMTIgQEAKIAkgIDs7CiAKIAktcGllIHwgLWZwaWUgfCAtZlBJRSkKLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCisgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKIAktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQotCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKQEAgLTExNjMsMTUgKzIwMTIsMTQgQEAKIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwogCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCiAJICBkb25lCiAJICBJRlM9IiRzYXZlX2lmcyIKIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCiAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAogCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCi0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCkBAIC0xMTg3LDggKzIwMzUsNyBAQAogICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQogCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIHByZXZpb3VzIGFyZ3VtZW50LgotICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCi0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGJhc2VfY29tcGlsZSAiJGxhc3RhcmciCiAgICAgZG9uZSAjIGZvciBhcmcKIAogICAgIGNhc2UgJGFyZ19tb2RlIGluCkBAIC0xMjEzLDcgKzIwNjAsNyBAQAogICAgICouW2NDRlNpZm1zb10gfCBcCiAgICAgKi5hZGEgfCAqLmFkYiB8ICouYWRzIHwgKi5hc20gfCBcCiAgICAgKi5jKysgfCAqLmNjIHwgKi5paSB8ICouY2xhc3MgfCAqLmNwcCB8ICouY3h4IHwgXAotICAgICouW2ZGXVswOV0/IHwgKi5mb3IgfCAqLmphdmEgfCAqLm9iaiB8ICouc3gpCisgICAgKi5bZkZdWzA5XT8gfCAqLmZvciB8ICouamF2YSB8ICouZ28gfCAqLm9iaiB8ICouc3ggfCAqLmN1IHwgKi5jdXApCiAgICAgICBmdW5jX3hmb3JtICIkbGlib2JqIgogICAgICAgbGlib2JqPSRmdW5jX3hmb3JtX3Jlc3VsdAogICAgICAgOzsKQEAgLTEyODgsNyArMjEzNSw3IEBACiAgICAgIyBDYWxjdWxhdGUgdGhlIGZpbGVuYW1lIG9mIHRoZSBvdXRwdXQgb2JqZWN0IGlmIGNvbXBpbGVyIGRvZXMKICAgICAjIG5vdCBzdXBwb3J0IC1vIHdpdGggLWMKICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IG5vOyB0aGVuCi0gICAgICBvdXRwdXRfb2JqPWAkRUNITyAiWCRzcmNmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJScgLWUgJ3MlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQorICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIiRzcmNmaWxlIiB8ICRTRUQgJ3MlXi4qLyUlOyBzJVwuW14uXSokJSUnYC4ke29iamV4dH0KICAgICAgIGxvY2tmaWxlPSIkb3V0cHV0X29iai5sb2NrIgogICAgIGVsc2UKICAgICAgIG91dHB1dF9vYmo9CkBAIC0xMzE5LDE3ICsyMTY2LDE2IEBACiAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgorICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgogICAgICAgJEVDSE8gIiRzcmNmaWxlIiA+ICIkbG9ja2ZpbGUiCiAgICAgZmkKIAogICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCisgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKICAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQogCi0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCi0gICAgICBldmFsIHNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiCi0gICAgZmkKKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHNyY2ZpbGUiCiAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiAKQEAgLTEzNDksNyArMjE5NSw3IEBACiAKICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgogCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgotCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgorCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKQEAgLTEzOTYsMTEgKzIyNDIsMTEgQEAKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgorCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkb2JqIgogICAgICAgZmkKIAogICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCi0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCisgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgogICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIgXAogICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwogCkBAIC0xNDQ1LDEzICsyMjkxLDEzIEBACiB9CiAKICRvcHRfaGVscCB8fCB7Ci10ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorICB0ZXN0ICIkb3B0X21vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KIH0KIAogZnVuY19tb2RlX2hlbHAgKCkKIHsKICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLSAgICBjYXNlICRtb2RlIGluCisgICAgY2FzZSAkb3B0X21vZGUgaW4KICAgICAgICIiKQogICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgpAQCAtMTQ4MiwxMCArMjMyOCwxMSBAQAogCiAgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQogICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKLSAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkaW5nIG5vbi1QSUMgb2JqZWN0cyBvbmx5CisgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5CisgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQogICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwogICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgogCiBDT01QSUxFLUNPTU1BTkQgaXMgYSBjb21tYW5kIHRvIGJlIHVzZWQgaW4gY3JlYXRpbmcgYSBcYHN0YW5kYXJkJyBvYmplY3QgZmlsZQogZnJvbSB0aGUgZ2l2ZW4gU09VUkNFRklMRS4KQEAgLTE1MzgsNyArMjM4NSw3IEBACiAKIFRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBJTlNUQUxMLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgogCi0gIC1pbnN0LXByZWZpeCBQUkVGSVgtRElSICBVc2UgUFJFRklYLURJUiBhcyBhIHN0YWdpbmcgYXJlYSBmb3IgaW5zdGFsbGF0aW9uCisgIC1pbnN0LXByZWZpeC1kaXIgUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgogCiBUaGUgcmVzdCBvZiB0aGUgY29tcG9uZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMgYXJndW1lbnRzIHRvIHRoYXQgY29tbWFuZCAob25seQogQlNELWNvbXBhdGlibGUgaW5zdGFsbCBvcHRpb25zIGFyZSByZWNvZ25pemVkKS4iCkBAIC0xNTU4LDYgKzI0MDUsOCBAQAogCiAgIC1hbGwtc3RhdGljICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIGF0IGFsbAogICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKKyAgLWJpbmRpciBCSU5ESVIgICAgc3BlY2lmeSBwYXRoIHRvIGJpbmFyaWVzIGRpcmVjdG9yeSAoZm9yIHN5c3RlbXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIG11c3QgYmUgZm91bmQgaW4gdGhlIFBBVEggc2V0dGluZyBhdCBydW50aW1lKQogICAtZGxvcGVuIEZJTEUgICAgICBcYC1kbHByZW9wZW4nIEZJTEUgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkIGF0IHJ1bnRpbWUKICAgLWRscHJlb3BlbiBGSUxFICAgbGluayBpbiBGSUxFIGFuZCBhZGQgaXRzIHN5bWJvbHMgdG8gbHRfcHJlbG9hZGVkX3N5bWJvbHMKICAgLWV4cG9ydC1keW5hbWljICAgYWxsb3cgc3ltYm9scyBmcm9tIE9VVFBVVC1GSUxFIHRvIGJlIHJlc29sdmVkIHdpdGggZGxzeW0oMykKQEAgLTE1ODYsNiArMjQzNSwxMSBAQAogICAtdmVyc2lvbi1pbmZvIENVUlJFTlRbOlJFVklTSU9OWzpBR0VdXQogICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGxpYnJhcnkgdmVyc2lvbiBpbmZvIFtlYWNoIHZhcmlhYmxlIGRlZmF1bHRzIHRvIDBdCiAgIC13ZWFrIExJQk5BTUUgICAgIGRlY2xhcmUgdGhhdCB0aGUgdGFyZ2V0IHByb3ZpZGVzIHRoZSBMSUJOQU1FIGludGVyZmFjZQorICAtV2MsRkxBRworICAtWGNvbXBpbGVyIEZMQUcgICBwYXNzIGxpbmtlci1zcGVjaWZpYyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgorICAtV2wsRkxBRworICAtWGxpbmtlciBGTEFHICAgICBwYXNzIGxpbmtlci1zcGVjaWZpYyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBsaW5rZXIKKyAgLVhDQ2xpbmtlciBGTEFHICAgcGFzcyBsaW5rLXNwZWNpZmljIEZMQUcgdG8gdGhlIGNvbXBpbGVyIGRyaXZlciAoQ0MpCiAKIEFsbCBvdGhlciBvcHRpb25zIChhcmd1bWVudHMgYmVnaW5uaW5nIHdpdGggXGAtJykgYXJlIGlnbm9yZWQuCiAKQEAgLTE2MTksMTggKzI0NzMsNDQgQEAKICAgICAgICAgOzsKIAogICAgICAgKikKLSAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgorICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgogICAgICAgICA7OwogICAgIGVzYWMKIAotICAgICRFQ0hPCisgICAgZWNobwogICAgICRFQ0hPICJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCi0KLSAgICBleGl0ICQ/CiB9CiAKLSAgIyBOb3cgdGhhdCB3ZSd2ZSBjb2xsZWN0ZWQgYSBwb3NzaWJsZSAtLW1vZGUgYXJnLCBzaG93IGhlbHAgaWYgbmVjZXNzYXJ5Ci0gICRvcHRfaGVscCAmJiBmdW5jX21vZGVfaGVscAorIyBOb3cgdGhhdCB3ZSd2ZSBjb2xsZWN0ZWQgYSBwb3NzaWJsZSAtLW1vZGUgYXJnLCBzaG93IGhlbHAgaWYgbmVjZXNzYXJ5CitpZiAkb3B0X2hlbHA7IHRoZW4KKyAgaWYgdGVzdCAiJG9wdF9oZWxwIiA9IDo7IHRoZW4KKyAgICBmdW5jX21vZGVfaGVscAorICBlbHNlCisgICAgeworICAgICAgZnVuY19oZWxwIG5vZXhpdAorICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKwlmdW5jX21vZGVfaGVscAorICAgICAgZG9uZQorICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCisgICAgeworICAgICAgZnVuY19oZWxwIG5vZXhpdAorICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKwllY2hvCisJZnVuY19tb2RlX2hlbHAKKyAgICAgIGRvbmUKKyAgICB9IHwKKyAgICBzZWQgJzFkCisgICAgICAvXldoZW4gcmVwb3J0aW5nLywvXlJlcG9ydC97CisJSAorCWQKKyAgICAgIH0KKyAgICAgICR4CisgICAgICAvaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMvZAorICAgICAgL21vcmUgZGV0YWlsZWQgLipNT0RFL2QKKyAgICAgIHMvXlVzYWdlOi4qLS1tb2RlPVwoW14gXSpcKSAuKi9EZXNjcmlwdGlvbiBvZiBcMSBtb2RlOi8nCisgIGZpCisgIGV4aXQgJD8KK2ZpCiAKIAogIyBmdW5jX21vZGVfZXhlY3V0ZSBhcmcuLi4KQEAgLTE2NDMsMTMgKzI1MjMsMTYgQEAKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCiAKICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgotICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCisgICAgZm9yIGZpbGUgaW4gJG9wdF9kbG9wZW47IGRvCiAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAogCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKIAogICAgICAgZGlyPQogICAgICAgY2FzZSAkZmlsZSBpbgogICAgICAgKi5sYSkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCiAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgpAQCAtMTY3MSw3ICsyNTU0LDcgQEAKIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCiAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCi0JICBkaXI9IiRkaXIvJG9iamRpciIKKwkgIGZ1bmNfYXBwZW5kIGRpciAiLyRvYmpkaXIiCiAJZWxzZQogCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCkBAIC0xNzEyLDcgKzI1OTUsNyBAQAogICAgIGZvciBmaWxlCiAgICAgZG8KICAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgIC0qKSA7OworICAgICAgLSogfCAqLmxhIHwgKi5sbyApIDs7CiAgICAgICAqKQogCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KIAlpZiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAiJGZpbGUiOyB0aGVuCkBAIC0xNzI4LDggKzI2MTEsNyBAQAogCTs7CiAgICAgICBlc2FjCiAgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgotICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCi0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYXJncyAiJGZpbGUiCiAgICAgZG9uZQogCiAgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KQEAgLTE3NTQsMjkgKzI2MzYsNjYgQEAKICAgICAgICMgRGlzcGxheSB3aGF0IHdvdWxkIGJlIGRvbmUuCiAgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KIAlldmFsICJcJEVDSE8gXCJcJHNobGlicGF0aF92YXI9XCQkc2hsaWJwYXRoX3ZhclwiIgotCSRFQ0hPICJleHBvcnQgJHNobGlicGF0aF92YXIiCisJZWNobyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgogICAgICAgZmkKICAgICAgICRFQ0hPICIkY21kJGFyZ3MiCiAgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKICAgICBmaQogfQogCi10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9CiAKIAogIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgogZnVuY19tb2RlX2ZpbmlzaCAoKQogewogICAgICRvcHRfZGVidWcKLSAgICBsaWJkaXJzPSIkbm9ub3B0IgorICAgIGxpYnM9CisgICAgbGliZGlycz0KICAgICBhZG1pbmNtZHM9CiAKLSAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotICAgICAgZm9yIGRpcgotICAgICAgZG8KLQlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgotICAgICAgZG9uZQorICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQorICAgIGRvCisgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgorCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgogCisgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCisJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KKwkgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkb3B0IgorCWVsc2UKKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJZmkKKworICAgICAgZWxzZQorCWZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgYXJndW1lbnQgXGAkb3B0JyIKKyAgICAgIGZpCisgICAgZG9uZQorCisgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KKyAgICAgICAgc3lzcm9vdF9yZWdleD1gJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKKyAgICAgIGVsc2UKKyAgICAgICAgc3lzcm9vdF9jbWQ9CisgICAgICBmaQorCisgICAgICAjIFJlbW92ZSBzeXNyb290IHJlZmVyZW5jZXMKKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgorICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworICAgICAgICAgIGVjaG8gInJlbW92aW5nIHJlZmVyZW5jZXMgdG8gJGx0X3N5c3Jvb3QgYW5kIFxgPScgcHJlZml4ZXMgZnJvbSAkbGliIgorICAgICAgICBkb25lCisgICAgICBlbHNlCisgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCisgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCisJICAgID4gJHRtcGRpci90bXAtbGEKKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKKwlkb25lCisgICAgICAgICR7Uk19ciAiJHRtcGRpciIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCiAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwogCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCkBAIC0xNzg2LDcgKzI3MDUsNyBAQAogCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KIAkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCi0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBmdW5jX2FwcGVuZCBhZG1pbmNtZHMgIgogICAgICAgICRjbWRzIgogCWZpCiAgICAgICBkb25lCkBAIC0xNzk1LDUzICsyNzE0LDU1IEBACiAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCiAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCiAKLSAgICAkRUNITyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKLSAgICAkRUNITyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0gICAgICAkRUNITyAiICAgJGxpYmRpciIKLSAgICBkb25lCi0gICAgJEVDSE8KLSAgICAkRUNITyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0gICAgJEVDSE8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotICAgICRFQ0hPICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotICAgICRFQ0hPICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSAgICAgICRFQ0hPICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkRUNITyAiICAgICBkdXJpbmcgbGlua2luZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotICAgICAgbGliZGlyPUxJQkRJUgotICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgorICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKwkkRUNITyAiICAgJGxpYmRpciIKKyAgICAgIGRvbmUKKyAgICAgIGVjaG8KKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCisgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorCWVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisJbGliZGlyPUxJQkRJUgorCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKIAotICAgICAgJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotICAgIGZpCi0gICAgJEVDSE8KKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCisJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCisJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisgICAgICBmaQorICAgICAgZWNobwogCi0gICAgJEVDSE8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgIHNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0gICAgICAgICRFQ0hPICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgotCSRFQ0hPICJwYWdlcy4iCi0JOzsKLSAgICAgICopCi0gICAgICAgICRFQ0hPICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCisgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKyAgICAgIGNhc2UgJGhvc3QgaW4KKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKwkgIGVjaG8gInBhZ2VzLiIKKwkgIDs7CisJKikKKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgorCSAgOzsKKyAgICAgIGVzYWMKKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgZmkKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKIH0KIAotdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CiAKIAogIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KQEAgLTE4NTIsNyArMjc3Myw3IEBACiAgICAgIyBpbnN0YWxsX3Byb2cgKGVzcGVjaWFsbHkgb24gV2luZG93cyBOVCkuCiAgICAgaWYgdGVzdCAiJG5vbm9wdCIgPSAiJFNIRUxMIiB8fCB0ZXN0ICIkbm9ub3B0IiA9IC9iaW4vc2ggfHwKICAgICAgICAjIEFsbG93IHRoZSB1c2Ugb2YgR05VIHNodG9vbCdzIGluc3RhbGwgY29tbWFuZC4KLSAgICAgICAkRUNITyAiWCRub25vcHQiIHwgJEdSRVAgc2h0b29sID4vZGV2L251bGw7IHRoZW4KKyAgICAgICBjYXNlICRub25vcHQgaW4gKnNodG9vbCopIDo7OyAqKSBmYWxzZTs7IGVzYWM7IHRoZW4KICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRub25vcHQiCiAgICAgICBpbnN0YWxsX3Byb2c9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCAiCkBAIC0xODY2LDcgKzI3ODcsMTIgQEAKICAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCiAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0gICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZworICAgIGNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KKyAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OworICAgICAgKikgaW5zdGFsbF9jcD1mYWxzZSA7OworICAgIGVzYWMKIAogICAgICMgV2UgbmVlZCB0byBhY2NlcHQgYXQgbGVhc3QgYWxsIHRoZSBCU0QgaW5zdGFsbCBmbGFncy4KICAgICBkZXN0PQpAQCAtMTg3NiwxMCArMjgwMiwxMiBAQAogICAgIGluc3RhbGxfdHlwZT0KICAgICBpc2Rpcj1ubwogICAgIHN0cmlwbWU9CisgICAgbm9fbW9kZT06CiAgICAgZm9yIGFyZwogICAgIGRvCisgICAgICBhcmcyPQogICAgICAgaWYgdGVzdCAtbiAiJGRlc3QiOyB0aGVuCi0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgogCWRlc3Q9JGFyZwogCWNvbnRpbnVlCiAgICAgICBmaQpAQCAtMTg4NywxMCArMjgxNSw5IEBACiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKICAgICAgIC1mKQotCWNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KLQkqW1xcXCAvXWNwXCAqKSA7OwotCSopIHByZXY9JGFyZyA7OwotCWVzYWMKKwlpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisJICBwcmV2PSRhcmcKKwlmaQogCTs7CiAgICAgICAtZyB8IC1tIHwgLW8pCiAJcHJldj0kYXJnCkBAIC0xOTA0LDYgKzI4MzEsMTAgQEAKICAgICAgICopCiAJIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgogCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgorCSAgaWYgdGVzdCAieCRwcmV2IiA9IHgtbSAmJiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIjsgdGhlbgorCSAgICBhcmcyPSRpbnN0YWxsX292ZXJyaWRlX21vZGUKKwkgICAgbm9fbW9kZT1mYWxzZQorCSAgZmkKIAkgIHByZXY9CiAJZWxzZQogCSAgZGVzdD0kYXJnCkBAIC0xOTE0LDcgKzI4NDUsMTEgQEAKIAogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZzIiCisgICAgICBmaQorICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICBkb25lCiAKICAgICB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIiAmJiBcCkBAIC0xOTIzLDYgKzI4NTgsMTMgQEAKICAgICB0ZXN0IC1uICIkcHJldiIgJiYgXAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldicgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgogCisgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgJiYgJG5vX21vZGU7IHRoZW4KKyAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgorCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmaQorICAgIGZpCisKICAgICBpZiB0ZXN0IC16ICIkZmlsZXMiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC16ICIkZGVzdCI7IHRoZW4KIAlmdW5jX2ZhdGFsX2hlbHAgIm5vIGZpbGUgb3IgZGVzdGluYXRpb24gc3BlY2lmaWVkIgpAQCAtMTk3NywxMCArMjkxOSwxMyBAQAogICAgICAgY2FzZSAkZmlsZSBpbgogICAgICAgKi4kbGliZXh0KQogCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCi0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCisJZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRmaWxlIgogCTs7CiAKICAgICAgICoubGEpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAogCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCkBAIC0xOTk0LDIzICsyOTM5LDIzIEBACiAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KIAkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgY3VycmVudF9saWJkaXJzICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAllbHNlCiAJICAjIE5vdGUgdGhlIGxpYmRpciBhcyBhIGZ1dHVyZSBsaWJkaXIuCiAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlmaQogCiAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCiAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLQlkaXI9IiRkaXIkb2JqZGlyIgorCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKIAogCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCi0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJGRlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGxpYmRpclwkJSUiYAorCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCiAKIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKIAkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKQEAgLTIwMjMsOSArMjk2OCw5IEBACiAKIAkgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJICAgICMgU3RpY2sgdGhlIGluc3RfcHJlZml4X2RpciBkYXRhIGludG8gdGhlIGxpbmsgY29tbWFuZC4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJS1pbnN0LXByZWZpeC1kaXIgJGluc3RfcHJlZml4X2RpciUiYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJS1pbnN0LXByZWZpeC1kaXIgJGluc3RfcHJlZml4X2RpciUiYAogCSAgZWxzZQotCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQGluc3RfcHJlZml4X2RpckAlJSJgCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlJSJgCiAJICBmaQogCiAJICBmdW5jX3dhcm5pbmcgInJlbGlua2luZyBcYCRmaWxlJyIKQEAgLTIwNDMsNyArMjk4OCw3IEBACiAJICB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiICYmIHNyY25hbWU9IiRyZWFsbmFtZSJUCiAKIAkgICMgSW5zdGFsbCB0aGUgc2hhcmVkIGxpYnJhcnkgYW5kIGJ1aWxkIHRoZSBzeW1saW5rcy4KLQkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCisJICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIFwKIAkgICAgICAnZXhpdCAkPycKIAkgIHRzdHJpcG1lPSIkc3RyaXBtZSIKIAkgIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTIwODMsNyArMzAyOCw3IEBACiAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKIAogCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgogCTs7CiAKICAgICAgICoubG8pCkBAIC0yMTgzLDcgKzMxMjgsNyBAQAogCSAgICBpZiB0ZXN0IC1mICIkbGliIjsgdGhlbgogCSAgICAgIGZ1bmNfc291cmNlICIkbGliIgogCSAgICBmaQotCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKwkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICIkbGliIiB8ICRTRUQgJ3MlXi4qLyUlZydgICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAogCSAgICBpZiB0ZXN0IC1uICIkbGliZGlyIiAmJiB0ZXN0ICEgLWYgIiRsaWJmaWxlIjsgdGhlbgogCSAgICAgIGZ1bmNfd2FybmluZyAiXGAkbGliJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIFxgJGxpYmRpciciCiAJICAgICAgZmluYWxpemU9bm8KQEAgLTIyMDIsNyArMzE0Nyw3IEBACiAJCWZpbGU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKIAkgICAgICAgIG91dHB1dG5hbWU9IiR0bXBkaXIvJGZpbGUiCiAJICAgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JICAgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAorCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZydgCiAKIAkgICAgICAgICRvcHRfc2lsZW50IHx8IHsKIAkgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkcmVsaW5rX2NvbW1hbmQiCkBAIC0yMjIxLDcgKzMxNjYsNyBAQAogCSAgICB9CiAJICBlbHNlCiAJICAgICMgSW5zdGFsbCB0aGUgYmluYXJ5IHRoYXQgd2UgY29tcGlsZWQgZWFybGllci4KLQkgICAgZmlsZT1gJEVDSE8gIlgkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCisJICAgIGZpbGU9YCRFQ0hPICIkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFNFRCAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKIAkgIGZpCiAJZmkKIApAQCAtMjI1NywxMSArMzIwMiwxMyBAQAogCiAgICAgICAjIFNldCB1cCB0aGUgcmFubGliIHBhcmFtZXRlcnMuCiAgICAgICBvbGRsaWI9IiRkZXN0ZGlyLyRuYW1lIgorICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvbGRsaWIiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICB0b29sX29sZGxpYj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nIFwkZmlsZSBcJG9sZGxpYiIgJ2V4aXQgJD8nCiAKICAgICAgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkb2xkX3N0cmlwbGliIjsgdGhlbgotCWZ1bmNfc2hvd19ldmFsICIkb2xkX3N0cmlwbGliICRvbGRsaWIiICdleGl0ICQ/JworCWZ1bmNfc2hvd19ldmFsICIkb2xkX3N0cmlwbGliICR0b29sX29sZGxpYiIgJ2V4aXQgJD8nCiAgICAgICBmaQogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCkBAIC0yMjgwLDcgKzMyMjcsNyBAQAogICAgIGZpCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KIAogCiAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcApAQCAtMjMyMyw2ICszMjcwLDIyIEBACiBleHRlcm4gXCJDXCIgewogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpIHx8IChfX0dOVUNfXyA+IDQpKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCisjZW5kaWYKKworLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2VsaWYgZGVmaW5lZChfX29zZl9fKQorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisjZW5kaWYKKwogLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKICIKIApAQCAtMjMzMiwxMCArMzI5NSwxMSBAQAogCSAgJG9wdF9kcnlfcnVuIHx8IGVjaG8gJzogQFBST0dSQU1AICcgPiAiJG5saXN0IgogCiAJICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCi0JICBwcm9nZmlsZXM9YCRFQ0hPICJYJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAkgIGZvciBwcm9nZmlsZSBpbiAkcHJvZ2ZpbGVzOyBkbwotCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHByb2dmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCisJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCiAJICBkb25lCiAKIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCkBAIC0yMzcxLDcgKzMzMzUsNyBAQAogCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCiAJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKIAkgICAgICBjYXNlICRob3N0IGluCi0JICAgICAgICAqY3lnd2luIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCiAJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKIAkgICAgICAgICAgOzsKQEAgLTIzODQsMTAgKzMzNDgsNTIgQEAKIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCiAJICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JICAkb3B0X2RyeV9ydW4gfHwgewotCSAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0JICB9CisgICAgICAgICAgY2FzZSAkaG9zdCBpbgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCisJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgorCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCisJICAgICAgICAgICMgVXNlIHN1YnNoZWxsLCB0byBhdm9pZCBjbG9iYmVyaW5nIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzCisJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgorCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgorCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICAgICAgICAgIGVsc2UKKwkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCisJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgorCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorCSAgICAgICAgICBmaQorCSAgICAgICAgZmkKKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCisJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZWxzZQorCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBmaQorCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8CisJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKKwkgICAgICAgIH0KKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICAgICAgfQorCSAgICAgIGZpCisJICAgIDs7CisJICAgICopCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgICAgfQorCSAgICA7OworICAgICAgICAgIGVzYWMKIAlkb25lCiAKIAkkb3B0X2RyeV9ydW4gfHwgewpAQCAtMjQxNSwzNiArMzQyMSwxOSBAQAogCSAgaWYgdGVzdCAtZiAiJG5saXN0IlM7IHRoZW4KIAkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY2RlY2wiJyA8ICIkbmxpc3QiUyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyInCiAJICBlbHNlCi0JICAgICRFQ0hPICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgICAgZWNobyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCiAJICBmaQogCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKwkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgdm9pZCAqYWRkcmVzczsKIH0gbHRfZGxzeW1saXN0OwotIgotCSAgY2FzZSAkaG9zdCBpbgotCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0JICAgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZQotICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0JICAqb3NmNSopCi0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhICovIgotCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLQkgICopCi0JICAgIGx0X2Rsc3ltX2NvbnN0PWNvbnN0IDs7Ci0JICBlc2FjCi0KLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotZXh0ZXJuICRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKLSRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KIHtcCiAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgpAQCAtMjQ1Nyw3ICszNDQ2LDcgQEAKIAkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgPCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgICAgOzsKIAkgIGVzYWMKLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKICAgezAsICh2b2lkICopIDB9CiB9OwogCkBAIC0yNDg0LDcgKzM0NzMsNyBAQAogCSAgIyBsaW5rZWQgYmVmb3JlIGFueSBvdGhlciBQSUMgb2JqZWN0LiAgQnV0IHdlIG11c3Qgbm90IHVzZQogCSAgIyBwaWNfZmxhZyB3aGVuIGxpbmtpbmcgd2l0aCAtc3RhdGljLiAgVGhlIHByb2JsZW0gZXhpc3RzIGluCiAJICAjIEZyZWVCU0QgMi4yLjYgYW5kIGlzIGZpeGVkIGluIEZyZWVCU0QgMy4xLgotCSAgKi0qLWZyZWVic2QyKnwqLSotZnJlZWJzZDMuMCp8Ki0qLWZyZWVic2RlbGYzLjAqKQorCSAgKi0qLWZyZWVic2QyLip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKIAkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIC1ERlJFRUJTRF9XT1JLQVJPVU5EIiA7OwogCSAgKi0qLWhwdXgqKQogCSAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciICA7OwpAQCAtMjUwMCw3ICszNDg5LDcgQEAKIAlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KIAkgIGNhc2UgJGFyZyBpbgogCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7Ci0JICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OworCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7CiAJICBlc2FjCiAJZG9uZQogCkBAIC0yNTE1LDE2ICszNTA0LDE2IEBACiAJY2FzZSAkaG9zdCBpbgogCSpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmIjsgdGhlbgotCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCi0JICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCiAJICBlbHNlCi0JICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAotCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAogCSAgZmkKIAkgIDs7CiAJKikKLQkgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAotCSAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAogCSAgOzsKIAllc2FjCiAJOzsKQEAgLTI1MzgsOCArMzUyNyw4IEBACiAgICAgICAjIHJlYWxseSB3YXMgcmVxdWlyZWQuCiAKICAgICAgICMgTnVsbGlmeSB0aGUgc3ltYm9sIGZpbGUuCi0gICAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAotICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJSBAU1lNRklMRUAlJSJgCisgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyUgQFNZTUZJTEVAJSUiYAogICAgIGZpCiB9CiAKQEAgLTI1NDksNiArMzUzOCw3IEBACiAjIE5lZWQgYSBsb3Qgb2YgZ29vIHRvIGhhbmRsZSAqYm90aCogRExMcyBhbmQgaW1wb3J0IGxpYnMKICMgSGFzIHRvIGJlIGEgc2hlbGwgZnVuY3Rpb24gaW4gb3JkZXIgdG8gJ2VhdCcgdGhlIGFyZ3VtZW50CiAjIHRoYXQgaXMgc3VwcGxpZWQgd2hlbiAkZmlsZV9tYWdpY19jb21tYW5kIGlzIGNhbGxlZC4KKyMgRGVzcGl0ZSB0aGUgbmFtZSwgYWxzbyBkZWFsIHdpdGggNjQgYml0IGJpbmFyaWVzLgogZnVuY193aW4zMl9saWJpZCAoKQogewogICAkb3B0X2RlYnVnCkBAIC0yNTU5LDkgKzM1NDksMTEgQEAKICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCiAgICAgOzsKICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgogICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLSAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycgPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSAkMSB8CisgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8CiAJJFNFRCAtbiAtZSAnCiAJICAgIDEsMTAwewogCQkvIEkgL3sKQEAgLTI1OTAsNiArMzU4MiwxMzEgQEAKICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgogfQogCisjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKKyMKKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAorfQorCisjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcworIworIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCisjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCisjIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeSBMSUJOQU1FLgorIworIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKKyMgb24gdGhlIHBsYXRmb3JtIGFuZCBjb21waWxlciB0aGF0IGNyZWF0ZWQgdGhlIGltcGxpYi4KKyMKKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCisjIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeS4KK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCit7CisgICRvcHRfZGVidWcKKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8CisgICAgJFNFRCAnL15Db250ZW50cyBvZiBzZWN0aW9uICciJG1hdGNoX2xpdGVyYWwiJzoveworICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgorICAgICAgcy8uKi89PT09TUFSSz09PT0vCisgICAgICBwCisgICAgICBkCisgICAgfQorICAgICMgVGhlc2UgbGluZXMgY2FuIHNvbWV0aW1lcyBiZSBsb25nZXIgdGhhbiA0MyBjaGFyYWN0ZXJzLCBidXQKKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZworICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAorICAgIC9eSW4gYXJjaGl2ZSBbXjpdKjovZAorICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCisgICAgL149PT09TUFSSz09PT0vcAorICAgICMgUmVtb3ZlIGFsbCBsaW5lcyB3aXRoIGxlc3MgdGhhbiA0MyBjaGFyYWN0ZXJzCisgICAgL14uXHs0M1x9LyFkCisgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKKyAgICBzL14uXHs0M1x9Ly8nIHwKKyAgICAkU0VEIC1uICcKKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKKyAgICAgIC9ePT09PU1BUks9PT09LyBiIHBhcmEKKyAgICAgIEgKKyAgICAgICQgYiBwYXJhCisgICAgICBiCisgICAgICA6cGFyYQorICAgICAgeAorICAgICAgcy9cbi8vZworICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgorICAgICAgcy9ePT09PU1BUks9PT09Ly8KKyAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIGRvdHMgYW5kIHdoaXRlc3BhY2UKKyAgICAgIHMvW1wuIFx0XSokLy8KKyAgICAgICMgUHJpbnQKKyAgICAgIC8uL3AnIHwKKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQorICAgICMgYXJjaGl2ZSB3aGljaCBwb3NzZXNzIHRoYXQgc2VjdGlvbi4gSGV1cmlzdGljOiBlbGltaW5hdGUKKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCisgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCisgICAgIyBjaGFyYWN0ZXIuKSBUaGlzIHNob3VsZCB3b3JrIGZvciBhbGwgYXJjaGl2ZXMgd2l0aCBsZXNzIHRoYW4KKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQorICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKKyAgICAjIGEgJy4nLgorICAgICMKKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgorICAgICRTRUQgLWUgJy9eXC4vZDsvXi5cLi9kO3EnCit9CisKKyMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgorfQorCisjIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCisgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcCIKK30KKworIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgQVJHCisjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorIyBpbXBvcnQgbGlicmFyeSBBUkcuCisjCisjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCisjIGRvZXMgbm90IHN1cHBvcnQgdGhlIC0taWRlbnRpZnktc3RyaWN0IG9wdGlvbi4KKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCisgICAgIyBiaW51dGlscyBpbXBvcnQgbGlicmFyeQorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCisgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCisgICAgIyBtcy1nZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAorICBlbHNlCisgICAgIyB1bmtub3duCisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKKyAgZmkKK30KIAogCiAjIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlIGRpciBvbGRsaWIKQEAgLTI1OTgsNyArMzcxNSwxOCBAQAogICAgICRvcHRfZGVidWcKICAgICBmX2V4X2FuX2FyX2Rpcj0iJDEiOyBzaGlmdAogICAgIGZfZXhfYW5fYXJfb2xkbGliPSIkMSIKLSAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiAnZXhpdCAkPycKKyAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICAgbG9ja2ZpbGU9JGZfZXhfYW5fYXJfb2xkbGliLmxvY2sKKyAgICAgIHVudGlsICRvcHRfZHJ5X3J1biB8fCBsbiAiJHByb2dwYXRoIiAiJGxvY2tmaWxlIiAyPi9kZXYvbnVsbDsgZG8KKwlmdW5jX2VjaG8gIldhaXRpbmcgZm9yICRsb2NrZmlsZSB0byBiZSByZW1vdmVkIgorCXNsZWVwIDIKKyAgICAgIGRvbmUKKyAgICBmaQorICAgIGZ1bmNfc2hvd19ldmFsICIoY2QgXCRmX2V4X2FuX2FyX2RpciAmJiAkQVIgeCBcIlwkZl9leF9hbl9hcl9vbGRsaWJcIikiIFwKKwkJICAgJ3N0YXQ9JD87IHJtIC1mICIkbG9ja2ZpbGUiOyBleGl0ICRzdGF0JworICAgIGlmIHRlc3QgIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iID0geWVzOyB0aGVuCisgICAgICAkb3B0X2RyeV9ydW4gfHwgcm0gLWYgIiRsb2NrZmlsZSIKKyAgICBmaQogICAgIGlmICgkQVIgdCAiJGZfZXhfYW5fYXJfb2xkbGliIiB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCiAgICAgIDoKICAgICBlbHNlCkBAIC0yNjY5LDcgKzM3OTcsNyBAQAogCSAgICBkYXJ3aW5fZmlsZT0KIAkgICAgZGFyd2luX2ZpbGVzPQogCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKKwkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCiAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKIAkgICAgJFJNIC1yZiB1bmZhdC0kJApAQCAtMjY4NCwyNSArMzgxMiwzMCBAQAogICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKIAk7OwogICAgICAgZXNhYwotICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogICAgIGRvbmUKIAogICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgogfQogCiAKLQotIyBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSBbYXJnPW5vXQorIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQogIwotIyBFbWl0IHRoZSBmaXJzdCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAotIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KLWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICgpCisjIEVtaXQgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KKyMgRG9uJ3QgZGlyZWN0bHkgb3BlbiBhIGZpbGUgYmVjYXVzZSB3ZSBtYXkgd2FudCB0bworIyBpbmNvcnBvcmF0ZSB0aGUgc2NyaXB0IGNvbnRlbnRzIHdpdGhpbiBhIGN5Z3dpbi9taW5ndworIyB3cmFwcGVyIGV4ZWN1dGFibGUuICBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluCisjIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB2YXJpYWJsZXMKKyMgc2V0IHRoZXJlaW4uCisjCisjIEFSRyBpcyB0aGUgdmFsdWUgdGhhdCB0aGUgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVIKKyMgdmFyaWFibGUgd2lsbCB0YWtlLiAgSWYgJ3llcycsIHRoZW4gdGhlIGVtaXR0ZWQgc2NyaXB0CisjIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBzdG9yZWQgaXMKKyMgdGhlICRvYmpkaXIgZGlyZWN0b3J5LiAgVGhpcyBpcyBhIGN5Z3dpbi9taW5ndy1zcGVjaWZpYworIyBiZWhhdmlvci4KK2Z1bmNfZW1pdF93cmFwcGVyICgpCiB7Ci0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDFfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9JDEKLQlmaQorCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9JHsxLW5vfQogCiAJJEVDSE8gIlwKICMhICRTSEVMTApAQCAtMjcxOCw3ICszODUxLDYgQEAKIAogIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwogIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLVhzZWQ9JyR7U0VEfSAtZSAxcy9eWC8vJwogc2VkX3F1b3RlX3N1YnN0PSckc2VkX3F1b3RlX3N1YnN0JwogCiAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCkBAIC0yNzQ5LDMxICszODgxLDEzNSBAQAogZWxzZQogICAjIFdoZW4gd2UgYXJlIHNvdXJjZWQgaW4gZXhlY3V0ZSBtb2RlLCBcJGZpbGUgYW5kIFwkRUNITyBhcmUgYWxyZWFkeSBzZXQuCiAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KLSAgICBFQ0hPPVwiJHFlY2hvXCIKLSAgICBmaWxlPVwiXCQwXCIKLSAgICAjIE1ha2Ugc3VyZSBlY2hvIHdvcmtzLgotICAgIGlmIHRlc3QgXCJYXCQxXCIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgICAgICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICAgICAgc2hpZnQKLSAgICBlbGlmIHRlc3QgXCJYXGB7IFwkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsXGBcIiA9ICdYXHQnOyB0aGVuCi0gICAgICAjIFlpcHBlZSwgXCRFQ0hPIHdvcmtzIQotICAgICAgOgotICAgIGVsc2UKLSAgICAgICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgXCRFQ0hPIHdpbGwgd29yay4KLSAgICAgIGV4ZWMgJFNIRUxMIFwiXCQwXCIgLS1uby1yZWV4ZWMgXCR7MStcIlwkQFwifQotICAgIGZpCi0gIGZpXAorICAgIGZpbGU9XCJcJDBcIiIKKworICAgIHFFQ0hPPWAkRUNITyAiJEVDSE8iIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgJEVDSE8gIlwKKworIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCitcJDEKK19MVEVDSE9fRU9GJworfQorICAgIEVDSE89XCIkcUVDSE9cIgorICBmaQorCisjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bworIyB0aGUgbGlidG9vbCB3cmFwcGVyLCAoYikgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB3cmFwcGVyCisjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCisjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgorIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB3aGljaCBtYXRjaAorIyB0aGlzIHBhdHRlcm4pLgorIworIyBUaGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIG9wdGlvbnM6IC0tbHQtZGVidWcgYW5kCisjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KKyMKKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgcGFyc2luZyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlCisjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgorbHRfb3B0aW9uX2RlYnVnPQorZnVuY19wYXJzZV9sdF9vcHRpb25zICgpCit7CisgIGx0X3NjcmlwdF9hcmcwPVwkMAorICBzaGlmdAorICBmb3IgbHRfb3B0CisgIGRvCisgICAgY2FzZSBcIlwkbHRfb3B0XCIgaW4KKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OworICAgIC0tbHQtZHVtcC1zY3JpcHQpCisgICAgICAgIGx0X2R1bXBfRD1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJS9bXi9dKiQlJSdcYAorICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCisgICAgICAgIGNhdCBcIlwkbHRfZHVtcF9EL1wkbHRfZHVtcF9GXCIKKyAgICAgICAgZXhpdCAwCisgICAgICA7OworICAgIC0tbHQtKikKKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKKyAgICAgICAgZXhpdCAxCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICBlY2hvIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlwiIDE+JjIKKyAgZmkKK30KKworIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0CisjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKK2Z1bmNfbHRfZHVtcF9hcmdzICgpCit7CisgIGx0X2R1bXBfYXJnc19OPTE7CisgIGZvciBsdF9hcmcKKyAgZG8KKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCisgICAgbHRfZHVtcF9hcmdzX049XGBleHByIFwkbHRfZHVtcF9hcmdzX04gKyAxXGAKKyAgZG9uZQorfQorCisjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCitmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCit7CiAiCi0JJEVDSE8gIlwKKyAgY2FzZSAkaG9zdCBpbgorICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKyAgICAkRUNITyAiXAorICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisgICAgICBmaQorICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisgICAgOzsKKworICAqKQorICAgICRFQ0hPICJcCisgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgorICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKyAgICAgIGZpCisgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKyAgICA7OworICBlc2FjCisgICRFQ0hPICJcCisgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisgICAgICBleGl0IDEKK30KKworIyBBIGZ1bmN0aW9uIHRvIGVuY2Fwc3VsYXRlIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAorIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KK2Z1bmNfZXhlY19wcm9ncmFtICgpCit7CisgIGNhc2UgXCIgXCQqIFwiIGluCisgICpcXCAtLWx0LSopCisgICAgZm9yIGx0X3dyX2FyZworICAgIGRvCisgICAgICBjYXNlIFwkbHRfd3JfYXJnIGluCisgICAgICAtLWx0LSopIDs7CisgICAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworICAgICAgZXNhYworICAgICAgc2hpZnQKKyAgICBkb25lIDs7CisgIGVzYWMKKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9Cit9CisKKyAgIyBQYXJzZSBvcHRpb25zCisgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KIAogICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgotICB0aGlzZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKiQlJSdcYAorICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAogICB0ZXN0IFwieFwkdGhpc2RpclwiID0gXCJ4XCRmaWxlXCIgJiYgdGhpc2Rpcj0uCiAKICAgIyBGb2xsb3cgc3ltYm9saWMgbGlua3MgdW50aWwgd2UgZ2V0IHRvIHRoZSByZWFsIHRoaXNkaXIuCi0gIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAorICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAkU0VEIC1uICdzLy4qLT4gLy9wJ1xgCiAgIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KLSAgICBkZXN0ZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKlwkJSUnXGAKKyAgICBkZXN0ZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKlwkJSUnXGAKIAogICAgICMgSWYgdGhlcmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KICAgICBpZiB0ZXN0IFwieFwkZGVzdGRpclwiICE9IFwieFwkZmlsZVwiOyB0aGVuCkBAIC0yNzgzLDMwICs0MDE5LDEzIEBACiAgICAgICBlc2FjCiAgICAgZmkKIAotICAgIGZpbGU9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlXi4qLyUlJ1xgCi0gICAgZmlsZT1cYGxzIC1sZCBcIlwkdGhpc2Rpci9cJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAorICAgIGZpbGU9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlXi4qLyUlJ1xgCisgICAgZmlsZT1cYGxzIC1sZCBcIlwkdGhpc2Rpci9cJGZpbGVcIiB8ICRTRUQgLW4gJ3MvLiotPiAvL3AnXGAKICAgZG9uZQotIgotfQotIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxCi0KLSMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgW2FyZz1ub10KLSMKLSMgRW1pdCB0aGUgc2Vjb25kIHBhcnQgb2YgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgZGVzY3JpcHRpb24gYXNzb2NpYXRlZCB3aXRoCi0jIGZ1bmNfZW1pdF93cmFwcGVyKCksIGJlbG93LgotZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgKCkKLXsKLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxPW5vCi0JaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotCSAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT0kMQotCWZpCi0KLQkkRUNITyAiXAogCiAgICMgVXN1YWxseSAnbm8nLCBleGNlcHQgb24gY3lnd2luL21pbmd3IHdoZW4gZW1iZWRkZWQgaW50bwogICAjIHRoZSBjd3JhcHBlci4KLSAgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVI9JGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzEKKyAgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVI9JGZ1bmNfZW1pdF93cmFwcGVyX2FyZzEKICAgaWYgdGVzdCBcIlwkV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVJcIiA9IFwieWVzXCI7IHRoZW4KICAgICAjIHNwZWNpYWwgY2FzZSBmb3IgJy4nCiAgICAgaWYgdGVzdCBcIlwkdGhpc2RpclwiID0gXCIuXCI7IHRoZW4KQEAgLTI4MTQsNyArNDAzMyw3IEBACiAgICAgZmkKICAgICAjIHJlbW92ZSAubGlicyBmcm9tIHRoaXNkaXIKICAgICBjYXNlIFwiXCR0aGlzZGlyXCIgaW4KLSAgICAqW1xcXFwvXSRvYmpkaXIgKSB0aGlzZGlyPVxgXCRFQ0hPIFwiWFwkdGhpc2RpclwiIHwgXCRYc2VkIC1lICdzJVtcXFxcL11bXlxcXFwvXSokJSUnXGAgOzsKKyAgICAqW1xcXFwvXSRvYmpkaXIgKSB0aGlzZGlyPVxgXCRFQ0hPIFwiXCR0aGlzZGlyXCIgfCAkU0VEICdzJVtcXFxcL11bXlxcXFwvXSokJSUnXGAgOzsKICAgICAkb2JqZGlyICkgICB0aGlzZGlyPS4gOzsKICAgICBlc2FjCiAgIGZpCkBAIC0yODY5LDYgKzQwODgsMTggQEAKIAogICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgogCisJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKwkjCisJIyBGaXggdGhlIERMTCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uICBEbyB0aGlzIGJlZm9yZSBwcmVwZW5kaW5nCisJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCisJaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCisJICAkRUNITyAiXAorICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICisgICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKKyIKKwlmaQorCiAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCiAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgogCSAgJEVDSE8gIlwKQEAgLTI4NzcsMjU0ICs0MTA4LDI5IEBACiAKICAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKICAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAotICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCisgICAgJHNobGlicGF0aF92YXI9XGBcJEVDSE8gXCJcJCRzaGxpYnBhdGhfdmFyXCIgfCAkU0VEICdzLzo6KlwkLy8nXGAKIAogICAgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgogIgogCWZpCiAKLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotCSAgJEVDSE8gIlwKLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0iCi0JZmkKLQogCSRFQ0hPICJcCiAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgogICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KLSIKLQljYXNlICRob3N0IGluCi0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0JKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgICRFQ0hPICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKLQkgIDs7Ci0KLQkqKQotCSAgJEVDSE8gIlwKLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotIgotCSAgOzsKLQllc2FjCi0JJEVDSE8gIlwKLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKLSAgICAgIGV4aXQgMQorICAgICAgZnVuY19leGVjX3Byb2dyYW0gXCR7MStcIlwkQFwifQogICAgIGZpCiAgIGVsc2UKICAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCiAgICAgXCRFQ0hPIFwiXCQwOiBlcnJvcjogXFxcYFwkcHJvZ2Rpci9cJHByb2dyYW0nIGRvZXMgbm90IGV4aXN0XCIgMT4mMgogICAgIFwkRUNITyBcIlRoaXMgc2NyaXB0IGlzIGp1c3QgYSB3cmFwcGVyIGZvciBcJHByb2dyYW0uXCIgMT4mMgotICAgICRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKKyAgICBcJEVDSE8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgogICAgIGV4aXQgMQogICBmaQogZmlcCiAiCiB9Ci0jIGVuZDogZnVuY19lbWl0X3dyYXBwZXJfcGFydDIKIAogCi0jIGZ1bmNfZW1pdF93cmFwcGVyIFthcmc9bm9dCi0jCi0jIEVtaXQgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KLSMgRG9uJ3QgZGlyZWN0bHkgb3BlbiBhIGZpbGUgYmVjYXVzZSB3ZSBtYXkgd2FudCB0bwotIyBpbmNvcnBvcmF0ZSB0aGUgc2NyaXB0IGNvbnRlbnRzIHdpdGhpbiBhIGN5Z3dpbi9taW5ndwotIyB3cmFwcGVyIGV4ZWN1dGFibGUuICBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluCi0jIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB2YXJpYWJsZXMKLSMgc2V0IHRoZXJlaW4uCi0jCi0jIEFSRyBpcyB0aGUgdmFsdWUgdGhhdCB0aGUgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVIKLSMgdmFyaWFibGUgd2lsbCB0YWtlLiAgSWYgJ3llcycsIHRoZW4gdGhlIGVtaXR0ZWQgc2NyaXB0Ci0jIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBzdG9yZWQgaXMKLSMgdGhlICRvYmpkaXIgZGlyZWN0b3J5LiAgVGhpcyBpcyBhIGN5Z3dpbi9taW5ndy1zcGVjaWZpYwotIyBiZWhhdmlvci4KLWZ1bmNfZW1pdF93cmFwcGVyICgpCi17Ci0JZnVuY19lbWl0X3dyYXBwZXJfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9JDEKLQlmaQotCi0JIyBzcGxpdCB0aGlzIHVwIHNvIHRoYXQgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwotCSMgY2FuIGNhbGwgZWFjaCBwYXJ0IGluZGVwZW5kZW50bHkuCi0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgIiR7ZnVuY19lbWl0X3dyYXBwZXJfYXJnMX0iCi0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgIiR7ZnVuY19lbWl0X3dyYXBwZXJfYXJnMX0iCi19Ci0KLQotIyBmdW5jX3RvX2hvc3RfcGF0aCBhcmcKLSMKLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLSMgSW50ZW5kZWQgZm9yIHVzZSB3aXRoICJuYXRpdmUiIG1pbmd3ICh3aGVyZSBsaWJ0b29sIGl0c2VsZgotIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KLSMgYnVpbGQgZW52aXJvbm1lbnRzOgotIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCi0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5Ci0jIGNvbnZlcnRzIHBhdGhzIGZvciBhbnkgbm9uLW1zeXMgYXBwbGljYXRpb25zIGl0IGxhdW5jaGVzLAotIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgotIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAotIyAkYnVpbGQgY3lnd2luLiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm8gaGFybSBmb3Igb3RoZXIKLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgotIwotIyBBUkcgaXMgdGhlIHBhdGggKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotZnVuY190b19ob3N0X3BhdGggKCkKLXsKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICptaW5ndyogKQotICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotICAgICAgICAgICAgbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcz0icy9bIF0qXCQvLyIKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YCggY21kIC8vYyBlY2hvICIkMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKmN5Z3dpbiogKQotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gY3lncGF0aCAtdyAiJDEiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKLSAgICAgICAgICAgICMgc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGNvbW1hbmQgaXMgbm90Ci0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAotICAgICAgICAgICAgIyBlcnJvciBjb2RlIG9mIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zCi0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfdG9faG9zdF9wYXRoX3RtcDF9IjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiIKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0gICAgICAgICAgZnVuY19lcnJvciAiICAnJDEnIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotICAgICAgICAgICMgRmFsbGJhY2s6Ci0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSAgICAgICAgZmkKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi19Ci0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKLQotIyBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgYXJnCi0jCi0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotIyBTZWUgZnVuY190b19ob3N0X3BhdGgoKSwgYWJvdmUuIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlCi0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgotIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0jCi0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCi0jICRob3N0IGZvcm1hdC4gSWYgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvcgotIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCi0jIG9uIG91dHB1dC4KLSMKLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0jIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0LgotZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCi17Ci0gIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiQxIgotICBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0gICAgY2FzZSAkaG9zdCBpbgotICAgICAgKm1pbmd3KiApCi0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCi0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLSAgICAgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9IiQxIgotICAgICAgICAjIE9uY2Ugc2V0IGZvciB0aGlzIGNhbGwsIHRoaXMgdmFyaWFibGUgc2hvdWxkIG5vdCBiZQotICAgICAgICAjIHJlYXNzaWduZWQuIEl0IGlzIHVzZWQgaW4gdGhhIGZhbGxiYWNrIGNhc2UuCi0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxPWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCi0gICAgICAgICAgJFNFRCAtZSAnc3xeOip8fCcgLWUgJ3N8OiokfHwnYAotICAgICAgICBjYXNlICRidWlsZCBpbgotICAgICAgICAgICptaW5ndyogKSAjIEFjdHVhbGx5LCBtc3lzLgotICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgotICAgICAgICAgICAgbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcz0icy9bIF0qXCQvLyIKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPWAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcyIgKSAyPi9kZXYvbnVsbCB8fCBlY2hvICIiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICpjeWd3aW4qICkKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICogKQotICAgICAgICAgICAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aGxpc3RzCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKLSAgICAgICAgICAgIElGUz06Ci0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0gICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIgOyB0aGVuCi0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSAgICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgSUZTPToKLSAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoKHMpIGNvcnJlc3BvbmRpbmcgdG8iCi0gICAgICAgICAgZnVuY19lcnJvciAiICAnJDEnIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQotICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KLSAgICAgICAgICAjIGJlbG93LCBidXQgZm9yIHRoZSB1c2VyIHRvIHByb3ZpZGUgYSB3b3JraW5nIHdpbmUgaW5zdGFsbGF0aW9uCi0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCi0gICAgICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3M9InN8Onw7fGciCi0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAotICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKLSAgICAgICAgZmkKLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKLSAgICAgICAgY2FzZSAiJDEiIGluCi0gICAgICAgICAgOiogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSI7JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIGNhc2UgIiQxIiBpbgotICAgICAgICAgICo6ICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ7IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICA7OwotICAgIGVzYWMKLSAgZmkKLX0KLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aGxpc3QKLQogIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCiAjIGVtaXQgdGhlIHNvdXJjZSBjb2RlIGZvciBhIHdyYXBwZXIgZXhlY3V0YWJsZSBvbiBzdGRvdXQKICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCkBAIC0zMTQxLDMxICs0MTQ3LDIzIEBACiAKICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KICAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KLQotICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKLSAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KICovCiBFT0YKIAkgICAgY2F0IDw8IkVPRiIKKyNpZmRlZiBfTVNDX1ZFUgorIyBkZWZpbmUgX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIDEKKyNlbmRpZgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaWZkZWYgX01TQ19WRVIKICMgaW5jbHVkZSA8ZGlyZWN0Lmg+CiAjIGluY2x1ZGUgPHByb2Nlc3MuaD4KICMgaW5jbHVkZSA8aW8uaD4KLSMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKICNlbHNlCiAjIGluY2x1ZGUgPHVuaXN0ZC5oPgogIyBpbmNsdWRlIDxzdGRpbnQuaD4KICMgaWZkZWYgX19DWUdXSU5fXwogIyAgaW5jbHVkZSA8aW8uaD4KLSMgIGRlZmluZSBIQVZFX1NFVEVOVgotIyAgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCi1jaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOwotaW50IHB1dGVudiAoY2hhciAqKTsKLWludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZgogI2luY2x1ZGUgPG1hbGxvYy5oPgpAQCAtMzE3Nyw2ICs0MTc1LDQ0IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCisvKiBkZWNsYXJhdGlvbnMgb2Ygbm9uLUFOU0kgZnVuY3Rpb25zICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCitpbnQgX3B1dGVudiAoY29uc3QgY2hhciAqKTsKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKKyMgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCitjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOworaW50IHB1dGVudiAoY2hhciAqKTsKK2ludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworIyBlbmRpZgorLyogI2VsaWYgZGVmaW5lZCAob3RoZXIgcGxhdGZvcm1zKSAuLi4gKi8KKyNlbmRpZgorCisvKiBwb3J0YWJpbGl0eSBkZWZpbmVzLCBleGNsdWRpbmcgcGF0aCBoYW5kbGluZyBtYWNyb3MgKi8KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQorIyBkZWZpbmUgc3RhdCAgICBfc3RhdAorIyBkZWZpbmUgY2htb2QgICBfY2htb2QKKyMgZGVmaW5lIGdldGN3ZCAgX2dldGN3ZAorIyBkZWZpbmUgcHV0ZW52ICBfcHV0ZW52CisjIGRlZmluZSBTX0lYVVNSIF9TX0lFWEVDCisjIGlmbmRlZiBfSU5UUFRSX1RfREVGSU5FRAorIyAgZGVmaW5lIF9JTlRQVFJfVF9ERUZJTkVECisjICBkZWZpbmUgaW50cHRyX3QgaW50CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQorIyBkZWZpbmUgc3RhdCAgICBfc3RhdAorIyBkZWZpbmUgY2htb2QgICBfY2htb2QKKyMgZGVmaW5lIGdldGN3ZCAgX2dldGN3ZAorIyBkZWZpbmUgcHV0ZW52ICBfcHV0ZW52CisjZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjIGRlZmluZSBIQVZFX1NFVEVOVgorIyBkZWZpbmUgRk9QRU5fV0IgIndiIgorLyogI2VsaWYgZGVmaW5lZCAob3RoZXIgcGxhdGZvcm1zKSAuLi4gKi8KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChQQVRIX01BWCkKICMgZGVmaW5lIExUX1BBVEhNQVggUEFUSF9NQVgKICNlbGlmIGRlZmluZWQoTUFYUEFUSExFTikKQEAgLTMxOTIsMTQgKzQyMjgsNyBAQAogIyBkZWZpbmUgU19JWEdSUCAwCiAjZW5kaWYKIAotI2lmZGVmIF9NU0NfVkVSCi0jIGRlZmluZSBTX0lYVVNSIF9TX0lFWEVDCi0jIGRlZmluZSBzdGF0IF9zdGF0Ci0jIGlmbmRlZiBfSU5UUFRSX1RfREVGSU5FRAotIyAgZGVmaW5lIGludHB0cl90IGludAotIyBlbmRpZgotI2VuZGlmCi0KKy8qIHBhdGggaGFuZGxpbmcgcG9ydGFiaWxpdHkgbWFjcm9zICovCiAjaWZuZGVmIERJUl9TRVBBUkFUT1IKICMgZGVmaW5lIERJUl9TRVBBUkFUT1IgJy8nCiAjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKQEAgLTMyMzAsMTAgKzQyNTksNiBAQAogIyBkZWZpbmUgSVNfUEFUSF9TRVBBUkFUT1IoY2gpICgoY2gpID09IFBBVEhfU0VQQVJBVE9SXzIpCiAjZW5kaWYgLyogUEFUSF9TRVBBUkFUT1JfMiAqLwogCi0jaWZkZWYgX19DWUdXSU5fXwotIyBkZWZpbmUgRk9QRU5fV0IgIndiIgotI2VuZGlmCi0KICNpZm5kZWYgRk9QRU5fV0IKICMgZGVmaW5lIEZPUEVOX1dCICJ3IgogI2VuZGlmCkBAIC0zMjQ2LDIyICs0MjcxLDEzIEBACiAgIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCiB9IHdoaWxlICgwKQogCi0jdW5kZWYgTFRXUkFQUEVSX0RFQlVHUFJJTlRGCi0jaWYgZGVmaW5lZCBERUJVR1dSQVBQRVIKLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncwotc3RhdGljIHZvaWQKLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotICAgIHZhX2VuZCAoYXJncyk7Ci19CisjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCitzdGF0aWMgaW50IGx0X2RlYnVnID0gMTsKICNlbHNlCi0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAwOwogI2VuZGlmCiAKLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7Citjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCiAKIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOwogY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKQEAgLTMyNzEsNDEgKzQyODcsMjcgQEAKIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwogaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwogY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Ci12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwordm9pZCBsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOworc3RhdGljIGNvbnN0IGNoYXIgKm5vbmVtcHR5IChjb25zdCBjaGFyICpzKTsKIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOwotdm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChjb25zdCBjaGFyICphcmcpOwotdm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoY29uc3QgY2hhciAqYXJnKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoY29uc3QgY2hhciAqYXJnKTsKLWludCBsdF9zcGxpdF9uYW1lX3ZhbHVlIChjb25zdCBjaGFyICphcmcsIGNoYXIqKiBuYW1lLCBjaGFyKiogdmFsdWUpOwogdm9pZCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKIHZvaWQgbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci0KLXN0YXRpYyBjb25zdCBjaGFyICpzY3JpcHRfdGV4dF9wYXJ0MSA9CitjaGFyICoqcHJlcGFyZV9zcGF3biAoY2hhciAqKmFyZ3YpOwordm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7CiBFT0YKIAotCSAgICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSB5ZXMgfAotCSAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCi0JICAgICAgICAgICAgIC1lICdzL14vICAiLycgLWUgJ3MvJC9cXG4iLycKLQkgICAgZWNobyAiOyIKIAkgICAgY2F0IDw8RU9GCi0KLXN0YXRpYyBjb25zdCBjaGFyICpzY3JpcHRfdGV4dF9wYXJ0MiA9Ci1FT0YKLQkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgeWVzIHwKLQkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAotCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCi0JICAgIGVjaG8gIjsiCi0KLQkgICAgY2F0IDw8RU9GCi1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwordm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKIGNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQVJOQU1FID0gIiRzaGxpYnBhdGhfdmFyIjsKIEVPRgogCiAJICAgIGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgogCSAgICAgIGNhdCA8PEVPRgotY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CiBFT0YKIAkgICAgZWxzZQogCSAgICAgIGNhdCA8PCJFT0YiCkBAIC0zMzE0LDEwICs0MzE2LDEwIEBACiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGRsbHNlYXJjaHBhdGg6IgogCSAgICAgIGNhdCA8PEVPRgogY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Ci1jb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Citjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKIEVPRgogCSAgICBlbHNlCiAJICAgICAgY2F0IDw8IkVPRiIKQEAgLTMzNDAsMjQgKzQzNDIsMTAgQEAKIAkgICAgY2F0IDw8IkVPRiIKIAogI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAgICAgICAgICItLWx0LSIKLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1CiAKLXN0YXRpYyBjb25zdCBzaXplX3Qgb3B0X3ByZWZpeF9sZW4gICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSDsKIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOwotCiBzdGF0aWMgY29uc3QgY2hhciAqZHVtcHNjcmlwdF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZHVtcC1zY3JpcHQiOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9zZXRfb3B0X2xlbiAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyA3Owotc3RhdGljIGNvbnN0IGNoYXIgKmVudl9zZXRfb3B0ICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1zZXQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCB2YWx1ZSBvZiBmb28gaXMgc2V0IHRvIGJhciAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9wcmVwZW5kX29wdF9sZW4gPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMTsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfcHJlcGVuZF9vcHQgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtcHJlcGVuZCI7Ci0gIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIG5ldyB2YWx1ZSBvZiBmb28gaXMgYmFyJHtmb299ICovCi0KLXN0YXRpYyBjb25zdCBzaXplX3QgZW52X2FwcGVuZF9vcHRfbGVuICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDEwOwotc3RhdGljIGNvbnN0IGNoYXIgKmVudl9hcHBlbmRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1hcHBlbmQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzICR7Zm9vfWJhciAqLworc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKIAogaW50CiBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQpAQCAtMzM3NCwxMCArNDM2MiwxMyBAQAogICBpbnQgaTsKIAogICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwogCi0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCisgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0CisgICAqIGFsc28sIGNvcHkgYWxsIG5vbiBjd3JhcHBlciBvcHRpb25zIHRvIG5ld2FyZ3osIGV4Y2VwdAorICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5CisgICAqLworICBuZXdhcmdjPTA7CiAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCiAgICAgewogICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpID09IDApCkBAIC0zMzkxLDI1ICs0MzgyLDU3IEBACiAJICAgICAgZXNhYwogCiAJICAgIGNhdCA8PCJFT0YiCi0JICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQxKTsKLQkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDIpOworCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7CiAJICByZXR1cm4gMDsKIAl9CisgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCisJeworICAgICAgICAgIGx0X2RlYnVnID0gMTsKKyAgICAgICAgICBjb250aW51ZTsKKwl9CisgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCisgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKyAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCisgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorICAgICAgICAgICAqLworICAgICAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCisgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKyAgICAgICAgfQorICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLworICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CiAgICAgfQorICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwogCi0gIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKK0VPRgorCSAgICBjYXQgPDxFT0YKKyAgLyogVGhlIEdOVSBiYW5uZXIgbXVzdCBiZSB0aGUgZmlyc3Qgbm9uLWVycm9yIGRlYnVnIG1lc3NhZ2UgKi8KKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOworRU9GCisJICAgIGNhdCA8PCJFT0YiCisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7CisKICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQotICAgIGx0X2ZhdGFsICgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0JCQkgIHRtcF9wYXRoc3BlYykpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJjb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKwkJICB0bXBfcGF0aHNwZWMpOwogCiAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CiAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwogCi0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKICAgc3RyZW5kemFwIChhY3R1YWxfY3dyYXBwZXJfcGF0aCwgYWN0dWFsX2N3cmFwcGVyX25hbWUpOwogCiAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCkBAIC0zNDI3LDggKzQ0NTAsOSBAQAogICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKICAgdG1wX3BhdGhzcGVjID0gMDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotCQkJICB0YXJnZXRfbmFtZSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCisJCSAgdGFyZ2V0X25hbWUpOwogRU9GCiAKIAkgICAgY2F0IDw8RU9GCkBAIC0zNDc4LDgwICs0NTAyLDE5IEBACiAKICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCiAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KLSAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CisgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCisgICAgIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCAqX1ZBUk5BTUVzIGFyZSBQQVRIIGJ1dCB1bmluc3RhbGxlZAorICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLwogICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CiAKLSAgbmV3YXJnYz0wOwotICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotICAgIHsKLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfc2V0X29wdCwgZW52X3NldF9vcHRfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnPScpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X3NldF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAocCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfc2V0X29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3NldF9vcHQpOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3ByZXBlbmRfb3B0LCBlbnZfcHJlcGVuZF9vcHRfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9wcmVwZW5kX29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAocCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfcHJlcGVuZF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfcHJlcGVuZF9vcHQpOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X2FwcGVuZF9vcHQsIGVudl9hcHBlbmRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9hcHBlbmRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X2FwcGVuZF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9hcHBlbmRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBvcHRfcHJlZml4X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCi0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0gICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgotICAgICAgICAgICAqLwotICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAotICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7Ci0gICAgICAgIH0KLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLSAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwotICAgIH0KLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLQotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCisJCSAgbm9ubnVsbCAobHRfYXJndl96ZXJvKSk7CiAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCiAgICAgewotICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsIGksIChuZXdhcmd6W2ldID8gbmV3YXJneltpXSA6ICI8TlVMTD4iKSkpOworICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCisJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKICAgICB9CiAKIEVPRgpAQCAtMzU2MCwxMSArNDUyMywxNCBAQAogCSAgICAgIG1pbmd3KikKIAkJY2F0IDw8IkVPRiIKICAgLyogZXhlY3YgZG9lc24ndCBhY3R1YWxseSB3b3JrIG9uIG1pbmd3IGFzIGV4cGVjdGVkIG9uIHVuaXggKi8KKyAgbmV3YXJneiA9IHByZXBhcmVfc3Bhd24gKG5ld2FyZ3opOwogICBydmFsID0gX3NwYXdudiAoX1BfV0FJVCwgbHRfYXJndl96ZXJvLCAoY29uc3QgY2hhciAqIGNvbnN0ICopIG5ld2FyZ3opOwogICBpZiAocnZhbCA9PSAtMSkKICAgICB7CiAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLwotICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKKwkJICAgICAgbHRfYXJndl96ZXJvLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAgICAgICByZXR1cm4gMTI3OwogICAgIH0KICAgcmV0dXJuIHJ2YWw7CkBAIC0zNTg2LDcgKzQ1NTIsNyBAQAogewogICB2b2lkICpwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOwogICBpZiAoIXApCi0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7CisgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgIm1lbW9yeSBleGhhdXN0ZWQiKTsKIAogICByZXR1cm4gcDsKIH0KQEAgLTM2MjAsOCArNDU4Niw4IEBACiB7CiAgIHN0cnVjdCBzdGF0IHN0OwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCi0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CiAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQogICAgIHJldHVybiAwOwogCkBAIC0zNjM4LDggKzQ2MDQsOCBAQAogICBpbnQgcnZhbCA9IDA7CiAgIHN0cnVjdCBzdGF0IHN0OwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFrZV9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCiAgICAgcmV0dXJuIDA7CiAKQEAgLTM2NjUsOCArNDYzMSw4IEBACiAgIGludCB0bXBfbGVuOwogICBjaGFyICpjb25jYXRfbmFtZTsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihmaW5kX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7CiAKICAgaWYgKCh3cmFwcGVyID09IE5VTEwpIHx8ICgqd3JhcHBlciA9PSAnXDAnKSkKICAgICByZXR1cm4gTlVMTDsKQEAgLTM3MTksNyArNDY4NSw4IEBACiAJCXsKIAkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLwogCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworCQkgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOwogCQkgIGNvbmNhdF9uYW1lID0KIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwpAQCAtMzc0NCw3ICs0NzExLDggQEAKICAgICB9CiAgIC8qIFJlbGF0aXZlIHBhdGggfCBub3QgZm91bmQgaW4gcGF0aDogcHJlcGVuZCBjd2QgKi8KICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKICAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKQEAgLTM3NzAsOCArNDczOCw5IEBACiAgIGludCBoYXNfc3ltbGlua3MgPSAwOwogICB3aGlsZSAoc3RybGVuICh0bXBfcGF0aHNwZWMpICYmICFoYXNfc3ltbGlua3MpCiAgICAgewotICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0JCQkgICAgICB0bXBfcGF0aHNwZWMpKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorCQkgICAgICB0bXBfcGF0aHNwZWMpOwogICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQogCXsKIAkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCkBAIC0zNzkzLDggKzQ3NjIsOSBAQAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOwotCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOworCSAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogCX0KICAgICB9CiAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwpAQCAtMzgwNyw3ICs0Nzc3LDggQEAKICAgdG1wX3BhdGhzcGVjID0gcmVhbHBhdGggKHBhdGhzcGVjLCBidWYpOwogICBpZiAodG1wX3BhdGhzcGVjID09IDApCiAgICAgewotICAgICAgbHRfZmF0YWwgKCJDb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKICAgICB9CiAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOwogI2VuZGlmCkBAIC0zODMzLDExICs0ODA0LDI1IEBACiAgIHJldHVybiBzdHI7CiB9CiAKK3ZvaWQKK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaWYgKGx0X2RlYnVnKQorICAgIHsKKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworICAgICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7CisgICAgICB2YV9lbmQgKGFyZ3MpOworICAgIH0KK30KKwogc3RhdGljIHZvaWQKLWx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCiAJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCiB7Ci0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICVzOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUsIG1vZGUpOwogICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CiAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwogCkBAIC0zODQ2LDIwICs0ODMxLDMyIEBACiB9CiAKIHZvaWQKLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCitsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKIHsKICAgdmFfbGlzdCBhcDsKICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwogICB2YV9lbmQgKGFwKTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKgorbm9ubnVsbCAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK25vbmVtcHR5IChjb25zdCBjaGFyICpzKQoreworICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOworfQorCiB2b2lkCiBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCisgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKICAgewogI2lmZGVmIEhBVkVfU0VURU5WCiAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KQEAgLTM5MDQsOTUgKzQ5MDEsMTIgQEAKICAgcmV0dXJuIG5ld192YWx1ZTsKIH0KIAotaW50Ci1sdF9zcGxpdF9uYW1lX3ZhbHVlIChjb25zdCBjaGFyICphcmcsIGNoYXIqKiBuYW1lLCBjaGFyKiogdmFsdWUpCi17Ci0gIGNvbnN0IGNoYXIgKnA7Ci0gIGludCBsZW47Ci0gIGlmICghYXJnIHx8ICEqYXJnKQotICAgIHJldHVybiAxOwotCi0gIHAgPSBzdHJjaHIgKGFyZywgKGludCknPScpOwotCi0gIGlmICghcCkKLSAgICByZXR1cm4gMTsKLQotICAqdmFsdWUgPSB4c3RyZHVwICgrK3ApOwotCi0gIGxlbiA9IHN0cmxlbiAoYXJnKSAtIHN0cmxlbiAoKnZhbHVlKTsKLSAgKm5hbWUgPSBYTUFMTE9DIChjaGFyLCBsZW4pOwotICBzdHJuY3B5ICgqbmFtZSwgYXJnLCBsZW4tMSk7Ci0gICgqbmFtZSlbbGVuIC0gMV0gPSAnXDAnOwotCi0gIHJldHVybiAwOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChjb25zdCBjaGFyICphcmcpCi17Ci0gIGNoYXIgKm5hbWUgPSBOVUxMOwotICBjaGFyICp2YWx1ZSA9IE5VTEw7Ci0KLSAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKLSAgICB7Ci0gICAgICBYRlJFRSAobmFtZSk7Ci0gICAgICBYRlJFRSAodmFsdWUpOwotICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3NldF9vcHQsIGFyZyk7Ci0gICAgfQotCi0gIGx0X3NldGVudiAobmFtZSwgdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpCi17Ci0gIGNoYXIgKm5hbWUgPSBOVUxMOwotICBjaGFyICp2YWx1ZSA9IE5VTEw7Ci0gIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7Ci0KLSAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKLSAgICB7Ci0gICAgICBYRlJFRSAobmFtZSk7Ci0gICAgICBYRlJFRSAodmFsdWUpOwotICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3ByZXBlbmRfb3B0LCBhcmcpOwotICAgIH0KLQotICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMCk7Ci0gIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuYW1lKTsKLSAgWEZSRUUgKHZhbHVlKTsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9hcHBlbmRfb3B0LCBhcmcpOwotICAgIH0KLQotICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMSk7Ci0gIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuYW1lKTsKLSAgWEZSRUUgKHZhbHVlKTsKLX0KLQogdm9pZAogbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKIAogICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCiAgICAgewpAQCAtNDAxMSw5ICs0OTI1LDkgQEAKIHZvaWQKIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAKICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgIHsKQEAgLTQwMjMsMTEgKzQ5MzcsMTU4IEBACiAgICAgfQogfQogCitFT0YKKwkgICAgY2FzZSAkaG9zdF9vcyBpbgorCSAgICAgIG1pbmd3KikKKwkJY2F0IDw8IkVPRiIKIAorLyogUHJlcGFyZXMgYW4gYXJndW1lbnQgdmVjdG9yIGJlZm9yZSBjYWxsaW5nIHNwYXduKCkuCisgICBOb3RlIHRoYXQgc3Bhd24oKSBkb2VzIG5vdCBieSBpdHNlbGYgY2FsbCB0aGUgY29tbWFuZCBpbnRlcnByZXRlcgorICAgICAoZ2V0ZW52ICgiQ09NU1BFQyIpICE9IE5VTEwgPyBnZXRlbnYgKCJDT01TUEVDIikgOgorICAgICAgKHsgT1NWRVJTSU9OSU5GTyB2OyB2LmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2YoT1NWRVJTSU9OSU5GTyk7CisgICAgICAgICBHZXRWZXJzaW9uRXgoJnYpOworICAgICAgICAgdi5kd1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UOworICAgICAgfSkgPyAiY21kLmV4ZSIgOiAiY29tbWFuZC5jb20iKS4KKyAgIEluc3RlYWQgaXQgc2ltcGx5IGNvbmNhdGVuYXRlcyB0aGUgYXJndW1lbnRzLCBzZXBhcmF0ZWQgYnkgJyAnLCBhbmQgY2FsbHMKKyAgIENyZWF0ZVByb2Nlc3MoKS4gIFdlIG11c3QgcXVvdGUgdGhlIGFyZ3VtZW50cyBzaW5jZSBXaW4zMiBDcmVhdGVQcm9jZXNzKCkKKyAgIGludGVycHJldHMgY2hhcmFjdGVycyBsaWtlICcgJywgJ1x0JywgJ1xcJywgJyInIChidXQgbm90ICc8JyBhbmQgJz4nKSBpbiBhCisgICBzcGVjaWFsIHdheToKKyAgIC0gU3BhY2UgYW5kIHRhYiBhcmUgaW50ZXJwcmV0ZWQgYXMgZGVsaW1pdGVycy4gVGhleSBhcmUgbm90IHRyZWF0ZWQgYXMKKyAgICAgZGVsaW1pdGVycyBpZiB0aGV5IGFyZSBzdXJyb3VuZGVkIGJ5IGRvdWJsZSBxdW90ZXM6ICIuLi4iLgorICAgLSBVbmVzY2FwZWQgZG91YmxlIHF1b3RlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBpbnB1dC4gVGhlaXIgb25seSBlZmZlY3QgaXMKKyAgICAgdGhhdCB3aXRoaW4gZG91YmxlIHF1b3Rlcywgc3BhY2UgYW5kIHRhYiBhcmUgdHJlYXRlZCBsaWtlIG5vcm1hbAorICAgICBjaGFyYWN0ZXJzLgorICAgLSBCYWNrc2xhc2hlcyBub3QgZm9sbG93ZWQgYnkgZG91YmxlIHF1b3RlcyBhcmUgbm90IHNwZWNpYWwuCisgICAtIEJ1dCAyKm4rMSBiYWNrc2xhc2hlcyBmb2xsb3dlZCBieSBhIGRvdWJsZSBxdW90ZSBiZWNvbWUKKyAgICAgbiBiYWNrc2xhc2hlcyBmb2xsb3dlZCBieSBhIGRvdWJsZSBxdW90ZSAobiA+PSAwKToKKyAgICAgICBcIiAtPiAiCisgICAgICAgXFxcIiAtPiBcIgorICAgICAgIFxcXFxcIiAtPiBcXCIKKyAqLworI2RlZmluZSBTSEVMTF9TUEVDSUFMX0NIQVJTICJcIlxcIFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzciCisjZGVmaW5lIFNIRUxMX1NQQUNFX0NIQVJTICIgXDAwMVwwMDJcMDAzXDAwNFwwMDVcMDA2XDAwN1wwMTBcMDExXDAxMlwwMTNcMDE0XDAxNVwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcMDI1XDAyNlwwMjdcMDMwXDAzMVwwMzJcMDMzXDAzNFwwMzVcMDM2XDAzNyIKK2NoYXIgKioKK3ByZXBhcmVfc3Bhd24gKGNoYXIgKiphcmd2KQoreworICBzaXplX3QgYXJnYzsKKyAgY2hhciAqKm5ld19hcmd2OworICBzaXplX3QgaTsKKworICAvKiBDb3VudCBudW1iZXIgb2YgYXJndW1lbnRzLiAgKi8KKyAgZm9yIChhcmdjID0gMDsgYXJndlthcmdjXSAhPSBOVUxMOyBhcmdjKyspCisgICAgOworCisgIC8qIEFsbG9jYXRlIG5ldyBhcmd1bWVudCB2ZWN0b3IuICAqLworICBuZXdfYXJndiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworCisgIC8qIFB1dCBxdW90ZWQgYXJndW1lbnRzIGludG8gdGhlIG5ldyBhcmd1bWVudCB2ZWN0b3IuICAqLworICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKnN0cmluZyA9IGFyZ3ZbaV07CisKKyAgICAgIGlmIChzdHJpbmdbMF0gPT0gJ1wwJykKKwluZXdfYXJndltpXSA9IHhzdHJkdXAgKCJcIlwiIik7CisgICAgICBlbHNlIGlmIChzdHJwYnJrIChzdHJpbmcsIFNIRUxMX1NQRUNJQUxfQ0hBUlMpICE9IE5VTEwpCisJeworCSAgaW50IHF1b3RlX2Fyb3VuZCA9IChzdHJwYnJrIChzdHJpbmcsIFNIRUxMX1NQQUNFX0NIQVJTKSAhPSBOVUxMKTsKKwkgIHNpemVfdCBsZW5ndGg7CisJICB1bnNpZ25lZCBpbnQgYmFja3NsYXNoZXM7CisJICBjb25zdCBjaGFyICpzOworCSAgY2hhciAqcXVvdGVkX3N0cmluZzsKKwkgIGNoYXIgKnA7CisKKwkgIGxlbmd0aCA9IDA7CisJICBiYWNrc2xhc2hlcyA9IDA7CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICBsZW5ndGgrKzsKKwkgIGZvciAocyA9IHN0cmluZzsgKnMgIT0gJ1wwJzsgcysrKQorCSAgICB7CisJICAgICAgY2hhciBjID0gKnM7CisJICAgICAgaWYgKGMgPT0gJyInKQorCQlsZW5ndGggKz0gYmFja3NsYXNoZXMgKyAxOworCSAgICAgIGxlbmd0aCsrOworCSAgICAgIGlmIChjID09ICdcXCcpCisJCWJhY2tzbGFzaGVzKys7CisJICAgICAgZWxzZQorCQliYWNrc2xhc2hlcyA9IDA7CisJICAgIH0KKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgIGxlbmd0aCArPSBiYWNrc2xhc2hlcyArIDE7CisKKwkgIHF1b3RlZF9zdHJpbmcgPSBYTUFMTE9DIChjaGFyLCBsZW5ndGggKyAxKTsKKworCSAgcCA9IHF1b3RlZF9zdHJpbmc7CisJICBiYWNrc2xhc2hlcyA9IDA7CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICAqcCsrID0gJyInOworCSAgZm9yIChzID0gc3RyaW5nOyAqcyAhPSAnXDAnOyBzKyspCisJICAgIHsKKwkgICAgICBjaGFyIGMgPSAqczsKKwkgICAgICBpZiAoYyA9PSAnIicpCisJCXsKKwkJICB1bnNpZ25lZCBpbnQgajsKKwkJICBmb3IgKGogPSBiYWNrc2xhc2hlcyArIDE7IGogPiAwOyBqLS0pCisJCSAgICAqcCsrID0gJ1xcJzsKKwkJfQorCSAgICAgICpwKysgPSBjOworCSAgICAgIGlmIChjID09ICdcXCcpCisJCWJhY2tzbGFzaGVzKys7CisJICAgICAgZWxzZQorCQliYWNrc2xhc2hlcyA9IDA7CisJICAgIH0KKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgIHsKKwkgICAgICB1bnNpZ25lZCBpbnQgajsKKwkgICAgICBmb3IgKGogPSBiYWNrc2xhc2hlczsgaiA+IDA7IGotLSkKKwkJKnArKyA9ICdcXCc7CisJICAgICAgKnArKyA9ICciJzsKKwkgICAgfQorCSAgKnAgPSAnXDAnOworCisJICBuZXdfYXJndltpXSA9IHF1b3RlZF9zdHJpbmc7CisJfQorICAgICAgZWxzZQorCW5ld19hcmd2W2ldID0gKGNoYXIgKikgc3RyaW5nOworICAgIH0KKyAgbmV3X2FyZ3ZbYXJnY10gPSBOVUxMOworCisgIHJldHVybiBuZXdfYXJndjsKK30KK0VPRgorCQk7OworCSAgICBlc2FjCisKKyAgICAgICAgICAgIGNhdCA8PCJFT0YiCit2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFKiBmKQoreworRU9GCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyIHllcyB8CisJICAgICAgJFNFRCAtbiAtZSAnCitzL15cKC5cezc5XH1cKVwoLi4qXCkvXDFcCitcMi8KK2gKK3MvXChbXFwiXVwpL1xcXDEvZworcy8kL1xcbi8KK3MvXChbXlxuXSpcKS4qLyAgZnB1dHMgKCJcMSIsIGYpOy9wCitnCitEJworICAgICAgICAgICAgY2F0IDw8IkVPRiIKK30KIEVPRgogfQogIyBlbmQ6IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKIAorIyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCBBUkcKKyMgVHJ1ZSBpZiBBUkcgaXMgYW4gaW1wb3J0IGxpYiwgYXMgaW5kaWNhdGVkIGJ5ICRmaWxlX21hZ2ljX2NtZAorZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICppbXBvcnQqKSA6IDs7CisgICAgKikgZmFsc2UgOzsKKyAgICBlc2FjCit9CisKICMgZnVuY19tb2RlX2xpbmsgYXJnLi4uCiBmdW5jX21vZGVfbGluayAoKQogewpAQCAtNDA3Miw2ICs1MTMzLDcgQEAKICAgICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0KIAogICAgIGF2b2lkX3ZlcnNpb249bm8KKyAgICBiaW5kaXI9CiAgICAgZGxmaWxlcz0KICAgICBkbHByZWZpbGVzPQogICAgIGRsc2VsZj1ubwpAQCAtNDE2NCw2ICs1MjI2LDExIEBACiAJZXNhYwogCiAJY2FzZSAkcHJldiBpbgorCWJpbmRpcikKKwkgIGJpbmRpcj0iJGFyZyIKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKIAlkbGZpbGVzfGRscHJlZmlsZXMpCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgpAQCAtNDE5NSw5ICs1MjYyLDkgQEAKIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgogCSAgICBlbHNlCi0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKIAkgICAgZmkKIAkgICAgcHJldj0KIAkgICAgY29udGludWUKQEAgLTQyMjEsNyArNTI4OCw3IEBACiAJICAgICotKi1kYXJ3aW4qKQogCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7Ci0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKIAkJICAgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKQEAgLTQyNDAsNyArNTMwNyw3IEBACiAJICAgIG1vcmVhcmdzPQogCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCiAJICAgIGRvCi0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgogCSAgICAgIGFyZz0kZmlsCiAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKQEAgLTQyNjksNyArNTMzNiw3IEBACiAKIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICAgIHByZXY9CiAJCSAgICAgIGNvbnRpbnVlCiAJCSAgICBlbHNlCkBAIC00MjgxLDcgKzUzNDgsNyBAQAogCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICBwcmV2PQogCQkgIGZpCiAKQEAgLTQzNTEsMTIgKzU0MTgsMTIgQEAKIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCiAJICAgIGNhc2UgIiRycGF0aCAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwogCSAgICBlc2FjCiAJICBlbHNlCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZmkKIAkgIHByZXY9CkBAIC00MzY4LDI4ICs1NDM1LDI4IEBACiAJICBjb250aW51ZQogCSAgOzsKIAl3ZWFrKQotCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjY2xpbmtlcikKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4Y29tcGlsZXIpCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgpAQCAtNDQyNSw2ICs1NDkyLDExIEBACiAJY29udGludWUKIAk7OwogCisgICAgICAtYmluZGlyKQorCXByZXY9YmluZGlyCisJY29udGludWUKKwk7OworCiAgICAgICAtZGxvcGVuKQogCXByZXY9ZGxmaWxlcwogCWNvbnRpbnVlCkBAIC00NDc1LDE1ICs1NTQ3LDE2IEBACiAJOzsKIAogICAgICAgLUwqKQotCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgogCSAgZWxzZQogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKIAkgIGZpCiAJZmkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKQEAgLTQ0OTUsMjQgKzU1NjgsMzAgQEAKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiRkZXBsaWJzICIgaW4KLQkqIiAtTCRkaXIgIiopIDs7CisJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKKwkgIDs7CiAJKikKLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworCSAgY2FzZSAkZGlyIGluCisJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKwkgIGVzYWMKKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCiAJICA7OwogCWVzYWMKIAljYXNlICRob3N0IGluCiAJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgIHRlc3RiaW5kaXI9YCRFQ0hPICJYJGRpciIgfCAkWHNlZCAtZSAncyovbGliJCovYmluKidgCisJICB0ZXN0YmluZGlyPWAkRUNITyAiJGRpciIgfCAkU0VEICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKIAkgIGVzYWMKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTQ1MjIsNyArNTYwMSw3IEBACiAgICAgICAtbCopCiAJaWYgdGVzdCAiWCRhcmciID0gIlgtbGMiIHx8IHRlc3QgIlgkYXJnIiA9ICJYLWxtIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBvciBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CkBAIC00NTM2LDcgKzU2MTUsNyBAQAogCSAgICA7OwogCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCkBAIC00NTU2LDcgKzU2MzUsNyBAQAogCSAgIDs7CiAJIGVzYWMKIAlmaQotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCiAJY29udGludWUKIAk7OwogCkBAIC00NTY4LDIxICs1NjQ3LDIyIEBACiAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCiAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCiAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgotICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAlwcmV2PXhjb21waWxlcgogCWNvbnRpbnVlCiAJOzsKIAotICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlIFwKKyAgICAgIHwtdGhyZWFkc3wtZm9wZW5tcHwtb3Blbm1wfC1tcHwteG9wZW5tcHwtb21wfC1xc21wPSopCisJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKKwkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGFyZyIgOzsKIAllc2FjCiAJY29udGludWUKIAk7OwpAQCAtNDY0OSwxMyArNTcyOSwxNyBAQAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKwk9KikKKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGRpciIKKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgIDs7CiAJKikKIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgogCSAgOzsKIAllc2FjCiAJY2FzZSAiJHhycGF0aCAiIGluCiAJKiIgJGRpciAiKikgOzsKLQkqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CkBAIC00NzA4LDggKzU3OTIsOCBAQAogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgpAQCAtNDcyNCw5ICs1ODA4LDkgQEAKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKIAlJRlM9IiRzYXZlX2lmcyIKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCkBAIC00NzU0LDIzICs1ODM4LDI3IEBACiAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJOzsKIAotICAgICAgIyAtNjQsIC1taXBzWzAtOV0gZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCi0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCi0gICAgICAjICtEQSosICtERCogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBIUCBjb21waWxlcgotICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCisgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CisgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAtclswLTldWzAtOV0qICAgICAgICBzcGVjaWZ5IHByb2Nlc3NvciBmb3IgdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKKyAgICAgICMgLXEqICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQworICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKyAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCisgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcworICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCiAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKikKKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAorICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgogCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIDs7CiAKQEAgLTQ3ODIsNyArNTg3MCw3IEBACiAKICAgICAgICouJG9iamV4dCkKIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgotCW9ianM9IiRvYmpzICRhcmciCisJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCiAJOzsKIAogICAgICAgKi5sbykKQEAgLTQ4MTMsNyArNTkwMSw3IEBACiAKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKIAkJcHJldj0KIAkJY29udGludWUKIAkgICAgICBlbHNlCkBAIC00ODI1LDcgKzU5MTMsNyBAQAogCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKIAkgICAgICBwcmV2PQogCSAgICBmaQogCkBAIC00ODcwLDI0ICs1OTU4LDI1IEBACiAKICAgICAgICouJGxpYmV4dCkKIAkjIEFuIGFyY2hpdmUuCi0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgKi5sYSkKIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCiAKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KIAllbHNlCi0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJZmkKIAljb250aW51ZQogCTs7CkBAIC00OTI1LDcgKzYwMTQsNyBAQAogCiAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCi0gICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRTRUQgXCdzLzovIC9nXCdcYAogICAgIGVsc2UKICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQogICAgIGZpCkBAIC00OTM0LDYgKzYwMjMsOCBAQAogCiAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgogICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCiAKQEAgLTQ5NTQsMTIgKzYwNDUsMTIgQEAKICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJY2FzZSAiJGxpYnMgIiBpbgotCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCisgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKICAgICBkb25lCiAKICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCkBAIC00OTcyLDkgKzYwNjMsOSBAQAogICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7CisJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OwogCSAgZXNhYwotCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgogCWRvbmUKICAgICAgIGZpCiAgICAgICBwcmVfcG9zdF9kZXBzPQpAQCAtNTAzMyw3ICs2MTI0LDEwIEBACiAJY2FzZSAkcGFzcyBpbgogCWRsb3BlbikgbGlicz0iJGRsZmlsZXMiIDs7CiAJZGxwcmVvcGVuKSBsaWJzPSIkZGxwcmVmaWxlcyIgOzsKLQlsaW5rKSBsaWJzPSIkZGVwbGlicyAlREVQTElCUyUgJGRlcGVuZGVuY3lfbGlicyIgOzsKKwlsaW5rKQorCSAgbGlicz0iJGRlcGxpYnMgJURFUExJQlMlIgorCSAgdGVzdCAiWCRsaW5rX2FsbF9kZXBsaWJzIiAhPSBYbm8gJiYgbGlicz0iJGxpYnMgJGRlcGVuZGVuY3lfbGlicyIKKwkgIDs7CiAJZXNhYwogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGRscHJlb3BlbiI7IHRoZW4KQEAgLTUwNDEsMTcgKzYxMzUsMTkgQEAKIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwogCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicwogCSAgZGVwZW5kZW5jeV9saWJzPQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCiAJICBjYXNlICRsaWIgaW4KLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CiAJICBlc2FjCiAKIAkgICMgQ29sbGVjdCBwcmVvcGVuZWQgbGlidG9vbCBkZXBsaWJzLCBleGNlcHQgYW55IHRoaXMgbGlicmFyeQogCSAgIyBoYXMgZGVjbGFyZWQgYXMgd2VhayBsaWJzCiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gICAgICAgICAgICBkZXBsaWJfYmFzZT1gJEVDSE8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorCSAgICBmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorICAgICAgICAgICAgZGVwbGliX2Jhc2U9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OwotCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWRvbmUKQEAgLTUwNjcsMTYgKzYxNjMsMTcgQEAKIAlsaWI9CiAJZm91bmQ9bm8KIAljYXNlICRkZXBsaWIgaW4KLQktbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQorCS1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmUgXAorICAgICAgICB8LXRocmVhZHN8LWZvcGVubXB8LW9wZW5tcHwtbXB8LXhvcGVubXB8LW9tcHwtcXNtcD0qKQogCSAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCiAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQotCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGRlcGxpYiIKIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKIAkJZXNhYwogCSAgICBmaQogCSAgZmkKQEAgLTUxNjEsNyArNjI1OCw3IEBACiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgZmkKIAkgIGZpCkBAIC01MTc0LDcgKzYyNzEsOCBAQAogCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCiAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICBwcm9nKQogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCkBAIC01MTg4LDcgKzYyODYsOCBAQAogCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGZpCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgICAgOzsKIAkgICopCiAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKQEAgLTUxOTksMTcgKzYyOTgsMjEgQEAKIAktUiopCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCi0JICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSAgICAjIE1ha2Ugc3VyZSB0aGUgeHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgogCSAgICBjYXNlICIkeHJwYXRoICIgaW4KIAkgICAgKiIgJGRpciAiKikgOzsKLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CiAJICAgIGVzYWMKIAkgIGZpCiAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgY29udGludWUKIAkgIDs7Ci0JKi5sYSkgbGliPSIkZGVwbGliIiA7OworCSoubGEpCisJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisJICA7OwogCSouJGxpYmV4dCkKIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKQEAgLTUyMjcsNyArNjMzMCw3IEBACiAJCW1hdGNoX3BhdHRlcm4qKQogCQkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2Q7IHNoaWZ0CiAJCSAgbWF0Y2hfcGF0dGVybl9yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMSBcKC4qXCkiYAotCQkgIGlmIGV2YWwgIlwkRUNITyBcIlgkZGVwbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIFwKKwkJICBpZiBldmFsICJcJEVDSE8gXCIkZGVwbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgXAogCQkgICAgfCAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgogCQkgICAgdmFsaWRfYV9saWI9eWVzCiAJCSAgZmkKQEAgLTUyMzcsMTUgKzYzNDAsMTUgQEAKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgICAgaWYgdGVzdCAiJHZhbGlkX2FfbGliIiAhPSB5ZXM7IHRoZW4KLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IFRyeWluZyB0byBsaW5rIHdpdGggc3RhdGljIGxpYiBhcmNoaXZlICRkZXBsaWIuIgotCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRFQ0hPICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKLQkJJEVDSE8gIioqKiB0aGF0IGl0IGlzIGp1c3QgYSBzdGF0aWMgYXJjaGl2ZSB0aGF0IEkgc2hvdWxkIG5vdCB1c2UgaGVyZS4iCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgdGhlIGZpbGUgZXh0ZW5zaW9ucyAuJGxpYmV4dCBvZiB0aGlzIGFyZ3VtZW50IG1ha2VzIG1lIGJlbGlldmUiCisJCWVjaG8gIioqKiB0aGF0IGl0IGlzIGp1c3QgYSBzdGF0aWMgYXJjaGl2ZSB0aGF0IEkgc2hvdWxkIG5vdCB1c2UgaGVyZS4iCiAJICAgICAgZWxzZQotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSIKIAkJJEVDSE8gIioqKiBzdGF0aWMgbGlicmFyeSAkZGVwbGliIGlzIG5vdCBwb3J0YWJsZSEiCiAJCWRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCkBAIC01MjcyLDExICs2Mzc1LDExIEBACiAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbiB8fCB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCiAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCiAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCi0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBlbHNlCi0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGRlcGxpYiIKIAkgICAgZmkKIAkgIGZpCiAJICBjb250aW51ZQpAQCAtNTMxOCwyMCArNjQyMSwyMCBAQAogCiAJIyBDb252ZXJ0ICItZnJhbWV3b3JrIGZvbyIgdG8gImZvby5sdGZyYW1ld29yayIKIAlpZiB0ZXN0IC1uICIkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyI7IHRoZW4KLQkgIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiWCRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzLy1mcmFtZXdvcmsgXChbXiAkXSpcKS9cMS5sdGZyYW1ld29yay9nJ2AKKwkgIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCiAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCiAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCSAgICAgICoiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnICIqKSA7OwotCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQotCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlggJGRlcGVuZGVuY3lfbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICIgJGRlcGVuZGVuY3lfbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CiAJICAgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iIHx8CiAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCi0JICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkZGxwcmVvcGVuIgorCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCisJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKIAlmaQogCiAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtNTM0MiwzMCArNjQ0NSwzNiBAQAogCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgogCSAgICBmaQogCSAgICAjIEl0IGlzIGEgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5LCBzbyBhZGQgaW4gaXRzIG9iamVjdHMuCi0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgICBmdW5jX2FwcGVuZCBjb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgICB0bXBfbGlicz0KKwkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKwkJY2FzZSAiJHRtcF9saWJzICIgaW4KKwkJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworCQllc2FjCisJICAgICAgZmkKKwkgICAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCisJICAgIGRvbmUKIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKIAkgIGZpCi0JICB0bXBfbGlicz0KLQkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLQkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLQkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLQkgICAgICBlc2FjCi0JICAgIGZpCi0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLQkgIGRvbmUKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGNvbnYKIAogCiAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgogCWxpbmtsaWI9Ci0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgbGlua2xpYj0iJGwiCi0JZG9uZQorCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8CisJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKwllbHNlCisJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisJICAgIGxpbmtsaWI9IiRsIgorCSAgZG9uZQorCWZpCiAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAlmaQpAQCAtNTM4Miw5ICs2NDkxLDkgQEAKIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCiAJICBlbHNlCi0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgogCSAgZmkKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGRsb3BlbgpAQCAtNTQwNiwxNCArNjUxNSwxNCBAQAogCiAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCiAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgorCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCiAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKIAkgIGVsc2UKLQkgICAgZGlyPSIkbGliZGlyIgotCSAgICBhYnNkaXI9IiRsaWJkaXIiCisJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKIAkgIGZpCiAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcwogCWVsc2UKQEAgLTU0MjEsMTIgKzY1MzAsMTIgQEAKIAkgICAgZGlyPSIkbGFkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGVsc2UKIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBmaQogCWZpICMgJGluc3RhbGxlZCA9IHllcwogCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgpAQCAtNTQzNywyMCArNjU0Niw0NiBAQAogCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgogCSAgZmkKLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgotCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKLQkgIGVsc2UKLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKLQkgIGZpCisJICBjYXNlICIkaG9zdCIgaW4KKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAorCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgorCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCisJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKiApCisJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCisJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCisJICAgICAgZWxzZQorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisJICAgICAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCiAKIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgpAQCAtNTQ2OCw3ICs2NjAzLDcgQEAKIAogCiAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCiAJICBsaW5rYWxsZGVwbGlicz1ubwpAQCAtNTQ4MSw3ICs2NjE2LDggQEAKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgY2FzZSAkZGVwbGliIGluCiAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCQkgOzsKIAkgICAgZXNhYwogCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/CkBAIC01NDkyLDEyICs2NjI4LDEyIEBACiAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZmkKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgIGRvbmUgIyBmb3IgZGVwbGliCiAJICBjb250aW51ZQogCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgpAQCAtNTUxMiw3ICs2NjQ4LDcgQEAKIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgogCSAgICAgICoiJGFic2RpcjoiKikgOzsKLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIApAQCAtNTUyNCw3ICs2NjYwLDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTMzLDcgKzY2NjksNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTU4LDEyICs2Njk0LDEyIEBACiAJICBjYXNlICRob3N0IGluCiAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQogCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPW5vCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz15ZXMKIAkgICAgZmkKIAkgICAgOzsKQEAgLTU1ODAsNyArNjcxNiw3IEBACiAJICAgIGZpCiAJICBkb25lCiAJICBpZiB0ZXN0IC16ICIkZGxvcGVubW9kdWxlIiAmJiB0ZXN0ICIkc2hvdWxkbm90bGluayIgPSB5ZXMgJiYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgogCSAgICBlbHNlCkBAIC01NTk4LDcgKzY3MzQsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2MDcsNyArNjc0Myw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2NjEsNyArNjc5Nyw3IEBACiAJICAgIGxpbmtsaWI9JG5ld2xpYgogCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU2ODMsOSArNjgxOSw5IEBACiAJCSAgICAgIGlmIHRlc3QgIlgkZGxvcGVubW9kdWxlIiAhPSAiWCRsaWIiOyB0aGVuCiAJCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpYiAkbGlua2xpYiBpcyBhIG1vZHVsZSwgbm90IGEgc2hhcmVkIGxpYnJhcnkiCiAJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgotCQkJICAkRUNITwotCQkJICAkRUNITyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCi0JCQkgICRFQ0hPICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKKwkJCSAgZWNobworCQkJICBlY2hvICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKKwkJCSAgZWNobyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCiAJCQllbHNlCiAJCQkgIGFkZD0iJGRpci8kb2xkX2xpYnJhcnkiCiAJCQlmaQpAQCAtNTcxMiwxMiArNjg0OCwxMiBAQAogCSAgICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KIAkJYWRkPSIkZGlyLyRsaW5rbGliIgogCSAgICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCi0JCWFkZF9kaXI9Ii1MJGRpciIKKwkJYWRkX2Rpcj0iLUwkYWJzZGlyIgogCQkjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCiAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJCSAgY2FzZSAkbGliZGlyIGluCiAJCSAgICBbXFwvXSopCi0JCSAgICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgogCQkgICAgICA7OwogCQkgIGVzYWMKIAkJZmkKQEAgLTU3MzksNyArNjg3NSw3IEBACiAJICAgIGlmIHRlc3QgLW4gIiRhZGRfc2hsaWJwYXRoIjsgdGhlbgogCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFkZF9zaGxpYnBhdGg6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgpAQCAtNTc1MywxMyArNjg4OSwxMyBAQAogCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJCSoiOiRsaWJkaXI6IiopIDs7Ci0JCSopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCQllc2FjCiAJICAgICAgZmkKIAkgICAgZmkKIAkgIGZpCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CkBAIC01NzczLDcgKzY5MDksNyBAQAogCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgogCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgICBhZGQ9Ii1sJG5hbWUiCiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KQEAgLTU3OTAsNyArNjkyNiw3IEBACiAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJY2FzZSAkbGliZGlyIGluCiAJCSAgW1xcL10qKQotCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgogCQkgICAgOzsKIAkJZXNhYwogCSAgICAgIGZpCkBAIC01ODI1LDIxICs2OTYxLDIxIEBACiAKIAkgICAgIyBKdXN0IHByaW50IGEgd2FybmluZyBhbmQgYWRkIHRoZSBsaWJyYXJ5IHRvIGRlcGVuZGVuY3lfbGlicyBzbwogCSAgICAjIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IHRoZSBzdGF0aWMgbGlicmFyeS4KLQkgICAgJEVDSE8KKwkgICAgZWNobwogCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IFRoaXMgc3lzdGVtIGNhbiBub3QgbGluayB0byBzdGF0aWMgbGliIGFyY2hpdmUgJGxpYi4iCi0JICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCisJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCiAJICAgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKLQkgICAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCi0JICAgICAgJEVDSE8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKKwkgICAgICBlY2hvICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCisJICAgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCisJICAgICAgZWNobyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgogCSAgICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JCSRFQ0hPCi0JCSRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkJJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JCSRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JCSRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkJZWNobworCQllY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkJZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkJZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgorCQllY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC01ODY3LDM3ICs3MDAzLDQ2IEBACiAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJCSAgIGNhc2UgIiAkeHJwYXRoICIgaW4KIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OwotCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7CisJCSAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICR0ZW1wX3hycGF0aCI7OwogCQkgICBlc2FjOzsKLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfZGVwbGlicyAiICRsaWJkaXIiOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF9kZXBsaWJzIgogCSAgZmkKIAotCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRhYnNkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgogCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5CiAJICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGNhc2UgJGRlcGxpYiBpbgorICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKKyAgICAgICAgICAgICAgKikgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiIDs7CisgICAgICAgICAgICBlc2FjCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKKyAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIGRvbmUKIAogCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCiAJICAgICMgQWRkIHRoZSBzZWFyY2ggcGF0aHMgb2YgYWxsIGRlcGVuZGVuY3kgbGlicmFyaWVzCiAJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBwYXRoPQogCSAgICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKIAkgICAgICAqLmxhKQorCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSAgICAgICAgZnVuY19kaXJuYW1lICIkZGVwbGliIiAiIiAiLiIKLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCQljYXNlICRkaXIgaW4KIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CkBAIC01OTI0LDggKzcwNjksOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKICAgICAgICAgICAgICAgICAgICAgICBmaQotCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0JCSAgICAgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgogCQkgICAgICBwYXRoPQogCQkgICAgZmkKIAkJICBmaQpAQCAtNTk1OCw3ICs3MTAzLDcgQEAKIAkgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRjb21waWxlX2RlcGxpYnMiCiAJICBmaW5hbGl6ZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGZpbmFsaXplX2RlcGxpYnMiCiAJZWxzZQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAiYCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWZpCiAgICAgICBmaQogICAgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtNTk3NSw3ICs3MTIwLDcgQEAKIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJICBuZXdsaWJfc2VhcmNoX3BhdGg9CkBAIC02MDMzLDEwICs3MTc4LDEwIEBACiAJICAgIC1MKikKIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKSA7OwotCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7Ci0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgpAQCAtNjA1Miw3ICs3MTk3LDcgQEAKIAkgIDs7CiAJZXNhYwogCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgogCWZpCiAgICAgICBkb25lCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCkBAIC02MDkzLDcgKzcyMzgsNyBAQAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCi0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKICAgICAgIDs7CiAKICAgICBsaWIpCkBAIC02MTI2LDEwICs3MjcxLDEwIEBACiAJaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgogCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCiAJZWxzZQotCSAgJEVDSE8KKwkgIGVjaG8KIAkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgotCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCisJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJG9ianMiCiAJZmkKICAgICAgIGZpCiAKQEAgLTYxODgsMTMgKzczMzMsMTQgQEAKIAkgICMgd2hpY2ggaGFzIGFuIGV4dHJhIDEgYWRkZWQganVzdCBmb3IgZnVuCiAJICAjCiAJICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KKwkgICMgY29ycmVjdCBsaW51eCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCSAgZGFyd2lufGxpbnV4fG9zZnx3aW5kb3dzfG5vbmUpCiAJICAgIGZ1bmNfYXJpdGggJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IKIAkgICAgY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9yZXZpc2lvbiIKIAkgICAgOzsKLQkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxzdW5vcykKKwkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxxbnh8c3Vub3MpCiAJICAgIGN1cnJlbnQ9IiRudW1iZXJfbWFqb3IiCiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgogCSAgICBhZ2U9IjAiCkBAIC02MjA2LDYgKzczNTIsOSBAQAogCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKIAkgICAgbHRfaXJpeF9pbmNyZW1lbnQ9bm8KIAkgICAgOzsKKwkgICopCisJICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiJG1vZGVuYW1lOiB1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlIFxgJHZlcnNpb25fdHlwZSciCisJICAgIDs7CiAJICBlc2FjCiAJICA7OwogCW5vKQpAQCAtNjMwNCw3ICs3NDUzLDcgQEAKIAkgIHZlcnN1ZmZpeD0iJG1ham9yLiRyZXZpc2lvbiIKIAkgIDs7CiAKLQlsaW51eCkKKwlsaW51eCkgIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQogCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCkBAIC02MzI3LDcgKzc0NzYsNyBAQAogCSAgZG9uZQogCiAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgogCSAgOzsKIAogCXFueCkKQEAgLTYzOTUsMTAgKzc1NDQsMTAgQEAKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgotICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCiAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCi0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CiAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCiAJcmVtb3ZlbGlzdD0KQEAgLTY0MTQsNyArNzU2Myw3IEBACiAJCSAgIGNvbnRpbnVlCiAJCSBmaQogCSAgICAgICBmaQotCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgogCSAgICAgICA7OwogCSAgICAqKSA7OwogCSAgZXNhYwpAQCAtNjQyNSwyNyArNzU3NCwyOCBAQAogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAogCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLQlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KICAgICAgICNmb3IgcGF0aCBpbiAkbm90aW5zdF9wYXRoOyBkbwotICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICJYJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFhzZWQgLWUgInMlICRwYXRoICUgJWciYAotICAgICAgIwlkZXBsaWJzPWAkRUNITyAiWCRkZXBsaWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKLSAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCRkZXBlbmRlbmN5X2xpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICIkbGliX3NlYXJjaF9wYXRoICIgfCAkU0VEICJzJSAkcGF0aCAlICVnImAKKyAgICAgICMJZGVwbGlicz1gJEVDSE8gIiRkZXBsaWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICIkZGVwZW5kZW5jeV9saWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAogICAgICAgI2RvbmUKIAogICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCiAJdGVtcF94cnBhdGg9CiAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCisJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCkBAIC02NDU5LDcgKzc2MDksNyBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCiAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KIAkqIiAkbGliICIqKSA7OwotCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogCkBAIC02NDY5LDE5ICs3NjE5LDE5IEBACiAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIAogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgdGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgYyBsaWJyYXJ5IChhcyBzdWNoKSEKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICA7OwogCSAgKi0qLW5ldGJzZCopCiAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgpAQCAtNjQ5OCw3ICs3NjQ4LDcgQEAKIAkgICopCiAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCiAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCisJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKIAkgICAgZmkKIAkgICAgOzsKIAkgIGVzYWMKQEAgLTY1NDcsNyArNzY5Nyw3IEBACiAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAqIiAkaSAiKikKLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgaT0iIgogCQkgICAgOzsKIAkJICBlc2FjCkBAIC02NTU4LDIxICs3NzA4LDIxIEBACiAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICBkZXBsaWJfbWF0Y2g9JDEKIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICBlbHNlCiAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICRFQ0hPCisJCSAgICBlY2hvCiAJCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKLQkJICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCi0JCSAgICAkRUNITyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCisJCSAgICBlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCisJCSAgICBlY2hvICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgZmkKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjU5MCw3ICs3NzQwLDcgQEAKIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAgICoiICRpICIqKQotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgICBpPSIiCiAJCSAgICAgIDs7CiAJCSAgICBlc2FjCkBAIC02NjAxLDI5ICs3NzUxLDI5IEBACiAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAogCQkgICAgZGVwbGliX21hdGNoPSQxCiAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICBlbHNlCiAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwotCQkgICAgICAkRUNITworCQkgICAgICBlY2hvCiAJCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCi0JCSAgICAgICRFQ0hPICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJICAgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgIGVjaG8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKIAkJICAgIGZpCiAJCSAgZmkKIAkJZWxzZQogCQkgIGRyb3BwZWRkZXBzPXllcwotCQkgICRFQ0hPCisJCSAgZWNobwogCQkgICRFQ0hPICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCi0JCSAgJEVDSE8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKLQkJICAkRUNITyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKLQkJICAkRUNITyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKKwkJICBlY2hvICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCisJCSAgZWNobyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKKwkJICBlY2hvICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgogCQlmaQogCQk7OwogCSAgICAgICopCi0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC02NjQwLDE1ICs3NzkwLDI3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCisJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKwkJZWxzZQorCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCisJCWZpCisJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgICAkbm9jYXNlZ2xvYgorCQkgIGVsc2UKKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBmaQogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKQEAgLTY2NjUsMTMgKzc4MjcsMTMgQEAKIAkJCXBvdGxpYmxpbms9YGxzIC1sZCAkcG90bGliIHwgJHtTRUR9ICdzLy4qIC0+IC8vJ2AKIAkJCWNhc2UgJHBvdGxpYmxpbmsgaW4KIAkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSIkcG90bGlibGluayI7OwotCQkJKikgcG90bGliPWAkRUNITyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQogCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAogCQkJICRTRUQgLWUgMTBxIHwKIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJCWFfZGVwbGliPSIiCiAJCQlicmVhayAyCiAJCSAgICAgIGZpCkBAIC02NjgwLDEyICs3ODQyLDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgZmlsZSBtYWdpYyB0ZXN0KSIKIAkJZWxzZQpAQCAtNjY5Niw3ICs3ODU4LDcgQEAKIAkgICAgICA7OwogCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KQEAgLTY3MTIsNyArNzg3NCw3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwpAQCAtNjcyMyw5ICs3ODg1LDkgQEAKIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIHwgXAorCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICAgICAgYV9kZXBsaWI9IiIKIAkJICAgICAgYnJlYWsgMgogCQkgICAgZmkKQEAgLTY3MzQsMTIgKzc4OTYsMTIgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciByZWdleCBwYXR0ZXJuIHRlc3QpIgogCQllbHNlCkBAIC02NzUwLDMyICs3OTEyLDMyIEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKIAkgIG5ld2RlcGxpYnM9IiIKLQkgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCBcCi0JICAgICAgLWUgJ3MvIC1sYyQvLycgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAorCSAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncy8gLWxjJC8vOyBzLyAtW0xSXVteIF0qLy9nJ2AKIAkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkgICAgZm9yIGkgaW4gJHByZWRlcHMgJHBvc3RkZXBzIDsgZG8KIAkgICAgICAjIGNhbid0IHVzZSBYc2VkIGJlbG93LCBiZWNhdXNlICRpIG1pZ2h0IGNvbnRhaW4gJy8nCi0JICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAicywkaSwsImAKKwkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkdG1wX2RlcGxpYnMiIHwgJFNFRCAicywkaSwsImAKIAkgICAgZG9uZQogCSAgZmkKLQkgIGlmICRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bCSBdLy9nJyB8Ci0JICAgICAkR1JFUCAuID4vZGV2L251bGw7IHRoZW4KLQkgICAgJEVDSE8KKwkgIGNhc2UgJHRtcF9kZXBsaWJzIGluCisJICAqWyFcCVwgXSopCisJICAgIGVjaG8KIAkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCiAJICAgIGVsc2UKLQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgogCSAgICBmaQotCSAgICAkRUNITyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCisJICAgIGVjaG8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgogCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkgIGZpCisJICAgIDs7CisJICBlc2FjCiAJICA7OwogCWVzYWMKIAl2ZXJzdWZmaXg9JHZlcnN1ZmZpeF9zYXZlCkBAIC02Nzg3LDIzICs3OTQ5LDIzIEBACiAJY2FzZSAkaG9zdCBpbgogCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IHdpdGggdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGRyb3BwZWRkZXBzIiA9IHllczsgdGhlbgogCSAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgJEVDSE8KLQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgorCSAgICBlY2hvCisJICAgIGVjaG8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgogCSAgICAkRUNITyAiKioqIGRlcGVuZGVuY2llcyBvZiBtb2R1bGUgJGxpYm5hbWUuICBUaGVyZWZvcmUsIGxpYnRvb2wgd2lsbCBjcmVhdGUiCi0JICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyIKLQkgICAgJEVDSE8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKKwkgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCisJICAgIGVjaG8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKIAkgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkgICAgICAkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkgICAgICAkRUNITyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCSAgICAgICRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJICAgICAgZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkgICAgICBlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJICAgICAgZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCSAgICAgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCkBAIC02ODEzLDE2ICs3OTc1LDE2IEBACiAJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJICAgIGZpCiAJICBlbHNlCi0JICAgICRFQ0hPICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgotCSAgICAkRUNITyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKLQkgICAgJEVDSE8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKKwkgICAgZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKKwkgICAgZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgZWNobyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgogCiAJICAgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0gbm87IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgotCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKLQkgICAgICAkRUNITyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgotCSAgICAgICRFQ0hPICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgorCSAgICAgIGVjaG8KKwkgICAgICBlY2hvICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgorCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgorCSAgICAgIGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKKwkgICAgICBlY2hvICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC02ODM5LDkgKzgwMDEsOSBAQAogICAgICAgIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgogICAgICAgY2FzZSAkaG9zdCBpbgogCSotKi1kYXJ3aW4qKQotCSAgbmV3ZGVwbGlicz1gJEVDSE8gIlggJG5ld2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGRlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAkgIDs7CiAgICAgICBlc2FjCiAKQEAgLTY4NTQsNyArODAxNiw3IEBACiAJKikKIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNjg2NCwxMCArODAyNiwxMCBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCkBAIC02ODc5LDE1ICs4MDQxLDIyIEBACiAKICAgICAgICMgVGVzdCBhZ2Fpbiwgd2UgbWF5IGhhdmUgZGVjaWRlZCBub3QgdG8gYnVpbGQgaXQgYW55IG1vcmUKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisJIyBSZW1vdmUgJHt3bH0gaW5zdGFuY2VzIHdoZW4gbGlua2luZyB3aXRoIGxkLgorCSMgRklYTUU6IHNob3VsZCB0ZXN0IHRoZSByaWdodCBfY21kcyB2YXJpYWJsZS4KKwljYXNlICRhcmNoaXZlX2NtZHMgaW4KKwkgICpcJExEXCAqKSB3bD0gOzsKKyAgICAgICAgZXNhYwogCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiID0geWVzOyB0aGVuCiAJICAjIEhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCiAJICBoYXJkY29kZV9saWJkaXJzPQogCSAgZGVwX3JwYXRoPQogCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgogCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCiAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKIAkJZWxzZQpAQCAtNjg5NiwxOCArODA2NSwxOCBAQAogCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJICAgIDs7CiAJCSAgKikKLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQkgICAgOzsKIAkJICBlc2FjCiAJCWZpCiAJICAgICAgZWxzZQogCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCiAJICAgICAgZmkKIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBkb25lCkBAIC02OTE1LDE3ICs4MDg0LDEzIEBACiAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KLQkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKLQkgICAgZWxzZQotCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBmaQorCSAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgogCSAgZmkKIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCiAJICAgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICAgIHJwYXRoPQogCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotCSAgICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCiAJICAgIGRvbmUKIAkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCiAJICBmaQpAQCAtNjkzMyw3ICs4MDk4LDcgQEAKIAlmaQogCiAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgotCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorCXRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgogCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgogCWZpCkBAIC02OTU5LDE4ICs4MTI0LDE4IEBACiAJbGlua25hbWVzPQogCWZvciBsaW5rCiAJZG8KLQkgIGxpbmtuYW1lcz0iJGxpbmtuYW1lcyAkbGluayIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgogCWRvbmUKIAogCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCi0JdGVzdCAteiAiJHBpY19mbGFnIiAmJiBsaWJvYmpzPWAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJdGVzdCAteiAiJHBpY19mbGFnIiAmJiBsaWJvYmpzPWAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCXRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAKIAlkZWxmaWxlcz0KIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCiAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgorCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCiAJZmkKIAogCW9yaWdfZXhwb3J0X3N5bWJvbHM9CkBAIC03MDAxLDE0ICs4MTY2LDQ2IEBACiAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCiAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKIAkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbwogCSAgICAgIElGUz0iJHNhdmVfaWZzIgotCSAgICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICAgZnVuY19sZW4gIiAkY21kIgotCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0JICAgICAgaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KKwkgICAgICBjYXNlICRubV9maWxlX2xpc3Rfc3BlY34kdG9fdG9vbF9maWxlX2NtZCBpbgorCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCisJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCisJCSAgZXZhbCBjbWQ9XCIkY21kMVwiCisJCSAgZnVuY19sZW4gIiAkY21kIgorCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0CisJCSAgOzsKKwkJKikKKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubworCQkgIDs7CisJICAgICAgZXNhYworCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAorCQkgJiYgeyB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgXAorCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQorCSAgICAgIHRoZW4KIAkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JwogCQlza2lwcGVkX2V4cG9ydD1mYWxzZQorCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgorCQlmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJCXNhdmVfbGlib2Jqcz0kbGlib2JqcworCQlzYXZlX291dHB1dD0kb3V0cHV0CisJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQorCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkJbGlib2Jqcz0kbm1fZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorCQlmb3Igb2JqIGluICRzYXZlX2xpYm9ianM7IGRvCisJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJCWRvbmUgPiAiJG91dHB1dCIKKwkJZXZhbCBjbWQ9XCIkY21kMVwiCisJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKwkJb3V0cHV0PSRzYXZlX291dHB1dAorCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKKwkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKIAkgICAgICBlbHNlCiAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgogCQlmdW5jX3ZlcmJvc2UgInVzaW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUgZm9yIGV4cG9ydCBsaXN0Li4uIgpAQCAtNzAyOSw3ICs4MjI2LDcgQEAKIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCiAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKIAkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKIAlmaQogCiAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KQEAgLTcwNDEsNyArODIzOCw3IEBACiAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQogCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgogCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCiAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCWZpCkBAIC03MDUxLDcgKzgyNDgsNyBAQAogCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCiAJICAqIiAkdGVzdF9kZXBsaWIgIiopIDs7CiAJICAqKQotCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgdG1wX2RlcGxpYnMgIiAkdGVzdF9kZXBsaWIiCiAJICAgIDs7CiAJICBlc2FjCiAJZG9uZQpAQCAtNzA3MSwyMSArODI2OCwyMSBAQAogCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZWxzZQogCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgICAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGZpCiAJZmkKIAogCWlmIHRlc3QgIiR0aHJlYWRfc2FmZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJHRocmVhZF9zYWZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCiAJZmkKIAogCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZwotCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KIAlmaQogCkBAIC03MTMwLDcgKzgzMjcsOCBAQAogCSAgICBzYXZlX2xpYm9ianM9JGxpYm9ianMKIAkgIGZpCiAJICBzYXZlX291dHB1dD0kb3V0cHV0Ci0JICBvdXRwdXRfbGE9YCRFQ0hPICJYJG91dHB1dCIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKwkgIGZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisJICBvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAKIAkgICMgQ2xlYXIgdGhlIHJlbG9hZGFibGUgb2JqZWN0IGNyZWF0aW9uIGNvbW1hbmQgcXVldWUgYW5kCiAJICAjIGluaXRpYWxpemUgayB0byBvbmUuCkBAIC03MTQzLDEzICs4MzQxLDE2IEBACiAJICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lmxua3NjcmlwdAogCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIEdOVSBsZCBzY3JpcHQ6ICRvdXRwdXQiCi0JICAgICRFQ0hPICdJTlBVVCAoJyA+ICRvdXRwdXQKKwkgICAgZWNobyAnSU5QVVQgKCcgPiAkb3V0cHV0CiAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcwogCSAgICBkbwotCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKIAkgICAgZG9uZQotCSAgICAkRUNITyAnKScgPj4gJG91dHB1dAotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKIAkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCiAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgpAQCAtNzE2MywxMCArODM2NCwxMiBAQAogCSAgICBmaQogCSAgICBmb3Igb2JqCiAJICAgIGRvCi0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAogCSAgICBkb25lCi0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCisJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgogCSAgZWxzZQogCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgogCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCkBAIC03MTkwLDE3ICs4MzkzLDE5IEBACiAJCSAgIyBjb21tYW5kIHRvIHRoZSBxdWV1ZS4KIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCiAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgotCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKKwkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0CisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKIAkJICBlbHNlCiAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgogCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLQkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqflwkUk0gJGxhc3Rfcm9ialwiCisJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgogCQkgIGZpCiAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CiAJCSAgZnVuY19hcml0aCAkayArIDEKIAkJICBrPSRmdW5jX2FyaXRoX3Jlc3VsdAogCQkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCQkgIG9iamxpc3Q9JG9iagorCQkgIG9iamxpc3Q9IiAkb2JqIgogCQkgIGZ1bmNfbGVuICIgJGxhc3Rfcm9iaiIKIAkJICBmdW5jX2FyaXRoICRsZW4wICsgJGZ1bmNfbGVuX3Jlc3VsdAogCQkgIGxlbj0kZnVuY19hcml0aF9yZXN1bHQKQEAgLTcyMTAsMTEgKzg0MTUsMTIgQEAKIAkgICAgICAjIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUuICBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdAogCSAgICAgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgogCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJICAgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCiAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KIAkgICAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIKIAkgICAgICBmaQotCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCiAKIAkgICAgZWxzZQogCSAgICAgIG91dHB1dD0KQEAgLTcyNDgsNyArODQ1NCw3IEBACiAJCWx0X2V4aXQ9JD8KIAogCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAogCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKIAkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC03MjY5LDcgKzg0NzUsNyBAQAogCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCiAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCiAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0JICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCkBAIC03MjgxLDcgKzg0ODcsNyBAQAogCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CiAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgogCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgogCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCiAJICAgIGZpCkBAIC03MzIyLDEwICs4NTI4LDEwIEBACiAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotCSAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCWZpCiAKQEAgLTczNDEsNyArODU0Nyw3IEBACiAJICAgIGx0X2V4aXQ9JD8KIAogCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkgICAgaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAogCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKQEAgLTczNTMsNyArODU1OSw3IEBACiAJSUZTPSIkc2F2ZV9pZnMiCiAKIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CiAKIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KQEAgLTc0MzQsMTggKzg2NDAsMjEgQEAKICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLQkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIlgkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFhzZWQgLWUgJ3N8LHwgfGcnYAorCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAogCWVsc2UKIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCiAJICByZWxvYWRfY29udl9vYmpzPSIkcmVsb2FkX29ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJZmkKICAgICAgIGZpCiAKKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCisgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKKwogICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0gICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JCcvZCcgLWUgJy9cLmxpYiQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKyAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7IC9cLmxpYiQvZDsgJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAogCiAgICAgICBvdXRwdXQ9IiRvYmoiCiAgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJHJlbG9hZF9jbWRzIiAnZXhpdCAkPycKQEAgLTc1MDUsOCArODcxNCw4IEBACiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJIyBPbiBSaGFwc29keSByZXBsYWNlIHRoZSBDIGxpYnJhcnkgaXMgdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQljb21waWxlX2RlcGxpYnM9YCRFQ0hPICJYICRjb21waWxlX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIiAkY29tcGlsZV9kZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAk7OwogICAgICAgZXNhYwogCkBAIC03NTE3LDE0ICs4NzI2LDE0IEBACiAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgogCSAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSBpbgogCSAgICAxMC5bMDEyM10pCi0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLQkgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCiAJICAgIDs7CiAJICBlc2FjCiAJZmkKIAkjIFRpbWUgdG8gY2hhbmdlIGFsbCBvdXIgImZvby5sdGZyYW1ld29yayIgc3R1ZmYgYmFjayB0byAiLWZyYW1ld29yayBmb28iCi0JY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICJYICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIiAkY29tcGlsZV9kZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIiAkZmluYWxpemVfZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCTs7CiAgICAgICBlc2FjCiAKQEAgLTc1MzgsNyArODc0Nyw3IEBACiAJKikKIAkgIGNhc2UgIiAkY29tcGlsZV9kZXBsaWJzICIgaW4KIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC03NTQ4LDE3ICs4NzU3LDE3IEBACiAJLUwqKQogCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCiAJICAqIiAkZGVwbGliICIqKSA7OwotCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwogCSAgZXNhYwogCSAgOzsKLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgogCiAKLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgotICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGZpbmFsaXplX2RlcGxpYnMiCisgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgogCiAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgogCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KQEAgLTc1NjYsNyArODc3NSw3IEBACiAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCiAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlkb25lCiAgICAgICBmaQpAQCAtNzU4NSwxOCArODc5NCwxOCBAQAogCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJOzsKIAkgICAgICAqKQotCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgogCSAgZmkKIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKIAljYXNlICRob3N0IGluCkBAIC03NjA1LDEyICs4ODE0LDEyIEBACiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiRsaWJkaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kbGliZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC03NjM2LDE4ICs4ODQ1LDE4IEBACiAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQogCQk7OwogCSAgICAgICopCi0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZWxzZQogCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCiAJICBmaQogCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9wZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlmaQogICAgICAgZG9uZQpAQCAtNzY2MSw4ICs4ODcwLDggQEAKIAogICAgICAgaWYgdGVzdCAtbiAiJGxpYm9ianMiICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KIAkjIFRyYW5zZm9ybSBhbGwgdGhlIGxpYnJhcnkgb2JqZWN0cyBpbnRvIHN0YW5kYXJkIG9iamVjdHMuCi0JY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKLQlmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCisJZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkb3V0cHV0bmFtZSIgIkBQUk9HUkFNQCIgIm5vIgpAQCAtNzY3NCwxNSArODg4MywxNSBAQAogCiAgICAgICB3cmFwcGVyc19yZXF1aXJlZD15ZXMKICAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICpjZWdjYyogfCAqbWluZ3czMmNlKikKKyAgICAgICAgIyBEaXNhYmxlIHdyYXBwZXJzIGZvciBjZWdjYyBhbmQgbWluZ3czMmNlIGhvc3RzLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KKyAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KKyAgICAgICAgOzsKICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiApCiAgICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgogICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCiAgICAgICAgIGZpCiAgICAgICAgIDs7Ci0gICAgICAqY2VnY2MpCi0gICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MsIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgYW55d2F5LgotICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwotICAgICAgICA7OwogICAgICAgKikKICAgICAgICAgaWYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IG5vIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgogICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCkBAIC03NjkxLDEzICs4OTAwLDE5IEBACiAgICAgICBlc2FjCiAgICAgICBpZiB0ZXN0ICIkd3JhcHBlcnNfcmVxdWlyZWQiID0gbm87IHRoZW4KIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCiAJIyBXZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSByaWdodCBub3cuCiAJZXhpdF9zdGF0dXM9MAogCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCiAKKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKwlmaQorCiAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCiAJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJwpAQCAtNzcyMCw3ICs4OTM1LDcgQEAKIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICBycGF0aD0KIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgZG9uZQogCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgogCWZpCkBAIC03NzI4LDcgKzg5NDMsNyBAQAogCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KIAkgIHJwYXRoPQogCSAgZm9yIGRpciBpbiAkZmluYWxpemVfcGVybV9ycGF0aDsgZG8KLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCiAJICBkb25lCiAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgogCWZpCkBAIC03NzM4LDExICs4OTUzLDE4IEBACiAJIyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0LgogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQlsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKKwlsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCiAJIyBEZWxldGUgdGhlIG9sZCBvdXRwdXQgZmlsZS4KIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisKKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKwlmaQorCiAJZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICBmaQogCkBAIC03NzU3LDcgKzg5NzksNyBAQAogCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiICE9IG5vOyB0aGVuCiAJICBsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkY29tcGlsZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgogCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRTRUQgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKIAkgIGVsc2UKIAkgICAgIyBmYXN0X2luc3RhbGwgaXMgc2V0IHRvIG5lZWRsZXNzCiAJICAgIHJlbGlua19jb21tYW5kPQpAQCAtNzc2OSwxMyArODk5MSwxOSBAQAogICAgICAgZmkKIAogICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAorICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKIAogICAgICAgIyBEZWxldGUgdGhlIG9sZCBvdXRwdXQgZmlsZXMuCiAgICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgJG91dHB1dF9vYmpkaXIvbHQtJG91dHB1dG5hbWUKIAogICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwogCisgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiCisJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworICAgICAgZmkKKwogICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KICAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKIApAQCAtNzc5MywxOCArOTAyMSw3IEBACiAJICBmaQogCWRvbmUKIAlyZWxpbmtfY29tbWFuZD0iKGNkIGBwd2RgOyAkcmVsaW5rX2NvbW1hbmQpIgotCXJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBmaQotCi0gICAgICAjIFF1b3RlICRFQ0hPIGZvciBzaGlwcGluZy4KLSAgICAgIGlmIHRlc3QgIlgkRUNITyIgPSAiWCRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjsgdGhlbgotCWNhc2UgJHByb2dwYXRoIGluCi0JW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBxZWNobz0iJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOzsKLQkqKSBxZWNobz0iJFNIRUxMIGBwd2RgLyRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOzsKLQllc2FjCi0JcWVjaG89YCRFQ0hPICJYJHFlY2hvIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICAgIGVsc2UKLQlxZWNobz1gJEVDSE8gIlgkRUNITyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisJcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBmaQogCiAgICAgICAjIE9ubHkgYWN0dWFsbHkgZG8gdGhpbmdzIGlmIG5vdCBpbiBkcnkgcnVuIG1vZGUuCkBAIC03ODg0LDcgKzkxMDEsNyBAQAogCWVsc2UKIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgotCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKwkgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgogCSAgZmkKIAlmaQogCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCkBAIC03ODkyLDEwICs5MTA5LDEwIEBACiAKICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgogCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCWZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRhZGRsaWJzCi0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogICAgICAgZmkKIAogICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCkBAIC03OTA2LDEwICs5MTIzLDEwIEBACiAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotCSAgb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJZmkKIAogCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQpAQCAtNzkyNSw5ICs5MTQyLDkgQEAKIAkgICAgZG9uZSB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCiAJICA6CiAJZWxzZQotCSAgJEVDSE8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKKwkgIGVjaG8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCiAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKIAkgIG9sZG9ianM9CkBAIC03OTUxLDE4ICs5MTY4LDMwIEBACiAJCWVzYWMKIAkgICAgICBkb25lCiAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotCSAgICAgIG9sZG9ianM9IiRvbGRvYmpzICRnZW50b3AvJG5ld29iaiIKKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgogCSAgICAgIDs7Ci0JICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG9sZGxpYiIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwl0b29sX29sZGxpYj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgogCiAJZnVuY19sZW4gIiAkY21kcyIKIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAogCWlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgogCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KKwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgY29tbWFuZCBmaWxlIGFyY2hpdmUgbGlua2luZy4uLiIKKwkgIGZvciBvYmogaW4gJG9sZG9ianMKKwkgIGRvCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQiCisJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCiAJZWxzZQogCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKQEAgLTgwMzYsNyArOTI2NSw3IEBACiAgICAgICBkb25lCiAgICAgICAjIFF1b3RlIHRoZSBsaW5rIGNvbW1hbmQgZm9yIHNoaXBwaW5nLgogICAgICAgcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLW1vZGU9cmVsaW5rICRsaWJ0b29sX2FyZ3MgQGluc3RfcHJlZml4X2RpckApIgotICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXMgOyB0aGVuCiAJcmVsaW5rX2NvbW1hbmQ9CiAgICAgICBmaQpAQCAtODA1NiwxMiArOTI4NSwyMyBAQAogCSAgICAgICoubGEpCiAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCiAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwotCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OworCSAgICAgIC1MKikKKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisJCTs7CisJICAgICAgLVIqKQorCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKwkJOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCkBAIC04MDc1LDkgKzkzMTUsOSBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKQEAgLTgwOTQsNyArOTMzNCw3IEBACiAJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKKwkJZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtODEwNiw3ICs5MzQ2LDcgQEAKIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CiAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKIAkgICAgICBlc2FjCi0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGFicyIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKIAkgICAgZG9uZQogCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKIAkgICAgbmV3ZGxwcmVmaWxlcz0KQEAgLTgxMTUsMTUgKzkzNTUsMzMgQEAKIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CiAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKIAkgICAgICBlc2FjCi0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGFicyIKIAkgICAgZG9uZQogCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKIAkgIGZpCiAJICAkUk0gJG91dHB1dAogCSAgIyBwbGFjZSBkbG5hbWUgaW4gY29ycmVjdCBwb3NpdGlvbiBmb3IgY3lnd2luCisJICAjIEluIGZhY3QsIGl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgdXNlIHRoaXMgY29kZSBmb3IgYWxsIHRhcmdldAorCSAgIyBzeXN0ZW1zIHRoYXQgY2FuJ3QgaGFyZC1jb2RlIGxpYnJhcnkgcGF0aHMgaW50byB0aGVpciBleGVjdXRhYmxlcworCSAgIyBhbmQgdGhhdCBoYXZlIG5vIHNoYXJlZCBsaWJyYXJ5IHBhdGggdmFyaWFibGUgaW5kZXBlbmRlbnQgb2YgUEFUSCwKKwkgICMgYnV0IGl0IHR1cm5zIG91dCB3ZSBjYW4ndCBlYXNpbHkgZGV0ZXJtaW5lIHRoYXQgZnJvbSBpbnNwZWN0aW5nCisJICAjIGxpYnRvb2wgdmFyaWFibGVzLCBzbyB3ZSBoYXZlIHRvIGhhcmQtY29kZSB0aGUgT1NzIHRvIHdoaWNoIGl0CisJICAjIGFwcGxpZXMgaGVyZTsgYXQgdGhlIG1vbWVudCwgdGhhdCBtZWFucyBwbGF0Zm9ybXMgdGhhdCB1c2UgdGhlIFBFCisJICAjIG9iamVjdCBmb3JtYXQgd2l0aCBETEwgZmlsZXMuICBTZWUgdGhlIGxvbmcgY29tbWVudCBhdCB0aGUgdG9wIG9mCisJICAjIHRlc3RzL2JpbmRpci5hdCBmb3IgZnVsbCBkZXRhaWxzLgogCSAgdGRsbmFtZT0kZGxuYW1lCiAJICBjYXNlICRob3N0LCRvdXRwdXQsJGluc3RhbGxlZCwkbW9kdWxlLCRkbG5hbWUgaW4KLQkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkgdGRsbmFtZT0uLi9iaW4vJGRsbmFtZSA7OworCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqY2VnY2MqLCpsYWkseWVzLG5vLCouZGxsKQorCSAgICAgICMgSWYgYSAtYmluZGlyIGFyZ3VtZW50IHdhcyBzdXBwbGllZCwgcGxhY2UgdGhlIGRsbCB0aGVyZS4KKwkgICAgICBpZiB0ZXN0ICJ4JGJpbmRpciIgIT0geCA7CisJICAgICAgdGhlbgorCQlmdW5jX3JlbGF0aXZlX3BhdGggIiRpbnN0YWxsX2xpYmRpciIgIiRiaW5kaXIiCisJCXRkbG5hbWU9JGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQkZGxuYW1lCisJICAgICAgZWxzZQorCQkjIE90aGVyd2lzZSBmYWxsIGJhY2sgb24gaGV1cmlzdGljLgorCQl0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lCisJICAgICAgZmkKKwkgICAgICA7OwogCSAgZXNhYwogCSAgJEVDSE8gPiAkb3V0cHV0ICJcCiAjICRvdXRwdXRuYW1lIC0gYSBsaWJ0b29sIGxpYnJhcnkgZmlsZQpAQCAtODE4Miw3ICs5NDQwLDcgQEAKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKIH0KIAoteyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgoreyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCiAgICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9CiAKIApAQCAtODIwMiw5ICs5NDYwLDkgQEAKICAgICBmb3IgYXJnCiAgICAgZG8KICAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgLWYpIFJNPSIkUk0gJGFyZyI7IHJtZm9yY2U9eWVzIDs7Ci0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OwotICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OworICAgICAgLWYpIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyI7IHJtZm9yY2U9eWVzIDs7CisgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OworICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OwogICAgICAgZXNhYwogICAgIGRvbmUKIApAQCAtODIxMywyNCArOTQ3MSwyMyBAQAogCiAgICAgcm1kaXJzPQogCi0gICAgb3JpZ29iamRpcj0iJG9iamRpciIKICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCiAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKICAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgotCW9iamRpcj0iJG9yaWdvYmpkaXIiCisJb2Rpcj0iJG9iamRpciIKICAgICAgIGVsc2UKLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCisJb2Rpcj0iJGRpci8kb2JqZGlyIgogICAgICAgZmkKICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgogICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKIAotICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KKyAgICAgICMgUmVtZW1iZXIgb2RpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCisgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KIAljYXNlICIgJHJtZGlycyAiIGluCi0JICAqIiAkb2JqZGlyICIqKSA7OwotCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7CisJICAqIiAkb2RpciAiKikgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHJtZGlycyAiICRvZGlyIiA7OwogCWVzYWMKICAgICAgIGZpCiAKQEAgLTgyNTYsMTggKzk1MTMsMTcgQEAKIAogCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KIAkgIGZvciBuIGluICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCiAJICBkb25lCi0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgogCi0JICBjYXNlICIkbW9kZSIgaW4KKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KIAkgIGNsZWFuKQotCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCisJICAgIGNhc2UgIiAkbGlicmFyeV9uYW1lcyAiIGluCiAJICAgICoiICRkbG5hbWUgIiopIDs7Ci0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKKwkgICAgKikgdGVzdCAtbiAiJGRsbmFtZSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUiIDs7CiAJICAgIGVzYWMKLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfWkiCiAJICAgIDs7CiAJICB1bmluc3RhbGwpCiAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgpAQCAtODI5NSwxOSArOTU1MSwxOSBAQAogCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCiAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKIAkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgogCSAgZmkKIAogCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgogCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgogCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kbm9uX3BpY19vYmplY3QiCiAJICBmaQogCWZpCiAJOzsKIAogICAgICAgKikKLQlpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbiA7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCiAJICBub2V4ZW5hbWU9JG5hbWUKIAkgIGNhc2UgJGZpbGUgaW4KIAkgICouZXhlKQpAQCAtODMxNyw3ICs5NTczLDcgQEAKIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgICAgIyAkZmlsZSB3aXRoIC5leGUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBybWZpbGVzLAogCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZmlsZSIKIAkgICAgOzsKIAkgIGVzYWMKIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgpAQCAtODMyNiw3ICs5NTgyLDcgQEAKIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKIAkgICAgICByZWxpbmtfY29tbWFuZD0KIAkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKIAkgICAgZWxzZQogCSAgICAgIHJlbGlua19jb21tYW5kPQogCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQpAQCAtODMzNCwxMiArOTU5MCwxMiBAQAogCiAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CiAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9Uy4ke29iamV4dH0iCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCiAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSRuYW1lIgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKIAkgICAgZmkKIAkgICAgaWYgdGVzdCAiWCRub2V4ZW5hbWUiICE9ICJYJG5hbWUiIDsgdGhlbgotCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgogCSAgICBmaQogCSAgZmkKIAlmaQpAQCAtODM0Nyw3ICs5NjAzLDYgQEAKICAgICAgIGVzYWMKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJwogICAgIGRvbmUKLSAgICBvYmpkaXI9IiRvcmlnb2JqZGlyIgogCiAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCiAgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbwpAQCAtODM1OSwxNiArOTYxNCwxNiBAQAogICAgIGV4aXQgJGV4aXRfc3RhdHVzCiB9CiAKLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCit7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCiAgICAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KIAotdGVzdCAteiAiJG1vZGUiICYmIHsKK3Rlc3QgLXogIiRvcHRfbW9kZSIgJiYgewogICBoZWxwPSIkZ2VuZXJpY19oZWxwIgogICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgogfQogCiB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKLSAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgorICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgogCiBpZiB0ZXN0IC1uICIkZXhlY19jbWQiOyB0aGVuCiAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9hc21jZmkubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2FzbWNmaS5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmY3M2EwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9hc21jZmkubTQKQEAgLTAsMCArMSwxMyBAQAorQUNfREVGVU4oW0dDQ19BU19DRklfUFNFVURPX09QXSwKK1tBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnRdLAorICAgIGdjY19jdl9hc19jZmlfcHNldWRvX29wLCBbCisgICAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgorICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuY2ZpX3N0YXJ0cHJvY1xuXHQuY2ZpX2VuZHByb2MiKTtdLCwKKwkJICAgW2djY19jdl9hc19jZmlfcHNldWRvX29wPXllc10sCisJCSAgIFtnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ub10pCisgXSkKKyBpZiB0ZXN0ICJ4JGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9BU19DRklfUFNFVURPX09QLCAxLAorCSAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmNmaV8qIGRpcmVjdGl2ZXMuXSkKKyBmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfYXBwZW5kX2ZsYWcubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2FwcGVuZF9mbGFnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMzhiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2FwcGVuZF9mbGFnLm00CkBAIC0wLDAgKzEsNjkgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfYXBwZW5kX2ZsYWcuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9BUFBFTkRfRkxBRyhGTEFHLCBbRkxBR1MtVkFSSUFCTEVdKQorIworIyBERVNDUklQVElPTgorIworIyAgIEZMQUcgaXMgYXBwZW5kZWQgdG8gdGhlIEZMQUdTLVZBUklBQkxFIHNoZWxsIHZhcmlhYmxlLCB3aXRoIGEgc3BhY2UKKyMgICBhZGRlZCBpbiBiZXR3ZWVuLgorIworIyAgIElmIEZMQUdTLVZBUklBQkxFIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxhbmd1YWdlJ3MgZmxhZ3MgKGUuZy4KKyMgICBDRkxBR1MpIGlzIHVzZWQuICBGTEFHUy1WQVJJQUJMRSBpcyBub3QgY2hhbmdlZCBpZiBpdCBhbHJlYWR5IGNvbnRhaW5zCisjICAgRkxBRy4gIElmIEZMQUdTLVZBUklBQkxFIGlzIHVuc2V0IGluIHRoZSBzaGVsbCwgaXQgaXMgc2V0IHRvIGV4YWN0bHkKKyMgICBGTEFHLgorIworIyAgIE5PVEU6IEltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEFYX0NGTEFHU19HQ0NfT1BUSU9OLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDExIE1hYXJ0ZW4gQm9zbWFucyA8bWtib3NtYW5zQGdtYWlsLmNvbT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMgorCitBQ19ERUZVTihbQVhfQVBQRU5EX0ZMQUddLAorW0FDX1BSRVJFUSgyLjU5KWRubCBmb3IgX0FDX0xBTkdfUFJFRklYCitBU19WQVJfUFVTSERFRihbRkxBR1NdLCBbbTRfZGVmYXVsdCgkMixfQUNfTEFOR19QUkVGSVhbRkxBR1NdKV0pZG5sCitBU19WQVJfU0VUX0lGKEZMQUdTLAorICBbY2FzZSAiIEFTX1ZBUl9HRVQoRkxBR1MpICIgaW4KKyAgICAqIiAkMSAiKikKKyAgICAgIEFDX1JVTl9MT0coWzogRkxBR1MgYWxyZWFkeSBjb250YWlucyAkMV0pCisgICAgICA7OworICAgICopCisgICAgICBBQ19SVU5fTE9HKFs6IEZMQUdTPSIkRkxBR1MgJDEiXSkKKyAgICAgIEFTX1ZBUl9TRVQoRkxBR1MsIFsiQVNfVkFSX0dFVChGTEFHUykgJDEiXSkKKyAgICAgIDs7CisgICBlc2FjXSwKKyAgW0FTX1ZBUl9TRVQoRkxBR1MsWyIkMSJdKV0pCitBU19WQVJfUE9QREVGKFtGTEFHU10pZG5sCitdKWRubCBBWF9BUFBFTkRfRkxBRwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jY19tYXhvcHQubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NjX21heG9wdC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTc1MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jY19tYXhvcHQubTQKQEAgLTAsMCArMSwxODAgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NjX21heG9wdC5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NDX01BWE9QVAorIworIyBERVNDUklQVElPTgorIworIyAgIFRyeSB0byB0dXJuIG9uICJnb29kIiBDIG9wdGltaXphdGlvbiBmbGFncyBmb3IgdmFyaW91cyBjb21waWxlcnMgYW5kCisjICAgYXJjaGl0ZWN0dXJlcywgZm9yIHNvbWUgZGVmaW5pdGlvbiBvZiAiZ29vZCIuIChJbiBvdXIgY2FzZSwgZ29vZCBmb3IKKyMgICBGRlRXIGFuZCBob3BlZnVsbHkgZm9yIG90aGVyIHNjaWVudGlmaWMgY29kZXMuIE1vZGlmeSBhcyBuZWVkZWQuKQorIworIyAgIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aGUgZmxhZ3MgYnkgc2V0dGluZyB0aGUgQ0ZMQUdTIGVudmlyb25tZW50CisjICAgdmFyaWFibGUuIFRoZSB1c2VyIGNhbiBhbHNvIHNwZWNpZnkgLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5IGluIG9yZGVyIHRvCisjICAgZGlzYWJsZSBhbnkgb3B0aW1pemF0aW9uIGZsYWdzIHRoYXQgbWlnaHQgcmVzdWx0IGluIGEgYmluYXJ5IHRoYXQgb25seQorIyAgIHJ1bnMgb24gdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLgorIworIyAgIE5vdGUgYWxzbyB0aGF0IHRoZSBmbGFncyBhc3N1bWUgdGhhdCBBTlNJIEMgYWxpYXNpbmcgcnVsZXMgYXJlIGZvbGxvd2VkCisjICAgYnkgdGhlIGNvZGUgKGUuZy4gZm9yIGdjYydzIC1mc3RyaWN0LWFsaWFzaW5nKSwgYW5kIHRoYXQgZmxvYXRpbmctcG9pbnQKKyMgICBjb21wdXRhdGlvbnMgY2FuIGJlIHJlLW9yZGVyZWQgYXMgbmVlZGVkLgorIworIyAgIFJlcXVpcmVzIG1hY3JvczogQVhfQ0hFQ0tfQ09NUElMRV9GTEFHLCBBWF9DT01QSUxFUl9WRU5ET1IsCisjICAgQVhfR0NDX0FSQ0hGTEFHLCBBWF9HQ0NfWDg2X0NQVUlELgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDEyCisKK0FDX0RFRlVOKFtBWF9DQ19NQVhPUFRdLAorWworQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19SRVFVSVJFKFtBWF9DT01QSUxFUl9WRU5ET1JdKQorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorCitBQ19BUkdfRU5BQkxFKHBvcnRhYmxlLWJpbmFyeSwgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb3J0YWJsZS1iaW5hcnldLCBbZGlzYWJsZSBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgd291bGQgcHJvZHVjZSB1bnBvcnRhYmxlIGJpbmFyaWVzXSldLAorCWFjeF9tYXhvcHRfcG9ydGFibGU9JHdpdGh2YWwsIGFjeF9tYXhvcHRfcG9ydGFibGU9bm8pCisKKyMgVHJ5IHRvIGRldGVybWluZSAiZ29vZCIgbmF0aXZlIGNvbXBpbGVyIGZsYWdzIGlmIG5vbmUgc3BlY2lmaWVkIHZpYSBDRkxBR1MKK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgIT0gInNldCI7IHRoZW4KKyAgQ0ZMQUdTPSIiCisgIGNhc2UgJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIGluCisgICAgZGVjKSBDRkxBR1M9Ii1uZXdjIC13MCAtTzUgLWFuc2lfYWxpYXMgLWFuc2lfYXJncyAtZnBfcmVvcmRlciAtdHVuZSBob3N0IgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtYXJjaCBob3N0IgorICAgICAgICAgZmk7OworCisgICAgc3VuKSBDRkxBR1M9Ii1uYXRpdmUgLWZhc3QgLXhPNSAtZGFsaWduIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyAteGFyY2g9Z2VuZXJpYyIKKyAgICAgICAgIGZpOzsKKworICAgIGhwKSAgQ0ZMQUdTPSIrT2FsbCArT3B0cnNfYW5zaSArRFNuYXRpdmUiCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuCisJICAgQ0ZMQUdTPSIkQ0ZMQUdTICtEQXBvcnRhYmxlIgorCSBmaTs7CisKKyAgICBpYm0pIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKyAgICAgICAgICAgeGxjX29wdD0iLXFhcmNoPWF1dG8gLXF0dW5lPWF1dG8iCisJIGVsc2UKKyAgICAgICAgICAgeGxjX29wdD0iLXF0dW5lPWF1dG8iCisJIGZpCisgICAgICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoJHhsY19vcHQsCisJCUNGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13ICR4bGNfb3B0IiwKKyAgICAgICAgICAgICAgIFtDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgWW91IHNlZW0gdG8gaGF2ZSB0aGUgSUJNICBDIGNvbXBpbGVyLiAgSXQgaXMgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHJlY29tbWVuZGVkIGZvciBiZXN0IHBlcmZvcm1hbmNlIHRoYXQgeW91IHVzZTogICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICBDRkxBR1M9LU8zIC1xYXJjaD14eHggLXF0dW5lPXh4eCAtcWFuc2lhbGlhcyAtdyAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgXl5eICAgICAgICBeXl4gICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICB3aGVyZSB4eHggaXMgcHdyMiwgcHdyMywgNjA0LCBvciB3aGF0ZXZlciBraW5kIG9mICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgQ1BVIHlvdSBoYXZlLiAgKFNldCB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhci4gICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIGFuZCByZS1ydW4gY29uZmlndXJlLikgIEZvciBtb3JlIGluZm8sIG1hbiBjYy4gICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiXSkKKyAgICAgICAgIDs7CisKKyAgICBpbnRlbCkgQ0ZMQUdTPSItTzMgLWFuc2lfYWxpYXMiCisJaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorCSAgaWNjX2FyY2hmbGFnPXVua25vd24KKwkgIGljY19mbGFncz0iIgorCSAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgaTY4Nip8eDg2XzY0KikKKyAgICAgICAgICAgICAgIyBpY2MgYWNjZXB0cyBnY2MgYXNzZW1ibHkgc3ludGF4LCBzbyB0aGVzZSBzaG91bGQgd29yazoKKwkgICAgICBBWF9HQ0NfWDg2X0NQVUlEKDApCisgICAgICAgICAgICAgIEFYX0dDQ19YODZfQ1BVSUQoMSkKKwkgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4gIyBzZWUgQVhfR0NDX0FSQ0hGTEFHCisgICAgICAgICAgICAgICAgKjo3NTZlNjU0NzoqOiopICMgSW50ZWwKKyAgICAgICAgICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorICAgICAgICAgICAgICAgICAgICAqNmE/OipbWzIzNF1dOio6KnwqNltbNzg5Yl1dPzoqOio6KikgaWNjX2ZsYWdzPSIteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmYzW1szNDddXToqOio6KnwqZjRbMTM0N106KjoqOiopIGljY19mbGFncz0iLXhQIC14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmPz86KjoqOiopIGljY19mbGFncz0iLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19mbGFncyIgIT0geDsgdGhlbgorICAgICAgICAgICAgZm9yIGZsYWcgaW4gJGljY19mbGFnczsgZG8KKyAgICAgICAgICAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCRmbGFnLCBbaWNjX2FyY2hmbGFnPSRmbGFnOyBicmVha10pCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBpY2MgYXJjaGl0ZWN0dXJlIGZsYWddKQorCSAgQUNfTVNHX1JFU1VMVCgkaWNjX2FyY2hmbGFnKQorICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2FyY2hmbGFnIiAhPSB4dW5rbm93bjsgdGhlbgorICAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRpY2NfYXJjaGZsYWciCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKwk7OworCisgICAgZ251KQorICAgICAjIGRlZmF1bHQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBnY2Mgb24gYWxsIHN5c3RlbXMKKyAgICAgQ0ZMQUdTPSItTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKKyAgICAgIyAtbWFsaWduLWRvdWJsZSBmb3IgeDg2IHN5c3RlbXMKKyAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKC1tYWxpZ24tZG91YmxlLCBDRkxBR1M9IiRDRkxBR1MgLW1hbGlnbi1kb3VibGUiKQorCisgICAgICMgIC1mc3RyaWN0LWFsaWFzaW5nIGZvciBnY2MtMi45NSsKKyAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKC1mc3RyaWN0LWFsaWFzaW5nLAorCUNGTEFHUz0iJENGTEFHUyAtZnN0cmljdC1hbGlhc2luZyIpCisKKyAgICAgIyBub3RlIHRoYXQgd2UgZW5hYmxlICJ1bnNhZmUiIGZwIG9wdGltaXphdGlvbiB3aXRoIG90aGVyIGNvbXBpbGVycywgdG9vCisgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygtZmZhc3QtbWF0aCwgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZmFzdC1tYXRoIikKKworICAgICBBWF9HQ0NfQVJDSEZMQUcoJGFjeF9tYXhvcHRfcG9ydGFibGUpCisgICAgIDs7CisgIGVzYWMKKworICBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgorCWVjaG8gIiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBEb24ndCBrbm93IHRoZSBiZXN0IENGTEFHUyBmb3IgdGhpcyBzeXN0ZW0gICoiCisgICAgICAgIGVjaG8gIiogVXNlIC4vY29uZmlndXJlIENGTEFHUz0uLi4gdG8gc3BlY2lmeSB5b3VyIG93biBmbGFncyAqIgorCWVjaG8gIiogKG90aGVyd2lzZSwgYSBkZWZhdWx0IG9mIENGTEFHUz0tTzMgd2lsbCBiZSB1c2VkKSAgICAqIgorCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorCWVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSItTzMiCisgIGZpCisKKyAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCRDRkxBR1MsIFtdLCBbCisJZWNobyAiIgorICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBUaGUgZ3Vlc3NlZCBDRkxBR1MgZG9uJ3Qgc2VlbSB0byB3b3JrIHdpdGggICoiCisgICAgICAgIGVjaG8gIiogeW91ciBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSIiCisgIF0pCisKK2ZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NmbGFnc193YXJuX2FsbC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjJlMzdmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTQKQEAgLTAsMCArMSwxMjEgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NmbGFnc193YXJuX2FsbC5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NGTEFHU19XQVJOX0FMTCAgIFsoc2hlbGx2YXIgWyxkZWZhdWx0LCBbQS9OQV1dKV0KKyMgICBBWF9DWFhGTEFHU19XQVJOX0FMTCBbKHNoZWxsdmFyIFssZGVmYXVsdCwgW0EvTkFdXSldCisjICAgQVhfRkNGTEFHU19XQVJOX0FMTCAgWyhzaGVsbHZhciBbLGRlZmF1bHQsIFtBL05BXV0pXQorIworIyBERVNDUklQVElPTgorIworIyAgIFRyeSB0byBmaW5kIGEgY29tcGlsZXIgb3B0aW9uIHRoYXQgZW5hYmxlcyBtb3N0IHJlYXNvbmFibGUgd2FybmluZ3MuCisjCisjICAgRm9yIHRoZSBHTlUgY29tcGlsZXIgaXQgd2lsbCBiZSAtV2FsbCAoYW5kIC1hbnNpIC1wZWRhbnRpYykgVGhlIHJlc3VsdAorIyAgIGlzIGFkZGVkIHRvIHRoZSBzaGVsbHZhciBiZWluZyBDRkxBR1MsIENYWEZMQUdTLCBvciBGQ0ZMQUdTIGJ5IGRlZmF1bHQuCisjCisjICAgQ3VycmVudGx5IHRoaXMgbWFjcm8ga25vd3MgYWJvdXQgdGhlIEdDQywgU29sYXJpcywgRGlnaXRhbCBVbml4LCBBSVgsCisjICAgSFAtVVgsIElSSVgsIE5FQyBTWC01IChTdXBlci1VWCAxMCksIENyYXkgSjkwIChVbmljb3MgMTAuMC4wLjgpLCBhbmQKKyMgICBJbnRlbCBjb21waWxlcnMuICBGb3IgYSBnaXZlbiBjb21waWxlciwgdGhlIEZvcnRyYW4gZmxhZ3MgYXJlIG11Y2ggbW9yZQorIyAgIGV4cGVyaW1lbnRhbCB0aGFuIHRoZWlyIEMgZXF1aXZhbGVudHMuCisjCisjICAgIC0gJDEgc2hlbGwtdmFyaWFibGUtdG8tYWRkLXRvIDogQ0ZMQUdTLCBDWFhGTEFHUywgb3IgRkNGTEFHUworIyAgICAtICQyIGFkZC12YWx1ZS1pZi1ub3QtZm91bmQgOiBub3RoaW5nCisjICAgIC0gJDMgYWN0aW9uLWlmLWZvdW5kIDogYWRkIHZhbHVlIHRvIHNoZWxsdmFyaWFibGUKKyMgICAgLSAkNCBhY3Rpb24taWYtbm90LWZvdW5kIDogbm90aGluZworIworIyAgIE5PVEU6IFRoZXNlIG1hY3JvcyBkZXBlbmQgb24gQVhfQVBQRU5EX0ZMQUcuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMTAgUmh5cyBVbGVyaWNoIDxyaHlzLnVsZXJpY2hAZ21haWwuY29tPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMworCitBQ19ERUZVTihbQVhfRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FTX1ZBUl9QVVNIREVGKFtGTEFHU10sW19BQ19MQU5HX1BSRUZJWFtdRkxBR1NdKWRubAorQVNfVkFSX1BVU0hERUYoW1ZBUl0sW2FjX2N2X1tdX0FDX0xBTkdfQUJCUkVWW11mbGFnc193YXJuX2FsbF0pZG5sCitBQ19DQUNIRV9DSEVDSyhbbTRfaWZ2YWwoJDEsJDEsRkxBR1MpIGZvciBtYXhpbXVtIHdhcm5pbmdzXSwKK1ZBUixbVkFSPSJubywgdW5rbm93biIKK2FjX3NhdmVfW11GTEFHUz0iJFtdRkxBR1MiCitmb3IgYWNfYXJnIGRubAoraW4gIi13YXJuIGFsbCAgJSAtd2FybiBhbGwiICAgZG5sIEludGVsCisgICAiLXBlZGFudGljICAlIC1XYWxsIiAgICAgICBkbmwgR0NDCisgICAiLXhzdHJjb25zdCAlIC12IiAgICAgICAgICBkbmwgU29sYXJpcyBDCisgICAiLXN0ZDEgICAgICAlIC12ZXJib3NlIC13MCAtd2FybnByb3RvcyIgZG5sIERpZ2l0YWwgVW5peAorICAgIi1xbGFuZ2x2bD1hbnNpICUgLXFzcmNtc2cgLXFpbmZvPWFsbDpub3BwdDpub3BwYzpub29iczpub2NuZCIgZG5sIEFJWAorICAgIi1hbnNpIC1hbnNpRSAlIC1mdWxsd2FybiIgZG5sIElSSVgKKyAgICIrRVNsaXQgICAgICUgK3cxIiAgICAgICAgIGRubCBIUC1VWCBDCisgICAiLVhjICAgICAgICAlIC1wdmN0bFssXWZ1bGxtc2ciIGRubCBORUMgU1gtNSAoU3VwZXItVVggMTApCisgICAiLWggY29uZm9ybSAlIC1oIG1zZ2xldmVsIDIiIGRubCBDcmF5IEMgKFVuaWNvcykKKyAgICMKK2RvIEZMQUdTPSIkYWNfc2F2ZV9bXUZMQUdTICJgZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLCUlLiosLCcgLWUgJ3MsJSwsJ2AKKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAorICAgICAgICAgICAgICAgICAgICAgW1ZBUj1gZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLC4qJSAqLCwnYCA7IGJyZWFrXSkKK2RvbmUKK0ZMQUdTPSIkYWNfc2F2ZV9bXUZMQUdTIgorXSkKK0FTX1ZBUl9QT1BERUYoW0ZMQUdTXSlkbmwKK2Nhc2UgIi4kVkFSIiBpbgorICAgICAub2t8Lm9rLCopIG00X2lmdmFsbigkMywkMykgOzsKKyAgIC58Lm5vfC5ubywqKSBtNF9kZWZhdWx0KCQ0LFttNF9pZnZhbCgkMixbQVhfQVBQRU5EX0ZMQUcoWyQyXSwgWyQxXSldKV0pIDs7CisgICAqKSBtNF9kZWZhdWx0KCQzLFtBWF9BUFBFTkRfRkxBRyhbJFZBUl0sIFskMV0pXSkgOzsKK2VzYWMKK0FTX1ZBUl9QT1BERUYoW1ZBUl0pZG5sCitdKWRubCBBWF9GTEFHU19XQVJOX0FMTAorZG5sICBpbXBsZW1lbnRhdGlvbiB0YWN0aWNzOgorZG5sICAgdGhlIGZvci1hcmd1bWVudCBjb250YWlucyBhIGxpc3Qgb2Ygb3B0aW9ucy4gVGhlIGZpcnN0IHBhcnQgb2YKK2RubCAgIHRoZXNlIGRvZXMgb25seSBleGlzdCB0byBkZXRlY3QgdGhlIGNvbXBpbGVyIC0gdXN1YWxseSBpdCBpcworZG5sICAgYSBnbG9iYWwgb3B0aW9uIHRvIGVuYWJsZSAtYW5zaSBvciAtZXh0cmF3YXJuaW5ncy4gQWxsIG90aGVyCitkbmwgICBjb21waWxlcnMgd2lsbCBmYWlsIGFib3V0IGl0LiBUaGF0IHdhcyBuZWVkZWQgc2luY2UgYSBsb3Qgb2YKK2RubCAgIGNvbXBpbGVycyB3aWxsIGdpdmUgZmFsc2UgcG9zaXRpdmVzIGZvciBzb21lIG9wdGlvbi1zeW50YXgKK2RubCAgIGxpa2UgLVdvcHRpb24gb3IgLVhvcHRpb24gYXMgdGhleSB0aGluayBvZiBpdCBpcyBhIHBhc3MtdGhyb3VnaAorZG5sICAgdG8gbGF0ZXIgY29tcGlsZSBzdGFnZXMgb3Igc29tZXRoaW5nLiBUaGUgIiUiIGlzIHVzZWQgYXMgYQorZG5sICAgZGVsaW1pdGVyLiBBIG5vbi1vcHRpb24gY29tbWVudCBjYW4gYmUgZ2l2ZW4gYWZ0ZXIgIiUlIiBtYXJrcworZG5sICAgd2hpY2ggd2lsbCBiZSBzaG93biBidXQgbm90IGFkZGVkIHRvIHRoZSByZXNwZWN0aXZlIEMvQ1hYRkxBR1MuCisKK0FDX0RFRlVOKFtBWF9DRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FDX0xBTkdfUFVTSChbQ10pCitBWF9GTEFHU19XQVJOX0FMTChbJDFdLCBbJDJdLCBbJDNdLCBbJDRdKQorQUNfTEFOR19QT1AoW0NdKQorXSkKKworQUNfREVGVU4oW0FYX0NYWEZMQUdTX1dBUk5fQUxMXSxbZG5sCitBQ19MQU5HX1BVU0goW0MrK10pCitBWF9GTEFHU19XQVJOX0FMTChbJDFdLCBbJDJdLCBbJDNdLCBbJDRdKQorQUNfTEFOR19QT1AoW0MrK10pCitdKQorCitBQ19ERUZVTihbQVhfRkNGTEFHU19XQVJOX0FMTF0sW2RubAorQUNfTEFOR19QVVNIKFtGb3J0cmFuXSkKK0FYX0ZMQUdTX1dBUk5fQUxMKFskMV0sIFskMl0sIFskM10sIFskNF0pCitBQ19MQU5HX1BPUChbRm9ydHJhbl0pCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2E4ZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKQEAgLTAsMCArMSw3MiBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jaGVja19jb21waWxlX2ZsYWcuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoRkxBRywgW0FDVElPTi1TVUNDRVNTXSwgW0FDVElPTi1GQUlMVVJFXSwgW0VYVFJBLUZMQUdTXSkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBGTEFHIHdvcmtzIHdpdGggdGhlIGN1cnJlbnQgbGFuZ3VhZ2UncyBjb21waWxlcgorIyAgIG9yIGdpdmVzIGFuIGVycm9yLiAgKFdhcm5pbmdzLCBob3dldmVyLCBhcmUgaWdub3JlZCkKKyMKKyMgICBBQ1RJT04tU1VDQ0VTUy9BQ1RJT04tRkFJTFVSRSBhcmUgc2hlbGwgY29tbWFuZHMgdG8gZXhlY3V0ZSBvbgorIyAgIHN1Y2Nlc3MvZmFpbHVyZS4KKyMKKyMgICBJZiBFWFRSQS1GTEFHUyBpcyBkZWZpbmVkLCBpdCBpcyBhZGRlZCB0byB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGRlZmF1bHQKKyMgICBmbGFncyAoZS5nLiBDRkxBR1MpIHdoZW4gdGhlIGNoZWNrIGlzIGRvbmUuICBUaGUgY2hlY2sgaXMgdGh1cyBtYWRlIHdpdGgKKyMgICB0aGUgZmxhZ3M6ICJDRkxBR1MgRVhUUkEtRkxBR1MgRkxBRyIuICBUaGlzIGNhbiBmb3IgZXhhbXBsZSBiZSB1c2VkIHRvCisjICAgZm9yY2UgdGhlIGNvbXBpbGVyIHRvIGlzc3VlIGFuIGVycm9yIHdoZW4gYSBiYWQgZmxhZyBpcyBnaXZlbi4KKyMKKyMgICBOT1RFOiBJbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBBWF9DRkxBR1NfR0NDX09QVElPTi4gUGxlYXNlIGtlZXAgdGhpcworIyAgIG1hY3JvIGluIHN5bmMgd2l0aCBBWF9DSEVDS197UFJFUFJPQyxMSU5LfV9GTEFHLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDExIE1hYXJ0ZW4gQm9zbWFucyA8bWtib3NtYW5zQGdtYWlsLmNvbT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMgorCitBQ19ERUZVTihbQVhfQ0hFQ0tfQ09NUElMRV9GTEFHXSwKK1tBQ19QUkVSRVEoMi41OSlkbmwgZm9yIF9BQ19MQU5HX1BSRUZJWAorQVNfVkFSX1BVU0hERUYoW0NBQ0hFVkFSXSxbYXhfY3ZfY2hlY2tfW11fQUNfTEFOR19BQkJSRVZbXWZsYWdzXyQ0XyQxXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIF9BQ19MQU5HIGNvbXBpbGVyIGFjY2VwdHMgJDFdLCBDQUNIRVZBUiwgWworICBheF9jaGVja19zYXZlX2ZsYWdzPSRbXV9BQ19MQU5HX1BSRUZJWFtdRkxBR1MKKyAgX0FDX0xBTkdfUFJFRklYW11GTEFHUz0iJFtdX0FDX0xBTkdfUFJFRklYW11GTEFHUyAkNCAkMSIKKyAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgpXSwKKyAgICBbQVNfVkFSX1NFVChDQUNIRVZBUixbeWVzXSldLAorICAgIFtBU19WQVJfU0VUKENBQ0hFVkFSLFtub10pXSkKKyAgX0FDX0xBTkdfUFJFRklYW11GTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFnc10pCitBU19JRihbdGVzdCB4IkFTX1ZBUl9HRVQoQ0FDSEVWQVIpIiA9IHh5ZXNdLAorICBbbTRfZGVmYXVsdChbJDJdLCA6KV0sCisgIFttNF9kZWZhdWx0KFskM10sIDopXSkKK0FTX1ZBUl9QT1BERUYoW0NBQ0hFVkFSXSlkbmwKK10pZG5sIEFYX0NIRUNLX0NPTVBJTEVfRkxBR1MKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb21waWxlcl92ZW5kb3IubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNlMzJlYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00CkBAIC0wLDAgKzEsODQgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NvbXBpbGVyX3ZlbmRvci5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NPTVBJTEVSX1ZFTkRPUgorIworIyBERVNDUklQVElPTgorIworIyAgIERldGVybWluZSB0aGUgdmVuZG9yIG9mIHRoZSBDL0MrKyBjb21waWxlciwgZS5nLiwgZ251LCBpbnRlbCwgaWJtLCBzdW4sCisjICAgaHAsIGJvcmxhbmQsIGNvbWVhdSwgZGVjLCBjcmF5LCBrYWksIGxjYywgbWV0cm93ZXJrcywgc2dpLCBtaWNyb3NvZnQsCisjICAgd2F0Y29tLCBldGMuIFRoZSB2ZW5kb3IgaXMgcmV0dXJuZWQgaW4gdGhlIGNhY2hlIHZhcmlhYmxlCisjICAgJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIGZvciBDIGFuZCAkYXhfY3ZfY3h4X2NvbXBpbGVyX3ZlbmRvciBmb3IgQysrLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDExCisKK0FDX0RFRlVOKFtBWF9DT01QSUxFUl9WRU5ET1JdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgX0FDX0xBTkcgY29tcGlsZXIgdmVuZG9yXSwgYXhfY3ZfW11fQUNfTEFOR19BQkJSRVZbXV9jb21waWxlcl92ZW5kb3IsCisgIFsjIG5vdGU6IGRvbid0IGNoZWNrIGZvciBnY2MgZmlyc3Qgc2luY2Ugc29tZSBvdGhlciBjb21waWxlcnMgZGVmaW5lIF9fR05VQ19fCisgIHZlbmRvcnM9ImludGVsOiAgICAgX19JQ0MsX19FQ0MsX19JTlRFTF9DT01QSUxFUgorICAgICAgICAgICBpYm06ICAgICAgIF9feGxjX18sX194bENfXyxfX0lCTUNfXyxfX0lCTUNQUF9fCisgICAgICAgICAgIHBhdGhzY2FsZTogX19QQVRIQ0NfXyxfX1BBVEhTQ0FMRV9fCisgICAgICAgICAgIGNsYW5nOiAgICAgX19jbGFuZ19fCisgICAgICAgICAgIGdudTogICAgICAgX19HTlVDX18KKyAgICAgICAgICAgc3VuOiAgICAgICBfX1NVTlBST19DLF9fU1VOUFJPX0NDCisgICAgICAgICAgIGhwOiAgICAgICAgX19IUF9jYyxfX0hQX2FDQworICAgICAgICAgICBkZWM6ICAgICAgIF9fREVDQyxfX0RFQ0NYWCxfX0RFQ0NfVkVSLF9fREVDQ1hYX1ZFUgorICAgICAgICAgICBib3JsYW5kOiAgIF9fQk9STEFORENfXyxfX1RVUkJPQ19fCisgICAgICAgICAgIGNvbWVhdTogICAgX19DT01PX18KKyAgICAgICAgICAgY3JheTogICAgICBfQ1JBWUMKKyAgICAgICAgICAga2FpOiAgICAgICBfX0tDQworICAgICAgICAgICBsY2M6ICAgICAgIF9fTENDX18KKyAgICAgICAgICAgc2dpOiAgICAgICBfX3NnaSxzZ2kKKyAgICAgICAgICAgbWljcm9zb2Z0OiBfTVNDX1ZFUgorICAgICAgICAgICBtZXRyb3dlcmtzOiBfX01XRVJLU19fCisgICAgICAgICAgIHdhdGNvbTogICAgX19XQVRDT01DX18KKyAgICAgICAgICAgcG9ydGxhbmQ6ICBfX1BHSQorICAgICAgICAgICB1bmtub3duOiAgIFVOS05PV04iCisgIGZvciB2ZW50ZXN0IGluICR2ZW5kb3JzOyBkbworICAgIGNhc2UgJHZlbnRlc3QgaW4KKyAgICAgICo6KSB2ZW5kb3I9JHZlbnRlc3Q7IGNvbnRpbnVlIDs7CisgICAgICAqKSAgdmVuY3BwPSJkZWZpbmVkKCJgZWNobyAkdmVudGVzdCB8IHNlZCAncy8sLykgfHwgZGVmaW5lZCgvZydgIikiIDs7CisgICAgZXNhYworICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oLFsKKyAgICAgICNpZiAhKCR2ZW5jcHApCisgICAgICAgIHRoaXNpc2FuZXJyb3I7CisgICAgICAjZW5kaWYKKyAgICBdKV0sIFticmVha10pCisgIGRvbmUKKyAgYXhfY3ZfW11fQUNfTEFOR19BQkJSRVZbXV9jb21waWxlcl92ZW5kb3I9YGVjaG8gJHZlbmRvciB8IGN1dCAtZDogLWYxYAorIF0pCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb25maWd1cmVfYXJncy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcyNmIxYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQKQEAgLTAsMCArMSw3MCBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NvbmZpZ3VyZV9hcmdzLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ09ORklHVVJFX0FSR1MKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBIZWxwZXIgbWFjcm8gZm9yIEFYX0VOQUJMRV9CVUlMRERJUi4KKyMKKyMgICBUaGUgdHJhZGl0aW9uYWwgd2F5IG9mIHN0YXJ0aW5nIGEgc3ViZGlyLWNvbmZpZ3VyZSBpcyBydW5uaW5nIHRoZSBzY3JpcHQKKyMgICB3aXRoICR7MSsiJEAifSBidXQgc2luY2UgYXV0b2NvbmYgMi42MCB0aGlzIGlzIGJyb2tlbi4gSW5zdGVhZCB3ZSBoYXZlCisjICAgdG8gcmVseSBvbiBldmFsJ2luZyAkYWNfY29uZmlndXJlX2FyZ3MgaG93ZXZlciBzb21lIG9sZCBhdXRvY29uZgorIyAgIHZlcnNpb25zIGRvIG5vdCBwcm92aWRlIHRoYXQuIFRvIGVuc3VyZSBtYXhpbXVtIHBvcnRhYmlsaXR5IG9mIGF1dG9jb25mCisjICAgZXh0ZW5zaW9uIG1hY3JvcyB0aGlzIGhlbHBlciBjYW4gYmUgQUNfUkVRVUlSRSdkIHNvIHRoYXQKKyMgICAkYWNfY29uZmlndXJlX2FyZ3Mgd2lsbCBhbHN3YXlzIGJlIHByZXNlbnQuCisjCisjICAgU2FkbHksIHRoZSB0cmFkaXRpb25hbCAiZXhlYyAkU0hFTEwiIG9mIHRoZSBlbmFibGVfYnVpbGRkaXIgbWFjcm9zIGlzCisjICAgc3BvaWxlZCBub3cgYW5kIG11c3QgYmUgcmVwbGFjZWQgYnkgImV2YWwgKyBleGl0ICQ/Ii4KKyMKKyMgICBFeGFtcGxlOgorIworIyAgICAgQUNfREVGVU4oW0FYX0VOQUJMRV9TVUJESVJdLFtkbmwKKyMgICAgICAgQUNfUkVRVUlSRShbQVhfQ09ORklHVVJFX0FSR1NdKWRubAorIyAgICAgICBldmFsICRTSEVMTCAkYWNfY29uZmlndXJlX2FyZ3MgfHwgZXhpdCAkPworIyAgICAgICAuLi5dKQorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDkKKworQUNfREVGVU4oW0FYX0NPTkZJR1VSRV9BUkdTXSxbCisgICAjIFskXUAgaXMgdW5zYWJsZSBpbiAyLjYwKyBidXQgZWFybGllciBhdXRvY29uZiBoYWQgbm8gYWNfY29uZmlndXJlX2FyZ3MKKyAgIGlmIHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3Mrc2V0fSIgIT0gInNldCIgOyB0aGVuCisgICAgICBhY19jb25maWd1cmVfYXJncz0KKyAgICAgIGZvciBhY19hcmcgaW4gJHsxKyJbJF1AIn07IGRvCisgICAgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIKKyAgICAgIGRvbmUKKyAgIGZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2VuYWJsZV9idWlsZGRpci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmI4NzMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQKQEAgLTAsMCArMSwzMDAgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2VuYWJsZV9idWlsZGRpci5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0VOQUJMRV9CVUlMRERJUiBbKGRpcnN0cmluZy1vci1jb21tYW5kIFssTWFrZWZpbGUubWsgWywtYWxsXV0pXQorIworIyBERVNDUklQVElPTgorIworIyAgIElmIHRoZSBjdXJyZW50IGNvbmZpZ3VyZSB3YXMgcnVuIHdpdGhpbiB0aGUgc3JjZGlyIHRoZW4gd2UgbW92ZSBhbGwKKyMgICBjb25maWd1cmUtZmlsZXMgaW50byBhIHN1YmRpciBhbmQgbGV0IHRoZSBjb25maWd1cmUgc3RlcHMgY29udGludWUKKyMgICB0aGVyZS4gV2UgcHJvdmlkZSBhbiBvcHRpb24gLS1kaXNhYmxlLWJ1aWxkZGlyIHRvIHN1cHByZXNzIHRoZSBtb3ZlIGludG8KKyMgICBhIHNlcGFyYXRlIGJ1aWxkZGlyLgorIworIyAgIERlZmF1bHRzOgorIworIyAgICAgJDEgPSAkaG9zdCAob3ZlcnJpZGRlbiB3aXRoICRIT1NUKQorIyAgICAgJDIgPSBNYWtlZmlsZS5taworIyAgICAgJDMgPSAtYWxsCisjCisjICAgVGhpcyBtYWNybyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgQU1fSU5JVF9BVVRPTUFLRS4gSXQgY3JlYXRlcyBhIGRlZmF1bHQKKyMgICB0b3BsZXZlbCBzcmNkaXIgTWFrZWZpbGUgZnJvbSB0aGUgaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIGNyZWF0ZWQKKyMgICB0b3BsZXZlbCBidWlsZGRpciBNYWtlZmlsZS4gSXQganVzdCBjb3BpZXMgdGhlIHZhcmlhYmxlcyBhbmQKKyMgICBydWxlLXRhcmdldHMsIGVhY2ggZXh0ZW5kZWQgd2l0aCBhIGRlZmF1bHQgcnVsZS1leGVjdXRpb24gdGhhdCByZWN1cnNlcworIyAgIGludG8gdGhlIGJ1aWxkIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCAiSE9TVCIuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlCisjICAgYXV0by1kZWN0aW9uIHRocm91Z2ggYGNvbmZpZy5ndWVzc2AgYW5kIGJ1aWxkLXRpbWUgb2YgY291cnNlLCBhcyBpbgorIworIyAgICAgbWFrZSBIT1NUPWkzODYtbWluZ3ctY3Jvc3MKKyMKKyMgICB3aGljaCBjYW4gb2YgY291cnNlIHNldCBhdCBjb25maWd1cmUgdGltZSBhcyB3ZWxsIHVzaW5nCisjCisjICAgICBjb25maWd1cmUgLS1ob3N0PWkzODYtbWluZ3ctY3Jvc3MKKyMKKyMgICBBZnRlciB0aGUgZGVmYXVsdCBoYXMgYmVlbiBjcmVhdGVkLCBhZGRpdGlvbmFsIHJ1bGVzIGNhbiBiZSBhcHBlbmRlZAorIyAgIHRoYXQgd2lsbCBub3QganVzdCByZWN1cnNlIGludG8gdGhlIHN1YmRpcmVjdG9yaWVzIGFuZCBvbmx5IGV2ZXIgZXhpc3QKKyMgICBpbiB0aGUgc3JjZGlyIHRvcGxldmVsIG1ha2VmaWxlIC0gdGhlc2UgcGFydHMgYXJlIHJlYWQgZnJvbSB0aGUgJDIgPQorIyAgIE1ha2VmaWxlLm1rIGZpbGUKKyMKKyMgICBUaGUgYXV0b21hdGljIHJ1bGVzIGFyZSB1c3VhbGx5IHNjYW5uaW5nIHRoZSB0b3BsZXZlbCBNYWtlZmlsZSBmb3IgbGluZXMKKyMgICBsaWtlICcjIyMjICRob3N0IHwkYnVpbGRkaXInIHRvIHJlY29nbml6ZSB0aGUgcGxhY2Ugd2hlcmUgdG8gcmVjdXJzZQorIyAgIGludG8uIFVzdWFsbHksIHRoZSBsYXN0IG9uZSBpcyB0aGUgb25seSBvbmUgdXNlZC4gSG93ZXZlciwgYWxtb3N0IGFsbAorIyAgIHRhcmdldHMgaGF2ZSBhbiBhZGRpdGlvbmFsICIqLWFsbCIgcnVsZSB3aGljaCBtYWtlcyB0aGUgc2NyaXB0IHRvCisjICAgcmVjdXJzZSBpbnRvIF9hbGxfIHZhcmlhbnRzIG9mIHRoZSBjdXJyZW50IEhPU1QgKCEhKSBzZXR0aW5nLiBUaGUgIi1hbGwiCisjICAgc3VmZml4IGNhbiBiZSBvdmVycmlkZW4gZm9yIHRoZSBtYWNybyBhcyB3ZWxsLgorIworIyAgIGEgc3BlY2lhbCBydWxlIGlzIG9ubHkgZ2l2ZW4gZm9yIHRoaW5ncyBsaWtlICJkaXN0IiB0aGF0IHdpbGwgY29weSB0aGUKKyMgICB0YXJiYWxsIGZyb20gdGhlIGJ1aWxkZGlyIHRvIHRoZSBzb3VyY2VkaXIgKG9yICQoUFVCKSkgZm9yIHJlYXNvbiBvZgorIyAgIGNvbnZlbmllbmNlLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA5IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA5IEFsYW4gSmVua2lucyA8YWxhbi1qZW5raW5zQHR1ZmZtYWlsLmNvLnVrPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAyMworCitBQ19ERUZVTihbQVhfRU5BQkxFX0JVSUxERElSXSxbCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pW11kbmwKK0FDX1JFUVVJUkUoW0FYX0NPTkZJR1VSRV9BUkdTXSlbXWRubAorQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKVtdZG5sCitBQ19CRUZPUkUoWyQwXSxbQU1fSU5JVF9BVVRPTUFLRV0pZG5sCitBU19WQVJfUFVTSERFRihbU1VCXSxbYXhfZW5hYmxlX2J1aWxkZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtBVVhdLFtheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTRURdLFtheF9lbmFibGVfYnVpbGRkaXJfc2VkXSlkbmwKK1NVQj0iLiIKK0FDX0FSR19FTkFCTEUoW2J1aWxkZGlyXSwgQVNfSEVMUF9TVFJJTkcoCisgIFstLWRpc2FibGUtYnVpbGRkaXJdLFtkaXNhYmxlIGF1dG9tYXRpYyBidWlsZCBpbiBzdWJkaXIgb2Ygc291cmNlc10pCisgICxbU1VCPSIkZW5hYmxldmFsIl0sIFtTVUI9ImF1dG8iXSkKK2lmIHRlc3QgIi4kYWNfc3JjZGlyX2RlZmF1bHRlZCIgIT0gIi5ubyIgOyB0aGVuCitpZiB0ZXN0ICIuJHNyY2RpciIgPSAiLi4iIDsgdGhlbgorICBpZiB0ZXN0IC1mIGNvbmZpZy5zdGF0dXMgOyB0aGVuCisgICAgQUNfTVNHX05PVElDRSh0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCkKKyAgZWxzZQorICAgIHRlc3QgIi4kU1VCIiA9ICIuIiAgJiYgU1VCPSIuIgorICAgIHRlc3QgIi4kU1VCIiA9ICIubm8iICAmJiBTVUI9Ii4iCisgICAgdGVzdCAiLiRUQVJHRVQiID0gIi4iICYmIFRBUkdFVD0iJHRhcmdldCIKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLmF1dG8iICYmIFNVQj0ibTRfaWZ2YWwoWyQxXSwgWyQxXSxbJFRBUkdFVF0pIgorICAgIGlmIHRlc3QgIi4kU1VCIiAhPSAiLi4iIDsgdGhlbiAgICAjIHdlIGtub3cgd2hlcmUgdG8gZ28gYW5kCisgICAgICBBU19NS0RJUl9QKFskU1VCXSkKKyAgICAgIGVjaG8gX18uJFNVQi5fXyA+ICRTVUIvY29uZnRlc3QudG1wCisgICAgICBjZCAkU1VCCisgICAgICBpZiBncmVwIF9fLiRTVUIuX18gY29uZnRlc3QudG1wID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHJtIGNvbmZ0ZXN0LnRtcAorICAgICAgICBBQ19NU0dfUkVTVUxUKFtjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciAiLi8kU1VCIl0pCisgICAgICBlbHNlCisgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGNoYW5nZSB0byBkZWZhdWx0IGJ1aWxkZGlyICIuLyRTVUIiXSkKKyAgICAgIGZpCisgICAgICBzcmNkaXI9YGVjaG8gIiRTVUIiIHwKKyAgICAgICAgICAgICAgc2VkIC1lICdzLF5cLi8sLDtzLFtbXi9dXSQsJi8sO3MsW1teL11dKi8sLi4vLGc7cyxbWy9dXSQsLDsnYAorICAgICAgIyBnb2luZyB0byByZXN0YXJ0IGZyb20gc3ViZGlyZWN0b3J5IGxvY2F0aW9uCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLmxvZyAgICYmIG12ICRzcmNkaXIvY29uZmlnLmxvZyAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mZGVmcy5oICAgJiYgbXYgJHNyY2Rpci9jb25mZGVmcy5oICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAmJiBtdiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvJGNhY2hlX2ZpbGUgICYmIG12ICRzcmNkaXIvJGNhY2hlX2ZpbGUgIC4KKyAgICAgIEFDX01TR19SRVNVTFQoLi4uLmV4ZWMgJFNIRUxMICRzcmNkaXIvWyRdMCAiLS1zcmNkaXI9JHNyY2RpciIgIi0tZW5hYmxlLWJ1aWxkZGlyPSRTVUIiICR7MSsiWyRdQCJ9KQorICAgICAgY2FzZSAiWyRdMCIgaW4gIyByZXN0YXJ0CisgICAgICAgWy9cXF0qKSBldmFsICRTSEVMTCAiJ1skXTAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRTVUInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgICAqKSBldmFsICRTSEVMTCAiJyRzcmNkaXIvWyRdMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JFNVQiciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgZXNhYyA7IGV4aXQgJD8KKyAgICBmaQorICBmaQorZmkgZmkKK3Rlc3QgIi4kU1VCIiA9ICIuYXV0byIgJiYgU1VCPSIuIgorZG5sIGFjX3BhdGhfcHJvZyB1c2VzICJzZXQgZHVtbXkiIHRvIG92ZXJyaWRlICRAIHdoaWNoIHdvdWxkIGRlZmVhdCB0aGUgImV4ZWMiCitBQ19QQVRIX1BST0coU0VELGdzZWQgc2VkLCBzZWQpCitBVVg9IiRhbV9hdXhfZGlyIgorQVNfVkFSX1BPUERFRihbU0VEXSlkbmwKK0FTX1ZBUl9QT1BERUYoW0FVWF0pZG5sCitBU19WQVJfUE9QREVGKFtTVUJdKWRubAorQUNfQ09ORklHX0NPTU1BTkRTKFtidWlsZGlyXSxbZG5sIC4uLi4uLi4uLi4uLi4uIGNvbmZpZy5zdGF0dXMgLi4uLi4uLi4uLi4uLi4KK0FTX1ZBUl9QVVNIREVGKFtTVUJdLFtheF9lbmFibGVfYnVpbGRkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1RPUF0sW3RvcF9zcmNkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NSQ10sW2FjX3RvcF9zcmNkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW0FVWF0sW2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NFRF0sW2F4X2VuYWJsZV9idWlsZGRpcl9zZWRdKWRubAorcHVzaGRlZihbRU5EXSxbTWFrZWZpbGUubWtdKWRubAorcHVzaGRlZihbX0FMTF0sW2lmZWxzZShbJDNdLCxbLWFsbF0sWyQzXSldKWRubAorICBTUkM9IiRheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyIgorICBpZiB0ZXN0ICIuJFNVQiIgPSAiLi4iIDsgdGhlbgorICAgIGlmIHRlc3QgLWYgIiRUT1AvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgQUNfTVNHX05PVElDRShbc2tpcHBpbmcgVE9QL01ha2VmaWxlIC0gbGVmdCB1bnRvdWNoZWRdKQorICAgIGVsc2UKKyAgICAgIEFDX01TR19OT1RJQ0UoW3NraXBwaW5nIFRPUC9NYWtlZmlsZSAtIG5vdCBjcmVhdGVkXSkKKyAgICBmaQorICBlbHNlCisgICAgaWYgdGVzdCAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBhPWBncmVwICJeVkVSU0lPTiAiICIkU1JDL01ha2VmaWxlImAgOyBiPWBncmVwICJeVkVSU0lPTiAiIE1ha2VmaWxlYAorICAgICAgdGVzdCAiJGEiICE9ICIkYiIgJiYgcm0gIiRTUkMvTWFrZWZpbGUiCisgICAgZmkKKyAgICBpZiB0ZXN0IC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKwllY2hvICIkU1JDL01ha2VmaWxlIDogJFNSQy9NYWtlZmlsZS5pbiIgPiAkdG1wL2NvbmZ0ZW1wLm1rCisJZWNobyAiCVtdQCBlY2hvICdSRU1PVkVELCwsJyA+XCRbXUAiID4+ICR0bXAvY29uZnRlbXAubWsKKyAgICAgIGV2YWwgIiR7TUFLRS1tYWtlfSAtZiAkdG1wL2NvbmZ0ZW1wLm1rIDI+L2Rldi9udWxsID4vZGV2L251bGwiCisgICAgICBpZiBncmVwICdeUkVNT1ZFRCwsLCcgIiRTUkMvTWFrZWZpbGUiID4vZGV2L251bGwKKyAgICAgIHRoZW4gcm0gJFNSQy9NYWtlZmlsZSA7IGZpCisgICAgICBjcCAkdG1wL2NvbmZ0ZW1wLm1rICRTUkMvbWFrZWZpbGVzLm1rfiAgICAgICMjIERFQlVHR0lORworICAgIGZpCisgICAgaWYgdGVzdCAhIC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW2NyZWF0ZSBUT1AvTWFrZWZpbGUgZ3Vlc3NlZCBmcm9tIGxvY2FsIE1ha2VmaWxlXSkKKyAgICAgIHg9J2AnIDsgY2F0ID4kdG1wL2NvbmZ0ZW1wLnNlZCA8PF9FT0YKKy9eXCQvbgoreAorL15cJC9iUworeAorL1xcXFxcJC97SDtkO30KK3tIO3MvLiovLzt4O30KK2JNCis6UworeAorL1xcXFxcJC97aDtkO30KK3toO3MvLiovLzt4O30KKzpNCitzL1xcKFxcblxcKQkvXFwxIC9nCisvXgkvZAorL15bWwkgXV0qW1tcXCNdXS9kCisvXlZQQVRIICo9L2QKK3MvXnNyY2RpciAqPS4qL3NyY2RpciA9IC4vCitzL150b3Bfc3JjZGlyICo9LiovdG9wX3NyY2RpciA9IC4vCisvW1s6PV1dLyFkCisvXlxcLi9kCitkbmwgTm93IGhhbmRsZSBydWxlcyAoaS5lLiBsaW5lcyBjb250YWluaW5nICI6IiBidXQgbm90ICIgPSAiKS4KKy8gPSAvYgorLyAuPSAvYgorLzovIWIKK3MvOi4qLzovCitzLyAvICAvZworcy8gXFwoW1thLXpdXVtbYS16LV1dKltbYS16QS1aMC05XV1cXClcXChbWyA6XV1cXCkvIFxcMSBcXDFbXV9BTExcXDIvZworcy9eXFwoW1thLXpdXVtbYS16LV1dKltbYS16QS1aMC05XV1cXClcXChbWyA6XV1cXCkvXFwxIFxcMVtdX0FMTFxcMi8KK3MvICAvIC9nCisvXmFsbCBhbGxbXV9BTExbWyA6XV0vaVxcCithbGwtY29uZmlndXJlZCA6IGFsbFtdX0FMTAorZG5sIGRpc3QtYWxsIGV4aXN0cy4uLiBhbmQgd291bGQgbWFrZSBmb3IgZGlzdC1hbGwtYWxsCitzLyBbW2EtekEtWjAtOS1dXSpbXV9BTEwgW1thLXpBLVowLTktXV0qW11fQUxMW11fQUxMLy9nCisvW11fQUxMW11fQUxML2QKK2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkQVVYL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiBfQUxMICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIjsgaWYgdGVzdCAiXCRcJG4iIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIy4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggOyBmaSBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IHRlc3QgIlwkXCR1c2UiID0gIlwkXEAiICYmIEJVSUxEPSR4IGVjaG8gIlwkXCRCVUlMRCIgfCB0YWlsIC0xICR4IFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IChjZCAiXCRcJGkiICYmIHRlc3QgISAtZiBjb25maWd1cmUgJiYgXCQoTUFLRSkgXCRcJHVzZSkgfHwgZXhpdDsgZG9uZQorZG5sIHNwZWNpYWwgcnVsZSBhZGQtb246ICJkaXN0IiBjb3BpZXMgdGhlIHRhcmJhbGwgdG8gJChQVUIpLiAoc291cmNlIHRyZWUpCisvZGlzdFtdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiBcXFxcXFwKKwk7IGRvIHRlc3QgLWYgIlwkXCRmIiAmJiBtdiAiXCRcJGYiIFwkKFBVQikuIDsgZG9uZSA7IGJyZWFrIDsgZG9uZQorZG5sIHNwZWNpYWwgcnVsZSBhZGQtb246ICJkaXN0LWZvbyIgY29waWVzIGFsbCB0aGUgYXJjaGl2ZXMgdG8gJChQVUIpLiAoc291cmNlIHRyZWUpCisvZGlzdC1bW2EtekEtWjAtOV1dKltdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggLi9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLioiIFxcXFxcXAorCTsgaWYgdGVzdCAiXCRcJGZvdW5kIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdGNsZWFuIiByZW1vdmVzIGFsbCBsb2NhbCBidWlsZGRpcnMgY29tcGxldGVseQorL2Rpc3RjbGVhbltdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgX0FMTCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCAoYWxsIGxvY2FsIGJ1aWxkcykiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIiMgcm0gLXIgXCRcJGkiOyBkb25lIDsgZWNobyAiIyAoc2xlZXAgMykiIDsgc2xlZXAgMyBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLi4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gInJtIC1yIFwkXCRpIjsgKHJtIC1yICJcJFwkaSIpIDsgZG9uZSA7IHJtIE1ha2VmaWxlCitfRU9GCisgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkU1JDL21ha2VmaWxlLnNlZH4iICAgICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAkU0VEIC1mICR0bXAvY29uZnRlbXAuc2VkIE1ha2VmaWxlID4kU1JDL01ha2VmaWxlCisgICAgICBpZiB0ZXN0IC1mICIkU1JDL200X2lmdmFsKFskMl0sWyQyXSxbRU5EXSkiIDsgdGhlbgorICAgICAgICBBQ19NU0dfTk9USUNFKFtleHRlbmQgVE9QL01ha2VmaWxlIHdpdGggVE9QL200X2lmdmFsKFskMl0sWyQyXSxbRU5EXSldKQorICAgICAgICBjYXQgJFNSQy9FTkQgPj4kU1JDL01ha2VmaWxlCisgICAgICBmaSA7IHh4eHg9IiMjIyMiCisgICAgICBlY2hvICIkeHh4eCBDT05GSUdVUkFUSU9OUyBGT1IgVE9QTEVWRUwgTUFLRUZJTEU6ICIgPj4kU1JDL01ha2VmaWxlCisgICAgICAjIHNhbml0eSBjaGVjaworICAgICAgaWYgZ3JlcCAnXjsgZWNobyAiTUFLRSAnICRTUkMvTWFrZWZpbGUgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgQUNfTVNHX05PVElDRShbYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gImEiIHRleHQgcGFydHNdKQorICAgICAgICAkU0VEIC1lICcvXkAgSE9TVD0vcy9eLwkvJyAtZSAnL147IC9zL14vCS8nICRTUkMvTWFrZWZpbGUgXAorICAgICAgICAgID4kU1JDL01ha2VmaWxlfgorICAgICAgICAodGVzdCAtcyAkU1JDL01ha2VmaWxlfiAmJiBtdiAkU1JDL01ha2VmaWxlfiAkU1JDL01ha2VmaWxlKSAyPi9kZXYvbnVsbAorICAgICAgZmkKKyAgICBlbHNlCisgICAgICB4eHh4PSJcXCNcXCNcXCNcXCMiCisgICAgICAjIGVjaG8gIi9eJHh4eHggKiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCAvZCIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICBlY2hvICJzIV4keHh4eCBbW158XV0qIHwgKiRTVUIgKlwkISR4eHh4IC4uLi4uLiAkU1VCISIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICAkU0VEIC1mICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRTUkMvTWFrZWZpbGUiID4kdG1wL21rZmlsZS50bXAKKyAgICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJFNSQy9tYWtlZmlsZXMuc2VkfiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICAgY3AgIiR0bXAvbWtmaWxlLnRtcCIgICAiJFNSQy9tYWtlZmlsZXMub3V0fiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgIGlmIGNtcCAtcyAiJFNSQy9NYWtlZmlsZSIgIiR0bXAvbWtmaWxlLnRtcCIgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIEFDX01TR19OT1RJQ0UoW2tlZXBpbmcgVE9QL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmVdKQorICAgICAgICBybSAiJHRtcC9ta2ZpbGUudG1wIgorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfTk9USUNFKFtyZXVzaW5nIFRPUC9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlXSkKKyAgICAgICAgbXYgIiR0bXAvbWtmaWxlLnRtcCIgIiRTUkMvTWFrZWZpbGUiCisgICAgICBmaQorICAgIGZpCisgICAgQUNfTVNHX05PVElDRShbYnVpbGQgaW4gJFNVQiAoSE9TVD0kYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QpXSkKKyAgICB4eHh4PSIjIyMjIgorICAgIGVjaG8gIiR4eHh4IiAiJGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0IiAifCRTVUIiID4+JFNSQy9NYWtlZmlsZQorICBmaQorcG9wZGVmKFtFTkRdKWRubAorQVNfVkFSX1BPUERFRihbU0VEXSlkbmwKK0FTX1ZBUl9QT1BERUYoW0FVWF0pZG5sCitBU19WQVJfUE9QREVGKFtTUkNdKWRubAorQVNfVkFSX1BPUERFRihbVE9QXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NVQl0pZG5sCitdLFtkbmwKK2F4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXI9IiRzcmNkaXIiICAgICAgICAgICAgICAgICAgICAjICRzcmNkaXIKK2F4X2VuYWJsZV9idWlsZGRpcl9ob3N0PSIkSE9TVCIgICAgICAgICAgICAgICAgICAgICAgICAjICRIT1NUIC8gJGhvc3QKK2F4X2VuYWJsZV9idWlsZGRpcl92ZXJzaW9uPSIkVkVSU0lPTiIgICAgICAgICAgICAgICAgICAjICRWRVJTSU9OCitheF9lbmFibGVfYnVpbGRkaXJfcGFja2FnZT0iJFBBQ0tBR0UiICAgICAgICAgICAgICAgICAgIyAkUEFDS0FHRQorYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIiICMgJEFVWAorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiICAgICAgICMgJFNFRAorYXhfZW5hYmxlX2J1aWxkZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyIiAgICAgICAgICAgICAgICMgJFNVQgorXSlkbmwKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY19hcmNoZmxhZy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX2FyY2hmbGFnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MTFiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY19hcmNoZmxhZy5tNApAQCAtMCwwICsxLDIxNSBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9nY2NfYXJjaGZsYWcuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9HQ0NfQVJDSEZMQUcoW1BPUlRBQkxFP10sIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0pCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgVGhpcyBtYWNybyB0cmllcyB0byBndWVzcyB0aGUgIm5hdGl2ZSIgYXJjaCBjb3JyZXNwb25kaW5nIHRvIHRoZSB0YXJnZXQKKyMgICBhcmNoaXRlY3R1cmUgZm9yIHVzZSB3aXRoIGdjYydzIC1tYXJjaD1hcmNoIG9yIC1tdHVuZT1hcmNoIGZsYWdzLiBJZgorIyAgIGZvdW5kLCB0aGUgY2FjaGUgdmFyaWFibGUgJGF4X2N2X2djY19hcmNoZmxhZyBpcyBzZXQgdG8gdGhpcyBmbGFnIGFuZAorIyAgIEFDVElPTi1TVUNDRVNTIGlzIGV4ZWN1dGVkOyBvdGhlcndpc2UgJGF4X2N2X2djY19hcmNoZmxhZyBpcyBzZXQgdG8KKyMgICAidW5rbm93biIgYW5kIEFDVElPTi1GQUlMVVJFIGlzIGV4ZWN1dGVkLiBUaGUgZGVmYXVsdCBBQ1RJT04tU1VDQ0VTUyBpcworIyAgIHRvIGFkZCAkYXhfY3ZfZ2NjX2FyY2hmbGFnIHRvIHRoZSBlbmQgb2YgJENGTEFHUy4KKyMKKyMgICBQT1JUQUJMRT8gc2hvdWxkIGJlIGVpdGhlciBbeWVzXSAoZGVmYXVsdCkgb3IgW25vXS4gSW4gdGhlIGZvcm1lciBjYXNlLAorIyAgIHRoZSBmbGFnIGlzIHNldCB0byAtbXR1bmUgKG9yIGVxdWl2YWxlbnQpIHNvIHRoYXQgdGhlIGFyY2hpdGVjdHVyZSBpcworIyAgIG9ubHkgdXNlZCBmb3IgdHVuaW5nLCBidXQgdGhlIGluc3RydWN0aW9uIHNldCB1c2VkIGlzIHN0aWxsIHBvcnRhYmxlLiBJbgorIyAgIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIGZsYWcgaXMgc2V0IHRvIC1tYXJjaCAob3IgZXF1aXZhbGVudCkgc28gdGhhdAorIyAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbnN0cnVjdGlvbnMgYXJlIGVuYWJsZWQuCisjCisjICAgVGhlIHVzZXIgY2FuIHNwZWNpZnkgLS13aXRoLWdjYy1hcmNoPTxhcmNoPiBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKKyMgICBtYWNybydzIGNob2ljZSBvZiBhcmNoaXRlY3R1cmUsIG9yIC0td2l0aG91dC1nY2MtYXJjaCB0byBkaXNhYmxlIHRoaXMuCisjCisjICAgV2hlbiBjcm9zcy1jb21waWxpbmcsIG9yIGlmICRDQyBpcyBub3QgZ2NjLCB0aGVuIEFDVElPTi1GQUlMVVJFIGlzCisjICAgY2FsbGVkIHVubGVzcyB0aGUgdXNlciBzcGVjaWZpZWQgLS13aXRoLWdjYy1hcmNoIG1hbnVhbGx5LgorIworIyAgIFJlcXVpcmVzIG1hY3JvczogQVhfQ0hFQ0tfQ09NUElMRV9GTEFHLCBBWF9HQ0NfWDg2X0NQVUlECisjCisjICAgKFRoZSBtYWluIGVtcGhhc2lzIGhlcmUgaXMgb24gcmVjZW50IENQVXMsIG9uIHRoZSBwcmluY2lwbGUgdGhhdCBkb2luZworIyAgIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nIG9uIG9sZCBoYXJkd2FyZSBpcyB1bmNvbW1vbi4pCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PgorIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXR0ZW8gRnJpZ28KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMTAKKworQUNfREVGVU4oW0FYX0dDQ19BUkNIRkxBR10sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisKK0FDX0FSR19XSVRIKGdjYy1hcmNoLCBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nY2MtYXJjaD08YXJjaD5dLCBbdXNlIGFyY2hpdGVjdHVyZSA8YXJjaD4gZm9yIGdjYyAtbWFyY2gvLW10dW5lLCBpbnN0ZWFkIG9mIGd1ZXNzaW5nXSldLAorCWF4X2djY19hcmNoPSR3aXRodmFsLCBheF9nY2NfYXJjaD15ZXMpCisKK0FDX01TR19DSEVDS0lORyhbZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZ10pCitBQ19NU0dfUkVTVUxUKFtdKQorQUNfQ0FDSEVfVkFMKGF4X2N2X2djY19hcmNoZmxhZywKK1sKK2F4X2N2X2djY19hcmNoZmxhZz0idW5rbm93biIKKworaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgPSB4eWVzOyB0aGVuCitheF9nY2NfYXJjaD0iIgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorY2FzZSAkaG9zdF9jcHUgaW4KKyAgaVtbMzQ1Nl1dODYqfHg4Nl82NCopICMgdXNlIGNwdWlkIGNvZGVzLCBpbiBwYXJ0IGZyb20geDg2aW5mby0xLjcgYnkgRC4gSm9uZXMKKyAgICAgQVhfR0NDX1g4Nl9DUFVJRCgwKQorICAgICBBWF9HQ0NfWDg2X0NQVUlEKDEpCisgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMCBpbgorICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1W1s0OF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0tbW14IHBlbnRpdW0iIDs7CisJICAgICo1Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW0gOzsKKwkgICAgKjZbWzM0NTZdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbWzAxXV06KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqW1syMzRdXToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNltbOWRdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW0gcGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbWzc4Yl1dPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgICAgICpmM1tbMzQ3XV06KjoqOip8KmY0WzEzNDddOio6KjoqKQorCQljYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgICAgICAgICAgeDg2XzY0KikgYXhfZ2NjX2FyY2g9Im5vY29uYSBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9InByZXNjb3R0IHBlbnRpdW00IHBlbnRpdW1wcm8iIDs7CisgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW00IHBlbnRpdW1wcm8iOzsKKyAgICAgICAgICBlc2FjIDs7CisgICAgICAgKjo2ODc0NzU0MToqOiopICMgQU1ECisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1W1s2N11dPzoqOio6KikgYXhfZ2NjX2FyY2g9azYgOzsKKwkgICAgKjVbWzhkXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMiBrNiIgOzsKKwkgICAgKjVbWzldXT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0zIGs2IiA7OworCSAgICAqNjA/Oio6KjoqKSBheF9nY2NfYXJjaD1rNyA7OworCSAgICAqNltbMTJdXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24gazciIDs7CisJICAgICo2W1szNF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi10YmlyZCBrNyIgOzsKKwkgICAgKjY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgKjZbWzY4YV1dPzoqOio6KikKKwkgICAgICAgQVhfR0NDX1g4Nl9DUFVJRCgweDgwMDAwMDA2KSAjIEwyIGNhY2hlIHNpemUKKwkgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2IGluCisgICAgICAgICAgICAgICAgICo6KjoqW1sxLTlhLWZdXT8/Pz8/PzoqKSAjIChMMiA9IGVjeCA+PiAxNikgPj0gMjU2CisJCQlheF9nY2NfYXJjaD0iYXRobG9uLXhwIGF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKyAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgICAgZXNhYyA7OworCSAgICAqZltbNGNlZjhiXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uNjQgazgiIDs7CisJICAgICpmNT86KjoqOiopIGF4X2djY19hcmNoPSJvcHRlcm9uIGs4IiA7OworCSAgICAqZjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLWZ4IG9wdGVyb24gazgiIDs7CisJICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJrOCIgOzsKKyAgICAgICAgICBlc2FjIDs7CisJKjo3NDZlNjU0MzoqOiopICMgSURUCisJICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICAqNTQ/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwLWM2IDs7CisJICAgICAqNTg/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwMiA7OworCSAgICAgKjZbWzc4XV0/Oio6KjoqKSBheF9nY2NfYXJjaD1jMyA7OworCSAgICAgKjY5PzoqOio6KikgYXhfZ2NjX2FyY2g9ImMzLTIgYzMiIDs7CisJICAgZXNhYyA7OworICAgICBlc2FjCisgICAgIGlmIHRlc3QgeCIkYXhfZ2NjX2FyY2giID0geDsgdGhlbiAjIGZhbGxiYWNrCisJY2FzZSAkaG9zdF9jcHUgaW4KKwkgIGk1ODYqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICBpNjg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICBlc2FjCisgICAgIGZpCisgICAgIDs7CisKKyAgc3BhcmMqKQorICAgICBBQ19QQVRIX1BST0coW1BSVERJQUddLCBbcHJ0ZGlhZ10sIFtwcnRkaWFnXSwgWyRQQVRIOi91c3IvcGxhdGZvcm0vYHVuYW1lIC1pYC9zYmluLzovdXNyL3BsYXRmb3JtL2B1bmFtZSAtbWAvc2Jpbi9dKQorICAgICBjcHV0eXBlPWAoKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgY3V0IC1kOiAtZjIpIDsgKCRQUlRESUFHIC12IHxncmVwIC1pIHNwYXJjKSA7IGdyZXAgLWkgY3B1IC92YXIvcnVuL2RtZXNnLmJvb3QgKSB8IGhlYWQgLW4gMSkgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICIkY3B1dHlwZSIgfCB0ciAtZCAnIC0nIHx0ciAkYXNfY3JfTEVUVEVSUyAkYXNfY3JfbGV0dGVyc2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICAgKnVsdHJhc3BhcmNpdiopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjNCB1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnVsdHJhc3BhcmNpaWkqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqc3VwZXJzcGFyYyp8KnRtczM5MHo1W1swNV1dKikgYXhfZ2NjX2FyY2g9InN1cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqaHlwZXJzcGFyYyp8KnJ0NjJbWzA1Nl1dKikgYXhfZ2NjX2FyY2g9Imh5cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqY3lwcmVzcyopIGF4X2djY19hcmNoPWN5cHJlc3MgOzsKKyAgICAgZXNhYyA7OworCisgIGFscGhhZXY1KSBheF9nY2NfYXJjaD1ldjUgOzsKKyAgYWxwaGFldjU2KSBheF9nY2NfYXJjaD1ldjU2IDs7CisgIGFscGhhcGNhNTYpIGF4X2djY19hcmNoPSJwY2E1NiBldjU2IiA7OworICBhbHBoYXBjYTU3KSBheF9nY2NfYXJjaD0icGNhNTcgcGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFldjYpIGF4X2djY19hcmNoPWV2NiA7OworICBhbHBoYWV2NjcpIGF4X2djY19hcmNoPWV2NjcgOzsKKyAgYWxwaGFldjY4KSBheF9nY2NfYXJjaD0iZXY2OCBldjY3IiA7OworICBhbHBoYWV2NjkpIGF4X2djY19hcmNoPSJldjY5IGV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjcpIGF4X2djY19hcmNoPSJldjcgZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3OSkgYXhfZ2NjX2FyY2g9ImV2NzkgZXY3IGV2NjkgZXY2OCBldjY3IiA7OworCisgIHBvd2VycGMqKQorICAgICBjcHV0eXBlPWAoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBoZWFkIC1uIDEgfCBjdXQgLWQ6IC1mMiB8IGN1dCAtZCwgLWYxIHwgc2VkICdzLyAvL2cnKSA7IC91c3IvYmluL21hY2hpbmUgOyAvYmluL21hY2hpbmU7IGdyZXAgQ1BVIC92YXIvcnVuL2RtZXNnLmJvb3QgfCBoZWFkIC1uIDEgfCBjdXQgLWQiICIgLWYyKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gJGNwdXR5cGUgfCBzZWQgLWUgJ3MvcHBjLy9nO3MvICovL2cnYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgKjc1MCopIGF4X2djY19hcmNoPSI3NTAgRzMiIDs7CisgICAgICAgKjc0MFtbMC05XV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQwMCBHNCIgOzsKKyAgICAgICAqNzRbWzQtNV1dW1swLTldXSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDUwIEc0IiA7OworICAgICAgICo3NFtbMC05XV1bWzAtOV1dKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIEc0IiA7OworICAgICAgICo5NzAqKSBheF9nY2NfYXJjaD0iOTcwIEc1IHBvd2VyNCI7OworICAgICAgICpQT1dFUjQqfCpwb3dlcjQqfCpncSopIGF4X2djY19hcmNoPSJwb3dlcjQgOTcwIjs7CisgICAgICAgKlBPV0VSNSp8KnBvd2VyNSp8KmdyKnwqZ3MqKSBheF9nY2NfYXJjaD0icG93ZXI1IHBvd2VyNCA5NzAiOzsKKyAgICAgICA2MDNldnw4MjQwKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNjAzZSA2MDMiOzsKKyAgICAgICAqKSBheF9nY2NfYXJjaD0kY3B1dHlwZSA7OworICAgICBlc2FjCisgICAgIGF4X2djY19hcmNoPSIkYXhfZ2NjX2FyY2ggcG93ZXJwYyIKKyAgICAgOzsKK2VzYWMKK2ZpICMgbm90IGNyb3NzLWNvbXBpbGluZworZmkgIyBndWVzcyBhcmNoCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giICE9IHggLWEgIngkYXhfZ2NjX2FyY2giICE9IHhubzsgdGhlbgorZm9yIGFyY2ggaW4gJGF4X2djY19hcmNoOyBkbworICBpZiB0ZXN0ICJ4W11tNF9kZWZhdWx0KFskMV0seWVzKSIgPSB4eWVzOyB0aGVuICMgaWYgd2UgcmVxdWlyZSBwb3J0YWJsZSBjb2RlCisgICAgZmxhZ3M9Ii1tdHVuZT0kYXJjaCIKKyAgICAjIC1tY3B1PSRhcmNoIGFuZCBtJGFyY2ggZ2VuZXJhdGUgbm9ucG9ydGFibGUgY29kZSBvbiBldmVyeSBhcmNoIGV4Y2VwdAorICAgICMgeDg2LiAgQW5kIHNvbWUgb3RoZXIgYXJjaGVzIChlLmcuIEFscGhhKSBkb24ndCBhY2NlcHQgLW10dW5lLiAgR3Jyci4KKyAgICBjYXNlICRob3N0X2NwdSBpbiBpKjg2fHg4Nl82NCopIGZsYWdzPSIkZmxhZ3MgLW1jcHU9JGFyY2ggLW0kYXJjaCI7OyBlc2FjCisgIGVsc2UKKyAgICBmbGFncz0iLW1hcmNoPSRhcmNoIC1tY3B1PSRhcmNoIC1tJGFyY2giCisgIGZpCisgIGZvciBmbGFnIGluICRmbGFnczsgZG8KKyAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoJGZsYWcsIFtheF9jdl9nY2NfYXJjaGZsYWc9JGZsYWc7IGJyZWFrXSkKKyAgZG9uZQorICB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93biB8fCBicmVhaworZG9uZQorZmkKKworZmkgIyAkR0NDPXllcworXSkKK0FDX01TR19DSEVDS0lORyhbZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZ10pCitBQ19NU0dfUkVTVUxUKCRheF9jdl9nY2NfYXJjaGZsYWcpCitpZiB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93bjsgdGhlbgorICBtNF9kZWZhdWx0KFskM10sOikKK2Vsc2UKKyAgbTRfZGVmYXVsdChbJDJdLCBbQ0ZMQUdTPSIkQ0ZMQUdTICRheF9jdl9nY2NfYXJjaGZsYWciXSkKK2ZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfeDg2X2NwdWlkLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfeDg2X2NwdWlkLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNDZmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY194ODZfY3B1aWQubTQKQEAgLTAsMCArMSw3OSBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2djY194ODZfY3B1aWQuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9HQ0NfWDg2X0NQVUlEKE9QKQorIworIyBERVNDUklQVElPTgorIworIyAgIE9uIFBlbnRpdW0gYW5kIGxhdGVyIHg4NiBwcm9jZXNzb3JzLCB3aXRoIGdjYyBvciBhIGNvbXBpbGVyIHRoYXQgaGFzIGEKKyMgICBjb21wYXRpYmxlIHN5bnRheCBmb3IgaW5saW5lIGFzc2VtYmx5IGluc3RydWN0aW9ucywgcnVuIGEgc21hbGwgcHJvZ3JhbQorIyAgIHRoYXQgZXhlY3V0ZXMgdGhlIGNwdWlkIGluc3RydWN0aW9uIHdpdGggaW5wdXQgT1AuIFRoaXMgY2FuIGJlIHVzZWQgdG8KKyMgICBkZXRlY3QgdGhlIENQVSB0eXBlLgorIworIyAgIE9uIG91dHB1dCwgdGhlIHZhbHVlcyBvZiB0aGUgZWF4LCBlYngsIGVjeCwgYW5kIGVkeCByZWdpc3RlcnMgYXJlIHN0b3JlZAorIyAgIGFzIGhleGFkZWNpbWFsIHN0cmluZ3MgYXMgImVheDplYng6ZWN4OmVkeCIgaW4gdGhlIGNhY2hlIHZhcmlhYmxlCisjICAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF9PUC4KKyMKKyMgICBJZiB0aGUgY3B1aWQgaW5zdHJ1Y3Rpb24gZmFpbHMgKGJlY2F1c2UgeW91IGFyZSBydW5uaW5nIGEKKyMgICBjcm9zcy1jb21waWxlciwgb3IgYmVjYXVzZSB5b3UgYXJlIG5vdCB1c2luZyBnY2MsIG9yIGJlY2F1c2UgeW91IGFyZSBvbgorIyAgIGEgcHJvY2Vzc29yIHRoYXQgZG9lc24ndCBoYXZlIHRoaXMgaW5zdHJ1Y3Rpb24pLCBheF9jdl9nY2NfeDg2X2NwdWlkX09QCisjICAgaXMgc2V0IHRvIHRoZSBzdHJpbmcgInVua25vd24iLgorIworIyAgIFRoaXMgbWFjcm8gbWFpbmx5IGV4aXN0cyB0byBiZSB1c2VkIGluIEFYX0dDQ19BUkNIRkxBRy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCA3CisKK0FDX0RFRlVOKFtBWF9HQ0NfWDg2X0NQVUlEXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKK0FDX0xBTkdfUFVTSChbQ10pCitBQ19DQUNIRV9DSEVDSyhmb3IgeDg2IGNwdWlkICQxIG91dHB1dCwgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMSwKKyBbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8c3RkaW8uaD5dLCBbCisgICAgIGludCBvcCA9ICQxLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CitdKV0sCisgICAgIFtheF9jdl9nY2NfeDg2X2NwdWlkXyQxPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZF0sCisgICAgIFtheF9jdl9nY2NfeDg2X2NwdWlkXyQxPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkXSwKKyAgICAgW2F4X2N2X2djY194ODZfY3B1aWRfJDE9dW5rbm93bl0pXSkKK0FDX0xBTkdfUE9QKFtDXSkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQKaW5kZXggNjcxY2RlMS4uODI4MTA0YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbGlidG9vbC5tNApAQCAtMSw3ICsxLDggQEAKICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCiAjCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTEwLDcgKzExLDggQEAKIAogbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjICAgICAgICAgICAgICAgICBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgpAQCAtMzcsNyArMzksNyBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIF0pCiAKLSMgc2VyaWFsIDU2IExUX0lOSVQKKyMgc2VyaWFsIDU3IExUX0lOSVQKIAogCiAjIExUX1BSRVJFUShWRVJTSU9OKQpAQCAtNjYsNiArNjgsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtMVF9JTklUXSwKIFtBQ19QUkVSRVEoWzIuNThdKWRubCBXZSB1c2UgQUNfSU5DTFVERVNfREVGQVVMVAorQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX0xBTkddKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubApAQCAtODIsNiArODUsOCBAQAogQUNfUkVRVUlSRShbTFRPQlNPTEVURV9WRVJTSU9OXSlkbmwKIG00X3JlcXVpcmUoW19MVF9QUk9HX0xUTUFJTl0pZG5sCiAKK19MVF9TSEVMTF9JTklUKFtTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofV0pCisKIGRubCBQYXJzZSBPUFRJT05TCiBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKIApAQCAtMTE4LDcgKzEyMyw3IEBACiAgICAgKikgYnJlYWs7OwogICBlc2FjCiBkb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK2NjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAogXSkKIAogCkBAIC0xMzgsNiArMTQzLDExIEBACiBtNF9kZWZ1bihbX0xUX1NFVFVQXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfUkVRVUlSRShbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdKWRubAorQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAorCitfTFRfREVDTChbXSwgW1BBVEhfU0VQQVJBVE9SXSwgWzFdLCBbVGhlIFBBVEggc2VwYXJhdG9yIGZvciB0aGUgYnVpbGQgc3lzdGVtXSlkbmwKK2RubAogX0xUX0RFQ0woW10sIFtob3N0X2FsaWFzXSwgWzBdLCBbVGhlIGhvc3Qgc3lzdGVtXSlkbmwKIF9MVF9ERUNMKFtdLCBbaG9zdF0sIFswXSlkbmwKIF9MVF9ERUNMKFtdLCBbaG9zdF9vc10sIFswXSlkbmwKQEAgLTE2MCwxMCArMTcwLDEzIEBACiBkbmwKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKK200X3JlcXVpcmUoW19MVF9XSVRIX1NZU1JPT1RdKWRubAogCiBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCiAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyCkBAIC0xNzksNyArMTkyLDYgQEAKIF9MVF9DSEVDS19PQkpESVIKIAogbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCi1fTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKQEAgLTE5MywyMyArMjA1LDYgQEAKICAgOzsKIGVzYWMKIAotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFtbImAkXFxdXVwpL1xcXDEvZycKLQotIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi1kb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbWyJgXFxdXVwpL1xcXDEvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKLSMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KLWRlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaW5nbGUgcXVvdGUuCi1kZWxheV9zaW5nbGVfcXVvdGVfc3Vic3Q9J3MvJ1wnJy8nXCdcXFxcXFxcJ1wnJy9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbCBnbG9iYmluZyBpbiBldmFsZWQgZXhwcmVzc2lvbnMKLW5vX2dsb2Jfc3Vic3Q9J3MvXCovXFxcKi9nJwotCiAjIEdsb2JhbCB2YXJpYWJsZXM6CiBvZmlsZT1saWJ0b29sCiBjYW5fYnVpbGRfc2hhcmVkPXllcwpAQCAtMjUwLDYgKzI0NSwyOCBAQAogXSkjIF9MVF9TRVRVUAogCiAKKyMgX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIGEgZmV3IHNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwIHVzIGRvIHJvYnVzdCBxdW90aW5nLgorbTRfZGVmdW4oW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSwKK1sjIEJhY2tzbGFzaGlmeSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluCisjIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFtbImAkXFxdXVwpL1xcXDEvZycKKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbWyJgXFxdXVwpL1xcXDEvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKKyMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KK2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaW5nbGUgcXVvdGUuCitkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3Q9J3MvJ1wnJy8nXCdcXFxcXFxcJ1wnJy9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbCBnbG9iYmluZyBpbiBldmFsZWQgZXhwcmVzc2lvbnMKK25vX2dsb2Jfc3Vic3Q9J3MvXCovXFxcKi9nJworXSkKKwogIyBfTFRfUFJPR19MVE1BSU4KICMgLS0tLS0tLS0tLS0tLS0tCiAjIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgY2FsbGVkIGJvdGggZnJvbSBgY29uZmlndXJlJywgYW5kIGBjb25maWcuc3RhdHVzJwpAQCAtNDA4LDcgKzQyNSw3IEBACiAjIGRlY2xhcmF0aW9uIHRoZXJlIHdpbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiBgY29uZmlndXJlJy4gIFZBUk5BTUUKICMgbXVzdCBoYXZlIGEgc2luZ2xlIHF1b3RlIGRlbGltaXRlZCB2YWx1ZSBmb3IgdGhpcyB0byB3b3JrLgogbTRfZGVmaW5lKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFXSwKLVskMT0nYCRFQ0hPICJYJF1bJDEiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCddKQorWyQxPSdgJEVDSE8gIiRdWyQxIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCddKQogCiAKICMgX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSQVRJT05TCkBAIC00MTgsNyArNDM1LDcgQEAKICMgZW1iZWRkZWQgc2luZ2xlIHF1b3RlcyBwcm9wZXJseS4gIEluIGNvbmZpZ3VyZSwgdGhpcyBtYWNybyBleHBhbmRzCiAjIGVhY2ggdmFyaWFibGUgZGVjbGFyZWQgd2l0aCBfTFRfREVDTCAoYW5kIF9MVF9UQUdERUNMKSBpbnRvOgogIwotIyAgICA8dmFyPj0nYCRFQ0hPICJYJDx2YXI+IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisjICAgIDx2YXI+PSdgJEVDSE8gIiQ8dmFyPiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBtNF9kZWZ1bihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSQVRJT05TXSwKIFttNF9mb3JlYWNoKFtfbHRfdmFyXSwgbTRfcXVvdGUobHRfZGVjbF9hbGxfdmFybmFtZXMpLAogICAgIFttNF9uKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFKF9sdF92YXIpXSldKV0pCkBAIC01MTcsMTIgKzUzNCwyMCBAQAogTFRDRkxBR1M9JyRMVENGTEFHUycKIGNvbXBpbGVyPSckY29tcGlsZXJfREVGQVVMVCcKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCitcJFtdMQorX0xURUNIT19FT0YnCit9CisKICMgUXVvdGUgZXZhbGVkIHN0cmluZ3MuCiBmb3IgdmFyIGluIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtbIFwKIF1dLCBsdF9kZWNsX3F1b3RlX3Zhcm5hbWVzKTsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC01MzMsOSArNTU4LDkgQEAKICMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3RyaW5ncy4KIGZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAogXV0sIGx0X2RlY2xfZHF1b3RlX3Zhcm5hbWVzKTsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC01NDMsMTYgKzU2OCwzOCBAQAogICAgIGVzYWMKIGRvbmUKIAotIyBGaXgtdXAgZmFsbGJhY2sgZWNobyBpZiBpdCB3YXMgbWFuZ2xlZCBieSB0aGUgYWJvdmUgcXVvdGluZyBydWxlcy4KLWNhc2UgXCRsdF9FQ0hPIGluCi0qJ1xcXFskXTAgLS1mYWxsYmFjay1lY2hvIicpZG5sICIKLSAgbHRfRUNITz1cYFwkRUNITyAiWFwkbHRfRUNITyIgfCBcJFhzZWQgLWUgJ3MvXFxcXFxcXFxcXFxcXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iXFskXS9cWyRdMCAtLWZhbGxiYWNrLWVjaG8iLydcYAotICA7OwotZXNhYwotCiBfTFRfT1VUUFVUX0xJQlRPT0xfSU5JVAogXSkKIAorIyBfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVChGSUxFLCBbQ09NTUVOVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBHZW5lcmF0ZSBhIGNoaWxkIHNjcmlwdCBGSUxFIHdpdGggYWxsIGluaXRpYWxpemF0aW9uIG5lY2Vzc2FyeSB0bworIyByZXVzZSB0aGUgZW52aXJvbm1lbnQgbGVhcm5lZCBieSB0aGUgcGFyZW50IHNjcmlwdCwgYW5kIG1ha2UgdGhlCisjIGZpbGUgZXhlY3V0YWJsZS4gIElmIENPTU1FTlQgaXMgc3VwcGxpZWQsIGl0IGlzIGluc2VydGVkIGFmdGVyIHRoZQorIyBgIyEnIHNlcXVlbmNlIGJ1dCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gdGV4dCBiZWdpbnMuICBBZnRlciB0aGlzCisjIG1hY3JvLCBhZGRpdGlvbmFsIHRleHQgY2FuIGJlIGFwcGVuZGVkIHRvIEZJTEUgdG8gZm9ybSB0aGUgYm9keSBvZgorIyB0aGUgY2hpbGQgc2NyaXB0LiAgVGhlIG1hY3JvIGVuZHMgd2l0aCBub24temVybyBzdGF0dXMgaWYgdGhlCisjIGZpbGUgY291bGQgbm90IGJlIGZ1bGx5IHdyaXR0ZW4gKHN1Y2ggYXMgaWYgdGhlIGRpc2sgaXMgZnVsbCkuCittNF9pZmRlZihbQVNfSU5JVF9HRU5FUkFURURdLAorW200X2RlZnVuKFtfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVF0sW0FTX0lOSVRfR0VORVJBVEVEKCRAKV0pXSwKK1ttNF9kZWZ1bihbX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVRdLAorW200X3JlcXVpcmUoW0FTX1BSRVBBUkVdKV1kbmwKK1ttNF9wdXNoZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pXWRubAorW2x0X3dyaXRlX2ZhaWw9MAorY2F0ID4kMSA8PF9BU0VPRiB8fCBsdF93cml0ZV9mYWlsPTEKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgorJDIKK1NIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9CitleHBvcnQgU0hFTEwKK19BU0VPRgorY2F0ID4+JDEgPDxcX0FTRU9GIHx8IGx0X3dyaXRlX2ZhaWw9MQorQVNfU0hFTExfU0FOSVRJWkUKK19BU19QUkVQQVJFCitleGVjIEFTX01FU1NBR0VfRkQ+JjEKK19BU0VPRgordGVzdCAkbHRfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJDFbXWRubAorbTRfcG9wZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pXSldKSMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQKIAogIyBMVF9PVVRQVVQKICMgLS0tLS0tLS0tCkBAIC01NjIsMjAgKzYwOSwxMSBAQAogQUNfREVGVU4oW0xUX09VVFBVVF0sCiBbOiAke0NPTkZJR19MVD0uL2NvbmZpZy5sdH0KIEFDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRDT05GSUdfTFRdKQotY2F0ID4iJENPTkZJR19MVCIgPDxfTFRFT0YKLSMhICRTSEVMTAotIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgotIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLQotbHRfY2xfc2lsZW50PWZhbHNlCi1TSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQotX0xURU9GCitfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVChbIiRDT05GSUdfTFQiXSwKK1sjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgYSBsaWJ0b29sIHN0dWIgd2l0aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLl0pCiAKIGNhdCA+PiIkQ09ORklHX0xUIiA8PFxfTFRFT0YKLUFTX1NIRUxMX1NBTklUSVpFCi1fQVNfUFJFUEFSRQotCi1leGVjIEFTX01FU1NBR0VfRkQ+JjEKK2x0X2NsX3NpbGVudD1mYWxzZQogZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZwogewogICBlY2hvCkBAIC02MDEsNyArNjM5LDcgQEAKIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCiBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KIAotQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogVGhpcyBjb25maWcubHQgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKIApAQCAtNjQ2LDE1ICs2ODQsMTMgQEAKICMgYXBwZW5kaW5nIHRvIGNvbmZpZy5sb2csIHdoaWNoIGZhaWxzIG9uIERPUywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0CiAjIG9wZW4gYnkgY29uZmlndXJlLiAgSGVyZSB3ZSBleGVjIHRoZSBGRCB0byAvZGV2L251bGwsIGVmZmVjdGl2ZWx5IGNsb3NpbmcKICMgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5sdC4KLWlmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgotICBsdF9jbF9zdWNjZXNzPToKLSAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKLSAgICBsdF9jb25maWdfbHRfYXJncz0iJGx0X2NvbmZpZ19sdF9hcmdzIC0tcXVpZXQiCi0gIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+L2Rldi9udWxsCi0gICRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKLSAgZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZwotICAkbHRfY2xfc3VjY2VzcyB8fCBBU19FWElUKDEpCi1maQorbHRfY2xfc3VjY2Vzcz06Cit0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgorICBsdF9jb25maWdfbHRfYXJncz0iJGx0X2NvbmZpZ19sdF9hcmdzIC0tcXVpZXQiCitleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAorJFNIRUxMICIkQ09ORklHX0xUIiAkbHRfY29uZmlnX2x0X2FyZ3MgfHwgbHRfY2xfc3VjY2Vzcz1mYWxzZQorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZworJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQogXSkjIExUX09VVFBVVAogCiAKQEAgLTcxNywxNSArNzUzLDEyIEBACiAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCiAKLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKIAotICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLQotICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgY2htb2QgK3ggIiRvZmlsZSIKIF0sCkBAIC03NzAsNiArODAzLDcgQEAKIG00X2Nhc2UoWyQxXSwKICAgW0NdLAkJCVtfTFRfTEFORyhDKV0sCiAgIFtDKytdLAkJW19MVF9MQU5HKENYWCldLAorICBbR29dLAkJCVtfTFRfTEFORyhHTyldLAogICBbSmF2YV0sCQlbX0xUX0xBTkcoR0NKKV0sCiAgIFtGb3J0cmFuIDc3XSwJCVtfTFRfTEFORyhGNzcpXSwKICAgW0ZvcnRyYW5dLAkJW19MVF9MQU5HKEZDKV0sCkBAIC03OTEsNiArODI1LDMxIEBACiBdKSMgX0xUX0xBTkcKIAogCittNF9pZm5kZWYoW0FDX1BST0dfR09dLCBbCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTk9URTogVGhpcyBtYWNybyBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbnRvICAgIworIyAgR05VIEF1dG9jb25mIGFzIEFDX1BST0dfR08uICBXaGVuIGl0IGlzIGF2YWlsYWJsZSBpbiAgICAjCisjICBhIHJlbGVhc2VkIHZlcnNpb24gb2YgQXV0b2NvbmYgd2Ugc2hvdWxkIHJlbW92ZSB0aGlzICAgICMKKyMgIG1hY3JvIGFuZCB1c2UgaXQgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCittNF9kZWZ1bihbQUNfUFJPR19HT10sCitbQUNfTEFOR19QVVNIKEdvKWRubAorQUNfQVJHX1ZBUihbR09DXSwgICAgIFtHbyBjb21waWxlciBjb21tYW5kXSlkbmwKK0FDX0FSR19WQVIoW0dPRkxBR1NdLCBbR28gY29tcGlsZXIgZmxhZ3NdKWRubAorX0FDX0FSR19WQVJfTERGTEFHUygpZG5sCitBQ19DSEVDS19UT09MKEdPQywgZ2NjZ28pCitpZiB0ZXN0IC16ICIkR09DIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgQUNfQ0hFQ0tfUFJPRyhHT0MsIFske2FjX3Rvb2xfcHJlZml4fWdjY2dvXSwgWyR7YWNfdG9vbF9wcmVmaXh9Z2NjZ29dKQorICBmaQorZmkKK2lmIHRlc3QgLXogIiRHT0MiOyB0aGVuCisgIEFDX0NIRUNLX1BST0coR09DLCBnY2NnbywgZ2NjZ28sIGZhbHNlKQorZmkKK10pI200X2RlZnVuCitdKSNtNF9pZm5kZWYKKworCiAjIF9MVF9MQU5HX0RFRkFVTFRfQ09ORklHCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0xBTkdfREVGQVVMVF9DT05GSUddLApAQCAtODIxLDYgKzg4MCwxMCBAQAogICAgICAgIG00X2lmZGVmKFtMVF9QUk9HX0dDSl0sCiAJW200X2RlZmluZShbTFRfUFJPR19HQ0pdLCBkZWZuKFtMVF9QUk9HX0dDSl0pW0xUX0xBTkcoR0NKKV0pXSldKV0pXSkKIAorQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfR09dLAorICBbTFRfTEFORyhHTyldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0dPXSwgZGVmbihbQUNfUFJPR19HT10pW0xUX0xBTkcoR08pXSldKQorCiBBQ19QUk9WSURFX0lGRUxTRShbTFRfUFJPR19SQ10sCiAgIFtMVF9MQU5HKFJDKV0sCiAgIFttNF9kZWZpbmUoW0xUX1BST0dfUkNdLCBkZWZuKFtMVF9QUk9HX1JDXSlbTFRfTEFORyhSQyldKV0pCkBAIC04MzEsMTEgKzg5NCwxMyBAQAogQVVfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW0xUX0xBTkcoRm9ydHJhbiA3NyldKQogQVVfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbTFRfTEFORyhGb3J0cmFuKV0pCiBBVV9ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbTFRfTEFORyhKYXZhKV0pCitBVV9ERUZVTihbQUNfTElCVE9PTF9SQ10sIFtMVF9MQU5HKFdpbmRvd3MgUmVzb3VyY2UpXSkKIGRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9DWFhdLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9GNzddLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9GQ10sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0dDSl0sIFtdKQorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSwgW10pCiAKIAogIyBfTFRfVEFHX0NPTVBJTEVSCkBAIC05MjEsNyArOTg2LDEzIEBACiAJJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGxpYmNvbmZ0ZXN0LmR5bGliIFwKIAkgIC1keW5hbWljbGliIC1XbCwtc2luZ2xlX21vZHVsZSBjb25mdGVzdC5jIDI+Y29uZnRlc3QuZXJyCiAgICAgICAgIF9sdF9yZXN1bHQ9JD8KLQlpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgISAtcyBjb25mdGVzdC5lcnIgJiYgdGVzdCAkX2x0X3Jlc3VsdCA9IDA7IHRoZW4KKwkjIElmIHRoZXJlIGlzIGEgbm9uLWVtcHR5IGVycm9yIGxvZywgYW5kICJzaW5nbGVfbW9kdWxlIgorCSMgYXBwZWFycyBpbiBpdCwgYXNzdW1lIHRoZSBmbGFnIGNhdXNlZCBhIGxpbmtlciB3YXJuaW5nCisgICAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIHNpbmdsZV9tb2R1bGUgY29uZnRlc3QuZXJyOyB0aGVuCisJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKwkjIE90aGVyd2lzZSwgaWYgdGhlIG91dHB1dCB3YXMgY3JlYXRlZCB3aXRoIGEgMCBleGl0IGNvZGUgZnJvbQorCSMgdGhlIGNvbXBpbGVyLCBpdCB3b3JrZWQuCisJZWxpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDA7IHRoZW4KIAkgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9eWVzCiAJZWxzZQogCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECkBAIC05MjksNiArMTAwMCw3IEBACiAJcm0gLXJmIGxpYmNvbmZ0ZXN0LmR5bGliKgogCXJtIC1mIGNvbmZ0ZXN0LioKICAgICAgIGZpXSkKKwogICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZ10sCiAgICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0XSwKICAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm8KQEAgLTk0MCw2ICsxMDEyLDM0IEBACiAJW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ub10pCiAJTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKICAgICBdKQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtZm9yY2VfbG9hZCBsaW5rZXIgZmxhZ10sW2x0X2N2X2xkX2ZvcmNlX2xvYWRdLAorICAgICAgW2x0X2N2X2xkX2ZvcmNlX2xvYWQ9bm8KKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IGZvcmNlZF9sb2FkZWQoKSB7IHJldHVybiAyO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IG1haW4oKSB7IHJldHVybiAwO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEgMj5jb25mdGVzdC5lcnIKKyAgICAgIF9sdF9yZXN1bHQ9JD8KKyAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIGZvcmNlX2xvYWQgY29uZnRlc3QuZXJyOyB0aGVuCisJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlbGlmIHRlc3QgLWYgY29uZnRlc3QgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMCAmJiAkR1JFUCBmb3JjZWRfbG9hZCBjb25mdGVzdCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJbHRfY3ZfbGRfZm9yY2VfbG9hZD15ZXMKKyAgICAgIGVsc2UKKwljYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGZpCisgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LmVyciBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKKyAgICAgICAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0KKyAgICBdKQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4xLltbMDEyXV0pCiAgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CkBAIC05NjcsNyArMTA2Nyw3IEBACiAgICAgZWxzZQogICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IjsgdGhlbgorICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiICYmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJubyI7IHRoZW4KICAgICAgIF9sdF9kc3ltdXRpbD0nfiREU1lNVVRJTCAkbGliIHx8IDonCiAgICAgZWxzZQogICAgICAgX2x0X2RzeW11dGlsPQpAQCAtOTc3LDggKzEwNzcsOCBAQAogXSkKIAogCi0jIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2tzIGZvciBsaW5rZXIgYW5kIGNvbXBpbGVyIGZlYXR1cmVzIG9uIGRhcndpbgogbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKIFsKQEAgLTk4Nyw3ICsxMDg3LDEzIEBACiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKLSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIGlmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJ5ZXMiOyB0aGVuCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKyAgICBtNF9jYXNlKFskMV0sIFtGNzddLCBbX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXNdLAorICAgICAgICAgICAgICAgICAgW0ZDXSwgIFtfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllc10pCisgIGVsc2UKKyAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JycKKyAgZmkKICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iJF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkIgogICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtOTk1LDcgKzExMDEsNyBAQAogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCiAgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCiAgICAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kc3ltdXRpbH0iCiAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKQEAgLTEwMTEsMjAzICsxMTE3LDE0MiBAQAogICBmaQogXSkKIAotIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQogIyBmb3IgdGhlIHN5c3RlbSBkZWZhdWx0IGhhcmRjb2RlZCBsaWJyYXJ5IHBhdGguIEluIG1vc3QgY2FzZXMsCiAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgogIyBJZiB3ZSBkb24ndCBmaW5kIGFueXRoaW5nLCB1c2UgdGhlIGRlZmF1bHQgbGlicmFyeSBwYXRoIGFjY29yZGluZwogIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgorIyBBbGxvdyB0byBvdmVycmlkZSB0aGVtIGZvciBhbGwgdGFncyB0aHJvdWdoIGx0X2N2X2FpeF9saWJwYXRoLgogbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNLFsKLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotCS9eMC8gewotCSAgICBzL14wICAqXCguKlwpJC9cMS8KLQkgICAgcAotCX0KLSAgICB9JwotYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotZmldLFtdKQotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKyAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLFsKKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH1dJworICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpXSxbXSkKKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorICBmaQorICBdKQorICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKK2ZpCiBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKIAogCiAjIF9MVF9TSEVMTF9JTklUKEFSRykKICMgLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmaW5lKFtfTFRfU0hFTExfSU5JVF0sCi1baWZkZWYoW0FDX0RJVkVSU0lPTl9OT1RJQ0VdLAotCSAgICAgW0FDX0RJVkVSVF9QVVNIKEFDX0RJVkVSU0lPTl9OT1RJQ0UpXSwKLQkgW0FDX0RJVkVSVF9QVVNIKE5PVElDRSldKQotJDEKLUFDX0RJVkVSVF9QT1AKLV0pIyBfTFRfU0hFTExfSU5JVAorW200X2RpdmVydF90ZXh0KFtNNFNILUlOSVRdLCBbJDEKK10pXSkjIF9MVF9TSEVMTF9JTklUCisKIAogCiAjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFkZCBzb21lIGNvZGUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB3aGljaAotIyB3aWxsIGZpbmQgYW4gZWNobyBjb21tYW5kIHdoaWNoIGRvZXNuJ3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgorIyBGaW5kIGhvdyB3ZSBjYW4gZmFrZSBhbiBlY2hvIGNvbW1hbmQgdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoLgorIyBJbiBwYXJ0aWN1bGFyLCB3aXRoIEF1dG9jb25mIDIuNjAgb3IgbGF0ZXIgd2UgYWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQKKyMgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoIHdpbGwgZmluZCBhIHNoZWxsIHdpdGggYSBidWlsdGluCisjIHByaW50ZiAod2hpY2ggd2UgY2FuIHVzZSBhcyBhbiBlY2hvIGNvbW1hbmQpLgogbTRfZGVmdW4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwKLVtfTFRfU0hFTExfSU5JVChbCi0jIENoZWNrIHRoYXQgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi1TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorW0VDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAKLWNhc2UgWCRsdF9FQ0hPIGluCi1YKi0tZmFsbGJhY2stZWNobykKLSAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RhdGlvbiAod2hpY2ggd2FzIHJlcXVpcmVkIGZvciBNYWtlKS4KLSAgRUNITz1gZWNobyAiJGx0X0VDSE8iIHwgc2VkICdzLFxcXFxcWyRdXFxbJF0wLCdbJF0wJywnYAotICA7OworQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnQgLXIgLS0nCitlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludGYgJXNcbicKK2Vsc2UKKyAgIyBVc2UgdGhpcyBmdW5jdGlvbiBhcyBhIGZhbGxiYWNrIHRoYXQgYWx3YXlzIHdvcmtzLgorICBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKKyAgeworICAgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskW10xCitfTFRFQ0hPX0VPRicKKyAgfQorICBFQ0hPPSdmdW5jX2ZhbGxiYWNrX2VjaG8nCitmaQorCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiQqIiAKK30KKworY2FzZSAiJEVDSE8iIGluCisgIHByaW50ZiopIEFDX01TR19SRVNVTFQoW3ByaW50Zl0pIDs7CisgIHByaW50KikgQUNfTVNHX1JFU1VMVChbcHJpbnQgLXJdKSA7OworICAqKSBBQ19NU0dfUkVTVUxUKFtjYXRdKSA7OwogZXNhYwogCi1FQ0hPPSR7bHRfRUNITy1lY2hvfQotaWYgdGVzdCAiWFskXTEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKLSAgOgotZWxpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgOyB0aGVuCi0gICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKLSAgOgotZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi0gIGV4ZWMgJFNIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQotZmkKK200X2lmZGVmKFtfQVNfREVURUNUX1NVR0dFU1RFRF0sCitbX0FTX0RFVEVDVF9TVUdHRVNURUQoWworICB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0ke0JBU0hfVkVSU0lPTitzZXR9IiB8fCAoCisgICAgRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKKyAgICBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyAgICBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworICAgIFBBVEg9L2VtcHR5IEZQQVRIPS9lbXB0eTsgZXhwb3J0IFBBVEggRlBBVEgKKyAgICB0ZXN0ICJYYHByaW50ZiAlcyAkRUNIT2AiID0gIlgkRUNITyIgXAorICAgICAgfHwgdGVzdCAiWGBwcmludCAtciAtLSAkRUNIT2AiID0gIlgkRUNITyIgKV0pXSkKIAotaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwotICBzaGlmdAotICBjYXQgPDxfTFRfRU9GCi1bJF0qCi1fTFRfRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJGx0X0VDSE8iOyB0aGVuCi0gIGlmIHRlc3QgIlgke2VjaG9fdGVzdF9zdHJpbmcrc2V0fSIgIT0gWHNldDsgdGhlbgotICAgICMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICAgIGZvciBjbWQgaW4gJ3NlZCA1MHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAycSAiWyRdMCInICdlY2hvIHRlc3QnOyBkbwotICAgICAgIyBleHBlY3RlZCBzaXplczogbGVzcyB0aGFuIDJLYiwgMUtiLCA1MTIgYnl0ZXMsIDE2IGJ5dGVzLCAuLi4KLSAgICAgIGlmIHsgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkY21kYDsgfSAyPi9kZXYvbnVsbCAmJgotCSB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbAotICAgICAgdGhlbgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gIGZpCi0KLSAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgIyBUaGUgU29sYXJpcywgQUlYLCBhbmQgRGlnaXRhbCBVbml4IGRlZmF1bHQgZWNobyBwcm9ncmFtcyB1bnF1b3RlCi0gICAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAgICMgICBlY2hvICIkc29tZXRoaW5nIiB8IHNlZCAncy9cXC9cXFxcL2cnCi0gICAgIwotICAgICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBkaXIgaW4gJFBBVEggL3Vzci91Y2I7IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIGlmICh0ZXN0IC1mICRkaXIvZWNobyB8fCB0ZXN0IC1mICRkaXIvZWNobyRhY19leGVleHQpICYmCi0gICAgICAgICB0ZXN0ICJYYCgkZGlyL2VjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgIEVDSE89IiRkaXIvZWNobyIKLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gICAgaWYgdGVzdCAiWCRFQ0hPIiA9IFhlY2hvOyB0aGVuCi0gICAgICAjIFdlIGRpZG4ndCBmaW5kIGEgYmV0dGVyIGVjaG8sIHNvIGxvb2sgZm9yIGFsdGVybmF0aXZlcy4KLSAgICAgIGlmIHRlc3QgIlhgeyBwcmludCAtciAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyBwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICAgIEVDSE89J3ByaW50IC1yJwotICAgICAgZWxpZiB7IHRlc3QgLWYgL2Jpbi9rc2ggfHwgdGVzdCAtZiAvYmluL2tzaCRhY19leGVleHQ7IH0gJiYKLQkgICB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAgICMgSWYgd2UgaGF2ZSBrc2gsIHRyeSBydW5uaW5nIGNvbmZpZ3VyZSBhZ2FpbiB3aXRoIGl0LgotICAgICAgICBPUklHSU5BTF9DT05GSUdfU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSAgICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgICBDT05GSUdfU0hFTEw9L2Jpbi9rc2gKLSAgICAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotICAgICAgICBleGVjICRDT05GSUdfU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci0gICAgICBlbHNlCi0gICAgICAgICMgVHJ5IHVzaW5nIHByaW50Zi4KLSAgICAgICAgRUNITz0ncHJpbnRmICVzXG4nCi0gICAgICAgIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotCSAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgICMgQ29vbCwgcHJpbnRmIHdvcmtzCi0JICA6Ci0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgQ09ORklHX1NIRUxMPSRPUklHSU5BTF9DT05GSUdfU0hFTEwKLQkgIGV4cG9ydCBDT05GSUdfU0hFTEwKLQkgIFNIRUxMPSIkQ09ORklHX1NIRUxMIgotCSAgZXhwb3J0IFNIRUxMCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsc2UKLQkgICMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JICBwcmV2PToKLQotCSAgZm9yIGNtZCBpbiAnZWNobyB0ZXN0JyAnc2VkIDJxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgNTBxICJbJF0wIic7IGRvCi0JICAgIGlmIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYYGV2YWwgJGNtZGAiOyB9IDI+L2Rldi9udWxsCi0JICAgIHRoZW4KLQkgICAgICBicmVhawotCSAgICBmaQotCSAgICBwcmV2PSIkY21kIgotCSAgZG9uZQotCi0JICBpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIlskXTAiJzsgdGhlbgotCSAgICBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRwcmV2YAotCSAgICBleHBvcnQgZWNob190ZXN0X3N0cmluZwotCSAgICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiWyRdMCIgJHsxKyJbJF1AIn0KLQkgIGVsc2UKLQkgICAgIyBPb3BzLiAgV2UgbG9zdCBjb21wbGV0ZWx5LCBzbyBqdXN0IHN0aWNrIHdpdGggZWNoby4KLQkgICAgRUNITz1lY2hvCi0JICBmaQotICAgICAgICBmaQotICAgICAgZmkKLSAgICBmaQotICBmaQotZmkKLQotIyBDb3B5IGVjaG8gYW5kIHF1b3RlIHRoZSBjb3B5IHN1aXRhYmx5IGZvciBwYXNzaW5nIHRvIGxpYnRvb2wgZnJvbQotIyB0aGUgTWFrZWZpbGUsIGluc3RlYWQgb2YgcXVvdGluZyB0aGUgb3JpZ2luYWwsIHdoaWNoIGlzIHVzZWQgbGF0ZXIuCi1sdF9FQ0hPPSRFQ0hPCi1pZiB0ZXN0ICJYJGx0X0VDSE8iID0gIlgkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIjsgdGhlbgotICAgbHRfRUNITz0iJENPTkZJR19TSEVMTCBcXFwkXFskXTAgLS1mYWxsYmFjay1lY2hvIgotZmkKLQotQUNfU1VCU1QobHRfRUNITykKLV0pCiBfTFRfREVDTChbXSwgW1NIRUxMXSwgWzFdLCBbU2hlbGwgdG8gdXNlIHdoZW4gaW52b2tpbmcgc2hlbGwgc2NyaXB0c10pCi1fTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sCi0gICAgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2hlc10pCitfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlc10pCiBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogCisjIF9MVF9XSVRIX1NZU1JPT1QKKyMgLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19MVF9XSVRIX1NZU1JPT1RdLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQorQUNfQVJHX1dJVEgoW3N5c3Jvb3RdLAorWyAgLS13aXRoLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCitbXSwgW3dpdGhfc3lzcm9vdD1ub10pCisKK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorbHRfc3lzcm9vdD0KK2Nhc2UgJHt3aXRoX3N5c3Jvb3R9IGluICMoCisgeWVzKQorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKyAgIGZpCisgICA7OyAjKAorIC8qKQorICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgOzsgIygKKyBub3wnJykKKyAgIDs7ICMoCisgKikKKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9zeXNyb290fV0pCisgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorICAgOzsKK2VzYWMKKworIEFDX01TR19SRVNVTFQoWyR7bHRfc3lzcm9vdDotbm99XSkKK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAorW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorCiAjIF9MVF9FTkFCTEVfTE9DSwogIyAtLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfRU5BQkxFX0xPQ0tdLApAQCAtMTIzNiw3ICsxMjgxLDcgQEAKICAgOzsKICotKi1pcml4NiopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnWyNdbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBlY2hvICdbI11saW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgogICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgpAQCAtMTMyOSwxNCArMTM3NCwyNyBAQAogICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgogICBmaQogICA7Owotc3BhcmMqLSpzb2xhcmlzKikKKyotKnNvbGFyaXMqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgogICAgICo2NC1iaXQqKQogICAgICAgY2FzZSAkbHRfY3ZfcHJvZ19nbnVfbGQgaW4KLSAgICAgIHllcyopIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIgOzsKKyAgICAgIHllcyopCisgICAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICAgaT84Ni0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgorICAgICAgICAgIDs7CisgICAgICAgIHNwYXJjKi0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgICMgR05VIGxkIDIuMjEgaW50cm9kdWNlZCBfc29sMiBlbXVsYXRpb25zLiAgVXNlIHRoZW0gaWYgYXZhaWxhYmxlLgorICAgICAgICBpZiAke0xELWxkfSAtViB8IGdyZXAgX3NvbDIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgICAgTEQ9IiR7TEQtbGR9X3NvbDIiCisgICAgICAgIGZpCisgICAgICAgIDs7CiAgICAgICAqKQogCWlmICR7TEQtbGR9IC02NCAtciAtbyBjb25mdGVzdDIubyBjb25mdGVzdC5vID4vZGV2L251bGwgMj4mMTsgdGhlbgogCSAgTEQ9IiR7TEQtbGR9IC02NCIKQEAgLTEzNTQsMTQgKzE0MTIsNDcgQEAKIF0pIyBfTFRfRU5BQkxFX0xPQ0sKIAogCisjIF9MVF9QUk9HX0FSCisjIC0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX1BST0dfQVJdLAorW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKKzogJHtBUj1hcn0KKzogJHtBUl9GTEFHUz1jcnV9CitfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKK19MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0sIFtGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZV0pCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKKyAgW2x0X2N2X2FyX2F0X2ZpbGU9bm8KKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAorICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mQVNfTUVTU0FHRV9MT0dfRkQnCisgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorICAgICAgICBmaQorICAgICAgZmkKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorICAgICBdKQorICBdKQorCitpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KK2Vsc2UKKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCitmaQorX0xUX0RFQ0woW10sIFthcmNoaXZlcl9saXN0X3NwZWNdLCBbMV0sCisgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQorXSkjIF9MVF9QUk9HX0FSCisKKwogIyBfTFRfQ01EX09MRF9BUkNISVZFCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKLVtBQ19DSEVDS19UT09MKEFSLCBhciwgZmFsc2UpCi10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCi1fTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdKQorW19MVF9QUk9HX0FSCiAKIEFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQogdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CkBAIC0xMzgwLDE4ICsxNDcxLDI3IEBACiBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCiAgIG9wZW5ic2QqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgICopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgZXNhYwotICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCR0b29sX29sZGxpYiIKIGZpCisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyAgZGFyd2luKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249eWVzIDs7CisgICopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPW5vIDs7Citlc2FjCiBfTFRfREVDTChbXSwgW29sZF9wb3N0aW5zdGFsbF9jbWRzXSwgWzJdKQogX0xUX0RFQ0woW10sIFtvbGRfcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdKQogX0xUX1RBR0RFQ0woW10sIFtvbGRfYXJjaGl2ZV9jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuIG9sZC1zdHlsZSBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uXSwgWzBdLAorICAgIFtXaGV0aGVyIHRvIHVzZSBhIGxvY2sgZm9yIG9sZCBhcmNoaXZlIGV4dHJhY3Rpb25dKQogXSkjIF9MVF9DTURfT0xEX0FSQ0hJVkUKIAogCkBAIC0xNDE2LDE1ICsxNTE2LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zICIkYWNfb3V0ZmlsZSI7IHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG90aGVyIHRoYW4gdGhlIHVzdWFsIG91dHB1dC4KLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyMiB8fCBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICQyPXllcwpAQCAtMTQ2NCw3ICsxNTY0LDcgQEAKICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgogICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICAkRUNITyAiWCRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkRUNITyAiJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gY29uZnRlc3QuZXhwCiAgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgICQyPXllcwpAQCAtMTUyNyw2ICsxNjI3LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAorICBtaW50KikKKyAgICAjIE9uIE1pTlQgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgcnVuIG91dCBvZiBtZW1vcnkuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKwogICBhbWlnYW9zKikKICAgICAjIE9uIEFtaWdhT1Mgd2l0aCBwZGtzaCwgdGhpcyB0ZXN0IHRha2VzIGhvdXJzLCBsaXRlcmFsbHkuCiAgICAgIyBTbyB3ZSBqdXN0IHB1bnQgYW5kIHVzZSBhIG1pbmltdW0gbGluZSBsZW5ndGggb2YgODE5Mi4KQEAgLTE1NTIsNiArMTY1NywxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xOTY2MDgKICAgICA7OwogCisgIG9zMiopCisgICAgIyBUaGUgdGVzdCB0YWtlcyBhIGxvbmcgdGltZSBvbiBPUy8yLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyCisgICAgOzsKKwogICBvc2YqKQogICAgICMgRHIuIEhhbnMgRWtrZWhhcmQgUGxlc3NlciByZXBvcnRzIHNlZWluZyBhIGtlcm5lbCBwYW5pYyBydW5uaW5nIGNvbmZpZ3VyZQogICAgICMgZHVlIHRvIHRoaXMgdGVzdCB3aGVuIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXQgaXMgMSBvbiBUcnU2NC4gSXQgaXMgbm90CkBAIC0xNTkxLDggKzE3MDEsOCBAQAogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYCRTSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCi0JICAgICAgICAgPSAiWFgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKKyAgICAgIHdoaWxlIHsgdGVzdCAiWCJgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCisJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgogCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAogICAgICAgZG8KICAgICAgICAgaT1gZXhwciAkaSArIDFgCkBAIC0xNjQzLDcgKzE3NTMsNyBAQAogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi1bI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCitbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTE2ODQsNyArMTc5NCwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTY5Myw3ICsxODA5LDExIEBACiAgIGlmIChzZWxmKQogICAgIHsKICAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOwotICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgICAgIGVsc2UgcHV0cyAoZGxlcnJvciAoKSk7CisJfQogICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCiAgICAgfQogICBlbHNlCkBAIC0xODY5LDE2ICsxOTg5LDE2IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcwpAQCAtMjAzNyw2ICsyMTU3LDcgQEAKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKIEFDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKIG00X2lmKFskMV0sCiAJW10sIFsKQEAgLTIwNDUsMTYgKzIxNjYsMjMgQEAKICAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CiAgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKICAgZXNhYwotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0icyw9XChbW0EtWmEtel1dOlwpLFwxLGciIDs7CisgICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgZXNhYworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAkbHRfc2VkX3N0cmlwX2VxYAorICBjYXNlICRsdF9zZWFyY2hfcGF0aF9zcGVjIGluCisgICpcOyopCiAgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgogICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcwogICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAogICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgZWxzZQotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgZmkKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAncy87LyAvZydgCisgICAgOzsKKyAgKikKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICA7OworICBlc2FjCiAgICMgT2ssIG5vdyB3ZSBoYXZlIHRoZSBwYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB3ZSBjYW4gc3RlcCB0aHJvdWdoIGl0CiAgICMgYW5kIGFkZCBtdWx0aWxpYiBkaXIgaWYgbmVjZXNzYXJ5LgogICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0KQEAgLTIwNjcsNyArMjE5NSw3IEBACiAJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCiAgICAgZmkKICAgZG9uZQotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIiB8IGF3ayAnCiBCRUdJTiB7UlM9IiAiOyBGUz0iL3xcbiI7fSB7CiAgIGx0X2Zvbz0iIjsKICAgbHRfY291bnQ9MDsKQEAgLTIwODcsNyArMjIxNSwxMyBAQAogICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbW2x0X2Zvb11dKys7IH0KICAgaWYgKGx0X2ZyZXFbW2x0X2Zvb11dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9CiB9J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfc2VhcmNoX3BhdGhfc3BlY2AKKyAgIyBBV0sgcHJvZ3JhbSBhYm92ZSBlcnJvbmVvdXNseSBwcmVwZW5kcyAnLycgdG8gQzovZG9zL3BhdGhzCisgICMgZm9yIHRoZXNlIGhvc3RzLgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHxcCisgICAgICAkU0VEICdzLC9cKFtbQS1aYS16XV06XCksXDEsZydgIDs7CisgIGVzYWMKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCiBmaV0pCkBAIC0yMTEzLDcgKzIyNDcsNyBAQAogCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCkBAIC0yMTIyLDcgKzIyNTYsNyBAQAogICA7OwogCiBhaXhbWzQtOV1dKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCkBAIC0yMTc1LDcgKzIzMDksNyBAQAogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJworICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gZnVuY19lY2hvX2FsbCAiJGxpYiIgfCAkU0VEICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwpAQCAtMjE4Nyw3ICsyMzIxLDcgQEAKICAgOzsKIAogYnNkaVtbNDVdXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKQEAgLTIyMDYsOCArMjM0MCw5IEBACiAgIG5lZWRfdmVyc2lvbj1ubwogICBuZWVkX2xpYl9wcmVmaXg9bm8KIAotICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorICB5ZXMsKikKKyAgICAjIGdjYwogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgpAQCAtMjIyOCwzNiArMjM2Myw4MyBAQAogICAgIGN5Z3dpbiopCiAgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorbTRfaWYoWyQxXSwgW10sWworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC91c3IvbGliL3czMmFwaSJdKQogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAogICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCAkR1JFUCAiXmxpYnJhcmllczoiIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KLSAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5Ci0gICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKLSAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQotICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCi0gICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKLSAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICAgICAgZWxzZQotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICAgICAgZmkKICAgICAgIDs7CiAgICAgcHczMiopCiAgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgOzsKICAgICBlc2FjCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICA7OworCisgICosY2wqKQorICAgICMgTmF0aXZlIE1TVkMKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworCisgICAgY2FzZSAkYnVpbGRfb3MgaW4KKyAgICBtaW5ndyopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisgICAgICBsdF9zYXZlX2lmcz0kSUZTCisgICAgICBJRlM9JzsnCisgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisgICAgICBkbworICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisgICAgICBkb25lCisgICAgICBJRlM9JGx0X3NhdmVfaWZzCisgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW1thLXpBLVpdXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisgICAgICA7OworICAgIGN5Z3dpbiopCisgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCisgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisgICAgICBlbHNlCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIGZpCisgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorICAgICAgICRSTSBcJGRscGF0aCcKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwogICAgIDs7CiAKICAgKikKKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICAgOzsKICAgZXNhYwotICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgIDs7CkBAIC0yMjc4LDcgKzI0NjAsNyBAQAogICA7OwogCiBkZ3V4KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCkBAIC0yMjg2LDEwICsyNDY4LDYgQEAKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIAotZnJlZWJzZDEqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCiBmcmVlYnNkKiB8IGRyYWdvbmZseSopCiAgICMgRHJhZ29uRmx5IGRvZXMgbm90IGhhdmUgYW91dC4gIFdoZW4vaWYgdGhleSBpbXBsZW1lbnQgYSBuZXcKICAgIyB2ZXJzaW9uaW5nIG1lY2hhbmlzbSwgYWRqdXN0IHRoaXMuCkBAIC0yMjk3LDcgKzI0NzUsNyBAQAogICAgIG9iamZvcm1hdD1gL3Vzci9iaW4vb2JqZm9ybWF0YAogICBlbHNlCiAgICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGZyZWVic2RbWzEyM11dKikgb2JqZm9ybWF0PWFvdXQgOzsKKyAgICBmcmVlYnNkW1syM11dLiopIG9iamZvcm1hdD1hb3V0IDs7CiAgICAgKikgb2JqZm9ybWF0PWVsZiA7OwogICAgIGVzYWMKICAgZmkKQEAgLTIzMTUsNyArMjQ5Myw3IEBACiAgIGVzYWMKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgY2FzZSAkaG9zdF9vcyBpbgotICBmcmVlYnNkMiopCisgIGZyZWVic2QyLiopCiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogICAgIDs7CiAgIGZyZWVic2QzLltbMDFdXSogfCBmcmVlYnNkZWxmMy5bWzAxXV0qKQpAQCAtMjMzNSwxMiArMjUxMywyNiBAQAogICA7OwogCiBnbnUqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworaGFpa3UqKQorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIHJ1bnRpbWVfbG9hZGVyIgorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIApAQCAtMjM4NiwxMiArMjU3OCwxNCBAQAogICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICAgOzsKICAgZXNhYwotICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NS4KKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgogICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgIyBvciBmYWlscyBvdXRyaWdodCwgc28gb3ZlcnJpZGUgYXRvbWljYWxseToKKyAgaW5zdGFsbF9vdmVycmlkZV9tb2RlPTU1NQogICA7OwogCiBpbnRlcml4W1szLTldXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKQEAgLTI0MDcsNyArMjYwMSw3IEBACiAgICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwogICAgICopCiAJaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotCQl2ZXJzaW9uX3R5cGU9bGludXgKKwkJdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCWVsc2UKIAkJdmVyc2lvbl90eXBlPWlyaXgKIAlmaSA7OwpAQCAtMjQ0NCw5ICsyNjM4LDkgQEAKICAgZHluYW1pY19saW5rZXI9bm8KICAgOzsKIAotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTI0NTQsMjkgKzI2NDgsMzEgQEAKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisKICAgIyBTb21lIGJpbnV0aWxzIGxkIGFyZSBwYXRjaGVkIHRvIHNldCBEVF9SVU5QQVRICi0gIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICBzYXZlX2xpYmRpcj0kbGliZGlyCi0gIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKVwiOyBcCi0gICAgICAgTERGTEFHUz1cIlwkTERGTEFHUyAkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSlcIiIKLSAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAotICAgIFtBU19JRihbICgkT0JKRFVNUCAtcCBjb25mdGVzdCRhY19leGVleHQpIDI+L2Rldi9udWxsIHwgZ3JlcCAiUlVOUEFUSC4qJGxpYmRpciIgPi9kZXYvbnVsbF0sCi0gICAgICAgW3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXNdKV0pCi0gIExERkxBR1M9JHNhdmVfTERGTEFHUwotICBsaWJkaXI9JHNhdmVfbGliZGlyCisgIEFDX0NBQ0hFX1ZBTChbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoXSwKKyAgICBbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgc2F2ZV9saWJkaXI9JGxpYmRpcgorICAgIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKVwiOyBcCisJIExERkxBR1M9XCJcJExERkxBR1MgJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpXCIiCisgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAorICAgICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKKwkgW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXNdKV0pCisgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgICAgbGliZGlyPSRzYXZlX2xpYmRpcgorICAgIF0pCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCiAKICAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCiAgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBZGQgQUJJLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBzeXN0ZW0gbGlicmFyeSBwYXRoLgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYjY0IC91c3IvbGliNjQgL2xpYiAvdXNyL2xpYiIKLQogICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAogICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCi0gICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyAkbHRfbGRfZXh0cmEiCisgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZztzLyIvL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgogICBmaQogCiAgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgpAQCAtMjQ4OCw2ICsyNjg0LDE4IEBACiAgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCiAgIDs7CiAKK25ldGJzZGVsZiotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgOzsKKwogbmV0YnNkKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCiAgIG5lZWRfbGliX3ByZWZpeD1ubwpAQCAtMjUwNyw3ICsyNzE1LDcgQEAKICAgOzsKIAogbmV3c29zNikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTI1NzYsNyArMjc4NCw3IEBACiAgIDs7CiAKIHNvbGFyaXMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMjYwMSw3ICsyODA5LDcgQEAKICAgOzsKIAogc3lzdjQgfCBzeXN2NC4zKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0yNjI1LDcgKzI4MzMsNyBAQAogCiBzeXN2NCpNUCopCiAgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KLSAgICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvcicKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjY1Niw3ICsyODY0LDcgQEAKIAogdHBmKikKICAgIyBUUEYgaXMgYSBjcm9zcy10YXJnZXQgb25seS4gIFByZWZlcnJlZCBjcm9zcy1ob3N0ID0gR05VL0xpbnV4LgotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMjY2Niw3ICsyODc0LDcgQEAKICAgOzsKIAogdXRzNCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjcwOCw2ICsyOTE2LDggQEAKICAgICBUaGUgbGFzdCBuYW1lIGlzIHRoZSBvbmUgdGhhdCB0aGUgbGlua2VyIGZpbmRzIHdpdGggLWxOQU1FXV0pCiBfTFRfREVDTChbXSwgW3NvbmFtZV9zcGVjXSwgWzFdLAogICAgIFtbVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIG5hbWVdXSkKK19MVF9ERUNMKFtdLCBbaW5zdGFsbF9vdmVycmlkZV9tb2RlXSwgWzFdLAorICAgIFtQZXJtaXNzaW9uIG1vZGUgb3ZlcnJpZGUgZm9yIGluc3RhbGxhdGlvbiBvZiBzaGFyZWQgbGlicmFyaWVzXSkKIF9MVF9ERUNMKFtdLCBbcG9zdGluc3RhbGxfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZCB0byB1c2UgYWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIGEgc2hhcmVkIGFyY2hpdmVdKQogX0xUX0RFQ0woW10sIFtwb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0sCkBAIC0yODIwLDYgKzMwMzAsNyBAQAogQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pZG5sCiAKIEFDX0FSR19XSVRIKFtnbnUtbGRdLAogICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCkBAIC0yOTQxLDYgKzMxNTIsMTEgQEAKIGVzYWMKIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKIGNhc2UgJGhvc3Rfb3MgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKyAgICBmaQorICAgIDs7CiAgIGRhcndpbiopCiAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKQEAgLTI5NDksOCArMzE2NSw4IEBACiAgICAgZmkKICAgICA7OwogZXNhYwotX0xUX0RFQ0woW10sIFtyZWxvYWRfZmxhZ10sIFsxXSwgW0hvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXNdKWRubAotX0xUX0RFQ0woW10sIFtyZWxvYWRfY21kc10sIFsyXSlkbmwKK19MVF9UQUdERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKK19MVF9UQUdERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCiBdKSMgX0xUX0NNRF9SRUxPQUQKIAogCkBAIC0zMDAyLDE2ICszMjE4LDE4IEBACiAgICMgQmFzZSBNU1lTL01pbkdXIGRvIG5vdCBwcm92aWRlIHRoZSAnZmlsZScgY29tbWFuZCBuZWVkZWQgYnkKICAgIyBmdW5jX3dpbjMyX2xpYmlkIHNoZWxsIGZ1bmN0aW9uLCBzbyB1c2UgYSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcsCiAgICMgdW5sZXNzIHdlIGZpbmQgJ2ZpbGUnLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHdlIGFyZSBjcm9zcy1jb21waWxpbmcuCi0gIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICMgZnVuY193aW4zMl9saWJpZCBhc3N1bWVzIEJTRCBubSwgc28gZGlzYWxsb3cgaXQgaWYgdXNpbmcgTVMgZHVtcGJpbi4KKyAgaWYgKCB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJCU0Qgbm0iICYmIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgIGVsc2UKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgZmkKICAgOzsKIAotY2VnY2MpCitjZWdjYyopCiAgICMgdXNlIHRoZSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcuIFNlZSBtaW5ndyouCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlLWFybS0uKmxpdHRsZSguKmFyY2hpdGVjdHVyZTogYXJtKT8nCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKQEAgLTMwNDEsNiArMzI1OSwxMCBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCitoYWlrdSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKIGhwdXgxMC4yMCogfCBocHV4MTEqKQogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCiAgIGNhc2UgJGhvc3RfY3B1IGluCkBAIC0zMDQ5LDExICszMjcxLDExIEBACiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KICAgICA7OwogICBocHBhKjY0KikKLSAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nXQorICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEZbIC1dWzAtOV1bMC05XSkoLWJpdCk/KCBbTE1dU0IpPyBzaGFyZWQgb2JqZWN0KCBmaWxlKT9bLCAtXSogUEEtUklTQyBbMC05XVwuWzAtOV0nXQogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAogICAgIDs7CiAgICopCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV0uW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV1cLltbMC05XV0pIHNoYXJlZCBsaWJyYXJ5JwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2xpYmMuc2wKICAgICA7OwogICBlc2FjCkBAIC0zMDc0LDEyICszMjk2LDEyIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLW5ldGJzZCopCituZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCiAgIGVsc2UKQEAgLTMxNTMsNiArMzM3NSwyMSBAQAogICA7OwogZXNhYwogXSkKKworZmlsZV9tYWdpY19nbG9iPQord2FudF9ub2Nhc2VnbG9iPW5vCitpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgIG1pbmd3KiB8IHB3MzIqKQorICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKyAgICBlbHNlCisgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK2ZpCisKIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KQEAgLTMxNjAsNyArMzM5NywxMSBAQAogX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQogX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLSAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyJdKQorICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorICAgIFtIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCitfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKIF0pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECiAKIApAQCAtMzIxNyw3ICszNDU4LDE5IEBACiAgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKIGVsc2UKICAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCi0gIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFsiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiXSwgOikKKyAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuIDoKKyAgICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgZWxzZQorICAgIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFtkdW1wYmluICJsaW5rIC1kdW1wIl0sIDopCisgICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICAqQ09GRiopCisgICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIERVTVBCSU49OgorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCiAgIEFDX1NVQlNUKFtEVU1QQklOXSkKICAgaWYgdGVzdCAiJERVTVBCSU4iICE9ICI6IjsgdGhlbgogICAgIE5NPSIkRFVNUEJJTiIKQEAgLTMyMzAsMTMgKzM0ODMsMTMgQEAKIEFDX0NBQ0hFX0NIRUNLKFt0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlXSwgW2x0X2N2X25tX2ludGVyZmFjZV0sCiAgIFtsdF9jdl9ubV9pbnRlcmZhY2U9IkJTRCBubSIKICAgZWNobyAiaW50IHNvbWVfdmFyaWFibGUgPSAwOyIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAoZXZhbCAiJE5NIFwiY29uZnRlc3QuJGFjX29iamV4dFwiIiAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dCkKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIGNhdCBjb25mdGVzdC5vdXQgPiZBU19NRVNTQUdFX0xPR19GRAogICBpZiAkR1JFUCAnRXh0ZXJuYWwuKnNvbWVfdmFyaWFibGUnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X25tX2ludGVyZmFjZT0iTVMgZHVtcGJpbiIKQEAgLTMyNTEsNiArMzUwNCw2NyBAQAogZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX1BST0dfTk1dLCBbXSkKIAorIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQorIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCittNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCitBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCitsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCwKK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKworY2FzZSAkaG9zdF9vcyBpbgorY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisgICotLWlkZW50aWZ5LXN0cmljdCopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisgICAgOzsKKyAgKikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKyAgICA7OworICBlc2FjCisgIDs7CisqKQorICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorICA7OworZXNhYworXSkKK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAordGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworCitfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAorICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKK10pIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorCisKKyMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorbTRfZGVmdW4oW19MVF9QQVRIX01BTklGRVNUX1RPT0xdLAorW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCit0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorQUNfQ0FDSEVfQ0hFQ0soW2lmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbF0sIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2xdLAorICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0Kl0pCitpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorICBNQU5JRkVTVF9UT09MPToKK2ZpCitfTFRfREVDTChbXSwgW01BTklGRVNUX1RPT0xdLCBbMV0sIFtNYW5pZmVzdCB0b29sXSlkbmwKK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisKIAogIyBMVF9MSUJfTQogIyAtLS0tLS0tLQpAQCAtMzI1OSw3ICszNTczLDcgQEAKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBMSUJNPQogY2FzZSAkaG9zdCBpbgotKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKKyotKi1iZW9zKiB8ICotKi1jZWdjYyogfCAqLSotY3lnd2luKiB8ICotKi1oYWlrdSogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKICAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CiAgIDs7CiAqLW5jci1zeXN2NC4zKikKQEAgLTMyODcsNyArMzYwMSwxMiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQogCiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgIG52Y2MqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1YY29tcGlsZXIgLWZuby1idWlsdGluJyA7OworICAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicgOzsKKyAgZXNhYwogCiAgIF9MVF9DT01QSUxFUl9PUFRJT04oW2lmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zXSwKICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucywKQEAgLTMzMDQsNiArMzYyMyw3IEBACiBtNF9kZWZ1bihbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10sCiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0FXS10pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKQEAgLTMzNzEsOCArMzY5MSw4IEBACiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKIAogIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiBvcHRfY3I9CkBAIC0zMzk2LDYgKzM3MTYsNyBAQAogICAgICMgd2hpY2ggc3RhcnQgd2l0aCBAIG9yID8uCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJEFXSyBbJyJcCiAiICAgICB7bGFzdF9zZWN0aW9uPXNlY3Rpb247IHNlY3Rpb249XCQgM307IlwKKyIgICAgIC9eQ09GRiBTWU1CT0wgVEFCTEUve2ZvcihpIGluIGhpZGUpIGRlbGV0ZSBoaWRlW2ldfTsiXAogIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCiAiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAogIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXApAQCAtMzQwOCw2ICszNzI5LDcgQEAKICAgZWxzZQogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWwkgXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWwkgXV1bWwkgXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgIGZpCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKIAogICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgcGlwZV93b3Jrcz1ubwpAQCAtMzQyOSw3ICszNzUxLDcgQEAKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICAjIE5vdyB0cnkgdG8gZ3JhYiB0aGUgc3ltYm9scy4KICAgICBubGlzdD1jb25mdGVzdC5ubQotICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJG5saXN0KSAmJiB0ZXN0IC1zICIkbmxpc3QiOyB0aGVuCisgICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgogICAgICAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KICAgICAgIGlmIHNvcnQgIiRubGlzdCIgfCB1bmlxID4gIiRubGlzdCJUOyB0aGVuCiAJbXYgLWYgIiRubGlzdCJUICIkbmxpc3QiCkBAIC0zNDQxLDYgKzM3NjMsMTggQEAKICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUIGNvbnN0CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtMzQ1Miw3ICszNzg2LDcgQEAKIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogCiAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi1jb25zdCBzdHJ1Y3QgeworTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiB9CkBAIC0zNDc4LDE1ICszODEyLDE1IEBACiBfTFRfRU9GCiAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKIAkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KIAkgICAgcGlwZV93b3Jrcz15ZXMKIAkgIGZpCi0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCiAJZWxzZQogCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAogCWZpCkBAIC0zNTE5LDYgKzM4NTMsMTMgQEAKICAgQUNfTVNHX1JFU1VMVChvaykKIGZpCiAKKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgoraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitmaQorCiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF9waXBlXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLCBbMV0sCiAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCkBAIC0zNTI5LDYgKzM4NzAsOCBAQAogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sCiAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCiAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKK19MVF9ERUNMKFtdLCBbbm1fZmlsZV9saXN0X3NwZWNdLCBbMV0sCisgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgJE5NXSkKIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUwogCiAKQEAgLTM1NDAsNyArMzg4Myw2IEBACiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CiAKLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgogICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtMzU5MSw2ICszOTMzLDExIEBACiAgICAgICAjIERKR1BQIGRvZXMgbm90IHN1cHBvcnQgc2hhcmVkIGxpYnJhcmllcyBhdCBhbGwKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KICAgICAgIDs7CisgICAgaGFpa3UqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEhhaWt1LgorICAgICAgIyBUaGUgIi1zdGF0aWMiIGZsYWcgZXhpc3RzLCBidXQgaXMgYnJva2VuLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorICAgICAgOzsKICAgICBpbnRlcml4W1szLTldXSopCiAgICAgICAjIEludGVyaXggMy54IGdjYyAtZnBpYy8tZlBJQyBvcHRpb25zIGdlbmVyYXRlIGJyb2tlbiBjb2RlLgogICAgICAgIyBJbnN0ZWFkLCB3ZSByZWxvY2F0ZSBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUuCkBAIC0zNjQwLDYgKzM5ODcsMTIgQEAKIAkgIDs7CiAJZXNhYwogCTs7CisgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorCW00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorCTs7CiAgICAgICBkZ3V4KikKIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgZWMrKyopCkBAIC0zNjk2LDcgKzQwNDksNyBAQAogCSAgICA7OwogCWVzYWMKIAk7OwotICAgICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgS0NDKikKIAkgICAgIyBLQUkgQysrIENvbXBpbGVyCkBAIC0zNzI5LDggKzQwODIsOCBAQAogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAJICAgIDs7Ci0JICB4bGMqIHwgeGxDKikKLQkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQworCSAgeGxjKiB8IHhsQyogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikKKwkgICAgIyBJQk0gWEwgOC4wLCA5LjAgb24gUFBDIGFuZCBCbHVlR2VuZQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctcXN0YXRpY2xpbmsnCkBAIC0zNzYwLDcgKzQxMTMsNyBAQAogCSAgICA7OwogCWVzYWMKIAk7OwotICAgICAgbmV0YnNkKikKKyAgICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKIAk7OwogICAgICAgKnFueCogfCAqbnRvKikKICAgICAgICAgIyBRTlggdXNlcyBHTlUgQysrLCBidXQgbmVlZCB0byBkZWZpbmUgLXNoYXJlZCBvcHRpb24gdG9vLCBvdGhlcndpc2UKQEAgLTM3OTIsNyArNDE0NSw3IEBACiAJOzsKICAgICAgIHNvbGFyaXMqKQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCisJICBDQyogfCBzdW5DQyopCiAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKQEAgLTM4OTYsNiArNDI0OSwxMiBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSGFpa3UuCisgICAgICAjIFRoZSAiLXN0YXRpYyIgZmxhZyBleGlzdHMsIGJ1dCBpcyBicm9rZW4uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgICAgICA7OworCiAgICAgaHB1eCopCiAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKICAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZwpAQCAtMzkzOCw2ICs0Mjk3LDE1IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwogICAgICAgOzsKICAgICBlc2FjCisKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIG52Y2MqKSAjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1YbGlua2VyICcKKyAgICAgIGlmIHRlc3QgLW4gIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkiOyB0aGVuCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iLVhjb21waWxlciAkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIgorICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYwogICBlbHNlCiAgICAgIyBQT1JUTUUgQ2hlY2sgZm9yIGZsYWcgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaCB0aGUgc3lzdGVtIGNvbXBpbGVyLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTM5ODAsNyArNDM0OCw3IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogICAgICAgOzsKIAotICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICMgb2xkIEludGVsIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogICAgICAgZWNjKikKQEAgLTQwMDEsNyArNDM2OSwxMyBAQAogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLS1zaGFyZWQnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKIAk7OwotICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCisgICAgICBuYWdmb3IqKQorCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLC1XbCwsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCTs7CisgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKQEAgLTQwMTMsMjUgKzQzODcsNDAgQEAKICAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCiAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAgICAgICAgIDs7Ci0gICAgICB4bCopCi0JIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xIG9uIFBQQworICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSwgMTEuMSBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKIAk7OwogICAgICAgKikKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDZXJlc1wgRm9ydHJhbiogfCAqU3VuKkZvcnRyYW4qXCBbWzEtN11dLiogfCAqU3VuKkZvcnRyYW4qXCA4LltbMC0zXV0qKQorCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nJworCSAgOzsKKwkqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCisJICA7OwogCSpTdW5cIEMqKQogCSAgIyBTdW4gQyA1LjkKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICA7OwotCSpTdW5cIEYqKQotCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgICAgKkludGVsKlwgW1tDRl1dKkNvbXBpbGVyKikKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKwkgIDs7CisJKlBvcnRsYW5kXCBHcm91cCopCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZwaWMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC00MDYzLDcgKzQ0NTIsNyBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICopCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKQEAgLTQxMjAsOSArNDUwOSwxMSBAQAogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKUAmdEBtNF9pZihbJDFdLFtdLFsgLURQSUNdLFttNF9pZihbJDFdLFtDWFhdLFsgLURQSUNdLFtdKV0pIgogICAgIDs7CiBlc2FjCi1BQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKLV9MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAotCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKworQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSwKKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCitfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKQogCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCkBAIC00MTQxLDYgKzQ1MzIsOCBAQAogX0xUX1RBR0RFQ0woW3BpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfcGljXSwgWzFdLAogCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQogCitfTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKKwlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAjCkBAIC00MTYxLDYgKzQ1NTQsNyBAQAogbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCkBAIC00MTY5LDI3ICs0NTYzLDQwIEBACiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCiBtNF9pZihbJDFdLCBbQ1hYXSwgWwogICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXhbWzQtOV1dKikKICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KICAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisgICAgIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsIGRlZmluZWQKKyAgICAjIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgogICAgIGlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZWxzZQogICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZmkKICAgICA7OwogICBwdzMyKikKICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0iJGx0ZGxsX2NtZHMiCi0gIDs7CisgICAgOzsKICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKLSAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gIDs7CisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICBjbCopCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPSdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUnxfSU1QT1JUX0RFU0NSSVBUT1JfLionCisgICAgICA7OworICAgICopCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGdudSopCisgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KKyAgICA7OwogICAqKQogICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gIDs7CisgICAgOzsKICAgZXNhYwotICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KIF0sIFsKICAgcnVucGF0aF92YXI9CiAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTQyMDQsNyArNDYxMSw2IEBACiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZApAQCAtNDI0OSwxMCArNDY1NSwzOSBAQAogICBvcGVuYnNkKikKICAgICB3aXRoX2dudV9sZD1ubwogICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBnbnUqKQorICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPW5vCisgICAgOzsKICAgZXNhYwogCiAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisKKyAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCisgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgorICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwogICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKwkjIFRoZSBBSVggcG9ydCBvZiBHTlUgbGQgaGFzIGFsd2F5cyBhc3BpcmVkIHRvIGNvbXBhdGliaWxpdHkKKwkjIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIuICBIb3dldmVyLCBhcyB0aGUgd2FybmluZyBpbiB0aGUgR05VIGxkCisJIyBibG9jayBzYXlzLCB2ZXJzaW9ucyBiZWZvcmUgMi4xOS41KiBjb3VsZG4ndCByZWFsbHkgY3JlYXRlIHdvcmtpbmcKKwkjIHNoYXJlZCBsaWJyYXJpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVyZmFjZSB1c2VkLgorCWNhc2UgYCRMRCAtdiAyPiYxYCBpbgorCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuMTkuNSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi5bWzItOV1dKikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCBbWzMtOV1dKikgOzsKKwkgICopCisJICAgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCSAgICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwk7OworICAgIGVzYWMKKyAgZmkKKworICBpZiB0ZXN0ICIkbHRfdXNlX2dudV9sZF9pbnRlcmZhY2UiID0geWVzOyB0aGVuCiAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKICAgICB3bGFyYz0nJHt3bH0nCiAKQEAgLTQyNzAsNiArNDcwNSw3IEBACiAgICAgZmkKICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICpHTlVcIGdvbGQqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CiAgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KQEAgLTQyODUsMTEgKzQ3MjEsMTIgQEAKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjE5LCBpcyByZXBvcnRlZAogKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCiAqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKLSoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKLSoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGJpbnV0aWxzCisqKiogMi4yMCBvciBhYm92ZSwgb3IgbW9kaWZ5IHlvdXIgUEFUSCBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQuCisqKiogWW91IHdpbGwgdGhlbiBuZWVkIHRvIHJlc3RhcnQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KIAogX0xUX0VPRgogICAgICAgZmkKQEAgLTQzMjUsMTAgKzQ3NjIsMTIgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKQEAgLTQzNDYsNiArNDc4NSwxMSBAQAogICAgICAgZmkKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00MzYxLDcgKzQ4MDUsNyBAQAogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCi0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251KQorICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KICAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTQzNzEsMTUgKzQ4MTUsMTYgQEAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKIAkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCiAgICAgICB0aGVuCi0JdG1wX2FkZGZsYWc9CisJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtNDM5MCwxMyArNDgzNSwxNyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7Ci0JeGxbW2NDXV0qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwl4bFtbY0NdXSogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKKwludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcworCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCkBAIC00NDEyLDE3ICs0ODYxLDE2IEBACiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCXhsZiopCisJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0JICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgIGZpCiAJICA7OwogCWVzYWMKQEAgLTQ0MzEsMTMgKzQ4NzksMTMgQEAKICAgICAgIGZpCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAJd2xhcmM9CiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTQ0NTUsOCArNDkwMyw4IEBACiAKIF9MVF9FT0YKICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDUwMiw4ICs0OTUwLDggQEAKIAogICAgICopCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCkBAIC00NTQzLDggKzQ5OTEsMTAgQEAKICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KIAkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisJIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCisJIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQogCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKQEAgLTQ2MDYsNiArNTA1Niw3IEBACiAJaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCiAJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKIAlmaQorCV9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPW5vCiAgICAgICBlbHNlCiAJIyBub3QgdXNpbmcgZ2NjCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KQEAgLTQ2MzEsOSArNTA4Miw5IEBACiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0gICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgogICAgICAgZWxzZQogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCkBAIC00NjQyLDE0ICs1MDkzLDE5IEBACiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKIAkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJwotCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGVsc2UKKwkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgZmkKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKIAkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJwpAQCAtNDY4MSwyMCArNTEzNyw2NCBAQAogICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSAgICAgIGxpYmV4dD1saWIKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYCRFQ0hPICJYJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgY2wqKQorCSMgTmF0aXZlIE1TVkMKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworCV9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICBlbHNlCisJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICBmaX4KKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKwkgIGxpbmtuYW1lcz0nCisJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT0nX05VTExfSU1QT1JUX0RFU0NSSVBUT1J8X0lNUE9SVF9ERVNDUklQVE9SXy4qJworCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKwkjIERvbid0IHVzZSByYW5saWIKKwlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgKikKKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICA7OworCSAgZXNhY34KKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgZmknCisJOzsKKyAgICAgICopCisJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKQEAgLTQ3MDcsMTAgKzUyMDcsNiBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KICAgICAgIDs7CiAKLSAgICBmcmVlYnNkMSopCi0gICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICA7OwotCiAgICAgIyBGcmVlQlNEIDIuMi5bMDEyXSBhbGxvd3MgdXMgdG8gaW5jbHVkZSBjKytydDAubyB0byBnZXQgQysrIGNvbnN0cnVjdG9yCiAgICAgIyBzdXBwb3J0LiAgRnV0dXJlIHZlcnNpb25zIGRvIHRoaXMgYXV0b21hdGljYWxseSwgYnV0IGFuIGV4cGxpY2l0IGMrK3J0MC5vCiAgICAgIyBkb2VzIG5vdCBicmVhayBhbnl0aGluZywgYW5kIGhlbHBzIHNpZ25pZmljYW50bHkgKGF0IHRoZSBjb3N0IG9mIGEgbGl0dGxlCkBAIC00NzIzLDcgKzUyMTksNyBAQAogICAgICAgOzsKIAogICAgICMgVW5mb3J0dW5hdGVseSwgb2xkZXIgdmVyc2lvbnMgb2YgRnJlZUJTRCAyIGRvIG5vdCBoYXZlIHRoaXMgZmVhdHVyZS4KLSAgICBmcmVlYnNkMiopCisgICAgZnJlZWJzZDIuKikKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCkBAIC00NzMyLDcgKzUyMjgsNyBAQAogCiAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwpAQCAtNDc0MCw3ICs1MjM2LDcgQEAKIAogICAgIGhwdXg5KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGZpCkBAIC00NzU1LDE0ICs1MjUxLDEzIEBACiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0JX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9JytiICRsaWJkaXInCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKQEAgLTQ3NzQsMTYgKzUyNjksMTYgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAlpYTY0KikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAllc2FjCiAgICAgICBlbHNlCkBAIC00Nzk1LDcgKzUyOTAsMTQgQEAKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCW00X2lmKCQxLCBbXSwgWworCSAgIyBPbGRlciB2ZXJzaW9ucyBvZiB0aGUgMTEuMDAgY29tcGlsZXIgZG8gbm90IHVuZGVyc3RhbmQgLWIgeWV0CisJICAjIChIUDkyNDUzLTAxIEEuMTEuMDEuMjAgZG9lc24ndCwgSFA5MjQ1My0wMSBCLjExLlguMzUxNzUtMzUxNzYuR1AgZG9lcykKKwkgIF9MVF9MSU5LRVJfT1BUSU9OKFtpZiAkQ0MgdW5kZXJzdGFuZHMgLWJdLAorCSAgICBfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfX2IsICQxKSwgWy1iXSwKKwkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJ10pXSwKKwkgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddKQogCSAgOzsKIAllc2FjCiAgICAgICBmaQpAQCAtNDgyMywxOSArNTMyNSwzNCBAQAogCiAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAogCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0gICAgICAgIEFDX0xJTktfSUZFTFNFKGludCBmb28odm9pZCkge30sCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgICkKLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKKwkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCisJICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisJICAgQUNfTElOS19JRkVMU0UoCisJICAgICBbQUNfTEFOR19TT1VSQ0UoCisJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisJCQkgICAgICBbQysrXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisJCQkgICAgICBbRm9ydHJhbiA3N10sIFtbCisgICAgICBzdWJyb3V0aW5lIGZvbworICAgICAgZW5kXV0sCisJCQkgICAgICBbRm9ydHJhbl0sIFtbCisgICAgICBzdWJyb3V0aW5lIGZvbworICAgICAgZW5kXV0pXSldLAorCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAorCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCisgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJZmkKICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC00ODQ0LDcgKzUzNjEsNyBAQAogICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEub3V0CiAgICAgICBlbHNlCkBAIC00ODk3LDE3ICs1NDE0LDE3IEBACiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKICAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICA7OwogCiAgICAgb3NmMyopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKQEAgLTQ5MTcsMTMgKzU0MzQsMTMgQEAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKwkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKIAogCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCkBAIC00OTM2LDkgKzU0NTMsOSBAQAogICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJd2xhcmM9JyR7d2x9JwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogICAgICAgZWxzZQogCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSoiQ29tcGlsZXJzIDUuMCIqKQpAQCAtNTExNCwzNiArNTYzMSwzOCBAQAogICAgICAgIyBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIGltcGxpY2l0bHkgbGlua3Mgd2l0aCAtbGMgc2luY2Ugb24gc29tZQogICAgICAgIyBzeXN0ZW1zLCAtbGdjYyBoYXMgdG8gY29tZSBiZWZvcmUgLWxjLiBJZiBnY2MgYWxyZWFkeSBwYXNzZXMgLWxjCiAgICAgICAjIHRvIGxkLCBkb24ndCBhZGQgLWxjIGJlZm9yZSAtbGdjYy4KLSAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluXSkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0sCisJW2x0X2N2X11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSksCisJWyRSTSBjb25mdGVzdCoKKwllY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKIAotICAgICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcnI7IHRoZW4KLSAgICAgICAgc29uYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYj1jb25mdGVzdAotICAgICAgICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgICAgICAgZGVwbGlicz0KLSAgICAgICAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCi0JcGljX2ZsYWc9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKQotICAgICAgICBjb21waWxlcl9mbGFncz0tdgotICAgICAgICBsaW5rZXJfZmxhZ3M9LXYKLSAgICAgICAgdmVyc3RyaW5nPQotICAgICAgICBvdXRwdXRfb2JqZGlyPS4KLSAgICAgICAgbGlibmFtZT1jb25mdGVzdAotICAgICAgICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQotICAgICAgICBpZiBBQ19UUllfRVZBTChfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKQotICAgICAgICB0aGVuCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLSAgICAgICAgZWxzZQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwotICAgICAgICBmaQotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKLSAgICAgIGVsc2UKLSAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1Ci0gICAgICBmaQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKV0pCisJaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcnI7IHRoZW4KKwkgIHNvbmFtZT1jb25mdGVzdAorCSAgbGliPWNvbmZ0ZXN0CisJICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKKwkgIGRlcGxpYnM9CisJICB3bD0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKKwkgIHBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKKwkgIGNvbXBpbGVyX2ZsYWdzPS12CisJICBsaW5rZXJfZmxhZ3M9LXYKKwkgIHZlcnN0cmluZz0KKwkgIG91dHB1dF9vYmpkaXI9LgorCSAgbGlibmFtZT1jb25mdGVzdAorCSAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CisJICBpZiBBQ19UUllfRVZBTChfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKQorCSAgdGhlbgorCSAgICBsdF9jdl9bXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCSAgZWxzZQorCSAgICBsdF9jdl9bXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkgIGZpCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKKwllbHNlCisJICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKKwlmaQorCSRSTSBjb25mdGVzdCoKKwldKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSRsdF9jdl9bXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKQogICAgICAgOzsKICAgICBlc2FjCiAgIGZpCkBAIC01MTgwLDkgKzU2OTksNiBAQAogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXSwgWzFdLAogICAgIFtGbGFnIHRvIGhhcmRjb2RlICRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KICAgICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdKQotX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXSwgWzFdLAotICAgIFtbSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgJGxpYmRpciBpbnRvIGEgYmluYXJ5Ci0gICAgZHVyaW5nIGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdXSkKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl0sIFsxXSwKICAgICBbV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudF0pCiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF0sIFswXSwKQEAgLTUyMDgsOCArNTcyNCw2IEBACiAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQogX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAogICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQotX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAotICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQogX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCiAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCiBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCkBAIC01MjIwLDYgKzU3MzQsOCBAQAogICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQogX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCiBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAogICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQogZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCkBAIC01MzEzLDE0ICs1ODI5LDE1IEBACiBdKSMgX0xUX0xBTkdfQ19DT05GSUcKIAogCi0jIF9MVF9QUk9HX0NYWAotIyAtLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19DWFggaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgZysrIGlmIHRoZXJlIGlzIG5vIGMrKwotIyBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19DWFhdLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9jYXVnaHRfQ1hYX2Vycm9yPXllc10pCi1BQ19QUk9HX0NYWAorIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQorIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKK1ttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KQEAgLTUzMjgsMjIgKzU4NDUsNiBAQAogZWxzZQogICBfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXMKIGZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfQ1hYCi0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSwgW10pCi0KLQotIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQotIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCi0jIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KLW00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19DWFhdKWRubAotbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi1tNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiAKIEFDX0xBTkdfUFVTSChDKyspCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KQEAgLTUzNTUsNyArNTg1Niw2IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKQEAgLTUzNjUsNiArNTg2NSw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC01Mzk2LDYgKzU4OTgsNyBAQAogCiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9JENDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgbHRfc2F2ZV9MRD0kTEQKICAgbHRfc2F2ZV9HQ0M9JEdDQwogICBHQ0M9JEdYWApAQCAtNTQxMyw2ICs1OTE2LDcgQEAKICAgZmkKICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKICAgQ0M9JHtDWFgtImMrKyJ9CisgIENGTEFHUz0kQ1hYRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNTQzNCw4ICs1OTM4LDggQEAKICAgICAgICMgQ2hlY2sgaWYgR05VIEMrKyB1c2VzIEdOVSBsZCBhcyB0aGUgdW5kZXJseWluZyBsaW5rZXIsIHNpbmNlIHRoZQogICAgICAgIyBhcmNoaXZpbmcgY29tbWFuZHMgYmVsb3cgYXNzdW1lIHRoYXQgR05VIGxkIGlzIGJlaW5nIHVzZWQuCiAgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTQ2Nyw3ICs1OTcxLDcgQEAKICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0gICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKyAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAogICAgIGVsc2UKICAgICAgIEdYWD1ubwpAQCAtNTU3NiwxMCArNjA4MCwxMCBAQAogICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICMgZXhlY3V0YWJsZS4KLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAKLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICAgIGVsc2UKICAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCkBAIC01NTg4LDE0ICs2MDkyLDE5IEBACiAgICAgICAgICAgZWxzZQogCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKIAkgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgZWxzZQorCSAgICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBmaQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZAogCSAgICAjIGxpYnJhcmllcy4KQEAgLTU2MjUsMjggKzYxMzQsNzUgQEAKICAgICAgICAgOzsKIAogICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisJLGNsKiB8IG5vLGNsKikKKwkgICMgTmF0aXZlIE1TVkMKKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJICBsaWJleHQ9bGliCisJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgICAgZWxzZQorCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgICBmaX4KKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgICBsaW5rbmFtZXM9JworCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCSAgIyBEb24ndCB1c2UgcmFubGliCisJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAgICouZXhlfCouRVhFKSA7OworCSAgICAgICopCisJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkJOzsKKwkgICAgZXNhY34KKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgICBmaScKKwkgIDs7CisJKikKKwkgICMgZysrCisJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKIAotICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICAgICAgZWxzZQotCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgICAgICBmaX4KLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgIGZpCi0gICAgICAgIDs7CisJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgIGVsc2UKKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICBmaX4KKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgZWxzZQorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICBmaQorCSAgOzsKKwllc2FjCisJOzsKICAgICAgIGRhcndpbiogfCByaGFwc29keSopCiAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQogCTs7CkBAIC01NjY5LDcgKzYyMjUsNyBAQAogICAgICAgICBlc2FjCiAgICAgICAgIDs7CiAKLSAgICAgIGZyZWVic2RbWzEyXV0qKQorICAgICAgZnJlZWJzZDIuKikKICAgICAgICAgIyBDKysgc2hhcmVkIGxpYnJhcmllcyByZXBvcnRlZCB0byBiZSBmYWlybHkgYnJva2VuIGJlZm9yZQogCSMgc3dpdGNoIHRvIEVMRgogICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC01Njg4LDYgKzYyNDQsMTEgQEAKICAgICAgIGdudSopCiAgICAgICAgIDs7CiAKKyAgICAgIGhhaWt1KikKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgICA7OworCiAgICAgICBocHV4OSopCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgpAQCAtNTcxMiwxMSArNjI3MywxMSBAQAogICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KICAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKICAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAgICAgICAgICAgICA7OwogICAgICAgICAgICopCiAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNTc3Nyw3ICs2MzM4LDcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAgICAgICAgICAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTU3ODcsMTAgKzYzNDgsMTAgQEAKIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgaWE2NCopCi0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgKikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgIGVzYWMKIAkgICAgICBmaQpAQCAtNTgyMCw3ICs2MzgxLDcgQEAKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgICBDQyopCiAJICAgICMgU0dJIEMrKwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAtYXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBJUklYIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTU4MzEsOSArNjM5Miw5IEBACiAgICAgICAgICAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgIGVsc2UKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwogCSAgICAgIGZpCiAJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwpAQCAtNTg0NCw3ICs2NDA1LDcgQEAKICAgICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCiAgICAgICAgIDs7CiAKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgS0NDKikKIAkgICAgIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgpAQCAtNTg2Miw3ICs2NDIzLDcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01ODk5LDI2ICs2NDYwLDI2IEBACiAgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCiAgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgogCSAgICBjYXNlIGAkQ0MgLVZgIGluCi0JICAgICpwZ0NDXCBbWzEtNV1dKiB8ICpwZ2NwcFwgW1sxLTVdXSopCisJICAgICpwZ0NDXCBbWzEtNV1dLiogfCAqcGdjcHBcIFtbMS01XV0uKikKIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCiAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KIAkJJFJBTkxJQiAkb2xkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7Ci0JICAgICopICMgVmVyc2lvbiA2IHdpbGwgdXNlIHdlYWsgc3ltYm9scworCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7CkBAIC01OTI2LDcgKzY0ODcsNyBAQAogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICAgICAgOzsKIAkgIGN4eCopCiAJICAgICMgQ29tcGFxIEMrKwpAQCAtNTk0NSw5ICs2NTA2LDkgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gJEVDSE8gIlgkdGVtcGxpc3QiIHwgJFhzZWQgLWUgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiWCRsaXN0IiB8ICRYc2VkJwogCSAgICA7OwotCSAgeGwqKQorCSAgeGwqIHwgbXBpeGwqIHwgYmd4bCopCiAJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU5NjcsMTMgKzY1MjgsMTMgQEAKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJwogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAogCSAgICAgICMgTm90IHN1cmUgd2hldGhlciBzb21ldGhpbmcgYmFzZWQgb24KIAkgICAgICAjICRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxCiAJICAgICAgIyB3b3VsZCBiZSBiZXR0ZXIuCi0JICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2Z1bmNfZWNob19hbGwnCiAKIAkgICAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTYwNDIsNyArNjYwMyw3IEBACiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCiAJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGZpCi0JICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisJICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAJZWxzZQogCSAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWZpCkBAIC02MDc3LDE1ICs2NjM4LDE1IEBACiAJICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICBvc2YzKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAJCTs7CiAJICAgICAgKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+CiAJICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKwkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgogCSAgICAgICAgICAkUk0gJGxpYi5leHAnCiAJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCiAJCTs7CkBAIC02MTAxLDE3ICs2NjYyLDE3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiIHwgJEdSRVAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gJEVDSE8gIlgkdGVtcGxpc3QiIHwgJFhzZWQgLWUgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKIAkgICAgICBjYXNlICRob3N0IGluCiAJICAgICAgICBvc2YzKikKLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgICAqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgZXNhYwogCkBAIC02MTIxLDcgKzY2ODIsNyBAQAogCSAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAKIAkgICAgZWxzZQogCSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydApAQCAtNjE1Nyw3ICs2NzE4LDcgQEAKIAogICAgICAgc29sYXJpcyopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgQ0MqKQorICAgICAgICAgIENDKiB8IHN1bkNDKikKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKQEAgLTYxNzgsNyArNjczOSw3IEBACiAJICAgIGVzYWMKIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAKLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdmdW5jX2VjaG9fYWxsJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTYxOTgsMTQgKzY3NTksMTQgQEAKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCiAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAkgICAgICBlbHNlCiAJICAgICAgICAjIGcrKyAyLjcgYXBwZWFycyB0byByZXF1aXJlIGAtRycgTk9UIGAtc2hhcmVkJyBvbiB0aGlzCiAJICAgICAgICAjIHBsYXRmb3JtLgpAQCAtNjIxNiw3ICs2Nzc3LDcgQEAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGZpCiAKIAkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkd2wkbGliZGlyJwpAQCAtNjI3MCw2ICs2ODMxLDEwIEBACiAgICAgICAgICAgQ0MqKQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkb2xkb2Jqc34KKwkgICAgICAnIiRfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKSIKKwkgICAgX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJHJlbG9hZF9vYmpzfgorCSAgICAgICciJF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKSIKIAkgICAgOzsKIAkgICopCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKQEAgLTYzMjUsNiArNjg5MCw3IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKICAgTERDWFg9JExECiAgIExEPSRsdF9zYXZlX0xECiAgIEdDQz0kbHRfc2F2ZV9HQ0MKQEAgLTYzMzksNiArNjkwNSwyOSBAQAogXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKIAogCisjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorIworIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCisjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgorbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCitmdW5jX3N0cmlwbmFtZV9jbmYgKCkKK3sKKyAgY2FzZSAkezJ9IGluCisgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgZXNhYworfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKwogIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCkBAIC02MzQ3LDYgKzY5MzYsNyBAQAogIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCiBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCiBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCitBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6CiBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CiBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQpAQCAtNjM5Niw3ICs2OTg2LDIwIEBACiAgIH0KIH07CiBfTFRfRU9GCitdLCBbJDFdLCBbR09dLCBbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3BhY2thZ2UgZm9vCitmdW5jIGZvbygpIHsKK30KK19MVF9FT0YKIF0pCisKK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OworKlwgLWZ1c2UtbGlua2VyLXBsdWdpbipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXVzZS1saW5rZXItcGx1Z2luIiA7OworZXNhYworCiBkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5CiBkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgogaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KQEAgLTY0MDgsNyArNzAxMSw3IEBACiAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KIAogICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0gICAgY2FzZSAkcCBpbgorICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KIAogICAgIC1MKiB8IC1SKiB8IC1sKikKICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgpAQCAtNjQxNywxMyArNzAyMCwyMiBAQAogICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCiAJIHByZXY9JHAKIAkgY29udGludWUKLSAgICAgICBlbHNlCi0JIHByZXY9CiAgICAgICAgZmkKIAorICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCisgICAgICAgICBjYXNlICRwIGluCisgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICBlc2FjCisgICAgICAgZmkKKyAgICAgICBjYXNlICRwIGluCisgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICBlc2FjCiAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAkcCBpbgotCSAtTCogfCAtUiopCisJIGNhc2UgJHtwcmV2fSBpbgorCSAtTCB8IC1SKQogCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQogCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgpAQCAtNjQ0Myw4ICs3MDU1LDEwIEBACiAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCiAJIGZpCiAgICAgICAgZmkKKyAgICAgICBwcmV2PQogICAgICAgIDs7CiAKKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKICAgICAqLiRvYmpleHQpCiAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCiAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCkBAIC02NDgwLDYgKzcwOTQsNyBAQAogZmkKIAogJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwogCiAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgogbTRfaWYoWyQxXSwgW0NYWF0sCkBAIC02NTE2LDcgKzcxMzEsNyBAQAogCiBzb2xhcmlzKikKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqKQorICBDQyogfCBzdW5DQyopCiAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCiAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCiAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwpAQCAtNjU2MCwzMiArNzE3NSwxNiBAQAogXSkjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMKIAogCi0jIF9MVF9QUk9HX0Y3NwotIyAtLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19GNzcgaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZwotIyBpZiB0aGVyZSBpcyBubyBmb3J0cmFuIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0Y3N10sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRjc3PXllc10pCi1BQ19QUk9HX0Y3NwotaWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KLSAgX2x0X2Rpc2FibGVfRjc3PXllcwotZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19GNzcKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GNzddLCBbXSkKLQotCiAjIF9MVF9MQU5HX0Y3N19DT05GSUcoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIDc3IGNvbXBpbGVyIGFyZQogIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCiAjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19GNzdfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19GNzddKWRubAotQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCitbQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCitpZiB0ZXN0IC16ICIkRjc3IiB8fCB0ZXN0ICJYJEY3NyIgPSAiWG5vIjsgdGhlbgorICBfbHRfZGlzYWJsZV9GNzc9eWVzCitmaQogCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTY1OTUsNyArNzE5NCw2IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubwpAQCAtNjYwNCw2ICs3MjAyLDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY2NDMsNyArNzI0Myw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7Rjc3LSJmNzcifQorICBDRkxBR1M9JEZGTEFHUwogICBjb21waWxlcj0kQ0MKICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02Njk3LDM4ICs3Mjk5LDI0IEBACiAKICAgR0NDPSRsdF9zYXZlX0dDQwogICBDQz0iJGx0X3NhdmVfQ0MiCisgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgogZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKIF0pIyBfTFRfTEFOR19GNzdfQ09ORklHCiAKIAotIyBfTFRfUFJPR19GQwotIyAtLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0ZDIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GQ10sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRkM9eWVzXSkKLUFDX1BST0dfRkMKLWlmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgotICBfbHRfZGlzYWJsZV9GQz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRkMKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GQ10sIFtdKQotCi0KICMgX0xUX0xBTkdfRkNfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIGNvbXBpbGVyIGFyZQogIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCiAjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19GQ19DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0ZDXSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuKQorW0FDX0xBTkdfUFVTSChGb3J0cmFuKQorCitpZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRkM9eWVzCitmaQogCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTY3MzgsNyArNzMyNiw2IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubwpAQCAtNjc0Nyw2ICs3MzM0LDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY3ODYsNyArNzM3NSw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7RkMtImY5NSJ9CisgIENGTEFHUz0kRkNGTEFHUwogICBjb21waWxlcj0kQ0MKICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKIApAQCAtNjg0Miw3ICs3NDMzLDggQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgR0NDPSRsdF9zYXZlX0dDQwotICBDQz0iJGx0X3NhdmVfQ0MiCisgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKQEAgLTY4NzksMTAgKzc0NzEsMTIgQEAKIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9eWVzCiBDQz0ke0dDSi0iZ2NqIn0KK0NGTEFHUz0kR0NKRkxBR1MKIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCkBAIC02ODkyLDYgKzc0ODYsOCBAQAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAKIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiAKICMjIENBVkVBVCBFTVBUT1I6CiAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNjkxMSwxMCArNzUwNyw4MiBAQAogQUNfTEFOR19SRVNUT1JFCiAKIEdDQz0kbHRfc2F2ZV9HQ0MKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBdKSMgX0xUX0xBTkdfR0NKX0NPTkZJRwogCiAKKyMgX0xUX0xBTkdfR09fQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBHTlUgR28gY29tcGlsZXIKKyMgYXJlIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKKyMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0dPX0NPTkZJR10sCitbQUNfUkVRVUlSRShbTFRfUFJPR19HT10pZG5sCitBQ19MQU5HX1NBVkUKKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEdvIHRlc3Qgc291cmNlcy4KK2FjX2V4dD1nbworCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgR28gdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJwYWNrYWdlIG1haW47IGZ1bmMgbWFpbigpIHsgfSIKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKK2x0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0ncGFja2FnZSBtYWluOyBmdW5jIG1haW4oKSB7IH0nCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9UQUdfQ09NUElMRVIKKworIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKK19MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorbHRfc2F2ZV9DQz0kQ0MKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK2x0X3NhdmVfR0NDPSRHQ0MKK0dDQz15ZXMKK0NDPSR7R09DLSJnY2NnbyJ9CitDRkxBR1M9JEdPRkxBR1MKK2NvbXBpbGVyPSRDQworX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCisKKyMgR28gZGlkIG5vdCBleGlzdCBhdCB0aGUgdGltZSBHQ0MgZGlkbid0IGltcGxpY2l0bHkgbGluayBsaWJjIGluLgorX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisKK19MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCisKKyMjIENBVkVBVCBFTVBUT1I6CisjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgoraWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICBfTFRfQ09NUElMRVJfTk9fUlRUSSgkMSkKKyAgX0xUX0NPTVBJTEVSX1BJQygkMSkKKyAgX0xUX0NPTVBJTEVSX0NfTygkMSkKKyAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgIF9MVF9MSU5LRVJfU0hMSUJTKCQxKQorICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgX0xUX0NPTkZJRygkMSkKK2ZpCisKK0FDX0xBTkdfUkVTVE9SRQorCitHQ0M9JGx0X3NhdmVfR0NDCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworXSkjIF9MVF9MQU5HX0dPX0NPTkZJRworCisKICMgX0xUX0xBTkdfUkNfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIFdpbmRvd3MgcmVzb3VyY2UgY29tcGlsZXIKQEAgLTY5NDYsOSArNzYxNCwxMSBAQAogCiAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogbHRfc2F2ZV9HQ0M9JEdDQwogR0NDPQogQ0M9JHtSQy0id2luZHJlcyJ9CitDRkxBR1M9CiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTY5NjEsNyArNzYzMSw4IEBACiAKIEdDQz0kbHRfc2F2ZV9HQ0MKIEFDX0xBTkdfUkVTVE9SRQotQ0M9IiRsdF9zYXZlX0NDIgorQ0M9JGx0X3NhdmVfQ0MKK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKIAogCkBAIC02OTgxLDYgKzc2NTIsMTMgQEAKIGRubCBBQ19ERUZVTihbTFRfQUNfUFJPR19HQ0pdLCBbXSkKIAogCisjIExUX1BST0dfR08KKyMgLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1BST0dfR09dLAorW0FDX0NIRUNLX1RPT0woR09DLCBnY2NnbywpCitdKQorCisKICMgTFRfUFJPR19SQwogIyAtLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfUFJPR19SQ10sCkBAIC03MDIwLDYgKzc2OTgsMTUgQEAKIEFDX1NVQlNUKFtPQkpEVU1QXSkKIF0pCiAKKyMgX0xUX0RFQ0xfRExMVE9PTAorIyAtLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSBETExUT09MIHZhcmlhYmxlIGlzIHNldC4KK200X2RlZnVuKFtfTFRfREVDTF9ETExUT09MXSwKK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQordGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKQorQUNfU1VCU1QoW0RMTFRPT0xdKQorXSkKIAogIyBfTFRfREVDTF9TRUQKICMgLS0tLS0tLS0tLS0tCkBAIC03MTEzLDggKzc4MDAsOCBAQAogIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKIHhzaV9zaGVsbD1ubwogKCBfbHRfZHVtbXk9ImEvYi9jIgotICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotICAgICAgPSBjLGEvYiwsIFwKKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKyAgICAgID0gYyxhL2IsYi9jLCBcCiAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICYmIHhzaV9zaGVsbD15ZXMKQEAgLTcxNTMsMjA4ICs3ODQwLDE2MiBAQAogXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUwogCiAKLSMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KLW00X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAotW2Nhc2UgJHhzaV9zaGVsbCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLSMgY2FsbDoKLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotfQotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAotfQotCi1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQotZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgotCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gIGNhc2UgJHsyfSBpbgotICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJVxcXFwkezJ9XCQlJSJgOzsKLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyUkezJ9XCQlJSJgOzsKLSAgZXNhYwotfQotCi0jIHNlZCBzY3JpcHRzOgotbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJwotbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCi0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfb3B0ImAKLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19hcmciYAotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRsbzJvImAKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAncy9cLltbXi5dXSokLy5sby8nYAotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotfQotCi1fTFRfRU9GCi1lc2FjCi0KLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJFsxXSs9XCRbMl0iCi19Ci1fTFRfRU9GCi0gICAgOzsKLSAgKikKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgZXNhYworIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCisjICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCittNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCitbZG5sIHsKK3NlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAorJDEgKClcCit7XAorbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCit9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIF0pCisKKworIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAorIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KK200X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKK1tpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgICAgZXNhY10pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgICBlc2FjCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCisgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9CisgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CisgICAgZXNhY10pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQorZmkKKworaWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCitkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCisKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2Vsc2UKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2ZpCisKK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKK2ZpCitdKQorCisjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKKyMgZnVuY190b19ob3N0X2ZpbGUgKGFuZCwgaW1wbGljaXRseSwgYnkgZnVuY190b19ob3N0X3BhdGgpLiAgVGhlc2UgYXJlIG5lZWRlZAorIyBmb3IgY2VydGFpbiBjcm9zcy1jb21waWxlIGNvbmZpZ3VyYXRpb25zIGFuZCBuYXRpdmUgbWluZ3cuCittNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfdG9faG9zdF9maWxlX2NtZCwKK1tjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqLSotY3lnd2luKiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgOzsKK2VzYWMKK10pCit0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCitBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0pCitfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSlkbmwKKworQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKK0FDX0NBQ0hFX1ZBTChsdF9jdl90b190b29sX2ZpbGVfY21kLAorWyNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7Citlc2FjCitdKQordG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQorX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCisgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0XSlkbmwKK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNAppbmRleCAzNDE1MWEzLi41ZDlhY2Q4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNApAQCAtMSwxMyArMSwxNCBAQAogIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjICAgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDA0CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CiAKICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCiBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCkBAIC0xMjUsNyArMTI2LDcgQEAKIFtlbmFibGVfd2luMzJfZGxsPXllcwogCiBjYXNlICRob3N0IGluCi0qLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLWNlZ2NjKikKKyotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1jZWdjYyopCiAgIEFDX0NIRUNLX1RPT0woQVMsIGFzLCBmYWxzZSkKICAgQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKICAgQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKQEAgLTEzMywxMyArMTM0LDEzIEBACiBlc2FjCiAKIHRlc3QgLXogIiRBUyIgJiYgQVM9YXMKLV9MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFswXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFsxXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKIAogdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzBdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAogCiB0ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCi1fTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMF0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbT2JqZWN0IGR1bXBlciBwcm9ncmFtXSlkbmwKIF0pIyB3aW4zMi1kbGwKIAogQVVfREVGVU4oW0FDX0xJQlRPT0xfV0lOMzJfRExMXSwKQEAgLTMyNSw5ICszMjYsMjQgQEAKICMgTU9ERSBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBib3RoJy4KIG00X2RlZmluZShbX0xUX1dJVEhfUElDXSwKIFtBQ19BUkdfV0lUSChbcGljXSwKLSAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1waWNdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLXBpY0A8OkA9UEtHU0A6PkBdLAogCVt0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBAPDpAZGVmYXVsdD11c2UgYm90aEA6PkBdKV0sCi0gICAgW3BpY19tb2RlPSIkd2l0aHZhbCJdLAorICAgIFtsdF9wPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJHdpdGh2YWwgaW4KKyAgICB5ZXN8bm8pIHBpY19tb2RlPSR3aXRodmFsIDs7CisgICAgKikKKyAgICAgIHBpY19tb2RlPWRlZmF1bHQKKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIGx0X3BrZyBpbiAkd2l0aHZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgorCSAgcGljX21vZGU9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKICAgICBbcGljX21vZGU9ZGVmYXVsdF0pCiAKIHRlc3QgLXogIiRwaWNfbW9kZSIgJiYgcGljX21vZGU9bTRfZGVmYXVsdChbJDFdLCBbZGVmYXVsdF0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00CmluZGV4IGI4ZTE1NGYuLjA3YTg2MDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00CkBAIC03LDE3ICs3LDE3IEBACiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisjIEBjb25maWd1cmVfaW5wdXRACiAKLSMgc2VyaWFsIDMwMTIgbHR2ZXJzaW9uLm00CisjIHNlcmlhbCAzMzM3IGx0dmVyc2lvbi5tNAogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAogCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuNl0pCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMDEyXSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNC4yXSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMzMzddKQogCiBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotW21hY3JvX3ZlcnNpb249JzIuMi42JwotbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK1ttYWNyb192ZXJzaW9uPScyLjQuMicKK21hY3JvX3JldmlzaW9uPScxLjMzMzcnCiBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCiBdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQKaW5kZXggNjM3YmIyMC4uYzU3M2RhOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0fm9ic29sZXRlLm00CkBAIC0xLDEzICsxLDEzIEBACiAjIGx0fm9ic29sZXRlLm00IC0tIGFjbG9jYWwgc2F0aXNmeWluZyBvYnNvbGV0ZSBkZWZpbml0aW9ucy4gICAgLSotQXV0b2NvbmYtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgU2NvdHQgSmFtZXMgUmVtbmFudCwgMjAwNC4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00CisjIHNlcmlhbCA1IGx0fm9ic29sZXRlLm00CiAKICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogIwpAQCAtNzcsNyArNzcsNiBAQAogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKXSldKQotbTRfaWZuZGVmKFtBQ19MSUJUT09MX1JDXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DX0NPTkZJR10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSldKQpAQCAtOTAsMyArODksMTAgQEAKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfQ09ORklHXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19GSUxFX0xURExMX0NdLAlbQUNfREVGVU4oW19MVF9BQ19GSUxFX0xURExMX0NdKV0pCittNF9pZm5kZWYoW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSwJW0FDX0RFRlVOKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10pXSkKK200X2lmbmRlZihbX0xUX0FDX1BST0dfQ1hYQ1BQXSwJCVtBQ19ERUZVTihbX0xUX0FDX1BST0dfQ1hYQ1BQXSldKQorbTRfaWZuZGVmKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCVtBQ19ERUZVTihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwJW0FDX0RFRlVOKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRjc3XSwJCVtBQ19ERUZVTihbX0xUX1BST0dfRjc3XSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19GQ10sCQlbQUNfREVGVU4oW19MVF9QUk9HX0ZDXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19DWFhdKV0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtCmluZGV4IDI1MTkyNzcuLmFmY2JmYjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtCkBAIC0yLDcgKzIsNyBAQAogCiBBVVRPTUFLRV9PUFRJT05TPWZvcmVpZ24KIAotRVhUUkFfRElTVCA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKK0VYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMwogCi1tYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKK21hbl9NQU5TID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbgppbmRleCAzZTQwYmUyLi5iMjlmYjE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC02OCw2ICs2OCwxMiBAQAogYW1fX2Jhc2VfbGlzdCA9IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CiBtYW4zZGlyID0gJChtYW5kaXIpL21hbjMKIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChtYW4zZGlyKSIKIE5ST0ZGID0gbnJvZmYKQEAgLTc2LDYgKzgyLDcgQEAKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTVRBUiA9IEBBTVRBUkAKK0FNX0xUTERGTEFHUyA9IEBBTV9MVExERkxBR1NACiBBTV9SVU5URVNURkxBR1MgPSBAQU1fUlVOVEVTVEZMQUdTQAogQVIgPSBAQVJACiBBVVRPQ09ORiA9IEBBVVRPQ09ORkAKQEAgLTkzLDYgKzEwMCw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTEwMCw2ICsxMDgsNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtMTE4LDYgKzEyNyw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTEzMCw2ICsxNDAsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTE0NCw2ICsxNTUsNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0xNzYsNyArMTg4LDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMTk5LDggKzIxMCw4IEBACiB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24KLUVYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCi1tYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKK0VYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMworbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMwogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtMjc1LDkgKzI4Niw3IEBACiAJICBzZWQgLW4gJy9cLjNbYS16XSokJC9wJzsgXAogCX0gfCBzZWQgLWUgJ3MsLiovLCw7aDtzLC4qXC4sLDtzLF5bXjNdWzAtOWEtel0qJCQsMyw7eCcgXAogCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKLQl0ZXN0IC16ICIkJGZpbGVzIiB8fCB7IFwKLQkgIGVjaG8gIiAoIGNkICckKERFU1RESVIpJChtYW4zZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JICBjZCAiJChERVNURElSKSQobWFuM2RpcikiICYmIHJtIC1mICQkZmlsZXM7IH0KKwlkaXI9JyQoREVTVERJUikkKG1hbjNkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQogdGFnczogVEFHUwogVEFHUzoKIApAQCAtMzQ1LDEwICszNTQsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KIGluc3RhbGwtc3RyaXA6Ci0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcCi0JICAgIGVjaG8gIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsCisJaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAgIGluc3RhbGw7IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAorCWZpCiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMwppbmRleCAxOGI1ZDVkLi4xZjFkMzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMwpAQCAtMTYsNiArMTYsMTUgQEAKIC5GYSAiZmZpX3R5cGUgKiphdHlwZXMiCiAuRmMKIC5GdCB2b2lkCisuRm8gZmZpX3ByZXBfY2lmX3ZhcgorLkZhICJmZmlfY2lmICpjaWYiCisuRmEgImZmaV9hYmkgYWJpIgorLkZhICJ1bnNpZ25lZCBpbnQgbmZpeGVkYXJncyIKKy5GYSAidW5zaWduZWQgaW50IG50b3RhbGFyZ3MiCisuRmEgImZmaV90eXBlICpydHlwZSIKKy5GYSAiZmZpX3R5cGUgKiphdHlwZXMiCisuRmMKKy5GdCB2b2lkCiAuRm8gZmZpX2NhbGwKIC5GYSAiZmZpX2NpZiAqY2lmIgogLkZhICJ2b2lkICgqZm4pKHZvaWQpIgpAQCAtMjgsNCArMzcsNSBAQAogdGhlIGNhbGxlZCBmdW5jdGlvbidzIGludGVyZmFjZSBhdCBjb21waWxlIHRpbWUuCiAuU2ggU0VFIEFMU08KIC5YciBmZmlfcHJlcF9jaWYgMyAsCisuWHIgZmZpX3ByZXBfY2lmX3ZhciAzICwKIC5YciBmZmlfY2FsbCAzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zCmluZGV4IDk0MzZiMzEuLmUxYmRiZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zCkBAIC0zNyw3ICszNyw5IEBACiBwb2ludHMgdG8gYW4KIC5ObSBmZmlfdHlwZQogdGhhdCBkZXNjcmliZXMgdGhlIGRhdGEgdHlwZSwgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIHRoZQotcmV0dXJuIHZhbHVlLgorcmV0dXJuIHZhbHVlLiBOb3RlIHRoYXQgdG8gY2FsbCBhIHZhcmlhZGljIGZ1bmN0aW9uCisuTm0gZmZpX3ByZXBfY2lmX3ZhcgorbXVzdCBiZSB1c2VkIGluc3RlYWQuCiAuU2ggUkVUVVJOIFZBTFVFUwogVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sCiAuTm0gZmZpX3ByZXBfY2lmCkBAIC02Myw0ICs2NSw2IEBACiAuCiAuU2ggU0VFIEFMU08KIC5YciBmZmkgMyAsCi0uWHIgZmZpX2NhbGwgMyAKKy5YciBmZmlfY2FsbCAzICwKKy5YciBmZmlfcHJlcF9jaWZfdmFyIDMKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmX3Zhci4zIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmX3Zhci4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMTlkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWZfdmFyLjMKQEAgLTAsMCArMSw3MyBAQAorLkRkIEphbnVhcnkgMjUsIDIwMTEKKy5EdCBmZmlfcHJlcF9jaWZfdmFyIDMKKy5TaCBOQU1FCisuTm0gZmZpX3ByZXBfY2lmX3ZhcgorLk5kIFByZXBhcmUgYQorLk5tIGZmaV9jaWYKK3N0cnVjdHVyZSBmb3IgdXNlIHdpdGgKKy5ObSBmZmlfY2FsbAorZm9yIHZhcmlhZGljIGZ1bmN0aW9ucy4KKy5TaCBTWU5PUFNJUworLkluIGZmaS5oCisuRnQgZmZpX3N0YXR1cworLkZvIGZmaV9wcmVwX2NpZl92YXIKKy5GYSAiZmZpX2NpZiAqY2lmIgorLkZhICJmZmlfYWJpIGFiaSIKKy5GYSAidW5zaWduZWQgaW50IG5maXhlZGFyZ3MiCisuRmEgInVuc2lnbmVkIGludCBudG90YWxhcmdzIgorLkZhICJmZmlfdHlwZSAqcnR5cGUiCisuRmEgImZmaV90eXBlICoqYXR5cGVzIgorLkZjCisuU2ggREVTQ1JJUFRJT04KK1RoZQorLk5tIGZmaV9wcmVwX2NpZl92YXIKK2Z1bmN0aW9uIHByZXBhcmVzIGEKKy5ObSBmZmlfY2lmCitzdHJ1Y3R1cmUgZm9yIHVzZSB3aXRoCisuTm0gZmZpX2NhbGwKK2ZvciB2YXJpYWRpYyBmdW5jdGlvbnMuCisuRmEgYWJpCitzcGVjaWZpZXMgYSBzZXQgb2YgY2FsbGluZyBjb252ZW50aW9ucyB0byB1c2UuCisuRmEgYXR5cGVzCitpcyBhbiBhcnJheSBvZgorLkZhIG50b3RhbGFyZ3MKK3BvaW50ZXJzIHRvCisuTm0gZmZpX3R5cGUKK3N0cnVjdHMgdGhhdCBkZXNjcmliZSB0aGUgZGF0YSB0eXBlLCBzaXplIGFuZCBhbGlnbm1lbnQgb2YgZWFjaCBhcmd1bWVudC4KKy5GYSBydHlwZQorcG9pbnRzIHRvIGFuCisuTm0gZmZpX3R5cGUKK3RoYXQgZGVzY3JpYmVzIHRoZSBkYXRhIHR5cGUsIHNpemUgYW5kIGFsaWdubWVudCBvZiB0aGUKK3JldHVybiB2YWx1ZS4KKy5GYSBuZml4ZWRhcmdzCittdXN0IGNvbnRhaW4gdGhlIG51bWJlciBvZiBmaXhlZCAobm9uLXZhcmlhZGljKSBhcmd1bWVudHMuCitOb3RlIHRoYXQgdG8gY2FsbCBhIG5vbi12YXJpYWRpYyBmdW5jdGlvbgorLk5tIGZmaV9wcmVwX2NpZgorbXVzdCBiZSB1c2VkLgorLlNoIFJFVFVSTiBWQUxVRVMKK1Vwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLAorLk5tIGZmaV9wcmVwX2NpZl92YXIKK3JldHVybnMKKy5ObSBGRklfT0sgLgorSXQgd2lsbCByZXR1cm4KKy5ObSBGRklfQkFEX1RZUEVERUYKK2lmCisuRmEgY2lmCitpcworLk5tIE5VTEwKK29yCisuRmEgYXR5cGVzCitvcgorLkZhIHJ0eXBlCitpcyBtYWxmb3JtZWQuIElmCisuRmEgYWJpCitkb2VzIG5vdCByZWZlciB0byBhIHZhbGlkIEFCSSwKKy5ObSBGRklfQkFEX0FCSQord2lsbCBiZSByZXR1cm5lZC4gQXZhaWxhYmxlIEFCSXMgYXJlCitkZWZpbmVkIGluCisuTm0gPGZmaXRhcmdldC5oPgorLgorLlNoIFNFRSBBTFNPCisuWHIgZmZpIDMgLAorLlhyIGZmaV9jYWxsIDMgLAorLlhyIGZmaV9wcmVwX2NpZiAzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcKaW5kZXggODk0ZTc4Ni4uMjgwNTVkMiAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWlzc2luZwpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBDb21tb24gc3R1YiBmb3IgYSBmZXcgbWlzc2luZyBHTlUgcHJvZ3JhbXMgd2hpbGUgaW5zdGFsbGluZy4KIAotc2NyaXB0dmVyc2lvbj0yMDA1LTA2LTA4LjIxCitzY3JpcHR2ZXJzaW9uPTIwMDktMDQtMjguMjE7ICMgVVRDCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKyMgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgT3JpZ2luYWxseSBieSBGcmFuLGNvaXMgUGluYXJkIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4sIDE5OTYuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTE4LDkgKzE4LDcgQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIAogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCi0jIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKICMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQogIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKQEAgLTMzLDYgKzMxLDggQEAKIGZpCiAKIHJ1bj06CitzZWRfb3V0cHV0PSdzLy4qIC0tb3V0cHV0WyA9XVwoW14gXSpcKS4qL1wxL3AnCitzZWRfbWludXNvPSdzLy4qIC1vIFwoW14gXSpcKS4qL1wxL3AnCiAKICMgSW4gdGhlIGNhc2VzIHdoZXJlIHRoaXMgbWF0dGVycywgYG1pc3NpbmcnIGlzIGJlaW5nIHJ1biBpbiB0aGUKICMgc3JjZGlyIGFscmVhZHkuCkBAIC00NCw3ICs0NCw3IEBACiAKIG1zZz0ibWlzc2luZyBvbiB5b3VyIHN5c3RlbSIKIAotY2FzZSAiJDEiIGluCitjYXNlICQxIGluCiAtLXJ1bikKICAgIyBUcnkgdG8gcnVuIHJlcXVlc3RlZCBwcm9ncmFtLCBhbmQganVzdCBleGl0IGlmIGl0IHN1Y2NlZWRzLgogICBydW49CkBAIC03Nyw2ICs3Nyw3IEBACiAgIGFjbG9jYWwgICAgICB0b3VjaCBmaWxlIFxgYWNsb2NhbC5tNCcKICAgYXV0b2NvbmYgICAgIHRvdWNoIGZpbGUgXGBjb25maWd1cmUnCiAgIGF1dG9oZWFkZXIgICB0b3VjaCBmaWxlIFxgY29uZmlnLmguaW4nCisgIGF1dG9tNHRlICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUsIG9yIGNyZWF0ZSBhIHN0dWIgb25lCiAgIGF1dG9tYWtlICAgICB0b3VjaCBhbGwgXGBNYWtlZmlsZS5pbicgZmlsZXMKICAgYmlzb24gICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQogICBmbGV4ICAgICAgICAgY3JlYXRlIFxgbGV4Lnl5LmMnLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuYwpAQCAtODYsNiArODcsOSBAQAogICB0YXIgICAgICAgICAgdHJ5IHRhciwgZ251dGFyLCBndGFyLCB0aGVuIHRhciB3aXRob3V0IG5vbi1wb3J0YWJsZSBmbGFncwogICB5YWNjICAgICAgICAgY3JlYXRlIFxgeS50YWIuW2NoXScsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5bY2hdCiAKK1ZlcnNpb24gc3VmZml4ZXMgdG8gUFJPR1JBTSBhcyB3ZWxsIGFzIHRoZSBwcmVmaXhlcyBcYGdudS0nLCBcYGdudScsIGFuZAorXGBnJyBhcmUgaWdub3JlZCB3aGVuIGNoZWNraW5nIHRoZSBuYW1lLgorCiBTZW5kIGJ1ZyByZXBvcnRzIHRvIDxidWctYXV0b21ha2VAZ251Lm9yZz4uIgogICAgIGV4aXQgJD8KICAgICA7OwpAQCAtMTAzLDE1ICsxMDcsMjIgQEAKIAogZXNhYwogCisjIG5vcm1hbGl6ZSBwcm9ncmFtIG5hbWUgdG8gY2hlY2sgZm9yLgorcHJvZ3JhbT1gZWNobyAiJDEiIHwgc2VkICcKKyAgcy9eZ251LS8vOyB0CisgIHMvXmdudS8vOyB0CisgIHMvXmcvLzsgdCdgCisKICMgTm93IGV4aXQgaWYgd2UgaGF2ZSBpdCwgYnV0IGl0IGZhaWxlZC4gIEFsc28gZXhpdCBub3cgaWYgd2UKICMgZG9uJ3QgaGF2ZSBpdCBhbmQgLS12ZXJzaW9uIHdhcyBwYXNzZWQgKG1vc3QgbGlrZWx5IHRvIGRldGVjdAotIyB0aGUgcHJvZ3JhbSkuCi1jYXNlICIkMSIgaW4KLSAgbGV4fHlhY2MpCisjIHRoZSBwcm9ncmFtKS4gIFRoaXMgaXMgYWJvdXQgbm9uLUdOVSBwcm9ncmFtcywgc28gdXNlICQxIG5vdAorIyAkcHJvZ3JhbS4KK2Nhc2UgJDEgaW4KKyAgbGV4Knx5YWNjKikKICAgICAjIE5vdCBHTlUgcHJvZ3JhbXMsIHRoZXkgZG9uJ3QgaGF2ZSAtLXZlcnNpb24uCiAgICAgOzsKIAotICB0YXIpCisgIHRhciopCiAgICAgaWYgdGVzdCAtbiAiJHJ1biI7IHRoZW4KICAgICAgICBlY2hvIDE+JjIgIkVSUk9SOiBcYHRhcicgcmVxdWlyZXMgLS1ydW4iCiAgICAgICAgZXhpdCAxCkBAIC0xMzUsNyArMTQ2LDcgQEAKIAogIyBJZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgZmFpbHMgdG8gcnVuIChwb3NzaWJseSBhbiBvdXRkYXRlZCB2ZXJzaW9uKSwKICMgdHJ5IHRvIGVtdWxhdGUgaXQuCi1jYXNlICIkMSIgaW4KK2Nhc2UgJHByb2dyYW0gaW4KICAgYWNsb2NhbCopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKQEAgLTE0NSw3ICsxNTYsNyBAQAogICAgIHRvdWNoIGFjbG9jYWwubTQKICAgICA7OwogCi0gIGF1dG9jb25mKQorICBhdXRvY29uZiopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZQpAQCAtMTU0LDcgKzE2NSw3IEBACiAgICAgdG91Y2ggY29uZmlndXJlCiAgICAgOzsKIAotICBhdXRvaGVhZGVyKQorICBhdXRvaGVhZGVyKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIFxgYWNjb25maWcuaCcgb3IgXGAke2NvbmZpZ3VyZV9hY30nLiAgWW91IG1pZ2h0IHdhbnQKQEAgLTE2NCw3ICsxNzUsNyBAQAogICAgIHRlc3QgLXogIiRmaWxlcyIgJiYgZmlsZXM9ImNvbmZpZy5oIgogICAgIHRvdWNoX2ZpbGVzPQogICAgIGZvciBmIGluICRmaWxlczsgZG8KLSAgICAgIGNhc2UgIiRmIiBpbgorICAgICAgY2FzZSAkZiBpbgogICAgICAgKjoqKSB0b3VjaF9maWxlcz0iJHRvdWNoX2ZpbGVzICJgZWNobyAiJGYiIHwKIAkJCQkgICAgICAgc2VkIC1lICdzL15bXjpdKjovLycgLWUgJ3MvOi4qLy8nYDs7CiAgICAgICAqKSB0b3VjaF9maWxlcz0iJHRvdWNoX2ZpbGVzICRmLmluIjs7CkBAIC0xODQsNyArMTk1LDcgQEAKIAkgICB3aGlsZSByZWFkIGY7IGRvIHRvdWNoICIkZiI7IGRvbmUKICAgICA7OwogCi0gIGF1dG9tNHRlKQorICBhdXRvbTR0ZSopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGJ1dCBpcyAkbXNnLgogICAgICAgICAgWW91IG1pZ2h0IGhhdmUgbW9kaWZpZWQgc29tZSBmaWxlcyB3aXRob3V0IGhhdmluZyB0aGUKQEAgLTE5Miw4ICsyMDMsOCBAQAogICAgICAgICAgWW91IGNhbiBnZXQgXGAkMScgYXMgcGFydCBvZiBcYEF1dG9jb25mJyBmcm9tIGFueSBHTlUKICAgICAgICAgIGFyY2hpdmUgc2l0ZS4iCiAKLSAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotLW91dHB1dFsgPV0qXChbXiBdKlwpLiovXDEvcCdgCi0gICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vWyBdKlwoW14gXSpcKS4qL1wxL3AnYAorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKICAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KIAl0b3VjaCAkZmlsZQogICAgIGVsc2UKQEAgLTIwNyw4MCArMjE4LDc4IEBACiAgICAgZmkKICAgICA7OwogCi0gIGJpc29ufHlhY2MpCisgIGJpc29uKnx5YWNjKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAueScgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBCaXNvbicgcGFja2FnZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAogICAgICAgICAgXGBCaXNvbicgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCiAgICAgcm0gLWYgeS50YWIuYyB5LnRhYi5oCi0gICAgaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICAgaWYgdGVzdCAkIyAtbmUgMTsgdGhlbgogICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKLQljYXNlICIkTEFTVEFSRyIgaW4KKwljYXNlICRMQVNUQVJHIGluCiAJKi55KQogCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MveSQvYy8nYAotCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KIAkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIHkudGFiLmMKIAkgICAgZmkKIAkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2gvJ2AKLQkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCiAJICAgICAgICAgY3AgIiRTUkNGSUxFIiB5LnRhYi5oCiAJICAgIGZpCiAJICA7OwogCWVzYWMKICAgICBmaQotICAgIGlmIFsgISAtZiB5LnRhYi5oIF07IHRoZW4KKyAgICBpZiB0ZXN0ICEgLWYgeS50YWIuaDsgdGhlbgogCWVjaG8gPnkudGFiLmgKICAgICBmaQotICAgIGlmIFsgISAtZiB5LnRhYi5jIF07IHRoZW4KKyAgICBpZiB0ZXN0ICEgLWYgeS50YWIuYzsgdGhlbgogCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+eS50YWIuYwogICAgIGZpCiAgICAgOzsKIAotICBsZXh8ZmxleCkKKyAgbGV4KnxmbGV4KikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAubCcgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBGbGV4JyBwYWNrYWdlCiAgICAgICAgICBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlIGVmZmVjdC4gIFlvdSBjYW4gZ2V0CiAgICAgICAgICBcYEZsZXgnIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogICAgIHJtIC1mIGxleC55eS5jCi0gICAgaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICAgaWYgdGVzdCAkIyAtbmUgMTsgdGhlbgogICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKLQljYXNlICIkTEFTVEFSRyIgaW4KKwljYXNlICRMQVNUQVJHIGluCiAJKi5sKQogCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MvbCQvYy8nYAotCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KIAkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIGxleC55eS5jCiAJICAgIGZpCiAJICA7OwogCWVzYWMKICAgICBmaQotICAgIGlmIFsgISAtZiBsZXgueXkuYyBdOyB0aGVuCisgICAgaWYgdGVzdCAhIC1mIGxleC55eS5jOyB0aGVuCiAJZWNobyAnbWFpbigpIHsgcmV0dXJuIDA7IH0nID5sZXgueXkuYwogICAgIGZpCiAgICAgOzsKIAotICBoZWxwMm1hbikKKyAgaGVscDJtYW4qKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAJIHlvdSBtb2RpZmllZCBhIGRlcGVuZGVuY3kgb2YgYSBtYW51YWwgcGFnZS4gIFlvdSBtYXkgbmVlZCB0aGUKIAkgXGBIZWxwMm1hbicgcGFja2FnZSBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlCiAJIGVmZmVjdC4gIFlvdSBjYW4gZ2V0IFxgSGVscDJtYW4nIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogCi0gICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLW8gXChbXiBdKlwpLiovXDEvcCdgCi0gICAgaWYgdGVzdCAteiAiJGZpbGUiOyB0aGVuCi0JZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLS1vdXRwdXQ9XChbXiBdKlwpLiovXDEvcCdgCi0gICAgZmkKLSAgICBpZiBbIC1mICIkZmlsZSIgXTsgdGhlbgorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKKyAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KIAl0b3VjaCAkZmlsZQogICAgIGVsc2UKIAl0ZXN0IC16ICIkZmlsZSIgfHwgZXhlYyA+JGZpbGUKIAllY2hvICIuYWIgaGVscDJtYW4gaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWdlIgotCWV4aXQgMQorCWV4aXQgJD8KICAgICBmaQogICAgIDs7CiAKLSAgbWFrZWluZm8pCisgIG1ha2VpbmZvKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAudGV4aScgb3IgXGAudGV4aW5mbycgZmlsZSwgb3IgYW55IG90aGVyIGZpbGUKQEAgLTI4OSwxMSArMjk4LDE3IEBACiAgICAgICAgICBEVSwgSVJJWCkuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZSBcYFRleGluZm8nIHBhY2thZ2Ugb3IKICAgICAgICAgIHRoZSBcYEdOVSBtYWtlJyBwYWNrYWdlLiAgR3JhYiBlaXRoZXIgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCiAgICAgIyBUaGUgZmlsZSB0byB0b3VjaCBpcyB0aGF0IHNwZWNpZmllZCB3aXRoIC1vIC4uLgotICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vIFwoW14gXSpcKS4qL1wxL3AnYAorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKICAgICBpZiB0ZXN0IC16ICIkZmlsZSI7IHRoZW4KICAgICAgICMgLi4uIG9yIGl0IGlzIHRoZSBvbmUgc3BlY2lmaWVkIHdpdGggQHNldGZpbGVuYW1lIC4uLgogICAgICAgaW5maWxlPWBlY2hvICIkKiIgfCBzZWQgJ3MvLiogXChbXiBdKlwpICokL1wxLydgCi0gICAgICBmaWxlPWBzZWQgLW4gJy9eQHNldGZpbGVuYW1lLyB7IHMvLiogXChbXiBdKlwpICokL1wxLzsgcDsgcTsgfScgJGluZmlsZWAKKyAgICAgIGZpbGU9YHNlZCAtbiAnCisJL15Ac2V0ZmlsZW5hbWUveworCSAgcy8uKiBcKFteIF0qXCkgKiQvXDEvCisJICBwCisJICBxCisJfScgJGluZmlsZWAKICAgICAgICMgLi4uIG9yIGl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgc291cmNlIG5hbWUgKGRpci9mLnRleGkgYmVjb21lcyBmLmluZm8pCiAgICAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJGluZmlsZSIgfCBzZWQgJ3MsLiovLCw7cywuW14uXSokLCwnYC5pbmZvCiAgICAgZmkKQEAgLTMwMyw3ICszMTgsNyBAQAogICAgIHRvdWNoICRmaWxlCiAgICAgOzsKIAotICB0YXIpCisgIHRhciopCiAgICAgc2hpZnQKIAogICAgICMgV2UgaGF2ZSBhbHJlYWR5IHRyaWVkIHRhciBpbiB0aGUgZ2VuZXJpYyBwYXJ0LgpAQCAtMzE3LDEzICszMzIsMTMgQEAKICAgICBmaQogICAgIGZpcnN0YXJnPSIkMSIKICAgICBpZiBzaGlmdDsgdGhlbgotCWNhc2UgIiRmaXJzdGFyZyIgaW4KKwljYXNlICRmaXJzdGFyZyBpbgogCSpvKikKIAkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9vLy9gCiAJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMAogCSAgICA7OwogCWVzYWMKLQljYXNlICIkZmlyc3RhcmciIGluCisJY2FzZSAkZmlyc3RhcmcgaW4KIAkqaCopCiAJICAgIGZpcnN0YXJnPWBlY2hvICIkZmlyc3RhcmciIHwgc2VkIHMvaC8vYAogCSAgICB0YXIgIiRmaXJzdGFyZyIgIiRAIiAmJiBleGl0IDAKQEAgLTM1Niw1ICszNzEsNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tc3ZjYy5zaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4MzAxODM5Li5kY2RiZWFiCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2gKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tc3ZjYy5zaApAQCAtNDIsMTMgKzQyLDExIEBACiAjIGZvcm1hdCBhbmQgdHJhbnNsYXRlZCBpbnRvIHNvbWV0aGluZyBzZW5zaWJsZSBmb3IgY2wgb3IgbWwuCiAjCiAKLSMgRGlzYWJsZSBzcGVjaWZpYyB3YXJuaW5ncywgYW5kIGVuYWJsZSB3YXJuaW5ncy1hcy1lcnJvcnMgc28gd2UgY2F0Y2ggYW55Ci0jIG1pc3RyYW5zbGF0ZWQgYXJncy4KLW5vd2Fybj0iLXdkNDEyNyAtd2Q0ODIwIC13ZDQ3MDYgLXdkNDEwMCAtd2Q0MjU1IC13ZDQ2NjggLXdkNDA1MyAtd2Q0MzI0IgotYXJncz0iLW5vbG9nbyAtVzMgLVdYICRub3dhcm4iCithcmdzPSItbm9sb2dvIC1XMyIKIG1kPS1NRAogY2w9ImNsIgogbWw9Im1sIgorc2FmZXNlaD0iLXNhZmVzZWgiCiBvdXRwdXQ9CiAKIHdoaWxlIFsgJCMgLWd0IDAgXQpAQCAtNjYsMTUgKzY0LDI4IEBACiAgICAgLW02NCkKICAgICAgIGNsPSJjbCIgICAjICIkTVNWQy94ODZfYW1kNjQvY2wiCiAgICAgICBtbD0ibWw2NCIgIyAiJE1TVkMveDg2X2FtZDY0L21sNjQiCisgICAgICBzYWZlc2VoPQorICAgICAgc2hpZnQgMQorICAgIDs7CisgICAgLU8wKQorICAgICAgYXJncz0iJGFyZ3MgLU9kIgogICAgICAgc2hpZnQgMQogICAgIDs7CiAgICAgLU8qKQotICAgICAgYXJncz0iJGFyZ3MgJDEiCisgICAgICAjIElmIHdlJ3JlIG9wdGltaXppbmcsIG1ha2Ugc3VyZSB3ZSBleHBsaWNpdGx5IHR1cm4gb24gc29tZSBvcHRpbWl6YXRpb25zCisgICAgICAjIHRoYXQgYXJlIGltcGxpY2l0bHkgZGlzYWJsZWQgYnkgZGVidWcgc3ltYm9scyAoLVppKS4KKyAgICAgIGFyZ3M9IiRhcmdzICQxIC1PUFQ6UkVGIC1PUFQ6SUNGIC1JTkNSRU1FTlRBTDpOTyIKICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1nKQotICAgICAgIyBDYW4ndCBzcGVjaWZ5IC1SVEMxIG9yIC1aaSBpbiBvcHQuIC1HeSBpcyBvay4gVXNlIC1PUFQ6UkVGPwotICAgICAgYXJncz0iJGFyZ3MgLURfREVCVUcgLVJUQzEgLVppIgorICAgICAgIyBFbmFibGUgZGVidWcgc3ltYm9sIGdlbmVyYXRpb24uCisgICAgICBhcmdzPSIkYXJncyAtWmkgLURFQlVHIgorICAgICAgc2hpZnQgMQorICAgIDs7CisgICAgLURGRklfREVCVUcpCisgICAgICAjIExpbmsgYWdhaW5zdCBkZWJ1ZyBDUlQgYW5kIGVuYWJsZSBydW50aW1lIGVycm9yIGNoZWNrcy4KKyAgICAgIGFyZ3M9IiRhcmdzIC1SVEMxIgorICAgICAgZGVmaW5lcz0iJGRlZmluZXMgJDEiCiAgICAgICBtZD0tTURkCiAgICAgICBzaGlmdCAxCiAgICAgOzsKQEAgLTExMSw3ICsxMjIsOCBAQAogICAgICAgc2hpZnQgMQogICAgIDs7CiAgICAgLVdhbGwpCi0gICAgICBhcmdzPSIkYXJncyAtV2FsbCIKKyAgICAgICMgLVdhbGwgb24gTVNWQyBpcyBvdmVyemVhbG91cywgYW5kIHdlIGFscmVhZHkgYnVpbGQgd2l0aCAtVzMuIE5vdGhpbmcKKyAgICAgICMgdG8gZG8gaGVyZS4KICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1XZXJyb3IpCkBAIC0xNjYsNyArMTc4LDcgQEAKICAgICBlY2hvICIkY2wgLW5vbG9nbyAtRVAgJGluY2x1ZGVzICRkZWZpbmVzICRzcmMgPiAkcHBzcmMiCiAgICAgIiRjbCIgLW5vbG9nbyAtRVAgJGluY2x1ZGVzICRkZWZpbmVzICRzcmMgPiAkcHBzcmMgfHwgZXhpdCAkPwogICAgIG91dHB1dD0iJChlY2hvICRvdXRwdXQgfCBzZWQgJ3MlL0ZbZHBhXVteIF0qJSVnJykiCi0gICAgYXJncz0iLW5vbG9nbyAtc2FmZXNlaCAkc2luZ2xlICRvdXRwdXQgJHBwc3JjIgorICAgIGFyZ3M9Ii1ub2xvZ28gJHNhZmVzZWggJHNpbmdsZSAkb3V0cHV0ICRwcHNyYyIKIAogICAgIGVjaG8gIiRtbCAkYXJncyIKICAgICBldmFsICJcIiRtbFwiICRhcmdzIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYwppbmRleCA4ZDZiMmJhLi4xOTJmNjkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwMSwgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4ICBSZWQgSGF0LCBJbmMuCiAgICAKICAgIEFscGhhIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0xNzgsNiArMTc5LDkgQEAKIHsKICAgdW5zaWduZWQgaW50ICp0cmFtcDsKIAorICBpZiAoY2lmLT5hYmkgIT0gRkZJX09TRikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgdHJhbXBbMF0gPSAweDQ3ZmIwNDAxOwkvKiBtb3YgJDI3LCQxCQkqLwogICB0cmFtcFsxXSA9IDB4YTc3YjAwMTA7CS8qIGxkcSAkMjcsMTYoJDI3KQkqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaAppbmRleCA3ZDA2ZWIwLi5hZjE0NWJjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBbHBoYS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMKaW5kZXggZDBlNzc4Mi4uNmI5ZjRkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgb3NmLlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDggUmVkIEhhdAorICAgb3NmLlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDgsIDIwMTEgUmVkIEhhdAogICAgCiAgICBBbHBoYS9PU0YgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTI5OSwzMyArMjk5LDUxIEBACiAjZW5kaWYKIAogI2lmZGVmIF9fRUxGX18KKyMgZGVmaW5lIFVBX1NJCQkuNGJ5dGUKKyMgZGVmaW5lIEZERV9FTkNPRElORwkweDFiCS8qIHBjcmVsIHNkYXRhNCAqLworIyBkZWZpbmUgRkRFX0VOQ09ERShYKQkuNGJ5dGUgWC0uCisjIGRlZmluZSBGREVfQVJBTkdFKFgpCS40Ynl0ZSBYCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KKyMgZGVmaW5lIFVBX1NJCQkuYWxpZ24gMDsgLmxvbmcKKyMgZGVmaW5lIEZERV9FTkNPRElORwkweDUwCS8qIGFsaWduZWQgYWJzb2x1dGUgKi8KKyMgZGVmaW5lIEZERV9FTkNPREUoWCkJLmFsaWduIDM7IC5xdWFkIFgKKyMgZGVmaW5lIEZERV9BUkFOR0UoWCkJLmFsaWduIDA7IC5xdWFkIFgKKyNlbmRpZgorCisjaWZkZWYgX19FTEZfXwogCS5zZWN0aW9uCS5laF9mcmFtZSxFSF9GUkFNRV9GTEFHUyxAcHJvZ2JpdHMKKyNlbGlmIGRlZmluZWQgX19vc2ZfXworCS5kYXRhCisJLmFsaWduIDMKKwkuZ2xvYmwgX0dMT0JBTF9fRl9mZmlfY2FsbF9vc2YKK19HTE9CQUxfX0ZfZmZpX2NhbGxfb3NmOgorI2VuZGlmCiBfX0ZSQU1FX0JFR0lOX186Ci0JLjRieXRlCSRMRUNJRTEtJExTQ0lFMQkjIExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKKwlVQV9TSQkkTEVDSUUxLSRMU0NJRTEJIyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CiAkTFNDSUUxOgotCS40Ynl0ZQkweDAJCSMgQ0lFIElkZW50aWZpZXIgVGFnCisJVUFfU0kJMHgwCQkjIENJRSBJZGVudGlmaWVyIFRhZwogCS5ieXRlCTB4MQkJIyBDSUUgVmVyc2lvbgogCS5hc2NpaSAielJcMCIJCSMgQ0lFIEF1Z21lbnRhdGlvbgogCS5ieXRlCTB4MQkJIyB1bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTB4NzgJCSMgc2xlYjEyOCAtODsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTI2CQkjIENJRSBSQSBDb2x1bW4KIAkuYnl0ZQkweDEJCSMgdWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplCi0JLmJ5dGUJMHgxYgkJIyBGREUgRW5jb2RpbmcgKHBjcmVsIHNkYXRhNCkKKwkuYnl0ZQlGREVfRU5DT0RJTkcJIyBGREUgRW5jb2RpbmcKIAkuYnl0ZQkweGMJCSMgRFdfQ0ZBX2RlZl9jZmEKIAkuYnl0ZQkzMAkJIyB1bGViMTI4IGNvbHVtbiAzMAogCS5ieXRlCTAJCSMgdWxlYjEyOCBvZmZzZXQgMAogCS5hbGlnbiAzCiAkTEVDSUUxOgogJExTRkRFMToKLQkuNGJ5dGUJJExFRkRFMS0kTEFTRkRFMQkJIyBGREUgTGVuZ3RoCisJVUFfU0kJJExFRkRFMS0kTEFTRkRFMQkJIyBGREUgTGVuZ3RoCiAkTEFTRkRFMToKLQkuNGJ5dGUJJExBU0ZERTEtX19GUkFNRV9CRUdJTl9fCSMgRkRFIENJRSBvZmZzZXQKLQkuNGJ5dGUJJExGQjEtLgkJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS40Ynl0ZQkkTEZFMS0kTEZCMQkjIEZERSBhZGRyZXNzIHJhbmdlCisJVUFfU0kJJExBU0ZERTEtX19GUkFNRV9CRUdJTl9fCSMgRkRFIENJRSBvZmZzZXQKKwlGREVfRU5DT0RFKCRMRkIxKQkJCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KKwlGREVfQVJBTkdFKCRMRkUxLSRMRkIxKQkJCSMgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZQkweDAJCSMgdWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplCiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTEtJExGQjEKKwlVQV9TSQkkTENGSTEtJExGQjEKIAkuYnl0ZQkweDlhCQkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAyNgogCS5ieXRlCTQJCSMgdWxlYjEyOCA0Ki04CiAJLmJ5dGUJMHg4ZgkJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMTUKQEAgLTMzNSwzMiArMzUzLDM1IEBACiAJLmJ5dGUJMzIJCSMgdWxlYjEyOCBvZmZzZXQgMzIKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJMi0kTENGSTEKKwlVQV9TSQkkTENGSTItJExDRkkxCiAJLmJ5dGUJMHhkYQkJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDI2CiAJLmFsaWduIDMKICRMRUZERTE6CiAKICRMU0ZERTM6Ci0JLjRieXRlCSRMRUZERTMtJExBU0ZERTMJCSMgRkRFIExlbmd0aAorCVVBX1NJCSRMRUZERTMtJExBU0ZERTMJCSMgRkRFIExlbmd0aAogJExBU0ZERTM6Ci0JLjRieXRlCSRMQVNGREUzLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0Ci0JLjRieXRlCSRMRkIyLS4JCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuNGJ5dGUJJExGRTItJExGQjIJIyBGREUgYWRkcmVzcyByYW5nZQorCVVBX1NJCSRMQVNGREUzLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0CisJRkRFX0VOQ09ERSgkTEZCMikJCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCisJRkRFX0FSQU5HRSgkTEZFMi0kTEZCMikJCQkjIEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUJMHgwCQkjIHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCiAJLmJ5dGUJMHg0CQkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuNGJ5dGUJJExDRkk1LSRMRkIyCisJVUFfU0kJJExDRkk1LSRMRkIyCiAJLmJ5dGUJMHhlCQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAogCS5ieXRlCTB4ODAsMHgxCSMgdWxlYjEyOCAxMjgKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJNi0kTENGSTUKKwlVQV9TSQkkTENGSTYtJExDRkk1CiAJLmJ5dGUJMHg5YQkJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMjYKIAkuYnl0ZQkxNgkJIyB1bGViMTI4IG9mZnNldCAxNiotOAogCS5hbGlnbiAzCiAkTEVGREUzOgotCi0jaWZkZWYgX19saW51eF9fCi0JLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cworI2lmIGRlZmluZWQgX19vc2ZfXworCS5hbGlnbiAwCisJLmxvbmcJMAkJIyBFbmQgb2YgVGFibGUKICNlbmRpZgorCisjaWYgZGVmaW5lZCBfX0VMRl9fICYmIGRlZmluZWQgX19saW51eF9fCisJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMKaW5kZXggZjZhNjQ3NS4uM2NjY2ViOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYwpAQCAtMSw2ICsxLDEwIEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDggIFJlZCBIYXQsIEluYy4KLSAgIAorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgVGltb3RoeSBXYWxsCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMSBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgorCSAgIENvcHlyaWdodCAoYykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4LCAyMDExICBSZWQgSGF0LCBJbmMuCisJICAgCiAgICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjksMTIgKzMzLDIwIEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAotLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQotICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgKi8KKy8qIEZvcndhcmQgZGVjbGFyZXMuICovCitzdGF0aWMgaW50IHZmcF90eXBlX3AgKGZmaV90eXBlICopOworc3RhdGljIHZvaWQgbGF5b3V0X3ZmcF9hcmdzIChmZmlfY2lmICopOwogCi12b2lkIGZmaV9wcmVwX2FyZ3MoY2hhciAqc3RhY2ssIGV4dGVuZGVkX2NpZiAqZWNpZikKKy8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKKyAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzCisgICAKKyAgIFRoZSB2ZnBfc3BhY2UgcGFyYW1ldGVyIGlzIHRoZSBsb2FkIGFyZWEgZm9yIFZGUCByZWdzLCB0aGUgcmV0dXJuCisgICB2YWx1ZSBpcyBjaWYtPnZmcF91c2VkICh3b3JkIGJpdHNldCBvZiBWRlAgcmVncyB1c2VkIGZvciBwYXNzaW5nCisgICBhcmd1bWVudHMpLiBUaGVzZSBhcmUgb25seSB1c2VkIGZvciB0aGUgVkZQIGhhcmQtZmxvYXQgQUJJLgorKi8KK2ludCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYsIGZsb2F0ICp2ZnBfc3BhY2UpCiB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOworICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaSwgdmkgPSAwOwogICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwogICByZWdpc3RlciBjaGFyICphcmdwOwogICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwpAQCAtNTMsMTAgKzY1LDMxIEBACiAgICAgICAgaS0tLCBwX2FyZysrKQogICAgIHsKICAgICAgIHNpemVfdCB6OworICAgICAgc2l6ZV90IGFsaWdubWVudDsKKworICAgICAgLyogQWxsb2NhdGVkIGluIFZGUCByZWdpc3RlcnMuICovCisgICAgICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX1ZGUAorCSAgJiYgdmkgPCBlY2lmLT5jaWYtPnZmcF9uYXJncyAmJiB2ZnBfdHlwZV9wICgqcF9hcmcpKQorCXsKKwkgIGZsb2F0KiB2ZnBfc2xvdCA9IHZmcF9zcGFjZSArIGVjaWYtPmNpZi0+dmZwX2FyZ3NbdmkrK107CisJICBpZiAoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQpCisJICAgICooKGZsb2F0Kil2ZnBfc2xvdCkgPSAqKChmbG9hdCopKnBfYXJndik7CisJICBlbHNlIGlmICgoKnBfYXJnKS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJICAgICooKGRvdWJsZSopdmZwX3Nsb3QpID0gKigoZG91YmxlKikqcF9hcmd2KTsKKwkgIGVsc2UKKwkgICAgbWVtY3B5KHZmcF9zbG90LCAqcF9hcmd2LCAoKnBfYXJnKS0+c2l6ZSk7CisJICBwX2FyZ3YrKzsKKwkgIGNvbnRpbnVlOworCX0KIAogICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoKCgqcF9hcmcpLT5hbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCAoKnBfYXJnKS0+YWxpZ25tZW50KTsKKyAgICAgIGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7CisjaWZkZWYgX1dJTjMyX1dDRQorICAgICAgaWYgKGFsaWdubWVudCA+IDQpCisJYWxpZ25tZW50ID0gNDsKKyNlbmRpZgorICAgICAgaWYgKChhbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgeworCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhbGlnbm1lbnQpOwogICAgICAgfQogCiAgICAgICBpZiAoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQpAQCAtMTAzLDEzICsxMzYsMTUgQEAKIAkgIHBfYXJndisrOwogCSAgYXJncCArPSB6OwogICAgIH0KLSAgCi0gIHJldHVybjsKKworICAvKiBJbmRpY2F0ZSB0aGUgVkZQIHJlZ2lzdGVycyB1c2VkLiAqLworICByZXR1cm4gZWNpZi0+Y2lmLT52ZnBfdXNlZDsKIH0KIAogLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwogZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpCiB7CisgIGludCB0eXBlX2NvZGU7CiAgIC8qIFJvdW5kIHRoZSBzdGFjayB1cCB0byBhIG11bHRpcGxlIG9mIDggYnl0ZXMuICBUaGlzIGlzbid0IG5lZWRlZCAKICAgICAgZXZlcnl3aGVyZSwgYnV0IGl0IGlzIG9uIHNvbWUgcGxhdGZvcm1zLCBhbmQgaXQgZG9lc24ndCBoYXJtIGFueXRoaW5nCiAgICAgIHdoZW4gaXQgaXNuJ3QgbmVlZGVkLiAgKi8KQEAgLTEzMCw3ICsxNjUsMTQgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8PSA0KQorICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlAKKwkgICYmICh0eXBlX2NvZGUgPSB2ZnBfdHlwZV9wIChjaWYtPnJ0eXBlKSkgIT0gMCkKKwl7CisJICAvKiBBIENvbXBvc2l0ZSBUeXBlIHBhc3NlZCBpbiBWRlAgcmVnaXN0ZXJzLCBlaXRoZXIKKwkgICAgIEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQgb3IgRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUuICovCisJICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSB0eXBlX2NvZGU7CisJfQorICAgICAgZWxzZSBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8PSA0KQogCS8qIEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdlciB0aGFuIDQgYnl0ZXMgaXMgcmV0dXJuZWQgaW4gcjAuICAqLwogCWNpZi0+ZmxhZ3MgPSAodW5zaWduZWQpRkZJX1RZUEVfSU5UOwogICAgICAgZWxzZQpAQCAtMTQ1LDExICsxODcsMzAgQEAKICAgICAgIGJyZWFrOwogICAgIH0KIAorICAvKiBNYXAgb3V0IHRoZSByZWdpc3RlciBwbGFjZW1lbnRzIG9mIFZGUCByZWdpc3RlciBhcmdzLgorICAgICBUaGUgVkZQIGhhcmQtZmxvYXQgY2FsbGluZyBjb252ZW50aW9ucyBhcmUgc2xpZ2h0bHkgbW9yZSBzb3BoaXN0aWNhdGVkIHRoYW4KKyAgICAgdGhlIGJhc2UgY2FsbGluZyBjb252ZW50aW9ucywgc28gd2UgZG8gaXQgaGVyZSBpbnN0ZWFkIG9mIGluIGZmaV9wcmVwX2FyZ3MoKS4gKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlApCisgICAgbGF5b3V0X3ZmcF9hcmdzIChjaWYpOworCiAgIHJldHVybiBGRklfT0s7CiB9CiAKLWV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIGV4dGVuZGVkX2NpZiAqLAotCQkJICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOworLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyBmb3IgdmFyaWFkaWMgY2FsbHMgKi8KK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXBfdmFyKGZmaV9jaWYgKmNpZiwKKwkJCQkgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisJCQkJICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzKQoreworICAvKiBWRlAgdmFyaWFkaWMgY2FsbHMgYWN0dWFsbHkgdXNlIHRoZSBTWVNWIEFCSSAqLworICBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUCkKKwljaWYtPmFiaSA9IEZGSV9TWVNWOworCisgIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOworfQorCisvKiBQcm90b3R5cGVzIGZvciBhc3NlbWJseSBmdW5jdGlvbnMsIGluIHN5c3YuUyAqLworZXh0ZXJuIHZvaWQgZmZpX2NhbGxfU1lTViAodm9pZCAoKmZuKSh2b2lkKSwgZXh0ZW5kZWRfY2lmICosIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKik7CitleHRlcm4gdm9pZCBmZmlfY2FsbF9WRlAgKHZvaWQgKCpmbikodm9pZCksIGV4dGVuZGVkX2NpZiAqLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICopOwogCiB2b2lkIGZmaV9jYWxsKGZmaV9jaWYgKmNpZiwgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAqcnZhbHVlLCB2b2lkICoqYXZhbHVlKQogewpAQCAtMTU3LDYgKzIxOCw4IEBACiAKICAgaW50IHNtYWxsX3N0cnVjdCA9IChjaWYtPmZsYWdzID09IEZGSV9UWVBFX0lOVCAKIAkJICAgICAgJiYgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpOworICBpbnQgdmZwX3N0cnVjdCA9IChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwkJICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUpOwogCiAgIGVjaWYuY2lmID0gY2lmOwogICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKQEAgLTE3MywzOCArMjM2LDUzIEBACiAgICAgfQogICBlbHNlIGlmIChzbWFsbF9zdHJ1Y3QpCiAgICAgZWNpZi5ydmFsdWUgPSAmdGVtcDsKKyAgZWxzZSBpZiAodmZwX3N0cnVjdCkKKyAgICB7CisgICAgICAvKiBMYXJnZXN0IGNhc2UgaXMgZG91YmxlIHggNC4gKi8KKyAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKDMyKTsKKyAgICB9CiAgIGVsc2UKICAgICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKIAogICBzd2l0Y2ggKGNpZi0+YWJpKSAKICAgICB7CiAgICAgY2FzZSBGRklfU1lTVjoKLSAgICAgIGZmaV9jYWxsX1NZU1YoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLAotCQkgICAgZm4pOwotCisgICAgICBmZmlfY2FsbF9TWVNWIChmbiwgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlKTsKICAgICAgIGJyZWFrOworCisgICAgY2FzZSBGRklfVkZQOgorI2lmZGVmIF9fQVJNX0VBQklfXworICAgICAgZmZpX2NhbGxfVkZQIChmbiwgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlKTsKKyAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICBkZWZhdWx0OgogICAgICAgRkZJX0FTU0VSVCgwKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgaWYgKHNtYWxsX3N0cnVjdCkKICAgICBtZW1jcHkgKHJ2YWx1ZSwgJnRlbXAsIGNpZi0+cnR5cGUtPnNpemUpOworICBlbHNlIGlmICh2ZnBfc3RydWN0KQorICAgIG1lbWNweSAocnZhbHVlLCBlY2lmLnJ2YWx1ZSwgY2lmLT5ydHlwZS0+c2l6ZSk7CiB9CiAKIC8qKiBwcml2YXRlIG1lbWJlcnMgKiovCiAKIHN0YXRpYyB2b2lkIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTViAoY2hhciAqc3RhY2ssIHZvaWQgKipyZXQsCi0JCQkJCSB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmKTsKKwkJCQkJIHZvaWQqKiBhcmdzLCBmZmlfY2lmKiBjaWYsIGZsb2F0ICp2ZnBfc3RhY2spOwogCiB2b2lkIGZmaV9jbG9zdXJlX1NZU1YgKGZmaV9jbG9zdXJlICopOwogCit2b2lkIGZmaV9jbG9zdXJlX1ZGUCAoZmZpX2Nsb3N1cmUgKik7CisKIC8qIFRoaXMgZnVuY3Rpb24gaXMganVtcGVkIHRvIGJ5IHRoZSB0cmFtcG9saW5lICovCiAKIHVuc2lnbmVkIGludAotZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3MpCitmZmlfY2xvc3VyZV9TWVNWX2lubmVyIChjbG9zdXJlLCByZXNwcCwgYXJncywgdmZwX2FyZ3MpCiAgICAgIGZmaV9jbG9zdXJlICpjbG9zdXJlOwogICAgICB2b2lkICoqcmVzcHA7CiAgICAgIHZvaWQgKmFyZ3M7CisgICAgIHZvaWQgKnZmcF9hcmdzOwogewogICAvLyBvdXIgdmFyaW91cyB0aGluZ3MuLi4KICAgZmZpX2NpZiAgICAgICAqY2lmOwpAQCAtMjE5LDcgKzI5Nyw3IEBACiAgICAqIGEgc3RydWN0dXJlLCBpdCB3aWxsIHJlLXNldCBSRVNQIHRvIHBvaW50IHRvIHRoZQogICAgKiBzdHJ1Y3R1cmUgcmV0dXJuIGFkZHJlc3MuICAqLwogCi0gIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihhcmdzLCByZXNwcCwgYXJnX2FyZWEsIGNpZik7CisgIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihhcmdzLCByZXNwcCwgYXJnX2FyZWEsIGNpZiwgdmZwX2FyZ3MpOwogCiAgIChjbG9zdXJlLT5mdW4pIChjaWYsICpyZXNwcCwgYXJnX2FyZWEsIGNsb3N1cmUtPnVzZXJfZGF0YSk7CiAKQEAgLTIyOSwxMCArMzA3LDEyIEBACiAvKkAtZXhwb3J0aGVhZGVyQCovCiBzdGF0aWMgdm9pZCAKIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihjaGFyICpzdGFjaywgdm9pZCAqKnJ2YWx1ZSwKLQkJCSAgICB2b2lkICoqYXZhbHVlLCBmZmlfY2lmICpjaWYpCisJCQkgICAgdm9pZCAqKmF2YWx1ZSwgZmZpX2NpZiAqY2lmLAorCQkJICAgIC8qIFVzZWQgb25seSB1bmRlciBWRlAgaGFyZC1mbG9hdCBBQkkuICovCisJCQkgICAgZmxvYXQgKnZmcF9zdGFjaykKIC8qQD1leHBvcnRoZWFkZXJAKi8KIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7CisgIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpLCB2aSA9IDA7CiAgIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7CiAgIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7CiAgIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7CkBAIC0yNDksMTAgKzMyOSwyMyBAQAogICBmb3IgKGkgPSBjaWYtPm5hcmdzLCBwX2FyZyA9IGNpZi0+YXJnX3R5cGVzOyAoaSAhPSAwKTsgaS0tLCBwX2FyZysrKQogICAgIHsKICAgICAgIHNpemVfdCB6OworICAgICAgc2l6ZV90IGFsaWdubWVudDsKKyAgCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUAorCSAgJiYgdmkgPCBjaWYtPnZmcF9uYXJncyAmJiB2ZnBfdHlwZV9wICgqcF9hcmcpKQorCXsKKwkgICpwX2FyZ3YrKyA9ICh2b2lkKikodmZwX3N0YWNrICsgY2lmLT52ZnBfYXJnc1t2aSsrXSk7CisJICBjb250aW51ZTsKKwl9CiAKLSAgICAgIHNpemVfdCBhbGlnbm1lbnQgPSAoKnBfYXJnKS0+YWxpZ25tZW50OworICAgICAgYWxpZ25tZW50ID0gKCpwX2FyZyktPmFsaWdubWVudDsKICAgICAgIGlmIChhbGlnbm1lbnQgPCA0KQogCWFsaWdubWVudCA9IDQ7CisjaWZkZWYgX1dJTjMyX1dDRQorICAgICAgZWxzZQorCWlmIChhbGlnbm1lbnQgPiA0KQorCSAgYWxpZ25tZW50ID0gNDsKKyNlbmRpZgogICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCiAgICAgICBpZiAoKGFsaWdubWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7CiAJYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFsaWdubWVudCk7CkBAIC0yNzMsMTggKzM2NiwyMzcgQEAKIAogLyogSG93IHRvIG1ha2UgYSB0cmFtcG9saW5lLiAgKi8KIAorZXh0ZXJuIHVuc2lnbmVkIGludCBmZmlfYXJtX3RyYW1wb2xpbmVbM107CisKKyNpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworZXh0ZXJuIHZvaWQgKmZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZTsKKwordHlwZWRlZiBzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGUgZmZpX3RyYW1wb2xpbmVfdGFibGU7Cit0eXBlZGVmIHN0cnVjdCBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKworc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlIHsKKyAgLyogY29udGlnaW91cyB3cml0YWJsZSBhbmQgZXhlY3V0YWJsZSBwYWdlcyAqLworICB2bV9hZGRyZXNzX3QgY29uZmlnX3BhZ2U7CisgIHZtX2FkZHJlc3NfdCB0cmFtcG9saW5lX3BhZ2U7CisKKyAgLyogZnJlZSBsaXN0IHRyYWNraW5nICovCisgIHVpbnQxNl90IGZyZWVfY291bnQ7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICpmcmVlX2xpc3Q7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICpmcmVlX2xpc3RfcG9vbDsKKworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqcHJldjsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKm5leHQ7Cit9OworCitzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgeworICB2b2lkICooKnRyYW1wb2xpbmUpKCk7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICpuZXh0OworfTsKKworLyogT3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGFyY2hpdGVjdHVyZSB0cmFtcG9saW5lIHNpemUgKi8KKy8vIFhYWCBUT0RPIC0gRml4CisjdW5kZWYgRkZJX1RSQU1QT0xJTkVfU0laRQorI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEyCisKKy8qIFRoZSB0cmFtcG9saW5lIGNvbmZpZ3VyYXRpb24gaXMgcGxhY2VkIGF0IDQwODAgYnl0ZXMgcHJpb3IgdG8gdGhlIHRyYW1wb2xpbmUncyBlbnRyeSBwb2ludCAqLworI2RlZmluZSBGRklfVFJBTVBPTElORV9DT0RFTE9DX0NPTkZJRyhjb2RlbG9jKSAoKHZvaWQgKiopICgoKHVpbnQ4X3QgKikgY29kZWxvYykgLSA0MDgwKSk7CisKKy8qIFRoZSBmaXJzdCAxNiBieXRlcyBvZiB0aGUgY29uZmlnIHBhZ2UgYXJlIHVudXNlZCwgYXMgdGhleSBhcmUgdW5hZGRyZXNzYWJsZSBmcm9tIHRoZSB0cmFtcG9saW5lIHBhZ2UuICovCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX0NPTkZJR19QQUdFX09GRlNFVCAxNgorCisvKiBUb3RhbCBudW1iZXIgb2YgdHJhbXBvbGluZXMgdGhhdCBmaXQgaW4gb25lIHRyYW1wb2xpbmUgdGFibGUgKi8KKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfQ09VTlQgKChQQUdFX1NJWkUgLSBGRklfVFJBTVBPTElORV9DT05GSUdfUEFHRV9PRkZTRVQpIC8gRkZJX1RSQU1QT0xJTkVfU0laRSkKKworc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBmZmlfdHJhbXBvbGluZV9sb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKK3N0YXRpYyBmZmlfdHJhbXBvbGluZV90YWJsZSAqZmZpX3RyYW1wb2xpbmVfdGFibGVzID0gTlVMTDsKKworc3RhdGljIGZmaV90cmFtcG9saW5lX3RhYmxlICoKK2ZmaV90cmFtcG9saW5lX3RhYmxlX2FsbG9jICgpCit7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlICp0YWJsZSA9IE5VTEw7CisKKyAgLyogTG9vcCB1bnRpbCB3ZSBjYW4gYWxsb2NhdGUgdHdvIGNvbnRpZ2lvdXMgcGFnZXMgKi8KKyAgd2hpbGUgKHRhYmxlID09IE5VTEwpIHsKKyAgICB2bV9hZGRyZXNzX3QgY29uZmlnX3BhZ2UgPSAweDA7CisgICAga2Vybl9yZXR1cm5fdCBrdDsKKworICAgIC8qIFRyeSB0byBhbGxvY2F0ZSB0d28gcGFnZXMgKi8KKyAgICBrdCA9IHZtX2FsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgJmNvbmZpZ19wYWdlLCBQQUdFX1NJWkUqMiwgVk1fRkxBR1NfQU5ZV0hFUkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBOb3cgZHJvcCB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFsbG9jYXRpb24gdG8gbWFrZSByb29tIGZvciB0aGUgdHJhbXBvbGluZSB0YWJsZSAqLworICAgIHZtX2FkZHJlc3NfdCB0cmFtcG9saW5lX3BhZ2UgPSBjb25maWdfcGFnZStQQUdFX1NJWkU7CisgICAga3QgPSB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgdHJhbXBvbGluZV9wYWdlLCBQQUdFX1NJWkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fZGVhbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIFJlbWFwIHRoZSB0cmFtcG9saW5lIHRhYmxlIHRvIGRpcmVjdGx5IGZvbGxvdyB0aGUgY29uZmlnIHBhZ2UgKi8KKyAgICB2bV9wcm90X3QgY3VyX3Byb3Q7CisgICAgdm1fcHJvdF90IG1heF9wcm90OworCisgICAga3QgPSB2bV9yZW1hcCAobWFjaF90YXNrX3NlbGYgKCksICZ0cmFtcG9saW5lX3BhZ2UsIFBBR0VfU0laRSwgMHgwLCBGQUxTRSwgbWFjaF90YXNrX3NlbGYgKCksICh2bV9hZGRyZXNzX3QpICZmZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UsIEZBTFNFLCAmY3VyX3Byb3QsICZtYXhfcHJvdCwgVk1fSU5IRVJJVF9TSEFSRSk7CisKKyAgICAvKiBJZiB3ZSBsb3N0IGFjY2VzcyB0byB0aGUgZGVzdGluYXRpb24gdHJhbXBvbGluZSBwYWdlLCBkcm9wIG91ciBjb25maWcgYWxsb2NhdGlvbiBtYXBwaW5nIGFuZCByZXRyeSAqLworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgIC8qIExvZyB1bmV4cGVjdGVkIGZhaWx1cmVzICovCisgICAgICBpZiAoa3QgIT0gS0VSTl9OT19TUEFDRSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX3JlbWFwKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgfQorCisgICAgICB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgY29uZmlnX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvKiBXZSBoYXZlIHZhbGlkIHRyYW1wb2xpbmUgYW5kIGNvbmZpZyBwYWdlcyAqLworICAgIHRhYmxlID0gY2FsbG9jICgxLCBzaXplb2YoZmZpX3RyYW1wb2xpbmVfdGFibGUpKTsKKyAgICB0YWJsZS0+ZnJlZV9jb3VudCA9IEZGSV9UUkFNUE9MSU5FX0NPVU5UOworICAgIHRhYmxlLT5jb25maWdfcGFnZSA9IGNvbmZpZ19wYWdlOworICAgIHRhYmxlLT50cmFtcG9saW5lX3BhZ2UgPSB0cmFtcG9saW5lX3BhZ2U7CisKKyAgICAvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGZyZWUgbGlzdCAqLworICAgIHRhYmxlLT5mcmVlX2xpc3RfcG9vbCA9IGNhbGxvYyhGRklfVFJBTVBPTElORV9DT1VOVCwgc2l6ZW9mKGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5KSk7CisKKyAgICB1aW50MTZfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCB0YWJsZS0+ZnJlZV9jb3VudDsgaSsrKSB7CisgICAgICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZW50cnkgPSAmdGFibGUtPmZyZWVfbGlzdF9wb29sW2ldOworICAgICAgZW50cnktPnRyYW1wb2xpbmUgPSAodm9pZCAqKSAodGFibGUtPnRyYW1wb2xpbmVfcGFnZSArIChpICogRkZJX1RSQU1QT0xJTkVfU0laRSkpOworCisgICAgICBpZiAoaSA8IHRhYmxlLT5mcmVlX2NvdW50IC0gMSkKKyAgICAgICAgZW50cnktPm5leHQgPSAmdGFibGUtPmZyZWVfbGlzdF9wb29sW2krMV07CisgICAgfQorCisgICAgdGFibGUtPmZyZWVfbGlzdCA9IHRhYmxlLT5mcmVlX2xpc3RfcG9vbDsKKyAgfQorCisgIHJldHVybiB0YWJsZTsKK30KKwordm9pZCAqCitmZmlfY2xvc3VyZV9hbGxvYyAoc2l6ZV90IHNpemUsIHZvaWQgKipjb2RlKQoreworICAvKiBDcmVhdGUgdGhlIGNsb3N1cmUgKi8KKyAgZmZpX2Nsb3N1cmUgKmNsb3N1cmUgPSBtYWxsb2Moc2l6ZSk7CisgIGlmIChjbG9zdXJlID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcHRocmVhZF9tdXRleF9sb2NrKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBDaGVjayBmb3IgYW4gYWN0aXZlIHRyYW1wb2xpbmUgdGFibGUgd2l0aCBhdmFpbGFibGUgZW50cmllcy4gKi8KKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnRhYmxlID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzOworICBpZiAodGFibGUgPT0gTlVMTCB8fCB0YWJsZS0+ZnJlZV9saXN0ID09IE5VTEwpIHsKKyAgICB0YWJsZSA9IGZmaV90cmFtcG9saW5lX3RhYmxlX2FsbG9jICgpOworICAgIGlmICh0YWJsZSA9PSBOVUxMKSB7CisgICAgICBmcmVlKGNsb3N1cmUpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogSW5zZXJ0IHRoZSBuZXcgdGFibGUgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdCAqLworICAgIHRhYmxlLT5uZXh0ID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzOworICAgIGlmICh0YWJsZS0+bmV4dCAhPSBOVUxMKQorICAgICAgICB0YWJsZS0+bmV4dC0+cHJldiA9IHRhYmxlOworCisgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVzID0gdGFibGU7CisgIH0KKworICAvKiBDbGFpbSB0aGUgZnJlZSBlbnRyeSAqLworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZW50cnkgPSBmZmlfdHJhbXBvbGluZV90YWJsZXMtPmZyZWVfbGlzdDsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5mcmVlX2xpc3QgPSBlbnRyeS0+bmV4dDsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5mcmVlX2NvdW50LS07CisgIGVudHJ5LT5uZXh0ID0gTlVMTDsKKworICBwdGhyZWFkX211dGV4X3VubG9jaygmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHZhbHVlcyAqLworICAqY29kZSA9IGVudHJ5LT50cmFtcG9saW5lOworICBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlID0gdGFibGU7CisgIGNsb3N1cmUtPnRyYW1wb2xpbmVfdGFibGVfZW50cnkgPSBlbnRyeTsKKworICByZXR1cm4gY2xvc3VyZTsKK30KKwordm9pZAorZmZpX2Nsb3N1cmVfZnJlZSAodm9pZCAqcHRyKQoreworICBmZmlfY2xvc3VyZSAqY2xvc3VyZSA9IHB0cjsKKworICBwdGhyZWFkX211dGV4X2xvY2soJmZmaV90cmFtcG9saW5lX2xvY2spOworCisgIC8qIEZldGNoIHRoZSB0YWJsZSBhbmQgZW50cnkgcmVmZXJlbmNlcyAqLworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqdGFibGUgPSBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlOworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZW50cnkgPSBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlX2VudHJ5OworCisgIC8qIFJldHVybiB0aGUgZW50cnkgdG8gdGhlIGZyZWUgbGlzdCAqLworICBlbnRyeS0+bmV4dCA9IHRhYmxlLT5mcmVlX2xpc3Q7CisgIHRhYmxlLT5mcmVlX2xpc3QgPSBlbnRyeTsKKyAgdGFibGUtPmZyZWVfY291bnQrKzsKKworICAvKiBJZiBhbGwgdHJhbXBvbGluZXMgd2l0aGluIHRoaXMgdGFibGUgYXJlIGZyZWUsIGFuZCBhdCBsZWFzdCBvbmUgb3RoZXIgdGFibGUgZXhpc3RzLCBkZWFsbG9jYXRlCisgICAqIHRoZSB0YWJsZSAqLworICBpZiAodGFibGUtPmZyZWVfY291bnQgPT0gRkZJX1RSQU1QT0xJTkVfQ09VTlQgJiYgZmZpX3RyYW1wb2xpbmVfdGFibGVzICE9IHRhYmxlKSB7CisgICAgLyogUmVtb3ZlIGZyb20gdGhlIGxpc3QgKi8KKyAgICBpZiAodGFibGUtPnByZXYgIT0gTlVMTCkKKyAgICAgIHRhYmxlLT5wcmV2LT5uZXh0ID0gdGFibGUtPm5leHQ7CisKKyAgICBpZiAodGFibGUtPm5leHQgIT0gTlVMTCkKKyAgICAgIHRhYmxlLT5uZXh0LT5wcmV2ID0gdGFibGUtPnByZXY7CisKKyAgICAvKiBEZWFsbG9jYXRlIHBhZ2VzICovCisgICAga2Vybl9yZXR1cm5fdCBrdDsKKyAgICBrdCA9IHZtX2RlYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCB0YWJsZS0+Y29uZmlnX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fZGVhbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgIGt0ID0gdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIHRhYmxlLT50cmFtcG9saW5lX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fZGVhbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgIC8qIERlYWxsb2NhdGUgZnJlZSBsaXN0ICovCisgICAgZnJlZSAodGFibGUtPmZyZWVfbGlzdF9wb29sKTsKKyAgICBmcmVlICh0YWJsZSk7CisgIH0gZWxzZSBpZiAoZmZpX3RyYW1wb2xpbmVfdGFibGVzICE9IHRhYmxlKSB7CisgICAgLyogT3RoZXJ3aXNlLCBidW1wIHRoaXMgdGFibGUgdG8gdGhlIHRvcCBvZiB0aGUgbGlzdCAqLworICAgIHRhYmxlLT5wcmV2ID0gTlVMTDsKKyAgICB0YWJsZS0+bmV4dCA9IGZmaV90cmFtcG9saW5lX3RhYmxlczsKKyAgICBpZiAoZmZpX3RyYW1wb2xpbmVfdGFibGVzICE9IE5VTEwpCisgICAgICBmZmlfdHJhbXBvbGluZV90YWJsZXMtPnByZXYgPSB0YWJsZTsKKworICAgIGZmaV90cmFtcG9saW5lX3RhYmxlcyA9IHRhYmxlOworICB9CisKKyAgcHRocmVhZF9tdXRleF91bmxvY2sgKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBGcmVlIHRoZSBjbG9zdXJlICovCisgIGZyZWUgKGNsb3N1cmUpOworfQorCisjZWxzZQorCiAjZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkUoVFJBTVAsRlVOLENUWCkJCQkJXAogKHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOwkJCVwKICAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KShGVU4pOwkJCQlcCiAgICB1bnNpZ25lZCBpbnQgIF9fY3R4ID0gKHVuc2lnbmVkIGludCkoQ1RYKTsJCQkJXAotICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFswXSA9IDB4ZTkyZDAwMGY7IC8qIHN0bWZkIHNwISwge3IwLXIzfSAqLwlcCi0gICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzRdID0gMHhlNTlmMDAwMDsgLyogbGRyIHIwLCBbcGNdICovCVwKLSAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbOF0gPSAweGU1OWZmMDAwOyAvKiBsZHIgcGMsIFtwY10gKi8JXAorICAgdW5zaWduZWQgY2hhciAqaW5zbnMgPSAodW5zaWduZWQgY2hhciAqKShDVFgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgbWVtY3B5IChfX3RyYW1wLCBmZmlfYXJtX3RyYW1wb2xpbmUsIHNpemVvZiBmZmlfYXJtX3RyYW1wb2xpbmUpOyAgICAgXAogICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFsxMl0gPSBfX2N0eDsJCQkJXAogICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFsxNl0gPSBfX2Z1bjsJCQkJXAotICAgX19jbGVhcl9jYWNoZSgoJl9fdHJhbXBbMF0pLCAoJl9fdHJhbXBbMTldKSk7CQkJXAorICAgX19jbGVhcl9jYWNoZSgoJl9fdHJhbXBbMF0pLCAoJl9fdHJhbXBbMTldKSk7IC8qIENsZWFyIGRhdGEgbWFwcGluZy4gICovIFwKKyAgIF9fY2xlYXJfY2FjaGUoaW5zbnMsIGluc25zICsgMyAqIHNpemVvZiAodW5zaWduZWQgaW50KSk7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDbGVhciBpbnN0cnVjdGlvbiAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLiAgKi8gICAgICAgIFwKICB9KQogCisjZW5kaWYKIAogLyogdGhlIGNpZiBtdXN0IGFscmVhZHkgYmUgcHJlcCdlZCAqLwogCkBAIC0yOTUsMTUgKzYwNywxNTAgQEAKIAkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAogCQkgICAgICB2b2lkICpjb2RlbG9jKQogewotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfU1lTVik7CisgIHZvaWQgKCpjbG9zdXJlX2Z1bmMpKGZmaV9jbG9zdXJlKikgPSBOVUxMOwogCi0gIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgXAotCQkgICAgICAgJmZmaV9jbG9zdXJlX1NZU1YsICBcCi0JCSAgICAgICBjb2RlbG9jKTsKKyAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWKQorICAgIGNsb3N1cmVfZnVuYyA9ICZmZmlfY2xvc3VyZV9TWVNWOworI2lmZGVmIF9fQVJNX0VBQklfXworICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQKQorICAgIGNsb3N1cmVfZnVuYyA9ICZmZmlfY2xvc3VyZV9WRlA7CisjZW5kaWYKKyAgZWxzZQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgICAKKyNpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisgIHZvaWQgKipjb25maWcgPSBGRklfVFJBTVBPTElORV9DT0RFTE9DX0NPTkZJRyhjb2RlbG9jKTsKKyAgY29uZmlnWzBdID0gY2xvc3VyZTsKKyAgY29uZmlnWzFdID0gY2xvc3VyZV9mdW5jOworI2Vsc2UKKyAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLCBcCisJCSAgICAgICBjbG9zdXJlX2Z1bmMsICBcCisJCSAgICAgICBjb2RlbG9jKTsKKyNlbmRpZgorCiAgIGNsb3N1cmUtPmNpZiAgPSBjaWY7CiAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKICAgY2xvc3VyZS0+ZnVuICA9IGZ1bjsKIAogICByZXR1cm4gRkZJX09LOwogfQorCisvKiBCZWxvdyBhcmUgcm91dGluZXMgZm9yIFZGUCBoYXJkLWZsb2F0IHN1cHBvcnQuICovCisKK3N0YXRpYyBpbnQgcmVjX3ZmcF90eXBlX3AgKGZmaV90eXBlICp0LCBpbnQgKmVsdCwgaW50ICplbG51bSkKK3sKKyAgc3dpdGNoICh0LT50eXBlKQorICAgIHsKKyAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorICAgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorICAgICAgKmVsdCA9IChpbnQpIHQtPnR5cGU7CisgICAgICAqZWxudW0gPSAxOworICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQ6CisgICAgICAqZWx0ID0gRkZJX1RZUEVfRkxPQVQ7CisgICAgICAqZWxudW0gPSB0LT5zaXplIC8gc2l6ZW9mIChmbG9hdCk7CisgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEU6CisgICAgICAqZWx0ID0gRkZJX1RZUEVfRE9VQkxFOworICAgICAgKmVsbnVtID0gdC0+c2l6ZSAvIHNpemVvZiAoZG91YmxlKTsKKyAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6OworICAgICAgeworCWludCBiYXNlX2VsdCA9IDAsIHRvdGFsX2VsbnVtID0gMDsKKwlmZmlfdHlwZSAqKmVsID0gdC0+ZWxlbWVudHM7CisJd2hpbGUgKCplbCkKKwkgIHsKKwkgICAgaW50IGVsX2VsdCA9IDAsIGVsX2VsbnVtID0gMDsKKwkgICAgaWYgKCEgcmVjX3ZmcF90eXBlX3AgKCplbCwgJmVsX2VsdCwgJmVsX2VsbnVtKQorCQl8fCAoYmFzZV9lbHQgJiYgYmFzZV9lbHQgIT0gZWxfZWx0KQorCQl8fCB0b3RhbF9lbG51bSArIGVsX2VsbnVtID4gNCkKKwkgICAgICByZXR1cm4gMDsKKwkgICAgYmFzZV9lbHQgPSBlbF9lbHQ7CisJICAgIHRvdGFsX2VsbnVtICs9IGVsX2VsbnVtOworCSAgICBlbCsrOworCSAgfQorCSplbG51bSA9IHRvdGFsX2VsbnVtOworCSplbHQgPSBiYXNlX2VsdDsKKwlyZXR1cm4gMTsKKyAgICAgIH0KKyAgICBkZWZhdWx0OiA7CisgICAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2ZnBfdHlwZV9wIChmZmlfdHlwZSAqdCkKK3sKKyAgaW50IGVsdCwgZWxudW07CisgIGlmIChyZWNfdmZwX3R5cGVfcCAodCwgJmVsdCwgJmVsbnVtKSkKKyAgICB7CisgICAgICBpZiAodC0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJeworCSAgaWYgKGVsbnVtID09IDEpCisJICAgIHQtPnR5cGUgPSBlbHQ7CisJICBlbHNlCisJICAgIHQtPnR5cGUgPSAoZWx0ID09IEZGSV9UWVBFX0ZMT0FUCisJCSAgICAgICA/IEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwkJICAgICAgIDogRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUpOworCX0KKyAgICAgIHJldHVybiAoaW50KSB0LT50eXBlOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBsYWNlX3ZmcF9hcmcgKGZmaV9jaWYgKmNpZiwgZmZpX3R5cGUgKnQpCit7CisgIGludCByZWcgPSBjaWYtPnZmcF9yZWdfZnJlZTsKKyAgaW50IG5yZWdzID0gdC0+c2l6ZSAvIHNpemVvZiAoZmxvYXQpOworICBpbnQgYWxpZ24gPSAoKHQtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCQl8fCB0LT50eXBlID09IEZGSV9UWVBFX0ZMT0FUKSA/IDEgOiAyKTsKKyAgLyogQWxpZ24gcmVnaXN0ZXIgbnVtYmVyLiAqLworICBpZiAoKHJlZyAmIDEpICYmIGFsaWduID09IDIpCisgICAgcmVnKys7CisgIHdoaWxlIChyZWcgKyBucmVncyA8PSAxNikKKyAgICB7CisgICAgICBpbnQgcywgbmV3X3VzZWQgPSAwOworICAgICAgZm9yIChzID0gcmVnOyBzIDwgcmVnICsgbnJlZ3M7IHMrKykKKwl7CisJICBuZXdfdXNlZCB8PSAoMSA8PCBzKTsKKwkgIGlmIChjaWYtPnZmcF91c2VkICYgKDEgPDwgcykpCisJICAgIHsKKwkgICAgICByZWcgKz0gYWxpZ247CisJICAgICAgZ290byBuZXh0X3JlZzsKKwkgICAgfQorCX0KKyAgICAgIC8qIEZvdW5kIHJlZ3MgdG8gYWxsb2NhdGUuICovCisgICAgICBjaWYtPnZmcF91c2VkIHw9IG5ld191c2VkOworICAgICAgY2lmLT52ZnBfYXJnc1tjaWYtPnZmcF9uYXJncysrXSA9IHJlZzsKKworICAgICAgLyogVXBkYXRlIHZmcF9yZWdfZnJlZS4gKi8KKyAgICAgIGlmIChjaWYtPnZmcF91c2VkICYgKDEgPDwgY2lmLT52ZnBfcmVnX2ZyZWUpKQorCXsKKwkgIHJlZyArPSBucmVnczsKKwkgIHdoaWxlIChjaWYtPnZmcF91c2VkICYgKDEgPDwgcmVnKSkKKwkgICAgcmVnICs9IDE7CisJICBjaWYtPnZmcF9yZWdfZnJlZSA9IHJlZzsKKwl9CisgICAgICByZXR1cm47CisgICAgbmV4dF9yZWc6IDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGxheW91dF92ZnBfYXJncyAoZmZpX2NpZiAqY2lmKQoreworICBpbnQgaTsKKyAgLyogSW5pdCBWRlAgZmllbGRzICovCisgIGNpZi0+dmZwX3VzZWQgPSAwOworICBjaWYtPnZmcF9uYXJncyA9IDA7CisgIGNpZi0+dmZwX3JlZ19mcmVlID0gMDsKKyAgbWVtc2V0IChjaWYtPnZmcF9hcmdzLCAtMSwgMTYpOyAvKiBJbml0IHRvIC0xLiAqLworCisgIGZvciAoaSA9IDA7IGkgPCBjaWYtPm5hcmdzOyBpKyspCisgICAgeworICAgICAgZmZpX3R5cGUgKnQgPSBjaWYtPmFyZ190eXBlc1tpXTsKKyAgICAgIGlmICh2ZnBfdHlwZV9wICh0KSkKKwlwbGFjZV92ZnBfYXJnIChjaWYsIHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaAppbmRleCBhOTU3NDI2Li4yNmQ0OTRkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMCAgQ29kZVNvdXJjZXJ5CisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisKICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQVJNLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzMwLDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsMTEgKzQxLDI3IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKKyAgRkZJX1ZGUCwKKyAgRkZJX0xBU1RfQUJJLAorI2lmZGVmIF9fQVJNX1BDU19WRlAKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1ZGUCwKKyNlbHNlCiAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisjZW5kaWYKIH0gZmZpX2FiaTsKICNlbmRpZgogCisjZGVmaW5lIEZGSV9FWFRSQV9DSUZfRklFTERTCQkJXAorICBpbnQgdmZwX3VzZWQ7CQkJCQlcCisgIHNob3J0IHZmcF9yZWdfZnJlZSwgdmZwX25hcmdzOwkJXAorICBzaWduZWQgY2hhciB2ZnBfYXJnc1sxNl0JCQlcCisKKy8qIEludGVybmFsbHkgdXNlZC4gKi8KKyNkZWZpbmUgRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVCAgKEZGSV9UWVBFX0xBU1QgKyAxKQorI2RlZmluZSBGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRSAoRkZJX1RZUEVfTEFTVCArIDIpCisKKyNkZWZpbmUgRkZJX1RBUkdFVF9TUEVDSUZJQ19WQVJJQURJQworCiAvKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIEZGSV9DTE9TVVJFUyAxCkBAIC00Niw0ICs2OSwzIEBACiAjZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZ2VudHJhbXAuc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZ2VudHJhbXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmMGI4NgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9nZW50cmFtcC5zaApAQCAtMCwwICsxLDExOCBAQAorIyEvYmluL3NoCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgIGdlbnRyYW1wLnNoIC0gQ29weXJpZ2h0IChjKSAyMDEwLCBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorIyAgCisjICBBUk0gVHJhbXBvbGluZSBQYWdlIEdlbmVyYXRvcgorIworIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisjICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyMgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisjICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisjICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisjICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyMgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorIyAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisjICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisjICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQUk9HTkFNRT0kMAorCisjIEVhY2ggdHJhbXBvbGluZSBpcyBleGFjdGx5IDMgaW5zdHJ1Y3Rpb25zLCBvciAxMiBieXRlcy4gSWYgYW55IG9mIHRoZXNlIHZhbHVlcyBjaGFuZ2UsCisjIHRoZSBlbnRpcmUgYXJtIHRyYW1wb2xpbmUgaW1wbGVtZW50YXRpb24gbXVzdCBiZSB1cGRhdGVkIHRvIG1hdGNoLCB0b28uCisKKyMgU2l6ZSBvZiBhbiBpbmRpdmlkdWFsIHRyYW1wb2xpbmUsIGluIGJ5dGVzCitUUkFNUE9MSU5FX1NJWkU9MTIKKworIyBQYWdlIHNpemUsIGluIGJ5dGVzCitQQUdFX1NJWkU9NDA5NgorCisjIENvbXB1dGUgdGhlIHNpemUgb2YgdGhlIHJlYWNoYWJsZSBjb25maWcgcGFnZTsgVGhlIGZpcnN0IDE2IGJ5dGVzIG9mIHRoZSBjb25maWcgcGFnZQorIyBhcmUgdW5yZWFjaGFibGUgZHVlIHRvIG91ciBtYXhpbXVtIHBjLXJlbGF0aXZlIGxkciBvZmZzZXQuCitQQUdFX0FWQUlMPWBleHByICRQQUdFX1NJWkUgLSAxNmAKKworIyBDb21wdXRlIHRoZSBudW1iZXIgb2Ygb2YgYXZhaWxhYmxlIHRyYW1wb2xpbmVzLiAKK1RSQU1QT0xJTkVfQ09VTlQ9YGV4cHIgJFBBR0VfQVZBSUwgLyAkVFJBTVBPTElORV9TSVpFYAorCitoZWFkZXIgKCkgeworICAgIGVjaG8gIiMgR0VORVJBVEVEIENPREUgLSBETyBOT1QgRURJVCIKKyAgICBlY2hvICIjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5ICRQUk9HTkFNRSIKKyAgICBlY2hvICIiCisKKyAgICAjIFdyaXRlIG91dCB0aGUgbGljZW5zZSBoZWFkZXIKK2NhdCA8PCBFT0YKKyMgIENvcHlyaWdodCAoYykgMjAxMCwgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyMgIAorIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisjICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyMgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisjICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisjICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisjICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyMgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorIyAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisjICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisjICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFT0YKKworICAgICMgV3JpdGUgb3V0IHRoZSB0cmFtcG9saW5lIHRhYmxlLCBhbGlnbmVkIHRvIHRoZSBwYWdlIGJvdW5kYXJ5CisgICAgZWNobyAiLnRleHQiCisgICAgZWNobyAiLmFsaWduIDEyIgorICAgIGVjaG8gIi5nbG9ibCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlIgorICAgIGVjaG8gIl9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2U6IgorfQorCisKKyMgV0FSTklORyAtIERvbid0IG1vZGlmeSB0aGUgdHJhbXBvbGluZSBjb2RlIHNpemUgd2l0aG91dCBhbHNvIHVwZGF0aW5nIHRoZSByZWxldmVudCBsaWJmZmkgY29kZQordHJhbXBvbGluZSAoKSB7CisgICAgY2F0IDw8IEVORAorCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKK0VORAorfQorCittYWluICgpIHsKKyAgICAjIFdyaXRlIG91dCB0aGUgaGVhZGVyCisgICAgaGVhZGVyCisKKyAgICAjIFdyaXRlIG91dCB0aGUgdHJhbXBvbGluZXMKKyAgICBsb2NhbCBpPTAKKyAgICB3aGlsZSBbICRpIC1sdCAke1RSQU1QT0xJTkVfQ09VTlR9IF07IGRvCisgICAgICAgIHRyYW1wb2xpbmUKKyAgICAgICAgbG9jYWwgaT1gZXhwciAkaSArIDFgCisgICAgZG9uZQorfQorCittYWluCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUwppbmRleCA5MDY0MzE4Li5mYjM4Y2Q2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4IFJlZCBIYXQsIEluYy4KKyAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCwgMjAxMSBSZWQgSGF0LCBJbmMuCisJICAgIENvcHlyaWdodCAoYykgMjAxMSBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgogICAgCiAgICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTM5LDcgKzQwLDExIEBACiAjZWxzZQogI2RlZmluZSBDTkFNRSh4KSB4CiAjZW5kaWYKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgRU5UUlkoeCkgLmdsb2JsIF8jI3g7IF8jI3g6CisjZWxzZQogI2RlZmluZSBFTlRSWSh4KSAuZ2xvYmwgQ05BTUUoeCk7IC50eXBlIENOQU1FKHgpLCVmdW5jdGlvbjsgQ05BTUUoeCk6CisjZW5kaWYgLyogX19BUFBMRV9fICovCiAjZW5kaWYKIAogI2lmZGVmIF9fRUxGX18KQEAgLTQ4LDYgKzUzLDEyIEBACiAjZGVmaW5lIExTWU0oeCkgeAogI2VuZGlmCiAKKy8qIFVzZSB0aGUgU09GVEZQIHJldHVybiB2YWx1ZSBBQkkgb24gTWFjIE9TIFgsIGFzIHBlciB0aGUgaU9TIEFCSQorICBGdW5jdGlvbiBDYWxsIEd1aWRlICovCisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIF9fU09GVEZQX18KKyNlbmRpZgorCiAvKiBXZSBuZWVkIGEgYmV0dGVyIHdheSBvZiB0ZXN0aW5nIGZvciB0aGlzLCBidXQgZm9yIG5vdywgdGhpcyBpcyBhbGwgCiAgICB3ZSBjYW4gZG8uICAqLwogQCBUaGlzIHNlbGVjdHMgdGhlIG1pbmltdW0gYXJjaGl0ZWN0dXJlIGxldmVsIHJlcXVpcmVkLgpAQCAtMTA1LDIxICsxMTYsMzMgQEAKIAkuYWxpZ24gMAogCS50aHVtYgogCS50aHVtYl9mdW5jCisjaWZkZWYgX19BUFBMRV9fCisJRU5UUlkoJDApCisjZWxzZQogCUVOVFJZKFxuYW1lKQorI2VuZGlmCiAJYngJcGMKIAlub3AKIAkuYXJtCiAJVU5XSU5EIC5mbnN0YXJ0CiAvKiBBIGhvb2sgdG8gdGVsbCBnZGIgdGhhdCB3ZSd2ZSBzd2l0Y2hlZCB0byBBUk0gbW9kZS4gIEFsc28gdXNlZCB0byBjYWxsCiAgICBkaXJlY3RseSBmcm9tIG90aGVyIGxvY2FsIGFybSByb3V0aW5lcy4gICovCi1fTF9fXG5hbWU6CQkKKyNpZmRlZiBfX0FQUExFX18KK19MX18kMDoKKyNlbHNlCitfTF9fXG5hbWU6CisjZW5kaWYKIC5lbmRtCiAjZWxzZQogLm1hY3JvCUFSTV9GVU5DX1NUQVJUIG5hbWUKIAkudGV4dAogCS5hbGlnbiAwCiAJLmFybQorI2lmZGVmIF9fQVBQTEVfXworCUVOVFJZKCQwKQorI2Vsc2UKIAlFTlRSWShcbmFtZSkKKyNlbmRpZgogCVVOV0lORCAuZm5zdGFydAogLmVuZG0KICNlbmRpZgpAQCAtMTQxLDEzICsxNjQsMTEgQEAKICNlbmRpZgogLmVuZG0KIAotCiAJQCByMDogICBmZmlfcHJlcF9hcmdzCiAJQCByMTogICAmZWNpZgogCUAgcjI6ICAgY2lmLT5ieXRlcwogCUAgcjM6ICAgZmlnLT5mbGFncwogCUAgc3ArMDogZWNpZi5ydmFsdWUKLQlAIHNwKzQ6IGZuCiAKIAlAIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogQVJNX0ZVTkNfU1RBUlQgZmZpX2NhbGxfU1lTVgpAQCAtMTYyLDI0ICsxODMsMjMgQEAKIAlzdWIJc3AsIGZwLCByMgogCiAJQCBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24KLQltb3YJaXAsIHIwCiAJbW92CXIwLCBzcAogCUAgICAgIHIxIGFscmVhZHkgc2V0CiAKIAlAIENhbGwgZmZpX3ByZXBfYXJncyhzdGFjaywgJmVjaWYpCi0JY2FsbF9yZWcoaXApCisJYmwJQ05BTUUoZmZpX3ByZXBfYXJncykKIAogCUAgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCiAJbGRtaWEJc3AsIHtyMC1yM30KIAogCUAgYW5kIGFkanVzdCBzdGFjawotCWxkcglpcCwgW2ZwLCAjOF0KLSAgICAgICAgY21wCWlwLCAjMTYKLQltb3ZocwlpcCwgIzE2Ci0gICAgICAgIGFkZAlzcCwgc3AsIGlwCisJc3ViCWxyLCBmcCwgc3AJQCBjaWYtPmJ5dGVzID09IGZwIC0gc3AKKwlsZHIJaXAsIFtmcF0JQCBsb2FkIGZuKCkgaW4gYWR2YW5jZQorCWNtcAlsciwgIzE2CisJbW92aHMJbHIsICMxNgorCWFkZAlzcCwgc3AsIGxyCiAKIAlAIGNhbGwgKGZuKSAoLi4uKQotCWxkcglpcCwgW2ZwLCAjMjhdCiAJY2FsbF9yZWcoaXApCiAJCiAJQCBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFyZ3MKQEAgLTIyNCwxMSArMjQ0LDE5IEBACiAjZW5kaWYKIAogTFNZTShMZXBpbG9ndWUpOgotCVJFVExETQkicjAtcjMsZnAiCisjaWYgZGVmaW5lZCAoX19JTlRFUldPUktJTkdfXykKKwlsZG1pYSAgIHNwISwge3IwLXIzLGZwLCBscn0KKwlieAlscgorI2Vsc2UKKwlsZG1pYSAgIHNwISwge3IwLXIzLGZwLCBwY30KKyNlbmRpZgogCiAuZmZpX2NhbGxfU1lTVl9lbmQ6CiAJVU5XSU5EIC5mbmVuZAorI2lmZGVmIF9fRUxGX18KICAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2NhbGxfU1lTViksLmZmaV9jYWxsX1NZU1ZfZW5kLUNOQU1FKGZmaV9jYWxsX1NZU1YpCisjZW5kaWYKKwogCiAvKgogCXVuc2lnbmVkIGludCBGRklfSElEREVOCkBAIC0yNDQsMTEgKzI3MiwxMSBAQAogCXN0bWZkCXNwISwge2lwLCBscn0KIAlVTldJTkQgLnNhdmUJe3IwLCBscn0KIAlhZGQJcjIsIHNwLCAjOAotCS5wYWQgIzE2CisJVU5XSU5EIC5wYWQgIzE2CiAJc3ViCXNwLCBzcCwgIzE2CiAJc3RyCXNwLCBbc3AsICM4XQogCWFkZAlyMSwgc3AsICM4Ci0JYmwJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgorCWJsCUNOQU1FKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCiAJY21wCXIwLCAjRkZJX1RZUEVfSU5UCiAJYmVxCS5McmV0aW50CiAKQEAgLTMwMCw3ICszMjgsMTc3IEBACiAKIC5mZmlfY2xvc3VyZV9TWVNWX2VuZDoKIAlVTldJTkQgLmZuZW5kCisjaWZkZWYgX19FTEZfXwogICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2xvc3VyZV9TWVNWKSwuZmZpX2Nsb3N1cmVfU1lTVl9lbmQtQ05BTUUoZmZpX2Nsb3N1cmVfU1lTVikKKyNlbmRpZgorCisKKy8qIEJlbG93IGFyZSBWRlAgaGFyZC1mbG9hdCBBQkkgY2FsbCBhbmQgY2xvc3VyZSBpbXBsZW1lbnRhdGlvbnMuCisgICBBZGQgVkZQIEZQVSBkaXJlY3RpdmUgaGVyZS4gVGhpcyBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGxpYnJhcnkKKyAgIHVuZGVyIEVBQkkuICAqLworI2lmZGVmIF9fQVJNX0VBQklfXworCS5mcHUJdmZwCisKKwlAIHIwOiAgIGZuCisJQCByMTogICAmZWNpZgorCUAgcjI6ICAgY2lmLT5ieXRlcworCUAgcjM6ICAgZmlnLT5mbGFncworCUAgc3ArMDogZWNpZi5ydmFsdWUKKworQVJNX0ZVTkNfU1RBUlQgZmZpX2NhbGxfVkZQCisJQCBTYXZlIHJlZ2lzdGVycworICAgICAgICBzdG1mZAlzcCEsIHtyMC1yMywgZnAsIGxyfQorCVVOV0lORCAuc2F2ZQl7cjAtcjMsIGZwLCBscn0KKwltb3YJZnAsIHNwCisJVU5XSU5EIC5zZXRmcAlmcCwgc3AKKworCUAgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgorCXN1YglzcCwgc3AsIHIyCisKKwlAIE1ha2Ugcm9vbSBmb3IgbG9hZGluZyBWRlAgYXJncworCXN1YglzcCwgc3AsICM2NAorCisJQCBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24KKwltb3YJcjAsIHNwCisJQCAgICAgcjEgYWxyZWFkeSBzZXQKKwlzdWIJcjIsIGZwLCAjNjQgICBAIFZGUCBzY3JhdGNoIHNwYWNlCisKKwlAIENhbGwgZmZpX3ByZXBfYXJncyhzdGFjaywgJmVjaWYsIHZmcF9zcGFjZSkKKwlibAlDTkFNRShmZmlfcHJlcF9hcmdzKQorCisJQCBMb2FkIFZGUCByZWdpc3RlciBhcmdzIGlmIG5lZWRlZAorCWNtcAlyMCwgIzAKKwliZXEJTFNZTShMYmFzZV9hcmdzKQorCisJQCBMb2FkIG9ubHkgZDAgaWYgcG9zc2libGUKKwljbXAJcjAsICMzCisJc3ViCWlwLCBmcCwgIzY0CisJZmxkZGxlCWQwLCBbaXBdCisJZmxkbWlhZGd0CWlwLCB7ZDAtZDd9CisKK0xTWU0oTGJhc2VfYXJncyk6CisJQCBtb3ZlIGZpcnN0IDQgcGFyYW1ldGVycyBpbiByZWdpc3RlcnMKKwlsZG1pYQlzcCwge3IwLXIzfQorCisJQCBhbmQgYWRqdXN0IHN0YWNrCisJc3ViCWxyLCBpcCwgc3AJQCBjaWYtPmJ5dGVzID09IChmcCAtIDY0KSAtIHNwCisJbGRyCWlwLCBbZnBdCUAgbG9hZCBmbigpIGluIGFkdmFuY2UKKyAgICAgICAgY21wCWxyLCAjMTYKKwltb3ZocwlsciwgIzE2CisgICAgICAgIGFkZAlzcCwgc3AsIGxyCisKKwlAIGNhbGwgKGZuKSAoLi4uKQorCWNhbGxfcmVnKGlwKQorCisJQCBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFyZ3MKKwltb3YJc3AsIGZwCisKKwlAIExvYWQgcjIgd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvcgorCUAgdGhlIHJldHVybiB2YWx1ZQorCWxkcglyMiwgW3NwLCAjMjRdCisKKwlAIExvYWQgcjMgd2l0aCB0aGUgcmV0dXJuIHR5cGUgY29kZSAKKwlsZHIJcjMsIFtzcCwgIzEyXQorCisJQCBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwKKwlAIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCisJY21wCXIyLCAjMAorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9JTlQKKwlzdHJlcQlyMCwgW3IyXQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9TSU5UNjQKKwlzdG1lcWlhCXIyLCB7cjAsIHIxfQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9GTE9BVAorCWZzdHNlcQlzMCwgW3IyXQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisJCisJY21wCXIzLCAjRkZJX1RZUEVfRE9VQkxFCisJZnN0ZGVxCWQwLCBbcjJdCisJYmVxCUxTWU0oTGVwaWxvZ3VlX3ZmcCkKKworCWNtcAlyMywgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwljbXBuZQlyMywgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFCisJZnN0bWlhZGVxCXIyLCB7ZDAtZDN9CisKK0xTWU0oTGVwaWxvZ3VlX3ZmcCk6CisJUkVUTERNCSJyMC1yMyxmcCIKKworLmZmaV9jYWxsX1ZGUF9lbmQ6CisJVU5XSU5EIC5mbmVuZAorICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2FsbF9WRlApLC5mZmlfY2FsbF9WRlBfZW5kLUNOQU1FKGZmaV9jYWxsX1ZGUCkKKworCitBUk1fRlVOQ19TVEFSVCBmZmlfY2xvc3VyZV9WRlAKKwlmc3RtZmRkCXNwISwge2QwLWQ3fQorCUAgcjAtcjMsIHRoZW4gZDAtZDcKKwlVTldJTkQgLnBhZCAjODAKKwlhZGQJaXAsIHNwLCAjODAKKwlzdG1mZAlzcCEsIHtpcCwgbHJ9CisJVU5XSU5EIC5zYXZlCXtyMCwgbHJ9CisJYWRkCXIyLCBzcCwgIzcyCisJYWRkCXIzLCBzcCwgIzgKKwlVTldJTkQgLnBhZCAjNzIKKwlzdWIJc3AsIHNwLCAjNzIKKwlzdHIJc3AsIFtzcCwgIzY0XQorCWFkZAlyMSwgc3AsICM2NAorCWJsCUNOQU1FKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCisKKwljbXAJcjAsICNGRklfVFlQRV9JTlQKKwliZXEJLkxyZXRpbnRfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9GTE9BVAorCWJlcQkuTHJldGZsb2F0X3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfRE9VQkxFCisJY21wbmUJcjAsICNGRklfVFlQRV9MT05HRE9VQkxFCisJYmVxCS5McmV0ZG91YmxlX3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfU0lOVDY0CisJYmVxCS5McmV0bG9uZ2xvbmdfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJYmVxCS5McmV0ZmxvYXRfc3RydWN0X3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUKKwliZXEJLkxyZXRkb3VibGVfc3RydWN0X3ZmcAorCQorLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcDoKKwlhZGQJc3AsIHNwLCAjNzIKKwlsZG1mZAlzcCwge3NwLCBwY30KKworLkxyZXRmbG9hdF92ZnA6CisJZmxkcwlzMCwgW3NwXQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRkb3VibGVfdmZwOgorCWZsZGQJZDAsIFtzcF0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0aW50X3ZmcDoKKwlsZHIJcjAsIFtzcF0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0bG9uZ2xvbmdfdmZwOgorCWxkbWlhCXNwLCB7cjAsIHIxfQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRmbG9hdF9zdHJ1Y3RfdmZwOgorCWZsZG1pYWQJc3AsIHtkMC1kMX0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0ZG91YmxlX3N0cnVjdF92ZnA6CisJZmxkbWlhZAlzcCwge2QwLWQzfQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorCisuZmZpX2Nsb3N1cmVfVkZQX2VuZDoKKwlVTldJTkQgLmZuZW5kCisgICAgICAgIC5zaXplICAgIENOQU1FKGZmaV9jbG9zdXJlX1ZGUCksLmZmaV9jbG9zdXJlX1ZGUF9lbmQtQ05BTUUoZmZpX2Nsb3N1cmVfVkZQKQorI2VuZGlmCisKK0VOVFJZKGZmaV9hcm1fdHJhbXBvbGluZSkKKwlzdG1mZCBzcCEsIHtyMC1yM30KKwlsZHIgcjAsIFtwY10KKwlsZHIgcGMsIFtwY10KIAogI2lmIGRlZmluZWQgX19FTEZfXyAmJiBkZWZpbmVkIF9fbGludXhfXwogCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIiwlcHJvZ2JpdHMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS90cmFtcG9saW5lLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNWU4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TCkBAIC0wLDAgKzEsNDQ1MCBAQAorIyBHRU5FUkFURUQgQ09ERSAtIERPIE5PVCBFRElUCisjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHNyYy9hcm0vZ2VudHJhbXAuc2gKKworIyAgQ29weXJpZ2h0IChjKSAyMDEwLCBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorIyAgCisjICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyMgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorIyAgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisjICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIyAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyMgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLnRleHQKKy5hbGlnbiAxMgorLmdsb2JsIF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UKK19mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2U6CisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYwppbmRleCAzOWZiYTJiLi4zZDQzMzk3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA5ICBCcmFkbGV5IFNtaXRoIDxicmFkQGJyYWQtc21pdGguY28udWs+CiAKICAgIEFWUjMyIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAKQEAgLTM5NCw3ICszOTUsOCBAQAogICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLCB2b2lkKiwgdm9pZCoqLCB2b2lkKiksIHZvaWQgKnVzZXJfZGF0YSwKICAgICB2b2lkICpjb2RlbG9jKQogewotICAgIEZGSV9BU1NFUlQoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICAgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikKKyAgICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICAgIHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAgPSAodW5zaWduZWQgY2hhciopKCZjbG9zdXJlLT50cmFtcFswXSk7CiAgICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKCZmZmlfY2xvc3VyZV9TWVNWKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmgKaW5kZXggMWM3OTliMS4uZDBjNzU4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBVlIzMi4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMKaW5kZXggMGIxNTZlMC4uMWIzNzgyNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jbG9zdXJlcy5jCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGNsb3N1cmVzLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDcgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgY2xvc3VyZXMuYyAtIENvcHlyaWdodCAoYykgMjAwNywgMjAwOSwgMjAxMCAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMSBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgogCiAgICBDb2RlIHRvIGFsbG9jYXRlIGFuZCBkZWFsbG9jYXRlIG1lbW9yeSBmb3IgY2xvc3VyZXMuCiAKQEAgLTMyLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxmZmkuaD4KICNpbmNsdWRlIDxmZmlfY29tbW9uLmg+CiAKLSNpZm5kZWYgRkZJX01NQVBfRVhFQ19XUklUCisjaWYgIUZGSV9NTUFQX0VYRUNfV1JJVCAmJiAhRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQogIyBpZiBfX2dudV9saW51eF9fCiAvKiBUaGlzIG1hY3JvIGluZGljYXRlcyBpdCBtYXkgYmUgZm9yYmlkZGVuIHRvIG1hcCBhbm9ueW1vdXMgbWVtb3J5CiAgICB3aXRoIGJvdGggd3JpdGUgYW5kIGV4ZWN1dGUgcGVybWlzc2lvbi4gIENvZGUgY29tcGlsZWQgd2hlbiB0aGlzCkBAIC00NCw3ICs0NSw3IEBACiAjICBkZWZpbmUgRkZJX01NQVBfRVhFQ19XUklUIDEKICMgIGRlZmluZSBIQVZFX01OVEVOVCAxCiAjIGVuZGlmCi0jIGlmIGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkKKyMgaWYgZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pCiAvKiBXaW5kb3dzIHN5c3RlbXMgbWF5IGhhdmUgRGF0YSBFeGVjdXRpb24gUHJvdGVjdGlvbiAoREVQKSBlbmFibGVkLCAKICAgIHdoaWNoIHJlcXVpcmVzIHRoZSB1c2Ugb2YgVmlydHVhbE1hbGxvYy9WaXJ0dWFsRnJlZSB0byBhbGxvYy9mcmVlCiAgICBleGVjdXRhYmxlIG1lbW9yeS4gKi8KQEAgLTYzLDcgKzY0LDExIEBACiAKICNpZiBGRklfQ0xPU1VSRVMKIAotIyBpZiBGRklfTU1BUF9FWEVDX1dSSVQKKyMgaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorCisvLyBQZXItdGFyZ2V0IGltcGxlbWVudGF0aW9uOyBJdCdzIHVuY2xlYXIgd2hhdCBjYW4gcmVhc29uYWJsZSBiZSBzaGFyZWQgYmV0d2VlbiB0d28gT1MvYXJjaGl0ZWN0dXJlIGltcGxlbWVudGF0aW9ucy4KKworIyBlbGlmIEZGSV9NTUFQX0VYRUNfV1JJVCAvKiAhRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSAqLwogCiAjZGVmaW5lIFVTRV9MT0NLUyAxCiAjZGVmaW5lIFVTRV9ETF9QUkVGSVggMQpAQCAtMTQ2LDcgKzE1MSw3IEBACiAgICAgICBwID0gc3RyY2hyIChwICsgMSwgJyAnKTsKICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIGJyZWFrOwotICAgICAgaWYgKHN0cm5jbXAgKHAgKyAxLCAic2VsaW51eGZzICIsIDEwKSAhPSAwKQorICAgICAgaWYgKHN0cm5jbXAgKHAgKyAxLCAic2VsaW51eGZzICIsIDEwKSA9PSAwKQogICAgICAgICB7CiAgICAgICAgICAgZnJlZSAoYnVmKTsKICAgICAgICAgICBmY2xvc2UgKGYpOwpAQCAtMTY3LDcgKzE3Miw3IEBACiAKICNlbmRpZiAvKiAhRkZJX01NQVBfRVhFQ19TRUxJTlVYICovCiAKLSNlbGlmIGRlZmluZWQgKF9fQ1lHV0lOX18pCisjZWxpZiBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkKIAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAKQEAgLTE5MywxMSArMTk4LDExIEBACiBzdGF0aWMgc2l6ZV90IGRsbWFsbG9jX3VzYWJsZV9zaXplKHZvaWQqKSBNQVlCRV9VTlVTRUQ7CiBzdGF0aWMgdm9pZCBkbG1hbGxvY19zdGF0cyh2b2lkKSBNQVlCRV9VTlVTRUQ7CiAKLSNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pCisjaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKQogLyogVXNlIHRoZXNlIGZvciBtbWFwIGFuZCBtdW5tYXAgd2l0aGluIGRsbWFsbG9jLmMuICAqLwogc3RhdGljIHZvaWQgKmRsbW1hcCh2b2lkICosIHNpemVfdCwgaW50LCBpbnQsIGludCwgb2ZmX3QpOwogc3RhdGljIGludCBkbG11bm1hcCh2b2lkICosIHNpemVfdCk7Ci0jZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSAqLworI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkgKi8KIAogI2RlZmluZSBtbWFwIGRsbW1hcAogI2RlZmluZSBtdW5tYXAgZGxtdW5tYXAKQEAgLTIwNyw3ICsyMTIsNyBAQAogI3VuZGVmIG1tYXAKICN1bmRlZiBtdW5tYXAKIAotI2lmICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykKKyNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpCiAKIC8qIEEgbXV0ZXggdXNlZCB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gKmV4ZWMqIHZhcmlhYmxlcyBpbiB0aGlzIGZpbGUuICAqLwogc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBvcGVuX3RlbXBfZXhlY19maWxlX211dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKQEAgLTI5NCw3ICsyOTksNyBAQAogICAgICAgc3RydWN0IG1udGVudCBtbnQ7CiAgICAgICBjaGFyIGJ1ZltNQVhQQVRITEVOICogM107CiAKLSAgICAgIGlmIChnZXRtbnRlbnRfciAobGFzdF9tbnRlbnQsICZtbnQsIGJ1Ziwgc2l6ZW9mIChidWYpKSkKKyAgICAgIGlmIChnZXRtbnRlbnRfciAobGFzdF9tbnRlbnQsICZtbnQsIGJ1Ziwgc2l6ZW9mIChidWYpKSA9PSBOVUxMKQogCXJldHVybiAtMTsKIAogICAgICAgaWYgKGhhc21udG9wdCAoJm1udCwgInJvIikKQEAgLTUyMiw3ICs1MjcsNyBAQAogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pICovCisjZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKSAqLwogCiAvKiBBbGxvY2F0ZSBhIGNodW5rIG9mIG1lbW9yeSB3aXRoIHRoZSBnaXZlbiBzaXplLiAgUmV0dXJucyBhIHBvaW50ZXIKICAgIHRvIHRoZSB3cml0YWJsZSBhZGRyZXNzLCBhbmQgc2V0cyAqQ09ERSB0byB0aGUgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMKaW5kZXggZTljMzk1My4uYWFjYTViMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaS5jCkBAIC0xNTMsMjEgKzE1MywyNCBAQAogICByZXR1cm4gKHN0cnVjdF9jb3VudCk7CiB9CiAKLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2NpZiAoZmZpX2NpZiAqIGNpZiwKLQkgICAgICBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLAotCSAgICAgIGZmaV90eXBlICogcnR5cGUsIGZmaV90eXBlICoqIGF0eXBlcykKK2ZmaV9zdGF0dXMgRkZJX0hJRERFTgorZmZpX3ByZXBfY2lmX2NvcmUgKGZmaV9jaWYgKiBjaWYsCisJICAgICAgICAgICBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IGlzdmFyaWFkaWMsCisJCSAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLCB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkgICAgICAgICAgIGZmaV90eXBlICogcnR5cGUsIGZmaV90eXBlICoqIGF0eXBlcykKIHsKICAgdW5zaWduZWQgYnl0ZXMgPSAwOwogICB1bnNpZ25lZCBpbnQgaTsKICAgZmZpX3R5cGUgKipwdHI7CiAKICAgRkZJX0FTU0VSVCAoY2lmICE9IE5VTEwpOwotICBGRklfQVNTRVJUICgoYWJpID4gRkZJX0ZJUlNUX0FCSSkgJiYgKGFiaSA8PSBGRklfREVGQVVMVF9BQkkpKTsKKyAgRkZJX0FTU0VSVCgoIWlzdmFyaWFkaWMpIHx8IChuZml4ZWRhcmdzID49IDEpKTsKKyAgRkZJX0FTU0VSVChuZml4ZWRhcmdzIDw9IG50b3RhbGFyZ3MpOworICBGRklfQVNTRVJUIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSk7CiAKICAgY2lmLT5hYmkgPSBhYmk7CiAgIGNpZi0+YXJnX3R5cGVzID0gYXR5cGVzOwotICBjaWYtPm5hcmdzID0gbmFyZ3M7CisgIGNpZi0+bmFyZ3MgPSBudG90YWxhcmdzOwogICBjaWYtPnJ0eXBlID0gcnR5cGU7CiAKICAgY2lmLT5mbGFncyA9IDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaAppbmRleCA0MjU3ZjEwLi5iODM3ZTk3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQ1JJUy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKaW5kZXggNTgyZGRjMy4uMjc3Mzk1MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCkBAIC00NjQsNiArNDY0LDE0IEBACiAjZGVmaW5lIF9HTlVfU09VUkNFIDEKICNlbmRpZiAgLyogV0lOMzIgKi8KIAorI2lmZGVmIF9fT1MyX18KKyNkZWZpbmUgSU5DTF9ET1MKKyNpbmNsdWRlIDxvczIuaD4KKyNkZWZpbmUgSEFWRV9NTUFQIDEKKyNkZWZpbmUgSEFWRV9NT1JFQ09SRSAwCisjZGVmaW5lIExBQ0tTX1NZU19NTUFOX0gKKyNlbmRpZiAgLyogX19PUzJfXyAqLworCiAjaWYgZGVmaW5lZChEQVJXSU4pIHx8IGRlZmluZWQoX0RBUldJTikKIC8qIE1hYyBPU1ggZG9jcyBhZHZpc2Ugbm90IHRvIHVzZSBzYnJrOyBpdCBzZWVtcyBiZXR0ZXIgdG8gdXNlIG1tYXAgKi8KICNpZm5kZWYgSEFWRV9NT1JFQ09SRQpAQCAtNjE5LDYgKzYyNyw5IEBACiAjaW5jbHVkZSAiL3Vzci9pbmNsdWRlL21hbGxvYy5oIgogI2Vsc2UgLyogSEFWRV9VU1JfSU5DTFVERV9NQUxMT0NfSCAqLwogCisvKiBIUC1VWCdzIHN0ZGxpYi5oIHJlZGVmaW5lcyBtYWxsaW5mbyB1bmxlc3MgX1NUUlVDVF9NQUxMSU5GTyBpcyBkZWZpbmVkICovCisjZGVmaW5lIF9TVFJVQ1RfTUFMTElORk8KKwogc3RydWN0IG1hbGxpbmZvIHsKICAgTUFMTElORk9fRklFTERfVFlQRSBhcmVuYTsgICAgLyogbm9uLW1tYXBwZWQgc3BhY2UgYWxsb2NhdGVkIGZyb20gc3lzdGVtICovCiAgIE1BTExJTkZPX0ZJRUxEX1RZUEUgb3JkYmxrczsgIC8qIG51bWJlciBvZiBmcmVlIGNodW5rcyAqLwpAQCAtMTI5Myw3ICsxMzA0LDcgQEAKICNkZWZpbmUgSVNfTU1BUFBFRF9CSVQgICAgICAgKFNJWkVfVF9PTkUpCiAjZGVmaW5lIFVTRV9NTUFQX0JJVCAgICAgICAgIChTSVpFX1RfT05FKQogCi0jaWZuZGVmIFdJTjMyCisjaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkIChfX09TMl9fKQogI2RlZmluZSBDQUxMX01VTk1BUChhLCBzKSAgICBtdW5tYXAoKGEpLCAocykpCiAjZGVmaW5lIE1NQVBfUFJPVCAgICAgICAgICAgIChQUk9UX1JFQUR8UFJPVF9XUklURSkKICNpZiAhZGVmaW5lZChNQVBfQU5PTllNT1VTKSAmJiBkZWZpbmVkKE1BUF9BTk9OKQpAQCAtMTMxNiw2ICsxMzI3LDQyIEBACiAjZW5kaWYgLyogTUFQX0FOT05ZTU9VUyAqLwogCiAjZGVmaW5lIERJUkVDVF9NTUFQKHMpICAgICAgIENBTExfTU1BUChzKQorCisjZWxpZiBkZWZpbmVkKF9fT1MyX18pCisKKy8qIE9TLzIgTU1BUCB2aWEgRG9zQWxsb2NNZW0gKi8KK3N0YXRpYyB2b2lkKiBvczJtbWFwKHNpemVfdCBzaXplKSB7CisgIHZvaWQqIHB0cjsKKyAgaWYgKERvc0FsbG9jTWVtKCZwdHIsIHNpemUsIE9CSl9BTll8UEFHX0NPTU1JVHxQQUdfUkVBRHxQQUdfV1JJVEUpICYmCisgICAgICBEb3NBbGxvY01lbSgmcHRyLCBzaXplLCBQQUdfQ09NTUlUfFBBR19SRUFEfFBBR19XUklURSkpCisgICAgcmV0dXJuIE1GQUlMOworICByZXR1cm4gcHRyOworfQorCisjZGVmaW5lIG9zMmRpcmVjdF9tbWFwKG4pICAgICBvczJtbWFwKG4pCisKKy8qIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgcmVsZWFzaW5nIGNvYWxlc2VkIHNlZ21lbnRzICovCitzdGF0aWMgaW50IG9zMm11bm1hcCh2b2lkKiBwdHIsIHNpemVfdCBzaXplKSB7CisgIHdoaWxlIChzaXplKSB7CisgICAgVUxPTkcgdWxTaXplID0gc2l6ZTsKKyAgICBVTE9ORyB1bEZsYWdzID0gMDsKKyAgICBpZiAoRG9zUXVlcnlNZW0ocHRyLCAmdWxTaXplLCAmdWxGbGFncykgIT0gMCkKKyAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoKHVsRmxhZ3MgJiBQQUdfQkFTRSkgPT0gMCB8fCh1bEZsYWdzICYgUEFHX0NPTU1JVCkgPT0gMCB8fAorICAgICAgICB1bFNpemUgPiBzaXplKQorICAgICAgcmV0dXJuIC0xOworICAgIGlmIChEb3NGcmVlTWVtKHB0cikgIT0gMCkKKyAgICAgIHJldHVybiAtMTsKKyAgICBwdHIgPSAoIHZvaWQgKiApICggKCBjaGFyICogKSBwdHIgKyB1bFNpemUgKTsKKyAgICBzaXplIC09IHVsU2l6ZTsKKyAgfQorICByZXR1cm4gMDsKK30KKworI2RlZmluZSBDQUxMX01NQVAocykgICAgICAgICBvczJtbWFwKHMpCisjZGVmaW5lIENBTExfTVVOTUFQKGEsIHMpICAgIG9zMm11bm1hcCgoYSksIChzKSkKKyNkZWZpbmUgRElSRUNUX01NQVAocykgICAgICAgb3MyZGlyZWN0X21tYXAocykKKwogI2Vsc2UgLyogV0lOMzIgKi8KIAogLyogV2luMzIgTU1BUCB2aWEgVmlydHVhbEFsbG9jICovCkBAIC0xMzkyLDcgKzE0MzksNyBAQAogICAgIHVuaXF1ZSBtcGFyYW1zIHZhbHVlcyBhcmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlLgogKi8KIAotI2lmbmRlZiBXSU4zMgorI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChfX09TMl9fKQogLyogQnkgZGVmYXVsdCB1c2UgcG9zaXggbG9ja3MgKi8KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZGVmaW5lIE1MT0NLX1QgcHRocmVhZF9tdXRleF90CkBAIC0xNDA2LDYgKzE0NTMsMTYgQEAKIAogc3RhdGljIE1MT0NLX1QgbWFnaWNfaW5pdF9tdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CiAKKyNlbGlmIGRlZmluZWQoX19PUzJfXykKKyNkZWZpbmUgTUxPQ0tfVCBITVRYCisjZGVmaW5lIElOSVRJQUxfTE9DSyhsKSAgICAgIERvc0NyZWF0ZU11dGV4U2VtKDAsIGwsIDAsIEZBTFNFKQorI2RlZmluZSBBQ1FVSVJFX0xPQ0sobCkgICAgICBEb3NSZXF1ZXN0TXV0ZXhTZW0oKmwsIFNFTV9JTkRFRklOSVRFX1dBSVQpCisjZGVmaW5lIFJFTEVBU0VfTE9DSyhsKSAgICAgIERvc1JlbGVhc2VNdXRleFNlbSgqbCkKKyNpZiBIQVZFX01PUkVDT1JFCitzdGF0aWMgTUxPQ0tfVCBtb3JlY29yZV9tdXRleDsKKyNlbmRpZiAvKiBIQVZFX01PUkVDT1JFICovCitzdGF0aWMgTUxPQ0tfVCBtYWdpY19pbml0X211dGV4OworCiAjZWxzZSAvKiBXSU4zMiAqLwogLyoKICAgIEJlY2F1c2UgbG9jay1wcm90ZWN0ZWQgcmVnaW9ucyBoYXZlIGJvdW5kZWQgdGltZXMsIGFuZCB0aGVyZQpAQCAtMjQ5NywxMCArMjU1NCwxNSBAQAogICAgIH0KICAgICBSRUxFQVNFX01BR0lDX0lOSVRfTE9DSygpOwogCi0jaWZuZGVmIFdJTjMyCisjaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fT1MyX18pCiAgICAgbXBhcmFtcy5wYWdlX3NpemUgPSBtYWxsb2NfZ2V0cGFnZXNpemU7CiAgICAgbXBhcmFtcy5ncmFudWxhcml0eSA9ICgoREVGQVVMVF9HUkFOVUxBUklUWSAhPSAwKT8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfR1JBTlVMQVJJVFkgOiBtcGFyYW1zLnBhZ2Vfc2l6ZSk7CisjZWxpZiBkZWZpbmVkIChfX09TMl9fKQorIC8qIGlmIGxvdy1tZW1vcnkgaXMgdXNlZCwgb3MybXVubWFwKCkgd291bGQgYnJlYWsKKyAgICBpZiBpdCB3ZXJlIGFueXRoaW5nIG90aGVyIHRoYW4gNjRrICovCisgICAgbXBhcmFtcy5wYWdlX3NpemUgPSA0MDk2dTsKKyAgICBtcGFyYW1zLmdyYW51bGFyaXR5ID0gNjU1MzZ1OwogI2Vsc2UgLyogV0lOMzIgKi8KICAgICB7CiAgICAgICBTWVNURU1fSU5GTyBzeXN0ZW1faW5mbzsKQEAgLTQxOTcsNyArNDI1OSw3IEBACiAKIHZvaWQgZGxmcmVlKHZvaWQqIG1lbSkgewogICAvKgotICAgICBDb25zb2xpZGF0ZSBmcmVlZCBjaHVua3Mgd2l0aCBwcmVjZWVkaW5nIG9yIHN1Y2NlZWRpbmcgYm9yZGVyaW5nCisgICAgIENvbnNvbGlkYXRlIGZyZWVkIGNodW5rcyB3aXRoIHByZWNlZGluZyBvciBzdWNjZWVkaW5nIGJvcmRlcmluZwogICAgICBmcmVlIGNodW5rcywgaWYgdGhleSBleGlzdCwgYW5kIHRoZW4gcGxhY2UgaW4gYSBiaW4uICBJbnRlcm1peGVkCiAgICAgIHdpdGggc3BlY2lhbCBjYXNlcyBmb3IgdG9wLCBkdiwgbW1hcHBlZCBjaHVua3MsIGFuZCB1c2FnZSBlcnJvcnMuCiAgICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmgKaW5kZXggMWMzMTllYS4uZDQyNTQwZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Zydi9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDA0ICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwNCAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBGUi1WCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzUsMTMgKzQwLDkgQEAKIAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKLQotI2lmZGVmIEZSVgogICBGRklfRUFCSSwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0VBQkksCi0jZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0VBQkkKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYwppbmRleCAzZjhmY2M1Li45NTMzZWY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpLmMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDcsIDIwMDggUmVkIEhhdCwgSW5jLgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDcsIDIwMDgsIDIwMTIgUmVkIEhhdCwgSW5jLgogCSAgIENvcHlyaWdodCAoYykgMjAwMCBIZXdsZXR0IFBhY2thcmQgQ29tcGFueQorCSAgIENvcHlyaWdodCAoYykgMjAxMSBBbnRob255IEdyZWVuCiAgICAKICAgIElBNjQgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTIyNSw3ICsyMjYsNyBAQAogICBpbnQgZmxhZ3M7CiAKICAgLyogQWRqdXN0IGNpZi0+Ynl0ZXMgdG8gaW5jbHVkZSBzcGFjZSBmb3IgdGhlIGJpdHMgb2YgdGhlIGlhNjRfYXJncyBmcmFtZQotICAgICB0aGF0IHByZWNlZWRzIHRoZSBpbnRlZ2VyIHJlZ2lzdGVyIHBvcnRpb24uICBUaGUgZXN0aW1hdGUgdGhhdCB0aGUgCisgICAgIHRoYXQgcHJlY2VkZXMgdGhlIGludGVnZXIgcmVnaXN0ZXIgcG9ydGlvbi4gIFRoZSBlc3RpbWF0ZSB0aGF0IHRoZQogICAgICBnZW5lcmljIGJpdHMgZGlkIGZvciB0aGUgYXJndW1lbnQgc3BhY2UgcmVxdWlyZWQgaXMgZ29vZCBlbm91Z2ggZm9yIHRoZQogICAgICBpbnRlZ2VyIGNvbXBvbmVudC4gICovCiAgIGNpZi0+Ynl0ZXMgKz0gb2Zmc2V0b2Yoc3RydWN0IGlhNjRfYXJncywgZ3BfcmVnc1swXSk7CkBAIC0zMjQsMTMgKzMyNSwxNyBAQAogCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CiAJICBpZiAoZ3Bjb3VudCA8IDggJiYgZnBjb3VudCA8IDgpCiAJICAgIHN0Zl9zcGlsbCAoJnN0YWNrLT5mcF9yZWdzW2ZwY291bnQrK10sICooZmxvYXQgKilhdmFsdWVbaV0pOwotCSAgc3RhY2stPmdwX3JlZ3NbZ3Bjb3VudCsrXSA9ICooVUlOVDMyICopYXZhbHVlW2ldOworCSAgeworCSAgICBVSU5UMzIgdG1wOworCSAgICBtZW1jcHkgKCZ0bXAsIGF2YWx1ZVtpXSwgc2l6ZW9mIChVSU5UMzIpKTsKKwkgICAgc3RhY2stPmdwX3JlZ3NbZ3Bjb3VudCsrXSA9IHRtcDsKKwkgIH0KIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICBpZiAoZ3Bjb3VudCA8IDggJiYgZnBjb3VudCA8IDgpCiAJICAgIHN0Zl9zcGlsbCAoJnN0YWNrLT5mcF9yZWdzW2ZwY291bnQrK10sICooZG91YmxlICopYXZhbHVlW2ldKTsKLQkgIHN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10gPSAqKFVJTlQ2NCAqKWF2YWx1ZVtpXTsKKwkgIG1lbWNweSAoJnN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10sIGF2YWx1ZVtpXSwgc2l6ZW9mIChVSU5UNjQpKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgpAQCAtNDI1LDcgKzQzMCw4IEBACiAgIHN0cnVjdCBmZmlfaWE2NF90cmFtcG9saW5lX3N0cnVjdCAqdHJhbXA7CiAgIHN0cnVjdCBpYTY0X2ZkICpmZDsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfVU5JWCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfVU5JWCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAoc3RydWN0IGZmaV9pYTY0X3RyYW1wb2xpbmVfc3RydWN0ICopY2xvc3VyZS0+dHJhbXA7CiAgIGZkID0gKHN0cnVjdCBpYTY0X2ZkICopKHZvaWQgKilmZmlfY2xvc3VyZV91bml4OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmgKaW5kZXggZDg1YzA0OS4uZTY4Y2VhNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIElBLTY0LgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9VTklYLCAgIAkvKiBMaW51eCBhbmQgYWxsIFVuaXggdmFyaWFudHMgdXNlIHRoZSBzYW1lIGNvbnZlbnRpb25zCSovCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1VOSVgKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jCmluZGV4IDljNTM4M2UuLjUyMmM4YmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jCkBAIC0zMTEsNyArMzExLDcgQEAKICAgZmZpX3Jhd19jbG9zdXJlICpjbCA9IChmZmlfcmF3X2Nsb3N1cmUqKXVzZXJfZGF0YTsKIAogICBmZmlfamF2YV9wdHJhcnJheV90b19yYXcgKGNpZiwgYXZhbHVlLCByYXcpOwotICAoKmNsLT5mdW4pIChjaWYsIHJ2YWx1ZSwgcmF3LCBjbC0+dXNlcl9kYXRhKTsKKyAgKCpjbC0+ZnVuKSAoY2lmLCBydmFsdWUsIChmZmlfcmF3KilyYXcsIGNsLT51c2VyX2RhdGEpOwogICBmZmlfamF2YV9yYXdfdG9fcnZhbHVlIChjaWYsIHJ2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oCmluZGV4IDZhNzYxZjYuLjZjMzQ4MDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTMyci9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAwNCAgUmVuZXNhcyBUZWNobm9sb2d5LgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA0ICBSZW5lc2FzIFRlY2hub2xvZ3kuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE0zMlIuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjYsNiArMjcsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzYsOCArNDEsOCBAQAogICB7CiAgICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgICAgRkZJX1NZU1YsCi0gICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gICAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICAgIEZGSV9MQVNUX0FCSSwKKyAgICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogICB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMKaW5kZXggNjAwY2YyMC4uMzdhMDc4NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaS5jCkBAIC0xLDcgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGZmaS5jCi0gICAKLSAgIG02OGsgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCisKKyAgIG02OGsgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpbmNsdWRlIDxmZmkuaD4KQEAgLTksOCArOSwxNyBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgX19ydGVtc19fCit2b2lkIHJ0ZW1zX2NhY2hlX2ZsdXNoX211bHRpcGxlX2RhdGFfbGluZXMoIGNvbnN0IHZvaWQgKiwgc2l6ZV90ICk7CisjZWxzZQogI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaWZkZWYgX19NSU5UX18KKyNpbmNsdWRlIDxtaW50L21pbnRiaW5kLmg+CisjaW5jbHVkZSA8bWludC9zc3lzdGVtLmg+CisjZWxzZQogI2luY2x1ZGUgPGFzbS9jYWNoZWN0bC5oPgorI2VuZGlmCisjZW5kaWYKIAogdm9pZCBmZmlfY2FsbF9TWVNWIChleHRlbmRlZF9jaWYgKiwKIAkJICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwKQEAgLTM1LDggKzQ0LDEyIEBACiAKICAgYXJncCA9IHN0YWNrOwogCi0gIGlmIChlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgJiYgIWVjaWYtPmNpZi0+ZmxhZ3MpCisgIGlmICgKKyNpZmRlZiBfX01JTlRfXworICAgICAgKGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkgfHwKKyNlbmRpZgorICAgICAgKCgoZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisgICAgICAgICYmICFlY2lmLT5jaWYtPmZsYWdzKSkpCiAgICAgc3RydWN0X3ZhbHVlX3B0ciA9IGVjaWYtPnJ2YWx1ZTsKICAgZWxzZQogICAgIHN0cnVjdF92YWx1ZV9wdHIgPSBOVUxMOwpAQCAtNDcsMTIgKzYwLDEyIEBACiAgICAgICAgaSAhPSAwOwogICAgICAgIGktLSwgcF9hcmcrKykKICAgICB7Ci0gICAgICBzaXplX3QgejsKKyAgICAgIHNpemVfdCB6ID0gKCpwX2FyZyktPnNpemU7CisgICAgICBpbnQgdHlwZSA9ICgqcF9hcmcpLT50eXBlOwogCi0gICAgICB6ID0gKCpwX2FyZyktPnNpemU7CiAgICAgICBpZiAoeiA8IHNpemVvZiAoaW50KSkKIAl7Ci0JICBzd2l0Y2ggKCgqcF9hcmcpLT50eXBlKQorCSAgc3dpdGNoICh0eXBlKQogCSAgICB7CiAJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJICAgICAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkgKihTSU5UOCAqKSAqcF9hcmd2OwpAQCAtNzEsNyArODQsMTQgQEAKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKyNpZmRlZiBfX01JTlRfXworCSAgICAgIGlmICh6ID09IDEgfHwgeiA9PSAyKQorCQltZW1jcHkgKGFyZ3AgKyAyLCAqcF9hcmd2LCB6KTsKKyAgICAgICAgICAgICAgZWxzZQorCQltZW1jcHkgKGFyZ3AsICpwX2FyZ3YsIHopOworI2Vsc2UKIAkgICAgICBtZW1jcHkgKGFyZ3AgKyBzaXplb2YgKGludCkgLSB6LCAqcF9hcmd2LCB6KTsKKyNlbmRpZgogCSAgICAgIGJyZWFrOwogCiAJICAgIGRlZmF1bHQ6CkBAIC0xMTYsMTcgKzEzNiwzNCBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKyAgICAgIGlmIChjaWYtPnJ0eXBlLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYKKyAgICAgICAgICBjaWYtPnJ0eXBlLT5lbGVtZW50c1sxXSkKKyAgICAgICAgeworICAgICAgICAgIGNpZi0+ZmxhZ3MgPSAwOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+c2l6ZSkKIAl7CiAJY2FzZSAxOgorI2lmZGVmIF9fTUlOVF9fCisJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1NUUlVDVDI7CisjZWxzZQogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19TVFJVQ1QxOworI2VuZGlmCiAJICBicmVhazsKIAljYXNlIDI6CiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1NUUlVDVDI7CiAJICBicmVhazsKKyNpZmRlZiBfX01JTlRfXworCWNhc2UgMzoKKyNlbmRpZgogCWNhc2UgNDoKIAkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfSU5UOwogCSAgYnJlYWs7CisjaWZkZWYgX19NSU5UX18KKwljYXNlIDc6CisjZW5kaWYKIAljYXNlIDg6CiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0RJTlQ7CiAJICBicmVhazsKQEAgLTE0NCw5ICsxODEsMTUgQEAKICAgICAgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfRE9VQkxFOwogICAgICAgYnJlYWs7CiAKKyNpZiAoRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUpCiAgICAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorI2lmZGVmIF9fTUlOVF9fCisgICAgICBjaWYtPmZsYWdzID0gMDsKKyNlbHNlCiAgICAgICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0xET1VCTEU7CisjZW5kaWYKICAgICAgIGJyZWFrOworI2VuZGlmCiAKICAgICBjYXNlIEZGSV9UWVBFX1BPSU5URVI6CiAgICAgICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1BPSU5URVI7CkBAIC0yMTIsNiArMjU1LDI2IEBACiAgICAgICBzaXplX3QgejsKIAogICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOworI2lmZGVmIF9fTUlOVF9fCisgICAgICBpZiAoY2lmLT5mbGFncyAmJgorICAgICAgICAgIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICYmCisgICAgICAgICAgKHogPT0gMSB8fCB6ID09IDIpKQorIAl7CisJICAqcF9hcmd2ID0gKHZvaWQgKikgKGFyZ3AgKyAyKTsKKworCSAgeiA9IDQ7CisJfQorICAgICAgZWxzZQorICAgICAgaWYgKGNpZi0+ZmxhZ3MgJiYKKyAgICAgICAgICBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCAmJgorICAgICAgICAgICh6ID09IDMgfHwgeiA9PSA0KSkKKyAJeworCSAgKnBfYXJndiA9ICh2b2lkICopIChhcmdwKTsKKworCSAgeiA9IDQ7CisJfQorICAgICAgZWxzZQorI2VuZGlmCiAgICAgICBpZiAoeiA8PSA0KQogCXsKIAkgICpwX2FyZ3YgPSAodm9pZCAqKSAoYXJncCArIDQgLSB6KTsKQEAgLTI1NSwxOSArMzE4LDMxIEBACiAJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKIAkJICAgICAgdm9pZCAqY29kZWxvYykKIHsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgICoodW5zaWduZWQgc2hvcnQgKiljbG9zdXJlLT50cmFtcCA9IDB4MjA3YzsKICAgKih2b2lkICoqKShjbG9zdXJlLT50cmFtcCArIDIpID0gY29kZWxvYzsKICAgKih1bnNpZ25lZCBzaG9ydCAqKShjbG9zdXJlLT50cmFtcCArIDYpID0gMHg0ZWY5OwotICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICYmICFjaWYtPmZsYWdzKQorCisgIGlmICgKKyNpZmRlZiBfX01JTlRfXworICAgICAgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkgfHwKKyNlbmRpZgorICAgICAgKCgoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisgICAgICAgICAmJiAhY2lmLT5mbGFncykpKQogICAgICoodm9pZCAqKikoY2xvc3VyZS0+dHJhbXAgKyA4KSA9IGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWOwogICBlbHNlCiAgICAgKih2b2lkICoqKShjbG9zdXJlLT50cmFtcCArIDgpID0gZmZpX2Nsb3N1cmVfU1lTVjsKIAorI2lmZGVmIF9fcnRlbXNfXworICBydGVtc19jYWNoZV9mbHVzaF9tdWx0aXBsZV9kYXRhX2xpbmVzKCBjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFICk7CisjZWxpZiBkZWZpbmVkKF9fTUlOVF9fKQorICBTc3lzdGVtKFNfRkxVU0hDQUNIRSwgY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSk7CisjZWxzZQogICBzeXNjYWxsKFNZU19jYWNoZWZsdXNoLCBjb2RlbG9jLCBGTFVTSF9TQ09QRV9MSU5FLAogCSAgRkxVU0hfQ0FDSEVfQk9USCwgRkZJX1RSQU1QT0xJTkVfU0laRSk7CisjZW5kaWYKIAogICBjbG9zdXJlLT5jaWYgID0gY2lmOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CkBAIC0yNzUsNCArMzUwLDMgQEAKIAogICByZXR1cm4gRkZJX09LOwogfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaAppbmRleCA2MzM3MTdiLi5lODFkZGUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTW90b3JvbGEgNjhLLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsOCArMzksOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TCmluZGV4IDU4ODIyZTAuLmY2ZjRlZjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TCkBAIC0xLDUgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCBBbmRyZWFzIFNjaHdhYgorCQorICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAyMDEyIEFsYW4gSG91cmloYW5lCisJICAgIENvcHlyaWdodCAoYykgMTk5OCwgMjAxMiBBbmRyZWFzIFNjaHdhYgogCSAgICBDb3B5cmlnaHQgKGMpIDIwMDggUmVkIEhhdCwgSW5jLiAKICAgIAogICAgbTY4ayBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKQEAgLTQxLDEzICs0MywxOSBAQAogI2RlZmluZSBDRklfRU5EUFJPQygpCiAjZW5kaWYKIAorI2lmZGVmIF9fTUlOVF9fCisjZGVmaW5lIENBTExGVU5DKGZ1bmNuYW1lKSBfICMjIGZ1bmNuYW1lCisjZWxzZQorI2RlZmluZSBDQUxMRlVOQyhmdW5jbmFtZSkgZnVuY25hbWUKKyNlbmRpZgorCiAJLnRleHQKIAotCS5nbG9ibAlmZmlfY2FsbF9TWVNWCi0JLnR5cGUJZmZpX2NhbGxfU1lTVixAZnVuY3Rpb24KKwkuZ2xvYmwJQ0FMTEZVTkMoZmZpX2NhbGxfU1lTVikKKwkudHlwZQlDQUxMRlVOQyhmZmlfY2FsbF9TWVNWKSxAZnVuY3Rpb24KIAkuYWxpZ24JNAogCi1mZmlfY2FsbF9TWVNWOgorQ0FMTEZVTkMoZmZpX2NhbGxfU1lTVik6CiAJQ0ZJX1NUQVJUUFJPQygpCiAJbGluawklZnAsIzAKIAlDRklfT0ZGU0VUKDE0LC04KQpAQCAtNjIsMTQgKzcwLDE4IEBACiAJbW92ZS5sCTgoJWZwKSwtKCVzcCkKIAlwZWEJNCglc3ApCiAjaWYgIWRlZmluZWQgX19QSUNfXwotCWpzcglmZmlfcHJlcF9hcmdzCisJanNyCUNBTExGVU5DKGZmaV9wcmVwX2FyZ3MpCiAjZWxzZQotCWJzci5sCWZmaV9wcmVwX2FyZ3NAUExUUEMKKwlic3IubAlDQUxMRlVOQyhmZmlfcHJlcF9hcmdzQFBMVFBDKQogI2VuZGlmCiAJYWRkcS5sCSM4LCVzcAkKIAogCXwgUGFzcyBwb2ludGVyIHRvIHN0cnVjdCB2YWx1ZSwgaWYgYW55CisjaWZkZWYgX19NSU5UX18KKwltb3ZlLmwJJWQwLCVhMQorI2Vsc2UKIAltb3ZlLmwJJWEwLCVhMQorI2VuZGlmCiAKIAl8IENhbGwgdGhlIGZ1bmN0aW9uCiAJbW92ZS5sCTI0KCVmcCksJWEwCkBAIC04NSw3ICs5NywxMiBAQAogCW1vdmUubAkxNiglZnApLCVkMgogCiAJfCBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4KKwl8IE5PVEU6IE9uIHRoZSBtYzY4MDAwLCB0c3Qgb24gYW4gYWRkcmVzcyByZWdpc3RlciBpcyBub3Qgc3VwcG9ydGVkLgorI2lmICFkZWZpbmVkKF9fbWM2ODAyMF9fKSAmJiAhZGVmaW5lZChfX21jNjgwMzBfXykgJiYgIWRlZmluZWQoX19tYzY4MDQwX18pICYmICFkZWZpbmVkKF9fbWM2ODA2MF9fKSAmJiAhZGVmaW5lZChfX21jb2xkZmlyZV9fKQorCWNtcC53CSMwLCAlYTEKKyNlbHNlCiAJdHN0LmwJJWExCisjZW5kaWYKIAlqYmVxCW5vcmV0dmFsCiAKIAlidHN0CSMwLCVkMgpAQCAtMTAzLDI1ICsxMjAsNDQgQEAKIHJldGZsb2F0OgogCWJ0c3QJIzIsJWQyCiAJamJlcQlyZXRkb3VibGUKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLnMJJWZwMCwoJWExKQorI2Vsc2UKKwltb3ZlLmwJJWQwLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldGRvdWJsZToKIAlidHN0CSMzLCVkMgogCWpiZXEJcmV0bG9uZ2RvdWJsZQorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUuZAklZnAwLCglYTEpCisjZWxzZQorCW1vdmUubAklZDAsKCVhMSkrCisJbW92ZS5sCSVkMSwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRsb25nZG91YmxlOgogCWJ0c3QJIzQsJWQyCiAJamJlcQlyZXRwb2ludGVyCisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS54CSVmcDAsKCVhMSkKKyNlbHNlCisJbW92ZS5sCSVkMCwoJWExKSsKKwltb3ZlLmwJJWQxLCglYTEpKworCW1vdmUubAklZDIsKCVhMSkKKyNlbmRpZgogCWpicmEJZXBpbG9ndWUKIAogcmV0cG9pbnRlcjoKIAlidHN0CSM1LCVkMgogCWpiZXEJcmV0c3RydWN0MQorI2lmZGVmIF9fTUlOVF9fCisJbW92ZS5sCSVkMCwoJWExKQorI2Vsc2UKIAltb3ZlLmwJJWEwLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldHN0cnVjdDE6CkBAIC0xNDEsMTMgKzE3NywxMyBAQAogCXVubGsJJWZwCiAJcnRzCiAJQ0ZJX0VORFBST0MoKQotCS5zaXplCWZmaV9jYWxsX1NZU1YsLi1mZmlfY2FsbF9TWVNWCisJLnNpemUJQ0FMTEZVTkMoZmZpX2NhbGxfU1lTViksLi1DQUxMRlVOQyhmZmlfY2FsbF9TWVNWKQogCi0JLmdsb2JsCWZmaV9jbG9zdXJlX1NZU1YKLQkudHlwZQlmZmlfY2xvc3VyZV9TWVNWLCBAZnVuY3Rpb24KKwkuZ2xvYmwJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVikKKwkudHlwZQlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKSwgQGZ1bmN0aW9uCiAJLmFsaWduCTQKIAotZmZpX2Nsb3N1cmVfU1lTVjoKK0NBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpOgogCUNGSV9TVEFSVFBST0MoKQogCWxpbmsJJWZwLCMtMTIKIAlDRklfT0ZGU0VUKDE0LC04KQpAQCAtMTU3LDkgKzE5Myw5IEBACiAJcGVhCS0xMiglZnApCiAJbW92ZS5sCSVhMCwtKCVzcCkKICNpZiAhZGVmaW5lZCBfX1BJQ19fCi0JanNyCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKKwlqc3IJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcikKICNlbHNlCi0JYnNyLmwJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lckBQTFRQQworCWJzci5sCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMpCiAjZW5kaWYKIAogCWxzci5sCSMxLCVkMApAQCAtMTc4LDE2ICsyMTQsMzEgQEAKIAltb3ZlLmwJKCVhMCksJWQxCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAuTGNsc19yZXRfZmxvYXQ6CisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS5zCSglYTApLCVmcDAKKyNlbHNlCisJbW92ZS5sCSglYTApLCVkMAorI2VuZGlmCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAxOgogCWxzci5sCSMyLCVkMAogCWpuZQkxZgogCWpjcwkuTGNsc19yZXRfbGRvdWJsZQorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUuZAkoJWEwKSwlZnAwCisjZWxzZQorCW1vdmUubAkoJWEwKSssJWQwCisJbW92ZS5sCSglYTApLCVkMQorI2VuZGlmCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAuTGNsc19yZXRfbGRvdWJsZToKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLngJKCVhMCksJWZwMAorI2Vsc2UKKwltb3ZlLmwJKCVhMCkrLCVkMAorCW1vdmUubAkoJWEwKSssJWQxCisJbW92ZS5sCSglYTApLCVkMgorI2VuZGlmCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAxOgogCWxzci5sCSMyLCVkMApAQCAtMjA0LDEzICsyNTUsMTMgQEAKIAlqcmEJLkxjbHNfZXBpbG9ndWUKIAlDRklfRU5EUFJPQygpCiAKLQkuc2l6ZQlmZmlfY2xvc3VyZV9TWVNWLC4tZmZpX2Nsb3N1cmVfU1lTVgorCS5zaXplCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpLC4tQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVikKIAotCS5nbG9ibAlmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVgotCS50eXBlCWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWLCBAZnVuY3Rpb24KKwkuZ2xvYmwJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpCisJLnR5cGUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpLCBAZnVuY3Rpb24KIAkuYWxpZ24JNAogCi1mZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVjoKK0NBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKToKIAlDRklfU1RBUlRQUk9DKCkKIAlsaW5rCSVmcCwjMAogCUNGSV9PRkZTRVQoMTQsLTgpCkBAIC0yMjAsMTQgKzI3MSwxNCBAQAogCW1vdmUubAklYTEsLSglc3ApCiAJbW92ZS5sCSVhMCwtKCVzcCkKICNpZiAhZGVmaW5lZCBfX1BJQ19fCi0JanNyCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKKwlqc3IJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcikKICNlbHNlCi0JYnNyLmwJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lckBQTFRQQworCWJzci5sCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMpCiAjZW5kaWYKIAl1bmxrCSVmcAogCXJ0cwogCUNGSV9FTkRQUk9DKCkKLQkuc2l6ZQlmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTViwuLWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWCisJLnNpemUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpLC4tQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpCiAKICNpZiBkZWZpbmVkIF9fRUxGX18gJiYgZGVmaW5lZCBfX2xpbnV4X18KIAkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYwppbmRleCBkNzE0Y2M5Li43OWNmZjliIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpLmMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KLSAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4ICAgICAgIERhdmlkIERhbmV5CisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAxMSAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggIERhdmlkIERhbmV5CisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5NiwgMjAwNywgMjAwOCwgMjAxMSAgUmVkIEhhdCwgSW5jLgogICAgCiAgICBNSVBTIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0zNyw3ICszOCwxMSBAQAogI2VuZGlmCiAKICNpZm5kZWYgVVNFX19CVUlMVElOX19fQ0xFQVJfQ0FDSEUKLSNpbmNsdWRlIDxzeXMvY2FjaGVjdGwuaD4KKyMgIGlmIGRlZmluZWQoX19PcGVuQlNEX18pCisjICAgIGluY2x1ZGUgPG1pcHM2NC9zeXNhcmNoLmg+CisjICBlbHNlCisjICAgIGluY2x1ZGUgPHN5cy9jYWNoZWN0bC5oPgorIyAgZW5kaWYKICNlbmRpZgogCiAjaWZkZWYgRkZJX0RFQlVHCkBAIC02NjIsMTAgKzY2NywxMiBAQAogICBjaGFyICpjbGVhcl9sb2NhdGlvbiA9IChjaGFyICopIGNvZGVsb2M7CiAKICNpZiBkZWZpbmVkKEZGSV9NSVBTX08zMikKLSAgRkZJX0FTU0VSVChjaWYtPmFiaSA9PSBGRklfTzMyIHx8IGNpZi0+YWJpID09IEZGSV9PMzJfU09GVF9GTE9BVCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfTzMyICYmIGNpZi0+YWJpICE9IEZGSV9PMzJfU09GVF9GTE9BVCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gZmZpX2Nsb3N1cmVfTzMyOwogI2Vsc2UgLyogRkZJX01JUFNfTjMyICovCi0gIEZGSV9BU1NFUlQoY2lmLT5hYmkgPT0gRkZJX04zMiB8fCBjaWYtPmFiaSA9PSBGRklfTjY0KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9OMzIgJiYgY2lmLT5hYmkgIT0gRkZJX042NCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gZmZpX2Nsb3N1cmVfTjMyOwogI2VuZGlmIC8qIEZGSV9NSVBTX08zMiAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaAppbmRleCBjNWY0ZTA1Li43MTdkNjU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTUlQUy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNywxMSArMjgsMjMgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZmRlZiBsaW51eAogIyBpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgotI2Vsc2UKKyNlbGlmIGRlZmluZWQoX19ydGVtc19fKQorLyoKKyAqIFN1YnByb2dyYW0gY2FsbGluZyBjb252ZW50aW9uIC0gY29waWVkIGZyb20gc2dpZGVmcy5oCisgKi8KKyNkZWZpbmUgX01JUFNfU0lNX0FCSTMyCQkxCisjZGVmaW5lIF9NSVBTX1NJTV9OQUJJMzIJMgorI2RlZmluZSBfTUlQU19TSU1fQUJJNjQJCTMKKyNlbGlmICFkZWZpbmVkKF9fT3BlbkJTRF9fKQogIyBpbmNsdWRlIDxzZ2lkZWZzLmg+CiAjZW5kaWYKKwogIyAgaWZuZGVmIF9BQklOMzIKICMgICAgZGVmaW5lIF9BQklOMzIgX01JUFNfU0lNX05BQkkzMgogIyAgZW5kaWYKQEAgLTQzLDcgKzU2LDcgQEAKICMgIGVuZGlmCiAKICNpZiAhZGVmaW5lZChfTUlQU19TSU0pCi0tLSBzb21ldGhpbmcgaXMgdmVyeSB3cm9uZyAtLQorIyBlcnJvciAtLSBzb21ldGhpbmcgaXMgdmVyeSB3cm9uZyAtLQogI2Vsc2UKICMgIGlmIChfTUlQU19TSU09PV9BQklOMzIgJiYgZGVmaW5lZChfQUJJTjMyKSkgfHwgKF9NSVBTX1NJTT09X0FCSTY0ICYmIGRlZmluZWQoX0FCSTY0KSkKICMgICAgZGVmaW5lIEZGSV9NSVBTX04zMgpAQCAtNTEsNyArNjQsNyBAQAogIyAgICBpZiAoX01JUFNfU0lNPT1fQUJJTzMyICYmIGRlZmluZWQoX0FCSU8zMikpCiAjICAgICAgZGVmaW5lIEZGSV9NSVBTX08zMgogIyAgICBlbHNlCi0tLSB0aGlzIGlzIGFuIHVuc3VwcG9ydGVkIHBsYXRmb3JtIC0tCisjICAgICBlcnJvciAtLSB0aGlzIGlzIGFuIHVuc3VwcG9ydGVkIHBsYXRmb3JtIC0tCiAjICAgIGVuZGlmCiAjICBlbmRpZgogI2VuZGlmCkBAIC0xODYsMzAgKzE5OSwyOSBAQAogICBGRklfTzMyX1NPRlRfRkxPQVQsCiAgIEZGSV9OMzJfU09GVF9GTE9BVCwKICAgRkZJX042NF9TT0ZUX0ZMT0FULAorICBGRklfTEFTVF9BQkksCiAKICNpZmRlZiBGRklfTUlQU19PMzIKICNpZmRlZiBfX21pcHNfc29mdF9mbG9hdAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTzMyX1NPRlRfRkxPQVQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzJfU09GVF9GTE9BVAogI2Vsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMiwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMgogI2VuZGlmCiAjZWxzZQogIyBpZiBfTUlQU19TSU09PV9BQkk2NAogIyAgaWZkZWYgX19taXBzX3NvZnRfZmxvYXQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NF9TT0ZUX0ZMT0FULAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjY0X1NPRlRfRkxPQVQKICMgIGVsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NAogIyAgZW5kaWYKICMgZWxzZQogIyAgaWZkZWYgX19taXBzX3NvZnRfZmxvYXQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMl9TT0ZUX0ZMT0FULAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjMyX1NPRlRfRkxPQVQKICMgIGVsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMiwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMgogIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKIAogI2RlZmluZSBGRklfRVhUUkFfQ0lGX0ZJRUxEUyB1bnNpZ25lZCByc3RydWN0X2ZsYWcKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TCmluZGV4IGFlMjMwOTQuLmZmNGJiY2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9uMzIuUwpAQCAtNDMsNiArNDMsNyBAQAogI2lmZGVmIF9fR05VQ19fCiAJLmFiaWNhbGxzCiAjZW5kaWYKKwkuc2V0IG1pcHM0CiAJLnRleHQKIAkuYWxpZ24JMgogCS5nbG9ibAlmZmlfY2FsbF9OMzIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21veGllL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbW94aWUvZmZpdGFyZ2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MzA1ZDEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbW94aWUvZmZpdGFyZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMDkgQW50aG9ueSBHcmVlbgotICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBNb3hpZQotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0gICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0gICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKLSAgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAotICAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0gICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICi0jZGVmaW5lIExJQkZGSV9UQVJHRVRfSAotCi0vKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9BU00KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwotdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwotCi10eXBlZGVmIGVudW0gZmZpX2FiaSB7Ci0gIEZGSV9GSVJTVF9BQkkgPSAwLAotCi0jaWZkZWYgTU9YSUUKLSAgRkZJX0VBQkksCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9FQUJJLAotI2VuZGlmCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQotfSBmZmlfYWJpOwotI2VuZGlmCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNkZWZpbmUgRkZJX0NMT1NVUkVTIDAKLSNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKLQotLyogVHJhbXBvbGluZXMgYXJlIDUgNC1ieXRlIGluc3RydWN0aW9ucyBsb25nLiAgKi8KLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAoNSo0KQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMKaW5kZXggNmQ3NjA2Zi4uNGNlMmJjNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMKQEAgLTEsOSArMSwxMSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gKGMpIDIwMDMtMjAwNCBSYW5kb2xwaCBDaHVuZyA8dGF1c3FAZGViaWFuLm9yZz4KKyAgIGZmaS5jIC0gKGMpIDIwMTEgQW50aG9ueSBHcmVlbgogICAgICAgICAgICAoYykgMjAwOCBSZWQgSGF0LCBJbmMuCi0KKwkgICAoYykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICAgICAgKGMpIDIwMDMtMjAwNCBSYW5kb2xwaCBDaHVuZyA8dGF1c3FAZGViaWFuLm9yZz4KKyAgICAgICAgICAgCiAgICBIUFBBIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCi0gICBIUC1VWCBQQSBBQkkgc3VwcG9ydCAoYykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIEhQLVVYIFBBIEFCSSBzdXBwb3J0IAogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtNjMzLDcgKzYzNSw4IEBACiAgIFVJTlQzMiAqdG1wOwogI2VuZGlmCiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1BBMzIpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1BBMzIpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIC8qIE1ha2UgYSBzbWFsbCB0cmFtcG9saW5lIHRoYXQgd2lsbCBicmFuY2ggdG8gb3VyCiAgICAgIGhhbmRsZXIgZnVuY3Rpb24uIFVzZSBQQy1yZWxhdGl2ZSBhZGRyZXNzaW5nLiAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmgKaW5kZXggMDAxZjg5MS4uNWUzNjRkMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgaHBwYS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zOCwyMSArNDMsMjIgQEAKIAogI2lmZGVmIFBBX0xJTlVYCiAgIEZGSV9QQTMyLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMiwKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMgogI2VuZGlmCiAKICNpZmRlZiBQQV9IUFVYCiAgIEZGSV9QQTMyLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMiwKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMgogI2VuZGlmCiAKICNpZmRlZiBQQTY0X0hQVVgKICNlcnJvciAiUEE2NF9IUFVYIEZGSSBpcyBub3QgeWV0IGltcGxlbWVudGVkIgogICBGRklfUEE2NCwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBNjQsCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBNjQKICNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUwppbmRleCBjNmY4NzY0Li4yMTNmMmRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4LlMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgYWl4LlMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIGFpeC5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgYmFzZWQgb24gZGFyd2luLlMgYnkgSm9obiBIb3Jua3Zpc3QKIAogICAgUG93ZXJQQyBBc3NlbWJseSBnbHVlLgpAQCAtNzksNiArNzksOCBAQAogCS5zZXQgZjIwLDIwCiAJLnNldCBmMjEsMjEKIAorCS5leHRlcm4gLmZmaV9wcmVwX2FyZ3MKKwogI2RlZmluZSBMSUJGRklfQVNNCiAjaW5jbHVkZSA8ZmZpY29uZmlnLmg+CiAjaW5jbHVkZSA8ZmZpLmg+CkBAIC0xMjUsNiArMTI3LDcgQEAKIAkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuICAqLwogCW1yCXI0LCByMQogCWJsCS5mZmlfcHJlcF9hcmdzCisJbm9wCiAKIAkvKiBOb3cgZG8gdGhlIGNhbGwuICAqLwogCWxkCXIwLCAwKHIyOSkKQEAgLTIyNiw2ICsyMjksNyBAQAogCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gICovCiAJbXIJcjQsIHIxCiAJYmwJLmZmaV9wcmVwX2FyZ3MKKwlub3AKIAogCS8qIE5vdyBkbyB0aGUgY2FsbC4gICovCiAJbHd6CXIwLCAwKHIyOSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUwppbmRleCA1Yzc0NDQ4Li5hYWJkM2MzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCkBAIC03OSw2ICs3OSw4IEBACiAJLnNldCBmMjAsMjAKIAkuc2V0IGYyMSwyMQogCisJLmV4dGVybiAuZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgorCiAjZGVmaW5lIExJQkZGSV9BU00KICNkZWZpbmUgSlVNUFRBUkdFVChuYW1lKSBuYW1lCiAjZGVmaW5lIEwoeCkgeApAQCAtMTY1LDYgKzE2Nyw3IEBACiAKIAkvKiBsb29rIHVwIHRoZSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQgaW4gdGFibGUgICovCiAJLyogYnkgdXNpbmcgcmV0dXJuIHR5cGUgYXMgb2Zmc2V0ICovCisJbGh6CXIzLCAxMChyMykJLyogbG9hZCB0eXBlIGZyb20gcmV0dXJuIHR5cGUgKi8KIAlsZAlyNCwgTEMuLjYwKDIpCS8qIGdldCBhZGRyZXNzIG9mIGp1bXAgdGFibGUgKi8KIAlzbGRpCXIzLCByMywgNAkvKiBub3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgMTYgKi8KIAlsZAlyMCwgMjQwKzE2KHIxKQkvKiBsb2FkIHJldHVybiBhZGRyZXNzICovCkBAIC0zMzcsOCArMzQwLDkgQEAKIAogCS8qIGxvb2sgdXAgdGhlIHByb3BlciBzdGFydGluZyBwb2ludCBpbiB0YWJsZSAgKi8KIAkvKiBieSB1c2luZyByZXR1cm4gdHlwZSBhcyBvZmZzZXQgKi8KKwlsaHoJcjMsIDYocjMpCS8qIGxvYWQgdHlwZSBmcm9tIHJldHVybiB0eXBlICovCiAJbHd6CXI0LCBMQy4uNjAoMikJLyogZ2V0IGFkZHJlc3Mgb2YganVtcCB0YWJsZSAqLwotCXNsd2kJcjMsIHIzLCA0CS8qIG5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSA0ICovCisJc2x3aQlyMywgcjMsIDQJLyogbm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2ICovCiAJbHd6CXIwLCAxNzYrOChyMSkJLyogbG9hZCByZXR1cm4gYWRkcmVzcyAqLwogCWFkZAlyMywgcjMsIHI0CS8qIGFkZCBjb250ZW50cyBvZiB0YWJsZSB0byB0YWJsZSBhZGRyZXNzICovCiAJbXRjdHIJcjMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oCmluZGV4IGU4NmU2YjAuLjk5NGY2MmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9hc20uaApAQCAtNDIsNyArNDIsNyBAQAogCiAvKiBJZiBjb21waWxlZCBmb3IgcHJvZmlsaW5nLCBjYWxsIGBfbWNvdW50JyBhdCB0aGUgc3RhcnQgb2YgZWFjaCBmdW5jdGlvbi4gICovCiAjaWZkZWYJUFJPRgotLyogVGhlIG1jb3VudCBjb2RlIHJlbGllcyBvbiBhIHRoZSByZXR1cm4gYWRkcmVzcyBiZWluZyBvbiB0aGUgc3RhY2sKKy8qIFRoZSBtY291bnQgY29kZSByZWxpZXMgb24gdGhlIHJldHVybiBhZGRyZXNzIGJlaW5nIG9uIHRoZSBzdGFjawogICAgdG8gbG9jYXRlIG91ciBjYWxsZXIgYW5kIHNvIGl0IGNhbiByZXN0b3JlIGl0OyBzbyBzdG9yZSBvbmUganVzdAogICAgZm9yIGl0cyBiZW5lZml0LiAgKi8KICNpZmRlZiBQSUMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TCmluZGV4IGQ4YTFkZjUuLjRmOTg3ZGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW4uUwpAQCAtMSw2ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBkYXJ3aW4uUyAtIENvcHlyaWdodCAoYykgMjAwMCBKb2huIEhvcm5rdmlzdAotCSAgICAgIENvcHlyaWdodCAoYykgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwkgICAgICBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFBvd2VyUEMgQXNzZW1ibHkgZ2x1ZS4KIApAQCAtMjQsNTEgKzI0LDkyIEBACiAgICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisjZGVmaW5lIExJQkZGSV9BU00KICNpZiBkZWZpbmVkKF9fcHBjNjRfXykKICNkZWZpbmUgTU9ERV9DSE9JQ0UoeCwgeSkgeQogI2Vsc2UKICNkZWZpbmUgTU9ERV9DSE9JQ0UoeCwgeSkgeAogI2VuZGlmCiAKLSNkZWZpbmUgZ19sb25nICBNT0RFX0NIT0lDRShsb25nLCBxdWFkKSAgICAgICAgIC8qIHVzYWdlIGlzICIuZ19sb25nIiAqLworI2RlZmluZSBtYWNoaW5lX2Nob2ljZQlNT0RFX0NIT0lDRShwcGM3NDAwLHBwYzY0KQogCi0jZGVmaW5lIExPRzJfR1BSX0JZVEVTICBNT0RFX0NIT0lDRSgyLDMpICAgICAgICAvKiBsb2cyKEdQUl9CWVRFUykgKi8KKzsgRGVmaW5lIHNvbWUgcHNldWRvLW9wY29kZXMgZm9yIHNpemUtaW5kZXBlbmRlbnQgbG9hZCAmIHN0b3JlIG9mIEdQUnMgLi4uCisjZGVmaW5lIGxndQkJTU9ERV9DSE9JQ0UobHd6dSwgbGR1KQorI2RlZmluZSBsZwkJTU9ERV9DSE9JQ0UobHd6LGxkKQorI2RlZmluZSBzZwkJTU9ERV9DSE9JQ0Uoc3R3LHN0ZCkKKyNkZWZpbmUgc2d1CQlNT0RFX0NIT0lDRShzdHd1LHN0ZHUpCisjZGVmaW5lIHNndXgJCU1PREVfQ0hPSUNFKHN0d3V4LHN0ZHV4KQogCi0jZGVmaW5lIExJQkZGSV9BU00KKzsgLi4uIGFuZCB0aGUgc2l6ZSBvZiBHUFJzIGFuZCB0aGVpciBzdG9yYWdlIGluZGljYXRvci4KKyNkZWZpbmUgR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDQsOCkKKyNkZWZpbmUgTE9HMl9HUFJfQllURVMJTU9ERV9DSE9JQ0UoMiwzKQkvKiBsb2cyKEdQUl9CWVRFUykgKi8KKyNkZWZpbmUgZ19sb25nCQlNT0RFX0NIT0lDRShsb25nLCBxdWFkKQkvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKworOyBGcm9tIHRoZSBBQkkgZG9jOiAiTWFjIE9TIFggQUJJIEZ1bmN0aW9uIENhbGwgR3VpZGUiIFZlcnNpb24gMjAwOS0wMi0wNC4KKyNkZWZpbmUgTElOS0FHRV9TSVpFCU1PREVfQ0hPSUNFKDI0LDQ4KQorI2RlZmluZSBQQVJBTV9BUkVBCU1PREVfQ0hPSUNFKDMyLDY0KQorI2RlZmluZSBTQVZFRF9MUl9PRkZTRVQJTU9ERV9DSE9JQ0UoOCwxNikJLyogc2F2ZSBwb3NpdGlvbiBmb3IgbHIgKi8KKworLyogSWYgdGhlcmUgaXMgYW55IEZQIHN0dWZmIHdlIG1ha2Ugc3BhY2UgZm9yIGFsbCBvZiB0aGUgcmVncy4gICovCisjZGVmaW5lIFNBVkVEX0ZQUl9DT1VOVCAxMworI2RlZmluZSBGUFJfU0laRQk4CisjZGVmaW5lIFJFU1VMVF9CWVRFUwkxNgorCisvKiBUaGlzIHNob3VsZCBiZSBrZXB0IGluIHN0ZXAgd2l0aCB0aGUgc2FtZSB2YWx1ZSBpbiBmZmlfZGFyd2luLmMuICAqLworI2RlZmluZSBBU01fTkVFRFNfUkVHSVNURVJTIDQKKyNkZWZpbmUgU0FWRV9SRUdTX1NJWkUgKEFTTV9ORUVEU19SRUdJU1RFUlMgKiBHUFJfQllURVMpCisKICNpbmNsdWRlIDxmZmljb25maWcuaD4KICNpbmNsdWRlIDxmZmkuaD4KKwogI2RlZmluZSBKVU1QVEFSR0VUKG5hbWUpIG5hbWUKICNkZWZpbmUgTCh4KSB4Ci0udGV4dAotCS5hbGlnbiAyCi0uZ2xvYmwgX2ZmaV9wcmVwX2FyZ3MKIAotLnRleHQKKwkudGV4dAogCS5hbGlnbiAyCi0uZ2xvYmwgX2ZmaV9jYWxsX0RBUldJTgotLnRleHQKKwkuZ2xvYmwgX2ZmaV9wcmVwX2FyZ3MKKwogCS5hbGlnbiAyCisJLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4KKworCS8qIFdlIGFycml2ZSBoZXJlIHdpdGg6CisJICAgcjMgPSBwdHIgdG8gZXh0ZW5kZWQgY2lmLgorCSAgIHI0ID0gLWJ5dGVzLgorCSAgIHI1ID0gY2lmIGZsYWdzLgorCSAgIHI2ID0gcHRyIHRvIHJldHVybiB2YWx1ZS4KKwkgICByNyA9IGZuIHBvaW50ZXIgKHVzZXIgZnVuYykuCisJICAgcjggPSBmbiBwb2ludGVyIChmZmlfcHJlcF9hcmdzKS4KKwkgICByOSA9IGZmaV90eXBlKiBmb3IgdGhlIHJldCB2YWwuICAqLworCiBfZmZpX2NhbGxfREFSV0lOOgotTEZCMDoKK0xzdGFydGNvZGU6CiAJbXIgICAJcjEyLHI4CS8qIFdlIG9ubHkgbmVlZCByMTIgdW50aWwgdGhlIGNhbGwsCi0JCQkgICBzbyBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgc2F2ZWQuICAqLworCQkJICAgc28gaXQgZG9lcyBub3QgaGF2ZSB0byBiZSBzYXZlZC4gICovCiBMRkIxOgogCS8qIFNhdmUgdGhlIG9sZCBzdGFjayBwb2ludGVyIGFzIEFQLiAgKi8KIAltcglyOCxyMQogTENGSTA6CisJCisJLyogU2F2ZSB0aGUgcmV0dmFsIHR5cGUgaW4gcGFyZW50cyBmcmFtZS4gICovCisJc2cJcjksKExJTktBR0VfU0laRSs2KkdQUl9CWVRFUykocjgpCisKIAkvKiBBbGxvY2F0ZSB0aGUgc3RhY2sgc3BhY2Ugd2UgbmVlZC4gICovCi0Jc3R3dXgJcjEscjEscjQKKwlzZ3V4CXIxLHIxLHI0CiAKIAkvKiBTYXZlIHJlZ2lzdGVycyB3ZSB1c2UuICAqLwogCW1mbHIJcjkKKwlzZwlyOSxTQVZFRF9MUl9PRkZTRVQocjgpCiAKLQlzdHcJcjI4LC0xNihyOCkJCi0Jc3R3CXIyOSwtMTIocjgpCi0Jc3R3CXIzMCwtOChyOCkKLQlzdHcJcjMxLC00KHI4KQorCXNnCXIyOCwtKDQgKiBHUFJfQllURVMpKHI4KQkKKwlzZwlyMjksLSgzICogR1BSX0JZVEVTKShyOCkKKwlzZwlyMzAsLSgyICogR1BSX0JZVEVTKShyOCkKKwlzZwlyMzEsLSggICAgR1BSX0JZVEVTKShyOCkKIAotCXN0dwlyOSw4KHI4KQotCXN0dwlyMiwyMChyMSkKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTikKKwkvKiBUaGUgVE9DIHNsb3QgaXMgcmVzZXJ2ZWQgaW4gdGhlIERhcndpbiBBQkkgYW5kIHIyIGlzIHZvbGF0aWxlLiAgKi8KKwlzZwlyMiwoNSAqIEdQUl9CWVRFUykocjEpCisjZW5kaWYKKwogTENGSTE6CiAKIAkvKiBTYXZlIGFyZ3VtZW50cyBvdmVyIGNhbGwuICAqLwpAQCAtNzcsMTQgKzExOCwxNyBAQAogCW1yCXIyOSxyNwkvKiBmdW5jdGlvbiBhZGRyZXNzLCAgKi8KIAltcglyMjgscjgJLyogb3VyIEFQLiAgKi8KIExDRkkyOgotCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gICovCisJLyogQ2FsbCBmZmlfcHJlcF9hcmdzLiByMyA9IGV4dGVuZGVkIGNpZiwgcjQgPSBzdGFjayBwdHIgY29weS4gICovCiAJbXIJcjQscjEKIAlsaQlyOSwwCiAKIAltdGN0cglyMTIgLyogcjEyIGhvbGRzIGFkZHJlc3Mgb2YgX2ZmaV9wcmVwX2FyZ3MuICAqLwogCWJjdHJsCi0JbHd6ICAgICByMiwyMChyMSkKIAorI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lOKQorCS8qIFRoZSBUT0Mgc2xvdCBpcyByZXNlcnZlZCBpbiB0aGUgRGFyd2luIEFCSSBhbmQgcjIgaXMgdm9sYXRpbGUuICAqLworCWxnICAgICByMiwoNSAqIEdQUl9CWVRFUykocjEpCisjZW5kaWYKIAkvKiBOb3cgZG8gdGhlIGNhbGwuCiAJICAgU2V0IHVwIGNyMSB3aXRoIGJpdHMgNC03IG9mIHRoZSBmbGFncy4gICovCiAJbXRjcmYJMHg0MCxyMzEKQEAgLTkyLDcxICsxMzYsMTMwIEBACiAJbXRjdHIJcjI5CiAJLyogTG9hZCBhbGwgdGhvc2UgYXJndW1lbnQgcmVnaXN0ZXJzLgogCSAgIFdlIGhhdmUgc2V0IHVwIGEgbmljZSBzdGFjayBmcmFtZSwganVzdCBsb2FkIGl0IGludG8gcmVnaXN0ZXJzLiAgKi8KLQlsd3ogICAgIHIzLDIwKygxKjQpKHIxKQotCWx3eiAgICAgcjQsMjArKDIqNCkocjEpCi0JbHd6ICAgICByNSwyMCsoMyo0KShyMSkKLQlsd3ogICAgIHI2LDIwKyg0KjQpKHIxKQorCWxnICAgICByMywgKExJTktBR0VfU0laRSAgICAgICAgICAgICAgICApKHIxKQorCWxnICAgICByNCwgKExJTktBR0VfU0laRSArICAgICBHUFJfQllURVMpKHIxKQorCWxnICAgICByNSwgKExJTktBR0VfU0laRSArIDIgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByNiwgKExJTktBR0VfU0laRSArIDMgKiBHUFJfQllURVMpKHIxKQogCW5vcAotCWx3eiAgICAgcjcsMjArKDUqNCkocjEpCi0JbHd6ICAgICByOCwyMCsoNio0KShyMSkKLQlsd3ogICAgIHI5LDIwKyg3KjQpKHIxKQotCWx3eiAgICAgcjEwLDIwKyg4KjQpKHIxKQorCWxnICAgICByNywgKExJTktBR0VfU0laRSArIDQgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByOCwgKExJTktBR0VfU0laRSArIDUgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByOSwgKExJTktBR0VfU0laRSArIDYgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByMTAsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpKHIxKQogCiBMMToKLQkvKiBMb2FkIGFsbCB0aGUgRlAgcmVnaXN0ZXJzLiAgKi8KKwkvKiAuLi4gTG9hZCBhbGwgdGhlIEZQIHJlZ2lzdGVycy4gICovCiAJYmYJNixMMgkvKiBObyBmbG9hdHMgdG8gbG9hZC4gICovCi0JbGZkCWYxLC0xNi0oMTMqOCkocjI4KQotCWxmZAlmMiwtMTYtKDEyKjgpKHIyOCkKLQlsZmQJZjMsLTE2LSgxMSo4KShyMjgpCi0JbGZkCWY0LC0xNi0oMTAqOCkocjI4KQorCWxmZAlmMSwgLVNBVkVfUkVHU19TSVpFLSgxMypGUFJfU0laRSkocjI4KQorCWxmZAlmMiwgLVNBVkVfUkVHU19TSVpFLSgxMipGUFJfU0laRSkocjI4KQorCWxmZAlmMywgLVNBVkVfUkVHU19TSVpFLSgxMSpGUFJfU0laRSkocjI4KQorCWxmZAlmNCwgLVNBVkVfUkVHU19TSVpFLSgxMCpGUFJfU0laRSkocjI4KQogCW5vcAotCWxmZAlmNSwtMTYtKDkqOCkocjI4KQotCWxmZAlmNiwtMTYtKDgqOCkocjI4KQotCWxmZAlmNywtMTYtKDcqOCkocjI4KQotCWxmZAlmOCwtMTYtKDYqOCkocjI4KQorCWxmZAlmNSwgLVNBVkVfUkVHU19TSVpFLSggOSpGUFJfU0laRSkocjI4KQorCWxmZAlmNiwgLVNBVkVfUkVHU19TSVpFLSggOCpGUFJfU0laRSkocjI4KQorCWxmZAlmNywgLVNBVkVfUkVHU19TSVpFLSggNypGUFJfU0laRSkocjI4KQorCWxmZAlmOCwgLVNBVkVfUkVHU19TSVpFLSggNipGUFJfU0laRSkocjI4KQogCW5vcAotCWxmZCAgICAgZjksLTE2LSg1KjgpKHIyOCkKLQlsZmQgICAgIGYxMCwtMTYtKDQqOCkocjI4KQotCWxmZCAgICAgZjExLC0xNi0oMyo4KShyMjgpCi0JbGZkICAgICBmMTIsLTE2LSgyKjgpKHIyOCkKKwlsZmQgICAgIGY5LCAtU0FWRV9SRUdTX1NJWkUtKCA1KkZQUl9TSVpFKShyMjgpCisJbGZkICAgICBmMTAsLVNBVkVfUkVHU19TSVpFLSggNCpGUFJfU0laRSkocjI4KQorCWxmZCAgICAgZjExLC1TQVZFX1JFR1NfU0laRS0oIDMqRlBSX1NJWkUpKHIyOCkKKwlsZmQgICAgIGYxMiwtU0FWRV9SRUdTX1NJWkUtKCAyKkZQUl9TSVpFKShyMjgpCiAJbm9wCi0JbGZkICAgICBmMTMsLTE2LSgxKjgpKHIyOCkKKwlsZmQgICAgIGYxMywtU0FWRV9SRUdTX1NJWkUtKCAxKkZQUl9TSVpFKShyMjgpCiAKIEwyOgogCW1yCXIxMixyMjkJLyogUHV0IHRoZSB0YXJnZXQgYWRkcmVzcyBpbiByMTIgYXMgc3BlY2lmaWVkLiAgKi8KIAltdGN0ciAgCXIxMgogCW5vcAogCW5vcAorCiAJLyogTWFrZSB0aGUgY2FsbC4gICovCiAJYmN0cmwKIAogCS8qIE5vdywgZGVhbCB3aXRoIHRoZSByZXR1cm4gdmFsdWUuICAqLwotCW10Y3JmCTB4MDEscjMxCiAKLQlidAkzMCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQotCWJ0CTI5LEwoZnBfcmV0dXJuX3ZhbHVlKQotCXN0dwlyMywwKHIzMCkKLQliZgkyOCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQotCXN0dwlyNCw0KHIzMCkKKwkvKiBtNjQgc3RydWN0dXJlIHJldHVybnMgY2FuIG9jY3VweSB0aGUgc2FtZSBzZXQgb2YgcmVnaXN0ZXJzIGFzCisJICAgd291bGQgYmUgdXNlZCB0byBwYXNzIHN1Y2ggYSBzdHJ1Y3R1cmUgYXMgYXJnMCAtIHNvIHRha2UgY2FyZSAKKwkgICBub3QgdG8gc3RlcCBvbiBhbnkgcG9zc2libHkgaG90IHJlZ3MuICAqLwogCi0JLyogRmFsbCB0aHJvdWdoLiAgKi8KKwkvKiBHZXQgdGhlIGZsYWdzLi4gKi8KKwltdGNyZgkweDAzLHIzMSA7IHdlIG5lZWQgYzYgJiBjcjcgbm93LgorCTsgRkxBR19SRVRVUk5TX05PVEhJTkcgYWxzbyBjb3ZlcnMgc3RydWN0IHJldC1ieS1yZWYuCisJYnQJMzAsTChkb25lX3JldHVybl92YWx1ZSkJICA7IEZMQUdfUkVUVVJOU19OT1RISU5HCisJYmYJMjcsTChzY2FsYXJfcmV0dXJuX3ZhbHVlKSA7IG5vdCBGTEFHX1JFVFVSTlNfU1RSVUNUCisJCisJLyogT0ssIHNvIHdlIGhhdmUgYSBzdHJ1Y3QuICAqLworI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWJ0CTMxLEwobWF5YmVfcmV0dXJuXzEyOCkgOyBGTEFHX1JFVFVSTlNfMTI4QklUUywgc3BlY2lhbCBjYXNlIAogCi1MKGRvbmVfcmV0dXJuX3ZhbHVlKToKLQkvKiBSZXN0b3JlIHRoZSByZWdpc3RlcnMgd2UgdXNlZCBhbmQgcmV0dXJuLiAgKi8KLQlsd3oJcjksOChyMjgpCi0JbHd6CXIzMSwtNChyMjgpCi0JbXRscglyOQotCWx3eglyMzAsLTgocjI4KQotCWx3eglyMjksLTEyKHIyOCkKLQlsd3oJcjI4LC0xNihyMjgpCi0JbHd6CXIxLDAocjEpCi0JYmxyCisJLyogT0ssIHdlIGhhdmUgdG8gbWFwIHRoZSByZXR1cm4gYmFjayB0byBhIG1lbSBzdHJ1Y3QuCisJICAgV2UgYXJlIGFib3V0IHRvIHRyYW1wbGUgdGhlIHBhcmVudHMgcGFyYW0gYXJlYSwgc28gcmVjb3ZlciB0aGUKKwkgICByZXR1cm4gdHlwZS4gIHIyOSBpcyBmcmVlLCBzaW5jZSB0aGUgY2FsbCBpcyBkb25lLiAgKi8KKwlsZwlyMjksKExJTktBR0VfU0laRSArIDYgKiBHUFJfQllURVMpKHIyOCkKKworCXNnCXIzLCAoTElOS0FHRV9TSVpFICAgICAgICAgICAgICAgICkocjI4KQorCXNnCXI0LCAoTElOS0FHRV9TSVpFICsgICAgIEdQUl9CWVRFUykocjI4KQorCXNnCXI1LCAoTElOS0FHRV9TSVpFICsgMiAqIEdQUl9CWVRFUykocjI4KQorCXNnCXI2LCAoTElOS0FHRV9TSVpFICsgMyAqIEdQUl9CWVRFUykocjI4KQorCW5vcAorCXNnCXI3LCAoTElOS0FHRV9TSVpFICsgNCAqIEdQUl9CWVRFUykocjI4KQorCXNnCXI4LCAoTElOS0FHRV9TSVpFICsgNSAqIEdQUl9CWVRFUykocjI4KQorCXNnCXI5LCAoTElOS0FHRV9TSVpFICsgNiAqIEdQUl9CWVRFUykocjI4KQorCXNnCXIxMCwoTElOS0FHRV9TSVpFICsgNyAqIEdQUl9CWVRFUykocjI4KQorCS8qIE9LLCBzbyBkbyB0aGUgYmxvY2sgbW92ZSAtIHdlIHRydXN0IHRoYXQgbWVtY3B5IHdpbGwgbm90IHRyYW1wbGUKKwkgICB0aGUgZnBycy4uLiAgKi8KKwltciAJcjMscjMwIDsgZGVzdAorCWFkZGkJcjQscjI4LExJTktBR0VfU0laRSA7IHNvdXJjZQorCS8qIFRoZSBzaXplIGlzIGEgc2l6ZV90LCBzaG91bGQgYmUgbG9uZy4gICovCisJbGcJcjUsMChyMjkpCisJLyogRmlndXJlIG91dCBzbWFsbCBzdHJ1Y3RzICovCisJY21waQkwLHI1LDQKKwliZ3QJTDMJOyAxLCAyIGFuZCA0IGJ5dGVzIGhhdmUgc3BlY2lhbCBydWxlcy4KKwljbXBpCTAscjUsMworCWJlcQlMMwk7IG5vdCAzCisJYWRkaQlyNCxyNCw4CisJc3ViZglyNCxyNSxyNAorTDM6CisJYmwJX21lbWNweQorCQorCS8qIC4uLiBkbyB3ZSBuZWVkIHRoZSBGUCByZWdpc3RlcnM/IC0gcmVjb3ZlciB0aGUgZmxhZ3MuLiAqLworCW10Y3JmCTB4MDMscjMxIDsgd2UgbmVlZCBjNiAmIGNyNyBub3cuCisJYmYJMjksTChkb25lX3JldHVybl92YWx1ZSkJLyogTm8gZmxvYXRzIGluIHRoZSBzdHJ1Y3QuICAqLworCXN0ZmQJZjEsIC1TQVZFX1JFR1NfU0laRS0oMTMqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYyLCAtU0FWRV9SRUdTX1NJWkUtKDEyKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMywgLVNBVkVfUkVHU19TSVpFLSgxMSpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjQsIC1TQVZFX1JFR1NfU0laRS0oMTAqRlBSX1NJWkUpKHIyOCkKKwlub3AKKwlzdGZkCWY1LCAtU0FWRV9SRUdTX1NJWkUtKCA5KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmNiwgLVNBVkVfUkVHU19TSVpFLSggOCpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjcsIC1TQVZFX1JFR1NfU0laRS0oIDcqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY4LCAtU0FWRV9SRUdTX1NJWkUtKCA2KkZQUl9TSVpFKShyMjgpCisJbm9wCisJc3RmZAlmOSwgLVNBVkVfUkVHU19TSVpFLSggNSpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjEwLC1TQVZFX1JFR1NfU0laRS0oIDQqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYxMSwtU0FWRV9SRUdTX1NJWkUtKCAzKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMTIsLVNBVkVfUkVHU19TSVpFLSggMipGUFJfU0laRSkocjI4KQorCW5vcAorCXN0ZmQJZjEzLC1TQVZFX1JFR1NfU0laRS0oIDEqRlBSX1NJWkUpKHIyOCkKKworCW1yCXIzLHIyOQk7IGZmaV90eXBlICoKKwltcglyNCxyMzAJOyBkZXN0CisJYWRkaQlyNSxyMjgsLVNBVkVfUkVHU19TSVpFLSgxMypGUFJfU0laRSkgOyBmcHJzCisJeG9yCXI2LHI2LHI2CisJc2cJcjYsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpKHIyOCkKKwlhZGRpCXI2LHIyOCwoTElOS0FHRV9TSVpFICsgNyAqIEdQUl9CWVRFUykgOyBwb2ludCB0byBhIHplcm9lZCBjb3VudGVyLgorCWJsIAlfZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0KKworCWIgTChkb25lX3JldHVybl92YWx1ZSkKKyNlbHNlCisJc3R3CXIzLDAocjMwKSA7IG0zMiB0aGUgb25seSBzdHJ1Y3QgcmV0dXJuIGluIHJlZyBpcyA0IGJ5dGVzLgorI2VuZGlmCisJYiBMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCiBMKGZwX3JldHVybl92YWx1ZSk6CiAJLyogRG8gd2UgaGF2ZSBsb25nIGRvdWJsZSB0byBzdG9yZT8gICovCi0JYmYJMzEsTChmZF9yZXR1cm5fdmFsdWUpCisJYmYJMzEsTChmZF9yZXR1cm5fdmFsdWUpIDsgRkxBR19SRVRVUk5TXzEyOEJJVFMKIAlzdGZkCWYxLDAocjMwKQotCXN0ZmQJZjIsOChyMzApCisJc3RmZAlmMixGUFJfU0laRShyMzApCiAJYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCiBMKGZkX3JldHVybl92YWx1ZSk6CkBAIC0xNzAsMjEgKzI3Myw1NyBAQAogCXN0ZnMJZjEsMChyMzApCiAJYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCitMKHNjYWxhcl9yZXR1cm5fdmFsdWUpOgorCWJ0CTI5LEwoZnBfcmV0dXJuX3ZhbHVlKQk7IEZMQUdfUkVUVVJOU19GUAorCTsgZmZpX2FyZyBpcyBkZWZpbmVkIGFzIHVuc2lnbmVkIGxvbmcuIAorCXNnCXIzLDAocjMwKQkJOyBTYXZlIHRoZSByZWcuCisJYmYJMjgsTChkb25lX3JldHVybl92YWx1ZSkgOyBub3QgRkxBR19SRVRVUk5TXzY0QklUUyAKKworI2lmIGRlZmluZWQoX19wcGM2NF9fKQorTChtYXliZV9yZXR1cm5fMTI4KToKKwlzdGQJcjMsMChyMzApCisJYmYJMzEsTChkb25lX3JldHVybl92YWx1ZSkgOyBub3QgRkxBR19SRVRVUk5TXzEyOEJJVFMgCisJc3RkCXI0LDgocjMwKQorI2Vsc2UKKwlzdHcJcjQsNChyMzApCisjZW5kaWYKKworCS8qIEZhbGwgdGhyb3VnaC4gICovCisJLyogV2Ugd2FudCB0aGlzIGF0IHRoZSBlbmQgdG8gc2ltcGxpZnkgZWggZXBpbG9nIGNvbXB1dGF0aW9uLiAgKi8KKworTChkb25lX3JldHVybl92YWx1ZSk6CisJLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHdlIHVzZWQgYW5kIHJldHVybi4gICovCisJbGcJcjI5LFNBVkVEX0xSX09GRlNFVChyMjgpCisJOyBlcGlsb2cKKwlsZwlyMzEsLSgxICogR1BSX0JZVEVTKShyMjgpCisJbXRscglyMjkKKwlsZwlyMzAsLSgyICogR1BSX0JZVEVTKShyMjgpCisJbGcJcjI5LC0oMyAqIEdQUl9CWVRFUykocjI4KQorCWxnCXIyOCwtKDQgKiBHUFJfQllURVMpKHIyOCkKKwlsZwlyMSwwKHIxKQorCWJscgogTEZFMToKKwkuYWxpZ24JMQogLyogRU5EKF9mZmlfY2FsbF9EQVJXSU4pICAqLwogCiAvKiBQcm92aWRlIGEgbnVsbCBkZWZpbml0aW9uIG9mIF9mZmlfY2FsbF9BSVguICAqLwotLnRleHQKLQkuYWxpZ24gMgotLmdsb2JsIF9mZmlfY2FsbF9BSVgKLS50ZXh0CisJLnRleHQKKwkuZ2xvYmwgX2ZmaV9jYWxsX0FJWAogCS5hbGlnbiAyCiBfZmZpX2NhbGxfQUlYOgogCWJscgogLyogRU5EKF9mZmlfY2FsbF9BSVgpICAqLwogCi0uZGF0YQotLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcworLyogRUggc3R1ZmYuICAqLworCisjZGVmaW5lIEVIX0RBVEFfQUxJR05fRkFDVCBNT0RFX0NIT0lDRSgweDdjLDB4NzgpCisKKwkuc3RhdGljX2RhdGEKKwkuYWxpZ24gTE9HMl9HUFJfQllURVMKK0xMRkIwJG5vbl9sYXp5X3B0cjoKKwkuZ19sb25nIExzdGFydGNvZGUKKworCS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMrbGl2ZV9zdXBwb3J0CiBFSF9mcmFtZTE6CiAJLnNldAlMJHNldCQwLExFQ0lFMS1MU0NJRTEKIAkubG9uZwlMJHNldCQwCTsgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQpAQCAtMTkzLDE2ICszMzIsMTcgQEAKIAkuYnl0ZQkweDEJOyBDSUUgVmVyc2lvbgogCS5hc2NpaQkielJcMCIJOyBDSUUgQXVnbWVudGF0aW9uCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDE7IENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKLQkuYnl0ZQkweDdjCTsgc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgorCS5ieXRlCUVIX0RBVEFfQUxJR05fRkFDVCA7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkweDQxCTsgQ0lFIFJBIENvbHVtbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZQotCS5ieXRlCTB4OTAJOyBGREUgRW5jb2RpbmcgKGluZGlyZWN0IHBjcmVsKQorCS5ieXRlCTB4MTAJOyBGREUgRW5jb2RpbmcgKGluZGlyZWN0IHBjcmVsKQogCS5ieXRlCTB4Ywk7IERXX0NGQV9kZWZfY2ZhCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDEKIAkuYnl0ZQkweDAJOyB1bGViMTI4IDB4MAogCS5hbGlnbglMT0cyX0dQUl9CWVRFUwogTEVDSUUxOgotLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4uZWgKKworCS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOLmVoCiBfZmZpX2NhbGxfREFSV0lOLmVoOgogTFNGREUxOgogCS5zZXQJTCRzZXQkMSxMRUZERTEtTEFTRkRFMQpAQCAtMjEwLDExICszNTAsMTEgQEAKIExBU0ZERTE6CiAJLmxvbmcJTEFTRkRFMS1FSF9mcmFtZTEgOyBGREUgQ0lFIG9mZnNldAogCS5nX2xvbmcJTExGQjAkbm9uX2xhenlfcHRyLS4JOyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS5zZXQJTCRzZXQkMyxMRkUxLUxGQjAKKwkuc2V0CUwkc2V0JDMsTEZFMS1Mc3RhcnRjb2RlCiAJLmdfbG9uZwlMJHNldCQzCTsgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZSAgIDB4MCAgICAgOyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAkuYnl0ZQkweDQJOyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLnNldAlMJHNldCQ0LExDRkkwLUxGQjEKKwkuc2V0CUwkc2V0JDQsTENGSTAtTHN0YXJ0Y29kZQogCS5sb25nCUwkc2V0JDQKIAkuYnl0ZQkweGQJOyBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcgogCS5ieXRlCTB4MDgJOyB1bGViMTI4IDB4MDgKQEAgLTIzOSw3ICszNzksNSBAQAogCS5ieXRlCTB4MWMJOyB1bGViMTI4IDB4MWMKIAkuYWxpZ24gTE9HMl9HUFJfQllURVMKIExFRkRFMToKLS5kYXRhCi0JLmFsaWduIExPRzJfR1BSX0JZVEVTCi1MTEZCMCRub25fbGF6eV9wdHI6Ci0JLmdfbG9uZyBMRkIwCisJLmFsaWduIDEKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCmluZGV4IDc5NTk4MzguLjNmNjc5MGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZGFyd2luX2Nsb3N1cmUuUyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMywgMjAwNCwgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgSW5jLiBiYXNlZCBvbiBwcGNfY2xvc3VyZS5TCisgICBkYXJ3aW5fY2xvc3VyZS5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDEwLCAKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAKKyAgIGJhc2VkIG9uIHBwY19jbG9zdXJlLlMKIAogICAgUG93ZXJQQyBBc3NlbWJseSBnbHVlLgogCkBAIC0zMyw5MSArMzQsMTc3IEBACiAjZGVmaW5lIE1PREVfQ0hPSUNFKHgsIHkpIHgKICNlbmRpZgogCi0jZGVmaW5lIGxndSAgICAgTU9ERV9DSE9JQ0UobHd6dSwgbGR1KQorI2RlZmluZSBtYWNoaW5lX2Nob2ljZQlNT0RFX0NIT0lDRShwcGM3NDAwLHBwYzY0KQogCi0jZGVmaW5lIGdfbG9uZyAgTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkgICAgICAgICAvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKzsgRGVmaW5lIHNvbWUgcHNldWRvLW9wY29kZXMgZm9yIHNpemUtaW5kZXBlbmRlbnQgbG9hZCAmIHN0b3JlIG9mIEdQUnMgLi4uCisjZGVmaW5lIGxndQkJTU9ERV9DSE9JQ0UobHd6dSwgbGR1KQorI2RlZmluZSBsZwkJTU9ERV9DSE9JQ0UobHd6LGxkKQorI2RlZmluZSBzZwkJTU9ERV9DSE9JQ0Uoc3R3LHN0ZCkKKyNkZWZpbmUgc2d1CQlNT0RFX0NIT0lDRShzdHd1LHN0ZHUpCiAKLSNkZWZpbmUgTE9HMl9HUFJfQllURVMgIE1PREVfQ0hPSUNFKDIsMykgICAgICAgIC8qIGxvZzIoR1BSX0JZVEVTKSAqLworOyAuLi4gYW5kIHRoZSBzaXplIG9mIEdQUnMgYW5kIHRoZWlyIHN0b3JhZ2UgaW5kaWNhdG9yLgorI2RlZmluZSBHUFJfQllURVMJTU9ERV9DSE9JQ0UoNCw4KQorI2RlZmluZSBMT0cyX0dQUl9CWVRFUwlNT0RFX0NIT0lDRSgyLDMpCS8qIGxvZzIoR1BSX0JZVEVTKSAqLworI2RlZmluZSBnX2xvbmcJCU1PREVfQ0hPSUNFKGxvbmcsIHF1YWQpCS8qIHVzYWdlIGlzICIuZ19sb25nIiAqLworCis7IEZyb20gdGhlIEFCSSBkb2M6ICJNYWMgT1MgWCBBQkkgRnVuY3Rpb24gQ2FsbCBHdWlkZSIgVmVyc2lvbiAyMDA5LTAyLTA0LgorI2RlZmluZSBMSU5LQUdFX1NJWkUJTU9ERV9DSE9JQ0UoMjQsNDgpCisjZGVmaW5lIFBBUkFNX0FSRUEJTU9ERV9DSE9JQ0UoMzIsNjQpCisKKyNkZWZpbmUgU0FWRURfQ1JfT0ZGU0VUCU1PREVfQ0hPSUNFKDQsOCkJLyogc2F2ZSBwb3NpdGlvbiBmb3IgQ1IgKi8KKyNkZWZpbmUgU0FWRURfTFJfT0ZGU0VUCU1PREVfQ0hPSUNFKDgsMTYpCS8qIHNhdmUgcG9zaXRpb24gZm9yIGxyICovCisKKy8qIFdBUk5JTkc6IGlmIGZmaV90eXBlIGlzIGNoYW5nZWQuLi4gaGVyZSBiZSBtb25zdGVycy4gIAorICAgT2Zmc2V0cyBvZiBpdGVtcyB3aXRoaW4gdGhlIHJlc3VsdCB0eXBlLiAgKi8KKyNkZWZpbmUgRkZJX1RZUEVfVFlQRQlNT0RFX0NIT0lDRSg2LDEwKQorI2RlZmluZSBGRklfVFlQRV9FTEVNCU1PREVfQ0hPSUNFKDgsMTYpCisKKyNkZWZpbmUgU0FWRURfRlBSX0NPVU5UIDEzCisjZGVmaW5lIEZQUl9TSVpFCTgKKy8qIGJpZ2dlc3QgbTY0IHN0cnVjdCByZXQgaXMgOEdQUlMgKyAxM0ZQUlMgPSAxNjggYnl0ZXMgLSByb3VuZGVkIHRvIDE2Ynl0ZXMgPSAxNzYuICovCisjZGVmaW5lIFJFU1VMVF9CWVRFUwlNT0RFX0NIT0lDRSgxNiwxNzYpCisKKzsgVGhlIHdob2xlIHN0YWNrIGZyYW1lICoqTVVTVCoqIGJlIDE2Ynl0ZS1hbGlnbmVkLgorI2RlZmluZSBTQVZFX1NJWkUgKCgoTElOS0FHRV9TSVpFK1BBUkFNX0FSRUErU0FWRURfRlBSX0NPVU5UKkZQUl9TSVpFK1JFU1VMVF9CWVRFUykrMTUpICYgLTE2TEwpCisjZGVmaW5lIFBBRF9TSVpFIChTQVZFX1NJWkUtKExJTktBR0VfU0laRStQQVJBTV9BUkVBK1NBVkVEX0ZQUl9DT1VOVCpGUFJfU0laRStSRVNVTFRfQllURVMpKQorCisjZGVmaW5lIFBBUkVOVF9QQVJNX0JBU0UgKFNBVkVfU0laRStMSU5LQUdFX1NJWkUpCisjZGVmaW5lIEZQX1NBVkVfQkFTRSAoTElOS0FHRV9TSVpFK1BBUkFNX0FSRUEpCisKKyNpZiBkZWZpbmVkKF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXykgJiYgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fID49IDEwNTAKKzsgV2Ugbm8gbG9uZ2VyIG5lZWQgdGhlIHBpYyBzeW1ib2wgc3R1YiBmb3IgRGFyd2luID49IDkuCisjZGVmaW5lIEJMQ0xTX0hFTFAgX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KKyNkZWZpbmUgU1RSVUNUX1JFVFZBTFVFX1AgX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcAorI2RlZmluZSBQQVNTX1NUUl9GTE9BVFMgX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cworI3VuZGVmIFdBTlRfU1RVQgorI2Vsc2UKKyNkZWZpbmUgQkxDTFNfSEVMUCBMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YgorI2RlZmluZSBTVFJVQ1RfUkVUVkFMVUVfUCBMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRzdHViCisjZGVmaW5lIFBBU1NfU1RSX0ZMT0FUUyBMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRzdHViCisjZGVmaW5lIFdBTlRfU1RVQgorI2VuZGlmCisKKy8qIG0zMi9tNjQKKworICAgVGhlIHN0YWNrIGxheW91dCBsb29rcyBsaWtlIHRoaXM6CisKKyAgIHwgICBBZGRpdGlvbmFsIHBhcmFtcy4uLgkJCXwgfCAgICAgSGlnaGVyIGFkZHJlc3MKKyAgIH4JCQkJCQl+IH4KKyAgIHwgICBQYXJhbWV0ZXJzICAgICAgKGF0IGxlYXN0IDgqNC84PTMyLzY0KQl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlYHMgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLyBQYXJlbnRgcyBmcmFtZS4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgPCsgPDw8IG9uIGVudHJ5IHRvCisgICB8ICAgUmVzdWx0IEJ5dGVzCQkgICAgICAgMTYvMTc2CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB+ICAgcGFkZGluZyB0byAxNi1ieXRlIGFsaWdubWVudAkJfiB+CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgc2xvdHMJCXwgfAorICAgfCAgIGhlcmUgZnAxMyAuLiBmcDEJCSAgICAgICAxMyo4CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUjMuLlIxMAkJCSAgOCo0Lzg9MzIvNjQJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CXN0YWNrCXwKKyAgIHwgICBSZXNlcnZlZCBbY29tcGlsZXIsYmluZGVyXSAgICAgMio0LzgJfCB8CWdyb3dzCXwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlkb3duCVYKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlcyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWxvd2VyIGFkZHJlc3NlcworICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfCAgICAgc3RhY2sgcG9pbnRlciBoZXJlCisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vCWR1cmluZworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgIDw8PAljYWxsLgorCisqLwogCiAJLmZpbGUJImRhcndpbl9jbG9zdXJlLlMiCi0udGV4dAotCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwotLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00KIAotLnRleHQKKwkubWFjaGluZSBtYWNoaW5lX2Nob2ljZQorCisJLnRleHQKKwkuZ2xvYmwgX2ZmaV9jbG9zdXJlX0FTTQogCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwogX2ZmaV9jbG9zdXJlX0FTTToKIExGQjE6Ci0JbWZscglyMAkJLyogZXh0cmFjdCByZXR1cm4gYWRkcmVzcyAgKi8KLQlzdHcJcjAsOChyMSkJLyogc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgICovCitMc3RhcnRjb2RlOgorCW1mbHIJcjAJCQkvKiBleHRyYWN0IHJldHVybiBhZGRyZXNzICAqLworCXNnCXIwLFNBVkVEX0xSX09GRlNFVChyMSkJLyogc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgICovCiBMQ0ZJMDoKLQkvKiAyNCBCeXRlcyAoTGlua2FnZSBBcmVhKQotCSAgIDMyIEJ5dGVzIChvdXRnb2luZyBwYXJhbWV0ZXIgYXJlYSwgYWx3YXlzIHJlc2VydmVkKQotCSAgIDEwNCBCeXRlcyAoMTMqOCBmcm9tIEZQUikKLQkgICAxNiBCeXRlcyAocmVzdWx0KQotCSAgIDE3NiBCeXRlcyAgKi8KLQotCXN0d3UJcjEsLTE3NihyMSkJLyogc2tpcCBvdmVyIGNhbGxlciBzYXZlIGFyZWEKLQkJCQlrZWVwIHN0YWNrIGFsaWduZWQgdG8gMTYuICAqLworCXNndQlyMSwtU0FWRV9TSVpFKHIxKQkvKiBza2lwIG92ZXIgY2FsbGVyIHNhdmUgYXJlYQorCQkJCQlrZWVwIHN0YWNrIGFsaWduZWQgdG8gMTYuICAqLwogTENGSTE6CiAJLyogV2Ugd2FudCB0byBidWlsZCB1cCBhbiBhcmVhIGZvciB0aGUgcGFyYW1ldGVycyBwYXNzZWQKIAkgICBpbiByZWdpc3RlcnMuIChib3RoIGZsb2F0aW5nIHBvaW50IGFuZCBpbnRlZ2VyKSAgKi8KIAotCS8qIFdlIHN0b3JlIGdwciAzIHRvIGdwciAxMCAoYWxpZ25lZCB0byA0KQotCSAgIGluIHRoZSBwYXJlbnRzIG91dGdvaW5nIGFyZWEuICAqLwotCXN0dyAgIHIzLDIwMChyMSkKLQlzdHcgICByNCwyMDQocjEpCi0Jc3R3ICAgcjUsMjA4KHIxKQotCXN0dyAgIHI2LDIxMihyMSkKLQlzdHcgICByNywyMTYocjEpCi0Jc3R3ICAgcjgsMjIwKHIxKQotCXN0dyAgIHI5LDIyNChyMSkKLQlzdHcgICByMTAsMjI4KHIxKQorCS8qIFB1dCBncHIgMyB0byBncHIgMTAgaW4gdGhlIHBhcmVudHMgb3V0Z29pbmcgYXJlYS4uLgorCSAgIC4uLiB0aGUgcmVtYWluZGVyIG9mIGFueSBwYXJhbXMgdGhhdCBvdmVyZmxvd2VkIHRoZSByZWdzIHdpbGwKKwkgICBmb2xsb3cgaGVyZS4gICovCisJc2cJcjMsIChQQVJFTlRfUEFSTV9CQVNFICAgICAgICAgICAgICAgICkocjEpCisJc2cJcjQsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICAgICkocjEpCisJc2cJcjUsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogMikocjEpCisJc2cJcjYsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogMykocjEpCisJc2cJcjcsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNCkocjEpCisJc2cJcjgsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNSkocjEpCisJc2cJcjksIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNikocjEpCisJc2cJcjEwLChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNykocjEpCiAKLQkvKiBXZSBzYXZlIGZwciAxIHRvIGZwciAxMy4gKGFsaWduZWQgdG8gOCkgICovCi0Jc3RmZCAgZjEsNTYocjEpCi0Jc3RmZCAgZjIsNjQocjEpCi0Jc3RmZCAgZjMsNzIocjEpCi0Jc3RmZCAgZjQsODAocjEpCi0Jc3RmZCAgZjUsODgocjEpCi0Jc3RmZCAgZjYsOTYocjEpCi0Jc3RmZCAgZjcsMTA0KHIxKQotCXN0ZmQgIGY4LDExMihyMSkKLQlzdGZkICBmOSwxMjAocjEpCi0Jc3RmZCAgZjEwLDEyOChyMSkKLQlzdGZkICBmMTEsMTM2KHIxKQotCXN0ZmQgIGYxMiwxNDQocjEpCi0Jc3RmZCAgZjEzLDE1MihyMSkKKwkvKiBXZSBzYXZlIGZwciAxIHRvIGZwciAxNCBpbiBvdXIgb3duIHNhdmUgZnJhbWUuICAqLworCXN0ZmQJZjEsIChGUF9TQVZFX0JBU0UgICAgICAgICAgICAgICAgICkocjEpCisJc3RmZAlmMiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAgICAgKShyMSkKKwlzdGZkCWYzLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMiApKHIxKQorCXN0ZmQJZjQsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAzICkocjEpCisJc3RmZAlmNSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDQgKShyMSkKKwlzdGZkCWY2LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNSApKHIxKQorCXN0ZmQJZjcsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA2ICkocjEpCisJc3RmZAlmOCwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDcgKShyMSkKKwlzdGZkCWY5LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOCApKHIxKQorCXN0ZmQJZjEwLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA5ICkocjEpCisJc3RmZAlmMTEsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDEwKShyMSkKKwlzdGZkCWYxMiwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTEpKHIxKQorCXN0ZmQJZjEzLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMikocjEpCiAKIAkvKiBTZXQgdXAgcmVnaXN0ZXJzIGZvciB0aGUgcm91dGluZSB0aGF0IGFjdHVhbGx5IGRvZXMgdGhlIHdvcmsKIAkgICBnZXQgdGhlIGNvbnRleHQgcG9pbnRlciBmcm9tIHRoZSB0cmFtcG9saW5lLiAgKi8KLQltciByMyxyMTEKKwltcglyMyxyMTEKIAogCS8qIE5vdyBsb2FkIHVwIHRoZSBwb2ludGVyIHRvIHRoZSByZXN1bHQgc3RvcmFnZS4gICovCi0JYWRkaSByNCxyMSwxNjAKKwlhZGRpCXI0LHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKQogCiAJLyogTm93IGxvYWQgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIHNhdmVkIGdwciByZWdpc3RlcnMuICAqLwotCWFkZGkgcjUscjEsMjAwCisJYWRkaQlyNSxyMSxQQVJFTlRfUEFSTV9CQVNFCiAKIAkvKiBOb3cgbG9hZCB1cCB0aGUgcG9pbnRlciB0byB0aGUgc2F2ZWQgZnByIHJlZ2lzdGVycy4gICovCi0JYWRkaSByNixyMSw1NgorCWFkZGkJcjYscjEsRlBfU0FWRV9CQVNFCiAKIAkvKiBNYWtlIHRoZSBjYWxsLiAgKi8KLQlibAlMZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViCisJYmwJQkxDTFNfSEVMUAogCi0JLyogTm93IHIzIGNvbnRhaW5zIHRoZSByZXR1cm4gdHlwZQotCSAgIHNvIHVzZSBpdCB0byBsb29rIHVwIGluIGEgdGFibGUKKwkvKiByMyBjb250YWlucyB0aGUgcnR5cGUgcG9pbnRlci4uLiBzYXZlIGl0IHNpbmNlIHdlIHdpbGwgbmVlZAorCSAgIGl0IGxhdGVyLiAgKi8KKwlzZwlyMyxMSU5LQUdFX1NJWkUocjEpCTsgZmZpX3R5cGUgKiByZXN1bHRfdHlwZQorCWxnCXIwLDAocjMpCQk7IHNpemUgPT4gcjAKKwlsaHoJcjMsRkZJX1RZUEVfVFlQRShyMykJOyB0eXBlID0+IHIzCisKKwkvKiBUaGUgaGVscGVyIHdpbGwgaGF2ZSBpbnRlcmNlcHRlZCBzdHJ1dHVyZSByZXR1cm5zIGFuZCBpbnNlcnRlZAorCSAgIHRoZSBjYWxsZXJgcyBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBzdHJ1Y3RzIHJldHVybmVkIGJ5IHJlZi4gICovCisKKwkvKiByMyBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUgIHNvIHVzZSBpdCB0byBsb29rIHVwIGluIGEgdGFibGUKIAkgICBzbyB3ZSBrbm93IGhvdyB0byBkZWFsIHdpdGggZWFjaCB0eXBlLiAgKi8KIAotCS8qIExvb2sgdXAgdGhlIHByb3BlciBzdGFydGluZyBwb2ludCBpbiB0YWJsZQotCSAgIGJ5IHVzaW5nIHJldHVybiB0eXBlIGFzIG9mZnNldC4gICovCi0JYWRkaSAgcjUscjEsMTYwCQkgIC8qIEdldCBwb2ludGVyIHRvIHJlc3VsdHMgYXJlYS4gICovCi0JYmwgICAgTGdldF9yZXRfdHlwZTBfYWRkciAvKiBHZXQgcG9pbnRlciB0byBMcmV0X3R5cGUwIGludG8gTFIuICAqLwotCW1mbHIgIHI0CQkgIC8qIE1vdmUgdG8gcjQuICAqLwotCXNsd2kgIHIzLHIzLDQJCSAgLyogTm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2LiAgKi8KLQlhZGQgICByMyxyMyxyNAkJICAvKiBBZGQgY29udGVudHMgb2YgdGFibGUgdG8gdGFibGUgYWRkcmVzcy4gICovCi0JbXRjdHIgcjMKLQliY3RyCQkJICAvKiBKdW1wIHRvIGl0LiAgKi8KKwlhZGRpCXI1LHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKSAvKiBPdGhlcndpc2UsIG91ciByZXR1cm4gaXMgaGVyZS4gICovCisJYmwJTGdldF9yZXRfdHlwZTBfYWRkcgkvKiBHZXQgcG9pbnRlciB0byBMcmV0X3R5cGUwIGludG8gTFIuICAqLworCW1mbHIJcjQJCQkvKiBNb3ZlIHRvIHI0LiAgKi8KKwlzbHdpCXIzLHIzLDQJCQkvKiBOb3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgMTYuICAqLworCWFkZAlyMyxyMyxyNAkJLyogQWRkIGNvbnRlbnRzIG9mIHRhYmxlIHRvIHRhYmxlIGFkZHJlc3MuICAqLworCW10Y3RyCXIzCisJYmN0cgkJCSAJIC8qIEp1bXAgdG8gaXQuICAqLwogTEZFMToKIC8qIEVhY2ggb2YgdGhlIHJldF90eXBlWCBjb2RlIGZyYWdtZW50cyBoYXMgdG8gYmUgZXhhY3RseSAxNiBieXRlcyBsb25nCiAgICAoNCBpbnN0cnVjdGlvbnMpLiBGb3IgY2FjaGUgZWZmZWN0aXZlbmVzcyB3ZSBhbGlnbiB0byBhIDE2IGJ5dGUgYm91bmRhcnkKQEAgLTE0MCw3ICsyMjcsNyBAQAogCiAvKiBjYXNlIEZGSV9UWVBFX0lOVCAgKi8KIExyZXRfdHlwZTE6Ci0JbHd6CXIzLDAocjUpCisJbGcJcjMsMChyNSkKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKQEAgLTE2OCw4NSArMjU1LDIyNCBAQAogCiAvKiBjYXNlIEZGSV9UWVBFX1VJTlQ4ICAqLwogTHJldF90eXBlNToKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsYnoJcjMsNyhyNSkKKyNlbHNlCiAJbGJ6CXIzLDMocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UOCAgKi8KIExyZXRfdHlwZTY6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGJ6CXIzLDcocjUpCisjZWxzZQogCWxieglyMywzKHI1KQorI2VuZGlmCiAJZXh0c2IJcjMscjMKIAliCUxmaW5pc2gKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UMTYgICovCiBMcmV0X3R5cGU3OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxoeglyMyw2KHI1KQorI2Vsc2UKIAlsaHoJcjMsMihyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NJTlQxNiAgKi8KIExyZXRfdHlwZTg6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGhhCXIzLDYocjUpCisjZWxzZQogCWxoYQlyMywyKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDMyICAqLwogTHJldF90eXBlOToKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsd3oJcjMsNChyNSkKKyNlbHNlCiAJbHd6CXIzLDAocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UMzIgICovCiBMcmV0X3R5cGUxMDoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsd3oJcjMsNChyNSkKKyNlbHNlCiAJbHd6CXIzLDAocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UNjQgICovCiBMcmV0X3R5cGUxMToKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsZwlyMywwKHI1KQorCWIJTGZpbmlzaAorCW5vcAorI2Vsc2UKIAlsd3oJcjMsMChyNSkKIAlsd3oJcjQsNChyNSkKIAliCUxmaW5pc2gKKyNlbmRpZgogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NJTlQ2NCAgKi8KIExyZXRfdHlwZTEyOgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxnCXIzLDAocjUpCisJYglMZmluaXNoCisJbm9wCisjZWxzZQogCWx3eglyMywwKHI1KQogCWx3eglyNCw0KHI1KQogCWIJTGZpbmlzaAorI2VuZGlmCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU1RSVUNUICAqLwogTHJldF90eXBlMTM6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGcJcjMsMChyNSkJCTsgd2UgbmVlZCBhdCBsZWFzdCB0aGlzLi4uCisJY21waQkwLHIwLDQKKwliZ3QJTHN0cnVjdGVuZAkJOyBub3QgYSBzcGVjaWFsIHNtYWxsIGNhc2UKKwliCUxzbWFsbHN0cnVjdAkJOyBzZWUgaWYgd2UgbmVlZCBtb3JlLgorI2Vsc2UKKwljbXBpCTAscjAsNAorCWJndAlMZmluaXNoCQk7IG5vdCBieSB2YWx1ZQorCWxnCXIzLDAocjUpCiAJYglMZmluaXNoCi0Jbm9wCisjZW5kaWYKKy8qIGNhc2UgRkZJX1RZUEVfUE9JTlRFUiAgKi8KK0xyZXRfdHlwZTE0OgorCWxnCXIzLDAocjUpCisJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKLS8qIGNhc2UgRkZJX1RZUEVfUE9JTlRFUiAgKi8KLUxyZXRfdHlwZTE0OgotCWx3eglyMywwKHI1KQotCWIJTGZpbmlzaAotCW5vcAotCW5vcAorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorTHNtYWxsc3RydWN0OgorCWJlcQlMZm91cgkJCTsgY29udGludWF0aW9uIG9mIExyZXQxMy4KKwljbXBpCTAscjAsMworCWJlcQlMZmluaXNoCQkJOyBkb25gdCBhZGp1c3QgdGhpcyAtIGNhbmB0IGJlIGFueSBmbG9hdHMgaGVyZS4uLgorCXNyZGkJcjMscjMsNDgKKwljbXBpCTAscjAsMgorCWJlcQlMZmluaXNoCQkJOyAuLiBvciBoZXJlIC4uCisJc3JkaQlyMyxyMyw4CisJYiAJTGZpbmlzaAkJCTsgLi4gb3IgaGVyZS4KKworTGZvdXI6CisJbGcJcjYsTElOS0FHRV9TSVpFKHIxKQk7IGdldCB0aGUgcmVzdWx0IHR5cGUKKwlsZwlyNixGRklfVFlQRV9FTEVNKHI2KQk7IGVsZW1lbnRzIGFycmF5IHBvaW50ZXIKKwlsZwlyNiwwKHI2KQkJOyBmaXJzdCBlbGVtZW50CisJbGh6CXIwLEZGSV9UWVBFX1RZUEUocjYpCTsgT0sgZ28gdGhlIHR5cGUKKwljbXBpCTAscjAsMgkJCTsgRkZJX1RZUEVfRkxPQVQKKwlibmUJTGZvdXJpbnQKKwlsZnMJZjEsMChyNSkJCTsganVzdCBvbmUgZmxvYXQgaW4gdGhlIHN0cnVjdC4KKwliIAlMZmluaXNoCisKK0xmb3VyaW50OgorCXNyZGkJcjMscjMsMzIJCTsgZm91ciBieXRlcy4KKwliIAlMZmluaXNoCisKK0xzdHJ1Y3RlbmQ6CisJbGcJcjMsTElOS0FHRV9TSVpFKHIxKQk7IGdldCB0aGUgcmVzdWx0IHR5cGUKKwlibAlTVFJVQ1RfUkVUVkFMVUVfUAorCWNtcGkJMCxyMywwCisJYmVxCUxmaW5pc2gJCQk7IG5vcGUuCisJLyogUmVjb3ZlciBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdHMuICAqLworCWFkZGkJcjExLHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKQorCWxnCXIzLDAocjExKQkJOyB3ZSBuZWVkIGF0IGxlYXN0IHRoaXMuLi4KKwlsZwlyNCw4KHIxMSkKKwljbXBpCTAscjAsMTYKKwliZXEJTGZpbmlzaAkJOyBzcGVjaWFsIGNhc2UgMTYgYnl0ZXMgd2UgZG9uJ3QgY29uc2lkZXIgZmxvYXRzLgorCisJLyogT0ssIGZydXN0cmF0aW5nbHksIHRoZSBwcm9jZXNzIG9mIHNhdmluZyB0aGUgc3RydWN0IHRvIG1lbSBtaWdodCBoYXZlCisJICAgbWVzc2VkIHdpdGggdGhlIEZQUnMsIHNvIHdlIGhhdmUgdG8gcmUtbG9hZCB0aGVtIDooLgorCSAgIFdlYGxsIHVzZSBvdXIgRlBScyBzcGFjZSBhZ2FpbiAtIGNhbGxpbmc6IAorCSAgIHZvaWQgZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzIChmZmlfdHlwZSAqcywgY2hhciAqc3JjLCAKKwkJCQkJICAgICB1bnNpZ25lZCAqbmZwciwgZG91YmxlICoqZnBycykgCisJICAgV2VgbGwgdGVtcG9yYXJpbHkgcGluY2ggdGhlIGZpcnN0IHR3byBzbG90cyBvZiB0aGUgcGFyYW0gYXJlYSBmb3IgbG9jYWwKKwkgICB2YXJzIHVzZWQgYnkgdGhlIHJvdXRpbmUuICAqLworCXhvcglyNixyNixyNgorCWFkZGkJcjUscjEsUEFSRU5UX1BBUk1fQkFTRQkJOyBzb21lIHNwYWNlCisJc2cJcjYsMChyNSkJCQk7ICpuZnByIHplcm9lZC4KKwlhZGRpCXI2LHI1LDgJCQkJOyAqKmZwcnMKKwlhZGRpCXIzLHIxLEZQX1NBVkVfQkFTRQkJOyBwb2ludGVyIHRvIEZQUnMgc3BhY2UKKwlzZwlyMywwKHI2KQorCW1yCXI0LHIxMQkJCQk7IHRoZSBzdHJ1Y3QgaXMgaGVyZS4uLgorCWxnCXIzLExJTktBR0VfU0laRShyMSkJCTsgZmZpX3R5cGUgKiByZXN1bHRfdHlwZS4KKwlibAlQQVNTX1NUUl9GTE9BVFMJCQk7IGdldCBzdHJ1Y3QgZmxvYXRzIGludG8gRlBSIHNhdmUgc3BhY2UuCisJLyogU2VlIGlmIHdlIHVzZWQgYW55IGZsb2F0cyAgKi8KKwlsd3oJcjAsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpKHIxKQkKKwljbXBpCTAscjAsMAorCWJlcQlMc3RydWN0aW50cwkJCTsgbm9wZS4KKwkvKiBPSyBsb2FkIGBlbSB1cC4uLiAqLworCWxmZAlmMSwgKEZQX1NBVkVfQkFTRSAgICAgICAgICAgICAgICAgKShyMSkKKwlsZmQJZjIsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgICAgICkocjEpCisJbGZkCWYzLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMiApKHIxKQorCWxmZAlmNCwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDMgKShyMSkKKwlsZmQJZjUsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA0ICkocjEpCisJbGZkCWY2LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNSApKHIxKQorCWxmZAlmNywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDYgKShyMSkKKwlsZmQJZjgsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA3ICkocjEpCisJbGZkCWY5LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOCApKHIxKQorCWxmZAlmMTAsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDkgKShyMSkKKwlsZmQJZjExLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMCkocjEpCisJbGZkCWYxMiwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTEpKHIxKQorCWxmZAlmMTMsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDEyKShyMSkKKworCS8qIHBvaW50IGJhY2sgYXQgb3VyIHNhdmVkIHN0cnVjdC4gICovCitMc3RydWN0aW50czoKKwlhZGRpCXIxMSxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykKKwlsZwlyMywwKHIxMSkJCQk7IHdlIGVuZCB1cCBwaWNraW5nIHRoZQorCWxnCXI0LDgocjExKQkJCTsgZmlyc3QgdHdvIGFnYWluLgorCWxnCXI1LDE2KHIxMSkKKwlsZwlyNiwyNChyMTEpCisJbGcJcjcsMzIocjExKQorCWxnCXI4LDQwKHIxMSkKKwlsZwlyOSw0OChyMTEpCisJbGcJcjEwLDU2KHIxMSkKKyNlbmRpZgogCiAvKiBjYXNlIGRvbmUgICovCiBMZmluaXNoOgotCWFkZGkJcjEscjEsMTc2CS8qIFJlc3RvcmUgc3RhY2sgcG9pbnRlci4gICovCi0JbHd6CXIwLDgocjEpCS8qIEdldCByZXR1cm4gYWRkcmVzcy4gICovCi0JbXRscglyMAkJLyogUmVzZXQgbGluayByZWdpc3Rlci4gICovCisJYWRkaQlyMSxyMSxTQVZFX1NJWkUJCS8qIFJlc3RvcmUgc3RhY2sgcG9pbnRlci4gICovCisJbGcJcjAsU0FWRURfTFJfT0ZGU0VUKHIxKQkvKiBHZXQgcmV0dXJuIGFkZHJlc3MuICAqLworCW10bHIJcjAJCQkvKiBSZXNldCBsaW5rIHJlZ2lzdGVyLiAgKi8KIAlibHIKLQorTGVuZGNvZGU6CisJLmFsaWduIDEKKwkKIC8qIEVORChmZmlfY2xvc3VyZV9BU00pICAqLwogCi0uZGF0YQotLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcytsaXZlX3N1cHBvcnQKKy8qIEVIIGZyYW1lIHN0dWZmLiAgKi8KKyNkZWZpbmUgRUhfREFUQV9BTElHTl9GQUNUIE1PREVfQ0hPSUNFKDB4N2MsMHg3OCkKKy8qIDE3NiwgNDAwICovCisjZGVmaW5lIEVIX0ZSQU1FX09GRlNFVEEgTU9ERV9DSE9JQ0UoMTc2LDB4OTApCisjZGVmaW5lIEVIX0ZSQU1FX09GRlNFVEIgTU9ERV9DSE9JQ0UoMSwzKQorCisJLnN0YXRpY19kYXRhCisJLmFsaWduIExPRzJfR1BSX0JZVEVTCitMTEZCMSRub25fbGF6eV9wdHI6CisJLmdfbG9uZyBMc3RhcnRjb2RlCisKKwkuc2VjdGlvbiBfX1RFWFQsX19laF9mcmFtZSxjb2FsZXNjZWQsbm9fdG9jK3N0cmlwX3N0YXRpY19zeW1zK2xpdmVfc3VwcG9ydAogRUhfZnJhbWUxOgogCS5zZXQJTCRzZXQkMCxMRUNJRTEtTFNDSUUxCiAJLmxvbmcJTCRzZXQkMAk7IExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKQEAgLTI1NSwxNiArNDgxLDE2IEBACiAJLmJ5dGUJMHgxCTsgQ0lFIFZlcnNpb24KIAkuYXNjaWkJInpSXDAiCTsgQ0lFIEF1Z21lbnRhdGlvbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yCi0JLmJ5dGUJMHg3Ywk7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKKwkuYnl0ZQlFSF9EQVRBX0FMSUdOX0ZBQ1QgOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCiAJLmJ5dGUJMHg0MQk7IENJRSBSQSBDb2x1bW4KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQXVnbWVudGF0aW9uIHNpemUKLQkuYnl0ZQkweDkwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKKwkuYnl0ZQkweDEwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKIAkuYnl0ZQkweGMJOyBEV19DRkFfZGVmX2NmYQogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxCiAJLmJ5dGUJMHgwCTsgdWxlYjEyOCAweDAKIAkuYWxpZ24JTE9HMl9HUFJfQllURVMKIExFQ0lFMToKLS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNLmVoCisJLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00uZWgKIF9mZmlfY2xvc3VyZV9BU00uZWg6CiBMU0ZERTE6CiAJLnNldAlMJHNldCQxLExFRkRFMS1MQVNGREUxCkBAIC0yNzMsNDUgKzQ5OSw3OCBAQAogTEFTRkRFMToKIAkubG9uZwlMQVNGREUxLUVIX2ZyYW1lMQk7IEZERSBDSUUgb2Zmc2V0CiAJLmdfbG9uZwlMTEZCMSRub25fbGF6eV9wdHItLgk7IEZERSBpbml0aWFsIGxvY2F0aW9uCi0JLnNldAlMJHNldCQzLExGRTEtTEZCMQorCS5zZXQJTCRzZXQkMyxMRkUxLUxzdGFydGNvZGUKIAkuZ19sb25nCUwkc2V0JDMJOyBGREUgYWRkcmVzcyByYW5nZQogCS5ieXRlICAgMHgwICAgICA7IHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCS5ieXRlCTB4NAk7IERXX0NGQV9hZHZhbmNlX2xvYzQKIAkuc2V0CUwkc2V0JDMsTENGSTEtTENGSTAKIAkubG9uZwlMJHNldCQzCiAJLmJ5dGUJMHhlCTsgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0Ci0JLmJ5dGUJMTc2LDEJOyB1bGViMTI4IDE3NgorCS5ieXRlCUVIX0ZSQU1FX09GRlNFVEEsRUhfRlJBTUVfT0ZGU0VUQgk7IHVsZWIxMjggMTc2LDEvMTkwLDMKIAkuYnl0ZQkweDQJOyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLnNldAlMJHNldCQ0LExDRkkwLUxGQjEKKwkuc2V0CUwkc2V0JDQsTENGSTAtTHN0YXJ0Y29kZQogCS5sb25nCUwkc2V0JDQKIAkuYnl0ZSAgIDB4MTEgICAgOyBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkX3NmCiAJLmJ5dGUJMHg0MQk7IHVsZWIxMjggMHg0MQogCS5ieXRlICAgMHg3ZSAgICA7IHNsZWIxMjggLTIKIAkuYWxpZ24JTE9HMl9HUFJfQllURVMKIExFRkRFMToKLS5kYXRhCi0JLmFsaWduCUxPRzJfR1BSX0JZVEVTCi1MREZDTTA6Ci0uc2VjdGlvbiBfX1RFWFQsX19waWNzeW1ib2xzdHViMSxzeW1ib2xfc3R1YnMscHVyZV9pbnN0cnVjdGlvbnMsMzIKLQkuYWxpZ24JTE9HMl9HUFJfQllURVMKLUxmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJHN0dWI6Ci0jaWYgMQorCS5hbGlnbiAJMQorCisjaWZkZWYgV0FOVF9TVFVCCisJLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCisJLmFsaWduIDUKK0xfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViOgogCS5pbmRpcmVjdF9zeW1ib2wgX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KLQltZmxyCXIwCi0JYmNsCTIwLDMxLExPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KLUxPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU46Ci0JbWZscglyMTEKLQlhZGRpcwlyMTEscjExLGhhMTYoTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyIC0gTE8kZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTikKLQltdGxyCXIwCi0JbGd1CXIxMixsbzE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ciAtIExPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4pKHIxMSkKLQltdGN0cglyMTIKKwltZmxyIHIwCisJYmNsIDIwLDMxLCJMMDAwMDAwMDAwMDEkc3BiIgorIkwwMDAwMDAwMDAwMSRzcGIiOgorCW1mbHIgcjExCisJYWRkaXMgcjExLHIxMSxoYTE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ci0iTDAwMDAwMDAwMDAxJHNwYiIpCisJbXRsciByMAorCWx3enUgcjEyLGxvMTYoTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyLSJMMDAwMDAwMDAwMDEkc3BiIikocjExKQorCW10Y3RyIHIxMgogCWJjdHIKLS5sYXp5X3N5bWJvbF9wb2ludGVyCisJLmxhenlfc3ltYm9sX3BvaW50ZXIKIExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0cjoKIAkuaW5kaXJlY3Rfc3ltYm9sIF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCi0JLmdfbG9uZyBkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKwkuZ19sb25nCWR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorCisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCisJLmFsaWduIDUKK0xfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJHN0dWI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wCisJbWZsciByMAorCWJjbCAyMCwzMSwiTDAwMDAwMDAwMDAyJHNwYiIKKyJMMDAwMDAwMDAwMDIkc3BiIjoKKwltZmxyIHIxMQorCWFkZGlzIHIxMSxyMTEsaGExNihMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRsYXp5X3B0ci0iTDAwMDAwMDAwMDAyJHNwYiIpCisJbXRsciByMAorCWx3enUgcjEyLGxvMTYoTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AkbGF6eV9wdHItIkwwMDAwMDAwMDAwMiRzcGIiKShyMTEpCisJbXRjdHIgcjEyCisJYmN0cgorCS5sYXp5X3N5bWJvbF9wb2ludGVyCitMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRsYXp5X3B0cjoKKwkuaW5kaXJlY3Rfc3ltYm9sIF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AKKwkuZ19sb25nCWR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorCisJLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCisJLmFsaWduIDUKK0xfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJHN0dWI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzCisJbWZsciByMAorCWJjbCAyMCwzMSwiTDAwMDAwMDAwMDAzJHNwYiIKKyJMMDAwMDAwMDAwMDMkc3BiIjoKKwltZmxyIHIxMQorCWFkZGlzIHIxMSxyMTEsaGExNihMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRsYXp5X3B0ci0iTDAwMDAwMDAwMDAzJHNwYiIpCisJbXRsciByMAorCWx3enUgcjEyLGxvMTYoTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkbGF6eV9wdHItIkwwMDAwMDAwMDAwMyRzcGIiKShyMTEpCisJbXRjdHIgcjEyCisJYmN0cgorCS5sYXp5X3N5bWJvbF9wb2ludGVyCitMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRsYXp5X3B0cjoKKwkuaW5kaXJlY3Rfc3ltYm9sIF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMKKwkuZ19sb25nCWR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorIyAgZW5kaWYKICNlbmRpZgotLmRhdGEKLQkuYWxpZ24gTE9HMl9HUFJfQllURVMKLUxMRkIxJG5vbl9sYXp5X3B0cjoKLQkuZ19sb25nIExGQjEKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jCmluZGV4IDc1Nzg0YTkuLmJhY2E2OTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmkuYwpAQCAtMSw3ICsxLDkgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCBHZW9mZnJleSBLZWF0aW5nCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKLSAgIENvcHlyaWdodCAoQykgMjAwOCBSZWQgSGF0LCBJbmMKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChDKSAyMDExIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDExIEt5bGUgTW9mZmV0dAorICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDggUmVkIEhhdCwgSW5jCisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworCSAgIENvcHlyaWdodCAoYykgMTk5OCBHZW9mZnJleSBLZWF0aW5nCiAKICAgIFBvd2VyUEMgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKIApAQCAtMzksMzIgKzQxLDI4IEBACiAgIC8qIFRoZSBhc3NlbWJseSBkZXBlbmRzIG9uIHRoZXNlIGV4YWN0IGZsYWdzLiAgKi8KICAgRkxBR19SRVRVUk5TX1NNU1QJPSAxIDw8ICgzMS0zMSksIC8qIFVzZWQgZm9yIEZGSV9TWVNWIHNtYWxsIHN0cnVjdHMuICAqLwogICBGTEFHX1JFVFVSTlNfTk9USElORyAgPSAxIDw8ICgzMS0zMCksIC8qIFRoZXNlIGdvIGluIGNyNyAqLworI2lmbmRlZiBfX05PX0ZQUlNfXwogICBGTEFHX1JFVFVSTlNfRlAgICAgICAgPSAxIDw8ICgzMS0yOSksCisjZW5kaWYKICAgRkxBR19SRVRVUk5TXzY0QklUUyAgID0gMSA8PCAoMzEtMjgpLAogCiAgIEZMQUdfUkVUVVJOU18xMjhCSVRTICA9IDEgPDwgKDMxLTI3KSwgLyogY3I2ICAqLwotICBGTEFHX1NZU1ZfU01TVF9SNCAgICAgPSAxIDw8ICgzMS0yNiksIC8qIHVzZSByNCBmb3IgRkZJX1NZU1YgOCBieXRlCi0JCQkJCSAgIHN0cnVjdHMuICAqLwotICBGTEFHX1NZU1ZfU01TVF9SMyAgICAgPSAxIDw8ICgzMS0yNSksIC8qIHVzZSByMyBmb3IgRkZJX1NZU1YgNCBieXRlCi0JCQkJCSAgIHN0cnVjdHMuICAqLwotICAvKiBCaXRzICgzMS0yNCkgdGhyb3VnaCAoMzEtMTkpIHN0b3JlIHNoaWZ0IHZhbHVlIGZvciBTTVNUICovCiAKICAgRkxBR19BUkdfTkVFRFNfQ09QWSAgID0gMSA8PCAoMzEtIDcpLAorI2lmbmRlZiBfX05PX0ZQUlNfXwogICBGTEFHX0ZQX0FSR1VNRU5UUyAgICAgPSAxIDw8ICgzMS0gNiksIC8qIGNyMS5lcTsgc3BlY2lmaWVkIGJ5IEFCSSAqLworI2VuZGlmCiAgIEZMQUdfNF9HUFJfQVJHVU1FTlRTICA9IDEgPDwgKDMxLSA1KSwKICAgRkxBR19SRVRWQUxfUkVGRVJFTkNFID0gMSA8PCAoMzEtIDQpCiB9OwogCiAvKiBBYm91dCB0aGUgU1lTViBBQkkuICAqLwotdW5zaWduZWQgaW50IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyA9IDg7CisjZGVmaW5lIEFTTV9ORUVEU19SRUdJU1RFUlMgNAorI2RlZmluZSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgOAogI2lmbmRlZiBfX05PX0ZQUlNfXwotdW5zaWduZWQgaW50IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDg7Ci0jZWxzZQotdW5zaWduZWQgaW50IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDA7CisjIGRlZmluZSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgOAogI2VuZGlmCiAKLWVudW0geyBBU01fTkVFRFNfUkVHSVNURVJTID0gNCB9OwotCiAvKiBmZmlfcHJlcF9hcmdzX1NZU1YgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKICAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgogCkBAIC0xMTMsMTAgKzExMSwxMiBAQAogICB2YWxwIGdwcl9iYXNlOwogICBpbnQgaW50YXJnX2NvdW50OwogCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIC8qICdmcHJfYmFzZScgcG9pbnRzIGF0IHRoZSBzcGFjZSBmb3IgZnByMSwgYW5kIGdyb3dzIHVwd2FyZHMgYXMKICAgICAgd2UgdXNlIEZQUiByZWdpc3RlcnMuICAqLwogICB2YWxwIGZwcl9iYXNlOwogICBpbnQgZnBhcmdfY291bnQ7CisjZW5kaWYKIAogICAvKiAnY29weV9zcGFjZScgZ3Jvd3MgZG93biBhcyB3ZSBwdXQgc3RydWN0dXJlcyBpbiBpdC4gIEl0IHNob3VsZAogICAgICBzdGF5IDE2LWJ5dGUgYWxpZ25lZC4gICovCkBAIC0xMjUsOSArMTI1LDggQEAKICAgLyogJ25leHRfYXJnJyBncm93cyB1cCBhcyB3ZSBwdXQgcGFyYW1ldGVycyBpbiBpdC4gICovCiAgIHZhbHAgbmV4dF9hcmc7CiAKLSAgaW50IGksIGlpIE1BWUJFX1VOVVNFRDsKKyAgaW50IGk7CiAgIGZmaV90eXBlICoqcHRyOwotICBkb3VibGUgZG91YmxlX3RtcDsKICAgdW5pb24gewogICAgIHZvaWQgKip2OwogICAgIGNoYXIgKipjOwpAQCAtMTQzLDIxICsxNDIsMjMgQEAKICAgc2l6ZV90IHN0cnVjdF9jb3B5X3NpemU7CiAgIHVuc2lnbmVkIGdwcnZhbHVlOwogCi0gIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSAgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAwOwotCiAgIHN0YWNrdG9wLmMgPSAoY2hhciAqKSBzdGFjayArIGJ5dGVzOwogICBncHJfYmFzZS51ID0gc3RhY2t0b3AudSAtIEFTTV9ORUVEU19SRUdJU1RFUlMgLSBOVU1fR1BSX0FSR19SRUdJU1RFUlM7CiAgIGludGFyZ19jb3VudCA9IDA7CisjaWZuZGVmIF9fTk9fRlBSU19fCisgIGRvdWJsZSBkb3VibGVfdG1wOwogICBmcHJfYmFzZS5kID0gZ3ByX2Jhc2UuZCAtIE5VTV9GUFJfQVJHX1JFR0lTVEVSUzsKICAgZnBhcmdfY291bnQgPSAwOwogICBjb3B5X3NwYWNlLmMgPSAoKGZsYWdzICYgRkxBR19GUF9BUkdVTUVOVFMpID8gZnByX2Jhc2UuYyA6IGdwcl9iYXNlLmMpOworI2Vsc2UKKyAgY29weV9zcGFjZS5jID0gZ3ByX2Jhc2UuYzsKKyNlbmRpZgogICBuZXh0X2FyZy51ID0gc3RhY2sgKyAyOwogCiAgIC8qIENoZWNrIHRoYXQgZXZlcnl0aGluZyBzdGFydHMgYWxpZ25lZCBwcm9wZXJseS4gICovCi0gIEZGSV9BU1NFUlQgKCgodW5zaWduZWQpIChjaGFyICopIHN0YWNrICYgMHhGKSA9PSAwKTsKLSAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCkgY29weV9zcGFjZS5jICYgMHhGKSA9PSAwKTsKLSAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCkgc3RhY2t0b3AuYyAmIDB4RikgPT0gMCk7CisgIEZGSV9BU1NFUlQgKCgodW5zaWduZWQgbG9uZykgKGNoYXIgKikgc3RhY2sgJiAweEYpID09IDApOworICBGRklfQVNTRVJUICgoKHVuc2lnbmVkIGxvbmcpIGNvcHlfc3BhY2UuYyAmIDB4RikgPT0gMCk7CisgIEZGSV9BU1NFUlQgKCgodW5zaWduZWQgbG9uZykgc3RhY2t0b3AuYyAmIDB4RikgPT0gMCk7CiAgIEZGSV9BU1NFUlQgKChieXRlcyAmIDB4RikgPT0gMCk7CiAgIEZGSV9BU1NFUlQgKGNvcHlfc3BhY2UuYyA+PSBuZXh0X2FyZy5jKTsKIApAQCAtMTc0LDEyICsxNzUsMjggQEAKICAgICAgICBpID4gMDsKICAgICAgICBpLS0sIHB0cisrLCBwX2FyZ3YudisrKQogICAgIHsKLSAgICAgIHN3aXRjaCAoKCpwdHIpLT50eXBlKQotCXsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGVudW0gPSAoKnB0ciktPnR5cGU7CisKKyAgICAgIC8qIFdlIG1heSBuZWVkIHRvIGhhbmRsZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gQUJJICovCisgICAgICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgICAgICB9IGVsc2UgaWYgKGVjaWYtPmNpZi0+YWJpICE9IEZGSV9MSU5VWCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgICAgICB9CisKKyAgICAgIC8qIE5vdyB0ZXN0IHRoZSB0cmFuc2xhdGVkIHZhbHVlICovCisgICAgICBzd2l0Y2ggKHR5cGVudW0pIHsKKyNpZm5kZWYgX19OT19GUFJTX18KIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIuICAqLwotCSAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZmxvYXRfcHJlcDsKIAkgIGRvdWJsZV90bXAgPSAqKnBfYXJndi5mOwogCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgewpAQCAtMTk1LDggKzIxMiw2IEBACiAKIAljYXNlIEZGSV9UWVBFX0RPVUJMRToKIAkgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQ2NC4gICovCi0JICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gc29mdF9kb3VibGVfcHJlcDsKIAkgIGRvdWJsZV90bXAgPSAqKnBfYXJndi5kOwogCiAJICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQpAQCAtMjE4LDQzICsyMzMsNiBAQAogCiAjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0JICBpZiAoKGVjaWYtPmNpZi0+YWJpICE9IEZGSV9MSU5VWCkKLQkJJiYgKGVjaWYtPmNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSkKLQkgICAgZ290byBkb19zdHJ1Y3Q7Ci0JICAvKiBUaGUgc29mdCBmbG9hdCBBQkkgZm9yIGxvbmcgZG91YmxlcyB3b3JrcyBsaWtlIHRoaXMsCi0JICAgICBhIGxvbmcgZG91YmxlIGlzIHBhc3NlZCBpbiBmb3VyIGNvbnNlY3V0aXZlIGdwcnMgaWYgYXZhaWxhYmxlLgotCSAgICAgQSBtYXhpbXVtIG9mIDIgbG9uZyBkb3VibGVzIGNhbiBiZSBwYXNzZWQgaW4gZ3Bycy4KLQkgICAgIElmIHdlIGRvIG5vdCBoYXZlIDQgZ3BycyBsZWZ0LCB0aGUgbG9uZyBkb3VibGUgaXMgcGFzc2VkIG9uIHRoZQotCSAgICAgc3RhY2ssIDQtYnl0ZSBhbGlnbmVkLiAgKi8KLQkgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgewotCSAgICAgIHVuc2lnbmVkIGludCBpbnRfdG1wID0gKCpwX2FyZ3YudWkpWzBdOwotCSAgICAgIGlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMykKLQkJewotCQkgIGlmIChpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCi0JCSAgICBpbnRhcmdfY291bnQgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gaW50YXJnX2NvdW50OwotCQkgICpuZXh0X2FyZy51ID0gaW50X3RtcDsKLQkJICBuZXh0X2FyZy51Kys7Ci0JCSAgZm9yIChpaSA9IDE7IGlpIDwgNDsgaWkrKykKLQkJICAgIHsKLQkJICAgICAgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07Ci0JCSAgICAgICpuZXh0X2FyZy51ID0gaW50X3RtcDsKLQkJICAgICAgbmV4dF9hcmcudSsrOwotCQkgICAgfQotCQl9Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAgKmdwcl9iYXNlLnUrKyA9IGludF90bXA7Ci0JCSAgZm9yIChpaSA9IDE7IGlpIDwgNDsgaWkrKykKLQkJICAgIHsKLQkJICAgICAgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07Ci0JCSAgICAgICpncHJfYmFzZS51KysgPSBpbnRfdG1wOwotCQkgICAgfQotCQl9Ci0JICAgICAgaW50YXJnX2NvdW50ICs9NDsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7CiAJICAgICAgZG91YmxlX3RtcCA9ICgqcF9hcmd2LmQpWzBdOwogCiAJICAgICAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAtIDEpCkBAIC0yODAsMTMgKzI1OCw0MCBAQAogCiAJICAgICAgZnBhcmdfY291bnQgKz0gMjsKIAkgICAgICBGRklfQVNTRVJUIChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKLQkgICAgfQogCSAgYnJlYWs7CiAjZW5kaWYKKyNlbmRpZiAvKiBoYXZlIEZQUnMgKi8KKworCS8qCisJICogVGhlIHNvZnQgZmxvYXQgQUJJIGZvciBsb25nIGRvdWJsZXMgd29ya3MgbGlrZSB0aGlzLCBhIGxvbmcgZG91YmxlCisJICogaXMgcGFzc2VkIGluIGZvdXIgY29uc2VjdXRpdmUgR1BScyBpZiBhdmFpbGFibGUuICBBIG1heGltdW0gb2YgMgorCSAqIGxvbmcgZG91YmxlcyBjYW4gYmUgcGFzc2VkIGluIGdwcnMuICBJZiB3ZSBkbyBub3QgaGF2ZSA0IEdQUnMKKwkgKiBsZWZ0LCB0aGUgbG9uZyBkb3VibGUgaXMgcGFzc2VkIG9uIHRoZSBzdGFjaywgNC1ieXRlIGFsaWduZWQuCisJICovCisJY2FzZSBGRklfVFlQRV9VSU5UMTI4OiB7CisJCXVuc2lnbmVkIGludCBpbnRfdG1wID0gKCpwX2FyZ3YudWkpWzBdOworCQl1bnNpZ25lZCBpbnQgaWk7CisJCWlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMykgeworCQkJaWYgKGludGFyZ19jb3VudCA8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKKwkJCQlpbnRhcmdfY291bnQgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gaW50YXJnX2NvdW50OworCQkJKihuZXh0X2FyZy51KyspID0gaW50X3RtcDsKKwkJCWZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspIHsKKwkJCQlpbnRfdG1wID0gKCpwX2FyZ3YudWkpW2lpXTsKKwkJCQkqKG5leHRfYXJnLnUrKykgPSBpbnRfdG1wOworCQkJfQorCQl9IGVsc2UgeworCQkJKihncHJfYmFzZS51KyspID0gaW50X3RtcDsKKwkJCWZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspIHsKKwkJCQlpbnRfdG1wID0gKCpwX2FyZ3YudWkpW2lpXTsKKwkJCQkqKGdwcl9iYXNlLnUrKykgPSBpbnRfdG1wOworCQkJfQorCQl9CisJCWludGFyZ19jb3VudCArPSA0OworCQlicmVhazsKKwl9CiAKIAljYXNlIEZGSV9UWVBFX1VJTlQ2NDoKIAljYXNlIEZGSV9UWVBFX1NJTlQ2NDoKLQlzb2Z0X2RvdWJsZV9wcmVwOgogCSAgaWYgKGludGFyZ19jb3VudCA9PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMtMSkKIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICBpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKQEAgLTMxOSw5ICszMjQsNiBAQAogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWRvX3N0cnVjdDoKLSNlbmRpZgogCSAgc3RydWN0X2NvcHlfc2l6ZSA9ICgoKnB0ciktPnNpemUgKyAxNSkgJiB+MHhGOwogCSAgY29weV9zcGFjZS5jIC09IHN0cnVjdF9jb3B5X3NpemU7CiAJICBtZW1jcHkgKGNvcHlfc3BhY2UuYywgKnBfYXJndi5jLCAoKnB0ciktPnNpemUpOwpAQCAtMzQ5LDcgKzM1MSw2IEBACiAJY2FzZSBGRklfVFlQRV9VSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9TSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgotCXNvZnRfZmxvYXRfcHJlcDoKIAogCSAgZ3BydmFsdWUgPSAqKnBfYXJndi51aTsKIApAQCAtMzY2LDggKzM2NywxMCBAQAogICAvKiBDaGVjayB0aGF0IHdlIGRpZG4ndCBvdmVycnVuIHRoZSBzdGFjay4uLiAgKi8KICAgRkZJX0FTU0VSVCAoY29weV9zcGFjZS5jID49IG5leHRfYXJnLmMpOwogICBGRklfQVNTRVJUIChncHJfYmFzZS51IDw9IHN0YWNrdG9wLnUgLSBBU01fTkVFRFNfUkVHSVNURVJTKTsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgRkZJX0FTU0VSVCAoZnByX2Jhc2UudQogCSAgICAgIDw9IHN0YWNrdG9wLnUgLSBBU01fTkVFRFNfUkVHSVNURVJTIC0gTlVNX0dQUl9BUkdfUkVHSVNURVJTKTsKKyNlbmRpZgogICBGRklfQVNTRVJUIChmbGFncyAmIEZMQUdfNF9HUFJfQVJHVU1FTlRTIHx8IGludGFyZ19jb3VudCA8PSA0KTsKIH0KIApAQCAtNjA0LDkgKzYwNyw2IEBACiAgIHVuc2lnbmVkIHR5cGUgPSBjaWYtPnJ0eXBlLT50eXBlOwogICB1bnNpZ25lZCBzaXplID0gY2lmLT5ydHlwZS0+c2l6ZTsKIAotICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMDsKLQogICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpCiAgICAgewogICAgICAgLyogQWxsIHRoZSBtYWNoaW5lLWluZGVwZW5kZW50IGNhbGN1bGF0aW9uIG9mIGNpZi0+Ynl0ZXMgd2lsbCBiZSB3cm9uZy4KQEAgLTY0Niw2MiArNjQ2LDU2IEBACiAgICAgIC0gU2luZ2xlL2RvdWJsZSBGUCB2YWx1ZXMgaW4gZnByMSwgbG9uZyBkb3VibGUgaW4gZnByMSxmcHIyLgogICAgICAtIHNvZnQtZmxvYXQgZmxvYXQvZG91YmxlcyBhcmUgdHJlYXRlZCBhcyBVSU5UMzIvVUlOVDY0IHJlc3BlY3RpdmxleS4KICAgICAgLSBzb2Z0LWZsb2F0IGxvbmcgZG91YmxlcyBhcmUgcmV0dXJuZWQgaW4gZ3ByMy1ncHI2LiAgKi8KKyAgLyogRmlyc3QgdHJhbnNsYXRlIGZvciBzb2Z0ZmxvYXQvbm9ubGludXggKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfRkxPQVQpCisJCXR5cGUgPSBGRklfVFlQRV9VSU5UMzI7CisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCQl0eXBlID0gRkZJX1RZUEVfVUlOVDY0OworCWlmICh0eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXR5cGUgPSBGRklfVFlQRV9VSU5UMTI4OworICB9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJdHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorICB9CisKICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLSAgICAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQKLQkmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQlnb3RvIGJ5cmVmOwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzEyOEJJVFM7CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotI2VuZGlmCiAgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfNjRCSVRTOwogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgotICAgICAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBubyBmcCByZWdpc3RlcnMgYXJlIHVzZWQuICAqLwotICAgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCWZsYWdzIHw9IEZMQUdfUkVUVVJOU19GUDsKKyAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19GUDsKICAgICAgIGJyZWFrOworI2VuZGlmCiAKKyAgICBjYXNlIEZGSV9UWVBFX1VJTlQxMjg6CisgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfMTI4QklUUzsKKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAgICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfNjRCSVRTOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTVikKLQl7Ci0JICAvKiBUaGUgZmluYWwgU1lTViBBQkkgc2F5cyB0aGF0IHN0cnVjdHVyZXMgc21hbGxlciBvciBlcXVhbCA4IGJ5dGVzCi0JICAgICBhcmUgcmV0dXJuZWQgaW4gcjMvcjQuIFRoZSBGRklfR0NDX1NZU1YgQUJJIGluc3RlYWQgcmV0dXJucyB0aGVtCi0JICAgICBpbiBtZW1vcnkuICAqLwotCi0JICAvKiBUcmVhdCBzdHJ1Y3RzIHdpdGggc2l6ZSA8PSA4IGJ5dGVzLiAgKi8KLQkgIGlmIChzaXplIDw9IDgpCi0JICAgIHsKLQkgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfU01TVDsKLQkgICAgICAvKiBUaGVzZSBzdHJ1Y3RzIGFyZSByZXR1cm5lZCBpbiByMy4gV2UgcGFjayB0aGUgdHlwZSBhbmQgdGhlCi0JCSBwcmVjYWxjdWxhdGVkIHNoaWZ0IHZhbHVlIChuZWVkZWQgaW4gdGhlIHN5c3YuUykgaW50byBmbGFncy4KLQkJIFRoZSBzYW1lIGFwcGxpZXMgZm9yIHRoZSBzdHJ1Y3RzIHJldHVybmVkIGluIHIzL3I0LiAgKi8KLQkgICAgICBpZiAoc2l6ZSA8PSA0KQotCQl7Ci0JCSAgZmxhZ3MgfD0gRkxBR19TWVNWX1NNU1RfUjM7Ci0JCSAgZmxhZ3MgfD0gOCAqICg0IC0gc2l6ZSkgPDwgODsKLQkJICBicmVhazsKLQkJfQotCSAgICAgIC8qIFRoZXNlIHN0cnVjdHMgYXJlIHJldHVybmVkIGluIHIzIGFuZCByNC4gU2VlIGFib3ZlLiAgICovCi0JICAgICAgaWYgIChzaXplIDw9IDgpCi0JCXsKLQkJICBmbGFncyB8PSBGTEFHX1NZU1ZfU01TVF9SMyB8IEZMQUdfU1lTVl9TTVNUX1I0OwotCQkgIGZsYWdzIHw9IDggKiAoOCAtIHNpemUpIDw8IDg7Ci0JCSAgYnJlYWs7Ci0JCX0KLQkgICAgfQotCX0KLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotICAgIGJ5cmVmOgotI2VuZGlmCisgICAgICAvKgorICAgICAgICogVGhlIGZpbmFsIFNZU1YgQUJJIHNheXMgdGhhdCBzdHJ1Y3R1cmVzIHNtYWxsZXIgb3IgZXF1YWwgOCBieXRlcworICAgICAgICogYXJlIHJldHVybmVkIGluIHIzL3I0LiBUaGUgRkZJX0dDQ19TWVNWIEFCSSBpbnN0ZWFkIHJldHVybnMgdGhlbQorICAgICAgICogaW4gbWVtb3J5LgorICAgICAgICoKKyAgICAgICAqIE5PVEU6IFRoZSBhc3NlbWJseSBjb2RlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgaXQganVzdCBuZWVkcyB0bworICAgICAgICogICAgICAgc3RvcmUgYm90aCByMyBhbmQgcjQgaW50byBhIDgtYnl0ZSB3b3JkLWFsaWduZWQgYnVmZmVyLCBhcworICAgICAgICogICAgICAgd2UgYWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIGluIGZmaV9jYWxsKCkgaWYgdGhpcyBmbGFnIGlzCisgICAgICAgKiAgICAgICBzZXQuCisgICAgICAgKi8KKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTViAmJiBzaXplIDw9IDgpCisJZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NNU1Q7CiAgICAgICBpbnRhcmdfY291bnQrKzsKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCkBAIC03MjIsMzkgKzcxNiwzNiBAQAogICAgICAgIFN0dWZmIG9uIHRoZSBzdGFjayBuZWVkcyB0byBrZWVwIHByb3BlciBhbGlnbm1lbnQuICAqLwogICAgIGZvciAocHRyID0gY2lmLT5hcmdfdHlwZXMsIGkgPSBjaWYtPm5hcmdzOyBpID4gMDsgaS0tLCBwdHIrKykKICAgICAgIHsKLQlzd2l0Y2ggKCgqcHRyKS0+dHlwZSkKLQkgIHsKKwl1bnNpZ25lZCBzaG9ydCB0eXBlbnVtID0gKCpwdHIpLT50eXBlOworCisJLyogV2UgbWF5IG5lZWQgdG8gaGFuZGxlIHNvbWUgdmFsdWVzIGRlcGVuZGluZyBvbiBBQkkgKi8KKwlpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisJfSBlbHNlIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorCX0KKworCXN3aXRjaCAodHlwZW51bSkgeworI2lmbmRlZiBfX05PX0ZQUlNfXwogCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLQkgICAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIuICAqLwotCSAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgZ290byBzb2Z0X2Zsb2F0X2NpZjsKIAkgICAgZnBhcmdfY291bnQrKzsKIAkgICAgLyogZmxvYXRpbmcgc2luZ2xlcyBhcmUgbm90IDgtYWxpZ25lZCBvbiBzdGFjayAqLwogCSAgICBicmVhazsKIAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCiAJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0JICAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgZ290byBkb19zdHJ1Y3Q7Ci0JICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgICB7Ci0JCWlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMwotCQkgIHx8IGludGFyZ19jb3VudCA8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKLQkJICAvKiBBIGxvbmcgZG91YmxlIGluIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGNhbiB1c2Ugb25seQotCQkgICAgIGEgc2V0IG9mIGZvdXIgY29uc2VjdXRpdmUgZ3Bycy4gSWYgd2UgaGF2ZSBub3QgZW5vdWdoLAotCQkgICAgIHdlIGhhdmUgdG8gYWRqdXN0IHRoZSBpbnRhcmdfY291bnQgdmFsdWUuICAqLwotCQkgIGludGFyZ19jb3VudCArPSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSBpbnRhcmdfY291bnQ7Ci0JCWludGFyZ19jb3VudCArPSA0OwotCQlicmVhazsKLQkgICAgICB9Ci0JICAgIGVsc2UKLQkgICAgICBmcGFyZ19jb3VudCsrOworCSAgICBmcGFyZ19jb3VudCsrOwogCSAgICAvKiBGYWxsIHRocnUgKi8KICNlbmRpZgogCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0JICAgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQ2NC4gICovCi0JICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgICBnb3RvIHNvZnRfZG91YmxlX2NpZjsKIAkgICAgZnBhcmdfY291bnQrKzsKIAkgICAgLyogSWYgdGhpcyBGUCBhcmcgaXMgZ29pbmcgb24gdGhlIHN0YWNrLCBpdCBtdXN0IGJlCiAJICAgICAgIDgtYnl0ZS1hbGlnbmVkLiAgKi8KQEAgLTc2MywxMCArNzU0LDIxIEBACiAJCSYmIGludGFyZ19jb3VudCAlIDIgIT0gMCkKIAkgICAgICBpbnRhcmdfY291bnQrKzsKIAkgICAgYnJlYWs7CisjZW5kaWYKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDEyODoKKwkJLyoKKwkJICogQSBsb25nIGRvdWJsZSBpbiBGRklfTElOVVhfU09GVF9GTE9BVCBjYW4gdXNlIG9ubHkgYSBzZXQKKwkJICogb2YgZm91ciBjb25zZWN1dGl2ZSBncHJzLiBJZiB3ZSBkbyBub3QgaGF2ZSBlbm91Z2gsIHdlCisJCSAqIGhhdmUgdG8gYWRqdXN0IHRoZSBpbnRhcmdfY291bnQgdmFsdWUuCisJCSAqLworCQlpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMKKwkJCQkmJiBpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCisJCQlpbnRhcmdfY291bnQgPSBOVU1fR1BSX0FSR19SRUdJU1RFUlM7CisJCWludGFyZ19jb3VudCArPSA0OworCQlicmVhazsKIAogCSAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAJICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKLQkgIHNvZnRfZG91YmxlX2NpZjoKIAkgICAgLyogJ2xvbmcgbG9uZycgYXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgdHdvIHdvcmRzLCBidXQKIAkgICAgICAgZWl0aGVyIGJvdGggd29yZHMgbXVzdCBmaXQgaW4gcmVnaXN0ZXJzIG9yIGJvdGggZ28KIAkgICAgICAgb24gdGhlIHN0YWNrLiAgSWYgdGhleSBnbyBvbiB0aGUgc3RhY2ssIHRoZXkgbXVzdApAQCAtNzgzLDkgKzc4NSw2IEBACiAJICAgIGJyZWFrOwogCiAJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCSAgZG9fc3RydWN0OgotI2VuZGlmCiAJICAgIC8qIFdlIG11c3QgYWxsb2NhdGUgc3BhY2UgZm9yIGEgY29weSBvZiB0aGVzZSB0byBlbmZvcmNlCiAJICAgICAgIHBhc3MtYnktdmFsdWUuICBQYWQgdGhlIHNwYWNlIHVwIHRvIGEgbXVsdGlwbGUgb2YgMTYKIAkgICAgICAgYnl0ZXMgKHRoZSBtYXhpbXVtIGFsaWdubWVudCByZXF1aXJlZCBmb3IgYW55dGhpbmcgdW5kZXIKQEAgLTc5MywxMiArNzkyLDIwIEBACiAJICAgIHN0cnVjdF9jb3B5X3NpemUgKz0gKCgqcHRyKS0+c2l6ZSArIDE1KSAmIH4weEY7CiAJICAgIC8qIEZhbGwgdGhyb3VnaCAoYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBwb2ludGVyKS4gICovCiAKLQkgIGRlZmF1bHQ6Ci0JICBzb2Z0X2Zsb2F0X2NpZjoKKwkgIGNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKKwkgIGNhc2UgRkZJX1RZUEVfSU5UOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMTY6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UODoKIAkgICAgLyogRXZlcnl0aGluZyBlbHNlIGlzIHBhc3NlZCBhcyBhIDQtYnl0ZSB3b3JkIGluIGEgR1BSLCBlaXRoZXIKIAkgICAgICAgdGhlIG9iamVjdCBpdHNlbGYgb3IgYSBwb2ludGVyIHRvIGl0LiAgKi8KIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkJRkZJX0FTU0VSVCAoMCk7CiAJICB9CiAgICAgICB9CiAgIGVsc2UKQEAgLTgyNywxNiArODM0LDI5IEBACiAJICAgIGludGFyZ19jb3VudCArPSAoKCpwdHIpLT5zaXplICsgNykgLyA4OwogCSAgICBicmVhazsKIAotCSAgZGVmYXVsdDoKKwkgIGNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6CisJICBjYXNlIEZGSV9UWVBFX0lOVDoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9VSU5UODoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJICAgIC8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBwYXNzZWQgYXMgYSA4LWJ5dGUgd29yZCBpbiBhIEdQUiwgZWl0aGVyCiAJICAgICAgIHRoZSBvYmplY3QgaXRzZWxmIG9yIGEgcG9pbnRlciB0byBpdC4gICovCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJCUZGSV9BU1NFUlQgKDApOwogCSAgfQogICAgICAgfQogCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogICAgIGZsYWdzIHw9IEZMQUdfRlBfQVJHVU1FTlRTOworI2VuZGlmCiAgIGlmIChpbnRhcmdfY291bnQgPiA0KQogICAgIGZsYWdzIHw9IEZMQUdfNF9HUFJfQVJHVU1FTlRTOwogICBpZiAoc3RydWN0X2NvcHlfc2l6ZSAhPSAwKQpAQCAtODQ0LDIxICs4NjQsMjcgQEAKIAogICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpCiAgICAgeworI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgICAgLyogU3BhY2UgZm9yIHRoZSBGUFIgcmVnaXN0ZXJzLCBpZiBuZWVkZWQuICAqLwogICAgICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAJYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mIChkb3VibGUpOworI2VuZGlmCiAKICAgICAgIC8qIFN0YWNrIHNwYWNlLiAgKi8KICAgICAgIGlmIChpbnRhcmdfY291bnQgPiBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCiAJYnl0ZXMgKz0gKGludGFyZ19jb3VudCAtIE5VTV9HUFJfQVJHX1JFR0lTVEVSUykgKiBzaXplb2YgKGludCk7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgICBpZiAoZnBhcmdfY291bnQgPiBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJYnl0ZXMgKz0gKGZwYXJnX2NvdW50IC0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKSAqIHNpemVvZiAoZG91YmxlKTsKKyNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICAgIC8qIFNwYWNlIGZvciB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkLiAgKi8KICAgICAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogCWJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUzY0ICogc2l6ZW9mIChkb3VibGUpOworI2VuZGlmCiAKICAgICAgIC8qIFN0YWNrIHNwYWNlLiAgKi8KICAgICAgIGlmIChpbnRhcmdfY291bnQgPiBOVU1fR1BSX0FSR19SRUdJU1RFUlM2NCkKQEAgLTg4NiwyOCArOTEyLDQxIEBACiB2b2lkCiBmZmlfY2FsbChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKIHsKKyAgLyoKKyAgICogVGhlIGZpbmFsIFNZU1YgQUJJIHNheXMgdGhhdCBzdHJ1Y3R1cmVzIHNtYWxsZXIgb3IgZXF1YWwgOCBieXRlcworICAgKiBhcmUgcmV0dXJuZWQgaW4gcjMvcjQuIFRoZSBGRklfR0NDX1NZU1YgQUJJIGluc3RlYWQgcmV0dXJucyB0aGVtCisgICAqIGluIG1lbW9yeS4KKyAgICoKKyAgICogSnVzdCB0byBrZWVwIHRoaW5ncyBzaW1wbGUgZm9yIHRoZSBhc3NlbWJseSBjb2RlLCB3ZSB3aWxsIGFsd2F5cworICAgKiBib3VuY2UtYnVmZmVyIHN0cnVjdCByZXR1cm4gdmFsdWVzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA4IGJ5dGVzLgorICAgKiBUaGlzIGFsbG93cyB0aGUgQVNNIHRvIGhhbmRsZSBTWVNWIHNtYWxsIHN0cnVjdHVyZXMgYnkgZGlyZWN0bHkKKyAgICogd3JpdGluZyByMyBhbmQgcjQgdG8gbWVtb3J5IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgc3RydWN0IHNpemUuCisgICAqLworICB1bnNpZ25lZCBpbnQgc21zdF9idWZmZXJbMl07CiAgIGV4dGVuZGVkX2NpZiBlY2lmOworICB1bnNpZ25lZCBpbnQgcnNpemUgPSAwOwogCiAgIGVjaWYuY2lmID0gY2lmOwogICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKIAotICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0IGFuZCB3ZSBkb24ndCBoYXZlIGEgcmV0dXJuCSovCi0gIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugb25lCQkgICAgICAgICovCi0KLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSkKLSAgICB7Ci0gICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKLSAgICB9Ci0gIGVsc2UKLSAgICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKLQorICAvKiBFbnN1cmUgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgc3RydWN0IHJldHVybiB2YWx1ZSAqLworICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKKyAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSB7CisgICAgcnNpemUgPSBjaWYtPnJ0eXBlLT5zaXplOworICAgIGlmIChyc2l6ZSA8PSA4KQorICAgICAgZWNpZi5ydmFsdWUgPSBzbXN0X2J1ZmZlcjsKKyAgICBlbHNlIGlmICghcnZhbHVlKQorICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EocnNpemUpOworICB9CiAKICAgc3dpdGNoIChjaWYtPmFiaSkKICAgICB7CiAjaWZuZGVmIFBPV0VSUEM2NAorIyBpZm5kZWYgX19OT19GUFJTX18KICAgICBjYXNlIEZGSV9TWVNWOgogICAgIGNhc2UgRkZJX0dDQ19TWVNWOgogICAgIGNhc2UgRkZJX0xJTlVYOgorIyBlbmRpZgogICAgIGNhc2UgRkZJX0xJTlVYX1NPRlRfRkxPQVQ6CiAgICAgICBmZmlfY2FsbF9TWVNWICgmZWNpZiwgLWNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7CiAgICAgICBicmVhazsKQEAgLTkyMCw2ICs5NTksMTAgQEAKICAgICAgIEZGSV9BU1NFUlQgKDApOwogICAgICAgYnJlYWs7CiAgICAgfQorCisgIC8qIENoZWNrIGZvciBhIGJvdW5jZS1idWZmZXJlZCByZXR1cm4gdmFsdWUgKi8KKyAgaWYgKHJ2YWx1ZSAmJiBlY2lmLnJ2YWx1ZSA9PSBzbXN0X2J1ZmZlcikKKyAgICBtZW1jcHkocnZhbHVlLCBzbXN0X2J1ZmZlciwgcnNpemUpOwogfQogCiAKQEAgLTk0OSwxNCArOTkyLDE5IEBACiAjaWZkZWYgUE9XRVJQQzY0CiAgIHZvaWQgKip0cmFtcCA9ICh2b2lkICoqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYNjQpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICAvKiBDb3B5IGZ1bmN0aW9uIGFkZHJlc3MgYW5kIFRPQyBmcm9tIGZmaV9jbG9zdXJlX0xJTlVYNjQuICAqLwogICBtZW1jcHkgKHRyYW1wLCAoY2hhciAqKSBmZmlfY2xvc3VyZV9MSU5VWDY0LCAxNik7CiAgIHRyYW1wWzJdID0gY29kZWxvYzsKICNlbHNlCiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWIHx8IGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgaWYgKCEgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTViAKKwkgfHwgY2lmLT5hYmkgPT0gRkZJX1NZU1YKKwkgfHwgY2lmLT5hYmkgPT0gRkZJX0xJTlVYCisJIHx8IGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgdHJhbXBbMF0gPSAweDdjMDgwMmE2OyAgLyogICBtZmxyICAgIHIwICovCkBAIC0xMDExLDMyICsxMDU5LDM4IEBACiAgIHZvaWQgKiogICAgICAgICAgYXZhbHVlOwogICBmZmlfdHlwZSAqKiAgICAgIGFyZ190eXBlczsKICAgbG9uZyAgICAgICAgICAgICBpLCBhdm47Ci0gIGxvbmcgICAgICAgICAgICAgbmY7ICAgLyogbnVtYmVyIG9mIGZsb2F0aW5nIHJlZ2lzdGVycyBhbHJlYWR5IHVzZWQgKi8KLSAgbG9uZyAgICAgICAgICAgICBuZzsgICAvKiBudW1iZXIgb2YgZ2VuZXJhbCByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCi0gIGZmaV9jaWYgKiAgICAgICAgY2lmOwotICBkb3VibGUgICAgICAgICAgIHRlbXA7Ci0gIHVuc2lnbmVkICAgICAgICAgc2l6ZTsKKyNpZm5kZWYgX19OT19GUFJTX18KKyAgbG9uZyAgICAgICAgICAgICBuZiA9IDA7ICAgLyogbnVtYmVyIG9mIGZsb2F0aW5nIHJlZ2lzdGVycyBhbHJlYWR5IHVzZWQgKi8KKyNlbmRpZgorICBsb25nICAgICAgICAgICAgIG5nID0gMDsgICAvKiBudW1iZXIgb2YgZ2VuZXJhbCByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCiAKLSAgY2lmID0gY2xvc3VyZS0+Y2lmOworICBmZmlfY2lmICpjaWYgPSBjbG9zdXJlLT5jaWY7CisgIHVuc2lnbmVkICAgICAgIHNpemUgICAgID0gY2lmLT5ydHlwZS0+c2l6ZTsKKyAgdW5zaWduZWQgc2hvcnQgcnR5cGVudW0gPSBjaWYtPnJ0eXBlLT50eXBlOworCiAgIGF2YWx1ZSA9IGFsbG9jYSAoY2lmLT5uYXJncyAqIHNpemVvZiAodm9pZCAqKSk7Ci0gIHNpemUgPSBjaWYtPnJ0eXBlLT5zaXplOwogCi0gIG5mID0gMDsKLSAgbmcgPSAwOworICAvKiBGaXJzdCB0cmFuc2xhdGUgZm9yIHNvZnRmbG9hdC9ub25saW51eCAqLworICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCWlmIChydHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCWlmIChydHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgIH0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJcnR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgfQorCiAKICAgLyogQ29weSB0aGUgY2FsbGVyJ3Mgc3RydWN0dXJlIHJldHVybiB2YWx1ZSBhZGRyZXNzIHNvIHRoYXQgdGhlIGNsb3N1cmUKICAgICAgcmV0dXJucyB0aGUgZGF0YSBkaXJlY3RseSB0byB0aGUgY2FsbGVyLgogICAgICBGb3IgRkZJX1NZU1YgdGhlIHJlc3VsdCBpcyBwYXNzZWQgaW4gcjMvcjQgaWYgdGhlIHN0cnVjdCBzaXplIGlzIGxlc3MKICAgICAgb3IgZXF1YWwgOCBieXRlcy4gICovCi0KLSAgaWYgKChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgICYmICEoKGNpZi0+YWJpID09IEZGSV9TWVNWKSAmJiAoc2l6ZSA8PSA4KSkpCi0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgICAgIHx8IChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSNlbmRpZgotICAgICAgKQotICAgIHsKKyAgaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX1NUUlVDVCAmJiAoKGNpZi0+YWJpICE9IEZGSV9TWVNWKSB8fCAoc2l6ZSA+IDgpKSkgewogICAgICAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKICAgICAgIG5nKys7CiAgICAgICBwZ3IrKzsKQEAgLTEwNDcsMTAgKzExMDEsMTA5IEBACiAgIGFyZ190eXBlcyA9IGNpZi0+YXJnX3R5cGVzOwogCiAgIC8qIEdyYWIgdGhlIGFkZHJlc3NlcyBvZiB0aGUgYXJndW1lbnRzIGZyb20gdGhlIHN0YWNrIGZyYW1lLiAgKi8KLSAgd2hpbGUgKGkgPCBhdm4pCi0gICAgewotICAgICAgc3dpdGNoIChhcmdfdHlwZXNbaV0tPnR5cGUpCi0JeworICB3aGlsZSAoaSA8IGF2bikgeworICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZW51bSA9IGFyZ190eXBlc1tpXS0+dHlwZTsKKworICAgICAgLyogV2UgbWF5IG5lZWQgdG8gaGFuZGxlIHNvbWUgdmFsdWVzIGRlcGVuZGluZyBvbiBBQkkgKi8KKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9GTE9BVCkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMzI7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UNjQ7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDEyODsKKyAgICAgIH0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgICAgIH0KKworICAgICAgc3dpdGNoICh0eXBlbnVtKSB7CisjaWZuZGVmIF9fTk9fRlBSU19fCisJY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgIC8qIHVuZm9ydHVuYXRlbHkgZmxvYXQgdmFsdWVzIGFyZSBzdG9yZWQgYXMgZG91YmxlcworCSAgICogaW4gdGhlIGZmaV9jbG9zdXJlX1NZU1YgY29kZSAoc2luY2Ugd2UgZG9uJ3QgY2hlY2sKKwkgICAqIHRoZSB0eXBlIGluIHRoYXQgcm91dGluZSkuCisJICAgKi8KKworCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCisKKwkgIGlmIChuZiA8IDgpCisJICAgIHsKKwkgICAgICBkb3VibGUgdGVtcCA9IHBmci0+ZDsKKwkgICAgICBwZnItPmYgPSAoZmxvYXQpIHRlbXA7CisJICAgICAgYXZhbHVlW2ldID0gcGZyOworCSAgICAgIG5mKys7CisJICAgICAgcGZyKys7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIEZJWE1FPyBoZXJlIHdlIGFyZSByZWFsbHkgY2hhbmdpbmcgdGhlIHZhbHVlcworCSAgICAgICAqIHN0b3JlZCBpbiB0aGUgb3JpZ2luYWwgY2FsbGluZyByb3V0aW5lcyBvdXRnb2luZworCSAgICAgICAqIHBhcmFtZXRlciBzdGFjay4gIFRoaXMgaXMgcHJvYmFibHkgYSByZWFsbHkKKwkgICAgICAgKiBuYXVnaHR5IHRoaW5nIHRvIGRvIGJ1dC4uLgorCSAgICAgICAqLworCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKKwkgICAgICBwc3QgKz0gMTsKKwkgICAgfQorCSAgYnJlYWs7CisKKwljYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgIC8qIE9uIHRoZSBvdXRnb2luZyBzdGFjayBhbGwgdmFsdWVzIGFyZSBhbGlnbmVkIHRvIDggKi8KKwkgIC8qIHRoZXJlIGFyZSA4IDY0Yml0IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAqLworCisJICBpZiAobmYgPCA4KQorCSAgICB7CisJICAgICAgYXZhbHVlW2ldID0gcGZyOworCSAgICAgIG5mKys7CisJICAgICAgcGZyKys7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmICgoKGxvbmcpIHBzdCkgJiA0KQorCQlwc3QrKzsKKwkgICAgICBhdmFsdWVbaV0gPSBwc3Q7CisJICAgICAgcHN0ICs9IDI7CisJICAgIH0KKwkgIGJyZWFrOworCisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICBpZiAobmYgPCA3KQorCSAgICB7CisJICAgICAgYXZhbHVlW2ldID0gcGZyOworCSAgICAgIHBmciArPSAyOworCSAgICAgIG5mICs9IDI7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmICgoKGxvbmcpIHBzdCkgJiA0KQorCQlwc3QrKzsKKwkgICAgICBhdmFsdWVbaV0gPSBwc3Q7CisJICAgICAgcHN0ICs9IDQ7CisJICAgICAgbmYgPSA4OworCSAgICB9CisJICBicmVhazsKKyNlbmRpZgorI2VuZGlmIC8qIGhhdmUgRlBSUyAqLworCisJY2FzZSBGRklfVFlQRV9VSU5UMTI4OgorCQkvKgorCQkgKiBUZXN0IGlmIGZvciB0aGUgd2hvbGUgbG9uZyBkb3VibGUsIDQgZ3BycyBhcmUgYXZhaWxhYmxlLgorCQkgKiBvdGhlcndpc2UgdGhlIHN0dWZmIGVuZHMgdXAgb24gdGhlIHN0YWNrLgorCQkgKi8KKwkJaWYgKG5nIDwgNSkgeworCQkJYXZhbHVlW2ldID0gcGdyOworCQkJcGdyICs9IDQ7CisJCQluZyArPSA0OworCQl9IGVsc2UgeworCQkJYXZhbHVlW2ldID0gcHN0OworCQkJcHN0ICs9IDQ7CisJCQluZyA9IDgrNDsKKwkJfQorCQlicmVhazsKKwogCWNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJY2FzZSBGRklfVFlQRV9VSU5UODoKIAkgIC8qIHRoZXJlIGFyZSA4IGdwciByZWdpc3RlcnMgdXNlZCB0byBwYXNzIHZhbHVlcyAqLwpAQCAtMTA4Niw3ICsxMjM5LDYgQEAKIAljYXNlIEZGSV9UWVBFX1NJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1VJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6Ci0Jc29mdF9mbG9hdF9jbG9zdXJlOgogCSAgLyogdGhlcmUgYXJlIDggZ3ByIHJlZ2lzdGVycyB1c2VkIHRvIHBhc3MgdmFsdWVzICovCiAJICBpZiAobmcgPCA4KQogCSAgICB7CkBAIC0xMTAyLDkgKzEyNTQsNiBAQAogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWRvX3N0cnVjdDoKLSNlbmRpZgogCSAgLyogU3RydWN0cyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4gVGhlIGFkZHJlc3Mgd2lsbCBhcHBlYXIgaW4gYQogCSAgICAgZ3ByIGlmIGl0IGlzIG9uZSBvZiB0aGUgZmlyc3QgOCBhcmd1bWVudHMuICAqLwogCSAgaWYgKG5nIDwgOCkKQEAgLTExMjIsNyArMTI3MSw2IEBACiAKIAljYXNlIEZGSV9UWVBFX1NJTlQ2NDoKIAljYXNlIEZGSV9UWVBFX1VJTlQ2NDoKLQlzb2Z0X2RvdWJsZV9jbG9zdXJlOgogCSAgLyogcGFzc2luZyBsb25nIGxvbmcgaW50cyBhcmUgY29tcGxleCwgdGhleSBtdXN0CiAJICAgKiBiZSBwYXNzZWQgaW4gc3VpdGFibGUgcmVnaXN0ZXIgcGFpcnMgc3VjaCBhcwogCSAgICogKHIzLHI0KSBvciAocjUscjYpIG9yIChyNixyNyksIG9yIChyNyxyOCkgb3IgKHI5LHIxMCkKQEAgLTExNTQsOTkgKzEzMDIsOCBAQAogCSAgICB9CiAJICBicmVhazsKIAotCWNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0JICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGZsb2F0cyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQzMi4gICovCi0JICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gc29mdF9mbG9hdF9jbG9zdXJlOwotCSAgLyogdW5mb3J0dW5hdGVseSBmbG9hdCB2YWx1ZXMgYXJlIHN0b3JlZCBhcyBkb3VibGVzCi0JICAgKiBpbiB0aGUgZmZpX2Nsb3N1cmVfU1lTViBjb2RlIChzaW5jZSB3ZSBkb24ndCBjaGVjawotCSAgICogdGhlIHR5cGUgaW4gdGhhdCByb3V0aW5lKS4KLQkgICAqLwotCi0JICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KLQotCSAgaWYgKG5mIDwgOCkKLQkgICAgewotCSAgICAgIHRlbXAgPSBwZnItPmQ7Ci0JICAgICAgcGZyLT5mID0gKGZsb2F0KSB0ZW1wOwotCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKLQkgICAgICBuZisrOwotCSAgICAgIHBmcisrOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICAvKiBGSVhNRT8gaGVyZSB3ZSBhcmUgcmVhbGx5IGNoYW5naW5nIHRoZSB2YWx1ZXMKLQkgICAgICAgKiBzdG9yZWQgaW4gdGhlIG9yaWdpbmFsIGNhbGxpbmcgcm91dGluZXMgb3V0Z29pbmcKLQkgICAgICAgKiBwYXJhbWV0ZXIgc3RhY2suICBUaGlzIGlzIHByb2JhYmx5IGEgcmVhbGx5Ci0JICAgICAgICogbmF1Z2h0eSB0aGluZyB0byBkbyBidXQuLi4KLQkgICAgICAgKi8KLQkgICAgICBhdmFsdWVbaV0gPSBwc3Q7Ci0JICAgICAgcHN0ICs9IDE7Ci0JICAgIH0KLQkgIGJyZWFrOwotCi0JY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0JICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UNjQuICAqLwotCSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZG91YmxlX2Nsb3N1cmU7Ci0JICAvKiBPbiB0aGUgb3V0Z29pbmcgc3RhY2sgYWxsIHZhbHVlcyBhcmUgYWxpZ25lZCB0byA4ICovCi0JICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KLQotCSAgaWYgKG5mIDwgOCkKLQkgICAgewotCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKLQkgICAgICBuZisrOwotCSAgICAgIHBmcisrOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKLQkJcHN0Kys7Ci0JICAgICAgYXZhbHVlW2ldID0gcHN0OwotCSAgICAgIHBzdCArPSAyOwotCSAgICB9Ci0JICBicmVhazsKLQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBkb19zdHJ1Y3Q7Ci0JICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIHsgLyogVGVzdCBpZiBmb3IgdGhlIHdob2xlIGxvbmcgZG91YmxlLCA0IGdwcnMgYXJlIGF2YWlsYWJsZS4KLQkJIG90aGVyd2lzZSB0aGUgc3R1ZmYgZW5kcyB1cCBvbiB0aGUgc3RhY2suICAqLwotCSAgICAgIGlmIChuZyA8IDUpCi0JCXsKLQkJICBhdmFsdWVbaV0gPSBwZ3I7Ci0JCSAgcGdyICs9IDQ7Ci0JCSAgbmcgKz0gNDsKLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkgIGF2YWx1ZVtpXSA9IHBzdDsKLQkJICBwc3QgKz0gNDsKLQkJICBuZyA9IDg7Ci0JCX0KLQkgICAgICBicmVhazsKLQkgICAgfQotCSAgaWYgKG5mIDwgNykKLQkgICAgewotCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKLQkgICAgICBwZnIgKz0gMjsKLQkgICAgICBuZiArPSAyOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKLQkJcHN0Kys7Ci0JICAgICAgYXZhbHVlW2ldID0gcHN0OwotCSAgICAgIHBzdCArPSA0OwotCSAgICAgIG5mID0gODsKLQkgICAgfQotCSAgYnJlYWs7Ci0jZW5kaWYKLQogCWRlZmF1bHQ6Ci0JICBGRklfQVNTRVJUICgwKTsKKwkJRkZJX0FTU0VSVCAoMCk7CiAJfQogCiAgICAgICBpKys7CkBAIC0xMjYzLDM5ICsxMzIwLDkgQEAKICAgICAgYWxyZWFkeSB1c2VkIGFuZCB3ZSBuZXZlciBoYXZlIGEgc3RydWN0IHdpdGggc2l6ZSB6ZXJvLiBUaGF0IGlzIHRoZSByZWFzb24KICAgICAgZm9yIHRoZSBzdWJ0cmFjdGlvbiBvZiAxLiBTZWUgdGhlIGNvbW1lbnQgaW4gZmZpdGFyZ2V0LmggYWJvdXQgb3JkZXJpbmcuCiAgICovCi0gIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTViAmJiBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgJiYgc2l6ZSA8PSA4KQorICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YgJiYgcnR5cGVudW0gPT0gRkZJX1RZUEVfU1RSVUNUICYmIHNpemUgPD0gOCkKICAgICByZXR1cm4gKEZGSV9TWVNWX1RZUEVfU01BTExfU1RSVUNUIC0gMSkgKyBzaXplOwotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gIGVsc2UgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotCSAgICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSAgICByZXR1cm4gRkZJX1RZUEVfU1RSVUNUOwotI2VuZGlmCi0gIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFuZCBkb3VibGVzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyCi0gICAgIHJlc3BlY3RpdmxleSBVSU5UNjQuICAqLwotICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgewotICAgICAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQotCXsKLQljYXNlIEZGSV9UWVBFX0ZMT0FUOgotCSAgcmV0dXJuIEZGSV9UWVBFX1VJTlQzMjsKLQkgIGJyZWFrOwotCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgotCSAgcmV0dXJuIEZGSV9UWVBFX1VJTlQ2NDsKLQkgIGJyZWFrOwotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgcmV0dXJuIEZGSV9UWVBFX1VJTlQxMjg7Ci0JICBicmVhazsKLSNlbmRpZgotCWRlZmF1bHQ6Ci0JICByZXR1cm4gY2lmLT5ydHlwZS0+dHlwZTsKLQl9Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIGNpZi0+cnR5cGUtPnR5cGU7Ci0gICAgfQorICByZXR1cm4gcnR5cGVudW07CiB9CiAKIGludCBGRklfSElEREVOIGZmaV9jbG9zdXJlX2hlbHBlcl9MSU5VWDY0IChmZmlfY2xvc3VyZSAqLCB2b2lkICosCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jCmluZGV4IGQ4NGYxYzMuLmRkODk3ZjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jCkBAIC0zLDcgKzMsNyBAQAogCiAgICBDb3B5cmlnaHQgKEMpIDE5OTggR2VvZmZyZXkgS2VhdGluZwogICAgQ29weXJpZ2h0IChDKSAyMDAxIEpvaG4gSG9ybmt2aXN0Ci0gICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIEZGSSBzdXBwb3J0IGZvciBEYXJ3aW4gYW5kIEFJWC4KICAgIApAQCAtMzUsMTEgKzM1LDE3IEBACiBleHRlcm4gdm9pZCBmZmlfY2xvc3VyZV9BU00gKHZvaWQpOwogCiBlbnVtIHsKLSAgLyogVGhlIGFzc2VtYmx5IGRlcGVuZHMgb24gdGhlc2UgZXhhY3QgZmxhZ3MuICAqLwotICBGTEFHX1JFVFVSTlNfTk9USElORyAgPSAxIDw8ICgzMS0zMCksIC8qIFRoZXNlIGdvIGluIGNyNyAgKi8KLSAgRkxBR19SRVRVUk5TX0ZQICAgICAgID0gMSA8PCAoMzEtMjkpLAotICBGTEFHX1JFVFVSTlNfNjRCSVRTICAgPSAxIDw8ICgzMS0yOCksCi0gIEZMQUdfUkVUVVJOU18xMjhCSVRTICA9IDEgPDwgKDMxLTMxKSwKKyAgLyogVGhlIGFzc2VtYmx5IGRlcGVuZHMgb24gdGhlc2UgZXhhY3QgZmxhZ3MuICAKKyAgICAgRm9yIERhcndpbjY0ICh3aGVuIEZMQUdfUkVUVVJOU19TVFJVQ1QgaXMgc2V0KToKKyAgICAgICBGTEFHX1JFVFVSTlNfRlAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0cnVjdHVyZSBlbWJlZHMgRlAgZGF0YS4KKyAgICAgICBGTEFHX1JFVFVSTlNfMTI4QklUUyBzaWduYWxzIGEgc3BlY2lhbCBzdHJ1Y3Qgc2l6ZSB0aGF0IGlzIG5vdAorICAgICAgIGV4cGFuZGVkIGZvciBmbG9hdCBjb250ZW50LiAgKi8KKyAgRkxBR19SRVRVUk5TXzEyOEJJVFMJPSAxIDw8ICgzMS0zMSksIC8qIFRoZXNlIGdvIGluIGNyNyAgKi8KKyAgRkxBR19SRVRVUk5TX05PVEhJTkcJPSAxIDw8ICgzMS0zMCksCisgIEZMQUdfUkVUVVJOU19GUAk9IDEgPDwgKDMxLTI5KSwKKyAgRkxBR19SRVRVUk5TXzY0QklUUwk9IDEgPDwgKDMxLTI4KSwKKworICBGTEFHX1JFVFVSTlNfU1RSVUNUCT0gMSA8PCAoMzEtMjcpLCAvKiBUaGlzIGdvZXMgaW4gY3I2ICAqLwogCiAgIEZMQUdfQVJHX05FRURTX0NPUFkgICA9IDEgPDwgKDMxLSA3KSwKICAgRkxBR19GUF9BUkdVTUVOVFMgICAgID0gMSA8PCAoMzEtIDYpLCAvKiBjcjEuZXE7IHNwZWNpZmllZCBieSBBQkkgICovCkBAIC01MCw0MyArNTYsNjEgQEAKIC8qIEFib3V0IHRoZSBEQVJXSU4gQUJJLiAgKi8KIGVudW0gewogICBOVU1fR1BSX0FSR19SRUdJU1RFUlMgPSA4LAotICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAxMworICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAxMywKKyAgTElOS0FHRV9BUkVBX0dQUlMgPSA2CiB9OwotZW51bSB7IEFTTV9ORUVEU19SRUdJU1RFUlMgPSA0IH07CisKK2VudW0geyBBU01fTkVFRFNfUkVHSVNURVJTID0gNCB9OyAvKiByMjgtcjMxICovCiAKIC8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKICAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgorICAgCisgICBtMzIvbTY0CiAKICAgIFRoZSBzdGFjayBsYXlvdXQgd2Ugd2FudCBsb29rcyBsaWtlIHRoaXM6CiAKICAgIHwgICBSZXR1cm4gYWRkcmVzcyBmcm9tIGZmaV9jYWxsX0RBUldJTiAgICAgIHwJaGlnaGVyIGFkZHJlc3NlcwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICAgfCAgIFByZXZpb3VzIGJhY2tjaGFpbiBwb2ludGVyCTQJfAlzdGFjayBwb2ludGVyIGhlcmUKKyAgIHwgICBQcmV2aW91cyBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfAlzdGFjayBwb2ludGVyIGhlcmUKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw8KyA8PDwJb24gZW50cnkgdG8KLSAgIHwgICBTYXZlZCByMjgtcjMxCQkJNCo0CXwgfAlmZmlfY2FsbF9EQVJXSU4KKyAgIHwgICBBU01fTkVFRFNfUkVHSVNURVJTPXIyOC1yMzEgICA0Kig0LzgpCXwgfAlmZmlfY2FsbF9EQVJXSU4KICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAotICAgfCAgIFBhcmFtZXRlcnMgICAgICAgICAgICAgKGF0IGxlYXN0IDgqND0zMikgfCB8CisgICB8ICAgV2hlbiB3ZSBoYXZlIGFueSBGUCBhY3Rpdml0eS4uLiB0aGUJfCB8CisgICB8ICAgRlBScyBvY2N1cHkgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIHNsb3RzCXwgfAorICAgfCAgIGhlcmUgZnAxMyAuLiBmcDEgZnJvbSBoaWdoIHRvIGxvdyBhZGRyLgl8IHwKKyAgIH4JCQkJCQl+IH4KKyAgIHwgICBQYXJhbWV0ZXJzICAgICAgKGF0IGxlYXN0IDgqNC84PTMyLzY0KQl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKLSAgIHwgICBTcGFjZSBmb3IgR1BSMiAgICAgICAgICAgICAgICAgICA0ICAgICAgIHwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlzdGFjawl8Ci0gICB8ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIDIqNCAgICAgICB8IHwJZ3Jvd3MJfAorICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQvOAl8IHwJZ3Jvd3MJfAogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWRvd24JVgotICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNAl8IHwKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQvOAl8IHwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlsb3dlciBhZGRyZXNzZXMKLSAgIHwgICBTYXZlZCBDUiAgICAgICAgICAgICAgICAgICAgICAgICA0ICAgICAgIHwgfAorICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfCAgICAgc3RhY2sgcG9pbnRlciBoZXJlCi0gICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0CXwtLwlkdXJpbmcKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8JZHVyaW5nCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18ICAgPDw8CWZmaV9jYWxsX0RBUldJTgogCiAgICAqLwogCisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorc3RhdGljIHZvaWQKK2RhcndpbjY0X3Bhc3Nfc3RydWN0X2J5X3ZhbHVlIAorICAoZmZpX3R5cGUgKiwgY2hhciAqLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgZG91YmxlICoqLCB1bnNpZ25lZCBsb25nICoqKTsKKyNlbmRpZgorCisvKiBUaGlzIGRlcGVuZHMgb24gR1BSX1NJWkUgPSBzaXplb2YgKHVuc2lnbmVkIGxvbmcpICovCisKIHZvaWQKIGZmaV9wcmVwX2FyZ3MgKGV4dGVuZGVkX2NpZiAqZWNpZiwgdW5zaWduZWQgbG9uZyAqY29uc3Qgc3RhY2spCiB7CiAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzID0gZWNpZi0+Y2lmLT5ieXRlczsKICAgY29uc3QgdW5zaWduZWQgZmxhZ3MgPSBlY2lmLT5jaWYtPmZsYWdzOwogICBjb25zdCB1bnNpZ25lZCBuYXJncyA9IGVjaWYtPmNpZi0+bmFyZ3M7CisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkgCiAgIGNvbnN0IGZmaV9hYmkgYWJpID0gZWNpZi0+Y2lmLT5hYmk7CisjZW5kaWYKIAogICAvKiAnc3RhY2t0b3AnIHBvaW50cyBhdCB0aGUgcHJldmlvdXMgYmFja2NoYWluIHBvaW50ZXIuICAqLwogICB1bnNpZ25lZCBsb25nICpjb25zdCBzdGFja3RvcCA9IHN0YWNrICsgKGJ5dGVzIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKQEAgLTk0LDE4ICsxMTgsMTkgQEAKICAgLyogJ2Zwcl9iYXNlJyBwb2ludHMgYXQgdGhlIHNwYWNlIGZvciBmcHIxLCBhbmQgZ3Jvd3MgdXB3YXJkcyBhcwogICAgICB3ZSB1c2UgRlBSIHJlZ2lzdGVycy4gICovCiAgIGRvdWJsZSAqZnByX2Jhc2UgPSAoZG91YmxlICopIChzdGFja3RvcCAtIEFTTV9ORUVEU19SRUdJU1RFUlMpIC0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTOwotICBpbnQgZnBhcmdfY291bnQgPSAwOwotCisgIGludCBncF9jb3VudCA9IDAsIGZwYXJnX2NvdW50ID0gMDsKIAogICAvKiAnbmV4dF9hcmcnIGdyb3dzIHVwIGFzIHdlIHB1dCBwYXJhbWV0ZXJzIGluIGl0LiAgKi8KLSAgdW5zaWduZWQgbG9uZyAqbmV4dF9hcmcgPSBzdGFjayArIDY7IC8qIDYgcmVzZXJ2ZWQgcG9zaXRpb25zLiAgKi8KKyAgdW5zaWduZWQgbG9uZyAqbmV4dF9hcmcgPSBzdGFjayArIExJTktBR0VfQVJFQV9HUFJTOyAvKiA2IHJlc2VydmVkIHBvc2l0aW9ucy4gICovCiAKICAgaW50IGk7CiAgIGRvdWJsZSBkb3VibGVfdG1wOwogICB2b2lkICoqcF9hcmd2ID0gZWNpZi0+YXZhbHVlOwogICB1bnNpZ25lZCBsb25nIGdwcnZhbHVlOwogICBmZmlfdHlwZSoqIHB0ciA9IGVjaWYtPmNpZi0+YXJnX3R5cGVzOworI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpIAogICBjaGFyICpkZXN0X2NweTsKKyNlbmRpZgogICB1bnNpZ25lZCBzaXplX2FsID0gMDsKIAogICAvKiBDaGVjayB0aGF0IGV2ZXJ5dGhpbmcgc3RhcnRzIGFsaWduZWQgcHJvcGVybHkuICAqLwpAQCAtMTMwLDI1ICsxNTUsMzAgQEAKIAkgICB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmctcG9pbnQgcGFyYW1ldGVyIGFyZSBza2lwcGVkLiAgKi8KIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCSAgZG91YmxlX3RtcCA9ICooZmxvYXQgKikgKnBfYXJndjsKLQkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCi0JICAgICooZG91YmxlICopbmV4dF9hcmcgPSBkb3VibGVfdG1wOwotCSAgZWxzZQorCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTikKKwkgICooZmxvYXQgKiluZXh0X2FyZyA9ICooZmxvYXQgKikgKnBfYXJndjsKKyNlbHNlCisJICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKKyNlbmRpZgogCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CiAJICBmcGFyZ19jb3VudCsrOwogCSAgRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICBkb3VibGVfdG1wID0gKihkb3VibGUgKikgKnBfYXJndjsKLQkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCi0JICAgICooZG91YmxlICopbmV4dF9hcmcgPSBkb3VibGVfdG1wOwotCSAgZWxzZQorCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7CisJICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKICNpZmRlZiBQT1dFUlBDNjQKIAkgIG5leHRfYXJnKys7CisJICBncF9jb3VudCsrOwogI2Vsc2UKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOwogI2VuZGlmCiAJICBmcGFyZ19jb3VudCsrOwogCSAgRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKQEAgLTE1NywzMCArMTg3LDQxIEBACiAjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKIAogCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLSNpZmRlZiBQT1dFUlBDNjQKKyMgIGlmIGRlZmluZWQoUE9XRVJQQzY0KSAmJiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgLyogPz8/IFRoaXMgd2lsbCBleGNlZWQgdGhlIHJlZ3MgY291bnQgd2hlbiB0aGUgdmFsdWUgc3RhcnRzIGF0IGZwMTMKKwkgICAgIGFuZCBpdCB3aWxsIG5vdCBwdXQgdGhlIGV4dHJhIGJpdCBvbiB0aGUgc3RhY2suICAqLwogCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqKGxvbmcgZG91YmxlICopIGZwcl9iYXNlKysgPSAqKGxvbmcgZG91YmxlICopICpwX2FyZ3Y7CiAJICBlbHNlCiAJICAgICoobG9uZyBkb3VibGUgKikgbmV4dF9hcmcgPSAqKGxvbmcgZG91YmxlICopICpwX2FyZ3Y7CiAJICBuZXh0X2FyZyArPSAyOwogCSAgZnBhcmdfY291bnQgKz0gMjsKLSNlbHNlCisjICBlbHNlCiAJICBkb3VibGVfdG1wID0gKChkb3VibGUgKikgKnBfYXJndilbMF07CiAJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICpmcHJfYmFzZSsrID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKLQkgICAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworCSAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworIyAgICBpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKKyMgICAgZWxzZQogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CisjICAgIGVuZGlmCiAJICBmcGFyZ19jb3VudCsrOwotCiAJICBkb3VibGVfdG1wID0gKChkb3VibGUgKikgKnBfYXJndilbMV07CiAJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICpmcHJfYmFzZSsrID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKLQkgICAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworCSAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworIyAgICBpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKKyMgICAgZWxzZQogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CisjICAgIGVuZGlmCiAJICBmcGFyZ19jb3VudCsrOwotI2VuZGlmCisjICBlbmRpZgogCSAgRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKIAkgIGJyZWFrOwogI2VuZGlmCkBAIC0xOTIsNiArMjMzLDcgQEAKICNlbHNlCiAJICAqKGxvbmcgbG9uZyAqKSBuZXh0X2FyZyA9ICoobG9uZyBsb25nICopICpwX2FyZ3Y7CiAJICBuZXh0X2FyZyArPSAyOworCSAgZ3BfY291bnQgKz0gMjsKICNlbmRpZgogCSAgYnJlYWs7CiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgpAQCAtMjExLDMyICsyNTMsMzUgQEAKIAkgIGdvdG8gcHV0Z3ByOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWZkZWYgUE9XRVJQQzY0Ci0JICBkZXN0X2NweSA9IChjaGFyICopIG5leHRfYXJnOwogCSAgc2l6ZV9hbCA9ICgqcHRyKS0+c2l6ZTsKLQkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IDMpCi0JICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOwotCSAgaWYgKHNpemVfYWwgPCAzICYmIGFiaSA9PSBGRklfREFSV0lOKQotCSAgICBkZXN0X2NweSArPSA0IC0gc2l6ZV9hbDsKLQotCSAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgKGNoYXIgKikgKnBfYXJndiwgc2l6ZV9hbCk7Ci0JICBuZXh0X2FyZyArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBuZXh0X2FyZyA9ICh1bnNpZ25lZCBsb25nICopQUxJR04oKGNoYXIgKiluZXh0X2FyZywgKCpwdHIpLT5hbGlnbm1lbnQpOworCSAgZGFyd2luNjRfcGFzc19zdHJ1Y3RfYnlfdmFsdWUgKCpwdHIsIChjaGFyICopICpwX2FyZ3YsIAorCQkJCQkgKHVuc2lnbmVkKSBzaXplX2FsLAorCQkJCQkgKHVuc2lnbmVkIGludCAqKSAmZnBhcmdfY291bnQsCisJCQkJCSAmZnByX2Jhc2UsICZuZXh0X2FyZyk7CiAjZWxzZQogCSAgZGVzdF9jcHkgPSAoY2hhciAqKSBuZXh0X2FyZzsKIAorCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGluY2x1ZGUgZW5vdWdoCisJICAgICBwYWRkaW5nIGluIHRoZSBzdHJ1Y3Qgc2l6ZSB0byBhbGlnbiBpdCB0byBkb3VibGUtd29yZC4gICovCisJICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOworCisjICBpZiBkZWZpbmVkKFBPV0VSUEM2NCkgCisJICBGRklfQVNTRVJUIChhYmkgIT0gRkZJX0RBUldJTik7CisJICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCAoY2hhciAqKSAqcF9hcmd2LCBzaXplX2FsKTsKKwkgIG5leHRfYXJnICs9IChzaXplX2FsICsgNykgLyA4OworIyAgZWxzZQogCSAgLyogU3RydWN0dXJlcyB0aGF0IG1hdGNoIHRoZSBiYXNpYyBtb2RlcyAoUUkgMSBieXRlLCBISSAyIGJ5dGVzLAogCSAgICAgU0kgNCBieXRlcykgYXJlIGFsaWduZWQgYXMgaWYgdGhleSB3ZXJlIHRob3NlIG1vZGVzLgogCSAgICAgU3RydWN0dXJlcyB3aXRoIDMgYnl0ZSBpbiBzaXplIGFyZSBwYWRkZWQgdXB3YXJkcy4gICovCi0JICBzaXplX2FsID0gKCpwdHIpLT5zaXplOwotCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGFsaWduCi0JICAgICB0aGUgc3RydWN0IHRvIGRvdWJsZS13b3JkLiAgKi8KLQkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKLQkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7CiAJICBpZiAoc2l6ZV9hbCA8IDMgJiYgYWJpID09IEZGSV9EQVJXSU4pCiAJICAgIGRlc3RfY3B5ICs9IDQgLSBzaXplX2FsOwogCiAJICBtZW1jcHkoKGNoYXIgKikgZGVzdF9jcHksIChjaGFyICopICpwX2FyZ3YsIHNpemVfYWwpOwogCSAgbmV4dF9hcmcgKz0gKHNpemVfYWwgKyAzKSAvIDQ7CisjICBlbmRpZgogI2VuZGlmCiAJICBicmVhazsKIApAQCAtMjQ5LDYgKzI5NCw3IEBACiAJICBncHJ2YWx1ZSA9ICoodW5zaWduZWQgaW50ICopICpwX2FyZ3Y7CiAJcHV0Z3ByOgogCSAgKm5leHRfYXJnKysgPSBncHJ2YWx1ZTsKKwkgIGdwX2NvdW50Kys7CiAJICBicmVhazsKIAlkZWZhdWx0OgogCSAgYnJlYWs7CkBAIC0yNjIsOCArMzA4LDI2OSBAQAogICAvL0ZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHXzRfR1BSX0FSR1VNRU5UUyB8fCBpbnRhcmdfY291bnQgPD0gNCk7CiB9CiAKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisKKy8qIFNlZSBpZiB3ZSBjYW4gcHV0IHNvbWUgb2YgdGhlIHN0cnVjdCBpbnRvIGZwcnMuCisgICBUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBzdHJ1Y3R1cmVzIG9mIHNpemUgMTYgYnl0ZXMsIHNpbmNlIHRoZXNlIGFyZSBub3QKKyAgIGJyb2tlbiBvdXQgdGhpcyB3YXkuICAqLworc3RhdGljIHZvaWQKK2RhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKGZmaV90eXBlICpzLCB1bnNpZ25lZCAqbmZwcikKK3sKKyAgaW50IGk7CisKKyAgRkZJX0FTU0VSVCAocy0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisKKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKHAsIG5mcHIpOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgKCpuZnByKSArPSAyOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgfQorfQorCitzdGF0aWMgaW50CitkYXJ3aW42NF9zdHJ1Y3Rfc2l6ZV9leGNlZWRzX2dwcnNfcCAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgdW5zaWduZWQgKm5mcHIpCit7CisgIHVuc2lnbmVkIHN0cnVjdF9vZmZzZXQ9MCwgaTsKKworICBmb3IgKGkgPSAwOyBzLT5lbGVtZW50c1tpXSAhPSBOVUxMOyBpKyspCisgICAgeworICAgICAgY2hhciAqaXRlbV9iYXNlOworICAgICAgZmZpX3R5cGUgKnAgPSBzLT5lbGVtZW50c1tpXTsKKyAgICAgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoaXMgaXRlbSAoMCBmb3IgdGhlIGZpcnN0IG9uZSkuICAqLworICAgICAgaWYgKGkgPiAwKQorICAgICAgICBzdHJ1Y3Rfb2Zmc2V0ID0gQUxJR04oc3RydWN0X29mZnNldCwgcC0+YWxpZ25tZW50KTsKKworICAgICAgaXRlbV9iYXNlID0gc3JjICsgc3RydWN0X29mZnNldDsKKworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBpZiAoZGFyd2luNjRfc3RydWN0X3NpemVfZXhjZWVkc19ncHJzX3AgKHAsIGl0ZW1fYmFzZSwgbmZwcikpCisJICAgICAgcmV0dXJuIDE7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgICBpZiAoKm5mcHIgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHJldHVybiAxOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGl0ZW1fYmFzZSArPSA4OworCSAgLyogRkFMTCBUSFJPVUdIICovCisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgaWYgKCpuZnByID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICByZXR1cm4gMTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgIGlmICgqbmZwciA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgcmV0dXJuIDE7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICAvKiBJZiB3ZSB0cnkgYW5kIHBsYWNlIGFueSBpdGVtLCB0aGF0IGlzIG5vbi1mbG9hdCwgb25jZSB3ZSd2ZQorCSAgICAgICBleGNlZWRlZCB0aGUgOCBHUFIgbWFyaywgdGhlbiB3ZSBjYW4ndCBmaXQgdGhlIHN0cnVjdC4gICovCisJICAgIGlmICgodW5zaWduZWQgbG9uZylpdGVtX2Jhc2UgPj0gOCo4KSAKKwkgICAgICByZXR1cm4gMTsKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICAgIC8qIG5vdyBjb3VudCB0aGUgc2l6ZSBvZiB3aGF0IHdlIGp1c3QgdXNlZC4gICovCisgICAgICBzdHJ1Y3Rfb2Zmc2V0ICs9IHAtPnNpemU7CisgICAgfQorICByZXR1cm4gMDsKK30KKworLyogQ2FuIHRoaXMgc3RydWN0IGJlIHJldHVybmVkIGJ5IHZhbHVlPyAgKi8KK2ludCAKK2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCAoZmZpX3R5cGUgKnMpCit7CisgIHVuc2lnbmVkIG5mcCA9IDA7CisKKyAgRkZJX0FTU0VSVCAocyAmJiBzLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCk7CisgIAorICAvKiBUaGUgbGFyZ2VzdCBzdHJ1Y3R1cmUgd2UgY2FuIHJldHVybiBpcyA4bG9uZyArIDEzIGRvdWJsZXMuICAqLworICBpZiAocy0+c2l6ZSA+IDE2OCkKKyAgICByZXR1cm4gMDsKKyAgCisgIC8qIFdlIGNhbid0IHBhc3MgbW9yZSB0aGFuIDEzIGZsb2F0cy4gICovCisgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKHMsICZuZnApOworICBpZiAobmZwID4gMTMpCisgICAgcmV0dXJuIDA7CisgIAorICAvKiBJZiB0aGVyZSBhcmUgbm90IHRvbyBtYW55IGZsb2F0cywgYW5kIHRoZSBzdHJ1Y3QgaXMKKyAgICAgc21hbGwgZW5vdWdoIHRvIGFjY29tbW9kYXRlIGluIHRoZSBHUFJzLCB0aGVuIGl0IG11c3QgYmUgT0suICAqLworICBpZiAocy0+c2l6ZSA8PSA2NCkKKyAgICByZXR1cm4gMTsKKyAgCisgIC8qIFdlbGwsIHdlIGhhdmUgdG8gbG9vayBoYXJkZXIuICAqLworICBuZnAgPSAwOworICBpZiAoZGFyd2luNjRfc3RydWN0X3NpemVfZXhjZWVkc19ncHJzX3AgKHMsIE5VTEwsICZuZnApKQorICAgIHJldHVybiAwOworICAKKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQKK2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgCisJCQkgICAgIHVuc2lnbmVkICpuZnByLCBkb3VibGUgKipmcHJzKQoreworICBpbnQgaTsKKyAgZG91YmxlICpmcHJfYmFzZSA9ICpmcHJzOworICB1bnNpZ25lZCBzdHJ1Y3Rfb2Zmc2V0ID0gMDsKKworICAvKiBXZSBkb24ndCBhc3N1bWUgYW55dGhpbmcgYWJvdXQgdGhlIGFsaWdubWVudCBvZiB0aGUgc291cmNlLiAgKi8KKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGNoYXIgKml0ZW1fYmFzZTsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGlzIGl0ZW0gKDAgZm9yIHRoZSBmaXJzdCBvbmUpLiAgKi8KKyAgICAgIGlmIChpID4gMCkKKyAgICAgICAgc3RydWN0X29mZnNldCA9IEFMSUdOKHN0cnVjdF9vZmZzZXQsIHAtPmFsaWdubWVudCk7CisgICAgICBpdGVtX2Jhc2UgPSBzcmMgKyBzdHJ1Y3Rfb2Zmc2V0OworCisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAocCwgaXRlbV9iYXNlLCBuZnByLAorCQkJCQkgICAmZnByX2Jhc2UpOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgaWYgKCpuZnByIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgICpmcHJfYmFzZSsrID0gKihkb3VibGUgKilpdGVtX2Jhc2U7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgaXRlbV9iYXNlICs9IDg7CisJICAvKiBGQUxMIFRIUk9VR0ggKi8KKwkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgICBpZiAoKm5mcHIgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgKmZwcl9iYXNlKysgPSAqKGRvdWJsZSAqKWl0ZW1fYmFzZTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgIGlmICgqbmZwciA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICAqZnByX2Jhc2UrKyA9IChkb3VibGUpICooZmxvYXQgKilpdGVtX2Jhc2U7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICBicmVhazsgICAgCisJfQorICAgICAgLyogbm93IGNvdW50IHRoZSBzaXplIG9mIHdoYXQgd2UganVzdCB1c2VkLiAgKi8KKyAgICAgIHN0cnVjdF9vZmZzZXQgKz0gcC0+c2l6ZTsKKyAgICB9CisgIC8qIFVwZGF0ZSB0aGUgc2NvcmVzLiAgKi8KKyAgKmZwcnMgPSBmcHJfYmFzZTsKK30KKworLyogRGFyd2luNjQgc3BlY2lhbCBydWxlcy4KKyAgIEJyZWFrIG91dCBhIHN0cnVjdCBpbnRvIHBhcmFtcyBhbmQgZmxvYXQgcmVnaXN0ZXJzLiAgKi8KK3N0YXRpYyB2b2lkCitkYXJ3aW42NF9wYXNzX3N0cnVjdF9ieV92YWx1ZSAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgdW5zaWduZWQgc2l6ZSwKKwkJCSAgICAgICB1bnNpZ25lZCAqbmZwciwgZG91YmxlICoqZnBycywgdW5zaWduZWQgbG9uZyAqKmFyZykKK3sKKyAgdW5zaWduZWQgbG9uZyAqbmV4dF9hcmcgPSAqYXJnOworICBjaGFyICpkZXN0X2NweSA9IChjaGFyICopbmV4dF9hcmc7CisKKyAgRkZJX0FTU0VSVCAocy0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisKKyAgaWYgKCFzaXplKQorICAgIHJldHVybjsKKworICAvKiBGaXJzdC4uLiBzcGVjaWFsIGNhc2VzLiAgKi8KKyAgaWYgKHNpemUgPCAzCisgICAgICB8fCAoc2l6ZSA9PSA0IAorCSAgJiYgcy0+ZWxlbWVudHNbMF0gCisJICAmJiBzLT5lbGVtZW50c1swXS0+dHlwZSAhPSBGRklfVFlQRV9GTE9BVCkpCisgICAgeworICAgICAgLyogTXVzdCBiZSBhdCBsZWFzdCBvbmUgR1BSLCBwYWRkaW5nIGlzIHVuc3BlY2lmaWVkIGluIHZhbHVlLCAKKwkgbGV0J3MgbWFrZSBpdCB6ZXJvLiAgKi8KKyAgICAgICpuZXh0X2FyZyA9IDBVTDsgCisgICAgICBkZXN0X2NweSArPSA4IC0gc2l6ZTsKKyAgICAgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIHNyYywgc2l6ZSk7CisgICAgICBuZXh0X2FyZysrOworICAgIH0KKyAgZWxzZSBpZiAoc2l6ZSA9PSAxNikKKyAgICB7CisgICAgICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCBzcmMsIHNpemUpOworICAgICAgbmV4dF9hcmcgKz0gMjsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBub3cgdGhlIGdlbmVyYWwgY2FzZSwgd2UgY29uc2lkZXIgZW1iZWRkZWQgZmxvYXRzLiAgKi8KKyAgICAgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIHNyYywgc2l6ZSk7CisgICAgICBkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKHMsIHNyYywgbmZwciwgZnBycyk7CisgICAgICBuZXh0X2FyZyArPSAoc2l6ZSs3KS84OworICAgIH0KKyAgICAKKyAgKmFyZyA9IG5leHRfYXJnOworfQorCitkb3VibGUgKgorZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0gKGZmaV90eXBlICpzLCBjaGFyICpkZXN0LCBkb3VibGUgKmZwcnMsIHVuc2lnbmVkICpuZikKK3sKKyAgaW50IGk7CisgIHVuc2lnbmVkIHN0cnVjdF9vZmZzZXQgPSAwOworCisgIC8qIFdlIGRvbid0IGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUgYWxpZ25tZW50IG9mIHRoZSBzb3VyY2UuICAqLworICBmb3IgKGkgPSAwOyBzLT5lbGVtZW50c1tpXSAhPSBOVUxMOyBpKyspCisgICAgeworICAgICAgY2hhciAqaXRlbV9iYXNlOworICAgICAgZmZpX3R5cGUgKnAgPSBzLT5lbGVtZW50c1tpXTsKKyAgICAgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoaXMgaXRlbSAoMCBmb3IgdGhlIGZpcnN0IG9uZSkuICAqLworICAgICAgaWYgKGkgPiAwKQorICAgICAgICBzdHJ1Y3Rfb2Zmc2V0ID0gQUxJR04oc3RydWN0X29mZnNldCwgcC0+YWxpZ25tZW50KTsKKyAgICAgIGl0ZW1fYmFzZSA9IGRlc3QgKyBzdHJ1Y3Rfb2Zmc2V0OworCisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGZwcnMgPSBkYXJ3aW42NF9zdHJ1Y3RfZmxvYXRzX3RvX21lbSAocCwgaXRlbV9iYXNlLCBmcHJzLCBuZik7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgICBpZiAoKm5mIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHsKKwkJKihkb3VibGUgKilpdGVtX2Jhc2UgPSAqZnBycysrIDsKKwkJKCpuZikgKz0gMTsKKwkgICAgICB9CisJICAgIGl0ZW1fYmFzZSArPSA4OworCSAgLyogRkFMTCBUSFJPVUdIICovCisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgaWYgKCpuZiA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICB7CisJCSooZG91YmxlICopaXRlbV9iYXNlID0gKmZwcnMrKyA7CisJCSgqbmYpICs9IDE7CisJICAgICAgfQorCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgIGlmICgqbmYgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgeworCQkqKGZsb2F0ICopaXRlbV9iYXNlID0gKGZsb2F0KSAqZnBycysrIDsKKwkJKCpuZikgKz0gMTsKKwkgICAgICB9CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICAgIC8qIG5vdyBjb3VudCB0aGUgc2l6ZSBvZiB3aGF0IHdlIGp1c3QgdXNlZC4gICovCisgICAgICBzdHJ1Y3Rfb2Zmc2V0ICs9IHAtPnNpemU7CisgICAgfQorICByZXR1cm4gZnByczsKK30KKworI2VuZGlmCisKIC8qIEFkanVzdCB0aGUgc2l6ZSBvZiBTIHRvIGJlIGNvcnJlY3QgZm9yIERhcndpbi4KLSAgIE9uIERhcndpbiwgdGhlIGZpcnN0IGZpZWxkIG9mIGEgc3RydWN0dXJlIGhhcyBuYXR1cmFsIGFsaWdubWVudC4gICovCisgICBPbiBEYXJ3aW4gbTMyLCB0aGUgZmlyc3QgZmllbGQgb2YgYSBzdHJ1Y3R1cmUgaGFzIG5hdHVyYWwgYWxpZ25tZW50LiAgCisgICBPbiBEYXJ3aW4gbTY0LCBhbGwgZmllbGRzIGhhdmUgbmF0dXJhbCBhbGlnbm1lbnQuICAqLwogCiBzdGF0aWMgdm9pZAogZGFyd2luX2FkanVzdF9hZ2dyZWdhdGVfc2l6ZXMgKGZmaV90eXBlICpzKQpAQCAtMjgwLDIyICs1ODcsMjkgQEAKICAgICAgIGludCBhbGlnbjsKICAgICAgIAogICAgICAgcCA9IHMtPmVsZW1lbnRzW2ldOwotICAgICAgZGFyd2luX2FkanVzdF9hZ2dyZWdhdGVfc2l6ZXMgKHApOwotICAgICAgaWYgKGkgPT0gMAotCSAgJiYgKHAtPnR5cGUgPT0gRkZJX1RZUEVfVUlOVDY0Ci0JICAgICAgfHwgcC0+dHlwZSA9PSBGRklfVFlQRV9TSU5UNjQKLQkgICAgICB8fCBwLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRQotCSAgICAgIHx8IHAtPmFsaWdubWVudCA9PSA4KSkKLQlhbGlnbiA9IDg7CisgICAgICBpZiAocC0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJZGFyd2luX2FkanVzdF9hZ2dyZWdhdGVfc2l6ZXMgKHApOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgICAgIC8qIE5hdHVyYWwgYWxpZ25tZW50IGZvciBhbGwgaXRlbXMuICAqLworICAgICAgYWxpZ24gPSBwLT5hbGlnbm1lbnQ7CisjZWxzZQorICAgICAgLyogTmF0cnVhbCBhbGlnbm1lbnQgZm9yIHRoZSBmaXJzdCBpdGVtLi4uICovCisgICAgICBpZiAoaSA9PSAwKQorCWFsaWduID0gcC0+YWxpZ25tZW50OwogICAgICAgZWxzZSBpZiAocC0+YWxpZ25tZW50ID09IDE2IHx8IHAtPmFsaWdubWVudCA8IDQpCisJLyogLi4gc3Vic2VxdWVudCBpdGVtcyB3aXRoIHZlY3RvciBvciBhbGlnbiA8IDQgaGF2ZSBuYXR1cmFsIGFsaWduLiAgKi8KIAlhbGlnbiA9IHAtPmFsaWdubWVudDsKICAgICAgIGVsc2UKKwkvKiAuLiBvciBhbGlnbiBpcyA0LiAgKi8KIAlhbGlnbiA9IDQ7CisjZW5kaWYKKyAgICAgIC8qIFBhZCwgaWYgbmVjZXNzYXJ5LCBiZWZvcmUgYWRkaW5nIHRoZSBjdXJyZW50IGl0ZW0uICAqLwogICAgICAgcy0+c2l6ZSA9IEFMSUdOKHMtPnNpemUsIGFsaWduKSArIHAtPnNpemU7CiAgICAgfQogICAKICAgcy0+c2l6ZSA9IEFMSUdOKHMtPnNpemUsIHMtPmFsaWdubWVudCk7CiAgIAorICAvKiBUaGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IG9uIG02NCwgYnV0IGhhcm1sZXNzLiAgKi8KICAgaWYgKHMtPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgfHwgcy0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfU0lOVDY0CiAgICAgICB8fCBzLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUKQEAgLTM0NCwxMCArNjU4LDEwIEBACiBmZmlfcHJlcF9jaWZfbWFjaGRlcCAoZmZpX2NpZiAqY2lmKQogewogICAvKiBBbGwgdGhpcyBpcyBmb3IgdGhlIERBUldJTiBBQkkuICAqLwotICBpbnQgaTsKKyAgdW5zaWduZWQgaTsKICAgZmZpX3R5cGUgKipwdHI7CiAgIHVuc2lnbmVkIGJ5dGVzOwotICBpbnQgZnBhcmdfY291bnQgPSAwLCBpbnRhcmdfY291bnQgPSAwOworICB1bnNpZ25lZCBmcGFyZ19jb3VudCA9IDAsIGludGFyZ19jb3VudCA9IDA7CiAgIHVuc2lnbmVkIGZsYWdzID0gMDsKICAgdW5zaWduZWQgc2l6ZV9hbCA9IDA7CiAKQEAgLTM3MiwxNiArNjg2LDI1IEBACiAgIC8qIFNwYWNlIGZvciB0aGUgZnJhbWUgcG9pbnRlciwgY2FsbGVlJ3MgTFIsIENSLCBldGMsIGFuZCBmb3IKICAgICAgdGhlIGFzbSdzIHRlbXAgcmVncy4gICovCiAKLSAgYnl0ZXMgPSAoNiArIEFTTV9ORUVEU19SRUdJU1RFUlMpICogc2l6ZW9mKGxvbmcpOworICBieXRlcyA9IChMSU5LQUdFX0FSRUFfR1BSUyArIEFTTV9ORUVEU19SRUdJU1RFUlMpICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwogCi0gIC8qIFJldHVybiB2YWx1ZSBoYW5kbGluZy4gIFRoZSBydWxlcyBhcmUgYXMgZm9sbG93czoKKyAgLyogUmV0dXJuIHZhbHVlIGhhbmRsaW5nLiAgCisgICAgVGhlIHJ1bGVzIG0zMiBhcmUgYXMgZm9sbG93czoKICAgICAgLSAzMi1iaXQgKG9yIGxlc3MpIGludGVnZXIgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBncHIzOwotICAgICAtIFN0cnVjdHVyZXMgb2Ygc2l6ZSA8PSA0IGJ5dGVzIGFsc28gcmV0dXJuZWQgaW4gZ3ByMzsKLSAgICAgLSA2NC1iaXQgaW50ZWdlciB2YWx1ZXMgYW5kIHN0cnVjdHVyZXMgYmV0d2VlbiA1IGFuZCA4IGJ5dGVzIGFyZSByZXR1cm5lZAotICAgICAgIGluIGdwcjMgYW5kIGdwcjQ7CisgICAgIC0gc3RydWN0dXJlcyBvZiBzaXplIDw9IDQgYnl0ZXMgYWxzbyByZXR1cm5lZCBpbiBncHIzOworICAgICAtIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcyBbPz8/IGFuZCBzdHJ1Y3R1cmVzIGJldHdlZW4gNSBhbmQgOCBieXRlc10gYXJlCisgICAgICAgcmV0dXJuZWQgaW4gZ3ByMyBhbmQgZ3ByNDsKICAgICAgLSBTaW5nbGUvZG91YmxlIEZQIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZnByMTsKICAgICAgLSBMb25nIGRvdWJsZSBGUCAoaWYgbm90IGVxdWl2YWxlbnQgdG8gZG91YmxlKSB2YWx1ZXMgYXJlIHJldHVybmVkIGluCiAgICAgICAgZnByMSBhbmQgZnByMjsKKyAgICAgbTY0OgorICAgICAtIDY0LWJpdCBvciBzbWFsbGVyIGludGVncmFsIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gR1BSMworICAgICAtIFNpbmdsZS9kb3VibGUgRlAgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBmcHIxOworICAgICAtIExvbmcgZG91YmxlIEZQIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZnByMSBhbmQgZnByMjsKKyAgICAgbTY0IFN0cnVjdHVyZXM6CisgICAgIC0gSWYgdGhlIHN0cnVjdHVyZSBjb3VsZCBiZSBhY2NvbW1vZGF0ZWQgaW4gcmVnaXN0ZXJzIHdlcmUgaXQgdG8gYmUgdGhlCisgICAgICAgZmlyc3QgYXJndW1lbnQgdG8gYSByb3V0aW5lLCB0aGVuIGl0IGlzIHJldHVybmVkIGluIHRob3NlIHJlZ2lzdGVycy4KKyAgICAgbTMyL202NCBzdHJ1Y3R1cmVzIG90aGVyd2lzZToKICAgICAgLSBMYXJnZXIgc3RydWN0dXJlcyB2YWx1ZXMgYXJlIGFsbG9jYXRlZCBzcGFjZSBhbmQgYSBwb2ludGVyIGlzIHBhc3NlZAogICAgICAgIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gICovCiAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKQEAgLTQxMCw5ICs3MzMsNDIgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAgICAgeworCS8qIENhbiB3ZSBmaXQgdGhlIHN0cnVjdCBpbnRvIHJlZ3M/ICAqLworCWlmIChkYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AgKGNpZi0+cnR5cGUpKQorCSAgeworCSAgICB1bnNpZ25lZCBuZnByID0gMDsKKwkgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NUUlVDVDsKKwkgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgIT0gMTYpCisJICAgICAgZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAoY2lmLT5ydHlwZSwgJm5mcHIpIDsKKwkgICAgZWxzZQorCSAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU18xMjhCSVRTOworCSAgICAvKiBXaWxsIGJlIDAgZm9yIDE2Ynl0ZSBzdHJ1Y3QuICAqLworCSAgICBpZiAobmZwcikKKwkgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfRlA7CisJICB9CisJZWxzZSAvKiBCeSByZWYuICovCisJICB7CisJICAgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKKwkgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CisJICAgIGludGFyZ19jb3VudCsrOworCSAgfQorICAgICAgfQorI2VsaWYgZGVmaW5lZChEQVJXSU5fUFBDKQorICAgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgPD0gNCkKKwlmbGFncyB8PSBGTEFHX1JFVFVSTlNfU1RSVUNUOworICAgICAgZWxzZSAvKiBlbHNlIGJ5IHJlZmVyZW5jZS4gICovCisJeworCSAgZmxhZ3MgfD0gRkxBR19SRVRWQUxfUkVGRVJFTkNFOworCSAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CisJICBpbnRhcmdfY291bnQrKzsKKwl9CisjZWxzZSAvKiBhc3N1bWUgd2UgcGFzcyBieSByZWYuICAqLwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRWQUxfUkVGRVJFTkNFOwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CiAgICAgICBpbnRhcmdfY291bnQrKzsKKyNlbmRpZgogICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRklfVFlQRV9WT0lEOgogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CkBAIC00MjUsNTcgKzc4MSw4MyBAQAogCiAgIC8qIFRoZSBmaXJzdCBOVU1fR1BSX0FSR19SRUdJU1RFUlMgd29yZHMgb2YgaW50ZWdlciBhcmd1bWVudHMsIGFuZCB0aGUKICAgICAgZmlyc3QgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIGZwIGFyZ3VtZW50cywgZ28gaW4gcmVnaXN0ZXJzOyB0aGUgcmVzdAotICAgICBnb2VzIG9uIHRoZSBzdGFjay4gIFN0cnVjdHVyZXMgYXJlIHBhc3NlZCBhcyBhIHBvaW50ZXIgdG8gYSBjb3B5IG9mCi0gICAgIHRoZSBzdHJ1Y3R1cmUuIFN0dWZmIG9uIHRoZSBzdGFjayBuZWVkcyB0byBrZWVwIHByb3BlciBhbGlnbm1lbnQuICAqLworICAgICBnb2VzIG9uIHRoZSBzdGFjay4gIAorICAgICA/Pz8gU3RydWN0dXJlcyBhcmUgcGFzc2VkIGFzIGEgcG9pbnRlciB0byBhIGNvcHkgb2YgdGhlIHN0cnVjdHVyZS4gCisgICAgIFN0dWZmIG9uIHRoZSBzdGFjayBuZWVkcyB0byBrZWVwIHByb3BlciBhbGlnbm1lbnQuICAKKyAgICAgRm9yIG02NCB0aGUgY291bnQgaXMgZWZmZWN0aXZlbHkgb2YgaGFsZi1HUFJzLiAgKi8KICAgZm9yIChwdHIgPSBjaWYtPmFyZ190eXBlcywgaSA9IGNpZi0+bmFyZ3M7IGkgPiAwOyBpLS0sIHB0cisrKQogICAgIHsKKyAgICAgIHVuc2lnbmVkIGFsaWduX3dvcmRzOwogICAgICAgc3dpdGNoICgoKnB0ciktPnR5cGUpCiAJewogCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICBmcGFyZ19jb3VudCsrOworI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCiAJICAvKiBJZiB0aGlzIEZQIGFyZyBpcyBnb2luZyBvbiB0aGUgc3RhY2ssIGl0IG11c3QgYmUKIAkgICAgIDgtYnl0ZS1hbGlnbmVkLiAgKi8KIAkgIGlmIChmcGFyZ19jb3VudCA+IE5VTV9GUFJfQVJHX1JFR0lTVEVSUwotCSAgICAgICYmIGludGFyZ19jb3VudCUyICE9IDApCisJICAgICAgJiYgKGludGFyZ19jb3VudCAmIDB4MDEpICE9IDApCiAJICAgIGludGFyZ19jb3VudCsrOworI2VuZGlmCiAJICBicmVhazsKIAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0KIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CiAJICBmcGFyZ19jb3VudCArPSAyOwogCSAgLyogSWYgdGhpcyBGUCBhcmcgaXMgZ29pbmcgb24gdGhlIHN0YWNrLCBpdCBtdXN0IGJlCi0JICAgICA4LWJ5dGUtYWxpZ25lZC4gICovCi0JICBpZiAoZnBhcmdfY291bnQgPiBOVU1fRlBSX0FSR19SRUdJU1RFUlMKLQkgICAgICAmJiBpbnRhcmdfY291bnQlMiAhPSAwKQotCSAgICBpbnRhcmdfY291bnQrKzsKLQkgIGludGFyZ19jb3VudCArPTI7CisJICAgICAxNi1ieXRlLWFsaWduZWQuICAqLworCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKyNpZiBkZWZpbmVkIChQT1dFUlBDNjQpCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgMik7CisjZWxzZQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIDQpOworI2VuZGlmCiAJICBicmVhazsKICNlbmRpZgogCiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6CisjaWYgZGVmaW5lZChQT1dFUlBDNjQpCisJICBpbnRhcmdfY291bnQrKzsKKyNlbHNlCiAJICAvKiAnbG9uZyBsb25nJyBhcmd1bWVudHMgYXJlIHBhc3NlZCBhcyB0d28gd29yZHMsIGJ1dAogCSAgICAgZWl0aGVyIGJvdGggd29yZHMgbXVzdCBmaXQgaW4gcmVnaXN0ZXJzIG9yIGJvdGggZ28KIAkgICAgIG9uIHRoZSBzdGFjay4gIElmIHRoZXkgZ28gb24gdGhlIHN0YWNrLCB0aGV5IG11c3QKIAkgICAgIGJlIDgtYnl0ZS1hbGlnbmVkLiAgKi8KIAkgIGlmIChpbnRhcmdfY291bnQgPT0gTlVNX0dQUl9BUkdfUkVHSVNURVJTLTEKLQkgICAgICB8fCAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAmJiBpbnRhcmdfY291bnQlMiAhPSAwKSkKKwkgICAgICB8fCAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAKKwkgICAgICAgICAgJiYgKGludGFyZ19jb3VudCAmIDB4MDEpICE9IDApKQogCSAgICBpbnRhcmdfY291bnQrKzsKIAkgIGludGFyZ19jb3VudCArPSAyOworI2VuZGlmCiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgogCSAgc2l6ZV9hbCA9ICgqcHRyKS0+c2l6ZTsKLQkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgotCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gICovCi0JICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCi0JICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOwotI2lmZGVmIFBPV0VSUEM2NAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIGFsaWduX3dvcmRzID0gKCpwdHIpLT5hbGlnbm1lbnQgPj4gMzsKKwkgIGlmIChhbGlnbl93b3JkcykKKwkgICAgaW50YXJnX2NvdW50ID0gQUxJR04oaW50YXJnX2NvdW50LCBhbGlnbl93b3Jkcyk7CisJICAvKiBCYXNlIHNpemUgb2YgdGhlIHN0cnVjdC4gICovCiAJICBpbnRhcmdfY291bnQgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisJICAvKiBJZiAxNiBieXRlcyB0aGVuIGRvbid0IHdvcnJ5IGFib3V0IGZsb2F0cy4gICovCisJICBpZiAoc2l6ZV9hbCAhPSAxNikKKwkgICAgLyogU2NhbiB0aHJvdWdoIGZvciBmbG9hdHMgdG8gYmUgcGxhY2VkIGluIHJlZ3MuICAqLworCSAgICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzICgqcHRyLCAmZnBhcmdfY291bnQpIDsKICNlbHNlCisJICBhbGlnbl93b3JkcyA9ICgqcHRyKS0+YWxpZ25tZW50ID4+IDI7CisJICBpZiAoYWxpZ25fd29yZHMpCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgYWxpZ25fd29yZHMpOworCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGFsaWduCisJICAgICB0aGUgc3RydWN0IHRvIGRvdWJsZS13b3JkLiAKKwkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKKwkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7ICovCisjICBpZmRlZiBQT1dFUlBDNjQKKwkgIGludGFyZ19jb3VudCArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyMgIGVsc2UKIAkgIGludGFyZ19jb3VudCArPSAoc2l6ZV9hbCArIDMpIC8gNDsKKyMgIGVuZGlmCiAjZW5kaWYKIAkgIGJyZWFrOwogCkBAIC00OTAsOSArODcyLDE4IEBACiAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogICAgIGZsYWdzIHw9IEZMQUdfRlBfQVJHVU1FTlRTOwogCisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAvKiBTcGFjZSB0byBpbWFnZSB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkIC0gd2hpY2ggaW5jbHVkZXMgd2hlbiB0aGV5IG1pZ2h0IGJlCisgICAgIHVzZWQgaW4gYSBzdHJ1Y3QgcmV0dXJuLiAgKi8KKyAgaWYgKGZwYXJnX2NvdW50ICE9IDAgCisgICAgICB8fCAoKGZsYWdzICYgRkxBR19SRVRVUk5TX1NUUlVDVCkKKwkgICAmJiAoZmxhZ3MgJiBGTEFHX1JFVFVSTlNfRlApKSkKKyAgICBieXRlcyArPSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgKiBzaXplb2YoZG91YmxlKTsKKyNlbHNlCiAgIC8qIFNwYWNlIGZvciB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkLiAgKi8KICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAgICAgYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mKGRvdWJsZSk7CisjZW5kaWYKIAogICAvKiBTdGFjayBzcGFjZS4gICovCiAjaWZkZWYgUE9XRVJQQzY0CkBAIC01MDYsNyArODk3LDcgQEAKICAgICBieXRlcyArPSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgKiBzaXplb2YobG9uZyk7CiAKICAgLyogVGhlIHN0YWNrIHNwYWNlIGFsbG9jYXRlZCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2IGJ5dGVzLiAgKi8KLSAgYnl0ZXMgPSAoYnl0ZXMgKyAxNSkgJiB+MHhGOworICBieXRlcyA9IEFMSUdOKGJ5dGVzLCAxNikgOwogCiAgIGNpZi0+ZmxhZ3MgPSBmbGFnczsKICAgY2lmLT5ieXRlcyA9IGJ5dGVzOwpAQCAtNTE2LDggKzkwNyw5IEBACiAKIGV4dGVybiB2b2lkIGZmaV9jYWxsX0FJWChleHRlbmRlZF9jaWYgKiwgbG9uZywgdW5zaWduZWQsIHVuc2lnbmVkICosCiAJCQkgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAoKmZuMikodm9pZCkpOworCiBleHRlcm4gdm9pZCBmZmlfY2FsbF9EQVJXSU4oZXh0ZW5kZWRfY2lmICosIGxvbmcsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLAotCQkJICAgIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKCpmbjIpKHZvaWQpKTsKKwkJCSAgICB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICgqZm4yKSh2b2lkKSwgZmZpX3R5cGUqKTsKIAogdm9pZAogZmZpX2NhbGwgKGZmaV9jaWYgKmNpZiwgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAqcnZhbHVlLCB2b2lkICoqYXZhbHVlKQpAQCAtNTQyLDExICs5MzQsMTEgQEAKICAgICB7CiAgICAgY2FzZSBGRklfQUlYOgogICAgICAgZmZpX2NhbGxfQUlYKCZlY2lmLCAtKGxvbmcpY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuLAotCQkgICBmZmlfcHJlcF9hcmdzKTsKKwkJICAgRkZJX0ZOKGZmaV9wcmVwX2FyZ3MpKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkZJX0RBUldJTjoKICAgICAgIGZmaV9jYWxsX0RBUldJTigmZWNpZiwgLShsb25nKWNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbiwKLQkJICAgICAgZmZpX3ByZXBfYXJncyk7CisJCSAgICAgIEZGSV9GTihmZmlfcHJlcF9hcmdzKSwgY2lmLT5ydHlwZSk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgRkZJX0FTU0VSVCgwKTsKQEAgLTU2Niw1OCArOTU4LDQ4IEBACiB9IGFpeF9mZDsKIAogLyogaGVyZSBJJ2QgbGlrZSB0byBhZGQgdGhlIHN0YWNrIGZyYW1lIGxheW91dCB3ZSB1c2UgaW4gZGFyd2luX2Nsb3N1cmUuUwotICAgYW5kIGFpeF9jbHNvdXJlLlMKKyAgIGFuZCBhaXhfY2xvc3VyZS5TCiAKLSAgIFNQIHByZXZpb3VzIC0+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLS0gY2hpbGQgZnJhbWUKLQkJICB8IGJhY2sgY2hhaW4gdG8gY2FsbGVyIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDQKLQkJICB8IHNhdmVkIENSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDgKLQkJICB8IHNhdmVkIExSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDEyCi0JCSAgfCByZXNlcnZlZCBmb3IgY29tcGlsZXJzIDQgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNgotCQkgIHwgcmVzZXJ2ZWQgZm9yIGJpbmRlcnMgNCAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjAKLQkJICB8IHNhdmVkIFRPQyBwb2ludGVyIDQgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDI0Ci0JCSAgfCBhbHdheXMgcmVzZXJ2ZWQgOCo0PTMyIChwcmV2aW91cyBHUFJzKXwKLQkJICB8IGFjY29yZGluZyB0byB0aGUgbGlua2FnZSBjb252ZW50aW9uICAgfAotCQkgIHwgZnJvbSBBSVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgNTYKLQkJICB8IG91ciBGUFIgYXJlYSAxMyo4PTEwNCAgICAgICAgICAgICAgICAgfAotCQkgIHwgZjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IGYxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE2MAotCQkgIHwgcmVzdWx0IGFyZWEgOCAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTY4Ci0JCSAgfCBhbGlnbmVtZW50IHRvIHRoZSBuZXh0IG11bHRpcGxlIG9mIDE2IHwKLVNQIGN1cnJlbnQgLS0+ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE3NiA8LSBwYXJlbnQgZnJhbWUKLQkJICB8IGJhY2sgY2hhaW4gdG8gY2FsbGVyIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE4MAotCQkgIHwgc2F2ZWQgQ1IgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTg0Ci0JCSAgfCBzYXZlZCBMUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxODgKLQkJICB8IHJlc2VydmVkIGZvciBjb21waWxlcnMgNCAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE5MgotCQkgIHwgcmVzZXJ2ZWQgZm9yIGJpbmRlcnMgNCAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTk2Ci0JCSAgfCBzYXZlZCBUT0MgcG9pbnRlciA0ICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAyMDAKLQkJICB8IGFsd2F5cyByZXNlcnZlZCA4KjQ9MzIgIHdlIHN0b3JlIG91ciAgfAotCQkgIHwgR1BScyBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCByMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgcjEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjMyCi0JCSAgfCBvdmVyZmxvdyBwYXJ0ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB4eHgKLQkJICB8ID8/Pz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHh4eAorICAgbTMyL202NAorCisgICBUaGUgc3RhY2sgbGF5b3V0IGxvb2tzIGxpa2UgdGhpczoKKworICAgfCAgIEFkZGl0aW9uYWwgcGFyYW1zLi4uCQkJfCB8ICAgICBIaWdoZXIgYWRkcmVzcworICAgfgkJCQkJCX4gfgorICAgfCAgIFBhcmFtZXRlcnMgICAgICAoYXQgbGVhc3QgOCo0Lzg9MzIvNjQpCXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgU2F2ZWQgQ1IgW2xvdyB3b3JkIGZvciBtNjRdICAgICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vIFBhcmVudCdzIGZyYW1lLgorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCA8KyA8PDwgb24gZW50cnkgdG8gZmZpX2Nsb3N1cmVfQVNNCisgICB8ICAgUmVzdWx0IEJ5dGVzCQkJMTYJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIH4gICBwYWRkaW5nIHRvIDE2LWJ5dGUgYWxpZ25tZW50CQl+IH4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBzbG90cwkJfCB8CisgICB8ICAgaGVyZSBmcDEzIC4uIGZwMQkJICAgICAgIDEzKjgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSMy4uUjEwCQkJICA4KjQvOD0zMi82NAl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJc3RhY2sJfAorICAgfCAgIFJlc2VydmVkIFtjb21waWxlcixiaW5kZXJdICAgICAyKjQvOAl8IHwJZ3Jvd3MJfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWRvd24JVgorICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWxvd2VyIGFkZHJlc3NlcworICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfCAgICAgc3RhY2sgcG9pbnRlciBoZXJlCisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vCWR1cmluZworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgIDw8PAlmZmlfY2xvc3VyZV9BU00uCiAKICovCisKIGZmaV9zdGF0dXMKIGZmaV9wcmVwX2Nsb3N1cmVfbG9jIChmZmlfY2xvc3VyZSogY2xvc3VyZSwKIAkJICAgICAgZmZpX2NpZiogY2lmLApAQCAtNjMxLDMwICsxMDEzLDQ0IEBACiAKICAgc3dpdGNoIChjaWYtPmFiaSkKICAgICB7Ci0gICAgY2FzZSBGRklfREFSV0lOOgorICAgICAgY2FzZSBGRklfREFSV0lOOgogCi0gICAgICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfREFSV0lOKTsKKwlGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfREFSV0lOKTsKIAotICAgICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKLSAgICAgIHRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAgKi8KLSAgICAgIHRyYW1wWzFdID0gMHg0MjlmMDAwZDsgIC8qICAgYmNsLSAgICAyMCw0KmNyNytzbywweDEwICAqLwotICAgICAgdHJhbXBbNF0gPSAweDdkNjgwMmE2OyAgLyogICBtZmxyICAgIHIxMSAgKi8KLSAgICAgIHRyYW1wWzVdID0gMHg4MThiMDAwMDsgIC8qICAgbHd6ICAgICByMTIsMChyMTEpIGZ1bmN0aW9uIGFkZHJlc3MgICovCi0gICAgICB0cmFtcFs2XSA9IDB4N2MwODAzYTY7ICAvKiAgIG10bHIgICAgcjAgICAqLwotICAgICAgdHJhbXBbN10gPSAweDdkODkwM2E2OyAgLyogICBtdGN0ciAgIHIxMiAgKi8KLSAgICAgIHRyYW1wWzhdID0gMHg4MTZiMDAwNDsgIC8qICAgbHd6ICAgICByMTEsNChyMTEpIHN0YXRpYyBjaGFpbiAgKi8KLSAgICAgIHRyYW1wWzldID0gMHg0ZTgwMDQyMDsgIC8qICAgYmN0ciAgKi8KLSAgICAgIHRyYW1wWzJdID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX0FTTTsgLyogZnVuY3Rpb24gICovCi0gICAgICB0cmFtcFszXSA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOyAvKiBjb250ZXh0ICAqLworCXRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCXRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAgKi8KKwl0cmFtcFsxXSA9IDB4NDI5ZjAwMTU7ICAvKiAgIGJjbC0gICAgMjAsNCpjcjcrc28sICArMHgxOCAoTDEpICAqLworCS8qIFdlIHB1dCB0aGUgYWRkcmVzc2VzIGhlcmUuICAqLworCXRyYW1wWzZdID0gMHg3ZDY4MDJhNjsgIC8qTDE6ICAgbWZsciAgICByMTEgICovCisJdHJhbXBbN10gPSAweGU5OGIwMDAwOyAgLyogICBsZCAgICAgcjEyLDAocjExKSBmdW5jdGlvbiBhZGRyZXNzICAqLworCXRyYW1wWzhdID0gMHg3YzA4MDNhNjsgIC8qICAgbXRsciAgICByMCAgICovCisJdHJhbXBbOV0gPSAweDdkODkwM2E2OyAgLyogICBtdGN0ciAgIHIxMiAgKi8KKwl0cmFtcFsxMF0gPSAweGU5NmIwMDA4OyAgLyogICBsd3ogICAgIHIxMSw4KHIxMSkgc3RhdGljIGNoYWluICAqLworCXRyYW1wWzExXSA9IDB4NGU4MDA0MjA7ICAvKiAgIGJjdHIgICovCiAKLSAgICAgIGNsb3N1cmUtPmNpZiA9IGNpZjsKLSAgICAgIGNsb3N1cmUtPmZ1biA9IGZ1bjsKLSAgICAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKwkqKCh1bnNpZ25lZCBsb25nICopJnRyYW1wWzJdKSA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV9BU007IC8qIGZ1bmN0aW9uICAqLworCSooKHVuc2lnbmVkIGxvbmcgKikmdHJhbXBbNF0pID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7IC8qIGNvbnRleHQgICovCisjZWxzZQorCXRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAgKi8KKwl0cmFtcFsxXSA9IDB4NDI5ZjAwMGQ7ICAvKiAgIGJjbC0gICAgMjAsNCpjcjcrc28sMHgxMCAgKi8KKwl0cmFtcFs0XSA9IDB4N2Q2ODAyYTY7ICAvKiAgIG1mbHIgICAgcjExICAqLworCXRyYW1wWzVdID0gMHg4MThiMDAwMDsgIC8qICAgbHd6ICAgICByMTIsMChyMTEpIGZ1bmN0aW9uIGFkZHJlc3MgICovCisJdHJhbXBbNl0gPSAweDdjMDgwM2E2OyAgLyogICBtdGxyICAgIHIwICAgKi8KKwl0cmFtcFs3XSA9IDB4N2Q4OTAzYTY7ICAvKiAgIG10Y3RyICAgcjEyICAqLworCXRyYW1wWzhdID0gMHg4MTZiMDAwNDsgIC8qICAgbHd6ICAgICByMTEsNChyMTEpIHN0YXRpYyBjaGFpbiAgKi8KKwl0cmFtcFs5XSA9IDB4NGU4MDA0MjA7ICAvKiAgIGJjdHIgICovCisJdHJhbXBbMl0gPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfQVNNOyAvKiBmdW5jdGlvbiAgKi8KKwl0cmFtcFszXSA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOyAvKiBjb250ZXh0ICAqLworI2VuZGlmCisJY2xvc3VyZS0+Y2lmID0gY2lmOworCWNsb3N1cmUtPmZ1biA9IGZ1bjsKKwljbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAKLSAgICAgIC8qIEZsdXNoIHRoZSBpY2FjaGUuIE9ubHkgbmVjZXNzYXJ5IG9uIERhcndpbi4gICovCi0gICAgICBmbHVzaF9yYW5nZShjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFKTsKKwkvKiBGbHVzaCB0aGUgaWNhY2hlLiBPbmx5IG5lY2Vzc2FyeSBvbiBEYXJ3aW4uICAqLworCWZsdXNoX3JhbmdlKGNvZGVsb2MsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOwogCi0gICAgICBicmVhazsKKwlicmVhazsKIAogICAgIGNhc2UgRkZJX0FJWDoKIApAQCAtNjY5LDEwICsxMDY1LDEwIEBACiAgICAgICBjbG9zdXJlLT5jaWYgPSBjaWY7CiAgICAgICBjbG9zdXJlLT5mdW4gPSBmdW47CiAgICAgICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0KLSAgICAgIEZGSV9BU1NFUlQoMCk7CisgICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgICAgICBicmVhazsKICAgICB9CiAgIHJldHVybiBGRklfT0s7CkBAIC03MDgsNyArMTEwNCw3IEBACiAgIGRvdWJsZSBkOwogfSBmZmlfZGJsZmw7CiAKLWludAorZmZpX3R5cGUgKgogZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiAoZmZpX2Nsb3N1cmUgKiwgdm9pZCAqLAogCQkJICAgdW5zaWduZWQgbG9uZyAqLCBmZmlfZGJsZmwgKik7CiAKQEAgLTcxOSw3ICsxMTE1LDcgQEAKICAgIHVwIHNwYWNlIGZvciBhIHJldHVybiB2YWx1ZSwgZmZpX2Nsb3N1cmVfQVNNIGludm9rZXMgdGhlCiAgICBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9uIHRvIGRvIG1vc3Qgb2YgdGhlIHdvcmsuICAqLwogCi1pbnQKK2ZmaV90eXBlICoKIGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4gKGZmaV9jbG9zdXJlICpjbG9zdXJlLCB2b2lkICpydmFsdWUsCiAJCQkgICB1bnNpZ25lZCBsb25nICpwZ3IsIGZmaV9kYmxmbCAqcGZyKQogewpAQCAtNzQxLDE2ICsxMTM3LDMyIEBACiAgIGZmaV9jaWYgKiAgICAgICAgY2lmOwogICBmZmlfZGJsZmwgKiAgICAgIGVuZF9wZnIgPSBwZnIgKyBOVU1fRlBSX0FSR19SRUdJU1RFUlM7CiAgIHVuc2lnbmVkICAgICAgICAgc2l6ZV9hbDsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgIHVuc2lnbmVkIAkgICBmcHN1c2VkID0gMDsKKyNlbmRpZgogCiAgIGNpZiA9IGNsb3N1cmUtPmNpZjsKICAgYXZhbHVlID0gYWxsb2NhIChjaWYtPm5hcmdzICogc2l6ZW9mKHZvaWQgKikpOwogCi0gIC8qIENvcHkgdGhlIGNhbGxlcidzIHN0cnVjdHVyZSByZXR1cm4gdmFsdWUgYWRkcmVzcyBzbyB0aGF0IHRoZSBjbG9zdXJlCi0gICAgIHJldHVybnMgdGhlIGRhdGEgZGlyZWN0bHkgdG8gdGhlIGNhbGxlci4gICovCiAgIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKICAgICB7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAgICAgaWYgKCFkYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AgKGNpZi0+cnR5cGUpKQorCXsKKyAgICAJICAvKiBXb24ndCBmaXQgaW50byB0aGUgcmVncyAtIHJldHVybiBieSByZWYuICAqLworCSAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKKwkgIHBncisrOworCX0KKyNlbGlmIGRlZmluZWQoREFSV0lOX1BQQykKKyAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplID4gNCkKKwl7CisJICBydmFsdWUgPSAodm9pZCAqKSAqcGdyOworCSAgcGdyKys7CisJfQorI2Vsc2UgLyogYXNzdW1lIHdlIHJldHVybiBieSByZWYuICAqLwogICAgICAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKICAgICAgIHBncisrOworI2VuZGlmCiAgICAgfQogCiAgIGkgPSAwOwpAQCAtNzY0LDcgKzExNzYsNyBAQAogCXsKIAljYXNlIEZGSV9UWVBFX1NJTlQ4OgogCWNhc2UgRkZJX1RZUEVfVUlOVDg6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgNzsKICNlbHNlCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyAzOwpAQCAtNzc0LDcgKzExODYsNyBAQAogCiAJY2FzZSBGRklfVFlQRV9TSU5UMTY6CiAJY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgNjsKICNlbHNlCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyAyOwpAQCAtNzg0LDcgKzExOTYsNyBAQAogCiAJY2FzZSBGRklfVFlQRV9TSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9VSU5UMzI6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgNDsKICNlbHNlCiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgpAQCAtNzk0LDM0ICsxMjA2LDUzIEBACiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmZGVmIFBPV0VSUEM2NAogCSAgc2l6ZV9hbCA9IGFyZ190eXBlc1tpXS0+c2l6ZTsKLQkgIGlmIChhcmdfdHlwZXNbaV0tPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKLQkgICAgc2l6ZV9hbCA9IEFMSUdOIChhcmdfdHlwZXNbaV0tPnNpemUsIDgpOwotCSAgaWYgKHNpemVfYWwgPCAzICYmIGNpZi0+YWJpID09IEZGSV9EQVJXSU4pCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkICopIHBnciArIDggLSBzaXplX2FsOwotCSAgZWxzZQotCSAgICBhdmFsdWVbaV0gPSAodm9pZCAqKSBwZ3I7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgcGdyID0gKHVuc2lnbmVkIGxvbmcgKilBTElHTigoY2hhciAqKXBnciwgYXJnX3R5cGVzW2ldLT5hbGlnbm1lbnQpOworCSAgaWYgKHNpemVfYWwgPCAzIHx8IHNpemVfYWwgPT0gNCkKKwkgICAgeworCSAgICAgIGF2YWx1ZVtpXSA9ICgoY2hhciAqKXBncikrOC1zaXplX2FsOworCSAgICAgIGlmIChhcmdfdHlwZXNbaV0tPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUCisJCSAgJiYgZnBzdXNlZCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkJeworCQkgICooZmxvYXQgKilwZ3IgPSAoZmxvYXQpICooZG91YmxlICopcGZyOworCQkgIHBmcisrOworCQkgIGZwc3VzZWQrKzsKKwkJfQorCSAgICB9CisJICBlbHNlIAorCSAgICB7CisJICAgICAgaWYgKHNpemVfYWwgIT0gMTYpCisJCXBmciA9IChmZmlfZGJsZmwgKikgCisJCSAgICBkYXJ3aW42NF9zdHJ1Y3RfZmxvYXRzX3RvX21lbSAoYXJnX3R5cGVzW2ldLCAoY2hhciAqKXBnciwKKwkJCQkJCSAgIChkb3VibGUgKilwZnIsICZmcHN1c2VkKTsKKwkgICAgICBhdmFsdWVbaV0gPSBwZ3I7CisJICAgIH0KIAkgIHBnciArPSAoc2l6ZV9hbCArIDcpIC8gODsKICNlbHNlCi0JICAvKiBTdHJ1Y3R1cmVzIHRoYXQgbWF0Y2ggdGhlIGJhc2ljIG1vZGVzIChRSSAxIGJ5dGUsIEhJIDIgYnl0ZXMsCi0JICAgICBTSSA0IGJ5dGVzKSBhcmUgYWxpZ25lZCBhcyBpZiB0aGV5IHdlcmUgdGhvc2UgbW9kZXMuICAqLwotCSAgc2l6ZV9hbCA9IGFyZ190eXBlc1tpXS0+c2l6ZTsKIAkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgogCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gICovCiAJICBpZiAoYXJnX3R5cGVzW2ldLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCiAJICAgIHNpemVfYWwgPSBBTElHTihhcmdfdHlwZXNbaV0tPnNpemUsIDgpOworIyAgaWYgZGVmaW5lZChQT1dFUlBDNjQpCisJICBGRklfQVNTRVJUIChjaWYtPmFiaSAhPSBGRklfREFSV0lOKTsKKwkgIGF2YWx1ZVtpXSA9IHBncjsKKwkgIHBnciArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyMgIGVsc2UKKwkgIC8qIFN0cnVjdHVyZXMgdGhhdCBtYXRjaCB0aGUgYmFzaWMgbW9kZXMgKFFJIDEgYnl0ZSwgSEkgMiBieXRlcywKKwkgICAgIFNJIDQgYnl0ZXMpIGFyZSBhbGlnbmVkIGFzIGlmIHRoZXkgd2VyZSB0aG9zZSBtb2Rlcy4gICovCiAJICBpZiAoc2l6ZV9hbCA8IDMgJiYgY2lmLT5hYmkgPT0gRkZJX0RBUldJTikKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQqKSBwZ3IgKyA0IC0gc2l6ZV9hbDsKKwkgICAgYXZhbHVlW2ldID0gKGNoYXIqKSBwZ3IgKyA0IC0gc2l6ZV9hbDsKIAkgIGVsc2UKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQqKSBwZ3I7CisJICAgIGF2YWx1ZVtpXSA9IHBncjsKIAkgIHBnciArPSAoc2l6ZV9hbCArIDMpIC8gNDsKKyMgIGVuZGlmCiAjZW5kaWYKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKIAkgIGF2YWx1ZVtpXSA9IHBncjsKIAkgIHBncisrOwpAQCAtOTI0LDUgKzEzNTUsNSBAQAogICAoY2xvc3VyZS0+ZnVuKSAoY2lmLCBydmFsdWUsIGF2YWx1ZSwgY2xvc3VyZS0+dXNlcl9kYXRhKTsKIAogICAvKiBUZWxsIGZmaV9jbG9zdXJlX0FTTSB0byBwZXJmb3JtIHJldHVybiB0eXBlIHByb21vdGlvbnMuICAqLwotICByZXR1cm4gY2lmLT5ydHlwZS0+dHlwZTsKKyAgcmV0dXJuIGNpZi0+cnR5cGU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaAppbmRleCBiNGY5OTJlLi4zYzlkYjQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgKQEAgLTEsNiArMSw4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKwogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBQb3dlclBDLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI4LDE1ICszMCwyOCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmIGRlZmluZWQgKFBPV0VSUEMpICYmIGRlZmluZWQgKF9fcG93ZXJwYzY0X18pCS8qIGxpbnV4NjQgKi8KKyNpZm5kZWYgUE9XRVJQQzY0CiAjZGVmaW5lIFBPV0VSUEM2NAotI2VsaWYgZGVmaW5lZCAoUE9XRVJQQ19EQVJXSU4pICYmIGRlZmluZWQgKF9fcHBjNjRfXykJLyogRGFyd2luICovCisjZW5kaWYKKyNlbGlmIGRlZmluZWQgKFBPV0VSUENfREFSV0lOKSAmJiBkZWZpbmVkIChfX3BwYzY0X18pCS8qIERhcndpbjY0ICovCisjaWZuZGVmIFBPV0VSUEM2NAogI2RlZmluZSBQT1dFUlBDNjQKKyNlbmRpZgorI2lmbmRlZiBQT1dFUlBDX0RBUldJTjY0CisjZGVmaW5lIFBPV0VSUENfREFSV0lONjQKKyNlbmRpZgogI2VsaWYgZGVmaW5lZCAoUE9XRVJQQ19BSVgpICYmIGRlZmluZWQgKF9fNjRCSVRfXykJLyogQUlYNjQgKi8KKyNpZm5kZWYgUE9XRVJQQzY0CiAjZGVmaW5lIFBPV0VSUEM2NAogI2VuZGlmCisjZW5kaWYKIAogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKQEAgLTUxLDE4ICs2NiwxNCBAQAogICBGRklfTElOVVg2NCwKICAgRkZJX0xJTlVYLAogICBGRklfTElOVVhfU09GVF9GTE9BVCwKLSMgaWZkZWYgUE9XRVJQQzY0CisjIGlmIGRlZmluZWQoUE9XRVJQQzY0KQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfTElOVVg2NCwKLSMgZWxzZQotIyAgaWYgKCFkZWZpbmVkKF9fTk9fRlBSU19fKSAmJiAoX19MREJMX01BTlRfRElHX18gPT0gMTA2KSkKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYLAotIyAgZWxzZQotIyAgIGlmZGVmIF9fTk9fRlBSU19fCisjIGVsaWYgZGVmaW5lZChfX05PX0ZQUlNfXykKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYX1NPRlRfRkxPQVQsCi0jICAgZWxzZQorIyBlbGlmIChfX0xEQkxfTUFOVF9ESUdfXyA9PSAxMDYpCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWCwKKyMgZWxzZQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfR0NDX1NZU1YsCi0jICAgZW5kaWYKLSMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKIApAQCAtMTA4LDkgKzExOSwxMyBAQAogI2RlZmluZSBGRklfU1lTVl9UWVBFX1NNQUxMX1NUUlVDVCAoRkZJX1RZUEVfTEFTVCArIDIpCiAKICNpZiBkZWZpbmVkKFBPV0VSUEM2NCkgfHwgZGVmaW5lZChQT1dFUlBDX0FJWCkKLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyNAorIyAgaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorIyAgICBkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSA0OAorIyAgZWxzZQorIyAgICBkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyNAorIyAgZW5kaWYKICNlbHNlIC8qIFBPV0VSUEMgfHwgUE9XRVJQQ19BSVggKi8KLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSA0MAorIyAgZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNDAKICNlbmRpZgogCiAjaWZuZGVmIExJQkZGSV9BU00KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUwppbmRleCA1NmY3ZDFhLi40MWZiODg1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCkBAIC0xMjIsMjIgKzEyMiw0MSBAQAogCWJscgogCiAjIGNhc2UgRkZJX1RZUEVfRkxPQVQKKyNpZm5kZWYgX19OT19GUFJTX18KIAlsZnMgJWYxLDExMiswKCVyMSkKIAltdGxyICVyMAogCWFkZGkgJXIxLCVyMSwxNDQKKyNlbHNlCisJbm9wCisJbm9wCisJbm9wCisjZW5kaWYKIAlibHIKIAogIyBjYXNlIEZGSV9UWVBFX0RPVUJMRQorI2lmbmRlZiBfX05PX0ZQUlNfXwogCWxmZCAlZjEsMTEyKzAoJXIxKQogCW10bHIgJXIwCiAJYWRkaSAlcjEsJXIxLDE0NAorI2Vsc2UKKwlub3AKKwlub3AKKwlub3AKKyNlbmRpZgogCWJscgogCiAjIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRQorI2lmbmRlZiBfX05PX0ZQUlNfXwogCWxmZCAlZjEsMTEyKzAoJXIxKQogCWxmZCAlZjIsMTEyKzgoJXIxKQogCW10bHIgJXIwCiAJYiAuTGZpbmlzaAorI2Vsc2UKKwlub3AKKwlub3AKKwlub3AKKwlibHIKKyNlbmRpZgogCiAjIGNhc2UgRkZJX1RZUEVfVUlOVDgKIAlsYnogJXIzLDExMiszKCVyMSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMKaW5kZXggOTZlYTIyYi4uNjc1ZWQwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMKQEAgLTgzLDYgKzgzLDcgQEAKIAlub3AKIDE6CiAKKyNpZm5kZWYgX19OT19GUFJTX18KIAkvKiBMb2FkIGFsbCB0aGUgRlAgcmVnaXN0ZXJzLiAgKi8KIAliZi0JNiwyZgogCWxmZAklZjEsLTE2LSg4KjQpLSg4KjgpKCVyMjgpCkBAIC05NCw2ICs5NSw3IEBACiAJbGZkCSVmNiwtMTYtKDgqNCktKDMqOCkoJXIyOCkKIAlsZmQJJWY3LC0xNi0oOCo0KS0oMio4KSglcjI4KQogCWxmZAklZjgsLTE2LSg4KjQpLSgxKjgpKCVyMjgpCisjZW5kaWYKIDI6CiAKIAkvKiBNYWtlIHRoZSBjYWxsLiAgKi8KQEAgLTEwMyw3ICsxMDUsOSBAQAogCW10Y3JmCTB4MDEsJXIzMSAvKiBjcjcgICovCiAJYnQtCTMxLEwoc21hbGxfc3RydWN0X3JldHVybl92YWx1ZSkKIAlidC0JMzAsTChkb25lX3JldHVybl92YWx1ZSkKKyNpZm5kZWYgX19OT19GUFJTX18KIAlidC0JMjksTChmcF9yZXR1cm5fdmFsdWUpCisjZW5kaWYKIAlzdHcJJXIzLDAoJXIzMCkKIAliZisJMjgsTChkb25lX3JldHVybl92YWx1ZSkKIAlzdHcJJXI0LDQoJXIzMCkKQEAgLTEyNCw2ICsxMjgsNyBAQAogCWx3egklcjEsMCglcjEpCiAJYmxyCiAKKyNpZm5kZWYgX19OT19GUFJTX18KIEwoZnBfcmV0dXJuX3ZhbHVlKToKIAliZgkyOCxMKGZsb2F0X3JldHVybl92YWx1ZSkKIAlzdGZkCSVmMSwwKCVyMzApCkBAIC0xMzQsMjEgKzEzOSwxNyBAQAogTChmbG9hdF9yZXR1cm5fdmFsdWUpOgogCXN0ZnMJJWYxLDAoJXIzMCkKIAliCUwoZG9uZV9yZXR1cm5fdmFsdWUpCisjZW5kaWYKIAogTChzbWFsbF9zdHJ1Y3RfcmV0dXJuX3ZhbHVlKToKLQlleHRyd2kJJXI2LCVyMzEsMiwxOSAgICAgICAgIC8qIG51bWJlciBvZiBieXRlcyBwYWRkaW5nID0gc2hpZnQvOCAqLwotCW10Y3JmCTB4MDIsJXIzMQkgICAgICAvKiBjb3B5IGZsYWdzIHRvIGNyWzI0OjI3XSAoY3I2KSAqLwotCWV4dHJ3aQklcjUsJXIzMSw1LDE5ICAgICAgICAgLyogcjUgPC0gbnVtYmVyIG9mIGJpdHMgb2YgcGFkZGluZyAqLwotCXN1YmZpYyAgJXI2LCVyNiw0ICAgICAgICAgICAgIC8qIHI2IDwtIG51bWJlciBvZiB1c2VmdWwgYnl0ZXMgaW4gcjMgKi8KLQliZi0JMjUsTChkb25lX3JldHVybl92YWx1ZSkgLyogc3RydWN0IGluIHIzID8gaWYgbm90LCBkb25lLiAqLwotLyogc21zdF9vbmVfcmVnaXN0ZXI6ICovCi0Jc2x3CSVyMywlcjMsJXI1ICAgICAgICAgICAvKiBMZWZ0LWp1c3RpZnkgdmFsdWUgaW4gcjMgKi8KLQltdHhlcgklcjYgICAgICAgICAgICAgICAgICAgLyogbW92ZSBieXRlIGNvdW50IHRvIFhFUiAuLi4gKi8KLQlzdHN3eAklcjMsMCwlcjMwICAgICAgICAgICAgLyogLi4uIGFuZCBzdG9yZSB0aGF0IG1hbnkgYnl0ZXMgKi8KLQliZisJMjYsTChkb25lX3JldHVybl92YWx1ZSkgIC8qIHN0cnVjdCBpbiByMzpyNCA/ICovCi0JYWRkCSVyNiwlcjYsJXIzMCAgICAgICAgICAvKiBhZGp1c3QgcG9pbnRlciAqLwotCXN0c3dpCSVyNCwlcjYsNCAgICAgICAgICAgICAvKiBzdG9yZSBsYXN0IGZvdXIgYnl0ZXMgKi8KLQliCUwoZG9uZV9yZXR1cm5fdmFsdWUpCisJLyoKKwkgKiBUaGUgQyBjb2RlIGFsd2F5cyBhbGxvY2F0ZXMgYSBwcm9wZXJseS1hbGlnbmVkIDgtYnl0ZSBib3VuY2UKKwkgKiBidWZmZXIgdG8gbWFrZSB0aGlzIGFzc2VtYmx5IGNvZGUgdmVyeSBzaW1wbGUuICBKdXN0IHdyaXRlIG91dAorCSAqIHIzIGFuZCByNCB0byB0aGUgYnVmZmVyIHRvIGFsbG93IHRoZSBDIGNvZGUgdG8gaGFuZGxlIHRoZSByZXN0LgorCSAqLworCXN0dyAlcjMsIDAoJXIzMCkKKwlzdHcgJXI0LCA0KCVyMzApCisJYiBMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCiAuTEZFMToKIEVORChmZmlfY2FsbF9TWVNWKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMKaW5kZXggYzFjM2I5YS4uZWI2ODM0MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wcmVwX2NpZi5jCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDcgIFJlZCBIYXQsIEluYy4KKyAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEsIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDcgIFJlZCBIYXQsIEluYy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKQEAgLTM3LDE3ICszOCwyMSBAQAogewogICBmZmlfdHlwZSAqKnB0cjsKIAotICBGRklfQVNTRVJUKGFyZyAhPSBOVUxMKTsKKyAgaWYgKFVOTElLRUxZKGFyZyA9PSBOVUxMIHx8IGFyZy0+ZWxlbWVudHMgPT0gTlVMTCkpCisgICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKIAotICBGRklfQVNTRVJUKGFyZy0+ZWxlbWVudHMgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5zaXplID09IDApOwotICBGRklfQVNTRVJUKGFyZy0+YWxpZ25tZW50ID09IDApOworICBhcmctPnNpemUgPSAwOworICBhcmctPmFsaWdubWVudCA9IDA7CiAKICAgcHRyID0gJihhcmctPmVsZW1lbnRzWzBdKTsKIAorICBpZiAoVU5MSUtFTFkocHRyID09IDApKQorICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7CisKICAgd2hpbGUgKCgqcHRyKSAhPSBOVUxMKQogICAgIHsKLSAgICAgIGlmICgoKCpwdHIpLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpCisgICAgICBpZiAoVU5MSUtFTFkoKCgqcHRyKS0+c2l6ZSA9PSAwKQorCQkgICAgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkpCiAJcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKIAogICAgICAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgYXJndW1lbnQgdHlwZSAqLwpAQCAtODUsMTkgKzkwLDM4IEBACiAvKiBQZXJmb3JtIG1hY2hpbmUgaW5kZXBlbmRlbnQgZmZpX2NpZiBwcmVwYXJhdGlvbiwgdGhlbiBjYWxsCiAgICBtYWNoaW5lIGRlcGVuZGVudCByb3V0aW5lLiAqLwogCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZihmZmlfY2lmICpjaWYsIGZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsCi0JCQlmZmlfdHlwZSAqcnR5cGUsIGZmaV90eXBlICoqYXR5cGVzKQorLyogRm9yIG5vbiB2YXJpYWRpYyBmdW5jdGlvbnMgaXN2YXJpYWRpYyBzaG91bGQgYmUgMCBhbmQKKyAgIG5maXhlZGFyZ3M9PW50b3RhbGFyZ3MuCisKKyAgIEZvciB2YXJpYWRpYyBjYWxscywgaXN2YXJpYWRpYyBzaG91bGQgYmUgMSBhbmQgbmZpeGVkYXJncworICAgYW5kIG50b3RhbGFyZ3Mgc2V0IGFzIGFwcHJvcHJpYXRlLiBuZml4ZWRhcmdzIG11c3QgYWx3YXlzIGJlID49MSAqLworCisKK2ZmaV9zdGF0dXMgRkZJX0hJRERFTiBmZmlfcHJlcF9jaWZfY29yZShmZmlfY2lmICpjaWYsIGZmaV9hYmkgYWJpLAorCQkJICAgICB1bnNpZ25lZCBpbnQgaXN2YXJpYWRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorCQkJICAgICBmZmlfdHlwZSAqcnR5cGUsIGZmaV90eXBlICoqYXR5cGVzKQogewogICB1bnNpZ25lZCBieXRlcyA9IDA7CiAgIHVuc2lnbmVkIGludCBpOwogICBmZmlfdHlwZSAqKnB0cjsKIAogICBGRklfQVNTRVJUKGNpZiAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVCgoYWJpID4gRkZJX0ZJUlNUX0FCSSkgJiYgKGFiaSA8PSBGRklfREVGQVVMVF9BQkkpKTsKKyAgRkZJX0FTU0VSVCgoIWlzdmFyaWFkaWMpIHx8IChuZml4ZWRhcmdzID49IDEpKTsKKyAgRkZJX0FTU0VSVChuZml4ZWRhcmdzIDw9IG50b3RhbGFyZ3MpOworCisjaWZuZGVmIFg4Nl9XSU4zMgorICBpZiAoISAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkpKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKKyNlbHNlCisgIGlmICghIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSB8fCBhYmkgPT0gRkZJX1RISVNDQUxMKSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisjZW5kaWYKIAogICBjaWYtPmFiaSA9IGFiaTsKICAgY2lmLT5hcmdfdHlwZXMgPSBhdHlwZXM7Ci0gIGNpZi0+bmFyZ3MgPSBuYXJnczsKKyAgY2lmLT5uYXJncyA9IG50b3RhbGFyZ3M7CiAgIGNpZi0+cnR5cGUgPSBydHlwZTsKIAogICBjaWYtPmZsYWdzID0gMDsKQEAgLTExMCw3ICsxMzQsNyBAQAogICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoY2lmLT5ydHlwZSk7CiAKICAgLyogeDg2LCB4ODYtNjQgYW5kIHMzOTAgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBpcyBoYW5kbGVkIGluIHByZXBfbWFjaGRlcC4gKi8KLSNpZiAhZGVmaW5lZCBNNjhLICYmICFkZWZpbmVkIF9faTM4Nl9fICYmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQorI2lmICFkZWZpbmVkIE02OEsgJiYgIWRlZmluZWQgWDg2X0FOWSAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCiAgIC8qIE1ha2Ugc3BhY2UgZm9yIHRoZSByZXR1cm4gc3RydWN0dXJlIHBvaW50ZXIgKi8KICAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCiAjaWZkZWYgU1BBUkMKQEAgLTEzMSw3ICsxNTUsNyBAQAogCSBjaGVjayBhZnRlciB0aGUgaW5pdGlhbGl6YXRpb24uICAqLwogICAgICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKCpwdHIpOwogCi0jaWYgIWRlZmluZWQgX19pMzg2X18gJiYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCisjaWYgIWRlZmluZWQgWDg2X0FOWSAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCiAjaWZkZWYgU1BBUkMKICAgICAgIGlmICgoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAogCSAgICYmICgoKnB0ciktPnNpemUgPiAxNiB8fCBjaWYtPmFiaSAhPSBGRklfVjkpKQpAQCAtMTUzLDEwICsxNzcsMzEgQEAKICAgY2lmLT5ieXRlcyA9IGJ5dGVzOwogCiAgIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KKyNpZmRlZiBGRklfVEFSR0VUX1NQRUNJRklDX1ZBUklBRElDCisgIGlmIChpc3ZhcmlhZGljKQorCXJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcF92YXIoY2lmLCBuZml4ZWRhcmdzLCBudG90YWxhcmdzKTsKKyNlbmRpZgorCiAgIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOwogfQogI2VuZGlmIC8qIG5vdCBfX0NSSVNfXyAqLwogCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZihmZmlfY2lmICpjaWYsIGZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsCisJCQkgICAgIGZmaV90eXBlICpydHlwZSwgZmZpX3R5cGUgKiphdHlwZXMpCit7CisgIHJldHVybiBmZmlfcHJlcF9jaWZfY29yZShjaWYsIGFiaSwgMCwgbmFyZ3MsIG5hcmdzLCBydHlwZSwgYXR5cGVzKTsKK30KKworZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfdmFyKGZmaV9jaWYgKmNpZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfYWJpIGFiaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfdHlwZSAqcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX3R5cGUgKiphdHlwZXMpCit7CisgIHJldHVybiBmZmlfcHJlcF9jaWZfY29yZShjaWYsIGFiaSwgMSwgbmZpeGVkYXJncywgbnRvdGFsYXJncywgcnR5cGUsIGF0eXBlcyk7Cit9CisKICNpZiBGRklfQ0xPU1VSRVMKIAogZmZpX3N0YXR1cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmgKaW5kZXggNzhmM2M2NS4uOTdmYTVjNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zMzkwL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFMzOTAuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsOSArMjgsMTUgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZiBkZWZpbmVkIChfX3MzOTB4X18pCisjaWZuZGVmIFMzOTBYCiAjZGVmaW5lIFMzOTBYCiAjZW5kaWYKKyNlbmRpZgogCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC00MCw4ICs0Nyw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMKaW5kZXggNjliZDAyNS4uMzUxNWI5MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggS2F6IEtvamltYQorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDItMjAwOCwgMjAxMiBLYXogS29qaW1hCiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCBSZWQgSGF0LCBJbmMuCiAgICAKICAgIFN1cGVySCBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKQEAgLTQ2Myw3ICs0NjMsOCBAQAogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogICB1bnNpZ25lZCBpbnQgaW5zbjsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfR0NDX1NZU1YpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIC8qIFNldCBUIGJpdCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHN0cnVjdCBwb2ludGVkIHdpdGggUjIuICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaAppbmRleCAyMThhZTNkLi5hMzZiZjQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFN1cGVySC4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zNiw4ICs0MSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jCmluZGV4IDhmYmMwNWMuLjEyM2I4N2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZmkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNyBLYXogS29qaW1hCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAxMiBLYXogS29qaW1hCiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCBBbnRob255IEdyZWVuCiAgICAKICAgIFN1cGVySCBTSG1lZGlhIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIApAQCAtMzAyLDcgKzMwMiw4IEBACiB7CiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogICAvKiBTaW5jZSBmZmlfY2xvc3VyZSBpcyBhbiBhbGlnbmVkIG9iamVjdCwgdGhlIGZmaSB0cmFtcG9saW5lIGlzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaAppbmRleCA0ZTkyMmZjLi4wOGE2ZmU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgU3VwZXJIIC0gU0htZWRpYS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zNiw4ICs0MSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogCiAjZGVmaW5lIEZGSV9FWFRSQV9DSUZfRklFTERTIGxvbmcgbG9uZyBmbGFnczIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMKaW5kZXggMWQwMWY1OS4uMWFjNWQ0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDMsIDIwMDQsIDIwMDcsIDIwMDggUmVkIEhhdCwgSW5jLgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDMtMjAwNCwgMjAwNy0yMDA4IFJlZCBIYXQsIEluYy4KICAgIAogICAgU1BBUkMgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTQwNiw4ICs0MDcsNTAgQEAKICAgICAgIC8qIFdlIGRvbid0IHlldCBzdXBwb3J0IGNhbGxpbmcgMzJiaXQgY29kZSBmcm9tIDY0Yml0ICovCiAgICAgICBGRklfQVNTRVJUKDApOwogI2Vsc2UKLSAgICAgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLCAKLQkJICBjaWYtPmZsYWdzLCBydmFsdWUsIGZuKTsKKyAgICAgIGlmIChydmFsdWUgJiYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQorI2VuZGlmCisJICApKQorCXsKKwkgIC8qIEZvciB2OCwgd2UgbmVlZCBhbiAidW5pbXAiIHdpdGggc2l6ZSBvZiByZXR1cm5pbmcgc3RydWN0ICovCisJICAvKiBiZWhpbmQgImNhbGwiLCBzbyB3ZSBhbGxvYyBzb21lIGV4ZWN1dGFibGUgc3BhY2UgZm9yIGl0LiAqLworCSAgLyogbDcgaXMgdXNlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdjguUyBkb2Vzbid0IHVzZSAlbDcuICAgKi8KKwkgIHVuc2lnbmVkIGludCAqY2FsbF9zdHJ1Y3QgPSBOVUxMOworCSAgZmZpX2Nsb3N1cmVfYWxsb2MoMzIsICZjYWxsX3N0cnVjdCk7CisJICBpZiAoY2FsbF9zdHJ1Y3QpCisJICAgIHsKKwkgICAgICB1bnNpZ25lZCBsb25nIGYgPSAodW5zaWduZWQgbG9uZylmbjsKKwkgICAgICBjYWxsX3N0cnVjdFswXSA9IDB4YWUxMDAwMWY7CQkgLyogbW92ICAgJWk3LCAlbDcJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbMV0gPSAweGJlMTAwMDBmOwkJIC8qIG1vdiAgICVvNywgJWk3CSAqLworCSAgICAgIGNhbGxfc3RydWN0WzJdID0gMHgwMzAwMDAwMCB8IGYgPj4gMTA7ICAgICAvKiBzZXRoaSAlaGkoZm4pLCAlZzEJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbM10gPSAweDlmYzA2MDAwIHwgKGYgJiAweDNmZik7IC8qIGptcCAlZzErJWxvKGZuKSwgJW83ICovCisJICAgICAgY2FsbF9zdHJ1Y3RbNF0gPSAweDAxMDAwMDAwOwkJIC8qIG5vcAkJCSAqLworCSAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplIDwgMHg3ZikKKwkJY2FsbF9zdHJ1Y3RbNV0gPSBjaWYtPnJ0eXBlLT5zaXplOwkgLyogdW5pbXAJCSAqLworCSAgICAgIGVsc2UKKwkJY2FsbF9zdHJ1Y3RbNV0gPSAweDAxMDAwMDAwOwkgICAgIAkgLyogbm9wCQkJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbNl0gPSAweDgxYzdlMDA4OwkJIC8qIHJldAkJCSAqLworCSAgICAgIGNhbGxfc3RydWN0WzddID0gMHhiZTEwMDAxNzsJCSAvKiBtb3YgICAlbDcsICVpNwkgKi8KKwkgICAgICBhc20gdm9sYXRpbGUgKCJpZmx1c2ggJTA7IGlmbHVzaCAlMCs4OyBpZmx1c2ggJTArMTY7IGlmbHVzaCAlMCsyNCIgOiA6CisJCQkgICAgInIiIChjYWxsX3N0cnVjdCkgOiAibWVtb3J5Iik7CisJICAgICAgLyogU1BBUkMgdjggcmVxdWlyZXMgNSBpbnN0cnVjdGlvbnMgZm9yIGZsdXNoIHRvIGJlIHZpc2libGUgKi8KKwkgICAgICBhc20gdm9sYXRpbGUgKCJub3A7IG5vcDsgbm9wOyBub3A7IG5vcCIpOworCSAgICAgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLAorCQkJICBjaWYtPmZsYWdzLCBydmFsdWUsIGNhbGxfc3RydWN0KTsKKwkgICAgICBmZmlfY2xvc3VyZV9mcmVlKGNhbGxfc3RydWN0KTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgZmZpX2NhbGxfdjgoZmZpX3ByZXBfYXJnc192OCwgJmVjaWYsIGNpZi0+Ynl0ZXMsCisJCQkgIGNpZi0+ZmxhZ3MsIHJ2YWx1ZSwgZm4pOworCSAgICB9CisJfQorICAgICAgZWxzZQorCXsKKwkgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLAorCQkgICAgICBjaWYtPmZsYWdzLCBydmFsdWUsIGZuKTsKKwl9CiAjZW5kaWYKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkZJX1Y5OgpAQCAtNDI1LDcgKzQ2OCw2IEBACiAgICAgICBGRklfQVNTRVJUKDApOwogICAgICAgYnJlYWs7CiAgICAgfQotCiB9CiAKIApAQCAtNDQ3LDcgKzQ4OSw4IEBACiAjaWZkZWYgU1BBUkM2NAogICAvKiBUcmFtcG9saW5lIGFkZHJlc3MgaXMgZXF1YWwgdG8gdGhlIGNsb3N1cmUgYWRkcmVzcy4gIFdlIHRha2UgYWR2YW50YWdlCiAgICAgIG9mIHRoYXQgdG8gcmVkdWNlIHRoZSB0cmFtcG9saW5lIHNpemUgYnkgOCBieXRlcy4gKi8KLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1Y5KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9WOSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX3Y5OwogICB0cmFtcFswXSA9IDB4ODM0MTQwMDA7CS8qIHJkCSVwYywgJWcxCSovCiAgIHRyYW1wWzFdID0gMHhjYTU4NjAxMDsJLyogbGR4CVslZzErMTZdLCAlZzUJKi8KQEAgLTQ1Niw3ICs0OTksOCBAQAogICAqKCh1bnNpZ25lZCBsb25nICopICZ0cmFtcFs0XSkgPSBmbjsKICNlbHNlCiAgIHVuc2lnbmVkIGxvbmcgY3R4ID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9WOCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfVjgpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV92ODsKICAgdHJhbXBbMF0gPSAweDAzMDAwMDAwIHwgZm4gPj4gMTA7CS8qIHNldGhpICVoaShmbiksICVnMQkqLwogICB0cmFtcFsxXSA9IDB4MDUwMDAwMDAgfCBjdHggPj4gMTA7CS8qIHNldGhpICVoaShjdHgpLCAlZzIJKi8KQEAgLTQ2OCwxMyArNTEyLDEzIEBACiAgIGNsb3N1cmUtPmZ1biA9IGZ1bjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogCi0gIC8qIEZsdXNoIHRoZSBJY2FjaGUuICBGSVhNRTogYWxpZ25tZW50IGlzbid0IGNlcnRhaW4sIGFzc3VtZSA4IGJ5dGVzICovCisgIC8qIEZsdXNoIHRoZSBJY2FjaGUuICBjbG9zdXJlIGlzIDggYnl0ZXMgYWxpZ25lZC4gICovCiAjaWZkZWYgU1BBUkM2NAotICBhc20gdm9sYXRpbGUgKCJmbHVzaAklMCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7Ci0gIGFzbSB2b2xhdGlsZSAoImZsdXNoCSUwIiA6IDogInIiICgoKGNoYXIgKikgY2xvc3VyZSkgKyA4KSA6ICJtZW1vcnkiKTsKKyAgYXNtIHZvbGF0aWxlICgiZmx1c2gJJTA7IGZsdXNoICUwKzgiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOwogI2Vsc2UKLSAgYXNtIHZvbGF0aWxlICgiaWZsdXNoCSUwIiA6IDogInIiIChjbG9zdXJlKSA6ICJtZW1vcnkiKTsKLSAgYXNtIHZvbGF0aWxlICgiaWZsdXNoCSUwIiA6IDogInIiICgoKGNoYXIgKikgY2xvc3VyZSkgKyA4KSA6ICJtZW1vcnkiKTsKKyAgYXNtIHZvbGF0aWxlICgiaWZsdXNoCSUwOyBpZmx1c2ggJTArOCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7CisgIC8qIFNQQVJDIHY4IHJlcXVpcmVzIDUgaW5zdHJ1Y3Rpb25zIGZvciBmbHVzaCB0byBiZSB2aXNpYmxlICovCisgIGFzbSB2b2xhdGlsZSAoIm5vcDsgbm9wOyBub3A7IG5vcDsgbm9wIik7CiAjZW5kaWYKIAogICByZXR1cm4gRkZJX09LOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaAppbmRleCAxYTFhMWFjLi5kODlmNzg3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTUEFSQy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNywxMSArMjgsMTcgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZiBkZWZpbmVkKF9fYXJjaDY0X18pIHx8IGRlZmluZWQoX19zcGFyY3Y5KQorI2lmbmRlZiBTUEFSQzY0CiAjZGVmaW5lIFNQQVJDNjQKICNlbmRpZgorI2VuZGlmCiAKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CkBAIC00MiwxMiArNDksMTIgQEAKICAgRkZJX1Y4LAogICBGRklfVjhQTFVTLAogICBGRklfVjksCisgIEZGSV9MQVNUX0FCSSwKICNpZmRlZiBTUEFSQzY0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1Y5CiAjZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjgsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOAogI2VuZGlmCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUwppbmRleCA0ODlmZjAyLi5iZjMxYTJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL3Y5LlMKQEAgLTMyLDcgKzMyLDcgQEAKIC8qIE9ubHkgY29tcGlsZSB0aGlzIGluIGZvciA2NGJpdCBidWlsZHMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBvYmplY3QgZmlsZQogICAgd2lsbCBoYXZlIGlucHJvcGVyIGFyY2hpdGVjdHVyZSBkdWUgdG8gdXNlZCBpbnN0cnVjdGlvbnMuICAqLwogCi0jZGVmaW5lIFNUQUNLRlJBTUUgMTI4CQkvKiBNaW5pbXVtIHN0YWNrIGZyYW1lc2l6ZSBmb3IgU1BBUkMgKi8KKyNkZWZpbmUgU1RBQ0tGUkFNRSAxNzYJCS8qIE1pbmltdW0gc3RhY2sgZnJhbWVzaXplIGZvciBTUEFSQyA2NC1iaXQgKi8KICNkZWZpbmUgU1RBQ0tfQklBUyAyMDQ3CiAjZGVmaW5lIEFSR1MgKDEyOCkJCS8qIE9mZnNldCBvZiByZWdpc3RlciBhcmVhIGluIGZyYW1lICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYwppbmRleCA4MDQ5NjUzLi42MTFlMjIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaS5jCkBAIC0zLDcgKzMsNyBAQAogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDIgIFJhbmppdCBNYXRoZXcKICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyICBCbyBUaG9yc2VuCiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiAgUm9nZXIgU2F5bGUKLSAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgeDg2IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAKQEAgLTQ4LDEwICs0OCwxOCBAQAogICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwogICByZWdpc3RlciBjaGFyICphcmdwOwogICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOworI2lmZGVmIFg4Nl9XSU4zMgorICBzaXplX3QgcF9zdGFja19hcmdzWzJdOworICB2b2lkICpwX3N0YWNrX2RhdGFbMl07CisgIGNoYXIgKmFyZ3AyID0gc3RhY2s7CisgIGludCBzdGFja19hcmdzX2NvdW50ID0gMDsKKyAgaW50IGNhYmkgPSBlY2lmLT5jaWYtPmFiaTsKKyNlbmRpZgogCiAgIGFyZ3AgPSBzdGFjazsKIAotICBpZiAoZWNpZi0+Y2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgaWYgKChlY2lmLT5jaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgIHx8IGVjaWYtPmNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUKQogI2lmZGVmIFg4Nl9XSU42NAogICAgICAgJiYgKGVjaWYtPmNpZi0+cnR5cGUtPnNpemUgIT0gMSAmJiBlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDIKICAgICAgICAgICAmJiBlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDQgJiYgZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSA4KQpAQCAtNTksNiArNjcsMTYgQEAKICAgICAgICkKICAgICB7CiAgICAgICAqKHZvaWQgKiopIGFyZ3AgPSBlY2lmLT5ydmFsdWU7CisjaWZkZWYgWDg2X1dJTjMyCisgICAgICAvKiBGb3IgZmFzdGNhbGwvdGhpc2NhbGwgdGhpcyBpcyBmaXJzdCByZWdpc3Rlci1wYXNzZWQKKyAgICAgICAgIGFyZ3VtZW50LiAgKi8KKyAgICAgIGlmIChjYWJpID09IEZGSV9USElTQ0FMTCB8fCBjYWJpID09IEZGSV9GQVNUQ0FMTCkKKwl7CisJICBwX3N0YWNrX2FyZ3Nbc3RhY2tfYXJnc19jb3VudF0gPSBzaXplb2YgKHZvaWQqKTsKKwkgIHBfc3RhY2tfZGF0YVtzdGFja19hcmdzX2NvdW50XSA9IGFyZ3A7CisJICArK3N0YWNrX2FyZ3NfY291bnQ7CisJfQorI2VuZGlmCiAgICAgICBhcmdwICs9IHNpemVvZih2b2lkKik7CiAgICAgfQogCkBAIC0xMzQsNiArMTUyLDI0IEBACiAgICAgICAgIHsKICAgICAgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7CiAgICAgICAgIH0KKworI2lmZGVmIFg4Nl9XSU4zMgorICAgIC8qIEZvciB0aGlzY2FsbC9mYXN0Y2FsbCBjb252ZW50aW9uIHJlZ2lzdGVyLXBhc3NlZCBhcmd1bWVudHMKKyAgICAgICBhcmUgdGhlIGZpcnN0IHR3byBub25lLWZsb2F0aW5nLXBvaW50IGFyZ3VtZW50cyB3aXRoIGEgc2l6ZQorICAgICAgIHNtYWxsZXIgb3IgZXF1YWwgdG8gc2l6ZW9mICh2b2lkKikuICAqLworICAgIGlmICgoY2FiaSA9PSBGRklfVEhJU0NBTEwgJiYgc3RhY2tfYXJnc19jb3VudCA8IDEpCisgICAgICAgIHx8IChjYWJpID09IEZGSV9GQVNUQ0FMTCAmJiBzdGFja19hcmdzX2NvdW50IDwgMikpCisgICAgICB7CisJaWYgKHogPD0gNAorCSAgICAmJiAoKCpwX2FyZyktPnR5cGUgIT0gRkZJX1RZUEVfRkxPQVQKKwkgICAgICAgICYmICgqcF9hcmcpLT50eXBlICE9IEZGSV9UWVBFX1NUUlVDVCkpCisJICB7CisJICAgIHBfc3RhY2tfYXJnc1tzdGFja19hcmdzX2NvdW50XSA9IHo7CisJICAgIHBfc3RhY2tfZGF0YVtzdGFja19hcmdzX2NvdW50XSA9IGFyZ3A7CisJICAgICsrc3RhY2tfYXJnc19jb3VudDsKKwkgIH0KKyAgICAgIH0KKyNlbmRpZgogICAgICAgcF9hcmd2Kys7CiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgICBhcmdwICs9ICh6ICsgc2l6ZW9mKHZvaWQqKSAtIDEpICYgfihzaXplb2Yodm9pZCopIC0gMSk7CkBAIC0xNDEsNyArMTc3LDQ1IEBACiAgICAgICBhcmdwICs9IHo7CiAjZW5kaWYKICAgICB9Ci0gIAorCisjaWZkZWYgWDg2X1dJTjMyCisgIC8qIFdlIG5lZWQgdG8gbW92ZSB0aGUgcmVnaXN0ZXItcGFzc2VkIGFyZ3VtZW50cyBmb3IgdGhpc2NhbGwvZmFzdGNhbGwKKyAgICAgb24gdG9wIG9mIHN0YWNrLCBzbyB0aGF0IHRob3NlIGNhbiBiZSBtb3ZlZCB0byByZWdpc3RlcnMgZWN4L2VkeCBieQorICAgICBjYWxsLWhhbmRsZXIuICAqLworICBpZiAoc3RhY2tfYXJnc19jb3VudCA+IDApCisgICAgeworICAgICAgc2l6ZV90IHp6ID0gKHBfc3RhY2tfYXJnc1swXSArIDMpICYgfjM7CisgICAgICBjaGFyICpoOworCisgICAgICAvKiBNb3ZlIGZpcnN0IGFyZ3VtZW50IHRvIHRvcC1zdGFjayBwb3NpdGlvbi4gICovCisgICAgICBpZiAocF9zdGFja19kYXRhWzBdICE9IGFyZ3AyKQorCXsKKwkgIGggPSBhbGxvY2EgKHp6ICsgMSk7CisJICBtZW1jcHkgKGgsIHBfc3RhY2tfZGF0YVswXSwgenopOworCSAgbWVtbW92ZSAoYXJncDIgKyB6eiwgYXJncDIsCisJICAgICAgICAgICAoc2l6ZV90KSAoKGNoYXIgKikgcF9zdGFja19kYXRhWzBdIC0gKGNoYXIqKWFyZ3AyKSk7CisJICBtZW1jcHkgKGFyZ3AyLCBoLCB6eik7CisJfQorCisgICAgICBhcmdwMiArPSB6ejsKKyAgICAgIC0tc3RhY2tfYXJnc19jb3VudDsKKyAgICAgIGlmICh6eiA+IDQpCisJc3RhY2tfYXJnc19jb3VudCA9IDA7CisKKyAgICAgIC8qIElmIHdlIGhhdmUgYSBzZWNvbmQgYXJndW1lbnQsIHRoZW4gbW92ZSBpdCBvbiB0b3AKKyAgICAgICAgIGFmdGVyIHRoZSBmaXJzdCBvbmUuICAqLworICAgICAgaWYgKHN0YWNrX2FyZ3NfY291bnQgPiAwICYmIHBfc3RhY2tfZGF0YVsxXSAhPSBhcmdwMikKKwl7CisJICB6eiA9IHBfc3RhY2tfYXJnc1sxXTsKKwkgIHp6ID0gKHp6ICsgMykgJiB+MzsKKwkgIGggPSBhbGxvY2EgKHp6ICsgMSk7CisJICBoID0gYWxsb2NhICh6eiArIDEpOworCSAgbWVtY3B5IChoLCBwX3N0YWNrX2RhdGFbMV0sIHp6KTsKKwkgIG1lbW1vdmUgKGFyZ3AyICsgenosIGFyZ3AyLCAoc2l6ZV90KSAoKGNoYXIqKSBwX3N0YWNrX2RhdGFbMV0gLSAoY2hhciopYXJncDIpKTsKKwkgIG1lbWNweSAoYXJncDIsIGgsIHp6KTsKKwl9CisgICAgfQorI2VuZGlmCiAgIHJldHVybjsKIH0KIApAQCAtMTU1LDEyICsyMjksMTAgQEAKICAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQogICAgIHsKICAgICBjYXNlIEZGSV9UWVBFX1ZPSUQ6Ci0jaWYgZGVmaW5lZChYODYpIHx8IGRlZmluZWQgKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfRlJFRUJTRCkgfHwgZGVmaW5lZChYODZfREFSV0lOKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkKICAgICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgogICAgIGNhc2UgRkZJX1RZUEVfVUlOVDE2OgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UMTY6Ci0jZW5kaWYKICNpZmRlZiBYODZfV0lONjQKICAgICBjYXNlIEZGSV9UWVBFX1VJTlQzMjoKICAgICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKQEAgLTIwOCw4ICsyODAsMTMgQEAKICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICB7Ci0gICAgICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX1NUUlVDVDsKLSAgICAgICAgICAvLyBhbGxvY2F0ZSBzcGFjZSBmb3IgcmV0dXJuIHZhbHVlIHBvaW50ZXIKKyNpZmRlZiBYODZfV0lOMzIKKyAgICAgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX01TX0NERUNMKQorICAgICAgICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX01TX1NUUlVDVDsKKyAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TVFJVQ1Q7CisgICAgICAgICAgLyogYWxsb2NhdGUgc3BhY2UgZm9yIHJldHVybiB2YWx1ZSBwb2ludGVyICovCiAgICAgICAgICAgY2lmLT5ieXRlcyArPSBBTElHTihzaXplb2Yodm9pZCopLCBGRklfU0laRU9GX0FSRyk7CiAgICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMjM0LDcgKzMxMSw3IEBACiAgICAgfQogCiAjaWZkZWYgWDg2X1dJTjY0Ci0gIC8vIGVuc3VyZSBzcGFjZSBmb3Igc3RvcmluZyBmb3VyIHJlZ2lzdGVycworICAvKiBlbnN1cmUgc3BhY2UgZm9yIHN0b3JpbmcgZm91ciByZWdpc3RlcnMgKi8KICAgY2lmLT5ieXRlcyArPSA0ICogc2l6ZW9mKGZmaV9hcmcpOwogI2VuZGlmCiAKQEAgLTI1Miw3ICszMjksNyBAQAogI2VsaWYgZGVmaW5lZChYODZfV0lOMzIpCiBleHRlcm4gdm9pZAogZmZpX2NhbGxfd2luMzIodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIGV4dGVuZGVkX2NpZiAqLAotICAgICAgICAgICAgICAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKKyAgICAgICAgICAgICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOwogI2Vsc2UKIGV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIGV4dGVuZGVkX2NpZiAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOwpAQCAtMjc4LDcgKzM1NSw4IEBACiAgICAgfQogI2Vsc2UKICAgaWYgKHJ2YWx1ZSA9PSBOVUxMCi0gICAgICAmJiBjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCkKKyAgICAgICYmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUKSkKICAgICB7CiAgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKICAgICB9CkBAIC0yOTEsMzMgKzM2OSw0NCBAQAogICAgIHsKICNpZmRlZiBYODZfV0lONjQKICAgICBjYXNlIEZGSV9XSU42NDoKLSAgICAgIHsKLSAgICAgICAgLy8gTWFrZSBjb3BpZXMgb2YgYWxsIHN0cnVjdCBhcmd1bWVudHMKLSAgICAgICAgLy8gTk9URTogbm90IHN1cmUgaWYgcmVzcG9uc2liaWxpdHkgc2hvdWxkIGJlIGhlcmUgb3IgaW4gY2FsbGVyCi0gICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICBmb3IgKGk9MDsgaSA8IGNpZi0+bmFyZ3M7aSsrKSB7Ci0gICAgICAgICAgc2l6ZV90IHNpemUgPSBjaWYtPmFyZ190eXBlc1tpXS0+c2l6ZTsKLSAgICAgICAgICBpZiAoKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgICAgICAgICAgJiYgKHNpemUgIT0gMSAmJiBzaXplICE9IDIgJiYgc2l6ZSAhPSA0ICYmIHNpemUgIT0gOCkpCi0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgICAgICAgICAgICAgfHwgY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotI2VuZGlmCi0gICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdm9pZCAqbG9jYWwgPSBhbGxvY2Eoc2l6ZSk7Ci0gICAgICAgICAgICAgIG1lbWNweShsb2NhbCwgYXZhbHVlW2ldLCBzaXplKTsKLSAgICAgICAgICAgICAgYXZhbHVlW2ldID0gbG9jYWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZmZpX2NhbGxfd2luNjQoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7Ci0gICAgICB9CisgICAgICBmZmlfY2FsbF93aW42NChmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7CiAgICAgICBicmVhazsKICNlbGlmIGRlZmluZWQoWDg2X1dJTjMyKQogICAgIGNhc2UgRkZJX1NZU1Y6CiAgICAgY2FzZSBGRklfU1REQ0FMTDoKLSAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICBjYXNlIEZGSV9NU19DREVDTDoKKyAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKwkJICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGRklfVEhJU0NBTEw6CisgICAgY2FzZSBGRklfRkFTVENBTEw6CisgICAgICB7CisJdW5zaWduZWQgaW50IGFiaSA9IGNpZi0+YWJpOworCXVuc2lnbmVkIGludCBpLCBwYXNzZWRfcmVncyA9IDA7CisKKwlpZiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICArK3Bhc3NlZF9yZWdzOworCisJZm9yIChpPTA7IGkgPCBjaWYtPm5hcmdzICYmIHBhc3NlZF9yZWdzIDwgMjtpKyspCisJICB7CisJICAgIHNpemVfdCBzejsKKworCSAgICBpZiAoY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQKKwkgICAgICAgIHx8IGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKwkgICAgICBjb250aW51ZTsKKwkgICAgc3ogPSAoY2lmLT5hcmdfdHlwZXNbaV0tPnNpemUgKyAzKSAmIH4zOworCSAgICBpZiAoc3ogPT0gMCB8fCBzeiA+IDQpCisJICAgICAgY29udGludWU7CisJICAgICsrcGFzc2VkX3JlZ3M7CisJICB9CisJaWYgKHBhc3NlZF9yZWdzIDwgMiAmJiBhYmkgPT0gRkZJX0ZBU1RDQUxMKQorCSAgYWJpID0gRkZJX1RISVNDQUxMOworCWlmIChwYXNzZWRfcmVncyA8IDEgJiYgYWJpID09IEZGSV9USElTQ0FMTCkKKwkgIGFiaSA9IEZGSV9TVERDQUxMOworICAgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgYWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgfQogICAgICAgYnJlYWs7CiAjZWxzZQogICAgIGNhc2UgRkZJX1NZU1Y6CkBAIC0zNDUsOCArNDM0LDEyIEBACiB2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfcmF3X1NZU1YgKGZmaV9yYXdfY2xvc3VyZSAqKQogICAgICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgxKSkpOwogI2lmZGVmIFg4Nl9XSU4zMgordm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCAoZmZpX3Jhd19jbG9zdXJlICopCisgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7CiB2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfU1REQ0FMTCAoZmZpX2Nsb3N1cmUgKikKICAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKK3ZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9USElTQ0FMTCAoZmZpX2Nsb3N1cmUgKikKKyAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKICNlbmRpZgogI2lmZGVmIFg4Nl9XSU42NAogdm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX3dpbjY0IChmZmlfY2xvc3VyZSAqKTsKQEAgLTQyOCw3ICs1MjEsOCBAQAogICAgIGFyZ3AgKz0gc2l6ZW9mKHZvaWQgKik7CiAgIH0KICNlbHNlCi0gIGlmICggY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7CisgIGlmICggY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCApIHsKICAgICAqcnZhbHVlID0gKih2b2lkICoqKSBhcmdwOwogICAgIGFyZ3AgKz0gc2l6ZW9mKHZvaWQgKik7CiAgIH0KQEAgLTUwNiw2ICs2MDAsMzMgQEAKICAgICoodW5zaWduZWQgaW50KikgICZfX3RyYW1wWzZdID0gX19kaXM7IC8qIGptcCBfX2Z1biAgKi8gXAogIH0KIAorI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMKFRSQU1QLEZVTixDVFgsU0laRSkgXAoreyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7IFwKKyAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KShGVU4pOyBcCisgICB1bnNpZ25lZCBpbnQgIF9fY3R4ID0gKHVuc2lnbmVkIGludCkoQ1RYKTsgXAorICAgdW5zaWduZWQgaW50ICBfX2RpcyA9IF9fZnVuIC0gKF9fY3R4ICsgNDkpOyAgXAorICAgdW5zaWduZWQgc2hvcnQgX19zaXplID0gKHVuc2lnbmVkIHNob3J0KShTSVpFKTsgXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMF0gPSAweDgzMjQwNDhiOwkvKiBtb3YgKCVlc3ApLCAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzRdID0gMHg0Yzg5MGNlYzsJLyogc3ViICQxMiwgJWVzcCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFs4XSA9IDB4MDQ4OTA0MjQ7CS8qIG1vdiAlZWN4LCA0KCVlc3ApICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzEyXSA9IDB4MjQ7CS8qIG1vdiAlZWF4LCAoJWVzcCkgKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgJl9fdHJhbXBbMTNdID0gMHhiODsgXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMTRdID0gX19zaXplOwkvKiBtb3YgX19zaXplLCAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzE4XSA9IDB4MDgyNDRjOGQ7CS8qIGxlYSA4KCVlc3ApLCAlZWN4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzIyXSA9IDB4NDgwMmU4YzE7IC8qIHNociAkMiwgJWVheCA7IGRlYyAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgc2hvcnQqKSAmX190cmFtcFsyNl0gPSAweDBiNzQ7CS8qIGp6IDFmICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzI4XSA9IDB4ODkwODUxOGI7CS8qIDJiOiBtb3YgOCglZWN4KSwgJWVkeCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFszMl0gPSAweDA0YzE4MzExOyAvKiBtb3YgJWVkeCwgKCVlY3gpIDsgYWRkICQ0LCAlZWN4ICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzM2XSA9IDB4NDg7CS8qIGRlYyAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgc2hvcnQqKSAmX190cmFtcFszN10gPSAweGY1NzU7CS8qIGpueiAyYiA7IDFmOiAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFszOV0gPSAweGI4OyBcCisgICAqKHVuc2lnbmVkIGludCopICAmX190cmFtcFs0MF0gPSBfX2N0eDsgLyogbW92bCBfX2N0eCwgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIgKikgICZfX3RyYW1wWzQ0XSA9IDB4ZTg7IFwKKyAgICoodW5zaWduZWQgaW50KikgICZfX3RyYW1wWzQ1XSA9IF9fZGlzOyAvKiBjYWxsIF9fZnVuICAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAgJl9fdHJhbXBbNDldID0gMHhjMjsgLyogcmV0ICAqLyBcCisgICAqKHVuc2lnbmVkIHNob3J0KikgICZfX3RyYW1wWzUwXSA9IChfX3NpemUgKyA4KTsgLyogcmV0IChfX3NpemUgKyA4KSAgKi8gXAorIH0KKwogI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FX1NURENBTEwoVFJBTVAsRlVOLENUWCxTSVpFKSAgXAogeyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7IFwKICAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KShGVU4pOyBcCkBAIC01NDgsMTIgKzY2OSwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKWNvZGVsb2MpOwogICAgIH0KICNpZmRlZiBYODZfV0lOMzIKKyAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1RISVNDQUxMKQorICAgIHsKKyAgICAgIEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwgKCZjbG9zdXJlLT50cmFtcFswXSwKKwkJCQkgICAgJmZmaV9jbG9zdXJlX1RISVNDQUxMLAorCQkJCSAgICAodm9pZCopY29kZWxvYywKKwkJCQkgICAgY2lmLT5ieXRlcyk7CisgICAgfQogICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfU1REQ0FMTCkKICAgICB7CiAgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FX1NURENBTEwgKCZjbG9zdXJlLT50cmFtcFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZmaV9jbG9zdXJlX1NURENBTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiljb2RlbG9jLCBjaWYtPmJ5dGVzKTsKICAgICB9CisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9NU19DREVDTCkKKyAgICB7CisgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmZpX2Nsb3N1cmVfU1lTViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiljb2RlbG9jKTsKKyAgICB9CiAjZW5kaWYgLyogWDg2X1dJTjMyICovCiAjZW5kaWYgLyogIVg4Nl9XSU42NCAqLwogICBlbHNlCkBAIC01ODIsNiArNzE2LDkgQEAKICAgaW50IGk7CiAKICAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKSB7CisjaWZkZWYgWDg2X1dJTjMyCisgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9USElTQ0FMTCkKKyNlbmRpZgogICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgfQogCkBAIC01OTYsMTAgKzczMywyMCBAQAogICAgICAgRkZJX0FTU0VSVCAoY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgIT0gRkZJX1RZUEVfTE9OR0RPVUJMRSk7CiAgICAgfQogICAKLQorI2lmZGVmIFg4Nl9XSU4zMgorICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpCisgICAgeworI2VuZGlmCiAgIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgJmZmaV9jbG9zdXJlX3Jhd19TWVNWLAogICAgICAgICAgICAgICAgICAgICAgICBjb2RlbG9jKTsKLSAgICAKKyNpZmRlZiBYODZfV0lOMzIKKyAgICB9CisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9USElTQ0FMTCkKKyAgICB7CisgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMICgmY2xvc3VyZS0+dHJhbXBbMF0sICZmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwsCisJCQkJICAgIGNvZGVsb2MsIGNpZi0+Ynl0ZXMpOworICAgIH0KKyNlbmRpZgogICBjbG9zdXJlLT5jaWYgID0gY2lmOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAgIGNsb3N1cmUtPmZ1biAgPSBmdW47CkBAIC02MzAsOCArNzc3LDkgQEAKICAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHJldHVybiAqLwogICAvKiB2YWx1ZSBhZGRyZXNzIHRoZW4gd2UgbmVlZCB0byBtYWtlIG9uZSAgICAgICAgICAgICAgICAgICAgICovCiAKLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgCi0gICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQorICBpZiAocnZhbHVlID09IE5VTEwKKyAgICAgICYmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUKSkKICAgICB7CiAgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKICAgICB9CkBAIC02NDQsOCArNzkyLDM4IEBACiAjaWZkZWYgWDg2X1dJTjMyCiAgICAgY2FzZSBGRklfU1lTVjoKICAgICBjYXNlIEZGSV9TVERDQUxMOgotICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJnc19yYXcsICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICBjYXNlIEZGSV9NU19DREVDTDoKKyAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3NfcmF3LCAmZWNpZiwgY2lmLT5hYmksIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCisJCSAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRkZJX1RISVNDQUxMOgorICAgIGNhc2UgRkZJX0ZBU1RDQUxMOgorICAgICAgeworCXVuc2lnbmVkIGludCBhYmkgPSBjaWYtPmFiaTsKKwl1bnNpZ25lZCBpbnQgaSwgcGFzc2VkX3JlZ3MgPSAwOworCisJaWYgKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgKytwYXNzZWRfcmVnczsKKworCWZvciAoaT0wOyBpIDwgY2lmLT5uYXJncyAmJiBwYXNzZWRfcmVncyA8IDI7aSsrKQorCSAgeworCSAgICBzaXplX3Qgc3o7CisKKwkgICAgaWYgKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUCisJICAgICAgICB8fCBjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICAgICAgY29udGludWU7CisJICAgIHN6ID0gKGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplICsgMykgJiB+MzsKKwkgICAgaWYgKHN6ID09IDAgfHwgc3ogPiA0KQorCSAgICAgIGNvbnRpbnVlOworCSAgICArK3Bhc3NlZF9yZWdzOworCSAgfQorCWlmIChwYXNzZWRfcmVncyA8IDIgJiYgYWJpID09IEZGSV9GQVNUQ0FMTCkKKwkgIGNpZi0+YWJpID0gYWJpID0gRkZJX1RISVNDQUxMOworCWlmIChwYXNzZWRfcmVncyA8IDEgJiYgYWJpID09IEZGSV9USElTQ0FMTCkKKwkgIGNpZi0+YWJpID0gYWJpID0gRkZJX1NURENBTEw7CisgICAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3NfcmF3LCAmZWNpZiwgYWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgfQogICAgICAgYnJlYWs7CiAjZWxzZQogICAgIGNhc2UgRkZJX1NZU1Y6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jCmluZGV4IDA3YTI2MjcuLjFkYWExYzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jCkBAIC0xLDcgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaTY0LmMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDcgIEJvIFRob3JzZW4gPGJvQHN1c2UuZGU+Ci0gICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4ICBSZWQgSGF0LCBJbmMuCi0gICAKKyAgIGZmaTY0LmMgLSBDb3B5cmlnaHQgKGMpIDIwMDExICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEwICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA3ICBCbyBUaG9yc2VuIDxib0BzdXNlLmRlPgorICAgICAgICAgICAgIAogICAgeDg2LTY0IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTM2LDExICszNywxNyBAQAogI2RlZmluZSBNQVhfR1BSX1JFR1MgNgogI2RlZmluZSBNQVhfU1NFX1JFR1MgOAogCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorI2RlZmluZSBVSU5UMTI4IF9fbTEyOAorI2Vsc2UKKyNkZWZpbmUgVUlOVDEyOCBfX2ludDEyOF90CisjZW5kaWYKKwogc3RydWN0IHJlZ2lzdGVyX2FyZ3MKIHsKICAgLyogUmVnaXN0ZXJzIGZvciBhcmd1bWVudCBwYXNzaW5nLiAgKi8KICAgVUlOVDY0IGdwcltNQVhfR1BSX1JFR1NdOwotICBfX2ludDEyOF90IHNzZVtNQVhfU1NFX1JFR1NdOworICBVSU5UMTI4IHNzZVtNQVhfU1NFX1JFR1NdOwogfTsKIAogZXh0ZXJuIHZvaWQgZmZpX2NhbGxfdW5peDY0ICh2b2lkICphcmdzLCB1bnNpZ25lZCBsb25nIGJ5dGVzLCB1bnNpZ25lZCBmbGFncywKQEAgLTM3OCw3ICszODUsNyBAQAogCSAgaWYgKGFsaWduIDwgOCkKIAkgICAgYWxpZ24gPSA4OwogCi0JICBieXRlcyA9IEFMSUdOKGJ5dGVzLCBhbGlnbik7CisJICBieXRlcyA9IEFMSUdOIChieXRlcywgYWxpZ24pOwogCSAgYnl0ZXMgKz0gY2lmLT5hcmdfdHlwZXNbaV0tPnNpemU7CiAJfQogICAgICAgZWxzZQpAQCAtMzkwLDcgKzM5Nyw3IEBACiAgIGlmIChzc2Vjb3VudCkKICAgICBmbGFncyB8PSAxIDw8IDExOwogICBjaWYtPmZsYWdzID0gZmxhZ3M7Ci0gIGNpZi0+Ynl0ZXMgPSBieXRlczsKKyAgY2lmLT5ieXRlcyA9IEFMSUdOIChieXRlcywgOCk7CiAKICAgcmV0dXJuIEZGSV9PSzsKIH0KQEAgLTQyNiw3ICs0MzMsNyBAQAogICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIHBhc3NlZCBpbiBtZW1vcnksIGFkZCB0aGUgcG9pbnRlciBhcyB0aGUKICAgICAgZmlyc3QgaW50ZWdlciBhcmd1bWVudC4gICovCiAgIGlmIChyZXRfaW5fbWVtb3J5KQotICAgIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK10gPSAobG9uZykgcnZhbHVlOworICAgIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK10gPSAodW5zaWduZWQgbG9uZykgcnZhbHVlOwogCiAgIGF2biA9IGNpZi0+bmFyZ3M7CiAgIGFyZ190eXBlcyA9IGNpZi0+YXJnX3R5cGVzOwpAQCAtNDk4LDEyICs1MDUsMjEgQEAKIHsKICAgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKnRyYW1wOwogCisgIC8qIFNhbml0eSBjaGVjayBvbiB0aGUgY2lmIEFCSS4gICovCisgIHsKKyAgICBpbnQgYWJpID0gY2lmLT5hYmk7CisgICAgaWYgKFVOTElLRUxZICghIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSkpKQorICAgICAgcmV0dXJuIEZGSV9CQURfQUJJOworICB9CisKICAgdHJhbXAgPSAodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogCiAgIHRyYW1wWzBdID0gMHhiYjQ5OwkJLyogbW92IDxjb2RlPiwgJXIxMQkqLwotICAqKHZvaWQgKiB2b2xhdGlsZSAqKSAmdHJhbXBbMV0gPSBmZmlfY2xvc3VyZV91bml4NjQ7CisgICooKHVuc2lnbmVkIGxvbmcgbG9uZyAqIHZvbGF0aWxlKSAmdHJhbXBbMV0pCisgICAgPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfdW5peDY0OwogICB0cmFtcFs1XSA9IDB4YmE0OTsJCS8qIG1vdiA8ZGF0YT4sICVyMTAJKi8KLSAgKih2b2lkICogdm9sYXRpbGUgKikgJnRyYW1wWzZdID0gY29kZWxvYzsKKyAgKigodW5zaWduZWQgbG9uZyBsb25nICogdm9sYXRpbGUpICZ0cmFtcFs2XSkKKyAgICA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOwogCiAgIC8qIFNldCB0aGUgY2FycnkgYml0IGlmZiB0aGUgZnVuY3Rpb24gdXNlcyBhbnkgc3NlIHJlZ2lzdGVycy4KICAgICAgVGhpcyBpcyBjbGMgb3Igc3RjLCB0b2dldGhlciB3aXRoIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBqbXAuICAqLwpAQCAtNTQyLDcgKzU1OCw3IEBACiAJewogCSAgLyogVGhlIHJldHVybiB2YWx1ZSBnb2VzIGluIG1lbW9yeS4gIEFycmFuZ2UgZm9yIHRoZSBjbG9zdXJlCiAJICAgICByZXR1cm4gdmFsdWUgdG8gZ28gZGlyZWN0bHkgYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLiAgKi8KLQkgIHJ2YWx1ZSA9ICh2b2lkICopIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK107CisJICBydmFsdWUgPSAodm9pZCAqKSAodW5zaWduZWQgbG9uZykgcmVnX2FyZ3MtPmdwcltncHJjb3VudCsrXTsKIAkgIC8qIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcgaW4gYXNtIGZvciB0aGUgcmV0dXJuLiAgKi8KIAkgIHJldCA9IEZGSV9UWVBFX1ZPSUQ7CiAJfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oCmluZGV4IDg5YTg5ODMuLmY0NDI2NTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpdGFyZ2V0LmgKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAxMCAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzLCAyMDEwICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgeDg2IGFuZCB4ODYtNjQuCiAKQEAgLTI5LDggKzMwLDE1IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBGb3IgY29kZSBjb21tb24gdG8gYWxsIHBsYXRmb3JtcyBvbiB4ODYgYW5kIHg4Nl82NC4gKi8KKyNkZWZpbmUgWDg2X0FOWQorCiAjaWYgZGVmaW5lZCAoWDg2XzY0KSAmJiBkZWZpbmVkIChfX2kzODZfXykKICN1bmRlZiBYODZfNjQKICNkZWZpbmUgWDg2CkBAIC0zOCw3ICs0Niw3IEBACiAKICNpZmRlZiBYODZfV0lONjQKICNkZWZpbmUgRkZJX1NJWkVPRl9BUkcgOAotI2RlZmluZSBVU0VfQlVJTFRJTl9GRlMgMCAvLyBub3QgeWV0IGltcGxlbWVudGVkIGluIG1pbmd3LTY0IAorI2RlZmluZSBVU0VfQlVJTFRJTl9GRlMgMCAvKiBub3QgeWV0IGltcGxlbWVudGVkIGluIG1pbmd3LTY0ICovCiAjZW5kaWYKIAogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTUzLDkgKzYxLDE1IEBACiB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgICAgZmZpX3Nhcmc7CiAjZW5kaWYKICNlbHNlCisjaWYgZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIF9fTFA2NF9fCisjZGVmaW5lIEZGSV9TSVpFT0ZfQVJHIDgKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgICBmZmlfYXJnOwordHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICAgIGZmaV9zYXJnOworI2Vsc2UKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwogI2VuZGlmCisjZW5kaWYKIAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKQEAgLTY0LDI4ICs3OCwzMiBAQAogI2lmZGVmIFg4Nl9XSU4zMgogICBGRklfU1lTViwKICAgRkZJX1NURENBTEwsCi0gIC8qIFRPRE86IEFkZCBmYXN0Y2FsbCBzdXBwb3J0IGZvciB0aGUgc2FrZSBvZiBjb21wbGV0ZW5lc3MgKi8KLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCisgIEZGSV9USElTQ0FMTCwKKyAgRkZJX0ZBU1RDQUxMLAorICBGRklfTVNfQ0RFQ0wsCisgIEZGSV9MQVNUX0FCSSwKKyNpZmRlZiBfTVNDX1ZFUgorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTVNfQ0RFQ0wKKyNlbHNlCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiAjZW5kaWYKIAotI2lmZGVmIFg4Nl9XSU42NAorI2VsaWYgZGVmaW5lZChYODZfV0lONjQpCiAgIEZGSV9XSU42NCwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1dJTjY0LAotI2Vsc2UKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfV0lONjQKIAorI2Vsc2UKICAgLyogLS0tLSBJbnRlbCB4ODYgYW5kIEFNRCB4ODYtNjQgLSAqLwotI2lmICFkZWZpbmVkKFg4Nl9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX19hbWQ2NCkpCiAgIEZGSV9TWVNWLAogICBGRklfVU5JWDY0LCAgIC8qIFVuaXggdmFyaWFudHMgYWxsIHVzZSB0aGUgc2FtZSBBQkkgZm9yIHg4Ni02NCAgKi8KKyAgRkZJX0xBU1RfQUJJLAogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19pMzg2KQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKICNlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYNjQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYNjQKICNlbmRpZgogI2VuZGlmCi0jZW5kaWYgLyogWDg2X1dJTjY0ICovCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQogfSBmZmlfYWJpOwogI2VuZGlmCiAKQEAgLTk1LDEzICsxMTMsMTQgQEAKICNkZWZpbmUgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCIChGRklfVFlQRV9MQVNUICsgMSkKICNkZWZpbmUgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCIChGRklfVFlQRV9MQVNUICsgMikKICNkZWZpbmUgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCIChGRklfVFlQRV9MQVNUICsgMykKKyNkZWZpbmUgRkZJX1RZUEVfTVNfU1RSVUNUICAgICAgIChGRklfVFlQRV9MQVNUICsgNCkKIAogI2lmIGRlZmluZWQgKFg4Nl82NCkgfHwgKGRlZmluZWQgKF9feDg2XzY0X18pICYmIGRlZmluZWQgKFg4Nl9EQVJXSU4pKQogI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI0CiAjZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCiAjZWxzZQogI2lmZGVmIFg4Nl9XSU4zMgotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEzCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNTIKICNlbHNlCiAjaWZkZWYgWDg2X1dJTjY0CiAjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TCmluZGV4IGY0YjZjMWUuLmYxMDhkZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3N5c3YuUwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDEtMjAwMywgMjAwNSwgMjAwOCAgUmVkIEhhdCwgSW5jLgorICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDAxLTIwMDMsIDIwMDUsIDIwMDgsIDIwMTAgIFJlZCBIYXQsIEluYy4KICAgIAogICAgWDg2IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC00OCw2ICs0OCw5IEBACiAJbW92bCAgMTYoJWVicCksJWVjeAogCXN1YmwgICVlY3gsJWVzcAogCisgICAgICAgIC8qIEFsaWduIHRoZSBzdGFjayBwb2ludGVyIHRvIDE2LWJ5dGVzICovCisgICAgICAgIGFuZGwgICQweGZmZmZmZmYwLCAlZXNwCisKIAltb3ZsICAlZXNwLCVlYXgKIAogCS8qIFBsYWNlIGFsbCBvZiB0aGUgZmZpX3ByZXBfYXJncyBpbiBwb3NpdGlvbiAgKi8KQEAgLTMyNSwyMyArMzI4LDUyIEBACiAJLnNpemUJZmZpX2Nsb3N1cmVfcmF3X1NZU1YsIC4tZmZpX2Nsb3N1cmVfcmF3X1NZU1YKICNlbmRpZgogCisjaWYgZGVmaW5lZCBfX1BJQ19fCisjIGlmIGRlZmluZWQgX19zdW5fXyAmJiBkZWZpbmVkIF9fc3ZyNF9fCisvKiAzMi1iaXQgU29sYXJpcyAyL3g4NiB1c2VzIGRhdGFyZWwgZW5jb2RpbmcgZm9yIFBJQy4gIEdOVSBsZCBiZWZvcmUgMi4yMgorICAgZG9lc24ndCBjb3JyZWN0bHkgc29ydCAuZWhfZnJhbWVfaGRyIHdpdGggbWl4ZWQgZW5jb2RpbmdzLCBzbyBtYXRjaCB0aGlzLiAgKi8KKyMgIGRlZmluZSBGREVfRU5DT0RJTkcJCTB4MzAJLyogZGF0YXJlbCAqLworIyAgZGVmaW5lIEZERV9FTkNPREUoWCkJCVhAR09UT0ZGCisjIGVsc2UKKyMgIGRlZmluZSBGREVfRU5DT0RJTkcJCTB4MWIJLyogcGNyZWwgc2RhdGE0ICovCisjICBpZiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCisjICAgZGVmaW5lIEZERV9FTkNPREUoWCkJWC0uCisjICBlbHNlCisjICAgZGVmaW5lIEZERV9FTkNPREUoWCkJWEByZWwKKyMgIGVuZGlmCisjIGVuZGlmCisjZWxzZQorIyBkZWZpbmUgRkRFX0VOQ09ESU5HCQkwCS8qIGFic29sdXRlICovCisjIGRlZmluZSBGREVfRU5DT0RFKFgpCQlYCisjZW5kaWYKKwogCS5zZWN0aW9uCS5laF9mcmFtZSxFSF9GUkFNRV9GTEFHUyxAcHJvZ2JpdHMKIC5MZnJhbWUxOgogCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQkvKiBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5ICovCiAuTFNDSUUxOgogCS5sb25nCTB4MAkvKiBDSUUgSWRlbnRpZmllciBUYWcgKi8KIAkuYnl0ZQkweDEJLyogQ0lFIFZlcnNpb24gKi8KKyNpZmRlZiBIQVZFX0FTX0FTQ0lJX1BTRVVET19PUAogI2lmZGVmIF9fUElDX18KIAkuYXNjaWkgInpSXDAiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KICNlbHNlCiAJLmFzY2lpICJcMCIJLyogQ0lFIEF1Z21lbnRhdGlvbiAqLwogI2VuZGlmCisjZWxpZiBkZWZpbmVkIEhBVkVfQVNfU1RSSU5HX1BTRVVET19PUAorI2lmZGVmIF9fUElDX18KKwkuc3RyaW5nICJ6UiIJLyogQ0lFIEF1Z21lbnRhdGlvbiAqLworI2Vsc2UKKwkuc3RyaW5nICIiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KKyNlbmRpZgorI2Vsc2UKKyNlcnJvciBtaXNzaW5nIC5hc2NpaS8uc3RyaW5nCisjZW5kaWYKIAkuYnl0ZQkweDEJLyogLnVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yICovCiAJLmJ5dGUJMHg3YwkvKiAuc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvciAqLwogCS5ieXRlCTB4OAkvKiBDSUUgUkEgQ29sdW1uICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MQkvKiAudWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplICovCi0JLmJ5dGUJMHgxYgkvKiBGREUgRW5jb2RpbmcgKHBjcmVsIHNkYXRhNCkgKi8KKwkuYnl0ZQlGREVfRU5DT0RJTkcKICNlbmRpZgogCS5ieXRlCTB4YwkvKiBEV19DRkFfZGVmX2NmYSAqLwogCS5ieXRlCTB4NAkvKiAudWxlYjEyOCAweDQgKi8KQEAgLTM1NCwxNCArMzg2LDggQEAKIAkubG9uZwkuTEVGREUxLS5MQVNGREUxCS8qIEZERSBMZW5ndGggKi8KIC5MQVNGREUxOgogCS5sb25nCS5MQVNGREUxLS5MZnJhbWUxCS8qIEZERSBDSUUgb2Zmc2V0ICovCi0jaWYgZGVmaW5lZCBfX1BJQ19fICYmIGRlZmluZWQgSEFWRV9BU19YODZfUENSRUwKLQkubG9uZwkuTEZCMS0uCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCi0jZWxpZiBkZWZpbmVkIF9fUElDX18KLQkubG9uZwkuTEZCMUByZWwKLSNlbHNlCi0JLmxvbmcJLkxGQjEKLSNlbmRpZgotCS5sb25nCS5MRkUxLS5MRkIxCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCisJLmxvbmcJRkRFX0VOQ09ERSguTEZCMSkJLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KKwkubG9uZwkuTEZFMS0uTEZCMQkJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KICNpZmRlZiBfX1BJQ19fCiAJLmJ5dGUJMHgwCS8qIC51bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUgKi8KICNlbmRpZgpAQCAtMzgxLDE0ICs0MDcsOCBAQAogCS5sb25nCS5MRUZERTItLkxBU0ZERTIJLyogRkRFIExlbmd0aCAqLwogLkxBU0ZERTI6CiAJLmxvbmcJLkxBU0ZERTItLkxmcmFtZTEJLyogRkRFIENJRSBvZmZzZXQgKi8KLSNpZiBkZWZpbmVkIF9fUElDX18gJiYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAotCS5sb25nCS5MRkIyLS4JLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KLSNlbGlmIGRlZmluZWQgX19QSUNfXwotCS5sb25nCS5MRkIyQHJlbAotI2Vsc2UKLQkubG9uZwkuTEZCMgotI2VuZGlmCi0JLmxvbmcJLkxGRTItLkxGQjIJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KKwkubG9uZwlGREVfRU5DT0RFKC5MRkIyKQkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLworCS5sb25nCS5MRkUyLS5MRkIyCQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDAJLyogLnVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZSAqLwogI2VuZGlmCkBAIC00MTcsMTQgKzQzNyw4IEBACiAJLmxvbmcJLkxFRkRFMy0uTEFTRkRFMwkvKiBGREUgTGVuZ3RoICovCiAuTEFTRkRFMzoKIAkubG9uZwkuTEFTRkRFMy0uTGZyYW1lMQkvKiBGREUgQ0lFIG9mZnNldCAqLwotI2lmIGRlZmluZWQgX19QSUNfXyAmJiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCi0JLmxvbmcJLkxGQjMtLgkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLwotI2VsaWYgZGVmaW5lZCBfX1BJQ19fCi0JLmxvbmcJLkxGQjNAcmVsCi0jZWxzZQotCS5sb25nCS5MRkIzCi0jZW5kaWYKLQkubG9uZwkuTEZFMy0uTEZCMwkvKiBGREUgYWRkcmVzcyByYW5nZSAqLworCS5sb25nCUZERV9FTkNPREUoLkxGQjMpCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCisJLmxvbmcJLkxGRTMtLkxGQjMJCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MAkvKiAudWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUwppbmRleCBmZTNmNGZkLi43YTY2MTlhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TCkBAIC0zMjQsNyArMzI0LDExIEBACiAuTFVXOToKIAkuc2l6ZQlmZmlfY2xvc3VyZV91bml4NjQsLi1mZmlfY2xvc3VyZV91bml4NjQKIAorI2lmZGVmIEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUKKwkuc2VjdGlvbgkuZWhfZnJhbWUsImEiLEB1bndpbmQKKyNlbHNlCiAJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMKKyNlbmRpZgogLkxmcmFtZTE6CiAJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCQkvKiBDSUUgTGVuZ3RoICovCiAuTFNDSUUxOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUwppbmRleCBhYzFlZDZmLi4yNGI3YmJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUwpAQCAtNDUsNiArNDUsNyBAQAogZmZpX2NhbGxfd2luMzIgUFJPQyBORUFSLAogICAgIGZmaV9wcmVwX2FyZ3MgOiBORUFSIFBUUiBEV09SRCwKICAgICBlY2lmICAgICAgICAgIDogTkVBUiBQVFIgRFdPUkQsCisgICAgY2lmX2FiaSAgICAgICA6IERXT1JELAogICAgIGNpZl9ieXRlcyAgICAgOiBEV09SRCwKICAgICBjaWZfZmxhZ3MgICAgIDogRFdPUkQsCiAgICAgcnZhbHVlICAgICAgICA6IE5FQVIgUFRSIERXT1JELApAQCAtNjQsNiArNjUsMTkgQEAKICAgICAgICAgOzsgUmV0dXJuIHN0YWNrIHRvIHByZXZpb3VzIHN0YXRlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbgogICAgICAgICBhZGQgIGVzcCwgOAogCisJOzsgSGFuZGxlIHRoaXNjYWxsIGFuZCBmYXN0Y2FsbAorCWNtcCBjaWZfYWJpLCAzIDs7IEZGSV9USElTQ0FMTAorCWp6IGRvX3RoaXNjYWxsCisJY21wIGNpZl9hYmksIDQgOzsgRkZJX0ZBU1RDQUxMCisJam56IGRvX3N0ZGNhbGwKKwltb3YgZWN4LCBEV09SRCBQVFIgW2VzcF0KKwltb3YgZWR4LCBEV09SRCBQVFIgW2VzcCs0XQorCWFkZCBlc3AsIDgKKwlqbXAgZG9fc3RkY2FsbAorZG9fdGhpc2NhbGw6CisJbW92IGVjeCwgRFdPUkQgUFRSIFtlc3BdCisJYWRkIGVzcCwgNAorZG9fc3RkY2FsbDoKICAgICAgICAgY2FsbCBmbgogCiAgICAgICAgIDs7IGNkZWNsOiAgIHdlIHJlc3RvcmUgZXNwIGluIHRoZSBlcGlsb2d1ZSwgc28gdGhlcmUncyBubyBuZWVkIHRvCkBAIC05NCwzMSArMTA4LDM3IEBACiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjYV9yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNhX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHN0cnVjdDFiICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c3RydWN0MmIgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKKyAgICAgICAgZGQgb2Zmc2V0IGNhX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX01TX1NUUlVDVAogCi1jYV9yZXRpbnQ4OgotICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCi0gICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYWwKLSAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKKyAgICAgICAgLyogU2lnbi96ZXJvIGV4dGVuZCBhcyBhcHByb3ByaWF0ZS4gICovCitjYV9yZXR1aW50ODoKKyAgICAgICAgbW92enggZWF4LCBhbAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKIAotY2FfcmV0aW50MTY6Ci0gICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92ICAgZWN4LCBydmFsdWUKLSAgICAgICAgbW92ICAgW2VjeCArIDBdLCBheAotICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQorY2FfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgYWwKKyAgICAgICAgam1wICAgY2FfcmV0aW50CisKK2NhX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBheAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKKworY2FfcmV0c2ludDE2OgorICAgICAgICBtb3ZzeCBlYXgsIGF4CisgICAgICAgIGptcCAgIGNhX3JldGludAogCiBjYV9yZXRpbnQ6CiAgICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKQEAgLTE1MSwxMSArMTcxLDMxIEBACiAgICAgICAgIGZzdHAgIFRCWVRFIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQogCitjYV9yZXRzdHJ1Y3QxYjoKKyAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQorICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQorICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGFsCisgICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCisKK2NhX3JldHN0cnVjdDJiOgorICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCisgICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYXgKKyAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKKwogY2FfZXBpbG9ndWU6CiAgICAgICAgIDs7IEVwaWxvZ3VlIGNvZGUgaXMgYXV0b2dlbmVyYXRlZC4KICAgICAgICAgcmV0CiBmZmlfY2FsbF93aW4zMiBFTkRQCiAKK2ZmaV9jbG9zdXJlX1RISVNDQUxMIFBST0MgTkVBUiBGT1JDRUZSQU1FCisJc3ViCWVzcCwgNDAKKwlsZWEJZWR4LCBbZWJwIC0yNF0KKwltb3YJW2VicCAtIDEyXSwgZWR4CS8qIHJlc3AgKi8KKwlsZWEJZWR4LCBbZWJwICsgMTJdICAvKiBhY2NvdW50IGZvciBzdHViIHJldHVybiBhZGRyZXNzIG9uIHN0YWNrICovCisJam1wCXN0dWIKK2ZmaV9jbG9zdXJlX1RISVNDQUxMIEVORFAKKwogZmZpX2Nsb3N1cmVfU1lTViBQUk9DIE5FQVIgRk9SQ0VGUkFNRQogICAgIDs7IHRoZSBmZmlfY2xvc3VyZSBjdHggaXMgcGFzc2VkIGluIGVheCBieSB0aGUgdHJhbXBvbGluZS4KIApAQCAtMTYzLDYgKzIwMyw3IEBACiAgICAgICAgIGxlYSAgZWR4LCBbZWJwIC0gMjRdCiAgICAgICAgIG1vdiAgW2VicCAtIDEyXSwgZWR4ICAgICAgICAgOzsgcmVzcAogICAgICAgICBsZWEgIGVkeCwgW2VicCArIDhdCitzdHViOjoKICAgICAgICAgbW92ICBbZXNwICsgOF0sIGVkeCAgICAgICAgICA7OyBhcmdzCiAgICAgICAgIGxlYSAgZWR4LCBbZWJwIC0gMTJdCiAgICAgICAgIG1vdiAgW2VzcCArIDRdLCBlZHggICAgICAgICAgOzsgJnJlc3AKQEAgLTE3OSwyNiArMjIwLDM1IEBACiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjc19yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHN0cnVjdCAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldG1zc3RydWN0ICAgIDs7IEZGSV9UWVBFX01TX1NUUlVDVAogCi1jc19yZXRpbnQ4OgotICAgICAgICBtb3YgICBhbCwgW2VjeF0KK2NzX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCiAKLWNzX3JldGludDE2OgotICAgICAgICBtb3YgICBheCwgW2VjeF0KK2NzX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIEJZVEUgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCisKK2NzX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBXT1JEIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQorCitjc19yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgV09SRCBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKIAogY3NfcmV0aW50OgpAQCAtMjI3LDYgKzI3NywxMiBAQAogICAgICAgICA7OyBFcGlsb2d1ZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuCiAgICAgICAgIHJldAk0CiAKK2NzX3JldG1zc3RydWN0OgorICAgICAgICA7OyBDYWxsZXIgZXhwZWN0cyB1cyB0byByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZWFsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgbW92ICAgZWF4LCBlY3gKKyAgICAgICAgOzsgQ2FsbGVyIGRvZXNuJ3QgZXhwZWN0cyB1cyB0byBwb3Agc3RydWN0IHJldHVybiB2YWx1ZSBwb2ludGVyIGhpZGRlbiBhcmcuCisgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCisKIGNzX2VwaWxvZ3VlOgogICAgICAgICA7OyBFcGlsb2d1ZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuCiAgICAgICAgIHJldApAQCAtMjM5LDcgKzI5NSwxNiBAQAogI2RlZmluZSBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUIChSQVdfQ0xPU1VSRV9GVU5fT0ZGU0VUICsgNCkKICNkZWZpbmUgQ0lGX0ZMQUdTX09GRlNFVCAyMAogCi1mZmlfY2xvc3VyZV9yYXdfU1lTViBQUk9DIE5FQVIgVVNFUyBlc2kKK2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBQUk9DIE5FQVIgVVNFUyBlc2kgRk9SQ0VGUkFNRQorCXN1YiBlc3AsIDM2CisJbW92ICBlc2ksIFtlYXggKyBSQVdfQ0xPU1VSRV9DSUZfT0ZGU0VUXSAgICAgICAgOzsgY2xvc3VyZS0+Y2lmCisJbW92ICBlZHgsIFtlYXggKyBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUXSAgOzsgY2xvc3VyZS0+dXNlcl9kYXRhCisJbW92IFtlc3AgKyAxMl0sIGVkeAorCWxlYSBlZHgsIFtlYnAgKyAxMl0KKwlqbXAgc3R1YnJhdworZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIEVORFAKKworZmZpX2Nsb3N1cmVfcmF3X1NZU1YgUFJPQyBORUFSIFVTRVMgZXNpIEZPUkNFRlJBTUUKICAgICA7OyB0aGUgZmZpX2Nsb3N1cmUgY3R4IGlzIHBhc3NlZCBpbiBlYXggYnkgdGhlIHRyYW1wb2xpbmUuCiAKICAgICAgICAgc3ViICBlc3AsIDQwCkBAIC0yNDcsNiArMzEyLDcgQEAKICAgICAgICAgbW92ICBlZHgsIFtlYXggKyBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUXSAgOzsgY2xvc3VyZS0+dXNlcl9kYXRhCiAgICAgICAgIG1vdiAgW2VzcCArIDEyXSwgZWR4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVzZXJfZGF0YQogICAgICAgICBsZWEgIGVkeCwgW2VicCArIDhdCitzdHVicmF3OjoKICAgICAgICAgbW92ICBbZXNwICsgOF0sIGVkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgcmF3X2FyZ3MKICAgICAgICAgbGVhICBlZHgsIFtlYnAgLSAyNF0KICAgICAgICAgbW92ICBbZXNwICsgNF0sIGVkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgJnJlcwpAQCAtMjY0LDI2ICszMzAsMzUgQEAKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGZsb2F0ICAgICAgIDs7IEZGSV9UWVBFX0ZMT0FUCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRkb3VibGUgICAgICA7OyBGRklfVFlQRV9ET1VCTEUKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGxvbmdkb3VibGUgIDs7IEZGSV9UWVBFX0xPTkdET1VCTEUKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2Ci0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHVpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0dWludDE2ICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1VJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9VSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY3JfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfU1RSVUNUCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9QT0lOVEVSCi0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QgorICAgICAgICBkZCBvZmZzZXQgY3JfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfTVNfU1RSVUNUCiAKLWNyX3JldGludDg6Ci0gICAgICAgIG1vdiAgIGFsLCBbZWN4XQorY3JfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKIAotY3JfcmV0aW50MTY6Ci0gICAgICAgIG1vdiAgIGF4LCBbZWN4XQorY3JfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgQllURSBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKKworY3JfcmV0dWludDE2OgorICAgICAgICBtb3Z6eCBlYXgsIFdPUkQgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCisKK2NyX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBXT1JEIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjcl9lcGlsb2d1ZQogCiBjcl9yZXRpbnQ6CkBAIC0zMzcsMjYgKzQxMiwzNCBAQAogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjZF9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCiAKLWNkX3JldGludDg6Ci0gICAgICAgIG1vdiAgIGFsLCBbZWN4XQorY2RfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKIAotY2RfcmV0aW50MTY6Ci0gICAgICAgIG1vdiAgIGF4LCBbZWN4XQorY2RfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgQllURSBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKKworY2RfcmV0dWludDE2OgorICAgICAgICBtb3Z6eCBlYXgsIFdPUkQgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCisKK2NkX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBXT1JEIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjZF9lcGlsb2d1ZQogCiBjZF9yZXRpbnQ6CkBAIC0zOTUsNyArNDc4LDkgQEAKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KICAgICAgICAgLmJhbGlnbiAxNgogCS5nbG9ibAlfZmZpX2NhbGxfd2luMzIKKyNpZm5kZWYgX19PUzJfXwogCS5kZWYJX2ZmaV9jYWxsX3dpbjMyOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jYWxsX3dpbjMyOgogLkxGQjE6CiAgICAgICAgIHB1c2hsICVlYnAKQEAgLTQwMyw3ICs0ODgsNyBAQAogICAgICAgICBtb3ZsICAlZXNwLCVlYnAKIC5MQ0ZJMToKICAgICAgICAgIyBNYWtlIHJvb20gZm9yIGFsbCBvZiB0aGUgbmV3IGFyZ3MuCi0gICAgICAgIG1vdmwgIDE2KCVlYnApLCVlY3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBtb3ZsICAyMCglZWJwKSwlZWN4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgc3VibCAgJWVjeCwlZXNwCiAgCiAgICAgICAgIG1vdmwgICVlc3AsJWVheApAQCAtNDE1LDE5ICs1MDAsMzQgQEAKICAKICAgICAgICAgIyBSZXR1cm4gc3RhY2sgdG8gcHJldmlvdXMgc3RhdGUgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uCiAgICAgICAgIGFkZGwgICQ4LCVlc3AKLSAKKworCSMgSGFuZGxlIGZhc3RjYWxsIGFuZCB0aGlzY2FsbAorCWNtcGwgJDMsIDE2KCVlYnApICAjIEZGSV9USElTQ0FMTAorCWp6IC5kb190aGlzY2FsbAorCWNtcGwgJDQsIDE2KCVlYnApICMgRkZJX0ZBU1RDQUxMCisJam56IC5kb19mbmNhbGwKKwltb3ZsICglZXNwKSwgJWVjeAorCW1vdmwgNCglZXNwKSwgJWVkeAorCWFkZGwgJDgsICVlc3AKKwlqbXAgLmRvX2ZuY2FsbAorLmRvX3RoaXNjYWxsOgorCW1vdmwgKCVlc3ApLCAlZWN4CisJYWRkbCAkNCwgJWVzcAorCisuZG9fZm5jYWxsOgorCSAKICAgICAgICAgIyBGSVhNRTogQWxpZ24gdGhlIHN0YWNrIHRvIGEgMTI4LWJpdCBib3VuZGFyeSB0byBhdm9pZAogICAgICAgICAjIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBoaXRzLgogCi0gICAgICAgIGNhbGwgICoyOCglZWJwKQorICAgICAgICBjYWxsICAqMzIoJWVicCkKICAKICAgICAgICAgIyBzdGRjYWxsIGZ1bmN0aW9ucyBwb3AgYXJndW1lbnRzIG9mZiB0aGUgc3RhY2sgdGhlbXNlbHZlcwogCiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUKLSAgICAgICAgbW92bCAgMjAoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CiAgCiAgICAgICAgICMgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCi0gICAgICAgIGNtcGwgICQwLDI0KCVlYnApCisgICAgICAgIGNtcGwgICQwLDI4KCVlYnApCiAgICAgICAgIGpuZSAgIDBmCiAgCiAgICAgICAgICMgRXZlbiBpZiB0aGVyZSBpcyBubyBzcGFjZSBmb3IgdGhlIHJldHVybiB2YWx1ZSwgd2UgYXJlCkBAIC00NjAsNiArNTYwLDcgQEAKIAkubG9uZwkuTHJldHN0cnVjdDFiCQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIgKi8KIAkubG9uZwkuTHJldHN0cnVjdDJiCQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKi8KIAkubG9uZwkuTHJldHN0cnVjdDRiCQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKi8KKwkubG9uZwkuTHJldHN0cnVjdAkJLyogRkZJX1RZUEVfTVNfU1RSVUNUICovCiAxOgogCWFkZAklZWN4LCAlZWN4CiAJYWRkCSVlY3gsICVlY3gKQEAgLTQ4Niw1MCArNTg3LDUwIEBACiAKIC5McmV0aW50OgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmwgICVlYXgsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldGZsb2F0OgogICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBmc3RwcyAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRkb3VibGU6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgZnN0cGwgKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0bG9uZ2RvdWJsZToKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBmc3RwdCAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRpbnQ2NDoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZsICAlZWF4LDAoJWVjeCkKICAgICAgICAgbW92bCAgJWVkeCw0KCVlY3gpCiAJam1wICAgLkxlcGlsb2d1ZQogCiAuTHJldHN0cnVjdDFiOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmIgICVhbCwwKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0c3RydWN0MmI6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92dyAgJWF4LDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogCiAuTHJldHN0cnVjdDRiOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmwgICVlYXgsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAKQEAgLTU0MiwxMiArNjQzLDI3IEBACiAgICAgICAgIHBvcGwgJWVicAogICAgICAgICByZXQKIC5mZmlfY2FsbF93aW4zMl9lbmQ6CisgICAgICAgIC5iYWxpZ24gMTYKKwkuZ2xvYmwJX2ZmaV9jbG9zdXJlX1RISVNDQUxMCisjaWZuZGVmIF9fT1MyX18KKwkuZGVmCV9mZmlfY2xvc3VyZV9USElTQ0FMTDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKK19mZmlfY2xvc3VyZV9USElTQ0FMTDoKKwlwdXNobAklZWJwCisJbW92bAklZXNwLCAlZWJwCisJc3VibAkkNDAsICVlc3AKKwlsZWFsCS0yNCglZWJwKSwgJWVkeAorCW1vdmwJJWVkeCwgLTEyKCVlYnApCS8qIHJlc3AgKi8KKwlsZWFsCTEyKCVlYnApLCAlZWR4ICAvKiBhY2NvdW50IGZvciBzdHViIHJldHVybiBhZGRyZXNzIG9uIHN0YWNrICovCisJam1wCS5zdHViCiAuTEZFMToKIAogICAgICAgICAjIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogICAgICAgICAuYmFsaWduIDE2CiAJLmdsb2JsCV9mZmlfY2xvc3VyZV9TWVNWCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2xvc3VyZV9TWVNWOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jbG9zdXJlX1NZU1Y6CiAuTEZCMzoKIAlwdXNobAklZWJwCkBAIC01NTgsNiArNjc0LDcgQEAKIAlsZWFsCS0yNCglZWJwKSwgJWVkeAogCW1vdmwJJWVkeCwgLTEyKCVlYnApCS8qIHJlc3AgKi8KIAlsZWFsCTgoJWVicCksICVlZHgKKy5zdHViOgogCW1vdmwJJWVkeCwgNCglZXNwKQkvKiBhcmdzID0gX19idWlsdGluX2R3YXJmX2NmYSAoKSAqLwogCWxlYWwJLTEyKCVlYnApLCAlZWR4CiAJbW92bAklZWR4LCAoJWVzcCkJLyogJnJlc3AgKi8KQEAgLTU4Niw2ICs3MDMsNyBAQAogCS5sb25nCS5MY2xzX3JldHN0cnVjdDEJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCICovCiAJLmxvbmcJLkxjbHNfcmV0c3RydWN0MgkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKi8KIAkubG9uZwkuTGNsc19yZXRzdHJ1Y3Q0CS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QiAqLworCS5sb25nCS5MY2xzX3JldG1zc3RydWN0CS8qIEZGSV9UWVBFX01TX1NUUlVDVCAqLwogCiAxOgogCWFkZAklZWF4LCAlZWF4CkBAIC02NTAsNiArNzY4LDEyIEBACiAJcG9wbAklZWJwCiAJcmV0CSQweDQKIAorLkxjbHNfcmV0bXNzdHJ1Y3Q6CisJIyBDYWxsZXIgZXhwZWN0cyB1cyB0byByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZWFsIHJldHVybiB2YWx1ZS4KKwltb3YJJWVjeCwgJWVheAorCSMgQ2FsbGVyIGRvZXNuJ3QgZXhwZWN0cyB1cyB0byBwb3Agc3RydWN0IHJldHVybiB2YWx1ZSBwb2ludGVyIGhpZGRlbiBhcmcuCisJam1wCS5MY2xzX2VwaWxvZ3VlCisKIC5MY2xzX25vcmV0dmFsOgogLkxjbHNfZXBpbG9ndWU6CiAJbW92bAklZWJwLCAlZXNwCkBAIC02NjQsMTEgKzc4OCwyNyBAQAogI2RlZmluZSBSQVdfQ0xPU1VSRV9GVU5fT0ZGU0VUIChSQVdfQ0xPU1VSRV9DSUZfT0ZGU0VUICsgNCkKICNkZWZpbmUgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCAoUkFXX0NMT1NVUkVfRlVOX09GRlNFVCArIDQpCiAjZGVmaW5lIENJRl9GTEFHU19PRkZTRVQgMjAKLQorICAgICAgICAuYmFsaWduIDE2CisJLmdsb2JsCV9mZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwKKyNpZm5kZWYgX19PUzJfXworCS5kZWYJX2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKK19mZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEw6CisJcHVzaGwJJWVicAorCW1vdmwJJWVzcCwgJWVicAorCXB1c2hsCSVlc2kKKwlzdWJsCSQzNiwgJWVzcAorCW1vdmwJUkFXX0NMT1NVUkVfQ0lGX09GRlNFVCglZWF4KSwgJWVzaQkgLyogY2xvc3VyZS0+Y2lmICovCisJbW92bAlSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUKCVlYXgpLCAlZWR4IC8qIGNsb3N1cmUtPnVzZXJfZGF0YSAqLworCW1vdmwJJWVkeCwgMTIoJWVzcCkJLyogdXNlcl9kYXRhICovCisJbGVhbAkxMiglZWJwKSwgJWVkeAkvKiBfX2J1aWx0aW5fZHdhcmZfY2ZhICgpICovCisJam1wCS5zdHVicmF3CiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAgICAgICAgIC5iYWxpZ24gMTYKIAkuZ2xvYmwJX2ZmaV9jbG9zdXJlX3Jhd19TWVNWCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2xvc3VyZV9yYXdfU1lTVjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2xvc3VyZV9yYXdfU1lTVjoKIC5MRkI0OgogCXB1c2hsCSVlYnAKQEAgLTY4Miw2ICs4MjIsNyBAQAogCW1vdmwJUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCglZWF4KSwgJWVkeCAvKiBjbG9zdXJlLT51c2VyX2RhdGEgKi8KIAltb3ZsCSVlZHgsIDEyKCVlc3ApCS8qIHVzZXJfZGF0YSAqLwogCWxlYWwJOCglZWJwKSwgJWVkeAkvKiBfX2J1aWx0aW5fZHdhcmZfY2ZhICgpICovCisuc3R1YnJhdzoKIAltb3ZsCSVlZHgsIDgoJWVzcCkJLyogcmF3X2FyZ3MgKi8KIAlsZWFsCS0yNCglZWJwKSwgJWVkeAogCW1vdmwJJWVkeCwgNCglZXNwKQkvKiAmcmVzICovCkBAIC03MTAsNiArODUxLDcgQEAKIAkubG9uZwkuTHJjbHNfcmV0c3RydWN0MQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIgKi8KIAkubG9uZwkuTHJjbHNfcmV0c3RydWN0MgkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKi8KIAkubG9uZwkuTHJjbHNfcmV0c3RydWN0NAkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKi8KKwkubG9uZwkuTHJjbHNfcmV0c3RydWN0CS8qIEZGSV9UWVBFX01TX1NUUlVDVCAqLwogMToKIAlhZGQJJWVheCwgJWVheAogCWFkZAklZWF4LCAlZWF4CkBAIC03ODQsNyArOTI2LDkgQEAKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KIAkuYmFsaWduCTE2CiAJLmdsb2JsCV9mZmlfY2xvc3VyZV9TVERDQUxMCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2xvc3VyZV9TVERDQUxMOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jbG9zdXJlX1NURENBTEw6CiAuTEZCNToKIAlwdXNobAklZWJwCkBAIC04OTAsNyArMTAzNCw5IEBACiAuZmZpX2Nsb3N1cmVfU1REQ0FMTF9lbmQ6CiAuTEZFNToKIAorI2lmbmRlZiBfX09TMl9fCiAJLnNlY3Rpb24JLmVoX2ZyYW1lLCJ3IgorI2VuZGlmCiAuTGZyYW1lMToKIC5MU0NJRTE6CiAJLmxvbmcJLkxFQ0lFMS0uTEFTQ0lFMSAgLyogTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUwppbmRleCA2ZTkxODE4Li5mY2RiMjcwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUwpAQCAtMjMyLDEwICsyMzIsMTggQEAKIGZmaV9jYWxsX3dpbjY0IEVORFAKIF9URVhUCUVORFMKIEVORAotI2Vsc2UgICAgICAgIAorCisjZWxzZQorCisjaWZkZWYgU1lNQk9MX1VOREVSU0NPUkUKKyNkZWZpbmUgU1lNQk9MX05BTUUobmFtZSkgXyMjbmFtZQorI2Vsc2UKKyNkZWZpbmUgU1lNQk9MX05BTUUobmFtZSkgbmFtZQorI2VuZGlmCisKIC50ZXh0CiAKLS5leHRlcm4gX2ZmaV9jbG9zdXJlX3dpbjY0X2lubmVyCisuZXh0ZXJuIFNZTUJPTF9OQU1FKGZmaV9jbG9zdXJlX3dpbjY0X2lubmVyKQogCiAjIGZmaV9jbG9zdXJlX3dpbjY0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlc2UgcmVnaXN0ZXJzIHNldDoKICMgICAgcmF4IHBvaW50cyB0byAnY2xvc3VyZScKQEAgLTI0Niw4ICsyNTQsOCBAQAogIyBjYWxsIGZmaV9jbG9zdXJlX3dpbjY0X2lubmVyIGZvciB0aGUgYWN0dWFsIHdvcmssIHRoZW4gcmV0dXJuIHRoZSByZXN1bHQuCiAjIAogCS5iYWxpZ24gMTYKLSAgICAgICAgLmdsb2JsIF9mZmlfY2xvc3VyZV93aW42NAkKLV9mZmlfY2xvc3VyZV93aW42NDogICAgIAorICAgICAgICAuZ2xvYmwgU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjQpCitTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NCk6CiAJIyBjb3B5IHJlZ2lzdGVyIGFyZ3VtZW50cyBvbnRvIHN0YWNrCiAJdGVzdAkkMSwlcjExCiAJam5lCS5MZmlyc3RfaXNfZmxvYXQJCkBAIC0yODcsNyArMjk1LDcgQEAKIAltb3YJJXJheCwgJXJjeAkjIGNvbnRleHQgaXMgZmlyc3QgcGFyYW1ldGVyCiAJbW92CSVyc3AsICVyZHgJIyBzdGFjayBpcyBzZWNvbmQgcGFyYW1ldGVyCiAJYWRkCSQ0OCwgJXJkeAkjIHBvaW50IHRvIHN0YXJ0IG9mIGFyZ3VtZW50cwotCW1vdgkkX2ZmaV9jbG9zdXJlX3dpbjY0X2lubmVyLCAlcmF4CisJbW92CSRTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NF9pbm5lciksICVyYXgKIAljYWxscQkqJXJheAkJIyBjYWxsIHRoZSByZWFsIGNsb3N1cmUgZnVuY3Rpb24KIAlhZGQJJDQwLCAlcnNwCiAJbW92cQklcmF4LCAleG1tMAkjIElmIHRoZSBjbG9zdXJlIHJldHVybmVkIGEgZmxvYXQsCkBAIC0yOTYsOCArMzA0LDggQEAKIC5mZmlfY2xvc3VyZV93aW42NF9lbmQ6CiAKIAkuYmFsaWduIDE2Ci0gICAgICAgIC5nbG9ibAlfZmZpX2NhbGxfd2luNjQKLV9mZmlfY2FsbF93aW42NDogICAgICAgIAorICAgICAgICAuZ2xvYmwJU1lNQk9MX05BTUUoZmZpX2NhbGxfd2luNjQpCitTWU1CT0xfTkFNRShmZmlfY2FsbF93aW42NCk6CiAgICAgICAgICMgY29weSByZWdpc3RlcnMgb250byBzdGFjawogCW1vdgklcjksMzIoJXJzcCkKIAltb3YJJXI4LDI0KCVyc3ApCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtCmluZGV4IGVhZTNkNzQuLjE0NmZkZjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtCkBAIC0xNSw2NiArMTUsNzEgQEAKIAogQ0xFQU5GSUxFUyA9ICouZXhlIGNvcmUqICoubG9nICouc3VtCiAKLUVYVFJBX0RJU1QgPSBsaWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cAlcCi1saWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0X2ZmaV9jYWxsLmNjIGxpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3QuY2MgXAotbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIGNvbmZpZy9kZWZhdWx0LmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIFwKLWxpYi9saWJmZmktZGcuZXhwIGxpYi93cmFwcGVyLmV4cCBsaWJmZmkuY2FsbC9mbG9hdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jIGxpYmZmaS5jYWxsL2Zsb2F0My5jIFwKLWxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgXAotbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgXAotbGliZmZpLmNhbGwvcHJvbW90aW9uLmMgbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAotbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNC5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDIuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIFwKLWxpYmZmaS5jYWxsL2Nsc191aW50LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKLWxpYmZmaS5jYWxsL2Zsb2F0MS5jIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIGxpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDEuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbHNfc3Nob3J0LmMgbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jIFwKLWxpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAotbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ni5jIGxpYmZmaS5jYWxsL3JldHVybl91Yy5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCi1saWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2xvY19mbjAuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCVwKLWxpYmZmaS5jYWxsL3JldHVybl9sbC5jIGxpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIFwKLWxpYmZmaS5jYWxsL2NhbGwuZXhwIGxpYmZmaS5jYWxsL2ZmaXRlc3QuaCBsaWJmZmkuY2FsbC9zdHJsZW4uYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fc2wuYyBsaWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgbGliZmZpLmNhbGwvcmV0dXJuX3VsLmMgXAotbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCi1saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMJXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydGNoYXIuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0LmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAotbGliZmZpLmNhbGwvc3RybGVuX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xkbC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGxpYmZmaS5jYWxsL3N0cnVjdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBsaWJmZmkuY2FsbC9jbHNfc2ludC5jIGxpYmZmaS5jYWxsL2Zsb2F0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgXAotbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0LmMgXAotbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZGJsLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKLWxpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIGxpYmZmaS5jYWxsL3B5b2JqYy10Yy5jCVwKLWxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfc2NoYXIuYyBcCi1saWJmZmkuY2FsbC9jbHNfMThieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBcCi1saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jCVwKLWxpYmZmaS5jYWxsL3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDMuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMJXAotbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgbGliZmZpLmNhbGwvc3RydWN0OS5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBsaWJmZmkuY2FsbC9tYW55LmMgXAotbGliZmZpLmNhbGwvc3RydWN0OC5jIGxpYmZmaS5jYWxsL25lZ2ludC5jIGxpYmZmaS5jYWxsL3N0cnVjdDUuYyBcCi1saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIFwKK0VYVFJBX0RJU1QgPSBjb25maWcvZGVmYXVsdC5leHAgbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgXAorbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYyBcCitsaWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgXAorbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9mZml0ZXN0LmggXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0LmMgXAorbGliZmZpLmNhbGwvc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBcCitsaWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgbGliZmZpLmNhbGwvc3RydWN0OC5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBsaWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIGxpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIFwKK2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jYWxsLmV4cCBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc191aW50LmMgbGliZmZpLmNhbGwvcmV0dXJuX2xsMS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNC5jIGxpYmZmaS5jYWxsL2Nsc191Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW4uYyBcCitsaWJmZmkuY2FsbC9tYW55LmMgbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9hLm91dCBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMy5jIGxpYmZmaS5jYWxsL2Zsb2F0My5jIGxpYmZmaS5jYWxsL21hbnkyLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYyBcCitsaWJmZmkuY2FsbC9jbHNfc3Nob3J0LmMgbGliZmZpLmNhbGwvbWFueV93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMgXAorbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsLmMgbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMgbGliZmZpLmNhbGwvZmxvYXQuYyBcCitsaWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9mbG9hdF92YS5jIGxpYmZmaS5jYWxsL25lZ2ludC5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9kYmwxLmMgbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgXAogbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYyBcCi1saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCitsaWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgXAorbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYyBsaWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCitsaWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbHNfc2ludC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jIFwKK2xpYmZmaS5jYWxsL2Nsc191c2hvcnQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIFwKK2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBcCitsaWJmZmkuY2FsbC9jbHNfZmxvYXQuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIFwKK2xpYmZmaS5jYWxsL3B5b2JqYy10Yy5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnRjaGFyLmMgXAorbGliZmZpLmNhbGwvc3RydWN0MS5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAorbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9wcm9ibGVtMS5jIGxpYmZmaS5jYWxsL2Zsb2F0NC5jIFwKK2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCitsaWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMgbGliZmZpLmNhbGwvc3RydWN0Ni5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9sbC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3QuY2MgbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAgXAorbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC9mZml0ZXN0Y3h4LmggXAorbGliL3dyYXBwZXIuZXhwIGxpYi90YXJnZXQtbGlicGF0aC5leHAgbGliL2xpYmZmaS5leHAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KaW5kZXggNjk4YzQ2MS4uNGNmNDBjYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtNTMsNiArNTMsNyBAQAogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUxMT0NBID0gQEFMTE9DQUAKIEFNVEFSID0gQEFNVEFSQAorQU1fTFRMREZMQUdTID0gQEFNX0xUTERGTEFHU0AKIEFNX1JVTlRFU1RGTEFHUyA9IAogQVIgPSBAQVJACiBBVVRPQ09ORiA9IEBBVVRPQ09ORkAKQEAgLTcwLDYgKzcxLDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtNzcsNiArNzksNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtOTUsNiArOTgsNyBAQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACiBNS0RJUl9QID0gQE1LRElSX1BACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACkBAIC0xMDcsNiArMTExLDcgQEAKIFBBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACiBQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKIFBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKIFBBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACiBQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKIFJBTkxJQiA9IEBSQU5MSUJACkBAIC0xMjEsNiArMTI2LDcgQEAKIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKIGFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACiBhY19jdF9DQyA9IEBhY19jdF9DQ0AKIGFjX2N0X0RVTVBCSU4gPSBAYWNfY3RfRFVNUEJJTkAKIGFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQApAQCAtMTUzLDcgKzE1OSw2IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbHRfRUNITyA9IEBsdF9FQ0hPQAogbWFuZGlyID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKQEAgLTE4Nyw2OSArMTkyLDc0IEBACiAJICAgIGVsc2UgZWNobyBydW50ZXN0OyBmaWAKIAogQ0xFQU5GSUxFUyA9ICouZXhlIGNvcmUqICoubG9nICouc3VtCi1FWFRSQV9ESVNUID0gbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAJXAotbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIFwKLWxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBjb25maWcvZGVmYXVsdC5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBcCi1saWIvbGliZmZpLWRnLmV4cCBsaWIvd3JhcHBlci5leHAgbGliZmZpLmNhbGwvZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKLWxpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCi1saWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCi1saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKLWxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAotbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBcCi1saWJmZmkuY2FsbC9jYWxsLmV4cCBsaWJmZmkuY2FsbC9mZml0ZXN0LmggbGliZmZpLmNhbGwvc3RybGVuLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwlcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKLWxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBsaWJmZmkuY2FsbC9weW9iamMtdGMuYwlcCi1saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYwlcCi1saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCVwKLWxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAotbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvbWFueS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDguYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitFWFRSQV9ESVNUID0gY29uZmlnL2RlZmF1bHQuZXhwIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zY2hhci5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAorbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvZmZpdGVzdC5oIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cnVjdDguYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCitsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBsaWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBcCitsaWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAorbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2FsbC5leHAgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBsaWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuLmMgXAorbGliZmZpLmNhbGwvbWFueS5jIGxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NS5jIGxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvYS5vdXQgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBsaWJmZmkuY2FsbC9tYW55Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMgXAorbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAorbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvZmxvYXRfdmEuYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIGxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIFwKIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIGxpYmZmaS5jYWxsL3JldHVybl9zbC5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAorbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCitsaWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBcCitsaWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgXAorbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBcCitsaWJmZmkuY2FsbC9weW9iamMtdGMuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKK2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMgbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCitsaWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAorbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3N0cnVjdDYuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBcCitsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIFwKK2xpYi93cmFwcGVyLmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIGxpYi9saWJmZmkuZXhwCiAKIGFsbDogYWxsLWFtCiAKQEAgLTI5OCw3ICszMDgsNyBAQAogCiAKIGNoZWNrLURFSkFHTlU6IHNpdGUuZXhwCi0Jc3JjZGlyPWAkKGFtX19jZCkgJChzcmNkaXIpICYmIHB3ZGA7IGV4cG9ydCBzcmNkaXI7IFwKKwlzcmNkaXI9JyQoc3JjZGlyKSc7IGV4cG9ydCBzcmNkaXI7IFwKIAlFWFBFQ1Q9JChFWFBFQ1QpOyBleHBvcnQgRVhQRUNUOyBcCiAJcnVudGVzdD0kKFJVTlRFU1QpOyBcCiAJaWYgJChTSEVMTCkgLWMgIiQkcnVudGVzdCAtLXZlcnNpb24iID4gL2Rldi9udWxsIDI+JjE7IHRoZW4gXApAQCAtMzA5LDEyICszMTksMTIgQEAKIAllbHNlIGVjaG8gIldBUk5JTkc6IGNvdWxkIG5vdCBmaW5kIFxgcnVudGVzdCciIDE+JjI7IDo7XAogCWZpOyBcCiAJZXhpdCAkJGV4aXRfc3RhdHVzCi1zaXRlLmV4cDogTWFrZWZpbGUKK3NpdGUuZXhwOiBNYWtlZmlsZSAkKEVYVFJBX0RFSkFHTlVfU0lURV9DT05GSUcpCiAJQGVjaG8gJ01ha2luZyBhIG5ldyBzaXRlLmV4cCBmaWxlLi4uJwogCUBlY2hvICcjIyB0aGVzZSB2YXJpYWJsZXMgYXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IG1ha2UgIyMnID5zaXRlLnRtcAogCUBlY2hvICcjIERvIG5vdCBlZGl0IGhlcmUuICBJZiB5b3Ugd2lzaCB0byBvdmVycmlkZSB0aGVzZSB2YWx1ZXMnID4+c2l0ZS50bXAKIAlAZWNobyAnIyBlZGl0IHRoZSBsYXN0IHNlY3Rpb24nID4+c2l0ZS50bXAKLQlAZWNobyAnc2V0IHNyY2RpciAkKHNyY2RpciknID4+c2l0ZS50bXAKKwlAZWNobyAnc2V0IHNyY2RpciAiJChzcmNkaXIpIicgPj5zaXRlLnRtcAogCUBlY2hvICJzZXQgb2JqZGlyIGBwd2RgIiA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCBidWlsZF9hbGlhcyAiJChidWlsZF9hbGlhcykiJyA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCBidWlsZF90cmlwbGV0ICQoYnVpbGRfdHJpcGxldCknID4+c2l0ZS50bXAKQEAgLTMyMiw5ICszMzIsMTYgQEAKIAlAZWNobyAnc2V0IGhvc3RfdHJpcGxldCAkKGhvc3RfdHJpcGxldCknID4+c2l0ZS50bXAKIAlAZWNobyAnc2V0IHRhcmdldF9hbGlhcyAiJCh0YXJnZXRfYWxpYXMpIicgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgdGFyZ2V0X3RyaXBsZXQgJCh0YXJnZXRfdHJpcGxldCknID4+c2l0ZS50bXAKLQlAZWNobyAnIyMgQWxsIHZhcmlhYmxlcyBhYm92ZSBhcmUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gRG8gTm90IEVkaXQgIyMnID4+c2l0ZS50bXAKLQlAdGVzdCAhIC1mIHNpdGUuZXhwIHx8IFwKLQkgIHNlZCAnMSwvXiMjIEFsbCB2YXJpYWJsZXMgYWJvdmUgYXJlLiojIy8gZCcgc2l0ZS5leHAgPj4gc2l0ZS50bXAKKwlAbGlzdD0nJChFWFRSQV9ERUpBR05VX1NJVEVfQ09ORklHKSc7IGZvciBmIGluICQkbGlzdDsgZG8gXAorCSAgZWNobyAiIyMgQmVnaW4gY29udGVudCBpbmNsdWRlZCBmcm9tIGZpbGUgJCRmLiAgRG8gbm90IG1vZGlmeS4gIyMiIFwKKwkgICAmJiBjYXQgYHRlc3QgLWYgIiQkZiIgfHwgZWNobyAnJChzcmNkaXIpLydgJCRmIFwKKwkgICAmJiBlY2hvICIjIyBFbmQgY29udGVudCBpbmNsdWRlZCBmcm9tIGZpbGUgJCRmLiAjIyIgXAorCSAgIHx8IGV4aXQgMTsgXAorCSBkb25lID4+IHNpdGUudG1wCisJQGVjaG8gIiMjIEVuZCBvZiBhdXRvLWdlbmVyYXRlZCBjb250ZW50OyB5b3UgY2FuIGVkaXQgZnJvbSBoZXJlLiAjIyIgPj4gc2l0ZS50bXAKKwlAaWYgdGVzdCAtZiBzaXRlLmV4cDsgdGhlbiBcCisJICAgc2VkIC1lICcxLC9eIyMgRW5kIG9mIGF1dG8tZ2VuZXJhdGVkIGNvbnRlbnQuKiMjL2QnIHNpdGUuZXhwID4+IHNpdGUudG1wOyBcCisJIGZpCiAJQC1ybSAtZiBzaXRlLmJhawogCUB0ZXN0ICEgLWYgc2l0ZS5leHAgfHwgbXYgc2l0ZS5leHAgc2l0ZS5iYWsKIAlAbXYgc2l0ZS50bXAgc2l0ZS5leHAKQEAgLTM4MCwxMCArMzk3LDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS5leHAKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHAKcmVuYW1lIHRvIE1vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwCmluZGV4IDgzOGEzMDYuLjRhNjVlZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwCkBAIC0xLDQgKzEsNCBAQAotIyAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTExLDggKzExLDggQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiBwcm9jIGxvYWRfZ2NjX2xpYiB7IGZpbGVuYW1lIH0gewogICAgIGdsb2JhbCBzcmNkaXIKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgIGdsb2JhbCB0b29sX3Jvb3RfZGlyCiAgICAgZ2xvYmFsIGxkX2xpYnJhcnlfcGF0aAogCi0gICAgc2V0IGJsZGRpcmZmaSBbcHdkXS8uLgorICAgIHNldCBibGRkaXJmZmkgW3B3ZF0vLi4gCiAgICAgdmVyYm9zZSAibGliZmZpICRibGRkaXJmZmkiCiAKICAgICBzZXQgZ2NjZGlyIFtsb29rZm9yX2ZpbGUgJHRvb2xfcm9vdF9kaXIgZ2NjL2xpYmdjYy5hXQpAQCAtMjY2LDYgKzI2Niw1NiBAQAogICAgIH0KIH0KIAorcHJvYyBjaGVjay1mbGFncyB7IGFyZ3MgfSB7CisKKyAgICAjIFRoZSBhcmdzIGFyZSB3aXRoaW4gYW5vdGhlciBsaXN0OyBwdWxsIHRoZW0gb3V0LgorICAgIHNldCBhcmdzIFtsaW5kZXggJGFyZ3MgMF0KKworICAgICMgVGhlIG5leHQgdHdvIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuICBJZiB0aGV5IHdlcmUgbm90IHNwZWNpZmllZCwKKyAgICAjIHVzZSB0aGUgZGVmYXVsdHMuCisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPT0gMiB9IHsKKwlsYXBwZW5kICRhcmdzIFtsaXN0ICIqIl0KKyAgICB9CisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPT0gMyB9IHsKKwlsYXBwZW5kICRhcmdzIFtsaXN0ICIiXQorICAgIH0KKworICAgICMgSWYgdGhlIG9wdGlvbiBzdHJpbmdzIGFyZSB0aGUgZGVmYXVsdHMsIG9yIHRoZSBzYW1lIGFzIHRoZQorICAgICMgZGVmYXVsdHMsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBjaGVja19jb25kaXRpb25hbF94ZmFpbCB0bworICAgICMgY29tcGFyZSB0aGVtIHRvIHRoZSBhY3R1YWwgb3B0aW9ucy4KKyAgICBpZiB7IFtzdHJpbmcgY29tcGFyZSBbbGluZGV4ICRhcmdzIDJdICIqIl0gPT0gMAorCSAmJiBbc3RyaW5nIGNvbXBhcmUgW2xpbmRleCAkYXJncyAzXSAiIiBdID09IDAgfSB7CisJc2V0IHJlc3VsdCAxICAgIAorICAgIH0gZWxzZSB7CisJIyBUaGUgdGFyZ2V0IGxpc3QgbWlnaHQgYmUgYW4gZWZmZWN0aXZlLXRhcmdldCBrZXl3b3JkLCBzbyByZXBsYWNlCisJIyB0aGUgb3JpZ2luYWwgbGlzdCB3aXRoICIqLSotKiIsIHNpbmNlIHdlIGFscmVhZHkga25vdyBpdCBtYXRjaGVzLgorCXNldCByZXN1bHQgW2NoZWNrX2NvbmRpdGlvbmFsX3hmYWlsIFtscmVwbGFjZSAkYXJncyAxIDEgIiotKi0qIl1dCisgICAgfQorCisgICAgcmV0dXJuICRyZXN1bHQKK30KKworcHJvYyBkZy1za2lwLWlmIHsgYXJncyB9IHsKKyAgICAjIFZlcmlmeSB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4gIFRoZSBsYXN0IHR3byBhcmUgb3B0aW9uYWwuCisgICAgc2V0IGFyZ3MgW2xyZXBsYWNlICRhcmdzIDAgMF0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA8IDIgfHwgW2xsZW5ndGggJGFyZ3NdID4gNCB9IHsKKyAgICAgICAgZXJyb3IgImRnLXNraXAtaWYgMjogbmVlZCAyLCAzLCBvciA0IGFyZ3VtZW50cyIKKyAgICB9CisKKyAgICAjIERvbid0IGJvdGhlciBpZiB3ZSdyZSBhbHJlYWR5IHNraXBwaW5nIHRoZSB0ZXN0LgorICAgIHVwdmFyIGRnLWRvLXdoYXQgZGctZG8td2hhdAorICAgIGlmIHsgW2xpbmRleCAke2RnLWRvLXdoYXR9IDFdID09ICJOIiB9IHsKKyAgICAgIHJldHVybgorICAgIH0KKworICAgIHNldCBzZWxlY3RvciBbbGlzdCB0YXJnZXQgW2xpbmRleCAkYXJncyAxXV0KKyAgICBpZiB7IFtkZy1wcm9jZXNzLXRhcmdldCAkc2VsZWN0b3JdID09ICJTIiB9IHsKKyAgICAgICAgaWYgW2NoZWNrLWZsYWdzICRhcmdzXSB7CisgICAgICAgICAgICB1cHZhciBkZy1kby13aGF0IGRnLWRvLXdoYXQKKyAgICAgICAgICAgIHNldCBkZy1kby13aGF0IFtsaXN0IFtsaW5kZXggJHtkZy1kby13aGF0fSAwXSAiTiIgIlAiXQorICAgICAgICB9CisgICAgfQorfQogCiAjIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYWRkaXRpb25hbF9maWxlcyBhbmQgYWRkaXRpb25hbF9zb3VyY2VzCiAjIGFyZSBib3RoIGNsZWFyZWQgb3V0IGFmdGVyIGV2ZXJ5IHRlc3QuICBJdCBpcyBub3QgZW5vdWdoIHRvIGNsZWFyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cAppbmRleCA4OTk5YWE0Li42YjdiZWJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAKQEAgLTI1LDcgKzI1LDcgQEAKIHNldCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMl9zYXZlZCAwCiBzZXQgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjRfc2F2ZWQgMAogc2V0IG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQgMAotCitzZXQgb3JpZ19wYXRoX3NhdmVkIDAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHByb2Mgc2V0X2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFycyB7IH0KQEAgLTQyLDYgKzQyLDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NF9zYXZlZAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aF9zYXZlZAorICBnbG9iYWwgb3JpZ19wYXRoX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aAogICBnbG9iYWwgb3JpZ19sZF9ydW5fcGF0aAogICBnbG9iYWwgb3JpZ19zaGxpYl9wYXRoCkBAIC01MCw2ICs1MSw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMgogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGgKKyAgZ2xvYmFsIG9yaWdfcGF0aAogICBnbG9iYWwgR0NDX0VYRUNfUFJFRklYCiAKICAgIyBTZXQgdGhlIHJlbG9jYXRlZCBjb21waWxlciBwcmVmaXgsIGJ1dCBvbmx5IGlmIHRoZSB1c2VyIGhhc24ndCBzcGVjaWZpZWQgb25lLgpAQCAtMTAwLDYgKzEwMiwxMCBAQAogICAgICAgc2V0IG9yaWdfZHlsZF9saWJyYXJ5X3BhdGggIiRlbnYoRFlMRF9MSUJSQVJZX1BBVEgpIgogICAgICAgc2V0IG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQgMQogICAgIH0KKyAgICBpZiBbaW5mbyBleGlzdHMgZW52KFBBVEgpXSB7CisgICAgICBzZXQgb3JpZ19wYXRoICIkZW52KFBBVEgpIgorICAgICAgc2V0IG9yaWdfcGF0aF9zYXZlZCAxCisgICAgfQogICB9CiAKICAgIyBXZSBuZWVkIHRvIHNldCBsZCBsaWJyYXJ5IHBhdGggaW4gdGhlIGVudmlyb25tZW50LiAgQ3VycmVudGx5LApAQCAtMTY5LDYgKzE3NSwxMyBAQAogICB9IGVsc2UgewogICAgIHNldGVudiBEWUxEX0xJQlJBUllfUEFUSCAiJGxkX2xpYnJhcnlfcGF0aCIKICAgfQorICBpZiB7IFtpc3RhcmdldCAqLSotY3lnd2luKl0gfHwgW2lzdGFyZ2V0ICotKi1taW5ndypdIH0geworICAgIGlmIHsgJG9yaWdfcGF0aF9zYXZlZCB9IHsKKyAgICAgIHNldGVudiBQQVRIICIkbGRfbGlicmFyeV9wYXRoOiRvcmlnX3BhdGgiCisgICAgfSBlbHNlIHsKKyAgICAgIHNldGVudiBQQVRIICIkbGRfbGlicmFyeV9wYXRoIgorICAgIH0KKyAgfQogCiAgIHZlcmJvc2UgLWxvZyAic2V0X2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFyczogbGRfbGlicmFyeV9wYXRoPSRsZF9saWJyYXJ5X3BhdGgiCiB9CkBAIC0xODcsNiArMjAwLDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NF9zYXZlZAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aF9zYXZlZAorICBnbG9iYWwgb3JpZ19wYXRoX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aAogICBnbG9iYWwgb3JpZ19sZF9ydW5fcGF0aAogICBnbG9iYWwgb3JpZ19zaGxpYl9wYXRoCkBAIC0xOTUsNiArMjA5LDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aAorICBnbG9iYWwgb3JpZ19wYXRoCiAKICAgaWYgeyAkb3JpZ19lbnZpcm9ubWVudF9zYXZlZCA9PSAwIH0gewogICAgIHJldHVybgpAQCAtMjQwLDYgKzI1NSwxMSBAQAogICB9IGVsc2VpZiBbaW5mbyBleGlzdHMgZW52KERZTERfTElCUkFSWV9QQVRIKV0gewogICAgIHVuc2V0ZW52IERZTERfTElCUkFSWV9QQVRICiAgIH0KKyAgaWYgeyAkb3JpZ19wYXRoX3NhdmVkIH0geworICAgIHNldGVudiBQQVRIICIkb3JpZ19wYXRoIgorICB9IGVsc2VpZiBbaW5mbyBleGlzdHMgZW52KFBBVEgpXSB7CisgICAgdW5zZXRlbnYgUEFUSAorICB9CiB9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9hLm91dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45M2VlODViCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cAppbmRleCAxZTk5ODVlLi4yNmFjZDgxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cApAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE0LDEwICsxNCw2IEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotIyBsaWJmZmkgdGVzdHN1aXRlIHRoYXQgdXNlcyB0aGUgJ2RnLmV4cCcgZHJpdmVyLgotCi1sb2FkX2xpYiBsaWJmZmktZGcuZXhwCi0KIGRnLWluaXQKIGxpYmZmaS1pbml0CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMKaW5kZXggNmJmY2MxZi4uMTQwN2YwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMKQEAgLTQ5LDkgKzQ5LDE3IEBACiAgIENIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xvc3VyZV90ZXN0X3N0ZGNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIDMgLyogdXNlcmRhdGEgKi8sIGNvZGUpID09IEZGSV9PSyk7CiAKKyNpZmRlZiBfTVNDX1ZFUgorICBfX2FzbSB7IG1vdiBzcF9wcmUsIGVzcCB9CisjZWxzZQogICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wcmUpKTsKKyNlbmRpZgogICByZXMgPSAoKihjbG9zdXJlX3Rlc3RfdHlwZTApY29kZSkoMCwgMSwgMiwgMyk7CisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcG9zdCwgZXNwIH0KKyNlbHNlCiAgIGFzbSB2b2xhdGlsZSAoIiBtb3ZsICUlZXNwLCUwIiA6ICI9ZyIgKHNwX3Bvc3QpKTsKKyNlbmRpZgogICAvKiB7IGRnLW91dHB1dCAiMCAxIDIgMzogOSIgfSAqLwogCiAgIHByaW50ZigicmVzOiAlZFxuIixyZXMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOTM2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMKQEAgLTAsMCArMSw3MiBAQAorLyogQXJlYToJY2xvc3VyZV9jYWxsICh0aGlzY2FsbCBjb252ZW50aW9uKQorICAgUHVycG9zZToJQ2hlY2sgaGFuZGxpbmcgd2hlbiBjYWxsZXIgZXhwZWN0cyB0aGlzY2FsbCBjYWxsZWUKKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJPGt0aWV0ekByZWRoYXQuY29tPiAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHZvaWQKK2Nsb3N1cmVfdGVzdF90aGlzY2FsbChmZmlfY2lmKiBjaWYgX19VTlVTRURfXywgdm9pZCogcmVzcCwgdm9pZCoqIGFyZ3MsCisJCSAgICAgIHZvaWQqIHVzZXJkYXRhKQoreworICAqKGZmaV9hcmcqKXJlc3AgPQorICAgIChpbnQpKihpbnQgKilhcmdzWzBdICsgKGludCkoKihpbnQgKilhcmdzWzFdKQorICAgICsgKGludCkoKihpbnQgKilhcmdzWzJdKSAgKyAoaW50KSgqKGludCAqKWFyZ3NbM10pCisgICAgKyAoaW50KShpbnRwdHJfdCl1c2VyZGF0YTsKKworICBwcmludGYoIiVkICVkICVkICVkOiAlZFxuIiwKKwkgKGludCkqKGludCAqKWFyZ3NbMF0sIChpbnQpKCooaW50ICopYXJnc1sxXSksCisJIChpbnQpKCooaW50ICopYXJnc1syXSksIChpbnQpKCooaW50ICopYXJnc1szXSksCisgICAgICAgICAoaW50KSooZmZpX2FyZyAqKXJlc3ApOworCit9CisKK3R5cGVkZWYgaW50IChfX3RoaXNjYWxsICpjbG9zdXJlX3Rlc3RfdHlwZTApKGludCwgaW50LCBpbnQsIGludCk7CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgdm9pZCAqY29kZTsKKyAgZmZpX2Nsb3N1cmUgKnBjbCA9IGZmaV9jbG9zdXJlX2FsbG9jKHNpemVvZihmZmlfY2xvc3VyZSksICZjb2RlKTsKKyAgZmZpX3R5cGUgKiBjbF9hcmdfdHlwZXNbMTddOworICBpbnQgcmVzOworICB2b2lkKiBzcF9wcmU7CisgIHZvaWQqIHNwX3Bvc3Q7CisgIGNoYXIgYnVmWzEwMjRdOworCisgIGNsX2FyZ190eXBlc1swXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbMV0gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzJdID0gJmZmaV90eXBlX3VpbnQ7CisgIGNsX2FyZ190eXBlc1szXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbNF0gPSBOVUxMOworCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX1RISVNDQUxMLCA0LAorCQkgICAgICZmZmlfdHlwZV9zaW50LCBjbF9hcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbG9zdXJlX3Rlc3RfdGhpc2NhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIDMgLyogdXNlcmRhdGEgKi8sIGNvZGUpID09IEZGSV9PSyk7CisKKyNpZmRlZiBfTVNDX1ZFUgorICBfX2FzbSB7IG1vdiBzcF9wcmUsIGVzcCB9CisjZWxzZQorICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wcmUpKTsKKyNlbmRpZgorICByZXMgPSAoKihjbG9zdXJlX3Rlc3RfdHlwZTApY29kZSkoMCwgMSwgMiwgMyk7CisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcG9zdCwgZXNwIH0KKyNlbHNlCisgIGFzbSB2b2xhdGlsZSAoIiBtb3ZsICUlZXNwLCUwIiA6ICI9ZyIgKHNwX3Bvc3QpKTsKKyNlbmRpZgorICAvKiB7IGRnLW91dHB1dCAiMCAxIDIgMzogOSIgfSAqLworCisgIHByaW50ZigicmVzOiAlZFxuIixyZXMpOworICAvKiB7IGRnLW91dHB1dCAiXG5yZXM6IDkiIH0gKi8KKworICBzcHJpbnRmKGJ1ZiwgIm1pc21hdGNoOiBwcmU9JXAgdnMgcG9zdD0lcCIsIHNwX3ByZSwgc3BfcG9zdCk7CisgIHByaW50Zigic3RhY2sgcG9pbnRlciAlc1xuIiwgKHNwX3ByZSA9PSBzcF9wb3N0ID8gIm1hdGNoIiA6IGJ1ZikpOworICAvKiB7IGRnLW91dHB1dCAiXG5zdGFjayBwb2ludGVyIG1hdGNoIiB9ICovCisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMKaW5kZXggZjBhMzM0Zi4uZWEwODI1ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYwpAQCAtNDksMTUgKzQ5LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIGhfZGJsID0geyA3LCA0LCA5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBqX2RibCA9IHsgMSwgNSwgMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIGhfZGJsID0geyA3LCA0LCA5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBqX2RibCA9IHsgMSwgNSwgMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jCmluZGV4IDliOTI5MmEuLjg5YTA4YTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSBoX2RibCA9IHsgNywgOC4wLCA5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSBqX2RibCA9IHsgMSwgOS4wLCAzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgaF9kYmwgPSB7IDcsIDguMCwgOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgal9kYmwgPSB7IDEsIDkuMCwgMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMKaW5kZXggNDBjOGM2ZC4uOWY3NWRhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYwpAQCAtNTQsMTUgKzU0LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIGdfZGJsID0geyAxLjAsIDEyNywgMTI2LCAzLjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jCmluZGV4IGFhNjQyNDguLjI3ODc5NGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMKQEAgLTU3LDE1ICs1NywxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wLCAxMjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAsIDExOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGdfZGJsID0geyAxLjAsIDEyNywgMTI2LCAzLjAsIDEyMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgZl9kYmwgPSB7IDQuMCwgMTI1LCAxMjQsIDUuMCwgMTE5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMKaW5kZXggYjk0MDJkNi4uODI0OTJjMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGdfZGJsID0geyAxMiB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGZfZGJsID0geyAxNzggfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGdfZGJsID0geyAxMiB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGZfZGJsID0geyAxNzggfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYwppbmRleCA4MGRkN2FjLi4zZjhiYjI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEuMCwgMi4wLCAzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNC4wLCA1LjAsIDcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBnX2RibCA9IHsgMS4wLCAyLjAsIDMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGZfZGJsID0geyA0LjAsIDUuMCwgNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jCmluZGV4IDUwYmNiYmYuLjY1NjI3MjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYwpAQCAtNTIsMTUgKzUyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLCAyLjAsIDMuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQsIDUuMCwgNy4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCwgMy4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNCwgNS4wLCA3LjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMKaW5kZXggNDZhNmViNC4uMWQ4MmY2ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYwpAQCAtNjEsMTcgKzYxLDE3IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLSAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYsIDUuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLCA3LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNywgOS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEsIDQuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgcmVzX2RibDsKIAorICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jCmluZGV4IDEwMWUxMzAuLjgxYmIwYTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSBnX2RibCA9IHsgMTIsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSBmX2RibCA9IHsgMSwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZ19kYmwgPSB7IDEyLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZl9kYmwgPSB7IDEsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYwppbmRleCBmYzc4MGMzLi5iNzgyNzQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSBmX2RibCA9IHsgMTc4LCAxNzksIDE4MCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSBmX2RibCA9IHsgMTc4LCAxNzksIDE4MCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYwppbmRleCA1NzA1Y2UzLi5hMDJjNDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSBnX2RibCA9IHsgMTIsIDExOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSBmX2RibCA9IHsgMSwgMTUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZ19kYmwgPSB7IDEyLCAxMTkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZl9kYmwgPSB7IDEsIDE1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jCmluZGV4IDAxNzcwYTAuLmM3MjUxY2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZ19kYmwgPSB7IDE1LCAxMjUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSBmX2RibCA9IHsgOSwgMTkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGdfZGJsID0geyAxNSwgMTI1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZl9kYmwgPSB7IDksIDE5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYwppbmRleCBmMzgwNmQ3Li4yZDZkOGI2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMKQEAgLTU2LDE1ICs1NiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQsIDE1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAsIDE4MSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQsIDE1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAsIDE4MSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMKaW5kZXggYTFhYmEzYy4uNGFjMzc4NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIGdfZGJsID0geyAxMjcsIDEyMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZl9kYmwgPSB7IDEyLCAxMjggfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYwppbmRleCAyY2ViYTNkLi5hZDlkNTFjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYwpAQCAtNTgsMTUgKzU4LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYwppbmRleCA2MWQ1OTVjLi40ZTBjMDAwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYwpAQCAtNTMsMTUgKzUzLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMKaW5kZXggNTc2ZWJlMC4uYTU1ZWRjMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYwpAQCAtNjYsMTcgKzY2LDE3IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLSAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA2LjAsIDcuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIHJlc19kYmw7CiAKKyAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jCmluZGV4IDlmMmVmZjYuLmI0ZGNkYmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jCkBAIC02MCwxNSArNjAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCmluZGV4IDczMjU3YjAuLjc0MDY3ODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCkBAIC01NiwxNSArNTYsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDEyOCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMTI4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCmluZGV4IDUwZDA5YzkuLjE0YTdlOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCkBAIC02MiwxNSArNjIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUsIDYgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUsIDYgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUsIDYgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUsIDYgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCmluZGV4IGY1YzAwMDAuLjE2NDVjYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCkBAIC01NSwxNSArNTUsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDI1NCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMjU1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMjU0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAyNTUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCmluZGV4IDRhYTk5ZDEuLmY2YzFlYTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCkBAIC00OSwxNSArNDksMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBnX2RibCA9IHsgMSwgMi4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIGZfZGJsID0geyA0LCA1LjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBmX2RibCA9IHsgNCwgNS4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwppbmRleCBjYzVlOWQ2Li4wYjg1NzIyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNywgOC4wfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEsIDkuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LCA4LjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMSwgOS4wfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYwppbmRleCA1YzBiYTBkLi5lZGY5OTFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNy4wLCA4fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEuMCwgOX07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LjAsIDh9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMS4wLCA5fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwppbmRleCAyMmI5NGQ1Li5hYWQ1ZjNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCkBAIC01MiwxNSArNTIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCmluZGV4IDYyNjM3ZjIuLjM3ZTA4NTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jCmluZGV4IGFmMzgwNjAuLmIzMzIyZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYwpAQCAtNTEsMTUgKzUxLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jCmluZGV4IDQyNzRhZjEuLjE1ZjkzNjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogeyBkZy1leGNlc3MtZXJyb3JzICJubyBsb25nIGRvdWJsZSBmb3JtYXQiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtODcsMTUgKzg3LDE1IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKIAljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKIAljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKIAljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07Ci0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKaW5kZXggMDg4ZjBkMy4uY2ExYzM1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKQEAgLTcsNyArNyw3IEBACiAKIC8qIHsgZGctZXhjZXNzLWVycm9ycyAibm8gbG9uZyBkb3VibGUgZm9ybWF0IiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotKiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotbGludXgqIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIAogI2luY2x1ZGUgImZmaXRlc3QuaCIKQEAgLTY3LDE1ICs2NywxNSBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OworCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKIAljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMSwgMiwgMywgNCwgNSwgNiwgNyB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQgfTsKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYwppbmRleCBjYmM0Zjk1Li44ZmJmMzZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgKHZvaWQgKik0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsICh2b2lkICopOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCAodm9pZCAqKTQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgKHZvaWQgKik5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9wb2ludGVyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYwppbmRleCAzODNlYTQxLi4wMzliODc0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMKaW5kZXggNzA1ZDc4Yy4uYzk2YzZkMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYwppbmRleCAzMWQ1M2FmLi45YWE3YmRkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jCkBAIC01MSwxNSArNTEsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMKaW5kZXggY2I2Yjc0OC4uOTc2MjBiNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCmluZGV4IGU0NTNkM2UuLjU3NjZmYWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMKaW5kZXggNDk1Yzc5Zi4uYTUyY2I4OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYwpAQCAtNTIsMTUgKzUyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYwppbmRleCA2NjBkYWJiLi5kNjYzNzkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYwpAQCAtMzcsNiArMzcsOCBAQAogCWZmaV90eXBlCXRzMV90eXBlOwogCWZmaV90eXBlKgl0czFfdHlwZV9lbGVtZW50c1s0XTsKIAorCURibHMgYXJnID0geyAxLjAsIDIuMCB9OworCiAJdHMxX3R5cGUuc2l6ZSA9IDA7CiAJdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKIAl0czFfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNDgsOCArNTAsNiBAQAogCiAJY2xfYXJnX3R5cGVzWzBdID0gJnRzMV90eXBlOwogCi0JRGJscyBhcmcgPSB7IDEuMCwgMi4wIH07Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KIAlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLAogCQkJCSAmZmZpX3R5cGVfdm9pZCwgY2xfYXJnX3R5cGVzKSA9PSBGRklfT0spOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jCmluZGV4IDA2OTU4NzQuLmRiZjIwMDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMKQEAgLTYsNiArNiw4IEBACiAKIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIGF2cjMyKi0qLSogfSB9ICovCisvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIG1pcHMtc2dpLWlyaXg2KiB9IH0gUFIgbGliZmZpLzQ2NjYwICovCisKICNpbmNsdWRlICJmZml0ZXN0LmgiCiAKIHN0YXRpYyB2b2lkCkBAIC0zNCw3ICszNiw4IEBACiAJYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAlhcmdfdHlwZXNbMl0gPSBOVUxMOwogCi0JQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsCisJLyogVGhpcyBwcmludGYgY2FsbCBpcyB2YXJpYWRpYyAqLworCUNIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLCAyLCAmZmZpX3R5cGVfc2ludCwKIAkJYXJnX3R5cGVzKSA9PSBGRklfT0spOwogCiAJYXJnc1swXSA9ICZmb3JtYXQ7CkBAIC00Niw2ICs0OSw5IEBACiAJcHJpbnRmKCJyZXM6ICVkXG4iLCAoaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbnJlczogNCIgfQogCisJLyogVGhlIGNhbGwgdG8gY2xzX2RvdWJsZV92YV9mbiBpcyBzdGF0aWMsIHNvIGhhdmUgdG8gdXNlIGEgbm9ybWFsIHByZXBfY2lmICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsIGFyZ190eXBlcykgPT0gRkZJX09LKTsKKwogCUNIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xzX2RvdWJsZV92YV9mbiwgTlVMTCwgY29kZSkgPT0gRkZJX09LKTsKIAogCXJlcwk9ICgoaW50KCopKGNoYXIqLCBkb3VibGUpKShjb2RlKSkoZm9ybWF0LCBkb3VibGVBcmcpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMKaW5kZXggNTJhZjZjZi4uZTZiYWMxZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jCkBAIC02LDcgKzYsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIm5vIGxvbmcgZG91YmxlIGZvcm1hdCIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLSogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLWxpbnV4KiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAKICNpbmNsdWRlICJmZml0ZXN0LmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYwppbmRleCAzODU2NGNiLi40ZmExZWEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMKQEAgLTYsNiArNiw4IEBACiAKIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIGF2cjMyKi0qLSogeDg2XzY0LSotbWluZ3cqIH0gfSAqLworLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCBtaXBzLXNnaS1pcml4NiogfSB9IFBSIGxpYmZmaS80NjY2MCAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBzdGF0aWMgdm9pZApAQCAtMzQsNyArMzYsOCBAQAogCWFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWFyZ190eXBlc1syXSA9IE5VTEw7CiAKLQlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAmZmZpX3R5cGVfc2ludCwKKwkvKiBUaGlzIHByaW50ZiBjYWxsIGlzIHZhcmlhZGljICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmX3ZhcigmY2lmLCBGRklfREVGQVVMVF9BQkksIDEsIDIsICZmZmlfdHlwZV9zaW50LAogCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CiAKIAlhcmdzWzBdID0gJmZvcm1hdDsKQEAgLTQ2LDYgKzQ5LDEwIEBACiAJcHJpbnRmKCJyZXM6ICVkXG4iLCAoaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbnJlczogNCIgfQogCisJLyogVGhlIGNhbGwgdG8gY2xzX2xvbmdkb3VibGVfdmFfZm4gaXMgc3RhdGljLCBzbyBoYXZlIHRvIHVzZSBhIG5vcm1hbCBwcmVwX2NpZiAqLworCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsICZmZmlfdHlwZV9zaW50LAorCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19sb25nZG91YmxlX3ZhX2ZuLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCiAJcmVzCT0gKChpbnQoKikoY2hhciosIGxvbmcgZG91YmxlKSkoY29kZSkpKGZvcm1hdCwgbGRBcmcpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMKaW5kZXggZmFkZDM1My4uY2YwMzk5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jCkBAIC02NSw3ICs2NSw3IEBACiAKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19wb2ludGVyX2duLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCi0JcmVzID0gKGZmaV9hcmcpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CisJcmVzID0gKGZmaV9hcmcpKHVpbnRwdHJfdCkoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKIAkvKiB7IGRnLW91dHB1dCAiXG4weDEyMzQ1Njc4IDB4ODlhYmNkZWY6IDB4OWJlMDI0NjciIH0gKi8KIAlwcmludGYoInJlczogMHglMDh4XG4iLCAodW5zaWduZWQgaW50KSByZXMpOwogCS8qIHsgZGctb3V0cHV0ICJcbnJlczogMHg5YmUwMjQ2NyIgfSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMKaW5kZXggNjk3ZjI3MS4uZTMxMTM5ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jCkBAIC0yOCwxMSArMjgsMTIgQEAKIAljaGFyCQl0cmFtcGxlNgk9IHRyYW1wbGU0ICsgKChjaGFyKikmYTIpWzFdOwogCWxvbmcgZG91YmxlCXRyYW1wbGU3CT0gKGludHB0cl90KXRyYW1wbGU1ICsgKGludHB0cl90KXRyYW1wbGUxOwogCWNoYXIJCXRyYW1wbGU4CT0gdHJhbXBsZTYgKyB0cmFtcGxlMjsKKwl2b2lkKgkJcmVzdWx0OwogCiAJZHVtbXlWYXIJPSBkdW1teV9mdW5jKHRyYW1wbGUxLCB0cmFtcGxlMiwgdHJhbXBsZTMsIHRyYW1wbGU0LAogCQl0cmFtcGxlNSwgdHJhbXBsZTYsIHRyYW1wbGU3LCB0cmFtcGxlOCk7CiAKLQl2b2lkKglyZXN1bHQJPSAodm9pZCopKChpbnRwdHJfdClhMSArIChpbnRwdHJfdClhMik7CisJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOwogCiAJcHJpbnRmKCIweCUwOHggMHglMDh4OiAweCUwOHhcbiIsIAogCSAgICAgICAodW5zaWduZWQgaW50KSh1aW50cHRyX3QpIGExLApAQCAtNTIsMTEgKzUzLDEyIEBACiAJY2hhcgkJdHJhbXBsZTYJPSB0cmFtcGxlNCArICgoY2hhciopJmEyKVsxXTsKIAlsb25nIGRvdWJsZQl0cmFtcGxlNwk9IChpbnRwdHJfdCl0cmFtcGxlNSArIChpbnRwdHJfdCl0cmFtcGxlMTsKIAljaGFyCQl0cmFtcGxlOAk9IHRyYW1wbGU2ICsgdHJhbXBsZTI7CisJdm9pZCoJCXJlc3VsdDsKIAogCWR1bW15VmFyCT0gZHVtbXlfZnVuYyh0cmFtcGxlMSwgdHJhbXBsZTIsIHRyYW1wbGUzLCB0cmFtcGxlNCwKIAkJdHJhbXBsZTUsIHRyYW1wbGU2LCB0cmFtcGxlNywgdHJhbXBsZTgpOwogCi0Jdm9pZCoJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOworCXJlc3VsdAk9ICh2b2lkKikoKGludHB0cl90KWExICsgKGludHB0cl90KWEyKTsKIAogCXByaW50ZigiMHglMDh4IDB4JTA4eDogMHglMDh4XG4iLAogICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkoaW50cHRyX3QpIGExLApAQCAtMTI5LDcgKzEzMSw3IEBACiAKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19wb2ludGVyX2duLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCi0JcmVzID0gKGZmaV9hcmcpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CisJcmVzID0gKGZmaV9hcmcpKHVpbnRwdHJfdCkoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKIAogCXByaW50ZigicmVzOiAweCUwOHhcbiIsICh1bnNpZ25lZCBpbnQpIHJlcyk7CiAJLy8geyBkZy1vdXRwdXQgIlxuMHgwMTIzNDU2NyAweDg5YWJjZGVmOiAweDhhY2YxMzU2IiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYwppbmRleCBhMjFhM2ZkLi5mNWE3MzE3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMKQEAgLTQsNyArNCw4IEBACiAgICBQUjoJCQlub25lLgogICAgT3JpZ2luYXRvcjoJQmxha2UgQ2hhZmZpbiA2LzYvMjAwNwkgKi8KIAotLyogeyBkZy1kbyBydW4geyB4ZmFpbCAqLSotKiB9IH0gKi8KKy8qIHsgZGctZG8gcnVuIH0gKi8KKwogI2luY2x1ZGUgImZmaXRlc3QuaCIKIAogc3RhdGljIHZvaWQKQEAgLTE3LDExICsxOCw5IEBACiAJZmZpX2NpZiBjaWY7CiAgICAgICAgIHZvaWQgKmNvZGU7CiAJZmZpX2Nsb3N1cmUgKnBjbCA9IGZmaV9jbG9zdXJlX2FsbG9jKHNpemVvZihmZmlfY2xvc3VyZSksICZjb2RlKTsKLQl2b2lkKiBhcmdzWzFdOwogCWZmaV90eXBlKiBhcmdfdHlwZXNbMV07CiAKIAlhcmdfdHlwZXNbMF0gPSBOVUxMOwotCWFyZ3NbMF0gPSBOVUxMOwogCiAJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIDI1NSwgMCwgJmZmaV90eXBlX3ZvaWQsCiAJCWFyZ190eXBlcykgPT0gRkZJX0JBRF9BQkkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYwppbmRleCBiZDJmYzU0Li5iZjYwMTYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYwpAQCAtNCw3ICs0LDggQEAKICAgIFBSOgkJCW5vbmUuCiAgICBPcmlnaW5hdG9yOglCbGFrZSBDaGFmZmluIDYvNi8yMDA3CSAqLwogCi0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfSAqLworLyogeyBkZy1kbyBydW4gfSAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBpbnQgbWFpbiAodm9pZCkKQEAgLTEyLDEwICsxMywxMCBAQAogCWZmaV9jaWYgY2lmOwogCWZmaV90eXBlKiBhcmdfdHlwZXNbMV07CiAKLQlhcmdfdHlwZXNbMF0gPSBOVUxMOwotCiAJZmZpX3R5cGUJYmFkVHlwZQk9IGZmaV90eXBlX3ZvaWQ7CiAKKwlhcmdfdHlwZXNbMF0gPSBOVUxMOworCiAJYmFkVHlwZS5zaXplID0gMDsKIAogCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDAsICZiYWRUeXBlLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmM0NzI0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMKQEAgLTAsMCArMSw1MCBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIGZhc3RjYWxsIGZjdCBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoY2hhciAqcywgZmxvYXQgYSkKK3sKKyAgcmV0dXJuIChzaXplX3QpICgoaW50KSBzdHJsZW4ocykgKyAoaW50KSBhKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgZmxvYXQgdjI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzBdID0gKHZvaWQqKSAmczsKKyAgdmFsdWVzWzFdID0gKHZvaWQqKSAmdjI7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMiwKKwkJICAgICAgICZmZmlfdHlwZV9zaW50LCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgcyA9ICJhIjsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMSk7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNik7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNik7CisgIAorICBwcmludGYoImZhc3RjYWxsIGZjdDEgdGVzdHMgcGFzc2VkXG4iKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JkZDBlMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBmYXN0Y2FsbCBmY3QgY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgc2l6ZV90IF9fRkFTVENBTExfXyBteV9mYXN0Y2FsbF9mKGZsb2F0IGEsIGNoYXIgKnMpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfYXJnIHJpbnQ7CisgIGNoYXIgKnM7CisgIGZsb2F0IHYyOworICBhcmdzWzFdID0gJmZmaV90eXBlX3BvaW50ZXI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDIsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYyID0gMC4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDEpOworICAKKyAgcyA9ICIxMjM0NTY3IjsKKyAgdjIgPSAtMS4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDYpOworICAKKyAgcyA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKKyAgdjIgPSAxLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMjYpOworICAKKyAgcHJpbnRmKCJmYXN0Y2FsbCBmY3QyIHRlc3RzIHBhc3NlZFxuIik7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZDYwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYwpAQCAtMCwwICsxLDU2IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgZiBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoZmxvYXQgYSwgY2hhciAqcywgaW50IGkpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSArIGkpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX2FyZyByaW50OworICBjaGFyICpzOworICBpbnQgdjE7CisgIGZsb2F0IHYyOworICBhcmdzWzJdID0gJmZmaV90eXBlX3NpbnQ7CisgIGFyZ3NbMV0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzJdID0gKHZvaWQqKSAmdjE7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDMsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYxID0gMTsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMik7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIHYxID0gLTI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNCk7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgdjEgPSAyOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDI4KTsKKyAgCisgIHByaW50ZigiZmFzdGNhbGwgZmN0MyB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oCmluZGV4IDJjYjk4NDkuLmQ4MWQ0ZGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmgKQEAgLTI1LDYgKzI1LDE0IEBACiAjZGVmaW5lIF9fVU5VU0VEX18KICNlbmRpZgogCisvKiBEZWZpbmUgX19GQVNUQ0FMTF9fIHNvIHRoYXQgb3RoZXIgY29tcGlsZXJzIHRoYW4gZ2NjIGNhbiBydW4gdGhlIHRlc3RzLiAgKi8KKyN1bmRlZiBfX0ZBU1RDQUxMX18KKyNpZiBkZWZpbmVkIF9NU0NfVkVSCisjZGVmaW5lIF9fRkFTVENBTExfXyBfX2Zhc3RjYWxsCisjZWxzZQorI2RlZmluZSBfX0ZBU1RDQUxMX18gX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKQorI2VuZGlmCisKIC8qIFByZWZlciBNQVBfQU5PTihZTU9VUykgdG8gL2Rldi96ZXJvLCBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgYQogICAgZmlsZSBvcGVuLiAgKi8KICNpZmRlZiBIQVZFX01NQVBfQU5PTgpAQCAtNjcsNiArNzUsOCBAQAogI2RlZmluZSBQUklkTEwgImxkIgogI3VuZGVmIFBSSXVMTAogI2RlZmluZSBQUkl1TEwgImx1IgorI2RlZmluZSBQUklkOCAiaGQiCisjZGVmaW5lIFBSSXU4ICJodSIKICNkZWZpbmUgUFJJZDY0ICJsZCIKICNkZWZpbmUgUFJJdTY0ICJsdSIKICNkZWZpbmUgUFJJdVBUUiAibHUiCkBAIC03Nyw2ICs4NywyOCBAQAogI2RlZmluZSBQUkl1UFRSICJsdSIKICNlbmRpZgogCisvKiBJUklYIGtsdWRnZS4gICovCisjaWYgZGVmaW5lZChfX3NnaSkKKy8qIElSSVggNi41IDxpbnR0eXBlcy5oPiBwcm92aWRlcyBhbGwgZGVmaW5pdGlvbnMsIGJ1dCBvbmx5IGZvciBDOTkKKyAgIGNvbXBpbGF0aW9ucy4gICovCisjZGVmaW5lIFBSSWQ4ICJoaGQiCisjZGVmaW5lIFBSSXU4ICJoaHUiCisjaWYgKF9NSVBTX1NaTE9ORyA9PSAzMikKKyNkZWZpbmUgUFJJZDY0ICJsbGQiCisjZGVmaW5lIFBSSXU2NCAibGx1IgorI2VuZGlmCisvKiBUaGlzIGRvZXNuJ3QgbWF0Y2ggPGludHR5cGVzLmg+LCB3aGljaCBhbHdheXMgaGFzICJsbGQiIGhlcmUsIGJ1dCB0aGUKKyAgIGFyZ3VtZW50cyBhcmUgdWludDY0X3QsIGludDY0X3QsIHdoaWNoIGFyZSB1bnNpZ25lZCBsb25nLCBsb25nIGZvcgorICAgNjQtYml0IGluIDxzZ2lkZWZzLmg+LiAgKi8KKyNpZiAoX01JUFNfU1pMT05HID09IDY0KQorI2RlZmluZSBQUklkNjQgImxkIgorI2RlZmluZSBQUkl1NjQgImx1IgorI2VuZGlmCisvKiBUaGlzIGRvZXNuJ3QgbWF0Y2ggPGludHR5cGVzLmg+LCB3aGljaCBoYXMgInUiIGhlcmUsIGJ1dCB0aGUgYXJndW1lbnRzCisgICBhcmUgdWludHB0cl90LCB3aGljaCBpcyBhbHdheXMgdW5zaWduZWQgbG9uZy4gICovCisjZGVmaW5lIFBSSXVQVFIgImx1IgorI2VuZGlmCisKIC8qIFNvbGFyaXMgPCAxMCBrbHVkZ2UuICAqLwogI2lmIGRlZmluZWQoX19zdW5fXykgJiYgZGVmaW5lZChfX3N2cjRfXykgJiYgIWRlZmluZWQoUFJJdVBUUikKICNpZiBkZWZpbmVkKF9fYXJjaDY0X18pIHx8IGRlZmluZWQgKF9feDg2XzY0X18pCkBAIC04Niw2ICsxMTgsMTUgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIE1TVkMga2x1ZGdlLiAgKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSCisjZGVmaW5lIFBSSXVQVFIgImx1IgorI2RlZmluZSBQUkl1OCAidSIKKyNkZWZpbmUgUFJJZDggImQiCisjZGVmaW5lIFBSSXU2NCAiSTY0dSIKKyNkZWZpbmUgUFJJZDY0ICJJNjRkIgorI2VuZGlmCisKICNpZmRlZiBVU0lOR19NTUFQCiBzdGF0aWMgaW5saW5lIHZvaWQgKgogYWxsb2NhdGVfbW1hcCAoc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWUxNThlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYwpAQCAtMCwwICsxLDEwNyBAQAorLyogQXJlYTogICAgICAgIGZwIGFuZCB2YXJpYWRpY3MKKyAgIFB1cnBvc2U6ICAgICBjaGVjayBmcCBpbnB1dHMgYW5kIHJldHVybnMgd29yayBvbiB2YXJpYWRpY3MsIGV2ZW4gdGhlIGZpeGVkIHBhcmFtcworICAgTGltaXRhdGlvbnM6IE5vbmUKKyAgIFBSOiAgICAgICAgICBub25lCisgICBPcmlnaW5hdG9yOiAgPGRhdmlkLmdpbGJlcnRAbGluYXJvLm9yZz4gMjAxMS0wMS0yNQorCisgICBJbnRlbmRlZCB0byBzdHJlc3MgdGhlIGRpZmZlcmVuY2UgaW4gQUJJIG9uIEFSTSB2ZnAKKyovCisKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2luY2x1ZGUgPHN0ZGFyZy5oPgorCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCisvKiBwcmludHMgb3V0IGFsbCB0aGUgcGFyYW1ldGVycywgYW5kIHJldHVybnMgdGhlIHN1bSBvZiB0aGVtIGFsbC4KKyAqICd4JyBpcyB0aGUgbnVtYmVyIG9mIHZhcmlhZGljIHBhcmFtZXRlcnMgYWxsIG9mIHdoaWNoIGFyZSBkb3VibGUgaW4gdGhpcyB0ZXN0CisgKi8KK2RvdWJsZSBmbG9hdF92YV9mbih1bnNpZ25lZCBpbnQgeCwgZG91YmxlIHksLi4uKQoreworICBkb3VibGUgdG90YWw9MC4wOworICB2YV9saXN0IGFwOworICB1bnNpZ25lZCBpbnQgaTsKKworICB0b3RhbCs9KGRvdWJsZSl4OworICB0b3RhbCs9eTsKKworICBwcmludGYoIiV1OiAlLjFmIDoiLCB4LCB5KTsKKworICB2YV9zdGFydChhcCwgeSk7CisgIGZvcihpPTA7aTx4O2krKykKKyAgeworICAgIGRvdWJsZSBhcmc9dmFfYXJnKGFwLCBkb3VibGUpOworICAgIHRvdGFsKz1hcmc7CisgICAgcHJpbnRmKCIgJWQ6JS4xZiAiLCBpLCBhcmcpOworICB9CisgIHZhX2VuZChhcCk7CisKKyAgcHJpbnRmKCIgdG90YWw6ICUuMWZcbiIsIHRvdGFsKTsKKworICByZXR1cm4gdG90YWw7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmICAgIGNpZjsKKworICBmZmlfdHlwZSAgICAqYXJnX3R5cGVzWzVdOworICB2b2lkICAgICAgICAqdmFsdWVzWzVdOworICBkb3VibGUgICAgICAgIGRvdWJsZXNbNV07CisgIHVuc2lnbmVkIGludCBmaXJzdGFyZzsKKyAgZG91YmxlICAgICAgICByZXNmcDsKKworICAvKiBGaXJzdCB0ZXN0LCBwYXNzIGZsb2F0X3ZhX2ZuKDAsMi4wKSAtIG5vdGUgdGhlcmUgYXJlIG5vIGFjdHVhbAorICAgKiB2YXJpYWRpYyBwYXJhbWV0ZXJzLCBidXQgaXQncyBkZWNsYXJlZCB2YXJpYWRpYyBzbyB0aGUgQUJJIG1heSBiZQorICAgKiBkaWZmZXJlbnQuICovCisgIC8qIENhbGwgaXQgc3RhdGljYWxseSBhbmQgdGhlbiB2aWEgZmZpICovCisgIHJlc2ZwPWZsb2F0X3ZhX2ZuKDAsMi4wKTsKKyAgLy8geyBkZy1vdXRwdXQgIjA6IDIuMCA6IHRvdGFsOiAyLjAiIH0KKyAgcHJpbnRmKCJjb21waWxlZDogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5jb21waWxlZDogMi4wIiB9CisKKyAgYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1syXSA9IE5VTEw7CisgIENIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAyLAorICAgICAgICAmZmZpX3R5cGVfZG91YmxlLCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZmlyc3RhcmcgPSAwOworICBkb3VibGVzWzBdID0gMi4wOworICB2YWx1ZXNbMF0gPSAmZmlyc3Rhcmc7CisgIHZhbHVlc1sxXSA9ICZkb3VibGVzWzBdOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmxvYXRfdmFfZm4pLCAmcmVzZnAsIHZhbHVlcyk7CisgIC8vIHsgZGctb3V0cHV0ICJcbjA6IDIuMCA6IHRvdGFsOiAyLjAiIH0KKyAgcHJpbnRmKCJmZmk6ICUuMWZcbiIsIHJlc2ZwKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuZmZpOiAyLjAiIH0KKworICAvKiBTZWNvbmQgdGVzdCwgZmxvYXRfdmFfZm4oMiwyLjAsMy4wLDQuMCksIG5vdyB3aXRoIHZhcmlhZGljIHBhcmFtcyAqLworICAvKiBDYWxsIGl0IHN0YXRpY2FsbHkgYW5kIHRoZW4gdmlhIGZmaSAqLworICByZXNmcD1mbG9hdF92YV9mbigyLDIuMCwzLjAsNC4wKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMjogMi4wIDogMDozLjAgIDE6NC4wICB0b3RhbDogMTEuMCIgfQorICBwcmludGYoImNvbXBpbGVkOiAlLjFmXG4iLCByZXNmcCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbmNvbXBpbGVkOiAxMS4wIiB9CisKKyAgYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1szXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1s0XSA9IE5VTEw7CisgIENIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCA0LAorICAgICAgICAmZmZpX3R5cGVfZG91YmxlLCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZmlyc3RhcmcgPSAyOworICBkb3VibGVzWzBdID0gMi4wOworICBkb3VibGVzWzFdID0gMy4wOworICBkb3VibGVzWzJdID0gNC4wOworICB2YWx1ZXNbMF0gPSAmZmlyc3Rhcmc7CisgIHZhbHVlc1sxXSA9ICZkb3VibGVzWzBdOworICB2YWx1ZXNbMl0gPSAmZG91Ymxlc1sxXTsKKyAgdmFsdWVzWzNdID0gJmRvdWJsZXNbMl07CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihmbG9hdF92YV9mbiksICZyZXNmcCwgdmFsdWVzKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMjogMi4wIDogMDozLjAgIDE6NC4wICB0b3RhbDogMTEuMCIgfQorICBwcmludGYoImZmaTogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5mZmk6IDExLjAiIH0KKworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKaW5kZXggOWNmZmI3MS4uMzgwZmVkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCkBAIC03LDcgKzcsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIiIgeyB0YXJnZXQgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtMTI5LDE0ICsxMjksMTQgQEAKIAkJCXVpNjRfNCArIDQsIHNpNjRfNCArIDQsIGZfNCArIDQsIGRfNCArIDQsIGxkXzQgKyA0LCAoY2hhciopKChpbnRwdHJfdClwXzQgKyA0KSwgCiAJCXVpOF81ICsgNSwgc2k4XzUgKyA1fTsKIAotCXByaW50ZigiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkOiAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlaGh1ICVoaGRcbiIsCisJcHJpbnRmKCIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICI6ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICUiIFBSSXU4ICIgJSIgUFJJZDggIlxuIiwKIAkgICAgICAgdWk4XzEsIHNpOF8xLCB1aTE2XzEsIHNpMTZfMSwgdWkzMl8xLCBzaTMyXzEsIHVpNjRfMSwgc2k2NF8xLCBmXzEsIGRfMSwgbGRfMSwgKHVuc2lnbmVkIGxvbmcpcF8xLAogCQl1aThfMiwgc2k4XzIsIHVpMTZfMiwgc2kxNl8yLCB1aTMyXzIsIHNpMzJfMiwgdWk2NF8yLCBzaTY0XzIsIGZfMiwgZF8yLCBsZF8yLCAodW5zaWduZWQgbG9uZylwXzIsCiAJCXVpOF8zLCBzaThfMywgdWkxNl8zLCBzaTE2XzMsIHVpMzJfMywgc2kzMl8zLCB1aTY0XzMsIHNpNjRfMywgZl8zLCBkXzMsIGxkXzMsICh1bnNpZ25lZCBsb25nKXBfMywKQEAgLTIyOSw2ICsyMjksMTkgQEAKIAlmZmlfdHlwZSoJc3RfZmllbGRzWzUxXTsKIAlCaWdTdHJ1Y3QJcmV0VmFsOwogCisJdWludDhfdAkJdWk4CQk9IDE7CisJaW50OF90CQlzaTgJCT0gMjsKKwl1aW50MTZfdAl1aTE2CT0gMzsKKwlpbnQxNl90CQlzaTE2CT0gNDsKKwl1aW50MzJfdAl1aTMyCT0gNTsKKwlpbnQzMl90CQlzaTMyCT0gNjsKKwl1aW50NjRfdAl1aTY0CT0gNzsKKwlpbnQ2NF90CQlzaTY0CT0gODsKKwlmbG9hdAkJZgkJPSA5OworCWRvdWJsZQkJZAkJPSAxMDsKKwlsb25nIGRvdWJsZQlsZAkJPSAxMTsKKwljaGFyKgkJcAkJPSAoY2hhciopMHgxMjM0NTY3ODsKKwogCW1lbXNldCAoJnJldFZhbCwgMCwgc2l6ZW9mKHJldFZhbCkpOwogCiAJcmV0X3N0cnVjdF90eXBlLnNpemUgPSAwOwpAQCAtMjUxLDE5ICsyNjQsNiBAQAogCiAJc3RfZmllbGRzWzUwXSA9IE5VTEw7CiAKLQl1aW50OF90CQl1aTgJCT0gMTsKLQlpbnQ4X3QJCXNpOAkJPSAyOwotCXVpbnQxNl90CXVpMTYJPSAzOwotCWludDE2X3QJCXNpMTYJPSA0OwotCXVpbnQzMl90CXVpMzIJPSA1OwotCWludDMyX3QJCXNpMzIJPSA2OwotCXVpbnQ2NF90CXVpNjQJPSA3OwotCWludDY0X3QJCXNpNjQJPSA4OwotCWZsb2F0CQlmCQk9IDk7Ci0JZG91YmxlCQlkCQk9IDEwOwotCWxvbmcgZG91YmxlCWxkCQk9IDExOwotCWNoYXIqCQlwCQk9IChjaGFyKikweDEyMzQ1Njc4OwotCiAJYXJnVHlwZXNbMF0JCT0gYXJnVHlwZXNbMTJdCT0gYXJnVHlwZXNbMjRdCT0gYXJnVHlwZXNbMzZdCT0gYXJnVHlwZXNbNDhdCT0gJmZmaV90eXBlX3VpbnQ4OwogCWFyZ1ZhbHVlc1swXQk9IGFyZ1ZhbHVlc1sxMl0JPSBhcmdWYWx1ZXNbMjRdCT0gYXJnVmFsdWVzWzM2XQk9IGFyZ1ZhbHVlc1s0OF0JPSAmdWk4OwogCWFyZ1R5cGVzWzFdCQk9IGFyZ1R5cGVzWzEzXQk9IGFyZ1R5cGVzWzI1XQk9IGFyZ1R5cGVzWzM3XQk9IGFyZ1R5cGVzWzQ5XQk9ICZmZmlfdHlwZV9zaW50ODsKQEAgLTI5NiwxMCArMjk2LDEwIEBACiAKIAlmZmlfY2FsbCgmY2lmLCBGRklfRk4odGVzdF9sYXJnZV9mbiksICZyZXRWYWwsIGFyZ1ZhbHVlcyk7CiAJLy8geyBkZy1vdXRwdXQgIjEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyOiAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMHgxMjM0NTY3OSAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDB4MTIzNDU2N2EgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMHgxMjM0NTY3YiA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMHgxMjM0NTY3YyA2IDciIH0KLQlwcmludGYoInJlczogJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkXG4iLAorCXByaW50ZigicmVzOiAlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICJcbiIsCiAJCXJldFZhbC5hLCByZXRWYWwuYiwgcmV0VmFsLmMsIHJldFZhbC5kLCByZXRWYWwuZSwgcmV0VmFsLmYsCiAJICAgICAgIHJldFZhbC5nLCByZXRWYWwuaCwgcmV0VmFsLmksIHJldFZhbC5qLCByZXRWYWwuaywgKHVuc2lnbmVkIGxvbmcpcmV0VmFsLmwsCiAJCXJldFZhbC5tLCByZXRWYWwubiwgcmV0VmFsLm8sIHJldFZhbC5wLCByZXRWYWwucSwgcmV0VmFsLnIsCkBAIC0zMjQsMTAgKzMyNCwxMCBAQAogCQl1aTgsIHNpOCwgdWkxNiwgc2kxNiwgdWkzMiwgc2kzMiwgdWk2NCwgc2k2NCwgZiwgZCwgbGQsIHAsCiAJCXVpOCwgc2k4KTsKIAkvLyB7IGRnLW91dHB1dCAiXG4xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMjogMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDB4MTIzNDU2NzkgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAweDEyMzQ1NjdhIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDB4MTIzNDU2N2IgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDB4MTIzNDU2N2MgNiA3IiB9Ci0JcHJpbnRmKCJyZXM6ICVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICVoaHUgJWhoZFxuIiwKKwlwcmludGYoInJlczogJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJSIgUFJJdTggIiAlIiBQUklkOCAiXG4iLAogCQlyZXRWYWwuYSwgcmV0VmFsLmIsIHJldFZhbC5jLCByZXRWYWwuZCwgcmV0VmFsLmUsIHJldFZhbC5mLAogCSAgICAgICByZXRWYWwuZywgcmV0VmFsLmgsIHJldFZhbC5pLCByZXRWYWwuaiwgcmV0VmFsLmssICh1bnNpZ25lZCBsb25nKXJldFZhbC5sLAogCQlyZXRWYWwubSwgcmV0VmFsLm4sIHJldFZhbC5vLCByZXRWYWwucCwgcmV0VmFsLnEsIHJldFZhbC5yLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3NzE1OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMKQEAgLTAsMCArMSw1NCBAQAorLyogQXJlYTogICAgICAgIGZmaV9jYWxsCisgICBQdXJwb3NlOiAgICAgQ2hlY2sgdWludDhfdCBhcmd1bWVudHMuCisgICBMaW1pdGF0aW9uczogbm9uZS4KKyAgIFBSOiAgICAgICAgICBQUjQ1Njc3LgorICAgT3JpZ2luYXRvcjogIERhbiBXaXR0ZSA8ZHdpdHRlQGdtYWlsLmNvbT4gMjAxMDA5MTYgICovCisKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworI2RlZmluZSBOQVJHUyA3CisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB1aW50OF90Citmb28gKHVpbnQ4X3QgYSwgdWludDhfdCBiLCB1aW50OF90IGMsIHVpbnQ4X3QgZCwKKyAgICAgdWludDhfdCBlLCB1aW50OF90IGYsIHVpbnQ4X3QgZykKK3sKKyAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZiArIGc7Cit9CisKK3VpbnQ4X3QKK2JhciAodWludDhfdCBhLCB1aW50OF90IGIsIHVpbnQ4X3QgYywgdWludDhfdCBkLAorICAgICB1aW50OF90IGUsIHVpbnQ4X3QgZiwgdWludDhfdCBnKQoreworICByZXR1cm4gZm9vIChhLCBiLCBjLCBkLCBlLCBmLCBnKTsKK30KKworaW50CittYWluICh2b2lkKQoreworICBmZmlfdHlwZSAqZmZpdHlwZXNbTkFSR1NdOworICBpbnQgaTsKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV9hcmcgcmVzdWx0ID0gMDsKKyAgdWludDhfdCBhcmdzW05BUkdTXTsKKyAgdm9pZCAqYXJncHRyc1tOQVJHU107CisKKyAgZm9yIChpID0gMDsgaSA8IE5BUkdTOyArK2kpCisgICAgZmZpdHlwZXNbaV0gPSAmZmZpX3R5cGVfdWludDg7CisKKyAgQ0hFQ0sgKGZmaV9wcmVwX2NpZiAoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCBOQVJHUywKKwkJICAgICAgICZmZmlfdHlwZV91aW50OCwgZmZpdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZm9yIChpID0gMDsgaSA8IE5BUkdTOyArK2kpCisgICAgeworICAgICAgYXJnc1tpXSA9IGk7CisgICAgICBhcmdwdHJzW2ldID0gJmFyZ3NbaV07CisgICAgfQorICBmZmlfY2FsbCAoJmNpZiwgRkZJX0ZOIChiYXIpLCAmcmVzdWx0LCBhcmdwdHJzKTsKKworICBDSEVDSyAocmVzdWx0ID09IDIxKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWRiZTRkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYwpAQCAtMCwwICsxLDYzIEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RkY2FsbCBtYW55IGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKyNpbmNsdWRlIDxmbG9hdC5oPgorCitzdGF0aWMgZmxvYXQgX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKSBmYXN0Y2FsbF9tYW55KGZsb2F0IGYxLAorCQkJCQkJICAgZmxvYXQgZjIsCisJCQkJCQkgICBmbG9hdCBmMywKKwkJCQkJCSAgIGZsb2F0IGY0LAorCQkJCQkJICAgZmxvYXQgZjUsCisJCQkJCQkgICBmbG9hdCBmNiwKKwkJCQkJCSAgIGZsb2F0IGY3LAorCQkJCQkJICAgZmxvYXQgZjgsCisJCQkJCQkgICBmbG9hdCBmOSwKKwkJCQkJCSAgIGZsb2F0IGYxMCwKKwkJCQkJCSAgIGZsb2F0IGYxMSwKKwkJCQkJCSAgIGZsb2F0IGYxMiwKKwkJCQkJCSAgIGZsb2F0IGYxMykKK3sKKyAgcmV0dXJuICgoZjEvZjIrZjMvZjQrZjUvZjYrZjcvZjgrZjkvZjEwK2YxMS9mMTIpICogZjEzKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1sxM107CisgIHZvaWQgKnZhbHVlc1sxM107CisgIGZsb2F0IGZhWzEzXTsKKyAgZmxvYXQgZiwgZmY7CisgIHVuc2lnbmVkIGxvbmcgdWw7CisKKyAgZm9yICh1bCA9IDA7IHVsIDwgMTM7IHVsKyspCisgICAgeworICAgICAgYXJnc1t1bF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgICAgICB2YWx1ZXNbdWxdID0gJmZhW3VsXTsKKwlmYVt1bF0gPSAoZmxvYXQpIHVsOworICAgIH0KKworICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMTMsCisJCSAgICAgJmZmaV90eXBlX2Zsb2F0LCBhcmdzKSA9PSBGRklfT0spOworCisgIGZmID0gIGZhc3RjYWxsX21hbnkoZmFbMF0sIGZhWzFdLAorCQkgICAgIGZhWzJdLCBmYVszXSwKKwkJICAgICBmYVs0XSwgZmFbNV0sCisJCSAgICAgZmFbNl0sIGZhWzddLAorCQkgICAgIGZhWzhdLCBmYVs5XSwKKwkJICAgICBmYVsxMF0sIGZhWzExXSwgZmFbMTJdKTsKKworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmFzdGNhbGxfbWFueSksICZmLCB2YWx1ZXMpOworCisgIGlmIChmIC0gZmYgPCBGTFRfRVBTSUxPTikKKyAgICBwcmludGYoImZhc3RjYWxsIG1hbnkgYXJnIHRlc3RzIG9rIVxuIik7CisgIGVsc2UKKyAgICBDSEVDSygwKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYwppbmRleCA4YWE1MjdlLi5jMTVlM2EwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jCkBAIC03Nyw2ICs3NywxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAorCQkJCSAgICAgIHszLCAxLjAsIDguMH19OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtOTIsMTIgKzk4LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAotCQkJCSAgICAgIHszLCAxLjAsIDguMH19OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYwppbmRleCAyYTlmNTE1Li4xMDg3ZjdiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMKQEAgLTgxLDYgKzgxLDEzIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCisJCQkJICAgICAgezMsIDEuMCwgOC4wfX07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgaF9kYmwgPSB7IDMuMCwgMi4wLCA0fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTk2LDEzICsxMDMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCi0JCQkJICAgICAgezMsIDEuMCwgOC4wfX07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgaF9kYmwgPSB7IDMuMCwgMi4wLCA0fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYwppbmRleCBkNmE3MThiLi4zNGE3NGU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYwpAQCAtNjcsNiArNjcsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s0XTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7IDk5LCB7MTJMTCAsIDEyN30sIDI1NX07CisgIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MiwxMiArODgsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0geyA5OSwgezEyTEwgLCAxMjd9LCAyNTV9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMkxMLCA5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jCmluZGV4IGRlMTU4NGMuLjY5MjY4Y2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYwpAQCAtNTcsNiArNTcsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMSwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMiAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjcsMTEgKzcyLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWxvbmc7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYwppbmRleCA1OGFhODUzLi5hYjE4Y2FkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMKaW5kZXggOThlNDkxZS4uMmZmYjRkNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jCkBAIC01OCw2ICs1OCwxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjgsMTEgKzczLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jCmluZGV4IGQ4ZTM1MzcuLjZjNzk4NDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY4LDExICs3Myw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMKaW5kZXggMmYyYjI1YS4uNTlkMzU3OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYwppbmRleCAxNGM3MDIzLi4yNzU5NWU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMKaW5kZXggYmI3N2VhZC4uMGU2YzY4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTJMTCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDJMTCwgOX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTgxLDEyICs4Nyw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyTEwgLCAxMjd9LCA5OX07Ci0gIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMKaW5kZXggZTlmNTQxYy4uNWY3YWM2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3TEx9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEsIDdMTH07Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCmluZGV4IDE5NjA4ZWUuLmEzNmNmM2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgc2MgPCAoc2lnbmVkIGNoYXIpIDEyNzsgc2MrKykKICAgICB7CiAgICAgICBmZmlfY2FsbCgmY2lmLCBGRklfRk4ocmV0dXJuX3NjKSwgJnJpbnQsIHZhbHVlcyk7Ci0gICAgICBDSEVDSyhyaW50ID09IChmZmlfYXJnKSBzYyk7CisgICAgICBDSEVDSygoc2lnbmVkIGNoYXIpcmludCA9PSBzYyk7CiAgICAgfQogICBleGl0KDApOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMKaW5kZXggMjNhOTNiOS4uZjMyOTM4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jCkBAIC04MiwxNyArODIsMTcgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLQljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0JY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KIAlzdHJ1Y3RfMTA4Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA3IH07CiAJc3RydWN0XzEwOGJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgNCB9OwogCXN0cnVjdF8xMDhieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMgfTsKIAlzdHJ1Y3RfMTA4Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCAyIH07CiAJc3RydWN0XzEwOGJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYwppbmRleCBlMjU5OWQyLi4zYjBlZjlhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYwpAQCAtODQsMTcgKzg0LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzExNmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA3IH07CiAJc3RydWN0XzExNmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgNi4wLCA0IH07CiAJc3RydWN0XzExNmJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wLCA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgNy4wLCAzIH07CiAJc3RydWN0XzExNmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgOC4wLCAyIH07CiAJc3RydWN0XzExNmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYwppbmRleCAxZmM2YTllLi45NzNlZTAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYwpAQCAtNjgsMTcgKzY4LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzcyYnl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDcuMCB9OwogCXN0cnVjdF83MmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAgfTsKIAlzdHJ1Y3RfNzJieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgMy4wIH07CiAJc3RydWN0XzcyYnl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDIuMCB9OwogCXN0cnVjdF83MmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jCmluZGV4IGNiMmYyZmIuLjg0MzIzZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMKQEAgLTY5LDE3ICs2OSwxNyBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLQljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLQljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLQljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogCXN0cnVjdF83MmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCA3IH07CiAJc3RydWN0XzcyYnl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAsIDQgfTsKIAlzdHJ1Y3RfNzJieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgMyB9OwogCXN0cnVjdF83MmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCAyIH07CiAJc3RydWN0XzcyYnl0ZSByZXNfZGJsOwogCisJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4MTA2MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYwpAQCAtMCwwICsxLDQ0IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgc3RybGVuIGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHNpemVfdCBfX0ZBU1RDQUxMX18gbXlfZmFzdGNhbGxfc3RybGVuKGNoYXIgKnMpCit7CisgIHJldHVybiAoc3RybGVuKHMpKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9wb2ludGVyOworICB2YWx1ZXNbMF0gPSAodm9pZCopICZzOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAxKTsKKyAgCisgIHMgPSAiMTIzNDU2NyI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSA3KTsKKyAgCisgIHMgPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NSI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNSk7CisgIAorICBwcmludGYoImZhc3RjYWxsIHN0cmxlbiB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jCmluZGV4IGVhNzZjODUuLmJmYzIzZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmMKQEAgLTMwLDYgKzMwLDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzMV90eXBlOwogICBmZmlfdHlwZSAqdHMxX3R5cGVfZWxlbWVudHNbNF07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMSB0czFfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8xKSk7CisKICAgdHMxX3R5cGUuc2l6ZSA9IDA7CiAgIHRzMV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzMV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zOSwxMSArNDYsNiBAQAogICB0czFfdHlwZV9lbGVtZW50c1syXSA9ICZmZmlfdHlwZV91aW50OwogICB0czFfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAgIAotICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7Ci0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzEgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMSkpOwotICAKICAgYXJnc1swXSA9ICZ0czFfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzMV9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTZmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMKQEAgLTAsMCArMSw2NyBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIHN0cnVjdHVyZXMgd2l0aCBmYXN0Y2FsbC90aGlzY2FsbCBjb252ZW50aW9uLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFyIHVjOworICBkb3VibGUgZDsKKyAgdW5zaWduZWQgaW50IHVpOworfSB0ZXN0X3N0cnVjdHVyZV8xOworCitzdGF0aWMgdGVzdF9zdHJ1Y3R1cmVfMSBfX0ZBU1RDQUxMX18gc3RydWN0MSh0ZXN0X3N0cnVjdHVyZV8xIHRzKQoreworICB0cy51YysrOworICB0cy5kLS07CisgIHRzLnVpKys7CisKKyAgcmV0dXJuIHRzOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX3R5cGUgdHMxX3R5cGU7CisgIGZmaV90eXBlICp0czFfdHlwZV9lbGVtZW50c1s0XTsKKworICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzEgKnRzMV9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8xICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzEpKTsKKworICB0czFfdHlwZS5zaXplID0gMDsKKyAgdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgdHMxX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgdHMxX3R5cGUuZWxlbWVudHMgPSB0czFfdHlwZV9lbGVtZW50czsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CisgIHRzMV90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKKyAgdHMxX3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOworICAKKyAgYXJnc1swXSA9ICZ0czFfdHlwZTsKKyAgdmFsdWVzWzBdID0gJnRzMV9hcmc7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMSwgCisJCSAgICAgJnRzMV90eXBlLCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgdHMxX2FyZy51YyA9ICdceDAxJzsKKyAgdHMxX2FyZy5kID0gMy4xNDE1OTsKKyAgdHMxX2FyZy51aSA9IDU1NTsKKworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oc3RydWN0MSksIHRzMV9yZXN1bHQsIHZhbHVlcyk7CisgIAorICBDSEVDSyh0czFfcmVzdWx0LT51aSA9PSA1NTYpOworICBDSEVDSyh0czFfcmVzdWx0LT5kID09IDMuMTQxNTkgLSAxKTsKKyAKKyAgZnJlZSAodHMxX3Jlc3VsdCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMKaW5kZXggMTRiYzlmZC4uZDg1Mzg1ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYwpAQCAtMjksNiArMjksMTEgQEAKICAgdGVzdF9zdHJ1Y3R1cmVfMiB0czJfYXJnOwogICBmZmlfdHlwZSB0czJfdHlwZTsKICAgZmZpX3R5cGUgKnRzMl90eXBlX2VsZW1lbnRzWzNdOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8yICp0czJfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7CisKICAgdHMyX3R5cGUuc2l6ZSA9IDA7CiAgIHRzMl90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzMl90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNywxMSArNDIsNiBAQAogICB0czJfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIHRzMl90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKIAotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzIgKnRzMl9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7Ci0gIAogICBhcmdzWzBdID0gJnRzMl90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHMyX2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwMjI4NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYwpAQCAtMCwwICsxLDY3IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RydWN0dXJlcyBpbiBmYXN0Y2FsbC9zdGRjYWxsIGZ1bmN0aW9uCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGRvdWJsZSBkMTsKKyAgZG91YmxlIGQyOworfSB0ZXN0X3N0cnVjdHVyZV8yOworCitzdGF0aWMgdGVzdF9zdHJ1Y3R1cmVfMiBfX0ZBU1RDQUxMX18gc3RydWN0Mih0ZXN0X3N0cnVjdHVyZV8yIHRzKQoreworICB0cy5kMS0tOworICB0cy5kMi0tOworCisgIHJldHVybiB0czsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIHRlc3Rfc3RydWN0dXJlXzIgdHMyX2FyZzsKKyAgZmZpX3R5cGUgdHMyX3R5cGU7CisgIGZmaV90eXBlICp0czJfdHlwZV9lbGVtZW50c1szXTsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfMiAqdHMyX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzIgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMikpOworCisgIHRzMl90eXBlLnNpemUgPSAwOworICB0czJfdHlwZS5hbGlnbm1lbnQgPSAwOworICB0czJfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICB0czJfdHlwZS5lbGVtZW50cyA9IHRzMl90eXBlX2VsZW1lbnRzOworICB0czJfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIHRzMl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMyX3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOworCisgIGFyZ3NbMF0gPSAmdHMyX3R5cGU7CisgIHZhbHVlc1swXSA9ICZ0czJfYXJnOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsICZ0czJfdHlwZSwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHRzMl9hcmcuZDEgPSA1LjU1OworICB0czJfYXJnLmQyID0gNi42NjsKKyAgCisgIHByaW50ZiAoIiVnXG4iLCB0czJfYXJnLmQxKTsKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9hcmcuZDIpOworICAKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKHN0cnVjdDIpLCB0czJfcmVzdWx0LCB2YWx1ZXMpOworICAKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9yZXN1bHQtPmQxKTsKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9yZXN1bHQtPmQyKTsKKyAgCisgIENIRUNLKHRzMl9yZXN1bHQtPmQxID09IDUuNTUgLSAxKTsKKyAgQ0hFQ0sodHMyX3Jlc3VsdC0+ZDIgPT0gNi42NiAtIDEpOworICAKKyAgZnJlZSAodHMyX3Jlc3VsdCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMKaW5kZXggZTBiYjA5Yi4uZGU4ODNjMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYwpAQCAtMjcsNiArMjcsMTEgQEAKICAgaW50IGNvbXBhcmVfdmFsdWU7CiAgIGZmaV90eXBlIHRzM190eXBlOwogICBmZmlfdHlwZSAqdHMzX3R5cGVfZWxlbWVudHNbMl07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMyB0czNfYXJnOworICB0ZXN0X3N0cnVjdHVyZV8zICp0czNfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMyAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8zKSk7CisKICAgdHMzX3R5cGUuc2l6ZSA9IDA7CiAgIHRzM190eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzM190eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNCwxMCArMzksNiBAQAogICB0czNfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV9zaW50OwogICB0czNfdHlwZV9lbGVtZW50c1sxXSA9IE5VTEw7CiAKLSAgdGVzdF9zdHJ1Y3R1cmVfMyB0czNfYXJnOwotICB0ZXN0X3N0cnVjdHVyZV8zICp0czNfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzMgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMykpOwotICAKICAgYXJnc1swXSA9ICZ0czNfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzM19hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jCmluZGV4IDBhZDBhODMuLjQ4ZTAzNDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMKQEAgLTI4LDIxICsyOCwyMiBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czRfdHlwZTsKICAgZmZpX3R5cGUgKnRzNF90eXBlX2VsZW1lbnRzWzRdOyAgCisKKyAgdGVzdF9zdHJ1Y3R1cmVfNCB0czRfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV80ICp0czRfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNCAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV80KSk7CisKICAgdHM0X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNF90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIHRlc3Rfc3RydWN0dXJlXzQgdHM0X2FyZzsKICAgdHM0X3R5cGUuZWxlbWVudHMgPSB0czRfdHlwZV9lbGVtZW50czsKICAgdHM0X3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOwogCi0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNCAqdHM0X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV80ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzQpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM0X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czRfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYwppbmRleCBjMDNjYzk3Li4yOGIxZjBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jCkBAIC0yNyw2ICsyNywxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czVfdHlwZTsKICAgZmZpX3R5cGUgKnRzNV90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzUgdHM1X2FyZzEsIHRzNV9hcmcyOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV81ICp0czVfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV81KSk7CisKICAgdHM1X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNSwxMiArNDIsNiBAQAogICB0czVfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9zY2hhcjsKICAgdHM1X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzUgdHM1X2FyZzEsIHRzNV9hcmcyOwotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzUgKnRzNV9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfNSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV81KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzNV90eXBlOwogICBhcmdzWzFdID0gJnRzNV90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM1X2FyZzE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMKaW5kZXggODNkYjlhZi4uMGUyNjc0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYwpAQCAtMjcsNiArMjcsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM2X3R5cGU7CiAgIGZmaV90eXBlICp0czZfdHlwZV9lbGVtZW50c1szXTsKKworICB0ZXN0X3N0cnVjdHVyZV82IHRzNl9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzYgKnRzNl9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV82ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzYpKTsKKwogICB0czZfdHlwZS5zaXplID0gMDsKICAgdHM2X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM2X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM1LDEzICs0Miw2IEBACiAgIHRzNl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgdHM2X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0KLSAgdGVzdF9zdHJ1Y3R1cmVfNiB0czZfYXJnOwotCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV82ICp0czZfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzYgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNikpOwotICAKICAgYXJnc1swXSA9ICZ0czZfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzNl9hcmc7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYwppbmRleCA1OGFhYzRjLi44ZjJiYmZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jCkBAIC0yOSw2ICsyOSwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czdfdHlwZTsKICAgZmZpX3R5cGUgKnRzN190eXBlX2VsZW1lbnRzWzRdOworCisgIHRlc3Rfc3RydWN0dXJlXzcgdHM3X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfNyAqdHM3X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzcgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNykpOworCiAgIHRzN190eXBlLnNpemUgPSAwOwogICB0czdfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czdfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzgsMTMgKzQ1LDYgQEAKICAgdHM3X3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwogICB0czdfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAKLQotICB0ZXN0X3N0cnVjdHVyZV83IHRzN19hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNyAqdHM3X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV83ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzcpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM3X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czdfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYwppbmRleCBjNzczYWM3Li4yNjZlMWYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jCkBAIC0zMSw2ICszMSwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czhfdHlwZTsKICAgZmZpX3R5cGUgKnRzOF90eXBlX2VsZW1lbnRzWzVdOworCisgIHRlc3Rfc3RydWN0dXJlXzggdHM4X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfOCAqdHM4X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzggKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOCkpOworCiAgIHRzOF90eXBlLnNpemUgPSAwOwogICB0czhfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czhfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNDEsMTIgKzQ4LDYgQEAKICAgdHM4X3R5cGVfZWxlbWVudHNbM10gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIHRzOF90eXBlX2VsZW1lbnRzWzRdID0gTlVMTDsKIAotICB0ZXN0X3N0cnVjdHVyZV84IHRzOF9hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfOCAqdHM4X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV84ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzgpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM4X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czhfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYwppbmRleCBmMzAwOTFmLi5lZmViNzE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jCkBAIC0yOCw2ICsyOCwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czlfdHlwZTsKICAgZmZpX3R5cGUgKnRzOV90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzkgdHM5X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfOSAqdHM5X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzkgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOSkpOworCiAgIHRzOV90eXBlLnNpemUgPSAwOwogICB0czlfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czlfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzYsMTIgKzQzLDYgQEAKICAgdHM5X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgdHM5X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzkgdHM5X2FyZzsKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV85ICp0czlfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzkgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOSkpOwotICAKICAgYXJnc1swXSA9ICZ0czlfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzOV9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMKaW5kZXggMTYxY2M4OS4uY2EzMTA1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jCkBAIC00MywxMyArNDMsMTMgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlMDsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7NC4wLCA1LjAsIDEuMCwgOC4wfTsKKwogICBjbHNfc3RydWN0X3R5cGUwLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUwLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZTAudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMC5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMDsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHs0LjAsIDUuMCwgMS4wLCA4LjB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzMFswXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHMwWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkczBbMl0gPSAmZmZpX3R5cGVfZmxvYXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCmluZGV4IGUxNjdlODYuLjc0NjcxYjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQsOCArMTQsNiBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLWxvYWRfbGliIGxpYmZmaS1kZy5leHAKLQogZGctaW5pdAogbGliZmZpLWluaXQKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYyBiL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKaW5kZXggMjMzODgxOC4uMjVkOTk5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCkBAIC00MjYsOSArNDI2LDkgQEAKICAgICAgICAgU3RnRGljdE9iamVjdCAqZGljdDsKICAgICAgICAgaW50IGJpdHNpemUgPSAwOwogCi0gICAgICAgIGlmICghcGFpciB8fCAhUHlBcmdfUGFyc2VUdXBsZShwYWlyLCAiT098aSIsICZuYW1lLCAmZGVzYywgJmJpdHNpemUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIidfZmllbGRzXycgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHBhaXJzIik7CisgICAgICAgIGlmICghcGFpciB8fCAhUHlBcmdfUGFyc2VUdXBsZShwYWlyLCAiVU98aSIsICZuYW1lLCAmZGVzYywgJmJpdHNpemUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICInX2ZpZWxkc18nIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiAobmFtZSwgQyB0eXBlKSBwYWlycyIpOwogICAgICAgICAgICAgUHlfWERFQ1JFRihwYWlyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNDc4LDYgKzQ3OCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYml0c2l6ZSA9IDA7CisKICAgICAgICAgaWYgKGlzU3RydWN0ICYmICFpc1BhY2tlZCkgewogICAgICAgICAgICAgY2hhciAqZmllbGRmbXQgPSBkaWN0LT5mb3JtYXQgPyBkaWN0LT5mb3JtYXQgOiAiQiI7CiAgICAgICAgICAgICBjaGFyICpmaWVsZG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwpAQCAtNDg3LDEwICs0ODgsNiBAQAogCiAgICAgICAgICAgICBpZiAoZmllbGRuYW1lID09IE5VTEwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSBmaWVsZCBuYW1lIG11c3QgYmUgc3RyaW5nIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFpcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtNTE1LDYgKzUxMiw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKGlzU3RydWN0KSB7CiAgICAgICAgICAgICBwcm9wID0gUHlDRmllbGRfRnJvbURlc2MoZGVzYywgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpZWxkX3NpemUsIGJpdHNpemUsICZiaXRvZnMsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCmluZGV4IDg1NjFhMmUuLjFjN2QwODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCisrKyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCkBAIC0xNiw4ICsxNiwzNyBAQAogCiAjaW5jbHVkZSA8cGFuZWwuaD4KIAotc3RhdGljIFB5T2JqZWN0ICpQeUN1cnNlc0Vycm9yOwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpQeUN1cnNlc0Vycm9yOworICAgIFB5T2JqZWN0ICpQeUN1cnNlc1BhbmVsX1R5cGU7Cit9IF9jdXJzZXNfcGFuZWxzdGF0ZTsKIAorI2RlZmluZSBfY3Vyc2VzX3BhbmVsc3RhdGUobykgKChfY3Vyc2VzX3BhbmVsc3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShvKSkKKworc3RhdGljIGludAorX2N1cnNlc19wYW5lbF9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgICBQeV9DTEVBUihfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY3Vyc2VzX3BhbmVsX3RyYXZlcnNlKFB5T2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX2N1cnNlc19wYW5lbF9mcmVlKHZvaWQgKm0pCit7CisgICAgX2N1cnNlc19wYW5lbF9jbGVhcigoUHlPYmplY3QgKikgbSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2N1cnNlc19wYW5lbG1vZHVsZTsKKworI2RlZmluZSBfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsIFwKKygoX2N1cnNlc19wYW5lbHN0YXRlICopIFB5TW9kdWxlX0dldFN0YXRlKFB5U3RhdGVfRmluZE1vZHVsZSgmX2N1cnNlc19wYW5lbG1vZHVsZSkpKQogCiAvKiBVdGlsaXR5IEZ1bmN0aW9ucyAqLwogCkBAIC0zNCw5ICs2Myw5IEBACiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChmbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfRVJSKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9FUlIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5Q3Vyc2VzRXJyb3IsICIlcygpIHJldHVybmVkIEVSUiIsIGZuYW1lKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAiJXMoKSByZXR1cm5lZCBFUlIiLCBmbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTQsOSArODMsOCBAQAogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3bzsgICAvKiBmb3IgcmVmZXJlbmNlIGNvdW50cyAqLwogfSBQeUN1cnNlc1BhbmVsT2JqZWN0OwogCi1QeVR5cGVPYmplY3QgUHlDdXJzZXNQYW5lbF9UeXBlOwotCi0jZGVmaW5lIFB5Q3Vyc2VzUGFuZWxfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlDdXJzZXNQYW5lbF9UeXBlKQorI2RlZmluZSBQeUN1cnNlc1BhbmVsX0NoZWNrKHYpICBcCisgKFB5X1RZUEUodikgPT0gX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNQYW5lbF9UeXBlKQogCiAvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUncyBhbHdheXMgYSB3aW5kb3cKICAgIGFzc29jaWF0ZWQgd2l0aCBhIHBhbmVsLiBUbyBlbnN1cmUgdGhhdCBQeXRob24ncyBHQyBkb2Vzbid0IHB1bGwKQEAgLTE3NSw3ICsyMDMsOCBAQAogewogICAgIFB5Q3Vyc2VzUGFuZWxPYmplY3QgKnBvOwogCi0gICAgcG8gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNQYW5lbE9iamVjdCwgJlB5Q3Vyc2VzUGFuZWxfVHlwZSk7CisgICAgcG8gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNQYW5lbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwpLT5QeUN1cnNlc1BhbmVsX1R5cGUpOwogICAgIGlmIChwbyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICBwby0+cGFuID0gcGFuOwogICAgIGlmIChpbnNlcnRfbG9wKHBvKSA8IDApIHsKQEAgLTI4MCw3ICszMDksNyBAQAogCiAgICAgcnRuID0gcmVwbGFjZV9wYW5lbChzZWxmLT5wYW4sIHRlbXAtPndpbik7CiAgICAgaWYgKHJ0biA9PSBFUlIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJyZXBsYWNlX3BhbmVsKCkgcmV0dXJuZWQgRVJSIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAicmVwbGFjZV9wYW5lbCgpIHJldHVybmVkIEVSUiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfREVDUkVGKHBvLT53byk7CkBAIC0zMDUsNyArMzM0LDcgQEAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOwogICAgIG9iaiA9IChQeU9iamVjdCAqKSBwYW5lbF91c2VycHRyKHNlbGYtPnBhbik7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCAibm8gdXNlcnB0ciBzZXQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsICJubyB1c2VycHRyIHNldCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMzNCwzNiArMzYzLDE4IEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi1QeVR5cGVPYmplY3QgUHlDdXJzZXNQYW5lbF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfY3Vyc2VzX3BhbmVsLmN1cnNlcyBwYW5lbCIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5Q3Vyc2VzUGFuZWxPYmplY3QpLCAgICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKVB5Q3Vyc2VzUGFuZWxfRGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIFB5Q3Vyc2VzUGFuZWxfTWV0aG9kcywgLyp0cF9tZXRob2RzKi8KK3N0YXRpYyBQeVR5cGVfU2xvdCBQeUN1cnNlc1BhbmVsX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZGVhbGxvYywgUHlDdXJzZXNQYW5lbF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgUHlDdXJzZXNQYW5lbF9NZXRob2RzfSwKKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgUHlDdXJzZXNQYW5lbF9UeXBlX3NwZWMgPSB7CisgICAgIl9jdXJzZXNfcGFuZWwuY3Vyc2VzIHBhbmVsIiwKKyAgICBzaXplb2YoUHlDdXJzZXNQYW5lbE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgUHlDdXJzZXNQYW5lbF9UeXBlX3Nsb3RzCiB9OwogCiAvKiBXcmFwcGVyIGZvciBwYW5lbF9hYm92ZShOVUxMKS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBib3R0b20KQEAgLTQwNSw3ICs0MTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwYW4gPSBuZXdfcGFuZWwod2luLT53aW4pOwogICAgIGlmIChwYW4gPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfTlVMTCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1BhbmVsX05ldyhwYW4sIHdpbik7CkBAIC00NjcsMTIgKzQ3OCwxMiBAQAogICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgICAgICJfY3Vyc2VzX3BhbmVsIiwKICAgICAgICAgTlVMTCwKLSAgICAgICAgLTEsCisgICAgICAgIHNpemVvZihfY3Vyc2VzX3BhbmVsc3RhdGUpLAogICAgICAgICBQeUN1cnNlc19tZXRob2RzLAogICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMCisgICAgICAgIF9jdXJzZXNfcGFuZWxfdHJhdmVyc2UsCisgICAgICAgIF9jdXJzZXNfcGFuZWxfY2xlYXIsCisgICAgICAgIF9jdXJzZXNfcGFuZWxfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKQEAgLTQ4MCwyMSArNDkxLDIzIEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKIAotICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUN1cnNlc1BhbmVsX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbXBvcnRfY3Vyc2VzKCk7Ci0KICAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSBhbmQgYWRkIHRoZSBmdW5jdGlvbnMgKi8KICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfY3Vyc2VzX3BhbmVsbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCisgICAgLyogSW5pdGlhbGl6ZSBvYmplY3QgdHlwZSAqLworICAgIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNQYW5lbF9UeXBlID0gXAorICAgICAgICBQeVR5cGVfRnJvbVNwZWMoJlB5Q3Vyc2VzUGFuZWxfVHlwZV9zcGVjKTsKKyAgICBpZiAoX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc1BhbmVsX1R5cGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaW1wb3J0X2N1cnNlcygpOworCiAgICAgLyogRm9yIGV4Y2VwdGlvbiBfY3Vyc2VzX3BhbmVsLmVycm9yICovCi0gICAgUHlDdXJzZXNFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2N1cnNlc19wYW5lbC5lcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIFB5Q3Vyc2VzRXJyb3IpOworICAgIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2N1cnNlc19wYW5lbC5lcnJvciIsIE5VTEwsIE5VTEwpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvcik7CiAKICAgICAvKiBNYWtlIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSAqLwogICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeUN1cnNlc1ZlcnNpb24pOwpAQCAtNTAyLDQgKzUxNSw3IEBACiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fdmVyc2lvbl9fIiwgdik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIHJldHVybiBtOworICBmYWlsOgorICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDVlMWFmYTkuLjRlMTQ0OWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xMDUsMTAgKzEwNSw2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKIAotI2lmZGVmIF9fb3NmX18KLSNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTICAgICAgLyogRG9uJ3QgdXNlIG5jdXJzZXMgZXh0ZW5zaW9ucyAqLwotI2VuZGlmCi0KICNpZmRlZiBfX2hwdXgKICNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAjZW5kaWYKQEAgLTEyNSw2ICsxMjEsMTAgQEAKICNpbmNsdWRlIDx0ZXJtLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTEFOR0lORk9fSAorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEhBVkVfTkNVUlNFU19IKSAmJiAoZGVmaW5lZChzZ2kpIHx8IGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoU0NPNSkpCiAjZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUyAgICAgICAvKiBEb24ndCB1c2UgbmN1cnNlcyBleHRlbnNpb25zICovCiB0eXBlZGVmIGNodHlwZSBhdHRyX3Q7ICAgICAgICAgICAvKiBObyBhdHRyX3QgdHlwZSBpcyBhdmFpbGFibGUgKi8KQEAgLTE0Nyw2ICsxNDcsOCBAQAogLyogVGVsbHMgd2hldGhlciBzdGFydF9jb2xvcigpIGhhcyBiZWVuIGNhbGxlZCB0byBpbml0aWFsaXNlIGNvbG9yIHVzYWdlLiAqLwogc3RhdGljIGludCBpbml0aWFsaXNlZGNvbG9ycyA9IEZBTFNFOwogCitzdGF0aWMgY2hhciAqc2NyZWVuX2VuY29kaW5nID0gTlVMTDsKKwogLyogVXRpbGl0eSBNYWNyb3MgKi8KICNkZWZpbmUgUHlDdXJzZXNTZXR1cFRlcm1DYWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoaW5pdGlhbGlzZWRfc2V0dXB0ZXJtICE9IFRSVUUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3OSw3ICsxODEsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xOTQsMjcgKzE5NiwxNzUgQEAKICAgICB9CiB9CiAKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgYnl0ZSAoYW4gaW50ZWdlciBvZiB0eXBlIGNodHlwZSk6CisKKyAgIC0gaW50CisgICAtIGJ5dGVzIG9mIGxlbmd0aCAxCisgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yIChpbnZhbGlkIHR5cGUgb3IgaW50ZWdlciBvdmVyZmxvdykuICovCiBzdGF0aWMgaW50Ci1QeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoUHlPYmplY3QgKm9iaiwgY2h0eXBlICpjaCkKK1B5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLCBjaHR5cGUgKmNoKQogewotICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7Ci0gICAgICAgIGludCBvdmVyZmxvdzsKLSAgICAgICAgLyogWFhYIHNob3VsZCB0aGUgdHJ1bmNhdGlvbiBieSB0aGUgY2FzdCBhbHNvIGJlIHJlcG9ydGVkCi0gICAgICAgICAgIGFzIGFuIGVycm9yPyAqLwotICAgICAgICAqY2ggPSAoY2h0eXBlKSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOwotICAgICAgICBpZiAob3ZlcmZsb3cpCisgICAgbG9uZyB2YWx1ZTsKKyAgICBpZihQeUJ5dGVzX0NoZWNrKG9iaikgJiYgUHlCeXRlc19TaXplKG9iaikgPT0gMSkgeworICAgICAgICB2YWx1ZSA9ICh1bnNpZ25lZCBjaGFyKVB5Qnl0ZXNfQXNTdHJpbmcob2JqKVswXTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgob2JqKSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGEgc3RyIG9mIGxlbmd0aCAlemkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKQotICAgICAgICAgICAgICAmJiAoUHlCeXRlc19TaXplKG9iaikgPT0gMSkpIHsKLSAgICAgICAgKmNoID0gKGNodHlwZSkgKlB5Qnl0ZXNfQXNTdHJpbmcob2JqKTsKLSAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9HZXRTaXplKG9iaikgPT0gMSkgewotICAgICAgICAqY2ggPSAoY2h0eXBlKSAqUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLSAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICBpZiAoMTI4IDwgdmFsdWUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworICAgICAgICAgICAgaWYgKHdpbikKKyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHdpbi0+ZW5jb2Rpbmc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBzY3JlZW5fZW5jb2Rpbmc7CisgICAgICAgICAgICBieXRlcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Qob2JqLCBlbmNvZGluZywgTlVMTCk7CisgICAgICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSA9PSAxKQorICAgICAgICAgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpWzBdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlID0gLTE7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgaW50IGxvbmdfb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJmxvbmdfb3ZlcmZsb3cpOworICAgICAgICBpZiAobG9uZ19vdmVyZmxvdykKKyAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqY2ggPSAoY2h0eXBlKXZhbHVlOworICAgIGlmICgobG9uZykqY2ggIT0gdmFsdWUpCisgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgcmV0dXJuIDE7CisKK292ZXJmbG93OgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAiYnl0ZSBkb2Vzbid0IGZpdCBpbiBjaHR5cGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIChjaHR5cGUpIG9yIGEgY2hhcmFjdGVyIChjY2hhcl90KToKKworICAgIC0gaW50CisgICAgLSBieXRlcyBvZiBsZW5ndGggMQorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybjoKKworICAgIC0gMiBpZiBvYmogaXMgYSBjaGFyYWN0ZXIgKHdyaXR0ZW4gaW50byAqd2NoKQorICAgIC0gMSBpZiBvYmogaXMgYSBieXRlICh3cml0dGVuIGludG8gKmNoKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9DY2hhcl90KFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW4sIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNodHlwZSAqY2gKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgICAgICAgICAgICAgICAgICAgICwgY2NoYXJfdCAqd2NoCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIGxvbmcgdmFsdWU7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgYnVmZmVyWzJdOworI2VuZGlmCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldCh3Y2gtPmNoYXJzLCAwLCBzaXplb2Yod2NoLT5jaGFycykpOworICAgICAgICB3Y2gtPmNoYXJzWzBdID0gYnVmZmVyWzBdOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIHJldHVybiBQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUod2luLCBvYmosIGNoKTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKSAmJiBQeUJ5dGVzX1NpemUob2JqKSA9PSAxKSB7CisgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19Bc1N0cmluZyhvYmopWzBdOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKmNoID0gKGNodHlwZSl2YWx1ZTsKKyAgICBpZiAoKGxvbmcpKmNoICE9IHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGUgZG9lc24ndCBmaXQgaW4gY2h0eXBlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KIAorLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIHN0cmluZyAoY2hhciopIG9yIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nCisgICAod2NoYXJfdCopLiBSZXR1cm46CisKKyAgICAtIDIgaWYgb2JqIGlzIGEgY2hhcmFjdGVyIHN0cmluZyAod3JpdHRlbiBpbnRvICp3Y2gpCisgICAgLSAxIGlmIG9iaiBpcyBhIGJ5dGUgc3RyaW5nICh3cml0dGVuIGludG8gKmJ5dGVzKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKndpbiwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmJ5dGVzLCB3Y2hhcl90ICoqd3N0cikKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGFzc2VydCAod3N0ciAhPSBOVUxMKTsKKyAgICAgICAgKndzdHIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhvYmosIE5VTEwpOworICAgICAgICBpZiAoKndzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIGFzc2VydCAod3N0ciA9PSBOVUxMKTsKKyAgICAgICAgKmJ5dGVzID0gUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChvYmosIHdpbi0+ZW5jb2RpbmcsIE5VTEwpOworICAgICAgICBpZiAoKmJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgICAgICAqYnl0ZXMgPSBvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJleHBlY3QgYnl0ZXMgb3Igc3RyLCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgIHJldHVybiAwOworfQorCiAvKiBGdW5jdGlvbiB2ZXJzaW9ucyBvZiB0aGUgMyBmdW5jdGlvbnMgZm9yIHRlc3Rpbmcgd2hldGhlciBjdXJzZXMgaGFzIGJlZW4KICAgIGluaXRpYWxpc2VkIG9yIG5vdC4gKi8KIApAQCAtMzU4LDEzICs1MDgsMzcgQEAKIC8qIEFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBXaW5kb3cgT2JqZWN0cyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luKQorUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd287CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgY2hhciAqYnVmZmVyWzEwMF07CisgICAgICAgIFVJTlQgY3A7CisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgICAgIGlmIChjcCAhPSAwKSB7CisgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJjcCV1IiwgY3ApOworICAgICAgICAgICAgZW5jb2RpbmcgPSBidWZmZXI7CisgICAgICAgIH0KKyNlbGlmIGRlZmluZWQoQ09ERVNFVCkKKyAgICAgICAgY29uc3QgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gY29kZXNldDsKKyNlbmRpZgorICAgICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyAgICB9CisKICAgICB3byA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1dpbmRvd09iamVjdCwgJlB5Q3Vyc2VzV2luZG93X1R5cGUpOwogICAgIGlmICh3byA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICB3by0+d2luID0gd2luOworICAgIHdvLT5lbmNvZGluZyA9IHN0cmR1cChlbmNvZGluZyk7CisgICAgaWYgKHdvLT5lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih3byk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopd287CiB9CiAKQEAgLTM3Miw2ICs1NDYsOCBAQAogUHlDdXJzZXNXaW5kb3dfRGVhbGxvYyhQeUN1cnNlc1dpbmRvd09iamVjdCAqd28pCiB7CiAgICAgaWYgKHdvLT53aW4gIT0gc3Rkc2NyKSBkZWx3aW4od28tPndpbik7CisgICAgaWYgKHdvLT5lbmNvZGluZyAhPSBOVUxMKQorICAgICAgICBmcmVlKHdvLT5lbmNvZGluZyk7CiAgICAgUHlPYmplY3RfREVMKHdvKTsKIH0KIApAQCAtMzgxLDI5ICs1NTcsMzQgQEAKIFB5Q3Vyc2VzV2luZG93X0FkZENoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCB1c2VfeHkgPSBGQUxTRTsKLSAgICBQeU9iamVjdCAqdGVtcDsKLSAgICBjaHR5cGUgY2ggPSAwOworICAgIFB5T2JqZWN0ICpjaG9iajsKKyAgICBpbnQgdHlwZTsKKyAgICBjaHR5cGUgY2g7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGNjaGFyX3Qgd2NoOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmdGVtcCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDtjaCBvciBpbnQsYXR0ciIsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sO2NoIG9yIGludCxhdHRyIiwgJmNob2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxjaCBvciBpbnQiLCAmeSwgJngsICZ0ZW1wKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTzt5LHgsY2ggb3IgaW50IiwgJnksICZ4LCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2w7eSx4LGNoIG9yIGludCwgYXR0ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJngsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnksICZ4LCAmY2hvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwpAQCAtNDEzLDE3ICs1OTQsMzMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgdHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb0NjaGFyX3Qoc2VsZiwgY2hvYmosICZjaCwgJndjaCk7CisgICAgaWYgKHR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGRfd2NoIjsKKyAgICAgICAgd2NoLmF0dHIgPSBhdHRyOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRfd2NoKHNlbGYtPndpbix5LHgsICZ3Y2gpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRfd2NoKHNlbGYtPndpbiwgJndjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2Vsc2UKKyAgICB0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvQ2NoYXJfdChzZWxmLCBjaG9iaiwgJmNoKTsKKyNlbmRpZgorICAgIGlmICh0eXBlID09IDEpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkY2giOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRjaChzZWxmLT53aW4sIGNoIHwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3YWRkY2goc2VsZi0+d2luLHkseCwgY2ggfCBhdHRyKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcnRuID0gd2FkZGNoKHNlbGYtPndpbiwgY2ggfCBhdHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiYWRkY2giKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzMSwyOSArNjI4LDM0IEBACiB7CiAgICAgaW50IHJ0bjsKICAgICBpbnQgeCwgeTsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywicztzdHIiLCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87c3RyIiwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2w7c3RyLGF0dHIiLCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2w7c3RyLGF0dHIiLCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXM7aW50LGludCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO2ludCxpbnQsc3RyIiwgJnksICZ4LCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNsO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9sO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC00NjIsNDcgKzY2NCw3NCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYWRkc3RyIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndhZGRzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHdzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGR3c3RyKHNlbGYtPndpbix5LHgsd3N0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGR3c3RyKHNlbGYtPndpbix3c3RyKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkc3RyKHNlbGYtPndpbixzdHIpOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHN0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZHN0cihzZWxmLT53aW4seSx4LHN0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRzdHIoc2VsZi0+d2luLHN0cik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImFkZHN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfQWRkTlN0cihQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJ0biwgeCwgeSwgbjsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2k7c3RyLG4iLCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaTtzdHIsbiIsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaWw7c3RyLG4sYXR0ciIsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2lsO3N0cixuLGF0dHIiLCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtNTExLDE4ICs3NDAsNDEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFkZG5zdHIgcmVxdWlyZXMgMiB0byA1IGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2FkZG5zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkbndzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRud3N0cihzZWxmLT53aW4sd3N0cixuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZG5zdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJhZGRuc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NDgsMTAgKzgwMCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZia2dkKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmYmtnZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHdia2dkKHNlbGYtPndpbiwgYmtnZCB8IGF0dHIpLCAiYmtnZCIpOwogfQpAQCAtNjA2LDEwICs4NTYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmYmtnZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZia2dkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgd2JrZ2RzZXQoc2VsZi0+d2luLCBia2dkIHwgYXR0cik7CiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoMCwgImJrZ2RzZXQiKTsKQEAgLTYzNCwxMSArODgyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IoaT0wOyBpPDg7IGkrKykgewotICAgICAgICBpZiAodGVtcFtpXSAhPSBOVUxMICYmICFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcFtpXSwgJmNoW2ldKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJWkgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIsIGkrMSk7CisgICAgICAgIGlmICh0ZW1wW2ldICE9IE5VTEwgJiYgIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wW2ldLCAmY2hbaV0pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICB3Ym9yZGVyKHNlbGYtPndpbiwKQEAgLTc4Myw3ICsxMDI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTgxMSwxMCArMTA1Niw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogI2lmZGVmIFdJTkRPV19IQVNfRkxBR1MKICAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCkBAIC05MTAsNiArMTE1Myw0MyBAQAogICAgIH0KIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc1dpbmRvd19HZXRfV0NoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgeCwgeTsKKyAgICBpbnQgY3Q7CisgICAgd2ludF90IHJ0bjsKKworICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gd2dldF93Y2goc2VsZi0+d2luLCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTt5LHgiLCZ5LCZ4KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gbXZ3Z2V0X3djaChzZWxmLT53aW4seSx4LCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2V0X3djaCByZXF1aXJlcyAwIG9yIDIgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY3QgPT0gRVJSKSB7CisgICAgICAgIC8qIGdldF93Y2goKSByZXR1cm5zIEVSUiBpbiBub2RlbGF5IG1vZGUgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJubyBpbnB1dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGN0ID09IEtFWV9DT0RFX1lFUykKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydG4pOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChydG4pOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19HZXRTdHIoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTAwMSwxMSArMTI4MSw4IEBACiAgICAgfQogCiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7Ci0gICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih3aGxpbmUoc2VsZi0+d2luLCBjaCB8IGF0dHIsIG4pLCAiaGxpbmUiKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoY29kZSwgIndtb3ZlIik7CkBAIC0xMDQ2LDExICsxMzIzLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQogICAgICAgICBydG4gPSBtdndpbnNjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOwpAQCAtMTEyMSwyOSArMTM5NSwzNCBAQAogewogICAgIGludCBydG47CiAgICAgaW50IHgsIHk7Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInM7c3RyIiwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO3N0ciIsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNsO3N0cixhdHRyIiwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9sO3N0cixhdHRyIiwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzO3kseCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxzdHIiLCAmeSwgJngsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2w7eSx4LHN0cixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPbDt5LHgsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMTUzLDQ2ICsxNDMyLDc1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc3dzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNfd3N0cihzZWxmLT53aW4seSx4LHdzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zX3dzdHIoc2VsZi0+d2luLHdzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdpbnNzdHIoc2VsZi0+d2luLHN0cik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc3N0cihzZWxmLT53aW4sc3RyKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19JbnNOU3RyKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCBuOwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaTtzdHIsbiIsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pO3N0cixuIiwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpbDtzdHIsbixhdHRyIiwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaWw7c3RyLG4sYXR0ciIsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDU6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMjAyLDE3ICsxNTEwLDQxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc25fd3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc19ud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNfbndzdHIoc2VsZi0+d2luLHdzdHIsbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJpbnNuc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zbnN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM4NSwxMCArMTcxNywxMiBAQAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGNoYXIgYnVmW0JVRlNJWl07CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IGZyZWFkKGJ1ZiwgMSwgQlVGU0laLCBmcCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgICAgICBpZiAobiA8PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cmVhbSwgIndyaXRlIiwgInkjIiwgYnVmLCBuKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3dyaXRlLCAieSMiLCBidWYsIG4pOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDkzLDcgKzE4MjcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIHNlbGYtPmVuY29kaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1NjksMTYgKzE5MDMsNTIgQEAKICAgICB9CiAKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKLSAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHd2bGluZShzZWxmLT53aW4sIGNoIHwgYXR0ciwgbiksICJ2bGluZSIpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihjb2RlLCAid21vdmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzV2luZG93X2dldF9lbmNvZGluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2VsZi0+ZW5jb2RpbmcpOworfQorCitzdGF0aWMgaW50CitQeUN1cnNlc1dpbmRvd19zZXRfZW5jb2RpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqYXNjaWk7CisgICAgY2hhciAqZW5jb2Rpbmc7CisKKyAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCB3aW4uZW5jb2RpbmcgKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIG1heSBub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBlbmNvZGluZyB0byBhIG5vbi1zdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc2NpaSA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAoYXNjaWkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVuY29kaW5nID0gc3RyZHVwKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpKSk7CisgICAgUHlfREVDUkVGKGFzY2lpKTsKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGZyZWUoc2VsZi0+ZW5jb2RpbmcpOworICAgIHNlbGYtPmVuY29kaW5nID0gZW5jb2Rpbmc7CisgICAgcmV0dXJuIDA7Cit9CisKKwogc3RhdGljIFB5TWV0aG9kRGVmIFB5Q3Vyc2VzV2luZG93X01ldGhvZHNbXSA9IHsKICAgICB7ImFkZGNoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BZGRDaCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImFkZG5zdHIiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BZGROU3RyLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTYwOCw2ICsxOTc4LDkgQEAKICAgICB7ImdldGJrZ2QiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRCa2dkLCBNRVRIX05PQVJHU30sCiAgICAgeyJnZXRjaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0Q2gsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRrZXkiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0S2V5LCBNRVRIX1ZBUkFSR1N9LAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB7ImdldF93Y2giLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRfV0NoLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJnZXRtYXh5eCIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfZ2V0bWF4eXgsIE1FVEhfTk9BUkdTfSwKICAgICB7ImdldHBhcnl4IiwgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19nZXRwYXJ5eCwgTUVUSF9OT0FSR1N9LAogICAgIHsiZ2V0c3RyIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldFN0ciwgTUVUSF9WQVJBUkdTfSwKQEAgLTE2NjMsNiArMjAzNiwxNCBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBQeUN1cnNlc1dpbmRvd19nZXRzZXRzW10gPSB7CisgICAgeyJlbmNvZGluZyIsCisgICAgIChnZXR0ZXIpUHlDdXJzZXNXaW5kb3dfZ2V0X2VuY29kaW5nLAorICAgICAoc2V0dGVyKVB5Q3Vyc2VzV2luZG93X3NldF9lbmNvZGluZywKKyAgICAgInRoZSB0eXBlY29kZSBjaGFyYWN0ZXIgdXNlZCB0byBjcmVhdGUgdGhlIGFycmF5In0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSAgLyogc2VudGluZWwgKi8KK307CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiBQeVR5cGVPYmplY3QgUHlDdXJzZXNXaW5kb3dfVHlwZSA9IHsKQEAgLTE2OTUsNiArMjA3Niw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwogICAgIFB5Q3Vyc2VzV2luZG93X01ldGhvZHMsICAgICAvKnRwX21ldGhvZHMqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgUHlDdXJzZXNXaW5kb3dfZ2V0c2V0cywgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTg3NSw2ICsyMjU4LDcgQEAKICAgICBXSU5ET1cgKndpbjsKIAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKICAgICBzdHJjcHkoZm4sICIvdG1wL3B5LmN1cnNlcy5nZXR3aW4uWFhYWFhYIik7CiAgICAgZmQgPSBta3N0ZW1wKGZuKTsKQEAgLTE4ODYsNyArMjI3MCw3IEBACiAgICAgICAgIHJlbW92ZShmbik7CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgZm4pOwogICAgIH0KLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzdHJlYW0sICJyZWFkIiwgIiIpOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgIiIpOwogICAgIGlmIChkYXRhID09IE5VTEwpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICAgICAgcmVtb3ZlKGZuKTsKQEAgLTE5MTcsNyArMjMwMSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTk1LDEwICsyMzc5LDExIEBACiBQeUN1cnNlc19Jbml0U2NyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFdJTkRPVyAqd2luOworICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW5vYmo7CiAKICAgICBpZiAoaW5pdGlhbGlzZWQgPT0gVFJVRSkgewogICAgICAgICB3cmVmcmVzaChzdGRzY3IpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHN0ZHNjcik7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcoc3Rkc2NyLCBOVUxMKTsKICAgICB9CiAKICAgICB3aW4gPSBpbml0c2NyKCk7CkBAIC0yMDkwLDcgKzI0NzUsOSBAQAogICAgIFNldERpY3RJbnQoIkxJTkVTIiwgTElORVMpOwogICAgIFNldERpY3RJbnQoIkNPTFMiLCBDT0xTKTsKIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICB3aW5vYmogPSAoUHlDdXJzZXNXaW5kb3dPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKKyAgICBzY3JlZW5fZW5jb2RpbmcgPSB3aW5vYmotPmVuY29kaW5nOworICAgIHJldHVybiAoUHlPYmplY3QgKil3aW5vYmo7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMjkyLDcgKzI2NzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjMyNCw3ICsyNzExLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0MTYsNiArMjgwMyw4IEBACiB7CiAgICAgUHlPYmplY3QgKm87CiAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJjdXJzZXMiKTsKKyAgICBfUHlfSURFTlRJRklFUihMSU5FUyk7CisgICAgX1B5X0lERU5USUZJRVIoQ09MUyk7CiAKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQyNSwxMiArMjgxNCwxMyBAQAogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtLCAiTElORVMiLCBvKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX0xJTkVTLCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhNb2REaWN0LCAiTElORVMiLCBvKSkgeworICAgIC8qIFB5SWRfTElORVMub2JqZWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaGVyZS4gKi8KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oTW9kRGljdCwgUHlJZF9MSU5FUy5vYmplY3QsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI0NDEsMTIgKzI4MzEsMTIgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgIkNPTFMiLCBvKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX0NPTFMsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKE1vZERpY3QsICJDT0xTIiwgbykpIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oTW9kRGljdCwgUHlJZF9DT0xTLm9iamVjdCwgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjYzOCwxMCArMzAyOCw4IEBACiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoTlVMTCwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyh1bmN0cmwoY2gpKTsKIH0KQEAgLTI2NTQsMTYgKzMwNDIsODAgQEAKIAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKE5VTEwsIHRlbXAsICZjaCkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIodW5nZXRjaChjaCksICJ1bmdldGNoIik7CiB9CiAKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGNoYXJhY3RlciAod2NoYXJfdCk6CisKKyAgICAtIGludAorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MsIDAgb24gZXJyb3IuICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9XY2hhcl90KFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndjaCkKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgd2NoYXJfdCBidWZmZXJbMl07CisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICp3Y2ggPSBidWZmZXJbMF07CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGxvbmcgdmFsdWU7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKndjaCA9ICh3Y2hhcl90KXZhbHVlOworICAgICAgICBpZiAoKGxvbmcpKndjaCAhPSB2YWx1ZSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBkb2Vzbid0IGZpdCBpbiB3Y2hhcl90Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlDdXJzZXNfVW5nZXRfV2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHdjaGFyX3Qgd2NoOworCisgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9XY2hhcl90KG9iaiwgJndjaCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHVuZ2V0X3djaCh3Y2gpLCAidW5nZXRfd2NoIik7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzX1VzZV9FbnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjc5MSw2ICszMjQzLDkgQEAKICAgICB7InR5cGVhaGVhZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVHlwZUFoZWFkLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5jdHJsIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbkN0cmwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmdldGNoIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0Q2gsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHsidW5nZXRfd2NoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbmdldF9XY2gsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKICAgICB7InVzZV9lbnYiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVXNlX0VudiwgTUVUSF9WQVJBUkdTfSwKICNpZm5kZWYgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAgICAgeyJ1c2VfZGVmYXVsdF9jb2xvcnMiLCAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VzZV9EZWZhdWx0X0NvbG9ycywgTUVUSF9OT0FSR1N9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggZWYyZjdiMy4uODczZDQ2ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC03LDggKzcsNiBAQAogCiAjaW5jbHVkZSA8dGltZS5oPgogCi0jaW5jbHVkZSAiX3RpbWUuaCIKLQogLyogRGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGJ1aWxkaW5nIHRoZSBjb3JlIG1vZHVsZSBhbmQgYnVpbGRpbmcgZXh0ZW5zaW9uCiAgKiBtb2R1bGVzLgogICovCkBAIC03NjYsOCArNzY0LDEwIEBACiAgICAgUHlPYmplY3QgKm5hbWU7CiB9IFB5RGF0ZVRpbWVfVGltZVpvbmU7CiAKLS8qIFRoZSBpbnRlcm5lZCBVVEMgdGltZXpvbmUgaW5zdGFuY2UgKi8gCisvKiBUaGUgaW50ZXJuZWQgVVRDIHRpbWV6b25lIGluc3RhbmNlICovCiBzdGF0aWMgUHlPYmplY3QgKlB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDOworLyogVGhlIGludGVybmVkIEVwb2NoIGRhdGV0aW1lIGluc3RhbmNlICovCitzdGF0aWMgUHlPYmplY3QgKlB5RGF0ZVRpbWVfRXBvY2g7CiAKIC8qIENyZWF0ZSBuZXcgdGltZXpvbmUgaW5zdGFuY2UgY2hlY2tpbmcgb2Zmc2V0IHJhbmdlLiAgVGhpcwogICAgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIG5hbWUgYXJndW1lbnQuICBDYWxsZXIgbXVzdCBhc3N1cmUKQEAgLTgwOSwxNCArODA5LDE2IEBACiAgICAgfQogICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCB8fCBHRVRfVERfU0VDT05EUyhvZmZzZXQpICUgNjAgIT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpOworICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcywiCisgICAgICAgICAgICAgICAgICAgICAiIG5vdCAlUi4iLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKChHRVRfVERfREFZUyhvZmZzZXQpID09IC0xICYmIEdFVF9URF9TRUNPTkRTKG9mZnNldCkgPT0gMCkgfHwKICAgICAgICAgR0VUX1REX0RBWVMob2Zmc2V0KSA8IC0xIHx8IEdFVF9URF9EQVlTKG9mZnNldCkgPj0gMSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgogICAgICAgICAgICAgICAgICAgICAgIiBzdHJpY3RseSBiZXR3ZWVuIC10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCIKLSAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KSwiCisgICAgICAgICAgICAgICAgICAgICAiIG5vdCAlUi4iLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTk0Niw2ICs5NDgsNyBAQAogY2FsbF90em5hbWUoUHlPYmplY3QgKnR6aW5mbywgUHlPYmplY3QgKnR6aW5mb2FyZykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHR6bmFtZSk7CiAKICAgICBhc3NlcnQodHppbmZvICE9IE5VTEwpOwogICAgIGFzc2VydChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA+PSAwKTsKQEAgLTk1NCw3ICs5NTcsNyBAQAogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgInR6bmFtZSIsICJPIiwgdHppbmZvYXJnKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfdHpuYW1lLCAiTyIsIHR6aW5mb2FyZyk7CiAKICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgcmVzdWx0ID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC05ODUsOSArOTg4LDggQEAKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXByOwogICAgIC8qIEdldCByaWQgb2YgdGhlIHRyYWlsaW5nICcpJy4gKi8KLSAgICBhc3NlcnQoUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpLTFdID09ICcpJyk7Ci0gICAgdGVtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpIC0gMSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEX0NIQVIocmVwciwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwciktMSkgPT0gJyknKTsKKyAgICB0ZW1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXByLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKSAtIDEpOwogICAgIFB5X0RFQ1JFRihyZXByKTsKICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNzksNiArMTA4MSw4IEBACiAgICAgUHlPYmplY3QgKnRlbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IGdldF90emluZm9fbWVtYmVyKG9iamVjdCk7CiAgICAgUHlPYmplY3QgKlpyZXBsYWNlbWVudCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKKwogICAgIGlmIChacmVwbGFjZW1lbnQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lIHx8IHR6aW5mbyA9PSBOVUxMKQpAQCAtMTA5OSw3ICsxMTAzLDcgQEAKICAgICAgKiBzdHJmdGltZSBkb2Vzbid0IHRyZWF0IHRoZW0gYXMgZm9ybWF0IGNvZGVzLgogICAgICAqLwogICAgIFB5X0RFQ1JFRihacmVwbGFjZW1lbnQpOwotICAgIFpyZXBsYWNlbWVudCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGVtcCwgInJlcGxhY2UiLCAic3MiLCAiJSIsICIlJSIpOworICAgIFpyZXBsYWNlbWVudCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGVtcCwgJlB5SWRfcmVwbGFjZSwgInNzIiwgIiUiLCAiJSUiKTsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgaWYgKFpyZXBsYWNlbWVudCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNjYsMzEgKzExNzAsNiBAQAogICAgIGlmICghcGluKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEdpdmUgdXAgaWYgdGhlIHllYXIgaXMgYmVmb3JlIDEwMDAuCi0gICAgICogUHl0aG9uIHN0cmZ0aW1lKCkgcGxheXMgZ2FtZXMgd2l0aCB0aGUgeWVhciwgYW5kIGRpZmZlcmVudAotICAgICAqIGdhbWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGVudmFyIFBZVEhPTjJLIGlzIHNldC4gIFRoaXMgbWFrZXMKLSAgICAgKiB5ZWFycyBiZWZvcmUgMTAwMCBhIG5pZ2h0bWFyZSwgZXZlbiBpZiB0aGUgcGxhdGZvcm0gc3RyZnRpbWUKLSAgICAgKiBzdXBwb3J0cyB0aGVtIChhbmQgbm90IGFsbCBkbykuCi0gICAgICogV2UgY291bGQgZ2V0IGEgbG90IGZhcnRoZXIgaGVyZSBieSBhdm9pZGluZyBQeXRob24ncyBzdHJmdGltZQotICAgICAqIHdyYXBwZXIgYW5kIGNhbGxpbmcgdGhlIEMgc3RyZnRpbWUoKSBkaXJlY3RseSwgYnV0IHRoYXQgaXNuJ3QKLSAgICAgKiBhbiBvcHRpb24gaW4gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1vZHVsZS4KLSAgICAgKi8KLSAgICB7Ci0gICAgICAgIGxvbmcgeWVhcjsKLSAgICAgICAgUHlPYmplY3QgKnB5eWVhciA9IFB5U2VxdWVuY2VfR2V0SXRlbSh0aW1ldHVwbGUsIDApOwotICAgICAgICBpZiAocHl5ZWFyID09IE5VTEwpIHJldHVybiBOVUxMOwotICAgICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHB5eWVhcikpOwotICAgICAgICB5ZWFyID0gUHlMb25nX0FzTG9uZyhweXllYXIpOwotICAgICAgICBQeV9ERUNSRUYocHl5ZWFyKTsKLSAgICAgICAgaWYgKHllYXIgPCAxMDAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInllYXI9JWxkIGlzIGJlZm9yZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIjEwMDA7IHRoZSBkYXRldGltZSBzdHJmdGltZSgpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyByZXF1aXJlIHllYXIgPj0gMTAwMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeWVhcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8qIFNjYW4gdGhlIGlucHV0IGZvcm1hdCwgbG9va2luZyBmb3IgJXovJVovJWYgZXNjYXBlcywgYnVpbGRpbmcKICAgICAgKiBhIG5ldyBmb3JtYXQuICBTaW5jZSBjb21wdXRpbmcgdGhlIHJlcGxhY2VtZW50cyBmb3IgdGhvc2UgY29kZXMKICAgICAgKiBpcyBleHBlbnNpdmUsIGRvbid0IHVubGVzcyB0aGV5J3JlIGFjdHVhbGx5IHVzZWQuCkBAIC0xMjg2LDE0ICsxMjY1LDEzIEBACiAgICAgICAgIGFzc2VydChwdG9hcHBlbmQgIT0gTlVMTCk7CiAgICAgICAgIGFzc2VydChudG9hcHBlbmQgPiAwKTsKICAgICAgICAgd2hpbGUgKHVzZWRuZXcgKyBudG9hcHBlbmQgPiB0b3RhbG5ldykgewotICAgICAgICAgICAgc2l6ZV90IGJpZ2dlciA9IHRvdGFsbmV3IDw8IDE7Ci0gICAgICAgICAgICBpZiAoKGJpZ2dlciA+PiAxKSAhPSB0b3RhbG5ldykgeyAvKiBvdmVyZmxvdyAqLworICAgICAgICAgICAgaWYgKHRvdGFsbmV3ID4gKFBZX1NTSVpFX1RfTUFYID4+IDEpKSB7IC8qIG92ZXJmbG93ICovCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXdmbXQsIGJpZ2dlcikgPCAwKQorICAgICAgICAgICAgdG90YWxuZXcgPDw9IDE7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXdmbXQsIHRvdGFsbmV3KSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBEb25lOwotICAgICAgICAgICAgdG90YWxuZXcgPSBiaWdnZXI7CiAgICAgICAgICAgICBwbmV3ID0gUHlCeXRlc19Bc1N0cmluZyhuZXdmbXQpICsgdXNlZG5ldzsKICAgICAgICAgfQogICAgICAgICBtZW1jcHkocG5ldywgcHRvYXBwZW5kLCBudG9hcHBlbmQpOwpAQCAtMTMwNywxMiArMTI4NSwxNSBAQAogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZvcm1hdDsKICAgICAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CisKICAgICAgICAgaWYgKHRpbWUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobmV3Zm10KSk7CiAgICAgICAgIGlmIChmb3JtYXQgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0aW1lLCAic3RyZnRpbWUiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHRpbWV0dXBsZSwgTlVMTCk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzdHJmdGltZSk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfc3RyZnRpbWUsICJPTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdGltZXR1cGxlLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmb3JtYXQpOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKQEAgLTEzMzgsNyArMTMxOSw5IEBACiAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CiAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInRpbWUiLCAiKCkiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCAiKCkiKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM1NSwxMyArMTMzOCwxNSBAQAogCiAgICAgdGltZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInRpbWUiKTsKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInN0cnVjdF90aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOworICAgICAgICBfUHlfSURFTlRJRklFUihzdHJ1Y3RfdGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF9zdHJ1Y3RfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogICAgICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDYxLDcgKzE0NDYsNyBAQAogICAgICAgICBnb3RvIERvbmU7CiAgICAgUHlfREVDUkVGKHgxKTsKICAgICBQeV9ERUNSRUYoeDIpOwotICAgIHgxID0geDIgPSBOVUxMOworICAgIC8qIHgxID0gKi8geDIgPSBOVUxMOwogCiAgICAgLyogeDMgaGFzIGRheXMrc2Vjb25kcyBpbiBzZWNvbmRzICovCiAgICAgeDEgPSBQeU51bWJlcl9NdWx0aXBseSh4MywgdXNfcGVyX3NlY29uZCk7ICAgICAgICAgIC8qIHVzICovCkBAIC0xNTk0LDExICsxNTc5LDEyIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnB5dXNfaW4gPSBOVUxMLCAqdGVtcCwgKnB5dXNfb3V0OwogICAgIFB5T2JqZWN0ICpyYXRpbyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoYXNfaW50ZWdlcl9yYXRpbyk7CiAKICAgICBweXVzX2luID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKGRlbHRhKTsKICAgICBpZiAocHl1c19pbiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByYXRpbyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmxvYXRvYmosICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZsb2F0b2JqLCAmUHlJZF9hc19pbnRlZ2VyX3JhdGlvLCBOVUxMKTsKICAgICBpZiAocmF0aW8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB0ZW1wID0gUHlOdW1iZXJfTXVsdGlwbHkocHl1c19pbiwgUHlUdXBsZV9HRVRfSVRFTShyYXRpbywgMCkpOwpAQCAtMTY5MiwxMSArMTY3OCwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpweXVzX2luID0gTlVMTCwgKnRlbXAsICpweXVzX291dDsKICAgICBQeU9iamVjdCAqcmF0aW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGFzX2ludGVnZXJfcmF0aW8pOwogCiAgICAgcHl1c19pbiA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcyhkZWx0YSk7CiAgICAgaWYgKHB5dXNfaW4gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmF0aW8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2FzX2ludGVnZXJfcmF0aW8sIE5VTEwpOwogICAgIGlmIChyYXRpbyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHRlbXAgPSBQeU51bWJlcl9NdWx0aXBseShweXVzX2luLCBQeVR1cGxlX0dFVF9JVEVNKHJhdGlvLCAxKSk7CkBAIC0xODM3LDggKzE4MjQsNyBAQAogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIH0KIApAQCAtMTkzNiwxMCArMTkyMiw4IEBACiAgICAgUHlPYmplY3QgKnB5dXNfcmVtYWluZGVyOwogICAgIFB5T2JqZWN0ICpyZW1haW5kZXI7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMTk3NCwxMCArMTk1OCw4IEBACiAgICAgUHlPYmplY3QgKmRlbHRhOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMjQ2MCwyNiArMjQ0MiwyOSBAQAogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBsb2NhbHRpbWUodCkuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZV9sb2NhbF9mcm9tX3RpbWVfdChQeU9iamVjdCAqY2xzLCBkb3VibGUgdHMpCitkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgc3RydWN0IHRtICp0bTsKICAgICB0aW1lX3QgdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodHMpOwotICAgIGlmICh0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtKQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIGxvY2FsdGltZSgpIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAodG0gPT0gTlVMTCkgeworICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBjdXJyZW50IHRpbWUuCkBAIC0yNDkyLDYgKzI0NzcsNyBAQAogewogICAgIFB5T2JqZWN0ICp0aW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoZnJvbXRpbWVzdGFtcCk7CiAKICAgICB0aW1lID0gdGltZV90aW1lKCk7CiAgICAgaWYgKHRpbWUgPT0gTlVMTCkKQEAgLTI1MDMsNyArMjQ4OSw3IEBACiAgICAgICogdGltZS50aW1lKCkgZGVsaXZlcnM7IGlmIHNvbWVvbmUgd2VyZSBnb256byBhYm91dCBvcHRpbWl6YXRpb24sCiAgICAgICogZGF0ZS50b2RheSgpIGNvdWxkIGdldCBhd2F5IHdpdGggcGxhaW4gQyB0aW1lKCkuCiAgICAgICovCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjbHMsICJmcm9tdGltZXN0YW1wIiwgIk8iLCB0aW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNscywgJlB5SWRfZnJvbXRpbWVzdGFtcCwgIk8iLCB0aW1lKTsKICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1MTIsMTEgKzI0OTgsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6ZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRlX2xvY2FsX2Zyb21fdGltZV90KGNscywgdGltZXN0YW1wKTsKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGVfbG9jYWxfZnJvbV9vYmplY3QoY2xzLCB0aW1lc3RhbXApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI1NzEsMTAgKzI1NTcsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfYWRkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKFB5RGF0ZV9DaGVjayhsZWZ0KSkgewogICAgICAgICAvKiBkYXRlICsgPz8/ICovCiAgICAgICAgIGlmIChQeURlbHRhX0NoZWNrKHJpZ2h0KSkKQEAgLTI1OTMsMTcgKzI1NzgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3VidHJhY3QoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChQeURhdGVUaW1lX0NoZWNrKGxlZnQpIHx8IFB5RGF0ZVRpbWVfQ2hlY2socmlnaHQpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlEYXRlX0NoZWNrKGxlZnQpKSB7CiAgICAgICAgIGlmIChQeURhdGVfQ2hlY2socmlnaHQpKSB7CiAgICAgICAgICAgICAvKiBkYXRlIC0gZGF0ZSAqLwpAQCAtMjYyMiw4ICsyNjA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiAKQEAgLTI2NDgsNyArMjYzMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogCkBAIC0yNjY3LDEzICsyNjUxLDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUih0aW1ldHVwbGUpOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmb3JtYXQiLCBOVUxMfTsKIAogICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIlU6c3RyZnRpbWUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHVwbGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJ0aW1ldHVwbGUiLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjY4NiwxNSArMjY3MSwxNiBAQAogZGF0ZV9mb3JtYXQoUHlEYXRlVGltZV9EYXRlICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIF9QeV9JREVOVElGSUVSKHN0cmZ0aW1lKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogaWYgdGhlIGZvcm1hdCBpcyB6ZXJvIGxlbmd0aCwgcmV0dXJuIHN0cihzZWxmKSAqLwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShmb3JtYXQpID09IDApCisgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgoZm9ybWF0KSA9PSAwKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKChQeU9iamVjdCAqKXNlbGYpOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInN0cmZ0aW1lIiwgIk8iLCBmb3JtYXQpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3N0cmZ0aW1lLCAiTyIsIGZvcm1hdCk7CiB9CiAKIC8qIElTTyBtZXRob2RzLiAqLwpAQCAtMjc0MCwxMCArMjcyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOwogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNzc1LDI3ICsyNzU5LDEwIEBACiAgICAgcmV0dXJuIGNsb25lOwogfQogCi0vKgotICAgIEJvcnJvd2VkIGZyb20gc3RyaW5nb2JqZWN0LmMsIG9yaWdpbmFsbHkgaXQgd2FzIHN0cmluZ19oYXNoKCkKLSovCiBzdGF0aWMgUHlfaGFzaF90CiBnZW5lcmljX2hhc2godW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbikKIHsKLSAgICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpwOwotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB4OwotCi0gICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKLSAgICB4ID0gX1B5X0hhc2hTZWNyZXQucHJlZml4OwotICAgIHggXj0gKnAgPDwgNzsKLSAgICB3aGlsZSAoLS1sZW4gPj0gMCkKLSAgICAgICAgeCA9ICgxMDAwMDAzKngpIF4gKnArKzsKLSAgICB4IF49IGxlbjsKLSAgICB4IF49IF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKLSAgICBpZiAoeCA9PSAtMSkKLSAgICAgICAgeCA9IC0yOwotCi0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIF9QeV9IYXNoQnl0ZXMoZGF0YSwgbGVuKTsKIH0KIAogCkBAIC0zMTAwLDEyICszMDY3LDE0IEBACiB7CiAgICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZSwgKnRtcDsKICAgICBQeU9iamVjdCAqZ2V0aW5pdGFyZ3MsICpnZXRzdGF0ZTsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CiAKICAgICB0bXAgPSBQeVR1cGxlX05ldygwKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZ2V0aW5pdGFyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2dldGluaXRhcmdzX18iKTsKKyAgICBnZXRpbml0YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRpbml0YXJnc19fKTsKICAgICBpZiAoZ2V0aW5pdGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRpbml0YXJncywgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldGluaXRhcmdzKTsKQEAgLTMxMjAsNyArMzA4OSw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKICAgICB9CiAKLSAgICBnZXRzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZ2V0c3RhdGVfXyIpOworICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKQEAgLTMyNDMsMTAgKzMyMTIsOCBAQAogdGltZXpvbmVfcmljaGNvbXBhcmUoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmUgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgaWYgKFB5X1RZUEUob3RoZXIpICE9ICZQeURhdGVUaW1lX1RpbWVab25lVHlwZSkgewogCWlmIChvcCA9PSBQeV9FUSkKIAkgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMzI5Nyw3ICszMjY0LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lem9uZV9zdHIoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZikKIHsKLSAgICBjaGFyIGJ1ZlsxMF07CiAgICAgaW50IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzOwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgY2hhciBzaWduOwpAQCAtMzMyMywxMSArMzI4OSw5IEBACiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgbWludXRlcyA9IGRpdm1vZChzZWNvbmRzLCA2MCwgJnNlY29uZHMpOwogICAgIGhvdXJzID0gZGl2bW9kKG1pbnV0ZXMsIDYwLCAmbWludXRlcyk7Ci0gICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7CiAgICAgLyogWFhYIGlnbm9yZSBzdWItbWludXRlIGRhdGEsIGN1cmVudGx5IG5vdCBhbGxvd2VkLiAqLwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlVUQyVjJTAyZDolMDJkIiwgc2lnbiwgaG91cnMsIG1pbnV0ZXMpOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJVVEMlYyUwMmQ6JTAyZCIsIHNpZ24sIGhvdXJzLCBtaW51dGVzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM2MjQsNyArMzU4OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zdHIoUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM3MDEsMTAgKzM2NjcsOCBAQAogICAgIFB5T2JqZWN0ICpvZmZzZXQxLCAqb2Zmc2V0MjsKICAgICBpbnQgZGlmZjsKIAotICAgIGlmICghIFB5VGltZV9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoISBQeVRpbWVfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICBpZiAoR0VUX1RJTUVfVFpJTkZPKHNlbGYpID09IEdFVF9USU1FX1RaSU5GTyhvdGhlcikpIHsKICAgICAgICAgZGlmZiA9IG1lbWNtcCgoKFB5RGF0ZVRpbWVfVGltZSAqKXNlbGYpLT5kYXRhLApAQCAtMzc1MCw2ICszNzE0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlDUk9TRUNPTkQob3RoZXIpOwogICAgICAgICByZXN1bHQgPSBkaWZmX3RvX2Jvb2woZGlmZiwgb3ApOwogICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9FUSkgeworICAgICAgICByZXN1bHQgPSBQeV9GYWxzZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X05FKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X1RydWU7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBjb21wYXJlIG9mZnNldC1uYWl2ZSBhbmQgIgpAQCAtNDEwNSwzMyArNDA3NywzMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKICAgICBzdHJ1Y3QgdG0gKnRtOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgdG0gPSBmKCZ0aW1ldCk7Ci0gICAgaWYgKHRtKSB7Ci0gICAgICAgIC8qIFRoZSBwbGF0Zm9ybSBsb2NhbHRpbWUvZ210aW1lIG1heSBpbnNlcnQgbGVhcCBzZWNvbmRzLAotICAgICAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAotICAgICAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKLSAgICAgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAotICAgICAgICAgKiBtYWRlIG5vIHNlbnNlIHRvIHRoZSB1c2VyLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKLSAgICAgICAgICAgIHRtLT50bV9zZWMgPSA1OTsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaWlpaWlPIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1faG91ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgIGlmICh0bSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0gbG9jYWx0aW1lKCkvZ210aW1lKCkgZnVuY3Rpb24iKTsKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCisgICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKKyAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKKyAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0CisgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KKyAgICAgKi8KKyAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQorICAgICAgICB0bS0+dG1fc2VjID0gNTk7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDE0MiwzMiArNDExNCwxNSBAQAogICogdG8gZ2V0IHRoYXQgbXVjaCBwcmVjaXNpb24gKGUuZy4sIEMgdGltZSgpIGlzbid0IGdvb2QgZW5vdWdoKS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgZG91YmxlIHRpbWVzdGFtcCwKK2RhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgUHlPYmplY3QgKnRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgdGltZV90IHRpbWV0OwotICAgIGRvdWJsZSBmcmFjdGlvbjsKLSAgICBpbnQgdXM7CisgICAgbG9uZyB1czsKIAotICAgIHRpbWV0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRpbWVzdGFtcCk7Ci0gICAgaWYgKHRpbWV0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLCAmdGltZXQsICZ1cykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZyYWN0aW9uID0gdGltZXN0YW1wIC0gKGRvdWJsZSl0aW1ldDsKLSAgICB1cyA9IChpbnQpcm91bmRfdG9fbG9uZyhmcmFjdGlvbiAqIDFlNik7Ci0gICAgaWYgKHVzIDwgMCkgewotICAgICAgICAvKiBUcnVuY2F0aW9uIHRvd2FyZHMgemVybyBpcyBub3Qgd2hhdCB3ZSB3YW50ZWQKLSAgICAgICAgICAgZm9yIG5lZ2F0aXZlIG51bWJlcnMgKFB5dGhvbidzIG1vZCBzZW1hbnRpY3MpICovCi0gICAgICAgIHRpbWV0IC09IDE7Ci0gICAgICAgIHVzICs9IDEwMDAwMDA7Ci0gICAgfQotICAgIC8qIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCi0gICAgICogZnVsbCBzZWNvbmQsIHJvdW5kIHVwLiBPdGhlcndpc2UsIFZhbHVlRXJyb3JzIGFyZSByYWlzZWQKLSAgICAgKiBmb3Igc29tZSBmbG9hdHMuICovCi0gICAgaWYgKHVzID09IDEwMDAwMDApIHsKLSAgICAgICAgdGltZXQgKz0gMTsKLSAgICAgICAgdXMgPSAwOwotICAgIH0KLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgdXMsIHR6aW5mbyk7CisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIChpbnQpdXMsIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQyMDUsNyArNDE2MCw5IEBACiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0emluZm8gIT0gUHlfTm9uZSkgewogICAgICAgICAvKiBDb252ZXJ0IFVUQyB0byB0emluZm8ncyB6b25lLiAqLwogICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGY7Ci0gICAgICAgIHNlbGYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgImZyb211dGMiLCAiTyIsIHNlbGYpOworICAgICAgICBfUHlfSURFTlRJRklFUihmcm9tdXRjKTsKKworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7CiAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CkBAIC00MjI1LDExICs0MTgyLDExIEBACiBkYXRldGltZV9mcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgUHlPYmplY3QgKnNlbGY7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0aW1lc3RhbXAiLCAidHoiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImR8Tzpmcm9tdGltZXN0YW1wIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPfE86ZnJvbXRpbWVzdGFtcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLCAmdGltZXN0YW1wLCAmdHppbmZvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKQEAgLTQyNDIsNyArNDE5OSw5IEBACiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0emluZm8gIT0gUHlfTm9uZSkgewogICAgICAgICAvKiBDb252ZXJ0IFVUQyB0byB0emluZm8ncyB6b25lLiAqLwogICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGY7Ci0gICAgICAgIHNlbGYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgImZyb211dGMiLCAiTyIsIHNlbGYpOworICAgICAgICBfUHlfSURFTlRJRklFUihmcm9tdXRjKTsKKworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7CiAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CkBAIC00MjUyLDEwICs0MjExLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdXRjZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQogICAgICAgICByZXN1bHQgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsIGdtdGltZSwgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDI2Niw5ICs0MjI1LDEwIEBACiBkYXRldGltZV9zdHJwdGltZShQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3RyaW5nLCAqZm9ybWF0OworICAgIFB5T2JqZWN0ICpzdHJpbmcsICpmb3JtYXQ7CisgICAgX1B5X0lERU5USUZJRVIoX3N0cnB0aW1lX2RhdGV0aW1lKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6c3RycHRpbWUiLCAmc3RyaW5nLCAmZm9ybWF0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnN0cnB0aW1lIiwgJnN0cmluZywgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7CkBAIC00Mjc2LDggKzQyMzYsOCBAQAogICAgICAgICBpZiAobW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QobW9kdWxlLCAiX3N0cnB0aW1lX2RhdGV0aW1lIiwgIk91dSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLCBzdHJpbmcsIGZvcm1hdCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobW9kdWxlLCAmUHlJZF9fc3RycHRpbWVfZGF0ZXRpbWUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLCBzdHJpbmcsIGZvcm1hdCk7CiB9CiAKIC8qIFJldHVybiBuZXcgZGF0ZXRpbWUgZnJvbSBkYXRlL2RhdGV0aW1lIGFuZCB0aW1lIGFyZ3VtZW50cy4gKi8KQEAgLTQzOTMsOCArNDM1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopIGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTIzLDcgKzQ0ODIsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3N0cihQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKHMpIiwgIiAiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKHMpIiwgIiAiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1OTYsOCArNDU1Nyw3IEBACiAgICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgICAgICAgICByZXR1cm4gY21wZXJyb3Ioc2VsZiwgb3RoZXIpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChHRVRfRFRfVFpJTkZPKHNlbGYpID09IEdFVF9EVF9UWklORk8ob3RoZXIpKSB7CkBAIC00NjM5LDYgKzQ1OTksMTQgQEAKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfRmFsc2U7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9ORSkgeworICAgICAgICByZXN1bHQgPSBQeV9UcnVlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgY29tcGFyZSBvZmZzZXQtbmFpdmUgYW5kICIKQEAgLTQ3MjUsMTYgKzQ2OTMsODMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xvY2FsX3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnV0Y190aW1lKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIHN0cnVjdCB0bSAqdGltZXA7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7CisgICAgUHlPYmplY3QgKnNlY29uZHM7CisgICAgUHlPYmplY3QgKm5hbWVvID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp6b25lID0gTlVMTDsKKworICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopdXRjX3RpbWUsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOworICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7CisgICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICB0aW1lc3RhbXAgPSBQeUxvbmdfQXNMb25nKHNlY29uZHMpOworICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKKyAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRpbWVwID0gbG9jYWx0aW1lKCZ0aW1lc3RhbXApOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICB6b25lID0gdGltZXAtPnRtX3pvbmU7CisgICAgZGVsdGEgPSBuZXdfZGVsdGEoMCwgdGltZXAtPnRtX2dtdG9mZiwgMCwgMSk7CisjZWxzZSAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgeworICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZTsKKyAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZSh0aW1lcC0+dG1feWVhciArIDE5MDAsIHRpbWVwLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9tZGF5LCB0aW1lcC0+dG1faG91ciwgdGltZXAtPnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fc2VjLCBEQVRFX0dFVF9NSUNST1NFQ09ORCh1dGNfdGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWUtPnR6aW5mbyk7CisgICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIChQeU9iamVjdCopdXRjX3RpbWUpOworICAgICAgICAvKiBYWFg6IGJlZm9yZSByZWx5aW5nIG9uIHR6bmFtZSwgd2Ugc2hvdWxkIGNvbXBhcmUgZGVsdGEKKyAgICAgICAgICAgdG8gdGhlIG9mZnNldCBpbXBsaWVkIGJ5IHRpbWV6b25lL2FsdHpvbmUgKi8KKyAgICAgICAgaWYgKGRheWxpZ2h0ICYmIHRpbWVwLT50bV9pc2RzdCA+PSAwKQorICAgICAgICAgICAgem9uZSA9IHR6bmFtZVt0aW1lcC0+dG1faXNkc3QgJSAyXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgem9uZSA9IHR6bmFtZVswXTsKKyAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgIH0KKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgaWYgKHpvbmUgIT0gTlVMTCkgeworICAgICAgICBuYW1lbyA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICBpZiAobmFtZW8gPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJlc3VsdCA9IG5ld190aW1lem9uZShkZWx0YSwgbmFtZW8pOworICAgIFB5X0RFQ1JFRihuYW1lbyk7CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKgogZGF0ZXRpbWVfYXN0aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgUHlPYmplY3QgKnRlbXA7Ci0gICAgUHlPYmplY3QgKnR6aW5mbzsKKyAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKKyAgICBfUHlfSURFTlRJRklFUihmcm9tdXRjKTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hOmFzdGltZXpvbmUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGF0ZVRpbWVfVFpJbmZvVHlwZSwgJnR6aW5mbykpCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE86YXN0aW1lem9uZSIsIGtleXdvcmRzLAorCQkJCSAgICAgICZ0emluZm8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKQEAgLTQ3NDMsNyArNDc3OCw3IEBACiAgICAgLyogQ29udmVyc2lvbiB0byBzZWxmJ3Mgb3duIHRpbWUgem9uZSBpcyBhIE5PUC4gKi8KICAgICBpZiAoc2VsZi0+dHppbmZvID09IHR6aW5mbykgewogICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAKICAgICAvKiBDb252ZXJ0IHNlbGYgdG8gVVRDLiAqLwpAQCAtNDc1OSwyMCArNDc5NCwyOSBAQAogICAgIH0KIAogICAgIC8qIHJlc3VsdCA9IHNlbGYgLSBvZmZzZXQgKi8KLSAgICByZXN1bHQgPSBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCi0gICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKKyAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKWFkZF9kYXRldGltZV90aW1lZGVsdGEoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0LCAtMSk7CiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEF0dGFjaCBuZXcgdHppbmZvIGFuZCBsZXQgZnJvbXV0YygpIGRvIHRoZSByZXN0LiAqLwotICAgIHRlbXAgPSAoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQpLT50emluZm87Ci0gICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0KS0+dHppbmZvID0gdHppbmZvOwotICAgIFB5X0lOQ1JFRih0emluZm8pOworICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKKyAgICBpZiAodHppbmZvID09IFB5X05vbmUpIHsKKyAgICAgICAgdHppbmZvID0gbG9jYWxfdGltZXpvbmUocmVzdWx0KTsKKyAgICAgICAgaWYgKHR6aW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgIFB5X0lOQ1JFRih0emluZm8pOworICAgIHJlc3VsdC0+dHppbmZvID0gdHppbmZvOwogICAgIFB5X0RFQ1JFRih0ZW1wKTsKIAotICAgIHRlbXAgPSByZXN1bHQ7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJmcm9tdXRjIiwgIk8iLCB0ZW1wKTsKKyAgICB0ZW1wID0gKFB5T2JqZWN0ICopcmVzdWx0OworICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopCisgICAgICAgIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTyIsIHRlbXApOwogICAgIFB5X0RFQ1JFRih0ZW1wKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00ODA0LDYgKzQ4NDgsNDQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX3RpbWVzdGFtcChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoSEFTVFpJTkZPKHNlbGYpICYmIHNlbGYtPnR6aW5mbyAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdCgoUHlPYmplY3QgKilzZWxmLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICAgICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmVzdWx0ID0gZGVsdGFfdG90YWxfc2Vjb25kcyhkZWx0YSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdHJ1Y3QgdG0gdGltZTsKKyAgICAgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICAgICAgbWVtc2V0KCh2b2lkICopICZ0aW1lLCAnXDAnLCBzaXplb2Yoc3RydWN0IHRtKSk7CisgICAgICAgIHRpbWUudG1feWVhciA9IEdFVF9ZRUFSKHNlbGYpIC0gMTkwMDsKKyAgICAgICAgdGltZS50bV9tb24gPSBHRVRfTU9OVEgoc2VsZikgLSAxOworICAgICAgICB0aW1lLnRtX21kYXkgPSBHRVRfREFZKHNlbGYpOworICAgICAgICB0aW1lLnRtX2hvdXIgPSBEQVRFX0dFVF9IT1VSKHNlbGYpOworICAgICAgICB0aW1lLnRtX21pbiA9IERBVEVfR0VUX01JTlVURShzZWxmKTsKKyAgICAgICAgdGltZS50bV9zZWMgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7CisgICAgICAgIHRpbWUudG1fd2RheSA9IC0xOworICAgICAgICB0aW1lLnRtX2lzZHN0ID0gLTE7CisgICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZSgmdGltZSk7CisgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLCBidXQgdG1fd2RheQorICAgICAgICAgKiBjYW5ub3QgcmVtYWluIHNldCB0byAtMSBpZiBta3RpbWUgc3VjY2VlZGVkLiAqLworICAgICAgICBpZiAodGltZXN0YW1wID09ICh0aW1lX3QpKC0xKSAmJiB0aW1lLnRtX3dkYXkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUodGltZXN0YW1wICsgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZikgLyAxZTYpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfZ2V0ZGF0ZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewogICAgIHJldHVybiBuZXdfZGF0ZShHRVRfWUVBUihzZWxmKSwKQEAgLTQ5NTAsNiArNTAzMiw5IEBACiAgICAgeyJ0aW1ldHVwbGUiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV90aW1ldHVwbGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIlJldHVybiB0aW1lIHR1cGxlLCBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iKX0sCiAKKyAgICB7InRpbWVzdGFtcCIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3RpbWVzdGFtcCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdC4iKX0sCisKICAgICB7InV0Y3RpbWV0dXBsZSIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3V0Y3RpbWV0dXBsZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIFVUQyB0aW1lIHR1cGxlLCBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iKX0sCiAKQEAgLTUyMDcsNiArNTI5MiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CiAKKyAgICAvKiBFcG9jaCAqLworICAgIFB5RGF0ZVRpbWVfRXBvY2ggPSBuZXdfZGF0ZXRpbWUoMTk3MCwgMSwgMSwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDKTsKKyAgICBpZiAoUHlEYXRlVGltZV9FcG9jaCA9PSBOVUxMKQorICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTUlOWUVBUiIsIE1JTllFQVIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNQVhZRUFSIiwgTUFYWUVBUik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYm1tb2R1bGUuYyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCmluZGV4IDgyN2FjY2UuLjMyN2I4NzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RibW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RibW1vZHVsZS5jCkBAIC0yMTIsNiArMjEyLDcgQEAKIHsKICAgICBkYm1vYmplY3QgKmRwID0gKGRibW9iamVjdCAqKXNlbGY7CiAgICAgZGF0dW0ga2V5LCB2YWw7CisgICAgUHlfc3NpemVfdCBzaXplOwogCiAgICAgaWYgKChkcCktPmRpX2RibSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhEYm1FcnJvciwKQEAgLTIxOSw4ICsyMjAsOSBAQAogICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgYXJnID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKGFyZywgTlVMTCk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKKyAgICAgICAga2V5LmRwdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZzaXplKTsKKyAgICAgICAga2V5LmRzaXplID0gc2l6ZTsKKyAgICAgICAgaWYgKGtleS5kcHRyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICghUHlCeXRlc19DaGVjayhhcmcpKSB7CkBAIC0yMjksOCArMjMxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGtleS5kcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKTsKLSAgICBrZXkuZHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGFyZyk7CisgICAgZWxzZSB7CisgICAgICAgIGtleS5kcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKTsKKyAgICAgICAga2V5LmRzaXplID0gUHlCeXRlc19HRVRfU0laRShhcmcpOworICAgIH0KICAgICB2YWwgPSBkYm1fZmV0Y2goZHAtPmRpX2RibSwga2V5KTsKICAgICByZXR1cm4gdmFsLmRwdHIgIT0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvUkVBRE1FLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWFlMGY4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9SRUFETUUudHh0CkBAIC0wLDAgKzEsNDYgQEAKKworCitBYm91dAorPT09PT0KKworX2RlY2ltYWwuYyBpcyBhIHdyYXBwZXIgZm9yIHRoZSBsaWJtcGRlYyBsaWJyYXJ5LiBsaWJtcGRlYyBpcyBhIGZhc3QgQworbGlicmFyeSBmb3IgY29ycmVjdGx5LXJvdW5kZWQgYXJiaXRyYXJ5IHByZWNpc2lvbiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50Cithcml0aG1ldGljLiBJdCBpcyBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIE1pa2UgQ293bGlzaGF3L0lCTSdzCitHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLgorCisKK0J1aWxkIHByb2Nlc3MgZm9yIHRoZSBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgdXN1YWwsIHRoZSBidWlsZCBwcm9jZXNzIGZvciBfZGVjaW1hbC5zbyBpcyBkcml2ZW4gYnkgc2V0dXAucHkgaW4gdGhlIHRvcAorbGV2ZWwgZGlyZWN0b3J5LiBzZXR1cC5weSBhdXRvZGV0ZWN0cyB0aGUgZm9sbG93aW5nIGJ1aWxkIGNvbmZpZ3VyYXRpb25zOgorCisgICAxKSB4NjQgICAgICAgICAtIDY0LWJpdCBQeXRob24sIHg4Nl82NCBwcm9jZXNzb3IgKEFNRCwgSW50ZWwpCisKKyAgIDIpIHVpbnQxMjggICAgIC0gNjQtYml0IFB5dGhvbiwgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3QgKGdjYykKKworICAgMykgYW5zaTY0ICAgICAgLSA2NC1iaXQgUHl0aG9uLCBBTlNJIEMKKworICAgNCkgcHBybyAgICAgICAgLSAzMi1iaXQgUHl0aG9uLCB4ODYgQ1BVLCBQZW50aXVtUHJvIG9yIGxhdGVyCisKKyAgIDUpIGFuc2kzMiAgICAgIC0gMzItYml0IFB5dGhvbiwgQU5TSSBDCisKKyAgIDYpIGFuc2ktbGVnYWN5IC0gMzItYml0IFB5dGhvbiwgY29tcGlsZXIgd2l0aG91dCB1aW50NjRfdAorCisgICA3KSB1bml2ZXJzYWwgICAtIE1hYyBPUyBvbmx5IChtdWx0aS1hcmNoKQorCisKK0l0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlIGF1dG9kZXRlY3Rpb24gYnkgZXhwb3J0aW5nOgorCisgICBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkU9dmFsdWUsIHdoZXJlIHZhbHVlIGlzIG9uZSBvZiB0aGUgYWJvdmUgb3B0aW9ucy4KKworCitOT1RFCis9PT09CisKK2RlY2ltYWwuc28gaXMgbm90IGJ1aWx0IGZyb20gYSBzdGF0aWMgbGlibXBkZWMuYSBzaW5jZSBkb2luZyBzbyBsZWQgdG8KK2ZhaWx1cmVzIG9uIEFJWCAodXNlciByZXBvcnQpIGFuZCBXaW5kb3dzIChtaXhpbmcgc3RhdGljIGFuZCBkeW5hbWljIENSVHMKK2NhdXNlcyBsb2NhbGUgcHJvYmxlbXMgYW5kIG1vcmUpLgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOWZkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTAsMCArMSw1NzAyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSAibG9uZ2ludHJlcHIuaCIKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImNvbXBsZXhvYmplY3QuaCIKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZG9jc3RyaW5ncy5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorCisKKy8qCisgKiBUeXBlIHNpemVzIHdpdGggYXNzZXJ0aW9ucyBpbiBtcGRlY2ltYWwuaCBhbmQgcHlwb3J0Lmg6CisgKiAgICBzaXplb2Yoc2l6ZV90KSA9PSBzaXplb2YoUHlfc3NpemVfdCkKKyAqICAgIHNpemVvZihzaXplX3QpID09IHNpemVvZihtcGRfdWludF90KSA9PSBzaXplb2YobXBkX3NzaXplX3QpCisgKi8KKworI2lmZGVmIFRFU1RfQ09WRVJBR0UKKyAgI3VuZGVmIFB5X0xPQ0FMX0lOTElORQorICAjZGVmaW5lIFB5X0xPQ0FMX0lOTElORSBQeV9MT0NBTAorI2VuZGlmCisKKyNkZWZpbmUgTVBEX0Zsb2F0X29wZXJhdGlvbiBNUERfTm90X2ltcGxlbWVudGVkCisKKyNkZWZpbmUgQk9VTkRTX0NIRUNLKHgsIE1JTiwgTUFYKSB4ID0gKHggPCBNSU4gfHwgTUFYIDwgeCkgPyBNQVggOiB4CisKKworLyogX1B5X0RFQ19NSU5BTExPQyA+PSBNUERfTUlOQUxMT0MgKi8KKyNkZWZpbmUgX1B5X0RFQ19NSU5BTExPQyA0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgbXBkX3QgZGVjOworICAgIG1wZF91aW50X3QgZGF0YVtfUHlfREVDX01JTkFMTE9DXTsKK30gUHlEZWNPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgdWludDMyX3QgKmZsYWdzOworfSBQeURlY1NpZ25hbERpY3RPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgbXBkX2NvbnRleHRfdCBjdHg7CisgICAgUHlPYmplY3QgKnRyYXBzOworICAgIFB5T2JqZWN0ICpmbGFnczsKKyAgICBpbnQgY2FwaXRhbHM7CisjaWZuZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyNlbmRpZgorfSBQeURlY0NvbnRleHRPYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmxvY2FsOworICAgIFB5T2JqZWN0ICpnbG9iYWw7Cit9IFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3Q7CisKKworI3VuZGVmIE1QRAorI3VuZGVmIENUWAorc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY19UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCAqUHlEZWNTaWduYWxEaWN0X1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGU7CisjZGVmaW5lIFB5RGVjX0NoZWNrRXhhY3QodikgKFB5X1RZUEUodikgPT0gJlB5RGVjX1R5cGUpCisjZGVmaW5lIFB5RGVjX0NoZWNrKHYpIFB5T2JqZWN0X1R5cGVDaGVjayh2LCAmUHlEZWNfVHlwZSkKKyNkZWZpbmUgUHlEZWNTaWduYWxEaWN0X0NoZWNrKHYpIChQeV9UWVBFKHYpID09IFB5RGVjU2lnbmFsRGljdF9UeXBlKQorI2RlZmluZSBQeURlY0NvbnRleHRfQ2hlY2sodikgUHlPYmplY3RfVHlwZUNoZWNrKHYsICZQeURlY0NvbnRleHRfVHlwZSkKKyNkZWZpbmUgTVBEKHYpICgmKChQeURlY09iamVjdCAqKXYpLT5kZWMpCisjZGVmaW5lIFNkRmxhZ0FkZHIodikgKCgoUHlEZWNTaWduYWxEaWN0T2JqZWN0ICopdiktPmZsYWdzKQorI2RlZmluZSBTZEZsYWdzKHYpICgqKChQeURlY1NpZ25hbERpY3RPYmplY3QgKil2KS0+ZmxhZ3MpCisjZGVmaW5lIENUWCh2KSAoJigoUHlEZWNDb250ZXh0T2JqZWN0ICopdiktPmN0eCkKKyNkZWZpbmUgQ3R4Q2Fwcyh2KSAoKChQeURlY0NvbnRleHRPYmplY3QgKil2KS0+Y2FwaXRhbHMpCisKKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitpbmNyX3RydWUodm9pZCkKK3sKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgcmV0dXJuIFB5X1RydWU7Cit9CisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQoraW5jcl9mYWxzZSh2b2lkKQoreworICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgcmV0dXJuIFB5X0ZhbHNlOworfQorCisKKyNpZmRlZiBXSVRIT1VUX1RIUkVBRFMKKy8qIERlZmF1bHQgbW9kdWxlIGNvbnRleHQgKi8KK3N0YXRpYyBQeU9iamVjdCAqbW9kdWxlX2NvbnRleHQgPSBOVUxMOworI2Vsc2UKKy8qIEtleSBmb3IgdGhyZWFkIHN0YXRlIGRpY3Rpb25hcnkgKi8KK3N0YXRpYyBQeU9iamVjdCAqdGxzX2NvbnRleHRfa2V5ID0gTlVMTDsKKy8qIEludmFyaWFudDogTlVMTCBvciB0aGUgbW9zdCByZWNlbnRseSBhY2Nlc3NlZCB0aHJlYWQgbG9jYWwgY29udGV4dCAqLworc3RhdGljIFB5RGVjQ29udGV4dE9iamVjdCAqY2FjaGVkX2NvbnRleHQgPSBOVUxMOworI2VuZGlmCisKKy8qIFRlbXBsYXRlIGZvciBjcmVhdGluZyBuZXcgdGhyZWFkIGNvbnRleHRzLCBjYWxsaW5nIENvbnRleHQoKSB3aXRob3V0CisgKiBhcmd1bWVudHMgYW5kIGluaXRpYWxpemluZyB0aGUgbW9kdWxlX2NvbnRleHQgb24gZmlyc3QgYWNjZXNzLiAqLworc3RhdGljIFB5T2JqZWN0ICpkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUgPSBOVUxMOworLyogQmFzaWMgYW5kIGV4dGVuZGVkIGNvbnRleHQgdGVtcGxhdGVzICovCitzdGF0aWMgUHlPYmplY3QgKmJhc2ljX2NvbnRleHRfdGVtcGxhdGUgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICpleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlID0gTlVMTDsKKworCisvKiBFcnJvciBjb2RlcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHNpZ25hbHMgb3IgY29uZGl0aW9ucyAqLworI2RlZmluZSBERUNfSU5WQUxJRF9TSUdOQUxTIChNUERfTWF4X3N0YXR1cysxVSkKKyNkZWZpbmUgREVDX0VSUl9PQ0NVUlJFRCAoREVDX0lOVkFMSURfU0lHTkFMUzw8MSkKKyNkZWZpbmUgREVDX0VSUk9SUyAoREVDX0lOVkFMSURfU0lHTkFMU3xERUNfRVJSX09DQ1VSUkVEKQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqbmFtZTsgICAvKiBjb25kaXRpb24gb3Igc2lnbmFsIG5hbWUgKi8KKyAgICBjb25zdCBjaGFyICpmcW5hbWU7IC8qIGZ1bGx5IHF1YWxpZmllZCBuYW1lICovCisgICAgdWludDMyX3QgZmxhZzsgICAgICAvKiBsaWJtcGRlYyBmbGFnICovCisgICAgUHlPYmplY3QgKmV4OyAgICAgICAvKiBjb3JyZXNwb25kaW5nIGV4Y2VwdGlvbiAqLworfSBEZWNDb25kTWFwOworCisvKiBUb3AgbGV2ZWwgRXhjZXB0aW9uOyBpbmhlcml0cyBmcm9tIEFyaXRobWV0aWNFcnJvciAqLworc3RhdGljIFB5T2JqZWN0ICpEZWNpbWFsRXhjZXB0aW9uID0gTlVMTDsKKworLyogRXhjZXB0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gSUVFRSBzaWduYWxzICovCisjZGVmaW5lIFNVQk5PUk1BTCA1CisjZGVmaW5lIElORVhBQ1QgNgorI2RlZmluZSBST1VOREVEIDcKKyNkZWZpbmUgU0lHTkFMX01BUF9MRU4gOQorc3RhdGljIERlY0NvbmRNYXAgc2lnbmFsX21hcFtdID0geworICB7IkludmFsaWRPcGVyYXRpb24iLCAiZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24sIE5VTEx9LAorICB7IkZsb2F0T3BlcmF0aW9uIiwgImRlY2ltYWwuRmxvYXRPcGVyYXRpb24iLCBNUERfRmxvYXRfb3BlcmF0aW9uLCBOVUxMfSwKKyAgeyJEaXZpc2lvbkJ5WmVybyIsICJkZWNpbWFsLkRpdmlzaW9uQnlaZXJvIiwgTVBEX0RpdmlzaW9uX2J5X3plcm8sIE5VTEx9LAorICB7Ik92ZXJmbG93IiwgImRlY2ltYWwuT3ZlcmZsb3ciLCBNUERfT3ZlcmZsb3csIE5VTEx9LAorICB7IlVuZGVyZmxvdyIsICJkZWNpbWFsLlVuZGVyZmxvdyIsIE1QRF9VbmRlcmZsb3csIE5VTEx9LAorICB7IlN1Ym5vcm1hbCIsICJkZWNpbWFsLlN1Ym5vcm1hbCIsIE1QRF9TdWJub3JtYWwsIE5VTEx9LAorICB7IkluZXhhY3QiLCAiZGVjaW1hbC5JbmV4YWN0IiwgTVBEX0luZXhhY3QsIE5VTEx9LAorICB7IlJvdW5kZWQiLCAiZGVjaW1hbC5Sb3VuZGVkIiwgTVBEX1JvdW5kZWQsIE5VTEx9LAorICB7IkNsYW1wZWQiLCAiZGVjaW1hbC5DbGFtcGVkIiwgTVBEX0NsYW1wZWQsIE5VTEx9LAorICB7TlVMTH0KK307CisKKy8qIEV4Y2VwdGlvbnMgdGhhdCBpbmhlcml0IGZyb20gSW52YWxpZE9wZXJhdGlvbiAqLworc3RhdGljIERlY0NvbmRNYXAgY29uZF9tYXBbXSA9IHsKKyAgeyJJbnZhbGlkT3BlcmF0aW9uIiwgImRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiIsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgTlVMTH0sCisgIHsiQ29udmVyc2lvblN5bnRheCIsICJkZWNpbWFsLkNvbnZlcnNpb25TeW50YXgiLCBNUERfQ29udmVyc2lvbl9zeW50YXgsIE5VTEx9LAorICB7IkRpdmlzaW9uSW1wb3NzaWJsZSIsICJkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZSIsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlLCBOVUxMfSwKKyAgeyJEaXZpc2lvblVuZGVmaW5lZCIsICJkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkIiwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgTlVMTH0sCisgIHsiSW52YWxpZENvbnRleHQiLCAiZGVjaW1hbC5JbnZhbGlkQ29udGV4dCIsIE1QRF9JbnZhbGlkX2NvbnRleHQsIE5VTEx9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyJNYWxsb2NFcnJvciIsICJkZWNpbWFsLk1hbGxvY0Vycm9yIiwgTVBEX01hbGxvY19lcnJvciwgTlVMTH0sCisjZW5kaWYKKyAge05VTEx9Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqZGVjX3NpZ25hbF9zdHJpbmdbTVBEX05VTV9GTEFHU10gPSB7CisgICAgIkNsYW1wZWQiLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiRGl2aXNpb25CeVplcm8iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbmV4YWN0IiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiRmxvYXRPcGVyYXRpb24iLAorICAgICJPdmVyZmxvdyIsCisgICAgIlJvdW5kZWQiLAorICAgICJTdWJub3JtYWwiLAorICAgICJVbmRlcmZsb3ciLAorfTsKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgI2RlZmluZSBfUFlfREVDX1JPVU5EX0dVQVJEIE1QRF9ST1VORF9HVUFSRAorI2Vsc2UKKyAgI2RlZmluZSBfUFlfREVDX1JPVU5EX0dVQVJEIChNUERfUk9VTkRfR1VBUkQtMSkKKyNlbmRpZgorc3RhdGljIFB5T2JqZWN0ICpyb3VuZF9tYXBbX1BZX0RFQ19ST1VORF9HVUFSRF07CisKK3N0YXRpYyBjb25zdCBjaGFyICppbnZhbGlkX3JvdW5kaW5nX2VyciA9CisidmFsaWQgdmFsdWVzIGZvciByb3VuZGluZyBhcmU6XG5cCisgIFtST1VORF9DRUlMSU5HLCBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0RPV04sXG5cCisgICBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EX0hBTEZfRVZFTixcblwKKyAgIFJPVU5EXzA1VVBdIjsKKworc3RhdGljIGNvbnN0IGNoYXIgKmludmFsaWRfc2lnbmFsc19lcnIgPQorInZhbGlkIHZhbHVlcyBmb3Igc2lnbmFscyBhcmU6XG5cCisgIFtJbnZhbGlkT3BlcmF0aW9uLCBGbG9hdE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sXG5cCisgICBPdmVyZmxvdywgVW5kZXJmbG93LCBTdWJub3JtYWwsIEluZXhhY3QsIFJvdW5kZWQsXG5cCisgICBDbGFtcGVkXSI7CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgY29uc3QgY2hhciAqaW52YWxpZF9mbGFnc19lcnIgPQorInZhbGlkIHZhbHVlcyBmb3IgX2ZsYWdzIG9yIF90cmFwcyBhcmU6XG5cCisgIHNpZ25hbHM6XG5cCisgICAgW0RlY0lFRUVJbnZhbGlkT3BlcmF0aW9uLCBEZWNGbG9hdE9wZXJhdGlvbiwgRGVjRGl2aXNpb25CeVplcm8sXG5cCisgICAgIERlY092ZXJmbG93LCBEZWNVbmRlcmZsb3csIERlY1N1Ym5vcm1hbCwgRGVjSW5leGFjdCwgRGVjUm91bmRlZCxcblwKKyAgICAgRGVjQ2xhbXBlZF1cblwKKyAgY29uZGl0aW9ucyB3aGljaCB0cmlnZ2VyIERlY0lFRUVJbnZhbGlkT3BlcmF0aW9uOlxuXAorICAgIFtEZWNJbnZhbGlkT3BlcmF0aW9uLCBEZWNDb252ZXJzaW9uU3ludGF4LCBEZWNEaXZpc2lvbkltcG9zc2libGUsXG5cCisgICAgIERlY0RpdmlzaW9uVW5kZWZpbmVkLCBEZWNGcHVFcnJvciwgRGVjSW52YWxpZENvbnRleHQsIERlY01hbGxvY0Vycm9yXSI7CisjZW5kaWYKKworc3RhdGljIGludAordmFsdWVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiAtMTsKK30KKworI2lmZGVmIENPTkZJR18zMgorc3RhdGljIFB5T2JqZWN0ICoKK3ZhbHVlX2Vycm9yX3B0cihjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Cit0eXBlX2Vycm9yX2ludChjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAorcnVudGltZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gLTE7Cit9CisjZGVmaW5lIElOVEVSTkFMX0VSUk9SX0lOVChmdW5jbmFtZSkgXAorICAgIHJldHVybiBydW50aW1lX2Vycm9yX2ludCgiaW50ZXJuYWwgZXJyb3IgaW4gIiBmdW5jbmFtZSkKKworc3RhdGljIFB5T2JqZWN0ICoKK3J1bnRpbWVfZXJyb3JfcHRyKGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZGVmaW5lIElOVEVSTkFMX0VSUk9SX1BUUihmdW5jbmFtZSkgXAorICAgIHJldHVybiBydW50aW1lX2Vycm9yX3B0cigiaW50ZXJuYWwgZXJyb3IgaW4gIiBmdW5jbmFtZSkKKworc3RhdGljIHZvaWQKK2RlY190cmFwaGFuZGxlcihtcGRfY29udGV4dF90ICpjdHggVU5VU0VEKSAvKiBHQ09WX05PVF9SRUFDSEVEICovCit7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICByZXR1cm47IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZsYWdzX2FzX2V4Y2VwdGlvbih1aW50MzJfdCBmbGFncykKK3sKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgcmV0dXJuIGNtLT5leDsKKyAgICAgICAgfQorICAgIH0KKworICAgIElOVEVSTkFMX0VSUk9SX1BUUigiZmxhZ3NfYXNfZXhjZXB0aW9uIik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK30KKworUHlfTE9DQUxfSU5MSU5FKHVpbnQzMl90KQorZXhjZXB0aW9uX2FzX2ZsYWcoUHlPYmplY3QgKmV4KQoreworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGNtLT5leCA9PSBleCkgeworICAgICAgICAgICAgcmV0dXJuIGNtLT5mbGFnOworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCBpbnZhbGlkX3NpZ25hbHNfZXJyKTsKKyAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZsYWdzX2FzX2xpc3QodWludDMyX3QgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgRGVjQ29uZE1hcCAqY207CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoY20gPSBjb25kX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoZmxhZ3MmY20tPmZsYWcpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGNtLT5leCkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcCsxOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgY20tPmV4KSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbHNfYXNfbGlzdCh1aW50MzJfdCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBjbS0+ZXgpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgdWludDMyX3QKK2xpc3RfYXNfZmxhZ3MoUHlPYmplY3QgKmxpc3QpCit7CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgdWludDMyX3QgZmxhZ3MsIHg7CisgICAgUHlfc3NpemVfdCBuLCBqOworCisgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhsaXN0KSk7CisKKyAgICBuID0gUHlMaXN0X1NpemUobGlzdCk7CisgICAgZmxhZ3MgPSAwOworICAgIGZvciAoaiA9IDA7IGogPCBuOyBqKyspIHsKKyAgICAgICAgaXRlbSA9IFB5TGlzdF9HZXRJdGVtKGxpc3QsIGopOworICAgICAgICB4ID0gZXhjZXB0aW9uX2FzX2ZsYWcoaXRlbSk7CisgICAgICAgIGlmICh4ICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKyAgICAgICAgZmxhZ3MgfD0geDsKKyAgICB9CisKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmbGFnc19hc19kaWN0KHVpbnQzMl90IGZsYWdzKQoreworICAgIERlY0NvbmRNYXAgKmNtOworICAgIFB5T2JqZWN0ICpkaWN0OworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpiID0gZmxhZ3MmY20tPmZsYWcgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWN0LCBjbS0+ZXgsIGIpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZGljdDsKK30KKworc3RhdGljIHVpbnQzMl90CitkaWN0X2FzX2ZsYWdzKFB5T2JqZWN0ICp2YWwpCit7CisgICAgUHlPYmplY3QgKmI7CisgICAgRGVjQ29uZE1hcCAqY207CisgICAgdWludDMyX3QgZmxhZ3MgPSAwOworICAgIGludCB4OworCisgICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBzaWduYWwgZGljdCIpOworICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICB9CisKKyAgICBpZiAoUHlEaWN0X1NpemUodmFsKSAhPSBTSUdOQUxfTUFQX0xFTikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBzaWduYWwgZGljdCIpOworICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICB9CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBiID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IodmFsLCBjbS0+ZXgpOworICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBERUNfRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIHNpZ25hbCBkaWN0Iik7CisgICAgICAgICAgICByZXR1cm4gREVDX0lOVkFMSURfU0lHTkFMUzsKKyAgICAgICAgfQorCisgICAgICAgIHggPSBQeU9iamVjdF9Jc1RydWUoYik7CisgICAgICAgIGlmICh4IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIERFQ19FUlJfT0NDVVJSRUQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHggPT0gMSkgeworICAgICAgICAgICAgZmxhZ3MgfD0gY20tPmZsYWc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgdWludDMyX3QKK2xvbmdfYXNfZmxhZ3MoUHlPYmplY3QgKnYpCit7CisgICAgbG9uZyB4OworCisgICAgeCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gREVDX0VSUl9PQ0NVUlJFRDsKKyAgICB9CisgICAgaWYgKHggPCAwIHx8IHggPiAobG9uZylNUERfTWF4X3N0YXR1cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBpbnZhbGlkX2ZsYWdzX2Vycik7CisgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgIH0KKworICAgIHJldHVybiB4OworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2RlY19hZGRzdGF0dXMoUHlPYmplY3QgKmNvbnRleHQsIHVpbnQzMl90IHN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoY29udGV4dCk7CisKKyAgICBjdHgtPnN0YXR1cyB8PSBzdGF0dXM7CisgICAgaWYgKHN0YXR1cyAmIChjdHgtPnRyYXBzfE1QRF9NYWxsb2NfZXJyb3IpKSB7CisgICAgICAgIFB5T2JqZWN0ICpleCwgKnNpZ2xpc3Q7CisKKyAgICAgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIGV4ID0gZmxhZ3NfYXNfZXhjZXB0aW9uKGN0eC0+dHJhcHMmc3RhdHVzKTsKKyAgICAgICAgaWYgKGV4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICAgICAgc2lnbGlzdCA9IGZsYWdzX2FzX2xpc3QoY3R4LT50cmFwcyZzdGF0dXMpOworICAgICAgICBpZiAoc2lnbGlzdCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5RXJyX1NldE9iamVjdChleCwgc2lnbGlzdCk7CisgICAgICAgIFB5X0RFQ1JFRihzaWdsaXN0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZXRyb3VuZChQeU9iamVjdCAqdikKK3sKKyAgICBpbnQgaTsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IF9QWV9ERUNfUk9VTkRfR1VBUkQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHYgPT0gcm91bmRfbWFwW2ldKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IF9QWV9ERUNfUk9VTkRfR1VBUkQ7IGkrKykgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKHYsIHJvdW5kX21hcFtpXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KGludmFsaWRfcm91bmRpbmdfZXJyKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsRGljdCBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSBTaWduYWxEaWN0IGlzIGEgTXV0YWJsZU1hcHBpbmcgdGhhdCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlCisgICBtcGRfY29udGV4dF90IGZsYWdzLCB3aGljaCByZXNpZGUgaW4gdGhlIGNvbnRleHQgb2JqZWN0LiBXaGVuIGEKKyAgIG5ldyBjb250ZXh0IGlzIGNyZWF0ZWQsIGNvbnRleHQudHJhcHMgYW5kIGNvbnRleHQuZmxhZ3MgYXJlCisgICBpbml0aWFsaXplZCB0byBuZXcgU2lnbmFsRGljdHMuIE9uY2UgYSBTaWduYWxEaWN0IGlzIHRpZWQgdG8KKyAgIGEgY29udGV4dCwgaXQgY2Fubm90IGJlIGRlbGV0ZWQuICovCisKK3N0YXRpYyBpbnQKK3NpZ25hbGRpY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VELCBQeU9iamVjdCAqa3dkcyBVTlVTRUQpCit7CisgICAgU2RGbGFnQWRkcihzZWxmKSA9IE5VTEw7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CitzaWduYWxkaWN0X2xlbihQeU9iamVjdCAqc2VsZiBVTlVTRUQpCit7CisgICAgcmV0dXJuIFNJR05BTF9NQVBfTEVOOworfQorCitzdGF0aWMgUHlPYmplY3QgKlNpZ25hbFR1cGxlOworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfaXRlcihQeU9iamVjdCAqc2VsZiBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5VHVwbGVfVHlwZS50cF9pdGVyKFNpZ25hbFR1cGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfZ2V0aXRlbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKK3sKKyAgICB1aW50MzJfdCBmbGFnOworCisgICAgZmxhZyA9IGV4Y2VwdGlvbl9hc19mbGFnKGtleSk7CisgICAgaWYgKGZsYWcgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBTZEZsYWdzKHNlbGYpJmZsYWcgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKK30KKworc3RhdGljIGludAorc2lnbmFsZGljdF9zZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgdWludDMyX3QgZmxhZzsKKyAgICBpbnQgeDsKKworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoInNpZ25hbCBrZXlzIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgfQorCisgICAgZmxhZyA9IGV4Y2VwdGlvbl9hc19mbGFnKGtleSk7CisgICAgaWYgKGZsYWcgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB4ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICBpZiAoeCA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICh4ID09IDEpIHsKKyAgICAgICAgU2RGbGFncyhzZWxmKSB8PSBmbGFnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgU2RGbGFncyhzZWxmKSAmPSB+ZmxhZzsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfcmVwcihQeU9iamVjdCAqc2VsZikKK3sKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICBjb25zdCBjaGFyICpuW1NJR05BTF9NQVBfTEVOXTsgLyogbmFtZSAqLworICAgIGNvbnN0IGNoYXIgKmJbU0lHTkFMX01BUF9MRU5dOyAvKiBib29sICovCisgICAgaW50IGk7CisKKyAgICBhc3NlcnQoU0lHTkFMX01BUF9MRU4gPT0gOSk7CisKKyAgICBmb3IgKGNtPXNpZ25hbF9tYXAsIGk9MDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKywgaSsrKSB7CisgICAgICAgIG5baV0gPSBjbS0+ZnFuYW1lOworICAgICAgICBiW2ldID0gU2RGbGFncyhzZWxmKSZjbS0+ZmxhZyA/ICJUcnVlIiA6ICJGYWxzZSI7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIns8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCAiCisgICAgICAgICAiPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgIgorICAgICAgICAgIjxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXN9IiwKKyAgICAgICAgICAgIG5bMF0sIGJbMF0sIG5bMV0sIGJbMV0sIG5bMl0sIGJbMl0sCisgICAgICAgICAgICBuWzNdLCBiWzNdLCBuWzRdLCBiWzRdLCBuWzVdLCBiWzVdLAorICAgICAgICAgICAgbls2XSwgYls2XSwgbls3XSwgYls3XSwgbls4XSwgYls4XSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKKworICAgIGFzc2VydChQeURlY1NpZ25hbERpY3RfQ2hlY2sodikpOworCisgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7CisgICAgICAgIGlmIChQeURlY1NpZ25hbERpY3RfQ2hlY2sodykpIHsKKyAgICAgICAgICAgIHJlcyA9IChTZEZsYWdzKHYpPT1TZEZsYWdzKHcpKSBeIChvcD09UHlfTkUpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RGljdF9DaGVjayh3KSkgeworICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSBkaWN0X2FzX2ZsYWdzKHcpOworICAgICAgICAgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIERFQ19JTlZBTElEX1NJR05BTFMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbm9uLWNvbXBhcmFibGU6IFB5X05vdEltcGxlbWVudGVkICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXMgPSAoU2RGbGFncyh2KT09ZmxhZ3MpIF4gKG9wPT1QeV9ORSkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9jb3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgcmV0dXJuIGZsYWdzX2FzX2RpY3QoU2RGbGFncyhzZWxmKSk7Cit9CisKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgc2lnbmFsZGljdF9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKXNpZ25hbGRpY3RfbGVuLCAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYylzaWduYWxkaWN0X2dldGl0ZW0sICAgLyogbXBfc3Vic2NyaXB0ICovCisgICAgKG9iam9iamFyZ3Byb2Mpc2lnbmFsZGljdF9zZXRpdGVtIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBzaWduYWxkaWN0X21ldGhvZHNbXSA9IHsKKyAgICB7ICJjb3B5IiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbGRpY3RfY29weSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUgPQoreworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKQorICAgICJkZWNpbWFsLlNpZ25hbERpY3RNaXhpbiIsICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlEZWNTaWduYWxEaWN0T2JqZWN0KSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAoc2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIHNpZ25hbGRpY3RfcmVwciwgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmc2lnbmFsZGljdF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkLCAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAocmVwcmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEV8CisgICAgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgc2lnbmFsZGljdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIChnZXRpdGVyZnVuYylzaWduYWxkaWN0X2l0ZXIsICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHNpZ25hbGRpY3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKXNpZ25hbGRpY3RfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0IE9iamVjdCwgUGFydCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBEZWNfQ09OVEVYVF9HRVRfU1NJWkUobWVtKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2NvbnRleHRfZ2V0IyNtZW0oUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKSAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChtcGRfZ2V0IyNtZW0oQ1RYKHNlbGYpKSk7IFwKK30KKworI2RlZmluZSBEZWNfQ09OVEVYVF9HRVRfVUxPTkcobWVtKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY29udGV4dF9nZXQjI21lbShQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG1wZF9nZXQjI21lbShDVFgoc2VsZikpKTsgXAorfQorCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUocHJlYykKK0RlY19DT05URVhUX0dFVF9TU0laRShlbWF4KQorRGVjX0NPTlRFWFRfR0VUX1NTSVpFKGVtaW4pCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUoY2xhbXApCisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitEZWNfQ09OVEVYVF9HRVRfVUxPTkcodHJhcHMpCitEZWNfQ09OVEVYVF9HRVRfVUxPTkcoc3RhdHVzKQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldHJvdW5kKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBpbnQgaSA9IG1wZF9nZXRyb3VuZChDVFgoc2VsZikpOworCisgICAgUHlfSU5DUkVGKHJvdW5kX21hcFtpXSk7CisgICAgcmV0dXJuIHJvdW5kX21hcFtpXTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0Y2FwaXRhbHMoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoQ3R4Q2FwcyhzZWxmKSk7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRhbGxjcihQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtcGRfZ2V0Y3IoQ1RYKHNlbGYpKSk7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0ZXRpbnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChtcGRfZXRpbnkoQ1RYKHNlbGYpKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGV0b3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChtcGRfZXRvcChDVFgoc2VsZikpKTsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRwcmVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0cHJlYyhjdHgsIHgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHByZWMgaXMgWzEsIE1BWF9QUkVDXSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGVtaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRlbWluKGN0eCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgRW1pbiBpcyBbTUlOX0VNSU4sIDBdIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0ZW1heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGVtYXgoY3R4LCB4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciBFbWF4IGlzIFswLCBNQVhfRU1BWF0iKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR18zMgorc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfdW5zYWZlX3NldHByZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoc2VsZik7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4IDwgMSB8fCB4ID4gMTA3MDAwMDAwMEwpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX3B0cigKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgdW5zYWZlIHByZWMgaXMgWzEsIDEwNzAwMDAwMDBdIik7CisgICAgfQorCisgICAgY3R4LT5wcmVjID0geDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfdW5zYWZlX3NldGVtaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoc2VsZik7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4IDwgLTEwNzAwMDAwMDBMIHx8IHggPiAwKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9wdHIoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBlbWluIGlzIFstMTA3MDAwMDAwMCwgMF0iKTsKKyAgICB9CisKKyAgICBjdHgtPmVtaW4gPSB4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF91bnNhZmVfc2V0ZW1heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChzZWxmKTsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHggPCAwIHx8IHggPiAxMDcwMDAwMDAwTCkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfcHRyKAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciB1bnNhZmUgZW1heCBpcyBbMCwgMTA3MDAwMDAwMF0iKTsKKyAgICB9CisKKyAgICBjdHgtPmVtYXggPSB4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0cm91bmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIGludCB4OworCisgICAgeCA9IGdldHJvdW5kKHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRyb3VuZChjdHgsIHgpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXRyb3VuZCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0Y2FwaXRhbHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoeCAhPSAwICYmIHggIT0gMSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHZhbHVlcyBmb3IgY2FwaXRhbHMgYXJlIDAgb3IgMSIpOworICAgIH0KKyAgICBDdHhDYXBzKHNlbGYpID0gKGludCl4OworCisgICAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitzdGF0aWMgaW50Citjb250ZXh0X3NldHRyYXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbG9uZ19hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXR0cmFwcyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0dHJhcHMiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHRyYXBzX2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBmbGFncyA9IGxpc3RfYXNfZmxhZ3ModmFsdWUpOworICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0dHJhcHMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHRyYXBzX2xpc3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXR0cmFwc19kaWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgaWYgKFB5RGVjU2lnbmFsRGljdF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgZmxhZ3MgPSBTZEZsYWdzKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZsYWdzID0gZGljdF9hc19mbGFncyh2YWx1ZSk7CisgICAgICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0dHJhcHMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHRyYXBzX2RpY3QiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0c3RhdHVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbG9uZ19hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRzdGF0dXMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHN0YXR1cyIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0c3RhdHVzX2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBmbGFncyA9IGxpc3RfYXNfZmxhZ3ModmFsdWUpOworICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0c3RhdHVzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXRzdGF0dXNfbGlzdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHN0YXR1c19kaWN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgaWYgKFB5RGVjU2lnbmFsRGljdF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgZmxhZ3MgPSBTZEZsYWdzKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZsYWdzID0gZGljdF9hc19mbGFncyh2YWx1ZSk7CisgICAgICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0c3RhdHVzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXRzdGF0dXNfZGljdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGNsYW1wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBCT1VORFNfQ0hFQ0soeCwgSU5UX01JTiwgSU5UX01BWCk7CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGNsYW1wKGN0eCwgKGludCl4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KCJ2YWxpZCB2YWx1ZXMgZm9yIGNsYW1wIGFyZSAwIG9yIDEiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0YWxsY3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEJPVU5EU19DSEVDSyh4LCBJTlRfTUlOLCBJTlRfTUFYKTsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0Y3IoY3R4LCAoaW50KXgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoInZhbGlkIHZhbHVlcyBmb3IgX2FsbGNyIGFyZSAwIG9yIDEiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgInRyYXBzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dmFsID0gKChQeURlY0NvbnRleHRPYmplY3QgKilzZWxmKS0+dHJhcHM7CisgICAgICAgICAgICBQeV9JTkNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJmbGFncyIpID09IDApIHsKKyAgICAgICAgICAgIHJldHZhbCA9ICgoUHlEZWNDb250ZXh0T2JqZWN0ICopc2VsZiktPmZsYWdzOworICAgICAgICAgICAgUHlfSU5DUkVGKHJldHZhbCk7CisgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKHNlbGYsIG5hbWUpOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgImNvbnRleHQgYXR0cmlidXRlcyBjYW5ub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgInRyYXBzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRfc2V0dHJhcHNfZGljdChzZWxmLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJmbGFncyIpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0X3NldHN0YXR1c19kaWN0KHNlbGYsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljU2V0QXR0cihzZWxmLCBuYW1lLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2NsZWFyX3RyYXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIENUWChzZWxmKS0+dHJhcHMgPSAwOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9jbGVhcl9mbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBDVFgoc2VsZiktPnN0YXR1cyA9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNkZWZpbmUgREVDX0RGTFRfRU1BWCA5OTk5OTkKKyNkZWZpbmUgREVDX0RGTFRfRU1JTiAtOTk5OTk5CisKK3N0YXRpYyBtcGRfY29udGV4dF90IGRmbHRfY3R4ID0geworICAyOCwgREVDX0RGTFRfRU1BWCwgREVDX0RGTFRfRU1JTiwKKyAgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb258TVBEX0RpdmlzaW9uX2J5X3plcm98TVBEX092ZXJmbG93LAorICAwLCAwLCBNUERfUk9VTkRfSEFMRl9FVkVOLCAwLCAxCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncyBVTlVTRUQsIFB5T2JqZWN0ICprd2RzIFVOVVNFRCkKK3sKKyAgICBQeURlY0NvbnRleHRPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKworICAgIGlmICh0eXBlID09ICZQeURlY0NvbnRleHRfVHlwZSkgeworICAgICAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5RGVjQ29udGV4dE9iamVjdCwgJlB5RGVjQ29udGV4dF9UeXBlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYgPSAoUHlEZWNDb250ZXh0T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgfQorCisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmLT50cmFwcyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopUHlEZWNTaWduYWxEaWN0X1R5cGUsIE5VTEwpOworICAgIGlmIChzZWxmLT50cmFwcyA9PSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmZsYWdzID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+ZmxhZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKVB5RGVjU2lnbmFsRGljdF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoc2VsZi0+ZmxhZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIGlmIChkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpIHsKKyAgICAgICAgKmN0eCA9ICpDVFgoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpjdHggPSBkZmx0X2N0eDsKKyAgICB9CisKKyAgICBTZEZsYWdBZGRyKHNlbGYtPnRyYXBzKSA9ICZjdHgtPnRyYXBzOworICAgIFNkRmxhZ0FkZHIoc2VsZi0+ZmxhZ3MpID0gJmN0eC0+c3RhdHVzOworCisgICAgQ3R4Q2FwcyhzZWxmKSA9IDE7CisjaWZuZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIHNlbGYtPnRzdGF0ZSA9IE5VTEw7CisjZW5kaWYKKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworfQorCitzdGF0aWMgdm9pZAorY29udGV4dF9kZWFsbG9jKFB5RGVjQ29udGV4dE9iamVjdCAqc2VsZikKK3sKKyNpZm5kZWYgV0lUSE9VVF9USFJFQURTCisgICAgaWYgKHNlbGYgPT0gY2FjaGVkX2NvbnRleHQpIHsKKyAgICAgICAgY2FjaGVkX2NvbnRleHQgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIFB5X1hERUNSRUYoc2VsZi0+dHJhcHMpOworICAgIFB5X1hERUNSRUYoc2VsZi0+ZmxhZ3MpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICJwcmVjIiwgInJvdW5kaW5nIiwgIkVtaW4iLCAiRW1heCIsICJjYXBpdGFscyIsICJjbGFtcCIsCisgICAgICAiZmxhZ3MiLCAidHJhcHMiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqcHJlYyA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJvdW5kaW5nID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZW1pbiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmVtYXggPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpjYXBpdGFscyA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmNsYW1wID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqc3RhdHVzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqdHJhcHMgPSBQeV9Ob25lOworICAgIGludCByZXQ7CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKKyAgICAgICAgICAgIGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAifE9PT09PT09PIiwga3dsaXN0LAorICAgICAgICAgICAgJnByZWMsICZyb3VuZGluZywgJmVtaW4sICZlbWF4LCAmY2FwaXRhbHMsICZjbGFtcCwgJnN0YXR1cywgJnRyYXBzCisgICAgICAgICApKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocHJlYyAhPSBQeV9Ob25lICYmIGNvbnRleHRfc2V0cHJlYyhzZWxmLCBwcmVjLCBOVUxMKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocm91bmRpbmcgIT0gUHlfTm9uZSAmJiBjb250ZXh0X3NldHJvdW5kKHNlbGYsIHJvdW5kaW5nLCBOVUxMKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZW1pbiAhPSBQeV9Ob25lICYmIGNvbnRleHRfc2V0ZW1pbihzZWxmLCBlbWluLCBOVUxMKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZW1heCAhPSBQeV9Ob25lICYmIGNvbnRleHRfc2V0ZW1heChzZWxmLCBlbWF4LCBOVUxMKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoY2FwaXRhbHMgIT0gUHlfTm9uZSAmJiBjb250ZXh0X3NldGNhcGl0YWxzKHNlbGYsIGNhcGl0YWxzLCBOVUxMKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoY2xhbXAgIT0gUHlfTm9uZSAmJiBjb250ZXh0X3NldGNsYW1wKHNlbGYsIGNsYW1wLCBOVUxMKSA8IDApIHsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHRyYXBzICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKFB5TGlzdF9DaGVjayh0cmFwcykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0dHJhcHNfbGlzdChzZWxmLCB0cmFwcyk7CisgICAgICAgIH0KKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgICAgICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh0cmFwcykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0dHJhcHMoc2VsZiwgdHJhcHMsIE5VTEwpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHRyYXBzX2RpY3Qoc2VsZiwgdHJhcHMpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorICAgIGlmIChzdGF0dXMgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoUHlMaXN0X0NoZWNrKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0c3RhdHVzX2xpc3Qoc2VsZiwgc3RhdHVzKTsKKyAgICAgICAgfQorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgICAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0c3RhdHVzKHNlbGYsIHN0YXR1cywgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0c3RhdHVzX2RpY3Qoc2VsZiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9yZXByKFB5RGVjQ29udGV4dE9iamVjdCAqc2VsZikKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgY2hhciBmbGFnc1tNUERfTUFYX1NJR05BTF9MSVNUXTsKKyAgICBjaGFyIHRyYXBzW01QRF9NQVhfU0lHTkFMX0xJU1RdOworICAgIGludCBuLCBtZW07CisKKyAgICBhc3NlcnQoUHlEZWNDb250ZXh0X0NoZWNrKHNlbGYpKTsKKyAgICBjdHggPSBDVFgoc2VsZik7CisKKyAgICBtZW0gPSBNUERfTUFYX1NJR05BTF9MSVNUOworICAgIG4gPSBtcGRfbHNucHJpbnRfc2lnbmFscyhmbGFncywgbWVtLCBjdHgtPnN0YXR1cywgZGVjX3NpZ25hbF9zdHJpbmcpOworICAgIGlmIChuIDwgMCB8fCBuID49IG1lbSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9QVFIoImNvbnRleHRfcmVwciIpOworICAgIH0KKworICAgIG4gPSBtcGRfbHNucHJpbnRfc2lnbmFscyh0cmFwcywgbWVtLCBjdHgtPnRyYXBzLCBkZWNfc2lnbmFsX3N0cmluZyk7CisgICAgaWYgKG4gPCAwIHx8IG4gPj0gbWVtKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX1BUUigiY29udGV4dF9yZXByIik7CisgICAgfQorCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiQ29udGV4dChwcmVjPSV6ZCwgcm91bmRpbmc9JXMsIEVtaW49JXpkLCBFbWF4PSV6ZCwgIgorICAgICAgICAgICAgICAgICJjYXBpdGFscz0lZCwgY2xhbXA9JWQsIGZsYWdzPSVzLCB0cmFwcz0lcykiLAorICAgICAgICAgY3R4LT5wcmVjLCBtcGRfcm91bmRfc3RyaW5nW2N0eC0+cm91bmRdLCBjdHgtPmVtaW4sIGN0eC0+ZW1heCwKKyAgICAgICAgIHNlbGYtPmNhcGl0YWxzLCBjdHgtPmNsYW1wLCBmbGFncywgdHJhcHMpOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9iYXNpY19jb250ZXh0KFB5T2JqZWN0ICp2KQoreworICAgIG1wZF9jb250ZXh0X3QgY3R4ID0gZGZsdF9jdHg7CisKKyAgICBjdHgucHJlYyA9IDk7CisgICAgY3R4LnRyYXBzIHw9IChNUERfVW5kZXJmbG93fE1QRF9DbGFtcGVkKTsKKyAgICBjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9VUDsKKworICAgICpDVFgodikgPSBjdHg7CisgICAgQ3R4Q2Fwcyh2KSA9IDE7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2V4dGVuZGVkX2NvbnRleHQoUHlPYmplY3QgKnYpCit7CisgICAgbXBkX2NvbnRleHRfdCBjdHggPSBkZmx0X2N0eDsKKworICAgIGN0eC5wcmVjID0gOTsKKyAgICBjdHgudHJhcHMgPSAwOworCisgICAgKkNUWCh2KSA9IGN0eDsKKyAgICBDdHhDYXBzKHYpID0gMTsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKy8qIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIElFRUUgaW50ZXJjaGFuZ2UgZm9ybWF0IGNvbnRleHRzICovCitzdGF0aWMgUHlPYmplY3QgKgoraWVlZV9jb250ZXh0KFB5T2JqZWN0ICpkdW1teSBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIG1wZF9zc2l6ZV90IGJpdHM7CisgICAgbXBkX2NvbnRleHRfdCBjdHg7CisKKyAgICBiaXRzID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICBpZiAoYml0cyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoYml0cyA8PSAwIHx8IGJpdHMgPiBJTlRfTUFYKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChtcGRfaWVlZV9jb250ZXh0KCZjdHgsIChpbnQpYml0cykgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgY29udGV4dCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAqQ1RYKGNvbnRleHQpID0gY3R4OworCisgICAgcmV0dXJuIGNvbnRleHQ7CisKK2Vycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLCB3aXRoIGEgbWF4aW11bSBvZiAlZCIsCisgICAgICAgIE1QRF9JRUVFX0NPTlRFWFRfTUFYX0JJVFMpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfY29weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb3B5OworCisgICAgY29weSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoY29weSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgICpDVFgoY29weSkgPSAqQ1RYKHNlbGYpOworICAgIENUWChjb3B5KS0+bmV3dHJhcCA9IDA7CisgICAgQ3R4Q2Fwcyhjb3B5KSA9IEN0eENhcHMoc2VsZik7CisKKyAgICByZXR1cm4gY29weTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfcmVkdWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmZsYWdzOworICAgIFB5T2JqZWN0ICp0cmFwczsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIGZsYWdzID0gc2lnbmFsc19hc19saXN0KGN0eC0+c3RhdHVzKTsKKyAgICBpZiAoZmxhZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdHJhcHMgPSBzaWduYWxzX2FzX2xpc3QoY3R4LT50cmFwcyk7CisgICAgaWYgKHRyYXBzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgICAgICJPKG5zbm5paU9PKSIsCisgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLAorICAgICAgICAgICAgY3R4LT5wcmVjLCBtcGRfcm91bmRfc3RyaW5nW2N0eC0+cm91bmRdLCBjdHgtPmVtaW4sIGN0eC0+ZW1heCwKKyAgICAgICAgICAgIEN0eENhcHMoc2VsZiksIGN0eC0+Y2xhbXAsIGZsYWdzLCB0cmFwcworICAgICk7CisKKyAgICBQeV9ERUNSRUYoZmxhZ3MpOworICAgIFB5X0RFQ1JFRih0cmFwcyk7CisgICAgcmV0dXJuIHJldDsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRzIFtdID0KK3sKKyAgeyAicHJlYyIsIChnZXR0ZXIpY29udGV4dF9nZXRwcmVjLCAoc2V0dGVyKWNvbnRleHRfc2V0cHJlYywgTlVMTCwgTlVMTH0sCisgIHsgIkVtYXgiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0ZW1heCwgKHNldHRlciljb250ZXh0X3NldGVtYXgsIE5VTEwsIE5VTEx9LAorICB7ICJFbWluIiwgKGdldHRlciljb250ZXh0X2dldGVtaW4sIChzZXR0ZXIpY29udGV4dF9zZXRlbWluLCBOVUxMLCBOVUxMfSwKKyAgeyAicm91bmRpbmciLCAoZ2V0dGVyKWNvbnRleHRfZ2V0cm91bmQsIChzZXR0ZXIpY29udGV4dF9zZXRyb3VuZCwgTlVMTCwgTlVMTH0sCisgIHsgImNhcGl0YWxzIiwgKGdldHRlciljb250ZXh0X2dldGNhcGl0YWxzLCAoc2V0dGVyKWNvbnRleHRfc2V0Y2FwaXRhbHMsIE5VTEwsIE5VTEx9LAorICB7ICJjbGFtcCIsIChnZXR0ZXIpY29udGV4dF9nZXRjbGFtcCwgKHNldHRlciljb250ZXh0X3NldGNsYW1wLCBOVUxMLCBOVUxMfSwKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgIHsgIl9hbGxjciIsIChnZXR0ZXIpY29udGV4dF9nZXRhbGxjciwgKHNldHRlciljb250ZXh0X3NldGFsbGNyLCBOVUxMLCBOVUxMfSwKKyAgeyAiX3RyYXBzIiwgKGdldHRlciljb250ZXh0X2dldHRyYXBzLCAoc2V0dGVyKWNvbnRleHRfc2V0dHJhcHMsIE5VTEwsIE5VTEx9LAorICB7ICJfZmxhZ3MiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0c3RhdHVzLCAoc2V0dGVyKWNvbnRleHRfc2V0c3RhdHVzLCBOVUxMLCBOVUxMfSwKKyNlbmRpZgorICB7TlVMTH0KK307CisKKworI2RlZmluZSBDT05URVhUX0NIRUNLKG9iaikgXAorICAgIGlmICghUHlEZWNDb250ZXh0X0NoZWNrKG9iaikpIHsgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICBcCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIGNvbnRleHQiKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ09OVEVYVF9DSEVDS19WQShvYmopIFwKKyAgICBpZiAob2JqID09IFB5X05vbmUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIENVUlJFTlRfQ09OVEVYVChvYmopOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICghUHlEZWNDb250ZXh0X0NoZWNrKG9iaikpIHsgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgICAgICAgICAgXAorICAgICAgICAgICAgIm9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBjb250ZXh0Iik7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICBHbG9iYWwsIHRocmVhZCBsb2NhbCBhbmQgdGVtcG9yYXJ5IGNvbnRleHRzICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworLyogUmV0dXJuIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0LiBXaGVuIGNvbXBpbGVkCisgKiB3aXRob3V0IHRocmVhZHMsIHRoaXMgaXMgYWx3YXlzIHRoZSBtb2R1bGUgY29udGV4dC4gKi8KK3N0YXRpYyBpbnQgbW9kdWxlX2NvbnRleHRfc2V0ID0gMDsKK3N0YXRpYyBQeU9iamVjdCAqCitjdXJyZW50X2NvbnRleHQodm9pZCkKK3sKKyAgICAvKiBJbiBkZWNpbWFsLnB5LCB0aGUgbW9kdWxlIGNvbnRleHQgaXMgYXV0b21hdGljYWxseSBpbml0aWFsaXplZAorICAgICAqIGZyb20gdGhlIERlZmF1bHRDb250ZXh0IHdoZW4gaXQgaXMgZmlyc3QgYWNjZXNzZWQuIFRoaXMKKyAgICAgKiBjb21wbGljYXRlcyB0aGUgY29kZSBhbmQgaGFzIGEgc3BlZWQgcGVuYWx0eSBvZiAxLTIlLiAqLworICAgIGlmIChtb2R1bGVfY29udGV4dF9zZXQpIHsKKyAgICAgICAgcmV0dXJuIG1vZHVsZV9jb250ZXh0OworICAgIH0KKworICAgICpDVFgobW9kdWxlX2NvbnRleHQpID0gKkNUWChkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOworICAgIENUWChtb2R1bGVfY29udGV4dCktPnN0YXR1cyA9IDA7CisgICAgQ1RYKG1vZHVsZV9jb250ZXh0KS0+bmV3dHJhcCA9IDA7CisgICAgQ3R4Q2Fwcyhtb2R1bGVfY29udGV4dCkgPSBDdHhDYXBzKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisKKyAgICBtb2R1bGVfY29udGV4dF9zZXQgPSAxOworICAgIHJldHVybiBtb2R1bGVfY29udGV4dDsKK30KKworLyogY3R4b2JqIDo9IGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVChjdHhvYmopIFwKKyAgICBjdHhvYmogPSBjdXJyZW50X2NvbnRleHQoKQorCisvKiBjdHggOj0gcG9pbnRlciB0byB0aGUgbXBkX2NvbnRleHRfdCBzdHJ1Y3Qgb2YgdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFRfQUREUihjdHgpIFwKKyAgICBjdHggPSBDVFgoY3VycmVudF9jb250ZXh0KCkpCisKKy8qIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0dldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworCisgICAgUHlfSU5DUkVGKGNvbnRleHQpOworICAgIHJldHVybiBjb250ZXh0OworfQorCisvKiBTZXQgdGhlIG1vZHVsZSBjb250ZXh0IHRvIGEgbmV3IGNvbnRleHQsIGRlY3JlbWVudCBvbGQgcmVmZXJlbmNlICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfU2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBDT05URVhUX0NIRUNLKHYpOworCisgICAgLyogSWYgdGhlIG5ldyBjb250ZXh0IGlzIG9uZSBvZiB0aGUgdGVtcGxhdGVzLCBtYWtlIGEgY29weS4KKyAgICAgKiBUaGlzIGlzIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIGRlY2ltYWwucHkuICovCisgICAgaWYgKHYgPT0gZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gYmFzaWNfY29udGV4dF90ZW1wbGF0ZSB8fAorICAgICAgICB2ID09IGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpIHsKKyAgICAgICAgdiA9IGNvbnRleHRfY29weSh2LCBOVUxMKTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgQ1RYKHYpLT5zdGF0dXMgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgIH0KKworICAgIFB5X1hERUNSRUYobW9kdWxlX2NvbnRleHQpOworICAgIG1vZHVsZV9jb250ZXh0ID0gdjsKKyAgICBtb2R1bGVfY29udGV4dF9zZXQgPSAxOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2Vsc2UKKy8qCisgKiBUaHJlYWQgbG9jYWwgc3RvcmFnZSBjdXJyZW50bHkgaGFzIGEgc3BlZWQgcGVuYWx0eSBvZiBhYm91dCA0JS4KKyAqIEFsbCBmdW5jdGlvbnMgdGhhdCBtYXAgUHl0aG9uJ3MgYXJpdGhtZXRpYyBvcGVyYXRvcnMgdG8gbXBkZWNpbWFsCisgKiBmdW5jdGlvbnMgaGF2ZSB0byBsb29rIHVwIHRoZSBjdXJyZW50IGNvbnRleHQgZm9yIGVhY2ggYW5kIGV2ZXJ5CisgKiBvcGVyYXRpb24uCisgKi8KKworLyogR2V0IHRoZSBjb250ZXh0IGZyb20gdGhlIHRocmVhZCBzdGF0ZSBkaWN0aW9uYXJ5LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnJlbnRfY29udGV4dF9mcm9tX2RpY3Qodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBQeU9iamVjdCAqdGxfY29udGV4dDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICBkaWN0ID0gUHlUaHJlYWRTdGF0ZV9HZXREaWN0KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBnZXQgdGhyZWFkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHRsX2NvbnRleHQgPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihkaWN0LCB0bHNfY29udGV4dF9rZXkpOworICAgIGlmICh0bF9jb250ZXh0ICE9IE5VTEwpIHsKKyAgICAgICAgLyogV2UgYWxyZWFkeSBoYXZlIGEgdGhyZWFkIGxvY2FsIGNvbnRleHQuICovCisgICAgICAgIENPTlRFWFRfQ0hFQ0sodGxfY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiBTZXQgdXAgYSBuZXcgdGhyZWFkIGxvY2FsIGNvbnRleHQuICovCisgICAgICAgIHRsX2NvbnRleHQgPSBjb250ZXh0X2NvcHkoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlLCBOVUxMKTsKKyAgICAgICAgaWYgKHRsX2NvbnRleHQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgQ1RYKHRsX2NvbnRleHQpLT5zdGF0dXMgPSAwOworCisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWN0LCB0bHNfY29udGV4dF9rZXksIHRsX2NvbnRleHQpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRsX2NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHRsX2NvbnRleHQpOworICAgIH0KKworICAgIC8qIENhY2hlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRocmVhZCwgYXNzdW1pbmcgdGhhdCBpdAorICAgICAqIHdpbGwgYmUgYWNjZXNzZWQgc2V2ZXJhbCB0aW1lcyBiZWZvcmUgYSB0aHJlYWQgc3dpdGNoLiAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaWYgKHRzdGF0ZSkgeworICAgICAgICBjYWNoZWRfY29udGV4dCA9IChQeURlY0NvbnRleHRPYmplY3QgKil0bF9jb250ZXh0OworICAgICAgICBjYWNoZWRfY29udGV4dC0+dHN0YXRlID0gdHN0YXRlOworICAgIH0KKworICAgIC8qIEJvcnJvd2VkIHJlZmVyZW5jZSB3aXRoIHJlZmNvdW50PT0xICovCisgICAgcmV0dXJuIHRsX2NvbnRleHQ7Cit9CisKKy8qIFJldHVybiBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhyZWFkIGxvY2FsIGNvbnRleHQuICovCitzdGF0aWMgUHlPYmplY3QgKgorY3VycmVudF9jb250ZXh0KHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpZiAoY2FjaGVkX2NvbnRleHQgJiYgY2FjaGVkX2NvbnRleHQtPnRzdGF0ZSA9PSB0c3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWNhY2hlZF9jb250ZXh0OworICAgIH0KKworICAgIHJldHVybiBjdXJyZW50X2NvbnRleHRfZnJvbV9kaWN0KCk7Cit9CisKKy8qIGN0eG9iaiA6PSBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFQoY3R4b2JqKSBcCisgICAgY3R4b2JqID0gY3VycmVudF9jb250ZXh0KCk7IFwKKyAgICBpZiAoY3R4b2JqID09IE5VTEwpIHsgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICBcCisgICAgfQorCisvKiBjdHggOj0gcG9pbnRlciB0byB0aGUgbXBkX2NvbnRleHRfdCBzdHJ1Y3Qgb2YgdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFRfQUREUihjdHgpIHsgXAorICAgIFB5T2JqZWN0ICpfY190X3hfb19iX2ogPSBjdXJyZW50X2NvbnRleHQoKTsgXAorICAgIGlmIChfY190X3hfb19iX2ogPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN0eCA9IENUWChfY190X3hfb19iX2opOyAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19HZXRDdXJyZW50Q29udGV4dChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIGNvbnRleHQgPSBjdXJyZW50X2NvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRihjb250ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworLyogU2V0IHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dCB0byBhIG5ldyBjb250ZXh0LCBkZWNyZW1lbnQgb2xkIHJlZmVyZW5jZSAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1NldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKmRpY3Q7CisKKyAgICBDT05URVhUX0NIRUNLKHYpOworCisgICAgZGljdCA9IFB5VGhyZWFkU3RhdGVfR2V0RGljdCgpOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgZ2V0IHRocmVhZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBJZiB0aGUgbmV3IGNvbnRleHQgaXMgb25lIG9mIHRoZSB0ZW1wbGF0ZXMsIG1ha2UgYSBjb3B5LgorICAgICAqIFRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgZGVjaW1hbC5weS4gKi8KKyAgICBpZiAodiA9PSBkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBiYXNpY19jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSkgeworICAgICAgICB2ID0gY29udGV4dF9jb3B5KHYsIE5VTEwpOworICAgICAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBDVFgodiktPnN0YXR1cyA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgfQorCisgICAgY2FjaGVkX2NvbnRleHQgPSBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWN0LCB0bHNfY29udGV4dF9rZXksIHYpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCisvKiBDb250ZXh0IG1hbmFnZXIgb2JqZWN0IGZvciB0aGUgJ3dpdGgnIHN0YXRlbWVudC4gVGhlIG1hbmFnZXIKKyAqIG93bnMgb25lIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIChvdXRlcikgY29udGV4dCBhbmQgb25lCisgKiB0byB0aGUgbG9jYWwgKGlubmVyKSBjb250ZXh0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N0eG1hbmFnZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSBVTlVTRUQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImN0eCIsIE5VTEx9OworICAgIFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGY7CisgICAgUHlPYmplY3QgKmxvY2FsID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZ2xvYmFsOworCisgICAgQ1VSUkVOVF9DT05URVhUKGdsb2JhbCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LCAmbG9jYWwpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobG9jYWwgPT0gUHlfTm9uZSkgeworICAgICAgICBsb2NhbCA9IGdsb2JhbDsKKyAgICB9CisgICAgZWxzZSBpZiAoIVB5RGVjQ29udGV4dF9DaGVjayhsb2NhbCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJvcHRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgY29udGV4dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAmUHlEZWNDb250ZXh0TWFuYWdlcl9UeXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYtPmxvY2FsID0gY29udGV4dF9jb3B5KGxvY2FsLCBOVUxMKTsKKyAgICBpZiAoc2VsZi0+bG9jYWwgPT0gTlVMTCkgeworICAgICAgICBzZWxmLT5nbG9iYWwgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWxmLT5nbG9iYWwgPSBnbG9iYWw7CisgICAgUHlfSU5DUkVGKHNlbGYtPmdsb2JhbCk7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKK30KKworc3RhdGljIHZvaWQKK2N0eG1hbmFnZXJfZGVhbGxvYyhQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0ICpzZWxmKQoreworICAgIFB5X1hERUNSRUYoc2VsZi0+bG9jYWwpOworICAgIFB5X1hERUNSRUYoc2VsZi0+Z2xvYmFsKTsKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhtYW5hZ2VyX3NldF9sb2NhbChQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIHJldCA9IFB5RGVjX1NldEN1cnJlbnRDb250ZXh0KE5VTEwsIHNlbGYtPmxvY2FsKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXQpOworCisgICAgUHlfSU5DUkVGKHNlbGYtPmxvY2FsKTsKKyAgICByZXR1cm4gc2VsZi0+bG9jYWw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhtYW5hZ2VyX3Jlc3RvcmVfZ2xvYmFsKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmV0OworCisgICAgcmV0ID0gUHlEZWNfU2V0Q3VycmVudENvbnRleHQoTlVMTCwgc2VsZi0+Z2xvYmFsKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXQpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGN0eG1hbmFnZXJfbWV0aG9kc1tdID0geworICB7Il9fZW50ZXJfXyIsIChQeUNGdW5jdGlvbiljdHhtYW5hZ2VyX3NldF9sb2NhbCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKWN0eG1hbmFnZXJfcmVzdG9yZV9nbG9iYWwsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUgPQoreworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJkZWNpbWFsLkNvbnRleHRNYW5hZ2VyIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QpLCAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKSBjdHhtYW5hZ2VyX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgKGdldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAoc2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAoUHlCdWZmZXJQcm9jcyAqKSAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY3R4bWFuYWdlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IERlY2ltYWwgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX05ldyhQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgUHlEZWNPYmplY3QgKmRlYzsKKworICAgIGlmICh0eXBlID09ICZQeURlY19UeXBlKSB7CisgICAgICAgIGRlYyA9IFB5T2JqZWN0X05ldyhQeURlY09iamVjdCwgJlB5RGVjX1R5cGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGVjID0gKFB5RGVjT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgfQorICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMtPmhhc2ggPSAtMTsKKworICAgIE1QRChkZWMpLT5mbGFncyA9IE1QRF9TVEFUSUN8TVBEX1NUQVRJQ19EQVRBOworICAgIE1QRChkZWMpLT5leHAgPSAwOworICAgIE1QRChkZWMpLT5kaWdpdHMgPSAwOworICAgIE1QRChkZWMpLT5sZW4gPSAwOworICAgIE1QRChkZWMpLT5hbGxvYyA9IF9QeV9ERUNfTUlOQUxMT0M7CisgICAgTVBEKGRlYyktPmRhdGEgPSBkZWMtPmRhdGE7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVjOworfQorI2RlZmluZSBkZWNfYWxsb2MoKSBQeURlY1R5cGVfTmV3KCZQeURlY19UeXBlKQorCitzdGF0aWMgdm9pZAorZGVjX2RlYWxsb2MoUHlPYmplY3QgKmRlYykKK3sKKyAgICBtcGRfZGVsKE1QRChkZWMpKTsKKyAgICBQeV9UWVBFKGRlYyktPnRwX2ZyZWUoZGVjKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9ucyB0byBEZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitpc19zcGFjZShlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgcG9zKQoreworICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOworICAgIHJldHVybiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpOworfQorCisvKiBSZXR1cm4gdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtZXJpYyBVbmljb2RlIHN0cmluZy4gVGhlIG51bWVyaWMKKyAgIHN0cmluZyBtYXkgY29udGFpbiBhc2NpaSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbMSwgMTI3XSwgYW55IFVuaWNvZGUKKyAgIHNwYWNlIGFuZCBhbnkgdW5pY29kZSBkaWdpdC4gSWYgc3RyaXBfd3MgaXMgdHJ1ZSwgbGVhZGluZyBhbmQgdHJhaWxpbmcKKyAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuCisKKyAgIFJldHVybiBOVUxMIGlmIG1hbGxvYyBmYWlscyBhbmQgYW4gZW1wdHkgc3RyaW5nIGlmIGludmFsaWQgY2hhcmFjdGVycworICAgYXJlIGZvdW5kLiAqLworc3RhdGljIGNoYXIgKgorbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgY2g7CisgICAgY2hhciAqcmVzLCAqY3A7CisgICAgUHlfc3NpemVfdCBqLCBsZW47CisgICAgaW50IGQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHUpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgbGVuID0gIFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOworCisgICAgY3AgPSByZXMgPSBQeU1lbV9NYWxsb2MobGVuKzEpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBqID0gMDsKKyAgICBpZiAoc3RyaXBfd3MpIHsKKyAgICAgICAgd2hpbGUgKGxlbiA+IDAgJiYgaXNfc3BhY2Uoa2luZCwgZGF0YSwgbGVuLTEpKSB7CisgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaiA8IGxlbiAmJiBpc19zcGFjZShraW5kLCBkYXRhLCBqKSkgeworICAgICAgICAgICAgaisrOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yICg7IGogPCBsZW47IGorKykgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopOworICAgICAgICBpZiAoMCA8IGNoICYmIGNoIDw9IDEyNykgeworICAgICAgICAgICAgKmNwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcgJzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGQgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CisgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgLyogZW1wdHkgc3RyaW5nIHRyaWdnZXJzIENvbnZlcnNpb25TeW50YXggKi8KKyAgICAgICAgICAgICpyZXMgPSAnXDAnOworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgICAgICAqY3ArKyA9ICcwJyArIGQ7CisgICAgfQorICAgICpjcCA9ICdcMCc7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgQyBzdHJpbmcuIFVzZSB0aGUgY29udGV4dAorICAgZHVyaW5nIGNvbnZlcnNpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21DU3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcXNldF9zdHJpbmcoTVBEKGRlYyksIHMsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIEMgc3RyaW5nLiBBdHRlbXB0IGV4YWN0CisgICBjb252ZXJzaW9uLiBJZiB0aGUgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHksIHNldAorICAgSW52YWxpZE9wZXJhdGlvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKworICAgIG1wZF9xc2V0X3N0cmluZyhNUEQoZGVjKSwgcywgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgLyogd2Ugd2FudCBleGFjdCByZXN1bHRzICovCisgICAgICAgIG1wZF9zZXRlcnJvcihNUEQoZGVjKSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCAmc3RhdHVzKTsKKyAgICB9CisgICAgc3RhdHVzICY9IE1QRF9FcnJvcnM7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgUHlVbmljb2RlT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tVW5pY29kZShQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICp1LAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDApOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21DU3RyaW5nKHR5cGUsIHMsIGNvbnRleHQpOworICAgIFB5TWVtX0ZyZWUocyk7CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgUHlVbmljb2RlT2JqZWN0LiBBdHRlbXB0IGV4YWN0CisgKiBjb252ZXJzaW9uLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgZXhhY3QsIGZhaWwgd2l0aCBJbnZhbGlkT3BlcmF0aW9uLgorICogQWxsb3cgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpbiB0aGUgaW5wdXQgb3BlcmFuZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdFdTKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDEpOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21DU3RyaW5nRXhhY3QodHlwZSwgcywgY29udGV4dCk7CisgICAgUHlNZW1fRnJlZShzKTsKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBTZXQgUHlEZWNPYmplY3QgZnJvbSB0cmlwbGUgd2l0aG91dCBhbnkgZXJyb3IgY2hlY2tpbmcuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK19kZWNfc2V0dHJpcGxlKFB5T2JqZWN0ICpkZWMsIHVpbnQ4X3Qgc2lnbiwgdWludDMyX3QgdiwgbXBkX3NzaXplX3QgZXhwKQoreworCisjaWZkZWYgQ09ORklHXzY0CisgICAgTVBEKGRlYyktPmRhdGFbMF0gPSB2OworICAgIE1QRChkZWMpLT5sZW4gPSAxOworI2Vsc2UKKyAgICB1aW50MzJfdCBxLCByOworICAgIHEgPSB2IC8gTVBEX1JBRElYOworICAgIHIgPSB2IC0gcSAqIE1QRF9SQURJWDsKKyAgICBNUEQoZGVjKS0+ZGF0YVsxXSA9IHE7CisgICAgTVBEKGRlYyktPmRhdGFbMF0gPSByOworICAgIE1QRChkZWMpLT5sZW4gPSBxID8gMiA6IDE7CisjZW5kaWYKKyAgICBtcGRfc2V0X2ZsYWdzKE1QRChkZWMpLCBzaWduKTsKKyAgICBNUEQoZGVjKS0+ZXhwID0gZXhwOworICAgIG1wZF9zZXRkaWdpdHMoTVBEKGRlYykpOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QgZnJvbSBhbiBtcGRfc3NpemVfdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVNzaXplKFB5VHlwZU9iamVjdCAqdHlwZSwgbXBkX3NzaXplX3QgdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FzZXRfc3NpemUoTVBEKGRlYyksIHYsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGFuIG1wZF9zc2l6ZV90LiBDb252ZXJzaW9uIGlzIGV4YWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tU3NpemVFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIG1wZF9zc2l6ZV90IHYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworCisgICAgbXBkX3FzZXRfc3NpemUoTVBEKGRlYyksIHYsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gZGVjOworfQorCisvKiBDb252ZXJ0IGZyb20gYSBQeUxvbmdPYmplY3QuIFRoZSBjb250ZXh0IGlzIG5vdCBtb2RpZmllZDsgZmxhZ3Mgc2V0CisgICBkdXJpbmcgY29udmVyc2lvbiBhcmUgYWNjdW11bGF0ZWQgaW4gdGhlIHN0YXR1cyBwYXJhbWV0ZXIuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Zyb21fbG9uZyhQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBQeUxvbmdPYmplY3QgKmwgPSAoUHlMb25nT2JqZWN0ICopdjsKKyAgICBQeV9zc2l6ZV90IG9iX3NpemU7CisgICAgc2l6ZV90IGxlbjsKKyAgICB1aW50OF90IHNpZ247CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvYl9zaXplID0gUHlfU0laRShsKTsKKyAgICBpZiAob2Jfc2l6ZSA9PSAwKSB7CisgICAgICAgIF9kZWNfc2V0dHJpcGxlKGRlYywgTVBEX1BPUywgMCwgMCk7CisgICAgICAgIHJldHVybiBkZWM7CisgICAgfQorCisgICAgaWYgKG9iX3NpemUgPCAwKSB7CisgICAgICAgIGxlbiA9IC1vYl9zaXplOworICAgICAgICBzaWduID0gTVBEX05FRzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxlbiA9IG9iX3NpemU7CisgICAgICAgIHNpZ24gPSBNUERfUE9TOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBfZGVjX3NldHRyaXBsZShkZWMsIHNpZ24sICpsLT5vYl9kaWdpdCwgMCk7CisgICAgICAgIG1wZF9xZmluYWxpemUoTVBEKGRlYyksIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIGRlYzsKKyAgICB9CisKKyNpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAzMAorICAgIG1wZF9xaW1wb3J0X3UzMihNUEQoZGVjKSwgbC0+b2JfZGlnaXQsIGxlbiwgc2lnbiwgUHlMb25nX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIGN0eCwgc3RhdHVzKTsKKyNlbGlmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDE1CisgICAgbXBkX3FpbXBvcnRfdTE2KE1QRChkZWMpLCBsLT5vYl9kaWdpdCwgbGVuLCBzaWduLCBQeUxvbmdfQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgI2Vycm9yICJQWUxPTkdfQklUU19JTl9ESUdJVCBzaG91bGQgYmUgMTUgb3IgMzAiCisjZW5kaWYKKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGEgUHlMb25nT2JqZWN0LiBVc2UgdGhlIGNvbnRleHQgZm9yCisgICBjb252ZXJzaW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tTG9uZyhQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICpweWxvbmcsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gZGVjX2Zyb21fbG9uZyh0eXBlLCBweWxvbmcsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGEgUHlMb25nT2JqZWN0LiBVc2UgYSBtYXhpbXVtIGNvbnRleHQKKyAgIGZvciBjb252ZXJzaW9uLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgZXhhY3QsIHNldCBJbnZhbGlkT3BlcmF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnB5bG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworICAgIGRlYyA9IGRlY19mcm9tX2xvbmcodHlwZSwgcHlsb25nLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgLyogd2Ugd2FudCBleGFjdCByZXN1bHRzICovCisgICAgICAgIG1wZF9zZXRlcnJvcihNUEQoZGVjKSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCAmc3RhdHVzKTsKKyAgICB9CisgICAgc3RhdHVzICY9IE1QRF9FcnJvcnM7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBQeUZsb2F0T2JqZWN0LgorICAgQ29udmVyc2lvbiBpcyBleGFjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjLCAqdG1wOworICAgIFB5T2JqZWN0ICpuLCAqZCwgKm5fZDsKKyAgICBtcGRfc3NpemVfdCBrOworICAgIGRvdWJsZSB4OworICAgIGludCBzaWduOworICAgIG1wZF90ICpkMSwgKmQyOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisKKworICAgIGFzc2VydChQeVR5cGVfSXNTdWJ0eXBlKHR5cGUsICZQeURlY19UeXBlKSk7CisKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbUxvbmdFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKKyAgICB9CisgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBpbnQgb2YgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gMS4wKSA/IDAgOiAxOworCisgICAgaWYgKFB5X0lTX05BTih4KSB8fCBQeV9JU19JTkZJTklUWSh4KSkgeworICAgICAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgICAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeV9JU19OQU4oeCkpIHsKKyAgICAgICAgICAgIC8qIGRlY2ltYWwucHkgY2FsbHMgcmVwcihmbG9hdCgrLW5hbikpLAorICAgICAgICAgICAgICogd2hpY2ggYWx3YXlzIGdpdmVzIGEgcG9zaXRpdmUgcmVzdWx0LiAqLworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoTVBEKGRlYyksIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoTVBEKGRlYyksIHNpZ24sIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkZWM7CisgICAgfQorCisgICAgLyogYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGZsb2F0ICovCisgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh2LCAiX19hYnNfXyIsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBmbG9hdCBhcyBpbnRlZ2VyIHJhdGlvOiBudW1lcmF0b3IvZGVub21pbmF0b3IgKi8KKyAgICBuX2QgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRtcCwgImFzX2ludGVnZXJfcmF0aW8iLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAobl9kID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG4gPSBQeVR1cGxlX0dFVF9JVEVNKG5fZCwgMCk7CisgICAgZCA9IFB5VHVwbGVfR0VUX0lURU0obl9kLCAxKTsKKworICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZCwgImJpdF9sZW5ndGgiLCBOVUxMKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5fZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChrID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG5fZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrLS07CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUxvbmdFeGFjdCh0eXBlLCBuLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYobl9kKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZDEgPSBtcGRfcW5ldygpOworICAgIGlmIChkMSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZDIgPSBtcGRfcW5ldygpOworICAgIGlmIChkMiA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9kZWwoZDEpOworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgbXBkX3FzZXRfdWludChkMSwgNSwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgbXBkX3FzZXRfc3NpemUoZDIsIGssICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9xcG93KGQxLCBkMSwgZDIsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX2RlbChkMSk7CisgICAgICAgIG1wZF9kZWwoZDIpOworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogcmVzdWx0ID0gbiAqIDUqKmsgKi8KKyAgICBtcGRfcW11bChNUEQoZGVjKSwgTVBEKGRlYyksIGQxLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBtcGRfZGVsKGQxKTsKKyAgICBtcGRfZGVsKGQyKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogcmVzdWx0ID0gKy0gbiAqIDUqKmsgKiAxMCoqLWsgKi8KKyAgICBtcGRfc2V0X3NpZ24oTVBEKGRlYyksIHNpZ24pOworICAgIE1QRChkZWMpLT5leHAgPSAtazsKKworICAgIHJldHVybiBkZWM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUZsb2F0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tRmxvYXRFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShNUEQoZGVjKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBEZWNpbWFsLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tRGVjaW1hbEV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICh0eXBlID09ICZQeURlY19UeXBlICYmIFB5RGVjX0NoZWNrRXhhY3QodikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHkoTVBEKGRlYyksIE1QRCh2KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NlcXVlbmNlX2FzX3R1cGxlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZXgsIGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2sodikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgaWYgKFB5TGlzdF9DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlMaXN0X0FzVHVwbGUodik7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKGV4LCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogUmV0dXJuIGEgbmV3IEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRGVjaW1hbFR1cGxlLiAqLworc3RhdGljIGNoYXIgKgorZGVjdHVwbGVfYXNfc3RyKFB5T2JqZWN0ICpkZWN0dXBsZSkKK3sKKyAgICBQeU9iamVjdCAqZGlnaXRzID0gTlVMTCwgKnRtcDsKKyAgICBjaGFyICpkZWNzdHJpbmcgPSBOVUxMOworICAgIGNoYXIgc2lnbl9zcGVjaWFsWzZdOworICAgIGNoYXIgKmNwOworICAgIGxvbmcgc2lnbiwgbDsKKyAgICBtcGRfc3NpemVfdCBleHAgPSAwOworICAgIFB5X3NzaXplX3QgaSwgbWVtLCB0c2l6ZTsKKyAgICBpbnQgaXNfaW5maW5pdGUgPSAwOworICAgIGludCBuOworCisgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soZGVjdHVwbGUpKTsKKworICAgIGlmIChQeVR1cGxlX1NpemUoZGVjdHVwbGUpICE9IDMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGxlbmd0aCAzIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogc2lnbiAqLworICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oZGVjdHVwbGUsIDApOworICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic2lnbiBtdXN0IGJlIGFuIGludGVnZXIgd2l0aCB0aGUgdmFsdWUgMCBvciAxIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNpZ24gPSBQeUxvbmdfQXNMb25nKHRtcCk7CisgICAgaWYgKHNpZ24gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoc2lnbiAhPSAwICYmIHNpZ24gIT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJzaWduIG11c3QgYmUgYW4gaW50ZWdlciB3aXRoIHRoZSB2YWx1ZSAwIG9yIDEiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2lnbl9zcGVjaWFsWzBdID0gc2lnbiA/ICctJyA6ICcrJzsKKyAgICBzaWduX3NwZWNpYWxbMV0gPSAnXDAnOworCisgICAgLyogZXhwb25lbnQgb3IgZW5jb2RpbmcgZm9yIGEgc3BlY2lhbCBudW1iZXIgKi8KKyAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKGRlY3R1cGxlLCAyKTsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgLyogc3BlY2lhbCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodG1wLCAiRiIpID09IDApIHsKKyAgICAgICAgICAgIHN0cmNhdChzaWduX3NwZWNpYWwsICJJbmYiKTsKKyAgICAgICAgICAgIGlzX2luZmluaXRlID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh0bXAsICJuIikgPT0gMCkgeworICAgICAgICAgICAgc3RyY2F0KHNpZ25fc3BlY2lhbCwgIk5hTiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIk4iKSA9PSAwKSB7CisgICAgICAgICAgICBzdHJjYXQoc2lnbl9zcGVjaWFsLCAic05hTiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgInN0cmluZyBhcmd1bWVudCBpbiB0aGUgdGhpcmQgcG9zaXRpb24gIgorICAgICAgICAgICAgICAgICJtdXN0IGJlICdGJywgJ24nIG9yICdOJyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogZXhwb25lbnQgKi8KKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImV4cG9uZW50IG11c3QgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBleHAgPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgICAgIGlmIChleHAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGNvZWZmaWNpZW50ICovCisgICAgZGlnaXRzID0gc2VxdWVuY2VfYXNfdHVwbGUoUHlUdXBsZV9HRVRfSVRFTShkZWN0dXBsZSwgMSksIFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvZWZmaWNpZW50IG11c3QgYmUgYSB0dXBsZSBvZiBkaWdpdHMiKTsKKyAgICBpZiAoZGlnaXRzID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB0c2l6ZSA9IFB5VHVwbGVfU2l6ZShkaWdpdHMpOworICAgIC8qIFtzaWduXVtjb2VmZmRpZ2l0cysxXVtFXVstXVtleHBkaWdpdHMrMV1bJ1wwJ10gKi8KKyAgICBtZW0gPSAxICsgdHNpemUgKyAzICsgTVBEX0VYUERJR0lUUyArIDI7CisgICAgY3AgPSBkZWNzdHJpbmcgPSBQeU1lbV9NYWxsb2MobWVtKTsKKyAgICBpZiAoZGVjc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBuID0gc25wcmludGYoY3AsIG1lbSwgIiVzIiwgc2lnbl9zcGVjaWFsKTsKKyAgICBpZiAobiA8IDAgfHwgbiA+PSBtZW0pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBkZWNfc2VxdWVuY2VfYXNfc3RyIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGNwICs9IG47CisKKyAgICBpZiAodHNpemUgPT0gMCAmJiBzaWduX3NwZWNpYWxbMV0gPT0gJ1wwJykgeworICAgICAgICAvKiBlbXB0eSB0dXBsZTogemVybyBjb2VmZmljaWVudCwgZXhjZXB0IGZvciBzcGVjaWFsIG51bWJlcnMgKi8KKyAgICAgICAgKmNwKysgPSAnMCc7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCB0c2l6ZTsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oZGlnaXRzLCBpKTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNvZWZmaWNpZW50IG11c3QgYmUgYSB0dXBsZSBvZiBkaWdpdHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbCA9IFB5TG9uZ19Bc0xvbmcodG1wKTsKKyAgICAgICAgaWYgKGwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobCA8IDAgfHwgbCA+IDkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjb2VmZmljaWVudCBtdXN0IGJlIGEgdHVwbGUgb2YgZGlnaXRzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChpc19pbmZpbml0ZSkgeworICAgICAgICAgICAgLyogYWNjZXB0IGJ1dCBpZ25vcmUgYW55IHdlbGwtZm9ybWVkIGNvZWZmaWNpZW50IGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICB3aXRoIGRlY2ltYWwucHkgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgICpjcCsrID0gKGNoYXIpbCArICcwJzsKKyAgICB9CisgICAgKmNwID0gJ1wwJzsKKworICAgIGlmIChzaWduX3NwZWNpYWxbMV0gPT0gJ1wwJykgeworICAgICAgICAvKiBub3QgYSBzcGVjaWFsIG51bWJlciAqLworICAgICAgICAqY3ArKyA9ICdFJzsKKyAgICAgICAgbiA9IHNucHJpbnRmKGNwLCBNUERfRVhQRElHSVRTKzIsICIlIiBQUklfbXBkX3NzaXplX3QsIGV4cCk7CisgICAgICAgIGlmIChuIDwgMCB8fCBuID49IE1QRF9FWFBESUdJVFMrMikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gZGVjX3NlcXVlbmNlX2FzX3N0ciIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X1hERUNSRUYoZGlnaXRzKTsKKyAgICByZXR1cm4gZGVjc3RyaW5nOworCisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZGlnaXRzKTsKKyAgICBpZiAoZGVjc3RyaW5nKSBQeU1lbV9GcmVlKGRlY3N0cmluZyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEN1cnJlbnRseSBhY2NlcHRzIHR1cGxlcyBhbmQgbGlzdHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjdHVwbGU7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBjaGFyICpzOworCisgICAgZGVjdHVwbGUgPSBzZXF1ZW5jZV9hc190dXBsZSh2LCBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICBpZiAoZGVjdHVwbGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzID0gZGVjdHVwbGVfYXNfc3RyKGRlY3R1cGxlKTsKKyAgICBQeV9ERUNSRUYoZGVjdHVwbGUpOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21DU3RyaW5nKHR5cGUsIHMsIGNvbnRleHQpOworCisgICAgUHlNZW1fRnJlZShzKTsKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBDdXJyZW50bHkgYWNjZXB0cyB0dXBsZXMgYW5kIGxpc3RzLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tU2VxdWVuY2VFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWN0dXBsZTsKKyAgICBQeU9iamVjdCAqZGVjOworICAgIGNoYXIgKnM7CisKKyAgICBkZWN0dXBsZSA9IHNlcXVlbmNlX2FzX3R1cGxlKHYsIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICBpZiAoZGVjdHVwbGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzID0gZGVjdHVwbGVfYXNfc3RyKGRlY3R1cGxlKTsKKyAgICBQeV9ERUNSRUYoZGVjdHVwbGUpOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21DU3RyaW5nRXhhY3QodHlwZSwgcywgY29udGV4dCk7CisKKyAgICBQeU1lbV9GcmVlKHMpOworICAgIHJldHVybiBkZWM7Cit9CisKKyNkZWZpbmUgUHlEZWNfRnJvbUNTdHJpbmcoc3RyLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tQ1N0cmluZygmUHlEZWNfVHlwZSwgc3RyLCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tQ1N0cmluZ0V4YWN0KHN0ciwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdCgmUHlEZWNfVHlwZSwgc3RyLCBjb250ZXh0KQorCisjZGVmaW5lIFB5RGVjX0Zyb21Vbmljb2RlKHVuaWNvZGUsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Vbmljb2RlKCZQeURlY19UeXBlLCB1bmljb2RlLCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tVW5pY29kZUV4YWN0KHVuaWNvZGUsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Vbmljb2RlRXhhY3QoJlB5RGVjX1R5cGUsIHVuaWNvZGUsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21Vbmljb2RlRXhhY3RXUyh1bmljb2RlLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tVW5pY29kZUV4YWN0V1MoJlB5RGVjX1R5cGUsIHVuaWNvZGUsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbVNzaXplKHYsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Tc2l6ZSgmUHlEZWNfVHlwZSwgdiwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbVNzaXplRXhhY3QodiwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVNzaXplRXhhY3QoJlB5RGVjX1R5cGUsIHYsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbUxvbmcocHlsb25nLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tTG9uZygmUHlEZWNfVHlwZSwgcHlsb25nLCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tTG9uZ0V4YWN0KHB5bG9uZywgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUxvbmdFeGFjdCgmUHlEZWNfVHlwZSwgcHlsb25nLCBjb250ZXh0KQorCisjZGVmaW5lIFB5RGVjX0Zyb21GbG9hdChweWZsb2F0LCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tRmxvYXQoJlB5RGVjX1R5cGUsIHB5ZmxvYXQsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21GbG9hdEV4YWN0KHB5ZmxvYXQsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KCZQeURlY19UeXBlLCBweWZsb2F0LCBjb250ZXh0KQorCisjZGVmaW5lIFB5RGVjX0Zyb21TZXF1ZW5jZShzZXF1ZW5jZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVNlcXVlbmNlKCZQeURlY19UeXBlLCBzZXF1ZW5jZSwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbVNlcXVlbmNlRXhhY3Qoc2VxdWVuY2UsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZUV4YWN0KCZQeURlY19UeXBlLCBzZXF1ZW5jZSwgY29udGV4dCkKKworLyogY2xhc3MgbWV0aG9kICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Zyb21fZmxvYXQoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKnB5ZmxvYXQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tRmxvYXRFeGFjdCgoUHlUeXBlT2JqZWN0ICopZGVjLCBweWZsb2F0LCBjb250ZXh0KTsKK30KKworLyogY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9mcm9tX2Zsb2F0KFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICByZXR1cm4gUHlEZWNfRnJvbUZsb2F0KHYsIGNvbnRleHQpOworfQorCisvKiBBcHBseSB0aGUgY29udGV4dCB0byB0aGUgaW5wdXQgb3BlcmFuZC4gUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19hcHBseShQeU9iamVjdCAqdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weShNUEQocmVzdWx0KSwgTVBEKHYpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKE1QRChyZXN1bHQpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qICd2JyBjYW4gaGF2ZSBhbnkgdHlwZSBhY2NlcHRlZCBieSB0aGUgRGVjaW1hbCBjb25zdHJ1Y3Rvci4gQXR0ZW1wdAorICAgYW4gZXhhY3QgY29udmVyc2lvbi4gSWYgdGhlIHJlc3VsdCBkb2VzIG5vdCBtZWV0IHRoZSByZXN0cmljdGlvbnMKKyAgIGZvciBhbiBtcGRfdCwgZmFpbCB3aXRoIEludmFsaWRPcGVyYXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21PYmplY3RFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbVNzaXplRXhhY3QodHlwZSwgMCwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RGVjX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbURlY2ltYWxFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdFdTKHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHYpIHx8IFB5TGlzdF9DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZUV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CisgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIE1QRF9GbG9hdF9vcGVyYXRpb24pKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb252ZXJzaW9uIGZyb20gJXMgdG8gRGVjaW1hbCBpcyBub3Qgc3VwcG9ydGVkIiwKKyAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIFRoZSBjb250ZXh0IGlzIHVzZWQgZHVyaW5nIGNvbnZlcnNpb24uIFRoaXMgZnVuY3Rpb24gaXMgdGhlCisgICBlcXVpdmFsZW50IG9mIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeURlY19Gcm9tU3NpemUoMCwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RGVjX0NoZWNrKHYpKSB7CisgICAgICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChjb250ZXh0KTsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQodikpICYmCisgICAgICAgICAgICBNUEQodiktPmRpZ2l0cyA+IGN0eC0+cHJlYyAtIGN0eC0+Y2xhbXApIHsKKyAgICAgICAgICAgIC8qIFNwZWNpYWwgY2FzZTogdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzICovCisgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICAgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgTVBEX0NvbnZlcnNpb25fc3ludGF4KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKE1QRChyZXN1bHQpLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlY19hcHBseSh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY19Gcm9tVW5pY29kZSh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY19Gcm9tTG9uZyh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2KSB8fCBQeUxpc3RfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21TZXF1ZW5jZSh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlGbG9hdF9DaGVjayh2KSkgeworICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBNUERfRmxvYXRfb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21GbG9hdCh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29udmVyc2lvbiBmcm9tICVzIHRvIERlY2ltYWwgaXMgbm90IHN1cHBvcnRlZCIsCisgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InZhbHVlIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPTyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tT2JqZWN0RXhhY3QodHlwZSwgdiwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfY3JlYXRlX2RlY2ltYWwoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmdikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5RGVjX0Zyb21PYmplY3QodiwgY29udGV4dCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgSW1wbGljaXQgY29udmVyc2lvbnMgdG8gRGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUcnkgdG8gY29udmVydCBQeU9iamVjdCB2IHRvIGEgbmV3IFB5RGVjT2JqZWN0IGNvbnYuIElmIHRoZSBjb252ZXJzaW9uCisgICBmYWlscywgc2V0IGNvbnYgdG8gTlVMTCAoZXhjZXB0aW9uIGlzIHNldCkuIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdAorICAgaW1wbGVtZW50ZWQsIHNldCBjb252IHRvIFB5X05vdEltcGxlbWVudGVkLiAqLworI2RlZmluZSBOT1RfSU1QTCAwCisjZGVmaW5lIFRZUEVfRVJSIDEKK1B5X0xPQ0FMX0lOTElORShpbnQpCitjb252ZXJ0X29wKGludCB0eXBlX2VyciwgUHlPYmplY3QgKipjb252LCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisKKyAgICBpZiAoUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgKmNvbnYgPSB2OworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgICpjb252ID0gUHlEZWNfRnJvbUxvbmdFeGFjdCh2LCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCpjb252ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICh0eXBlX2VycikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNvbnZlcnNpb24gZnJvbSAlcyB0byBEZWNpbWFsIGlzIG5vdCBzdXBwb3J0ZWQiLAorICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICAqY29udiA9IFB5X05vdEltcGxlbWVudGVkOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogUmV0dXJuIE5vdEltcGxlbWVudGVkIGZvciB1bnN1cHBvcnRlZCB0eXBlcy4gKi8KKyNkZWZpbmUgQ09OVkVSVF9PUChhLCB2LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBhLCB2LCBjb250ZXh0KSkgeyBcCisgICAgICAgIHJldHVybiAqKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfQklOT1AoYSwgYiwgdiwgdywgY29udGV4dCkgXAorICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgYSwgdiwgY29udGV4dCkpIHsgXAorICAgICAgICByZXR1cm4gKihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgYiwgdywgY29udGV4dCkpIHsgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDT05WRVJUX1RFUk5PUChhLCBiLCBjLCB2LCB3LCB4LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBhLCB2LCBjb250ZXh0KSkgeyAgIFwKKyAgICAgICAgcmV0dXJuICooYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBiLCB3LCBjb250ZXh0KSkgeyAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGMsIHgsIGNvbnRleHQpKSB7ICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICooYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworLyogUmFpc2UgVHlwZUVycm9yIGZvciB1bnN1cHBvcnRlZCB0eXBlcy4gKi8KKyNkZWZpbmUgQ09OVkVSVF9PUF9SQUlTRShhLCB2LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBhLCB2LCBjb250ZXh0KSkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfQklOT1BfUkFJU0UoYSwgYiwgdiwgdywgY29udGV4dCkgXAorICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgYSwgdiwgY29udGV4dCkpIHsgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgYiwgdywgY29udGV4dCkpIHsgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDT05WRVJUX1RFUk5PUF9SQUlTRShhLCBiLCBjLCB2LCB3LCB4LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBhLCB2LCBjb250ZXh0KSkgeyAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBiLCB3LCBjb250ZXh0KSkgeyAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGMsIHgsIGNvbnRleHQpKSB7ICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgIEltcGxpY2l0IGNvbnZlcnNpb25zIHRvIERlY2ltYWwgZm9yIGNvbXBhcmlzb24gICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIENvbnZlcnQgcmF0aW9uYWxzIGZvciBjb21wYXJpc29uICovCitzdGF0aWMgUHlPYmplY3QgKlJhdGlvbmFsID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCittdWx0aXBseV9ieV9kZW5vbWluYXRvcihQeU9iamVjdCAqdiwgUHlPYmplY3QgKnIsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRlbm9tID0gTlVMTDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyAgICBtcGRfdCAqdnY7CisKKyAgICAvKiB2IGlzIG5vdCBzcGVjaWFsLCByIGlzIGEgcmF0aW9uYWwgKi8KKyAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHIsICJkZW5vbWluYXRvciIpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZGVub20gPSBQeURlY19Gcm9tTG9uZ0V4YWN0KHRtcCwgY29udGV4dCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKGRlbm9tID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdnYgPSBtcGRfcW5jb3B5KE1QRCh2KSk7CisgICAgaWYgKHZ2ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlbm9tKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGVub20pOworICAgICAgICBtcGRfZGVsKHZ2KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgLyogUHJldmVudCBPdmVyZmxvdyBpbiB0aGUgZm9sbG93aW5nIG11bHRpcGxpY2F0aW9uLiBUaGUgcmVzdWx0IG9mCisgICAgICAgdGhlIG11bHRpcGxpY2F0aW9uIGlzIG9ubHkgdXNlZCBpbiBtcGRfcWNtcCwgd2hpY2ggY2FuIGhhbmRsZQorICAgICAgIHZhbHVlcyB0aGF0IGFyZSB0ZWNobmljYWxseSBvdXQgb2YgYm91bmRzLCBsaWtlIChmb3IgMzItYml0KQorICAgICAgIDk5OTk5OTk5OTk5OTk5OTk5OTk5Li4uOTk5OTk5OTllKzQyNTAwMDAwMC4gKi8KKyAgICBleHAgPSB2di0+ZXhwOworICAgIHZ2LT5leHAgPSAwOworICAgIG1wZF9xbXVsKE1QRChyZXN1bHQpLCB2diwgTVBEKGRlbm9tKSwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgTVBEKHJlc3VsdCktPmV4cCA9IGV4cDsKKworICAgIFB5X0RFQ1JFRihkZW5vbSk7CisgICAgbXBkX2RlbCh2dik7CisgICAgLyogSWYgYW55IHN0YXR1cyBoYXMgYmVlbiBhY2N1bXVsYXRlZCBkdXJpbmcgdGhlIG11bHRpcGxpY2F0aW9uLAorICAgICAgIHRoZSByZXN1bHQgaXMgaW52YWxpZC4gVGhpcyBpcyB2ZXJ5IHVubGlrZWx5LCBzaW5jZSBldmVuIHRoZQorICAgICAgIDMyLWJpdCB2ZXJzaW9uIHN1cHBvcnRzIDQyNTAwMDAwMCBkaWdpdHMuICovCisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJleGFjdCBjb252ZXJzaW9uIGZvciBjb21wYXJpc29uIGZhaWxlZCIpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK251bWVyYXRvcl9hc19kZWNpbWFsKFB5T2JqZWN0ICpyLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqdG1wLCAqbnVtOworCisgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhyLCAibnVtZXJhdG9yIik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG51bSA9IFB5RGVjX0Zyb21Mb25nRXhhY3QodG1wLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbnVtOworfQorCisvKiBDb252ZXJ0IHYgYW5kIHcgZm9yIGNvbXBhcmlzb24uIHYgaXMgYSBEZWNpbWFsLiBJZiB3IGlzIGEgUmF0aW9uYWwsIGJvdGgKKyAgIHYgYW5kIHcgaGF2ZSB0byBiZSB0cmFuc2Zvcm1lZC4gUmV0dXJuIDEgZm9yIHN1Y2Nlc3MsIHdpdGggbmV3IHJlZmVyZW5jZXMKKyAgIHRvIHRoZSBjb252ZXJ0ZWQgb2JqZWN0cyBpbiB2Y21wIGFuZCB3Y21wLiBSZXR1cm4gMCBmb3IgZmFpbHVyZS4gSW4gdGhhdAorICAgY2FzZSB3Y21wIGlzIGVpdGhlciBOVUxMIG9yIFB5X05vdEltcGxlbWVudGVkIChuZXcgcmVmZXJlbmNlKSBhbmQgdmNtcAorICAgaXMgdW5kZWZpbmVkLiAqLworc3RhdGljIGludAorY29udmVydF9vcF9jbXAoUHlPYmplY3QgKip2Y21wLCBQeU9iamVjdCAqKndjbXAsIFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywKKyAgICAgICAgICAgICAgIGludCBvcCwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKGNvbnRleHQpOworCisgICAgKnZjbXAgPSB2OworCisgICAgaWYgKFB5RGVjX0NoZWNrKHcpKSB7CisgICAgICAgIFB5X0lOQ1JFRih3KTsKKyAgICAgICAgKndjbXAgPSB3OworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodykpIHsKKyAgICAgICAgKndjbXAgPSBQeURlY19Gcm9tTG9uZ0V4YWN0KHcsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHcpKSB7CisgICAgICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSAmJgorICAgICAgICAgICAgZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBNUERfRmxvYXRfb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgKndjbXAgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY3R4LT5zdGF0dXMgfD0gTVBEX0Zsb2F0X29wZXJhdGlvbjsKKyAgICAgICAgICAgICp3Y21wID0gUHlEZWNfRnJvbUZsb2F0RXhhY3QodywgY29udGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoUHlDb21wbGV4X0NoZWNrKHcpICYmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkpIHsKKyAgICAgICAgUHlfY29tcGxleCBjID0gUHlDb21wbGV4X0FzQ0NvbXBsZXgodyk7CisgICAgICAgIGlmIChjLnJlYWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAqd2NtcCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYy5pbWFnID09IDAuMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5RmxvYXRfRnJvbURvdWJsZShjLnJlYWwpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKndjbXAgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY3R4LT5zdGF0dXMgfD0gTVBEX0Zsb2F0X29wZXJhdGlvbjsKKyAgICAgICAgICAgICAgICAqd2NtcCA9IFB5RGVjX0Zyb21GbG9hdEV4YWN0KHRtcCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICAgICAgKndjbXAgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKHcsIFJhdGlvbmFsKSkgeworICAgICAgICAqd2NtcCA9IG51bWVyYXRvcl9hc19kZWNpbWFsKHcsIGNvbnRleHQpOworICAgICAgICBpZiAoKndjbXAgJiYgIW1wZF9pc3NwZWNpYWwoTVBEKHYpKSkgeworICAgICAgICAgICAgKnZjbXAgPSBtdWx0aXBseV9ieV9kZW5vbWluYXRvcih2LCB3LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmICgqdmNtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoKndjbXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICAqd2NtcCA9IFB5X05vdEltcGxlbWVudGVkOworICAgIH0KKworICAgIGlmICgqd2NtcCA9PSBOVUxMIHx8ICp3Y21wID09IFB5X05vdEltcGxlbWVudGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoKnZjbXAgPT0gdikgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCisjZGVmaW5lIENPTlZFUlRfQklOT1BfQ01QKHZjbXAsIHdjbXAsIHYsIHcsIG9wLCBjdHgpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3BfY21wKHZjbXAsIHdjbXAsIHYsIHcsIG9wLCBjdHgpKSB7ICBcCisgICAgICAgIHJldHVybiAqKHdjbXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25zIGZyb20gZGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2Zyb21hc2NpaShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtY3B5KFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyksIHMsIHNpemUpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIFB5RGVjT2JqZWN0IGFzIGEgc3RyaW5nLiBUaGUgZGVmYXVsdCBtb2R1bGUgY29udGV4dCBpcyBvbmx5IHVzZWQgZm9yCisgICB0aGUgdmFsdWUgb2YgJ2NhcGl0YWxzJy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfc3RyKFB5T2JqZWN0ICpkZWMpCit7CisgICAgUHlPYmplY3QgKnJlcywgKmNvbnRleHQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpjcDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBzaXplID0gbXBkX3RvX3NjaV9zaXplKCZjcCwgTVBEKGRlYyksIEN0eENhcHMoY29udGV4dCkpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSB1bmljb2RlX2Zyb21hc2NpaShjcCwgc2l6ZSk7CisgICAgbXBkX2ZyZWUoY3ApOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIFJlcHJlc2VudGF0aW9uIG9mIGEgUHlEZWNPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3JlcHIoUHlPYmplY3QgKmRlYykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqY29udGV4dDsKKyAgICBjaGFyICpjcDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBjcCA9IG1wZF90b19zY2koTVBEKGRlYyksIEN0eENhcHMoY29udGV4dCkpOworICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJEZWNpbWFsKCclcycpIiwgY3ApOworICAgIG1wZF9mcmVlKGNwKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKiBDb252ZXJ0IGRlY2ltYWxfcG9pbnQgb3IgdGhvdXNhbmRzX3NlcCwgd2hpY2ggbWF5IGJlIG11bHRpYnl0ZSBvciBpbgorICAgdGhlIHJhbmdlIFsxMjgsIDI1NV0sIHRvIGEgVVRGOCBzdHJpbmcuICovCitzdGF0aWMgUHlPYmplY3QgKgorZG90c2VwX2FzX3V0ZjgoY29uc3QgY2hhciAqcykKK3sKKyAgICBQeU9iamVjdCAqdXRmODsKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHdjaGFyX3QgYnVmWzJdOworICAgIHNpemVfdCBuOworCisgICAgbiA9IG1ic3Rvd2NzKGJ1ZiwgcywgMik7CisgICAgaWYgKG4gIT0gMSkgeyAvKiBJc3N1ZSAjNzQ0MiAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIGRlY2ltYWwgcG9pbnQgb3IgdW5zdXBwb3J0ZWQgIgorICAgICAgICAgICAgImNvbWJpbmF0aW9uIG9mIExDX0NUWVBFIGFuZCBMQ19OVU1FUklDIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1Ziwgbik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB1dGY4ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiB1dGY4OworfQorCisvKiBGb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gb2YgYSBQeURlY09iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZm9ybWF0KFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvdmVycmlkZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRvdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmdyb3VwaW5nID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm10ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm10YXJnOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIG1wZF9zcGVjX3Qgc3BlYzsKKyAgICBjaGFyICpkZWNzdHJpbmc9IE5VTEw7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBzaXplX3QgbjsKKworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPIiwgJmZtdGFyZywgJm92ZXJyaWRlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGZtdGFyZykpIHsKKyAgICAgICAgZm10ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhmbXRhcmcpOworICAgICAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImZvcm1hdCBhcmcgbXVzdCBiZSBzdHIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFtcGRfcGFyc2VfZm10X3N0cigmc3BlYywgUHlCeXRlc19BU19TVFJJTkcoZm10KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEN0eENhcHMoY29udGV4dCkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgaWYgKG92ZXJyaWRlKSB7CisgICAgICAgIC8qIFZhbHVlcyBmb3IgZGVjaW1hbF9wb2ludCwgdGhvdXNhbmRzX3NlcCBhbmQgZ3JvdXBpbmcgY2FuCisgICAgICAgICAgIGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZSBvdmVycmlkZSBkaWN0LiBUaGVzZSB2YWx1ZXMKKyAgICAgICAgICAgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIHZhbHVlcyBvYnRhaW5lZCBmcm9tIGxvY2FsZWNvbnYoKQorICAgICAgICAgICBpbiBtcGRfcGFyc2VfZm10X3N0cigpLiBUaGUgZmVhdHVyZSBpcyBub3QgZG9jdW1lbnRlZCBhbmQKKyAgICAgICAgICAgaXMgb25seSB1c2VkIGluIHRlc3RfZGVjaW1hbC4gKi8KKyAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ZlcnJpZGUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJvcHRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChkb3QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhvdmVycmlkZSwgImRlY2ltYWxfcG9pbnQiKSkpIHsKKyAgICAgICAgICAgIGlmICgoZG90ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhkb3QpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjLmRvdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGRvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChzZXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhvdmVycmlkZSwgInRob3VzYW5kc19zZXAiKSkpIHsKKyAgICAgICAgICAgIGlmICgoc2VwID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhzZXApKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjLnNlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlcCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChncm91cGluZyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG92ZXJyaWRlLCAiZ3JvdXBpbmciKSkpIHsKKyAgICAgICAgICAgIGlmICgoZ3JvdXBpbmcgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKGdyb3VwaW5nKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BlYy5ncm91cGluZyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGdyb3VwaW5nKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX3ZhbGlkYXRlX2xjb252KCZzcGVjKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIG92ZXJyaWRlIGRpY3QiKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuID0gc3RybGVuKHNwZWMuZG90KTsKKyAgICAgICAgaWYgKG4gPiAxIHx8IChuID09IDEgJiYgIWlzYXNjaWkoKHVjaGFyKXNwZWMuZG90WzBdKSkpIHsKKyAgICAgICAgICAgIC8qIGZpeCBsb2NhbGUgZGVwZW5kZW50IG5vbi1hc2NpaSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICBkb3QgPSBkb3RzZXBfYXNfdXRmOChzcGVjLmRvdCk7CisgICAgICAgICAgICBpZiAoZG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuZG90ID0gUHlCeXRlc19BU19TVFJJTkcoZG90KTsKKyAgICAgICAgfQorICAgICAgICBuID0gc3RybGVuKHNwZWMuc2VwKTsKKyAgICAgICAgaWYgKG4gPiAxIHx8IChuID09IDEgJiYgIWlzYXNjaWkoKHVjaGFyKXNwZWMuc2VwWzBdKSkpIHsKKyAgICAgICAgICAgIC8qIGZpeCBsb2NhbGUgZGVwZW5kZW50IG5vbi1hc2NpaSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICBzZXAgPSBkb3RzZXBfYXNfdXRmOChzcGVjLnNlcCk7CisgICAgICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuc2VwID0gUHlCeXRlc19BU19TVFJJTkcoc2VwKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgZGVjc3RyaW5nID0gbXBkX3Fmb3JtYXRfc3BlYyhNUEQoZGVjKSwgJnNwZWMsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIHJlc3VsdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGRlY3N0cmluZywgc3RybGVuKGRlY3N0cmluZyksIE5VTEwpOworCisKK2ZpbmlzaDoKKyAgICBQeV9YREVDUkVGKGdyb3VwaW5nKTsKKyAgICBQeV9YREVDUkVGKHNlcCk7CisgICAgUHlfWERFQ1JFRihkb3QpOworICAgIFB5X1hERUNSRUYoZm10KTsKKyAgICBpZiAoZGVjc3RyaW5nKSBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFJldHVybiBhIFB5TG9uZ09iamVjdCBmcm9tIGEgUHlEZWNPYmplY3QsIHVzaW5nIHRoZSBzcGVjaWZpZWQgcm91bmRpbmcKKyAqIG1vZGUuIFRoZSBjb250ZXh0IHByZWNpc2lvbiBpcyBub3Qgb2JzZXJ2ZWQuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FzX2xvbmcoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmNvbnRleHQsIGludCByb3VuZCkKK3sKKyAgICBQeUxvbmdPYmplY3QgKnB5bG9uZzsKKyAgICBkaWdpdCAqb2JfZGlnaXQ7CisgICAgc2l6ZV90IG47CisgICAgUHlfc3NpemVfdCBpOworICAgIG1wZF90ICp4OworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoTVBEKGRlYykpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oTVBEKGRlYykpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgd29ya2N0eC5yb3VuZCA9IHJvdW5kOworICAgIG1wZF9xcm91bmRfdG9faW50KHgsIE1QRChkZWMpLCAmd29ya2N0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfZGVsKHgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAwOworICAgIG9iX2RpZ2l0ID0gTlVMTDsKKyNpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAzMAorICAgIG4gPSBtcGRfcWV4cG9ydF91MzIoJm9iX2RpZ2l0LCAwLCBQeUxvbmdfQkFTRSwgeCwgJnN0YXR1cyk7CisjZWxpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAxNQorICAgIG4gPSBtcGRfcWV4cG9ydF91MTYoJm9iX2RpZ2l0LCAwLCBQeUxvbmdfQkFTRSwgeCwgJnN0YXR1cyk7CisjZWxzZQorICAgICNlcnJvciAiUFlMT05HX0JJVFNfSU5fRElHSVQgc2hvdWxkIGJlIDE1IG9yIDMwIgorI2VuZGlmCisKKyAgICBpZiAobiA9PSBTSVpFX01BWCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBtcGRfZGVsKHgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhc3NlcnQobiA+IDApOworICAgIHB5bG9uZyA9IF9QeUxvbmdfTmV3KG4pOworICAgIGlmIChweWxvbmcgPT0gTlVMTCkgeworICAgICAgICBtcGRfZnJlZShvYl9kaWdpdCk7CisgICAgICAgIG1wZF9kZWwoeCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbWNweShweWxvbmctPm9iX2RpZ2l0LCBvYl9kaWdpdCwgbiAqIHNpemVvZihkaWdpdCkpOworICAgIG1wZF9mcmVlKG9iX2RpZ2l0KTsKKworICAgIGkgPSBuOworICAgIHdoaWxlICgoaSA+IDApICYmIChweWxvbmctPm9iX2RpZ2l0W2ktMV0gPT0gMCkpIHsKKyAgICAgICAgaS0tOworICAgIH0KKworICAgIFB5X1NJWkUocHlsb25nKSA9IGk7CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKHgpICYmICFtcGRfaXN6ZXJvKHgpKSB7CisgICAgICAgIFB5X1NJWkUocHlsb25nKSA9IC1pOworICAgIH0KKworICAgIG1wZF9kZWwoeCk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBweWxvbmc7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Ub0ludGVncmFsVmFsdWUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicm91bmRpbmciLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJvdW5kaW5nID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IFB5X05vbmU7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3VuZGluZywgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgaWYgKHJvdW5kaW5nICE9IFB5X05vbmUpIHsKKyAgICAgICAgaW50IHJvdW5kID0gZ2V0cm91bmQocm91bmRpbmcpOworICAgICAgICBpZiAocm91bmQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xc2V0cm91bmQoJndvcmtjdHgsIHJvdW5kKSkgeworICAgICAgICAgICAgSU5URVJOQUxfRVJST1JfUFRSKCJQeURlY19Ub0ludGVncmFsVmFsdWUiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xcm91bmRfdG9faW50KE1QRChyZXN1bHQpLCBNUEQoZGVjKSwgJndvcmtjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Ub0ludGVncmFsRXhhY3QoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicm91bmRpbmciLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJvdW5kaW5nID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IFB5X05vbmU7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3VuZGluZywgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgaWYgKHJvdW5kaW5nICE9IFB5X05vbmUpIHsKKyAgICAgICAgaW50IHJvdW5kID0gZ2V0cm91bmQocm91bmRpbmcpOworICAgICAgICBpZiAocm91bmQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xc2V0cm91bmQoJndvcmtjdHgsIHJvdW5kKSkgeworICAgICAgICAgICAgSU5URVJOQUxfRVJST1JfUFRSKCJQeURlY19Ub0ludGVncmFsRXhhY3QiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xcm91bmRfdG9faW50eChNUEQocmVzdWx0KSwgTVBEKGRlYyksICZ3b3JrY3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfQXNGbG9hdChQeU9iamVjdCAqZGVjKQoreworICAgIFB5T2JqZWN0ICpmLCAqczsKKworICAgIGlmIChtcGRfaXNuYW4oTVBEKGRlYykpKSB7CisgICAgICAgIGlmIChtcGRfaXNzbmFuKE1QRChkZWMpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IHNpZ25hbGluZyBOYU4gdG8gZmxvYXQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShNUEQoZGVjKSkpIHsKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLW5hbiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJuYW4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcyA9IGRlY19zdHIoZGVjKTsKKyAgICB9CisKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGYgPSBQeUZsb2F0X0Zyb21TdHJpbmcocyk7CisgICAgUHlfREVDUkVGKHMpOworCisgICAgcmV0dXJuIGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Sb3VuZChQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp4ID0gTlVMTDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZ4KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoeCkgeworICAgICAgICBtcGRfdWludF90IGRxWzFdID0gezF9OworICAgICAgICBtcGRfdCBxID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsMCwxLDEsMSxkcX07CisgICAgICAgIG1wZF9zc2l6ZV90IHk7CisKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soeCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm9wdGlvbmFsIGFyZyBtdXN0IGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgeSA9IFB5TG9uZ19Bc1NzaXplX3QoeCk7CisgICAgICAgIGlmICh5ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcS5leHAgPSAoeSA9PSBNUERfU1NJWkVfTUlOKSA/IE1QRF9TU0laRV9NQVggOiAteTsKKyAgICAgICAgbXBkX3FxdWFudGl6ZShNUEQocmVzdWx0KSwgTVBEKGRlYyksICZxLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBkZWNfYXNfbG9uZyhkZWMsIGNvbnRleHQsIE1QRF9ST1VORF9IQUxGX0VWRU4pOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICpEZWNpbWFsVHVwbGUgPSBOVUxMOworLyogUmV0dXJuIHRoZSBEZWNpbWFsVHVwbGUgcmVwcmVzZW50YXRpb24gb2YgYSBQeURlY09iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Bc1R1cGxlKFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpZ24gPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb2VmZiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4cHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOworICAgIG1wZF90ICp4ID0gTlVMTDsKKyAgICBjaGFyICppbnRzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaW50bGVuLCBpOworCisKKyAgICB4ID0gbXBkX3FuY29weShNUEQoZGVjKSk7CisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBzaWduID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcobXBkX3NpZ24oTVBEKGRlYykpKTsKKyAgICBpZiAoc2lnbiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChtcGRfaXNpbmZpbml0ZSh4KSkgeworICAgICAgICBleHB0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkYiKTsKKyAgICAgICAgaWYgKGV4cHQgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgLyogZGVjaW1hbC5weSBoYXMgbm9uLWNvbXBsaWFudCBpbmZpbml0eSBwYXlsb2Fkcy4gKi8KKyAgICAgICAgY29lZmYgPSBQeV9CdWlsZFZhbHVlKCIoaSkiLCAwKTsKKyAgICAgICAgaWYgKGNvZWZmID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobXBkX2lzbmFuKHgpKSB7CisgICAgICAgICAgICBleHB0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobXBkX2lzcW5hbih4KT8ibiI6Ik4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGV4cHQgPSBQeUxvbmdfRnJvbVNzaXplX3QoTVBEKGRlYyktPmV4cCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cHQgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBjb2VmZmljaWVudCBpcyBkZWZpbmVkICovCisgICAgICAgIGlmICh4LT5sZW4gPiAwKSB7CisKKyAgICAgICAgICAgIC8qIG1ha2UgYW4gaW50ZWdlciAqLworICAgICAgICAgICAgeC0+ZXhwID0gMDsKKyAgICAgICAgICAgIC8qIGNsZWFyIE5hTiBhbmQgc2lnbiAqLworICAgICAgICAgICAgbXBkX2NsZWFyX2ZsYWdzKHgpOworICAgICAgICAgICAgaW50c3RyaW5nID0gbXBkX3RvX3NjaSh4LCAxKTsKKyAgICAgICAgICAgIGlmIChpbnRzdHJpbmcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGxlbiA9IHN0cmxlbihpbnRzdHJpbmcpOworICAgICAgICAgICAgY29lZmYgPSBQeVR1cGxlX05ldyhpbnRsZW4pOworICAgICAgICAgICAgaWYgKGNvZWZmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGludGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdG1wID0gUHlMb25nX0Zyb21Mb25nKGludHN0cmluZ1tpXS0nMCcpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjb2VmZiwgaSwgdG1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvZWZmID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgICAgICBpZiAoY29lZmYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhEZWNpbWFsVHVwbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduLCBjb2VmZiwgZXhwdCwgTlVMTCk7CisKK291dDoKKyAgICBpZiAoeCkgbXBkX2RlbCh4KTsKKyAgICBpZiAoaW50c3RyaW5nKSBtcGRfZnJlZShpbnRzdHJpbmcpOworICAgIFB5X1hERUNSRUYoc2lnbik7CisgICAgUHlfWERFQ1JFRihjb2VmZik7CisgICAgUHlfWERFQ1JFRihleHB0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgIE1hY3JvcyBmb3IgY29udmVydGluZyBtcGRlY2ltYWwgZnVuY3Rpb25zIHRvIERlY2ltYWwgbWV0aG9kcyAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVW5hcnkgbnVtYmVyIG1ldGhvZCB0aGF0IHVzZXMgdGhlIGRlZmF1bHQgbW9kdWxlIGNvbnRleHQuICovCisjZGVmaW5lIERlY19VbmFyeU51bWJlck1ldGhvZChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitubV8jI01QREZVTkMoUHlPYmplY3QgKnNlbGYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKHNlbGYpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJpbmFyeSBudW1iZXIgbWV0aG9kIHRoYXQgdXNlcyBkZWZhdWx0IG1vZHVsZSBjb250ZXh0LiAqLworI2RlZmluZSBEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorbm1fIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJvb2xlYW4gZnVuY3Rpb24gd2l0aG91dCBhIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfQm9vbEZ1bmMoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBNUERGVU5DKE1QRChzZWxmKSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsgXAorfQorCisvKiBCb29sZWFuIGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgY29udGV4dCBhcmcuICovCisjZGVmaW5lIERlY19Cb29sRnVuY1ZBKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbnRleHQiLCBOVUxMfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gTVBERlVOQyhNUEQoc2VsZiksIENUWChjb250ZXh0KSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsgXAorfQorCisvKiBVbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfVW5hcnlGdW5jVkEoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OyAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0KSkgeyAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChzZWxmKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBCaW5hcnkgZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gKi8KKyNkZWZpbmUgRGVjX0JpbmFyeUZ1bmNWQShNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqb3RoZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IFB5X05vbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdGhlciwgJmNvbnRleHQpKSB7ICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHNlbGYsIG90aGVyLCBjb250ZXh0KTsgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBCaW5hcnkgZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gQWN0dWFsIE1QREZVTkMgZG9lcworICAgTk9UIHRha2UgYSBjb250ZXh0LiBUaGUgY29udGV4dCBpcyB1c2VkIHRvIHJlY29yZCBJbnZhbGlkT3BlcmF0aW9uCisgICBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LiAqLworI2RlZmluZSBEZWNfQmluYXJ5RnVuY1ZBX05PX0NUWChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqb3RoZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdGhlciwgJmNvbnRleHQpKSB7ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOyAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFRlcm5hcnkgZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gKi8KKyNkZWZpbmUgRGVjX1Rlcm5hcnlGdW5jVkEoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib3RoZXIiLCAidGhpcmQiLCAiY29udGV4dCIsIE5VTEx9OyAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqb3RoZXIsICp0aGlyZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiLCAqYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IFB5X05vbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT098TyIsIGt3bGlzdCwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmdGhpcmQsICZjb250ZXh0KSkgeyAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfVEVSTk9QX1JBSVNFKCZhLCAmYiwgJmMsIHNlbGYsIG90aGVyLCB0aGlyZCwgY29udGV4dCk7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBNUEQoYyksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICBOdW1iZXIgbWV0aG9kcyAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0RlY19VbmFyeU51bWJlck1ldGhvZChtcGRfcW1pbnVzKQorRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKG1wZF9xcGx1cykKK0RlY19VbmFyeU51bWJlck1ldGhvZChtcGRfcWFicykKKworRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcWFkZCkKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FzdWIpCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xbXVsKQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcWRpdikKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FyZW0pCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xZGl2aW50KQorCitzdGF0aWMgUHlPYmplY3QgKgorbm1fZGVjX2FzX2xvbmcoUHlPYmplY3QgKmRlYykKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gZGVjX2FzX2xvbmcoZGVjLCBjb250ZXh0LCBNUERfUk9VTkRfRE9XTik7Cit9CisKK3N0YXRpYyBpbnQKK25tX25vbnplcm8oUHlPYmplY3QgKnYpCit7CisgICAgcmV0dXJuICFtcGRfaXN6ZXJvKE1QRCh2KSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitubV9tcGRfcWRpdm1vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpxLCAqcjsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIFB5T2JqZWN0ICpyZXQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUCgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOworCisgICAgcSA9IGRlY19hbGxvYygpOworICAgIGlmIChxID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgUHlfREVDUkVGKHEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWRpdm1vZChNUEQocSksIE1QRChyKSwgTVBEKGEpLCBNUEQoYiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyKTsKKyAgICAgICAgUHlfREVDUkVGKHEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeV9CdWlsZFZhbHVlKCIoT08pIiwgcSwgcik7CisgICAgUHlfREVDUkVGKHIpOworICAgIFB5X0RFQ1JFRihxKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgbXBkX3VpbnRfdCBkYXRhX3plcm9bMV0gPSB7MH07CitzdGF0aWMgY29uc3QgbXBkX3QgemVybyA9IHtNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxLCAxLCAxLCBkYXRhX3plcm99OworCitzdGF0aWMgUHlPYmplY3QgKgorbm1fbXBkX3Fwb3coUHlPYmplY3QgKmJhc2UsIFB5T2JqZWN0ICpleHAsIFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlPYmplY3QgKmEsICpiLCAqYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIENPTlZFUlRfQklOT1AoJmEsICZiLCBiYXNlLCBleHAsIGNvbnRleHQpOworCisgICAgaWYgKG1vZCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgJmMsIG1vZCwgY29udGV4dCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBQeV9YREVDUkVGKGMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoYyA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9xcG93KE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwKKyAgICAgICAgICAgICAgICAgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xcG93bW9kKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgTVBEKGMpLAorICAgICAgICAgICAgICAgICAgICBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgICAgICBQeV9ERUNSRUYoYyk7CisgICAgfQorICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFVuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xZXhwKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbG4pCitEZWNfVW5hcnlGdW5jVkEobXBkX3Fsb2cxMCkKK0RlY19VbmFyeUZ1bmNWQShtcGRfcW5leHRfbWludXMpCitEZWNfVW5hcnlGdW5jVkEobXBkX3FuZXh0X3BsdXMpCitEZWNfVW5hcnlGdW5jVkEobXBkX3FyZWR1Y2UpCitEZWNfVW5hcnlGdW5jVkEobXBkX3FzcXJ0KQorCisvKiBCaW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xY29tcGFyZSkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3Fjb21wYXJlX3NpZ25hbCkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FtYXgpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xbWF4X21hZykKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FtaW4pCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xbWluX21hZykKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FuZXh0X3Rvd2FyZCkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FyZW1fbmVhcikKKworLyogVGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19UZXJuYXJ5RnVuY1ZBKG1wZF9xZm1hKQorCisvKiBCb29sZWFuIGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KK0RlY19Cb29sRnVuYyhtcGRfaXNjYW5vbmljYWwpCitEZWNfQm9vbEZ1bmMobXBkX2lzZmluaXRlKQorRGVjX0Jvb2xGdW5jKG1wZF9pc2luZmluaXRlKQorRGVjX0Jvb2xGdW5jKG1wZF9pc25hbikKK0RlY19Cb29sRnVuYyhtcGRfaXNxbmFuKQorRGVjX0Jvb2xGdW5jKG1wZF9pc3NuYW4pCitEZWNfQm9vbEZ1bmMobXBkX2lzc2lnbmVkKQorRGVjX0Jvb2xGdW5jKG1wZF9pc3plcm8pCisKKy8qIEJvb2xlYW4gZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX0Jvb2xGdW5jVkEobXBkX2lzbm9ybWFsKQorRGVjX0Jvb2xGdW5jVkEobXBkX2lzc3Vibm9ybWFsKQorCisvKiBVbmFyeSBmdW5jdGlvbnMsIG5vIGNvbnRleHQgYXJnICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9hZGpleHAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgbXBkX3NzaXplX3QgcmV0dmFsOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoTVBEKHNlbGYpKSkgeworICAgICAgICByZXR2YWwgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gbXBkX2FkamV4cChNUEQoc2VsZikpOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmV0dmFsKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19jYW5vbmljYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Nvbmp1Z2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3JhZGl4KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIF9kZWNfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMTAsIDApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3Fjb3B5X2FicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9hYnMoTVBEKHJlc3VsdCksIE1QRChzZWxmKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3Fjb3B5X25lZ2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9uZWdhdGUoTVBEKHJlc3VsdCksIE1QRChzZWxmKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFVuYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19VbmFyeUZ1bmNWQShtcGRfcWludmVydCkKK0RlY19VbmFyeUZ1bmNWQShtcGRfcWxvZ2IpCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX2NsYXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOworICAgIGNvbnN0IGNoYXIgKmNwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKworICAgIGNwID0gbXBkX2NsYXNzKE1QRChzZWxmKSwgQ1RYKGNvbnRleHQpKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoY3ApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF90b19lbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsKKyAgICBtcGRfc3NpemVfdCBzaXplOworICAgIGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgc2l6ZSA9IG1wZF90b19lbmdfc2l6ZSgmcywgTVBEKHNlbGYpLCBDdHhDYXBzKGNvbnRleHQpKTsKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gdW5pY29kZV9mcm9tYXNjaWkocywgc2l6ZSk7CisgICAgbXBkX2ZyZWUocyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBCaW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyBmb3IgY29udmVyc2lvbiBlcnJvcnMgKi8KK0RlY19CaW5hcnlGdW5jVkFfTk9fQ1RYKG1wZF9jb21wYXJlX3RvdGFsKQorRGVjX0JpbmFyeUZ1bmNWQV9OT19DVFgobXBkX2NvbXBhcmVfdG90YWxfbWFnKQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9xY29weV9zaWduKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKm90aGVyOworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHlfc2lnbihNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfc2FtZV9xdWFudHVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKm90aGVyOworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHNlbGYsIG90aGVyLCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IG1wZF9zYW1lX3F1YW50dW0oTVBEKGEpLCBNUEQoYikpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xYW5kKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW9yKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXhvcikKKworRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXJvdGF0ZSkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FzY2FsZWIpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xc2hpZnQpCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3FxdWFudGl6ZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZXhwIiwgInJvdW5kaW5nIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcm91bmRpbmcgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqdywgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPTyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdywgJnJvdW5kaW5nLCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICB3b3JrY3R4ID0gKkNUWChjb250ZXh0KTsKKyAgICBpZiAocm91bmRpbmcgIT0gUHlfTm9uZSkgeworICAgICAgICBpbnQgcm91bmQgPSBnZXRyb3VuZChyb3VuZGluZyk7CisgICAgICAgIGlmIChyb3VuZCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICghbXBkX3FzZXRyb3VuZCgmd29ya2N0eCwgcm91bmQpKSB7CisgICAgICAgICAgICBJTlRFUk5BTF9FUlJPUl9QVFIoImRlY19tcGRfcXF1YW50aXplIik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FxdWFudGl6ZShNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksICZ3b3JrY3R4LCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFNwZWNpYWwgbWV0aG9kcyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK3sKKyAgICBQeU9iamVjdCAqYTsKKyAgICBQeU9iamVjdCAqYjsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIGludCBhX2lzc25hbiwgYl9pc3NuYW47CisgICAgaW50IHI7CisKKyAgICBhc3NlcnQoUHlEZWNfQ2hlY2sodikpOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIENPTlZFUlRfQklOT1BfQ01QKCZhLCAmYiwgdiwgdywgb3AsIGNvbnRleHQpOworCisgICAgYV9pc3NuYW4gPSBtcGRfaXNzbmFuKE1QRChhKSk7CisgICAgYl9pc3NuYW4gPSBtcGRfaXNzbmFuKE1QRChiKSk7CisKKyAgICByID0gbXBkX3FjbXAoTVBEKGEpLCBNUEQoYiksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKHIgPT0gSU5UX01BWCkgeworICAgICAgICAvKiBzTmFOcyBvciBvcD17bGUsZ2UsbHQsZ3R9IGFsd2F5cyBzaWduYWwuICovCisgICAgICAgIGlmIChhX2lzc25hbiB8fCBiX2lzc25hbiB8fCAob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpKSB7CisgICAgICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogcU5hTiBjb21wYXJpc29uIHdpdGggb3A9e2VxLG5lfSBvciBjb21wYXJpc29uCisgICAgICAgICAqIHdpdGggSW52YWxpZE9wZXJhdGlvbiBkaXNhYmxlZC4gKi8KKyAgICAgICAgcmV0dXJuIChvcCA9PSBQeV9ORSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBQeV9FUToKKyAgICAgICAgciA9IChyID09IDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5X05FOgorICAgICAgICByID0gKHIgIT0gMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfTEU6CisgICAgICAgIHIgPSAociA8PSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeV9HRToKKyAgICAgICAgciA9IChyID49IDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5X0xUOgorICAgICAgICByID0gKHIgPT0gLTEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5X0dUOgorICAgICAgICByID0gKHIgPT0gMSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocik7Cit9CisKKy8qIF9fY2VpbF9fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2NlaWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgcmV0dXJuIGRlY19hc19sb25nKHNlbGYsIGNvbnRleHQsIE1QRF9ST1VORF9DRUlMSU5HKTsKK30KKworLyogX19jb21wbGV4X18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY29tcGxleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqZjsKKyAgICBkb3VibGUgeDsKKworICAgIGYgPSBQeURlY19Bc0Zsb2F0KHNlbGYpOworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUoZik7CisgICAgUHlfREVDUkVGKGYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21Eb3VibGVzKHgsIDApOworfQorCisvKiBfX2NvcHlfXyBhbmQgX19kZWVwY29weV9fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2NvcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCisvKiBfX2Zsb29yX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZmxvb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgcmV0dXJuIGRlY19hc19sb25nKHNlbGYsIGNvbnRleHQsIE1QRF9ST1VORF9GTE9PUik7Cit9CisKKy8qIEFsd2F5cyB1c2VzIHRoZSBtb2R1bGUgY29udGV4dCAqLworc3RhdGljIFB5X2hhc2hfdAorX2RlY19oYXNoKFB5RGVjT2JqZWN0ICp2KQoreworI2lmIGRlZmluZWQoQ09ORklHXzY0KSAmJiBfUHlIQVNIX0JJVFMgPT0gNjEKKyAgICAvKiAyKio2MSAtIDEgKi8KKyAgICBtcGRfdWludF90IHBfZGF0YVsxXSA9IHsyMzA1ODQzMDA5MjEzNjkzOTUxVUxMfTsKKyAgICBtcGRfdCBwID0ge01QRF9QT1N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMTksIDEsIDEsIHBfZGF0YX07CisgICAgLyogSW52ZXJzZSBvZiAxMCBtb2R1bG8gcCAqLworICAgIG1wZF91aW50X3QgaW52MTBfcF9kYXRhWzFdID0gezIwNzUyNTg3MDgyOTIzMjQ1NTZVTEx9OworICAgIG1wZF90IGludjEwX3AgPSB7TVBEX1BPU3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLAorICAgICAgICAgICAgICAgICAgICAgMCwgMTksIDEsIDEsIGludjEwX3BfZGF0YX07CisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikgJiYgX1B5SEFTSF9CSVRTID09IDMxCisgICAgLyogMioqMzEgLSAxICovCisgICAgbXBkX3VpbnRfdCBwX2RhdGFbMl0gPSB7MTQ3NDgzNjQ3VUwsIDJ9OworICAgIG1wZF90IHAgPSB7TVBEX1BPU3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxMCwgMiwgMiwgcF9kYXRhfTsKKyAgICAvKiBJbnZlcnNlIG9mIDEwIG1vZHVsbyBwICovCisgICAgbXBkX3VpbnRfdCBpbnYxMF9wX2RhdGFbMl0gPSB7NTAzMjM4NTUzVUwsIDF9OworICAgIG1wZF90IGludjEwX3AgPSB7TVBEX1BPU3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLAorICAgICAgICAgICAgICAgICAgICAgMCwgMTAsIDIsIDIsIGludjEwX3BfZGF0YX07CisjZWxzZQorICAgICNlcnJvciAiTm8gdmFsaWQgY29tYmluYXRpb24gb2YgQ09ORklHXzY0LCBDT05GSUdfMzIgYW5kIF9QeUhBU0hfQklUUyIKKyNlbmRpZgorICAgIGNvbnN0IFB5X2hhc2hfdCBweV9oYXNoX2luZiA9IDMxNDE1OTsKKyAgICBjb25zdCBQeV9oYXNoX3QgcHlfaGFzaF9uYW4gPSAwOworICAgIG1wZF91aW50X3QgdGVuX2RhdGFbMV0gPSB7MTB9OworICAgIG1wZF90IHRlbiA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsCisgICAgICAgICAgICAgICAgIDAsIDIsIDEsIDEsIHRlbl9kYXRhfTsKKyAgICBQeV9oYXNoX3QgcmVzdWx0OworICAgIG1wZF90ICpleHBfaGFzaCA9IE5VTEw7CisgICAgbXBkX3QgKnRtcCA9IE5VTEw7CisgICAgbXBkX3NzaXplX3QgZXhwOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKworICAgIGNvbnRleHQgPSBjdXJyZW50X2NvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQodikpKSB7CisgICAgICAgIGlmIChtcGRfaXNzbmFuKE1QRCh2KSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIkNhbm5vdCBoYXNoIGEgc2lnbmFsaW5nIE5hTiB2YWx1ZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25hbihNUEQodikpKSB7CisgICAgICAgICAgICByZXR1cm4gcHlfaGFzaF9uYW47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcHlfaGFzaF9pbmYgKiBtcGRfYXJpdGhfc2lnbihNUEQodikpOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgZXhwX2hhc2ggPSBtcGRfcW5ldygpOworICAgIGlmIChleHBfaGFzaCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKyAgICB0bXAgPSBtcGRfcW5ldygpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGV4cCh2KTogZXhwb25lbnQgb2YgdgorICAgICAqIGludCh2KTogY29lZmZpY2llbnQgb2YgdgorICAgICAqLworICAgIGV4cCA9IE1QRCh2KS0+ZXhwOworICAgIGlmIChleHAgPj0gMCkgeworICAgICAgICAvKiAxMCoqZXhwKHYpICUgcCAqLworICAgICAgICBtcGRfcXNzZXRfc3NpemUodG1wLCBleHAsICZtYXhjdHgsICZzdGF0dXMpOworICAgICAgICBtcGRfcXBvd21vZChleHBfaGFzaCwgJnRlbiwgdG1wLCAmcCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBpbnYxMF9wKiooLWV4cCh2KSkgJSBwICovCisgICAgICAgIG1wZF9xc3NldF9zc2l6ZSh0bXAsIC1leHAsICZtYXhjdHgsICZzdGF0dXMpOworICAgICAgICBtcGRfcXBvd21vZChleHBfaGFzaCwgJmludjEwX3AsIHRtcCwgJnAsICZtYXhjdHgsICZzdGF0dXMpOworICAgIH0KKworICAgIC8qIGhhc2ggPSAoaW50KHYpICogZXhwX2hhc2gpICUgcCAqLworICAgIGlmICghbXBkX3Fjb3B5KHRtcCwgTVBEKHYpLCAmc3RhdHVzKSkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgdG1wLT5leHAgPSAwOworICAgIG1wZF9zZXRfcG9zaXRpdmUodG1wKTsKKworICAgIG1heGN0eC5wcmVjID0gTVBEX01BWF9QUkVDICsgMjE7CisgICAgbWF4Y3R4LmVtYXggPSBNUERfTUFYX0VNQVggKyAyMTsKKyAgICBtYXhjdHguZW1pbiA9IE1QRF9NSU5fRU1JTiAtIDIxOworCisgICAgbXBkX3FtdWwodG1wLCB0bXAsIGV4cF9oYXNoLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBtcGRfcXJlbSh0bXAsIHRtcCwgJnAsICZtYXhjdHgsICZzdGF0dXMpOworCisgICAgcmVzdWx0ID0gbXBkX3FnZXRfc3NpemUodG1wLCAmc3RhdHVzKTsKKyAgICByZXN1bHQgPSBtcGRfaXNwb3NpdGl2ZShNUEQodikpID8gcmVzdWx0IDogLXJlc3VsdDsKKyAgICByZXN1bHQgPSAocmVzdWx0ID09IC0xKSA/IC0yIDogcmVzdWx0OworCisgICAgaWYgKHN0YXR1cyAhPSAwKSB7CisgICAgICAgIGlmIChzdGF0dXMgJiBNUERfTWFsbG9jX2Vycm9yKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImRlY19oYXNoOiBpbnRlcm5hbCBlcnJvcjogcGxlYXNlIHJlcG9ydCIpOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IC0xOworICAgIH0KKworCitmaW5pc2g6CisgICAgaWYgKGV4cF9oYXNoKSBtcGRfZGVsKGV4cF9oYXNoKTsKKyAgICBpZiAodG1wKSBtcGRfZGVsKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworbWFsbG9jX2Vycm9yOgorICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgcmVzdWx0ID0gLTE7CisgICAgZ290byBmaW5pc2g7Cit9CisKK3N0YXRpYyBQeV9oYXNoX3QKK2RlY19oYXNoKFB5RGVjT2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYXNoID09IC0xKSB7CisgICAgICAgIHNlbGYtPmhhc2ggPSBfZGVjX2hhc2goc2VsZik7CisgICAgfQorCisgICAgcmV0dXJuIHNlbGYtPmhhc2g7Cit9CisKKy8qIF9fcmVkdWNlX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfcmVkdWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICpzdHI7CisKKyAgICBzdHIgPSBkZWNfc3RyKHNlbGYpOworICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE8pIiwgUHlfVFlQRShzZWxmKSwgc3RyKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIF9fc2l6ZW9mX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfc2l6ZW9mKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5X3NzaXplX3QgcmVzOworCisgICAgcmVzID0gc2l6ZW9mKFB5RGVjT2JqZWN0KTsKKyAgICBpZiAobXBkX2lzZHluYW1pY19kYXRhKE1QRCh2KSkpIHsKKyAgICAgICAgcmVzICs9IE1QRCh2KS0+YWxsb2MgKiBzaXplb2YobXBkX3VpbnRfdCk7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKK30KKworLyogX190cnVuY19fICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3RydW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHJldHVybiBkZWNfYXNfbG9uZyhzZWxmLCBjb250ZXh0LCBNUERfUk9VTkRfRE9XTik7Cit9CisKKy8qIHJlYWwgYW5kIGltYWcgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfcmVhbChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2ltYWcoUHlPYmplY3QgKnNlbGYgVU5VU0VELCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIF9kZWNfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMCwgMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgZGVjX2dldHNldHMgW10gPQoreworICB7ICJyZWFsIiwgKGdldHRlcilkZWNfcmVhbCwgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgImltYWciLCAoZ2V0dGVyKWRlY19pbWFnLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAge05VTEx9Cit9OworCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRlY19udW1iZXJfbWV0aG9kcyA9Cit7CisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xYWRkLAorICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcXN1YiwKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FtdWwsCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xcmVtLAorICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcWRpdm1vZCwKKyAgICAodGVybmFyeWZ1bmMpIG5tX21wZF9xcG93LAorICAgICh1bmFyeWZ1bmMpIG5tX21wZF9xbWludXMsCisgICAgKHVuYXJ5ZnVuYykgbm1fbXBkX3FwbHVzLAorICAgICh1bmFyeWZ1bmMpIG5tX21wZF9xYWJzLAorICAgIChpbnF1aXJ5KSBubV9ub256ZXJvLAorICAgICh1bmFyeWZ1bmMpIDAsICAgLyogbm8gYml0LWNvbXBsZW1lbnQgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIHNoaWZ0bCAqLworICAgIChiaW5hcnlmdW5jKSAwLCAgLyogbm8gc2hpZnRyICovCisgICAgKGJpbmFyeWZ1bmMpIDAsICAvKiBubyBiaXQtYW5kICovCisgICAgKGJpbmFyeWZ1bmMpIDAsICAvKiBubyBiaXQteG9yICovCisgICAgKGJpbmFyeWZ1bmMpIDAsICAvKiBubyBiaXQtaW9yICovCisgICAgKHVuYXJ5ZnVuYykgbm1fZGVjX2FzX2xvbmcsCisgICAgMCwgICAgICAgICAgICAgICAvKiBuYl9yZXNlcnZlZCAqLworICAgICh1bmFyeWZ1bmMpIFB5RGVjX0FzRmxvYXQsCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfYWRkOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3N1YnRyYWN0OyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX211bHRpcGx5OyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3JlbWFpbmRlcjsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIHRlcm5hcnlmdW5jIG5iX2lucGxhY2VfcG93ZXI7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbHNoaWZ0OyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3JzaGlmdDsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9hbmQ7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfeG9yOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX29yOyAqLworICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcWRpdmludCwgIC8qIGJpbmFyeWZ1bmMgbmJfZmxvb3JfZGl2aWRlOyAqLworICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcWRpdiwgICAgIC8qIGJpbmFyeWZ1bmMgbmJfdHJ1ZV9kaXZpZGU7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfZmxvb3JfZGl2aWRlOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3RydWVfZGl2aWRlOyAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIGRlY19tZXRob2RzIFtdID0KK3sKKyAgLyogVW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImV4cCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FleHAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfZXhwIH0sCisgIHsgImxuIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWxuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xuIH0sCisgIHsgImxvZzEwIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWxvZzEwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZzEwIH0sCisgIHsgIm5leHRfbWludXMiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbmV4dF9taW51cywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19uZXh0X21pbnVzIH0sCisgIHsgIm5leHRfcGx1cyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FuZXh0X3BsdXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbmV4dF9wbHVzIH0sCisgIHsgIm5vcm1hbGl6ZSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FyZWR1Y2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfbm9ybWFsaXplIH0sCisgIHsgInRvX2ludGVncmFsIiwgKFB5Q0Z1bmN0aW9uKVB5RGVjX1RvSW50ZWdyYWxWYWx1ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY190b19pbnRlZ3JhbCB9LAorICB7ICJ0b19pbnRlZ3JhbF9leGFjdCIsIChQeUNGdW5jdGlvbilQeURlY19Ub0ludGVncmFsRXhhY3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfdG9faW50ZWdyYWxfZXhhY3QgfSwKKyAgeyAidG9faW50ZWdyYWxfdmFsdWUiLCAoUHlDRnVuY3Rpb24pUHlEZWNfVG9JbnRlZ3JhbFZhbHVlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3RvX2ludGVncmFsX3ZhbHVlIH0sCisgIHsgInNxcnQiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xc3FydCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19zcXJ0IH0sCisKKyAgLyogQmluYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJjb21wYXJlIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvbXBhcmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY29tcGFyZSB9LAorICB7ICJjb21wYXJlX3NpZ25hbCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fjb21wYXJlX3NpZ25hbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb21wYXJlX3NpZ25hbCB9LAorICB7ICJtYXgiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbWF4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX21heCB9LAorICB7ICJtYXhfbWFnIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW1heF9tYWcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbWF4X21hZyB9LAorICB7ICJtaW4iLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX21pbiB9LAorICB7ICJtaW5fbWFnIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW1pbl9tYWcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbWluX21hZyB9LAorICB7ICJuZXh0X3Rvd2FyZCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FuZXh0X3Rvd2FyZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19uZXh0X3Rvd2FyZCB9LAorICB7ICJxdWFudGl6ZSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FxdWFudGl6ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19xdWFudGl6ZSB9LAorICB7ICJyZW1haW5kZXJfbmVhciIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FyZW1fbmVhciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19yZW1haW5kZXJfbmVhciB9LAorCisgIC8qIFRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImZtYSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FmbWEsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfZm1hIH0sCisKKyAgLyogQm9vbGVhbiBmdW5jdGlvbnMsIG5vIGNvbnRleHQgYXJnICovCisgIHsgImlzX2Nhbm9uaWNhbCIsIGRlY19tcGRfaXNjYW5vbmljYWwsIE1FVEhfTk9BUkdTLCBkb2NfaXNfY2Fub25pY2FsIH0sCisgIHsgImlzX2Zpbml0ZSIsIGRlY19tcGRfaXNmaW5pdGUsIE1FVEhfTk9BUkdTLCBkb2NfaXNfZmluaXRlIH0sCisgIHsgImlzX2luZmluaXRlIiwgZGVjX21wZF9pc2luZmluaXRlLCBNRVRIX05PQVJHUywgZG9jX2lzX2luZmluaXRlIH0sCisgIHsgImlzX25hbiIsIGRlY19tcGRfaXNuYW4sIE1FVEhfTk9BUkdTLCBkb2NfaXNfbmFuIH0sCisgIHsgImlzX3FuYW4iLCBkZWNfbXBkX2lzcW5hbiwgTUVUSF9OT0FSR1MsIGRvY19pc19xbmFuIH0sCisgIHsgImlzX3NuYW4iLCBkZWNfbXBkX2lzc25hbiwgTUVUSF9OT0FSR1MsIGRvY19pc19zbmFuIH0sCisgIHsgImlzX3NpZ25lZCIsIGRlY19tcGRfaXNzaWduZWQsIE1FVEhfTk9BUkdTLCBkb2NfaXNfc2lnbmVkIH0sCisgIHsgImlzX3plcm8iLCBkZWNfbXBkX2lzemVybywgTUVUSF9OT0FSR1MsIGRvY19pc196ZXJvIH0sCisKKyAgLyogQm9vbGVhbiBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImlzX25vcm1hbCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX2lzbm9ybWFsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2lzX25vcm1hbCB9LAorICB7ICJpc19zdWJub3JtYWwiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9pc3N1Ym5vcm1hbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19pc19zdWJub3JtYWwgfSwKKworICAvKiBVbmFyeSBmdW5jdGlvbnMsIG5vIGNvbnRleHQgYXJnICovCisgIHsgImFkanVzdGVkIiwgZGVjX21wZF9hZGpleHAsIE1FVEhfTk9BUkdTLCBkb2NfYWRqdXN0ZWQgfSwKKyAgeyAiY2Fub25pY2FsIiwgZGVjX2Nhbm9uaWNhbCwgTUVUSF9OT0FSR1MsIGRvY19jYW5vbmljYWwgfSwKKyAgeyAiY29uanVnYXRlIiwgZGVjX2Nvbmp1Z2F0ZSwgTUVUSF9OT0FSR1MsIGRvY19jb25qdWdhdGUgfSwKKyAgeyAicmFkaXgiLCBkZWNfbXBkX3JhZGl4LCBNRVRIX05PQVJHUywgZG9jX3JhZGl4IH0sCisKKyAgLyogVW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyBmb3IgY29udmVyc2lvbiBlcnJvcnMgKi8KKyAgeyAiY29weV9hYnMiLCBkZWNfbXBkX3Fjb3B5X2FicywgTUVUSF9OT0FSR1MsIGRvY19jb3B5X2FicyB9LAorICB7ICJjb3B5X25lZ2F0ZSIsIGRlY19tcGRfcWNvcHlfbmVnYXRlLCBNRVRIX05PQVJHUywgZG9jX2NvcHlfbmVnYXRlIH0sCisKKyAgLyogVW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJsb2diIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWxvZ2IsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9nYiB9LAorICB7ICJsb2dpY2FsX2ludmVydCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FpbnZlcnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9naWNhbF9pbnZlcnQgfSwKKyAgeyAibnVtYmVyX2NsYXNzIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfY2xhc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbnVtYmVyX2NsYXNzIH0sCisgIHsgInRvX2VuZ19zdHJpbmciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF90b19lbmcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfdG9fZW5nX3N0cmluZyB9LAorCisgIC8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworICB7ICJjb21wYXJlX3RvdGFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfY29tcGFyZV90b3RhbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb21wYXJlX3RvdGFsIH0sCisgIHsgImNvbXBhcmVfdG90YWxfbWFnIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfY29tcGFyZV90b3RhbF9tYWcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY29tcGFyZV90b3RhbF9tYWcgfSwKKyAgeyAiY29weV9zaWduIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvcHlfc2lnbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb3B5X3NpZ24gfSwKKyAgeyAic2FtZV9xdWFudHVtIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfc2FtZV9xdWFudHVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NhbWVfcXVhbnR1bSB9LAorCisgIC8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImxvZ2ljYWxfYW5kIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2dpY2FsX2FuZCB9LAorICB7ICJsb2dpY2FsX29yIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW9yLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2ljYWxfb3IgfSwKKyAgeyAibG9naWNhbF94b3IiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xeG9yLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2ljYWxfeG9yIH0sCisgIHsgInJvdGF0ZSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fyb3RhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfcm90YXRlIH0sCisgIHsgInNjYWxlYiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FzY2FsZWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfc2NhbGViIH0sCisgIHsgInNoaWZ0IiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXNoaWZ0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NoaWZ0IH0sCisKKyAgLyogTWlzY2VsbGFuZW91cyAqLworICB7ICJmcm9tX2Zsb2F0IiwgZGVjX2Zyb21fZmxvYXQsIE1FVEhfT3xNRVRIX0NMQVNTLCBkb2NfZnJvbV9mbG9hdCB9LAorICB7ICJhc190dXBsZSIsIFB5RGVjX0FzVHVwbGUsIE1FVEhfTk9BUkdTLCBkb2NfYXNfdHVwbGUgfSwKKworICAvKiBTcGVjaWFsIG1ldGhvZHMgKi8KKyAgeyAiX19jb3B5X18iLCBkZWNfY29weSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19kZWVwY29weV9fIiwgZGVjX2NvcHksIE1FVEhfTywgTlVMTCB9LAorICB7ICJfX2Zvcm1hdF9fIiwgZGVjX2Zvcm1hdCwgTUVUSF9WQVJBUkdTLCBOVUxMIH0sCisgIHsgIl9fcmVkdWNlX18iLCBkZWNfcmVkdWNlLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3JvdW5kX18iLCBQeURlY19Sb3VuZCwgTUVUSF9WQVJBUkdTLCBOVUxMIH0sCisgIHsgIl9fY2VpbF9fIiwgZGVjX2NlaWwsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fZmxvb3JfXyIsIGRlY19mbG9vciwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX190cnVuY19fIiwgZGVjX3RydW5jLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX2NvbXBsZXhfXyIsIGRlY19jb21wbGV4LCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3NpemVvZl9fIiwgZGVjX3NpemVvZiwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKworICB7IE5VTEwsIE5VTEwsIDEgfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY19UeXBlID0KK3sKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiZGVjaW1hbC5EZWNpbWFsIiwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY09iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcikgZGVjX2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgKHNldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIGRlY19yZXByLCAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgICZkZWNfbnVtYmVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIChoYXNoZnVuYykgZGVjX2hhc2gsICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAocmVwcmZ1bmMpIGRlY19zdHIsICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYykgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIChQeV9UUEZMQUdTX0RFRkFVTFR8CisgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgZG9jX2RlY2ltYWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIGRlY19yaWNoY29tcGFyZSwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgZGVjX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGRlY19nZXRzZXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZGVjX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0IE9iamVjdCwgUGFydCAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgIE1hY3JvcyBmb3IgY29udmVydGluZyBtcGRlY2ltYWwgZnVuY3Rpb25zIHRvIENvbnRleHQgbWV0aG9kcyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEJvb2xlYW4gY29udGV4dCBtZXRob2QuICovCisjZGVmaW5lIERlY0N0eF9Cb29sRnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXQgPSBNUERGVU5DKE1QRChhKSwgQ1RYKGNvbnRleHQpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQm9vbGVhbiBjb250ZXh0IG1ldGhvZC4gTVBERlVOQyBkb2VzIE5PVCB1c2UgYSBjb250ZXh0LiAqLworI2RlZmluZSBEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0ID0gTVBERlVOQyhNUEQoYSkpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFVuYXJ5IGNvbnRleHQgbWV0aG9kLiAqLworI2RlZmluZSBEZWNDdHhfVW5hcnlGdW5jKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KSAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQmluYXJ5IGNvbnRleHQgbWV0aG9kLiAqLworI2RlZmluZSBEZWNDdHhfQmluYXJ5RnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKSAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnYsICp3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKgorICogQmluYXJ5IGNvbnRleHQgbWV0aG9kLiBUaGUgY29udGV4dCBpcyBvbmx5IHVzZWQgZm9yIGNvbnZlcnNpb24uCisgKiBUaGUgYWN0dWFsIE1QREZVTkMgZG9lcyBOT1QgdGFrZSBhIGNvbnRleHQgYXJnLgorICovCisjZGVmaW5lIERlY0N0eF9CaW5hcnlGdW5jX05PX0NUWChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnYsICp3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpKTsgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFRlcm5hcnkgY29udGV4dCBtZXRob2QuICovCisjZGVmaW5lIERlY0N0eF9UZXJuYXJ5RnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnYsICp3LCAqeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYiwgKmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTyIsICZ2LCAmdywgJngpKSB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9URVJOT1BfUkFJU0UoJmEsICZiLCAmYywgdiwgdywgeCwgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisKKy8qIFVuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xYWJzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWV4cCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FsbikKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fsb2cxMCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FtaW51cykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FuZXh0X21pbnVzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcW5leHRfcGx1cykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FwbHVzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcXJlZHVjZSkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fyb3VuZF90b19pbnQpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xcm91bmRfdG9faW50eCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FzcXJ0KQorCisvKiBCaW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xYWRkKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3Fjb21wYXJlKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3Fjb21wYXJlX3NpZ25hbCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xZGl2KQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FkaXZpbnQpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW1heCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbWF4X21hZykKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbWluKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtaW5fbWFnKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtdWwpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW5leHRfdG93YXJkKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FxdWFudGl6ZSkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xcmVtKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FyZW1fbmVhcikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xc3ViKQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xZGl2bW9kKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpxLCAqcjsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIFB5T2JqZWN0ICpyZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICBxID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHEgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHIgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAociA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZGl2bW9kKE1QRChxKSwgTVBEKHIpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoIihPTykiLCBxLCByKTsKKyAgICBQeV9ERUNSRUYocik7CisgICAgUHlfREVDUkVGKHEpOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIEJpbmFyeSBvciB0ZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xcG93KFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJhIiwgImIiLCAibW9kdWxvIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmJhc2UsICpleHAsICptb2QgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICphLCAqYiwgKmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT3xPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXNlLCAmZXhwLCAmbW9kKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgYmFzZSwgZXhwLCBjb250ZXh0KTsKKworICAgIGlmIChtb2QgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsICZjLCBtb2QsIGNvbnRleHQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgUHlfWERFQ1JFRihjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGMgPT0gTlVMTCkgeworICAgICAgICBtcGRfcXBvdyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksCisgICAgICAgICAgICAgICAgIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcXBvd21vZChNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwKKyAgICAgICAgICAgICAgICAgICAgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICAgICAgUHlfREVDUkVGKGMpOworICAgIH0KKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KK0RlY0N0eF9UZXJuYXJ5RnVuYyhtcGRfcWZtYSkKKworLyogTm8gYXJndW1lbnQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3JhZGl4KFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgcmV0dXJuIGRlY19tcGRfcmFkaXgoY29udGV4dCwgZHVtbXkpOworfQorCisvKiBCb29sZWFuIGZ1bmN0aW9uczogc2luZ2xlIGRlY2ltYWwgYXJndW1lbnQgKi8KK0RlY0N0eF9Cb29sRnVuYyhtcGRfaXNub3JtYWwpCitEZWNDdHhfQm9vbEZ1bmMobXBkX2lzc3Vibm9ybWFsKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNmaW5pdGUpCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc2luZmluaXRlKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNuYW4pCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc3FuYW4pCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc3NpZ25lZCkKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzc25hbikKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzemVybykKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9pc2Nhbm9uaWNhbChQeU9iamVjdCAqY29udGV4dCBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIGlmICghUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgRGVjaW1hbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX2lzY2Fub25pY2FsKE1QRCh2KSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKK30KKworLyogRnVuY3Rpb25zIHdpdGggYSBzaW5nbGUgZGVjaW1hbCBhcmd1bWVudCAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjQ29udGV4dF9BcHBseShQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmE7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hcHBseShhLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9jYW5vbmljYWwoUHlPYmplY3QgKmNvbnRleHQgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBpZiAoIVB5RGVjX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIERlY2ltYWwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHYpOworICAgIHJldHVybiB2OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xY29weV9hYnMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICphOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9hYnMoTVBEKHJlc3VsdCksIE1QRChhKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfY29weV9kZWNpbWFsKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmcmVzdWx0LCB2LCBjb250ZXh0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xY29weV9uZWdhdGUoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICphOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9uZWdhdGUoTVBEKHJlc3VsdCksIE1QRChhKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fsb2diKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWludmVydCkKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfY2xhc3MoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICphOworICAgIGNvbnN0IGNoYXIgKmNwOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICBjcCA9IG1wZF9jbGFzcyhNUEQoYSksIENUWChjb250ZXh0KSk7CisgICAgUHlfREVDUkVGKGEpOworCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNwKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfdG9fc2NpKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICphOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisgICAgY2hhciAqczsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgc2l6ZSA9IG1wZF90b19zY2lfc2l6ZSgmcywgTVBEKGEpLCBDdHhDYXBzKGNvbnRleHQpKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IHVuaWNvZGVfZnJvbWFzY2lpKHMsIHNpemUpOworICAgIG1wZF9mcmVlKHMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfdG9fZW5nKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICphOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisgICAgY2hhciAqczsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgc2l6ZSA9IG1wZF90b19lbmdfc2l6ZSgmcywgTVBEKGEpLCBDdHhDYXBzKGNvbnRleHQpKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IHVuaWNvZGVfZnJvbWFzY2lpKHMsIHNpemUpOworICAgIG1wZF9mcmVlKHMpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogRnVuY3Rpb25zIHdpdGggdHdvIGRlY2ltYWwgYXJndW1lbnRzICovCitEZWNDdHhfQmluYXJ5RnVuY19OT19DVFgobXBkX2NvbXBhcmVfdG90YWwpCitEZWNDdHhfQmluYXJ5RnVuY19OT19DVFgobXBkX2NvbXBhcmVfdG90YWxfbWFnKQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9xY29weV9zaWduKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5X3NpZ24oTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xYW5kKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FvcikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xeG9yKQorCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXJvdGF0ZSkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xc2NhbGViKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FzaGlmdCkKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfc2FtZV9xdWFudHVtKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBtcGRfc2FtZV9xdWFudHVtKE1QRChhKSwgTVBEKGIpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb250ZXh0X21ldGhvZHMgW10gPQoreworICAvKiBVbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJhYnMiLCBjdHhfbXBkX3FhYnMsIE1FVEhfTywgZG9jX2N0eF9hYnMgfSwKKyAgeyAiZXhwIiwgY3R4X21wZF9xZXhwLCBNRVRIX08sIGRvY19jdHhfZXhwIH0sCisgIHsgImxuIiwgY3R4X21wZF9xbG4sIE1FVEhfTywgZG9jX2N0eF9sbiB9LAorICB7ICJsb2cxMCIsIGN0eF9tcGRfcWxvZzEwLCBNRVRIX08sIGRvY19jdHhfbG9nMTAgfSwKKyAgeyAibWludXMiLCBjdHhfbXBkX3FtaW51cywgTUVUSF9PLCBkb2NfY3R4X21pbnVzIH0sCisgIHsgIm5leHRfbWludXMiLCBjdHhfbXBkX3FuZXh0X21pbnVzLCBNRVRIX08sIGRvY19jdHhfbmV4dF9taW51cyB9LAorICB7ICJuZXh0X3BsdXMiLCBjdHhfbXBkX3FuZXh0X3BsdXMsIE1FVEhfTywgZG9jX2N0eF9uZXh0X3BsdXMgfSwKKyAgeyAibm9ybWFsaXplIiwgY3R4X21wZF9xcmVkdWNlLCBNRVRIX08sIGRvY19jdHhfbm9ybWFsaXplIH0sCisgIHsgInBsdXMiLCBjdHhfbXBkX3FwbHVzLCBNRVRIX08sIGRvY19jdHhfcGx1cyB9LAorICB7ICJ0b19pbnRlZ3JhbCIsIGN0eF9tcGRfcXJvdW5kX3RvX2ludCwgTUVUSF9PLCBkb2NfY3R4X3RvX2ludGVncmFsIH0sCisgIHsgInRvX2ludGVncmFsX2V4YWN0IiwgY3R4X21wZF9xcm91bmRfdG9faW50eCwgTUVUSF9PLCBkb2NfY3R4X3RvX2ludGVncmFsX2V4YWN0IH0sCisgIHsgInRvX2ludGVncmFsX3ZhbHVlIiwgY3R4X21wZF9xcm91bmRfdG9faW50LCBNRVRIX08sIGRvY19jdHhfdG9faW50ZWdyYWxfdmFsdWUgfSwKKyAgeyAic3FydCIsIGN0eF9tcGRfcXNxcnQsIE1FVEhfTywgZG9jX2N0eF9zcXJ0IH0sCisKKyAgLyogQmluYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCisgIHsgImFkZCIsIGN0eF9tcGRfcWFkZCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2FkZCB9LAorICB7ICJjb21wYXJlIiwgY3R4X21wZF9xY29tcGFyZSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmUgfSwKKyAgeyAiY29tcGFyZV9zaWduYWwiLCBjdHhfbXBkX3Fjb21wYXJlX3NpZ25hbCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmVfc2lnbmFsIH0sCisgIHsgImRpdmlkZSIsIGN0eF9tcGRfcWRpdiwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2RpdmlkZSB9LAorICB7ICJkaXZpZGVfaW50IiwgY3R4X21wZF9xZGl2aW50LCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfZGl2aWRlX2ludCB9LAorICB7ICJkaXZtb2QiLCBjdHhfbXBkX3FkaXZtb2QsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9kaXZtb2QgfSwKKyAgeyAibWF4IiwgY3R4X21wZF9xbWF4LCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbWF4IH0sCisgIHsgIm1heF9tYWciLCBjdHhfbXBkX3FtYXhfbWFnLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbWF4X21hZyB9LAorICB7ICJtaW4iLCBjdHhfbXBkX3FtaW4sIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9taW4gfSwKKyAgeyAibWluX21hZyIsIGN0eF9tcGRfcW1pbl9tYWcsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9taW5fbWFnIH0sCisgIHsgIm11bHRpcGx5IiwgY3R4X21wZF9xbXVsLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbXVsdGlwbHkgfSwKKyAgeyAibmV4dF90b3dhcmQiLCBjdHhfbXBkX3FuZXh0X3Rvd2FyZCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X25leHRfdG93YXJkIH0sCisgIHsgInF1YW50aXplIiwgY3R4X21wZF9xcXVhbnRpemUsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9xdWFudGl6ZSB9LAorICB7ICJyZW1haW5kZXIiLCBjdHhfbXBkX3FyZW0sIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9yZW1haW5kZXIgfSwKKyAgeyAicmVtYWluZGVyX25lYXIiLCBjdHhfbXBkX3FyZW1fbmVhciwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3JlbWFpbmRlcl9uZWFyIH0sCisgIHsgInN1YnRyYWN0IiwgY3R4X21wZF9xc3ViLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfc3VidHJhY3QgfSwKKworICAvKiBCaW5hcnkgb3IgdGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJwb3dlciIsIChQeUNGdW5jdGlvbiljdHhfbXBkX3Fwb3csIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY3R4X3Bvd2VyIH0sCisKKyAgLyogVGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJmbWEiLCBjdHhfbXBkX3FmbWEsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9mbWEgfSwKKworICAvKiBObyBhcmd1bWVudCAqLworICB7ICJFdGlueSIsIGNvbnRleHRfZ2V0ZXRpbnksIE1FVEhfTk9BUkdTLCBkb2NfY3R4X0V0aW55IH0sCisgIHsgIkV0b3AiLCBjb250ZXh0X2dldGV0b3AsIE1FVEhfTk9BUkdTLCBkb2NfY3R4X0V0b3AgfSwKKyAgeyAicmFkaXgiLCBjdHhfbXBkX3JhZGl4LCBNRVRIX05PQVJHUywgZG9jX2N0eF9yYWRpeCB9LAorCisgIC8qIEJvb2xlYW4gZnVuY3Rpb25zICovCisgIHsgImlzX2Nhbm9uaWNhbCIsIGN0eF9pc2Nhbm9uaWNhbCwgTUVUSF9PLCBkb2NfY3R4X2lzX2Nhbm9uaWNhbCB9LAorICB7ICJpc19maW5pdGUiLCBjdHhfbXBkX2lzZmluaXRlLCBNRVRIX08sIGRvY19jdHhfaXNfZmluaXRlIH0sCisgIHsgImlzX2luZmluaXRlIiwgY3R4X21wZF9pc2luZmluaXRlLCBNRVRIX08sIGRvY19jdHhfaXNfaW5maW5pdGUgfSwKKyAgeyAiaXNfbmFuIiwgY3R4X21wZF9pc25hbiwgTUVUSF9PLCBkb2NfY3R4X2lzX25hbiB9LAorICB7ICJpc19ub3JtYWwiLCBjdHhfbXBkX2lzbm9ybWFsLCBNRVRIX08sIGRvY19jdHhfaXNfbm9ybWFsIH0sCisgIHsgImlzX3FuYW4iLCBjdHhfbXBkX2lzcW5hbiwgTUVUSF9PLCBkb2NfY3R4X2lzX3FuYW4gfSwKKyAgeyAiaXNfc2lnbmVkIiwgY3R4X21wZF9pc3NpZ25lZCwgTUVUSF9PLCBkb2NfY3R4X2lzX3NpZ25lZCB9LAorICB7ICJpc19zbmFuIiwgY3R4X21wZF9pc3NuYW4sIE1FVEhfTywgZG9jX2N0eF9pc19zbmFuIH0sCisgIHsgImlzX3N1Ym5vcm1hbCIsIGN0eF9tcGRfaXNzdWJub3JtYWwsIE1FVEhfTywgZG9jX2N0eF9pc19zdWJub3JtYWwgfSwKKyAgeyAiaXNfemVybyIsIGN0eF9tcGRfaXN6ZXJvLCBNRVRIX08sIGRvY19jdHhfaXNfemVybyB9LAorCisgIC8qIEZ1bmN0aW9ucyB3aXRoIGEgc2luZ2xlIGRlY2ltYWwgYXJndW1lbnQgKi8KKyAgeyAiX2FwcGx5IiwgUHlEZWNDb250ZXh0X0FwcGx5LCBNRVRIX08sIE5VTEwgfSwgLyogYWxpYXMgZm9yIGFwcGx5ICovCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICB7ICJhcHBseSIsIFB5RGVjQ29udGV4dF9BcHBseSwgTUVUSF9PLCBkb2NfY3R4X2FwcGx5IH0sCisjZW5kaWYKKyAgeyAiY2Fub25pY2FsIiwgY3R4X2Nhbm9uaWNhbCwgTUVUSF9PLCBkb2NfY3R4X2Nhbm9uaWNhbCB9LAorICB7ICJjb3B5X2FicyIsIGN0eF9tcGRfcWNvcHlfYWJzLCBNRVRIX08sIGRvY19jdHhfY29weV9hYnMgfSwKKyAgeyAiY29weV9kZWNpbWFsIiwgY3R4X2NvcHlfZGVjaW1hbCwgTUVUSF9PLCBkb2NfY3R4X2NvcHlfZGVjaW1hbCB9LAorICB7ICJjb3B5X25lZ2F0ZSIsIGN0eF9tcGRfcWNvcHlfbmVnYXRlLCBNRVRIX08sIGRvY19jdHhfY29weV9uZWdhdGUgfSwKKyAgeyAibG9nYiIsIGN0eF9tcGRfcWxvZ2IsIE1FVEhfTywgZG9jX2N0eF9sb2diIH0sCisgIHsgImxvZ2ljYWxfaW52ZXJ0IiwgY3R4X21wZF9xaW52ZXJ0LCBNRVRIX08sIGRvY19jdHhfbG9naWNhbF9pbnZlcnQgfSwKKyAgeyAibnVtYmVyX2NsYXNzIiwgY3R4X21wZF9jbGFzcywgTUVUSF9PLCBkb2NfY3R4X251bWJlcl9jbGFzcyB9LAorICB7ICJ0b19zY2lfc3RyaW5nIiwgY3R4X21wZF90b19zY2ksIE1FVEhfTywgZG9jX2N0eF90b19zY2lfc3RyaW5nIH0sCisgIHsgInRvX2VuZ19zdHJpbmciLCBjdHhfbXBkX3RvX2VuZywgTUVUSF9PLCBkb2NfY3R4X3RvX2VuZ19zdHJpbmcgfSwKKworICAvKiBGdW5jdGlvbnMgd2l0aCB0d28gZGVjaW1hbCBhcmd1bWVudHMgKi8KKyAgeyAiY29tcGFyZV90b3RhbCIsIGN0eF9tcGRfY29tcGFyZV90b3RhbCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmVfdG90YWwgfSwKKyAgeyAiY29tcGFyZV90b3RhbF9tYWciLCBjdHhfbXBkX2NvbXBhcmVfdG90YWxfbWFnLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29tcGFyZV90b3RhbF9tYWcgfSwKKyAgeyAiY29weV9zaWduIiwgY3R4X21wZF9xY29weV9zaWduLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29weV9zaWduIH0sCisgIHsgImxvZ2ljYWxfYW5kIiwgY3R4X21wZF9xYW5kLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbG9naWNhbF9hbmQgfSwKKyAgeyAibG9naWNhbF9vciIsIGN0eF9tcGRfcW9yLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbG9naWNhbF9vciB9LAorICB7ICJsb2dpY2FsX3hvciIsIGN0eF9tcGRfcXhvciwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2xvZ2ljYWxfeG9yIH0sCisgIHsgInJvdGF0ZSIsIGN0eF9tcGRfcXJvdGF0ZSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3JvdGF0ZSB9LAorICB7ICJzYW1lX3F1YW50dW0iLCBjdHhfbXBkX3NhbWVfcXVhbnR1bSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3NhbWVfcXVhbnR1bSB9LAorICB7ICJzY2FsZWIiLCBjdHhfbXBkX3FzY2FsZWIsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9zY2FsZWIgfSwKKyAgeyAic2hpZnQiLCBjdHhfbXBkX3FzaGlmdCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3NoaWZ0IH0sCisKKyAgLyogU2V0IGNvbnRleHQgdmFsdWVzICovCisgIHsgImNsZWFyX2ZsYWdzIiwgY29udGV4dF9jbGVhcl9mbGFncywgTUVUSF9OT0FSR1MsIGRvY19jdHhfY2xlYXJfZmxhZ3MgfSwKKyAgeyAiY2xlYXJfdHJhcHMiLCBjb250ZXh0X2NsZWFyX3RyYXBzLCBNRVRIX05PQVJHUywgZG9jX2N0eF9jbGVhcl90cmFwcyB9LAorCisjaWZkZWYgQ09ORklHXzMyCisgIC8qIFVuc2FmZSBzZXQgZnVuY3Rpb25zIHdpdGggcmVsYXhlZCByYW5nZSBjaGVja3MgKi8KKyAgeyAiX3Vuc2FmZV9zZXRwcmVjIiwgY29udGV4dF91bnNhZmVfc2V0cHJlYywgTUVUSF9PLCBOVUxMIH0sCisgIHsgIl91bnNhZmVfc2V0ZW1pbiIsIGNvbnRleHRfdW5zYWZlX3NldGVtaW4sIE1FVEhfTywgTlVMTCB9LAorICB7ICJfdW5zYWZlX3NldGVtYXgiLCBjb250ZXh0X3Vuc2FmZV9zZXRlbWF4LCBNRVRIX08sIE5VTEwgfSwKKyNlbmRpZgorCisgIC8qIE1pc2NlbGxhbmVvdXMgKi8KKyAgeyAiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pY29udGV4dF9jb3B5LCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3JlZHVjZV9fIiwgY29udGV4dF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgImNvcHkiLCAoUHlDRnVuY3Rpb24pY29udGV4dF9jb3B5LCBNRVRIX05PQVJHUywgZG9jX2N0eF9jb3B5IH0sCisgIHsgImNyZWF0ZV9kZWNpbWFsIiwgY3R4X2NyZWF0ZV9kZWNpbWFsLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY3JlYXRlX2RlY2ltYWwgfSwKKyAgeyAiY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCIsIGN0eF9mcm9tX2Zsb2F0LCBNRVRIX08sIGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCB9LAorCisgIHsgTlVMTCwgTlVMTCwgMSB9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dF9UeXBlID0KK3sKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiZGVjaW1hbC5Db250ZXh0IiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY0NvbnRleHRPYmplY3QpLCAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcikgY29udGV4dF9kZWFsbG9jLCAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIChnZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgKHNldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpIGNvbnRleHRfcmVwciwgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIChoYXNoZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAocmVwcmZ1bmMpIGNvbnRleHRfcmVwciwgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYykgY29udGV4dF9nZXRhdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgY29udGV4dF9zZXRhdHRyLCAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgKFB5QnVmZmVyUHJvY3MgKikgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAvKiB0cF9mbGFncyAqLworICAgIGRvY19jb250ZXh0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGNvbnRleHRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBjb250ZXh0X2dldHNldHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBjb250ZXh0X2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGNvbnRleHRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCitzdGF0aWMgUHlNZXRob2REZWYgX2RlY2ltYWxfbWV0aG9kcyBbXSA9Cit7CisgIHsgImdldGNvbnRleHQiLCAoUHlDRnVuY3Rpb24pUHlEZWNfR2V0Q3VycmVudENvbnRleHQsIE1FVEhfTk9BUkdTLCBkb2NfZ2V0Y29udGV4dH0sCisgIHsgInNldGNvbnRleHQiLCAoUHlDRnVuY3Rpb24pUHlEZWNfU2V0Q3VycmVudENvbnRleHQsIE1FVEhfTywgZG9jX3NldGNvbnRleHR9LAorICB7ICJsb2NhbGNvbnRleHQiLCAoUHlDRnVuY3Rpb24pY3R4bWFuYWdlcl9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9jYWxjb250ZXh0fSwKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgIHsgIklFRUVDb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKWllZWVfY29udGV4dCwgTUVUSF9PLCBkb2NfaWVlZV9jb250ZXh0fSwKKyNlbmRpZgorICB7IE5VTEwsIE5VTEwsIDEsIE5VTEwgfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfZGVjaW1hbF9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJkZWNpbWFsIiwKKyAgICBkb2NfX2RlY2ltYWwsCisgICAgLTEsCisgICAgX2RlY2ltYWxfbWV0aG9kcywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitzdHJ1Y3Qgc3NpemVfY29uc3RtYXAgeyBjb25zdCBjaGFyICpuYW1lOyBtcGRfc3NpemVfdCB2YWw7IH07CitzdGF0aWMgc3RydWN0IHNzaXplX2NvbnN0bWFwIHNzaXplX2NvbnN0YW50cyBbXSA9IHsKKyAgICB7Ik1BWF9QUkVDIiwgTVBEX01BWF9QUkVDfSwKKyAgICB7Ik1BWF9FTUFYIiwgTVBEX01BWF9FTUFYfSwKKyAgICB7Ik1JTl9FTUlOIiwgIE1QRF9NSU5fRU1JTn0sCisgICAgeyJNSU5fRVRJTlkiLCBNUERfTUlOX0VUSU5ZfSwKKyAgICB7TlVMTH0KK307CisKK3N0cnVjdCBpbnRfY29uc3RtYXAgeyBjb25zdCBjaGFyICpuYW1lOyBpbnQgdmFsOyB9Oworc3RhdGljIHN0cnVjdCBpbnRfY29uc3RtYXAgaW50X2NvbnN0YW50cyBbXSA9IHsKKyAgICAvKiBpbnQgY29uc3RhbnRzICovCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICAgIHsiREVDSU1BTDMyIiwgTVBEX0RFQ0lNQUwzMn0sCisgICAgeyJERUNJTUFMNjQiLCBNUERfREVDSU1BTDY0fSwKKyAgICB7IkRFQ0lNQUwxMjgiLCBNUERfREVDSU1BTDEyOH0sCisgICAgeyJJRUVFX0NPTlRFWFRfTUFYX0JJVFMiLCBNUERfSUVFRV9DT05URVhUX01BWF9CSVRTfSwKKyAgICAvKiBpbnQgY29uZGl0aW9uIGZsYWdzICovCisgICAgeyJEZWNDbGFtcGVkIiwgTVBEX0NsYW1wZWR9LAorICAgIHsiRGVjQ29udmVyc2lvblN5bnRheCIsIE1QRF9Db252ZXJzaW9uX3N5bnRheH0sCisgICAgeyJEZWNEaXZpc2lvbkJ5WmVybyIsIE1QRF9EaXZpc2lvbl9ieV96ZXJvfSwKKyAgICB7IkRlY0RpdmlzaW9uSW1wb3NzaWJsZSIsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlfSwKKyAgICB7IkRlY0RpdmlzaW9uVW5kZWZpbmVkIiwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZH0sCisgICAgeyJEZWNGcHVFcnJvciIsIE1QRF9GcHVfZXJyb3J9LAorICAgIHsiRGVjSW5leGFjdCIsIE1QRF9JbmV4YWN0fSwKKyAgICB7IkRlY0ludmFsaWRDb250ZXh0IiwgTVBEX0ludmFsaWRfY29udGV4dH0sCisgICAgeyJEZWNJbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0ludmFsaWRfb3BlcmF0aW9ufSwKKyAgICB7IkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb259LAorICAgIHsiRGVjTWFsbG9jRXJyb3IiLCBNUERfTWFsbG9jX2Vycm9yfSwKKyAgICB7IkRlY0Zsb2F0T3BlcmF0aW9uIiwgTVBEX0Zsb2F0X29wZXJhdGlvbn0sCisgICAgeyJEZWNPdmVyZmxvdyIsIE1QRF9PdmVyZmxvd30sCisgICAgeyJEZWNSb3VuZGVkIiwgTVBEX1JvdW5kZWR9LAorICAgIHsiRGVjU3Vibm9ybWFsIiwgTVBEX1N1Ym5vcm1hbH0sCisgICAgeyJEZWNVbmRlcmZsb3ciLCBNUERfVW5kZXJmbG93fSwKKyAgICB7IkRlY0Vycm9ycyIsIE1QRF9FcnJvcnN9LAorICAgIHsiRGVjVHJhcHMiLCBNUERfVHJhcHN9LAorI2VuZGlmCisgICAge05VTEx9Cit9OworCisKKyNkZWZpbmUgQ0hFQ0tfSU5UKGV4cHIpIFwKKyAgICBkbyB7IGlmICgoZXhwcikgPCAwKSBnb3RvIGVycm9yOyB9IHdoaWxlICgwKQorI2RlZmluZSBBU1NJR05fUFRSKHJlc3VsdCwgZXhwcikgXAorICAgIGRvIHsgcmVzdWx0ID0gKGV4cHIpOyBpZiAocmVzdWx0ID09IE5VTEwpIGdvdG8gZXJyb3I7IH0gd2hpbGUgKDApCisjZGVmaW5lIENIRUNLX1BUUihleHByKSBcCisgICAgZG8geyBpZiAoKGV4cHIpID09IE5VTEwpIGdvdG8gZXJyb3I7IH0gd2hpbGUgKDApCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2RlY2ltYWwodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm51bWJlcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpOdW1iZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb2xsZWN0aW9ucyA9IE5VTEw7CisgICAgUHlPYmplY3QgKk11dGFibGVNYXBwaW5nID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqID0gTlVMTDsKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICBzdHJ1Y3Qgc3NpemVfY29uc3RtYXAgKnNzaXplX2NtOworICAgIHN0cnVjdCBpbnRfY29uc3RtYXAgKmludF9jbTsKKyAgICBpbnQgaTsKKworCisgICAgLyogSW5pdCBsaWJtcGRlYyAqLworICAgIG1wZF90cmFwaGFuZGxlciA9IGRlY190cmFwaGFuZGxlcjsKKyAgICBtcGRfbWFsbG9jZnVuYyA9IFB5TWVtX01hbGxvYzsKKyAgICBtcGRfcmVhbGxvY2Z1bmMgPSBQeU1lbV9SZWFsbG9jOworICAgIG1wZF9jYWxsb2NmdW5jID0gbXBkX2NhbGxvY2Z1bmNfZW07CisgICAgbXBkX2ZyZWUgPSBQeU1lbV9GcmVlOworICAgIG1wZF9zZXRtaW5hbGxvYyhfUHlfREVDX01JTkFMTE9DKTsKKworCisgICAgLyogSW5pdCB0eXBlcyAqLworICAgIFB5RGVjX1R5cGUudHBfYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICBQeURlY0NvbnRleHRfVHlwZS50cF9iYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgIFB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZS50cF9iYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgIFB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUudHBfYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKworICAgIENIRUNLX0lOVChQeVR5cGVfUmVhZHkoJlB5RGVjX1R5cGUpKTsKKyAgICBDSEVDS19JTlQoUHlUeXBlX1JlYWR5KCZQeURlY0NvbnRleHRfVHlwZSkpOworICAgIENIRUNLX0lOVChQeVR5cGVfUmVhZHkoJlB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUpKTsKKyAgICBDSEVDS19JTlQoUHlUeXBlX1JlYWR5KCZQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUpKTsKKworICAgIEFTU0lHTl9QVFIob2JqLCBQeVVuaWNvZGVfRnJvbVN0cmluZygiZGVjaW1hbCIpKTsKKyAgICBDSEVDS19JTlQoUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlEZWNfVHlwZS50cF9kaWN0LCAiX19tb2R1bGVfXyIsIG9iaikpOworICAgIENIRUNLX0lOVChQeURpY3RfU2V0SXRlbVN0cmluZyhQeURlY0NvbnRleHRfVHlwZS50cF9kaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19tb2R1bGVfXyIsIG9iaikpOworICAgIFB5X0NMRUFSKG9iaik7CisKKworICAgIC8qIE51bWVyaWMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzICovCisgICAgQVNTSUdOX1BUUihudW1iZXJzLCBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm51bWJlcnMiKSk7CisgICAgQVNTSUdOX1BUUihOdW1iZXIsIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobnVtYmVycywgIk51bWJlciIpKTsKKyAgICAvKiBSZWdpc3RlciBEZWNpbWFsIHdpdGggdGhlIE51bWJlciBhYnN0cmFjdCBiYXNlIGNsYXNzICovCisgICAgQVNTSUdOX1BUUihvYmosIFB5T2JqZWN0X0NhbGxNZXRob2QoTnVtYmVyLCAicmVnaXN0ZXIiLCAiKE8pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlEZWNfVHlwZSkpOworICAgIFB5X0NMRUFSKG9iaik7CisgICAgLyogUmF0aW9uYWwgaXMgYSBnbG9iYWwgdmFyaWFibGUgdXNlZCBmb3IgZnJhY3Rpb24gY29tcGFyaXNvbnMuICovCisgICAgQVNTSUdOX1BUUihSYXRpb25hbCwgUHlPYmplY3RfR2V0QXR0clN0cmluZyhudW1iZXJzLCAiUmF0aW9uYWwiKSk7CisgICAgLyogRG9uZSB3aXRoIG51bWJlcnMsIE51bWJlciAqLworICAgIFB5X0NMRUFSKG51bWJlcnMpOworICAgIFB5X0NMRUFSKE51bWJlcik7CisKKyAgICAvKiBEZWNpbWFsVHVwbGUgKi8KKyAgICBBU1NJR05fUFRSKGNvbGxlY3Rpb25zLCBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImNvbGxlY3Rpb25zIikpOworICAgIEFTU0lHTl9QVFIoRGVjaW1hbFR1cGxlLCBQeU9iamVjdF9DYWxsTWV0aG9kKGNvbGxlY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkdHVwbGUiLCAiKHNzKSIsICJEZWNpbWFsVHVwbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ24gZGlnaXRzIGV4cG9uZW50IikpOworICAgIC8qIE11dGFibGVNYXBwaW5nICovCisgICAgQVNTSUdOX1BUUihNdXRhYmxlTWFwcGluZywgUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb2xsZWN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXRhYmxlTWFwcGluZyIpKTsKKyAgICAvKiBDcmVhdGUgU2lnbmFsRGljdCB0eXBlICovCisgICAgQVNTSUdOX1BUUihQeURlY1NpZ25hbERpY3RfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKAorICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVR5cGVfVHlwZSwgInMoT08pe30iLAorICAgICAgICAgICAgICAgICAgICJTaWduYWxEaWN0IiwgJlB5RGVjU2lnbmFsRGljdE1peGluX1R5cGUsCisgICAgICAgICAgICAgICAgICAgTXV0YWJsZU1hcHBpbmcpKTsKKworICAgIC8qIERvbmUgd2l0aCBjb2xsZWN0aW9ucywgTXV0YWJsZU1hcHBpbmcgKi8KKyAgICBQeV9DTEVBUihjb2xsZWN0aW9ucyk7CisgICAgUHlfQ0xFQVIoTXV0YWJsZU1hcHBpbmcpOworCisKKyAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSAqLworICAgIEFTU0lHTl9QVFIobSwgUHlNb2R1bGVfQ3JlYXRlKCZfZGVjaW1hbF9tb2R1bGUpKTsKKworCisgICAgLyogQWRkIHR5cGVzIHRvIHRoZSBtb2R1bGUgKi8KKyAgICBQeV9JTkNSRUYoJlB5RGVjX1R5cGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRlY2ltYWwiLCAoUHlPYmplY3QgKikmUHlEZWNfVHlwZSkpOworICAgIFB5X0lOQ1JFRigmUHlEZWNDb250ZXh0X1R5cGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNvbnRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlKSk7CisgICAgUHlfSU5DUkVGKERlY2ltYWxUdXBsZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGVjaW1hbFR1cGxlIiwgRGVjaW1hbFR1cGxlKSk7CisKKworICAgIC8qIENyZWF0ZSB0b3AgbGV2ZWwgZXhjZXB0aW9uICovCisgICAgQVNTSUdOX1BUUihEZWNpbWFsRXhjZXB0aW9uLCBQeUVycl9OZXdFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yLCBOVUxMKSk7CisgICAgUHlfSU5DUkVGKERlY2ltYWxFeGNlcHRpb24pOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRlY2ltYWxFeGNlcHRpb24iLCBEZWNpbWFsRXhjZXB0aW9uKSk7CisKKyAgICAvKiBDcmVhdGUgc2lnbmFsIHR1cGxlICovCisgICAgQVNTSUdOX1BUUihTaWduYWxUdXBsZSwgUHlUdXBsZV9OZXcoU0lHTkFMX01BUF9MRU4pKTsKKworICAgIC8qIEFkZCBleGNlcHRpb25zIHRoYXQgY29ycmVzcG9uZCB0byBJRUVFIHNpZ25hbHMgKi8KKyAgICBmb3IgKGkgPSBTSUdOQUxfTUFQX0xFTi0xOyBpID49IDA7IGktLSkgeworICAgICAgICBQeU9iamVjdCAqYmFzZTsKKworICAgICAgICBjbSA9IHNpZ25hbF9tYXAgKyBpOworCisgICAgICAgIHN3aXRjaCAoY20tPmZsYWcpIHsKKyAgICAgICAgY2FzZSBNUERfRmxvYXRfb3BlcmF0aW9uOgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygyLCBEZWNpbWFsRXhjZXB0aW9uLCBQeUV4Y19UeXBlRXJyb3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX0RpdmlzaW9uX2J5X3plcm86CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDIsIERlY2ltYWxFeGNlcHRpb24sIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9PdmVyZmxvdzoKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMiwgc2lnbmFsX21hcFtJTkVYQUNUXS5leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX21hcFtST1VOREVEXS5leCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfVW5kZXJmbG93OgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygzLCBzaWduYWxfbWFwW0lORVhBQ1RdLmV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfbWFwW1JPVU5ERURdLmV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfbWFwW1NVQk5PUk1BTF0uZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDEsIERlY2ltYWxFeGNlcHRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgQVNTSUdOX1BUUihjbS0+ZXgsIFB5RXJyX05ld0V4Y2VwdGlvbigoY2hhciAqKWNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKKyAgICAgICAgUHlfREVDUkVGKGJhc2UpOworCisgICAgICAgIC8qIGFkZCB0byBtb2R1bGUgKi8KKyAgICAgICAgUHlfSU5DUkVGKGNtLT5leCk7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgY20tPm5hbWUsIGNtLT5leCkpOworCisgICAgICAgIC8qIGFkZCB0byBzaWduYWwgdHVwbGUgKi8KKyAgICAgICAgUHlfSU5DUkVGKGNtLT5leCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oU2lnbmFsVHVwbGUsIGksIGNtLT5leCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBVbmZvcnR1bmF0ZWx5LCBJbnZhbGlkT3BlcmF0aW9uIGlzIGEgc2lnbmFsIHRoYXQgY29tcHJpc2VzCisgICAgICogc2V2ZXJhbCBjb25kaXRpb25zLCBpbmNsdWRpbmcgSW52YWxpZE9wZXJhdGlvbiEgTmFtaW5nIHRoZQorICAgICAqIHNpZ25hbCBJRUVFSW52YWxpZE9wZXJhdGlvbiB3b3VsZCBwcmV2ZW50IHRoZSBjb25mdXNpb24uCisgICAgICovCisgICAgY29uZF9tYXBbMF0uZXggPSBzaWduYWxfbWFwWzBdLmV4OworCisgICAgLyogQWRkIHJlbWFpbmluZyBleGNlcHRpb25zLCBpbmhlcml0IGZyb20gSW52YWxpZE9wZXJhdGlvbiAqLworICAgIGZvciAoY20gPSBjb25kX21hcCsxOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpiYXNlOworICAgICAgICBpZiAoY20tPmZsYWcgPT0gTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCkgeworICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygyLCBzaWduYWxfbWFwWzBdLmV4LCBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDEsIHNpZ25hbF9tYXBbMF0uZXgpOworICAgICAgICB9CisgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisKKyAgICAgICAgUHlfSU5DUkVGKGNtLT5leCk7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgY20tPm5hbWUsIGNtLT5leCkpOworICAgIH0KKworCisgICAgLyogSW5pdCBkZWZhdWx0IGNvbnRleHQgdGVtcGxhdGUgZmlyc3QgKi8KKyAgICBBU1NJR05fUFRSKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKSk7CisgICAgUHlfSU5DUkVGKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGVmYXVsdENvbnRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKSk7CisKKyNpZmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICAvKiBJbml0IG1vZHVsZSBjb250ZXh0ICovCisgICAgQVNTSUdOX1BUUihtb2R1bGVfY29udGV4dCwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKSk7CisgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVZFX1RIUkVBRFMiLCBQeV9GYWxzZSkpOworI2Vsc2UKKyAgICBBU1NJR05fUFRSKHRsc19jb250ZXh0X2tleSwgUHlVbmljb2RlX0Zyb21TdHJpbmcoIl9fX0RFQ0lNQUxfQ1RYX18iKSk7CisgICAgUHlfSU5DUkVGKFB5X1RydWUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBVkVfVEhSRUFEUyIsIFB5X1RydWUpKTsKKyNlbmRpZgorCisgICAgLyogSW5pdCBiYXNpYyBjb250ZXh0IHRlbXBsYXRlICovCisgICAgQVNTSUdOX1BUUihiYXNpY19jb250ZXh0X3RlbXBsYXRlLAorICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpKTsKKyAgICBpbml0X2Jhc2ljX2NvbnRleHQoYmFzaWNfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgUHlfSU5DUkVGKGJhc2ljX2NvbnRleHRfdGVtcGxhdGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJhc2ljQ29udGV4dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNpY19jb250ZXh0X3RlbXBsYXRlKSk7CisKKyAgICAvKiBJbml0IGV4dGVuZGVkIGNvbnRleHQgdGVtcGxhdGUgKi8KKyAgICBBU1NJR05fUFRSKGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUsCisgICAgICAgICAgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCkpOworICAgIGluaXRfZXh0ZW5kZWRfY29udGV4dChleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBQeV9JTkNSRUYoZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRXh0ZW5kZWRDb250ZXh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpKTsKKworCisgICAgLyogSW5pdCBtcGRfc3NpemVfdCBjb25zdGFudHMgKi8KKyAgICBmb3IgKHNzaXplX2NtID0gc3NpemVfY29uc3RhbnRzOyBzc2l6ZV9jbS0+bmFtZSAhPSBOVUxMOyBzc2l6ZV9jbSsrKSB7CisgICAgICAgIEFTU0lHTl9QVFIob2JqLCBQeUxvbmdfRnJvbVNzaXplX3Qoc3NpemVfY20tPnZhbCkpOworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIHNzaXplX2NtLT5uYW1lLCBvYmopKTsKKyAgICAgICAgb2JqID0gTlVMTDsKKyAgICB9CisKKyAgICAvKiBJbml0IGludCBjb25zdGFudHMgKi8KKyAgICBmb3IgKGludF9jbSA9IGludF9jb25zdGFudHM7IGludF9jbS0+bmFtZSAhPSBOVUxMOyBpbnRfY20rKykgeworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgaW50X2NtLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X2NtLT52YWwpKTsKKyAgICB9CisKKyAgICAvKiBJbml0IHN0cmluZyBjb25zdGFudHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgX1BZX0RFQ19ST1VORF9HVUFSRDsgaSsrKSB7CisgICAgICAgIEFTU0lHTl9QVFIocm91bmRfbWFwW2ldLCBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhtcGRfcm91bmRfc3RyaW5nW2ldKSk7CisgICAgICAgIFB5X0lOQ1JFRihyb3VuZF9tYXBbaV0pOworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIG1wZF9yb3VuZF9zdHJpbmdbaV0sIHJvdW5kX21hcFtpXSkpOworICAgIH0KKworICAgIC8qIEFkZCBzcGVjaWZpY2F0aW9uIHZlcnNpb24gbnVtYmVyICovCisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICIgMS43MCIpKTsKKworCisgICAgcmV0dXJuIG07CisKKworZXJyb3I6CisgICAgUHlfQ0xFQVIob2JqKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKG51bWJlcnMpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoTnVtYmVyKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKFJhdGlvbmFsKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKGNvbGxlY3Rpb25zKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKE11dGFibGVNYXBwaW5nKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKFNpZ25hbFR1cGxlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKERlY2ltYWxUdXBsZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyNpZmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICBQeV9DTEVBUihtb2R1bGVfY29udGV4dCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyNlbHNlCisgICAgUHlfQ0xFQVIoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKHRsc19jb250ZXh0X2tleSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyNlbmRpZgorICAgIFB5X0NMRUFSKGJhc2ljX2NvbnRleHRfdGVtcGxhdGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihtKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworCisgICAgcmV0dXJuIE5VTEw7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaCBiL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NDkwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtMCwwICsxLDc3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogTW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IFN0ZWZhbiBLcmFoLgorICovCisKKworI2lmbmRlZiBET0NTVFJJTkdTX0gKKyNkZWZpbmUgRE9DU1RSSU5HU19ICisKKworI2luY2x1ZGUgInB5bWFjcm8uaCIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworUHlEb2NfU1RSVkFSKGRvY19fZGVjaW1hbCwKKyJDIGRlY2ltYWwgYXJpdGhtZXRpYyBtb2R1bGUiKTsKKworUHlEb2NfU1RSVkFSKGRvY19nZXRjb250ZXh0LCJcblwKK2dldGNvbnRleHQoKSAtIEdldCB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NldGNvbnRleHQsIlxuXAorc2V0Y29udGV4dChjKSAtIFNldCBhIG5ldyBkZWZhdWx0IGNvbnRleHQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwiXG5cCitsb2NhbGNvbnRleHQoY3R4PU5vbmUpIC0gUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGRlZmF1bHRcblwKK2NvbnRleHQgdG8gYSBjb3B5IG9mIGN0eCBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlXG5cCitwcmV2aW91cyBkZWZhdWx0IGNvbnRleHQgd2hlbiBleGl0aW5nIHRoZSB3aXRoLXN0YXRlbWVudC4gSWYgbm8gY29udGV4dCBpc1xuXAorc3BlY2lmaWVkLCBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorUHlEb2NfU1RSVkFSKGRvY19pZWVlX2NvbnRleHQsIlxuXAorSUVFRUNvbnRleHQoYml0cykgLSBSZXR1cm4gYSBjb250ZXh0IG9iamVjdCBpbml0aWFsaXplZCB0byB0aGUgcHJvcGVyIHZhbHVlcyBmb3JcblwKK29uZSBvZiB0aGUgSUVFRSBpbnRlcmNoYW5nZSBmb3JtYXRzLiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyIGFuZFxuXAorbGVzcyB0aGFuIElFRUVfQ09OVEVYVF9NQVhfQklUUy4gRm9yIHRoZSBtb3N0IGNvbW1vbiB2YWx1ZXMsIHRoZSBjb25zdGFudHNcblwKK0RFQ0lNQUwzMiwgREVDSU1BTDY0IGFuZCBERUNJTUFMMTI4IGFyZSBwcm92aWRlZC5cblwKK1xuIik7CisjZW5kaWYKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwgT2JqZWN0IGFuZCBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1B5RG9jX1NUUlZBUihkb2NfZGVjaW1hbCwiXG5cCitEZWNpbWFsKHZhbHVlPVwiMFwiLCBjb250ZXh0PU5vbmUpOiBDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QuXG5cCit2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciwgc3RyaW5nLCB0dXBsZSwgb3IgYW5vdGhlciBEZWNpbWFsIG9iamVjdC5cblwKK0lmIG5vIHZhbHVlIGlzIGdpdmVuLCByZXR1cm4gRGVjaW1hbCgnMCcpLiBUaGUgY29udGV4dCBkb2VzIG5vdCBhZmZlY3RcblwKK3RoZSBjb252ZXJzaW9uIGFuZCBpcyBvbmx5IHBhc3NlZCB0byBkZXRlcm1pbmUgaWYgdGhlIEludmFsaWRPcGVyYXRpb25cblwKK3RyYXAgaXMgYWN0aXZlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19hZGp1c3RlZCwiXG5cCithZGp1c3RlZCgpIC0gUmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgbnVtYmVyLlxuXAorXG5cCitEZWZpbmVkIGFzIGV4cCArIGRpZ2l0cyAtIDEuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2FzX3R1cGxlLCJcblwKK2FzX3R1cGxlKCkgLSBSZXR1cm4gYSB0dXBsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jYW5vbmljYWwsIlxuXAorY2Fub25pY2FsKCkgLSBSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuIEN1cnJlbnRseSxcblwKK3RoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb25cblwKK3JldHVybnMgaXRzIGFyZ3VtZW50IHVuY2hhbmdlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZSwiXG5cCitjb21wYXJlKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gQ29tcGFyZSBzZWxmIHRvIG90aGVyLiBSZXR1cm4gYSBkZWNpbWFsIHZhbHVlOlxuXAorXG5cCisgICAgYSBvciBiIGlzIGEgTmFOID09PiBEZWNpbWFsKCdOYU4nKVxuXAorICAgIGEgPCBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnLTEnKVxuXAorICAgIGEgPT0gYiAgICAgICAgICA9PT4gRGVjaW1hbCgnMCcpXG5cCisgICAgYSA+IGIgICAgICAgICAgID09PiBEZWNpbWFsKCcxJylcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV9zaWduYWwsIlxuXAorY29tcGFyZV9zaWduYWwob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBJZGVudGljYWwgdG8gY29tcGFyZSwgZXhjZXB0IHRoYXRcblwKK2FsbCBOYU5zIHNpZ25hbC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwiXG5cCitjb21wYXJlX3RvdGFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXJcblwKK2Fic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyIG51bWVyaWNhbCB2YWx1ZS4gU2ltaWxhciB0byB0aGVcblwKK2NvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0IGdpdmVzIGEgdG90YWwgb3JkZXJpbmcgb24gRGVjaW1hbCBpbnN0YW5jZXMuXG5cCitUd28gRGVjaW1hbCBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGJ1dCBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zXG5cCitjb21wYXJlIHVuZXF1YWwgaW4gdGhpcyBvcmRlcmluZzpcblwKK1xuXAorICAgID4+PiBEZWNpbWFsKCcxMi4wJykuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMicpKVxuXAorICAgIERlY2ltYWwoJy0xJylcblwKK1xuXAorUXVpZXQgYW5kIHNpZ25hbGluZyBOYU5zIGFyZSBhbHNvIGluY2x1ZGVkIGluIHRoZSB0b3RhbCBvcmRlcmluZy4gVGhlIHJlc3VsdFxuXAorb2YgdGhpcyBmdW5jdGlvbiBpcyBEZWNpbWFsKCcwJykgaWYgYm90aCBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uLFxuXAorRGVjaW1hbCgnLTEnKSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsb3dlciBpbiB0aGUgdG90YWwgb3JkZXIgdGhhbiB0aGUgc2Vjb25kLFxuXAorYW5kIERlY2ltYWwoJzEnKSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBoaWdoZXIgaW4gdGhlIHRvdGFsIG9yZGVyIHRoYW4gdGhlXG5cCitzZWNvbmQgb3BlcmFuZC4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9mIHRoZSB0b3RhbCBvcmRlci5cblwKK1xuXAorVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWRcblwKK2FuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuIEFzIGFuIGV4Y2VwdGlvbiwgdGhlIEMgdmVyc2lvbiBtYXkgcmFpc2VcblwKK0ludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbF9tYWcsIlxuXAorY29tcGFyZV90b3RhbF9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpclxuXAorYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgdmFsdWUgYXMgaW4gY29tcGFyZV90b3RhbCgpLCBidXRcblwKK2lnbm9yaW5nIHRoZSBzaWduIG9mIGVhY2ggb3BlcmFuZC4geC5jb21wYXJlX3RvdGFsX21hZyh5KSBpcyBlcXVpdmFsZW50IHRvXG5cCit4LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAorXG5cCitUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAorYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAorSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb25qdWdhdGUsIlxuXAorY29uanVnYXRlKCkgLSBSZXR1cm4gc2VsZi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29weV9hYnMsIlxuXAorY29weV9hYnMoKSAtIFJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LiBUaGlzIG9wZXJhdGlvblxuXAoraXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQgYW5kIG5vIHJvdW5kaW5nXG5cCitpcyBwZXJmb3JtZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvcHlfbmVnYXRlLCJcblwKK2NvcHlfbmVnYXRlKCkgLSBSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gVGhpcyBvcGVyYXRpb24gaXNcblwKK3VuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkIGFuZCBubyByb3VuZGluZ1xuXAoraXMgcGVyZm9ybWVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb3B5X3NpZ24sIlxuXAorY29weV9zaWduKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoXG5cCit0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBGb3IgZXhhbXBsZTpcblwKK1xuXAorICAgID4+PiBEZWNpbWFsKCcyLjMnKS5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNScpKVxuXAorICAgIERlY2ltYWwoJy0yLjMnKVxuXAorXG5cCitUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAorYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAorSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19leHAsIlxuXAorZXhwKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAobmF0dXJhbCkgZXhwb25lbnRpYWwgZnVuY3Rpb25cblwKK2UqKnggYXQgdGhlIGdpdmVuIG51bWJlci4gVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZVxuXAorYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2Zyb21fZmxvYXQsIlxuXAorZnJvbV9mbG9hdChmKSAtIENsYXNzIG1ldGhvZCB0aGF0IGNvbnZlcnRzIGEgZmxvYXQgdG8gYSBkZWNpbWFsIG51bWJlciwgZXhhY3RseS5cblwKK1NpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCxcblwKK0RlY2ltYWwuZnJvbV9mbG9hdCgwLjEpIGlzIG5vdCB0aGUgc2FtZSBhcyBEZWNpbWFsKCcwLjEnKS5cblwKK1xuXAorICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKVxuXAorICAgIERlY2ltYWwoJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpXG5cCisgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpXG5cCisgICAgRGVjaW1hbCgnTmFOJylcblwKKyAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSlcblwKKyAgICBEZWNpbWFsKCdJbmZpbml0eScpXG5cCisgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKVxuXAorICAgIERlY2ltYWwoJy1JbmZpbml0eScpXG5cCitcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfZm1hLCJcblwKK2ZtYShvdGhlciwgdGhpcmQsIGNvbnRleHQ9Tm9uZSkgLSBGdXNlZCBtdWx0aXBseS1hZGQuIFJldHVybiBzZWxmKm90aGVyK3RoaXJkXG5cCit3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZSBpbnRlcm1lZGlhdGUgcHJvZHVjdCBzZWxmKm90aGVyLlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoMikuZm1hKDMsIDUpXG5cCisgICAgRGVjaW1hbCgnMTEnKVxuXAorXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX2Nhbm9uaWNhbCwiXG5cCitpc19jYW5vbmljYWwoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBjYW5vbmljYWwgYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK0N1cnJlbnRseSwgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIGFsd2F5c1xuXAorcmV0dXJucyBUcnVlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19maW5pdGUsIlxuXAoraXNfZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBmaW5pdGUgbnVtYmVyLCBhbmQgRmFsc2UgaWYgdGhlXG5cCithcmd1bWVudCBpcyBpbmZpbml0ZSBvciBhIE5hTi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfaW5maW5pdGUsIlxuXAoraXNfaW5maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBlaXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmVcblwKK2luZmluaXR5IGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX25hbiwiXG5cCitpc19uYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChxdWlldCBvciBzaWduYWxpbmcpIE5hTiBhbmRcblwKK0ZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfbm9ybWFsLCJcblwKK2lzX25vcm1hbChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9ybWFsIGZpbml0ZVxuXAorbm9uLXplcm8gbnVtYmVyIHdpdGggYW4gYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uXG5cCitSZXR1cm4gRmFsc2UgaWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX3FuYW4sIlxuXAoraXNfcW5hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19zaWduZWQsIlxuXAoraXNfc2lnbmVkKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaGFzIGEgbmVnYXRpdmUgc2lnbiBhbmRcblwKK0ZhbHNlIG90aGVyd2lzZS4gTm90ZSB0aGF0IGJvdGggemVyb3MgYW5kIE5hTnMgY2FuIGNhcnJ5IHNpZ25zLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19zbmFuLCJcblwKK2lzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfc3Vibm9ybWFsLCJcblwKK2lzX3N1Ym5vcm1hbChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIHN1Ym5vcm1hbCwgYW5kXG5cCitGYWxzZSBvdGhlcndpc2UuIEEgbnVtYmVyIGlzIHN1Ym5vcm1hbCBpZiBpdCBpcyBub24temVybywgZmluaXRlLCBhbmQgaGFzIGFuXG5cCithZGp1c3RlZCBleHBvbmVudCBsZXNzIHRoYW4gRW1pbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfemVybywiXG5cCitpc196ZXJvKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xuLCJcblwKK2xuKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAorVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAorY29ycmVjdGx5IHJvdW5kZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZzEwLCJcblwKK2xvZzEwKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC5cblwKK1RoZSBmdW5jdGlvbiBhbHdheXMgdXNlcyB0aGUgUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2diLCJcblwKK2xvZ2IoY29udGV4dD1Ob25lKSAtIEZvciBhIG5vbi16ZXJvIG51bWJlciwgcmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudFxuXAorb2YgdGhlIG9wZXJhbmQgYXMgYSBEZWNpbWFsIGluc3RhbmNlLiBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW5cblwKK0RlY2ltYWwoJy1JbmZpbml0eScpIGlzIHJldHVybmVkIGFuZCB0aGUgRGl2aXNpb25CeVplcm8gY29uZGl0aW9uIGlzXG5cCityYWlzZWQuIElmIHRoZSBvcGVyYW5kIGlzIGFuIGluZmluaXR5IHRoZW4gRGVjaW1hbCgnSW5maW5pdHknKSBpcyByZXR1cm5lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9hbmQsIlxuXAorbG9naWNhbF9hbmQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgYW5kIG9mIHRoZSB0d29cblwKKyhsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9pbnZlcnQsIlxuXAorbG9naWNhbF9pbnZlcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlXG5cCisobG9naWNhbCkgb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9vciwiXG5cCitsb2dpY2FsX29yKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIG9yIG9mIHRoZSB0d29cblwKKyhsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF94b3IsIlxuXAorbG9naWNhbF94b3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgZXhjbHVzaXZlIG9yIG9mIHRoZVxuXAordHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbWF4LCJcblwKK21heChvdGhlciwgY29udGV4dD1Ob25lKSAtIE1heGltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGFcblwKK3F1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX21heF9tYWcsIlxuXAorbWF4X21hZyhvdGhlciwgY29udGV4dD1Ob25lKSAtIFNpbWlsYXIgdG8gdGhlIG1heCgpIG1ldGhvZCwgYnV0IHRoZVxuXAorY29tcGFyaXNvbiBpcyBkb25lIHVzaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19taW4sIlxuXAorbWluKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gTWluaW11bSBvZiBzZWxmIGFuZCBvdGhlci4gSWYgb25lIG9wZXJhbmQgaXMgYVxuXAorcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbWluX21hZywiXG5cCittaW5fbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlXG5cCitjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsIlxuXAorbmV4dF9taW51cyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZVxuXAorZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXRcblwKK2lzIHNtYWxsZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbmV4dF9wbHVzLCJcblwKK25leHRfcGx1cyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBzbWFsbGVzdCBudW1iZXIgcmVwcmVzZW50YWJsZSBpbiB0aGVcblwKK2dpdmVuIGNvbnRleHQgKG9yIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIGdpdmVuKSB0aGF0XG5cCitpcyBsYXJnZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbmV4dF90b3dhcmQsIlxuXAorbmV4dF90b3dhcmQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm5cblwKK3RoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKK0lmIGJvdGggb3BlcmFuZHMgYXJlIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kXG5cCit3aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX25vcm1hbGl6ZSwiXG5cCitub3JtYWxpemUoY29udGV4dD1Ob25lKSAtIE5vcm1hbGl6ZSB0aGUgbnVtYmVyIGJ5IHN0cmlwcGluZyB0aGUgcmlnaHRtb3N0XG5cCit0cmFpbGluZyB6ZXJvcyBhbmQgY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS5cblwKK1VzZWQgZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLiBGb3JcblwKK2V4YW1wbGUsIERlY2ltYWwoJzMyLjEwMCcpIGFuZCBEZWNpbWFsKCcwLjMyMTAwMGUrMicpIGJvdGggbm9ybWFsaXplIHRvIHRoZVxuXAorZXF1aXZhbGVudCB2YWx1ZSBEZWNpbWFsKCczMi4xJykuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX251bWJlcl9jbGFzcywiXG5cCitudW1iZXJfY2xhc3MoY29udGV4dD1Ob25lKSAtIFJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjbGFzcyBvZiB0aGVcblwKK29wZXJhbmQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZW4gc3RyaW5nczpcblwKK1xuXAorICAgICogJy1JbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBpbmZpbml0eS5cblwKKyAgICAqICctTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgbm9ybWFsIG51bWJlci5cblwKKyAgICAqICctU3Vibm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlIGFuZCBzdWJub3JtYWwuXG5cCisgICAgKiAnLVplcm8nLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBuZWdhdGl2ZSB6ZXJvLlxuXAorICAgICogJytaZXJvJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcG9zaXRpdmUgemVyby5cblwKKyAgICAqICcrU3Vibm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIHBvc2l0aXZlIGFuZCBzdWJub3JtYWwuXG5cCisgICAgKiAnK05vcm1hbCcsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHBvc2l0aXZlIG5vcm1hbCBudW1iZXIuXG5cCisgICAgKiAnK0luZmluaXR5JywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIHBvc2l0aXZlIGluZmluaXR5LlxuXAorICAgICogJ05hTicsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiAoTm90IGEgTnVtYmVyKS5cblwKKyAgICAqICdzTmFOJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTi5cblwKK1xuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwiXG5cCitxdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGVcblwKK2ZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoJzEuNDE0MjEzNTYnKS5xdWFudGl6ZShEZWNpbWFsKCcxLjAwMCcpKVxuXAorICAgIERlY2ltYWwoJzEuNDE0JylcblwKK1xuXAorVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZSBxdWFudGl6ZVxuXAorb3BlcmF0aW9uIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBwcmVjaXNpb24sIHRoZW4gYW4gSW52YWxpZE9wZXJhdGlvbiBpcyBzaWduYWxlZC5cblwKK1RoaXMgZ3VhcmFudGVlcyB0aGF0LCB1bmxlc3MgdGhlcmUgaXMgYW4gZXJyb3IgY29uZGl0aW9uLCB0aGUgcXVhbnRpemVkIGV4cG9uZW50XG5cCitpcyBhbHdheXMgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kLlxuXAorXG5cCitBbHNvIHVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBxdWFudGl6ZSBuZXZlciBzaWduYWxzIFVuZGVyZmxvdywgZXZlbiBpZiB0aGVcblwKK3Jlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuXG5cCitcblwKK0lmIHRoZSBleHBvbmVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgbGFyZ2VyIHRoYW4gdGhhdCBvZiB0aGUgZmlyc3QsIHRoZW5cblwKK3JvdW5kaW5nIG1heSBiZSBuZWNlc3NhcnkuIEluIHRoaXMgY2FzZSwgdGhlIHJvdW5kaW5nIG1vZGUgaXMgZGV0ZXJtaW5lZCBieSB0aGVcblwKK3JvdW5kaW5nIGFyZ3VtZW50IGlmIGdpdmVuLCBlbHNlIGJ5IHRoZSBnaXZlbiBjb250ZXh0IGFyZ3VtZW50OyBpZiBuZWl0aGVyXG5cCithcmd1bWVudCBpcyBnaXZlbiwgdGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dCBpcyB1c2VkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19yYWRpeCwiXG5cCityYWRpeCgpIC0gUmV0dXJuIERlY2ltYWwoMTApLCB0aGUgcmFkaXggKGJhc2UpIGluIHdoaWNoIHRoZSBEZWNpbWFsIGNsYXNzIGRvZXNcblwKK2FsbCBpdHMgYXJpdGhtZXRpYy4gSW5jbHVkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfcmVtYWluZGVyX25lYXIsIlxuXAorcmVtYWluZGVyX25lYXIob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGRpdmlkaW5nXG5cCitzZWxmIGJ5IG90aGVyLiBUaGlzIGRpZmZlcnMgZnJvbSBzZWxmICUgb3RoZXIgaW4gdGhhdCB0aGUgc2lnbiBvZiB0aGVcblwKK3JlbWFpbmRlciBpcyBjaG9zZW4gc28gYXMgdG8gbWluaW1pemUgaXRzIGFic29sdXRlIHZhbHVlLiBNb3JlIHByZWNpc2VseSwgdGhlXG5cCityZXR1cm4gdmFsdWUgaXMgc2VsZiAtIG4gKiBvdGhlciB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdG8gdGhlIGV4YWN0XG5cCit2YWx1ZSBvZiBzZWxmIC8gb3RoZXIsIGFuZCBpZiB0d28gaW50ZWdlcnMgYXJlIGVxdWFsbHkgbmVhciB0aGVuIHRoZSBldmVuIG9uZVxuXAoraXMgY2hvc2VuLlxuXAorXG5cCitJZiB0aGUgcmVzdWx0IGlzIHplcm8gdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHNlbGYuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwiXG5cCityb3RhdGUob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZVxuXAorZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZCBvcGVyYW5kXG5cCittdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZSBhYnNvbHV0ZVxuXAordmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHJvdGF0ZS4gSWYgdGhlIHNlY29uZFxuXAorb3BlcmFuZCBpcyBwb3NpdGl2ZSB0aGVuIHJvdGF0aW9uIGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2Ugcm90YXRpb24gaXMgdG8gdGhlXG5cCityaWdodC4gVGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIHRvXG5cCitsZW5ndGggcHJlY2lzaW9uIGlmIG5lY2Vzc2FyeS4gVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFyZVxuXAordW5jaGFuZ2VkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19zYW1lX3F1YW50dW0sIlxuXAorc2FtZV9xdWFudHVtKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gVGVzdCB3aGV0aGVyIHNlbGYgYW5kIG90aGVyIGhhdmUgdGhlXG5cCitzYW1lIGV4cG9uZW50IG9yIHdoZXRoZXIgYm90aCBhcmUgTmFOLlxuXAorXG5cCitUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAorYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAorSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19zY2FsZWIsIlxuXAorc2NhbGViKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIGV4cG9uZW50XG5cCithZGp1c3RlZCB0aGUgc2Vjb25kLiBFcXVpdmFsZW50bHksIHJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5XG5cCisxMCoqb3RoZXIuIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NoaWZ0LCJcblwKK3NoaWZ0KG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZlxuXAordGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50IHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSBzZWNvbmRcblwKK29wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGVcblwKK2Fic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzaGlmdC5cblwKK0lmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBwb3NpdGl2ZSwgdGhlbiB0aGUgc2hpZnQgaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZVxuXAordGhlIHNoaWZ0IGlzIHRvIHRoZSByaWdodC4gRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUgY29lZmZpY2llbnQgYXJlIHplcm9zLlxuXAorVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSB1bmNoYW5nZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NxcnQsIlxuXAorc3FydChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgdG8gZnVsbCBwcmVjaXNpb24uXG5cCitUaGUgcmVzdWx0IGlzIGNvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZSBST1VORF9IQUxGX0VWRU4gcm91bmRpbmcgbW9kZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfdG9fZW5nX3N0cmluZywiXG5cCit0b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkgLSBDb252ZXJ0IHRvIGFuIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLlxuXAorRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmVcblwKK2FyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLiBGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMTIzRSsxJylcblwKK2lzIGNvbnZlcnRlZCB0byBEZWNpbWFsKCcxLjIzRSszJykuXG5cCitcblwKK1RoZSB2YWx1ZSBvZiBjb250ZXh0LmNhcGl0YWxzIGRldGVybWluZXMgd2hldGhlciB0aGUgZXhwb25lbnQgc2lnbiBpcyBsb3dlclxuXAorb3IgdXBwZXIgY2FzZS4gT3RoZXJ3aXNlLCB0aGUgY29udGV4dCBkb2VzIG5vdCBhZmZlY3QgdGhlIG9wZXJhdGlvbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWwsIlxuXAordG9faW50ZWdyYWwocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIElkZW50aWNhbCB0byB0aGVcblwKK3RvX2ludGVncmFsX3ZhbHVlKCkgbWV0aG9kLiBUaGUgdG9faW50ZWdyYWwoKSBuYW1lIGhhcyBiZWVuIGtlcHRcblwKK2ZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX2V4YWN0LCJcblwKK3RvX2ludGVncmFsX2V4YWN0KHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdFxuXAoraW50ZWdlciwgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZCBhcyBhcHByb3ByaWF0ZSBpZiByb3VuZGluZyBvY2N1cnMuXG5cCitUaGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2VcblwKK2J5IHRoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZVxuXAorb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLCJcblwKK3RvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdFxuXAoraW50ZWdlciB3aXRob3V0IHNpZ25hbGluZyBJbmV4YWN0IG9yIFJvdW5kZWQuIFRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWRcblwKK2J5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXJcblwKK3BhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXNcblwKK3VzZWQuXG5cCitcbiIpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUHlEb2NfU1RSVkFSKGRvY19jb250ZXh0LCJcblwKK1RoZSBjb250ZXh0IGFmZmVjdHMgYWxtb3N0IGFsbCBvcGVyYXRpb25zIGFuZCBjb250cm9scyByb3VuZGluZyxcblwKK092ZXIvVW5kZXJmbG93LCByYWlzaW5nIG9mIGV4Y2VwdGlvbnMgYW5kIG11Y2ggbW9yZS4gQSBuZXcgY29udGV4dFxuXAorY2FuIGJlIGNvbnN0cnVjdGVkIGFzIGZvbGxvd3M6XG5cCitcblwKKyAgICA+Pj4gYyA9IENvbnRleHQocHJlYz0yOCwgRW1pbj0tNDI1MDAwMDAwLCBFbWF4PTQyNTAwMDAwMCxcblwKKyAgICAuLi4gICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBjYXBpdGFscz0xLCBjbGFtcD0xLFxuXAorICAgIC4uLiAgICAgICAgICAgICB0cmFwcz1bSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIE92ZXJmbG93XSxcblwKKyAgICAuLi4gICAgICAgICAgICAgZmxhZ3M9W10pXG5cCisgICAgPj4+XG5cCitcblwKK1xuIik7CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitQeURvY19TVFJWQVIoZG9jX2N0eF9hcHBseSwiXG5cCithcHBseSh4KSAtIEFwcGx5IHNlbGYgdG8gRGVjaW1hbCB4LlxuXAorXG4iKTsKKyNlbmRpZgorCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl9mbGFncywiXG5cCitjbGVhcl9mbGFncygpIC0gUmVzZXQgYWxsIGZsYWdzIHRvIEZhbHNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY2xlYXJfdHJhcHMsIlxuXAorY2xlYXJfdHJhcHMoKSAtIFNldCBhbGwgdHJhcHMgdG8gRmFsc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5LCJcblwKK2NvcHkoKSAtIFJldHVybiBhIGR1cGxpY2F0ZSBvZiB0aGUgY29udGV4dCB3aXRoIGFsbCBmbGFncyBjbGVhcmVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLCJcblwKK2NvcHlfZGVjaW1hbCh4KSAtIFJldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWwsIlxuXAorY3JlYXRlX2RlY2ltYWwoeCkgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIHgsIHVzaW5nIHNlbGYgYXMgdGhlXG5cCitjb250ZXh0LiBVbmxpa2UgdGhlIERlY2ltYWwgY29uc3RydWN0b3IsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlIGNvbnRleHRcblwKK2xpbWl0cy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQsIlxuXAorY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChmKSAtIENyZWF0ZSBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGZyb20gZmxvYXQgZi5cblwKK1VubGlrZSB0aGUgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgY2xhc3MgbWV0aG9kLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZVxuXAorY29udGV4dCBsaW1pdHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdGlueSwiXG5cCitFdGlueSgpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1pbiAtIHByZWMgKyAxLCB3aGljaCBpcyB0aGUgbWluaW11bVxuXAorZXhwb25lbnQgdmFsdWUgZm9yIHN1Ym5vcm1hbCByZXN1bHRzLiBXaGVuIHVuZGVyZmxvdyBvY2N1cnMsIHRoZSBleHBvbmVudFxuXAoraXMgc2V0IHRvIEV0aW55LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfRXRvcCwiXG5cCitFdG9wKCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWF4IC0gcHJlYyArIDEuIFRoaXMgaXMgdGhlIG1heGltdW0gZXhwb25lbnRcblwKK2lmIHRoZSBfY2xhbXAgZmllbGQgb2YgdGhlIGNvbnRleHQgaXMgc2V0IHRvIDEgKElFRUUgY2xhbXAgbW9kZSkuIEV0b3AoKSBtdXN0XG5cCitub3QgYmUgbmVnYXRpdmUuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9hYnMsIlxuXAorYWJzKHgpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfYWRkLCJcblwKK2FkZCh4LCB5KSAtIFJldHVybiB0aGUgc3VtIG9mIHggYW5kIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsIlxuXAorY2Fub25pY2FsKHgpIC0gUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLCJcblwKK2NvbXBhcmUoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3NpZ25hbCwiXG5cCitjb21wYXJlX3NpZ25hbCh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS4gQWxsIE5hTnMgc2lnbmFsLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV90b3RhbCwiXG5cCitjb21wYXJlX3RvdGFsKHgsIHkpIC0gQ29tcGFyZSB4IGFuZCB5IHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV90b3RhbF9tYWcsIlxuXAorY29tcGFyZV90b3RhbF9tYWcoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24sXG5cCitpZ25vcmluZyBzaWduLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9hYnMsIlxuXAorY29weV9hYnMoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfbmVnYXRlLCJcblwKK2NvcHlfbmVnYXRlKHgpIC0gUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X3NpZ24sIlxuXAorY29weV9zaWduKHgsIHkpIC0gQ29weSB0aGUgc2lnbiBmcm9tIHkgdG8geC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZSwiXG5cCitkaXZpZGUoeCwgeSkgLSBSZXR1cm4geCBkaXZpZGVkIGJ5IHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZpZGVfaW50LCJcblwKK2RpdmlkZV9pbnQoeCwgeSkgLSBSZXR1cm4geCBkaXZpZGVkIGJ5IHksIHRydW5jYXRlZCB0byBhbiBpbnRlZ2VyLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2bW9kLCJcblwKK2Rpdm1vZCh4LCB5KSAtIFJldHVybiBxdW90aWVudCBhbmQgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiB4IC8geS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2V4cCwiXG5cCitleHAoeCkgLSBSZXR1cm4gZSAqKiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZm1hLCJcblwKK2ZtYSh4LCB5LCB6KSAtIFJldHVybiB4IG11bHRpcGxpZWQgYnkgeSwgcGx1cyB6LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfY2Fub25pY2FsLCJcblwKK2lzX2Nhbm9uaWNhbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgY2Fub25pY2FsLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19maW5pdGUsIlxuXAoraXNfZmluaXRlKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBmaW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2luZmluaXRlLCJcblwKK2lzX2luZmluaXRlKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBpbmZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbmFuLCJcblwKK2lzX25hbih4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBxTmFOIG9yIHNOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX25vcm1hbCwiXG5cCitpc19ub3JtYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgbm9ybWFsIG51bWJlciwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfcW5hbiwiXG5cCitpc19xbmFuKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBhIHF1aWV0IE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc2lnbmVkLCJcblwKK2lzX3NpZ25lZCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgbmVnYXRpdmUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3NuYW4sIlxuXAoraXNfc25hbigpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBhIHNpZ25hbGluZyBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3N1Ym5vcm1hbCwiXG5cCitpc19zdWJub3JtYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIHN1Ym5vcm1hbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfemVybywiXG5cCitpc196ZXJvKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBhIHplcm8sIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xuLCJcblwKK2xuKHgpIC0gUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nMTAsIlxuXAorbG9nMTAoeCkgLSBSZXR1cm4gdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2diLCJcblwKK2xvZ2IoeCkgLSBSZXR1cm4gdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG9wZXJhbmQncyBNU0QuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2dpY2FsX2FuZCwiXG5cCitsb2dpY2FsX2FuZCh4LCB5KSAtIERpZ2l0LXdpc2UgYW5kIG9mIHggYW5kIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2dpY2FsX2ludmVydCwiXG5cCitsb2dpY2FsX2ludmVydCh4KSAtIEludmVydCBhbGwgZGlnaXRzIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2dpY2FsX29yLCJcblwKK2xvZ2ljYWxfb3IoeCwgeSkgLSBEaWdpdC13aXNlIG9yIG9mIHggYW5kIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2dpY2FsX3hvciwiXG5cCitsb2dpY2FsX3hvcih4LCB5KSAtIERpZ2l0LXdpc2UgeG9yIG9mIHggYW5kIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9tYXgsIlxuXAorbWF4KHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm4gdGhlIG1heGltdW0uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9tYXhfbWFnLCJcblwKK21heF9tYWcoeCwgeSkgLSBDb21wYXJlIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW4sIlxuXAorbWluKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm4gdGhlIG1pbmltdW0uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW5fbWFnLCJcblwKK21pbl9tYWcoeCwgeSkgLSBDb21wYXJlIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW51cywiXG5cCittaW51cyh4KSAtIE1pbnVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggbWludXMgb3BlcmF0b3IgaW4gUHl0aG9uLFxuXAorYnV0IGFwcGxpZXMgdGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X211bHRpcGx5LCJcblwKK211bHRpcGx5KHgsIHkpIC0gUmV0dXJuIHRoZSBwcm9kdWN0IG9mIHggYW5kIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X21pbnVzLCJcblwKK25leHRfbWludXMoeCkgLSBSZXR1cm4gdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3BsdXMsIlxuXAorbmV4dF9wbHVzKHgpIC0gUmV0dXJuIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF90b3dhcmQsIlxuXAorbmV4dF90b3dhcmQoeCkgLSBSZXR1cm4gdGhlIG51bWJlciBjbG9zZXN0IHRvIHgsIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcyB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbm9ybWFsaXplLCJcblwKK25vcm1hbGl6ZSh4KSAtIFJlZHVjZSB4IHRvIGl0cyBzaW1wbGVzdCBmb3JtLiBBbGlhcyBmb3IgcmVkdWNlKHgpLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbnVtYmVyX2NsYXNzLCJcblwKK251bWJlcl9jbGFzcyh4KSAtIFJldHVybiBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcGx1cywiXG5cCitwbHVzKHgpIC0gUGx1cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IHBsdXMgb3BlcmF0b3IgaW4gUHl0aG9uLFxuXAorYnV0IGFwcGxpZXMgdGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLCJcblwKK3Bvd2VyKHgsIHkpIC0gQ29tcHV0ZSB4Kip5LiBJZiB4IGlzIG5lZ2F0aXZlLCB0aGVuIHkgbXVzdCBiZSBpbnRlZ3JhbC5cblwKK1RoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyB5IGlzIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZVxuXAorYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuIEluIHRoZSBQeXRob24gdmVyc2lvblxuXAordGhlIHJlc3VsdCBpcyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGluIHRoZSBDIHZlcnNpb24gdGhlIHJlc3VsdCBpc1xuXAorYWxtb3N0IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1xuXAorcG93ZXIoeCwgeSwgbSkgLSBDb21wdXRlICh4Kip5KSAlIG0uIFRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIGhvbGQ6XG5cCitcblwKKyAgICAqIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbFxuXAorICAgICogeSBtdXN0IGJlIG5vbm5lZ2F0aXZlXG5cCisgICAgKiBhdCBsZWFzdCBvbmUgb2YgeCBvciB5IG11c3QgYmUgbm9uemVyb1xuXAorICAgICogbSBtdXN0IGJlIG5vbnplcm8gYW5kIGxlc3MgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZVxuXAorXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwiXG5cCitxdWFudGl6ZSh4LCB5KSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9yYWRpeCwiXG5cCityYWRpeCgpIC0gUmV0dXJuIDEwLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyLCJcblwKK3JlbWFpbmRlcih4LCB5KSAtIFJldHVybiB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4gVGhlIHNpZ24gb2ZcblwKK3RoZSByZXN1bHQsIGlmIG5vbi16ZXJvLCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBvcmlnaW5hbCBkaXZpZGVuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3JlbWFpbmRlcl9uZWFyLCJcblwKK3JlbWFpbmRlcl9uZWFyKHgsIHkpIC0gUmV0dXJuIHggLSB5ICogbiwgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRoZVxuXAorZXhhY3QgdmFsdWUgb2YgeCAvIHkgKGlmIHRoZSByZXN1bHQgaXMgMCB0aGVuIGl0cyBzaWduIHdpbGwgYmUgdGhlIHNpZ24gb2YgeCkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9yb3RhdGUsIlxuXAorcm90YXRlKHgsIHkpIC0gUmV0dXJuIGEgY29weSBvZiB4LCByb3RhdGVkIGJ5IHkgcGxhY2VzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc2FtZV9xdWFudHVtLCJcblwKK3NhbWVfcXVhbnR1bSh4LCB5KSAtIFJldHVybiBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NjYWxlYiwiXG5cCitzY2FsZWIoeCwgeSkgLSBSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWVcblwKK3RvIGl0cyBleHAuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9zaGlmdCwiXG5cCitzaGlmdCh4LCB5KSAtIFJldHVybiBhIGNvcHkgb2YgeCwgc2hpZnRlZCBieSB5IHBsYWNlcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsIlxuXAorc3FydCh4KSAtIFNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LCJcblwKK3N1YnRyYWN0KHgsIHkpIC0gUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2VuZ19zdHJpbmcsIlxuXAordG9fZW5nX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIGVuZ2luZWVyaW5nIG5vdGF0aW9uLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWwsIlxuXAordG9faW50ZWdyYWwoeCkgLSBJZGVudGljYWwgdG8gdG9faW50ZWdyYWxfdmFsdWUoeCkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF9leGFjdCwiXG5cCit0b19pbnRlZ3JhbF9leGFjdCh4KSAtIFJvdW5kIHRvIGFuIGludGVnZXIuIFNpZ25hbCBpZiB0aGUgcmVzdWx0IGlzXG5cCityb3VuZGVkIG9yIGluZXhhY3QuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwiXG5cCit0b19pbnRlZ3JhbF92YWx1ZSh4KSAtIFJvdW5kIHRvIGFuIGludGVnZXIuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLCJcblwKK3RvX3NjaV9zdHJpbmcoeCkgLSBDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCitcbiIpOworCisKKyNlbmRpZiAvKiBET0NTVFJJTkdTX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvUkVBRE1FLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmI3MjIzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9SRUFETUUudHh0CkBAIC0wLDAgKzEsOTAgQEAKKworCitsaWJtcGRlYworPT09PT09PT0KKworbGlibXBkZWMgaXMgYSBmYXN0IEMvQysrIGxpYnJhcnkgZm9yIGNvcnJlY3RseS1yb3VuZGVkIGFyYml0cmFyeSBwcmVjaXNpb24KK2RlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4gSXQgaXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZgorTWlrZSBDb3dsaXNoYXcvSUJNJ3MgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbi4KKworCitGaWxlcyByZXF1aXJlZCBmb3IgdGhlIFB5dGhvbiBfZGVjaW1hbCBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIENvcmUgZmlsZXMgZm9yIHNtYWxsIGFuZCBtZWRpdW0gcHJlY2lzaW9uIGFyaXRobWV0aWMKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgYmFzZWFyaXRoLntjLGh9ICAtPiAgQ29yZSBhcml0aG1ldGljIGluIGJhc2UgMTAqKjkgb3IgMTAqKjE5LgorICAgIGJpdHMuaCAgICAgICAgICAgLT4gIFBvcnRhYmxlIGRldGVjdGlvbiBvZiBsZWFzdC9tb3N0IHNpZ25pZmljYW50IG9uZS1iaXQuCisgICAgY29uc3RhbnRzLntjLGh9ICAtPiAgQ29uc3RhbnRzIHRoYXQgYXJlIHVzZWQgaW4gbXVsdGlwbGUgZmlsZXMuCisgICAgY29udGV4dC5jICAgICAgICAtPiAgQ29udGV4dCBmdW5jdGlvbnMuCisgICAgaW8ue2MsaH0gICAgICAgICAtPiAgQ29udmVyc2lvbnMgYmV0d2VlbiBtcGRfdCBhbmQgQVNDSUkgc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdCBmb3JtYXR0aW5nIChhbGxvd3MgVVRGLTggZmlsbCBjaGFyYWN0ZXIpLgorICAgIG1lbW9yeS57YyxofSAgICAgLT4gIEFsbG9jYXRpb24gaGFuZGxlcnMgd2l0aCBvdmVyZmxvdyBkZXRlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZnVuY3Rpb25zIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBzdGF0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZHluYW1pYyBtcGRfdC4KKyAgICBtcGRlY2ltYWwue2MsaH0gIC0+ICBBbGwgKHF1aWV0KSBmdW5jdGlvbnMgb2YgdGhlIHNwZWNpZmljYXRpb24uCisgICAgdHlwZWFyaXRoLmggICAgICAtPiAgRmFzdCBwcmltaXRpdmVzIGZvciBkb3VibGUgd29yZCBtdWx0aXBsaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaXZpc2lvbiBldGMuCisKKyAgICBWaXN1YWwgU3R1ZGlvIG9ubHk6CisgICAgfn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgdmNjb21wYXQuaCAgICAtPiAgc25wcmludGYgPD09PiBzcHJpbnRmX3MgYW5kIHNpbWlsYXIgdGhpbmdzLgorICAgICAgdmNzdGRpbnQuaCAgICAtPiAgc3RkaW50LmggKGluY2x1ZGVkIGluIFZTIDIwMTAgYnV0IG5vdCBpbiBWUyAyMDA4KS4KKyAgICAgIHZjZGl2NjQuYXNtICAgLT4gIERvdWJsZSB3b3JkIGRpdmlzaW9uIHVzZWQgaW4gdHlwZWFyaXRoLmguIFZTIDIwMDggZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFsbG93IGlubGluZSBhc20gZm9yIHg2NC4gQWxzbywgaXQgZG9lcyBub3QgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW50cmluc2ljIGZvciBkb3VibGUgd29yZCBkaXZpc2lvbi4KKworICBGaWxlcyBmb3IgYmlnbnVtIGFyaXRobWV0aWM6CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBmb2xsb3dpbmcgZmlsZXMgaW1wbGVtZW50IHRoZSBGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtCisgICAgdXNlZCBmb3IgbXVsdGlwbHlpbmcgY29lZmZpY2llbnRzIHdpdGggbW9yZSB0aGFuIDEwMjQgd29yZHMgKHNlZQorICAgIG1wZGVjaW1hbC5jOiBfbXBkX2ZudG11bCgpKS4KKworICAgICAgdW1vZGFyaXRoLmggICAgICAgIC0+ICBGYXN0IGxvdyBsZXZlbCByb3V0aW5lcyBmb3IgdW5zaWduZWQgbW9kdWxhciBhcml0aG1ldGljLgorICAgICAgbnVtYmVydGhlb3J5LntjLGh9IC0+ICBSb3V0aW5lcyBmb3Igc2V0dGluZyB1cCB0aGUgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0uCisgICAgICBkaWZyYWRpeDIue2MsaH0gICAgLT4gIERlY2ltYXRpb24gaW4gZnJlcXVlbmN5IHRyYW5zZm9ybSwgdXNlZCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhc2UgY2FzZSIgYnkgdGhlIGZvbGxvd2luZyB0aHJlZSBmaWxlczoKKworICAgICAgICBmbnQue2MsaH0gICAgICAgIC0+ICBUcmFuc2Zvcm0gYXJyYXlzIHVwIHRvIDQwOTYgd29yZHMuCisgICAgICAgIHNpeHN0ZXAue2MsaH0gICAgLT4gIFRyYW5zZm9ybSBsYXJnZXIgYXJyYXlzIG9mIGxlbmd0aCAyKipuLgorICAgICAgICBmb3Vyc3RlcC57YyxofSAgIC0+ICBUcmFuc2Zvcm0gbGFyZ2VyIGFycmF5cyBvZiBsZW5ndGggMyAqIDIqKm4uCisKKyAgICAgIGNvbnZvbHV0ZS57YyxofSAgICAtPiAgRmFzdCBjb252b2x1dGlvbiB1c2luZyBvbmUgb2YgdGhlIHRocmVlIHRyYW5zZm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCisgICAgICB0cmFuc3Bvc2Uue2MsaH0gICAgLT4gIFRyYW5zcG9zaXRpb25zIG5lZWRlZCBmb3IgdGhlIHNpeHN0ZXAgYWxnb3JpdGhtLgorICAgICAgY3J0LntjLGh9ICAgICAgICAgIC0+ICBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtOiB1c2UgaW5mb3JtYXRpb24gZnJvbSB0aHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zIG1vZHVsbyB0aHJlZSBkaWZmZXJlbnQgcHJpbWVzIHRvIGdldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgcmVzdWx0LgorCisKK1BvaW50ZXJzIHRvIGxpdGVyYXR1cmUsIHByb29mcyBhbmQgbW9yZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgbGl0ZXJhdHVyZS8KKyAgLS0tLS0tLS0tLS0KKworICAgIFJFRkVSRU5DRVMudHh0ICAtPiAgTGlzdCBvZiByZWxldmFudCBwYXBlcnMuCisgICAgYmlnbnVtLnR4dCAgICAgIC0+ICBFeHBsYW5hdGlvbiBvZiB0aGUgRmFzdCBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybSAoRk5UKS4KKyAgICBmbnQucHkgICAgICAgICAgLT4gIFZlcmlmeSBjb25zdGFudHMgdXNlZCBpbiB0aGUgRk5UOyBQeXRob24gZGVtbyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBPKE4qKjIpIGRpc2NyZXRlIHRyYW5zZm9ybS4KKworICAgIG1hdHJpeC10cmFuc2Zvcm0udHh0IC0+IFByb29mIGZvciB0aGUgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vyc3RlcC5jLgorICAgIHNpeC1zdGVwLnR4dCAgICAgICAgIC0+IFNob3cgdGhhdCB0aGUgYWxnb3JpdGhtIHVzZWQgaW4gc2l4c3RlcC5jIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2YXJpYW50IG9mIHRoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0uCisgICAgbXVsbW9kLTY0LnR4dCAgICAgICAgLT4gUHJvb2YgZm9yIHRoZSBtdWxtb2Q2NCBhbGdvcml0aG0gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVtb2Rhcml0aC5oLgorICAgIG11bG1vZC1wcHJvLnR4dCAgICAgIC0+IFByb29mIGZvciB0aGUgeDg3IEZQVSBtb2R1bGFyIG11bHRpcGxpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB1bW9kYXJpdGguaC4KKyAgICB1bW9kYXJpdGgubGlzcCAgICAgICAtPiBBQ0wyIHByb29mcyBmb3IgbWFueSBmdW5jdGlvbnMgZnJvbSB1bW9kYXJpdGguaC4KKworCitMaWJyYXJ5IEF1dGhvcgorPT09PT09PT09PT09PT0KKworICBTdGVmYW4gS3JhaCA8c2tyYWhAYnl0ZXJlZWYub3JnPgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQyMWE3YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKQEAgLTAsMCArMSw2NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgImJhc2Vhcml0aC5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGlvbnMgaW4gYmFzZSBNUERfUkFESVggICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKgorICogS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC4zLjE6CisgKiAgICB3IDo9IHN1bSBvZiB1IChsZW4gbSkgYW5kIHYgKGxlbiBuKQorICogICAgbiA+IDAgYW5kIG0gPj0gbgorICogVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlIGZpbmFsIGNhcnJ5LgorICovCittcGRfdWludF90CitfbXBkX2Jhc2VhZGQobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwICYmIG0gPj0gbik7CisKKyAgICAvKiBhZGQgbiBtZW1iZXJzIG9mIHUgYW5kIHYgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIHMgPSB1W2ldICsgKHZbaV0gKyBjYXJyeSk7CisgICAgICAgIGNhcnJ5ID0gKHMgPCB1W2ldKSB8IChzID49IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IHMtTVBEX1JBRElYIDogczsKKyAgICB9CisgICAgLyogaWYgdGhlcmUgaXMgYSBjYXJyeSwgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yICg7IGNhcnJ5ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgcyA9IHVbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBNUERfUkFESVgpOworICAgICAgICB3W2ldID0gY2FycnkgPyAwIDogczsKKyAgICB9CisgICAgLyogY29weSB0aGUgcmVzdCBvZiB1ICovCisgICAgZm9yICg7IGkgPCBtOyBpKyspIHsKKyAgICAgICAgd1tpXSA9IHVbaV07CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKgorICogQWRkIHRoZSBjb250ZW50cyBvZiB1IHRvIHcuIENhcnJpZXMgYXJlIHByb3BhZ2F0ZWQgZnVydGhlci4gVGhlIGNhbGxlcgorICogaGFzIHRvIG1ha2Ugc3VyZSB0aGF0IHcgaXMgYmlnIGVub3VnaC4KKyAqLwordm9pZAorX21wZF9iYXNlYWRkdG8obXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBpZiAobiA9PSAwKSByZXR1cm47CisKKyAgICAvKiBhZGQgbiBtZW1iZXJzIG9mIHUgdG8gdyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgcyA9IHdbaV0gKyAodVtpXSArIGNhcnJ5KTsKKyAgICAgICAgY2FycnkgPSAocyA8IHdbaV0pIHwgKHMgPj0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gcy1NUERfUkFESVggOiBzOworICAgIH0KKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKDsgY2Fycnk7IGkrKykgeworICAgICAgICBzID0gd1tpXSArIGNhcnJ5OworICAgICAgICBjYXJyeSA9IChzID09IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IDAgOiBzOworICAgIH0KK30KKworLyoKKyAqIEFkZCB2IHRvIHcgKGxlbiBtKS4gVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlCisgKiBmaW5hbCBjYXJyeS4gQXNzdW1wdGlvbjogbSA+IDAuCisgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRhZGQobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG0gPiAwKTsKKworICAgIC8qIGFkZCB2IHRvIHcgKi8KKyAgICBzID0gd1swXSArIHY7CisgICAgY2FycnkgPSAocyA8IHYpIHwgKHMgPj0gTVBEX1JBRElYKTsKKyAgICB3WzBdID0gY2FycnkgPyBzLU1QRF9SQURJWCA6IHM7CisKKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKGkgPSAxOyBjYXJyeSAmJiBpIDwgbTsgaSsrKSB7CisgICAgICAgIHMgPSB3W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKiBJbmNyZW1lbnQgdS4gVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlIGNhcnJ5LiAqLworbXBkX3VpbnRfdAorX21wZF9iYXNlaW5jcihtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2FycnkgPSAxOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKGkgPSAwOyBjYXJyeSAmJiBpIDwgbjsgaSsrKSB7CisgICAgICAgIHMgPSB1W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gTVBEX1JBRElYKTsKKyAgICAgICAgdVtpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKgorICogS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC4zLjE6CisgKiAgICAgdyA6PSBkaWZmZXJlbmNlIG9mIHUgKGxlbiBtKSBhbmQgdiAobGVuIG4pLgorICogICAgIG51bWJlciBpbiB1ID49IG51bWJlciBpbiB2OworICovCit2b2lkCitfbXBkX2Jhc2VzdWIobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IGQ7CisgICAgbXBkX3VpbnRfdCBib3Jyb3cgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChtID4gMCAmJiBuID4gMCk7CisKKyAgICAvKiBzdWJ0cmFjdCBuIG1lbWJlcnMgb2YgdiBmcm9tIHUgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGQgPSB1W2ldIC0gKHZbaV0gKyBib3Jyb3cpOworICAgICAgICBib3Jyb3cgPSAodVtpXSA8IGQpOworICAgICAgICB3W2ldID0gYm9ycm93ID8gZCArIE1QRF9SQURJWCA6IGQ7CisgICAgfQorICAgIC8qIGlmIHRoZXJlIGlzIGEgYm9ycm93LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKDsgYm9ycm93ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgZCA9IHVbaV0gLSBib3Jyb3c7CisgICAgICAgIGJvcnJvdyA9ICh1W2ldID09IDApOworICAgICAgICB3W2ldID0gYm9ycm93ID8gTVBEX1JBRElYLTEgOiBkOworICAgIH0KKyAgICAvKiBjb3B5IHRoZSByZXN0IG9mIHUgKi8KKyAgICBmb3IgKDsgaSA8IG07IGkrKykgeworICAgICAgICB3W2ldID0gdVtpXTsKKyAgICB9Cit9CisKKy8qCisgKiBTdWJ0cmFjdCB0aGUgY29udGVudHMgb2YgdSBmcm9tIHcuIHcgaXMgbGFyZ2VyIHRoYW4gdS4gQm9ycm93cyBhcmUKKyAqIHByb3BhZ2F0ZWQgZnVydGhlciwgYnV0IGV2ZW50dWFsbHkgdyBjYW4gYWJzb3JiIHRoZSBmaW5hbCBib3Jyb3cuCisgKi8KK3ZvaWQKK19tcGRfYmFzZXN1YmZyb20obXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgZDsKKyAgICBtcGRfdWludF90IGJvcnJvdyA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgaWYgKG4gPT0gMCkgcmV0dXJuOworCisgICAgLyogc3VidHJhY3QgbiBtZW1iZXJzIG9mIHUgZnJvbSB3ICovCisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBkID0gd1tpXSAtICh1W2ldICsgYm9ycm93KTsKKyAgICAgICAgYm9ycm93ID0gKHdbaV0gPCBkKTsKKyAgICAgICAgd1tpXSA9IGJvcnJvdyA/IGQgKyBNUERfUkFESVggOiBkOworICAgIH0KKyAgICAvKiBpZiB0aGVyZSBpcyBhIGJvcnJvdywgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yICg7IGJvcnJvdzsgaSsrKSB7CisgICAgICAgIGQgPSB3W2ldIC0gYm9ycm93OworICAgICAgICBib3Jyb3cgPSAod1tpXSA9PSAwKTsKKyAgICAgICAgd1tpXSA9IGJvcnJvdyA/IE1QRF9SQURJWC0xIDogZDsKKyAgICB9Cit9CisKKy8qIHcgOj0gcHJvZHVjdCBvZiB1IChsZW4gbikgYW5kIHYgKHNpbmdsZSB3b3JkKSAqLwordm9pZAorX21wZF9zaG9ydG11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVtpXSwgdik7CisgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHNfcigmY2FycnksICZ3W2ldLCBoaSwgbG8pOworICAgIH0KKyAgICB3W2ldID0gY2Fycnk7Cit9CisKKy8qCisgKiBLbnV0aCwgVEFPQ1AsIFZvbHVtZSAyLCA0LjMuMToKKyAqICAgICB3IDo9IHByb2R1Y3Qgb2YgdSAobGVuIG0pIGFuZCB2IChsZW4gbikKKyAqICAgICB3IG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gemVybworICovCit2b2lkCitfbXBkX2Jhc2VtdWwobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zaXplX3QgaSwgajsKKworICAgIGFzc2VydChtID4gMCAmJiBuID4gMCk7CisKKyAgICBmb3IgKGo9MDsgaiA8IG47IGorKykgeworICAgICAgICBjYXJyeSA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbTsgaSsrKSB7CisKKyAgICAgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1W2ldLCB2W2pdKTsKKyAgICAgICAgICAgIGxvID0gd1tpK2pdICsgbG87CisgICAgICAgICAgICBpZiAobG8gPCB3W2kral0pIGhpKys7CisgICAgICAgICAgICBsbyA9IGNhcnJ5ICsgbG87CisgICAgICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICAgICAgX21wZF9kaXZfd29yZHNfcigmY2FycnksICZ3W2kral0sIGhpLCBsbyk7CisgICAgICAgIH0KKyAgICAgICAgd1tqK21dID0gY2Fycnk7CisgICAgfQorfQorCisvKgorICogS251dGgsIFRBT0NQIFZvbHVtZSAyLCA0LjMuMSwgZXhlcmNpc2UgMTY6CisgKiAgICAgdyA6PSBxdW90aWVudCBvZiB1IChsZW4gbikgZGl2aWRlZCBieSBhIHNpbmdsZSB3b3JkIHYKKyAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydGRpdihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IHJlbSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIGZvciAoaT1uLTE7IGkgIT0gTVBEX1NJWkVfTUFYOyBpLS0pIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgcmVtLCBNUERfUkFESVgpOworICAgICAgICBsbyA9IHVbaV0gKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgdVtpXSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3Jkcygmd1tpXSwgJnJlbSwgaGksIGxvLCB2KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVtOworfQorCisvKgorICogS251dGgsIFRBT0NQIFZvbHVtZSAyLCA0LjMuMToKKyAqICAgICBxLCByIDo9IHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdWNvbnN0IChsZW4gbnBsdXNtKQorICogICAgICAgICAgICAgZGl2aWRlZCBieSB2Y29uc3QgKGxlbiBuKQorICogICAgIG5wbHVzbSA+PSBuCisgKgorICogSWYgciBpcyBub3QgTlVMTCwgciB3aWxsIGNvbnRhaW4gdGhlIHJlbWFpbmRlci4gSWYgciBpcyBOVUxMLCB0aGUKKyAqIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgaWYgdGhlcmUgaXMgYSByZW1haW5kZXI6IDEgZm9yIHRydWUsIDAgZm9yCisgKiBmYWxzZS4gIEEgcmV0dXJuIHZhbHVlIG9mIC0xIGluZGljYXRlcyBhbiBlcnJvci4KKyAqLworaW50CitfbXBkX2Jhc2VkaXZtb2QobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfdWludF90ICp1Y29uc3QsIGNvbnN0IG1wZF91aW50X3QgKnZjb25zdCwKKyAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IG5wbHVzbSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgdXN0YXRpY1tNUERfTUlOQUxMT0NfTUFYXTsKKyAgICBtcGRfdWludF90IHZzdGF0aWNbTVBEX01JTkFMTE9DX01BWF07CisgICAgbXBkX3VpbnRfdCAqdSA9IHVzdGF0aWM7CisgICAgbXBkX3VpbnRfdCAqdiA9IHZzdGF0aWM7CisgICAgbXBkX3VpbnRfdCBkLCBxaGF0LCByaGF0LCB3MlsyXTsKKyAgICBtcGRfdWludF90IGhpLCBsbywgeDsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zaXplX3QgaSwgaiwgbTsKKyAgICBpbnQgcmV0dmFsID0gMDsKKworICAgIGFzc2VydChuID4gMSAmJiBucGx1c20gPj0gbik7CisgICAgbSA9IHN1Yl9zaXplX3QobnBsdXNtLCBuKTsKKworICAgIC8qIEQxOiBub3JtYWxpemUgKi8KKyAgICBkID0gTVBEX1JBRElYIC8gKHZjb25zdFtuLTFdICsgMSk7CisKKyAgICBpZiAobnBsdXNtID49IE1QRF9NSU5BTExPQ19NQVgpIHsKKyAgICAgICAgaWYgKCh1ID0gbXBkX2FsbG9jKG5wbHVzbSsxLCBzaXplb2YgKnUpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG4gPj0gTVBEX01JTkFMTE9DX01BWCkgeworICAgICAgICBpZiAoKHYgPSBtcGRfYWxsb2MobisxLCBzaXplb2YgKnYpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh1KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9tcGRfc2hvcnRtdWwodSwgdWNvbnN0LCBucGx1c20sIGQpOworICAgIF9tcGRfc2hvcnRtdWwodiwgdmNvbnN0LCBuLCBkKTsKKworICAgIC8qIEQyOiBsb29wICovCisgICAgZm9yIChqPW07IGogIT0gTVBEX1NJWkVfTUFYOyBqLS0pIHsKKworICAgICAgICAvKiBEMzogY2FsY3VsYXRlIHFoYXQgYW5kIHJoYXQgKi8KKyAgICAgICAgcmhhdCA9IF9tcGRfc2hvcnRkaXYodzIsIHUraituLTEsIDIsIHZbbi0xXSk7CisgICAgICAgIHFoYXQgPSB3MlsxXSAqIE1QRF9SQURJWCArIHcyWzBdOworCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBpZiAocWhhdCA8IE1QRF9SQURJWCkgeworICAgICAgICAgICAgICAgIF9tcGRfc2luZ2xlbXVsKHcyLCBxaGF0LCB2W24tMl0pOworICAgICAgICAgICAgICAgIGlmICh3MlsxXSA8PSByaGF0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3MlsxXSAhPSByaGF0IHx8IHcyWzBdIDw9IHVbaituLTJdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHFoYXQgLT0gMTsKKyAgICAgICAgICAgIHJoYXQgKz0gdltuLTFdOworICAgICAgICAgICAgaWYgKHJoYXQgPCB2W24tMV0gfHwgcmhhdCA+PSBNUERfUkFESVgpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBENDogbXVsdGlwbHkgYW5kIHN1YnRyYWN0ICovCisgICAgICAgIGNhcnJ5ID0gMDsKKyAgICAgICAgZm9yIChpPTA7IGkgPD0gbjsgaSsrKSB7CisKKyAgICAgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBxaGF0LCB2W2ldKTsKKworICAgICAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgICAgIF9tcGRfZGl2X3dvcmRzX3IoJmhpLCAmbG8sIGhpLCBsbyk7CisKKyAgICAgICAgICAgIHggPSB1W2kral0gLSBsbzsKKyAgICAgICAgICAgIGNhcnJ5ID0gKHVbaStqXSA8IHgpOworICAgICAgICAgICAgdVtpK2pdID0gY2FycnkgPyB4K01QRF9SQURJWCA6IHg7CisgICAgICAgICAgICBjYXJyeSArPSBoaTsKKyAgICAgICAgfQorICAgICAgICBxW2pdID0gcWhhdDsKKyAgICAgICAgLyogRDU6IHRlc3QgcmVtYWluZGVyICovCisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgcVtqXSAtPSAxOworICAgICAgICAgICAgLyogRDY6IGFkZCBiYWNrICovCisgICAgICAgICAgICAodm9pZClfbXBkX2Jhc2VhZGQodStqLCB1K2osIHYsIG4rMSwgbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBEODogdW5ub3JtYWxpemUgKi8KKyAgICBpZiAociAhPSBOVUxMKSB7CisgICAgICAgIF9tcGRfc2hvcnRkaXYociwgdSwgbiwgZCk7CisgICAgICAgIC8qIHdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGhlcmUgKi8KKyAgICAgICAgcmV0dmFsID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9ICFfbXBkX2lzYWxsemVybyh1LCBuKTsKKyAgICB9CisKKworaWYgKHUgIT0gdXN0YXRpYykgbXBkX2ZyZWUodSk7CitpZiAodiAhPSB2c3RhdGljKSBtcGRfZnJlZSh2KTsKK3JldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBMZWZ0IHNoaWZ0IG9mIHNyYyBieSAnc2hpZnQnIGRpZ2l0czsgc3JjIG1heSBlcXVhbCBkZXN0LgorICoKKyAqICBkZXN0IDo9IGFyZWEgb2YgbiBtcGRfdWludF90IHdpdGggc3BhY2UgZm9yIHNyY2RpZ2l0cytzaGlmdCBkaWdpdHMuCisgKiAgc3JjICA6PSBjb2VmZmljaWVudCB3aXRoIGxlbmd0aCBtLgorICoKKyAqIFRoZSBjYXNlIHNwbGl0cyBpbiB0aGUgZnVuY3Rpb24gYXJlIG5vbi1vYnZpb3VzLiBUaGUgZm9sbG93aW5nCisgKiBlcXVhdGlvbnMgbWlnaHQgaGVscDoKKyAqCisgKiAgTGV0IG1zZGlnaXRzIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICogIHdvcmQgb2Ygc3JjLiBUaGVuIDEgPD0gbXNkaWdpdHMgPD0gcmRpZ2l0cy4KKyAqCisgKiAgIDEpIHNoaWZ0ID0gcSAqIHJkaWdpdHMgKyByCisgKiAgIDIpIHNyY2RpZ2l0cyA9IHFzcmMgKiByZGlnaXRzICsgbXNkaWdpdHMKKyAqICAgMykgZGVzdGRpZ2l0cyA9IHNoaWZ0ICsgc3JjZGlnaXRzCisgKiAgICAgICAgICAgICAgICAgPSBxICogcmRpZ2l0cyArIHIgKyBxc3JjICogcmRpZ2l0cyArIG1zZGlnaXRzCisgKiAgICAgICAgICAgICAgICAgPSBxICogcmRpZ2l0cyArIChxc3JjICogcmRpZ2l0cyArIChyICsgbXNkaWdpdHMpKQorICoKKyAqICBUaGUgcmVzdWx0IGhhcyBxIHplcm8gd29yZHMsIGZvbGxvd2VkIGJ5IHRoZSBjb2VmZmljaWVudCB0aGF0CisgKiAgaXMgbGVmdC1zaGlmdGVkIGJ5IHIuIFRoZSBjYXNlIHIgPT0gMCBpcyB0cml2aWFsLiBGb3IgciA+IDAsIGl0CisgKiAgaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCB0aGF0IHdlIGFsd2F5cyByZWFkIG0gc291cmNlIHdvcmRzLAorICogIGJ1dCB3cml0ZSBtKzEgZGVzdGluYXRpb24gd29yZHMgaWYgciArIG1zZGlnaXRzID4gcmRpZ2l0cywgbSB3b3JkcworICogIG90aGVyd2lzZS4KKyAqLwordm9pZAorX21wZF9iYXNlc2hpZnRsKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBuLCBtcGRfc2l6ZV90IG0sCisgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCkKK3sKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgLyogc3B1cmlvdXMgdW5pbml0aWFsaXplZCB3YXJuaW5ncyAqLworICAgIG1wZF91aW50X3QgbD1sLCBscHJldj1scHJldiwgaD1oOworI2Vsc2UKKyAgICBtcGRfdWludF90IGwsIGxwcmV2LCBoOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIG1wZF91aW50X3QgcGg7CisKKyAgICBhc3NlcnQobSA+IDAgJiYgbiA+PSBtKTsKKworICAgIF9tcGRfZGl2X3dvcmQoJnEsICZyLCAobXBkX3VpbnRfdClzaGlmdCwgTVBEX1JESUdJVFMpOworCisgICAgaWYgKHIgIT0gMCkgeworCisgICAgICAgIHBoID0gbXBkX3BvdzEwW3JdOworCisgICAgICAgIC0tbTsgLS1uOworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmxwcmV2LCBzcmNbbS0tXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgIGlmIChoICE9IDApIHsgLyogciArIG1zZGlnaXRzID4gcmRpZ2l0cyA8PT0+IGggIT0gMCAqLworICAgICAgICAgICAgZGVzdFtuLS1dID0gaDsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBtLTEgc2hpZnRlZCB3b3JkcyAqLworICAgICAgICBmb3IgKDsgbSAhPSBNUERfU0laRV9NQVg7IG0tLSxuLS0pIHsKKyAgICAgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZoLCAmbCwgc3JjW21dLCBNUERfUkRJR0lUUy1yKTsKKyAgICAgICAgICAgIGRlc3Rbbl0gPSBwaCAqIGxwcmV2ICsgaDsKKyAgICAgICAgICAgIGxwcmV2ID0gbDsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgICAgIGRlc3RbcV0gPSBwaCAqIGxwcmV2OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2hpbGUgKC0tbSAhPSBNUERfU0laRV9NQVgpIHsKKyAgICAgICAgICAgIGRlc3RbbStxXSA9IHNyY1ttXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF91aW50X3plcm8oZGVzdCwgcSk7Cit9CisKKy8qCisgKiBSaWdodCBzaGlmdCBvZiBzcmMgYnkgJ3NoaWZ0JyBkaWdpdHM7IHNyYyBtYXkgZXF1YWwgZGVzdC4KKyAqIEFzc3VtcHRpb246IHNyY2RpZ2l0cy1zaGlmdCA+IDAuCisgKgorICogIGRlc3QgOj0gYXJlYSB3aXRoIHNwYWNlIGZvciBzcmNkaWdpdHMtc2hpZnQgZGlnaXRzLgorICogIHNyYyAgOj0gY29lZmZpY2llbnQgd2l0aCBsZW5ndGggJ3NsZW4nLgorICoKKyAqIFRoZSBjYXNlIHNwbGl0cyBpbiB0aGUgZnVuY3Rpb24gcmVseSBvbiB0aGUgZm9sbG93aW5nIGVxdWF0aW9uczoKKyAqCisgKiAgTGV0IG1zZGlnaXRzIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICogIHdvcmQgb2Ygc3JjLiBUaGVuIDEgPD0gbXNkaWdpdHMgPD0gcmRpZ2l0cy4KKyAqCisgKiAgMSkgc2hpZnQgPSBxICogcmRpZ2l0cyArIHIKKyAqICAyKSBzcmNkaWdpdHMgPSBxc3JjICogcmRpZ2l0cyArIG1zZGlnaXRzCisgKiAgMykgZGVzdGRpZ2l0cyA9IHNyY2RpZ2l0cyAtIHNoaWZ0CisgKiAgICAgICAgICAgICAgICA9IHFzcmMgKiByZGlnaXRzICsgbXNkaWdpdHMgLSAocSAqIHJkaWdpdHMgKyByKQorICogICAgICAgICAgICAgICAgPSAocXNyYyAtIHEpICogcmRpZ2l0cyArIG1zZGlnaXRzIC0gcgorICoKKyAqIFNpbmNlIGRlc3RkaWdpdHMgPiAwIGFuZCAxIDw9IG1zZGlnaXRzIDw9IHJkaWdpdHM6CisgKgorICogIDQpIHFzcmMgPj0gcQorICogIDUpIHFzcmMgPT0gcSAgPT0+ICBtc2RpZ2l0cyA+IHIKKyAqCisgKiBUaGUgcmVzdWx0IGhhcyBzbGVuLXEgd29yZHMgaWYgbXNkaWdpdHMgPiByLCBzbGVuLXEtMSB3b3JkcyBvdGhlcndpc2UuCisgKi8KK21wZF91aW50X3QKK19tcGRfYmFzZXNoaWZ0cihtcGRfdWludF90ICpkZXN0LCBtcGRfdWludF90ICpzcmMsIG1wZF9zaXplX3Qgc2xlbiwKKyAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IHNoaWZ0KQoreworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAvKiBzcHVyaW91cyB1bmluaXRpYWxpemVkIHdhcm5pbmdzICovCisgICAgbXBkX3VpbnRfdCBsPWwsIGg9aCwgaHByZXY9aHByZXY7IC8qIGxvdywgaGlnaCwgcHJldmlvdXMgaGlnaCAqLworI2Vsc2UKKyAgICBtcGRfdWludF90IGwsIGgsIGhwcmV2OyAvKiBsb3csIGhpZ2gsIHByZXZpb3VzIGhpZ2ggKi8KKyNlbmRpZgorICAgIG1wZF91aW50X3Qgcm5kLCByZXN0OyAgIC8qIHJvdW5kaW5nIGRpZ2l0LCByZXN0ICovCisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIG1wZF9zaXplX3QgaSwgajsKKyAgICBtcGRfdWludF90IHBoOworCisgICAgYXNzZXJ0KHNsZW4gPiAwKTsKKworICAgIF9tcGRfZGl2X3dvcmQoJnEsICZyLCAobXBkX3VpbnRfdClzaGlmdCwgTVBEX1JESUdJVFMpOworCisgICAgcm5kID0gcmVzdCA9IDA7CisgICAgaWYgKHIgIT0gMCkgeworCisgICAgICAgIHBoID0gbXBkX3BvdzEwW01QRF9SRElHSVRTLXJdOworCisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZocHJldiwgJnJlc3QsIHNyY1txXSwgcik7CisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZybmQsICZyZXN0LCByZXN0LCByLTEpOworCisgICAgICAgIGlmIChyZXN0ID09IDAgJiYgcSA+IDApIHsKKyAgICAgICAgICAgIHJlc3QgPSAhX21wZF9pc2FsbHplcm8oc3JjLCBxKTsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBzbGVuLXEtMSB3b3JkcyAqLworICAgICAgICBmb3IgKGo9MCxpPXErMTsgaTxzbGVuOyBpKyssaisrKSB7CisgICAgICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmwsIHNyY1tpXSwgcik7CisgICAgICAgICAgICBkZXN0W2pdID0gcGggKiBsICsgaHByZXY7CisgICAgICAgICAgICBocHJldiA9IGg7CisgICAgICAgIH0KKyAgICAgICAgLyogd3JpdGUgbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgICAgIGlmIChocHJldiAhPSAwKSB7IC8qIGFsd2F5cyB0aGUgY2FzZSBpZiBzbGVuPT1xLTEgKi8KKyAgICAgICAgICAgIGRlc3Rbal0gPSBocHJldjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHEgPiAwKSB7CisgICAgICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmcm5kLCAmcmVzdCwgc3JjW3EtMV0sIE1QRF9SRElHSVRTLTEpOworICAgICAgICAgICAgLyogaXMgdGhlcmUgYW55IG5vbi16ZXJvIGRpZ2l0IGJlbG93IHJuZD8gKi8KKyAgICAgICAgICAgIGlmIChyZXN0ID09IDApIHJlc3QgPSAhX21wZF9pc2FsbHplcm8oc3JjLCBxLTEpOworICAgICAgICB9CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBzbGVuLXE7IGorKykgeworICAgICAgICAgICAgZGVzdFtqXSA9IHNyY1txK2pdOworICAgICAgICB9CisgICAgfQorCisgICAgLyogMC00ICA9PT4gcm5kK3Jlc3QgPCAwLjUgICAqLworICAgIC8qIDUgICAgPT0+IHJuZCtyZXN0ID09IDAuNSAgKi8KKyAgICAvKiA2LTkgID09PiBybmQrcmVzdCA+IDAuNSAgICovCisgICAgcmV0dXJuIChybmQgPT0gMCB8fCBybmQgPT0gNSkgPyBybmQgKyAhIXJlc3QgOiBybmQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0aW9ucyBpbiBiYXNlIGIgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQWRkIHYgdG8gdyAobGVuIG0pLiBUaGUgY2FsbGluZyBmdW5jdGlvbiBoYXMgdG8gaGFuZGxlIGEgcG9zc2libGUKKyAqIGZpbmFsIGNhcnJ5LiBBc3N1bXB0aW9uOiBtID4gMC4KKyAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydGFkZF9iKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG0gPiAwKTsKKworICAgIC8qIGFkZCB2IHRvIHcgKi8KKyAgICBzID0gd1swXSArIHY7CisgICAgY2FycnkgPSAocyA8IHYpIHwgKHMgPj0gYik7CisgICAgd1swXSA9IGNhcnJ5ID8gcy1iIDogczsKKworICAgIC8qIGlmIHRoZXJlIGlzIGEgY2FycnksIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoaSA9IDE7IGNhcnJ5ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgcyA9IHdbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBiKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKiB3IDo9IHByb2R1Y3Qgb2YgdSAobGVuIG4pIGFuZCB2IChzaW5nbGUgd29yZCkuIFJldHVybiBjYXJyeS4gKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRtdWxfYyhtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVtpXSwgdik7CisgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHNfcigmY2FycnksICZ3W2ldLCBoaSwgbG8pOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyogdyA6PSBwcm9kdWN0IG9mIHUgKGxlbiBuKSBhbmQgdiAoc2luZ2xlIHdvcmQpICovCittcGRfdWludF90CitfbXBkX3Nob3J0bXVsX2IobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgY2FycnkgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1W2ldLCB2KTsKKyAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3JkcygmY2FycnksICZ3W2ldLCBoaSwgbG8sIGIpOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyoKKyAqIEtudXRoLCBUQU9DUCBWb2x1bWUgMiwgNC4zLjEsIGV4ZXJjaXNlIDE2OgorICogICAgIHcgOj0gcXVvdGllbnQgb2YgdSAobGVuIG4pIGRpdmlkZWQgYnkgYSBzaW5nbGUgd29yZCB2CisgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRkaXZfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCByZW0gPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9bi0xOyBpICE9IE1QRF9TSVpFX01BWDsgaS0tKSB7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHJlbSwgYik7CisgICAgICAgIGxvID0gdVtpXSArIGxvOworICAgICAgICBpZiAobG8gPCB1W2ldKSBoaSsrOworCisgICAgICAgIF9tcGRfZGl2X3dvcmRzKCZ3W2ldLCAmcmVtLCBoaSwgbG8sIHYpOworICAgIH0KKworICAgIHJldHVybiByZW07Cit9CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTRjZWYzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguaApAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBCQVNFQVJJVEhfSAorI2RlZmluZSBCQVNFQVJJVEhfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCittcGRfdWludF90IF9tcGRfYmFzZWFkZChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VhZGR0byhtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pOworbXBkX3VpbnRfdCBfbXBkX3Nob3J0YWRkKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydGFkZF9iKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBiKTsKK21wZF91aW50X3QgX21wZF9iYXNlaW5jcihtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VzdWIobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKTsKK3ZvaWQgX21wZF9iYXNlc3ViZnJvbShtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VtdWwobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKTsKK3ZvaWQgX21wZF9zaG9ydG11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydG11bF9jKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3Qgdik7CittcGRfdWludF90IF9tcGRfc2hvcnRtdWxfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYik7CittcGRfdWludF90IF9tcGRfc2hvcnRkaXYobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3Qgdik7CittcGRfdWludF90IF9tcGRfc2hvcnRkaXZfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYik7CitpbnQgX21wZF9iYXNlZGl2bW9kKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIGNvbnN0IG1wZF91aW50X3QgKnVjb25zdCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3VpbnRfdCAqdmNvbnN0LCBtcGRfc2l6ZV90IG5wbHVzbSwgbXBkX3NpemVfdCBuKTsKK3ZvaWQgX21wZF9iYXNlc2hpZnRsKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IHNoaWZ0KTsKK21wZF91aW50X3QgX21wZF9iYXNlc2hpZnRyKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBzbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCk7CisKKworCisjaWZkZWYgQ09ORklHXzY0CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBtcHJpbWVfcmR4OworCisvKgorICogQWxnb3JpdGhtIGZyb206IERpdmlzaW9uIGJ5IEludmFyaWFudCBJbnRlZ2VycyB1c2luZyBNdWx0aXBsaWNhdGlvbiwKKyAqIFQuIEdyYW5sdW5kIGFuZCBQLiBMLiBNb250Z29tZXJ5LCBQcm9jZWVkaW5ncyBvZiB0aGUgU0lHUExBTiAnOTQKKyAqIENvbmZlcmVuY2Ugb24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBodHRwOi8vZ21wbGliLm9yZy9+dGVnZS9kaXZjbnN0LXBsZGk5NC5wZGYKKyAqCisgKiBWYXJpYWJsZXMgZnJvbSB0aGUgcGFwZXIgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyAoU2VlIHNlY3Rpb24gOCk6CisgKgorICogIE4gOj0gNjQKKyAqICBkIDo9IE1QRF9SQURJWAorICogIGwgOj0gNjQKKyAqICBtJyA6PSBmbG9vcigoMioqKDY0KzY0KSAtIDEpL01QRF9SQURJWCkgLSAyKio2NAorICoKKyAqIFNpbmNlIE4tbCA9PSAwOgorICoKKyAqICBkbm9ybSA6PSBkCisgKiAgbjIgOj0gaGkKKyAqICBuMTAgOj0gbG8KKyAqCisgKiBBQ0wyIHByb29mOiBtcGQtZGl2LXdvcmRzLXItY29ycmVjdAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzX3IobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbykKK3sKKyAgICBtcGRfdWludF90IG5fYWRqLCBoLCBsLCB0OworICAgIG1wZF91aW50X3QgbjFfbmVnOworCisgICAgLyogbjFfbmVnID0gaWYgbG8gPj0gMioqNjMgdGhlbiBNUERfVUlOVF9NQVggZWxzZSAwICovCisgICAgbjFfbmVnID0gKGxvICYgKDFVTEw8PDYzKSkgPyBNUERfVUlOVF9NQVggOiAwOworICAgIC8qIG5fYWRqID0gaWYgbG8gPj0gMioqNjMgdGhlbiBsbytNUERfUkFESVggZWxzZSBsbyAqLworICAgIG5fYWRqID0gbG8gKyAobjFfbmVnICYgTVBEX1JBRElYKTsKKworICAgIC8qIChoLCBsKSA9IGlmIGxvID49IDIqKjYzIHRoZW4gbScqKGhpKzEpIGVsc2UgbScqaGkgKi8KKyAgICBfbXBkX211bF93b3JkcygmaCwgJmwsIG1wcmltZV9yZHgsIGhpLW4xX25lZyk7CisgICAgbCA9IGwgKyBuX2FkajsKKyAgICBpZiAobCA8IG5fYWRqKSBoKys7CisgICAgdCA9IGggKyBoaTsKKyAgICAvKiBBdCB0aGlzIHBvaW50IHQgPT0gcWVzdCwgd2l0aCBxID09IHFlc3Qgb3IgcSA9PSBxZXN0KzE6CisgICAgICogICAxKSAwIDw9IDIqKjY0KmhpICsgbG8gLSBxZXN0Kk1QRF9SQURJWCA8IDIqTVBEX1JBRElYCisgICAgICovCisKKyAgICAvKiB0ID0gMioqNjQtMSAtIHFlc3QgPSAyKio2NCAtIChxZXN0KzEpICovCisgICAgdCA9IE1QRF9VSU5UX01BWCAtIHQ7CisKKyAgICAvKiAoaCwgbCkgPSAyKio2NCpNUERfUkFESVggLSAocWVzdCsxKSpNUERfUkFESVggKi8KKyAgICBfbXBkX211bF93b3JkcygmaCwgJmwsIHQsIE1QRF9SQURJWCk7CisgICAgbCA9IGwgKyBsbzsKKyAgICBpZiAobCA8IGxvKSBoKys7CisgICAgaCArPSBoaTsKKyAgICBoIC09IE1QRF9SQURJWDsKKyAgICAvKiAoaCwgbCkgPSAyKio2NCpoaSArIGxvIC0gKHFlc3QrMSkqTVBEX1JBRElYIChtb2QgMioqMTI4KQorICAgICAqIENhc2UgcSA9PSBxZXN0KzE6CisgICAgICogICAgIGEpIGggPT0gMCwgbCA9PSByCisgICAgICogICAgIGIpIHEgOj0gaCAtIHQgPT0gcWVzdCsxCisgICAgICogICAgIGMpIHIgOj0gbAorICAgICAqIENhc2UgcSA9PSBxZXN0OgorICAgICAqICAgICBhKSBoID09IE1QRF9VSU5UX01BWCwgbCA9PSAyKio2NC0oTVBEX1JBRElYLXIpCisgICAgICogICAgIGIpIHEgOj0gaCAtIHQgPT0gcWVzdAorICAgICAqICAgICBjKSByIDo9IGwgKyBNUERfUkFESVggPSByCisgICAgICovCisKKyAgICAqcSA9IChoIC0gdCk7CisgICAgKnIgPSBsICsgKE1QRF9SQURJWCAmIGgpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHNfcihtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvKQoreworICAgIF9tcGRfZGl2X3dvcmRzKHEsIHIsIGhpLCBsbywgTVBEX1JBRElYKTsKK30KKyNlbmRpZgorCisKKy8qIE11bHRpcGx5IHR3byBzaW5nbGUgYmFzZSBNUERfUkFESVggd29yZHMsIHN0b3JlIHJlc3VsdCBpbiBhcnJheSB3WzJdLiAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3NpbmdsZW11bChtcGRfdWludF90IHdbMl0sIG1wZF91aW50X3QgdSwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHUsIHYpOworICAgIF9tcGRfZGl2X3dvcmRzX3IoJndbMV0sICZ3WzBdLCBoaSwgbG8pOworfQorCisvKiBNdWx0aXBseSB1IChsZW4gMikgYW5kIHYgKGxlbiBtLCAxIDw9IG0gPD0gMikuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsXzJfbGUyKG1wZF91aW50X3Qgd1s0XSwgbXBkX3VpbnRfdCB1WzJdLCBtcGRfdWludF90IHZbMl0sIG1wZF9zc2l6ZV90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVswXSwgdlswXSk7CisgICAgX21wZF9kaXZfd29yZHNfcigmd1sxXSwgJndbMF0sIGhpLCBsbyk7CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVsxXSwgdlswXSk7CisgICAgbG8gPSB3WzFdICsgbG87CisgICAgaWYgKGxvIDwgd1sxXSkgaGkrKzsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzJdLCAmd1sxXSwgaGksIGxvKTsKKyAgICBpZiAobSA9PSAxKSByZXR1cm47CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVswXSwgdlsxXSk7CisgICAgbG8gPSB3WzFdICsgbG87CisgICAgaWYgKGxvIDwgd1sxXSkgaGkrKzsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzNdLCAmd1sxXSwgaGksIGxvKTsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzFdLCB2WzFdKTsKKyAgICBsbyA9IHdbMl0gKyBsbzsKKyAgICBpZiAobG8gPCB3WzJdKSBoaSsrOworICAgIGxvID0gd1szXSArIGxvOworICAgIGlmIChsbyA8IHdbM10pIGhpKys7CisgICAgX21wZF9kaXZfd29yZHNfcigmd1szXSwgJndbMl0sIGhpLCBsbyk7Cit9CisKKworLyoKKyAqIFRlc3QgaWYgYWxsIHdvcmRzIGZyb20gZGF0YVtsZW4tMV0gdG8gZGF0YVswXSBhcmUgemVyby4gSWYgbGVuIGlzIDAsIG5vdGhpbmcKKyAqIGlzIHRlc3RlZCBhbmQgdGhlIGNvZWZmaWNpZW50IGlzIHJlZ2FyZGVkIGFzICJhbGwgemVybyIuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX2lzYWxsemVybyhjb25zdCBtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBsZW4pCit7CisgICAgd2hpbGUgKC0tbGVuID49IDApIHsKKyAgICAgICAgaWYgKGRhdGFbbGVuXSAhPSAwKSByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUZXN0IGlmIGFsbCBmdWxsIHdvcmRzIGZyb20gZGF0YVtsZW4tMV0gdG8gZGF0YVswXSBhcmUgTVBEX1JBRElYLTEKKyAqIChhbGwgbmluZXMpLiBSZXR1cm4gdHJ1ZSBpZiBsZW4gPT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfaXNhbGxuaW5lKGNvbnN0IG1wZF91aW50X3QgKmRhdGEsIG1wZF9zc2l6ZV90IGxlbikKK3sKKyAgICB3aGlsZSAoLS1sZW4gPj0gMCkgeworICAgICAgICBpZiAoZGF0YVtsZW5dICE9IE1QRF9SQURJWC0xKSByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX0VORCkgLyogcmVzdG9yZSBwcmV2aW91cyBzY29wZSBydWxlcyAqLworCisKKyNlbmRpZiAvKiBCQVNFQVJJVEhfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iaXRzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2JpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDllYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iaXRzLmgKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQklUU19ICisjZGVmaW5lIEJJVFNfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKy8qIENoZWNrIGlmIG4gaXMgYSBwb3dlciBvZiAyLiAqLworc3RhdGljIGlubGluZSBpbnQKK2lzcG93ZXIyKG1wZF9zaXplX3QgbikKK3sKKyAgICByZXR1cm4gbiAhPSAwICYmIChuICYgKG4tMSkpID09IDA7Cit9CisKKyNpZiBkZWZpbmVkKEFOU0kpCisvKgorICogUmV0dXJuIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbiBvZiBuIGZyb20gMCB0byAzMSAoNjMpLgorICogQXNzdW1wdGlvbnM6IG4gIT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK21wZF9ic3IobXBkX3NpemVfdCBuKQoreworICAgIGludCBwb3MgPSAwOworICAgIG1wZF9zaXplX3QgdG1wOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgdG1wID0gbiA+PiAzMjsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDMyOyB9CisjZW5kaWYKKyAgICB0bXAgPSBuID4+IDE2OworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gMTY7IH0KKyAgICB0bXAgPSBuID4+IDg7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSA4OyB9CisgICAgdG1wID0gbiA+PiA0OworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gNDsgfQorICAgIHRtcCA9IG4gPj4gMjsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDI7IH0KKyAgICB0bXAgPSBuID4+IDE7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSAxOyB9CisKKyAgICByZXR1cm4gcG9zICsgKGludCluIC0gMTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9uIG9mIG4gZnJvbSAwIHRvIDMxICg2MykuCisgKiBBc3N1bXB0aW9uczogbiAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzZihtcGRfc2l6ZV90IG4pCit7CisgICAgaW50IHBvczsKKworI2lmZGVmIENPTkZJR182NAorICAgIHBvcyA9IDYzOworICAgIGlmIChuICYgMHgwMDAwMDAwMEZGRkZGRkZGVUxMKSB7IHBvcyAtPSAzMjsgfSBlbHNlIHsgbiA+Pj0gMzI7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwRkZGRlVMTCkgeyBwb3MgLT0gMTY7IH0gZWxzZSB7IG4gPj49IDE2OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwRkZVTEwpIHsgcG9zIC09ICA4OyB9IGVsc2UgeyBuID4+PSAgODsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDBGVUxMKSB7IHBvcyAtPSAgNDsgfSBlbHNlIHsgbiA+Pj0gIDQ7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwM1VMTCkgeyBwb3MgLT0gIDI7IH0gZWxzZSB7IG4gPj49ICAyOyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMDFVTEwpIHsgcG9zIC09ICAxOyB9CisjZWxzZQorICAgIHBvcyA9IDMxOworICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDBGRkZGVUwpIHsgcG9zIC09IDE2OyB9IGVsc2UgeyBuID4+PSAxNjsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMEZGVUwpIHsgcG9zIC09ICA4OyB9IGVsc2UgeyBuID4+PSAgODsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDBGVUwpIHsgcG9zIC09ICA0OyB9IGVsc2UgeyBuID4+PSAgNDsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDAzVUwpIHsgcG9zIC09ICAyOyB9IGVsc2UgeyBuID4+PSAgMjsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDAxVUwpIHsgcG9zIC09ICAxOyB9CisjZW5kaWYKKyAgICByZXR1cm4gcG9zOworfQorLyogRU5EIEFOU0kgKi8KKworI2VsaWYgZGVmaW5lZChBU00pCisvKgorICogQml0IHNjYW4gcmV2ZXJzZS4gQXNzdW1wdGlvbnM6IGEgIT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK21wZF9ic3IobXBkX3NpemVfdCBhKQoreworICAgIG1wZF9zaXplX3QgcmV0dmFsOworCisgICAgX19hc21fXyAoCisjaWZkZWYgQ09ORklHXzY0CisgICAgICAgICJic3JxICUxLCAlMFxuXHQiCisjZWxzZQorICAgICAgICAiYnNyICUxLCAlMFxuXHQiCisjZW5kaWYKKyAgICAgICAgOiI9ciIgKHJldHZhbCkKKyAgICAgICAgOiJyIiAoYSkKKyAgICAgICAgOiJjYyIKKyAgICApOworCisgICAgcmV0dXJuIChpbnQpcmV0dmFsOworfQorCisvKgorICogQml0IHNjYW4gZm9yd2FyZC4gQXNzdW1wdGlvbnM6IGEgIT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK21wZF9ic2YobXBkX3NpemVfdCBhKQoreworICAgIG1wZF9zaXplX3QgcmV0dmFsOworCisgICAgX19hc21fXyAoCisjaWZkZWYgQ09ORklHXzY0CisgICAgICAgICJic2ZxICUxLCAlMFxuXHQiCisjZWxzZQorICAgICAgICAiYnNmICUxLCAlMFxuXHQiCisjZW5kaWYKKyAgICAgICAgOiI9ciIgKHJldHZhbCkKKyAgICAgICAgOiJyIiAoYSkKKyAgICAgICAgOiJjYyIKKyAgICApOworCisgICAgcmV0dXJuIChpbnQpcmV0dmFsOworfQorLyogRU5EIEFTTSAqLworCisjZWxpZiBkZWZpbmVkKE1BU00pCisjaW5jbHVkZSA8aW50cmluLmg+CisvKgorICogQml0IHNjYW4gcmV2ZXJzZS4gQXNzdW1wdGlvbnM6IGEgIT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQgX19jZGVjbAorbXBkX2JzcihtcGRfc2l6ZV90IGEpCit7CisgICAgdW5zaWduZWQgbG9uZyByZXR2YWw7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBfQml0U2NhblJldmVyc2U2NCgmcmV0dmFsLCBhKTsKKyNlbHNlCisgICAgX0JpdFNjYW5SZXZlcnNlKCZyZXR2YWwsIGEpOworI2VuZGlmCisKKyAgICByZXR1cm4gKGludClyZXR2YWw7Cit9CisKKy8qCisgKiBCaXQgc2NhbiBmb3J3YXJkLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludCBfX2NkZWNsCittcGRfYnNmKG1wZF9zaXplX3QgYSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHJldHZhbDsKKworI2lmZGVmIENPTkZJR182NAorICAgIF9CaXRTY2FuRm9yd2FyZDY0KCZyZXR2YWwsIGEpOworI2Vsc2UKKyAgICBfQml0U2NhbkZvcndhcmQoJnJldHZhbCwgYSk7CisjZW5kaWYKKworICAgIHJldHVybiAoaW50KXJldHZhbDsKK30KKy8qIEVORCBNQVNNIChfTVNDX1ZFUikgKi8KKyNlbHNlCisgICNlcnJvciAibWlzc2luZyBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMiCisjZW5kaWYgLyogQlNSL0JTRiAqLworCisKKyNlbmRpZiAvKiBCSVRTX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZjU4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5jCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKworCisjaWYgZGVmaW5lZChDT05GSUdfNjQpCisKKyAgLyogbnVtYmVyLXRoZW9yeS5jICovCisgIGNvbnN0IG1wZF91aW50X3QgbXBkX21vZHVsaVszXSA9IHsKKyAgICAxODQ0Njc0NDA2OTQxNDU4NDMyMVVMTCwgMTg0NDY3NDQwNTY1Mjk2ODI0MzNVTEwsIDE4NDQ2NzQyOTc0MTk3OTIzODQxVUxMCisgIH07CisgIGNvbnN0IG1wZF91aW50X3QgbXBkX3Jvb3RzWzNdICA9IHs3VUxMLCAxMFVMTCwgMTlVTEx9OworCisgIC8qIGNydC5jICovCisgIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxX01PRF9QMiAgID0gMTg0NDY3NDQwNTUwOTgwMjY2NjlVTEw7CisgIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxUDJfTU9EX1AzID0gMjg3MDY0MTQzNzA4MTYwVUxMOworICBjb25zdCBtcGRfdWludF90IExIX1AxUDIgPSAxODQ0Njc0NDA1MjIzNDcxNTEzN1VMTDsgICAgIC8qIChQMSpQMikgJSAyXjY0ICovCisgIGNvbnN0IG1wZF91aW50X3QgVUhfUDFQMiA9IDE4NDQ2NzQ0MDUyMjM0NzE1MTQxVUxMOyAgICAgLyogKFAxKlAyKSAvIDJeNjQgKi8KKworICAvKiB0cmFuc3Bvc2UuYyAqLworICBjb25zdCBtcGRfc2l6ZV90IG1wZF9iaXRzWzY0XSA9IHsKKyAgICAxLCAyLCA0LCA4LCAxNiwgMzIsIDY0LCAxMjgsIDI1NiwgNTEyLCAxMDI0LCAgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQsCisgICAgMzI3NjgsIDY1NTM2LCAxMzEwNzIsIDI2MjE0NCwgNTI0Mjg4LCAxMDQ4NTc2LCAyMDk3MTUyLCA0MTk0MzA0LCA4Mzg4NjA4LAorICAgIDE2Nzc3MjE2LCAzMzU1NDQzMiwgNjcxMDg4NjQsIDEzNDIxNzcyOCwgMjY4NDM1NDU2LCA1MzY4NzA5MTIsIDEwNzM3NDE4MjQsCisgICAgMjE0NzQ4MzY0OFVMTCwgNDI5NDk2NzI5NlVMTCwgODU4OTkzNDU5MlVMTCwgMTcxNzk4NjkxODRVTEwsIDM0MzU5NzM4MzY4VUxMLAorICAgIDY4NzE5NDc2NzM2VUxMLCAxMzc0Mzg5NTM0NzJVTEwsIDI3NDg3NzkwNjk0NFVMTCwgNTQ5NzU1ODEzODg4VUxMLAorICAgIDEwOTk1MTE2Mjc3NzZVTEwsIDIxOTkwMjMyNTU1NTJVTEwsIDQzOTgwNDY1MTExMDQsIDg3OTYwOTMwMjIyMDhVTEwsCisgICAgMTc1OTIxODYwNDQ0MTZVTEwsIDM1MTg0MzcyMDg4ODMyVUxMLCA3MDM2ODc0NDE3NzY2NFVMTCwgMTQwNzM3NDg4MzU1MzI4VUxMLAorICAgIDI4MTQ3NDk3NjcxMDY1NlVMTCwgNTYyOTQ5OTUzNDIxMzEyVUxMLCAxMTI1ODk5OTA2ODQyNjI0VUxMLAorICAgIDIyNTE3OTk4MTM2ODUyNDhVTEwsIDQ1MDM1OTk2MjczNzA0OTZVTEwsIDkwMDcxOTkyNTQ3NDA5OTJVTEwsCisgICAgMTgwMTQzOTg1MDk0ODE5ODRVTEwsIDM2MDI4Nzk3MDE4OTYzOTY4VUxMLCA3MjA1NzU5NDAzNzkyNzkzNlVMTCwKKyAgICAxNDQxMTUxODgwNzU4NTU4NzJVTEwsIDI4ODIzMDM3NjE1MTcxMTc0NFVMTCwgNTc2NDYwNzUyMzAzNDIzNDg4VUxMLAorICAgIDExNTI5MjE1MDQ2MDY4NDY5NzZVTEwsIDIzMDU4NDMwMDkyMTM2OTM5NTJVTEwsIDQ2MTE2ODYwMTg0MjczODc5MDRVTEwsCisgICAgOTIyMzM3MjAzNjg1NDc3NTgwOFVMTAorICB9OworCisgIC8qIG1wZGVjaW1hbC5jICovCisgIGNvbnN0IG1wZF91aW50X3QgbXBkX3BvdzEwW01QRF9SRElHSVRTKzFdID0geworICAgIDEsMTAsMTAwLDEwMDAsMTAwMDAsMTAwMDAwLDEwMDAwMDAsMTAwMDAwMDAsMTAwMDAwMDAwLDEwMDAwMDAwMDAsCisgICAgMTAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDBVTEwsCisgICAgMTAwMDAwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDAwMDBVTEwsCisgICAgMTAwMDAwMDAwMDAwMDAwMDAwVUxMLDEwMDAwMDAwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDAwMDAwMDBVTEwKKyAgfTsKKworICAvKiBtYWdpYyBudW1iZXIgZm9yIGNvbnN0YW50IGRpdmlzaW9uIGJ5IE1QRF9SQURJWCAqLworICBjb25zdCBtcGRfdWludF90IG1wcmltZV9yZHggPSAxNTU4MTQ5MjYxODM4NDI5NDczMFVMTDsKKworI2VsaWYgZGVmaW5lZChDT05GSUdfMzIpCisKKyAgLyogbnVtYmVyLXRoZW9yeS5jICovCisgIGNvbnN0IG1wZF91aW50X3QgbXBkX21vZHVsaVszXSAgPSB7MjExMzkyOTIxN1VMLCAyMDEzMjY1OTIxVUwsIDE4MTE5MzkzMjlVTH07CisgIGNvbnN0IG1wZF91aW50X3QgbXBkX3Jvb3RzWzNdICAgPSB7NVVMLCAzMVVMLCAxM1VMfTsKKworICAvKiBQZW50aXVtUHJvIG1vZHVsYXIgbXVsdGlwbGljYXRpb246IFRoZXNlIGNvbnN0YW50cyBoYXZlIHRvIGJlIGxvYWRlZCBhcworICAgKiA4MCBiaXQgbG9uZyBkb3VibGVzLCB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCBieSBjZXJ0YWluIGNvbXBpbGVycy4gKi8KKyAgY29uc3QgdWludDMyX3QgbXBkX2ludm1vZHVsaVszXVszXSA9IHsKKyAgICB7NDI5Mzg4NTE3MFUsIDIxODE1NzA2ODhVLCAxNjM1MlV9LCAgLyogKChsb25nIGRvdWJsZSkgMSAvIDIxMTM5MjkyMTdVTCkgKi8KKyAgICB7MTY5ODg5ODE3N1UsIDIyOTA2NDkyMjNVLCAxNjM1MlV9LCAgLyogKChsb25nIGRvdWJsZSkgMSAvIDIwMTMyNjU5MjFVTCkgKi8KKyAgICB7MjcxNjAyMTg0NlUsIDI1NDUxNjU4MDNVLCAxNjM1MlV9ICAgLyogKChsb25nIGRvdWJsZSkgMSAvIDE4MTE5MzkzMjlVTCkgKi8KKyAgfTsKKworICBjb25zdCBmbG9hdCBNUERfVFdPNjMgPSA5MjIzMzcyMDM2ODU0Nzc1ODA4LjA7IC8qIDJeNjMgKi8KKworICAvKiBjcnQuYyAqLworICBjb25zdCBtcGRfdWludF90IElOVl9QMV9NT0RfUDIgICA9IDIwMTMyNjU5MDFVTDsKKyAgY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFQMl9NT0RfUDMgPSA1NFVMOworICBjb25zdCBtcGRfdWludF90IExIX1AxUDIgPSA0MTI3MTk1MTM3VUw7ICAvKiAoUDEqUDIpICUgMl4zMiAqLworICBjb25zdCBtcGRfdWludF90IFVIX1AxUDIgPSA5OTA5MDQzMjBVTDsgICAvKiAoUDEqUDIpIC8gMl4zMiAqLworCisgIC8qIHRyYW5zcG9zZS5jICovCisgIGNvbnN0IG1wZF9zaXplX3QgbXBkX2JpdHNbMzJdID0geworICAgIDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQsIDEyOCwgMjU2LCA1MTIsICAxMDI0LCAgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQsCisgICAgMzI3NjgsIDY1NTM2LCAxMzEwNzIsIDI2MjE0NCwgNTI0Mjg4LCAxMDQ4NTc2LCAyMDk3MTUyLCA0MTk0MzA0LCA4Mzg4NjA4LAorICAgIDE2Nzc3MjE2LCAzMzU1NDQzMiwgNjcxMDg4NjQsIDEzNDIxNzcyOCwgMjY4NDM1NDU2LCA1MzY4NzA5MTIsIDEwNzM3NDE4MjQsCisgICAgMjE0NzQ4MzY0OFVMCisgIH07CisKKyAgLyogbXBkZWNpbWFsLmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcG93MTBbTVBEX1JESUdJVFMrMV0gPSB7CisgICAgMSwxMCwxMDAsMTAwMCwxMDAwMCwxMDAwMDAsMTAwMDAwMCwxMDAwMDAwMCwxMDAwMDAwMDAsMTAwMDAwMDAwMAorICB9OworCisjZWxzZQorICAjZXJyb3IgIkNPTkZJR182NCBvciBDT05GSUdfMzIgbXVzdCBiZSBkZWZpbmVkLiIKKyNlbmRpZgorCitjb25zdCBjaGFyICptcGRfcm91bmRfc3RyaW5nW01QRF9ST1VORF9HVUFSRF0gPSB7CisgICAgIlJPVU5EX1VQIiwgICAgICAgICAgLyogcm91bmQgYXdheSBmcm9tIDAgICAgICAgICAgICAgICAqLworICAgICJST1VORF9ET1dOIiwgICAgICAgIC8qIHJvdW5kIHRvd2FyZCAwICh0cnVuY2F0ZSkgICAgICAgKi8KKyAgICAiUk9VTkRfQ0VJTElORyIsICAgICAvKiByb3VuZCB0b3dhcmQgK2luZmluaXR5ICAgICAgICAgICovCisgICAgIlJPVU5EX0ZMT09SIiwgICAgICAgLyogcm91bmQgdG93YXJkIC1pbmZpbml0eSAgICAgICAgICAqLworICAgICJST1VORF9IQUxGX1VQIiwgICAgIC8qIDAuNSBpcyByb3VuZGVkIHVwICAgICAgICAgICAgICAgKi8KKyAgICAiUk9VTkRfSEFMRl9ET1dOIiwgICAvKiAwLjUgaXMgcm91bmRlZCBkb3duICAgICAgICAgICAgICovCisgICAgIlJPVU5EX0hBTEZfRVZFTiIsICAgLyogMC41IGlzIHJvdW5kZWQgdG8gZXZlbiAgICAgICAgICAqLworICAgICJST1VORF8wNVVQIiwgICAgICAgIC8qIHJvdW5kIHplcm8gb3IgZml2ZSBhd2F5IGZyb20gMCAgKi8KKyAgICAiUk9VTkRfVFJVTkMiLCAgICAgICAvKiB0cnVuY2F0ZSwgYnV0IHNldCBpbmZpbml0eSAgICAgICovCit9OworCitjb25zdCBjaGFyICptcGRfY2xhbXBfc3RyaW5nW01QRF9DTEFNUF9HVUFSRF0gPSB7CisgICAgIkNMQU1QX0RFRkFVTFQiLAorICAgICJDTEFNUF9JRUVFXzc1NCIKK307CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNkZjkyMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBDT05TVEFOVFNfSAorI2RlZmluZSBDT05TVEFOVFNfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworLyogY2hvaWNlIG9mIG9wdGltaXplZCBmdW5jdGlvbnMgKi8KKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKy8qIHg2NCAqLworICAjZGVmaW5lIE1VTE1PRChhLCBiKSB4NjRfbXVsbW9kKGEsIGIsIHVtb2QpCisgICNkZWZpbmUgTVVMTU9EMkMoYTAsIGExLCB3KSB4NjRfbXVsbW9kMmMoYTAsIGExLCB3LCB1bW9kKQorICAjZGVmaW5lIE1VTE1PRDIoYTAsIGIwLCBhMSwgYjEpIHg2NF9tdWxtb2QyKGEwLCBiMCwgYTEsIGIxLCB1bW9kKQorICAjZGVmaW5lIFBPV01PRChiYXNlLCBleHApIHg2NF9wb3dtb2QoYmFzZSwgZXhwLCB1bW9kKQorICAjZGVmaW5lIFNFVE1PRFVMVVMobW9kbnVtKSBzdGRfc2V0bW9kdWx1cyhtb2RudW0sICZ1bW9kKQorICAjZGVmaW5lIFNJWkUzX05UVCh4MCwgeDEsIHgyLCB3M3RhYmxlKSBzdGRfc2l6ZTNfbnR0KHgwLCB4MSwgeDIsIHczdGFibGUsIHVtb2QpCisjZWxpZiBkZWZpbmVkKFBQUk8pCisvKiBQZW50aXVtUHJvIChvciBsYXRlcikgZ2NjIGlubGluZSBhc20gKi8KKyAgI2RlZmluZSBNVUxNT0QoYSwgYikgcHByb19tdWxtb2QoYSwgYiwgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgTVVMTU9EMkMoYTAsIGExLCB3KSBwcHJvX211bG1vZDJjKGEwLCBhMSwgdywgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgTVVMTU9EMihhMCwgYjAsIGExLCBiMSkgcHByb19tdWxtb2QyKGEwLCBiMCwgYTEsIGIxLCAmZG1vZCwgZGludm1vZCkKKyAgI2RlZmluZSBQT1dNT0QoYmFzZSwgZXhwKSBwcHJvX3Bvd21vZChiYXNlLCBleHAsICZkbW9kLCBkaW52bW9kKQorICAjZGVmaW5lIFNFVE1PRFVMVVMobW9kbnVtKSBwcHJvX3NldG1vZHVsdXMobW9kbnVtLCAmdW1vZCwgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgU0laRTNfTlRUKHgwLCB4MSwgeDIsIHczdGFibGUpIHBwcm9fc2l6ZTNfbnR0KHgwLCB4MSwgeDIsIHczdGFibGUsIHVtb2QsICZkbW9kLCBkaW52bW9kKQorI2Vsc2UKKyAgLyogQU5TSSBDOTkgKi8KKyAgI2RlZmluZSBNVUxNT0QoYSwgYikgc3RkX211bG1vZChhLCBiLCB1bW9kKQorICAjZGVmaW5lIE1VTE1PRDJDKGEwLCBhMSwgdykgc3RkX211bG1vZDJjKGEwLCBhMSwgdywgdW1vZCkKKyAgI2RlZmluZSBNVUxNT0QyKGEwLCBiMCwgYTEsIGIxKSBzdGRfbXVsbW9kMihhMCwgYjAsIGExLCBiMSwgdW1vZCkKKyAgI2RlZmluZSBQT1dNT0QoYmFzZSwgZXhwKSBzdGRfcG93bW9kKGJhc2UsIGV4cCwgdW1vZCkKKyAgI2RlZmluZSBTRVRNT0RVTFVTKG1vZG51bSkgc3RkX3NldG1vZHVsdXMobW9kbnVtLCAmdW1vZCkKKyAgI2RlZmluZSBTSVpFM19OVFQoeDAsIHgxLCB4MiwgdzN0YWJsZSkgc3RkX3NpemUzX250dCh4MCwgeDEsIHgyLCB3M3RhYmxlLCB1bW9kKQorI2VuZGlmCisKKy8qIFBlbnRpdW1Qcm8gKG9yIGxhdGVyKSBnY2MgaW5saW5lIGFzbSAqLworZXh0ZXJuIGNvbnN0IGZsb2F0IE1QRF9UV082MzsKK2V4dGVybiBjb25zdCB1aW50MzJfdCBtcGRfaW52bW9kdWxpWzNdWzNdOworCitlbnVtIHtQMSwgUDIsIFAzfTsKKworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgbXBkX21vZHVsaVtdOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgbXBkX3Jvb3RzW107CitleHRlcm4gY29uc3QgbXBkX3NpemVfdCBtcGRfYml0c1tdOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgbXBkX3BvdzEwW107CisKK2V4dGVybiBjb25zdCBtcGRfdWludF90IElOVl9QMV9NT0RfUDI7CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFQMl9NT0RfUDM7CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBMSF9QMVAyOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgVUhfUDFQMjsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmIC8qIENPTlNUQU5UU19IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnRleHQuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OWY4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnRleHQuYwpAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKwordm9pZAorbXBkX2RmbHRfdHJhcGhhbmRsZXIobXBkX2NvbnRleHRfdCAqY3R4IFVOVVNFRCkKK3sKKyAgICByYWlzZShTSUdGUEUpOworfQorCit2b2lkICgqIG1wZF90cmFwaGFuZGxlcikobXBkX2NvbnRleHRfdCAqKSA9IG1wZF9kZmx0X3RyYXBoYW5kbGVyOworCisKKy8qIFNldCBndWFyYW50ZWVkIG1pbmltdW0gbnVtYmVyIG9mIGNvZWZmaWNpZW50IHdvcmRzLiBUaGUgZnVuY3Rpb24gbWF5CisgICBiZSB1c2VkIG9uY2UgYXQgcHJvZ3JhbSBzdGFydC4gU2V0dGluZyBNUERfTUlOQUxMT0MgdG8gb3V0LW9mLWJvdW5kcworICAgdmFsdWVzIGlzIGEgY2F0YXN0cm9waGljIGVycm9yLCBzbyBpbiB0aGF0IGNhc2UgdGhlIGZ1bmN0aW9uIGV4aXRzIHJhdGhlcgorICAgdGhhbiByZWx5aW5nIG9uIHRoZSB1c2VyIHRvIGNoZWNrIGEgcmV0dXJuIHZhbHVlLiAqLwordm9pZAorbXBkX3NldG1pbmFsbG9jKG1wZF9zc2l6ZV90IG4pCit7CisgICAgc3RhdGljIGludCBtaW5hbGxvY19pc19zZXQgPSAwOworCisgICAgaWYgKG1pbmFsbG9jX2lzX3NldCkgeworICAgICAgICBtcGRfZXJyX3dhcm4oIm1wZF9zZXRtaW5hbGxvYzogaWdub3JpbmcgcmVxdWVzdCB0byBzZXQgIgorICAgICAgICAgICAgICAgICAgICAgIk1QRF9NSU5BTExPQyBhIHNlY29uZCB0aW1lXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobiA8IE1QRF9NSU5BTExPQ19NSU4gfHwgbiA+IE1QRF9NSU5BTExPQ19NQVgpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgiaWxsZWdhbCB2YWx1ZSBmb3IgTVBEX01JTkFMTE9DIik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgTVBEX01JTkFMTE9DID0gbjsKKyAgICBtaW5hbGxvY19pc19zZXQgPSAxOworfQorCit2b2lkCittcGRfaW5pdChtcGRfY29udGV4dF90ICpjdHgsIG1wZF9zc2l6ZV90IHByZWMpCit7CisgICAgbXBkX3NzaXplX3QgaWRlYWxfbWluYWxsb2M7CisKKyAgICBtcGRfZGVmYXVsdGNvbnRleHQoY3R4KTsKKworICAgIGlmICghbXBkX3FzZXRwcmVjKGN0eCwgcHJlYykpIHsKKyAgICAgICAgbXBkX2FkZHN0YXR1c19yYWlzZShjdHgsIE1QRF9JbnZhbGlkX2NvbnRleHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWRlYWxfbWluYWxsb2MgPSAyICogKChwcmVjK01QRF9SRElHSVRTLTEpIC8gTVBEX1JESUdJVFMpOworICAgIGlmIChpZGVhbF9taW5hbGxvYyA8IE1QRF9NSU5BTExPQ19NSU4pIGlkZWFsX21pbmFsbG9jID0gTVBEX01JTkFMTE9DX01JTjsKKyAgICBpZiAoaWRlYWxfbWluYWxsb2MgPiBNUERfTUlOQUxMT0NfTUFYKSBpZGVhbF9taW5hbGxvYyA9IE1QRF9NSU5BTExPQ19NQVg7CisKKyAgICBtcGRfc2V0bWluYWxsb2MoaWRlYWxfbWluYWxsb2MpOworfQorCit2b2lkCittcGRfbWF4Y29udGV4dChtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgY3R4LT5wcmVjPU1QRF9NQVhfUFJFQzsKKyAgICBjdHgtPmVtYXg9TVBEX01BWF9FTUFYOworICAgIGN0eC0+ZW1pbj1NUERfTUlOX0VNSU47CisgICAgY3R4LT5yb3VuZD1NUERfUk9VTkRfSEFMRl9FVkVOOworICAgIGN0eC0+dHJhcHM9TVBEX1RyYXBzOworICAgIGN0eC0+c3RhdHVzPTA7CisgICAgY3R4LT5uZXd0cmFwPTA7CisgICAgY3R4LT5jbGFtcD0wOworICAgIGN0eC0+YWxsY3I9MTsKK30KKwordm9pZAorbXBkX2RlZmF1bHRjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBjdHgtPnByZWM9MipNUERfUkRJR0lUUzsKKyAgICBjdHgtPmVtYXg9TVBEX01BWF9FTUFYOworICAgIGN0eC0+ZW1pbj1NUERfTUlOX0VNSU47CisgICAgY3R4LT5yb3VuZD1NUERfUk9VTkRfSEFMRl9VUDsKKyAgICBjdHgtPnRyYXBzPU1QRF9UcmFwczsKKyAgICBjdHgtPnN0YXR1cz0wOworICAgIGN0eC0+bmV3dHJhcD0wOworICAgIGN0eC0+Y2xhbXA9MDsKKyAgICBjdHgtPmFsbGNyPTE7Cit9CisKK3ZvaWQKK21wZF9iYXNpY2NvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGN0eC0+cHJlYz05OworICAgIGN0eC0+ZW1heD1NUERfTUFYX0VNQVg7CisgICAgY3R4LT5lbWluPU1QRF9NSU5fRU1JTjsKKyAgICBjdHgtPnJvdW5kPU1QRF9ST1VORF9IQUxGX1VQOworICAgIGN0eC0+dHJhcHM9TVBEX1RyYXBzfE1QRF9DbGFtcGVkOworICAgIGN0eC0+c3RhdHVzPTA7CisgICAgY3R4LT5uZXd0cmFwPTA7CisgICAgY3R4LT5jbGFtcD0wOworICAgIGN0eC0+YWxsY3I9MTsKK30KKworaW50CittcGRfaWVlZV9jb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IGJpdHMpCit7CisgICAgaWYgKGJpdHMgPD0gMCB8fCBiaXRzID4gTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUUyB8fCBiaXRzICUgMzIpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eC0+cHJlYyA9IDkgKiAoYml0cy8zMikgLSAyOworICAgIGN0eC0+ZW1heCA9IDMgKiAoKG1wZF9zc2l6ZV90KTE8PChiaXRzLzE2KzMpKTsKKyAgICBjdHgtPmVtaW4gPSAxIC0gY3R4LT5lbWF4OworICAgIGN0eC0+cm91bmQ9TVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICBjdHgtPnRyYXBzPTA7CisgICAgY3R4LT5zdGF0dXM9MDsKKyAgICBjdHgtPm5ld3RyYXA9MDsKKyAgICBjdHgtPmNsYW1wPTE7CisgICAgY3R4LT5hbGxjcj0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK21wZF9zc2l6ZV90CittcGRfZ2V0cHJlYyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+cHJlYzsKK30KKworbXBkX3NzaXplX3QKK21wZF9nZXRlbWF4KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5lbWF4OworfQorCittcGRfc3NpemVfdAorbXBkX2dldGVtaW4oY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtaW47Cit9CisKK2ludAorbXBkX2dldHJvdW5kKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5yb3VuZDsKK30KKwordWludDMyX3QKK21wZF9nZXR0cmFwcyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+dHJhcHM7Cit9CisKK3VpbnQzMl90CittcGRfZ2V0c3RhdHVzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5zdGF0dXM7Cit9CisKK2ludAorbXBkX2dldGNsYW1wKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5jbGFtcDsKK30KKworaW50CittcGRfZ2V0Y3IoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmFsbGNyOworfQorCisKK2ludAorbXBkX3FzZXRwcmVjKG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgcHJlYykKK3sKKyAgICBpZiAocHJlYyA8PSAwIHx8IHByZWMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+cHJlYyA9IHByZWM7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRlbWF4KG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgZW1heCkKK3sKKyAgICBpZiAoZW1heCA8IDAgfHwgZW1heCA+IE1QRF9NQVhfRU1BWCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5lbWF4ID0gZW1heDsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldGVtaW4obXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWluKQoreworICAgIGlmIChlbWluID4gMCB8fCBlbWluIDwgTVBEX01JTl9FTUlOKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmVtaW4gPSBlbWluOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0cm91bmQobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgcm91bmQpCit7CisgICAgaWYgKCEoMCA8PSByb3VuZCAmJiByb3VuZCA8IE1QRF9ST1VORF9HVUFSRCkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+cm91bmQgPSByb3VuZDsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldHRyYXBzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgdHJhcHMpCit7CisgICAgaWYgKHRyYXBzID4gTVBEX01heF9zdGF0dXMpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+dHJhcHMgPSB0cmFwczsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldHN0YXR1cyhtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKQoreworICAgIGlmIChmbGFncyA+IE1QRF9NYXhfc3RhdHVzKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPnN0YXR1cyA9IGZsYWdzOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0Y2xhbXAobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYykKK3sKKyAgICBpZiAoYyAhPSAwICYmIGMgIT0gMSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5jbGFtcCA9IGM7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRjcihtcGRfY29udGV4dF90ICpjdHgsIGludCBjKQoreworICAgIGlmIChjICE9IDAgJiYgYyAhPSAxKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmFsbGNyID0gYzsKKyAgICByZXR1cm4gMTsKK30KKworCit2b2lkCittcGRfYWRkc3RhdHVzX3JhaXNlKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgY3R4LT5zdGF0dXMgfD0gZmxhZ3M7CisgICAgaWYgKGZsYWdzJmN0eC0+dHJhcHMpIHsKKyAgICAgICAgY3R4LT5uZXd0cmFwID0gKGZsYWdzJmN0eC0+dHJhcHMpOworICAgICAgICBtcGRfdHJhcGhhbmRsZXIoY3R4KTsKKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVmZTEzMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJmbnQuaCIKKyNpbmNsdWRlICJmb3Vyc3RlcC5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInNpeHN0ZXAuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJjb252b2x1dGUuaCIKKworCisvKiBCaWdudW06IEZhc3QgY29udm9sdXRpb24gdXNpbmcgdGhlIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLiBVc2VkIGZvcgorICAgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHZlcnkgbGFyZ2UgY29lZmZpY2llbnRzLiAqLworCisKKy8qIENvbnZvbHV0ZSB0aGUgZGF0YSBpbiBjMSBhbmQgYzIuIFJlc3VsdCBpcyBpbiBjMS4gKi8KK2ludAorZm50X2NvbnZvbHV0ZShtcGRfdWludF90ICpjMSwgbXBkX3VpbnRfdCAqYzIsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBpbnQgKCpmbnQpKG1wZF91aW50X3QgKiwgbXBkX3NpemVfdCwgaW50KTsKKyAgICBpbnQgKCppbnZfZm50KShtcGRfdWludF90ICosIG1wZF9zaXplX3QsIGludCk7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IG5faW52LCB1bW9kOworICAgIG1wZF9zaXplX3QgaTsKKworCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIG5faW52ID0gUE9XTU9EKG4sICh1bW9kLTIpKTsKKworICAgIGlmIChpc3Bvd2VyMihuKSkgeworICAgICAgICBpZiAobiA+IFNJWF9TVEVQX1RIUkVTSE9MRCkgeworICAgICAgICAgICAgZm50ID0gc2l4X3N0ZXBfZm50OworICAgICAgICAgICAgaW52X2ZudCA9IGludl9zaXhfc3RlcF9mbnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmbnQgPSBzdGRfZm50OworICAgICAgICAgICAgaW52X2ZudCA9IHN0ZF9pbnZfZm50OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmbnQgPSBmb3VyX3N0ZXBfZm50OworICAgICAgICBpbnZfZm50ID0gaW52X2ZvdXJfc3RlcF9mbnQ7CisgICAgfQorCisgICAgaWYgKCFmbnQoYzEsIG4sIG1vZG51bSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghZm50KGMyLCBuLCBtb2RudW0pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbi0xOyBpICs9IDIpIHsKKyAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGMxW2ldOworICAgICAgICBtcGRfdWludF90IHkwID0gYzJbaV07CisgICAgICAgIG1wZF91aW50X3QgeDEgPSBjMVtpKzFdOworICAgICAgICBtcGRfdWludF90IHkxID0gYzJbaSsxXTsKKyAgICAgICAgTVVMTU9EMigmeDAsIHkwLCAmeDEsIHkxKTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgIH0KKworICAgIGlmICghaW52X2ZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG4tMzsgaSArPSA0KSB7CisgICAgICAgIG1wZF91aW50X3QgeDAgPSBjMVtpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIG1wZF91aW50X3QgeDIgPSBjMVtpKzJdOworICAgICAgICBtcGRfdWludF90IHgzID0gYzFbaSszXTsKKyAgICAgICAgTVVMTU9EMkMoJngwLCAmeDEsIG5faW52KTsKKyAgICAgICAgTVVMTU9EMkMoJngyLCAmeDMsIG5faW52KTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgICAgICBjMVtpKzJdID0geDI7CisgICAgICAgIGMxW2krM10gPSB4MzsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQXV0b2NvbnZvbHV0ZSB0aGUgZGF0YSBpbiBjMS4gUmVzdWx0IGlzIGluIGMxLiAqLworaW50CitmbnRfYXV0b2NvbnZvbHV0ZShtcGRfdWludF90ICpjMSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIGludCAoKmZudCkobXBkX3VpbnRfdCAqLCBtcGRfc2l6ZV90LCBpbnQpOworICAgIGludCAoKmludl9mbnQpKG1wZF91aW50X3QgKiwgbXBkX3NpemVfdCwgaW50KTsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3Qgbl9pbnYsIHVtb2Q7CisgICAgbXBkX3NpemVfdCBpOworCisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAgbl9pbnYgPSBQT1dNT0QobiwgKHVtb2QtMikpOworCisgICAgaWYgKGlzcG93ZXIyKG4pKSB7CisgICAgICAgIGlmIChuID4gU0lYX1NURVBfVEhSRVNIT0xEKSB7CisgICAgICAgICAgICBmbnQgPSBzaXhfc3RlcF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gaW52X3NpeF9zdGVwX2ZudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZudCA9IHN0ZF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gc3RkX2ludl9mbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZudCA9IGZvdXJfc3RlcF9mbnQ7CisgICAgICAgIGludl9mbnQgPSBpbnZfZm91cl9zdGVwX2ZudDsKKyAgICB9CisKKyAgICBpZiAoIWZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG4tMTsgaSArPSAyKSB7CisgICAgICAgIG1wZF91aW50X3QgeDAgPSBjMVtpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIE1VTE1PRDIoJngwLCB4MCwgJngxLCB4MSk7CisgICAgICAgIGMxW2ldID0geDA7CisgICAgICAgIGMxW2krMV0gPSB4MTsKKyAgICB9CisKKyAgICBpZiAoIWludl9mbnQoYzEsIG4sIG1vZG51bSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBuLTM7IGkgKz0gNCkgeworICAgICAgICBtcGRfdWludF90IHgwID0gYzFbaV07CisgICAgICAgIG1wZF91aW50X3QgeDEgPSBjMVtpKzFdOworICAgICAgICBtcGRfdWludF90IHgyID0gYzFbaSsyXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MyA9IGMxW2krM107CisgICAgICAgIE1VTE1PRDJDKCZ4MCwgJngxLCBuX2ludik7CisgICAgICAgIE1VTE1PRDJDKCZ4MiwgJngzLCBuX2ludik7CisgICAgICAgIGMxW2ldID0geDA7CisgICAgICAgIGMxW2krMV0gPSB4MTsKKyAgICAgICAgYzFbaSsyXSA9IHgyOworICAgICAgICBjMVtpKzNdID0geDM7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1ZWQ0NgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBDT05WT0xVVEVfSAorI2RlZmluZSBDT05WT0xVVEVfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCisjZGVmaW5lIFNJWF9TVEVQX1RIUkVTSE9MRCA0MDk2CisKK2ludCBmbnRfY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfdWludF90ICpjMiwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKK2ludCBmbnRfYXV0b2NvbnZvbHV0ZShtcGRfdWludF90ICpjMSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzFjNGVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuYwpAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisjaW5jbHVkZSAiY3J0LmgiCisKKworLyogQmlnbnVtOiBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtLCBleHRlbmRzIHRoZSBtYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGguICovCisKKworLyogTXVsdGlwbHkgUDFQMiBieSB2LCBzdG9yZSByZXN1bHQgaW4gdy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX2NydF9tdWxQMVAyXzMobXBkX3VpbnRfdCB3WzNdLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaTEsIGhpMiwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGkxLCAmbG8sIExIX1AxUDIsIHYpOworICAgIHdbMF0gPSBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaTIsICZsbywgVUhfUDFQMiwgdik7CisgICAgbG8gPSBoaTEgKyBsbzsKKyAgICBpZiAobG8gPCBoaTEpIGhpMisrOworCisgICAgd1sxXSA9IGxvOworICAgIHdbMl0gPSBoaTI7Cit9CisKKy8qIEFkZCAzIHdvcmRzIGZyb20gdiB0byB3LiBUaGUgcmVzdWx0IGlzIGtub3duIHRvIGZpdCBpbiB3LiAqLworc3RhdGljIGlubGluZSB2b2lkCitfY3J0X2FkZDMobXBkX3VpbnRfdCB3WzNdLCBtcGRfdWludF90IHZbM10pCit7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfdWludF90IHM7CisKKyAgICBzID0gd1swXSArIHZbMF07CisgICAgY2FycnkgPSAocyA8IHdbMF0pOworICAgIHdbMF0gPSBzOworCisgICAgcyA9IHdbMV0gKyAodlsxXSArIGNhcnJ5KTsKKyAgICBjYXJyeSA9IChzIDwgd1sxXSk7CisgICAgd1sxXSA9IHM7CisKKyAgICB3WzJdID0gd1syXSArICh2WzJdICsgY2FycnkpOworfQorCisvKiBEaXZpZGUgMyB3b3JkcyBpbiB1IGJ5IHYsIHN0b3JlIHJlc3VsdCBpbiB3LCByZXR1cm4gcmVtYWluZGVyLiAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitfY3J0X2RpdjMobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgcjEgPSB1WzJdOworICAgIG1wZF91aW50X3QgcjI7CisKKyAgICBpZiAocjEgPCB2KSB7CisgICAgICAgIHdbMl0gPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9kaXZfd29yZCgmd1syXSwgJnIxLCB1WzJdLCB2KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIF9tcGRfZGl2X3dvcmRzKCZ3WzFdLCAmcjIsIHIxLCB1WzFdLCB2KTsKKyAgICBfbXBkX2Rpdl93b3Jkcygmd1swXSwgJnIxLCByMiwgdVswXSwgdik7CisKKyAgICByZXR1cm4gcjE7Cit9CisKKworLyoKKyAqIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW06CisgKiBBbGdvcml0aG0gZnJvbSBKb2VyZyBBcm5kdCwgIk1hdHRlcnMgQ29tcHV0YXRpb25hbCIsCisgKiBDaGFwdGVyIDM3LjQuMSBbaHR0cDovL3d3dy5qamouZGUvZnh0L10KKyAqCisgKiBTZWUgYWxzbyBLbnV0aCwgVEFPQ1AsIFZvbHVtZSAyLCA0LjMuMiwgZXhlcmNpc2UgNy4KKyAqLworCisvKgorICogQ1JUIHdpdGggY2Fycnk6IHgxLCB4MiwgeDMgY29udGFpbiBudW1iZXJzIG1vZHVsbyBwMSwgcDIsIHAzLiBGb3IgZWFjaAorICogdHJpcGxlIG9mIG1lbWJlcnMgb2YgdGhlIGFycmF5cywgZmluZCB0aGUgdW5pcXVlIHogbW9kdWxvIHAxKnAyKnAzLCB3aXRoCisgKiB6bWF4ID0gcDEqcDIqcDMgLSAxLgorICoKKyAqIEluIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLCBzcGxpdCB6IGludG8gcmVzdWx0W2ldID0geiAlIE1QRF9SQURJWAorICogYW5kIGNhcnJ5ID0geiAvIE1QRF9SQURJWC4gTGV0IE4gYmUgdGhlIHNpemUgb2YgY2FycnlbXSBhbmQgY21heCB0aGUKKyAqIG1heGltdW0gY2FycnkuCisgKgorICogTGltaXRzIGZvciB0aGUgMzItYml0IGJ1aWxkOgorICoKKyAqICAgTiAgICA9IDIqKjk2CisgKiAgIGNtYXggPSA3NzExNDM1NTkxMzEyMzgwMjc0CisgKgorICogTGltaXRzIGZvciB0aGUgNjQgYml0IGJ1aWxkOgorICoKKyAqICAgTiAgICA9IDIqKjE5MgorICogICBjbWF4ID0gNjI3NzEwMTM1MzkzNDc1Mzg1OTA0MTI0NDAxMjIwMDQ2MzcxNzEwCisgKgorICogVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnRzIGhvbGQgZm9yIGJvdGggdmVyc2lvbnM6CisgKgorICogICAxKSBjbWF4ICsgem1heCA8IE4sIHNvIHRoZSBhZGRpdGlvbiBkb2VzIG5vdCBvdmVyZmxvdy4KKyAqCisgKiAgIDIpIChjbWF4ICsgem1heCkgLyBNUERfUkFESVggPT0gY21heC4KKyAqCisgKiAgIDMpIElmIGMgPD0gY21heCwgdGhlbiBjX25leHQgPSAoYyArIHptYXgpIC8gTVBEX1JBRElYIDw9IGNtYXguCisgKi8KK3ZvaWQKK2NydDMobXBkX3VpbnRfdCAqeDEsIG1wZF91aW50X3QgKngyLCBtcGRfdWludF90ICp4MywgbXBkX3NpemVfdCByc2l6ZSkKK3sKKyAgICBtcGRfdWludF90IHAxID0gbXBkX21vZHVsaVtQMV07CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBhMSwgYTIsIGEzOworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IHpbM10sIHRbM107CisgICAgbXBkX3VpbnRfdCBjYXJyeVszXSA9IHswLDAsMH07CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IHJzaXplOyBpKyspIHsKKworICAgICAgICBhMSA9IHgxW2ldOworICAgICAgICBhMiA9IHgyW2ldOworICAgICAgICBhMyA9IHgzW2ldOworCisgICAgICAgIFNFVE1PRFVMVVMoUDIpOworICAgICAgICBzID0gZXh0X3N1Ym1vZChhMiwgYTEsIHVtb2QpOworICAgICAgICBzID0gTVVMTU9EKHMsIElOVl9QMV9NT0RfUDIpOworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBzLCBwMSk7CisgICAgICAgIGxvID0gbG8gKyBhMTsKKyAgICAgICAgaWYgKGxvIDwgYTEpIGhpKys7CisKKyAgICAgICAgU0VUTU9EVUxVUyhQMyk7CisgICAgICAgIHMgPSBkd19zdWJtb2QoYTMsIGhpLCBsbywgdW1vZCk7CisgICAgICAgIHMgPSBNVUxNT0QocywgSU5WX1AxUDJfTU9EX1AzKTsKKworICAgICAgICB6WzBdID0gbG87CisgICAgICAgIHpbMV0gPSBoaTsKKyAgICAgICAgelsyXSA9IDA7CisKKyAgICAgICAgX2NydF9tdWxQMVAyXzModCwgcyk7CisgICAgICAgIF9jcnRfYWRkMyh6LCB0KTsKKyAgICAgICAgX2NydF9hZGQzKGNhcnJ5LCB6KTsKKworICAgICAgICB4MVtpXSA9IF9jcnRfZGl2MyhjYXJyeSwgY2FycnksIE1QRF9SQURJWCk7CisgICAgfQorCisgICAgYXNzZXJ0KGNhcnJ5WzBdID09IDAgJiYgY2FycnlbMV0gPT0gMCAmJiBjYXJyeVsyXSA9PSAwKTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTA5MjMyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIENSVF9ICisjZGVmaW5lIENSVF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworLyogSW50ZXJuYWwgaGVhZGVyIGZpbGU6IGFsbCBzeW1ib2xzIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTyAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKK3ZvaWQgY3J0MyhtcGRfdWludF90ICp4MSwgbXBkX3VpbnRfdCAqeDIsIG1wZF91aW50X3QgKngzLCBtcGRfc2l6ZV90IG5tZW1iKTsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWJiMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuYwpAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgImRpZnJhZGl4Mi5oIgorCisKKy8qIEJpZ251bTogVGhlIGFjdHVhbCB0cmFuc2Zvcm0gcm91dGluZSAoZGVjaW1hdGlvbiBpbiBmcmVxdWVuY3kpLiAqLworCisKKy8qCisgKiBHZW5lcmF0ZSBpbmRleCBwYWlycyAoeCwgYml0cmV2ZXJzZSh4KSkgYW5kIGNhcnJ5IG91dCB0aGUgcGVybXV0YXRpb24uCisgKiBuIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCisgKiBBbGdvcml0aG0gZHVlIHRvIEJyZW50L0xlaG1hbm4sIHNlZSBKb2VyZyBBcm5kdCwgIk1hdHRlcnMgQ29tcHV0YXRpb25hbCIsCisgKiBDaGFwdGVyIDEuMTQuNC4gW2h0dHA6Ly93d3cuampqLmRlL2Z4dC9dCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorYml0cmV2ZXJzZV9wZXJtdXRlKG1wZF91aW50X3QgYVtdLCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3NpemVfdCB4ID0gMDsKKyAgICBtcGRfc2l6ZV90IHIgPSAwOworICAgIG1wZF91aW50X3QgdDsKKworICAgIGRvIHsgLyogSW52YXJpYW50OiByID0gYml0cmV2ZXJzZSh4KSAqLworICAgICAgICBpZiAociA+IHgpIHsKKyAgICAgICAgICAgIHQgPSBhW3hdOworICAgICAgICAgICAgYVt4XSA9IGFbcl07CisgICAgICAgICAgICBhW3JdID0gdDsKKyAgICAgICAgfQorICAgICAgICAvKiBGbGlwIHRyYWlsaW5nIGNvbnNlY3V0aXZlIDEgYml0cyBhbmQgdGhlIGZpcnN0IHplcm8gYml0CisgICAgICAgICAqIHRoYXQgYWJzb3JicyBhIHBvc3NpYmxlIGNhcnJ5LiAqLworICAgICAgICB4ICs9IDE7CisgICAgICAgIC8qIE1pcnJvciB0aGUgb3BlcmF0aW9uIG9uIHI6IEZsaXAgbl90cmFpbGluZ196ZXJvcyh4KSsxCisgICAgICAgICAgIGhpZ2ggYml0cyBvZiByLiAqLworICAgICAgICByIF49IChuIC0gKG4gPj4gKG1wZF9ic2YoeCkrMSkpKTsKKyAgICAgICAgLyogVGhlIGxvb3AgaW52YXJpYW50IGlzIHByZXNlcnZlZC4gKi8KKyAgICB9IHdoaWxlICh4IDwgbik7Cit9CisKKworLyogRmFzdCBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybSwgZGVjaW1hdGlvbiBpbiBmcmVxdWVuY3kuICovCit2b2lkCitmbnRfZGlmMihtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtcykKK3sKKyAgICBtcGRfdWludF90ICp3dGFibGUgPSB0cGFyYW1zLT53dGFibGU7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCB1MCwgdTEsIHYwLCB2MTsKKyAgICBtcGRfdWludF90IHcsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3NpemVfdCBtLCBtaGFsZjsKKyAgICBtcGRfc2l6ZV90IGosIHI7CisKKworICAgIGFzc2VydChpc3Bvd2VyMihuKSk7CisgICAgYXNzZXJ0KG4gPj0gNCk7CisKKyAgICBTRVRNT0RVTFVTKHRwYXJhbXMtPm1vZG51bSk7CisKKyAgICAvKiBtID09IG4gKi8KKyAgICBtaGFsZiA9IG4gLyAyOworICAgIGZvciAoaiA9IDA7IGogPCBtaGFsZjsgaiArPSAyKSB7CisKKyAgICAgICAgdzAgPSB3dGFibGVbal07CisgICAgICAgIHcxID0gd3RhYmxlW2orMV07CisKKyAgICAgICAgdTAgPSBhW2pdOworICAgICAgICB2MCA9IGFbaittaGFsZl07CisKKyAgICAgICAgdTEgPSBhW2orMV07CisgICAgICAgIHYxID0gYVtqKzErbWhhbGZdOworCisgICAgICAgIGFbal0gPSBhZGRtb2QodTAsIHYwLCB1bW9kKTsKKyAgICAgICAgdjAgPSBzdWJtb2QodTAsIHYwLCB1bW9kKTsKKworICAgICAgICBhW2orMV0gPSBhZGRtb2QodTEsIHYxLCB1bW9kKTsKKyAgICAgICAgdjEgPSBzdWJtb2QodTEsIHYxLCB1bW9kKTsKKworICAgICAgICBNVUxNT0QyKCZ2MCwgdzAsICZ2MSwgdzEpOworCisgICAgICAgIGFbaittaGFsZl0gPSB2MDsKKyAgICAgICAgYVtqKzErbWhhbGZdID0gdjE7CisKKyAgICB9CisKKyAgICB3c3RlcCA9IDI7CisgICAgZm9yIChtID0gbi8yOyBtID49IDI7IG0+Pj0xLCB3c3RlcDw8PTEpIHsKKworICAgICAgICBtaGFsZiA9IG0gLyAyOworCisgICAgICAgIC8qIGogPT0gMCAqLworICAgICAgICBmb3IgKHIgPSAwOyByIDwgbjsgciArPSAyKm0pIHsKKworICAgICAgICAgICAgdTAgPSBhW3JdOworICAgICAgICAgICAgdjAgPSBhW3IrbWhhbGZdOworCisgICAgICAgICAgICB1MSA9IGFbbStyXTsKKyAgICAgICAgICAgIHYxID0gYVttK3IrbWhhbGZdOworCisgICAgICAgICAgICBhW3JdID0gYWRkbW9kKHUwLCB2MCwgdW1vZCk7CisgICAgICAgICAgICB2MCA9IHN1Ym1vZCh1MCwgdjAsIHVtb2QpOworCisgICAgICAgICAgICBhW20rcl0gPSBhZGRtb2QodTEsIHYxLCB1bW9kKTsKKyAgICAgICAgICAgIHYxID0gc3VibW9kKHUxLCB2MSwgdW1vZCk7CisKKyAgICAgICAgICAgIGFbcittaGFsZl0gPSB2MDsKKyAgICAgICAgICAgIGFbbStyK21oYWxmXSA9IHYxOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChqID0gMTsgaiA8IG1oYWxmOyBqKyspIHsKKworICAgICAgICAgICAgdyA9IHd0YWJsZVtqKndzdGVwXTsKKworICAgICAgICAgICAgZm9yIChyID0gMDsgciA8IG47IHIgKz0gMiptKSB7CisKKyAgICAgICAgICAgICAgICB1MCA9IGFbcitqXTsKKyAgICAgICAgICAgICAgICB2MCA9IGFbcitqK21oYWxmXTsKKworICAgICAgICAgICAgICAgIHUxID0gYVttK3Iral07CisgICAgICAgICAgICAgICAgdjEgPSBhW20rcitqK21oYWxmXTsKKworICAgICAgICAgICAgICAgIGFbcitqXSA9IGFkZG1vZCh1MCwgdjAsIHVtb2QpOworICAgICAgICAgICAgICAgIHYwID0gc3VibW9kKHUwLCB2MCwgdW1vZCk7CisKKyAgICAgICAgICAgICAgICBhW20rcitqXSA9IGFkZG1vZCh1MSwgdjEsIHVtb2QpOworICAgICAgICAgICAgICAgIHYxID0gc3VibW9kKHUxLCB2MSwgdW1vZCk7CisKKyAgICAgICAgICAgICAgICBNVUxNT0QyQygmdjAsICZ2MSwgdyk7CisKKyAgICAgICAgICAgICAgICBhW3IraittaGFsZl0gPSB2MDsKKyAgICAgICAgICAgICAgICBhW20rcitqK21oYWxmXSA9IHYxOworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgIH0KKworICAgIGJpdHJldmVyc2VfcGVybXV0ZShhLCBuKTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWFhNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIERJRl9SQURJWDJfSAorI2RlZmluZSBESUZfUkFESVgyX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKwordm9pZCBmbnRfZGlmMihtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtcyk7CisKKworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX0VORCkgLyogcmVzdG9yZSBwcmV2aW91cyBzY29wZSBydWxlcyAqLworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxMTY1MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmMKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImRpZnJhZGl4Mi5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgImZudC5oIgorCisKKy8qIEJpZ251bTogRmFzdCB0cmFuc2Zvcm0gZm9yIG1lZGl1bS1zaXplZCBjb2VmZmljaWVudHMuICovCisKKworLyogZm9yd2FyZCB0cmFuc2Zvcm0sIHNpZ24gPSAtMSAqLworaW50CitzdGRfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKworICAgIGFzc2VydChpc3Bvd2VyMihuKSk7CisgICAgYXNzZXJ0KG4gPj0gNCk7CisgICAgYXNzZXJ0KG4gPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworICAgIGlmICgodHBhcmFtcyA9IF9tcGRfaW5pdF9mbnRfcGFyYW1zKG4sIC0xLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmbnRfZGlmMihhLCBuLCB0cGFyYW1zKTsKKworICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgIHJldHVybiAxOworfQorCisvKiByZXZlcnNlIHRyYW5zZm9ybSwgc2lnbiA9IDEgKi8KK2ludAorc3RkX2ludl9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSA0KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMobiwgMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm50X2RpZjIoYSwgbiwgdHBhcmFtcyk7CisKKyAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKyAgICByZXR1cm4gMTsKK30KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMzAyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRk5UX0gKKyNkZWZpbmUgRk5UX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworaW50IHN0ZF9mbnQobXBkX3VpbnRfdCBhW10sIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CitpbnQgc3RkX2ludl9mbnQobXBkX3VpbnRfdCBhW10sIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CisKKworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX0VORCkgLyogcmVzdG9yZSBwcmV2aW91cyBzY29wZSBydWxlcyAqLworCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzMmMwZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYwpAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInNpeHN0ZXAuaCIKKyNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJmb3Vyc3RlcC5oIgorCisKKy8qIEJpZ251bTogQ2FjaGUgZWZmaWNpZW50IE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybSBmb3IgYXJyYXlzIG9mIHRoZQorICAgZm9ybSAzICogMioqbiAoU2VlIGxpdGVyYXR1cmUvbWF0cml4LXRyYW5zZm9ybS50eHQpLiAqLworCisKKyNpZm5kZWYgUFBSTworc3RhdGljIGlubGluZSB2b2lkCitzdGRfc2l6ZTNfbnR0KG1wZF91aW50X3QgKngxLCBtcGRfdWludF90ICp4MiwgbXBkX3VpbnRfdCAqeDMsCisgICAgICAgICAgICAgIG1wZF91aW50X3QgdzN0YWJsZVszXSwgbXBkX3VpbnRfdCB1bW9kKQoreworICAgIG1wZF91aW50X3QgcjEsIHIyOworICAgIG1wZF91aW50X3QgdzsKKyAgICBtcGRfdWludF90IHMsIHRtcDsKKworCisgICAgLyogayA9IDAgLT4gdyA9IDEgKi8KKyAgICBzID0gKngxOworICAgIHMgPSBhZGRtb2QocywgKngyLCB1bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsICp4MywgdW1vZCk7CisKKyAgICByMSA9IHM7CisKKyAgICAvKiBrID0gMSAqLworICAgIHMgPSAqeDE7CisKKyAgICB3ID0gdzN0YWJsZVsxXTsKKyAgICB0bXAgPSBNVUxNT0QoKngyLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBNVUxNT0QoKngzLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICByMiA9IHM7CisKKyAgICAvKiBrID0gMiAqLworICAgIHMgPSAqeDE7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBNVUxNT0QoKngyLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsxXTsKKyAgICB0bXAgPSBNVUxNT0QoKngzLCB3KTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICAqeDMgPSBzOworICAgICp4MiA9IHIyOworICAgICp4MSA9IHIxOworfQorI2Vsc2UgLyogUFBSTyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX3NpemUzX250dChtcGRfdWludF90ICp4MSwgbXBkX3VpbnRfdCAqeDIsIG1wZF91aW50X3QgKngzLCBtcGRfdWludF90IHczdGFibGVbM10sCisgICAgICAgICAgICAgICBtcGRfdWludF90IHVtb2QsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgZGludm1vZFszXSkKK3sKKyAgICBtcGRfdWludF90IHIxLCByMjsKKyAgICBtcGRfdWludF90IHc7CisgICAgbXBkX3VpbnRfdCBzLCB0bXA7CisKKworICAgIC8qIGsgPSAwIC0+IHcgPSAxICovCisgICAgcyA9ICp4MTsKKyAgICBzID0gYWRkbW9kKHMsICp4MiwgdW1vZCk7CisgICAgcyA9IGFkZG1vZChzLCAqeDMsIHVtb2QpOworCisgICAgcjEgPSBzOworCisgICAgLyogayA9IDEgKi8KKyAgICBzID0gKngxOworCisgICAgdyA9IHczdGFibGVbMV07CisgICAgdG1wID0gcHByb19tdWxtb2QoKngyLCB3LCBkbW9kLCBkaW52bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBwcHJvX211bG1vZCgqeDMsIHcsIGRtb2QsIGRpbnZtb2QpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHIyID0gczsKKworICAgIC8qIGsgPSAyICovCisgICAgcyA9ICp4MTsKKworICAgIHcgPSB3M3RhYmxlWzJdOworICAgIHRtcCA9IHBwcm9fbXVsbW9kKCp4MiwgdywgZG1vZCwgZGludm1vZCk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgdyA9IHczdGFibGVbMV07CisgICAgdG1wID0gcHByb19tdWxtb2QoKngzLCB3LCBkbW9kLCBkaW52bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICAqeDMgPSBzOworICAgICp4MiA9IHIyOworICAgICp4MSA9IHIxOworfQorI2VuZGlmCisKKworLyogZm9yd2FyZCB0cmFuc2Zvcm0sIHNpZ24gPSAtMTsgdHJhbnNmb3JtIGxlbmd0aCA9IDMgKiAyKipuICovCitpbnQKK2ZvdXJfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIG1wZF9zaXplX3QgUiA9IDM7IC8qIG51bWJlciBvZiByb3dzICovCisgICAgbXBkX3NpemVfdCBDID0gbiAvIDM7IC8qIG51bWJlciBvZiBjb2x1bW5zICovCisgICAgbXBkX3VpbnRfdCB3M3RhYmxlWzNdOworICAgIG1wZF91aW50X3Qga2VybmVsLCB3MCwgdzEsIHdzdGVwOworICAgIG1wZF91aW50X3QgKnMsICpwMCwgKnAxLCAqcDI7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQobiA+PSA0OCk7CisgICAgYXNzZXJ0KG4gPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworCisgICAgLyogTGVuZ3RoIFIgdHJhbnNmb3JtIG9uIHRoZSBjb2x1bW5zLiAqLworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBfbXBkX2luaXRfdzN0YWJsZSh3M3RhYmxlLCAtMSwgbW9kbnVtKTsKKyAgICBmb3IgKHAwPWEsIHAxPXAwK0MsIHAyPXAwKzIqQzsgcDA8YStDOyBwMCsrLHAxKysscDIrKykgeworCisgICAgICAgIFNJWkUzX05UVChwMCwgcDEsIHAyLCB3M3RhYmxlKTsKKyAgICB9CisKKyAgICAvKiBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK2spIGJ5IHIqKihpKmspLiAqLworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIC0xLCBtb2RudW0pOworICAgIGZvciAoaSA9IDE7IGkgPCBSOyBpKyspIHsKKyAgICAgICAgdzAgPSAxOyAgICAgICAgICAgICAgICAgIC8qIHIqKihpKjApOiBpbml0aWFsIHZhbHVlIGZvciBrPTAgKi8KKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsgIC8qIHIqKihpKjEpOiBpbml0aWFsIHZhbHVlIGZvciBrPTEgKi8KKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsgIC8qIHIqKigyKmkpICovCisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDLTE7IGsgKz0gMikgeworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGFbaSpDK2tdOworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGFbaSpDK2srMV07CisgICAgICAgICAgICBNVUxNT0QyKCZ4MCwgdzAsICZ4MSwgdzEpOworICAgICAgICAgICAgTVVMTU9EMkMoJncwLCAmdzEsIHdzdGVwKTsgIC8qIHIqKihpKihrKzIpKSA9IHIqKihpKmspICogcioqKDIqaSkgKi8KKyAgICAgICAgICAgIGFbaSpDK2tdID0geDA7CisgICAgICAgICAgICBhW2kqQytrKzFdID0geDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBMZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgZm9yIChzID0gYTsgcyA8IGErbjsgcyArPSBDKSB7CisgICAgICAgIGlmICghc2l4X3N0ZXBfZm50KHMsIEMsIG1vZG51bSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgdHJhbnNwb3NlXzN4cG93MihhLCBSLCBDKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIGJhY2t3YXJkIHRyYW5zZm9ybSwgc2lnbiA9IDE7IHRyYW5zZm9ybSBsZW5ndGggPSAzICogMioqbiAqLworaW50CitpbnZfZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgbXBkX3NpemVfdCBSID0gMzsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKyAgICBtcGRfc2l6ZV90IEMgPSBuIC8gMzsgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBtcGRfdWludF90IHczdGFibGVbM107CisgICAgbXBkX3VpbnRfdCBrZXJuZWwsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3VpbnRfdCAqcywgKnAwLCAqcDEsICpwMjsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfc2l6ZV90IGksIGs7CisKKworICAgIGFzc2VydChuID49IDQ4KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisKKyNpZiAwCisgICAgLyogQW4gdW5vcmRlcmVkIHRyYW5zZm9ybSBpcyBzdWZmaWNpZW50IGZvciBjb252b2x1dGlvbi4gKi8KKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguICovCisgICAgdHJhbnNwb3NlXzN4cG93MihhLCBDLCBSKTsKKyNlbmRpZgorCisgICAgLyogTGVuZ3RoIEMgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGZvciAocyA9IGE7IHMgPCBhK247IHMgKz0gQykgeworICAgICAgICBpZiAoIWludl9zaXhfc3RlcF9mbnQocywgQywgbW9kbnVtKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK2spIGJ5IHIqKihpKmspLiAqLworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCAxLCBtb2RudW0pOworICAgIGZvciAoaSA9IDE7IGkgPCBSOyBpKyspIHsKKyAgICAgICAgdzAgPSAxOworICAgICAgICB3MSA9IFBPV01PRChrZXJuZWwsIGkpOworICAgICAgICB3c3RlcCA9IE1VTE1PRCh3MSwgdzEpOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgQzsgayArPSAyKSB7CisgICAgICAgICAgICBtcGRfdWludF90IHgwID0gYVtpKkMra107CisgICAgICAgICAgICBtcGRfdWludF90IHgxID0gYVtpKkMraysxXTsKKyAgICAgICAgICAgIE1VTE1PRDIoJngwLCB3MCwgJngxLCB3MSk7CisgICAgICAgICAgICBNVUxNT0QyQygmdzAsICZ3MSwgd3N0ZXApOworICAgICAgICAgICAgYVtpKkMra10gPSB4MDsKKyAgICAgICAgICAgIGFbaSpDK2srMV0gPSB4MTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIExlbmd0aCBSIHRyYW5zZm9ybSBvbiB0aGUgY29sdW1ucy4gKi8KKyAgICBfbXBkX2luaXRfdzN0YWJsZSh3M3RhYmxlLCAxLCBtb2RudW0pOworICAgIGZvciAocDA9YSwgcDE9cDArQywgcDI9cDArMipDOyBwMDxhK0M7IHAwKysscDErKyxwMisrKSB7CisKKyAgICAgICAgU0laRTNfTlRUKHAwLCBwMSwgcDIsIHczdGFibGUpOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTNmMjdkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRk9VUl9TVEVQX0gKKyNkZWZpbmUgRk9VUl9TVEVQX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworaW50IGZvdXJfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKK2ludCBpbnZfZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjQ3MGNhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCkBAIC0wLDAgKzEsMTU3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJpby5oIgorCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIGRlY2ltYWwgPC0+IHN0cmluZyBjb252ZXJzaW9ucywgaW5jbHVkaW5nCisgICBQRVAtMzEwMSBmb3JtYXR0aW5nIGZvciBudW1lcmljIHR5cGVzLiAqLworCisKKy8qCisgKiBXb3JrIGFyb3VuZCB0aGUgYmVoYXZpb3Igb2YgdG9sb3dlcigpIGFuZCBzdHJjYXNlY21wKCkgaW4gY2VydGFpbgorICogbG9jYWxlcy4gRm9yIGV4YW1wbGUsIGluIHRyX1RSLnV0Zjg6CisgKgorICogdG9sb3dlcigodW5zaWduZWQgY2hhciknSScpID09ICdJJworICoKKyAqIHUgaXMgdGhlIGV4YWN0IHVwcGVyY2FzZSB2ZXJzaW9uIG9mIGw7IG4gaXMgc3RybGVuKGwpIG9yIHN0cmxlbihsKSsxCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX3N0cm5lcShjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpsLCBjb25zdCBjaGFyICp1LCBzaXplX3QgbikKK3sKKyAgICB3aGlsZSAoLS1uICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGlmICgqcyAhPSAqbCAmJiAqcyAhPSAqdSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcysrOyB1Kys7IGwrKzsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIG1wZF9zc2l6ZV90CitzdHJ0b2V4cChjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKmVuZDsKKyAgICBtcGRfc3NpemVfdCByZXR2YWw7CisKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dmFsID0gbXBkX3N0cnRvc3NpemUocywgJmVuZCwgMTApOworICAgIGlmIChlcnJubyA9PSAwICYmICEoKnMgIT0gJ1wwJyAmJiAqZW5kID09ICdcMCcpKQorICAgICAgICBlcnJubyA9IEVJTlZBTDsKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBTY2FuICdsZW4nIHdvcmRzLiBUaGUgbW9zdCBzaWduaWZpY2FudCB3b3JkIGNvbnRhaW5zICdyJyBkaWdpdHMsCisgKiB0aGUgcmVtYWluaW5nIHdvcmRzIGFyZSBmdWxsIHdvcmRzLiBTa2lwIGRwb2ludC4gVGhlIHN0cmluZyAncycgbXVzdAorICogY29uc2lzdCBvZiBkaWdpdHMgYW5kIGFuIG9wdGlvbmFsIHNpbmdsZSBkZWNpbWFsIHBvaW50IGF0ICdkcG9pbnQnLgorICovCitzdGF0aWMgdm9pZAorc3RyaW5nX3RvX2NvZWZmKG1wZF91aW50X3QgKmRhdGEsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmRwb2ludCwgaW50IHIsCisgICAgICAgICAgICAgICAgc2l6ZV90IGxlbikKK3sKKyAgICBpbnQgajsKKworICAgIGlmIChyID4gMCkgeworICAgICAgICBkYXRhWy0tbGVuXSA9IDA7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCByOyBqKyssIHMrKykgeworICAgICAgICAgICAgaWYgKHMgPT0gZHBvaW50KSBzKys7CisgICAgICAgICAgICBkYXRhW2xlbl0gPSAxMCAqIGRhdGFbbGVuXSArICgqcyAtICcwJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3aGlsZSAoLS1sZW4gIT0gU0laRV9NQVgpIHsKKyAgICAgICAgZGF0YVtsZW5dID0gMDsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IE1QRF9SRElHSVRTOyBqKyssIHMrKykgeworICAgICAgICAgICAgaWYgKHMgPT0gZHBvaW50KSBzKys7CisgICAgICAgICAgICBkYXRhW2xlbl0gPSAxMCAqIGRhdGFbbGVuXSArICgqcyAtICcwJyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBQYXJ0aWFsbHkgdmVyaWZ5IGEgbnVtZXJpYyBzdHJpbmcgb2YgdGhlIGZvcm06CisgKgorICogICAgIFtjZGlnaXRzXVsuXVtjZGlnaXRzXVtlRV1bKy1dW2VkaWdpdHNdCisgKgorICogSWYgc3VjY2Vzc2Z1bCwgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0CisgKiByZWxldmFudCBjb2VmZmljaWVudCBkaWdpdC4gVGhpcyBkaWdpdCBpcyBlaXRoZXIgbm9uLXplcm8gb3IKKyAqIHBhcnQgb2Ygb25lIG9mIHRoZSBmb2xsb3dpbmcgcGF0dGVybnM6CisgKgorICogICAgIFsiMFx4MDAiLCAiMC5ceDAwIiwgIjAuRSIsICIwLmUiLCAiMEUiLCAiMGUiXQorICoKKyAqIFRoZSBsb2NhdGlvbnMgb2YgYSBzaW5nbGUgb3B0aW9uYWwgZG90IG9yIGluZGljYXRvciBhcmUgc3RvcmVkCisgKiBpbiAnZHBvaW50JyBhbmQgJ2V4cCcuCisgKgorICogVGhlIGVuZCBvZiB0aGUgc3RyaW5nIGlzIHN0b3JlZCBpbiAnZW5kJy4gSWYgYW4gaW5kaWNhdG9yIFtlRV0KKyAqIG9jY3VycyB3aXRob3V0IHRyYWlsaW5nIFtlZGlnaXRzXSwgdGhlIGNvbmRpdGlvbiBpcyBjYXVnaHQKKyAqIGxhdGVyIGJ5IHN0cnRvZXhwKCkuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3NjYW5fZHBvaW50X2V4cChjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICoqZHBvaW50LCBjb25zdCBjaGFyICoqZXhwLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmQpCit7CisgICAgY29uc3QgY2hhciAqY29lZmYgPSBOVUxMOworCisgICAgKmRwb2ludCA9IE5VTEw7CisgICAgKmV4cCA9IE5VTEw7CisgICAgZm9yICg7ICpzICE9ICdcMCc7IHMrKykgeworICAgICAgICBzd2l0Y2ggKCpzKSB7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICAgICAgaWYgKCpkcG9pbnQgIT0gTlVMTCB8fCAqZXhwICE9IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAqZHBvaW50ID0gczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdFJzogY2FzZSAnZSc6CisgICAgICAgICAgICBpZiAoKmV4cCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgKmV4cCA9IHM7CisgICAgICAgICAgICBpZiAoKihzKzEpID09ICcrJyB8fCAqKHMrMSkgPT0gJy0nKQorICAgICAgICAgICAgICAgIHMrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCh1Y2hhcikqcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAoY29lZmYgPT0gTlVMTCAmJiAqZXhwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoKnMgPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdCgodWNoYXIpKihzKzEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCoocysxKSA9PSAnLicgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZGlnaXQoKHVjaGFyKSoocysyKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmID0gczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvZWZmID0gczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB9CisgICAgfQorCisgICAgKmVuZCA9IHM7CisgICAgcmV0dXJuIGNvZWZmOworfQorCisvKiBzY2FuIHRoZSBwYXlsb2FkIG9mIGEgTmFOICovCitzdGF0aWMgY29uc3QgY2hhciAqCitzY2FuX3BheWxvYWQoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqKmVuZCkKK3sKKyAgICBjb25zdCBjaGFyICpjb2VmZjsKKworICAgIHdoaWxlICgqcyA9PSAnMCcpCisgICAgICAgIHMrKzsKKyAgICBjb2VmZiA9IHM7CisKKyAgICB3aGlsZSAoaXNkaWdpdCgodWNoYXIpKnMpKQorICAgICAgICBzKys7CisgICAgKmVuZCA9IHM7CisKKyAgICByZXR1cm4gKCpzID09ICdcMCcpID8gY29lZmYgOiBOVUxMOworfQorCisvKiBjb252ZXJ0IGEgY2hhcmFjdGVyIHN0cmluZyB0byBhIGRlY2ltYWwgKi8KK3ZvaWQKK21wZF9xc2V0X3N0cmluZyhtcGRfdCAqZGVjLCBjb25zdCBjaGFyICpzLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBxLCByLCBsZW47CisgICAgY29uc3QgY2hhciAqY29lZmYsICplbmQ7CisgICAgY29uc3QgY2hhciAqZHBvaW50ID0gTlVMTCwgKmV4cCA9IE5VTEw7CisgICAgc2l6ZV90IGRpZ2l0czsKKyAgICB1aW50OF90IHNpZ24gPSBNUERfUE9TOworCisgICAgbXBkX3NldF9mbGFncyhkZWMsIDApOworICAgIGRlYy0+bGVuID0gMDsKKyAgICBkZWMtPmV4cCA9IDA7CisKKyAgICAvKiBzaWduICovCisgICAgaWYgKCpzID09ICcrJykgeworICAgICAgICBzKys7CisgICAgfQorICAgIGVsc2UgaWYgKCpzID09ICctJykgeworICAgICAgICBtcGRfc2V0X25lZ2F0aXZlKGRlYyk7CisgICAgICAgIHNpZ24gPSBNUERfTkVHOworICAgICAgICBzKys7CisgICAgfQorCisgICAgaWYgKF9tcGRfc3RybmVxKHMsICJuYW4iLCAiTkFOIiwgMykpIHsgLyogTmFOICovCisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBzaWduLCBNUERfTkFOKTsKKyAgICAgICAgaWYgKCpzID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8qIHZhbGlkYXRlIHBheWxvYWQ6IGRpZ2l0cyBvbmx5ICovCisgICAgICAgIGlmICgoY29lZmYgPSBzY2FuX3BheWxvYWQocywgJmVuZCkpID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgICAgIC8qIHBheWxvYWQgY29uc2lzdHMgZW50aXJlbHkgb2YgemVyb3MgKi8KKyAgICAgICAgaWYgKCpjb2VmZiA9PSAnXDAnKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkaWdpdHMgPSBlbmQgLSBjb2VmZjsKKyAgICAgICAgLyogcHJlYyA+PSAxLCBjbGFtcCBpcyAwIG9yIDEgKi8KKyAgICAgICAgaWYgKGRpZ2l0cyA+IChzaXplX3QpKGN0eC0+cHJlYy1jdHgtPmNsYW1wKSkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICB9IC8qIHNOYU4gKi8KKyAgICBlbHNlIGlmIChfbXBkX3N0cm5lcShzLCAic25hbiIsICJTTkFOIiwgNCkpIHsKKyAgICAgICAgcyArPSA0OworICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIHNpZ24sIE1QRF9TTkFOKTsKKyAgICAgICAgaWYgKCpzID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8qIHZhbGlkYXRlIHBheWxvYWQ6IGRpZ2l0cyBvbmx5ICovCisgICAgICAgIGlmICgoY29lZmYgPSBzY2FuX3BheWxvYWQocywgJmVuZCkpID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgICAgIC8qIHBheWxvYWQgY29uc2lzdHMgZW50aXJlbHkgb2YgemVyb3MgKi8KKyAgICAgICAgaWYgKCpjb2VmZiA9PSAnXDAnKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkaWdpdHMgPSBlbmQgLSBjb2VmZjsKKyAgICAgICAgaWYgKGRpZ2l0cyA+IChzaXplX3QpKGN0eC0+cHJlYy1jdHgtPmNsYW1wKSkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoX21wZF9zdHJuZXEocywgImluZiIsICJJTkYiLCAzKSkgeworICAgICAgICBzICs9IDM7CisgICAgICAgIGlmICgqcyA9PSAnXDAnIHx8IF9tcGRfc3RybmVxKHMsICJpbml0eSIsICJJTklUWSIsIDYpKSB7CisgICAgICAgICAgICAvKiBudW1lcmljLXZhbHVlOiBpbmZpbml0eSAqLworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBzaWduLCBNUERfSU5GKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBzY2FuIGZvciBzdGFydCBvZiBjb2VmZmljaWVudCwgZGVjaW1hbCBwb2ludCwgaW5kaWNhdG9yLCBlbmQgKi8KKyAgICAgICAgaWYgKChjb2VmZiA9IHNjYW5fZHBvaW50X2V4cChzLCAmZHBvaW50LCAmZXhwLCAmZW5kKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKworICAgICAgICAvKiBudW1lcmljLXZhbHVlOiBbZXhwb25lbnQtcGFydF0gKi8KKyAgICAgICAgaWYgKGV4cCkgeworICAgICAgICAgICAgLyogZXhwb25lbnQtcGFydCAqLworICAgICAgICAgICAgZW5kID0gZXhwOyBleHArKzsKKyAgICAgICAgICAgIGRlYy0+ZXhwID0gc3RydG9leHAoZXhwKTsKKyAgICAgICAgICAgIGlmIChlcnJubykgeworICAgICAgICAgICAgICAgIGlmICghKGVycm5vID09IEVSQU5HRSAmJgorICAgICAgICAgICAgICAgICAgICAgKGRlYy0+ZXhwID09IE1QRF9TU0laRV9NQVggfHwKKyAgICAgICAgICAgICAgICAgICAgICBkZWMtPmV4cCA9PSBNUERfU1NJWkVfTUlOKSkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICAgICBkaWdpdHMgPSBlbmQgLSBjb2VmZjsKKyAgICAgICAgaWYgKGRwb2ludCkgeworICAgICAgICAgICAgc2l6ZV90IGZyYWNkaWdpdHMgPSBlbmQtZHBvaW50LTE7CisgICAgICAgICAgICBpZiAoZHBvaW50ID4gY29lZmYpIGRpZ2l0cy0tOworCisgICAgICAgICAgICBpZiAoZnJhY2RpZ2l0cyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZWMtPmV4cCA8IE1QRF9TU0laRV9NSU4rKG1wZF9zc2l6ZV90KWZyYWNkaWdpdHMpIHsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCA9IE1QRF9TU0laRV9NSU47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCAtPSAobXBkX3NzaXplX3QpZnJhY2RpZ2l0czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZGlnaXRzID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICAgICBnb3RvIGNvbnZlcnNpb25fZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlYy0+ZXhwID4gTVBEX0VYUF9JTkYpIHsKKyAgICAgICAgICAgIGRlYy0+ZXhwID0gTVBEX0VYUF9JTkY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlYy0+ZXhwID09IE1QRF9TU0laRV9NSU4pIHsKKyAgICAgICAgICAgIGRlYy0+ZXhwID0gTVBEX1NTSVpFX01JTisxOworICAgICAgICB9CisgICAgfQorCisgICAgX21wZF9pZGl2X3dvcmQoJnEsICZyLCAobXBkX3NzaXplX3QpZGlnaXRzLCBNUERfUkRJR0lUUyk7CisKKyAgICBsZW4gPSAociA9PSAwKSA/IHEgOiBxKzE7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBpZiAoIW1wZF9xcmVzaXplKGRlYywgbGVuLCBzdGF0dXMpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihkZWMsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGVjLT5sZW4gPSBsZW47CisKKyAgICBzdHJpbmdfdG9fY29lZmYoZGVjLT5kYXRhLCBjb2VmZiwgZHBvaW50LCAoaW50KXIsIGxlbik7CisKKyAgICBtcGRfc2V0ZGlnaXRzKGRlYyk7CisgICAgbXBkX3FmaW5hbGl6ZShkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICByZXR1cm47CisKK2NvbnZlcnNpb25fZXJyb3I6CisgICAgLyogc3RhbmRhcmQgd2FudHMgYSBwb3NpdGl2ZSBOYU4gKi8KKyAgICBtcGRfc2V0ZXJyb3IoZGVjLCBNUERfQ29udmVyc2lvbl9zeW50YXgsIHN0YXR1cyk7Cit9CisKKy8qIFByaW50IHdvcmQgeCB3aXRoIG4gZGVjaW1hbCBkaWdpdHMgdG8gc3RyaW5nIHMuIGRvdCBpcyBlaXRoZXIgTlVMTAorICAgb3IgdGhlIGxvY2F0aW9uIG9mIGEgZGVjaW1hbCBwb2ludC4gKi8KKyNkZWZpbmUgRVhUUkFDVF9ESUdJVChzLCB4LCBkLCBkb3QpIFwKKyAgICAgICAgaWYgKHMgPT0gZG90KSAqcysrID0gJy4nOyAqcysrID0gJzAnICsgKGNoYXIpKHggLyBkKTsgeCAlPSBkCitzdGF0aWMgaW5saW5lIGNoYXIgKgord29yZF90b19zdHJpbmcoY2hhciAqcywgbXBkX3VpbnRfdCB4LCBpbnQgbiwgY2hhciAqZG90KQoreworICAgIHN3aXRjaChuKSB7CisjaWZkZWYgQ09ORklHXzY0CisgICAgY2FzZSAyMDogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIGNhc2UgMTk6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDE4OiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDE3OiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTY6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDE1OiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDE0OiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTM6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDEyOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMFVMTCwgZG90KTsKKyAgICBjYXNlIDExOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwVUxMLCBkb3QpOworI2VuZGlmCisgICAgY2FzZSAxMDogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwVUwsIGRvdCk7CisgICAgY2FzZSA5OiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDg6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwVUwsIGRvdCk7CisgICAgY2FzZSA3OiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwVUwsIGRvdCk7CisgICAgY2FzZSA2OiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDU6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwVUwsIGRvdCk7CisgICAgY2FzZSA0OiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwVUwsIGRvdCk7CisgICAgY2FzZSAzOiAgRVhUUkFDVF9ESUdJVChzLCB4LCAxMDBVTCwgZG90KTsKKyAgICBjYXNlIDI6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwVUwsIGRvdCk7CisgICAgZGVmYXVsdDogaWYgKHMgPT0gZG90KSAqcysrID0gJy4nOyAqcysrID0gJzAnICsgKGNoYXIpeDsKKyAgICB9CisKKyAgICAqcyA9ICdcMCc7CisgICAgcmV0dXJuIHM7Cit9CisKKy8qIFByaW50IGV4cG9uZW50IHggdG8gc3RyaW5nIHMuIFVuZGVmaW5lZCBmb3IgTVBEX1NTSVpFX01JTi4gKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitleHBfdG9fc3RyaW5nKGNoYXIgKnMsIG1wZF9zc2l6ZV90IHgpCit7CisgICAgY2hhciBzaWduID0gJysnOworCisgICAgaWYgKHggPCAwKSB7CisgICAgICAgIHNpZ24gPSAnLSc7CisgICAgICAgIHggPSAteDsKKyAgICB9CisgICAgKnMrKyA9IHNpZ247CisKKyAgICByZXR1cm4gd29yZF90b19zdHJpbmcocywgeCwgbXBkX3dvcmRfZGlnaXRzKHgpLCBOVUxMKTsKK30KKworLyogUHJpbnQgdGhlIGNvZWZmaWNpZW50IG9mIGRlYyB0byBzdHJpbmcgcy4gbGVuKGRlYykgPiAwLiAqLworc3RhdGljIGlubGluZSBjaGFyICoKK2NvZWZmX3RvX3N0cmluZyhjaGFyICpzLCBjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3QgeDsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgeCA9IG1wZF9tc3dvcmQoZGVjKTsKKyAgICBzID0gd29yZF90b19zdHJpbmcocywgeCwgbXBkX3dvcmRfZGlnaXRzKHgpLCBOVUxMKTsKKworICAgIC8qIHJlbWFpbmluZyBmdWxsIHdvcmRzICovCisgICAgZm9yIChpPWRlYy0+bGVuLTI7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIHggPSBkZWMtPmRhdGFbaV07CisgICAgICAgIHMgPSB3b3JkX3RvX3N0cmluZyhzLCB4LCBNUERfUkRJR0lUUywgTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuIHM7Cit9CisKKy8qIFByaW50IHRoZSBjb2VmZmljaWVudCBvZiBkZWMgdG8gc3RyaW5nIHMuIGxlbihkZWMpID4gMC4gZG90IGlzIGVpdGhlcgorICAgTlVMTCBvciBhIHBvaW50ZXIgdG8gdGhlIGxvY2F0aW9uIG9mIGEgZGVjaW1hbCBwb2ludC4gKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitjb2VmZl90b19zdHJpbmdfZG90KGNoYXIgKnMsIGNoYXIgKmRvdCwgY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBtcGRfdWludF90IHg7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworICAgIHggPSBtcGRfbXN3b3JkKGRlYyk7CisgICAgcyA9IHdvcmRfdG9fc3RyaW5nKHMsIHgsIG1wZF93b3JkX2RpZ2l0cyh4KSwgZG90KTsKKworICAgIC8qIHJlbWFpbmluZyBmdWxsIHdvcmRzICovCisgICAgZm9yIChpPWRlYy0+bGVuLTI7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIHggPSBkZWMtPmRhdGFbaV07CisgICAgICAgIHMgPSB3b3JkX3RvX3N0cmluZyhzLCB4LCBNUERfUkRJR0lUUywgZG90KTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogRm9ybWF0IHR5cGUgKi8KKyNkZWZpbmUgTVBEX0ZNVF9MT1dFUiAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgTVBEX0ZNVF9VUFBFUiAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTVBEX0ZNVF9UT1NDSSAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgTVBEX0ZNVF9UT0VORyAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgTVBEX0ZNVF9FWFAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgTVBEX0ZNVF9GSVhFRCAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgTVBEX0ZNVF9QRVJDRU5UICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgTVBEX0ZNVF9TSUdOX1NQQUNFIDB4MDAwMDAwNDAKKyNkZWZpbmUgTVBEX0ZNVF9TSUdOX1BMVVMgIDB4MDAwMDAwODAKKworLyogRGVmYXVsdCBwbGFjZSBvZiB0aGUgZGVjaW1hbCBwb2ludCBmb3IgTVBEX0ZNVF9UT1NDSSwgTVBEX0ZNVF9FWFAgKi8KKyNkZWZpbmUgTVBEX0RFRkFVTFRfRE9UUExBQ0UgMQorCisvKgorICogU2V0ICpyZXN1bHQgdG8gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGRlY2ltYWwuIFJldHVybiB0aGUgbGVuZ3RoCisgKiBvZiAqcmVzdWx0LCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGNoYXJhY3Rlci4KKyAqCisgKiBGb3JtYXR0aW5nIGlzIGRvbmUgYWNjb3JkaW5nIHRvICdmbGFncycuIEEgcmV0dXJuIHZhbHVlIG9mIC0xIHdpdGggKnJlc3VsdAorICogc2V0IHRvIE5VTEwgaW5kaWNhdGVzIE1QRF9NYWxsb2NfZXJyb3IuCisgKgorICogJ2RwbGFjZScgaXMgdGhlIGRlZmF1bHQgcGxhY2Ugb2YgdGhlIGRlY2ltYWwgcG9pbnQuIEl0IGlzIGFsd2F5cyBzZXQgdG8KKyAqIE1QRF9ERUZBVUxUX0RPVFBMQUNFIGV4Y2VwdCBmb3IgemVyb3MgaW4gY29tYmluYXRpb24gd2l0aCBNUERfRk1UX0VYUC4KKyAqLworc3RhdGljIG1wZF9zc2l6ZV90CitfbXBkX3RvX3N0cmluZyhjaGFyICoqcmVzdWx0LCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZmxhZ3MsIG1wZF9zc2l6ZV90IGRwbGFjZSkKK3sKKyAgICBjaGFyICpkZWNzdHJpbmcgPSBOVUxMLCAqY3AgPSBOVUxMOworICAgIG1wZF9zc2l6ZV90IGxkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgbWVtID0gMCwgazsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHsKKworICAgICAgICBtZW0gPSBzaXplb2YgIi1JbmZpbml0eSI7CisgICAgICAgIGlmIChtcGRfaXNuYW4oZGVjKSAmJiBkZWMtPmxlbiA+IDApIHsKKyAgICAgICAgICAgIC8qIGRpYWdub3N0aWMgY29kZSAqLworICAgICAgICAgICAgbWVtICs9IGRlYy0+ZGlnaXRzOworICAgICAgICB9CisgICAgICAgIGNwID0gZGVjc3RyaW5nID0gbXBkX2FsbG9jKG1lbSwgc2l6ZW9mICpkZWNzdHJpbmcpOworICAgICAgICBpZiAoY3AgPT0gTlVMTCkgeworICAgICAgICAgICAgKnJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZGVjKSkgeworICAgICAgICAgICAgKmNwKysgPSAnLSc7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9TSUdOX1NQQUNFKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcgJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX1NJR05fUExVUykgeworICAgICAgICAgICAgKmNwKysgPSAnKyc7CisgICAgICAgIH0KKworICAgICAgICBpZiAobXBkX2lzbmFuKGRlYykpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXNxbmFuKGRlYykpIHsKKyAgICAgICAgICAgICAgICBzdHJjcHkoY3AsICJOYU4iKTsKKyAgICAgICAgICAgICAgICBjcCArPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3RyY3B5KGNwLCAic05hTiIpOworICAgICAgICAgICAgICAgIGNwICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGVjLT5sZW4gPiAwKSB7IC8qIGRpYWdub3N0aWMgY29kZSAqLworICAgICAgICAgICAgICAgIGNwID0gY29lZmZfdG9fc3RyaW5nKGNwLCBkZWMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc2luZmluaXRlKGRlYykpIHsKKyAgICAgICAgICAgIHN0cmNweShjcCwgIkluZmluaXR5Iik7CisgICAgICAgICAgICBjcCArPSA4OworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvKiBkZWJ1ZyAqLworICAgICAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoZGVjLT5sZW4gPiAwKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBGb3IgZWFzaWVyIG1hbmlwdWxhdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCdzIGxvY2F0aW9uCisgICAgICAgICAqIGFuZCB0aGUgZXhwb25lbnQgdGhhdCBpcyBmaW5hbGx5IHByaW50ZWQsIHRoZSBudW1iZXIgaXMKKyAgICAgICAgICogcmVzY2FsZWQgdG8gYSB2aXJ0dWFsIHJlcHJlc2VudGF0aW9uIHdpdGggZXhwID0gMC4gSGVyZQorICAgICAgICAgKiBsZGlnaXRzIGRlbm90ZXMgdGhlIG51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cyB0byB0aGUgbGVmdAorICAgICAgICAgKiBvZiB0aGUgZGVjaW1hbCBwb2ludCBhbmQgcmVtYWlucyBjb25zdGFudCBvbmNlIGluaXRpYWxpemVkLgorICAgICAgICAgKgorICAgICAgICAgKiBkcGxhY2UgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50IHJlbGF0aXZlIHRvCisgICAgICAgICAqIHRoZSBzdGFydCBvZiB0aGUgY29lZmZpY2llbnQuIE5vdGUgdGhhdCAzKSBhbHdheXMgaG9sZHMKKyAgICAgICAgICogd2hlbiBkcGxhY2UgaXMgc2hpZnRlZC4KKyAgICAgICAgICoKKyAgICAgICAgICogICAxKSBsZGlnaXRzIDo9IGRlYy0+ZGlnaXRzIC0gZGVjLT5leHAKKyAgICAgICAgICogICAyKSBkcGxhY2UgIDo9IGxkaWdpdHMgICAgICAgICAgICAoaW5pdGlhbGx5KQorICAgICAgICAgKiAgIDMpIGV4cCAgICAgOj0gbGRpZ2l0cyAtIGRwbGFjZSAgIChpbml0aWFsbHkgZXhwID0gMCkKKyAgICAgICAgICoKKyAgICAgICAgICogICAwLjAwMDAwXy5fX19fLl9fX19fMDAwMDAwLgorICAgICAgICAgKiAgICBeICAgICAgXiAgICBeICAgICAgICAgICBeCisgICAgICAgICAqICAgIHwgICAgICB8ICAgIHwgICAgICAgICAgIHwKKyAgICAgICAgICogICAgfCAgICAgIHwgICAgfCAgICAgICAgICAgYC0gZHBsYWNlID49IGRpZ2l0cworICAgICAgICAgKiAgICB8ICAgICAgfCAgICBgLSBkcGxhY2UgaW4gdGhlIG1pZGRsZSBvZiB0aGUgY29lZmZpY2llbnQKKyAgICAgICAgICogICAgfCAgICAgIGAgZHBsYWNlID0gMSAoYWZ0ZXIgdGhlIGZpcnN0IGNvZWZmaWNpZW50IGRpZ2l0KQorICAgICAgICAgKiAgICBgLSBkcGxhY2UgPD0gMAorICAgICAgICAgKi8KKworICAgICAgICBsZGlnaXRzID0gZGVjLT5kaWdpdHMgKyBkZWMtPmV4cDsKKworICAgICAgICBpZiAoZmxhZ3MmTVBEX0ZNVF9FWFApIHsKKyAgICAgICAgICAgIDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX0ZJWEVEIHx8IChkZWMtPmV4cCA8PSAwICYmIGxkaWdpdHMgPiAtNikpIHsKKyAgICAgICAgICAgIC8qIE1QRF9GTVRfRklYRUQ6IGFsd2F5cyB1c2UgZml4ZWQgcG9pbnQgbm90YXRpb24uCisgICAgICAgICAgICAgKiBNUERfRk1UX1RPU0NJLCBNUERfRk1UX1RPRU5HOiBmb3IgYSBjZXJ0YWluIHJhbmdlLAorICAgICAgICAgICAgICogb3ZlcnJpZGUgZXhwb25lbnQgbm90YXRpb24uICovCisgICAgICAgICAgICBkcGxhY2UgPSBsZGlnaXRzOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfVE9FTkcpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXN6ZXJvKGRlYykpIHsKKyAgICAgICAgICAgICAgICAvKiBJZiB0aGUgZXhwb25lbnQgaXMgZGl2aXNpYmxlIGJ5IHRocmVlLAorICAgICAgICAgICAgICAgICAqIGRwbGFjZSA9IDEuIE90aGVyd2lzZSwgbW92ZSBkcGxhY2Ugb25lCisgICAgICAgICAgICAgICAgICogb3IgdHdvIHBsYWNlcyB0byB0aGUgbGVmdC4gKi8KKyAgICAgICAgICAgICAgICBkcGxhY2UgPSAtMSArIG1vZF9tcGRfc3NpemVfdChkZWMtPmV4cCsyLCAzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeyAvKiBsZGlnaXRzLTEgaXMgdGhlIGFkanVzdGVkIGV4cG9uZW50LCB3aGljaAorICAgICAgICAgICAgICAgICogc2hvdWxkIGJlIGRpdmlzaWJsZSBieSB0aHJlZS4gSWYgbm90LCBtb3ZlCisgICAgICAgICAgICAgICAgKiBkcGxhY2Ugb25lIG9yIHR3byBwbGFjZXMgdG8gdGhlIHJpZ2h0LiAqLworICAgICAgICAgICAgICAgIGRwbGFjZSArPSBtb2RfbXBkX3NzaXplX3QobGRpZ2l0cy0xLCAzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIEJhc2ljIHNwYWNlIHJlcXVpcmVtZW50czoKKyAgICAgICAgICoKKyAgICAgICAgICogWy1dWy5dW2NvZWZmZGlnaXRzXVtFXVstXVtleHBkaWdpdHMrMV1bJV1bJ1wwJ10KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgdGhlIGRlY2ltYWwgcG9pbnQgbGllcyBvdXRzaWRlIG9mIHRoZSBjb2VmZmljaWVudCBkaWdpdHMsCisgICAgICAgICAqIHNwYWNlIGlzIGFkanVzdGVkIGFjY29yZGluZ2x5LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGRwbGFjZSA8PSAwKSB7CisgICAgICAgICAgICBtZW0gPSAtZHBsYWNlICsgZGVjLT5kaWdpdHMgKyAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRwbGFjZSA+PSBkZWMtPmRpZ2l0cykgeworICAgICAgICAgICAgbWVtID0gZHBsYWNlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtID0gZGVjLT5kaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgbWVtICs9IChNUERfRVhQRElHSVRTKzErNik7CisKKyAgICAgICAgY3AgPSBkZWNzdHJpbmcgPSBtcGRfYWxsb2MobWVtLCBzaXplb2YgKmRlY3N0cmluZyk7CisgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisKKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGRlYykpIHsKKyAgICAgICAgICAgICpjcCsrID0gJy0nOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfU0lHTl9TUEFDRSkgeworICAgICAgICAgICAgKmNwKysgPSAnICc7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9TSUdOX1BMVVMpIHsKKyAgICAgICAgICAgICpjcCsrID0gJysnOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRwbGFjZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBzcGFjZTogLWRwbGFjZStkZWMtPmRpZ2l0cysyICovCisgICAgICAgICAgICAqY3ArKyA9ICcwJzsKKyAgICAgICAgICAgICpjcCsrID0gJy4nOworICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IC1kcGxhY2U7IGsrKykgeworICAgICAgICAgICAgICAgICpjcCsrID0gJzAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3AgPSBjb2VmZl90b19zdHJpbmcoY3AsIGRlYyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZHBsYWNlID49IGRlYy0+ZGlnaXRzKSB7CisgICAgICAgICAgICAvKiBzcGFjZTogZHBsYWNlICovCisgICAgICAgICAgICBjcCA9IGNvZWZmX3RvX3N0cmluZyhjcCwgZGVjKTsKKyAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkcGxhY2UtZGVjLT5kaWdpdHM7IGsrKykgeworICAgICAgICAgICAgICAgICpjcCsrID0gJzAnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogc3BhY2U6IGRlYy0+ZGlnaXRzKzEgKi8KKyAgICAgICAgICAgIGNwID0gY29lZmZfdG9fc3RyaW5nX2RvdChjcCwgY3ArZHBsYWNlLCBkZWMpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29uZGl0aW9ucyBmb3IgcHJpbnRpbmcgYW4gZXhwb25lbnQ6CisgICAgICAgICAqCisgICAgICAgICAqICAgTVBEX0ZNVF9UT1NDSSwgTVBEX0ZNVF9UT0VORzogb25seSBpZiBsZGlnaXRzICE9IGRwbGFjZQorICAgICAgICAgKiAgIE1QRF9GTVRfRklYRUQ6ICAgICAgICAgICAgICAgIG5ldmVyIChsZGlnaXRzID09IGRwbGFjZSkKKyAgICAgICAgICogICBNUERfRk1UX0VYUDogICAgICAgICAgICAgICAgICBhbHdheXMKKyAgICAgICAgICovCisgICAgICAgIGlmIChsZGlnaXRzICE9IGRwbGFjZSB8fCBmbGFncyZNUERfRk1UX0VYUCkgeworICAgICAgICAgICAgLyogc3BhY2U6IGV4cGRpZ2l0cysyICovCisgICAgICAgICAgICAqY3ArKyA9IChmbGFncyZNUERfRk1UX1VQUEVSKSA/ICdFJyA6ICdlJzsKKyAgICAgICAgICAgIGNwID0gZXhwX3RvX3N0cmluZyhjcCwgbGRpZ2l0cy1kcGxhY2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsYWdzJk1QRF9GTVRfUEVSQ0VOVCkgeworICAgICAgICAgICAgKmNwKysgPSAnJSc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoY3AgPCBkZWNzdHJpbmcrbWVtKTsKKyAgICBhc3NlcnQoY3AtZGVjc3RyaW5nIDwgTVBEX1NTSVpFX01BWCk7CisKKyAgICAqY3AgPSAnXDAnOworICAgICpyZXN1bHQgPSBkZWNzdHJpbmc7CisgICAgcmV0dXJuIChtcGRfc3NpemVfdCkoY3AtZGVjc3RyaW5nKTsKK30KKworY2hhciAqCittcGRfdG9fc2NpKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpCit7CisgICAgY2hhciAqcmVzOworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9TQ0k7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICAodm9pZClfbXBkX3RvX3N0cmluZygmcmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7CisgICAgcmV0dXJuIHJlczsKK30KKworY2hhciAqCittcGRfdG9fZW5nKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpCit7CisgICAgY2hhciAqcmVzOworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9FTkc7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICAodm9pZClfbXBkX3RvX3N0cmluZygmcmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7CisgICAgcmV0dXJuIHJlczsKK30KKworbXBkX3NzaXplX3QKK21wZF90b19zY2lfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KQoreworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9TQ0k7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICByZXR1cm4gX21wZF90b19zdHJpbmcocmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7Cit9CisKK21wZF9zc2l6ZV90CittcGRfdG9fZW5nX3NpemUoY2hhciAqKnJlcywgY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCkKK3sKKyAgICBpbnQgZmxhZ3MgPSBNUERfRk1UX1RPRU5HOworCisgICAgZmxhZ3MgfD0gZm10ID8gTVBEX0ZNVF9VUFBFUiA6IE1QRF9GTVRfTE9XRVI7CisgICAgcmV0dXJuIF9tcGRfdG9fc3RyaW5nKHJlcywgZGVjLCBmbGFncywgTVBEX0RFRkFVTFRfRE9UUExBQ0UpOworfQorCisvKiBDb3B5IGEgc2luZ2xlIFVURi04IGNoYXIgdG8gZGVzdC4gU2VlOiBUaGUgVW5pY29kZSBTdGFuZGFyZCwgdmVyc2lvbiA1LjIsCisgICBjaGFwdGVyIDMuOTogV2VsbC1mb3JtZWQgVVRGLTggYnl0ZSBzZXF1ZW5jZXMuICovCitzdGF0aWMgaW50CitfbXBkX2NvcHlfdXRmOChjaGFyIGRlc3RbNV0sIGNvbnN0IGNoYXIgKnMpCit7CisgICAgY29uc3QgdWNoYXIgKmNwID0gKGNvbnN0IHVjaGFyICopczsKKyAgICB1Y2hhciBsYiwgdWI7CisgICAgaW50IGNvdW50LCBpOworCisKKyAgICBpZiAoKmNwID09IDApIHsKKyAgICAgICAgLyogZW1wdHkgc3RyaW5nICovCisgICAgICAgIGRlc3RbMF0gPSAnXDAnOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoKmNwIDw9IDB4N2YpIHsKKyAgICAgICAgLyogYXNjaWkgKi8KKyAgICAgICAgZGVzdFswXSA9ICpjcDsKKyAgICAgICAgZGVzdFsxXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmICgweGMyIDw9ICpjcCAmJiAqY3AgPD0gMHhkZikgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAyOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhlMCkgeworICAgICAgICBsYiA9IDB4YTA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHhlYykgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhlZCkgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHg5ZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHhlZikgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhmMCkgeworICAgICAgICBsYiA9IDB4OTA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSA0OworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHhmMykgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSA0OworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhmNCkgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHg4ZjsKKyAgICAgICAgY291bnQgPSA0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogaW52YWxpZCAqLworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGRlc3RbMF0gPSAqY3ArKzsKKyAgICBpZiAoKmNwIDwgbGIgfHwgdWIgPCAqY3ApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZGVzdFsxXSA9ICpjcCsrOworICAgIGZvciAoaSA9IDI7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIGlmICgqY3AgPCAweDgwIHx8IDB4YmYgPCAqY3ApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZGVzdFtpXSA9ICpjcCsrOworICAgIH0KKyAgICBkZXN0W2ldID0gJ1wwJzsKKworICAgIHJldHVybiBjb3VudDsKKworZXJyb3I6CisgICAgZGVzdFswXSA9ICdcMCc7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQKK21wZF92YWxpZGF0ZV9sY29udihtcGRfc3BlY190ICpzcGVjKQoreworICAgIHNpemVfdCBuOworI2lmIENIQVJfTUFYID09IFNDSEFSX01BWAorICAgIGNvbnN0IGNoYXIgKmNwID0gc3BlYy0+Z3JvdXBpbmc7CisgICAgd2hpbGUgKCpjcCAhPSAnXDAnKSB7CisgICAgICAgIGlmICgqY3ArKyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIG4gPSBzdHJsZW4oc3BlYy0+ZG90KTsKKyAgICBpZiAobiA9PSAwIHx8IG4gPiA0KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0cmxlbihzcGVjLT5zZXApID4gNCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbXBkX3BhcnNlX2ZtdF9zdHIobXBkX3NwZWNfdCAqc3BlYywgY29uc3QgY2hhciAqZm10LCBpbnQgY2FwcykKK3sKKyAgICBjaGFyICpjcCA9IChjaGFyICopZm10OworICAgIGludCBoYXZlX2FsaWduID0gMCwgbjsKKworICAgIC8qIGRlZmF1bHRzICovCisgICAgc3BlYy0+bWluX3dpZHRoID0gMDsKKyAgICBzcGVjLT5wcmVjID0gLTE7CisgICAgc3BlYy0+dHlwZSA9IGNhcHMgPyAnRycgOiAnZyc7CisgICAgc3BlYy0+YWxpZ24gPSAnPic7CisgICAgc3BlYy0+c2lnbiA9ICctJzsKKyAgICBzcGVjLT5kb3QgPSAiIjsKKyAgICBzcGVjLT5zZXAgPSAiIjsKKyAgICBzcGVjLT5ncm91cGluZyA9ICIiOworCisKKyAgICAvKiBwcmVzdW1lIHRoYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBhIFVURi04IGZpbGwgY2hhcmFjdGVyICovCisgICAgaWYgKChuID0gX21wZF9jb3B5X3V0Zjgoc3BlYy0+ZmlsbCwgY3ApKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogYWxpZ25tZW50IGRpcmVjdGl2ZSwgcHJlZml4ZWQgYnkgYSBmaWxsIGNoYXJhY3RlciAqLworICAgIGlmICgqY3AgJiYgKCooY3ArbikgPT0gJzwnIHx8ICooY3ArbikgPT0gJz4nIHx8CisgICAgICAgICAgICAgICAgKihjcCtuKSA9PSAnPScgfHwgKihjcCtuKSA9PSAnXicpKSB7CisgICAgICAgIGNwICs9IG47CisgICAgICAgIHNwZWMtPmFsaWduID0gKmNwKys7CisgICAgICAgIGhhdmVfYWxpZ24gPSAxOworICAgIH0gLyogYWxpZ25tZW50IGRpcmVjdGl2ZSAqLworICAgIGVsc2UgeworICAgICAgICAvKiBkZWZhdWx0IGZpbGwgY2hhcmFjdGVyICovCisgICAgICAgIHNwZWMtPmZpbGxbMF0gPSAnICc7CisgICAgICAgIHNwZWMtPmZpbGxbMV0gPSAnXDAnOworICAgICAgICBpZiAoKmNwID09ICc8JyB8fCAqY3AgPT0gJz4nIHx8CisgICAgICAgICAgICAqY3AgPT0gJz0nIHx8ICpjcCA9PSAnXicpIHsKKyAgICAgICAgICAgIHNwZWMtPmFsaWduID0gKmNwKys7CisgICAgICAgICAgICBoYXZlX2FsaWduID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHNpZ24gZm9ybWF0dGluZyAqLworICAgIGlmICgqY3AgPT0gJysnIHx8ICpjcCA9PSAnLScgfHwgKmNwID09ICcgJykgeworICAgICAgICBzcGVjLT5zaWduID0gKmNwKys7CisgICAgfQorCisgICAgLyogemVybyBwYWRkaW5nICovCisgICAgaWYgKCpjcCA9PSAnMCcpIHsKKyAgICAgICAgLyogemVybyBwYWRkaW5nIGltcGxpZXMgYWxpZ25tZW50LCB3aGljaCBzaG91bGQgbm90IGJlCisgICAgICAgICAqIHNwZWNpZmllZCB0d2ljZS4gKi8KKyAgICAgICAgaWYgKGhhdmVfYWxpZ24pIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHNwZWMtPmFsaWduID0gJ3onOworICAgICAgICBzcGVjLT5maWxsWzBdID0gKmNwKys7CisgICAgICAgIHNwZWMtPmZpbGxbMV0gPSAnXDAnOworICAgIH0KKworICAgIC8qIG1pbmltdW0gd2lkdGggKi8KKyAgICBpZiAoaXNkaWdpdCgodWNoYXIpKmNwKSkgeworICAgICAgICBpZiAoKmNwID09ICcwJykgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBzcGVjLT5taW5fd2lkdGggPSBtcGRfc3RydG9zc2l6ZShjcCwgJmNwLCAxMCk7CisgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UgfHwgZXJybm8gPT0gRUlOVkFMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHRob3VzYW5kcyBzZXBhcmF0b3IgKi8KKyAgICBpZiAoKmNwID09ICcsJykgeworICAgICAgICBzcGVjLT5kb3QgPSAiLiI7CisgICAgICAgIHNwZWMtPnNlcCA9ICIsIjsKKyAgICAgICAgc3BlYy0+Z3JvdXBpbmcgPSAiXDAwM1wwMDMiOworICAgICAgICBjcCsrOworICAgIH0KKworICAgIC8qIGZyYWN0aW9uIGRpZ2l0cyBvciBzaWduaWZpY2FudCBkaWdpdHMgKi8KKyAgICBpZiAoKmNwID09ICcuJykgeworICAgICAgICBjcCsrOworICAgICAgICBpZiAoIWlzZGlnaXQoKHVjaGFyKSpjcCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgc3BlYy0+cHJlYyA9IG1wZF9zdHJ0b3NzaXplKGNwLCAmY3AsIDEwKTsKKyAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBlcnJubyA9PSBFSU5WQUwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogdHlwZSAqLworICAgIGlmICgqY3AgPT0gJ0UnIHx8ICpjcCA9PSAnZScgfHwgKmNwID09ICdGJyB8fCAqY3AgPT0gJ2YnIHx8CisgICAgICAgICpjcCA9PSAnRycgfHwgKmNwID09ICdnJyB8fCAqY3AgPT0gJyUnKSB7CisgICAgICAgIHNwZWMtPnR5cGUgPSAqY3ArKzsKKyAgICB9CisgICAgZWxzZSBpZiAoKmNwID09ICdOJyB8fCAqY3AgPT0gJ24nKSB7CisgICAgICAgIC8qIGxvY2FsZSBzcGVjaWZpYyBjb252ZXJzaW9uICovCisgICAgICAgIHN0cnVjdCBsY29udiAqbGM7CisgICAgICAgIC8qIHNlcGFyYXRvciBoYXMgYWxyZWFkeSBiZWVuIHNwZWNpZmllZCAqLworICAgICAgICBpZiAoKnNwZWMtPnNlcCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3BlYy0+dHlwZSA9ICpjcCsrOworICAgICAgICBzcGVjLT50eXBlID0gKHNwZWMtPnR5cGUgPT0gJ04nKSA/ICdHJyA6ICdnJzsKKyAgICAgICAgbGMgPSBsb2NhbGVjb252KCk7CisgICAgICAgIHNwZWMtPmRvdCA9IGxjLT5kZWNpbWFsX3BvaW50OworICAgICAgICBzcGVjLT5zZXAgPSBsYy0+dGhvdXNhbmRzX3NlcDsKKyAgICAgICAgc3BlYy0+Z3JvdXBpbmcgPSBsYy0+Z3JvdXBpbmc7CisgICAgICAgIGlmIChtcGRfdmFsaWRhdGVfbGNvbnYoc3BlYykgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorCisgICAgLyogY2hlY2sgY29ycmVjdG5lc3MgKi8KKyAgICBpZiAoKmNwICE9ICdcMCcpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCBzcGVjLT5taW5fd2lkdGggPD0gTVBEX01BWF9QUkVDLCB3aGljaAorICogaXMgbWFkZSBzdXJlIGluIG1wZF9xZm9ybWF0X3NwZWMuIFRoZW4sIGV2ZW4gd2l0aCBhIHNwZWMgdGhhdCBpbnNlcnRzIGEKKyAqIGZvdXItYnl0ZSBzZXBhcmF0b3IgYWZ0ZXIgZWFjaCBkaWdpdCwgbmJ5dGVzIGluIHRoZSBmb2xsb3dpbmcgc3RydWN0CisgKiBjYW5ub3Qgb3ZlcmZsb3cuCisgKi8KKworLyogTXVsdGlieXRlIHN0cmluZyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIG1wZF9zc2l6ZV90IG5ieXRlczsgLyogbGVuZ3RoIGluIGJ5dGVzICovCisgICAgbXBkX3NzaXplX3QgbmNoYXJzOyAvKiBsZW5ndGggaW4gY2hhcnMgKi8KKyAgICBtcGRfc3NpemVfdCBjdXI7ICAgIC8qIGN1cnJlbnQgd3JpdGUgaW5kZXggKi8KKyAgICBjaGFyICpkYXRhOworfSBtcGRfbWJzdHJfdDsKKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Jjb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgbXBkX3NzaXplX3QgbikKK3sKKyAgICB3aGlsZSAoLS1uID49IDApIHsKKyAgICAgICAgZGVzdFtuXSA9IHNyY1tuXTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21ic3RyX2NvcHlfY2hhcihtcGRfbWJzdHJfdCAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBtcGRfc3NpemVfdCBuKQoreworICAgIGRlc3QtPm5ieXRlcyArPSBuOworICAgIGRlc3QtPm5jaGFycyArPSAobiA+IDAgPyAxIDogMCk7CisgICAgZGVzdC0+Y3VyIC09IG47CisKKyAgICBpZiAoZGVzdC0+ZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIF9tcGRfYmNvcHkoZGVzdC0+ZGF0YStkZXN0LT5jdXIsIHNyYywgbik7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tYnN0cl9jb3B5X2FzY2lpKG1wZF9tYnN0cl90ICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgZGVzdC0+bmJ5dGVzICs9IG47CisgICAgZGVzdC0+bmNoYXJzICs9IG47CisgICAgZGVzdC0+Y3VyIC09IG47CisKKyAgICBpZiAoZGVzdC0+ZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIF9tcGRfYmNvcHkoZGVzdC0+ZGF0YStkZXN0LT5jdXIsIHNyYywgbik7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tYnN0cl9jb3B5X3BhZChtcGRfbWJzdHJfdCAqZGVzdCwgbXBkX3NzaXplX3QgbikKK3sKKyAgICBkZXN0LT5uYnl0ZXMgKz0gbjsKKyAgICBkZXN0LT5uY2hhcnMgKz0gbjsKKyAgICBkZXN0LT5jdXIgLT0gbjsKKworICAgIGlmIChkZXN0LT5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgY2hhciAqY3AgPSBkZXN0LT5kYXRhICsgZGVzdC0+Y3VyOworICAgICAgICB3aGlsZSAoLS1uID49IDApIHsKKyAgICAgICAgICAgIGNwW25dID0gJzAnOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogQ29weSBhIG51bWVyaWMgc3RyaW5nIHRvIGRlc3QtPmRhdGEsIGFkZGluZyBzZXBhcmF0b3JzIGluIHRoZSBpbnRlZ2VyCisgKiBwYXJ0IGFjY29yZGluZyB0byBzcGVjLT5ncm91cGluZy4gSWYgbGVhZGluZyB6ZXJvIHBhZGRpbmcgaXMgZW5hYmxlZAorICogYW5kIHRoZSByZXN1bHQgaXMgc21hbGxlciB0aGFuIHNwZWMtPm1pbl93aWR0aCwgY29udGludWUgYWRkaW5nIHplcm9zCisgKiBhbmQgc2VwYXJhdG9ycyB1bnRpbCB0aGUgbWluaW11bSB3aWR0aCBpcyByZWFjaGVkLgorICoKKyAqIFRoZSBmaW5hbCBsZW5ndGggb2YgZGVzdC0+ZGF0YSBpcyBzdG9yZWQgaW4gZGVzdC0+bmJ5dGVzLiBUaGUgbnVtYmVyCisgKiBvZiBVVEYtOCBjaGFyYWN0ZXJzIGlzIHN0b3JlZCBpbiBkZXN0LT5uY2hhcnMuCisgKgorICogRmlyc3QgcnVuIChkZXN0LT5kYXRhID09IE5VTEwpOiBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0CisgKiBzdHJpbmcgYW5kIHN0b3JlIGl0IGluIGRlc3QtPm5ieXRlcy4KKyAqCisgKiBTZWNvbmQgcnVuICh3cml0ZSB0byBkZXN0LT5kYXRhKTogZGF0YSBpcyB3cml0dGVuIGluIGNodW5rcyBhbmQgaW4KKyAqIHJldmVyc2Ugb3JkZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG51bWVyaWMgc3RyaW5nLgorICovCitzdGF0aWMgdm9pZAorX21wZF9hZGRfc2VwX2RvdChtcGRfbWJzdHJfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2lnbiwgLyogbG9jYXRpb24gb2Ygb3B0aW9uYWwgc2lnbiAqLworICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsIG1wZF9zc2l6ZV90IG5fc3JjLCAvKiBpbnRlZ2VyIHBhcnQgYW5kIGxlbmd0aCAqLworICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkb3QsIC8qIGxvY2F0aW9uIG9mIG9wdGlvbmFsIGRlY2ltYWwgcG9pbnQgKi8KKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVzdCwgbXBkX3NzaXplX3Qgbl9yZXN0LCAvKiByZW1haW5pbmcgcGFydCBhbmQgbGVuZ3RoICovCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMpCit7CisgICAgbXBkX3NzaXplX3Qgbl9zZXAsIG5fc2lnbiwgY29uc3VtZTsKKyAgICBjb25zdCBjaGFyICpnOworICAgIGludCBwYWQgPSAwOworCisgICAgbl9zaWduID0gc2lnbiA/IDEgOiAwOworICAgIG5fc2VwID0gKG1wZF9zc2l6ZV90KXN0cmxlbihzcGVjLT5zZXApOworICAgIC8qIEluaXRpYWwgd3JpdGUgaW5kZXg6IHNldCB0byBsb2NhdGlvbiBvZiAnXDAnIGluIHRoZSBvdXRwdXQgc3RyaW5nLgorICAgICAqIElycmVsZXZhbnQgZm9yIHRoZSBmaXJzdCBydW4uICovCisgICAgZGVzdC0+Y3VyID0gZGVzdC0+bmJ5dGVzOworICAgIGRlc3QtPm5ieXRlcyA9IGRlc3QtPm5jaGFycyA9IDA7CisKKyAgICBfbWJzdHJfY29weV9hc2NpaShkZXN0LCByZXN0LCBuX3Jlc3QpOworCisgICAgaWYgKGRvdCkgeworICAgICAgICBfbWJzdHJfY29weV9jaGFyKGRlc3QsIGRvdCwgKG1wZF9zc2l6ZV90KXN0cmxlbihkb3QpKTsKKyAgICB9CisKKyAgICBnID0gc3BlYy0+Z3JvdXBpbmc7CisgICAgY29uc3VtZSA9ICpnOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIElmIHRoZSBncm91cCBsZW5ndGggaXMgMCBvciBDSEFSX01BWCBvciBncmVhdGVyIHRoYW4gdGhlCisgICAgICAgICAqIG51bWJlciBvZiBzb3VyY2UgYnl0ZXMsIGNvbnN1bWUgYWxsIHJlbWFpbmluZyBieXRlcy4gKi8KKyAgICAgICAgaWYgKCpnID09IDAgfHwgKmcgPT0gQ0hBUl9NQVggfHwgY29uc3VtZSA+IG5fc3JjKSB7CisgICAgICAgICAgICBjb25zdW1lID0gbl9zcmM7CisgICAgICAgIH0KKyAgICAgICAgbl9zcmMgLT0gY29uc3VtZTsKKyAgICAgICAgaWYgKHBhZCkgeworICAgICAgICAgICAgX21ic3RyX2NvcHlfcGFkKGRlc3QsIGNvbnN1bWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX21ic3RyX2NvcHlfYXNjaWkoZGVzdCwgc3JjK25fc3JjLCBjb25zdW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuX3NyYyA9PSAwKSB7CisgICAgICAgICAgICAvKiBFaXRoZXIgdGhlIHJlYWwgc291cmNlIG9mIGludHBhcnQgZGlnaXRzIG9yIHRoZSB2aXJ0dWFsCisgICAgICAgICAgICAgKiBzb3VyY2Ugb2YgcGFkZGluZyB6ZXJvcyBpcyBleGhhdXN0ZWQuICovCisgICAgICAgICAgICBpZiAoc3BlYy0+YWxpZ24gPT0gJ3onICYmCisgICAgICAgICAgICAgICAgZGVzdC0+bmNoYXJzICsgbl9zaWduIDwgc3BlYy0+bWluX3dpZHRoKSB7CisgICAgICAgICAgICAgICAgLyogWmVybyBwYWRkaW5nIGlzIHNldCBhbmQgbGVuZ3RoIDwgbWluX3dpZHRoOgorICAgICAgICAgICAgICAgICAqIEdlbmVyYXRlIG5fc3JjIGFkZGl0aW9uYWwgY2hhcmFjdGVycy4gKi8KKyAgICAgICAgICAgICAgICBuX3NyYyA9IHNwZWMtPm1pbl93aWR0aCAtIChkZXN0LT5uY2hhcnMgKyBuX3NpZ24pOworICAgICAgICAgICAgICAgIC8qIE5leHQgaXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAqICAgY2FzZSAqZyA9PSAwIHx8ICpnID09IENIQVJfTUFYOgorICAgICAgICAgICAgICAgICAqICAgICAgY29uc3VtZSBhbGwgcGFkZGluZyBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICogICBjYXNlIGNvbnN1bWUgPCBnKjoKKyAgICAgICAgICAgICAgICAgKiAgICAgIGZpbGwgcmVtYWluZGVyIG9mIGN1cnJlbnQgZ3JvdXAKKyAgICAgICAgICAgICAgICAgKiAgIGNhc2UgY29uc3VtZSA9PSBnKgorICAgICAgICAgICAgICAgICAqICAgICAgY29weWluZyBpcyBhIG5vLW9wICovCisgICAgICAgICAgICAgICAgY29uc3VtZSA9ICpnIC0gY29uc3VtZTsKKyAgICAgICAgICAgICAgICAvKiBTd2l0Y2ggb24gdmlydHVhbCBzb3VyY2Ugb2YgemVyb3MuICovCisgICAgICAgICAgICAgICAgcGFkID0gMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5fc2VwID4gMCkgeworICAgICAgICAgICAgLyogSWYgcGFkZGluZyBpcyBzd2l0Y2hlZCBvbiwgc2VwYXJhdG9ycyBhcmUgY291bnRlZAorICAgICAgICAgICAgICogYXMgcGFkZGluZyBjaGFyYWN0ZXJzLiBUaGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgaWYKKyAgICAgICAgICAgICAqIHRoZSBzZXBhcmF0b3Igd291bGQgYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUKKyAgICAgICAgICAgICAqIHJlc3VsdCBzdHJpbmcuICovCisgICAgICAgICAgICBpZiAocGFkICYmIG5fc3JjID4gMSkgbl9zcmMgLT0gMTsKKyAgICAgICAgICAgIF9tYnN0cl9jb3B5X2NoYXIoZGVzdCwgc3BlYy0+c2VwLCBuX3NlcCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBJZiBub24tTlVMLCB1c2UgdGhlIG5leHQgdmFsdWUgZm9yIGdyb3VwaW5nLiAqLworICAgICAgICBpZiAoKmcgJiYgKihnKzEpKSBnKys7CisgICAgICAgIGNvbnN1bWUgPSAqZzsKKyAgICB9CisKKyAgICBpZiAoc2lnbikgeworICAgICAgICBfbWJzdHJfY29weV9hc2NpaShkZXN0LCBzaWduLCAxKTsKKyAgICB9CisKKyAgICBpZiAoZGVzdC0+ZGF0YSkgeworICAgICAgICBkZXN0LT5kYXRhW2Rlc3QtPm5ieXRlc10gPSAnXDAnOworICAgIH0KK30KKworLyoKKyAqIENvbnZlcnQgYSBudW1lcmljLXN0cmluZyB0byBpdHMgbG9jYWxlLXNwZWNpZmljIGFwcGVhcmFuY2UuCisgKiBUaGUgc3RyaW5nIG11c3QgaGF2ZSBvbmUgb2YgdGhlc2UgZm9ybXM6CisgKgorICogICAgIDEpIFtzaWduXSBkaWdpdHMgW2V4cG9uZW50LXBhcnRdCisgKiAgICAgMikgW3NpZ25dIGRpZ2l0cyAnLicgW2RpZ2l0c10gW2V4cG9uZW50LXBhcnRdCisgKgorICogTm90IGFsbG93ZWQsIHNpbmNlIF9tcGRfdG9fc3RyaW5nKCkgbmV2ZXIgcmV0dXJucyB0aGlzIGZvcm06CisgKgorICogICAgIDMpIFtzaWduXSAnLicgZGlnaXRzIFtleHBvbmVudC1wYXJ0XQorICoKKyAqIElucHV0OiByZXN1bHQtPmRhdGEgOj0gb3JpZ2luYWwgbnVtZXJpYyBzdHJpbmcgKEFTQ0lJKQorICogICAgICAgIHJlc3VsdC0+Ynl0ZXMgOj0gc3RybGVuKHJlc3VsdC0+ZGF0YSkKKyAqICAgICAgICByZXN1bHQtPm5jaGFycyA6PSBzdHJsZW4ocmVzdWx0LT5kYXRhKQorICoKKyAqIE91dHB1dDogcmVzdWx0LT5kYXRhIDo9IG1vZGlmaWVkIG9yIG9yaWdpbmFsIHN0cmluZworICogICAgICAgICByZXN1bHQtPmJ5dGVzIDo9IHN0cmxlbihyZXN1bHQtPmRhdGEpCisgKiAgICAgICAgIHJlc3VsdC0+bmNoYXJzIDo9IG51bWJlciBvZiBjaGFyYWN0ZXJzIChwb3NzaWJseSBVVEYtOCkKKyAqLworc3RhdGljIGludAorX21wZF9hcHBseV9sY29udihtcGRfbWJzdHJfdCAqcmVzdWx0LCBjb25zdCBtcGRfc3BlY190ICpzcGVjLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGNvbnN0IGNoYXIgKnNpZ24gPSBOVUxMLCAqaW50cGFydCA9IE5VTEwsICpkb3QgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnJlc3QsICpkcDsKKyAgICBjaGFyICpkZWNzdHJpbmc7CisgICAgbXBkX3NzaXplX3Qgbl9pbnQsIG5fcmVzdDsKKworICAgIC8qIG9yaWdpbmFsIG51bWVyaWMgc3RyaW5nICovCisgICAgZHAgPSByZXN1bHQtPmRhdGE7CisKKyAgICAvKiBzaWduICovCisgICAgaWYgKCpkcCA9PSAnKycgfHwgKmRwID09ICctJyB8fCAqZHAgPT0gJyAnKSB7CisgICAgICAgIHNpZ24gPSBkcCsrOworICAgIH0KKyAgICAvKiBpbnRlZ2VyIHBhcnQgKi8KKyAgICBhc3NlcnQoaXNkaWdpdCgodWNoYXIpKmRwKSk7CisgICAgaW50cGFydCA9IGRwKys7CisgICAgd2hpbGUgKGlzZGlnaXQoKHVjaGFyKSpkcCkpIHsKKyAgICAgICAgZHArKzsKKyAgICB9CisgICAgbl9pbnQgPSAobXBkX3NzaXplX3QpKGRwLWludHBhcnQpOworICAgIC8qIGRlY2ltYWwgcG9pbnQgKi8KKyAgICBpZiAoKmRwID09ICcuJykgeworICAgICAgICBkcCsrOyBkb3QgPSBzcGVjLT5kb3Q7CisgICAgfQorICAgIC8qIHJlc3QgKi8KKyAgICByZXN0ID0gZHA7CisgICAgbl9yZXN0ID0gcmVzdWx0LT5uYnl0ZXMgLSAobXBkX3NzaXplX3QpKGRwLXJlc3VsdC0+ZGF0YSk7CisKKyAgICBpZiAoZG90ID09IE5VTEwgJiYgKCpzcGVjLT5zZXAgPT0gJ1wwJyB8fCAqc3BlYy0+Z3JvdXBpbmcgPT0gJ1wwJykpIHsKKyAgICAgICAgLyogX21wZF9hZGRfc2VwX2RvdCgpIHdvdWxkIG5vdCBjaGFuZ2UgYW55dGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBuZXcgZGVjaW1hbCBzdHJpbmcgYWZ0ZXIgaW5zZXJ0aW5nIHRoZQorICAgICAqIGRlY2ltYWwgcG9pbnQsIG9wdGlvbmFsIHNlcGFyYXRvcnMgYW5kIG9wdGlvbmFsIHBhZGRpbmcuICovCisgICAgZGVjc3RyaW5nID0gcmVzdWx0LT5kYXRhOworICAgIHJlc3VsdC0+ZGF0YSA9IE5VTEw7CisgICAgX21wZF9hZGRfc2VwX2RvdChyZXN1bHQsIHNpZ24sIGludHBhcnQsIG5faW50LCBkb3QsCisgICAgICAgICAgICAgICAgICAgICByZXN0LCBuX3Jlc3QsIHNwZWMpOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2FsbG9jKHJlc3VsdC0+bmJ5dGVzKzEsIDEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFBlcmZvcm0gYWN0dWFsIHdyaXRlcy4gKi8KKyAgICBfbXBkX2FkZF9zZXBfZG90KHJlc3VsdCwgc2lnbiwgaW50cGFydCwgbl9pbnQsIGRvdCwKKyAgICAgICAgICAgICAgICAgICAgIHJlc3QsIG5fcmVzdCwgc3BlYyk7CisKKyAgICBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIHJldHVybiAxOworfQorCisvKiBBZGQgcGFkZGluZyB0byB0aGUgZm9ybWF0dGVkIHN0cmluZyBpZiBuZWNlc3NhcnkuICovCitzdGF0aWMgaW50CitfbXBkX2FkZF9wYWQobXBkX21ic3RyX3QgKnJlc3VsdCwgY29uc3QgbXBkX3NwZWNfdCAqc3BlYywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAocmVzdWx0LT5uY2hhcnMgPCBzcGVjLT5taW5fd2lkdGgpIHsKKyAgICAgICAgbXBkX3NzaXplX3QgYWRkX2NoYXJzLCBhZGRfYnl0ZXM7CisgICAgICAgIHNpemVfdCBscGFkID0gMCwgcnBhZCA9IDA7CisgICAgICAgIHNpemVfdCBuX2ZpbGwsIGxlbiwgaSwgajsKKyAgICAgICAgY2hhciBhbGlnbiA9IHNwZWMtPmFsaWduOworICAgICAgICB1aW50OF90IGVyciA9IDA7CisgICAgICAgIGNoYXIgKmNwOworCisgICAgICAgIG5fZmlsbCA9IHN0cmxlbihzcGVjLT5maWxsKTsKKyAgICAgICAgYWRkX2NoYXJzID0gKHNwZWMtPm1pbl93aWR0aCAtIHJlc3VsdC0+bmNoYXJzKTsKKyAgICAgICAgLyogbWF4IHZhbHVlOiBNUERfTUFYX1BSRUMgKiA0ICovCisgICAgICAgIGFkZF9ieXRlcyA9IGFkZF9jaGFycyAqIChtcGRfc3NpemVfdCluX2ZpbGw7CisKKyAgICAgICAgY3AgPSByZXN1bHQtPmRhdGEgPSBtcGRfcmVhbGxvYyhyZXN1bHQtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5uYnl0ZXMrYWRkX2J5dGVzKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICpyZXN1bHQtPmRhdGEsICZlcnIpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBtcGRfZnJlZShyZXN1bHQtPmRhdGEpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWxpZ24gPT0gJ3onKSB7CisgICAgICAgICAgICBhbGlnbiA9ICc9JzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhbGlnbiA9PSAnPCcpIHsKKyAgICAgICAgICAgIHJwYWQgPSBhZGRfY2hhcnM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYWxpZ24gPT0gJz4nIHx8IGFsaWduID09ICc9JykgeworICAgICAgICAgICAgbHBhZCA9IGFkZF9jaGFyczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsgLyogYWxpZ24gPT0gJ14nICovCisgICAgICAgICAgICBscGFkID0gYWRkX2NoYXJzLzI7CisgICAgICAgICAgICBycGFkID0gYWRkX2NoYXJzLWxwYWQ7CisgICAgICAgIH0KKworICAgICAgICBsZW4gPSByZXN1bHQtPm5ieXRlczsKKyAgICAgICAgaWYgKGFsaWduID09ICc9JyAmJiAoKmNwID09ICctJyB8fCAqY3AgPT0gJysnIHx8ICpjcCA9PSAnICcpKSB7CisgICAgICAgICAgICAvKiBsZWF2ZSBzaWduIGluIHRoZSBsZWFkaW5nIHBvc2l0aW9uICovCisgICAgICAgICAgICBjcCsrOyBsZW4tLTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbW1vdmUoY3Arbl9maWxsKmxwYWQsIGNwLCBsZW4pOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbHBhZDsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9maWxsOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjcFtpKm5fZmlsbCtqXSA9IHNwZWMtPmZpbGxbal07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY3AgKz0gKG5fZmlsbCpscGFkICsgbGVuKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHJwYWQ7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fZmlsbDsgaisrKSB7CisgICAgICAgICAgICAgICAgY3BbaSpuX2ZpbGwral0gPSBzcGVjLT5maWxsW2pdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LT5uYnl0ZXMgKz0gYWRkX2J5dGVzOworICAgICAgICByZXN1bHQtPm5jaGFycyArPSBhZGRfY2hhcnM7CisgICAgICAgIHJlc3VsdC0+ZGF0YVtyZXN1bHQtPm5ieXRlc10gPSAnXDAnOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBSb3VuZCBhIG51bWJlciB0byBwcmVjIGRpZ2l0cy4gVGhlIGFkanVzdGVkIGV4cG9uZW50IHN0YXlzIHRoZSBzYW1lCisgICBvciBpbmNyZWFzZXMgYnkgb25lIGlmIHJvdW5kaW5nIHVwIGNyb3NzZXMgYSBwb3dlciBvZiB0ZW4gYm91bmRhcnkuCisgICBJZiByZXN1bHQtPmRpZ2l0cyB3b3VsZCBleGNlZWQgTVBEX01BWF9QUkVDKzEsIE1QRF9JbnZhbGlkX29wZXJhdGlvbgorICAgaXMgc2V0IGFuZCB0aGUgcmVzdWx0IGlzIE5hTi4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9yb3VuZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgcHJlYywKKyAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGV4cCA9IGEtPmV4cCArIGEtPmRpZ2l0cyAtIHByZWM7CisKKyAgICBpZiAocHJlYyA8PSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICByZXR1cm47IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzemVybyhhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIHJldHVybjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIG1wZF9xcmVzY2FsZV9mbXQocmVzdWx0LCBhLCBleHAsIGN0eCwgc3RhdHVzKTsKKyAgICBpZiAocmVzdWx0LT5kaWdpdHMgPiBwcmVjKSB7CisgICAgICAgIG1wZF9xcmVzY2FsZV9mbXQocmVzdWx0LCByZXN1bHQsIGV4cCsxLCBjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKgorICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gbXBkX3QsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gJ3NwZWMnLgorICogVGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIGFzc3VtZWQgdG8gYmUgdmFsaWQuIE1lbW9yeSBlcnJvcnMgYXJlIGluZGljYXRlZAorICogYXMgdXN1YWwuIFRoaXMgZnVuY3Rpb24gaXMgcXVpZXQuCisgKi8KK2NoYXIgKgorbXBkX3Fmb3JtYXRfc3BlYyhjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfc3BlY190ICpzcGVjLAorICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBkdFtNUERfTUlOQUxMT0NfTUFYXTsKKyAgICBtcGRfdCB0bXAgPSB7TVBEX1NUQVRJQ3xNUERfU1RBVElDX0RBVEEsMCwwLDAsTVBEX01JTkFMTE9DX01BWCxkdH07CisgICAgbXBkX3NzaXplX3QgZHBsYWNlID0gTVBEX0RFRkFVTFRfRE9UUExBQ0U7CisgICAgbXBkX21ic3RyX3QgcmVzdWx0OworICAgIG1wZF9zcGVjX3Qgc3RhY2tzcGVjOworICAgIGNoYXIgdHlwZSA9IHNwZWMtPnR5cGU7CisgICAgaW50IGZsYWdzID0gMDsKKworCisgICAgaWYgKHNwZWMtPm1pbl93aWR0aCA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGlzdXBwZXIoKHVjaGFyKXR5cGUpKSB7CisgICAgICAgIHR5cGUgPSB0b2xvd2VyKCh1Y2hhcil0eXBlKTsKKyAgICAgICAgZmxhZ3MgfD0gTVBEX0ZNVF9VUFBFUjsKKyAgICB9CisgICAgaWYgKHNwZWMtPnNpZ24gPT0gJyAnKSB7CisgICAgICAgIGZsYWdzIHw9IE1QRF9GTVRfU0lHTl9TUEFDRTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3BlYy0+c2lnbiA9PSAnKycpIHsKKyAgICAgICAgZmxhZ3MgfD0gTVBEX0ZNVF9TSUdOX1BMVVM7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgeworICAgICAgICBpZiAoc3BlYy0+YWxpZ24gPT0gJ3onKSB7CisgICAgICAgICAgICBzdGFja3NwZWMgPSAqc3BlYzsKKyAgICAgICAgICAgIHN0YWNrc3BlYy5maWxsWzBdID0gJyAnOworICAgICAgICAgICAgc3RhY2tzcGVjLmZpbGxbMV0gPSAnXDAnOworICAgICAgICAgICAgc3RhY2tzcGVjLmFsaWduID0gJz4nOworICAgICAgICAgICAgc3BlYyA9ICZzdGFja3NwZWM7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlICdnJzogZmxhZ3MgfD0gTVBEX0ZNVF9UT1NDSTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2UnOiBmbGFncyB8PSBNUERfRk1UX0VYUDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyUnOiBmbGFncyB8PSBNUERfRk1UX1BFUkNFTlQ7CisgICAgICAgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmdG1wLCBkZWMsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIHRtcC5leHAgKz0gMjsKKyAgICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICAgICAgICB0eXBlID0gJ2YnOyAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgY2FzZSAnZic6IGZsYWdzIHw9IE1QRF9GTVRfRklYRUQ7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiBhYm9ydCgpOyAvKiBkZWJ1ZzogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwZWMtPnByZWMgPj0gMCkgeworICAgICAgICAgICAgaWYgKHNwZWMtPnByZWMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICAgICAgICAgIHByZWMgPSAoc3BlYy0+cHJlYyA9PSAwKSA/IDEgOiBzcGVjLT5wcmVjOworICAgICAgICAgICAgICAgIGlmIChkZWMtPmRpZ2l0cyA+IHByZWMpIHsKKyAgICAgICAgICAgICAgICAgICAgX21wZF9yb3VuZCgmdG1wLCBkZWMsIHByZWMsIGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICAgICAgaWYgKG1wZF9pc3plcm8oZGVjKSkgeworICAgICAgICAgICAgICAgICAgICBkcGxhY2UgPSAxLXNwZWMtPnByZWM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBfbXBkX3JvdW5kKCZ0bXAsIGRlYywgc3BlYy0+cHJlYysxLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICAgICAgICAgIG1wZF9xcmVzY2FsZSgmdG1wLCBkZWMsIC1zcGVjLT5wcmVjLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGUgPT0gJ2YnKSB7CisgICAgICAgICAgICBpZiAobXBkX2lzemVybyhkZWMpICYmIGRlYy0+ZXhwID4gMCkgeworICAgICAgICAgICAgICAgIG1wZF9xcmVzY2FsZSgmdG1wLCBkZWMsIDAsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAod29ya3N0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9ICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogQXQgdGhpcyBwb2ludCwgZm9yIGFsbCBzY2FsZWQgb3Igbm9uLXNjYWxlZCBkZWNpbWFsczoKKyAgICAgKiAgIDEpIDEgPD0gZGlnaXRzIDw9IE1BWF9QUkVDKzEKKyAgICAgKiAgIDIpIGFkamV4cChzY2FsZWQpID0gYWRqZXhwKG9yaWcpIFsrMV0KKyAgICAgKiAgIDMpICAgY2FzZSAnZyc6IE1JTl9FVElOWSA8PSBleHAgPD0gTUFYX0VNQVgrMQorICAgICAqICAgICAgICBjYXNlICdlJzogTUlOX0VUSU5ZLU1BWF9QUkVDIDw9IGV4cCA8PSBNQVhfRU1BWCsxCisgICAgICogICAgICAgIGNhc2UgJ2YnOiBNSU5fRVRJTlkgPD0gZXhwIDw9IE1BWF9FTUFYKzEKKyAgICAgKiAgIDQpIG1heCBtZW1vcnkgYWxsb2MgaW4gX21wZF90b19zdHJpbmc6CisgICAgICogICAgICAgIGNhc2UgJ2cnOiBNQVhfUFJFQyszNgorICAgICAqICAgICAgICBjYXNlICdlJzogTUFYX1BSRUMrMzYKKyAgICAgKiAgICAgICAgY2FzZSAnZic6IDIqTVBEX01BWF9QUkVDKzMwCisgICAgICovCisgICAgcmVzdWx0Lm5ieXRlcyA9IF9tcGRfdG9fc3RyaW5nKCZyZXN1bHQuZGF0YSwgZGVjLCBmbGFncywgZHBsYWNlKTsKKyAgICByZXN1bHQubmNoYXJzID0gcmVzdWx0Lm5ieXRlczsKKyAgICBpZiAocmVzdWx0Lm5ieXRlcyA8IDApIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqc3BlYy0+ZG90ICE9ICdcMCcgJiYgIW1wZF9pc3NwZWNpYWwoZGVjKSkgeworICAgICAgICBpZiAocmVzdWx0Lm5jaGFycyA+IE1QRF9NQVhfUFJFQyszNikgeworICAgICAgICAgICAgLyogU2luY2UgYSBncm91cCBsZW5ndGggb2Ygb25lIGlzIG5vdCBleHBsaWNpdGx5CisgICAgICAgICAgICAgKiBkaXNhbGxvd2VkLCBlbnN1cmUgdGhhdCBpdCBpcyBhbHdheXMgcG9zc2libGUgdG8KKyAgICAgICAgICAgICAqIGluc2VydCBhIGZvdXIgYnl0ZSBzZXBhcmF0b3IgYWZ0ZXIgZWFjaCBkaWdpdC4gKi8KKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgbXBkX2ZyZWUocmVzdWx0LmRhdGEpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIV9tcGRfYXBwbHlfbGNvbnYoJnJlc3VsdCwgc3BlYywgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzcGVjLT5taW5fd2lkdGgpIHsKKyAgICAgICAgaWYgKCFfbXBkX2FkZF9wYWQoJnJlc3VsdCwgc3BlYywgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9kZWwoJnRtcCk7CisgICAgcmV0dXJuIHJlc3VsdC5kYXRhOworCitlcnJvcjoKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIHJldHVybiBOVUxMOworfQorCitjaGFyICoKK21wZF9xZm9ybWF0KGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKmZtdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3BlY190IHNwZWM7CisKKyAgICBpZiAoIW1wZF9wYXJzZV9mbXRfc3RyKCZzcGVjLCBmbXQsIDEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX3Fmb3JtYXRfc3BlYyhkZWMsICZzcGVjLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBUaGUgc3BlY2lmaWNhdGlvbiBoYXMgYSAqY29uZGl0aW9uKiBjYWxsZWQgSW52YWxpZF9vcGVyYXRpb24gYW5kIGFuCisgKiBJRUVFICpzaWduYWwqIGNhbGxlZCBJbnZhbGlkX29wZXJhdGlvbi4gVGhlIGZvcm1lciBjb3JyZXNwb25kcyB0bworICogTVBEX0ludmFsaWRfb3BlcmF0aW9uLCB0aGUgbGF0dGVyIHRvIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uLgorICogTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gY29tcHJpc2VzIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBbTVBEX0NvbnZlcnNpb25fc3ludGF4LCBNUERfRGl2aXNpb25faW1wb3NzaWJsZSwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwKKyAqICBNUERfRnB1X2Vycm9yLCBNUERfSW52YWxpZF9jb250ZXh0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sCisgKiAgTVBEX01hbGxvY19lcnJvcl0KKyAqCisgKiBJbiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucywgJ2ZsYWcnIGRlbm90ZXMgdGhlIGNvbmRpdGlvbiwgJ3NpZ25hbCcKKyAqIGRlbm90ZXMgdGhlIElFRUUgc2lnbmFsLgorICovCisKK3N0YXRpYyBjb25zdCBjaGFyICptcGRfZmxhZ19zdHJpbmdbTVBEX05VTV9GTEFHU10gPSB7CisgICAgIkNsYW1wZWQiLAorICAgICJDb252ZXJzaW9uX3N5bnRheCIsCisgICAgIkRpdmlzaW9uX2J5X3plcm8iLAorICAgICJEaXZpc2lvbl9pbXBvc3NpYmxlIiwKKyAgICAiRGl2aXNpb25fdW5kZWZpbmVkIiwKKyAgICAiRnB1X2Vycm9yIiwKKyAgICAiSW5leGFjdCIsCisgICAgIkludmFsaWRfY29udGV4dCIsCisgICAgIkludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiTWFsbG9jX2Vycm9yIiwKKyAgICAiTm90X2ltcGxlbWVudGVkIiwKKyAgICAiT3ZlcmZsb3ciLAorICAgICJSb3VuZGVkIiwKKyAgICAiU3Vibm9ybWFsIiwKKyAgICAiVW5kZXJmbG93IiwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICptcGRfc2lnbmFsX3N0cmluZ1tNUERfTlVNX0ZMQUdTXSA9IHsKKyAgICAiQ2xhbXBlZCIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJEaXZpc2lvbl9ieV96ZXJvIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSW5leGFjdCIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIk5vdF9pbXBsZW1lbnRlZCIsCisgICAgIk92ZXJmbG93IiwKKyAgICAiUm91bmRlZCIsCisgICAgIlN1Ym5vcm1hbCIsCisgICAgIlVuZGVyZmxvdyIsCit9OworCisvKiBwcmludCBjb25kaXRpb25zIHRvIGJ1ZmZlciwgc2VwYXJhdGVkIGJ5IHNwYWNlcyAqLworaW50CittcGRfc25wcmludF9mbGFncyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzKQoreworICAgIGNoYXIgKmNwOworICAgIGludCBuLCBqOworCisgICAgYXNzZXJ0KG5tZW1iID49IE1QRF9NQVhfRkxBR19TVFJJTkcpOworCisgICAgKmRlc3QgPSAnXDAnOyBjcCA9IGRlc3Q7CisgICAgZm9yIChqID0gMDsgaiA8IE1QRF9OVU1fRkxBR1M7IGorKykgeworICAgICAgICBpZiAoZmxhZ3MgJiAoMVU8PGopKSB7CisgICAgICAgICAgICBuID0gc25wcmludGYoY3AsIG5tZW1iLCAiJXMgIiwgbXBkX2ZsYWdfc3RyaW5nW2pdKTsKKyAgICAgICAgICAgIGlmIChuIDwgMCB8fCBuID49IG5tZW1iKSByZXR1cm4gLTE7CisgICAgICAgICAgICBjcCArPSBuOyBubWVtYiAtPSBuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNwICE9IGRlc3QpIHsKKyAgICAgICAgKigtLWNwKSA9ICdcMCc7CisgICAgfQorCisgICAgcmV0dXJuIChpbnQpKGNwLWRlc3QpOworfQorCisvKiBwcmludCBjb25kaXRpb25zIHRvIGJ1ZmZlciwgaW4gbGlzdCBmb3JtICovCitpbnQKK21wZF9sc25wcmludF9mbGFncyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBjaGFyICpmbGFnX3N0cmluZ1tdKQoreworICAgIGNoYXIgKmNwOworICAgIGludCBuLCBqOworCisgICAgYXNzZXJ0KG5tZW1iID49IE1QRF9NQVhfRkxBR19MSVNUKTsKKyAgICBpZiAoZmxhZ19zdHJpbmcgPT0gTlVMTCkgeworICAgICAgICBmbGFnX3N0cmluZyA9IG1wZF9mbGFnX3N0cmluZzsKKyAgICB9CisKKyAgICAqZGVzdCA9ICdbJzsKKyAgICAqKGRlc3QrMSkgPSAnXDAnOworICAgIGNwID0gZGVzdCsxOworICAgIC0tbm1lbWI7CisKKyAgICBmb3IgKGogPSAwOyBqIDwgTVBEX05VTV9GTEFHUzsgaisrKSB7CisgICAgICAgIGlmIChmbGFncyAmICgxVTw8aikpIHsKKyAgICAgICAgICAgIG4gPSBzbnByaW50ZihjcCwgbm1lbWIsICIlcywgIiwgZmxhZ19zdHJpbmdbal0pOworICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gbm1lbWIpIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNwICs9IG47IG5tZW1iIC09IG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBlcmFzZSB0aGUgbGFzdCAiLCAiICovCisgICAgaWYgKGNwICE9IGRlc3QrMSkgeworICAgICAgICBjcCAtPSAyOworICAgIH0KKworICAgICpjcCsrID0gJ10nOworICAgICpjcCA9ICdcMCc7CisKKyAgICByZXR1cm4gKGludCkoY3AtZGVzdCk7IC8qIHN0cmxlbiwgd2l0aG91dCBOVUwgdGVybWluYXRvciAqLworfQorCisvKiBwcmludCBzaWduYWxzIHRvIGJ1ZmZlciwgaW4gbGlzdCBmb3JtICovCitpbnQKK21wZF9sc25wcmludF9zaWduYWxzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKnNpZ25hbF9zdHJpbmdbXSkKK3sKKyAgICBjaGFyICpjcDsKKyAgICBpbnQgbiwgajsKKyAgICBpbnQgaWVlZV9pbnZhbGlkX2RvbmUgPSAwOworCisgICAgYXNzZXJ0KG5tZW1iID49IE1QRF9NQVhfU0lHTkFMX0xJU1QpOworICAgIGlmIChzaWduYWxfc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgc2lnbmFsX3N0cmluZyA9IG1wZF9zaWduYWxfc3RyaW5nOworICAgIH0KKworICAgICpkZXN0ID0gJ1snOworICAgICooZGVzdCsxKSA9ICdcMCc7CisgICAgY3AgPSBkZXN0KzE7CisgICAgLS1ubWVtYjsKKworICAgIGZvciAoaiA9IDA7IGogPCBNUERfTlVNX0ZMQUdTOyBqKyspIHsKKyAgICAgICAgdWludDMyX3QgZiA9IGZsYWdzICYgKDFVPDxqKTsKKyAgICAgICAgaWYgKGYpIHsKKyAgICAgICAgICAgIGlmIChmJk1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGllZWVfaW52YWxpZF9kb25lKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZWVlX2ludmFsaWRfZG9uZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuID0gc25wcmludGYoY3AsIG5tZW1iLCAiJXMsICIsIHNpZ25hbF9zdHJpbmdbal0pOworICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gbm1lbWIpIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNwICs9IG47IG5tZW1iIC09IG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBlcmFzZSB0aGUgbGFzdCAiLCAiICovCisgICAgaWYgKGNwICE9IGRlc3QrMSkgeworICAgICAgICBjcCAtPSAyOworICAgIH0KKworICAgICpjcCsrID0gJ10nOworICAgICpjcCA9ICdcMCc7CisKKyAgICByZXR1cm4gKGludCkoY3AtZGVzdCk7IC8qIHN0cmxlbiwgd2l0aG91dCBOVUwgdGVybWluYXRvciAqLworfQorCisvKiBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIG1haW5seSBpbnRlbmRlZCBmb3IgZGVidWdnaW5nLiAqLwordm9pZAorbXBkX2ZwcmludChGSUxFICpmaWxlLCBjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGNoYXIgKmRlY3N0cmluZzsKKworICAgIGRlY3N0cmluZyA9IG1wZF90b19zY2koZGVjLCAxKTsKKyAgICBpZiAoZGVjc3RyaW5nICE9IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihmaWxlLCAiJXNcbiIsIGRlY3N0cmluZyk7CisgICAgICAgIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcHV0cygibXBkX2ZwcmludDogb3V0cHV0IGVycm9yXG4iLCBmaWxlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KK30KKwordm9pZAorbXBkX3ByaW50KGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgY2hhciAqZGVjc3RyaW5nOworCisgICAgZGVjc3RyaW5nID0gbXBkX3RvX3NjaShkZWMsIDEpOworICAgIGlmIChkZWNzdHJpbmcgIT0gTlVMTCkgeworICAgICAgICBwcmludGYoIiVzXG4iLCBkZWNzdHJpbmcpOworICAgICAgICBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnB1dHMoIm1wZF9mcHJpbnQ6IG91dHB1dCBlcnJvclxuIiwgc3RkZXJyKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmY2U3MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIElPX0gKKyNkZWZpbmUgSU9fSAorCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKyNpZiBTSVpFX01BWCA9PSBNUERfU0laRV9NQVgKKyAgI2RlZmluZSBtcGRfc3RydG9zc2l6ZSBfbXBkX3N0cnRvc3NpemUKKyNlbHNlCitzdGF0aWMgaW5saW5lIG1wZF9zc2l6ZV90CittcGRfc3RydG9zc2l6ZShjb25zdCBjaGFyICpzLCBjaGFyICoqZW5kLCBpbnQgYmFzZSkKK3sKKyAgICBpbnQ2NF90IHJldHZhbDsKKworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBfbXBkX3N0cnRvc3NpemUocywgZW5kLCBiYXNlKTsKKyAgICBpZiAoZXJybm8gPT0gMCAmJiAocmV0dmFsID4gTVBEX1NTSVpFX01BWCB8fCByZXR2YWwgPCBNUERfU1NJWkVfTUlOKSkgeworICAgICAgICBlcnJubyA9IEVSQU5HRTsKKyAgICB9CisgICAgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICByZXR1cm4gKHJldHZhbCA8IDApID8gTVBEX1NTSVpFX01JTiA6IE1QRF9TU0laRV9NQVg7CisgICAgfQorCisgICAgcmV0dXJuIChtcGRfc3NpemVfdClyZXR2YWw7Cit9CisjZW5kaWYKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9SRUZFUkVOQ0VTLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9SRUZFUkVOQ0VTLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWQ1NzgyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL1JFRkVSRU5DRVMudHh0CkBAIC0wLDAgKzEsNTEgQEAKKworCitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIGxpbmtzIHRvIHRoZSBsaXRlcmF0dXJlIHVzZWQgaW4gdGhlIHByb2Nlc3Mgb2YKK2NyZWF0aW5nIHRoZSBsaWJyYXJ5LiBUaGUgbGlzdCBpcyBwcm9iYWJseSBub3QgY29tcGxldGUuCisKKworTWlrZSBDb3dsaXNoYXc6IEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KK2h0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC9kZWNhcml0aC5odG1sCisKKworSmVhbi1NaWNoZWwgTXVsbGVyOiBPbiB0aGUgZGVmaW5pdGlvbiBvZiB1bHAgKHgpCitsYXJhLmluaXN0LmZyL2JpdHN0cmVhbS8yMzMyLzUxOC8xL0xJUC1SUjIwMDUtMDkucGRmCisKKworVC4gRS4gSHVsbCwgQS4gQWJyaGFtOiBQcm9wZXJseSByb3VuZGVkIHZhcmlhYmxlIHByZWNpc2lvbiBzcXVhcmUgcm9vdAoraHR0cDovL3BvcnRhbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD0yMTQ0MTMKKworCitULiBFLiBIdWxsLCBBLiBBYnJoYW06IFZhcmlhYmxlIHByZWNpc2lvbiBleHBvbmVudGlhbCBmdW5jdGlvbgoraHR0cDovL3BvcnRhbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD02NDk4CisKKworUm9tYW4gRS4gTWFlZGVyOiBTdG9yYWdlIGFsbG9jYXRpb24gZm9yIHRoZSBLYXJhdHN1YmEgaW50ZWdlciBtdWx0aXBsaWNhdGlvbgorYWxnb3JpdGhtLiAgaHR0cDovL3d3dy5zcHJpbmdlcmxpbmsuY29tL2NvbnRlbnQvdzE1MDU4bWo2djU5dDU2NS8KKworCitKLiBNLiBQb2xsYXJkOiBUaGUgZmFzdCBGb3VyaWVyIHRyYW5zZm9ybSBpbiBhIGZpbml0ZSBmaWVsZAoraHR0cDovL3d3dy5hbXMub3JnL2pvdXJuYWxzL21jb20vMTk3MS0yNS0xMTQvUzAwMjUtNTcxOC0xOTcxLTAzMDE5NjYtMC9ob21lLmh0bWwKKworCitEYXZpZCBILiBCYWlsZXk6IEZGVHMgaW4gRXh0ZXJuYWwgb3IgSGllcmFyY2hpY2FsIE1lbW9yeQoraHR0cDovL2NyZC5sYmwuZ292L35kaGJhaWxleS9kaGJwYXBlcnMvCisKKworVy4gTW9ydmVuIEdlbnRsZW1hbjogTWF0cml4IE11bHRpcGxpY2F0aW9uIGFuZCBGYXN0IEZvdXJpZXIgVHJhbnNmb3JtcworaHR0cDovL3d3dy5hbGNhdGVsLWx1Y2VudC5jb20vYnN0ai92b2w0Ny0xOTY4L2FydGljbGVzL2JzdGo0Ny02LTEwOTkucGRmCisKKworTWlra28gVG9tbWlsYTogQXBmbG9hdCBkb2N1bWVudGF0aW9uCitodHRwOi8vd3d3LmFwZmxvYXQub3JnL2FwZmxvYXQvMi40MS9hcGZsb2F0LnBkZgorCisKK0pvZXJnIEFybmR0OiAiTWF0dGVycyBDb21wdXRhdGlvbmFsIgoraHR0cDovL3d3dy5qamouZGUvZnh0LworCisKK0thcmwgSGFzc2Vsc3Ryb206IEZhc3QgRGl2aXNpb24gb2YgTGFyZ2UgSW50ZWdlcnMKK3d3dy50cmVza2FsLmNvbS9rYWxsZS9leGpvYmIvb3JpZ2luYWwtcmVwb3J0LnBkZgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2JpZ251bS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvYmlnbnVtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzRmZjY3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2JpZ251bS50eHQKQEAgLTAsMCArMSw4MyBAQAorCisKK0JpZ251bSBzdXBwb3J0IChGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtIG9yIEZOVCk6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCaWdudW0gYXJpdGhtZXRpYyBpbiBsaWJtcGRlYyB1c2VzIHRoZSBzY2hlbWUgZm9yIGZhc3QgY29udm9sdXRpb24KK29mIGludGVnZXIgc2VxdWVuY2VzIGZyb206CisKK0ouIE0uIFBvbGxhcmQ6IFRoZSBmYXN0IEZvdXJpZXIgdHJhbnNmb3JtIGluIGEgZmluaXRlIGZpZWxkCitodHRwOi8vd3d3LmFtcy5vcmcvam91cm5hbHMvbWNvbS8xOTcxLTI1LTExNC9TMDAyNS01NzE4LTE5NzEtMDMwMTk2Ni0wL2hvbWUuaHRtbAorCisKK1RoZSB0cmFuc2Zvcm0gaW4gYSBmaW5pdGUgZmllbGQgY2FuIGJlIHVzZWQgZm9yIGNvbnZvbHV0aW9uIGluIHRoZSBzYW1lCit3YXkgYXMgdGhlIEZvdXJpZXIgVHJhbnNmb3JtLiBUaGUgbWFpbiBhZHZhbnRhZ2VzIG9mIHRoZSBOdW1iZXIgVGhlb3JldGljCitUcmFuc2Zvcm0gYXJlIHRoYXQgaXQgaXMgYm90aCBleGFjdCBhbmQgdmVyeSBtZW1vcnkgZWZmaWNpZW50LgorCisKK0NvbnZvbHV0aW9uIGluIHBzZXVkby1jb2RlOgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgZm50X2NvbnZvbHV0ZShhLCBiKToKKyAgICB4ID0gZm50KGEpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvcndhcmQgdHJhbnNmb3JtIG9mIGEKKyAgICB5ID0gZm50KGIpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvcndhcmQgdHJhbnNmb3JtIG9mIGIKKyAgICB6ID0gcGFpcndpc2UgbXVsdGlwbHkgeFtpXSBhbmQgeVtpXQorICAgIHJlc3VsdCA9IGludl9mbnQoeikgICAgICAgICAgICAgICAgICMgYmFja3dhcmQgdHJhbnNmb3JtIG9mIHouCisKKworRXh0ZW5kaW5nIHRoZSBtYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGggKENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWF4aW11bSB0cmFuc2Zvcm0gbGVuZ3RoIGlzIHF1aXRlIGxpbWl0ZWQgd2hlbiB1c2luZyBhIHNpbmdsZQorcHJpbWUgZmllbGQuIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBtdWx0aXBsZSBwcmltZXMgYW5kCityZWNvdmVyIHRoZSByZXN1bHQgdXNpbmcgdGhlIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0uCisKKworTXVsdGlwbGljYXRpb24gaW4gcHNldWRvLWNvZGU6Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworICBfbXBkX2ZudG11bCh1LCB2KToKKyAgICBjMSA9IGZudF9jb252b2x1dGUodSwgdiwgUDEpICAjIGNvbnZvbHV0ZSBtb2R1bG8gcHJpbWUxCisgICAgYzIgPSBmbnRfY29udm9sdXRlKHUsIHYsIFAyKSAgIyBjb252b2x1dGUgbW9kdWxvIHByaW1lMgorICAgIGMzID0gZm50X2NvbnZvbHV0ZSh1LCB2LCBQMykgICMgY29udm9sdXRlIG1vZHVsbyBwcmltZTMKKyAgICByZXN1bHQgPSBjcnQzKGMxLCBjMiwgYzMpICAgICAjIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0KKworCitPcHRpbWl6ZWQgdHJhbnNmb3JtIGZ1bmN0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGZudCgpIGZ1bmN0aW9uczoKKworICAgc3RkX2ZudDogInN0YW5kYXJkIiBkZWNpbWF0aW9uIGluIGZyZXF1ZW5jeSB0cmFuc2Zvcm0gZm9yIGFycmF5IGxlbmd0aHMKKyAgICAgICAgICAgIG9mIDIqKm4uIFBlcmZvcm1zIHdlbGwgdXAgdG8gMTAyNCB3b3Jkcy4KKworICAgc2l4c3RlcDogQ2FjaGUtZnJpZW5kbHkgYWxnb3JpdGhtIGZvciBhcnJheSBsZW5ndGhzIG9mIDIqKm4uIE91dHBlcmZvcm1zCisgICAgICAgICAgICBzdGRfZm50IGZvciBsYXJnZSBhcnJheXMuCisKKyAgIGZvdXJzdGVwOiBBbGdvcml0aG0gZm9yIGFycmF5IGxlbmd0aHMgb2YgMyAqIDIqKm4uIEFsc28gY2FjaGUgZnJpZW5kbHkKKyAgICAgICAgICAgICBpbiBsYXJnZSBwYXJ0cy4KKworCitMaXN0IG9mIGJpZ251bS1vbmx5IGZpbGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnVuY3Rpb25zIGZyb20gdGhlc2UgZmlsZXMgYXJlIG9ubHkgdXNlZCBpbiBfbXBkX2ZudG11bCgpLgorCisgIHVtb2Rhcml0aC5oICAgIC0+IGZhc3QgbG93IGxldmVsIHJvdXRpbmVzIGZvciB1bnNpZ25lZCBtb2R1bGFyIGFyaXRobWV0aWMKKyAgbnVtYmVydGhlb3J5LmMgLT4gcm91dGluZXMgZm9yIHNldHRpbmcgdXAgdGhlIEZOVAorICBkaWZyYWRpeDIuYyAgICAtPiBkZWNpbWF0aW9uIGluIGZyZXF1ZW5jeSB0cmFuc2Zvcm0sIHVzZWQgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICJiYXNlIGNhc2UiIGJ5IHRoZSBmb2xsb3dpbmcgdGhyZWUgZmlsZXM6CisKKyAgICAgIGZudC5jICAgICAgICAgIC0+IHN0YW5kYXJkIHRyYW5zZm9ybSBmb3Igc21hbGxlciBhcnJheXMKKyAgICAgIHNpeHN0ZXAuYyAgICAgIC0+IHRyYW5zZm9ybSBsYXJnZSBhcnJheXMgb2YgbGVuZ3RoIDIqKm4KKyAgICAgIGZvdXJzdGVwLmMgICAgIC0+IHRyYW5zZm9ybSBhcnJheXMgb2YgbGVuZ3RoIDMgKiAyKipuCisKKyAgY29udm9sdXRlLmMgICAgLT4gZG8gdGhlIGFjdHVhbCBmYXN0IGNvbnZvbHV0aW9uLCB1c2luZyBvbmUgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIHRocmVlIHRyYW5zZm9ybSBmdW5jdGlvbnMuCisgIHRyYW5zcG9zZS5jICAgIC0+IHRyYW5zcG9zaXRpb25zIG5lZWRlZCBmb3IgdGhlIHNpeHN0ZXAgYWxnb3JpdGhtLgorICBjcnQuYyAgICAgICAgICAtPiBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtOiB1c2UgaW5mb3JtYXRpb24gZnJvbSB0aHJlZQorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zIG1vZHVsbyB0aHJlZSBkaWZmZXJlbnQgcHJpbWVzIHRvIGdldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgcmVzdWx0LgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2ZudC5weSBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9mbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5Mzc0NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9mbnQucHkKQEAgLTAsMCArMSwyMDggQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIworIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorIworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgIFRoaXMgZmlsZSBsaXN0cyBhbmQgY2hlY2tzIHNvbWUgb2YgdGhlIGNvbnN0YW50cyBhbmQgbGltaXRzIHVzZWQgICMKKyMgIGluIGxpYm1wZGVjJ3MgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0uIEF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgICMKKyMgIHRoZXJlIGlzIGFuIGV4YW1wbGUgZnVuY3Rpb24gZm9yIHRoZSBwbGFpbiBERlQgdHJhbnNmb3JtLiAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCisjCisjIE51bWJlciB0aGVvcmV0aWMgdHJhbnNmb3JtcyBhcmUgZG9uZSBpbiBzdWJmaWVsZHMgb2YgRihwKS4gUFtpXQorIyBhcmUgdGhlIHByaW1lcywgRFtpXSA9IFBbaV0gLSAxIGFyZSBoaWdobHkgY29tcG9zaXRlIGFuZCB3W2ldCisjIGFyZSB0aGUgcmVzcGVjdGl2ZSBwcmltaXRpdmUgcm9vdHMgb2YgRihwKS4KKyMKKyMgVGhlIHN0cmF0ZWd5IGlzIHRvIGNvbnZvbHV0ZSB0d28gY29lZmZpY2llbnRzIG1vZHVsbyBhbGwgdGhyZWUKKyMgcHJpbWVzLCB0aGVuIHVzZSB0aGUgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSBvbiB0aGUgdGhyZWUKKyMgcmVzdWx0IGFycmF5cyB0byByZWNvdmVyIHRoZSByZXN1bHQgaW4gdGhlIHVzdWFsIGJhc2UgUkFESVgKKyMgZm9ybS4KKyMKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlIHJvb3RzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIworIyBWZXJpZnkgcHJpbWl0aXZlIHJvb3RzOgorIworIyBGb3IgYSBwcmltZSBmaWVsZCwgciBpcyBhIHByaW1pdGl2ZSByb290IGlmIGFuZCBvbmx5IGlmIGZvciBhbGwgcHJpbWUKKyMgZmFjdG9ycyBmIG9mIHAtMSwgcioqKChwLTEpL2YpID0vPSAxICAobW9kIHApLgorIworZGVmIHByb2QoRiwgRSk6CisgICAgIiIiQ2hlY2sgdGhhdCB0aGUgZmFjdG9yaXphdGlvbiBvZiBQLTEgaXMgY29ycmVjdC4gRiBpcyB0aGUgbGlzdCBvZgorICAgICAgIGZhY3RvcnMgb2YgUC0xLCBFIGxpc3RzIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgZWFjaCBmYWN0b3IuIiIiCisgICAgeCA9IDEKKyAgICBmb3IgeSwgeiBpbiB6aXAoRiwgRSk6CisgICAgICAgIHggKj0geSoqegorICAgIHJldHVybiB4CisKK2RlZiBpc19wcmltaXRpdmVfcm9vdChyLCBwLCBmYWN0b3JzLCBleHBvbmVudHMpOgorICAgICIiIkNoZWNrIGlmIHIgaXMgYSBwcmltaXRpdmUgcm9vdCBvZiBGKHApLiIiIgorICAgIGlmIHAgIT0gcHJvZChmYWN0b3JzLCBleHBvbmVudHMpICsgMToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZm9yIGYgaW4gZmFjdG9yczoKKyAgICAgICAgcSwgY29udHJvbCA9IGRpdm1vZChwLTEsIGYpCisgICAgICAgIGlmIGNvbnRyb2wgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBwb3cociwgcSwgcCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICBDb25zdGFudHMgYW5kIGxpbWl0cyBmb3IgdGhlIDY0LWJpdCB2ZXJzaW9uCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JBRElYID0gMTAqKjE5CisKKyMgUHJpbWVzIFAxLCBQMiBhbmQgUDM6CitQID0gWzIqKjY0LTIqKjMyKzEsIDIqKjY0LTIqKjM0KzEsIDIqKjY0LTIqKjQwKzFdCisKKyMgUC0xLCBoaWdobHkgY29tcG9zaXRlLiBUaGUgdHJhbnNmb3JtIGxlbmd0aCBkIGlzIHZhcmlhYmxlIGFuZAorIyBtdXN0IGRpdmlkZSBEID0gUC0xLiBTaW5jZSBhbGwgRCBhcmUgZGl2aXNpYmxlIGJ5IDMgKiAyKiozMiwKKyMgdHJhbnNmb3JtIGxlbmd0aHMgY2FuIGJlIDIqKm4gb3IgMyAqIDIqKm4gKHdoZXJlIG4gPD0gMzIpLgorRCA9IFsyKiozMiAqIDMgICAgKiAoNSAqIDE3ICogMjU3ICogNjU1MzcpLAorICAgICAyKiozNCAqIDMqKjIgKiAoNyAqIDExICogMzEgKiAxNTEgKiAzMzEpLAorICAgICAyKio0MCAqIDMqKjIgKiAoNSAqIDcgKiAxMyAqIDE3ICogMjQxKV0KKworIyBQcmltZSBmYWN0b3JzIG9mIFAtMSBhbmQgdGhlaXIgZXhwb25lbnRzOgorRiA9IFsoMiwzLDUsMTcsMjU3LDY1NTM3KSwgKDIsMyw3LDExLDMxLDE1MSwzMzEpLCAoMiwzLDUsNywxMywxNywyNDEpXQorRSA9IFsoMzIsMSwxLDEsMSwxKSwgKDM0LDIsMSwxLDEsMSwxKSwgKDQwLDIsMSwxLDEsMSwxKV0KKworIyBNYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGggZm9yIDIqKm4uIEFib3ZlIHRoYXQgb25seSAzICogMioqMzEKKyMgb3IgMyAqIDIqKjMyIGFyZSBwb3NzaWJsZS4KK01QRF9NQVhUUkFOU0ZPUk1fMk4gPSAyKiozMgorCisKKyMgTGltaXRzIGluIHRoZSB0ZXJtaW5vbG9neSBvZiBQb2xsYXJkJ3MgcGFwZXI6CittMiA9IChNUERfTUFYVFJBTlNGT1JNXzJOICogMykgLy8gMiAjIE1heGltdW0gbGVuZ3RoIG9mIHRoZSBzbWFsbGVyIGFycmF5LgorTTEgPSBNMiA9IFJBRElYLTEgICAgICAgICAgICAgICAgICAgIyBNYXhpbXVtIHZhbHVlIHBlciBzaW5nbGUgd29yZC4KK0wgPSBtMiAqIE0xICogTTIKK1BbMF0gKiBQWzFdICogUFsyXSA+IDIgKiBMCisKKworIyBQcmltaXRpdmUgcm9vdHMgb2YgRihQMSksIEYoUDIpIGFuZCBGKFAzKToKK3cgPSBbNywgMTAsIDE5XQorCisjIFRoZSBwcmltaXRpdmUgcm9vdHMgYXJlIGNvcnJlY3Q6Citmb3IgaSBpbiByYW5nZSgzKToKKyAgICBpZiBub3QgaXNfcHJpbWl0aXZlX3Jvb3Qod1tpXSwgUFtpXSwgRltpXSwgRVtpXSk6CisgICAgICAgIHByaW50KCJGQUlMIikKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgIENvbnN0YW50cyBhbmQgbGltaXRzIGZvciB0aGUgMzItYml0IHZlcnNpb24KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUkFESVggPSAxMCoqOQorCisjIFByaW1lcyBQMSwgUDIgYW5kIFAzOgorUCA9IFsyMTEzOTI5MjE3LCAyMDEzMjY1OTIxLCAxODExOTM5MzI5XQorCisjIFAtMSwgaGlnaGx5IGNvbXBvc2l0ZS4gQWxsIEQgPSBQLTEgYXJlIGRpdmlzaWJsZSBieSAzICogMioqMjUsCisjIGFsbG93aW5nIGZvciB0cmFuc2Zvcm0gbGVuZ3RocyB1cCB0byAzICogMioqMjUgd29yZHMuCitEID0gWzIqKjI1ICogMyoqMiAqIDcsCisgICAgIDIqKjI3ICogMyAgICAqIDUsCisgICAgIDIqKjI2ICogMyoqM10KKworIyBQcmltZSBmYWN0b3JzIG9mIFAtMSBhbmQgdGhlaXIgZXhwb25lbnRzOgorRiA9IFsoMiwzLDcpLCAoMiwzLDUpLCAoMiwzKV0KK0UgPSBbKDI1LDIsMSksICgyNywxLDEpLCAoMjYsMyldCisKKyMgTWF4aW11bSB0cmFuc2Zvcm0gbGVuZ3RoIGZvciAyKipuLiBBYm92ZSB0aGF0IG9ubHkgMyAqIDIqKjI0IG9yCisjIDMgKiAyKioyNSBhcmUgcG9zc2libGUuCitNUERfTUFYVFJBTlNGT1JNXzJOID0gMioqMjUKKworCisjIExpbWl0cyBpbiB0aGUgdGVybWlub2xvZ3kgb2YgUG9sbGFyZCdzIHBhcGVyOgorbTIgPSAoTVBEX01BWFRSQU5TRk9STV8yTiAqIDMpIC8vIDIgIyBNYXhpbXVtIGxlbmd0aCBvZiB0aGUgc21hbGxlciBhcnJheS4KK00xID0gTTIgPSBSQURJWC0xICAgICAgICAgICAgICAgICAgICMgTWF4aW11bSB2YWx1ZSBwZXIgc2luZ2xlIHdvcmQuCitMID0gbTIgKiBNMSAqIE0yCitQWzBdICogUFsxXSAqIFBbMl0gPiAyICogTAorCisKKyMgUHJpbWl0aXZlIHJvb3RzIG9mIEYoUDEpLCBGKFAyKSBhbmQgRihQMyk6Cit3ID0gWzUsIDMxLCAxM10KKworIyBUaGUgcHJpbWl0aXZlIHJvb3RzIGFyZSBjb3JyZWN0OgorZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgaWYgbm90IGlzX3ByaW1pdGl2ZV9yb290KHdbaV0sIFBbaV0sIEZbaV0sIEVbaV0pOgorICAgICAgICBwcmludCgiRkFJTCIpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICBFeGFtcGxlIHRyYW5zZm9ybSB1c2luZyBhIHNpbmdsZSBwcmltZQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBudHQobHN0LCBkaXIpOgorICAgICIiIlBlcmZvcm0gYSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnRzIG9mIGxzdC4gbGVuKGxzdCkgbXVzdAorICAgICAgIGJlIDIqKm4gb3IgMyAqIDIqKm4sIHdoZXJlIG4gPD0gMjUuIFRoaXMgaXMgdGhlIHNsb3cgREZULiIiIgorICAgIHAgPSAyMTEzOTI5MjE3ICAgICAgICAgICAgICMgcHJpbWUKKyAgICBkID0gbGVuKGxzdCkgICAgICAgICAgICAgICAjIHRyYW5zZm9ybSBsZW5ndGgKKyAgICBkX3ByaW1lID0gcG93KGQsIChwLTIpLCBwKSAjIGludmVyc2Ugb2YgZAorICAgIHhpID0gKHAtMSkvL2QKKyAgICB3ID0gNSAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW1pdGl2ZSByb290IG9mIEYocCkKKyAgICByID0gcG93KHcsIHhpLCBwKSAgICAgICAgICAgICAjIHByaW1pdGl2ZSByb290IG9mIHRoZSBzdWJmaWVsZAorICAgIHJfcHJpbWUgPSBwb3codywgKHAtMS14aSksIHApICMgaW52ZXJzZSBvZiByCisgICAgaWYgZGlyID09IDE6ICAgICAgIyBmb3J3YXJkIHRyYW5zZm9ybQorICAgICAgICBhID0gbHN0ICAgICAgICMgaW5wdXQgYXJyYXkKKyAgICAgICAgQSA9IFswXSAqIGQgICAjIHRyYW5zZm9ybWVkIHZhbHVlcworICAgICAgICBmb3IgaSBpbiByYW5nZShkKToKKyAgICAgICAgICAgIHMgPSAwCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShkKToKKyAgICAgICAgICAgICAgICBzICs9IGFbal0gKiBwb3cociwgaSpqLCBwKQorICAgICAgICAgICAgQVtpXSA9IHMgJSBwCisgICAgICAgIHJldHVybiBBCisgICAgZWxpZiBkaXIgPT0gLTE6ICMgYmFja3dhcmQgdHJhbnNmb3JtCisgICAgICAgIEEgPSBsc3QgICAgICMgaW5wdXQgYXJyYXkKKyAgICAgICAgYSA9IFswXSAqIGQgIyB0cmFuc2Zvcm1lZCB2YWx1ZXMKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoZCk6CisgICAgICAgICAgICBzID0gMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZCk6CisgICAgICAgICAgICAgICAgcyArPSBBW2ldICogcG93KHJfcHJpbWUsIGkqaiwgcCkKKyAgICAgICAgICAgIGFbal0gPSAoZF9wcmltZSAqIHMpICUgcAorICAgICAgICByZXR1cm4gYQorCitkZWYgbnR0X2NvbnZvbHV0ZShhLCBiKToKKyAgICAiIiJjb252b2x1dGUgYXJyYXlzIGEgYW5kIGIuIiIiCisgICAgYXNzZXJ0KGxlbihhKSA9PSBsZW4oYikpCisgICAgeCA9IG50dChhLCAxKQorICAgIHkgPSBudHQoYiwgMSkKKyAgICBmb3IgaSBpbiByYW5nZShsZW4oYSkpOgorICAgICAgICB5W2ldID0geVtpXSAqIHhbaV0KKyAgICByID0gbnR0KHksIC0xKQorICAgIHJldHVybiByCisKKworIyBFeGFtcGxlOiBUd28gYXJyYXlzIHJlcHJlc2VudGluZyAyMSBhbmQgODEgaW4gbGl0dGxlLWVuZGlhbjoKK2EgPSBbMSwgMiwgMCwgMF0KK2IgPSBbMSwgOCwgMCwgMF0KKworYXNzZXJ0KG50dF9jb252b2x1dGUoYSwgYikgPT0gWzEsICAgICAgICAxMCwgICAgICAgIDE2LCAgICAgICAgMF0pCithc3NlcnQoMjEgKiA4MSAgICAgICAgICAgICA9PSAoMSoxMCoqMCArIDEwKjEwKioxICsgMTYqMTAqKjIgKyAwKjEwKiozKSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tYXRyaXgtdHJhbnNmb3JtLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tYXRyaXgtdHJhbnNmb3JtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFkODVkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL21hdHJpeC10cmFuc2Zvcm0udHh0CkBAIC0wLDAgKzEsMjU2IEBACisKKworKCogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqKQorCisKK1RoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm06Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBsaWJtcGRlYywgdGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybSBbMV0gaXMgY2FsbGVkIGZvdXItc3RlcCB0cmFuc2Zvcm0KK2FmdGVyIGEgdmFyaWFudCB0aGF0IGFwcGVhcnMgaW4gWzJdLiBUaGUgYWxnb3JpdGhtIHJlcXVpcmVzIHRoYXQgdGhlIGlucHV0CithcnJheSBjYW4gYmUgdmlld2VkIGFzIGFuIFIqQyBtYXRyaXguCisKK0FsbCBvcGVyYXRpb25zIGFyZSBkb25lIG1vZHVsbyBwLiBGb3IgcmVhZGFiaWxpdHksIHRoZSBwcm9vZnMgZHJvcCBhbGwKK2luc3RhbmNlcyBvZiAobW9kIHApLgorCisKK0FsZ29yaXRobSBmb3VyLXN0ZXAgKGZvcndhcmQgdHJhbnNmb3JtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBhIDo9IGlucHV0IGFycmF5CisgIGQgOj0gbGVuKGEpID0gUiAqIEMKKyAgcCA6PSBwcmltZQorICB3IDo9IHByaW1pdGl2ZSByb290IG9mIHVuaXR5IG9mIHRoZSBwcmltZSBmaWVsZAorICByIDo9IHcqKigocC0xKS9kKQorICBBIDo9IG91dHB1dCBhcnJheQorCisgIDEpIEFwcGx5IGEgbGVuZ3RoIFIgRk5UIHRvIGVhY2ggY29sdW1uLgorCisgIDIpIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBqKkMrbSkgYnkgcioqKGoqbSkuCisKKyAgMykgQXBwbHkgYSBsZW5ndGggQyBGTlQgdG8gZWFjaCByb3cuCisKKyAgNCkgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKKworUHJvb2YgKGZvcndhcmQgdHJhbnNmb3JtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGFsZ29yaXRobSBjYW4gYmUgZGVyaXZlZCBzdGFydGluZyBmcm9tIHRoZSByZWd1bGFyIGRlZmluaXRpb24gb2YKKyAgdGhlIGZpbml0ZS1maWVsZCB0cmFuc2Zvcm0gb2YgbGVuZ3RoIGQ6CisKKyAgICAgICAgICAgIGQtMQorICAgICAgICAgICAsLS0tLQorICAgICAgICAgICBcCisgICAgQVtrXSA9ICB8ICBhW2xdICAqIHIqKihrICogbCkKKyAgICAgICAgICAgLworICAgICAgICAgICBgLS0tLQorICAgICAgICAgICBsID0gMAorCisKKyAgVGhlIHN1bSBjYW4gYmUgcmVhcnJhbmdlZCBpbnRvIHRoZSBzdW0gb2YgdGhlIHN1bXMgb2YgY29sdW1uczoKKworICAgICAgICAgICAgQy0xICAgICBSLTEKKyAgICAgICAgICAgLC0tLS0gICAsLS0tLQorICAgICAgICAgICBcICAgICAgIFwKKyAgICAgICAgID0gIHwgICAgICAgfCAgYVtpICogQyArIGpdICogcioqKGsgKiAoaSAqIEMgKyBqKSkKKyAgICAgICAgICAgLyAgICAgICAvCisgICAgICAgICAgIGAtLS0tICAgYC0tLS0KKyAgICAgICAgICAgaiA9IDAgICBpID0gMAorCisKKyAgRXh0cmFjdGluZyBhIGNvbnN0YW50IGZyb20gdGhlIGlubmVyIHN1bToKKworICAgICAgICAgICAgQy0xICAgICAgICAgICBSLTEKKyAgICAgICAgICAgLC0tLS0gICAgICAgICAsLS0tLQorICAgICAgICAgICBcICAgICAgICAgICAgIFwKKyAgICAgICAgID0gIHwgIHIqKmsqaiAgKiAgfCAgYVtpICogQyArIGpdICogcioqKGsgKiBpICogQykKKyAgICAgICAgICAgLyAgICAgICAgICAgICAvCisgICAgICAgICAgIGAtLS0tICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgaiA9IDAgICAgICAgICBpID0gMAorCisKKyAgV2l0aG91dCBhbnkgbG9zcyBvZiBnZW5lcmFsaXR5LCBsZXQgayA9IG4gKiBSICsgbSwKKyAgd2hlcmUgbiA8IEMgYW5kIG0gPCBSOgorCisgICAgICAgICAgICAgICAgQy0xICAgICAgICAgICAgICAgICAgICAgICAgICBSLTEKKyAgICAgICAgICAgICAgICwtLS0tICAgICAgICAgICAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFbbipSK21dID0gIHwgIHIqKihSKm4qaikgKiByKioobSpqKSAgKiAgfCAgYVtpKkMral0gKiByKiooUipDKm4qaSkgKiByKiooQyptKmkpCisgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgIGAtLS0tICAgICAgICAgICAgICAgICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgICAgIGogPSAwICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDAKKworCisgIFNpbmNlIHIgPSB3ICoqICgocC0xKSAvIChSKkMpKToKKworICAgICBhKSByKiooUipDKm4qaSkgPSB3KiooKHAtMSkqbippKSA9IDEKKworICAgICBiKSByKiooQyptKmkpID0gdyoqKChwLTEpIC8gUikgKiogKG0qaSkgPSByX1IgKiogKG0qaSkKKworICAgICBjKSByKiooUipuKmopID0gdyoqKChwLTEpIC8gQykgKiogKG4qaikgPSByX0MgKiogKG4qaikKKworICAgICByX1IgOj0gcm9vdCBvZiB0aGUgc3ViZmllbGQgb2YgbGVuZ3RoIFIuCisgICAgIHJfQyA6PSByb290IG9mIHRoZSBzdWJmaWVsZCBvZiBsZW5ndGggQy4KKworCisgICAgICAgICAgICAgICAgQy0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSLTEKKyAgICAgICAgICAgICAgICwtLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFbbipSK21dID0gIHwgIHJfQyoqKG4qaikgKiBbIHIqKihtKmopICAqICAgfCAgYVtpKkMral0gKiByX1IqKihtKmkpIF0KKyAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgLworICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgIHwgICAgICAgICBgLS0tLSAgICAxKSB0cmFuc2Zvcm0gdGhlIGNvbHVtbnMKKyAgICAgICAgICAgICAgIGogPSAwICAgICAgICAgICAgICAgICB8ICAgICAgICAgaSA9IDAKKyAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgYC0tIDIpIG11bHRpcGx5CisgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgYC0tIDMpIHRyYW5zZm9ybSB0aGUgcm93cworCisKKyAgIE5vdGUgdGhhdCB0aGUgZW50aXJlIFJIUyBpcyBhIGZ1bmN0aW9uIG9mIG4gYW5kIG0gYW5kIHRoYXQgdGhlIHJlc3VsdHMKKyAgIGZvciBlYWNoIHBhaXIgKG4sIG0pIGFyZSBzdG9yZWQgaW4gRm9ydHJhbiBvcmRlci4KKworICAgTGV0IHRoZSB0ZXJtIGluIHNxdWFyZSBicmFja2V0cyBiZSBmKG0sIGopLiBTdGVwIDEpIGFuZCAyKSBwcmVjYWxjdWxhdGUKKyAgIHRoZSB0ZXJtIGZvciBhbGwgKG0sIGopLiBBZnRlciB0aGF0LCB0aGUgb3JpZ2luYWwgbWF0cml4IGlzIG5vdyBhIGxvb2t1cAorICAgdGFibGUgd2l0aCB0aGUgbXRoIGVsZW1lbnQgaW4gdGhlIGp0aCBjb2x1bW4gYXQgbG9jYXRpb24gbSAqIEMgKyBqLgorCisgICBMZXQgdGhlIGNvbXBsZXRlIFJIUyBiZSBnKG0sIG4pLiBTdGVwIDMpIGRvZXMgYW4gaW4tcGxhY2UgdHJhbnNmb3JtIG9mCisgICBsZW5ndGggbiBvbiBhbGwgcm93cy4gQWZ0ZXIgdGhhdCwgdGhlIG9yaWdpbmFsIG1hdHJpeCBpcyBub3cgYSBsb29rdXAKKyAgIHRhYmxlIHdpdGggdGhlIG10aCBlbGVtZW50IGluIHRoZSBudGggY29sdW1uIGF0IGxvY2F0aW9uIG0gKiBDICsgbi4KKworICAgQnV0IGVhY2ggKG0sIG4pIHBhaXIgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9jYXRpb24gbiAqIFIgKyBtLiBUaGVyZWZvcmUsCisgICBzdGVwIDQpIHRyYW5zcG9zZXMgdGhlIHJlc3VsdCBvZiBzdGVwIDMpLgorCisKKworQWxnb3JpdGhtIGZvdXItc3RlcCAoaW52ZXJzZSB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEEgIDo9IGlucHV0IGFycmF5CisgIGQgIDo9IGxlbihBKSA9IFIgKiBDCisgIHAgIDo9IHByaW1lCisgIGQnIDo9IGQqKihwLTIpICAgICAgICAgICAgICMgaW52ZXJzZSBvZiBkCisgIHcgIDo9IHByaW1pdGl2ZSByb290IG9mIHVuaXR5IG9mIHRoZSBwcmltZSBmaWVsZAorICByICA6PSB3KiooKHAtMSkvZCkgICAgICAgICAjIHJvb3Qgb2YgdGhlIHN1YmZpZWxkCisgIHInIDo9IHcqKigocC0xKSAtIChwLTEpL2QpICMgaW52ZXJzZSBvZiByCisgIGEgIDo9IG91dHB1dCBhcnJheQorCisgIDApIFZpZXcgdGhlIG1hdHJpeCBhcyBhIEMqUiBtYXRyaXguCisKKyAgMSkgVHJhbnNwb3NlIHRoZSBtYXRyaXgsIHByb2R1Y2luZyBhbiBSKkMgbWF0cml4LgorCisgIDIpIEFwcGx5IGEgbGVuZ3RoIEMgRk5UIHRvIGVhY2ggcm93LgorCisgIDMpIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMrbikgYnkgcioqKGkqbikuCisKKyAgNCkgQXBwbHkgYSBsZW5ndGggUiBGTlQgdG8gZWFjaCBjb2x1bW4uCisKKworUHJvb2YgKGludmVyc2UgdHJhbnNmb3JtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGFsZ29yaXRobSBjYW4gYmUgZGVyaXZlZCBzdGFydGluZyBmcm9tIHRoZSByZWd1bGFyIGRlZmluaXRpb24gb2YKKyAgdGhlIGZpbml0ZS1maWVsZCBpbnZlcnNlIHRyYW5zZm9ybSBvZiBsZW5ndGggZDoKKworICAgICAgICAgICAgICAgICAgZC0xCisgICAgICAgICAgICAgICAgICwtLS0tCisgICAgICAgICAgICAgICAgIFwKKyAgICBhW2tdID0gIGQnICogIHwgIEFbbF0gICogcicgKiogKGsgKiBsKQorICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgICAgICAgIGwgPSAwCisKKworICBUaGUgc3VtIGNhbiBiZSByZWFycmFuZ2VkIGludG8gdGhlIHN1bSBvZiB0aGUgc3VtcyBvZiBjb2x1bW5zLiBOb3RlCisgIHRoYXQgYXQgdGhpcyBzdGFnZSB3ZSBzdGlsbCBoYXZlIGEgQypSIG1hdHJpeCwgc28gQyBkZW5vdGVzIHRoZSBudW1iZXIKKyAgb2Ygcm93czoKKworICAgICAgICAgICAgICAgICAgUi0xICAgICBDLTEKKyAgICAgICAgICAgICAgICAgLC0tLS0gICAsLS0tLQorICAgICAgICAgICAgICAgICBcICAgICAgIFwKKyAgICAgICAgID0gIGQnICogIHwgICAgICAgfCAgYVtqICogUiArIGldICogcicgKiogKGsgKiAoaiAqIFIgKyBpKSkKKyAgICAgICAgICAgICAgICAgLyAgICAgICAvCisgICAgICAgICAgICAgICAgIGAtLS0tICAgYC0tLS0KKyAgICAgICAgICAgICAgICAgaSA9IDAgICBqID0gMAorCisKKyAgRXh0cmFjdGluZyBhIGNvbnN0YW50IGZyb20gdGhlIGlubmVyIHN1bToKKworICAgICAgICAgICAgICAgICAgUi0xICAgICAgICAgICAgICAgIEMtMQorICAgICAgICAgICAgICAgICAsLS0tLSAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgID0gIGQnICogIHwgIHInICoqIChrKmkpICAqICB8ICBhW2ogKiBSICsgaV0gKiByJyAqKiAoayAqIGogKiBSKQorICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgLworICAgICAgICAgICAgICAgICBgLS0tLSAgICAgICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgICAgICAgaSA9IDAgICAgICAgICAgICAgIGogPSAwCisKKworICBXaXRob3V0IGFueSBsb3NzIG9mIGdlbmVyYWxpdHksIGxldCBrID0gbSAqIEMgKyBuLAorICB3aGVyZSBtIDwgUiBhbmQgbiA8IEM6CisKKyAgICAgICAgICAgICAgICAgICAgIFItMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLTEKKyAgICAgICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwtLS0tCisgICAgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVttKkMrbl0gPSBkJyAqICB8ICByJyAqKiAoQyptKmkpICogIHInICoqIChuKmkpICAgKiAgfCAgYVtqKlIraV0gKiByJyAqKiAoUipDKm0qaikgKiByJyAqKiAoUipuKmopCisgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICAgICAgIGAtLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLS0tLQorICAgICAgICAgICAgICAgICAgICBpID0gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IDAKKworCisgIFNpbmNlIHInID0gdyoqKChwLTEpIC0gKHAtMSkvZCkgYW5kIGQgPSBSKkM6CisKKyAgICAgYSkgcicgKiogKFIqQyptKmopID0gdyoqKChwLTEpKlIqQyptKmogLSAocC0xKSptKmopID0gMQorCisgICAgIGIpIHInICoqIChDKm0qaSkgPSB3KiooKHAtMSkqQyAtIChwLTEpL1IpICoqIChtKmkpID0gcl9SJyAqKiAobSppKQorCisgICAgIGMpIHInICoqIChSKm4qaikgPSByX0MnICoqIChuKmopCisKKyAgICAgZCkgZCcgPSBkKioocC0yKSA9IChSKkMpICoqIChwLTIpID0gUioqKHAtMikgKiBDKioocC0yKSA9IFInICogQycKKworICAgICByX1InIDo9IGludmVyc2Ugb2YgdGhlIHJvb3Qgb2YgdGhlIHN1YmZpZWxkIG9mIGxlbmd0aCBSLgorICAgICByX0MnIDo9IGludmVyc2Ugb2YgdGhlIHJvb3Qgb2YgdGhlIHN1YmZpZWxkIG9mIGxlbmd0aCBDLgorICAgICBSJyAgIDo9IGludmVyc2Ugb2YgUgorICAgICBDJyAgIDo9IGludmVyc2Ugb2YgQworCisKKyAgICAgICAgICAgICAgICAgICAgIFItMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQy0xCisgICAgICAgICAgICAgICAgICAgICwtLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLC0tLS0gIDIpIHRyYW5zZm9ybSB0aGUgcm93cyBvZiBhXlQKKyAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVttKkMrbl0gPSBSJyAqICB8ICByX1InICoqIChtKmkpICogWyByJyAqKiAobippKSAqIEMnICogIHwgIGFbaipSK2ldICogcl9DJyAqKiAobipqKSBdCisgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgLyAgICAgICBeCisgICAgICAgICAgICAgICAgICAgIGAtLS0tICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgYC0tLS0gICB8CisgICAgICAgICAgICAgICAgICAgIGkgPSAwICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgaiA9IDAgICB8CisgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICBgLS0gMSkgVHJhbnNwb3NlIGlucHV0IG1hdHJpeAorICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgYC0tIDMpIG11bHRpcGx5ICAgICAgICAgICAgIHRvIGFkZHJlc3MgZWxlbWVudHMgYnkKKyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICogQyArIGoKKyAgICAgICAgICAgICAgICAgICAgICBgLS0gMykgdHJhbnNmb3JtIHRoZSBjb2x1bW5zCisKKworCisgICBOb3RlIHRoYXQgdGhlIGVudGlyZSBSSFMgaXMgYSBmdW5jdGlvbiBvZiBtIGFuZCBuIGFuZCB0aGF0IHRoZSByZXN1bHRzCisgICBmb3IgZWFjaCBwYWlyIChtLCBuKSBhcmUgc3RvcmVkIGluIEMgb3JkZXIuCisKKyAgIExldCB0aGUgdGVybSBpbiBzcXVhcmUgYnJhY2tldHMgYmUgZihuLCBpKS4gV2l0aG91dCBzdGVwIDEpLCB0aGUgc3VtCisgICB3b3VsZCBwZXJmb3JtIGEgbGVuZ3RoIEMgdHJhbnNmb3JtIG9uIHRoZSBjb2x1bW5zIG9mIHRoZSBpbnB1dCBtYXRyaXguCisgICBUaGlzIGlzIGEpIGluZWZmaWNpZW50IGFuZCBiKSB0aGUgcmVzdWx0cyBhcmUgbmVlZGVkIGluIEMgb3JkZXIsIHNvCisgICBzdGVwIDEpIGV4Y2hhbmdlcyByb3dzIGFuZCBjb2x1bW5zLgorCisgICBTdGVwIDIpIGFuZCAzKSBwcmVjYWxjdWxhdGUgZihuLCBpKSBmb3IgYWxsIChuLCBpKS4gQWZ0ZXIgdGhhdCwgdGhlCisgICBvcmlnaW5hbCBtYXRyaXggaXMgbm93IGEgbG9va3VwIHRhYmxlIHdpdGggdGhlIGl0aCBlbGVtZW50IGluIHRoZSBudGgKKyAgIGNvbHVtbiBhdCBsb2NhdGlvbiBpICogQyArIG4uCisKKyAgIExldCB0aGUgY29tcGxldGUgUkhTIGJlIGcobSwgbikuIFN0ZXAgNCkgZG9lcyBhbiBpbi1wbGFjZSB0cmFuc2Zvcm0gb2YKKyAgIGxlbmd0aCBtIG9uIGFsbCBjb2x1bW5zLiBBZnRlciB0aGF0LCB0aGUgb3JpZ2luYWwgbWF0cml4IGlzIG5vdyBhIGxvb2t1cAorICAgdGFibGUgd2l0aCB0aGUgbXRoIGVsZW1lbnQgaW4gdGhlIG50aCBjb2x1bW4gYXQgbG9jYXRpb24gbSAqIEMgKyBuLAorICAgd2hpY2ggbWVhbnMgdGhhdCBhbGwgQVtrXSA9IEFbbSAqIEMgKyBuXSBhcmUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCisKKworLS0KKworICBbMV0gSm9lcmcgQXJuZHQ6ICJNYXR0ZXJzIENvbXB1dGF0aW9uYWwiCisgICAgICBodHRwOi8vd3d3Lmpqai5kZS9meHQvCisgIFsyXSBEYXZpZCBILiBCYWlsZXk6IEZGVHMgaW4gRXh0ZXJuYWwgb3IgSGllcmFyY2hpY2FsIE1lbW9yeQorICAgICAgaHR0cDovL2NyZC5sYmwuZ292L35kaGJhaWxleS9kaGJwYXBlcnMvCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLTY0LnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYmYyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLTY0LnR4dApAQCAtMCwwICsxLDEyNyBAQAorCisKKygqIENvcHlyaWdodCAoYykgMjAxMSBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKikKKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgIENhbGN1bGF0ZSAoYSAqIGIpICUgcCB1c2luZyBzcGVjaWFsIHByaW1lcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBkZXNjcmlwdGlvbiBvZiB0aGUgYWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgYXBmbG9hdCBtYW51YWwgYnkKK1RvbW1pbGEgWzFdLgorCisKK0RlZmluaXRpb25zOgorLS0tLS0tLS0tLS0tCisKK0luIHRoZSB3aG9sZSBkb2N1bWVudCwgIj09IiBzdGFuZHMgZm9yICJpcyBjb25ncnVlbnQgd2l0aCIuCisKK1Jlc3VsdCBvZiBhICogYiBpbiB0ZXJtcyBvZiBoaWdoL2xvdyB3b3JkczoKKworICAgKDEpIGhpICogMioqNjQgKyBsbyA9IGEgKiBiCisKK1NwZWNpYWwgcHJpbWVzOgorCisgICAoMikgcCA9IDIqKjY0IC0geiArIDEsIHdoZXJlIHogPSAyKipuCisKK1NpbmdsZSBzdGVwIG1vZHVsYXIgcmVkdWN0aW9uOgorCisgICAoMykgUihoaSwgbG8pID0gaGkgKiB6IC0gaGkgKyBsbworCisKK1N0cmF0ZWd5OgorLS0tLS0tLS0tCisKKyAgIGEpIFNldCAoaGksIGxvKSB0byB0aGUgcmVzdWx0IG9mIGEgKiBiLgorCisgICBiKSBTZXQgKGhpJywgbG8nKSB0byB0aGUgcmVzdWx0IG9mIFIoaGksIGxvKS4KKworICAgYykgUmVwZWF0IHN0ZXAgYikgdW50aWwgMCA8PSBoaScgKiAyKio2NCArIGxvJyA8IDIqcC4KKworICAgZCkgSWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gcCwgcmV0dXJuIGxvJy4gT3RoZXJ3aXNlIHJldHVybiBsbycgLSBwLgorCisKK1RoZSByZWR1Y3Rpb24gc3RlcCBiKSBwcmVzZXJ2ZXMgY29uZ3J1ZW5jZToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGhpICogMioqNjQgKyBsbyA9PSBoaSAqIHogLSBoaSArIGxvICAgKG1vZCBwKQorCisgICAgUHJvb2Y6CisgICAgfn5+fn5+CisKKyAgICAgICBoaSAqIDIqKjY0ICsgbG8gPSAoMioqNjQgLSB6ICsgMSkgKiBoaSArIHogKiBoaSAtIGhpICsgbG8KKworICAgICAgICAgICAgICAgICAgICAgICA9IHAgKiBoaSAgICAgICAgICAgICAgICsgeiAqIGhpIC0gaGkgKyBsbworCisgICAgICAgICAgICAgICAgICAgICAgID09IHogKiBoaSAtIGhpICsgbG8gICAobW9kIHApCisKKworTWF4aW11bSBudW1iZXJzIG9mIHN0ZXAgYik6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUbyBhdm9pZCB1bm5lY2Nlc3NhcnkgZm9ybWFsaXNtLCBkZWZpbmU6CisKK2RlZiBSKGhpLCBsbywgeik6CisgICAgIHJldHVybiBkaXZtb2QoaGkgKiB6IC0gaGkgKyBsbywgMioqNjQpCisKKyMgRm9yIHNpbXBsaWNpdHksIGFzc3VtZSBoaT0yKio2NC0xLCBsbz0yKio2NC0xIGFmdGVyIHRoZQorIyBpbml0aWFsIG11bHRpcGxpY2F0aW9uIGEgKiBiLiBUaGlzIGlzIG9mIGNvdXJzZSBpbXBvc3NpYmxlCisjIGJ1dCBjZXJ0YWlubHkgY292ZXJzIGFsbCBjYXNlcy4KKworIyBUaGVuLCBmb3IgcDE6CitoaT0yKio2NC0xOyBsbz0yKio2NC0xOyB6PTIqKjMyCitwMSA9IDIqKjY0IC0geiArIDEKKworaGksIGxvID0gUihoaSwgbG8sIHopICAgICMgRmlyc3QgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBTZWNvbmQgcmVkdWN0aW9uCitoaSAqIDIqKjY0ICsgbG8gPCAyICogcDEgIyBUcnVlCisKKyMgRm9yIHAyOgoraGk9MioqNjQtMTsgbG89MioqNjQtMTsgej0yKiozNAorcDIgPSAyKio2NCAtIHogKyAxCisKK2hpLCBsbyA9IFIoaGksIGxvLCB6KSAgICAjIEZpcnN0IHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgU2Vjb25kIHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgVGhpcmQgcmVkdWN0aW9uCitoaSAqIDIqKjY0ICsgbG8gPCAyICogcDIgIyBUcnVlCisKKyMgRm9yIHAzOgoraGk9MioqNjQtMTsgbG89MioqNjQtMTsgej0yKio0MAorcDMgPSAyKio2NCAtIHogKyAxCisKK2hpLCBsbyA9IFIoaGksIGxvLCB6KSAgICAjIEZpcnN0IHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgU2Vjb25kIHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgVGhpcmQgcmVkdWN0aW9uCitoaSAqIDIqKjY0ICsgbG8gPCAyICogcDMgIyBUcnVlCisKKworU3RlcCBkKSBwcmVzZXJ2ZXMgY29uZ3J1ZW5jZSBhbmQgeWllbGRzIGEgcmVzdWx0IDwgcDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIENhc2UgaGkgPSAwOgorCisgICAgICAgQ2FzZSBsbyA8IHA6IHRyaXZpYWwuCisKKyAgICAgICBDYXNlIGxvID49IHA6CisKKyAgICAgICAgICBsbyA9PSBsbyAtIHAgICAobW9kIHApICAgICAgICAgICAgICMgcmVzdWx0IGlzIGNvbmdydWVudAorCisgICAgICAgICAgcCA8PSBsbyA8IDIqcCAgLT4gIDAgPD0gbG8gLSBwIDwgcCAjIHJlc3VsdCBpcyBpbiB0aGUgY29ycmVjdCByYW5nZQorCisgICBDYXNlIGhpID0gMToKKworICAgICAgIHAgPCAyKio2NCAvXCAyKio2NCArIGxvIDwgMipwICAtPiAgbG8gPCBwICAjIGxvIGlzIGFsd2F5cyBsZXNzIHRoYW4gcAorCisgICAgICAgMioqNjQgKyBsbyA9PSAyKio2NCArIChsbyAtIHApICAgKG1vZCBwKSAgICMgcmVzdWx0IGlzIGNvbmdydWVudAorCisgICAgICAgICAgICAgICAgICA9IGxvIC0gcCAgICMgZXhhY3RseSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcHJldmlvdXMgUkhTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdWludDY0X3QgYXJpdGhtZXRpYy4KKworICAgICAgIHAgPCAyKio2NCArIGxvIDwgMipwICAtPiAgMCA8IDIqKjY0ICsgKGxvIC0gcCkgPCBwICAjIGNvcnJlY3QgcmFuZ2UKKworCisKK1sxXSAgaHR0cDovL3d3dy5hcGZsb2F0Lm9yZy9hcGZsb2F0LzIuNDAvYXBmbG9hdC5wZGYKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLXBwcm8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMTdhOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLXBwcm8udHh0CkBAIC0wLDAgKzEsMjY5IEBACisKKworKCogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqKQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgIENhbGN1bGF0ZSAoYSAqIGIpICUgcCB1c2luZyB0aGUgODAtYml0IHg4NyBGUFUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBhcGZsb2F0IG1hbnVhbCBieQorVG9tbWlsYSBbMV0uCisKK1RoZSBwcm9vZiBmb2xsb3dzIGFuIGFyZ3VtZW50IG1hZGUgYnkgR3Jhbmx1bmQvTW9udGdvbWVyeSBpbiBbMl0uCisKKworRGVmaW5pdGlvbnMgYW5kIGFzc3VtcHRpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgODAtYml0IGV4dGVuZGVkIHByZWNpc2lvbiBmb3JtYXQgdXNlcyA2NCBiaXRzIGZvciB0aGUgc2lnbmlmaWNhbmQ6CisKKyAgKDEpIEYgPSA2NAorCitUaGUgbW9kdWx1cyBpcyBwcmltZSBhbmQgbGVzcyB0aGFuIDIqKjMxOgorCisgICgyKSAyIDw9IHAgPCAyKiozMQorCitUaGUgZmFjdG9ycyBhcmUgbGVzcyB0aGFuIHA6CisKKyAgKDMpIDAgPD0gYSA8IHAKKyAgKDQpIDAgPD0gYiA8IHAKKworVGhlIHByb2R1Y3QgYSAqIGIgaXMgbGVzcyB0aGFuIDIqKjYyIGFuZCBpcyB0aHVzIGV4YWN0IGluIDY0IGJpdHM6CisKKyAgKDUpIG4gPSBhICogYgorCitUaGUgcHJvZHVjdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gdGVybXMgb2YgcXVvdGllbnQgYW5kIHJlbWFpbmRlcjoKKworICAoNikgbiA9IHEgKiBwICsgcgorCitVc2luZyAoMyksICg0KSBhbmQgdGhlIGZhY3QgdGhhdCBwIGlzIHByaW1lLCB0aGUgcmVtYWluZGVyIGlzIGFsd2F5cworZ3JlYXRlciB0aGFuIHplcm86CisKKyAgKDcpIDAgPD0gcSA8IHAgIC9cICAxIDw9IHIgPCBwCisKKworU3RyYXRlZ3k6CistLS0tLS0tLS0KKworUHJlY2FsY3VsYXRlIHRoZSA4MC1iaXQgbG9uZyBkb3VibGUgaW52ZXJzZSBvZiBwLCB3aXRoIGEgbWF4aW11bQorcmVsYXRpdmUgZXJyb3Igb2YgMioqKDEtRik6CisKKyAgKDgpIHBpbnYgPSAobG9uZyBkb3VibGUpMS4wIC8gcAorCitDYWxjdWxhdGUgYW4gZXN0aW1hdGUgZm9yIHEgPSBmbG9vcihuL3ApLiBUaGUgbXVsdGlwbGljYXRpb24gaGFzIGFub3RoZXIKK21heGltdW0gcmVsYXRpdmUgZXJyb3Igb2YgMioqKDEtRik6CisKKyAgKDkpIHFlc3QgPSBuICogcGludgorCitJZiB3ZSBjYW4gc2hvdyB0aGF0IHEgPCBxZXN0IDwgcSsxLCB0aGVuIHRydW5jKHFlc3QpID0gcS4gSXQgaXMgdGhlbgorZWFzeSB0byByZWNvdmVyIHRoZSByZW1haW5kZXIgci4gVGhlIGNvbXBsZXRlIGFsZ29yaXRobSBpczoKKworICBhKSBTZXQgdGhlIGNvbnRyb2wgd29yZCB0byA2NC1iaXQgcHJlY2lzaW9uIGFuZCB0cnVuY2F0aW9uIG1vZGUuCisKKyAgYikgbiA9IGEgKiBiICAgICAgICAgICAgICAjIENhbGN1bGF0ZSBleGFjdCBwcm9kdWN0LgorCisgIGMpIHFlc3QgPSBuICogcGludiAgICAgICAgIyBDYWxjdWxhdGUgZXN0aW1hdGUgZm9yIHRoZSBxdW90aWVudC4KKworICBkKSBxID0gKHFlc3QrMioqNjMpLTIqKjYzICMgVHJ1bmNhdGUgcWVzdCB0byB0aGUgZXhhY3QgcXVvdGllbnQuCisKKyAgZikgciA9IG4gLSBxICogcCAgICAgICAgICAjIENhbGN1bGF0ZSByZW1haW5kZXIuCisKKworUHJvb2YgZm9yIHEgPCBxZXN0IDwgcSsxOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVc2luZyB0aGUgY3VtdWxhdGl2ZSBlcnJvciwgdGhlIGVycm9yIGJvdW5kcyBmb3IgcWVzdCBhcmU6CisKKyAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgICAgICAgICBuICogKDEgKyAyKiooMS1GKSkqKjIKKyAgKDkpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSA8PSBxZXN0IDw9ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIHAgKiAoMSArIDIqKigxLUYpKSoqMiAgICAgICAgICAgICAgICAgICAgICAgcAorCisKKyAgTGVtbWEgMToKKyAgLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgICAgICBxICogcCArIHIKKyAgICAoMTApIHEgPCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICBwICogKDEgKyAyKiooMS1GKSkqKjIgICBwICogKDEgKyAyKiooMS1GKSkqKjIKKworCisgICAgUHJvb2Y6CisgICAgfn5+fn5+CisKKyAgICAoSSkgICAgIHEgKiBwICogKDEgKyAyKiooMS1GKSkqKjIgPCBxICogcCArIHIKKworICAgIChJSSkgICAgcSAqIHAgKiAyKiooMi1GKSArIHEgKiBwICogMioqKDItMipGKSA8IHIKKworICAgIFVzaW5nICgxKSBhbmQgKDcpLCBpdCBpcyBzdWZmaWNpZW50IHRvIHNob3cgdGhhdDoKKworICAgIChJSUkpICAgcSAqIHAgKiAyKiooLTYyKSArIHEgKiBwICogMioqKC0xMjYpIDwgMSA8PSByCisKKyAgICAoSUlJKSBjYW4gZWFzaWx5IGJlIHZlcmlmaWVkIGJ5IHN1YnN0aXR1dGluZyB0aGUgbGFyZ2VzdCBwb3NzaWJsZQorICAgIHZhbHVlcyBwID0gMioqMzEtMSBhbmQgcSA9IDIqKjMxLTIuCisKKyAgICBUaGUgY3JpdGljYWwgY2FzZXMgb2NjdXIgd2hlbiByID0gMSwgbiA9IG0gKiBwICsgMS4gVGhlc2UgY2FzZXMKKyAgICBjYW4gYmUgZXhoYXVzdGl2ZWx5IHZlcmlmaWVkIHdpdGggYSB0ZXN0IHByb2dyYW0uCisKKworICBMZW1tYSAyOgorICAtLS0tLS0tLQorCisgICAgICAgICAgIG4gKiAoMSArIDIqKigxLUYpKSoqMiAgICAgKHEgKiBwICsgcikgKiAoMSArIDIqKigxLUYpKSoqMgorICAgICgxMSkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gID0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIDwgIHEgKyAxCisgICAgICAgICAgICAgICAgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcAorCisgICAgUHJvb2Y6CisgICAgfn5+fn5+CisKKyAgICAoSSkgIChxICogcCArIHIpICsgKHEgKiBwICsgcikgKiAyKiooMi1GKSArIChxICogcCArIHIpICogMioqKDItMipGKSA8IHEgKiBwICsgcAorCisgICAgKElJKSAgKHEgKiBwICsgcikgKiAyKiooMi1GKSArIChxICogcCArIHIpICogMioqKDItMipGKSA8IHAgLSByCisKKyAgICBVc2luZyAoMSkgYW5kICg3KSwgaXQgaXMgc3VmZmljaWVudCB0byBzaG93IHRoYXQ6CisKKyAgICAoSUlJKSAocSAqIHAgKyByKSAqIDIqKigtNjIpICsgKHEgKiBwICsgcikgKiAyKiooLTEyNikgPCAxIDw9IHAgLSByCisKKyAgICAoSUlJKSBjYW4gZWFzaWx5IGJlIHZlcmlmaWVkIGJ5IHN1YnN0aXR1dGluZyB0aGUgbGFyZ2VzdCBwb3NzaWJsZQorICAgIHZhbHVlcyBwID0gMioqMzEtMSwgcSA9IDIqKjMxLTIgYW5kIHIgPSAyKiozMS0yLgorCisgICAgVGhlIGNyaXRpY2FsIGNhc2VzIG9jY3VyIHdoZW4gciA9IChwIC0gMSksIG4gPSBtICogcCAtIDEuIFRoZXNlIGNhc2VzCisgICAgY2FuIGJlIGV4aGF1c3RpdmVseSB2ZXJpZmllZCB3aXRoIGEgdGVzdCBwcm9ncmFtLgorCisKK1sxXSAgaHR0cDovL3d3dy5hcGZsb2F0Lm9yZy9hcGZsb2F0LzIuNDAvYXBmbG9hdC5wZGYKK1syXSAgaHR0cDovL2dtcGxpYi5vcmcvfnRlZ2UvZGl2Y25zdC1wbGRpOTQucGRmCisgICAgIFtTZWN0aW9uIDc6ICJVc2Ugb2YgZmxvYXRpbmcgcG9pbnQiXQorCisKKworKCogQ29xIHByb29mIGZvciAoMTApIGFuZCAoMTEpICopCisKK1JlcXVpcmUgSW1wb3J0IFpBcml0aC4KK1JlcXVpcmUgSW1wb3J0IFFBcml0aC4KK1JlcXVpcmUgSW1wb3J0IFFwb3dlci4KK1JlcXVpcmUgSW1wb3J0IFFhYnMuCitSZXF1aXJlIEltcG9ydCBQc2F0ei4KKworT3BlbiBTY29wZSBRX3Njb3BlLgorCisKK0x0YWMgcXJlZHVjZSBUIDo9CisgIHJld3JpdGUgPC0gKFFyZWRfY29ycmVjdCAoVCkpOyBzaW1wbCAoUXJlZCAoVCkpLgorCitUaGVvcmVtIFFsdF9tb3ZlX3JpZ2h0IDoKKyAgZm9yYWxsIHggeSB6OlEsIHggKyB6IDwgeSA8LT4geCA8IHkgLSB6LgorUHJvb2YuCisgIGludHJvcy4KKyAgc3BsaXQuCisgICAgaW50cm9zLgorICAgIHBzYXR6bCBRLgorICAgIGludHJvcy4KKyAgICBwc2F0emwgUS4KK1FlZC4KKworVGhlb3JlbSBRbHRfbXVsdF9ieV96IDoKKyAgZm9yYWxsIHggeSB6OlEsIDAgPCB6IC0+ICh4IDwgeSA8LT4geCAqIHogPCB5ICogeikuCitQcm9vZi4KKyAgaW50cm9zLgorICBzcGxpdC4KKyAgICBpbnRyb3MuCisgICAgYXBwbHkgUW11bHRfbHRfY29tcGF0X3IuIHRyaXZpYWwuIHRyaXZpYWwuCisgICAgaW50cm9zLgorICAgIHJld3JpdGUgPC0gKFFkaXZfbXVsdF9sIHggeikuIHJld3JpdGUgPC0gKFFkaXZfbXVsdF9sIHkgeikuCisgICAgYXBwbHkgUW11bHRfbHRfY29tcGF0X3IuCisgICAgYXBwbHkgUWx0X3NoaWZ0X2ludl9sLgorICAgIHRyaXZpYWwuIHBzYXR6bCBRLiB0cml2aWFsLiBwc2F0emwgUS4gcHNhdHpsIFEuCitRZWQuCisKK1RoZW9yZW0gUWxlX211bHRfcXVhZCA6CisgIGZvcmFsbCAoYSBiIGMgZDpRKSwKKyAgICAwIDw9IGEgLT4gYSA8PSBjIC0+CisgICAgMCA8PSBiIC0+IGIgPD0gZCAtPgorICAgICAgYSAqIGIgPD0gYyAqIGQuCisgIGludHJvcy4KKyAgcHNhdHogUS4KK1FlZC4KKworCitUaGVvcmVtIHFfbHRfcWVzdDoKKyAgZm9yYWxsIChwIHEgcjpRKSwKKyAgICAoMCA8IHApIC0+IChwIDw9ICgyIzEpXjMxIC0gMSkgLT4KKyAgICAoMCA8PSBxKSAtPiAocSA8PSBwIC0gMSkgLT4KKyAgICAoMSA8PSByKSAtPiAociA8PSBwIC0gMSkgLT4KKyAgICAgIHEgPCAocSAqIHAgKyByKSAvIChwICogKDEgKyAoMiMxKV4oLTYzKSleMikuCitQcm9vZi4KKyAgaW50cm9zLgorICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSAocCAqICgxICsgKDIjMSleKC02MykpXjIpKS4KKworICB1bmZvbGQgUWRpdi4KKyAgcmV3cml0ZSA8LSBRbXVsdF9hc3NvYy4KKyAgcmV3cml0ZSAoUW11bHRfY29tbSAoLyAocCAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpKSAocCAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpKS4KKyAgcmV3cml0ZSBRbXVsdF9pbnZfci4KKyAgcmV3cml0ZSBRbXVsdF8xX3IuCisKKyAgYXNzZXJ0IChxICogKHAgKiAoMSArICgyICMgMSkgXiAoLTYzKSkgXiAyKSA9PSBxICogcCArIChxICogcCkgKiAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkpLgorICBxcmVkdWNlICgoMSArICgyICMgMSkgXiAoLTYzKSkgXiAyKS4KKyAgcXJlZHVjZSAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkuCisgIHJpbmdfc2ltcGxpZnkuCisgIHJlZmxleGl2aXR5LgorICByZXdyaXRlIEg1LgorCisgIHJld3JpdGUgUXBsdXNfY29tbS4KKyAgcmV3cml0ZSBRbHRfbW92ZV9yaWdodC4KKyAgcmluZ19zaW1wbGlmeSAocSAqIHAgKyByIC0gcSAqIHApLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKworICBhcHBseSBRbHRfbGVfdHJhbnMgd2l0aCAoeSA6PSAxKS4KKyAgcmV3cml0ZSBRbHRfbXVsdF9ieV96IHdpdGggKHogOj0gODUwNzA1OTE3MzAyMzQ2MTU4NjU4NDM2NTE4NTc5NDIwNTI4NjQgIyAxODQ0Njc0NDA3MzcwOTU1MTYxNykuCisgIHJpbmdfc2ltcGxpZnkuCisKKyAgYXBwbHkgUWxlX2x0X3RyYW5zIHdpdGggKHkgOj0gKCgyICMgMSkgXiAzMSAtICgyIzEpKSAqICgoMiAjIDEpIF4gMzEgLSAxKSkuCisgIGFwcGx5IFFsZV9tdWx0X3F1YWQuCisgIGFzc3VtcHRpb24uIHBzYXR6bCBRLiBwc2F0emwgUS4gcHNhdHpsIFEuIHBzYXR6bCBRLiBwc2F0emwgUS4gYXNzdW1wdGlvbi4gcHNhdHpsIFEuIHBzYXR6bCBRLgorUWVkLgorCitUaGVvcmVtIHFlc3RfbHRfcXBsdXMxOgorICBmb3JhbGwgKHAgcSByOlEpLAorICAgICgwIDwgcCkgLT4gKHAgPD0gKDIjMSleMzEgLSAxKSAtPgorICAgICgwIDw9IHEpIC0+IChxIDw9IHAgLSAxKSAtPgorICAgICgxIDw9IHIpIC0+IChyIDw9IHAgLSAxKSAtPgorICAgICAgKChxICogcCArIHIpICogKDEgKyAoMiMxKV4oLTYzKSleMikgLyBwIDwgcSArIDEuCitQcm9vZi4KKyAgaW50cm9zLgorICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSBwKS4KKworICB1bmZvbGQgUWRpdi4KKyAgcmV3cml0ZSA8LSBRbXVsdF9hc3NvYy4KKyAgcmV3cml0ZSAoUW11bHRfY29tbSAoLyBwKSBwKS4KKyAgcmV3cml0ZSBRbXVsdF9pbnZfci4KKyAgcmV3cml0ZSBRbXVsdF8xX3IuCisKKyAgYXNzZXJ0ICgocSAqIHAgKyByKSAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIgPT0gcSAqIHAgKyByICsgKHEgKiBwICsgcikgKiAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkpLgorICBxcmVkdWNlICgoMSArICgyICMgMSkgXiAoLTYzKSkgXiAyKS4KKyAgcXJlZHVjZSAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkuCisgIHJpbmdfc2ltcGxpZnkuIHJlZmxleGl2aXR5LgorICByZXdyaXRlIEg1LgorCisgIHJld3JpdGUgPC0gUXBsdXNfYXNzb2MuIHJld3JpdGUgPC0gUXBsdXNfY29tbS4gcmV3cml0ZSBRbHRfbW92ZV9yaWdodC4KKyAgcmluZ19zaW1wbGlmeSAoKHEgKyAxKSAqIHAgLSBxICogcCkuCisKKyAgcmV3cml0ZSA8LSBRcGx1c19jb21tLiByZXdyaXRlIFFsdF9tb3ZlX3JpZ2h0LgorCisgIGFwcGx5IFFsdF9sZV90cmFucyB3aXRoICh5IDo9IDEpLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKworICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSA4NTA3MDU5MTczMDIzNDYxNTg2NTg0MzY1MTg1Nzk0MjA1Mjg2NCAjIDE4NDQ2NzQ0MDczNzA5NTUxNjE3KS4KKyAgcmluZ19zaW1wbGlmeS4KKworICByaW5nX3NpbXBsaWZ5IGluIEgwLgorICBhcHBseSBRbGVfbHRfdHJhbnMgd2l0aCAoeSA6PSAoMjE0NzQ4MzY0NiAjIDEpICogKDIxNDc0ODM2NDcgIyAxKSArICgyMTQ3NDgzNjQ2ICMgMSkpLgorCisgIGFwcGx5IFFwbHVzX2xlX2NvbXBhdC4KKyAgYXBwbHkgUWxlX211bHRfcXVhZC4KKyAgYXNzdW1wdGlvbi4gcHNhdHpsIFEuIGF1dG8gd2l0aCBxYXJpdGguIGFzc3VtcHRpb24uIHBzYXR6bCBRLgorICBhdXRvIHdpdGggcWFyaXRoLiBhdXRvIHdpdGggcWFyaXRoLgorICBwc2F0emwgUS4gcHNhdHpsIFEuIGFzc3VtcHRpb24uCitRZWQuCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvc2l4LXN0ZXAudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL3NpeC1zdGVwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQ1ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL3NpeC1zdGVwLnR4dApAQCAtMCwwICsxLDYzIEBACisKKworKCogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqKQorCisKK1RoZSBTaXggU3RlcCBUcmFuc2Zvcm06Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBsaWJtcGRlYywgdGhlIHNpeC1zdGVwIHRyYW5zZm9ybSBpcyB0aGUgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIChTZWUKK21hdHJpeC10cmFuc2Zvcm0udHh0KSBpbiBkaXNndWlzZS4gSXQgaXMgY2FsbGVkIHNpeC1zdGVwIHRyYW5zZm9ybSBhZnRlcgorYSB2YXJpYW50IHRoYXQgYXBwZWFycyBpbiBbMV0uIFRoZSBhbGdvcml0aG0gcmVxdWlyZXMgdGhhdCB0aGUgaW5wdXQKK2FycmF5IGNhbiBiZSB2aWV3ZWQgYXMgYW4gUipDIG1hdHJpeC4KKworCitBbGdvcml0aG0gc2l4LXN0ZXAgKGZvcndhcmQgdHJhbnNmb3JtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIDFhKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworICAxYikgQXBwbHkgYSBsZW5ndGggUiBGTlQgdG8gZWFjaCByb3cuCisKKyAgMWMpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCisgIDIpIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBqKkMrbSkgYnkgcioqKGoqbSkuCisKKyAgMykgQXBwbHkgYSBsZW5ndGggQyBGTlQgdG8gZWFjaCByb3cuCisKKyAgNCkgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKK05vdGUgdGhhdCBzdGVwcyAxYSkgLSAxYykgYXJlIGV4YWN0bHkgZXF1aXZhbGVudCB0byBzdGVwIDEpIG9mIHRoZSBNYXRyaXgKK0ZvdXJpZXIgVHJhbnNmb3JtLiBGb3IgbGFyZ2UgUiwgaXQgaXMgZmFzdGVyIHRvIHRyYW5zcG9zZSB0d2ljZSBhbmQgZG8KK2EgdHJhbnNmb3JtIG9uIHRoZSByb3dzIHRoYW4gdG8gcGVyZm9ybSBhIGNvbHVtbiB0cmFuc3Bvc2UgZGlyZWN0bHkuCisKKworCitBbGdvcml0aG0gc2l4LXN0ZXAgKGludmVyc2UgdHJhbnNmb3JtKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIDApIFZpZXcgdGhlIG1hdHJpeCBhcyBhIEMqUiBtYXRyaXguCisKKyAgMSkgVHJhbnNwb3NlIHRoZSBtYXRyaXgsIHByb2R1Y2luZyBhbiBSKkMgbWF0cml4LgorCisgIDIpIEFwcGx5IGEgbGVuZ3RoIEMgRk5UIHRvIGVhY2ggcm93LgorCisgIDMpIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMrbikgYnkgcioqKGkqbikuCisKKyAgNGEpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCisgIDRiKSBBcHBseSBhIGxlbmd0aCBSIEZOVCB0byBlYWNoIHJvdy4KKworICA0YykgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKK0FnYWluLCBzdGVwcyA0YSkgLSA0YykgYXJlIGVxdWl2YWxlbnQgdG8gc3RlcCA0KSBvZiB0aGUgTWF0cml4IEZvdXJpZXIKK1RyYW5zZm9ybS4KKworCisKKy0tCisKKyAgWzFdIERhdmlkIEguIEJhaWxleTogRkZUcyBpbiBFeHRlcm5hbCBvciBIaWVyYXJjaGljYWwgTWVtb3J5CisgICAgICBodHRwOi8vY3JkLmxibC5nb3YvfmRoYmFpbGV5L2RoYnBhcGVycy8KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvdW1vZGFyaXRoLmxpc3AgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvdW1vZGFyaXRoLmxpc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA4ZTlmNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS91bW9kYXJpdGgubGlzcApAQCAtMCwwICsxLDY5MiBAQAorOworOyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsKKzsgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cis7IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworOyBhcmUgbWV0OgorOworOyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorOyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCis7Cis7IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKzsgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzsKKzsgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKzsgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCis7IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCis7IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCis7IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCis7IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCis7IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorOyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorOyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCis7IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKzsgU1VDSCBEQU1BR0UuCis7CisKKworKGluLXBhY2thZ2UgIkFDTDIiKQorCisoaW5jbHVkZS1ib29rICJhcml0aG1ldGljL3RvcC13aXRoLW1ldGEiIDpkaXIgOnN5c3RlbSkKKyhpbmNsdWRlLWJvb2sgImFyaXRobWV0aWMtMi9mbG9vci1tb2QvZmxvb3ItbW9kIiA6ZGlyIDpzeXN0ZW0pCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgIFByb29mcyBmb3Igc2V2ZXJhbCBmdW5jdGlvbnMgaW4gdW1vZGFyaXRoLmgKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscGVyIHRoZW9yZW1zCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnRobSBlbGltLW1vZC1tPHg8MiptCisgIChpbXBsaWVzIChhbmQgKDw9IG0geCkKKyAgICAgICAgICAgICAgICAoPCB4ICgqIDIgbSkpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCB4IG0pCisgICAgICAgICAgICAgICAgICAoKyB4ICgtIG0pKSkpKQorCisoZGVmdGhtIG1vZGF1eC0xYQorICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgMCB4KSAoPCAwIG0pCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoLSB4KSBtKQorICAgICAgICAgICAgICAgICAgKCsgKC0geCkgbSkpKSkKKworKGRlZnRobSBtb2RhdXgtMWIKKyAgKGltcGxpZXMgKGFuZCAoPCAoLSB4KSBtKSAoPCB4IDApICg8IDAgbSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kIHggbSkKKyAgICAgICAgICAgICAgICAgICgrIHggbSkpKQorICA6aGludHMgKCgiR29hbCIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKC0geCkpKSkpKSkKKworKGRlZnRobSBtb2RhdXgtMWMKKyAgKGltcGxpZXMgKGFuZCAoPCB4IG0pICg8IDAgeCkgKDwgMCBtKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeCkgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgeCBtKQorICAgICAgICAgICAgICAgICAgeCkpKQorCisoZGVmdGhtIG1vZGF1eC0yYQorICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIHgpIG0pIGIpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyAoLSBtKSBiIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyAoLSBtKSBiIChtb2QgeCBtKSkpKSkKKworKGRlZnRobSBtb2RhdXgtMmIKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGIpICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8IChtb2QgKCsgYiB4KSBtKSBiKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiB4KSBtKQorICAgICAgICAgICAgICAgICAgKCsgKC0gbSkgYiAobW9kIHggbSkpKSkKKyAgOmhpbnRzICgoIkdvYWwiIDp1c2UgKG1vZGF1eC0yYSkpKSkKKworKGRlZnRobSBsaW5lYXItbW9kLTEKKyAgKGltcGxpZXMgKGFuZCAoPCB4IG0pICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgbSkpCisgICAgICAgICAoZXF1YWwgKDwgeCAobW9kICgrICgtIGIpIHgpIG0pKQorICAgICAgICAgICAgICAgICg8IHggYikpKQorICA6aGludHMgKCgiR29hbCIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYiAoLSB4KSkpKSkpKSkKKworKGRlZnRobSBsaW5lYXItbW9kLTIKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGIpICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKQorICAgICAgICAgICAgICAgIChuYXRwIG0pKQorICAgICAgICAgICAoZXF1YWwgKDwgKG1vZCB4IG0pCisgICAgICAgICAgICAgICAgICAgICAobW9kICgrICgtIGIpIHgpIG0pKQorICAgICAgICAgICAgICAgICAgKDwgKG1vZCB4IG0pIGIpKSkpCisKKyhkZWZ0aG0gbGluZWFyLW1vZC0zCisgIChpbXBsaWVzIChhbmQgKDwgeCBtKSAoPCBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKG5hdHAgYikKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKDw9IGIgKG1vZCAoKyBiIHgpIG0pKQorICAgICAgICAgICAgICAgICAgKDwgKCsgYiB4KSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6dXNlICgoOmluc3RhbmNlIGVsaW0tbW9kLW08eDwyKm0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYiB4KSkpKSkpKQorCisoZGVmdGhtIG1vZGF1eC0yYworICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDw9IGIgKG1vZCAoKyBiIHgpIG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiB4KSBtKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIHggbSkpKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgKjEvOCcnIiA6dXNlIChsaW5lYXItbW9kLTMpKSkpCisKKyhkZWZ0aG1kIG1vZGF1eC0yZAorICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgMCB4KSAoPCAwIG0pCisgICAgICAgICAgICAgICAgKDwgKC0gbSkgYikgKDwgYiAwKSAocmF0aW9uYWxwIG0pCisgICAgICAgICAgICAgICAgKDw9IHggKG1vZCAoKyBiIHgpIG0pKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeCkgKHJhdGlvbmFscCBiKSkKKyAgICAgICAgICAgKGVxdWFsICgrICgtIG0pIChtb2QgKCsgYiB4KSBtKSkKKyAgICAgICAgICAgICAgICAgICgrIGIgeCkpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPD0gMCAoKyBiIHgpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDInIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIGIgeCkpKSkpKSkKKworKGRlZnRobSBtb2QtbS1iCisgIChpbXBsaWVzIChhbmQgKDwgMCB4KSAoPCAwIGIpICg8IDAgbSkKKyAgICAgICAgICAgICAgICAoPCB4IGIpICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKSAobmF0cCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgKG1vZCAoLSB4KSBtKSBiKSBtKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSB4KSBiKSkpKQorCisKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG1vZCwgc3VibW9kCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGFkZG1vZCAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChzIChtb2QgKCsgYSBiKSBiYXNlKSkKKyAgICAgICAgIChzIChpZiAoPCBzIGEpIChtb2QgKC0gcyBtKSBiYXNlKSBzKSkKKyAgICAgICAgIChzIChpZiAoPj0gcyBtKSAobW9kICgtIHMgbSkgYmFzZSkgcykpKQorICAgICAgICBzKSkKKworKGRlZnRobWQgYWRkbW9kLWNvcnJlY3QKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKwkJKDwgYSBtKSAoPD0gYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYSkgKG5hdHAgYikpCisgICAgICAgICAgIChlcXVhbCAoYWRkbW9kIGEgYiBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgrIGEgYikgbSkpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPD0gYmFzZSAoKyBhIGIpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDIuMSciIDp1c2UgKCg6aW5zdGFuY2UgZWxpbS1tb2QtbTx4PDIqbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIGEgYikpKSkpKSkKKworKGRlZnVuIHN1Ym1vZCAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChkIChtb2QgKC0gYSBiKSBiYXNlKSkKKyAgICAgICAgIChkIChpZiAoPCBhIGQpIChtb2QgKCsgZCBtKSBiYXNlKSBkKSkpCisgICAgICAgIGQpKQorCisoZGVmdGhtZCBzdWJtb2QtYXV4MQorICAoaW1wbGllcyAoYW5kICg8IGEgKG1vZCAoKyBhICgtIGIpKSBiYXNlKSkKKyAgICAgICAgICAgICAgICAoPCAwIGJhc2UpICg8IGEgYmFzZSkgKDw9IGIgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBiYXNlKSAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKDwgYSBiKSkKKyAgOnJ1bGUtY2xhc3NlcyA6Zm9yd2FyZC1jaGFpbmluZykKKworKGRlZnRobWQgc3VibW9kLWF1eDIKKyAgKGltcGxpZXMgKGFuZCAoPD0gKG1vZCAoKyBhICgtIGIpKSBiYXNlKSBhKQorICAgICAgICAgICAgICAgICg8IDAgYmFzZSkgKDwgYSBiYXNlKSAoPCBiIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYmFzZSkgKG5hdHAgYSkgKG5hdHAgYikpCisgICAgICAgICAgICg8PSBiIGEpKQorICA6cnVsZS1jbGFzc2VzIDpmb3J3YXJkLWNoYWluaW5nKQorCisoZGVmdGhtZCBzdWJtb2QtY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhIG0pICg8PSBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChzdWJtb2QgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKC0gYSBiKSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8PSBiYXNlICgrIGEgYikpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMi4yIiA6dXNlICgoOmluc3RhbmNlIHN1Ym1vZC1hdXgxKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDIuMicnJyIgOmNhc2VzICgoYW5kICg8IDAgKCsgYSAoLSBiKSBtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKCsgYSAoLSBiKSBtKSBtKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAyLjEiIDp1c2UgKCg6aW5zdGFuY2Ugc3VibW9kLWF1eDIpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yIiA6dXNlICgoOmluc3RhbmNlIHN1Ym1vZC1hdXgxKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMSIgOnVzZSAoKDppbnN0YW5jZSBzdWJtb2QtYXV4MikpKSkpCisKKworKGRlZnVuIHN1Ym1vZC0yIChhIGIgbSBiYXNlKQorICAobGV0KiAoKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgYikgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKyhkZWZ0aG0gc3VibW9kLTItY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhIG0pICg8PSBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChzdWJtb2QtMiBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIGIpIG0pKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgMiciIDpjYXNlcyAoKGFuZCAoPCAwICgrIGEgKC0gYikgbSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKCsgYSAoLSBiKSBtKSBtKSkpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgZXh0LXN1Ym1vZCBpcyBjb3JyZWN0Cis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzsgYSA8IDIqbSwgYiA8IDIqbQorKGRlZnVuIGV4dC1zdWJtb2QgKGEgYiBtIGJhc2UpCisgIChsZXQqICgoYSAoaWYgKD49IGEgbSkgKC0gYSBtKSBhKSkKKyAgICAgICAgIChiIChpZiAoPj0gYiBtKSAoLSBiIG0pIGIpKQorICAgICAgICAgKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgYikgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKzsgYSA8IDIqbSwgYiA8IDIqbQorKGRlZnVuIGV4dC1zdWJtb2QtMiAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChhIChtb2QgYSBtKSkKKyAgICAgICAgIChiIChtb2QgYiBtKSkKKyAgICAgICAgIChkIChtb2QgKC0gYSBiKSBiYXNlKSkKKyAgICAgICAgIChkIChpZiAoPCBhIGIpIChtb2QgKCsgZCBtKSBiYXNlKSBkKSkpCisgICAgICAgIGQpKQorCisoZGVmdGhtZCBleHQtc3VibW9kLWV4dC1zdWJtb2QtMi1lcXVhbAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhICgqIDIgbSkpICg8IGIgKCogMiBtKSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKGV4dC1zdWJtb2QgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChleHQtc3VibW9kLTIgYSBiIG0gYmFzZSkpKSkKKworKGRlZnRobWQgZXh0LXN1Ym1vZC0yLWNvcnJlY3QKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKwkJKDwgYSAoKiAyIG0pKSAoPCBiICgqIDIgbSkpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChleHQtc3VibW9kLTIgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKC0gYSBiKSBtKSkpKQorCisKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3LXJlZHVjZSBpcyBjb3JyZWN0Cis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyhkZWZ1biBkdy1yZWR1Y2UgKGhpIGxvIG0gYmFzZSkKKyAgKGxldCogKChyMSAobW9kIGhpIG0pKQorICAgICAgICAgKHIyIChtb2QgKCsgKCogcjEgYmFzZSkgbG8pIG0pKSkKKyAgICAgICAgcjIpKQorCisoZGVmdGhtZCBkdy1yZWR1Y2UtY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBoaSBiYXNlKSAoPCBsbyBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChkdy1yZWR1Y2UgaGkgbG8gbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoKyAoKiBoaSBiYXNlKSBsbykgbSkpKSkKKworKGRlZnRobWQgPD0tbXVsdGlwbHktYm90aC1zaWRlcy1ieS16CisgIChpbXBsaWVzIChhbmQgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIHkpCisgICAgICAgICAgICAgICAgKDwgMCB6KSAocmF0aW9uYWxwIHopKQorICAgICAgICAgICAoZXF1YWwgKDw9IHggeSkKKyAgICAgICAgICAgICAgICAgICg8PSAoKiB6IHgpICgqIHogeSkpKSkpCisKKyhkZWZ0aG1kIGR3LXJlZHVjZS1hdXgxCisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAoPCBsbyBiYXNlKSAobmF0cCBsbykKKyAgICAgICAgICAgICAgICAoPCB4IG0pIChuYXRwIHgpKQorICAgICAgICAgICAoPCAoKyBsbyAoKiBiYXNlIHgpKSAoKiBiYXNlIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDw9ICgrIHggMSkgbSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxJyciIDpjYXNlcyAoKDw9ICgqIGJhc2UgKCsgeCAxKSkgKCogYmFzZSBtKSkpKQorICAgICAgICAgICgic3ViZ29hbCAxLjIiIDp1c2UgKCg6aW5zdGFuY2UgPD0tbXVsdGlwbHktYm90aC1zaWRlcy1ieS16CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyAxIHgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHkgbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh6IGJhc2UpKSkpKSkKKworKGRlZnRobSBkdy1yZWR1Y2UtYXV4MgorICAoaW1wbGllcyAoYW5kICg8IHggKCogYmFzZSBtKSkKKyAgICAgICAgICAgICAgICAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKSAobmF0cCB4KSkKKyAgICAgICAgICAgKDwgKGZsb29yIHggbSkgYmFzZSkpKQorCis7OyBUaGlzIGlzIHRoZSBuZWNlc3NhcnkgY29uZGl0aW9uIGZvciB1c2luZyBfbXBkX2Rpdl93b3JkcygpLgorKGRlZnRobWQgZHctcmVkdWNlLXNlY29uZC1xdW90aWVudC1maXRzLWluLXNpbmdsZS13b3JkCisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisgICAgICAgICAgICAgICAgKDwgaGkgYmFzZSkgKDwgbG8gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykKKyAgICAgICAgICAgICAgICAoZXF1YWwgcjEgKG1vZCBoaSBtKSkpCisgICAgICAgICAgICg8IChmbG9vciAoKyAoKiByMSBiYXNlKSBsbykgbSkKKyAgICAgICAgICAgICAgYmFzZSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8IHIxIG0pKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMScnIiA6Y2FzZXMgKCg8ICgrIGxvICgqIGJhc2UgKG1vZCBoaSBtKSkpICgqIGJhc2UgbSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yIiA6dXNlICgoOmluc3RhbmNlIGR3LXJlZHVjZS1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAobW9kIGhpIG0pKSkpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHctc3VibW9kIGlzIGNvcnJlY3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGR3LXN1Ym1vZCAoYSBoaSBsbyBtIGJhc2UpCisgIChsZXQqICgociAoZHctcmVkdWNlIGhpIGxvIG0gYmFzZSkpCisgICAgICAgICAoZCAobW9kICgtIGEgcikgYmFzZSkpCisgICAgICAgICAoZCAoaWYgKDwgYSByKSAobW9kICgrIGQgbSkgYmFzZSkgZCkpKQorICAgICAgICBkKSkKKworKGRlZnRobWQgZHctc3VibW9kLWF1eDEKKyAgKGltcGxpZXMgKGFuZCAobmF0cCBhKSAoPCAwIG0pIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKGVxdWFsIHIgKG1vZCB4IG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKC0gYSB4KSBtKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIHIpIG0pKSkpCisKKyhkZWZ0aG1kIGR3LXN1Ym1vZC1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYSkgKDwgYSBtKQorCQkoPCBoaSBiYXNlKSAoPCBsbyBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChkdy1zdWJtb2QgYSBoaSBsbyBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgtIGEgKCsgKCogYmFzZSBoaSkgbG8pKSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6aW4tdGhlb3J5IChkaXNhYmxlIGR3LXJlZHVjZSkKKyAgICAgICAgICAgICAgICAgIDp1c2UgKCg6aW5zdGFuY2UgZHctc3VibW9kLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgbG8gKCogYmFzZSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAociAoZHctcmVkdWNlIGhpIGxvIG0gYmFzZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKDppbnN0YW5jZSBkdy1yZWR1Y2UtY29ycmVjdCkpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgQU5TSSBDIGFyaXRobWV0aWMgZm9yIHVpbnQ2NF90Cis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyhkZWZ1biBhZGQgKGEgYikKKyAgKG1vZCAoKyBhIGIpCisgICAgICAgKGV4cHQgMiA2NCkpKQorCisoZGVmdW4gc3ViIChhIGIpCisgIChtb2QgKC0gYSBiKQorICAgICAgIChleHB0IDIgNjQpKSkKKworKGRlZnVuIDw8ICh3IG4pCisgIChtb2QgKCogdyAoZXhwdCAyIG4pKQorICAgICAgIChleHB0IDIgNjQpKSkKKworKGRlZnVuID4+ICh3IG4pCisgIChmbG9vciB3IChleHB0IDIgbikpKQorCis7OyBqb2luIHVwcGVyIGFuZCBsb3dlciBoYWxmIG9mIGEgZG91YmxlIHdvcmQsIHlpZWxkaW5nIGEgMTI4IGJpdCBudW1iZXIKKyhkZWZ1biBqb2luIChoaSBsbykKKyAgKCsgKCogKGV4cHQgMiA2NCkgaGkpIGxvKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXN0IG1vZHVsYXIgcmVkdWN0aW9uCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis7OyBUaGVzZSBhcmUgdGhlIHRocmVlIHByaW1lcyB1c2VkIGluIHRoZSBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4KKzs7IEEgZmFzdCBtb2R1bGFyIHJlZHVjdGlvbiBzY2hlbWUgZXhpc3RzIGZvciBhbGwgb2YgdGhlbS4KKyhkZWZtYWNybyBwMSAoKQorICAoKyAoZXhwdCAyIDY0KSAoLSAoZXhwdCAyIDMyKSkgMSkpCisKKyhkZWZtYWNybyBwMiAoKQorICAoKyAoZXhwdCAyIDY0KSAoLSAoZXhwdCAyIDM0KSkgMSkpCisKKyhkZWZtYWNybyBwMyAoKQorICAoKyAoZXhwdCAyIDY0KSAoLSAoZXhwdCAyIDQwKSkgMSkpCisKKworOzsgcmVkdWNlIHRoZSBkb3VibGUgd29yZCBudW1iZXIgaGkqMioqNjQgKyBsbyAobW9kIHAxKQorKGRlZnVuIHNpbXBsZS1tb2QtcmVkdWNlLXAxIChoaSBsbykKKyAgKCsgKCogKGV4cHQgMiAzMikgaGkpICgtIGhpKSBsbykpCisKKzs7IHJlZHVjZSB0aGUgZG91YmxlIHdvcmQgbnVtYmVyIGhpKjIqKjY0ICsgbG8gKG1vZCBwMikKKyhkZWZ1biBzaW1wbGUtbW9kLXJlZHVjZS1wMiAoaGkgbG8pCisgICgrICgqIChleHB0IDIgMzQpIGhpKSAoLSBoaSkgbG8pKQorCis7OyByZWR1Y2UgdGhlIGRvdWJsZSB3b3JkIG51bWJlciBoaSoyKio2NCArIGxvIChtb2QgcDMpCisoZGVmdW4gc2ltcGxlLW1vZC1yZWR1Y2UtcDMgKGhpIGxvKQorICAoKyAoKiAoZXhwdCAyIDQwKSBoaSkgKC0gaGkpIGxvKSkKKworCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgICAgICBUaGUgbW9kdWxhciByZWR1Y3Rpb25zIGdpdmVuIGFib3ZlIGFyZSBjb3JyZWN0Cis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnRobWQgY29uZ3J1ZW5jZS1wMS1hdXgKKyAgKGVxdWFsICgqIChleHB0IDIgNjQpIGhpKQorICAgICAgICAgKCsgKCogKHAxKSBoaSkKKyAgICAgICAgICAgICgqIChleHB0IDIgMzIpIGhpKQorICAgICAgICAgICAgKC0gaGkpKSkpCisKKyhkZWZ0aG1kIGNvbmdydWVuY2UtcDItYXV4CisgIChlcXVhbCAoKiAoZXhwdCAyIDY0KSBoaSkKKyAgICAgICAgICgrICgqIChwMikgaGkpCisgICAgICAgICAgICAoKiAoZXhwdCAyIDM0KSBoaSkKKyAgICAgICAgICAgICgtIGhpKSkpKQorCisoZGVmdGhtZCBjb25ncnVlbmNlLXAzLWF1eAorICAoZXF1YWwgKCogKGV4cHQgMiA2NCkgaGkpCisgICAgICAgICAoKyAoKiAocDMpIGhpKQorICAgICAgICAgICAgKCogKGV4cHQgMiA0MCkgaGkpCisgICAgICAgICAgICAoLSBoaSkpKSkKKworKGRlZnRobWQgbW9kLWF1Z21lbnQKKyAgKGltcGxpZXMgKGFuZCAocmF0aW9uYWxwIHgpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB5KQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrIHggeSkgbSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKCsgeCAobW9kIHkgbSkpIG0pKSkpCisKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAxLWNvbmdydWVudAorICAoaW1wbGllcyAoYW5kIChpbnRlZ2VycCBoaSkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pIChwMSkpCisgICAgICAgICAgICAgICAgICAobW9kIChqb2luIGhpIGxvKSAocDEpKSkpCisgIDpoaW50cyAoKCJHb2FsJyciIDp1c2UgKCg6aW5zdGFuY2UgY29uZ3J1ZW5jZS1wMS1hdXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgbW9kLWF1Z21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAocDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrICgtIGhpKSBsbyAoKiAoZXhwdCAyIDMyKSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICgqIChwMSkgaGkpKSkpKSkpCisKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLWNvbmdydWVudAorICAoaW1wbGllcyAoYW5kIChpbnRlZ2VycCBoaSkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pIChwMikpCisgICAgICAgICAgICAgICAgICAobW9kIChqb2luIGhpIGxvKSAocDIpKSkpCisgIDpoaW50cyAoKCJHb2FsJyciIDp1c2UgKCg6aW5zdGFuY2UgY29uZ3J1ZW5jZS1wMi1hdXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgbW9kLWF1Z21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAocDIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrICgtIGhpKSBsbyAoKiAoZXhwdCAyIDM0KSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICgqIChwMikgaGkpKSkpKSkpCisKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAzLWNvbmdydWVudAorICAoaW1wbGllcyAoYW5kIChpbnRlZ2VycCBoaSkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pIChwMykpCisgICAgICAgICAgICAgICAgICAobW9kIChqb2luIGhpIGxvKSAocDMpKSkpCisgIDpoaW50cyAoKCJHb2FsJyciIDp1c2UgKCg6aW5zdGFuY2UgY29uZ3J1ZW5jZS1wMy1hdXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgbW9kLWF1Z21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAocDMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrICgtIGhpKSBsbyAoKiAoZXhwdCAyIDQwKSBoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICgqIChwMykgaGkpKSkpKSkpCisKKworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgIFdlIG5lZWQgYSBudW1iZXIgbGVzcyB0aGFuIDIqcCwgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZSB0cmljayBmcm9tCis7ICBlbGltLW1vZC1tPHg8MiptIGZvciB0aGUgZmluYWwgcmVkdWN0aW9uLgorOyAgRm9yIHAxLCB0d28gbW9kdWxhciByZWR1Y3Rpb25zIGFyZSBzdWZmaWNpZW50LCBmb3IgcDIgYW5kIHAzIHRocmVlLgorOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOzsgcDE6IHRoZSBmaXJzdCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjk2CisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMS08LTIqKjk2CisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAxIGhpIGxvKQorICAgICAgICAgICAgICAoZXhwdCAyIDk2KSkpKQorCis7OyBwMTogdGhlIHNlY29uZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqcDEKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAxLTwtMipwMQorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDk2KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pCisgICAgICAgICAgICAgICgqIDIgKHAxKSkpKSkKKworCis7OyBwMjogdGhlIGZpcnN0IHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqOTgKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLTwtMioqOTgKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgOTgpKSkpCisKKzs7IHAyOiB0aGUgc2Vjb25kIHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqNjkKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLTwtMio2OQorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDk4KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgNjkpKSkpCisKKzs7IHAzOiB0aGUgdGhpcmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKnAyCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMi08LTIqcDIKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiA2OSkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKQorICAgICAgICAgICAgICAoKiAyIChwMikpKSkpCisKKworOzsgcDM6IHRoZSBmaXJzdCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjEwNAorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDMtPC0yKioxMDQKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgMTA0KSkpKQorCis7OyBwMzogdGhlIHNlY29uZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjgxCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMy08LTIqKjgxCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgKGpvaW4gaGkgbG8pIChleHB0IDIgMTA0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgODEpKSkpCisKKzs7IHAzOiB0aGUgdGhpcmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKnAzCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMy08LTIqcDMKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiA4MSkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAzIGhpIGxvKQorICAgICAgICAgICAgICAoKiAyIChwMykpKSkpCisKKworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICAgICAgVGhlIHNpbXBsZSBtb2R1bGFyIHJlZHVjdGlvbnMsIGFkYXB0ZWQgZm9yIGNvbXBpbGVyIGZyaWVuZGx5IEMKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoZGVmdW4gbW9kLXJlZHVjZS1wMSAoaGkgbG8pCisgIChsZXQqICgoeSBoaSkKKyAgICAgICAgICh4IHkpCisgICAgICAgICAoaGkgKD4+IGhpIDMyKSkKKyAgICAgICAgICh4IChzdWIgbG8geCkpCisgICAgICAgICAoaGkgKGlmICg+IHggbG8pICgrIGhpIC0xKSBoaSkpCisgICAgICAgICAoeSAoPDwgeSAzMikpCisgICAgICAgICAobG8gKGFkZCB5IHgpKQorICAgICAgICAgKGhpIChpZiAoPCBsbyB5KSAoKyBoaSAxKSBoaSkpKQorICAgICAgICAoKyAoKiBoaSAoZXhwdCAyIDY0KSkgbG8pKSkKKworKGRlZnVuIG1vZC1yZWR1Y2UtcDIgKGhpIGxvKQorICAobGV0KiAoKHkgaGkpCisgICAgICAgICAoeCB5KQorICAgICAgICAgKGhpICg+PiBoaSAzMCkpCisgICAgICAgICAoeCAoc3ViIGxvIHgpKQorICAgICAgICAgKGhpIChpZiAoPiB4IGxvKSAoKyBoaSAtMSkgaGkpKQorICAgICAgICAgKHkgKDw8IHkgMzQpKQorICAgICAgICAgKGxvIChhZGQgeSB4KSkKKyAgICAgICAgIChoaSAoaWYgKDwgbG8geSkgKCsgaGkgMSkgaGkpKSkKKyAgICAgICAgKCsgKCogaGkgKGV4cHQgMiA2NCkpIGxvKSkpCisKKyhkZWZ1biBtb2QtcmVkdWNlLXAzIChoaSBsbykKKyAgKGxldCogKCh5IGhpKQorICAgICAgICAgKHggeSkKKyAgICAgICAgIChoaSAoPj4gaGkgMjQpKQorICAgICAgICAgKHggKHN1YiBsbyB4KSkKKyAgICAgICAgIChoaSAoaWYgKD4geCBsbykgKCsgaGkgLTEpIGhpKSkKKyAgICAgICAgICh5ICg8PCB5IDQwKSkKKyAgICAgICAgIChsbyAoYWRkIHkgeCkpCisgICAgICAgICAoaGkgKGlmICg8IGxvIHkpICgrIGhpIDEpIGhpKSkpCisgICAgICAgICgrICgqIGhpIChleHB0IDIgNjQpKSBsbykpKQorCisKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyAgICAgVGhlIGNvbXBpbGVyIGZyaWVuZGx5IHZlcnNpb25zIGFyZSBlcXVhbCB0byB0aGUgc2ltcGxlIHZlcnNpb25zCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnRobSBtb2QtcmVkdWNlLWF1eDEKKyAgKGltcGxpZXMgKGFuZCAoPD0gMCBhKSAobmF0cCBhKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8ICgtIG0pIGIpICg8PSBiIDApCisgICAgICAgICAgICAgICAgKGludGVnZXJwIGIpCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIGEpIG0pCisgICAgICAgICAgICAgICAgICAgKG1vZCBhIG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiBhKSBtKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIGEgbSkpKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgMiIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBhIGIpKSkpKSkpCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1hdXgyCisgIChpbXBsaWVzIChhbmQgKDw9IDAgYSkgKG5hdHAgYSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCBiIG0pIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIGEpIG0pCisgICAgICAgICAgICAgICAgICAgKG1vZCBhIG0pKSkKKyAgICAgICAgICAgKGVxdWFsICgrIG0gKG1vZCAoKyBiIGEpIG0pKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIGEgbSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLWF1eDMKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGEpIChuYXRwIGEpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKC0gbSkgYikgKDwgYiAwKQorICAgICAgICAgICAgICAgIChpbnRlZ2VycCBiKQorICAgICAgICAgICAgICAgICg8PSAobW9kIGEgbSkKKyAgICAgICAgICAgICAgICAgICAgKG1vZCAoKyBiIGEpIG0pKSkKKyAgICAgICAgICAgKGVxdWFsICgrICgtIG0pIChtb2QgKCsgYiBhKSBtKSkKKyAgICAgICAgICAgICAgICAgICgrIGIgKG1vZCBhIG0pKSkpCisgIDpoaW50cyAoKCJTdWJnb2FsIDEuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kYXV4LTFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggYikpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMScnIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0yZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggSSkpKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1hdXg0CisgIChpbXBsaWVzIChhbmQgKDwgMCBhKSAobmF0cCBhKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8IGIgbSkgKG5hdHAgYikKKyAgICAgICAgICAgICAgICAoPD0gKG1vZCBhIG0pCisgICAgICAgICAgICAgICAgICAgIChtb2QgKCsgYiBhKSBtKSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrIGIgYSkgbSkKKyAgICAgICAgICAgICAgICAgICgrIGIgKG1vZCBhIG0pKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1wMT09c2ltcGxlLW1vZC1yZWR1Y2UtcDEKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZC1yZWR1Y2UtcDEgaGkgbG8pCisgICAgICAgICAgICAgICAgICAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDppbi10aGVvcnkgKGRpc2FibGUgZXhwdCkKKyAgICAgICAgICAgICAgICAgIDpjYXNlcyAoKDwgMCBoaSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDMyKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzIpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzMikgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDMyKSBoaSkpKSkpKSkKKworCisoZGVmdGhtIG1vZC1yZWR1Y2UtcDI9PXNpbXBsZS1tb2QtcmVkdWNlLXAyCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QtcmVkdWNlLXAyIGhpIGxvKQorICAgICAgICAgICAgICAgICAgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8IDAgaGkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzNCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDM0KSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzQpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzNCkgaGkpKSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLXAzPT1zaW1wbGUtbW9kLXJlZHVjZS1wMworICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kLXJlZHVjZS1wMyBoaSBsbykKKyAgICAgICAgICAgICAgICAgIChzaW1wbGUtbW9kLXJlZHVjZS1wMyBoaSBsbykpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPCAwIGhpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgNDApIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiA0MCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDQwKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgNDApIGhpKSkpKSkpKQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY2MzUwZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKQEAgLTAsMCArMSwyOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorCisKKy8qIEd1YXJhbnRlZWQgbWluaW11bSBhbGxvY2F0aW9uIGZvciBhIGNvZWZmaWNpZW50LiBNYXkgYmUgY2hhbmdlZCBvbmNlCisgICBhdCBwcm9ncmFtIHN0YXJ0IHVzaW5nIG1wZF9zZXRtaW5hbGxvYygpLiAqLworbXBkX3NzaXplX3QgTVBEX01JTkFMTE9DID0gTVBEX01JTkFMTE9DX01JTjsKKworLyogQ3VzdG9tIGFsbG9jYXRpb24gYW5kIGZyZWUgZnVuY3Rpb25zICovCit2b2lkICooKiBtcGRfbWFsbG9jZnVuYykoc2l6ZV90IHNpemUpID0gbWFsbG9jOwordm9pZCAqKCogbXBkX3JlYWxsb2NmdW5jKSh2b2lkICpwdHIsIHNpemVfdCBzaXplKSA9IHJlYWxsb2M7Cit2b2lkICooKiBtcGRfY2FsbG9jZnVuYykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkgPSBjYWxsb2M7Cit2b2lkICgqIG1wZF9mcmVlKSh2b2lkICpwdHIpID0gZnJlZTsKKworCisvKiBlbXVsYXRlIGNhbGxvYyBpZiBpdCBpcyBub3QgYXZhaWxhYmxlICovCit2b2lkICoKK21wZF9jYWxsb2NmdW5jX2VtKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpCit7CisgICAgdm9pZCAqcHRyOworICAgIHNpemVfdCByZXE7CisgICAgbXBkX3NpemVfdCBvdmVyZmxvdzsKKworI2lmIE1QRF9TSVpFX01BWCA8IFNJWkVfTUFYCisgICAgLyogZnVsbF9jb3ZlcmFnZSB0ZXN0IG9ubHkgKi8KKyAgICBpZiAobm1lbWIgPiBNUERfU0laRV9NQVggfHwgc2l6ZSA+IE1QRF9TSVpFX01BWCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZW5kaWYKKworICAgIHJlcSA9IG11bF9zaXplX3Rfb3ZlcmZsb3coKG1wZF9zaXplX3Qpbm1lbWIsIChtcGRfc2l6ZV90KXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwdHIgPSBtcGRfbWFsbG9jZnVuYyhyZXEpOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogdXNlZCBvbiB1aW50MzJfdCBvciB1aW50NjRfdCAqLworICAgIG1lbXNldChwdHIsIDAsIHJlcSk7CisKKyAgICByZXR1cm4gcHRyOworfQorCisKKy8qIG1hbGxvYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nICovCit2b2lkICoKK21wZF9hbGxvYyhtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUpCit7CisgICAgbXBkX3NpemVfdCByZXEsIG92ZXJmbG93OworCisgICAgcmVxID0gbXVsX3NpemVfdF9vdmVyZmxvdyhubWVtYiwgc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9tYWxsb2NmdW5jKHJlcSk7Cit9CisKKy8qIGNhbGxvYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nICovCit2b2lkICoKK21wZF9jYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKQoreworICAgIG1wZF9zaXplX3Qgb3ZlcmZsb3c7CisKKyAgICAodm9pZCltdWxfc2l6ZV90X292ZXJmbG93KG5tZW1iLCBzaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX2NhbGxvY2Z1bmMobm1lbWIsIHNpemUpOworfQorCisvKiByZWFsbG9jIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcgKi8KK3ZvaWQgKgorbXBkX3JlYWxsb2Modm9pZCAqcHRyLCBtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUsIHVpbnQ4X3QgKmVycikKK3sKKyAgICB2b2lkICpuZXc7CisgICAgbXBkX3NpemVfdCByZXEsIG92ZXJmbG93OworCisgICAgcmVxID0gbXVsX3NpemVfdF9vdmVyZmxvdyhubWVtYiwgc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgKmVyciA9IDE7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgbmV3ID0gbXBkX3JlYWxsb2NmdW5jKHB0ciwgcmVxKTsKKyAgICBpZiAobmV3ID09IE5VTEwpIHsKKyAgICAgICAgKmVyciA9IDE7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG5ldzsKK30KKworLyogc3RydWN0IGhhY2sgbWFsbG9jIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcgKi8KK3ZvaWQgKgorbXBkX3NoX2FsbG9jKG1wZF9zaXplX3Qgc3RydWN0X3NpemUsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IHJlcSwgb3ZlcmZsb3c7CisKKyAgICByZXEgPSBtdWxfc2l6ZV90X292ZXJmbG93KG5tZW1iLCBzaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXEgPSBhZGRfc2l6ZV90X292ZXJmbG93KHJlcSwgc3RydWN0X3NpemUsICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtcGRfbWFsbG9jZnVuYyhyZXEpOworfQorCisKKy8qIEFsbG9jYXRlIGEgbmV3IGRlY2ltYWwgd2l0aCBhIGNvZWZmaWNpZW50IG9mIGxlbmd0aCAnbndvcmRzJy4gSW4gY2FzZQorICAgb2YgYW4gZXJyb3IgdGhlIHJldHVybiB2YWx1ZSBpcyBOVUxMLiAqLworbXBkX3QgKgorbXBkX3FuZXdfc2l6ZShtcGRfc3NpemVfdCBud29yZHMpCit7CisgICAgbXBkX3QgKnJlc3VsdDsKKworICAgIG53b3JkcyA9IChud29yZHMgPCBNUERfTUlOQUxMT0MpID8gTVBEX01JTkFMTE9DIDogbndvcmRzOworCisgICAgcmVzdWx0ID0gbXBkX2FsbG9jKDEsIHNpemVvZiAqcmVzdWx0KTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2FsbG9jKG53b3Jkcywgc2l6ZW9mICpyZXN1bHQtPmRhdGEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQtPmZsYWdzID0gMDsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSAwOworICAgIHJlc3VsdC0+bGVuID0gMDsKKyAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogQWxsb2NhdGUgYSBuZXcgZGVjaW1hbCB3aXRoIGEgY29lZmZpY2llbnQgb2YgbGVuZ3RoIE1QRF9NSU5BTExPQy4KKyAgIEluIGNhc2Ugb2YgYW4gZXJyb3IgdGhlIHJldHVybiB2YWx1ZSBpcyBOVUxMLiAqLworbXBkX3QgKgorbXBkX3FuZXcodm9pZCkKK3sKKyAgICByZXR1cm4gbXBkX3FuZXdfc2l6ZShNUERfTUlOQUxMT0MpOworfQorCisvKiBBbGxvY2F0ZSBuZXcgZGVjaW1hbC4gQ2FsbGVyIGNhbiBjaGVjayBmb3IgTlVMTCBvciBNUERfTWFsbG9jX2Vycm9yLgorICAgUmFpc2VzIG9uIGVycm9yLiAqLworbXBkX3QgKgorbXBkX25ldyhtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgbXBkX3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9hZGRzdGF0dXNfcmFpc2UoY3R4LCBNUERfTWFsbG9jX2Vycm9yKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIElucHV0OiAncmVzdWx0JyBpcyBhIHN0YXRpYyBtcGRfdCB3aXRoIGEgc3RhdGljIGNvZWZmaWNpZW50LgorICogQXNzdW1wdGlvbjogJ253b3JkcycgPj0gcmVzdWx0LT5hbGxvYy4KKyAqCisgKiBSZXNpemUgdGhlIHN0YXRpYyBjb2VmZmljaWVudCB0byBhIGxhcmdlciBkeW5hbWljIG9uZSBhbmQgY29weSB0aGUKKyAqIGV4aXN0aW5nIGRhdGEuIElmIHN1Y2Nlc3NmdWwsIHRoZSB2YWx1ZSBvZiAncmVzdWx0JyBpcyB1bmNoYW5nZWQuCisgKiBPdGhlcndpc2UsIHNldCAncmVzdWx0JyB0byBOYU4gYW5kIHVwZGF0ZSAnc3RhdHVzJyB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3N3aXRjaF90b19keW4obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgKnAgPSByZXN1bHQtPmRhdGE7CisKKyAgICBhc3NlcnQobndvcmRzID49IHJlc3VsdC0+YWxsb2MpOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2FsbG9jKG53b3Jkcywgc2l6ZW9mICpyZXN1bHQtPmRhdGEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICByZXN1bHQtPmRhdGEgPSBwOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIHAsIHJlc3VsdC0+YWxsb2MgKiAoc2l6ZW9mICpyZXN1bHQtPmRhdGEpKTsKKyAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworICAgIG1wZF9zZXRfZHluYW1pY19kYXRhKHJlc3VsdCk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBJbnB1dDogJ3Jlc3VsdCcgaXMgYSBzdGF0aWMgbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudC4KKyAqCisgKiBDb252ZXJ0IHRoZSBjb2VmZmljaWVudCB0byBhIGR5bmFtaWMgb25lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gSWYKKyAqIG1hbGxvYyBmYWlscywgc2V0ICdyZXN1bHQnIHRvIE5hTiBhbmQgdXBkYXRlICdzdGF0dXMnIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfc3dpdGNoX3RvX2R5bl96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90ICpwID0gcmVzdWx0LT5kYXRhOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX2NhbGxvYyhud29yZHMsIHNpemVvZiAqcmVzdWx0LT5kYXRhKTsKKyAgICBpZiAocmVzdWx0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhID0gcDsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0LT5leHAgPSByZXN1bHQtPmRpZ2l0cyA9IHJlc3VsdC0+bGVuID0gMDsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworICAgIG1wZF9zZXRfZHluYW1pY19kYXRhKHJlc3VsdCk7CisKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIElucHV0OiAncmVzdWx0JyBpcyBhIHN0YXRpYyBvciBhIGR5bmFtaWMgbXBkX3Qgd2l0aCBhIGR5bmFtaWMgY29lZmZpY2llbnQuCisgKiBSZXNpemUgdGhlIGNvZWZmaWNpZW50IHRvIGxlbmd0aCAnbndvcmRzJzoKKyAqICAgQ2FzZSBud29yZHMgPiByZXN1bHQtPmFsbG9jOgorICogICAgIElmIHJlYWxsb2MgaXMgc3VjY2Vzc2Z1bDoKKyAqICAgICAgICdyZXN1bHQnIGhhcyBhIGxhcmdlciBjb2VmZmljaWVudCBidXQgdGhlIHNhbWUgdmFsdWUuIFJldHVybiAxLgorICogICAgIE90aGVyd2lzZToKKyAqICAgICAgIFNldCAncmVzdWx0JyB0byBOYU4sIHVwZGF0ZSBzdGF0dXMgd2l0aCBNUERfTWFsbG9jX2Vycm9yIGFuZCByZXR1cm4gMC4KKyAqICAgQ2FzZSBud29yZHMgPCByZXN1bHQtPmFsbG9jOgorICogICAgIElmIHJlYWxsb2MgaXMgc3VjY2Vzc2Z1bDoKKyAqICAgICAgICdyZXN1bHQnIGhhcyBhIHNtYWxsZXIgY29lZmZpY2llbnQuIHJlc3VsdC0+bGVuIGlzIHVuZGVmaW5lZC4gUmV0dXJuIDEuCisgKiAgICAgT3RoZXJ3aXNlICh1bmxpa2VseSk6CisgKiAgICAgICAncmVzdWx0JyBpcyB1bmNoYW5nZWQuIFJldXNlIHRoZSBub3cgb3ZlcnNpemVkIGNvZWZmaWNpZW50LiBSZXR1cm4gMS4KKyAqLworaW50CittcGRfcmVhbGxvY19keW4obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ4X3QgZXJyID0gMDsKKworICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9yZWFsbG9jKHJlc3VsdC0+ZGF0YSwgbndvcmRzLCBzaXplb2YgKnJlc3VsdC0+ZGF0YSwgJmVycik7CisgICAgaWYgKCFlcnIpIHsKKyAgICAgICAgcmVzdWx0LT5hbGxvYyA9IG53b3JkczsKKyAgICB9CisgICAgZWxzZSBpZiAobndvcmRzID4gcmVzdWx0LT5hbGxvYykgeworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNzNjMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgTUVNT1JZX0gKKyNkZWZpbmUgTUVNT1JZX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworLyogSW50ZXJuYWwgaGVhZGVyIGZpbGU6IGFsbCBzeW1ib2xzIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTyAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKK2ludCBtcGRfc3dpdGNoX3RvX2R5bihtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfc3dpdGNoX3RvX2R5bl96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9yZWFsbG9jX2R5bihtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjExNzRkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwpAQCAtMCwwICsxLDgxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlICJiYXNlYXJpdGguaCIKKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAiY29udm9sdXRlLmgiCisjaW5jbHVkZSAiY3J0LmgiCisjaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisKKyNpZmRlZiBQUFJPCisgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgICNpbmNsdWRlIDxmbG9hdC5oPgorICAgICNwcmFnbWEgZmVudl9hY2Nlc3Mob24pCisgICNlbGlmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQorICAgIC8qIEM5OSAqLworICAgICNpbmNsdWRlIDxmZW52Lmg+CisgICAgI3ByYWdtYSBTVERDIEZFTlZfQUNDRVNTIE9OCisgICNlbmRpZgorI2VuZGlmCisKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICNkZWZpbmUgQUxXQVlTX0lOTElORSBfX2ZvcmNlaW5saW5lCisjZWxpZiBkZWZpbmVkKExFR0FDWV9DT01QSUxFUikKKyAgI2RlZmluZSBBTFdBWVNfSU5MSU5FCisgICN1bmRlZiBpbmxpbmUKKyAgI2RlZmluZSBpbmxpbmUKKyNlbHNlCisgICNpZmRlZiBURVNUX0NPVkVSQUdFCisgICAgI2RlZmluZSBBTFdBWVNfSU5MSU5FCisgICNlbHNlCisgICAgI2RlZmluZSBBTFdBWVNfSU5MSU5FIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisgICNlbmRpZgorI2VuZGlmCisKKworI2RlZmluZSBNUERfTkVXVE9ORElWX0NVVE9GRiAxMDI0TAorCisjZGVmaW5lIE1QRF9ORVdfU1RBVElDKG5hbWUsIGZsYWdzLCBleHAsIGRpZ2l0cywgbGVuKSBcCisgICAgICAgIG1wZF91aW50X3QgbmFtZSMjX2RhdGFbTVBEX01JTkFMTE9DX01BWF07ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1wZF90IG5hbWUgPSB7ZmxhZ3N8TVBEX1NUQVRJQ3xNUERfU1RBVElDX0RBVEEsIGV4cCwgZGlnaXRzLCBcCisgICAgICAgICAgICAgICAgICAgICAgbGVuLCBNUERfTUlOQUxMT0NfTUFYLCBuYW1lIyNfZGF0YX0KKworI2RlZmluZSBNUERfTkVXX0NPTlNUKG5hbWUsIGZsYWdzLCBleHAsIGRpZ2l0cywgbGVuLCBhbGxvYywgaW5pdHZhbCkgXAorICAgICAgICBtcGRfdWludF90IG5hbWUjI19kYXRhW2FsbG9jXSA9IHtpbml0dmFsfTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtcGRfdCBuYW1lID0ge2ZsYWdzfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIGV4cCwgZGlnaXRzLCAgXAorICAgICAgICAgICAgICAgICAgICAgIGxlbiwgYWxsb2MsIG5hbWUjI19kYXRhfQorCisjZGVmaW5lIE1QRF9ORVdfU0hBUkVEKG5hbWUsIGEpIFwKKyAgICAgICAgbXBkX3QgbmFtZSA9IHsoYS0+ZmxhZ3Mmfk1QRF9EQVRBRkxBR1MpfE1QRF9TVEFUSUN8TVBEX1NIQVJFRF9EQVRBLCBcCisgICAgICAgICAgICAgICAgICAgICAgYS0+ZXhwLCBhLT5kaWdpdHMsIGEtPmxlbiwgYS0+YWxsb2MsIGEtPmRhdGF9CisKKworc3RhdGljIG1wZF91aW50X3QgZGF0YV9vbmVbMV0gPSB7MX07CitzdGF0aWMgbXBkX3VpbnRfdCBkYXRhX3plcm9bMV0gPSB7MH07CitzdGF0aWMgY29uc3QgbXBkX3Qgb25lID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsIGRhdGFfb25lfTsKK3N0YXRpYyBjb25zdCBtcGRfdCBtaW51c19vbmUgPSB7TVBEX05FR3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxLCAxLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX29uZX07CitzdGF0aWMgY29uc3QgbXBkX3QgemVybyA9IHtNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxLCAxLCAxLCBkYXRhX3plcm99OworCitzdGF0aWMgaW5saW5lIHZvaWQgX21wZF9jaGVja19leHAobXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpOworc3RhdGljIHZvaWQgX3NldHRyaXBsZShtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24sIG1wZF91aW50X3QgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgbXBkX3NzaXplX3QgZXhwKTsKK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QgX21wZF9yZWFsX3NpemUobXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyB2b2lkIF9tcGRfcWFkZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBfbXBkX3FtdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworc3RhdGljIHZvaWQgX21wZF9iYXNlX25kaXZtb2QobXBkX3QgKnEsIG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBfbXBkX3Fwb3dfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IGV4cCwgdWludDhfdCByZXN1bHRzaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKK3N0YXRpYyBtcGRfdWludF90IG1wZF9xc3NoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3Qgbik7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2UgY3JpdGljYWwgaW5saW5lIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgQ09ORklHXzY0CisvKiBEaWdpdHMgaW4gYSB3b3JkLCBwcmltYXJpbHkgdXNlZnVsIGZvciB0aGUgbW9zdCBzaWduaWZpY2FudCB3b3JkLiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF93b3JkX2RpZ2l0cyhtcGRfdWludF90IHdvcmQpCit7CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbOV0pIHsKKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbNF0pIHsKKyAgICAgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzJdKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzFdKSA/IDEgOiAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzNdKSA/IDMgOiA0OworICAgICAgICB9CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzZdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbNV0pID8gNSA6IDY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbOF0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs3XSkgPyA3IDogODsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gOTsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMTRdKSB7CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzExXSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzEwXSkgPyAxMCA6IDExOworICAgICAgICB9CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzEzXSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzEyXSkgPyAxMiA6IDEzOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxNDsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMThdKSB7CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzE2XSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzE1XSkgPyAxNSA6IDE2OworICAgICAgICB9CisgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxN10pID8gMTcgOiAxODsKKyAgICB9CisKKyAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMTldKSA/IDE5IDogMjA7Cit9CisjZWxzZQorQUxXQVlTX0lOTElORSBpbnQKK21wZF93b3JkX2RpZ2l0cyhtcGRfdWludF90IHdvcmQpCit7CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbNF0pIHsKKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMl0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxXSkgPyAxIDogMjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbM10pID8gMyA6IDQ7CisgICAgfQorICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzZdKSB7CisgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs1XSkgPyA1IDogNjsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbOF0pIHsKKyAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzddKSA/IDcgOiA4OworICAgIH0KKworICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs5XSkgPyA5IDogMTA7Cit9CisjZW5kaWYKKworCisvKiBBZGp1c3RlZCBleHBvbmVudCAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2FkamV4cChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAoZGVjLT5leHAgKyBkZWMtPmRpZ2l0cykgLSAxOworfQorCisvKiBFdGlueSAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2V0aW55KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5lbWluIC0gKGN0eC0+cHJlYyAtIDEpOworfQorCisvKiBFdG9wOiB1c2VkIGZvciBmb2xkaW5nIGRvd24gaW4gSUVFRSBjbGFtcGluZyAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2V0b3AoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtYXggLSAoY3R4LT5wcmVjIC0gMSk7Cit9CisKKy8qIE1vc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworQUxXQVlTX0lOTElORSBtcGRfdWludF90CittcGRfbXN3b3JkKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgYXNzZXJ0KGRlYy0+bGVuID4gMCk7CisgICAgcmV0dXJuIGRlYy0+ZGF0YVtkZWMtPmxlbi0xXTsKK30KKworLyogTW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBhIHdvcmQgKi8KK2lubGluZSBtcGRfdWludF90CittcGRfbXNkKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICBpbnQgbjsKKworICAgIG4gPSBtcGRfd29yZF9kaWdpdHMod29yZCk7CisgICAgcmV0dXJuIHdvcmQgLyBtcGRfcG93MTBbbi0xXTsKK30KKworLyogTGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgYSB3b3JkICovCitBTFdBWVNfSU5MSU5FIG1wZF91aW50X3QKK21wZF9sc2QobXBkX3VpbnRfdCB3b3JkKQoreworICAgIHJldHVybiB3b3JkICUgMTA7Cit9CisKKy8qIENvZWZmaWNpZW50IHNpemUgbmVlZGVkIHRvIHN0b3JlICdkaWdpdHMnICovCitBTFdBWVNfSU5MSU5FIG1wZF9zc2l6ZV90CittcGRfZGlnaXRzX3RvX3NpemUobXBkX3NzaXplX3QgZGlnaXRzKQoreworICAgIG1wZF9zc2l6ZV90IHEsIHI7CisKKyAgICBfbXBkX2lkaXZfd29yZCgmcSwgJnIsIGRpZ2l0cywgTVBEX1JESUdJVFMpOworICAgIHJldHVybiAociA9PSAwKSA/IHEgOiBxKzE7Cit9CisKKy8qIE51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4cG9uZW50LiBOb3QgZGVmaW5lZCBmb3IgTVBEX1NTSVpFX01JTi4gKi8KK2lubGluZSBpbnQKK21wZF9leHBfZGlnaXRzKG1wZF9zc2l6ZV90IGV4cCkKK3sKKyAgICBleHAgPSAoZXhwIDwgMCkgPyAtZXhwIDogZXhwOworICAgIHJldHVybiBtcGRfd29yZF9kaWdpdHMoZXhwKTsKK30KKworLyogQ2Fub25pY2FsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzY2Fub25pY2FsKGNvbnN0IG1wZF90ICpkZWMgVU5VU0VEKQoreworICAgIHJldHVybiAxOworfQorCisvKiBGaW5pdGUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNmaW5pdGUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIShkZWMtPmZsYWdzICYgTVBEX1NQRUNJQUwpOworfQorCisvKiBJbmZpbml0ZSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2luZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfSU5GOworfQorCisvKiBOYU4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNuYW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIChNUERfTkFOfE1QRF9TTkFOKTsKK30KKworLyogTmVnYXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNuZWdhdGl2ZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX05FRzsKK30KKworLyogUG9zaXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNwb3NpdGl2ZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhKGRlYy0+ZmxhZ3MgJiBNUERfTkVHKTsKK30KKworLyogcU5hTiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3FuYW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9OQU47Cit9CisKKy8qIFNpZ25lZCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3NpZ25lZChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX05FRzsKK30KKworLyogc05hTiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3NuYW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9TTkFOOworfQorCisvKiBTcGVjaWFsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc3BlY2lhbChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NQRUNJQUw7Cit9CisKKy8qIFplcm8gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXN6ZXJvKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICFtcGRfaXNzcGVjaWFsKGRlYykgJiYgbXBkX21zd29yZChkZWMpID09IDA7Cit9CisKKy8qIFRlc3QgZm9yIHplcm8gd2hlbiBzcGVjaWFscyBoYXZlIGJlZW4gcnVsZWQgb3V0IGFscmVhZHkgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXN6ZXJvY29lZmYoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gbXBkX21zd29yZChkZWMpID09IDA7Cit9CisKKy8qIE5vcm1hbCAqLworaW5saW5lIGludAorbXBkX2lzbm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSByZXR1cm4gMDsKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHJldHVybiAwOworCisgICAgcmV0dXJuIG1wZF9hZGpleHAoZGVjKSA+PSBjdHgtPmVtaW47Cit9CisKKy8qIFN1Ym5vcm1hbCAqLworaW5saW5lIGludAorbXBkX2lzc3Vibm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSByZXR1cm4gMDsKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHJldHVybiAwOworCisgICAgcmV0dXJuIG1wZF9hZGpleHAoZGVjKSA8IGN0eC0+ZW1pbjsKK30KKworLyogT2RkIHdvcmQgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNvZGR3b3JkKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICByZXR1cm4gd29yZCAmIDE7Cit9CisKKy8qIE9kZCBjb2VmZmljaWVudCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc29kZGNvZWZmKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIG1wZF9pc29kZHdvcmQoZGVjLT5kYXRhWzBdKTsKK30KKworLyogMCBpZiBkZWMgaXMgcG9zaXRpdmUsIDEgaWYgZGVjIGlzIG5lZ2F0aXZlICovCitBTFdBWVNfSU5MSU5FIHVpbnQ4X3QKK21wZF9zaWduKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfTkVHOworfQorCisvKiAxIGlmIGRlYyBpcyBwb3NpdGl2ZSwgLTEgaWYgZGVjIGlzIG5lZ2F0aXZlICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2FyaXRoX3NpZ24oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gMSAtIDIgKiBtcGRfaXNuZWdhdGl2ZShkZWMpOworfQorCisvKiBSYWRpeCAqLworQUxXQVlTX0lOTElORSBsb25nCittcGRfcmFkaXgodm9pZCkKK3sKKyAgICByZXR1cm4gMTA7Cit9CisKKy8qIER5bmFtaWMgZGVjaW1hbCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2R5bmFtaWMobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIShkZWMtPmZsYWdzICYgTVBEX1NUQVRJQyk7Cit9CisKKy8qIFN0YXRpYyBkZWNpbWFsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc3RhdGljKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU1RBVElDOworfQorCisvKiBEYXRhIG9mIGRlY2ltYWwgaXMgZHluYW1pYyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2R5bmFtaWNfZGF0YShtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhKGRlYy0+ZmxhZ3MgJiBNUERfREFUQUZMQUdTKTsKK30KKworLyogRGF0YSBvZiBkZWNpbWFsIGlzIHN0YXRpYyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3N0YXRpY19kYXRhKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU1RBVElDX0RBVEE7Cit9CisKKy8qIERhdGEgb2YgZGVjaW1hbCBpcyBzaGFyZWQgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzaGFyZWRfZGF0YShtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NIQVJFRF9EQVRBOworfQorCisvKiBEYXRhIG9mIGRlY2ltYWwgaXMgY29uc3QgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNjb25zdF9kYXRhKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfQ09OU1RfREFUQTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgSW5saW5lIG1lbW9yeSBoYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEZpbGwgZGVzdGluYXRpb24gd2l0aCB6ZXJvcyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfdWludF96ZXJvKG1wZF91aW50X3QgKmRlc3QsIG1wZF9zaXplX3QgbGVuKQoreworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBkZXN0W2ldID0gMDsKKyAgICB9Cit9CisKKy8qIEZyZWUgYSBkZWNpbWFsICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9kZWwobXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX2lzZHluYW1pY19kYXRhKGRlYykpIHsKKyAgICAgICAgbXBkX2ZyZWUoZGVjLT5kYXRhKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc2R5bmFtaWMoZGVjKSkgeworICAgICAgICBtcGRfZnJlZShkZWMpOworICAgIH0KK30KKworLyoKKyAqIFJlc2l6ZSB0aGUgY29lZmZpY2llbnQuIEV4aXN0aW5nIGRhdGEgdXAgdG8gJ253b3JkcycgaXMgbGVmdCB1bnRvdWNoZWQuCisgKiBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG90aGVyd2lzZS4KKyAqCisgKiBJbnB1dCBpbnZhcmlhbnQ6IE1QRF9NSU5BTExPQyA8PSByZXN1bHQtPmFsbG9jLgorICoKKyAqIENhc2UgbndvcmRzID09IHJlc3VsdC0+YWxsb2M6CisgKiAgICAgJ3Jlc3VsdCcgaXMgdW5jaGFuZ2VkLiBSZXR1cm4gMS4KKyAqCisgKiBDYXNlIG53b3JkcyA+IHJlc3VsdC0+YWxsb2M6CisgKiAgIENhc2UgcmVhbGxvYyBzdWNjZXNzOgorICogICAgIFRoZSB2YWx1ZSBvZiAncmVzdWx0JyBkb2VzIG5vdCBjaGFuZ2UuIFJldHVybiAxLgorICogICBDYXNlIHJlYWxsb2MgZmFpbHVyZToKKyAqICAgICAncmVzdWx0JyBpcyBOYU4sIHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggTVBEX01hbGxvY19lcnJvci4gUmV0dXJuIDAuCisgKgorICogQ2FzZSBud29yZHMgPCByZXN1bHQtPmFsbG9jOgorICogICBDYXNlIGlzX3N0YXRpY19kYXRhIG9yIHJlYWxsb2MgZmFpbHVyZSBbMV06CisgKiAgICAgJ3Jlc3VsdCcgaXMgdW5jaGFuZ2VkLiBSZXR1cm4gMS4KKyAqICAgQ2FzZSByZWFsbG9jIHN1Y2Nlc3M6CisgKiAgICAgVGhlIHZhbHVlIG9mIHJlc3VsdCBpcyB1bmRlZmluZWQgKGV4cGVjdGVkKS4gUmV0dXJuIDEuCisgKgorICoKKyAqIFsxXSBJbiB0aGF0IGNhc2UgdGhlIG9sZCAobm93IG92ZXJzaXplZCkgYXJlYSBpcyBzdGlsbCB2YWxpZC4KKyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9xcmVzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBhc3NlcnQoIW1wZF9pc2NvbnN0X2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIGNvbnN0ICovCisgICAgYXNzZXJ0KCFtcGRfaXNzaGFyZWRfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgc2hhcmVkICovCisgICAgYXNzZXJ0KE1QRF9NSU5BTExPQyA8PSByZXN1bHQtPmFsbG9jKTsKKworICAgIG53b3JkcyA9IChud29yZHMgPD0gTVBEX01JTkFMTE9DKSA/IE1QRF9NSU5BTExPQyA6IG53b3JkczsKKyAgICBpZiAobndvcmRzID09IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChtcGRfaXNzdGF0aWNfZGF0YShyZXN1bHQpKSB7CisgICAgICAgIGlmIChud29yZHMgPiByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgICAgICByZXR1cm4gbXBkX3N3aXRjaF90b19keW4ocmVzdWx0LCBud29yZHMsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9yZWFsbG9jX2R5bihyZXN1bHQsIG53b3Jkcywgc3RhdHVzKTsKK30KKworLyogU2FtZSBhcyBtcGRfcXJlc2l6ZSwgYnV0IHRoZSBjb21wbGV0ZSBjb2VmZmljaWVudCAoaW5jbHVkaW5nIHRoZSBvbGQKKyAqIG1lbW9yeSBhcmVhISkgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfcXJlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBhc3NlcnQoIW1wZF9pc2NvbnN0X2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIGNvbnN0ICovCisgICAgYXNzZXJ0KCFtcGRfaXNzaGFyZWRfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgc2hhcmVkICovCisgICAgYXNzZXJ0KE1QRF9NSU5BTExPQyA8PSByZXN1bHQtPmFsbG9jKTsKKworICAgIG53b3JkcyA9IChud29yZHMgPD0gTVBEX01JTkFMTE9DKSA/IE1QRF9NSU5BTExPQyA6IG53b3JkczsKKyAgICBpZiAobndvcmRzICE9IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgaWYgKG1wZF9pc3N0YXRpY19kYXRhKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChud29yZHMgPiByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1wZF9zd2l0Y2hfdG9fZHluX3plcm8ocmVzdWx0LCBud29yZHMsIHN0YXR1cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIW1wZF9yZWFsbG9jX2R5bihyZXN1bHQsIG53b3Jkcywgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfdWludF96ZXJvKHJlc3VsdC0+ZGF0YSwgbndvcmRzKTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFJlZHVjZSBtZW1vcnkgc2l6ZSBmb3IgdGhlIGNvZWZmaWNpZW50IHRvIE1QRF9NSU5BTExPQy4gSW4gdGhlb3J5LAorICogcmVhbGxvYyBtYXkgZmFpbCBldmVuIHdoZW4gcmVkdWNpbmcgdGhlIG1lbW9yeSBzaXplLiBCdXQgaW4gdGhhdCBjYXNlCisgKiB0aGUgb2xkIG1lbW9yeSBhcmVhIGlzIGFsd2F5cyBiaWcgZW5vdWdoLCBzbyBjaGVja2luZyBmb3IgTVBEX01hbGxvY19lcnJvcgorICogaXMgbm90IGltcGVyYXRpdmUuCisgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX21pbmFsbG9jKG1wZF90ICpyZXN1bHQpCit7CisgICAgYXNzZXJ0KCFtcGRfaXNjb25zdF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBjb25zdCAqLworICAgIGFzc2VydCghbXBkX2lzc2hhcmVkX2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIHNoYXJlZCAqLworCisgICAgaWYgKCFtcGRfaXNzdGF0aWNfZGF0YShyZXN1bHQpICYmIHJlc3VsdC0+YWxsb2MgPiBNUERfTUlOQUxMT0MpIHsKKyAgICAgICAgdWludDhfdCBlcnIgPSAwOworICAgICAgICByZXN1bHQtPmRhdGEgPSBtcGRfcmVhbGxvYyhyZXN1bHQtPmRhdGEsIE1QRF9NSU5BTExPQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mICpyZXN1bHQtPmRhdGEsICZlcnIpOworICAgICAgICBpZiAoIWVycikgeworICAgICAgICAgICAgcmVzdWx0LT5hbGxvYyA9IE1QRF9NSU5BTExPQzsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50CittcGRfcmVzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIG53b3JkcywgJnN0YXR1cykpIHsKKyAgICAgICAgbXBkX2FkZHN0YXR1c19yYWlzZShjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcmVzaXplX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBpZiAoIW1wZF9xcmVzaXplX3plcm8ocmVzdWx0LCBud29yZHMsICZzdGF0dXMpKSB7CisgICAgICAgIG1wZF9hZGRzdGF0dXNfcmFpc2UoY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXR0cmlidXRlcyBvZiBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBTZXQgZGlnaXRzLiBBc3N1bXB0aW9uOiByZXN1bHQtPmxlbiBpcyBpbml0aWFsaXplZCBhbmQgPiAwLiAqLworaW5saW5lIHZvaWQKK21wZF9zZXRkaWdpdHMobXBkX3QgKnJlc3VsdCkKK3sKKyAgICBtcGRfc3NpemVfdCB3ZGlnaXRzID0gbXBkX3dvcmRfZGlnaXRzKG1wZF9tc3dvcmQocmVzdWx0KSk7CisgICAgcmVzdWx0LT5kaWdpdHMgPSB3ZGlnaXRzICsgKHJlc3VsdC0+bGVuLTEpICogTVBEX1JESUdJVFM7Cit9CisKKy8qIFNldCBzaWduICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc2lnbihtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24pCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX05FRzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IHNpZ247Cit9CisKKy8qIENvcHkgc2lnbiBmcm9tIGFub3RoZXIgZGVjaW1hbCAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2lnbmNweShtcGRfdCAqcmVzdWx0LCBtcGRfdCAqYSkKK3sKKyAgICB1aW50OF90IHNpZ24gPSBhLT5mbGFncyZNUERfTkVHOworCisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX05FRzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IHNpZ247Cit9CisKKy8qIFNldCBpbmZpbml0eSAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2luZmluaXR5KG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX1NQRUNJQUw7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfSU5GOworfQorCisvKiBTZXQgcU5hTiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3FuYW4obXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfU1BFQ0lBTDsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9OQU47Cit9CisKKy8qIFNldCBzTmFOICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc25hbihtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9TUEVDSUFMOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX1NOQU47Cit9CisKKy8qIFNldCB0byBuZWdhdGl2ZSAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X25lZ2F0aXZlKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfTkVHOworfQorCisvKiBTZXQgdG8gcG9zaXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9wb3NpdGl2ZShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9ORUc7Cit9CisKKy8qIFNldCB0byBkeW5hbWljICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfZHluYW1pYyhtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9TVEFUSUM7Cit9CisKKy8qIFNldCB0byBzdGF0aWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zdGF0aWMobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9TVEFUSUM7Cit9CisKKy8qIFNldCBkYXRhIHRvIGR5bmFtaWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9keW5hbWljX2RhdGEobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfREFUQUZMQUdTOworfQorCisvKiBTZXQgZGF0YSB0byBzdGF0aWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zdGF0aWNfZGF0YShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9EQVRBRkxBR1M7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfU1RBVElDX0RBVEE7Cit9CisKKy8qIFNldCBkYXRhIHRvIHNoYXJlZCAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3NoYXJlZF9kYXRhKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX0RBVEFGTEFHUzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9TSEFSRURfREFUQTsKK30KKworLyogU2V0IGRhdGEgdG8gY29uc3QgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9jb25zdF9kYXRhKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX0RBVEFGTEFHUzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9DT05TVF9EQVRBOworfQorCisvKiBDbGVhciBmbGFncywgcHJlc2VydmluZyBtZW1vcnkgYXR0cmlidXRlcy4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX2NsZWFyX2ZsYWdzKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSAoTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKTsKK30KKworLyogU2V0IGZsYWdzLCBwcmVzZXJ2aW5nIG1lbW9yeSBhdHRyaWJ1dGVzLiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2ZsYWdzKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3QgZmxhZ3MpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSAoTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKTsKKyAgICByZXN1bHQtPmZsYWdzIHw9IGZsYWdzOworfQorCisvKiBDb3B5IGZsYWdzLCBwcmVzZXJ2aW5nIG1lbW9yeSBhdHRyaWJ1dGVzIG9mIHJlc3VsdC4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX2NvcHlfZmxhZ3MobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEpCit7CisgICAgdWludDhfdCBhZmxhZ3MgPSBhLT5mbGFnczsKKyAgICByZXN1bHQtPmZsYWdzICY9IChNUERfU1RBVElDfE1QRF9EQVRBRkxBR1MpOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gKGFmbGFncyAmIH4oTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKSk7Cit9CisKKy8qIEluaXRpYWxpemUgYSB3b3JrY29udGV4dCBmcm9tIGN0eC4gU2V0IHRyYXBzLCBmbGFncyBhbmQgbmV3dHJhcCB0byAwLiAqLworc3RhdGljIGlubGluZSB2b2lkCittcGRfd29ya2NvbnRleHQobXBkX2NvbnRleHRfdCAqd29ya2N0eCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHdvcmtjdHgtPnByZWMgPSBjdHgtPnByZWM7CisgICAgd29ya2N0eC0+ZW1heCA9IGN0eC0+ZW1heDsKKyAgICB3b3JrY3R4LT5lbWluID0gY3R4LT5lbWluOworICAgIHdvcmtjdHgtPnJvdW5kID0gY3R4LT5yb3VuZDsKKyAgICB3b3JrY3R4LT50cmFwcyA9IDA7CisgICAgd29ya2N0eC0+c3RhdHVzID0gMDsKKyAgICB3b3JrY3R4LT5uZXd0cmFwID0gMDsKKyAgICB3b3JrY3R4LT5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgd29ya2N0eC0+YWxsY3IgPSBjdHgtPmFsbGNyOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgIEdldHRpbmcgYW5kIHNldHRpbmcgcGFydHMgb2YgZGVjaW1hbHMgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRmxpcCB0aGUgc2lnbiBvZiBhIGRlY2ltYWwgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9uZWdhdGUobXBkX3QgKmRlYykKK3sKKyAgICBkZWMtPmZsYWdzIF49IE1QRF9ORUc7Cit9CisKKy8qIFNldCBjb2VmZmljaWVudCB0byB6ZXJvICovCit2b2lkCittcGRfemVyb2NvZWZmKG1wZF90ICpyZXN1bHQpCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgcmVzdWx0LT5kaWdpdHMgPSAxOworICAgIHJlc3VsdC0+bGVuID0gMTsKKyAgICByZXN1bHQtPmRhdGFbMF0gPSAwOworfQorCisvKiBTZXQgdGhlIGNvZWZmaWNpZW50IHRvIGFsbCBuaW5lcy4gKi8KK3ZvaWQKK21wZF9xbWF4Y29lZmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGxlbiwgcjsKKworICAgIF9tcGRfaWRpdl93b3JkKCZsZW4sICZyLCBjdHgtPnByZWMsIE1QRF9SRElHSVRTKTsKKyAgICBsZW4gPSAociA9PSAwKSA/IGxlbiA6IGxlbisxOworCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgcmVzdWx0LT5kaWdpdHMgPSBjdHgtPnByZWM7CisKKyAgICAtLWxlbjsKKyAgICBpZiAociA+IDApIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhW2xlbi0tXSA9IG1wZF9wb3cxMFtyXS0xOworICAgIH0KKyAgICBmb3IgKDsgbGVuID49IDA7IC0tbGVuKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW5dID0gTVBEX1JBRElYLTE7CisgICAgfQorfQorCisvKgorICogQ3V0IG9mZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMgc28gdGhhdCB0aGUgcmVzdCBmaXRzIGluIGN0eC0+cHJlYy4KKyAqIENhbm5vdCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorX21wZF9jYXAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IGR1bW15OworICAgIG1wZF9zc2l6ZV90IGxlbiwgcjsKKworICAgIGlmIChyZXN1bHQtPmxlbiA+IDAgJiYgcmVzdWx0LT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgX21wZF9pZGl2X3dvcmQoJmxlbiwgJnIsIGN0eC0+cHJlYywgTVBEX1JESUdJVFMpOworICAgICAgICBsZW4gPSAociA9PSAwKSA/IGxlbiA6IGxlbisxOworCisgICAgICAgIGlmIChyICE9IDApIHsKKyAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW4tMV0gJT0gbXBkX3BvdzEwW3JdOworICAgICAgICB9CisKKyAgICAgICAgbGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBsZW4pOworICAgICAgICAvKiByZXNpemUgdG8gZmV3ZXIgd29yZHMgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sICZkdW1teSk7CisgICAgICAgIHJlc3VsdC0+bGVuID0gbGVuOworICAgICAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvKHJlc3VsdCkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKHJlc3VsdCksIDAsIHJlc3VsdC0+ZXhwKTsKKyAgICB9Cit9CisKKy8qCisgKiBDdXQgb2ZmIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cyBvZiBhIE5hTiBwYXlsb2FkIHNvIHRoYXQgdGhlIHJlc3QKKyAqIGZpdHMgaW4gY3R4LT5wcmVjIC0gY3R4LT5jbGFtcC4gQ2Fubm90IGZhaWwuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2ZpeF9uYW4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IGR1bW15OworICAgIG1wZF9zc2l6ZV90IHByZWM7CisgICAgbXBkX3NzaXplX3QgbGVuLCByOworCisgICAgcHJlYyA9IGN0eC0+cHJlYyAtIGN0eC0+Y2xhbXA7CisgICAgaWYgKHJlc3VsdC0+bGVuID4gMCAmJiByZXN1bHQtPmRpZ2l0cyA+IHByZWMpIHsKKyAgICAgICAgaWYgKHByZWMgPT0gMCkgeworICAgICAgICAgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPmxlbiA9IHJlc3VsdC0+ZGlnaXRzID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9tcGRfaWRpdl93b3JkKCZsZW4sICZyLCBwcmVjLCBNUERfUkRJR0lUUyk7CisgICAgICAgICAgICBsZW4gPSAociA9PSAwKSA/IGxlbiA6IGxlbisxOworCisgICAgICAgICAgICBpZiAociAhPSAwKSB7CisgICAgICAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW4tMV0gJT0gbXBkX3BvdzEwW3JdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGxlbik7CisgICAgICAgICAgICAvKiByZXNpemUgdG8gZmV3ZXIgd29yZHMgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgbGVuLCAmZHVtbXkpOworICAgICAgICAgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgICAgICAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICAvKiBOYU4wIGlzIG5vdCBhIHZhbGlkIHJlcHJlc2VudGF0aW9uICovCisgICAgICAgICAgICAgICAgcmVzdWx0LT5sZW4gPSByZXN1bHQtPmRpZ2l0cyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBHZXQgbiBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cyBmcm9tIGEgZGVjaW1hbCwgd2hlcmUgMCA8IG4gPD0gTVBEX1VJTlRfRElHSVRTLgorICogQXNzdW1lcyBNUERfVUlOVF9ESUdJVFMgPT0gTVBEX1JESUdJVFMrMSwgd2hpY2ggaXMgdHJ1ZSBmb3IgMzIgYW5kIDY0IGJpdAorICogbWFjaGluZXMuCisgKgorICogVGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIHdpbGwgYmUgaW4gbG8uIElmIHRoZSBvcGVyYXRpb24gaXMgaW1wb3NzaWJsZSwKKyAqIGhpIHdpbGwgYmUgbm9uemVyby4gVGhpcyBpcyB1c2VkIHRvIGluZGljYXRlIGFuIGVycm9yLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZ2V0X21zZGlnaXRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgY29uc3QgbXBkX3QgKmRlYywKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuKQoreworICAgIG1wZF91aW50X3QgciwgdG1wOworCisgICAgYXNzZXJ0KDAgPCBuICYmIG4gPD0gTVBEX1JESUdJVFMrMSk7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZ0bXAsICZyLCBkZWMtPmRpZ2l0cywgTVBEX1JESUdJVFMpOworICAgIHIgPSAociA9PSAwKSA/IE1QRF9SRElHSVRTIDogcjsgLyogZGlnaXRzIGluIHRoZSBtb3N0IHNpZ25pZmljYW50IHdvcmQgKi8KKworICAgICpoaSA9IDA7CisgICAgKmxvID0gZGVjLT5kYXRhW2RlYy0+bGVuLTFdOworICAgIGlmIChuIDw9IHIpIHsKKyAgICAgICAgKmxvIC89IG1wZF9wb3cxMFtyLW5dOworICAgIH0KKyAgICBlbHNlIGlmIChkZWMtPmxlbiA+IDEpIHsKKyAgICAgICAgLyogYXQgdGhpcyBwb2ludCAxIDw9IHIgPCBuIDw9IE1QRF9SRElHSVRTKzEgKi8KKyAgICAgICAgX21wZF9tdWxfd29yZHMoaGksIGxvLCAqbG8sIG1wZF9wb3cxMFtuLXJdKTsKKyAgICAgICAgdG1wID0gZGVjLT5kYXRhW2RlYy0+bGVuLTJdIC8gbXBkX3BvdzEwW01QRF9SRElHSVRTLShuLXIpXTsKKyAgICAgICAgKmxvID0gKmxvICsgdG1wOworICAgICAgICBpZiAoKmxvIDwgdG1wKSAoKmhpKSsrOworICAgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgR2F0aGVyaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgZGVjaW1hbCAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSByZWFsIHNpemUgb2YgdGhlIGNvZWZmaWNpZW50IHdpdGhvdXQgbGVhZGluZyB6ZXJvIHdvcmRzLiAqLworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdAorX21wZF9yZWFsX3NpemUobXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3Qgc2l6ZSkKK3sKKyAgICB3aGlsZSAoc2l6ZSA+IDEgJiYgZGF0YVtzaXplLTFdID09IDApIHsKKyAgICAgICAgc2l6ZS0tOworICAgIH0KKworICAgIHJldHVybiBzaXplOworfQorCisvKiBSZXR1cm4gbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zLiBObyBlcnJvcnMgYXJlIHBvc3NpYmxlLiAqLworbXBkX3NzaXplX3QKK21wZF90cmFpbF96ZXJvcyhjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3Qgd29yZDsKKyAgICBtcGRfc3NpemVfdCBpLCB0eiA9IDA7CisKKyAgICBmb3IgKGk9MDsgaSA8IGRlYy0+bGVuOyArK2kpIHsKKyAgICAgICAgaWYgKGRlYy0+ZGF0YVtpXSAhPSAwKSB7CisgICAgICAgICAgICB3b3JkID0gZGVjLT5kYXRhW2ldOworICAgICAgICAgICAgdHogPSBpICogTVBEX1JESUdJVFM7CisgICAgICAgICAgICB3aGlsZSAod29yZCAlIDEwID09IDApIHsKKyAgICAgICAgICAgICAgICB3b3JkIC89IDEwOworICAgICAgICAgICAgICAgIHR6Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0ejsKK30KKworLyogSW50ZWdlcjogVW5kZWZpbmVkIGZvciBzcGVjaWFscyAqLworc3RhdGljIGludAorX21wZF9pc2ludChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF9zc2l6ZV90IHR6OworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHR6ID0gbXBkX3RyYWlsX3plcm9zKGRlYyk7CisgICAgcmV0dXJuIChkZWMtPmV4cCArIHR6ID49IDApOworfQorCisvKiBJbnRlZ2VyICovCitpbnQKK21wZF9pc2ludGVnZXIoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gX21wZF9pc2ludChkZWMpOworfQorCisvKiBXb3JkIGlzIGEgcG93ZXIgb2YgMTAgKi8KK3N0YXRpYyBpbnQKK21wZF93b3JkX2lzcG93MTAobXBkX3VpbnRfdCB3b3JkKQoreworICAgIGludCBuOworCisgICAgbiA9IG1wZF93b3JkX2RpZ2l0cyh3b3JkKTsKKyAgICBpZiAod29yZCA9PSBtcGRfcG93MTBbbi0xXSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29lZmZpY2llbnQgaXMgYSBwb3dlciBvZiAxMCAqLworc3RhdGljIGludAorbXBkX2NvZWZmX2lzcG93MTAoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX3dvcmRfaXNwb3cxMChtcGRfbXN3b3JkKGRlYykpKSB7CisgICAgICAgIGlmIChfbXBkX2lzYWxsemVybyhkZWMtPmRhdGEsIGRlYy0+bGVuLTEpKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBBbGwgZGlnaXRzIG9mIGEgd29yZCBhcmUgbmluZXMgKi8KK3N0YXRpYyBpbnQKK21wZF93b3JkX2lzYWxsbmluZShtcGRfdWludF90IHdvcmQpCit7CisgICAgaW50IG47CisKKyAgICBuID0gbXBkX3dvcmRfZGlnaXRzKHdvcmQpOworICAgIGlmICh3b3JkID09IG1wZF9wb3cxMFtuXS0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBBbGwgZGlnaXRzIG9mIHRoZSBjb2VmZmljaWVudCBhcmUgbmluZXMgKi8KK3N0YXRpYyBpbnQKK21wZF9jb2VmZl9pc2FsbG5pbmUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBpZiAobXBkX3dvcmRfaXNhbGxuaW5lKG1wZF9tc3dvcmQoZGVjKSkpIHsKKyAgICAgICAgaWYgKF9tcGRfaXNhbGxuaW5lKGRlYy0+ZGF0YSwgZGVjLT5sZW4tMSkpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIE9kZCBkZWNpbWFsOiBVbmRlZmluZWQgZm9yIG5vbi1pbnRlZ2VycyEgKi8KK2ludAorbXBkX2lzb2RkKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIGFzc2VydChtcGRfaXNpbnRlZ2VyKGRlYykpOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgcmV0dXJuIDA7CisgICAgaWYgKGRlYy0+ZXhwIDwgMCkgeworICAgICAgICBfbXBkX2Rpdl93b3JkKCZxLCAmciwgLWRlYy0+ZXhwLCBNUERfUkRJR0lUUyk7CisgICAgICAgIHEgPSBkZWMtPmRhdGFbcV0gLyBtcGRfcG93MTBbcl07CisgICAgICAgIHJldHVybiBtcGRfaXNvZGR3b3JkKHEpOworICAgIH0KKyAgICByZXR1cm4gZGVjLT5leHAgPT0gMCAmJiBtcGRfaXNvZGR3b3JkKGRlYy0+ZGF0YVswXSk7Cit9CisKKy8qIEV2ZW46IFVuZGVmaW5lZCBmb3Igbm9uLWludGVnZXJzISAqLworaW50CittcGRfaXNldmVuKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICFtcGRfaXNvZGQoZGVjKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgIEdldHRpbmcgYW5kIHNldHRpbmcgZGVjaW1hbHMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbnRlcm5hbCBmdW5jdGlvbjogU2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhIHRyaXBsZSwgbm8gZXJyb3IgY2hlY2tpbmcuICovCitzdGF0aWMgdm9pZAorX3NzZXR0cmlwbGUobXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduLCBtcGRfdWludF90IGEsIG1wZF9zc2l6ZV90IGV4cCkKK3sKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgX21wZF9kaXZfd29yZCgmcmVzdWx0LT5kYXRhWzFdLCAmcmVzdWx0LT5kYXRhWzBdLCBhLCBNUERfUkFESVgpOworICAgIHJlc3VsdC0+bGVuID0gKHJlc3VsdC0+ZGF0YVsxXSA9PSAwKSA/IDEgOiAyOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKK30KKworLyogSW50ZXJuYWwgZnVuY3Rpb246IFNldCBhIGRlY2ltYWwgZnJvbSBhIHRyaXBsZSwgbm8gZXJyb3IgY2hlY2tpbmcuICovCitzdGF0aWMgdm9pZAorX3NldHRyaXBsZShtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24sIG1wZF91aW50X3QgYSwgbXBkX3NzaXplX3QgZXhwKQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IGV4cDsKKyAgICBfbXBkX2Rpdl93b3JkKCZyZXN1bHQtPmRhdGFbMV0sICZyZXN1bHQtPmRhdGFbMF0sIGEsIE1QRF9SQURJWCk7CisgICAgcmVzdWx0LT5sZW4gPSAocmVzdWx0LT5kYXRhWzFdID09IDApID8gMSA6IDI7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworfQorCisvKiBTZXQgYSBzcGVjaWFsIG51bWJlciBmcm9tIGEgdHJpcGxlICovCit2b2lkCittcGRfc2V0c3BlY2lhbChtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24sIHVpbnQ4X3QgdHlwZSkKK3sKKyAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICByZXN1bHQtPmZsYWdzICY9IH4oTVBEX05FR3xNUERfU1BFQ0lBTCk7CisgICAgcmVzdWx0LT5mbGFncyB8PSAoc2lnbnx0eXBlKTsKKyAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworfQorCisvKiBTZXQgcmVzdWx0IG9mIE5hTiB3aXRoIGFuIGVycm9yIHN0YXR1cyAqLwordm9pZAorbXBkX3NldGVycm9yKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICpzdGF0dXMgfD0gZmxhZ3M7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhbiBtcGRfc3NpemVfdCAqLwordm9pZAorbXBkX3Fzc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgdTsKKyAgICB1aW50OF90IHNpZ24gPSBNUERfUE9TOworCisgICAgaWYgKGEgPCAwKSB7CisgICAgICAgIGlmIChhID09IE1QRF9TU0laRV9NSU4pIHsKKyAgICAgICAgICAgIHUgPSAobXBkX3VpbnRfdClNUERfU1NJWkVfTUFYICsKKyAgICAgICAgICAgICAgICAoLShNUERfU1NJWkVfTUlOK01QRF9TU0laRV9NQVgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHUgPSAtYTsKKyAgICAgICAgfQorICAgICAgICBzaWduID0gTVBEX05FRzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHUgPSBhOworICAgIH0KKyAgICBfc3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIHUsIDApOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhbiBtcGRfdWludF90ICovCit2b2lkCittcGRfcXNzZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX3NzZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCBhLCAwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYW4gaW50MzJfdCAqLwordm9pZAorbXBkX3Fzc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNzZXRfc3NpemUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhIHVpbnQzMl90ICovCit2b2lkCittcGRfcXNzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNzZXRfdWludChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGFuIGludDY0X3QgKi8KK3ZvaWQKK21wZF9xc3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3Fzc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYSB1aW50NjRfdCAqLwordm9pZAorbXBkX3Fzc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3Fzc2V0X3VpbnQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYW4gbXBkX3NzaXplX3QgKi8KK3ZvaWQKK21wZF9xc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhbiBtcGRfdWludF90ICovCit2b2lkCittcGRfcXNldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCBhLCAwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhbiBpbnQzMl90ICovCit2b2lkCittcGRfcXNldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNldF9zc2l6ZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYSB1aW50MzJfdCAqLwordm9pZAorbXBkX3FzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc2V0X3VpbnQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZiBkZWZpbmVkKENPTkZJR18zMikgJiYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorLyogc2V0IGEgZGVjaW1hbCBmcm9tIGEgdWludDY0X3QgKi8KK3N0YXRpYyB2b2lkCitfYzMyc2V0dTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IHUsIHVpbnQ4X3Qgc2lnbiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHdbM107CisgICAgdWludDY0X3QgcTsKKyAgICBpbnQgaSwgbGVuOworCisgICAgbGVuID0gMDsKKyAgICBkbyB7CisgICAgICAgIHEgPSB1IC8gTVBEX1JBRElYOworICAgICAgICB3W2xlbl0gPSAobXBkX3VpbnRfdCkodSAtIHEgKiBNUERfUkFESVgpOworICAgICAgICB1ID0gcTsgbGVuKys7CisgICAgfSB3aGlsZSAodSAhPSAwKTsKKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gd1tpXTsKKyAgICB9CisKKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCBzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworfQorCitzdGF0aWMgdm9pZAorX2MzMl9xc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX2MzMnNldHU2NChyZXN1bHQsIGEsIE1QRF9QT1MsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogc2V0IGEgZGVjaW1hbCBmcm9tIGFuIGludDY0X3QgKi8KK3N0YXRpYyB2b2lkCitfYzMyX3FzZXRfaTY0KG1wZF90ICpyZXN1bHQsIGludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ2NF90IHU7CisgICAgdWludDhfdCBzaWduID0gTVBEX1BPUzsKKworICAgIGlmIChhIDwgMCkgeworICAgICAgICBpZiAoYSA9PSBJTlQ2NF9NSU4pIHsKKyAgICAgICAgICAgIHUgPSAodWludDY0X3QpSU5UNjRfTUFYICsgKC0oSU5UNjRfTUlOK0lOVDY0X01BWCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdSA9IC1hOworICAgICAgICB9CisgICAgICAgIHNpZ24gPSBNUERfTkVHOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdSA9IGE7CisgICAgfQorICAgIF9jMzJzZXR1NjQocmVzdWx0LCB1LCBzaWduLCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYgLyogQ09ORklHXzMyICYmICFMRUdBQ1lfQ09NUElMRVIgKi8KKworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGFuIGludDY0X3QgKi8KK3ZvaWQKK21wZF9xc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworI2lmZGVmIENPTkZJR182NAorICAgIG1wZF9xc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgICBfYzMyX3FzZXRfaTY0KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2VuZGlmCit9CisKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGEgdWludDY0X3QgKi8KK3ZvaWQKK21wZF9xc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBtcGRfcXNldF91aW50KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgICBfYzMyX3FzZXRfdTY0KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworI2VuZGlmCit9CisjZW5kaWYgLyogIUxFR0FDWV9DT01QSUxFUiAqLworCisKKy8qCisgKiBRdWlldGx5IGdldCBhbiBtcGRfdWludF90IGZyb20gYSBkZWNpbWFsLiBBc3N1bWVzCisgKiBNUERfVUlOVF9ESUdJVFMgPT0gTVBEX1JESUdJVFMrMSwgd2hpY2ggaXMgdHJ1ZSBmb3IKKyAqIDMyIGFuZCA2NCBiaXQgbWFjaGluZXMuCisgKgorICogSWYgdGhlIG9wZXJhdGlvbiBpcyBpbXBvc3NpYmxlLCBNUERfSW52YWxpZF9vcGVyYXRpb24gaXMgc2V0LgorICovCitzdGF0aWMgbXBkX3VpbnRfdAorX21wZF9xZ2V0X3VpbnQoaW50IHVzZV9zaWduLCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdCB0bXA7CisgICAgbXBkX3VpbnRfdCB0bXBfZGF0YVsyXTsKKyAgICBtcGRfdWludF90IGxvLCBoaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHVzZV9zaWduICYmIG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKworICAgIGlmIChhLT5kaWdpdHMrYS0+ZXhwID4gTVBEX1JESUdJVFMrMSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICB9CisKKyAgICBpZiAoYS0+ZXhwIDwgMCkgeworICAgICAgICBpZiAoIV9tcGRfaXNpbnQoYSkpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICAgICAgfQorICAgICAgICAvKiBBdCB0aGlzIHBvaW50IGEtPmRpZ2l0cythLT5leHAgPD0gTVBEX1JESUdJVFMrMSwKKyAgICAgICAgICogc28gdGhlIHNoaWZ0IGZpdHMuICovCisgICAgICAgIHRtcC5kYXRhID0gdG1wX2RhdGE7CisgICAgICAgIHRtcC5mbGFncyA9IE1QRF9TVEFUSUN8TVBEX1NUQVRJQ19EQVRBOworICAgICAgICB0bXAuYWxsb2MgPSAyOworICAgICAgICBtcGRfcXNzaGlmdHIoJnRtcCwgYSwgLWEtPmV4cCk7CisgICAgICAgIHRtcC5leHAgPSAwOworICAgICAgICBhID0gJnRtcDsKKyAgICB9CisKKyAgICBfbXBkX2dldF9tc2RpZ2l0cygmaGksICZsbywgYSwgTVBEX1JESUdJVFMrMSk7CisgICAgaWYgKGhpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKworICAgIGlmIChhLT5leHAgPiAwKSB7CisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBsbywgbXBkX3BvdzEwW2EtPmV4cF0pOworICAgICAgICBpZiAoaGkpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsbzsKK30KKworLyoKKyAqIFNldHMgSW52YWxpZF9vcGVyYXRpb24gZm9yOgorICogICAtIHNwZWNpYWxzCisgKiAgIC0gbmVnYXRpdmUgbnVtYmVycyAoZXhjZXB0IG5lZ2F0aXZlIHplcm8pCisgKiAgIC0gbm9uLWludGVnZXJzCisgKiAgIC0gb3ZlcmZsb3cKKyAqLworbXBkX3VpbnRfdAorbXBkX3FnZXRfdWludChjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gX21wZF9xZ2V0X3VpbnQoMSwgYSwgc3RhdHVzKTsKK30KKworLyogU2FtZSBhcyBhYm92ZSwgYnV0IGdldHMgdGhlIGFic29sdXRlIHZhbHVlLCBpLmUuIHRoZSBzaWduIGlzIGlnbm9yZWQuICovCittcGRfdWludF90CittcGRfcWFic191aW50KGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBfbXBkX3FnZXRfdWludCgwLCBhLCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IGdldCBhbiBtcGRfc3NpemVfdCBmcm9tIGEgZGVjaW1hbCAqLworbXBkX3NzaXplX3QKK21wZF9xZ2V0X3NzaXplKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgdTsKKyAgICBpbnQgaXNuZWc7CisKKyAgICB1ID0gbXBkX3FhYnNfdWludChhLCBzdGF0dXMpOworICAgIGlmICgqc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICByZXR1cm4gTVBEX1NTSVpFX01BWDsKKyAgICB9CisKKyAgICBpc25lZyA9IG1wZF9pc25lZ2F0aXZlKGEpOworICAgIGlmICh1IDw9IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIGlzbmVnID8gLSgobXBkX3NzaXplX3QpdSkgOiAobXBkX3NzaXplX3QpdTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNuZWcgJiYgdSsoTVBEX1NTSVpFX01JTitNUERfU1NJWkVfTUFYKSA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUlOOworICAgIH0KKworICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBxdWlldGx5IGdldCBhIHVpbnQ2NF90IGZyb20gYSBkZWNpbWFsICovCit1aW50NjRfdAorbXBkX3FnZXRfdTY0KGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBtcGRfcWdldF91aW50KGEsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgZ2V0IGFuIGludDY0X3QgZnJvbSBhIGRlY2ltYWwgKi8KK2ludDY0X3QKK21wZF9xZ2V0X2k2NChjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gbXBkX3FnZXRfc3NpemUoYSwgc3RhdHVzKTsKK30KKyNlbHNlCisvKiBxdWlldGx5IGdldCBhIHVpbnQzMl90IGZyb20gYSBkZWNpbWFsICovCit1aW50MzJfdAorbXBkX3FnZXRfdTMyKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBtcGRfcWdldF91aW50KGEsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgZ2V0IGFuIGludDMyX3QgZnJvbSBhIGRlY2ltYWwgKi8KK2ludDMyX3QKK21wZF9xZ2V0X2kzMihjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gbXBkX3FnZXRfc3NpemUoYSwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgIEZpbHRlcmluZyBpbnB1dCBvZiBmdW5jdGlvbnMsIGZpbmFsaXppbmcgb3V0cHV0IG9mIGZ1bmN0aW9ucyAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIENoZWNrIGlmIHRoZSBvcGVyYW5kIGlzIE5hTiwgY29weSB0byByZXN1bHQgYW5kIHJldHVybiAxIGlmIHRoaXMgaXMKKyAqIHRoZSBjYXNlLiBDb3B5aW5nIGNhbiBmYWlsIHNpbmNlIE5hTnMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIHBheWxvYWQgdGhhdAorICogZG9lcyBub3QgZml0IGluIE1QRF9NSU5BTExPQy4KKyAqLworaW50CittcGRfcWNoZWNrX25hbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzbmFuKGEpKSB7CisgICAgICAgICpzdGF0dXMgfD0gbXBkX2lzc25hbihhKSA/IE1QRF9JbnZhbGlkX29wZXJhdGlvbiA6IDA7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBfbXBkX2ZpeF9uYW4ocmVzdWx0LCBjdHgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDaGVjayBpZiBlaXRoZXIgb3BlcmFuZCBpcyBOYU4sIGNvcHkgdG8gcmVzdWx0IGFuZCByZXR1cm4gMSBpZiB0aGlzCisgKiBpcyB0aGUgY2FzZS4gQ29weWluZyBjYW4gZmFpbCBzaW5jZSBOYU5zIGFyZSBhbGxvd2VkIHRvIGhhdmUgYSBwYXlsb2FkCisgKiB0aGF0IGRvZXMgbm90IGZpdCBpbiBNUERfTUlOQUxMT0MuCisgKi8KK2ludAorbXBkX3FjaGVja19uYW5zKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKChhLT5mbGFnc3xiLT5mbGFncykmKE1QRF9OQU58TVBEX1NOQU4pKSB7CisgICAgICAgIGNvbnN0IG1wZF90ICpjaG9pY2UgPSBiOworICAgICAgICBpZiAobXBkX2lzc25hbihhKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3NuYW4oYikpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYSkpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGE7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgY2hvaWNlLCBzdGF0dXMpOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgX21wZF9maXhfbmFuKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogQ2hlY2sgaWYgb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBOYU4sIGNvcHkgdG8gcmVzdWx0IGFuZCByZXR1cm4gMSBpZiB0aGlzCisgKiBpcyB0aGUgY2FzZS4gQ29weWluZyBjYW4gZmFpbCBzaW5jZSBOYU5zIGFyZSBhbGxvd2VkIHRvIGhhdmUgYSBwYXlsb2FkCisgKiB0aGF0IGRvZXMgbm90IGZpdCBpbiBNUERfTUlOQUxMT0MuCisgKi8KK3N0YXRpYyBpbnQKK21wZF9xY2hlY2tfM25hbnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmICgoYS0+ZmxhZ3N8Yi0+ZmxhZ3N8Yy0+ZmxhZ3MpJihNUERfTkFOfE1QRF9TTkFOKSkgeworICAgICAgICBjb25zdCBtcGRfdCAqY2hvaWNlID0gYzsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oYSkpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGE7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNzbmFuKGIpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBiOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzc25hbihjKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzcW5hbihhKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBiOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGNob2ljZSwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIF9tcGRfZml4X25hbihyZXN1bHQsIGN0eCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogQ2hlY2sgaWYgcm91bmRpbmcgZGlnaXQgJ3JuZCcgbGVhZHMgdG8gYW4gaW5jcmVtZW50LiAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfcm5kX2luY3IoY29uc3QgbXBkX3QgKmRlYywgbXBkX3VpbnRfdCBybmQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpbnQgbGQ7CisKKyAgICBzd2l0Y2ggKGN0eC0+cm91bmQpIHsKKyAgICBjYXNlIE1QRF9ST1VORF9ET1dOOiBjYXNlIE1QRF9ST1VORF9UUlVOQzoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9VUDoKKyAgICAgICAgcmV0dXJuIChybmQgPj0gNSk7CisgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9FVkVOOgorICAgICAgICByZXR1cm4gKHJuZCA+IDUpIHx8ICgocm5kID09IDUpICYmIG1wZF9pc29kZGNvZWZmKGRlYykpOworICAgIGNhc2UgTVBEX1JPVU5EX0NFSUxJTkc6CisgICAgICAgIHJldHVybiAhKHJuZCA9PSAwIHx8IG1wZF9pc25lZ2F0aXZlKGRlYykpOworICAgIGNhc2UgTVBEX1JPVU5EX0ZMT09SOgorICAgICAgICByZXR1cm4gIShybmQgPT0gMCB8fCBtcGRfaXNwb3NpdGl2ZShkZWMpKTsKKyAgICBjYXNlIE1QRF9ST1VORF9IQUxGX0RPV046CisgICAgICAgIHJldHVybiAocm5kID4gNSk7CisgICAgY2FzZSBNUERfUk9VTkRfVVA6CisgICAgICAgIHJldHVybiAhKHJuZCA9PSAwKTsKKyAgICBjYXNlIE1QRF9ST1VORF8wNVVQOgorICAgICAgICBsZCA9IChpbnQpbXBkX2xzZChkZWMtPmRhdGFbMF0pOworICAgICAgICByZXR1cm4gKCEocm5kID09IDApICYmIChsZCA9PSAwIHx8IGxkID09IDUpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBXaXRob3V0IGEgdmFsaWQgY29udGV4dCwgZnVydGhlciByZXN1bHRzIHdpbGwgYmUgdW5kZWZpbmVkLiAqLworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KK30KKworLyoKKyAqIEFwcGx5IHJvdW5kaW5nIHRvIGEgZGVjaW1hbCB0aGF0IGhhcyBiZWVuIHJpZ2h0LXNoaWZ0ZWQgaW50byBhIGZ1bGwKKyAqIHByZWNpc2lvbiBkZWNpbWFsLiBJZiBhbiBpbmNyZW1lbnQgbGVhZHMgdG8gYW4gb3ZlcmZsb3cgb2YgdGhlIHByZWNpc2lvbiwKKyAqIGFkanVzdCB0aGUgY29lZmZpY2llbnQgYW5kIHRoZSBleHBvbmVudCBhbmQgY2hlY2sgdGhlIG5ldyBleHBvbmVudCBmb3IKKyAqIG92ZXJmbG93LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfYXBwbHlfcm91bmQobXBkX3QgKmRlYywgbXBkX3VpbnRfdCBybmQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoX21wZF9ybmRfaW5jcihkZWMsIHJuZCwgY3R4KSkgeworICAgICAgICAvKiBXZSBoYXZlIGEgbnVtYmVyIHdpdGggZXhhY3RseSBjdHgtPnByZWMgZGlnaXRzLiBUaGUgaW5jcmVtZW50CisgICAgICAgICAqIGNhbiBvbmx5IGxlYWQgdG8gYW4gb3ZlcmZsb3cgaWYgdGhlIGRlY2ltYWwgaXMgYWxsIG5pbmVzLiBJbgorICAgICAgICAgKiB0aGF0IGNhc2UsIHRoZSByZXN1bHQgaXMgYSBwb3dlciBvZiB0ZW4gd2l0aCBwcmVjKzEgZGlnaXRzLgorICAgICAgICAgKgorICAgICAgICAgKiBJZiB0aGUgcHJlY2lzaW9uIGlzIGEgbXVsdGlwbGUgb2YgTVBEX1JESUdJVFMsIHRoaXMgc2l0dWF0aW9uIGlzCisgICAgICAgICAqIGRldGVjdGVkIGJ5IF9tcGRfYmFzZWluY3IgcmV0dXJuaW5nIGEgY2FycnkuCisgICAgICAgICAqIElmIHRoZSBwcmVjaXNpb24gaXMgbm90IGEgbXVsdGlwbGUgb2YgTVBEX1JESUdJVFMsIHdlIGhhdmUgdG8KKyAgICAgICAgICogY2hlY2sgaWYgdGhlIHJlc3VsdCBoYXMgb25lIGRpZ2l0IHRvbyBtYW55LgorICAgICAgICAgKi8KKyAgICAgICAgbXBkX3VpbnRfdCBjYXJyeSA9IF9tcGRfYmFzZWluY3IoZGVjLT5kYXRhLCBkZWMtPmxlbik7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgZGVjLT5kYXRhW2RlYy0+bGVuLTFdID0gbXBkX3BvdzEwW01QRF9SRElHSVRTLTFdOworICAgICAgICAgICAgZGVjLT5leHAgKz0gMTsKKyAgICAgICAgICAgIF9tcGRfY2hlY2tfZXhwKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICAgICAgaWYgKGRlYy0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKGRlYywgMSk7CisgICAgICAgICAgICBkZWMtPmV4cCArPSAxOworICAgICAgICAgICAgZGVjLT5kaWdpdHMgPSBjdHgtPnByZWM7CisgICAgICAgICAgICBfbXBkX2NoZWNrX2V4cChkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIEFwcGx5IHJvdW5kaW5nIHRvIGEgZGVjaW1hbC4gQWxsb3cgb3ZlcmZsb3cgb2YgdGhlIHByZWNpc2lvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhtcGRfdCAqZGVjLCBtcGRfdWludF90IHJuZCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoX21wZF9ybmRfaW5jcihkZWMsIHJuZCwgY3R4KSkgeworICAgICAgICBtcGRfdWludF90IGNhcnJ5ID0gX21wZF9iYXNlaW5jcihkZWMtPmRhdGEsIGRlYy0+bGVuKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKGRlYywgZGVjLT5sZW4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlYy0+ZGF0YVtkZWMtPmxlbl0gPSAxOworICAgICAgICAgICAgZGVjLT5sZW4gKz0gMTsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZGlnaXRzKGRlYyk7CisgICAgfQorfQorCisvKgorICogQXBwbHkgcm91bmRpbmcgdG8gYSBkZWNpbWFsIHRoYXQgaGFzIGJlZW4gcmlnaHQtc2hpZnRlZCBpbnRvIGEgZGVjaW1hbAorICogd2l0aCBmdWxsIHByZWNpc2lvbiBvciBsZXNzLiBSZXR1cm4gZmFpbHVyZSBpZiBhbiBpbmNyZW1lbnQgd291bGQKKyAqIG92ZXJmbG93IHRoZSBwcmVjaXNpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX2FwcGx5X3JvdW5kX2ZpdChtcGRfdCAqZGVjLCBtcGRfdWludF90IHJuZCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoX21wZF9ybmRfaW5jcihkZWMsIHJuZCwgY3R4KSkgeworICAgICAgICBtcGRfdWludF90IGNhcnJ5ID0gX21wZF9iYXNlaW5jcihkZWMtPmRhdGEsIGRlYy0+bGVuKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKGRlYywgZGVjLT5sZW4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVjLT5kYXRhW2RlYy0+bGVuXSA9IDE7CisgICAgICAgICAgICBkZWMtPmxlbiArPSAxOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICAgICAgaWYgKGRlYy0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IoZGVjLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLyogQ2hlY2sgYSBub3JtYWwgbnVtYmVyIGZvciBvdmVyZmxvdywgdW5kZXJmbG93LCBjbGFtcGluZy4gSWYgdGhlIG9wZXJhbmQKKyAgIGlzIG1vZGlmaWVkLCBpdCB3aWxsIGJlIHplcm8sIHNwZWNpYWwgb3IgKHN1Yilub3JtYWwgd2l0aCBhIGNvZWZmaWNpZW50CisgICB0aGF0IGZpdHMgaW50byB0aGUgY3VycmVudCBjb250ZXh0IHByZWNpc2lvbi4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9jaGVja19leHAobXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGFkamV4cCwgZXRpbnksIHNoaWZ0OworICAgIGludCBybmQ7CisKKyAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGRlYyk7CisgICAgaWYgKGFkamV4cCA+IGN0eC0+ZW1heCkgeworCisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgeworICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXg7CisgICAgICAgICAgICBpZiAoY3R4LT5jbGFtcCkgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwIC09IChjdHgtPnByZWMtMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfemVyb2NvZWZmKGRlYyk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChjdHgtPnJvdW5kKSB7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0hBTEZfVVA6IGNhc2UgTVBEX1JPVU5EX0hBTEZfRVZFTjoKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9ET1dOOiBjYXNlIE1QRF9ST1VORF9VUDoKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfVFJVTkM6CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIG1wZF9zaWduKGRlYyksIE1QRF9JTkYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0RPV046IGNhc2UgTVBEX1JPVU5EXzA1VVA6CisgICAgICAgICAgICBtcGRfcW1heGNvZWZmKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXggLSBjdHgtPnByZWMgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0NFSUxJTkc6CisgICAgICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZGVjKSkgeworICAgICAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXggLSBjdHgtPnByZWMgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9ST1VORF9GTE9PUjoKKyAgICAgICAgICAgIGlmIChtcGRfaXNwb3NpdGl2ZShkZWMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCA9IGN0eC0+ZW1heCAtIGN0eC0+cHJlYyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIE1QRF9ORUcsIE1QRF9JTkYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IC8qIGRlYnVnICovCisgICAgICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKworICAgICAgICAqc3RhdHVzIHw9IE1QRF9PdmVyZmxvd3xNUERfSW5leGFjdHxNUERfUm91bmRlZDsKKworICAgIH0gLyogZm9sZCBkb3duICovCisgICAgZWxzZSBpZiAoY3R4LT5jbGFtcCAmJiBkZWMtPmV4cCA+IG1wZF9ldG9wKGN0eCkpIHsKKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCBhZGpleHA9ZXhwK2RpZ2l0cy0xIDw9IGVtYXggYW5kIGV4cCA+IGV0b3A9ZW1heC1wcmVjKzE6CisgICAgICAgICAqICAgKDEpIHNoaWZ0ID0gZXhwIC1lbWF4K3ByZWMtMSA+IDAKKyAgICAgICAgICogICAoMikgZGlnaXRzK3NoaWZ0ID0gZXhwK2RpZ2l0cy0xIC0gZW1heCArIHByZWMgPD0gcHJlYyAqLworICAgICAgICBzaGlmdCA9IGRlYy0+ZXhwIC0gbXBkX2V0b3AoY3R4KTsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChkZWMsIGRlYywgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZWMtPmV4cCAtPSBzaGlmdDsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgaWYgKCFtcGRfaXN6ZXJvY29lZmYoZGVjKSAmJiBhZGpleHAgPCBjdHgtPmVtaW4pIHsKKyAgICAgICAgICAgIC8qIFVuZGVyZmxvdyBpcyBpbXBvc3NpYmxlLCBzaW5jZSBleHAgPCBldGlueT1lbWluLXByZWMrMQorICAgICAgICAgICAgICogYW5kIGV4cCA+IGV0b3A9ZW1heC1wcmVjKzEgd291bGQgaW1wbHkgZW1heCA8IGVtaW4uICovCisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9TdWJub3JtYWw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoYWRqZXhwIDwgY3R4LT5lbWluKSB7CisKKyAgICAgICAgZXRpbnkgPSBtcGRfZXRpbnkoY3R4KTsKKworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHsKKyAgICAgICAgICAgIGlmIChkZWMtPmV4cCA8IGV0aW55KSB7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgPSBldGlueTsKKyAgICAgICAgICAgICAgICBtcGRfemVyb2NvZWZmKGRlYyk7CisgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgICpzdGF0dXMgfD0gTVBEX1N1Ym5vcm1hbDsKKyAgICAgICAgaWYgKGRlYy0+ZXhwIDwgZXRpbnkpIHsKKyAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgYWRqZXhwPWV4cCtkaWdpdHMtMSA8IGVtaW4gYW5kIGV4cCA8IGV0aW55PWVtaW4tcHJlYysxOgorICAgICAgICAgICAgICogICAoMSkgc2hpZnQgPSBlbWluLXByZWMrMSAtIGV4cCA+IDAKKyAgICAgICAgICAgICAqICAgKDIpIGRpZ2l0cy1zaGlmdCA9IGV4cCtkaWdpdHMtMSAtIGVtaW4gKyBwcmVjIDwgcHJlYyAqLworICAgICAgICAgICAgc2hpZnQgPSBldGlueSAtIGRlYy0+ZXhwOworICAgICAgICAgICAgcm5kID0gKGludCltcGRfcXNoaWZ0cl9pbnBsYWNlKGRlYywgc2hpZnQpOworICAgICAgICAgICAgZGVjLT5leHAgPSBldGlueTsKKyAgICAgICAgICAgIC8qIFdlIGFsd2F5cyBoYXZlIGEgc3BhcmUgZGlnaXQgaW4gY2FzZSBvZiBhbiBpbmNyZW1lbnQuICovCisgICAgICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhkZWMsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfVW5kZXJmbG93KTsKKyAgICAgICAgICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbXBkX3plcm9jb2VmZihkZWMpOworICAgICAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBDYXNlIGV4cCA+PSBldGlueT1lbWluLXByZWMrMToKKyAgICAgICAgICogICAoMSkgYWRqZXhwPWV4cCtkaWdpdHMtMSA8IGVtaW4KKyAgICAgICAgICogICAoMikgZGlnaXRzIDwgZW1pbi1leHArMSA8PSBwcmVjICovCisgICAgfQorfQorCisvKiBUcmFuc2NlbmRlbnRhbCBmdW5jdGlvbnMgZG8gbm90IGFsd2F5cyBzZXQgVW5kZXJmbG93IHJlbGlhYmx5LAorICogc2luY2UgdGhleSBvbmx5IHVzZSBhcyBtdWNoIHByZWNpc2lvbiBhcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QKKyAqIHJvdW5kaW5nLiBJZiBhIHJlc3VsdCBsaWtlIDEuMDAwMDAwMDAwMGUtMTAxIGlzIGZpbmFsaXplZCwgdGhlcmUKKyAqIGlzIG5vIHJvdW5kaW5nIGRpZ2l0IHRoYXQgd291bGQgdHJpZ2dlciBVbmRlcmZsb3cuIEJ1dCB3ZSBjYW4KKyAqIGFzc3VtZSBJbmV4YWN0LCBzbyBhIHNob3J0IGNoZWNrIHN1ZmZpY2VzLiAqLworc3RhdGljIGlubGluZSB2b2lkCittcGRfY2hlY2tfdW5kZXJmbG93KG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2FkamV4cChkZWMpIDwgY3R4LT5lbWluICYmICFtcGRfaXN6ZXJvKGRlYykgJiYKKyAgICAgICAgZGVjLT5leHAgPCBtcGRfZXRpbnkoY3R4KSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9VbmRlcmZsb3c7CisgICAgfQorfQorCisvKiBDaGVjayBpZiBhIG5vcm1hbCBudW1iZXIgbXVzdCBiZSByb3VuZGVkIGFmdGVyIHRoZSBleHBvbmVudCBoYXMgYmVlbiBjaGVja2VkLiAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2NoZWNrX3JvdW5kKG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHJuZDsKKyAgICBtcGRfc3NpemVfdCBzaGlmdDsKKworICAgIC8qIG11c3QgaGFuZGxlIHNwZWNpYWxzOiBfbXBkX2NoZWNrX2V4cCgpIGNhbiBwcm9kdWNlIGluZmluaXRpZXMgb3IgTmFOcyAqLworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWMtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICBzaGlmdCA9IGRlYy0+ZGlnaXRzIC0gY3R4LT5wcmVjOworICAgICAgICBybmQgPSBtcGRfcXNoaWZ0cl9pbnBsYWNlKGRlYywgc2hpZnQpOworICAgICAgICBkZWMtPmV4cCArPSBzaGlmdDsKKyAgICAgICAgX21wZF9hcHBseV9yb3VuZChkZWMsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICB9CisgICAgfQorfQorCisvKiBGaW5hbGl6ZSBhbGwgb3BlcmF0aW9ucy4gKi8KK3ZvaWQKK21wZF9xZmluYWxpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihyZXN1bHQpKSB7CisgICAgICAgICAgICBfbXBkX2ZpeF9uYW4ocmVzdWx0LCBjdHgpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX2NoZWNrX2V4cChyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICBfbXBkX2NoZWNrX3JvdW5kKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogSW50ZXJuYWwgZnVuY3Rpb246IENvcHkgYSBkZWNpbWFsLCBzaGFyZSBkYXRhIHdpdGggc3JjOiBVU0UgV0lUSCBDQVJFISAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2NvcHlfc2hhcmVkKG1wZF90ICpkZXN0LCBjb25zdCBtcGRfdCAqc3JjKQoreworICAgIGRlc3QtPmZsYWdzID0gc3JjLT5mbGFnczsKKyAgICBkZXN0LT5leHAgPSBzcmMtPmV4cDsKKyAgICBkZXN0LT5kaWdpdHMgPSBzcmMtPmRpZ2l0czsKKyAgICBkZXN0LT5sZW4gPSBzcmMtPmxlbjsKKyAgICBkZXN0LT5hbGxvYyA9IHNyYy0+YWxsb2M7CisgICAgZGVzdC0+ZGF0YSA9IHNyYy0+ZGF0YTsKKworICAgIG1wZF9zZXRfc2hhcmVkX2RhdGEoZGVzdCk7Cit9CisKKy8qCisgKiBDb3B5IGEgZGVjaW1hbC4gSW4gY2FzZSBvZiBhbiBlcnJvciwgc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xY29weShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAocmVzdWx0ID09IGEpIHJldHVybiAxOworCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGEtPmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzOworICAgIHJlc3VsdC0+bGVuID0gYS0+bGVuOworICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiAqIChzaXplb2YgKnJlc3VsdC0+ZGF0YSkpOworCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBDb3B5IHRvIGEgZGVjaW1hbCB3aXRoIGEgc3RhdGljIGJ1ZmZlci4gVGhlIGNhbGxlciBoYXMgdG8gbWFrZSBzdXJlIHRoYXQKKyAqIHRoZSBidWZmZXIgaXMgYmlnIGVub3VnaC4gQ2Fubm90IGZhaWwuCisgKi8KK3N0YXRpYyB2b2lkCittcGRfcWNvcHlfc3RhdGljKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphKQoreworICAgIGlmIChyZXN1bHQgPT0gYSkgcmV0dXJuOworCisgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuICogKHNpemVvZiAqcmVzdWx0LT5kYXRhKSk7CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzOworICAgIHJlc3VsdC0+bGVuID0gYS0+bGVuOworfQorCisvKgorICogUmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGNvcHkgb2YgdGhlIG9wZXJhbmQuIEluIGNhc2Ugb2YgYW4gZXJyb3IsCisgKiBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IgYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgTlVMTC4KKyAqLworbXBkX3QgKgorbXBkX3FuY29weShjb25zdCBtcGRfdCAqYSkKK3sKKyAgICBtcGRfdCAqcmVzdWx0OworCisgICAgaWYgKChyZXN1bHQgPSBtcGRfcW5ld19zaXplKGEtPmxlbikpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiAqIChzaXplb2YgKnJlc3VsdC0+ZGF0YSkpOworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHM7CisgICAgcmVzdWx0LT5sZW4gPSBhLT5sZW47CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ29weSBhIGRlY2ltYWwgYW5kIHNldCB0aGUgc2lnbiB0byBwb3NpdGl2ZS4gSW4gY2FzZSBvZiBhbiBlcnJvciwgdGhlCisgKiBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3Fjb3B5X2FicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIENvcHkgYSBkZWNpbWFsIGFuZCBuZWdhdGUgdGhlIHNpZ24uIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHRoZQorICogc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xY29weV9uZWdhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBfbXBkX25lZ2F0ZShyZXN1bHQpOworICAgIHJldHVybiAxOworfQorCisvKgorICogQ29weSBhIGRlY2ltYWwsIHNldHRpbmcgdGhlIHNpZ24gb2YgdGhlIGZpcnN0IG9wZXJhbmQgdG8gdGhlIHNpZ24gb2YgdGhlCisgKiBzZWNvbmQgb3BlcmFuZC4gSW4gY2FzZSBvZiBhbiBlcnJvciwgdGhlIHN0YXR1cyBpcyBzZXQgdG8gTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcWNvcHlfc2lnbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDhfdCBzaWduX2IgPSBtcGRfc2lnbihiKTsgLyogcmVzdWx0IG1heSBlcXVhbCBiISAqLworCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCBzaWduX2IpOworICAgIHJldHVybiAxOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEZvciBhbGwgZnVuY3Rpb25zIHRoYXQgY29tcGFyZSB0d28gb3BlcmFuZHMgYW5kIHJldHVybiBhbiBpbnQgdGhlIHVzdWFsCisgKiBjb252ZW50aW9uIGFwcGxpZXMgdG8gdGhlIHJldHVybiB2YWx1ZToKKyAqCisgKiAtMSBpZiBvcDEgPCBvcDIKKyAqICAwIGlmIG9wMSA9PSBvcDIKKyAqICAxIGlmIG9wMSA+IG9wMgorICoKKyAqICBJTlRfTUFYIGZvciBlcnJvcgorICovCisKKworLyogQ29udmVuaWVuY2UgbWFjcm8uIElmIGEgYW5kIGIgYXJlIG5vdCBlcXVhbCwgcmV0dXJuIGZyb20gdGhlIGNhbGxpbmcKKyAqIGZ1bmN0aW9uIHdpdGggdGhlIGNvcnJlY3QgY29tcGFyaXNvbiB2YWx1ZS4gKi8KKyNkZWZpbmUgQ01QX0VRVUFMX09SX1JFVFVSTihhLCBiKSAgXAorICAgICAgICBpZiAoYSAhPSBiKSB7ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSB7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7ICAgICAgICAgIFwKKyAgICAgICAgfQorCisvKgorICogQ29tcGFyZSB0aGUgZGF0YSBvZiBiaWcgYW5kIHNtYWxsLiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGVxdWl2YWxlbnQKKyAqIG9mIGZpcnN0IHNoaWZ0aW5nIHNtYWxsIHRvIHRoZSBsZWZ0IGFuZCB0aGVuIGNvbXBhcmluZyB0aGUgZGF0YSBvZgorICogYmlnIGFuZCBzbWFsbCwgZXhjZXB0IHRoYXQgbm8gYWxsb2NhdGlvbiBmb3IgdGhlIGxlZnQgc2hpZnQgaXMgbmVlZGVkLgorICovCitzdGF0aWMgaW50CitfbXBkX2Jhc2VjbXAobXBkX3VpbnRfdCAqYmlnLCBtcGRfdWludF90ICpzbWFsbCwgbXBkX3NpemVfdCBuLCBtcGRfc2l6ZV90IG0sCisgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCkKK3sKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgLyogc3B1cmlvdXMgdW5pbml0aWFsaXplZCB3YXJuaW5ncyAqLworICAgIG1wZF91aW50X3QgbD1sLCBscHJldj1scHJldiwgaD1oOworI2Vsc2UKKyAgICBtcGRfdWludF90IGwsIGxwcmV2LCBoOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBxLCByOworICAgIG1wZF91aW50X3QgcGgsIHg7CisKKyAgICBhc3NlcnQobSA+IDAgJiYgbiA+PSBtICYmIHNoaWZ0ID4gMCk7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZxLCAmciwgKG1wZF91aW50X3Qpc2hpZnQsIE1QRF9SRElHSVRTKTsKKworICAgIGlmIChyICE9IDApIHsKKworICAgICAgICBwaCA9IG1wZF9wb3cxMFtyXTsKKworICAgICAgICAtLW07IC0tbjsKKyAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZscHJldiwgc21hbGxbbS0tXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgIGlmIChoICE9IDApIHsKKyAgICAgICAgICAgIENNUF9FUVVBTF9PUl9SRVRVUk4oYmlnW25dLCBoKQorICAgICAgICAgICAgLS1uOworICAgICAgICB9CisgICAgICAgIGZvciAoOyBtICE9IE1QRF9TSVpFX01BWDsgbS0tLG4tLSkgeworICAgICAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZsLCBzbWFsbFttXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgICAgICB4ID0gcGggKiBscHJldiArIGg7CisgICAgICAgICAgICBDTVBfRVFVQUxfT1JfUkVUVVJOKGJpZ1tuXSwgeCkKKyAgICAgICAgICAgIGxwcmV2ID0gbDsKKyAgICAgICAgfQorICAgICAgICB4ID0gcGggKiBscHJldjsKKyAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihiaWdbcV0sIHgpCisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3aGlsZSAoLS1tICE9IE1QRF9TSVpFX01BWCkgeworICAgICAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihiaWdbbStxXSwgc21hbGxbbV0pCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gIV9tcGRfaXNhbGx6ZXJvKGJpZywgcSk7Cit9CisKKy8qIENvbXBhcmUgdHdvIGRlY2ltYWxzIHdpdGggdGhlIHNhbWUgYWRqdXN0ZWQgZXhwb25lbnQuICovCitzdGF0aWMgaW50CitfbXBkX2NtcF9zYW1lX2FkamV4cChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQsIGk7CisKKyAgICBpZiAoYS0+ZXhwICE9IGItPmV4cCkgeworICAgICAgICAvKiBDYW5ub3Qgd3JhcDogYS0+ZXhwICsgYS0+ZGlnaXRzID0gYi0+ZXhwICsgYi0+ZGlnaXRzLCBzbworICAgICAgICAgKiBhLT5leHAgLSBiLT5leHAgPSBiLT5kaWdpdHMgLSBhLT5kaWdpdHMuICovCisgICAgICAgIHNoaWZ0ID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgICAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTEgKiBfbXBkX2Jhc2VjbXAoYi0+ZGF0YSwgYS0+ZGF0YSwgYi0+bGVuLCBhLT5sZW4sIHNoaWZ0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBfbXBkX2Jhc2VjbXAoYS0+ZGF0YSwgYi0+ZGF0YSwgYS0+bGVuLCBiLT5sZW4sIC1zaGlmdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQgYWRqZXhwKGEpID09IGFkamV4cChiKSBhbmQgYS0+ZXhwID09IGItPmV4cCwKKyAgICAgKiBzbyBhLT5kaWdpdHMgPT0gYi0+ZGlnaXRzLCB0aGVyZWZvcmUgYS0+bGVuID09IGItPmxlbi4KKyAgICAgKi8KKyAgICBmb3IgKGkgPSBhLT5sZW4tMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihhLT5kYXRhW2ldLCBiLT5kYXRhW2ldKQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDb21wYXJlIHR3byBudW1lcmljYWwgdmFsdWVzLiAqLworc3RhdGljIGludAorX21wZF9jbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIG1wZF9zc2l6ZV90IGFkamV4cF9hLCBhZGpleHBfYjsKKworICAgIC8qIGVxdWFsIHBvaW50ZXJzICovCisgICAgaWYgKGEgPT0gYikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBpbmZpbml0aWVzICovCisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgcmV0dXJuIG1wZF9pc25lZ2F0aXZlKGIpIC0gbXBkX2lzbmVnYXRpdmUoYSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1wZF9hcml0aF9zaWduKGEpOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgcmV0dXJuIC1tcGRfYXJpdGhfc2lnbihiKTsKKyAgICB9CisKKyAgICAvKiB6ZXJvcyAqLworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC1tcGRfYXJpdGhfc2lnbihiKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICByZXR1cm4gbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgfQorCisgICAgLyogZGlmZmVyZW50IHNpZ25zICovCisgICAgaWYgKG1wZF9zaWduKGEpICE9IG1wZF9zaWduKGIpKSB7CisgICAgICAgIHJldHVybiBtcGRfc2lnbihiKSAtIG1wZF9zaWduKGEpOworICAgIH0KKworICAgIC8qIGRpZmZlcmVudCBhZGp1c3RlZCBleHBvbmVudHMgKi8KKyAgICBhZGpleHBfYSA9IG1wZF9hZGpleHAoYSk7CisgICAgYWRqZXhwX2IgPSBtcGRfYWRqZXhwKGIpOworICAgIGlmIChhZGpleHBfYSAhPSBhZGpleHBfYikgeworICAgICAgICBpZiAoYWRqZXhwX2EgPCBhZGpleHBfYikgeworICAgICAgICAgICAgcmV0dXJuIC0xICogbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1wZF9hcml0aF9zaWduKGEpOworICAgIH0KKworICAgIC8qIHNhbWUgYWRqdXN0ZWQgZXhwb25lbnRzICovCisgICAgcmV0dXJuIF9tcGRfY21wX3NhbWVfYWRqZXhwKGEsIGIpICogbXBkX2FyaXRoX3NpZ24oYSk7Cit9CisKKy8qIENvbXBhcmUgdGhlIGFic29sdXRlcyBvZiB0d28gbnVtZXJpY2FsIHZhbHVlcy4gKi8KK3N0YXRpYyBpbnQKK19tcGRfY21wX2Ficyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwX2EsIGFkamV4cF9iOworCisgICAgLyogZXF1YWwgcG9pbnRlcnMgKi8KKyAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGluZmluaXRpZXMgKi8KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiB6ZXJvcyAqLworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGRpZmZlcmVudCBhZGp1c3RlZCBleHBvbmVudHMgKi8KKyAgICBhZGpleHBfYSA9IG1wZF9hZGpleHAoYSk7CisgICAgYWRqZXhwX2IgPSBtcGRfYWRqZXhwKGIpOworICAgIGlmIChhZGpleHBfYSAhPSBhZGpleHBfYikgeworICAgICAgICBpZiAoYWRqZXhwX2EgPCBhZGpleHBfYikgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIHNhbWUgYWRqdXN0ZWQgZXhwb25lbnRzICovCisgICAgcmV0dXJuIF9tcGRfY21wX3NhbWVfYWRqZXhwKGEsIGIpOworfQorCisvKiBDb21wYXJlIHR3byB2YWx1ZXMgYW5kIHJldHVybiBhbiBpbnRlZ2VyIHJlc3VsdC4gKi8KK2ludAorbXBkX3FjbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihhKSB8fCBtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIElOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gX21wZF9jbXAoYSwgYik7Cit9CisKKy8qCisgKiBDb21wYXJlIGEgYW5kIGIsIGNvbnZlcnQgdGhlIHRoZSB1c3VhbCBpbnRlZ2VyIHJlc3VsdCB0byBhIGRlY2ltYWwgYW5kCisgKiBzdG9yZSBpdCBpbiAncmVzdWx0Jy4gRm9yIGNvbnZlbmllbmNlLCB0aGUgaW50ZWdlciByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24KKyAqIGlzIHJldHVybmVkLiBDb21wYXJpc29ucyBpbnZvbHZpbmcgTmFOcyByZXR1cm4gTmFOL0lOVF9NQVguCisgKi8KK2ludAorbXBkX3Fjb21wYXJlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiBJTlRfTUFYOworICAgICAgICB9CisgICAgfQorCisgICAgYyA9IF9tcGRfY21wKGEsIGIpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoYyA8IDApLCAoYyAhPSAwKSwgMCk7CisgICAgcmV0dXJuIGM7Cit9CisKKy8qIFNhbWUgYXMgbXBkX2NvbXBhcmUoKSwgYnV0IHNpZ25hbCBmb3IgYWxsIE5hTnMsIGkuZS4gYWxzbyBmb3IgcXVpZXQgTmFOcy4gKi8KK2ludAorbXBkX3Fjb21wYXJlX3NpZ25hbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGMgPCAwKSwgKGMgIT0gMCksIDApOworICAgIHJldHVybiBjOworfQorCisvKiBDb21wYXJlIHRoZSBvcGVyYW5kcyB1c2luZyBhIHRvdGFsIG9yZGVyLiAqLworaW50CittcGRfY21wX3RvdGFsKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfdCBhYSwgYmI7CisgICAgaW50IG5hbl9hLCBuYW5fYjsKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfc2lnbihhKSAhPSBtcGRfc2lnbihiKSkgeworICAgICAgICByZXR1cm4gbXBkX3NpZ24oYikgLSBtcGRfc2lnbihhKTsKKyAgICB9CisKKworICAgIGlmIChtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgYyA9IDE7CisgICAgICAgIGlmIChtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgICAgIG5hbl9hID0gKG1wZF9pc3FuYW4oYSkpID8gMSA6IDA7CisgICAgICAgICAgICBuYW5fYiA9IChtcGRfaXNxbmFuKGIpKSA/IDEgOiAwOworICAgICAgICAgICAgaWYgKG5hbl9iID09IG5hbl9hKSB7CisgICAgICAgICAgICAgICAgaWYgKGEtPmxlbiA+IDAgJiYgYi0+bGVuID4gMCkgeworICAgICAgICAgICAgICAgICAgICBfbXBkX2NvcHlfc2hhcmVkKCZhYSwgYSk7CisgICAgICAgICAgICAgICAgICAgIF9tcGRfY29weV9zaGFyZWQoJmJiLCBiKTsKKyAgICAgICAgICAgICAgICAgICAgYWEuZXhwID0gYmIuZXhwID0gMDsKKyAgICAgICAgICAgICAgICAgICAgLyogY29tcGFyZSBwYXlsb2FkICovCisgICAgICAgICAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9hYnMoJmFhLCAmYmIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IChhLT5sZW4gPiAwKSAtIChiLT5sZW4gPiAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjID0gbmFuX2EgLSBuYW5fYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgYyA9IC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wX2FicyhhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCAmJiBhLT5leHAgIT0gYi0+ZXhwKSB7CisgICAgICAgICAgICBjID0gKGEtPmV4cCA8IGItPmV4cCkgPyAtMSA6IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYyAqIG1wZF9hcml0aF9zaWduKGEpOworfQorCisvKgorICogQ29tcGFyZSBhIGFuZCBiIGFjY29yZGluZyB0byBhIHRvdGFsIG9yZGVyLCBjb252ZXJ0IHRoZSB1c3VhbCBpbnRlZ2VyIHJlc3VsdAorICogdG8gYSBkZWNpbWFsIGFuZCBzdG9yZSBpdCBpbiAncmVzdWx0Jy4gRm9yIGNvbnZlbmllbmNlLCB0aGUgaW50ZWdlciByZXN1bHQKKyAqIG9mIHRoZSBjb21wYXJpc29uIGlzIHJldHVybmVkLgorICovCitpbnQKK21wZF9jb21wYXJlX3RvdGFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBpbnQgYzsKKworICAgIGMgPSBtcGRfY21wX3RvdGFsKGEsIGIpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoYyA8IDApLCAoYyAhPSAwKSwgMCk7CisgICAgcmV0dXJuIGM7Cit9CisKKy8qIENvbXBhcmUgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3BlcmFuZHMgdXNpbmcgYSB0b3RhbCBvcmRlci4gKi8KK2ludAorbXBkX2NtcF90b3RhbF9tYWcoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIG1wZF90IGFhLCBiYjsKKworICAgIF9tcGRfY29weV9zaGFyZWQoJmFhLCBhKTsKKyAgICBfbXBkX2NvcHlfc2hhcmVkKCZiYiwgYik7CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYSk7CisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYmIpOworCisgICAgcmV0dXJuIG1wZF9jbXBfdG90YWwoJmFhLCAmYmIpOworfQorCisvKgorICogQ29tcGFyZSB0aGUgbWFnbml0dWRlIG9mIGEgYW5kIGIgYWNjb3JkaW5nIHRvIGEgdG90YWwgb3JkZXIsIGNvbnZlcnQgdGhlCisgKiB0aGUgdXN1YWwgaW50ZWdlciByZXN1bHQgdG8gYSBkZWNpbWFsIGFuZCBzdG9yZSBpdCBpbiAncmVzdWx0Jy4KKyAqIEZvciBjb252ZW5pZW5jZSwgdGhlIGludGVnZXIgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIHJldHVybmVkLgorICovCitpbnQKK21wZF9jb21wYXJlX3RvdGFsX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgaW50IGM7CisKKyAgICBjID0gbXBkX2NtcF90b3RhbF9tYWcoYSwgYik7CisgICAgX3NldHRyaXBsZShyZXN1bHQsIChjIDwgMCksIChjICE9IDApLCAwKTsKKyAgICByZXR1cm4gYzsKK30KKworLyogRGV0ZXJtaW5lIGFuIG9yZGVyaW5nIGZvciBvcGVyYW5kcyB0aGF0IGFyZSBudW1lcmljYWxseSBlcXVhbC4gKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX2NtcF9udW1lcXVhbChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgaW50IHNpZ25fYSwgc2lnbl9iOworICAgIGludCBjOworCisgICAgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisgICAgc2lnbl9iID0gbXBkX3NpZ24oYik7CisgICAgaWYgKHNpZ25fYSAhPSBzaWduX2IpIHsKKyAgICAgICAgYyA9IHNpZ25fYiAtIHNpZ25fYTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSAoYS0+ZXhwIDwgYi0+ZXhwKSA/IC0xIDogMTsKKyAgICAgICAgYyAqPSBtcGRfYXJpdGhfc2lnbihhKTsKKyAgICB9CisKKyAgICByZXR1cm4gYzsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgU2hpZnRpbmcgdGhlIGNvZWZmaWNpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTaGlmdCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIG9wZXJhbmQgdG8gdGhlIGxlZnQsIG5vIGNoZWNrIGZvciBzcGVjaWFscy4KKyAqIEJvdGggb3BlcmFuZHMgbWF5IGJlIHRoZSBzYW1lIHBvaW50ZXIuIElmIHRoZSByZXN1bHQgbGVuZ3RoIGhhcyB0byBiZQorICogaW5jcmVhc2VkLCBtcGRfcXJlc2l6ZSgpIG1pZ2h0IGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xc2hpZnRsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHNpemU7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkpOworICAgIGFzc2VydChuID49IDApOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSB8fCBuID09IDApIHsKKyAgICAgICAgcmV0dXJuIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorCisgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShhLT5kaWdpdHMrbik7CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIHJlc3VsdCBpcyBOYU4gKi8KKyAgICB9CisKKyAgICBfbXBkX2Jhc2VzaGlmdGwocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBzaXplLCBhLT5sZW4sIG4pOworCisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0cytuOworICAgIHJlc3VsdC0+bGVuID0gc2l6ZTsKKworICAgIHJldHVybiAxOworfQorCisvKiBEZXRlcm1pbmUgdGhlIHJvdW5kaW5nIGluZGljYXRvciBpZiBhbGwgZGlnaXRzIG9mIHRoZSBjb2VmZmljaWVudCBhcmUgc2hpZnRlZAorICogb3V0IG9mIHRoZSBwaWN0dXJlLiAqLworc3RhdGljIG1wZF91aW50X3QKK19tcGRfZ2V0X3JuZChjb25zdCBtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBsZW4sIGludCB1c2VfbXNkKQoreworICAgIG1wZF91aW50X3Qgcm5kID0gMCwgcmVzdCA9IDAsIHdvcmQ7CisKKyAgICB3b3JkID0gZGF0YVtsZW4tMV07CisgICAgLyogc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IGlmIHNoaWZ0ID09IGRpZ2l0cyAqLworICAgIGlmICh1c2VfbXNkKSB7CisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZybmQsICZyZXN0LCB3b3JkLCBtcGRfd29yZF9kaWdpdHMod29yZCktMSk7CisgICAgICAgIGlmIChsZW4gPiAxICYmIHJlc3QgPT0gMCkgeworICAgICAgICAgICAgIHJlc3QgPSAhX21wZF9pc2FsbHplcm8oZGF0YSwgbGVuLTEpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN0ID0gIV9tcGRfaXNhbGx6ZXJvKGRhdGEsIGxlbik7CisgICAgfQorCisgICAgcmV0dXJuIChybmQgPT0gMCB8fCBybmQgPT0gNSkgPyBybmQgKyAhIXJlc3QgOiBybmQ7Cit9CisKKy8qCisgKiBTYW1lIGFzIG1wZF9xc2hpZnRyKCksIGJ1dCAncmVzdWx0JyBpcyBhbiBtcGRfdCB3aXRoIGEgc3RhdGljIGNvZWZmaWNpZW50LgorICogSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGF0IHRoZSBjb2VmZmljaWVudCBpcyBiaWcKKyAqIGVub3VnaC4gVGhlIGZ1bmN0aW9uIGNhbm5vdCBmYWlsLgorICovCitzdGF0aWMgbXBkX3VpbnRfdAorbXBkX3Fzc2hpZnRyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3Qgcm5kOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkpOworICAgIGFzc2VydChuID49IDApOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSB8fCBuID09IDApIHsKKyAgICAgICAgbXBkX3Fjb3B5X3N0YXRpYyhyZXN1bHQsIGEpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobiA+PSBhLT5kaWdpdHMpIHsKKyAgICAgICAgcm5kID0gX21wZF9nZXRfcm5kKGEtPmRhdGEsIGEtPmxlbiwgKG49PWEtPmRpZ2l0cykpOworICAgICAgICBtcGRfemVyb2NvZWZmKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0cy1uOworICAgICAgICBzaXplID0gbXBkX2RpZ2l0c190b19zaXplKHJlc3VsdC0+ZGlnaXRzKTsKKyAgICAgICAgcm5kID0gX21wZF9iYXNlc2hpZnRyKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBuKTsKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBzaXplOworICAgIH0KKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisKKyAgICByZXR1cm4gcm5kOworfQorCisvKgorICogSW5wbGFjZSBzaGlmdCBvZiB0aGUgY29lZmZpY2llbnQgdG8gdGhlIHJpZ2h0LCBubyBjaGVjayBmb3Igc3BlY2lhbHMuCisgKiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmRpY2F0b3IgZm9yIG1wZF9ybmRfaW5jcigpLgorICogVGhlIGZ1bmN0aW9uIGNhbm5vdCBmYWlsLgorICovCittcGRfdWludF90CittcGRfcXNoaWZ0cl9pbnBsYWNlKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgdWludDMyX3QgZHVtbXk7CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChyZXN1bHQpKTsKKyAgICBhc3NlcnQobiA+PSAwKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSB8fCBuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG4gPj0gcmVzdWx0LT5kaWdpdHMpIHsKKyAgICAgICAgcm5kID0gX21wZF9nZXRfcm5kKHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4sIChuPT1yZXN1bHQtPmRpZ2l0cykpOworICAgICAgICBtcGRfemVyb2NvZWZmKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBybmQgPSBfbXBkX2Jhc2VzaGlmdHIocmVzdWx0LT5kYXRhLCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuLCBuKTsKKyAgICAgICAgcmVzdWx0LT5kaWdpdHMgLT0gbjsKKyAgICAgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShyZXN1bHQtPmRpZ2l0cyk7CisgICAgICAgIC8qIHJlZHVjaW5nIHRoZSBzaXplIGNhbm5vdCBmYWlsICovCisgICAgICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgc2l6ZSwgJmR1bW15KTsKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBzaXplOworICAgIH0KKworICAgIHJldHVybiBybmQ7Cit9CisKKy8qCisgKiBTaGlmdCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIG9wZXJhbmQgdG8gdGhlIHJpZ2h0LCBubyBjaGVjayBmb3Igc3BlY2lhbHMuCisgKiBCb3RoIG9wZXJhbmRzIG1heSBiZSB0aGUgc2FtZSBwb2ludGVyLiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmRpY2F0b3IgdG8KKyAqIGJlIHVzZWQgYnkgbXBkX3JuZF9pbmNyKCkuIElmIHRoZSByZXN1bHQgbGVuZ3RoIGhhcyB0byBiZSBpbmNyZWFzZWQsCisgKiBtcGRfcWNvcHkoKSBvciBtcGRfcXJlc2l6ZSgpIG1pZ2h0IGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLiBJbiB0aG9zZQorICogY2FzZXMsIE1QRF9VSU5UX01BWCBpcyByZXR1cm5lZC4KKyAqLworbXBkX3VpbnRfdAorbXBkX3FzaGlmdHIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChhKSk7CisgICAgYXNzZXJ0KG4gPj0gMCk7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpIHx8IG4gPT0gMCkgeworICAgICAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG4gPj0gYS0+ZGlnaXRzKSB7CisgICAgICAgIHJuZCA9IF9tcGRfZ2V0X3JuZChhLT5kYXRhLCBhLT5sZW4sIChuPT1hLT5kaWdpdHMpKTsKKyAgICAgICAgbXBkX3plcm9jb2VmZihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHMtbjsKKyAgICAgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShyZXN1bHQtPmRpZ2l0cyk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICAgICAgcm5kID0gX21wZF9iYXNlc2hpZnRyKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBuKTsKKyAgICAgICAgICAgIC8qIHJlZHVjaW5nIHRoZSBzaXplIGNhbm5vdCBmYWlsICovCisgICAgICAgICAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHNpemUsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgc2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBybmQgPSBfbXBkX2Jhc2VzaGlmdHIocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIG4pOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+bGVuID0gc2l6ZTsKKyAgICB9CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworCisgICAgcmV0dXJuIHJuZDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgTWlzY2VsbGFuZW91cyBvcGVyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIExvZ2ljYWwgQW5kICovCit2b2lkCittcGRfcWFuZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgY29uc3QgbXBkX3QgKmJpZyA9IGEsICpzbWFsbCA9IGI7CisgICAgbXBkX3VpbnRfdCB4LCB5LCB6LCB4Yml0LCB5Yml0OworICAgIGludCBrLCBtc3dkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikgfHwKKyAgICAgICAgbXBkX2lzbmVnYXRpdmUoYSkgfHwgbXBkX2lzbmVnYXRpdmUoYikgfHwKKyAgICAgICAgYS0+ZXhwICE9IDAgfHwgYi0+ZXhwICE9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChiLT5kaWdpdHMgPiBhLT5kaWdpdHMpIHsKKyAgICAgICAgYmlnID0gYjsKKyAgICAgICAgc21hbGwgPSBhOworICAgIH0KKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgYmlnLT5sZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLyogZnVsbCB3b3JkcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBzbWFsbC0+bGVuLTE7IGkrKykgeworICAgICAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICB6ICs9ICh4Yml0JnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB6OworICAgIH0KKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgb2Ygc21hbGwgKi8KKyAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB6ID0gMDsKKyAgICBtc3dkaWdpdHMgPSBtcGRfd29yZF9kaWdpdHMoeCk7CisgICAgZm9yIChrID0gMDsgayA8IG1zd2RpZ2l0czsgaysrKSB7CisgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgIHggLz0gMTA7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9ICh4Yml0JnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICB9CisgICAgcmVzdWx0LT5kYXRhW2krK10gPSB6OworCisgICAgLyogc2NhbiB0aGUgcmVzdCBvZiB5IGZvciBkaWdpdHMgPiAxICovCisgICAgZm9yICg7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBzY2FuIHRoZSByZXN0IG9mIGJpZyBmb3IgZGlnaXRzID4gMSAqLworICAgIGZvciAoOyBpIDwgYmlnLT5sZW47IGkrKykgeworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBzbWFsbC0+bGVuKTsKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgcmV0dXJuOworCitpbnZhbGlkX29wZXJhdGlvbjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7Cit9CisKKy8qIENsYXNzIG9mIGFuIG9wZXJhbmQuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjb25zdGFudCBuYW1lLiAqLworY29uc3QgY2hhciAqCittcGRfY2xhc3MoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpZiAobXBkX2lzbmFuKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNxbmFuKGEpKQorICAgICAgICAgICAgcmV0dXJuICJOYU4iOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gInNOYU4iOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNwb3NpdGl2ZShhKSkgeworICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpCisgICAgICAgICAgICByZXR1cm4gIitJbmZpbml0eSI7CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3plcm8oYSkpCisgICAgICAgICAgICByZXR1cm4gIitaZXJvIjsKKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbm9ybWFsKGEsIGN0eCkpCisgICAgICAgICAgICByZXR1cm4gIitOb3JtYWwiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gIitTdWJub3JtYWwiOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKQorICAgICAgICAgICAgcmV0dXJuICItSW5maW5pdHkiOworICAgICAgICBlbHNlIGlmIChtcGRfaXN6ZXJvKGEpKQorICAgICAgICAgICAgcmV0dXJuICItWmVybyI7CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25vcm1hbChhLCBjdHgpKQorICAgICAgICAgICAgcmV0dXJuICItTm9ybWFsIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICItU3Vibm9ybWFsIjsKKyAgICB9Cit9CisKKy8qIExvZ2ljYWwgWG9yICovCit2b2lkCittcGRfcWludmVydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHgsIHosIHhiaXQ7CisgICAgbXBkX3NzaXplX3QgaSwgZGlnaXRzLCBsZW47CisgICAgbXBkX3NzaXplX3QgcSwgcjsKKyAgICBpbnQgazsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc25lZ2F0aXZlKGEpIHx8IGEtPmV4cCAhPSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRpZ2l0cyA9IChhLT5kaWdpdHMgPCBjdHgtPnByZWMpID8gY3R4LT5wcmVjIDogYS0+ZGlnaXRzOworICAgIF9tcGRfaWRpdl93b3JkKCZxLCAmciwgZGlnaXRzLCBNUERfUkRJR0lUUyk7CisgICAgbGVuID0gKHIgPT0gMCkgPyBxIDogcSsxOworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICB4ID0gKGkgPCBhLT5sZW4pID8gYS0+ZGF0YVtpXSA6IDA7CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICBpZiAoeGJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeiArPSAheGJpdCA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gejsKKyAgICB9CisKKyAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGxlbik7CisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIHJldHVybjsKKworaW52YWxpZF9vcGVyYXRpb246CisgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworfQorCisvKiBFeHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHRoZSBvcGVyYW5kLiAqLwordm9pZAorbXBkX3Fsb2diKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfTkVHLCBNUERfSU5GKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xc2V0X3NzaXplKHJlc3VsdCwgbXBkX2FkamV4cChhKSwgY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyogTG9naWNhbCBPciAqLwordm9pZAorbXBkX3FvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBjb25zdCBtcGRfdCAqYmlnID0gYSwgKnNtYWxsID0gYjsKKyAgICBtcGRfdWludF90IHgsIHksIHosIHhiaXQsIHliaXQ7CisgICAgaW50IGssIG1zd2RpZ2l0czsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSB8fAorICAgICAgICBtcGRfaXNuZWdhdGl2ZShhKSB8fCBtcGRfaXNuZWdhdGl2ZShiKSB8fAorICAgICAgICBhLT5leHAgIT0gMCB8fCBiLT5leHAgIT0gMCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGItPmRpZ2l0cyA+IGEtPmRpZ2l0cykgeworICAgICAgICBiaWcgPSBiOworICAgICAgICBzbWFsbCA9IGE7CisgICAgfQorICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBiaWctPmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvKiBmdWxsIHdvcmRzICovCisgICAgZm9yIChpID0gMDsgaSA8IHNtYWxsLT5sZW4tMTsgaSsrKSB7CisgICAgICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgeiA9IDA7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHogKz0gKHhiaXR8eWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHo7CisgICAgfQorICAgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiBzbWFsbCAqLworICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgIHogPSAwOworICAgIG1zd2RpZ2l0cyA9IG1wZF93b3JkX2RpZ2l0cyh4KTsKKyAgICBmb3IgKGsgPSAwOyBrIDwgbXN3ZGlnaXRzOyBrKyspIHsKKyAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0gKHhiaXR8eWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgIH0KKworICAgIC8qIHNjYW4gZm9yIGRpZ2l0cyA+IDEgYW5kIGNvcHkgdGhlIHJlc3Qgb2YgeSAqLworICAgIGZvciAoOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgeiArPSB5Yml0Km1wZF9wb3cxMFtrXTsKKyAgICB9CisgICAgcmVzdWx0LT5kYXRhW2krK10gPSB6OworICAgIC8qIHNjYW4gZm9yIGRpZ2l0cyA+IDEgYW5kIGNvcHkgdGhlIHJlc3Qgb2YgYmlnICovCisgICAgZm9yICg7IGkgPCBiaWctPmxlbjsgaSsrKSB7CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gYmlnLT5kYXRhW2ldOworICAgIH0KKworICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgYmlnLT5sZW4pOworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICByZXR1cm47CisKK2ludmFsaWRfb3BlcmF0aW9uOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKK30KKworLyoKKyAqIFJvdGF0ZSB0aGUgY29lZmZpY2llbnQgb2YgJ2EnIGJ5ICdiJyBkaWdpdHMuICdiJyBtdXN0IGJlIGFuIGludGVnZXIgd2l0aAorICogZXhwb25lbnQgMC4KKyAqLwordm9pZAorbXBkX3Fyb3RhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhiaWcsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMoc21hbGwsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3QgbiwgbHNoaWZ0LCByc2hpZnQ7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYi0+ZXhwICE9IDAgfHwgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbiA9IG1wZF9xZ2V0X3NzaXplKGIsICZ3b3Jrc3RhdHVzKTsKKyAgICBpZiAod29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChuID4gY3R4LT5wcmVjIHx8IG4gPCAtY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuID49IDApIHsKKyAgICAgICAgbHNoaWZ0ID0gbjsKKyAgICAgICAgcnNoaWZ0ID0gY3R4LT5wcmVjLW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsc2hpZnQgPSBjdHgtPnByZWMrbjsKKyAgICAgICAgcnNoaWZ0ID0gLW47CisgICAgfQorCisgICAgaWYgKGEtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICBpZiAoIW1wZF9xY29weSgmdG1wLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgX21wZF9jYXAoJnRtcCwgY3R4KTsKKyAgICAgICAgYSA9ICZ0bXA7CisgICAgfQorCisgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYmlnLCBhLCBsc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIF9tcGRfY2FwKCZiaWcsIGN0eCk7CisKKyAgICBpZiAobXBkX3FzaGlmdHIoJnNtYWxsLCBhLCByc2hpZnQsIHN0YXR1cykgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBfbXBkX3FhZGQocmVzdWx0LCAmYmlnLCAmc21hbGwsIGN0eCwgc3RhdHVzKTsKKworCitmaW5pc2g6CisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICBtcGRfZGVsKCZiaWcpOworICAgIG1wZF9kZWwoJnNtYWxsKTsKK30KKworLyoKKyAqIGIgbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggZXhwb25lbnQgMCBhbmQgaW4gdGhlIHJhbmdlICstMiooZW1heCArIHByZWMpLgorICogWFhYOiBJbiBteSBvcGluaW9uICstKDIqZW1heCArIHByZWMpIHdvdWxkIGJlIG1vcmUgc2Vuc2libGUuCisgKiBUaGUgcmVzdWx0IGlzIGEgd2l0aCB0aGUgdmFsdWUgb2YgYiBhZGRlZCB0byBpdHMgZXhwb25lbnQuCisgKi8KK3ZvaWQKK21wZF9xc2NhbGViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfdWludF90IG4sIG1heGp1bXA7CisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgorICAgIGludDY0X3QgZXhwOworI2Vsc2UKKyAgICBtcGRfdWludF90IHg7CisgICAgaW50IHhfc2lnbiwgbl9zaWduOworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyNlbmRpZgorCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGItPmV4cCAhPSAwIHx8IG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG4gPSBtcGRfcWFic191aW50KGIsICZ3b3Jrc3RhdHVzKTsKKyAgICAvKiB0aGUgc3BlYyBkZW1hbmRzIHRoaXMgKi8KKyAgICBtYXhqdW1wID0gMiAqIChtcGRfdWludF90KShjdHgtPmVtYXggKyBjdHgtPnByZWMpOworCisgICAgaWYgKG4gPiBtYXhqdW1wIHx8IHdvcmtzdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKyAgICBleHAgPSBhLT5leHAgKyAoaW50NjRfdCluICogbXBkX2FyaXRoX3NpZ24oYik7CisgICAgZXhwID0gKGV4cCA+IE1QRF9FWFBfSU5GKSA/IE1QRF9FWFBfSU5GIDogZXhwOworICAgIGV4cCA9IChleHAgPCBNUERfRVhQX0NMQU1QKSA/IE1QRF9FWFBfQ0xBTVAgOiBleHA7CisjZWxzZQorICAgIHggPSAoYS0+ZXhwIDwgMCkgPyAtYS0+ZXhwIDogYS0+ZXhwOworICAgIHhfc2lnbiA9IChhLT5leHAgPCAwKSA/IDEgOiAwOworICAgIG5fc2lnbiA9IG1wZF9pc25lZ2F0aXZlKGIpID8gMSA6IDA7CisKKyAgICBpZiAoeF9zaWduID09IG5fc2lnbikgeworICAgICAgICB4ID0geCArIG47CisgICAgICAgIGlmICh4IDwgbikgeCA9IE1QRF9VSU5UX01BWDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHhfc2lnbiA9ICh4ID49IG4pID8geF9zaWduIDogbl9zaWduOworICAgICAgICB4ID0gKHggPj0gbikgPyB4IC0gbiA6IG4gLSB4OworICAgIH0KKyAgICBpZiAoIXhfc2lnbiAmJiB4ID4gTVBEX0VYUF9JTkYpIHggPSBNUERfRVhQX0lORjsKKyAgICBpZiAoeF9zaWduICYmIHggPiAtTVBEX0VYUF9DTEFNUCkgeCA9IC1NUERfRVhQX0NMQU1QOworICAgIGV4cCA9IHhfc2lnbiA/IC0oKG1wZF9zc2l6ZV90KXgpIDogKG1wZF9zc2l6ZV90KXg7CisjZW5kaWYKKworICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgcmVzdWx0LT5leHAgPSAobXBkX3NzaXplX3QpZXhwOworCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIFNoaWZ0IHRoZSBjb2VmZmljaWVudCBieSBuIGRpZ2l0cywgcG9zaXRpdmUgbiBpcyBhIGxlZnQgc2hpZnQuIEluIHRoZSBjYXNlCisgKiBvZiBhIGxlZnQgc2hpZnQsIHRoZSByZXN1bHQgaXMgZGVjYXBpdGF0ZWQgdG8gZml0IHRoZSBjb250ZXh0IHByZWNpc2lvbi4gSWYKKyAqIHlvdSBkb24ndCB3YW50IHRoYXQsIHVzZSBtcGRfc2hpZnRsKCkuCisgKi8KK3ZvaWQKK21wZF9xc2hpZnRuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobiA+PSAwICYmIG4gPD0gY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgbiwgc3RhdHVzKTsKKyAgICAgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIH0KKyAgICBlbHNlIGlmIChuIDwgMCAmJiBuID49IC1jdHgtPnByZWMpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgLW4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIFNhbWUgYXMgbXBkX3NoaWZ0bigpLCBidXQgdGhlIHNoaWZ0IGlzIHNwZWNpZmllZCBieSB0aGUgZGVjaW1hbCBiLCB3aGljaAorICogbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggYSB6ZXJvIGV4cG9uZW50LiBJbmZpbml0aWVzIHJlbWFpbiBpbmZpbml0aWVzLgorICovCit2b2lkCittcGRfcXNoaWZ0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9zc2l6ZV90IG47CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYi0+ZXhwICE9IDAgfHwgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbiA9IG1wZF9xZ2V0X3NzaXplKGIsICZ3b3Jrc3RhdHVzKTsKKyAgICBpZiAod29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChuID4gY3R4LT5wcmVjIHx8IG4gPCAtY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuID49IDApIHsKKyAgICAgICAgbXBkX3FzaGlmdGwocmVzdWx0LCBhLCBuLCBzdGF0dXMpOworICAgICAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCAtbik7CisgICAgfQorfQorCisvKiBMb2dpY2FsIFhvciAqLwordm9pZAorbXBkX3F4b3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgY29uc3QgbXBkX3QgKmJpZyA9IGEsICpzbWFsbCA9IGI7CisgICAgbXBkX3VpbnRfdCB4LCB5LCB6LCB4Yml0LCB5Yml0OworICAgIGludCBrLCBtc3dkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikgfHwKKyAgICAgICAgbXBkX2lzbmVnYXRpdmUoYSkgfHwgbXBkX2lzbmVnYXRpdmUoYikgfHwKKyAgICAgICAgYS0+ZXhwICE9IDAgfHwgYi0+ZXhwICE9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChiLT5kaWdpdHMgPiBhLT5kaWdpdHMpIHsKKyAgICAgICAgYmlnID0gYjsKKyAgICAgICAgc21hbGwgPSBhOworICAgIH0KKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgYmlnLT5sZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLyogZnVsbCB3b3JkcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBzbWFsbC0+bGVuLTE7IGkrKykgeworICAgICAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICB6ICs9ICh4Yml0XnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB6OworICAgIH0KKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgb2Ygc21hbGwgKi8KKyAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB6ID0gMDsKKyAgICBtc3dkaWdpdHMgPSBtcGRfd29yZF9kaWdpdHMoeCk7CisgICAgZm9yIChrID0gMDsgayA8IG1zd2RpZ2l0czsgaysrKSB7CisgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgIHggLz0gMTA7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9ICh4Yml0XnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICB9CisKKyAgICAvKiBzY2FuIGZvciBkaWdpdHMgPiAxIGFuZCBjb3B5IHRoZSByZXN0IG9mIHkgKi8KKyAgICBmb3IgKDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0geWJpdCptcGRfcG93MTBba107CisgICAgfQorICAgIHJlc3VsdC0+ZGF0YVtpKytdID0gejsKKyAgICAvKiBzY2FuIGZvciBkaWdpdHMgPiAxIGFuZCBjb3B5IHRoZSByZXN0IG9mIGJpZyAqLworICAgIGZvciAoOyBpIDwgYmlnLT5sZW47IGkrKykgeworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB9CisKKyAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGJpZy0+bGVuKTsKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgcmV0dXJuOworCitpbnZhbGlkX29wZXJhdGlvbjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIEFyaXRobWV0aWMgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogVGhlIGFic29sdXRlIHZhbHVlIG9mIGEuIElmIGEgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKKyAqIGFzIHRoZSByZXN1bHQgb2YgdGhlIG1pbnVzIG9wZXJhdGlvbi4gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIHRoZQorICogcmVzdWx0IG9mIHRoZSBwbHVzIG9wZXJhdGlvbi4KKyAqLwordm9pZAorbXBkX3FhYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3FtaW51cyhyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xcGx1cyhyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9wdHJzd2FwKG1wZF90ICoqYSwgbXBkX3QgKipiKQoreworICAgIG1wZF90ICp0ID0gKmE7CisgICAgKmEgPSAqYjsKKyAgICAqYiA9IHQ7Cit9CisKKy8qIEFkZCBvciBzdWJ0cmFjdCBpbmZpbml0aWVzLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWFkZHN1Yl9pbmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50OF90IHNpZ25fYiwKKyAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9zaWduKGEpICE9IHNpZ25fYiAmJiBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKSwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYikpOworICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgc2lnbl9iLCBNUERfSU5GKTsKK30KKworLyogQWRkIG9yIHN1YnRyYWN0IG5vbi1zcGVjaWFsIG51bWJlcnMuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDhfdCBzaWduX2IsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF90ICpiaWcsICpzbWFsbDsKKyAgICBNUERfTkVXX1NUQVRJQyhiaWdfYWxpZ25lZCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHRpbnksMCwwLDEsMSwxLDEpOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NzaXplX3QgbmV3c2l6ZSwgc2hpZnQ7CisgICAgbXBkX3NzaXplX3QgZXhwLCBpOworICAgIGludCBzd2FwID0gMDsKKworCisgICAgLyogY29tcGFyZSBleHBvbmVudHMgKi8KKyAgICBiaWcgPSAobXBkX3QgKilhOyBzbWFsbCA9IChtcGRfdCAqKWI7CisgICAgaWYgKGJpZy0+ZXhwICE9IHNtYWxsLT5leHApIHsKKyAgICAgICAgaWYgKHNtYWxsLT5leHAgPiBiaWctPmV4cCkgeworICAgICAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgICAgICAgICBzd2FwKys7CisgICAgICAgIH0KKyAgICAgICAgLyogYWxpZ24gdGhlIGNvZWZmaWNpZW50cyAqLworICAgICAgICBpZiAoIW1wZF9pc3plcm9jb2VmZihiaWcpKSB7CisgICAgICAgICAgICBleHAgPSBiaWctPmV4cCAtIDE7CisgICAgICAgICAgICBleHAgKz0gKGJpZy0+ZGlnaXRzID4gY3R4LT5wcmVjKSA/IDAgOiBiaWctPmRpZ2l0cy1jdHgtPnByZWMtMTsKKyAgICAgICAgICAgIGlmIChtcGRfYWRqZXhwKHNtYWxsKSA8IGV4cCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQXZvaWQgaHVnZSBzaGlmdHMgYnkgc3Vic3RpdHV0aW5nIGEgdmFsdWUgZm9yIHNtYWxsIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgKiBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0cy4KKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIGFkamV4cChzbWFsbCkgPCBleHAgaWYgYW5kIG9ubHkgaWY6CisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgIGJkaWdpdHMgPD0gcHJlYyBBTkQKKyAgICAgICAgICAgICAgICAgKiAgIGJkaWdpdHMrc2hpZnQgPj0gcHJlYysyK3NkaWdpdHMgQU5ECisgICAgICAgICAgICAgICAgICogICBleHAgPSBiZXhwK2JkaWdpdHMtcHJlYy0yCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgICAgMTIzNDU2NzAwMDAwMDAwMCAgLT4gIGJkaWdpdHMgKyBzaGlmdAorICAgICAgICAgICAgICAgICAqICAgICAtLS0tLS0tLS0tWFgxMjM0ICAtPiAgc2RpZ2l0cworICAgICAgICAgICAgICAgICAqICAgICAtLS0tLS0tLS0tWDEgICAgICAtPiAgdGlueS1kaWdpdHMKKyAgICAgICAgICAgICAgICAgKiAgICAgfC0gcHJlYyAtfAorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogICAgICBPUgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogICBiZGlnaXRzID4gcHJlYyBBTkQKKyAgICAgICAgICAgICAgICAgKiAgIHNoaWZ0ID4gc2RpZ2l0cyBBTkQKKyAgICAgICAgICAgICAgICAgKiAgIGV4cCA9IGJleHAtMQorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogICAgIDEyMzQ1Njc4OTIxMDAwMDAgIC0+ICBiZGlnaXRzICsgc2hpZnQKKyAgICAgICAgICAgICAgICAgKiAgICAgLS0tLS0tLS0tLVhYMTIzNCAgLT4gIHNkaWdpdHMKKyAgICAgICAgICAgICAgICAgKiAgICAgLS0tLS0tLS0tLVgxICAgICAgLT4gIHRpbnktZGlnaXRzCisgICAgICAgICAgICAgICAgICogICAgIHwtIHByZWMgLXwKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIElmIHRpbnkgaXMgemVybywgYWRkaW5nIG9yIHN1YnRyYWN0aW5nIGlzIGEgbm8tb3AuCisgICAgICAgICAgICAgICAgICogT3RoZXJ3aXNlLCBhZGRpbmcgdGlueSBnZW5lcmF0ZXMgYSBub24temVybyBkaWdpdCBlaXRoZXIKKyAgICAgICAgICAgICAgICAgKiBiZWxvdyB0aGUgcm91bmRpbmcgZGlnaXQgb3IgdGhlIGxlYXN0IHNpZ25pZmljYW50IGRpZ2l0CisgICAgICAgICAgICAgICAgICogb2YgYmlnLiBXaGVuIHN1YnRyYWN0aW5nLCB0aW55IGlzIGluIHRoZSBzYW1lIHBvc2l0aW9uIGFzCisgICAgICAgICAgICAgICAgICogdGhlIGNhcnJ5IHRoYXQgd291bGQgYmUgZ2VuZXJhdGVkIGJ5IHN1YnRyYWN0aW5nIHNkaWdpdHMuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbXBkX2NvcHlfZmxhZ3MoJnRpbnksIHNtYWxsKTsKKyAgICAgICAgICAgICAgICB0aW55LmV4cCA9IGV4cDsKKyAgICAgICAgICAgICAgICB0aW55LmRpZ2l0cyA9IDE7CisgICAgICAgICAgICAgICAgdGlueS5sZW4gPSAxOworICAgICAgICAgICAgICAgIHRpbnkuZGF0YVswXSA9IG1wZF9pc3plcm9jb2VmZihzbWFsbCkgPyAwIDogMTsKKyAgICAgICAgICAgICAgICBzbWFsbCA9ICZ0aW55OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogVGhpcyBjYW5ub3Qgd3JhcDogdGhlIGRpZmZlcmVuY2UgaXMgcG9zaXRpdmUgYW5kIDw9IG1heHByZWMgKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gYmlnLT5leHAgLSBzbWFsbC0+ZXhwOworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYmlnX2FsaWduZWQsIGJpZywgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYmlnID0gJmJpZ19hbGlnbmVkOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdC0+ZXhwID0gc21hbGwtPmV4cDsKKworCisgICAgLyogY29tcGFyZSBsZW5ndGggb2YgY29lZmZpY2llbnRzICovCisgICAgaWYgKGJpZy0+bGVuIDwgc21hbGwtPmxlbikgeworICAgICAgICBfbXBkX3B0cnN3YXAoJmJpZywgJnNtYWxsKTsKKyAgICAgICAgc3dhcCsrOworICAgIH0KKworICAgIG5ld3NpemUgPSBiaWctPmxlbjsKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgbmV3c2l6ZSwgc3RhdHVzKSkgeworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisKKyAgICBpZiAobXBkX3NpZ24oYSkgPT0gc2lnbl9iKSB7CisKKyAgICAgICAgY2FycnkgPSBfbXBkX2Jhc2VhZGQocmVzdWx0LT5kYXRhLCBiaWctPmRhdGEsIHNtYWxsLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWctPmxlbiwgc21hbGwtPmxlbik7CisKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBuZXdzaXplID0gYmlnLT5sZW4gKyAxOworICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIG5ld3NpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVtuZXdzaXplLTFdID0gY2Fycnk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQtPmxlbiA9IG5ld3NpemU7CisgICAgICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzaWduX2IpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGJpZy0+bGVuID09IHNtYWxsLT5sZW4pIHsKKyAgICAgICAgICAgIGZvciAoaT1iaWctPmxlbi0xOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgICAgIGlmIChiaWctPmRhdGFbaV0gIT0gc21hbGwtPmRhdGFbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpZy0+ZGF0YVtpXSA8IHNtYWxsLT5kYXRhW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBfbXBkX3B0cnN3YXAoJmJpZywgJnNtYWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3YXArKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBfbXBkX2Jhc2VzdWIocmVzdWx0LT5kYXRhLCBiaWctPmRhdGEsIHNtYWxsLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgYmlnLT5sZW4sIHNtYWxsLT5sZW4pOworICAgICAgICBuZXdzaXplID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBiaWctPmxlbik7CisgICAgICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgICAgICh2b2lkKW1wZF9xcmVzaXplKHJlc3VsdCwgbmV3c2l6ZSwgc3RhdHVzKTsKKworICAgICAgICByZXN1bHQtPmxlbiA9IG5ld3NpemU7CisgICAgICAgIHNpZ25fYiA9IChzd2FwICYgMSkgPyBzaWduX2IgOiBtcGRfc2lnbihhKTsKKyAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNpZ25fYik7CisKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihyZXN1bHQpKSB7CisgICAgICAgICAgICBtcGRfc2V0X3Bvc2l0aXZlKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoY3R4LT5yb3VuZCA9PSBNUERfUk9VTkRfRkxPT1IpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0X25lZ2F0aXZlKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisKK2ZpbmlzaDoKKyAgICBtcGRfZGVsKCZiaWdfYWxpZ25lZCk7Cit9CisKKy8qIEFkZCBhIGFuZCBiLiBObyBzcGVjaWFscywgbm8gZmluYWxpemluZy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FhZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBfbXBkX3FhZGRzdWIocmVzdWx0LCBhLCBiLCBtcGRfc2lnbihiKSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBTdWJ0cmFjdCBiIGZyb20gYS4gTm8gc3BlY2lhbHMsIG5vIGZpbmFsaXppbmcuICovCitzdGF0aWMgdm9pZAorX21wZF9xc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgIF9tcGRfcWFkZHN1YihyZXN1bHQsIGEsIGIsICFtcGRfc2lnbihiKSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBBZGQgYSBhbmQgYi4gKi8KK3ZvaWQKK21wZF9xYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FhZGRzdWJfaW5mKHJlc3VsdCwgYSwgYiwgbXBkX3NpZ24oYiksIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FhZGRzdWIocmVzdWx0LCBhLCBiLCBtcGRfc2lnbihiKSwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEFkZCBhIGFuZCBiLiBTZXQgTmFOL0ludmFsaWRfb3BlcmF0aW9uIGlmIHRoZSByZXN1bHQgaXMgaW5leGFjdC4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FhZGRfZXhhY3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKworICAgIG1wZF9xYWRkKHJlc3VsdCwgYSwgYiwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIGlmICh3b3Jrc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBTdWJ0cmFjdCBiIGZyb20gYS4gKi8KK3ZvaWQKK21wZF9xc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FhZGRzdWJfaW5mKHJlc3VsdCwgYSwgYiwgIW1wZF9zaWduKGIpLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9xYWRkc3ViKHJlc3VsdCwgYSwgYiwgIW1wZF9zaWduKGIpLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgYiBmcm9tIGEuIFNldCBOYU4vSW52YWxpZF9vcGVyYXRpb24gaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0LiAqLworc3RhdGljIHZvaWQKK19tcGRfcXN1Yl9leGFjdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworCisgICAgbXBkX3FzdWIocmVzdWx0LCBhLCBiLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgaWYgKHdvcmtzdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX0NsYW1wZWQpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCBtcGRfc3NpemVfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfc3NpemUoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcWFkZChyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogQWRkIGRlY2ltYWwgYW5kIG1wZF91aW50X3QuICovCit2b2lkCittcGRfcWFkZF91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3VpbnQoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcWFkZChyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogU3VidHJhY3QgbXBkX3NzaXplX3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsCisgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF9zc2l6ZSgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xc3ViKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBTdWJ0cmFjdCBtcGRfdWludF90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfdWludCgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xc3ViKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBBZGQgZGVjaW1hbCBhbmQgaW50MzJfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWFkZF9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogQWRkIGRlY2ltYWwgYW5kIHVpbnQzMl90LiAqLwordm9pZAorbXBkX3FhZGRfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWFkZF91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBBZGQgZGVjaW1hbCBhbmQgaW50NjRfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWFkZF9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogQWRkIGRlY2ltYWwgYW5kIHVpbnQ2NF90LiAqLwordm9pZAorbXBkX3FhZGRfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWFkZF91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKy8qIFN1YnRyYWN0IGludDMyX3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3ViX3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBTdWJ0cmFjdCB1aW50MzJfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3ViX3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIFN1YnRyYWN0IGludDY0X3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3ViX3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBTdWJ0cmFjdCB1aW50NjRfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3ViX3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworCisvKiBEaXZpZGUgaW5maW5pdGllcy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FkaXZfaW5mKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYikpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKV5tcGRfc2lnbihiKSwgMCwgbXBkX2V0aW55KGN0eCkpOworICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7Cit9CisKK2VudW0ge05PX0lERUFMX0VYUCwgU0VUX0lERUFMX0VYUH07CisvKiBEaXZpZGUgYSBieSBiLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWRpdihpbnQgYWN0aW9uLCBtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBNUERfTkVXX1NUQVRJQyhhbGlnbmVkLDAsMCwwLDApOworICAgIG1wZF91aW50X3QgbGQ7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQsIGV4cCwgdHo7CisgICAgbXBkX3NzaXplX3QgbmV3c2l6ZTsKKyAgICBtcGRfc3NpemVfdCBpZGVhbF9leHA7CisgICAgbXBkX3VpbnRfdCByZW07CisgICAgdWludDhfdCBzaWduX2EgPSBtcGRfc2lnbihhKTsKKyAgICB1aW50OF90IHNpZ25fYiA9IG1wZF9zaWduKGIpOworCisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocSwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xZGl2X2luZihxLCBhLCBiLCBjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ25fYV5zaWduX2IsIE1QRF9JTkYpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgZXhwID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgICAgICBfc2V0dHJpcGxlKHEsIHNpZ25fYV5zaWduX2IsIDAsIGV4cCk7CisgICAgICAgIG1wZF9xZmluYWxpemUocSwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hpZnQgPSAoYi0+ZGlnaXRzIC0gYS0+ZGlnaXRzKSArIGN0eC0+cHJlYyArIDE7CisgICAgaWRlYWxfZXhwID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgIGV4cCA9IGlkZWFsX2V4cCAtIHNoaWZ0OworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYWxpZ25lZCwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgYSA9ICZhbGlnbmVkOworICAgIH0KKyAgICBlbHNlIGlmIChzaGlmdCA8IDApIHsKKyAgICAgICAgc2hpZnQgPSAtc2hpZnQ7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmFsaWduZWQsIGIsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIGIgPSAmYWxpZ25lZDsKKyAgICB9CisKKworICAgIG5ld3NpemUgPSBhLT5sZW4gLSBiLT5sZW4gKyAxOworICAgIGlmICgocSAhPSBiICYmIHEgIT0gYSkgfHwgKHEgPT0gYiAmJiBuZXdzaXplID4gYi0+bGVuKSkgeworICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHEsIG5ld3NpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIGlmIChiLT5sZW4gPT0gMSkgeworICAgICAgICByZW0gPSBfbXBkX3Nob3J0ZGl2KHEtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiwgYi0+ZGF0YVswXSk7CisgICAgfQorICAgIGVsc2UgaWYgKGItPmxlbiA8PSBNUERfTkVXVE9ORElWX0NVVE9GRikgeworICAgICAgICBpbnQgcmV0ID0gX21wZF9iYXNlZGl2bW9kKHEtPmRhdGEsIE5VTEwsIGEtPmRhdGEsIGItPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS0+bGVuLCBiLT5sZW4pOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICByZW0gPSByZXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBNUERfTkVXX1NUQVRJQyhyLDAsMCwwLDApOworICAgICAgICBfbXBkX2Jhc2VfbmRpdm1vZChxLCAmciwgYSwgYiwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocSkgfHwgbXBkX2lzc3BlY2lhbCgmcikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgbXBkX2RlbCgmcik7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICByZW0gPSAhbXBkX2lzemVyb2NvZWZmKCZyKTsKKyAgICAgICAgbXBkX2RlbCgmcik7CisgICAgICAgIG5ld3NpemUgPSBxLT5sZW47CisgICAgfQorCisgICAgbmV3c2l6ZSA9IF9tcGRfcmVhbF9zaXplKHEtPmRhdGEsIG5ld3NpemUpOworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3FyZXNpemUocSwgbmV3c2l6ZSwgc3RhdHVzKTsKKyAgICBtcGRfc2V0X2ZsYWdzKHEsIHNpZ25fYV5zaWduX2IpOworICAgIHEtPmxlbiA9IG5ld3NpemU7CisgICAgbXBkX3NldGRpZ2l0cyhxKTsKKworICAgIHNoaWZ0ID0gaWRlYWxfZXhwIC0gZXhwOworICAgIGlmIChyZW0pIHsKKyAgICAgICAgbGQgPSBtcGRfbHNkKHEtPmRhdGFbMF0pOworICAgICAgICBpZiAobGQgPT0gMCB8fCBsZCA9PSA1KSB7CisgICAgICAgICAgICBxLT5kYXRhWzBdICs9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoYWN0aW9uID09IFNFVF9JREVBTF9FWFAgJiYgc2hpZnQgPiAwKSB7CisgICAgICAgIHR6ID0gbXBkX3RyYWlsX3plcm9zKHEpOworICAgICAgICBzaGlmdCA9ICh0eiA+IHNoaWZ0KSA/IHNoaWZ0IDogdHo7CisgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocSwgc2hpZnQpOworICAgICAgICBleHAgKz0gc2hpZnQ7CisgICAgfQorCisgICAgcS0+ZXhwID0gZXhwOworCisKK2ZpbmlzaDoKKyAgICBtcGRfZGVsKCZhbGlnbmVkKTsKKyAgICBtcGRfcWZpbmFsaXplKHEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogRGl2aWRlIGEgYnkgYi4gKi8KK3ZvaWQKK21wZF9xZGl2KG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX21wZF9xZGl2KFNFVF9JREVBTF9FWFAsIHEsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogSW50ZXJuYWwgZnVuY3Rpb24uICovCitzdGF0aWMgdm9pZAorX21wZF9xZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBNUERfTkVXX1NUQVRJQyhhbGlnbmVkLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IHFzaXplLCByc2l6ZTsKKyAgICBtcGRfc3NpemVfdCBpZGVhbF9leHAsIGV4cGRpZmYsIHNoaWZ0OworICAgIHVpbnQ4X3Qgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisgICAgdWludDhfdCBzaWduX2FiID0gbXBkX3NpZ24oYSlebXBkX3NpZ24oYik7CisKKworICAgIGlkZWFsX2V4cCA9IChhLT5leHAgPiBiLT5leHApID8gIGItPmV4cCA6IGEtPmV4cDsKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICAgICAgci0+ZXhwID0gaWRlYWxfZXhwOworICAgICAgICBfc2V0dHJpcGxlKHEsIHNpZ25fYWIsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXhwZGlmZiA9IG1wZF9hZGpleHAoYSkgLSBtcGRfYWRqZXhwKGIpOworICAgIGlmIChleHBkaWZmIDwgMCkgeworICAgICAgICBpZiAoYS0+ZXhwID4gYi0+ZXhwKSB7CisgICAgICAgICAgICAvKiBwb3NpdGl2ZSBhbmQgbGVzcyB0aGFuIGItPmRpZ2l0cyAtIGEtPmRpZ2l0cyAqLworICAgICAgICAgICAgc2hpZnQgPSBhLT5leHAgLSBiLT5leHA7CisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHIsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByLT5leHAgPSBpZGVhbF9leHA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weShyLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgX3NldHRyaXBsZShxLCBzaWduX2FiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXhwZGlmZiA+IGN0eC0+cHJlYykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlOworICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICB9CisKKworICAgIC8qCisgICAgICogQXQgdGhpcyBwb2ludCB3ZSBoYXZlOgorICAgICAqICAgKDEpIDAgPD0gYS0+ZXhwICsgYS0+ZGlnaXRzIC0gYi0+ZXhwIC0gYi0+ZGlnaXRzIDw9IHByZWMKKyAgICAgKiAgICgyKSBhLT5leHAgLSBiLT5leHAgPj0gYi0+ZGlnaXRzIC0gYS0+ZGlnaXRzCisgICAgICogICAoMykgYS0+ZXhwIC0gYi0+ZXhwIDw9IHByZWMgKyBiLT5kaWdpdHMgLSBhLT5kaWdpdHMKKyAgICAgKi8KKyAgICBpZiAoYS0+ZXhwICE9IGItPmV4cCkgeworICAgICAgICBzaGlmdCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICAgICAgaWYgKHNoaWZ0ID4gMCkgeworICAgICAgICAgICAgLyogYnkgKDMpLCBhZnRlciB0aGUgc2hpZnQgYS0+ZGlnaXRzIDw9IHByZWMgKyBiLT5kaWdpdHMgKi8KKyAgICAgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmFsaWduZWQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhID0gJmFsaWduZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAgeworICAgICAgICAgICAgc2hpZnQgPSAtc2hpZnQ7CisgICAgICAgICAgICAvKiBieSAoMiksIGFmdGVyIHRoZSBzaGlmdCBiLT5kaWdpdHMgPD0gYS0+ZGlnaXRzICovCisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZhbGlnbmVkLCBiLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYiA9ICZhbGlnbmVkOworICAgICAgICB9CisgICAgfQorCisKKyAgICBxc2l6ZSA9IGEtPmxlbiAtIGItPmxlbiArIDE7CisgICAgaWYgKCEocSA9PSBhICYmIHFzaXplIDwgYS0+bGVuKSAmJiAhKHEgPT0gYiAmJiBxc2l6ZSA8IGItPmxlbikpIHsKKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShxLCBxc2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByc2l6ZSA9IGItPmxlbjsKKyAgICBpZiAoIShyID09IGEgJiYgcnNpemUgPCBhLT5sZW4pKSB7CisgICAgICAgIGlmICghbXBkX3FyZXNpemUociwgcnNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGItPmxlbiA9PSAxKSB7CisgICAgICAgIGlmIChhLT5sZW4gPT0gMSkgeworICAgICAgICAgICAgX21wZF9kaXZfd29yZCgmcS0+ZGF0YVswXSwgJnItPmRhdGFbMF0sIGEtPmRhdGFbMF0sIGItPmRhdGFbMF0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgci0+ZGF0YVswXSA9IF9tcGRfc2hvcnRkaXYocS0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBiLT5kYXRhWzBdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChiLT5sZW4gPD0gTVBEX05FV1RPTkRJVl9DVVRPRkYpIHsKKyAgICAgICAgaW50IHJldDsKKyAgICAgICAgcmV0ID0gX21wZF9iYXNlZGl2bW9kKHEtPmRhdGEsIHItPmRhdGEsIGEtPmRhdGEsIGItPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLT5sZW4sIGItPmxlbik7CisgICAgICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX2Jhc2VfbmRpdm1vZChxLCByLCBhLCBiLCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChxKSB8fCBtcGRfaXNzcGVjaWFsKHIpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBxc2l6ZSA9IHEtPmxlbjsKKyAgICAgICAgcnNpemUgPSByLT5sZW47CisgICAgfQorCisgICAgcXNpemUgPSBfbXBkX3JlYWxfc2l6ZShxLT5kYXRhLCBxc2l6ZSk7CisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcXJlc2l6ZShxLCBxc2l6ZSwgc3RhdHVzKTsKKyAgICBxLT5sZW4gPSBxc2l6ZTsKKyAgICBtcGRfc2V0ZGlnaXRzKHEpOworICAgIG1wZF9zZXRfZmxhZ3MocSwgc2lnbl9hYik7CisgICAgcS0+ZXhwID0gMDsKKyAgICBpZiAocS0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2ltcG9zc2libGU7CisgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgIH0KKworICAgIHJzaXplID0gX21wZF9yZWFsX3NpemUoci0+ZGF0YSwgcnNpemUpOworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3FyZXNpemUociwgcnNpemUsIHN0YXR1cyk7CisgICAgci0+bGVuID0gcnNpemU7CisgICAgbXBkX3NldGRpZ2l0cyhyKTsKKyAgICBtcGRfc2V0X2ZsYWdzKHIsIHNpZ25fYSk7CisgICAgci0+ZXhwID0gaWRlYWxfZXhwOworCitvdXQ6CisgICAgbXBkX2RlbCgmYWxpZ25lZCk7CisgICAgcmV0dXJuOworCituYW5yZXN1bHQ6CisgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7CisgICAgZ290byBvdXQ7Cit9CisKKy8qIEludGVnZXIgZGl2aXNpb24gd2l0aCByZW1haW5kZXIuICovCit2b2lkCittcGRfcWRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50OF90IHNpZ24gPSBtcGRfc2lnbihhKV5tcGRfc2lnbihiKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhxLCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyLCBxLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBzaWduLCBNUERfSU5GKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHIsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weShyLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHEsIHNpZ24sIDAsIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGRlYnVnICovCisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHIsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fdW5kZWZpbmVkOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gKE1QRF9EaXZpc2lvbl9ieV96ZXJvfE1QRF9JbnZhbGlkX29wZXJhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcWRpdm1vZChxLCByLCBhLCBiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShxLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xZGl2aW50KG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMociwwLDAsMCwwKTsKKyAgICB1aW50OF90IHNpZ24gPSBtcGRfc2lnbihhKV5tcGRfc2lnbihiKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhxLCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkgJiYgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBzaWduLCBNUERfSU5GKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocSwgc2lnbiwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogZGVidWcgKi8KKyAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfRGl2aXNpb25fdW5kZWZpbmVkLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9ieV96ZXJvOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIF9tcGRfcWRpdm1vZChxLCAmciwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJnIpOworICAgIG1wZF9xZmluYWxpemUocSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBEaXZpZGUgZGVjaW1hbCBieSBtcGRfc3NpemVfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfc3NpemUoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcWRpdihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgbXBkX3VpbnRfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfdWludCgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xZGl2KHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBEaXZpZGUgZGVjaW1hbCBieSBpbnQzMl90LiAqLwordm9pZAorbXBkX3FkaXZfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xZGl2X3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBEaXZpZGUgZGVjaW1hbCBieSB1aW50MzJfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FkaXZfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogRGl2aWRlIGRlY2ltYWwgYnkgaW50NjRfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWRpdl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgdWludDY0X3QuICovCit2b2lkCittcGRfcWRpdl91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xZGl2X3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworLyogUGFkIHRoZSByZXN1bHQgd2l0aCB0cmFpbGluZyB6ZXJvcyBpZiBpdCBoYXMgZmV3ZXIgZGlnaXRzIHRoYW4gcHJlYy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3plcm9wYWQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmICghbXBkX2lzc3BlY2lhbChyZXN1bHQpICYmICFtcGRfaXN6ZXJvKHJlc3VsdCkgJiYKKyAgICAgICAgcmVzdWx0LT5kaWdpdHMgPCBjdHgtPnByZWMpIHsKKyAgICAgICBtcGRfc3NpemVfdCBzaGlmdCA9IGN0eC0+cHJlYyAtIHJlc3VsdC0+ZGlnaXRzOworICAgICAgIG1wZF9xc2hpZnRsKHJlc3VsdCwgcmVzdWx0LCBzaGlmdCwgc3RhdHVzKTsKKyAgICAgICByZXN1bHQtPmV4cCAtPSBzaGlmdDsKKyAgICB9Cit9CisKKy8qIENoZWNrIGlmIHRoZSByZXN1bHQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmUuICovCitzdGF0aWMgaW50CitfbXBkX3FleHBfY2hlY2tfb25lKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19DT05TVChsaW0sMCwtKGN0eC0+cHJlYysxKSwxLDEsMSw5KTsKKyAgICBNUERfTkVXX1NIQVJFRChhYSwgYSk7CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYSk7CisKKyAgICAvKiBhYnMoYSkgPD0gOSAqIDEwKiooLXByZWMtMSkgKi8KKyAgICBpZiAoX21wZF9jbXAoJmFhLCAmbGltKSA8PSAwKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCAwLCAxLCAwKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfUm91bmRlZHxNUERfSW5leGFjdDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBHZXQgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIGZvciB0aGUgSG9ybmVyIHNjaGVtZSBpbiBfbXBkX3FleHAoKS4KKyAqLworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdAorX21wZF9nZXRfZXhwX2l0ZXJhdGlvbnMoY29uc3QgbXBkX3QgKnIsIG1wZF9zc2l6ZV90IHApCit7CisgICAgbXBkX3NzaXplX3QgbG9nMTBwYnlyOyAvKiBsb3dlciBib3VuZCBmb3IgbG9nMTAocCAvIGFicyhyKSkgKi8KKyAgICBtcGRfc3NpemVfdCBuOworCisgICAgYXNzZXJ0KHAgPj0gMTApOworICAgIGFzc2VydCghbXBkX2lzemVybyhyKSk7CisgICAgYXNzZXJ0KC1wIDwgbXBkX2FkamV4cChyKSAmJiBtcGRfYWRqZXhwKHIpIDw9IC0xKTsKKworI2lmZGVmIENPTkZJR182NAorICAgIGlmIChwID4gKG1wZF9zc2l6ZV90KSgxVUxMPDw1MikpIHsKKyAgICAgICAgcmV0dXJuIE1QRF9TU0laRV9NQVg7CisgICAgfQorI2VuZGlmCisKKyAgICAvKgorICAgICAqIExvd2VyIGJvdW5kIGZvciBsb2cxMChwIC8gYWJzKHIpKTogYWRqZXhwKHApIC0gKGFkamV4cChyKSArIDEpCisgICAgICogQXQgdGhpcyBwb2ludCAoZm9yIENPTkZJR182NCwgQ09ORklHXzMyIGlzIG5vdCBwcm9ibGVtYXRpYyk6CisgICAgICogICAgMSkgMTAgPD0gcCA8PSAyKio1MgorICAgICAqICAgIDIpIC1wIDwgYWRqZXhwKHIpIDw9IC0xCisgICAgICogICAgMykgMSA8PSBsb2cxMHBieXIgPD0gMioqNTIgKyAxNAorICAgICAqLworICAgIGxvZzEwcGJ5ciA9IChtcGRfd29yZF9kaWdpdHMocCktMSkgLSAobXBkX2FkamV4cChyKSsxKTsKKworICAgIC8qCisgICAgICogVGhlIG51bWVyYXRvciBpbiB0aGUgcGFwZXIgaXMgMS40MzUgKiBwIC0gMS4xODIsIGNhbGN1bGF0ZWQKKyAgICAgKiBleGFjdGx5LiBXZSBjb21wZW5zYXRlIGZvciByb3VuZGluZyBlcnJvcnMgYnkgdXNpbmcgMS40MzUwMy4KKyAgICAgKiBBQ0wyIHByb29mczoKKyAgICAgKiAgICAxKSBleHAtaXRlci1hcHByb3gtbG93ZXItYm91bmQ6IFRoZSB0ZXJtIGJlbG93IGV2YWx1YXRlZAorICAgICAqICAgICAgIGluIDUzLWJpdCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGlzIGdyZWF0ZXIgdGhhbiBvcgorICAgICAqICAgICAgIGVxdWFsIHRvIHRoZSBleGFjdCB0ZXJtIHVzZWQgaW4gdGhlIHBhcGVyLgorICAgICAqICAgIDIpIGV4cC1pdGVyLWFwcHJveC11cHBlci1ib3VuZDogVGhlIHRlcm0gYmVsb3cgaXMgbGVzcyB0aGFuCisgICAgICogICAgICAgb3IgZXF1YWwgdG8gMy8yICogcCA8PSAzLzIgKiAyKio1Mi4KKyAgICAgKi8KKyAgICBuID0gKG1wZF9zc2l6ZV90KWNlaWwoKDEuNDM1MDMqKGRvdWJsZSlwIC0gMS4xODIpIC8gKGRvdWJsZSlsb2cxMHBieXIpOworICAgIHJldHVybiBuID49IDMgPyBuIDogMzsKK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uLCBzcGVjaWFscyBoYXZlIGJlZW4gZGVhbHQgd2l0aC4gQXBhcnQgZnJvbSBPdmVyZmxvdworICogYW5kIFVuZGVyZmxvdywgdHdvIGNhc2VzIG11c3QgYmUgY29uc2lkZXJlZCBmb3IgdGhlIGVycm9yIG9mIHRoZSByZXN1bHQ6CisgKgorICogICAxKSBhYnMoYSkgPD0gOSAqIDEwKiooLXByZWMtMSkgID09PiAgcmVzdWx0ID09IDEKKyAqCisgKiAgICAgIEFic29sdXRlIGVycm9yOiBhYnMoMSAtIGUqKngpIDwgMTAqKigtcHJlYykKKyAqICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqICAgMikgYWJzKGEpID4gOSAqIDEwKiooLXByZWMtMSkKKyAqCisgKiAgICAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gZSoqeCkgPCAwLjUgKiAxMCoqKC1wcmVjKSAqIGUqKngKKyAqICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoZSBhbGdvcml0aG0gaXMgZnJvbSBIdWxsJkFicmhhbSwgVmFyaWFibGUgUHJlY2lzaW9uIEV4cG9uZW50aWFsIEZ1bmN0aW9uLAorICogQUNNIFRyYW5zYWN0aW9ucyBvbiBNYXRoZW1hdGljYWwgU29mdHdhcmUsIFZvbC4gMTIsIE5vLiAyLCBKdW5lIDE5ODYuCisgKgorICogTWFpbiBkaWZmZXJlbmNlczoKKyAqCisgKiAgLSBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBIb3JuZXIgc2NoZW1lIGlzIGNhbGN1bGF0ZWQgdXNpbmcKKyAqICAgIDUzLWJpdCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLgorICoKKyAqICAtIEluIHRoZSBlcnJvciBhbmFseXNpcyBmb3IgRVIgKHJlbGF0aXZlIGVycm9yIGFjY3VtdWxhdGVkIGluIHRoZQorICogICAgZXZhbHVhdGlvbiBvZiB0aGUgdHJ1bmNhdGVkIHNlcmllcykgdGhlIHJlZHVjZWQgb3BlcmFuZCByIG1heQorICogICAgaGF2ZSBhbnkgbnVtYmVyIG9mIGRpZ2l0cy4KKyAqICAgIEFDTDIgcHJvb2Y6IGV4cG9uZW50LXJlbGF0aXZlLWVycm9yCisgKgorICogIC0gVGhlIGFuYWx5c2lzIGZvciBlYXJseSBhYm9ydGlvbiBoYXMgYmVlbiBhZGFwdGVkIGZvciB0aGUgbXBkX3QKKyAqICAgIHJhbmdlcy4KKyAqLworc3RhdGljIHZvaWQKK19tcGRfcWV4cChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhzdW0sMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVCh3b3JkLDAsMCwxLDEsMSwxKTsKKyAgICBtcGRfc3NpemVfdCBqLCBuLCB0OworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDEsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXZSBhcmUgY2FsY3VsYXRpbmcgZV54ID0gZV4ocioxMF50KSA9IChlXnIpXigxMF50KSwgd2hlcmUgYWJzKHIpIDwgMSBhbmQgdCA+PSAwLgorICAgICAqCisgICAgICogSWYgdCA+IDAsIHdlIGhhdmU6CisgICAgICoKKyAgICAgKiAgICgxKSAwLjEgPD0gciA8IDEsIHNvIGVeMC4xIDw9IGVeci4gSWYgdCA+IE1BWF9ULCBvdmVyZmxvdyBvY2N1cnM6CisgICAgICoKKyAgICAgKiAgICAgTUFYLUVNQVgrMSA8IGxvZzEwKGVeKDAuMSoxMCp0KSkgPD0gbG9nMTAoZV4ocioxMF50KSkgPCBhZGpleHAoZV4ocioxMF50KSkrMQorICAgICAqCisgICAgICogICAoMikgLTEgPCByIDw9IC0wLjEsIHNvIGVeciA8PSBlXi0wLjEuIElmIHQgPiBNQVhfVCwgdW5kZXJmbG93IG9jY3VyczoKKyAgICAgKgorICAgICAqICAgICBhZGpleHAoZV4ocioxMF50KSkgPD0gbG9nMTAoZV4ocioxMF50KSkgPD0gbG9nMTAoZV4oLTAuMSoxMF50KSkgPCBNSU4tRVRJTlkKKyAgICAgKi8KKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKyAgICAjZGVmaW5lIE1QRF9FWFBfTUFYX1QgMTkKKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKQorICAgICNkZWZpbmUgTVBEX0VYUF9NQVhfVCAxMAorI2VuZGlmCisgICAgdCA9IGEtPmRpZ2l0cyArIGEtPmV4cDsKKyAgICB0ID0gKHQgPiAwKSA/IHQgOiAwOworICAgIGlmICh0ID4gTVBEX0VYUF9NQVhfVCkgeworICAgICAgICBpZiAobXBkX2lzcG9zaXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9PdmVyZmxvd3xNUERfSW5leGFjdHxNUERfUm91bmRlZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAwLCBtcGRfZXRpbnkoY3R4KSk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfU3Vibm9ybWFsfAorICAgICAgICAgICAgICAgICAgICAgICAgTVBEX1VuZGVyZmxvd3xNUERfQ2xhbXBlZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIGFicyhhKSA8PSA5ICogMTAqKigtcHJlYy0xKSAqLworICAgIGlmIChfbXBkX3FleHBfY2hlY2tfb25lKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmd29ya2N0eCk7CisgICAgd29ya2N0eC5wcmVjID0gY3R4LT5wcmVjICsgdCArIDI7CisgICAgd29ya2N0eC5wcmVjID0gKHdvcmtjdHgucHJlYyA8IDEwKSA/IDEwIDogd29ya2N0eC5wcmVjOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzdWx0LT5leHAgLT0gdDsKKworICAgIC8qCisgICAgICogQXQgdGhpcyBwb2ludDoKKyAgICAgKiAgICAxKSA5ICogMTAqKigtcHJlYy0xKSA8IGFicyhhKQorICAgICAqICAgIDIpIDkgKiAxMCoqKC1wcmVjLXQtMSkgPCBhYnMocikKKyAgICAgKiAgICAzKSBsb2cxMCg5KSAtIHByZWMgLSB0IC0gMSA8IGxvZzEwKGFicyhyKSkgPCBhZGpleHAoYWJzKHIpKSArIDEKKyAgICAgKiAgICA0KSAtIHByZWMgLSB0IC0gMiA8IGFkamV4cChhYnMocikpIDw9IC0xCisgICAgICovCisgICAgbiA9IF9tcGRfZ2V0X2V4cF9pdGVyYXRpb25zKHJlc3VsdCwgd29ya2N0eC5wcmVjKTsKKyAgICBpZiAobiA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICByZXR1cm47IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBfc2V0dHJpcGxlKCZzdW0sIE1QRF9QT1MsIDEsIDApOworCisgICAgZm9yIChqID0gbi0xOyBqID49IDE7IGotLSkgeworICAgICAgICB3b3JkLmRhdGFbMF0gPSBqOworICAgICAgICBtcGRfc2V0ZGlnaXRzKCZ3b3JkKTsKKyAgICAgICAgbXBkX3FkaXYoJnRtcCwgcmVzdWx0LCAmd29yZCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIG1wZF9xZm1hKCZzdW0sICZzdW0sICZ0bXAsICZvbmUsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIH0KKworI2lmZGVmIENPTkZJR182NAorICAgIF9tcGRfcXBvd191aW50KHJlc3VsdCwgJnN1bSwgbXBkX3BvdzEwW3RdLCBNUERfUE9TLCAmd29ya2N0eCwgc3RhdHVzKTsKKyNlbHNlCisgICAgaWYgKHQgPD0gTVBEX01BWF9QT1cxMCkgeworICAgICAgICBfbXBkX3Fwb3dfdWludChyZXN1bHQsICZzdW0sIG1wZF9wb3cxMFt0XSwgTVBEX1BPUywgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0IC09IE1QRF9NQVhfUE9XMTA7CisgICAgICAgIF9tcGRfcXBvd191aW50KCZ0bXAsICZzdW0sIG1wZF9wb3cxMFtNUERfTUFYX1BPVzEwXSwgTVBEX1BPUywKKyAgICAgICAgICAgICAgICAgICAgICAgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIF9tcGRfcXBvd191aW50KHJlc3VsdCwgJnRtcCwgbXBkX3BvdzEwW3RdLCBNUERfUE9TLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9CisjZW5kaWYKKworICAgIG1wZF9kZWwoJnRtcCk7CisgICAgbXBkX2RlbCgmc3VtKTsKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7Cit9CisKKy8qIGV4cChhKSAqLwordm9pZAorbXBkX3FleHAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrY3R4ID0gKmN0eDsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKworICAgIGlmIChjdHgtPmFsbGNyKSB7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQxLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDIsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh1bHAsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyhhYSwgMCwwLDAsMCk7CisgICAgICAgIG1wZF9zc2l6ZV90IHByZWM7CisgICAgICAgIG1wZF9zc2l6ZV90IHVscGV4cDsKKyAgICAgICAgdWludDMyX3Qgd29ya3N0YXR1czsKKworICAgICAgICBpZiAocmVzdWx0ID09IGEpIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Fjb3B5KCZhYSwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYSA9ICZhYTsKKyAgICAgICAgfQorCisgICAgICAgIHdvcmtjdHguY2xhbXAgPSAwOworICAgICAgICBwcmVjID0gY3R4LT5wcmVjICsgMzsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IHByZWM7CisgICAgICAgICAgICB3b3Jrc3RhdHVzID0gMDsKKworICAgICAgICAgICAgX21wZF9xZXhwKHJlc3VsdCwgYSwgJndvcmtjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKworICAgICAgICAgICAgdWxwZXhwID0gcmVzdWx0LT5leHAgKyByZXN1bHQtPmRpZ2l0cyAtIHdvcmtjdHgucHJlYzsKKyAgICAgICAgICAgIGlmICh3b3Jrc3RhdHVzICYgTVBEX1VuZGVyZmxvdykgeworICAgICAgICAgICAgICAgIC8qIFRoZSBlZmZlY3RpdmUgd29yayBwcmVjaXNpb24gaXMgcmVzdWx0LT5kaWdpdHMuICovCisgICAgICAgICAgICAgICAgdWxwZXhwID0gcmVzdWx0LT5leHA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfc3NldHRyaXBsZSgmdWxwLCBNUERfUE9TLCAxLCB1bHBleHApOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQXQgdGhpcyBwb2ludCBbMV06CisgICAgICAgICAgICAgKiAgIDEpIGFicyhyZXN1bHQgLSBlKip4KSA8IDAuNSAqIDEwKiooLXByZWMpICogZSoqeAorICAgICAgICAgICAgICogICAyKSByZXN1bHQgLSB1bHAgPCBlKip4IDwgcmVzdWx0ICsgdWxwCisgICAgICAgICAgICAgKiAgIDMpIHJlc3VsdCAtIHVscCA8IHJlc3VsdCA8IHJlc3VsdCArIHVscAorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIElmIHJvdW5kKHJlc3VsdC11bHApPT1yb3VuZChyZXN1bHQrdWxwKSwgdGhlbgorICAgICAgICAgICAgICogcm91bmQocmVzdWx0KT09cm91bmQoZSoqeCkuIFRoZXJlZm9yZSB0aGUgcmVzdWx0CisgICAgICAgICAgICAgKiBpcyBjb3JyZWN0bHkgcm91bmRlZC4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBbMV0gSWYgYWJzKGEpIDw9IDkgKiAxMCoqKC1wcmVjLTEpLCB1c2UgdGhlIGFic29sdXRlCisgICAgICAgICAgICAgKiAgICAgZXJyb3IgZm9yIGEgc2ltaWxhciBhcmd1bWVudC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gY3R4LT5wcmVjOworICAgICAgICAgICAgbXBkX3FhZGQoJnQxLCByZXN1bHQsICZ1bHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgbXBkX3FzdWIoJnQyLCByZXN1bHQsICZ1bHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fCBtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSB8fAorICAgICAgICAgICAgICAgIG1wZF9xY21wKCZ0MSwgJnQyLCBzdGF0dXMpID09IDApIHsKKyAgICAgICAgICAgICAgICB3b3JrY3R4LmNsYW1wID0gY3R4LT5jbGFtcDsKKyAgICAgICAgICAgICAgICBfbXBkX3plcm9wYWQocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJlYyArPSBNUERfUkRJR0lUUzsKKyAgICAgICAgfQorICAgICAgICBtcGRfZGVsKCZ0MSk7CisgICAgICAgIG1wZF9kZWwoJnQyKTsKKyAgICAgICAgbXBkX2RlbCgmdWxwKTsKKyAgICAgICAgbXBkX2RlbCgmYWEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xZXhwKHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIF9tcGRfemVyb3BhZChyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qIEZ1c2VkIG11bHRpcGx5LWFkZDogKGEgKiBiKSArIGMsIHdpdGggYSBzaW5nbGUgZmluYWwgcm91bmRpbmcuICovCit2b2lkCittcGRfcWZtYShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF90ICpjLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF90ICpjYyA9IChtcGRfdCAqKWM7CisKKyAgICBpZiAocmVzdWx0ID09IGMpIHsKKyAgICAgICAgaWYgKChjYyA9IG1wZF9xbmNvcHkoYykpID09IE5VTEwpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfbXBkX3FtdWwocmVzdWx0LCBhLCBiLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICBpZiAoISh3b3Jrc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikpIHsKKyAgICAgICAgbXBkX3FhZGQocmVzdWx0LCByZXN1bHQsIGNjLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoY2MgIT0gYykgbXBkX2RlbChjYyk7CisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworfQorCisvKgorICogU2NoZWR1bGUgdGhlIG9wdGltYWwgcHJlY2lzaW9uIGluY3JlYXNlIGZvciB0aGUgTmV3dG9uIGl0ZXJhdGlvbi4KKyAqICAgdiA6PSBpbnB1dCBvcGVyYW5kCisgKiAgIHpfMCA6PSBpbml0aWFsIGFwcHJveGltYXRpb24KKyAqICAgaW5pdHByZWMgOj0gbmF0dXJhbCBudW1iZXIgc3VjaCB0aGF0IGFicyhsb2codikgLSB6XzApIDwgMTAqKi1pbml0cHJlYworICogICBtYXhwcmVjIDo9IHRhcmdldCBwcmVjaXNpb24KKyAqCisgKiBGb3IgY29udmVuaWVuY2UgdGhlIG91dHB1dCBrbGlzdCBjb250YWlucyB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlcjoKKyAqICAga2xpc3QgOj0gW2tfbi0xLCAuLi4sIGtfMF0sIHdoZXJlCisgKiAgICAgMSkga18wIDw9IGluaXRwcmVjIGFuZAorICogICAgIDIpIGFicyhsb2codikgLSByZXN1bHQpIDwgMTAqKigtMiprX24tMSArIDEpIDw9IDEwKiotbWF4cHJlYy4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK2xuX3NjaGVkdWxlX3ByZWMobXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdLCBtcGRfc3NpemVfdCBtYXhwcmVjLAorICAgICAgICAgICAgICAgICBtcGRfc3NpemVfdCBpbml0cHJlYykKK3sKKyAgICBtcGRfc3NpemVfdCBrOworICAgIGludCBpOworCisgICAgYXNzZXJ0KG1heHByZWMgPj0gMiAmJiBpbml0cHJlYyA+PSAyKTsKKyAgICBpZiAobWF4cHJlYyA8PSBpbml0cHJlYykgcmV0dXJuIC0xOworCisgICAgaSA9IDA7IGsgPSBtYXhwcmVjOworICAgIGRvIHsKKyAgICAgICAgayA9IChrKzIpIC8gMjsKKyAgICAgICAga2xpc3RbaSsrXSA9IGs7CisgICAgfSB3aGlsZSAoayA+IGluaXRwcmVjKTsKKworICAgIHJldHVybiBpLTE7Cit9CisKKy8qIFRoZSBjb25zdGFudHMgaGF2ZSBiZWVuIHZlcmlmaWVkIHdpdGggYm90aCBkZWNpbWFsLnB5IGFuZCBtcGZyLiAqLworI2lmZGVmIENPTkZJR182NAorI2lmIE1QRF9SRElHSVRTICE9IDE5CisgICNlcnJvciAibXBkZWNpbWFsLmM6IE1QRF9SRElHSVRTIG11c3QgYmUgMTkuIgorI2VuZGlmCitzdGF0aWMgY29uc3QgbXBkX3VpbnRfdCBtcGRfbG4xMF9kYXRhW01QRF9NSU5BTExPQ19NQVhdID0geworICA2OTgzNzE2MzI4OTgyMTc0NDA3VUxMLCA5MDg5NzA0MjgxOTc2MzM2NTgzVUxMLCAxNTE1OTYxMTM1NjQ4NDY1NDYxVUxMLAorICA0NDE2ODE2MzM1NzI3NTU1NzAzVUxMLCAyOTAwOTg4MDM5MTk0MTcwMjY1VUxMLCAyMzA3OTI1MDM3NDcyOTg2NTA5VUxMLAorICAgMTA3NTk4NDM4MzE5MTkxMjkyVUxMLCAzNDY2NjI0MTA3MTg0NjY5MjMxVUxMLCA0NDUwMDk5NzgxMzExNDY5MTU5VUxMLAorICA5ODA3ODI4MDU5NzUxMTkzODU0VUxMLCA3NzEzNDU2ODYyMDkxNjcwNTg0VUxMLCAxNDkyMTk4ODQ5OTc4NzQ4ODczVUxMLAorICA2NTI4NzI4Njk2NTExMDg2MjU3VUxMLCAyMzg1MzkyMDUxNDQ2MzQxOTcyVUxMLCA4NjkyMTgwMjA1MTg5MzM5NTA3VUxMLAorICA2NTE4NzY5NzUxMDM3NDk3MDg4VUxMLCAyMzc1MjUzNTc3MDk3NTA1Mzk1VUxMLCA5MDk1NjEwMjk5MjkxODI0MzE4VUxMLAorICAgOTgyNzQ4MjM4NTA0NTY0ODAxVUxMLCA1NDM4NjM1OTE3NzgxMTcwNTQzVUxMLCA3NTQ3MzMxNTQxNDIxODA4NDI3VUxMLAorICAgNzUyMzcxMDMzMzEwMTE5Nzg1VUxMLCAzMTcxNjQzMDk1MDU5OTUwODc4VUxMLCA5Nzg1MjY1MzgzMjA3NjA2NzI2VUxMLAorICAyOTMyMjU4Mjc5ODUwMjU4NTUwVUxMLCA1NDk3MzQ3NzI2NjI0MjU3MDk0VUxMLCAyOTc2OTc5NTIyMTEwNzE4MjY0VUxMLAorICA5MjIxNDc3NjU2NzYzNjkzODY2VUxMLCAxOTc5NjUwMDQ3MTQ5NTEwNTA0VUxMLCA2Njc0MTgzNDg1NzA0NDIyNTA3VUxMLAorICA5NzAyNzY2ODYwNTk1MjQ5NjcxVUxMLCA5Mjc4MDk2NzYyNzEyNzU3NzUzVUxMLCA5MzE0ODQ4NTI0OTQ4NjQ0ODcxVUxMLAorICA2ODI2OTI4MjgwODQ4MTE4NDI4VUxMLCAgNzU0NDAzNzA4NDc0Njk5NDAxVUxMLCAgMjMwMTA1NzAzMDg5NjM0NTcyVUxMLAorICAxOTI5MjAzMzM3NjU4NzE0MTY2VUxMLCA3NTg5NDAyNTY3NzYzMTEzNTY5VUxMLCA0MjA4MjQxMzE0Njk1Njg5MDE2VUxMLAorICAyOTIyNDU1NDQwNTc1ODkyNTcyVUxMLCA5MzU2NzM0MjA2NzA1ODExMzY0VUxMLCAyNjg0OTE2NzQ2NTUwNTg2ODU2VUxMLAorICAgNjQ0NTA3MDY0ODAwMDI3NzUwVUxMLCA5NDc2ODM0NjM2MTY3OTIxMDE4VUxMLCA1NjU5MTIxMzczNDUwNzQ3ODU2VUxMLAorICAyODM1NTIyMDExNDgwNDY2MzcxVUxMLCA2NDcwODA2ODU1Njc3NDMyMTYyVUxMLCA3MTQxNzQ4MDAzNjg4MDg0MDEyVUxMLAorICA5NjE5NDA0NDAwMjIyMTA1MTAxVUxMLCA1NTA0ODkzNDMxNDkzOTM5MTQ3VUxMLCA2Njc0NzQ0MDQyNDMyNzQzNjUxVUxMLAorICAyMjg3Njk4MjE5ODg2NzQ2NTQzVUxMLCA3NzczMjYyODg0NjE2MzM2NjIyVUxMLCAxOTg1MjgzOTM1MDUzMDg5NjUzVUxMLAorICA0NjgwODQzNzk5ODk0ODI2MjMzVUxMLCA4MTY4OTQ4MjkwNzIwODMyNTU1VUxMLCA4MDY3NTY2NjYyODczNjkwOTg3VUxMLAorICA2MjQ4NjMzNDA5NTI1NDY1MDgyVUxMLCA5ODI5ODM0MTk2Nzc4NDA0MjI4VUxMLCAzNTI0ODAyMzU5OTcyMDUwODk1VUxMLAorICAzMzI3OTAwOTY3NTcyNjA5Njc3VUxMLCAgMTEwMTQ4ODYyODc3Mjk3NjAzVUxMLCAgMTc5OTE0NTQ2ODQzNjQyMDc2VUxMLAorICAyMzAyNTg1MDkyOTk0MDQ1Njg0VUxMCit9OworI2Vsc2UKKyNpZiBNUERfUkRJR0lUUyAhPSA5CisgICNlcnJvciAibXBkZWNpbWFsLmM6IE1QRF9SRElHSVRTIG11c3QgYmUgOS4iCisjZW5kaWYKK3N0YXRpYyBjb25zdCBtcGRfdWludF90IG1wZF9sbjEwX2RhdGFbTVBEX01JTkFMTE9DX01BWF0gPSB7CisgIDQwMTY4MjY5MlVMLCA3MDg0NzQ2OTlVTCwgNzIwNzU0NDAzVUwsICAzMDg5NjM0NVVMLCA2MDIzMDEwNTdVTCwgNzY1ODcxNDE2VUwsCisgIDE5MjkyMDMzM1VMLCA3NjMxMTM1NjlVTCwgNTg5NDAyNTY3VUwsIDk1Njg5MDE2N1VMLCAgODI0MTMxNDZVTCwgNTg5MjU3MjQyVUwsCisgIDI0NTU0NDA1N1VMLCA4MTEzNjQyOTJVTCwgNzM0MjA2NzA1VUwsIDg2ODU2OTM1NlVMLCAxNjc0NjU1MDVVTCwgNzc1MDI2ODQ5VUwsCisgIDcwNjQ4MDAwMlVMLCAgMTgwNjQ0NTBVTCwgNjM2MTY3OTIxVUwsIDU2OTQ3NjgzNFVMLCA3MzQ1MDc0NzhVTCwgMTU2NTkxMjEzVUwsCisgIDE0ODA0NjYzN1VMLCAyODM1NTIyMDFVTCwgNjc3NDMyMTYyVUwsIDQ3MDgwNjg1NVVMLCA4ODA4NDAxMjZVTCwgNDE3NDgwMDM2VUwsCisgIDIxMDUxMDE3MVVMLCA5NDA0NDAwMjJVTCwgOTM5MTQ3OTYxVUwsIDg5MzQzMTQ5M1VMLCA0MzY1MTU1MDRVTCwgNDQwNDI0MzI3VUwsCisgIDY1NDM2Njc0N1VMLCA4MjE5ODg2NzRVTCwgNjIyMjI4NzY5VUwsIDg4NDYxNjMzNlVMLCA1Mzc3NzMyNjJVTCwgMzUwNTMwODk2VUwsCisgIDMxOTg1MjgzOVVMLCA5ODk0ODI2MjNVTCwgNDY4MDg0Mzc5VUwsIDcyMDgzMjU1NVVMLCAxNjg5NDgyOTBVTCwgNzM2OTA5ODc4VUwsCisgIDY3NTY2NjYyOFVMLCA1NDY1MDgyODBVTCwgODYzMzQwOTUyVUwsIDQwNDIyODYyNFVMLCA4MzQxOTY3NzhVTCwgNTA4OTU5ODI5VUwsCisgICAyMzU5OTcyMFVMLCA5Njc3MzUyNDhVTCwgIDk2NzU3MjYwVUwsIDYwMzMzMjc5MFVMLCA4NjI4NzcyOTdVTCwgNzYwMTEwMTQ4VUwsCisgIDQ2ODQzNjQyMFVMLCA0MDE3OTkxNDVVTCwgMjk5NDA0NTY4VUwsIDIzMDI1ODUwOVVMCit9OworI2VuZGlmCisvKiBfbXBkX2xuMTAgaXMgdXNlZCBkaXJlY3RseSBmb3IgcHJlY2lzaW9ucyBzbWFsbGVyIHRoYW4gTUlOQUxMT0NfTUFYKlJESUdJVFMuCisgICBPdGhlcndpc2UsIGl0IHNlcnZlcyBhcyB0aGUgaW5pdGlhbCBhcHByb3hpbWF0aW9uIGZvciBjYWxjdWxhdGluZyBsbigxMCkuICovCitzdGF0aWMgY29uc3QgbXBkX3QgX21wZF9sbjEwID0geworICBNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAtKE1QRF9NSU5BTExPQ19NQVgqTVBEX1JESUdJVFMtMSksCisgIE1QRF9NSU5BTExPQ19NQVgqTVBEX1JESUdJVFMsIE1QRF9NSU5BTExPQ19NQVgsIE1QRF9NSU5BTExPQ19NQVgsCisgIChtcGRfdWludF90ICopbXBkX2xuMTBfZGF0YQorfTsKKworLyoKKyAqIFNldCAncmVzdWx0JyB0byBsb2coMTApLgorICogICBVbHAgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2coMTApKSA8IHVscChsb2coMTApKQorICogICBSZWxhdGl2ZSBlcnJvcjogYWJzKHJlc3VsdCAtIGxvZygxMCkpIDwgNSAqIDEwKiotcHJlYyAqIGxvZygxMCkKKyAqCisgKiBOT1RFOiBUaGUgcmVsYXRpdmUgZXJyb3IgaXMgbm90IGRlcml2ZWQgZnJvbSB0aGUgdWxwIGVycm9yLCBidXQKKyAqIGNhbGN1bGF0ZWQgc2VwYXJhdGVseSB1c2luZyB0aGUgZmFjdCB0aGF0IDIzLzEwIDwgbG9nKDEwKSA8IDI0LzEwLgorICovCit2b2lkCittcGRfcWxuMTAobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgcHJlYywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHZhcmNvbnRleHQsIG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUModG1wLCAwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHN0YXRpYzEwLCAwLDAsMiwxLDEsMTApOworICAgIG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXTsKKyAgICBtcGRfdWludF90IHJuZDsKKyAgICBtcGRfc3NpemVfdCBzaGlmdDsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChwcmVjID49IDEpOworCisgICAgc2hpZnQgPSBNUERfTUlOQUxMT0NfTUFYKk1QRF9SRElHSVRTLXByZWM7CisgICAgc2hpZnQgPSBzaGlmdCA8IDAgPyAwIDogc2hpZnQ7CisKKyAgICBybmQgPSBtcGRfcXNoaWZ0cihyZXN1bHQsICZfbXBkX2xuMTAsIHNoaWZ0LCBzdGF0dXMpOworICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzdWx0LT5leHAgPSAtKHJlc3VsdC0+ZGlnaXRzLTEpOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIGlmIChwcmVjIDwgTVBEX01JTkFMTE9DX01BWCpNUERfUkRJR0lUUykgeworICAgICAgICBtYXhjb250ZXh0LnByZWMgPSBwcmVjOworICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhyZXN1bHQsIHJuZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZ2YXJjb250ZXh0KTsKKyAgICB2YXJjb250ZXh0LnJvdW5kID0gTVBEX1JPVU5EX1RSVU5DOworCisgICAgaSA9IGxuX3NjaGVkdWxlX3ByZWMoa2xpc3QsIHByZWMrMiwgLXJlc3VsdC0+ZXhwKTsKKyAgICBmb3IgKDsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdmFyY29udGV4dC5wcmVjID0gMiprbGlzdFtpXSszOworICAgICAgICByZXN1bHQtPmZsYWdzIF49IE1QRF9ORUc7CisgICAgICAgIF9tcGRfcWV4cCgmdG1wLCByZXN1bHQsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICByZXN1bHQtPmZsYWdzIF49IE1QRF9ORUc7CisgICAgICAgIG1wZF9xbXVsKCZ0bXAsICZzdGF0aWMxMCwgJnRtcCwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xc3ViKCZ0bXAsICZ0bXAsICZvbmUsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcWFkZChyZXN1bHQsIHJlc3VsdCwgJnRtcCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICBtYXhjb250ZXh0LnByZWMgPSBwcmVjOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKK30KKworLyoKKyAqIEluaXRpYWwgYXBwcm94aW1hdGlvbnMgZm9yIHRoZSBsbigpIGl0ZXJhdGlvbi4gVGhlIHZhbHVlcyBoYXZlIHRoZQorICogZm9sbG93aW5nIHByb3BlcnRpZXMgKGVzdGFibGlzaGVkIHdpdGggYm90aCBkZWNpbWFsLnB5IGFuZCBtcGZyKToKKyAqCisgKiBJbmRleCAwIC0gNDAwLCBsb2dhcml0aG1zIG9mIHggaW4gWzEuMDAsIDUuMDBdOgorICogICBhYnMobG5hcHByb3hbaV0gKiAxMCoqLTMgLSBsb2coKGkrMTAwKS8xMDApKSA8IDEwKiotMgorICogICBhYnMobG5hcHByb3hbaV0gKiAxMCoqLTMgLSBsb2coKGkrMSsxMDApLzEwMCkpIDwgMTAqKi0yCisgKgorICogSW5kZXggNDAxIC0gODk5LCBsb2dhcml0aG1zIG9mIHggaW4gKDAuNTAwLCAwLjk5OV06CisgKiAgIGFicygtbG5hcHByb3hbaV0gKiAxMCoqLTMgLSBsb2coKGkrMTAwKS8xMDAwKSkgPCAxMCoqLTIKKyAqICAgYWJzKC1sbmFwcHJveFtpXSAqIDEwKiotMyAtIGxvZygoaSsxKzEwMCkvMTAwMCkpIDwgMTAqKi0yCisgKi8KK3N0YXRpYyBjb25zdCB1aW50MTZfdCBsbmFwcHJveFs5MDBdID0geworICAvKiBpbmRleCAwIC0gNDAwOiBsb2coKGkrMTAwKS8xMDApICogMTAwMCAqLworICAwLCAxMCwgMjAsIDMwLCAzOSwgNDksIDU4LCA2OCwgNzcsIDg2LCA5NSwgMTA0LCAxMTMsIDEyMiwgMTMxLCAxNDAsIDE0OCwgMTU3LAorICAxNjYsIDE3NCwgMTgyLCAxOTEsIDE5OSwgMjA3LCAyMTUsIDIyMywgMjMxLCAyMzksIDI0NywgMjU1LCAyNjIsIDI3MCwgMjc4LAorICAyODUsIDI5MywgMzAwLCAzMDgsIDMxNSwgMzIyLCAzMjksIDMzNiwgMzQ0LCAzNTEsIDM1OCwgMzY1LCAzNzIsIDM3OCwgMzg1LAorICAzOTIsIDM5OSwgNDA2LCA0MTIsIDQxOSwgNDI1LCA0MzIsIDQzOCwgNDQ1LCA0NTEsIDQ1NywgNDY0LCA0NzAsIDQ3NiwgNDgyLAorICA0ODksIDQ5NSwgNTAxLCA1MDcsIDUxMywgNTE5LCA1MjUsIDUzMSwgNTM2LCA1NDIsIDU0OCwgNTU0LCA1NjAsIDU2NSwgNTcxLAorICA1NzcsIDU4MiwgNTg4LCA1OTMsIDU5OSwgNjA0LCA2MTAsIDYxNSwgNjIxLCA2MjYsIDYzMSwgNjM3LCA2NDIsIDY0NywgNjUyLAorICA2NTgsIDY2MywgNjY4LCA2NzMsIDY3OCwgNjgzLCA2ODgsIDY5MywgNjk4LCA3MDMsIDcwOCwgNzEzLCA3MTgsIDcyMywgNzI4LAorICA3MzIsIDczNywgNzQyLCA3NDcsIDc1MSwgNzU2LCA3NjEsIDc2NiwgNzcwLCA3NzUsIDc3OSwgNzg0LCA3ODgsIDc5MywgNzk4LAorICA4MDIsIDgwNiwgODExLCA4MTUsIDgyMCwgODI0LCA4MjksIDgzMywgODM3LCA4NDIsIDg0NiwgODUwLCA4NTQsIDg1OSwgODYzLAorICA4NjcsIDg3MSwgODc2LCA4ODAsIDg4NCwgODg4LCA4OTIsIDg5NiwgOTAwLCA5MDQsIDkwOCwgOTEyLCA5MTYsIDkyMCwgOTI0LAorICA5MjgsIDkzMiwgOTM2LCA5NDAsIDk0NCwgOTQ4LCA5NTIsIDk1NiwgOTU5LCA5NjMsIDk2NywgOTcxLCA5NzUsIDk3OCwgOTgyLAorICA5ODYsIDk5MCwgOTkzLCA5OTcsIDEwMDEsIDEwMDQsIDEwMDgsIDEwMTIsIDEwMTUsIDEwMTksIDEwMjIsIDEwMjYsIDEwMzAsCisgIDEwMzMsIDEwMzcsIDEwNDAsIDEwNDQsIDEwNDcsIDEwNTEsIDEwNTQsIDEwNTgsIDEwNjEsIDEwNjUsIDEwNjgsIDEwNzIsIDEwNzUsCisgIDEwNzgsIDEwODIsIDEwODUsIDEwODksIDEwOTIsIDEwOTUsIDEwOTksIDExMDIsIDExMDUsIDExMDksIDExMTIsIDExMTUsIDExMTgsCisgIDExMjIsIDExMjUsIDExMjgsIDExMzEsIDExMzUsIDExMzgsIDExNDEsIDExNDQsIDExNDcsIDExNTEsIDExNTQsIDExNTcsIDExNjAsCisgIDExNjMsIDExNjYsIDExNjksIDExNzIsIDExNzYsIDExNzksIDExODIsIDExODUsIDExODgsIDExOTEsIDExOTQsIDExOTcsIDEyMDAsCisgIDEyMDMsIDEyMDYsIDEyMDksIDEyMTIsIDEyMTUsIDEyMTgsIDEyMjEsIDEyMjQsIDEyMjcsIDEyMzAsIDEyMzMsIDEyMzUsIDEyMzgsCisgIDEyNDEsIDEyNDQsIDEyNDcsIDEyNTAsIDEyNTMsIDEyNTYsIDEyNTgsIDEyNjEsIDEyNjQsIDEyNjcsIDEyNzAsIDEyNzMsIDEyNzUsCisgIDEyNzgsIDEyODEsIDEyODQsIDEyODYsIDEyODksIDEyOTIsIDEyOTUsIDEyOTcsIDEzMDAsIDEzMDMsIDEzMDYsIDEzMDgsIDEzMTEsCisgIDEzMTQsIDEzMTYsIDEzMTksIDEzMjIsIDEzMjQsIDEzMjcsIDEzMzAsIDEzMzIsIDEzMzUsIDEzMzgsIDEzNDAsIDEzNDMsIDEzNDUsCisgIDEzNDgsIDEzNTEsIDEzNTMsIDEzNTYsIDEzNTgsIDEzNjEsIDEzNjQsIDEzNjYsIDEzNjksIDEzNzEsIDEzNzQsIDEzNzYsIDEzNzksCisgIDEzODEsIDEzODQsIDEzODYsIDEzODksIDEzOTEsIDEzOTQsIDEzOTYsIDEzOTksIDE0MDEsIDE0MDQsIDE0MDYsIDE0MDksIDE0MTEsCisgIDE0MTMsIDE0MTYsIDE0MTgsIDE0MjEsIDE0MjMsIDE0MjYsIDE0MjgsIDE0MzAsIDE0MzMsIDE0MzUsIDE0MzcsIDE0NDAsIDE0NDIsCisgIDE0NDUsIDE0NDcsIDE0NDksIDE0NTIsIDE0NTQsIDE0NTYsIDE0NTksIDE0NjEsIDE0NjMsIDE0NjYsIDE0NjgsIDE0NzAsIDE0NzIsCisgIDE0NzUsIDE0NzcsIDE0NzksIDE0ODIsIDE0ODQsIDE0ODYsIDE0ODgsIDE0OTEsIDE0OTMsIDE0OTUsIDE0OTcsIDE1MDAsIDE1MDIsCisgIDE1MDQsIDE1MDYsIDE1MDksIDE1MTEsIDE1MTMsIDE1MTUsIDE1MTcsIDE1MjAsIDE1MjIsIDE1MjQsIDE1MjYsIDE1MjgsIDE1MzAsCisgIDE1MzMsIDE1MzUsIDE1MzcsIDE1MzksIDE1NDEsIDE1NDMsIDE1NDUsIDE1NDgsIDE1NTAsIDE1NTIsIDE1NTQsIDE1NTYsIDE1NTgsCisgIDE1NjAsIDE1NjIsIDE1NjQsIDE1NjcsIDE1NjksIDE1NzEsIDE1NzMsIDE1NzUsIDE1NzcsIDE1NzksIDE1ODEsIDE1ODMsIDE1ODUsCisgIDE1ODcsIDE1ODksIDE1OTEsIDE1OTMsIDE1OTUsIDE1OTcsIDE1OTksIDE2MDEsIDE2MDMsIDE2MDUsIDE2MDcsIDE2MDksCisgIC8qIGluZGV4IDQwMSAtIDg5OTogLWxvZygoaSsxMDApLzEwMDApICogMTAwMCAqLworICA2OTEsIDY4OSwgNjg3LCA2ODUsIDY4MywgNjgxLCA2NzksIDY3NywgNjc1LCA2NzMsIDY3MSwgNjY5LCA2NjgsIDY2NiwgNjY0LAorICA2NjIsIDY2MCwgNjU4LCA2NTYsIDY1NCwgNjUyLCA2NTAsIDY0OCwgNjQ2LCA2NDQsIDY0MiwgNjQxLCA2MzksIDYzNywgNjM1LAorICA2MzMsIDYzMSwgNjI5LCA2MjcsIDYyNiwgNjI0LCA2MjIsIDYyMCwgNjE4LCA2MTYsIDYxNCwgNjEyLCA2MTEsIDYwOSwgNjA3LAorICA2MDUsIDYwMywgNjAyLCA2MDAsIDU5OCwgNTk2LCA1OTQsIDU5MiwgNTkxLCA1ODksIDU4NywgNTg1LCA1ODMsIDU4MiwgNTgwLAorICA1NzgsIDU3NiwgNTc0LCA1NzMsIDU3MSwgNTY5LCA1NjcsIDU2NiwgNTY0LCA1NjIsIDU2MCwgNTU5LCA1NTcsIDU1NSwgNTUzLAorICA1NTIsIDU1MCwgNTQ4LCA1NDYsIDU0NSwgNTQzLCA1NDEsIDU0MCwgNTM4LCA1MzYsIDUzNCwgNTMzLCA1MzEsIDUyOSwgNTI4LAorICA1MjYsIDUyNCwgNTIzLCA1MjEsIDUxOSwgNTE4LCA1MTYsIDUxNCwgNTEyLCA1MTEsIDUwOSwgNTA4LCA1MDYsIDUwNCwgNTAyLAorICA1MDEsIDQ5OSwgNDk4LCA0OTYsIDQ5NCwgNDkzLCA0OTEsIDQ4OSwgNDg4LCA0ODYsIDQ4NCwgNDgzLCA0ODEsIDQ4MCwgNDc4LAorICA0NzYsIDQ3NSwgNDczLCA0NzIsIDQ3MCwgNDY4LCA0NjcsIDQ2NSwgNDY0LCA0NjIsIDQ2MCwgNDU5LCA0NTcsIDQ1NiwgNDU0LAorICA0NTMsIDQ1MSwgNDQ5LCA0NDgsIDQ0NiwgNDQ1LCA0NDMsIDQ0MiwgNDQwLCA0MzgsIDQzNywgNDM1LCA0MzQsIDQzMiwgNDMxLAorICA0MjksIDQyOCwgNDI2LCA0MjUsIDQyMywgNDIyLCA0MjAsIDQxOSwgNDE3LCA0MTYsIDQxNCwgNDEyLCA0MTEsIDQxMCwgNDA4LAorICA0MDYsIDQwNSwgNDA0LCA0MDIsIDQwMCwgMzk5LCAzOTgsIDM5NiwgMzk0LCAzOTMsIDM5MiwgMzkwLCAzODksIDM4NywgMzg2LAorICAzODQsIDM4MywgMzgxLCAzODAsIDM3OCwgMzc3LCAzNzUsIDM3NCwgMzcyLCAzNzEsIDM3MCwgMzY4LCAzNjcsIDM2NSwgMzY0LAorICAzNjIsIDM2MSwgMzYwLCAzNTgsIDM1NywgMzU1LCAzNTQsIDM1MiwgMzUxLCAzNTAsIDM0OCwgMzQ3LCAzNDUsIDM0NCwgMzQyLAorICAzNDEsIDM0MCwgMzM4LCAzMzcsIDMzNiwgMzM0LCAzMzMsIDMzMSwgMzMwLCAzMjgsIDMyNywgMzI2LCAzMjQsIDMyMywgMzIyLAorICAzMjAsIDMxOSwgMzE4LCAzMTYsIDMxNSwgMzEzLCAzMTIsIDMxMSwgMzA5LCAzMDgsIDMwNiwgMzA1LCAzMDQsIDMwMiwgMzAxLAorICAzMDAsIDI5OCwgMjk3LCAyOTYsIDI5NCwgMjkzLCAyOTIsIDI5MCwgMjg5LCAyODgsIDI4NiwgMjg1LCAyODQsIDI4MiwgMjgxLAorICAyODAsIDI3OCwgMjc3LCAyNzYsIDI3NCwgMjczLCAyNzIsIDI3MCwgMjY5LCAyNjgsIDI2NywgMjY1LCAyNjQsIDI2MywgMjYxLAorICAyNjAsIDI1OSwgMjU4LCAyNTYsIDI1NSwgMjU0LCAyNTIsIDI1MSwgMjUwLCAyNDgsIDI0NywgMjQ2LCAyNDUsIDI0MywgMjQyLAorICAyNDEsIDI0MCwgMjM4LCAyMzcsIDIzNiwgMjM0LCAyMzMsIDIzMiwgMjMxLCAyMjksIDIyOCwgMjI3LCAyMjYsIDIyNCwgMjIzLAorICAyMjIsIDIyMSwgMjE5LCAyMTgsIDIxNywgMjE2LCAyMTQsIDIxMywgMjEyLCAyMTEsIDIxMCwgMjA4LCAyMDcsIDIwNiwgMjA1LAorICAyMDMsIDIwMiwgMjAxLCAyMDAsIDE5OCwgMTk3LCAxOTYsIDE5NSwgMTk0LCAxOTIsIDE5MSwgMTkwLCAxODksIDE4OCwgMTg2LAorICAxODUsIDE4NCwgMTgzLCAxODIsIDE4MCwgMTc5LCAxNzgsIDE3NywgMTc2LCAxNzQsIDE3MywgMTcyLCAxNzEsIDE3MCwgMTY4LAorICAxNjcsIDE2NiwgMTY1LCAxNjQsIDE2MiwgMTYxLCAxNjAsIDE1OSwgMTU4LCAxNTcsIDE1NiwgMTU0LCAxNTMsIDE1MiwgMTUxLAorICAxNTAsIDE0OCwgMTQ3LCAxNDYsIDE0NSwgMTQ0LCAxNDMsIDE0MiwgMTQwLCAxMzksIDEzOCwgMTM3LCAxMzYsIDEzNSwgMTM0LAorICAxMzIsIDEzMSwgMTMwLCAxMjksIDEyOCwgMTI3LCAxMjYsIDEyNCwgMTIzLCAxMjIsIDEyMSwgMTIwLCAxMTksIDExOCwgMTE2LAorICAxMTUsIDExNCwgMTEzLCAxMTIsIDExMSwgMTEwLCAxMDksIDEwOCwgMTA2LCAxMDUsIDEwNCwgMTAzLCAxMDIsIDEwMSwgMTAwLAorICA5OSwgOTgsIDk3LCA5NSwgOTQsIDkzLCA5MiwgOTEsIDkwLCA4OSwgODgsIDg3LCA4NiwgODQsIDgzLCA4MiwgODEsIDgwLCA3OSwKKyAgNzgsIDc3LCA3NiwgNzUsIDc0LCA3MywgNzIsIDcwLCA2OSwgNjgsIDY3LCA2NiwgNjUsIDY0LCA2MywgNjIsIDYxLCA2MCwgNTksCisgIDU4LCA1NywgNTYsIDU0LCA1MywgNTIsIDUxLCA1MCwgNDksIDQ4LCA0NywgNDYsIDQ1LCA0NCwgNDMsIDQyLCA0MSwgNDAsIDM5LAorICAzOCwgMzcsIDM2LCAzNSwgMzQsIDMzLCAzMSwgMzAsIDI5LCAyOCwgMjcsIDI2LCAyNSwgMjQsIDIzLCAyMiwgMjEsIDIwLCAxOSwKKyAgMTgsIDE3LCAxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMQorfTsKKworLyoKKyAqIEludGVybmFsIGxuKCkgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBjaGVjayBmb3Igc3BlY2lhbHMsIHplcm8gb3Igb25lLgorICogUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2coYSkpIDwgMC4xICogMTAqKi1wcmVjICogYWJzKGxvZyhhKSkKKyAqLworc3RhdGljIHZvaWQKK19tcGRfcWxuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgdmFyY29udGV4dCwgbWF4Y29udGV4dDsKKyAgICBtcGRfdCAqeiA9IChtcGRfdCAqKSByZXN1bHQ7CisgICAgTVBEX05FV19TVEFUSUModiwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh2dG1wLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl07CisgICAgbXBkX3NzaXplX3QgbWF4cHJlYywgc2hpZnQsIHQ7CisgICAgbXBkX3NzaXplX3QgYV9kaWdpdHMsIGFfZXhwOworICAgIG1wZF91aW50X3QgZHVtbXksIHg7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkgJiYgIW1wZF9pc3plcm9jb2VmZihhKSk7CisKKyAgICAvKgorICAgICAqIFdlIGFyZSBjYWxjdWxhdGluZyBsbihhKSA9IGxuKHYgKiAxMF50KSA9IGxuKHYpICsgdCpsbigxMCksCisgICAgICogd2hlcmUgMC41IDwgdiA8PSA1LgorICAgICAqLworICAgIGlmICghbXBkX3Fjb3B5KCZ2LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIC8qIEluaXRpYWwgYXBwcm94aW1hdGlvbjogd2UgaGF2ZSBhdCBsZWFzdCBvbmUgbm9uLXplcm8gZGlnaXQgKi8KKyAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ4LCAmdiwgMyk7CisgICAgaWYgKHggPCAxMCkgeCAqPSAxMDsKKyAgICBpZiAoeCA8IDEwMCkgeCAqPSAxMDsKKyAgICB4IC09IDEwMDsKKworICAgIC8qIGEgbWF5IGVxdWFsIHogKi8KKyAgICBhX2RpZ2l0cyA9IGEtPmRpZ2l0czsKKyAgICBhX2V4cCA9IGEtPmV4cDsKKworICAgIG1wZF9taW5hbGxvYyh6KTsKKyAgICBtcGRfY2xlYXJfZmxhZ3Moeik7CisgICAgei0+ZGF0YVswXSA9IGxuYXBwcm94W3hdOworICAgIHotPmxlbiA9IDE7CisgICAgei0+ZXhwID0gLTM7CisgICAgbXBkX3NldGRpZ2l0cyh6KTsKKworICAgIGlmICh4IDw9IDQwMCkgeworICAgICAgICAvKiBSZWR1Y2UgdGhlIGlucHV0IG9wZXJhbmQgdG8gMS4wMCA8PSB2IDw9IDUuMDAuIExldCB5ID0geCArIDEwMCwKKyAgICAgICAgICogc28gMTAwIDw9IHkgPD0gNTAwLiBTaW5jZSB5IGNvbnRhaW5zIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cworICAgICAgICAgKiBvZiB2LCB5LzEwMCA8PSB2IDwgKHkrMSkvMTAwIGFuZCBhYnMoeiAtIGxvZyh2KSkgPCAxMCoqLTIuICovCisgICAgICAgIHYuZXhwID0gLShhX2RpZ2l0cyAtIDEpOworICAgICAgICB0ID0gYV9leHAgKyBhX2RpZ2l0cyAtIDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZWR1Y2UgdGhlIGlucHV0IG9wZXJhbmQgdG8gMC41MDAgPCB2IDw9IDAuOTk5LiBMZXQgeSA9IHggKyAxMDAsCisgICAgICAgICAqIHNvIDUwMCA8IHkgPD0gOTk5LiBTaW5jZSB5IGNvbnRhaW5zIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cworICAgICAgICAgKiBvZiB2LCB5LzEwMDAgPD0gdiA8ICh5KzEpLzEwMDAgYW5kIGFicyh6IC0gbG9nKHYpKSA8IDEwKiotMi4gKi8KKyAgICAgICAgdi5leHAgPSAtYV9kaWdpdHM7CisgICAgICAgIHQgPSBhX2V4cCArIGFfZGlnaXRzOworICAgICAgICBtcGRfc2V0X25lZ2F0aXZlKHopOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfbWF4Y29udGV4dCgmdmFyY29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKworICAgIG1heHByZWMgPSBjdHgtPnByZWMgKyAyOworICAgIGlmICh0ID09IDAgJiYgKHggPD0gMTUgfHwgeCA+PSA4MDApKSB7CisgICAgICAgIC8qIDAuOTAwIDw9IHYgPD0gMS4xNTogRXN0aW1hdGUgdGhlIG1hZ25pdHVkZSBvZiB0aGUgbG9nYXJpdGhtLgorICAgICAgICAgKiBJZiBsbih2KSB3aWxsIHVuZGVyZmxvdywgc2tpcCB0aGUgbG9vcC4gT3RoZXJ3aXNlLCBhZGp1c3QgdGhlCisgICAgICAgICAqIHByZWNpc2lvbiB1cHdhcmRzIGluIG9yZGVyIHRvIG9idGFpbiBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mCisgICAgICAgICAqIHNpZ25pZmljYW50IGRpZ2l0cy4KKyAgICAgICAgICoKKyAgICAgICAgICogICBDYXNlIHYgPiAxOgorICAgICAgICAgKiAgICAgIGFicygodi0xKS8xMCkgPCBhYnMoKHYtMSkvdikgPCBhYnMobG4odikpIDwgYWJzKHYtMSkKKyAgICAgICAgICogICBDYXNlIHYgPCAxOgorICAgICAgICAgKiAgICAgIGFicyh2LTEpIDwgYWJzKGxuKHYpKSA8IGFicygodi0xKS92KSA8IGFicygodi0xKSoxMCkKKyAgICAgICAgICovCisgICAgICAgIGludCBjbXAgPSBfbXBkX2NtcCgmdiwgJm9uZSk7CisKKyAgICAgICAgLyogVXBwZXIgYm91bmQgKGFzc3VtZSB2ID4gMSk6IGFicyh2LTEpLCB1bnJvdW5kZWQgKi8KKyAgICAgICAgX21wZF9xc3ViKCZ0bXAsICZ2LCAmb25lLCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1heGNvbnRleHQuc3RhdHVzICYgTVBEX0Vycm9ycykgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgIC8qIHYgPCAxOiBhYnMoKHYtMSkqMTApICovCisgICAgICAgICAgICB0bXAuZXhwICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9hZGpleHAoJnRtcCkgPCBtcGRfZXRpbnkoY3R4KSkgeworICAgICAgICAgICAgLyogVGhlIHVwcGVyIGJvdW5kIGlzIGxlc3MgdGhhbiBldGlueTogVW5kZXJmbG93IHRvIHplcm8gKi8KKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoY21wPDApLCAxLCBtcGRfZXRpbnkoY3R4KS0xKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIC8qIExvd2VyIGJvdW5kOiBhYnMoKHYtMSkvMTApIG9yIGFicyh2LTEpICovCisgICAgICAgIHRtcC5leHAgLT0gMTsKKyAgICAgICAgaWYgKG1wZF9hZGpleHAoJnRtcCkgPCAwKSB7CisgICAgICAgICAgICAvKiBBYnNvbHV0ZSBlcnJvciBvZiB0aGUgbG9vcDogYWJzKHogLSBsb2codikpIDwgMTAqKi1wLiBJZgorICAgICAgICAgICAgICogcCA9IGN0eC0+cHJlYysyLWFkamV4cChsb3dlciksIHRoZW4gdGhlIHJlbGF0aXZlIGVycm9yIG9mCisgICAgICAgICAgICAgKiB0aGUgcmVzdWx0IGlzICh1c2luZyAxMCoqYWRqZXhwKHgpIDw9IGFicyh4KSk6CisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogICBhYnMoeiAtIGxvZyh2KSkgLyBhYnMobG9nKHYpKSA8IDEwKiotcCAvIGFicyhsb2codikpCisgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9IDEwKiooLWN0eC0+cHJlYy0yKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBtYXhwcmVjID0gbWF4cHJlYyAtIG1wZF9hZGpleHAoJnRtcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpID0gbG5fc2NoZWR1bGVfcHJlYyhrbGlzdCwgbWF4cHJlYywgMik7CisgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHZhcmNvbnRleHQucHJlYyA9IDIqa2xpc3RbaV0rMzsKKyAgICAgICAgei0+ZmxhZ3MgXj0gTVBEX05FRzsKKyAgICAgICAgX21wZF9xZXhwKCZ0bXAsIHosICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB6LT5mbGFncyBePSBNUERfTkVHOworCisgICAgICAgIGlmICh2LmRpZ2l0cyA+IHZhcmNvbnRleHQucHJlYykgeworICAgICAgICAgICAgc2hpZnQgPSB2LmRpZ2l0cyAtIHZhcmNvbnRleHQucHJlYzsKKyAgICAgICAgICAgIG1wZF9xc2hpZnRyKCZ2dG1wLCAmdiwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgICAgICB2dG1wLmV4cCArPSBzaGlmdDsKKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0bXAsICZ2dG1wLCAmdG1wLCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0bXAsICZ2LCAmdG1wLCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgfQorCisgICAgICAgIG1wZF9xc3ViKCZ0bXAsICZ0bXAsICZvbmUsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcWFkZCh6LCB6LCAmdG1wLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwoeikpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDYXNlIHQgPT0gMDoKKyAgICAgKiAgICB0ICogbG9nKDEwKSA9PSAwLCB0aGUgcmVzdWx0IGRvZXMgbm90IGNoYW5nZSBhbmQgdGhlIGFuYWx5c2lzCisgICAgICogICAgYWJvdmUgYXBwbGllcy4gSWYgdiA8IDAuOTAwIG9yIHYgPiAxLjE1LCB0aGUgcmVsYXRpdmUgZXJyb3IgaXMKKyAgICAgKiAgICBsZXNzIHRoYW4gMTAqKigtY3R4LnByZWMtMSkuCisgICAgICogQ2FzZSB0ICE9IDA6CisgICAgICogICAgICB6IDo9IGFwcHJveChsb2codikpCisgICAgICogICAgICB5IDo9IGFwcHJveChsb2coMTApKQorICAgICAqICAgICAgcCA6PSBtYXhwcmVjID0gY3R4LT5wcmVjICsgMgorICAgICAqICAgQWJzb2x1dGUgZXJyb3JzOgorICAgICAqICAgICAgMSkgYWJzKHogLSBsb2codikpIDwgMTAqKi1wCisgICAgICogICAgICAyKSBhYnMoeSAtIGxvZygxMCkpIDwgMTAqKi1wCisgICAgICogICBUaGUgbXVsdGlwbGljYXRpb24gaXMgZXhhY3QsIHNvOgorICAgICAqICAgICAgMykgYWJzKHQqeSAtIHQqbG9nKDEwKSkgPCB0KjEwKiotcAorICAgICAqICAgVGhlIHN1bSBpcyBleGFjdCwgc286CisgICAgICogICAgICA0KSBhYnMoKHogKyB0KnkpIC0gKGxvZyh2KSArIHQqbG9nKDEwKSkpIDwgKGFicyh0KSArIDEpICogMTAqKi1wCisgICAgICogICBCb3VuZHMgZm9yIGxvZyh2KSBhbmQgbG9nKDEwKToKKyAgICAgKiAgICAgIDUpIC03LzEwIDwgbG9nKHYpIDwgMTcvMTAKKyAgICAgKiAgICAgIDYpIDIzLzEwIDwgbG9nKDEwKSA8IDI0LzEwCisgICAgICogICBVc2luZyA0KSwgNSksIDYpIGFuZCB0ICE9IDAsIHRoZSByZWxhdGl2ZSBlcnJvciBpczoKKyAgICAgKgorICAgICAqICAgICAgNykgcmVsZXJyIDwgKChhYnModCkgKyAxKSoxMCoqLXApIC8gYWJzKGxvZyh2KSArIHQqbG9nKDEwKSkKKyAgICAgKiAgICAgICAgICAgICAgICA8IDAuNSAqIDEwKiooLXAgKyAxKSA9IDAuNSAqIDEwKiooLWN0eC0+cHJlYy0xKQorICAgICAqLworICAgIG1wZF9xbG4xMCgmdiwgbWF4cHJlYysxLCBzdGF0dXMpOworICAgIG1wZF9xbXVsX3NzaXplKCZ0bXAsICZ2LCB0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcWFkZChyZXN1bHQsICZ0bXAsIHosICZtYXhjb250ZXh0LCBzdGF0dXMpOworCisKK2ZpbmlzaDoKKyAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgbXBkX2RlbCgmdik7CisgICAgbXBkX2RlbCgmdnRtcCk7CisgICAgbXBkX2RlbCgmdG1wKTsKK30KKworLyogbG4oYSkgKi8KK3ZvaWQKK21wZF9xbG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwLCB0OworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX05FRywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoX21wZF9jbXAoYSwgJm9uZSkgPT0gMCkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLyoKKyAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHdpbGwgb3ZlcmZsb3cgKDAgPCB4LCB4ICE9IDEpOgorICAgICAqICAgMSkgbG9nMTAoeCkgPCAwIGlmZiBhZGpleHAoeCkgPCAwCisgICAgICogICAyKSAwIDwgeCAvXCB4IDw9IHkgPT0+IGFkamV4cCh4KSA8PSBhZGpleHAoeSkKKyAgICAgKiAgIDMpIDAgPCB4IC9cIHggIT0gMSA9PT4gMiAqIGFicyhsb2cxMCh4KSkgPCBhYnMobG9nKHgpKQorICAgICAqICAgNCkgYWRqZXhwKHgpIDw9IGxvZzEwKHgpIDwgYWRqZXhwKHgpICsgMQorICAgICAqCisgICAgICogQ2FzZSBhZGpleHAoeCkgPj0gMDoKKyAgICAgKiAgIDUpIDIgKiBhZGpleHAoeCkgPCBhYnMobG9nKHgpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPiAwOgorICAgICAqICAgICA2KSBhZGpleHAoMiAqIGFkamV4cCh4KSkgPD0gYWRqZXhwKGFicyhsb2coeCkpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPT0gMDoKKyAgICAgKiAgICAgbXBkX2V4cF9kaWdpdHModCktMSA9PSAwIDw9IGVtYXggKHRoZSBzaG9ydGN1dCBpcyBub3QgdHJpZ2dlcmVkKQorICAgICAqCisgICAgICogQ2FzZSBhZGpleHAoeCkgPCAwOgorICAgICAqICAgNykgMiAqICgtYWRqZXhwKHgpIC0gMSkgPCBhYnMobG9nKHgpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPCAtMToKKyAgICAgKiAgICAgOCkgYWRqZXhwKDIgKiAoLWFkamV4cCh4KSAtIDEpKSA8PSBhZGpleHAoYWJzKGxvZyh4KSkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA9PSAtMToKKyAgICAgKiAgICAgbXBkX2V4cF9kaWdpdHModCktMSA9PSAwIDw9IGVtYXggKHRoZSBzaG9ydGN1dCBpcyBub3QgdHJpZ2dlcmVkKQorICAgICAqLworICAgIGFkamV4cCA9IG1wZF9hZGpleHAoYSk7CisgICAgdCA9IChhZGpleHAgPCAwKSA/IC1hZGpleHAtMSA6IGFkamV4cDsKKyAgICB0ICo9IDI7CisgICAgaWYgKG1wZF9leHBfZGlnaXRzKHQpLTEgPiBjdHgtPmVtYXgpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfT3ZlcmZsb3d8TVBEX0luZXhhY3R8TVBEX1JvdW5kZWQ7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgKGFkamV4cDwwKSwgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrY3R4ID0gKmN0eDsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKworICAgIGlmIChjdHgtPmFsbGNyKSB7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQxLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDIsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh1bHAsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyhhYSwgMCwwLDAsMCk7CisgICAgICAgIG1wZF9zc2l6ZV90IHByZWM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmYWEsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEgPSAmYWE7CisgICAgICAgIH0KKworICAgICAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICAgICAgcHJlYyA9IGN0eC0+cHJlYyArIDM7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBwcmVjOworICAgICAgICAgICAgX21wZF9xbG4ocmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIF9zc2V0dHJpcGxlKCZ1bHAsIE1QRF9QT1MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmV4cCArIHJlc3VsdC0+ZGlnaXRzLXdvcmtjdHgucHJlYyk7CisKKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYzsKKyAgICAgICAgICAgIG1wZF9xYWRkKCZ0MSwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xc3ViKCZ0MiwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwgbXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICBtcGRfcWNtcCgmdDEsICZ0Miwgc3RhdHVzKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgd29ya2N0eC5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgICAgICAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZWMgKz0gTVBEX1JESUdJVFM7CisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbCgmdDEpOworICAgICAgICBtcGRfZGVsKCZ0Mik7CisgICAgICAgIG1wZF9kZWwoJnVscCk7CisgICAgICAgIG1wZF9kZWwoJmFhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfcWxuKHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIEludGVybmFsIGxvZzEwKCkgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBjaGVjayBmb3Igc3BlY2lhbHMsIHplcm8gb3Igb25lLgorICogQ2FzZSBTS0lQX0ZJTkFMSVpFOgorICogICBSZWxhdGl2ZSBlcnJvcjogYWJzKHJlc3VsdCAtIGxvZzEwKGEpKSA8IDAuMSAqIDEwKiotcHJlYyAqIGFicyhsb2cxMChhKSkKKyAqIENhc2UgRE9fRklOQUxJWkU6CisgKiAgIFVscCBlcnJvcjogYWJzKHJlc3VsdCAtIGxvZzEwKGEpKSA8IHVscChsb2cxMChhKSkKKyAqLworZW51bSB7U0tJUF9GSU5BTElaRSwgRE9fRklOQUxJWkV9Oworc3RhdGljIHZvaWQKK19tcGRfcWxvZzEwKGludCBhY3Rpb24sIG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyhsbjEwLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYyArIDM7CisgICAgLyogcmVsYXRpdmUgZXJyb3I6IDAuMSAqIDEwKiooLXAtMykuIFRoZSBzcGVjaWZpYyB1bmRlcmZsb3cgc2hvcnRjdXQKKyAgICAgKiBpbiBfbXBkX3FsbigpIGRvZXMgbm90IGNoYW5nZSB0aGUgZmluYWwgcmVzdWx0LiAqLworICAgIF9tcGRfcWxuKHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgLyogcmVsYXRpdmUgZXJyb3I6IDUgKiAxMCoqKC1wLTMpICovCisgICAgbXBkX3FsbjEwKCZsbjEwLCB3b3JrY3R4LnByZWMsIHN0YXR1cyk7CisKKyAgICBpZiAoYWN0aW9uID09IERPX0ZJTkFMSVpFKSB7CisgICAgICAgIHdvcmtjdHggPSAqY3R4OworICAgICAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICB9CisgICAgLyogU0tJUF9GSU5BTElaRTogcmVsYXRpdmUgZXJyb3I6IDUgKiAxMCoqKC1wLTMpICovCisgICAgX21wZF9xZGl2KE5PX0lERUFMX0VYUCwgcmVzdWx0LCByZXN1bHQsICZsbjEwLCAmd29ya2N0eCwgc3RhdHVzKTsKKworICAgIG1wZF9kZWwoJmxuMTApOworfQorCisvKiBsb2cxMChhKSAqLwordm9pZAorbXBkX3Fsb2cxMChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBtcGRfc3NpemVfdCBhZGpleHAsIHQ7CisKKyAgICB3b3JrY3R4ID0gKmN0eDsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9ORUcsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9jb2VmZl9pc3BvdzEwKGEpKSB7CisgICAgICAgIHVpbnQ4X3Qgc2lnbiA9IDA7CisgICAgICAgIGFkamV4cCA9IG1wZF9hZGpleHAoYSk7CisgICAgICAgIGlmIChhZGpleHAgPCAwKSB7CisgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgIGFkamV4cCA9IC1hZGpleHA7CisgICAgICAgIH0KKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIGFkamV4cCwgMCk7CisgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvKgorICAgICAqIENoZWNrIGlmIHRoZSByZXN1bHQgd2lsbCBvdmVyZmxvdyAoMCA8IHgsIHggIT0gMSk6CisgICAgICogICAxKSBsb2cxMCh4KSA8IDAgaWZmIGFkamV4cCh4KSA8IDAKKyAgICAgKiAgIDIpIDAgPCB4IC9cIHggPD0geSA9PT4gYWRqZXhwKHgpIDw9IGFkamV4cCh5KQorICAgICAqICAgMykgYWRqZXhwKHgpIDw9IGxvZzEwKHgpIDwgYWRqZXhwKHgpICsgMQorICAgICAqCisgICAgICogQ2FzZSBhZGpleHAoeCkgPj0gMDoKKyAgICAgKiAgIDQpIGFkamV4cCh4KSA8PSBhYnMobG9nMTAoeCkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA+IDA6CisgICAgICogICAgIDUpIGFkamV4cChhZGpleHAoeCkpIDw9IGFkamV4cChhYnMobG9nMTAoeCkpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPT0gMDoKKyAgICAgKiAgICAgbXBkX2V4cF9kaWdpdHModCktMSA9PSAwIDw9IGVtYXggKHRoZSBzaG9ydGN1dCBpcyBub3QgdHJpZ2dlcmVkKQorICAgICAqCisgICAgICogQ2FzZSBhZGpleHAoeCkgPCAwOgorICAgICAqICAgNikgLWFkamV4cCh4KSAtIDEgPCBhYnMobG9nMTAoeCkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA8IC0xOgorICAgICAqICAgICA3KSBhZGpleHAoLWFkamV4cCh4KSAtIDEpIDw9IGFkamV4cChhYnMobG9nKHgpKSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID09IC0xOgorICAgICAqICAgICBtcGRfZXhwX2RpZ2l0cyh0KS0xID09IDAgPD0gZW1heCAodGhlIHNob3J0Y3V0IGlzIG5vdCB0cmlnZ2VyZWQpCisgICAgICovCisgICAgYWRqZXhwID0gbXBkX2FkamV4cChhKTsKKyAgICB0ID0gKGFkamV4cCA8IDApID8gLWFkamV4cC0xIDogYWRqZXhwOworICAgIGlmIChtcGRfZXhwX2RpZ2l0cyh0KS0xID4gY3R4LT5lbWF4KSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX092ZXJmbG93fE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkOworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIChhZGpleHA8MCksIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGN0eC0+YWxsY3IpIHsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDEsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MiwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHVscCwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKGFhLCAwLDAsMCwwKTsKKyAgICAgICAgbXBkX3NzaXplX3QgcHJlYzsKKworICAgICAgICBpZiAocmVzdWx0ID09IGEpIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Fjb3B5KCZhYSwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYSA9ICZhYTsKKyAgICAgICAgfQorCisgICAgICAgIHdvcmtjdHguY2xhbXAgPSAwOworICAgICAgICBwcmVjID0gY3R4LT5wcmVjICsgMzsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IHByZWM7CisgICAgICAgICAgICBfbXBkX3Fsb2cxMChTS0lQX0ZJTkFMSVpFLCByZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgX3NzZXR0cmlwbGUoJnVscCwgTVBEX1BPUywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+ZXhwICsgcmVzdWx0LT5kaWdpdHMtd29ya2N0eC5wcmVjKTsKKworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gY3R4LT5wcmVjOworICAgICAgICAgICAgbXBkX3FhZGQoJnQxLCByZXN1bHQsICZ1bHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgbXBkX3FzdWIoJnQyLCByZXN1bHQsICZ1bHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fCBtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSB8fAorICAgICAgICAgICAgICAgIG1wZF9xY21wKCZ0MSwgJnQyLCBzdGF0dXMpID09IDApIHsKKyAgICAgICAgICAgICAgICB3b3JrY3R4LmNsYW1wID0gY3R4LT5jbGFtcDsKKyAgICAgICAgICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJlYyArPSBNUERfUkRJR0lUUzsKKyAgICAgICAgfQorICAgICAgICBtcGRfZGVsKCZ0MSk7CisgICAgICAgIG1wZF9kZWwoJnQyKTsKKyAgICAgICAgbXBkX2RlbCgmdWxwKTsKKyAgICAgICAgbXBkX2RlbCgmYWEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xbG9nMTAoRE9fRklOQUxJWkUsIHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBNYXhpbXVtIG9mIHRoZSB0d28gb3BlcmFuZHMuIEF0dGVudGlvbjogSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZQorICogb3RoZXIgaXMgbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC4gVGhpcyBtYXkgbm90IGJlIHdoYXQgb25lCisgKiBleHBlY3RzLgorICovCit2b2lkCittcGRfcW1heChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzcW5hbihhKSAmJiAhbXBkX2lzbmFuKGIpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYikgJiYgIW1wZF9pc25hbihhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wKGEsIGIpOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBjID0gX21wZF9jbXBfbnVtZXF1YWwoYSwgYik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIE1heGltdW0gbWFnbml0dWRlOiBTYW1lIGFzIG1wZF9tYXgoKSwgYnV0IGNvbXBhcmVzIHRoZSBvcGVyYW5kcyB3aXRoIHRoZWlyCisgKiBzaWduIGlnbm9yZWQuCisgKi8KK3ZvaWQKK21wZF9xbWF4X21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3FuYW4oYSkgJiYgIW1wZF9pc25hbihiKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpICYmICFtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcF9hYnMoYSwgYik7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9udW1lcXVhbChhLCBiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogTWluaW11bSBvZiB0aGUgdHdvIG9wZXJhbmRzLiBBdHRlbnRpb246IElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUKKyAqIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IG9uZQorICogZXhwZWN0cy4KKyAqLwordm9pZAorbXBkX3FtaW4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3FuYW4oYSkgJiYgIW1wZF9pc25hbihiKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpICYmICFtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYyA9IF9tcGRfY21wX251bWVxdWFsKGEsIGIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBNaW5pbXVtIG1hZ25pdHVkZTogU2FtZSBhcyBtcGRfbWluKCksIGJ1dCBjb21wYXJlcyB0aGUgb3BlcmFuZHMgd2l0aCB0aGVpcgorICogc2lnbiBpZ25vcmVkLgorICovCit2b2lkCittcGRfcW1pbl9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNxbmFuKGEpICYmICFtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSAmJiAhbXBkX2lzbmFuKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gX21wZF9jbXBfYWJzKGEsIGIpOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBjID0gX21wZF9jbXBfbnVtZXF1YWwoYSwgYik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogTWluaW11bSBzcGFjZSBuZWVkZWQgZm9yIHRoZSByZXN1bHQgYXJyYXkgaW4gX2thcmF0c3ViYV9yZWMoKS4gKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorX2ttdWxfcmVzdWx0c2l6ZShtcGRfc2l6ZV90IGxhLCBtcGRfc2l6ZV90IGxiKQoreworICAgIG1wZF9zaXplX3QgbiwgbTsKKworICAgIG4gPSBhZGRfc2l6ZV90KGxhLCBsYik7CisgICAgbiA9IGFkZF9zaXplX3QobiwgMSk7CisKKyAgICBtID0gKGxhKzEpLzIgKyAxOworICAgIG0gPSBtdWxfc2l6ZV90KG0sIDMpOworCisgICAgcmV0dXJuIChtID4gbikgPyBtIDogbjsKK30KKworLyogV29yayBzcGFjZSBuZWVkZWQgaW4gX2thcmF0c3ViYV9yZWMoKS4gbGltID49IDQgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorX2ttdWxfd29ya3NpemUobXBkX3NpemVfdCBuLCBtcGRfc2l6ZV90IGxpbSkKK3sKKyAgICBtcGRfc2l6ZV90IG07CisKKyAgICBpZiAobiA8PSBsaW0pIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbSA9IChuKzEpLzIgKyAxOworCisgICAgcmV0dXJuIGFkZF9zaXplX3QobXVsX3NpemVfdChtLCAyKSwgX2ttdWxfd29ya3NpemUobSwgbGltKSk7Cit9CisKKworI2RlZmluZSBNUERfS0FSQVRTVUJBX0JBU0VDQVNFIDE2ICAvKiBtdXN0IGJlID49IDQgKi8KKworLyoKKyAqIEFkZCB0aGUgcHJvZHVjdCBvZiBhIGFuZCBiIHRvIGMuCisgKiBjIG11c3QgYmUgX2ttdWxfcmVzdWx0c2l6ZShsYSwgbGIpIGluIHNpemUuCisgKiB3IGlzIHVzZWQgYXMgYSB3b3JrIGFycmF5IGFuZCBtdXN0IGJlIF9rbXVsX3dvcmtzaXplKGEsIGxpbSkgaW4gc2l6ZS4KKyAqIFJvbWFuIEUuIE1hZWRlciwgU3RvcmFnZSBBbGxvY2F0aW9uIGZvciB0aGUgS2FyYXRzdWJhIEludGVnZXIgTXVsdGlwbGljYXRpb24KKyAqIEFsZ29yaXRobS4gSW4gIkRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gb2Ygc3ltYm9saWMgY29tcHV0YXRpb24gc3lzdGVtcyIsCisgKiBTcHJpbmdlciwgMTk5MywgSVNCTiAzNTQwNTcyMzVYLCA5NzgzNTQwNTcyMzUwLgorICovCitzdGF0aWMgdm9pZAorX2thcmF0c3ViYV9yZWMobXBkX3VpbnRfdCAqYywgY29uc3QgbXBkX3VpbnRfdCAqYSwgY29uc3QgbXBkX3VpbnRfdCAqYiwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbGEsIG1wZF9zaXplX3QgbGIpCit7CisgICAgbXBkX3NpemVfdCBtLCBsdDsKKworICAgIGFzc2VydChsYSA+PSBsYiAmJiBsYiA+IDApOworICAgIGFzc2VydChsYSA8PSBNUERfS0FSQVRTVUJBX0JBU0VDQVNFIHx8IHcgIT0gTlVMTCk7CisKKyAgICBpZiAobGEgPD0gTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSkgeworICAgICAgICBfbXBkX2Jhc2VtdWwoYywgYSwgYiwgbGEsIGxiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG0gPSAobGErMSkvMjsgIC8qIGNlaWwobGEvMikgKi8KKworICAgIC8qIGxiIDw9IG0gPCBsYSAqLworICAgIGlmIChsYiA8PSBtKSB7CisKKyAgICAgICAgLyogbGIgY2FuIG5vdyBiZSBsYXJnZXIgdGhhbiBsYS1tICovCisgICAgICAgIGlmIChsYiA+IGxhLW0pIHsKKyAgICAgICAgICAgIGx0ID0gbGIgKyBsYiArIDE7ICAgICAgIC8qIHNwYWNlIG5lZWRlZCBmb3IgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIF9rYXJhdHN1YmFfcmVjKHcsIGIsIGErbSwgdytsdCwgbGIsIGxhLW0pOyAvKiBiKmFoICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsdCA9IChsYS1tKSArIChsYS1tKSArIDE7ICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBfa2FyYXRzdWJhX3JlYyh3LCBhK20sIGIsIHcrbHQsIGxhLW0sIGxiKTsgLyogYWgqYiAqLworICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMrbSwgdywgKGxhLW0pK2xiKTsgICAgICAvKiBhZGQgYWgqYipCKiptICovCisKKyAgICAgICAgbHQgPSBtICsgbSArIDE7ICAgICAgICAgLyogc3BhY2UgbmVlZGVkIGZvciB0aGUgcmVzdWx0IGFycmF5ICovCisgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgIC8qIGNsZWFyIHJlc3VsdCBhcnJheSAqLworICAgICAgICBfa2FyYXRzdWJhX3JlYyh3LCBhLCBiLCB3K2x0LCBtLCBsYik7ICAvKiBhbCpiICovCisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbGIpOyAgICAvKiBhZGQgYWwqYiAqLworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBsYSA+PSBsYiA+IG0gKi8KKyAgICBtZW1jcHkodywgYSwgbSAqIHNpemVvZiAqdyk7CisgICAgd1ttXSA9IDA7CisgICAgX21wZF9iYXNlYWRkdG8odywgYSttLCBsYS1tKTsKKworICAgIG1lbWNweSh3KyhtKzEpLCBiLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W20rMSttXSA9IDA7CisgICAgX21wZF9iYXNlYWRkdG8odysobSsxKSwgYittLCBsYi1tKTsKKworICAgIF9rYXJhdHN1YmFfcmVjKGMrbSwgdywgdysobSsxKSwgdysyKihtKzEpLCBtKzEsIG0rMSk7CisKKyAgICBsdCA9IChsYS1tKSArIChsYS1tKSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBfa2FyYXRzdWJhX3JlYyh3LCBhK20sIGIrbSwgdytsdCwgbGEtbSwgbGItbSk7CisKKyAgICBfbXBkX2Jhc2VhZGR0byhjKzIqbSwgdywgKGxhLW0pICsgKGxiLW0pKTsKKyAgICBfbXBkX2Jhc2VzdWJmcm9tKGMrbSwgdywgKGxhLW0pICsgKGxiLW0pKTsKKworICAgIGx0ID0gbSArIG0gKyAxOworICAgIG1wZF91aW50X3plcm8odywgbHQpOworCisgICAgX2thcmF0c3ViYV9yZWModywgYSwgYiwgdytsdCwgbSwgbSk7CisgICAgX21wZF9iYXNlYWRkdG8oYywgdywgbSttKTsKKyAgICBfbXBkX2Jhc2VzdWJmcm9tKGMrbSwgdywgbSttKTsKKworICAgIHJldHVybjsKK30KKworLyoKKyAqIE11bHRpcGx5IHUgYW5kIHYsIHVzaW5nIEthcmF0c3ViYSBtdWx0aXBsaWNhdGlvbi4gUmV0dXJucyBhIHBvaW50ZXIKKyAqIHRvIHRoZSByZXN1bHQgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUgKG1hbGxvYyBlcnJvcikuCisgKiBDb25kaXRpb25zOiB1bGVuID49IHZsZW4sIHVsZW4gPj0gNAorICovCitzdGF0aWMgbXBkX3VpbnRfdCAqCitfbXBkX2ttdWwoY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICBtcGRfc2l6ZV90ICpyc2l6ZSkKK3sKKyAgICBtcGRfdWludF90ICpyZXN1bHQgPSBOVUxMLCAqdyA9IE5VTEw7CisgICAgbXBkX3NpemVfdCBtOworCisgICAgYXNzZXJ0KHVsZW4gPj0gNCk7CisgICAgYXNzZXJ0KHVsZW4gPj0gdmxlbik7CisKKyAgICAqcnNpemUgPSBfa211bF9yZXN1bHRzaXplKHVsZW4sIHZsZW4pOworICAgIGlmICgocmVzdWx0ID0gbXBkX2NhbGxvYygqcnNpemUsIHNpemVvZiAqcmVzdWx0KSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtID0gX2ttdWxfd29ya3NpemUodWxlbiwgTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSk7CisgICAgaWYgKG0gJiYgKCh3ID0gbXBkX2NhbGxvYyhtLCBzaXplb2YgKncpKSA9PSBOVUxMKSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBfa2FyYXRzdWJhX3JlYyhyZXN1bHQsIHUsIHYsIHcsIHVsZW4sIHZsZW4pOworCisKKyAgICBpZiAodykgbXBkX2ZyZWUodyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKgorICogRGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGxlbmd0aCBmb3IgdGhlIG51bWJlciB0aGVvcmV0aWMgdHJhbnNmb3JtLiBWYWxpZAorICogdHJhbnNmb3JtIGxlbmd0aHMgYXJlIDIqKm4gb3IgMyoyKipuLCB3aGVyZSAyKipuIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4uCisgKiBUaGUgZnVuY3Rpb24gZmluZHMgdGhlIHNob3J0ZXN0IGxlbmd0aCBtIHN1Y2ggdGhhdCByc2l6ZSA8PSBtLgorICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19tcGRfZ2V0X3RyYW5zZm9ybV9sZW4obXBkX3NpemVfdCByc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IGxvZzJyc2l6ZTsKKyAgICBtcGRfc2l6ZV90IHgsIHN0ZXA7CisKKyAgICBhc3NlcnQocnNpemUgPj0gNCk7CisgICAgbG9nMnJzaXplID0gbXBkX2Jzcihyc2l6ZSk7CisKKyAgICBpZiAocnNpemUgPD0gMTAyNCkgeworICAgICAgICAvKiAyKipuIGlzIGZhc3RlciBpbiB0aGlzIHJhbmdlLiAqLworICAgICAgICB4ID0gKChtcGRfc2l6ZV90KTEpPDxsb2cycnNpemU7CisgICAgICAgIHJldHVybiAocnNpemUgPT0geCkgPyB4IDogeDw8MTsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gTVBEX01BWFRSQU5TRk9STV8yTikgeworICAgICAgICB4ID0gKChtcGRfc2l6ZV90KTEpPDxsb2cycnNpemU7CisgICAgICAgIGlmIChyc2l6ZSA9PSB4KSByZXR1cm4geDsKKyAgICAgICAgc3RlcCA9IHg+PjE7CisgICAgICAgIHggKz0gc3RlcDsKKyAgICAgICAgcmV0dXJuIChyc2l6ZSA8PSB4KSA/IHggOiB4ICsgc3RlcDsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gTVBEX01BWFRSQU5TRk9STV8yTitNUERfTUFYVFJBTlNGT1JNXzJOLzIpIHsKKyAgICAgICAgcmV0dXJuIE1QRF9NQVhUUkFOU0ZPUk1fMk4rTVBEX01BWFRSQU5TRk9STV8yTi8yOworICAgIH0KKyAgICBlbHNlIGlmIChyc2l6ZSA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pIHsKKyAgICAgICAgcmV0dXJuIDMqTVBEX01BWFRSQU5TRk9STV8yTjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBNUERfU0laRV9NQVg7CisgICAgfQorfQorCisjaWZkZWYgUFBSTworI2lmbmRlZiBfTVNDX1ZFUgorc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydAorX21wZF9nZXRfY29udHJvbDg3KHZvaWQpCit7CisgICAgdW5zaWduZWQgc2hvcnQgY3c7CisKKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZuc3RjdyAlMCIgOiAiPW0iIChjdykpOworICAgIHJldHVybiBjdzsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3NldF9jb250cm9sODcodW5zaWduZWQgc2hvcnQgY3cpCit7CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbGRjdyAlMCIgOiA6ICJtIiAoY3cpKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdW5zaWduZWQgaW50CittcGRfc2V0X2ZlbnYodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3c7CisjaWZkZWYgX01TQ19WRVIKKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3MgPQorICAgICAgICBfRU1fSU5WQUxJRHxfRU1fREVOT1JNQUx8X0VNX1pFUk9ESVZJREV8X0VNX09WRVJGTE9XfAorICAgICAgICBfRU1fVU5ERVJGTE9XfF9FTV9JTkVYQUNUfF9SQ19DSE9QfF9QQ182NDsKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IF9NQ1dfRU18X01DV19SQ3xfTUNXX1BDOworICAgIHVuc2lnbmVkIGludCBkdW1teTsKKworICAgIF9fY29udHJvbDg3XzIoMCwgMCwgJmN3LCBOVUxMKTsKKyAgICBfX2NvbnRyb2w4N18yKGZsYWdzLCBtYXNrLCAmZHVtbXksIE5VTEwpOworI2Vsc2UKKyAgICBjdyA9IF9tcGRfZ2V0X2NvbnRyb2w4NygpOworICAgIF9tcGRfc2V0X2NvbnRyb2w4Nyhjd3wweEYzRik7CisjZW5kaWYKKyAgICByZXR1cm4gY3c7Cit9CisKK3N0YXRpYyB2b2lkCittcGRfcmVzdG9yZV9mZW52KHVuc2lnbmVkIGludCBjdykKK3sKKyNpZmRlZiBfTVNDX1ZFUgorICAgIHVuc2lnbmVkIGludCBtYXNrID0gX01DV19FTXxfTUNXX1JDfF9NQ1dfUEM7CisgICAgdW5zaWduZWQgaW50IGR1bW15OworCisgICAgX19jb250cm9sODdfMihjdywgbWFzaywgJmR1bW15LCBOVUxMKTsKKyNlbHNlCisgICAgX21wZF9zZXRfY29udHJvbDg3KCh1bnNpZ25lZCBzaG9ydCljdyk7CisjZW5kaWYKK30KKyNlbmRpZiAvKiBQUFJPICovCisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyB0aGUgZmFzdCBudW1iZXIgdGhlb3JldGljIHRyYW5zZm9ybS4gUmV0dXJucworICogYSBwb2ludGVyIHRvIHRoZSByZXN1bHQgb3IgTlVMTCBpbiBjYXNlIG9mIGZhaWx1cmUgKG1hbGxvYyBlcnJvcikuCisgKi8KK3N0YXRpYyBtcGRfdWludF90ICoKK19tcGRfZm50bXVsKGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICBtcGRfc2l6ZV90IHVsZW4sIG1wZF9zaXplX3QgdmxlbiwKKyAgICAgICAgICAgIG1wZF9zaXplX3QgKnJzaXplKQoreworICAgIG1wZF91aW50X3QgKmMxID0gTlVMTCwgKmMyID0gTlVMTCwgKmMzID0gTlVMTCwgKnZ0bXAgPSBOVUxMOworICAgIG1wZF9zaXplX3QgbjsKKworI2lmZGVmIFBQUk8KKyAgICB1bnNpZ25lZCBpbnQgY3c7CisgICAgY3cgPSBtcGRfc2V0X2ZlbnYoKTsKKyNlbmRpZgorCisgICAgKnJzaXplID0gYWRkX3NpemVfdCh1bGVuLCB2bGVuKTsKKyAgICBpZiAoKG4gPSBfbXBkX2dldF90cmFuc2Zvcm1fbGVuKCpyc2l6ZSkpID09IE1QRF9TSVpFX01BWCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKGMxID0gbXBkX2NhbGxvYyhuLCBzaXplb2YgKmMxKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgaWYgKChjMiA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICpjMikpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIGlmICgoYzMgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqYzMpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworICAgIG1lbWNweShjMSwgdSwgdWxlbiAqIChzaXplb2YgKmMxKSk7CisgICAgbWVtY3B5KGMyLCB1LCB1bGVuICogKHNpemVvZiAqYzIpKTsKKyAgICBtZW1jcHkoYzMsIHUsIHVsZW4gKiAoc2l6ZW9mICpjMykpOworCisgICAgaWYgKHUgPT0gdikgeworICAgICAgICBpZiAoIWZudF9hdXRvY29udm9sdXRlKGMxLCBuLCBQMSkgfHwKKyAgICAgICAgICAgICFmbnRfYXV0b2NvbnZvbHV0ZShjMiwgbiwgUDIpIHx8CisgICAgICAgICAgICAhZm50X2F1dG9jb252b2x1dGUoYzMsIG4sIFAzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICgodnRtcCA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICp2dG1wKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkodnRtcCwgdiwgdmxlbiAqIChzaXplb2YgKnZ0bXApKTsKKyAgICAgICAgaWYgKCFmbnRfY29udm9sdXRlKGMxLCB2dG1wLCBuLCBQMSkpIHsKKyAgICAgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkodnRtcCwgdiwgdmxlbiAqIChzaXplb2YgKnZ0bXApKTsKKyAgICAgICAgbXBkX3VpbnRfemVybyh2dG1wK3ZsZW4sIG4tdmxlbik7CisgICAgICAgIGlmICghZm50X2NvbnZvbHV0ZShjMiwgdnRtcCwgbiwgUDIpKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIG1wZF91aW50X3plcm8odnRtcCt2bGVuLCBuLXZsZW4pOworICAgICAgICBpZiAoIWZudF9jb252b2x1dGUoYzMsIHZ0bXAsIG4sIFAzKSkgeworICAgICAgICAgICAgbXBkX2ZyZWUodnRtcCk7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgIH0KKworICAgIGNydDMoYzEsIGMyLCBjMywgKnJzaXplKTsKKworb3V0OgorI2lmZGVmIFBQUk8KKyAgICBtcGRfcmVzdG9yZV9mZW52KGN3KTsKKyNlbmRpZgorICAgIGlmIChjMikgbXBkX2ZyZWUoYzIpOworICAgIGlmIChjMykgbXBkX2ZyZWUoYzMpOworICAgIHJldHVybiBjMTsKKworbWFsbG9jX2Vycm9yOgorICAgIGlmIChjMSkgbXBkX2ZyZWUoYzEpOworICAgIGMxID0gTlVMTDsKKyAgICBnb3RvIG91dDsKK30KKworCisvKgorICogS2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHdpdGggRk5UL2Jhc2VtdWwgYXMgdGhlIGJhc2UgY2FzZS4KKyAqLworc3RhdGljIGludAorX2thcmF0c3ViYV9yZWNfZm50KG1wZF91aW50X3QgKmMsIGNvbnN0IG1wZF91aW50X3QgKmEsIGNvbnN0IG1wZF91aW50X3QgKmIsCisgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBsYSwgbXBkX3NpemVfdCBsYikKK3sKKyAgICBtcGRfc2l6ZV90IG0sIGx0OworCisgICAgYXNzZXJ0KGxhID49IGxiICYmIGxiID4gMCk7CisgICAgYXNzZXJ0KGxhIDw9IDMqKE1QRF9NQVhUUkFOU0ZPUk1fMk4vMikgfHwgdyAhPSBOVUxMKTsKKworICAgIGlmIChsYSA8PSAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpKSB7CisKKyAgICAgICAgaWYgKGxiIDw9IDE5MikgeworICAgICAgICAgICAgX21wZF9iYXNlbXVsKGMsIGIsIGEsIGxiLCBsYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfdWludF90ICpyZXN1bHQ7CisgICAgICAgICAgICBtcGRfc2l6ZV90IGR1bW15OworCisgICAgICAgICAgICBpZiAoKHJlc3VsdCA9IF9tcGRfZm50bXVsKGEsIGIsIGxhLCBsYiwgJmR1bW15KSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KGMsIHJlc3VsdCwgKGxhK2xiKSAqIChzaXplb2YgKnJlc3VsdCkpOworICAgICAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBtID0gKGxhKzEpLzI7ICAvKiBjZWlsKGxhLzIpICovCisKKyAgICAvKiBsYiA8PSBtIDwgbGEgKi8KKyAgICBpZiAobGIgPD0gbSkgeworCisgICAgICAgIC8qIGxiIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbGEtbSAqLworICAgICAgICBpZiAobGIgPiBsYS1tKSB7CisgICAgICAgICAgICBsdCA9IGxiICsgbGIgKyAxOyAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBiLCBhK20sIHcrbHQsIGxiLCBsYS1tKSkgeyAvKiBiKmFoICovCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsgIC8qIHNwYWNlIG5lZWRlZCBmb3IgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGErbSwgYiwgdytsdCwgbGEtbSwgbGIpKSB7IC8qIGFoKmIgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMrbSwgdywgKGxhLW0pK2xiKTsgLyogYWRkIGFoKmIqQioqbSAqLworCisgICAgICAgIGx0ID0gbSArIG0gKyAxOyAgICAgICAgIC8qIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheSAqLworICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYSwgYiwgdytsdCwgbSwgbGIpKSB7ICAvKiBhbCpiICovCisgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbGIpOyAgICAgICAvKiBhZGQgYWwqYiAqLworCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGxhID49IGxiID4gbSAqLworICAgIG1lbWNweSh3LCBhLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3LCBhK20sIGxhLW0pOworCisgICAgbWVtY3B5KHcrKG0rMSksIGIsIG0gKiBzaXplb2YgKncpOworICAgIHdbbSsxK21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3KyhtKzEpLCBiK20sIGxiLW0pOworCisgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQoYyttLCB3LCB3KyhtKzEpLCB3KzIqKG0rMSksIG0rMSwgbSsxKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGErbSwgYittLCB3K2x0LCBsYS1tLCBsYi1tKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIF9tcGRfYmFzZWFkZHRvKGMrMiptLCB3LCAobGEtbSkgKyAobGItbSkpOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCAobGEtbSkgKyAobGItbSkpOworCisgICAgbHQgPSBtICsgbSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhLCBiLCB3K2x0LCBtLCBtKSkgeworICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKyAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK20pOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCBtK20pOworCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyBLYXJhdHN1YmEgbXVsdGlwbGljYXRpb24gd2l0aCB0aGUgRk5UIGFzIHRoZQorICogYmFzZSBjYXNlLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlCisgKiAobWFsbG9jIGVycm9yKS4gQ29uZGl0aW9uczogdWxlbiA+PSB2bGVuLCB1bGVuID49IDQuCisgKi8KK3N0YXRpYyBtcGRfdWludF90ICoKK19tcGRfa211bF9mbnQoY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICAgbXBkX3NpemVfdCB1bGVuLCBtcGRfc2l6ZV90IHZsZW4sCisgICAgICAgICAgICAgIG1wZF9zaXplX3QgKnJzaXplKQoreworICAgIG1wZF91aW50X3QgKnJlc3VsdCA9IE5VTEwsICp3ID0gTlVMTDsKKyAgICBtcGRfc2l6ZV90IG07CisKKyAgICBhc3NlcnQodWxlbiA+PSA0KTsKKyAgICBhc3NlcnQodWxlbiA+PSB2bGVuKTsKKworICAgICpyc2l6ZSA9IF9rbXVsX3Jlc3VsdHNpemUodWxlbiwgdmxlbik7CisgICAgaWYgKChyZXN1bHQgPSBtcGRfY2FsbG9jKCpyc2l6ZSwgc2l6ZW9mICpyZXN1bHQpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG0gPSBfa211bF93b3Jrc2l6ZSh1bGVuLCAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpKTsKKyAgICBpZiAobSAmJiAoKHcgPSBtcGRfY2FsbG9jKG0sIHNpemVvZiAqdykpID09IE5VTEwpKSB7CisgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudChyZXN1bHQsIHUsIHYsIHcsIHVsZW4sIHZsZW4pKSB7CisgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgfQorCisKKyAgICBpZiAodykgbXBkX2ZyZWUodyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBEZWFsIHdpdGggdGhlIHNwZWNpYWwgY2FzZXMgb2YgbXVsdGlwbHlpbmcgaW5maW5pdGllcy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FtdWxfaW5mKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8oYikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYiksIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGIpKTsKKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpLCBNUERfSU5GKTsKKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbjogTXVsdGlwbHkgYSBhbmQgYi4gX21wZF9xbXVsIGRlYWxzIHdpdGggc3BlY2lhbHMgYnV0CisgKiBkb2VzIE5PVCBmaW5hbGl6ZSB0aGUgcmVzdWx0LiBUaGlzIGlzIGZvciB1c2UgaW4gbXBkX2ZtYSgpLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcW11bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF90ICpiaWcgPSAobXBkX3QgKilhLCAqc21hbGwgPSAobXBkX3QgKiliOworICAgIG1wZF91aW50X3QgKnJkYXRhID0gTlVMTDsKKyAgICBtcGRfdWludF90IHJidWZbTVBEX01JTkFMTE9DX01BWF07CisgICAgbXBkX3NpemVfdCByc2l6ZSwgaTsKKworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xbXVsX2luZihyZXN1bHQsIGEsIGIsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc21hbGwtPmxlbiA+IGJpZy0+bGVuKSB7CisgICAgICAgIF9tcGRfcHRyc3dhcCgmYmlnLCAmc21hbGwpOworICAgIH0KKworICAgIHJzaXplID0gYmlnLT5sZW4gKyBzbWFsbC0+bGVuOworCisgICAgaWYgKGJpZy0+bGVuID09IDEpIHsKKyAgICAgICAgX21wZF9zaW5nbGVtdWwocmVzdWx0LT5kYXRhLCBiaWctPmRhdGFbMF0sIHNtYWxsLT5kYXRhWzBdKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIGlmIChyc2l6ZSA8PSAobXBkX3NpemVfdClNUERfTUlOQUxMT0NfTUFYKSB7CisgICAgICAgIGlmIChiaWctPmxlbiA9PSAyKSB7CisgICAgICAgICAgICBfbXBkX211bF8yX2xlMihyYnVmLCBiaWctPmRhdGEsIHNtYWxsLT5kYXRhLCBzbWFsbC0+bGVuKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF91aW50X3plcm8ocmJ1ZiwgcnNpemUpOworICAgICAgICAgICAgaWYgKHNtYWxsLT5sZW4gPT0gMSkgeworICAgICAgICAgICAgICAgIF9tcGRfc2hvcnRtdWwocmJ1ZiwgYmlnLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmRhdGFbMF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX21wZF9iYXNlbXVsKHJidWYsIHNtYWxsLT5kYXRhLCBiaWctPmRhdGEsIHNtYWxsLT5sZW4sIGJpZy0+bGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgcnNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IoaSA9IDA7IGkgPCByc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSByYnVmW2ldOworICAgICAgICB9CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworCisgICAgaWYgKHNtYWxsLT5sZW4gPD0gMjU2KSB7CisgICAgICAgIHJkYXRhID0gbXBkX2NhbGxvYyhyc2l6ZSwgc2l6ZW9mICpyZGF0YSk7CisgICAgICAgIGlmIChyZGF0YSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoc21hbGwtPmxlbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgX21wZF9zaG9ydG11bChyZGF0YSwgYmlnLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmRhdGFbMF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX21wZF9iYXNlbXVsKHJkYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+bGVuLCBiaWctPmxlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gMTAyNCkgeworICAgICAgICByZGF0YSA9IF9tcGRfa211bChiaWctPmRhdGEsIHNtYWxsLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmxlbiwgJnJzaXplKTsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKSB7CisgICAgICAgIHJkYXRhID0gX21wZF9mbnRtdWwoYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5sZW4sICZyc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZGF0YSA9IF9tcGRfa211bF9mbnQoYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5sZW4sICZyc2l6ZSk7CisgICAgfQorCisgICAgaWYgKHJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcGRfaXNkeW5hbWljX2RhdGEocmVzdWx0KSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQtPmRhdGEpOworICAgIH0KKyAgICByZXN1bHQtPmRhdGEgPSByZGF0YTsKKyAgICByZXN1bHQtPmFsbG9jID0gcnNpemU7CisgICAgbXBkX3NldF9keW5hbWljX2RhdGEocmVzdWx0KTsKKworCitmaW5pc2g6CisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpKTsKKyAgICByZXN1bHQtPmV4cCA9IGJpZy0+ZXhwICsgc21hbGwtPmV4cDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgcnNpemUpOworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7Cit9CisKKy8qIE11bHRpcGx5IGEgYW5kIGIuICovCit2b2lkCittcGRfcW11bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX21wZF9xbXVsKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIE11bHRpcGx5IGEgYW5kIGIuIFNldCBOYU4vSW52YWxpZF9vcGVyYXRpb24gaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0LiAqLworc3RhdGljIHZvaWQKK19tcGRfcW11bF9leGFjdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworCisgICAgbXBkX3FtdWwocmVzdWx0LCBhLCBiLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgaWYgKHdvcmtzdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX0NsYW1wZWQpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qIE11bHRpcGx5IGRlY2ltYWwgYW5kIG1wZF9zc2l6ZV90LiAqLwordm9pZAorbXBkX3FtdWxfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsCisgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF9zc2l6ZSgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xbXVsKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBNdWx0aXBseSBkZWNpbWFsIGFuZCBtcGRfdWludF90LiAqLwordm9pZAorbXBkX3FtdWxfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF91aW50KCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FtdWwocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKK3ZvaWQKK21wZF9xbXVsX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcW11bF9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FtdWxfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcW11bF91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0Cit2b2lkCittcGRfcW11bF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FtdWxfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xbXVsX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FtdWxfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisvKiBMaWtlIHRoZSBtaW51cyBvcGVyYXRvci4gKi8KK3ZvaWQKK21wZF9xbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpICYmIGN0eC0+cm91bmQgIT0gTVBEX1JPVU5EX0ZMT09SKSB7CisgICAgICAgIG1wZF9xY29weV9hYnMocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3Fjb3B5X25lZ2F0ZShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogTGlrZSB0aGUgcGx1cyBvcGVyYXRvci4gKi8KK3ZvaWQKK21wZF9xcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhhKSAmJiBjdHgtPnJvdW5kICE9IE1QRF9ST1VORF9GTE9PUikgeworICAgICAgICBtcGRfcWNvcHlfYWJzKHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogVGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG9wZXJhbmQuICovCit2b2lkCittcGRfcW5leHRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX0NPTlNUKHRpbnksTVBEX1BPUyxtcGRfZXRpbnkoY3R4KS0xLDEsMSwxLDEpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYSkpOworICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQtPmV4cCA9IG1wZF9ldG9wKGN0eCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfd29ya2NvbnRleHQoJndvcmtjdHgsIGN0eCk7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9GTE9PUjsKKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIGlmICh3b3JrY3R4LnN0YXR1cyYoTVBEX0luZXhhY3R8TVBEX0Vycm9ycykpIHsKKyAgICAgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrY3R4LnN0YXR1cyA9IDA7CisgICAgbXBkX3FzdWIocmVzdWx0LCBhLCAmdGlueSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7Cit9CisKKy8qIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBvcGVyYW5kLiAqLwordm9pZAorbXBkX3FuZXh0X3BsdXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfQ09OU1QodGlueSxNUERfUE9TLG1wZF9ldGlueShjdHgpLTEsMSwxLDEsMSk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydChtcGRfaXNpbmZpbml0ZShhKSk7CisgICAgICAgIGlmIChtcGRfaXNwb3NpdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNuYW4ocmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBNUERfTkVHKTsKKyAgICAgICAgICAgIHJlc3VsdC0+ZXhwID0gbXBkX2V0b3AoY3R4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3dvcmtjb250ZXh0KCZ3b3JrY3R4LCBjdHgpOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfQ0VJTElORzsKKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIGlmICh3b3JrY3R4LnN0YXR1cyAmIChNUERfSW5leGFjdHxNUERfRXJyb3JzKSkgeworICAgICAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtjdHguc3RhdHVzID0gMDsKKyAgICBtcGRfcWFkZChyZXN1bHQsIGEsICZ0aW55LCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKK30KKworLyoKKyAqIFRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcworICogdGhlIHNlY29uZCBvcGVyYW5kLgorICovCit2b2lkCittcGRfcW5leHRfdG93YXJkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYyA9IF9tcGRfY21wKGEsIGIpOworICAgIGlmIChjID09IDApIHsKKyAgICAgICAgbXBkX3Fjb3B5X3NpZ24ocmVzdWx0LCBhLCBiLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGMgPCAwKSB7CisgICAgICAgIG1wZF9xbmV4dF9wbHVzKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3FuZXh0X21pbnVzKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtcGRfaXNpbmZpbml0ZShyZXN1bHQpKSB7CisgICAgICAgICpzdGF0dXMgfD0gKE1QRF9PdmVyZmxvd3xNUERfUm91bmRlZHxNUERfSW5leGFjdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9hZGpleHAocmVzdWx0KSA8IGN0eC0+ZW1pbikgeworICAgICAgICAqc3RhdHVzIHw9IChNUERfVW5kZXJmbG93fE1QRF9TdWJub3JtYWx8TVBEX1JvdW5kZWR8TVBEX0luZXhhY3QpOworICAgICAgICBpZiAobXBkX2lzemVybyhyZXN1bHQpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogSW50ZXJuYWwgZnVuY3Rpb246IEludGVnZXIgcG93ZXIgd2l0aCBtcGRfdWludF90IGV4cG9uZW50LiBUaGUgZnVuY3Rpb24KKyAqIGNhbiBmYWlsIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqCisgKiBUaGUgZXJyb3IgaXMgZXF1YWwgdG8gdGhlIGVycm9yIGluY3VycmVkIGluIGstMSBtdWx0aXBsaWNhdGlvbnMuIEFzc3VtaW5nCisgKiB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSByZWxhdGl2ZSBlcnJvciBpbiBlYWNoIG9wZXJhdGlvbjoKKyAqCisgKiAgIGFicyhlcnIpID0gNSAqIDEwKiotcHJlYworICogICByZXN1bHQgPSB4KiprICogKDEgKyBlcnIpKiooay0xKQorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcXBvd191aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBtcGRfdWludF90IGV4cCwKKyAgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF91aW50X3QgbjsKKworICAgIGlmIChleHAgPT0gMCkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgMCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgcmV0dXJuOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBiYXNlLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuID0gbXBkX2JpdHNbbXBkX2JzcihleHApXTsKKyAgICB3aGlsZSAobiA+Pj0gMSkgeworICAgICAgICBtcGRfcW11bChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgaWYgKGV4cCAmIG4pIHsKKyAgICAgICAgICAgIG1wZF9xbXVsKHJlc3VsdCwgcmVzdWx0LCBiYXNlLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8CisgICAgICAgICAgICAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgJiYgKHdvcmtzdGF0dXMgJiBNUERfQ2xhbXBlZCkpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCByZXN1bHRzaWduKTsKK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uOiBJbnRlZ2VyIHBvd2VyIHdpdGggbXBkX3QgZXhwb25lbnQsIHRiYXNlIGFuZCB0ZXhwCisgKiBhcmUgbW9kaWZpZWQhISBGdW5jdGlvbiBjYW4gZmFpbCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKgorICogVGhlIGVycm9yIGlzIGVxdWFsIHRvIHRoZSBlcnJvciBpbmN1cnJlZCBpbiBrIG11bHRpcGxpY2F0aW9ucy4gQXNzdW1pbmcKKyAqIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIHJlbGF0aXZlIGVycm9yIGluIGVhY2ggb3BlcmF0aW9uOgorICoKKyAqICAgYWJzKGVycikgPSA1ICogMTAqKi1wcmVjCisgKiAgIHJlc3VsdCA9IHgqKmsgKiAoMSArIGVycikqKmsKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3Fwb3dfbXBkKG1wZF90ICpyZXN1bHQsIG1wZF90ICp0YmFzZSwgbXBkX3QgKnRleHAsIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIE1QRF9ORVdfQ09OU1QodHdvLDAsMCwxLDEsMSwyKTsKKworCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xY29weShyZXN1bHQsICZvbmUsIHN0YXR1cyk7CisKKyAgICB3aGlsZSAoIW1wZF9pc3plcm8odGV4cCkpIHsKKyAgICAgICAgaWYgKG1wZF9pc29kZCh0ZXhwKSkgeworICAgICAgICAgICAgbXBkX3FtdWwocmVzdWx0LCByZXN1bHQsIHRiYXNlLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgJiYgKHdvcmtzdGF0dXMgJiBNUERfQ2xhbXBlZCkpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbXBkX3FtdWwodGJhc2UsIHRiYXNlLCB0YmFzZSwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgIG1wZF9xZGl2aW50KHRleHAsIHRleHAsICZ0d28sICZtYXhjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc25hbih0YmFzZSkgfHwgbXBkX2lzbmFuKHRleHApKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCB3b3Jrc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgbXBkX3NldF9zaWduKHJlc3VsdCwgcmVzdWx0c2lnbik7Cit9CisKKy8qCisgKiBUaGUgcG93ZXIgZnVuY3Rpb24gZm9yIGludGVnZXIgZXhwb25lbnRzLiBSZWxhdGl2ZSBlcnJvciBfYmVmb3JlXyB0aGUKKyAqIGZpbmFsIHJvdW5kaW5nIHRvIHByZWM6CisgKiAgIGFicyhyZXN1bHQgLSBiYXNlKipleHApIDwgMC4xICogMTAqKi1wcmVjICogYWJzKGJhc2UqKmV4cCkKKyAqLworc3RhdGljIHZvaWQKK19tcGRfcXBvd19pbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsCisgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyh0YmFzZSwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0ZXhwLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IG47CisKKworICAgIG1wZF93b3JrY29udGV4dCgmd29ya2N0eCwgY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgKz0gKGV4cC0+ZGlnaXRzICsgZXhwLT5leHAgKyAyKTsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoZXhwKSkgeworICAgICAgICB3b3JrY3R4LnByZWMgKz0gMTsKKyAgICAgICAgbXBkX3FkaXYoJnRiYXNlLCAmb25lLCBiYXNlLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKCpzdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoIW1wZF9xY29weSgmdGJhc2UsIGJhc2UsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG4gPSBtcGRfcWFic191aW50KGV4cCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBpZiAod29ya2N0eC5zdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KCZ0ZXhwLCBleHAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX05BTik7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIGdvdG8gZmluaXNoOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgIH0KKyAgICAgICAgX21wZF9xcG93X21wZChyZXN1bHQsICZ0YmFzZSwgJnRleHAsIHJlc3VsdHNpZ24sICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xcG93X3VpbnQocmVzdWx0LCAmdGJhc2UsIG4sIHJlc3VsdHNpZ24sICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtcGRfaXNpbmZpbml0ZShyZXN1bHQpKSB7CisgICAgICAgIC8qIGZvciBST1VORF9ET1dOLCBST1VORF9GTE9PUiwgZXRjLiAqLworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgTVBEX0VYUF9JTkYpOworICAgIH0KKworZmluaXNoOgorICAgIG1wZF9kZWwoJnRiYXNlKTsKKyAgICBtcGRfZGVsKCZ0ZXhwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogSWYgdGhlIGV4cG9uZW50IGlzIGluZmluaXRlIGFuZCBiYXNlIGVxdWFscyBvbmUsIHRoZSByZXN1bHQgaXMgb25lCisgKiB3aXRoIGEgY29lZmZpY2llbnQgb2YgbGVuZ3RoIHByZWMuIE90aGVyd2lzZSwgcmVzdWx0IGlzIHVuZGVmaW5lZC4KKyAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBhcmlzb24gYWdhaW5zdCBvbmUuCisgKi8KK3N0YXRpYyBpbnQKK19xY2hlY2tfcG93X29uZV9pbmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHNoaWZ0OworICAgIGludCBjbXA7CisKKyAgICBpZiAoKGNtcCA9IF9tcGRfY21wKGJhc2UsICZvbmUpKSA9PSAwKSB7CisgICAgICAgIHNoaWZ0ID0gY3R4LT5wcmVjLTE7CisgICAgICAgIG1wZF9xc2hpZnRsKHJlc3VsdCwgJm9uZSwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgIHJlc3VsdC0+ZXhwID0gLXNoaWZ0OworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgcmVzdWx0c2lnbik7CisgICAgICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKKyAgICB9CisKKyAgICByZXR1cm4gY21wOworfQorCisvKgorICogSWYgYWJzKGJhc2UpIGVxdWFscyBvbmUsIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCBwb3dlciBvZiBvbmUgcmVzdWx0LgorICogT3RoZXJ3aXNlLCByZXN1bHQgaXMgdW5kZWZpbmVkLiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjb21wYXJpc29uCisgKiBhZ2FpbnN0IDEuCisgKgorICogVGhpcyBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IGNoZWNrIGZvciBzcGVjaWFscy4KKyAqLworc3RhdGljIGludAorX3FjaGVja19wb3dfb25lKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQ7CisgICAgaW50IGNtcDsKKworICAgIGlmICgoY21wID0gX21wZF9jbXBfYWJzKGJhc2UsICZvbmUpKSA9PSAwKSB7CisgICAgICAgIGlmIChfbXBkX2lzaW50KGV4cCkpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHJlc3VsdHNpZ24sIDEsIDApOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogMS4wMDAqKjMgPSAxLjAwMDAwMDAwMCAqLworICAgICAgICAgICAgbXBkX3FtdWxfc3NpemUocmVzdWx0LCBleHAsIC1iYXNlLT5leHAsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgaWYgKHdvcmtzdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gKHdvcmtzdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBkaWdpdHMtMSBhZnRlciBleHBvbmVudGlhdGlvbiAqLworICAgICAgICAgICAgc2hpZnQgPSBtcGRfcWdldF9zc2l6ZShyZXN1bHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgIC8qIHNoaWZ0IGlzIE1QRF9TU0laRV9NQVggaWYgcmVzdWx0IGlzIHRvbyBsYXJnZSAqLworICAgICAgICAgICAgaWYgKHNoaWZ0ID4gY3R4LT5wcmVjLTEpIHsKKyAgICAgICAgICAgICAgICBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzcG9zaXRpdmUoYmFzZSkpIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gY3R4LT5wcmVjLTE7CisgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gLTI7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgJm9uZSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZXhwID0gLXNoaWZ0OworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgcmVzdWx0c2lnbik7CisgICAgfQorCisgICAgcmV0dXJuIGNtcDsKK30KKworLyoKKyAqIERldGVjdCBjZXJ0YWluIG92ZXIvdW5kZXJmbG93IG9mIHgqKnkuCisgKiBBQ0wyIHByb29mOiBwb3ctYm91bmRzLmxpc3AuCisgKgorICogICBTeW1ib2xzOgorICoKKyAqICAgICBlOiBFWFBfSU5GIG9yIEVYUF9DTEFNUAorICogICAgIHg6IGJhc2UKKyAqICAgICB5OiBleHBvbmVudAorICoKKyAqICAgICBvbWVnYShlKSA9IGxvZzEwKGFicyhlKSkKKyAqICAgICB6ZXRhKHgpICA9IGxvZzEwKGFicyhsb2cxMCh4KSkpCisgKiAgICAgdGhldGEoeSkgPSBsb2cxMChhYnMoeSkpCisgKgorICogICBVcHBlciBhbmQgbG93ZXIgYm91bmRzOgorICoKKyAqICAgICB1Yl9vbWVnYShlKSA9IGNlaWwobG9nMTAoYWJzKGUpKSkKKyAqICAgICBsYl90aGV0YSh5KSA9IGZsb29yKGxvZzEwKGFicyh5KSkpCisgKgorICogICAgICAgICAgICAgICAgICB8IGZsb29yKGxvZzEwKGZsb29yKGFicyhsb2cxMCh4KSkpKSkgaWYgeCA8IDEvMTAgb3IgeCA+PSAxMAorICogICAgIGxiX3pldGEoeCkgPSB8IGZsb29yKGxvZzEwKGFicyh4LTEpLzEwKSkgaWYgMS8xMCA8PSB4IDwgMQorICogICAgICAgICAgICAgICAgICB8IGZsb29yKGxvZzEwKGFicygoeC0xKS8xMDApKSkgaWYgMSA8IHggPCAxMAorICoKKyAqICAgdWJfb21lZ2EoZSkgYW5kIGxiX3RoZXRhKHkpIGFyZSBvYnZpb3VzbHkgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcworICogICBmb3Igb21lZ2EoZSkgYW5kIHRoZXRhKHkpLgorICoKKyAqICAgbGJfemV0YSBpcyBhIGxvd2VyIGJvdW5kIGZvciB6ZXRhKHgpOgorICoKKyAqICAgICB4IDwgMS8xMCBvciB4ID49IDEwOgorICoKKyAqICAgICAgIGFicyhsb2cxMCh4KSkgPj0gMSwgc28gdGhlIG91dGVyIGxvZzEwIGlzIHdlbGwgZGVmaW5lZC4gU2luY2UgbG9nMTAKKyAqICAgICAgIGlzIHN0cmljdGx5IGluY3JlYXNpbmcsIHRoZSBlbmQgcmVzdWx0IGlzIGEgbG93ZXIgYm91bmQuCisgKgorICogICAgIDEvMTAgPD0geCA8IDE6CisgKgorICogICAgICAgV2UgdXNlOiBsb2cxMCh4KSA8PSAoeC0xKS9sb2coMTApCisgKiAgICAgICAgICAgICAgIGFicyhsb2cxMCh4KSkgPj0gYWJzKHgtMSkvbG9nKDEwKQorICogICAgICAgICAgICAgICBhYnMobG9nMTAoeCkpID49IGFicyh4LTEpLzEwCisgKgorICogICAgIDEgPCB4IDwgMTA6CisgKgorICogICAgICAgV2UgdXNlOiAoeC0xKS8oeCpsb2coMTApKSA8IGxvZzEwKHgpCisgKiAgICAgICAgICAgICAgIGFicygoeC0xKS8xMDApIDwgYWJzKGxvZzEwKHgpKQorICoKKyAqICAgICAgIFhYWDogYWJzKCh4LTEpLzEwKSB3b3VsZCB3b3JrLCBuZWVkIEFDTDIgcHJvb2YuCisgKgorICoKKyAqICAgTGV0ICgwIDwgeCA8IDEgYW5kIHkgPCAwKSBvciAoeCA+IDEgYW5kIHkgPiAwKS4gICAgICAgICAgICAgICAgICAoSDEpCisgKiAgIExldCB1Yl9vbWVnYShleHBfaW5mKSA8IGxiX3pldGEoeCkgKyBsYl90aGV0YSh5KSAgICAgICAgICAgICAgICAgKEgyKQorICoKKyAqICAgVGhlbjoKKyAqICAgICAgIGxvZzEwKGFicyhleHBfaW5mKSkgPCBsb2cxMChhYnMobG9nMTAoeCkpKSArIGxvZzEwKGFicyh5KSkuICAgKDEpCisgKiAgICAgICAgICAgICAgICAgICBleHBfaW5mIDwgbG9nMTAoeCkgKiB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgyKQorICogICAgICAgICAgICAgICAxMCoqZXhwX2luZiA8IHgqKnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMykKKyAqCisgKiAgIExldCAoMCA8IHggPCAxIGFuZCB5ID4gMCkgb3IgKHggPiAxIGFuZCB5IDwgMCkuICAgICAgICAgICAgICAgICAgKEgzKQorICogICBMZXQgdWJfb21lZ2EoZXhwX2NsYW1wKSA8IGxiX3pldGEoeCkgKyBsYl90aGV0YSh5KSAgICAgICAgICAgICAgIChINCkKKyAqCisgKiAgIFRoZW46CisgKiAgICAgbG9nMTAoYWJzKGV4cF9jbGFtcCkpIDwgbG9nMTAoYWJzKGxvZzEwKHgpKSkgKyBsb2cxMChhYnMoeSkpLiAgICg0KQorICogICAgICAgICAgICAgIGxvZzEwKHgpICogeSA8IGV4cF9jbGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNSkKKyAqICAgICAgICAgICAgICAgICAgICAgIHgqKnkgPCAxMCoqZXhwX2NsYW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgKDYpCisgKgorICovCitzdGF0aWMgbXBkX3NzaXplX3QKK19sb3dlcl9ib3VuZF96ZXRhKGNvbnN0IG1wZF90ICp4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIE1QRF9ORVdfU1RBVElDKHNjcmF0Y2gsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3QgdCwgdTsKKworICAgIHQgPSBtcGRfYWRqZXhwKHgpOworICAgIGlmICh0ID4gMCkgeworICAgICAgICAvKiB4ID49IDEwIC0+IGZsb29yKGxvZzEwKGZsb29yKGFicyhsb2cxMCh4KSkpKSkgKi8KKyAgICAgICAgcmV0dXJuIG1wZF9leHBfZGlnaXRzKHQpIC0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAodCA8IC0xKSB7CisgICAgICAgIC8qIHggPCAxLzEwIC0+IGZsb29yKGxvZzEwKGZsb29yKGFicyhsb2cxMCh4KSkpKSkgKi8KKyAgICAgICAgcmV0dXJuIG1wZF9leHBfZGlnaXRzKHQrMSkgLSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgICAgIG1wZF9xc3ViKCZzY3JhdGNoLCB4LCAmb25lLCAmbWF4Y3R4LCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbCgmc2NyYXRjaCkpIHsKKyAgICAgICAgICAgIG1wZF9kZWwoJnNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIE1QRF9TU0laRV9NQVg7CisgICAgICAgIH0KKyAgICAgICAgdSA9IG1wZF9hZGpleHAoJnNjcmF0Y2gpOworICAgICAgICBtcGRfZGVsKCZzY3JhdGNoKTsKKworICAgICAgICAvKiB0ID09IC0xLCAxLzEwIDw9IHggPCAxIC0+IGZsb29yKGxvZzEwKGFicyh4LTEpLzEwKSkKKyAgICAgICAgICogdCA9PSAwLCAgMSA8IHggPCAxMCAgICAtPiBmbG9vcihsb2cxMChhYnMoeC0xKS8xMDApKSAqLworICAgICAgICByZXR1cm4gKHQgPT0gMCkgPyB1LTIgOiB1LTE7CisgICAgfQorfQorCisvKgorICogRGV0ZWN0IGNhc2VzIG9mIGNlcnRhaW4gb3ZlcmZsb3cvdW5kZXJmbG93IGluIHRoZSBwb3dlciBmdW5jdGlvbi4KKyAqIEFzc3VtcHRpb25zOiB4ICE9IDEsIHkgIT0gMC4gVGhlIHByb29mIGFib3ZlIGlzIGZvciBwb3NpdGl2ZSB4LgorICogSWYgeCBpcyBuZWdhdGl2ZSBhbmQgeSBpcyBhbiBvZGQgaW50ZWdlciwgeCoqeSA9PSAtKGFicyh4KSoqeSksCisgKiBzbyB0aGUgYW5hbHlzaXMgZG9lcyBub3QgY2hhbmdlLgorICovCitzdGF0aWMgaW50CitfcWNoZWNrX3Bvd19ib3VuZHMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKngsIGNvbnN0IG1wZF90ICp5LAorICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TSEFSRUQoYWJzX3gsIHgpOworICAgIG1wZF9zc2l6ZV90IHViX29tZWdhLCBsYl96ZXRhLCBsYl90aGV0YTsKKyAgICB1aW50OF90IHNpZ247CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYnNfeCk7CisKKyAgICBsYl90aGV0YSA9IG1wZF9hZGpleHAoeSk7CisgICAgbGJfemV0YSA9IF9sb3dlcl9ib3VuZF96ZXRhKCZhYnNfeCwgc3RhdHVzKTsKKyAgICBpZiAobGJfemV0YSA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHNpZ24gPSAobXBkX2FkamV4cCgmYWJzX3gpIDwgMCkgXiBtcGRfc2lnbih5KTsKKyAgICBpZiAoc2lnbiA9PSAwKSB7CisgICAgICAgIC8qICgwIDwgfHh8IDwgMSBhbmQgeSA8IDApIG9yICh8eHwgPiAxIGFuZCB5ID4gMCkgKi8KKyAgICAgICAgdWJfb21lZ2EgPSBtcGRfZXhwX2RpZ2l0cyhjdHgtPmVtYXgpOworICAgICAgICBpZiAodWJfb21lZ2EgPCBsYl96ZXRhICsgbGJfdGhldGEpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCBNUERfRVhQX0lORik7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qICgwIDwgfHh8IDwgMSBhbmQgeSA+IDApIG9yICh8eHwgPiAxIGFuZCB5IDwgMCkuICovCisgICAgICAgIHViX29tZWdhID0gbXBkX2V4cF9kaWdpdHMobXBkX2V0aW55KGN0eCkpOworICAgICAgICBpZiAodWJfb21lZ2EgPCBsYl96ZXRhICsgbGJfdGhldGEpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCBtcGRfZXRpbnkoY3R4KS0xKTsKKyAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogVE9ETzogSW1wbGVtZW50IGFsZ29yaXRobSBmb3IgY29tcHV0aW5nIGV4YWN0IHBvd2VycyBmcm9tIGRlY2ltYWwucHkuCisgKiBJbiBvcmRlciB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzLCB0aGlzIGhhcyB0byBiZSBjYWxsZWQgYmVmb3JlCisgKiB1c2luZyBaaXYncyBzdHJhdGVneSBmb3IgY29ycmVjdCByb3VuZGluZy4KKyAqLworLyoKK3N0YXRpYyBpbnQKK19tcGRfcXBvd19leGFjdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIDA7Cit9CisqLworCisvKgorICogVGhlIHBvd2VyIGZ1bmN0aW9uIGZvciByZWFsIGV4cG9uZW50cy4KKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBlKip5KSA8IGUqKnkgKiAxLzUgKiAxMCoqKC1wcmVjIC0gMSkKKyAqLworc3RhdGljIHZvaWQKK19tcGRfcXBvd19yZWFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyh0ZXhwLDAsMCwwLDApOworCisgICAgaWYgKCFtcGRfcWNvcHkoJnRleHAsIGV4cCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgIHdvcmtjdHgucHJlYyA9IChiYXNlLT5kaWdpdHMgPiBjdHgtPnByZWMpID8gYmFzZS0+ZGlnaXRzIDogY3R4LT5wcmVjOworICAgIHdvcmtjdHgucHJlYyArPSAoNCArIE1QRF9FWFBESUdJVFMpOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworICAgIHdvcmtjdHguYWxsY3IgPSBjdHgtPmFsbGNyOworCisgICAgLyoKKyAgICAgKiBleHRyYSA6PSBNUERfRVhQRElHSVRTID0gTVBEX0VYUF9NQVhfVAorICAgICAqIHdwIDo9IHByZWMgKyA0ICsgZXh0cmEKKyAgICAgKiBhYnMoZXJyKSA8IDUgKiAxMCoqLXdwCisgICAgICogeSA6PSBsb2coYmFzZSkgKiBleHAKKyAgICAgKiBDYWxjdWxhdGU6CisgICAgICogICAxKSAgIGUqKih5ICogKDEgKyBlcnIpKioyKSAqICgxICsgZXJyKQorICAgICAqICAgICAgPSBlKip5ICogZSoqKHkgKiAoMiplcnIgKyBlcnIqKjIpKSAqICgxICsgZXJyKQorICAgICAqICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorICAgICAqIFJlbGF0aXZlIGVycm9yIG9mIHRoZSB1bmRlcmxpbmVkIHRlcm06CisgICAgICogICAyKSBhYnMoZSoqKHkgKiAoMiplcnIgKyBlcnIqKjIpKSAtIDEpCisgICAgICogQ2FzZSBhYnMoeSkgPj0gMTAqKmV4dHJhOgorICAgICAqICAgMykgYWRqZXhwKHkpKzEgPiBsb2cxMChhYnMoeSkpID49IGV4dHJhCisgICAgICogICBUaGlzIHRyaWdnZXJzIHRoZSBPdmVyZmxvdy9VbmRlcmZsb3cgc2hvcnRjdXQgaW4gX21wZF9xZXhwKCksCisgICAgICogICBzbyBubyBmdXJ0aGVyIGFuYWx5c2lzIGlzIG5lY2Vzc2FyeS4KKyAgICAgKiBDYXNlIGFicyh5KSA8IDEwKipleHRyYToKKyAgICAgKiAgIDQpIGFicyh5ICogKDIqZXJyICsgZXJyKioyKSkgPCAxLzUgKiAxMCoqKC1wcmVjIC0gMikKKyAgICAgKiAgIFVzZSAoc2VlIF9tcGRfcWV4cCk6CisgICAgICogICAgIDUpIGFicyh4KSA8PSA5LzEwICogMTAqKi1wID09PiBhYnMoZSoqeCAtIDEpIDwgMTAqKi1wCisgICAgICogICBXaXRoIDIpLCA0KSBhbmQgNSk6CisgICAgICogICAgIDYpIGFicyhlKiooeSAqICgyKmVyciArIGVycioqMikpIC0gMSkgPCAxMCoqKC1wcmVjIC0gMikKKyAgICAgKiAgIFRoZSBjb21wbGV0ZSByZWxhdGl2ZSBlcnJvciBvZiAxKSBpczoKKyAgICAgKiAgICAgNykgYWJzKHJlc3VsdCAtIGUqKnkpIDwgZSoqeSAqIDEvNSAqIDEwKiooLXByZWMgLSAxKQorICAgICAqLworICAgIG1wZF9xbG4ocmVzdWx0LCBiYXNlLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBtcGRfcW11bChyZXN1bHQsIHJlc3VsdCwgJnRleHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIG1wZF9xZXhwKHJlc3VsdCwgcmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKworICAgIG1wZF9kZWwoJnRleHApOworICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKK30KKworLyogVGhlIHBvd2VyIGZ1bmN0aW9uOiBiYXNlKipleHAgKi8KK3ZvaWQKK21wZF9xcG93KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiA9IDA7CisgICAgaW50IGludGV4cCA9IDA7CisgICAgaW50IGNtcDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGJhc2UpIHx8IG1wZF9pc3NwZWNpYWwoZXhwKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYmFzZSwgZXhwLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobXBkX2lzaW50ZWdlcihleHApKSB7CisgICAgICAgIGludGV4cCA9IDE7CisgICAgICAgIHJlc3VsdHNpZ24gPSBtcGRfaXNuZWdhdGl2ZShiYXNlKSAmJiBtcGRfaXNvZGQoZXhwKTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhiYXNlKSkgeworICAgICAgICBpZiAobXBkX2lzemVybyhleHApKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbmVnYXRpdmUoZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCByZXN1bHRzaWduLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAwLCAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShiYXNlKSkgeworICAgICAgICBpZiAoIWludGV4cCB8fCBtcGRfaXNpbmZpbml0ZShleHApKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGV4cCkpIHsKKyAgICAgICAgLyogcG93ZXIgb2Ygb25lICovCisgICAgICAgIGNtcCA9IF9xY2hlY2tfcG93X29uZV9pbmYocmVzdWx0LCBiYXNlLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cyk7CisgICAgICAgIGlmIChjbXAgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY21wICo9IG1wZF9hcml0aF9zaWduKGV4cCk7CisgICAgICAgICAgICBpZiAoY21wIDwgMCkgeworICAgICAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgcmVzdWx0c2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYmFzZSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8oZXhwKSkgeworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHJlc3VsdHNpZ24sIDEsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgcmVzdWx0c2lnbiwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhleHApKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoX3FjaGVja19wb3dfb25lKHJlc3VsdCwgYmFzZSwgZXhwLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cykgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChfcWNoZWNrX3Bvd19ib3VuZHMocmVzdWx0LCBiYXNlLCBleHAsIHJlc3VsdHNpZ24sIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGludGV4cCkgeworICAgICAgICBfbXBkX3Fwb3dfaW50KHJlc3VsdCwgYmFzZSwgZXhwLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3Fwb3dfcmVhbChyZXN1bHQsIGJhc2UsIGV4cCwgY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoIW1wZF9pc3NwZWNpYWwocmVzdWx0KSAmJiBfbXBkX2NtcChyZXN1bHQsICZvbmUpID09IDApIHsKKyAgICAgICAgICAgIG1wZF9zc2l6ZV90IHNoaWZ0ID0gY3R4LT5wcmVjLTE7CisgICAgICAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICAgICAgcmVzdWx0LT5leHAgPSAtc2hpZnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIC8qIGZvciBST1VORF9ET1dOLCBST1VORF9GTE9PUiwgZXRjLiAqLworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDEsIE1QRF9FWFBfSU5GKTsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uOiBJbnRlZ2VyIHBvd21vZCB3aXRoIG1wZF91aW50X3QgZXhwb25lbnQsIGJhc2UgaXMgbW9kaWZpZWQhCisgKiBGdW5jdGlvbiBjYW4gZmFpbCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9xcG93bW9kX3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3QgKmJhc2UsIG1wZF91aW50X3QgZXhwLAorICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKm1vZCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xY29weShyZXN1bHQsICZvbmUsIHN0YXR1cyk7CisKKyAgICB3aGlsZSAoZXhwID4gMCkgeworICAgICAgICBpZiAoZXhwICYgMSkgeworICAgICAgICAgICAgX21wZF9xbXVsX2V4YWN0KHJlc3VsdCwgcmVzdWx0LCBiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xcmVtKHJlc3VsdCwgcmVzdWx0LCBtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIF9tcGRfcW11bF9leGFjdChiYXNlLCBiYXNlLCBiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FyZW0oYmFzZSwgYmFzZSwgbW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KK30KKworLyogVGhlIHBvd21vZCBmdW5jdGlvbjogKGJhc2UqKmV4cCkgJSBtb2QgKi8KK3ZvaWQKK21wZF9xcG93bW9kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgY29uc3QgbXBkX3QgKm1vZCwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUModGJhc2UsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModGV4cCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0bW9kLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7CisgICAgbXBkX3NzaXplX3QgdGJhc2VfZXhwLCB0ZXhwX2V4cDsKKyAgICBtcGRfc3NpemVfdCBpOworICAgIG1wZF90IHQ7CisgICAgbXBkX3VpbnRfdCByOworICAgIHVpbnQ4X3Qgc2lnbjsKKworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYmFzZSkgfHwgbXBkX2lzc3BlY2lhbChleHApIHx8IG1wZF9pc3NwZWNpYWwobW9kKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja18zbmFucyhyZXN1bHQsIGJhc2UsIGV4cCwgbW9kLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIGlmICghX21wZF9pc2ludChiYXNlKSB8fCAhX21wZF9pc2ludChleHApIHx8ICFfbXBkX2lzaW50KG1vZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYobW9kKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1vZC0+ZGlnaXRzK21vZC0+ZXhwID4gY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNpZ24gPSAobXBkX2lzbmVnYXRpdmUoYmFzZSkpICYmIChtcGRfaXNvZGQoZXhwKSk7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihleHApKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYmFzZSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByID0gKF9tcGRfY21wX2Ficyhtb2QsICZvbmUpPT0wKSA/IDAgOiAxOworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgc2lnbiwgciwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYmFzZSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworCisgICAgbXBkX3FyZXNjYWxlKCZ0bW9kLCBtb2QsIDAsICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgIGlmIChtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIG1heGNvbnRleHQuc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBtYXhjb250ZXh0LnN0YXR1cyA9IDA7CisgICAgbXBkX3NldF9wb3NpdGl2ZSgmdG1vZCk7CisKKyAgICBtcGRfcXJvdW5kX3RvX2ludCgmdGJhc2UsIGJhc2UsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9zZXRfcG9zaXRpdmUoJnRiYXNlKTsKKyAgICB0YmFzZV9leHAgPSB0YmFzZS5leHA7CisgICAgdGJhc2UuZXhwID0gMDsKKworICAgIG1wZF9xcm91bmRfdG9faW50KCZ0ZXhwLCBleHAsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIHRleHBfZXhwID0gdGV4cC5leHA7CisgICAgdGV4cC5leHAgPSAwOworCisgICAgLyogYmFzZSA9IChiYXNlLmludCAlIG1vZHVsbyAqIHBvdygxMCwgYmFzZS5leHAsIG1vZHVsbykpICUgbW9kdWxvICovCisgICAgbXBkX3FyZW0oJnRiYXNlLCAmdGJhc2UsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHRiYXNlX2V4cCwgc3RhdHVzKTsKKyAgICBtcGRfcXJlbShyZXN1bHQsIHJlc3VsdCwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIF9tcGRfcW11bF9leGFjdCgmdGJhc2UsICZ0YmFzZSwgcmVzdWx0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXJlbSgmdGJhc2UsICZ0YmFzZSwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIGlmIChtcGRfaXNzcGVjaWFsKCZ0YmFzZSkgfHwKKyAgICAgICAgbXBkX2lzc3BlY2lhbCgmdGV4cCkgfHwKKyAgICAgICAgbXBkX2lzc3BlY2lhbCgmdG1vZCkpIHsKKyAgICAgICAgZ290byBtcGRfZXJyb3JzOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCB0ZXhwX2V4cDsgaSsrKSB7CisgICAgICAgIF9tcGRfcXBvd21vZF91aW50KCZ0bXAsICZ0YmFzZSwgMTAsICZ0bW9kLCBzdGF0dXMpOworICAgICAgICB0ID0gdG1wOworICAgICAgICB0bXAgPSB0YmFzZTsKKyAgICAgICAgdGJhc2UgPSB0OworICAgIH0KKyAgICBpZiAobXBkX2lzc3BlY2lhbCgmdGJhc2UpKSB7CisgICAgICAgIGdvdG8gbXBkX2Vycm9yczsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3Fjb3B5KHJlc3VsdCwgJm9uZSwgc3RhdHVzKTsKKyAgICB3aGlsZSAobXBkX2lzZmluaXRlKCZ0ZXhwKSAmJiAhbXBkX2lzemVybygmdGV4cCkpIHsKKyAgICAgICAgaWYgKG1wZF9pc29kZCgmdGV4cCkpIHsKKyAgICAgICAgICAgIF9tcGRfcW11bF9leGFjdChyZXN1bHQsIHJlc3VsdCwgJnRiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xcmVtKHJlc3VsdCwgcmVzdWx0LCAmdG1vZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZ0YmFzZSwgJnRiYXNlLCAmdGJhc2UsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcXJlbSgmdGJhc2UsICZ0YmFzZSwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcWRpdmludCgmdGV4cCwgJnRleHAsICZ0d28sICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIH0KKyAgICBpZiAobXBkX2lzc3BlY2lhbCgmdGV4cCkgfHwgbXBkX2lzc3BlY2lhbCgmdGJhc2UpIHx8CisgICAgICAgIG1wZF9pc3NwZWNpYWwoJnRtb2QpIHx8IG1wZF9pc3NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICAvKiBNUERfTWFsbG9jX2Vycm9yICovCisgICAgICAgIGdvdG8gbXBkX2Vycm9yczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9zZXRfc2lnbihyZXN1bHQsIHNpZ24pOworICAgIH0KKworb3V0OgorICAgIG1wZF9kZWwoJnRiYXNlKTsKKyAgICBtcGRfZGVsKCZ0ZXhwKTsKKyAgICBtcGRfZGVsKCZ0bW9kKTsKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIHJldHVybjsKKworbXBkX2Vycm9yczoKKyAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIGdvdG8gb3V0OworfQorCit2b2lkCittcGRfcXF1YW50aXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9zc2l6ZV90IGJfZXhwID0gYi0+ZXhwOworICAgIG1wZF9zc2l6ZV90IGV4cGRpZmYsIHNoaWZ0OworICAgIG1wZF91aW50X3Qgcm5kOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpICYmIG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChiLT5leHAgPiBjdHgtPmVtYXggfHwgYi0+ZXhwIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpLCAwLCBiLT5leHApOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBleHBkaWZmID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgIGlmIChhLT5kaWdpdHMgKyBleHBkaWZmID4gY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChleHBkaWZmID49IDApIHsKKyAgICAgICAgc2hpZnQgPSBleHBkaWZmOworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IGJfZXhwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCBleHBkaWZmIDwgMCBhbmQgYS0+ZGlnaXRzK2V4cGRpZmYgPD0gcHJlYywKKyAgICAgICAgICogc28gdGhlIHNoaWZ0IGJlZm9yZSBhbiBpbmNyZW1lbnQgd2lsbCBmaXQgaW4gcHJlYy4gKi8KKyAgICAgICAgc2hpZnQgPSAtZXhwZGlmZjsKKyAgICAgICAgcm5kID0gbXBkX3FzaGlmdHIocmVzdWx0LCBhLCBzaGlmdCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKHJuZCA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IGJfZXhwOworICAgICAgICBpZiAoIV9tcGRfYXBwbHlfcm91bmRfZml0KHJlc3VsdCwgcm5kLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3b3Jrc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICB3b3Jrc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9hZGpleHAocmVzdWx0KSA+IGN0eC0+ZW1heCB8fAorICAgICAgICBtcGRfYWRqZXhwKHJlc3VsdCkgPCBtcGRfZXRpbnkoY3R4KSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FyZWR1Y2UobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQsIG1heGV4cCwgbWF4c2hpZnQ7CisgICAgdWludDhfdCBzaWduX2EgPSBtcGRfc2lnbihhKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhyZXN1bHQpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBzaWduX2EsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2hpZnQgPSBtcGRfdHJhaWxfemVyb3MocmVzdWx0KTsKKyAgICBtYXhleHAgPSAoY3R4LT5jbGFtcCkgPyBtcGRfZXRvcChjdHgpIDogY3R4LT5lbWF4OworICAgIC8qIEFmdGVyIHRoZSBmaW5hbGl6aW5nIGFib3ZlIHJlc3VsdC0+ZXhwIDw9IG1heGV4cC4gKi8KKyAgICBtYXhzaGlmdCA9IG1heGV4cCAtIHJlc3VsdC0+ZXhwOworICAgIHNoaWZ0ID0gKHNoaWZ0ID4gbWF4c2hpZnQpID8gbWF4c2hpZnQgOiBzaGlmdDsKKworICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCBzaGlmdCk7CisgICAgcmVzdWx0LT5leHAgKz0gc2hpZnQ7Cit9CisKK3ZvaWQKK21wZF9xcmVtKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMocSwwLDAsMCwwKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyLCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkociwgYSwgc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGRlYnVnICovCisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcWRpdm1vZCgmcSwgciwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJnEpOworICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcXJlbV9uZWFyKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUMoYnRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhxLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IGV4cGRpZmYsIHFkaWdpdHM7CisgICAgaW50IGNtcCwgaXNvZGQsIGFsbG5pbmU7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMociwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsICBNUERfRGl2aXNpb25fdW5kZWZpbmVkLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsICBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyID09IGIpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkoJmJ0bXAsIGIsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGIgPSAmYnRtcDsKKyAgICB9CisKKyAgICBfbXBkX3FkaXZtb2QoJnEsIHIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBpZiAobXBkX2lzbmFuKCZxKSB8fCBtcGRfaXNuYW4ocikpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocikpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgZXhwZGlmZiA9IG1wZF9hZGpleHAoYikgLSBtcGRfYWRqZXhwKHIpOworICAgIGlmICgtMSA8PSBleHBkaWZmICYmIGV4cGRpZmYgPD0gMSkgeworCisgICAgICAgIGFsbG5pbmUgPSBtcGRfY29lZmZfaXNhbGxuaW5lKCZxKTsKKyAgICAgICAgcWRpZ2l0cyA9IHEuZGlnaXRzOworICAgICAgICBpc29kZCA9IG1wZF9pc29kZCgmcSk7CisKKyAgICAgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgICAgICBpZiAobXBkX3NpZ24oYSkgPT0gbXBkX3NpZ24oYikpIHsKKyAgICAgICAgICAgIC8qIHNpZ24ocikgPT0gc2lnbihiKSAqLworICAgICAgICAgICAgX21wZF9xc3ViKCZxLCByLCBiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIHNpZ24ocikgIT0gc2lnbihiKSAqLworICAgICAgICAgICAgX21wZF9xYWRkKCZxLCByLCBiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3Iociwgd29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisKKyAgICAgICAgY21wID0gX21wZF9jbXBfYWJzKCZxLCByKTsKKyAgICAgICAgaWYgKGNtcCA8IDAgfHwgKGNtcCA9PSAwICYmIGlzb2RkKSkgeworICAgICAgICAgICAgLyogYWJzKHIpID4gYWJzKGIpLzIgb3IgYWJzKHIpID09IGFicyhiKS8yIGFuZCBpc29kZChxdW90aWVudCkgKi8KKyAgICAgICAgICAgIGlmIChhbGxuaW5lICYmIHFkaWdpdHMgPT0gY3R4LT5wcmVjKSB7CisgICAgICAgICAgICAgICAgLyogYWJzKHF1b3RpZW50KSArIDEgPT0gMTAqKnByZWMgKi8KKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfcWNvcHkociwgJnEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKworZmluaXNoOgorICAgIG1wZF9kZWwoJmJ0bXApOworICAgIG1wZF9kZWwoJnEpOworICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworfQorCitzdGF0aWMgdm9pZAorX21wZF9xcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgZXhwZGlmZiwgc2hpZnQ7CisgICAgbXBkX3VpbnRfdCBybmQ7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpLCAwLCBleHApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXhwZGlmZiA9IGEtPmV4cCAtIGV4cDsKKyAgICBpZiAoZXhwZGlmZiA+PSAwKSB7CisgICAgICAgIHNoaWZ0ID0gZXhwZGlmZjsKKyAgICAgICAgaWYgKGEtPmRpZ2l0cyArIHNoaWZ0ID4gTVBEX01BWF9QUkVDKzEpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IGV4cDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNoaWZ0ID0gLWV4cGRpZmY7CisgICAgICAgIHJuZCA9IG1wZF9xc2hpZnRyKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgICAgIF9tcGRfYXBwbHlfcm91bmRfZXhjZXNzKHJlc3VsdCwgcm5kLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0luZXhhY3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzc3Vibm9ybWFsKHJlc3VsdCwgY3R4KSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9TdWJub3JtYWw7CisgICAgfQorfQorCisvKgorICogUmVzY2FsZSBhIG51bWJlciBzbyB0aGF0IGl0IGhhcyBleHBvbmVudCAnZXhwJy4gRG9lcyBub3QgcmVnYXJkIGNvbnRleHQKKyAqIHByZWNpc2lvbiwgZW1heCwgZW1pbiwgYnV0IHVzZXMgdGhlIHJvdW5kaW5nIG1vZGUuIFNwZWNpYWwgbnVtYmVycyBhcmUKKyAqIHF1aWV0bHkgY29waWVkLiBSZXN0cmljdGlvbnM6CisgKgorICogICAgIE1QRF9NSU5fRVRJTlkgPD0gZXhwIDw9IE1QRF9NQVhfRU1BWCsxCisgKiAgICAgcmVzdWx0LT5kaWdpdHMgPD0gTVBEX01BWF9QUkVDKzEKKyAqLwordm9pZAorbXBkX3FyZXNjYWxlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBleHAsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChleHAgPiBNUERfTUFYX0VNQVgrMSB8fCBleHAgPCBNUERfTUlOX0VUSU5ZKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcXJlc2NhbGUocmVzdWx0LCBhLCBleHAsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIFNhbWUgYXMgbXBkX3FyZXNjYWxlLCBidXQgd2l0aCByZWxheGVkIHJlc3RyaWN0aW9ucy4gVGhlIHJlc3VsdCBvZiB0aGlzCisgKiBmdW5jdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGZvciBmb3JtYXR0aW5nIGEgbnVtYmVyIGFuZCBuZXZlciBhcyBpbnB1dAorICogZm9yIG90aGVyIG9wZXJhdGlvbnMuCisgKgorICogICAgIE1QRF9NSU5fRVRJTlktTVBEX01BWF9QUkVDIDw9IGV4cCA8PSBNUERfTUFYX0VNQVgrMQorICogICAgIHJlc3VsdC0+ZGlnaXRzIDw9IE1QRF9NQVhfUFJFQysxCisgKi8KK3ZvaWQKK21wZF9xcmVzY2FsZV9mbXQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChleHAgPiBNUERfTUFYX0VNQVgrMSB8fCBleHAgPCBNUERfTUlOX0VUSU5ZLU1QRF9NQVhfUFJFQykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FyZXNjYWxlKHJlc3VsdCwgYSwgZXhwLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFJvdW5kIHRvIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvICdhY3Rpb24nIGFuZCBjdHgtPnJvdW5kLiAqLworZW51bSB7VE9fSU5UX0VYQUNULCBUT19JTlRfU0lMRU5ULCBUT19JTlRfVFJVTkN9Oworc3RhdGljIHZvaWQKK19tcGRfcXJvdW5kX3RvX2ludGVncmFsKGludCBhY3Rpb24sIG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3Qgcm5kOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYS0+ZXhwID49IDApIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBybmQgPSBtcGRfcXNoaWZ0cihyZXN1bHQsIGEsIC1hLT5leHAsIHN0YXR1cyk7CisgICAgaWYgKHJuZCA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXN1bHQtPmV4cCA9IDA7CisKKyAgICBpZiAoYWN0aW9uID09IFRPX0lOVF9FWEFDVCB8fCBhY3Rpb24gPT0gVE9fSU5UX1NJTEVOVCkgeworICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhyZXN1bHQsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoYWN0aW9uID09IFRPX0lOVF9FWEFDVCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkCittcGRfcXJvdW5kX3RvX2ludHgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9FWEFDVCwgcmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xcm91bmRfdG9faW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9TSUxFTlQsIHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcXRydW5jKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgKHZvaWQpX21wZF9xcm91bmRfdG9faW50ZWdyYWwoVE9fSU5UX1RSVU5DLCByZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FmbG9vcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9GTE9PUjsKKyAgICAodm9pZClfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChUT19JTlRfU0lMRU5ULCByZXN1bHQsIGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndvcmtjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xY2VpbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4ID0gKmN0eDsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0NFSUxJTkc7CisgICAgKHZvaWQpX21wZF9xcm91bmRfdG9faW50ZWdyYWwoVE9fSU5UX1NJTEVOVCwgcmVzdWx0LCBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrY3R4LCBzdGF0dXMpOworfQorCitpbnQKK21wZF9zYW1lX3F1YW50dW0oY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgcmV0dXJuICgobXBkX2lzbmFuKGEpICYmIG1wZF9pc25hbihiKSkgfHwKKyAgICAgICAgICAgICAgICAobXBkX2lzaW5maW5pdGUoYSkgJiYgbXBkX2lzaW5maW5pdGUoYikpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYS0+ZXhwID09IGItPmV4cDsKK30KKworLyogU2NoZWR1bGUgdGhlIGluY3JlYXNlIGluIHByZWNpc2lvbiBmb3IgdGhlIE5ld3RvbiBpdGVyYXRpb24uICovCitzdGF0aWMgaW5saW5lIGludAorcmVjcHJfc2NoZWR1bGVfcHJlYyhtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl0sCisgICAgICAgICAgICAgICAgICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIG1wZF9zc2l6ZV90IGluaXRwcmVjKQoreworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQobWF4cHJlYyA+IDAgJiYgaW5pdHByZWMgPiAwKTsKKyAgICBpZiAobWF4cHJlYyA8PSBpbml0cHJlYykgcmV0dXJuIC0xOworCisgICAgaSA9IDA7IGsgPSBtYXhwcmVjOworICAgIGRvIHsKKyAgICAgICAgayA9IChrKzEpIC8gMjsKKyAgICAgICAga2xpc3RbaSsrXSA9IGs7CisgICAgfSB3aGlsZSAoayA+IGluaXRwcmVjKTsKKworICAgIHJldHVybiBpLTE7Cit9CisKKy8qCisgKiBJbml0aWFsIGFwcHJveGltYXRpb24gZm9yIHRoZSByZWNpcHJvY2FsOgorICogICAga18wIDo9IE1QRF9SRElHSVRTLTIKKyAqICAgIHpfMCA6PSAxMCoqKC1rXzApICogZmxvb3IoMTAqKigyKmtfMCArIDIpIC8gZmxvb3IodiAqIDEwKiooa18wICsgMikpKQorICogQWJzb2x1dGUgZXJyb3I6CisgKiAgICB8MS92IC0gel8wfCA8IDEwKiooLWtfMCkKKyAqIEFDTDIgcHJvb2Y6IG1heGVycm9yLWludmVyc2UtYXBwcm94CisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FyZWNpcHJvY2FsX2FwcHJveChtcGRfdCAqeiwgY29uc3QgbXBkX3QgKnYsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBwMTBkYXRhWzJdID0gezAsIG1wZF9wb3cxMFtNUERfUkRJR0lUUy0yXX07CisgICAgbXBkX3VpbnRfdCBkdW1teSwgd29yZDsKKyAgICBpbnQgbjsKKworICAgIGFzc2VydCh2LT5leHAgPT0gLXYtPmRpZ2l0cyk7CisKKyAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ3b3JkLCB2LCBNUERfUkRJR0lUUyk7CisgICAgbiA9IG1wZF93b3JkX2RpZ2l0cyh3b3JkKTsKKyAgICB3b3JkICo9IG1wZF9wb3cxMFtNUERfUkRJR0lUUy1uXTsKKworICAgIG1wZF9xcmVzaXplKHosIDIsIHN0YXR1cyk7CisgICAgKHZvaWQpX21wZF9zaG9ydGRpdih6LT5kYXRhLCBwMTBkYXRhLCAyLCB3b3JkKTsKKworICAgIG1wZF9jbGVhcl9mbGFncyh6KTsKKyAgICB6LT5leHAgPSAtKE1QRF9SRElHSVRTLTIpOworICAgIHotPmxlbiA9ICh6LT5kYXRhWzFdID09IDApID8gMSA6IDI7CisgICAgbXBkX3NldGRpZ2l0cyh6KTsKK30KKworLyoKKyAqIFJlY2lwcm9jYWwsIGNhbGN1bGF0ZWQgd2l0aCBOZXd0b24ncyBNZXRob2QuIEFzc3VtcHRpb246IHJlc3VsdCAhPSBhLgorICogTk9URTogVGhlIGNvbW1lbnRzIGluIHRoZSBmdW5jdGlvbiBzaG93IHRoYXQgY2VydGFpbiBvcGVyYXRpb25zIGFyZQorICogZXhhY3QuIFRoZSBwcm9vZiBmb3IgdGhlIG1heGltdW0gZXJyb3IgaXMgdG9vIGxvbmcgdG8gZml0IGluIGhlcmUuCisgKiBBQ0wyIHByb29mOiBtYXhlcnJvci1pbnZlcnNlLWNvbXBsZXRlCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FyZWNpcHJvY2FsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB2YXJjb250ZXh0LCBtYXhjb250ZXh0OworICAgIG1wZF90ICp6ID0gcmVzdWx0OyAgICAgICAgIC8qIGN1cnJlbnQgYXBwcm94aW1hdGlvbiAqLworICAgIG1wZF90ICp2OyAgICAgICAgICAgICAgICAgIC8qIGEsIG5vcm1hbGl6ZWQgdG8gYSBudW1iZXIgYmV0d2VlbiAwLjEgYW5kIDEgKi8KKyAgICBNUERfTkVXX1NIQVJFRCh2dG1wLCBhKTsgICAvKiB2IHNoYXJlcyBkYXRhIHdpdGggYSAqLworICAgIE1QRF9ORVdfU1RBVElDKHMsMCwwLDAsMCk7IC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLworICAgIE1QRF9ORVdfU1RBVElDKHQsMCwwLDAsMCk7IC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLworICAgIE1QRF9ORVdfQ09OU1QodHdvLDAsMCwxLDEsMSwyKTsgLyogY29uc3QgMiAqLworICAgIG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXTsKKyAgICBtcGRfc3NpemVfdCBhZGosIG1heHByZWMsIGluaXRwcmVjOworICAgIHVpbnQ4X3Qgc2lnbiA9IG1wZF9zaWduKGEpOworICAgIGludCBpOworCisgICAgYXNzZXJ0KHJlc3VsdCAhPSBhKTsKKworICAgIHYgPSAmdnRtcDsKKyAgICBtcGRfY2xlYXJfZmxhZ3Modik7CisgICAgYWRqID0gdi0+ZGlnaXRzICsgdi0+ZXhwOworICAgIHYtPmV4cCA9IC12LT5kaWdpdHM7CisKKyAgICAvKiBJbml0aWFsIGFwcHJveGltYXRpb24gKi8KKyAgICBfbXBkX3FyZWNpcHJvY2FsX2FwcHJveCh6LCB2LCBzdGF0dXMpOworCisgICAgbXBkX21heGNvbnRleHQoJnZhcmNvbnRleHQpOworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICB2YXJjb250ZXh0LnJvdW5kID0gbWF4Y29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKyAgICB2YXJjb250ZXh0LmVtYXggPSBtYXhjb250ZXh0LmVtYXggPSBNUERfTUFYX0VNQVggKyAxMDA7CisgICAgdmFyY29udGV4dC5lbWluID0gbWF4Y29udGV4dC5lbWluID0gTVBEX01JTl9FTUlOIC0gMTAwOworICAgIG1heGNvbnRleHQucHJlYyA9IE1QRF9NQVhfUFJFQyArIDEwMDsKKworICAgIG1heHByZWMgPSBjdHgtPnByZWM7CisgICAgbWF4cHJlYyArPSAyOworICAgIGluaXRwcmVjID0gTVBEX1JESUdJVFMtMzsKKworICAgIGkgPSByZWNwcl9zY2hlZHVsZV9wcmVjKGtsaXN0LCBtYXhwcmVjLCBpbml0cHJlYyk7CisgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAvKiBMb29wIGludmFyaWFudDogei0+ZGlnaXRzIDw9IGtsaXN0W2ldKzcgKi8KKyAgICAgICAgIC8qIExldCBzIDo9IHoqKjIsIGV4YWN0IHJlc3VsdCAqLworICAgICAgICBfbXBkX3FtdWxfZXhhY3QoJnMsIHosIHosICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB2YXJjb250ZXh0LnByZWMgPSAyKmtsaXN0W2ldICsgNTsKKyAgICAgICAgaWYgKHYtPmRpZ2l0cyA+IHZhcmNvbnRleHQucHJlYykgeworICAgICAgICAgICAgLyogTGV0IHQgOj0gdiwgdHJ1bmNhdGVkIHRvIG4gPj0gMiprKzUgZnJhY3Rpb24gZGlnaXRzICovCisgICAgICAgICAgICBtcGRfcXNoaWZ0cigmdCwgdiwgdi0+ZGlnaXRzLXZhcmNvbnRleHQucHJlYywgc3RhdHVzKTsKKyAgICAgICAgICAgIHQuZXhwID0gLXZhcmNvbnRleHQucHJlYzsKKyAgICAgICAgICAgIC8qIExldCB0IDo9IHRydW5jKHYpKnMsIHRydW5jYXRlZCB0byBuID49IDIqaysxIGZyYWN0aW9uIGRpZ2l0cyAqLworICAgICAgICAgICAgbXBkX3FtdWwoJnQsICZ0LCAmcywgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IC8qIHYtPmRpZ2l0cyA8PSAyKmsrNSAqLworICAgICAgICAgICAgLyogTGV0IHQgOj0gdipzLCB0cnVuY2F0ZWQgdG8gbiA+PSAyKmsrMSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCB2LCAmcywgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgLyogTGV0IHMgOj0gMip6LCBleGFjdCByZXN1bHQgKi8KKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZzLCB6LCAmdHdvLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgLyogcy5kaWdpdHMgPCB0LmRpZ2l0cyA8PSAyKmsrNSwgfGFkamV4cChzKS1hZGpleHAodCl8IDw9IDEsCisgICAgICAgICAqIHNvIHRoZSBzdWJ0cmFjdGlvbiBnZW5lcmF0ZXMgYXQgbW9zdCAyKmsrNiA8PSBrbGlzdFtpKzFdKzcKKyAgICAgICAgICogZGlnaXRzLiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgcHJlc2VydmVkLiAqLworICAgICAgICBfbXBkX3FzdWJfZXhhY3QoeiwgJnMsICZ0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9pc3NwZWNpYWwoeikpIHsKKyAgICAgICAgei0+ZXhwIC09IGFkajsKKyAgICAgICAgbXBkX3NldF9mbGFncyh6LCBzaWduKTsKKyAgICB9CisKKyAgICBtcGRfZGVsKCZzKTsKKyAgICBtcGRfZGVsKCZ0KTsKKyAgICBtcGRfcWZpbmFsaXplKHosIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uIGZvciBsYXJnZSBudW1iZXJzOgorICoKKyAqICAgICBxLCByID0gZGl2bW9kKGNvZWZmKGEpLCBjb2VmZihiKSkKKyAqCisgKiBTdHJhdGVneTogTXVsdGlwbHkgdGhlIGRpdmlkZW5kIGJ5IHRoZSByZWNpcHJvY2FsIG9mIHRoZSBkaXZpc29yLiBUaGUKKyAqIGluZXhhY3QgcmVzdWx0IGlzIGZpeGVkIGJ5IGEgc21hbGwgbG9vcCwgdXNpbmcgYXQgbW9zdCBvbmUgaXRlcmF0aW9uLgorICoKKyAqIEFDTDIgcHJvb2ZzOgorICogLS0tLS0tLS0tLS0tCisgKiAgICAxKSBxIGlzIGEgbmF0dXJhbCBudW1iZXIuICAobmRpdm1vZC1xdW90aWVudC1uYXRwKQorICogICAgMikgciBpcyBhIG5hdHVyYWwgbnVtYmVyLiAgKG5kaXZtb2QtcmVtYWluZGVyLW5hdHApCisgKiAgICAzKSBhID0gcSAqIGIgKyByICAgICAgICAgICAobmRpdm1vZC1xKmIrcj09YSkKKyAqICAgIDQpIHIgPCBiICAgICAgICAgICAgICAgICAgIChuZGl2bW9kLXJlbWFpbmRlci08LWIpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2Jhc2VfbmRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIG1wZF90ICpxcSA9IHEsICpyciA9IHI7CisgICAgbXBkX3QgYWEsIGJiOworICAgIGludCBrOworCisgICAgX21wZF9jb3B5X3NoYXJlZCgmYWEsIGEpOworICAgIF9tcGRfY29weV9zaGFyZWQoJmJiLCBiKTsKKworICAgIG1wZF9zZXRfcG9zaXRpdmUoJmFhKTsKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZiYik7CisgICAgYWEuZXhwID0gMDsKKyAgICBiYi5leHAgPSAwOworCisgICAgaWYgKHEgPT0gYSB8fCBxID09IGIpIHsKKyAgICAgICAgaWYgKChxcSA9IG1wZF9xbmV3KCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIGlmIChyID09IGEgfHwgciA9PSBiKSB7CisgICAgICAgIGlmICgocnIgPSBtcGRfcW5ldygpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKworICAgIC8qIExldCBwcmVjIDo9IGFkaWdpdHMgLSBiZGlnaXRzICsgNCAqLworICAgIHdvcmtjdHgucHJlYyA9IGEtPmRpZ2l0cyAtIGItPmRpZ2l0cyArIDEgKyAzOworICAgIGlmIChhLT5kaWdpdHMgPiBNUERfTUFYX1BSRUMgfHwgd29ya2N0eC5wcmVjID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2ltcG9zc2libGU7CisgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgIH0KKworICAgIC8qIExldCB4IDo9IF9tcGRfcXJlY2lwcm9jYWwoYiwgcHJlYykKKyAgICAgKiBUaGVuIHggaXMgYm91bmRlZCBieToKKyAgICAgKiAgICAxKSAxL2IgLSAxMCoqKC1wcmVjIC0gYmRpZ2l0cykgPCB4IDwgMS9iICsgMTAqKigtcHJlYyAtIGJkaWdpdHMpCisgICAgICogICAgMikgMS9iIC0gMTAqKigtYWRpZ2l0cyAtIDQpIDwgeCA8IDEvYiArIDEwKiooLWFkaWdpdHMgLSA0KQorICAgICAqLworICAgIF9tcGRfcXJlY2lwcm9jYWwocnIsICZiYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisKKyAgICAvKiBHZXQgYW4gZXN0aW1hdGUgZm9yIHRoZSBxdW90aWVudC4gTGV0IHEgOj0gYSAqIHgKKyAgICAgKiBUaGVuIHEgaXMgYm91bmRlZCBieToKKyAgICAgKiAgICAzKSBhL2IgLSAxMCoqLTQgPCBxIDwgYS9iICsgMTAqKi00CisgICAgICovCisgICAgX21wZF9xbXVsKHFxLCAmYWEsIHJyLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAvKiBUcnVuY2F0ZSBxIHRvIGFuIGludGVnZXI6CisgICAgICogICAgNCkgYS9iIC0gMiA8IHRydW5jKHEpIDwgYS9iICsgMQorICAgICAqLworICAgIG1wZF9xdHJ1bmMocXEsIHFxLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKworICAgIHdvcmtjdHgucHJlYyA9IGFhLmRpZ2l0cyArIDM7CisgICAgd29ya2N0eC5lbWF4ID0gTVBEX01BWF9FTUFYICsgMzsKKyAgICB3b3JrY3R4LmVtaW4gPSBNUERfTUlOX0VNSU4gLSAzOworICAgIC8qIE11bHRpcGx5IHRoZSBlc3RpbWF0ZSBmb3IgcSBieSBiOgorICAgICAqICAgIDUpIGEgLSAyICogYiA8IHRydW5jKHEpICogYiA8IGEgKyBiCisgICAgICovCisgICAgX21wZF9xbXVsKHJyLCAmYmIsIHFxLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAvKiBHZXQgdGhlIGVzdGltYXRlIGZvciByIHN1Y2ggdGhhdCBhID0gcSAqIGIgKyByLiAqLworICAgIF9tcGRfcXN1Yl9leGFjdChyciwgJmFhLCByciwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisKKyAgICAvKiBGaXggdGhlIHJlc3VsdC4gQXQgdGhpcyBwb2ludCAtYiA8IHIgPCAyKmIsIHNvIHRoZSBjb3JyZWN0aW9uIGxvb3AKKyAgICAgICB0YWtlcyBhdCBtb3N0IG9uZSBpdGVyYXRpb24uICovCisgICAgZm9yIChrID0gMDs7IGsrKykgeworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChxcSkgfHwgbXBkX2lzc3BlY2lhbChycikpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGsgPiAyKSB7IC8qIEFsbG93IHR3byBpdGVyYXRpb25zIGRlc3BpdGUgdGhlIHByb29mLiAqLworICAgICAgICAgICAgbXBkX2Vycl93YXJuKCJsaWJtcGRlYzogaW50ZXJuYWwgZXJyb3IgaW4gIiAgICAgICAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgICAgICAgICAgICAgICAgICAgIl9tcGRfYmFzZV9uZGl2bW9kOiBwbGVhc2UgcmVwb3J0Iik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOyAgICAgICAgICAgICAgICAgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICAgICAgLyogciA8IDAgKi8KKyAgICAgICAgZWxzZSBpZiAoX21wZF9jbXAoJnplcm8sIHJyKSA9PSAxKSB7CisgICAgICAgICAgICBfbXBkX3FhZGRfZXhhY3QocnIsIHJyLCAmYmIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgX21wZF9xYWRkX2V4YWN0KHFxLCBxcSwgJm1pbnVzX29uZSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgLyogMCA8PSByIDwgYiAqLworICAgICAgICBlbHNlIGlmIChfbXBkX2NtcChyciwgJmJiKSA9PSAtMSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgLyogciA+PSBiICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX21wZF9xc3ViX2V4YWN0KHJyLCByciwgJmJiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIF9tcGRfcWFkZF9leGFjdChxcSwgcXEsICZvbmUsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHFxICE9IHEpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkocSwgcXEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbChxcSk7CisgICAgfQorICAgIGlmIChyciAhPSByKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHIsIHJyLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwocnIpOworICAgIH0KKworICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgIHJldHVybjsKKworCituYW5yZXN1bHQ6CisgICAgaWYgKHFxICYmIHFxICE9IHEpIG1wZF9kZWwocXEpOworICAgIGlmIChyciAmJiByciAhPSByKSBtcGRfZGVsKHJyKTsKKyAgICBtcGRfc2V0c3BlY2lhbChxLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKK30KKworLyogTElCTVBERUNfT05MWSAqLworLyoKKyAqIFNjaGVkdWxlIHRoZSBvcHRpbWFsIHByZWNpc2lvbiBpbmNyZWFzZSBmb3IgdGhlIE5ld3RvbiBpdGVyYXRpb24uCisgKiAgIHYgOj0gaW5wdXQgb3BlcmFuZAorICogICB6XzAgOj0gaW5pdGlhbCBhcHByb3hpbWF0aW9uCisgKiAgIGluaXRwcmVjIDo9IG5hdHVyYWwgbnVtYmVyIHN1Y2ggdGhhdCBhYnMoc3FydCh2KSAtIHpfMCkgPCAxMCoqLWluaXRwcmVjCisgKiAgIG1heHByZWMgOj0gdGFyZ2V0IHByZWNpc2lvbgorICoKKyAqIEZvciBjb252ZW5pZW5jZSB0aGUgb3V0cHV0IGtsaXN0IGNvbnRhaW5zIHRoZSBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyOgorICogICBrbGlzdCA6PSBba19uLTEsIC4uLiwga18wXSwgd2hlcmUKKyAqICAgICAxKSBrXzAgPD0gaW5pdHByZWMgYW5kCisgKiAgICAgMikgYWJzKHNxcnQodikgLSByZXN1bHQpIDwgMTAqKigtMiprX24tMSArIDIpIDw9IDEwKiotbWF4cHJlYy4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK2ludnJvb3Rfc2NoZWR1bGVfcHJlYyhtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl0sCisgICAgICAgICAgICAgICAgICAgICAgbXBkX3NzaXplX3QgbWF4cHJlYywgbXBkX3NzaXplX3QgaW5pdHByZWMpCit7CisgICAgbXBkX3NzaXplX3QgazsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChtYXhwcmVjID49IDMgJiYgaW5pdHByZWMgPj0gMyk7CisgICAgaWYgKG1heHByZWMgPD0gaW5pdHByZWMpIHJldHVybiAtMTsKKworICAgIGkgPSAwOyBrID0gbWF4cHJlYzsKKyAgICBkbyB7CisgICAgICAgIGsgPSAoayszKSAvIDI7CisgICAgICAgIGtsaXN0W2krK10gPSBrOworICAgIH0gd2hpbGUgKGsgPiBpbml0cHJlYyk7CisKKyAgICByZXR1cm4gaS0xOworfQorCisvKgorICogSW5pdGlhbCBhcHByb3hpbWF0aW9uIGZvciB0aGUgaW52ZXJzZSBzcXVhcmUgcm9vdCBmdW5jdGlvbi4KKyAqICAgSW5wdXQ6CisgKiAgICAgdiA6PSByYXRpb25hbCBudW1iZXIsIHdpdGggMSA8PSB2IDwgMTAwCisgKiAgICAgdmhhdCA6PSBmbG9vcih2ICogMTAqKjYpCisgKiAgIE91dHB1dDoKKyAqICAgICB6IDo9IGFwcHJveGltYXRpb24gdG8gMS9zcXJ0KHYpLCBzdWNoIHRoYXQgYWJzKHogLSAxL3NxcnQodikpIDwgMTAqKi0zLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19pbnZyb290X2luaXRfYXBwcm94KG1wZF90ICp6LCBtcGRfdWludF90IHZoYXQpCit7CisgICAgbXBkX3VpbnRfdCBsbyA9IDEwMDA7CisgICAgbXBkX3VpbnRfdCBoaSA9IDEwMDAwOworICAgIG1wZF91aW50X3QgYSwgc3E7CisKKyAgICBhc3NlcnQobG8qbG8gPD0gdmhhdCAmJiB2aGF0IDwgKGhpKzEpKihoaSsxKSk7CisKKyAgICBmb3IoOzspIHsKKyAgICAgICAgYSA9IChsbyArIGhpKSAvIDI7CisgICAgICAgIHNxID0gYSAqIGE7CisgICAgICAgIGlmICh2aGF0ID49IHNxKSB7CisgICAgICAgICAgICBpZiAodmhhdCA8IHNxICsgMiphICsgMSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG8gPSBhICsgMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGhpID0gYSAtIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIEFmdGVyIHRoZSBiaW5hcnkgc2VhcmNoIHdlIGhhdmU6CisgICAgICogIDEpIGEqKjIgPD0gZmxvb3IodiAqIDEwKio2KSA8IChhICsgMSkqKjIKKyAgICAgKiBUaGlzIGltcGxpZXM6CisgICAgICogIDIpIGEqKjIgPD0gdiAqIDEwKio2IDwgKGEgKyAxKSoqMgorICAgICAqICAzKSBhIDw9IHNxcnQodikgKiAxMCoqMyA8IGEgKyAxCisgICAgICogU2luY2UgMTAqKjMgPD0gYToKKyAgICAgKiAgNCkgMCA8PSAxMCoqcHJlYy9hIC0gMS9zcXJ0KHYpIDwgMTAqKi1wcmVjCisgICAgICogV2UgaGF2ZToKKyAgICAgKiAgNSkgMTAqKjMvYSAtIDEwKiotMyA8IGZsb29yKDEwKio5L2EpICogMTAqKi02IDw9IDEwKiozL2EKKyAgICAgKiBNZXJnaW5nIDQpIGFuZCA1KToKKyAgICAgKiAgNikgYWJzKGZsb29yKDEwKio5L2EpICogMTAqKi02IC0gMS9zcXJ0KHYpKSA8IDEwKiotMworICAgICAqLworICAgIG1wZF9taW5hbGxvYyh6KTsKKyAgICBtcGRfY2xlYXJfZmxhZ3Moeik7CisgICAgei0+ZGF0YVswXSA9IDEwMDAwMDAwMDBVTCAvIGE7CisgICAgei0+bGVuID0gMTsKKyAgICB6LT5leHAgPSAtNjsKKyAgICBtcGRfc2V0ZGlnaXRzKHopOworfQorCisvKgorICogU2V0ICdyZXN1bHQnIHRvIDEvc3FydChhKS4KKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSAxL3NxcnQoYSkpIDwgMTAqKi1wcmVjICogMS9zcXJ0KGEpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FpbnZyb290KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCB2YXJjb250ZXh0LCBtYXhjb250ZXh0OworICAgIG1wZF90ICp6ID0gcmVzdWx0OyAgICAgICAgIC8qIGN1cnJlbnQgYXBwcm94aW1hdGlvbiAqLworICAgIG1wZF90ICp2OyAgICAgICAgICAgICAgICAgIC8qIGEsIG5vcm1hbGl6ZWQgdG8gYSBudW1iZXIgYmV0d2VlbiAxIGFuZCAxMDAgKi8KKyAgICBNUERfTkVXX1NIQVJFRCh2dG1wLCBhKTsgICAvKiBieSBkZWZhdWx0IHYgd2lsbCBzaGFyZSBkYXRhIHdpdGggYSAqLworICAgIE1QRF9ORVdfU1RBVElDKHMsMCwwLDAsMCk7IC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLworICAgIE1QRF9ORVdfU1RBVElDKHQsMCwwLDAsMCk7IC8qIHRlbXBvcmFyeSB2YXJpYWJsZSAqLworICAgIE1QRF9ORVdfQ09OU1Qob25lX2hhbGYsMCwtMSwxLDEsMSw1KTsKKyAgICBNUERfTkVXX0NPTlNUKHRocmVlLDAsMCwxLDEsMSwzKTsKKyAgICBtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl07CisgICAgbXBkX3NzaXplX3QgaWRlYWxfZXhwLCBzaGlmdDsKKyAgICBtcGRfc3NpemVfdCBhZGosIHR6OworICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIGZyYWNkaWdpdHM7CisgICAgbXBkX3VpbnRfdCB2aGF0LCBkdW1teTsKKyAgICBpbnQgaSwgbjsKKworCisgICAgaWRlYWxfZXhwID0gLShhLT5leHAgLSAoYS0+ZXhwICYgMSkpIC8gMjsKKworICAgIHYgPSAmdnRtcDsKKyAgICBpZiAocmVzdWx0ID09IGEpIHsKKyAgICAgICAgaWYgKCh2ID0gbXBkX3FuY29weShhKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIG5vcm1hbGl6ZSBhIHRvIDEgPD0gdiA8IDEwMCAqLworICAgIGlmICgodi0+ZGlnaXRzK3YtPmV4cCkgJiAxKSB7CisgICAgICAgIGZyYWNkaWdpdHMgPSB2LT5kaWdpdHMgLSAxOworICAgICAgICB2LT5leHAgPSAtZnJhY2RpZ2l0czsKKyAgICAgICAgbiA9ICh2LT5kaWdpdHMgPiA3KSA/IDcgOiAoaW50KXYtPmRpZ2l0czsKKyAgICAgICAgLyogTGV0IHZoYXQgOj0gZmxvb3IodiAqIDEwKiooMippbml0cHJlYykpICovCisgICAgICAgIF9tcGRfZ2V0X21zZGlnaXRzKCZkdW1teSwgJnZoYXQsIHYsIG4pOworICAgICAgICBpZiAobiA8IDcpIHsKKyAgICAgICAgICAgIHZoYXQgKj0gbXBkX3BvdzEwWzctbl07CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZyYWNkaWdpdHMgPSB2LT5kaWdpdHMgLSAyOworICAgICAgICB2LT5leHAgPSAtZnJhY2RpZ2l0czsKKyAgICAgICAgbiA9ICh2LT5kaWdpdHMgPiA4KSA/IDggOiAoaW50KXYtPmRpZ2l0czsKKyAgICAgICAgLyogTGV0IHZoYXQgOj0gZmxvb3IodiAqIDEwKiooMippbml0cHJlYykpICovCisgICAgICAgIF9tcGRfZ2V0X21zZGlnaXRzKCZkdW1teSwgJnZoYXQsIHYsIG4pOworICAgICAgICBpZiAobiA8IDgpIHsKKyAgICAgICAgICAgIHZoYXQgKj0gbXBkX3BvdzEwWzgtbl07CisgICAgICAgIH0KKyAgICB9CisgICAgYWRqID0gKGEtPmV4cC12LT5leHApIC8gMjsKKworICAgIC8qIGluaXRpYWwgYXBwcm94aW1hdGlvbiAqLworICAgIF9pbnZyb290X2luaXRfYXBwcm94KHosIHZoYXQpOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9tYXhjb250ZXh0KCZ2YXJjb250ZXh0KTsKKyAgICB2YXJjb250ZXh0LnJvdW5kID0gTVBEX1JPVU5EX1RSVU5DOworICAgIG1heHByZWMgPSBjdHgtPnByZWMgKyAxOworCisgICAgLyogaW5pdHByZWMgPT0gMyAqLworICAgIGkgPSBpbnZyb290X3NjaGVkdWxlX3ByZWMoa2xpc3QsIG1heHByZWMsIDMpOworICAgIGZvciAoOyBpID49IDA7IGktLSkgeworICAgICAgICB2YXJjb250ZXh0LnByZWMgPSAyKmtsaXN0W2ldKzI7CisgICAgICAgIG1wZF9xbXVsKCZzLCB6LCB6LCAmbWF4Y29udGV4dCwgJndvcmtzdGF0dXMpOworICAgICAgICBpZiAodi0+ZGlnaXRzID4gdmFyY29udGV4dC5wcmVjKSB7CisgICAgICAgICAgICBzaGlmdCA9IHYtPmRpZ2l0cyAtIHZhcmNvbnRleHQucHJlYzsKKyAgICAgICAgICAgIG1wZF9xc2hpZnRyKCZ0LCB2LCBzaGlmdCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgdC5leHAgKz0gc2hpZnQ7CisgICAgICAgICAgICBtcGRfcW11bCgmdCwgJnQsICZzLCAmdmFyY29udGV4dCwgJndvcmtzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3FtdWwoJnQsIHYsICZzLCAmdmFyY29udGV4dCwgJndvcmtzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIG1wZF9xc3ViKCZ0LCAmdGhyZWUsICZ0LCAmbWF4Y29udGV4dCwgJndvcmtzdGF0dXMpOworICAgICAgICBtcGRfcW11bCh6LCB6LCAmdCwgJnZhcmNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgbXBkX3FtdWwoeiwgeiwgJm9uZV9oYWxmLCAmbWF4Y29udGV4dCwgJndvcmtzdGF0dXMpOworICAgIH0KKworICAgIHotPmV4cCAtPSBhZGo7CisKKyAgICB0eiA9IG1wZF90cmFpbF96ZXJvcyhyZXN1bHQpOworICAgIHNoaWZ0ID0gaWRlYWxfZXhwIC0gcmVzdWx0LT5leHA7CisgICAgc2hpZnQgPSAodHogPiBzaGlmdCkgPyBzaGlmdCA6IHR6OworICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgbXBkX3FzaGlmdHJfaW5wbGFjZShyZXN1bHQsIHNoaWZ0KTsKKyAgICAgICAgcmVzdWx0LT5leHAgKz0gc2hpZnQ7CisgICAgfQorCisKKyAgICBtcGRfZGVsKCZzKTsKKyAgICBtcGRfZGVsKCZ0KTsKKyAgICBpZiAodiAhPSAmdnRtcCkgbXBkX2RlbCh2KTsKKyAgICAqc3RhdHVzIHw9ICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICpzdGF0dXMgfD0gKE1QRF9Sb3VuZGVkfE1QRF9JbmV4YWN0KTsKK30KKwordm9pZAorbXBkX3FpbnZyb290KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBwb3NpdGl2ZSBpbmZpbml0eSAqLworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMCwgbXBkX2V0aW55KGN0eCkpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgbXBkX3NpZ24oYSksIE1QRF9JTkYpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9ieV96ZXJvOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrY3R4ID0gKmN0eDsKKyAgICB3b3JrY3R4LnByZWMgKz0gMjsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICBfbXBkX3FpbnZyb290KHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKy8qIEVORCBMSUJNUERFQ19PTkxZICovCisKKy8qIEFsZ29yaXRobSBmcm9tIGRlY2ltYWwucHkgKi8KK3ZvaWQKK21wZF9xc3FydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGMsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMocSwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhyLDAsMCwwLDApOworICAgIE1QRF9ORVdfQ09OU1QodHdvLDAsMCwxLDEsMSwyKTsKKyAgICBtcGRfc3NpemVfdCBwcmVjLCBpZGVhbF9leHA7CisgICAgbXBkX3NzaXplX3QgbCwgc2hpZnQ7CisgICAgaW50IGV4YWN0ID0gMDsKKworCisgICAgaWRlYWxfZXhwID0gKGEtPmV4cCAtIChhLT5leHAgJiAxKSkgLyAyOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgbXBkX3NpZ24oYSksIDAsIGlkZWFsX2V4cCk7CisgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBwcmVjID0gY3R4LT5wcmVjICsgMTsKKworICAgIGlmICghbXBkX3Fjb3B5KCZjLCBhLCBzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKyAgICBjLmV4cCA9IDA7CisKKyAgICBpZiAoYS0+ZXhwICYgMSkgeworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZjLCAmYywgMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbCA9IChhLT5kaWdpdHMgPj4gMSkgKyAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbCA9IChhLT5kaWdpdHMgKyAxKSA+PiAxOworICAgIH0KKworICAgIHNoaWZ0ID0gcHJlYyAtIGw7CisgICAgaWYgKHNoaWZ0ID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYywgJmMsIDIqc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGV4YWN0ID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGV4YWN0ID0gIW1wZF9xc2hpZnRyX2lucGxhY2UoJmMsIC0yKnNoaWZ0KTsKKyAgICB9CisKKyAgICBpZGVhbF9leHAgLT0gc2hpZnQ7CisKKyAgICAvKiBmaW5kIHJlc3VsdCA9IGZsb29yKHNxcnQoYykpIHVzaW5nIE5ld3RvbidzIG1ldGhvZCAqLworICAgIGlmICghbXBkX3FzaGlmdGwocmVzdWx0LCAmb25lLCBwcmVjLCBzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIF9tcGRfcWRpdm1vZCgmcSwgJnIsICZjLCByZXN1bHQsICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8IG1wZF9pc3NwZWNpYWwoJnEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9tcGRfY21wKHJlc3VsdCwgJnEpIDw9IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIF9tcGRfcWFkZF9leGFjdChyZXN1bHQsIHJlc3VsdCwgJnEsICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xZGl2bW9kKHJlc3VsdCwgJnIsIHJlc3VsdCwgJnR3bywgJm1heGNvbnRleHQsICZtYXhjb250ZXh0LnN0YXR1cyk7CisgICAgfQorCisgICAgaWYgKGV4YWN0KSB7CisgICAgICAgIF9tcGRfcW11bF9leGFjdCgmciwgcmVzdWx0LCByZXN1bHQsICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbCgmcikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIG1heGNvbnRleHQuc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBleGFjdCA9IChfbXBkX2NtcCgmciwgJmMpID09IDApOworICAgIH0KKworICAgIGlmIChleGFjdCkgeworICAgICAgICBpZiAoc2hpZnQgPj0gMCkgeworICAgICAgICAgICAgbXBkX3FzaGlmdHJfaW5wbGFjZShyZXN1bHQsIHNoaWZ0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbXBkX3FzaGlmdGwocmVzdWx0LCByZXN1bHQsIC1zaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlkZWFsX2V4cCArPSBzaGlmdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBsc2QgPSAoaW50KW1wZF9sc2QocmVzdWx0LT5kYXRhWzBdKTsKKyAgICAgICAgaWYgKGxzZCA9PSAwIHx8IGxzZCA9PSA1KSB7CisgICAgICAgICAgICByZXN1bHQtPmRhdGFbMF0gKz0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdC0+ZXhwID0gaWRlYWxfZXhwOworCisKK291dDoKKyAgICBtcGRfZGVsKCZjKTsKKyAgICBtcGRfZGVsKCZxKTsKKyAgICBtcGRfZGVsKCZyKTsKKyAgICBtYXhjb250ZXh0ID0gKmN0eDsKKyAgICBtYXhjb250ZXh0LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgcmV0dXJuOworCittYWxsb2NfZXJyb3I6CisgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICBnb3RvIG91dDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlIGNvbnZlcnNpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFNwYWNlIG5lZWRlZCB0byByZXByZXNlbnQgYW4gaW50ZWdlciBtcGRfdCBpbiBiYXNlICdiYXNlJy4gKi8KK3NpemVfdAorbXBkX3NpemVpbmJhc2UoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGJhc2UpCit7CisgICAgZG91YmxlIHg7CisgICAgc2l6ZV90IGRpZ2l0czsKKworICAgIGFzc2VydChtcGRfaXNpbnRlZ2VyKGEpKTsKKyAgICBhc3NlcnQoYmFzZSA+PSAyKTsKKworICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGRpZ2l0cyA9IGEtPmRpZ2l0cythLT5leHA7CisgICAgYXNzZXJ0KGRpZ2l0cyA+IDApOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgLyogY2VpbCgyNzExNDM3MTUyNTk5Mjk0IC8gbG9nMTAoMikpICsgNCA9PSAyKio1MyAqLworICAgIGlmIChkaWdpdHMgPiAyNzExNDM3MTUyNTk5Mjk0VUxMKSB7CisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIHggPSAoZG91YmxlKWRpZ2l0cyAvIGxvZzEwKGJhc2UpOworICAgIHJldHVybiAoeCA+IFNJWkVfTUFYLTEpID8gU0laRV9NQVggOiAoc2l6ZV90KXggKyAxOworfQorCisvKiBTcGFjZSBuZWVkZWQgdG8gaW1wb3J0IGEgYmFzZSAnYmFzZScgaW50ZWdlciBvZiBsZW5ndGggJ3NyY2xlbicuICovCitzdGF0aWMgbXBkX3NzaXplX3QKK19tcGRfaW1wb3J0c2l6ZShzaXplX3Qgc3JjbGVuLCB1aW50MzJfdCBiYXNlKQoreworICAgIGRvdWJsZSB4OworCisgICAgYXNzZXJ0KHNyY2xlbiA+IDApOworICAgIGFzc2VydChiYXNlID49IDIpOworCisjaWYgU0laRV9NQVggPT0gVUlOVDY0X01BWAorICAgIGlmIChzcmNsZW4gPiAoMVVMTDw8NTMpKSB7CisgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgeCA9IChkb3VibGUpc3JjbGVuICogKGxvZzEwKGJhc2UpL01QRF9SRElHSVRTKTsKKyAgICByZXR1cm4gKHggPj0gTVBEX01BWElNUE9SVCkgPyBNUERfU1NJWkVfTUFYIDogKG1wZF9zc2l6ZV90KXggKyAxOworfQorCitzdGF0aWMgdWludDhfdAorbXBkX3Jlc2l6ZV91MTYodWludDE2X3QgKip3LCBzaXplX3Qgbm1lbWIpCit7CisgICAgdWludDhfdCBlcnIgPSAwOworICAgICp3ID0gbXBkX3JlYWxsb2MoKncsIG5tZW1iLCBzaXplb2YgKip3LCAmZXJyKTsKKyAgICByZXR1cm4gIWVycjsKK30KKworc3RhdGljIHVpbnQ4X3QKK21wZF9yZXNpemVfdTMyKHVpbnQzMl90ICoqdywgc2l6ZV90IG5tZW1iKQoreworICAgIHVpbnQ4X3QgZXJyID0gMDsKKyAgICAqdyA9IG1wZF9yZWFsbG9jKCp3LCBubWVtYiwgc2l6ZW9mICoqdywgJmVycik7CisgICAgcmV0dXJuICFlcnI7Cit9CisKK3N0YXRpYyBzaXplX3QKK19iYXNlY29udl90b191MTYodWludDE2X3QgKip3LCBzaXplX3Qgd2xlbiwgbXBkX3VpbnRfdCB3YmFzZSwKKyAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdSwgbXBkX3NzaXplX3QgdWxlbikKK3sKKyAgICBzaXplX3QgbiA9IDA7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh3YmFzZSA8PSAoMVU8PDE2KSk7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MTYodywgbisxKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgIH0KKyAgICAgICAgKCp3KVtuKytdID0gKHVpbnQxNl90KV9tcGRfc2hvcnRkaXYodSwgdSwgdWxlbiwgd2Jhc2UpOworICAgICAgICAvKiB1bGVuIGlzIGF0IGxlYXN0IDEuIHVbdWxlbi0xXSBjYW4gb25seSBiZSB6ZXJvIGlmIHVsZW4gPT0gMS4gKi8KKyAgICAgICAgdWxlbiA9IF9tcGRfcmVhbF9zaXplKHUsIHVsZW4pOworCisgICAgfSB3aGlsZSAodVt1bGVuLTFdICE9IDApOworCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBzaXplX3QKK19jb2VmZl9mcm9tX3UxNihtcGRfdCAqdywgbXBkX3NzaXplX3Qgd2xlbiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfdWludF90ICp1LCBzaXplX3QgdWxlbiwgdWludDMyX3QgdWJhc2UsCisgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBuID0gMDsKKyAgICBtcGRfdWludF90IGNhcnJ5OworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQodWJhc2UgPD0gKDFVPDwxNikpOworCisgICAgdy0+ZGF0YVtuKytdID0gdVstLXVsZW5dOworICAgIHdoaWxlICgtLXVsZW4gIT0gU0laRV9NQVgpIHsKKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0bXVsX2Mody0+ZGF0YSwgdy0+ZGF0YSwgbiwgdWJhc2UpOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHcsIG4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LT5kYXRhW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRhZGQody0+ZGF0YSwgbiwgdVt1bGVuXSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHctPmRhdGFbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKKy8qIHRhcmdldCBiYXNlIHdiYXNlIDwgc291cmNlIGJhc2UgdWJhc2UgKi8KK3N0YXRpYyBzaXplX3QKK19iYXNlY29udl90b19zbWFsbGVyKHVpbnQzMl90ICoqdywgc2l6ZV90IHdsZW4sIHVpbnQzMl90IHdiYXNlLAorICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdSwgbXBkX3NzaXplX3QgdWxlbiwgbXBkX3VpbnRfdCB1YmFzZSkKK3sKKyAgICBzaXplX3QgbiA9IDA7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh3YmFzZSA8IHViYXNlKTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgaWYgKCFtcGRfcmVzaXplX3UzMih3LCBuKzEpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgfQorICAgICAgICAoKncpW24rK10gPSAodWludDMyX3QpX21wZF9zaG9ydGRpdl9iKHUsIHUsIHVsZW4sIHdiYXNlLCB1YmFzZSk7CisgICAgICAgIC8qIHVsZW4gaXMgYXQgbGVhc3QgMS4gdVt1bGVuLTFdIGNhbiBvbmx5IGJlIHplcm8gaWYgdWxlbiA9PSAxLiAqLworICAgICAgICB1bGVuID0gX21wZF9yZWFsX3NpemUodSwgdWxlbik7CisKKyAgICB9IHdoaWxlICh1W3VsZW4tMV0gIT0gMCk7CisKKyAgICByZXR1cm4gbjsKK30KKworI2lmZGVmIENPTkZJR18zMgorLyogdGFyZ2V0IGJhc2UgJ3diYXNlJyA9PSBzb3VyY2UgYmFzZSAndWJhc2UnICovCitzdGF0aWMgc2l6ZV90CitfY29weV9lcXVhbF9iYXNlKHVpbnQzMl90ICoqdywgc2l6ZV90IHdsZW4sCisgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICp1LCBzaXplX3QgdWxlbikKK3sKKyAgICBpZiAod2xlbiA8IHVsZW4pIHsKKyAgICAgICAgaWYgKCFtcGRfcmVzaXplX3UzMih3LCB1bGVuKSkgeworICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICB9CisgICAgfQorCisgICAgbWVtY3B5KCp3LCB1LCB1bGVuICogKHNpemVvZiAqKncpKTsKKyAgICByZXR1cm4gdWxlbjsKK30KKworLyogdGFyZ2V0IGJhc2UgJ3diYXNlJyA+IHNvdXJjZSBiYXNlICd1YmFzZScgKi8KK3N0YXRpYyBzaXplX3QKK19iYXNlY29udl90b19sYXJnZXIodWludDMyX3QgKip3LCBzaXplX3Qgd2xlbiwgbXBkX3VpbnRfdCB3YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3VpbnRfdCAqdSwgc2l6ZV90IHVsZW4sIG1wZF91aW50X3QgdWJhc2UpCit7CisgICAgc2l6ZV90IG4gPSAwOworICAgIG1wZF91aW50X3QgY2Fycnk7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh1YmFzZSA8IHdiYXNlKTsKKworICAgICgqdylbbisrXSA9IHVbLS11bGVuXTsKKyAgICB3aGlsZSAoLS11bGVuICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydG11bF9iKCp3LCAqdywgbiwgdWJhc2UsIHdiYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcmVzaXplX3UzMih3LCBuKzEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICgqdylbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydGFkZF9iKCp3LCBuLCB1W3VsZW5dLCB3YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgbisxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAoKncpW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBuOworfQorCisvKiB0YXJnZXQgYmFzZSB3YmFzZSA8IHNvdXJjZSBiYXNlIHViYXNlICovCitzdGF0aWMgc2l6ZV90CitfY29lZmZfZnJvbV9sYXJnZXJfYmFzZShtcGRfdCAqdywgc2l6ZV90IHdsZW4sIG1wZF91aW50X3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90ICp1LCBtcGRfc3NpemVfdCB1bGVuLCBtcGRfdWludF90IHViYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBzaXplX3QgbiA9IDA7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh3YmFzZSA8IHViYXNlKTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICB9CisgICAgICAgIHctPmRhdGFbbisrXSA9ICh1aW50MzJfdClfbXBkX3Nob3J0ZGl2X2IodSwgdSwgdWxlbiwgd2Jhc2UsIHViYXNlKTsKKyAgICAgICAgLyogdWxlbiBpcyBhdCBsZWFzdCAxLiB1W3VsZW4tMV0gY2FuIG9ubHkgYmUgemVybyBpZiB1bGVuID09IDEuICovCisgICAgICAgIHVsZW4gPSBfbXBkX3JlYWxfc2l6ZSh1LCB1bGVuKTsKKworICAgIH0gd2hpbGUgKHVbdWxlbi0xXSAhPSAwKTsKKworICAgIHJldHVybiBuOworfQorI2VuZGlmCisKKy8qIHRhcmdldCBiYXNlICd3YmFzZScgPiBzb3VyY2UgYmFzZSAndWJhc2UnICovCitzdGF0aWMgc2l6ZV90CitfY29lZmZfZnJvbV9zbWFsbGVyX2Jhc2UobXBkX3QgKncsIG1wZF9zc2l6ZV90IHdsZW4sIG1wZF91aW50X3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnUsIHNpemVfdCB1bGVuLCBtcGRfdWludF90IHViYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgbiA9IDA7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHdiYXNlID4gdWJhc2UpOworCisgICAgdy0+ZGF0YVtuKytdID0gdVstLXVsZW5dOworICAgIHdoaWxlICgtLXVsZW4gIT0gU0laRV9NQVgpIHsKKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0bXVsX2Iody0+ZGF0YSwgdy0+ZGF0YSwgbiwgdWJhc2UsIHdiYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdy0+ZGF0YVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0YWRkX2Iody0+ZGF0YSwgbiwgdVt1bGVuXSwgd2Jhc2UpOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHcsIG4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LT5kYXRhW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBuOworfQorCisvKgorICogQ29udmVydCBhbiBpbnRlZ2VyIG1wZF90IHRvIGEgbXVsdGlwcmVjaXNpb24gaW50ZWdlciB3aXRoIGJhc2UgPD0gMioqMTYuCisgKiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiB0aGUgcmVzdWx0IGlzICgqcmRhdGEpWzBdLgorICoKKyAqIElmIHJkYXRhIGlzIE5VTEwsIHNwYWNlIGlzIGFsbG9jYXRlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHJsZW4gaXMgaXJyZWxldmFudC4KKyAqIEluIGNhc2Ugb2YgYW4gZXJyb3IgYW55IGFsbG9jYXRlZCBzdG9yYWdlIGlzIGZyZWVkIGFuZCByZGF0YSBpcyBzZXQgYmFjayB0bworICogTlVMTC4KKyAqCisgKiBJZiByZGF0YSBpcyBub24tTlVMTCwgaXQgTVVTVCBiZSBhbGxvY2F0ZWQgYnkgb25lIG9mIGxpYm1wZGVjJ3MgYWxsb2NhdGlvbgorICogZnVuY3Rpb25zIGFuZCBybGVuIE1VU1QgYmUgY29ycmVjdC4gSWYgbmVjZXNzYXJ5LCB0aGUgZnVuY3Rpb24gd2lsbCByZXNpemUKKyAqIHJkYXRhLiBJbiBjYXNlIG9mIGFuIGVycm9yIHRoZSBjYWxsZXIgbXVzdCBmcmVlIHJkYXRhLgorICoKKyAqIFJldHVybiB2YWx1ZTogSW4gY2FzZSBvZiBzdWNjZXNzLCB0aGUgZXhhY3QgbGVuZ3RoIG9mIHJkYXRhLCBTSVpFX01BWAorICogb3RoZXJ3aXNlLgorICovCitzaXplX3QKK21wZF9xZXhwb3J0X3UxNih1aW50MTZfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgcmJhc2UsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKnNyYywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBNUERfTkVXX1NUQVRJQyh0c3JjLDAsMCwwLDApOworICAgIGludCBhbGxvYyA9IDA7IC8qIHJkYXRhID09IE5VTEwgKi8KKyAgICBzaXplX3QgbjsKKworICAgIGFzc2VydChyYmFzZSA8PSAoMVU8PDE2KSk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChzcmMpIHx8ICFfbXBkX2lzaW50KHNyYykpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICB9CisKKyAgICBpZiAoKnJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmxlbiA9IG1wZF9zaXplaW5iYXNlKHNyYywgcmJhc2UpOworICAgICAgICBpZiAocmxlbiA9PSBTSVpFX01BWCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgIH0KKyAgICAgICAgKnJkYXRhID0gbXBkX2FsbG9jKHJsZW4sIHNpemVvZiAqKnJkYXRhKTsKKyAgICAgICAgaWYgKCpyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBhbGxvYyA9IDE7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oc3JjKSkgeworICAgICAgICAqKnJkYXRhID0gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHNyYy0+ZXhwID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmdHNyYywgc3JjLCBzcmMtPmV4cCwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtcGRfcXNoaWZ0cigmdHNyYywgc3JjLCAtc3JjLT5leHAsIHN0YXR1cykgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG4gPSBfYmFzZWNvbnZfdG9fdTE2KHJkYXRhLCBybGVuLCByYmFzZSwgdHNyYy5kYXRhLCB0c3JjLmxlbik7CisgICAgaWYgKG4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorCisKK291dDoKKyAgICBtcGRfZGVsKCZ0c3JjKTsKKyAgICByZXR1cm4gbjsKKworbWFsbG9jX2Vycm9yOgorICAgIGlmIChhbGxvYykgeworICAgICAgICBtcGRfZnJlZSgqcmRhdGEpOworICAgICAgICAqcmRhdGEgPSBOVUxMOworICAgIH0KKyAgICBuID0gU0laRV9NQVg7CisgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgIGdvdG8gb3V0OworfQorCisvKgorICogQ29udmVydCBhbiBpbnRlZ2VyIG1wZF90IHRvIGEgbXVsdGlwcmVjaXNpb24gaW50ZWdlciB3aXRoIGJhc2U8PVVJTlQzMl9NQVguCisgKiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiB0aGUgcmVzdWx0IGlzICgqcmRhdGEpWzBdLgorICoKKyAqIElmIHJkYXRhIGlzIE5VTEwsIHNwYWNlIGlzIGFsbG9jYXRlZCBieSB0aGUgZnVuY3Rpb24gYW5kIHJsZW4gaXMgaXJyZWxldmFudC4KKyAqIEluIGNhc2Ugb2YgYW4gZXJyb3IgYW55IGFsbG9jYXRlZCBzdG9yYWdlIGlzIGZyZWVkIGFuZCByZGF0YSBpcyBzZXQgYmFjayB0bworICogTlVMTC4KKyAqCisgKiBJZiByZGF0YSBpcyBub24tTlVMTCwgaXQgTVVTVCBiZSBhbGxvY2F0ZWQgYnkgb25lIG9mIGxpYm1wZGVjJ3MgYWxsb2NhdGlvbgorICogZnVuY3Rpb25zIGFuZCBybGVuIE1VU1QgYmUgY29ycmVjdC4gSWYgbmVjZXNzYXJ5LCB0aGUgZnVuY3Rpb24gd2lsbCByZXNpemUKKyAqIHJkYXRhLiBJbiBjYXNlIG9mIGFuIGVycm9yIHRoZSBjYWxsZXIgbXVzdCBmcmVlIHJkYXRhLgorICoKKyAqIFJldHVybiB2YWx1ZTogSW4gY2FzZSBvZiBzdWNjZXNzLCB0aGUgZXhhY3QgbGVuZ3RoIG9mIHJkYXRhLCBTSVpFX01BWAorICogb3RoZXJ3aXNlLgorICovCitzaXplX3QKK21wZF9xZXhwb3J0X3UzMih1aW50MzJfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgcmJhc2UsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKnNyYywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBNUERfTkVXX1NUQVRJQyh0c3JjLDAsMCwwLDApOworICAgIGludCBhbGxvYyA9IDA7IC8qIHJkYXRhID09IE5VTEwgKi8KKyAgICBzaXplX3QgbjsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKHNyYykgfHwgIV9tcGRfaXNpbnQoc3JjKSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgIH0KKworICAgIGlmICgqcmRhdGEgPT0gTlVMTCkgeworICAgICAgICBybGVuID0gbXBkX3NpemVpbmJhc2Uoc3JjLCByYmFzZSk7CisgICAgICAgIGlmIChybGVuID09IFNJWkVfTUFYKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgfQorICAgICAgICAqcmRhdGEgPSBtcGRfYWxsb2Mocmxlbiwgc2l6ZW9mICoqcmRhdGEpOworICAgICAgICBpZiAoKnJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGFsbG9jID0gMTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhzcmMpKSB7CisgICAgICAgICoqcmRhdGEgPSAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoc3JjLT5leHAgPj0gMCkgeworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZ0c3JjLCBzcmMsIHNyYy0+ZXhwLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1wZF9xc2hpZnRyKCZ0c3JjLCBzcmMsIC1zcmMtPmV4cCwgc3RhdHVzKSA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorCisjaWZkZWYgQ09ORklHXzY0CisgICAgbiA9IF9iYXNlY29udl90b19zbWFsbGVyKHJkYXRhLCBybGVuLCByYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNyYy5kYXRhLCB0c3JjLmxlbiwgTVBEX1JBRElYKTsKKyNlbHNlCisgICAgaWYgKHJiYXNlID09IE1QRF9SQURJWCkgeworICAgICAgICBuID0gX2NvcHlfZXF1YWxfYmFzZShyZGF0YSwgcmxlbiwgdHNyYy5kYXRhLCB0c3JjLmxlbik7CisgICAgfQorICAgIGVsc2UgaWYgKHJiYXNlIDwgTVBEX1JBRElYKSB7CisgICAgICAgIG4gPSBfYmFzZWNvbnZfdG9fc21hbGxlcihyZGF0YSwgcmxlbiwgcmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c3JjLmRhdGEsIHRzcmMubGVuLCBNUERfUkFESVgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbiA9IF9iYXNlY29udl90b19sYXJnZXIocmRhdGEsIHJsZW4sIHJiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c3JjLmRhdGEsIHRzcmMubGVuLCBNUERfUkFESVgpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorCisKK291dDoKKyAgICBtcGRfZGVsKCZ0c3JjKTsKKyAgICByZXR1cm4gbjsKKworbWFsbG9jX2Vycm9yOgorICAgIGlmIChhbGxvYykgeworICAgICAgICBtcGRfZnJlZSgqcmRhdGEpOworICAgICAgICAqcmRhdGEgPSBOVUxMOworICAgIH0KKyAgICBuID0gU0laRV9NQVg7CisgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgIGdvdG8gb3V0OworfQorCisKKy8qCisgKiBDb252ZXJ0cyBhIG11bHRpcHJlY2lzaW9uIGludGVnZXIgd2l0aCBiYXNlIDw9IFVJTlQxNl9NQVgrMSB0byBhbiBtcGRfdC4KKyAqIFRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkIG9mIHRoZSBzb3VyY2UgaXMgc3JjZGF0YVswXS4KKyAqLwordm9pZAorbXBkX3FpbXBvcnRfdTE2KG1wZF90ICpyZXN1bHQsCisgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBzcmNiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90ICp1c3JjOyAvKiB1aW50MTZfdCBzcmMgY29waWVkIHRvIGFuIG1wZF91aW50X3QgYXJyYXkgKi8KKyAgICBtcGRfc3NpemVfdCBybGVuOyAvKiBsZW5ndGggb2YgdGhlIHJlc3VsdCAqLworICAgIHNpemVfdCBuOworCisgICAgYXNzZXJ0KHNyY2xlbiA+IDApOworICAgIGFzc2VydChzcmNiYXNlIDw9ICgxVTw8MTYpKTsKKworICAgIHJsZW4gPSBfbXBkX2ltcG9ydHNpemUoc3JjbGVuLCBzcmNiYXNlKTsKKyAgICBpZiAocmxlbiA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVzcmMgPSBtcGRfYWxsb2MoKG1wZF9zaXplX3Qpc3JjbGVuLCBzaXplb2YgKnVzcmMpOworICAgIGlmICh1c3JjID09IE5VTEwpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKG4gPSAwOyBuIDwgc3JjbGVuOyBuKyspIHsKKyAgICAgICAgdXNyY1tuXSA9IHNyY2RhdGFbbl07CisgICAgfQorCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHJsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgbiA9IF9jb2VmZl9mcm9tX3UxNihyZXN1bHQsIHJsZW4sIHVzcmMsIHNyY2xlbiwgc3JjYmFzZSwgc3RhdHVzKTsKKyAgICBpZiAobiA9PSBTSVpFX01BWCkgeworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc3Jjc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gbjsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisKKworZmluaXNoOgorICAgIG1wZF9mcmVlKHVzcmMpOworfQorCisvKgorICogQ29udmVydHMgYSBtdWx0aXByZWNpc2lvbiBpbnRlZ2VyIHdpdGggYmFzZSA8PSBVSU5UMzJfTUFYIHRvIGFuIG1wZF90LgorICogVGhlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgb2YgdGhlIHNvdXJjZSBpcyBzcmNkYXRhWzBdLgorICovCit2b2lkCittcGRfcWltcG9ydF91MzIobXBkX3QgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwKKyAgICAgICAgICAgICAgICB1aW50OF90IHNyY3NpZ24sIHVpbnQzMl90IHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHJsZW47IC8qIGxlbmd0aCBvZiB0aGUgcmVzdWx0ICovCisgICAgc2l6ZV90IG47CisKKyAgICBhc3NlcnQoc3JjbGVuID4gMCk7CisKKyAgICBybGVuID0gX21wZF9pbXBvcnRzaXplKHNyY2xlbiwgc3JjYmFzZSk7CisgICAgaWYgKHJsZW4gPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgcmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWZkZWYgQ09ORklHXzY0CisgICAgbiA9IF9jb2VmZl9mcm9tX3NtYWxsZXJfYmFzZShyZXN1bHQsIHJsZW4sIE1QRF9SQURJWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RhdGEsIHNyY2xlbiwgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyk7CisjZWxzZQorICAgIGlmIChzcmNiYXNlID09IE1QRF9SQURJWCkgeworICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgc3JjbGVuLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSwgc3JjZGF0YSwgc3JjbGVuICogKHNpemVvZiAqc3JjZGF0YSkpOworICAgICAgICBuID0gc3JjbGVuOworICAgIH0KKyAgICBlbHNlIGlmIChzcmNiYXNlIDwgTVBEX1JBRElYKSB7CisgICAgICAgIG4gPSBfY29lZmZfZnJvbV9zbWFsbGVyX2Jhc2UocmVzdWx0LCBybGVuLCBNUERfUkFESVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjZGF0YSwgc3JjbGVuLCBzcmNiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfdWludF90ICp1c3JjID0gbXBkX2FsbG9jKChtcGRfc2l6ZV90KXNyY2xlbiwgc2l6ZW9mICp1c3JjKTsKKyAgICAgICAgaWYgKHVzcmMgPT0gTlVMTCkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKG4gPSAwOyBuIDwgc3JjbGVuOyBuKyspIHsKKyAgICAgICAgICAgIHVzcmNbbl0gPSBzcmNkYXRhW25dOworICAgICAgICB9CisKKyAgICAgICAgbiA9IF9jb2VmZl9mcm9tX2xhcmdlcl9iYXNlKHJlc3VsdCwgcmxlbiwgTVBEX1JBRElYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNyYywgKG1wZF9zc2l6ZV90KXNyY2xlbiwgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyk7CisgICAgICAgIG1wZF9mcmVlKHVzcmMpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzcmNzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBuOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZjU0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCkBAIC0wLDAgKzEsODIxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIE1QREVDSU1BTF9ICisjZGVmaW5lIE1QREVDSU1BTF9ICisKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNkZWZpbmUgX19TVERDX0xJTUlUX01BQ1JPUworI2VuZGlmCisKKworI2lmbmRlZiBfTVNDX1ZFUgorICAjaW5jbHVkZSAicHljb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2lmZGVmIF9NU0NfVkVSCisgICNpbmNsdWRlICJ2Y2NvbXBhdC5oIgorICAjaWZuZGVmIFVOVVNFRAorICAgICNkZWZpbmUgVU5VU0VECisgICNlbmRpZgorICAjZGVmaW5lIE1QRF9QUkFHTUEoeCkKKyAgI2RlZmluZSBNUERfSElERV9TWU1CT0xTX1NUQVJUCisgICNkZWZpbmUgTVBEX0hJREVfU1lNQk9MU19FTkQKKyAgI2RlZmluZSBFWFRJTkxJTkUgZXh0ZXJuIGlubGluZQorI2Vsc2UKKyAgI2lmZGVmIEhBVkVfU1RESU5UX0gKKyAgICAjaW5jbHVkZSA8c3RkaW50Lmg+CisgICNlbmRpZgorICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICisgICAgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgICNlbmRpZgorICAjaWZuZGVmIF9fR05VQ19TVERDX0lOTElORV9fCisgICAgI2RlZmluZSBfX0dOVUNfU1REQ19JTkxJTkVfXyAxCisgICNlbmRpZgorICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKKyAgICAjZGVmaW5lIFVOVVNFRCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQorICAjZWxzZQorICAgICNkZWZpbmUgVU5VU0VECisgICNlbmRpZgorICAjaWYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykpICYmIFwKKyAgICAgIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDQgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKKyAgICAjZGVmaW5lIE1QRF9QUkFHTUEoeCkgX1ByYWdtYSh4KQorICAgICNkZWZpbmUgTVBEX0hJREVfU1lNQk9MU19TVEFSVCAiR0NDIHZpc2liaWxpdHkgcHVzaChoaWRkZW4pIgorICAgICNkZWZpbmUgTVBEX0hJREVfU1lNQk9MU19FTkQgIkdDQyB2aXNpYmlsaXR5IHBvcCIKKyAgI2Vsc2UKKyAgICAjZGVmaW5lIE1QRF9QUkFHTUEoeCkKKyAgICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfU1RBUlQKKyAgICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfRU5ECisgICNlbmRpZgorICAjZGVmaW5lIEVYVElOTElORQorI2VuZGlmCisKKworLyogVGhpcyBoZWFkZXIgZmlsZSBpcyBpbnRlcm5hbCBmb3IgdGhlIHB1cnBvc2Ugb2YgYnVpbGRpbmcgX2RlY2ltYWwuc28uCisgKiBBbGwgc3ltYm9scyBzaG91bGQgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPLiAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKKyNpZiAhZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCisgICNpZiAhZGVmaW5lZChVSU5UNjRfTUFYKQorICAgIC8qIFRoZSBmb2xsb3dpbmcgI2Vycm9yIGlzIGp1c3QgYSB3YXJuaW5nLiBJZiB0aGUgY29tcGlsZXIgaW5kZWVkIGRvZXMKKyAgICAgKiBub3QgaGF2ZSB1aW50NjRfdCwgaXQgaXMgcGVyZmVjdGx5IHNhZmUgdG8gY29tbWVudCBvdXQgdGhlICNlcnJvci4gKi8KKyAgICAjZXJyb3IgIldhcm5pbmc6IENvbXBpbGVyIHdpdGhvdXQgdWludDY0X3QuIENvbW1lbnQgb3V0IHRoaXMgbGluZS4iCisgICAgI2RlZmluZSBMRUdBQ1lfQ09NUElMRVIKKyAgI2VuZGlmCisjZW5kaWYKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZiBkZWZpbmVkKFVOSVZFUlNBTCkKKyAgI2lmIGRlZmluZWQoQ09ORklHXzY0KSB8fCBkZWZpbmVkKENPTkZJR18zMikKKyAgICAjZXJyb3IgImNhbm5vdCB1c2UgQ09ORklHXzY0IG9yIENPTkZJR18zMiB3aXRoIFVOSVZFUlNBTC4iCisgICNlbmRpZgorICAjaWYgZGVmaW5lZChfX3BwY19fKQorICAgICNkZWZpbmUgQ09ORklHXzMyCisgICAgI2RlZmluZSBBTlNJCisgICNlbGlmIGRlZmluZWQoX19wcGM2NF9fKQorICAgICNkZWZpbmUgQ09ORklHXzY0CisgICAgI2RlZmluZSBBTlNJCisgICNlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgI2RlZmluZSBDT05GSUdfMzIKKyAgICAjZGVmaW5lIEFOU0kKKyAgI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorICAgICNkZWZpbmUgQ09ORklHXzY0CisgICAgI2RlZmluZSBBU00KKyAgI2Vsc2UKKyAgICAjZXJyb3IgInVua25vd24gYXJjaGl0ZWN0dXJlIGZvciB1bml2ZXJzYWwgYnVpbGQuIgorICAjZW5kaWYKKyNlbmRpZgorCisKKy8qIEJFR0lOIENPTkZJR182NCAqLworI2lmIGRlZmluZWQoQ09ORklHXzY0KQorLyogdHlwZXMgZm9yIG1vZHVsYXIgYW5kIGJhc2UgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfVUlOVF9NQVggVUlOVDY0X01BWAorI2RlZmluZSBNUERfQklUU19QRVJfVUlOVCA2NAordHlwZWRlZiB1aW50NjRfdCBtcGRfdWludF90OyAgLyogdW5zaWduZWQgbW9kIHR5cGUgKi8KKworI2RlZmluZSBNUERfU0laRV9NQVggU0laRV9NQVgKK3R5cGVkZWYgc2l6ZV90IG1wZF9zaXplX3Q7IC8qIHVuc2lnbmVkIHNpemUgdHlwZSAqLworCisvKiB0eXBlIGZvciBleHAsIGRpZ2l0cywgbGVuLCBwcmVjICovCisjZGVmaW5lIE1QRF9TU0laRV9NQVggSU5UNjRfTUFYCisjZGVmaW5lIE1QRF9TU0laRV9NSU4gSU5UNjRfTUlOCit0eXBlZGVmIGludDY0X3QgbXBkX3NzaXplX3Q7CisjZGVmaW5lIF9tcGRfc3RydG9zc2l6ZSBzdHJ0b2xsCisKKy8qIGRlY2ltYWwgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfUkFESVggMTAwMDAwMDAwMDAwMDAwMDAwMDBVTEwgIC8qIDEwKioxOSAqLworI2RlZmluZSBNUERfUkRJR0lUUyAxOQorI2RlZmluZSBNUERfTUFYX1BPVzEwIDE5CisjZGVmaW5lIE1QRF9FWFBESUdJVFMgMTkgIC8qIE1QRF9FWFBESUdJVFMgPD0gTVBEX1JESUdJVFMrMSAqLworCisjZGVmaW5lIE1QRF9NQVhUUkFOU0ZPUk1fMk4gNDI5NDk2NzI5NlVMTCAgICAgIC8qIDIqKjMyICovCisjZGVmaW5lIE1QRF9NQVhfUFJFQyA5OTk5OTk5OTk5OTk5OTk5OTlMTAorI2RlZmluZSBNUERfTUFYX1BSRUNfTE9HMiA2NAorI2RlZmluZSBNUERfRUxJTUlUICAxMDAwMDAwMDAwMDAwMDAwMDAwTEwKKyNkZWZpbmUgTVBEX01BWF9FTUFYICAgOTk5OTk5OTk5OTk5OTk5OTk5TEwgICAgLyogRUxJTUlULTEgKi8KKyNkZWZpbmUgTVBEX01JTl9FTUlOICAoLTk5OTk5OTk5OTk5OTk5OTk5OUxMKSAgLyogLUVNQVggKi8KKyNkZWZpbmUgTVBEX01JTl9FVElOWSAoTVBEX01JTl9FTUlOLShNUERfTUFYX1BSRUMtMSkpCisjZGVmaW5lIE1QRF9FWFBfSU5GIDIwMDAwMDAwMDAwMDAwMDAwMDFMTAorI2RlZmluZSBNUERfRVhQX0NMQU1QICgtNDAwMDAwMDAwMDAwMDAwMDAwMUxMKQorI2RlZmluZSBNUERfTUFYSU1QT1JUIDEwNTI2MzE1Nzg5NDczNjg0MkwgLyogY2VpbCgoMipNUERfTUFYX1BSRUMpL01QRF9SRElHSVRTKSAqLworCisvKiBjb252ZXJzaW9uIHNwZWNpZmllcnMgKi8KKyNkZWZpbmUgUFJJX21wZF91aW50X3QgUFJJdTY0CisjZGVmaW5lIFBSSV9tcGRfc3NpemVfdCBQUklpNjQKKy8qIEVORCBDT05GSUdfNjQgKi8KKworCisvKiBCRUdJTiBDT05GSUdfMzIgKi8KKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKQorLyogdHlwZXMgZm9yIG1vZHVsYXIgYW5kIGJhc2UgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfVUlOVF9NQVggVUlOVDMyX01BWAorI2RlZmluZSBNUERfQklUU19QRVJfVUlOVCAzMgordHlwZWRlZiB1aW50MzJfdCBtcGRfdWludF90OyAgLyogdW5zaWduZWQgbW9kIHR5cGUgKi8KKworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKyNkZWZpbmUgTVBEX1VVSU5UX01BWCBVSU5UNjRfTUFYCit0eXBlZGVmIHVpbnQ2NF90IG1wZF91dWludF90OyAvKiBkb3VibGUgd2lkdGggdW5zaWduZWQgbW9kIHR5cGUgKi8KKyNlbmRpZgorCisjZGVmaW5lIE1QRF9TSVpFX01BWCBTSVpFX01BWAordHlwZWRlZiBzaXplX3QgbXBkX3NpemVfdDsgLyogdW5zaWduZWQgc2l6ZSB0eXBlICovCisKKy8qIHR5cGUgZm9yIGRlYy0+bGVuLCBkZWMtPmV4cCwgY3R4LT5wcmVjICovCisjZGVmaW5lIE1QRF9TU0laRV9NQVggSU5UMzJfTUFYCisjZGVmaW5lIE1QRF9TU0laRV9NSU4gSU5UMzJfTUlOCit0eXBlZGVmIGludDMyX3QgbXBkX3NzaXplX3Q7CisjZGVmaW5lIF9tcGRfc3RydG9zc2l6ZSBzdHJ0b2wKKworLyogZGVjaW1hbCBhcml0aG1ldGljICovCisjZGVmaW5lIE1QRF9SQURJWCAxMDAwMDAwMDAwVUwgIC8qIDEwKio5ICovCisjZGVmaW5lIE1QRF9SRElHSVRTIDkKKyNkZWZpbmUgTVBEX01BWF9QT1cxMCA5CisjZGVmaW5lIE1QRF9FWFBESUdJVFMgMTAgLyogTVBEX0VYUERJR0lUUyA8PSBNUERfUkRJR0lUUysxICovCisKKyNkZWZpbmUgTVBEX01BWFRSQU5TRk9STV8yTiAzMzU1NDQzMlVMIC8qIDIqKjI1ICovCisjZGVmaW5lIE1QRF9NQVhfUFJFQyA0MjUwMDAwMDBMCisjZGVmaW5lIE1QRF9NQVhfUFJFQ19MT0cyIDMyCisjZGVmaW5lIE1QRF9FTElNSVQgNDI1MDAwMDAxTAorI2RlZmluZSBNUERfTUFYX0VNQVggNDI1MDAwMDAwTCAgICAgICAgLyogRUxJTUlULTEgKi8KKyNkZWZpbmUgTVBEX01JTl9FTUlOICgtNDI1MDAwMDAwTCkgICAgIC8qIC1FTUFYICovCisjZGVmaW5lIE1QRF9NSU5fRVRJTlkgKE1QRF9NSU5fRU1JTi0oTVBEX01BWF9QUkVDLTEpKQorI2RlZmluZSBNUERfRVhQX0lORiAxMDAwMDAwMDAxTCAgICAgIC8qIGFsbG93cyBmb3IgZW1heD05OTk5OTk5OTkgaW4gdGhlIHRlc3RzICovCisjZGVmaW5lIE1QRF9FWFBfQ0xBTVAgKC0yMDAwMDAwMDAxTCkgLyogYWxsb3dzIGZvciBlbWluPS05OTk5OTk5OTkgaW4gdGhlIHRlc3RzICovCisjZGVmaW5lIE1QRF9NQVhJTVBPUlQgOTQ0NDQ0NDVMICAgICAgLyogY2VpbCgoMipNUERfTUFYX1BSRUMpL01QRF9SRElHSVRTKSAqLworCisvKiBjb252ZXJzaW9uIHNwZWNpZmllcnMgKi8KKyNkZWZpbmUgUFJJX21wZF91aW50X3QgUFJJdTMyCisjZGVmaW5lIFBSSV9tcGRfc3NpemVfdCBQUklpMzIKKy8qIEVORCBDT05GSUdfMzIgKi8KKworI2Vsc2UKKyAgI2Vycm9yICJkZWZpbmUgQ09ORklHXzY0IG9yIENPTkZJR18zMiIKKyNlbmRpZgorLyogRU5EIENPTkZJRyAqLworCisKKyNpZiBNUERfU0laRV9NQVggIT0gTVBEX1VJTlRfTUFYCisgICNlcnJvciAidW5zdXBwb3J0ZWQgcGxhdGZvcm06IG5lZWQgbXBkX3NpemVfdCA9PSBtcGRfdWludF90IgorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitlbnVtIHsKKyAgICBNUERfUk9VTkRfVVAsICAgICAgICAgIC8qIHJvdW5kIGF3YXkgZnJvbSAwICAgICAgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfRE9XTiwgICAgICAgIC8qIHJvdW5kIHRvd2FyZCAwICh0cnVuY2F0ZSkgICAgICAgKi8KKyAgICBNUERfUk9VTkRfQ0VJTElORywgICAgIC8qIHJvdW5kIHRvd2FyZCAraW5maW5pdHkgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfRkxPT1IsICAgICAgIC8qIHJvdW5kIHRvd2FyZCAtaW5maW5pdHkgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfSEFMRl9VUCwgICAgIC8qIDAuNSBpcyByb3VuZGVkIHVwICAgICAgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfSEFMRl9ET1dOLCAgIC8qIDAuNSBpcyByb3VuZGVkIGRvd24gICAgICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfSEFMRl9FVkVOLCAgIC8qIDAuNSBpcyByb3VuZGVkIHRvIGV2ZW4gICAgICAgICAgKi8KKyAgICBNUERfUk9VTkRfMDVVUCwgICAgICAgIC8qIHJvdW5kIHplcm8gb3IgZml2ZSBhd2F5IGZyb20gMCAgKi8KKyAgICBNUERfUk9VTkRfVFJVTkMsICAgICAgIC8qIHRydW5jYXRlLCBidXQgc2V0IGluZmluaXR5ICAgICAgKi8KKyAgICBNUERfUk9VTkRfR1VBUkQKK307CisKK2VudW0geyBNUERfQ0xBTVBfREVGQVVMVCwgTVBEX0NMQU1QX0lFRUVfNzU0LCBNUERfQ0xBTVBfR1VBUkQgfTsKKworZXh0ZXJuIGNvbnN0IGNoYXIgKm1wZF9yb3VuZF9zdHJpbmdbTVBEX1JPVU5EX0dVQVJEXTsKK2V4dGVybiBjb25zdCBjaGFyICptcGRfY2xhbXBfc3RyaW5nW01QRF9DTEFNUF9HVUFSRF07CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIG1wZF9zc2l6ZV90IHByZWM7ICAgLyogcHJlY2lzaW9uICovCisgICAgbXBkX3NzaXplX3QgZW1heDsgICAvKiBtYXggcG9zaXRpdmUgZXhwICovCisgICAgbXBkX3NzaXplX3QgZW1pbjsgICAvKiBtaW4gbmVnYXRpdmUgZXhwICovCisgICAgdWludDMyX3QgdHJhcHM7ICAgICAvKiBzdGF0dXMgZXZlbnRzIHRoYXQgc2hvdWxkIGJlIHRyYXBwZWQgKi8KKyAgICB1aW50MzJfdCBzdGF0dXM7ICAgIC8qIHN0YXR1cyBmbGFncyAqLworICAgIHVpbnQzMl90IG5ld3RyYXA7ICAgLyogc2V0IGJ5IG1wZF9hZGRzdGF0dXNfcmFpc2UoKSAqLworICAgIGludCAgICAgIHJvdW5kOyAgICAgLyogcm91bmRpbmcgbW9kZSAqLworICAgIGludCAgICAgIGNsYW1wOyAgICAgLyogY2xhbXAgbW9kZSAqLworICAgIGludCAgICAgIGFsbGNyOyAgICAgLyogYWxsIGZ1bmN0aW9ucyBjb3JyZWN0bHkgcm91bmRlZCAqLworfSBtcGRfY29udGV4dF90OworCisKKy8qIFN0YXR1cyBmbGFncyAqLworI2RlZmluZSBNUERfQ2xhbXBlZCAgICAgICAgICAgICAweDAwMDAwMDAxVQorI2RlZmluZSBNUERfQ29udmVyc2lvbl9zeW50YXggICAweDAwMDAwMDAyVQorI2RlZmluZSBNUERfRGl2aXNpb25fYnlfemVybyAgICAweDAwMDAwMDA0VQorI2RlZmluZSBNUERfRGl2aXNpb25faW1wb3NzaWJsZSAweDAwMDAwMDA4VQorI2RlZmluZSBNUERfRGl2aXNpb25fdW5kZWZpbmVkICAweDAwMDAwMDEwVQorI2RlZmluZSBNUERfRnB1X2Vycm9yICAgICAgICAgICAweDAwMDAwMDIwVQorI2RlZmluZSBNUERfSW5leGFjdCAgICAgICAgICAgICAweDAwMDAwMDQwVQorI2RlZmluZSBNUERfSW52YWxpZF9jb250ZXh0ICAgICAweDAwMDAwMDgwVQorI2RlZmluZSBNUERfSW52YWxpZF9vcGVyYXRpb24gICAweDAwMDAwMTAwVQorI2RlZmluZSBNUERfTWFsbG9jX2Vycm9yICAgICAgICAweDAwMDAwMjAwVQorI2RlZmluZSBNUERfTm90X2ltcGxlbWVudGVkICAgICAweDAwMDAwNDAwVQorI2RlZmluZSBNUERfT3ZlcmZsb3cgICAgICAgICAgICAweDAwMDAwODAwVQorI2RlZmluZSBNUERfUm91bmRlZCAgICAgICAgICAgICAweDAwMDAxMDAwVQorI2RlZmluZSBNUERfU3Vibm9ybWFsICAgICAgICAgICAweDAwMDAyMDAwVQorI2RlZmluZSBNUERfVW5kZXJmbG93ICAgICAgICAgICAweDAwMDA0MDAwVQorI2RlZmluZSBNUERfTWF4X3N0YXR1cyAgICAgICAgICgweDAwMDA4MDAwVS0xVSkKKworLyogQ29uZGl0aW9ucyB0aGF0IHJlc3VsdCBpbiBhbiBJRUVFIDc1NCBleGNlcHRpb24gKi8KKyNkZWZpbmUgTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gKE1QRF9Db252ZXJzaW9uX3N5bnRheCB8ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfRGl2aXNpb25fdW5kZWZpbmVkIHwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9GcHVfZXJyb3IgfCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0ludmFsaWRfY29udGV4dCB8ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfSW52YWxpZF9vcGVyYXRpb24gfCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9NYWxsb2NfZXJyb3IpICAgICAgICAgXAorCisvKiBFcnJvcnMgdGhhdCByZXF1aXJlIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIHRvIGJlIHNldCB0byBOYU4gKi8KKyNkZWZpbmUgTVBEX0Vycm9ycyAoTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gfCBcCisgICAgICAgICAgICAgICAgICAgIE1QRF9EaXZpc2lvbl9ieV96ZXJvKQorCisvKiBEZWZhdWx0IHRyYXBzICovCisjZGVmaW5lIE1QRF9UcmFwcyAoTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24gfCBcCisgICAgICAgICAgICAgICAgICAgTVBEX0RpdmlzaW9uX2J5X3plcm8gfCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgTVBEX092ZXJmbG93IHwgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgTVBEX1VuZGVyZmxvdykKKworLyogT2ZmaWNpYWwgbmFtZSAqLworI2RlZmluZSBNUERfSW5zdWZmaWNpZW50X3N0b3JhZ2UgTVBEX01hbGxvY19lcnJvcgorCisvKiBJRUVFIDc1NCBpbnRlcmNoYW5nZSBmb3JtYXQgY29udGV4dHMgKi8KKyNkZWZpbmUgTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUUyA1MTIgLyogMTYqKGxvZzIoTVBEX01BWF9FTUFYIC8gMyktMykgKi8KKyNkZWZpbmUgTVBEX0RFQ0lNQUwzMiAzMgorI2RlZmluZSBNUERfREVDSU1BTDY0IDY0CisjZGVmaW5lIE1QRF9ERUNJTUFMMTI4IDEyOAorCisKKyNkZWZpbmUgTVBEX01JTkFMTE9DX01JTiAyCisjZGVmaW5lIE1QRF9NSU5BTExPQ19NQVggNjQKK2V4dGVybiBtcGRfc3NpemVfdCBNUERfTUlOQUxMT0M7CitleHRlcm4gdm9pZCAoKiBtcGRfdHJhcGhhbmRsZXIpKG1wZF9jb250ZXh0X3QgKik7Cit2b2lkIG1wZF9kZmx0X3RyYXBoYW5kbGVyKG1wZF9jb250ZXh0X3QgKik7CisKK3ZvaWQgbXBkX3NldG1pbmFsbG9jKG1wZF9zc2l6ZV90IG4pOwordm9pZCBtcGRfaW5pdChtcGRfY29udGV4dF90ICpjdHgsIG1wZF9zc2l6ZV90IHByZWMpOworCit2b2lkIG1wZF9tYXhjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kZWZhdWx0Y29udGV4dChtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYmFzaWNjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2llZWVfY29udGV4dChtcGRfY29udGV4dF90ICpjdHgsIGludCBiaXRzKTsKKworbXBkX3NzaXplX3QgbXBkX2dldHByZWMoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK21wZF9zc2l6ZV90IG1wZF9nZXRlbWF4KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfc3NpemVfdCBtcGRfZ2V0ZW1pbihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9nZXRyb3VuZChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOwordWludDMyX3QgbXBkX2dldHRyYXBzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7Cit1aW50MzJfdCBtcGRfZ2V0c3RhdHVzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2dldGNsYW1wKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2dldGNyKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CisKK2ludCBtcGRfcXNldHByZWMobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBwcmVjKTsKK2ludCBtcGRfcXNldGVtYXgobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWF4KTsKK2ludCBtcGRfcXNldGVtaW4obXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWluKTsKK2ludCBtcGRfcXNldHJvdW5kKG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IG5ld3JvdW5kKTsKK2ludCBtcGRfcXNldHRyYXBzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpOworaW50IG1wZF9xc2V0c3RhdHVzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpOworaW50IG1wZF9xc2V0Y2xhbXAobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYyk7CitpbnQgbXBkX3FzZXRjcihtcGRfY29udGV4dF90ICpjdHgsIGludCBjKTsKK3ZvaWQgbXBkX2FkZHN0YXR1c19yYWlzZShtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIEFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIG1wZF90IGZsYWdzICovCisjZGVmaW5lIE1QRF9QT1MgICAgICAgICAgICAgICAgICgodWludDhfdCkwKQorI2RlZmluZSBNUERfTkVHICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMSkKKyNkZWZpbmUgTVBEX0lORiAgICAgICAgICAgICAgICAgKCh1aW50OF90KTIpCisjZGVmaW5lIE1QRF9OQU4gICAgICAgICAgICAgICAgICgodWludDhfdCk0KQorI2RlZmluZSBNUERfU05BTiAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpOCkKKyNkZWZpbmUgTVBEX1NQRUNJQUwgKE1QRF9JTkZ8TVBEX05BTnxNUERfU05BTikKKyNkZWZpbmUgTVBEX1NUQVRJQyAgICAgICAgICAgICAgKCh1aW50OF90KTE2KQorI2RlZmluZSBNUERfU1RBVElDX0RBVEEgICAgICAgICAoKHVpbnQ4X3QpMzIpCisjZGVmaW5lIE1QRF9TSEFSRURfREFUQSAgICAgICAgICgodWludDhfdCk2NCkKKyNkZWZpbmUgTVBEX0NPTlNUX0RBVEEgICAgICAgICAgKCh1aW50OF90KTEyOCkKKyNkZWZpbmUgTVBEX0RBVEFGTEFHUyAoTVBEX1NUQVRJQ19EQVRBfE1QRF9TSEFSRURfREFUQXxNUERfQ09OU1RfREFUQSkKKworLyogbXBkX3QgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1aW50OF90IGZsYWdzOworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyAgICBtcGRfc3NpemVfdCBkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgbGVuOworICAgIG1wZF9zc2l6ZV90IGFsbG9jOworICAgIG1wZF91aW50X3QgKmRhdGE7Cit9IG1wZF90OworCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIFF1aWV0LCB0aHJlYWQtc2FmZSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIGZvcm1hdCBzcGVjaWZpY2F0aW9uICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbXBkX3NzaXplX3QgbWluX3dpZHRoOyAvKiBtaW5pbXVtIGZpZWxkIHdpZHRoICovCisgICAgbXBkX3NzaXplX3QgcHJlYzsgICAgICAvKiBmcmFjdGlvbiBkaWdpdHMgb3Igc2lnbmlmaWNhbnQgZGlnaXRzICovCisgICAgY2hhciB0eXBlOyAgICAgICAgICAgICAvKiBjb252ZXJzaW9uIHNwZWNpZmllciAqLworICAgIGNoYXIgYWxpZ247ICAgICAgICAgICAgLyogYWxpZ25tZW50ICovCisgICAgY2hhciBzaWduOyAgICAgICAgICAgICAvKiBzaWduIHByaW50aW5nL2FsaWdubWVudCAqLworICAgIGNoYXIgZmlsbFs1XTsgICAgICAgICAgLyogZmlsbCBjaGFyYWN0ZXIgKi8KKyAgICBjb25zdCBjaGFyICpkb3Q7ICAgICAgIC8qIGRlY2ltYWwgcG9pbnQgKi8KKyAgICBjb25zdCBjaGFyICpzZXA7ICAgICAgIC8qIHRob3VzYW5kcyBzZXBhcmF0b3IgKi8KKyAgICBjb25zdCBjaGFyICpncm91cGluZzsgIC8qIGdyb3VwaW5nIG9mIGRpZ2l0cyAqLworfSBtcGRfc3BlY190OworCisvKiBvdXRwdXQgdG8gYSBzdHJpbmcgKi8KK2NoYXIgKm1wZF90b19zY2koY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCk7CitjaGFyICptcGRfdG9fZW5nKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworbXBkX3NzaXplX3QgbXBkX3RvX3NjaV9zaXplKGNoYXIgKipyZXMsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworbXBkX3NzaXplX3QgbXBkX3RvX2VuZ19zaXplKGNoYXIgKipyZXMsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworaW50IG1wZF92YWxpZGF0ZV9sY29udihtcGRfc3BlY190ICpzcGVjKTsKK2ludCBtcGRfcGFyc2VfZm10X3N0cihtcGRfc3BlY190ICpzcGVjLCBjb25zdCBjaGFyICpmbXQsIGludCBjYXBzKTsKK2NoYXIgKiBtcGRfcWZvcm1hdF9zcGVjKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitjaGFyICptcGRfcWZvcm1hdChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBjaGFyICpmbXQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKKyNkZWZpbmUgTVBEX05VTV9GTEFHUyAxNQorI2RlZmluZSBNUERfTUFYX0ZMQUdfU1RSSU5HIDIwOAorI2RlZmluZSBNUERfTUFYX0ZMQUdfTElTVCAoTVBEX01BWF9GTEFHX1NUUklORysxOCkKKyNkZWZpbmUgTVBEX01BWF9TSUdOQUxfTElTVCAxMjEKK2ludCBtcGRfc25wcmludF9mbGFncyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBtcGRfbHNucHJpbnRfZmxhZ3MoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncywgY29uc3QgY2hhciAqZmxhZ19zdHJpbmdbXSk7CitpbnQgbXBkX2xzbnByaW50X3NpZ25hbHMoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncywgY29uc3QgY2hhciAqc2lnbmFsX3N0cmluZ1tdKTsKKworLyogb3V0cHV0IHRvIGEgZmlsZSAqLwordm9pZCBtcGRfZnByaW50KEZJTEUgKmZpbGUsIGNvbnN0IG1wZF90ICpkZWMpOwordm9pZCBtcGRfcHJpbnQoY29uc3QgbXBkX3QgKmRlYyk7CisKKy8qIGFzc2lnbm1lbnQgZnJvbSBhIHN0cmluZyAqLwordm9pZCBtcGRfcXNldF9zdHJpbmcobXBkX3QgKmRlYywgY29uc3QgY2hhciAqcywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworLyogc2V0IHRvIE5hTiB3aXRoIGVycm9yIGZsYWdzICovCit2b2lkIG1wZF9zZXRlcnJvcihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBmbGFncywgdWludDMyX3QgKnN0YXR1cyk7CisvKiBzZXQgYSBzcGVjaWFsIHdpdGggc2lnbiBhbmQgdHlwZSAqLwordm9pZCBtcGRfc2V0c3BlY2lhbChtcGRfdCAqZGVjLCB1aW50OF90IHNpZ24sIHVpbnQ4X3QgdHlwZSk7CisvKiBzZXQgY29lZmZpY2llbnQgdG8gemVybyBvciBhbGwgbmluZXMgKi8KK3ZvaWQgbXBkX3plcm9jb2VmZihtcGRfdCAqcmVzdWx0KTsKK3ZvaWQgbXBkX3FtYXhjb2VmZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisvKiBxdWlldGx5IGFzc2lnbiBhIEMgaW50ZWdlciB0eXBlIHRvIGFuIG1wZF90ICovCit2b2lkIG1wZF9xc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCit2b2lkIG1wZF9xc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworI2VuZGlmCisKKy8qIHF1aWV0bHkgYXNzaWduIGEgQyBpbnRlZ2VyIHR5cGUgdG8gYW4gbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudCAqLwordm9pZCBtcGRfcXNzZXRfc3NpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fzc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3NldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fzc2V0X3UzMihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisvKiBxdWlldGx5IGdldCBhIEMgaW50ZWdlciB0eXBlIGZyb20gYW4gbXBkX3QgKi8KK21wZF9zc2l6ZV90IG1wZF9xZ2V0X3NzaXplKGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3VpbnRfdCBtcGRfcWdldF91aW50KGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3VpbnRfdCBtcGRfcWFic191aW50KGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworCisKKy8qIHF1aWV0IGZ1bmN0aW9ucyAqLworaW50IG1wZF9xY2hlY2tfbmFuKG1wZF90ICpuYW5yZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY2hlY2tfbmFucyhtcGRfdCAqbmFucmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZmluYWxpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworY29uc3QgY2hhciAqIG1wZF9jbGFzcyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKKworaW50IG1wZF9xY29weShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3QgKm1wZF9xbmNvcHkoY29uc3QgbXBkX3QgKmEpOworaW50IG1wZF9xY29weV9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY29weV9uZWdhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY29weV9zaWduKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cyk7CisKK3ZvaWQgbXBkX3FhbmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWludmVydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fsb2diKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW9yKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzY2FsZWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXhvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3NhbWVfcXVhbnR1bShjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworCit2b2lkIG1wZF9xcm90YXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcXNoaWZ0bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cyk7CittcGRfdWludF90IG1wZF9xc2hpZnRyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF91aW50X3QgbXBkX3FzaGlmdHJfaW5wbGFjZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBuKTsKK3ZvaWQgbXBkX3FzaGlmdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2hpZnRuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCitpbnQgbXBkX3FjbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvbXBhcmUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9xY29tcGFyZV9zaWduYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9jbXBfdG90YWwoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKTsKK2ludCBtcGRfY21wX3RvdGFsX21hZyhjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworaW50IG1wZF9jb21wYXJlX3RvdGFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYik7CitpbnQgbXBkX2NvbXBhcmVfdG90YWxfbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYik7CisKK3ZvaWQgbXBkX3Fyb3VuZF90b19pbnR4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJvdW5kX3RvX2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3F0cnVuYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FmbG9vcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FjZWlsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCit2b2lkIG1wZF9xYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW1heChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWF4X21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWluKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtaW5fbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtaW51cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FwbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW5leHRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbmV4dF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW5leHRfdG93YXJkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FxdWFudGl6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlc2NhbGVfZm10KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBleHAsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcmVkdWNlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xYWRkX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW11bF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWZtYShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF90ICpjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdihtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdmludChtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlbShtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlbV9uZWFyKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXBvdyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fwb3dtb2QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsIGNvbnN0IG1wZF90ICptb2QsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWxuMTAobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgcHJlYywgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbG9nMTAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3FydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FpbnZyb290KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisKK3NpemVfdCBtcGRfc2l6ZWluYmFzZShjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYmFzZSk7Cit2b2lkIG1wZF9xaW1wb3J0X3UxNihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MTZfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xaW1wb3J0X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MzJfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitzaXplX3QgbXBkX3FleHBvcnRfdTE2KHVpbnQxNl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqc3JjLCB1aW50MzJfdCAqc3RhdHVzKTsKK3NpemVfdCBtcGRfcWV4cG9ydF91MzIodWludDMyX3QgKipyZGF0YSwgc2l6ZV90IHJsZW4sIHVpbnQzMl90IGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpzcmMsIHVpbnQzMl90ICpzdGF0dXMpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbGxpbmcgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworY2hhciAqIG1wZF9mb3JtYXQoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgY2hhciAqZm10LCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfaW1wb3J0X3UxNihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MTZfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBiYXNlLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfaW1wb3J0X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCB1aW50MzJfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBiYXNlLCBtcGRfY29udGV4dF90ICpjdHgpOworc2l6ZV90IG1wZF9leHBvcnRfdTE2KHVpbnQxNl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLCBjb25zdCBtcGRfdCAqc3JjLCBtcGRfY29udGV4dF90ICpjdHgpOworc2l6ZV90IG1wZF9leHBvcnRfdTMyKHVpbnQzMl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLCBjb25zdCBtcGRfdCAqc3JjLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZmluYWxpemUobXBkX3QgKnJlc3VsdCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfY2hlY2tfbmFuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jaGVja19uYW5zKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NldF9zdHJpbmcobXBkX3QgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX21heGNvZWZmKG1wZF90ICpyZXN1bHQsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgordm9pZCBtcGRfc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisjZW5kaWYKK21wZF9zc2l6ZV90IG1wZF9nZXRfc3NpemUoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdWludF90IG1wZF9nZXRfdWludChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK21wZF91aW50X3QgbXBkX2Fic191aW50KGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYW5kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2NvcHkobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jYW5vbmljYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jb3B5X2FicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2NvcHlfbmVnYXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY29weV9zaWduKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ludmVydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2xvZ2IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9vcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9yb3RhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2NhbGViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NoaWZ0bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK21wZF91aW50X3QgbXBkX3NoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NoaWZ0bihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NoaWZ0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3hvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2NtcChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2NvbXBhcmUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jb21wYXJlX3NpZ25hbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zdWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXYobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2aW50KG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9leHAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9mbWEobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2xuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbG9nMTAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tYXgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWF4X21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9taW4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWluX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9taW51cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX211bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX25leHRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9uZXh0X3BsdXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9uZXh0X3Rvd2FyZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcG93KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcG93bW9kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLCBjb25zdCBtcGRfdCAqbW9kLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcXVhbnRpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVkdWNlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVtKG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9yZW1fbmVhcihtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcm91bmRfdG9faW50eChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JvdW5kX3RvX2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3RydW5jKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZmxvb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jZWlsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3FydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ludnJvb3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIHNwZWNpZmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgQ09ORklHXzY0Cit2b2lkIG1wZF9xc3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNzZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQ2NF90IG1wZF9xZ2V0X2k2NChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK3VpbnQ2NF90IG1wZF9xZ2V0X3U2NChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKKwordm9pZCBtcGRfcWFkZF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW11bF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCit2b2lkIG1wZF9zc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50NjRfdCBtcGRfZ2V0X2k2NChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3VpbnQ2NF90IG1wZF9nZXRfdTY0KGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworCit2b2lkIG1wZF9hZGRfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hZGRfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdl91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWxfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOworI2Vsc2UKK2ludDMyX3QgbXBkX3FnZXRfaTMyKGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOwordWludDMyX3QgbXBkX3FnZXRfdTMyKGNvbnN0IG1wZF90ICpkZWMsIHVpbnQzMl90ICpzdGF0dXMpOworaW50MzJfdCBtcGRfZ2V0X2kzMihjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3VpbnQzMl90IG1wZF9nZXRfdTMyKGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBHZXQgYXR0cmlidXRlcyBvZiBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX2FkamV4cChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfZXRpbnkoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfZXRvcChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworRVhUSU5MSU5FIG1wZF91aW50X3QgbXBkX21zd29yZChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX3dvcmRfZGlnaXRzKG1wZF91aW50X3Qgd29yZCk7CisvKiBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIGEgd29yZCAqLworRVhUSU5MSU5FIG1wZF91aW50X3QgbXBkX21zZChtcGRfdWludF90IHdvcmQpOworLyogbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgYSB3b3JkICovCitFWFRJTkxJTkUgbXBkX3VpbnRfdCBtcGRfbHNkKG1wZF91aW50X3Qgd29yZCk7CisvKiBjb2VmZmljaWVudCBzaXplIG5lZWRlZCB0byBzdG9yZSAnZGlnaXRzJyAqLworRVhUSU5MSU5FIG1wZF9zc2l6ZV90IG1wZF9kaWdpdHNfdG9fc2l6ZShtcGRfc3NpemVfdCBkaWdpdHMpOworLyogbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXhwb25lbnQsIHVuZGVmaW5lZCBmb3IgTVBEX1NTSVpFX01JTiAqLworRVhUSU5MSU5FIGludCBtcGRfZXhwX2RpZ2l0cyhtcGRfc3NpemVfdCBleHApOworRVhUSU5MSU5FIGludCBtcGRfaXNjYW5vbmljYWwoY29uc3QgbXBkX3QgKmRlYyBVTlVTRUQpOworRVhUSU5MSU5FIGludCBtcGRfaXNmaW5pdGUoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc2luZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNpbnRlZ2VyKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNuYW4oY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc25lZ2F0aXZlKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNwb3NpdGl2ZShjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzcW5hbihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc2lnbmVkKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzbmFuKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzcGVjaWFsKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXN6ZXJvKGNvbnN0IG1wZF90ICpkZWMpOworLyogdW5kZWZpbmVkIGZvciBzcGVjaWFsIG51bWJlcnMgKi8KK0VYVElOTElORSBpbnQgbXBkX2lzemVyb2NvZWZmKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNub3JtYWwoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK0VYVElOTElORSBpbnQgbXBkX2lzc3Vibm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CisvKiBvZGQgd29yZCAqLworRVhUSU5MSU5FIGludCBtcGRfaXNvZGR3b3JkKG1wZF91aW50X3Qgd29yZCk7CisvKiBvZGQgY29lZmZpY2llbnQgKi8KK0VYVElOTElORSBpbnQgbXBkX2lzb2RkY29lZmYoY29uc3QgbXBkX3QgKmRlYyk7CisvKiBvZGQgZGVjaW1hbCwgb25seSBkZWZpbmVkIGZvciBpbnRlZ2VycyAqLworaW50IG1wZF9pc29kZChjb25zdCBtcGRfdCAqZGVjKTsKKy8qIGV2ZW4gZGVjaW1hbCwgb25seSBkZWZpbmVkIGZvciBpbnRlZ2VycyAqLworaW50IG1wZF9pc2V2ZW4oY29uc3QgbXBkX3QgKmRlYyk7CisvKiAwIGlmIGRlYyBpcyBwb3NpdGl2ZSwgMSBpZiBkZWMgaXMgbmVnYXRpdmUgKi8KK0VYVElOTElORSB1aW50OF90IG1wZF9zaWduKGNvbnN0IG1wZF90ICpkZWMpOworLyogMSBpZiBkZWMgaXMgcG9zaXRpdmUsIC0xIGlmIGRlYyBpcyBuZWdhdGl2ZSAqLworRVhUSU5MSU5FIGludCBtcGRfYXJpdGhfc2lnbihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBsb25nIG1wZF9yYWRpeCh2b2lkKTsKK0VYVElOTElORSBpbnQgbXBkX2lzZHluYW1pYyhtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc3RhdGljKG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNkeW5hbWljX2RhdGEobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3N0YXRpY19kYXRhKG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzaGFyZWRfZGF0YShtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzY29uc3RfZGF0YShtcGRfdCAqZGVjKTsKK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfdHJhaWxfemVyb3MoY29uc3QgbXBkX3QgKmRlYyk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXR0cmlidXRlcyBvZiBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBzZXQgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIGluIHRoZSBjb2VmZmljaWVudCAqLworRVhUSU5MSU5FIHZvaWQgbXBkX3NldGRpZ2l0cyhtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc2lnbihtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24pOworLyogY29weSBzaWduIGZyb20gYW5vdGhlciBkZWNpbWFsICovCitFWFRJTkxJTkUgdm9pZCBtcGRfc2lnbmNweShtcGRfdCAqcmVzdWx0LCBtcGRfdCAqYSk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2luZmluaXR5KG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9xbmFuKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9zbmFuKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9uZWdhdGl2ZShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfcG9zaXRpdmUobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2R5bmFtaWMobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3N0YXRpYyhtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfZHluYW1pY19kYXRhKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9zdGF0aWNfZGF0YShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc2hhcmVkX2RhdGEobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2NvbnN0X2RhdGEobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfY2xlYXJfZmxhZ3MobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2ZsYWdzKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3QgZmxhZ3MpOworRVhUSU5MSU5FIHZvaWQgbXBkX2NvcHlfZmxhZ3MobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yIE1hY3JvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBtcGRfZXJyX2ZhdGFsKC4uLikgXAorICAgIGRvIHtmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBlcnJvcjogIiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgX19WQV9BUkdTX18pOyAgZnB1dGMoJ1xuJywgc3RkZXJyKTsgICAgXAorICAgICAgICBhYm9ydCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIG1wZF9lcnJfd2FybiguLi4pIFwKKyAgICBkbyB7ZnByaW50ZihzdGRlcnIsICIlczolZDogd2FybmluZzogIiwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgX19WQV9BUkdTX18pOyBmcHV0YygnXG4nLCBzdGRlcnIpOyAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5IGhhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2V4dGVybiB2b2lkICooKiBtcGRfbWFsbG9jZnVuYykoc2l6ZV90IHNpemUpOworZXh0ZXJuIHZvaWQgKigqIG1wZF9jYWxsb2NmdW5jKShzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKK2V4dGVybiB2b2lkICooKiBtcGRfcmVhbGxvY2Z1bmMpKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworZXh0ZXJuIHZvaWQgKCogbXBkX2ZyZWUpKHZvaWQgKnB0cik7CisKK3ZvaWQgKm1wZF9jYWxsb2NmdW5jX2VtKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpOworCit2b2lkICptcGRfYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKTsKK3ZvaWQgKm1wZF9jYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKTsKK3ZvaWQgKm1wZF9yZWFsbG9jKHZvaWQgKnB0ciwgbXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplLCB1aW50OF90ICplcnIpOwordm9pZCAqbXBkX3NoX2FsbG9jKG1wZF9zaXplX3Qgc3RydWN0X3NpemUsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSk7CisKK21wZF90ICptcGRfcW5ldyh2b2lkKTsKK21wZF90ICptcGRfbmV3KG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdCAqbXBkX3FuZXdfc2l6ZShtcGRfc3NpemVfdCBzaXplKTsKK3ZvaWQgbXBkX2RlbChtcGRfdCAqZGVjKTsKKwordm9pZCBtcGRfdWludF96ZXJvKG1wZF91aW50X3QgKmRlc3QsIG1wZF9zaXplX3QgbGVuKTsKK2ludCBtcGRfcXJlc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcXJlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfbWluYWxsb2MobXBkX3QgKnJlc3VsdCk7CisKK2ludCBtcGRfcmVzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX3Jlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIG1wZF9jb250ZXh0X3QgKmN0eCk7CisKKworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX0VORCkgLyogcmVzdG9yZSBwcmV2aW91cyBzY29wZSBydWxlcyAqLworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvKiBFTkQgZXh0ZXJuICJDIiAqLworI2VuZGlmCisKKworI2VuZGlmIC8qIE1QREVDSU1BTF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGNlNmRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuYwpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKworCisvKiBCaWdudW06IEluaXRpYWxpemUgdGhlIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLiAqLworCisKKy8qCisgKiBSZXR1cm4gdGhlIG50aCByb290IG9mIHVuaXR5IGluIEYocCkuIFRoaXMgY29ycmVzcG9uZHMgdG8gZSoqKCgyKnBpKmkpL24pCisgKiBpbiB0aGUgRm91cmllciB0cmFuc2Zvcm0uIFdlIGhhdmUgdyoqbiA9PSAxIChtb2QgcCkuCisgKiAgICBuIDo9IHRyYW5zZm9ybSBsZW5ndGguCisgKiAgICBzaWduIDo9IC0xIGZvciBmb3J3YXJkIHRyYW5zZm9ybSwgMSBmb3IgYmFja3dhcmQgdHJhbnNmb3JtLgorICogICAgbW9kbnVtIDo9IG9uZSBvZiB7UDEsIFAyLCBQM30uCisgKi8KK21wZF91aW50X3QKK19tcGRfZ2V0a2VybmVsKG1wZF91aW50X3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pCit7CisgICAgbXBkX3VpbnRfdCB1bW9kLCBwLCByLCB4aTsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIHIgPSBtcGRfcm9vdHNbbW9kbnVtXTsgLyogcHJpbWl0aXZlIHJvb3Qgb2YgRihwKSAqLworICAgIHAgPSB1bW9kOworICAgIHhpID0gKHAtMSkgLyBuOworCisgICAgaWYgKHNpZ24gPT0gLTEpCisgICAgICAgIHJldHVybiBQT1dNT0QociwgKHAtMS14aSkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBPV01PRChyLCB4aSk7Cit9CisKKy8qCisgKiBJbml0aWFsaXplIGFuZCByZXR1cm4gdHJhbnNmb3JtIHBhcmFtZXRlcnMuCisgKiAgICBuIDo9IHRyYW5zZm9ybSBsZW5ndGguCisgKiAgICBzaWduIDo9IC0xIGZvciBmb3J3YXJkIHRyYW5zZm9ybSwgMSBmb3IgYmFja3dhcmQgdHJhbnNmb3JtLgorICogICAgbW9kbnVtIDo9IG9uZSBvZiB7UDEsIFAyLCBQM30uCisgKi8KK3N0cnVjdCBmbnRfcGFyYW1zICoKK19tcGRfaW5pdF9mbnRfcGFyYW1zKG1wZF9zaXplX3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pCit7CisgICAgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXM7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBrZXJuZWwsIHc7CisgICAgbXBkX3VpbnRfdCBpOworICAgIG1wZF9zaXplX3QgbmhhbGY7CisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChzaWduID09IC0xIHx8IHNpZ24gPT0gMSk7CisgICAgYXNzZXJ0KFAxIDw9IG1vZG51bSAmJiBtb2RudW0gPD0gUDMpOworCisgICAgbmhhbGYgPSBuLzI7CisgICAgdHBhcmFtcyA9IG1wZF9zaF9hbGxvYyhzaXplb2YgKnRwYXJhbXMsIG5oYWxmLCBzaXplb2YgKG1wZF91aW50X3QpKTsKKyAgICBpZiAodHBhcmFtcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCBzaWduLCBtb2RudW0pOworCisgICAgdHBhcmFtcy0+bW9kbnVtID0gbW9kbnVtOworICAgIHRwYXJhbXMtPm1vZHVsdXMgPSB1bW9kOworICAgIHRwYXJhbXMtPmtlcm5lbCA9IGtlcm5lbDsKKworICAgIC8qIHd0YWJsZVtdIDo9IHcqKjAsIHcqKjEsIC4uLiwgdyoqKG5oYWxmLTEpICovCisgICAgdyA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IG5oYWxmOyBpKyspIHsKKyAgICAgICAgdHBhcmFtcy0+d3RhYmxlW2ldID0gdzsKKyAgICAgICAgdyA9IE1VTE1PRCh3LCBrZXJuZWwpOworICAgIH0KKworICAgIHJldHVybiB0cGFyYW1zOworfQorCisvKiBJbml0aWFsaXplIHd0YWJsZSBvZiBzaXplIHRocmVlLiAqLwordm9pZAorX21wZF9pbml0X3czdGFibGUobXBkX3VpbnRfdCB3M3RhYmxlWzNdLCBpbnQgc2lnbiwgaW50IG1vZG51bSkKK3sKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IGtlcm5lbDsKKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbCgzLCBzaWduLCBtb2RudW0pOworCisgICAgdzN0YWJsZVswXSA9IDE7CisgICAgdzN0YWJsZVsxXSA9IGtlcm5lbDsKKyAgICB3M3RhYmxlWzJdID0gUE9XTU9EKGtlcm5lbCwgMik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5MjI1NAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBOVU1CRVJfVEhFT1JZX0gKKyNkZWZpbmUgTlVNQkVSX1RIRU9SWV9ICisKKworI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCisvKiB0cmFuc2Zvcm0gcGFyYW1ldGVycyAqLworc3RydWN0IGZudF9wYXJhbXMgeworICAgIGludCBtb2RudW07CisgICAgbXBkX3VpbnRfdCBtb2R1bHVzOworICAgIG1wZF91aW50X3Qga2VybmVsOworICAgIG1wZF91aW50X3Qgd3RhYmxlW107Cit9OworCisKK21wZF91aW50X3QgX21wZF9nZXRrZXJuZWwobXBkX3VpbnRfdCBuLCBpbnQgc2lnbiwgaW50IG1vZG51bSk7CitzdHJ1Y3QgZm50X3BhcmFtcyAqX21wZF9pbml0X2ZudF9wYXJhbXMobXBkX3NpemVfdCBuLCBpbnQgc2lnbiwgaW50IG1vZG51bSk7Cit2b2lkIF9tcGRfaW5pdF93M3RhYmxlKG1wZF91aW50X3QgdzN0YWJsZVszXSwgaW50IHNpZ24sIGludCBtb2RudW0pOworCisKKyNpZmRlZiBQUFJPCitzdGF0aWMgaW5saW5lIHZvaWQKK3Bwcm9fc2V0bW9kdWx1cyhpbnQgbW9kbnVtLCBtcGRfdWludF90ICp1bW9kLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90IGRpbnZtb2RbM10pCit7CisgICAgKmRtb2QgPSAqdW1vZCA9ICBtcGRfbW9kdWxpW21vZG51bV07CisgICAgZGludm1vZFswXSA9IG1wZF9pbnZtb2R1bGlbbW9kbnVtXVswXTsKKyAgICBkaW52bW9kWzFdID0gbXBkX2ludm1vZHVsaVttb2RudW1dWzFdOworICAgIGRpbnZtb2RbMl0gPSBtcGRfaW52bW9kdWxpW21vZG51bV1bMl07Cit9CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkCitzdGRfc2V0bW9kdWx1cyhpbnQgbW9kbnVtLCBtcGRfdWludF90ICp1bW9kKQoreworICAgICp1bW9kID0gIG1wZF9tb2R1bGlbbW9kbnVtXTsKK30KKyNlbmRpZgorCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDU0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYwpAQCAtMCwwICsxLDIxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImRpZnJhZGl4Mi5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInRyYW5zcG9zZS5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgInNpeHN0ZXAuaCIKKworCisvKiBCaWdudW06IENhY2hlIGVmZmljaWVudCBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gZm9yIGFycmF5cyBvZiB0aGUKKyAgIGZvcm0gMioqbiAoU2VlIGxpdGVyYXR1cmUvc2l4LXN0ZXAudHh0KS4gKi8KKworCisvKiBmb3J3YXJkIHRyYW5zZm9ybSB3aXRoIHNpZ24gPSAtMSAqLworaW50CitzaXhfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworICAgIG1wZF9zaXplX3QgbG9nMm4sIEMsIFI7CisgICAgbXBkX3VpbnRfdCBrZXJuZWw7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCAqeCwgdzAsIHcxLCB3c3RlcDsKKyAgICBtcGRfc2l6ZV90IGksIGs7CisKKworICAgIGFzc2VydChpc3Bvd2VyMihuKSk7CisgICAgYXNzZXJ0KG4gPj0gMTYpOworICAgIGFzc2VydChuIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisgICAgbG9nMm4gPSBtcGRfYnNyKG4pOworICAgIEMgPSAoKG1wZF9zaXplX3QpMSkgPDwgKGxvZzJuIC8gMik7ICAvKiBudW1iZXIgb2YgY29sdW1ucyAqLworICAgIFIgPSAoKG1wZF9zaXplX3QpMSkgPDwgKGxvZzJuIC0gKGxvZzJuIC8gMikpOyAvKiBudW1iZXIgb2Ygcm93cyAqLworCisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIFIsIEMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIExlbmd0aCBSIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhSLCAtMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBSKSB7CisgICAgICAgIGZudF9kaWYyKHgsIFIsIHRwYXJhbXMpOworICAgIH0KKworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgQywgUikpIHsKKyAgICAgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMraykgYnkgcioqKGkqaykuICovCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIC0xLCBtb2RudW0pOworICAgIGZvciAoaSA9IDE7IGkgPCBSOyBpKyspIHsKKyAgICAgICAgdzAgPSAxOyAgICAgICAgICAgICAgICAgIC8qIHIqKihpKjApOiBpbml0aWFsIHZhbHVlIGZvciBrPTAgKi8KKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsgIC8qIHIqKihpKjEpOiBpbml0aWFsIHZhbHVlIGZvciBrPTEgKi8KKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsgIC8qIHIqKigyKmkpICovCisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDOyBrICs9IDIpIHsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDAgPSBhW2kqQytrXTsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDEgPSBhW2kqQytrKzFdOworICAgICAgICAgICAgTVVMTU9EMigmeDAsIHcwLCAmeDEsIHcxKTsKKyAgICAgICAgICAgIE1VTE1PRDJDKCZ3MCwgJncxLCB3c3RlcCk7ICAvKiByKiooaSooaysyKSkgPSByKiooaSprKSAqIHIqKigyKmkpICovCisgICAgICAgICAgICBhW2kqQytrXSA9IHgwOworICAgICAgICAgICAgYVtpKkMraysxXSA9IHgxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTGVuZ3RoIEMgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGlmIChDICE9IFIpIHsKKyAgICAgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgICAgIGlmICgodHBhcmFtcyA9IF9tcGRfaW5pdF9mbnRfcGFyYW1zKEMsIC0xLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKHggPSBhOyB4IDwgYStuOyB4ICs9IEMpIHsKKyAgICAgICAgZm50X2RpZjIoeCwgQywgdHBhcmFtcyk7CisgICAgfQorICAgIG1wZF9mcmVlKHRwYXJhbXMpOworCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBSLCBDKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiAxOworfQorCisKKy8qIHJldmVyc2UgdHJhbnNmb3JtLCBzaWduID0gMSAqLworaW50CitpbnZfc2l4X3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKyAgICBtcGRfc2l6ZV90IGxvZzJuLCBDLCBSOworICAgIG1wZF91aW50X3Qga2VybmVsOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgKngsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDE2KTsKKyAgICBhc3NlcnQobiA8PSBNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworICAgIGxvZzJuID0gbXBkX2JzcihuKTsKKyAgICBDID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAvIDIpOyAvKiBudW1iZXIgb2YgY29sdW1ucyAqLworICAgIFIgPSAoKG1wZF9zaXplX3QpMSkgPDwgKGxvZzJuIC0gKGxvZzJuIC8gMikpOyAvKiBudW1iZXIgb2Ygcm93cyAqLworCisKKyNpZiAwCisgICAgLyogQW4gdW5vcmRlcmVkIHRyYW5zZm9ybSBpcyBzdWZmaWNpZW50IGZvciBjb252b2x1dGlvbi4gKi8KKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBDLCBSKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIC8qIExlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhDLCAxLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKHggPSBhOyB4IDwgYStuOyB4ICs9IEMpIHsKKyAgICAgICAgZm50X2RpZjIoeCwgQywgdHBhcmFtcyk7CisgICAgfQorCisgICAgLyogTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytrKSBieSByKiooaSprKS4gKi8KKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAga2VybmVsID0gX21wZF9nZXRrZXJuZWwobiwgMSwgbW9kbnVtKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUjsgaSsrKSB7CisgICAgICAgIHcwID0gMTsKKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsKKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IEM7IGsgKz0gMikgeworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGFbaSpDK2tdOworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGFbaSpDK2srMV07CisgICAgICAgICAgICBNVUxNT0QyKCZ4MCwgdzAsICZ4MSwgdzEpOworICAgICAgICAgICAgTVVMTU9EMkMoJncwLCAmdzEsIHdzdGVwKTsKKyAgICAgICAgICAgIGFbaSpDK2tdID0geDA7CisgICAgICAgICAgICBhW2kqQytrKzFdID0geDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIFIsIEMpKSB7CisgICAgICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBMZW5ndGggUiB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgaWYgKFIgIT0gQykgeworICAgICAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKyAgICAgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMoUiwgMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBSKSB7CisgICAgICAgIGZudF9kaWYyKHgsIFIsIHRwYXJhbXMpOworICAgIH0KKyAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgQywgUikpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDY3MDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBTSVhfU1RFUF9ICisjZGVmaW5lIFNJWF9TVEVQX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworaW50IHNpeF9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IGludl9zaXhfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTVkNGI2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYwpAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgInRyYW5zcG9zZS5oIgorCisKKyNkZWZpbmUgQlVGU0laRSA0MDk2CisjZGVmaW5lIFNJREUgMTI4CisKKworLyogQmlnbnVtOiBUaGUgdHJhbnNwb3NlIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3IgdmVyeSBsYXJnZSB0cmFuc2Zvcm1zCisgICBpbiBzaXhzdGVwLmMgYW5kIGZvdXJzdGVwLmMuICovCisKKworLyogRGVmaW5pdGlvbiBvZiB0aGUgbWF0cml4IHRyYW5zcG9zZSAqLwordm9pZAorc3RkX3RyYW5zKG1wZF91aW50X3QgZGVzdFtdLCBtcGRfdWludF90IHNyY1tdLCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scykKK3sKKyAgICBtcGRfc2l6ZV90IGlkZXN0LCBpc3JjOworICAgIG1wZF9zaXplX3QgciwgYzsKKworICAgIGZvciAociA9IDA7IHIgPCByb3dzOyByKyspIHsKKyAgICAgICAgaXNyYyA9IHIgKiBjb2xzOworICAgICAgICBpZGVzdCA9IHI7CisgICAgICAgIGZvciAoYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKKyAgICAgICAgICAgIGRlc3RbaWRlc3RdID0gc3JjW2lzcmNdOworICAgICAgICAgICAgaXNyYyArPSAxOworICAgICAgICAgICAgaWRlc3QgKz0gcm93czsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFN3YXAgaGFsZi1yb3dzIG9mIDJebiAqICgyKjJebikgbWF0cml4LgorICogRk9SV0FSRF9DWUNMRTogZXZlbi9vZGQgcGVybXV0YXRpb24gb2YgdGhlIGhhbGZyb3dzLgorICogQkFDS1dBUkRfQ1lDTEU6IHJldmVyc2UgdGhlIGV2ZW4vb2RkIHBlcm11dGF0aW9uLgorICovCitzdGF0aWMgaW50Citzd2FwX2hhbGZyb3dzX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scywgaW50IGRpcikKK3sKKyAgICBtcGRfdWludF90IGJ1ZjFbQlVGU0laRV07CisgICAgbXBkX3VpbnRfdCBidWYyW0JVRlNJWkVdOworICAgIG1wZF91aW50X3QgKnJlYWRidWYsICp3cml0ZWJ1ZiwgKmhwOworICAgIG1wZF9zaXplX3QgKmRvbmUsIGRiaXRzOworICAgIG1wZF9zaXplX3QgYiA9IEJVRlNJWkUsIHN0cmlkZTsKKyAgICBtcGRfc2l6ZV90IGhuLCBobWF4OyAvKiBoYWxmcm93IG51bWJlciAqLworICAgIG1wZF9zaXplX3QgbSwgcj0wOworICAgIG1wZF9zaXplX3Qgb2Zmc2V0OworICAgIG1wZF9zaXplX3QgbmV4dDsKKworCisgICAgYXNzZXJ0KGNvbHMgPT0gbXVsX3NpemVfdCgyLCByb3dzKSk7CisKKyAgICBpZiAoZGlyID09IEZPUldBUkRfQ1lDTEUpIHsKKyAgICAgICAgciA9IHJvd3M7CisgICAgfQorICAgIGVsc2UgaWYgKGRpciA9PSBCQUNLV0FSRF9DWUNMRSkgeworICAgICAgICByID0gMjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICBtID0gY29scyAtIDE7CisgICAgaG1heCA9IHJvd3M7IC8qIGN5Y2xlcyBzdGFydCBhdCBvZGQgaGFsZnJvd3MgKi8KKyAgICBkYml0cyA9IDggKiBzaXplb2YgKmRvbmU7CisgICAgaWYgKChkb25lID0gbXBkX2NhbGxvYyhobWF4LyhzaXplb2YgKmRvbmUpICsgMSwgc2l6ZW9mICpkb25lKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmb3IgKGhuID0gMTsgaG4gPD0gaG1heDsgaG4gKz0gMikgeworCisgICAgICAgIGlmIChkb25lW2huL2RiaXRzXSAmIG1wZF9iaXRzW2huJWRiaXRzXSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICByZWFkYnVmID0gYnVmMTsgd3JpdGVidWYgPSBidWYyOworCisgICAgICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgY29scy8yOyBvZmZzZXQgKz0gYikgeworCisgICAgICAgICAgICBzdHJpZGUgPSAob2Zmc2V0ICsgYiA8IGNvbHMvMikgPyBiIDogY29scy8yLW9mZnNldDsKKworICAgICAgICAgICAgaHAgPSBtYXRyaXggKyBobipjb2xzLzI7CisgICAgICAgICAgICBtZW1jcHkocmVhZGJ1ZiwgaHArb2Zmc2V0LCBzdHJpZGUqKHNpemVvZiAqcmVhZGJ1ZikpOworICAgICAgICAgICAgcG9pbnRlcnN3YXAoJnJlYWRidWYsICZ3cml0ZWJ1Zik7CisKKyAgICAgICAgICAgIG5leHQgPSBtdWxtb2Rfc2l6ZV90KGhuLCByLCBtKTsKKyAgICAgICAgICAgIGhwID0gbWF0cml4ICsgbmV4dCpjb2xzLzI7CisKKyAgICAgICAgICAgIHdoaWxlIChuZXh0ICE9IGhuKSB7CisKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVhZGJ1ZiwgaHArb2Zmc2V0LCBzdHJpZGUqKHNpemVvZiAqcmVhZGJ1ZikpOworICAgICAgICAgICAgICAgIG1lbWNweShocCtvZmZzZXQsIHdyaXRlYnVmLCBzdHJpZGUqKHNpemVvZiAqd3JpdGVidWYpKTsKKyAgICAgICAgICAgICAgICBwb2ludGVyc3dhcCgmcmVhZGJ1ZiwgJndyaXRlYnVmKTsKKworICAgICAgICAgICAgICAgIGRvbmVbbmV4dC9kYml0c10gfD0gbXBkX2JpdHNbbmV4dCVkYml0c107CisKKyAgICAgICAgICAgICAgICBuZXh0ID0gbXVsbW9kX3NpemVfdChuZXh0LCByLCBtKTsKKyAgICAgICAgICAgICAgICAgICAgaHAgPSBtYXRyaXggKyBuZXh0KmNvbHMvMjsKKworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZW1jcHkoaHArb2Zmc2V0LCB3cml0ZWJ1Ziwgc3RyaWRlKihzaXplb2YgKndyaXRlYnVmKSk7CisKKyAgICAgICAgICAgIGRvbmVbaG4vZGJpdHNdIHw9IG1wZF9iaXRzW2huJWRiaXRzXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9mcmVlKGRvbmUpOworICAgIHJldHVybiAxOworfQorCisvKiBJbi1wbGFjZSB0cmFuc3Bvc2Ugb2YgYSBzcXVhcmUgbWF0cml4ICovCitzdGF0aWMgaW5saW5lIHZvaWQKK3NxdWFyZXRyYW5zKG1wZF91aW50X3QgKmJ1ZiwgbXBkX3NpemVfdCBjb2xzKQoreworICAgIG1wZF91aW50X3QgdG1wOworICAgIG1wZF9zaXplX3QgaWRlc3QsIGlzcmM7CisgICAgbXBkX3NpemVfdCByLCBjOworCisgICAgZm9yIChyID0gMDsgciA8IGNvbHM7IHIrKykgeworICAgICAgICBjID0gcisxOworICAgICAgICBpc3JjID0gcipjb2xzICsgYzsKKyAgICAgICAgaWRlc3QgPSBjKmNvbHMgKyByOworICAgICAgICBmb3IgKGMgPSByKzE7IGMgPCBjb2xzOyBjKyspIHsKKyAgICAgICAgICAgIHRtcCA9IGJ1Zltpc3JjXTsKKyAgICAgICAgICAgIGJ1Zltpc3JjXSA9IGJ1ZltpZGVzdF07CisgICAgICAgICAgICBidWZbaWRlc3RdID0gdG1wOworICAgICAgICAgICAgaXNyYyArPSAxOworICAgICAgICAgICAgaWRlc3QgKz0gY29sczsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFRyYW5zcG9zZSAyXm4gKiAyXm4gbWF0cml4LiBGb3IgY2FjaGUgZWZmaWNpZW5jeSwgdGhlIG1hdHJpeCBpcyBzcGxpdCBpbnRvCisgKiBzcXVhcmUgYmxvY2tzIHdpdGggc2lkZSBsZW5ndGggJ1NJREUnLiBGaXJzdCwgdGhlIGJsb2NrcyBhcmUgdHJhbnNwb3NlZCwKKyAqIHRoZW4gYSBzcXVhcmUgdHJhbnBvc2l0aW9uIGlzIGRvbmUgb24gZWFjaCBpbmRpdmlkdWFsIGJsb2NrLgorICovCitzdGF0aWMgdm9pZAorc3F1YXJldHJhbnNfcG93MihtcGRfdWludF90ICptYXRyaXgsIG1wZF9zaXplX3Qgc2l6ZSkKK3sKKyAgICBtcGRfdWludF90IGJ1ZjFbU0lERSpTSURFXTsKKyAgICBtcGRfdWludF90IGJ1ZjJbU0lERSpTSURFXTsKKyAgICBtcGRfdWludF90ICp0bywgKmZyb207CisgICAgbXBkX3NpemVfdCBiID0gc2l6ZTsKKyAgICBtcGRfc2l6ZV90IHIsIGM7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgd2hpbGUgKGIgPiBTSURFKSBiID4+PSAxOworCisgICAgZm9yIChyID0gMDsgciA8IHNpemU7IHIgKz0gYikgeworCisgICAgICAgIGZvciAoYyA9IHI7IGMgPCBzaXplOyBjICs9IGIpIHsKKworICAgICAgICAgICAgZnJvbSA9IG1hdHJpeCArIHIqc2l6ZSArIGM7CisgICAgICAgICAgICB0byA9IGJ1ZjE7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBiKihzaXplb2YgKnRvKSk7CisgICAgICAgICAgICAgICAgZnJvbSArPSBzaXplOworICAgICAgICAgICAgICAgIHRvICs9IGI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcXVhcmV0cmFucyhidWYxLCBiKTsKKworICAgICAgICAgICAgaWYgKHIgPT0gYykgeworICAgICAgICAgICAgICAgIHRvID0gbWF0cml4ICsgcipzaXplICsgYzsKKyAgICAgICAgICAgICAgICBmcm9tID0gYnVmMTsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgICAgICBmcm9tICs9IGI7CisgICAgICAgICAgICAgICAgICAgIHRvICs9IHNpemU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZnJvbSA9IG1hdHJpeCArIGMqc2l6ZSArIHI7CisgICAgICAgICAgICAgICAgdG8gPSBidWYyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBiKihzaXplb2YgKnRvKSk7CisgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgdG8gKz0gYjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3F1YXJldHJhbnMoYnVmMiwgYik7CisKKyAgICAgICAgICAgICAgICB0byA9IG1hdHJpeCArIGMqc2l6ZSArIHI7CisgICAgICAgICAgICAgICAgZnJvbSA9IGJ1ZjE7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSArPSBiOworICAgICAgICAgICAgICAgICAgICB0byArPSBzaXplOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRvID0gbWF0cml4ICsgcipzaXplICsgYzsKKyAgICAgICAgICAgICAgICBmcm9tID0gYnVmMjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgICAgICBmcm9tICs9IGI7CisgICAgICAgICAgICAgICAgICAgIHRvICs9IHNpemU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCit9CisKKy8qCisgKiBJbi1wbGFjZSB0cmFuc3Bvc2l0aW9uIG9mIGEgMl5uIHggMl5uIG9yIGEgMl5uIHggKDIqMl5uKQorICogb3IgYSAoMioyXm4pIHggMl5uIG1hdHJpeC4KKyAqLworaW50Cit0cmFuc3Bvc2VfcG93MihtcGRfdWludF90ICptYXRyaXgsIG1wZF9zaXplX3Qgcm93cywgbXBkX3NpemVfdCBjb2xzKQoreworICAgIG1wZF9zaXplX3Qgc2l6ZSA9IG11bF9zaXplX3Qocm93cywgY29scyk7CisKKyAgICBhc3NlcnQoaXNwb3dlcjIocm93cykpOworICAgIGFzc2VydChpc3Bvd2VyMihjb2xzKSk7CisKKyAgICBpZiAoY29scyA9PSByb3dzKSB7CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4LCByb3dzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoY29scyA9PSBtdWxfc2l6ZV90KDIsIHJvd3MpKSB7CisgICAgICAgIGlmICghc3dhcF9oYWxmcm93c19wb3cyKG1hdHJpeCwgcm93cywgY29scywgRk9SV0FSRF9DWUNMRSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4LCByb3dzKTsKKyAgICAgICAgc3F1YXJldHJhbnNfcG93MihtYXRyaXgrKHNpemUvMiksIHJvd3MpOworICAgIH0KKyAgICBlbHNlIGlmIChyb3dzID09IG11bF9zaXplX3QoMiwgY29scykpIHsKKyAgICAgICAgc3F1YXJldHJhbnNfcG93MihtYXRyaXgsIGNvbHMpOworICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCsoc2l6ZS8yKSwgY29scyk7CisgICAgICAgIGlmICghc3dhcF9oYWxmcm93c19wb3cyKG1hdHJpeCwgY29scywgcm93cywgQkFDS1dBUkRfQ1lDTEUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMzQ5ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVFJBTlNQT1NFX0gKKyNkZWZpbmUgVFJBTlNQT1NFX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworZW51bSB7Rk9SV0FSRF9DWUNMRSwgQkFDS1dBUkRfQ1lDTEV9OworCisKK3ZvaWQgc3RkX3RyYW5zKG1wZF91aW50X3QgZGVzdFtdLCBtcGRfdWludF90IHNyY1tdLCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7CitpbnQgdHJhbnNwb3NlX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7Cit2b2lkIHRyYW5zcG9zZV8zeHBvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scyk7CisKKworc3RhdGljIGlubGluZSB2b2lkIHBvaW50ZXJzd2FwKG1wZF91aW50X3QgKiphLCBtcGRfdWludF90ICoqYikKK3sKKyAgICBtcGRfdWludF90ICp0bXA7CisKKyAgICB0bXAgPSAqYjsKKyAgICAqYiA9ICphOworICAgICphID0gdG1wOworfQorCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3R5cGVhcml0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNDgxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3R5cGVhcml0aC5oCkBAIC0wLDAgKzEsNjY5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFRZUEVBUklUSF9ICisjZGVmaW5lIFRZUEVBUklUSF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICBMb3cgbGV2ZWwgbmF0aXZlIGFyaXRobWV0aWMgb24gYmFzaWMgdHlwZXMgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiogICAgICAgICAgIERvdWJsZSB3aWR0aCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24KKyAqKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWYgZGVmaW5lZChDT05GSUdfNjQpCisjaWYgZGVmaW5lZChBTlNJKQorI2lmIGRlZmluZWQoSEFWRV9VSU5UMTI4X1QpCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgX191aW50MTI4X3QgaGw7CisKKyAgICBobCA9IChfX3VpbnQxMjhfdClhICogYjsKKworICAgICpoaSA9IGhsID4+IDY0OworICAgICpsbyA9IChtcGRfdWludF90KWhsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgX191aW50MTI4X3QgaGw7CisKKyAgICBobCA9ICgoX191aW50MTI4X3QpaGk8PDY0KSArIGxvOworICAgICpxID0gKG1wZF91aW50X3QpKGhsIC8gZCk7IC8qIHF1b3RpZW50IGlzIGtub3duIHRvIGZpdCAqLworICAgICpyID0gKG1wZF91aW50X3QpKGhsIC0gKF9fdWludDEyOF90KSgqcSkgKiBkKTsKK30KKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgdWludDMyX3Qgd1s0XSwgY2Fycnk7CisgICAgdWludDMyX3QgYWgsIGFsLCBiaCwgYmw7CisgICAgdWludDY0X3QgaGw7CisKKyAgICBhaCA9ICh1aW50MzJfdCkoYT4+MzIpOyBhbCA9ICh1aW50MzJfdClhOworICAgIGJoID0gKHVpbnQzMl90KShiPj4zMik7IGJsID0gKHVpbnQzMl90KWI7CisKKyAgICBobCA9ICh1aW50NjRfdClhbCAqIGJsOworICAgIHdbMF0gPSAodWludDMyX3QpaGw7CisgICAgY2FycnkgPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICBobCA9ICh1aW50NjRfdClhaCAqIGJsICsgY2Fycnk7CisgICAgd1sxXSA9ICh1aW50MzJfdClobDsKKyAgICB3WzJdID0gKHVpbnQzMl90KShobD4+MzIpOworCisgICAgaGwgPSAodWludDY0X3QpYWwgKiBiaCArIHdbMV07CisgICAgd1sxXSA9ICh1aW50MzJfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgIGhsID0gKCh1aW50NjRfdClhaCAqIGJoICsgd1syXSkgKyBjYXJyeTsKKyAgICB3WzJdID0gKHVpbnQzMl90KWhsOworICAgIHdbM10gPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICAqaGkgPSAoKHVpbnQ2NF90KXdbM108PDMyKSArIHdbMl07CisgICAgKmxvID0gKCh1aW50NjRfdCl3WzFdPDwzMikgKyB3WzBdOworfQorCisvKgorICogQnkgSGVucnkgUy4gV2FycmVuOiBodHRwOi8vd3d3LmhhY2tlcnNkZWxpZ2h0Lm9yZy9IRGNvZGUvZGl2bHUuYy50eHQKKyAqIGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL3Blcm1pc3Npb25zLmh0bToKKyAqICJZb3UgYXJlIGZyZWUgdG8gdXNlLCBjb3B5LCBhbmQgZGlzdHJpYnV0ZSBhbnkgb2YgdGhlIGNvZGUgb24gdGhpcyB3ZWIKKyAqICBzaXRlLCB3aGV0aGVyIG1vZGlmaWVkIGJ5IHlvdSBvciBub3QuIFlvdSBuZWVkIG5vdCBnaXZlIGF0dHJpYnV0aW9uLiIKKyAqCisgKiBTbGlnaHRseSBtb2RpZmllZCwgY29tbWVudHMgYXJlIG1pbmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitubHoodWludDY0X3QgeCkKK3sKKyAgICBpbnQgbjsKKworICAgIGlmICh4ID09IDApIHJldHVybig2NCk7CisKKyAgICBuID0gMDsKKyAgICBpZiAoeCA8PSAweDAwMDAwMDAwRkZGRkZGRkYpIHtuID0gbiArMzI7IHggPSB4IDw8MzI7fQorICAgIGlmICh4IDw9IDB4MDAwMEZGRkZGRkZGRkZGRikge24gPSBuICsxNjsgeCA9IHggPDwxNjt9CisgICAgaWYgKHggPD0gMHgwMEZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyA4OyB4ID0geCA8PCA4O30KKyAgICBpZiAoeCA8PSAweDBGRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDQ7IHggPSB4IDw8IDQ7fQorICAgIGlmICh4IDw9IDB4M0ZGRkZGRkZGRkZGRkZGRikge24gPSBuICsgMjsgeCA9IHggPDwgMjt9CisgICAgaWYgKHggPD0gMHg3RkZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyAxO30KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdTEsIG1wZF91aW50X3QgdTAsCisgICAgICAgICAgICAgICBtcGRfdWludF90IHYpCit7CisgICAgY29uc3QgbXBkX3VpbnRfdCBiID0gNDI5NDk2NzI5NjsKKyAgICBtcGRfdWludF90IHVuMSwgdW4wLAorICAgICAgICAgICAgICAgdm4xLCB2bjAsCisgICAgICAgICAgICAgICBxMSwgcTAsCisgICAgICAgICAgICAgICB1bjMyLCB1bjIxLCB1bjEwLAorICAgICAgICAgICAgICAgcmhhdCwgdDsKKyAgICBpbnQgczsKKworICAgIGFzc2VydCh1MSA8IHYpOworCisgICAgcyA9IG5seih2KTsKKyAgICB2ID0gdiA8PCBzOworICAgIHZuMSA9IHYgPj4gMzI7CisgICAgdm4wID0gdiAmIDB4RkZGRkZGRkY7CisKKyAgICB0ID0gKHMgPT0gMCkgPyAwIDogdTAgPj4gKDY0IC0gcyk7CisgICAgdW4zMiA9ICh1MSA8PCBzKSB8IHQ7CisgICAgdW4xMCA9IHUwIDw8IHM7CisKKyAgICB1bjEgPSB1bjEwID4+IDMyOworICAgIHVuMCA9IHVuMTAgJiAweEZGRkZGRkZGOworCisgICAgcTEgPSB1bjMyIC8gdm4xOworICAgIHJoYXQgPSB1bjMyIC0gcTEqdm4xOworYWdhaW4xOgorICAgIGlmIChxMSA+PSBiIHx8IHExKnZuMCA+IGIqcmhhdCArIHVuMSkgeworICAgICAgICBxMSA9IHExIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgQmVmb3JlIGFnYWluMSB3ZSBoYWQ6CisgICAgICogICAgICAoMSkgcTEqdm4xICAgKyByaGF0ICAgICAgICAgPSB1bjMyCisgICAgICogICAgICAoMikgcTEqdm4xKmIgKyByaGF0KmIgKyB1bjEgPSB1bjMyKmIgKyB1bjEKKyAgICAgKgorICAgICAqICBUaGUgc3RhdGVtZW50cyBpbnNpZGUgdGhlIGlmLWNsYXVzZSBkbyBub3QgY2hhbmdlIHRoZSB2YWx1ZQorICAgICAqICBvZiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgKDIpLCBhbmQgdGhlIGxvb3AgaXMgb25seSBleGl0ZWQKKyAgICAgKiAgaWYgcTEqdm4wIDw9IHJoYXQqYiArIHVuMSwgc286CisgICAgICoKKyAgICAgKiAgICAgICgzKSBxMSp2bjEqYiArIHExKnZuMCA8PSB1bjMyKmIgKyB1bjEKKyAgICAgKiAgICAgICg0KSAgICAgICAgICAgICAgcTEqdiA8PSB1bjMyKmIgKyB1bjEKKyAgICAgKiAgICAgICg1KSAgICAgICAgICAgICAgICAgMCA8PSB1bjMyKmIgKyB1bjEgLSBxMSp2CisgICAgICoKKyAgICAgKiAgQnkgKDUpIHdlIGFyZSBjZXJ0YWluIHRoYXQgdGhlIHBvc3NpYmxlIGFkZC1iYWNrIHN0ZXAgZnJvbQorICAgICAqICBLbnV0aCdzIGFsZ29yaXRobSBEIGlzIG5ldmVyIHJlcXVpcmVkLgorICAgICAqCisgICAgICogIFNpbmNlIHRoZSBmaW5hbCBxdW90aWVudCBpcyBsZXNzIHRoYW4gMioqNjQsIHRoZSBmb2xsb3dpbmcKKyAgICAgKiAgbXVzdCBiZSB0cnVlOgorICAgICAqCisgICAgICogICAgICAoNikgdW4zMipiICsgdW4xIC0gcTEqdiA8PSBVSU5UNjRfTUFYCisgICAgICoKKyAgICAgKiAgVGhpcyBtZWFucyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgbGluZSwgdGhlIGhpZ2ggd29yZHMKKyAgICAgKiAgb2YgdW4zMipiIGFuZCBxMSp2IGNhbiBiZSBkaXNjYXJkZWQgd2l0aG91dCBhbnkgZWZmZWN0CisgICAgICogIG9uIHRoZSByZXN1bHQuCisgICAgICovCisgICAgdW4yMSA9IHVuMzIqYiArIHVuMSAtIHExKnY7CisKKyAgICBxMCA9IHVuMjEgLyB2bjE7CisgICAgcmhhdCA9IHVuMjEgLSBxMCp2bjE7CithZ2FpbjI6CisgICAgaWYgKHEwID49IGIgfHwgcTAqdm4wID4gYipyaGF0ICsgdW4wKSB7CisgICAgICAgIHEwID0gcTAgLSAxOworICAgICAgICByaGF0ID0gcmhhdCArIHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPCBiKSBnb3RvIGFnYWluMjsKKyAgICB9CisKKyAgICAqcSA9IHExKmIgKyBxMDsKKyAgICAqciA9ICh1bjIxKmIgKyB1bjAgLSBxMCp2KSA+PiBzOworfQorI2VuZGlmCisKKy8qIEVORCBBTlNJICovCisjZWxpZiBkZWZpbmVkKEFTTSkKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGgsIGw7CisKKyAgICBfX2FzbV9fICggIm11bHEgJTNcblx0IgorICAgICAgICAgICAgICA6ICI9ZCIgKGgpLCAiPWEiIChsKQorICAgICAgICAgICAgICA6ICIlYSIgKGEpLCAicm0iIChiKQorICAgICAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKmhpID0gaDsKKyAgICAqbG8gPSBsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3VpbnRfdCBxcSwgcnI7CisKKyAgICBfX2FzbV9fICggImRpdnEgJTRcblx0IgorICAgICAgICAgICAgICA6ICI9YSIgKHFxKSwgIj1kIiAocnIpCisgICAgICAgICAgICAgIDogImEiIChsbyksICJkIiAoaGkpLCAicm0iIChkKQorICAgICAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKnEgPSBxcTsKKyAgICAqciA9IHJyOworfQorLyogRU5EIEdDQyBBU00gKi8KKyNlbGlmIGRlZmluZWQoTUFTTSkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNwcmFnbWEgaW50cmluc2ljKF91bXVsMTI4KQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgKmxvID0gX3VtdWwxMjgoYSwgYiwgaGkpOworfQorCit2b2lkIF9tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCk7CisKKy8qIEVORCBNQVNNIChfTVNDX1ZFUikgKi8KKyNlbHNlCisgICNlcnJvciAibmVlZCBwbGF0Zm9ybSBzcGVjaWZpYyAxMjggYml0IG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiIKKyNlbmRpZgorCisjZGVmaW5lIERJVk1PRChxLCByLCB2LCBkKSAqcSA9IHYgLyBkOyAqciA9IHYgLSAqcSAqIGQKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZtb2RfcG93MTAobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGV4cCkKK3sKKyAgICBhc3NlcnQoZXhwIDw9IDE5KTsKKworICAgIGlmIChleHAgPD0gOSkgeworICAgICAgICBpZiAoZXhwIDw9IDQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDA6ICpxID0gdjsgKnIgPSAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTogRElWTU9EKHEsIHIsIHYsIDEwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogRElWTU9EKHEsIHIsIHYsIDEwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IERJVk1PRChxLCByLCB2LCAxMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDogRElWTU9EKHEsIHIsIHYsIDEwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDU6IERJVk1PRChxLCByLCB2LCAxMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChleHAgPD0gMTQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDEwOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDE1OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLyogRU5EIENPTkZJR182NCAqLworI2VsaWYgZGVmaW5lZChDT05GSUdfMzIpCisjaWYgZGVmaW5lZChBTlNJKQorI2lmICFkZWZpbmVkKExFR0FDWV9DT01QSUxFUikKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdXVpbnRfdCBobDsKKworICAgIGhsID0gKG1wZF91dWludF90KWEgKiBiOworCisgICAgKmhpID0gaGwgPj4gMzI7CisgICAgKmxvID0gKG1wZF91aW50X3QpaGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdXVpbnRfdCBobDsKKworICAgIGhsID0gKChtcGRfdXVpbnRfdCloaTw8MzIpICsgbG87CisgICAgKnEgPSAobXBkX3VpbnRfdCkoaGwgLyBkKTsgLyogcXVvdGllbnQgaXMga25vd24gdG8gZml0ICovCisgICAgKnIgPSAobXBkX3VpbnRfdCkoaGwgLSAobXBkX3V1aW50X3QpKCpxKSAqIGQpOworfQorLyogRU5EIEFOU0kgKyB1aW50NjRfdCAqLworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICB1aW50MTZfdCB3WzRdLCBjYXJyeTsKKyAgICB1aW50MTZfdCBhaCwgYWwsIGJoLCBibDsKKyAgICB1aW50MzJfdCBobDsKKworICAgIGFoID0gKHVpbnQxNl90KShhPj4xNik7IGFsID0gKHVpbnQxNl90KWE7CisgICAgYmggPSAodWludDE2X3QpKGI+PjE2KTsgYmwgPSAodWludDE2X3QpYjsKKworICAgIGhsID0gKHVpbnQzMl90KWFsICogYmw7CisgICAgd1swXSA9ICh1aW50MTZfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgIGhsID0gKHVpbnQzMl90KWFoICogYmwgKyBjYXJyeTsKKyAgICB3WzFdID0gKHVpbnQxNl90KWhsOworICAgIHdbMl0gPSAodWludDE2X3QpKGhsPj4xNik7CisKKyAgICBobCA9ICh1aW50MzJfdClhbCAqIGJoICsgd1sxXTsKKyAgICB3WzFdID0gKHVpbnQxNl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQxNl90KShobD4+MTYpOworCisgICAgaGwgPSAoKHVpbnQzMl90KWFoICogYmggKyB3WzJdKSArIGNhcnJ5OworICAgIHdbMl0gPSAodWludDE2X3QpaGw7CisgICAgd1szXSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgICpoaSA9ICgodWludDMyX3Qpd1szXTw8MTYpICsgd1syXTsKKyAgICAqbG8gPSAoKHVpbnQzMl90KXdbMV08PDE2KSArIHdbMF07Cit9CisKKy8qCisgKiBCeSBIZW5yeSBTLiBXYXJyZW46IGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL0hEY29kZS9kaXZsdS5jLnR4dAorICogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvcGVybWlzc2lvbnMuaHRtOgorICogIllvdSBhcmUgZnJlZSB0byB1c2UsIGNvcHksIGFuZCBkaXN0cmlidXRlIGFueSBvZiB0aGUgY29kZSBvbiB0aGlzIHdlYgorICogIHNpdGUsIHdoZXRoZXIgbW9kaWZpZWQgYnkgeW91IG9yIG5vdC4gWW91IG5lZWQgbm90IGdpdmUgYXR0cmlidXRpb24uIgorICoKKyAqIFNsaWdodGx5IG1vZGlmaWVkLCBjb21tZW50cyBhcmUgbWluZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK25seih1aW50MzJfdCB4KQoreworICAgIGludCBuOworCisgICAgaWYgKHggPT0gMCkgcmV0dXJuKDMyKTsKKworICAgIG4gPSAwOworICAgIGlmICh4IDw9IDB4MDAwMEZGRkYpIHtuID0gbiArMTY7IHggPSB4IDw8MTY7fQorICAgIGlmICh4IDw9IDB4MDBGRkZGRkYpIHtuID0gbiArIDg7IHggPSB4IDw8IDg7fQorICAgIGlmICh4IDw9IDB4MEZGRkZGRkYpIHtuID0gbiArIDQ7IHggPSB4IDw8IDQ7fQorICAgIGlmICh4IDw9IDB4M0ZGRkZGRkYpIHtuID0gbiArIDI7IHggPSB4IDw8IDI7fQorICAgIGlmICh4IDw9IDB4N0ZGRkZGRkYpIHtuID0gbiArIDE7fQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB1MSwgbXBkX3VpbnRfdCB1MCwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgdikKK3sKKyAgICBjb25zdCBtcGRfdWludF90IGIgPSA2NTUzNjsKKyAgICBtcGRfdWludF90IHVuMSwgdW4wLAorICAgICAgICAgICAgICAgdm4xLCB2bjAsCisgICAgICAgICAgICAgICBxMSwgcTAsCisgICAgICAgICAgICAgICB1bjMyLCB1bjIxLCB1bjEwLAorICAgICAgICAgICAgICAgcmhhdCwgdDsKKyAgICBpbnQgczsKKworICAgIGFzc2VydCh1MSA8IHYpOworCisgICAgcyA9IG5seih2KTsKKyAgICB2ID0gdiA8PCBzOworICAgIHZuMSA9IHYgPj4gMTY7CisgICAgdm4wID0gdiAmIDB4RkZGRjsKKworICAgIHQgPSAocyA9PSAwKSA/IDAgOiB1MCA+PiAoMzIgLSBzKTsKKyAgICB1bjMyID0gKHUxIDw8IHMpIHwgdDsKKyAgICB1bjEwID0gdTAgPDwgczsKKworICAgIHVuMSA9IHVuMTAgPj4gMTY7CisgICAgdW4wID0gdW4xMCAmIDB4RkZGRjsKKworICAgIHExID0gdW4zMiAvIHZuMTsKKyAgICByaGF0ID0gdW4zMiAtIHExKnZuMTsKK2FnYWluMToKKyAgICBpZiAocTEgPj0gYiB8fCBxMSp2bjAgPiBiKnJoYXQgKyB1bjEpIHsKKyAgICAgICAgcTEgPSBxMSAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4xOworICAgIH0KKworICAgIC8qCisgICAgICogIEJlZm9yZSBhZ2FpbjEgd2UgaGFkOgorICAgICAqICAgICAgKDEpIHExKnZuMSAgICsgcmhhdCAgICAgICAgID0gdW4zMgorICAgICAqICAgICAgKDIpIHExKnZuMSpiICsgcmhhdCpiICsgdW4xID0gdW4zMipiICsgdW4xCisgICAgICoKKyAgICAgKiAgVGhlIHN0YXRlbWVudHMgaW5zaWRlIHRoZSBpZi1jbGF1c2UgZG8gbm90IGNoYW5nZSB0aGUgdmFsdWUKKyAgICAgKiAgb2YgdGhlIGxlZnQtaGFuZCBzaWRlIG9mICgyKSwgYW5kIHRoZSBsb29wIGlzIG9ubHkgZXhpdGVkCisgICAgICogIGlmIHExKnZuMCA8PSByaGF0KmIgKyB1bjEsIHNvOgorICAgICAqCisgICAgICogICAgICAoMykgcTEqdm4xKmIgKyBxMSp2bjAgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNCkgICAgICAgICAgICAgIHExKnYgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNSkgICAgICAgICAgICAgICAgIDAgPD0gdW4zMipiICsgdW4xIC0gcTEqdgorICAgICAqCisgICAgICogIEJ5ICg1KSB3ZSBhcmUgY2VydGFpbiB0aGF0IHRoZSBwb3NzaWJsZSBhZGQtYmFjayBzdGVwIGZyb20KKyAgICAgKiAgS251dGgncyBhbGdvcml0aG0gRCBpcyBuZXZlciByZXF1aXJlZC4KKyAgICAgKgorICAgICAqICBTaW5jZSB0aGUgZmluYWwgcXVvdGllbnQgaXMgbGVzcyB0aGFuIDIqKjMyLCB0aGUgZm9sbG93aW5nCisgICAgICogIG11c3QgYmUgdHJ1ZToKKyAgICAgKgorICAgICAqICAgICAgKDYpIHVuMzIqYiArIHVuMSAtIHExKnYgPD0gVUlOVDMyX01BWAorICAgICAqCisgICAgICogIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgZm9sbG93aW5nIGxpbmUsIHRoZSBoaWdoIHdvcmRzCisgICAgICogIG9mIHVuMzIqYiBhbmQgcTEqdiBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgYW55IGVmZmVjdAorICAgICAqICBvbiB0aGUgcmVzdWx0LgorICAgICAqLworICAgIHVuMjEgPSB1bjMyKmIgKyB1bjEgLSBxMSp2OworCisgICAgcTAgPSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAqdm4xOworYWdhaW4yOgorICAgIGlmIChxMCA+PSBiIHx8IHEwKnZuMCA+IGIqcmhhdCArIHVuMCkgeworICAgICAgICBxMCA9IHEwIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjI7CisgICAgfQorCisgICAgKnEgPSBxMSpiICsgcTA7CisgICAgKnIgPSAodW4yMSpiICsgdW4wIC0gcTAqdikgPj4gczsKK30KKyNlbmRpZiAvKiBFTkQgQU5TSSArIExFR0FDWV9DT01QSUxFUiAqLworCisvKiBFTkQgQU5TSSAqLworI2VsaWYgZGVmaW5lZChBU00pCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoLCBsOworCisgICAgX19hc21fXyAoICJtdWxsICUzXG5cdCIKKyAgICAgICAgICAgICAgOiAiPWQiIChoKSwgIj1hIiAobCkKKyAgICAgICAgICAgICAgOiAiJWEiIChhKSwgInJtIiAoYikKKyAgICAgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpoaSA9IGg7CisgICAgKmxvID0gbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIG1wZF91aW50X3QgcXEsIHJyOworCisgICAgX19hc21fXyAoICJkaXZsICU0XG5cdCIKKyAgICAgICAgICAgICAgOiAiPWEiIChxcSksICI9ZCIgKHJyKQorICAgICAgICAgICAgICA6ICJhIiAobG8pLCAiZCIgKGhpKSwgInJtIiAoZCkKKyAgICAgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpxID0gcXE7CisgICAgKnIgPSBycjsKK30KKy8qIEVORCBHQ0MgQVNNICovCisjZWxpZiBkZWZpbmVkKE1BU00pCitzdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGgsIGw7CisKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiBlYXgsIGEKKyAgICAgICAgbXVsIGIKKyAgICAgICAgbW92IGgsIGVkeAorICAgICAgICBtb3YgbCwgZWF4CisgICAgfQorCisgICAgKmhpID0gaDsKKyAgICAqbG8gPSBsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdWludF90IHFxLCBycjsKKworICAgIF9fYXNtIHsKKyAgICAgICAgbW92IGVheCwgbG8KKyAgICAgICAgbW92IGVkeCwgaGkKKyAgICAgICAgZGl2IGQKKyAgICAgICAgbW92IHFxLCBlYXgKKyAgICAgICAgbW92IHJyLCBlZHgKKyAgICB9CisKKyAgICAqcSA9IHFxOworICAgICpyID0gcnI7Cit9CisvKiBFTkQgTUFTTSAoX01TQ19WRVIpICovCisjZWxzZQorICAjZXJyb3IgIm5lZWQgcGxhdGZvcm0gc3BlY2lmaWMgNjQgYml0IG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiIKKyNlbmRpZgorCisjZGVmaW5lIERJVk1PRChxLCByLCB2LCBkKSAqcSA9IHYgLyBkOyAqciA9IHYgLSAqcSAqIGQKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZtb2RfcG93MTAobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGV4cCkKK3sKKyAgICBhc3NlcnQoZXhwIDw9IDkpOworCisgICAgaWYgKGV4cCA8PSA0KSB7CisgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgIGNhc2UgMDogKnEgPSB2OyAqciA9IDA7IGJyZWFrOworICAgICAgICBjYXNlIDE6IERJVk1PRChxLCByLCB2LCAxMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgMjogRElWTU9EKHEsIHIsIHYsIDEwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgMzogRElWTU9EKHEsIHIsIHYsIDEwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDQ6IERJVk1PRChxLCByLCB2LCAxMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgIGNhc2UgNTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDc6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgODogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgOTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDBVTCk7IGJyZWFrOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9Cit9CisvKiBFTkQgQ09ORklHXzMyICovCisKKy8qIE5PIENPTkZJRyAqLworI2Vsc2UKKyAgI2Vycm9yICJkZWZpbmUgQ09ORklHXzY0IG9yIENPTkZJR18zMiIKKyNlbmRpZiAvKiBDT05GSUcgKi8KKworCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmQobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGQpCit7CisgICAgKnEgPSB2IC8gZDsKKyAgICAqciA9IHYgLSAqcSAqIGQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9pZGl2X3dvcmQobXBkX3NzaXplX3QgKnEsIG1wZF9zc2l6ZV90ICpyLCBtcGRfc3NpemVfdCB2LCBtcGRfc3NpemVfdCBkKQoreworICAgICpxID0gdiAvIGQ7CisgICAgKnIgPSB2IC0gKnEgKiBkOworfQorCisKKy8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqKiAgICAgICAgICAgICAgQXJpdGhtZXRpYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nCisgKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogVGhlIGZvbGxvd2luZyBtYWNyb3MgZG8gY2FsbCBleGl0KCkgaW4gY2FzZSBvZiBhbiBvdmVyZmxvdy4KKyAgIElmIHRoZSBsaWJyYXJ5IGlzIHVzZWQgY29ycmVjdGx5IChpLmUuIHdpdGggdmFsaWQgY29udGV4dAorICAgcGFyYW1ldGVycyksIHN1Y2ggb3ZlcmZsb3dzIGNhbm5vdCBvY2N1ci4gVGhlIG1hY3JvcyBhcmUgdXNlZAorICAgYXMgc2FuaXR5IGNoZWNrcyBpbiBhIGNvdXBsZSBvZiBzdHJhdGVnaWMgcGxhY2VzIGFuZCBzaG91bGQKKyAgIGJlIHZpZXdlZCBhcyBhIGhhbmR3cml0dGVuIHZlcnNpb24gb2YgZ2NjJ3MgLWZ0cmFwdiBvcHRpb24uICovCisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorYWRkX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYikKK3sKKyAgICBpZiAoYSA+IE1QRF9TSVpFX01BWCAtIGIpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgiYWRkX3NpemVfdCgpOiBvdmVyZmxvdzogY2hlY2sgdGhlIGNvbnRleHQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICByZXR1cm4gYSArIGI7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorc3ViX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYikKK3sKKyAgICBpZiAoYiA+IGEpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgic3ViX3NpemVfdCgpOiBvdmVyZmxvdzogY2hlY2sgdGhlIGNvbnRleHQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICByZXR1cm4gYSAtIGI7Cit9CisKKyNpZiBNUERfU0laRV9NQVggIT0gTVBEX1VJTlRfTUFYCisgICNlcnJvciAiYWRhcHQgbXVsX3NpemVfdCgpIGFuZCBtdWxtb2Rfc2l6ZV90KCkiCisjZW5kaWYKKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CittdWxfc2l6ZV90KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIChtcGRfdWludF90KWEsIChtcGRfdWludF90KWIpOworICAgIGlmIChoaSkgeworICAgICAgICBtcGRfZXJyX2ZhdGFsKCJtdWxfc2l6ZV90KCk6IG92ZXJmbG93OiBjaGVjayB0aGUgY29udGV4dCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIHJldHVybiBsbzsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CithZGRfc2l6ZV90X292ZXJmbG93KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiLCBtcGRfc2l6ZV90ICpvdmVyZmxvdykKK3sKKyAgICBtcGRfc2l6ZV90IHJldDsKKworICAgICpvdmVyZmxvdyA9IDA7CisgICAgcmV0ID0gYSArIGI7CisgICAgaWYgKHJldCA8IGEpICpvdmVyZmxvdyA9IDE7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CittdWxfc2l6ZV90X292ZXJmbG93KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiLCBtcGRfc2l6ZV90ICpvdmVyZmxvdykKK3sKKyAgICBtcGRfdWludF90IGxvOworCisgICAgX21wZF9tdWxfd29yZHMoKG1wZF91aW50X3QgKilvdmVyZmxvdywgJmxvLCAobXBkX3VpbnRfdClhLAorICAgICAgICAgICAgICAgICAgIChtcGRfdWludF90KWIpOworICAgIHJldHVybiBsbzsKK30KKworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdAorbW9kX21wZF9zc2l6ZV90KG1wZF9zc2l6ZV90IGEsIG1wZF9zc2l6ZV90IG0pCit7CisgICAgbXBkX3NzaXplX3QgciA9IGEgJSBtOworICAgIHJldHVybiAociA8IDApID8gciArIG0gOiByOworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK211bG1vZF9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIsIG1wZF9zaXplX3QgbSkKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IHEsIHI7CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgKG1wZF91aW50X3QpYSwgKG1wZF91aW50X3QpYik7CisgICAgX21wZF9kaXZfd29yZHMoJnEsICZyLCBoaSwgbG8sIChtcGRfdWludF90KW0pOworCisgICAgcmV0dXJuIHI7Cit9CisKKworI2VuZGlmIC8qIFRZUEVBUklUSF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Vtb2Rhcml0aC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy91bW9kYXJpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzY3NjFiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy91bW9kYXJpdGguaApAQCAtMCwwICsxLDY1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBVTU9EQVJJVEhfSAorI2RlZmluZSBVTU9EQVJJVEhfSAorCisKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKworCisvKiBCaWdudW06IExvdyBsZXZlbCByb3V0aW5lcyBmb3IgdW5zaWduZWQgbW9kdWxhciBhcml0aG1ldGljLiBUaGVzZSBhcmUKKyAgIHVzZWQgaW4gdGhlIGZhc3QgY29udm9sdXRpb24gZnVuY3Rpb25zIGZvciB2ZXJ5IGxhcmdlIGNvZWZmaWNpZW50cy4gKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIEFOU0kgbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoKKyAqIFJlc3RyaWN0aW9uczogYSA8IG0gYW5kIGIgPCBtCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogYWRkbW9kLWNvcnJlY3QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CithZGRtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IHM7CisKKyAgICBzID0gYSArIGI7CisgICAgcyA9IChzIDwgYSkgPyBzIC0gbSA6IHM7CisgICAgcyA9IChzID49IG0pID8gcyAtIG0gOiBzOworCisgICAgcmV0dXJuIHM7Cit9CisKKy8qCisgKiBSZXN0cmljdGlvbnM6IGEgPCBtIGFuZCBiIDwgbQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IHN1Ym1vZC0yLWNvcnJlY3QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdWJtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGQ7CisKKyAgICBkID0gYSAtIGI7CisgICAgZCA9IChhIDwgYikgPyBkICsgbSA6IGQ7CisKKyAgICByZXR1cm4gZDsKK30KKworLyoKKyAqIFJlc3RyaWN0aW9uczogYSA8IDJtIGFuZCBiIDwgMm0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uIGV4dC1zdWJtb2QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitleHRfc3VibW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBkOworCisgICAgYSA9IChhID49IG0pID8gYSAtIG0gOiBhOworICAgIGIgPSAoYiA+PSBtKSA/IGIgLSBtIDogYjsKKworICAgIGQgPSBhIC0gYjsKKyAgICBkID0gKGEgPCBiKSA/IGQgKyBtIDogZDsKKworICAgIHJldHVybiBkOworfQorCisvKgorICogUmVkdWNlIGRvdWJsZSB3b3JkIG1vZHVsbyBtLgorICogUmVzdHJpY3Rpb25zOiBtICE9IDAKKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uIGR3LXJlZHVjZQorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK2R3X3JlZHVjZShtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCByMSwgcjIsIHc7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZ3LCAmcjEsIGhpLCBtKTsKKyAgICBfbXBkX2Rpdl93b3JkcygmdywgJnIyLCByMSwgbG8sIG0pOworCisgICAgcmV0dXJuIHIyOworfQorCisvKgorICogU3VidHJhY3QgZG91YmxlIHdvcmQgZnJvbSBhLgorICogUmVzdHJpY3Rpb25zOiBhIDwgbQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IHNlY3Rpb24gZHctc3VibW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorZHdfc3VibW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgZCwgcjsKKworICAgIHIgPSBkd19yZWR1Y2UoaGksIGxvLCBtKTsKKyAgICBkID0gYSAtIHI7CisgICAgZCA9IChhIDwgcikgPyBkICsgbSA6IGQ7CisKKyAgICByZXR1cm4gZDsKK30KKworI2lmZGVmIENPTkZJR182NAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIDY0LWJpdCBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBIHByb29mIG9mIHRoZSBhbGdvcml0aG0gaXMgaW4gbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0LiBBbiBBQ0wyCisgKiBwcm9vZiBpcyBpbiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiAiRmFzdCBtb2R1bGFyIHJlZHVjdGlvbiIuCisgKgorICogQWxnb3JpdGhtOiBjYWxjdWxhdGUgKGEgKiBiKSAlIHA6CisgKgorICogICBhKSBoaSwgbG8gPC0gYSAqIGIgICAgICAgIyBDYWxjdWxhdGUgYSAqIGIuCisgKgorICogICBiKSBoaSwgbG8gPC0gIFIoaGksIGxvKSAgIyBSZWR1Y2UgbW9kdWxvIHAuCisgKgorICogICBjKSBSZXBlYXQgc3RlcCBiKSB1bnRpbCAwIDw9IGhpICogMioqNjQgKyBsbyA8IDIqcC4KKyAqCisgKiAgIGQpIElmIHRoZSByZXN1bHQgaXMgbGVzcyB0aGFuIHAsIHJldHVybiBsby4gT3RoZXJ3aXNlIHJldHVybiBsbyAtIHAuCisgKi8KKworc3RhdGljIGlubGluZSBtcGRfdWludF90Cit4NjRfbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG8sIHgsIHk7CisKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBhLCBiKTsKKworICAgIGlmIChtICYgKDFVTEw8PDMyKSkgeyAvKiBQMSAqLworCisgICAgICAgIC8qIGZpcnN0IHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzI7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzMjsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiBzZWNvbmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMjsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDMyOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIHJldHVybiAoaGkgfHwgbG8gPj0gbSA/IGxvIC0gbSA6IGxvKTsKKyAgICB9CisgICAgZWxzZSBpZiAobSAmICgxVUxMPDwzNCkpIHsgLyogUDIgKi8KKworICAgICAgICAvKiBmaXJzdCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMwOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzQ7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogc2Vjb25kIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzA7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzNDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiB0aGlyZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMwOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzQ7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgcmV0dXJuIChoaSB8fCBsbyA+PSBtID8gbG8gLSBtIDogbG8pOworICAgIH0KKyAgICBlbHNlIHsgLyogUDMgKi8KKworICAgICAgICAvKiBmaXJzdCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDI0OworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gNDA7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogc2Vjb25kIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMjQ7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSA0MDsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICAvKiB0aGlyZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDI0OworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gNDA7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgcmV0dXJuIChoaSB8fCBsbyA+PSBtID8gbG8gLSBtIDogbG8pOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkCit4NjRfbXVsbW9kMmMobXBkX3VpbnRfdCAqYSwgbXBkX3VpbnRfdCAqYiwgbXBkX3VpbnRfdCB3LCBtcGRfdWludF90IG0pCit7CisgICAgKmEgPSB4NjRfbXVsbW9kKCphLCB3LCBtKTsKKyAgICAqYiA9IHg2NF9tdWxtb2QoKmIsIHcsIG0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3g2NF9tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYTAgPSB4NjRfbXVsbW9kKCphMCwgYjAsIG0pOworICAgICphMSA9IHg2NF9tdWxtb2QoKmExLCBiMSwgbSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAoreDY0X3Bvd21vZChtcGRfdWludF90IGJhc2UsIG1wZF91aW50X3QgZXhwLCBtcGRfdWludF90IHVtb2QpCit7CisgICAgbXBkX3VpbnRfdCByID0gMTsKKworICAgIHdoaWxlIChleHAgPiAwKSB7CisgICAgICAgIGlmIChleHAgJiAxKQorICAgICAgICAgICAgciA9IHg2NF9tdWxtb2QociwgYmFzZSwgdW1vZCk7CisgICAgICAgIGJhc2UgPSB4NjRfbXVsbW9kKGJhc2UsIGJhc2UsIHVtb2QpOworICAgICAgICBleHAgPj49IDE7CisgICAgfQorCisgICAgcmV0dXJuIHI7Cit9CisKKy8qIEVORCBDT05GSUdfNjQgKi8KKyNlbHNlIC8qIENPTkZJR18zMiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgMzItYml0IG1vZHVsYXIgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQoQU5TSSkKKyNpZiAhZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCisvKiBIQVZFX1VJTlQ2NF9UICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3N0ZF9tdWxtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICByZXR1cm4gKChtcGRfdXVpbnRfdCkgYSAqIGIpICUgbTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMmMobXBkX3VpbnRfdCAqYSwgbXBkX3VpbnRfdCAqYiwgbXBkX3VpbnRfdCB3LCBtcGRfdWludF90IG0pCit7CisgICAgKmEgPSAoKG1wZF91dWludF90KSAqYSAqIHcpICUgbTsKKyAgICAqYiA9ICgobXBkX3V1aW50X3QpICpiICogdykgJSBtOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYTAgPSAoKG1wZF91dWludF90KSAqYTAgKiBiMCkgJSBtOworICAgICphMSA9ICgobXBkX3V1aW50X3QpICphMSAqIGIxKSAlIG07Cit9CisvKiBFTkQgSEFWRV9VSU5UNjRfVCAqLworI2Vsc2UKKy8qIExFR0FDWV9DT01QSUxFUiAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdGRfbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG8sIHEsIHI7CisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIGEsIGIpOworICAgIF9tcGRfZGl2X3dvcmRzKCZxLCAmciwgaGksIGxvLCBtKTsKKyAgICByZXR1cm4gcjsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMmMobXBkX3VpbnRfdCAqYSwgbXBkX3VpbnRfdCAqYiwgbXBkX3VpbnRfdCB3LCBtcGRfdWludF90IG0pCit7CisgICAgKmEgPSBzdGRfbXVsbW9kKCphLCB3LCBtKTsKKyAgICAqYiA9IHN0ZF9tdWxtb2QoKmIsIHcsIG0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgIG1wZF91aW50X3QgbSkKK3sKKyAgICAqYTAgPSBzdGRfbXVsbW9kKCphMCwgYjAsIG0pOworICAgICphMSA9IHN0ZF9tdWxtb2QoKmExLCBiMSwgbSk7Cit9CisvKiBFTkQgTEVHQUNZX0NPTVBJTEVSICovCisjZW5kaWYKKworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdGRfcG93bW9kKG1wZF91aW50X3QgYmFzZSwgbXBkX3VpbnRfdCBleHAsIG1wZF91aW50X3QgdW1vZCkKK3sKKyAgICBtcGRfdWludF90IHIgPSAxOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpCisgICAgICAgICAgICByID0gc3RkX211bG1vZChyLCBiYXNlLCB1bW9kKTsKKyAgICAgICAgYmFzZSA9IHN0ZF9tdWxtb2QoYmFzZSwgYmFzZSwgdW1vZCk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gcjsKK30KKyNlbmRpZiAvKiBBTlNJIENPTkZJR18zMiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICBQZW50aXVtIFBybyBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEEgcHJvb2Ygb2YgdGhlIGFsZ29yaXRobSBpcyBpbiBsaXRlcmF0dXJlL211bG1vZC1wcHJvLnR4dC4gVGhlIEZQVQorICogY29udHJvbCB3b3JkIG11c3QgYmUgc2V0IHRvIDY0LWJpdCBwcmVjaXNpb24gYW5kIHRydW5jYXRpb24gbW9kZQorICogcHJpb3IgdG8gdXNpbmcgdGhlc2UgZnVuY3Rpb25zLgorICoKKyAqIEFsZ29yaXRobTogY2FsY3VsYXRlIChhICogYikgJSBwOgorICoKKyAqICAgcCAgICA6PSBwcmltZSA8IDIqKjMxCisgKiAgIHBpbnYgOj0gKGxvbmcgZG91YmxlKTEuMCAvIHAgKHByZWNhbGN1bGF0ZWQpCisgKgorICogICBhKSBuID0gYSAqIGIgICAgICAgICAgICAgICMgQ2FsY3VsYXRlIGV4YWN0IHByb2R1Y3QuCisgKiAgIGIpIHFlc3QgPSBuICogcGludiAgICAgICAgIyBDYWxjdWxhdGUgZXN0aW1hdGUgZm9yIHEgPSBuIC8gcC4KKyAqICAgYykgcSA9IChxZXN0KzIqKjYzKS0yKio2MyAjIFRydW5jYXRlIHFlc3QgdG8gdGhlIGV4YWN0IHF1b3RpZW50LgorICogICBkKSByID0gbiAtIHEgKiBwICAgICAgICAgICMgQ2FsY3VsYXRlIHJlbWFpbmRlci4KKyAqCisgKiBSZW1hcmtzOgorICoKKyAqICAgLSBwID0gZG1vZCBhbmQgcGludiA9IGRpbnZtb2QuCisgKiAgIC0gZGludm1vZCBwb2ludHMgdG8gYW4gYXJyYXkgb2YgdGhyZWUgdWludDMyX3QsIHdoaWNoIGlzIGludGVycHJldGVkCisgKiAgICAgYXMgYW4gODAgYml0IGxvbmcgZG91YmxlIGJ5IGZsZHQuCisgKiAgIC0gSW50ZWwgY29tcGlsZXJzIHByaW9yIHRvIHZlcnNpb24gMTEgZG8gbm90IHNlZW0gdG8gaGFuZGxlIHRoZQorICogICAgIF9fR05VQ19fIGlubGluZSBhc3NlbWJseSBjb3JyZWN0bHkuCisgKiAgIC0gcmFuZG9tIHRlc3RzIGFyZSBwcm92aWRlZCBpbiB0ZXN0cy9leHRlbmRlZC9wcHJvX211bG1vZC5jCisgKi8KKworI2lmIGRlZmluZWQoUFBSTykKKyNpZiBkZWZpbmVkKEFTTSkKKworLyogUmV0dXJuIChhICogYikgJSBkbW9kICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3Bwcm9fbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIG1wZF91aW50X3QgcmV0dmFsOworCisgICAgX19hc21fXyAoCisgICAgICAgICAgICAiZmlsZGwgICUyXG5cdCIKKyAgICAgICAgICAgICJmaWxkbCAgJTFcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbGR0ICAgKCU0KVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZsZHMgICAlNVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbGRsICAgKCUzKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgJTBcblx0IgorICAgICAgICAgICAgOiAiPW0iIChyZXR2YWwpCisgICAgICAgICAgICA6ICJtIiAoYSksICJtIiAoYiksICJyIiAoZG1vZCksICJyIiAoZGludm1vZCksICJtIiAoTVBEX1RXTzYzKQorICAgICAgICAgICAgOiAic3QiLCAibWVtb3J5IgorICAgICk7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogdykgJSBkbW9kCisgKiAgICAgICphMSA9ICgqYTEgKiB3KSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX211bG1vZDJjKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCB3LAorICAgICAgICAgICAgICBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIF9fYXNtX18gKAorICAgICAgICAgICAgImZpbGRsICAlMlxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICglMSlcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICglMClcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpIFxuXHQiCisgICAgICAgICAgICAiZmxkdCAgICglNClcblx0IgorICAgICAgICAgICAgImZsZHMgICAlNVxuXHQiCisgICAgICAgICAgICAiZmxkICAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmYWRkICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZnN1YiAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZtdWxsICAoJTMpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgzKVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTApXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWJwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsbCAgKCUzKVxuXHQiCisgICAgICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTEpXG5cdCIKKyAgICAgICAgICAgIDogOiAiciIgKGEwKSwgInIiIChhMSksICJtIiAodyksCisgICAgICAgICAgICAgICAgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwKKyAgICAgICAgICAgICAgICAibSIgKE1QRF9UV082MykKKyAgICAgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogYjApICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogYjEpICUgZG1vZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK3Bwcm9fbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICJmaWxkbCAgJTNcblx0IgorICAgICAgICAgICAgImZpbGRsICAoJTIpXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICUxXG5cdCIKKyAgICAgICAgICAgICJmaWxkbCAgKCUwKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZsZHQgICAoJTUpXG5cdCIKKyAgICAgICAgICAgICJmbGQgICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgyKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZmxkcyAgICU2XG5cdCIKKyAgICAgICAgICAgICJmbGRsICAgKCU0KVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMylcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmc3ViICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZzdWJwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMiksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMylcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlzdHBsICglMilcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTApXG5cdCIKKyAgICAgICAgICAgIDogOiAiciIgKGEwKSwgIm0iIChiMCksICJyIiAoYTEpLCAibSIgKGIxKSwKKyAgICAgICAgICAgICAgICAiciIgKGRtb2QpLCAiciIgKGRpbnZtb2QpLAorICAgICAgICAgICAgICAgICJtIiAoTVBEX1RXTzYzKQorICAgICAgICAgICAgOiAic3QiLCAibWVtb3J5IgorICAgICk7Cit9CisvKiBFTkQgUFBSTyBHQ0MgQVNNICovCisjZWxpZiBkZWZpbmVkKE1BU00pCisKKy8qIFJldHVybiAoYSAqIGIpICUgZG1vZCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90IF9fY2RlY2wKK3Bwcm9fbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIG1wZF91aW50X3QgcmV0dmFsOworCisgICAgX19hc20geworICAgICAgICBtb3YgICAgIGVheCwgZGludm1vZAorICAgICAgICBtb3YgICAgIGVkeCwgZG1vZAorICAgICAgICBmaWxkICAgIGIKKyAgICAgICAgZmlsZCAgICBhCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZsZCAgICAgVEJZVEUgUFRSIFtlYXhdCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDEpCisgICAgICAgIGZsZCAgICAgTVBEX1RXTzYzCisgICAgICAgIGZhZGQgICAgc3QoMSksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZsZCAgICAgUVdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZpc3RwICAgcmV0dmFsCisgICAgfQorCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIHcpICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogdykgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdCBfX2NkZWNsCitwcHJvX211bG1vZDJjKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCB3LAorICAgICAgICAgICAgICBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIF9fYXNtIHsKKyAgICAgICAgbW92ICAgICBlY3gsIGRtb2QKKyAgICAgICAgbW92ICAgICBlZHgsIGExCisgICAgICAgIG1vdiAgICAgZWJ4LCBkaW52bW9kCisgICAgICAgIG1vdiAgICAgZWF4LCBhMAorICAgICAgICBmaWxkICAgIHcKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZm11bCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmaWxkICAgIERXT1JEIFBUUiBbZWF4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFRCWVRFIFBUUiBbZWJ4XQorICAgICAgICBmbGQgICAgIE1QRF9UV082MworICAgICAgICBmbGQgICAgIHN0KDIpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZzdWIgICAgc3QsIHN0KDEpCisgICAgICAgIGZtdWwgICAgUVdPUkQgUFRSIFtlY3hdCisgICAgICAgIGZzdWJwICAgc3QoMyksIHN0CisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VheF0KKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnN1YnJwICBzdCgxKSwgc3QKKyAgICAgICAgZm11bCAgICBRV09SRCBQVFIgW2VjeF0KKyAgICAgICAgZnN1YnAgICBzdCgxKSwgc3QKKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VkeF0KKyAgICB9Cit9CisKKy8qCisgKiBUd28gbW9kdWxhciBtdWx0aXBsaWNhdGlvbnMgaW4gcGFyYWxsZWw6CisgKiAgICAgICphMCA9ICgqYTAgKiBiMCkgJSBkbW9kCisgKiAgICAgICphMSA9ICgqYTEgKiBiMSkgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2NkZWNsCitwcHJvX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgX19hc20geworICAgICAgICBtb3YgICAgIGVjeCwgZG1vZAorICAgICAgICBtb3YgICAgIGVkeCwgYTEKKyAgICAgICAgbW92ICAgICBlYngsIGRpbnZtb2QKKyAgICAgICAgbW92ICAgICBlYXgsIGEwCisgICAgICAgIGZpbGQgICAgYjEKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmlsZCAgICBiMAorICAgICAgICBmaWxkICAgIERXT1JEIFBUUiBbZWF4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFRCWVRFIFBUUiBbZWJ4XQorICAgICAgICBmbGQgICAgIHN0KDIpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZmxkICAgICBEV09SRCBQVFIgTVBEX1RXTzYzCisgICAgICAgIGZsZCAgICAgUVdPUkQgUFRSIFtlY3hdCisgICAgICAgIGZ4Y2ggICAgc3QoMykKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgyKQorICAgICAgICBmYWRkICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZzdWIgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZnN1YnJwICBzdCgxKSwgc3QKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgyKQorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZtdWxwICAgc3QoMiksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMyksIHN0CisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VkeF0KKyAgICAgICAgZmlzdHAgICBEV09SRCBQVFIgW2VheF0KKyAgICB9Cit9CisjZW5kaWYgLyogUFBSTyBNQVNNIChfTVNDX1ZFUikgKi8KKworCisvKiBSZXR1cm4gKGJhc2UgKiogZXhwKSAlIGRtb2QgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorcHByb19wb3dtb2QobXBkX3VpbnRfdCBiYXNlLCBtcGRfdWludF90IGV4cCwgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBtcGRfdWludF90IHIgPSAxOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpCisgICAgICAgICAgICByID0gcHByb19tdWxtb2QociwgYmFzZSwgZG1vZCwgZGludm1vZCk7CisgICAgICAgIGJhc2UgPSBwcHJvX211bG1vZChiYXNlLCBiYXNlLCBkbW9kLCBkaW52bW9kKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KKworICAgIHJldHVybiByOworfQorI2VuZGlmIC8qIFBQUk8gKi8KKyNlbmRpZiAvKiBDT05GSUdfMzIgKi8KKworCisjZW5kaWYgLyogVU1PREFSSVRIX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzZlMDM3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVkNDT01QQVRfSAorI2RlZmluZSBWQ0NPTVBBVF9ICisKKworLyogVmlzdWFsIEMgZml4ZXM6IG5vIHN0ZGludC5oLCBubyBzbnByaW50ZiAuLi4gKi8KKyNpZmRlZiBfTVNDX1ZFUgorICAjaW5jbHVkZSAidmNzdGRpbnQuaCIKKyAgI3VuZGVmIGlubGluZQorICAjZGVmaW5lIGlubGluZSBfX2lubGluZQorICAjdW5kZWYgcmFuZG9tCisgICNkZWZpbmUgcmFuZG9tIHJhbmQKKyAgI3VuZGVmIHNyYW5kb20KKyAgI2RlZmluZSBzcmFuZG9tIHNyYW5kCisgICN1bmRlZiBzbnByaW50ZgorICAjZGVmaW5lIHNucHJpbnRmIHNwcmludGZfcworICAjZGVmaW5lIEhBVkVfU05QUklOVEYKKyAgI3VuZGVmIHN0cm5jYXNlY21wCisgICNkZWZpbmUgc3RybmNhc2VjbXAgX3N0cm5pY21wCisgICN1bmRlZiBzdHJjYXNlY21wCisgICNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAorICAjdW5kZWYgc3RydG9sbAorICAjZGVmaW5lIHN0cnRvbGwgX3N0cnRvaTY0CisgICNkZWZpbmUgc3RyZHVwIF9zdHJkdXAKKyAgI2RlZmluZSBQUklpNjQgIkk2NGkiCisgICNkZWZpbmUgUFJJdTY0ICJJNjR1IgorICAjZGVmaW5lIFBSSWkzMiAiSTMyaSIKKyAgI2RlZmluZSBQUkl1MzIgIkkzMnUiCisjZW5kaWYKKworCisjZW5kaWYgLyogVkNDT01QQVRfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2RpdjY0LmFzbSBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNkaXY2NC5hc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFiYmEwOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNkaXY2NC5hc20KQEAgLTAsMCArMSw0OCBAQAorOworOyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsKKzsgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cis7IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworOyBhcmUgbWV0OgorOworOyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorOyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCis7Cis7IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKzsgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzsKKzsgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKzsgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCis7IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCis7IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCis7IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCis7IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCis7IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorOyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorOyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCis7IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKzsgU1VDSCBEQU1BR0UuCis7CisKKworUFVCTElDICAgIF9tcGRfZGl2X3dvcmRzCitfVEVYVCAgICBTRUdNRU5UCitxJCA9IDgKK3IkID0gMTYKK2hpJCA9IDI0CitsbyQgPSAzMgorZCQgPSA0MAorX21wZF9kaXZfd29yZHMgUFJPQworICAgIG1vdiAgICByMTAsIHJkeAorICAgIG1vdiAgICByZHgsIHI4CisgICAgbW92ICAgIHJheCwgcjkKKyAgICBkaXYgICAgUVdPUkQgUFRSIGQkW3JzcF0KKyAgICBtb3YgICAgUVdPUkQgUFRSIFtyMTBdLCByZHgKKyAgICBtb3YgICAgUVdPUkQgUFRSIFtyY3hdLCByYXgKKyAgICByZXQgICAgMAorX21wZF9kaXZfd29yZHMgRU5EUAorX1RFWFQgICAgRU5EUworRU5ECisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y3N0ZGludC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y3N0ZGludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZGNhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Zjc3RkaW50LmgKQEAgLTAsMCArMSwyMzIgQEAKKy8vIElTTyBDOXggIGNvbXBsaWFudCBzdGRpbnQuaCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8KKy8vIEJhc2VkIG9uIElTTy9JRUMgOTg5OTpUQzIgQ29tbWl0dGVlIGRyYWZ0IChNYXkgNiwgMjAwNSkgV0cxNC9OMTEyNAorLy8KKy8vICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCBBbGV4YW5kZXIgQ2hlbWVyaXMKKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorLy8gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8KKy8vICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vICAgMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKy8vICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorLy8gV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKy8vIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PCisvLyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsKKy8vIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorLy8gV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKKy8vIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKKy8vIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2lmbmRlZiBfTVNDX1ZFUiAvLyBbCisjZXJyb3IgIlVzZSB0aGlzIGhlYWRlciBvbmx5IHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXJzISIKKyNlbmRpZiAvLyBfTVNDX1ZFUiBdCisKKyNpZm5kZWYgX01TQ19TVERJTlRfSF8gLy8gWworI2RlZmluZSBfTVNDX1NURElOVF9IXworCisjaWYgX01TQ19WRVIgPiAxMDAwCisjcHJhZ21hIG9uY2UKKyNlbmRpZgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKy8vIEZvciBWaXN1YWwgU3R1ZGlvIDYgaW4gQysrIG1vZGUgd3JhcCA8d2NoYXIuaD4gaW5jbHVkZSB3aXRoICdleHRlcm4gIkMrKyIge30nCisvLyBvciBjb21waWxlciBnaXZlIG1hbnkgZXJyb3JzIGxpa2UgdGhpczoKKy8vICAgZXJyb3IgQzI3MzM6IHNlY29uZCBDIGxpbmthZ2Ugb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbiAnd21lbWNocicgbm90IGFsbG93ZWQKKyNpZiAoX01TQ19WRVIgPCAxMzAwKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorICAgZXh0ZXJuICJDKysiIHsKKyNlbmRpZgorIyAgICAgaW5jbHVkZSA8d2NoYXIuaD4KKyNpZiAoX01TQ19WRVIgPCAxMzAwKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorICAgfQorI2VuZGlmCisKKy8vIERlZmluZSBfVzY0IG1hY3JvcyB0byBtYXJrIHR5cGVzIGNoYW5naW5nIHRoZWlyIHNpemUsIGxpa2UgaW50cHRyX3QuCisjaWZuZGVmIF9XNjQKKyMgIGlmICFkZWZpbmVkKF9fbWlkbCkgJiYgKGRlZmluZWQoX1g4Nl8pIHx8IGRlZmluZWQoX01fSVg4NikpICYmIF9NU0NfVkVSID49IDEzMDAKKyMgICAgIGRlZmluZSBfVzY0IF9fdzY0CisjICBlbHNlCisjICAgICBkZWZpbmUgX1c2NAorIyAgZW5kaWYKKyNlbmRpZgorCisKKy8vIDcuMTguMSBJbnRlZ2VyIHR5cGVzCisKKy8vIDcuMTguMS4xIEV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgX19pbnQ4ICAgICAgICAgICAgaW50OF90OwordHlwZWRlZiBfX2ludDE2ICAgICAgICAgICBpbnQxNl90OwordHlwZWRlZiBfX2ludDMyICAgICAgICAgICBpbnQzMl90OwordHlwZWRlZiBfX2ludDY0ICAgICAgICAgICBpbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDggICB1aW50OF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2ICB1aW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludDMyX3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnQ2NF90OworCisvLyA3LjE4LjEuMiBNaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50OF90ICAgIGludF9sZWFzdDhfdDsKK3R5cGVkZWYgaW50MTZfdCAgIGludF9sZWFzdDE2X3Q7Cit0eXBlZGVmIGludDMyX3QgICBpbnRfbGVhc3QzMl90OwordHlwZWRlZiBpbnQ2NF90ICAgaW50X2xlYXN0NjRfdDsKK3R5cGVkZWYgdWludDhfdCAgIHVpbnRfbGVhc3Q4X3Q7Cit0eXBlZGVmIHVpbnQxNl90ICB1aW50X2xlYXN0MTZfdDsKK3R5cGVkZWYgdWludDMyX3QgIHVpbnRfbGVhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9sZWFzdDY0X3Q7CisKKy8vIDcuMTguMS4zIEZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIGludDhfdCAgICBpbnRfZmFzdDhfdDsKK3R5cGVkZWYgaW50MTZfdCAgIGludF9mYXN0MTZfdDsKK3R5cGVkZWYgaW50MzJfdCAgIGludF9mYXN0MzJfdDsKK3R5cGVkZWYgaW50NjRfdCAgIGludF9mYXN0NjRfdDsKK3R5cGVkZWYgdWludDhfdCAgIHVpbnRfZmFzdDhfdDsKK3R5cGVkZWYgdWludDE2X3QgIHVpbnRfZmFzdDE2X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICB1aW50X2Zhc3QzMl90OwordHlwZWRlZiB1aW50NjRfdCAgdWludF9mYXN0NjRfdDsKKworLy8gNy4xOC4xLjQgSW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCisjaWZkZWYgX1dJTjY0IC8vIFsKKyAgIHR5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgaW50cHRyX3Q7CisgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnRwdHJfdDsKKyNlbHNlIC8vIF9XSU42NCBdWworICAgdHlwZWRlZiBfVzY0IGludCAgICAgICAgICAgICAgIGludHB0cl90OworICAgdHlwZWRlZiBfVzY0IHVuc2lnbmVkIGludCAgICAgIHVpbnRwdHJfdDsKKyNlbmRpZiAvLyBfV0lONjQgXQorCisvLyA3LjE4LjEuNSBHcmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIGludDY0X3QgICBpbnRtYXhfdDsKK3R5cGVkZWYgdWludDY0X3QgIHVpbnRtYXhfdDsKKworCisvLyA3LjE4LjIgTGltaXRzIG9mIHNwZWNpZmllZC13aWR0aCBpbnRlZ2VyIHR5cGVzCisKKyNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChfX1NURENfTElNSVRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyMCBhdCBwYWdlIDI1NyBhbmQgZm9vdG5vdGUgMjIxIGF0IHBhZ2UgMjU5CisKKy8vIDcuMTguMi4xIExpbWl0cyBvZiBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVDhfTUlOICAgICAoKGludDhfdClfSThfTUlOKQorI2RlZmluZSBJTlQ4X01BWCAgICAgX0k4X01BWAorI2RlZmluZSBJTlQxNl9NSU4gICAgKChpbnQxNl90KV9JMTZfTUlOKQorI2RlZmluZSBJTlQxNl9NQVggICAgX0kxNl9NQVgKKyNkZWZpbmUgSU5UMzJfTUlOICAgICgoaW50MzJfdClfSTMyX01JTikKKyNkZWZpbmUgSU5UMzJfTUFYICAgIF9JMzJfTUFYCisjZGVmaW5lIElOVDY0X01JTiAgICAoKGludDY0X3QpX0k2NF9NSU4pCisjZGVmaW5lIElOVDY0X01BWCAgICBfSTY0X01BWAorI2RlZmluZSBVSU5UOF9NQVggICAgX1VJOF9NQVgKKyNkZWZpbmUgVUlOVDE2X01BWCAgIF9VSTE2X01BWAorI2RlZmluZSBVSU5UMzJfTUFYICAgX1VJMzJfTUFYCisjZGVmaW5lIFVJTlQ2NF9NQVggICBfVUk2NF9NQVgKKworLy8gNy4xOC4yLjIgTGltaXRzIG9mIG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRfTEVBU1Q4X01JTiAgICBJTlQ4X01JTgorI2RlZmluZSBJTlRfTEVBU1Q4X01BWCAgICBJTlQ4X01BWAorI2RlZmluZSBJTlRfTEVBU1QxNl9NSU4gICBJTlQxNl9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUMTZfTUFYICAgSU5UMTZfTUFYCisjZGVmaW5lIElOVF9MRUFTVDMyX01JTiAgIElOVDMyX01JTgorI2RlZmluZSBJTlRfTEVBU1QzMl9NQVggICBJTlQzMl9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUNjRfTUlOICAgSU5UNjRfTUlOCisjZGVmaW5lIElOVF9MRUFTVDY0X01BWCAgIElOVDY0X01BWAorI2RlZmluZSBVSU5UX0xFQVNUOF9NQVggICBVSU5UOF9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDE2X01BWCAgVUlOVDE2X01BWAorI2RlZmluZSBVSU5UX0xFQVNUMzJfTUFYICBVSU5UMzJfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1Q2NF9NQVggIFVJTlQ2NF9NQVgKKworLy8gNy4xOC4yLjMgTGltaXRzIG9mIGZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVF9GQVNUOF9NSU4gICAgSU5UOF9NSU4KKyNkZWZpbmUgSU5UX0ZBU1Q4X01BWCAgICBJTlQ4X01BWAorI2RlZmluZSBJTlRfRkFTVDE2X01JTiAgIElOVDE2X01JTgorI2RlZmluZSBJTlRfRkFTVDE2X01BWCAgIElOVDE2X01BWAorI2RlZmluZSBJTlRfRkFTVDMyX01JTiAgIElOVDMyX01JTgorI2RlZmluZSBJTlRfRkFTVDMyX01BWCAgIElOVDMyX01BWAorI2RlZmluZSBJTlRfRkFTVDY0X01JTiAgIElOVDY0X01JTgorI2RlZmluZSBJTlRfRkFTVDY0X01BWCAgIElOVDY0X01BWAorI2RlZmluZSBVSU5UX0ZBU1Q4X01BWCAgIFVJTlQ4X01BWAorI2RlZmluZSBVSU5UX0ZBU1QxNl9NQVggIFVJTlQxNl9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUMzJfTUFYICBVSU5UMzJfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDY0X01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjIuNCBMaW1pdHMgb2YgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCisjaWZkZWYgX1dJTjY0IC8vIFsKKyMgIGRlZmluZSBJTlRQVFJfTUlOICAgSU5UNjRfTUlOCisjICBkZWZpbmUgSU5UUFRSX01BWCAgIElOVDY0X01BWAorIyAgZGVmaW5lIFVJTlRQVFJfTUFYICBVSU5UNjRfTUFYCisjZWxzZSAvLyBfV0lONjQgXVsKKyMgIGRlZmluZSBJTlRQVFJfTUlOICAgSU5UMzJfTUlOCisjICBkZWZpbmUgSU5UUFRSX01BWCAgIElOVDMyX01BWAorIyAgZGVmaW5lIFVJTlRQVFJfTUFYICBVSU5UMzJfTUFYCisjZW5kaWYgLy8gX1dJTjY0IF0KKworLy8gNy4xOC4yLjUgTGltaXRzIG9mIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UTUFYX01JTiAgIElOVDY0X01JTgorI2RlZmluZSBJTlRNQVhfTUFYICAgSU5UNjRfTUFYCisjZGVmaW5lIFVJTlRNQVhfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMyBMaW1pdHMgb2Ygb3RoZXIgaW50ZWdlciB0eXBlcworCisjaWZkZWYgX1dJTjY0IC8vIFsKKyMgIGRlZmluZSBQVFJESUZGX01JTiAgX0k2NF9NSU4KKyMgIGRlZmluZSBQVFJESUZGX01BWCAgX0k2NF9NQVgKKyNlbHNlICAvLyBfV0lONjQgXVsKKyMgIGRlZmluZSBQVFJESUZGX01JTiAgX0kzMl9NSU4KKyMgIGRlZmluZSBQVFJESUZGX01BWCAgX0kzMl9NQVgKKyNlbmRpZiAgLy8gX1dJTjY0IF0KKworI2RlZmluZSBTSUdfQVRPTUlDX01JTiAgSU5UX01JTgorI2RlZmluZSBTSUdfQVRPTUlDX01BWCAgSU5UX01BWAorCisjaWZuZGVmIFNJWkVfTUFYIC8vIFsKKyMgIGlmZGVmIF9XSU42NCAvLyBbCisjICAgICBkZWZpbmUgU0laRV9NQVggIF9VSTY0X01BWAorIyAgZWxzZSAvLyBfV0lONjQgXVsKKyMgICAgIGRlZmluZSBTSVpFX01BWCAgX1VJMzJfTUFYCisjICBlbmRpZiAvLyBfV0lONjQgXQorI2VuZGlmIC8vIFNJWkVfTUFYIF0KKworLy8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggYXJlIGFsc28gZGVmaW5lZCBpbiA8d2NoYXIuaD4KKyNpZm5kZWYgV0NIQVJfTUlOIC8vIFsKKyMgIGRlZmluZSBXQ0hBUl9NSU4gIDAKKyNlbmRpZiAgLy8gV0NIQVJfTUlOIF0KKyNpZm5kZWYgV0NIQVJfTUFYIC8vIFsKKyMgIGRlZmluZSBXQ0hBUl9NQVggIF9VSTE2X01BWAorI2VuZGlmICAvLyBXQ0hBUl9NQVggXQorCisjZGVmaW5lIFdJTlRfTUlOICAwCisjZGVmaW5lIFdJTlRfTUFYICBfVUkxNl9NQVgKKworI2VuZGlmIC8vIF9fU1REQ19MSU1JVF9NQUNST1MgXQorCisKKy8vIDcuMTguNCBMaW1pdHMgb2Ygb3RoZXIgaW50ZWdlciB0eXBlcworCisjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0NPTlNUQU5UX01BQ1JPUykgLy8gWyAgIFNlZSBmb290bm90ZSAyMjQgYXQgcGFnZSAyNjAKKworLy8gNy4xOC40LjEgTWFjcm9zIGZvciBtaW5pbXVtLXdpZHRoIGludGVnZXIgY29uc3RhbnRzCisKKyNkZWZpbmUgSU5UOF9DKHZhbCkgIHZhbCMjaTgKKyNkZWZpbmUgSU5UMTZfQyh2YWwpIHZhbCMjaTE2CisjZGVmaW5lIElOVDMyX0ModmFsKSB2YWwjI2kzMgorI2RlZmluZSBJTlQ2NF9DKHZhbCkgdmFsIyNpNjQKKworI2RlZmluZSBVSU5UOF9DKHZhbCkgIHZhbCMjdWk4CisjZGVmaW5lIFVJTlQxNl9DKHZhbCkgdmFsIyN1aTE2CisjZGVmaW5lIFVJTlQzMl9DKHZhbCkgdmFsIyN1aTMyCisjZGVmaW5lIFVJTlQ2NF9DKHZhbCkgdmFsIyN1aTY0CisKKy8vIDcuMTguNC4yIE1hY3JvcyBmb3IgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciBjb25zdGFudHMKKyNkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9DCisjZGVmaW5lIFVJTlRNQVhfQyAgVUlOVDY0X0MKKworI2VuZGlmIC8vIF9fU1REQ19DT05TVEFOVF9NQUNST1MgXQorCisKKyNlbmRpZiAvLyBfTVNDX1NURElOVF9IXyBdCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL1JFQURNRS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiNmZmNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDE1IEBACisKKworVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZXh0ZW5kZWQgdGVzdHMgYW5kIGEgYmVuY2htYXJrIGFnYWluc3QgZGVjaW1hbC5weToKKworICBiZW5jaC5weSAgLT4gIEJlbmNobWFyayBmb3Igc21hbGwgYW5kIGxhcmdlIHByZWNpc2lvbnMuCisgIFVzYWdlOiAuLi8uLi8uLi9weXRob24gYmVuY2gucHkKKworICBmb3JtYXRoZWxwZXIucHkgICAtPgorICByYW5kZGVjLnB5ICAgICAgICAtPiAgR2VuZXJhdGUgdGVzdCBjYXNlcyBmb3IgZGVjY2hlY2sucHkuCisgIHJhbmRmbG9hdC5weSAgICAgIC0+CisKKyAgZGVjY2hlY2sucHkgIC0+ICBSdW4gZXh0ZW5kZWQgdGVzdHMuCisgIFVzYWdlOiAuLi8uLi8uLi9weXRob24gZGVjY2hlY2sucHkgWy0tc2hvcnR8LS1tZWRpdW18LS1sb25nfC0tYWxsXQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmVuY2gucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNGEyMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JlbmNoLnB5CkBAIC0wLDAgKzEsMTM1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIworIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgTW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IFN0ZWZhbiBLcmFoLgorIworCisjIFVzYWdlOiAuLi8uLi8uLi9weXRob24gYmVuY2gucHkKKworCitpbXBvcnQgdGltZQorZnJvbSBtYXRoIGltcG9ydCBsb2csIGNlaWwKK3RyeToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKKworQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCitQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQorCisjCisjIE5PVEU6IFRoaXMgaXMgdGhlIHBpIGZ1bmN0aW9uIGZyb20gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgbW9kaWZpZWQKKyMgZm9yIGJlbmNobWFya2luZyBwdXJwb3Nlcy4gU2luY2UgZmxvYXRzIGRvIG5vdCBoYXZlIGEgY29udGV4dCwgdGhlIGhpZ2hlcgorIyBpbnRlcm1lZGlhdGUgcHJlY2lzaW9uIGZyb20gdGhlIG9yaWdpbmFsIGlzIE5PVCB1c2VkLCBzbyB0aGUgbW9kaWZpZWQKKyMgYWxnb3JpdGhtIG9ubHkgZ2l2ZXMgYW4gYXBwcm94aW1hdGlvbiB0byB0aGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0LgorIyBGb3Igc2VyaW91cyB1c2UsIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9yIHRoZSBhcHByb3ByaWF0ZSBsaXRlcmF0dXJlLgorIworZGVmIHBpX2Zsb2F0KCk6CisgICAgIiIibmF0aXZlIGZsb2F0IiIiCisgICAgbGFzdHMsIHQsIHMsIG4sIG5hLCBkLCBkYSA9IDAsIDMuMCwgMywgMSwgMCwgMCwgMjQKKyAgICB3aGlsZSBzICE9IGxhc3RzOgorICAgICAgICBsYXN0cyA9IHMKKyAgICAgICAgbiwgbmEgPSBuK25hLCBuYSs4CisgICAgICAgIGQsIGRhID0gZCtkYSwgZGErMzIKKyAgICAgICAgdCA9ICh0ICogbikgLyBkCisgICAgICAgIHMgKz0gdAorICAgIHJldHVybiBzCisKK2RlZiBwaV9jZGVjaW1hbCgpOgorICAgICIiImNkZWNpbWFsIiIiCisgICAgRCA9IEMuRGVjaW1hbAorICAgIGxhc3RzLCB0LCBzLCBuLCBuYSwgZCwgZGEgPSBEKDApLCBEKDMpLCBEKDMpLCBEKDEpLCBEKDApLCBEKDApLCBEKDI0KQorICAgIHdoaWxlIHMgIT0gbGFzdHM6CisgICAgICAgIGxhc3RzID0gcworICAgICAgICBuLCBuYSA9IG4rbmEsIG5hKzgKKyAgICAgICAgZCwgZGEgPSBkK2RhLCBkYSszMgorICAgICAgICB0ID0gKHQgKiBuKSAvIGQKKyAgICAgICAgcyArPSB0CisgICAgcmV0dXJuIHMKKworZGVmIHBpX2RlY2ltYWwoKToKKyAgICAiIiJkZWNpbWFsIiIiCisgICAgRCA9IFAuRGVjaW1hbAorICAgIGxhc3RzLCB0LCBzLCBuLCBuYSwgZCwgZGEgPSBEKDApLCBEKDMpLCBEKDMpLCBEKDEpLCBEKDApLCBEKDApLCBEKDI0KQorICAgIHdoaWxlIHMgIT0gbGFzdHM6CisgICAgICAgIGxhc3RzID0gcworICAgICAgICBuLCBuYSA9IG4rbmEsIG5hKzgKKyAgICAgICAgZCwgZGEgPSBkK2RhLCBkYSszMgorICAgICAgICB0ID0gKHQgKiBuKSAvIGQKKyAgICAgICAgcyArPSB0CisgICAgcmV0dXJuIHMKKworZGVmIGZhY3RvcmlhbChuLCBtKToKKyAgICBpZiAobiA+IG0pOgorICAgICAgICByZXR1cm4gZmFjdG9yaWFsKG0sIG4pCisgICAgZWxpZiBtID09IDA6CisgICAgICAgIHJldHVybiAxCisgICAgZWxpZiBuID09IG06CisgICAgICAgIHJldHVybiBuCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGZhY3RvcmlhbChuLCAobittKS8vMikgKiBmYWN0b3JpYWwoKG4rbSkvLzIgKyAxLCBtKQorCisKK3ByaW50KCJcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCitwcmludCgiIyAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGluZyBwaSwgMTAwMDAgaXRlcmF0aW9ucyIpCitwcmludCgiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKQorCit0b19iZW5jaG1hcmsgPSBbcGlfZmxvYXQsIHBpX2RlY2ltYWxdCitpZiBDIGlzIG5vdCBOb25lOgorICAgIHRvX2JlbmNobWFyay5pbnNlcnQoMSwgcGlfY2RlY2ltYWwpCisKK2ZvciBwcmVjIGluIFs5LCAxOV06CisgICAgcHJpbnQoIlxuUHJlY2lzaW9uOiAlZCBkZWNpbWFsIGRpZ2l0c1xuIiAlIHByZWMpCisgICAgZm9yIGZ1bmMgaW4gdG9fYmVuY2htYXJrOgorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIGlmIEMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBDLmdldGNvbnRleHQoKS5wcmVjID0gcHJlYworICAgICAgICBQLmdldGNvbnRleHQoKS5wcmVjID0gcHJlYworICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwMCk6CisgICAgICAgICAgICB4ID0gZnVuYygpCisgICAgICAgIHByaW50KCIlczoiICUgZnVuYy5fX25hbWVfXy5yZXBsYWNlKCJwaV8iLCAiIikpCisgICAgICAgIHByaW50KCJyZXN1bHQ6ICVzIiAlIHN0cih4KSkKKyAgICAgICAgcHJpbnQoInRpbWU6ICVmc1xuIiAlICh0aW1lLnRpbWUoKS1zdGFydCkpCisKKworcHJpbnQoIlxuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikKK3ByaW50KCIjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhY3RvcmlhbCIpCitwcmludCgiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKQorCitpZiBDIGlzIG5vdCBOb25lOgorICAgIGMgPSBDLmdldGNvbnRleHQoKQorICAgIGMucHJlYyA9IEMuTUFYX1BSRUMKKyAgICBjLkVtYXggPSBDLk1BWF9FTUFYCisgICAgYy5FbWluID0gQy5NSU5fRU1JTgorCitmb3IgbiBpbiBbMTAwMDAwLCAxMDAwMDAwXToKKworICAgIHByaW50KCJuID0gJWRcbiIgJSBuKQorCisgICAgaWYgQyBpcyBub3QgTm9uZToKKyAgICAgICAgIyBDIHZlcnNpb24gb2YgZGVjaW1hbAorICAgICAgICBzdGFydF9jYWxjID0gdGltZS50aW1lKCkKKyAgICAgICAgeCA9IGZhY3RvcmlhbChDLkRlY2ltYWwobiksIDApCisgICAgICAgIGVuZF9jYWxjID0gdGltZS50aW1lKCkKKyAgICAgICAgc3RhcnRfY29udiA9IHRpbWUudGltZSgpCisgICAgICAgIHN4ID0gc3RyKHgpCisgICAgICAgIGVuZF9jb252ID0gdGltZS50aW1lKCkKKyAgICAgICAgcHJpbnQoImNkZWNpbWFsOiIpCisgICAgICAgIHByaW50KCJjYWxjdWxhdGlvbiB0aW1lOiAlZnMiICUgKGVuZF9jYWxjLXN0YXJ0X2NhbGMpKQorICAgICAgICBwcmludCgiY29udmVyc2lvbiB0aW1lOiAlZnNcbiIgJSAoZW5kX2NvbnYtc3RhcnRfY29udikpCisKKyAgICAjIFB5dGhvbiBpbnRlZ2VycworICAgIHN0YXJ0X2NhbGMgPSB0aW1lLnRpbWUoKQorICAgIHkgPSBmYWN0b3JpYWwobiwgMCkKKyAgICBlbmRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgc3RhcnRfY29udiA9IHRpbWUudGltZSgpCisgICAgc3kgPSBzdHIoeSkKKyAgICBlbmRfY29udiA9ICB0aW1lLnRpbWUoKQorCisgICAgcHJpbnQoImludDoiKQorICAgIHByaW50KCJjYWxjdWxhdGlvbiB0aW1lOiAlZnMiICUgKGVuZF9jYWxjLXN0YXJ0X2NhbGMpKQorICAgIHByaW50KCJjb252ZXJzaW9uIHRpbWU6ICVmc1xuXG4iICUgKGVuZF9jb252LXN0YXJ0X2NvbnYpKQorCisgICAgaWYgQyBpcyBub3QgTm9uZToKKyAgICAgICAgYXNzZXJ0KHN4ID09IHN5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iaWdudW0ucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JpZ251bS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjdlMTYxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iaWdudW0ucHkKQEAgLTAsMCArMSw0MiBAQAorIworIyBUaGVzZSB0ZXN0cyByZXF1aXJlIGdtcHkgYW5kIHRlc3QgdGhlIGxpbWl0cyBvZiB0aGUgMzItYml0IGJ1aWxkLiBUaGUKKyMgbGltaXRzIG9mIHRoZSA2NC1iaXQgYnVpbGQgYXJlIHNvIGxhcmdlIHRoYXQgdGhleSBjYW5ub3QgYmUgdGVzdGVkCisjIG9uIGFjY2Vzc2libGUgaGFyZHdhcmUuCisjCisKK2ltcG9ydCBzeXMKK2Zyb20gZGVjaW1hbCBpbXBvcnQgKgorZnJvbSBnbXB5IGltcG9ydCBtcHoKKworCitfUHlIQVNIX01PRFVMVVMgPSBzeXMuaGFzaF9pbmZvLm1vZHVsdXMKKyMgaGFzaCB2YWx1ZXMgdG8gdXNlIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdGllcywgYW5kIG5hbnMKK19QeUhBU0hfSU5GID0gc3lzLmhhc2hfaW5mby5pbmYKK19QeUhBU0hfTkFOID0gc3lzLmhhc2hfaW5mby5uYW4KKworIyBfUHlIQVNIXzEwSU5WIGlzIHRoZSBpbnZlcnNlIG9mIDEwIG1vZHVsbyB0aGUgcHJpbWUgX1B5SEFTSF9NT0RVTFVTCitfUHlIQVNIXzEwSU5WID0gcG93KDEwLCBfUHlIQVNIX01PRFVMVVMgLSAyLCBfUHlIQVNIX01PRFVMVVMpCisKK2RlZiB4aGFzaChjb2VmZiwgZXhwKToKKyAgICBzaWduID0gMQorICAgIGlmIGNvZWZmIDwgMDoKKyAgICAgICAgc2lnbiA9IC0xCisgICAgICAgIGNvZWZmID0gLWNvZWZmCisgICAgaWYgZXhwID49IDA6CisgICAgICAgIGV4cF9oYXNoID0gcG93KDEwLCBleHAsIF9QeUhBU0hfTU9EVUxVUykKKyAgICBlbHNlOgorICAgICAgICBleHBfaGFzaCA9IHBvdyhfUHlIQVNIXzEwSU5WLCAtZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgaGFzaF8gPSBjb2VmZiAqIGV4cF9oYXNoICUgX1B5SEFTSF9NT0RVTFVTCisgICAgYW5zID0gaGFzaF8gaWYgc2lnbiA9PSAxIGVsc2UgLWhhc2hfCisgICAgcmV0dXJuIC0yIGlmIGFucyA9PSAtMSBlbHNlIGFucworCisKK3ggPSBtcHooMTApICoqIDQyNTAwMDAwMCAtIDEKK2NvZWZmID0gaW50KHgpCisKK2QgPSBEZWNpbWFsKCc5JyAqIDQyNTAwMDAwMCArICdlLTg0OTk5OTk5OScpCisKK2gxID0geGhhc2goY29lZmYsIC04NDk5OTk5OTkpCitoMiA9IGhhc2goZCkKKworYXNzZXJ0IGgyID09IGgxCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjg1M2FkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpAQCAtMCwwICsxLDExMDEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjCisjIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMKKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisjIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisjIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKyMKKworIworIyBVc2FnZTogcHl0aG9uIGRlY2NoZWNrLnB5IFstLXNob3J0fC0tbWVkaXVtfC0tbG9uZ3wtLWFsbF0KKyMKKworaW1wb3J0IHN5cywgcmFuZG9tCitmcm9tIGNvcHkgaW1wb3J0IGNvcHkKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSByYW5kZGVjIGltcG9ydCByYW5kZmxvYXQsIGFsbF91bmFyeSwgYWxsX2JpbmFyeSwgYWxsX3Rlcm5hcnkKK2Zyb20gcmFuZGRlYyBpbXBvcnQgdW5hcnlfb3B0YXJnLCBiaW5hcnlfb3B0YXJnLCB0ZXJuYXJ5X29wdGFyZworZnJvbSBmb3JtYXRoZWxwZXIgaW1wb3J0IHJhbmRfZm9ybWF0LCByYW5kX2xvY2FsZQorCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCitFWElUX1NUQVRVUyA9IDAKKworCisjIENvbnRhaW5zIGFsbCBjYXRlZ29yaWVzIG9mIERlY2ltYWwgbWV0aG9kcy4KK0Z1bmN0aW9ucyA9IHsKKyAgICAjIFBsYWluIHVuYXJ5OgorICAgICd1bmFyeSc6ICgKKyAgICAgICAgJ19fYWJzX18nLCAnX19ib29sX18nLCAnX19jZWlsX18nLCAnX19jb21wbGV4X18nLCAnX19jb3B5X18nLAorICAgICAgICAnX19mbG9vcl9fJywgJ19fZmxvYXRfXycsICdfX2hhc2hfXycsICdfX2ludF9fJywgJ19fbmVnX18nLAorICAgICAgICAnX19wb3NfXycsICdfX3JlZHVjZV9fJywgJ19fcmVwcl9fJywgJ19fc3RyX18nLCAnX190cnVuY19fJywKKyAgICAgICAgJ2FkanVzdGVkJywgJ2FzX3R1cGxlJywgJ2Nhbm9uaWNhbCcsICdjb25qdWdhdGUnLCAnY29weV9hYnMnLAorICAgICAgICAnY29weV9uZWdhdGUnLCAnaXNfY2Fub25pY2FsJywgJ2lzX2Zpbml0ZScsICdpc19pbmZpbml0ZScsCisgICAgICAgICdpc19uYW4nLCAnaXNfcW5hbicsICdpc19zaWduZWQnLCAnaXNfc25hbicsICdpc196ZXJvJywgJ3JhZGl4JworICAgICksCisgICAgIyBVbmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CisgICAgJ3VuYXJ5X2N0eCc6ICgKKyAgICAgICAgJ2V4cCcsICdpc19ub3JtYWwnLCAnaXNfc3Vibm9ybWFsJywgJ2xuJywgJ2xvZzEwJywgJ2xvZ2InLAorICAgICAgICAnbG9naWNhbF9pbnZlcnQnLCAnbmV4dF9taW51cycsICduZXh0X3BsdXMnLCAnbm9ybWFsaXplJywKKyAgICAgICAgJ251bWJlcl9jbGFzcycsICdzcXJ0JywgJ3RvX2VuZ19zdHJpbmcnCisgICAgKSwKKyAgICAjIFVuYXJ5IHdpdGggb3B0aW9uYWwgcm91bmRpbmcgbW9kZSBhbmQgY29udGV4dDoKKyAgICAndW5hcnlfcm5kX2N0eCc6ICgndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfZXhhY3QnLCAndG9faW50ZWdyYWxfdmFsdWUnKSwKKyAgICAjIFBsYWluIGJpbmFyeToKKyAgICAnYmluYXJ5JzogKAorICAgICAgICAnX19hZGRfXycsICdfX2Rpdm1vZF9fJywgJ19fZXFfXycsICdfX2Zsb29yZGl2X18nLCAnX19nZV9fJywgJ19fZ3RfXycsCisgICAgICAgICdfX2xlX18nLCAnX19sdF9fJywgJ19fbW9kX18nLCAnX19tdWxfXycsICdfX25lX18nLCAnX19wb3dfXycsCisgICAgICAgICdfX3JhZGRfXycsICdfX3JkaXZtb2RfXycsICdfX3JmbG9vcmRpdl9fJywgJ19fcm1vZF9fJywgJ19fcm11bF9fJywKKyAgICAgICAgJ19fcnBvd19fJywgJ19fcnN1Yl9fJywgJ19fcnRydWVkaXZfXycsICdfX3N1Yl9fJywgJ19fdHJ1ZWRpdl9fJywKKyAgICAgICAgJ2NvbXBhcmVfdG90YWwnLCAnY29tcGFyZV90b3RhbF9tYWcnLCAnY29weV9zaWduJywgJ3F1YW50aXplJywKKyAgICAgICAgJ3NhbWVfcXVhbnR1bScKKyAgICApLAorICAgICMgQmluYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKKyAgICAnYmluYXJ5X2N0eCc6ICgKKyAgICAgICAgJ2NvbXBhcmUnLCAnY29tcGFyZV9zaWduYWwnLCAnbG9naWNhbF9hbmQnLCAnbG9naWNhbF9vcicsICdsb2dpY2FsX3hvcicsCisgICAgICAgICdtYXgnLCAnbWF4X21hZycsICdtaW4nLCAnbWluX21hZycsICduZXh0X3Rvd2FyZCcsICdyZW1haW5kZXJfbmVhcicsCisgICAgICAgICdyb3RhdGUnLCAnc2NhbGViJywgJ3NoaWZ0JworICAgICksCisgICAgIyBQbGFpbiB0ZXJuYXJ5OgorICAgICd0ZXJuYXJ5JzogKCdfX3Bvd19fJywpLAorICAgICMgVGVybmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CisgICAgJ3Rlcm5hcnlfY3R4JzogKCdmbWEnLCksCisgICAgIyBTcGVjaWFsOgorICAgICdzcGVjaWFsJzogKCdfX2Zvcm1hdF9fJywgJ19fcmVkdWNlX2V4X18nLCAnX19yb3VuZF9fJywgJ2Zyb21fZmxvYXQnLAorICAgICAgICAgICAgICAgICdxdWFudGl6ZScpLAorICAgICMgUHJvcGVydGllczoKKyAgICAncHJvcGVydHknOiAoJ3JlYWwnLCAnaW1hZycpCit9CisKKyMgQ29udGFpbnMgYWxsIGNhdGVnb3JpZXMgb2YgQ29udGV4dCBtZXRob2RzLiBUaGUgbi1hcnkgY2xhc3NpZmljYXRpb24KKyMgYXBwbGllcyB0byB0aGUgbnVtYmVyIG9mIERlY2ltYWwgYXJndW1lbnRzLgorQ29udGV4dEZ1bmN0aW9ucyA9IHsKKyAgICAjIFBsYWluIG51bGxhcnk6CisgICAgJ251bGxhcnknOiAoJ2NvbnRleHQuX19oYXNoX18nLCAnY29udGV4dC5fX3JlZHVjZV9fJywgJ2NvbnRleHQucmFkaXgnKSwKKyAgICAjIFBsYWluIHVuYXJ5OgorICAgICd1bmFyeSc6ICgnY29udGV4dC5hYnMnLCAnY29udGV4dC5jYW5vbmljYWwnLCAnY29udGV4dC5jb3B5X2FicycsCisgICAgICAgICAgICAgICdjb250ZXh0LmNvcHlfZGVjaW1hbCcsICdjb250ZXh0LmNvcHlfbmVnYXRlJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuY3JlYXRlX2RlY2ltYWwnLCAnY29udGV4dC5leHAnLCAnY29udGV4dC5pc19jYW5vbmljYWwnLAorICAgICAgICAgICAgICAnY29udGV4dC5pc19maW5pdGUnLCAnY29udGV4dC5pc19pbmZpbml0ZScsICdjb250ZXh0LmlzX25hbicsCisgICAgICAgICAgICAgICdjb250ZXh0LmlzX25vcm1hbCcsICdjb250ZXh0LmlzX3FuYW4nLCAnY29udGV4dC5pc19zaWduZWQnLAorICAgICAgICAgICAgICAnY29udGV4dC5pc19zbmFuJywgJ2NvbnRleHQuaXNfc3Vibm9ybWFsJywgJ2NvbnRleHQuaXNfemVybycsCisgICAgICAgICAgICAgICdjb250ZXh0LmxuJywgJ2NvbnRleHQubG9nMTAnLCAnY29udGV4dC5sb2diJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQubG9naWNhbF9pbnZlcnQnLCAnY29udGV4dC5taW51cycsICdjb250ZXh0Lm5leHRfbWludXMnLAorICAgICAgICAgICAgICAnY29udGV4dC5uZXh0X3BsdXMnLCAnY29udGV4dC5ub3JtYWxpemUnLCAnY29udGV4dC5udW1iZXJfY2xhc3MnLAorICAgICAgICAgICAgICAnY29udGV4dC5wbHVzJywgJ2NvbnRleHQuc3FydCcsICdjb250ZXh0LnRvX2VuZ19zdHJpbmcnLAorICAgICAgICAgICAgICAnY29udGV4dC50b19pbnRlZ3JhbCcsICdjb250ZXh0LnRvX2ludGVncmFsX2V4YWN0JywKKyAgICAgICAgICAgICAgJ2NvbnRleHQudG9faW50ZWdyYWxfdmFsdWUnLCAnY29udGV4dC50b19zY2lfc3RyaW5nJworICAgICksCisgICAgIyBQbGFpbiBiaW5hcnk6CisgICAgJ2JpbmFyeSc6ICgnY29udGV4dC5hZGQnLCAnY29udGV4dC5jb21wYXJlJywgJ2NvbnRleHQuY29tcGFyZV9zaWduYWwnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuY29tcGFyZV90b3RhbCcsICdjb250ZXh0LmNvbXBhcmVfdG90YWxfbWFnJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmNvcHlfc2lnbicsICdjb250ZXh0LmRpdmlkZScsICdjb250ZXh0LmRpdmlkZV9pbnQnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuZGl2bW9kJywgJ2NvbnRleHQubG9naWNhbF9hbmQnLCAnY29udGV4dC5sb2dpY2FsX29yJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmxvZ2ljYWxfeG9yJywgJ2NvbnRleHQubWF4JywgJ2NvbnRleHQubWF4X21hZycsCisgICAgICAgICAgICAgICAnY29udGV4dC5taW4nLCAnY29udGV4dC5taW5fbWFnJywgJ2NvbnRleHQubXVsdGlwbHknLAorICAgICAgICAgICAgICAgJ2NvbnRleHQubmV4dF90b3dhcmQnLCAnY29udGV4dC5wb3dlcicsICdjb250ZXh0LnF1YW50aXplJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LnJlbWFpbmRlcicsICdjb250ZXh0LnJlbWFpbmRlcl9uZWFyJywgJ2NvbnRleHQucm90YXRlJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LnNhbWVfcXVhbnR1bScsICdjb250ZXh0LnNjYWxlYicsICdjb250ZXh0LnNoaWZ0JywKKyAgICAgICAgICAgICAgICdjb250ZXh0LnN1YnRyYWN0JworICAgICksCisgICAgIyBQbGFpbiB0ZXJuYXJ5OgorICAgICd0ZXJuYXJ5JzogKCdjb250ZXh0LmZtYScsICdjb250ZXh0LnBvd2VyJyksCisgICAgIyBTcGVjaWFsOgorICAgICdzcGVjaWFsJzogKCdjb250ZXh0Ll9fcmVkdWNlX2V4X18nLCAnY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0JykKK30KKworIyBGdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgcmVzdHJpY3RlZCBleHBvbmVudCByYW5nZSBmb3IgcmVhc29uYWJsZSBydW50aW1lcy4KK1VuYXJ5UmVzdHJpY3RlZCA9IFsKKyAgJ19fY2VpbF9fJywgJ19fZmxvb3JfXycsICdfX2ludF9fJywgJ19fbG9uZ19fJywgJ19fdHJ1bmNfXycsCisgICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKK10KKworQmluYXJ5UmVzdHJpY3RlZCA9IFsnX19yb3VuZF9fJ10KKworVGVybmFyeVJlc3RyaWN0ZWQgPSBbJ19fcG93X18nLCAnY29udGV4dC5wb3dlciddCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZpZWQgQ29udGV4dAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgVHJhbnNsYXRlIHN5bWJvbHMuCitDb25kTWFwID0geworICAgICAgICBDLkNsYW1wZWQ6ICAgICAgICAgICAgIFAuQ2xhbXBlZCwKKyAgICAgICAgQy5Db252ZXJzaW9uU3ludGF4OiAgICBQLkNvbnZlcnNpb25TeW50YXgsCisgICAgICAgIEMuRGl2aXNpb25CeVplcm86ICAgICAgUC5EaXZpc2lvbkJ5WmVybywKKyAgICAgICAgQy5EaXZpc2lvbkltcG9zc2libGU6ICBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgIEMuRGl2aXNpb25VbmRlZmluZWQ6ICAgUC5EaXZpc2lvblVuZGVmaW5lZCwKKyAgICAgICAgQy5JbmV4YWN0OiAgICAgICAgICAgICBQLkluZXhhY3QsCisgICAgICAgIEMuSW52YWxpZENvbnRleHQ6ICAgICAgUC5JbnZhbGlkQ29udGV4dCwKKyAgICAgICAgQy5JbnZhbGlkT3BlcmF0aW9uOiAgICBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgIEMuT3ZlcmZsb3c6ICAgICAgICAgICAgUC5PdmVyZmxvdywKKyAgICAgICAgQy5Sb3VuZGVkOiAgICAgICAgICAgICBQLlJvdW5kZWQsCisgICAgICAgIEMuU3Vibm9ybWFsOiAgICAgICAgICAgUC5TdWJub3JtYWwsCisgICAgICAgIEMuVW5kZXJmbG93OiAgICAgICAgICAgUC5VbmRlcmZsb3csCisgICAgICAgIEMuRmxvYXRPcGVyYXRpb246ICAgICAgUC5GbG9hdE9wZXJhdGlvbiwKK30KKworUm91bmRNb2RlcyA9IFtDLlJPVU5EX1VQLCBDLlJPVU5EX0RPV04sIEMuUk9VTkRfQ0VJTElORywgQy5ST1VORF9GTE9PUiwKKyAgICAgICAgICAgICAgQy5ST1VORF9IQUxGX1VQLCBDLlJPVU5EX0hBTEZfRE9XTiwgQy5ST1VORF9IQUxGX0VWRU4sCisgICAgICAgICAgICAgIEMuUk9VTkRfMDVVUF0KKworCitjbGFzcyBDb250ZXh0KG9iamVjdCk6CisgICAgIiIiUHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSBvZiBzeW5jaW5nIHRoZSBDIGFuZCBQIGNvbnRleHRzIiIiCisKKyAgICBfX3Nsb3RzX18gPSBbJ2MnLCAncCddCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY19jdHg9Tm9uZSwgcF9jdHg9Tm9uZSk6CisgICAgICAgICIiIkluaXRpYWxpemF0aW9uIGlzIGZyb20gdGhlIEMgY29udGV4dCIiIgorICAgICAgICBzZWxmLmMgPSBDLmdldGNvbnRleHQoKSBpZiBjX2N0eCBpcyBOb25lIGVsc2UgY19jdHgKKyAgICAgICAgc2VsZi5wID0gUC5nZXRjb250ZXh0KCkgaWYgcF9jdHggaXMgTm9uZSBlbHNlIHBfY3R4CisgICAgICAgIHNlbGYucC5wcmVjID0gc2VsZi5jLnByZWMKKyAgICAgICAgc2VsZi5wLkVtaW4gPSBzZWxmLmMuRW1pbgorICAgICAgICBzZWxmLnAuRW1heCA9IHNlbGYuYy5FbWF4CisgICAgICAgIHNlbGYucC5yb3VuZGluZyA9IHNlbGYuYy5yb3VuZGluZworICAgICAgICBzZWxmLnAuY2FwaXRhbHMgPSBzZWxmLmMuY2FwaXRhbHMKKyAgICAgICAgc2VsZi5zZXR0cmFwcyhbc2lnIGZvciBzaWcgaW4gc2VsZi5jLnRyYXBzIGlmIHNlbGYuYy50cmFwc1tzaWddXSkKKyAgICAgICAgc2VsZi5zZXRzdGF0dXMoW3NpZyBmb3Igc2lnIGluIHNlbGYuYy5mbGFncyBpZiBzZWxmLmMuZmxhZ3Nbc2lnXV0pCisgICAgICAgIHNlbGYucC5jbGFtcCA9IHNlbGYuYy5jbGFtcAorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5jKSArICdcbicgKyBzdHIoc2VsZi5wKQorCisgICAgZGVmIGdldHByZWMoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMucHJlYyA9PSBzZWxmLnAucHJlYykKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5wcmVjCisKKyAgICBkZWYgc2V0cHJlYyhzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMucHJlYyA9IHZhbAorICAgICAgICBzZWxmLnAucHJlYyA9IHZhbAorCisgICAgZGVmIGdldGVtaW4oc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuRW1pbiA9PSBzZWxmLnAuRW1pbikKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5FbWluCisKKyAgICBkZWYgc2V0ZW1pbihzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuRW1pbiA9IHZhbAorICAgICAgICBzZWxmLnAuRW1pbiA9IHZhbAorCisgICAgZGVmIGdldGVtYXgoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuRW1heCA9PSBzZWxmLnAuRW1heCkKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5FbWF4CisKKyAgICBkZWYgc2V0ZW1heChzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuRW1heCA9IHZhbAorICAgICAgICBzZWxmLnAuRW1heCA9IHZhbAorCisgICAgZGVmIGdldHJvdW5kKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLnJvdW5kaW5nID09IHNlbGYucC5yb3VuZGluZykKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5yb3VuZGluZworCisgICAgZGVmIHNldHJvdW5kKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5yb3VuZGluZyA9IHZhbAorICAgICAgICBzZWxmLnAucm91bmRpbmcgPSB2YWwKKworICAgIGRlZiBnZXRjYXBpdGFscyhzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5jYXBpdGFscyA9PSBzZWxmLnAuY2FwaXRhbHMpCisgICAgICAgIHJldHVybiBzZWxmLmMuY2FwaXRhbHMKKworICAgIGRlZiBzZXRjYXBpdGFscyhzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMuY2FwaXRhbHMgPSB2YWwKKyAgICAgICAgc2VsZi5wLmNhcGl0YWxzID0gdmFsCisKKyAgICBkZWYgZ2V0Y2xhbXAoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuY2xhbXAgPT0gc2VsZi5wLmNsYW1wKQorICAgICAgICByZXR1cm4gc2VsZi5jLmNsYW1wCisKKyAgICBkZWYgc2V0Y2xhbXAoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLmNsYW1wID0gdmFsCisgICAgICAgIHNlbGYucC5jbGFtcCA9IHZhbAorCisgICAgcHJlYyA9IHByb3BlcnR5KGdldHByZWMsIHNldHByZWMpCisgICAgRW1pbiA9IHByb3BlcnR5KGdldGVtaW4sIHNldGVtaW4pCisgICAgRW1heCA9IHByb3BlcnR5KGdldGVtYXgsIHNldGVtYXgpCisgICAgcm91bmRpbmcgPSBwcm9wZXJ0eShnZXRyb3VuZCwgc2V0cm91bmQpCisgICAgY2xhbXAgPSBwcm9wZXJ0eShnZXRjbGFtcCwgc2V0Y2xhbXApCisgICAgY2FwaXRhbHMgPSBwcm9wZXJ0eShnZXRjYXBpdGFscywgc2V0Y2FwaXRhbHMpCisKKyAgICBkZWYgY2xlYXJfdHJhcHMoc2VsZik6CisgICAgICAgIHNlbGYuYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciB0cmFwIGluIHNlbGYucC50cmFwczoKKyAgICAgICAgICAgIHNlbGYucC50cmFwc1t0cmFwXSA9IEZhbHNlCisKKyAgICBkZWYgY2xlYXJfc3RhdHVzKHNlbGYpOgorICAgICAgICBzZWxmLmMuY2xlYXJfZmxhZ3MoKQorICAgICAgICBzZWxmLnAuY2xlYXJfZmxhZ3MoKQorCisgICAgZGVmIHNldHRyYXBzKHNlbGYsIGxzdCk6CisgICAgICAgICIiImxzdDogQyBzaWduYWwgbGlzdCIiIgorICAgICAgICBzZWxmLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBsc3Q6CisgICAgICAgICAgICBzZWxmLmMudHJhcHNbc2lnbmFsXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucC50cmFwc1tDb25kTWFwW3NpZ25hbF1dID0gVHJ1ZQorCisgICAgZGVmIHNldHN0YXR1cyhzZWxmLCBsc3QpOgorICAgICAgICAiIiJsc3Q6IEMgc2lnbmFsIGxpc3QiIiIKKyAgICAgICAgc2VsZi5jbGVhcl9zdGF0dXMoKQorICAgICAgICBmb3Igc2lnbmFsIGluIGxzdDoKKyAgICAgICAgICAgIHNlbGYuYy5mbGFnc1tzaWduYWxdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5wLmZsYWdzW0NvbmRNYXBbc2lnbmFsXV0gPSBUcnVlCisKKyAgICBkZWYgYXNzZXJ0X2VxX3N0YXR1cyhzZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IGVxdWFsaXR5IG9mIEMgYW5kIFAgc3RhdHVzIiIiCisgICAgICAgIGZvciBzaWduYWwgaW4gc2VsZi5jLmZsYWdzOgorICAgICAgICAgICAgaWYgc2VsZi5jLmZsYWdzW3NpZ25hbF0gPT0gKG5vdCBzZWxmLnAuZmxhZ3NbQ29uZE1hcFtzaWduYWxdXSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKworIyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbnMgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB0aGUgc3RhdHVzIGZsYWdzLgorY29udGV4dCA9IENvbnRleHQoKQorY29udGV4dC5FbWluID0gQy5NSU5fRU1JTgorY29udGV4dC5FbWF4ID0gQy5NQVhfRU1BWAorY29udGV4dC5jbGVhcl90cmFwcygpCisKKyMgV2hlbiBjcmVhdGluZyBkZWNpbWFscywgX2RlY2ltYWwgaXMgdWx0aW1hdGVseSBsaW1pdGVkIGJ5IHRoZSBtYXhpbXVtCisjIGNvbnRleHQgdmFsdWVzLiBXZSBlbXVsYXRlIHRoaXMgcmVzdHJpY3Rpb24gZm9yIGRlY2ltYWwucHkuCittYXhjb250ZXh0ID0gUC5Db250ZXh0KAorICAgIHByZWM9Qy5NQVhfUFJFQywKKyAgICBFbWluPUMuTUlOX0VNSU4sCisgICAgRW1heD1DLk1BWF9FTUFYLAorICAgIHJvdW5kaW5nPVAuUk9VTkRfSEFMRl9VUCwKKyAgICBjYXBpdGFscz0xCispCittYXhjb250ZXh0LmNsYW1wID0gMAorCitkZWYgUmVzdHJpY3RlZERlY2ltYWwodmFsdWUpOgorICAgIG1heGNvbnRleHQudHJhcHMgPSBjb3B5KGNvbnRleHQucC50cmFwcykKKyAgICBtYXhjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwKCkKKyAgICBkZWMgPSBtYXhjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHZhbHVlKQorICAgIGlmIG1heGNvbnRleHQuZmxhZ3NbUC5JbmV4YWN0XSBvciBcCisgICAgICAgbWF4Y29udGV4dC5mbGFnc1tQLlJvdW5kZWRdIG9yIFwKKyAgICAgICBtYXhjb250ZXh0LmZsYWdzW1AuQ2xhbXBlZF0gb3IgXAorICAgICAgIG1heGNvbnRleHQuZmxhZ3NbUC5JbnZhbGlkT3BlcmF0aW9uXToKKyAgICAgICAgcmV0dXJuIGNvbnRleHQucC5fcmFpc2VfZXJyb3IoUC5JbnZhbGlkT3BlcmF0aW9uKQorICAgIGlmIG1heGNvbnRleHQuZmxhZ3NbUC5GbG9hdE9wZXJhdGlvbl06CisgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLkZsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgICByZXR1cm4gZGVjCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgVGVzdFNldDogT3JnYW5pemUgZGF0YSBhbmQgZXZlbnRzIGR1cmluZyBhIHNpbmdsZSB0ZXN0IGNhc2UKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBSZXN0cmljdGVkTGlzdChsaXN0KToKKyAgICAiIiJMaXN0IHRoYXQgY2FuIG9ubHkgYmUgbW9kaWZpZWQgYnkgYXBwZW5kaW5nIGl0ZW1zLiIiIgorICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lICE9ICdhcHBlbmQnOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoInVuc3VwcG9ydGVkIG9wZXJhdGlvbiIpCisgICAgICAgIHJldHVybiBsaXN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKKyAgICBkZWYgdW5zdXBwb3J0ZWQoc2VsZiwgKl8pOgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigidW5zdXBwb3J0ZWQgb3BlcmF0aW9uIikKKyAgICBfX2FkZF9fID0gX19kZWxhdHRyX18gPSBfX2RlbGl0ZW1fXyA9IF9faWFkZF9fID0gX19pbXVsX18gPSB1bnN1cHBvcnRlZAorICAgIF9fbXVsX18gPSBfX3JldmVyc2VkX18gPSBfX3JtdWxfXyA9IF9fc2V0YXR0cl9fID0gX19zZXRpdGVtX18gPSB1bnN1cHBvcnRlZAorCitjbGFzcyBUZXN0U2V0KG9iamVjdCk6CisgICAgIiIiQSBUZXN0U2V0IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBpbnB1dCBvcGVyYW5kcywgY29udmVydGVkIG9wZXJhbmRzLAorICAgICAgIFB5dGhvbiBleGNlcHRpb25zIHRoYXQgb2NjdXJyZWQgZWl0aGVyIGR1cmluZyBjb252ZXJzaW9uIG9yIGR1cmluZworICAgICAgIGV4ZWN1dGlvbiBvZiB0aGUgYWN0dWFsIGZ1bmN0aW9uLCBhbmQgdGhlIGZpbmFsIHJlc3VsdHMuCisKKyAgICAgICBGb3Igc2FmZXR5LCBtb3N0IGF0dHJpYnV0ZXMgYXJlIGxpc3RzIHRoYXQgb25seSBzdXBwb3J0IHRoZSBhcHBlbmQKKyAgICAgICBvcGVyYXRpb24uCisKKyAgICAgICBJZiBhIGZ1bmN0aW9uIG5hbWUgaXMgcHJlZml4ZWQgd2l0aCAnY29udGV4dC4nLCB0aGUgY29ycmVzcG9uZGluZworICAgICAgIGNvbnRleHQgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY25hbWUsIG9wZXJhbmRzKToKKyAgICAgICAgaWYgZnVuY25hbWUuc3RhcnRzd2l0aCgiY29udGV4dC4iKToKKyAgICAgICAgICAgIHNlbGYuZnVuY25hbWUgPSBmdW5jbmFtZS5yZXBsYWNlKCJjb250ZXh0LiIsICIiKQorICAgICAgICAgICAgc2VsZi5jb250ZXh0ZnVuYyA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZnVuY25hbWUgPSBmdW5jbmFtZQorICAgICAgICAgICAgc2VsZi5jb250ZXh0ZnVuYyA9IEZhbHNlCisgICAgICAgIHNlbGYub3AgPSBvcGVyYW5kcyAgICAgICAgICAgICAgICMgcmF3IG9wZXJhbmQgdHVwbGUKKyAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dCAgICAgICAgICAgIyBjb250ZXh0IHVzZWQgZm9yIHRoZSBvcGVyYXRpb24KKyAgICAgICAgc2VsZi5jb3AgPSBSZXN0cmljdGVkTGlzdCgpICAgICAgIyBjb252ZXJ0ZWQgQy5EZWNpbWFsIG9wZXJhbmRzCisgICAgICAgIHNlbGYuY2V4ID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgUHl0aG9uIGV4Y2VwdGlvbnMgZm9yIEMuRGVjaW1hbAorICAgICAgICBzZWxmLmNyZXN1bHRzID0gUmVzdHJpY3RlZExpc3QoKSAjIEMuRGVjaW1hbCByZXN1bHRzCisgICAgICAgIHNlbGYucG9wID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgY29udmVydGVkIFAuRGVjaW1hbCBvcGVyYW5kcworICAgICAgICBzZWxmLnBleCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIFB5dGhvbiBleGNlcHRpb25zIGZvciBQLkRlY2ltYWwKKyAgICAgICAgc2VsZi5wcmVzdWx0cyA9IFJlc3RyaWN0ZWRMaXN0KCkgIyBQLkRlY2ltYWwgcmVzdWx0cworCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICBTa2lwSGFuZGxlcjogc2tpcCBrbm93biBkaXNjcmVwYW5jaWVzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgU2tpcEhhbmRsZXI6CisgICAgIiIiSGFuZGxlIGtub3duIGRpc2NyZXBhbmNpZXMgYmV0d2VlbiBkZWNpbWFsLnB5IGFuZCBfZGVjaW1hbC5zby4KKyAgICAgICBUaGVzZSBhcmUgZWl0aGVyIFVMUCBkaWZmZXJlbmNlcyBpbiB0aGUgcG93ZXIgZnVuY3Rpb24gb3IKKyAgICAgICBleHRyZW1lbHkgbWlub3IgaXNzdWVzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnVscGRpZmYgPSAwCisgICAgICAgIHNlbGYucG93bW9kX3plcm9zID0gMAorICAgICAgICBzZWxmLm1heGN0eCA9IFAuQ29udGV4dChFbWF4PTEwKioxOCwgRW1pbj0tMTAqKjE4KQorCisgICAgZGVmIGRlZmF1bHQoc2VsZiwgdCk6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIF9fZ2VfXyA9ICBfX2d0X18gPSBfX2xlX18gPSBfX2x0X18gPSBfX25lX18gPSBfX2VxX18gPSBkZWZhdWx0CisgICAgX19yZWR1Y2VfXyA9IF9fZm9ybWF0X18gPSBfX3JlcHJfXyA9IF9fc3RyX18gPSBkZWZhdWx0CisKKyAgICBkZWYgaGFycmlzb25fdWxwKHNlbGYsIGRlYyk6CisgICAgICAgICIiImZ0cDovL2Z0cC5pbnJpYS5mci9JTlJJQS9wdWJsaWNhdGlvbi9wdWJsaS1wZGYvUlIvUlItNTUwNC5wZGYiIiIKKyAgICAgICAgYSA9IGRlYy5uZXh0X3BsdXMoKQorICAgICAgICBiID0gZGVjLm5leHRfbWludXMoKQorICAgICAgICByZXR1cm4gYWJzKGEgLSBiKQorCisgICAgZGVmIHN0YW5kYXJkX3VscChzZWxmLCBkZWMsIHByZWMpOgorICAgICAgICByZXR1cm4gUC5fZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgZGVjLl9leHArbGVuKGRlYy5faW50KS1wcmVjKQorCisgICAgZGVmIHJvdW5kaW5nX2RpcmVjdGlvbihzZWxmLCB4LCBtb2RlKToKKyAgICAgICAgIiIiRGV0ZXJtaW5lIHRoZSBlZmZlY3RpdmUgZGlyZWN0aW9uIG9mIHRoZSByb3VuZGluZyB3aGVuCisgICAgICAgICAgIHRoZSBleGFjdCByZXN1bHQgeCBpcyByb3VuZGVkIGFjY29yZGluZyB0byBtb2RlLgorICAgICAgICAgICBSZXR1cm4gLTEgZm9yIGRvd253YXJkcywgMCBmb3IgdW5kaXJlY3RlZCwgMSBmb3IgdXB3YXJkcywKKyAgICAgICAgICAgMiBmb3IgUk9VTkRfMDVVUC4iIiIKKyAgICAgICAgY21wID0gMSBpZiB4LmNvbXBhcmVfdG90YWwoUC5EZWNpbWFsKCIrMCIpKSA+PSAwIGVsc2UgLTEKKworICAgICAgICBpZiBtb2RlIGluIChQLlJPVU5EX0hBTEZfRVZFTiwgUC5ST1VORF9IQUxGX1VQLCBQLlJPVU5EX0hBTEZfRE9XTik6CisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF9DRUlMSU5HOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfRkxPT1I6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfVVA6CisgICAgICAgICAgICByZXR1cm4gY21wCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX0RPV046CisgICAgICAgICAgICByZXR1cm4gLWNtcAorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF8wNVVQOgorICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgcm91bmRpbmcgbW9kZTogJXMiICUgbW9kZSkKKworICAgIGRlZiBjaGVja191bHBkaWZmKHNlbGYsIGV4YWN0LCByb3VuZGVkKToKKyAgICAgICAgIyBjdXJyZW50IHByZWNpc2lvbgorICAgICAgICBwID0gY29udGV4dC5wLnByZWMKKworICAgICAgICAjIENvbnZlcnQgaW5maW5pdGllcyB0byB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciArIDEuCisgICAgICAgIHggPSBleGFjdAorICAgICAgICBpZiBleGFjdC5pc19pbmZpbml0ZSgpOgorICAgICAgICAgICAgeCA9IFAuX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgIHkgPSByb3VuZGVkCisgICAgICAgIGlmIHJvdW5kZWQuaXNfaW5maW5pdGUoKToKKyAgICAgICAgICAgIHkgPSBQLl9kZWNfZnJvbV90cmlwbGUocm91bmRlZC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisKKyAgICAgICAgIyBlcnIgPSAocm91bmRlZCAtIGV4YWN0KSAvIHVscChyb3VuZGVkKQorICAgICAgICBzZWxmLm1heGN0eC5wcmVjID0gcCAqIDIKKyAgICAgICAgdCA9IHNlbGYubWF4Y3R4LnN1YnRyYWN0KHksIHgpCisgICAgICAgIGlmIGNvbnRleHQuYy5mbGFnc1tDLkNsYW1wZWRdIG9yIFwKKyAgICAgICAgICAgY29udGV4dC5jLmZsYWdzW0MuVW5kZXJmbG93XToKKyAgICAgICAgICAgICMgVGhlIHN0YW5kYXJkIHVscCBkb2VzIG5vdCB3b3JrIGluIFVuZGVyZmxvdyB0ZXJyaXRvcnkuCisgICAgICAgICAgICB1bHAgPSBzZWxmLmhhcnJpc29uX3VscCh5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdWxwID0gc2VsZi5zdGFuZGFyZF91bHAoeSwgcCkKKyAgICAgICAgIyBFcnJvciBpbiB1bHBzLgorICAgICAgICBlcnIgPSBzZWxmLm1heGN0eC5kaXZpZGUodCwgdWxwKQorCisgICAgICAgIGRpciA9IHNlbGYucm91bmRpbmdfZGlyZWN0aW9uKHgsIGNvbnRleHQucC5yb3VuZGluZykKKyAgICAgICAgaWYgZGlyID09IDA6CisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0wLjYiKSA8IGVyciA8IFAuRGVjaW1hbCgiMC42Iik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxpZiBkaXIgPT0gMTogIyBkaXJlY3RlZCwgdXB3YXJkcworICAgICAgICAgICAgaWYgUC5EZWNpbWFsKCItMC4xIikgPCBlcnIgPCBQLkRlY2ltYWwoIjEuMSIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsaWYgZGlyID09IC0xOiAjIGRpcmVjdGVkLCBkb3dud2FyZHMKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTEuMSIpIDwgZXJyIDwgUC5EZWNpbWFsKCIwLjEiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOiAjIFJPVU5EXzA1VVAKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTEuMSIpIDwgZXJyIDwgUC5EZWNpbWFsKCIxLjEiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHByaW50KCJ1bHA6ICVzICBlcnJvcjogJXMgIGV4YWN0OiAlcyAgY19yb3VuZGVkOiAlcyIKKyAgICAgICAgICAgICAgJSAodWxwLCBlcnIsIGV4YWN0LCByb3VuZGVkKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgYmluX3Jlc29sdmVfdWxwKHNlbGYsIHQpOgorICAgICAgICAiIiJDaGVjayBpZiByZXN1bHRzIG9mIF9kZWNpbWFsJ3MgcG93ZXIgZnVuY3Rpb24gYXJlIHdpdGhpbiB0aGUKKyAgICAgICAgICAgYWxsb3dlZCB1bHAgcmFuZ2VzLiIiIgorICAgICAgICAjIE5hTnMgYXJlIGJleW9uZCByZXBhaXIuCisgICAgICAgIGlmIHQucmMuaXNfbmFuKCkgb3IgdC5ycC5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgImV4YWN0IiByZXN1bHQsIGRvdWJsZSBwcmVjaXNpb24sIGhhbGZfZXZlbgorICAgICAgICBzZWxmLm1heGN0eC5wcmVjID0gY29udGV4dC5wLnByZWMgKiAyCisKKyAgICAgICAgb3AxLCBvcDIgPSB0LnBvcFswXSwgdC5wb3BbMV0KKyAgICAgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgICAgIGV4YWN0ID0gZ2V0YXR0cihzZWxmLm1heGN0eCwgdC5mdW5jbmFtZSkob3AxLCBvcDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGFjdCA9IGdldGF0dHIob3AxLCB0LmZ1bmNuYW1lKShvcDIsIGNvbnRleHQ9c2VsZi5tYXhjdHgpCisKKyAgICAgICAgIyBfZGVjaW1hbCdzIHJvdW5kZWQgcmVzdWx0CisgICAgICAgIHJvdW5kZWQgPSBQLkRlY2ltYWwodC5jcmVzdWx0c1swXSkKKworICAgICAgICBzZWxmLnVscGRpZmYgKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5jaGVja191bHBkaWZmKGV4YWN0LCByb3VuZGVkKQorCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDb3JyZWN0IHJvdW5kaW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHJlc29sdmVfdW5kZXJmbG93KHNlbGYsIHQpOgorICAgICAgICAiIiJJbiBleHRyZW1lbHkgcmFyZSBjYXNlcyB3aGVyZSB0aGUgaW5maW5pdGUgcHJlY2lzaW9uIHJlc3VsdCBpcyBqdXN0CisgICAgICAgICAgIGJlbG93IGV0aW55LCBjZGVjaW1hbCBkb2VzIG5vdCBzZXQgU3Vibm9ybWFsL1VuZGVyZmxvdy4gRXhhbXBsZToKKworICAgICAgICAgICBzZXRjb250ZXh0KENvbnRleHQocHJlYz0yMSwgcm91bmRpbmc9Uk9VTkRfVVAsIEVtaW49LTU1LCBFbWF4PTg1KSkKKyAgICAgICAgICAgRGVjaW1hbCgiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKKyAgICAgICAgICAgICAgICAgICAiMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKKyAgICAgICAgICAgICAgICAgICAiMDAwMDAwMDAwMDAwMDAyNSIpLmxuKCkKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHQuY3Jlc3VsdHMgIT0gdC5wcmVzdWx0czoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSAjIFJlc3VsdHMgbXVzdCBiZSBpZGVudGljYWwuCisgICAgICAgIGlmIGNvbnRleHQuYy5mbGFnc1tDLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQuYy5mbGFnc1tDLkluZXhhY3RdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLkluZXhhY3RdOgorICAgICAgICAgICAgcmV0dXJuIFRydWUgIyBTdWJub3JtYWwvVW5kZXJmbG93IG1heSBiZSBtaXNzaW5nLgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBleHAoc2VsZiwgdCk6CisgICAgICAgICIiIlJlc29sdmUgVW5kZXJmbG93IG9yIFVMUCBkaWZmZXJlbmNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZXNvbHZlX3VuZGVyZmxvdyh0KQorCisgICAgZGVmIGxvZzEwKHNlbGYsIHQpOgorICAgICAgICAiIiJSZXNvbHZlIFVuZGVyZmxvdyBvciBVTFAgZGlmZmVyZW5jZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVzb2x2ZV91bmRlcmZsb3codCkKKworICAgIGRlZiBsbihzZWxmLCB0KToKKyAgICAgICAgIiIiUmVzb2x2ZSBVbmRlcmZsb3cgb3IgVUxQIGRpZmZlcmVuY2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlc29sdmVfdW5kZXJmbG93KHQpCisKKyAgICBkZWYgX19wb3dfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiQWx3YXlzIGNhbGxzIHRoZSByZXNvbHZlIGZ1bmN0aW9uLiBDLkRlY2ltYWwgZG9lcyBub3QgaGF2ZSBjb3JyZWN0CisgICAgICAgICAgIHJvdW5kaW5nIGZvciB0aGUgcG93ZXIgZnVuY3Rpb24uIiIiCisgICAgICAgIGlmIGNvbnRleHQuYy5mbGFnc1tDLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQuYy5mbGFnc1tDLkluZXhhY3RdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLlJvdW5kZWRdIGFuZCBcCisgICAgICAgICAgIGNvbnRleHQucC5mbGFnc1tQLkluZXhhY3RdOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuYmluX3Jlc29sdmVfdWxwKHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBwb3dlciA9IF9fcnBvd19fID0gX19wb3dfXworCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFRlY2huaWNhbGl0aWVzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIF9fZmxvYXRfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiTmFOIGNvbXBhcmlzb24gaW4gdGhlIHZlcmlmeSgpIGZ1bmN0aW9uIG9idmlvdXNseSBnaXZlcyBhbgorICAgICAgICAgICBpbmNvcnJlY3QgYW5zd2VyOiAgbmFuID09IG5hbiAtPiBGYWxzZSIiIgorICAgICAgICBpZiB0LmNvcFswXS5pc19uYW4oKSBhbmQgdC5wb3BbMF0uaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBfX2NvbXBsZXhfXyA9IF9fZmxvYXRfXworCisgICAgZGVmIF9fcmFkZF9fKHNlbGYsIHQpOgorICAgICAgICAiIiJkZWNpbWFsLnB5IGdpdmVzIHByZWNlZGVuY2UgdG8gdGhlIGZpcnN0IE5hTjsgdGhpcyBpcworICAgICAgICAgICBub3QgaW1wb3J0YW50LCBhcyBfX3JhZGRfXyB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yCisgICAgICAgICAgIHR3byBkZWNpbWFsIGFyZ3VtZW50cy4iIiIKKyAgICAgICAgaWYgdC5yYy5pc19uYW4oKSBhbmQgdC5ycC5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIF9fcm11bF9fID0gX19yYWRkX18KKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFZhcmlvdXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgdCk6CisgICAgICAgICIiIkV4Y2VwdGlvbjogRGVjaW1hbCgnMScpLl9fcm91bmRfXygtMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwKQorICAgICAgICAgICBTaG91bGQgaXQgcmVhbGx5IGJlIEludmFsaWRPcGVyYXRpb24/IiIiCisgICAgICAgIGlmIHQucmMgaXMgTm9uZSBhbmQgdC5ycC5pc19uYW4oKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCitzaGFuZGxlciA9IFNraXBIYW5kbGVyKCkKK2RlZiBza2lwX2Vycm9yKHQpOgorICAgIHJldHVybiBnZXRhdHRyKHNoYW5kbGVyLCB0LmZ1bmNuYW1lLCBzaGFuZGxlci5kZWZhdWx0KSh0KQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICBIYW5kbGluZyB2ZXJpZmljYXRpb24gZXJyb3JzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgVmVyaWZ5RXJyb3IoRXhjZXB0aW9uKToKKyAgICAiIiJWZXJpZmljYXRpb24gZmFpbGVkLiIiIgorICAgIHBhc3MKKworZGVmIGZ1bmN0aW9uX2FzX3N0cmluZyh0KToKKyAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICBjYXJncyA9IHQuY29wCisgICAgICAgIHBhcmdzID0gdC5wb3AKKyAgICAgICAgY2Z1bmMgPSAiY19mdW5jOiAlcygiICUgdC5mdW5jbmFtZQorICAgICAgICBwZnVuYyA9ICJwX2Z1bmM6ICVzKCIgJSB0LmZ1bmNuYW1lCisgICAgZWxzZToKKyAgICAgICAgY3NlbGYsIGNhcmdzID0gdC5jb3BbMF0sIHQuY29wWzE6XQorICAgICAgICBwc2VsZiwgcGFyZ3MgPSB0LnBvcFswXSwgdC5wb3BbMTpdCisgICAgICAgIGNmdW5jID0gImNfZnVuYzogJXMuJXMoIiAlIChyZXByKGNzZWxmKSwgdC5mdW5jbmFtZSkKKyAgICAgICAgcGZ1bmMgPSAicF9mdW5jOiAlcy4lcygiICUgKHJlcHIocHNlbGYpLCB0LmZ1bmNuYW1lKQorCisgICAgZXJyID0gY2Z1bmMKKyAgICBmb3IgYXJnIGluIGNhcmdzOgorICAgICAgICBlcnIgKz0gIiVzLCAiICUgcmVwcihhcmcpCisgICAgZXJyID0gZXJyLnJzdHJpcCgiLCAiKQorICAgIGVyciArPSAiKVxuIgorCisgICAgZXJyICs9IHBmdW5jCisgICAgZm9yIGFyZyBpbiBwYXJnczoKKyAgICAgICAgZXJyICs9ICIlcywgIiAlIHJlcHIoYXJnKQorICAgIGVyciA9IGVyci5yc3RyaXAoIiwgIikKKyAgICBlcnIgKz0gIikiCisKKyAgICByZXR1cm4gZXJyCisKK2RlZiByYWlzZV9lcnJvcih0KToKKyAgICBnbG9iYWwgRVhJVF9TVEFUVVMKKworICAgIGlmIHNraXBfZXJyb3IodCk6CisgICAgICAgIHJldHVybgorICAgIEVYSVRfU1RBVFVTID0gMQorCisgICAgZXJyID0gIkVycm9yIGluICVzOlxuXG4iICUgdC5mdW5jbmFtZQorICAgIGVyciArPSAiaW5wdXQgb3BlcmFuZHM6ICVzXG5cbiIgJSAodC5vcCwpCisgICAgZXJyICs9IGZ1bmN0aW9uX2FzX3N0cmluZyh0KQorICAgIGVyciArPSAiXG5cbmNfcmVzdWx0OiAlc1xucF9yZXN1bHQ6ICVzXG5cbiIgJSAodC5jcmVzdWx0cywgdC5wcmVzdWx0cykKKyAgICBlcnIgKz0gImNfZXhjZXB0aW9uczogJXNcbnBfZXhjZXB0aW9uczogJXNcblxuIiAlICh0LmNleCwgdC5wZXgpCisgICAgZXJyICs9ICIlc1xuXG4iICUgc3RyKHQuY29udGV4dCkKKworICAgIHJhaXNlIFZlcmlmeUVycm9yKGVycikKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICBNYWluIHRlc3RpbmcgZnVuY3Rpb25zCisjCisjICBUaGUgcHJvY2VkdXJlIGlzIGFsd2F5cyAodCBpcyB0aGUgVGVzdFNldCk6CisjCisjICAgY29udmVydCh0KSAtPiBJbml0aWFsaXplIHRoZSBUZXN0U2V0IGFzIG5lY2Vzc2FyeS4KKyMKKyMgICAgICAgICAgICAgICAgIFJldHVybiAwIGZvciBlYXJseSBhYm9ydGlvbiAoZS5nLiBpZiBhIFR5cGVFcnJvcgorIyAgICAgICAgICAgICAgICAgb2NjdXJzIGR1cmluZyBjb252ZXJzaW9uLCB0aGVyZSBpcyBub3RoaW5nIHRvIHRlc3QpLgorIworIyAgICAgICAgICAgICAgICAgUmV0dXJuIDEgZm9yIGNvbnRpbnVpbmcgd2l0aCB0aGUgdGVzdCBjYXNlLgorIworIyAgIGNhbGxmdW5jcyh0KSAtPiBDYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmb3IgZWFjaCBpbXBsZW1lbnRhdGlvbgorIyAgICAgICAgICAgICAgICAgICBhbmQgcmVjb3JkIHRoZSByZXN1bHRzIGluIHRoZSBUZXN0U2V0LgorIworIyAgIHZlcmlmeSh0KSAtPiBWZXJpZnkgdGhlIHJlc3VsdHMuIElmIHZlcmlmaWNhdGlvbiBmYWlscywgZGV0YWlscworIyAgICAgICAgICAgICAgICBhcmUgcHJpbnRlZCB0byBzdGRvdXQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGNvbnZlcnQodCwgY29udnN0cj1UcnVlKToKKyAgICAiIiIgdCBpcyB0aGUgdGVzdHNldC4gQXQgdGhpcyBzdGFnZSB0aGUgdGVzdHNldCBjb250YWlucyBhIHR1cGxlIG9mCisgICAgICAgIG9wZXJhbmRzIHQub3Agb2YgdmFyaW91cyB0eXBlcy4gRm9yIGRlY2ltYWwgbWV0aG9kcyB0aGUgZmlyc3QKKyAgICAgICAgb3BlcmFuZCAoc2VsZikgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBEZWNpbWFsLiBJZiAnY29udnN0cicgaXMKKyAgICAgICAgdHJ1ZSwgc3RyaW5nIG9wZXJhbmRzIGFyZSBjb252ZXJ0ZWQgYXMgd2VsbC4KKworICAgICAgICBDb250ZXh0IG9wZXJhbmRzIGFyZSBvZiB0eXBlIGRlY2NoZWNrLkNvbnRleHQsIHJvdW5kaW5nIG1vZGUKKyAgICAgICAgb3BlcmFuZHMgYXJlIGdpdmVuIGFzIGEgdHVwbGUgKEMucm91bmRpbmcsIFAucm91bmRpbmcpLgorCisgICAgICAgIE90aGVyIHR5cGVzIChmbG9hdCwgaW50LCBldGMuKSBhcmUgbGVmdCB1bmNoYW5nZWQuCisgICAgIiIiCisgICAgZm9yIGksIG9wIGluIGVudW1lcmF0ZSh0Lm9wKToKKworICAgICAgICBjb250ZXh0LmNsZWFyX3N0YXR1cygpCisKKyAgICAgICAgaWYgb3AgaW4gUm91bmRNb2RlczoKKyAgICAgICAgICAgIHQuY29wLmFwcGVuZChvcCkKKyAgICAgICAgICAgIHQucG9wLmFwcGVuZChvcCkKKworICAgICAgICBlbGlmIG5vdCB0LmNvbnRleHRmdW5jIGFuZCBpID09IDAgb3IgXAorICAgICAgICAgICAgIGNvbnZzdHIgYW5kIGlzaW5zdGFuY2Uob3AsIHN0cik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYyA9IEMuRGVjaW1hbChvcCkKKyAgICAgICAgICAgICAgICBjZXggPSBOb25lCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBjID0gTm9uZQorICAgICAgICAgICAgICAgIGNleCA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwID0gUmVzdHJpY3RlZERlY2ltYWwob3ApCisgICAgICAgICAgICAgICAgcGV4ID0gTm9uZQorICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgcCA9IE5vbmUKKyAgICAgICAgICAgICAgICBwZXggPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICB0LmNvcC5hcHBlbmQoYykKKyAgICAgICAgICAgIHQuY2V4LmFwcGVuZChjZXgpCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQocCkKKyAgICAgICAgICAgIHQucGV4LmFwcGVuZChwZXgpCisKKyAgICAgICAgICAgIGlmIGNleCBpcyBwZXg6CisgICAgICAgICAgICAgICAgaWYgc3RyKGMpICE9IHN0cihwKSBvciBub3QgY29udGV4dC5hc3NlcnRfZXFfc3RhdHVzKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgICAgICAgICAgICAgaWYgY2V4IGFuZCBwZXg6CisgICAgICAgICAgICAgICAgICAgICMgbm90aGluZyB0byB0ZXN0CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHQpCisKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9wLCBDb250ZXh0KToKKyAgICAgICAgICAgIHQuY29udGV4dCA9IG9wCisgICAgICAgICAgICB0LmNvcC5hcHBlbmQob3AuYykKKyAgICAgICAgICAgIHQucG9wLmFwcGVuZChvcC5wKQorCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0LmNvcC5hcHBlbmQob3ApCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQob3ApCisKKyAgICByZXR1cm4gMQorCitkZWYgY2FsbGZ1bmNzKHQpOgorICAgICIiIiB0IGlzIHRoZSB0ZXN0c2V0LiBBdCB0aGlzIHN0YWdlIHRoZSB0ZXN0c2V0IGNvbnRhaW5zIG9wZXJhbmQgbGlzdHMKKyAgICAgICAgdC5jb3AgYW5kIHQucG9wIGZvciB0aGUgQyBhbmQgUHl0aG9uIHZlcnNpb25zIG9mIGRlY2ltYWwuCisgICAgICAgIEZvciBEZWNpbWFsIG1ldGhvZHMsIHRoZSBmaXJzdCBvcGVyYW5kcyBhcmUgb2YgdHlwZSBDLkRlY2ltYWwgYW5kCisgICAgICAgIFAuRGVjaW1hbCByZXNwZWN0aXZlbHkuIFRoZSByZW1haW5pbmcgb3BlcmFuZHMgY2FuIGhhdmUgdmFyaW91cyB0eXBlcy4KKyAgICAgICAgRm9yIENvbnRleHQgbWV0aG9kcywgYWxsIG9wZXJhbmRzIGNhbiBoYXZlIGFueSB0eXBlLgorCisgICAgICAgIHQucmMgYW5kIHQucnAgYXJlIHRoZSByZXN1bHRzIG9mIHRoZSBvcGVyYXRpb24uCisgICAgIiIiCisgICAgY29udGV4dC5jbGVhcl9zdGF0dXMoKQorCisgICAgdHJ5OgorICAgICAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICAgICAgY2FyZ3MgPSB0LmNvcAorICAgICAgICAgICAgdC5yYyA9IGdldGF0dHIoY29udGV4dC5jLCB0LmZ1bmNuYW1lKSgqY2FyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjc2VsZiA9IHQuY29wWzBdCisgICAgICAgICAgICBjYXJncyA9IHQuY29wWzE6XQorICAgICAgICAgICAgdC5yYyA9IGdldGF0dHIoY3NlbGYsIHQuZnVuY25hbWUpKCpjYXJncykKKyAgICAgICAgdC5jZXguYXBwZW5kKE5vbmUpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIE1lbW9yeUVycm9yKSBhcyBlOgorICAgICAgICB0LnJjID0gTm9uZQorICAgICAgICB0LmNleC5hcHBlbmQoZS5fX2NsYXNzX18pCisKKyAgICB0cnk6CisgICAgICAgIGlmIHQuY29udGV4dGZ1bmM6CisgICAgICAgICAgICBwYXJncyA9IHQucG9wCisgICAgICAgICAgICB0LnJwID0gZ2V0YXR0cihjb250ZXh0LnAsIHQuZnVuY25hbWUpKCpwYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBzZWxmID0gdC5wb3BbMF0KKyAgICAgICAgICAgIHBhcmdzID0gdC5wb3BbMTpdCisgICAgICAgICAgICB0LnJwID0gZ2V0YXR0cihwc2VsZiwgdC5mdW5jbmFtZSkoKnBhcmdzKQorICAgICAgICB0LnBleC5hcHBlbmQoTm9uZSkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgTWVtb3J5RXJyb3IpIGFzIGU6CisgICAgICAgIHQucnAgPSBOb25lCisgICAgICAgIHQucGV4LmFwcGVuZChlLl9fY2xhc3NfXykKKworZGVmIHZlcmlmeSh0LCBzdGF0KToKKyAgICAiIiIgdCBpcyB0aGUgdGVzdHNldC4gQXQgdGhpcyBzdGFnZSB0aGUgdGVzdHNldCBjb250YWlucyB0aGUgZm9sbG93aW5nCisgICAgICAgIHR1cGxlczoKKworICAgICAgICAgICAgdC5vcDogb3JpZ2luYWwgb3BlcmFuZHMKKyAgICAgICAgICAgIHQuY29wOiBDLkRlY2ltYWwgb3BlcmFuZHMgKHNlZSBjb252ZXJ0IGZvciBkZXRhaWxzKQorICAgICAgICAgICAgdC5wb3A6IFAuRGVjaW1hbCBvcGVyYW5kcyAoc2VlIGNvbnZlcnQgZm9yIGRldGFpbHMpCisgICAgICAgICAgICB0LnJjOiBDIHJlc3VsdAorICAgICAgICAgICAgdC5ycDogUHl0aG9uIHJlc3VsdAorCisgICAgICAgIHQucmMgYW5kIHQucnAgY2FuIGhhdmUgdmFyaW91cyB0eXBlcy4KKyAgICAiIiIKKyAgICB0LmNyZXN1bHRzLmFwcGVuZChzdHIodC5yYykpCisgICAgdC5wcmVzdWx0cy5hcHBlbmQoc3RyKHQucnApKQorICAgIGlmIGlzaW5zdGFuY2UodC5yYywgQy5EZWNpbWFsKSBhbmQgaXNpbnN0YW5jZSh0LnJwLCBQLkRlY2ltYWwpOgorICAgICAgICAjIEdlbmVyYWwgY2FzZTogYm90aCByZXN1bHRzIGFyZSBEZWNpbWFscy4KKyAgICAgICAgdC5jcmVzdWx0cy5hcHBlbmQodC5yYy50b19lbmdfc3RyaW5nKCkpCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHQucmMuYXNfdHVwbGUoKSkKKyAgICAgICAgdC5jcmVzdWx0cy5hcHBlbmQoc3RyKHQucmMuaW1hZykpCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHN0cih0LnJjLnJlYWwpKQorICAgICAgICB0LnByZXN1bHRzLmFwcGVuZCh0LnJwLnRvX2VuZ19zdHJpbmcoKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQodC5ycC5hc190dXBsZSgpKQorICAgICAgICB0LnByZXN1bHRzLmFwcGVuZChzdHIodC5ycC5pbWFnKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQoc3RyKHQucnAucmVhbCkpCisKKyAgICAgICAgbmMgPSB0LnJjLm51bWJlcl9jbGFzcygpLmxzdHJpcCgnKy1zJykKKyAgICAgICAgc3RhdFtuY10gKz0gMQorICAgIGVsc2U6CisgICAgICAgICMgUmVzdWx0cyBmcm9tIGUuZy4gX19kaXZtb2RfXyBjYW4gb25seSBiZSBjb21wYXJlZCBhcyBzdHJpbmdzLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0LnJjLCB0dXBsZSkgYW5kIG5vdCBpc2luc3RhbmNlKHQucnAsIHR1cGxlKToKKyAgICAgICAgICAgIGlmIHQucmMgIT0gdC5ycDoKKyAgICAgICAgICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICAgICBzdGF0W3R5cGUodC5yYykuX19uYW1lX19dICs9IDEKKworICAgICMgVGhlIHJldHVybiB2YWx1ZSBsaXN0cyBtdXN0IGJlIGVxdWFsLgorICAgIGlmIHQuY3Jlc3VsdHMgIT0gdC5wcmVzdWx0czoKKyAgICAgICAgcmFpc2VfZXJyb3IodCkKKyAgICAjIFRoZSBQeXRob24gZXhjZXB0aW9uIGxpc3RzIChUeXBlRXJyb3IsIGV0Yy4pIG11c3QgYmUgZXF1YWwuCisgICAgaWYgdC5jZXggIT0gdC5wZXg6CisgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgIyBUaGUgY29udGV4dCBmbGFncyBtdXN0IGJlIGVxdWFsLgorICAgIGlmIG5vdCB0LmNvbnRleHQuYXNzZXJ0X2VxX3N0YXR1cygpOgorICAgICAgICByYWlzZV9lcnJvcih0KQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4gdGVzdCBsb29wcworIworIyAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RmdW5jKSAtPgorIworIyAgICAgTG9vcCB0aHJvdWdoIHZhcmlvdXMgY29udGV4dCBzZXR0aW5ncy4gVGhlIGRlZ3JlZSBvZgorIyAgICAgdGhvcm91Z2huZXNzIGlzIGRldGVybWluZWQgYnkgJ3Rlc3RzcGVjJy4gRm9yIGVhY2gKKyMgICAgIHNldHRpbmcsIGNhbGwgJ3Rlc3RmdW5jJy4gR2VuZXJhbGx5LCAndGVzdGZ1bmMnIGl0c2VsZgorIyAgICAgYSBsb29wLCBpdGVyYXRpbmcgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMgZ2VuZXJhdGVkCisjICAgICBieSB0aGUgZnVuY3Rpb25zIGluIHJhbmRkZWMucHkuCisjCisjICB0ZXN0X24tYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpIC0+CisjCisjICAgICAndGVzdF91bmFyeScsICd0ZXN0X2JpbmFyeScgYW5kICd0ZXN0X3Rlcm5hcnknIGFyZSB0aGUKKyMgICAgIG1haW4gdGVzdCBmdW5jdGlvbnMgcGFzc2VkIHRvICd0ZXN0X21ldGhvZCcuIFRoZXkgZGVhbAorIyAgICAgd2l0aCB0aGUgcmVndWxhciBjYXNlcy4gVGhlIHRob3JvdWdobmVzcyBvZiB0ZXN0aW5nIGlzCisjICAgICBkZXRlcm1pbmVkIGJ5ICdpdHInLgorIworIyAgICAgJ3ByZWMnLCAnZXhwX3JhbmdlJyBhbmQgJ3Jlc3RyaWN0ZWRfcmFuZ2UnIGFyZSBwYXNzZWQKKyMgICAgIHRvIHRoZSB0ZXN0LWdlbmVyYXRpbmcgZnVuY3Rpb25zIGFuZCBsaW1pdCB0aGUgZ2VuZXJhdGVkCisjICAgICB2YWx1ZXMuIEluIHNvbWUgY2FzZXMsIGZvciByZWFzb25hYmxlIHJ1biB0aW1lcyBhCisjICAgICBtYXhpbXVtIGV4cG9uZW50IG9mIDk5OTkgaXMgcmVxdWlyZWQuCisjCisjICAgICBUaGUgJ3N0YXQnIHBhcmFtZXRlciBpcyBwYXNzZWQgZG93biB0byB0aGUgJ3ZlcmlmeScKKyMgICAgIGZ1bmN0aW9uLCB3aGljaCByZWNvcmRzIHN0YXRpc3RpY3MgZm9yIHRoZSByZXN1bHQgdmFsdWVzLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBsb2coZm10LCBhcmdzPU5vbmUpOgorICAgIGlmIGFyZ3M6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJycuam9pbigoZm10LCAnXG4nKSkgJSBhcmdzKQorICAgIGVsc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJycuam9pbigoc3RyKGZtdCksICdcbicpKSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworZGVmIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0ZnVuYyk6CisgICAgIiIiSXRlcmF0ZSBhIHRlc3QgZnVuY3Rpb24gdGhyb3VnaCBtYW55IGNvbnRleHQgc2V0dGluZ3MuIiIiCisgICAgbG9nKCJ0ZXN0aW5nICVzIC4uLiIsIG1ldGhvZCkKKyAgICBzdGF0ID0gZGVmYXVsdGRpY3QoaW50KQorICAgIGZvciBzcGVjIGluIHRlc3RzcGVjczoKKyAgICAgICAgaWYgJ3NhbXBsZXMnIGluIHNwZWM6CisgICAgICAgICAgICBzcGVjWydwcmVjJ10gPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSgxLCAxMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNbJ3NhbXBsZXMnXSkpCisgICAgICAgIGZvciBwcmVjIGluIHNwZWNbJ3ByZWMnXToKKyAgICAgICAgICAgIGNvbnRleHQucHJlYyA9IHByZWMKKyAgICAgICAgICAgIGZvciBleHB0cyBpbiBzcGVjWydleHB0cyddOgorICAgICAgICAgICAgICAgIGVtaW4sIGVtYXggPSBleHB0cworICAgICAgICAgICAgICAgIGlmIGVtaW4gPT0gJ3JhbmQnOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAwLCAwKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtYXggPSByYW5kb20ucmFuZHJhbmdlKHByZWMsIDEwMDApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWluLCBjb250ZXh0LkVtYXggPSBlbWluLCBlbWF4CisgICAgICAgICAgICAgICAgaWYgcHJlYyA+IGNvbnRleHQuRW1heDogY29udGludWUKKyAgICAgICAgICAgICAgICBsb2coIiAgICBwcmVjOiAlZCAgZW1pbjogJWQgIGVtYXg6ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbnRleHQucHJlYywgY29udGV4dC5FbWluLCBjb250ZXh0LkVtYXgpKQorICAgICAgICAgICAgICAgIHJlc3RyX3JhbmdlID0gOTk5OSBpZiBjb250ZXh0LkVtYXggPiA5OTk5IGVsc2UgY29udGV4dC5FbWF4Kzk5CisgICAgICAgICAgICAgICAgZm9yIHJvdW5kaW5nIGluIFJvdW5kTW9kZXM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNhcGl0YWxzID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICBpZiBzcGVjWydjbGFtcCddID09ICdyYW5kJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNsYW1wID0gc3BlY1snY2xhbXAnXQorICAgICAgICAgICAgICAgICAgICBleHByYW5nZSA9IGNvbnRleHQuYy5FbWF4CisgICAgICAgICAgICAgICAgICAgIHRlc3RmdW5jKG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyX3JhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjWydpdGVyJ10sIHN0YXQpCisgICAgbG9nKCIgICAgcmVzdWx0IHR5cGVzOiAlcyIgJSBzb3J0ZWQoW3QgZm9yIHQgaW4gc3RhdC5pdGVtcygpXSkpCisKK2RlZiB0ZXN0X3VuYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgYSB1bmFyeSBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBpZiBtZXRob2QgaW4gVW5hcnlSZXN0cmljdGVkOgorICAgICAgICBleHBfcmFuZ2UgPSByZXN0cmljdGVkX3JhbmdlCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworICAgIGlmIG5vdCBtZXRob2Quc3RhcnRzd2l0aCgnX18nKToKKyAgICAgICAgZm9yIG9wIGluIHVuYXJ5X29wdGFyZyhwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9iaW5hcnkobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSBhIGJpbmFyeSBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBpZiBtZXRob2QgaW4gQmluYXJ5UmVzdHJpY3RlZDoKKyAgICAgICAgZXhwX3JhbmdlID0gcmVzdHJpY3RlZF9yYW5nZQorICAgIGZvciBvcCBpbiBhbGxfYmluYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2coZXJyKQorCisgICAgaWYgbm90IG1ldGhvZC5zdGFydHN3aXRoKCdfXycpOgorICAgICAgICBmb3Igb3AgaW4gYmluYXJ5X29wdGFyZyhwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF90ZXJuYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgYSB0ZXJuYXJ5IGZ1bmN0aW9uIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGlmIG1ldGhvZCBpbiBUZXJuYXJ5UmVzdHJpY3RlZDoKKyAgICAgICAgZXhwX3JhbmdlID0gcmVzdHJpY3RlZF9yYW5nZQorICAgIGZvciBvcCBpbiBhbGxfdGVybmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworICAgIGlmIG5vdCBtZXRob2Quc3RhcnRzd2l0aCgnX18nKToKKyAgICAgICAgZm9yIG9wIGluIHRlcm5hcnlfb3B0YXJnKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X2Zvcm1hdChtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSBfX2Zvcm1hdF9fIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBmb3Igb3AgaW4gYWxsX3VuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgZm10MSA9IHJhbmRfZm9ybWF0KGNocihyYW5kb20ucmFuZHJhbmdlKDMyLCAxMjgpKSwgJ0VlR2duJykKKyAgICAgICAgZm10MiA9IHJhbmRfbG9jYWxlKCkKKyAgICAgICAgZm9yIGZtdCBpbiAoZm10MSwgZm10Mik6CisgICAgICAgICAgICBmbXRvcCA9IChvcFswXSwgZm10KQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBmbXRvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0LCBjb252c3RyPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKyAgICBmb3Igb3AgaW4gYWxsX3VuYXJ5KHByZWMsIDk5OTksIGl0cik6CisgICAgICAgIGZtdDEgPSByYW5kX2Zvcm1hdChjaHIocmFuZG9tLnJhbmRyYW5nZSgzMiwgMTI4KSksICdGZiUnKQorICAgICAgICBmbXQyID0gcmFuZF9sb2NhbGUoKQorICAgICAgICBmb3IgZm10IGluIChmbXQxLCBmbXQyKToKKyAgICAgICAgICAgIGZtdG9wID0gKG9wWzBdLCBmbXQpCisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIGZtdG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQsIGNvbnZzdHI9RmFsc2UpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9yb3VuZChtZXRob2QsIHByZWMsIGV4cHJhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgdGhlIF9fcm91bmRfXyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCA5OTk5LCBpdHIpOgorICAgICAgICBuID0gcmFuZG9tLnJhbmRyYW5nZSgxMCkKKyAgICAgICAgcm91bmRvcCA9IChvcFswXSwgbikKKyAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCByb3VuZG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X2Zyb21fZmxvYXQobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSBfX2Zsb2F0X18gbWV0aG9kIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGZvciByb3VuZGluZyBpbiBSb3VuZE1vZGVzOgorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBmID0gcmFuZGZsb2F0KCkKKyAgICAgICAgICAgIG9wID0gKGYsKSBpZiBtZXRob2Quc3RhcnRzd2l0aCgiY29udGV4dC4iKSBlbHNlICgic05hTiIsIGYpCisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgcmFuZGNvbnRleHQoZXhwcmFuZ2UpOgorICAgIGMgPSBDb250ZXh0KEMuQ29udGV4dCgpLCBQLkNvbnRleHQoKSkKKyAgICBjLkVtYXggPSByYW5kb20ucmFuZHJhbmdlKDEsIGV4cHJhbmdlKzEpCisgICAgYy5FbWluID0gcmFuZG9tLnJhbmRyYW5nZSgtZXhwcmFuZ2UsIDApCisgICAgbWF4cHJlYyA9IDEwMCBpZiBjLkVtYXggPj0gMTAwIGVsc2UgYy5FbWF4CisgICAgYy5wcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCBtYXhwcmVjKzEpCisgICAgYy5jbGFtcCA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKyAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICByZXR1cm4gYworCitkZWYgdGVzdF9xdWFudGl6ZV9hcGkobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSAncXVhbnRpemUnIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcywgdXNpbmcKKyAgICAgICB0aGUgb3B0aW9uYWwgYXJndW1lbnRzLiIiIgorICAgIGZvciBvcCBpbiBhbGxfYmluYXJ5KHByZWMsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0cik6CisgICAgICAgIGZvciByb3VuZGluZyBpbiBSb3VuZE1vZGVzOgorICAgICAgICAgICAgYyA9IHJhbmRjb250ZXh0KGV4cHJhbmdlKQorICAgICAgICAgICAgcXVhbnRpemVvcCA9IChvcFswXSwgb3BbMV0sIHJvdW5kaW5nLCBjKQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBxdWFudGl6ZW9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCisKK2RlZiBjaGVja191bnRlc3RlZChmdW5jZGljdCwgY19jbHMsIHBfY2xzKToKKyAgICAiIiJEZXRlcm1pbmUgdW50ZXN0ZWQsIEMtb25seSBhbmQgUHl0aG9uLW9ubHkgYXR0cmlidXRlcy4KKyAgICAgICBVbmNvbW1lbnQgcHJpbnQgbGluZXMgZm9yIGRlYnVnZ2luZy4iIiIKKyAgICBjX2F0dHIgPSBzZXQoZGlyKGNfY2xzKSkKKyAgICBwX2F0dHIgPSBzZXQoZGlyKHBfY2xzKSkKKyAgICBpbnRlcnNlY3QgPSBjX2F0dHIgJiBwX2F0dHIKKworICAgIGZ1bmNkaWN0WydjX29ubHknXSA9IHR1cGxlKHNvcnRlZChjX2F0dHItaW50ZXJzZWN0KSkKKyAgICBmdW5jZGljdFsncF9vbmx5J10gPSB0dXBsZShzb3J0ZWQocF9hdHRyLWludGVyc2VjdCkpCisKKyAgICB0ZXN0ZWQgPSBzZXQoKQorICAgIGZvciBsc3QgaW4gZnVuY2RpY3QudmFsdWVzKCk6CisgICAgICAgIGZvciB2IGluIGxzdDoKKyAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoImNvbnRleHQuIiwgIiIpIGlmIGNfY2xzID09IEMuQ29udGV4dCBlbHNlIHYKKyAgICAgICAgICAgIHRlc3RlZC5hZGQodikKKworICAgIGZ1bmNkaWN0Wyd1bnRlc3RlZCddID0gdHVwbGUoc29ydGVkKGludGVyc2VjdC10ZXN0ZWQpKQorCisgICAgI2ZvciBrZXkgaW4gKCd1bnRlc3RlZCcsICdjX29ubHknLCAncF9vbmx5Jyk6CisgICAgIyAgICBzID0gJ0NvbnRleHQnIGlmIGNfY2xzID09IEMuQ29udGV4dCBlbHNlICdEZWNpbWFsJworICAgICMgICAgcHJpbnQoIlxuJXMgJXM6XG4lcyIgJSAocywga2V5LCBmdW5jZGljdFtrZXldKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorCisgICAgaW1wb3J0IHRpbWUKKworICAgIHJhbmRzZWVkID0gaW50KHRpbWUudGltZSgpKQorICAgIHJhbmRvbS5zZWVkKHJhbmRzZWVkKQorCisgICAgIyBTZXQgdXAgdGhlIHRlc3RzcGVjcyBsaXN0LiBBIHRlc3RzcGVjIGlzIHNpbXBseSBhIGRpY3Rpb25hcnkKKyAgICAjIHRoYXQgZGV0ZXJtaW5lcyB0aGUgYW1vdW50IG9mIGRpZmZlcmVudCBjb250ZXh0cyB0aGF0ICd0ZXN0X21ldGhvZCcKKyAgICAjIHdpbGwgZ2VuZXJhdGUuCisgICAgYmFzZV9leHB0cyA9IFsoQy5NSU5fRU1JTiwgQy5NQVhfRU1BWCldCisgICAgaWYgQy5NQVhfRU1BWCA9PSA5OTk5OTk5OTk5OTk5OTk5OTk6CisgICAgICAgIGJhc2VfZXhwdHMuYXBwZW5kKCgtOTk5OTk5OTk5LCA5OTk5OTk5OTkpKQorCisgICAgIyBCYXNpYyBjb250ZXh0cy4KKyAgICBiYXNlID0geworICAgICAgICAnZXhwdHMnOiBiYXNlX2V4cHRzLAorICAgICAgICAncHJlYyc6IFtdLAorICAgICAgICAnY2xhbXAnOiAncmFuZCcsCisgICAgICAgICdpdGVyJzogTm9uZSwKKyAgICAgICAgJ3NhbXBsZXMnOiBOb25lLAorICAgIH0KKyAgICAjIENvbnRleHRzIHdpdGggc21hbGwgdmFsdWVzIGZvciBwcmVjLCBlbWluLCBlbWF4LgorICAgIHNtYWxsID0geworICAgICAgICAncHJlYyc6IFsxLCAyLCAzLCA0LCA1XSwKKyAgICAgICAgJ2V4cHRzJzogWygtMSwgMSksICgtMiwgMiksICgtMywgMyksICgtNCwgNCksICgtNSwgNSldLAorICAgICAgICAnY2xhbXAnOiAncmFuZCcsCisgICAgICAgICdpdGVyJzogTm9uZQorICAgIH0KKyAgICAjIElFRUUgaW50ZXJjaGFuZ2UgZm9ybWF0LgorICAgIGllZWUgPSBbCisgICAgICAgICMgREVDSU1BTDMyCisgICAgICAgIHsncHJlYyc6IFs3XSwgJ2V4cHRzJzogWygtOTUsIDk2KV0sICdjbGFtcCc6IDEsICdpdGVyJzogTm9uZX0sCisgICAgICAgICMgREVDSU1BTDY0CisgICAgICAgIHsncHJlYyc6IFsxNl0sICdleHB0cyc6IFsoLTM4MywgMzg0KV0sICdjbGFtcCc6IDEsICdpdGVyJzogTm9uZX0sCisgICAgICAgICMgREVDSU1BTDEyOAorICAgICAgICB7J3ByZWMnOiBbMzRdLCAnZXhwdHMnOiBbKC02MTQzLCA2MTQ0KV0sICdjbGFtcCc6IDEsICdpdGVyJzogTm9uZX0KKyAgICBdCisKKyAgICBpZiAnLS1tZWRpdW0nIGluIHN5cy5hcmd2OgorICAgICAgICBiYXNlWydleHB0cyddLmFwcGVuZCgoJ3JhbmQnLCAncmFuZCcpKQorICAgICAgICAjIDUgcmFuZG9tIHByZWNpc2lvbnMKKyAgICAgICAgYmFzZVsnc2FtcGxlcyddID0gNQorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGxdICsgaWVlZSArIFtiYXNlXQorICAgIGlmICctLWxvbmcnIGluIHN5cy5hcmd2OgorICAgICAgICBiYXNlWydleHB0cyddLmFwcGVuZCgoJ3JhbmQnLCAncmFuZCcpKQorICAgICAgICAjIDEwIHJhbmRvbSBwcmVjaXNpb25zCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDEwCisgICAgICAgIHRlc3RzcGVjcyA9IFtzbWFsbF0gKyBpZWVlICsgW2Jhc2VdCisgICAgZWxpZiAnLS1hbGwnIGluIHN5cy5hcmd2OgorICAgICAgICBiYXNlWydleHB0cyddLmFwcGVuZCgoJ3JhbmQnLCAncmFuZCcpKQorICAgICAgICAjIEFsbCBwcmVjaXNpb25zIGluIFsxLCAxMDBdCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDEwMAorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGxdICsgaWVlZSArIFtiYXNlXQorICAgIGVsc2U6ICMgLS1zaG9ydAorICAgICAgICByYW5kX2llZWUgPSByYW5kb20uY2hvaWNlKGllZWUpCisgICAgICAgIGJhc2VbJ2l0ZXInXSA9IHNtYWxsWydpdGVyJ10gPSByYW5kX2llZWVbJ2l0ZXInXSA9IDEKKyAgICAgICAgIyAxIHJhbmRvbSBwcmVjaXNpb24gYW5kIGV4cG9uZW50IHBhaXIKKyAgICAgICAgYmFzZVsnc2FtcGxlcyddID0gMQorICAgICAgICBiYXNlWydleHB0cyddID0gW3JhbmRvbS5jaG9pY2UoYmFzZV9leHB0cyldCisgICAgICAgICMgMSByYW5kb20gcHJlY2lzaW9uIGFuZCBleHBvbmVudCBwYWlyCisgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDYpCisgICAgICAgIHNtYWxsWydwcmVjJ10gPSBbcHJlY10KKyAgICAgICAgc21hbGxbJ2V4cHRzJ10gPSBbKC1wcmVjLCBwcmVjKV0KKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsLCByYW5kX2llZWUsIGJhc2VdCisKKyAgICBjaGVja191bnRlc3RlZChGdW5jdGlvbnMsIEMuRGVjaW1hbCwgUC5EZWNpbWFsKQorICAgIGNoZWNrX3VudGVzdGVkKENvbnRleHRGdW5jdGlvbnMsIEMuQ29udGV4dCwgUC5Db250ZXh0KQorCisKKyAgICBsb2coIlxuXG5SYW5kb20gc2VlZDogJWRcblxuIiwgcmFuZHNlZWQpCisKKyAgICAjIERlY2ltYWwgbWV0aG9kczoKKyAgICBmb3IgbWV0aG9kIGluIEZ1bmN0aW9uc1sndW5hcnknXSArIEZ1bmN0aW9uc1sndW5hcnlfY3R4J10gKyBcCisgICAgICAgICAgICAgICAgICBGdW5jdGlvbnNbJ3VuYXJ5X3JuZF9jdHgnXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIEZ1bmN0aW9uc1snYmluYXJ5J10gKyBGdW5jdGlvbnNbJ2JpbmFyeV9jdHgnXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfYmluYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBGdW5jdGlvbnNbJ3Rlcm5hcnknXSArIEZ1bmN0aW9uc1sndGVybmFyeV9jdHgnXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdGVybmFyeSkKKworICAgIHRlc3RfbWV0aG9kKCdfX2Zvcm1hdF9fJywgdGVzdHNwZWNzLCB0ZXN0X2Zvcm1hdCkKKyAgICB0ZXN0X21ldGhvZCgnX19yb3VuZF9fJywgdGVzdHNwZWNzLCB0ZXN0X3JvdW5kKQorICAgIHRlc3RfbWV0aG9kKCdmcm9tX2Zsb2F0JywgdGVzdHNwZWNzLCB0ZXN0X2Zyb21fZmxvYXQpCisgICAgdGVzdF9tZXRob2QoJ3F1YW50aXplJywgdGVzdHNwZWNzLCB0ZXN0X3F1YW50aXplX2FwaSkKKworICAgICMgQ29udGV4dCBtZXRob2RzOgorICAgIGZvciBtZXRob2QgaW4gQ29udGV4dEZ1bmN0aW9uc1sndW5hcnknXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIENvbnRleHRGdW5jdGlvbnNbJ2JpbmFyeSddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF9iaW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIENvbnRleHRGdW5jdGlvbnNbJ3Rlcm5hcnknXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfdGVybmFyeSkKKworICAgIHRlc3RfbWV0aG9kKCdjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQnLCB0ZXN0c3BlY3MsIHRlc3RfZnJvbV9mbG9hdCkKKworCisgICAgc3lzLmV4aXQoRVhJVF9TVEFUVVMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2Zvcm1hdGhlbHBlci5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZm9ybWF0aGVscGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYTJiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2Zvcm1hdGhlbHBlci5weQpAQCAtMCwwICsxLDM0NCBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKworIyBHZW5lcmF0ZSBQRVAtMzEwMSBmb3JtYXQgc3RyaW5ncy4KKworCitpbXBvcnQgb3MsIHN5cywgbG9jYWxlLCByYW5kb20KK2ltcG9ydCBwbGF0Zm9ybSwgc3VicHJvY2VzcworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKK2Zyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKKworQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCitQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQorCisKK3dpbmRvd3NfbGFuZ19zdHJpbmdzID0gWworICAiY2hpbmVzZSIsICJjaGluZXNlLXNpbXBsaWZpZWQiLCAiY2hpbmVzZS10cmFkaXRpb25hbCIsICJjemVjaCIsICJkYW5pc2giLAorICAiZHV0Y2giLCAiYmVsZ2lhbiIsICJlbmdsaXNoIiwgImF1c3RyYWxpYW4iLCAiY2FuYWRpYW4iLCAiZW5nbGlzaC1ueiIsCisgICJlbmdsaXNoLXVrIiwgImVuZ2xpc2gtdXMiLCAiZmlubmlzaCIsICJmcmVuY2giLCAiZnJlbmNoLWJlbGdpYW4iLAorICAiZnJlbmNoLWNhbmFkaWFuIiwgImZyZW5jaC1zd2lzcyIsICJnZXJtYW4iLCAiZ2VybWFuLWF1c3RyaWFuIiwKKyAgImdlcm1hbi1zd2lzcyIsICJncmVlayIsICJodW5nYXJpYW4iLCAiaWNlbGFuZGljIiwgIml0YWxpYW4iLCAiaXRhbGlhbi1zd2lzcyIsCisgICJqYXBhbmVzZSIsICJrb3JlYW4iLCAibm9yd2VnaWFuIiwgIm5vcndlZ2lhbi1ib2ttYWwiLCAibm9yd2VnaWFuLW55bm9yc2siLAorICAicG9saXNoIiwgInBvcnR1Z3Vlc2UiLCAicG9ydHVndWVzZS1icmF6aWwiLCAicnVzc2lhbiIsICJzbG92YWsiLCAic3BhbmlzaCIsCisgICJzcGFuaXNoLW1leGljYW4iLCAic3BhbmlzaC1tb2Rlcm4iLCAic3dlZGlzaCIsICJ0dXJraXNoIiwKK10KKworcHJlZmVycmVkX2VuY29kaW5nID0geworICAnY3NfQ1onOiAnSVNPODg1OS0yJywKKyAgJ2NzX0NaLmlzbzg4NTkyJzogJ0lTTzg4NTktMicsCisgICdjemVjaCc6ICdJU084ODU5LTInLAorICAnZWVzdGknOiAnSVNPODg1OS0xJywKKyAgJ2VzdG9uaWFuJzogJ0lTTzg4NTktMScsCisgICdldF9FRSc6ICdJU084ODU5LTE1JywKKyAgJ2V0X0VFLklTTy04ODU5LTE1JzogJ0lTTzg4NTktMTUnLAorICAnZXRfRUUuaXNvODg1OTE1JzogJ0lTTzg4NTktMTUnLAorICAnZXRfRUUuaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ2ZpX0ZJLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdmaV9GSSc6ICdJU084ODU5LTE1JywKKyAgJ2ZpX0ZJQGV1cm8nOiAnSVNPODg1OS0xNScsCisgICdmaV9GSS5pc284ODU5MTVAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ2Zpbm5pc2gnOiAnSVNPODg1OS0xJywKKyAgJ2x2X0xWJzogJ0lTTzg4NTktMTMnLAorICAnbHZfTFYuaXNvODg1OTEzJzogJ0lTTzg4NTktMTMnLAorICAnbmJfTk8nOiAnSVNPODg1OS0xJywKKyAgJ25iX05PLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdib2ttYWwnOiAnSVNPODg1OS0xJywKKyAgJ25uX05PJzogJ0lTTzg4NTktMScsCisgICdubl9OTy5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnbm9fTk8nOiAnSVNPODg1OS0xJywKKyAgJ25vcndlZ2lhbic6ICdJU084ODU5LTEnLAorICAnbnlub3Jzayc6ICdJU084ODU5LTEnLAorICAncnVfUlUnOiAnSVNPODg1OS01JywKKyAgJ3J1X1JVLmlzbzg4NTk1JzogJ0lTTzg4NTktNScsCisgICdydXNzaWFuJzogJ0lTTzg4NTktNScsCisgICdydV9SVS5LT0k4LVInOiAnS09JOC1SJywKKyAgJ3J1X1JVLmtvaThyJzogJ0tPSTgtUicsCisgICdydV9SVS5DUDEyNTEnOiAnQ1AxMjUxJywKKyAgJ3J1X1JVLmNwMTI1MSc6ICdDUDEyNTEnLAorICAnc2tfU0snOiAnSVNPODg1OS0yJywKKyAgJ3NrX1NLLmlzbzg4NTkyJzogJ0lTTzg4NTktMicsCisgICdzbG92YWsnOiAnSVNPODg1OS0yJywKKyAgJ3N2X0ZJJzogJ0lTTzg4NTktMScsCisgICdzdl9GSS5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnc3ZfRklAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ3N2X0ZJLmlzbzg4NTkxNUBldXJvJzogJ0lTTzg4NTktMTUnLAorICAndWtfVUEnOiAnS09JOC1VJywKKyAgJ3VrX1VBLmtvaTh1JzogJ0tPSTgtVScKK30KKworaW50ZWdlcnMgPSBbCisgICIiLAorICAiMSIsCisgICIxMiIsCisgICIxMjMiLAorICAiMTIzNCIsCisgICIxMjM0NSIsCisgICIxMjM0NTYiLAorICAiMTIzNDU2NyIsCisgICIxMjM0NTY3OCIsCisgICIxMjM0NTY3ODkiLAorICAiMTIzNDU2Nzg5MCIsCisgICIxMjM0NTY3ODkwMSIsCisgICIxMjM0NTY3ODkwMTIiLAorICAiMTIzNDU2Nzg5MDEyMyIsCisgICIxMjM0NTY3ODkwMTIzNCIsCisgICIxMjM0NTY3ODkwMTIzNDUiLAorICAiMTIzNDU2Nzg5MDEyMzQ1NiIsCisgICIxMjM0NTY3ODkwMTIzNDU2NyIsCisgICIxMjM0NTY3ODkwMTIzNDU2NzgiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OSIsCisgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsCisgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMiIsCitdCisKK251bWJlcnMgPSBbCisgICIwIiwgIi0wIiwgIiswIiwKKyAgIjAuMCIsICItMC4wIiwgIiswLjAiLAorICAiMGUwIiwgIi0wZTAiLCAiKzBlMCIsCisgICIuMCIsICItLjAiLAorICAiLjEiLCAiLS4xIiwKKyAgIjEuMSIsICItMS4xIiwKKyAgIjFlMSIsICItMWUxIgorXQorCisjIEdldCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgbG9jYWxlcy4KK2lmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdXaW5kb3dzJzoKKyAgICBsb2NhbGVfbGlzdCA9IHdpbmRvd3NfbGFuZ19zdHJpbmdzCitlbHNlOgorICAgIGxvY2FsZV9saXN0ID0gWydDJ10KKyAgICBpZiBvcy5wYXRoLmlzZmlsZSgiL3Zhci9saWIvbG9jYWxlcy9zdXBwb3J0ZWQuZC9sb2NhbCIpOgorICAgICAgICAjIE9uIFVidW50dSwgYGxvY2FsZSAtYWAgZ2l2ZXMgdGhlIHdyb25nIGNhc2UgZm9yIHNvbWUgbG9jYWxlcywKKyAgICAgICAgIyBzbyB3ZSBnZXQgdGhlIGNvcnJlY3QgbmFtZXMgZGlyZWN0bHk6CisgICAgICAgIHdpdGggb3BlbigiL3Zhci9saWIvbG9jYWxlcy9zdXBwb3J0ZWQuZC9sb2NhbCIpIGFzIGY6CisgICAgICAgICAgICBsb2NhbGVfbGlzdCA9IFtsb2Muc3BsaXQoKVswXSBmb3IgbG9jIGluIGYucmVhZGxpbmVzKCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxvYy5zdGFydHN3aXRoKCcjJyldCisgICAgZWxpZiBmaW5kX2V4ZWN1dGFibGUoJ2xvY2FsZScpOgorICAgICAgICBsb2NhbGVfbGlzdCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJsb2NhbGUiLCAiLWEiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2NhbGVfbGlzdCA9IGxvY2FsZV9saXN0LmRlY29kZSgpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAjIFNvbWUgZGlzdHJpYnV0aW9ucyBpbnNpc3Qgb24gdXNpbmcgbGF0aW4tMSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAjIGluIHRoZWlyIGxvY2FsZSBuYW1lcy4KKyAgICAgICAgICAgIGxvY2FsZV9saXN0ID0gbG9jYWxlX2xpc3QuZGVjb2RlKCdsYXRpbi0xJykKKyAgICAgICAgbG9jYWxlX2xpc3QgPSBsb2NhbGVfbGlzdC5zcGxpdCgnXG4nKQordHJ5OgorICAgIGxvY2FsZV9saXN0LnJlbW92ZSgnJykKK2V4Y2VwdCBWYWx1ZUVycm9yOgorICAgIHBhc3MKKworIyBEZWJpYW4KK2lmIG9zLnBhdGguaXNmaWxlKCIvZXRjL2xvY2FsZS5hbGlhcyIpOgorICAgIHdpdGggb3BlbigiL2V0Yy9sb2NhbGUuYWxpYXMiKSBhcyBmOgorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxpbmUgPT0gIiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB4ID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBpZiBsZW4oeCkgPT0gMjoKKyAgICAgICAgICAgICAgICBpZiB4WzBdIGluIGxvY2FsZV9saXN0OgorICAgICAgICAgICAgICAgICAgICBsb2NhbGVfbGlzdC5yZW1vdmUoeFswXSkKKworIyBGcmVlQlNECitpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnRnJlZUJTRCc6CisgICAgIyBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9xdWVyeS1wci5jZ2k/cHI9MTQyMTczCisgICAgIyBlbl9HQi5VUy1BU0NJSSBoYXMgMTYzIGFzIHRoZSBjdXJyZW5jeSBzeW1ib2wuCisgICAgZm9yIGxvYyBpbiBbJ2l0X0NILklTTzg4NTktMScsICdpdF9DSC5JU084ODU5LTE1JywgJ2l0X0NILlVURi04JywKKyAgICAgICAgICAgICAgICAnaXRfSVQuSVNPODg1OS0xJywgJ2l0X0lULklTTzg4NTktMTUnLCAnaXRfSVQuVVRGLTgnLAorICAgICAgICAgICAgICAgICdzbF9TSS5JU084ODU5LTInLCAnc2xfU0kuVVRGLTgnLAorICAgICAgICAgICAgICAgICdlbl9HQi5VUy1BU0NJSSddOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2NhbGVfbGlzdC5yZW1vdmUobG9jKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworIyBQcmludCBhIHRlc3RjYXNlIGluIHRoZSBmb3JtYXQgb2YgdGhlIElCTSB0ZXN0cyAoZm9yIHJ1bnRlc3QuYyk6CitkZWYgZ2V0X3ByZWZlcnJlZF9lbmNvZGluZygpOgorICAgIGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKQorICAgIGlmIGxvYyBpbiBwcmVmZXJyZWRfZW5jb2Rpbmc6CisgICAgICAgIHJldHVybiBwcmVmZXJyZWRfZW5jb2RpbmdbbG9jXQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorCitkZWYgcHJpbnRpdCh0ZXN0bm8sIHMsIGZtdCwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgaWYgbm90IGVuY29kaW5nOgorICAgICAgICBlbmNvZGluZyA9IGdldF9wcmVmZXJyZWRfZW5jb2RpbmcoKQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gZm9ybWF0KFAuRGVjaW1hbChzKSwgZm10KQorICAgICAgICBmbXQgPSBzdHIoZm10LmVuY29kZShlbmNvZGluZykpWzI6LTFdCisgICAgICAgIHJlc3VsdCA9IHN0cihyZXN1bHQuZW5jb2RlKGVuY29kaW5nKSlbMjotMV0KKyAgICAgICAgaWYgIiciIGluIHJlc3VsdDoKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoInhmbXQlZCAgZm9ybWF0ICAlcyAgJyVzJyAgLT4gIFwiJXNcIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh0ZXN0bm8sIHMsIGZtdCwgcmVzdWx0KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoInhmbXQlZCAgZm9ybWF0ICAlcyAgJyVzJyAgLT4gICclcydcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGVzdG5vLCBzLCBmbXQsIHJlc3VsdCkpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzICAlcyAgJXNcbiIgJSAoZXJyLCBzLCBmbXQpKQorCisKKyMgQ2hlY2sgaWYgYW4gaW50ZWdlciBjYW4gYmUgY29udmVydGVkIHRvIGEgdmFsaWQgZmlsbCBjaGFyYWN0ZXIuCitkZWYgY2hlY2tfZmlsbGNoYXIoaSk6CisgICAgdHJ5OgorICAgICAgICBjID0gY2hyKGkpCisgICAgICAgIGMuZW5jb2RlKCd1dGYtOCcpLmRlY29kZSgpCisgICAgICAgIGZvcm1hdChQLkRlY2ltYWwoMCksIGMgKyAnPDE5ZycpCisgICAgICAgIGlmIGMgaW4gKCInIiwgJyInLCAnXFwnKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBjCisgICAgZXhjZXB0OgorICAgICAgICByZXR1cm4gTm9uZQorCisjIEdlbmVyYXRlIGFsbCB1bmljb2RlIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWNjZXB0ZWQgYXMKKyMgZmlsbCBjaGFyYWN0ZXJzIGJ5IGRlY2ltYWwucHkuCitkZWYgYWxsX2ZpbGxjaGFycygpOgorICAgIGZvciBpIGluIHJhbmdlKDMyLCAweDExMDAwMik6CisgICAgICAgIGMgPSBjaGVja19maWxsY2hhcihpKQorICAgICAgICBpZiBjOiB5aWVsZCBjCisKKyMgUmV0dXJuIHJhbmRvbSBmaWxsIGNoYXJhY3Rlci4KK2RlZiByYW5kX2ZpbGxjaGFyKCk6CisgICAgd2hpbGUgMToKKyAgICAgICAgaSA9IHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDB4MTEwMDAyKQorICAgICAgICBjID0gY2hlY2tfZmlsbGNoYXIoaSkKKyAgICAgICAgaWYgYzogcmV0dXJuIGMKKworIyBHZW5lcmF0ZSByYW5kb20gZm9ybWF0IHN0cmluZ3MKKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiByYW5kX2Zvcm1hdChmaWxsLCB0eXBlc3BlYz0nRWVHZ0ZmbiUnKToKKyAgICBhY3RpdmUgPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSg3KSwgcmFuZG9tLnJhbmRyYW5nZSg4KSkpCisgICAgaGF2ZV9hbGlnbiA9IDAKKyAgICBzID0gJycKKyAgICBmb3IgZWxlbSBpbiBhY3RpdmU6CisgICAgICAgIGlmIGVsZW0gPT0gMDogIyBmaWxsK2FsaWduCisgICAgICAgICAgICBzICs9IGZpbGwKKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnPD49XicpCisgICAgICAgICAgICBoYXZlX2FsaWduID0gMQorICAgICAgICBlbGlmIGVsZW0gPT0gMTogIyBzaWduCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJystICcpCisgICAgICAgIGVsaWYgZWxlbSA9PSAyIGFuZCBub3QgaGF2ZV9hbGlnbjogIyB6ZXJvcGFkCisgICAgICAgICAgICBzICs9ICcwJworICAgICAgICBlbGlmIGVsZW0gPT0gMzogIyB3aWR0aAorICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNDogIyB0aG91c2FuZHMgc2VwYXJhdG9yCisgICAgICAgICAgICBzICs9ICcsJworICAgICAgICBlbGlmIGVsZW0gPT0gNTogIyBwcmVjCisgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNjoKKyAgICAgICAgICAgIGlmIDQgaW4gYWN0aXZlOiBjID0gdHlwZXNwZWMucmVwbGFjZSgnbicsICcnKQorICAgICAgICAgICAgZWxzZTogYyA9IHR5cGVzcGVjCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoYykKKyAgICByZXR1cm4gcworCisjIFBhcnRpYWxseSBicnV0ZSBmb3JjZSBhbGwgcG9zc2libGUgZm9ybWF0IHN0cmluZ3MgY29udGFpbmluZyBhIHRob3VzYW5kcworIyBzZXBhcmF0b3IuIEZhbGwgYmFjayB0byByYW5kb20gd2hlcmUgdGhlIHJ1bnRpbWUgd291bGQgYmVjb21lIGV4Y2Vzc2l2ZS4KKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiBhbGxfZm9ybWF0X3NlcCgpOgorICAgIGZvciBhbGlnbiBpbiAoJycsICc8JywgJz4nLCAnPScsICdeJyk6CisgICAgICAgIGZvciBmaWxsIGluICgnJywgJ3gnKToKKyAgICAgICAgICAgIGlmIGFsaWduID09ICcnOiBmaWxsID0gJycKKyAgICAgICAgICAgIGZvciBzaWduIGluICgnJywgJysnLCAnLScsICcgJyk6CisgICAgICAgICAgICAgICAgZm9yIHplcm9wYWQgaW4gKCcnLCAnMCcpOgorICAgICAgICAgICAgICAgICAgICBpZiBhbGlnbiAhPSAnJzogemVyb3BhZCA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciB3aWR0aCBpbiBbJyddK1tzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMSwgMTUpXStbJzEwMSddOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByZWMgaW4gWycnXStbJy4nK3N0cih5KSBmb3IgeSBpbiByYW5nZSgxNSldOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHR5cGUgaW4gKCcnLCAnRScsICdlJywgJ0cnLCAnZycsICdGJywgJ2YnLCAnJScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSByYW5kb20uY2hvaWNlKCgnJywgJ0UnLCAnZScsICdHJywgJ2cnLCAnRicsICdmJywgJyUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAnJy5qb2luKChmaWxsLCBhbGlnbiwgc2lnbiwgemVyb3BhZCwgd2lkdGgsICcsJywgcHJlYywgdHlwZSkpCisKKyMgUGFydGlhbGx5IGJydXRlIGZvcmNlIGFsbCBwb3NzaWJsZSBmb3JtYXQgc3RyaW5ncyB3aXRoIGFuICduJyBzcGVjaWZpZXIuCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgYWxsX2Zvcm1hdF9sb2MoKToKKyAgICBmb3IgYWxpZ24gaW4gKCcnLCAnPCcsICc+JywgJz0nLCAnXicpOgorICAgICAgICBmb3IgZmlsbCBpbiAoJycsICd4Jyk6CisgICAgICAgICAgICBpZiBhbGlnbiA9PSAnJzogZmlsbCA9ICcnCisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoJycsICcrJywgJy0nLCAnICcpOgorICAgICAgICAgICAgICAgIGZvciB6ZXJvcGFkIGluICgnJywgJzAnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgYWxpZ24gIT0gJyc6IHplcm9wYWQgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3Igd2lkdGggaW4gWycnXStbc3RyKHkpIGZvciB5IGluIHJhbmdlKDEsIDIwKV0rWycxMDEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcmVjIGluIFsnJ10rWycuJytzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMSwgMjApXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAnJy5qb2luKChmaWxsLCBhbGlnbiwgc2lnbiwgemVyb3BhZCwgd2lkdGgsIHByZWMsICduJykpCisKKyMgR2VuZXJhdGUgcmFuZG9tIGZvcm1hdCBzdHJpbmdzIHdpdGggYSB1bmljb2RlIGZpbGwgY2hhcmFjdGVyCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgcmFuZGZpbGwoZmlsbCk6CisgICAgYWN0aXZlID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoNSksIHJhbmRvbS5yYW5kcmFuZ2UoNikpKQorICAgIHMgPSAnJworICAgIHMgKz0gc3RyKGZpbGwpCisgICAgcyArPSByYW5kb20uY2hvaWNlKCc8Pj1eJykKKyAgICBmb3IgZWxlbSBpbiBhY3RpdmU6CisgICAgICAgIGlmIGVsZW0gPT0gMDogIyBzaWduCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJystICcpCisgICAgICAgIGVsaWYgZWxlbSA9PSAxOiAjIHdpZHRoCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSAyOiAjIHRob3VzYW5kcyBzZXBhcmF0b3IKKyAgICAgICAgICAgIHMgKz0gJywnCisgICAgICAgIGVsaWYgZWxlbSA9PSAzOiAjIHByZWMKKyAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSA0OgorICAgICAgICAgICAgaWYgMiBpbiBhY3RpdmU6IGMgPSAnRWVHZ0ZmJScKKyAgICAgICAgICAgIGVsc2U6IGMgPSAnRWVHZ0ZmbiUnCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoYykKKyAgICByZXR1cm4gcworCisjIEdlbmVyYXRlIHJhbmRvbSBmb3JtYXQgc3RyaW5ncyB3aXRoIHJhbmRvbSBsb2NhbGUgc2V0dGluZworIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIHJhbmRfbG9jYWxlKCk6CisgICAgdHJ5OgorICAgICAgICBsb2MgPSByYW5kb20uY2hvaWNlKGxvY2FsZV9saXN0KQorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIGxvYykKKyAgICBleGNlcHQgbG9jYWxlLkVycm9yIGFzIGVycjoKKyAgICAgICAgcGFzcworICAgIGFjdGl2ZSA9IHNvcnRlZChyYW5kb20uc2FtcGxlKHJhbmdlKDUpLCByYW5kb20ucmFuZHJhbmdlKDYpKSkKKyAgICBzID0gJycKKyAgICBoYXZlX2FsaWduID0gMAorICAgIGZvciBlbGVtIGluIGFjdGl2ZToKKyAgICAgICAgaWYgZWxlbSA9PSAwOiAjIGZpbGwrYWxpZ24KKyAgICAgICAgICAgIHMgKz0gY2hyKHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDEyOCkpCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJzw+PV4nKQorICAgICAgICAgICAgaGF2ZV9hbGlnbiA9IDEKKyAgICAgICAgZWxpZiBlbGVtID09IDE6ICMgc2lnbgorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCcrLSAnKQorICAgICAgICBlbGlmIGVsZW0gPT0gMiBhbmQgbm90IGhhdmVfYWxpZ246ICMgemVyb3BhZAorICAgICAgICAgICAgcyArPSAnMCcKKyAgICAgICAgZWxpZiBlbGVtID09IDM6ICMgd2lkdGgKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDQ6ICMgcHJlYworICAgICAgICAgICAgcyArPSAnLicKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKKyAgICBzICs9ICduJworICAgIHJldHVybiBzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRkZWMucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRkZWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EwZjBkMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGRlYy5weQpAQCAtMCwwICsxLDU3NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIworIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorIworCisKKyMgR2VuZXJhdGUgdGVzdCBjYXNlcyBmb3IgZGVjY2hlY2sucHkuCisKKworIworIyBHcmFtbWFyIGZyb20gaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RhY29udnMuaHRtbAorIworIyBzaWduICAgICAgICAgICA6Oj0gICcrJyB8ICctJworIyBkaWdpdCAgICAgICAgICA6Oj0gICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8CisjICAgICAgICAgICAgICAgICAgICAgJzgnIHwgJzknCisjIGluZGljYXRvciAgICAgIDo6PSAgJ2UnIHwgJ0UnCisjIGRpZ2l0cyAgICAgICAgIDo6PSAgZGlnaXQgW2RpZ2l0XS4uLgorIyBkZWNpbWFsLXBhcnQgICA6Oj0gIGRpZ2l0cyAnLicgW2RpZ2l0c10gfCBbJy4nXSBkaWdpdHMKKyMgZXhwb25lbnQtcGFydCAgOjo9ICBpbmRpY2F0b3IgW3NpZ25dIGRpZ2l0cworIyBpbmZpbml0eSAgICAgICA6Oj0gICdJbmZpbml0eScgfCAnSW5mJworIyBuYW4gICAgICAgICAgICA6Oj0gICdOYU4nIFtkaWdpdHNdIHwgJ3NOYU4nIFtkaWdpdHNdCisjIG51bWVyaWMtdmFsdWUgIDo6PSAgZGVjaW1hbC1wYXJ0IFtleHBvbmVudC1wYXJ0XSB8IGluZmluaXR5CisjIG51bWVyaWMtc3RyaW5nIDo6PSAgW3NpZ25dIG51bWVyaWMtdmFsdWUgfCBbc2lnbl0gbmFuCisjCisKKworZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlCitmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KK2Zyb20gcmFuZGZsb2F0IGltcG9ydCB1bl9yYW5kZmxvYXQsIGJpbl9yYW5kZmxvYXQsIHRlcm5fcmFuZGZsb2F0CisKKworZGVmIHNpZ24oKToKKyAgICBpZiByYW5kcmFuZ2UoMik6CisgICAgICAgIGlmIHJhbmRyYW5nZSgyKTogcmV0dXJuICcrJworICAgICAgICByZXR1cm4gJycKKyAgICByZXR1cm4gJy0nCisKK2RlZiBpbmRpY2F0b3IoKToKKyAgICByZXR1cm4gImVFIltyYW5kcmFuZ2UoMildCisKK2RlZiBkaWdpdHMobWF4cHJlYyk6CisgICAgaWYgbWF4cHJlYyA9PSAwOiByZXR1cm4gJycKKyAgICByZXR1cm4gc3RyKHJhbmRyYW5nZSgxMCoqbWF4cHJlYykpCisKK2RlZiBkb3QoKToKKyAgICBpZiByYW5kcmFuZ2UoMik6IHJldHVybiAnLicKKyAgICByZXR1cm4gJycKKworZGVmIGRlY2ltYWxfcGFydChtYXhwcmVjKToKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDYwOiAjIGludGVnZXJzCisgICAgICAgIHJldHVybiBkaWdpdHMobWF4cHJlYykKKyAgICBpZiByYW5kcmFuZ2UoMik6CisgICAgICAgIGludGxlbiA9IHJhbmRyYW5nZSgxLCBtYXhwcmVjKzEpCisgICAgICAgIGZyYWNsZW4gPSBtYXhwcmVjLWludGxlbgorICAgICAgICBpbnRwYXJ0ID0gZGlnaXRzKGludGxlbikKKyAgICAgICAgZnJhY3BhcnQgPSBkaWdpdHMoZnJhY2xlbikKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKGludHBhcnQsICcuJywgZnJhY3BhcnQpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKChkb3QoKSwgZGlnaXRzKG1heHByZWMpKSkKKworZGVmIGV4cGRpZ2l0cyhtYXhleHApOgorICAgIHJldHVybiBzdHIocmFuZHJhbmdlKG1heGV4cCkpCisKK2RlZiBleHBvbmVudF9wYXJ0KG1heGV4cCk6CisgICAgcmV0dXJuICcnLmpvaW4oKGluZGljYXRvcigpLCBzaWduKCksIGV4cGRpZ2l0cyhtYXhleHApKSkKKworZGVmIGluZmluaXR5KCk6CisgICAgaWYgcmFuZHJhbmdlKDIpOiByZXR1cm4gJ0luZmluaXR5JworICAgIHJldHVybiAnSW5mJworCitkZWYgbmFuKCk6CisgICAgZCA9ICcnCisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICBkID0gZGlnaXRzKHJhbmRyYW5nZSg5OSkpCisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICByZXR1cm4gJycuam9pbigoJ05hTicsIGQpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKCgnc05hTicsIGQpKQorCitkZWYgbnVtZXJpY192YWx1ZShtYXhwcmVjLCBtYXhleHApOgorICAgIGlmIHJhbmRyYW5nZSgxMDApID4gOTA6CisgICAgICAgIHJldHVybiBpbmZpbml0eSgpCisgICAgZXhwX3BhcnQgPSAnJworICAgIGlmIHJhbmRyYW5nZSgxMDApID4gNjA6CisgICAgICAgIGV4cF9wYXJ0ID0gZXhwb25lbnRfcGFydChtYXhleHApCisgICAgcmV0dXJuICcnLmpvaW4oKGRlY2ltYWxfcGFydChtYXhwcmVjKSwgZXhwX3BhcnQpKQorCitkZWYgbnVtZXJpY19zdHJpbmcobWF4cHJlYywgbWF4ZXhwKToKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDk1OgorICAgICAgICByZXR1cm4gJycuam9pbigoc2lnbigpLCBuYW4oKSkpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKHNpZ24oKSwgbnVtZXJpY192YWx1ZShtYXhwcmVjLCBtYXhleHApKSkKKworZGVmIHJhbmRkZWMobWF4cHJlYywgbWF4ZXhwKToKKyAgICByZXR1cm4gbnVtZXJpY19zdHJpbmcobWF4cHJlYywgbWF4ZXhwKQorCitkZWYgcmFuZF9hZGpleHAobWF4cHJlYywgbWF4YWRqZXhwKToKKyAgICBkID0gZGlnaXRzKG1heHByZWMpCisgICAgbWF4ZXhwID0gbWF4YWRqZXhwLWxlbihkKSsxCisgICAgaWYgbWF4ZXhwID09IDA6IG1heGV4cCA9IDEKKyAgICBleHAgPSBzdHIocmFuZHJhbmdlKG1heGV4cC0yKihhYnMobWF4ZXhwKSksIG1heGV4cCkpCisgICAgcmV0dXJuICcnLmpvaW4oKHNpZ24oKSwgZCwgJ0UnLCBleHApKQorCisKK2RlZiBuZGlnaXRzKG4pOgorICAgIGlmIG4gPCAxOiByZXR1cm4gMAorICAgIHJldHVybiByYW5kcmFuZ2UoMTAqKihuLTEpLCAxMCoqbikKKworZGVmIHJhbmR0dXBsZShtYXhwcmVjLCBtYXhleHApOgorICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgIHNpZ24gPSByYW5kcmFuZ2UoMikKKyAgICBjb2VmZiA9IG5kaWdpdHMobWF4cHJlYykKKyAgICBpZiBuID49IDk1OgorICAgICAgICBjb2VmZiA9ICgpCisgICAgICAgIGV4cCA9ICdGJworICAgIGVsaWYgbiA+PSA4NToKKyAgICAgICAgY29lZmYgPSB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtYXhwcmVjKSkpKQorICAgICAgICBleHAgPSAibk4iW3JhbmRyYW5nZSgyKV0KKyAgICBlbHNlOgorICAgICAgICBjb2VmZiA9IHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG1heHByZWMpKSkpCisgICAgICAgIGV4cCA9IHJhbmRyYW5nZSgtbWF4ZXhwLCBtYXhleHApCisgICAgcmV0dXJuIChzaWduLCBjb2VmZiwgZXhwKQorCitkZWYgZnJvbV90cmlwbGUoc2lnbiwgY29lZmYsIGV4cCk6CisgICAgcmV0dXJuICcnLmpvaW4oKHN0cihzaWduKmNvZWZmKSwgaW5kaWNhdG9yKCksIHN0cihleHApKSkKKworCisjIENsb3NlIHRvIDEwKipuCitkZWYgdW5fY2xvc2VfdG9fcG93MTAocHJlYywgbWF4ZXhwLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdCA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0ID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgbmluZXMgPSBbMTAqKm4gLSAxIGZvciBuIGluIGxzdF0KKyAgICBwb3cxMCA9IFsxMCoqbiBmb3IgbiBpbiBsc3RdCisgICAgZm9yIGNvZWZmIGluIG5pbmVzOgorICAgICAgICB5aWVsZCBjb2VmZgorICAgICAgICB5aWVsZCAtY29lZmYKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBjb2VmZiwgcmFuZHJhbmdlKDIqbWF4ZXhwKSkKKyAgICBmb3IgY29lZmYgaW4gcG93MTA6CisgICAgICAgIHlpZWxkIGNvZWZmCisgICAgICAgIHlpZWxkIC1jb2VmZgorCisjIENsb3NlIHRvIDEwKipuCitkZWYgYmluX2Nsb3NlX3RvX3BvdzEwKHByZWMsIG1heGV4cCwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIG5pbmVzID0gWzEwKipuIC0gMSBmb3IgbiBpbiBsc3RdCisgICAgcG93MTAgPSBbMTAqKm4gZm9yIG4gaW4gbHN0XQorICAgIGZvciBjb2VmZiBpbiBuaW5lczoKKyAgICAgICAgeWllbGQgY29lZmYsIDEKKyAgICAgICAgeWllbGQgLWNvZWZmLCAtMQorICAgICAgICB5aWVsZCAxLCBjb2VmZgorICAgICAgICB5aWVsZCAtMSwgLWNvZWZmCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKSwgMQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpLCAtMQorICAgICAgICB5aWVsZCAxLCBmcm9tX3RyaXBsZSgxLCBjb2VmZiwgLXJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgICAgIHlpZWxkIC0xLCBmcm9tX3RyaXBsZSgtMSwgY29lZmYsIC1yYW5kcmFuZ2UoMiptYXhleHApKQorICAgIGZvciBjb2VmZiBpbiBwb3cxMDoKKyAgICAgICAgeWllbGQgY29lZmYsIC0xCisgICAgICAgIHlpZWxkIC1jb2VmZiwgMQorICAgICAgICB5aWVsZCAxLCAtY29lZmYKKyAgICAgICAgeWllbGQgLWNvZWZmLCAxCisKKyMgQ2xvc2UgdG8gMToKK2RlZiBjbG9zZV90b19vbmVfZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworZGVmIGNsb3NlX3RvX29uZV9sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjAuOSIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworIyBDbG9zZSB0byAwOgorZGVmIGNsb3NlX3RvX3plcm9fZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIwLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworZGVmIGNsb3NlX3RvX3plcm9fbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCItMC4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKKyMgQ2xvc2UgdG8gZW1heDoKK2RlZiBjbG9zZV90b19lbWF4X2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZW1heCkpKQorCitkZWYgY2xvc2VfdG9fZW1heF9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtYXgrMSkpKQorCisjIENsb3NlIHRvIGVtaW46CitkZWYgY2xvc2VfdG9fZW1pbl9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtaW4pKSkKKworZGVmIGNsb3NlX3RvX2VtaW5fbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCI5LiIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWluLTEpKSkKKworIyBDbG9zZSB0byBldGlueToKK2RlZiBjbG9zZV90b19ldGlueV9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IGVtaW4gLSAocHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueSkpKQorCitkZWYgY2xvc2VfdG9fZXRpbnlfbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBlbWluIC0gKHByZWMgLSAxKQorICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZXRpbnktMSkpKQorCisKK2RlZiBjbG9zZV90b19taW5fZXRpbnlfZ3JlYXRlcihwcmVjLCBtYXhfcHJlYywgbWluX2VtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IG1pbl9lbWluIC0gKG1heF9wcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55KSkpCisKK2RlZiBjbG9zZV90b19taW5fZXRpbnlfbGVzcyhwcmVjLCBtYXhfcHJlYywgbWluX2VtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IG1pbl9lbWluIC0gKG1heF9wcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55LTEpKSkKKworCitjbG9zZV9mdW5jcyA9IFsKKyAgY2xvc2VfdG9fb25lX2dyZWF0ZXIsIGNsb3NlX3RvX29uZV9sZXNzLCBjbG9zZV90b196ZXJvX2dyZWF0ZXIsCisgIGNsb3NlX3RvX3plcm9fbGVzcywgY2xvc2VfdG9fZW1heF9sZXNzLCBjbG9zZV90b19lbWF4X2dyZWF0ZXIsCisgIGNsb3NlX3RvX2VtaW5fZ3JlYXRlciwgY2xvc2VfdG9fZW1pbl9sZXNzLCBjbG9zZV90b19ldGlueV9ncmVhdGVyLAorICBjbG9zZV90b19ldGlueV9sZXNzLCBjbG9zZV90b19taW5fZXRpbnlfZ3JlYXRlciwgY2xvc2VfdG9fbWluX2V0aW55X2xlc3MKK10KKworCitkZWYgdW5fY2xvc2VfbnVtYmVycyhwcmVjLCBlbWF4LCBlbWluLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMocHJlYywgZW1heCwgZW1pbikKKworZGVmIGJpbl9jbG9zZV9udW1iZXJzKHByZWMsIGVtYXgsIGVtaW4sIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jMSBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIGZvciBmdW5jMiBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgICAgICB5aWVsZCBmdW5jMShwcmVjLCBlbWF4LCBlbWluKSwgZnVuYzIocHJlYywgZW1heCwgZW1pbikKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pCisgICAgICAgICAgICB5aWVsZCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCByYW5kZGVjKHByZWMsIGVtYXgpCisKK2RlZiB0ZXJuX2Nsb3NlX251bWJlcnMocHJlYywgZW1heCwgZW1pbiwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jMSBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIGZvciBmdW5jMiBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgICAgICBmb3IgZnVuYzMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIChmdW5jMShwcmVjLCBlbWF4LCBlbWluKSwgZnVuYzIocHJlYywgZW1heCwgZW1pbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jMyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICBmdW5jKHByZWMsIGVtYXgsIGVtaW4pKQorICAgICAgICAgICAgeWllbGQgKGZ1bmMocHJlYywgZW1heCwgZW1pbiksIHJhbmRkZWMocHJlYywgZW1heCksCisgICAgICAgICAgICAgICAgICAgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgICAgIHlpZWxkIChmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgIHJhbmRkZWMocHJlYywgZW1heCkpCisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgKHJhbmRkZWMocHJlYywgZW1heCksIHJhbmRkZWMocHJlYywgZW1heCksCisgICAgICAgICAgICAgICAgICAgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgIHJhbmRkZWMocHJlYywgZW1heCkpCisgICAgICAgICAgICB5aWVsZCAoZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgcmFuZGRlYyhwcmVjLCBlbWF4KSwKKyAgICAgICAgICAgICAgICAgICByYW5kZGVjKHByZWMsIGVtYXgpKQorCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCitkZWYgdW5faW5jcl9kaWdpdHMocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDoKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCisjIEFsc28gb3V0cHV0IGRlY2ltYWxzIGltIHR1cGxlIGZvcm0uCitkZWYgdW5faW5jcl9kaWdpdHNfdHVwbGUocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDoKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICMgdGVzdCBmcm9tIHR1cGxlCisgICAgICAgIHlpZWxkICgwLCB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtKSkpKSwgMCkKKyAgICAgICAgeWllbGQgKDEsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCAwKQorICAgICAgICB5aWVsZCAoMCwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCAoMSwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIHJhbmRyYW5nZShtYXhleHApKQorCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBjb21iaW5hdGlvbnMgb2YgZGlnaXQgbGVuZ3RocyB1cCB0byBwcmVjICsgMzAKK2RlZiBiaW5faW5jcl9kaWdpdHMocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QxID0gcmFuZ2UocHJlYyszMCkKKyAgICAgICAgbHN0MiA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0MSA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgICAgICBsc3QyID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgeCwgeAorICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgZm9yIG4gaW4gbHN0MjoKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKworCitkZWYgcmFuZHNpZ24oKToKKyAgICByZXR1cm4gKDEsIC0xKVtyYW5kcmFuZ2UoMildCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGNvbWJpbmF0aW9ucyBvZiBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorZGVmIHRlcm5faW5jcl9kaWdpdHMocHJlYywgbWF4ZXhwLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QxID0gcmFuZ2UocHJlYyszMCkKKyAgICAgICAgbHN0MiA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDMgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdDEgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MiA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgICAgICBsc3QzID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgZm9yIG4gaW4gbHN0MjoKKyAgICAgICAgICAgIGZvciBwIGluIGxzdDM6CisgICAgICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKHJhbmRzaWduKCksIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKHJhbmRzaWduKCksIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICAgICAgeiA9IGZyb21fdHJpcGxlKHJhbmRzaWduKCksIG5kaWdpdHMocCksIDApCisgICAgICAgICAgICAgICAgeWllbGQgeCwgeSwgegorCisKKyMgVGVzdHMgZm9yIHRoZSAnbG9naWNhbCcgZnVuY3Rpb25zCitkZWYgYmluZGlnaXRzKHByZWMpOgorICAgIHogPSAwCisgICAgZm9yIGkgaW4gcmFuZ2UocHJlYyk6CisgICAgICAgIHogKz0gcmFuZHJhbmdlKDIpICogMTAqKmkKKyAgICByZXR1cm4gegorCitkZWYgbG9naWNhbF91bl9pbmNyX2RpZ2l0cyhwcmVjLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDoKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG0pLCAwKQorCitkZWYgbG9naWNhbF9iaW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0MSA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDIgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdDEgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MiA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICBmb3IgbiBpbiBsc3QyOgorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIGJpbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisKKworZGVmIHJhbmRpbnQoKToKKyAgICBwID0gcmFuZHJhbmdlKDEsIDEwMCkKKyAgICByZXR1cm4gbmRpZ2l0cyhwKSAqICgxLC0xKVtyYW5kcmFuZ2UoMildCisKK2RlZiByYW5kZmxvYXQoKToKKyAgICBwID0gcmFuZHJhbmdlKDEsIDEwMCkKKyAgICBzID0gbnVtZXJpY192YWx1ZShwLCAzODMpCisgICAgdHJ5OgorICAgICAgICBmID0gZmxvYXQobnVtZXJpY192YWx1ZShwLCAzODMpKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBmID0gMC4wCisgICAgcmV0dXJuIGYKKworZGVmIHJhbmRjb21wbGV4KCk6CisgICAgcmVhbCA9IHJhbmRmbG9hdCgpCisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiAzMDoKKyAgICAgICAgaW1hZyA9IDAuMAorICAgIGVsc2U6CisgICAgICAgIGltYWcgPSByYW5kZmxvYXQoKQorICAgIHJldHVybiBjb21wbGV4KHJlYWwsIGltYWcpCisKK2RlZiByYW5kZnJhY3Rpb24oKToKKyAgICBudW0gPSByYW5kaW50KCkKKyAgICBkZW5vbSA9IHJhbmRpbnQoKQorICAgIGlmIGRlbm9tID09IDA6CisgICAgICAgIGRlbm9tID0gMQorICAgIHJldHVybiBGcmFjdGlvbihudW0sIGRlbm9tKQorCitudW1iZXJfZnVuY3MgPSBbcmFuZGludCwgcmFuZGZsb2F0LCByYW5kY29tcGxleCwgcmFuZGZyYWN0aW9uXQorCitkZWYgdW5fcmFuZG9tX21peGVkX29wKGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jIGluIG51bWJlcl9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMoKQorICAgICMgVGVzdCBnYXJiYWdlIGlucHV0CisgICAgZm9yIHggaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgeWllbGQgeAorCitkZWYgYmluX3JhbmRvbV9taXhlZF9vcChwcmVjLCBlbWF4LCBlbWluLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKCkKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMoKSwgcmFuZGRlYyhwcmVjLCBlbWF4KQorICAgICAgICBmb3IgbnVtYmVyIGluIG51bWJlcl9mdW5jczoKKyAgICAgICAgICAgIGZvciBkZWMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgeWllbGQgZGVjKHByZWMsIGVtYXgsIGVtaW4pLCBudW1iZXIoKQorICAgICMgVGVzdCBnYXJiYWdlIGlucHV0CisgICAgZm9yIHggaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgZm9yIHkgaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKworZGVmIHRlcm5fcmFuZG9tX21peGVkX29wKHByZWMsIGVtYXgsIGVtaW4sIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKCkKKyAgICAgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMoKSwgZnVuYygpCisgICAgICAgICAgICB5aWVsZCBmdW5jKCksIGZ1bmMoKSwgZnVuYygpCisgICAgIyBUZXN0IGdhcmJhZ2UgaW5wdXQKKyAgICBmb3IgeCBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICBmb3IgeSBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICAgICAgZm9yIHogaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgICAgICAgICB5aWVsZCB4LCB5LCB6CisKK2RlZiBhbGxfdW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBhIGluIHVuX2Nsb3NlX3RvX3BvdzEwKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX2Nsb3NlX251bWJlcnMocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5faW5jcl9kaWdpdHNfdHVwbGUocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5fcmFuZGZsb2F0KCk6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiB1bl9yYW5kb21fbWl4ZWRfb3AoaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIGxvZ2ljYWxfdW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksKQorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIChyYW5kdHVwbGUocHJlYywgZXhwX3JhbmdlKSwpCisKK2RlZiB1bmFyeV9vcHRhcmcocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgTm9uZQorICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksIE5vbmUsIE5vbmUKKworZGVmIGFsbF9iaW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBhLCBiIGluIGJpbl9jbG9zZV90b19wb3cxMChwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBiaW5fY2xvc2VfbnVtYmVycyhwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBiaW5faW5jcl9kaWdpdHMocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX3JhbmRmbG9hdCgpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX3JhbmRvbV9taXhlZF9vcChwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBsb2dpY2FsX2Jpbl9pbmNyX2RpZ2l0cyhwcmVjLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSkKKworZGVmIGJpbmFyeV9vcHRhcmcocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCBOb25lCisgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCBOb25lLCBOb25lCisKK2RlZiBhbGxfdGVybmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgZm9yIGEsIGIsIGMgaW4gdGVybl9jbG9zZV9udW1iZXJzKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBhLCBiLCBjIGluIHRlcm5faW5jcl9kaWdpdHMocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiLCBjCisgICAgZm9yIGEsIGIsIGMgaW4gdGVybl9yYW5kZmxvYXQoKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBhLCBiLCBjIGluIHRlcm5fcmFuZG9tX21peGVkX29wKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIGEgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICBiID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgYyA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIHlpZWxkIGEsIGIsIGMKKworZGVmIHRlcm5hcnlfb3B0YXJnKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICBhID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgYiA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIGMgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICB5aWVsZCBhLCBiLCBjLCBOb25lCisgICAgICAgIHlpZWxkIGEsIGIsIGMsIE5vbmUsIE5vbmUKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGZsb2F0LnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZmxvYXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4NzMwMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGZsb2F0LnB5CkBAIC0wLDAgKzEsMjUwIEBACisjIENvcHlyaWdodCAoYykgMjAxMCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgQWRhcHRlZCBmcm9tIFB5dGhvbidzIExpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5IChieSBNYXJrIERpY2tpbnNvbikKKworIyBNb3JlIHRlc3QgY2FzZXMgZm9yIGRlY2NoZWNrLnB5LgorCitpbXBvcnQgcmFuZG9tCisKK1RFU1RfU0laRSA9IDIKKworCitkZWYgdGVzdF9zaG9ydF9oYWxmd2F5X2Nhc2VzKCk6CisgICAgIyBleGFjdCBoYWxmd2F5IGNhc2VzIHdpdGggYSBzbWFsbCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgZm9yIGsgaW4gMCwgNSwgMTAsIDE1LCAyMDoKKyAgICAgICAgIyB1cHBlciA9IHNtYWxsZXN0IGludGVnZXIgPj0gMioqNTQvNSoqaworICAgICAgICB1cHBlciA9IC0oLTIqKjU0Ly81KiprKQorICAgICAgICAjIGxvd2VyID0gc21hbGxlc3Qgb2RkIG51bWJlciA+PSAyKio1My81KiprCisgICAgICAgIGxvd2VyID0gLSgtMioqNTMvLzUqKmspCisgICAgICAgIGlmIGxvd2VyICUgMiA9PSAwOgorICAgICAgICAgICAgbG93ZXIgKz0gMQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCAqIFRFU1RfU0laRSk6CisgICAgICAgICAgICAjIFNlbGVjdCBhIHJhbmRvbSBvZGQgbiBpbiBbMioqNTMvNSoqaywKKyAgICAgICAgICAgICMgMioqNTQvNSoqaykuIFRoZW4gbiAqIDEwKiprIGdpdmVzIGEgaGFsZndheSBjYXNlCisgICAgICAgICAgICAjIHdpdGggc21hbGwgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KKyAgICAgICAgICAgIG4sIGUgPSByYW5kb20ucmFuZHJhbmdlKGxvd2VyLCB1cHBlciwgMiksIGsKKworICAgICAgICAgICAgIyBSZW1vdmUgYW55IGFkZGl0aW9uYWwgcG93ZXJzIG9mIDUuCisgICAgICAgICAgICB3aGlsZSBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG4sIGUgPSBuIC8vIDUsIGUgKyAxCisgICAgICAgICAgICBhc3NlcnQgbiAlIDEwIGluICgxLCAzLCA3LCA5KQorCisgICAgICAgICAgICAjIFRyeSBudW1iZXJzIG9mIHRoZSBmb3JtIG4gKiAyKipwMiAqIDEwKiplLCBwMiA+PSAwLAorICAgICAgICAgICAgIyB1bnRpbCBuICogMioqcDIgaGFzIG1vcmUgdGhhbiAyMCBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgICAgICAgICBkaWdpdHMsIGV4cG9uZW50ID0gbiwgZQorICAgICAgICAgICAgd2hpbGUgZGlnaXRzIDwgMTAqKjIwOgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICAjIFNhbWUgYWdhaW4sIGJ1dCB3aXRoIGV4dHJhIHRyYWlsaW5nIHplcm9zLgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMgKiAxMCoqNDAsIGV4cG9uZW50IC0gNDApCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgIGRpZ2l0cyAqPSAyCisKKyAgICAgICAgICAgICMgVHJ5IG51bWJlcnMgb2YgdGhlIGZvcm0gbiAqIDUqKnAyICogMTAqKihlIC0gcDUpLCBwNQorICAgICAgICAgICAgIyA+PSAwLCB3aXRoIG4gKiA1KipwNSA8IDEwKioyMC4KKyAgICAgICAgICAgIGRpZ2l0cywgZXhwb25lbnQgPSBuLCBlCisgICAgICAgICAgICB3aGlsZSBkaWdpdHMgPCAxMCoqMjA6CisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgICMgU2FtZSBhZ2FpbiwgYnV0IHdpdGggZXh0cmEgdHJhaWxpbmcgemVyb3MuCisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cyAqIDEwKio0MCwgZXhwb25lbnQgLSA0MCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICAgICAgZGlnaXRzICo9IDUKKyAgICAgICAgICAgICAgICBleHBvbmVudCAtPSAxCisKK2RlZiB0ZXN0X2hhbGZ3YXlfY2FzZXMoKToKKyAgICAjIHRlc3QgaGFsZndheSBjYXNlcyBmb3IgdGhlIHJvdW5kLWhhbGYtdG8tZXZlbiBydWxlCisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGZvciBqIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICAjIGJpdCBwYXR0ZXJuIGZvciBhIHJhbmRvbSBmaW5pdGUgcG9zaXRpdmUgKG9yICswLjApIGZsb2F0CisgICAgICAgICAgICBiaXRzID0gcmFuZG9tLnJhbmRyYW5nZSgyMDQ3KjIqKjUyKQorCisgICAgICAgICAgICAjIGNvbnZlcnQgYml0IHBhdHRlcm4gdG8gYSBudW1iZXIgb2YgdGhlIGZvcm0gbSAqIDIqKmUKKyAgICAgICAgICAgIGUsIG0gPSBkaXZtb2QoYml0cywgMioqNTIpCisgICAgICAgICAgICBpZiBlOgorICAgICAgICAgICAgICAgIG0sIGUgPSBtICsgMioqNTIsIGUgLSAxCisgICAgICAgICAgICBlIC09IDEwNzQKKworICAgICAgICAgICAgIyBhZGQgMC41IHVscHMKKyAgICAgICAgICAgIG0sIGUgPSAyKm0gKyAxLCBlIC0gMQorCisgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYSBkZWNpbWFsIHN0cmluZworICAgICAgICAgICAgaWYgZSA+PSAwOgorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IG0gPDwgZQorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIG0gKiAyKiplID0gKG0gKiA1KiotZSkgKiAxMCoqZQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IG0gKiA1KiotZQorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gZQorICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICB5aWVsZCBzCisKK2RlZiB0ZXN0X2JvdW5kYXJpZXMoKToKKyAgICAjIGJvdW5kYXJpZXMgZXhwcmVzc2VkIGFzIHRyaXBsZXMgKG4sIGUsIHUpLCB3aGVyZQorICAgICMgbioxMCoqZSBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIHRoZSBib3VuZGFyeSB2YWx1ZSBhbmQKKyAgICAjIHUqMTAqKmUgaXMgMXVscAorICAgIGJvdW5kYXJpZXMgPSBbCisgICAgICAgICgxMDAwMDAwMDAwMDAwMDAwMDAwMCwgLTE5LCAxMTEwKSwgICAjIGEgcG93ZXIgb2YgMiBib3VuZGFyeSAoMS4wKQorICAgICAgICAoMTc5NzY5MzEzNDg2MjMxNTkwNzcsIDI4OSwgMTk5NSksICAgIyBvdmVyZmxvdyBib3VuZGFyeSAoMi4qKjEwMjQpCisgICAgICAgICgyMjI1MDczODU4NTA3MjAxMzgzMSwgLTMyNywgNDk0MSksICAjIG5vcm1hbC9zdWJub3JtYWwgKDIuKiotMTAyMikKKyAgICAgICAgKDAsIC0zMjcsIDQ5NDEpLCAgICAgICAgICAgICAgICAgICAgICMgemVybworICAgICAgICBdCisgICAgZm9yIG4sIGUsIHUgaW4gYm91bmRhcmllczoKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IG4gKyByYW5kb20ucmFuZHJhbmdlKC0zKnUsIDMqdSkKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IGUKKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICBuICo9IDEwCisgICAgICAgICAgICB1ICo9IDEwCisgICAgICAgICAgICBlIC09IDEKKworZGVmIHRlc3RfdW5kZXJmbG93X2JvdW5kYXJ5KCk6CisgICAgIyB0ZXN0IHZhbHVlcyBjbG9zZSB0byAyKiotMTA3NSwgdGhlIHVuZGVyZmxvdyBib3VuZGFyeTsgc2ltaWxhcgorICAgICMgdG8gYm91bmRhcnlfdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZSByYW5kb20gZXJyb3IgZG9lc24ndCBzY2FsZQorICAgICMgd2l0aCBuCisgICAgZm9yIGV4cG9uZW50IGluIHJhbmdlKC00MDAsIC0zMjApOgorICAgICAgICBiYXNlID0gMTAqKi1leHBvbmVudCAvLyAyKioxMDc1CisgICAgICAgIGZvciBqIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICBkaWdpdHMgPSBiYXNlICsgcmFuZG9tLnJhbmRyYW5nZSgtMTAwMCwgMTAwMCkKKyAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgeWllbGQgcworCitkZWYgdGVzdF9iaWdjb21wKCk6CisgICAgZm9yIG5kaWdzIGluIDUsIDEwLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgNDAsIDQxLCA1MDoKKyAgICAgICAgZGlnMTAgPSAxMCoqbmRpZ3MKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwICogVEVTVF9TSVpFKToKKyAgICAgICAgICAgIGRpZ2l0cyA9IHJhbmRvbS5yYW5kcmFuZ2UoZGlnMTApCisgICAgICAgICAgICBleHBvbmVudCA9IHJhbmRvbS5yYW5kcmFuZ2UoLTQwMCwgNDAwKQorICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICB5aWVsZCBzCisKK2RlZiB0ZXN0X3BhcnNpbmcoKToKKyAgICAjIG1ha2UgJzAnIG1vcmUgbGlrZWx5IHRvIGJlIGNob3NlbiB0aGFuIG90aGVyIGRpZ2l0cworICAgIGRpZ2l0cyA9ICcwMDAwMDAxMjM0NTY3ODknCisgICAgc2lnbnMgPSAoJysnLCAnLScsICcnKQorCisgICAgIyBwdXQgdG9nZXRoZXIgcmFuZG9tIHNob3J0IHZhbGlkIHN0cmluZ3MKKyAgICAjIFxkKlsuXGQqXT9lCisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGZvciBqIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICBzID0gcmFuZG9tLmNob2ljZShzaWducykKKyAgICAgICAgICAgIGludHBhcnRfbGVuID0gcmFuZG9tLnJhbmRyYW5nZSg1KQorICAgICAgICAgICAgcyArPSAnJy5qb2luKHJhbmRvbS5jaG9pY2UoZGlnaXRzKSBmb3IgXyBpbiByYW5nZShpbnRwYXJ0X2xlbikpCisgICAgICAgICAgICBpZiByYW5kb20uY2hvaWNlKFtUcnVlLCBGYWxzZV0pOgorICAgICAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICAgICAgZnJhY3BhcnRfbGVuID0gcmFuZG9tLnJhbmRyYW5nZSg1KQorICAgICAgICAgICAgICAgIHMgKz0gJycuam9pbihyYW5kb20uY2hvaWNlKGRpZ2l0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoZnJhY3BhcnRfbGVuKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnJhY3BhcnRfbGVuID0gMAorICAgICAgICAgICAgaWYgcmFuZG9tLmNob2ljZShbVHJ1ZSwgRmFsc2VdKToKKyAgICAgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoWydlJywgJ0UnXSkKKyAgICAgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2Uoc2lnbnMpCisgICAgICAgICAgICAgICAgZXhwb25lbnRfbGVuID0gcmFuZG9tLnJhbmRyYW5nZSgxLCA0KQorICAgICAgICAgICAgICAgIHMgKz0gJycuam9pbihyYW5kb20uY2hvaWNlKGRpZ2l0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoZXhwb25lbnRfbGVuKSkKKworICAgICAgICAgICAgaWYgaW50cGFydF9sZW4gKyBmcmFjcGFydF9sZW46CisgICAgICAgICAgICAgICAgeWllbGQgcworCit0ZXN0X3BhcnRpY3VsYXIgPSBbCisgICAgICMgc3F1YXJlcworICAgICcxLjAwMDAwMDAwMTAwMDAwMDAwMDI1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDI1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjUnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAyNScsCisgICAgJzAuOTk5OTk5OTk5MDAwMDAwMDAwMjUnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAyNScsCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNScsCisKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICc1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAyNTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAxJywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAyNDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEnLAorCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjQ5OTk5OTk5OTk5OTk5OTk4MDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMScsCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjUwMDAwMDAxOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMScsCisKKyAgICAjIHRvdWdoIGNhc2VzIGZvciBsbiBldGMuCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDEnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTg5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5JworICAgIF0KKworCitURVNUQ0FTRVMgPSBbCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X3Nob3J0X2hhbGZ3YXlfY2FzZXMoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X2hhbGZ3YXlfY2FzZXMoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X2JvdW5kYXJpZXMoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X3VuZGVyZmxvd19ib3VuZGFyeSgpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfYmlnY29tcCgpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfcGFyc2luZygpXSwKKyAgICAgIHRlc3RfcGFydGljdWxhcgorXQorCitkZWYgdW5fcmFuZGZsb2F0KCk6CisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGwgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFU1s6Nl0pCisgICAgICAgIHlpZWxkIHJhbmRvbS5jaG9pY2UobCkKKyAgICBmb3IgdiBpbiB0ZXN0X3BhcnRpY3VsYXI6CisgICAgICAgIHlpZWxkIHYKKworZGVmIGJpbl9yYW5kZmxvYXQoKToKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgbDEgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgbDIgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgeWllbGQgcmFuZG9tLmNob2ljZShsMSksIHJhbmRvbS5jaG9pY2UobDIpCisKK2RlZiB0ZXJuX3JhbmRmbG9hdCgpOgorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBsMSA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICBsMiA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICBsMyA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICB5aWVsZCByYW5kb20uY2hvaWNlKGwxKSwgcmFuZG9tLmNob2ljZShsMiksIHJhbmRvbS5jaG9pY2UobDMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaCBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLW1lbW9yeWRlYnVnZ2VyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ0ZmYzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaApAQCAtMCwwICsxLDE3NSBAQAorIyEvYmluL3NoCisKKyMKKyMgUHVycG9zZTogdGVzdCB3aXRoIGFuZCB3aXRob3V0IHRocmVhZHMsIGFsbCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLCBweWRlYnVnLAorIyAgICAgICAgICByZWZsZWFrcywgcmVsZWFzZSBidWlsZCBhbmQgcmVsZWFzZSBidWlsZCB3aXRoIHZhbGdyaW5kLgorIworIyBTeW5vcHNpczogLi9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2ggWy0tYWxsLWNvbmZpZ3M2NCB8IC0tYWxsLWNvbmZpZ3MzMl0KKyMKKyMgUmVxdWlyZW1lbnRzOiB2YWxncmluZAorIworCisjIFNldCBhZGRpdGlvbmFsIENGTEFHUyBmb3IgLi9jb25maWd1cmUKK0FERF9DRkxBR1M9CisKKworQ09ORklHU182ND0ieDY0IHVpbnQxMjggYW5zaTY0IHVuaXZlcnNhbCIKK0NPTkZJR1NfMzI9InBwcm8gYW5zaTMyIGFuc2ktbGVnYWN5IHVuaXZlcnNhbCIKKworVkFMR1JJTkQ9InZhbGdyaW5kIC0tdG9vbD1tZW1jaGVjayAtLWxlYWstcmVzb2x1dGlvbj1oaWdoIFwKKyAgICAgICAgICAtLWRiLWF0dGFjaD15ZXMgLS1zdXBwcmVzc2lvbnM9TWlzYy92YWxncmluZC1weXRob24uc3VwcCIKKworIyBHZXQgYXJncworY2FzZSAkQCBpbgorICAgICAqLS1hbGwtY29uZmlnczY0KikKKyAgICAgICAgIENPTkZJR1M9JENPTkZJR1NfNjQKKyAgICAgICAgIDs7CisgICAgICotLWFsbC1jb25maWdzMzIqKQorICAgICAgICAgQ09ORklHUz0kQ09ORklHU18zMgorICAgICAgICAgOzsKKyAgICAgKikKKyAgICAgICAgIENPTkZJR1M9ImF1dG8iCisgICAgICAgICA7OworZXNhYworCisjIGdtYWtlIHJlcXVpcmVkCitHTUFLRT1gd2hpY2ggZ21ha2VgCitpZiBbIFgiJEdNQUtFIiA9IFgiIiBdOyB0aGVuCisgICAgR01BS0U9bWFrZQorZmkKKworIyBQcmV0dHkgcHJpbnQgY29uZmlndXJhdGlvbnMKK3ByaW50X2NvbmZpZyAoKQoreworICAgIGxlbj1gZWNobyAkQCB8IHdjIC1jYAorICAgIG1hcmdpbj0iIyUiYGV4cHIgXCggNzQgLSAkbGVuIFwpIC8gMmAicyIKKworICAgIGVjaG8gIiIKKyAgICBlY2hvICIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKyAgICBwcmludGYgJG1hcmdpbiAiIgorICAgIGVjaG8gJEAKKyAgICBlY2hvICIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKyAgICBlY2hvICIiCit9CisKKworY2QgLi4KKworIyB0ZXN0X2RlY2ltYWw6IHJlZmxlYWssIHJlZ3VsYXIgYW5kIFZhbGdyaW5kIHRlc3RzCitmb3IgYXJncyBpbiAiLS13aXRob3V0LXRocmVhZHMiICIiOyBkbworICAgIGZvciBjb25maWcgaW4gJENPTkZJR1M7IGRvCisKKyAgICAgICAgdW5zZXQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGxpYm1wZGVjX2NvbmZpZz0kY29uZmlnCisgICAgICAgIGlmIFsgWCIkY29uZmlnIiAhPSBYImF1dG8iIF07IHRoZW4KKyAgICAgICAgICAgIFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORT0kY29uZmlnCisgICAgICAgICAgICBleHBvcnQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpYm1wZGVjX2NvbmZpZz0iIgorICAgICAgICBmaQorCisgICAgICAgICMjIyMjIyMjIyMjIyByZWZsZWFrIHRlc3RzICMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAicmVmbGVhayB0ZXN0czogY29uZmlnPSRjb25maWciICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKworICAgICAgICBjZCAuLi8uLi8KKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aC1weWRlYnVnICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHJlZmxlYWsgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gLW0gdGVzdCAtdWFsbCAtUiAyOjIgdGVzdF9kZWNpbWFsCisKKworICAgICAgICAjIyMjIyMjIyMjIyMgcmVndWxhciB0ZXN0cyAjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgInJlZ3VsYXIgdGVzdHM6IGNvbmZpZz0kY29uZmlnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKKworCisgICAgICAgICMjIyMjIyMjIyMjIHZhbGdyaW5kIHRlc3RzICMjIyMjIyMjIyMjCisgICAgICAgIHZhbGdyaW5kPSRWQUxHUklORAorICAgICAgICBjYXNlICIkY29uZmlnIiBpbgorICAgICAgICAgICAgIyBWYWxncmluZCBoYXMgbm8gc3VwcG9ydCBmb3IgODAgYml0IGxvbmcgZG91YmxlIGFyaXRobWV0aWMuCisgICAgICAgICAgICBwcHJvKSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgIGF1dG8pIGNhc2UgYHVuYW1lIC1tYCBpbgorICAgICAgICAgICAgICAgICAgICAgIGkzODZ8aTQ4NnxpNTg2fGk2ODYpIHZhbGdyaW5kPSA7OworICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICBlc2FjCisKKyAgICAgICAgcHJpbnRfY29uZmlnICJ2YWxncmluZCB0ZXN0czogY29uZmlnPSRjb25maWciICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aG91dC1weW1hbGxvYyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSB2YWxncmluZCB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAkdmFsZ3JpbmQgLi9weXRob24gLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKKworICAgICAgICBjZCBNb2R1bGVzL19kZWNpbWFsCisgICAgZG9uZQorZG9uZQorCisjIGRlY2NoZWNrCitjZCAuLi8uLi8KK2ZvciBjb25maWcgaW4gJENPTkZJR1M7IGRvCisgICAgZm9yIGFyZ3MgaW4gIi0td2l0aG91dC10aHJlYWRzIiAiIjsgZG8KKworICAgICAgICB1bnNldCBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkUKKyAgICAgICAgaWYgWyBYIiRjb25maWciICE9IFgiYXV0byIgXTsgdGhlbgorICAgICAgICAgICAgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FPSRjb25maWcKKyAgICAgICAgICAgIGV4cG9ydCBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkUKKyAgICAgICAgZmkKKworICAgICAgICAjIyMjIyMjIyMjIyMgZGVidWcgIyMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAiZGVjY2hlY2s6IGNvbmZpZz0kY29uZmlnIC0td2l0aC1weWRlYnVnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aC1weWRlYnVnICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT0gZGVidWcgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorCisgICAgICAgICMjIyMjIyMjIyMjIHJlZ3VsYXIgIyMjIyMjIyMjIyMKKyAgICAgICAgcHJpbnRfY29uZmlnICJkZWNjaGVjazogY29uZmlnPSRjb25maWcgIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgLi9weXRob24gTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorCisgICAgICAgICMjIyMjIyMjIyMjIHZhbGdyaW5kICMjIyMjIyMjIyMjCisgICAgICAgIHZhbGdyaW5kPSRWQUxHUklORAorICAgICAgICBjYXNlICIkY29uZmlnIiBpbgorICAgICAgICAgICAgIyBWYWxncmluZCBoYXMgbm8gc3VwcG9ydCBmb3IgODAgYml0IGxvbmcgZG91YmxlIGFyaXRobWV0aWMuCisgICAgICAgICAgICBwcHJvKSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgIGF1dG8pIGNhc2UgYHVuYW1lIC1tYCBpbgorICAgICAgICAgICAgICAgICAgICAgIGkzODZ8aTQ4NnxpNTg2fGk2ODYpIHZhbGdyaW5kPSA7OworICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICBlc2FjCisKKyAgICAgICAgcHJpbnRfY29uZmlnICJ2YWxncmluZCBkZWNjaGVjazogY29uZmlnPSRjb25maWcgIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgJEdNQUtFIGRpc3RjbGVhbiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIC4vY29uZmlndXJlIENGTEFHUz0iJEFERF9DRkxBR1MiIC0td2l0aG91dC1weW1hbGxvYyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSB2YWxncmluZCA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgICR2YWxncmluZCAuL3B5dGhvbiBNb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CisgICAgZG9uZQorZG9uZQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwuYmF0IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjViYzg3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC5iYXQKQEAgLTAsMCArMSwxMTEgQEAKK0BFQ0hPIE9GRgorCityZW0gVGVzdCBhbGwgbWFjaGluZSBjb25maWd1cmF0aW9ucywgcHlkZWJ1ZywgcmVmbGVha3MsIHJlbGVhc2UgYnVpbGQuCisKK2NkIC4uXC4uXC4uXAorCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIFB5dGhvbgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgL3RhcmdldDpjbGVhbiBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybVRhcmdldD14NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciAvdGFyZ2V0OmNsZWFuIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT14NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09eDY0CisKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09V2luMzIKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09V2luMzIKK2VjaG8uCitlY2hvLgorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9kZWNpbWFsOiBwbGF0Zm9ybT14NjQKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitjZCBQQ2J1aWxkXGFtZDY0CisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWZsZWFrIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC1tIHRlc3QgLXVhbGwgLVIgMjoyIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWd1bGFyIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAtbSB0ZXN0IC11YWxsIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2NkIC4uCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2RlY2ltYWw6IHBsYXRmb3JtPXg4NgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWZsZWFrIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC1tIHRlc3QgLXVhbGwgLVIgMjoyIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSByZWd1bGFyIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAtbSB0ZXN0IC11YWxsIHRlc3RfZGVjaW1hbAorZWNoby4KK2VjaG8uCisKK2NkIGFtZDY0CisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2NoZWNrOiBwbGF0Zm9ybT14NjQKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gZGVidWcgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09IHJlbGVhc2UgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKK2NkIC4uCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2NoZWNrOiBwbGF0Zm9ybT14ODYKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IGRlYnVnIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PSByZWxlYXNlIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCisKK2NkIC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHMKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCmluZGV4IDE3ZDVkMDkuLjQ5NDQxY2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKKysrIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwpAQCAtNDgsNiArNDgsNyBAQAogLyogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2RlZmluZSBWRVJTSU9OICIxLjAuNiIKIApAQCAtNTcsOSArNTgsNiBAQAogLyogTGVhdmUgZGVmaW5lZCB0byBpbmNsdWRlIHRoZSBleHBhdC1iYXNlZCBYTUxQYXJzZXIgdHlwZSAqLwogI2RlZmluZSBVU0VfRVhQQVQKIAotLyogRGVmaW5lIHRvIGRvIGFsbCBleHBhdCBjYWxscyB2aWEgcHlleHBhdCdzIGVtYmVkZGVkIGV4cGF0IGxpYnJhcnkgKi8KLS8qICNkZWZpbmUgVVNFX1BZRVhQQVRfQ0FQSSAqLwotCiAvKiBBbiBlbGVtZW50IGNhbiBob2xkIHRoaXMgbWFueSBjaGlsZHJlbiB3aXRob3V0IGV4dHJhIG1lbW9yeQogICAgYWxsb2NhdGlvbnMuICovCiAjZGVmaW5lIFNUQVRJQ19DSElMRFJFTiA0CkBAIC03MCw3ICs2OCw3IEBACiAgICBoZWxwcyBpZiB5b3UgaGF2ZSBsb3RzIG9mIGxlYWYgbm9kZXMgd2l0aCBhdHRyaWJ1dGVzKS4gKi8KIAogLyogQWxzbyBub3RlIHRoYXQgcHltYWxsb2MgYWx3YXlzIGFsbG9jYXRlcyBibG9ja3MgaW4gbXVsdGlwbGVzIG9mCi0gICBlaWdodCBieXRlcy4gIEZvciB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGNFbGVtZW50VHJlZSwgdGhpcyBtZWFucworICAgZWlnaHQgYnl0ZXMuICBGb3IgdGhlIGN1cnJlbnQgQyB2ZXJzaW9uIG9mIEVsZW1lbnRUcmVlLCB0aGlzIG1lYW5zCiAgICB0aGF0IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gc2hvdWxkIGJlIGFuIGV2ZW4gbnVtYmVyLCBhdCBsZWFzdCBvbgogICAgMzItYml0IHBsYXRmb3Jtcy4gKi8KIApAQCAtOTQsMzkgKzkyLDE3IEBACiAjZGVmaW5lIExPQ0FMKHR5cGUpIHN0YXRpYyB0eXBlCiAjZW5kaWYKIAotLyogY29tcGF0aWJpbGl0eSBtYWNyb3MgKi8KLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDYwMDAwKQotI2RlZmluZSBQeV9SRUZDTlQob2IpICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfcmVmY250KQotI2RlZmluZSBQeV9UWVBFKG9iKSAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCi0jZW5kaWYKLQotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi10eXBlZGVmIGludCBQeV9zc2l6ZV90OwotI2RlZmluZSBsZW5mdW5jIGlucXVpcnkKLSNlbmRpZgotCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA0MDAwMCkKLSNkZWZpbmUgUHlEaWN0X0NoZWNrRXhhY3QgUHlEaWN0X0NoZWNrCi0KLSNpZiAhZGVmaW5lZChQeV9SRVRVUk5fTk9ORSkKLSNkZWZpbmUgUHlfUkVUVVJOX05PTkUgcmV0dXJuIFB5X0lOQ1JFRihQeV9Ob25lKSwgUHlfTm9uZQotI2VuZGlmCi0jZW5kaWYKLQogLyogbWFjcm9zIHVzZWQgdG8gc3RvcmUgJ2pvaW4nIGZsYWdzIGluIHN0cmluZyBvYmplY3QgcG9pbnRlcnMuICBub3RlCiAgICB0aGF0IGFsbCB1c2Ugb2YgdGV4dCBhbmQgdGFpbCBhcyBvYmplY3QgcG9pbnRlcnMgbXVzdCBiZSB3cmFwcGVkIGluCiAgICBKT0lOX09CSi4gIHNlZSBjb21tZW50cyBpbiB0aGUgRWxlbWVudE9iamVjdCBkZWZpbml0aW9uIGZvciBtb3JlCiAgICBpbmZvLiAqLwogI2RlZmluZSBKT0lOX0dFVChwKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgMSkKICNkZWZpbmUgSk9JTl9TRVQocCwgZmxhZykgKCh2b2lkKikgKChQeV91aW50cHRyX3QpIChKT0lOX09CSihwKSkgfCAoZmxhZykpKQotI2RlZmluZSBKT0lOX09CSihwKSAoKFB5T2JqZWN0KikgKChQeV91aW50cHRyX3QpIChwKSAmIH4xKSkKKyNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgoUHlfdWludHB0cl90KSAocCkgJiB+KFB5X3VpbnRwdHJfdCkxKSkKIAogLyogZ2x1ZSBmdW5jdGlvbnMgKHNlZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IgZGV0YWlscykgKi8KIHN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmo7Ci1zdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iajsKIHN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9pdGVyX29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqOwogc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50cGF0aF9vYmo7CiAKIC8qIGhlbHBlcnMgKi8KQEAgLTE0NywxNyArMTIzLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKKyAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG9iamVjdCwgbWVtbyk7CiAgICAgaWYgKCFhcmdzKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRihvYmplY3QpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIG9iamVjdCk7Ci0gICAgUHlfSU5DUkVGKG1lbW8pOyAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgKFB5T2JqZWN0KikgbWVtbyk7Ci0KICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiwgYXJncyk7Ci0KICAgICBQeV9ERUNSRUYoYXJncyk7Ci0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNjUsNTMgKzEzNSwzMCBAQAogbGlzdF9qb2luKFB5T2JqZWN0KiBsaXN0KQogewogICAgIC8qIGpvaW4gbGlzdCBlbGVtZW50cyAoZGVzdHJveWluZyB0aGUgbGlzdCBpbiB0aGUgcHJvY2VzcykgKi8KLQogICAgIFB5T2JqZWN0KiBqb2luZXI7Ci0gICAgUHlPYmplY3QqIGZ1bmN0aW9uOwotICAgIFB5T2JqZWN0KiBhcmdzOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAKLSAgICBzd2l0Y2ggKFB5TGlzdF9HRVRfU0laRShsaXN0KSkgewotICAgIGNhc2UgMDoKLSAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCIiKTsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJlc3VsdCA9IFB5TGlzdF9HRVRfSVRFTShsaXN0LCAwKTsKLSAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvKiB0d28gb3IgbW9yZSBlbGVtZW50czogc2xpY2Ugb3V0IGEgc3VpdGFibGUgc2VwYXJhdG9yIGZyb20gdGhlCi0gICAgICAgZmlyc3QgbWVtYmVyLCBhbmQgdXNlIHRoYXQgdG8gam9pbiB0aGUgZW50aXJlIGxpc3QgKi8KLQotICAgIGpvaW5lciA9IFB5U2VxdWVuY2VfR2V0U2xpY2UoUHlMaXN0X0dFVF9JVEVNKGxpc3QsIDApLCAwLCAwKTsKKyAgICBqb2luZXIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwogICAgIGlmICgham9pbmVyKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZ1bmN0aW9uID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhqb2luZXIsICJqb2luIik7Ci0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICBQeV9ERUNSRUYoam9pbmVyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgIGlmICghYXJncykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGxpc3QpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChmdW5jdGlvbiwgYXJncyk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7IC8qIGFsc28gcmVtb3ZlcyBsaXN0ICovCi0gICAgUHlfREVDUkVGKGZ1bmN0aW9uKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfSm9pbihqb2luZXIsIGxpc3QpOwogICAgIFB5X0RFQ1JFRihqb2luZXIpOwotCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIElzIHRoZSBnaXZlbiBvYmplY3QgYW4gZW1wdHkgZGljdGlvbmFyeT8KKyovCitzdGF0aWMgaW50Citpc19lbXB0eV9kaWN0KFB5T2JqZWN0ICpvYmopCit7CisgICAgcmV0dXJuIFB5RGljdF9DaGVja0V4YWN0KG9iaikgJiYgUHlEaWN0X1NpemUob2JqKSA9PSAwOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiB0aGUgZWxlbWVudCB0eXBlICovCisvKiB0aGUgRWxlbWVudCB0eXBlICovCiAKIHR5cGVkZWYgc3RydWN0IHsKIApAQCAtMjI2LDcgKzE3Myw3IEBACiAgICAgUHlPYmplY3QqICpjaGlsZHJlbjsKIAogICAgIFB5T2JqZWN0KiBfY2hpbGRyZW5bU1RBVElDX0NISUxEUkVOXTsKLSAgICAKKwogfSBFbGVtZW50T2JqZWN0RXh0cmE7CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTI0OSw2ICsxOTYsOCBAQAogCiAgICAgRWxlbWVudE9iamVjdEV4dHJhKiBleHRyYTsKIAorICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogRm9yIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisKIH0gRWxlbWVudE9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGU7CkBAIC0yNTYsMTAgKzIwNSwxMCBAQAogI2RlZmluZSBFbGVtZW50X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmRWxlbWVudF9UeXBlKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogZWxlbWVudCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciAqLworLyogRWxlbWVudCBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3IgKi8KIAogTE9DQUwoaW50KQotZWxlbWVudF9uZXdfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGF0dHJpYikKK2NyZWF0ZV9leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXR0cmliKQogewogICAgIHNlbGYtPmV4dHJhID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihFbGVtZW50T2JqZWN0RXh0cmEpKTsKICAgICBpZiAoIXNlbGYtPmV4dHJhKQpAQCAtMjc5LDQ3ICsyMjgsNDggQEAKIH0KIAogTE9DQUwodm9pZCkKLWVsZW1lbnRfZGVhbGxvY19leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmKQorZGVhbGxvY19leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmKQogeworICAgIEVsZW1lbnRPYmplY3RFeHRyYSAqbXlleHRyYTsKICAgICBpbnQgaTsKIAotICAgIFB5X0RFQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKKyAgICBpZiAoIXNlbGYtPmV4dHJhKQorICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgaSsrKQotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKyAgICAvKiBBdm9pZCBERUNSRUZzIGNhbGxpbmcgaW50byB0aGlzIGNvZGUgYWdhaW4gKGN5Y2xlcywgZXRjLikKKyAgICAqLworICAgIG15ZXh0cmEgPSBzZWxmLT5leHRyYTsKKyAgICBzZWxmLT5leHRyYSA9IE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuKTsKKyAgICBQeV9ERUNSRUYobXlleHRyYS0+YXR0cmliKTsKIAotICAgIFB5T2JqZWN0X0ZyZWUoc2VsZi0+ZXh0cmEpOworICAgIGZvciAoaSA9IDA7IGkgPCBteWV4dHJhLT5sZW5ndGg7IGkrKykKKyAgICAgICAgUHlfREVDUkVGKG15ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKworICAgIGlmIChteWV4dHJhLT5jaGlsZHJlbiAhPSBteWV4dHJhLT5fY2hpbGRyZW4pCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobXlleHRyYS0+Y2hpbGRyZW4pOworCisgICAgUHlPYmplY3RfRnJlZShteWV4dHJhKTsKIH0KIAorLyogQ29udmVuaWVuY2UgaW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIG5ldyBFbGVtZW50IG9iamVjdHMgd2l0aCB0aGUgZ2l2ZW4KKyAqIHRhZyBhbmQgYXR0cmlidXRlcy4KKyovCiBMT0NBTChQeU9iamVjdCopCi1lbGVtZW50X25ldyhQeU9iamVjdCogdGFnLCBQeU9iamVjdCogYXR0cmliKQorY3JlYXRlX25ld19lbGVtZW50KFB5T2JqZWN0KiB0YWcsIFB5T2JqZWN0KiBhdHRyaWIpCiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZjsKIAotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoRWxlbWVudE9iamVjdCwgJkVsZW1lbnRfVHlwZSk7CisgICAgc2VsZiA9IFB5T2JqZWN0X0dDX05ldyhFbGVtZW50T2JqZWN0LCAmRWxlbWVudF9UeXBlKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIHVzZSBOb25lIGZvciBlbXB0eSBkaWN0aW9uYXJpZXMgKi8KLSAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoYXR0cmliKSAmJiAhUHlEaWN0X1NpemUoYXR0cmliKSkKLSAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKLQogICAgIHNlbGYtPmV4dHJhID0gTlVMTDsKIAotICAgIGlmIChhdHRyaWIgIT0gUHlfTm9uZSkgewotCi0gICAgICAgIGlmIChlbGVtZW50X25ld19leHRyYShzZWxmLCBhdHRyaWIpIDwgMCkgeworICAgIGlmIChhdHRyaWIgIT0gUHlfTm9uZSAmJiAhaXNfZW1wdHlfZGljdChhdHRyaWIpKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgYXR0cmliKSA8IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KLSAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCA9IDA7Ci0gICAgICAgIHNlbGYtPmV4dHJhLT5hbGxvY2F0ZWQgPSBTVEFUSUNfQ0hJTERSRU47Ci0gICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiA9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW47Ci0KICAgICB9CiAKICAgICBQeV9JTkNSRUYodGFnKTsKQEAgLTMzMSwxMSArMjgxLDEyOCBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBzZWxmLT50YWlsID0gUHlfTm9uZTsKIAotICAgIEFMTE9DKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImNyZWF0ZSBlbGVtZW50Iik7CisgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOwogCisgICAgQUxMT0Moc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAiY3JlYXRlIGVsZW1lbnQiKTsKKyAgICBQeU9iamVjdF9HQ19UcmFjayhzZWxmKTsKICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEVsZW1lbnRPYmplY3QgKmUgPSAoRWxlbWVudE9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChlICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBlLT50YWcgPSBQeV9Ob25lOworCisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGV4dCA9IFB5X05vbmU7CisKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBlLT50YWlsID0gUHlfTm9uZTsKKworICAgICAgICBlLT5leHRyYSA9IE5VTEw7CisgICAgICAgIGUtPndlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWU7Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyB0aGUgYXR0cmliIGRpY3Rpb25hcnkgZnJvbSBhIGtleXdvcmRzIGRpY3QuCisgKiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHNvbWUgY29uc3RydWN0b3JzL2Z1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB0aGF0IGNhbgorICogZWl0aGVyIGFjY2VwdCBhdHRyaWIgYXMgYSBrZXl3b3JkIGFyZ3VtZW50IG9yIGFsbCBhdHRyaWJ1dGVzIHNwbGFzaGVkCisgKiBkaXJlY3RseSBpbnRvICprd2RzLgorICogSWYgdGhlcmUgaXMgbm8gJ2F0dHJpYicga2V5d29yZCwgcmV0dXJuIGFuIGVtcHR5IGRpY3QuCisgKi8KK3N0YXRpYyBQeU9iamVjdCoKK2dldF9hdHRyaWJfZnJvbV9rZXl3b3JkcyhQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqYXR0cmliX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJhdHRyaWIiKTsKKyAgICBQeU9iamVjdCAqYXR0cmliID0gUHlEaWN0X0dldEl0ZW0oa3dkcywgYXR0cmliX3N0cik7CisKKyAgICBpZiAoYXR0cmliKSB7CisgICAgICAgIC8qIElmIGF0dHJpYiB3YXMgZm91bmQgaW4ga3dkcywgY29weSBpdHMgdmFsdWUgYW5kIHJlbW92ZSBpdCBmcm9tCisgICAgICAgICAqIGt3ZHMKKyAgICAgICAgICovCisgICAgICAgIGlmICghUHlEaWN0X0NoZWNrKGF0dHJpYikpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWJfc3RyKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhdHRyaWIgbXVzdCBiZSBkaWN0LCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGF0dHJpYiktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKKyAgICAgICAgUHlEaWN0X0RlbEl0ZW0oa3dkcywgYXR0cmliX3N0cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgIH0KKworICAgIFB5X0RFQ1JFRihhdHRyaWJfc3RyKTsKKworICAgIGlmIChhdHRyaWIpCisgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKTsKKyAgICByZXR1cm4gYXR0cmliOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqdGFnOworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUHlPYmplY3QgKmF0dHJpYiA9IE5VTEw7CisgICAgRWxlbWVudE9iamVjdCAqc2VsZl9lbGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8hOkVsZW1lbnQiLCAmdGFnLCAmUHlEaWN0X1R5cGUsICZhdHRyaWIpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoYXR0cmliKSB7CisgICAgICAgIC8qIGF0dHJpYiBwYXNzZWQgYXMgcG9zaXRpb25hbCBhcmcgKi8KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChrd2RzKSB7CisgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3ZHMpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa3dkcykgeworICAgICAgICAvKiBoYXZlIGtleXdvcmRzIGFyZ3MgKi8KKyAgICAgICAgYXR0cmliID0gZ2V0X2F0dHJpYl9mcm9tX2tleXdvcmRzKGt3ZHMpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmX2VsZW0gPSAoRWxlbWVudE9iamVjdCAqKXNlbGY7CisKKyAgICBpZiAoYXR0cmliICE9IE5VTEwgJiYgIWlzX2VtcHR5X2RpY3QoYXR0cmliKSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGZfZWxlbSwgYXR0cmliKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgLyogV2Ugb3duIGEgcmVmZXJlbmNlIHRvIGF0dHJpYiBoZXJlIGFuZCBpdCdzIG5vIGxvbmdlciBuZWVkZWQuICovCisgICAgUHlfWERFQ1JFRihhdHRyaWIpOworCisgICAgLyogUmVwbGFjZSB0aGUgb2JqZWN0cyBhbHJlYWR5IHBvaW50ZWQgdG8gYnkgdGFnLCB0ZXh0IGFuZCB0YWlsLiAqLworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFnOworICAgIFB5X0lOQ1JFRih0YWcpOworICAgIHNlbGZfZWxlbS0+dGFnID0gdGFnOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgdG1wID0gc2VsZl9lbGVtLT50ZXh0OworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBzZWxmX2VsZW0tPnRleHQgPSBQeV9Ob25lOworICAgIFB5X0RFQ1JFRihKT0lOX09CSih0bXApKTsKKworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFpbDsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgc2VsZl9lbGVtLT50YWlsID0gUHlfTm9uZTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkoodG1wKSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogTE9DQUwoaW50KQogZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgaW50IGV4dHJhKQogewpAQCAtMzQ2LDcgKzQxMyw3IEBACiAgICAgICAgZWxlbWVudHMuICBzZXQgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgaWYgYWxsb2NhdGlvbiBmYWlsZWQgKi8KIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOwogCkBAIC0zNTQsMTQgKzQyMSwxNCBAQAogICAgICAgICAvKiB1c2UgUHl0aG9uIDIuNCdzIGxpc3QgZ3Jvd3RoIHN0cmF0ZWd5ICovCiAgICAgICAgIHNpemUgPSAoc2l6ZSA+PiAzKSArIChzaXplIDwgOSA/IDMgOiA2KSArIHNpemU7CiAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyICJjaGlsZHJlbiIKLSAgICAgICAgICogd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gCi0gICAgICAgICAqIEFsdGhvdWdoIGl0J3MgYSBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0byAKKyAgICAgICAgICogd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4KKyAgICAgICAgICogQWx0aG91Z2ggaXQncyBhIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvCiAgICAgICAgICAqIGJlIHNhZmUuCiAgICAgICAgICAqLwogICAgICAgICBzaXplID0gc2l6ZSA/IHNpemUgOiAxOwogICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pIHsKICAgICAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyCi0gICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEgCisgICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEKICAgICAgICAgICAgICAqIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvIGJlIHNhZmUuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNoaWxkcmVuID0gUHlPYmplY3RfUmVhbGxvYyhzZWxmLT5leHRyYS0+Y2hpbGRyZW4sCkBAIC00MTIsMTEgKzQ3OSwxMSBAQAogICAgIFB5T2JqZWN0KiByZXMgPSBzZWxmLT5leHRyYS0+YXR0cmliOwogCiAgICAgaWYgKHJlcyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAvKiBjcmVhdGUgbWlzc2luZyBkaWN0aW9uYXJ5ICovCiAgICAgICAgIHJlcyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKCFyZXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKFB5X05vbmUpOwogICAgICAgICBzZWxmLT5leHRyYS0+YXR0cmliID0gcmVzOwogICAgIH0KIApAQCAtNDY0LDM2ICs1MzEsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIFB5T2JqZWN0KiBlbGVtOwotCi0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogYXR0cmliID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyE6RWxlbWVudCIsICZ0YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGF0dHJpYiB8fCBrdykgewotICAgICAgICBhdHRyaWIgPSAoYXR0cmliKSA/IFB5RGljdF9Db3B5KGF0dHJpYikgOiBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmICghYXR0cmliKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChrdykKLSAgICAgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrdyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwotICAgIH0KLQotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7Ci0KLSAgICBQeV9ERUNSRUYoYXR0cmliKTsKLQotICAgIHJldHVybiBlbGVtOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1zdWJlbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorc3ViZWxlbWVudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0KiBlbGVtOwogCkBAIC01MDUsMTggKzU0MywyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZhdHRyaWIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChhdHRyaWIgfHwga3cpIHsKLSAgICAgICAgYXR0cmliID0gKGF0dHJpYikgPyBQeURpY3RfQ29weShhdHRyaWIpIDogUHlEaWN0X05ldygpOworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogYXR0cmliIHBhc3NlZCBhcyBwb3NpdGlvbmFsIGFyZyAqLworICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOwogICAgICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoa3cpCi0gICAgICAgICAgICBQeURpY3RfVXBkYXRlKGF0dHJpYiwga3cpOworICAgICAgICBpZiAoa3dkcykgeworICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa3dkcykgeworICAgICAgICAvKiBoYXZlIGtleXdvcmQgYXJncyAqLworICAgICAgICBhdHRyaWIgPSBnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoa3dkcyk7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbm8gYXR0cmliIGFyZywgbm8ga3dkcywgc28gbm8gYXR0cmlidXRlICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBlbGVtID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW0gPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKQEAgLTUyOCwyMCArNTc2LDY1IEBACiAgICAgcmV0dXJuIGVsZW07CiB9CiAKK3N0YXRpYyBpbnQKK2VsZW1lbnRfZ2NfdHJhdmVyc2UoRWxlbWVudE9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+dGFnKTsKKyAgICBQeV9WSVNJVChKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgUHlfVklTSVQoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworCisgICAgaWYgKHNlbGYtPmV4dHJhKSB7CisgICAgICAgIGludCBpOworICAgICAgICBQeV9WSVNJVChzZWxmLT5leHRyYS0+YXR0cmliKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgKytpKQorICAgICAgICAgICAgUHlfVklTSVQoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfZ2NfY2xlYXIoRWxlbWVudE9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT50YWcpOworCisgICAgLyogVGhlIGZvbGxvd2luZyBpcyBsaWtlIFB5X0NMRUFSIGZvciBzZWxmLT50ZXh0IGFuZCBzZWxmLT50YWlsLCBidXQKKyAgICAgKiB3cml0dGVuIGV4cGxpY2l0aWx5IGJlY2F1c2UgdGhlIHJlYWwgcG9pbnRlcnMgaGlkZSBiZWhpbmQgYWNjZXNzCisgICAgICogbWFjcm9zLgorICAgICovCisgICAgaWYgKHNlbGYtPnRleHQpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IEpPSU5fT0JKKHNlbGYtPnRleHQpOworICAgICAgICBzZWxmLT50ZXh0ID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgaWYgKHNlbGYtPnRhaWwpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IEpPSU5fT0JKKHNlbGYtPnRhaWwpOworICAgICAgICBzZWxmLT50YWlsID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgLyogQWZ0ZXIgZHJvcHBpbmcgYWxsIHJlZmVyZW5jZXMgZnJvbSBleHRyYSwgaXQncyBubyBsb25nZXIgdmFsaWQgYW55d2F5LAorICAgICAqIHNvIGZ1bGx5IGRlYWxsb2NhdGUgaXQuCisgICAgKi8KKyAgICBkZWFsbG9jX2V4dHJhKHNlbGYpOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZAogZWxlbWVudF9kZWFsbG9jKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X2RlYWxsb2NfZXh0cmEoc2VsZik7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKIAotICAgIC8qIGRpc2NhcmQgYXR0cmlidXRlcyAqLwotICAgIFB5X0RFQ1JFRihzZWxmLT50YWcpOwotICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisKKyAgICAvKiBlbGVtZW50X2djX2NsZWFyIGNsZWFycyBhbGwgcmVmZXJlbmNlcyBhbmQgZGVhbGxvY2F0ZXMgZXh0cmEKKyAgICAqLworICAgIGVsZW1lbnRfZ2NfY2xlYXIoc2VsZik7CiAKICAgICBSRUxFQVNFKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImRlc3Ryb3kgZWxlbWVudCIpOwotCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC01NjEsMTUgKzY1NCwxMiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NsZWFyKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9jbGVhcm1ldGhvZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbGVhciIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICBlbGVtZW50X2RlYWxsb2NfZXh0cmEoc2VsZik7Ci0gICAgICAgIHNlbGYtPmV4dHJhID0gTlVMTDsKLSAgICB9CisgICAgZGVhbGxvY19leHRyYShzZWxmKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwpAQCAtNTkxLDcgKzY4MSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6X19jb3B5X18iKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBlbGVtZW50X25ldygKKyAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQoCiAgICAgICAgIHNlbGYtPnRhZywgKHNlbGYtPmV4dHJhKSA/IHNlbGYtPmV4dHJhLT5hdHRyaWIgOiBQeV9Ob25lCiAgICAgICAgICk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjA2LDcgKzY5Niw3IEBACiAgICAgUHlfSU5DUkVGKEpPSU5fT0JKKGVsZW1lbnQtPnRhaWwpKTsKIAogICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoZWxlbWVudCwgc2VsZi0+ZXh0cmEtPmxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYxOCw3ICs3MDgsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC0+ZXh0cmEtPmxlbmd0aCA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7Ci0gICAgICAgIAorCiAgICAgfQogCiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CkBAIC02NTQsMTQgKzc0NCwxNCBAQAogICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAotICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKKyAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKHRhZyk7CiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgdGV4dCA9IGRlZXBjb3B5KEpPSU5fT0JKKHNlbGYtPnRleHQpLCBtZW1vKTsKICAgICBpZiAoIXRleHQpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC02NzUsNyArNzY1LDcgQEAKICAgICBlbGVtZW50LT50YWlsID0gSk9JTl9TRVQodGFpbCwgSk9JTl9HRVQoc2VsZi0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChlbGVtZW50X3Jlc2l6ZShlbGVtZW50LCBzZWxmLT5leHRyYS0+bGVuZ3RoKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC02ODksMTEgKzc3OSwxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC0+ZXh0cmEtPmxlbmd0aCA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7Ci0gICAgICAgIAorCiAgICAgfQogCiAgICAgLyogYWRkIG9iamVjdCB0byBtZW1vIGRpY3Rpb25hcnkgKHNvIGRlZXBjb3B5IHdvbid0IHZpc2l0IGl0IGFnYWluKSAqLwotICAgIGlkID0gUHlMb25nX0Zyb21Mb25nKChQeV91aW50cHRyX3QpIHNlbGYpOworICAgIGlkID0gUHlMb25nX0Zyb21Tc2l6ZV90KChQeV91aW50cHRyX3QpIHNlbGYpOwogICAgIGlmICghaWQpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTcxMSw2ICs4MDEsMTg2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfc2l6ZW9mKFB5T2JqZWN0KiBfc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRWxlbWVudE9iamVjdCAqc2VsZiA9IChFbGVtZW50T2JqZWN0Kilfc2VsZjsKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IHNpemVvZihFbGVtZW50T2JqZWN0KTsKKyAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbGVtZW50T2JqZWN0RXh0cmEpOworICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pCisgICAgICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKFB5T2JqZWN0KikgKiBzZWxmLT5leHRyYS0+YWxsb2NhdGVkOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKKy8qIGRpY3Qga2V5cyBmb3IgZ2V0c3RhdGUvc2V0c3RhdGUuICovCisjZGVmaW5lIFBJQ0tMRURfVEFHICJ0YWciCisjZGVmaW5lIFBJQ0tMRURfQ0hJTERSRU4gIl9jaGlsZHJlbiIKKyNkZWZpbmUgUElDS0xFRF9BVFRSSUIgImF0dHJpYiIKKyNkZWZpbmUgUElDS0xFRF9UQUlMICJ0YWlsIgorI2RlZmluZSBQSUNLTEVEX1RFWFQgInRleHQiCisKKy8qIF9fZ2V0c3RhdGVfXyByZXR1cm5zIGEgZmFicmljYXRlZCBpbnN0YW5jZSBkaWN0IGFzIGluIHRoZSBwdXJlLVB5dGhvbgorICogRWxlbWVudCBpbXBsZW1lbnRhdGlvbiwgZm9yIGludGVyb3BlcmFiaWxpdHkvaW50ZXJjaGFuZ2VhYmlsaXR5LiAgVGhpcworICogbWFrZXMgdGhlIHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW4gQVBJLCBidXQgKGEpIHRoZXJlIGFyZW4ndAorICogYW55IHVubmVjZXNzYXJ5IHN0cnVjdHVyZXMgdGhlcmU7IGFuZCAoYikgaXQgYnV5cyBjb21wYXRpYmlsaXR5IHdpdGggMy4yCisgKiBwaWNrbGVzLiAgU2VlIGlzc3VlICMxNjA3Ni4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRfZ2V0c3RhdGUoRWxlbWVudE9iamVjdCAqc2VsZikKK3sKKyAgICBpbnQgaSwgbm9hdHRyaWI7CisgICAgUHlPYmplY3QgKmluc3RhbmNlZGljdCA9IE5VTEwsICpjaGlsZHJlbjsKKworICAgIC8qIEJ1aWxkIGEgbGlzdCBvZiBjaGlsZHJlbi4gKi8KKyAgICBjaGlsZHJlbiA9IFB5TGlzdF9OZXcoc2VsZi0+ZXh0cmEgPyBzZWxmLT5leHRyYS0+bGVuZ3RoIDogMCk7CisgICAgaWYgKCFjaGlsZHJlbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IFB5TGlzdF9HRVRfU0laRShjaGlsZHJlbik7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqY2hpbGQgPSBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV07CisgICAgICAgIFB5X0lOQ1JFRihjaGlsZCk7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShjaGlsZHJlbiwgaSwgY2hpbGQpOworICAgIH0KKworICAgIC8qIENvbnN0cnVjdCB0aGUgc3RhdGUgb2JqZWN0LiAqLworICAgIG5vYXR0cmliID0gKHNlbGYtPmV4dHJhID09IE5VTEwgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKTsKKyAgICBpZiAobm9hdHRyaWIpCisgICAgICAgIGluc3RhbmNlZGljdCA9IFB5X0J1aWxkVmFsdWUoIntzT3NPc3t9c09zT30iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEFHLCBzZWxmLT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElDS0xFRF9DSElMRFJFTiwgY2hpbGRyZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElDS0xFRF9BVFRSSUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElDS0xFRF9URVhULCBzZWxmLT50ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEFJTCwgc2VsZi0+dGFpbCk7CisgICAgZWxzZQorICAgICAgICBpbnN0YW5jZWRpY3QgPSBQeV9CdWlsZFZhbHVlKCJ7c09zT3NPc09zT30iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEFHLCBzZWxmLT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElDS0xFRF9DSElMRFJFTiwgY2hpbGRyZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElDS0xFRF9BVFRSSUIsIHNlbGYtPmV4dHJhLT5hdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUElDS0xFRF9URVhULCBzZWxmLT50ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEFJTCwgc2VsZi0+dGFpbCk7CisgICAgaWYgKGluc3RhbmNlZGljdCkgeworICAgICAgICBQeV9ERUNSRUYoY2hpbGRyZW4pOworICAgICAgICByZXR1cm4gaW5zdGFuY2VkaWN0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5TGlzdF9HRVRfU0laRShjaGlsZHJlbik7IGkrKykKKyAgICAgICAgICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oY2hpbGRyZW4sIGkpKTsKKyAgICAgICAgUHlfREVDUkVGKGNoaWxkcmVuKTsKKworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X3NldHN0YXRlX2Zyb21fYXR0cmlidXRlcyhFbGVtZW50T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0YWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNoaWxkcmVuKQoreworICAgIFB5X3NzaXplX3QgaSwgbmNoaWxkcmVuOworCisgICAgaWYgKCF0YWcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInRhZyBtYXkgbm90IGJlIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQ0xFQVIoc2VsZi0+dGFnKTsKKyAgICBzZWxmLT50YWcgPSB0YWc7CisgICAgUHlfSU5DUkVGKHNlbGYtPnRhZyk7CisKKyAgICBQeV9DTEVBUihzZWxmLT50ZXh0KTsKKyAgICBzZWxmLT50ZXh0ID0gdGV4dCA/IHRleHQgOiBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihzZWxmLT50ZXh0KTsKKworICAgIFB5X0NMRUFSKHNlbGYtPnRhaWwpOworICAgIHNlbGYtPnRhaWwgPSB0YWlsID8gdGFpbCA6IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHNlbGYtPnRhaWwpOworCisgICAgLyogSGFuZGxlIEFUVFJJQiBhbmQgQ0hJTERSRU4uICovCisgICAgaWYgKCFjaGlsZHJlbiAmJiAhYXR0cmliKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIC8qIENvbXB1dGUgJ25jaGlsZHJlbicuICovCisgICAgaWYgKGNoaWxkcmVuKSB7CisgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKGNoaWxkcmVuKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIidfY2hpbGRyZW4nIGlzIG5vdCBhIGxpc3QiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG5jaGlsZHJlbiA9IFB5TGlzdF9TaXplKGNoaWxkcmVuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5jaGlsZHJlbiA9IDA7CisgICAgfQorCisgICAgLyogQWxsb2NhdGUgJ2V4dHJhJy4gKi8KKyAgICBpZiAoZWxlbWVudF9yZXNpemUoc2VsZiwgbmNoaWxkcmVuKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgYXNzZXJ0KHNlbGYtPmV4dHJhICYmIHNlbGYtPmV4dHJhLT5hbGxvY2F0ZWQgPj0gbmNoaWxkcmVuKTsKKworICAgIC8qIENvcHkgY2hpbGRyZW4gKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbmNoaWxkcmVuOyBpKyspIHsKKyAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldID0gUHlMaXN0X0dFVF9JVEVNKGNoaWxkcmVuLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSk7CisgICAgfQorCisgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCA9IG5jaGlsZHJlbjsKKyAgICBzZWxmLT5leHRyYS0+YWxsb2NhdGVkID0gbmNoaWxkcmVuOworCisgICAgLyogU3Rhc2ggYXR0cmliLiAqLworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CisgICAgICAgIHNlbGYtPmV4dHJhLT5hdHRyaWIgPSBhdHRyaWI7CisgICAgICAgIFB5X0lOQ1JFRihhdHRyaWIpOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKiBfX3NldHN0YXRlX18gZm9yIEVsZW1lbnQgaW5zdGFuY2UgZnJvbSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorICogJ3N0YXRlJyBzaG91bGQgYmUgdGhlIGluc3RhbmNlIGRpY3QuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X3NldHN0YXRlX2Zyb21fUHl0aG9uKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7UElDS0xFRF9UQUcsIFBJQ0tMRURfQVRUUklCLCBQSUNLTEVEX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEFJTCwgUElDS0xFRF9DSElMRFJFTiwgMH07CisgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKnRhZywgKmF0dHJpYiwgKnRleHQsICp0YWlsLCAqY2hpbGRyZW47CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIHRhZyA9IGF0dHJpYiA9IHRleHQgPSB0YWlsID0gY2hpbGRyZW4gPSBOVUxMOworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICBpZiAoIWFyZ3MpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBzdGF0ZSwgInwkT09PT08iLCBrd2xpc3QsICZ0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0cmliLCAmdGV4dCwgJnRhaWwsICZjaGlsZHJlbikpCisgICAgICAgIHJldHZhbCA9IGVsZW1lbnRfc2V0c3RhdGVfZnJvbV9hdHRyaWJ1dGVzKHNlbGYsIHRhZywgYXR0cmliLCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWlsLCBjaGlsZHJlbik7CisgICAgZWxzZQorICAgICAgICByZXR2YWwgPSBOVUxMOworCisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X3NldHN0YXRlKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KHN0YXRlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgaG93IHRvIHVucGlja2xlIFwiJS4yMDBSXCIgYXMgYW4gRWxlbWVudCIsCisgICAgICAgICAgICAgICAgICAgICBzdGF0ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBlbGVtZW50X3NldHN0YXRlX2Zyb21fUHl0aG9uKHNlbGYsIHN0YXRlKTsKK30KKwogTE9DQUwoaW50KQogY2hlY2twYXRoKFB5T2JqZWN0KiB0YWcpCiB7CkBAIC03MjMsMTMgKzk5MywxNiBAQAogICAgIChjaCA9PSAnLycgfHwgY2ggPT0gJyonIHx8IGNoID09ICdbJyB8fCBjaCA9PSAnQCcgfHwgY2ggPT0gJy4nKQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0YWcpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0YWcpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHRhZyk7IGkrKykgewotICAgICAgICAgICAgaWYgKHBbaV0gPT0gJ3snKQorICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRhZyk7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh0YWcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHRhZyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgaWYgKGNoID09ICd7JykKICAgICAgICAgICAgICAgICBjaGVjayA9IDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChwW2ldID09ICd9JykKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICd9JykKICAgICAgICAgICAgICAgICBjaGVjayA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaGVjayAmJiBQQVRIQ0hBUihwW2ldKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrICYmIFBBVEhDSEFSKGNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTc3Miw2ICsxMDQ1LDE1IEBACiAgICAgc2VxbGVuID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CiAgICAgZm9yIChpID0gMDsgaSA8IHNlcWxlbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0KiBlbGVtZW50ID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHNlcSwgaSk7CisgICAgICAgIGlmICghUHlPYmplY3RfSXNJbnN0YW5jZShlbGVtZW50LCAoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBhbiBFbGVtZW50LCBub3QgXCIlLjIwMHNcIiIsCisgICAgICAgICAgICAgICAgUHlfVFlQRShlbGVtZW50KS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChlbGVtZW50X2FkZF9zdWJlbGVtZW50KHNlbGYsIGVsZW1lbnQpIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc4NCwyMyArMTA2NiwyNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86ZmluZCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmQiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CisgICAgfQogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIAorCiAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaXRlbSA9IHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXTsKICAgICAgICAgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSAmJgpAQCAtODE0LDE5ICsxMTAwLDIyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T086ZmluZHRleHQiLCAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgIF9QeV9JREVOVElGSUVSKGZpbmR0ZXh0KTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPTzpmaW5kdGV4dCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiZmluZHRleHQiLCAiT09PTyIsIHNlbGYsIHRhZywgZGVmYXVsdF92YWx1ZSwgbmFtZXNwYWNlcworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZHRleHQsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewpAQCAtODQwLDcgKzExMjksNyBAQAogCiAgICAgICAgICAgICBQeU9iamVjdCogdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoaXRlbSk7CiAgICAgICAgICAgICBpZiAodGV4dCA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgICAgICBQeV9YSU5DUkVGKHRleHQpOwogICAgICAgICAgICAgcmV0dXJuIHRleHQ7CiAgICAgICAgIH0KQEAgLTg1MSwyMCArMTE0MCwyNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwogICAgIFB5T2JqZWN0KiBvdXQ7Ci0KICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TzpmaW5kYWxsIiwgJnRhZywgJm5hbWVzcGFjZXMpKQorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmZpbmRhbGwiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiZmluZGFsbCIsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGZpbmRhbGwpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZGFsbCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcwogICAgICAgICAgICAgKTsKKyAgICB9CiAKICAgICBvdXQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICghb3V0KQpAQCAtODg4LDI2ICsxMTgxLDMzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TzppdGVyZmluZCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBfUHlfSURFTlRJRklFUihpdGVyZmluZCk7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86aXRlcmZpbmQiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICBlbGVtZW50cGF0aF9vYmosICJpdGVyZmluZCIsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9pdGVyZmluZCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcwogICAgICAgICApOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK2VsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dkcykKIHsKICAgICBQeU9iamVjdCogdmFsdWU7CisgICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OwogCiAgICAgUHlPYmplY3QqIGtleTsKICAgICBQeU9iamVjdCogZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86Z2V0IiwgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpnZXQiLCBrd2xpc3QsICZrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKQpAQCAtOTQ5LDY3ICsxMjQ5LDM0IEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCk7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICAKICAgICBQeU9iamVjdCogdGFnID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOml0ZXIiLCAmdGFnKSkKKyAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7InRhZyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOml0ZXIiLCBrd2xpc3QsICZ0YWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghZWxlbWVudHRyZWVfaXRlcl9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgIml0ZXIgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKHNlbGYpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIHNlbGYpOwotICAgIFB5X0lOQ1JFRih0YWcpOyAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCAoUHlPYmplY3QqKSB0YWcpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9pdGVyX29iaiwgYXJncyk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjcmVhdGVfZWxlbWVudGl0ZXIoc2VsZiwgdGFnLCAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlcnRleHQiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIWVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiaXRlcnRleHQgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKHNlbGYpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIHNlbGYpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9pdGVydGV4dF9vYmosIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIFB5X05vbmUsIDEpOwogfQogCisKIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfZ2V0aXRlbShQeU9iamVjdCogc2VsZl8sIFB5X3NzaXplX3QgaW5kZXgpCiB7CkBAIC0xMDM5LDcgKzEzMDYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGluZGV4ICs9IHNlbGYtPmV4dHJhLT5sZW5ndGg7CkBAIC0xMTEwLDcgKzEzNzcsNyBAQAogICAgIGlmICghYXR0cmliKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7CisgICAgZWxlbSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIApAQCAtMTExOCwzMSArMTM4NSw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfcmVkdWNlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOl9fcmVkdWNlX18iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBIYWNrIGFsZXJ0OiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHdvcmsgYXJvdW5kIGEgX19jb3B5X18KLSAgICAgICBwcm9ibGVtIG9uIGNlcnRhaW4gMi4zIGFuZCAyLjQgdmVyc2lvbnMuICBUbyBzYXZlIHRpbWUgYW5kCi0gICAgICAgc2ltcGxpZnkgdGhlIGNvZGUsIHdlIGNyZWF0ZSB0aGUgY29weSBpbiBoZXJlLCBhbmQgdXNlIGEgZHVtbXkKLSAgICAgICBjb3B5ZWxlbWVudCBoZWxwZXIgdG8gdHJpY2sgdGhlIGNvcHkgbW9kdWxlIGludG8gZG9pbmcgdGhlCi0gICAgICAgcmlnaHQgdGhpbmcuICovCi0KLSAgICBpZiAoIWVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiY29weWVsZW1lbnQgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTyhOKSIsIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaiwgZWxlbWVudF9jb3B5KHNlbGYsIGFyZ3MpCi0gICAgICAgICk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIGludCBpOwpAQCAtMTE4OSw3ICsxNDMxLDEwIEBACiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X3JlcHIoRWxlbWVudE9iamVjdCogc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxFbGVtZW50ICVSIGF0ICVwPiIsIHNlbGYtPnRhZywgc2VsZik7CisgICAgaWYgKHNlbGYtPnRhZykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCAlUiBhdCAlcD4iLCBzZWxmLT50YWcsIHNlbGYpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCBhdCAlcD4iLCBzZWxmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTIwMyw3ICsxNDQ4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgYXR0cmliID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwogICAgIGlmICghYXR0cmliKQpAQCAtMTI1MCwxMyArMTQ5NSw4IEBACiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZiA9IChFbGVtZW50T2JqZWN0Kikgc2VsZl87CiAKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgIGlmIChQeUludF9DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgbG9uZyBpID0gUHlJbnRfQXNMb25nKGl0ZW0pOwotI2Vsc2UKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7Ci0jZW5kaWYKIAogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMDcsMTMgKzE1NDcsOCBAQAogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGYgPSAoRWxlbWVudE9iamVjdCopIHNlbGZfOwogCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICBpZiAoUHlJbnRfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIGxvbmcgaSA9IFB5SW50X0FzTG9uZyhpdGVtKTsKLSNlbHNlCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwotI2VuZGlmCiAKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTMyOSw3ICsxNTY0LDcgQEAKICAgICAgICAgUHlPYmplY3QqIHNlcSA9IE5VTEw7CiAKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLAogICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGgsCkBAIC0xMzM3LDkgKzE1NzIsNzQgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgbmV3bGVuID0gMDsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIERlbGV0ZSBzbGljZSAqLworICAgICAgICAgICAgc2l6ZV90IGN1cjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKHNsaWNlbGVuIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIC8qIFNpbmNlIHdlJ3JlIGRlbGV0aW5nLCB0aGUgZGlyZWN0aW9uIG9mIHRoZSByYW5nZSBkb2Vzbid0IG1hdHRlciwKKyAgICAgICAgICAgICAqIHNvIGZvciBzaW1wbGljaXR5IG1ha2UgaXQgYWx3YXlzIGFzY2VuZGluZy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoc3RlcCA8IDApIHsKKyAgICAgICAgICAgICAgICBzdG9wID0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RvcCArIHN0ZXAgKiAoc2xpY2VsZW4gLSAxKSAtIDE7CisgICAgICAgICAgICAgICAgc3RlcCA9IC1zdGVwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnQoKHNpemVfdClzbGljZWxlbiA8PSBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICAgICAgICAgIC8qIHJlY3ljbGUgaXMgYSBsaXN0IHRoYXQgd2lsbCBjb250YWluIGFsbCB0aGUgY2hpbGRyZW4KKyAgICAgICAgICAgICAqIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIShyZWN5Y2xlID0gUHlMaXN0X05ldyhzbGljZWxlbikpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFRoaXMgbG9vcCB3YWxrcyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4gdGhhdCBoYXZlIHRvIGJlIGRlbGV0ZWQsCisgICAgICAgICAgICAgKiB3aXRoIGN1ciBwb2ludGluZyBhdCB0aGVtLiBudW1fbW92ZWQgaXMgdGhlIGFtb3VudCBvZiBjaGlsZHJlbgorICAgICAgICAgICAgICogdW50aWwgdGhlIG5leHQgZGVsZXRlZCBjaGlsZCB0aGF0IGhhdmUgdG8gYmUgInNoaWZ0ZWQgZG93biIgdG8KKyAgICAgICAgICAgICAqIG9jY3VweSB0aGUgZGVsZXRlZCdzIHBsYWNlcy4KKyAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpbiB0aGUgaXRoIGl0ZXJhdGlvbiwgc2hpZnRpbmcgaXMgZG9uZSBpK2kgcGxhY2VzIGRvd24KKyAgICAgICAgICAgICAqIGJlY2F1c2UgaSBjaGlsZHJlbiB3ZXJlIGFscmVhZHkgcmVtb3ZlZC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgY3VyIDwgKHNpemVfdClzdG9wOyBjdXIgKz0gc3RlcCwgKytpKSB7CisgICAgICAgICAgICAgICAgLyogQ29tcHV0ZSBob3cgbWFueSBjaGlsZHJlbiBoYXZlIHRvIGJlIG1vdmVkLCBjbGlwcGluZyBhdCB0aGUKKyAgICAgICAgICAgICAgICAgKiBsaXN0IGVuZC4KKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbnVtX21vdmVkID0gc3RlcCAtIDE7CisgICAgICAgICAgICAgICAgaWYgKGN1ciArIHN0ZXAgPj0gKHNpemVfdClzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIG51bV9tb3ZlZCA9IHNlbGYtPmV4dHJhLT5sZW5ndGggLSBjdXIgLSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShyZWN5Y2xlLCBpLCBzZWxmLT5leHRyYS0+Y2hpbGRyZW5bY3VyXSk7CisKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgLSBpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgKyAxLAorICAgICAgICAgICAgICAgICAgICBudW1fbW92ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBMZWZ0b3ZlciAidGFpbCIgYWZ0ZXIgdGhlIGxhc3QgcmVtb3ZlZCBjaGlsZCAqLworICAgICAgICAgICAgY3VyID0gc3RhcnQgKyAoc2l6ZV90KXNsaWNlbGVuICogc3RlcDsKKyAgICAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KXNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgLSBzbGljZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyLAorICAgICAgICAgICAgICAgICAgICAoc2VsZi0+ZXh0cmEtPmxlbmd0aCAtIGN1cikgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoIC09IHNsaWNlbGVuOworCisgICAgICAgICAgICAvKiBEaXNjYXJkIHRoZSByZWN5Y2xlIGxpc3Qgd2l0aCBhbGwgdGhlIGRlbGV0ZWQgc3ViLWVsZW1lbnRzICovCisgICAgICAgICAgICBQeV9YREVDUkVGKHJlY3ljbGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBBIG5ldyBzbGljZSBpcyBhY3R1YWxseSBiZWluZyBhc3NpZ25lZCAqLwogICAgICAgICAgICAgc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHZhbHVlLCAiIik7CiAgICAgICAgICAgICBpZiAoIXNlcSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTEzNTQsMTkgKzE2NTQsMTMgQEAKICAgICAgICAgaWYgKHN0ZXAgIT0gIDEgJiYgbmV3bGVuICE9IHNsaWNlbGVuKQogICAgICAgICB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgICAgICAgICAgICAgICJhdHRlbXB0IHRvIGFzc2lnbiBzZXF1ZW5jZSBvZiBzaXplICVkICIKLSAgICAgICAgICAgICAgICAidG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlZCIsCi0jZWxzZQogICAgICAgICAgICAgICAgICJhdHRlbXB0IHRvIGFzc2lnbiBzZXF1ZW5jZSBvZiBzaXplICV6ZCAiCiAgICAgICAgICAgICAgICAgInRvIGV4dGVuZGVkIHNsaWNlIG9mIHNpemUgJXpkIiwKLSNlbmRpZgogICAgICAgICAgICAgICAgIG5ld2xlbiwgc2xpY2VsZW4KICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLQogICAgICAgICAvKiBSZXNpemUgYmVmb3JlIGNyZWF0aW5nIHRoZSByZWN5Y2xlIGJpbiwgdG8gcHJldmVudCByZWZsZWFrcy4gKi8KICAgICAgICAgaWYgKG5ld2xlbiA+IHNsaWNlbGVuKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoc2VsZiwgbmV3bGVuIC0gc2xpY2VsZW4pIDwgMCkgewpAQCAtMTQzMSwyNSArMTcyNSwyNSBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgZWxlbWVudF9tZXRob2RzW10gPSB7CiAKLSAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NsZWFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY2xlYXJtZXRob2QsIE1FVEhfVkFSQVJHU30sCiAKLSAgICB7ImdldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU30sCisgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZ2V0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKICAgICB7InNldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9zZXQsIE1FVEhfVkFSQVJHU30sCiAKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kYWxsLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAKICAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9hcHBlbmQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZXh0ZW5kLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2luc2VydCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9yZW1vdmUsIE1FVEhfVkFSQVJHU30sCiAKLSAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAgICAgeyJpdGVydGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVydGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9WQVJBUkdTfSwKIAogICAgIHsiaXRlbXMiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlbXMsIE1FVEhfVkFSQVJHU30sCkBAIC0xNDU5LDE4ICsxNzUzLDkgQEAKIAogICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY29weSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9kZWVwY29weSwgTUVUSF9WQVJBUkdTfSwKLQotICAgIC8qIFNvbWUgMi4zIGFuZCAyLjQgdmVyc2lvbnMgZG8gbm90IGhhbmRsZSB0aGUgX19jb3B5X18gbWV0aG9kIG9uCi0gICAgICAgQyBvYmplY3RzIGNvcnJlY3RseSwgc28gd2UgaGF2ZSB0byBmYWtlIGl0IHVzaW5nIGEgX19yZWR1Y2VfXy0KLSAgICAgICBiYXNlZCBoYWNrIChzZWUgdGhlIGVsZW1lbnRfcmVkdWNlIGltcGxlbWVudGF0aW9uIGFib3ZlIGZvcgotICAgICAgIGRldGFpbHMpLiAqLwotCi0gICAgLyogVGhlIGJlaGF2aW91ciBoYXMgYmVlbiBjaGFuZ2VkIGluIDIuMy41IGFuZCAyLjQuMSwgc28gd2UncmUKLSAgICAgICB1c2luZyBhIHJ1bnRpbWUgdGVzdCB0byBmaWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8gZmFrZSB0aGluZ3MKLSAgICAgICBvciBub3cgKHNlZSB0aGUgaW5pdCBjb2RlIGJlbG93KS4gIFRoZSBmb2xsb3dpbmcgZW50cnkgaXMKLSAgICAgICBlbmFibGVkIG9ubHkgaWYgdGhlIGhhY2sgaXMgbmVlZGVkLiAqLwotCi0gICAgeyIhX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9yZWR1Y2UsIE1FVEhfVkFSQVJHU30sCisgICAgeyJfX3NpemVvZl9fIiwgZWxlbWVudF9zaXplb2YsIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbillbGVtZW50X2dldHN0YXRlLCBNRVRIX05PQVJHU30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZWxlbWVudF9zZXRzdGF0ZSwgTUVUSF9PfSwKIAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTE0ODMsNyArMTc2OCw3IEBACiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQogICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLSAgICAKKwogICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNTEwLDcgKzE3OTUsNyBAQAogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKICAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwogICAgIH0KIApAQCAtMTUyMSwxNiArMTgwNiwxNSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQKLWVsZW1lbnRfc2V0YXR0cihFbGVtZW50T2JqZWN0KiBzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBQeU9iamVjdCogdmFsdWUpCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3NldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqLCBQeU9iamVjdCogdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiY2FuJ3QgZGVsZXRlIGVsZW1lbnQgYXR0cmlidXRlcyIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgY2hhciAqbmFtZSA9ICIiOworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCisgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOworCisgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT50YWcpOwpAQCAtMTU0NiwxNiArMTgzMCwxNiBAQAogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFpbCk7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CiAgICAgICAgIHNlbGYtPmV4dHJhLT5hdHRyaWIgPSB2YWx1ZTsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBlbGVtZW50X2FzX3NlcXVlbmNlID0gewpAQCAtMTU3Niw1OCArMTg2MCwzNDYgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIkVsZW1lbnQiLCBzaXplb2YoRWxlbWVudE9iamVjdCksIDAsCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAoc2V0YXR0cmZ1bmMpZWxlbWVudF9zZXRhdHRyLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJmVsZW1lbnRfYXNfbWFwcGluZywgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAvKiB0cF9jYWxsICovCi0gICAgMCwgLyogdHBfc3RyICovCi0gICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgZWxlbWVudF9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKWVsZW1lbnRfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmZWxlbWVudF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpZWxlbWVudF9nY190cmF2ZXJzZSwgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpZWxlbWVudF9nY19jbGVhciwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKEVsZW1lbnRPYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgZWxlbWVudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpZWxlbWVudF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBlbGVtZW50X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBFbGVtZW50IGl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEVsZW1lbnRJdGVyT2JqZWN0IHJlcHJlc2VudHMgdGhlIGl0ZXJhdGlvbiBzdGF0ZSBvdmVyIGFuIFhNTCBlbGVtZW50IGluCisgKiBwcmUtb3JkZXIgdHJhdmVyc2FsLiBUbyBrZWVwIHRyYWNrIG9mIHdoaWNoIHN1Yi1lbGVtZW50IHNob3VsZCBiZSByZXR1cm5lZAorICogbmV4dCwgYSBzdGFjayBvZiBwYXJlbnRzIGlzIG1haW50YWluZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBzdGFjay1iYXNlZAorICogaXRlcmF0aXZlIHByZS1vcmRlciB0cmF2ZXJzYWwgb2YgYSB0cmVlLgorICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBzaW5nbGUtbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgcGFyZW50X3N0YWNrLgorICogRWFjaCBzdGFjayBub2RlIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgorICogdGhlIGN1cnJlbnQgb25lIGlzIGV4aGF1c3RlZCwgYW5kIHRoZSBuZXh0IGNoaWxkIHRvIGV4YW1pbmUgaW4gdGhhdCBwYXJlbnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmVudExvY2F0b3JfdCB7CisgICAgRWxlbWVudE9iamVjdCAqcGFyZW50OworICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7CisgICAgc3RydWN0IFBhcmVudExvY2F0b3JfdCAqbmV4dDsKK30gUGFyZW50TG9jYXRvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2s7CisgICAgRWxlbWVudE9iamVjdCAqcm9vdF9lbGVtZW50OworICAgIFB5T2JqZWN0ICpzb3VnaHRfdGFnOworICAgIGludCByb290X2RvbmU7CisgICAgaW50IGdldHRleHQ7Cit9IEVsZW1lbnRJdGVyT2JqZWN0OworCisKK3N0YXRpYyB2b2lkCitlbGVtZW50aXRlcl9kZWFsbG9jKEVsZW1lbnRJdGVyT2JqZWN0ICppdCkKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICB3aGlsZSAocCkgeworICAgICAgICBQYXJlbnRMb2NhdG9yICp0ZW1wID0gcDsKKyAgICAgICAgUHlfWERFQ1JFRihwLT5wYXJlbnQpOworICAgICAgICBwID0gcC0+bmV4dDsKKyAgICAgICAgUHlPYmplY3RfRnJlZSh0ZW1wKTsKKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGl0LT5zb3VnaHRfdGFnKTsKKyAgICBQeV9YREVDUkVGKGl0LT5yb290X2VsZW1lbnQpOworCisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhpdCk7CisgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKK30KKworc3RhdGljIGludAorZWxlbWVudGl0ZXJfdHJhdmVyc2UoRWxlbWVudEl0ZXJPYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICB3aGlsZSAocCkgeworICAgICAgICBQeV9WSVNJVChwLT5wYXJlbnQpOworICAgICAgICBwID0gcC0+bmV4dDsKKyAgICB9CisKKyAgICBQeV9WSVNJVChpdC0+cm9vdF9lbGVtZW50KTsKKyAgICBQeV9WSVNJVChpdC0+c291Z2h0X3RhZyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZWxlbWVudGl0ZXJfbmV4dC4gQWRkIGEgbmV3IHBhcmVudCB0byB0aGUgcGFyZW50IHN0YWNrLgorICovCitzdGF0aWMgUGFyZW50TG9jYXRvciAqCitwYXJlbnRfc3RhY2tfcHVzaF9uZXcoUGFyZW50TG9jYXRvciAqc3RhY2ssIEVsZW1lbnRPYmplY3QgKnBhcmVudCkKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpuZXdfbm9kZSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGlmIChuZXdfbm9kZSkgeworICAgICAgICBuZXdfbm9kZS0+cGFyZW50ID0gcGFyZW50OworICAgICAgICBQeV9JTkNSRUYocGFyZW50KTsKKyAgICAgICAgbmV3X25vZGUtPmNoaWxkX2luZGV4ID0gMDsKKyAgICAgICAgbmV3X25vZGUtPm5leHQgPSBzdGFjazsKKyAgICB9CisgICAgcmV0dXJuIG5ld19ub2RlOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudGl0ZXJfbmV4dChFbGVtZW50SXRlck9iamVjdCAqaXQpCit7CisgICAgLyogU3ViLWVsZW1lbnQgaXRlcmF0b3IuCisgICAgICoKKyAgICAgKiBBIHNob3J0IG5vdGUgb24gZ2V0dGV4dDogdGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYm90aCB0aGUgaXRlcigpIGFuZAorICAgICAqIGl0ZXJ0ZXh0KCkgbWV0aG9kcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLiBIb3dldmVyLCB0aGVyZSBhcmUgYSBmZXcKKyAgICAgKiBzbWFsbCBkaWZmZXJlbmNlcyBpbiB0aGUgd2F5IHRoZXNlIGl0ZXJhdGlvbnMgd29yay4gTmFtZWx5OgorICAgICAqICAgLSBpdGVydGV4dCgpIG9ubHkgeWllbGRzIHRleHQgZnJvbSBub2RlcyB0aGF0IGhhdmUgaXQsIGFuZCBjb250aW51ZXMKKyAgICAgKiAgICAgaXRlcmF0aW5nIHdoZW4gYSBub2RlIGRvZXNuJ3QgaGF2ZSB0ZXh0IChzbyBpdCBkb2Vzbid0IHJldHVybiBhbnkKKyAgICAgKiAgICAgbm9kZSBsaWtlIGl0ZXIoKSkKKyAgICAgKiAgIC0gaXRlcnRleHQoKSBhbHNvIGhhcyB0byBoYW5kbGUgdGFpbCwgYWZ0ZXIgZmluaXNoaW5nIHdpdGggYWxsIHRoZQorICAgICAqICAgICBjaGlsZHJlbiBvZiBhIG5vZGUuCisgICAgICovCisgICAgRWxlbWVudE9iamVjdCAqY3VyX3BhcmVudDsKKyAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIHJlYWNoZWQgaW4gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGl0ZXJhdGlvbiwgd2hlcmUKKyAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gVGhlIHJvb3RfZG9uZSBmbGFnIGdpdmVzIHVzIGluZGljYXRpb24KKyAgICAgICAgICogd2hldGhlciB3ZSd2ZSBqdXN0IHN0YXJ0ZWQgaXRlcmF0aW5nIChzbyByb290X2RvbmUgaXMgMCksIGluIHdoaWNoCisgICAgICAgICAqIGNhc2UgdGhlIHJvb3QgaXMgcmV0dXJuZWQuIElmIHJvb3RfZG9uZSBpcyAxIGFuZCB3ZSdyZSBoZXJlLCB0aGUKKyAgICAgICAgICogaXRlcmF0b3IgaXMgZXhoYXVzdGVkLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+cm9vdF9kb25lKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnJvb3RfZWxlbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGl0LT5yb290X2RvbmUgPSAxOworICAgICAgICAgICAgICAgIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lIHx8CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+cm9vdF9lbGVtZW50LT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoaXQtPnJvb3RfZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0LT5yb290X2VsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0LT5yb290X2VsZW1lbnQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgorICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KKyAgICAgICAgICovCisgICAgICAgIGN1cl9wYXJlbnQgPSBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQ7CisgICAgICAgIGNoaWxkX2luZGV4ID0gaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXg7CisgICAgICAgIGlmIChjdXJfcGFyZW50LT5leHRyYSAmJiBjaGlsZF9pbmRleCA8IGN1cl9wYXJlbnQtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgIEVsZW1lbnRPYmplY3QgKmNoaWxkID0gKEVsZW1lbnRPYmplY3QgKikKKyAgICAgICAgICAgICAgICBjdXJfcGFyZW50LT5leHRyYS0+Y2hpbGRyZW5bY2hpbGRfaW5kZXhdOworICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXgrKzsKKyAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQpOworICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBlbGVtZW50X2dldF90ZXh0KGNoaWxkKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRleHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9Jc1RydWUodGV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUgfHwKKyAgICAgICAgICAgICAgICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woY2hpbGQtPnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGNoaWxkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopY2hpbGQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdGFpbDsKKyAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKm5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OworICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICAgICAgdGFpbCA9IGVsZW1lbnRfZ2V0X3RhaWwoY3VyX3BhcmVudCk7CisgICAgICAgICAgICAgICAgaWYgKCF0YWlsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0YWlsID0gUHlfTm9uZTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KTsKKyAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7CisgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gbmV4dDsKKworICAgICAgICAgICAgLyogTm90ZSB0aGF0IGV4dHJhIGNvbmRpdGlvbiBvbiBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgaGVyZTsKKyAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKKyAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCAmJiBQeU9iamVjdF9Jc1RydWUodGFpbCkpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGFpbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhaWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEVsZW1lbnRJdGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgLyogVXNpbmcgdGhlIG1vZHVsZSdzIG5hbWUgc2luY2UgdGhlIHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uIGRvZXMgbm90CisgICAgICAgaGF2ZSBzdWNoIGEgdHlwZS4gKi8KKyAgICAiX2VsZW1lbnR0cmVlLl9lbGVtZW50X2l0ZXJhdG9yIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoRWxlbWVudEl0ZXJPYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZWxlbWVudGl0ZXJfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRpdGVyX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYyllbGVtZW50aXRlcl9uZXh0LCAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KQoreworICAgIEVsZW1lbnRJdGVyT2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqc3RhciA9IE5VTEw7CisKKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhFbGVtZW50SXRlck9iamVjdCwgJkVsZW1lbnRJdGVyX1R5cGUpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghKGl0LT5wYXJlbnRfc3RhY2sgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKSkpIHsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ID0gTlVMTDsKKyAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCA9IDA7CisgICAgaXQtPnBhcmVudF9zdGFjay0+bmV4dCA9IE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRhZykpCisgICAgICAgIHN0YXIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiKiIpOworICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFnKSkKKyAgICAgICAgc3RhciA9IFB5Qnl0ZXNfRnJvbVN0cmluZygiKiIpOworCisgICAgaWYgKHN0YXIgJiYgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHRhZywgc3RhciwgUHlfRVEpID09IDEpCisgICAgICAgIHRhZyA9IFB5X05vbmU7CisKKyAgICBQeV9YREVDUkVGKHN0YXIpOworICAgIGl0LT5zb3VnaHRfdGFnID0gdGFnOworICAgIGl0LT5yb290X2RvbmUgPSAwOworICAgIGl0LT5nZXR0ZXh0ID0gZ2V0dGV4dDsKKyAgICBpdC0+cm9vdF9lbGVtZW50ID0gc2VsZjsKKworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBQeV9JTkNSRUYodGFnKTsKKworICAgIFB5T2JqZWN0X0dDX1RyYWNrKGl0KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7Cit9CisKKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qIHRoZSB0cmVlIGJ1aWxkZXIgdHlwZSAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogCi0gICAgUHlPYmplY3QqIHJvb3Q7IC8qIHJvb3Qgbm9kZSAoZmlyc3QgY3JlYXRlZCBub2RlKSAqLworICAgIFB5T2JqZWN0ICpyb290OyAvKiByb290IG5vZGUgKGZpcnN0IGNyZWF0ZWQgbm9kZSkgKi8KIAotICAgIEVsZW1lbnRPYmplY3QqIHRoaXM7IC8qIGN1cnJlbnQgbm9kZSAqLwotICAgIEVsZW1lbnRPYmplY3QqIGxhc3Q7IC8qIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBub2RlICovCisgICAgUHlPYmplY3QgKnRoaXM7IC8qIGN1cnJlbnQgbm9kZSAqLworICAgIFB5T2JqZWN0ICpsYXN0OyAvKiBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgbm9kZSAqLwogCi0gICAgUHlPYmplY3QqIGRhdGE7IC8qIGRhdGEgY29sbGVjdG9yIChzdHJpbmcgb3IgbGlzdCksIG9yIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZGF0YTsgLyogZGF0YSBjb2xsZWN0b3IgKHN0cmluZyBvciBsaXN0KSwgb3IgTlVMTCAqLwogCi0gICAgUHlPYmplY3QqIHN0YWNrOyAvKiBlbGVtZW50IHN0YWNrICovCi0gICAgUHlfc3NpemVfdCBpbmRleDsgLyogY3VycmVudCBzdGFjayBzaXplICgwPWVtcHR5KSAqLworICAgIFB5T2JqZWN0ICpzdGFjazsgLyogZWxlbWVudCBzdGFjayAqLworICAgIFB5X3NzaXplX3QgaW5kZXg7IC8qIGN1cnJlbnQgc3RhY2sgc2l6ZSAoMCBtZWFucyBlbXB0eSkgKi8KKworICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3Rvcnk7CiAKICAgICAvKiBlbGVtZW50IHRyYWNpbmcgKi8KLSAgICBQeU9iamVjdCogZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLwotICAgIFB5T2JqZWN0KiBzdGFydF9ldmVudF9vYmo7IC8qIGV2ZW50IG9iamVjdHMgKE5VTEwgdG8gaWdub3JlKSAqLwotICAgIFB5T2JqZWN0KiBlbmRfZXZlbnRfb2JqOwotICAgIFB5T2JqZWN0KiBzdGFydF9uc19ldmVudF9vYmo7Ci0gICAgUHlPYmplY3QqIGVuZF9uc19ldmVudF9vYmo7Ci0KKyAgICBQeU9iamVjdCAqZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLworICAgIFB5T2JqZWN0ICpzdGFydF9ldmVudF9vYmo7IC8qIGV2ZW50IG9iamVjdHMgKE5VTEwgdG8gaWdub3JlKSAqLworICAgIFB5T2JqZWN0ICplbmRfZXZlbnRfb2JqOworICAgIFB5T2JqZWN0ICpzdGFydF9uc19ldmVudF9vYmo7CisgICAgUHlPYmplY3QgKmVuZF9uc19ldmVudF9vYmo7CiB9IFRyZWVCdWlsZGVyT2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFRyZWVCdWlsZGVyX1R5cGU7CkBAIC0xNjM3LDc2ICsyMjA5LDE1OCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCiAKLUxPQ0FMKFB5T2JqZWN0KikKLXRyZWVidWlsZGVyX25ldyh2b2lkKQorc3RhdGljIFB5T2JqZWN0ICoKK3RyZWVidWlsZGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBUcmVlQnVpbGRlck9iamVjdCogc2VsZjsKKyAgICBUcmVlQnVpbGRlck9iamVjdCAqdCA9IChUcmVlQnVpbGRlck9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmICh0ICE9IE5VTEwpIHsKKyAgICAgICAgdC0+cm9vdCA9IE5VTEw7CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KFRyZWVCdWlsZGVyT2JqZWN0LCAmVHJlZUJ1aWxkZXJfVHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdC0+dGhpcyA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdC0+bGFzdCA9IFB5X05vbmU7CiAKLSAgICBzZWxmLT5yb290ID0gTlVMTDsKKyAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CisgICAgICAgIHQtPmVsZW1lbnRfZmFjdG9yeSA9IE5VTEw7CisgICAgICAgIHQtPnN0YWNrID0gUHlMaXN0X05ldygyMCk7CisgICAgICAgIGlmICghdC0+c3RhY2spIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0LT50aGlzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0LT5sYXN0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRigoUHlPYmplY3QgKikgdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0LT5pbmRleCA9IDA7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgc2VsZi0+dGhpcyA9IChFbGVtZW50T2JqZWN0KikgUHlfTm9uZTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICBzZWxmLT5sYXN0ID0gKEVsZW1lbnRPYmplY3QqKSBQeV9Ob25lOwotCi0gICAgc2VsZi0+ZGF0YSA9IE5VTEw7Ci0KLSAgICBzZWxmLT5zdGFjayA9IFB5TGlzdF9OZXcoMjApOwotICAgIHNlbGYtPmluZGV4ID0gMDsKLQotICAgIHNlbGYtPmV2ZW50cyA9IE5VTEw7Ci0gICAgc2VsZi0+c3RhcnRfZXZlbnRfb2JqID0gc2VsZi0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7Ci0gICAgc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqID0gc2VsZi0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7Ci0KLSAgICBBTExPQyhzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAiY3JlYXRlIHRyZWVidWlsZGVyIik7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKKyAgICAgICAgdC0+ZXZlbnRzID0gTlVMTDsKKyAgICAgICAgdC0+c3RhcnRfZXZlbnRfb2JqID0gdC0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7CisgICAgICAgIHQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IHQtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXIoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncykKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpUcmVlQnVpbGRlciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIDB9OworICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOworICAgIFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmX3RiID0gKFRyZWVCdWlsZGVyT2JqZWN0ICopc2VsZjsKKyAgICBQeU9iamVjdCAqdG1wOwogCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX25ldygpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TzpUcmVlQnVpbGRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGVsZW1lbnRfZmFjdG9yeSkgeworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudF9mYWN0b3J5KTsKKyAgICAgICAgdG1wID0gc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5OworICAgICAgICBzZWxmX3RiLT5lbGVtZW50X2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3Rvcnk7CisgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfZ2NfdHJhdmVyc2UoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnJvb3QpOworICAgIFB5X1ZJU0lUKHNlbGYtPnRoaXMpOworICAgIFB5X1ZJU0lUKHNlbGYtPmxhc3QpOworICAgIFB5X1ZJU0lUKHNlbGYtPmRhdGEpOworICAgIFB5X1ZJU0lUKHNlbGYtPnN0YWNrKTsKKyAgICBQeV9WSVNJVChzZWxmLT5lbGVtZW50X2ZhY3RvcnkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9nY19jbGVhcihUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5lbmRfbnNfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHNlbGYtPmVuZF9ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5zdGFjayk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGF0YSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+bGFzdCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+dGhpcyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KTsKKyAgICBQeV9DTEVBUihzZWxmLT5yb290KTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKLXRyZWVidWlsZGVyX2RlYWxsb2MoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYpCit0cmVlYnVpbGRlcl9kZWFsbG9jKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmKQogewotICAgIFB5X1hERUNSRUYoc2VsZi0+ZW5kX25zX2V2ZW50X29iaik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOwotICAgIFB5X1hERUNSRUYoc2VsZi0+ZW5kX2V2ZW50X29iaik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5zdGFydF9ldmVudF9vYmopOwotICAgIFB5X1hERUNSRUYoc2VsZi0+ZXZlbnRzKTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+c3RhY2spOwotICAgIFB5X1hERUNSRUYoc2VsZi0+ZGF0YSk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwotICAgIFB5X0RFQ1JFRihzZWxmLT50aGlzKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnJvb3QpOworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgdHJlZWJ1aWxkZXJfZ2NfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KIAotICAgIFJFTEVBU0Uoc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgImRlc3Ryb3kgdHJlZWJ1aWxkZXIiKTsKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBoZWxwZXJzIGZvciBoYW5kbGluZyBvZiBhcmJpdHJhcnkgZWxlbWVudC1saWtlIG9iamVjdHMgKi8KIAotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHRfb3JfdGFpbChQeU9iamVjdCAqZWxlbWVudCwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipkZXN0LCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBpZiAoRWxlbWVudF9DaGVja0V4YWN0KGVsZW1lbnQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSigqZGVzdCkpOworICAgICAgICAqZGVzdCA9IEpPSU5fU0VUKGRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqam9pbmVkID0gbGlzdF9qb2luKGRhdGEpOworICAgICAgICBpbnQgcjsKKyAgICAgICAgaWYgKGpvaW5lZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByID0gX1B5T2JqZWN0X1NldEF0dHJJZChlbGVtZW50LCBuYW1lLCBqb2luZWQpOworICAgICAgICBQeV9ERUNSRUYoam9pbmVkKTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorfQorCisvKiBUaGVzZSB0d28gZnVuY3Rpb25zIHN0ZWFsIGEgcmVmZXJlbmNlIHRvIGRhdGEgKi8KK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHQoUHlPYmplY3QgKmVsZW1lbnQsIFB5T2JqZWN0ICpkYXRhKQoreworICAgIF9QeV9JREVOVElGSUVSKHRleHQpOworICAgIHJldHVybiB0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0X29yX3RhaWwoCisgICAgICAgIGVsZW1lbnQsIGRhdGEsICYoKEVsZW1lbnRPYmplY3QgKikgZWxlbWVudCktPnRleHQsICZQeUlkX3RleHQpOworfQorCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90YWlsKFB5T2JqZWN0ICplbGVtZW50LCBQeU9iamVjdCAqZGF0YSkKK3sKKyAgICBfUHlfSURFTlRJRklFUih0YWlsKTsKKyAgICByZXR1cm4gdHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dF9vcl90YWlsKAorICAgICAgICBlbGVtZW50LCBkYXRhLCAmKChFbGVtZW50T2JqZWN0ICopIGVsZW1lbnQpLT50YWlsLCAmUHlJZF90YWlsKTsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfYWRkX3N1YmVsZW1lbnQoUHlPYmplY3QgKmVsZW1lbnQsIFB5T2JqZWN0ICpjaGlsZCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihhcHBlbmQpOworICAgIGlmIChFbGVtZW50X0NoZWNrRXhhY3QoZWxlbWVudCkpIHsKKyAgICAgICAgRWxlbWVudE9iamVjdCAqZWxlbSA9IChFbGVtZW50T2JqZWN0ICopIGVsZW1lbnQ7CisgICAgICAgIHJldHVybiBlbGVtZW50X2FkZF9zdWJlbGVtZW50KGVsZW0sIGNoaWxkKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZWxlbWVudCwgJlB5SWRfYXBwZW5kLCAiTyIsIGNoaWxkKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogaGFuZGxlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQotdHJlZWJ1aWxkZXJfaGFuZGxlX3htbChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogc3RhbmRhbG9uZSkKLXsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotTE9DQUwoUHlPYmplY3QqKQogdHJlZWJ1aWxkZXJfaGFuZGxlX3N0YXJ0KFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBhdHRyaWIpCiB7CkBAIC0xNzE1LDI3ICsyMzY5LDI5IEBACiAKICAgICBpZiAoc2VsZi0+ZGF0YSkgewogICAgICAgICBpZiAoc2VsZi0+dGhpcyA9PSBzZWxmLT5sYXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGV4dCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGV4dCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50YWlsKSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50YWlsID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHQoc2VsZi0+bGFzdCwgc2VsZi0+ZGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAodHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGFpbChzZWxmLT5sYXN0LCBzZWxmLT5kYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CiAKLSAgICBub2RlID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOwotICAgIGlmICghbm9kZSkKKyAgICBpZiAoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KSB7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbm9kZSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CisgICAgfQorICAgIGlmICghbm9kZSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICB0aGlzID0gKFB5T2JqZWN0Kikgc2VsZi0+dGhpczsKKyAgICB0aGlzID0gc2VsZi0+dGhpczsKIAogICAgIGlmICh0aGlzICE9IFB5X05vbmUpIHsKLSAgICAgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoKEVsZW1lbnRPYmplY3QqKSB0aGlzLCBub2RlKSA8IDApCisgICAgICAgIGlmICh0cmVlYnVpbGRlcl9hZGRfc3ViZWxlbWVudCh0aGlzLCBub2RlKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChzZWxmLT5yb290KSB7CkBAIC0xNzYxLDE5ICsyNDE3LDE3IEBACiAKICAgICBQeV9ERUNSRUYodGhpcyk7CiAgICAgUHlfSU5DUkVGKG5vZGUpOwotICAgIHNlbGYtPnRoaXMgPSAoRWxlbWVudE9iamVjdCopIG5vZGU7CisgICAgc2VsZi0+dGhpcyA9IG5vZGU7CiAKICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CiAgICAgUHlfSU5DUkVGKG5vZGUpOwotICAgIHNlbGYtPmxhc3QgPSAoRWxlbWVudE9iamVjdCopIG5vZGU7CisgICAgc2VsZi0+bGFzdCA9IG5vZGU7CiAKICAgICBpZiAoc2VsZi0+c3RhcnRfZXZlbnRfb2JqKSB7CiAgICAgICAgIFB5T2JqZWN0KiByZXM7CiAgICAgICAgIFB5T2JqZWN0KiBhY3Rpb24gPSBzZWxmLT5zdGFydF9ldmVudF9vYmo7Ci0gICAgICAgIHJlcyA9IFB5VHVwbGVfTmV3KDIpOworICAgICAgICByZXMgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKICAgICAgICAgaWYgKHJlcykgewotICAgICAgICAgICAgUHlfSU5DUkVGKGFjdGlvbik7IFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCAoUHlPYmplY3QqKSBhY3Rpb24pOwotICAgICAgICAgICAgUHlfSU5DUkVGKG5vZGUpOyAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAxLCAoUHlPYmplY3QqKSBub2RlKTsKICAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTc5MSw3ICsyNDQ1LDcgQEAKIHRyZWVidWlsZGVyX2hhbmRsZV9kYXRhKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogZGF0YSkKIHsKICAgICBpZiAoIXNlbGYtPmRhdGEpIHsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gKEVsZW1lbnRPYmplY3QqKSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIGlnbm9yZSBjYWxscyB0byBkYXRhIGJlZm9yZSB0aGUgZmlyc3QgY2FsbCB0byBzdGFydCAqLwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgICAgIH0KQEAgLTE4MDEsNiArMjQ1NSw3IEBACiAgICAgICAgIC8qIG1vcmUgdGhhbiBvbmUgaXRlbTsgdXNlIGEgbGlzdCB0byBjb2xsZWN0IGl0ZW1zICovCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkgJiYgUHlfUkVGQ05UKHNlbGYtPmRhdGEpID09IDEgJiYKICAgICAgICAgICAgIFB5Qnl0ZXNfQ2hlY2tFeGFjdChkYXRhKSAmJiBQeUJ5dGVzX0dFVF9TSVpFKGRhdGEpID09IDEpIHsKKyAgICAgICAgICAgIC8qIFhYWCB0aGlzIGNvZGUgcGF0aCB1bnVzZWQgaW4gUHl0aG9uIDM/ICovCiAgICAgICAgICAgICAvKiBleHBhdCBvZnRlbiBnZW5lcmF0ZXMgc2luZ2xlIGNoYXJhY3RlciBkYXRhIHNlY3Rpb25zOyBoYW5kbGUKICAgICAgICAgICAgICAgIHRoZSBtb3N0IGNvbW1vbiBjYXNlIGJ5IHJlc2l6aW5nIHRoZSBleGlzdGluZyBzdHJpbmcuLi4gKi8KICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+ZGF0YSk7CkBAIC0xODMwLDE1ICsyNDg1LDExIEBACiAKICAgICBpZiAoc2VsZi0+ZGF0YSkgewogICAgICAgICBpZiAoc2VsZi0+dGhpcyA9PSBzZWxmLT5sYXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGV4dCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGV4dCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmICh0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0KHNlbGYtPmxhc3QsIHNlbGYtPmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPmxhc3QtPnRhaWwpKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3QtPnRhaWwgPSBKT0lOX1NFVCgKLSAgICAgICAgICAgICAgICBzZWxmLT5kYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKQotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAodHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGFpbChzZWxmLT5sYXN0LCBzZWxmLT5kYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CkBAIC0xODU4LDE3ICsyNTA5LDE1IEBACiAKICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CiAKLSAgICBzZWxmLT5sYXN0ID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmLT50aGlzOwotICAgIHNlbGYtPnRoaXMgPSAoRWxlbWVudE9iamVjdCopIGl0ZW07CisgICAgc2VsZi0+bGFzdCA9IHNlbGYtPnRoaXM7CisgICAgc2VsZi0+dGhpcyA9IGl0ZW07CiAKICAgICBpZiAoc2VsZi0+ZW5kX2V2ZW50X29iaikgewogICAgICAgICBQeU9iamVjdCogcmVzOwogICAgICAgICBQeU9iamVjdCogYWN0aW9uID0gc2VsZi0+ZW5kX2V2ZW50X29iajsKICAgICAgICAgUHlPYmplY3QqIG5vZGUgPSAoUHlPYmplY3QqKSBzZWxmLT5sYXN0OwotICAgICAgICByZXMgPSBQeVR1cGxlX05ldygyKTsKKyAgICAgICAgcmVzID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CiAgICAgICAgIGlmIChyZXMpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhY3Rpb24pOyBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMCwgKFB5T2JqZWN0KikgYWN0aW9uKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihub2RlKTsgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgKFB5T2JqZWN0Kikgbm9kZSk7CiAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHNlbGYtPmV2ZW50cywgcmVzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICB9IGVsc2UKQEAgLTE5MTQsOCArMjU2MywxMiBAQAogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgcGFyY2VsKTsKICAgICAgICAgUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcyk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgIH0gZWxzZQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfREVDUkVGKGFjdGlvbik7CisgICAgICAgIFB5X0RFQ1JFRihwYXJjZWwpOwogICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yICovCisgICAgfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTk3Nyw1NSArMjYzMCw1NCBAQAogICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoc2VsZiwgdGFnLCBhdHRyaWIpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcl94bWwoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBlbmNvZGluZzsKLSAgICBQeU9iamVjdCogc3RhbmRhbG9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnhtbCIsICZlbmNvZGluZywgJnN0YW5kYWxvbmUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfeG1sKHNlbGYsIGVuY29kaW5nLCBzdGFuZGFsb25lKTsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKICAgICB7ImRhdGEiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2RhdGEsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfc3RhcnQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2VuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InhtbCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfeG1sLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2Nsb3NlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBUcmVlQnVpbGRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJUcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5UcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgdHJlZWJ1aWxkZXJfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsIC8qIHRwX21lbWJlcnMgKi8KKyAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXRyZWVidWlsZGVyX2djX3RyYXZlcnNlLCAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KXRyZWVidWlsZGVyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHRyZWVidWlsZGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKXRyZWVidWlsZGVyX2luaXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgdHJlZWJ1aWxkZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQEAgLTIwMzQsNDAgKzI2ODYsMzkgQEAKICNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKIAogI2luY2x1ZGUgImV4cGF0LmgiCi0KLSNpZiBkZWZpbmVkKFVTRV9QWUVYUEFUX0NBUEkpCiAjaW5jbHVkZSAicHlleHBhdC5oIgotc3RhdGljIHN0cnVjdCBQeUV4cGF0X0NBUEkqIGV4cGF0X2NhcGk7CitzdGF0aWMgc3RydWN0IFB5RXhwYXRfQ0FQSSAqZXhwYXRfY2FwaTsKICNkZWZpbmUgRVhQQVQoZnVuYykgKGV4cGF0X2NhcGktPmZ1bmMpCi0jZWxzZQotI2RlZmluZSBFWFBBVChmdW5jKSAoWE1MXyMjZnVuYykKLSNlbmRpZgorCitzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBFeHBhdE1lbW9yeUhhbmRsZXIgPSB7CisgICAgUHlPYmplY3RfTWFsbG9jLCBQeU9iamVjdF9SZWFsbG9jLCBQeU9iamVjdF9GcmVlfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIAogICAgIFhNTF9QYXJzZXIgcGFyc2VyOwogCi0gICAgUHlPYmplY3QqIHRhcmdldDsKLSAgICBQeU9iamVjdCogZW50aXR5OworICAgIFB5T2JqZWN0ICp0YXJnZXQ7CisgICAgUHlPYmplY3QgKmVudGl0eTsKIAotICAgIFB5T2JqZWN0KiBuYW1lczsKKyAgICBQeU9iamVjdCAqbmFtZXM7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX3htbDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3N0YXJ0OworICAgIFB5T2JqZWN0ICpoYW5kbGVfZGF0YTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2VuZDsKIAotICAgIFB5T2JqZWN0KiBoYW5kbGVfc3RhcnQ7Ci0gICAgUHlPYmplY3QqIGhhbmRsZV9kYXRhOwotICAgIFB5T2JqZWN0KiBoYW5kbGVfZW5kOworICAgIFB5T2JqZWN0ICpoYW5kbGVfY29tbWVudDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3BpOworICAgIFB5T2JqZWN0ICpoYW5kbGVfZG9jdHlwZTsKIAotICAgIFB5T2JqZWN0KiBoYW5kbGVfY29tbWVudDsKLSAgICBQeU9iamVjdCogaGFuZGxlX3BpOwotCi0gICAgUHlPYmplY3QqIGhhbmRsZV9jbG9zZTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2Nsb3NlOwogCiB9IFhNTFBhcnNlck9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZTsKIAorI2RlZmluZSBYTUxQYXJzZXJfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZYTUxQYXJzZXJfVHlwZSkKKwogLyogaGVscGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCkBAIC0yMDc2LDcgKzI3MjcsNyBAQAogICAgIC8qIGNvbnZlcnQgYSBVVEYtOCB0YWcvYXR0cmlidXRlIG5hbWUgZnJvbSB0aGUgZXhwYXQgcGFyc2VyCiAgICAgICAgdG8gYSB1bml2ZXJzYWwgbmFtZSBzdHJpbmcgKi8KIAotICAgIGludCBzaXplID0gc3RybGVuKHN0cmluZyk7CisgICAgUHlfc3NpemVfdCBzaXplID0gKFB5X3NzaXplX3QpIHN0cmxlbihzdHJpbmcpOwogICAgIFB5T2JqZWN0KiBrZXk7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogCkBAIC0yMDk1LDcgKzI3NDYsNyBAQAogCiAgICAgICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgICAgIGNoYXIqIHA7Ci0gICAgICAgIGludCBpOworICAgICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICAgICAgLyogbG9vayBmb3IgbmFtZXNwYWNlIHNlcGFyYXRvciAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQpAQCAtMjExMyw3ICsyNzY0LDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgdGFnID0ga2V5OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8qIGRlY29kZSB1bml2ZXJzYWwgbmFtZSAqLwogICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcodGFnKTsKICAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChwLCBzaXplLCAic3RyaWN0Iik7CkBAIC0yMTM1LDIwICsyNzg2LDM5IEBACiAgICAgcmV0dXJuIHZhbHVlOwogfQogCisvKiBTZXQgdGhlIFBhcnNlRXJyb3IgZXhjZXB0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCisgKiBJZiBtZXNzYWdlIGlzIG5vdCBOVUxMLCBpdCdzIHVzZWQgYXMgdGhlIGVycm9yIHN0cmluZy4gT3RoZXJ3aXNlLCB0aGUKKyAqIG1lc3NhZ2Ugc3RyaW5nIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgZ2l2ZW4gZXJyb3JfY29kZS4KKyovCiBzdGF0aWMgdm9pZAotZXhwYXRfc2V0X2Vycm9yKGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGludCBsaW5lLCBpbnQgY29sdW1uKQorZXhwYXRfc2V0X2Vycm9yKGVudW0gWE1MX0Vycm9yIGVycm9yX2NvZGUsIGludCBsaW5lLCBpbnQgY29sdW1uLCBjaGFyICptZXNzYWdlKQogewotICAgIFB5T2JqZWN0ICplcnJvcjsKLSAgICBQeU9iamVjdCAqcG9zaXRpb247Ci0gICAgY2hhciBidWZmZXJbMjU2XTsKKyAgICBQeU9iamVjdCAqZXJybXNnLCAqZXJyb3IsICpwb3NpdGlvbiwgKmNvZGU7CiAKLSAgICBzcHJpbnRmKGJ1ZmZlciwgIiUuMTAwczogbGluZSAlZCwgY29sdW1uICVkIiwgbWVzc2FnZSwgbGluZSwgY29sdW1uKTsKKyAgICBlcnJtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXM6IGxpbmUgJWQsIGNvbHVtbiAlZCIsCisgICAgICAgICAgICAgICAgbWVzc2FnZSA/IG1lc3NhZ2UgOiBFWFBBVChFcnJvclN0cmluZykoZXJyb3JfY29kZSksCisgICAgICAgICAgICAgICAgbGluZSwgY29sdW1uKTsKKyAgICBpZiAoZXJybXNnID09IE5VTEwpCisgICAgICAgIHJldHVybjsKIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqLCAicyIsIGJ1ZmZlcik7CisgICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmosICJPIiwgZXJybXNnKTsKKyAgICBQeV9ERUNSRUYoZXJybXNnKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICAvKiBhZGQgcG9zaXRpb24gYXR0cmlidXRlICovCisgICAgLyogQWRkIGNvZGUgYW5kIHBvc2l0aW9uIGF0dHJpYnV0ZXMgKi8KKyAgICBjb2RlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWVycm9yX2NvZGUpOworICAgIGlmICghY29kZSkgeworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGVycm9yLCAiY29kZSIsIGNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CisgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQeV9ERUNSRUYoY29kZSk7CisKICAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihpaSkiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKQEAgLTIyMDAsOSArMjg3MCwxMCBAQAogICAgICAgICBjaGFyIG1lc3NhZ2VbMTI4XSA9ICJ1bmRlZmluZWQgZW50aXR5ICI7CiAgICAgICAgIHN0cm5jYXQobWVzc2FnZSwgZGF0YV9pbiwgZGF0YV9sZW4gPCAxMDA/ZGF0YV9sZW46MTAwKTsKICAgICAgICAgZXhwYXRfc2V0X2Vycm9yKAotICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZLAogICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JMaW5lTnVtYmVyKShzZWxmLT5wYXJzZXIpLAotICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlcikKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpLAorICAgICAgICAgICAgbWVzc2FnZQogICAgICAgICAgICAgKTsKICAgICB9CiAKQEAgLTIyNDcsMjEgKzI5MTgsMTggQEAKICAgICAgICAgICAgIGF0dHJpYl9pbiArPSAyOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOworICAgICAgICAvKiBQYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkgb24gKi8KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKQorICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgLyogc2hvcnRjdXQgKi8KICAgICAgICAgcmVzID0gdHJlZWJ1aWxkZXJfaGFuZGxlX3N0YXJ0KChUcmVlQnVpbGRlck9iamVjdCopIHNlbGYtPnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgYXR0cmliKTsKKyAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX3N0YXJ0KSB7Ci0gICAgICAgIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7Ci0gICAgICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICBpZiAoIWF0dHJpYikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9zdGFydCwgIk9PIiwgdGFnLCBhdHRyaWIpOwogICAgIH0gZWxzZQogICAgICAgICByZXMgPSBOVUxMOwpAQCAtMjM3Miw2ICszMDQwLDc4IEBACiB9CiAKIHN0YXRpYyB2b2lkCitleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpkb2N0eXBlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnN5c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpwdWJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2ludGVybmFsX3N1YnNldCkKK3sKKyAgICBQeU9iamVjdCAqc2VsZl9weW9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlPYmplY3QgKmRvY3R5cGVfbmFtZV9vYmosICpzeXNpZF9vYmosICpwdWJpZF9vYmo7CisgICAgUHlPYmplY3QgKnBhcnNlcl9kb2N0eXBlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGRvY3R5cGVfbmFtZV9vYmogPSBtYWtldW5pdmVyc2FsKHNlbGYsIGRvY3R5cGVfbmFtZSk7CisgICAgaWYgKCFkb2N0eXBlX25hbWVfb2JqKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3lzaWQpIHsKKyAgICAgICAgc3lzaWRfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBzeXNpZCk7CisgICAgICAgIGlmICghc3lzaWRfb2JqKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZG9jdHlwZV9uYW1lX29iaik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHN5c2lkX29iaiA9IFB5X05vbmU7CisgICAgfQorCisgICAgaWYgKHB1YmlkKSB7CisgICAgICAgIHB1YmlkX29iaiA9IG1ha2V1bml2ZXJzYWwoc2VsZiwgcHViaWQpOworICAgICAgICBpZiAoIXB1YmlkX29iaikgeworICAgICAgICAgICAgUHlfREVDUkVGKGRvY3R5cGVfbmFtZV9vYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHN5c2lkX29iaik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHB1YmlkX29iaiA9IFB5X05vbmU7CisgICAgfQorCisgICAgLyogSWYgdGhlIHRhcmdldCBoYXMgYSBoYW5kbGVyIGZvciBkb2N0eXBlLCBjYWxsIGl0LiAqLworICAgIGlmIChzZWxmLT5oYW5kbGVfZG9jdHlwZSkgeworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX2RvY3R5cGUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdHlwZV9uYW1lX29iaiwgcHViaWRfb2JqLCBzeXNpZF9vYmopOworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIC8qIE5vdyBzZWUgaWYgdGhlIHBhcnNlciBpdHNlbGYgaGFzIGEgZG9jdHlwZSBtZXRob2QuIElmIHllcyBhbmQgaXQncworICAgICAqIGEgc3ViY2xhc3MsIGNhbGwgaXQgYnV0IHdhcm4gYWJvdXQgZGVwcmVjYXRpb24uIElmIGl0J3Mgbm90IGEgc3ViY2xhc3MKKyAgICAgKiAoaS5lLiB2YW5pbGxhIFhNTFBhcnNlciksIGRvIG5vdGhpbmcuCisgICAgICovCisgICAgcGFyc2VyX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGZfcHlvYmosICJkb2N0eXBlIik7CisgICAgaWYgKHBhcnNlcl9kb2N0eXBlKSB7CisgICAgICAgIGlmICghWE1MUGFyc2VyX0NoZWNrRXhhY3Qoc2VsZl9weW9iaikpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1ldGhvZCBvZiBYTUxQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIERlZmluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRvY3R5cGUoKSBtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gY2xlYXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24ocGFyc2VyX2RvY3R5cGUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3R5cGVfbmFtZV9vYmosIHB1YmlkX29iaiwgc3lzaWRfb2JqKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgIH0KKyAgICB9CisKK2NsZWFyOgorICAgIFB5X1hERUNSRUYocGFyc2VyX2RvY3R5cGUpOworICAgIFB5X0RFQ1JFRihkb2N0eXBlX25hbWVfb2JqKTsKKyAgICBQeV9ERUNSRUYocHViaWRfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3lzaWRfb2JqKTsKK30KKworc3RhdGljIHZvaWQKIGV4cGF0X3BpX2hhbmRsZXIoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBjb25zdCBYTUxfQ2hhciogdGFyZ2V0X2luLAogICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciogZGF0YV9pbikKIHsKQEAgLTIzOTksMjkgKzMxMzksMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW5jb2RpbmcgKmluZm8pCiB7CiAgICAgUHlPYmplY3QqIHU7Ci0gICAgUHlfVU5JQ09ERSogcDsKICAgICB1bnNpZ25lZCBjaGFyIHNbMjU2XTsKICAgICBpbnQgaTsKKyAgICB2b2lkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBraW5kOwogCiAgICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZihYTUxfRW5jb2RpbmcpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgc1tpXSA9IGk7Ci0gICAgCisKICAgICB1ID0gUHlVbmljb2RlX0RlY29kZSgoY2hhciopIHMsIDI1NiwgbmFtZSwgInJlcGxhY2UiKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodSkpCisgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1KSAhPSAyNTYpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodSkgIT0gMjU2KSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgICAgfQogCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHUpOwotCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKLSAgICAgICAgaWYgKHBbaV0gIT0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpCi0gICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSBwW2ldOworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCAhPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKKyAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IGNoOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSAtMTsKICAgICB9CkBAIC0yNDMyLDE0NSArMzE3NiwxNTcgQEAKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcihQeU9iamVjdCogc2VsZl8sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCitzdGF0aWMgUHlPYmplY3QgKgoreG1scGFyc2VyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBYTUxQYXJzZXJPYmplY3QqIHNlbGY7Ci0gICAgLyogRklYTUU6IGRvZXMgdGhpcyBuZWVkIHRvIGJlIHN0YXRpYz8gKi8KLSAgICBzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBtZW1vcnlfaGFuZGxlcjsKLQotICAgIFB5T2JqZWN0KiB0YXJnZXQgPSBOVUxMOwotICAgIGNoYXIqIGVuY29kaW5nID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJ0YXJnZXQiLCAiZW5jb2RpbmciLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T3o6WE1MUGFyc2VyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXQsICZlbmNvZGluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQotICAgIGlmICghZXhwYXRfY2FwaSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsICJjYW5ub3QgbG9hZCBkaXNwYXRjaCB0YWJsZSBmcm9tIHB5ZXhwYXQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGYgPSAoWE1MUGFyc2VyT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgc2VsZi0+cGFyc2VyID0gTlVMTDsKKyAgICAgICAgc2VsZi0+dGFyZ2V0ID0gc2VsZi0+ZW50aXR5ID0gc2VsZi0+bmFtZXMgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBzZWxmLT5oYW5kbGVfZGF0YSA9IHNlbGYtPmhhbmRsZV9lbmQgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IHNlbGYtPmhhbmRsZV9waSA9IHNlbGYtPmhhbmRsZV9jbG9zZSA9IE5VTEw7CisgICAgICAgIHNlbGYtPmhhbmRsZV9kb2N0eXBlID0gTlVMTDsKICAgICB9Ci0jZW5kaWYKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKK30KIAotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoWE1MUGFyc2VyT2JqZWN0LCAmWE1MUGFyc2VyX1R5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIGludAoreG1scGFyc2VyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGZfeHAgPSAoWE1MUGFyc2VyT2JqZWN0ICopc2VsZjsKKyAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTCwgKmh0bWwgPSBOVUxMOworICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgMH07CiAKLSAgICBzZWxmLT5lbnRpdHkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFzZWxmLT5lbnRpdHkpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgIAotICAgIHNlbGYtPm5hbWVzID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZi0+bmFtZXMpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT3o6WE1MUGFyc2VyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBtZW1vcnlfaGFuZGxlci5tYWxsb2NfZmNuID0gUHlPYmplY3RfTWFsbG9jOwotICAgIG1lbW9yeV9oYW5kbGVyLnJlYWxsb2NfZmNuID0gUHlPYmplY3RfUmVhbGxvYzsKLSAgICBtZW1vcnlfaGFuZGxlci5mcmVlX2ZjbiA9IFB5T2JqZWN0X0ZyZWU7CisgICAgc2VsZl94cC0+ZW50aXR5ID0gUHlEaWN0X05ldygpOworICAgIGlmICghc2VsZl94cC0+ZW50aXR5KQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBzZWxmLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmbWVtb3J5X2hhbmRsZXIsICJ9Iik7Ci0gICAgaWYgKCFzZWxmLT5wYXJzZXIpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPm5hbWVzKTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICBzZWxmX3hwLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGZfeHAtPm5hbWVzKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmX3hwLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOworICAgIGlmICghc2VsZl94cC0+cGFyc2VyKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICAvKiBzZXR1cCB0YXJnZXQgaGFuZGxlcnMgKi8KLSAgICBpZiAoIXRhcmdldCkgewotICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoKTsKLSAgICAgICAgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGYtPnBhcnNlcik7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+bmFtZXMpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgUHlfSU5DUkVGKHRhcmdldCk7Ci0gICAgc2VsZi0+dGFyZ2V0ID0gdGFyZ2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygmVHJlZUJ1aWxkZXJfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5lbnRpdHkpOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOworICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZl94cC0+cGFyc2VyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZWxmX3hwLT50YXJnZXQgPSB0YXJnZXQ7CiAKLSAgICBzZWxmLT5oYW5kbGVfeG1sID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJ4bWwiKTsKLSAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7Ci0gICAgc2VsZi0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKLSAgICBzZWxmLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKLSAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOwotICAgIHNlbGYtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKLSAgICBzZWxmLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7CisgICAgc2VsZl94cC0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkb2N0eXBlIik7CiAKICAgICBQeUVycl9DbGVhcigpOwogCiAgICAgLyogY29uZmlndXJlIHBhcnNlciAqLwotICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmLT5wYXJzZXIsIHNlbGYpOworICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmX3hwLT5wYXJzZXIsIHNlbGZfeHApOwogICAgIEVYUEFUKFNldEVsZW1lbnRIYW5kbGVyKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfU3RhcnRFbGVtZW50SGFuZGxlcikgZXhwYXRfc3RhcnRfaGFuZGxlciwKICAgICAgICAgKFhNTF9FbmRFbGVtZW50SGFuZGxlcikgZXhwYXRfZW5kX2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXREZWZhdWx0SGFuZGxlckV4cGFuZCkoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX0RlZmF1bHRIYW5kbGVyKSBleHBhdF9kZWZhdWx0X2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXRDaGFyYWN0ZXJEYXRhSGFuZGxlcikoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyKSBleHBhdF9kYXRhX2hhbmRsZXIKICAgICAgICAgKTsKLSAgICBpZiAoc2VsZi0+aGFuZGxlX2NvbW1lbnQpCisgICAgaWYgKHNlbGZfeHAtPmhhbmRsZV9jb21tZW50KQogICAgICAgICBFWFBBVChTZXRDb21tZW50SGFuZGxlcikoCi0gICAgICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgICAgICAoWE1MX0NvbW1lbnRIYW5kbGVyKSBleHBhdF9jb21tZW50X2hhbmRsZXIKICAgICAgICAgICAgICk7Ci0gICAgaWYgKHNlbGYtPmhhbmRsZV9waSkKKyAgICBpZiAoc2VsZl94cC0+aGFuZGxlX3BpKQogICAgICAgICBFWFBBVChTZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikgZXhwYXRfcGlfaGFuZGxlcgogICAgICAgICAgICAgKTsKKyAgICBFWFBBVChTZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcikoCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgKFhNTF9TdGFydERvY3R5cGVEZWNsSGFuZGxlcikgZXhwYXRfc3RhcnRfZG9jdHlwZV9oYW5kbGVyCisgICAgICAgICk7CiAgICAgRVhQQVQoU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlcikoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX1Vua25vd25FbmNvZGluZ0hhbmRsZXIpIGV4cGF0X3Vua25vd25fZW5jb2RpbmdfaGFuZGxlciwgTlVMTAogICAgICAgICApOwogCi0gICAgQUxMT0Moc2l6ZW9mKFhNTFBhcnNlck9iamVjdCksICJjcmVhdGUgZXhwYXRwYXJzZXIiKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOworc3RhdGljIGludAoreG1scGFyc2VyX2djX3RyYXZlcnNlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfcGkpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9jb21tZW50KTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfZW5kKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfZGF0YSk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX3N0YXJ0KTsKKworICAgIFB5X1ZJU0lUKHNlbGYtPnRhcmdldCk7CisgICAgUHlfVklTSVQoc2VsZi0+ZW50aXR5KTsKKyAgICBQeV9WSVNJVChzZWxmLT5uYW1lcyk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoreG1scGFyc2VyX2djX2NsZWFyKFhNTFBhcnNlck9iamVjdCAqc2VsZikKK3sKKyAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOworCisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfcGkpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9jb21tZW50KTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfZW5kKTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfZGF0YSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX3N0YXJ0KTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfZG9jdHlwZSk7CisKKyAgICBQeV9DTEVBUihzZWxmLT50YXJnZXQpOworICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZXMpOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCiB4bWxwYXJzZXJfZGVhbGxvYyhYTUxQYXJzZXJPYmplY3QqIHNlbGYpCiB7Ci0gICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKLQotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9waSk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfY29tbWVudCk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfZW5kKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9kYXRhKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9zdGFydCk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfeG1sKTsKLQotICAgIFB5X0RFQ1JFRihzZWxmLT50YXJnZXQpOwotICAgIFB5X0RFQ1JFRihzZWxmLT5lbnRpdHkpOwotICAgIFB5X0RFQ1JFRihzZWxmLT5uYW1lcyk7Ci0KLSAgICBSRUxFQVNFKHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAiZGVzdHJveSBleHBhdHBhcnNlciIpOwotCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgeG1scGFyc2VyX2djX2NsZWFyKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBtZXRob2RzIChpbiBhbHBoYWJldGljYWwgb3JkZXIpICovCi0KIExPQ0FMKFB5T2JqZWN0KikKIGV4cGF0X3BhcnNlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgY2hhciogZGF0YSwgaW50IGRhdGFfbGVuLCBpbnQgZmluYWwpCiB7CkBAIC0yNTgzLDkgKzMzMzksMTAgQEAKIAogICAgIGlmICghb2spIHsKICAgICAgICAgZXhwYXRfc2V0X2Vycm9yKAotICAgICAgICAgICAgRVhQQVQoRXJyb3JTdHJpbmcpKEVYUEFUKEdldEVycm9yQ29kZSkoc2VsZi0+cGFyc2VyKSksCisgICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvZGUpKHNlbGYtPnBhcnNlciksCiAgICAgICAgICAgICBFWFBBVChHZXRFcnJvckxpbmVOdW1iZXIpKHNlbGYtPnBhcnNlciksCi0gICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKQorICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlciksCisgICAgICAgICAgICBOVUxMCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjM2LDYgKzMzOTMsNyBAQAogCiAgICAgUHlPYmplY3QqIHJlYWRlcjsKICAgICBQeU9iamVjdCogYnVmZmVyOworICAgIFB5T2JqZWN0KiB0ZW1wOwogICAgIFB5T2JqZWN0KiByZXM7CiAKICAgICBQeU9iamVjdCogZmlsZW9iajsKQEAgLTI2NDUsNyArMzQwMyw3IEBACiAgICAgcmVhZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlb2JqLCAicmVhZCIpOwogICAgIGlmICghcmVhZGVyKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKKwogICAgIC8qIHJlYWQgZnJvbSBvcGVuIGZpbGUgb2JqZWN0ICovCiAgICAgZm9yICg7OykgewogCkBAIC0yNjU3LDcgKzM0MTUsMjIgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYnVmZmVyKSB8fCBQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoYnVmZmVyKSkgeworICAgICAgICAgICAgLyogQSB1bmljb2RlIG9iamVjdCBpcyBlbmNvZGVkIGludG8gYnl0ZXMgdXNpbmcgVVRGLTggKi8KKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoYnVmZmVyKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZW1wID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhidWZmZXIsICJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIik7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGVtcCkgeworICAgICAgICAgICAgICAgIC8qIFByb3BhZ2F0ZSBleGNlcHRpb24gZnJvbSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlYWRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIgPSB0ZW1wOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYnVmZmVyKSB8fCBQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjY4OSw3ICszNDYyLDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3htbHBhcnNlcl9kb2N0eXBlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3htbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogCkBAIC0yNzA1LDcgKzM0ODQsNyBAQAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJldmVudCBoYW5kbGluZyBvbmx5IHN1cHBvcnRlZCBmb3IgY0VsZW1lbnRUcmVlLlRyZWVidWlsZGVyICIKKyAgICAgICAgICAgICJldmVudCBoYW5kbGluZyBvbmx5IHN1cHBvcnRlZCBmb3IgRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIgIgogICAgICAgICAgICAgInRhcmdldHMiCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3MTgsMTAgKzM0OTcsMTAgQEAKICAgICB0YXJnZXQtPmV2ZW50cyA9IGV2ZW50czsKIAogICAgIC8qIGNsZWFyIG91dCBleGlzdGluZyBldmVudHMgKi8KLSAgICBQeV9YREVDUkVGKHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqKTsgdGFyZ2V0LT5zdGFydF9ldmVudF9vYmogPSBOVUxMOwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5lbmRfZXZlbnRfb2JqKTsgdGFyZ2V0LT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKLSAgICBQeV9YREVDUkVGKHRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKTsgdGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmogPSBOVUxMOwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqKTsgdGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKKyAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIodGFyZ2V0LT5lbmRfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIodGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqKTsKIAogICAgIGlmIChldmVudF9zZXQgPT0gUHlfTm9uZSkgewogICAgICAgICAvKiBkZWZhdWx0IGlzICJlbmQiIG9ubHkgKi8KQEAgLTI3OTMsMTAgKzM1NzIsMTEgQEAKICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJfcGFyc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9wYXJzZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9zZXRldmVudHMiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9zZXRldmVudHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBQeU9iamVjdCogIAorc3RhdGljIFB5T2JqZWN0KgogeG1scGFyc2VyX2dldGF0dHJvKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkgewpAQCAtMjgyMiwzMyArMzYwMiw0NCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFhNTFBhcnNlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJYTUxQYXJzZXIiLCBzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgMCwKKyAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlhNTFBhcnNlciIsIHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil4bWxwYXJzZXJfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsIC8qIHRwX3ByaW50ICovCi0gICAgMCwgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAvKiB0cF9oYXNoICovCi0gICAgMCwgLyogdHBfY2FsbCAqLwotICAgIDAsIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpeG1scGFyc2VyX2dldGF0dHJvLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgeG1scGFyc2VyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpeG1scGFyc2VyX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpeG1scGFyc2VyX2dldGF0dHJvLCAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl4bWxwYXJzZXJfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl4bWxwYXJzZXJfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB4bWxwYXJzZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyl4bWxwYXJzZXJfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHhtbHBhcnNlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKICNlbmRpZgpAQCAtMjg1NywxMyArMzY0OCw3IEBACiAvKiBweXRob24gbW9kdWxlIGludGVyZmFjZSAqLwogCiBzdGF0aWMgUHlNZXRob2REZWYgX2Z1bmN0aW9uc1tdID0gewotICAgIHsiRWxlbWVudCIsIChQeUNGdW5jdGlvbikgZWxlbWVudCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiU3ViRWxlbWVudCIsIChQeUNGdW5jdGlvbikgc3ViZWxlbWVudCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiVHJlZUJ1aWxkZXIiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyLCBNRVRIX1ZBUkFSR1N9LAotI2lmIGRlZmluZWQoVVNFX0VYUEFUKQotICAgIHsiWE1MUGFyc2VyIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlhNTFRyZWVCdWlsZGVyIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSNlbmRpZgorICAgIHsiU3ViRWxlbWVudCIsIChQeUNGdW5jdGlvbikgc3ViZWxlbWVudCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0yODgzLDkgKzM2NjgsNyBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fZWxlbWVudHRyZWUodm9pZCkKIHsKLSAgICBQeU9iamVjdCogbTsKLSAgICBQeU9iamVjdCogZzsKLSAgICBjaGFyKiBib290c3RyYXA7CisgICAgUHlPYmplY3QgKm0sICp0ZW1wOwogCiAgICAgLyogSW5pdGlhbGl6ZSBvYmplY3QgdHlwZXMgKi8KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZUcmVlQnVpbGRlcl9UeXBlKSA8IDApCkBAIC0yOTAxLDIxMiArMzY4NCwxNSBAQAogICAgIGlmICghbSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBUaGUgY29kZSBiZWxvdyByZXF1aXJlcyB0aGF0IHRoZSBtb2R1bGUgZ2V0cyBhbHJlYWR5IGFkZGVkCi0gICAgICAgdG8gc3lzLm1vZHVsZXMuICovCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIF9lbGVtZW50dHJlZW1vZHVsZS5tX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbSk7CisgICAgaWYgKCEodGVtcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiY29weSIpKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAiZGVlcGNvcHkiKTsKKyAgICBQeV9YREVDUkVGKHRlbXApOwogCi0gICAgLyogcHl0aG9uIGdsdWUgY29kZSAqLwotCi0gICAgZyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIWcpCisgICAgaWYgKCEoZWxlbWVudHBhdGhfb2JqID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ4bWwuZXRyZWUuRWxlbWVudFBhdGgiKSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZywgIl9fYnVpbHRpbnNfXyIsIFB5RXZhbF9HZXRCdWlsdGlucygpKTsKLQotICAgIGJvb3RzdHJhcCA9ICgKLQotICAgICAgICAiZnJvbSBjb3B5IGltcG9ydCBjb3B5LCBkZWVwY29weVxuIgotCi0gICAgICAgICJ0cnk6XG4iCi0gICAgICAgICIgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZVxuIgotICAgICAgICAiZXhjZXB0IEltcG9ydEVycm9yOlxuIgotICAgICAgICAiICBpbXBvcnQgRWxlbWVudFRyZWVcbiIKLSAgICAgICAgIkVUID0gRWxlbWVudFRyZWVcbiIKLSAgICAgICAgImRlbCBFbGVtZW50VHJlZVxuIgotCi0gICAgICAgICJpbXBvcnQgX2VsZW1lbnR0cmVlIGFzIGNFbGVtZW50VHJlZVxuIgotCi0gICAgICAgICJ0cnk6XG4iIC8qIGNoZWNrIGlmIGNvcHkgd29ya3MgYXMgaXMgKi8KLSAgICAgICAgIiAgY29weShjRWxlbWVudFRyZWUuRWxlbWVudCgneCcpKVxuIgotICAgICAgICAiZXhjZXB0OlxuIgotICAgICAgICAiICBkZWYgY29weWVsZW1lbnQoZWxlbSk6XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGVsZW1cbiIKLQotICAgICAgICAiY2xhc3MgQ29tbWVudFByb3h5OlxuIgotICAgICAgICAiIGRlZiBfX2NhbGxfXyhzZWxmLCB0ZXh0PU5vbmUpOlxuIgotICAgICAgICAiICBlbGVtZW50ID0gY0VsZW1lbnRUcmVlLkVsZW1lbnQoRVQuQ29tbWVudClcbiIKLSAgICAgICAgIiAgZWxlbWVudC50ZXh0ID0gdGV4dFxuIgotICAgICAgICAiICByZXR1cm4gZWxlbWVudFxuIgotICAgICAgICAiIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOlxuIgotICAgICAgICAiICByZXR1cm4gRVQuQ29tbWVudCA9PSBvdGhlclxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLkNvbW1lbnQgPSBDb21tZW50UHJveHkoKVxuIgotCi0gICAgICAgICJjbGFzcyBFbGVtZW50VHJlZShFVC5FbGVtZW50VHJlZSk6XG4iIC8qIHB1YmxpYyAqLwotICAgICAgICAiICBkZWYgcGFyc2Uoc2VsZiwgc291cmNlLCBwYXJzZXI9Tm9uZSk6XG4iCi0gICAgICAgICIgICAgY2xvc2Vfc291cmNlID0gRmFsc2VcbiIKLSAgICAgICAgIiAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICdyZWFkJyk6XG4iCi0gICAgICAgICIgICAgICBzb3VyY2UgPSBvcGVuKHNvdXJjZSwgJ3JiJylcbiIKLSAgICAgICAgIiAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWVcbiIKLSAgICAgICAgIiAgICB0cnk6XG4iCi0gICAgICAgICIgICAgICBpZiBwYXJzZXIgaXMgbm90IE5vbmU6XG4iCi0gICAgICAgICIgICAgICAgIHdoaWxlIDE6XG4iCi0gICAgICAgICIgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDY1NTM2KVxuIgotICAgICAgICAiICAgICAgICAgIGlmIG5vdCBkYXRhOlxuIgotICAgICAgICAiICAgICAgICAgICAgYnJlYWtcbiIKLSAgICAgICAgIiAgICAgICAgICBwYXJzZXIuZmVlZChkYXRhKVxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9yb290ID0gcGFyc2VyLmNsb3NlKClcbiIKLSAgICAgICAgIiAgICAgIGVsc2U6XG4iIAotICAgICAgICAiICAgICAgICBwYXJzZXIgPSBjRWxlbWVudFRyZWUuWE1MUGFyc2VyKClcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5fcGFyc2Uoc291cmNlKVxuIgotICAgICAgICAiICAgICAgcmV0dXJuIHNlbGYuX3Jvb3RcbiIKLSAgICAgICAgIiAgICBmaW5hbGx5OlxuIgotICAgICAgICAiICAgICAgaWYgY2xvc2Vfc291cmNlOlxuIgotICAgICAgICAiICAgICAgICBzb3VyY2UuY2xvc2UoKVxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLkVsZW1lbnRUcmVlID0gRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAiZGVmIGl0ZXIobm9kZSwgdGFnPU5vbmUpOlxuIiAvKiBoZWxwZXIgKi8KLSAgICAgICAgIiAgaWYgdGFnID09ICcqJzpcbiIKLSAgICAgICAgIiAgICB0YWcgPSBOb25lXG4iCi0gICAgICAgICIgIGlmIHRhZyBpcyBOb25lIG9yIG5vZGUudGFnID09IHRhZzpcbiIKLSAgICAgICAgIiAgICB5aWVsZCBub2RlXG4iCi0gICAgICAgICIgIGZvciBub2RlIGluIG5vZGU6XG4iCi0gICAgICAgICIgICAgZm9yIG5vZGUgaW4gaXRlcihub2RlLCB0YWcpOlxuIgotICAgICAgICAiICAgICAgeWllbGQgbm9kZVxuIgotCi0gICAgICAgICJkZWYgaXRlcnRleHQobm9kZSk6XG4iIC8qIGhlbHBlciAqLwotICAgICAgICAiICBpZiBub2RlLnRleHQ6XG4iCi0gICAgICAgICIgICAgeWllbGQgbm9kZS50ZXh0XG4iCi0gICAgICAgICIgIGZvciBlIGluIG5vZGU6XG4iCi0gICAgICAgICIgICAgZm9yIHMgaW4gZS5pdGVydGV4dCgpOlxuIgotICAgICAgICAiICAgICAgeWllbGQgc1xuIgotICAgICAgICAiICAgIGlmIGUudGFpbDpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIGUudGFpbFxuIgotCi0gICAgICAgICJkZWYgcGFyc2Uoc291cmNlLCBwYXJzZXI9Tm9uZSk6XG4iIC8qIHB1YmxpYyAqLwotICAgICAgICAiICB0cmVlID0gRWxlbWVudFRyZWUoKVxuIgotICAgICAgICAiICB0cmVlLnBhcnNlKHNvdXJjZSwgcGFyc2VyKVxuIgotICAgICAgICAiICByZXR1cm4gdHJlZVxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnBhcnNlID0gcGFyc2VcbiIKLQotICAgICAgICAiY2xhc3MgaXRlcnBhcnNlOlxuIgotICAgICAgICAiIHJvb3QgPSBOb25lXG4iCi0gICAgICAgICIgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIGV2ZW50cz1Ob25lKTpcbiIKLSAgICAgICAgIiAgc2VsZi5fY2xvc2VfZmlsZSA9IEZhbHNlXG4iCi0gICAgICAgICIgIGlmIG5vdCBoYXNhdHRyKGZpbGUsICdyZWFkJyk6XG4iCi0gICAgICAgICIgICAgZmlsZSA9IG9wZW4oZmlsZSwgJ3JiJylcbiIKLSAgICAgICAgIiAgICBzZWxmLl9jbG9zZV9maWxlID0gVHJ1ZVxuIgotICAgICAgICAiICBzZWxmLl9maWxlID0gZmlsZVxuIgotICAgICAgICAiICBzZWxmLl9ldmVudHMgPSBbXVxuIgotICAgICAgICAiICBzZWxmLl9pbmRleCA9IDBcbiIKLSAgICAgICAgIiAgc2VsZi5fZXJyb3IgPSBOb25lXG4iCi0gICAgICAgICIgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QgPSBOb25lXG4iCi0gICAgICAgICIgIGIgPSBjRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIoKVxuIgotICAgICAgICAiICBzZWxmLl9wYXJzZXIgPSBjRWxlbWVudFRyZWUuWE1MUGFyc2VyKGIpXG4iCi0gICAgICAgICIgIHNlbGYuX3BhcnNlci5fc2V0ZXZlbnRzKHNlbGYuX2V2ZW50cywgZXZlbnRzKVxuIgotICAgICAgICAiIGRlZiBfX25leHRfXyhzZWxmKTpcbiIKLSAgICAgICAgIiAgd2hpbGUgMTpcbiIKLSAgICAgICAgIiAgICB0cnk6XG4iCi0gICAgICAgICIgICAgICBpdGVtID0gc2VsZi5fZXZlbnRzW3NlbGYuX2luZGV4XVxuIgotICAgICAgICAiICAgICAgc2VsZi5faW5kZXggKz0gMVxuIgotICAgICAgICAiICAgICAgcmV0dXJuIGl0ZW1cbiIKLSAgICAgICAgIiAgICBleGNlcHQgSW5kZXhFcnJvcjpcbiIKLSAgICAgICAgIiAgICAgIHBhc3NcbiIKLSAgICAgICAgIiAgICBpZiBzZWxmLl9lcnJvcjpcbiIKLSAgICAgICAgIiAgICAgIGUgPSBzZWxmLl9lcnJvclxuIgotICAgICAgICAiICAgICAgc2VsZi5fZXJyb3IgPSBOb25lXG4iCi0gICAgICAgICIgICAgICByYWlzZSBlXG4iCi0gICAgICAgICIgICAgaWYgc2VsZi5fcGFyc2VyIGlzIE5vbmU6XG4iCi0gICAgICAgICIgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290XG4iCi0gICAgICAgICIgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOlxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9maWxlLmNsb3NlKClcbiIKLSAgICAgICAgIiAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb25cbiIKLSAgICAgICAgIiAgICAjIGxvYWQgZXZlbnQgYnVmZmVyXG4iCi0gICAgICAgICIgICAgZGVsIHNlbGYuX2V2ZW50c1s6XVxuIgotICAgICAgICAiICAgIHNlbGYuX2luZGV4ID0gMFxuIgotICAgICAgICAiICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYzODQpXG4iCi0gICAgICAgICIgICAgaWYgZGF0YTpcbiIKLSAgICAgICAgIiAgICAgIHRyeTpcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fcGFyc2VyLmZlZWQoZGF0YSlcbiIKLSAgICAgICAgIiAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBleGM6XG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX2Vycm9yID0gZXhjXG4iCi0gICAgICAgICIgICAgZWxzZTpcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX3Jvb3QgPSBzZWxmLl9wYXJzZXIuY2xvc2UoKVxuIgotICAgICAgICAiICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZVxuIgotICAgICAgICAiIGRlZiBfX2l0ZXJfXyhzZWxmKTpcbiIKLSAgICAgICAgIiAgcmV0dXJuIHNlbGZcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5pdGVycGFyc2UgPSBpdGVycGFyc2VcbiIKLQotICAgICAgICAiY2xhc3MgUElQcm94eTpcbiIKLSAgICAgICAgIiBkZWYgX19jYWxsX18oc2VsZiwgdGFyZ2V0LCB0ZXh0PU5vbmUpOlxuIgotICAgICAgICAiICBlbGVtZW50ID0gY0VsZW1lbnRUcmVlLkVsZW1lbnQoRVQuUEkpXG4iCi0gICAgICAgICIgIGVsZW1lbnQudGV4dCA9IHRhcmdldFxuIgotICAgICAgICAiICBpZiB0ZXh0OlxuIgotICAgICAgICAiICAgIGVsZW1lbnQudGV4dCA9IGVsZW1lbnQudGV4dCArICcgJyArIHRleHRcbiIKLSAgICAgICAgIiAgcmV0dXJuIGVsZW1lbnRcbiIKLSAgICAgICAgIiBkZWYgX19lcV9fKHNlbGYsIG90aGVyKTpcbiIKLSAgICAgICAgIiAgcmV0dXJuIEVULlBJID09IG90aGVyXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuUEkgPSBjRWxlbWVudFRyZWUuUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gUElQcm94eSgpXG4iCi0KLSAgICAgICAgImRlZiBYTUwodGV4dCk6XG4iIC8qIHB1YmxpYyAqLwotICAgICAgICAiICBwYXJzZXIgPSBjRWxlbWVudFRyZWUuWE1MUGFyc2VyKClcbiIKLSAgICAgICAgIiAgcGFyc2VyLmZlZWQodGV4dClcbiIKLSAgICAgICAgIiAgcmV0dXJuIHBhcnNlci5jbG9zZSgpXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuWE1MID0gY0VsZW1lbnRUcmVlLmZyb21zdHJpbmcgPSBYTUxcbiIKLQotICAgICAgICAiZGVmIFhNTElEKHRleHQpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgdHJlZSA9IFhNTCh0ZXh0KVxuIgotICAgICAgICAiICBpZHMgPSB7fVxuIgotICAgICAgICAiICBmb3IgZWxlbSBpbiB0cmVlLml0ZXIoKTpcbiIKLSAgICAgICAgIiAgICBpZCA9IGVsZW0uZ2V0KCdpZCcpXG4iCi0gICAgICAgICIgICAgaWYgaWQ6XG4iCi0gICAgICAgICIgICAgICBpZHNbaWRdID0gZWxlbVxuIgotICAgICAgICAiICByZXR1cm4gdHJlZSwgaWRzXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuWE1MSUQgPSBYTUxJRFxuIgotCi0gICAgICAgICJ0cnk6XG4iCi0gICAgICAgICIgcmVnaXN0ZXJfbmFtZXNwYWNlID0gRVQucmVnaXN0ZXJfbmFtZXNwYWNlXG4iCi0gICAgICAgICJleGNlcHQgQXR0cmlidXRlRXJyb3I6XG4iCi0gICAgICAgICIgZGVmIHJlZ2lzdGVyX25hbWVzcGFjZShwcmVmaXgsIHVyaSk6XG4iCi0gICAgICAgICIgIEVULl9uYW1lc3BhY2VfbWFwW3VyaV0gPSBwcmVmaXhcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5yZWdpc3Rlcl9uYW1lc3BhY2UgPSByZWdpc3Rlcl9uYW1lc3BhY2VcbiIKLQotICAgICAgICAiY0VsZW1lbnRUcmVlLmR1bXAgPSBFVC5kdW1wXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuRWxlbWVudFBhdGggPSBFbGVtZW50UGF0aCA9IEVULkVsZW1lbnRQYXRoXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuaXNlbGVtZW50ID0gRVQuaXNlbGVtZW50XG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuUU5hbWUgPSBFVC5RTmFtZVxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnRvc3RyaW5nID0gRVQudG9zdHJpbmdcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5mcm9tc3RyaW5nbGlzdCA9IEVULmZyb21zdHJpbmdsaXN0XG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUudG9zdHJpbmdsaXN0ID0gRVQudG9zdHJpbmdsaXN0XG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuVkVSU0lPTiA9ICciIFZFUlNJT04gIidcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5fX3ZlcnNpb25fXyA9ICciIFZFUlNJT04gIidcbiIKLQotICAgICAgICk7Ci0KLSAgICBpZiAoIVB5UnVuX1N0cmluZyhib290c3RyYXAsIFB5X2ZpbGVfaW5wdXQsIGcsIE5VTEwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGVsZW1lbnRwYXRoX29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJFbGVtZW50UGF0aCIpOwotCi0gICAgZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgImNvcHllbGVtZW50Iik7Ci0gICAgaWYgKGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaikgewotICAgICAgICAvKiByZWR1Y2UgaGFjayBuZWVkZWQ7IGVuYWJsZSByZWR1Y2UgbWV0aG9kICovCi0gICAgICAgIFB5TWV0aG9kRGVmKiBtcDsKLSAgICAgICAgZm9yIChtcCA9IGVsZW1lbnRfbWV0aG9kczsgbXAtPm1sX25hbWU7IG1wKyspCi0gICAgICAgICAgICBpZiAobXAtPm1sX21ldGggPT0gKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3JlZHVjZSkgewotICAgICAgICAgICAgICAgIG1wLT5tbF9uYW1lID0gIl9fcmVkdWNlX18iOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBQeUVycl9DbGVhcigpOwotCi0gICAgZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgImRlZXBjb3B5Iik7Ci0gICAgZWxlbWVudHRyZWVfaXRlcl9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiaXRlciIpOwotICAgIGVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJpdGVydGV4dCIpOwotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQotICAgIC8qIGxpbmsgYWdhaW5zdCBweWV4cGF0LCBpZiBwb3NzaWJsZSAqLworICAgIC8qIGxpbmsgYWdhaW5zdCBweWV4cGF0ICovCiAgICAgZXhwYXRfY2FwaSA9IFB5Q2Fwc3VsZV9JbXBvcnQoUHlFeHBhdF9DQVBTVUxFX05BTUUsIDApOwogICAgIGlmIChleHBhdF9jYXBpKSB7CiAgICAgICAgIC8qIGNoZWNrIHRoYXQgaXQncyB1c2FibGUgKi8KQEAgLTMxMjIsMTMgKzM3MDgsMjMgQEAKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0jZW5kaWYKIAogICAgIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqID0gUHlFcnJfTmV3RXhjZXB0aW9uKAotICAgICAgICAiY0VsZW1lbnRUcmVlLlBhcnNlRXJyb3IiLCBQeUV4Y19TeW50YXhFcnJvciwgTlVMTAorICAgICAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlBhcnNlRXJyb3IiLCBQeUV4Y19TeW50YXhFcnJvciwgTlVMTAogICAgICAgICApOwogICAgIFB5X0lOQ1JFRihlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQYXJzZUVycm9yIiwgZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmopOwogCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSZFbGVtZW50X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRWxlbWVudCIsIChQeU9iamVjdCAqKSZFbGVtZW50X1R5cGUpOworCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSZUcmVlQnVpbGRlcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlRyZWVCdWlsZGVyIiwgKFB5T2JqZWN0ICopJlRyZWVCdWlsZGVyX1R5cGUpOworCisjaWYgZGVmaW5lZChVU0VfRVhQQVQpCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSZYTUxQYXJzZXJfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJYTUxQYXJzZXIiLCAoUHlPYmplY3QgKikmWE1MUGFyc2VyX1R5cGUpOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWIyOWUxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC0wLDAgKzEsMTQyIEBACisvKiBUaGlzIGlzIGJ1aWx0IGFzIGEgc3RhbmQtYWxvbmUgZXhlY3V0YWJsZSBieSB0aGUgTWFrZWZpbGUsIGFuZCBoZWxwcyB0dXJuCisgICBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgaW50byBhIGZyb3plbiBtb2R1bGUgaW4gUHl0aG9uL2ltcG9ydGxpYi5oCisqLworCisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8bWFyc2hhbC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmbmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworCisvKiBUbyBhdm9pZCBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgb24gZnJvemVuLm8sIHdlIGNyZWF0ZSBvdXIgb3duIHN0cnVjdHVyZQorICAgb2YgZnJvemVuIG1vZHVsZXMgaW5zdGVhZCwgbGVmdCBkZWxpYmVyYXRlbHkgYmxhbmsgc28gYXMgdG8gYXZvaWQKKyAgIHVuaW50ZW50aW9uYWwgaW1wb3J0IG9mIGEgc3RhbGUgdmVyc2lvbiBvZiBfZnJvemVuX2ltcG9ydGxpYi4gKi8KKworc3RhdGljIHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CisgICAgezAsIDAsIDB9IC8qIHNlbnRpbmVsICovCit9OworCisjaWZuZGVmIE1TX1dJTkRPV1MKKy8qIE9uIFdpbmRvd3MsIHRoaXMgbGlua3Mgd2l0aCB0aGUgcmVndWxhciBweXRob25YWS5kbGwsIHNvIHRoaXMgdmFyaWFibGUgY29tZXMKKyAgIGZyb20gZnJvemVuLm9iai4gSW4gdGhlIE1ha2VmaWxlLCBmcm96ZW4ubyBpcyBub3QgbGlua2VkIGludG8gdGhpcyBleGVjdXRhYmxlLAorICAgc28gd2UgZGVmaW5lIHRoZSB2YXJpYWJsZSBoZXJlLiAqLworc3RydWN0IF9mcm96ZW4gKlB5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CisjZW5kaWYKKworY29uc3QgY2hhciBoZWFkZXJbXSA9ICIvKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8iOworCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBjaGFyICppbnBhdGgsICpvdXRwYXRoOworICAgIEZJTEUgKmluZmlsZSwgKm91dGZpbGUgPSBOVUxMOworICAgIHN0cnVjdCBzdGF0IHN0OworICAgIHNpemVfdCB0ZXh0X3NpemUsIGRhdGFfc2l6ZSwgbjsKKyAgICBjaGFyICp0ZXh0OworICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgUHlPYmplY3QgKmNvZGUsICptYXJzaGFsbGVkOworCisgICAgUHlJbXBvcnRfRnJvemVuTW9kdWxlcyA9IF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOworCisgICAgaWYgKGFyZ2MgIT0gMykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5lZWQgdG8gc3BlY2lmeSBpbnB1dCBhbmQgb3V0cHV0IHBhdGhzXG4iKTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIGlucGF0aCA9IGFyZ3ZbMV07CisgICAgb3V0cGF0aCA9IGFyZ3ZbMl07CisgICAgaW5maWxlID0gZm9wZW4oaW5wYXRoLCAicmIiKTsKKyAgICBpZiAoaW5maWxlID09IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nXG4iLCBpbnBhdGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGZzdGF0KGZpbGVubyhpbmZpbGUpLCAmc3QpKSB7CisgICAgICAgIGZjbG9zZShpbmZpbGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBmc3RhdCAnJXMnXG4iLCBpbnBhdGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgdGV4dF9zaXplID0gc3Quc3Rfc2l6ZTsKKyAgICB0ZXh0ID0gKGNoYXIgKikgbWFsbG9jKHRleHRfc2l6ZSArIDEpOworICAgIGlmICh0ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBuID0gZnJlYWQodGV4dCwgMSwgdGV4dF9zaXplLCBpbmZpbGUpOworICAgIGZjbG9zZShpbmZpbGUpOworICAgIGluZmlsZSA9IE5VTEw7CisgICAgaWYgKG4gPCB0ZXh0X3NpemUpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJyZWFkIHRvbyBzaG9ydDogZ290ICVsZCBpbnN0ZWFkIG9mICVsZCBieXRlc1xuIiwKKyAgICAgICAgICAgICAgICAobG9uZykgbiwgKGxvbmcpIHRleHRfc2l6ZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICB0ZXh0W3RleHRfc2l6ZV0gPSAnXDAnOworCisgICAgUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeSsrOworICAgIFB5X05vU2l0ZUZsYWcrKzsKKyAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcrKzsKKworICAgIFB5X1NldFByb2dyYW1OYW1lKEwiLi9fZnJlZXplX2ltcG9ydGxpYiIpOworICAgIC8qIERvbid0IGluc3RhbGwgaW1wb3J0bGliLCBzaW5jZSBpdCBjb3VsZCBleGVjdXRlIG91dGRhdGVkIGJ5dGVjb2RlLiAqLworICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZSgxLCAwKTsKKworICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nRXhGbGFncyh0ZXh0LCAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0LCBOVUxMLCAwKTsKKyAgICBpZiAoY29kZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIG1hcnNoYWxsZWQgPSBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyhjb2RlLCBQeV9NQVJTSEFMX1ZFUlNJT04pOworICAgIFB5X0RFQ1JFRihjb2RlKTsKKyAgICBpZiAobWFyc2hhbGxlZCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2tFeGFjdChtYXJzaGFsbGVkKSk7CisgICAgZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIFB5Qnl0ZXNfQVNfU1RSSU5HKG1hcnNoYWxsZWQpOworICAgIGRhdGFfc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUobWFyc2hhbGxlZCk7CisKKyAgICAvKiBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZS4gVGhlIGhnIGNoZWNrb3V0IHNob3VsZCBiZSB1c2luZyB0aGUgZW9sIGV4dGVuc2lvbiwKKyAgICAgICB3aGljaCBpbiB0dXJuIHNob3VsZCBjYXVzZSB0aGUgRU9MIHN0eWxlIG1hdGNoIHRoZSBDIGxpYnJhcnkncyB0ZXh0IG1vZGUgKi8KKyAgICBvdXRmaWxlID0gZm9wZW4ob3V0cGF0aCwgInciKTsKKyAgICBpZiAob3V0ZmlsZSA9PSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZ1xuIiwgb3V0cGF0aCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBmcHJpbnRmKG91dGZpbGUsICIlc1xuIiwgaGVhZGVyKTsKKyAgICBmcHJpbnRmKG91dGZpbGUsICJ1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHtcbiIpOworICAgIGZvciAobiA9IDA7IG4gPCBkYXRhX3NpemU7IG4gKz0gMTYpIHsKKyAgICAgICAgc2l6ZV90IGksIGVuZCA9IFB5X01JTihuICsgMTYsIGRhdGFfc2l6ZSk7CisgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiAgICAiKTsKKyAgICAgICAgZm9yIChpID0gbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIlZCwiLCAodW5zaWduZWQgaW50KSBkYXRhW2ldKTsKKyAgICAgICAgfQorICAgICAgICBmcHJpbnRmKG91dGZpbGUsICJcbiIpOworICAgIH0KKyAgICBmcHJpbnRmKG91dGZpbGUsICJ9O1xuIik7CisKKyAgICBQeV9ERUNSRUYobWFyc2hhbGxlZCk7CisKKyAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChpbmZpbGUpCisgICAgICAgIGZjbG9zZShpbmZpbGUpOworICAgIGlmIChvdXRmaWxlKSB7CisgICAgICAgIGlmIChmZXJyb3Iob3V0ZmlsZSkpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZXJyb3Igd2hlbiB3cml0aW5nIHRvICclcydcbiIsIG91dHBhdGgpOworICAgICAgICAgICAgZmNsb3NlKG91dGZpbGUpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgZmNsb3NlKG91dGZpbGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlFcnJfUHJpbnQoKTsKKyAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChpbmZpbGUpCisgICAgICAgIGZjbG9zZShpbmZpbGUpOworICAgIGlmIChvdXRmaWxlKQorICAgICAgICBmY2xvc2Uob3V0ZmlsZSk7CisgICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCmluZGV4IGQ4YTI4M2IuLjNmZjA3YmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCkBAIC0xNTUsNDQgKzE1NSw4IEBACiAgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwogfTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBhcnRpYWxfZ2V0X2RpY3QocGFydGlhbG9iamVjdCAqcHRvKQotewotICAgIGlmIChwdG8tPmRpY3QgPT0gTlVMTCkgewotICAgICAgICBwdG8tPmRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChwdG8tPmRpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYocHRvLT5kaWN0KTsKLSAgICByZXR1cm4gcHRvLT5kaWN0OwotfQotCi1zdGF0aWMgaW50Ci1wYXJ0aWFsX3NldF9kaWN0KHBhcnRpYWxvYmplY3QgKnB0bywgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCBwLl9fZGljdF9fICovCi0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhIHBhcnRpYWwgb2JqZWN0J3MgZGljdGlvbmFyeSBtYXkgbm90IGJlIGRlbGV0ZWQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBDYW4gb25seSBzZXQgX19kaWN0X18gdG8gYSBkaWN0aW9uYXJ5ICovCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBwYXJ0aWFsIG9iamVjdCdzIGRpY3Rpb25hcnkgdG8gYSBub24tZGljdCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHRtcCA9IHB0by0+ZGljdDsKLSAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHB0by0+ZGljdCA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFB5R2V0U2V0RGVmIHBhcnRpYWxfZ2V0c2V0bGlzdFtdID0gewotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKXBhcnRpYWxfZ2V0X2RpY3QsIChzZXR0ZXIpcGFydGlhbF9zZXRfZGljdH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCiAgICAge05VTEx9IC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0zMzAsNiArMjk0LDE3NiBAQAogfTsKIAogCisvKiBjbXBfdG9fa2V5ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqY21wOworICAgIFB5T2JqZWN0ICpvYmplY3Q7Cit9IGtleW9iamVjdDsKKworc3RhdGljIHZvaWQKK2tleW9iamVjdF9kZWFsbG9jKGtleW9iamVjdCAqa28pCit7CisgICAgUHlfREVDUkVGKGtvLT5jbXApOworICAgIFB5X1hERUNSRUYoa28tPm9iamVjdCk7CisgICAgUHlPYmplY3RfRlJFRShrbyk7Cit9CisKK3N0YXRpYyBpbnQKK2tleW9iamVjdF90cmF2ZXJzZShrZXlvYmplY3QgKmtvLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChrby0+Y21wKTsKKyAgICBpZiAoa28tPm9iamVjdCkKKyAgICAgICAgUHlfVklTSVQoa28tPm9iamVjdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2tleW9iamVjdF9jbGVhcihrZXlvYmplY3QgKmtvKQoreworICAgIFB5X0NMRUFSKGtvLT5jbXApOworICAgIGlmIChrby0+b2JqZWN0KQorICAgICAgICBQeV9DTEVBUihrby0+b2JqZWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TWVtYmVyRGVmIGtleW9iamVjdF9tZW1iZXJzW10gPSB7CisgICAgeyJvYmoiLCBUX09CSkVDVCwKKyAgICAgb2Zmc2V0b2Yoa2V5b2JqZWN0LCBvYmplY3QpLCAwLAorICAgICBQeURvY19TVFIoIlZhbHVlIHdyYXBwZWQgYnkgYSBrZXkgZnVuY3Rpb24uIil9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2tleW9iamVjdF9jYWxsKGtleW9iamVjdCAqa28sIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKmtvLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCk7CisKK3N0YXRpYyBQeVR5cGVPYmplY3Qga2V5b2JqZWN0X3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiZnVuY3Rvb2xzLktleVdyYXBwZXIiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKGtleW9iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3Ipa2V5b2JqZWN0X2RlYWxsb2MsICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgKHRlcm5hcnlmdW5jKWtleW9iamVjdF9jYWxsLCAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2Mpa2V5b2JqZWN0X3RyYXZlcnNlLCAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpa2V5b2JqZWN0X2NsZWFyLCAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICBrZXlvYmplY3RfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGtleW9iamVjdF9tZW1iZXJzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfY2FsbChrZXlvYmplY3QgKmtvLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBrZXlvYmplY3QgKnJlc3VsdDsKKyAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Im9iaiIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86SyIsIGt3YXJncywgJm9iamVjdCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X05ldyhrZXlvYmplY3QsICZrZXlvYmplY3RfdHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihrby0+Y21wKTsKKyAgICByZXN1bHQtPmNtcCA9IGtvLT5jbXA7CisgICAgUHlfSU5DUkVGKG9iamVjdCk7CisgICAgcmVzdWx0LT5vYmplY3QgPSBvYmplY3Q7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2tleW9iamVjdF9yaWNoY29tcGFyZShQeU9iamVjdCAqa28sIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKng7CisgICAgUHlPYmplY3QgKnk7CisgICAgUHlPYmplY3QgKmNvbXBhcmU7CisgICAgUHlPYmplY3QgKmFuc3dlcjsKKyAgICBzdGF0aWMgUHlPYmplY3QgKnplcm87CisKKyAgICBpZiAoemVybyA9PSBOVUxMKSB7CisgICAgICAgIHplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgICAgIGlmICghemVybykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeV9UWVBFKG90aGVyKSAhPSAma2V5b2JqZWN0X3R5cGUpeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAib3RoZXIgYXJndW1lbnQgbXVzdCBiZSBLIGluc3RhbmNlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBjb21wYXJlID0gKChrZXlvYmplY3QgKikga28pLT5jbXA7CisgICAgYXNzZXJ0KGNvbXBhcmUgIT0gTlVMTCk7CisgICAgeCA9ICgoa2V5b2JqZWN0ICopIGtvKS0+b2JqZWN0OworICAgIHkgPSAoKGtleW9iamVjdCAqKSBvdGhlciktPm9iamVjdDsKKyAgICBpZiAoIXggfHwgIXkpeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogQ2FsbCB0aGUgdXNlcidzIGNvbXBhcmlzb24gZnVuY3Rpb24gYW5kIHRyYW5zbGF0ZSB0aGUgMy13YXkKKyAgICAgKiByZXN1bHQgaW50byB0cnVlIG9yIGZhbHNlIChvciBlcnJvcikuCisgICAgICovCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KDIpOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRih4KTsKKyAgICBQeV9JTkNSRUYoeSk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCB4KTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHkpOworICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoY29tcGFyZSwgYXJncywgTlVMTCk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYW5zd2VyID0gUHlPYmplY3RfUmljaENvbXBhcmUocmVzLCB6ZXJvLCBvcCk7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIGFuc3dlcjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1bmN0b29sc19jbXBfdG9fa2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKmNtcDsKKyAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Im15Y21wIiwgTlVMTH07CisgICAga2V5b2JqZWN0ICpvYmplY3Q7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzpjbXBfdG9fa2V5Iiwga3dhcmdzLCAmY21wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb2JqZWN0ID0gUHlPYmplY3RfTmV3KGtleW9iamVjdCwgJmtleW9iamVjdF90eXBlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKGNtcCk7CisgICAgb2JqZWN0LT5jbXAgPSBjbXA7CisgICAgb2JqZWN0LT5vYmplY3QgPSBOVUxMOworICAgIHJldHVybiAoUHlPYmplY3QgKilvYmplY3Q7Cit9CisKK1B5RG9jX1NUUlZBUihmdW5jdG9vbHNfY21wX3RvX2tleV9kb2MsCisiQ29udmVydCBhIGNtcD0gZnVuY3Rpb24gaW50byBhIGtleT0gZnVuY3Rpb24uIik7CisKIC8qIHJlZHVjZSAodXNlZCB0byBiZSBhIGJ1aWx0aW4pICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDEzLDYgKzU0Nyw4IEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewogICAgIHsicmVkdWNlIiwgICAgICAgICAgZnVuY3Rvb2xzX3JlZHVjZSwgICAgIE1FVEhfVkFSQVJHUywgZnVuY3Rvb2xzX3JlZHVjZV9kb2N9LAorICAgIHsiY21wX3RvX2tleSIsICAgICAgKFB5Q0Z1bmN0aW9uKWZ1bmN0b29sc19jbXBfdG9fa2V5LAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBmdW5jdG9vbHNfY21wX3RvX2tleV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19nZXN0YWx0LmMgYi9Nb2R1bGVzL19nZXN0YWx0LmMKaW5kZXggYTQ1NzgwZi4uY2QzMDY4MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZ2VzdGFsdC5jCisrKyBiL01vZHVsZXMvX2dlc3RhbHQuYwpAQCAtMzMsNyArMzMsNyBAQAogY29udmVydF90b19PU1R5cGUoUHlPYmplY3QgKnYsIE9TVHlwZSAqcHIpCiB7CiAgICAgdWludDMyX3QgdG1wOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpIHx8IFB5VW5pY29kZV9HZXRTaXplKHYpICE9IDQpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeVVuaWNvZGVfR2V0TGVuZ3RoKHYpICE9IDQpIHsKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiT1NUeXBlIGFyZyBtdXN0IGJlIHN0cmluZyBvZiA0IGNoYXJzIik7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwppbmRleCBkZDQzMTdmLi5kMzc2ODllIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCisrKyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKQEAgLTIwMSwxMyArMjAxLDExIEBACiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8ZGlnZXN0X3NpemU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KICAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoaGV4X2RpZ2VzdCwgZGlnZXN0X3NpemUgKiAyKTsKICAgICBQeU1lbV9GcmVlKGhleF9kaWdlc3QpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKaW5kZXggMTA2NmY5NC4uYzhkYjUwOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYworKysgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCkBAIC0xMTgsNyArMTE4LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXBwdXNoX2RvYywKLSJQdXNoIGl0ZW0gb250byBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIik7CisiaGVhcHB1c2goaGVhcCwgaXRlbSkgLT4gTm9uZS4gUHVzaCBpdGVtIG9udG8gaGVhcCwgbWFpbnRhaW5pbmcgdGhlIGhlYXAgaW52YXJpYW50LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogaGVhcHBvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCkBAIC0xODYsNyArMTg2LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXByZXBsYWNlX2RvYywKLSJQb3AgYW5kIHJldHVybiB0aGUgY3VycmVudCBzbWFsbGVzdCB2YWx1ZSwgYW5kIGFkZCB0aGUgbmV3IGl0ZW0uXG5cCisiaGVhcHJlcGxhY2UoaGVhcCwgaXRlbSkgLT4gdmFsdWUuIFBvcCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IHNtYWxsZXN0IHZhbHVlLCBhbmQgYWRkIHRoZSBuZXcgaXRlbS5cblwKIFxuXAogVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGhlYXBwb3AoKSBmb2xsb3dlZCBieSBoZWFwcHVzaCgpLCBhbmQgY2FuIGJlXG5cCiBtb3JlIGFwcHJvcHJpYXRlIHdoZW4gdXNpbmcgYSBmaXhlZC1zaXplIGhlYXAuICBOb3RlIHRoYXQgdGhlIHZhbHVlXG5cCkBAIC0yMzMsNyArMjMzLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXBwdXNocG9wX2RvYywKLSJQdXNoIGl0ZW0gb24gdGhlIGhlYXAsIHRoZW4gcG9wIGFuZCByZXR1cm4gdGhlIHNtYWxsZXN0IGl0ZW1cblwKKyJoZWFwcHVzaHBvcChoZWFwLCBpdGVtKSAtPiB2YWx1ZS4gUHVzaCBpdGVtIG9uIHRoZSBoZWFwLCB0aGVuIHBvcCBhbmQgcmV0dXJuIHRoZSBzbWFsbGVzdCBpdGVtXG5cCiBmcm9tIHRoZSBoZWFwLiBUaGUgY29tYmluZWQgYWN0aW9uIHJ1bnMgbW9yZSBlZmZpY2llbnRseSB0aGFuXG5cCiBoZWFwcHVzaCgpIGZvbGxvd2VkIGJ5IGEgc2VwYXJhdGUgY2FsbCB0byBoZWFwcG9wKCkuIik7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggZmU5MWE1OS4uYjVjZDE3NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTEsOSArMSw5IEBACiAvKgogICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgSS9PIGxpYiBhcyBkZWZpbmVkIGJ5IFBFUCAzMTE2IC0gIk5ldyBJL08iCi0gICAgCisKICAgICBDbGFzc2VzIGRlZmluZWQgaGVyZTogVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEJsb2NraW5nSU9FcnJvci4KICAgICBGdW5jdGlvbnMgZGVmaW5lZCBoZXJlOiBvcGVuKCkuCi0gICAgCisKICAgICBNb3N0bHkgd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogKi8KIApAQCAtMzYsNiArMzYsNyBAQAogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFibGU7CitQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhbGw7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkbGluZTsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVzZXQ7CkBAIC05MCw5NCArOTEsMTEgQEAKIAwKIAogLyoKLSAqIEJsb2NraW5nSU9FcnJvciBleHRlbmRzIElPRXJyb3IKLSAqLwotCi1zdGF0aWMgaW50Ci1ibG9ja2luZ2lvZXJyb3JfaW5pdChQeUJsb2NraW5nSU9FcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmJhc2VhcmdzID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHdyaXR0ZW4gPSAwOwotCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotCi0gICAgc2VsZi0+d3JpdHRlbiA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOkJsb2NraW5nSU9FcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZteWVycm5vLCAmc3RyZXJyb3IsICZ3cml0dGVuKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgYmFzZWFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgbXllcnJubywgc3RyZXJyb3IpOwotICAgIGlmIChiYXNlYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogVGhpcyB3aWxsIHRha2UgY2FyZSBvZiBpbml0aWFsaXppbmcgb2YgbXllcnJubyBhbmQgc3RyZXJyb3IgbWVtYmVycyAqLwotICAgIGlmICgoKFB5VHlwZU9iamVjdCAqKVB5RXhjX0lPRXJyb3IpLT50cF9pbml0KAotICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKXNlbGYsIGJhc2VhcmdzLCBrd2RzKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoYmFzZWFyZ3MpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihiYXNlYXJncyk7Ci0KLSAgICBzZWxmLT53cml0dGVuID0gd3JpdHRlbjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIFB5TWVtYmVyRGVmIGJsb2NraW5naW9lcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJjaGFyYWN0ZXJzX3dyaXR0ZW4iLCBUX1BZU1NJWkVULCBvZmZzZXRvZihQeUJsb2NraW5nSU9FcnJvck9iamVjdCwgd3JpdHRlbiksIDB9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX0Jsb2NraW5nSU9FcnJvciA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiQmxvY2tpbmdJT0Vycm9yIiwgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIFB5RG9jX1NUUigiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIEkvTyB3b3VsZCBibG9jayAiCi0gICAgICAgICAgICAgICJvbiBhIG5vbi1ibG9ja2luZyBJL08gc3RyZWFtIiksIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBibG9ja2luZ2lvZXJyb3JfbWVtYmVycywgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYylibG9ja2luZ2lvZXJyb3JfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci1QeU9iamVjdCAqUHlFeGNfQmxvY2tpbmdJT0Vycm9yID0gKFB5T2JqZWN0ICopJl9QeUV4Y19CbG9ja2luZ0lPRXJyb3I7Ci0MCi0KLS8qCiAgKiBUaGUgbWFpbiBvcGVuKCkgZnVuY3Rpb24KICAqLwogUHlEb2NfU1RSVkFSKG9wZW5fZG9jLAogIm9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSxcbiIKLSIgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSkgLT4gZmlsZSBvYmplY3RcbiIKKyIgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpIC0+IGZpbGUgb2JqZWN0XG4iCiAiXG4iCiAiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS5cbiIKICJcbiIKQEAgLTE5MCwxOCArMTA4LDIwIEBACiAibW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGVcbiIKICJpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHRcbiIKICJtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCi0iaXQgYWxyZWFkeSBleGlzdHMpLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLFxuIgotIm1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZVxuIgotImN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGVcbiIKLSJlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhd1xuIgotImJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlXG4iCi0ibW9kZXMgYXJlOlxuIgorIml0IGFscmVhZHkgZXhpc3RzKSwgJ3gnIGZvciBjcmVhdGluZyBhbmQgd3JpdGluZyB0byBhIG5ldyBmaWxlLCBhbmRcbiIKKyInYScgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlc1xuIgorImFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuXG4iCisiSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtXG4iCisiZGVwZW5kZW50OiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGlzIGNhbGxlZCB0byBnZXQgdGhlXG4iCisiY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeVxuIgorIm1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6XG4iCiAiXG4iCiAiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgogIkNoYXJhY3RlciBNZWFuaW5nXG4iCiAiLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgogIidyJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KVxuIgogIid3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0XG4iCisiJ3gnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nXG4iCiAiJ2EnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0c1xuIgogIidiJyAgICAgICBiaW5hcnkgbW9kZVxuIgogIid0JyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpXG4iCkBAIC0yMTIsNyArMTMyLDggQEAKICJcbiIKICJUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tXG4iCiAiYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlXG4iCi0iJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLlxuIgorIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZFxuIgorInJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy5cbiIKICJcbiIKICJQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsXG4iCiAiZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndC4gRmlsZXMgb3BlbmVkIGluXG4iCkBAIC0yNzIsNiArMTkzLDEyIEBACiAid2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuXG4iCiAiYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuXG4iCiAiXG4iCisiQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlXG4iCisidW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5XG4iCisiY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuXG4iCisiZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5XG4iCisic2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLlxuIgorIlxuIgogIm9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmRcbiIKICJ0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nXG4iCiAiYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoJ3cnLFxuIgpAQCAtMjkyLDI2ICsyMTksMjkgQEAKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwKLSAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VmZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpmaWxlOworICAgICAgICAgICAgICAgICAgICAgICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlLCAqb3BlbmVyID0gUHlfTm9uZTsKICAgICBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMSwgY2xvc2VmZCA9IDE7CiAgICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMLCAqZXJyb3JzID0gTlVMTCwgKm5ld2xpbmUgPSBOVUxMOwogICAgIHVuc2lnbmVkIGk7CiAKLSAgICBpbnQgcmVhZGluZyA9IDAsIHdyaXRpbmcgPSAwLCBhcHBlbmRpbmcgPSAwLCB1cGRhdGluZyA9IDA7CisgICAgaW50IGNyZWF0aW5nID0gMCwgcmVhZGluZyA9IDAsIHdyaXRpbmcgPSAwLCBhcHBlbmRpbmcgPSAwLCB1cGRhdGluZyA9IDA7CiAgICAgaW50IHRleHQgPSAwLCBiaW5hcnkgPSAwLCB1bml2ZXJzYWwgPSAwOwogCi0gICAgY2hhciByYXdtb2RlWzVdLCAqbTsKLSAgICBpbnQgbGluZV9idWZmZXJpbmc7Ci0gICAgbG9uZyBpc2F0dHk7CisgICAgY2hhciByYXdtb2RlWzZdLCAqbTsKKyAgICBpbnQgbGluZV9idWZmZXJpbmcsIGlzYXR0eTsKIAogICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciA9IE5VTEwsICp3cmFwcGVyID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpenp6aTpvcGVuIiwga3dsaXN0LAorICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKKyAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpenp6aU86b3BlbiIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xvc2VmZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMjcsNiArMjU3LDkgQEAKICAgICAgICAgY2hhciBjID0gbW9kZVtpXTsKIAogICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBjcmVhdGluZyA9IDE7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICByZWFkaW5nID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzYzLDYgKzI5Niw3IEBACiAgICAgfQogCiAgICAgbSA9IHJhd21vZGU7CisgICAgaWYgKGNyZWF0aW5nKSAgKihtKyspID0gJ3gnOwogICAgIGlmIChyZWFkaW5nKSAgICoobSsrKSA9ICdyJzsKICAgICBpZiAod3JpdGluZykgICAqKG0rKykgPSAndyc7CiAgICAgaWYgKGFwcGVuZGluZykgKihtKyspID0gJ2EnOwpAQCAtMzg1LDkgKzMxOSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChyZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKKyAgICBpZiAoY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC00MTEsNyArMzQ1LDcgQEAKIAogICAgIC8qIENyZWF0ZSB0aGUgUmF3IGZpbGUgc3RyZWFtICovCiAgICAgcmF3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlLAotCQkJCSJPc2kiLCBmaWxlLCByYXdtb2RlLCBjbG9zZWZkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zaU8iLCBmaWxlLCByYXdtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOwogICAgIGlmIChyYXcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQyMSw3ICszNTUsNyBAQAogCiAgICAgLyogYnVmZmVyaW5nICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyYXcsICJpc2F0dHkiLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksIE5VTEwpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBpc2F0dHkgPSBQeUxvbmdfQXNMb25nKHJlcyk7CkBAIC00NDIsMTIgKzM3NiwxMiBAQAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICAgICAgICAgIGludCBmaWxlbm87Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyYXcsICJmaWxlbm8iLCBOVUxMKTsKKyAgICAgICAgICAgIGxvbmcgZmlsZW5vOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgICAgIGZpbGVubyA9IF9QeUxvbmdfQXNJbnQocmVzKTsKKyAgICAgICAgICAgIGZpbGVubyA9IFB5TG9uZ19Bc0xvbmcocmVzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgaWYgKGZpbGVubyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC00ODEsNyArNDE1LDcgQEAKIAogICAgICAgICBpZiAodXBkYXRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkUmFuZG9tX1R5cGU7Ci0gICAgICAgIGVsc2UgaWYgKHdyaXRpbmcgfHwgYXBwZW5kaW5nKQorICAgICAgICBlbHNlIGlmIChjcmVhdGluZyB8fCB3cml0aW5nIHx8IGFwcGVuZGluZykKICAgICAgICAgICAgIEJ1ZmZlcmVkX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5QnVmZmVyZWRXcml0ZXJfVHlwZTsKICAgICAgICAgZWxzZSBpZiAocmVhZGluZykKICAgICAgICAgICAgIEJ1ZmZlcmVkX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5QnVmZmVyZWRSZWFkZXJfVHlwZTsKQEAgLTUxNCw3ICs0NDgsNyBAQAogICAgIGlmICh3cmFwcGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh3cmFwcGVyLCAibW9kZSIsIG1vZGVvYmopIDwgMCkKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh3cmFwcGVyLCAmUHlJZF9tb2RlLCBtb2Rlb2JqKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlfREVDUkVGKG1vZGVvYmopOwogICAgIHJldHVybiB3cmFwcGVyOwpAQCAtNTc3LDcgKzUxMSw3IEBACiAKIAogLyogQmFzaWNhbGx5IHRoZSAibiIgZm9ybWF0IGNvZGUgd2l0aCB0aGUgYWJpbGl0eSB0byB0dXJuIE5vbmUgaW50byAtMS4gKi8KLWludCAKK2ludAogX1B5SU9fQ29udmVydFNzaXplX3QoUHlPYmplY3QgKm9iaiwgdm9pZCAqcmVzdWx0KSB7CiAgICAgUHlfc3NpemVfdCBsaW1pdDsKICAgICBpZiAob2JqID09IFB5X05vbmUpIHsKQEAgLTYwNCw3ICs1MzgsNiBAQAogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX01PRF9TVEFURShtb2QpOwogICAgIGlmICghc3RhdGUtPmluaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQeV9WSVNJVChzdGF0ZS0+b3NfbW9kdWxlKTsKICAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgIT0gTlVMTCkgewogICAgICAgICBQeV9WSVNJVChzdGF0ZS0+bG9jYWxlX21vZHVsZSk7CiAgICAgfQpAQCAtNjE4LDcgKzU1MSw2IEBACiAgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fTU9EX1NUQVRFKG1vZCk7CiAgICAgaWYgKCFzdGF0ZS0+aW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiAwOwotICAgIFB5X0NMRUFSKHN0YXRlLT5vc19tb2R1bGUpOwogICAgIGlmIChzdGF0ZS0+bG9jYWxlX21vZHVsZSAhPSBOVUxMKQogICAgICAgICBQeV9DTEVBUihzdGF0ZS0+bG9jYWxlX21vZHVsZSk7CiAgICAgUHlfQ0xFQVIoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbik7CkBAIC02NjIsMTEgKzU5NCw2IEBACiAgICAgc3RhdGUgPSBJT19NT0RfU1RBVEUobSk7CiAgICAgc3RhdGUtPmluaXRpYWxpemVkID0gMDsKIAotICAgIC8qIHB1dCBvcyBpbiB0aGUgbW9kdWxlIHN0YXRlICovCi0gICAgc3RhdGUtPm9zX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgib3MiKTsKLSAgICBpZiAoc3RhdGUtPm9zX21vZHVsZSA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KICNkZWZpbmUgQUREX1RZUEUodHlwZSwgbmFtZSkgXAogICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSBcCiAgICAgICAgIGdvdG8gZmFpbDsgXApAQCAtNjkxLDkgKzYxOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbikgPCAwKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICAvKiBCbG9ja2luZ0lPRXJyb3IgKi8KLSAgICBfUHlFeGNfQmxvY2tpbmdJT0Vycm9yLnRwX2Jhc2UgPSAoUHlUeXBlT2JqZWN0ICopIFB5RXhjX0lPRXJyb3I7Ci0gICAgQUREX1RZUEUoJl9QeUV4Y19CbG9ja2luZ0lPRXJyb3IsICJCbG9ja2luZ0lPRXJyb3IiKTsKKyAgICAvKiBCbG9ja2luZ0lPRXJyb3IsIGZvciBjb21wYXRpYmlsaXR5ICovCisgICAgUHlfSU5DUkVGKFB5RXhjX0Jsb2NraW5nSU9FcnJvcik7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQmxvY2tpbmdJT0Vycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSBQeUV4Y19CbG9ja2luZ0lPRXJyb3IpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOwogCiAgICAgLyogQ29uY3JldGUgYmFzZSB0eXBlcyBvZiB0aGUgSU8gQUJDcy4KICAgICAgICAodGhlIEFCQ3MgdGhlbXNlbHZlcyBhcmUgZGVjbGFyZWQgdGhyb3VnaCBpbmhlcml0YW5jZSBpbiBpby5weSkKQEAgLTc1OSw2ICs2ODgsNyBAQAogICAgIEFERF9JTlRFUk5FRChyZWFkKQogICAgIEFERF9JTlRFUk5FRChyZWFkMSkKICAgICBBRERfSU5URVJORUQocmVhZGFibGUpCisgICAgQUREX0lOVEVSTkVEKHJlYWRhbGwpCiAgICAgQUREX0lOVEVSTkVEKHJlYWRpbnRvKQogICAgIEFERF9JTlRFUk5FRChyZWFkbGluZSkKICAgICBBRERfSU5URVJORUQocmVzZXQpCkBAIC03ODksNyArNzE5LDYgQEAKICAgICByZXR1cm4gbTsKIAogICBmYWlsOgotICAgIFB5X1hERUNSRUYoc3RhdGUtPm9zX21vZHVsZSk7CiAgICAgUHlfWERFQ1JFRihzdGF0ZS0+dW5zdXBwb3J0ZWRfb3BlcmF0aW9uKTsKICAgICBQeV9ERUNSRUYobSk7CiAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaCBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCmluZGV4IGFhOGJmZDYuLjBmZTkwYTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCkBAIC01MCwxMiArNTAsMTIgQEAKICAgIGAqY29uc3VtZWRgLgogICAgSWYgbm90IGZvdW5kLCByZXR1cm5zIC0xIGFuZCBzZXRzIGAqY29uc3VtZWRgIHRvIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycwogICAgd2hpY2ggY2FuIGJlIHNhZmVseSBwdXQgYXNpZGUgdW50aWwgYW5vdGhlciBzZWFyY2guCi0gICAKLSAgIE5PVEU6IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBgZW5kYCBtdXN0IHBvaW50IHRvIGEgTlVMIGNoYXJhY3RlciAoJ1wwJykuIAorCisgICBOT1RFOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgYGVuZGAgbXVzdCBwb2ludCB0byBhIE5VTCBjaGFyYWN0ZXIgKCdcMCcpLgogICAgT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gd2lsbCBzY2FuIGZ1cnRoZXIgYW5kIHJldHVybiBnYXJiYWdlLiAqLwogZXh0ZXJuIFB5X3NzaXplX3QgX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBQeV9VTklDT0RFICpzdGFydCwgUHlfVU5JQ09ERSAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CisgICAgaW50IGtpbmQsIGNoYXIgKnN0YXJ0LCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKTsKIAogLyogUmV0dXJuIDEgaWYgYW4gRW52aXJvbm1lbnRFcnJvciB3aXRoIGVycm5vID09IEVJTlRSIGlzIHNldCAoYW5kIHRoZW4KICAgIGNsZWFycyB0aGUgZXJyb3IgaW5kaWNhdG9yKSwgMCBvdGhlcndpc2UuCkBAIC02NSwxNSArNjUsNiBAQAogCiAjZGVmaW5lIERFRkFVTFRfQlVGRkVSX1NJWkUgKDggKiAxMDI0KSAgLyogYnl0ZXMgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5RXhjZXB0aW9uX0hFQUQKLSAgICBQeU9iamVjdCAqbXllcnJubzsKLSAgICBQeU9iamVjdCAqc3RyZXJyb3I7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOyAvKiBOb3QgdXNlZCwgYnV0IHBhcnQgb2YgdGhlIElPRXJyb3Igb2JqZWN0ICovCi0gICAgUHlfc3NpemVfdCB3cml0dGVuOwotfSBQeUJsb2NraW5nSU9FcnJvck9iamVjdDsKLWV4dGVybiBQeU9iamVjdCAqUHlFeGNfQmxvY2tpbmdJT0Vycm9yOwotCiAvKgogICogT2Zmc2V0IHR5cGUgZm9yIHBvc2l0aW9uaW5nLgogICovCkBAIC0xMzgsNyArMTI5LDYgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGludCBpbml0aWFsaXplZDsKLSAgICBQeU9iamVjdCAqb3NfbW9kdWxlOwogICAgIFB5T2JqZWN0ICpsb2NhbGVfbW9kdWxlOwogCiAgICAgUHlPYmplY3QgKnVuc3VwcG9ydGVkX29wZXJhdGlvbjsKQEAgLTE2MCw2ICsxNTAsNyBAQAogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWQxOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFibGU7CitleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkYWxsOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGludG87CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkbGluZTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3Jlc2V0OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCmluZGV4IGJiNzdhY2MuLmIwNzdmMzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYworKysgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKQEAgLTEsOSArMSw5IEBACiAvKgogICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIEJ1ZmZlcmVkIEkvTyBhcyBkZWZpbmVkIGJ5IFBFUCAzMTE2IC0gIk5ldyBJL08iCi0gICAgCisKICAgICBDbGFzc2VzIGRlZmluZWQgaGVyZTogQnVmZmVyZWRJT0Jhc2UsIEJ1ZmZlcmVkUmVhZGVyLCBCdWZmZXJlZFdyaXRlciwKICAgICBCdWZmZXJlZFJhbmRvbS4KLSAgICAKKwogICAgIFdyaXR0ZW4gYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMgYW5kIEFudG9pbmUgUGl0cm91CiAqLwogCkBAIC0xMyw2ICsxMywyMCBAQAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKK19QeV9JREVOVElGSUVSKGNsb3NlKTsKK19QeV9JREVOVElGSUVSKF9kZWFsbG9jX3dhcm4pOworX1B5X0lERU5USUZJRVIoZmx1c2gpOworX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKK19QeV9JREVOVElGSUVSKG1vZGUpOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihwZWVrKTsKK19QeV9JREVOVElGSUVSKHJlYWQpOworX1B5X0lERU5USUZJRVIocmVhZDEpOworX1B5X0lERU5USUZJRVIocmVhZGFibGUpOworX1B5X0lERU5USUZJRVIocmVhZGludG8pOworX1B5X0lERU5USUZJRVIod3JpdGFibGUpOworX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAvKgogICogQnVmZmVyZWRJT0Jhc2UgY2xhc3MsIGluaGVyaXRzIGZyb20gSU9CYXNlLgogICovCkBAIC0zOCwxMiArNTIsMTMgQEAKICAgICBQeV9idWZmZXIgYnVmOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpkYXRhOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KjpyZWFkaW50byIsICZidWYpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJyZWFkIiwgIm4iLCBidWYubGVuKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLCAibiIsIGJ1Zi5sZW4pOwogICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTE5OCw3ICsyMTMsNyBAQAogICAgIGludCByZWFkYWJsZTsKICAgICBpbnQgd3JpdGFibGU7CiAgICAgaW50IGRlYWxsb2NhdGluZzsKLSAgICAKKwogICAgIC8qIFRydWUgaWYgdGhpcyBpcyBhIHZhbmlsbGEgQnVmZmVyZWQgb2JqZWN0IChyYXRoZXIgdGhhbiBhIHVzZXIgZGVyaXZlZAogICAgICAgIGNsYXNzKSAqYW5kKiB0aGUgcmF3IHN0cmVhbSBpcyBhIHZhbmlsbGEgRmlsZUlPIG9iamVjdC4gKi8KICAgICBpbnQgZmFzdF9jbG9zZWRfY2hlY2tzOwpAQCAtMjM3LDcgKzI1Miw3IEBACiAKIC8qCiAgICAgSW1wbGVtZW50YXRpb24gbm90ZXM6Ci0gICAgCisKICAgICAqIEJ1ZmZlcmVkUmVhZGVyLCBCdWZmZXJlZFdyaXRlciBhbmQgQnVmZmVyZWRSYW5kb20gdHJ5IHRvIHNoYXJlIG1vc3QKICAgICAgIG1ldGhvZHMgKHRoaXMgaXMgaGVscGVkIGJ5IHRoZSBtZW1iZXJzIGByZWFkYWJsZWAgYW5kIGB3cml0YWJsZWAsIHdoaWNoCiAgICAgICBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIHJlc3BlY3RpdmUgY29uc3RydWN0b3JzKQpAQCAtMjU1LDcgKzI3MCw3IEBACiAgICAgTk9URTogd2Ugc2hvdWxkIHRyeSB0byBtYWludGFpbiBibG9jayBhbGlnbm1lbnQgb2YgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUKICAgICByYXcgc3RyZWFtIChhY2NvcmRpbmcgdG8gdGhlIGJ1ZmZlciBzaXplKSwgYnV0IGZvciBub3cgaXQgaXMgb25seSBkb25lCiAgICAgaW4gcmVhZCgpIGFuZCBmcmllbmRzLgotICAgIAorCiAqLwogCiAvKiBUaGVzZSBtYWNyb3MgcHJvdGVjdCB0aGUgYnVmZmVyZWQgb2JqZWN0IGFnYWluc3QgY29uY3VycmVudCBvcGVyYXRpb25zLiAqLwpAQCAtNDIxLDcgKzQzNiw3IEBACiB7CiAgICAgaWYgKHNlbGYtPm9rICYmIHNlbGYtPnJhdykgewogICAgICAgICBQeU9iamVjdCAqcjsKLSAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+cmF3LCAiX2RlYWxsb2Nfd2FybiIsICJPIiwgc291cmNlKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+cmF3LCAmUHlJZF9fZGVhbGxvY193YXJuLCAiTyIsIHNvdXJjZSk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC00NjksNyArNDg0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZF9jbG9zZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEwsICpleGMgPSBOVUxMLCAqdmFsLCAqdGI7CiAgICAgaW50IHI7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQpAQCAtNDk3LDEzICs1MTIsMjkgQEAKICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygoUHlPYmplY3QgKilzZWxmLCBfUHlJT19zdHJfZmx1c2gsIE5VTEwpOwogICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICBnb3RvIGVuZDsKLSAgICB9Ci0gICAgUHlfWERFQ1JFRihyZXMpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICBlbHNlCisgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogCiAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+cmF3LCBfUHlJT19zdHJfY2xvc2UsIE5VTEwpOwogCisgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwyOworICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwyLCAmdGIpOworICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOworICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbDIsIHRiKTsKKyAgICAgICAgfQorICAgIH0KKwogZW5kOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCiAgICAgcmV0dXJuIHJlczsKQEAgLTU1NCwxNCArNTg1LDE0IEBACiBidWZmZXJlZF9uYW1lX2dldChidWZmZXJlZCAqc2VsZiwgdm9pZCAqY29udGV4dCkKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPnJhdywgIm5hbWUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5yYXcsICZQeUlkX25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRfbW9kZV9nZXQoYnVmZmVyZWQgKnNlbGYsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLT5yYXcsICJtb2RlIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZi0+cmF3LCAmUHlJZF9tb2RlKTsKIH0KIAogLyogTG93ZXItbGV2ZWwgQVBJcyAqLwpAQCAtNjAwLDE0ICs2MzEsMTUgQEAKIHN0YXRpYyB2b2lkCiBfYnVmZmVyZWR3cml0ZXJfcmVzZXRfYnVmKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCk7CitfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZik7CiBzdGF0aWMgUHlPYmplY3QgKgogX2J1ZmZlcmVkcmVhZGVyX3JlYWRfYWxsKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9mYXN0KGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9nZW5lcmljKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKLQorc3RhdGljIFB5X3NzaXplX3QKK19idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChidWZmZXJlZCAqc2VsZiwgY2hhciAqc3RhcnQsIFB5X3NzaXplX3QgbGVuKTsKIAogLyoKICAqIEhlbHBlcnMKQEAgLTYzMSwxNCArNjYzLDE0IEBACiBfYnVmZmVyZWRfY2hlY2tfYmxvY2tpbmdfZXJyb3Iodm9pZCkKIHsKICAgICBQeU9iamVjdCAqdCwgKnYsICp0YjsKLSAgICBQeUJsb2NraW5nSU9FcnJvck9iamVjdCAqZXJyOworICAgIFB5T1NFcnJvck9iamVjdCAqZXJyOwogCiAgICAgUHlFcnJfRmV0Y2goJnQsICZ2LCAmdGIpOwogICAgIGlmICh2ID09IE5VTEwgfHwgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh2LCBQeUV4Y19CbG9ja2luZ0lPRXJyb3IpKSB7CiAgICAgICAgIFB5RXJyX1Jlc3RvcmUodCwgdiwgdGIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXJyID0gKFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0ICopIHY7CisgICAgZXJyID0gKFB5T1NFcnJvck9iamVjdCAqKSB2OwogICAgIC8qIFRPRE86IHNhbml0eSBjaGVjayAoZXJyLT53cml0dGVuID49IDApICovCiAgICAgUHlFcnJfUmVzdG9yZSh0LCB2LCB0Yik7CiAgICAgcmV0dXJuICZlcnItPndyaXR0ZW47CkBAIC02NTgsNyArNjkwLDcgQEAKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhdyBzdHJlYW0gcmV0dXJuZWQgaW52YWxpZCBwb3NpdGlvbiAlIiBQWV9QUklkT0ZGLAotCQkJIChQWV9PRkZfVF9DT01QQVQpbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX09GRl9UX0NPTVBBVCluKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzZWxmLT5hYnNfcG9zID0gbjsKQEAgLTY5MSw3ICs3MjMsNyBAQAogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmF3IHN0cmVhbSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uICUiIFBZX1BSSWRPRkYsCi0JCQkgKFBZX09GRl9UX0NPTVBBVCluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfT0ZGX1RfQ09NUEFUKW4pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNlbGYtPmFic19wb3MgPSBuOwpAQCAtODMyLDcgKzg2NCw3IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgUHlfQ0xFQVIocmVzKTsKICAgICB9Ci0gICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoc2VsZiwgbik7CisgICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoc2VsZik7CiAKIGVuZDoKICAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQpAQCAtODk2LDYxICs5MjgsMTEyIEBACiAgICAgaWYgKG4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKICAgICAvKiBSZXR1cm4gdXAgdG8gbiBieXRlcy4gIElmIGF0IGxlYXN0IG9uZSBieXRlIGlzIGJ1ZmZlcmVkLCB3ZQogICAgICAgIG9ubHkgcmV0dXJuIGJ1ZmZlcmVkIGJ5dGVzLiAgT3RoZXJ3aXNlLCB3ZSBkbyBvbmUgcmF3IHJlYWQuICovCiAKLSAgICAvKiBYWFg6IHRoaXMgbWltaWNrcyB0aGUgaW8ucHkgaW1wbGVtZW50YXRpb24gYnV0IGlzIHByb2JhYmx5IHdyb25nLgotICAgICAgIElmIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSByYXcgc3RyZWFtLCB0aGVuIHdlIGNvdWxkIGFjdHVhbGx5IHJlYWQKLSAgICAgICBhbGwgYG5gIGJ5dGVzIGFza2VkIGJ5IHRoZSBjYWxsZXIgKGFuZCBwb3NzaWJseSBtb3JlLCBzbyBhcyB0byBmaWxsCi0gICAgICAgb3VyIGJ1ZmZlciBmb3IgdGhlIG5leHQgcmVhZHMpLiAqLwotCiAgICAgaGF2ZSA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CiAgICAgaWYgKGhhdmUgPiAwKSB7Ci0gICAgICAgIGlmIChuID4gaGF2ZSkKLSAgICAgICAgICAgIG4gPSBoYXZlOwotICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZW5kOwotICAgICAgICBzZWxmLT5wb3MgKz0gbjsKLSAgICAgICAgZ290byBlbmQ7CisgICAgICAgIG4gPSBQeV9NSU4oaGF2ZSwgbik7CisgICAgICAgIHJlcyA9IF9idWZmZXJlZHJlYWRlcl9yZWFkX2Zhc3Qoc2VsZiwgbik7CisgICAgICAgIGFzc2VydChyZXMgIT0gUHlfTm9uZSk7CisgICAgICAgIHJldHVybiByZXM7CiAgICAgfQotCi0gICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7Ci0gICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZW5kOworICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICAvKiBGaWxsIHRoZSBidWZmZXIgZnJvbSB0aGUgcmF3IHN0cmVhbSwgYW5kIGNvcHkgaXQgdG8gdGhlIHJlc3VsdC4gKi8KICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwotICAgIHIgPSBfYnVmZmVyZWRyZWFkZXJfZmlsbF9idWZmZXIoc2VsZik7Ci0gICAgaWYgKHIgPT0gLTEpCi0gICAgICAgIGdvdG8gZW5kOworICAgIHIgPSBfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcocmVzKSwgbik7CisgICAgTEVBVkVfQlVGRkVSRUQoc2VsZikKKyAgICBpZiAociA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChyID09IC0yKQogICAgICAgICByID0gMDsKICAgICBpZiAobiA+IHIpCi0gICAgICAgIG4gPSByOwotICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCBuKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotICAgIHNlbGYtPnBvcyA9IG47Ci0KLWVuZDoKLSAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQorICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlcywgcik7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBQeV9idWZmZXIgYnVmOworICAgIFB5X3NzaXplX3Qgbiwgd3JpdHRlbiA9IDAsIHJlbWFpbmluZzsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKwogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgCi0gICAgLyogVE9ETzogdXNlIHJhdy5yZWFkaW50bygpIChvciBhIGRpcmVjdCBjb3B5IGZyb20gb3VyIGJ1ZmZlcikgaW5zdGVhZCEgKi8KLSAgICByZXR1cm4gYnVmZmVyZWRpb2Jhc2VfcmVhZGludG8oKFB5T2JqZWN0ICopc2VsZiwgYXJncyk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqOnJlYWRpbnRvIiwgJmJ1ZikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbiA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CisgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIGlmIChuID49IGJ1Zi5sZW4pIHsKKyAgICAgICAgICAgIG1lbWNweShidWYuYnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIGJ1Zi5sZW4pOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1Zi5sZW47CisgICAgICAgICAgICByZXMgPSBQeUxvbmdfRnJvbVNzaXplX3QoYnVmLmxlbik7CisgICAgICAgICAgICBnb3RvIGVuZF91bmxvY2tlZDsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoYnVmLmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKKyAgICAgICAgc2VsZi0+cG9zICs9IG47CisgICAgICAgIHdyaXR0ZW4gPSBuOworICAgIH0KKworICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCisgICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworCisgICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7CisgICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CisgICAgc2VsZi0+cG9zID0gMDsKKworICAgIGZvciAocmVtYWluaW5nID0gYnVmLmxlbiAtIHdyaXR0ZW47CisgICAgICAgICByZW1haW5pbmcgPiAwOworICAgICAgICAgd3JpdHRlbiArPSBuLCByZW1haW5pbmcgLT0gbikgeworICAgICAgICAvKiBJZiByZW1haW5pbmcgYnl0ZXMgaXMgbGFyZ2VyIHRoYW4gaW50ZXJuYWwgYnVmZmVyIHNpemUsIGNvcHkKKyAgICAgICAgICogZGlyZWN0bHkgaW50byBjYWxsZXIncyBidWZmZXIuICovCisgICAgICAgIGlmIChyZW1haW5pbmcgPiBzZWxmLT5idWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfZmlsbF9idWZmZXIoc2VsZik7CisgICAgICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAobiA+IHJlbWFpbmluZykKKyAgICAgICAgICAgICAgICAgICAgbiA9IHJlbWFpbmluZzsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CisgICAgICAgICAgICAgICAgc2VsZi0+cG9zICs9IG47CisgICAgICAgICAgICAgICAgY29udGludWU7IC8qIHNob3J0IGNpcmN1aXQgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobiA9PSAwIHx8IChuID09IC0yICYmIHdyaXR0ZW4gPiAwKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIGlmIChuID09IC0yKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICAgICAgICAgIHJlcyA9IFB5X05vbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXMgPSBQeUxvbmdfRnJvbVNzaXplX3Qod3JpdHRlbik7CisKK2VuZDoKKyAgICBMRUFWRV9CVUZGRVJFRChzZWxmKTsKK2VuZF91bmxvY2tlZDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTAxLDkgKzExODQsMjAgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwgJnRhcmdldG9iaiwgJndoZW5jZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICh3aGVuY2UgPCAwIHx8IHdoZW5jZSA+IDIpIHsKKworICAgIC8qIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgaW5zdGVhZCBvZiB0cnVzdGluZyBPUyAnc2VlaygpJworICAgICoqIGVycm9yIGRldGVjdGlvbiwganVzdCBpbiBjYXNlLgorICAgICovCisgICAgaWYgKCh3aGVuY2UgPCAwIHx8IHdoZW5jZSA+MikKKyNpZmRlZiBTRUVLX0hPTEUKKyAgICAgICAgJiYgKHdoZW5jZSAhPSBTRUVLX0hPTEUpCisjZW5kaWYKKyNpZmRlZiBTRUVLX0RBVEEKKyAgICAgICAgJiYgKHdoZW5jZSAhPSBTRUVLX0RBVEEpCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIndoZW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMiwgbm90ICVkIiwgd2hlbmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICJ3aGVuY2UgdmFsdWUgJWQgdW5zdXBwb3J0ZWQiLCB3aGVuY2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTExMTYsNyArMTIxMCwxMSBAQAogICAgIGlmICh0YXJnZXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAod2hlbmNlICE9IDIgJiYgc2VsZi0+cmVhZGFibGUpIHsKKyAgICAvKiBTRUVLX1NFVCBhbmQgU0VFS19DVVIgYXJlIHNwZWNpYWwgYmVjYXVzZSB3ZSBjb3VsZCBzZWVrIGluc2lkZSB0aGUKKyAgICAgICBidWZmZXIuIE90aGVyIHdoZW5jZSB2YWx1ZXMgbXVzdCBiZSBtYW5hZ2VkIHdpdGhvdXQgdGhpcyBvcHRpbWl6YXRpb24uCisgICAgICAgU29tZSBPcGVyYXRpbmcgU3lzdGVtcyBjYW4gcHJvdmlkZSBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQorICAgICAgIFNFRUtfSE9MRS9TRUVLX0RBVEEuICovCisgICAgaWYgKCgod2hlbmNlID09IDApIHx8ICh3aGVuY2UgPT0gMSkpICYmIHNlbGYtPnJlYWRhYmxlKSB7CiAgICAgICAgIFB5X29mZl90IGN1cnJlbnQsIGF2YWlsOwogICAgICAgICAvKiBDaGVjayBpZiBzZWVraW5nIGxlYXZlcyB1cyBpbnNpZGUgdGhlIGN1cnJlbnQgYnVmZmVyLAogICAgICAgICAgICBzbyBhcyB0byByZXR1cm4gcXVpY2tseSBpZiBwb3NzaWJsZS4gQWxzbywgd2UgbmVlZG4ndCB0YWtlIHRoZQpAQCAtMTI0Miw3ICsxMzQwLDcgQEAKIHsKICAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnJlczsKIAotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xMzY4LDMzICsxNDY2LDYwIEBACiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9hbGwoYnVmZmVyZWQgKnNlbGYpCiB7CiAgICAgUHlfc3NpemVfdCBjdXJyZW50X3NpemU7Ci0gICAgUHlPYmplY3QgKnJlcywgKmRhdGEgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpjaHVua3MgPSBQeUxpc3RfTmV3KDApOwotCi0gICAgaWYgKGNodW5rcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzLCAqZGF0YSA9IE5VTEwsICpjaHVuaywgKmNodW5rczsKIAogICAgIC8qIEZpcnN0IGNvcHkgd2hhdCB3ZSBoYXZlIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4gKi8KICAgICBjdXJyZW50X3NpemUgPSBQeV9TQUZFX0RPV05DQVNUKFJFQURBSEVBRChzZWxmKSwgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwogICAgIGlmIChjdXJyZW50X3NpemUpIHsKICAgICAgICAgZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCiAgICAgICAgICAgICBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIGN1cnJlbnRfc2l6ZSk7Ci0gICAgICAgIGlmIChkYXRhID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVua3MpOworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgc2VsZi0+cG9zICs9IGN1cnJlbnRfc2l6ZTsKICAgICB9CiAgICAgLyogV2UncmUgZ29pbmcgcGFzdCB0aGUgYnVmZmVyJ3MgYm91bmRzLCBmbHVzaCBpdCAqLwogICAgIGlmIChzZWxmLT53cml0YWJsZSkgewogICAgICAgICByZXMgPSBidWZmZXJlZF9mbHVzaF9hbmRfcmV3aW5kX3VubG9ja2VkKHNlbGYpOwotICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVua3MpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBQeV9DTEVBUihyZXMpOwogICAgIH0KICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOworCisgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHIoc2VsZi0+cmF3LCBfUHlJT19zdHJfcmVhZGFsbCkpIHsKKyAgICAgICAgY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5yYXcsIF9QeUlPX3N0cl9yZWFkYWxsLCBOVUxMKTsKKyAgICAgICAgaWYgKGNodW5rID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGNodW5rICE9IFB5X05vbmUgJiYgIVB5Qnl0ZXNfQ2hlY2soY2h1bmspKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGRhdGEpOworICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkYWxsKCkgc2hvdWxkIHJldHVybiBieXRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNodW5rID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50X3NpemUgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2h1bms7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmspOworICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRfc2l6ZSkgeworICAgICAgICAgICAgUHlCeXRlc19Db25jYXQoJmRhdGEsIGNodW5rKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVuayk7CisgICAgICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGNodW5rOworICAgIH0KKworICAgIGNodW5rcyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGNodW5rcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1hERUNSRUYoZGF0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIGRhdGEpIDwgMCkgewpAQCAtMTU1Niw3ICsxNjgxLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pCitfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGhhdmUsIHI7CiAKQEAgLTE1OTgsNiArMTcyMyw3IEBACiAgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJwZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3BlZWssIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkMSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkMSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRpbnRvLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGxpbmUsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKQEAgLTE2NjMsMTUgKzE3ODksNiBAQAogDAogCiAKLXN0YXRpYyBpbnQKLWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSh2b2lkKQotewotICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQogLyoKICAqIGNsYXNzIEJ1ZmZlcmVkV3JpdGVyCiAgKi8KQEAgLTE2ODAsNyArMTc5Nyw3IEBACiAgICAgIlxuIgogICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhd1xuIgogICAgICJzdHJlYW0uIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuIG1heF9idWZmZXJfc2l6ZSBpc24ndCB1c2VkIGFueW1vcmUuXG4iCisgICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCiAgICAgKTsKIAogc3RhdGljIHZvaWQKQEAgLTE2OTMsMjMgKzE4MTAsMTggQEAKIHN0YXRpYyBpbnQKIGJ1ZmZlcmVkd3JpdGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICAvKiBUT0RPOiBwcm9wZXJseSBkZXByZWNhdGUgbWF4X2J1ZmZlcl9zaXplICovCi0gICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsICJtYXhfYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlfc3NpemVfdCBtYXhfYnVmZmVyX3NpemUgPSAtMjM0OwogICAgIFB5T2JqZWN0ICpyYXc7CiAKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bm46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKG1heF9idWZmZXJfc2l6ZSAhPSAtMjM0ICYmICFjb21wbGFpbl9hYm91dF9tYXhfYnVmZmVyX3NpemUoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMjA5MSwxNiArMjIwMywxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZWFkZXIsICp3cml0ZXI7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlfc3NpemVfdCBtYXhfYnVmZmVyX3NpemUgPSAtMjM0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xubjpCdWZmZXJlZFJXUGFpciIsICZyZWFkZXIsICZ3cml0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJfc2l6ZSwgJm1heF9idWZmZXJfc2l6ZSkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLCAmcmVhZGVyLCAmd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJlYWRlciwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUod3JpdGVyLCBQeV9UcnVlKSA9PSBOVUxMKQpAQCAtMjE0OCwxMyArMjI1NiwxMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX2ZvcndhcmRfY2FsbChidWZmZXJlZCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmFyZ3MpCitfZm9yd2FyZF9jYWxsKGJ1ZmZlcmVkICpzZWxmLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOworICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCBuYW1lKTsKICAgICBQeU9iamVjdCAqcmV0OwogCiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUtPnN0cmluZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMjE2Niw2NiArMjI3NCw2NiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWQocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9yZWFkLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3BlZWsocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJwZWVrIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9wZWVrLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWQxKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZDEiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWQxLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWRpbnRvKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZGludG8iLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRpbnRvLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3dyaXRlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAid3JpdGUiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX3dyaXRlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX2ZsdXNoKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiZmx1c2giLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX2ZsdXNoLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWRhYmxlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZGFibGUiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRhYmxlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3dyaXRhYmxlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAid3JpdGFibGUiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX3dyaXRhYmxlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX2Nsb3NlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiY2xvc2UiLCBhcmdzKTsKKyAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX2Nsb3NlLCBhcmdzKTsKICAgICBpZiAocmV0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRihyZXQpOwogCi0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAiY2xvc2UiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX2Nsb3NlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX2lzYXR0eShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgImlzYXR0eSIsIGFyZ3MpOworICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfaXNhdHR5LCBhcmdzKTsKIAogICAgIGlmIChyZXQgIT0gUHlfRmFsc2UpIHsKICAgICAgICAgLyogZWl0aGVyIFRydWUgb3IgZXhjZXB0aW9uICovCkBAIC0yMjMzLDcgKzIzNDEsNyBAQAogICAgIH0KICAgICBQeV9ERUNSRUYocmV0KTsKIAotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgImlzYXR0eSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfaXNhdHR5LCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzMjUsMjggKzI0MzMsMjQgQEAKICAgICAiXG4iCiAgICAgIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLFxuIgogICAgICJyYXcsIGdpdmVuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXRcbiIKLSAgICAiZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4gbWF4X2J1ZmZlcl9zaXplIGlzbid0IHVzZWQgYW55bW9yZS5cbiIKKyAgICAiZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS5cbiIKICAgICApOwogCiBzdGF0aWMgaW50CiBidWZmZXJlZHJhbmRvbV9pbml0KGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsICJtYXhfYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlfc3NpemVfdCBtYXhfYnVmZmVyX3NpemUgPSAtMjM0OwogICAgIFB5T2JqZWN0ICpyYXc7CiAKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bm46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKG1heF9idWZmZXJfc2l6ZSAhPSAtMjM0ICYmICFjb21wbGFpbl9hYm91dF9tYXhfYnVmZmVyX3NpemUoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCA0MTY0NTMzLi41NDg0MGJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC05NjIsMTMgKzk2MiwxMSBAQAogYnl0ZXNpb2J1Zl9nZXRidWZmZXIoYnl0ZXNpb2J1ZiAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKICAgICBpbnQgcmV0OwotICAgIHZvaWQgKnB0cjsKICAgICBieXRlc2lvICpiID0gKGJ5dGVzaW8gKikgb2JqLT5zb3VyY2U7CiAgICAgaWYgKHZpZXcgPT0gTlVMTCkgewogICAgICAgICBiLT5leHBvcnRzKys7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwdHIgPSAodm9pZCAqKSBvYmo7CiAgICAgcmV0ID0gUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIGItPmJ1ZiwgYi0+c3RyaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmxhZ3MpOwogICAgIGlmIChyZXQgPj0gMCkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vZmlsZWlvLmMgYi9Nb2R1bGVzL19pby9maWxlaW8uYwppbmRleCBhZDRhN2U2Li44YzFmYWJlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9maWxlaW8uYworKysgYi9Nb2R1bGVzL19pby9maWxlaW8uYwpAQCAtNDYsNiArNDYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBpbnQgZmQ7CisgICAgdW5zaWduZWQgaW50IGNyZWF0ZWQgOiAxOwogICAgIHVuc2lnbmVkIGludCByZWFkYWJsZSA6IDE7CiAgICAgdW5zaWduZWQgaW50IHdyaXRhYmxlIDogMTsKICAgICBzaWduZWQgaW50IHNlZWthYmxlIDogMjsgLyogLTEgbWVhbnMgdW5rbm93biAqLwpAQCAtMTIyLDYgKzEyMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX2Nsb3NlKGZpbGVpbyAqc2VsZikKIHsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAgICAgaWYgKCFzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTM3LDggKzEzOSw4IEBACiAgICAgaWYgKGVycm5vIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9zZSIsICJPIiwgc2VsZik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KikmUHlSYXdJT0Jhc2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9jbG9zZSwgIk8iLCBzZWxmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1MSw2ICsxNTMsNyBAQAogICAgIHNlbGYgPSAoZmlsZWlvICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICAgICAgc2VsZi0+Y3JlYXRlZCA9IDA7CiAgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMDsKICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAwOwogICAgICAgICBzZWxmLT5zZWVrYWJsZSA9IC0xOwpAQCAtMjA0LDkgKzIwNyw5IEBACiBmaWxlaW9faW5pdChQeU9iamVjdCAqb3NlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBmaWxlaW8gKnNlbGYgPSAoZmlsZWlvICopIG9zZWxmOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OwogICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqc3RyaW5nb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnN0cmluZ29iaiA9IE5VTEwsICpvcGVuZXIgPSBQeV9Ob25lOwogICAgIGNoYXIgKm1vZGUgPSAiciI7CiAgICAgY2hhciAqczsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0yMzAsOCArMjMzLDkgQEAKICAgICAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2k6ZmlsZWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpTzpmaWxlaW8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BlbmVyKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobmFtZW9iaikpIHsKQEAgLTI1OCw5ICsyNjIsMTAgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIHdpZGVuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaik7Ci0gICAgfQotICAgIGlmICh3aWRlbmFtZSA9PSBOVUxMKQorICAgICAgICB3aWRlbmFtZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmFtZW9iaik7CisgICAgICAgIGlmICh3aWRlbmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZQogI2VuZGlmCiAgICAgaWYgKGZkIDwgMCkKICAgICB7CkBAIC0yNzMsMTUgKzI3OCwyMyBAQAogICAgIHMgPSBtb2RlOwogICAgIHdoaWxlICgqcykgewogICAgICAgICBzd2l0Y2ggKCpzKyspIHsKLSAgICAgICAgY2FzZSAncic6CisgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgaWYgKHJ3YSkgewogICAgICAgICAgICAgYmFkX21vZGU6CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlIGFuZCBhdCBtb3N0IG9uZSBwbHVzIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT5jcmVhdGVkID0gMTsKKyAgICAgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMTsKKyAgICAgICAgICAgIGZsYWdzIHw9IE9fRVhDTCB8IE9fQ1JFQVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICBpZiAocndhKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX21vZGU7CisgICAgICAgICAgICByd2EgPSAxOwogICAgICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3cnOgpAQCAtMzQ3LDIwICszNjAsNDAgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgaWYgKG9wZW5lciA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIHNlbGYtPmZkID0gb3BlbihuYW1lLCBmbGFncywgMDY2Nik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZmRvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVyLCAiT2kiLCBuYW1lb2JqLCBmbGFncyk7CisgICAgICAgICAgICBpZiAoZmRvYmogPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soZmRvYmopKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZkb2JqKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGludGVnZXIgZnJvbSBvcGVuZXIiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9QeUxvbmdfQXNJbnQoZmRvYmopOworICAgICAgICAgICAgUHlfREVDUkVGKGZkb2JqKTsKKyAgICAgICAgICAgIGlmIChzZWxmLT5mZCA9PSAtMSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBmZF9pc19vd24gPSAxOwogICAgICAgICBpZiAoc2VsZi0+ZmQgPCAwKSB7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aFVuaWNvZGVGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCB3aWRlbmFtZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOwogICAgICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIG5hbWUpOwpAQCAtNTI5LDM2ICs1NjIsNTMgQEAKIH0KIAogc3RhdGljIHNpemVfdAotbmV3X2J1ZmZlcnNpemUoZmlsZWlvICpzZWxmLCBzaXplX3QgY3VycmVudHNpemUpCi17CituZXdfYnVmZmVyc2l6ZShmaWxlaW8gKnNlbGYsIHNpemVfdCBjdXJyZW50c2l6ZQogI2lmZGVmIEhBVkVfRlNUQVQKLSAgICBvZmZfdCBwb3MsIGVuZDsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBpZiAoZnN0YXQoc2VsZi0+ZmQsICZzdCkgPT0gMCkgewotICAgICAgICBlbmQgPSBzdC5zdF9zaXplOwotICAgICAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKKyAgICAgICAgICAgICAgICwgUHlfb2ZmX3QgcG9zLCBQeV9vZmZfdCBlbmQKKyNlbmRpZgorICAgICAgICAgICAgICAgKQoreworICAgIHNpemVfdCBhZGRlbmQ7CisjaWZkZWYgSEFWRV9GU1RBVAorICAgIGlmIChlbmQgIT0gKFB5X29mZl90KS0xKSB7CiAgICAgICAgIC8qIEZpbGVzIGNsYWltaW5nIGEgc2l6ZSBzbWFsbGVyIHRoYW4gU01BTExDSFVOSyBtYXkKICAgICAgICAgICAgYWN0dWFsbHkgYmUgc3RyZWFtaW5nIHBzZXVkby1maWxlcy4gSW4gdGhpcyBjYXNlLCB3ZQogICAgICAgICAgICBhcHBseSB0aGUgbW9yZSBhZ2dyZXNzaXZlIGFsZ29yaXRobSBiZWxvdy4KICAgICAgICAgKi8KICAgICAgICAgaWYgKGVuZCA+PSBTTUFMTENIVU5LICYmIGVuZCA+PSBwb3MgJiYgcG9zID49IDApIHsKICAgICAgICAgICAgIC8qIEFkZCAxIHNvIGlmIHRoZSBmaWxlIHdlcmUgdG8gZ3JvdyB3ZSdkIG5vdGljZS4gKi8KLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7CisgICAgICAgICAgICBQeV9vZmZfdCBidWZzaXplID0gY3VycmVudHNpemUgKyBlbmQgLSBwb3MgKyAxOworICAgICAgICAgICAgaWYgKGJ1ZnNpemUgPCBQWV9TU0laRV9UX01BWCkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHNpemVfdClidWZzaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBQWV9TU0laRV9UX01BWDsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKLSAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCi0gICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KLSAgICByZXR1cm4gY3VycmVudHNpemUgKyAoY3VycmVudHNpemUgPj4gMykgKyA2OworICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuICBGb3IgYmlnZ2VyIHNpemVzLCB1c2UgYQorICAgICAgIGxlc3MtdGhhbi1kb3VibGUgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KKyAgICBpZiAoY3VycmVudHNpemUgPiA2NTUzNikKKyAgICAgICAgYWRkZW5kID0gY3VycmVudHNpemUgPj4gMzsKKyAgICBlbHNlCisgICAgICAgIGFkZGVuZCA9IDI1NiArIGN1cnJlbnRzaXplOworICAgIGlmIChhZGRlbmQgPCBTTUFMTENIVU5LKQorICAgICAgICAvKiBBdm9pZCB0aW55IHJlYWQoKSBjYWxscy4gKi8KKyAgICAgICAgYWRkZW5kID0gU01BTExDSFVOSzsKKyAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWxlaW9fcmVhZGFsbChmaWxlaW8gKnNlbGYpCiB7CisjaWZkZWYgSEFWRV9GU1RBVAorICAgIHN0cnVjdCBzdGF0IHN0OworICAgIFB5X29mZl90IHBvcywgZW5kOworI2VuZGlmCiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IHRvdGFsID0gMDsKICAgICBQeV9zc2l6ZV90IG47CisgICAgc2l6ZV90IG5ld3NpemU7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwpAQCAtNTY5LDggKzYxOSwyMyBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyNpZmRlZiBIQVZFX0ZTVEFUCisjaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIHBvcyA9IF9sc2Vla2k2NChzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKKyNlbHNlCisgICAgcG9zID0gbHNlZWsoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CisjZW5kaWYKKyAgICBpZiAoZnN0YXQoc2VsZi0+ZmQsICZzdCkgPT0gMCkKKyAgICAgICAgZW5kID0gc3Quc3Rfc2l6ZTsKKyAgICBlbHNlCisgICAgICAgIGVuZCA9IChQeV9vZmZfdCktMTsKKyNlbmRpZgogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHNpemVfdCBuZXdzaXplID0gbmV3X2J1ZmZlcnNpemUoc2VsZiwgdG90YWwpOworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICAgICAgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsLCBwb3MsIGVuZCk7CisjZWxzZQorICAgICAgICBuZXdzaXplID0gbmV3X2J1ZmZlcnNpemUoc2VsZiwgdG90YWwpOworI2VuZGlmCiAgICAgICAgIGlmIChuZXdzaXplID4gUFlfU1NJWkVfVF9NQVggfHwgbmV3c2l6ZSA8PSAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAidW5ib3VuZGVkIHJlYWQgcmV0dXJuZWQgbW9yZSBieXRlcyAiCkBAIC02MjUsNiArNjkwLDkgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHRvdGFsICs9IG47CisjaWZkZWYgSEFWRV9GU1RBVAorICAgICAgICBwb3MgKz0gbjsKKyNlbmRpZgogICAgIH0KIAogICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgPiB0b3RhbCkgewpAQCAtOTM4LDYgKzEwMDYsMTIgQEAKIHN0YXRpYyBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKKyAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgeworICAgICAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgICAgICByZXR1cm4gInhiKyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAieGIiOworICAgIH0KICAgICBpZiAoc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuICJyYisiOwpAQCAtOTUxLDEyICsxMDI1LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX3JlcHIoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBbY2xvc2VkXT4iKTsKIAotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC05OTYsMTMgKzEwNzEsMTkgQEAKIAogCiBQeURvY19TVFJWQVIoZmlsZWlvX2RvYywKLSJmaWxlKG5hbWU6IHN0clssIG1vZGU6IHN0cl0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCisiZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdWywgb3BlbmVyOiBOb25lXSkgLT4gZmlsZSBJTyBvYmplY3RcbiIKICJcbiIKLSJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JyBvciAnYScgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLFxuIgotIndyaXRpbmcgb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiIKLSJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW5cbiIKLSJvcGVuZWQgZm9yIHdyaXRpbmcuICBBZGQgYSAnKycgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzXG4iCi0icmVhZGluZyBhbmQgd3JpdGluZy4iKTsKKyJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JywgJ3gnIG9yICdhJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksXG4iCisid3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdFxuIgorImRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiBpdCBhbHJlYWR5XG4iCisiZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXNcbiIKKyJ3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLkFkZCBhICcrJyB0byB0aGUgbW9kZVxuIgorInRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnlcbiIKKyJwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGVcbiIKKyJvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLlxuIgorIipvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcipcbiIKKyJyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLiIpOwogCiBQeURvY19TVFJWQVIocmVhZF9kb2MsCiAicmVhZChzaXplOiBpbnQpIC0+IGJ5dGVzLiAgcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCBiYTg2MTQ2Li5iYWJiMDE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtNTksOCArNTksOSBAQAogICAgb2YgdGhlIElPQmFzZSBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHZpcnR1YWwgYGNsb3NlZGAgYXR0cmlidXRlIGFzIHJldHVybmVkCiAgICBieSB3aGF0ZXZlciBzdWJjbGFzcy4gKi8KIAorX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKICNkZWZpbmUgSVNfQ0xPU0VEKHNlbGYpIFwKLSAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiKQorICAgIF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfX19JT0Jhc2VfY2xvc2VkKQogCiAvKiBJbnRlcm5hbCBtZXRob2RzICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTcsNyArOTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGlvYmFzZV90ZWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAic2VlayIsICJpaSIsIDAsIDEpOworICAgIF9QeV9JREVOVElGSUVSKHNlZWspOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfc2VlaywgImlpIiwgMCwgMSk7CiB9CiAKIFB5RG9jX1NUUlZBUihpb2Jhc2VfdHJ1bmNhdGVfZG9jLApAQCAtMTU2LDE5ICsxNTksNiBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoSVNfQ0xPU0VEKHNlbGYpKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9nZXRfZGljdChQeU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihzZWxmKTsKLSAgICBQeU9iamVjdCAqZGljdDsKLSAgICBhc3NlcnQoZGljdHB0cik7Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGRpY3QgPSAqZGljdHB0ciA9IFB5RGljdF9OZXcoKTsKLSAgICBQeV9YSU5DUkVGKGRpY3QpOwotICAgIHJldHVybiBkaWN0OwotfQotCiBQeU9iamVjdCAqCiBfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MCwxMiArMTgwLDEzIEBACiBpb2Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKIAogICAgIGlmIChJU19DTE9TRUQoc2VsZikpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCiAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZiwgX1B5SU9fc3RyX2ZsdXNoLCBOVUxMKTsKLSAgICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiLCBQeV9UcnVlKTsKKyAgICBfUHlPYmplY3RfU2V0QXR0cklkKHNlbGYsICZQeUlkX19fSU9CYXNlX2Nsb3NlZCwgUHlfVHJ1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQ2NCwxMiArNDU1LDE0IEBACiAgICAgaW50IGhhc19wZWVrID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKKyAgICBfUHlfSURFTlRJRklFUihwZWVrKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJwZWVrIikpCisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfcGVlaykpCiAgICAgICAgIGhhc19wZWVrID0gMTsKIAogICAgIGJ1ZmZlciA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwpAQCAtNDgxLDcgKzQ3NCw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpiOwogCiAgICAgICAgIGlmIChoYXNfcGVlaykgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInBlZWsiLCAiaSIsIDEpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcGVlaywgImkiLCAxKTsKICAgICAgICAgICAgIGlmIChyZWFkYWhlYWQgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC01MjEsNyArNTE0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWFkYWhlYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgYiA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLCAibiIsIG5yZWFkYWhlYWQpOworICAgICAgICBiID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLCAibiIsIG5yZWFkYWhlYWQpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC02MTMsNyArNjA2LDkgQEAKICAgICAgICAgLyogWFhYIHNwZWNpYWwtY2FzaW5nIHRoaXMgbWFkZSBzZW5zZSBpbiB0aGUgUHl0aG9uIHZlcnNpb24gaW4gb3JkZXIKICAgICAgICAgICAgdG8gcmVtb3ZlIHRoZSBieXRlY29kZSBpbnRlcnByZXRhdGlvbiBvdmVyaGVhZCwgYnV0IGl0IGNvdWxkCiAgICAgICAgICAgIHByb2JhYmx5IGJlIHJlbW92ZWQgaGVyZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiZXh0ZW5kIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZXh0ZW5kKTsKKyAgICAgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9leHRlbmQsICJPIiwgc2VsZik7CisKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzE2LDcgKzcxMSw3IEBACiB9OwogCiBzdGF0aWMgUHlHZXRTZXREZWYgaW9iYXNlX2dldHNldFtdID0gewotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKWlvYmFzZV9nZXRfZGljdCwgTlVMTCwgTlVMTH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBOVUxMLCBOVUxMfSwKICAgICB7ImNsb3NlZCIsIChnZXR0ZXIpaW9iYXNlX2Nsb3NlZF9nZXQsIE5VTEwsIE5VTEx9LAogICAgIHtOVUxMfQogfTsKQEAgLTc5Myw4ICs3ODgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZGFsbCIsIE5VTEwpOworICAgIGlmIChuIDwgMCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKKworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkYWxsLCBOVUxMKTsKKyAgICB9CiAKICAgICAvKiBUT0RPOiBhbGxvY2F0ZSBhIGJ5dGVzIG9iamVjdCBkaXJlY3RseSBpbnN0ZWFkIGFuZCBtYW51YWxseSBjb25zdHJ1Y3QKICAgICAgICBhIHdyaXRhYmxlIG1lbW9yeXZpZXcgcG9pbnRpbmcgdG8gaXQuICovCkBAIC04MzUsOCArODMzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeU9iamVjdCAqZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCAxZjFmYTQwLi45ZDczODg0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTEsMTkgKzEsMzIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImFjY3UuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAogLyogSW1wbGVtZW50YXRpb24gbm90ZTogdGhlIGJ1ZmZlciBpcyBhbHdheXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nZXIKICAgIHRoYW4gdGhlIGVuY2xvc2VkIHN0cmluZywgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiBfUHlJT19maW5kX2xpbmVfZW5kaW5nLgogKi8KIAorI2RlZmluZSBTVEFURV9SRUFMSVpFRCAxCisjZGVmaW5lIFNUQVRFX0FDQ1VNVUxBVElORyAyCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfVU5JQ09ERSAqYnVmOworICAgIFB5X1VDUzQgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IHBvczsKICAgICBQeV9zc2l6ZV90IHN0cmluZ19zaXplOwogICAgIHNpemVfdCBidWZfc2l6ZTsKIAorICAgIC8qIFRoZSBzdHJpbmdpbyBvYmplY3QgY2FuIGJlIGluIHR3byBzdGF0ZXM6IGFjY3VtdWxhdGluZyBvciByZWFsaXplZC4KKyAgICAgICBJbiBhY2N1bXVsYXRpbmcgc3RhdGUsIHRoZSBpbnRlcm5hbCBidWZmZXIgY29udGFpbnMgbm90aGluZyBhbmQKKyAgICAgICB0aGUgY29udGVudHMgYXJlIGdpdmVuIGJ5IHRoZSBlbWJlZGRlZCBfUHlBY2N1IHN0cnVjdHVyZS4KKyAgICAgICBJbiByZWFsaXplZCBzdGF0ZSwgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBtZWFuaW5nZnVsIGFuZCB0aGUKKyAgICAgICBfUHlBY2N1IGlzIGRlc3Ryb3llZC4KKyAgICAqLworICAgIGludCBzdGF0ZTsKKyAgICBfUHlBY2N1IGFjY3U7CisKICAgICBjaGFyIG9rOyAvKiBpbml0aWFsaXplZD8gKi8KICAgICBjaGFyIGNsb3NlZDsKICAgICBjaGFyIHJlYWR1bml2ZXJzYWw7CkBAIC0yMSw3ICszNCw3IEBACiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgUHlPYmplY3QgKnJlYWRubDsKICAgICBQeU9iamVjdCAqd3JpdGVubDsKLSAgICAKKwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gc3RyaW5naW87CkBAIC00MCw2ICs1MywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsgXAogICAgIH0KIAorI2RlZmluZSBFTlNVUkVfUkVBTElaRUQoc2VsZikgXAorICAgIGlmIChyZWFsaXplKHNlbGYpIDwgMCkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCiBQeURvY19TVFJWQVIoc3RyaW5naW9fZG9jLAogICAgICJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgogICAgICJcbiIKQEAgLTU2LDcgKzc0LDcgQEAKICAgICAvKiBIZXJlLCB1bnNpZ25lZCB0eXBlcyBhcmUgdXNlZCB0byBhdm9pZCBkZWFsaW5nIHdpdGggc2lnbmVkIGludGVnZXIKICAgICAgICBvdmVyZmxvdywgd2hpY2ggaXMgdW5kZWZpbmVkIGluIEMuICovCiAgICAgc2l6ZV90IGFsbG9jID0gc2VsZi0+YnVmX3NpemU7Ci0gICAgUHlfVU5JQ09ERSAqbmV3X2J1ZiA9IE5VTEw7CisgICAgUHlfVUNTNCAqbmV3X2J1ZiA9IE5VTEw7CiAKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogCkBAIC04NCwxMCArMTAyLDkgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBpZiAoYWxsb2MgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgaWYgKGFsbG9jID4gUFlfU0laRV9NQVggLyBzaXplb2YoUHlfVUNTNCkpCiAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgbmV3X2J1ZiA9IChQeV9VTklDT0RFICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvYyAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgbmV3X2J1ZiA9IChQeV9VQ1M0ICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsIGFsbG9jICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICBpZiAobmV3X2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMywxNCArMTIwLDYyIEBACiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZV9pbnRlcm1lZGlhdGUoc3RyaW5naW8gKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmludGVybWVkaWF0ZSA9IF9QeUFjY3VfRmluaXNoKCZzZWxmLT5hY2N1KTsKKyAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOworICAgIGlmIChpbnRlcm1lZGlhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeUFjY3VfSW5pdCgmc2VsZi0+YWNjdSkgfHwKKyAgICAgICAgX1B5QWNjdV9BY2N1bXVsYXRlKCZzZWxmLT5hY2N1LCBpbnRlcm1lZGlhdGUpKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CisgICAgcmV0dXJuIGludGVybWVkaWF0ZTsKK30KKworc3RhdGljIGludAorcmVhbGl6ZShzdHJpbmdpbyAqc2VsZikKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqaW50ZXJtZWRpYXRlOworCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX1JFQUxJWkVEKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhc3NlcnQoc2VsZi0+c3RhdGUgPT0gU1RBVEVfQUNDVU1VTEFUSU5HKTsKKyAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOworCisgICAgaW50ZXJtZWRpYXRlID0gX1B5QWNjdV9GaW5pc2goJnNlbGYtPmFjY3UpOworICAgIGlmIChpbnRlcm1lZGlhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQXBwZW5kIHRoZSBpbnRlcm1lZGlhdGUgc3RyaW5nIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIuCisgICAgICAgVGhlIGxlbmd0aCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgorICAgICAqLworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGludGVybWVkaWF0ZSk7CisgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgbGVuKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGludGVybWVkaWF0ZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KGludGVybWVkaWF0ZSwgc2VsZi0+YnVmLCBsZW4sIDApKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKGludGVybWVkaWF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIEludGVybmFsIHJvdXRpbmUgZm9yIHdyaXRpbmcgYSB3aG9sZSBQeVVuaWNvZGUgb2JqZWN0IHRvIHRoZSBidWZmZXIgb2YgYQogICAgU3RyaW5nSU8gb2JqZWN0LiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZXJyb3IuICovCiBzdGF0aWMgUHlfc3NpemVfdAogd3JpdGVfc3RyKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqb2JqKQogewotICAgIFB5X1VOSUNPREUgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7CisKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogICAgIGFzc2VydChzZWxmLT5wb3MgPj0gMCk7CiAKQEAgLTEzMiw5ICsxOTcsMTEgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoZGVjb2RlZCk7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOwotCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShkZWNvZGVkKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZGVjb2RlZCk7CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIAogICAgIC8qIFRoaXMgb3ZlcmZsb3cgY2hlY2sgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeS4gSG93ZXZlciwgaXQgYXZvaWRzIHVzIHRvCkBAIC0xNDUsNiArMjEyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IHBvc2l0aW9uIHRvbyBsYXJnZSIpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQorCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORykgeworICAgICAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPT0gc2VsZi0+cG9zKSB7CisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKCZzZWxmLT5hY2N1LCBkZWNvZGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICBnb3RvIHN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlYWxpemUoc2VsZikpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCiAgICAgaWYgKHNlbGYtPnBvcyArIGxlbiA+IHNlbGYtPnN0cmluZ19zaXplKSB7CiAgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIHNlbGYtPnBvcyArIGxlbikgPCAwKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMTYxLDE4ICsyMzksMjIgQEAKIAogICAgICAgICAqLwogICAgICAgICBtZW1zZXQoc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCi0gICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgICAgIChzZWxmLT5wb3MgLSBzZWxmLT5zdHJpbmdfc2l6ZSkgKiBzaXplb2YoUHlfVUNTNCkpOwogICAgIH0KIAogICAgIC8qIENvcHkgdGhlIGRhdGEgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwgb3ZlcndyaXRpbmcgc29tZSBvZiB0aGUKICAgICAgICBleGlzdGluZyBkYXRhIGlmIHNlbGYtPnBvcyA8IHNlbGYtPnN0cmluZ19zaXplLiAqLwotICAgIG1lbWNweShzZWxmLT5idWYgKyBzZWxmLT5wb3MsIHN0ciwgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5idWYgKyBzZWxmLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJ1Zl9zaXplIC0gc2VsZi0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKKyAgICAgICAgZ290byBmYWlsOwogCitzdWNjZXNzOgogICAgIC8qIFNldCB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgaW50ZXJuYWwgc3RyaW5nIGlmIGl0IGhhcyBjaGFuZ2VkLiAqLwotICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8IHNlbGYtPnBvcykgeworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplIDwgc2VsZi0+cG9zKQogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IHNlbGYtPnBvczsKLSAgICB9CiAKICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xOTAsNyArMjcyLDEwIEBACiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+YnVmLCBzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORykKKyAgICAgICAgcmV0dXJuIG1ha2VfaW50ZXJtZWRpYXRlKHNlbGYpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzZWxmLT5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOwogfQogCiBQeURvY19TVFJWQVIoc3RyaW5naW9fdGVsbF9kb2MsCkBAIC0yMTQsNyArMjk5LDcgQEAKIHN0cmluZ2lvX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbjsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7CisgICAgUHlfVUNTNCAqb3V0cHV0OwogICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CkBAIC0yNDUsMjEgKzMzMCwyOSBAQAogICAgICAgICAgICAgc2l6ZSA9IDA7CiAgICAgfQogCisgICAgLyogT3B0aW1pemF0aW9uIGZvciBzZWVrKDApOyByZWFkKCkgKi8KKyAgICBpZiAoc2VsZi0+c3RhdGUgPT0gU1RBVEVfQUNDVU1VTEFUSU5HICYmIHNlbGYtPnBvcyA9PSAwICYmIHNpemUgPT0gbikgeworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gbWFrZV9pbnRlcm1lZGlhdGUoc2VsZik7CisgICAgICAgIHNlbGYtPnBvcyA9IHNlbGYtPnN0cmluZ19zaXplOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKICAgICBvdXRwdXQgPSBzZWxmLT5idWYgKyBzZWxmLT5wb3M7CiAgICAgc2VsZi0+cG9zICs9IHNpemU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShvdXRwdXQsIHNpemUpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIHNpemUpOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIsIHVzZWQgYnkgc3RyaW5naW9fcmVhZGxpbmUgYW5kIHN0cmluZ2lvX2l0ZXJuZXh0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogX3N0cmluZ2lvX3JlYWRsaW5lKHN0cmluZ2lvICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KQogewotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCAqZW5kLCBvbGRfY2hhcjsKKyAgICBQeV9VQ1M0ICpzdGFydCwgKmVuZCwgb2xkX2NoYXI7CiAgICAgUHlfc3NpemVfdCBsZW4sIGNvbnN1bWVkOwogCiAgICAgLyogSW4gY2FzZSBvZiBvdmVyc2VlaywgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoc2VsZi0+cG9zID49IHNlbGYtPnN0cmluZ19zaXplKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKIAogICAgIHN0YXJ0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwogICAgIGlmIChsaW1pdCA8IDAgfHwgbGltaXQgPiBzZWxmLT5zdHJpbmdfc2l6ZSAtIHNlbGYtPnBvcykKQEAgLTI3MCwxNCArMzYzLDE0IEBACiAgICAgKmVuZCA9ICdcMCc7CiAgICAgbGVuID0gX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICAgICAgc2VsZi0+cmVhZHRyYW5zbGF0ZSwgc2VsZi0+cmVhZHVuaXZlcnNhbCwgc2VsZi0+cmVhZG5sLAotICAgICAgICBzdGFydCwgZW5kLCAmY29uc3VtZWQpOworICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCwgKGNoYXIqKXN0YXJ0LCAoY2hhciopZW5kLCAmY29uc3VtZWQpOwogICAgICplbmQgPSBvbGRfY2hhcjsKICAgICAvKiBJZiB3ZSBoYXZlbid0IGZvdW5kIGFueSBsaW5lIGVuZGluZywgd2UganVzdCByZXR1cm4gZXZlcnl0aGluZwogICAgICAgIChgY29uc3VtZWRgIGlzIGlnbm9yZWQpLiAqLwogICAgIGlmIChsZW4gPCAwKQogICAgICAgICBsZW4gPSBsaW1pdDsKICAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RhcnQsIGxlbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIHN0YXJ0LCBsZW4pOwogfQogCiBQeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZGxpbmVfZG9jLApAQCAtMjk1LDYgKzM4OCw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZSIsICZhcmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CisgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogCiAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKICAgICAgICAgbGltaXQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKQEAgLTMxNiw2ICs0MTAsNyBAQAogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYpID09ICZQeVN0cmluZ0lPX1R5cGUpIHsKICAgICAgICAgLyogU2tpcCBtZXRob2QgY2FsbCBvdmVyaGVhZCBmb3Igc3BlZWQgKi8KQEAgLTMzNyw3ICs0MzIsNyBAQAogICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0YgKi8KICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4Niw2ICs0ODEsNyBAQAogICAgIH0KIAogICAgIGlmIChzaXplIDwgc2VsZi0+c3RyaW5nX3NpemUpIHsKKyAgICAgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBzaXplKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzaXplOwpAQCAtNDYyLDggKzU1OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKIAogICAgIGlmIChzaXplID4gMCAmJiB3cml0ZV9zdHIoc2VsZiwgb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDg0LDYgKzU4Miw3IEBACiAgICAgLyogRnJlZSB1cCBzb21lIG1lbW9yeSAqLwogICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNTEzLDYgKzYxMiw3IEBACiAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmKTsKICAgICAgICAgc2VsZi0+YnVmID0gTlVMTDsKICAgICB9CisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNTM1LDcgKzYzNSw3IEBACiAgICAgLyogdHBfYWxsb2MgaW5pdGlhbGl6ZXMgYWxsIHRoZSBmaWVsZHMgdG8gemVyby4gU28gd2UgZG9uJ3QgaGF2ZSB0bwogICAgICAgIGluaXRpYWxpemUgdGhlbSBoZXJlLiAqLwogCi0gICAgc2VsZi0+YnVmID0gKFB5X1VOSUNPREUgKilQeU1lbV9NYWxsb2MoMCk7CisgICAgc2VsZi0+YnVmID0gKFB5X1VDUzQgKilQeU1lbV9NYWxsb2MoMCk7CiAgICAgaWYgKHNlbGYtPmJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01NTEsNiArNjUxLDcgQEAKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAgICAgY2hhciAqbmV3bGluZSA9ICJcbiI7CisgICAgUHlfc3NpemVfdCB2YWx1ZV9sZW47CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9POl9faW5pdF9fIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKQEAgLTU5Miw2ICs2OTMsNyBAQAogCiAgICAgc2VsZi0+b2sgPSAwOwogCisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNjI4LDE5ICs3MzAsMjcgQEAKICAgICAvKiBOb3cgZXZlcnl0aGluZyBpcyBzZXQgdXAsIHJlc2l6ZSBidWZmZXIgdG8gc2l6ZSBvZiBpbml0aWFsIHZhbHVlLAogICAgICAgIGFuZCBjb3B5IGl0ICovCiAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSAwOwotICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dldFNpemUodmFsdWUpOworICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSBQeV9Ob25lKQorICAgICAgICB2YWx1ZV9sZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlX2xlbiA9IDA7CisgICAgaWYgKHZhbHVlX2xlbiA+IDApIHsKICAgICAgICAgLyogVGhpcyBpcyBhIGhldXJpc3RpYywgZm9yIG5ld2xpbmUgdHJhbnNsYXRpb24gbWlnaHQgY2hhbmdlCiAgICAgICAgICAgIHRoZSBzdHJpbmcgbGVuZ3RoLiAqLwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBsZW4pIDwgMCkKKyAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgMCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOwogICAgICAgICBzZWxmLT5wb3MgPSAwOwogICAgICAgICBpZiAod3JpdGVfc3RyKHNlbGYsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiBFbXB0eSBzdHJpbmdpbyBvYmplY3QsIHdlIGNhbiBzdGFydCBieSBhY2N1bXVsYXRpbmcgKi8KICAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgMCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoX1B5QWNjdV9Jbml0KCZzZWxmLT5hY2N1KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CiAgICAgfQogICAgIHNlbGYtPnBvcyA9IDA7CiAKQEAgLTc2MCwxMSArODcwLDIyIEBACiAgICAgICAgb25jZSBieSBfX2luaXRfXy4gU28gd2UgZG8gbm90IHRha2UgYW55IGNoYW5jZSBhbmQgcmVwbGFjZSBvYmplY3QncwogICAgICAgIGJ1ZmZlciBjb21wbGV0ZWx5LiAqLwogICAgIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBidWZzaXplKSA8IDApCisgICAgICAgIFB5T2JqZWN0ICppdGVtOworICAgICAgICBQeV9VQ1M0ICpidWY7CisgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZTsKKworICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCk7CisgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VDUzRDb3B5KGl0ZW0pOworICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgYnVmc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworCisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGJ1ZnNpemUpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOwogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IGJ1ZnNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDJmYmI4ZjMuLmE5MzA0OWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC0xMSw2ICsxMSwyNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGRlY29kZSk7CitfUHlfSURFTlRJRklFUihmaWxlbm8pOworX1B5X0lERU5USUZJRVIoZmx1c2gpOworX1B5X0lERU5USUZJRVIoZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKK19QeV9JREVOVElGSUVSKG1vZGUpOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihyYXcpOworX1B5X0lERU5USUZJRVIocmVhZCk7CitfUHlfSURFTlRJRklFUihyZWFkMSk7CitfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CitfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKK19QeV9JREVOVElGSUVSKHJlc2V0KTsKK19QeV9JREVOVElGSUVSKHNlZWspOworX1B5X0lERU5USUZJRVIoc2Vla2FibGUpOworX1B5X0lERU5USUZJRVIoc2V0c3RhdGUpOworX1B5X0lERU5USUZJRVIodGVsbCk7CitfUHlfSURFTlRJRklFUih3cml0YWJsZSk7CisKIC8qIFRleHRJT0Jhc2UgKi8KIAogUHlEb2NfU1RSVkFSKHRleHRpb2Jhc2VfZG9jLApAQCAtMjc0LDE4ICsyOTUsMjYgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBvdXRwdXRfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgb3V0cHV0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CiAgICAgaWYgKHNlbGYtPnBlbmRpbmdjciAmJiAoZmluYWwgfHwgb3V0cHV0X2xlbiA+IDApKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dDsKLSAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG91dHB1dF9sZW4gKyAxKTsKKyAgICAgICAgLyogUHJlZml4IG91dHB1dCB3aXRoIENSICovCisgICAgICAgIGludCBraW5kOworICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQ7CisgICAgICAgIGNoYXIgKm91dDsKKworICAgICAgICBtb2RpZmllZCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X2xlbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob3V0cHV0KSk7CiAgICAgICAgIGlmIChtb2RpZmllZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUobW9kaWZpZWQpOwotICAgICAgICBvdXRbMF0gPSAnXHInOwotICAgICAgICBtZW1jcHkob3V0ICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgIG91dHB1dF9sZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobW9kaWZpZWQpOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfREFUQShtb2RpZmllZCk7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBQeVVuaWNvZGVfREFUQShtb2RpZmllZCksIDAsICdccicpOworICAgICAgICBtZW1jcHkob3V0ICsga2luZCwgUHlVbmljb2RlX0RBVEEob3V0cHV0KSwga2luZCAqIG91dHB1dF9sZW4pOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CisgICAgICAgIG91dHB1dCA9IG1vZGlmaWVkOyAvKiBvdXRwdXQgcmVtYWlucyByZWFkeSAqLwogICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAwOwogICAgICAgICBvdXRwdXRfbGVuKys7CiAgICAgfQpAQCAtMjk1LDIxICszMjQsMTMgQEAKICAgICAgKi8KICAgICBpZiAoIWZpbmFsKSB7CiAgICAgICAgIGlmIChvdXRwdXRfbGVuID4gMAotICAgICAgICAgICAgJiYgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KVtvdXRwdXRfbGVuIC0gMV0gPT0gJ1xyJykgewotCi0gICAgICAgICAgICBpZiAoUHlfUkVGQ05UKG91dHB1dCkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dHB1dF9sZW4gLSAxKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9sZW4gLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb2RpZmllZDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICYmIFB5VW5pY29kZV9SRUFEX0NIQVIob3V0cHV0LCBvdXRwdXRfbGVuIC0gMSkgPT0gJ1xyJykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX1N1YnN0cmluZyhvdXRwdXQsIDAsIG91dHB1dF9sZW4gLTEpOworICAgICAgICAgICAgaWYgKG1vZGlmaWVkID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CiAgICAgICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAxOwogICAgICAgICB9CiAgICAgfQpAQCAtMzE3LDEzICszMzgsMTUgQEAKICAgICAvKiBSZWNvcmQgd2hpY2ggbmV3bGluZXMgYXJlIHJlYWQgYW5kIGRvIG5ld2xpbmUgdHJhbnNsYXRpb24gaWYgZGVzaXJlZCwKICAgICAgICBhbGwgaW4gb25lIHBhc3MuICovCiAgICAgewotICAgICAgICBQeV9VTklDT0RFICppbl9zdHI7CisgICAgICAgIHZvaWQgKmluX3N0cjsKICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgIGludCBzZWVubmwgPSBzZWxmLT5zZWVubmw7CiAgICAgICAgIGludCBvbmx5X2xmID0gMDsKKyAgICAgICAgaW50IGtpbmQ7CiAKLSAgICAgICAgaW5fc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgICAgIGluX3N0ciA9IFB5VW5pY29kZV9EQVRBKG91dHB1dCk7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvdXRwdXQpOwogCiAgICAgICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CkBAIC0zMzIsNyArMzU1LDcgQEAKICAgICAgICAgICAgZm9yIHRoZSBcciAqYnl0ZSogd2l0aCB0aGUgbGliYydzIG9wdGltaXplZCBtZW1jaHIuCiAgICAgICAgICAgICovCiAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9MRiB8fCBzZWVubmwgPT0gMCkgewotICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpID09IE5VTEwpOworICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBraW5kICogbGVuKSA9PSBOVUxMKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvbmx5X2xmKSB7CkBAIC0zNDAsNTEgKzM2Myw1MSBAQAogICAgICAgICAgICAgICAgKHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRvIGJlIGRvbmUsIGV2ZW4gd2hlbiBpbiB0cmFuc2xhdGlvbiBtb2RlKQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gMCAmJgotICAgICAgICAgICAgICAgIG1lbWNocihpbl9zdHIsICdcbicsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnMsICplbmQ7Ci0gICAgICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47Ci0gICAgICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnMgPiAnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbm5sIHw9IFNFRU5fTEY7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBtZW1jaHIoaW5fc3RyLCAnXG4nLCBraW5kICogbGVuKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGM7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBpbl9zdHIsIGkpID4gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzID4gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogRmluaXNoZWQ6IHdlIGhhdmUgc2Nhbm5lZCBmb3IgbmV3bGluZXMsIGFuZCBub25lIG9mIHRoZW0KICAgICAgICAgICAgICAgIG5lZWQgdHJhbnNsYXRpbmcgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghc2VsZi0+dHJhbnNsYXRlKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzLCAqZW5kOworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYWxyZWFkeSBzZWVuIGFsbCBuZXdsaW5lIHR5cGVzLCBubyBuZWVkIHRvIHNjYW4gYWdhaW4gKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgZ290byBlbmRzY2FuOwotICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgIGVuZCA9IGluX3N0ciArIGxlbjsKICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjOwogICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyA+ICdccicpCi0gICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBjID0gKnMrKzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA+ICdccicpCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOwogICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwotICAgICAgICAgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocyA+IGVuZCkKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBsZW4pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzLDYxICs0MTYsNTEgQEAKICAgICAgICAgICAgIDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0cmFuc2xhdGVkID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKm91dF9zdHI7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICppbiwgKm91dCwgKmVuZDsKLSAgICAgICAgICAgIGlmIChQeV9SRUZDTlQob3V0cHV0KSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQotICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlcmUgaXMgc29tZXRoaW5nIHRvIHRyYW5zbGF0ZS4gT24gdGhlIG90aGVyIGhhbmQsCi0gICAgICAgICAgICAgICAgICAgbW9zdCBkZWNvZGVycyBzaG91bGQgb25seSBvdXRwdXQgbm9uLXNoYXJlZCBzdHJpbmdzLCBpLmUuCi0gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gaXMgZG9uZSBpbiBwbGFjZS4gKi8KLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHRyYW5zbGF0ZWQpID09IDEpOwotICAgICAgICAgICAgICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh0cmFuc2xhdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgIHZvaWQgKnRyYW5zbGF0ZWQ7CisgICAgICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKG91dHB1dCk7CisgICAgICAgICAgICB2b2lkICppbl9zdHIgPSBQeVVuaWNvZGVfREFUQShvdXRwdXQpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpbiwgb3V0OworICAgICAgICAgICAgLyogWFhYOiBQcmV2aW91cyBpbi1wbGFjZSB0cmFuc2xhdGlvbiBoZXJlIGlzIGRpc2FibGVkIGFzCisgICAgICAgICAgICAgICByZXNpemluZyBpcyBub3QgcG9zc2libGUgYW55bW9yZSAqLworICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQorICAgICAgICAgICAgICAgd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgdG8gdHJhbnNsYXRlLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgICAgICAgIHdlIGFscmVhZHkga25vdyB0aGVyZSBpcyBhIFxyIGJ5dGUsIHNvIGNoYW5jZXMgYXJlIGhpZ2gKKyAgICAgICAgICAgICAgIHRoYXQgc29tZXRoaW5nIG5lZWRzIHRvIGJlIGRvbmUuICovCisgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlNZW1fTWFsbG9jKGtpbmQgKiBsZW4pOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBvdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRfc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHJhbnNsYXRlZCk7Ci0gICAgICAgICAgICBpbiA9IGluX3N0cjsKLSAgICAgICAgICAgIG91dCA9IG91dF9zdHI7Ci0gICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47CisgICAgICAgICAgICBpbiA9IG91dCA9IDA7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKGMgPSAqaW4rKykgPiAnXHInKQotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSBjOworICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4rKykpID4gJ1xyJykKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIHRyYW5zbGF0ZWQsIG91dCsrLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgICAgICpvdXQrKyA9IGM7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCB0cmFuc2xhdGVkLCBvdXQrKywgYyk7CiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmluID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4pID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAnXG4nOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssICdcbicpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGluID4gZW5kKQorICAgICAgICAgICAgICAgIGlmIChpbiA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKm91dCsrID0gYzsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssIGMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgIT0gb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gdHJhbnNsYXRlZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvdXQgLSBvdXRfc3RyICE9IGxlbikgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dCAtIG91dF9zdHIpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLCB0cmFuc2xhdGVkLCBvdXQpOworICAgICAgICAgICAgUHlNZW1fRnJlZSh0cmFuc2xhdGVkKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPnNlZW5ubCB8PSBzZWVubmw7CiAgICAgfQpAQCAtNTE0LDggKzUyNyw4IEBACiAgICAgZmxhZyA+Pj0gMTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRzdGF0ZSIsICIoKE9LKSkiLCBidWZmZXIsIGZsYWcpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9zZXRzdGF0ZSwgIigoT0spKSIsIGJ1ZmZlciwgZmxhZyk7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTYxNyw3ICs2MzAsNyBAQAogICAgICJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgogICAgICJcbiIKICAgICAiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCi0gICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcuXG4iCisgICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgogICAgICJcbiIKICAgICAiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUgdGhlXG4iCiAgICAgImNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCkBAIC02ODcsMTIgKzcwMCwxNiBAQAogICAgIFB5T2JqZWN0ICpwZW5kaW5nX2J5dGVzOyAgICAgICAvKiBsaXN0IG9mIGJ5dGVzIG9iamVjdHMgd2FpdGluZyB0byBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0dGVuLCBvciBOVUxMICovCiAgICAgUHlfc3NpemVfdCBwZW5kaW5nX2J5dGVzX2NvdW50OwotICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKwogICAgIC8qIHNuYXBzaG90IGlzIGVpdGhlciBOb25lLCBvciBhIHR1cGxlIChkZWNfZmxhZ3MsIG5leHRfaW5wdXQpIHdoZXJlCiAgICAgICogZGVjX2ZsYWdzIGlzIHRoZSBzZWNvbmQgKGludGVnZXIpIGl0ZW0gb2YgdGhlIGRlY29kZXIgc3RhdGUgYW5kCiAgICAgICogbmV4dF9pbnB1dCBpcyB0aGUgY2h1bmsgb2YgaW5wdXQgYnl0ZXMgdGhhdCBjb21lcyBuZXh0IGFmdGVyIHRoZQogICAgICAqIHNuYXBzaG90IHBvaW50LiAgV2UgdXNlIHRoaXMgdG8gcmVjb25zdHJ1Y3QgZGVjb2RlciBzdGF0ZXMgaW4gdGVsbCgpLgogICAgICAqLworICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKyAgICAvKiBCeXRlcy10by1jaGFyYWN0ZXJzIHJhdGlvIGZvciB0aGUgY3VycmVudCBjaHVuay4gU2VydmVzIGFzIGlucHV0IGZvcgorICAgICAgIHRoZSBoZXVyaXN0aWMgaW4gdGVsbCgpLiAqLworICAgIGRvdWJsZSBiMmNyYXRpbzsKIAogICAgIC8qIENhY2hlIHJhdyBvYmplY3QgaWYgaXQncyBhIEZpbGVJTyBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmF3OwpAQCAtNzA4LDI1ICs3MjUsMjEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhc2NpaV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHV0ZjE2YmVfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYxNmxlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03NDAsMjUgKzc1MywyMiBAQAogICAgICAgICByZXR1cm4gdXRmMTZsZV9lbmNvZGUoc2VsZiwgdGV4dCk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYzMmJlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAxKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmMzJsZV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzcyLDI1ICs3ODIsMjAgQEAKICAgICAgICAgcmV0dXJuIHV0ZjMybGVfZW5jb2RlKHNlbGYsIHRleHQpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmOF9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHRleHQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycykpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbGF0aW4xX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogLyogTWFwIG5vcm1hbGl6ZWQgZW5jb2RpbmcgbmFtZXMgb250byB0aGUgc3BlY2lhbGl6ZWQgZW5jb2RpbmcgZnVuY3MgKi8KQEAgLTg1OSwxMSArODY0LDEyIEBACiAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID0gMDsKICAgICBzZWxmLT5wZW5kaW5nX2J5dGVzX2NvdW50ID0gMDsKICAgICBzZWxmLT5lbmNvZGVmdW5jID0gTlVMTDsKKyAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIFRyeSBvcy5kZXZpY2VfZW5jb2RpbmcoZmlsZW5vKSAqLwogICAgICAgICBQeU9iamVjdCAqZmlsZW5vOwotICAgICAgICBmaWxlbm8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgImZpbGVubyIsIE5VTEwpOworICAgICAgICBmaWxlbm8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgLyogSWdub3JlIG9ubHkgQXR0cmlidXRlRXJyb3IgYW5kIFVuc3VwcG9ydGVkT3BlcmF0aW9uICovCiAgICAgICAgIGlmIChmaWxlbm8gPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpIHx8CkBAIC04NzUsOSArODgxLDEzIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RhdGUtPm9zX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlX2VuY29kaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTiIsIGZpbGVubyk7CisgICAgICAgICAgICBpbnQgZmQgPSBfUHlMb25nX0FzSW50KGZpbGVubyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5vKTsKKyAgICAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5lbmNvZGluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYtPmVuY29kaW5nKSkKQEAgLTg5NCw4ICs5MDQsOCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgIHVzZV9sb2NhbGU6Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICAgICAgc3RhdGUtPmxvY2FsZV9tb2R1bGUsICJnZXRwcmVmZXJyZWRlbmNvZGluZyIsIE5VTEwpOworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgICAgIHN0YXRlLT5sb2NhbGVfbW9kdWxlLCAmUHlJZF9nZXRwcmVmZXJyZWRlbmNvZGluZywgIk8iLCBQeV9GYWxzZSk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgICBjYXRjaF9JbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAvKgpAQCAtOTYwLDcgKzk3MCw3IEBACiAjZW5kaWYKIAogICAgIC8qIEJ1aWxkIHRoZSBkZWNvZGVyIG9iamVjdCAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAicmVhZGFibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC05ODUsNyArOTk1LDcgQEAKICAgICB9CiAKICAgICAvKiBCdWlsZCB0aGUgZW5jb2RlciBvYmplY3QgKi8KLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3dyaXRhYmxlLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTAwMiw3ICsxMDEyLDcgQEAKICAgICAgICAgY2kgPSBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogICAgICAgICBpZiAoY2kgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2ksICJuYW1lIik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2ksICZQeUlkX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYoY2kpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTEwMjksNyArMTAzOSw3IEBACiAgICAgaWYgKFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFJlYWRlcl9UeXBlIHx8CiAgICAgICAgIFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFdyaXRlcl9UeXBlIHx8CiAgICAgICAgIFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFJhbmRvbV9UeXBlKSB7Ci0gICAgICAgIHJhdyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYnVmZmVyLCAicmF3Iik7CisgICAgICAgIHJhdyA9IF9QeU9iamVjdF9HZXRBdHRySWQoYnVmZmVyLCAmUHlJZF9yYXcpOwogICAgICAgICAvKiBDYWNoZSB0aGUgcmF3IEZpbGVJTyBvYmplY3QgdG8gc3BlZWQgdXAgJ2Nsb3NlZCcgY2hlY2tzICovCiAgICAgICAgIGlmIChyYXcgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMTA0Myw3ICsxMDUzLDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyYXcpOwogICAgIH0KIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfc2Vla2FibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC0xMDUyLDcgKzEwNjIsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIHNlbGYtPnNlZWthYmxlID0gc2VsZi0+dGVsbGluZyA9IHI7CiAKLSAgICBzZWxmLT5oYXNfcmVhZDEgPSBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGJ1ZmZlciwgInJlYWQxIik7CisgICAgc2VsZi0+aGFzX3JlYWQxID0gX1B5T2JqZWN0X0hhc0F0dHJJZChidWZmZXIsICZQeUlkX3JlYWQxKTsKIAogICAgIHNlbGYtPmVuY29kaW5nX3N0YXJ0X29mX3N0cmVhbSA9IDA7CiAgICAgaWYgKHNlbGYtPnNlZWthYmxlICYmIHNlbGYtPmVuY29kZXIpIHsKQEAgLTEyMTgsMTggKzEyMjgsNiBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShjb25zdCBQeV9VTklDT0RFICopCi1maW5kY2hhcihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5X1VOSUNPREUgY2gpCi17Ci0gICAgLyogbGlrZSB3Y3NjaHIsIGJ1dCBkb2Vzbid0IHN0b3AgYXQgTlVMTCBjaGFyYWN0ZXJzICovCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgaWYgKCpzID09IGNoKQotICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgIHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KIC8qIEZsdXNoIHRoZSBpbnRlcm5hbCB3cml0ZSBidWZmZXIuIFRoaXMgZG9lc24ndCBleHBsaWNpdGx5IGZsdXNoIHRoZQogICAgdW5kZXJseWluZyBidWZmZXJlZCBvYmplY3QsIHRob3VnaC4gKi8KIHN0YXRpYyBpbnQKQEAgLTEyNzQsNiArMTI3Miw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGV4dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKHNlbGYtPmVuY29kZXIgPT0gTlVMTCkKQEAgLTEyODEsMTYgKzEyODIsMTUgQEAKIAogICAgIFB5X0lOQ1JFRih0ZXh0KTsKIAotICAgIHRleHRsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZSh0ZXh0KTsKKyAgICB0ZXh0bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCk7CiAKICAgICBpZiAoKHNlbGYtPndyaXRldHJhbnNsYXRlICYmIHNlbGYtPndyaXRlbmwgIT0gTlVMTCkgfHwgc2VsZi0+bGluZV9idWZmZXJpbmcpCi0gICAgICAgIGlmIChmaW5kY2hhcihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwgJ1xuJykpCisgICAgICAgIGlmIChQeVVuaWNvZGVfRmluZENoYXIodGV4dCwgJ1xuJywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCksIDEpICE9IC0xKQogICAgICAgICAgICAgaGFzbGYgPSAxOwogCiAgICAgaWYgKGhhc2xmICYmIHNlbGYtPndyaXRldHJhbnNsYXRlICYmIHNlbGYtPndyaXRlbmwgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbmV3dGV4dCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICB0ZXh0LCAicmVwbGFjZSIsICJzcyIsICJcbiIsIHNlbGYtPndyaXRlbmwpOworICAgICAgICBQeU9iamVjdCAqbmV3dGV4dCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICB0ZXh0LCAmUHlJZF9yZXBsYWNlLCAic3MiLCAiXG4iLCBzZWxmLT53cml0ZW5sKTsKICAgICAgICAgUHlfREVDUkVGKHRleHQpOwogICAgICAgICBpZiAobmV3dGV4dCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzAxLDggKzEzMDEsNyBAQAogICAgICAgICBuZWVkZmx1c2ggPSAxOwogICAgIGVsc2UgaWYgKHNlbGYtPmxpbmVfYnVmZmVyaW5nICYmCiAgICAgICAgIChoYXNsZiB8fAotICAgICAgICAgZmluZGNoYXIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksICdccicpKSkKKyAgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcih0ZXh0LCAnXHInLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZXh0KSwgMSkgIT0gLTEpKQogICAgICAgICBuZWVkZmx1c2ggPSAxOwogCiAgICAgLyogWFhYIFdoYXQgaWYgd2Ugd2VyZSBqdXN0IHJlYWRpbmc/ICovCkBAIC0xMzQ2LDcgKzEzNDUsNyBAQAogICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyKSB7Ci0gICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInJlc2V0IiwgTlVMTCk7CisgICAgICAgIHJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfcmVzZXQsIE5VTEwpOwogICAgICAgICBpZiAocmV0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHJldCk7CkBAIC0xMzc0LDcgKzEzNzMsOCBAQAogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBhdmFpbCA9IChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+ZGVjb2RlZF9jaGFycykKKyAgICAvKiBkZWNvZGVkX2NoYXJzIGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5Ii4gKi8KKyAgICBhdmFpbCA9IChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5kZWNvZGVkX2NoYXJzKQogICAgICAgICAgICAgIC0gc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkKTsKIAogICAgIGFzc2VydChhdmFpbCA+PSAwKTsKQEAgLTEzODMsOSArMTM4Myw5IEBACiAgICAgICAgIG4gPSBhdmFpbDsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQgPiAwIHx8IG4gPCBhdmFpbCkgewotICAgICAgICBjaGFycyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmRlY29kZWRfY2hhcnMpCi0gICAgICAgICAgICArIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCwgbik7CisgICAgICAgIGNoYXJzID0gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLT5kZWNvZGVkX2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkICsgbik7CiAgICAgICAgIGlmIChjaGFycyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQwMSwxMiArMTQwMSwxMyBAQAogLyogUmVhZCBhbmQgZGVjb2RlIHRoZSBuZXh0IGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgQnVmZmVyZWRSZWFkZXIuCiAgKi8KIHN0YXRpYyBpbnQKLXRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayh0ZXh0aW8gKnNlbGYpCit0ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemVfaGludCkKIHsKICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY19mbGFncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmlucHV0X2NodW5rID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVjb2RlZF9jaGFycywgKmNodW5rX3NpemU7CisgICAgUHlfc3NpemVfdCBuYnl0ZXMsIG5jaGFyczsKICAgICBpbnQgZW9mOwogCiAgICAgLyogVGhlIHJldHVybiB2YWx1ZSBpcyBUcnVlIHVubGVzcyBFT0Ygd2FzIHJlYWNoZWQuICBUaGUgZGVjb2RlZCBzdHJpbmcgaXMKQEAgLTE0NDIsNyArMTQ0MywxMCBAQAogICAgIH0KIAogICAgIC8qIFJlYWQgYSBjaHVuaywgZGVjb2RlIGl0LCBhbmQgcHV0IHRoZSByZXN1bHQgaW4gc2VsZi5fZGVjb2RlZF9jaGFycy4gKi8KLSAgICBjaHVua19zaXplID0gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPmNodW5rX3NpemUpOworICAgIGlmIChzaXplX2hpbnQgPiAwKSB7CisgICAgICAgIHNpemVfaGludCA9IChQeV9zc2l6ZV90KShQeV9NQVgoc2VsZi0+YjJjcmF0aW8sIDEuMCkgKiBzaXplX2hpbnQpOworICAgIH0KKyAgICBjaHVua19zaXplID0gUHlMb25nX0Zyb21Tc2l6ZV90KFB5X01BWChzZWxmLT5jaHVua19zaXplLCBzaXplX2hpbnQpKTsKICAgICBpZiAoY2h1bmtfc2l6ZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5idWZmZXIsCkBAIC0xNDUzLDcgKzE0NTcsOCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soaW5wdXRfY2h1bmspKTsKIAotICAgIGVvZiA9IChQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspID09IDApOworICAgIG5ieXRlcyA9IFB5Qnl0ZXNfU2l6ZShpbnB1dF9jaHVuayk7CisgICAgZW9mID0gKG5ieXRlcyA9PSAwKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkgewogICAgICAgICBkZWNvZGVkX2NoYXJzID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoCkBAIC0xNDY3LDggKzE0NzIsMTUgQEAKICAgICAvKiBUT0RPIHNhbml0eSBjaGVjazogaXNpbnN0YW5jZShkZWNvZGVkX2NoYXJzLCB1bmljb2RlKSAqLwogICAgIGlmIChkZWNvZGVkX2NoYXJzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGRlY29kZWRfY2hhcnMpID09IC0xKQorICAgICAgICBnb3RvIGZhaWw7CiAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBkZWNvZGVkX2NoYXJzKTsKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWRfY2hhcnMpID4gMCkKKyAgICBuY2hhcnMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChkZWNvZGVkX2NoYXJzKTsKKyAgICBpZiAobmNoYXJzID4gMCkKKyAgICAgICAgc2VsZi0+YjJjcmF0aW8gPSAoZG91YmxlKSBuYnl0ZXMgLyBuY2hhcnM7CisgICAgZWxzZQorICAgICAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKKyAgICBpZiAobmNoYXJzID4gMCkKICAgICAgICAgZW9mID0gMDsKIAogICAgIGlmIChzZWxmLT50ZWxsaW5nKSB7CkBAIC0xNTE1LDEyICsxNTI3LDE3IEBACiAKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgLyogUmVhZCBldmVyeXRoaW5nICovCi0gICAgICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAicmVhZCIsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqYnl0ZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZCwgTlVMTCk7CiAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgZGVjb2RlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsIF9QeUlPX3N0cl9kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcywgUHlfVHJ1ZSwgTlVMTCk7CisKKyAgICAgICAgaWYgKFB5X1RZUEUoc2VsZi0+ZGVjb2RlcikgPT0gJlB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlKQorICAgICAgICAgICAgZGVjb2RlZCA9IF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKHNlbGYtPmRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMsIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoCisgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX2RlY29kZSwgYnl0ZXMsIFB5X1RydWUsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMTU0NiwxMSArMTU2MywxMyBAQAogICAgICAgICByZXN1bHQgPSB0ZXh0aW93cmFwcGVyX2dldF9kZWNvZGVkX2NoYXJzKHNlbGYsIG4pOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKIAogICAgICAgICAvKiBLZWVwIHJlYWRpbmcgY2h1bmtzIHVudGlsIHdlIGhhdmUgbiBjaGFyYWN0ZXJzIHRvIHJldHVybiAqLwogICAgICAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgewotICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYpOworICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYsIHJlbWFpbmluZyk7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC0xNTY2LDEzICsxNTg1LDE0IEBACiAgICAgICAgICAgICAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIHJlc3VsdCkgPCAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCkgPiAwICYmCisgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChjaHVua3MsIHJlc3VsdCkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmVzdWx0ID0gdGV4dGlvd3JhcHBlcl9nZXRfZGVjb2RlZF9jaGFycyhzZWxmLCByZW1haW5pbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjaHVua3MgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKQEAgLTE1OTIsMzYgKzE2MTIsMzkgQEAKIH0KIAogCi0vKiBOT1RFOiBgZW5kYCBtdXN0IHBvaW50IHRvIHRoZSByZWFsIGVuZCBvZiB0aGUgUHlfVU5JQ09ERSBzdG9yYWdlLAorLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VDUzQgc3RvcmFnZSwKICAgIHRoYXQgaXMgdG8gdGhlIE5VTCBjaGFyYWN0ZXIuIE90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBwcm9kdWNlCiAgICBpbmNvcnJlY3QgcmVzdWx0cy4gKi8KLXN0YXRpYyBQeV9VTklDT0RFICoKLWZpbmRfY29udHJvbF9jaGFyKFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X1VOSUNPREUgY2gpCitzdGF0aWMgY2hhciAqCitmaW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY2hhciAqcywgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBzdGFydDsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBhc3NlcnQoY2ggPCAyNTYpOworICAgICAgICByZXR1cm4gKGNoYXIgKikgbWVtY2hyKCh2b2lkICopIHMsIChjaGFyKSBjaCwgZW5kIC0gcyk7CisgICAgfQogICAgIGZvciAoOzspIHsKLSAgICAgICAgd2hpbGUgKCpzID4gY2gpCi0gICAgICAgICAgICBzKys7Ci0gICAgICAgIGlmICgqcyA9PSBjaCkKKyAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApID4gY2gpCisgICAgICAgICAgICBzICs9IGtpbmQ7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA9PSBjaCkKICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICBpZiAocyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcysrOworICAgICAgICBzICs9IGtpbmQ7CiAgICAgfQogfQogCiBQeV9zc2l6ZV90CiBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IGVuZCAtIHN0YXJ0OworICAgIFB5X3NzaXplX3QgbGVuID0gKChjaGFyKillbmQgLSAoY2hhciopc3RhcnQpL2tpbmQ7CiAKICAgICBpZiAodHJhbnNsYXRlZCkgewogICAgICAgICAvKiBOZXdsaW5lcyBhcmUgYWxyZWFkeSB0cmFuc2xhdGVkLCBvbmx5IHNlYXJjaCBmb3IgXG4gKi8KLSAgICAgICAgUHlfVU5JQ09ERSAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoc3RhcnQsIGVuZCwgJ1xuJyk7CisgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOwogICAgICAgICBpZiAocG9zICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTYzMSw2MyArMTY1NCw2NiBAQAogICAgICAgICAvKiBVbml2ZXJzYWwgbmV3bGluZSBzZWFyY2guIEZpbmQgYW55IG9mIFxyLCBcclxuLCBcbgogICAgICAgICAgKiBUaGUgZGVjb2RlciBlbnN1cmVzIHRoYXQgXHJcbiBhcmUgbm90IHNwbGl0IGluIHR3byBwaWVjZXMKICAgICAgICAgICovCi0gICAgICAgIFB5X1VOSUNPREUgKnMgPSBzdGFydDsKKyAgICAgICAgY2hhciAqcyA9IHN0YXJ0OwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoOworICAgICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igbm9uLWNvbnRyb2wgY2hhcnMuIFRoZSBsb29wIGFsd2F5cyBlbmRzCi0gICAgICAgICAgICAgICBzaW5jZSB0aGUgUHlfVU5JQ09ERSBzdG9yYWdlIGlzIE5VTC10ZXJtaW5hdGVkLiAqLwotICAgICAgICAgICAgd2hpbGUgKCpzID4gJ1xyJykKLSAgICAgICAgICAgICAgICBzKys7CisgICAgICAgICAgICAgICBzaW5jZSB0aGUgVW5pY29kZSBzdHJpbmcgaXMgTlVMLXRlcm1pbmF0ZWQuICovCisgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPiAnXHInKQorICAgICAgICAgICAgICAgIHMgKz0ga2luZDsKICAgICAgICAgICAgIGlmIChzID49IGVuZCkgewogICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICpzKys7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApOworICAgICAgICAgICAgcyArPSBraW5kOwogICAgICAgICAgICAgaWYgKGNoID09ICdcbicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCpzID09ICdcbicpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogTm9uLXVuaXZlcnNhbCBtb2RlLiAqLwotICAgICAgICBQeV9zc2l6ZV90IHJlYWRubF9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVhZG5sKTsKLSAgICAgICAgUHlfVU5JQ09ERSAqbmwgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZWFkbmwpOworICAgICAgICBQeV9zc2l6ZV90IHJlYWRubF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZWFkbmwpOworICAgICAgICBjaGFyICpubCA9IFB5VW5pY29kZV9EQVRBKHJlYWRubCk7CisgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoc3RhcnQsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBwb3MgLSBzdGFydCArIDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICplID0gZW5kIC0gcmVhZG5sX2xlbiArIDE7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpwb3M7CisgICAgICAgICAgICBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgICAgICBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOworICAgICAgICAgICAgY2hhciAqcG9zOwogICAgICAgICAgICAgaWYgKGUgPCBzKQogICAgICAgICAgICAgICAgIGUgPSBzOwogICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHMsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gTlVMTCB8fCBwb3MgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IHJlYWRubF9sZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAocG9zW2ldICE9IG5sW2ldKQorICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcG9zLCBpKSAhPSBubFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoaSA9PSByZWFkbmxfbGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyByZWFkbmxfbGVuOwotICAgICAgICAgICAgICAgIHMgPSBwb3MgKyAxOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgcmVhZG5sX2xlbjsKKyAgICAgICAgICAgICAgICBzID0gcG9zICsga2luZDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGUsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgZSwgZW5kLCBubFswXSk7CiAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IHBvcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IChwb3MgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MDgsMTUgKzE3MzQsMTYgQEAKICAgICBjaHVua2VkID0gMDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICAgICAgY2hhciAqcHRyOwogICAgICAgICBQeV9zc2l6ZV90IGxpbmVfbGVuOworICAgICAgICBpbnQga2luZDsKICAgICAgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IDA7CiAKICAgICAgICAgLyogRmlyc3QsIGdldCBzb21lIGRhdGEgaWYgbmVjZXNzYXJ5ICovCiAgICAgICAgIHJlcyA9IDE7CiAgICAgICAgIHdoaWxlICghc2VsZi0+ZGVjb2RlZF9jaGFycyB8fAotICAgICAgICAgICAgICAgIVB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5kZWNvZGVkX2NoYXJzKSkgewotICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYpOworICAgICAgICAgICAgICAgIVB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmRlY29kZWRfY2hhcnMpKSB7CisgICAgICAgICAgICByZXMgPSB0ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsoc2VsZiwgMCk7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC0xNzQ2LDE4ICsxNzczLDI0IEBACiAgICAgICAgICAgICBhc3NlcnQoc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID09IDApOwogICAgICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Db25jYXQocmVtYWluaW5nLCBzZWxmLT5kZWNvZGVkX2NoYXJzKTsKICAgICAgICAgICAgIHN0YXJ0ID0gMDsKLSAgICAgICAgICAgIG9mZnNldF90b19idWZmZXIgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVtYWluaW5nKTsKKyAgICAgICAgICAgIG9mZnNldF90b19idWZmZXIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZW1haW5pbmcpOwogICAgICAgICAgICAgUHlfQ0xFQVIocmVtYWluaW5nKTsKICAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmUpOwotICAgICAgICBsaW5lX2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShsaW5lKTsKKyAgICAgICAgcHRyID0gUHlVbmljb2RlX0RBVEEobGluZSk7CisgICAgICAgIGxpbmVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChsaW5lKTsKIAogICAgICAgICBlbmRwb3MgPSBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgICAgICAgICAgc2VsZi0+cmVhZHRyYW5zbGF0ZSwgc2VsZi0+cmVhZHVuaXZlcnNhbCwgc2VsZi0+cmVhZG5sLAotICAgICAgICAgICAgcHRyICsgc3RhcnQsIHB0ciArIGxpbmVfbGVuLCAmY29uc3VtZWQpOworICAgICAgICAgICAga2luZCwKKyAgICAgICAgICAgIHB0ciArIGtpbmQgKiBzdGFydCwKKyAgICAgICAgICAgIHB0ciArIGtpbmQgKiBsaW5lX2xlbiwKKyAgICAgICAgICAgICZjb25zdW1lZCk7CiAgICAgICAgIGlmIChlbmRwb3MgPj0gMCkgewogICAgICAgICAgICAgZW5kcG9zICs9IHN0YXJ0OwogICAgICAgICAgICAgaWYgKGxpbWl0ID49IDAgJiYgKGVuZHBvcyAtIHN0YXJ0KSArIGNodW5rZWQgPj0gbGltaXQpCkBAIC0xNzgxLDIxICsxODE0LDIwIEBACiAgICAgICAgICAgICAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwdHIgKyBzdGFydCwgZW5kcG9zIC0gc3RhcnQpOworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZSwgc3RhcnQsIGVuZHBvcyk7CiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIHMpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2h1bmtlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUocyk7CisgICAgICAgICAgICBjaHVua2VkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICB9CiAgICAgICAgIC8qIFRoZXJlIG1heSBiZSBzb21lIHJlbWFpbmluZyBieXRlcyB3ZSdsbCBoYXZlIHRvIHByZXBlbmQgdG8gdGhlCiAgICAgICAgICAgIG5leHQgY2h1bmsgb2YgZGF0YSAqLwogICAgICAgICBpZiAoZW5kcG9zIDwgbGluZV9sZW4pIHsKLSAgICAgICAgICAgIHJlbWFpbmluZyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgcHRyICsgZW5kcG9zLCBsaW5lX2xlbiAtIGVuZHBvcyk7CisgICAgICAgICAgICByZW1haW5pbmcgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmUsIGVuZHBvcywgbGluZV9sZW4pOwogICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTE4MDcsMTkgKzE4MzksMTIgQEAKICAgICBpZiAobGluZSAhPSBOVUxMKSB7CiAgICAgICAgIC8qIE91ciBsaW5lIGVuZHMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyICovCiAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9IGVuZHBvcyAtIG9mZnNldF90b19idWZmZXI7Ci0gICAgICAgIGlmIChzdGFydCA+IDAgfHwgZW5kcG9zIDwgUHlVbmljb2RlX0dFVF9TSVpFKGxpbmUpKSB7Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPT0gMCAmJiBQeV9SRUZDTlQobGluZSkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZsaW5lLCBlbmRwb3MpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUobGluZSkgKyBzdGFydCwgZW5kcG9zIC0gc3RhcnQpOwotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGxpbmUpOwotICAgICAgICAgICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgbGluZSA9IHM7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChzdGFydCA+IDAgfHwgZW5kcG9zIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZSkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaW5lLCBzdGFydCwgZW5kcG9zKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGxpbmUpOworICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgbGluZSA9IHM7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlbWFpbmluZyAhPSBOVUxMKSB7CkBAIC0xODMzLDE2ICsxODU4LDIwIEBACiAgICAgICAgIFB5X0NMRUFSKHJlbWFpbmluZyk7CiAgICAgfQogICAgIGlmIChjaHVua3MgIT0gTlVMTCkgewotICAgICAgICBpZiAobGluZSAhPSBOVUxMICYmIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBsaW5lKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBQeV9DTEVBUihsaW5lKTsKKyAgICAgICAgaWYgKGxpbmUgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBsaW5lKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgfQogICAgICAgICBsaW5lID0gUHlVbmljb2RlX0pvaW4oX1B5SU9fZW1wdHlfc3RyLCBjaHVua3MpOwogICAgICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIFB5X0NMRUFSKGNodW5rcyk7CiAgICAgfQotICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgaWYgKGxpbmUgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoX1B5SU9fZW1wdHlfc3RyKTsKKyAgICAgICAgbGluZSA9IF9QeUlPX2VtcHR5X3N0cjsKKyAgICB9CiAKICAgICByZXR1cm4gbGluZTsKIApAQCAtMTk2NSw4ICsxOTk0LDggQEAKICAgICBpZiAoY29va2llLT5zdGFydF9wb3MgPT0gMCAmJiBjb29raWUtPmRlY19mbGFncyA9PSAwKQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLCBfUHlJT19zdHJfcmVzZXQsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKHlpKSkiLCAiIiwgY29va2llLT5kZWNfZmxhZ3MpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKHlpKSkiLCAiIiwgY29va2llLT5kZWNfZmxhZ3MpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMjAzMCwxMyArMjA1OSwxMiBAQAogICAgICAgICAgKiBzeW5jIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3aXRoIHRoZSBjdXJyZW50IHBvc2l0aW9uLgogICAgICAgICAgKi8KICAgICAgICAgUHlfREVDUkVGKGNvb2tpZU9iaik7Ci0gICAgICAgIGNvb2tpZU9iaiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInRlbGwiLCBOVUxMKTsKKyAgICAgICAgY29va2llT2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90ZWxsLCBOVUxMKTsKICAgICAgICAgaWYgKGNvb2tpZU9iaiA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBlbHNlIGlmICh3aGVuY2UgPT0gMikgewogICAgICAgICAvKiBzZWVrIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlICovCi0KICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNvb2tpZU9iaiwgX1B5SU9femVybywgUHlfRVEpOwogICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTIwNDYsNyArMjA3NCw3IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KIAotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJmbHVzaCIsIE5VTEwpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTIwNTQsMTMgKzIwODIsMTMgQEAKICAgICAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBOVUxMKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwogICAgICAgICBpZiAoc2VsZi0+ZGVjb2RlcikgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAicmVzZXQiLCBOVUxMKTsKKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfcmVzZXQsIE5VTEwpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJzZWVrIiwgImlpIiwgMCwgMik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9zZWVrLCAiaWkiLCAwLCAyKTsKICAgICAgICAgUHlfWERFQ1JFRihjb29raWVPYmopOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KQEAgLTIxMTMsOCArMjE0MSw4IEBACiAKICAgICBpZiAoY29va2llLmNoYXJzX3RvX3NraXApIHsKICAgICAgICAgLyogSnVzdCBsaWtlIF9yZWFkX2NodW5rLCBmZWVkIHRoZSBkZWNvZGVyIGFuZCBzYXZlIGEgc25hcHNob3QuICovCi0gICAgICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBzZWxmLT5idWZmZXIsICJyZWFkIiwgImkiLCBjb29raWUuYnl0ZXNfdG9fZmVlZCk7CisgICAgICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5idWZmZXIsICZQeUlkX3JlYWQsICJpIiwgY29va2llLmJ5dGVzX3RvX2ZlZWQpOwogICAgICAgICBQeU9iamVjdCAqZGVjb2RlZDsKIAogICAgICAgICBpZiAoaW5wdXRfY2h1bmsgPT0gTlVMTCkKQEAgLTIxMjgsMTYgKzIxNTYsMjAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogCi0gICAgICAgIGRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2kiLCBpbnB1dF9jaHVuaywgKGludCljb29raWUubmVlZF9lb2YpOworICAgICAgICBkZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsCisgICAgICAgICAgICAiT2kiLCBpbnB1dF9jaHVuaywgKGludCljb29raWUubmVlZF9lb2YpOwogCiAgICAgICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGVjb2RlZCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogCiAgICAgICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgZGVjb2RlZCk7CiAKICAgICAgICAgLyogU2tpcCBjaGFyc190b19za2lwIG9mIHRoZSBkZWNvZGVkIGNoYXJhY3RlcnMuICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShzZWxmLT5kZWNvZGVkX2NoYXJzKSA8IGNvb2tpZS5jaGFyc190b19za2lwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR2V0TGVuZ3RoKHNlbGYtPmRlY29kZWRfY2hhcnMpIDwgY29va2llLmNoYXJzX3RvX3NraXApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY2FuJ3QgcmVzdG9yZSBsb2dpY2FsIGZpbGUgcG9zaXRpb24iKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQpAQCAtMjE2OSw4ICsyMjAxLDEyIEBACiAgICAgY29va2llX3R5cGUgY29va2llID0gezAsMCwwLDAsMH07CiAgICAgUHlPYmplY3QgKm5leHRfaW5wdXQ7CiAgICAgUHlfc3NpemVfdCBjaGFyc190b19za2lwLCBjaGFyc19kZWNvZGVkOworICAgIFB5X3NzaXplX3Qgc2tpcF9ieXRlcywgc2tpcF9iYWNrOwogICAgIFB5T2JqZWN0ICpzYXZlZF9zdGF0ZSA9IE5VTEw7CiAgICAgY2hhciAqaW5wdXQsICppbnB1dF9lbmQ7CisgICAgY2hhciAqZGVjX2J1ZmZlcjsKKyAgICBQeV9zc2l6ZV90IGRlY19idWZmZXJfbGVuOworICAgIGludCBkZWNfZmxhZ3M7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC0yMTg3LDE3ICsyMjIzLDE3IEBACiAKICAgICBpZiAoX3RleHRpb3dyYXBwZXJfd3JpdGVmbHVzaChzZWxmKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZsdXNoIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlfREVDUkVGKHJlcyk7CiAKLSAgICBwb3NvYmogPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgInRlbGwiLCBOVUxMKTsKKyAgICBwb3NvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfdGVsbCwgTlVMTCk7CiAgICAgaWYgKHBvc29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciA9PSBOVUxMIHx8IHNlbGYtPnNuYXBzaG90ID09IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0IChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwgfHwgUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGVjb2RlZF9jaGFycykgPT0gMCk7CisgICAgICAgIGFzc2VydCAoc2VsZi0+ZGVjb2RlZF9jaGFycyA9PSBOVUxMIHx8IFB5VW5pY29kZV9HZXRMZW5ndGgoc2VsZi0+ZGVjb2RlZF9jaGFycykgPT0gMCk7CiAgICAgICAgIHJldHVybiBwb3NvYmo7CiAgICAgfQogCkBAIC0yMjA2LDYgKzIyNDIsNyBAQAogI2Vsc2UKICAgICBjb29raWUuc3RhcnRfcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwogI2VuZGlmCisgICAgUHlfREVDUkVGKHBvc29iaik7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZmFpbDsKIApAQCAtMjIyMCw1NyArMjI1Nyw5OSBAQAogICAgIC8qIEhvdyBtYW55IGRlY29kZWQgY2hhcmFjdGVycyBoYXZlIGJlZW4gdXNlZCB1cCBzaW5jZSB0aGUgc25hcHNob3Q/ICovCiAgICAgaWYgKHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9PSAwKSAgewogICAgICAgICAvKiBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHNuYXBzaG90IHBvaW50LiAqLwotICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKICAgICAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogICAgIH0KIAogICAgIGNoYXJzX3RvX3NraXAgPSBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQ7CiAKLSAgICAvKiBTdGFydGluZyBmcm9tIHRoZSBzbmFwc2hvdCBwb3NpdGlvbiwgd2Ugd2lsbCB3YWxrIHRoZSBkZWNvZGVyCi0gICAgICogZm9yd2FyZCB1bnRpbCBpdCBnaXZlcyB1cyBlbm91Z2ggZGVjb2RlZCBjaGFyYWN0ZXJzLgotICAgICAqLworICAgIC8qIERlY29kZXIgc3RhdGUgd2lsbCBiZSByZXN0b3JlZCBhdCB0aGUgZW5kICovCiAgICAgc2F2ZWRfc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsKICAgICBpZiAoc2F2ZWRfc3RhdGUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KLSAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCi0gICAgICAgIGdvdG8gZmFpbDsKKyNkZWZpbmUgREVDT0RFUl9HRVRTVEFURSgpIGRvIHsgXAorICAgICAgICBQeU9iamVjdCAqX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgXAorICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsgXAorICAgICAgICBpZiAoX3N0YXRlID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKF9zdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsgXAorICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICB9IFwKKyAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICB9IHdoaWxlICgwKQogCi0gICAgLyogRmVlZCB0aGUgZGVjb2RlciBvbmUgYnl0ZSBhdCBhIHRpbWUuICBBcyB3ZSBnbywgbm90ZSB0aGUKLSAgICAgKiBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQgbG9jYXRpb24KLSAgICAgKiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCisgICAgLyogVE9ETzogcmVwbGFjZSBhc3NlcnQgd2l0aCBleGNlcHRpb24gKi8KKyNkZWZpbmUgREVDT0RFUl9ERUNPREUoc3RhcnQsIGxlbiwgcmVzKSBkbyB7IFwKKyAgICAgICAgUHlPYmplY3QgKl9kZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCggXAorICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgJlB5SWRfZGVjb2RlLCAieSMiLCBzdGFydCwgbGVuKTsgXAorICAgICAgICBpZiAoX2RlY29kZWQgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKF9kZWNvZGVkKSk7IFwKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoX2RlY29kZWQpOyBcCisgICAgICAgIFB5X0RFQ1JFRihfZGVjb2RlZCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgLyogRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgorICAgICAgIGN1cnJlbnQgcG9zICovCisgICAgc2tpcF9ieXRlcyA9IChQeV9zc2l6ZV90KSAoc2VsZi0+YjJjcmF0aW8gKiBjaGFyc190b19za2lwKTsKKyAgICBza2lwX2JhY2sgPSAxOworICAgIGFzc2VydChza2lwX2JhY2sgPD0gUHlCeXRlc19HRVRfU0laRShuZXh0X2lucHV0KSk7CisgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXh0X2lucHV0KTsKKyAgICB3aGlsZSAoc2tpcF9ieXRlcyA+IDApIHsKKyAgICAgICAgLyogRGVjb2RlIHVwIHRvIHRlbXB0YXRpdmUgc3RhcnQgcG9pbnQgKi8KKyAgICAgICAgaWYgKF90ZXh0aW93cmFwcGVyX2RlY29kZXJfc2V0c3RhdGUoc2VsZiwgJmNvb2tpZSkgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgc2tpcF9ieXRlcywgY2hhcnNfZGVjb2RlZCk7CisgICAgICAgIGlmIChjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXApIHsKKyAgICAgICAgICAgIERFQ09ERVJfR0VUU1RBVEUoKTsKKyAgICAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSyAqLworICAgICAgICAgICAgICAgIGNvb2tpZS5kZWNfZmxhZ3MgPSBkZWNfZmxhZ3M7CisgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBjaGFyc19kZWNvZGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljICovCisgICAgICAgICAgICBza2lwX2J5dGVzIC09IGRlY19idWZmZXJfbGVuOworICAgICAgICAgICAgc2tpcF9iYWNrID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHRvbyBmYXIgYWhlYWQsIHNraXAgYmFjayBhIGJpdCAqLworICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2s7CisgICAgICAgICAgICBza2lwX2JhY2sgKj0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2tpcF9ieXRlcyA8PSAwKSB7CisgICAgICAgIHNraXBfYnl0ZXMgPSAwOworICAgICAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KKyAgICBjb29raWUuc3RhcnRfcG9zICs9IHNraXBfYnl0ZXM7CisgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBjaGFyc190b19za2lwOworICAgIGlmIChjaGFyc190b19za2lwID09IDApCisgICAgICAgIGdvdG8gZmluYWxseTsKKworICAgIC8qIFdlIHNob3VsZCBiZSBjbG9zZSB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbi4gIE5vdyBmZWVkIHRoZSBkZWNvZGVyIG9uZQorICAgICAqIGJ5dGUgYXQgYSB0aW1lIHVudGlsIHdlIHJlYWNoIHRoZSBgY2hhcnNfdG9fc2tpcGAgdGFyZ2V0LgorICAgICAqIEFzIHdlIGdvLCBub3RlIHRoZSBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQKKyAgICAgKiBsb2NhdGlvbiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCiAgICAgICogY2FuIHNhZmVseSBzdGFydCBmcm9tIHRoZXJlIGFuZCBhZHZhbmNlIHRvIHRoaXMgbG9jYXRpb24pLgogICAgICAqLwogICAgIGNoYXJzX2RlY29kZWQgPSAwOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcobmV4dF9pbnB1dCk7CiAgICAgaW5wdXRfZW5kID0gaW5wdXQgKyBQeUJ5dGVzX0dFVF9TSVpFKG5leHRfaW5wdXQpOworICAgIGlucHV0ICs9IHNraXBfYnl0ZXM7CiAgICAgd2hpbGUgKGlucHV0IDwgaW5wdXRfZW5kKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdGF0ZTsKLSAgICAgICAgY2hhciAqZGVjX2J1ZmZlcjsKLSAgICAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKLSAgICAgICAgaW50IGRlY19mbGFnczsKKyAgICAgICAgUHlfc3NpemVfdCBuOwogCi0gICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLCAieSMiLCBpbnB1dCwgMSk7Ci0gICAgICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKGRlY29kZWQpKTsKLSAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUoZGVjb2RlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKLQorICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgMSwgbik7CisgICAgICAgIC8qIFdlIGdvdCBuIGNoYXJzIGZvciAxIGJ5dGUgKi8KKyAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBuOwogICAgICAgICBjb29raWUuYnl0ZXNfdG9fZmVlZCArPSAxOwotCi0gICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwotICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShzdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgREVDT0RFUl9HRVRTVEFURSgpOwogCiAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwICYmIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcCkgewogICAgICAgICAgICAgLyogRGVjb2RlciBidWZmZXIgaXMgZW1wdHksIHNvIHRoaXMgaXMgYSBzYWZlIHN0YXJ0IHBvaW50LiAqLwpAQCAtMjI4NiwxMiArMjM2NSwxMiBAQAogICAgIH0KICAgICBpZiAoaW5wdXQgPT0gaW5wdXRfZW5kKSB7CiAgICAgICAgIC8qIFdlIGRpZG4ndCBnZXQgZW5vdWdoIGRlY29kZWQgZGF0YTsgc2lnbmFsIEVPRiB0byBnZXQgbW9yZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgImRlY29kZSIsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOworICAgICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOwogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgICAgIGNoYXJzX2RlY29kZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOworICAgICAgICBjaGFyc19kZWNvZGVkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWQpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgICAgIGNvb2tpZS5uZWVkX2VvZiA9IDE7CiAKQEAgLTIzMDIsOSArMjM4MSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBmaW5hbGx5ICovCi0gICAgUHlfWERFQ1JFRihwb3NvYmopOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwgIihPKSIsIHNhdmVkX3N0YXRlKTsKK2ZpbmFsbHk6CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwgIihPKSIsIHNhdmVkX3N0YXRlKTsKICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzE0LDEzICsyMzkyLDEyIEBACiAgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBQeV9TQUZFX0RPV05DQVNUKGNoYXJzX3RvX3NraXAsIFB5X3NzaXplX3QsIGludCk7CiAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogCi0gIGZhaWw6Ci0gICAgUHlfWERFQ1JFRihwb3NvYmopOworZmFpbDoKICAgICBpZiAoc2F2ZWRfc3RhdGUpIHsKICAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKICAgICAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzNjAsNyArMjQzNyw3IEBACiAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxfaW8uVGV4dElPV3JhcHBlciIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTIzNzYsNyArMjQ1Myw3IEBACiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtb2Rlb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm1vZGUiKTsKKyAgICBtb2Rlb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjQwOCwzNSArMjQ4NSwzNSBAQAogdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJmaWxlbm8iLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJyZWFkYWJsZSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX2lzYXR0eSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImlzYXR0eSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfaXNhdHR5LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NTUsNyArMjUzMiw3IEBACiAgICAgc2VsZi0+dGVsbGluZyA9IHNlbGYtPnNlZWthYmxlOwogICAgIGlmIChfdGV4dGlvd3JhcHBlcl93cml0ZWZsdXNoKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiZmx1c2giLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NzcsMjEgKzI1NTQsMzcgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7IC8qIHN0cmVhbSBhbHJlYWR5IGNsb3NlZCAqLwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEwsICp2YWwsICp0YjsKICAgICAgICAgaWYgKHNlbGYtPmRlYWxsb2NhdGluZykgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJfZGVhbGxvY193YXJuIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9fZGVhbGxvY193YXJuLCAiTyIsIHNlbGYpOwogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZsdXNoIiwgTlVMTCk7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImNsb3NlIiwgTlVMTCk7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9jbG9zZSwgTlVMTCk7CisgICAgICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsMjsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisgICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgICAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiB9CiAKQEAgLTI1MTksMTAgKzI2MTIsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChsaW5lID09IE5VTEwpCisgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0Ygb3Igd291bGQgaGF2ZSBibG9ja2VkICovCiAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwpAQCAtMjUzNyw3ICsyNjMwLDcgQEAKIHRleHRpb3dyYXBwZXJfbmFtZV9nZXQodGV4dGlvICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPmJ1ZmZlciwgIm5hbWUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5idWZmZXIsICZQeUlkX25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IDAxNDM2YjYuLmRiNDVjMjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTEsNSArMSw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiYWNjdS5oIgorCiAjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDYwMDAwICYmICFkZWZpbmVkKFB5X1RZUEUpCiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZW5kaWYKQEAgLTc2LDYgKzc4LDIxIEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgoram9pbl9saXN0X3VuaWNvZGUoUHlPYmplY3QgKmxzdCkKK3sKKyAgICAvKiByZXR1cm4gdScnLmpvaW4obHN0KSAqLworICAgIHN0YXRpYyBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBpZiAoc2VwID09IE5VTEwpIHsKKyAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICAgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbihzZXAsIGxzdCk7Cit9CisKKy8qIEZvcndhcmQgZGVjbHMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKIGFzY2lpX2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cik7CiBzdGF0aWMgUHlPYmplY3QgKgogcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoUHlPYmplY3QqIHNlbGYgVU5VU0VELCBQeU9iamVjdCAqcHlzdHIpOwpAQCAtMTAxLDExICsxMTgsMTEgQEAKIHN0YXRpYyBpbnQKIGVuY29kZXJfY2xlYXIoUHlPYmplY3QgKnNlbGYpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfZW5jb2RlZF9jb25zdChQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCkBAIC0xMjIsMTMgKzEzOSw2IEBACiAjZGVmaW5lIFNfQ0hBUihjKSAoYyA+PSAnICcgJiYgYyA8PSAnficgJiYgYyAhPSAnXFwnICYmIGMgIT0gJyInKQogI2RlZmluZSBJU19XSElURVNQQUNFKGMpICgoKGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdcbicpIHx8ICgoYykgPT0gJ1xyJykpCiAKLSNkZWZpbmUgTUlOX0VYUEFOU0lPTiA2Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIE1BWF9FWFBBTlNJT04gKDIgKiBNSU5fRVhQQU5TSU9OKQotI2Vsc2UKLSNkZWZpbmUgTUFYX0VYUEFOU0lPTiBNSU5fRVhQQU5TSU9OCi0jZW5kaWYKLQogc3RhdGljIGludAogX2NvbnZlcnRQeUludF9Bc1NzaXplX3QoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgKnNpemVfcHRyKQogewpAQCAtMTQ3LDcgKzE1Nyw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hc2NpaV9lc2NhcGVfdW5pY2hhcihQeV9VTklDT0RFIGMsIFB5X1VOSUNPREUgKm91dHB1dCwgUHlfc3NpemVfdCBjaGFycykKK2FzY2lpX2VzY2FwZV91bmljaGFyKFB5X1VDUzQgYywgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBQeV9zc2l6ZV90IGNoYXJzKQogewogICAgIC8qIEVzY2FwZSB1bmljb2RlIGNvZGUgcG9pbnQgYyB0byBBU0NJSSBlc2NhcGUgc2VxdWVuY2VzCiAgICAgaW4gY2hhciAqb3V0cHV0LiBvdXRwdXQgbXVzdCBoYXZlIGF0IGxlYXN0IDEyIGJ5dGVzIHVudXNlZCB0bwpAQCAtMTYyLDI1ICsxNzIsMjMgQEAKICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOwogICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSB2ID0gYyAtIDB4MTAwMDA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCB2ID0gYyAtIDB4MTAwMDA7CiAgICAgICAgICAgICAgICAgYyA9IDB4ZDgwMCB8ICgodiA+PiAxMCkgJiAweDNmZik7CiAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgNCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyAgICAgICkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgOCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgNCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgICAgICAgICAgICAgIGMgPSAweGRjMDAgfCAodiAmIDB4M2ZmKTsKICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gIjAxMjM0NTY3ODlhYmNkZWYiWyhjID4+ICA0KSAmIDB4Zl07Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgICAgICApICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gUHlfaGV4ZGlnaXRzWyhjID4+ICA4KSAmIDB4Zl07CisgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gIDQpICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgIH0KICAgICByZXR1cm4gY2hhcnM7CiB9CkBAIC0xOTIsNTQgKzIwMCw1NSBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGlucHV0X2NoYXJzOwogICAgIFB5X3NzaXplX3Qgb3V0cHV0X3NpemU7Ci0gICAgUHlfc3NpemVfdCBtYXhfb3V0cHV0X3NpemU7CiAgICAgUHlfc3NpemVfdCBjaGFyczsKICAgICBQeU9iamVjdCAqcnZhbDsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7Ci0gICAgUHlfVU5JQ09ERSAqaW5wdXRfdW5pY29kZTsKKyAgICB2b2lkICppbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRwdXQ7CisgICAgaW50IGtpbmQ7CiAKLSAgICBpbnB1dF9jaGFycyA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7Ci0gICAgaW5wdXRfdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBPbmUgY2hhciBpbnB1dCBjYW4gYmUgdXAgdG8gNiBjaGFycyBvdXRwdXQsIGVzdGltYXRlIDQgb2YgdGhlc2UgKi8KLSAgICBvdXRwdXRfc2l6ZSA9IDIgKyAoTUlOX0VYUEFOU0lPTiAqIDQpICsgaW5wdXRfY2hhcnM7Ci0gICAgbWF4X291dHB1dF9zaXplID0gMiArIChpbnB1dF9jaGFycyAqIE1BWF9FWFBBTlNJT04pOwotICAgIHJ2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0cHV0X3NpemUpOworICAgIGlucHV0X2NoYXJzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGlucHV0ID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKKyAgICAvKiBDb21wdXRlIHRoZSBvdXRwdXQgc2l6ZSAqLworICAgIGZvciAoaSA9IDAsIG91dHB1dF9zaXplID0gMjsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOworICAgICAgICBpZiAoU19DSEFSKGMpKQorICAgICAgICAgICAgb3V0cHV0X3NpemUrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2goYykgeworICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICciJzogY2FzZSAnXGInOiBjYXNlICdcZic6CisgICAgICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIG91dHB1dF9zaXplICs9IDI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvdXRwdXRfc2l6ZSArPSBjID49IDB4MTAwMDAgPyAxMiA6IDY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydmFsID0gUHlVbmljb2RlX05ldyhvdXRwdXRfc2l6ZSwgMTI3KTsKICAgICBpZiAocnZhbCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShydmFsKTsKKyAgICBvdXRwdXQgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShydmFsKTsKICAgICBjaGFycyA9IDA7CiAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOwogICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dF9jaGFyczsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IGlucHV0X3VuaWNvZGVbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGlucHV0LCBpKTsKICAgICAgICAgaWYgKFNfQ0hBUihjKSkgewogICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gYzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNoYXJzID0gYXNjaWlfZXNjYXBlX3VuaWNoYXIoYywgb3V0cHV0LCBjaGFycyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG91dHB1dF9zaXplIC0gY2hhcnMgPCAoMSArIE1BWF9FWFBBTlNJT04pKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIG1vcmUgdGhhbiBmb3VyLCBzbyBsZXQncyByZXNpemUgYnkgYSBsb3QgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3X291dHB1dF9zaXplID0gb3V0cHV0X3NpemUgKiAyOwotICAgICAgICAgICAgLyogVGhpcyBpcyBhbiB1cHBlciBib3VuZCAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSA+IG1heF9vdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG5ld19vdXRwdXRfc2l6ZSA9IG1heF9vdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgc2l6ZSBjaGFuZ2VkIGJlZm9yZSByZXNpemluZyAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSAhPSBvdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG91dHB1dF9zaXplID0gbmV3X291dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZydmFsLCBvdXRwdXRfc2l6ZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJ2YWwpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogICAgIG91dHB1dFtjaGFycysrXSA9ICciJzsKLSAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcnZhbCwgY2hhcnMpID09IC0xKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocnZhbCwgMSkpOworI2VuZGlmCiAgICAgcmV0dXJuIHJ2YWw7CiB9CiAKQEAgLTI2NywxOSArMjc2LDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWpvaW5fbGlzdF91bmljb2RlKFB5T2JqZWN0ICpsc3QpCi17Ci0gICAgLyogcmV0dXJuIHUnJy5qb2luKGxzdCkgKi8KLSAgICBzdGF0aWMgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0gICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0pvaW4oc2VwLCBsc3QpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogX2J1aWxkX3J2YWxfaW5kZXhfdHVwbGUoUHlPYmplY3QgKnJ2YWwsIFB5X3NzaXplX3QgaWR4KSB7CiAgICAgLyogcmV0dXJuIChydmFsLCBpZHgpIHR1cGxlLCBzdGVhbGluZyByZWZlcmVuY2UgdG8gcnZhbCAqLwogICAgIFB5T2JqZWN0ICp0cGw7CkBAIC0zMzMsMjIgKzMyOSwzMCBAQAogICAgIFJldHVybiB2YWx1ZSBpcyBhIG5ldyBQeVVuaWNvZGUKICAgICAqLwogICAgIFB5T2JqZWN0ICpydmFsID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7CisgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlfc3NpemVfdCBiZWdpbiA9IGVuZCAtIDE7Ci0gICAgUHlfc3NpemVfdCBuZXh0ID0gYmVnaW47Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOworICAgIFB5X3NzaXplX3QgbmV4dCAvKiA9IGJlZ2luICovOworICAgIGNvbnN0IHZvaWQgKmJ1ZjsKKyAgICBpbnQga2luZDsKICAgICBQeU9iamVjdCAqY2h1bmtzID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2h1bmsgPSBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworCiAgICAgaWYgKGVuZCA8IDAgfHwgbGVuIDw9IGVuZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVuZCBpcyBvdXQgb2YgYm91bmRzIik7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgLyogRmluZCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIG5leHQgZXNjYXBlICovCi0gICAgICAgIFB5X1VOSUNPREUgYyA9IDA7CisgICAgICAgIFB5X1VDUzQgYyA9IDA7CiAgICAgICAgIGZvciAobmV4dCA9IGVuZDsgbmV4dCA8IGxlbjsgbmV4dCsrKSB7Ci0gICAgICAgICAgICBjID0gYnVmW25leHRdOworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY4LDEwIEBACiAgICAgICAgIC8qIFBpY2sgdXAgdGhpcyBjaHVuayBpZiBpdCdzIG5vdCB6ZXJvIGxlbmd0aCAqLwogICAgICAgICBpZiAobmV4dCAhPSBlbmQpIHsKICAgICAgICAgICAgIEFQUEVORF9PTERfQ0hVTksKLSAgICAgICAgICAgIGNodW5rID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZidWZbZW5kXSwgbmV4dCAtIGVuZCk7CisgICAgICAgICAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgICAgICAgICBraW5kLAorICAgICAgICAgICAgICAgICAgICAoY2hhciopYnVmICsga2luZCAqIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgbmV4dCAtIGVuZCk7CiAgICAgICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTM3OCw3ICszODUsNyBAQAogICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcHlzdHIsIGJlZ2luKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotICAgICAgICBjID0gYnVmW25leHRdOworICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgaWYgKGMgIT0gJ3UnKSB7CiAgICAgICAgICAgICAvKiBOb24tdW5pY29kZSBiYWNrc2xhc2ggZXNjYXBlcyAqLwogICAgICAgICAgICAgZW5kID0gbmV4dCArIDE7CkBAIC00MDgsNyArNDE1LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIERlY29kZSA0IGhleCBkaWdpdHMgKi8KICAgICAgICAgICAgIGZvciAoOyBuZXh0IDwgZW5kOyBuZXh0KyspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGRpZ2l0ID0gYnVmW25leHRdOworICAgICAgICAgICAgICAgIFB5X1VDUzQgZGlnaXQgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQpOwogICAgICAgICAgICAgICAgIGMgPDw9IDQ7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChkaWdpdCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CkBAIC00MjUsMjIgKzQzMiwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgICAgIC8qIFN1cnJvZ2F0ZSBwYWlyICovCiAgICAgICAgICAgICBpZiAoKGMgJiAweGZjMDApID09IDB4ZDgwMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgYzIgPSAwOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzIgPSAwOwogICAgICAgICAgICAgICAgIGlmIChlbmQgKyA2ID49IGxlbikgewogICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChidWZbbmV4dCsrXSAhPSAnXFwnIHx8IGJ1ZltuZXh0KytdICE9ICd1JykgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQrKykgIT0gJ1xcJyB8fAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQrKykgIT0gJ3UnKSB7CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiVW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZW5kICs9IDY7CiAgICAgICAgICAgICAgICAgLyogRGVjb2RlIDQgaGV4IGRpZ2l0cyAqLwogICAgICAgICAgICAgICAgIGZvciAoOyBuZXh0IDwgZW5kOyBuZXh0KyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBkaWdpdCA9IGJ1ZltuZXh0XTsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBkaWdpdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGMyIDw8PSA0OwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRpZ2l0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CkBAIC00NjcsMTAgKzQ3NCw5IEBACiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnBhaXJlZCBsb3cgc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIEFQUEVORF9PTERfQ0hVTksKLSAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJmMsIDEpOworICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsICZjLCAxKTsKICAgICAgICAgaWYgKGNodW5rID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQpAQCAtNjA4LDggKzYxNCw5IEBACiAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0ICh1c3VhbGx5IGEgZGljdCwgYnV0IG9iamVjdF9ob29rIGNhbiBjaGFuZ2UgdGhhdCkKICAgICAqLwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpIC0gMTsKKyAgICB2b2lkICpzdHI7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBlbmRfaWR4OwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpydmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTDsKQEAgLTYxNyw2ICs2MjQsMTMgQEAKICAgICBpbnQgaGFzX3BhaXJzX2hvb2sgPSAocy0+b2JqZWN0X3BhaXJzX2hvb2sgIT0gUHlfTm9uZSk7CiAgICAgUHlfc3NpemVfdCBuZXh0X2lkeDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOworCiAgICAgaWYgKGhhc19wYWlyc19ob29rKQogICAgICAgICBydmFsID0gUHlMaXN0X05ldygwKTsKICAgICBlbHNlCkBAIC02MjUsMTUgKzYzOSwxNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciB7ICovCi0gICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgLyogb25seSBsb29wIGlmIHRoZSBvYmplY3QgaXMgbm9uLWVtcHR5ICovCi0gICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdICE9ICd9JykgeworICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7CiAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1lbW9rZXk7CiAKICAgICAgICAgICAgIC8qIHJlYWQga2V5ICovCi0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gIT0gJyInKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICciJykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTY1MywxMyArNjY3LDEzIEBACiAgICAgICAgICAgICBpZHggPSBuZXh0X2lkeDsKIAogICAgICAgICAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGJldHdlZW4ga2V5IGFuZCA6IGRlbGltaXRlciwgcmVhZCA6LCBza2lwIHdoaXRlc3BhY2UgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7Ci0gICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBzdHJbaWR4XSAhPSAnOicpIHsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOworICAgICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICc6JykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBweXN0ciwgaWR4KTsKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZHgrKzsKLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogcmVhZCBhbnkgSlNPTiB0ZXJtICovCiAgICAgICAgICAgICB2YWwgPSBzY2FuX29uY2VfdW5pY29kZShzLCBweXN0ciwgaWR4LCAmbmV4dF9pZHgpOwpAQCAtNjg3LDI2ICs3MDEsMjYgQEAKICAgICAgICAgICAgIGlkeCA9IG5leHRfaWR4OwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYmVmb3JlIH0gb3IgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBiYWlsIGlmIHRoZSBvYmplY3QgaXMgY2xvc2VkIG9yIHdlIGRpZG4ndCBnZXQgdGhlICwgZGVsaW1pdGVyICovCiAgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gPT0gJ30nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICd9JykgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2lkeF0gIT0gJywnKSB7CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJywnKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYWZ0ZXIgLCBkZWxpbWl0ZXIgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIHZlcmlmeSB0aGF0IGlkeCA8IGVuZF9pZHgsIHN0cltpZHhdIHNob3VsZCBiZSAnfScgKi8KLSAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBzdHJbaWR4XSAhPSAnfScpIHsKKyAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7CiAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIG9iamVjdCIsIHB5c3RyLCBlbmRfaWR4KTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KQEAgLTc0MiwxOSArNzU2LDI3IEBACiAKICAgICBSZXR1cm5zIGEgbmV3IFB5TGlzdAogICAgICovCi0gICAgUHlfVU5JQ09ERSAqc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOwotICAgIFB5X3NzaXplX3QgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cikgLSAxOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGVuZF9pZHg7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJ2YWwgPSBQeUxpc3RfTmV3KDApOwogICAgIFB5X3NzaXplX3QgbmV4dF9pZHg7CiAgICAgaWYgKHJ2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKyAgICBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpIC0gMTsKKwogICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciBbICovCi0gICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgIC8qIG9ubHkgbG9vcCBpZiB0aGUgYXJyYXkgaXMgbm9uLWVtcHR5ICovCi0gICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdICE9ICddJykgeworICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ10nKSB7CiAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgewogCiAgICAgICAgICAgICAvKiByZWFkIGFueSBKU09OIHRlcm0gICovCkBAIC03NjksMjYgKzc5MSwyNiBAQAogICAgICAgICAgICAgaWR4ID0gbmV4dF9pZHg7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBiZXR3ZWVuIHRlcm0gYW5kICwgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogYmFpbCBpZiB0aGUgYXJyYXkgaXMgY2xvc2VkIG9yIHdlIGRpZG4ndCBnZXQgdGhlICwgZGVsaW1pdGVyICovCiAgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gPT0gJ10nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICddJykgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2lkeF0gIT0gJywnKSB7CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJywnKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYWZ0ZXIgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgc3RyW2lkeF0gc2hvdWxkIGJlICddJyAqLwotICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICddJykgeworICAgIC8qIHZlcmlmeSB0aGF0IGlkeCA8IGVuZF9pZHgsIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSBzaG91bGQgYmUgJ10nICovCisgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICddJykgewogICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyBvYmplY3QiLCBweXN0ciwgZW5kX2lkeCk7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CkBAIC04MjAsNyArODQyLDcgQEAKIAogICAgIC8qIHJ2YWwgPSBwYXJzZV9jb25zdGFudChjb25zdGFudCkgKi8KICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzLT5wYXJzZV9jb25zdGFudCwgY3N0ciwgTlVMTCk7Ci0gICAgaWR4ICs9IFB5VW5pY29kZV9HRVRfU0laRShjc3RyKTsKKyAgICBpZHggKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3N0cik7CiAgICAgUHlfREVDUkVGKGNzdHIpOwogICAgICpuZXh0X2lkeF9wdHIgPSBpZHg7CiAgICAgcmV0dXJuIHJ2YWw7CkBAIC04MzcsMTUgKzg1OSwyNCBAQAogICAgICAgICBQeUludCwgUHlMb25nLCBvciBQeUZsb2F0LgogICAgICAgICBNYXkgcmV0dXJuIG90aGVyIHR5cGVzIGlmIHBhcnNlX2ludCBvciBwYXJzZV9mbG9hdCBhcmUgc2V0CiAgICAgKi8KLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKSAtIDE7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgZW5kX2lkeDsKICAgICBQeV9zc2l6ZV90IGlkeCA9IHN0YXJ0OwogICAgIGludCBpc19mbG9hdCA9IDA7CiAgICAgUHlPYmplY3QgKnJ2YWw7Ci0gICAgUHlPYmplY3QgKm51bXN0cjsKKyAgICBQeU9iamVjdCAqbnVtc3RyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY3VzdG9tX2Z1bmM7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKyAgICBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpIC0gMTsKIAogICAgIC8qIHJlYWQgYSBzaWduIGlmIGl0J3MgdGhlcmUsIG1ha2Ugc3VyZSBpdCdzIG5vdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgKi8KLSAgICBpZiAoc3RyW2lkeF0gPT0gJy0nKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnLScpIHsKICAgICAgICAgaWR4Kys7CiAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSB7CiAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwpAQCAtODU0LDEyICs4ODUsMTIgQEAKICAgICB9CiAKICAgICAvKiByZWFkIGFzIG1hbnkgaW50ZWdlciBkaWdpdHMgYXMgd2UgZmluZCBhcyBsb25nIGFzIGl0IGRvZXNuJ3Qgc3RhcnQgd2l0aCAwICovCi0gICAgaWYgKHN0cltpZHhdID49ICcxJyAmJiBzdHJbaWR4XSA8PSAnOScpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID49ICcxJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPD0gJzknKSB7CiAgICAgICAgIGlkeCsrOwotICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gPj0gJzAnICYmIHN0cltpZHhdIDw9ICc5JykgaWR4Kys7CisgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIGlkeCsrOwogICAgIH0KICAgICAvKiBpZiBpdCBzdGFydHMgd2l0aCAwIHdlIG9ubHkgZXhwZWN0IG9uZSBpbnRlZ2VyIGRpZ2l0ICovCi0gICAgZWxzZSBpZiAoc3RyW2lkeF0gPT0gJzAnKSB7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICcwJykgewogICAgICAgICBpZHgrKzsKICAgICB9CiAgICAgLyogbm8gaW50ZWdlciBkaWdpdHMsIGVycm9yICovCkBAIC04NjksMjUgKzkwMCwyNSBAQAogICAgIH0KIAogICAgIC8qIGlmIHRoZSBuZXh0IGNoYXIgaXMgJy4nIGZvbGxvd2VkIGJ5IGEgZGlnaXQgdGhlbiByZWFkIGFsbCBmbG9hdCBkaWdpdHMgKi8KLSAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiBzdHJbaWR4XSA9PSAnLicgJiYgc3RyW2lkeCArIDFdID49ICcwJyAmJiBzdHJbaWR4ICsgMV0gPD0gJzknKSB7CisgICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICcuJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID49ICcwJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpIDw9ICc5JykgewogICAgICAgICBpc19mbG9hdCA9IDE7CiAgICAgICAgIGlkeCArPSAyOwotICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gPj0gJzAnICYmIHN0cltpZHhdIDw9ICc5JykgaWR4Kys7CisgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIGlkeCsrOwogICAgIH0KIAogICAgIC8qIGlmIHRoZSBuZXh0IGNoYXIgaXMgJ2UnIG9yICdFJyB0aGVuIG1heWJlIHJlYWQgdGhlIGV4cG9uZW50IChvciBiYWNrdHJhY2spICovCi0gICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgKHN0cltpZHhdID09ICdlJyB8fCBzdHJbaWR4XSA9PSAnRScpKSB7CisgICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnZScgfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICdFJykpIHsKICAgICAgICAgUHlfc3NpemVfdCBlX3N0YXJ0ID0gaWR4OwogICAgICAgICBpZHgrKzsKIAogICAgICAgICAvKiByZWFkIGFuIGV4cG9uZW50IHNpZ24gaWYgcHJlc2VudCAqLwotICAgICAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoc3RyW2lkeF0gPT0gJy0nIHx8IHN0cltpZHhdID09ICcrJykpIGlkeCsrOworICAgICAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICctJyB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJysnKSkgaWR4Kys7CiAKICAgICAgICAgLyogcmVhZCBhbGwgZGlnaXRzICovCi0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAKICAgICAgICAgLyogaWYgd2UgZ290IGEgZGlnaXQsIHRoZW4gcGFyc2UgYXMgZmxvYXQuIGlmIG5vdCwgYmFja3RyYWNrICovCi0gICAgICAgIGlmIChzdHJbaWR4IC0gMV0gPj0gJzAnICYmIHN0cltpZHggLSAxXSA8PSAnOScpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4IC0gMSkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4IC0gMSkgPD0gJzknKSB7CiAgICAgICAgICAgICBpc19mbG9hdCA9IDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC04OTUsMjIgKzkyNiwzOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogY29weSB0aGUgc2VjdGlvbiB3ZSBkZXRlcm1pbmVkIHRvIGJlIGEgbnVtYmVyICovCi0gICAgbnVtc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZzdHJbc3RhcnRdLCBpZHggLSBzdGFydCk7Ci0gICAgaWYgKG51bXN0ciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoaXNfZmxvYXQpIHsKLSAgICAgICAgLyogcGFyc2UgYXMgYSBmbG9hdCB1c2luZyBhIGZhc3QgcGF0aCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjYWxsIHVzZXIgZGVmaW5lZCBtZXRob2QgKi8KLSAgICAgICAgaWYgKHMtPnBhcnNlX2Zsb2F0ICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUpIHsKLSAgICAgICAgICAgIHJ2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHMtPnBhcnNlX2Zsb2F0LCBudW1zdHIsIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcnZhbCA9IFB5RmxvYXRfRnJvbVN0cmluZyhudW1zdHIpOwotICAgICAgICB9CisgICAgaWYgKGlzX2Zsb2F0ICYmIHMtPnBhcnNlX2Zsb2F0ICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUpCisgICAgICAgIGN1c3RvbV9mdW5jID0gcy0+cGFyc2VfZmxvYXQ7CisgICAgZWxzZSBpZiAoIWlzX2Zsb2F0ICYmIHMtPnBhcnNlX2ludCAhPSAoUHlPYmplY3QgKikgJlB5TG9uZ19UeXBlKQorICAgICAgICBjdXN0b21fZnVuYyA9IHMtPnBhcnNlX2ludDsKKyAgICBlbHNlCisgICAgICAgIGN1c3RvbV9mdW5jID0gTlVMTDsKKworICAgIGlmIChjdXN0b21fZnVuYykgeworICAgICAgICAvKiBjb3B5IHRoZSBzZWN0aW9uIHdlIGRldGVybWluZWQgdG8gYmUgYSBudW1iZXIgKi8KKyAgICAgICAgbnVtc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilzdHIgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4IC0gc3RhcnQpOworICAgICAgICBpZiAobnVtc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY3VzdG9tX2Z1bmMsIG51bXN0ciwgTlVMTCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBubyBmYXN0IHBhdGggZm9yIHVuaWNvZGUgLT4gaW50LCBqdXN0IGNhbGwgKi8KLSAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+cGFyc2VfaW50LCBudW1zdHIsIE5VTEwpOworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgLyogU3RyYWlnaHQgY29udmVyc2lvbiB0byBBU0NJSSwgdG8gYXZvaWQgY29zdGx5IGNvbnZlcnNpb24gb2YKKyAgICAgICAgICAgZGVjaW1hbCB1bmljb2RlIGRpZ2l0cyAod2hpY2ggY2Fubm90IGFwcGVhciBoZXJlKSAqLworICAgICAgICBuID0gaWR4IC0gc3RhcnQ7CisgICAgICAgIG51bXN0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7CisgICAgICAgIGlmIChudW1zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhudW1zdHIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBidWZbaV0gPSAoY2hhcikgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpICsgc3RhcnQpOworICAgICAgICB9CisgICAgICAgIGlmIChpc19mbG9hdCkKKyAgICAgICAgICAgIHJ2YWwgPSBQeUZsb2F0X0Zyb21TdHJpbmcobnVtc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnZhbCA9IFB5TG9uZ19Gcm9tU3RyaW5nKGJ1ZiwgTlVMTCwgMTApOwogICAgIH0KICAgICBQeV9ERUNSRUYobnVtc3RyKTsKICAgICAqbmV4dF9pZHhfcHRyID0gaWR4OwpAQCAtOTI4LDEzICs5NzYsMjMgQEAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXJtLgogICAgICovCiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHB5c3RyKTsKKwogICAgIGlmIChpZHggPj0gbGVuZ3RoKSB7CiAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzd2l0Y2ggKHN0cltpZHhdKSB7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkgewogICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgIC8qIHN0cmluZyAqLwogICAgICAgICAgICAgcmV0dXJuIHNjYW5zdHJpbmdfdW5pY29kZShweXN0ciwgaWR4ICsgMSwKQEAgLTk1OCw3ICsxMDE2LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgLyogbnVsbCAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ3UnICYmIHN0cltpZHggKyAyXSA9PSAnbCcgJiYgc3RyW2lkeCArIDNdID09ICdsJykgeworICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICd1JyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdsJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdsJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNDsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTk2Niw3ICsxMDI0LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgIC8qIHRydWUgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgMyA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdyJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ3UnICYmIHN0cltpZHggKyAzXSA9PSAnZScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgMyA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAncicgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAndScgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAzKSA9PSAnZScpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CiAgICAgICAgICAgICAgICAgKm5leHRfaWR4X3B0ciA9IGlkeCArIDQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X1RydWU7CkBAIC05NzQsNyArMTAzMiwxMCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgLyogZmFsc2UgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgNCA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdhJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ2wnICYmIHN0cltpZHggKyAzXSA9PSAncycgJiYgc3RyW2lkeCArIDRdID09ICdlJykgeworICAgICAgICAgICAgaWYgKChpZHggKyA0IDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICdhJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMikgPT0gJ2wnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAzKSA9PSAncycgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDQpID09ICdlJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CiAgICAgICAgICAgICAgICAgKm5leHRfaWR4X3B0ciA9IGlkeCArIDU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X0ZhbHNlOwpAQCAtOTgyLDE5ICsxMDQzLDMzIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnTic6CiAgICAgICAgICAgICAvKiBOYU4gKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgMiA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdhJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ04nKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDIgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ2EnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnTicpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICJOYU4iLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnSSc6CiAgICAgICAgICAgICAvKiBJbmZpbml0eSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA3IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ24nICYmIHN0cltpZHggKyAyXSA9PSAnZicgJiYgc3RyW2lkeCArIDNdID09ICdpJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ24nICYmIHN0cltpZHggKyA1XSA9PSAnaScgJiYgc3RyW2lkeCArIDZdID09ICd0JyAmJiBzdHJbaWR4ICsgN10gPT0gJ3knKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDcgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ24nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnZicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ24nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA1KSA9PSAnaScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDYpID09ICd0JyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNykgPT0gJ3knKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIF9wYXJzZV9jb25zdGFudChzLCAiSW5maW5pdHkiLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAvKiAtSW5maW5pdHkgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgOCA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdJJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ24nICYmIHN0cltpZHggKyAzXSA9PSAnZicgJiYgc3RyW2lkeCArIDRdID09ICdpJyAmJiBzdHJbaWR4ICsgNV0gPT0gJ24nICYmIHN0cltpZHggKyA2XSA9PSAnaScgJiYgc3RyW2lkeCArIDddID09ICd0JyAmJiBzdHJbaWR4ICsgOF0gPT0gJ3knKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDggPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ0knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdmJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA1KSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDYpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNykgPT0gJ3QnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA4KSA9PSAneScpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICItSW5maW5pdHkiLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyMTAsMjIgKzEyODUsMjIgQEAKICAgICAvKiBQeXRob24gY2FsbGFibGUgaW50ZXJmYWNlIHRvIGVuY29kZV9saXN0ZW5jb2RlX29iaiAqLwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqIiwgIl9jdXJyZW50X2luZGVudF9sZXZlbCIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgUHlPYmplY3QgKnJ2YWw7CiAgICAgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWw7CiAgICAgUHlFbmNvZGVyT2JqZWN0ICpzOworICAgIF9QeUFjY3UgYWNjOworCiAgICAgYXNzZXJ0KFB5RW5jb2Rlcl9DaGVjayhzZWxmKSk7CiAgICAgcyA9IChQeUVuY29kZXJPYmplY3QgKilzZWxmOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPTyY6X2l0ZXJlbmNvZGUiLCBrd2xpc3QsCiAgICAgICAgICZvYmosIF9jb252ZXJ0UHlJbnRfQXNTc2l6ZV90LCAmaW5kZW50X2xldmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcnZhbCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKHJ2YWwgPT0gTlVMTCkKKyAgICBpZiAoX1B5QWNjdV9Jbml0KCZhY2MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2YWwpOworICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsICZhY2MsIG9iaiwgaW5kZW50X2xldmVsKSkgeworICAgICAgICBfUHlBY2N1X0Rlc3Ryb3koJmFjYyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gcnZhbDsKKyAgICByZXR1cm4gX1B5QWNjdV9GaW5pc2hBc0xpc3QoJmFjYyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjk3LDE4ICsxMzcyLDE5IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9zdGVhbF9saXN0X2FwcGVuZChQeU9iamVjdCAqbHN0LCBQeU9iamVjdCAqc3RvbGVuKQorX3N0ZWFsX2FjY3VtdWxhdGUoX1B5QWNjdSAqYWNjLCBQeU9iamVjdCAqc3RvbGVuKQogewogICAgIC8qIEFwcGVuZCBzdG9sZW4gYW5kIHRoZW4gZGVjcmVtZW50IGl0cyByZWZlcmVuY2UgY291bnQgKi8KLSAgICBpbnQgcnZhbCA9IFB5TGlzdF9BcHBlbmQobHN0LCBzdG9sZW4pOworICAgIGludCBydmFsID0gX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgc3RvbGVuKTsKICAgICBQeV9ERUNSRUYoc3RvbGVuKTsKICAgICByZXR1cm4gcnZhbDsKIH0KIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpydmFsLCBQeU9iamVjdCAqb2JqLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKK2VuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gb2JqZWN0IG9iaiB0byBhIEpTT04gdGVybSwgcnZhbCBpcyBhIFB5TGlzdCAqLworICAgIC8qIEVuY29kZSBQeXRob24gb2JqZWN0IG9iaiB0byBhIEpTT04gdGVybSAqLwogICAgIFB5T2JqZWN0ICpuZXdvYmo7CiAgICAgaW50IHJ2OwogCkBAIC0xMzE2LDM4ICsxMzkyLDM4IEBACiAgICAgICAgIFB5T2JqZWN0ICpjc3RyID0gX2VuY29kZWRfY29uc3Qob2JqKTsKICAgICAgICAgaWYgKGNzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBjc3RyKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgY3N0cik7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBlbmNvZGVyX2VuY29kZV9zdHJpbmcocywgb2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBlbmNvZGVkKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgZW5jb2RlZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhvYmopKSB7CiAgICAgICAgIFB5T2JqZWN0ICplbmNvZGVkID0gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiBfc3RlYWxfbGlzdF9hcHBlbmQocnZhbCwgZW5jb2RlZCk7CisgICAgICAgIHJldHVybiBfc3RlYWxfYWNjdW11bGF0ZShhY2MsIGVuY29kZWQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBlbmNvZGVyX2VuY29kZV9mbG9hdChzLCBvYmopOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGVuY29kZWQpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBlbmNvZGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMaXN0X0NoZWNrKG9iaikgfHwgUHlUdXBsZV9DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QocywgcnZhbCwgb2JqLCBpbmRlbnRfbGV2ZWwpOworICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9saXN0KHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KICAgICBlbHNlIGlmIChQeURpY3RfQ2hlY2sob2JqKSkgewogICAgICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgZW5jb2RpbmcgYSBKU09OIG9iamVjdCIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9kaWN0KHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKTsKKyAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfZGljdChzLCBhY2MsIG9iaiwgaW5kZW50X2xldmVsKTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgICAgIHJldHVybiBydjsKICAgICB9CkBAIC0xMzc4LDcgKzE0NTQsNyBAQAogCiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBuZXdvYmosIGluZGVudF9sZXZlbCk7CisgICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBhY2MsIG5ld29iaiwgaW5kZW50X2xldmVsKTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAKICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CkBAIC0xMzk4LDkgKzE0NzQsMTAgQEAKIH0KIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCitlbmNvZGVyX2xpc3RlbmNvZGVfZGljdChQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gZGljdCBkY3QgYSBKU09OIHRlcm0sIHJ2YWwgaXMgYSBQeUxpc3QgKi8KKyAgICAvKiBFbmNvZGUgUHl0aG9uIGRpY3QgZGN0IGEgSlNPTiB0ZXJtICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpvcGVuX2RpY3QgPSBOVUxMOwogICAgIHN0YXRpYyBQeU9iamVjdCAqY2xvc2VfZGljdCA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICplbXB0eV9kaWN0ID0gTlVMTDsKQEAgLTE0MjAsNyArMTQ5Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChQeV9TSVpFKGRjdCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5TGlzdF9BcHBlbmQocnZhbCwgZW1wdHlfZGljdCk7CisgICAgICAgIHJldHVybiBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBlbXB0eV9kaWN0KTsKIAogICAgIGlmIChzLT5tYXJrZXJzICE9IFB5X05vbmUpIHsKICAgICAgICAgaW50IGhhc19rZXk7CkBAIC0xNDM4LDcgKzE1MTUsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgb3Blbl9kaWN0KSkKKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgb3Blbl9kaWN0KSkKICAgICAgICAgZ290byBiYWlsOwogCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7CkBAIC0xNTI1LDcgKzE2MDIsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlkeCkgewotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgcy0+aXRlbV9zZXBhcmF0b3IpKQorICAgICAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPml0ZW1fc2VwYXJhdG9yKSkKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KIApAQCAtMTUzMywxNiArMTYxMCwxNiBAQAogICAgICAgICBQeV9DTEVBUihrc3RyKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgZW5jb2RlZCkpIHsKKyAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVuY29kZWQpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGVuY29kZWQpOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5rZXlfc2VwYXJhdG9yKSkKKyAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPmtleV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgZ290byBiYWlsOwogCiAgICAgICAgIHZhbHVlID0gUHlUdXBsZV9HRVRfSVRFTShpdGVtLCAxKTsKLSAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgcnZhbCwgdmFsdWUsIGluZGVudF9sZXZlbCkpCisgICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgdmFsdWUsIGluZGVudF9sZXZlbCkpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIGlkeCArPSAxOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CkBAIC0xNTU2LDE0ICsxNjMzLDEzIEBACiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIFB5X0NMRUFSKGlkZW50KTsKICAgICB9CisgICAgLyogVE9ETyBET0VTIE5PVCBSVU47IGRlYWQgY29kZQogICAgIGlmIChzLT5pbmRlbnQgIT0gUHlfTm9uZSkgewotICAgICAgICAvKiBUT0RPOiBET0VTIE5PVCBSVU4gKi8KICAgICAgICAgaW5kZW50X2xldmVsIC09IDE7Ci0gICAgICAgIC8qCi0gICAgICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKLSAgICAgICAgKi8KLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgY2xvc2VfZGljdCkpCisKKyAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCisgICAgfSovCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGNsb3NlX2RpY3QpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgcmV0dXJuIDA7CiAKQEAgLTE1NzcsOSArMTY1MywxMCBAQAogCiAKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9saXN0KFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQorZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKIHsKLSAgICAvKiBFbmNvZGUgUHl0aG9uIGxpc3Qgc2VxIHRvIGEgSlNPTiB0ZXJtLCBydmFsIGlzIGEgUHlMaXN0ICovCisgICAgLyogRW5jb2RlIFB5dGhvbiBsaXN0IHNlcSB0byBhIEpTT04gdGVybSAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqb3Blbl9hcnJheSA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjbG9zZV9hcnJheSA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICplbXB0eV9hcnJheSA9IE5VTEw7CkBAIC0xNjAwLDcgKzE2NzcsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzX2Zhc3QpID09IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNfZmFzdCk7Ci0gICAgICAgIHJldHVybiBQeUxpc3RfQXBwZW5kKHJ2YWwsIGVtcHR5X2FycmF5KTsKKyAgICAgICAgcmV0dXJuIF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVtcHR5X2FycmF5KTsKICAgICB9CiAKICAgICBpZiAocy0+bWFya2VycyAhPSBQeV9Ob25lKSB7CkBAIC0xNjE5LDcgKzE2OTYsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgb3Blbl9hcnJheSkpCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIG9wZW5fYXJyYXkpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwpAQCAtMTYzMywxMCArMTcxMCwxMCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc19mYXN0KTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvYmogPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc19mYXN0LCBpKTsKICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHJ2YWwsIHMtPml0ZW1fc2VwYXJhdG9yKSkKKyAgICAgICAgICAgIGlmIChfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBzLT5pdGVtX3NlcGFyYXRvcikpCiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKSkKKyAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgYWNjLCBvYmosIGluZGVudF9sZXZlbCkpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogICAgIGlmIChpZGVudCAhPSBOVUxMKSB7CkBAIC0xNjQ0LDE0ICsxNzIxLDE0IEBACiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIFB5X0NMRUFSKGlkZW50KTsKICAgICB9CisKKyAgICAvKiBUT0RPOiBET0VTIE5PVCBSVU4KICAgICBpZiAocy0+aW5kZW50ICE9IFB5X05vbmUpIHsKLSAgICAgICAgLyogVE9ETzogRE9FUyBOT1QgUlVOICovCiAgICAgICAgIGluZGVudF9sZXZlbCAtPSAxOwotICAgICAgICAvKgotICAgICAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCi0gICAgICAgICovCi0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKHJ2YWwsIGNsb3NlX2FycmF5KSkKKworICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKKyAgICB9Ki8KKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgY2xvc2VfYXJyYXkpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgUHlfREVDUkVGKHNfZmFzdCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYyBiL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCmluZGV4IDEwMDFkZDIuLmNjNjg4YmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCkBAIC00Miw0MyArNDIsNiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKkVycm9yOwogCi0vKiBDb252ZXJ0IGEgY2hhciogdG8gYSBVbmljb2RlIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlICovCi1zdGF0aWMgUHlPYmplY3QqCi1zdHIydW5pKGNvbnN0IGNoYXIqIHMpCi17Ci0jaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKLSAgICBzaXplX3QgbmVlZGVkID0gc3RybGVuKHMpOwotI2Vsc2UKLSAgICBzaXplX3QgbmVlZGVkID0gbWJzdG93Y3MoTlVMTCwgcywgMCk7Ci0jZW5kaWYKLSAgICBzaXplX3QgcmVzMTsKLSAgICB3Y2hhcl90IHNtYWxsYnVmWzMwXTsKLSAgICB3Y2hhcl90ICpkZXN0OwotICAgIFB5T2JqZWN0ICpyZXMyOwotICAgIGlmIChuZWVkZWQgPT0gKHNpemVfdCktMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IGJ5dGUgdG8gc3RyaW5nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAobmVlZGVkKnNpemVvZih3Y2hhcl90KSA8IHNpemVvZihzbWFsbGJ1ZikpCi0gICAgICAgIGRlc3QgPSBzbWFsbGJ1ZjsKLSAgICBlbHNlIHsKLSAgICAgICAgZGVzdCA9IFB5TWVtX01hbGxvYygobmVlZGVkKzEpKnNpemVvZih3Y2hhcl90KSk7Ci0gICAgICAgIGlmICghZGVzdCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICAvKiBUaGlzIHNob3VsZG4ndCBmYWlsIG5vdyAqLwotICAgIHJlczEgPSBtYnN0b3djcyhkZXN0LCBzLCBuZWVkZWQrMSk7Ci0jaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKLSAgICBhc3NlcnQocmVzMSAhPSAoc2l6ZV90KS0xKTsKLSNlbHNlCi0gICAgYXNzZXJ0KHJlczEgPT0gbmVlZGVkKTsKLSNlbmRpZgotICAgIHJlczIgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRlc3QsIHJlczEpOwotICAgIGlmIChkZXN0ICE9IHNtYWxsYnVmKQotICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOwotICAgIHJldHVybiByZXMyOwotfQotCiAvKiBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IgZm9ybWF0dGluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzICovCiAKIFB5RG9jX1NUUlZBUihzZXRsb2NhbGVfX2RvY19fLApAQCAtMTQ5LDcgKzExMiw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJ1bnN1cHBvcnRlZCBsb2NhbGUgc2V0dGluZyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0X29iamVjdCA9IHN0cjJ1bmkocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0X29iamVjdCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocmVzdWx0LCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHRfb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKQEAgLTE1OSw3ICsxMjIsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAibG9jYWxlIHF1ZXJ5IGZhaWxlZCIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0X29iamVjdCA9IHN0cjJ1bmkocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0X29iamVjdCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocmVzdWx0LCBOVUxMKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdF9vYmplY3Q7CiB9CkBAIC0xODUsNyArMTQ4LDcgQEAKICAgICAgICBpbnZvbHZlZCBoZXJlaW4gKi8KIAogI2RlZmluZSBSRVNVTFRfU1RSSU5HKHMpXAotICAgIHggPSBzdHIydW5pKGwtPnMpOyAgIFwKKyAgICB4ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShsLT5zLCBOVUxMKTsgICBcCiAgICAgaWYgKCF4KSBnb3RvIGZhaWxlZDtcCiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcocmVzdWx0LCAjcywgeCk7XAogICAgIFB5X1hERUNSRUYoeCkKQEAgLTI3MSw1MSArMjM0LDQzIEBACiBzdGF0aWMgUHlPYmplY3QqCiBQeUxvY2FsZV9zdHJ4ZnJtKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKLSAgICBQeV9VTklDT0RFICpzMDsKLSAgICBQeV9zc2l6ZV90IG4wOwotICAgIHdjaGFyX3QgKnMsICpidWYgPSBOVUxMOwotICAgIHNpemVfdCBuMSwgbjI7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeV9zc2l6ZV90IG4xOworICAgIHdjaGFyX3QgKnMgPSBOVUxMLCAqYnVmID0gTlVMTDsKKyAgICBzaXplX3QgbjI7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFICE9IFNJWkVPRl9XQ0hBUl9UCi0gICAgUHlfc3NpemVfdCBpOwotI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjOnN0cnhmcm0iLCAmczAsICZuMCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnN0cnhmcm0iLCAmc3RyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gU0laRU9GX1dDSEFSX1QKLSAgICBzID0gKHdjaGFyX3QgKikgczA7Ci0jZWxzZQotICAgIHMgPSBQeU1lbV9NYWxsb2MoKG4wKzEpKnNpemVvZih3Y2hhcl90KSk7Ci0gICAgaWYgKCFzKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBmb3IgKGk9MDsgaTw9bjA7IGkrKykKLSAgICAgICAgc1tpXSA9IHMwW2ldOwotI2VuZGlmCisgICAgcyA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHN0ciwgJm4xKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CiAKICAgICAvKiBhc3N1bWUgbm8gY2hhbmdlIGluIHNpemUsIGZpcnN0ICovCi0gICAgbjEgPSB3Y3NsZW4ocykgKyAxOwotICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyhuMSpzaXplb2Yod2NoYXJfdCkpOworICAgIG4xID0gbjEgKyAxOworICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyhuMSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCFidWYpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICBuMiA9IHdjc3hmcm0oYnVmLCBzLCBuMSk7Ci0gICAgaWYgKG4yID49IG4xKSB7CisgICAgaWYgKG4yID49IChzaXplX3QpbjEpIHsKICAgICAgICAgLyogbW9yZSBzcGFjZSBuZWVkZWQgKi8KLSAgICAgICAgYnVmID0gUHlNZW1fUmVhbGxvYyhidWYsIChuMisxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAoIWJ1ZikgeworICAgICAgICB3Y2hhcl90ICogbmV3X2J1ZiA9IFB5TWVtX1JlYWxsb2MoYnVmLCAobjIrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgaWYgKCFuZXdfYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CisgICAgICAgIGJ1ZiA9IG5ld19idWY7CiAgICAgICAgIG4yID0gd2NzeGZybShidWYsIHMsIG4yKzEpOwogICAgIH0KICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1ZiwgbjIpOwotIGV4aXQ6Ci0gICAgaWYgKGJ1ZikgUHlNZW1fRnJlZShidWYpOwotI2lmIFB5X1VOSUNPREVfU0laRSAhPSBTSVpFT0ZfV0NIQVJfVAotICAgIFB5TWVtX0ZyZWUocyk7Ci0jZW5kaWYKK2V4aXQ6CisgICAgaWYgKGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmIChzKQorICAgICAgICBQeU1lbV9GcmVlKHMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQ4NSw3ICs0NDAsNyBAQAogICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBhbiBlbXB0eSBzdHJpbmcgZm9yIG5sX2xhbmdpbmZvKEVSQSkuICAqLwogICAgICAgICAgICAgY29uc3QgY2hhciAqcmVzdWx0ID0gbmxfbGFuZ2luZm8oaXRlbSk7CiAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgIT0gTlVMTCA/IHJlc3VsdCA6ICIiOwotICAgICAgICAgICAgcmV0dXJuIHN0cjJ1bmkocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHJlc3VsdCwgTlVMTCk7CiAgICAgICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInVuc3VwcG9ydGVkIGxhbmdpbmZvIGNvbnN0YW50Iik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDQsNyArNDU5LDcgQEAKICAgICBjaGFyICppbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiLCAmaW4pKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RyMnVuaShnZXR0ZXh0KGluKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZ2V0dGV4dChpbiksIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIoZGdldHRleHRfX2RvY19fLApAQCAtNTE3LDcgKzQ3Miw3IEBACiAgICAgY2hhciAqZG9tYWluLCAqaW47CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ6cyIsICZkb21haW4sICZpbikpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHIydW5pKGRnZXR0ZXh0KGRvbWFpbiwgaW4pKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShkZ2V0dGV4dChkb21haW4sIGluKSwgTlVMTCk7CiB9CiAKIFB5RG9jX1NUUlZBUihkY2dldHRleHRfX2RvY19fLApAQCAtNTMxLDcgKzQ4Niw3IEBACiAgICAgaW50IGNhdGVnb3J5OwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienNpIiwgJmRvbWFpbiwgJm1zZ2lkLCAmY2F0ZWdvcnkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RyMnVuaShkY2dldHRleHQoZG9tYWluLG1zZ2lkLGNhdGVnb3J5KSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZGNnZXR0ZXh0KGRvbWFpbixtc2dpZCxjYXRlZ29yeSksIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIodGV4dGRvbWFpbl9fZG9jX18sCkBAIC01NDksNyArNTA0LDcgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZG9tYWluKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShkb21haW4sIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIoYmluZHRleHRkb21haW5fX2RvY19fLApAQCAtNTgxLDcgKzUzNiw3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHN0cjJ1bmkoY3VycmVudF9kaXJuYW1lKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGN1cnJlbnRfZGlybmFtZSwgTlVMTCk7CiAgICAgUHlfWERFQ1JFRihkaXJuYW1lX2J5dGVzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTk5LDcgKzU1NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNvZGVzZXQgPSBiaW5kX3RleHRkb21haW5fY29kZXNldChkb21haW4sIGNvZGVzZXQpOwogICAgIGlmIChjb2Rlc2V0KQotICAgICAgICByZXR1cm4gc3RyMnVuaShjb2Rlc2V0KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29kZXNldCwgTlVMTCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xzcHJvZi5jIGIvTW9kdWxlcy9fbHNwcm9mLmMKaW5kZXggY2M0MTJiZi4uYjBhMjI2YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbHNwcm9mLmMKKysrIGIvTW9kdWxlcy9fbHNwcm9mLmMKQEAgLTE3NiwzNiArMTc2LDI5IEBACiAgICAgaWYgKGZuLT5tX3NlbGYgPT0gTlVMTCkgewogICAgICAgICAvKiBidWlsdC1pbiBmdW5jdGlvbjogbG9vayB1cCB0aGUgbW9kdWxlIG5hbWUgKi8KICAgICAgICAgUHlPYmplY3QgKm1vZCA9IGZuLT5tX21vZHVsZTsKLSAgICAgICAgY29uc3QgY2hhciAqbW9kbmFtZTsKLSAgICAgICAgaWYgKG1vZCAmJiBQeVVuaWNvZGVfQ2hlY2sobW9kKSkgewotICAgICAgICAgICAgLyogWFhYOiBUaGUgZm9sbG93aW5nIHdpbGwgdHJ1bmNhdGUgbW9kdWxlIG5hbWVzIHdpdGggZW1iZWRkZWQKLSAgICAgICAgICAgICAqIG51bGwtY2hhcmFjdGVycy4gIEl0IGlzIHVubGlrZWx5IHRoYXQgdGhpcyBjYW4gaGFwcGVuIGluCi0gICAgICAgICAgICAgKiBwcmFjdGljZSBhbmQgdGhlIGNvbmNlcXVlbmNlcyBhcmUgbm90IHNlcmlvdXMgZW5vdWdoIHRvCi0gICAgICAgICAgICAgKiBpbnRyb2R1Y2UgZXh0cmEgY2hlY2tzIGhlcmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG1vZG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG1vZCk7Ci0gICAgICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9ICI8ZW5jb2RpbmcgZXJyb3I+IjsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeU9iamVjdCAqbW9kbmFtZSA9IE5VTEw7CisgICAgICAgIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhtb2QpKSB7CisgICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZDsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYobW9kbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeU1vZHVsZV9DaGVjayhtb2QpKSB7CisgICAgICAgICAgICAgICAgbW9kbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QobW9kKTsKKyAgICAgICAgICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1vZCAmJiBQeU1vZHVsZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgICAgICBtb2RuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShtb2QpOwotICAgICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9ICJidWlsdGlucyI7CisgICAgICAgIGlmIChtb2RuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhtb2RuYW1lLCAiYnVpbHRpbnMiKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVVLiVzPiIsIG1vZG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtb2RuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG1vZG5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW9kbmFtZSA9ICJidWlsdGlucyI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmNtcChtb2RuYW1lLCAiYnVpbHRpbnMiKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMuJXM+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXM+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzPiIsIGZuLT5tX21sLT5tbF9uYW1lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGJ1aWx0LWluIG1ldGhvZDogdHJ5IHRvIHJldHVybgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHptYW1vZHVsZS5jIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ODJhNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKQEAgLTAsMCArMSwxMjg2IEBACisvKiBfbHptYSAtIExvdy1sZXZlbCBQeXRob24gaW50ZXJmYWNlIHRvIGxpYmx6bWEuCisKKyAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gYnkgUGVyIMOYeXZpbmQgS2FybHNlbi4KKyAgIFJld3JpdHRlbiBieSBOYWRlZW0gVmF3ZGEuCisKKyovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGx6bWEuaD4KKworCisjaWZuZGVmIFBZX0xPTkdfTE9ORworI2Vycm9yICJUaGlzIG1vZHVsZSByZXF1aXJlcyBQWV9MT05HX0xPTkcgdG8gYmUgZGVmaW5lZCIKKyNlbmRpZgorCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKKyAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXAorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTIFwKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAxKTsgXAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCisgICAgfSB9IHdoaWxlICgwKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKSBQeVRocmVhZF9yZWxlYXNlX2xvY2soKG9iaiktPmxvY2spCisjZWxzZQorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQorI2VuZGlmCisKKworLyogQ29udGFpbmVyIGZvcm1hdHM6ICovCitlbnVtIHsKKyAgICBGT1JNQVRfQVVUTywKKyAgICBGT1JNQVRfWFosCisgICAgRk9STUFUX0FMT05FLAorICAgIEZPUk1BVF9SQVcsCit9OworCisjZGVmaW5lIExaTUFfQ0hFQ0tfVU5LTk9XTiAoTFpNQV9DSEVDS19JRF9NQVggKyAxKQorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgbHptYV9zdHJlYW0gbHpzOworICAgIGludCBmbHVzaGVkOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQ29tcHJlc3NvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBsem1hX3N0cmVhbSBsenM7CisgICAgaW50IGNoZWNrOworICAgIGNoYXIgZW9mOworICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IERlY29tcHJlc3NvcjsKKworLyogTFpNQUVycm9yIGNsYXNzIG9iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqRXJyb3I7CisKKy8qIEFuIGVtcHR5IHR1cGxlLCB1c2VkIGJ5IHRoZSBmaWx0ZXIgc3BlY2lmaWVyIHBhcnNpbmcgY29kZS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqZW1wdHlfdHVwbGU7CisKKworLyogSGVscGVyIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIGludAorY2F0Y2hfbHptYV9lcnJvcihsem1hX3JldCBsenJldCkKK3sKKyAgICBzd2l0Y2ggKGx6cmV0KSB7CisgICAgICAgIGNhc2UgTFpNQV9PSzoKKyAgICAgICAgY2FzZSBMWk1BX0dFVF9DSEVDSzoKKyAgICAgICAgY2FzZSBMWk1BX05PX0NIRUNLOgorICAgICAgICBjYXNlIExaTUFfU1RSRUFNX0VORDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIExaTUFfVU5TVVBQT1JURURfQ0hFQ0s6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJVbnN1cHBvcnRlZCBpbnRlZ3JpdHkgY2hlY2siKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfTUVNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfTUVNTElNSVRfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJNZW1vcnkgdXNhZ2UgbGltaXQgZXhjZWVkZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfRk9STUFUX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW5wdXQgZm9ybWF0IG5vdCBzdXBwb3J0ZWQgYnkgZGVjb2RlciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9PUFRJT05TX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCBvcHRpb25zIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX0RBVEFfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJDb3JydXB0IGlucHV0IGRhdGEiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfQlVGX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW5zdWZmaWNpZW50IGJ1ZmZlciBzcGFjZSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9QUk9HX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW50ZXJuYWwgZXJyb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KEVycm9yLCAiVW5yZWNvZ25pemVkIGVycm9yIGZyb20gbGlibHptYTogJWQiLCBsenJldCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKKyNpZiBCVUZTSVogPCA4MTkyCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgODE5MgorI2Vsc2UKKyNkZWZpbmUgSU5JVElBTF9CVUZGRVJfU0laRSBCVUZTSVoKKyNlbmRpZgorCitzdGF0aWMgaW50Citncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1Zik7CisgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIHNpemUgKyAoc2l6ZSA+PiAzKSArIDYpOworfQorCisKKy8qIFNvbWUgY3VzdG9tIHR5cGUgY29udmVyc2lvbnMgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpLAorICAgc2luY2UgdGhlIHByZWRlZmluZWQgY29udmVyc2lvbiBzcGVjaWZpZXJzIGRvIG5vdCBzdWl0IG91ciBuZWVkczoKKworICAgICAgdWludDMyX3QgLSB0aGUgIkkiICh1bnNpZ25lZCBpbnQpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQgc2l6ZSwgYnV0CisgICAgICBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgorCisgICAgICBsem1hX3ZsaSAtIHRoZSAiSyIgKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgc3BlY2lmaWVyIGlzIHRoZSByaWdodAorICAgICAgc2l6ZSwgYnV0IGxpa2UgIkkiIGl0IHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3dzIG9uIGNvbnZlcnNpb24uCisKKyAgICAgIGx6bWFfbW9kZSBhbmQgbHptYV9tYXRjaF9maW5kZXIgLSB0aGVzZSBhcmUgZW51bWVyYXRpb24gdHlwZXMsIGFuZAorICAgICAgc28gdGhlIHNpemUgb2YgZWFjaCBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiBXb3JzZSwgZGlmZmVyZW50CisgICAgICBlbnVtIHR5cGVzIGNhbiBiZSBvZiBkaWZmZXJlbnQgc2l6ZXMgd2l0aGluIHRoZSBzYW1lIHByb2dyYW0sIHNvCisgICAgICB0byBiZSBzdHJpY3RseSBjb3JyZWN0LCB3ZSBuZWVkIHRvIGRlZmluZSB0d28gc2VwYXJhdGUgY29udmVydGVycy4KKyAqLworCisjZGVmaW5lIElOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKFRZUEUsIEZVTkNOQU1FKSBcCisgICAgc3RhdGljIGludCBcCisgICAgRlVOQ05BTUUoUHlPYmplY3QgKm9iaiwgdm9pZCAqcHRyKSBcCisgICAgeyBcCisgICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7IFwKKyAgICAgICAgXAorICAgICAgICB2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7IFwKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIFwKKyAgICAgICAgICAgIHJldHVybiAwOyBcCisgICAgICAgIGlmICgodW5zaWduZWQgUFlfTE9OR19MT05HKShUWVBFKXZhbCAhPSB2YWwpIHsgXAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgdG9vIGxhcmdlIGZvciAiICNUWVBFICIgdHlwZSIpOyBcCisgICAgICAgICAgICByZXR1cm4gMDsgXAorICAgICAgICB9IFwKKyAgICAgICAgKihUWVBFICopcHRyID0gKFRZUEUpdmFsOyBcCisgICAgICAgIHJldHVybiAxOyBcCisgICAgfQorCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyh1aW50MzJfdCwgdWludDMyX2NvbnZlcnRlcikKK0lOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKGx6bWFfdmxpLCBsem1hX3ZsaV9jb252ZXJ0ZXIpCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhsem1hX21vZGUsIGx6bWFfbW9kZV9jb252ZXJ0ZXIpCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhsem1hX21hdGNoX2ZpbmRlciwgbHptYV9tZl9jb252ZXJ0ZXIpCisKKyN1bmRlZiBJTlRfVFlQRV9DT05WRVJURVJfRlVOQworCisKKy8qIEZpbHRlciBzcGVjaWZpZXIgcGFyc2luZy4KKworICAgVGhpcyBjb2RlIGhhbmRsZXMgY29udmVydGluZyBmaWx0ZXIgc3BlY2lmaWVycyAoUHl0aG9uIGRpY3RzKSBpbnRvCisgICB0aGUgQyBsem1hX2ZpbHRlciBzdHJ1Y3RzIGV4cGVjdGVkIGJ5IGxpYmx6bWEuICovCisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjX2x6bWEoUHlPYmplY3QgKnNwZWMpCit7CisgICAgc3RhdGljIGNoYXIgKm9wdG5hbWVzW10gPSB7ImlkIiwgInByZXNldCIsICJkaWN0X3NpemUiLCAibGMiLCAibHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYiIsICJtb2RlIiwgIm5pY2VfbGVuIiwgIm1mIiwgImRlcHRoIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlkOworICAgIFB5T2JqZWN0ICpwcmVzZXRfb2JqOworICAgIHVpbnQzMl90IHByZXNldCA9IExaTUFfUFJFU0VUX0RFRkFVTFQ7CisgICAgbHptYV9vcHRpb25zX2x6bWEgKm9wdGlvbnM7CisKKyAgICAvKiBGaXJzdCwgZmlsbCBpbiBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSBvcHRpb25zIHVzaW5nIGEgcHJlc2V0LgorICAgICAgIFRoZW4sIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyB3aXRoIGFueSB2YWx1ZXMgZ2l2ZW4gYnkgdGhlIGNhbGxlci4gKi8KKworICAgIHByZXNldF9vYmogPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyhzcGVjLCAicHJlc2V0Iik7CisgICAgaWYgKHByZXNldF9vYmogPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgb2sgPSB1aW50MzJfY29udmVydGVyKHByZXNldF9vYmosICZwcmVzZXQpOworICAgICAgICBQeV9ERUNSRUYocHJlc2V0X29iaik7CisgICAgICAgIGlmICghb2spCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcHRpb25zID0gKGx6bWFfb3B0aW9uc19sem1hICopUHlNZW1fTWFsbG9jKHNpemVvZiAqb3B0aW9ucyk7CisgICAgaWYgKG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtc2V0KG9wdGlvbnMsIDAsIHNpemVvZiAqb3B0aW9ucyk7CisKKyAgICBpZiAobHptYV9sem1hX3ByZXNldChvcHRpb25zLCBwcmVzZXQpKSB7CisgICAgICAgIFB5TWVtX0ZyZWUob3B0aW9ucyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChFcnJvciwgIkludmFsaWQgY29tcHJlc3Npb24gcHJlc2V0OiAlZCIsIHByZXNldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGVtcHR5X3R1cGxlLCBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8T09PJk8mTyZPJk8mTyZPJk8mIiwgb3B0bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkLCAmcHJlc2V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+ZGljdF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5sYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+bHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPnBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6bWFfbW9kZV9jb252ZXJ0ZXIsICZvcHRpb25zLT5tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5uaWNlX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hX21mX2NvbnZlcnRlciwgJm9wdGlvbnMtPm1mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5kZXB0aCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWx0ZXIgc3BlY2lmaWVyIGZvciBMWk1BIGZpbHRlciIpOworICAgICAgICBQeU1lbV9GcmVlKG9wdGlvbnMpOworICAgICAgICBvcHRpb25zID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjX2RlbHRhKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHN0YXRpYyBjaGFyICpvcHRuYW1lc1tdID0geyJpZCIsICJkaXN0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlkOworICAgIHVpbnQzMl90IGRpc3QgPSAxOworICAgIGx6bWFfb3B0aW9uc19kZWx0YSAqb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGVtcHR5X3R1cGxlLCBzcGVjLCAifE9PJiIsIG9wdG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZCwgdWludDMyX2NvbnZlcnRlciwgJmRpc3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIHNwZWNpZmllciBmb3IgZGVsdGEgZmlsdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9wdGlvbnMgPSAobHptYV9vcHRpb25zX2RlbHRhICopUHlNZW1fTWFsbG9jKHNpemVvZiAqb3B0aW9ucyk7CisgICAgaWYgKG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtc2V0KG9wdGlvbnMsIDAsIHNpemVvZiAqb3B0aW9ucyk7CisgICAgb3B0aW9ucy0+dHlwZSA9IExaTUFfREVMVEFfVFlQRV9CWVRFOworICAgIG9wdGlvbnMtPmRpc3QgPSBkaXN0OworICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlY19iY2ooUHlPYmplY3QgKnNwZWMpCit7CisgICAgc3RhdGljIGNoYXIgKm9wdG5hbWVzW10gPSB7ImlkIiwgInN0YXJ0X29mZnNldCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKyAgICB1aW50MzJfdCBzdGFydF9vZmZzZXQgPSAwOworICAgIGx6bWFfb3B0aW9uc19iY2ogKm9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhlbXB0eV90dXBsZSwgc3BlYywgInxPTyYiLCBvcHRuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWQsIHVpbnQzMl9jb252ZXJ0ZXIsICZzdGFydF9vZmZzZXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIHNwZWNpZmllciBmb3IgQkNKIGZpbHRlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcHRpb25zID0gKGx6bWFfb3B0aW9uc19iY2ogKilQeU1lbV9NYWxsb2Moc2l6ZW9mICpvcHRpb25zKTsKKyAgICBpZiAob3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1zZXQob3B0aW9ucywgMCwgc2l6ZW9mICpvcHRpb25zKTsKKyAgICBvcHRpb25zLT5zdGFydF9vZmZzZXQgPSBzdGFydF9vZmZzZXQ7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjKGx6bWFfZmlsdGVyICpmLCBQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeU9iamVjdCAqaWRfb2JqOworCisgICAgaWYgKCFQeU1hcHBpbmdfQ2hlY2soc3BlYykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJGaWx0ZXIgc3BlY2lmaWVyIG11c3QgYmUgYSBkaWN0IG9yIGRpY3QtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlkX29iaiA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHNwZWMsICJpZCIpOworICAgIGlmIChpZF9vYmogPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlsdGVyIHNwZWNpZmllciBtdXN0IGhhdmUgYW4gXCJpZFwiIGVudHJ5Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmLT5pZCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoaWRfb2JqKTsKKyAgICBQeV9ERUNSRUYoaWRfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKGYtPmlkKSB7CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTE6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTI6CisgICAgICAgICAgICBmLT5vcHRpb25zID0gcGFyc2VfZmlsdGVyX3NwZWNfbHptYShzcGVjKTsKKyAgICAgICAgICAgIHJldHVybiBmLT5vcHRpb25zOworICAgICAgICBjYXNlIExaTUFfRklMVEVSX0RFTFRBOgorICAgICAgICAgICAgZi0+b3B0aW9ucyA9IHBhcnNlX2ZpbHRlcl9zcGVjX2RlbHRhKHNwZWMpOworICAgICAgICAgICAgcmV0dXJuIGYtPm9wdGlvbnM7CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfWDg2OgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1BPV0VSUEM6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfSUE2NDoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9BUk06CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNVEhVTUI6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfU1BBUkM6CisgICAgICAgICAgICBmLT5vcHRpb25zID0gcGFyc2VfZmlsdGVyX3NwZWNfYmNqKHNwZWMpOworICAgICAgICAgICAgcmV0dXJuIGYtPm9wdGlvbnM7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZmlsdGVyIElEOiAlbGx1IiwgZi0+aWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZnJlZV9maWx0ZXJfY2hhaW4obHptYV9maWx0ZXIgZmlsdGVyc1tdKQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgZmlsdGVyc1tpXS5pZCAhPSBMWk1BX1ZMSV9VTktOT1dOOyBpKyspCisgICAgICAgIFB5TWVtX0ZyZWUoZmlsdGVyc1tpXS5vcHRpb25zKTsKK30KKworc3RhdGljIGludAorcGFyc2VfZmlsdGVyX2NoYWluX3NwZWMobHptYV9maWx0ZXIgZmlsdGVyc1tdLCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBudW1fZmlsdGVyczsKKworICAgIG51bV9maWx0ZXJzID0gUHlTZXF1ZW5jZV9MZW5ndGgoZmlsdGVyc3BlY3MpOworICAgIGlmIChudW1fZmlsdGVycyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChudW1fZmlsdGVycyA+IExaTUFfRklMVEVSU19NQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZmlsdGVycyAtIGxpYmx6bWEgc3VwcG9ydHMgYSBtYXhpbXVtIG9mICVkIiwKKyAgICAgICAgICAgICAgICAgICAgIExaTUFfRklMVEVSU19NQVgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9maWx0ZXJzOyBpKyspIHsKKyAgICAgICAgaW50IG9rID0gMTsKKyAgICAgICAgUHlPYmplY3QgKnNwZWMgPSBQeVNlcXVlbmNlX0dldEl0ZW0oZmlsdGVyc3BlY3MsIGkpOworICAgICAgICBpZiAoc3BlYyA9PSBOVUxMIHx8IHBhcnNlX2ZpbHRlcl9zcGVjKCZmaWx0ZXJzW2ldLCBzcGVjKSA9PSBOVUxMKQorICAgICAgICAgICAgb2sgPSAwOworICAgICAgICBQeV9YREVDUkVGKHNwZWMpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBmaWx0ZXJzW2ldLmlkID0gTFpNQV9WTElfVU5LTk9XTjsKKyAgICAgICAgICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGZpbHRlcnNbbnVtX2ZpbHRlcnNdLmlkID0gTFpNQV9WTElfVU5LTk9XTjsKKyAgICByZXR1cm4gMDsKK30KKworCisvKiBGaWx0ZXIgc3BlY2lmaWVyIGNvbnN0cnVjdGlvbi4KKworICAgVGhpcyBjb2RlIGhhbmRsZXMgY29udmVydGluZyBDIGx6bWFfZmlsdGVyIHN0cnVjdHMgaW50bworICAgUHl0aG9uLWxldmVsIGZpbHRlciBzcGVjaWZpZXJzIChyZXByZXNlbnRlZCBhcyBkaWN0cykuICovCisKK3N0YXRpYyBpbnQKK3NwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWUpCit7CisgICAgaW50IHN0YXR1czsKKyAgICBQeU9iamVjdCAqdmFsdWVfb2JqZWN0OworCisgICAgdmFsdWVfb2JqZWN0ID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKKyAgICBpZiAodmFsdWVfb2JqZWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHN0YXR1cyA9IF9QeURpY3RfU2V0SXRlbUlkKHNwZWMsIGtleSwgdmFsdWVfb2JqZWN0KTsKKyAgICBQeV9ERUNSRUYodmFsdWVfb2JqZWN0KTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfZmlsdGVyX3NwZWMoY29uc3QgbHptYV9maWx0ZXIgKmYpCit7CisgICAgUHlPYmplY3QgKnNwZWM7CisKKyAgICBzcGVjID0gUHlEaWN0X05ldygpOworICAgIGlmIChzcGVjID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisjZGVmaW5lIEFERF9GSUVMRChTT1VSQ0UsIEZJRUxEKSBcCisgICAgZG8geyBcCisgICAgICAgIF9QeV9JREVOVElGSUVSKEZJRUxEKTsgXAorICAgICAgICBpZiAoc3BlY19hZGRfZmllbGQoc3BlYywgJlB5SWRfIyNGSUVMRCwgU09VUkNFLT5GSUVMRCkgPT0gLTEpIFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7XAorICAgIH0gd2hpbGUgKDApCisKKyAgICBBRERfRklFTEQoZiwgaWQpOworCisgICAgc3dpdGNoIChmLT5pZCkgeworICAgICAgICAvKiBGb3IgTFpNQTEgZmlsdGVycywgbHptYV9wcm9wZXJ0aWVzX3tlbmNvZGUsZGVjb2RlfSgpIG9ubHkgbG9vayBhdCB0aGUKKyAgICAgICAgICAgbGMsIGxwLCBwYiwgYW5kIGRpY3Rfc2l6ZSBmaWVsZHMuIEZvciBMWk1BMiBmaWx0ZXJzLCBvbmx5IHRoZQorICAgICAgICAgICBkaWN0X3NpemUgZmllbGQgaXMgdXNlZC4gKi8KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9MWk1BMTogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2x6bWEgKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGxjKTsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBscCk7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgcGIpOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGRpY3Rfc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUEyOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfbHptYSAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgZGljdF9zaXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfREVMVEE6IHsKKyAgICAgICAgICAgIGx6bWFfb3B0aW9uc19kZWx0YSAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgZGlzdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1g4NjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9QT1dFUlBDOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0lBNjQ6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTVRIVU1COgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1NQQVJDOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfYmNqICpvcHRpb25zID0gZi0+b3B0aW9uczsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBzdGFydF9vZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBmaWx0ZXIgSUQ6ICVsbHUiLCBmLT5pZCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworI3VuZGVmIEFERF9GSUVMRAorCisgICAgcmV0dXJuIHNwZWM7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihzcGVjKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvKiBMWk1BQ29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzKENvbXByZXNzb3IgKmMsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4sIGx6bWFfYWN0aW9uIGFjdGlvbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGMtPmx6cy5uZXh0X2luID0gZGF0YTsKKyAgICBjLT5senMuYXZhaWxfaW4gPSBsZW47CisgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGMtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBsem1hX3JldCBsenJldDsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGx6cmV0ID0gbHptYV9jb2RlKCZjLT5senMsIGFjdGlvbik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopYy0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKChhY3Rpb24gPT0gTFpNQV9SVU4gJiYgYy0+bHpzLmF2YWlsX2luID09IDApIHx8CisgICAgICAgICAgICAoYWN0aW9uID09IExaTUFfRklOSVNIICYmIGx6cmV0ID09IExaTUFfU1RSRUFNX0VORCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGMtPmx6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBjLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBjLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKENvbXByZXNzb3JfY29tcHJlc3NfZG9jLAorImNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCJcIiBvdGhlcndpc2UuXG4iCisiXG4iCisiV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0byB0aGUgY29tcHJlc3NvciwgY2FsbCB0aGVcbiIKKyJmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQ29tcHJlc3Nvcl9jb21wcmVzcyhDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wcmVzc29yIGhhcyBiZWVuIGZsdXNoZWQiKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIExaTUFfUlVOKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeURvY19TVFJWQVIoQ29tcHJlc3Nvcl9mbHVzaF9kb2MsCisiZmx1c2goKSAtPiBieXRlc1xuIgorIlxuIgorIkZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gUmV0dXJucyB0aGUgY29tcHJlc3NlZCBkYXRhIGxlZnRcbiIKKyJpbiBpbnRlcm5hbCBidWZmZXJzLlxuIgorIlxuIgorIlRoZSBjb21wcmVzc29yIG9iamVjdCBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0NvbXByZXNzb3JfZmx1c2goQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlJlcGVhdGVkIGNhbGwgdG8gZmx1c2goKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmZsdXNoZWQgPSAxOworICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBOVUxMLCAwLCBMWk1BX0ZJTklTSCk7CisgICAgfQorICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXRfeHoobHptYV9zdHJlYW0gKmx6cywgaW50IGNoZWNrLCB1aW50MzJfdCBwcmVzZXQsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKGZpbHRlcnNwZWNzID09IFB5X05vbmUpIHsKKyAgICAgICAgbHpyZXQgPSBsem1hX2Vhc3lfZW5jb2RlcihsenMsIHByZXNldCwgY2hlY2spOworICAgIH0gZWxzZSB7CisgICAgICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworCisgICAgICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGx6cmV0ID0gbHptYV9zdHJlYW1fZW5jb2RlcihsenMsIGZpbHRlcnMsIGNoZWNrKTsKKyAgICAgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgfQorICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0NvbXByZXNzb3JfaW5pdF9hbG9uZShsem1hX3N0cmVhbSAqbHpzLCB1aW50MzJfdCBwcmVzZXQsIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGx6bWFfb3B0aW9uc19sem1hIG9wdGlvbnM7CisKKyAgICAgICAgaWYgKGx6bWFfbHptYV9wcmVzZXQoJm9wdGlvbnMsIHByZXNldCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChFcnJvciwgIkludmFsaWQgY29tcHJlc3Npb24gcHJlc2V0OiAlZCIsIHByZXNldCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbHpyZXQgPSBsem1hX2Fsb25lX2VuY29kZXIobHpzLCAmb3B0aW9ucyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbHptYV9maWx0ZXIgZmlsdGVyc1tMWk1BX0ZJTFRFUlNfTUFYICsgMV07CisKKyAgICAgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGZpbHRlcnNbMF0uaWQgPT0gTFpNQV9GSUxURVJfTFpNQTEgJiYKKyAgICAgICAgICAgIGZpbHRlcnNbMV0uaWQgPT0gTFpNQV9WTElfVU5LTk9XTikgeworICAgICAgICAgICAgbHpyZXQgPSBsem1hX2Fsb25lX2VuY29kZXIobHpzLCBmaWx0ZXJzWzBdLm9wdGlvbnMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIGNoYWluIGZvciBGT1JNQVRfQUxPTkUgLSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzaW5nbGUgTFpNQTEgZmlsdGVyIik7CisgICAgICAgICAgICBsenJldCA9IExaTUFfUFJPR19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkgfHwgY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXRfcmF3KGx6bWFfc3RyZWFtICpsenMsIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk11c3Qgc3BlY2lmeSBmaWx0ZXJzIGZvciBGT1JNQVRfUkFXIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGx6cmV0ID0gbHptYV9yYXdfZW5jb2RlcihsenMsIGZpbHRlcnMpOworICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0NvbXByZXNzb3JfaW5pdChDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqYXJnX25hbWVzW10gPSB7ImZvcm1hdCIsICJjaGVjayIsICJwcmVzZXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIGludCBmb3JtYXQgPSBGT1JNQVRfWFo7CisgICAgaW50IGNoZWNrID0gLTE7CisgICAgdWludDMyX3QgcHJlc2V0ID0gTFpNQV9QUkVTRVRfREVGQVVMVDsKKyAgICBQeU9iamVjdCAqcHJlc2V0X29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmZpbHRlcnNwZWNzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifGlpT086TFpNQUNvbXByZXNzb3IiLCBhcmdfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJmNoZWNrLCAmcHJlc2V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsdGVyc3BlY3MpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZm9ybWF0ICE9IEZPUk1BVF9YWiAmJiBjaGVjayAhPSAtMSAmJiBjaGVjayAhPSBMWk1BX0NIRUNLX05PTkUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZWdyaXR5IGNoZWNrcyBhcmUgb25seSBzdXBwb3J0ZWQgYnkgRk9STUFUX1haIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocHJlc2V0X29iaiAhPSBQeV9Ob25lICYmIGZpbHRlcnNwZWNzICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgYm90aCBwcmVzZXQgYW5kIGZpbHRlciBjaGFpbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHByZXNldF9vYmogIT0gUHlfTm9uZSkKKyAgICAgICAgaWYgKCF1aW50MzJfY29udmVydGVyKHByZXNldF9vYmosICZwcmVzZXQpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+Zmx1c2hlZCA9IDA7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBGT1JNQVRfWFo6CisgICAgICAgICAgICBpZiAoY2hlY2sgPT0gLTEpCisgICAgICAgICAgICAgICAgY2hlY2sgPSBMWk1BX0NIRUNLX0NSQzY0OworICAgICAgICAgICAgaWYgKENvbXByZXNzb3JfaW5pdF94eigmc2VsZi0+bHpzLCBjaGVjaywgcHJlc2V0LCBmaWx0ZXJzcGVjcykgIT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX0FMT05FOgorICAgICAgICAgICAgaWYgKENvbXByZXNzb3JfaW5pdF9hbG9uZSgmc2VsZi0+bHpzLCBwcmVzZXQsIGZpbHRlcnNwZWNzKSAhPSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfUkFXOgorICAgICAgICAgICAgaWYgKENvbXByZXNzb3JfaW5pdF9yYXcoJnNlbGYtPmx6cywgZmlsdGVyc3BlY3MpICE9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY29udGFpbmVyIGZvcm1hdDogJWQiLCBmb3JtYXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitDb21wcmVzc29yX2RlYWxsb2MoQ29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBsem1hX2VuZCgmc2VsZi0+bHpzKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBDb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQ29tcHJlc3Nvcl9jb21wcmVzc19kb2N9LAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pQ29tcHJlc3Nvcl9mbHVzaCwgTUVUSF9OT0FSR1MsCisgICAgIENvbXByZXNzb3JfZmx1c2hfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihDb21wcmVzc29yX2RvYywKKyJMWk1BQ29tcHJlc3Nvcihmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSlcbiIKKyJcbiIKKyJDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCBmb3IgY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorImZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgb3V0cHV0LiBUaGlzIGNhblxuIgorImJlIEZPUk1BVF9YWiAoZGVmYXVsdCksIEZPUk1BVF9BTE9ORSwgb3IgRk9STUFUX1JBVy5cbiIKKyJcbiIKKyJjaGVjayBzcGVjaWZpZXMgdGhlIGludGVncml0eSBjaGVjayB0byB1c2UuIEZvciBGT1JNQVRfWFosIHRoZSBkZWZhdWx0XG4iCisiaXMgQ0hFQ0tfQ1JDNjQuIEZPUk1BVF9BTE9ORSBhbmQgRk9STUFUX1JBVyBkbyBub3Qgc3Vwb3J0IGludGVncml0eVxuIgorImNoZWNrczsgZm9yIHRoZXNlIGZvcm1hdHMsIGNoZWNrIG11c3QgYmUgb21pdHRlZCwgb3IgYmUgQ0hFQ0tfTk9ORS5cbiIKKyJcbiIKKyJUaGUgc2V0dGluZ3MgdXNlZCBieSB0aGUgY29tcHJlc3NvciBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhXG4iCisicHJlc2V0IGNvbXByZXNzaW9uIGxldmVsICh3aXRoIHRoZSAncHJlc2V0JyBhcmd1bWVudCksIG9yIGluIGRldGFpbFxuIgorImFzIGEgY3VzdG9tIGZpbHRlciBjaGFpbiAod2l0aCB0aGUgJ2ZpbHRlcnMnIGFyZ3VtZW50KS4gRm9yIEZPUk1BVF9YWlxuIgorImFuZCBGT1JNQVRfQUxPTkUsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgUFJFU0VUX0RFRkFVTFQgcHJlc2V0XG4iCisibGV2ZWwuIEZvciBGT1JNQVRfUkFXLCB0aGUgY2FsbGVyIG11c3QgYWx3YXlzIHNwZWNpZnkgYSBmaWx0ZXIgY2hhaW47XG4iCisidGhlIHJhdyBjb21wcmVzc29yIGRvZXMgbm90IHN1cHBvcnQgcHJlc2V0IGNvbXByZXNzaW9uIGxldmVscy5cbiIKKyJcbiIKKyJwcmVzZXQgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgMC05LCBvcHRpb25hbGx5XG4iCisiT1ItZWQgd2l0aCB0aGUgY29uc3RhbnQgUFJFU0VUX0VYVFJFTUUuXG4iCisiXG4iCisiZmlsdGVycyAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGRpY3RzLiBFYWNoIGRpY3Qgc2hvdWxkXG4iCisiaGF2ZSBhbiBlbnRyeSBmb3IgXCJpZFwiIGluZGljYXRpbmcgdGhlIElEIG9mIHRoZSBmaWx0ZXIsIHBsdXNcbiIKKyJhZGRpdGlvbmFsIGVudHJpZXMgZm9yIG9wdGlvbnMgdG8gdGhlIGZpbHRlci5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQ29tcHJlc3Nvcl90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfbHptYS5MWk1BQ29tcHJlc3NvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQ29tcHJlc3NvciksICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUNvbXByZXNzb3JfZGVhbGxvYywgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBDb21wcmVzc29yX2RvYywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIENvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUNvbXByZXNzb3JfaW5pdCwgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIExaTUFEZWNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvbXByZXNzKERlY29tcHJlc3NvciAqZCwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGQtPmx6cy5uZXh0X2luID0gZGF0YTsKKyAgICBkLT5senMuYXZhaWxfaW4gPSBsZW47CisgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGQtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBsem1hX3JldCBsenJldDsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGx6cmV0ID0gbHptYV9jb2RlKCZkLT5senMsIExaTUFfUlVOKTsKKyAgICAgICAgZGF0YV9zaXplID0gKGNoYXIgKilkLT5senMubmV4dF9vdXQgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAobHpyZXQgPT0gTFpNQV9HRVRfQ0hFQ0sgfHwgbHpyZXQgPT0gTFpNQV9OT19DSEVDSykKKyAgICAgICAgICAgIGQtPmNoZWNrID0gbHptYV9nZXRfY2hlY2soJmQtPmx6cyk7CisgICAgICAgIGlmIChsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpIHsKKyAgICAgICAgICAgIGQtPmVvZiA9IDE7CisgICAgICAgICAgICBpZiAoZC0+bHpzLmF2YWlsX2luID4gMCkgeworICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKKyAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWQtPmx6cy5uZXh0X2luLCBkLT5senMuYXZhaWxfaW4pOworICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoZC0+bHpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBkLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2RvYywKKyJkZWNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYlwiXCIgb3RoZXJ3aXNlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpc1xuIgorInJlYWNoZWQgcmFpc2VzIGFuIEVPRkVycm9yLiBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZVxuIgorInN0cmVhbSBpcyBpZ25vcmVkLCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5lb2YpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgIkFscmVhZHkgYXQgZW5kIG9mIHN0cmVhbSIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitEZWNvbXByZXNzb3JfaW5pdF9yYXcobHptYV9zdHJlYW0gKmx6cywgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGx6cmV0ID0gbHptYV9yYXdfZGVjb2RlcihsenMsIGZpbHRlcnMpOworICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0RlY29tcHJlc3Nvcl9pbml0KERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmFyZ19uYW1lc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOworICAgIGludCBmb3JtYXQgPSBGT1JNQVRfQVVUTzsKKyAgICB1aW50NjRfdCBtZW1saW1pdCA9IFVJTlQ2NF9NQVg7CisgICAgUHlPYmplY3QgKm1lbWxpbWl0X29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmZpbHRlcnNwZWNzID0gUHlfTm9uZTsKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgYXJnX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICZtZW1saW1pdF9vYmosICZmaWx0ZXJzcGVjcykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChtZW1saW1pdF9vYmogIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoZm9ybWF0ID09IEZPUk1BVF9SQVcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSBtZW1vcnkgbGltaXQgd2l0aCBGT1JNQVRfUkFXIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWVtbGltaXQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG1lbWxpbWl0X29iaik7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChmb3JtYXQgPT0gRk9STUFUX1JBVyAmJiBmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk11c3Qgc3BlY2lmeSBmaWx0ZXJzIGZvciBGT1JNQVRfUkFXIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKGZvcm1hdCAhPSBGT1JNQVRfUkFXICYmIGZpbHRlcnNwZWNzICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgZmlsdGVycyBleGNlcHQgd2l0aCBGT1JNQVRfUkFXIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfVU5LTk9XTjsKKyAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICBjYXNlIEZPUk1BVF9BVVRPOgorICAgICAgICAgICAgbHpyZXQgPSBsem1hX2F1dG9fZGVjb2Rlcigmc2VsZi0+bHpzLCBtZW1saW1pdCwgZGVjb2Rlcl9mbGFncyk7CisgICAgICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9YWjoKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9zdHJlYW1fZGVjb2Rlcigmc2VsZi0+bHpzLCBtZW1saW1pdCwgZGVjb2Rlcl9mbGFncyk7CisgICAgICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9BTE9ORToKKyAgICAgICAgICAgIHNlbGYtPmNoZWNrID0gTFpNQV9DSEVDS19OT05FOworICAgICAgICAgICAgbHpyZXQgPSBsem1hX2Fsb25lX2RlY29kZXIoJnNlbGYtPmx6cywgbWVtbGltaXQpOworICAgICAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfUkFXOgorICAgICAgICAgICAgc2VsZi0+Y2hlY2sgPSBMWk1BX0NIRUNLX05PTkU7CisgICAgICAgICAgICBpZiAoRGVjb21wcmVzc29yX2luaXRfcmF3KCZzZWxmLT5senMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBjb250YWluZXIgZm9ybWF0OiAlZCIsIGZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0RlY29tcHJlc3Nvcl9kZWFsbG9jKERlY29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBsem1hX2VuZCgmc2VsZi0+bHpzKTsKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgRGVjb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgRGVjb21wcmVzc29yX2RlY29tcHJlc3NfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfY2hlY2tfZG9jLAorIklEIG9mIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdXNlZCBieSB0aGUgaW5wdXQgc3RyZWFtLiIpOworCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2VvZl9kb2MsCisiVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4iKTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2MsCisiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKKworc3RhdGljIFB5TWVtYmVyRGVmIERlY29tcHJlc3Nvcl9tZW1iZXJzW10gPSB7CisgICAgeyJjaGVjayIsIFRfSU5ULCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIGNoZWNrKSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl9jaGVja19kb2N9LAorICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIGVvZiksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfZW9mX2RvY30sCisgICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIHVudXNlZF9kYXRhKSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2N9LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9kb2MsCisiTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSlcbiIKKyJcbiIKKyJDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0IGZvciBkZWNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IG9mIHRoZSBpbnB1dCBzdHJlYW0uIElmIHRoaXMgaXNcbiIKKyJGT1JNQVRfQVVUTyAodGhlIGRlZmF1bHQpLCB0aGUgZGVjb21wcmVzc29yIHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3RcbiIKKyJ3aGV0aGVyIHRoZSBpbnB1dCBpcyBGT1JNQVRfWFogb3IgRk9STUFUX0FMT05FLiBTdHJlYW1zIGNyZWF0ZWQgd2l0aFxuIgorIkZPUk1BVF9SQVcgY2Fubm90IGJlIGF1dG9kZXRlY3RlZC5cbiIKKyJcbiIKKyJtZW1saW1pdCBjYW4gYmUgc3BlY2lmaWVkIHRvIGxpbWl0IHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlXG4iCisiZGVjb21wcmVzc29yLiBUaGlzIHdpbGwgY2F1c2UgZGVjb21wcmVzc2lvbiB0byBmYWlsIGlmIHRoZSBpbnB1dFxuIgorImNhbm5vdCBiZSBkZWNvbXByZXNzZWQgd2l0aGluIHRoZSBnaXZlbiBsaW1pdC5cbiIKKyJcbiIKKyJmaWx0ZXJzIHNwZWNpZmllcyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4uIFRoaXMgYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yXG4iCisiRk9STUFUX1JBVywgYW5kIG5vdCBhY2NlcHRlZCB3aXRoIGFueSBvdGhlciBmb3JtYXQuIFdoZW4gcHJvdmlkZWQsXG4iCisidGhpcyBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBkaWN0cywgZWFjaCBpbmRpY2F0aW5nIHRoZSBJRCBhbmQgb3B0aW9uc1xuIgorImZvciBhIHNpbmdsZSBmaWx0ZXIuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBEZWNvbXByZXNzb3JfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2x6bWEuTFpNQURlY29tcHJlc3NvciIsICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKERlY29tcHJlc3NvciksICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilEZWNvbXByZXNzb3JfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgRGVjb21wcmVzc29yX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBEZWNvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgRGVjb21wcmVzc29yX21lbWJlcnMsICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylEZWNvbXByZXNzb3JfaW5pdCwgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBNb2R1bGUtbGV2ZWwgZnVuY3Rpb25zLiAqLworCitQeURvY19TVFJWQVIoaXNfY2hlY2tfc3VwcG9ydGVkX2RvYywKKyJpc19jaGVja19zdXBwb3J0ZWQoY2hlY2tfaWQpIC0+IGJvb2xcbiIKKyJcbiIKKyJUZXN0IHdoZXRoZXIgdGhlIGdpdmVuIGludGVncml0eSBjaGVjayBpcyBzdXBwb3J0ZWQuXG4iCisiXG4iCisiQWx3YXlzIHJldHVybnMgVHJ1ZSBmb3IgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2lzX2NoZWNrX3N1cHBvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNoZWNrX2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmlzX2NoZWNrX3N1cHBvcnRlZCIsICZjaGVja19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhsem1hX2NoZWNrX2lzX3N1cHBvcnRlZChjaGVja19pZCkpOworfQorCisKK1B5RG9jX1NUUlZBUihfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvYywKKyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGZpbHRlcikgLT4gYnl0ZXNcbiIKKyJcbiIKKyJSZXR1cm4gYSBieXRlcyBvYmplY3QgZW5jb2RpbmcgdGhlIG9wdGlvbnMgKHByb3BlcnRpZXMpIG9mIHRoZSBmaWx0ZXJcbiIKKyJzcGVjaWZpZWQgYnkgKmZpbHRlciogKGEgZGljdCkuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBmaWx0ZXIgSUQgaXRzZWxmLCBvbmx5IHRoZSBvcHRpb25zLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqZmlsdGVyc3BlYzsKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXI7CisgICAgbHptYV9yZXQgbHpyZXQ7CisgICAgdWludDMyX3QgZW5jb2RlZF9zaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAmZmlsdGVyc3BlYykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHBhcnNlX2ZpbHRlcl9zcGVjKCZmaWx0ZXIsIGZpbHRlcnNwZWMpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbHpyZXQgPSBsem1hX3Byb3BlcnRpZXNfc2l6ZSgmZW5jb2RlZF9zaXplLCAmZmlsdGVyKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGVuY29kZWRfc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgbHpyZXQgPSBsem1hX3Byb3BlcnRpZXNfZW5jb2RlKAorICAgICAgICAgICAgJmZpbHRlciwgKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBQeU1lbV9GcmVlKGZpbHRlci5vcHRpb25zKTsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgUHlNZW1fRnJlZShmaWx0ZXIub3B0aW9ucyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworUHlEb2NfU1RSVkFSKF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfZG9jLAorIl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoZmlsdGVyX2lkLCBlbmNvZGVkX3Byb3BzKSAtPiBkaWN0XG4iCisiXG4iCisiUmV0dXJuIGEgZGljdCBkZXNjcmliaW5nIGEgZmlsdGVyIHdpdGggSUQgKmZpbHRlcl9pZCosIGFuZCBvcHRpb25zXG4iCisiKHByb3BlcnRpZXMpIGRlY29kZWQgZnJvbSB0aGUgYnl0ZXMgb2JqZWN0ICplbmNvZGVkX3Byb3BzKi5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGVuY29kZWRfcHJvcHM7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyOworICAgIGx6bWFfcmV0IGx6cmV0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnkqOl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hX3ZsaV9jb252ZXJ0ZXIsICZmaWx0ZXIuaWQsICZlbmNvZGVkX3Byb3BzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsenJldCA9IGx6bWFfcHJvcGVydGllc19kZWNvZGUoCisgICAgICAgICAgICAmZmlsdGVyLCBOVUxMLCBlbmNvZGVkX3Byb3BzLmJ1ZiwgZW5jb2RlZF9wcm9wcy5sZW4pOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmVuY29kZWRfcHJvcHMpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBidWlsZF9maWx0ZXJfc3BlYygmZmlsdGVyKTsKKworICAgIC8qIFdlIHVzZSB2YW5pbGxhIGZyZWUoKSBoZXJlIGluc3RlYWQgb2YgUHlNZW1fRnJlZSgpIC0gZmlsdGVyLm9wdGlvbnMgd2FzCisgICAgICAgYWxsb2NhdGVkIGJ5IGx6bWFfcHJvcGVydGllc19kZWNvZGUoKSB1c2luZyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IuICovCisgICAgZnJlZShmaWx0ZXIub3B0aW9ucyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBNb2R1bGUgaW5pdGlhbGl6YXRpb24uICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiaXNfY2hlY2tfc3VwcG9ydGVkIiwgKFB5Q0Z1bmN0aW9uKWlzX2NoZWNrX3N1cHBvcnRlZCwKKyAgICAgTUVUSF9WQVJBUkdTLCBpc19jaGVja19zdXBwb3J0ZWRfZG9jfSwKKyAgICB7Il9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywKKyAgICAgTUVUSF9WQVJBUkdTLCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvY30sCisgICAgeyJfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsCisgICAgIE1FVEhfVkFSQVJHUywgX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2N9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIF9sem1hbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2x6bWEiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgbW9kdWxlX21ldGhvZHMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKK307CisKKy8qIFNvbWUgb2Ygb3VyIGNvbnN0YW50cyBhcmUgbW9yZSB0aGFuIDMyIGJpdHMgd2lkZSwgc28gUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgIHdvdWxkIG5vdCB3b3JrIGNvcnJlY3RseSBvbiBwbGF0Zm9ybXMgd2l0aCAzMi1iaXQgbG9uZ3MuICovCitzdGF0aWMgaW50Cittb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgUFlfTE9OR19MT05HIHZhbHVlKQoreworICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSwgbykgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUHlfREVDUkVGKG8pOworICAgIHJldHVybiAtMTsKK30KKworI2RlZmluZSBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBtYWNybykgXAorICAgIG1vZHVsZV9hZGRfaW50X2NvbnN0YW50KG0sICNtYWNybywgTFpNQV8gIyMgbWFjcm8pCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2x6bWEodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIGVtcHR5X3R1cGxlID0gUHlUdXBsZV9OZXcoMCk7CisgICAgaWYgKGVtcHR5X3R1cGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2x6bWFtb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9BVVRPKSA9PSAtMSB8fAorICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfWFopID09IC0xIHx8CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9BTE9ORSkgPT0gLTEgfHwKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRk9STUFUX1JBVykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfTk9ORSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfQ1JDMzIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX0NSQzY0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19TSEEyNTYpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX0lEX01BWCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfVU5LTk9XTikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0xaTUExKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfTFpNQTIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9ERUxUQSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX1g4NikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0lBNjQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9BUk0pID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9BUk1USFVNQikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX1NQQVJDKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfUE9XRVJQQykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfSEMzKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9IQzQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0JUMikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfQlQzKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9CVDQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1PREVfRkFTVCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTU9ERV9OT1JNQUwpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIFBSRVNFVF9ERUZBVUxUKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBQUkVTRVRfRVhUUkVNRSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAgICAgIl9sem1hLkxaTUFFcnJvciIsICJDYWxsIHRvIGxpYmx6bWEgZmFpbGVkLiIsIE5VTEwsIE5VTEwpOworICAgIGlmIChFcnJvciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoRXJyb3IpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkxaTUFFcnJvciIsIEVycm9yKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZDb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJkNvbXByZXNzb3JfdHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTFpNQUNvbXByZXNzb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJkNvbXByZXNzb3JfdHlwZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmRGVjb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJkRlY29tcHJlc3Nvcl90eXBlKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJMWk1BRGVjb21wcmVzc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZEZWNvbXByZXNzb3JfdHlwZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyZDVhYS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICswLDAgQEAKLS8qCi0gKiBEZWZpbml0aW9uIG9mIGEgYENvbm5lY3Rpb25gIHR5cGUuCi0gKiBVc2VkIGJ5IGBzb2NrZXRfY29ubmVjdGlvbi5jYCBhbmQgYHBpcGVfY29ubmVjdGlvbi5jYC4KLSAqCi0gKiBjb25uZWN0aW9uLmgKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKLSAqLwotCi0jaWZuZGVmIENPTk5FQ1RJT05fSAotI2RlZmluZSBDT05ORUNUSU9OX0gKLQotLyoKLSAqIFJlYWQvd3JpdGUgZmxhZ3MKLSAqLwotCi0jZGVmaW5lIFJFQURBQkxFIDEKLSNkZWZpbmUgV1JJVEFCTEUgMgotCi0jZGVmaW5lIENIRUNLX1JFQURBQkxFKHNlbGYpIFwKLSAgICBpZiAoIShzZWxmLT5mbGFncyAmIFJFQURBQkxFKSkgeyBcCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJjb25uZWN0aW9uIGlzIHdyaXRlLW9ubHkiKTsgXAotICAgIHJldHVybiBOVUxMOyBcCi0gICAgfQotCi0jZGVmaW5lIENIRUNLX1dSSVRBQkxFKHNlbGYpIFwKLSAgICBpZiAoIShzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSkgeyBcCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJjb25uZWN0aW9uIGlzIHJlYWQtb25seSIpOyBcCi0gICAgcmV0dXJuIE5VTEw7IFwKLSAgICB9Ci0KLS8qCi0gKiBBbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24KLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgQ29ubmVjdGlvbk9iamVjdCAqc2VsZjsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIEJPT0wgcmVhZGFibGUgPSBUUlVFLCB3cml0YWJsZSA9IFRSVUU7Ci0KLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJyZWFkYWJsZSIsICJ3cml0YWJsZSIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgRl9IQU5ETEUgInxpaSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmcmVhZGFibGUsICZ3cml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSB8fCAoUHlfc3NpemVfdCloYW5kbGUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLCAiaW52YWxpZCBoYW5kbGUgJXpkIiwKLSAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KWhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmICghcmVhZGFibGUgJiYgIXdyaXRhYmxlKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciByZWFkYWJsZSBvciB3cml0YWJsZSBtdXN0IGJlIHRydWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc2VsZiA9IFB5T2JqZWN0X05ldyhDb25uZWN0aW9uT2JqZWN0LCB0eXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKLSAgICBzZWxmLT5oYW5kbGUgPSBoYW5kbGU7Ci0gICAgc2VsZi0+ZmxhZ3MgPSAwOwotCi0gICAgaWYgKHJlYWRhYmxlKQotICAgICAgICBzZWxmLT5mbGFncyB8PSBSRUFEQUJMRTsKLSAgICBpZiAod3JpdGFibGUpCi0gICAgICAgIHNlbGYtPmZsYWdzIHw9IFdSSVRBQkxFOwotICAgIGFzc2VydChzZWxmLT5mbGFncyA+PSAxICYmIHNlbGYtPmZsYWdzIDw9IDMpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKLX0KLQotc3RhdGljIHZvaWQKLWNvbm5lY3Rpb25fZGVhbGxvYyhDb25uZWN0aW9uT2JqZWN0KiBzZWxmKQotewotICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQotICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCopc2VsZik7Ci0KLSAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9Ci0gICAgUHlPYmplY3RfRGVsKHNlbGYpOwotfQotCi0vKgotICogRnVuY3Rpb25zIGZvciB0cmFuc2ZlcnJpbmcgYnVmZmVycwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3NlbmRieXRlcyhDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZmZlcjsKLSAgICBjaGFyICpidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGgsIG9mZnNldD0wLCBzaXplPVBZX1NTSVpFX1RfTUlOOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9SQlVGRkVSICIqfCIgRl9QWV9TU0laRV9UIEZfUFlfU1NJWkVfVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWZmZXIsICZvZmZzZXQsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmZmVyID0gcGJ1ZmZlci5idWY7Ci0gICAgbGVuZ3RoID0gcGJ1ZmZlci5sZW47Ci0KLSAgICBDSEVDS19XUklUQUJMRShzZWxmKTsgLyogWFhYIHJlbGVhc2UgYnVmZmVyIGluIGNhc2Ugb2YgZmFpbHVyZSAqLwotCi0gICAgaWYgKG9mZnNldCA8IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IGlzIG5lZ2F0aXZlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAobGVuZ3RoIDwgb2Zmc2V0KSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHNpemUgPT0gUFlfU1NJWkVfVF9NSU4pIHsKLSAgICAgICAgc2l6ZSA9IGxlbmd0aCAtIG9mZnNldDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzaXplIGlzIG5lZ2F0aXZlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+IGxlbmd0aCkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCArIHNpemUiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVzID0gY29ubl9zZW5kX3N0cmluZyhzZWxmLCBidWZmZXIgKyBvZmZzZXQsIHNpemUpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfQotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlY3ZieXRlcyhDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpmcmVlbWUgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVzLCBtYXhsZW5ndGggPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifCIgRl9QWV9TU0laRV9ULCAmbWF4bGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIGlmIChtYXhsZW5ndGggPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF4bGVuZ3RoIDwgMCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXMgPSBjb25uX3JlY3Zfc3RyaW5nKHNlbGYsIHNlbGYtPmJ1ZmZlciwgQ09OTkVDVElPTl9CVUZGRVJfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlbWUsIG1heGxlbmd0aCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAocmVzID09IE1QX0JBRF9NRVNTQUdFX0xFTkdUSCkgewotICAgICAgICAgICAgaWYgKChzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi0+ZmxhZ3MgPSBXUklUQUJMRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmcmVlbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIHJlcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGZyZWVtZSwgcmVzKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoZnJlZW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlY3ZieXRlc19pbnRvKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKmZyZWVtZSA9IE5VTEwsICpidWZmZXIgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVzLCBsZW5ndGgsIG9mZnNldCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyp8IiBGX1BZX1NTSVpFX1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBidWZmZXIgPSBwYnVmLmJ1ZjsKLSAgICBsZW5ndGggPSBwYnVmLmxlbjsKLQotICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgb2Zmc2V0Iik7Ci0gICAgICAgIGdvdG8gX2Vycm9yOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQgPiBsZW5ndGgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgdG9vIGxhcmdlIik7Ci0gICAgICAgIGdvdG8gX2Vycm9yOwotICAgIH0KLQotICAgIHJlcyA9IGNvbm5fcmVjdl9zdHJpbmcoc2VsZiwgYnVmZmVyK29mZnNldCwgbGVuZ3RoLW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlbWUsIFBZX1NTSVpFX1RfTUFYKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChyZXMgPT0gTVBfQkFEX01FU1NBR0VfTEVOR1RIKSB7Ci0gICAgICAgICAgICBpZiAoKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpID09IDApIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLT5mbGFncyA9IFdSSVRBQkxFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZyZWVtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUludF9Gcm9tU3NpemVfdChyZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEJ1ZmZlclRvb1Nob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfUkJVRkZFUiAiIyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZW1lLCByZXMpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShmcmVlbWUpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChCdWZmZXJUb29TaG9ydCwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdvdG8gX2Vycm9yOwotICAgICAgICB9Ci0gICAgfQotCi1fY2xlYW51cDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gcmVzdWx0OwotCi1fZXJyb3I6Ci0gICAgcmVzdWx0ID0gTlVMTDsKLSAgICBnb3RvIF9jbGVhbnVwOwotfQotCi0vKgotICogRnVuY3Rpb25zIGZvciB0cmFuc2ZlcnJpbmcgb2JqZWN0cwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3NlbmRfb2JqKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCi17Ci0gICAgY2hhciAqYnVmZmVyOwotICAgIGludCByZXM7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGg7Ci0gICAgUHlPYmplY3QgKnBpY2tsZWRfc3RyaW5nID0gTlVMTDsKLQotICAgIENIRUNLX1dSSVRBQkxFKHNlbGYpOwotCi0gICAgcGlja2xlZF9zdHJpbmcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHBpY2tsZV9kdW1wcywgb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGVfcHJvdG9jb2wsIE5VTEwpOwotICAgIGlmICghcGlja2xlZF9zdHJpbmcpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLQotICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShwaWNrbGVkX3N0cmluZywgJmJ1ZmZlciwgJmxlbmd0aCkgPCAwKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0KLSAgICByZXMgPSBjb25uX3NlbmRfc3RyaW5nKHNlbGYsIGJ1ZmZlciwgKGludClsZW5ndGgpOwotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIH0KLQotICAgIFB5X1hERUNSRUYocGlja2xlZF9zdHJpbmcpOwotICAgIFB5X1JFVFVSTl9OT05FOwotCi0gIGZhaWx1cmU6Ci0gICAgUHlfWERFQ1JFRihwaWNrbGVkX3N0cmluZyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlY3Zfb2JqKENvbm5lY3Rpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgY2hhciAqZnJlZW1lID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICBQeU9iamVjdCAqdGVtcCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICByZXMgPSBjb25uX3JlY3Zfc3RyaW5nKHNlbGYsIHNlbGYtPmJ1ZmZlciwgQ09OTkVDVElPTl9CVUZGRVJfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlbWUsIFBZX1NTSVpFX1RfTUFYKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChyZXMgPT0gTVBfQkFEX01FU1NBR0VfTEVOR1RIKSB7Ci0gICAgICAgICAgICBpZiAoKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpID09IDApIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLT5mbGFncyA9IFdSSVRBQkxFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZyZWVtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB0ZW1wID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIHJlcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZW1wID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShmcmVlbWUsIHJlcyk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGZyZWVtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodGVtcCkKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhwaWNrbGVfbG9hZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCwgTlVMTCk7Ci0gICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKgotICogT3RoZXIgZnVuY3Rpb25zCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBOVUxMOwotICAgIGRvdWJsZSB0aW1lb3V0ID0gMC4wOwotICAgIGludCByZXM7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmdGltZW91dF9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICh0aW1lb3V0X29iaiA9PSBOVUxMKSB7Ci0gICAgICAgIHRpbWVvdXQgPSAwLjA7Ci0gICAgfSBlbHNlIGlmICh0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRpbWVvdXQgPSAtMS4wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJsb2NrIGZvcmV2ZXIgKi8KLSAgICB9IGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZSh0aW1lb3V0X29iaik7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMC4wKQotICAgICAgICAgICAgdGltZW91dCA9IDAuMDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY29ubl9wb2xsKHNlbGYsIHRpbWVvdXQsIF9zYXZlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgc3dpdGNoIChyZXMpIHsKLSAgICBjYXNlIFRSVUU6Ci0gICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgIGNhc2UgRkFMU0U6Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX2ZpbGVubyhDb25uZWN0aW9uT2JqZWN0KiBzZWxmKQotewotICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJoYW5kbGUgaXMgaW52YWxpZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKChsb25nKXNlbGYtPmhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX2Nsb3NlKENvbm5lY3Rpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIH0KLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZXByKENvbm5lY3Rpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgc3RhdGljIGNoYXIgKmNvbm5fdHlwZVtdID0geyJyZWFkLW9ubHkiLCAid3JpdGUtb25seSIsICJyZWFkLXdyaXRlIn07Ci0KLSAgICBhc3NlcnQoc2VsZi0+ZmxhZ3MgPj0gMSAmJiBzZWxmLT5mbGFncyA8PSAzKTsKLSAgICByZXR1cm4gRlJPTV9GT1JNQVQoIjwlcyAlcywgaGFuZGxlICV6ZD4iLAotICAgICAgICAgICAgICAgICAgICAgICBjb25uX3R5cGVbc2VsZi0+ZmxhZ3MgLSAxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgQ09OTkVDVElPTl9OQU1FLCAoUHlfc3NpemVfdClzZWxmLT5oYW5kbGUpOwotfQotCi0vKgotICogR2V0dGVycyBhbmQgc2V0dGVycwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX2Nsb3NlZChDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWFkYWJsZShDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmZsYWdzICYgUkVBREFCTEUpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fd3JpdGFibGUoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSk7Ci19Ci0KLS8qCi0gKiBUYWJsZXMKLSAqLwotCi1zdGF0aWMgUHlNZXRob2REZWYgY29ubmVjdGlvbl9tZXRob2RzW10gPSB7Ci0gICAgeyJzZW5kX2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fc2VuZGJ5dGVzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJzZW5kIHRoZSBieXRlIGRhdGEgZnJvbSBhIHJlYWRhYmxlIGJ1ZmZlci1saWtlIG9iamVjdCJ9LAotICAgIHsicmVjdl9ieXRlcyIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3JlY3ZieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICAicmVjZWl2ZSBieXRlIGRhdGEgYXMgYSBzdHJpbmcifSwKLSAgICB7InJlY3ZfYnl0ZXNfaW50byIsKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fcmVjdmJ5dGVzX2ludG8sTUVUSF9WQVJBUkdTLAotICAgICAicmVjZWl2ZSBieXRlIGRhdGEgaW50byBhIHdyaXRlYWJsZSBidWZmZXItbGlrZSBvYmplY3RcbiIKLSAgICAgInJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIn0sCi0KLSAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9zZW5kX29iaiwgTUVUSF9PLAotICAgICAic2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCJ9LAotICAgIHsicmVjdiIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3JlY3Zfb2JqLCBNRVRIX05PQVJHUywKLSAgICAgInJlY2VpdmUgYSAocGlja2xhYmxlKSBvYmplY3QifSwKLQotICAgIHsicG9sbCIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3BvbGwsIE1FVEhfVkFSQVJHUywKLSAgICAgIndoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIn0sCi0gICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9maWxlbm8sIE1FVEhfTk9BUkdTLAotICAgICAiZmlsZSBkZXNjcmlwdG9yIG9yIGhhbmRsZSBvZiB0aGUgY29ubmVjdGlvbiJ9LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9jbG9zZSwgTUVUSF9OT0FSR1MsCi0gICAgICJjbG9zZSB0aGUgY29ubmVjdGlvbiJ9LAotCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotc3RhdGljIFB5R2V0U2V0RGVmIGNvbm5lY3Rpb25fZ2V0c2V0W10gPSB7Ci0gICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWNvbm5lY3Rpb25fY2xvc2VkLCBOVUxMLAotICAgICAiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQiLCBOVUxMfSwKLSAgICB7InJlYWRhYmxlIiwgKGdldHRlciljb25uZWN0aW9uX3JlYWRhYmxlLCBOVUxMLAotICAgICAiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkYWJsZSIsIE5VTEx9LAotICAgIHsid3JpdGFibGUiLCAoZ2V0dGVyKWNvbm5lY3Rpb25fd3JpdGFibGUsIE5VTEwsCi0gICAgICJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHdyaXRhYmxlIiwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0vKgotICogQ29ubmVjdGlvbiB0eXBlCi0gKi8KLQotUHlEb2NfU1RSVkFSKGNvbm5lY3Rpb25fZG9jLAotICAgICAgICAgICAgICJDb25uZWN0aW9uIHR5cGUgd2hvc2UgY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzXG5cbiIKLSAgICAgICAgICAgICAiICAgIENvbm5lY3Rpb24oaGFuZGxlLCByZWFkYWJsZT1UcnVlLCB3cml0YWJsZT1UcnVlKS5cblxuIgotICAgICAgICAgICAgICJUaGUgY29uc3RydWN0b3IgZG9lcyAqbm90KiBkdXBsaWNhdGUgdGhlIGhhbmRsZS4iKTsKLQotUHlUeXBlT2JqZWN0IENPTk5FQ1RJT05fVFlQRSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAvKiB0cF9uYW1lICAgICAgICAgICAqLyAiX211bHRpcHJvY2Vzc2luZy4iIENPTk5FQ1RJT05fTkFNRSwKLSAgICAvKiB0cF9iYXNpY3NpemUgICAgICAqLyBzaXplb2YoQ29ubmVjdGlvbk9iamVjdCksCi0gICAgLyogdHBfaXRlbXNpemUgICAgICAgKi8gMCwKLSAgICAvKiB0cF9kZWFsbG9jICAgICAgICAqLyAoZGVzdHJ1Y3Rvciljb25uZWN0aW9uX2RlYWxsb2MsCi0gICAgLyogdHBfcHJpbnQgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9nZXRhdHRyICAgICAgICAqLyAwLAotICAgIC8qIHRwX3NldGF0dHIgICAgICAgICovIDAsCi0gICAgLyogdHBfcmVzZXJ2ZWQgICAgICAgKi8gMCwKLSAgICAvKiB0cF9yZXByICAgICAgICAgICAqLyAocmVwcmZ1bmMpY29ubmVjdGlvbl9yZXByLAotICAgIC8qIHRwX2FzX251bWJlciAgICAgICovIDAsCi0gICAgLyogdHBfYXNfc2VxdWVuY2UgICAgKi8gMCwKLSAgICAvKiB0cF9hc19tYXBwaW5nICAgICAqLyAwLAotICAgIC8qIHRwX2hhc2ggICAgICAgICAgICovIDAsCi0gICAgLyogdHBfY2FsbCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9zdHIgICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2dldGF0dHJvICAgICAgICovIDAsCi0gICAgLyogdHBfc2V0YXR0cm8gICAgICAgKi8gMCwKLSAgICAvKiB0cF9hc19idWZmZXIgICAgICAqLyAwLAotICAgIC8qIHRwX2ZsYWdzICAgICAgICAgICovIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9XRUFLUkVGUywKLSAgICAvKiB0cF9kb2MgICAgICAgICAgICAqLyBjb25uZWN0aW9uX2RvYywKLSAgICAvKiB0cF90cmF2ZXJzZSAgICAgICAqLyAwLAotICAgIC8qIHRwX2NsZWFyICAgICAgICAgICovIDAsCi0gICAgLyogdHBfcmljaGNvbXBhcmUgICAgKi8gMCwKLSAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyBvZmZzZXRvZihDb25uZWN0aW9uT2JqZWN0LCB3ZWFrcmVmbGlzdCksCi0gICAgLyogdHBfaXRlciAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9pdGVybmV4dCAgICAgICAqLyAwLAotICAgIC8qIHRwX21ldGhvZHMgICAgICAgICovIGNvbm5lY3Rpb25fbWV0aG9kcywKLSAgICAvKiB0cF9tZW1iZXJzICAgICAgICAqLyAwLAotICAgIC8qIHRwX2dldHNldCAgICAgICAgICovIGNvbm5lY3Rpb25fZ2V0c2V0LAotICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZGljdCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAqLyAwLAotICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICovIDAsCi0gICAgLyogdHBfZGljdG9mZnNldCAgICAgKi8gMCwKLSAgICAvKiB0cF9pbml0ICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2FsbG9jICAgICAgICAgICovIDAsCi0gICAgLyogdHBfbmV3ICAgICAgICAgICAgKi8gY29ubmVjdGlvbl9uZXcsCi19OwotCi0jZW5kaWYgLyogQ09OTkVDVElPTl9IICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKaW5kZXggZWUyNTBlMC4uZWIwNWM2MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwpAQCAtMywyMCArMywxMyBAQAogICoKICAqIG11bHRpcHJvY2Vzc2luZy5jCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAgKi8KIAogI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgogCi0jaWYgKGRlZmluZWQoQ01TR19MRU4pICYmIGRlZmluZWQoU0NNX1JJR0hUUykpCi0gICAgI2RlZmluZSBIQVZFX0ZEX1RSQU5TRkVSIDEKLSNlbHNlCi0gICAgI2RlZmluZSBIQVZFX0ZEX1RSQU5TRkVSIDAKLSNlbmRpZgogCi1QeU9iamVjdCAqY3JlYXRlX3dpbjMyX25hbWVzcGFjZSh2b2lkKTsKLQotUHlPYmplY3QgKnBpY2tsZV9kdW1wcywgKnBpY2tsZV9sb2FkcywgKnBpY2tsZV9wcm90b2NvbDsKIFB5T2JqZWN0ICpQcm9jZXNzRXJyb3IsICpCdWZmZXJUb29TaG9ydDsKIAogLyoKQEAgLTQ5LDE2ICs0Miw2IEBACiAgICAgY2FzZSBNUF9NRU1PUllfRVJST1I6CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTVBfRU5EX09GX0ZJTEU6Ci0gICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfRU9GRXJyb3IpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1QX0VBUkxZX0VORF9PRl9GSUxFOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgZW5kIG9mIGZpbGUgZHVyaW5nIG1lc3NhZ2UiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNUF9CQURfTUVTU0FHRV9MRU5HVEg6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiYmFkIG1lc3NhZ2UgbGVuZ3RoIik7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVDoKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTY4LDE3MCArNTEsODIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotCi0vKgotICogV2luZG93cyBvbmx5Ci0gKi8KLQogI2lmZGVmIE1TX1dJTkRPV1MKLQotLyogT24gV2luZG93cyB3ZSBzZXQgYW4gZXZlbnQgdG8gc2lnbmFsIEN0cmwtQzsgY29tcGFyZSB3aXRoIHRpbWVtb2R1bGUuYyAqLwotCi1IQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKLQotc3RhdGljIEJPT0wgV0lOQVBJCi1Qcm9jZXNzaW5nQ3RybEhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKLXsKLSAgICBTZXRFdmVudChzaWdpbnRfZXZlbnQpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLyoKLSAqIFVuaXggb25seQotICovCi0KLSNlbHNlIC8qICFNU19XSU5ET1dTICovCi0KLSNpZiBIQVZFX0ZEX1RSQU5TRkVSCi0KLS8qIEZ1bmN0aW9ucyBmb3IgdHJhbnNmZXJyaW5nIGZpbGUgZGVzY3JpcHRvcnMgYmV0d2VlbiBwcm9jZXNzZXMuCi0gICBSZWltcGxlbWVudHMgc29tZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZmRjcmVkCi0gICBtb2R1bGUgYXQgaHR0cDovL3d3dy5tY2EtbHRkLmNvbS9yZXNvdXJjZXMvZmRjcmVkXzEudGd6LiAqLwotLyogQmFzZWQgaW4gaHR0cDovL3Jlc2luLmNzb2Z0Lm5ldC9jZ2ktYmluL21hbi5jZ2k/c2VjdGlvbj0zJnRvcGljPUNNU0dfREFUQSAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgotbXVsdGlwcm9jZXNzaW5nX3NlbmRmZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittdWx0aXByb2Nlc3NpbmdfY2xvc2Vzb2NrZXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGludCBjb25uLCBmZCwgcmVzOwotICAgIHN0cnVjdCBpb3ZlYyBkdW1teV9pb3Y7Ci0gICAgY2hhciBkdW1teV9jaGFyOwotICAgIHN0cnVjdCBtc2doZHIgbXNnOwotICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnOwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGNtc2doZHIgaGRyOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1ZltDTVNHX1NQQUNFKHNpemVvZihpbnQpKV07Ci0gICAgfSBjbXNnYnVmOworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHJldDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWkiLCAmY29ubiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpjbG9zZXNvY2tldCIgLCAmaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkdW1teV9pb3YuaW92X2Jhc2UgPSAmZHVtbXlfY2hhcjsKLSAgICBkdW1teV9pb3YuaW92X2xlbiA9IDE7Ci0KLSAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwotICAgIG1zZy5tc2dfY29udHJvbCA9ICZjbXNnYnVmLmJ1ZjsKLSAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZ2J1Zi5idWYpOwotICAgIG1zZy5tc2dfaW92ID0gJmR1bW15X2lvdjsKLSAgICBtc2cubXNnX2lvdmxlbiA9IDE7Ci0KLSAgICBjbXNnID0gQ01TR19GSVJTVEhEUigmbXNnKTsKLSAgICBjbXNnLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpKTsKLSAgICBjbXNnLT5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKLSAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotICAgICogKGludCAqKSBDTVNHX0RBVEEoY21zZykgPSBmZDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBzZW5kbXNnKGNvbm4sICZtc2csIDApOworICAgIHJldCA9IGNsb3Nlc29ja2V0KChTT0NLRVQpIGhhbmRsZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tdWx0aXByb2Nlc3NpbmdfcmVjdmZkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK211bHRpcHJvY2Vzc2luZ19yZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgY29ubiwgZmQsIHJlczsKLSAgICBjaGFyIGR1bW15X2NoYXI7Ci0gICAgc3RydWN0IGlvdmVjIGR1bW15X2lvdjsKLSAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKLSAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZzsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKLSAgICAgICAgdW5zaWduZWQgY2hhciBidWZbQ01TR19TUEFDRShzaXplb2YoaW50KSldOwotICAgIH0gY21zZ2J1ZjsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplLCBucmVhZDsKKyAgICBQeU9iamVjdCAqYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmNvbm4pKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiaTpyZWN2IiAsICZoYW5kbGUsICZzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkdW1teV9pb3YuaW92X2Jhc2UgPSAmZHVtbXlfY2hhcjsKLSAgICBkdW1teV9pb3YuaW92X2xlbiA9IDE7Ci0KLSAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwotICAgIG1zZy5tc2dfY29udHJvbCA9ICZjbXNnYnVmLmJ1ZjsKLSAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZ2J1Zi5idWYpOwotICAgIG1zZy5tc2dfaW92ID0gJmR1bW15X2lvdjsKLSAgICBtc2cubXNnX2lvdmxlbiA9IDE7Ci0KLSAgICBjbXNnID0gQ01TR19GSVJTVEhEUigmbXNnKTsKLSAgICBjbXNnLT5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKLSAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotICAgIGNtc2ctPmNtc2dfbGVuID0gQ01TR19MRU4oc2l6ZW9mKGludCkpOwotICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNtc2ctPmNtc2dfbGVuOworICAgIGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHJlY3Ztc2coY29ubiwgJm1zZywgMCk7CisgICAgbnJlYWQgPSByZWN2KChTT0NLRVQpIGhhbmRsZSwgUHlCeXRlc19BU19TVFJJTkcoYnVmKSwgc2l6ZSwgMCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotCi0gICAgaWYgKG1zZy5tc2dfY29udHJvbGxlbiA8IENNU0dfTEVOKHNpemVvZihpbnQpKSB8fAotICAgICAgICAoY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZykpID09IE5VTEwgfHwKLSAgICAgICAgY21zZy0+Y21zZ19sZXZlbCAhPSBTT0xfU09DS0VUIHx8Ci0gICAgICAgIGNtc2ctPmNtc2dfdHlwZSAhPSBTQ01fUklHSFRTIHx8Ci0gICAgICAgIGNtc2ctPmNtc2dfbGVuIDwgQ01TR19MRU4oc2l6ZW9mKGludCkpKSB7Ci0gICAgICAgIC8qIElmIGF0IGxlYXN0IG9uZSBjb250cm9sIG1lc3NhZ2UgaXMgcHJlc2VudCwgdGhlcmUgc2hvdWxkIGJlCi0gICAgICAgICAgIG5vIHJvb20gZm9yIGFueSBmdXJ0aGVyIGRhdGEgaW4gdGhlIGJ1ZmZlci4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIk5vIGZpbGUgZGVzY3JpcHRvciByZWNlaXZlZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobnJlYWQgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOwogICAgIH0KLQotICAgIGZkID0gKiAoaW50ICopIENNU0dfREFUQShjbXNnKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIGZkKTsKKyAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZiwgbnJlYWQpOworICAgIHJldHVybiBidWY7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0ZEX1RSQU5TRkVSICovCi0KLSNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwotCi0KLS8qCi0gKiBBbGwgcGxhdGZvcm1zCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0KgotbXVsdGlwcm9jZXNzaW5nX2FkZHJlc3Nfb2ZfYnVmZmVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorc3RhdGljIFB5T2JqZWN0ICoKK211bHRpcHJvY2Vzc2luZ19zZW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICB2b2lkICpidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfbGVuOworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBpbnQgcmV0OwogCi0gICAgaWYgKFB5T2JqZWN0X0FzV3JpdGVCdWZmZXIob2JqLCAmYnVmZmVyLCAmYnVmZmVyX2xlbikgPCAwKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAieSo6c2VuZCIgLCAmaGFuZGxlLCAmYnVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTiIgRl9QWV9TU0laRV9ULAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVm9pZFB0cihidWZmZXIpLCBidWZmZXJfbGVuKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gc2VuZCgoU09DS0VUKSBoYW5kbGUsIGJ1Zi5idWYsIGJ1Zi5sZW4sIDApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmV0KTsKIH0KIAorI2VuZGlmCiAKIC8qCiAgKiBGdW5jdGlvbiB0YWJsZQogICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewotICAgIHsiYWRkcmVzc19vZl9idWZmZXIiLCBtdWx0aXByb2Nlc3NpbmdfYWRkcmVzc19vZl9idWZmZXIsIE1FVEhfTywKLSAgICAgImFkZHJlc3Nfb2ZfYnVmZmVyKG9iaikgLT4gaW50XG4iCi0gICAgICJSZXR1cm4gYWRkcmVzcyBvZiBvYmogYXNzdW1pbmcgb2JqIHN1cHBvcnRzIGJ1ZmZlciBpbnRlZmFjZSJ9LAotI2lmIEhBVkVfRkRfVFJBTlNGRVIKLSAgICB7InNlbmRmZCIsIG11bHRpcHJvY2Vzc2luZ19zZW5kZmQsIE1FVEhfVkFSQVJHUywKLSAgICAgInNlbmRmZChzb2NrZmQsIGZkKSAtPiBOb25lXG4iCi0gICAgICJTZW5kIGZpbGUgZGVzY3JpcHRvciBnaXZlbiBieSBmZCBvdmVyIHRoZSB1bml4IGRvbWFpbiBzb2NrZXRcbiIKLSAgICAgIndob3NlIGZpbGUgZGVjcmlwdG9yIGlzIHNvY2tmZCJ9LAotICAgIHsicmVjdmZkIiwgbXVsdGlwcm9jZXNzaW5nX3JlY3ZmZCwgTUVUSF9WQVJBUkdTLAotICAgICAicmVjdmZkKHNvY2tmZCkgLT4gZmRcbiIKLSAgICAgIlJlY2VpdmUgYSBmaWxlIGRlc2NyaXB0b3Igb3ZlciBhIHVuaXggZG9tYWluIHNvY2tldFxuIgotICAgICAid2hvc2UgZmlsZSBkZWNyaXB0b3IgaXMgc29ja2ZkIn0sCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsiY2xvc2Vzb2NrZXQiLCBtdWx0aXByb2Nlc3NpbmdfY2xvc2Vzb2NrZXQsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsicmVjdiIsIG11bHRpcHJvY2Vzc2luZ19yZWN2LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InNlbmQiLCBtdWx0aXByb2Nlc3Npbmdfc2VuZCwgTUVUSF9WQVJBUkdTLCAiIn0sCiAjZW5kaWYKICAgICB7TlVMTH0KIH07CkBAIC0yNTcsMjIgKzE1MiwxMyBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fbXVsdGlwcm9jZXNzaW5nKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm1vZHVsZSwgKnRlbXAsICp2YWx1ZTsKKyAgICBQeU9iamVjdCAqbW9kdWxlLCAqdGVtcCwgKnZhbHVlID0gTlVMTDsKIAogICAgIC8qIEluaXRpYWxpemUgbW9kdWxlICovCiAgICAgbW9kdWxlID0gUHlNb2R1bGVfQ3JlYXRlKCZtdWx0aXByb2Nlc3NpbmdfbW9kdWxlKTsKICAgICBpZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBHZXQgY29weSBvZiBvYmplY3RzIGZyb20gcGlja2xlICovCi0gICAgdGVtcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZShQSUNLTEVfTU9EVUxFKTsKLSAgICBpZiAoIXRlbXApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBpY2tsZV9kdW1wcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImR1bXBzIik7Ci0gICAgcGlja2xlX2xvYWRzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAibG9hZHMiKTsKLSAgICBwaWNrbGVfcHJvdG9jb2wgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJISUdIRVNUX1BST1RPQ09MIik7Ci0gICAgUHlfWERFQ1JFRih0ZW1wKTsKLQogICAgIC8qIEdldCBjb3B5IG9mIEJ1ZmZlclRvb1Nob3J0ICovCiAgICAgdGVtcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgibXVsdGlwcm9jZXNzaW5nIik7CiAgICAgaWYgKCF0ZW1wKQpAQCAtMjgwLDEyICsxNjYsNiBAQAogICAgIEJ1ZmZlclRvb1Nob3J0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAiQnVmZmVyVG9vU2hvcnQiKTsKICAgICBQeV9YREVDUkVGKHRlbXApOwogCi0gICAgLyogQWRkIGNvbm5lY3Rpb24gdHlwZSB0byBtb2R1bGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZDb25uZWN0aW9uVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJkNvbm5lY3Rpb25UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiQ29ubmVjdGlvbiIsIChQeU9iamVjdCopJkNvbm5lY3Rpb25UeXBlKTsKLQogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoZGVmaW5lZChIQVZFX1NFTV9PUEVOKSAmJiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKSkKICAgICAvKiBBZGQgU2VtTG9jayB0eXBlIHRvIG1vZHVsZSAqLwpAQCAtMzA4LDMyICsxODgsNiBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJTZW1Mb2NrIiwgKFB5T2JqZWN0KikmU2VtTG9ja1R5cGUpOwogI2VuZGlmCiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogQWRkIFBpcGVDb25uZWN0aW9uIHRvIG1vZHVsZSAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJlBpcGVDb25uZWN0aW9uVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJlBpcGVDb25uZWN0aW9uVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIlBpcGVDb25uZWN0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUGlwZUNvbm5lY3Rpb25UeXBlKTsKLQotICAgIC8qIEluaXRpYWxpemUgd2luMzIgY2xhc3MgYW5kIGFkZCB0byBtdWx0aXByb2Nlc3NpbmcgKi8KLSAgICB0ZW1wID0gY3JlYXRlX3dpbjMyX25hbWVzcGFjZSgpOwotICAgIGlmICghdGVtcCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIndpbjMyIiwgdGVtcCk7Ci0KLSAgICAvKiBJbml0aWFsaXplIHRoZSBldmVudCBoYW5kbGUgdXNlZCB0byBzaWduYWwgQ3RybC1DICovCi0gICAgc2lnaW50X2V2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotICAgIGlmICghc2lnaW50X2V2ZW50KSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKCFTZXRDb25zb2xlQ3RybEhhbmRsZXIoUHJvY2Vzc2luZ0N0cmxIYW5kbGVyLCBUUlVFKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotI2VuZGlmCi0KICAgICAvKiBBZGQgY29uZmlndXJhdGlvbiBtYWNyb3MgKi8KICAgICB0ZW1wID0gUHlEaWN0X05ldygpOwogICAgIGlmICghdGVtcCkKQEAgLTM0Myw3ICsxOTcsNyBAQAogICAgIHZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiaSIsIG5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7IFB5X0RFQ1JFRih0ZW1wKTsgcmV0dXJuIE5VTEw7IH0gICAgICAgICAgXAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0ZW1wLCAjbmFtZSwgdmFsdWUpIDwgMCkgeyAgICAgICAgICAgXAotICAgICAgICBQeV9ERUNSRUYodGVtcCk7IFB5X0RFQ1JFRih2YWx1ZSk7IHJldHVybiBOVUxMOyB9ICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsgUHlfREVDUkVGKHZhbHVlKTsgcmV0dXJuIE5VTEw7IH0gICAgICAgICBcCiAgICAgUHlfREVDUkVGKHZhbHVlKQogCiAjaWYgZGVmaW5lZChIQVZFX1NFTV9PUEVOKSAmJiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKQpAQCAtMzUyLDkgKzIwNiw2IEBACiAjaWZkZWYgSEFWRV9TRU1fVElNRURXQUlUCiAgICAgQUREX0ZMQUcoSEFWRV9TRU1fVElNRURXQUlUKTsKICNlbmRpZgotI2lmZGVmIEhBVkVfRkRfVFJBTlNGRVIKLSAgICBBRERfRkxBRyhIQVZFX0ZEX1RSQU5TRkVSKTsKLSNlbmRpZgogI2lmZGVmIEhBVkVfQlJPS0VOX1NFTV9HRVRWQUxVRQogICAgIEFERF9GTEFHKEhBVkVfQlJPS0VOX1NFTV9HRVRWQUxVRSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaCBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAppbmRleCAxNDQyNWRlLi5lM2RlOWJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCkBAIC0zLDEyICszLDYgQEAKIAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAKLSNpZmRlZiBfX3N1bgotLyogVGhlIGNvbnRyb2wgbWVzc2FnZSBBUEkgaXMgb25seSBhdmFpbGFibGUgb24gU29sYXJpcyAKLSAgIGlmIFhQRyA0LjIgb3IgbGF0ZXIgaXMgcmVxdWVzdGVkLiAqLwotI2RlZmluZSBfWE9QRU5fU09VUkNFIDUwMAotI2VuZGlmCi0KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJweXRocmVhZC5oIgpAQCAtMjksMTAgKzIzLDYgQEAKICMgIGRlZmluZSBTRU1fVkFMVUVfTUFYIExPTkdfTUFYCiAjZWxzZQogIyAgaW5jbHVkZSA8ZmNudGwuaD4gICAgICAgICAgICAgICAgIC8qIE9fQ1JFQVQgYW5kIE9fRVhDTCAqLwotIyAgaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotIyAgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotIyAgaW5jbHVkZSA8c3lzL3Vpby5oPgotIyAgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAgICAgICAgICAgIC8qIGh0b25sKCkgYW5kIG50b2hsKCkgKi8KICMgIGlmIGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkKICMgICAgaW5jbHVkZSA8c2VtYXBob3JlLmg+CiAgICAgIHR5cGVkZWYgc2VtX3QgKlNFTV9IQU5ETEU7CkBAIC02NCwyMCArNTQsNiBAQAogCiAKIC8qCi0gKiBNYWtlIHN1cmUgUHlfc3NpemVfdCBhdmFpbGFibGUKLSAqLwotCi0jaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwICYmICFkZWZpbmVkKFBZX1NTSVpFX1RfTUlOKQotICAgdHlwZWRlZiBpbnQgUHlfc3NpemVfdDsKLSMgIGRlZmluZSBQWV9TU0laRV9UX01BWCBJTlRfTUFYCi0jICBkZWZpbmUgUFlfU1NJWkVfVF9NSU4gSU5UX01JTgotIyAgZGVmaW5lIEZfUFlfU1NJWkVfVCAiaSIKLSMgIGRlZmluZSBQeUludF9Gcm9tU3NpemVfdChuKSBQeUludF9Gcm9tTG9uZygobG9uZyluKQotI2Vsc2UKLSMgIGRlZmluZSBGX1BZX1NTSVpFX1QgIm4iCi0jZW5kaWYKLQotLyoKICAqIEZvcm1hdCBjb2RlcwogICovCiAKQEAgLTEwNSwxMiArODEsNiBAQAogIyAgZGVmaW5lIFRfU0VNX0hBTkRMRSBUX1BPSU5URVIKICNlbmRpZgogCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotIyAgZGVmaW5lIEZfUkJVRkZFUiAieSIKLSNlbHNlCi0jICBkZWZpbmUgRl9SQlVGRkVSICJzIgotI2VuZGlmCi0KIC8qCiAgKiBFcnJvciBjb2RlcyB3aGljaCBjYW4gYmUgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIGNhbGxlZCB3aXRob3V0IEdJTAogICovCkBAIC0xMTgsMTEgKzg4LDggQEAKICNkZWZpbmUgTVBfU1VDQ0VTUyAoMCkKICNkZWZpbmUgTVBfU1RBTkRBUkRfRVJST1IgKC0xKQogI2RlZmluZSBNUF9NRU1PUllfRVJST1IgKC0xMDAxKQotI2RlZmluZSBNUF9FTkRfT0ZfRklMRSAoLTEwMDIpCi0jZGVmaW5lIE1QX0VBUkxZX0VORF9PRl9GSUxFICgtMTAwMykKLSNkZWZpbmUgTVBfQkFEX01FU1NBR0VfTEVOR1RIICgtMTAwNCkKLSNkZWZpbmUgTVBfU09DS0VUX0VSUk9SICgtMTAwNSkKLSNkZWZpbmUgTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVCAoLTEwMDYpCisjZGVmaW5lIE1QX1NPQ0tFVF9FUlJPUiAoLTEwMDIpCisjZGVmaW5lIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQgKC0xMDAzKQogCiBQeU9iamVjdCAqbXBfU2V0RXJyb3IoUHlPYmplY3QgKlR5cGUsIGludCBudW0pOwogCkBAIC0xMzAsNTcgKzk3LDE0IEBACiAgKiBFeHRlcm5zIC0gbm90IGFsbCB3aWxsIHJlYWxseSBleGlzdCBvbiBhbGwgcGxhdGZvcm1zCiAgKi8KIAotZXh0ZXJuIFB5T2JqZWN0ICpwaWNrbGVfZHVtcHM7Ci1leHRlcm4gUHlPYmplY3QgKnBpY2tsZV9sb2FkczsKLWV4dGVybiBQeU9iamVjdCAqcGlja2xlX3Byb3RvY29sOwogZXh0ZXJuIFB5T2JqZWN0ICpCdWZmZXJUb29TaG9ydDsKIGV4dGVybiBQeVR5cGVPYmplY3QgU2VtTG9ja1R5cGU7Ci1leHRlcm4gUHlUeXBlT2JqZWN0IENvbm5lY3Rpb25UeXBlOwogZXh0ZXJuIFB5VHlwZU9iamVjdCBQaXBlQ29ubmVjdGlvblR5cGU7Ci1leHRlcm4gSEFORExFIHNpZ2ludF9ldmVudDsKLQotLyoKLSAqIFB5M2sgY29tcGF0aWJpbGl0eQotICovCi0KLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCi0jICBkZWZpbmUgUElDS0xFX01PRFVMRSAicGlja2xlIgotIyAgZGVmaW5lIEZST01fRk9STUFUIFB5VW5pY29kZV9Gcm9tRm9ybWF0Ci0jICBkZWZpbmUgUHlJbnRfRnJvbUxvbmcgUHlMb25nX0Zyb21Mb25nCi0jICBkZWZpbmUgUHlJbnRfRnJvbVNzaXplX3QgUHlMb25nX0Zyb21Tc2l6ZV90Ci0jZWxzZQotIyAgZGVmaW5lIFBJQ0tMRV9NT0RVTEUgImNQaWNrbGUiCi0jICBkZWZpbmUgRlJPTV9GT1JNQVQgUHlTdHJpbmdfRnJvbUZvcm1hdAotI2VuZGlmCi0KLSNpZm5kZWYgUHlWYXJPYmplY3RfSEVBRF9JTklUCi0jICBkZWZpbmUgUHlWYXJPYmplY3RfSEVBRF9JTklUKHR5cGUsIHNpemUpIFB5T2JqZWN0X0hFQURfSU5JVCh0eXBlKSBzaXplLAotI2VuZGlmCi0KLSNpZm5kZWYgUHlfVFBGTEFHU19IQVZFX1dFQUtSRUZTCi0jICBkZWZpbmUgUHlfVFBGTEFHU19IQVZFX1dFQUtSRUZTIDAKLSNlbmRpZgotCi0vKgotICogQ29ubmVjdGlvbiBkZWZpbml0aW9uCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX0JVRkZFUl9TSVpFIDEwMjQKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBmbGFnczsKLSAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7Ci0gICAgY2hhciBidWZmZXJbQ09OTkVDVElPTl9CVUZGRVJfU0laRV07Ci19IENvbm5lY3Rpb25PYmplY3Q7CiAKIC8qCiAgKiBNaXNjZWxsYW5lb3VzCiAgKi8KIAotI2RlZmluZSBNQVhfTUVTU0FHRV9MRU5HVEggMHg3ZmZmZmZmZgotCiAjaWZuZGVmIE1JTgogIyAgZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8geCA6IHkpCiAjICBkZWZpbmUgTUFYKHgsIHkpICgoeCkgPiAoeSkgPyB4IDogeSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9waXBlX2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9waXBlX2Nvbm5lY3Rpb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkZGUwYy4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoKLSAqIEEgdHlwZSB3aGljaCB3cmFwcyBhIHBpcGUgaGFuZGxlIGluIG1lc3NhZ2Ugb3JpZW50ZWQgbW9kZQotICoKLSAqIHBpcGVfY29ubmVjdGlvbi5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgotCi0jZGVmaW5lIENMT1NFKGgpIENsb3NlSGFuZGxlKGgpCi0KLS8qCi0gKiBTZW5kIHN0cmluZyB0byB0aGUgcGlwZTsgYXNzdW1lcyBpbiBtZXNzYWdlIG9yaWVudGVkIG1vZGUKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9zZW5kX3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpzdHJpbmcsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgRFdPUkQgYW1vdW50X3dyaXR0ZW47Ci0gICAgQk9PTCByZXQ7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gV3JpdGVGaWxlKGNvbm4tPmhhbmRsZSwgc3RyaW5nLCBsZW5ndGgsICZhbW91bnRfd3JpdHRlbiwgTlVMTCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXQgPT0gMCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm5vdCBzZW5kICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgYnl0ZXMgb3ZlciBjb25uZWN0aW9uIiwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotICAgIH0KLQotICAgIHJldHVybiByZXQgPyBNUF9TVUNDRVNTIDogTVBfU1RBTkRBUkRfRVJST1I7Ci19Ci0KLS8qCi0gKiBBdHRlbXB0cyB0byByZWFkIGludG8gYnVmZmVyLCBvciBpZiBidWZmZXIgdG9vIHNtYWxsIGludG8gKm5ld2J1ZmZlci4KLSAqCi0gKiBSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkLiAgQXNzdW1lcyBpbiBtZXNzYWdlIG9yaWVudGVkIG1vZGUuCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLWNvbm5fcmVjdl9zdHJpbmcoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgY2hhciAqYnVmZmVyLAotICAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuZ3RoLCBjaGFyICoqbmV3YnVmZmVyLCBzaXplX3QgbWF4bGVuZ3RoKQotewotICAgIERXT1JEIGxlZnQsIGxlbmd0aCwgZnVsbF9sZW5ndGgsIGVycjsKLSAgICBCT09MIHJldDsKLSAgICAqbmV3YnVmZmVyID0gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBSZWFkRmlsZShjb25uLT5oYW5kbGUsIGJ1ZmZlciwgTUlOKGJ1Zmxlbmd0aCwgbWF4bGVuZ3RoKSwKLSAgICAgICAgICAgICAgICAgICZsZW5ndGgsIE5VTEwpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJldCkKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLQotICAgIGVyciA9IEdldExhc3RFcnJvcigpOwotICAgIGlmIChlcnIgIT0gRVJST1JfTU9SRV9EQVRBKSB7Ci0gICAgICAgIGlmIChlcnIgPT0gRVJST1JfQlJPS0VOX1BJUEUpCi0gICAgICAgICAgICByZXR1cm4gTVBfRU5EX09GX0ZJTEU7Ci0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICB9Ci0KLSAgICBpZiAoIVBlZWtOYW1lZFBpcGUoY29ubi0+aGFuZGxlLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmbGVmdCkpCi0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLQotICAgIGZ1bGxfbGVuZ3RoID0gbGVuZ3RoICsgbGVmdDsKLSAgICBpZiAoZnVsbF9sZW5ndGggPiBtYXhsZW5ndGgpCi0gICAgICAgIHJldHVybiBNUF9CQURfTUVTU0FHRV9MRU5HVEg7Ci0KLSAgICAqbmV3YnVmZmVyID0gUHlNZW1fTWFsbG9jKGZ1bGxfbGVuZ3RoKTsKLSAgICBpZiAoKm5ld2J1ZmZlciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotCi0gICAgbWVtY3B5KCpuZXdidWZmZXIsIGJ1ZmZlciwgbGVuZ3RoKTsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBSZWFkRmlsZShjb25uLT5oYW5kbGUsICpuZXdidWZmZXIrbGVuZ3RoLCBsZWZ0LCAmbGVuZ3RoLCBOVUxMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXQpIHsKLSAgICAgICAgYXNzZXJ0KGxlbmd0aCA9PSBsZWZ0KTsKLSAgICAgICAgcmV0dXJuIGZ1bGxfbGVuZ3RoOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoKm5ld2J1ZmZlcik7Ci0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICB9Ci19Ci0KLS8qCi0gKiBDaGVjayB3aGV0aGVyIGFueSBkYXRhIGlzIGF2YWlsYWJsZSBmb3IgcmVhZGluZwotICovCi0KLXN0YXRpYyBpbnQKLWNvbm5fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBkb3VibGUgdGltZW91dCwgUHlUaHJlYWRTdGF0ZSAqX3NhdmUpCi17Ci0gICAgRFdPUkQgYnl0ZXMsIGRlYWRsaW5lLCBkZWxheTsKLSAgICBpbnQgZGlmZmVyZW5jZSwgcmVzOwotICAgIEJPT0wgYmxvY2sgPSBGQUxTRTsKLQotICAgIGlmICghUGVla05hbWVkUGlwZShjb25uLT5oYW5kbGUsIE5VTEwsIDAsIE5VTEwsICZieXRlcywgTlVMTCkpCi0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLQotICAgIGlmICh0aW1lb3V0ID09IDAuMCkKLSAgICAgICAgcmV0dXJuIGJ5dGVzID4gMDsKLQotICAgIGlmICh0aW1lb3V0IDwgMC4wKQotICAgICAgICBibG9jayA9IFRSVUU7Ci0gICAgZWxzZQotICAgICAgICAvKiBYWFggZG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgICAgIGRlYWRsaW5lID0gR2V0VGlja0NvdW50KCkgKyAoRFdPUkQpKDEwMDAgKiB0aW1lb3V0ICsgMC41KTsKLQotICAgIFNsZWVwKDApOwotCi0gICAgZm9yIChkZWxheSA9IDEgOyA7IGRlbGF5ICs9IDEpIHsKLSAgICAgICAgaWYgKCFQZWVrTmFtZWRQaXBlKGNvbm4tPmhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgJmJ5dGVzLCBOVUxMKSkKLSAgICAgICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZXMgPiAwKQotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICAgICAgaWYgKCFibG9jaykgewotICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGRlYWRsaW5lIC0gR2V0VGlja0NvdW50KCk7Ci0gICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgaWYgKChpbnQpZGVsYXkgPiBkaWZmZXJlbmNlKQotICAgICAgICAgICAgICAgIGRlbGF5ID0gZGlmZmVyZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWxheSA+IDIwKQotICAgICAgICAgICAgZGVsYXkgPSAyMDsKLQotICAgICAgICBTbGVlcChkZWxheSk7Ci0KLSAgICAgICAgLyogY2hlY2sgZm9yIHNpZ25hbHMgKi8KLSAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwotICAgICAgICByZXMgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKLSAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCi0KLSAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgIHJldHVybiBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUOwotICAgIH0KLX0KLQotLyoKLSAqICJjb25uZWN0aW9uLmgiIGRlZmluZXMgdGhlIFBpcGVDb25uZWN0aW9uIHR5cGUgdXNpbmcgdGhlIGRlZmluaXRpb25zIGFib3ZlCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX05BTUUgIlBpcGVDb25uZWN0aW9uIgotI2RlZmluZSBDT05ORUNUSU9OX1RZUEUgUGlwZUNvbm5lY3Rpb25UeXBlCi0KLSNpbmNsdWRlICJjb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMKaW5kZXggMWVlMjI0ZC4uMmMyYjAyMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYwpAQCAtMyw3ICszLDggQEAKICAqCiAgKiBzZW1hcGhvcmUuYwogICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyaworICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogICovCiAKICNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKQEAgLTYyLDcgKzYzLDggQEAKICAgICBpbnQgYmxvY2tpbmcgPSAxOwogICAgIGRvdWJsZSB0aW1lb3V0OwogICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaiA9IFB5X05vbmU7Ci0gICAgRFdPUkQgcmVzLCBmdWxsX21zZWNzLCBtc2Vjcywgc3RhcnQsIHRpY2tzOworICAgIERXT1JEIHJlcywgZnVsbF9tc2VjcywgbmhhbmRsZXM7CisgICAgSEFORExFIGhhbmRsZXNbMl0sIHNpZ2ludF9ldmVudDsKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiYmxvY2siLCAidGltZW91dCIsIE5VTEx9OwogCkBAIC05Niw1MyArOTgsNDAgQEAKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgfQogCi0gICAgLyogY2hlY2sgd2hldGhlciB3ZSBjYW4gYWNxdWlyZSB3aXRob3V0IGJsb2NraW5nICovCisgICAgLyogY2hlY2sgd2hldGhlciB3ZSBjYW4gYWNxdWlyZSB3aXRob3V0IHJlbGVhc2luZyB0aGUgR0lMIGFuZCBibG9ja2luZyAqLwogICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYtPmhhbmRsZSwgMCkgPT0gV0FJVF9PQkpFQ1RfMCkgewogICAgICAgICBzZWxmLT5sYXN0X3RpZCA9IEdldEN1cnJlbnRUaHJlYWRJZCgpOwogICAgICAgICArK3NlbGYtPmNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9CiAKLSAgICBtc2VjcyA9IGZ1bGxfbXNlY3M7Ci0gICAgc3RhcnQgPSBHZXRUaWNrQ291bnQoKTsKLQotICAgIGZvciAoIDsgOyApIHsKLSAgICAgICAgSEFORExFIGhhbmRsZXNbMl0gPSB7c2VsZi0+aGFuZGxlLCBzaWdpbnRfZXZlbnR9OwotCi0gICAgICAgIC8qIGRvIHRoZSB3YWl0ICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgUmVzZXRFdmVudChzaWdpbnRfZXZlbnQpOwotICAgICAgICByZXMgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKDIsIGhhbmRsZXMsIEZBTFNFLCBtc2Vjcyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgLyogaGFuZGxlIHJlc3VsdCAqLwotICAgICAgICBpZiAocmVzICE9IFdBSVRfT0JKRUNUXzAgKyAxKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyogZ290IFNJR0lOVCBzbyBnaXZlIHNpZ25hbCBoYW5kbGVyIGEgY2hhbmNlIHRvIHJ1biAqLwotICAgICAgICBTbGVlcCgxKTsKLQotICAgICAgICAvKiBpZiB0aGlzIGlzIG1haW4gdGhyZWFkIGxldCBLZXlib2FyZEludGVycnVwdCBiZSByYWlzZWQgKi8KLSAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgLyogcmVjYWxjdWxhdGUgdGltZW91dCAqLwotICAgICAgICBpZiAobXNlY3MgIT0gSU5GSU5JVEUpIHsKLSAgICAgICAgICAgIHRpY2tzID0gR2V0VGlja0NvdW50KCk7Ci0gICAgICAgICAgICBpZiAoKERXT1JEKSh0aWNrcyAtIHN0YXJ0KSA+PSBmdWxsX21zZWNzKQotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICAgICAgICAgIG1zZWNzID0gZnVsbF9tc2VjcyAtICh0aWNrcyAtIHN0YXJ0KTsKLSAgICAgICAgfQorICAgIC8qIHByZXBhcmUgbGlzdCBvZiBoYW5kbGVzICovCisgICAgbmhhbmRsZXMgPSAwOworICAgIGhhbmRsZXNbbmhhbmRsZXMrK10gPSBzZWxmLT5oYW5kbGU7CisgICAgaWYgKF9QeU9TX0lzTWFpblRocmVhZCgpKSB7CisgICAgICAgIHNpZ2ludF9ldmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgIGFzc2VydChzaWdpbnRfZXZlbnQgIT0gTlVMTCk7CisgICAgICAgIGhhbmRsZXNbbmhhbmRsZXMrK10gPSBzaWdpbnRfZXZlbnQ7CiAgICAgfQogCisgICAgLyogZG8gdGhlIHdhaXQgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMKQorICAgICAgICBSZXNldEV2ZW50KHNpZ2ludF9ldmVudCk7CisgICAgcmVzID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cyhuaGFuZGxlcywgaGFuZGxlcywgRkFMU0UsIGZ1bGxfbXNlY3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKICAgICAvKiBoYW5kbGUgcmVzdWx0ICovCiAgICAgc3dpdGNoIChyZXMpIHsKICAgICBjYXNlIFdBSVRfVElNRU9VVDoKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoKKyAgICBjYXNlIFdBSVRfT0JKRUNUXzAgKyAwOgogICAgICAgICBzZWxmLT5sYXN0X3RpZCA9IEdldEN1cnJlbnRUaHJlYWRJZCgpOwogICAgICAgICArK3NlbGYtPmNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICBjYXNlIFdBSVRfT0JKRUNUXzAgKyAxOgorICAgICAgICBlcnJubyA9IEVJTlRSOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgIGNhc2UgV0FJVF9GQUlMRUQ6CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICBkZWZhdWx0OgpAQCAtNDkwLDcgKzQ3OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2VtbG9ja19jb3VudChTZW1Mb2NrT2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZylzZWxmLT5jb3VudCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWxmLT5jb3VudCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01MTQsNyArNTAzLDcgQEAKICAgICAgICB0aGUgbnVtYmVyIG9mIHdhaXRpbmcgdGhyZWFkcyAqLwogICAgIGlmIChzdmFsIDwgMCkKICAgICAgICAgc3ZhbCA9IDA7Ci0gICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKChsb25nKXN2YWwpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3ZhbCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiYzM3Ny4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYworKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi0vKgotICogQSB0eXBlIHdoaWNoIHdyYXBzIGEgc29ja2V0Ci0gKgotICogc29ja2V0X2Nvbm5lY3Rpb24uYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotI2lmIGRlZmluZWQoSEFWRV9QT0xMKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QT0xMKQotIyAgaW5jbHVkZSAicG9sbC5oIgotI2VuZGlmCi0KLSNpZmRlZiBNU19XSU5ET1dTCi0jICBkZWZpbmUgV1JJVEUoaCwgYnVmZmVyLCBsZW5ndGgpIHNlbmQoKFNPQ0tFVCloLCBidWZmZXIsIGxlbmd0aCwgMCkKLSMgIGRlZmluZSBSRUFEKGgsIGJ1ZmZlciwgbGVuZ3RoKSByZWN2KChTT0NLRVQpaCwgYnVmZmVyLCBsZW5ndGgsIDApCi0jICBkZWZpbmUgQ0xPU0UoaCkgY2xvc2Vzb2NrZXQoKFNPQ0tFVCloKQotI2Vsc2UKLSMgIGRlZmluZSBXUklURShoLCBidWZmZXIsIGxlbmd0aCkgd3JpdGUoaCwgYnVmZmVyLCBsZW5ndGgpCi0jICBkZWZpbmUgUkVBRChoLCBidWZmZXIsIGxlbmd0aCkgcmVhZChoLCBidWZmZXIsIGxlbmd0aCkKLSMgIGRlZmluZSBDTE9TRShoKSBjbG9zZShoKQotI2VuZGlmCi0KLS8qCi0gKiBTZW5kIHN0cmluZyB0byBmaWxlIGRlc2NyaXB0b3IKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotX2Nvbm5fc2VuZGFsbChIQU5ETEUgaCwgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIGNoYXIgKnAgPSBzdHJpbmc7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICB3aGlsZSAobGVuZ3RoID4gMCkgewotICAgICAgICByZXMgPSBXUklURShoLCBwLCBsZW5ndGgpOwotICAgICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBNUF9TT0NLRVRfRVJST1I7Ci0gICAgICAgIGxlbmd0aCAtPSByZXM7Ci0gICAgICAgIHAgKz0gcmVzOwotICAgIH0KLQotICAgIHJldHVybiBNUF9TVUNDRVNTOwotfQotCi0vKgotICogUmVjZWl2ZSBzdHJpbmcgb2YgZXhhY3QgbGVuZ3RoIGZyb20gZmlsZSBkZXNjcmlwdG9yCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLV9jb25uX3JlY3ZhbGwoSEFORExFIGgsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzaXplX3QgcmVtYWluaW5nID0gbGVuZ3RoOwotICAgIFB5X3NzaXplX3QgdGVtcDsKLSAgICBjaGFyICpwID0gYnVmZmVyOwotCi0gICAgd2hpbGUgKHJlbWFpbmluZyA+IDApIHsKLSAgICAgICAgdGVtcCA9IFJFQUQoaCwgcCwgcmVtYWluaW5nKTsKLSAgICAgICAgaWYgKHRlbXAgPD0gMCkgewotICAgICAgICAgICAgaWYgKHRlbXAgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nID09IGxlbmd0aCA/Ci0gICAgICAgICAgICAgICAgICAgIE1QX0VORF9PRl9GSUxFIDogTVBfRUFSTFlfRU5EX09GX0ZJTEU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXA7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtYWluaW5nIC09IHRlbXA7Ci0gICAgICAgIHAgKz0gdGVtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gTVBfU1VDQ0VTUzsKLX0KLQotLyoKLSAqIFNlbmQgYSBzdHJpbmcgcHJlcGVuZGVkIGJ5IHRoZSBzdHJpbmcgbGVuZ3RoIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3NlbmRfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICAvKiBUaGUgImhlYWRlciIgb2YgdGhlIG1lc3NhZ2UgaXMgYSAzMiBiaXQgdW5zaWduZWQgbnVtYmVyIChpbgotICAgICAgIG5ldHdvcmsgb3JkZXIpIHdoaWNoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSAiYm9keSIuICBJZgotICAgICAgIHRoZSBtZXNzYWdlIGlzIHNob3J0ZXIgdGhhbiBhYm91dCAxNmtiIHRoZW4gaXQgaXMgcXVpY2tlciB0bwotICAgICAgIGNvbWJpbmUgdGhlICJoZWFkZXIiIGFuZCB0aGUgImJvZHkiIG9mIHRoZSBtZXNzYWdlIGFuZCBzZW5kCi0gICAgICAgdGhlbSBhdCBvbmNlLiAqLwotICAgIGlmIChsZW5ndGggPCAoMTYqMTAyNCkpIHsKLSAgICAgICAgY2hhciAqbWVzc2FnZTsKLQotICAgICAgICBtZXNzYWdlID0gUHlNZW1fTWFsbG9jKGxlbmd0aCs0KTsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBNUF9NRU1PUllfRVJST1I7Ci0KLSAgICAgICAgKihVSU5UMzIqKW1lc3NhZ2UgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIG1lbWNweShtZXNzYWdlKzQsIHN0cmluZywgbGVuZ3RoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSBfY29ubl9zZW5kYWxsKGNvbm4tPmhhbmRsZSwgbWVzc2FnZSwgbGVuZ3RoKzQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeU1lbV9GcmVlKG1lc3NhZ2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVJTlQzMiBsZW5idWZmOwotCi0gICAgICAgIGlmIChsZW5ndGggPiBNQVhfTUVTU0FHRV9MRU5HVEgpCi0gICAgICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgICAgIGxlbmJ1ZmYgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gX2Nvbm5fc2VuZGFsbChjb25uLT5oYW5kbGUsIChjaGFyKikmbGVuYnVmZiwgNCkgfHwKLSAgICAgICAgICAgIF9jb25uX3NlbmRhbGwoY29ubi0+aGFuZGxlLCBzdHJpbmcsIGxlbmd0aCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiBBdHRlbXB0cyB0byByZWFkIGludG8gYnVmZmVyLCBvciBmYWlsaW5nIHRoYXQgaW50byAqbmV3YnVmZmVyCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9yZWN2X3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpidWZmZXIsCi0gICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW5ndGgsIGNoYXIgKipuZXdidWZmZXIsIHNpemVfdCBtYXhsZW5ndGgpCi17Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgVUlOVDMyIHVsZW5ndGg7Ci0KLSAgICAqbmV3YnVmZmVyID0gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgKGNoYXIqKSZ1bGVuZ3RoLCA0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcmVzOwotCi0gICAgdWxlbmd0aCA9IG50b2hsKHVsZW5ndGgpOwotICAgIGlmICh1bGVuZ3RoID4gbWF4bGVuZ3RoKQotICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgaWYgKHVsZW5ndGggPiBidWZsZW5ndGgpIHsKLSAgICAgICAgKm5ld2J1ZmZlciA9IGJ1ZmZlciA9IFB5TWVtX01hbGxvYygoc2l6ZV90KXVsZW5ndGgpOwotICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgYnVmZmVyLCAoc2l6ZV90KXVsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzID49IDApIHsKLSAgICAgICAgcmVzID0gKFB5X3NzaXplX3QpdWxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKCpuZXdidWZmZXIgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKCpuZXdidWZmZXIpOwotICAgICAgICAqbmV3YnVmZmVyID0gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqIENoZWNrIHdoZXRoZXIgYW55IGRhdGEgaXMgYXZhaWxhYmxlIGZvciByZWFkaW5nIC0tIG5lZyB0aW1lb3V0IGJsb2NrcwotICovCi0KLXN0YXRpYyBpbnQKLWNvbm5fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBkb3VibGUgdGltZW91dCwgUHlUaHJlYWRTdGF0ZSAqX3NhdmUpCi17Ci0jaWYgZGVmaW5lZChIQVZFX1BPTEwpICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BPTEwpCi0gICAgaW50IHJlczsKLSAgICBzdHJ1Y3QgcG9sbGZkIHA7Ci0KLSAgICBwLmZkID0gKGludCljb25uLT5oYW5kbGU7Ci0gICAgcC5ldmVudHMgPSBQT0xMSU4gfCBQT0xMUFJJOwotICAgIHAucmV2ZW50cyA9IDA7Ci0KLSAgICBpZiAodGltZW91dCA8IDApIHsKLSAgICAgICAgcmVzID0gcG9sbCgmcCwgMSwgLTEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlcyA9IHBvbGwoJnAsIDEsIChpbnQpKHRpbWVvdXQgKiAxMDAwICsgMC41KSk7Ci0gICAgfQotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIE1QX1NPQ0tFVF9FUlJPUjsKLSAgICB9IGVsc2UgaWYgKHAucmV2ZW50cyAmIChQT0xMTlZBTHxQT0xMRVJSKSkgewotICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAicG9sbCgpIGdhdmUgUE9MTE5WQUwgb3IgUE9MTEVSUiIpOwotICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKLSAgICAgICAgcmV0dXJuIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ7Ci0gICAgfSBlbHNlIGlmIChwLnJldmVudHMgIT0gMCkgewotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQocmVzID09IDApOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotI2Vsc2UKLSAgICBpbnQgcmVzOwotICAgIGZkX3NldCByZmRzOwotCi0gICAgLyoKLSAgICAgKiBWZXJpZnkgdGhlIGhhbmRsZSwgaXNzdWUgMzMyMS4gTm90IHJlcXVpcmVkIGZvciB3aW5kb3dzLgotICAgICAqLwotICAgICNpZm5kZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAoKChpbnQpY29ubi0+aGFuZGxlKSA8IDAgfHwgKChpbnQpY29ubi0+aGFuZGxlKSA+PSBGRF9TRVRTSVpFKSB7Ci0gICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImhhbmRsZSBvdXQgb2YgcmFuZ2UgaW4gc2VsZWN0KCkiKTsKLSAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUwotICAgICAgICAgICAgcmV0dXJuIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ7Ci0gICAgICAgIH0KLSAgICAjZW5kaWYKLQotICAgIEZEX1pFUk8oJnJmZHMpOwotICAgIEZEX1NFVCgoU09DS0VUKWNvbm4tPmhhbmRsZSwgJnJmZHMpOwotCi0gICAgaWYgKHRpbWVvdXQgPCAwLjApIHsKLSAgICAgICAgcmVzID0gc2VsZWN0KChpbnQpY29ubi0+aGFuZGxlKzEsICZyZmRzLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgdHYudHZfc2VjID0gKGxvbmcpdGltZW91dDsKLSAgICAgICAgdHYudHZfdXNlYyA9IChsb25nKSgodGltZW91dCAtIHR2LnR2X3NlYykgKiAxZTYgKyAwLjUpOwotICAgICAgICByZXMgPSBzZWxlY3QoKGludCljb25uLT5oYW5kbGUrMSwgJnJmZHMsIE5VTEwsIE5VTEwsICZ0dik7Ci0gICAgfQotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIE1QX1NPQ0tFVF9FUlJPUjsKLSAgICB9IGVsc2UgaWYgKEZEX0lTU0VUKGNvbm4tPmhhbmRsZSwgJnJmZHMpKSB7Ci0gICAgICAgIHJldHVybiBUUlVFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFzc2VydChyZXMgPT0gMCk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotLyoKLSAqICJjb25uZWN0aW9uLmgiIGRlZmluZXMgdGhlIENvbm5lY3Rpb24gdHlwZSB1c2luZyBkZWZzIGFib3ZlCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX05BTUUgIkNvbm5lY3Rpb24iCi0jZGVmaW5lIENPTk5FQ1RJT05fVFlQRSBDb25uZWN0aW9uVHlwZQotCi0jaW5jbHVkZSAiY29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTM0OGM0Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYworKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vKgotICogV2luMzIgZnVuY3Rpb25zIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIHBhY2thZ2UKLSAqCi0gKiB3aW4zMl9mdW5jdGlvbnMuYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotCi0jZGVmaW5lIFdJTjMyX0ZVTkNUSU9OKGZ1bmMpIFwKLSAgICB7I2Z1bmMsIChQeUNGdW5jdGlvbil3aW4zMl8gIyMgZnVuYywgTUVUSF9WQVJBUkdTIHwgTUVUSF9TVEFUSUMsICIifQotCi0jZGVmaW5lIFdJTjMyX0NPTlNUQU5UKGZtdCwgY29uKSBcCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoV2luMzJUeXBlLnRwX2RpY3QsICNjb24sIFB5X0J1aWxkVmFsdWUoZm10LCBjb24pKQotCi0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhPYmplY3Q7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFLCAmaE9iamVjdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIEhBTkRMRSBoTmFtZWRQaXBlOwotICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQ7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZscE92ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoTmFtZWRQaXBlLCBscE92ZXJsYXBwZWQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscEZpbGVOYW1lOwotICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKLSAgICBEV09SRCBkd1NoYXJlTW9kZTsKLSAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7Ci0gICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOwotICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOwotICAgIEhBTkRMRSBoYW5kbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIExQQ1RTVFIgbHBOYW1lOwotICAgIERXT1JEIGR3T3Blbk1vZGU7Ci0gICAgRFdPUkQgZHdQaXBlTW9kZTsKLSAgICBEV09SRCBuTWF4SW5zdGFuY2VzOwotICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOwotICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9FeGl0UHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgVUlOVCB1RXhpdENvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkkiLCAmdUV4aXRDb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKLSAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8U0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwotICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKLSAgICAjZW5kaWYKLQotCi0gICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7Ci0gICAgRFdPUkQgZHdQcm9jZXNzSWQ7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEICJpIiBGX0RXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOwotICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgUHlPYmplY3QgKm9BcmdzWzNdOwotICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OwotICAgIGludCBpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgewotICAgICAgICBpZiAob0FyZ3NbaV0gIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgZHdBcmdzW2ldID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhvQXJnc1tpXSk7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIHBBcmdzW2ldID0gJmR3QXJnc1tpXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoaE5hbWVkUGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7Ci0gICAgRFdPUkQgblRpbWVPdXQ7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHdpbjMyX21ldGhvZHNbXSA9IHsKLSAgICBXSU4zMl9GVU5DVElPTihDbG9zZUhhbmRsZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oR2V0TGFzdEVycm9yKSwKLSAgICBXSU4zMl9GVU5DVElPTihPcGVuUHJvY2VzcyksCi0gICAgV0lOMzJfRlVOQ1RJT04oRXhpdFByb2Nlc3MpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENvbm5lY3ROYW1lZFBpcGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENyZWF0ZUZpbGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENyZWF0ZU5hbWVkUGlwZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKFdhaXROYW1lZFBpcGUpLAotICAgIHtOVUxMfQotfTsKLQotCi1QeVR5cGVPYmplY3QgV2luMzJUeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotfTsKLQotCi1QeU9iamVjdCAqCi1jcmVhdGVfd2luMzJfbmFtZXNwYWNlKHZvaWQpCi17Ci0gICAgV2luMzJUeXBlLnRwX25hbWUgPSAiX211bHRpcHJvY2Vzc2luZy53aW4zMiI7Ci0gICAgV2luMzJUeXBlLnRwX21ldGhvZHMgPSB3aW4zMl9tZXRob2RzOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJldpbjMyVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJldpbjMyVHlwZSk7Ci0KLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9BTFJFQURZX0VYSVNUUyk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fREFUQSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9CVVNZKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0NPTk5FQ1RFRCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfU0VNX1RJTUVPVVQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfUkVBRCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19XUklURSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgSU5GSU5JVEUpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIE5NUFdBSVRfV0FJVF9GT1JFVkVSKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBPUEVOX0VYSVNUSU5HKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19EVVBMRVgpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0lOQk9VTkQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfUkVBRE1PREVfTUVTU0FHRSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9UWVBFX01FU1NBR0UpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUyk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9XQUlUKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0FMTF9BQ0NFU1MpOwotCi0gICAgV0lOMzJfQ09OU1RBTlQoImkiLCBOVUxMKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSZXaW4zMlR5cGU7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19waWNrbGUuYyBiL01vZHVsZXMvX3BpY2tsZS5jCmluZGV4IDE4ZWFhMzguLmMwYjVjZjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3BpY2tsZS5jCisrKyBiL01vZHVsZXMvX3BpY2tsZS5jCkBAIC0zMTksNiArMzE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyB0byBzdXBwb3J0IHNlbGYtcmVmZXJlbnRpYWwgb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGluZy4gKi8KICAgICBQeU9iamVjdCAqcGVyc19mdW5jOyAgICAgICAgLyogcGVyc2lzdGVudF9pZCgpIG1ldGhvZCwgY2FuIGJlIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZGlzcGF0Y2hfdGFibGU7ICAgLyogcHJpdmF0ZSBkaXNwYXRjaF90YWJsZSwgY2FuIGJlIE5VTEwgKi8KICAgICBQeU9iamVjdCAqYXJnOwogCiAgICAgUHlPYmplY3QgKndyaXRlOyAgICAgICAgICAgIC8qIHdyaXRlKCkgbWV0aG9kIG9mIHRoZSBvdXRwdXQgc3RyZWFtLiAqLwpAQCAtNjA1LDcgKzYwNiw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogSGVscGVycyBmb3IgY3JlYXRpbmcgdGhlIGFyZ3VtZW50IHR1cGxlIHBhc3NlZCB0byBmdW5jdGlvbnMuIFRoaXMgaGFzIHRoZQotICAgcGVyZm9ybWFuY2UgYWR2YW50YWdlIG9mIGNhbGxpbmcgUHlUdXBsZV9OZXcoKSBvbmx5IG9uY2UuIAorICAgcGVyZm9ybWFuY2UgYWR2YW50YWdlIG9mIGNhbGxpbmcgUHlUdXBsZV9OZXcoKSBvbmx5IG9uY2UuCiAKICAgIFhYWChhdmFzc2Fsb3R0aSk6IElubGluZSBkaXJlY3RseSBpbiBfUGlja2xlcl9GYXN0Q2FsbCgpIGFuZAogICAgX1VucGlja2xlcl9GYXN0Q2FsbCgpLiAqLwpAQCAtNzY0LDYgKzc2NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZi0+cGVyc19mdW5jID0gTlVMTDsKKyAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IE5VTEw7CiAgICAgc2VsZi0+YXJnID0gTlVMTDsKICAgICBzZWxmLT53cml0ZSA9IE5VTEw7CiAgICAgc2VsZi0+cHJvdG8gPSAwOwpAQCAtODEzLDcgKzgxNSw3IEBACiAgICAgZml4X2ltcG9ydHMgPSBQeU9iamVjdF9Jc1RydWUoZml4X2ltcG9ydHNfb2JqKTsKICAgICBpZiAoZml4X2ltcG9ydHMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKKwogICAgIHNlbGYtPnByb3RvID0gcHJvdG87CiAgICAgc2VsZi0+YmluID0gcHJvdG8gPiAwOwogICAgIHNlbGYtPmZpeF9pbXBvcnRzID0gZml4X2ltcG9ydHMgJiYgcHJvdG8gPCAzOwpAQCAtODI2LDggKzgyOCw5IEBACiBzdGF0aWMgaW50CiBfUGlja2xlcl9TZXRPdXRwdXRTdHJlYW0oUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCiB7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogICAgIGFzc2VydChmaWxlICE9IE5VTEwpOwotICAgIHNlbGYtPndyaXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAid3JpdGUiKTsKKyAgICBzZWxmLT53cml0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmIChzZWxmLT53cml0ZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC05MDksNyArOTEyLDcgQEAKICAgICBQeV9zc2l6ZV90IHJlYWRfc2l6ZSwgcHJlZmV0Y2hlZF9zaXplID0gMDsKIAogICAgIGFzc2VydChzZWxmLT5yZWFkICE9IE5VTEwpOwotICAgIAorCiAgICAgaWYgKF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xMDM3LDcgKzEwNDAsNyBAQAogICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7CiAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiAgICAgfQotIAorCiAgICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBSZXR1cm4gdGhlCiAgICAgICAgcmVtYWluaW5nIHN0cmluZyBhbmQgbGV0IHRoZSBjYWxsZXIgZmlndXJlIGl0IG91dC4gKi8KICAgICAqcmVzdWx0ID0gc2VsZi0+aW5wdXRfYnVmZmVyICsgc2VsZi0+bmV4dF9yZWFkX2lkeDsKQEAgLTExNzMsMTUgKzExNzYsMTkgQEAKIHN0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2V0SW5wdXRTdHJlYW0oVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSkKIHsKLSAgICBzZWxmLT5wZWVrID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicGVlayIpOworICAgIF9QeV9JREVOVElGSUVSKHBlZWspOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworICAgIF9QeV9JREVOVElGSUVSKHJlYWRsaW5lKTsKKworICAgIHNlbGYtPnBlZWsgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbGUsICZQeUlkX3BlZWspOwogICAgIGlmIChzZWxmLT5wZWVrID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBzZWxmLT5yZWFkID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicmVhZCIpOwotICAgIHNlbGYtPnJlYWRsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicmVhZGxpbmUiKTsKKyAgICBzZWxmLT5yZWFkID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkKTsKKyAgICBzZWxmLT5yZWFkbGluZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcmVhZGxpbmUpOwogICAgIGlmIChzZWxmLT5yZWFkbGluZSA9PSBOVUxMIHx8IHNlbGYtPnJlYWQgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMTU0Myw3ICsxNTUwLDEwIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHNhdmVfaW50KHNlbGYsIHZhbCk7CisjaWYgU0laRU9GX0xPTkcgPiA0CisgICAgICAgIGlmICh2YWwgPD0gMHg3ZmZmZmZmZkwgJiYgdmFsID49IC0weDgwMDAwMDAwTCkKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIHNhdmVfaW50KHNlbGYsIHZhbCk7CiAKICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gMikgewogICAgICAgICAvKiBMaW5lYXItdGltZSBwaWNrbGluZy4gKi8KQEAgLTE1OTgsNyArMTYwOCw3IEBACiAgICAgICAgICAqIGJpdHMuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoc2lnbiA8IDAgJiYKLSAgICAgICAgICAgIG5ieXRlcyA+IDEgJiYgCisgICAgICAgICAgICBuYnl0ZXMgPiAxICYmCiAgICAgICAgICAgICBwZGF0YVtuYnl0ZXMgLSAxXSA9PSAweGZmICYmCiAgICAgICAgICAgICAocGRhdGFbbmJ5dGVzIC0gMl0gJiAweDgwKSAhPSAwKSB7CiAgICAgICAgICAgICBuYnl0ZXMtLTsKQEAgLTE2NjQsNyArMTY3NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCBwZGF0YSwgOSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgfSAKKyAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgICAgICBjaGFyICpidWYgPSBOVUxMOwpAQCAtMTc5OCw5MCArMTgwOCw2NSBAQAogLyogQSBjb3B5IG9mIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKCkgdGhhdCBhbHNvIHRyYW5zbGF0ZXMKICAgIGJhY2tzbGFzaCBhbmQgbmV3bGluZSBjaGFyYWN0ZXJzIHRvIFx1WFhYWCBlc2NhcGVzLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXJhd191bmljb2RlX2VzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCityYXdfdW5pY29kZV9lc2NhcGUoUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqcmVwciwgKnJlc3VsdDsKICAgICBjaGFyICpwOwotICAgIGNoYXIgKnE7CisgICAgUHlfc3NpemVfdCBpLCBzaXplLCBleHBhbmRzaXplOworICAgIHZvaWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgotICAgIAorICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvYmopOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQorICAgICAgICBleHBhbmRzaXplID0gMTA7CisgICAgZWxzZQorICAgICAgICBleHBhbmRzaXplID0gNjsKKwogICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAKICAgICByZXByID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIHAgPSBxID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgIHAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7CisgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAxNV07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotI2Vsc2UKLSAgICAgICAgICAgIC8qIE1hcCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICAgICAgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REMwMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyOwotICAgICAgICAgICAgICAgIFB5X1VDUzQgdWNzOwotCi0gICAgICAgICAgICAgICAgY2gyID0gKnMrKzsKLSAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgaWYgKGNoMiA+PSAweERDMDAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxNikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoOiBpc29sYXRlZCBzdXJyb2dhdGVzIGFyZSBjb3BpZWQgYXMtaXMgKi8KLSAgICAgICAgICAgICAgICBzLS07Ci0gICAgICAgICAgICAgICAgc2l6ZSsrOwotICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMjU2IHx8IGNoID09ICdcXCcgfHwgY2ggPT0gJ1xuJykgeworICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9CiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gcTsKKyAgICBzaXplID0gcCAtIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKIAotICBkb25lOgorZG9uZToKICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKSwgc2l6ZSk7CiAgICAgUHlfREVDUkVGKHJlcHIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xODk2LDkgKzE4ODEsNyBAQAogICAgIGlmIChzZWxmLT5iaW4pIHsKICAgICAgICAgY2hhciBwZGF0YVs1XTsKIAotICAgICAgICBlbmNvZGVkID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgZW5jb2RlZCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqLCAidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTkyNCw4ICsxOTA3LDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciB1bmljb2RlX29wID0gVU5JQ09ERTsKIAotICAgICAgICBlbmNvZGVkID0gcmF3X3VuaWNvZGVfZXNjYXBlKFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICBlbmNvZGVkID0gcmF3X3VuaWNvZGVfZXNjYXBlKG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yNTQ0LDcgKzI1MjYsOSBAQAogICAgICAgICAgICAgc3RhdHVzID0gYmF0Y2hfZGljdF9leGFjdChzZWxmLCBvYmopOwogICAgICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiaXRlbXMiLCAiKCkiKTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKworICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfaXRlbXMsICIoKSIpOwogICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTI4MjgsNiArMjgxMiwzMCBAQAogfQogCiBzdGF0aWMgaW50CitzYXZlX2VsbGlwc2lzKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFbGxpcHNpcyIpOworICAgIGludCByZXM7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gc2F2ZV9nbG9iYWwoc2VsZiwgUHlfRWxsaXBzaXMsIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAorc2F2ZV9ub3RpbXBsZW1lbnRlZChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQoreworICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiTm90SW1wbGVtZW50ZWQiKTsKKyAgICBpbnQgcmVzOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IHNhdmVfZ2xvYmFsKHNlbGYsIFB5X05vdEltcGxlbWVudGVkLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQKIHNhdmVfcGVycyhQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZnVuYykKIHsKICAgICBQeU9iamVjdCAqcGlkID0gTlVMTDsKQEAgLTI4ODEsNiArMjg4OSwyOCBAQAogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xhc3MoUHlPYmplY3QgKm9iaikKK3sKKyAgICBQeU9iamVjdCAqY2xzOworICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX2NsYXNzOworCisgICAgaWYgKHN0cl9jbGFzcyA9PSBOVUxMKSB7CisgICAgICAgIHN0cl9jbGFzcyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKKyAgICAgICAgaWYgKHN0cl9jbGFzcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHIob2JqLCBzdHJfY2xhc3MpOworICAgIGlmIChjbHMgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOworICAgICAgICAgICAgUHlfSU5DUkVGKGNscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNsczsKK30KKwogLyogV2UncmUgc2F2aW5nIG9iaiwgYW5kIGFyZ3MgaXMgdGhlIDItdGhydS01IHR1cGxlIHJldHVybmVkIGJ5IHRoZQogICogYXBwcm9wcmlhdGUgX19yZWR1Y2VfXyBtZXRob2QgZm9yIG9iai4KICAqLwpAQCAtMjk0NiwxNyArMjk3NiwxOCBAQAogICAgIC8qIFByb3RvY29sIDIgc3BlY2lhbCBjYXNlOiBpZiBjYWxsYWJsZSdzIG5hbWUgaXMgX19uZXdvYmpfXywgdXNlCiAgICAgICAgTkVXT0JKLiAqLwogICAgIGlmICh1c2VfbmV3b2JqKSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbmV3b2JqX3N0ciA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lX3N0cjsKKyAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpuZXdvYmpfc3RyID0gTlVMTCwgKm5hbWVfc3RyID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKm5hbWU7CiAKICAgICAgICAgaWYgKG5ld29ial9zdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV3b2JqX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25ld29ial9fIik7Ci0gICAgICAgICAgICBpZiAobmV3b2JqX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKKyAgICAgICAgICAgIGlmIChuZXdvYmpfc3RyID09IE5VTEwgfHwgbmFtZV9zdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBuYW1lX3N0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2FsbGFibGUsICJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZV9zdHIgPT0gTlVMTCkgeworICAgICAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0cihjYWxsYWJsZSwgbmFtZV9zdHIpOworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTI5NjQsOSArMjk5NSw5IEBACiAgICAgICAgICAgICB1c2VfbmV3b2JqID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZV9zdHIpICYmIAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKG5hbWVfc3RyLCBuZXdvYmpfc3RyKSA9PSAwOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVfc3RyKTsKKyAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZShuYW1lLCBuZXdvYmpfc3RyKSA9PSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICh1c2VfbmV3b2JqKSB7CkBAIC0yOTgyLDIwICszMDEzLDE0IEBACiAgICAgICAgIH0KIAogICAgICAgICBjbHMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3R1cCwgMCk7Ci0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyhjbHMsICJfX25ld19fIikpIHsKKyAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2soY2xzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFBpY2tsaW5nRXJyb3IsICJhcmdzWzBdIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25ld29ial9fIGFyZ3MgaGFzIG5vIF9fbmV3X18iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uZXdvYmpfXyBhcmdzIGlzIG5vdCBhIHR5cGUiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvYmogIT0gTlVMTCkgewotICAgICAgICAgICAgb2JqX2NsYXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2NsYXNzX18iKTsKLSAgICAgICAgICAgIGlmIChvYmpfY2xhc3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9ial9jbGFzcyA9IGdldF9jbGFzcyhvYmopOwogICAgICAgICAgICAgcCA9IG9ial9jbGFzcyAhPSBjbHM7ICAgIC8qIHRydWUgaWZmIGEgcHJvYmxlbSAqLwogICAgICAgICAgICAgUHlfREVDUkVGKG9ial9jbGFzcyk7CiAgICAgICAgICAgICBpZiAocCkgewpAQCAtMzA2OSw3ICszMDk0LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHN0YXRlKSB7Ci0gICAgICAgIGlmIChzYXZlKHNlbGYsIHN0YXRlLCAwKSA8IDAgfHwgCisgICAgICAgIGlmIChzYXZlKHNlbGYsIHN0YXRlLCAwKSA8IDAgfHwKICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZidWlsZF9vcCwgMSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMTMsNiArMzEzOCwxNCBAQAogICAgICAgICBzdGF0dXMgPSBzYXZlX25vbmUoc2VsZiwgb2JqKTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KKyAgICBlbHNlIGlmIChvYmogPT0gUHlfRWxsaXBzaXMpIHsKKyAgICAgICAgc3RhdHVzID0gc2F2ZV9lbGxpcHNpcyhzZWxmLCBvYmopOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIGVsc2UgaWYgKG9iaiA9PSBQeV9Ob3RJbXBsZW1lbnRlZCkgeworICAgICAgICBzdGF0dXMgPSBzYXZlX25vdGltcGxlbWVudGVkKHNlbGYsIG9iaik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAgICAgZWxzZSBpZiAob2JqID09IFB5X0ZhbHNlIHx8IG9iaiA9PSBQeV9UcnVlKSB7CiAgICAgICAgIHN0YXR1cyA9IHNhdmVfYm9vbChzZWxmLCBvYmopOwogICAgICAgICBnb3RvIGRvbmU7CkBAIC0zMTc3LDE3ICszMjEwLDI0IEBACiAgICAgLyogWFhYOiBUaGlzIHBhcnQgbmVlZHMgc29tZSB1bml0IHRlc3RzLiAqLwogCiAgICAgLyogR2V0IGEgcmVkdWN0aW9uIGNhbGxhYmxlLCBhbmQgY2FsbCBpdC4gIFRoaXMgbWF5IGNvbWUgZnJvbQotICAgICAqIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUsIHRoZSBvYmplY3QncyBfX3JlZHVjZV9leF9fIG1ldGhvZCwKLSAgICAgKiBvciB0aGUgb2JqZWN0J3MgX19yZWR1Y2VfXyBtZXRob2QuCisgICAgICogc2VsZi5kaXNwYXRjaF90YWJsZSwgY29weXJlZy5kaXNwYXRjaF90YWJsZSwgdGhlIG9iamVjdCdzCisgICAgICogX19yZWR1Y2VfZXhfXyBtZXRob2QsIG9yIHRoZSBvYmplY3QncyBfX3JlZHVjZV9fIG1ldGhvZC4KICAgICAgKi8KLSAgICByZWR1Y2VfZnVuYyA9IFB5RGljdF9HZXRJdGVtKGRpc3BhdGNoX3RhYmxlLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICBpZiAoc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPT0gTlVMTCkgeworICAgICAgICByZWR1Y2VfZnVuYyA9IFB5RGljdF9HZXRJdGVtKGRpc3BhdGNoX3RhYmxlLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICAgICAgLyogUHlEaWN0X0dldEl0ZW0oKSB1bmxpa2UgUHlPYmplY3RfR2V0SXRlbSgpIGFuZAorICAgICAgICAgICBQeU9iamVjdF9HZXRBdHRyKCkgcmV0dXJucyBhIGJvcnJvd2VkIHJlZiAqLworICAgICAgICBQeV9YSU5DUkVGKHJlZHVjZV9mdW5jKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZWR1Y2VfZnVuYyA9IFB5T2JqZWN0X0dldEl0ZW0oc2VsZi0+ZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgICAgICBpZiAocmVkdWNlX2Z1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAocmVkdWNlX2Z1bmMgIT0gTlVMTCkgewotICAgICAgICAvKiBIZXJlLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSByZWR1Y2VfZnVuYyBvYmplY3QgcmV0dXJuZWQgYnkKLSAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0gbmVlZHMgdG8gYmUgaW5jcmVhc2VkIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb25lCi0gICAgICAgICAgIHJldHVybmVkIGJ5IFB5T2JqZWN0X0dldEF0dHIuIFRoaXMgaXMgYWxsb3cgdXMgdG8gYmxpbmRseSBERUNSRUYKLSAgICAgICAgICAgcmVkdWNlX2Z1bmMgYXQgdGhlIGVuZCBvZiB0aGUgc2F2ZSgpIHJvdXRpbmUuCi0gICAgICAgICovCi0gICAgICAgIFB5X0lOQ1JFRihyZWR1Y2VfZnVuYyk7CiAgICAgICAgIFB5X0lOQ1JFRihvYmopOwogICAgICAgICByZWR1Y2VfdmFsdWUgPSBfUGlja2xlcl9GYXN0Q2FsbChzZWxmLCByZWR1Y2VfZnVuYywgb2JqKTsKICAgICB9CkBAIC0zMzIzLDcgKzMzNjMsNyBAQAogICAgICAgIERldmVsb3BlcnMgb2Z0ZW4gZm9yZ2V0IHRvIGNhbGwgX19pbml0X18oKSBpbiB0aGVpciBzdWJjbGFzc2VzLCB3aGljaAogICAgICAgIHdvdWxkIHRyaWdnZXIgYSBzZWdmYXVsdCB3aXRob3V0IHRoaXMgY2hlY2suICovCiAgICAgaWYgKHNlbGYtPndyaXRlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9Gb3JtYXQoUGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJQaWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzYwLDYgKzM0MDAsNyBAQAogICAgIFB5X1hERUNSRUYoc2VsZi0+b3V0cHV0X2J1ZmZlcik7CiAgICAgUHlfWERFQ1JFRihzZWxmLT53cml0ZSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5wZXJzX2Z1bmMpOworICAgIFB5X1hERUNSRUYoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+YXJnKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPmZhc3RfbWVtbyk7CiAKQEAgLTMzNzMsNiArMzQxNCw3IEBACiB7CiAgICAgUHlfVklTSVQoc2VsZi0+d3JpdGUpOwogICAgIFB5X1ZJU0lUKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfVklTSVQoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X1ZJU0lUKHNlbGYtPmFyZyk7CiAgICAgUHlfVklTSVQoc2VsZi0+ZmFzdF9tZW1vKTsKICAgICByZXR1cm4gMDsKQEAgLTMzODQsNiArMzQyNiw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+b3V0cHV0X2J1ZmZlcik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+d3JpdGUpOwogICAgIFB5X0NMRUFSKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X0NMRUFSKHNlbGYtPmFyZyk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZmFzdF9tZW1vKTsKIApAQCAtMzQyNyw2ICszNDcwLDggQEAKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBQeU9iamVjdCAqcHJvdG9fb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZml4X2ltcG9ydHMgPSBQeV9UcnVlOworICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfaWQpOworICAgIF9QeV9JREVOVElGSUVSKGRpc3BhdGNoX3RhYmxlKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POlBpY2tsZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmZpbGUsICZwcm90b19vYmosICZmaXhfaW1wb3J0cykpCkBAIC0zNDYyLDEyICszNTA3LDE5IEBACiAgICAgc2VsZi0+ZmFzdF9uZXN0aW5nID0gMDsKICAgICBzZWxmLT5mYXN0X21lbW8gPSBOVUxMOwogICAgIHNlbGYtPnBlcnNfZnVuYyA9IE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgInBlcnNpc3RlbnRfaWQiKSkgewotICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnRfaWQiKTsKKyAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9wZXJzaXN0ZW50X2lkKSkgeworICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcGVyc2lzdGVudF9pZCk7CiAgICAgICAgIGlmIChzZWxmLT5wZXJzX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPSBOVUxMOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2Rpc3BhdGNoX3RhYmxlKSkgeworICAgICAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Rpc3BhdGNoX3RhYmxlKTsKKyAgICAgICAgaWYgKHNlbGYtPmRpc3BhdGNoX3RhYmxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzQ5LDYgKzM4MDEsNyBAQAogc3RhdGljIFB5TWVtYmVyRGVmIFBpY2tsZXJfbWVtYmVyc1tdID0gewogICAgIHsiYmluIiwgVF9JTlQsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGJpbil9LAogICAgIHsiZmFzdCIsIFRfSU5ULCBvZmZzZXRvZihQaWNrbGVyT2JqZWN0LCBmYXN0KX0sCisgICAgeyJkaXNwYXRjaF90YWJsZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihQaWNrbGVyT2JqZWN0LCBkaXNwYXRjaF90YWJsZSl9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzgwMyw3ICszODU2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KIH07CiAKLS8qIFRlbXBvcmFyeSBoZWxwZXIgZm9yIGNhbGxpbmcgc2VsZi5maW5kX2NsYXNzKCkuIAorLyogVGVtcG9yYXJ5IGhlbHBlciBmb3IgY2FsbGluZyBzZWxmLmZpbmRfY2xhc3MoKS4KIAogICAgWFhYOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGFibGUgdG8gYXZvaWQgUHl0aG9uIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGJ5CiAgICB1c2luZyBkaXJlY3RseSB0aGUgQyB2ZXJzaW9uIG9mIGZpbmRfY2xhc3MoKSwgd2hlbiBmaW5kX2NsYXNzKCkgaXMgbm90CkBAIC0zODEzLDggKzM4NjYsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaW5kX2NsYXNzKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1vZHVsZV9uYW1lLCBQeU9iamVjdCAqZ2xvYmFsX25hbWUpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZpbmRfY2xhc3MiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIoZmluZF9jbGFzcyk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9maW5kX2NsYXNzLCAiT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC0zODU2LDcgKzM5MTEsNyBAQAogICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgLyogWFhYOiBTaG91bGQgdGhlIGJhc2UgYXJndW1lbnQgb2Ygc3RydG9sKCkgYmUgZXhwbGljaXRseSBzZXQgdG8gMTA/IAorICAgIC8qIFhYWDogU2hvdWxkIHRoZSBiYXNlIGFyZ3VtZW50IG9mIHN0cnRvbCgpIGJlIGV4cGxpY2l0bHkgc2V0IHRvIDEwPwogICAgICAgIFhYWChhdmFzc2Fsb3R0aSk6IFNob3VsZCB0aGlzIHVzZXMgUHlPU19zdHJ0b2woKT8gKi8KICAgICB4ID0gc3RydG9sKHMsICZlbmRwdHIsIDApOwogCkBAIC00MjIxLDcgKzQyNzYsNyBAQAogCiAgICAgeCA9IGNhbGNfYmluaW50KHMsIDQpOwogICAgIGlmICh4IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFVucGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJCSU5TVFJJTkcgcGlja2xlIGhhcyBuZWdhdGl2ZSBieXRlIGNvdW50Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NDE4LDE2ICs0NDczLDE5IEBACiBpbnN0YW50aWF0ZShQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOwogICAgIC8qIENhbGxlciBtdXN0IGFzc3VyZSBhcmdzIGFyZSBhIHR1cGxlLiAgTm9ybWFsbHksIGFyZ3MgY29tZSBmcm9tCiAgICAgICAgUGRhdGFfcG9wdHVwbGUgd2hpY2ggcGFja3Mgb2JqZWN0cyBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrCiAgICAgICAgaW50byBhIG5ld2x5IGNyZWF0ZWQgdHVwbGUuICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGlmIChQeV9TSVpFKGFyZ3MpID4gMCB8fCAhUHlUeXBlX0NoZWNrKGNscykgfHwKLSAgICAgICAgUHlPYmplY3RfSGFzQXR0clN0cmluZyhjbHMsICJfX2dldGluaXRhcmdzX18iKSkgeworICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKGNscywgJlB5SWRfX19nZXRpbml0YXJnc19fKSkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgYXJncyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNscywgIl9fbmV3X18iLCAiTyIsIGNscyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoY2xzLCAmUHlJZF9fX25ld19fLCAiTyIsIGNscyk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00OTY4LDggKzUwMjYsOSBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmFwcGVuZF9mdW5jOworICAgICAgICBfUHlfSURFTlRJRklFUihhcHBlbmQpOwogCi0gICAgICAgIGFwcGVuZF9mdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhsaXN0LCAiYXBwZW5kIik7CisgICAgICAgIGFwcGVuZF9mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChsaXN0LCAmUHlJZF9hcHBlbmQpOwogICAgICAgICBpZiAoYXBwZW5kX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZm9yIChpID0geDsgaSA8IGxlbjsgaSsrKSB7CkBAIC01MDE1LDcgKzUwNzQsNyBAQAogICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKGxlbiAtIHgpICUgMiAhPSAwKSB7IAorICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsKICAgICAgICAgLyogQ3VycnVwdCBvciBob3N0aWxlIHBpY2tsZSAtLSB3ZSBuZXZlciB3cml0ZSBvbmUgbGlrZSB0aGlzLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAib2RkIG51bWJlciBvZiBpdGVtcyBmb3IgU0VUSVRFTVMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTA1Niw2ICs1MTE1LDcgQEAKICAgICBQeU9iamVjdCAqc3RhdGUsICppbnN0LCAqc2xvdHN0YXRlOwogICAgIFB5T2JqZWN0ICpzZXRzdGF0ZTsKICAgICBpbnQgc3RhdHVzID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldHN0YXRlX18pOwogCiAgICAgLyogU3RhY2sgaXMgLi4uIGluc3RhbmNlLCBzdGF0ZS4gIFdlIHdhbnQgdG8gbGVhdmUgaW5zdGFuY2UgYXQKICAgICAgKiB0aGUgc3RhY2sgdG9wLCBwb3NzaWJseSBtdXRhdGVkIHZpYSBpbnN0YW5jZS5fX3NldHN0YXRlX18oc3RhdGUpLgpAQCAtNTA2OSw3ICs1MTI5LDcgQEAKIAogICAgIGluc3QgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCi0gICAgc2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGluc3QsICJfX3NldHN0YXRlX18iKTsKKyAgICBzZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19zZXRzdGF0ZV9fKTsKICAgICBpZiAoc2V0c3RhdGUgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNTExMiwxMiArNTE3MiwxMyBAQAogICAgICAgICBQeU9iamVjdCAqZGljdDsKICAgICAgICAgUHlPYmplY3QgKmRfa2V5LCAqZF92YWx1ZTsKICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soc3RhdGUpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAic3RhdGUgaXMgbm90IGEgZGljdGlvbmFyeSIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnN0LCAiX19kaWN0X18iKTsKKyAgICAgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNTM3Miw3ICs1NDMzLDcgQEAKICAgICAgICBub3QgY2FsbCBVbnBpY2tsZXIuX19pbml0X18oKS4gSGVyZSwgd2Ugc2ltcGx5IGVuc3VyZSB0aGF0IHNlbGYtPnJlYWQKICAgICAgICBpcyBub3QgTlVMTC4gKi8KICAgICBpZiAoc2VsZi0+cmVhZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChVbnBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9Gb3JtYXQoVW5waWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIlVucGlja2xlci5fX2luaXRfXygpIHdhcyBub3QgY2FsbGVkIGJ5ICVzLl9faW5pdF9fKCkiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTQ3NCw3ICs1NTM1LDcgQEAKICAgICAgICAgZ2xvYmFsID0gUHlPYmplY3RfR2V0QXR0cihtb2R1bGUsIGdsb2JhbF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKG1vZHVsZSk7CiAgICAgfQotICAgIGVsc2UgeyAKKyAgICBlbHNlIHsKICAgICAgICAgZ2xvYmFsID0gUHlPYmplY3RfR2V0QXR0cihtb2R1bGUsIGdsb2JhbF9uYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKQEAgLTU1ODIsNiArNTY0Myw3IEBACiAgICAgUHlPYmplY3QgKmZpeF9pbXBvcnRzID0gUHlfVHJ1ZTsKICAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihwZXJzaXN0ZW50X2xvYWQpOwogCiAgICAgLyogWFhYOiBUaGF0IGlzIGFuIGhvcnJpYmxlIGVycm9yIG1lc3NhZ2UuIEJ1dCwgSSBkb24ndCBrbm93IGhvdyB0byBkbwogICAgICAgIGJldHRlci4uLiAqLwpAQCAtNTYxNiw5ICs1Njc4LDkgQEAKICAgICBpZiAoc2VsZi0+Zml4X2ltcG9ydHMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsICJwZXJzaXN0ZW50X2xvYWQiKSkgewotICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnRfbG9hZCIpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3BlcnNpc3RlbnRfbG9hZCkpIHsKKyAgICAgICAgc2VsZi0+cGVyc19mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3BlcnNpc3RlbnRfbG9hZCk7CiAgICAgICAgIGlmIChzZWxmLT5wZXJzX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC01NjUxLDcgKzU3MTMsNyBAQAogICogaW50ZW50aW9uYWwsIGFzIHRoZXNlIHNob3VsZCBiZSB0cmVhdGVkIGFzIGJsYWNrLWJveCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogICoKICAqIFdlIGRvLCBob3dldmVyLCBoYXZlIHRvIGltcGxlbWVudCBwaWNrbGluZy91bnBpY2tsaW5nIHN1cHBvcnQgYmVjYXVzZSBvZgotICogcmVhbC13b3JsZCBjb2RlIGxpa2UgY3ZzMnN2bi4gCisgKiByZWFsLXdvcmxkIGNvZGUgbGlrZSBjdnMyc3ZuLgogICovCiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggMTljYTMxZi4uYjdiMTIwYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTQ3LDcgKzQ3LDkgQEAKIF9lbmFibGVfZ2MoUHlPYmplY3QgKmdjX21vZHVsZSkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZ2NfbW9kdWxlLCAiZW5hYmxlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoZW5hYmxlKTsKKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9lbmFibGUsIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC03OCw3ICs4MCw3IEBACiAgKiB0aGF0IHByb3Blcmx5IHN1cHBvcnRzIC9kZXYvZmQuCiAgKi8KIHN0YXRpYyBpbnQKLV9pc19mZGVzY2ZzX21vdW50ZWRfb25fZGV2X2ZkKCkKK19pc19mZGVzY2ZzX21vdW50ZWRfb25fZGV2X2ZkKHZvaWQpCiB7CiAgICAgc3RydWN0IHN0YXQgZGV2X3N0YXQ7CiAgICAgc3RydWN0IHN0YXQgZGV2X2ZkX3N0YXQ7CkBAIC01MDYsNyArNTA4LDcgQEAKIHN1YnByb2Nlc3NfZm9ya19leGVjKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZ2NfbW9kdWxlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZXhlY3V0YWJsZV9saXN0LCAqcHlfY2xvc2VfZmRzLCAqcHlfZmRzX3RvX2tlZXA7CisgICAgUHlPYmplY3QgKmV4ZWN1dGFibGVfbGlzdCwgKnB5X2Zkc190b19rZWVwOwogICAgIFB5T2JqZWN0ICplbnZfbGlzdCwgKnByZWV4ZWNfZm47CiAgICAgUHlPYmplY3QgKnByb2Nlc3NfYXJncywgKmNvbnZlcnRlZF9hcmdzID0gTlVMTCwgKmZhc3RfYXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnByZWV4ZWNfZm5fYXJnc190dXBsZSA9IE5VTEw7CkBAIC01MjEsMTcgKzUyMywxNCBAQAogICAgIFB5X3NzaXplX3QgYXJnX251bTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSgKLSAgICAgICAgICAgIGFyZ3MsICJPT09PT09paWlpaWlpaWlpTzpmb3JrX2V4ZWMiLAotICAgICAgICAgICAgJnByb2Nlc3NfYXJncywgJmV4ZWN1dGFibGVfbGlzdCwgJnB5X2Nsb3NlX2ZkcywgJnB5X2Zkc190b19rZWVwLAorICAgICAgICAgICAgYXJncywgIk9PcE9PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCisgICAgICAgICAgICAmcHJvY2Vzc19hcmdzLCAmZXhlY3V0YWJsZV9saXN0LCAmY2xvc2VfZmRzLCAmcHlfZmRzX3RvX2tlZXAsCiAgICAgICAgICAgICAmY3dkX29iaiwgJmVudl9saXN0LAogICAgICAgICAgICAgJnAyY3JlYWQsICZwMmN3cml0ZSwgJmMycHJlYWQsICZjMnB3cml0ZSwKICAgICAgICAgICAgICZlcnJyZWFkLCAmZXJyd3JpdGUsICZlcnJwaXBlX3JlYWQsICZlcnJwaXBlX3dyaXRlLAogICAgICAgICAgICAgJnJlc3RvcmVfc2lnbmFscywgJmNhbGxfc2V0c2lkLCAmcHJlZXhlY19mbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgY2xvc2VfZmRzID0gUHlPYmplY3RfSXNUcnVlKHB5X2Nsb3NlX2Zkcyk7Ci0gICAgaWYgKGNsb3NlX2ZkcyA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjbG9zZV9mZHMgJiYgZXJycGlwZV93cml0ZSA8IDMpIHsgIC8qIHByZWNvbmRpdGlvbiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVycnBpcGVfd3JpdGUgbXVzdCBiZSA+PSAzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTQ4LDEwICs1NDcsMTMgQEAKICAgICAvKiBXZSBuZWVkIHRvIGNhbGwgZ2MuZGlzYWJsZSgpIHdoZW4gd2UnbGwgYmUgY2FsbGluZyBwcmVleGVjX2ZuICovCiAgICAgaWYgKHByZWV4ZWNfZm4gIT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICBfUHlfSURFTlRJRklFUihpc2VuYWJsZWQpOworICAgICAgICBfUHlfSURFTlRJRklFUihkaXNhYmxlKTsKKyAgICAgICAgCiAgICAgICAgIGdjX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZ2MiKTsKICAgICAgICAgaWYgKGdjX21vZHVsZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZ2NfbW9kdWxlLCAiaXNlbmFibGVkIiwgTlVMTCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9pc2VuYWJsZWQsIE5VTEwpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NjIsNyArNTY0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJkaXNhYmxlIiwgTlVMTCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9kaXNhYmxlLCBOVUxMKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZ2NfbW9kdWxlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCBiYzliMDRhLi42NTQwYWI5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgUHlPYmplY3QgKm1hc2tsb3dlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnRoaXJ0eXR3byA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm4gPSBOVUxMOwotICAgIHVuc2lnbmVkIGxvbmcgKmtleSA9IE5VTEw7CisgICAgdW5zaWduZWQgbG9uZyAqbmV3X2tleSwgKmtleSA9IE5VTEw7CiAgICAgdW5zaWduZWQgbG9uZyBrZXltYXg7ICAgICAgICAgICAgICAgLyogIyBvZiBhbGxvY2F0ZWQgc2xvdHMgaW4ga2V5ICovCiAgICAgdW5zaWduZWQgbG9uZyBrZXl1c2VkOyAgICAgICAgICAgICAgLyogIyBvZiB1c2VkIHNsb3RzIGluIGtleSAqLwogICAgIGludCBlcnI7CkBAIC0yMjgsMTYgKzIyOCwxNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICAvKiBJZiB0aGUgYXJnIGlzIGFuIGludCBvciBsb25nLCB1c2UgaXRzIGFic29sdXRlIHZhbHVlOyBlbHNlIHVzZQotICAgICAqIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBpdHMgaGFzaCBjb2RlLgorICAgIC8qIFRoaXMgYWxnb3JpdGhtIHJlbGllcyBvbiB0aGUgbnVtYmVyIGJlaW5nIHVuc2lnbmVkLgorICAgICAqIFNvOiBpZiB0aGUgYXJnIGlzIGEgUHlMb25nLCB1c2UgaXRzIGFic29sdXRlIHZhbHVlLgorICAgICAqIE90aGVyd2lzZSB1c2UgaXRzIGhhc2ggdmFsdWUsIGNhc3QgdG8gdW5zaWduZWQuCiAgICAgICovCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKQogICAgICAgICBuID0gUHlOdW1iZXJfQWJzb2x1dGUoYXJnKTsKICAgICBlbHNlIHsKLSAgICAgICAgbG9uZyBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOworICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goYXJnKTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICBnb3RvIERvbmU7Ci0gICAgICAgIG4gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZyloYXNoKTsKKyAgICAgICAgbiA9IFB5TG9uZ19Gcm9tU2l6ZV90KChzaXplX3QpaGFzaCk7CiAgICAgfQogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTI4MywxNCArMjg0LDE2IEBACiAgICAgICAgIG4gPSBuZXduOwogICAgICAgICBpZiAoa2V5dXNlZCA+PSBrZXltYXgpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmlnZ2VyID0ga2V5bWF4IDw8IDE7Ci0gICAgICAgICAgICBpZiAoKGJpZ2dlciA+PiAxKSAhPSBrZXltYXgpIHsKKyAgICAgICAgICAgIGlmICgoYmlnZ2VyID4+IDEpICE9IGtleW1heCB8fAorICAgICAgICAgICAgICAgIGJpZ2dlciA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKCprZXkpKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX1JlYWxsb2Moa2V5LAorICAgICAgICAgICAgbmV3X2tleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fUmVhbGxvYyhrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWdnZXIgKiBzaXplb2YoKmtleSkpOwotICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKG5ld19rZXkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgICAgICBrZXkgPSBuZXdfa2V5OwogICAgICAgICAgICAga2V5bWF4ID0gYmlnZ2VyOwogICAgICAgICB9CiAgICAgICAgIGFzc2VydChrZXl1c2VkIDwga2V5bWF4KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKaW5kZXggNzM1YTI0Mi4uMzY5MzM2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKQEAgLTIxNyw4ICsyMTcsNiBAQAogICAgIHB5c3FsaXRlX05vZGUqIHB0cjsKICAgICBQeU9iamVjdCogcHJldmtleTsKICAgICBQeU9iamVjdCogbmV4dGtleTsKLSAgICBQeU9iamVjdCogZm10X2FyZ3M7Ci0gICAgUHlPYmplY3QqIHRlbXBsYXRlOwogICAgIFB5T2JqZWN0KiBkaXNwbGF5X3N0cjsKIAogICAgIHB0ciA9IHNlbGYtPmZpcnN0OwpAQCAtMjI5LDM2ICsyMjcsMjEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByZXZrZXkgPSBQeV9Ob25lOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihwcmV2a2V5KTsKIAogICAgICAgICBpZiAocHRyLT5uZXh0KSB7CiAgICAgICAgICAgICBuZXh0a2V5ID0gcHRyLT5uZXh0LT5rZXk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBuZXh0a2V5ID0gUHlfTm9uZTsKICAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobmV4dGtleSk7CiAKLSAgICAgICAgZm10X2FyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPT08iLCBwcmV2a2V5LCBwdHItPmtleSwgbmV4dGtleSk7Ci0gICAgICAgIGlmICghZm10X2FyZ3MpIHsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzIDwtICVzIC0+JXNcbiIpOwotICAgICAgICBpZiAoIXRlbXBsYXRlKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZm10X2FyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZGlzcGxheV9zdHIgPSBQeVVuaWNvZGVfRm9ybWF0KHRlbXBsYXRlLCBmbXRfYXJncyk7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wbGF0ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihmbXRfYXJncyk7CisgICAgICAgIGRpc3BsYXlfc3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTIDwtICVTIC0+ICVTXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZrZXksIHB0ci0+a2V5LCBuZXh0a2V5KTsKICAgICAgICAgaWYgKCFkaXNwbGF5X3N0cikgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgUHlPYmplY3RfUHJpbnQoZGlzcGxheV9zdHIsIHN0ZG91dCwgUHlfUFJJTlRfUkFXKTsKICAgICAgICAgUHlfREVDUkVGKGRpc3BsYXlfc3RyKTsKIAotICAgICAgICBQeV9ERUNSRUYocHJldmtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXh0a2V5KTsKLQogICAgICAgICBwdHIgPSBwdHItPm5leHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwppbmRleCA5ZDRjNzJmLi5iYzRjZTUwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKQEAgLTY3MSw3ICs2NzEsNyBAQAogewogICAgIFB5T2JqZWN0KiBmdW5jdGlvbl9yZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0KiogYWdncmVnYXRlX2luc3RhbmNlOwotICAgIFB5T2JqZWN0KiBhZ2dyZWdhdGVfY2xhc3M7CisgICAgX1B5X0lERU5USUZJRVIoZmluYWxpemUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeUdJTFN0YXRlX1NUQVRFIHRocmVhZHN0YXRlOwpAQCAtNjc5LDggKzY3OSw2IEBACiAgICAgdGhyZWFkc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCiAKLSAgICBhZ2dyZWdhdGVfY2xhc3MgPSAoUHlPYmplY3QqKXNxbGl0ZTNfdXNlcl9kYXRhKGNvbnRleHQpOwotCiAgICAgYWdncmVnYXRlX2luc3RhbmNlID0gKFB5T2JqZWN0Kiopc3FsaXRlM19hZ2dyZWdhdGVfY29udGV4dChjb250ZXh0LCBzaXplb2YoUHlPYmplY3QqKSk7CiAgICAgaWYgKCEqYWdncmVnYXRlX2luc3RhbmNlKSB7CiAgICAgICAgIC8qIHRoaXMgYnJhbmNoIGlzIGV4ZWN1dGVkIGlmIHRoZXJlIHdhcyBhbiBleGNlcHRpb24gaW4gdGhlIGFnZ3JlZ2F0ZSdzCkBAIC02ODksNyArNjg3LDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBmdW5jdGlvbl9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKCphZ2dyZWdhdGVfaW5zdGFuY2UsICJmaW5hbGl6ZSIsICIiKTsKKyAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCAiIik7CiAgICAgaWYgKCFmdW5jdGlvbl9yZXN1bHQpIHsKICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewogICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKQEAgLTkwNSw2ICs5MDMsMzggQEAKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyB2b2lkIF90cmFjZV9jYWxsYmFjayh2b2lkKiB1c2VyX2FyZywgY29uc3QgY2hhciogc3RhdGVtZW50X3N0cmluZykKK3sKKyAgICBQeU9iamVjdCAqcHlfc3RhdGVtZW50ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9TVEFURSBnaWxzdGF0ZTsKKworICAgIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKKyNlbmRpZgorICAgIHB5X3N0YXRlbWVudCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHN0YXRlbWVudF9zdHJpbmcsCisgICAgICAgICAgICBzdHJsZW4oc3RhdGVtZW50X3N0cmluZyksICJyZXBsYWNlIik7CisgICAgaWYgKHB5X3N0YXRlbWVudCkgeworICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCopdXNlcl9hcmcsIHB5X3N0YXRlbWVudCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihweV9zdGF0ZW1lbnQpOworICAgIH0KKworICAgIGlmIChyZXQpIHsKKyAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgeworICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxzdGF0ZSk7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9hdXRob3JpemVyKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewogICAgIFB5T2JqZWN0KiBhdXRob3JpemVyX2NiOwpAQCAtOTY0LDYgKzk5NCwzNCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCitzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3RyYWNlX2NhbGxiYWNrKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQoreworICAgIFB5T2JqZWN0KiB0cmFjZV9jYWxsYmFjazsKKworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsgInRyYWNlX2NhbGxiYWNrIiwgTlVMTCB9OworCisgICAgaWYgKCFweXNxbGl0ZV9jaGVja190aHJlYWQoc2VsZikgfHwgIXB5c3FsaXRlX2NoZWNrX2Nvbm5lY3Rpb24oc2VsZikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzZXRfdHJhY2VfY2FsbGJhY2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ0cmFjZV9jYWxsYmFjaykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHRyYWNlX2NhbGxiYWNrID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogTm9uZSBjbGVhcnMgdGhlIHRyYWNlIGNhbGxiYWNrIHByZXZpb3VzbHkgc2V0ICovCisgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIDAsICh2b2lkKikwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIHRyYWNlX2NhbGxiYWNrLCBQeV9Ob25lKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBzcWxpdGUzX3RyYWNlKHNlbGYtPmRiLCBfdHJhY2VfY2FsbGJhY2ssIHRyYWNlX2NhbGxiYWNrKTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKICNpZmRlZiBIQVZFX0xPQURfRVhURU5TSU9OCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2VuYWJsZV9sb2FkX2V4dGVuc2lvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKQEAgLTExNjksOCArMTIyNyw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTExOTgsOCArMTI1Nyw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEyMjcsOCArMTI4Nyw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzNzUsMTAgKzE0MzYsMTIgQEAKICAgICBQeU9iamVjdCogdXBwZXJjYXNlX25hbWUgPSAwOwogICAgIFB5T2JqZWN0KiBuYW1lOwogICAgIFB5T2JqZWN0KiByZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSogY2hrOwogICAgIFB5X3NzaXplX3QgaSwgbGVuOworICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKICAgICBjaGFyICp1cHBlcmNhc2VfbmFtZV9zdHI7CiAgICAgaW50IHJjOworICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX3RocmVhZChzZWxmKSB8fCAhcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC0xMzg4LDE3ICsxNDUxLDIxIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICB1cHBlcmNhc2VfbmFtZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobmFtZSwgInVwcGVyIiwgIiIpOworICAgIHVwcGVyY2FzZV9uYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChuYW1lLCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghdXBwZXJjYXNlX25hbWUpIHsKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh1cHBlcmNhc2VfbmFtZSk7Ci0gICAgY2hrID0gUHlVbmljb2RlX0FTX1VOSUNPREUodXBwZXJjYXNlX25hbWUpOwotICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrLCBjaGsrKykgewotICAgICAgICBpZiAoKCpjaGsgPj0gJzAnICYmICpjaGsgPD0gJzknKQotICAgICAgICAgfHwgKCpjaGsgPj0gJ0EnICYmICpjaGsgPD0gJ1onKQotICAgICAgICAgfHwgKCpjaGsgPT0gJ18nKSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVwcGVyY2FzZV9uYW1lKSkKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVwcGVyY2FzZV9uYW1lKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodXBwZXJjYXNlX25hbWUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1cHBlcmNhc2VfbmFtZSk7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoKGNoID49ICcwJyAmJiBjaCA8PSAnOScpCisgICAgICAgICB8fCAoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykKKyAgICAgICAgIHx8IChjaCA9PSAnXycpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE1MTcsNiArMTU4NCw4IEBACiAgICAgI2VuZGlmCiAgICAgeyJzZXRfcHJvZ3Jlc3NfaGFuZGxlciIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9wcm9ncmVzc19oYW5kbGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgICAgUHlEb2NfU1RSKCJTZXRzIHByb2dyZXNzIGhhbmRsZXIgY2FsbGJhY2suIE5vbi1zdGFuZGFyZC4iKX0sCisgICAgeyJzZXRfdHJhY2VfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfdHJhY2VfY2FsbGJhY2ssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICBQeURvY19TVFIoIlNldHMgYSB0cmFjZSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggU1FMIHN0YXRlbWVudCAocGFzc2VkIGFzIHVuaWNvZGUpLiBOb24tc3RhbmRhcmQuIil9LAogICAgIHsiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX2V4ZWN1dGUsIE1FVEhfVkFSQVJHUywKICAgICAgICAgUHlEb2NfU1RSKCJFeGVjdXRlcyBhIFNRTCBzdGF0ZW1lbnQuIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJleGVjdXRlbWFueSIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX2V4ZWN1dGVtYW55LCBNRVRIX1ZBUkFSR1MsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCBjOGUyZjdjLi4wYzk3MzRjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTgzLDggKzgzLDcgQEAKIAogICAgIC8qIERldGVybWluZXMgaG93IGJ5dGVzdHJpbmdzIGZyb20gU1FMaXRlIGFyZSBjb252ZXJ0ZWQgdG8gUHl0aG9uIG9iamVjdHM6CiAgICAgICogLSBQeVVuaWNvZGVfVHlwZTogICAgICAgIFB5dGhvbiBVbmljb2RlIG9iamVjdHMgYXJlIGNvbnN0cnVjdGVkIGZyb20gVVRGLTggYnl0ZXN0cmluZ3MKLSAgICAgKiAtIE9wdGltaXplZFVuaWNvZGU6ICAgICAgTGlrZSBiZWZvcmUsIGJ1dCBmb3IgQVNDSUkgZGF0YSwgb25seSBQeVN0cmluZ3MgYXJlIGNyZWF0ZWQuCi0gICAgICogLSBQeUJ5dGVzX1R5cGU6ICAgICAgICAgUHlTdHJpbmdzIGFyZSBjcmVhdGVkIGFzLWlzLgorICAgICAqIC0gUHlCeXRlc19UeXBlOiAgICAgICAgICBUaGUgYnl0ZXN0cmluZ3MgYXJlIHJldHVybmVkIGFzLWlzLgogICAgICAqIC0gQW55IGN1c3RvbSBjYWxsYWJsZTogICBBbnkgb2JqZWN0IHJldHVybmVkIGZyb20gdGhlIGNhbGxhYmxlIGNhbGxlZCB3aXRoIHRoZSBieXRlc3RyaW5nCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHNpbmdsZSBwYXJhbWV0ZXIuCiAgICAgICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggODZmYmQ0ZS4uOGE1NmQzYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtMTI2LDExICsxMjYsOSBAQAogCiBzdGF0aWMgdm9pZCBweXNxbGl0ZV9jdXJzb3JfZGVhbGxvYyhweXNxbGl0ZV9DdXJzb3IqIHNlbGYpCiB7Ci0gICAgaW50IHJjOwotCiAgICAgLyogUmVzZXQgdGhlIHN0YXRlbWVudCBpZiB0aGUgdXNlciBoYXMgbm90IGNsb3NlZCB0aGUgY3Vyc29yICovCiAgICAgaWYgKHNlbGYtPnN0YXRlbWVudCkgewotICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgfQogCkBAIC0xNTIsOCArMTUwLDkgQEAKIHsKICAgICBQeU9iamVjdCogdXBjYXNlX2tleTsKICAgICBQeU9iamVjdCogcmV0dmFsOworICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKIAotICAgIHVwY2FzZV9rZXkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGtleSwgInVwcGVyIiwgIiIpOworICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsICIiKTsKICAgICBpZiAoIXVwY2FzZV9rZXkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjY4LDExICsyNjcsNiBAQAogICAgIH0KIH0KIAotUHlPYmplY3QqIHB5c3FsaXRlX3VuaWNvZGVfZnJvbV9zdHJpbmcoY29uc3QgY2hhciogdmFsX3N0ciwgUHlfc3NpemVfdCBzaXplLCBpbnQgb3B0aW1pemUpCi17Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSh2YWxfc3RyLCBzaXplKTsKLX0KLQogLyoKICAqIFJldHVybnMgYSByb3cgZnJvbSB0aGUgY3VycmVudGx5IGFjdGl2ZSBTUUxpdGUgc3RhdGVtZW50CiAgKgpAQCAtMzU2LDEyICszNTAsOCBAQAogICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x0eXBlID09IFNRTElURV9URVhUKSB7CiAgICAgICAgICAgICAgICAgdmFsX3N0ciA9IChjb25zdCBjaGFyKilzcWxpdGUzX2NvbHVtbl90ZXh0KHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgIG5ieXRlcyA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwotICAgICAgICAgICAgICAgIGlmICgoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ID09IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKQotICAgICAgICAgICAgICAgICAgICB8fCAoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ID09IHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcHlzcWxpdGVfdW5pY29kZV9mcm9tX3N0cmluZyh2YWxfc3RyLCBuYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSA/IDEgOiAwKTsKLQorICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbmFtZSkgewpAQCAtNDYwLDcgKzQ1MCw2IEBACiAgICAgaW50IHN0YXRlbWVudF90eXBlOwogICAgIFB5T2JqZWN0KiBkZXNjcmlwdG9yOwogICAgIFB5T2JqZWN0KiBzZWNvbmRfYXJndW1lbnQgPSBOVUxMOwotICAgIGludCBhbGxvd184Yml0X2NoYXJzOwogCiAgICAgaWYgKCFjaGVja19jdXJzb3Ioc2VsZikpIHsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQ2OSwxMCArNDU4LDYgQEAKICAgICBzZWxmLT5sb2NrZWQgPSAxOwogICAgIHNlbGYtPnJlc2V0ID0gMDsKIAotICAgIC8qIE1ha2Ugc2hvb3RpbmcgeW91cnNlbGYgaW4gdGhlIGZvb3Qgd2l0aCBub3QgdXRmLTggZGVjb2RhYmxlIDgtYml0LXN0cmluZ3MgaGFyZGVyICovCi0gICAgYWxsb3dfOGJpdF9jaGFycyA9ICgoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ICE9IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKSAmJgotICAgICAgICAoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ICE9IHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpKTsKLQogICAgIFB5X1hERUNSRUYoc2VsZi0+bmV4dF9yb3cpOwogICAgIHNlbGYtPm5leHRfcm93ID0gTlVMTDsKIApAQCAtNTM2LDcgKzUyMSw3IEBACiAKICAgICBpZiAoc2VsZi0+c3RhdGVtZW50ICE9IE5VTEwpIHsKICAgICAgICAgLyogVGhlcmUgaXMgYW4gYWN0aXZlIHN0YXRlbWVudCAqLwotICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICB9CiAKICAgICBvcGVyYXRpb25fY3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKG9wZXJhdGlvbiwgJm9wZXJhdGlvbl9sZW4pOwpAQCAtNjMxLDcgKzYxNiw3IEBACiAKICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X21hcmtfZGlydHkoc2VsZi0+c3RhdGVtZW50KTsKIAotICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXJzKHNlbGYtPnN0YXRlbWVudCwgcGFyYW1ldGVycywgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMoc2VsZi0+c3RhdGVtZW50LCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTc0MSw3ICs3MjYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbWljcm9wcm90b2NvbHMuYyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCmluZGV4IGM3MzBhZmEuLjIyNjFiODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCkBAIC05NSw3ICs5NSw5IEBACiAKICAgICAvKiB0cnkgdG8gaGF2ZSB0aGUgcHJvdG9jb2wgYWRhcHQgdGhpcyBvYmplY3QqLwogICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHByb3RvLCAiX19hZGFwdF9fIikpIHsKLSAgICAgICAgUHlPYmplY3QgKmFkYXB0ZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHByb3RvLCAiX19hZGFwdF9fIiwgIk8iLCBvYmopOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2FkYXB0X18pOworICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJvdG8sICZQeUlkX19fYWRhcHRfXywgIk8iLCBvYmopOworCiAgICAgICAgIGlmIChhZGFwdGVkKSB7CiAgICAgICAgICAgICBpZiAoYWRhcHRlZCAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZWQ7CkBAIC0xMTAsNyArMTEyLDkgQEAKIAogICAgIC8qIGFuZCBmaW5hbGx5IHRyeSB0byBoYXZlIHRoZSBvYmplY3QgYWRhcHQgaXRzZWxmICovCiAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiX19jb25mb3JtX18iKSkgewotICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiX19jb25mb3JtX18iLCJPIiwgcHJvdG8pOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2NvbmZvcm1fXyk7CisgICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX19fY29uZm9ybV9fLCJPIiwgcHJvdG8pOworCiAgICAgICAgIGlmIChhZGFwdGVkKSB7CiAgICAgICAgICAgICBpZiAoYWRhcHRlZCAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZWQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKaW5kZXggY2JjM2I4ZS4uYmVhNmQ2YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwpAQCAtMzcsNyArMzcsNyBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfRXJyb3IsICpweXNxbGl0ZV9XYXJuaW5nLCAqcHlzcWxpdGVfSW50ZXJmYWNlRXJyb3IsICpweXNxbGl0ZV9EYXRhYmFzZUVycm9yLAogICAgICpweXNxbGl0ZV9JbnRlcm5hbEVycm9yLCAqcHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgKnB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsCi0gICAgKnB5c3FsaXRlX0ludGVncml0eUVycm9yLCAqcHlzcWxpdGVfRGF0YUVycm9yLCAqcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3IsICpweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlOworICAgICpweXNxbGl0ZV9JbnRlZ3JpdHlFcnJvciwgKnB5c3FsaXRlX0RhdGFFcnJvciwgKnB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yOwogCiBQeU9iamVjdCogY29udmVydGVyczsKIGludCBfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3M7CkBAIC0xNzksMTMgKzE3OSwxNCBAQAogICAgIFB5T2JqZWN0KiBuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCogY2FsbGFibGU7CiAgICAgUHlPYmplY3QqIHJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyIsICZvcmlnX25hbWUsICZjYWxsYWJsZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogY29udmVydCB0aGUgbmFtZSB0byB1cHBlciBjYXNlICovCi0gICAgbmFtZSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob3JpZ19uYW1lLCAidXBwZXIiLCAiIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghbmFtZSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTQwNiwxMyArNDA3LDEzIEBACiAgICAgfQogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJOb3RTdXBwb3J0ZWRFcnJvciIsIHB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yKTsKIAotICAgIC8qIFdlIGp1c3QgbmVlZCAic29tZXRoaW5nIiB1bmlxdWUgZm9yIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUuIEl0IGRvZXMgbm90IHJlYWxseQotICAgICAqIG5lZWQgdG8gYmUgYSBzdHJpbmcgc3ViY2xhc3MuIEp1c3QgYW55dGhpbmcgdGhhdCBjYW4gYWN0IGFzIGEgc3BlY2lhbAotICAgICAqIG1hcmtlciBmb3IgdXMuIFNvIEkgcHVsbGVkIFB5Q2VsbF9UeXBlIG91dCBvZiBteSBtYWdpYyBoYXQuCi0gICAgICovCi0gICAgUHlfSU5DUkVGKChQeU9iamVjdCopJlB5Q2VsbF9UeXBlKTsKLSAgICBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlID0gKFB5T2JqZWN0KikmUHlDZWxsX1R5cGU7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIk9wdGltaXplZFVuaWNvZGUiLCBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlKTsKKyAgICAvKiBJbiBQeXRob24gMi54LCBzZXR0aW5nIENvbm5lY3Rpb24udGV4dF9mYWN0b3J5IHRvCisgICAgICAgT3B0aW1pemVkVW5pY29kZSBjYXVzZWQgVW5pY29kZSBvYmplY3RzIHRvIGJlIHJldHVybmVkIGZvcgorICAgICAgIG5vbi1BU0NJSSBkYXRhIGFuZCBieXRlc3RyaW5ncyB0byBiZSByZXR1cm5lZCBmb3IgQVNDSUkgZGF0YS4KKyAgICAgICBOb3cgT3B0aW1pemVkVW5pY29kZSBpcyBhbiBhbGlhcyBmb3Igc3RyLCBzbyBpdCBoYXMgbm8KKyAgICAgICBlZmZlY3QuICovCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiT3B0aW1pemVkVW5pY29kZSIsIChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKIAogICAgIC8qIFNldCBpbnRlZ2VyIGNvbnN0YW50cyAqLwogICAgIGZvciAoaSA9IDA7IF9pbnRfY29uc3RhbnRzW2ldLmNvbnN0YW50X25hbWUgIT0gMDsgaSsrKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmggYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKaW5kZXggMGVkZGI2Ny4uYjUxNzI0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaApAQCAtMzgsOCArMzgsNiBAQAogZXh0ZXJuIFB5T2JqZWN0KiBweXNxbGl0ZV9EYXRhRXJyb3I7CiBleHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yOwogCi1leHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGU7Ci0KIC8qIHRoZSBmdW5jdGlvbnMgdGltZS50aW1lKCkgYW5kIHRpbWUuc2xlZXAoKSAqLwogZXh0ZXJuIFB5T2JqZWN0KiB0aW1lX3RpbWU7CiBleHRlcm4gUHlPYmplY3QqIHRpbWVfc2xlZXA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKaW5kZXggM2Q0NDA5NC4uYjUwNjU4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwpAQCAtMTczLDEwICsxNzMsOSBAQAogCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX3Jvd19yaWNoY29tcGFyZShweXNxbGl0ZV9Sb3cgKnNlbGYsIFB5T2JqZWN0ICpfb3RoZXIsIGludCBvcGlkKQogewotICAgIGlmIChvcGlkICE9IFB5X0VRICYmIG9waWQgIT0gUHlfTkUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAob3BpZCAhPSBQeV9FUSAmJiBvcGlkICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKF9vdGhlciksICZweXNxbGl0ZV9Sb3dUeXBlKSkgewogICAgICAgICBweXNxbGl0ZV9Sb3cgKm90aGVyID0gKHB5c3FsaXRlX1JvdyAqKV9vdGhlcjsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHNlbGYtPmRlc2NyaXB0aW9uLCBvdGhlci0+ZGVzY3JpcHRpb24sIG9waWQpOwpAQCAtMTg2LDggKzE4NSw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUoc2VsZi0+ZGF0YSwgb3RoZXItPmRhdGEsIG9waWQpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogUHlNYXBwaW5nTWV0aG9kcyBweXNxbGl0ZV9yb3dfYXNfbWFwcGluZyA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwppbmRleCA4MGJjYzM4Li45ODg0ODYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlciwgaW50IGFsbG93XzhiaXRfY2hhcnMpCitpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlcikKIHsKICAgICBpbnQgcmMgPSBTUUxJVEVfT0s7CiAgICAgUFlfTE9OR19MT05HIGxvbmdsb25ndmFsOwpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgfQogfQogCi12b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycywgaW50IGFsbG93XzhiaXRfY2hhcnMpCit2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycykKIHsKICAgICBQeU9iamVjdCogY3VycmVudF9wYXJhbTsKICAgICBQeU9iamVjdCogYWRhcHRlZDsKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSArIDEsIGFkYXB0ZWQsIGFsbG93XzhiaXRfY2hhcnMpOworICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSArIDEsIGFkYXB0ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGFkYXB0ZWQpOwogCiAgICAgICAgICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CkBAIC0yNjUsNyArMjY1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHNlbGYsIGksIGFkYXB0ZWQsIGFsbG93XzhiaXRfY2hhcnMpOworICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSwgYWRhcHRlZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYWRhcHRlZCk7CiAKICAgICAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKQEAgLTM2OSwxMSArMzY5LDkgQEAKIAogdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfZGVhbGxvYyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpCiB7Ci0gICAgaW50IHJjOwotCiAgICAgaWYgKHNlbGYtPnN0KSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmMgPSBzcWxpdGUzX2ZpbmFsaXplKHNlbGYtPnN0KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzZWxmLT5zdCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmggYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKaW5kZXggZTVkYTQyZS4uNDY4MTQ0MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaApAQCAtNDYsOCArNDYsOCBAQAogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9jcmVhdGUocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBweXNxbGl0ZV9Db25uZWN0aW9uKiBjb25uZWN0aW9uLCBQeU9iamVjdCogc3FsKTsKIHZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2RlYWxsb2MocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmKTsKIAotaW50IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIGludCBwb3MsIFB5T2JqZWN0KiBwYXJhbWV0ZXIsIGludCBhbGxvd184Yml0X2NoYXJzKTsKLXZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzLCBpbnQgYWxsb3dfOGJpdF9jaGFycyk7CitpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlcik7Cit2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycyk7CiAKIGludCBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVjb21waWxlKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgUHlPYmplY3QqIHBhcmFtZXRlcnMpOwogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9maW5hbGl6ZShweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCA4OGJiZjZhLi5hYTU2NTI5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtMTYzLDIxICsxNjMsMTcgQEAKIAogLyogdW5pY29kZS1zcGVjaWZpYyBjaGFyYWN0ZXIgcHJlZGljYXRlcyAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0KLSNkZWZpbmUgU1JFX1VOSV9JU19ESUdJVChjaCkgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19TUEFDRShjaCkgUHlfVU5JQ09ERV9JU1NQQUNFKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfTElORUJSRUFLKGNoKSBQeV9VTklDT0RFX0lTTElORUJSRUFLKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfQUxOVU0oY2gpIFB5X1VOSUNPREVfSVNBTE5VTSgoUHlfVU5JQ09ERSkoY2gpKQotI2RlZmluZSBTUkVfVU5JX0lTX1dPUkQoY2gpIChTUkVfVU5JX0lTX0FMTlVNKChjaCkpIHx8IChjaCkgPT0gJ18nKQorI2RlZmluZSBTUkVfVU5JX0lTX0RJR0lUKGNoKSBQeV9VTklDT0RFX0lTREVDSU1BTChjaCkKKyNkZWZpbmUgU1JFX1VOSV9JU19TUEFDRShjaCkgUHlfVU5JQ09ERV9JU1NQQUNFKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX0xJTkVCUkVBSyhjaCkgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkKKyNkZWZpbmUgU1JFX1VOSV9JU19BTE5VTShjaCkgUHlfVU5JQ09ERV9JU0FMTlVNKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX1dPUkQoY2gpIChTUkVfVU5JX0lTX0FMTlVNKGNoKSB8fCAoY2gpID09ICdfJykKIAogc3RhdGljIHVuc2lnbmVkIGludCBzcmVfbG93ZXJfdW5pY29kZSh1bnNpZ25lZCBpbnQgY2gpCiB7Ci0gICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIFB5X1VOSUNPREVfVE9MT1dFUigoUHlfVU5JQ09ERSkoY2gpKTsKKyAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgUHlfVU5JQ09ERV9UT0xPV0VSKGNoKTsKIH0KIAotI2VuZGlmCi0KIExPQ0FMKGludCkKIHNyZV9jYXRlZ29yeShTUkVfQ09ERSBjYXRlZ29yeSwgdW5zaWduZWQgaW50IGNoKQogewpAQCAtMjA1LDcgKzIwMSw2IEBACiAgICAgY2FzZSBTUkVfQ0FURUdPUllfTE9DX05PVF9XT1JEOgogICAgICAgICByZXR1cm4gIVNSRV9MT0NfSVNfV09SRChjaCk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfRElHSVQ6CiAgICAgICAgIHJldHVybiBTUkVfVU5JX0lTX0RJR0lUKGNoKTsKICAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0RJR0lUOgpAQCAtMjIyLDI0ICsyMTcsNiBAQAogICAgICAgICByZXR1cm4gU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpOwogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLOgogICAgICAgICByZXR1cm4gIVNSRV9VTklfSVNfTElORUJSRUFLKGNoKTsKLSNlbHNlCi0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX0RJR0lUOgotICAgICAgICByZXR1cm4gU1JFX0lTX0RJR0lUKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0RJR0lUOgotICAgICAgICByZXR1cm4gIVNSRV9JU19ESUdJVChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX1NQQUNFOgotICAgICAgICByZXR1cm4gU1JFX0lTX1NQQUNFKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX1NQQUNFOgotICAgICAgICByZXR1cm4gIVNSRV9JU19TUEFDRShjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX1dPUkQ6Ci0gICAgICAgIHJldHVybiBTUkVfTE9DX0lTX1dPUkQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfV09SRDoKLSAgICAgICAgcmV0dXJuICFTUkVfTE9DX0lTX1dPUkQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9MSU5FQlJFQUs6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfTElORUJSRUFLKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSzoKLSAgICAgICAgcmV0dXJuICFTUkVfSVNfTElORUJSRUFLKGNoKTsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTI4MCw2ICsyNTcsNyBAQAogLyogZ2VuZXJhdGUgOC1iaXQgdmVyc2lvbiAqLwogCiAjZGVmaW5lIFNSRV9DSEFSIHVuc2lnbmVkIGNoYXIKKyNkZWZpbmUgU1JFX0NIQVJHRVQoc3RhdGUsIGJ1ZiwgaW5kZXgpICgodW5zaWduZWQgY2hhciopYnVmKVtpbmRleF0KICNkZWZpbmUgU1JFX0FUIHNyZV9hdAogI2RlZmluZSBTUkVfQ09VTlQgc3JlX2NvdW50CiAjZGVmaW5lIFNSRV9DSEFSU0VUIHNyZV9jaGFyc2V0CkBAIC0yODcsMTUgKzI2NSwxMSBAQAogI2RlZmluZSBTUkVfTUFUQ0ggc3JlX21hdGNoCiAjZGVmaW5lIFNSRV9NQVRDSF9DT05URVhUIHNyZV9tYXRjaF9jb250ZXh0CiAjZGVmaW5lIFNSRV9TRUFSQ0ggc3JlX3NlYXJjaAotI2RlZmluZSBTUkVfTElURVJBTF9URU1QTEFURSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZQotCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAKICNkZWZpbmUgU1JFX1JFQ1VSU0lWRQogI2luY2x1ZGUgIl9zcmUuYyIKICN1bmRlZiBTUkVfUkVDVVJTSVZFCiAKLSN1bmRlZiBTUkVfTElURVJBTF9URU1QTEFURQogI3VuZGVmIFNSRV9TRUFSQ0gKICN1bmRlZiBTUkVfTUFUQ0gKICN1bmRlZiBTUkVfTUFUQ0hfQ09OVEVYVApAQCAtMzA0LDEwICsyNzgsMTUgQEAKICN1bmRlZiBTUkVfQ09VTlQKICN1bmRlZiBTUkVfQVQKICN1bmRlZiBTUkVfQ0hBUgorI3VuZGVmIFNSRV9DSEFSR0VUCiAKLS8qIGdlbmVyYXRlIDE2LWJpdCB1bmljb2RlIHZlcnNpb24gKi8KKy8qIGdlbmVyYXRlIDgvMTYvMzItYml0IHVuaWNvZGUgdmVyc2lvbiAqLwogCi0jZGVmaW5lIFNSRV9DSEFSIFB5X1VOSUNPREUKKyNkZWZpbmUgU1JFX0NIQVIgdm9pZAorI2RlZmluZSBTUkVfQ0hBUkdFVChzdGF0ZSwgYnVmLCBpbmRleCkgXAorICAgICgoc3RhdGUtPmNoYXJzaXplPT0xKSA/ICgoUHlfVUNTMSopYnVmKVtpbmRleF0gOiBcCisgICAgIChzdGF0ZS0+Y2hhcnNpemU9PTIpID8gKChQeV9VQ1MyKilidWYpW2luZGV4XSA6IFwKKyAgICAgKChQeV9VQ1M0KilidWYpW2luZGV4XSkKICNkZWZpbmUgU1JFX0FUIHNyZV91YXQKICNkZWZpbmUgU1JFX0NPVU5UIHNyZV91Y291bnQKICNkZWZpbmUgU1JFX0NIQVJTRVQgc3JlX3VjaGFyc2V0CkBAIC0zMTUsOCArMjk0LDYgQEAKICNkZWZpbmUgU1JFX01BVENIIHNyZV91bWF0Y2gKICNkZWZpbmUgU1JFX01BVENIX0NPTlRFWFQgc3JlX3VtYXRjaF9jb250ZXh0CiAjZGVmaW5lIFNSRV9TRUFSQ0ggc3JlX3VzZWFyY2gKLSNkZWZpbmUgU1JFX0xJVEVSQUxfVEVNUExBVEUgc3JlX3VsaXRlcmFsX3RlbXBsYXRlCi0jZW5kaWYKIAogI2VuZGlmIC8qIFNSRV9SRUNVUlNJVkUgKi8KIApAQCAtMzI3LDcgKzMwNCw3IEBACiAgICBzZXR0aW5ncyAqLwogCiBMT0NBTChpbnQpCi1TUkVfQVQoU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NIQVIqIHB0ciwgU1JFX0NPREUgYXQpCitTUkVfQVQoU1JFX1NUQVRFKiBzdGF0ZSwgY2hhciogcHRyLCBTUkVfQ09ERSBhdCkKIHsKICAgICAvKiBjaGVjayBpZiBwb2ludGVyIGlzIGF0IGdpdmVuIHBvc2l0aW9uICovCiAKQEAgLTM0MSwxNiArMzE4LDE2IEBACiAKICAgICBjYXNlIFNSRV9BVF9CRUdJTk5JTkdfTElORToKICAgICAgICAgcmV0dXJuICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+YmVnaW5uaW5nIHx8Ci0gICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbLTFdKSk7CisgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORDoKLSAgICAgICAgcmV0dXJuICgoKHZvaWQqKSAocHRyKzEpID09IHN0YXRlLT5lbmQgJiYKLSAgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbMF0pKSB8fAorICAgICAgICByZXR1cm4gKCgodm9pZCopIChwdHIrc3RhdGUtPmNoYXJzaXplKSA9PSBzdGF0ZS0+ZW5kICYmCisgICAgICAgICAgICAgICAgIFNSRV9JU19MSU5FQlJFQUsoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKSB8fAogICAgICAgICAgICAgICAgICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+ZW5kKSk7CiAKICAgICBjYXNlIFNSRV9BVF9FTkRfTElORToKICAgICAgICAgcmV0dXJuICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+ZW5kIHx8Ci0gICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbMF0pKTsKKyAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSk7CiAKICAgICBjYXNlIFNSRV9BVF9FTkRfU1RSSU5HOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQpOwpAQCAtMzU5LDU3ICszMzYsNTUgQEAKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwICE9IHRoYXRwOwogCiAgICAgY2FzZSBTUkVfQVRfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgPT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9MT0NfQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9MT0NfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwID09IHRoYXRwOwogCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgY2FzZSBTUkVfQVRfVU5JX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwICE9IHRoYXRwOwogCiAgICAgY2FzZSBTUkVfQVRfVU5JX05PTl9CT1VOREFSWToKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCA9PSB0aGF0cDsKLSNlbmRpZgogCiAgICAgfQogCkBAIC00NzYsNyArNDUxLDcgQEAKICAgICAgICAgICAgIGNvdW50ID0gKihzZXQrKyk7CiAKICAgICAgICAgICAgIGlmIChzaXplb2YoU1JFX0NPREUpID09IDIpIHsKLSAgICAgICAgICAgICAgICBibG9jayA9ICgodW5zaWduZWQgY2hhciopc2V0KVtjaCA+PiA4XTsKKyAgICAgICAgICAgICAgICBibG9jayA9ICgoY2hhciopc2V0KVtjaCA+PiA4XTsKICAgICAgICAgICAgICAgICBzZXQgKz0gMTI4OwogICAgICAgICAgICAgICAgIGlmIChzZXRbYmxvY2sqMTYgKyAoKGNoICYgMjU1KT4+NCldICYgKDEgPDwgKGNoICYgMTUpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9rOwpAQCAtNDg2LDcgKzQ2MSw3IEBACiAgICAgICAgICAgICAgICAgLyogIShjICYgfk4pID09IChjIDwgTisxKSBmb3IgYW55IHVuc2lnbmVkIGMsIHRoaXMgYXZvaWRzCiAgICAgICAgICAgICAgICAgICogd2FybmluZ3Mgd2hlbiBjJ3MgdHlwZSBzdXBwb3J0cyBvbmx5IG51bWJlcnMgPCBOKzEgKi8KICAgICAgICAgICAgICAgICBpZiAoIShjaCAmIH42NTUzNSkpCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gKCh1bnNpZ25lZCBjaGFyKilzZXQpW2NoID4+IDhdOworICAgICAgICAgICAgICAgICAgICBibG9jayA9ICgoY2hhciopc2V0KVtjaCA+PiA4XTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gLTE7CiAgICAgICAgICAgICAgICAgc2V0ICs9IDY0OwpAQCAtNTEyLDI4ICs0ODcsMjkgQEAKIFNSRV9DT1VOVChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybiwgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKICAgICBTUkVfQ09ERSBjaHI7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IChTUkVfQ0hBUiAqKXN0YXRlLT5wdHI7Ci0gICAgU1JFX0NIQVIqIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgY2hhciogcHRyID0gKGNoYXIgKilzdGF0ZS0+cHRyOworICAgIGNoYXIqIGVuZCA9IChjaGFyICopc3RhdGUtPmVuZDsKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICAvKiBhZGp1c3QgZW5kICovCi0gICAgaWYgKG1heGNvdW50IDwgZW5kIC0gcHRyICYmIG1heGNvdW50ICE9IDY1NTM1KQotICAgICAgICBlbmQgPSBwdHIgKyBtYXhjb3VudDsKKyAgICBpZiAobWF4Y291bnQgPCAoZW5kIC0gcHRyKSAvIHN0YXRlLT5jaGFyc2l6ZSAmJiBtYXhjb3VudCAhPSA2NTUzNSkKKyAgICAgICAgZW5kID0gcHRyICsgbWF4Y291bnQqc3RhdGUtPmNoYXJzaXplOwogCiAgICAgc3dpdGNoIChwYXR0ZXJuWzBdKSB7CiAKICAgICBjYXNlIFNSRV9PUF9JTjoKICAgICAgICAgLyogcmVwZWF0ZWQgc2V0ICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIElOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiBTUkVfQ0hBUlNFVChwYXR0ZXJuICsgMiwgKnB0cikpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJgorICAgICAgICAgICAgICAgU1JFX0NIQVJTRVQocGF0dGVybiArIDIsIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSkKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfQU5ZOgogICAgICAgICAvKiByZXBlYXRlZCBkb3Qgd2lsZGNhcmQuICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIEFOWVxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9JU19MSU5FQlJFQUsoKnB0cikpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0lTX0xJTkVCUkVBSyhTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX0FOWV9BTEw6CkBAIC01NDcsMzggKzUyMywzOCBAQAogICAgICAgICAvKiByZXBlYXRlZCBsaXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIExJVEVSQUwgJWRcbiIsIHBhdHRlcm4sIHB0ciwgY2hyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSAqcHRyID09IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkgPT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgLyogcmVwZWF0ZWQgbGl0ZXJhbCAqLwogICAgICAgICBjaHIgPSBwYXR0ZXJuWzFdOwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBMSVRFUkFMX0lHTk9SRSAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcigqcHRyKSA9PSBjaHIpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgPT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9OT1RfTElURVJBTDoKICAgICAgICAgLyogcmVwZWF0ZWQgbm9uLWxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTk9UX0xJVEVSQUwgJWRcbiIsIHBhdHRlcm4sIHB0ciwgY2hyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSAqcHRyICE9IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkgIT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9OT1RfTElURVJBTF9JR05PUkU6CiAgICAgICAgIC8qIHJlcGVhdGVkIG5vbi1saXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIE5PVF9MSVRFUkFMX0lHTk9SRSAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcigqcHRyKSAhPSBjaHIpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgIT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgogICAgICAgICAvKiByZXBlYXRlZCBzaW5nbGUgY2hhcmFjdGVyIHBhdHRlcm4gKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgU1VCUEFUVEVSTlxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgIHdoaWxlICgoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyIDwgZW5kKSB7CisgICAgICAgIHdoaWxlICgoY2hhciopIHN0YXRlLT5wdHIgPCBlbmQpIHsKICAgICAgICAgICAgIGkgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4pOwogICAgICAgICAgICAgaWYgKGkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBpOwpAQCAtNTg2LDEyICs1NjIsMTIgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCAlZFxuIiwgcGF0dGVybiwgcHRyLAotICAgICAgICAgICAgICAgKFNSRV9DSEFSKikgc3RhdGUtPnB0ciAtIHB0cikpOwotICAgICAgICByZXR1cm4gKFNSRV9DSEFSKikgc3RhdGUtPnB0ciAtIHB0cjsKKyAgICAgICAgICAgICAgICgoY2hhciopc3RhdGUtPnB0ciAtIHB0cikvc3RhdGUtPmNoYXJzaXplKSk7CisgICAgICAgIHJldHVybiAoKGNoYXIqKXN0YXRlLT5wdHIgLSBwdHIpL3N0YXRlLT5jaGFyc2l6ZTsKICAgICB9CiAKLSAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCAlZFxuIiwgcGF0dGVybiwgcHRyLCBwdHIgLSAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyKSk7Ci0gICAgcmV0dXJuIHB0ciAtIChTUkVfQ0hBUiopIHN0YXRlLT5wdHI7CisgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgJWRcbiIsIHBhdHRlcm4sIHB0ciwgKHB0ciAtIChjaGFyKikgc3RhdGUtPnB0cikvc3RhdGUtPmNoYXJzaXplKSk7CisgICAgcmV0dXJuIChwdHIgLSAoY2hhciopIHN0YXRlLT5wdHIpL3N0YXRlLT5jaGFyc2l6ZTsKIH0KIAogI2lmIDAgLyogbm90IHVzZWQgaW4gdGhpcyByZWxlYXNlICovCkBAIC02MDIsMTkgKzU3OCwxOSBAQAogICAgICAgIHJldHVybnMgdGhlIG51bWJlciBvZiBTUkVfQ09ERSBvYmplY3RzIHRvIHNraXAgaWYgc3VjY2Vzc2Z1bCwgMAogICAgICAgIGlmIG5vIG1hdGNoICovCiAKLSAgICBTUkVfQ0hBUiogZW5kID0gc3RhdGUtPmVuZDsKLSAgICBTUkVfQ0hBUiogcHRyID0gc3RhdGUtPnB0cjsKKyAgICBjaGFyKiBlbmQgPSBzdGF0ZS0+ZW5kOworICAgIGNoYXIqIHB0ciA9IHN0YXRlLT5wdHI7CiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgLyogY2hlY2sgbWluaW1hbCBsZW5ndGggKi8KLSAgICBpZiAocGF0dGVyblszXSAmJiAoZW5kIC0gcHRyKSA8IHBhdHRlcm5bM10pCisgICAgaWYgKHBhdHRlcm5bM10gJiYgKGVuZCAtIHB0cikvc3RhdGUtPmNoYXJzaXplIDwgcGF0dGVyblszXSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBjaGVjayBrbm93biBwcmVmaXggKi8KICAgICBpZiAocGF0dGVyblsyXSAmIFNSRV9JTkZPX1BSRUZJWCAmJiBwYXR0ZXJuWzVdID4gMSkgewogICAgICAgICAvKiA8bGVuZ3RoPiA8c2tpcD4gPHByZWZpeCBkYXRhPiA8b3ZlcmxhcCBkYXRhPiAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGF0dGVybls1XTsgaSsrKQotICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgcHRyW2ldICE9IHBhdHRlcm5bNyArIGldKQorICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgaSkgIT0gcGF0dGVybls3ICsgaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBwYXR0ZXJuWzBdICsgMiAqIHBhdHRlcm5bNl07CiAgICAgfQpAQCAtNzgzLDcgKzc1OSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlfc3NpemVfdCBsYXN0X2N0eF9wb3M7CiAgICAgUHlfc3NpemVfdCBqdW1wOwotICAgIFNSRV9DSEFSKiBwdHI7CisgICAgY2hhciogcHRyOwogICAgIFNSRV9DT0RFKiBwYXR0ZXJuOwogICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgUHlfc3NpemVfdCBsYXN0bWFyazsKQEAgLTc5OSw3ICs3NzUsNyBAQAogTE9DQUwoUHlfc3NpemVfdCkKIFNSRV9NQVRDSChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybikKIHsKLSAgICBTUkVfQ0hBUiogZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBlbmQgPSAoY2hhciopc3RhdGUtPmVuZDsKICAgICBQeV9zc2l6ZV90IGFsbG9jX3BvcywgY3R4X3BvcyA9IC0xOwogICAgIFB5X3NzaXplX3QgaSwgcmV0ID0gMDsKICAgICBQeV9zc2l6ZV90IGp1bXA7CkBAIC04MTgsMTQgKzc5NCwxNCBAQAogCiBlbnRyYW5jZToKIAotICAgIGN0eC0+cHRyID0gKFNSRV9DSEFSICopc3RhdGUtPnB0cjsKKyAgICBjdHgtPnB0ciA9IChjaGFyICopc3RhdGUtPnB0cjsKIAogICAgIGlmIChjdHgtPnBhdHRlcm5bMF0gPT0gU1JFX09QX0lORk8pIHsKICAgICAgICAgLyogb3B0aW1pemF0aW9uIGluZm8gYmxvY2sgKi8KICAgICAgICAgLyogPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IC4uLiAqLwotICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKKyAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoZW5kIC0gY3R4LT5wdHIpL3N0YXRlLT5jaGFyc2l6ZSA8IGN0eC0+cGF0dGVyblszXSkgewogICAgICAgICAgICAgVFJBQ0UoKCJyZWplY3QgKGdvdCAlZCBjaGFycywgbmVlZCAlZClcbiIsCi0gICAgICAgICAgICAgICAgICAgKGVuZCAtIGN0eC0+cHRyKSwgY3R4LT5wYXR0ZXJuWzNdKSk7CisgICAgICAgICAgICAgICAgICAgKGVuZCAtIGN0eC0+cHRyKS9zdGF0ZS0+Y2hhcnNpemUsIGN0eC0+cGF0dGVyblszXSkpOwogICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgIH0KICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblsxXSArIDE7CkBAIC04NjUsMTAgKzg0MSwxMCBAQAogICAgICAgICAgICAgLyogPExJVEVSQUw+IDxjb2RlPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8TElURVJBTCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IChTUkVfQ09ERSkgY3R4LT5wdHJbMF0gIT0gY3R4LT5wYXR0ZXJuWzBdKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgIT0gY3R4LT5wYXR0ZXJuWzBdKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfTk9UX0xJVEVSQUw6CkBAIC04NzYsMTAgKzg1MiwxMCBAQAogICAgICAgICAgICAgLyogPE5PVF9MSVRFUkFMPiA8Y29kZT4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfE5PVF9MSVRFUkFMICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsICpjdHgtPnBhdHRlcm4pKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKFNSRV9DT0RFKSBjdHgtPnB0clswXSA9PSBjdHgtPnBhdHRlcm5bMF0pCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSA9PSBjdHgtPnBhdHRlcm5bMF0pCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9TVUNDRVNTOgpAQCAtOTAyLDE5ICs4NzgsMTkgQEAKICAgICAgICAgICAgIC8qIDxDQVRFR09SWT4gPGNvZGU+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxDQVRFR09SWSAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFzcmVfY2F0ZWdvcnkoY3R4LT5wYXR0ZXJuWzBdLCBjdHgtPnB0clswXSkpCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFzcmVfY2F0ZWdvcnkoY3R4LT5wYXR0ZXJuWzBdLCBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX0FOWToKICAgICAgICAgICAgIC8qIG1hdGNoIGFueXRoaW5nIChleGNlcHQgYSBuZXdsaW5lKSAqLwogICAgICAgICAgICAgLyogPEFOWT4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFOWVxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0cikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCBTUkVfSVNfTElORUJSRUFLKGN0eC0+cHRyWzBdKSkKLSAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCBTUkVfSVNfTElORUJSRUFLKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX0FOWV9BTEw6CkBAIC05MjMsNDcgKzg5OSw0NyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8QU5ZX0FMTFxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0cikpOwogICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9JTjoKICAgICAgICAgICAgIC8qIG1hdGNoIHNldCBtZW1iZXIgKG9yIG5vbl9tZW1iZXIpICovCiAgICAgICAgICAgICAvKiA8SU4+IDxza2lwPiA8c2V0PiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8SU5cbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDEsICpjdHgtPnB0cikpCi0gICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CisgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuICsgMSwgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXTsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfExJVEVSQUxfSUdOT1JFICVkXG4iLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIsIGN0eC0+cGF0dGVyblswXSkpOwogICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcigqY3R4LT5wdHIpICE9IHN0YXRlLT5sb3dlcigqY3R4LT5wYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkgIT0gc3RhdGUtPmxvd2VyKCpjdHgtPnBhdHRlcm4pKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfTk9UX0xJVEVSQUxfSUdOT1JFOgogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Tk9UX0xJVEVSQUxfSUdOT1JFICVkXG4iLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIsICpjdHgtPnBhdHRlcm4pKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSA9PSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpID09IHN0YXRlLT5sb3dlcigqY3R4LT5wYXR0ZXJuKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX0lOX0lHTk9SRToKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfElOX0lHTk9SRVxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0cikpOwogICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZAogICAgICAgICAgICAgICAgIHx8ICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4rMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKXN0YXRlLT5sb3dlcigqY3R4LT5wdHIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKXN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4gKz0gY3R4LT5wYXR0ZXJuWzBdOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX0pVTVA6CkBAIC05ODYsMTEgKzk2MiwxMSBAQAogICAgICAgICAgICAgZm9yICg7IGN0eC0+cGF0dGVyblswXTsgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXSkgewogICAgICAgICAgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bMV0gPT0gU1JFX09QX0xJVEVSQUwgJiYKICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKSAqY3R4LT5wdHIgIT0gY3R4LT5wYXR0ZXJuWzJdKSkKKyAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBjdHgtPnBhdHRlcm5bMl0pKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzFdID09IFNSRV9PUF9JTiAmJgogICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgICAgICAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuICsgMywgKFNSRV9DT0RFKSAqY3R4LT5wdHIpKSkKKyAgICAgICAgICAgICAgICAgICAgICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4gKyAzLCAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwogICAgICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9CUkFOQ0gsIGp1bXBfYnJhbmNoLCBjdHgtPnBhdHRlcm4rMSk7CkBAIC0xMDIxLDcgKzk5Nyw3IEBACiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxSRVBFQVRfT05FICVkICVkXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cGF0dGVyblsxXSwgY3R4LT5wYXR0ZXJuWzJdKSk7CiAKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciArIGN0eC0+cGF0dGVyblsxXSA+IGVuZCkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciArIHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+cGF0dGVyblsxXSA+IGVuZCkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsgLyogY2Fubm90IG1hdGNoICovCiAKICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0cjsKQEAgLTEwMzAsNyArMTAwNiw3IEBACiAgICAgICAgICAgICBSRVRVUk5fT05fRVJST1IocmV0KTsKICAgICAgICAgICAgIERBVEFfTE9PS1VQX0FUKFNSRV9NQVRDSF9DT05URVhULCBjdHgsIGN0eF9wb3MpOwogICAgICAgICAgICAgY3R4LT5jb3VudCA9IHJldDsKLSAgICAgICAgICAgIGN0eC0+cHRyICs9IGN0eC0+Y291bnQ7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPmNvdW50OwogCiAgICAgICAgICAgICAvKiB3aGVuIHdlIGFycml2ZSBoZXJlLCBjb3VudCBjb250YWlucyB0aGUgbnVtYmVyIG9mCiAgICAgICAgICAgICAgICBtYXRjaGVzLCBhbmQgY3R4LT5wdHIgcG9pbnRzIHRvIHRoZSB0YWlsIG9mIHRoZSB0YXJnZXQKQEAgLTEwNTQsOCArMTAzMCw5IEBACiAgICAgICAgICAgICAgICAgY3R4LT51LmNociA9IGN0eC0+cGF0dGVybltjdHgtPnBhdHRlcm5bMF0rMV07CiAgICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY3R4LT5jb3VudCA+PSAoUHlfc3NpemVfdCkgY3R4LT5wYXR0ZXJuWzFdICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8ICpjdHgtPnB0ciAhPSBjdHgtPnUuY2hyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHItLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApICE9IGN0eC0+dS5jaHIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciAtPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+Y291bnQgPCAoUHlfc3NpemVfdCkgY3R4LT5wYXR0ZXJuWzFdKQpAQCAtMTA3MCw3ICsxMDQ3LDcgQEAKIAogICAgICAgICAgICAgICAgICAgICBMQVNUTUFSS19SRVNUT1JFKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHItLTsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50LS07CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMDg0LDcgKzEwNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX09OX0VSUk9SKHJldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fU1VDQ0VTUzsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ci0tOworICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciAtPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y291bnQtLTsKICAgICAgICAgICAgICAgICAgICAgTEFTVE1BUktfUkVTVE9SRSgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTExMDQsNyArMTA4MSw3IEBACiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxNSU5fUkVQRUFUX09ORSAlZCAlZFxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0ciwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm5bMV0sIGN0eC0+cGF0dGVyblsyXSkpOwogCi0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7IC8qIGNhbm5vdCBtYXRjaCAqLwogCiAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHI7CkBAIC0xMTIxLDcgKzEwOTgsNyBAQAogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICAvKiBhZHZhbmNlIHBhc3QgbWluaW11bSBtYXRjaGVzIG9mIHJlcGVhdCAqLwogICAgICAgICAgICAgICAgIGN0eC0+Y291bnQgPSByZXQ7Ci0gICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gY3R4LT5jb3VudDsKKyAgICAgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPmNvdW50OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuW2N0eC0+cGF0dGVyblswXV0gPT0gU1JFX09QX1NVQ0NFU1MpIHsKQEAgLTExNDgsNyArMTEyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQocmV0ID09IDEpOwotICAgICAgICAgICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgTEFTVE1BUktfUkVTVE9SRSgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTEzMjAsMTQgKzEyOTcsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoZ3JvdXByZWYgPj0gc3RhdGUtPmxhc3RtYXJrKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSKiBwID0gKFNSRV9DSEFSKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOwotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogZSA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBwID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZl07CisgICAgICAgICAgICAgICAgICAgIGNoYXIqIGUgPSAoY2hhciopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXAgfHwgIWUgfHwgZSA8IHApCiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICpjdHgtPnB0ciAhPSAqcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApICE9IFNSRV9DSEFSR0VUKHN0YXRlLCBwLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHArKzsgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgKz0gc3RhdGUtPmNoYXJzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTM0NCwxNSArMTMyMywxNyBAQAogICAgICAgICAgICAgICAgIGlmIChncm91cHJlZiA+PSBzdGF0ZS0+bGFzdG1hcmspIHsKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVIqIHAgPSAoU1JFX0NIQVIqKSBzdGF0ZS0+bWFya1tncm91cHJlZl07Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSKiBlID0gKFNSRV9DSEFSKikgc3RhdGUtPm1hcmtbZ3JvdXByZWYrMV07CisgICAgICAgICAgICAgICAgICAgIGNoYXIqIHAgPSAoY2hhciopIHN0YXRlLT5tYXJrW2dyb3VwcmVmXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogZSA9IChjaGFyKikgc3RhdGUtPm1hcmtbZ3JvdXByZWYrMV07CiAgICAgICAgICAgICAgICAgICAgIGlmICghcCB8fCAhZSB8fCBlIDwgcCkKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAocCA8IGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSAhPSBzdGF0ZS0+bG93ZXIoKnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgcCwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwotICAgICAgICAgICAgICAgICAgICAgICAgcCsrOyBjdHgtPnB0cisrOworICAgICAgICAgICAgICAgICAgICAgICAgcCArPSBzdGF0ZS0+Y2hhcnNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMzg2LDcgKzEzNjcsNyBAQAogICAgICAgICAgICAgLyogPEFTU0VSVD4gPHNraXA+IDxiYWNrPiA8cGF0dGVybj4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFTU0VSVCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCBjdHgtPnBhdHRlcm5bMV0pKTsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0ciAtIGN0eC0+cGF0dGVyblsxXTsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0ciAtIHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+cGF0dGVyblsxXTsKICAgICAgICAgICAgIGlmIChzdGF0ZS0+cHRyIDwgc3RhdGUtPmJlZ2lubmluZykKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9BU1NFUlQsIGp1bXBfYXNzZXJ0LCBjdHgtPnBhdHRlcm4rMik7CkBAIC0xMzk5LDcgKzEzODAsNyBAQAogICAgICAgICAgICAgLyogPEFTU0VSVF9OT1Q+IDxza2lwPiA8YmFjaz4gPHBhdHRlcm4+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBU1NFUlRfTk9UICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsIGN0eC0+cGF0dGVyblsxXSkpOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gY3R4LT5wYXR0ZXJuWzFdOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdOwogICAgICAgICAgICAgaWYgKHN0YXRlLT5wdHIgPj0gc3RhdGUtPmJlZ2lubmluZykgewogICAgICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9BU1NFUlRfTk9ULCBqdW1wX2Fzc2VydF9ub3QsIGN0eC0+cGF0dGVybisyKTsKICAgICAgICAgICAgICAgICBpZiAocmV0KSB7CkBAIC0xNDgxLDggKzE0NjIsOCBAQAogTE9DQUwoUHlfc3NpemVfdCkKIFNSRV9TRUFSQ0goU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NPREUqIHBhdHRlcm4pCiB7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IChTUkVfQ0hBUiAqKXN0YXRlLT5zdGFydDsKLSAgICBTUkVfQ0hBUiogZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBwdHIgPSAoY2hhciopc3RhdGUtPnN0YXJ0OworICAgIGNoYXIqIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzID0gMDsKICAgICBQeV9zc2l6ZV90IHByZWZpeF9sZW4gPSAwOwogICAgIFB5X3NzaXplX3QgcHJlZml4X3NraXAgPSAwOwpAQCAtMTUwMCw5ICsxNDgxLDkgQEAKICAgICAgICAgaWYgKHBhdHRlcm5bM10gPiAxKSB7CiAgICAgICAgICAgICAvKiBhZGp1c3QgZW5kIHBvaW50IChidXQgbWFrZSBzdXJlIHdlIGxlYXZlIGF0IGxlYXN0IG9uZQogICAgICAgICAgICAgICAgY2hhcmFjdGVyIGluIHRoZXJlLCBzbyBsaXRlcmFsIHNlYXJjaCB3aWxsIHdvcmspICovCi0gICAgICAgICAgICBlbmQgLT0gcGF0dGVyblszXS0xOworICAgICAgICAgICAgZW5kIC09IChwYXR0ZXJuWzNdLTEpICogc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgaWYgKGVuZCA8PSBwdHIpCi0gICAgICAgICAgICAgICAgZW5kID0gcHRyKzE7CisgICAgICAgICAgICAgICAgZW5kID0gcHRyICsgc3RhdGUtPmNoYXJzaXplOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fUFJFRklYKSB7CkBAIC0xNTI4LDEwICsxNTA5LDEwIEBACiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBrbm93biBwcmVmaXguICB1c2UgdGhlIG92ZXJsYXAKICAgICAgICAgICAgdGFibGUgdG8gc2tpcCBmb3J3YXJkIGFzIGZhc3QgYXMgd2UgcG9zc2libHkgY2FuICovCiAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7Ci0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIGVuZCA9IChjaGFyICopc3RhdGUtPmVuZDsKICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewogICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgIGlmICgoU1JFX0NPREUpIHB0clswXSAhPSBwcmVmaXhbaV0pIHsKKyAgICAgICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSAhPSBwcmVmaXhbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTE1NDAsOCArMTUyMSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPT0gcHJlZml4X2xlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogZm91bmQgYSBwb3RlbnRpYWwgbWF0Y2ggKi8KICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBTQ0FOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0ciArIDEgLSBwcmVmaXhfbGVuOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciArIDEgLSBwcmVmaXhfbGVuICsgcHJlZml4X3NraXA7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHIgLSAocHJlZml4X2xlbiAtIDEpICogc3RhdGUtPmNoYXJzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciAtIChwcmVmaXhfbGVuIC0gcHJlZml4X3NraXAgLSAxKSAqIHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybiArIDIqcHJlZml4X3NraXApOwpAQCAtMTU1Myw3ICsxNTM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE1NjMsMTUgKzE1NDQsMTYgQEAKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyLiAgdGhpcyBpcyB1c2VkCiAgICAgICAgICAgIGZvciBzaG9ydCBwcmVmaXhlcywgYW5kIGlmIGZhc3Qgc2VhcmNoIGlzIGRpc2FibGVkICovCiAgICAgICAgIFNSRV9DT0RFIGNociA9IHBhdHRlcm5bMV07Ci0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgcHRyWzBdICE9IGNocikKLSAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSAhPSBjaHIpCisgICAgICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGlmIChwdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOwogICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9ICsrcHRyOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBwdHI7CiAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQogICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCiAgICAgICAgICAgICBzdGF0dXMgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4gKyAyKTsKQEAgLTE1ODAsMTAgKzE1NjIsMTAgQEAKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoY2hhcnNldCkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgY2hhcmFjdGVyIGZyb20gYSBrbm93biBzZXQgKi8KLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9DSEFSU0VUKGNoYXJzZXQsIHB0clswXSkpCi0gICAgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkVfQ0hBUlNFVChjaGFyc2V0LCBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpCisgICAgICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGlmIChwdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIENIQVJTRVRcbiIsIHBhdHRlcm4sIHB0cikpOwpAQCAtMTU5MiwxMyArMTU3NCwxNCBAQAogICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICAvKiBnZW5lcmFsIGNhc2UgKi8KICAgICAgICAgd2hpbGUgKHB0ciA8PSBlbmQpIHsKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSFxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBzdGF0ZS0+cHRyID0gcHRyKys7CisgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBzdGF0ZS0+cHRyID0gcHRyOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybik7CiAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjA3LDE2ICsxNTkwLDYgQEAKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1MT0NBTChpbnQpCi1TUkVfTElURVJBTF9URU1QTEFURShTUkVfQ0hBUiogcHRyLCBQeV9zc2l6ZV90IGxlbikKLXsKLSAgICAvKiBjaGVjayBpZiBnaXZlbiBzdHJpbmcgaXMgYSBsaXRlcmFsIHRlbXBsYXRlIChpLmUuIG5vIGVzY2FwZXMpICovCi0gICAgd2hpbGUgKGxlbi0tID4gMCkKLSAgICAgICAgaWYgKCpwdHIrKyA9PSAnXFwnKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KICNpZiAhZGVmaW5lZChTUkVfUkVDVVJTSVZFKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTYyNCw3ICsxNTk3LDI0IEBACiAKIC8qIHNlZSBzcmUuaCBmb3Igb2JqZWN0IGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqLCBTUkVfU1RBVEUqLCBpbnQpOwotc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiwgUHlPYmplY3QqKTsKK3N0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqIGt3KTsKKworc3RhdGljIGludAorc3JlX2xpdGVyYWxfdGVtcGxhdGUoaW50IGNoYXJzaXplLCBjaGFyKiBwdHIsIFB5X3NzaXplX3QgbGVuKQoreworICAgIC8qIGNoZWNrIGlmIGdpdmVuIHN0cmluZyBpcyBhIGxpdGVyYWwgdGVtcGxhdGUgKGkuZS4gbm8gZXNjYXBlcykgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQgY2hhcnNpemU7CisgICAgfSBzdGF0ZSA9IHsKKyAgICAgICAgY2hhcnNpemUKKyAgICB9OworICAgIHdoaWxlIChsZW4tLSA+IDApIHsKKyAgICAgICAgaWYgKFNSRV9DSEFSR0VUKCgmc3RhdGUpLCBwdHIsIDApID09ICdcXCcpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcHRyICs9IGNoYXJzaXplOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNyZV9jb2Rlc2l6ZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKQEAgLTE2NDEsMTEgKzE2MzEsNyBAQAogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfbG9jYWxlKGNoYXJhY3RlcikpOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX3VuaWNvZGUoY2hhcmFjdGVyKSk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcl9sb2NhbGUoY2hhcmFjdGVyKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcihjaGFyYWN0ZXIpKTsKIH0KIApAQCAtMTY2NCw3ICsxNjUwLDkgQEAKIH0KIAogc3RhdGljIHZvaWQqCi1nZXRzdHJpbmcoUHlPYmplY3QqIHN0cmluZywgUHlfc3NpemVfdCogcF9sZW5ndGgsIGludCogcF9jaGFyc2l6ZSwgUHlfYnVmZmVyICp2aWV3KQorZ2V0c3RyaW5nKFB5T2JqZWN0KiBzdHJpbmcsIFB5X3NzaXplX3QqIHBfbGVuZ3RoLAorICAgICAgICAgIGludCogcF9sb2dpY2FsX2NoYXJzaXplLCBpbnQqIHBfY2hhcnNpemUsCisgICAgICAgICAgUHlfYnVmZmVyICp2aWV3KQogewogICAgIC8qIGdpdmVuIGEgcHl0aG9uIG9iamVjdCwgcmV0dXJuIGEgZGF0YSBwb2ludGVyLCBhIGxlbmd0aCAoaW4KICAgICAgICBjaGFyYWN0ZXJzKSwgYW5kIGEgY2hhcmFjdGVyIHNpemUuICByZXR1cm4gTlVMTCBpZiB0aGUgb2JqZWN0CkBAIC0xNjc4LDEzICsxNjY2LDE2IEBACiAgICAgLyogVW5pY29kZSBvYmplY3RzIGRvIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgQVBJLiBTbywgZ2V0IHRoZSBkYXRhCiAgICAgICAgZGlyZWN0bHkgaW5zdGVhZC4gKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpIHsKLSAgICAgICAgcHRyID0gKHZvaWQgKilQeVVuaWNvZGVfQVNfREFUQShzdHJpbmcpOwotICAgICAgICAqcF9sZW5ndGggPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyaW5nKTsKLSAgICAgICAgKnBfY2hhcnNpemUgPSBzaXplb2YoUHlfVU5JQ09ERSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwdHIgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgICAgICAqcF9sZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOworICAgICAgICAqcF9jaGFyc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgICAgICpwX2xvZ2ljYWxfY2hhcnNpemUgPSA0OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIC8qIGdldCBwb2ludGVyIHRvIHN0cmluZyBidWZmZXIgKi8KKyAgICAvKiBnZXQgcG9pbnRlciB0byBieXRlIHN0cmluZyBidWZmZXIgKi8KICAgICB2aWV3LT5sZW4gPSAtMTsKICAgICBidWZmZXIgPSBQeV9UWVBFKHN0cmluZyktPnRwX2FzX2J1ZmZlcjsKICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5iZl9nZXRidWZmZXIgfHwKQEAgLTE3MDcsMTAgKzE2OTgsNiBAQAogCiAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3RyaW5nKSB8fCBieXRlcyA9PSBzaXplKQogICAgICAgICBjaGFyc2l6ZSA9IDE7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0gICAgZWxzZSBpZiAoYnl0ZXMgPT0gKFB5X3NzaXplX3QpIChzaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKSkKLSAgICAgICAgY2hhcnNpemUgPSBzaXplb2YoUHlfVU5JQ09ERSk7Ci0jZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ1ZmZlciBzaXplIG1pc21hdGNoIik7CiAgICAgICAgIGdvdG8gZXJyOwpAQCAtMTcxOCw2ICsxNzA1LDcgQEAKIAogICAgICpwX2xlbmd0aCA9IHNpemU7CiAgICAgKnBfY2hhcnNpemUgPSBjaGFyc2l6ZTsKKyAgICAqcF9sb2dpY2FsX2NoYXJzaXplID0gY2hhcnNpemU7CiAKICAgICBpZiAocHRyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtMTczOCw3ICsxNzI2LDcgQEAKICAgICAvKiBwcmVwYXJlIHN0YXRlIG9iamVjdCAqLwogCiAgICAgUHlfc3NpemVfdCBsZW5ndGg7Ci0gICAgaW50IGNoYXJzaXplOworICAgIGludCBsb2dpY2FsX2NoYXJzaXplLCBjaGFyc2l6ZTsKICAgICB2b2lkKiBwdHI7CiAKICAgICBtZW1zZXQoc3RhdGUsIDAsIHNpemVvZihTUkVfU1RBVEUpKTsKQEAgLTE3NDcsMTggKzE3MzUsMTggQEAKICAgICBzdGF0ZS0+bGFzdGluZGV4ID0gLTE7CiAKICAgICBzdGF0ZS0+YnVmZmVyLmJ1ZiA9IE5VTEw7Ci0gICAgcHRyID0gZ2V0c3RyaW5nKHN0cmluZywgJmxlbmd0aCwgJmNoYXJzaXplLCAmc3RhdGUtPmJ1ZmZlcik7CisgICAgcHRyID0gZ2V0c3RyaW5nKHN0cmluZywgJmxlbmd0aCwgJmxvZ2ljYWxfY2hhcnNpemUsICZjaGFyc2l6ZSwgJnN0YXRlLT5idWZmZXIpOwogICAgIGlmICghcHRyKQogICAgICAgICBnb3RvIGVycjsKIAotICAgIGlmIChjaGFyc2l6ZSA9PSAxICYmIHBhdHRlcm4tPmNoYXJzaXplID4gMSkgeworICAgIGlmIChsb2dpY2FsX2NoYXJzaXplID09IDEgJiYgcGF0dGVybi0+bG9naWNhbF9jaGFyc2l6ZSA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLQkJCSJjYW4ndCB1c2UgYSBzdHJpbmcgcGF0dGVybiBvbiBhIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9Ci0gICAgaWYgKGNoYXJzaXplID4gMSAmJiBwYXR0ZXJuLT5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKGxvZ2ljYWxfY2hhcnNpemUgPiAxICYmIHBhdHRlcm4tPmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotCQkJImNhbid0IHVzZSBhIGJ5dGVzIHBhdHRlcm4gb24gYSBzdHJpbmctbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgYSBieXRlcyBwYXR0ZXJuIG9uIGEgc3RyaW5nLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIApAQCAtMTc3Myw2ICsxNzYxLDcgQEAKICAgICBlbHNlIGlmIChlbmQgPiBsZW5ndGgpCiAgICAgICAgIGVuZCA9IGxlbmd0aDsKIAorICAgIHN0YXRlLT5sb2dpY2FsX2NoYXJzaXplID0gbG9naWNhbF9jaGFyc2l6ZTsKICAgICBzdGF0ZS0+Y2hhcnNpemUgPSBjaGFyc2l6ZTsKIAogICAgIHN0YXRlLT5iZWdpbm5pbmcgPSBwdHI7CkBAIC0xNzg4LDExICsxNzc3LDcgQEAKICAgICBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpCiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl9sb2NhbGU7CiAgICAgZWxzZSBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKQotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfdW5pY29kZTsKLSNlbHNlCi0gICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl9sb2NhbGU7Ci0jZW5kaWYKICAgICBlbHNlCiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcjsKIApAQCAtMTg5OSwxMiArMTg4NCwxMCBAQAogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8TUFUQ0hcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CiAKLSAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgc3RhdHVzID0gc3JlX21hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdW1hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKQEAgLTE5MzYsMTIgKzE5MTksMTAgQEAKIAogICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKIAotICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBUUkFDRSgoInwlcHwlcHxFTkRcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CkBAIC0yMDgzLDE2ICsyMDY0LDE0IEBACiAKICAgICAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CiAKLSAgICAgICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICAgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICAgICAgfQogCi0JaWYgKFB5RXJyX09jY3VycmVkKCkpCi0JICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBpZiAoc3RhdHVzIDw9IDApIHsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMCkKQEAgLTIxNTQsMTMgKzIxMzMsMTMgQEAKIAogI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDIwMjAwMDAKIHN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MpCitwYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCiB7CiAgICAgUHlPYmplY3QqIHNjYW5uZXI7CiAgICAgUHlPYmplY3QqIHNlYXJjaDsKICAgICBQeU9iamVjdCogaXRlcmF0b3I7CiAKLSAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHBhdHRlcm4sIGFyZ3MpOworICAgIHNjYW5uZXIgPSBwYXR0ZXJuX3NjYW5uZXIocGF0dGVybiwgYXJncywga3cpOwogICAgIGlmICghc2Nhbm5lcikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTIyMTMsMTYgKzIxOTIsMTQgQEAKIAogICAgICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKIAotICAgICAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgICAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgICAgICB9CiAKLQlpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLQkgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGlmIChzdGF0dXMgPD0gMCkgewogICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAwKQpAQCAtMjMwMyw3ICsyMjgwLDcgQEAKICAgICBpbnQgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeV9zc2l6ZV90IGksIGIsIGU7Ci0gICAgaW50IGJpbnQ7CisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemUsIGNoYXJzaXplOwogICAgIGludCBmaWx0ZXJfaXNfY2FsbGFibGU7CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAKQEAgLTIzMTYsMTYgKzIyOTMsMTAgQEAKICAgICAgICAgLyogaWYgbm90IGNhbGxhYmxlLCBjaGVjayBpZiBpdCdzIGEgbGl0ZXJhbCBzdHJpbmcgKi8KICAgICAgICAgaW50IGxpdGVyYWw7CiAgICAgICAgIHZpZXcuYnVmID0gTlVMTDsKLSAgICAgICAgcHRyID0gZ2V0c3RyaW5nKHB0ZW1wbGF0ZSwgJm4sICZiaW50LCAmdmlldyk7Ci0gICAgICAgIGIgPSBiaW50OworICAgICAgICBwdHIgPSBnZXRzdHJpbmcocHRlbXBsYXRlLCAmbiwgJmxvZ2ljYWxfY2hhcnNpemUsICZjaGFyc2l6ZSwgJnZpZXcpOworICAgICAgICBiID0gY2hhcnNpemU7CiAgICAgICAgIGlmIChwdHIpIHsKLSAgICAgICAgICAgIGlmIChiID09IDEpIHsKLQkJICAgIGxpdGVyYWwgPSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZSgodW5zaWduZWQgY2hhciAqKXB0ciwgbik7Ci0gICAgICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQotCQkgICAgbGl0ZXJhbCA9IHNyZV91bGl0ZXJhbF90ZW1wbGF0ZSgoUHlfVU5JQ09ERSAqKXB0ciwgbik7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpdGVyYWwgPSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZShiLCBwdHIsIG4pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIGxpdGVyYWwgPSAwOwpAQCAtMjM2OSwxNiArMjM0MCwxNCBAQAogCiAgICAgICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwogCi0gICAgICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgICAgIH0KIAotCWlmIChQeUVycl9PY2N1cnJlZCgpKQotCSAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgaWYgKHN0YXR1cyA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDApCkBAIC0yNTU5LDM1ICsyNTI4LDM1IEBACiB9CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX21hdGNoX2RvYywKLSJtYXRjaChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbWF0Y2ggb2JqZWN0IG9yIE5vbmUuXG5cblwKKyJtYXRjaChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbWF0Y2ggb2JqZWN0IG9yIE5vbmUuXG5cCiAgICAgTWF0Y2hlcyB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmciKTsKIAogUHlEb2NfU1RSVkFSKHBhdHRlcm5fc2VhcmNoX2RvYywKLSJzZWFyY2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXG5cCisic2VhcmNoKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBtYXRjaCBvYmplY3Qgb3IgTm9uZS5cblwKICAgICBTY2FuIHRocm91Z2ggc3RyaW5nIGxvb2tpbmcgZm9yIGEgbWF0Y2gsIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nXG5cCiAgICAgbWF0Y2ggb2JqZWN0IGluc3RhbmNlLiBSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuIik7CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX3NwbGl0X2RvYywKLSJzcGxpdChzdHJpbmdbLCBtYXhzcGxpdCA9IDBdKSAgLT4gbGlzdC5cblxuXAorInNwbGl0KHN0cmluZ1ssIG1heHNwbGl0ID0gMF0pICAtPiBsaXN0LlxuXAogICAgIFNwbGl0IHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgcGF0dGVybi4iKTsKIAogUHlEb2NfU1RSVkFSKHBhdHRlcm5fZmluZGFsbF9kb2MsCi0iZmluZGFsbChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbGlzdC5cblxuXAorImZpbmRhbGwoc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IGxpc3QuXG5cCiAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBvZiBwYXR0ZXJuIGluIHN0cmluZy4iKTsKIAogUHlEb2NfU1RSVkFSKHBhdHRlcm5fZmluZGl0ZXJfZG9jLAotImZpbmRpdGVyKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBpdGVyYXRvci5cblxuXAorImZpbmRpdGVyKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBpdGVyYXRvci5cblwKICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgZm9yIHRoZSBcblwKICAgICBSRSBwYXR0ZXJuIGluIHN0cmluZy4gRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGFcblwKICAgICBtYXRjaCBvYmplY3QuIik7CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX3N1Yl9kb2MsCi0ic3ViKHJlcGwsIHN0cmluZ1ssIGNvdW50ID0gMF0pIC0+IG5ld3N0cmluZy5cblxuXAorInN1YihyZXBsLCBzdHJpbmdbLCBjb3VudCA9IDBdKSAtPiBuZXdzdHJpbmcuXG5cCiAgICAgUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmdcblwKICAgICBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKIAogUHlEb2NfU1RSVkFSKHBhdHRlcm5fc3Vibl9kb2MsCi0ic3VibihyZXBsLCBzdHJpbmdbLCBjb3VudCA9IDBdKSAtPiAobmV3c3RyaW5nLCBudW1iZXIgb2Ygc3VicylcblxuXAorInN1Ym4ocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gKG5ld3N0cmluZywgbnVtYmVyIG9mIHN1YnMpXG5cCiAgICAgUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nXG5cCiAgICAgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlXG5cCiAgICAgcmVwbGFjZW1lbnQgcmVwbC4iKTsKQEAgLTI1OTYsMjIgKzI1NjUsMjIgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHBhdHRlcm5fbWV0aG9kc1tdID0gewogICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fbWF0Y2hfZG9jfSwKKyAgICAgICAgcGF0dGVybl9tYXRjaF9kb2N9LAogICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9zZWFyY2hfZG9jfSwKKyAgICAgICAgcGF0dGVybl9zZWFyY2hfZG9jfSwKICAgICB7InN1YiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc3ViX2RvY30sCisgICAgICAgIHBhdHRlcm5fc3ViX2RvY30sCiAgICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc3Vibl9kb2N9LAorICAgICAgICBwYXR0ZXJuX3N1Ym5fZG9jfSwKICAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3NwbGl0X2RvY30sCisgICAgICAgIHBhdHRlcm5fc3BsaXRfZG9jfSwKICAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9maW5kYWxsX2RvY30sCisgICAgICAgIHBhdHRlcm5fZmluZGFsbF9kb2N9LAogI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDIwMjAwMDAKLSAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1MsCi0JcGF0dGVybl9maW5kaXRlcl9kb2N9LAorICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGl0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICBwYXR0ZXJuX2ZpbmRpdGVyX2RvY30sCiAjZW5kaWYKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fY29weSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2RlZXBjb3B5LCBNRVRIX099LAogICAgIHtOVUxMLCBOVUxMfQpAQCAtMjYzMCwzMSArMjU5OSwzMSBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1BhdHRlcm4iLAogICAgIHNpemVvZihQYXR0ZXJuT2JqZWN0KSwgc2l6ZW9mKFNSRV9DT0RFKSwKLSAgICAoZGVzdHJ1Y3RvcilwYXR0ZXJuX2RlYWxsb2MsCS8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkJLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJCS8qIHRwX3JlcHIgKi8KLSAgICAwLAkJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLAkJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJCS8qIHRwX3N0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkJLyogdHBfZmxhZ3MgKi8KLSAgICBwYXR0ZXJuX2RvYywJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkJLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksCS8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBwYXR0ZXJuX21ldGhvZHMsCQkJLyogdHBfbWV0aG9kcyAqLwotICAgIHBhdHRlcm5fbWVtYmVycywJCQkvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBwYXR0ZXJuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcGF0dGVybl9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogfTsKIAogc3RhdGljIGludCBfdmFsaWRhdGUoUGF0dGVybk9iamVjdCAqc2VsZik7IC8qIEZvcndhcmQgKi8KQEAgLTI2OTUsMTMgKzI2NjQsNiBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKm8gPSBQeUxpc3RfR0VUX0lURU0oY29kZSwgaSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobyk7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVndWxhciBleHByZXNzaW9uIGNvZGUgc2l6ZSBsaW1pdCBleGNlZWRlZCIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgc2VsZi0+Y29kZVtpXSA9IChTUkVfQ09ERSkgdmFsdWU7CiAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgc2VsZi0+Y29kZVtpXSAhPSB2YWx1ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCkBAIC0yNzE1LDExICsyNjc3LDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChwYXR0ZXJuID09IFB5X05vbmUpCisgICAgaWYgKHBhdHRlcm4gPT0gUHlfTm9uZSkgeworICAgICAgICBzZWxmLT5sb2dpY2FsX2NoYXJzaXplID0gLTE7CiAgICAgICAgIHNlbGYtPmNoYXJzaXplID0gLTE7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9zc2l6ZV90IHBfbGVuZ3RoOwotICAgICAgICBpZiAoIWdldHN0cmluZyhwYXR0ZXJuLCAmcF9sZW5ndGgsICZzZWxmLT5jaGFyc2l6ZSwgJnNlbGYtPnZpZXcpKSB7CisgICAgICAgIGlmICghZ2V0c3RyaW5nKHBhdHRlcm4sICZwX2xlbmd0aCwgJnNlbGYtPmxvZ2ljYWxfY2hhcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5jaGFyc2l6ZSwgJnNlbGYtPnZpZXcpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMjk4NCwxMyArMjk0OSwxMyBAQAogICAgICAgICAgICAgICAgICAgIDxJTkZPPiA8MT1za2lwPiA8Mj1mbGFncz4gPDM9bWluPiA8ND1tYXg+OwogICAgICAgICAgICAgICAgICAgIElmIFNSRV9JTkZPX1BSRUZJWCBvciBTUkVfSU5GT19DSEFSU0VUIGlzIGluIHRoZSBmbGFncywKICAgICAgICAgICAgICAgICAgICBtb3JlIGZvbGxvd3MuICovCi0gICAgICAgICAgICAgICAgU1JFX0NPREUgZmxhZ3MsIG1pbiwgbWF4LCBpOworICAgICAgICAgICAgICAgIFNSRV9DT0RFIGZsYWdzLCBpOwogICAgICAgICAgICAgICAgIFNSRV9DT0RFICpuZXdjb2RlOwogICAgICAgICAgICAgICAgIEdFVF9TS0lQOwogICAgICAgICAgICAgICAgIG5ld2NvZGUgPSBjb2RlK3NraXAtMTsKICAgICAgICAgICAgICAgICBHRVRfQVJHOyBmbGFncyA9IGFyZzsKLSAgICAgICAgICAgICAgICBHRVRfQVJHOyBtaW4gPSBhcmc7Ci0gICAgICAgICAgICAgICAgR0VUX0FSRzsgbWF4ID0gYXJnOworICAgICAgICAgICAgICAgIEdFVF9BUkc7CisgICAgICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgICAgICAvKiBDaGVjayB0aGF0IG9ubHkgdmFsaWQgZmxhZ3MgYXJlIHByZXNlbnQgKi8KICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgfihTUkVfSU5GT19QUkVGSVggfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSRV9JTkZPX0xJVEVSQUwgfApAQCAtMzAwNiw5ICsyOTcxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAvKiBWYWxpZGF0ZSB0aGUgcHJlZml4ICovCiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fUFJFRklYKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DT0RFIHByZWZpeF9sZW4sIHByZWZpeF9za2lwOworICAgICAgICAgICAgICAgICAgICBTUkVfQ09ERSBwcmVmaXhfbGVuOwogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfbGVuID0gYXJnOwotICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfc2tpcCA9IGFyZzsKKyAgICAgICAgICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgICAgICAgICAgLyogSGVyZSBjb21lcyB0aGUgcHJlZml4IHN0cmluZyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoY29kZStwcmVmaXhfbGVuIDwgY29kZSB8fCBjb2RlK3ByZWZpeF9sZW4gPiBuZXdjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKQEAgLTMyNTUsOCArMzIyMCw4IEBACiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKGluZGV4ID09IE5VTEwpCi0JLyogRGVmYXVsdCB2YWx1ZSAqLwotCXJldHVybiAwOworICAgICAgICAvKiBEZWZhdWx0IHZhbHVlICovCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpbmRleCkpCiAgICAgICAgIHJldHVybiBQeUxvbmdfQXNTc2l6ZV90KGluZGV4KTsKQEAgLTM1ODQsMzYgKzM1NDksMzYgQEAKIE1hdGNoIG9iamVjdHMgYWx3YXlzIGhhdmUgYSBib29sZWFuIHZhbHVlIG9mIFRydWUuIik7CiAKIFB5RG9jX1NUUlZBUihtYXRjaF9ncm91cF9kb2MsCi0iZ3JvdXAoW2dyb3VwMSwgLi4uXSkgLT4gc3RyIG9yIHR1cGxlLlxuXG5cCisiZ3JvdXAoW2dyb3VwMSwgLi4uXSkgLT4gc3RyIG9yIHR1cGxlLlxuXAogICAgIFJldHVybiBzdWJncm91cChzKSBvZiB0aGUgbWF0Y2ggYnkgaW5kaWNlcyBvciBuYW1lcy5cblwKICAgICBGb3IgMCByZXR1cm5zIHRoZSBlbnRpcmUgbWF0Y2guIik7CiAKIFB5RG9jX1NUUlZBUihtYXRjaF9zdGFydF9kb2MsCi0ic3RhcnQoW2dyb3VwPTBdKSAtPiBpbnQuXG5cblwKKyJzdGFydChbZ3JvdXA9MF0pIC0+IGludC5cblwKICAgICBSZXR1cm4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4iKTsKIAogUHlEb2NfU1RSVkFSKG1hdGNoX2VuZF9kb2MsCi0iZW5kKFtncm91cD0wXSkgLT4gaW50LlxuXG5cCisiZW5kKFtncm91cD0wXSkgLT4gaW50LlxuXAogICAgIFJldHVybiBpbmRleCBvZiB0aGUgZW5kIG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4iKTsKIAogUHlEb2NfU1RSVkFSKG1hdGNoX3NwYW5fZG9jLAotInNwYW4oW2dyb3VwXSkgLT4gdHVwbGUuXG5cblwKKyJzcGFuKFtncm91cF0pIC0+IHR1cGxlLlxuXAogICAgIEZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLiIpOwogCiBQeURvY19TVFJWQVIobWF0Y2hfZ3JvdXBzX2RvYywKLSJncm91cHMoW2RlZmF1bHQ9Tm9uZV0pIC0+IHR1cGxlLlxuXG5cCisiZ3JvdXBzKFtkZWZhdWx0PU5vbmVdKSAtPiB0dXBsZS5cblwKICAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxLlxuXAogICAgIFRoZSBkZWZhdWx0IGFyZ3VtZW50IGlzIHVzZWQgZm9yIGdyb3Vwc1xuXAogICAgIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2giKTsKIAogUHlEb2NfU1RSVkFSKG1hdGNoX2dyb3VwZGljdF9kb2MsCi0iZ3JvdXBkaWN0KFtkZWZhdWx0PU5vbmVdKSAtPiBkaWN0LlxuXG5cCisiZ3JvdXBkaWN0KFtkZWZhdWx0PU5vbmVdKSAtPiBkaWN0LlxuXAogICAgIFJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsXG5cCiAgICAga2V5ZWQgYnkgdGhlIHN1Ymdyb3VwIG5hbWUuIFRoZSBkZWZhdWx0IGFyZ3VtZW50IGlzIHVzZWQgZm9yIGdyb3Vwc1xuXAogICAgIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2giKTsKIAogUHlEb2NfU1RSVkFSKG1hdGNoX2V4cGFuZF9kb2MsCi0iZXhwYW5kKHRlbXBsYXRlKSAtPiBzdHIuXG5cblwKKyJleHBhbmQodGVtcGxhdGUpIC0+IHN0ci5cblwKICAgICBSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSBkb2luZyBiYWNrc2xhc2ggc3Vic3RpdHV0aW9uXG5cCiAgICAgb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOwogCkBAIC0zNjg5LDMyICszNjU0LDMyIEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsMCkKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9NYXRjaCIsCiAgICAgc2l6ZW9mKE1hdGNoT2JqZWN0KSwgc2l6ZW9mKFB5X3NzaXplX3QpLAotICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsCS8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkvKiB0cF9wcmludCAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCS8qIHRwX2NhbGwgKi8KLSAgICAwLAkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJLyogdHBfZmxhZ3MgKi8KLSAgICBtYXRjaF9kb2MsCQkJLyogdHBfZG9jICovCi0gICAgMCwJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkvKiB0cF9jbGVhciAqLwotICAgIDAsCQkJCS8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCQkJLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVyICovCi0gICAgMCwJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBtYXRjaF9tZXRob2RzLAkJLyogdHBfbWV0aG9kcyAqLwotICAgIG1hdGNoX21lbWJlcnMsCQkvKiB0cF9tZW1iZXJzICovCi0gICAgbWF0Y2hfZ2V0c2V0LCAgCSAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgKGRlc3RydWN0b3IpbWF0Y2hfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBtYXRjaF9kb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBtYXRjaF9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hdGNoX21lbWJlcnMsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbWF0Y2hfZ2V0c2V0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMzgwMywxMiArMzc2OCwxMCBAQAogCiAgICAgc3RhdGUtPnB0ciA9IHN0YXRlLT5zdGFydDsKIAotICAgIGlmIChzdGF0ZS0+Y2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS0+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9tYXRjaChzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYtPnBhdHRlcm4pKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdW1hdGNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwotI2VuZGlmCiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4MzYsMTIgKzM3OTksMTAgQEAKIAogICAgIHN0YXRlLT5wdHIgPSBzdGF0ZS0+c3RhcnQ7CiAKLSAgICBpZiAoc3RhdGUtPmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAoc3RhdGUtPmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwotI2VuZGlmCiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4NjUsNyArMzgyNiw3IEBACiAKICNkZWZpbmUgU0NBTl9PRkYoeCkgb2Zmc2V0b2YoU2Nhbm5lck9iamVjdCwgeCkKIHN0YXRpYyBQeU1lbWJlckRlZiBzY2FubmVyX21lbWJlcnNbXSA9IHsKLSAgICB7InBhdHRlcm4iLAlUX09CSkVDVCwJU0NBTl9PRkYocGF0dGVybiksCVJFQURPTkxZfSwKKyAgICB7InBhdHRlcm4iLCBUX09CSkVDVCwgU0NBTl9PRkYocGF0dGVybiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0zODc0LDM1ICszODM1LDM1IEBACiAgICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfU2Nhbm5lciIsCiAgICAgc2l6ZW9mKFNjYW5uZXJPYmplY3QpLCAwLAogICAgIChkZXN0cnVjdG9yKXNjYW5uZXJfZGVhbGxvYywvKiB0cF9kZWFsbG9jICovCi0gICAgMCwJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfc2V0YXR0ciAqLwotICAgIDAsCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJLyogdHBfcmVwciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX251bWJlciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsCQkJCS8qIHRwX2hhc2ggKi8KLSAgICAwLAkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJLyogdHBfc3RyICovCi0gICAgMCwJCQkJLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwJCS8qIHRwX2ZsYWdzICovCi0gICAgMCwJCQkJLyogdHBfZG9jICovCi0gICAgMCwJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkvKiB0cF9jbGVhciAqLwotICAgIDAsCQkJCS8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCQkJLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVyICovCi0gICAgMCwJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBzY2FubmVyX21ldGhvZHMsCQkvKiB0cF9tZXRob2RzICovCi0gICAgc2Nhbm5lcl9tZW1iZXJzLAkJLyogdHBfbWVtYmVycyAqLwotICAgIDAsCQkJCS8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHNjYW5uZXJfbWV0aG9kcywgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgc2Nhbm5lcl9tZW1iZXJzLCAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MpCitwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKIHsKICAgICAvKiBjcmVhdGUgc2VhcmNoIHN0YXRlIG9iamVjdCAqLwogCkBAIC0zOTExLDcgKzM4NzIsOSBAQAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98bm46c2Nhbm5lciIsICZzdHJpbmcsICZzdGFydCwgJmVuZCkpCisgICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic291cmNlIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMIH07CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPfG5uOnNjYW5uZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBjcmVhdGUgc2Nhbm5lciBvYmplY3QgKi8KQEAgLTM5NDAsMTUgKzM5MDMsMTUgQEAKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc3JlbW9kdWxlID0gewotCVB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLQkiXyIgU1JFX01PRFVMRSwKLQlOVUxMLAotCS0xLAotCV9mdW5jdGlvbnMsCi0JTlVMTCwKLQlOVUxMLAotCU5VTEwsCi0JTlVMTAorICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgICAgICJfIiBTUkVfTU9EVUxFLAorICAgICAgICBOVUxMLAorICAgICAgICAtMSwKKyAgICAgICAgX2Z1bmN0aW9ucywKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTAogfTsKIAogUHlNT0RJTklUX0ZVTkMgUHlJbml0X19zcmUodm9pZCkKQEAgLTM5NjQsNyArMzkyNyw3IEBACiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZzcmVtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCi0gICAgCXJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKIAogICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU1JFX01BR0lDKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKaW5kZXggZTlkZThjYS4uYWJiNDhiOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrIGIvTW9kdWxlcy9fc3NsLmMKQEAgLTE4LDE2ICsxOCwyMSBAQAogCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgorI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1Moc2F2ZSkgXAorICAgIGRvIHsgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCkgeyAoc2F2ZSkgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOyB9IH0gd2hpbGUgKDApCisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTX1Moc2F2ZSkgXAorICAgIGRvIHsgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCkgeyBQeUV2YWxfUmVzdG9yZVRocmVhZChzYXZlKTsgfSB9IHdoaWxlICgwKQogI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTIHsgXAogICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqX3NhdmUgPSBOVUxMOyAgXAotICAgICAgICAgICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCkge19zYXZlID0gUHlFdmFsX1NhdmVUaHJlYWQoKTt9Ci0jZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMgICAgIGlmIChfc3NsX2xvY2tzX2NvdW50PjApe1B5RXZhbF9SZXN0b3JlVGhyZWFkKF9zYXZlKX07Ci0jZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUyAgIGlmIChfc3NsX2xvY2tzX2NvdW50PjApe19zYXZlID0gUHlFdmFsX1NhdmVUaHJlYWQoKX07Ci0jZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTIGlmIChfc3NsX2xvY2tzX2NvdW50PjApe1B5RXZhbF9SZXN0b3JlVGhyZWFkKF9zYXZlKTt9IFwKLSAgICAgICAgIH0KKyAgICAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MoX3NhdmUpOworI2RlZmluZSBQeVNTTF9VTkJMT0NLX1RIUkVBRFMgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MoX3NhdmUpOworI2RlZmluZSBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUyBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsgfQogCiAjZWxzZSAgIC8qIG5vIFdJVEhfVEhSRUFEICovCiAKKyNkZWZpbmUgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHNhdmUpCisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTX1Moc2F2ZSkKICNkZWZpbmUgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2RlZmluZSBQeVNTTF9CTE9DS19USFJFQURTCiAjZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUwpAQCAtNzEsNiArNzYsMTYgQEAKICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxCiB9OwogCitzdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgeworICAgIGNvbnN0IGNoYXIgKm1uZW1vbmljOworICAgIGludCBsaWJyYXJ5LCByZWFzb247Cit9OworCitzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSB7CisgICAgY29uc3QgY2hhciAqbGlicmFyeTsKKyAgICBpbnQgY29kZTsKK307CisKIC8qIEluY2x1ZGUgc3ltYm9scyBmcm9tIF9zb2NrZXQgbW9kdWxlICovCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCiAKQEAgLTkyLDggKzEwNywyMSBAQAogI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCiAjaW5jbHVkZSAib3BlbnNzbC9yYW5kLmgiCiAKKy8qIEluY2x1ZGUgZ2VuZXJhdGVkIGRhdGEgKGVycm9yIGNvZGVzKSAqLworI2luY2x1ZGUgIl9zc2xfZGF0YS5oIgorCiAvKiBTU0wgZXJyb3Igb2JqZWN0ICovCiBzdGF0aWMgUHlPYmplY3QgKlB5U1NMRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMU3lzY2FsbEVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTEVPRkVycm9yT2JqZWN0OworCisvKiBFcnJvciBtYXBwaW5ncyAqLworc3RhdGljIFB5T2JqZWN0ICplcnJfY29kZXNfdG9fbmFtZXM7CitzdGF0aWMgUHlPYmplY3QgKmVycl9uYW1lc190b19jb2RlczsKK3N0YXRpYyBQeU9iamVjdCAqbGliX2NvZGVzX3RvX25hbWVzOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKIApAQCAtMTI0LDkgKzE1MiwzNSBAQAogIyB1bmRlZiBIQVZFX1NTTF9DVFhfQ0xFQVJfT1BUSU9OUwogI2VuZGlmCiAKKy8qIEluIGNhc2Ugb2YgJ3Rscy11bmlxdWUnIGl0IHdpbGwgYmUgMTIgYnl0ZXMgZm9yIFRMUywgMzYgYnl0ZXMgZm9yCisgKiBvbGRlciBTU0wsIGJ1dCBsZXQncyBiZSBzYWZlICovCisjZGVmaW5lIFB5U1NMX0NCX01BWExFTiAxMjgKKworLyogU1NMX2dldF9maW5pc2hlZCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuNSAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNTAwZkwKKyMgZGVmaW5lIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAxCisjZWxzZQorIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDAKKyNlbmRpZgorCisvKiBFQ0RIIHN1cHBvcnQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19FQ0RIKQorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ0RICisjZW5kaWYKKworLyogY29tcHJlc3Npb24gc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0NPTVApCisjIGRlZmluZSBPUEVOU1NMX05PX0NPTVAKKyNlbmRpZgorCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgU1NMX0NUWCAqY3R4OworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBjaGFyICpucG5fcHJvdG9jb2xzOworICAgIGludCBucG5fcHJvdG9jb2xzX2xlbjsKKyNlbmRpZgogfSBQeVNTTENvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTEzNSw2ICsxODksNyBAQAogICAgIFNTTCAqc3NsOwogICAgIFg1MDkgKnBlZXJfY2VydDsKICAgICBpbnQgc2h1dGRvd25fc2Vlbl96ZXJvOworICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGU7CiB9IFB5U1NMU29ja2V0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMQ29udGV4dF9UeXBlOwpAQCAtMTY1LDM2ICsyMjAsMTUyIEBACiAjZGVmaW5lIEVSUlNUUjEoeCx5LHopICh4ICI6IiB5ICI6ICIgeikKICNkZWZpbmUgRVJSU1RSKHgpIEVSUlNUUjEoIl9zc2wuYyIsIFNUUklOR0lGWTIoX19MSU5FX18pLCB4KQogCi0vKiBYWFggSXQgbWlnaHQgYmUgaGVscGZ1bCB0byBhdWdtZW50IHRoZSBlcnJvciBtZXNzYWdlIGdlbmVyYXRlZAotICAgYmVsb3cgd2l0aCB0aGUgbmFtZSBvZiB0aGUgU1NMIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVkIHRoZSBlcnJvci4KLSAgIEkgZXhwZWN0IGl0J3Mgb2J2aW91cyBtb3N0IG9mIHRoZSB0aW1lLgotKi8KKworLyoKKyAqIFNTTCBlcnJvcnMuCisgKi8KKworUHlEb2NfU1RSVkFSKFNTTEVycm9yX2RvYywKKyJBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgU1NMIGltcGxlbWVudGF0aW9uLiIpOworCitQeURvY19TVFJWQVIoU1NMWmVyb1JldHVybkVycm9yX2RvYywKKyJTU0wvVExTIHNlc3Npb24gY2xvc2VkIGNsZWFubHkuIik7CisKK1B5RG9jX1NUUlZBUihTU0xXYW50UmVhZEVycm9yX2RvYywKKyJOb24tYmxvY2tpbmcgU1NMIHNvY2tldCBuZWVkcyB0byByZWFkIG1vcmUgZGF0YVxuIgorImJlZm9yZSB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbiBjYW4gYmUgY29tcGxldGVkLiIpOworCitQeURvY19TVFJWQVIoU1NMV2FudFdyaXRlRXJyb3JfZG9jLAorIk5vbi1ibG9ja2luZyBTU0wgc29ja2V0IG5lZWRzIHRvIHdyaXRlIG1vcmUgZGF0YVxuIgorImJlZm9yZSB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbiBjYW4gYmUgY29tcGxldGVkLiIpOworCitQeURvY19TVFJWQVIoU1NMU3lzY2FsbEVycm9yX2RvYywKKyJTeXN0ZW0gZXJyb3Igd2hlbiBhdHRlbXB0aW5nIFNTTCBvcGVyYXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihTU0xFT0ZFcnJvcl9kb2MsCisiU1NML1RMUyBjb25uZWN0aW9uIHRlcm1pbmF0ZWQgYWJydXB0bHkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTU0xFcnJvcl9zdHIoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5zdHJlcnJvciAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhzZWxmLT5zdHJlcnJvcikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnN0cmVycm9yKTsKKyAgICAgICAgcmV0dXJuIHNlbGYtPnN0cmVycm9yOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeU9iamVjdF9TdHIoc2VsZi0+YXJncyk7Cit9CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBzc2xlcnJvcl90eXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2Jhc2UsIE5VTEx9LCAgLyogRmlsbGVkIG91dCBpbiBtb2R1bGUgaW5pdCBhcyBpdCdzIG5vdCBhIGNvbnN0YW50ICovCisgICAge1B5X3RwX2RvYywgU1NMRXJyb3JfZG9jfSwKKyAgICB7UHlfdHBfc3RyLCBTU0xFcnJvcl9zdHJ9LAorICAgIHswLCAwfSwKK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBzc2xlcnJvcl90eXBlX3NwZWMgPSB7CisgICAgInNzbC5TU0xFcnJvciIsCisgICAgc2l6ZW9mKFB5T1NFcnJvck9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLAorICAgIHNzbGVycm9yX3R5cGVfc2xvdHMKK307CisKK3N0YXRpYyB2b2lkCitmaWxsX2FuZF9zZXRfc3NsZXJyb3IoUHlPYmplY3QgKnR5cGUsIGludCBzc2xfZXJybm8sIGNvbnN0IGNoYXIgKmVycnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCB1bnNpZ25lZCBsb25nIGVycmNvZGUpCit7CisgICAgUHlPYmplY3QgKmVycl92YWx1ZSA9IE5VTEwsICpyZWFzb25fb2JqID0gTlVMTCwgKmxpYl9vYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICppbml0X3ZhbHVlLCAqbXNnLCAqa2V5OworICAgIF9QeV9JREVOVElGSUVSKHJlYXNvbik7CisgICAgX1B5X0lERU5USUZJRVIobGlicmFyeSk7CisKKyAgICBpZiAoZXJyY29kZSAhPSAwKSB7CisgICAgICAgIGludCBsaWIsIHJlYXNvbjsKKworICAgICAgICBsaWIgPSBFUlJfR0VUX0xJQihlcnJjb2RlKTsKKyAgICAgICAgcmVhc29uID0gRVJSX0dFVF9SRUFTT04oZXJyY29kZSk7CisgICAgICAgIGtleSA9IFB5X0J1aWxkVmFsdWUoImlpIiwgbGliLCByZWFzb24pOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHJlYXNvbl9vYmogPSBQeURpY3RfR2V0SXRlbShlcnJfY29kZXNfdG9fbmFtZXMsIGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBpZiAocmVhc29uX29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBYWFggaWYgcmVhc29uIDwgMTAwLCBpdCBtaWdodCByZWZsZWN0IGEgbGlicmFyeSBudW1iZXIgKCEhKSAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcobGliKTsKKyAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBsaWJfb2JqID0gUHlEaWN0X0dldEl0ZW0obGliX2NvZGVzX3RvX25hbWVzLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGxpYl9vYmogPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJyc3RyID09IE5VTEwpCisgICAgICAgICAgICBlcnJzdHIgPSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhlcnJjb2RlKTsKKyAgICB9CisgICAgaWYgKGVycnN0ciA9PSBOVUxMKQorICAgICAgICBlcnJzdHIgPSAidW5rbm93biBlcnJvciI7CisKKyAgICBpZiAocmVhc29uX29iaiAmJiBsaWJfb2JqKQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiWyVTOiAlU10gJXMgKF9zc2wuYzolZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfb2JqLCByZWFzb25fb2JqLCBlcnJzdHIsIGxpbmVubyk7CisgICAgZWxzZSBpZiAobGliX29iaikKKyAgICAgICAgbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIlslU10gJXMgKF9zc2wuYzolZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfb2JqLCBlcnJzdHIsIGxpbmVubyk7CisgICAgZWxzZQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMgKF9zc2wuYzolZCkiLCBlcnJzdHIsIGxpbmVubyk7CisKKyAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpbml0X3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiaU4iLCBzc2xfZXJybm8sIG1zZyk7CisgICAgZXJyX3ZhbHVlID0gUHlPYmplY3RfQ2FsbE9iamVjdCh0eXBlLCBpbml0X3ZhbHVlKTsKKyAgICBQeV9ERUNSRUYoaW5pdF92YWx1ZSk7CisgICAgaWYgKGVycl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKHJlYXNvbl9vYmogPT0gTlVMTCkKKyAgICAgICAgcmVhc29uX29iaiA9IFB5X05vbmU7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoZXJyX3ZhbHVlLCAmUHlJZF9yZWFzb24sIHJlYXNvbl9vYmopKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKGxpYl9vYmogPT0gTlVMTCkKKyAgICAgICAgbGliX29iaiA9IFB5X05vbmU7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoZXJyX3ZhbHVlLCAmUHlJZF9saWJyYXJ5LCBsaWJfb2JqKSkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5RXJyX1NldE9iamVjdCh0eXBlLCBlcnJfdmFsdWUpOworZmFpbDoKKyAgICBQeV9YREVDUkVGKGVycl92YWx1ZSk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBjaGFyIGJ1ZlsyMDQ4XTsKLSAgICBjaGFyICplcnJzdHI7CisgICAgUHlPYmplY3QgKnR5cGUgPSBQeVNTTEVycm9yT2JqZWN0OworICAgIGNoYXIgKmVycnN0ciA9IE5VTEw7CiAgICAgaW50IGVycjsKICAgICBlbnVtIHB5X3NzbF9lcnJvciBwID0gUFlfU1NMX0VSUk9SX05PTkU7CisgICAgdW5zaWduZWQgbG9uZyBlID0gMDsKIAogICAgIGFzc2VydChyZXQgPD0gMCk7CisgICAgZSA9IEVSUl9wZWVrX2xhc3RfZXJyb3IoKTsKIAogICAgIGlmIChvYmotPnNzbCAhPSBOVUxMKSB7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Iob2JqLT5zc2wsIHJldCk7CiAKICAgICAgICAgc3dpdGNoIChlcnIpIHsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfWkVST19SRVRVUk46Ci0gICAgICAgICAgICBlcnJzdHIgPSAiVExTL1NTTCBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCI7CisgICAgICAgICAgICBlcnJzdHIgPSAiVExTL1NTTCBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCAoRU9GKSI7CisgICAgICAgICAgICB0eXBlID0gUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1pFUk9fUkVUVVJOOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfUkVBRDoKICAgICAgICAgICAgIGVycnN0ciA9ICJUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgKHJlYWQpIjsKKyAgICAgICAgICAgIHR5cGUgPSBQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1dBTlRfUkVBRDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1dSSVRFOgogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9XQU5UX1dSSVRFOworICAgICAgICAgICAgdHlwZSA9IFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICBlcnJzdHIgPSAiVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlICh3cml0ZSkiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfWDUwOV9MT09LVVA6CkBAIC0yMDcsODAgKzM3OCw2NCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZSA9IEVSUl9nZXRfZXJyb3IoKTsKICAgICAgICAgICAgIGlmIChlID09IDApIHsKICAgICAgICAgICAgICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnMKICAgICAgICAgICAgICAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KG9iai0+U29ja2V0KTsKICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDAgfHwgKCgoUHlPYmplY3QgKilzKSA9PSBQeV9Ob25lKSkgewogICAgICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0VPRjsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5U1NMRU9GRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJFT0Ygb2NjdXJyZWQgaW4gdmlvbGF0aW9uIG9mIHByb3RvY29sIjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAvKiB1bmRlcmx5aW5nIEJJTyByZXBvcnRlZCBhbiBJL08gZXJyb3IgKi8KICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHMpOwogICAgICAgICAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSAgICAgICAgICAgICAgICAgICAgdiA9IHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLyogcG9zc2libGU/ICovCiAgICAgICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfU1lTQ0FMTDsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0OwogICAgICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiU29tZSBJL08gZXJyb3Igb2NjdXJyZWQiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9TWVNDQUxMOwotICAgICAgICAgICAgICAgIC8qIFhYWCBQcm90ZWN0ZWQgYnkgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgKi8KLSAgICAgICAgICAgICAgICBlcnJzdHIgPSBFUlJfZXJyb3Jfc3RyaW5nKGUsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1NMOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGUgPSBFUlJfZ2V0X2Vycm9yKCk7CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1NTTDsKLSAgICAgICAgICAgIGlmIChlICE9IDApCi0gICAgICAgICAgICAgICAgLyogWFhYIFByb3RlY3RlZCBieSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayAqLwotICAgICAgICAgICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZSwgTlVMTCk7Ci0gICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgIC8qIHBvc3NpYmxlPyAqLworICAgICAgICAgICAgaWYgKGUgPT0gMCkKKyAgICAgICAgICAgICAgICAvKiBwb3NzaWJsZT8gKi8KICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiQSBmYWlsdXJlIGluIHRoZSBTU0wgbGlicmFyeSBvY2N1cnJlZCI7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9JTlZBTElEX0VSUk9SX0NPREU7CiAgICAgICAgICAgICBlcnJzdHIgPSAiSW52YWxpZCBlcnJvciBjb2RlIjsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoRVJSX3BlZWtfbGFzdF9lcnJvcigpLCBOVUxMKTsKICAgICB9Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX3NzbC5jOiVkOiAlcyIsIGxpbmVubywgZXJyc3RyKTsKKyAgICBmaWxsX2FuZF9zZXRfc3NsZXJyb3IodHlwZSwgcCwgZXJyc3RyLCBsaW5lbm8sIGUpOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgcCwgYnVmKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zZXRTU0xFcnJvciAoY2hhciAqZXJyc3RyLCBpbnQgZXJyY29kZSwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pIHsKIAotICAgIGNoYXIgYnVmWzIwNDhdOwotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgaWYgKGVycnN0ciA9PSBOVUxMKSB7CisgICAgaWYgKGVycnN0ciA9PSBOVUxMKQogICAgICAgICBlcnJjb2RlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwotICAgICAgICBlcnJzdHIgPSBFUlJfZXJyb3Jfc3RyaW5nKGVycmNvZGUsIE5VTEwpOwotICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc3NsLmM6JWQ6ICVzIiwgbGluZW5vLCBlcnJzdHIpOworICAgIGVsc2UKKyAgICAgICAgZXJyY29kZSA9IDA7CisgICAgZmlsbF9hbmRfc2V0X3NzbGVycm9yKFB5U1NMRXJyb3JPYmplY3QsIGVycmNvZGUsIGVycnN0ciwgbGluZW5vLCBlcnJjb2RlKTsKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlzKSIsIGVycmNvZGUsIGJ1Zik7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlTU0xFcnJvck9iamVjdCwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBTU0wgb2JqZWN0cworICovCisKIHN0YXRpYyBQeVNTTFNvY2tldCAqCiBuZXdQeVNTTFNvY2tldChTU0xfQ1RYICpjdHgsIFB5U29ja2V0U29ja09iamVjdCAqc29jaywKICAgICAgICAgICAgICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGUsCkBAIC0zMjgsNiArNDgzLDcgQEAKICAgICAgICAgU1NMX3NldF9hY2NlcHRfc3RhdGUoc2VsZi0+c3NsKTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwogCisgICAgc2VsZi0+c29ja2V0X3R5cGUgPSBzb2NrZXRfdHlwZTsKICAgICBzZWxmLT5Tb2NrZXQgPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKSBzb2NrLCBOVUxMKTsKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTM1Niw3ICs1MTIsNiBAQAogCiAgICAgLyogQWN0dWFsbHkgbmVnb3RpYXRlIFNTTCBjb25uZWN0aW9uICovCiAgICAgLyogWFhYIElmIFNTTF9kb19oYW5kc2hha2UoKSByZXR1cm5zIDAsIGl0J3MgYWxzbyBhIGZhaWx1cmUuICovCi0gICAgc29ja3N0YXRlID0gMDsKICAgICBkbyB7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgcmV0ID0gU1NMX2RvX2hhbmRzaGFrZShzZWxmLT5zc2wpOwpAQCAtODgyLDE5ICsxMDM3LDE1IEBACiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgaW50IGxlbjsKICAgICBpbnQgdmVyaWZpY2F0aW9uOwotICAgIFB5T2JqZWN0ICpiaW5hcnlfbW9kZSA9IFB5X05vbmU7Ci0gICAgaW50IGI7CisgICAgaW50IGJpbmFyeV9tb2RlID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cGVlcl9jZXJ0aWZpY2F0ZSIsICZiaW5hcnlfbW9kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwgJmJpbmFyeV9tb2RlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPnBlZXJfY2VydCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKLSAgICBiID0gUHlPYmplY3RfSXNUcnVlKGJpbmFyeV9tb2RlKTsKLSAgICBpZiAoYiA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChiKSB7CisgICAgaWYgKGJpbmFyeV9tb2RlKSB7CiAgICAgICAgIC8qIHJldHVybiBjZXJ0IGluIERFUi1lbmNvZGVkIGZvcm1hdCAqLwogCiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ5dGVzX2J1ZiA9IE5VTEw7CkBAIC05ODAsNiArMTEzMSwzOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYpIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQ7CisgICAgdW5zaWduZWQgaW50IG91dGxlbjsKKworICAgIFNTTF9nZXQwX25leHRfcHJvdG9fbmVnb3RpYXRlZChzZWxmLT5zc2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LCAmb3V0bGVuKTsKKworICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKSBvdXQsIG91dGxlbik7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9jb21wcmVzc2lvbihQeVNTTFNvY2tldCAqc2VsZikgeworI2lmZGVmIE9QRU5TU0xfTk9fQ09NUAorICAgIFB5X1JFVFVSTl9OT05FOworI2Vsc2UKKyAgICBjb25zdCBDT01QX01FVEhPRCAqY29tcF9tZXRob2Q7CisgICAgY29uc3QgY2hhciAqc2hvcnRfbmFtZTsKKworICAgIGlmIChzZWxmLT5zc2wgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgY29tcF9tZXRob2QgPSBTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoY29tcF9tZXRob2QgPT0gTlVMTCB8fCBjb21wX21ldGhvZC0+dHlwZSA9PSBOSURfdW5kZWYpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHNob3J0X25hbWUgPSBPQkpfbmlkMnNuKGNvbXBfbWV0aG9kLT50eXBlKTsKKyAgICBpZiAoc2hvcnRfbmFtZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChzaG9ydF9uYW1lKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgdm9pZCBQeVNTTF9kZWFsbG9jKFB5U1NMU29ja2V0ICpzZWxmKQogewogICAgIGlmIChzZWxmLT5wZWVyX2NlcnQpICAgICAgICAvKiBQb3NzaWJsZSBub3QgdG8gaGF2ZSBvbmU/ICovCkBAIC0xMTAwLDcgKzEyODQsNiBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBkbyB7Ci0gICAgICAgIGVyciA9IDA7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgbGVuID0gU1NMX3dyaXRlKHNlbGYtPnNzbCwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCBsZW4pOwpAQCAtMTIzNiw3ICsxNDE5LDYgQEAKICAgICAgICAgfQogICAgIH0KICAgICBkbyB7Ci0gICAgICAgIGVyciA9IDA7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgY291bnQgPSBTU0xfcmVhZChzZWxmLT5zc2wsIG1lbSwgbGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGNvdW50KTsKQEAgLTEzODgsNiArMTU3MCw0MSBAQAogRG9lcyB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZSB3aXRoIHRoZSByZW1vdGUgZW5kLCBhbmQgcmV0dXJuc1xuXAogdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4iKTsKIAorI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX3Rsc191bmlxdWVfY2IoUHlTU0xTb2NrZXQgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisgICAgY2hhciBidWZbUHlTU0xfQ0JfTUFYTEVOXTsKKyAgICBpbnQgbGVuOworCisgICAgaWYgKFNTTF9zZXNzaW9uX3JldXNlZChzZWxmLT5zc2wpIF4gIXNlbGYtPnNvY2tldF90eXBlKSB7CisgICAgICAgIC8qIGlmIHNlc3Npb24gaXMgcmVzdW1lZCBYT1Igd2UgYXJlIHRoZSBjbGllbnQgKi8KKyAgICAgICAgbGVuID0gU1NMX2dldF9maW5pc2hlZChzZWxmLT5zc2wsIGJ1ZiwgUHlTU0xfQ0JfTUFYTEVOKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGlmIGEgbmV3IHNlc3Npb24gWE9SIHdlIGFyZSB0aGUgc2VydmVyICovCisgICAgICAgIGxlbiA9IFNTTF9nZXRfcGVlcl9maW5pc2hlZChzZWxmLT5zc2wsIGJ1ZiwgUHlTU0xfQ0JfTUFYTEVOKTsKKyAgICB9CisKKyAgICAvKiBJdCBjYW5ub3QgYmUgbmVnYXRpdmUgaW4gY3VycmVudCBPcGVuU1NMIHZlcnNpb24gYXMgb2YgSnVseSAyMDExICovCisgICAgYXNzZXJ0KGxlbiA+PSAwKTsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworCisgICAgcmV0dmFsID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2MsCisidGxzX3VuaXF1ZV9jYigpIC0+IGJ5dGVzXG5cCitcblwKK1JldHVybnMgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgZGF0YSwgYXMgZGVmaW5lZCBieSBSRkMgNTkyOS5cblwKK1xuXAorSWYgdGhlIFRMUyBoYW5kc2hha2UgaXMgbm90IHlldCBjb21wbGV0ZSwgTm9uZSBpcyByZXR1cm5lZCIpOworCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMX0ZJTklTSEVEICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBQeVNTTE1ldGhvZHNbXSA9IHsKICAgICB7ImRvX2hhbmRzaGFrZSIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xkb19oYW5kc2hha2UsIE1FVEhfTk9BUkdTfSwKQEAgLTE0MDAsOCArMTYxNywxNiBAQAogICAgIHsicGVlcl9jZXJ0aWZpY2F0ZSIsIChQeUNGdW5jdGlvbilQeVNTTF9wZWVyY2VydCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9wZWVyY2VydF9kb2N9LAogICAgIHsiY2lwaGVyIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2NpcGhlciwgTUVUSF9OT0FSR1N9LAorI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICB7InNlbGVjdGVkX25wbl9wcm90b2NvbCIsIChQeUNGdW5jdGlvbilQeVNTTF9zZWxlY3RlZF9ucG5fcHJvdG9jb2wsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgorICAgIHsiY29tcHJlc3Npb24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfY29tcHJlc3Npb24sIE1FVEhfTk9BUkdTfSwKICAgICB7InNodXRkb3duIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHNodXRkb3duLCBNRVRIX05PQVJHUywKICAgICAgUHlTU0xfU1NMc2h1dGRvd25fZG9jfSwKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKKyAgICB7InRsc191bmlxdWVfY2IiLCAoUHlDRnVuY3Rpb24pUHlTU0xfdGxzX3VuaXF1ZV9jYiwgTUVUSF9OT0FSR1MsCisgICAgIFB5U1NMX3Rsc191bmlxdWVfY2JfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMTQ4OCw2ICsxNzEzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHNlbGYtPmN0eCA9IGN0eDsKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IE5VTEw7CisjZW5kaWYKICAgICAvKiBEZWZhdWx0cyAqLwogICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAgICAgU1NMX0NUWF9zZXRfb3B0aW9ucyhzZWxmLT5jdHgsCkBAIC0xNTA1LDYgKzE3MzMsOSBAQAogY29udGV4dF9kZWFsbG9jKFB5U1NMQ29udGV4dCAqc2VsZikKIHsKICAgICBTU0xfQ1RYX2ZyZWUoc2VsZi0+Y3R4KTsKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKKyNlbmRpZgogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CiAKQEAgLTE1MjksNiArMTc2MCw5MSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorLyogdGhpcyBjYWxsYmFjayBnZXRzIHBhc3NlZCB0byBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VfY2IgKi8KK3N0YXRpYyBpbnQKK19hZHZlcnRpc2VOUE5fY2IoU1NMICpzLCAKKyAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmRhdGEsIHVuc2lnbmVkIGludCAqbGVuLCAKKyAgICAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKnNzbF9jdHggPSAoUHlTU0xDb250ZXh0ICopIGFyZ3M7CisKKyAgICBpZiAoc3NsX2N0eC0+bnBuX3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7CisgICAgICAgICpsZW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICAgICAgKmxlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOworICAgIH0KKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKy8qIHRoaXMgY2FsbGJhY2sgZ2V0cyBwYXNzZWQgdG8gU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2IgKi8KK3N0YXRpYyBpbnQKK19zZWxlY3ROUE5fY2IoU1NMICpzLCAKKyAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZXJ2ZXIsIHVuc2lnbmVkIGludCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICB2b2lkICphcmdzKQoreworICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKKworICAgIHVuc2lnbmVkIGNoYXIgKmNsaWVudCA9ICh1bnNpZ25lZCBjaGFyICopIHNzbF9jdHgtPm5wbl9wcm90b2NvbHM7CisgICAgaW50IGNsaWVudF9sZW47CisKKyAgICBpZiAoY2xpZW50ID09IE5VTEwpIHsKKyAgICAgICAgY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7CisgICAgICAgIGNsaWVudF9sZW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGNsaWVudF9sZW4gPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzX2xlbjsKKyAgICB9CisKKyAgICBTU0xfc2VsZWN0X25leHRfcHJvdG8ob3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwgc2VydmVyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBjbGllbnRfbGVuKTsKKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIFB5X2J1ZmZlciBwcm90b3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworICAgIH0KKworICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBQeU1lbV9NYWxsb2MocHJvdG9zLmxlbik7CisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgbWVtY3B5KHNlbGYtPm5wbl9wcm90b2NvbHMsIHByb3Rvcy5idWYsIHByb3Rvcy5sZW4pOworICAgIHNlbGYtPm5wbl9wcm90b2NvbHNfbGVuID0gKGludCkgcHJvdG9zLmxlbjsKKworICAgIC8qIHNldCBib3RoIHNlcnZlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYmVjYXVzZSB0aGUgY29udGV4dCBjYW4KKyAgICAgKiBiZSB1c2VkIHRvIGNyZWF0ZSBib3RoIHR5cGVzIG9mIHNvY2tldHMgKi8KKyAgICBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VkX2NiKHNlbGYtPmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hZHZlcnRpc2VOUE5fY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKKyAgICBTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYihzZWxmLT5jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGVjdE5QTl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAiVGhlIE5QTiBleHRlbnNpb24gcmVxdWlyZXMgT3BlblNTTCAxLjAuMSBvciBsYXRlci4iKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgdm9pZCAqYykKIHsKQEAgLTE1OTUsMTkgKzE5MTEsMTE4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeVRocmVhZFN0YXRlICp0aHJlYWRfc3RhdGU7CisgICAgUHlPYmplY3QgKmNhbGxhYmxlOworICAgIGNoYXIgKnBhc3N3b3JkOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgZXJyb3I7Cit9IF9QeVNTTFBhc3N3b3JkSW5mbzsKKworc3RhdGljIGludAorX3B3aW5mb19zZXQoX1B5U1NMUGFzc3dvcmRJbmZvICpwd19pbmZvLCBQeU9iamVjdCogcGFzc3dvcmQsCisgICAgICAgICAgICBjb25zdCBjaGFyICpiYWRfdHlwZV9lcnJvcikKK3sKKyAgICAvKiBTZXQgdGhlIHBhc3N3b3JkIGFuZCBzaXplIGZpZWxkcyBvZiBhIF9QeVNTTFBhc3N3b3JkSW5mbyBzdHJ1Y3QKKyAgICAgICBmcm9tIGEgdW5pY29kZSwgYnl0ZXMsIG9yIGJ5dGUgYXJyYXkgb2JqZWN0LgorICAgICAgIFRoZSBwYXNzd29yZCBmaWVsZCB3aWxsIGJlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgbXVzdCBiZSBmcmVlZAorICAgICAgIGJ5IHRoZSBjYWxsZXIgKi8KKyAgICBQeU9iamVjdCAqcGFzc3dvcmRfYnl0ZXMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmRhdGEgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGFzc3dvcmQpKSB7CisgICAgICAgIHBhc3N3b3JkX2J5dGVzID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhwYXNzd29yZCwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcGFzc3dvcmRfYnl0ZXMpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhc3N3b3JkX2J5dGVzKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocGFzc3dvcmRfYnl0ZXMpOworICAgIH0gZWxzZSBpZiAoUHlCeXRlc19DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhc3N3b3JkKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocGFzc3dvcmQpOworICAgIH0gZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2socGFzc3dvcmQpKSB7CisgICAgICAgIGRhdGEgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocGFzc3dvcmQpOworICAgICAgICBzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUocGFzc3dvcmQpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIGJhZF90eXBlX2Vycm9yKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBmcmVlKHB3X2luZm8tPnBhc3N3b3JkKTsKKyAgICBwd19pbmZvLT5wYXNzd29yZCA9IG1hbGxvYyhzaXplKTsKKyAgICBpZiAoIXB3X2luZm8tPnBhc3N3b3JkKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gYWxsb2NhdGUgcGFzc3dvcmQgYnVmZmVyIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG1lbWNweShwd19pbmZvLT5wYXNzd29yZCwgZGF0YSwgc2l6ZSk7CisgICAgcHdfaW5mby0+c2l6ZSA9IHNpemU7CisKKyAgICBQeV9YREVDUkVGKHBhc3N3b3JkX2J5dGVzKTsKKyAgICByZXR1cm4gMTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihwYXNzd29yZF9ieXRlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19wYXNzd29yZF9jYWxsYmFjayhjaGFyICpidWYsIGludCBzaXplLCBpbnQgcndmbGFnLCB2b2lkICp1c2VyZGF0YSkKK3sKKyAgICBfUHlTU0xQYXNzd29yZEluZm8gKnB3X2luZm8gPSAoX1B5U1NMUGFzc3dvcmRJbmZvKikgdXNlcmRhdGE7CisgICAgUHlPYmplY3QgKmZuX3JldCA9IE5VTEw7CisKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8tPnRocmVhZF9zdGF0ZSk7CisKKyAgICBpZiAocHdfaW5mby0+Y2FsbGFibGUpIHsKKyAgICAgICAgZm5fcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhwd19pbmZvLT5jYWxsYWJsZSwgTlVMTCk7CisgICAgICAgIGlmICghZm5fcmV0KSB7CisgICAgICAgICAgICAvKiBUT0RPOiBJdCB3b3VsZCBiZSBuaWNlIHRvIG1vdmUgX2N0eXBlc19hZGRfdHJhY2ViYWNrKCkgaW50byB0aGUKKyAgICAgICAgICAgICAgIGNvcmUgcHl0aG9uIEFQSSwgc28gd2UgY291bGQgdXNlIGl0IHRvIGFkZCBhIGZyYW1lIGhlcmUgKi8KKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIV9wd2luZm9fc2V0KHB3X2luZm8sIGZuX3JldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBzdHJpbmciKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9DTEVBUihmbl9yZXQpOworICAgIH0KKworICAgIGlmIChwd19pbmZvLT5zaXplID4gc2l6ZSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJWQgYnl0ZXMiLCBzaXplKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKyAgICBtZW1jcHkoYnVmLCBwd19pbmZvLT5wYXNzd29yZCwgcHdfaW5mby0+c2l6ZSk7CisgICAgcmV0dXJuIHB3X2luZm8tPnNpemU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZm5fcmV0KTsKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKyAgICBwd19pbmZvLT5lcnJvciA9IDE7CisgICAgcmV0dXJuIC0xOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogbG9hZF9jZXJ0X2NoYWluKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmNlcnRmaWxlLCAqa2V5ZmlsZSA9IE5VTEw7CisgICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTCwgKnBhc3N3b3JkID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VydGZpbGVfYnl0ZXMgPSBOVUxMLCAqa2V5ZmlsZV9ieXRlcyA9IE5VTEw7CisgICAgcGVtX3Bhc3N3b3JkX2NiICpvcmlnX3Bhc3N3ZF9jYiA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2s7CisgICAgdm9pZCAqb3JpZ19wYXNzd2RfdXNlcmRhdGEgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrX3VzZXJkYXRhOworICAgIF9QeVNTTFBhc3N3b3JkSW5mbyBwd19pbmZvID0geyBOVUxMLCBOVUxMLCBOVUxMLCAwLCAwIH07CiAgICAgaW50IHI7CiAKICAgICBlcnJubyA9IDA7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgIk98Tzpsb2FkX2NlcnRfY2hhaW4iLCBrd2xpc3QsCi0gICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUpKQorICAgICAgICAiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBrd2xpc3QsCisgICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChrZXlmaWxlID09IFB5X05vbmUpCiAgICAgICAgIGtleWZpbGUgPSBOVUxMOwpAQCAtMTYyMSwxMiArMjAzNiwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImtleWZpbGUgc2hvdWxkIGJlIGEgdmFsaWQgZmlsZXN5c3RlbSBwYXRoIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGFzc3dvcmQgJiYgcGFzc3dvcmQgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoUHlDYWxsYWJsZV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgICAgIHB3X2luZm8uY2FsbGFibGUgPSBwYXNzd29yZDsKKyAgICAgICAgfSBlbHNlIGlmICghX3B3aW5mb19zZXQoJnB3X2luZm8sIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgc2hvdWxkIGJlIGEgc3RyaW5nIG9yIGNhbGxhYmxlIikpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2Ioc2VsZi0+Y3R4LCBfcGFzc3dvcmRfY2FsbGJhY2spOworICAgICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsICZwd19pbmZvKTsKKyAgICB9CisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICByID0gU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZShzZWxmLT5jdHgsCiAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGNlcnRmaWxlX2J5dGVzKSk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICBpZiAociAhPSAxKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSAwKSB7CisgICAgICAgIGlmIChwd19pbmZvLmVycm9yKSB7CisgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgIC8qIHRoZSBwYXNzd29yZCBjYWxsYmFjayBoYXMgYWxyZWFkeSBzZXQgdGhlIGVycm9yIGluZm9ybWF0aW9uICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gMCkgewogICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIH0KQEAgLTE2MzUsMzMgKzIwNjQsNDMgQEAKICAgICAgICAgfQogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICByID0gU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlKHNlbGYtPmN0eCwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoa2V5ZmlsZSA/IGtleWZpbGVfYnl0ZXMgOiBjZXJ0ZmlsZV9ieXRlcyksCiAgICAgICAgIFNTTF9GSUxFVFlQRV9QRU0pOwotICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCi0gICAgUHlfWERFQ1JFRihrZXlmaWxlX2J5dGVzKTsKLSAgICBQeV9YREVDUkVGKGNlcnRmaWxlX2J5dGVzKTsKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKKyAgICBQeV9DTEVBUihrZXlmaWxlX2J5dGVzKTsKKyAgICBQeV9DTEVBUihjZXJ0ZmlsZV9ieXRlcyk7CiAgICAgaWYgKHIgIT0gMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gMCkgeworICAgICAgICBpZiAocHdfaW5mby5lcnJvcikgeworICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgICAgICAvKiB0aGUgcGFzc3dvcmQgY2FsbGJhY2sgaGFzIGFscmVhZHkgc2V0IHRoZSBlcnJvciBpbmZvcm1hdGlvbiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVycm5vICE9IDApIHsKICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5KHNlbGYtPmN0eCk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICBpZiAociAhPSAxKSB7CiAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2Ioc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF9jYik7CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGEoc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF91c2VyZGF0YSk7CisgICAgZnJlZShwd19pbmZvLnBhc3N3b3JkKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2Ioc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF9jYik7CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGEoc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF91c2VyZGF0YSk7CisgICAgZnJlZShwd19pbmZvLnBhc3N3b3JkKTsKICAgICBQeV9YREVDUkVGKGtleWZpbGVfYnl0ZXMpOwogICAgIFB5X1hERUNSRUYoY2VydGZpbGVfYnl0ZXMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMTcyNCw2ICsyMTYzLDM5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitsb2FkX2RoX3BhcmFtcyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpmaWxlcGF0aCkKK3sKKyAgICBGSUxFICpmOworICAgIERIICpkaDsKKworICAgIGYgPSBfUHlfZm9wZW4oZmlsZXBhdGgsICJyYiIpOworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVycm5vID0gMDsKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgZGggPSBQRU1fcmVhZF9ESHBhcmFtcyhmLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICBmY2xvc2UoZik7CisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZGggPT0gTlVMTCkgeworICAgICAgICBpZiAoZXJybm8gIT0gMCkgeworICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgZmlsZXBhdGgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChTU0xfQ1RYX3NldF90bXBfZGgoc2VsZi0+Y3R4LCBkaCkgPT0gMCkKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgREhfZnJlZShkaCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBjb250ZXh0X3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGNoYXIgKmt3bGlzdFtdID0geyJzb2NrIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OwpAQCAtMTgwOCw2ICsyMjgwLDM1IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICitzdGF0aWMgUHlPYmplY3QgKgorc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZV9ieXRlczsKKyAgICBpbnQgbmlkOworICAgIEVDX0tFWSAqa2V5OworCisgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIobmFtZSwgJm5hbWVfYnl0ZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhuYW1lX2J5dGVzKSk7CisgICAgbmlkID0gT0JKX3NuMm5pZChQeUJ5dGVzX0FTX1NUUklORyhuYW1lX2J5dGVzKSk7CisgICAgUHlfREVDUkVGKG5hbWVfYnl0ZXMpOworICAgIGlmIChuaWQgPT0gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGVsbGlwdGljIGN1cnZlIG5hbWUgJVIiLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IEVDX0tFWV9uZXdfYnlfY3VydmVfbmFtZShuaWQpOworICAgIGlmIChrZXkgPT0gTlVMTCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFNTTF9DVFhfc2V0X3RtcF9lY2RoKHNlbGYtPmN0eCwga2V5KTsKKyAgICBFQ19LRVlfZnJlZShrZXkpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIHN0YXRpYyBQeUdldFNldERlZiBjb250ZXh0X2dldHNldGxpc3RbXSA9IHsKICAgICB7Im9wdGlvbnMiLCAoZ2V0dGVyKSBnZXRfb3B0aW9ucywKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfb3B0aW9ucywgTlVMTH0sCkBAIC0xODIxLDE0ICsyMzIyLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAogICAgIHsic2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pIHNldF9jaXBoZXJzLAogICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiX3NldF9ucG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKSBfc2V0X25wbl9wcm90b2NvbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX2NlcnRfY2hhaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKKyAgICB7ImxvYWRfZGhfcGFyYW1zIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX2RoX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKICAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbikgbG9hZF92ZXJpZnlfbG9jYXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCiAgICAgeyJzZXNzaW9uX3N0YXRzIiwgKFB5Q0Z1bmN0aW9uKSBzZXNzaW9uX3N0YXRzLAogICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7InNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyIsIChQeUNGdW5jdGlvbikgc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAorI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKKyAgICB7InNldF9lY2RoX2N1cnZlIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfZWNkaF9jdXJ2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKKyNlbmRpZgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE4OTksNiArMjQwOCw2OSBAQAogYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluIHN0cmluZy4gIFNlZSBSRkMgMTc1MC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkQoaW50IGxlbiwgaW50IHBzZXVkbykKK3sKKyAgICBpbnQgb2s7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIHVuc2lnbmVkIGxvbmcgZXJyOworICAgIGNvbnN0IGNoYXIgKmVycnN0cjsKKyAgICBQeU9iamVjdCAqdjsKKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOworICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocHNldWRvKSB7CisgICAgICAgIG9rID0gUkFORF9wc2V1ZG9fYnl0ZXMoKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbGVuKTsKKyAgICAgICAgaWYgKG9rID09IDAgfHwgb2sgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTyIsIGJ5dGVzLCBvayA9PSAxID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG9rID0gUkFORF9ieXRlcygodW5zaWduZWQgY2hhciopUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBsZW4pOworICAgICAgICBpZiAob2sgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBieXRlczsKKyAgICB9CisgICAgUHlfREVDUkVGKGJ5dGVzKTsKKworICAgIGVyciA9IEVSUl9nZXRfZXJyb3IoKTsKKyAgICBlcnJzdHIgPSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhlcnIpOworICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoa3MpIiwgZXJyLCBlcnJzdHIpOworICAgIGlmICh2ICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5U1NMRXJyb3JPYmplY3QsIHYpOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfUkFORF9ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGxlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6UkFORF9ieXRlcyIsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlTU0xfUkFORChsZW4sIDApOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfUkFORF9ieXRlc19kb2MsCisiUkFORF9ieXRlcyhuKSAtPiBieXRlc1xuXAorXG5cCitHZW5lcmF0ZSBuIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeVNTTF9SQU5EKGxlbiwgMSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9SQU5EX3BzZXVkb19ieXRlc19kb2MsCisiUkFORF9wc2V1ZG9fYnl0ZXMobikgLT4gKGJ5dGVzLCBpc19jcnlwdG9ncmFwaGljKVxuXAorXG5cCitHZW5lcmF0ZSBuIHBzZXVkby1yYW5kb20gYnl0ZXMuIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZSBpZiB0aGUgYnl0ZXNcCitnZW5lcmF0ZWQgYXJlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX1JBTkRfc3RhdHVzKFB5T2JqZWN0ICpzZWxmKQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUkFORF9zdGF0dXMoKSk7CkBAIC0xOTUxLDYgKzI1MjMsMTAgQEAKICNpZmRlZiBIQVZFX09QRU5TU0xfUkFORAogICAgIHsiUkFORF9hZGQiLCAgICAgICAgICAgIFB5U1NMX1JBTkRfYWRkLCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5U1NMX1JBTkRfYWRkX2RvY30sCisgICAgeyJSQU5EX2J5dGVzIiwgICAgICAgICAgUHlTU0xfUkFORF9ieXRlcywgTUVUSF9WQVJBUkdTLAorICAgICBQeVNTTF9SQU5EX2J5dGVzX2RvY30sCisgICAgeyJSQU5EX3BzZXVkb19ieXRlcyIsICAgUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXMsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jfSwKICAgICB7IlJBTkRfZWdkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2VnZCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9SQU5EX2VnZF9kb2N9LAogICAgIHsiUkFORF9zdGF0dXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeVNTTF9SQU5EX3N0YXR1cywgTUVUSF9OT0FSR1MsCkBAIC0yMDcxLDYgKzI2NDcsOCBAQAogICAgIHVuc2lnbmVkIGxvbmcgbGlidmVyOwogICAgIHVuc2lnbmVkIGludCBtYWpvciwgbWlub3IsIGZpeCwgcGF0Y2gsIHN0YXR1czsKICAgICBQeVNvY2tldE1vZHVsZV9BUElPYmplY3QgKnNvY2tldF9hcGk7CisgICAgc3RydWN0IHB5X3NzbF9lcnJvcl9jb2RlICplcnJjb2RlOworICAgIHN0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlICpsaWJjb2RlOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xDb250ZXh0X1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMTAwLDEyICsyNjc4LDM4IEBACiAgICAgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKTsKIAogICAgIC8qIEFkZCBzeW1ib2xzIHRvIG1vZHVsZSBkaWN0ICovCi0gICAgUHlTU0xFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbigic3NsLlNTTEVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U29ja2V0TW9kdWxlLmVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgc3NsZXJyb3JfdHlwZV9zbG90c1swXS5wZnVuYyA9IFB5RXhjX09TRXJyb3I7CisgICAgUHlTU0xFcnJvck9iamVjdCA9IFB5VHlwZV9Gcm9tU3BlYygmc3NsZXJyb3JfdHlwZV9zcGVjKTsKICAgICBpZiAoUHlTU0xFcnJvck9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTEVycm9yIiwgUHlTU0xFcnJvck9iamVjdCkgIT0gMCkKKworICAgIFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xaZXJvUmV0dXJuRXJyb3IiLCBTU0xaZXJvUmV0dXJuRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFdhbnRSZWFkRXJyb3IiLCBTU0xXYW50UmVhZEVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMV2FudFdyaXRlRXJyb3IiLCBTU0xXYW50V3JpdGVFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xTeXNjYWxsRXJyb3IiLCBTU0xTeXNjYWxsRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTEVPRkVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xFT0ZFcnJvciIsIFNTTEVPRkVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgaWYgKFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0ID09IE5VTEwKKyAgICAgICAgfHwgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0ID09IE5VTEwKKyAgICAgICAgfHwgUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0ID09IE5VTEwKKyAgICAgICAgfHwgUHlTU0xFT0ZFcnJvck9iamVjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTEVycm9yIiwgUHlTU0xFcnJvck9iamVjdCkgIT0gMAorICAgICAgICB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMWmVyb1JldHVybkVycm9yIiwgUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFdhbnRSZWFkRXJyb3IiLCBQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFdhbnRXcml0ZUVycm9yIiwgUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdCkgIT0gMAorICAgICAgICB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMU3lzY2FsbEVycm9yIiwgUHlTU0xTeXNjYWxsRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTEVPRkVycm9yIiwgUHlTU0xFT0ZFcnJvck9iamVjdCkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfU1NMQ29udGV4dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTENvbnRleHRfVHlwZSkgIT0gMCkKQEAgLTIxNTgsNiArMjc2MiwxNiBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19TU0x2MiIsIFNTTF9PUF9OT19TU0x2Mik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1NTTHYzIiwgU1NMX09QX05PX1NTTHYzKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjEiLCBTU0xfT1BfTk9fVExTdjEpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfREhfVVNFIiwgU1NMX09QX1NJTkdMRV9ESF9VU0UpOworI2lmZGVmIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRSk7CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfTk9fQ09NUFJFU1NJT04KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fQ09NUFJFU1NJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9PUF9OT19DT01QUkVTU0lPTik7CisjZW5kaWYKIAogI2lmZGVmIFNTTF9DVFJMX1NFVF9UTFNFWFRfSE9TVE5BTUUKICAgICByID0gUHlfVHJ1ZTsKQEAgLTIxNjcsNiArMjc4MSw3NCBAQAogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19TTkkiLCByKTsKIAorI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfVExTX1VOSVFVRSIsIHIpOworCisjaWZkZWYgT1BFTlNTTF9OT19FQ0RICisgICAgciA9IFB5X0ZhbHNlOworI2Vsc2UKKyAgICByID0gUHlfVHJ1ZTsKKyNlbmRpZgorICAgIFB5X0lOQ1JFRihyKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19FQ0RIIiwgcik7CisKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgciA9IFB5X1RydWU7CisjZWxzZQorICAgIHIgPSBQeV9GYWxzZTsKKyNlbmRpZgorICAgIFB5X0lOQ1JFRihyKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19OUE4iLCByKTsKKworICAgIC8qIE1hcHBpbmdzIGZvciBlcnJvciBjb2RlcyAqLworICAgIGVycl9jb2Rlc190b19uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBlcnJfbmFtZXNfdG9fY29kZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGVycl9jb2Rlc190b19uYW1lcyA9PSBOVUxMIHx8IGVycl9uYW1lc190b19jb2RlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlcnJjb2RlID0gZXJyb3JfY29kZXM7CisgICAgd2hpbGUgKGVycmNvZGUtPm1uZW1vbmljICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKm1uZW1vLCAqa2V5OworICAgICAgICBtbmVtbyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGVycmNvZGUtPm1uZW1vbmljKTsKKyAgICAgICAga2V5ID0gUHlfQnVpbGRWYWx1ZSgiaWkiLCBlcnJjb2RlLT5saWJyYXJ5LCBlcnJjb2RlLT5yZWFzb24pOworICAgICAgICBpZiAobW5lbW8gPT0gTlVMTCB8fCBrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZXJyX2NvZGVzX3RvX25hbWVzLCBrZXksIG1uZW1vKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZXJyX25hbWVzX3RvX2NvZGVzLCBtbmVtbywga2V5KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG1uZW1vKTsKKyAgICAgICAgZXJyY29kZSsrOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJfY29kZXNfdG9fbmFtZXMiLCBlcnJfY29kZXNfdG9fbmFtZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJfbmFtZXNfdG9fY29kZXMiLCBlcnJfbmFtZXNfdG9fY29kZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxpYl9jb2Rlc190b19uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAobGliX2NvZGVzX3RvX25hbWVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxpYmNvZGUgPSBsaWJyYXJ5X2NvZGVzOworICAgIHdoaWxlIChsaWJjb2RlLT5saWJyYXJ5ICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKm1uZW1vLCAqa2V5OworICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcobGliY29kZS0+Y29kZSk7CisgICAgICAgIG1uZW1vID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobGliY29kZS0+bGlicmFyeSk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCB8fCBtbmVtbyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShsaWJfY29kZXNfdG9fbmFtZXMsIGtleSwgbW5lbW8pKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBQeV9ERUNSRUYobW5lbW8pOworICAgICAgICBsaWJjb2RlKys7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImxpYl9jb2Rlc190b19uYW1lcyIsIGxpYl9jb2Rlc190b19uYW1lcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIAogICAgIC8qIE9wZW5TU0wgdmVyc2lvbiAqLwogICAgIC8qIFNTTGVheSgpIGdpdmVzIHVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGxpbmtlZCBhZ2FpbnN0LAogICAgICAgIHdoaWNoIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBoZWFkZXJzIHZlcnNpb24uCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2xfZGF0YS5oIGIvTW9kdWxlcy9fc3NsX2RhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWE4ZDdiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc3NsX2RhdGEuaApAQCAtMCwwICsxLDE2NTMgQEAKKy8qIEZpbGUgZ2VuZXJhdGVkIGJ5IFRvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5ICovCisvKiBHZW5lcmF0ZWQgb24gMjAxMi0wNS0xNlQyMzo1Njo0MC45ODEzODIgKi8KKworc3RhdGljIHN0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlIGxpYnJhcnlfY29kZXNbXSA9IHsKKyAgICB7IlBFTSIsIEVSUl9MSUJfUEVNfSwKKyAgICB7IlNTTCIsIEVSUl9MSUJfU1NMfSwKKyAgICB7Ilg1MDkiLCBFUlJfTElCX1g1MDl9LAorICAgIHsgTlVMTCB9Cit9OworCitzdGF0aWMgc3RydWN0IHB5X3NzbF9lcnJvcl9jb2RlIGVycm9yX2NvZGVzW10gPSB7CisgICNpZmRlZiBQRU1fUl9CQURfQkFTRTY0X0RFQ09ERQorICAgIHsiQkFEX0JBU0U2NF9ERUNPREUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0JBU0U2NF9ERUNPREV9LAorICAjZWxzZQorICAgIHsiQkFEX0JBU0U2NF9ERUNPREUiLCBFUlJfTElCX1BFTSwgMTAwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfREVDUllQVAorICAgIHsiQkFEX0RFQ1JZUFQiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0RFQ1JZUFR9LAorICAjZWxzZQorICAgIHsiQkFEX0RFQ1JZUFQiLCBFUlJfTElCX1BFTSwgMTAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfRU5EX0xJTkUKKyAgICB7IkJBRF9FTkRfTElORSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfRU5EX0xJTkV9LAorICAjZWxzZQorICAgIHsiQkFEX0VORF9MSU5FIiwgRVJSX0xJQl9QRU0sIDEwMn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0lWX0NIQVJTCisgICAgeyJCQURfSVZfQ0hBUlMiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0lWX0NIQVJTfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9JVl9DSEFSUyIsIEVSUl9MSUJfUEVNLCAxMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9NQUdJQ19OVU1CRVIKKyAgICB7IkJBRF9NQUdJQ19OVU1CRVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX01BR0lDX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJCQURfTUFHSUNfTlVNQkVSIiwgRVJSX0xJQl9QRU0sIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX1BBU1NXT1JEX1JFQUQKKyAgICB7IkJBRF9QQVNTV09SRF9SRUFEIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9QQVNTV09SRF9SRUFEfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QQVNTV09SRF9SRUFEIiwgRVJSX0xJQl9QRU0sIDEwNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX1ZFUlNJT05fTlVNQkVSCisgICAgeyJCQURfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX1ZFUlNJT05fTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfUEVNLCAxMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JJT19XUklURV9GQUlMVVJFCisgICAgeyJCSU9fV1JJVEVfRkFJTFVSRSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CSU9fV1JJVEVfRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJCSU9fV1JJVEVfRkFJTFVSRSIsIEVSUl9MSUJfUEVNLCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0NJUEhFUl9JU19OVUxMCisgICAgeyJDSVBIRVJfSVNfTlVMTCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9DSVBIRVJfSVNfTlVMTH0sCisgICNlbHNlCisgICAgeyJDSVBIRVJfSVNfTlVMTCIsIEVSUl9MSUJfUEVNLCAxMjd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVkKKyAgICB7IkVSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVkiLCBFUlJfTElCX1BFTSwgUEVNX1JfRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWX0sCisgICNlbHNlCisgICAgeyJFUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZIiwgRVJSX0xJQl9QRU0sIDExNX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfRVhQRUNUSU5HX1BSSVZBVEVfS0VZX0JMT0IKKyAgICB7IkVYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0VYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CfSwKKyAgI2Vsc2UKKyAgICB7IkVYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIDExOX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQgorICAgIHsiRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9FWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CfSwKKyAgI2Vsc2UKKyAgICB7IkVYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgMTIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9JTkNPTlNJU1RFTlRfSEVBREVSCisgICAgeyJJTkNPTlNJU1RFTlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0lOQ09OU0lTVEVOVF9IRUFERVJ9LAorICAjZWxzZQorICAgIHsiSU5DT05TSVNURU5UX0hFQURFUiIsIEVSUl9MSUJfUEVNLCAxMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0tFWUJMT0JfSEVBREVSX1BBUlNFX0VSUk9SCisgICAgeyJLRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9LRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJLRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUiIsIEVSUl9MSUJfUEVNLCAxMjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0tFWUJMT0JfVE9PX1NIT1JUCisgICAgeyJLRVlCTE9CX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9LRVlCTE9CX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJLRVlCTE9CX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCAxMjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PVF9ERUtfSU5GTworICAgIHsiTk9UX0RFS19JTkZPIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PVF9ERUtfSU5GT30sCisgICNlbHNlCisgICAgeyJOT1RfREVLX0lORk8iLCBFUlJfTElCX1BFTSwgMTA1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfRU5DUllQVEVECisgICAgeyJOT1RfRU5DUllQVEVEIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PVF9FTkNSWVBURUR9LAorICAjZWxzZQorICAgIHsiTk9UX0VOQ1JZUFRFRCIsIEVSUl9MSUJfUEVNLCAxMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PVF9QUk9DX1RZUEUKKyAgICB7Ik5PVF9QUk9DX1RZUEUiLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9UX1BST0NfVFlQRX0sCisgICNlbHNlCisgICAgeyJOT1RfUFJPQ19UWVBFIiwgRVJSX0xJQl9QRU0sIDEwN30sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9fU1RBUlRfTElORQorICAgIHsiTk9fU1RBUlRfTElORSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT19TVEFSVF9MSU5FfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1NUQVJUX0xJTkUiLCBFUlJfTElCX1BFTSwgMTA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JECisgICAgeyJQUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JEIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1BST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkR9LAorICAjZWxzZQorICAgIHsiUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRCIsIEVSUl9MSUJfUEVNLCAxMDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1BVQkxJQ19LRVlfTk9fUlNBCisgICAgeyJQVUJMSUNfS0VZX05PX1JTQSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVUJMSUNfS0VZX05PX1JTQX0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX05PX1JTQSIsIEVSUl9MSUJfUEVNLCAxMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1BWS19EQVRBX1RPT19TSE9SVAorICAgIHsiUFZLX0RBVEFfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1BWS19EQVRBX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJQVktfREFUQV9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVktfVE9PX1NIT1JUCisgICAgeyJQVktfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1BWS19UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiUFZLX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCAxMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1JFQURfS0VZCisgICAgeyJSRUFEX0tFWSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9SRUFEX0tFWX0sCisgICNlbHNlCisgICAgeyJSRUFEX0tFWSIsIEVSUl9MSUJfUEVNLCAxMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1NIT1JUX0hFQURFUgorICAgIHsiU0hPUlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1NIT1JUX0hFQURFUn0sCisgICNlbHNlCisgICAgeyJTSE9SVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9VTlNVUFBPUlRFRF9DSVBIRVIKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9VTlNVUFBPUlRFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9QRU0sIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfRU5DUllQVElPTgorICAgIHsiVU5TVVBQT1JURURfRU5DUllQVElPTiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0VOQ1JZUFRJT04iLCBFUlJfTElCX1BFTSwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9VTlNVUFBPUlRFRF9LRVlfQ09NUE9ORU5UUworICAgIHsiVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFMiLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFN9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFMiLCBFUlJfTElCX1BFTSwgMTI2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9BUFBfREFUQV9JTl9IQU5EU0hBS0UKKyAgICB7IkFQUF9EQVRBX0lOX0hBTkRTSEFLRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9BUFBfREFUQV9JTl9IQU5EU0hBS0V9LAorICAjZWxzZQorICAgIHsiQVBQX0RBVEFfSU5fSEFORFNIQUtFIiwgRVJSX0xJQl9TU0wsIDEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUCisgICAgeyJBVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUfSwKKyAgI2Vsc2UKKyAgICB7IkFUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVCIsIEVSUl9MSUJfU1NMLCAyNzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9BTEVSVF9SRUNPUkQKKyAgICB7IkJBRF9BTEVSVF9SRUNPUkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0FMRVJUX1JFQ09SRH0sCisgICNlbHNlCisgICAgeyJCQURfQUxFUlRfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0FVVEhFTlRJQ0FUSU9OX1RZUEUKKyAgICB7IkJBRF9BVVRIRU5USUNBVElPTl9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9BVVRIRU5USUNBVElPTl9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9BVVRIRU5USUNBVElPTl9UWVBFIiwgRVJSX0xJQl9TU0wsIDEwMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0NIQU5HRV9DSVBIRVJfU1BFQworICAgIHsiQkFEX0NIQU5HRV9DSVBIRVJfU1BFQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQ0hBTkdFX0NJUEhFUl9TUEVDfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9DSEFOR0VfQ0lQSEVSX1NQRUMiLCBFUlJfTElCX1NTTCwgMTAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQ0hFQ0tTVU0KKyAgICB7IkJBRF9DSEVDS1NVTSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQ0hFQ0tTVU19LAorICAjZWxzZQorICAgIHsiQkFEX0NIRUNLU1VNIiwgRVJSX0xJQl9TU0wsIDEwNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RBVEFfUkVUVVJORURfQllfQ0FMTEJBQ0sKKyAgICB7IkJBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIDEwNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RFQ09NUFJFU1NJT04KKyAgICB7IkJBRF9ERUNPTVBSRVNTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ERUNPTVBSRVNTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ERUNPTVBSRVNTSU9OIiwgRVJSX0xJQl9TU0wsIDEwN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RIX0dfTEVOR1RICisgICAgeyJCQURfREhfR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RIX0dfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESF9HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESF9QVUJfS0VZX0xFTkdUSAorICAgIHsiQkFEX0RIX1BVQl9LRVlfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESF9QVUJfS0VZX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfREhfUFVCX0tFWV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREhfUF9MRU5HVEgKKyAgICB7IkJBRF9ESF9QX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREhfUF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RIX1BfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDExMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RJR0VTVF9MRU5HVEgKKyAgICB7IkJBRF9ESUdFU1RfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESUdFU1RfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESUdFU1RfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDExMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RTQV9TSUdOQVRVUkUKKyAgICB7IkJBRF9EU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9EU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9EU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDExMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0VDQ19DRVJUCisgICAgeyJCQURfRUNDX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0VDQ19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FQ0NfQ0VSVCIsIEVSUl9MSUJfU1NMLCAzMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ0RTQV9TSUdOQVRVUkUKKyAgICB7IkJBRF9FQ0RTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0VDRFNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfRUNEU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMwNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0VDUE9JTlQKKyAgICB7IkJBRF9FQ1BPSU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ1BPSU5UfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FQ1BPSU5UIiwgRVJSX0xJQl9TU0wsIDMwNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0hBTkRTSEFLRV9MRU5HVEgKKyAgICB7IkJBRF9IQU5EU0hBS0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9IQU5EU0hBS0VfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9IQU5EU0hBS0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMzMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0hFTExPX1JFUVVFU1QKKyAgICB7IkJBRF9IRUxMT19SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9IRUxMT19SRVFVRVNUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9IRUxMT19SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIDEwNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0xFTkdUSAorICAgIHsiQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMjcxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfTUFDX0RFQ09ERQorICAgIHsiQkFEX01BQ19ERUNPREUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX01BQ19ERUNPREV9LAorICAjZWxzZQorICAgIHsiQkFEX01BQ19ERUNPREUiLCBFUlJfTElCX1NTTCwgMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfTUFDX0xFTkdUSAorICAgIHsiQkFEX01BQ19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX01BQ19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX01BQ19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzMzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfTUVTU0FHRV9UWVBFCisgICAgeyJCQURfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NRVNTQUdFX1RZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCAxMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9QQUNLRVRfTEVOR1RICisgICAgeyJCQURfUEFDS0VUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUEFDS0VUX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUEFDS0VUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUgorICAgIHsiQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJCQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1NTTCwgMTE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RICisgICAgeyJCQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SRVNQT05TRV9BUkdVTUVOVAorICAgIHsiQkFEX1JFU1BPTlNFX0FSR1VNRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SRVNQT05TRV9BUkdVTUVOVH0sCisgICNlbHNlCisgICAgeyJCQURfUkVTUE9OU0VfQVJHVU1FTlQiLCBFUlJfTElCX1NTTCwgMTE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX0RFQ1JZUFQKKyAgICB7IkJBRF9SU0FfREVDUllQVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUlNBX0RFQ1JZUFR9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9ERUNSWVBUIiwgRVJSX0xJQl9TU0wsIDExOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9FTkNSWVBUCisgICAgeyJCQURfUlNBX0VOQ1JZUFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9FTkNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfRU5DUllQVCIsIEVSUl9MSUJfU1NMLCAxMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfRV9MRU5HVEgKKyAgICB7IkJBRF9SU0FfRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9FX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9NT0RVTFVTX0xFTkdUSAorICAgIHsiQkFEX1JTQV9NT0RVTFVTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUlNBX01PRFVMVVNfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfTU9EVUxVU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX1NJR05BVFVSRQorICAgIHsiQkFEX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMTIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU0lHTkFUVVJFCisgICAgeyJCQURfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAxMjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TU0xfRklMRVRZUEUKKyAgICB7IkJBRF9TU0xfRklMRVRZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NTTF9GSUxFVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfU1NMX0ZJTEVUWVBFIiwgRVJSX0xJQl9TU0wsIDEyNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSAorICAgIHsiQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU1NMX1NFU1NJT05fSURfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU1RBVEUKKyAgICB7IkJBRF9TVEFURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU1RBVEV9LAorICAjZWxzZQorICAgIHsiQkFEX1NUQVRFIiwgRVJSX0xJQl9TU0wsIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1dSSVRFX1JFVFJZCisgICAgeyJCQURfV1JJVEVfUkVUUlkiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1dSSVRFX1JFVFJZfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9XUklURV9SRVRSWSIsIEVSUl9MSUJfU1NMLCAxMjd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JJT19OT1RfU0VUCisgICAgeyJCSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJCSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAxMjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkcKKyAgICB7IkJMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9OR30sCisgICNlbHNlCisgICAgeyJCTE9DS19DSVBIRVJfUEFEX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIDEyOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQk5fTElCCisgICAgeyJCTl9MSUIiLCBFUlJfTElCX1NTTCwgU1NMX1JfQk5fTElCfSwKKyAgI2Vsc2UKKyAgICB7IkJOX0xJQiIsIEVSUl9MSUJfU1NMLCAxMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NBX0ROX0xFTkdUSF9NSVNNQVRDSAorICAgIHsiQ0FfRE5fTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NBX0ROX0xFTkdUSF9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJDQV9ETl9MRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMTMxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DQV9ETl9UT09fTE9ORworICAgIHsiQ0FfRE5fVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0FfRE5fVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiQ0FfRE5fVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMTMyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DQ1NfUkVDRUlWRURfRUFSTFkKKyAgICB7IkNDU19SRUNFSVZFRF9FQVJMWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DQ1NfUkVDRUlWRURfRUFSTFl9LAorICAjZWxzZQorICAgIHsiQ0NTX1JFQ0VJVkVEX0VBUkxZIiwgRVJSX0xJQl9TU0wsIDEzM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRAorICAgIHsiQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkNFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQiLCBFUlJfTElCX1NTTCwgMTM0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DRVJUX0xFTkdUSF9NSVNNQVRDSAorICAgIHsiQ0VSVF9MRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ0VSVF9MRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMTM1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UCisgICAgeyJDSEFMTEVOR0VfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NIQUxMRU5HRV9JU19ESUZGRVJFTlR9LAorICAjZWxzZQorICAgIHsiQ0hBTExFTkdFX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCAxMzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NJUEhFUl9DT0RFX1dST05HX0xFTkdUSAorICAgIHsiQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NJUEhFUl9DT0RFX1dST05HX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJDSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTM3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSVBIRVJfT1JfSEFTSF9VTkFWQUlMQUJMRQorICAgIHsiQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEV9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUiLCBFUlJfTElCX1NTTCwgMTM4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSVBIRVJfVEFCTEVfU1JDX0VSUk9SCisgICAgeyJDSVBIRVJfVEFCTEVfU1JDX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NJUEhFUl9UQUJMRV9TUkNfRVJST1J9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NMSUVOVEhFTExPX1RMU0VYVAorICAgIHsiQ0xJRU5USEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NMSUVOVEhFTExPX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJDTElFTlRIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjI2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0VEX0xFTkdUSF9UT09fTE9ORworICAgIHsiQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMTQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9ESVNBQkxFRAorICAgIHsiQ09NUFJFU1NJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUR9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgMzQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9GQUlMVVJFCisgICAgeyJDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAxNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRQorICAgIHsiQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRX0sCisgICNlbHNlCisgICAgeyJDT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UiLCBFUlJfTElCX1NTTCwgMzA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SCisgICAgeyJDT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0xJQlJBUllfRVJST1J9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTk5FQ1RJT05fSURfSVNfRElGRkVSRU5UCisgICAgeyJDT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVH0sCisgICNlbHNlCisgICAgeyJDT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCAxNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTk5FQ1RJT05fVFlQRV9OT1RfU0VUCisgICAgeyJDT05ORUNUSU9OX1RZUEVfTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT05ORUNUSU9OX1RZUEVfTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJDT05ORUNUSU9OX1RZUEVfTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAxNDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPT0tJRV9NSVNNQVRDSAorICAgIHsiQ09PS0lFX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPT0tJRV9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJDT09LSUVfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMzA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9EQVRBX0JFVFdFRU5fQ0NTX0FORF9GSU5JU0hFRAorICAgIHsiREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUR9LAorICAjZWxzZQorICAgIHsiREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQiLCBFUlJfTElCX1NTTCwgMTQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9ORworICAgIHsiREFUQV9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfREFUQV9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiREFUQV9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMTQ2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRAorICAgIHsiREVDUllQVElPTl9GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfREVDUllQVElPTl9GQUlMRUR9LAorICAjZWxzZQorICAgIHsiREVDUllQVElPTl9GQUlMRUQiLCBFUlJfTElCX1NTTCwgMTQ3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRF9PUl9CQURfUkVDT1JEX01BQworICAgIHsiREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUMiLCBFUlJfTElCX1NTTCwgU1NMX1JfREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUN9LAorICAjZWxzZQorICAgIHsiREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUMiLCBFUlJfTElCX1NTTCwgMjgxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HCisgICAgeyJESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCAxNDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RJR0VTVF9DSEVDS19GQUlMRUQKKyAgICB7IkRJR0VTVF9DSEVDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfRElHRVNUX0NIRUNLX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJESUdFU1RfQ0hFQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDE0OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRFRMU19NRVNTQUdFX1RPT19CSUcKKyAgICB7IkRUTFNfTUVTU0FHRV9UT09fQklHIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RUTFNfTUVTU0FHRV9UT09fQklHfSwKKyAgI2Vsc2UKKyAgICB7IkRUTFNfTUVTU0FHRV9UT09fQklHIiwgRVJSX0xJQl9TU0wsIDMzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lECisgICAgeyJEVVBMSUNBVEVfQ09NUFJFU1NJT05fSUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lEfSwKKyAgI2Vsc2UKKyAgICB7IkRVUExJQ0FURV9DT01QUkVTU0lPTl9JRCIsIEVSUl9MSUJfU1NMLCAzMDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVAorICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVH0sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlQiLCBFUlJfTElCX1NTTCwgMzE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkcKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfU0lHTklORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkd9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HIiwgRVJSX0xJQl9TU0wsIDMxOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRQorICAgIHsiRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMzIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9TSE9VTERfSEFWRV9TSEExX1NJR05BVFVSRQorICAgIHsiRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMzIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSCisgICAgeyJFQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAzMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkVOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfRU5DUllQVEVEX0xFTkdUSF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJFTkNSWVBURURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE1MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWQorICAgIHsiRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZfSwKKyAgI2Vsc2UKKyAgICB7IkVSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgMjgyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FUlJPUl9JTl9SRUNFSVZFRF9DSVBIRVJfTElTVAorICAgIHsiRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1R9LAorICAjZWxzZQorICAgIHsiRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QiLCBFUlJfTElCX1NTTCwgMTUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FWENFU1NJVkVfTUVTU0FHRV9TSVpFCisgICAgeyJFWENFU1NJVkVfTUVTU0FHRV9TSVpFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VYQ0VTU0lWRV9NRVNTQUdFX1NJWkV9LAorICAjZWxzZQorICAgIHsiRVhDRVNTSVZFX01FU1NBR0VfU0laRSIsIEVSUl9MSUJfU1NMLCAxNTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VYVFJBX0RBVEFfSU5fTUVTU0FHRQorICAgIHsiRVhUUkFfREFUQV9JTl9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VYVFJBX0RBVEFfSU5fTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJFWFRSQV9EQVRBX0lOX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMTUzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTCisgICAgeyJHT1RfQV9GSU5fQkVGT1JFX0FfQ0NTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0dPVF9BX0ZJTl9CRUZPUkVfQV9DQ1N9LAorICAjZWxzZQorICAgIHsiR09UX0FfRklOX0JFRk9SRV9BX0NDUyIsIEVSUl9MSUJfU1NMLCAxNTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1QKKyAgICB7IkhUVFBTX1BST1hZX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfSFRUUFNfUFJPWFlfUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJIVFRQU19QUk9YWV9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIDE1NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSFRUUF9SRVFVRVNUCisgICAgeyJIVFRQX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfSFRUUF9SRVFVRVNUfSwKKyAgI2Vsc2UKKyAgICB7IkhUVFBfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxNTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lMTEVHQUxfUEFERElORworICAgIHsiSUxMRUdBTF9QQURESU5HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lMTEVHQUxfUEFERElOR30sCisgICNlbHNlCisgICAgeyJJTExFR0FMX1BBRERJTkciLCBFUlJfTElCX1NTTCwgMjgzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTkNPTlNJU1RFTlRfQ09NUFJFU1NJT04KKyAgICB7IklOQ09OU0lTVEVOVF9DT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTkNPTlNJU1RFTlRfQ09NUFJFU1NJT059LAorICAjZWxzZQorICAgIHsiSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OIiwgRVJSX0xJQl9TU0wsIDM0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RICisgICAgeyJJTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfQ0hBTExFTkdFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxNTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfQ09NTUFORAorICAgIHsiSU5WQUxJRF9DT01NQU5EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ09NTUFORH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0NPTU1BTkQiLCBFUlJfTElCX1NTTCwgMjgwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX0NPTVBSRVNTSU9OX0FMR09SSVRITQorICAgIHsiSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE19LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgMzQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX1BVUlBPU0UKKyAgICB7IklOVkFMSURfUFVSUE9TRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1BVUlBPU0V9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9QVVJQT1NFIiwgRVJSX0xJQl9TU0wsIDI3OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9TVEFUVVNfUkVTUE9OU0UKKyAgICB7IklOVkFMSURfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIDMyOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9USUNLRVRfS0VZU19MRU5HVEgKKyAgICB7IklOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMyNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9UUlVTVAorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1RSVVNUfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1NTTCwgMjc5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LRVlfQVJHX1RPT19MT05HCisgICAgeyJLRVlfQVJHX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tFWV9BUkdfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiS0VZX0FSR19UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyODR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjUKKyAgICB7IktSQjUiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNX0sCisgICNlbHNlCisgICAgeyJLUkI1IiwgRVJSX0xJQl9TU0wsIDI4NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX0NDX1BSSU5DCisgICAgeyJLUkI1X0NfQ0NfUFJJTkMiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9DX0NDX1BSSU5DfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19DQ19QUklOQyIsIEVSUl9MSUJfU1NMLCAyODZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19HRVRfQ1JFRAorICAgIHsiS1JCNV9DX0dFVF9DUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19HRVRfQ1JFRH0sCisgICNlbHNlCisgICAgeyJLUkI1X0NfR0VUX0NSRUQiLCBFUlJfTElCX1NTTCwgMjg3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfSU5JVAorICAgIHsiS1JCNV9DX0lOSVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9DX0lOSVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX0lOSVQiLCBFUlJfTElCX1NTTCwgMjg4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfTUtfUkVRCisgICAgeyJLUkI1X0NfTUtfUkVRIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19NS19SRVF9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX01LX1JFUSIsIEVSUl9MSUJfU1NMLCAyODl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19CQURfVElDS0VUCisgICAgeyJLUkI1X1NfQkFEX1RJQ0tFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfQkFEX1RJQ0tFVH0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfQkFEX1RJQ0tFVCIsIEVSUl9MSUJfU1NMLCAyOTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19JTklUCisgICAgeyJLUkI1X1NfSU5JVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfSU5JVH0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfSU5JVCIsIEVSUl9MSUJfU1NMLCAyOTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19SRF9SRVEKKyAgICB7IktSQjVfU19SRF9SRVEiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1JEX1JFUX0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfUkRfUkVRIiwgRVJSX0xJQl9TU0wsIDI5Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9TX1RLVF9FWFBJUkVECisgICAgeyJLUkI1X1NfVEtUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1RLVF9FWFBJUkVEfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfU19US1RfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCAyOTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19US1RfTllWCisgICAgeyJLUkI1X1NfVEtUX05ZViIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfVEtUX05ZVn0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfVEtUX05ZViIsIEVSUl9MSUJfU1NMLCAyOTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19US1RfU0tFVworICAgIHsiS1JCNV9TX1RLVF9TS0VXIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19US1RfU0tFV30sCisgICNlbHNlCisgICAgeyJLUkI1X1NfVEtUX1NLRVciLCBFUlJfTElCX1NTTCwgMjk1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkxFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDE1OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTEVOR1RIX1RPT19TSE9SVAorICAgIHsiTEVOR1RIX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MRU5HVEhfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IkxFTkdUSF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgMTYwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9MSUJSQVJZX0JVRworICAgIHsiTElCUkFSWV9CVUciLCBFUlJfTElCX1NTTCwgU1NMX1JfTElCUkFSWV9CVUd9LAorICAjZWxzZQorICAgIHsiTElCUkFSWV9CVUciLCBFUlJfTElCX1NTTCwgMjc0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9MSUJSQVJZX0hBU19OT19DSVBIRVJTCisgICAgeyJMSUJSQVJZX0hBU19OT19DSVBIRVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xJQlJBUllfSEFTX05PX0NJUEhFUlN9LAorICAjZWxzZQorICAgIHsiTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCAxNjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01FU1NBR0VfVE9PX0xPTkcKKyAgICB7Ik1FU1NBR0VfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfTUVTU0FHRV9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJNRVNTQUdFX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI5Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9EU0FfQ0VSVAorICAgIHsiTUlTU0lOR19ESF9EU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RIX0RTQV9DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfRFNBX0NFUlQiLCBFUlJfTElCX1NTTCwgMTYyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RIX0tFWQorICAgIHsiTUlTU0lOR19ESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19ESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTYzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RIX1JTQV9DRVJUCisgICAgeyJNSVNTSU5HX0RIX1JTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfREhfUlNBX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19ESF9SU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVAorICAgIHsiTUlTU0lOR19EU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgMTY1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZCisgICAgeyJNSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCAxNjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfRVhQT1JUX1RNUF9SU0FfS0VZCisgICAgeyJNSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCAxNjd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfUlNBX0NFUlRJRklDQVRFCisgICAgeyJNSVNTSU5HX1JTQV9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1JTQV9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1JTQV9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAxNjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVAorICAgIHsiTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgMTY5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE3MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19UTVBfREhfS0VZCisgICAgeyJNSVNTSU5HX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCAxNzF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX0VDREhfS0VZCisgICAgeyJNSVNTSU5HX1RNUF9FQ0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9FQ0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9FQ0RIX0tFWSIsIEVSUl9MSUJfU1NMLCAzMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9LRVkKKyAgICB7Ik1JU1NJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfUlNBX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIDE3Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19UTVBfUlNBX1BLRVkKKyAgICB7Ik1JU1NJTkdfVE1QX1JTQV9QS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9QS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfVE1QX1JTQV9QS0VZIiwgRVJSX0xJQl9TU0wsIDE3M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19WRVJJRllfTUVTU0FHRQorICAgIHsiTUlTU0lOR19WRVJJRllfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1ZFUklGWV9NRVNTQUdFfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfVkVSSUZZX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMTc0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT05fU1NMVjJfSU5JVElBTF9QQUNLRVQKKyAgICB7Ik5PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT05fU1NMVjJfSU5JVElBTF9QQUNLRVR9LAorICAjZWxzZQorICAgIHsiTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUIiwgRVJSX0xJQl9TU0wsIDE3NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVECisgICAgeyJOT19DRVJUSUZJQ0FURVNfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFU19SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAxNzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFX0FTU0lHTkVECisgICAgeyJOT19DRVJUSUZJQ0FURV9BU1NJR05FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9BU1NJR05FRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURV9BU1NJR05FRCIsIEVSUl9MSUJfU1NMLCAxNzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFX1JFVFVSTkVECisgICAgeyJOT19DRVJUSUZJQ0FURV9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURV9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAxNzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFX1NFVAorICAgIHsiTk9fQ0VSVElGSUNBVEVfU0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFX1NFVH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURV9TRVQiLCBFUlJfTElCX1NTTCwgMTc5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9TUEVDSUZJRUQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9TUEVDSUZJRUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0lQSEVSU19BVkFJTEFCTEUKKyAgICB7Ik5PX0NJUEhFUlNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUlNfQVZBSUxBQkxFfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NJUEhFUlNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIDE4MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0lQSEVSU19QQVNTRUQKKyAgICB7Ik5PX0NJUEhFUlNfUEFTU0VEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUlNfUEFTU0VEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NJUEhFUlNfUEFTU0VEIiwgRVJSX0xJQl9TU0wsIDE4Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0lQSEVSU19TUEVDSUZJRUQKKyAgICB7Ik5PX0NJUEhFUlNfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUlNfU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NJUEhFUlNfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0lQSEVSX0xJU1QKKyAgICB7Ik5PX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUl9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIDE4NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0lQSEVSX01BVENICisgICAgeyJOT19DSVBIRVJfTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0lQSEVSX01BVENIfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NJUEhFUl9NQVRDSCIsIEVSUl9MSUJfU1NMLCAxODV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NMSUVOVF9DRVJUX01FVEhPRAorICAgIHsiTk9fQ0xJRU5UX0NFUlRfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NMSUVOVF9DRVJUX01FVEhPRH0sCisgICNlbHNlCisgICAgeyJOT19DTElFTlRfQ0VSVF9NRVRIT0QiLCBFUlJfTElCX1NTTCwgMzMxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DTElFTlRfQ0VSVF9SRUNFSVZFRAorICAgIHsiTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUQiLCBFUlJfTElCX1NTTCwgMTg2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DT01QUkVTU0lPTl9TUEVDSUZJRUQKKyAgICB7Ik5PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DT01QUkVTU0lPTl9TUEVDSUZJRUR9LAorICAjZWxzZQorICAgIHsiTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fR09TVF9DRVJUSUZJQ0FURV9TRU5UX0JZX1BFRVIKKyAgICB7Ik5PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSIiwgRVJSX0xJQl9TU0wsIDMzMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRAorICAgIHsiTk9fTUVUSE9EX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19NRVRIT0RfU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX01FVEhPRF9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgMTg4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUklWQVRFS0VZCisgICAgeyJOT19QUklWQVRFS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BSSVZBVEVLRVl9LAorICAjZWxzZQorICAgIHsiTk9fUFJJVkFURUtFWSIsIEVSUl9MSUJfU1NMLCAxODl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BSSVZBVEVfS0VZX0FTU0lHTkVECisgICAgeyJOT19QUklWQVRFX0tFWV9BU1NJR05FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRH0sCisgICNlbHNlCisgICAgeyJOT19QUklWQVRFX0tFWV9BU1NJR05FRCIsIEVSUl9MSUJfU1NMLCAxOTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BST1RPQ09MU19BVkFJTEFCTEUKKyAgICB7Ik5PX1BST1RPQ09MU19BVkFJTEFCTEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFJPVE9DT0xTX0FWQUlMQUJMRX0sCisgICNlbHNlCisgICAgeyJOT19QUk9UT0NPTFNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIDE5MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFVCTElDS0VZCisgICAgeyJOT19QVUJMSUNLRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFVCTElDS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BVQkxJQ0tFWSIsIEVSUl9MSUJfU1NMLCAxOTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1JFTkVHT1RJQVRJT04KKyAgICB7Ik5PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUkVORUdPVElBVElPTn0sCisgICNlbHNlCisgICAgeyJOT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIDMzOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUkVRVUlSRURfRElHRVNUCisgICAgeyJOT19SRVFVSVJFRF9ESUdFU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUkVRVUlSRURfRElHRVNUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1JFUVVJUkVEX0RJR0VTVCIsIEVSUl9MSUJfU1NMLCAzMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1NIQVJFRF9DSVBIRVIKKyAgICB7Ik5PX1NIQVJFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fU0hBUkVEX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJOT19TSEFSRURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDE5M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fVkVSSUZZX0NBTExCQUNLCisgICAgeyJOT19WRVJJRllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fVkVSSUZZX0NBTExCQUNLfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1ZFUklGWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCAxOTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05VTExfU1NMX0NUWAorICAgIHsiTlVMTF9TU0xfQ1RYIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05VTExfU1NMX0NUWH0sCisgICNlbHNlCisgICAgeyJOVUxMX1NTTF9DVFgiLCBFUlJfTElCX1NTTCwgMTk1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OVUxMX1NTTF9NRVRIT0RfUEFTU0VECisgICAgeyJOVUxMX1NTTF9NRVRIT0RfUEFTU0VEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05VTExfU1NMX01FVEhPRF9QQVNTRUR9LAorICAjZWxzZQorICAgIHsiTlVMTF9TU0xfTUVUSE9EX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCAxOTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUQKKyAgICB7Ik9MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJPTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDE5N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRAorICAgIHsiT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik9MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMzQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PTkxZX1RMU19BTExPV0VEX0lOX0ZJUFNfTU9ERQorICAgIHsiT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREUiLCBFUlJfTElCX1NTTCwgU1NMX1JfT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREV9LAorICAjZWxzZQorICAgIHsiT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREUiLCBFUlJfTElCX1NTTCwgMjk3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HCisgICAgeyJPUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAzMjd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BBQ0tFVF9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IlBBQ0tFVF9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUEFDS0VUX0xFTkdUSF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJQQUNLRVRfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE5OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEFSU0VfVExTRVhUCisgICAgeyJQQVJTRV9UTFNFWFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEFSU0VfVExTRVhUfSwKKyAgI2Vsc2UKKyAgICB7IlBBUlNFX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCAyMjd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BBVEhfVE9PX0xPTkcKKyAgICB7IlBBVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUEFUSF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJQQVRIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI3MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFCisgICAgeyJQRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAxOTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1IKKyAgICB7IlBFRVJfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDIwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9FUlJPUl9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMjAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFCisgICAgeyJQRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAyMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfTk9fQ0lQSEVSCisgICAgeyJQRUVSX0VSUk9SX05PX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX05PX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX05PX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAyMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRQorICAgIHsiUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRX0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QUkVfTUFDX0xFTkdUSF9UT09fTE9ORworICAgIHsiUFJFX01BQ19MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUFJFX01BQ19MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUFJFX01BQ19MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjA1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlMKKyAgICB7IlBST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlN9LAorICAjZWxzZQorICAgIHsiUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TIiwgRVJSX0xJQl9TU0wsIDIwNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJPVE9DT0xfSVNfU0hVVERPV04KKyAgICB7IlBST1RPQ09MX0lTX1NIVVRET1dOIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BST1RPQ09MX0lTX1NIVVRET1dOfSwKKyAgI2Vsc2UKKyAgICB7IlBST1RPQ09MX0lTX1NIVVRET1dOIiwgRVJSX0xJQl9TU0wsIDIwN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORAorICAgIHsiUFNLX0lERU5USVRZX05PVF9GT1VORCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QU0tfSURFTlRJVFlfTk9UX0ZPVU5EfSwKKyAgI2Vsc2UKKyAgICB7IlBTS19JREVOVElUWV9OT1RfRk9VTkQiLCBFUlJfTElCX1NTTCwgMjIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCCisgICAgeyJQU0tfTk9fQ0xJRU5UX0NCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BTS19OT19DTElFTlRfQ0J9LAorICAjZWxzZQorICAgIHsiUFNLX05PX0NMSUVOVF9DQiIsIEVSUl9MSUJfU1NMLCAyMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BTS19OT19TRVJWRVJfQ0IKKyAgICB7IlBTS19OT19TRVJWRVJfQ0IiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFNLX05PX1NFUlZFUl9DQn0sCisgICNlbHNlCisgICAgeyJQU0tfTk9fU0VSVkVSX0NCIiwgRVJSX0xJQl9TU0wsIDIyNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SCisgICAgeyJQVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfRU5DUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCAyMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BVQkxJQ19LRVlfSVNfTk9UX1JTQQorICAgIHsiUFVCTElDX0tFWV9JU19OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BVQkxJQ19LRVlfSVNfTk9UX1JTQX0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0lTX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgMjA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QVUJMSUNfS0VZX05PVF9SU0EKKyAgICB7IlBVQkxJQ19LRVlfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QVUJMSUNfS0VZX05PVF9SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIDIxMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9CSU9fTk9UX1NFVAorICAgIHsiUkVBRF9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUFEX0JJT19OT1RfU0VUfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMjExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUFEX1RJTUVPVVRfRVhQSVJFRAorICAgIHsiUkVBRF9USU1FT1VUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVBRF9USU1FT1VUX0VYUElSRUR9LAorICAjZWxzZQorICAgIHsiUkVBRF9USU1FT1VUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgMzEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUFEX1dST05HX1BBQ0tFVF9UWVBFCisgICAgeyJSRUFEX1dST05HX1BBQ0tFVF9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQURfV1JPTkdfUEFDS0VUX1RZUEV9LAorICAjZWxzZQorICAgIHsiUkVBRF9XUk9OR19QQUNLRVRfVFlQRSIsIEVSUl9MSUJfU1NMLCAyMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQ09SRF9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IlJFQ09SRF9MRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVDT1JEX0xFTkdUSF9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJSRUNPUkRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDIxM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVDT1JEX1RPT19MQVJHRQorICAgIHsiUkVDT1JEX1RPT19MQVJHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUNPUkRfVE9PX0xBUkdFfSwKKyAgI2Vsc2UKKyAgICB7IlJFQ09SRF9UT09fTEFSR0UiLCBFUlJfTElCX1NTTCwgMjE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUNPUkRfVE9PX1NNQUxMCisgICAgeyJSRUNPUkRfVE9PX1NNQUxMIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQ09SRF9UT09fU01BTEx9LAorICAjZWxzZQorICAgIHsiUkVDT1JEX1RPT19TTUFMTCIsIEVSUl9MSUJfU1NMLCAyOTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFTkVHT1RJQVRFX0VYVF9UT09fTE9ORworICAgIHsiUkVORUdPVElBVEVfRVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFTkVHT1RJQVRFX0VYVF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJSRU5FR09USUFURV9FWFRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMzM1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRU5FR09USUFUSU9OX0VOQ09ESU5HX0VSUgorICAgIHsiUkVORUdPVElBVElPTl9FTkNPRElOR19FUlIiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVORUdPVElBVElPTl9FTkNPRElOR19FUlJ9LAorICAjZWxzZQorICAgIHsiUkVORUdPVElBVElPTl9FTkNPRElOR19FUlIiLCBFUlJfTElCX1NTTCwgMzM2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENICisgICAgeyJSRU5FR09USUFUSU9OX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFTkVHT1RJQVRJT05fTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiUkVORUdPVElBVElPTl9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAzMzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFUVVJUkVEX0NJUEhFUl9NSVNTSU5HCisgICAgeyJSRVFVSVJFRF9DSVBIRVJfTUlTU0lORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVFVSVJFRF9DSVBIRVJfTUlTU0lOR30sCisgICNlbHNlCisgICAgeyJSRVFVSVJFRF9DSVBIRVJfTUlTU0lORyIsIEVSUl9MSUJfU1NMLCAyMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORworICAgIHsiUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lOR30sCisgICNlbHNlCisgICAgeyJSRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkciLCBFUlJfTElCX1NTTCwgMzQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVVTRV9DRVJUX0xFTkdUSF9OT1RfWkVSTworICAgIHsiUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk99LAorICAjZWxzZQorICAgIHsiUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgMjE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk8KKyAgICB7IlJFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk99LAorICAjZWxzZQorICAgIHsiUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIDIxN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0lQSEVSX0xJU1RfTk9UX1pFUk8KKyAgICB7IlJFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIDIxOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU0NTVl9SRUNFSVZFRF9XSEVOX1JFTkVHT1RJQVRJTkcKKyAgICB7IlNDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HfSwKKyAgI2Vsc2UKKyAgICB7IlNDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HIiwgRVJSX0xJQl9TU0wsIDM0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU0VSVkVSSEVMTE9fVExTRVhUCisgICAgeyJTRVJWRVJIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0VSVkVSSEVMTE9fVExTRVhUfSwKKyAgI2Vsc2UKKyAgICB7IlNFUlZFUkhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCAyNzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NFU1NJT05fSURfQ09OVEVYVF9VTklOSVRJQUxJWkVECisgICAgeyJTRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRH0sCisgICNlbHNlCisgICAgeyJTRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCAyNzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NIT1JUX1JFQUQKKyAgICB7IlNIT1JUX1JFQUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0hPUlRfUkVBRH0sCisgICNlbHNlCisgICAgeyJTSE9SVF9SRUFEIiwgRVJSX0xJQl9TU0wsIDIxOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURQorICAgIHsiU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMjIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFCisgICAgeyJTU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0V9LAorICAjZWxzZQorICAgIHsiU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRSIsIEVSUl9MSUJfU1NMLCAyMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9ORworICAgIHsiU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJTU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjk5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVQKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVR9LAorICAjZWxzZQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUIiwgRVJSX0xJQl9TU0wsIDMyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRSIsIEVSUl9MSUJfU1NMLCAzMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRV9UWVBFCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRX0sCisgICNlbHNlCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfU0VTU0lPTl9JRF9UT09fTE9ORworICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfU0VTU0lPTl9JRF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJTU0wzX1NFU1NJT05fSURfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMzAwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUCisgICAgeyJTU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCAyMjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURQorICAgIHsiU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTA0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfQkFEX1JFQ09SRF9NQUMKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIDEwMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUQKKyAgICB7IlNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRH0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIDEwNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUQKKyAgICB7IlNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRH0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEIiwgRVJSX0xJQl9TU0wsIDEwNDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV04KKyAgICB7IlNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV04iLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTn0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOIiwgRVJSX0xJQl9TU0wsIDEwNDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRQorICAgIHsiU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMTAzMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfSEFORFNIQUtFX0ZBSUxVUkUKKyAgICB7IlNTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDEwNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0lMTEVHQUxfUEFSQU1FVEVSCisgICAgeyJTU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUn0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUiIsIEVSUl9MSUJfU1NMLCAxMDQ3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9OT19DRVJUSUZJQ0FURQorICAgIHsiU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTA0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFCisgICAgeyJTU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCAxMDEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURQorICAgIHsiU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTA0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTgorICAgIHsiU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjI4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfSEFORFNIQUtFX0ZBSUxVUkUKKyAgICB7IlNTTF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfSEFORFNIQUtFX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiU1NMX0hBTkRTSEFLRV9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDIyOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX0xJQlJBUllfSEFTX05PX0NJUEhFUlMKKyAgICB7IlNTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTIiwgRVJSX0xJQl9TU0wsIDIzMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVECisgICAgeyJTU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAzMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTkZMSUNUCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05GTElDVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05GTElDVH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05GTElDVCIsIEVSUl9MSUJfU1NMLCAzMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkcKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI3M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX1NFU1NJT05fSURfSEFTX0JBRF9MRU5HVEgKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMwM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UCisgICAgeyJTU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCAyMzF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUQKKyAgICB7IlRMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRH0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEIiwgRVJSX0xJQl9TU0wsIDEwNDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUgorICAgIHsiVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9ERUNPREVfRVJST1IiLCBFUlJfTElCX1NTTCwgMTA1MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfREVDUllQVElPTl9GQUlMRUQKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDEwMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwNTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTgorICAgIHsiVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT04iLCBFUlJfTElCX1NTTCwgMTA2MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZCisgICAgeyJUTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFkiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWSIsIEVSUl9MSUJfU1NMLCAxMDcxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9JTlRFUk5BTF9FUlJPUgorICAgIHsiVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1IiLCBFUlJfTElCX1NTTCwgMTA4MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTgorICAgIHsiVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgMTEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTgorICAgIHsiVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMTA3MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XCisgICAgeyJUTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1ciLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPVyIsIEVSUl9MSUJfU1NMLCAxMDIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9VTktOT1dOX0NBCisgICAgeyJUTFNWMV9BTEVSVF9VTktOT1dOX0NBIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1VOS05PV05fQ0F9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfVU5LTk9XTl9DQSIsIEVSUl9MSUJfU1NMLCAxMDQ4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9VU0VSX0NBTkNFTExFRAorICAgIHsiVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUR9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUQiLCBFUlJfTElCX1NTTCwgMTA5MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQkFEX0NFUlRJRklDQVRFX0hBU0hfVkFMVUUKKyAgICB7IlRMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFIiwgRVJSX0xJQl9TU0wsIDExMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0UKKyAgICB7IlRMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIDExMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRQorICAgIHsiVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUiLCBFUlJfTElCX1NTTCwgMTExMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfVU5SRUNPR05JWkVEX05BTUUKKyAgICB7IlRMU1YxX1VOUkVDT0dOSVpFRF9OQU1FIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX1VOUkVDT0dOSVpFRF9OQU1FfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX1VOUkVDT0dOSVpFRF9OQU1FIiwgRVJSX0xJQl9TU0wsIDExMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTgorICAgIHsiVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04iLCBFUlJfTElCX1NTTCwgMTExMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSCisgICAgeyJUTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAyMzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVAorICAgIHsiVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVH0sCisgICNlbHNlCisgICAgeyJUTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QiLCBFUlJfTElCX1NTTCwgMTU3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUCisgICAgeyJUTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1R9LAorICAjZWxzZQorICAgIHsiVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVCIsIEVSUl9MSUJfU1NMLCAyMzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9ORworICAgIHsiVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9OR30sCisgICNlbHNlCisgICAgeyJUTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgMjM0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSCisgICAgeyJUUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAyMzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfREhfQ0VSVFMKKyAgICB7IlVOQUJMRV9UT19ERUNPREVfREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIDIzNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCAzMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVkKKyAgICB7IlVOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWX0sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZIiwgRVJSX0xJQl9TU0wsIDIzN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSUworICAgIHsiVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgMjM4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlMKKyAgICB7IlVOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIDMxNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTCisgICAgeyJVTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCAyMzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0QKKyAgICB7IlVOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0QiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRH0sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9TU0xfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIDI0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0xPQURfU1NMMl9NRDVfUk9VVElORVMKKyAgICB7IlVOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIDI0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0xPQURfU1NMM19NRDVfUk9VVElORVMKKyAgICB7IlVOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIDI0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VORVhQRUNURURfTUVTU0FHRQorICAgIHsiVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VORVhQRUNURURfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJVTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMjQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkVYUEVDVEVEX1JFQ09SRAorICAgIHsiVU5FWFBFQ1RFRF9SRUNPUkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5FWFBFQ1RFRF9SRUNPUkR9LAorICAjZWxzZQorICAgIHsiVU5FWFBFQ1RFRF9SRUNPUkQiLCBFUlJfTElCX1NTTCwgMjQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTklOSVRJQUxJWkVECisgICAgeyJVTklOSVRJQUxJWkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOSU5JVElBTElaRUR9LAorICAjZWxzZQorICAgIHsiVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCAyNzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQUxFUlRfVFlQRQorICAgIHsiVU5LTk9XTl9BTEVSVF9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fQUxFUlRfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0FMRVJUX1RZUEUiLCBFUlJfTElCX1NTTCwgMjQ2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0NFUlRJRklDQVRFX1RZUEUKKyAgICB7IlVOS05PV05fQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0NFUlRJRklDQVRFX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9DSVBIRVJfUkVUVVJORUQKKyAgICB7IlVOS05PV05fQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fQ0lQSEVSX1JFVFVSTkVEfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDI0OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9DSVBIRVJfVFlQRQorICAgIHsiVU5LTk9XTl9DSVBIRVJfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0NJUEhFUl9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQ0lQSEVSX1RZUEUiLCBFUlJfTElCX1NTTCwgMjQ5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFCisgICAgeyJVTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fUEtFWV9UWVBFCisgICAgeyJVTktOT1dOX1BLRVlfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1BLRVlfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1BLRVlfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fUFJPVE9DT0wKKyAgICB7IlVOS05PV05fUFJPVE9DT0wiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9QUk9UT0NPTH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIDI1Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRQorICAgIHsiVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1NTTF9WRVJTSU9OCisgICAgeyJVTktOT1dOX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fU1NMX1ZFUlNJT059LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyNTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fU1RBVEUKKyAgICB7IlVOS05PV05fU1RBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9TVEFURX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1NUQVRFIiwgRVJSX0xJQl9TU0wsIDI1NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVECisgICAgeyJVTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlVOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRCIsIEVSUl9MSUJfU1NMLCAzMzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0NJUEhFUgorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjU2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0KKyAgICB7IlVOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE19LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIDI1N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfRElHRVNUX1RZUEUKKyAgICB7IlVOU1VQUE9SVEVEX0RJR0VTVF9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX0RJR0VTVF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0RJR0VTVF9UWVBFIiwgRVJSX0xJQl9TU0wsIDMyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfRUxMSVBUSUNfQ1VSVkUKKyAgICB7IlVOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFIiwgRVJSX0xJQl9TU0wsIDMxNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfUFJPVE9DT0wKKyAgICB7IlVOU1VQUE9SVEVEX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX1BST1RPQ09MfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIDI1OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfU1NMX1ZFUlNJT04KKyAgICB7IlVOU1VQUE9SVEVEX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDI1OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfU1RBVFVTX1RZUEUKKyAgICB7IlVOU1VQUE9SVEVEX1NUQVRVU19UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX1NUQVRVU19UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX1NUQVRVU19UWVBFIiwgRVJSX0xJQl9TU0wsIDMyOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JJVEVfQklPX05PVF9TRVQKKyAgICB7IldSSVRFX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dSSVRFX0JJT19OT1RfU0VUfSwKKyAgI2Vsc2UKKyAgICB7IldSSVRFX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDI2MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfQ0lQSEVSX1JFVFVSTkVECisgICAgeyJXUk9OR19DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfQ0lQSEVSX1JFVFVSTkVEfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAyNjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX01FU1NBR0VfVFlQRQorICAgIHsiV1JPTkdfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX01FU1NBR0VfVFlQRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjYyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFMKKyAgICB7IldST05HX05VTUJFUl9PRl9LRVlfQklUUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFN9LAorICAjZWxzZQorICAgIHsiV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTIiwgRVJSX0xJQl9TU0wsIDI2M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX0xFTkdUSAorICAgIHsiV1JPTkdfU0lHTkFUVVJFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19TSUdOQVRVUkVfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NJR05BVFVSRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMjY0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19TSUdOQVRVUkVfU0laRQorICAgIHsiV1JPTkdfU0lHTkFUVVJFX1NJWkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX1NJWkV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfU0lHTkFUVVJFX1NJWkUiLCBFUlJfTElCX1NTTCwgMjY1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19TU0xfVkVSU0lPTgorICAgIHsiV1JPTkdfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfU1NMX1ZFUlNJT059LAorICAjZWxzZQorICAgIHsiV1JPTkdfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjY2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19WRVJTSU9OX05VTUJFUgorICAgIHsiV1JPTkdfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiV1JPTkdfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1NTTCwgMjY3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9YNTA5X0xJQgorICAgIHsiWDUwOV9MSUIiLCBFUlJfTElCX1NTTCwgU1NMX1JfWDUwOV9MSUJ9LAorICAjZWxzZQorICAgIHsiWDUwOV9MSUIiLCBFUlJfTElCX1NTTCwgMjY4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9YNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNUworICAgIHsiWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVMiLCBFUlJfTElCX1NTTCwgU1NMX1JfWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVN9LAorICAjZWxzZQorICAgIHsiWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVMiLCBFUlJfTElCX1NTTCwgMjY5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQkFEX1g1MDlfRklMRVRZUEUKKyAgICB7IkJBRF9YNTA5X0ZJTEVUWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQkFEX1g1MDlfRklMRVRZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX1g1MDlfRklMRVRZUEUiLCBFUlJfTElCX1g1MDksIDEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0JBU0U2NF9ERUNPREVfRVJST1IKKyAgICB7IkJBU0U2NF9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9CQVNFNjRfREVDT0RFX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkJBU0U2NF9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIDExOH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0NBTlRfQ0hFQ0tfREhfS0VZCisgICAgeyJDQU5UX0NIRUNLX0RIX0tFWSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0NBTlRfQ0hFQ0tfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7IkNBTlRfQ0hFQ0tfREhfS0VZIiwgRVJSX0xJQl9YNTA5LCAxMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9DRVJUX0FMUkVBRFlfSU5fSEFTSF9UQUJMRQorICAgIHsiQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9DRVJUX0FMUkVBRFlfSU5fSEFTSF9UQUJMRX0sCisgICNlbHNlCisgICAgeyJDRVJUX0FMUkVBRFlfSU5fSEFTSF9UQUJMRSIsIEVSUl9MSUJfWDUwOSwgMTAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfRVJSX0FTTjFfTElCCisgICAgeyJFUlJfQVNOMV9MSUIiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9FUlJfQVNOMV9MSUJ9LAorICAjZWxzZQorICAgIHsiRVJSX0FTTjFfTElCIiwgRVJSX0xJQl9YNTA5LCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9JTlZBTElEX0RJUkVDVE9SWQorICAgIHsiSU5WQUxJRF9ESVJFQ1RPUlkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9JTlZBTElEX0RJUkVDVE9SWX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0RJUkVDVE9SWSIsIEVSUl9MSUJfWDUwOSwgMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9GSUVMRF9OQU1FCisgICAgeyJJTlZBTElEX0ZJRUxEX05BTUUiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9JTlZBTElEX0ZJRUxEX05BTUV9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9GSUVMRF9OQU1FIiwgRVJSX0xJQl9YNTA5LCAxMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9JTlZBTElEX1RSVVNUCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9UUlVTVH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9YNTA5LCAxMjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9LRVlfVFlQRV9NSVNNQVRDSAorICAgIHsiS0VZX1RZUEVfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIFg1MDlfUl9LRVlfVFlQRV9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJLRVlfVFlQRV9NSVNNQVRDSCIsIEVSUl9MSUJfWDUwOSwgMTE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfS0VZX1ZBTFVFU19NSVNNQVRDSAorICAgIHsiS0VZX1ZBTFVFU19NSVNNQVRDSCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0tFWV9WQUxVRVNfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiS0VZX1ZBTFVFU19NSVNNQVRDSCIsIEVSUl9MSUJfWDUwOSwgMTE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfTE9BRElOR19DRVJUX0RJUgorICAgIHsiTE9BRElOR19DRVJUX0RJUiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0xPQURJTkdfQ0VSVF9ESVJ9LAorICAjZWxzZQorICAgIHsiTE9BRElOR19DRVJUX0RJUiIsIEVSUl9MSUJfWDUwOSwgMTAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfTE9BRElOR19ERUZBVUxUUworICAgIHsiTE9BRElOR19ERUZBVUxUUyIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0xPQURJTkdfREVGQVVMVFN9LAorICAjZWxzZQorICAgIHsiTE9BRElOR19ERUZBVUxUUyIsIEVSUl9MSUJfWDUwOSwgMTA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfTUVUSE9EX05PVF9TVVBQT1JURUQKKyAgICB7Ik1FVEhPRF9OT1RfU1VQUE9SVEVEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTUVUSE9EX05PVF9TVVBQT1JURUR9LAorICAjZWxzZQorICAgIHsiTUVUSE9EX05PVF9TVVBQT1JURUQiLCBFUlJfTElCX1g1MDksIDEyNH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX05PX0NFUlRfU0VUX0ZPUl9VU19UT19WRVJJRlkKKyAgICB7Ik5PX0NFUlRfU0VUX0ZPUl9VU19UT19WRVJJRlkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9OT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRfU0VUX0ZPUl9VU19UT19WRVJJRlkiLCBFUlJfTElCX1g1MDksIDEwNX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1BVQkxJQ19LRVlfREVDT0RFX0VSUk9SCisgICAgeyJQVUJMSUNfS0VZX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1BVQkxJQ19LRVlfREVDT0RFX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCAxMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9QVUJMSUNfS0VZX0VOQ09ERV9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9FTkNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9QVUJMSUNfS0VZX0VOQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0VOQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgMTI2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfU0hPVUxEX1JFVFJZCisgICAgeyJTSE9VTERfUkVUUlkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9TSE9VTERfUkVUUll9LAorICAjZWxzZQorICAgIHsiU0hPVUxEX1JFVFJZIiwgRVJSX0xJQl9YNTA5LCAxMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTkFCTEVfVE9fRklORF9QQVJBTUVURVJTX0lOX0NIQUlOCisgICAgeyJVTkFCTEVfVE9fRklORF9QQVJBTUVURVJTX0lOX0NIQUlOIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTn0sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9QQVJBTUVURVJTX0lOX0NIQUlOIiwgRVJSX0xJQl9YNTA5LCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVkKKyAgICB7IlVOQUJMRV9UT19HRVRfQ0VSVFNfUFVCTElDX0tFWSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOQUJMRV9UT19HRVRfQ0VSVFNfUFVCTElDX0tFWX0sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVkiLCBFUlJfTElCX1g1MDksIDEwOH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOS05PV05fS0VZX1RZUEUKKyAgICB7IlVOS05PV05fS0VZX1RZUEUiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX0tFWV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fS0VZX1RZUEUiLCBFUlJfTElCX1g1MDksIDExN30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOS05PV05fTklECisgICAgeyJVTktOT1dOX05JRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOS05PV05fTklEfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fTklEIiwgRVJSX0xJQl9YNTA5LCAxMDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX1BVUlBPU0VfSUQKKyAgICB7IlVOS05PV05fUFVSUE9TRV9JRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOS05PV05fUFVSUE9TRV9JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1BVUlBPU0VfSUQiLCBFUlJfTElCX1g1MDksIDEyMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOS05PV05fVFJVU1RfSUQKKyAgICB7IlVOS05PV05fVFJVU1RfSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX1RSVVNUX0lEfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fVFJVU1RfSUQiLCBFUlJfTElCX1g1MDksIDEyMH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOU1VQUE9SVEVEX0FMR09SSVRITQorICAgIHsiVU5TVVBQT1JURURfQUxHT1JJVEhNIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5TVVBQT1JURURfQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0FMR09SSVRITSIsIEVSUl9MSUJfWDUwOSwgMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfV1JPTkdfTE9PS1VQX1RZUEUKKyAgICB7IldST05HX0xPT0tVUF9UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfV1JPTkdfTE9PS1VQX1RZUEV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfTE9PS1VQX1RZUEUiLCBFUlJfTElCX1g1MDksIDExMn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1dST05HX1RZUEUKKyAgICB7IldST05HX1RZUEUiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9XUk9OR19UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1RZUEUiLCBFUlJfTElCX1g1MDksIDEyMn0sCisgICNlbmRpZgorICAgIHsgTlVMTCB9Cit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBlZGJlOWI5Li4wY2QwNTEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtNTgsNiArNTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGZsb2F0IHg7IH0gc3RfZmxvYXQ7CiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgZG91YmxlIHg7IH0gc3RfZG91YmxlOwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IHZvaWQgKng7IH0gc3Rfdm9pZF9wOwordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IHNpemVfdCB4OyB9IHN0X3NpemVfdDsKIAogI2RlZmluZSBTSE9SVF9BTElHTiAoc2l6ZW9mKHN0X3Nob3J0KSAtIHNpemVvZihzaG9ydCkpCiAjZGVmaW5lIElOVF9BTElHTiAoc2l6ZW9mKHN0X2ludCkgLSBzaXplb2YoaW50KSkKQEAgLTY1LDYgKzY2LDcgQEAKICNkZWZpbmUgRkxPQVRfQUxJR04gKHNpemVvZihzdF9mbG9hdCkgLSBzaXplb2YoZmxvYXQpKQogI2RlZmluZSBET1VCTEVfQUxJR04gKHNpemVvZihzdF9kb3VibGUpIC0gc2l6ZW9mKGRvdWJsZSkpCiAjZGVmaW5lIFZPSURfUF9BTElHTiAoc2l6ZW9mKHN0X3ZvaWRfcCkgLSBzaXplb2Yodm9pZCAqKSkKKyNkZWZpbmUgU0laRV9UX0FMSUdOIChzaXplb2Yoc3Rfc2l6ZV90KSAtIHNpemVvZihzaXplX3QpKQogCiAvKiBXZSBjYW4ndCBzdXBwb3J0IHEgYW5kIFEgaW4gbmF0aXZlIG1vZGUgdW5sZXNzIHRoZSBjb21waWxlciBkb2VzOwogICAgaW4gc3RkIG1vZGUsIHRoZXkncmUgOCBieXRlcyBvbiBhbGwgcGxhdGZvcm1zLiAqLwpAQCAtMjEzLDYgKzIxNSw1MiBAQAogCiAjZW5kaWYKIAorLyogU2FtZSwgYnV0IGhhbmRsaW5nIFB5X3NzaXplX3QgKi8KKworc3RhdGljIGludAorZ2V0X3NzaXplX3QoUHlPYmplY3QgKnYsIFB5X3NzaXplX3QgKnApCit7CisgICAgUHlfc3NpemVfdCB4OworCisgICAgdiA9IGdldF9weWxvbmcodik7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHYpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoeCA9PSAoUHlfc3NpemVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAqcCA9IHg7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFNhbWUsIGJ1dCBoYW5kbGluZyBzaXplX3QgKi8KKworc3RhdGljIGludAorZ2V0X3NpemVfdChQeU9iamVjdCAqdiwgc2l6ZV90ICpwKQoreworICAgIHNpemVfdCB4OworCisgICAgdiA9IGdldF9weWxvbmcodik7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOworICAgIHggPSBQeUxvbmdfQXNTaXplX3Qodik7CisgICAgUHlfREVDUkVGKHYpOworICAgIGlmICh4ID09IChzaXplX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgKnAgPSB4OworICAgIHJldHVybiAwOworfQorCiAKICNkZWZpbmUgUkFOR0VfRVJST1IoeCwgZiwgZmxhZywgbWFzaykgcmV0dXJuIF9yYW5nZV9lcnJvcihmLCBmbGFnKQogCkBAIC0zNjksNiArNDE3LDIzIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHgpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbnVfc3NpemVfdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgUHlfc3NpemVfdCB4OworICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCh4KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK251X3NpemVfdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgc2l6ZV90IHg7CisgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3QoeCk7Cit9CisKKwogLyogTmF0aXZlIG1vZGUgZG9lc24ndCBzdXBwb3J0IHEgb3IgUSB1bmxlc3MgdGhlIHBsYXRmb3JtIEMgc3VwcG9ydHMKICAgIGxvbmcgbG9uZyAob3IsIG9uIFdpbmRvd3MsIF9faW50NjQpLiAqLwogCkBAIC01NTgsNiArNjIzLDI2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK25wX3NzaXplX3QoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICBQeV9zc2l6ZV90IHg7CisgICAgaWYgKGdldF9zc2l6ZV90KHYsICZ4KSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitucF9zaXplX3QoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICBzaXplX3QgeDsKKyAgICBpZiAoZ2V0X3NpemVfdCh2LCAmeCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gMDsKK30KKwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAKIHN0YXRpYyBpbnQKQEAgLTY1MSw2ICs3MzYsOCBAQAogICAgIHsnSScsICAgICAgIHNpemVvZihpbnQpLCAgICBJTlRfQUxJR04sICAgICAgbnVfdWludCwgICAgICAgIG5wX3VpbnR9LAogICAgIHsnbCcsICAgICAgIHNpemVvZihsb25nKSwgICBMT05HX0FMSUdOLCAgICAgbnVfbG9uZywgICAgICAgIG5wX2xvbmd9LAogICAgIHsnTCcsICAgICAgIHNpemVvZihsb25nKSwgICBMT05HX0FMSUdOLCAgICAgbnVfdWxvbmcsICAgICAgIG5wX3Vsb25nfSwKKyAgICB7J24nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NzaXplX3QsICAgICBucF9zc2l6ZV90fSwKKyAgICB7J04nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NpemVfdCwgICAgICBucF9zaXplX3R9LAogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeydxJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKICAgICB7J1EnLCAgICAgICBzaXplb2YoUFlfTE9OR19MT05HKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKQEAgLTE5NzQsNyArMjA2MSw4IEBACiAgIGw6bG9uZzsgTDp1bnNpZ25lZCBsb25nOyBmOmZsb2F0OyBkOmRvdWJsZS5cblwKIFNwZWNpYWwgY2FzZXMgKHByZWNlZGluZyBkZWNpbWFsIGNvdW50IGluZGljYXRlcyBsZW5ndGgpOlxuXAogICBzOnN0cmluZyAoYXJyYXkgb2YgY2hhcik7IHA6IHBhc2NhbCBzdHJpbmcgKHdpdGggY291bnQgYnl0ZSkuXG5cCi1TcGVjaWFsIGNhc2UgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXAorU3BlY2lhbCBjYXNlcyAob25seSBhdmFpbGFibGUgaW4gbmF0aXZlIGZvcm1hdCk6XG5cCisgIG46c3NpemVfdDsgTjpzaXplX3Q7XG5cCiAgIFA6YW4gaW50ZWdlciB0eXBlIHRoYXQgaXMgd2lkZSBlbm91Z2ggdG8gaG9sZCBhIHBvaW50ZXIuXG5cCiBTcGVjaWFsIGNhc2UgKG5vdCBpbiBuYXRpdmUgbW9kZSB1bmxlc3MgJ2xvbmcgbG9uZycgaW4gcGxhdGZvcm0gQyk6XG5cCiAgIHE6bG9uZyBsb25nOyBROnVuc2lnbmVkIGxvbmcgbG9uZ1xuXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNjY2NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKQEAgLTAsMCArMSwyODc1IEBACisvKiBDIEV4dGVuc2lvbiBtb2R1bGUgdG8gdGVzdCBhbGwgYXNwZWN0cyBvZiBQRVAtMzExOC4KKyAgIFdyaXR0ZW4gYnkgU3RlZmFuIEtyYWguICovCisKKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworCisvKiBzdHJ1Y3QgbW9kdWxlICovCitQeU9iamVjdCAqc3RydWN0bW9kdWxlID0gTlVMTDsKK1B5T2JqZWN0ICpTdHJ1Y3QgPSBOVUxMOworUHlPYmplY3QgKmNhbGNzaXplID0gTlVMTDsKKworLyogY2FjaGUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpzaW1wbGVfZm10ID0gIkIiOworUHlPYmplY3QgKnNpbXBsZV9mb3JtYXQgPSBOVUxMOworI2RlZmluZSBTSU1QTEVfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMIHx8IHN0cmNtcChmbXQsICJCIikgPT0gMCkKKyNkZWZpbmUgRklYX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCA/ICJCIiA6IGZtdCkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkRBcnJheSBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlOworI2RlZmluZSBOREFycmF5X0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZOREFycmF5X1R5cGUpCisKKyNkZWZpbmUgQ0hFQ0tfTElTVF9PUl9UVVBMRSh2KSBcCisgICAgaWYgKCFQeUxpc3RfQ2hlY2sodikgJiYgIVB5VHVwbGVfQ2hlY2sodikpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAgICAgICAgIFwKKyAgICAgICAgICAgICN2ICIgbXVzdCBiZSBhIGxpc3Qgb3IgYSB0dXBsZSIpOyAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworI2RlZmluZSBQeU1lbV9YRnJlZSh2KSBcCisgICAgZG8geyBpZiAodikgUHlNZW1fRnJlZSh2KTsgfSB3aGlsZSAoMCkKKworLyogTWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucy4gKi8KKyNkZWZpbmUgTkRfTUFYX05ESU0gKDIgKiBQeUJVRl9NQVhfTkRJTSkKKworLyogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBzdWJvZmZzZXRzIGluIHRoZSBmaXJzdCBkaW1lbnNpb24uICovCisjZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMpIChzdWJvZmZzZXRzICYmIHN1Ym9mZnNldHNbMF0gPj0gMCkKKy8qIEFkanVzdCBwdHIgaWYgc3Vib2Zmc2V0cyBhcmUgcHJlc2VudC4gKi8KKyNkZWZpbmUgQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpIFwKKyAgICAoSEFWRV9QVFIoc3Vib2Zmc2V0cykgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbMF0gOiBwdHIpCisKKy8qIERlZmF1bHQ6IE51bVB5IHN0eWxlIChzdHJpZGVzKSwgcmVhZC1vbmx5LCBubyB2YXItZXhwb3J0LCBDLXN0eWxlIGxheW91dCAqLworI2RlZmluZSBORF9ERUZBVUxUICAgICAgICAgIDB4MDAwCisvKiBVc2VyIGNvbmZpZ3VyYWJsZSBmbGFncyBmb3IgdGhlIG5kYXJyYXkgKi8KKyNkZWZpbmUgTkRfVkFSRVhQT1JUICAgICAgICAweDAwMSAgIC8qIGNoYW5nZSBsYXlvdXQgd2hpbGUgYnVmZmVycyBhcmUgZXhwb3J0ZWQgKi8KKy8qIFVzZXIgY29uZmlndXJhYmxlIGZsYWdzIGZvciBlYWNoIGJhc2UgYnVmZmVyICovCisjZGVmaW5lIE5EX1dSSVRBQkxFICAgICAgICAgMHgwMDIgICAvKiBtYXJrIGJhc2UgYnVmZmVyIGFzIHdyaXRhYmxlICovCisjZGVmaW5lIE5EX0ZPUlRSQU4gICAgICAgICAgMHgwMDQgICAvKiBGb3J0cmFuIGNvbnRpZ3VvdXMgbGF5b3V0ICovCisjZGVmaW5lIE5EX1NDQUxBUiAgICAgICAgICAgMHgwMDggICAvKiBzY2FsYXI6IG5kaW0gPSAwICovCisjZGVmaW5lIE5EX1BJTCAgICAgICAgICAgICAgMHgwMTAgICAvKiBjb252ZXJ0IHRvIFBJTC1zdHlsZSBhcnJheSAoc3Vib2Zmc2V0cykgKi8KKyNkZWZpbmUgTkRfUkVESVJFQ1QgICAgICAgICAweDAyMCAgIC8qIHJlZGlyZWN0IGJ1ZmZlciByZXF1ZXN0cyAqLworI2RlZmluZSBORF9HRVRCVUZfRkFJTCAgICAgIDB4MDQwICAgLyogdHJpZ2dlciBnZXRidWZmZXIgZmFpbHVyZSAqLworI2RlZmluZSBORF9HRVRCVUZfVU5ERUZJTkVEIDB4MDgwICAgLyogdW5kZWZpbmVkIHZpZXcub2JqICovCisvKiBJbnRlcm5hbCBmbGFncyBmb3IgdGhlIGJhc2UgYnVmZmVyICovCisjZGVmaW5lIE5EX0MgICAgICAgICAgICAgICAgMHgxMDAgICAvKiBDIGNvbnRpZ3VvdXMgbGF5b3V0IChkZWZhdWx0KSAqLworI2RlZmluZSBORF9PV05fQVJSQVlTICAgICAgIDB4MjAwICAgLyogY29uc3VtZXIgb3ducyBhcnJheXMgKi8KKworLyogbmRhcnJheSBwcm9wZXJ0aWVzICovCisjZGVmaW5lIE5EX0lTX0NPTlNVTUVSKG5kKSBcCisgICAgKCgoTkRBcnJheU9iamVjdCAqKW5kKS0+aGVhZCA9PSAmKChOREFycmF5T2JqZWN0ICopbmQpLT5zdGF0aWNidWYpCisKKy8qIG5kYnVmLT5mbGFncyBwcm9wZXJ0aWVzICovCisjZGVmaW5lIE5EX0NfQ09OVElHVU9VUyhmbGFncykgKCEhKGZsYWdzJihORF9TQ0FMQVJ8TkRfQykpKQorI2RlZmluZSBORF9GT1JUUkFOX0NPTlRJR1VPVVMoZmxhZ3MpICghIShmbGFncyYoTkRfU0NBTEFSfE5EX0ZPUlRSQU4pKSkKKyNkZWZpbmUgTkRfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICghIShmbGFncyYoTkRfU0NBTEFSfE5EX0N8TkRfRk9SVFJBTikpKQorCisvKiBnZXRidWZmZXIoKSByZXF1ZXN0cyAqLworI2RlZmluZSBSRVFfSU5ESVJFQ1QoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfSU5ESVJFQ1QpID09IFB5QlVGX0lORElSRUNUKQorI2RlZmluZSBSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0NfQ09OVElHVU9VUykgPT0gUHlCVUZfQ19DT05USUdVT1VTKQorI2RlZmluZSBSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0ZfQ09OVElHVU9VUykgPT0gUHlCVUZfRl9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfQU5ZX0NPTlRJR1VPVVMpID09IFB5QlVGX0FOWV9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfU1RSSURFUyhmbGFncykgKChmbGFncyZQeUJVRl9TVFJJREVTKSA9PSBQeUJVRl9TVFJJREVTKQorI2RlZmluZSBSRVFfU0hBUEUoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfTkQpID09IFB5QlVGX05EKQorI2RlZmluZSBSRVFfV1JJVEFCTEUoZmxhZ3MpIChmbGFncyZQeUJVRl9XUklUQUJMRSkKKyNkZWZpbmUgUkVRX0ZPUk1BVChmbGFncykgKGZsYWdzJlB5QlVGX0ZPUk1BVCkKKworCisvKiBTaW5nbGUgbm9kZSBvZiBhIGxpc3Qgb2YgYmFzZSBidWZmZXJzLiBUaGUgbGlzdCBpcyBuZWVkZWQgdG8gaW1wbGVtZW50CisgICBjaGFuZ2VzIGluIG1lbW9yeSBsYXlvdXQgd2hpbGUgZXhwb3J0ZWQgYnVmZmVycyBhcmUgYWN0aXZlLiAqLworc3RhdGljIFB5VHlwZU9iamVjdCBOREFycmF5X1R5cGU7CisKK3N0cnVjdCBuZGJ1ZjsKK3R5cGVkZWYgc3RydWN0IG5kYnVmIHsKKyAgICBzdHJ1Y3QgbmRidWYgKm5leHQ7CisgICAgc3RydWN0IG5kYnVmICpwcmV2OworICAgIFB5X3NzaXplX3QgbGVuOyAgICAgLyogbGVuZ3RoIG9mIGRhdGEgKi8KKyAgICBQeV9zc2l6ZV90IG9mZnNldDsgIC8qIHN0YXJ0IG9mIHRoZSBhcnJheSByZWxhdGl2ZSB0byBkYXRhICovCisgICAgY2hhciAqZGF0YTsgICAgICAgICAvKiByYXcgZGF0YSAqLworICAgIGludCBmbGFnczsgICAgICAgICAgLyogY2FwYWJpbGl0aWVzIG9mIHRoZSBiYXNlIGJ1ZmZlciAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgLyogbnVtYmVyIG9mIGV4cG9ydHMgKi8KKyAgICBQeV9idWZmZXIgYmFzZTsgICAgIC8qIGJhc2UgYnVmZmVyICovCit9IG5kYnVmX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGZsYWdzOyAgICAgICAgICAvKiBuZGFycmF5IGZsYWdzICovCisgICAgbmRidWZfdCBzdGF0aWNidWY7ICAvKiBzdGF0aWMgYnVmZmVyIGZvciByZS1leHBvcnRpbmcgbW9kZSAqLworICAgIG5kYnVmX3QgKmhlYWQ7ICAgICAgLyogY3VycmVudGx5IGFjdGl2ZSBiYXNlIGJ1ZmZlciAqLworfSBOREFycmF5T2JqZWN0OworCisKK3N0YXRpYyBuZGJ1Zl90ICoKK25kYnVmX25ldyhQeV9zc2l6ZV90IG5pdGVtcywgUHlfc3NpemVfdCBpdGVtc2l6ZSwgUHlfc3NpemVfdCBvZmZzZXQsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBQeV9idWZmZXIgKmJhc2U7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBsZW4gPSBuaXRlbXMgKiBpdGVtc2l6ZTsKKyAgICBpZiAob2Zmc2V0ICUgaXRlbXNpemUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAib2Zmc2V0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiBpdGVtc2l6ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0K2l0ZW1zaXplID4gbGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWYgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mICpuZGJ1Zik7CisgICAgaWYgKG5kYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWYtPm5leHQgPSBOVUxMOworICAgIG5kYnVmLT5wcmV2ID0gTlVMTDsKKyAgICBuZGJ1Zi0+bGVuID0gbGVuOworICAgIG5kYnVmLT5vZmZzZXQ9IG9mZnNldDsKKworICAgIG5kYnVmLT5kYXRhID0gUHlNZW1fTWFsbG9jKGxlbik7CisgICAgaWYgKG5kYnVmLT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlNZW1fRnJlZShuZGJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmLT5mbGFncyA9IGZsYWdzOworICAgIG5kYnVmLT5leHBvcnRzID0gMDsKKworICAgIGJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgYmFzZS0+b2JqID0gTlVMTDsKKyAgICBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YTsKKyAgICBiYXNlLT5sZW4gPSBsZW47CisgICAgYmFzZS0+aXRlbXNpemUgPSAxOworICAgIGJhc2UtPnJlYWRvbmx5ID0gMDsKKyAgICBiYXNlLT5mb3JtYXQgPSBOVUxMOworICAgIGJhc2UtPm5kaW0gPSAxOworICAgIGJhc2UtPnNoYXBlID0gTlVMTDsKKyAgICBiYXNlLT5zdHJpZGVzID0gTlVMTDsKKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gTlVMTDsKKyAgICBiYXNlLT5pbnRlcm5hbCA9IG5kYnVmOworCisgICAgcmV0dXJuIG5kYnVmOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfZnJlZShuZGJ1Zl90ICpuZGJ1ZikKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisKKyAgICBQeU1lbV9YRnJlZShuZGJ1Zi0+ZGF0YSk7CisgICAgUHlNZW1fWEZyZWUoYmFzZS0+Zm9ybWF0KTsKKyAgICBQeU1lbV9YRnJlZShiYXNlLT5zaGFwZSk7CisgICAgUHlNZW1fWEZyZWUoYmFzZS0+c3RyaWRlcyk7CisgICAgUHlNZW1fWEZyZWUoYmFzZS0+c3Vib2Zmc2V0cyk7CisKKyAgICBQeU1lbV9GcmVlKG5kYnVmKTsKK30KKworc3RhdGljIHZvaWQKK25kYnVmX3B1c2goTkRBcnJheU9iamVjdCAqbmQsIG5kYnVmX3QgKmVsdCkKK3sKKyAgICBlbHQtPm5leHQgPSBuZC0+aGVhZDsKKyAgICBpZiAobmQtPmhlYWQpIG5kLT5oZWFkLT5wcmV2ID0gZWx0OworICAgIG5kLT5oZWFkID0gZWx0OworICAgIGVsdC0+cHJldiA9IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCituZGJ1Zl9kZWxldGUoTkRBcnJheU9iamVjdCAqbmQsIG5kYnVmX3QgKmVsdCkKK3sKKyAgICBpZiAoZWx0LT5wcmV2KQorICAgICAgICBlbHQtPnByZXYtPm5leHQgPSBlbHQtPm5leHQ7CisgICAgZWxzZQorICAgICAgICBuZC0+aGVhZCA9IGVsdC0+bmV4dDsKKyAgICAKKyAgICBpZiAoZWx0LT5uZXh0KQorICAgICAgICBlbHQtPm5leHQtPnByZXYgPSBlbHQtPnByZXY7CisKKyAgICBuZGJ1Zl9mcmVlKGVsdCk7Cit9CisKK3N0YXRpYyB2b2lkCituZGJ1Zl9wb3AoTkRBcnJheU9iamVjdCAqbmQpCit7CisgICAgbmRidWZfZGVsZXRlKG5kLCBuZC0+aGVhZCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kOworCisgICAgbmQgPSBQeU9iamVjdF9OZXcoTkRBcnJheU9iamVjdCwgJk5EQXJyYXlfVHlwZSk7CisgICAgaWYgKG5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmQtPmZsYWdzID0gMDsKKyAgICBuZC0+aGVhZCA9IE5VTEw7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5kOworfQorCitzdGF0aWMgdm9pZAorbmRhcnJheV9kZWFsbG9jKE5EQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhlYWQpIHsKKyAgICAgICAgaWYgKE5EX0lTX0NPTlNVTUVSKHNlbGYpKSB7CisgICAgICAgICAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICAgICAgICAgIGlmIChzZWxmLT5oZWFkLT5mbGFncyAmIE5EX09XTl9BUlJBWVMpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9YRnJlZShiYXNlLT5zaGFwZSk7CisgICAgICAgICAgICAgICAgUHlNZW1fWEZyZWUoYmFzZS0+c3RyaWRlcyk7CisgICAgICAgICAgICAgICAgUHlNZW1fWEZyZWUoYmFzZS0+c3Vib2Zmc2V0cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJhc2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgd2hpbGUgKHNlbGYtPmhlYWQpCisgICAgICAgICAgICAgICAgbmRidWZfcG9wKHNlbGYpOworICAgICAgICB9CisgICAgfQorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIGludAorbmRhcnJheV9pbml0X3N0YXRpY2J1ZihQeU9iamVjdCAqZXhwb3J0ZXIsIE5EQXJyYXlPYmplY3QgKm5kLCBpbnQgZmxhZ3MpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5zdGF0aWNidWYuYmFzZTsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZXhwb3J0ZXIsIGJhc2UsIGZsYWdzKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5kLT5oZWFkID0gJm5kLT5zdGF0aWNidWY7CisKKyAgICBuZC0+aGVhZC0+bmV4dCA9IE5VTEw7CisgICAgbmQtPmhlYWQtPnByZXYgPSBOVUxMOworICAgIG5kLT5oZWFkLT5sZW4gPSAtMTsKKyAgICBuZC0+aGVhZC0+b2Zmc2V0ID0gLTE7CisgICAgbmQtPmhlYWQtPmRhdGEgPSBOVUxMOworCisgICAgbmQtPmhlYWQtPmZsYWdzID0gYmFzZS0+cmVhZG9ubHkgPyAwIDogTkRfV1JJVEFCTEU7CisgICAgbmQtPmhlYWQtPmV4cG9ydHMgPSAwOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2ZsYWdzKG5kYnVmX3QgKm5kYnVmKQoreworICAgIGlmIChuZGJ1Zi0+YmFzZS5uZGltID09IDApCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9TQ0FMQVI7CisgICAgaWYgKG5kYnVmLT5iYXNlLnN1Ym9mZnNldHMpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9QSUw7CisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cygmbmRidWYtPmJhc2UsICdDJykpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9DOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kYnVmLT5iYXNlLCAnRicpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfRk9SVFJBTjsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIvTGlzdCBjb252ZXJzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeV9zc2l6ZV90ICpzdHJpZGVzX2Zyb21fc2hhcGUoY29uc3QgbmRidWZfdCAqLCBpbnQgZmxhZ3MpOworCisvKiBHZXQgbnVtYmVyIG9mIG1lbWJlcnMgaW4gYSBzdHJ1Y3Q6IHNlZSBpc3N1ZSAjMTI3NDAgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlfc3NpemVfdCBzX3NpemU7CisgICAgUHlfc3NpemVfdCBzX2xlbjsKK30gUHlQYXJ0aWFsU3RydWN0T2JqZWN0OworCitzdGF0aWMgUHlfc3NpemVfdAorZ2V0X25tZW1iKFB5T2JqZWN0ICpzKQoreworICAgIHJldHVybiAoKFB5UGFydGlhbFN0cnVjdE9iamVjdCAqKXMpLT5zX2xlbjsKK30KKworLyogUGFjayBhbGwgaXRlbXMgaW50byB0aGUgYnVmZmVyIG9mICdvYmonLiBUaGUgJ2Zvcm1hdCcgcGFyYW1ldGVyIG11c3QgYmUKKyAgIGluIHN0cnVjdCBtb2R1bGUgc3ludGF4LiBGb3Igc3RhbmRhcmQgQyB0eXBlcywgYSBzaW5nbGUgaXRlbSBpcyBhbiBpbnRlZ2VyLgorICAgRm9yIGNvbXBvdW5kIHR5cGVzLCBhIHNpbmdsZSBpdGVtIGlzIGEgdHVwbGUgb2YgaW50ZWdlcnMuICovCitzdGF0aWMgaW50CitwYWNrX2Zyb21fbGlzdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqaXRlbXMsIFB5T2JqZWN0ICpmb3JtYXQsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICpzdHJ1Y3RvYmosICpwYWNrX2ludG87CisgICAgUHlPYmplY3QgKmFyZ3MsICpvZmZzZXQ7CisgICAgUHlPYmplY3QgKml0ZW0sICp0bXA7CisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIG51bWJlciBvZiBpdGVtcyAqLworICAgIFB5X3NzaXplX3Qgbm1lbWI7ICAvKiBudW1iZXIgb2YgbWVtYmVycyBpbiBhIHNpbmdsZSBpdGVtICovCisgICAgUHlfc3NpemVfdCBpLCBqOworICAgIGludCByZXQgPSAwOworCisgICAgYXNzZXJ0KFB5T2JqZWN0X0NoZWNrQnVmZmVyKG9iaikpOworICAgIGFzc2VydChQeUxpc3RfQ2hlY2soaXRlbXMpIHx8IFB5VHVwbGVfQ2hlY2soaXRlbXMpKTsKKworICAgIHN0cnVjdG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoU3RydWN0LCBmb3JtYXQsIE5VTEwpOworICAgIGlmIChzdHJ1Y3RvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbml0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGl0ZW1zKTsKKyAgICBubWVtYiA9IGdldF9ubWVtYihzdHJ1Y3RvYmopOworICAgIGFzc2VydChubWVtYiA+PSAxKTsKKworICAgIHBhY2tfaW50byA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAicGFja19pbnRvIik7CisgICAgaWYgKHBhY2tfaW50byA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdHJ1Y3RvYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogbm1lbWIgPj0gMSAqLworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyICsgbm1lbWIpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHBhY2tfaW50byk7CisgICAgICAgIFB5X0RFQ1JFRihzdHJ1Y3RvYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgb2Zmc2V0ID0gTlVMTDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbml0ZW1zOyBpKyspIHsKKyAgICAgICAgLyogTG9vcCBpbnZhcmlhbnQ6IGFyZ3Nbal0gYXJlIGJvcnJvd2VkIHJlZmVyZW5jZXMgb3IgTlVMTC4gKi8KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBvYmopOworICAgICAgICBmb3IgKGogPSAxOyBqIDwgMitubWVtYjsgaisrKQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBqLCBOVUxMKTsKKworICAgICAgICBQeV9YREVDUkVGKG9mZnNldCk7CisgICAgICAgIG9mZnNldCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpKml0ZW1zaXplKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgb2Zmc2V0KTsKKworICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW1zLCBpKTsKKyAgICAgICAgaWYgKChQeUJ5dGVzX0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSB8fAorICAgICAgICAgICAgIFB5RmxvYXRfQ2hlY2soaXRlbSkpICYmIG5tZW1iID09IDEpIHsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMiwgaXRlbSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKFB5TGlzdF9DaGVjayhpdGVtKSB8fCBQeVR1cGxlX0NoZWNrKGl0ZW0pKSAmJgorICAgICAgICAgICAgICAgICBQeVNlcXVlbmNlX0xlbmd0aChpdGVtKSA9PSBubWVtYikgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5tZW1iOyBqKyspIHsKKyAgICAgICAgICAgICAgICB0bXAgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oaXRlbSwgaik7CisgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAyK2osIHRtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWlzbWF0Y2ggYmV0d2VlbiBpbml0aWFsaXplciBlbGVtZW50IGFuZCBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE9iamVjdChwYWNrX2ludG8sIGFyZ3MpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgUHlfSU5DUkVGKG9iaik7IC8qIGFyZ3NbMF0gKi8KKyAgICAvKiBhcmdzWzFdOiBvZmZzZXQgaXMgZWl0aGVyIE5VTEwgb3Igc2hvdWxkIGJlIGRlYWxsb2MnZCAqLworICAgIGZvciAoaSA9IDI7IGkgPCAyK25tZW1iOyBpKyspIHsKKyAgICAgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKyAgICAgICAgUHlfWElOQ1JFRih0bXApOworICAgIH0KKyAgICBQeV9ERUNSRUYoYXJncyk7CisKKyAgICBQeV9ERUNSRUYocGFja19pbnRvKTsKKyAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICByZXR1cm4gcmV0OworCit9CisKKy8qIFBhY2sgc2luZ2xlIGVsZW1lbnQgKi8KK3N0YXRpYyBpbnQKK3BhY2tfc2luZ2xlKGNoYXIgKnB0ciwgUHlPYmplY3QgKml0ZW0sIGNvbnN0IGNoYXIgKmZtdCwgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0b2JqID0gTlVMTCwgKnBhY2tfaW50byA9IE5VTEwsICphcmdzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gTlVMTCwgKm12aWV3ID0gTlVMTCwgKnplcm8gPSBOVUxMOworICAgIFB5X3NzaXplX3QgaSwgbm1lbWI7CisgICAgaW50IHJldCA9IC0xOworICAgIFB5T2JqZWN0ICp4OworCisgICAgaWYgKGZtdCA9PSBOVUxMKSBmbXQgPSAiQiI7CisKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhmbXQpOworICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgbm1lbWIgPSBnZXRfbm1lbWIoc3RydWN0b2JqKTsKKyAgICBhc3NlcnQobm1lbWIgPj0gMSk7CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KHB0ciwgaXRlbXNpemUsIFB5QlVGX1dSSVRFKTsKKyAgICBpZiAobXZpZXcgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOworICAgIGlmICh6ZXJvID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcGFja19pbnRvID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3RvYmosICJwYWNrX2ludG8iKTsKKyAgICBpZiAocGFja19pbnRvID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KDIrbm1lbWIpOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBtdmlldyk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB6ZXJvKTsKKworICAgIGlmICgoUHlCeXRlc19DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkgfHwKKyAgICAgICAgIFB5RmxvYXRfQ2hlY2soaXRlbSkpICYmIG5tZW1iID09IDEpIHsKKyAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMiwgaXRlbSk7CisgICAgfQorICAgIGVsc2UgaWYgKChQeUxpc3RfQ2hlY2soaXRlbSkgfHwgUHlUdXBsZV9DaGVjayhpdGVtKSkgJiYKKyAgICAgICAgICAgICBQeVNlcXVlbmNlX0xlbmd0aChpdGVtKSA9PSBubWVtYikgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbm1lbWI7IGkrKykgeworICAgICAgICAgICAgeCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtLCBpKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMitpLCB4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWlzbWF0Y2ggYmV0d2VlbiBpbml0aWFsaXplciBlbGVtZW50IGFuZCBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgIGdvdG8gYXJnc19vdXQ7CisgICAgfQorCisgICAgeCA9IFB5T2JqZWN0X0NhbGxPYmplY3QocGFja19pbnRvLCBhcmdzKTsKKyAgICBpZiAoeCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgcmV0ID0gMDsKKyAgICB9CisKKworYXJnc19vdXQ6CisgICAgZm9yIChpID0gMDsgaSA8IDIrbm1lbWI7IGkrKykKKyAgICAgICAgUHlfWElOQ1JFRihQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpKTsKKyAgICBQeV9YREVDUkVGKGFyZ3MpOworb3V0OgorICAgIFB5X1hERUNSRUYocGFja19pbnRvKTsKKyAgICBQeV9YREVDUkVGKHplcm8pOworICAgIFB5X1hERUNSRUYobXZpZXcpOworICAgIFB5X1hERUNSRUYoc3RydWN0b2JqKTsKKyAgICBQeV9YREVDUkVGKGZvcm1hdCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK2NvcHlfcmVjKGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90IG5kaW0sIFB5X3NzaXplX3QgaXRlbXNpemUsCisgICAgICAgICBjaGFyICpkcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpkc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqZHN1Ym9mZnNldHMsCisgICAgICAgICBjaGFyICpzcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpzc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqc3N1Ym9mZnNldHMsCisgICAgICAgICBjaGFyICptZW0pCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMSk7CisKKyAgICBpZiAobmRpbSA9PSAxKSB7CisgICAgICAgIGlmICghSEFWRV9QVFIoZHN1Ym9mZnNldHMpICYmICFIQVZFX1BUUihzc3Vib2Zmc2V0cykgJiYKKyAgICAgICAgICAgIGRzdHJpZGVzWzBdID09IGl0ZW1zaXplICYmIHNzdHJpZGVzWzBdID09IGl0ZW1zaXplKSB7CisgICAgICAgICAgICBtZW1tb3ZlKGRwdHIsIHNwdHIsIHNoYXBlWzBdICogaXRlbXNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2hhciAqcDsKKyAgICAgICAgICAgIGFzc2VydChtZW0gIT0gTlVMTCk7CisgICAgICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGk8c2hhcGVbMF07IHArPWl0ZW1zaXplLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgICAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocCwgeHNwdHIsIGl0ZW1zaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaTxzaGFwZVswXTsgcCs9aXRlbXNpemUsIGRwdHIrPWRzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICAgICAgICAgIG1lbWNweSh4ZHB0ciwgcCwgaXRlbXNpemUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IGRwdHIrPWRzdHJpZGVzWzBdLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7CisgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisKKyAgICAgICAgY29weV9yZWMoc2hhcGUrMSwgbmRpbS0xLCBpdGVtc2l6ZSwKKyAgICAgICAgICAgICAgICAgeGRwdHIsIGRzdHJpZGVzKzEsIGRzdWJvZmZzZXRzID8gZHN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgIHhzcHRyLCBzc3RyaWRlcysxLCBzc3Vib2Zmc2V0cyA/IHNzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICBtZW0pOworICAgIH0KK30KKworc3RhdGljIGludAorY21wX3N0cnVjdHVyZShQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChzdHJjbXAoRklYX0ZPUk1BVChkZXN0LT5mb3JtYXQpLCBGSVhfRk9STUFUKHNyYy0+Zm9ybWF0KSkgIT0gMCB8fAorICAgICAgICBkZXN0LT5pdGVtc2l6ZSAhPSBzcmMtPml0ZW1zaXplIHx8CisgICAgICAgIGRlc3QtPm5kaW0gIT0gc3JjLT5uZGltKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZGVzdC0+bmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSAhPSBzcmMtPnNoYXBlW2ldKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGVzdC0+c2hhcGVbaV0gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDb3B5IHNyYyB0byBkZXN0LiBCb3RoIGJ1ZmZlcnMgbXVzdCBoYXZlIHRoZSBzYW1lIGZvcm1hdCwgaXRlbXNpemUsCisgICBuZGltIGFuZCBzaGFwZS4gQ29weWluZyBpcyBhdG9taWMsIHRoZSBmdW5jdGlvbiBuZXZlciBmYWlscyB3aXRoCisgICBhIHBhcnRpYWwgY29weS4gKi8KK3N0YXRpYyBpbnQKK2NvcHlfYnVmZmVyKFB5X2J1ZmZlciAqZGVzdCwgUHlfYnVmZmVyICpzcmMpCit7CisgICAgY2hhciAqbWVtID0gTlVMTDsKKworICAgIGFzc2VydChkZXN0LT5uZGltID4gMCk7CisKKyAgICBpZiAoY21wX3N0cnVjdHVyZShkZXN0LCBzcmMpIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGFzc2lnbm1lbnQ6IGx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICgoZGVzdC0+c3Vib2Zmc2V0cyAmJiBkZXN0LT5zdWJvZmZzZXRzW2Rlc3QtPm5kaW0tMV0gPj0gMCkgfHwKKyAgICAgICAgKHNyYy0+c3Vib2Zmc2V0cyAmJiBzcmMtPnN1Ym9mZnNldHNbc3JjLT5uZGltLTFdID49IDApIHx8CisgICAgICAgIGRlc3QtPnN0cmlkZXNbZGVzdC0+bmRpbS0xXSAhPSBkZXN0LT5pdGVtc2l6ZSB8fAorICAgICAgICBzcmMtPnN0cmlkZXNbc3JjLT5uZGltLTFdICE9IHNyYy0+aXRlbXNpemUpIHsKKyAgICAgICAgbWVtID0gUHlNZW1fTWFsbG9jKGRlc3QtPnNoYXBlW2Rlc3QtPm5kaW0tMV0gKiBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvcHlfcmVjKGRlc3QtPnNoYXBlLCBkZXN0LT5uZGltLCBkZXN0LT5pdGVtc2l6ZSwKKyAgICAgICAgICAgICBkZXN0LT5idWYsIGRlc3QtPnN0cmlkZXMsIGRlc3QtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgc3JjLT5idWYsIHNyYy0+c3RyaWRlcywgc3JjLT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIG1lbSk7CisKKyAgICBQeU1lbV9YRnJlZShtZW0pOworICAgIHJldHVybiAwOworfQorCisKKy8qIFVucGFjayBzaW5nbGUgZWxlbWVudCAqLworc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19zaW5nbGUoY2hhciAqcHRyLCBjb25zdCBjaGFyICpmbXQsIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKngsICp1bnBhY2tfZnJvbSwgKm12aWV3OworCisgICAgaWYgKGZtdCA9PSBOVUxMKSB7CisgICAgICAgIGZtdCA9ICJCIjsKKyAgICAgICAgaXRlbXNpemUgPSAxOworICAgIH0KKworICAgIHVucGFja19mcm9tID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJ1bnBhY2tfZnJvbSIpOworICAgIGlmICh1bnBhY2tfZnJvbSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkocHRyLCBpdGVtc2l6ZSwgUHlCVUZfUkVBRCk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHVucGFja19mcm9tKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbih1bnBhY2tfZnJvbSwgInNPIiwgZm10LCBtdmlldyk7CisgICAgUHlfREVDUkVGKHVucGFja19mcm9tKTsKKyAgICBQeV9ERUNSRUYobXZpZXcpOworICAgIGlmICh4ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoeCkgPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTSh4LCAwKTsKKyAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgcmV0dXJuIHRtcDsKKyAgICB9CisKKyAgICByZXR1cm4geDsKK30KKworLyogVW5wYWNrIGEgbXVsdGktZGltZW5zaW9uYWwgbWF0cml4IGludG8gYSBuZXN0ZWQgbGlzdC4gUmV0dXJuIGEgc2NhbGFyCisgICBmb3IgbmRpbSA9IDAuICovCitzdGF0aWMgUHlPYmplY3QgKgordW5wYWNrX3JlYyhQeU9iamVjdCAqdW5wYWNrX2Zyb20sIGNoYXIgKnB0ciwgUHlPYmplY3QgKm12aWV3LCBjaGFyICppdGVtLAorICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywgUHlfc3NpemVfdCBuZGltLCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICpsc3QsICp4OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDApOworICAgIGFzc2VydChzaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyaWRlcyAhPSBOVUxMKTsKKworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgbWVtY3B5KGl0ZW0sIHB0ciwgaXRlbXNpemUpOworICAgICAgICB4ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyh1bnBhY2tfZnJvbSwgbXZpZXcsIE5VTEwpOworICAgICAgICBpZiAoeCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHgpID09IDEpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHgsIDApOworICAgICAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICByZXR1cm4gdG1wOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGxzdCA9IFB5TGlzdF9OZXcoc2hhcGVbMF0pOworICAgIGlmIChsc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNoYXIgKm5leHRwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisKKyAgICAgICAgeCA9IHVucGFja19yZWModW5wYWNrX2Zyb20sIG5leHRwdHIsIG12aWV3LCBpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSsxLCBzdHJpZGVzKzEsIHN1Ym9mZnNldHMgPyBzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICBuZGltLTEsIGl0ZW1zaXplKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsc3QsIGksIHgpOworICAgIH0KKworICAgIHJldHVybiBsc3Q7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfYXNfbGlzdChOREFycmF5T2JqZWN0ICpuZCkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0b2JqID0gTlVMTCwgKnVucGFja19mcm9tID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbHN0ID0gTlVMTCwgKm12aWV3ID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlfc3NpemVfdCAqc2hhcGUgPSBiYXNlLT5zaGFwZTsKKyAgICBQeV9zc2l6ZV90ICpzdHJpZGVzID0gYmFzZS0+c3RyaWRlczsKKyAgICBQeV9zc2l6ZV90IHNpbXBsZV9zaGFwZVsxXTsKKyAgICBQeV9zc2l6ZV90IHNpbXBsZV9zdHJpZGVzWzFdOworICAgIGNoYXIgKml0ZW0gPSBOVUxMOworICAgIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgY2hhciAqZm10ID0gYmFzZS0+Zm9ybWF0OworCisgICAgYmFzZSA9ICZuZC0+aGVhZC0+YmFzZTsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5OiB0b2xpc3QoKSBkb2VzIG5vdCBzdXBwb3J0IGZvcm1hdD1OVUxMLCB1c2UgIgorICAgICAgICAgICAgInRvYnl0ZXMoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNoYXBlID09IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KE5EX0NfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKTsKKyAgICAgICAgYXNzZXJ0KGJhc2UtPnN0cmlkZXMgPT0gTlVMTCk7CisgICAgICAgIGFzc2VydChiYXNlLT5uZGltIDw9IDEpOworICAgICAgICBzaGFwZSA9IHNpbXBsZV9zaGFwZTsKKyAgICAgICAgc2hhcGVbMF0gPSBiYXNlLT5sZW47CisgICAgICAgIHN0cmlkZXMgPSBzaW1wbGVfc3RyaWRlczsKKyAgICAgICAgc3RyaWRlc1swXSA9IGJhc2UtPml0ZW1zaXplOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJpZGVzID09IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KE5EX0NfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKTsKKyAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZC0+aGVhZCwgMCk7CisgICAgICAgIGlmIChzdHJpZGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhmbXQpOworICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZm9ybWF0KTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgdW5wYWNrX2Zyb20gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInVucGFja19mcm9tIik7CisgICAgaWYgKHVucGFja19mcm9tID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaXRlbSA9IFB5TWVtX01hbGxvYyhiYXNlLT5pdGVtc2l6ZSk7CisgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGl0ZW0sIGJhc2UtPml0ZW1zaXplLCBQeUJVRl9XUklURSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgbHN0ID0gdW5wYWNrX3JlYyh1bnBhY2tfZnJvbSwgYmFzZS0+YnVmLCBtdmlldywgaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgIHNoYXBlLCBzdHJpZGVzLCBiYXNlLT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgYmFzZS0+bmRpbSwgYmFzZS0+aXRlbXNpemUpOworCitvdXQ6CisgICAgUHlfWERFQ1JFRihtdmlldyk7CisgICAgUHlNZW1fWEZyZWUoaXRlbSk7CisgICAgUHlfWERFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgUHlfWERFQ1JFRihzdHJ1Y3RvYmopOworICAgIGlmIChzdHJpZGVzICE9IGJhc2UtPnN0cmlkZXMgJiYgc3RyaWRlcyAhPSBzaW1wbGVfc3RyaWRlcykKKyAgICAgICAgUHlNZW1fWEZyZWUoc3RyaWRlcyk7CisKKyAgICByZXR1cm4gbHN0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSBuZGJ1ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIFN0YXRlIG9mIGEgbmV3IG5kYnVmIGR1cmluZyBpbml0aWFsaXphdGlvbi4gJ09LJyBtZWFucyB0aGF0IGluaXRpYWxpemF0aW9uCisgICBpcyBjb21wbGV0ZS4gJ1BUUicgbWVhbnMgdGhhdCBhIHBvaW50ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGJ1dCB0aGUKKyAgIHN0YXRlIG9mIHRoZSBtZW1vcnkgaXMgc3RpbGwgdW5kZWZpbmVkIGFuZCBuZGJ1Zi0+b2Zmc2V0IGlzIGRpc3JlZ2FyZGVkLgorCisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgICAgICAgICAgICAgICAgIHwgbmRidWZfbmV3IHwgaW5pdF9zaW1wbGUgfCBpbml0X3N0cnVjdHVyZSB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgbmV4dCAgICAgICAgICAgIHwgT0sgKE5VTEwpIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgcHJldiAgICAgICAgICAgIHwgT0sgKE5VTEwpIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgbGVuICAgICAgICAgICAgIHwgICAgT0sgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgb2Zmc2V0ICAgICAgICAgIHwgICAgT0sgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgZGF0YSAgICAgICAgICAgIHwgICAgUFRSICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgZmxhZ3MgICAgICAgICAgIHwgICAgdXNlciAgIHwgICAgdXNlciAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgZXhwb3J0cyAgICAgICAgIHwgICBPSyAoMCkgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5vYmogICAgICAgIHwgT0sgKE5VTEwpIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5idWYgICAgICAgIHwgICAgUFRSICAgIHwgICAgIFBUUiAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5sZW4gICAgICAgIHwgbGVuKGRhdGEpIHwgIGxlbihkYXRhKSAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5pdGVtc2l6ZSAgIHwgICAgIDEgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5yZWFkb25seSAgIHwgICAgIDAgICAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5mb3JtYXQgICAgIHwgICAgTlVMTCAgIHwgICAgIE9LICAgICAgfCAgICAgICBPSyAgICAgICB8ICAKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLm5kaW0gICAgICAgfCAgICAgMSAgICAgfCAgICAgIDEgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnNoYXBlICAgICAgfCAgICBOVUxMICAgfCAgICBOVUxMICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnN0cmlkZXMgICAgfCAgICBOVUxMICAgfCAgICBOVUxMICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnN1Ym9mZnNldHMgfCAgICBOVUxMICAgfCAgICBOVUxMICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLmludGVybmFsICAgfCAgICBPSyAgICAgfCAgICBPSyAgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKworKi8KKworc3RhdGljIFB5X3NzaXplX3QKK2dldF9pdGVtc2l6ZShQeU9iamVjdCAqZm9ybWF0KQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKworICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY2FsY3NpemUsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaXRlbXNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisKKyAgICByZXR1cm4gaXRlbXNpemU7Cit9CisKK3N0YXRpYyBjaGFyICoKK2dldF9mb3JtYXQoUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIGNoYXIgKmZtdDsKKworICAgIHRtcCA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKGZvcm1hdCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmbXQgPSBQeU1lbV9NYWxsb2MoUHlCeXRlc19HRVRfU0laRSh0bXApKzEpOworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN0cmNweShmbXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHRtcCkpOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgcmV0dXJuIGZtdDsKK30KKworc3RhdGljIGludAoraW5pdF9zaW1wbGUobmRidWZfdCAqbmRidWYsIFB5T2JqZWN0ICppdGVtcywgUHlPYmplY3QgKmZvcm1hdCwKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKm12aWV3OworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpbnQgcmV0OworCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihiYXNlKTsKKyAgICBpZiAobXZpZXcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0ID0gcGFja19mcm9tX2xpc3QobXZpZXcsIGl0ZW1zLCBmb3JtYXQsIGl0ZW1zaXplKTsKKyAgICBQeV9ERUNSRUYobXZpZXcpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBiYXNlLT5yZWFkb25seSA9ICEobmRidWYtPmZsYWdzICYgTkRfV1JJVEFCTEUpOworICAgIGJhc2UtPml0ZW1zaXplID0gaXRlbXNpemU7CisgICAgYmFzZS0+Zm9ybWF0ID0gZ2V0X2Zvcm1hdChmb3JtYXQpOworICAgIGlmIChiYXNlLT5mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90ICoKK3NlcV9hc19zc2l6ZV9hcnJheShQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IGxlbiwgaW50IGlzX3NoYXBlKQoreworICAgIFB5X3NzaXplX3QgKmRlc3Q7CisgICAgUHlfc3NpemVfdCB4LCBpOworCisgICAgZGVzdCA9IFB5TWVtX01hbGxvYyhsZW4gKiAoc2l6ZW9mICpkZXN0KSk7CisgICAgaWYgKGRlc3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZWxlbWVudHMgb2YgJXMgbXVzdCBiZSBpbnRlZ2VycyIsCisgICAgICAgICAgICAgICAgaXNfc2hhcGUgPyAic2hhcGUiIDogInN0cmlkZXMiKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChpc19zaGFwZSAmJiB4IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImVsZW1lbnRzIG9mIHNoYXBlIG11c3QgYmUgaW50ZWdlcnMgPj0gMCIpOworICAgICAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGRlc3RbaV0gPSB4OworICAgIH0KKworICAgIHJldHVybiBkZXN0OworfQorCitzdGF0aWMgUHlfc3NpemVfdCAqCitzdHJpZGVzX2Zyb21fc2hhcGUoY29uc3QgbmRidWZfdCAqbmRidWYsIGludCBmbGFncykKK3sKKyAgICBjb25zdCBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgUHlfc3NpemVfdCAqcywgaTsKKworICAgIHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnMpKTsKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmbGFncyAmIE5EX0ZPUlRSQU4pIHsKKyAgICAgICAgc1swXSA9IGJhc2UtPml0ZW1zaXplOworICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYmFzZS0+bmRpbTsgaSsrKQorICAgICAgICAgICAgc1tpXSA9IHNbaS0xXSAqIGJhc2UtPnNoYXBlW2ktMV07CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzW2Jhc2UtPm5kaW0tMV0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICAgICAgZm9yIChpID0gYmFzZS0+bmRpbS0yOyBpID49IDA7IGktLSkKKyAgICAgICAgICAgIHNbaV0gPSBzW2krMV0gKiBiYXNlLT5zaGFwZVtpKzFdOworICAgIH0KKworICAgIHJldHVybiBzOworfQorCisvKiBCb3VuZHMgY2hlY2s6CisKKyAgICAgbGVuIDo9IGNvbXBsZXRlIGxlbmd0aCBvZiBhbGxvY2F0ZWQgbWVtb3J5CisgICAgIG9mZnNldCA6PSBzdGFydCBvZiB0aGUgYXJyYXkKKworICAgICBBIHNpbmdsZSBhcnJheSBlbGVtZW50IGlzIGluZGV4ZWQgYnk6CisKKyAgICAgICBpID0gaW5kaWNlc1swXSAqIHN0cmlkZXNbMF0gKyBpbmRpY2VzWzFdICogc3RyaWRlc1sxXSArIC4uLgorCisgICAgIGltaW4gaXMgcmVhY2hlZCB3aGVuIGFsbCBpbmRpY2VzW25dIGNvbWJpbmVkIHdpdGggcG9zaXRpdmUgc3RyaWRlcyBhcmUgMAorICAgICBhbmQgYWxsIGluZGljZXMgY29tYmluZWQgd2l0aCBuZWdhdGl2ZSBzdHJpZGVzIGFyZSBzaGFwZVtuXS0xLCB3aGljaCBpcworICAgICB0aGUgbWF4aW11bSBpbmRleCBmb3IgdGhlIG50aCBkaW1lbnNpb24uCisKKyAgICAgaW1heCBpcyByZWFjaGVkIHdoZW4gYWxsIGluZGljZXNbbl0gY29tYmluZWQgd2l0aCBuZWdhdGl2ZSBzdHJpZGVzIGFyZSAwCisgICAgIGFuZCBhbGwgaW5kaWNlcyBjb21iaW5lZCB3aXRoIHBvc2l0aXZlIHN0cmlkZXMgYXJlIHNoYXBlW25dLTEuCisqLworc3RhdGljIGludAordmVyaWZ5X3N0cnVjdHVyZShQeV9zc2l6ZV90IGxlbiwgUHlfc3NpemVfdCBpdGVtc2l6ZSwgUHlfc3NpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfc3NpemVfdCBpbWluLCBpbWF4OworICAgIFB5X3NzaXplX3QgbjsKKworICAgIGFzc2VydChuZGltID49IDApOworCisgICAgaWYgKG5kaW0gPT0gMCAmJiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQraXRlbXNpemUgPiBsZW4pKQorICAgICAgICBnb3RvIGludmFsaWRfY29tYmluYXRpb247CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc3RyaWRlc1tuXSAlIGl0ZW1zaXplKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJzdHJpZGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBpdGVtc2l6ZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc2hhcGVbbl0gPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgaW1pbiA9IGltYXggPSAwOworICAgIGZvciAobiA9IDA7IG4gPCBuZGltOyBuKyspCisgICAgICAgIGlmIChzdHJpZGVzW25dIDw9IDApCisgICAgICAgICAgICBpbWluICs9IChzaGFwZVtuXS0xKSAqIHN0cmlkZXNbbl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGltYXggKz0gKHNoYXBlW25dLTEpICogc3RyaWRlc1tuXTsKKworICAgIGlmIChpbWluICsgb2Zmc2V0IDwgMCB8fCBpbWF4ICsgb2Zmc2V0ICsgaXRlbXNpemUgPiBsZW4pCisgICAgICAgIGdvdG8gaW52YWxpZF9jb21iaW5hdGlvbjsKKworICAgIHJldHVybiAwOworCisKK2ludmFsaWRfY29tYmluYXRpb246CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICJpbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGJ1ZmZlciwgc2hhcGUgYW5kIHN0cmlkZXMiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qCisgICBDb252ZXJ0IGEgTnVtUHktc3R5bGUgYXJyYXkgdG8gYW4gYXJyYXkgdXNpbmcgc3Vib2Zmc2V0cyB0byBzdHJpZGUgaW4KKyAgIHRoZSBmaXJzdCBkaW1lbnNpb24uIFJlcXVpcmVtZW50czogbmRpbSA+IDAuCisKKyAgIENvbnRpZ3VvdXMgZXhhbXBsZQorICAgPT09PT09PT09PT09PT09PT09CisKKyAgICAgSW5wdXQ6CisgICAgIC0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHs2LCAzLCAxfTsKKyAgICAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICAgICBkYXRhICAgICAgID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgYnVmICAgICAgICA9ICZkYXRhWzBdCisKKyAgICAgT3V0cHV0OgorICAgICAtLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0ge3NpemVvZihjaGFyICopLCAzLCAxfTsKKyAgICAgICBzdWJvZmZzZXRzID0gezAsIC0xLCAtMX07CisgICAgICAgZGF0YSAgICAgICA9IHtwMSwgcDIsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIF4gICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgIGAtLS0nLS0tJyAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgYC0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgICAgICBidWYgICAgICAgID0gJmRhdGFbMF0KKworICAgICBTbywgaW4gdGhlIGV4YW1wbGUgdGhlIGlucHV0IHJlc2VtYmxlcyB0aGUgdGhyZWUtZGltZW5zaW9uYWwgYXJyYXkKKyAgICAgY2hhciB2WzJdWzJdWzNdLCB3aGlsZSB0aGUgb3V0cHV0IHJlc2VtYmxlcyBhbiBhcnJheSBvZiB0d28gcG9pbnRlcnMKKyAgICAgdG8gdHdvLWRpbWVuc2lvbmFsIGFycmF5czogY2hhciAoKnZbMl0pWzJdWzNdLgorCisKKyAgIE5vbi1jb250aWd1b3VzIGV4YW1wbGU6CisgICA9PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgIElucHV0ICh3aXRoIG9mZnNldCBhbmQgbmVnYXRpdmUgc3RyaWRlcyk6CisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0gey02LCAzLCAtMX07CisgICAgICAgb2Zmc2V0ICAgICA9IDgKKyAgICAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICAgICBkYXRhICAgICAgID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisKKyAgICAgT3V0cHV0OgorICAgICAtLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0gey1zaXplb2YoY2hhciAqKSwgMywgLTF9OworICAgICAgIHN1Ym9mZnNldHMgPSB7MiwgLTEsIC0xfTsKKyAgICAgICBuZXdkYXRhICAgID0ge3AxLCBwMiwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExfTsKKyAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgXiAgICAgXiAgICAgICAgICAgXiAgICAgXgorICAgICAgICAgICAgICAgICAgICAgYC0tLSctLS0nICAgICB8ICAgICAgICAgICB8ICAgICBgLSBwMitzdWJvZmZzZXRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIGAtLS0tLS0tLS0tLXwtLS0gcDErc3Vib2Zmc2V0c1swXQorICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisgICAgICAgYnVmICAgICAgICA9ICZuZXdkYXRhWzFdICAjIHN0cmlkaW5nIGJhY2t3YXJkcyBvdmVyIHRoZSBwb2ludGVycy4KKworICAgICBzdWJvZmZzZXRzWzBdIGlzIHRoZSBzYW1lIGFzIHRoZSBvZmZzZXQgdGhhdCBvbmUgd291bGQgc3BlY2lmeSBpZgorICAgICB0aGUgdHdvIHsyLCAzfSBzdWJhcnJheXMgd2VyZSBjcmVhdGVkIGRpcmVjdGx5LCBoZW5jZSB0aGUgbmFtZS4KKyovCitzdGF0aWMgaW50Citpbml0X3N1Ym9mZnNldHMobmRidWZfdCAqbmRidWYpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0ZXA7CisgICAgUHlfc3NpemVfdCBpbWluLCBzdWJvZmZzZXQwOworICAgIFB5X3NzaXplX3QgYWRkc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG47CisgICAgY2hhciAqZGF0YTsKKworICAgIGFzc2VydChiYXNlLT5uZGltID4gMCk7CisgICAgYXNzZXJ0KGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCk7CisKKyAgICAvKiBBbGxvY2F0ZSBuZXcgZGF0YSB3aXRoIGFkZGl0aW9uYWwgc3BhY2UgZm9yIHNoYXBlWzBdIHBvaW50ZXJzLiAqLworICAgIGFkZHNpemUgPSBiYXNlLT5zaGFwZVswXSAqIChzaXplb2YgKGNoYXIgKikpOworCisgICAgLyogQWxpZ24gYXJyYXkgc3RhcnQgdG8gYSBtdWx0aXBsZSBvZiA4LiAqLworICAgIGFkZHNpemUgPSA4ICogKChhZGRzaXplICsgNykgLyA4KTsKKworICAgIGRhdGEgPSBQeU1lbV9NYWxsb2MobmRidWYtPmxlbiArIGFkZHNpemUpOworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1lbWNweShkYXRhICsgYWRkc2l6ZSwgbmRidWYtPmRhdGEsIG5kYnVmLT5sZW4pOworCisgICAgUHlNZW1fRnJlZShuZGJ1Zi0+ZGF0YSk7CisgICAgbmRidWYtPmRhdGEgPSBkYXRhOworICAgIG5kYnVmLT5sZW4gKz0gYWRkc2l6ZTsKKyAgICBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YTsKKworICAgIC8qIGltaW46IG1pbmltdW0gaW5kZXggb2YgdGhlIGlucHV0IGFycmF5IHJlbGF0aXZlIHRvIG5kYnVmLT5vZmZzZXQuCisgICAgICAgc3Vib2Zmc2V0MDogb2Zmc2V0IGZvciBlYWNoIHN1Yi1hcnJheSBvZiB0aGUgb3V0cHV0LiBUaGlzIGlzIHRoZQorICAgICAgICAgICAgICAgICAgIHNhbWUgYXMgY2FsY3VsYXRpbmcgLWltaW4nIGZvciBhIHN1Yi1hcnJheSBvZiBuZGltLTEuICovCisgICAgaW1pbiA9IHN1Ym9mZnNldDAgPSAwOworICAgIGZvciAobiA9IDA7IG4gPCBiYXNlLT5uZGltOyBuKyspIHsKKyAgICAgICAgaWYgKGJhc2UtPnNoYXBlW25dID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGJhc2UtPnN0cmlkZXNbbl0gPD0gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCB4ID0gKGJhc2UtPnNoYXBlW25dLTEpICogYmFzZS0+c3RyaWRlc1tuXTsKKyAgICAgICAgICAgIGltaW4gKz0geDsKKyAgICAgICAgICAgIHN1Ym9mZnNldDAgKz0gKG4gPj0gMSkgPyAteCA6IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3ViLWFycmF5cy4gKi8KKyAgICBzdGFydCA9IGFkZHNpemUgKyBuZGJ1Zi0+b2Zmc2V0ICsgaW1pbjsKKyAgICBzdGVwID0gYmFzZS0+c3RyaWRlc1swXSA8IDAgPyAtYmFzZS0+c3RyaWRlc1swXSA6IGJhc2UtPnN0cmlkZXNbMF07CisKKyAgICBmb3IgKG4gPSAwOyBuIDwgYmFzZS0+c2hhcGVbMF07IG4rKykKKyAgICAgICAgKChjaGFyICoqKWJhc2UtPmJ1Zilbbl0gPSAoY2hhciAqKWJhc2UtPmJ1ZiArIHN0YXJ0ICsgbipzdGVwOworCisgICAgLyogSW5pdGlhbGl6ZSBzdWJvZmZzZXRzLiAqLworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKmJhc2UtPnN1Ym9mZnNldHMpKTsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYmFzZS0+c3Vib2Zmc2V0c1swXSA9IHN1Ym9mZnNldDA7CisgICAgZm9yIChuID0gMTsgbiA8IGJhc2UtPm5kaW07IG4rKykKKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IC0xOworCisgICAgLyogQWRqdXN0IHN0cmlkZXMgZm9yIHRoZSBmaXJzdCAoemVyb3RoKSBkaW1lbnNpb24uICovCisgICAgaWYgKGJhc2UtPnN0cmlkZXNbMF0gPj0gMCkgeworICAgICAgICBiYXNlLT5zdHJpZGVzWzBdID0gc2l6ZW9mKGNoYXIgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBTdHJpZGluZyBiYWNrd2FyZHMuICovCisgICAgICAgIGJhc2UtPnN0cmlkZXNbMF0gPSAtKFB5X3NzaXplX3Qpc2l6ZW9mKGNoYXIgKik7CisgICAgICAgIGlmIChiYXNlLT5zaGFwZVswXSA+IDApCisgICAgICAgICAgICBiYXNlLT5idWYgPSAoY2hhciAqKWJhc2UtPmJ1ZiArIChiYXNlLT5zaGFwZVswXS0xKSAqIHNpemVvZihjaGFyICopOworICAgIH0KKworICAgIG5kYnVmLT5mbGFncyAmPSB+KE5EX0N8TkRfRk9SVFJBTik7CisgICAgbmRidWYtPm9mZnNldCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2xlbihQeV9idWZmZXIgKmJhc2UpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYmFzZS0+bGVuID0gMTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKQorICAgICAgICBiYXNlLT5sZW4gKj0gYmFzZS0+c2hhcGVbaV07CisgICAgYmFzZS0+bGVuICo9IGJhc2UtPml0ZW1zaXplOworfQorCitzdGF0aWMgaW50Citpbml0X3N0cnVjdHVyZShuZGJ1Zl90ICpuZGJ1ZiwgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmRpbSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisKKyAgICBiYXNlLT5uZGltID0gKGludCluZGltOworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgaWYgKG5kYnVmLT5mbGFncyAmIE5EX1BJTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibmRpbSA9IDAgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBORF9QSUwiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gKE5EX1NDQUxBUnxORF9DfE5EX0ZPUlRSQU4pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBzaGFwZSAqLworICAgIGJhc2UtPnNoYXBlID0gc2VxX2FzX3NzaXplX2FycmF5KHNoYXBlLCBuZGltLCAxKTsKKyAgICBpZiAoYmFzZS0+c2hhcGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogc3RyaWRlcyAqLworICAgIGlmIChzdHJpZGVzKSB7CisgICAgICAgIGJhc2UtPnN0cmlkZXMgPSBzZXFfYXNfc3NpemVfYXJyYXkoc3RyaWRlcywgbmRpbSwgMCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBiYXNlLT5zdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kYnVmLCBuZGJ1Zi0+ZmxhZ3MpOworICAgIH0KKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHZlcmlmeV9zdHJ1Y3R1cmUoYmFzZS0+bGVuLCBiYXNlLT5pdGVtc2l6ZSwgbmRidWYtPm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT5zaGFwZSwgYmFzZS0+c3RyaWRlcywgbmRpbSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBidWYgKi8KKyAgICBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YSArIG5kYnVmLT5vZmZzZXQ7CisKKyAgICAvKiBsZW4gKi8KKyAgICBpbml0X2xlbihiYXNlKTsKKworICAgIC8qIG5kYnVmLT5mbGFncyAqLworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgJ0MnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0M7CisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyhiYXNlLCAnRicpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfRk9SVFJBTjsKKworCisgICAgLyogY29udmVydCBudW1weSBhcnJheSB0byBzdWJvZmZzZXQgcmVwcmVzZW50YXRpb24gKi8KKyAgICBpZiAobmRidWYtPmZsYWdzICYgTkRfUElMKSB7CisgICAgICAgIC8qIG1vZGlmaWVzIGJhc2UtPmJ1ZiwgYmFzZS0+c3RyaWRlcyBhbmQgYmFzZS0+c3Vib2Zmc2V0cyAqKi8KKyAgICAgICAgcmV0dXJuIGluaXRfc3Vib2Zmc2V0cyhuZGJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBuZGJ1Zl90ICoKK2luaXRfbmRidWYoUHlPYmplY3QgKml0ZW1zLCBQeU9iamVjdCAqc2hhcGUsIFB5T2JqZWN0ICpzdHJpZGVzLAorICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCwgUHlPYmplY3QgKmZvcm1hdCwgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmOworICAgIFB5X3NzaXplX3QgbmRpbTsKKyAgICBQeV9zc2l6ZV90IG5pdGVtczsKKyAgICBQeV9zc2l6ZV90IGl0ZW1zaXplOworCisgICAgLyogbmRpbSA9IGxlbihzaGFwZSkgKi8KKyAgICBDSEVDS19MSVNUX09SX1RVUExFKHNoYXBlKQorICAgIG5kaW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc2hhcGUpOworICAgIGlmIChuZGltID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRpbSBtdXN0IG5vdCBleGNlZWQgJWQiLCBORF9NQVhfTkRJTSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGxlbihzdHJpZGVzKSA9IGxlbihzaGFwZSkgKi8KKyAgICBpZiAoc3RyaWRlcykgeworICAgICAgICBDSEVDS19MSVNUX09SX1RVUExFKHN0cmlkZXMpCisgICAgICAgIGlmIChQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3RyaWRlcykgPT0gMCkKKyAgICAgICAgICAgIHN0cmlkZXMgPSBOVUxMOworICAgICAgICBlbHNlIGlmIChmbGFncyAmIE5EX0ZPUlRSQU4pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIk5EX0ZPUlRSQU4gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBzdHJpZGVzIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3RyaWRlcykgIT0gbmRpbSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImxlbihzaGFwZSkgIT0gbGVuKHN0cmlkZXMpIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGl0ZW1zaXplICovCisgICAgaXRlbXNpemUgPSBnZXRfaXRlbXNpemUoZm9ybWF0KTsKKyAgICBpZiAoaXRlbXNpemUgPD0gMCkgeworICAgICAgICBpZiAoaXRlbXNpemUgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIml0ZW1zaXplIG11c3Qgbm90IGJlIHplcm8iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBjb252ZXJ0IHNjYWxhciB0byBsaXN0ICovCisgICAgaWYgKG5kaW0gPT0gMCkgeworICAgICAgICBpdGVtcyA9IFB5X0J1aWxkVmFsdWUoIihPKSIsIGl0ZW1zKTsKKyAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoaXRlbXMpCisgICAgICAgIFB5X0lOQ1JFRihpdGVtcyk7CisgICAgfQorCisgICAgLyogbnVtYmVyIG9mIGl0ZW1zICovCisgICAgbml0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGl0ZW1zKTsKKyAgICBpZiAobml0ZW1zID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW5pdGlhbGl6ZXIgbGlzdCBvciB0dXBsZSBtdXN0IG5vdCBiZSBlbXB0eSIpOworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1ZiA9IG5kYnVmX25ldyhuaXRlbXMsIGl0ZW1zaXplLCBvZmZzZXQsIGZsYWdzKTsKKyAgICBpZiAobmRidWYgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKworICAgIGlmIChpbml0X3NpbXBsZShuZGJ1ZiwgaXRlbXMsIGZvcm1hdCwgaXRlbXNpemUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoaW5pdF9zdHJ1Y3R1cmUobmRidWYsIHNoYXBlLCBzdHJpZGVzLCBuZGltKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgIHJldHVybiBuZGJ1ZjsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICBuZGJ1Zl9mcmVlKG5kYnVmKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogaW5pdGlhbGl6ZSBhbmQgcHVzaCBhIG5ldyBiYXNlIG9udG8gdGhlIGxpbmtlZCBsaXN0ICovCitzdGF0aWMgaW50CituZGFycmF5X3B1c2hfYmFzZShOREFycmF5T2JqZWN0ICpuZCwgUHlPYmplY3QgKml0ZW1zLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0LCBQeU9iamVjdCAqZm9ybWF0LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWY7CisKKyAgICBuZGJ1ZiA9IGluaXRfbmRidWYoaXRlbXMsIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpOworICAgIGlmIChuZGJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZGJ1Zl9wdXNoKG5kLCBuZGJ1Zik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgUHlCVUZfVU5VU0VEIDB4MTAwMDAKK3N0YXRpYyBpbnQKK25kYXJyYXlfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgIm9iaiIsICJzaGFwZSIsICJzdHJpZGVzIiwgIm9mZnNldCIsICJmb3JtYXQiLCAiZmxhZ3MiLCAiZ2V0YnVmIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOyAgLyogaW5pdGlhbGl6ZXI6IHNjYWxhciwgbGlzdCwgdHVwbGUgb3IgYmFzZSBvYmplY3QgKi8KKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOyAgIC8qIHNpemUgb2YgZWFjaCBkaW1lbnNpb24gKi8KKyAgICBQeU9iamVjdCAqc3RyaWRlcyA9IE5VTEw7IC8qIG51bWJlciBvZiBieXRlcyB0byB0aGUgbmV4dCBlbHQgaW4gZWFjaCBkaW0gKi8KKyAgICBQeV9zc2l6ZV90IG9mZnNldCA9IDA7ICAgICAgICAgICAgLyogYnVmZmVyIG9mZnNldCAqLworICAgIFB5T2JqZWN0ICpmb3JtYXQgPSBzaW1wbGVfZm9ybWF0OyAvKiBzdHJ1Y3QgbW9kdWxlIHNwZWNpZmllcjogIkIiICovCisgICAgaW50IGZsYWdzID0gTkRfREVGQVVMVDsgICAgICAgICAgIC8qIGJhc2UgYnVmZmVyIGFuZCBuZGFycmF5IGZsYWdzICovCisKKyAgICBpbnQgZ2V0YnVmID0gUHlCVUZfVU5VU0VEOyAvKiByZS1leHBvcnRlcjogZ2V0YnVmZmVyIHJlcXVlc3QgZmxhZ3MgKi8KKworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T09uT2lpIiwga3dsaXN0LAorICAgICAgICAgICAgJnYsICZzaGFwZSwgJnN0cmlkZXMsICZvZmZzZXQsICZmb3JtYXQsICZmbGFncywgJmdldGJ1ZikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIE5EQXJyYXlPYmplY3QgaXMgcmUtZXhwb3J0ZXIgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIodikgJiYgc2hhcGUgPT0gTlVMTCkgeworICAgICAgICBpZiAoc3RyaWRlcyB8fCBvZmZzZXQgfHwgZm9ybWF0ICE9IHNpbXBsZV9mb3JtYXQgfHwKKyAgICAgICAgICAgICEoZmxhZ3MgPT0gTkRfREVGQVVMVCB8fCBmbGFncyA9PSBORF9SRURJUkVDVCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAiY29uc3RydWN0aW9uIGZyb20gZXhwb3J0ZXIgb2JqZWN0IG9ubHkgdGFrZXMgJ29iaicsICdnZXRidWYnICIKKyAgICAgICAgICAgICAgICJhbmQgJ2ZsYWdzJyBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGdldGJ1ZiA9IChnZXRidWYgPT0gUHlCVUZfVU5VU0VEKSA/IFB5QlVGX0ZVTExfUk8gOiBnZXRidWY7CisKKyAgICAgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYodiwgbmQsIGdldGJ1ZikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGluaXRfZmxhZ3MobmQtPmhlYWQpOworICAgICAgICBuZC0+aGVhZC0+ZmxhZ3MgfD0gZmxhZ3M7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogTkRBcnJheU9iamVjdCBpcyB0aGUgb3JpZ2luYWwgYmFzZSBvYmplY3QuICovCisgICAgaWYgKGdldGJ1ZiAhPSBQeUJVRl9VTlVTRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJnZXRidWYgYXJndW1lbnQgb25seSB2YWxpZCBmb3IgY29uc3RydWN0aW9uIGZyb20gZXhwb3J0ZXIgIgorICAgICAgICAgICAgIm9iamVjdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzaGFwZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAic2hhcGUgaXMgYSByZXF1aXJlZCBhcmd1bWVudCB3aGVuIGNvbnN0cnVjdGluZyBmcm9tICIKKyAgICAgICAgICAgICJsaXN0LCB0dXBsZSBvciBzY2FsYXIiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChmbGFncyAmIE5EX1ZBUkVYUE9SVCkgeworICAgICAgICBuZC0+ZmxhZ3MgfD0gTkRfVkFSRVhQT1JUOworICAgICAgICBmbGFncyAmPSB+TkRfVkFSRVhQT1JUOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgYW5kIHB1c2ggdGhlIGZpcnN0IGJhc2UgYnVmZmVyIG9udG8gdGhlIGxpbmtlZCBsaXN0LiAqLworICAgIHJldHVybiBuZGFycmF5X3B1c2hfYmFzZShuZCwgdiwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCwgZm9ybWF0LCBmbGFncyk7Cit9CisKKy8qIFB1c2ggYW4gYWRkaXRpb25hbCBiYXNlIG9udG8gdGhlIGxpbmtlZCBsaXN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfcHVzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgIml0ZW1zIiwgInNoYXBlIiwgInN0cmlkZXMiLCAib2Zmc2V0IiwgImZvcm1hdCIsICJmbGFncyIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICppdGVtcyA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZXI6IHNjYWxhciwgbGlzdCBvciB0dXBsZSAqLworICAgIFB5T2JqZWN0ICpzaGFwZSA9IE5VTEw7ICAgLyogc2l6ZSBvZiBlYWNoIGRpbWVuc2lvbiAqLworICAgIFB5T2JqZWN0ICpzdHJpZGVzID0gTlVMTDsgLyogbnVtYmVyIG9mIGJ5dGVzIHRvIHRoZSBuZXh0IGVsdCBpbiBlYWNoIGRpbSAqLworICAgIFB5T2JqZWN0ICpmb3JtYXQgPSBzaW1wbGVfZm9ybWF0OyAgLyogc3RydWN0IG1vZHVsZSBzcGVjaWZpZXI6ICJCIiAqLworICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gMDsgICAgICAgICAgICAgLyogYnVmZmVyIG9mZnNldCAqLworICAgIGludCBmbGFncyA9IE5EX0RFRkFVTFQ7ICAgICAgICAgICAgLyogYmFzZSBidWZmZXIgZmxhZ3MgKi8KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT3xPbk9pIiwga3dsaXN0LAorICAgICAgICAgICAgJml0ZW1zLCAmc2hhcGUsICZzdHJpZGVzLCAmb2Zmc2V0LCAmZm9ybWF0LCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmbGFncyAmIE5EX1ZBUkVYUE9SVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJORF9WQVJFWFBPUlQgZmxhZyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBvYmplY3QgY3JlYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChORF9JU19DT05TVU1FUihuZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInN0cnVjdHVyZSBvZiByZS1leHBvcnRpbmcgb2JqZWN0IGlzIGltbXV0YWJsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCEobmQtPmZsYWdzJk5EX1ZBUkVYUE9SVCkgJiYgbmQtPmhlYWQtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgY2hhbmdlIHN0cnVjdHVyZTogJXpkIGV4cG9ydGVkIGJ1ZmZlciVzIiwKKyAgICAgICAgICAgIG5kLT5oZWFkLT5leHBvcnRzLCBuZC0+aGVhZC0+ZXhwb3J0cz09MSA/ICIiIDogInMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG5kYXJyYXlfcHVzaF9iYXNlKG5kLCBpdGVtcywgc2hhcGUsIHN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgZm9ybWF0LCBmbGFncykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogUG9wIGEgYmFzZSBmcm9tIHRoZSBsaW5rZWQgbGlzdCAoaWYgcG9zc2libGUpLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfcG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaWYgKE5EX0lTX0NPTlNVTUVSKG5kKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAic3RydWN0dXJlIG9mIHJlLWV4cG9ydGluZyBvYmplY3QgaXMgaW1tdXRhYmxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobmQtPmhlYWQtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgY2hhbmdlIHN0cnVjdHVyZTogJXpkIGV4cG9ydGVkIGJ1ZmZlciVzIiwKKyAgICAgICAgICAgIG5kLT5oZWFkLT5leHBvcnRzLCBuZC0+aGVhZC0+ZXhwb3J0cz09MSA/ICIiIDogInMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChuZC0+aGVhZC0+bmV4dCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJsaXN0IG9ubHkgaGFzIGEgc2luZ2xlIGJhc2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWZfcG9wKG5kKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50CituZGFycmF5X2dldGJ1ZihOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGludCBiYXNlZmxhZ3MgPSBuZGJ1Zi0+ZmxhZ3M7CisKKyAgICAvKiByZWRpcmVjdCBtb2RlICovCisgICAgaWYgKGJhc2UtPm9iaiAhPSBOVUxMICYmIChiYXNlZmxhZ3MmTkRfUkVESVJFQ1QpKSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9HZXRCdWZmZXIoYmFzZS0+b2JqLCB2aWV3LCBmbGFncyk7CisgICAgfQorCisgICAgLyogc3RhcnQgd2l0aCBjb21wbGV0ZSBpbmZvcm1hdGlvbiAqLworICAgICp2aWV3ID0gKmJhc2U7CisgICAgdmlldy0+b2JqID0gTlVMTDsKKworICAgIC8qIHJlY29uc3RydWN0IGZvcm1hdCAqLworICAgIGlmICh2aWV3LT5mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gIkIiOworCisgICAgaWYgKGJhc2UtPm5kaW0gIT0gMCAmJgorICAgICAgICAoKFJFUV9TSEFQRShmbGFncykgJiYgYmFzZS0+c2hhcGUgPT0gTlVMTCkgfHwKKyAgICAgICAgIChSRVFfU1RSSURFUyhmbGFncykgJiYgYmFzZS0+c3RyaWRlcyA9PSBOVUxMKSkpIHsKKyAgICAgICAgLyogVGhlIG5kYXJyYXkgaXMgYSByZS1leHBvcnRlciB0aGF0IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aG91dCBmdWxsCisgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSB0aGUKKyAgICAgICAgICAgbmRhcnJheSBpcyBub3QgYSBQRVAtMzExOCBjb21wbGlhbnQgYnVmZmVyIHByb3ZpZGVyLiAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAicmUtZXhwb3J0ZXIgZG9lcyBub3QgcHJvdmlkZSBmb3JtYXQsIHNoYXBlIG9yIHN0cmlkZXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChiYXNlZmxhZ3MgJiBORF9HRVRCVUZfRkFJTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiTkRfR0VUQlVGX0ZBSUw6IGZvcmNlZCB0ZXN0IGV4Y2VwdGlvbiIpOworICAgICAgICBpZiAoYmFzZWZsYWdzICYgTkRfR0VUQlVGX1VOREVGSU5FRCkKKyAgICAgICAgICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKTB4MTsgLyogd3JvbmcgYnV0IHBlcm1pdHRlZCBpbiA8PSAzLjIgKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChSRVFfV1JJVEFCTEUoZmxhZ3MpICYmIGJhc2UtPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCB3cml0YWJsZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0ZPUk1BVChmbGFncykpIHsKKyAgICAgICAgLyogTlVMTCBpbmRpY2F0ZXMgdGhhdCB0aGUgYnVmZmVyJ3MgZGF0YSB0eXBlIGhhcyBiZWVuIGNhc3QgdG8gJ0InLgorICAgICAgICAgICB2aWV3LT5pdGVtc2l6ZSBpcyB0aGUgX3ByZXZpb3VzXyBpdGVtc2l6ZS4gSWYgc2hhcGUgaXMgcHJlc2VudCwKKyAgICAgICAgICAgdGhlIGVxdWFsaXR5IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gc3RpbGwgaG9sZHMgYXQgdGhpcworICAgICAgICAgICBwb2ludC4gVGhlIGVxdWFsaXR5IGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZSBkb2VzIF9ub3RfIGhvbGQKKyAgICAgICAgICAgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5mb3JtYXQgPSBOVUxMOworICAgIH0KKworICAgIGlmIChSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfQ19DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfRk9SVFJBTl9DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IEZvcnRyYW4gY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFORF9BTllfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBjb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfSU5ESVJFQ1QoZmxhZ3MpICYmIChiYXNlZmxhZ3MgJiBORF9QSUwpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGNhbm5vdCBiZSByZXByZXNlbnRlZCB3aXRob3V0IHN1Ym9mZnNldHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9TVFJJREVTKGZsYWdzKSkgeworICAgICAgICBpZiAoIU5EX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHZpZXctPnN0cmlkZXMgPSBOVUxMOworICAgIH0KKyAgICBpZiAoIVJFUV9TSEFQRShmbGFncykpIHsKKyAgICAgICAgLyogUHlCVUZfU0lNUExFIG9yIFB5QlVGX1dSSVRBQkxFOiBhdCB0aGlzIHBvaW50IGJ1ZiBpcyBDLWNvbnRpZ3VvdXMsCisgICAgICAgICAgIHNvIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhLiAqLworICAgICAgICBpZiAodmlldy0+Zm9ybWF0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFB5QlVGX1NJTVBMRXxQeUJVRl9GT1JNQVQgYW5kIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVCBkbworICAgICAgICAgICAgICAgbm90IG1ha2Ugc2Vuc2UuICovCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kYXJyYXk6IGNhbm5vdCBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzIGlmIHRoZSBmb3JtYXQgZmxhZyAiCisgICAgICAgICAgICAgICAgImlzIHByZXNlbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIGFuZCBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUKKyAgICAgICAgICAgZG8gX25vdF8gaG9sZCBmcm9tIGhlcmUgb24hICovCisgICAgICAgIHZpZXctPm5kaW0gPSAxOworICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CisgICAgfQorCisgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICBQeV9JTkNSRUYodmlldy0+b2JqKTsKKyAgICBzZWxmLT5oZWFkLT5leHBvcnRzKys7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbmRhcnJheV9yZWxlYXNlYnVmKE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBpZiAoIU5EX0lTX0NPTlNVTUVSKHNlbGYpKSB7CisgICAgICAgIG5kYnVmX3QgKm5kYnVmID0gdmlldy0+aW50ZXJuYWw7CisgICAgICAgIGlmICgtLW5kYnVmLT5leHBvcnRzID09IDAgJiYgbmRidWYgIT0gc2VsZi0+aGVhZCkKKyAgICAgICAgICAgIG5kYnVmX2RlbGV0ZShzZWxmLCBuZGJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeUJ1ZmZlclByb2NzIG5kYXJyYXlfYXNfYnVmZmVyID0geworICAgIChnZXRidWZmZXJwcm9jKW5kYXJyYXlfZ2V0YnVmLCAgICAgICAgLyogYmZfZ2V0YnVmZmVyICovCisgICAgKHJlbGVhc2VidWZmZXJwcm9jKW5kYXJyYXlfcmVsZWFzZWJ1ZiAvKiBiZl9yZWxlYXNlYnVmZmVyICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhpbmcvc2xpY2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21faW5kZXgoUHlfYnVmZmVyICpiYXNlLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGNoYXIgKnB0cjsKKyAgICBQeV9zc2l6ZV90IG5pdGVtczsgLyogaXRlbXMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiAqLworCisgICAgaWYgKGJhc2UtPnNoYXBlKQorICAgICAgICBuaXRlbXMgPSBiYXNlLT5zaGFwZVswXTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGJhc2UtPm5kaW0gPT0gMSAmJiBTSU1QTEVfRk9STUFUKGJhc2UtPmZvcm1hdCkpOworICAgICAgICBuaXRlbXMgPSBiYXNlLT5sZW47CisgICAgfQorCisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCArPSBuaXRlbXM7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbml0ZW1zKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwdHIgPSAoY2hhciAqKWJhc2UtPmJ1ZjsKKworICAgIGlmIChiYXNlLT5zdHJpZGVzID09IE5VTEwpCisgICAgICAgICBwdHIgKz0gYmFzZS0+aXRlbXNpemUgKiBpbmRleDsKKyAgICBlbHNlCisgICAgICAgICBwdHIgKz0gYmFzZS0+c3RyaWRlc1swXSAqIGluZGV4OworCisgICAgcHRyID0gQURKVVNUX1BUUihwdHIsIGJhc2UtPnN1Ym9mZnNldHMpOworCisgICAgcmV0dXJuIHB0cjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfaXRlbShOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gc2VsZi0+aGVhZDsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgY2hhciAqcHRyOworCisgICAgaWYgKGJhc2UtPm5kaW0gPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiBzY2FsYXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gcHRyX2Zyb21faW5kZXgoYmFzZSwgaW5kZXgpOworICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYmFzZS0+bmRpbSA9PSAxKSB7CisgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHB0ciwgYmFzZS0+Zm9ybWF0LCBiYXNlLT5pdGVtc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICAgICAgUHlfYnVmZmVyICpzdWJ2aWV3OworCisgICAgICAgIG5kID0gKE5EQXJyYXlPYmplY3QgKiluZGFycmF5X25ldygmTkRBcnJheV9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKG5kID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAobmRhcnJheV9pbml0X3N0YXRpY2J1ZigoUHlPYmplY3QgKilzZWxmLCBuZCwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBzdWJ2aWV3ID0gJm5kLT5zdGF0aWNidWYuYmFzZTsKKworICAgICAgICBzdWJ2aWV3LT5idWYgPSBwdHI7CisgICAgICAgIHN1YnZpZXctPmxlbiAvPSBzdWJ2aWV3LT5zaGFwZVswXTsKKworICAgICAgICBzdWJ2aWV3LT5uZGltLS07CisgICAgICAgIHN1YnZpZXctPnNoYXBlKys7CisgICAgICAgIGlmIChzdWJ2aWV3LT5zdHJpZGVzKSBzdWJ2aWV3LT5zdHJpZGVzKys7CisgICAgICAgIGlmIChzdWJ2aWV3LT5zdWJvZmZzZXRzKSBzdWJ2aWV3LT5zdWJvZmZzZXRzKys7CisKKyAgICAgICAgaW5pdF9mbGFncygmbmQtPnN0YXRpY2J1Zik7CisKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5kOworICAgIH0KK30KKworLyoKKyAgRm9yIGVhY2ggZGltZW5zaW9uLCB3ZSBnZXQgdmFsaWQgKHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aCkgcXVhZHJ1cGxlcworICBmcm9tIFB5U2xpY2VfR2V0SW5kaWNlc0V4KCkuCisKKyAgU2xpY2luZyBOdW1QeSBhcnJheXMKKyAgPT09PT09PT09PT09PT09PT09PT0KKworICAgIEEgcG9pbnRlciB0byBhbiBlbGVtZW50IGluIGEgTnVtUHkgYXJyYXkgaXMgZGVmaW5lZCBieToKKworICAgICAgcHRyID0gKGNoYXIgKilidWYgKyBpbmRpY2VzWzBdICogc3RyaWRlc1swXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXNbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgQWRqdXN0IGJ1ZjoKKyAgICAtLS0tLS0tLS0tLQorICAgICAgQWRkaW5nIHN0YXJ0W25dIGZvciBlYWNoIGRpbWVuc2lvbiBlZmZlY3RpdmVseSBhZGRzIHRoZSBjb25zdGFudDoKKworICAgICAgICBjID0gc3RhcnRbMF0gKiBzdHJpZGVzWzBdICsgLi4uICsgc3RhcnRbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgICBUaGVyZWZvcmUgaW5pdF9zbGljZSgpIGFkZHMgYWxsIHN0YXJ0W25dIGRpcmVjdGx5IHRvIGJ1Zi4KKworICAgIEFkanVzdCBzaGFwZToKKyAgICAtLS0tLS0tLS0tLS0tCisgICAgICBPYnZpb3VzbHkgc2hhcGVbbl0gPSBzbGljZWxlbmd0aFtuXQorCisgICAgQWRqdXN0IHN0cmlkZXM6CisgICAgLS0tLS0tLS0tLS0tLS0tCisgICAgICBJbiB0aGUgb3JpZ2luYWwgYXJyYXksIHRoZSBuZXh0IGVsZW1lbnQgaW4gYSBkaW1lbnNpb24gaXMgcmVhY2hlZAorICAgICAgYnkgYWRkaW5nIHN0cmlkZXNbbl0gdG8gdGhlIHBvaW50ZXIuIEluIHRoZSBzbGljZWQgYXJyYXksIGVsZW1lbnRzCisgICAgICBtYXkgYmUgc2tpcHBlZCwgc28gdGhlIG5leHQgZWxlbWVudCBpcyByZWFjaGVkIGJ5IGFkZGluZzoKKworICAgICAgICBzdHJpZGVzW25dICogc3RlcFtuXQorCisgIFNsaWNpbmcgUElMIGFycmF5cworICA9PT09PT09PT09PT09PT09PT0KKworICAgIExheW91dDoKKyAgICAtLS0tLS0tCisgICAgICBJbiB0aGUgZmlyc3QgKHplcm90aCkgZGltZW5zaW9uLCBQSUwgYXJyYXlzIGhhdmUgYW4gYXJyYXkgb2YgcG9pbnRlcnMKKyAgICAgIHRvIHN1Yi1hcnJheXMgb2YgbmRpbS0xLiBTdHJpZGluZyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uIGlzIGRvbmUgYnkKKyAgICAgIGdldHRpbmcgdGhlIGluZGV4IG9mIHRoZSBudGggcG9pbnRlciwgZGVyZWZlcmVuY2UgaXQgYW5kIHRoZW4gYWRkIGEKKyAgICAgIHN1Ym9mZnNldCB0byBpdC4gVGhlIGFycmF5cyBwb2ludGVkIHRvIGNhbiBiZXN0IGJlIHNlZW4gYSByZWd1bGFyCisgICAgICBOdW1QeSBhcnJheXMuCisKKyAgICBBZGp1c3QgYnVmOgorICAgIC0tLS0tLS0tLS0tCisgICAgICBJbiB0aGUgb3JpZ2luYWwgYXJyYXksIGJ1ZiBwb2ludHMgdG8gYSBsb2NhdGlvbiAodXN1YWxseSB0aGUgc3RhcnQpCisgICAgICBpbiB0aGUgYXJyYXkgb2YgcG9pbnRlcnMuIEZvciB0aGUgc2xpY2VkIGFycmF5LCBzdGFydFswXSBjYW4gYmUKKyAgICAgIGFkZGVkIHRvIGJ1ZiBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgZm9yIE51bVB5IGFycmF5cy4KKworICAgIEFkanVzdCBzdWJvZmZzZXRzOgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgRHVlIHRvIHRoZSBkZXJlZmVyZW5jaW5nIHN0ZXAgaW4gdGhlIGFkZHJlc3Npbmcgc2NoZW1lLCBpdCBpcyBub3QKKyAgICAgIHBvc3NpYmxlIHRvIGFkanVzdCBidWYgZm9yIGhpZ2hlciBkaW1lbnNpb25zLiBSZWNhbGwgdGhhdCB0aGUKKyAgICAgIHN1Yi1hcnJheXMgcG9pbnRlZCB0byBhcmUgcmVndWxhciBOdW1QeSBhcnJheXMsIHNvIGZvciBlYWNoIG9mCisgICAgICB0aG9zZSBhcnJheXMgYWRkaW5nIHN0YXJ0W25dIGVmZmVjdGl2ZWx5IGFkZHMgdGhlIGNvbnN0YW50OgorCisgICAgICAgIGMgPSBzdGFydFsxXSAqIHN0cmlkZXNbMV0gKyAuLi4gKyBzdGFydFtuZGltLTFdICogc3RyaWRlc1tuZGltLTFdCisKKyAgICAgIFRoaXMgY29uc3RhbnQgaXMgYWRkZWQgdG8gc3Vib2Zmc2V0c1swXS4gc3Vib2Zmc2V0c1swXSBpbiB0dXJuIGlzCisgICAgICBhZGRlZCB0byBlYWNoIHBvaW50ZXIgcmlnaHQgYWZ0ZXIgZGVyZWZlcmVuY2luZy4KKworICAgIEFkanVzdCBzaGFwZSBhbmQgc3RyaWRlczoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICBTaGFwZSBhbmQgc3RyaWRlcyBhcmUgbm90IGluZmx1ZW5jZWQgYnkgdGhlIGRlcmVmZXJlbmNpbmcgc3RlcCwgc28KKyAgICAgIHRoZXkgYXJlIGFkanVzdGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyBmb3IgTnVtUHkgYXJyYXlzLgorCisgIE11bHRpcGxlIGxldmVscyBvZiBzdWJvZmZzZXRzCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgIEZvciBhIGNvbnN0cnVjdCBsaWtlIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIGFycmF5IG9mIHBvaW50ZXJzIHRvCisgICAgICBzdWItYXJyYXlzIG9mIG5kaW0tMjoKKworICAgICAgICBzdWJvZmZzZXRzWzBdID0gc3RhcnRbMV0gKiBzdHJpZGVzWzFdCisgICAgICAgIHN1Ym9mZnNldHNbMV0gPSBzdGFydFsyXSAqIHN0cmlkZXNbMl0gKyAuLi4KKyovCitzdGF0aWMgaW50Citpbml0X3NsaWNlKFB5X2J1ZmZlciAqYmFzZSwgUHlPYmplY3QgKmtleSwgaW50IGRpbSkKK3sKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKKworICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChrZXksIGJhc2UtPnNoYXBlW2RpbV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMIHx8IGRpbSA9PSAwKSB7CisgICAgYWRqdXN0X2J1ZjoKKyAgICAgICAgYmFzZS0+YnVmID0gKGNoYXIgKiliYXNlLT5idWYgKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IGRpbS0xOworICAgICAgICB3aGlsZSAobiA+PSAwICYmIGJhc2UtPnN1Ym9mZnNldHNbbl0gPCAwKQorICAgICAgICAgICAgbi0tOworICAgICAgICBpZiAobiA8IDApCisgICAgICAgICAgICBnb3RvIGFkanVzdF9idWY7IC8qIGFsbCBzdWJvZmZzZXRzIGFyZSBuZWdhdGl2ZSAqLworICAgICAgICBiYXNlLT5zdWJvZmZzZXRzW25dID0gYmFzZS0+c3Vib2Zmc2V0c1tuXSArIGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0YXJ0OworICAgIH0KKyAgICBiYXNlLT5zaGFwZVtkaW1dID0gc2xpY2VsZW5ndGg7CisgICAgYmFzZS0+c3RyaWRlc1tkaW1dID0gYmFzZS0+c3RyaWRlc1tkaW1dICogc3RlcDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb3B5X3N0cnVjdHVyZShQeV9idWZmZXIgKmJhc2UpCit7CisgICAgUHlfc3NpemVfdCAqc2hhcGUgPSBOVUxMLCAqc3RyaWRlcyA9IE5VTEwsICpzdWJvZmZzZXRzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBzaGFwZSA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqc2hhcGUpKTsKKyAgICBzdHJpZGVzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzdHJpZGVzKSk7CisgICAgaWYgKHNoYXBlID09IE5VTEwgfHwgc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycl9ub21lbTsKKworICAgIHN1Ym9mZnNldHMgPSBOVUxMOworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzKSB7CisgICAgICAgIHN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnN1Ym9mZnNldHMpKTsKKyAgICAgICAgaWYgKHN1Ym9mZnNldHMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyX25vbWVtOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspIHsKKyAgICAgICAgc2hhcGVbaV0gPSBiYXNlLT5zaGFwZVtpXTsKKyAgICAgICAgc3RyaWRlc1tpXSA9IGJhc2UtPnN0cmlkZXNbaV07CisgICAgICAgIGlmIChzdWJvZmZzZXRzKQorICAgICAgICAgICAgc3Vib2Zmc2V0c1tpXSA9IGJhc2UtPnN1Ym9mZnNldHNbaV07CisgICAgfQorCisgICAgYmFzZS0+c2hhcGUgPSBzaGFwZTsKKyAgICBiYXNlLT5zdHJpZGVzID0gc3RyaWRlczsKKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gc3Vib2Zmc2V0czsKKworICAgIHJldHVybiAwOworCitlcnJfbm9tZW06CisgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBQeU1lbV9YRnJlZShzaGFwZSk7CisgICAgUHlNZW1fWEZyZWUoc3RyaWRlcyk7CisgICAgUHlNZW1fWEZyZWUoc3Vib2Zmc2V0cyk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9zdWJzY3JpcHQoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKworICAgIGlmIChiYXNlLT5uZGltID09IDApIHsKKyAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUoYmFzZS0+YnVmLCBiYXNlLT5mb3JtYXQsIGJhc2UtPml0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2Ygc2NhbGFyIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGtleSk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBuZGFycmF5X2l0ZW0oc2VsZiwgaW5kZXgpOworICAgIH0KKworICAgIG5kID0gKE5EQXJyYXlPYmplY3QgKiluZGFycmF5X25ldygmTkRBcnJheV9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAobmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBuZXcgbmRhcnJheSBpcyBhIGNvbnN1bWVyICovCisgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYoKFB5T2JqZWN0ICopc2VsZiwgbmQsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYobmQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBjb3B5IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzICovCisgICAgbmRidWYgPSBuZC0+aGVhZDsKKyAgICBiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGlmIChjb3B5X3N0cnVjdHVyZShiYXNlKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5kYnVmLT5mbGFncyB8PSBORF9PV05fQVJSQVlTOworCisgICAgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgeworICAgICAgICAvKiBvbmUtZGltZW5zaW9uYWwgc2xpY2UgKi8KKyAgICAgICAgaWYgKGluaXRfc2xpY2UoYmFzZSwga2V5LCAwKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICB9CisgICAgZWxzZSBpZiBQeVR1cGxlX0NoZWNrKGtleSkgeworICAgICAgICAvKiBtdWx0aS1kaW1lbnNpb25hbCBzbGljZSAqLworICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBrZXk7CisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgICAgICBuID0gUHlUdXBsZV9HRVRfU0laRSh0dXBsZSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9IFB5VHVwbGVfR0VUX0lURU0odHVwbGUsIGkpOworICAgICAgICAgICAgaWYgKCFQeVNsaWNlX0NoZWNrKGtleSkpCisgICAgICAgICAgICAgICAgZ290byB0eXBlX2Vycm9yOworICAgICAgICAgICAgaWYgKGluaXRfc2xpY2UoYmFzZSwga2V5LCAoaW50KWkpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZ290byB0eXBlX2Vycm9yOworICAgIH0KKworICAgIGluaXRfbGVuKGJhc2UpOworICAgIGluaXRfZmxhZ3MobmRidWYpOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5kOworCisKK3R5cGVfZXJyb3I6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgImNhbm5vdCBpbmRleCBtZW1vcnkgdXNpbmcgXCIlLjIwMHNcIiIsCisgICAgICAgIGtleS0+b2JfdHlwZS0+dHBfbmFtZSk7CitlcnJfb2NjdXJyZWQ6CisgICAgUHlfREVDUkVGKG5kKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgaW50CituZGFycmF5X2Fzc19zdWJzY3JpcHQoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kOworICAgIFB5X2J1ZmZlciAqZGVzdCA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIFB5X2J1ZmZlciBzcmM7CisgICAgY2hhciAqcHRyOworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgaW50IHJldCA9IC0xOworCisgICAgaWYgKGRlc3QtPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJuZGFycmF5IGlzIG5vdCB3cml0YWJsZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJuZGFycmF5IGRhdGEgY2Fubm90IGJlIGRlbGV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZGVzdC0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMgfHwKKyAgICAgICAgICAgIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpID09IDApKSB7CisgICAgICAgICAgICBwdHIgPSAoY2hhciAqKWRlc3QtPmJ1ZjsKKyAgICAgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBkZXN0LT5mb3JtYXQsIGRlc3QtPml0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIHNjYWxhciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkZXN0LT5uZGltID09IDEgJiYgUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIC8qIHJ2YWx1ZSBtdXN0IGJlIGEgc2luZ2xlIGl0ZW0gKi8KKyAgICAgICAgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGtleSk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHB0ciA9IHB0cl9mcm9tX2luZGV4KGRlc3QsIGluZGV4KTsKKyAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGRlc3QtPmZvcm1hdCwgZGVzdC0+aXRlbXNpemUpOworICAgIH0KKworICAgIC8qIHJ2YWx1ZSBtdXN0IGJlIGFuIGV4cG9ydGVyICovCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2YWx1ZSwgJnNyYywgUHlCVUZfRlVMTF9STykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5kID0gKE5EQXJyYXlPYmplY3QgKiluZGFycmF5X3N1YnNjcmlwdChzZWxmLCBrZXkpOworICAgIGlmIChuZCAhPSBOVUxMKSB7CisgICAgICAgIGRlc3QgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgICAgIHJldCA9IGNvcHlfYnVmZmVyKGRlc3QsICZzcmMpOworICAgICAgICBQeV9ERUNSRUYobmQpOworICAgIH0KKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NsaWNlX2luZGljZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXQsICprZXksICp0bXA7CisgICAgUHlfc3NpemVfdCBzWzRdOyAvKiBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGggKi8KKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT24iLCAma2V5LCAmbGVuKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFQeVNsaWNlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc2xpY2Ugb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBsZW4sICZzWzBdLCAmc1sxXSwgJnNbMl0sICZzWzNdKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlUdXBsZV9OZXcoNCk7CisgICAgaWYgKHJldCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgdG1wID0gUHlMb25nX0Zyb21Tc2l6ZV90KHNbaV0pOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldCwgaSwgdG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYocmV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBuZGFycmF5X2FzX21hcHBpbmcgPSB7CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYyluZGFycmF5X3N1YnNjcmlwdCwgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLworICAgIChvYmpvYmphcmdwcm9jKW5kYXJyYXlfYXNzX3N1YnNjcmlwdCAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLworfTsKKworc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG5kYXJyYXlfYXNfc2VxdWVuY2UgPSB7CisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCisgICAgICAgIChzc2l6ZWFyZ2Z1bmMpbmRhcnJheV9pdGVtLCAgICAgICAvKiBzcV9pdGVtICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NzaXplX2FycmF5X2FzX3R1cGxlKFB5X3NzaXplX3QgKmFycmF5LCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBQeU9iamVjdCAqdHVwbGUsICp4OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChhcnJheSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlUdXBsZV9OZXcoMCk7CisKKyAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7CisgICAgaWYgKHR1cGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIHggPSBQeUxvbmdfRnJvbVNzaXplX3QoYXJyYXlbaV0pOworICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgaSwgeCk7CisgICAgfQorCisgICAgcmV0dXJuIHR1cGxlOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfZmxhZ3MoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmhlYWQtPmZsYWdzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X29mZnNldChOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gc2VsZi0+aGVhZDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG5kYnVmLT5vZmZzZXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfb2JqKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoYmFzZS0+b2JqID09IE5VTEwpIHsgCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoYmFzZS0+b2JqKTsKKyAgICByZXR1cm4gYmFzZS0+b2JqOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfbmJ5dGVzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5sZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfcmVhZG9ubHkoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGJhc2UtPnJlYWRvbmx5KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X2l0ZW1zaXplKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5pdGVtc2l6ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9mb3JtYXQoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICBjaGFyICpmbXQgPSBiYXNlLT5mb3JtYXQgPyBiYXNlLT5mb3JtYXQgOiAiIjsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X25kaW0oTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfc2hhcGUoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c2hhcGUsIGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfc3RyaWRlcyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBzc2l6ZV9hcnJheV9hc190dXBsZShiYXNlLT5zdHJpZGVzLCBiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3N1Ym9mZnNldHMoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c3Vib2Zmc2V0cywgYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2NfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdDJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0NfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAicmVzdWx0cyBmcm9tIFB5QnVmZmVyX0lzQ29udGlndW91cygpIGFuZCBmbGFncyBkaWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmV0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZm9ydHJhbl9jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBpbnQgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZC0+aGVhZC0+YmFzZSwgJ0YnKTsKKworICAgIGlmIChyZXQgIT0gTkRfRk9SVFJBTl9DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJyZXN1bHRzIGZyb20gUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgYW5kIGZsYWdzIGRpZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBpbnQgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZC0+aGVhZC0+YmFzZSwgJ0EnKTsKKworICAgIGlmIChyZXQgIT0gTkRfQU5ZX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInJlc3VsdHMgZnJvbSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBhbmQgZmxhZ3MgZGlmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldCk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIG5kYXJyYXlfZ2V0c2V0IFtdID0KK3sKKyAgLyogbmRidWYgKi8KKyAgeyAiZmxhZ3MiLCAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9mbGFncywgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAib2Zmc2V0IiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9vZmZzZXQsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgLyogbmRidWYuYmFzZSAqLworICB7ICJvYmoiLCAgICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X29iaiwgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJuYnl0ZXMiLCAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X25ieXRlcywgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJyZWFkb25seSIsICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3JlYWRvbmx5LCAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJpdGVtc2l6ZSIsICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X2l0ZW1zaXplLCAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJmb3JtYXQiLCAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X2Zvcm1hdCwgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJuZGltIiwgICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X25kaW0sICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJzaGFwZSIsICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3NoYXBlLCAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJzdHJpZGVzIiwgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3N0cmlkZXMsICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJzdWJvZmZzZXRzIiwgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X3N1Ym9mZnNldHMsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJjX2NvbnRpZ3VvdXMiLCAoZ2V0dGVyKW5kYXJyYXlfY19jb250aWcsICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJmX2NvbnRpZ3VvdXMiLCAoZ2V0dGVyKW5kYXJyYXlfZm9ydHJhbl9jb250aWcsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJjb250aWd1b3VzIiwgICAoZ2V0dGVyKW5kYXJyYXlfY29udGlnLCAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3RvbGlzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIHJldHVybiBuZGFycmF5X2FzX2xpc3QoKE5EQXJyYXlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfdG9ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gKChOREFycmF5T2JqZWN0ICopc2VsZiktPmhlYWQ7CisgICAgUHlfYnVmZmVyICpzcmMgPSAmbmRidWYtPmJhc2U7CisgICAgUHlfYnVmZmVyIGRlc3Q7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgY2hhciAqbWVtOworCisgICAgaWYgKE5EX0NfQ09OVElHVU9VUyhuZGJ1Zi0+ZmxhZ3MpKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzcmMtPmJ1Ziwgc3JjLT5sZW4pOworCisgICAgYXNzZXJ0KHNyYy0+c2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNyYy0+c3RyaWRlcyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3JjLT5uZGltID4gMCk7CisKKyAgICBtZW0gPSBQeU1lbV9NYWxsb2Moc3JjLT5sZW4pOworICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZXN0ID0gKnNyYzsKKyAgICBkZXN0LmJ1ZiA9IG1lbTsKKyAgICBkZXN0LnN1Ym9mZnNldHMgPSBOVUxMOworICAgIGRlc3Quc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGJ1ZiwgMCk7CisgICAgaWYgKGRlc3Quc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKyAgICBpZiAoY29weV9idWZmZXIoJmRlc3QsIHNyYykgPCAwKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUobWVtLCBzcmMtPmxlbik7CisKK291dDoKKyAgICBQeU1lbV9YRnJlZShkZXN0LnN0cmlkZXMpOworICAgIFB5TWVtX0ZyZWUobWVtKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBhZGQgcmVkdW5kYW50IChuZWdhdGl2ZSkgc3Vib2Zmc2V0cyBmb3IgdGVzdGluZyAqLworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfYWRkX3N1Ym9mZnNldHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBhZGQgc3Vib2Zmc2V0cyB0byBQSUwtc3R5bGUgYXJyYXkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGFkZCBzdWJvZmZzZXRzIHRvIGFycmF5IHdpdGhvdXQgc3RyaWRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqYmFzZS0+c3Vib2Zmc2V0cykpOworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tpXSA9IC0xOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIFRlc3QgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogcmV0dXJuIGEgbWVtb3J5dmlldyBmcm9tIGEgc3RhdGljIGJ1ZmZlci4KKyAgIE9idmlvdXNseSB0aGlzIGlzIGZyYWdpbGUgYW5kIG9ubHkgb25lIHN1Y2ggdmlldyBtYXkgYmUgYWN0aXZlIGF0IGFueQorICAgdGltZS4gTmV2ZXIgdXNlIGFueXRoaW5nIGxpa2UgdGhpcyBpbiByZWFsIGNvZGUhICovCitzdGF0aWMgY2hhciAqaW5mb2J1ZiA9IE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgY29uc3QgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgY29uc3QgUHlfYnVmZmVyICp2aWV3ID0gJm5kLT5oZWFkLT5iYXNlOworICAgIGNvbnN0IG5kYnVmX3QgKm5kYnVmOworICAgIHN0YXRpYyBjaGFyIGZvcm1hdFtORF9NQVhfTkRJTSsxXTsKKyAgICBzdGF0aWMgUHlfc3NpemVfdCBzaGFwZVtORF9NQVhfTkRJTV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc3RyaWRlc1tORF9NQVhfTkRJTV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc3Vib2Zmc2V0c1tORF9NQVhfTkRJTV07CisgICAgc3RhdGljIFB5X2J1ZmZlciBpbmZvOworICAgIGNoYXIgKnA7CisKKyAgICBpZiAoIU5EX0lTX0NPTlNVTUVSKG5kKSkKKyAgICAgICAgbmRidWYgPSBuZC0+aGVhZDsgLyogc2VsZiBpcyBuZGFycmF5L29yaWdpbmFsIGV4cG9ydGVyICovCisgICAgZWxzZSBpZiAoTkRBcnJheV9DaGVjayh2aWV3LT5vYmopICYmICFORF9JU19DT05TVU1FUih2aWV3LT5vYmopKQorICAgICAgICAvKiBzZWxmIGlzIG5kYXJyYXkgYW5kIGNvbnN1bWVyIGZyb20gbmRhcnJheS9vcmlnaW5hbCBleHBvcnRlciAqLworICAgICAgICBuZGJ1ZiA9ICgoTkRBcnJheU9iamVjdCAqKXZpZXctPm9iaiktPmhlYWQ7CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCk6IG5kYXJyYXkgbXVzdCBiZSBvcmlnaW5hbCBleHBvcnRlciBvciAiCisgICAgICAgICJjb25zdW1lciBmcm9tIG5kYXJyYXkvb3JpZ2luYWwgZXhwb3J0ZXIiKTsKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGluZm8gPSAqdmlldzsKKyAgICBwID0gUHlNZW1fUmVhbGxvYyhpbmZvYnVmLCBuZGJ1Zi0+bGVuKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoaW5mb2J1Zik7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGluZm9idWYgPSBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGluZm9idWYgPSBwOworICAgIH0KKyAgICAvKiBjb3B5IHRoZSBjb21wbGV0ZSByYXcgZGF0YSAqLworICAgIG1lbWNweShpbmZvYnVmLCBuZGJ1Zi0+ZGF0YSwgbmRidWYtPmxlbik7CisgICAgaW5mby5idWYgPSBpbmZvYnVmICsgKChjaGFyICopdmlldy0+YnVmIC0gbmRidWYtPmRhdGEpOworCisgICAgaWYgKHZpZXctPmZvcm1hdCkgeworICAgICAgICBpZiAoc3RybGVuKHZpZXctPmZvcm1hdCkgPiBORF9NQVhfTkRJTSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcjogZm9ybWF0IGlzIGxpbWl0ZWQgdG8gJWQgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgTkRfTUFYX05ESU0pOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN0cmNweShmb3JtYXQsIHZpZXctPmZvcm1hdCk7CisgICAgICAgIGluZm8uZm9ybWF0ID0gZm9ybWF0OworICAgIH0KKyAgICBpZiAodmlldy0+bmRpbSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcjogbmRpbSBpcyBsaW1pdGVkIHRvICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICh2aWV3LT5zaGFwZSkgeworICAgICAgICBtZW1jcHkoc2hhcGUsIHZpZXctPnNoYXBlLCB2aWV3LT5uZGltICogc2l6ZW9mKFB5X3NzaXplX3QpKTsKKyAgICAgICAgaW5mby5zaGFwZSA9IHNoYXBlOworICAgIH0KKyAgICBpZiAodmlldy0+c3RyaWRlcykgeworICAgICAgICBtZW1jcHkoc3RyaWRlcywgdmlldy0+c3RyaWRlcywgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc3RyaWRlcyA9IHN0cmlkZXM7CisgICAgfQorICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzKSB7CisgICAgICAgIG1lbWNweShzdWJvZmZzZXRzLCB2aWV3LT5zdWJvZmZzZXRzLCB2aWV3LT5uZGltICogc2l6ZW9mKFB5X3NzaXplX3QpKTsKKyAgICAgICAgaW5mby5zdWJvZmZzZXRzID0gc3Vib2Zmc2V0czsKKyAgICB9CisKKyAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJmluZm8pOworfQorCisvKiBHZXQgYSBzaW5nbGUgaXRlbSBmcm9tIGJ1Zm9iaiBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IHNlcS4KKyAgIHNlcSBpcyBhIGxpc3Qgb3IgdHVwbGUgb2YgaW5kaWNlcy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbgorICAgaXMgdG8gY2hlY2sgb3RoZXIgZnVuY3Rpb25zIGFnYWluc3QgUHlCdWZmZXJfR2V0UG9pbnRlcigpLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9wb2ludGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTCwgKmJ1Zm9iaiwgKnNlcTsKKyAgICBQeV9idWZmZXIgdmlldzsKKyAgICBQeV9zc2l6ZV90IGluZGljZXNbTkRfTUFYX05ESU1dOworICAgIFB5X3NzaXplX3QgaTsKKyAgICB2b2lkICpwdHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJmJ1Zm9iaiwgJnNlcSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzZXEpOworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnVmb2JqLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh2aWV3Lm5kaW0gPiBORF9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBuZGltID4gJWQiLCBORF9NQVhfTkRJTSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSkgIT0gdmlldy5uZGltKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImdldF9wb2ludGVyKCk6IGxlbihpbmRpY2VzKSAhPSBuZGltIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCB2aWV3Lm5kaW07IGkrKykgeworICAgICAgICBQeU9iamVjdCAqeCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpbmRpY2VzW2ldID0gUHlMb25nX0FzU3NpemVfdCh4KTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgaWYgKGluZGljZXNbaV0gPCAwIHx8IGluZGljZXNbaV0gPj0gdmlldy5zaGFwZVtpXSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImdldF9wb2ludGVyKCk6IGludmFsaWQgaW5kZXggJXpkIGF0IHBvc2l0aW9uICV6ZCIsCisgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSwgaSk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB0ciA9IFB5QnVmZmVyX0dldFBvaW50ZXIoJnZpZXcsIGluZGljZXMpOworICAgIHJldCA9IHVucGFja19zaW5nbGUocHRyLCB2aWV3LmZvcm1hdCwgdmlldy5pdGVtc2l6ZSk7CisKK291dDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X3NpemVvZl92b2lkX3AoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHNpemVvZih2b2lkICopKTsKK30KKworc3RhdGljIGNoYXIKK2dldF9hc2NpaV9vcmRlcihQeU9iamVjdCAqb3JkZXIpCit7CisgICAgUHlPYmplY3QgKmFzY2lpX29yZGVyOworICAgIGNoYXIgb3JkOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob3JkZXIpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAib3JkZXIgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICByZXR1cm4gQ0hBUl9NQVg7CisgICAgfQorCisgICAgYXNjaWlfb3JkZXIgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhvcmRlcik7CisgICAgaWYgKGFzY2lpX29yZGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIENIQVJfTUFYOworICAgIH0KKworICAgIG9yZCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpX29yZGVyKVswXTsKKyAgICBQeV9ERUNSRUYoYXNjaWlfb3JkZXIpOworCisgICAgaWYgKG9yZCAhPSAnQycgJiYgb3JkICE9ICdGJyAmJiBvcmQgIT0gJ0EnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgb3JkZXIsIG11c3QgYmUgQywgRiBvciBBIik7CisgICAgICAgIHJldHVybiBDSEFSX01BWDsKKyAgICB9CisKKyAgICByZXR1cm4gb3JkOworfQorCisvKiBHZXQgYSBjb250aWd1b3VzIG1lbW9yeXZpZXcuICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2NvbnRpZ3VvdXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKmJ1ZmZlcnR5cGU7CisgICAgUHlPYmplY3QgKm9yZGVyOworICAgIGxvbmcgdHlwZTsKKyAgICBjaGFyIG9yZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09PIiwgJm9iaiwgJmJ1ZmZlcnR5cGUsICZvcmRlcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUxvbmdfQ2hlY2soYnVmZmVydHlwZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJidWZmZXJ0eXBlIG11c3QgYmUgUHlCVUZfUkVBRCBvciBQeUJVRl9XUklURSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB0eXBlID0gUHlMb25nX0FzTG9uZyhidWZmZXJ0eXBlKTsKKyAgICBpZiAodHlwZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodHlwZSAhPSBQeUJVRl9SRUFEICYmIHR5cGUgIT0gUHlCVUZfV1JJVEUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBidWZmZXIgdHlwZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOworICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKG9iaiwgKGludCl0eXBlLCBvcmQpOworfQorCisvKiBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2J1ZmZlcl90b19jb250aWd1b3VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpvcmRlcjsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKyAgICBpbnQgZmxhZ3M7CisgICAgY2hhciBvcmQ7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgY2hhciAqYnVmID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09pIiwgJm9iaiwgJm9yZGVyLCAmZmxhZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgZmxhZ3MpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOworICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgYnVmID0gUHlNZW1fTWFsbG9jKHZpZXcubGVuKTsKKyAgICBpZiAoYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cyhidWYsICZ2aWV3LCB2aWV3Lmxlbiwgb3JkKSA8IDApIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIHZpZXcubGVuKTsKKworb3V0OgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIFB5TWVtX1hGcmVlKGJ1Zik7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorZm10Y21wKGNvbnN0IGNoYXIgKmZtdDEsIGNvbnN0IGNoYXIgKmZtdDIpCit7CisgICAgaWYgKGZtdDEgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gZm10MiA9PSBOVUxMIHx8IHN0cmNtcChmbXQyLCAiQiIpID09IDA7CisgICAgfQorICAgIGlmIChmbXQyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGZtdDEgPT0gTlVMTCB8fCBzdHJjbXAoZm10MSwgIkIiKSA9PSAwOworICAgIH0KKyAgICByZXR1cm4gc3RyY21wKGZtdDEsIGZtdDIpID09IDA7Cit9CisKK3N0YXRpYyBpbnQKK2FycmF5Y21wKGNvbnN0IFB5X3NzaXplX3QgKmExLCBjb25zdCBQeV9zc2l6ZV90ICphMiwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKG5kaW0gPT0gMSAmJiBzaGFwZSAmJiBzaGFwZVswXSA9PSAxKSB7CisgICAgICAgIC8qIFRoaXMgaXMgZm9yIGNvbXBhcmluZyBzdHJpZGVzOiBGb3IgZXhhbXBsZSwgdGhlIGFycmF5CisgICAgICAgICAgIFsxNzVdLCBzaGFwZT1bMV0sIHN0cmlkZXM9Wy01XSBpcyBjb25zaWRlcmVkIGNvbnRpZ3VvdXMuICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKKyAgICAgICAgaWYgKGExW2ldICE9IGEyW2ldKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBDb21wYXJlIHR3byBjb250aWd1b3VzIGJ1ZmZlcnMgZm9yIHBoeXNpY2FsIGVxdWFsaXR5LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2NtcF9jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpiMSwgKmIyOyAvKiBidWZmZXIgb2JqZWN0cyAqLworICAgIFB5X2J1ZmZlciB2MSwgdjI7CisgICAgUHlPYmplY3QgKnJldDsKKyAgICBpbnQgZXF1YWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZiMSwgJmIyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIxLCAmdjEsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNtcF9jb250aWc6IGZpcnN0IGFyZ3VtZW50IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiMiwgJnYyLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjbXBfY29udGlnOiBzZWNvbmQgYXJndW1lbnQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCEoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MSwgJ0MnKSYmUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MiwgJ0MnKSkgJiYKKyAgICAgICAgIShQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnYxLCAnRicpJiZQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnYyLCAnRicpKSkgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiByZWFkb25seSBtYXkgZGlmZmVyIGlmIGNyZWF0ZWQgZnJvbSBub24tY29udGlndW91cyAqLworICAgIGlmICh2MS5sZW4gIT0gdjIubGVuIHx8CisgICAgICAgIHYxLml0ZW1zaXplICE9IHYyLml0ZW1zaXplIHx8CisgICAgICAgIHYxLm5kaW0gIT0gdjIubmRpbSB8fAorICAgICAgICAhZm10Y21wKHYxLmZvcm1hdCwgdjIuZm9ybWF0KSB8fAorICAgICAgICAhIXYxLnNoYXBlICE9ICEhdjIuc2hhcGUgfHwKKyAgICAgICAgISF2MS5zdHJpZGVzICE9ICEhdjIuc3RyaWRlcyB8fAorICAgICAgICAhIXYxLnN1Ym9mZnNldHMgIT0gISF2Mi5zdWJvZmZzZXRzKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGlmICgodjEuc2hhcGUgJiYgIWFycmF5Y21wKHYxLnNoYXBlLCB2Mi5zaGFwZSwgTlVMTCwgdjEubmRpbSkpIHx8CisgICAgICAgICh2MS5zdHJpZGVzICYmICFhcnJheWNtcCh2MS5zdHJpZGVzLCB2Mi5zdHJpZGVzLCB2MS5zaGFwZSwgdjEubmRpbSkpIHx8CisgICAgICAgICh2MS5zdWJvZmZzZXRzICYmICFhcnJheWNtcCh2MS5zdWJvZmZzZXRzLCB2Mi5zdWJvZmZzZXRzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEubmRpbSkpKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGlmIChtZW1jbXAoKGNoYXIgKil2MS5idWYsIChjaGFyICopdjIuYnVmLCB2MS5sZW4pICE9IDApIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgZXF1YWwgPSAxOworCityZXN1bHQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjEpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYyKTsKKworICAgIHJldCA9IGVxdWFsID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOyAKKyAgICBQeV9JTkNSRUYocmV0KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXNfY29udGlndW91cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqb3JkZXI7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgY2hhciBvcmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJm9iaiwgJm9yZGVyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImlzX2NvbnRpZ3VvdXM6IG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CisgICAgICAgIGdvdG8gcmVsZWFzZTsKKyAgICB9CisKKyAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnZpZXcsIG9yZCkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgUHlfSU5DUkVGKHJldCk7CisKK3JlbGVhc2U6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5X2hhc2hfdAorbmRhcnJheV9oYXNoKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGNvbnN0IE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfaGFzaF90IGhhc2g7CisKKyAgICBpZiAoIXZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAiY2Fubm90IGhhc2ggd3JpdGFibGUgbmRhcnJheSBvYmplY3QiKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZpZXctPm9iaiAhPSBOVUxMICYmIFB5T2JqZWN0X0hhc2godmlldy0+b2JqKSA9PSAtMSkgeworICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGJ5dGVzID0gbmRhcnJheV90b2J5dGVzKHNlbGYsIE5VTEwpOworICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBoYXNoID0gUHlPYmplY3RfSGFzaChieXRlcyk7CisgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICByZXR1cm4gaGFzaDsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgbmRhcnJheV9tZXRob2RzIFtdID0KK3sKKyAgICB7ICJ0b2xpc3QiLCBuZGFycmF5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJ0b2J5dGVzIiwgbmRhcnJheV90b2J5dGVzLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHsgInB1c2giLCAoUHlDRnVuY3Rpb24pbmRhcnJheV9wdXNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgTlVMTCB9LAorICAgIHsgInBvcCIsIG5kYXJyYXlfcG9wLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHsgImFkZF9zdWJvZmZzZXRzIiwgbmRhcnJheV9hZGRfc3Vib2Zmc2V0cywgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJtZW1vcnl2aWV3X2Zyb21fYnVmZmVyIiwgbmRhcnJheV9tZW1vcnl2aWV3X2Zyb21fYnVmZmVyLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBOREFycmF5X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIm5kYXJyYXkiLCAgICAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLworICAgIHNpemVvZihOREFycmF5T2JqZWN0KSwgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0ZW0gc2l6ZSBmb3IgdmFyb2JqZWN0ICovCisgICAgKGRlc3RydWN0b3IpbmRhcnJheV9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJm5kYXJyYXlfYXNfc2VxdWVuY2UsICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZuZGFycmF5X2FzX21hcHBpbmcsICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIChoYXNoZnVuYyluZGFycmF5X2hhc2gsICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAmbmRhcnJheV9hc19idWZmZXIsICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgbmRhcnJheV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbmRhcnJheV9nZXRzZXQsICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgbmRhcnJheV9pbml0LCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIG5kYXJyYXlfbmV3LCAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljQXJyYXkgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU3RhdGljQXJyYXlfVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBpbnQgbGVnYWN5X21vZGU7IC8qIGlmIHRydWUsIHVzZSB0aGUgdmlldy5vYmo9PU5VTEwgaGFjayAqLworfSBTdGF0aWNBcnJheU9iamVjdDsKKworc3RhdGljIGNoYXIgc3RhdGljX21lbVsxMl0gPSB7MCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMX07CitzdGF0aWMgUHlfc3NpemVfdCBzdGF0aWNfc2hhcGVbMV0gPSB7MTJ9Oworc3RhdGljIFB5X3NzaXplX3Qgc3RhdGljX3N0cmlkZXNbMV0gPSB7MX07CitzdGF0aWMgUHlfYnVmZmVyIHN0YXRpY19idWZmZXIgPSB7CisgICAgc3RhdGljX21lbSwgICAgIC8qIGJ1ZiAqLworICAgIE5VTEwsICAgICAgICAgICAvKiBvYmogKi8KKyAgICAxMiwgICAgICAgICAgICAgLyogbGVuICovCisgICAgMSwgICAgICAgICAgICAgIC8qIGl0ZW1zaXplICovCisgICAgMSwgICAgICAgICAgICAgIC8qIHJlYWRvbmx5ICovCisgICAgMSwgICAgICAgICAgICAgIC8qIG5kaW0gKi8KKyAgICAiQiIsICAgICAgICAgICAgLyogZm9ybWF0ICovCisgICAgc3RhdGljX3NoYXBlLCAgIC8qIHNoYXBlICovCisgICAgc3RhdGljX3N0cmlkZXMsIC8qIHN0cmlkZXMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgLyogc3Vib2Zmc2V0cyAqLworICAgIE5VTEwgICAgICAgICAgICAvKiBpbnRlcm5hbCAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0YXRpY2FycmF5X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlPYmplY3RfTmV3KFN0YXRpY0FycmF5T2JqZWN0LCAmU3RhdGljQXJyYXlfVHlwZSk7Cit9CisKK3N0YXRpYyBpbnQKK3N0YXRpY2FycmF5X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBTdGF0aWNBcnJheU9iamVjdCAqYSA9IChTdGF0aWNBcnJheU9iamVjdCAqKXNlbGY7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgICAibGVnYWN5X21vZGUiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqbGVnYWN5X21vZGUgPSBQeV9GYWxzZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwgJmxlZ2FjeV9tb2RlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYS0+bGVnYWN5X21vZGUgPSAobGVnYWN5X21vZGUgIT0gUHlfRmFsc2UpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorc3RhdGljYXJyYXlfZGVhbGxvYyhTdGF0aWNBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKy8qIFJldHVybiBhIGJ1ZmZlciBmb3IgYSBQeUJVRl9GVUxMX1JPIHJlcXVlc3QuIEZsYWdzIGFyZSBub3QgY2hlY2tlZCwKKyAgIHdoaWNoIG1ha2VzIHRoaXMgb2JqZWN0IGEgbm9uLWNvbXBsaWFudCBleHBvcnRlciEgKi8KK3N0YXRpYyBpbnQKK3N0YXRpY2FycmF5X2dldGJ1ZihTdGF0aWNBcnJheU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgKnZpZXcgPSBzdGF0aWNfYnVmZmVyOworCisgICAgaWYgKHNlbGYtPmxlZ2FjeV9tb2RlKSB7CisgICAgICAgIHZpZXctPm9iaiA9IE5VTEw7IC8qIERvbid0IHVzZSB0aGlzIGluIG5ldyBjb2RlLiAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeUJ1ZmZlclByb2NzIHN0YXRpY2FycmF5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYylzdGF0aWNhcnJheV9nZXRidWYsIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0aWNBcnJheV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJzdGF0aWNhcnJheSIsICAgICAgICAgICAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCisgICAgc2l6ZW9mKFN0YXRpY0FycmF5T2JqZWN0KSwgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLworICAgIChkZXN0cnVjdG9yKXN0YXRpY2FycmF5X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAmc3RhdGljYXJyYXlfYXNfYnVmZmVyLCAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBzdGF0aWNhcnJheV9pbml0LCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBzdGF0aWNhcnJheV9uZXcsICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBfdGVzdGJ1ZmZlcl9mdW5jdGlvbnNbXSA9IHsKKyAgICB7InNsaWNlX2luZGljZXMiLCBzbGljZV9pbmRpY2VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiZ2V0X3BvaW50ZXIiLCBnZXRfcG9pbnRlciwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImdldF9zaXplb2Zfdm9pZF9wIiwgKFB5Q0Z1bmN0aW9uKWdldF9zaXplb2Zfdm9pZF9wLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJnZXRfY29udGlndW91cyIsIGdldF9jb250aWd1b3VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsicHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMiLCBweV9idWZmZXJfdG9fY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImlzX2NvbnRpZ3VvdXMiLCBpc19jb250aWd1b3VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiY21wX2NvbnRpZyIsIGNtcF9jb250aWcsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF90ZXN0YnVmZmVybW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX3Rlc3RidWZmZXIiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgX3Rlc3RidWZmZXJfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdGJ1ZmZlcih2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3Rlc3RidWZmZXJtb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfVFlQRSgmTkRBcnJheV9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBQeV9JTkNSRUYoJk5EQXJyYXlfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuZGFycmF5IiwgKFB5T2JqZWN0ICopJk5EQXJyYXlfVHlwZSk7CisKKyAgICBQeV9UWVBFKCZTdGF0aWNBcnJheV9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBQeV9JTkNSRUYoJlN0YXRpY0FycmF5X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RhdGljYXJyYXkiLCAoUHlPYmplY3QgKikmU3RhdGljQXJyYXlfVHlwZSk7CisKKyAgICBzdHJ1Y3Rtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInN0cnVjdCIpOworICAgIGlmIChzdHJ1Y3Rtb2R1bGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBTdHJ1Y3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG1vZHVsZSwgIlN0cnVjdCIpOworICAgIGNhbGNzaXplID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJjYWxjc2l6ZSIpOworICAgIGlmIChTdHJ1Y3QgPT0gTlVMTCB8fCBjYWxjc2l6ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNpbXBsZV9mb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaW1wbGVfZm10KTsKKyAgICBpZiAoc2ltcGxlX2Zvcm1hdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9NQVhfTkRJTSIsIE5EX01BWF9ORElNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfVkFSRVhQT1JUIiwgTkRfVkFSRVhQT1JUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfV1JJVEFCTEUiLCBORF9XUklUQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0ZPUlRSQU4iLCBORF9GT1JUUkFOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfU0NBTEFSIiwgTkRfU0NBTEFSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfUElMIiwgTkRfUElMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfR0VUQlVGX0ZBSUwiLCBORF9HRVRCVUZfRkFJTCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0dFVEJVRl9VTkRFRklORUQiLCBORF9HRVRCVUZfVU5ERUZJTkVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfUkVESVJFQ1QiLCBORF9SRURJUkVDVCk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU0lNUExFIiwgUHlCVUZfU0lNUExFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfV1JJVEFCTEUiLCBQeUJVRl9XUklUQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZPUk1BVCIsIFB5QlVGX0ZPUk1BVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX05EIiwgUHlCVUZfTkQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVTIiwgUHlCVUZfU1RSSURFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0lORElSRUNUIiwgUHlCVUZfSU5ESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9DX0NPTlRJR1VPVVMiLCBQeUJVRl9DX0NPTlRJR1VPVVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GX0NPTlRJR1VPVVMiLCBQeUJVRl9GX0NPTlRJR1VPVVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9BTllfQ09OVElHVU9VUyIsIFB5QlVGX0FOWV9DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRlVMTCIsIFB5QlVGX0ZVTEwpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GVUxMX1JPIiwgUHlCVUZfRlVMTF9STyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQ09SRFMiLCBQeUJVRl9SRUNPUkRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVDT1JEU19STyIsIFB5QlVGX1JFQ09SRFNfUk8pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVEIiwgUHlCVUZfU1RSSURFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NUUklERURfUk8iLCBQeUJVRl9TVFJJREVEX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ09OVElHIiwgUHlCVUZfQ09OVElHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ09OVElHX1JPIiwgUHlCVUZfQ09OVElHX1JPKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9SRUFEIiwgUHlCVUZfUkVBRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1dSSVRFIiwgUHlCVUZfV1JJVEUpOworCisgICAgcmV0dXJuIG07Cit9CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwppbmRleCA5NGI2ZTY3Li4yZjQzODEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKQEAgLTIyLDE0ICsyMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmFpc2VUZXN0RXJyb3IoY29uc3QgY2hhciogdGVzdF9uYW1lLCBjb25zdCBjaGFyKiBtc2cpCiB7Ci0gICAgY2hhciBidWZbMjA0OF07Ci0KLSAgICBpZiAoc3RybGVuKHRlc3RfbmFtZSkgKyBzdHJsZW4obXNnKSA+IHNpemVvZihidWYpIC0gNTApCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsICJpbnRlcm5hbCBlcnJvciBtc2cgdG9vIGxhcmdlIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzOiAlcyIsIHRlc3RfbmFtZSwgbXNnKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRlc3RFcnJvciwgYnVmKTsKLSAgICB9CisgICAgUHlFcnJfRm9ybWF0KFRlc3RFcnJvciwgIiVzOiAlcyIsIHRlc3RfbmFtZSwgbXNnKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNDMsMTEgKzM2LDkgQEAKIHNpemVvZl9lcnJvcihjb25zdCBjaGFyKiBmYXRuYW1lLCBjb25zdCBjaGFyKiB0eXBuYW1lLAogICAgIGludCBleHBlY3RlZCwgaW50IGdvdCkKIHsKLSAgICBjaGFyIGJ1ZlsxMDI0XTsKLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICIlLjIwMHMgI2RlZmluZSA9PSAlZCBidXQgc2l6ZW9mKCUuMjAwcykgPT0gJWQiLAorICAgIFB5RXJyX0Zvcm1hdChUZXN0RXJyb3IsCisgICAgICAgICIlcyAjZGVmaW5lID09ICVkIGJ1dCBzaXplb2YoJXMpID09ICVkIiwKICAgICAgICAgZmF0bmFtZSwgZXhwZWN0ZWQsIHR5cG5hbWUsIGdvdCk7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFRlc3RFcnJvciwgYnVmKTsKICAgICByZXR1cm4gKFB5T2JqZWN0KilOVUxMOwogfQogCkBAIC0yODQsOTUgKzI3NSw2IEBACiB9CiAKIAotLyogSXNzdWUgIzczODU6IENoZWNrIHRoYXQgbWVtb3J5dmlldygpIGRvZXMgbm90IGNyYXNoCi0gKiAgIHdoZW4gYmZfZ2V0YnVmZmVyIHJldHVybnMgYW4gZXJyb3IKLSAqLwotCi1zdGF0aWMgaW50Ci1icm9rZW5fYnVmZmVyX2dldGJ1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCi17Ci0gICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICBUZXN0RXJyb3IsCi0gICAgICAgICJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3OiBleHBlY3RlZCBlcnJvciBpbiBiZl9nZXRidWZmZXIiKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBQeUJ1ZmZlclByb2NzIG1lbW9yeXZpZXd0ZXN0ZXJfYXNfYnVmZmVyID0gewotICAgIChnZXRidWZmZXJwcm9jKWJyb2tlbl9idWZmZXJfZ2V0YnVmZmVyLCAgICAgLyogYmZfZ2V0YnVmZmVyICovCi0gICAgMCwgICAgICAgICAgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLwotfTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBfTWVtb3J5Vmlld1Rlc3Rlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJtZW1vcnl2aWV3dGVzdGVyIiwgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLwotICAgIHNpemVvZihQeU9iamVjdCksICAgICAgICAgICAvKiBCYXNpYyBvYmplY3Qgc2l6ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLwotICAgIChkZXN0cnVjdG9yKVB5T2JqZWN0X0RlbCwgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgJm1lbW9yeXZpZXd0ZXN0ZXJfYXNfYnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotfTsKLQotc3RhdGljIFB5T2JqZWN0KgotdGVzdF9icm9rZW5fbWVtb3J5dmlldyhQeU9iamVjdCogc2VsZikKLXsKLSAgICBQeU9iamVjdCAqb2JqID0gUHlPYmplY3RfTmV3KFB5T2JqZWN0LCAmX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSk7Ci0gICAgUHlPYmplY3QgKnJlczsKLQotICAgIGlmIChvYmogPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBUZXN0RXJyb3IsCi0gICAgICAgICAgICAidGVzdF9icm9rZW5fbWVtb3J5dmlldzogZmFpbGVkIHRvIGNyZWF0ZSBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmVzID0gUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAocmVzIHx8ICFQeUVycl9PY2N1cnJlZCgpKXsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAgICAgInRlc3RfYnJva2VuX21lbW9yeXZpZXc6IG1lbW9yeXZpZXcoKSBkaWRuJ3QgcmFpc2UgYW4gRXhjZXB0aW9uIik7Ci0gICAgICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgUHlfREVDUkVGKG9iaik7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQogLyogVGVzdHMgb2YgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmcoKSwgYW5kICgjaWZkZWYgSEFWRV9MT05HX0xPTkcpCiAgICBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZ0xvbmcoKS4KIApAQCAtNzc4LDYgKzY4MCw2OCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKiBUZXN0IHRoZSBQeUxvbmdfQXN7U2l6ZSxTc2l6ZX1fdCBBUEkuIEF0IHByZXNlbnQgdGhpcyBqdXN0IHRlc3RzIHRoYXQKKyAgIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IHNob3VsZCBiZSBleHRlbmRlZCB0bworICAgdGVzdCBvdmVyZmxvdyBoYW5kbGluZy4KKyAqLworCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9sb25nX2FzX3NpemVfdChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBzaXplX3Qgb3V0X3U7CisgICAgUHlfc3NpemVfdCBvdXRfczsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworICAgIG91dF91ID0gUHlMb25nX0FzU2l6ZV90KFB5X05vbmUpOworICAgIGlmIChvdXRfdSAhPSAoc2l6ZV90KS0xIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19zaXplX3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc1NpemVfdChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTaXplX3QoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgb3V0X3MgPSBQeUxvbmdfQXNTc2l6ZV90KFB5X05vbmUpOworICAgIGlmIChvdXRfcyAhPSAoUHlfc3NpemVfdCktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTc2l6ZV90KE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19zaXplX3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc1NzaXplX3QoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgLyogUHlfSU5DUkVGKFB5X05vbmUpIG9taXR0ZWQgLSB3ZSBhbHJlYWR5IGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICovCisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKy8qIFRlc3QgdGhlIFB5TG9uZ19Bc0RvdWJsZSBBUEkuIEF0IHByZXNlbnQgdGhpcyBqdXN0IHRlc3RzIHRoYXQKKyAgIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCisgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfbG9uZ19hc19kb3VibGUoUHlPYmplY3QgKnNlbGYpCit7CisgICAgZG91YmxlIG91dDsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworICAgIG91dCA9IFB5TG9uZ19Bc0RvdWJsZShQeV9Ob25lKTsKKyAgICBpZiAob3V0ICE9IC0xLjAgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX2RvdWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzRG91YmxlKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19kb3VibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc0RvdWJsZShOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAvKiBQeV9JTkNSRUYoUHlfTm9uZSkgb21pdHRlZCAtIHdlIGFscmVhZHkgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdC4gKi8KKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKwogLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIFBZX0xPTkdfTE9ORwogICAgZm9yIGJvdGggbG9uZyBhbmQgaW50IGFyZ3VtZW50cy4gIFRoZSB0ZXN0IG1heSBsZWFrIGEgbGl0dGxlIG1lbW9yeSBpZgogICAgaXQgZmFpbHMuCkBAIC04MzcsNyArODAxLDggQEAKIH0KIAogLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKi8KLXN0YXRpYyBQeU9iamVjdCAqZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImFyZzEiLCJhcmcyIiwiYXJnMyIsImFyZzQiLCJhcmc1IiwgTlVMTH07CiAgICAgc3RhdGljIGNoYXIgKmZtdD0iKGlpKWl8KGkoaWkpKShpaWkpaSI7CkBAIC04NTIsNiArODE3LDIxIEBACiAgICAgICAgIGludF9hcmdzWzVdLCBpbnRfYXJnc1s2XSwgaW50X2FyZ3NbN10sIGludF9hcmdzWzhdLCBpbnRfYXJnc1s5XSk7CiB9CiAKKy8qIHRlc3QgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIGtleXdvcmQtb25seSBhcmd1bWVudHMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX2tleXdvcmRfb25seShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InJlcXVpcmVkIiwgIm9wdGlvbmFsIiwgImtleXdvcmRfb25seSIsIE5VTEx9OworICAgIGludCByZXF1aXJlZCA9IC0xOworICAgIGludCBvcHRpb25hbCA9IC0xOworICAgIGludCBrZXl3b3JkX29ubHkgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIml8aSRpIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkLCAmb3B0aW9uYWwsICZrZXl3b3JkX29ubHkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWlpIiwgcmVxdWlyZWQsIG9wdGlvbmFsLCBrZXl3b3JkX29ubHkpOworfQorCiAvKiBGdW5jdGlvbnMgdG8gY2FsbCBQeUFyZ19QYXJzZVR1cGxlIHdpdGggaW50ZWdlciBmb3JtYXQgY29kZXMsCiAgICBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCiAqLwpAQCAtOTM2LDYgKzkxNiwxNSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QodmFsdWUpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgdmFsdWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJwIiwgJnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7Cit9CisKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfTChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xMDEyLDYgKzEwMDEsMTUgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciBjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiYyIsICZjKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoJmMsIDEpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19zKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBjaGFyICpzdHI7CkBAIC0xMTk3LDUxICsxMTk1LDczIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXN0X2J1Z183NDE0KFB5T2JqZWN0ICpzZWxmKQorcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICAvKiBJc3N1ZSAjNzQxNDogZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcywgJ0MnIGNvZGUgd2Fzbid0IGJlaW5nCi0gICAgICAgc2tpcHBlZCBwcm9wZXJseSBpbiBza2lwaXRlbSgpICovCi0gICAgaW50IGEgPSAwLCBiID0gMCwgcmVzdWx0OwotICAgIGNoYXIgKmt3bGlzdFtdID0geyJhIiwgImIiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqdHVwbGUgPSBOVUxMLCAqZGljdCA9IE5VTEwsICpiX3N0cjsKKyAgICBQeU9iamVjdCAqc3ViX2FyZ3M7CisgICAgUHlPYmplY3QgKnN1Yl9rd2FyZ3M7CisgICAgY2hhciAqc3ViX2Zvcm1hdDsKKyAgICBQeU9iamVjdCAqc3ViX2tleXdvcmRzOwogCi0gICAgdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAodHVwbGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIGJfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImIiKTsKLSAgICBpZiAoYl9zdHIgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIHJlc3VsdCA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJiIiwgYl9zdHIpOwotICAgIFB5X0RFQ1JFRihiX3N0cik7Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgY2hhciAqa2V5d29yZHNbOCArIDFdOyAvKiBzcGFjZSBmb3IgTlVMTCBhdCBlbmQgKi8KKyAgICBQeU9iamVjdCAqbzsKKyAgICBQeU9iamVjdCAqY29udmVydGVkWzhdOwogCi0gICAgcmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHR1cGxlLCBkaWN0LCAifENDIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmYSwgJmIpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKIAotICAgIGlmIChhICE9IDApCi0gICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9idWdfNzQxNCIsCi0gICAgICAgICAgICAiQyBmb3JtYXQgY29kZSBub3Qgc2tpcHBlZCBwcm9wZXJseSIpOwotICAgIGlmIChiICE9ICdiJykKLSAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2J1Z183NDE0IiwKLSAgICAgICAgICAgICJDIGZvcm1hdCBjb2RlIHJldHVybmVkIHdyb25nIHZhbHVlIik7CisgICAgZG91YmxlIGJ1ZmZlcnNbOF1bNF07IC8qIGRvdWJsZSBlbnN1cmVzIGFsaWdubWVudCB3aGVyZSBuZWNlc3NhcnkgKi8KIAotICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICBQeV9ERUNSRUYodHVwbGUpOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT095TzpwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMiLAorICAgICAgICAmc3ViX2FyZ3MsICZzdWJfa3dhcmdzLAorICAgICAgICAmc3ViX2Zvcm1hdCwgJnN1Yl9rZXl3b3JkcykpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gIGZhaWx1cmU6Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICBQeV9YREVDUkVGKHR1cGxlKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIShQeUxpc3RfQ2hlY2tFeGFjdChzdWJfa2V5d29yZHMpIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdChzdWJfa2V5d29yZHMpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IHN1Yl9rZXl3b3JkcyBtdXN0IGJlIGVpdGhlciBsaXN0IG9yIHR1cGxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldChidWZmZXJzLCAwLCBzaXplb2YoYnVmZmVycykpOworICAgIG1lbXNldChjb252ZXJ0ZWQsIDAsIHNpemVvZihjb252ZXJ0ZWQpKTsKKyAgICBtZW1zZXQoa2V5d29yZHMsIDAsIHNpemVvZihrZXl3b3JkcykpOworCisgICAgc2l6ZSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzdWJfa2V5d29yZHMpOworICAgIGlmIChzaXplID4gOCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IHRvbyBtYW55IGtleXdvcmRzIGluIHN1Yl9rZXl3b3JkcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBvID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHN1Yl9rZXl3b3JkcywgaSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICh2b2lkICopKGNvbnZlcnRlZCArIGkpKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgInBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkczogY291bGQgbm90IGNvbnZlcnQga2V5d29yZHNbJXpkXSB0byBuYXJyb3cgc3RyaW5nIiwgaSk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAga2V5d29yZHNbaV0gPSBQeUJ5dGVzX0FTX1NUUklORyhjb252ZXJ0ZWRbaV0pOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhzdWJfYXJncywgc3ViX2t3YXJncywKKyAgICAgICAgc3ViX2Zvcm1hdCwga2V5d29yZHMsCisgICAgICAgIGJ1ZmZlcnMgKyAwLCBidWZmZXJzICsgMSwgYnVmZmVycyArIDIsIGJ1ZmZlcnMgKyAzLAorICAgICAgICBidWZmZXJzICsgNCwgYnVmZmVycyArIDUsIGJ1ZmZlcnMgKyA2LCBidWZmZXJzICsgNyk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICB9CisKK2V4aXQ6CisgICAgc2l6ZSA9IHNpemVvZihjb252ZXJ0ZWQpIC8gc2l6ZW9mKGNvbnZlcnRlZFswXSk7CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeV9YREVDUkVGKGNvbnZlcnRlZFtpXSk7CisgICAgfQorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLQogc3RhdGljIHZvbGF0aWxlIGludCB4OwogCiAvKiBUZXN0IHRoZSB1IGFuZCB1IyBjb2RlcyBmb3IgUHlBcmdfUGFyc2VUdXBsZS4gTWF5IGxlYWsgbWVtb3J5IGluIGNhc2UKQEAgLTEyOTMsNyArMTMxMyw3IEBACiB0ZXN0X1pfY29kZShQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdHVwbGUsICpvYmo7Ci0gICAgUHlfVU5JQ09ERSAqdmFsdWUxLCAqdmFsdWUyOworICAgIGNvbnN0IFB5X1VOSUNPREUgKnZhbHVlMSwgKnZhbHVlMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KDIpOwpAQCAtMTM0Nyw2ICsxMzY3LDcgQEAKICNpZiBkZWZpbmVkKFNJWkVPRl9XQ0hBUl9UKSAmJiAoU0laRU9GX1dDSEFSX1QgPT0gNCkKICAgICBjb25zdCB3Y2hhcl90IHd0ZXh0WzJdID0geyh3Y2hhcl90KTB4MTBBQkNEdX07CiAgICAgc2l6ZV90IHd0ZXh0bGVuID0gMTsKKyAgICBjb25zdCB3Y2hhcl90IGludmFsaWRbMV0gPSB7KHdjaGFyX3QpMHgxMTAwMDB1fTsKICNlbHNlCiAgICAgY29uc3Qgd2NoYXJfdCB3dGV4dFszXSA9IHsod2NoYXJfdCkweERCRUF1LCAod2NoYXJfdCkweERGQ0R1fTsKICAgICBzaXplX3Qgd3RleHRsZW4gPSAyOwpAQCAtMTM2Myw3ICsxMzg0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh3aWRlKSAhPSBQeVVuaWNvZGVfR0VUX1NJWkUodXRmOCkpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod2lkZSkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgodXRmOCkpIHsKICAgICAgICAgUHlfREVDUkVGKHdpZGUpOwogICAgICAgICBQeV9ERUNSRUYodXRmOCk7CiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF93aWRlY2hhciIsCkBAIC0xMzgyLDYgKzE0MDMsMjMgQEAKIAogICAgIFB5X0RFQ1JFRih3aWRlKTsKICAgICBQeV9ERUNSRUYodXRmOCk7CisKKyNpZiBkZWZpbmVkKFNJWkVPRl9XQ0hBUl9UKSAmJiAoU0laRU9GX1dDSEFSX1QgPT0gNCkKKyAgICB3aWRlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihpbnZhbGlkLCAxKTsKKyAgICBpZiAod2lkZSA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKExcIlxcVTAwMTEwMDAwXCIsIDEpIGRpZG4ndCBmYWlsIik7CisKKyAgICB3aWRlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGludmFsaWQsIDEpOworICAgIGlmICh3aWRlID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tVW5pY29kZShMXCJcXFUwMDExMDAwMFwiLCAxKSBkaWRuJ3QgZmFpbCIpOworI2VuZGlmCisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMTQ4Myw2ICsxNTIxLDI5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2xlZ2FjeV9zdHJpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X1VOSUNPREUgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKnU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjIiwgJmRhdGEsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbGVuKTsKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1KSwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKworICAgIGlmIChsZW4gPiAwKSB7IC8qIFRoZSBlbXB0eSBzdHJpbmcgaXMgYWx3YXlzIHJlYWR5LiAqLworICAgICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19SRUFEWSh1KSk7CisgICAgfQorCisgICAgcmV0dXJuIHU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX3dfc3RhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKQEAgLTE1NzYsNyArMTYzNyw3IEBACiAgICAgICAgICAgICAgey0weGZmZmZmZmZMLCAyOCwgLTF9fTsKICAgICBpbnQgaTsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGVzdGNhc2VzKSAvIHNpemVvZihzdHJ1Y3QgdHJpcGxlKTsgKytpKSB7CisgICAgZm9yIChpID0gMDsgaSA8IFB5X0FSUkFZX0xFTkdUSCh0ZXN0Y2FzZXMpOyArK2kpIHsKICAgICAgICAgUHlPYmplY3QgKnBsb25nID0gUHlMb25nX0Zyb21Mb25nKHRlc3RjYXNlc1tpXS5pbnB1dCk7CiAgICAgICAgIHNpemVfdCBuYml0cyA9IF9QeUxvbmdfTnVtQml0cyhwbG9uZyk7CiAgICAgICAgIGludCBzaWduID0gX1B5TG9uZ19TaWduKHBsb25nKTsKQEAgLTE2MzIsNiArMTY5MywyOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9zZXRfZXhjX2luZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvcmlnX2V4YzsKKyAgICBQeU9iamVjdCAqbmV3X3R5cGUsICpuZXdfdmFsdWUsICpuZXdfdGI7CisgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09POnRlc3Rfc2V0X2V4Y19pbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld190eXBlLCAmbmV3X3ZhbHVlLCAmbmV3X3RiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeUVycl9HZXRFeGNJbmZvKCZ0eXBlLCAmdmFsdWUsICZ0Yik7CisKKyAgICBQeV9JTkNSRUYobmV3X3R5cGUpOworICAgIFB5X0lOQ1JFRihuZXdfdmFsdWUpOworICAgIFB5X0lOQ1JFRihuZXdfdGIpOworICAgIFB5RXJyX1NldEV4Y0luZm8obmV3X3R5cGUsIG5ld192YWx1ZSwgbmV3X3RiKTsKKworICAgIG9yaWdfZXhjID0gUHlUdXBsZV9QYWNrKDMsIHR5cGUgPyB0eXBlIDogUHlfTm9uZSwgdmFsdWUgPyB2YWx1ZSA6IFB5X05vbmUsIHRiID8gdGIgOiBQeV9Ob25lKTsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgIFB5X1hERUNSRUYodGIpOworICAgIHJldHVybiBvcmlnX2V4YzsKK30KIAogc3RhdGljIGludCB0ZXN0X3J1bl9jb3VudGVyID0gMDsKIApAQCAtMTc4NiwxMyArMTg3MCwxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgY2hhciAqbXNnOwotICAgIHN0YXRpYyBjb25zdCBQeV9VTklDT0RFIG9uZVtdID0geycxJywgMH07CiAKICNkZWZpbmUgQ0hFQ0tfMV9GT1JNQVQoRk9STUFULCBUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KEZPUk1BVCwgKFRZUEUpMSk7ICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChQeV9VTklDT0RFX3N0cmNtcChQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLCBvbmUpKSB7ICAgICBcCisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHJlc3VsdCwgIjEiKSkgeyAgICAgXAogICAgICAgICBtc2cgPSBGT1JNQVQgIiBmYWlsZWQgYXQgMSI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGdvdG8gRmFpbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjMxNyw2ICsyNDAwLDE0IEBACiAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwogCiAgICAgc3Vic3RhdGUgPSBQeV9OZXdJbnRlcnByZXRlcigpOworICAgIGlmIChzdWJzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIFNpbmNlIG5vIG5ldyB0aHJlYWQgc3RhdGUgd2FzIGNyZWF0ZWQsIHRoZXJlIGlzIG5vIGV4Y2VwdGlvbiB0bworICAgICAgICAgICBwcm9wYWdhdGU7IHJhaXNlIGEgZnJlc2ggb25lIGFmdGVyIHN3YXBwaW5nIGluIHRoZSBvbGQgdGhyZWFkCisgICAgICAgICAgIHN0YXRlLiAqLworICAgICAgICBQeVRocmVhZFN0YXRlX1N3YXAobWFpbnN0YXRlKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInN1Yi1pbnRlcnByZXRlciBjcmVhdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHIgPSBQeVJ1bl9TaW1wbGVTdHJpbmcoY29kZSk7CiAgICAgUHlfRW5kSW50ZXJwcmV0ZXIoc3Vic3RhdGUpOwogCkBAIC0yMzI1LDYgKzI0MTYsNDQgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHIpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVfdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZzZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TG9uZ19Gcm9tVGltZV90KHNlYyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGxvbmcgdXNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1ldmFsIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbChvYmosICZzZWMsICZ1c2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgX1B5TG9uZ19Gcm9tVGltZV90KHNlYyksIHVzZWMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHRpbWVfdCBzZWM7CisgICAgbG9uZyBuc2VjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMob2JqLCAmc2VjLCAmbnNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpLCBuc2VjKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzMzQsMTQgKzI0NjMsMTUgQEAKICAgICB7InRlc3RfbGlzdF9hcGkiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbGlzdF9hcGksICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9kaWN0X2l0ZXJhdGlvbiIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9kaWN0X2l0ZXJhdGlvbixNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xhenlfaGFzaF9pbmhlcml0YW5jZSIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlLE1FVEhfTk9BUkdTfSwKLSAgICB7InRlc3RfYnJva2VuX21lbW9yeXZpZXciLCAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9icm9rZW5fbWVtb3J5dmlldyxNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfYXBpIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfYXBpLCAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19hbmRfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FuZF9vdmVyZmxvdywKICAgICAgTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9sb25nX2FzX2RvdWJsZSIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FzX2RvdWJsZSxNRVRIX05PQVJHU30sCisgICAgeyJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfYXNfc2l6ZV90LE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19udW1iaXRzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19udW1iaXRzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9rX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9rX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2VtcHR5X2FyZ3BhcnNlIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfZW1wdHlfYXJncGFyc2UsTUVUSF9OT0FSR1N9LAotICAgIHsidGVzdF9idWdfNzQxNCIsIChQeUNGdW5jdGlvbil0ZXN0X2J1Z183NDE0LCBNRVRIX05PQVJHU30sCisgICAgeyJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMiLCBwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ0ZXN0X251bGxfc3RyaW5ncyIsICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X251bGxfc3RyaW5ncywgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfc3RyaW5nX2Zyb21fZm9ybWF0IiwgKFB5Q0Z1bmN0aW9uKXRlc3Rfc3RyaW5nX2Zyb21fZm9ybWF0LCBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3dpdGhfZG9jc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLApAQCAtMjM1Miw2ICsyNDgyLDggQEAKICAgICB7ImdldGFyZ3NfdHVwbGUiLCAgICAgICAgICAgZ2V0YXJnc190dXBsZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZHMiLCAoUHlDRnVuY3Rpb24pZ2V0YXJnc19rZXl3b3JkcywKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKKyAgICB7ImdldGFyZ3Nfa2V5d29yZF9vbmx5IiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZF9vbmx5LAorICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiZ2V0YXJnc19iIiwgICAgICAgICAgICAgICBnZXRhcmdzX2IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19CIiwgICAgICAgICAgICAgICBnZXRhcmdzX0IsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19oIiwgICAgICAgICAgICAgICBnZXRhcmdzX2gsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjM2MSw2ICsyNDkzLDcgQEAKICAgICB7ImdldGFyZ3NfaSIsICAgICAgICAgICAgICAgZ2V0YXJnc19pLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfbCIsICAgICAgICAgICAgICAgZ2V0YXJnc19sLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfbiIsICAgICAgICAgICAgICAgZ2V0YXJnc19uLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImdldGFyZ3NfcCIsICAgICAgICAgICAgICAgZ2V0YXJnc19wLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsiZ2V0YXJnc19MIiwgICAgICAgICAgICAgICBnZXRhcmdzX0wsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19LIiwgICAgICAgICAgICAgICBnZXRhcmdzX0ssICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjM2OSw2ICsyNTAyLDcgQEAKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9MX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9MX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCiAjZW5kaWYKKyAgICB7ImdldGFyZ3NfYyIsICAgICAgICAgICAgICAgZ2V0YXJnc19jLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfcyIsICAgICAgICAgICAgICAgZ2V0YXJnc19zLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfc19zdGFyIiwgICAgICAgICAgZ2V0YXJnc19zX3N0YXIsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3Nfc19oYXNoIiwgICAgICAgICAgZ2V0YXJnc19zX2hhc2gsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzOTUsNiArMjUyOSw3IEBACiAgICAgeyJ1bmljb2RlX2Fzd2lkZWNoYXJzdHJpbmciLHVuaWNvZGVfYXN3aWRlY2hhcnN0cmluZywgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmljb2RlX2VuY29kZWRlY2ltYWwiLCAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmljb2RlX3RyYW5zZm9ybWRlY2ltYWx0b2FzY2lpIiwgdW5pY29kZV90cmFuc2Zvcm1kZWNpbWFsdG9hc2NpaSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InVuaWNvZGVfbGVnYWN5X3N0cmluZyIsICAgdW5pY29kZV9sZWdhY3lfc3RyaW5nLCAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHsiX3Rlc3RfdGhyZWFkX3N0YXRlIiwgICAgICB0ZXN0X3RocmVhZF9zdGF0ZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX3BlbmRpbmdfdGhyZWFkZnVuYyIsICAgICBwZW5kaW5nX3RocmVhZGZ1bmMsICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjQwNCw2ICsyNTM5LDcgQEAKICNlbmRpZgogICAgIHsidHJhY2ViYWNrX3ByaW50IiwgICAgICAgICB0cmFjZWJhY2tfcHJpbnQsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZXhjZXB0aW9uX3ByaW50IiwgICAgICAgICBleGNlcHRpb25fcHJpbnQsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsic2V0X2V4Y19pbmZvIiwgICAgICAgICAgICB0ZXN0X3NldF9leGNfaW5mbywgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiYXJncGFyc2luZyIsICAgICAgICAgICAgICBhcmdwYXJzaW5nLCAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY29kZV9uZXdlbXB0eSIsICAgICAgICAgICBjb2RlX25ld2VtcHR5LCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsibWFrZV9leGNlcHRpb25fd2l0aF9kb2MiLCAoUHlDRnVuY3Rpb24pbWFrZV9leGNlcHRpb25fd2l0aF9kb2MsCkBAIC0yNDEyLDYgKzI1NDgsOSBAQAogICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJjcmFzaF9ub19jdXJyZW50X3RocmVhZCIsIChQeUNGdW5jdGlvbiljcmFzaF9ub19jdXJyZW50X3RocmVhZCwgTUVUSF9OT0FSR1N9LAogICAgIHsicnVuX2luX3N1YmludGVycCIsICAgICAgICBydW5faW5fc3ViaW50ZXJwLCAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsicHl0aW1lX29iamVjdF90b190aW1lX3QiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZV90LCAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1ldmFsLCAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsICBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjU5NCw3ICsyNzMzLDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9UWVBFKCZfSGFzaEluaGVyaXRhbmNlVGVzdGVyX1R5cGUpPSZQeVR5cGVfVHlwZTsKLSAgICBQeV9UWVBFKCZfTWVtb3J5Vmlld1Rlc3Rlcl9UeXBlKT0mUHlUeXBlX1R5cGU7CiAKICAgICBQeV9UWVBFKCZ0ZXN0X3N0cnVjdG1lbWJlcnNUeXBlKT0mUHlUeXBlX1R5cGU7CiAgICAgUHlfSU5DUkVGKCZ0ZXN0X3N0cnVjdG1lbWJlcnNUeXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jIGIvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMKaW5kZXggNWY3NmE3Yi4uNjNlZmRjMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMKQEAgLTIzLDYgKzIzLDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2tfbG9jazsKICAgICBQeU9iamVjdCAqaW5fd2Vha3JlZmxpc3Q7CisgICAgY2hhciBsb2NrZWQ7IC8qIGZvciBzYW5pdHkgY2hlY2tpbmcgKi8KIH0gbG9ja29iamVjdDsKIAogc3RhdGljIHZvaWQKQEAgLTMyLDkgKzMzLDggQEAKICAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CiAgICAgaWYgKHNlbGYtPmxvY2tfbG9jayAhPSBOVUxMKSB7CiAgICAgICAgIC8qIFVubG9jayB0aGUgbG9jayBzbyBpdCdzIHNhZmUgdG8gZnJlZSBpdCAqLwotICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9ja19sb2NrLCAwKTsKLSAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7Ci0KKyAgICAgICAgaWYgKHNlbGYtPmxvY2tlZCkKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOwogICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKICAgICB9CiAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwpAQCAtNTMsNiArNTMsNyBAQAogICAgIF9QeVRpbWVfdGltZXZhbCBjdXJ0aW1lOwogICAgIF9QeVRpbWVfdGltZXZhbCBlbmR0aW1lOwogCisKICAgICBpZiAobWljcm9zZWNvbmRzID4gMCkgewogICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmZW5kdGltZSk7CiAgICAgICAgIGVuZHRpbWUudHZfc2VjICs9IG1pY3Jvc2Vjb25kcyAvICgxMDAwICogMTAwMCk7CkBAIC02MSw5ICs2MiwxMyBAQAogCiAKICAgICBkbyB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgciA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCBtaWNyb3NlY29uZHMsIDEpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAvKiBmaXJzdCBhIHNpbXBsZSBub24tYmxvY2tpbmcgdHJ5IHdpdGhvdXQgcmVsZWFzaW5nIHRoZSBHSUwgKi8KKyAgICAgICAgciA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCAwLCAwKTsKKyAgICAgICAgaWYgKHIgPT0gUFlfTE9DS19GQUlMVVJFICYmIG1pY3Jvc2Vjb25kcyAhPSAwKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIG1pY3Jvc2Vjb25kcywgMSk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IAogCiAgICAgICAgIGlmIChyID09IFBZX0xPQ0tfSU5UUikgewogICAgICAgICAgICAgLyogUnVuIHNpZ25hbCBoYW5kbGVycyBpZiB3ZSB3ZXJlIGludGVycnVwdGVkLiAgUHJvcGFnYXRlCkBAIC03NSw3ICs4MCw3IEBACiAKICAgICAgICAgICAgIC8qIElmIHdlJ3JlIHVzaW5nIGEgdGltZW91dCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IGFmdGVyIHByb2Nlc3NpbmcKICAgICAgICAgICAgICAqIHNpZ25hbHMsIHNpbmNlIHRob3NlIGNhbiB0YWtlIHRpbWUuICAqLwotICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+PSAwKSB7CisgICAgICAgICAgICBpZiAobWljcm9zZWNvbmRzID4gMCkgewogICAgICAgICAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZjdXJ0aW1lKTsKICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZHMgPSAoKGVuZHRpbWUudHZfc2VjIC0gY3VydGltZS50dl9zZWMpICogMTAwMDAwMCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmR0aW1lLnR2X3VzZWMgLSBjdXJ0aW1lLnR2X3VzZWMpKTsKQEAgLTEzNCw2ICsxMzksOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAociA9PSBQWV9MT0NLX0FDUVVJUkVEKQorICAgICAgICBzZWxmLT5sb2NrZWQgPSAxOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcociA9PSBQWV9MT0NLX0FDUVVJUkVEKTsKIH0KIApAQCAtMTUyLDEzICsxNTksMTMgQEAKIGxvY2tfUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGxvY2tvYmplY3QgKnNlbGYpCiB7CiAgICAgLyogU2FuaXR5IGNoZWNrOiB0aGUgbG9jayBtdXN0IGJlIGxvY2tlZCAqLwotICAgIGlmIChQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9ja19sb2NrLCAwKSkgewotICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKKyAgICBpZiAoIXNlbGYtPmxvY2tlZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGhyZWFkRXJyb3IsICJyZWxlYXNlIHVubG9ja2VkIGxvY2siKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CisgICAgc2VsZi0+bG9ja2VkID0gMDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC0xNzQsMTEgKzE4MSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbG9ja19sb2NrZWRfbG9jayhsb2Nrb2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9ja19sb2NrLCAwKSkgewotICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwTCk7Ci0gICAgfQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMUwpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpc2VsZi0+bG9ja2VkKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxvY2tlZF9kb2MsCkBAIC0zMTIsMTQgKzMxNSw3IEBACiAgICAgICAgIHNlbGYtPnJsb2NrX2NvdW50ID0gY291bnQ7CiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KLQotICAgIGlmIChzZWxmLT5ybG9ja19jb3VudCA+IDAgfHwKLSAgICAgICAgIVB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5ybG9ja19sb2NrLCAwKSkgewotICAgICAgICBpZiAobWljcm9zZWNvbmRzID09IDApIHsKLSAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICAgICAgfQotICAgICAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCBtaWNyb3NlY29uZHMpOwotICAgIH0KKyAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCBtaWNyb3NlY29uZHMpOwogICAgIGlmIChyID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKICAgICAgICAgYXNzZXJ0KHNlbGYtPnJsb2NrX2NvdW50ID09IDApOwogICAgICAgICBzZWxmLT5ybG9ja19vd25lciA9IHRpZDsKQEAgLTQxMyw2ICs0MDksMTIgQEAKICAgICBsb25nIG93bmVyOwogICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CiAKKyAgICBpZiAoc2VsZi0+cmxvY2tfY291bnQgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgb3duZXIgPSBzZWxmLT5ybG9ja19vd25lcjsKICAgICBjb3VudCA9IHNlbGYtPnJsb2NrX2NvdW50OwogICAgIHNlbGYtPnJsb2NrX2NvdW50ID0gMDsKQEAgLTU0MSw2ICs1NDMsNyBAQAogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHNlbGYtPmxvY2tfbG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBzZWxmLT5sb2NrZWQgPSAwOwogICAgIHNlbGYtPmluX3dlYWtyZWZsaXN0ID0gTlVMTDsKICAgICBpZiAoc2VsZi0+bG9ja19sb2NrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwpAQCAtMTIyNSwxMSArMTIyOCw5IEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0aHJlYWRfbWV0aG9kc1tdID0gewogICAgIHsic3RhcnRfbmV3X3RocmVhZCIsICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19kb2N9LAorICAgICBNRVRIX1ZBUkFSR1MsIHN0YXJ0X25ld19kb2N9LAogICAgIHsic3RhcnRfbmV3IiwgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19kb2N9LAorICAgICBNRVRIX1ZBUkFSR1MsIHN0YXJ0X25ld19kb2N9LAogICAgIHsiYWxsb2NhdGVfbG9jayIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX2FsbG9jYXRlX2xvY2ssCiAgICAgIE1FVEhfTk9BUkdTLCBhbGxvY2F0ZV9kb2N9LAogICAgIHsiYWxsb2NhdGUiLCAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX2FsbG9jYXRlX2xvY2ssCkBAIC0xMjQ1LDggKzEyNDYsNyBAQAogICAgIHsiX2NvdW50IiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX19jb3VudCwKICAgICAgTUVUSF9OT0FSR1MsIF9jb3VudF9kb2N9LAogICAgIHsic3RhY2tfc2l6ZSIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX3N0YWNrX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrX3NpemVfZG9jfSwKKyAgICAgTUVUSF9WQVJBUkdTLCBzdGFja19zaXplX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTMxMCw3ICsxMzEwLDkgQEAKIAogICAgIC8qIEFkZCBhIHN5bWJvbGljIGNvbnN0YW50ICovCiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgVGhyZWFkRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oIl90aHJlYWQuZXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBUaHJlYWRFcnJvciA9IFB5RXhjX1J1bnRpbWVFcnJvcjsKKyAgICBQeV9JTkNSRUYoVGhyZWFkRXJyb3IpOworCiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImVycm9yIiwgVGhyZWFkRXJyb3IpOwogICAgIExvY2t0eXBlLnRwX2RvYyA9IGxvY2tfZG9jOwogICAgIFB5X0lOQ1JFRigmTG9ja3R5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGltZS5jIGIvTW9kdWxlcy9fdGltZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGNjOGUxLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX3RpbWUuYworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJfdGltZS5oIgotCi0vKiBFeHBvc2VkIGluIHRpbWVmdW5jcy5oLiAqLwotdGltZV90Ci1fUHlUaW1lX0RvdWJsZVRvVGltZXQoZG91YmxlIHgpCi17Ci0gICAgdGltZV90IHJlc3VsdDsKLSAgICBkb3VibGUgZGlmZjsKLQotICAgIHJlc3VsdCA9ICh0aW1lX3QpeDsKLSAgICAvKiBIb3cgbXVjaCBpbmZvIGRpZCB3ZSBsb3NlPyAgdGltZV90IG1heSBiZSBhbiBpbnRlZ3JhbCBvcgotICAgICAqIGZsb2F0aW5nIHR5cGUsIGFuZCB3ZSBkb24ndCBrbm93IHdoaWNoLiAgSWYgaXQncyBpbnRlZ3JhbCwKLSAgICAgKiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgQyB0cnVuY2F0ZXMsIHJvdW5kcywgcmV0dXJucyB0aGUgZmxvb3IsCi0gICAgICogZXRjLiAgSWYgd2UgbG9zdCBhIHNlY29uZCBvciBtb3JlLCB0aGUgQyByb3VuZGluZyBpcwotICAgICAqIHVucmVhc29uYWJsZSwgb3IgdGhlIGlucHV0IGp1c3QgZG9lc24ndCBmaXQgaW4gYSB0aW1lX3Q7Ci0gICAgICogY2FsbCBpdCBhbiBlcnJvciByZWdhcmRsZXNzLiAgTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjYXN0IHRvCi0gICAgICogdGltZV90IGNhbiBjYXVzZSBhIEMgZXJyb3IgdG9vLCBidXQgbm90aGluZyB3ZSBjYW4gZG8gdG8KLSAgICAgKiB3b3JrIGFyb3VuZCB0aGF0LgotICAgICAqLwotICAgIGRpZmYgPSB4IC0gKGRvdWJsZSlyZXN1bHQ7Ci0gICAgaWYgKGRpZmYgPD0gLTEuMCB8fCBkaWZmID49IDEuMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKLSAgICAgICAgcmVzdWx0ID0gKHRpbWVfdCktMTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RpbWUuaCBiL01vZHVsZXMvX3RpbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE2NTkzYi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL190aW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8qIFhYWDogSXQgaXMgcHJvYmFibHkgYmVzdCB0byBtb3ZlIHRpbWVmdW5jcy5oIGNvbnRlbnQgaW4gaGVyZSwgYW5kCi0gICByZW1vdmUgaXQgYnV0IHVzZXIgY29kZSBtYXkgcmVseSBvbiBpdC4gKi8KLSNpbmNsdWRlICJ0aW1lZnVuY3MuaCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RraW50ZXIuYyBiL01vZHVsZXMvX3RraW50ZXIuYwppbmRleCAyMzkwNmRlLi43MGY0NzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190a2ludGVyLmMKKysrIGIvTW9kdWxlcy9fdGtpbnRlci5jCkBAIC04MCwxOCArODAsNiBAQAogI2Vycm9yICJUayBvbGRlciB0aGFuIDguMy4xIG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAotLyogVW5pY29kZSBjb252ZXJzaW9uIGFzc3VtZXMgdGhhdCBUY2xfVW5pQ2hhciBpcyB0d28gYnl0ZXMuCi0gICBXZSBjYW5ub3QgdGVzdCB0aGlzIGRpcmVjdGx5LCBzbyB3ZSB0ZXN0IFVURi04IHNpemUgaW5zdGVhZCwKLSAgIGV4cGVjdGluZyB0aGF0IFRDTF9VVEZfTUFYIGlzIGNoYW5nZWQgaWYgVGNsIGV2ZXIgc3VwcG9ydHMKLSAgIGVpdGhlciBVVEYtMTYgb3IgVUNTLTQuCi0gICBSZWRoYXQgOCBzZXRzIFRDTF9VVEZfTUFYIHRvIDYsIGFuZCB1c2VzIHdjaGFyX3QgZm9yCi0gICBUY2xfVW5pY2hhci4gVGhpcyBpcyBhbHNvIG9rIGFzIGxvbmcgYXMgUHl0aG9uIHVzZXMgVUNTLTQsCi0gICBhcyB3ZWxsLgotKi8KLSNpZiBUQ0xfVVRGX01BWCAhPSAzICYmICEoZGVmaW5lZChQeV9VTklDT0RFX1dJREUpICYmIFRDTF9VVEZfTUFYPT02KQotI2Vycm9yICJ1bnN1cHBvcnRlZCBUY2wgY29uZmlndXJhdGlvbiIKLSNlbmRpZgotCiAjaWYgIShkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19DWUdXSU5fXykpCiAjZGVmaW5lIEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIKICNlbmRpZgpAQCAtOTc1LDQwICs5NjMsNDYgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICBQeV9VTklDT0RFICppbmJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKTsKLSAgICAgICAgLyogVGhpcyAjaWZkZWYgYXNzdW1lcyB0aGF0IFRjbCB1c2VzIFVDUy0yLgotICAgICAgICAgICBTZWUgVENMX1VURl9NQVggdGVzdCBhYm92ZS4gKi8KLSNpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkgJiYgVENMX1VURl9NQVggPT0gMworICAgICAgICB2b2lkICppbmJ1ZjsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICBpbnQga2luZDsKICAgICAgICAgVGNsX1VuaUNoYXIgKm91dGJ1ZiA9IE5VTEw7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgc2l6ZV90IGFsbG9jc2l6ZSA9ICgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9VbmlDaGFyKTsKLSAgICAgICAgaWYgKGFsbG9jc2l6ZSA+PSBzaXplKQotICAgICAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilja2FsbG9jKGFsbG9jc2l6ZSk7CisgICAgICAgIHNpemVfdCBhbGxvY3NpemU7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpbmJ1ZiA9IFB5VW5pY29kZV9EQVRBKHZhbHVlKTsKKyAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHZhbHVlKTsKKyAgICAgICAgYWxsb2NzaXplID0gKChzaXplX3Qpc2l6ZSkgKiBzaXplb2YoVGNsX1VuaUNoYXIpOworICAgICAgICBvdXRidWYgPSAoVGNsX1VuaUNoYXIqKWNrYWxsb2MoYWxsb2NzaXplKTsKICAgICAgICAgLyogRWxzZSBvdmVyZmxvdyBvY2N1cnJlZCwgYW5kIHdlIHRha2UgdGhlIG5leHQgZXhpdCAqLwogICAgICAgICBpZiAoIW91dGJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChpbmJ1ZltpXSA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5idWYsIGkpOworICAgICAgICAgICAgLyogV2UgY2Fubm90IHRlc3QgZm9yIHNpemVvZihUY2xfVW5pQ2hhcikgZGlyZWN0bHksCisgICAgICAgICAgICAgICBzbyB3ZSB0ZXN0IGZvciBVVEYtOCBzaXplIGluc3RlYWQuICovCisjaWYgVENMX1VURl9NQVggPT0gMworICAgICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICAvKiBUY2wgZG9lc24ndCBkbyBVVEYtMTYsIHlldC4gKi8KICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIGFib3ZlIHRoZSByYW5nZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVSswMDAwLVUrRkZGRikgYWxsb3dlZCBieSBUY2wiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmJ1ZltpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKICAgICAgICAgICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG91dGJ1ZltpXSA9IGluYnVmW2ldOworI2VuZGlmCisgICAgICAgICAgICBvdXRidWZbaV0gPSBjaDsKICAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBUY2xfTmV3VW5pY29kZU9iaihvdXRidWYsIHNpemUpOwogICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgICAgIHJldHVybiBUY2xfTmV3VW5pY29kZU9iaihpbmJ1Ziwgc2l6ZSk7Ci0jZW5kaWYKLQogICAgIH0KICAgICBlbHNlIGlmKFB5VGNsT2JqZWN0X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBUY2xfT2JqICp2ID0gKChQeVRjbE9iamVjdCopdmFsdWUpLT52YWx1ZTsKQEAgLTEwOTAsMjQgKzEwODQsMTQgQEAKICAgICB9CiAKICAgICBpZiAodmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5TdHJpbmdUeXBlKSB7Ci0jaWYgZGVmaW5lZChQeV9VTklDT0RFX1dJREUpICYmIFRDTF9VVEZfTUFYPT0zCi0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgICAgIGludCBzaXplOwotICAgICAgICBUY2xfVW5pQ2hhciAqaW5wdXQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dHB1dDsKLQotICAgICAgICBzaXplID0gVGNsX0dldENoYXJMZW5ndGgodmFsdWUpOwotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc2l6ZSk7Ci0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlucHV0ID0gVGNsX0dldFVuaWNvZGUodmFsdWUpOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgICAgICB3aGlsZSAoc2l6ZS0tKQotICAgICAgICAgICAgKm91dHB1dCsrID0gKmlucHV0Kys7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisjaWYgVENMX1VURl9NQVg9PTMKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCwgVGNsX0dldFVuaWNvZGUodmFsdWUpLAorICAgICAgICAgICAgVGNsX0dldENoYXJMZW5ndGgodmFsdWUpKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoVGNsX0dldFVuaWNvZGUodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQsIFRjbF9HZXRVbmljb2RlKHZhbHVlKSwKKyAgICAgICAgICAgIFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTEzNTksNiArMTM0MywxMSBAQAogICAgIGNoYXIgKmNtZDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgImdsb2JhbGNhbGwgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgIHJldHVybiAwOworCiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKICAgICBjbWQgID0gTWVyZ2UoYXJncyk7CkBAIC0xNDA4LDYgKzEzOTcsMTEgQEAKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsZXZhbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2xvYmFsZXZhbCIsICZzY3JpcHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTk3MCw5ICsxOTY0LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogVGthcHBfTWVyZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKnMgPSBNZXJnZShhcmdzKTsKKyAgICBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAibWVyZ2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgcyA9IE1lcmdlKGFyZ3MpOworCiAgICAgaWYgKHMpIHsKICAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocyk7CiAgICAgICAgIGNrZnJlZShzKTsKQEAgLTIwMDcsNyArMjAwOCw3IEBACiBQeXRob25DbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAgICAgUHl0aG9uQ21kX0NsaWVudERhdGEgKmRhdGEgPSAoUHl0aG9uQ21kX0NsaWVudERhdGEgKiljbGllbnREYXRhOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKmFyZywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKmFyZywgKnJlczsKICAgICBpbnQgaSwgcnY7CiAgICAgVGNsX09iaiAqb2JqX3JlczsKIApAQCAtMjAxNiw3ICsyMDE3LDYgQEAKICAgICAvKiBUQkQ6IG5vIGVycm9yIGNoZWNraW5nIGhlcmUgc2luY2Ugd2Uga25vdywgdmlhIHRoZQogICAgICAqIFRrYXBwX0NyZWF0ZUNvbW1hbmQoKSB0aGF0IHRoZSBjbGllbnQgZGF0YSBpcyBhIHR3by10dXBsZQogICAgICAqLwotICAgIHNlbGYgPSBkYXRhLT5zZWxmOwogICAgIGZ1bmMgPSBkYXRhLT5mdW5jOwogCiAgICAgLyogQ3JlYXRlIGFyZ3VtZW50IGxpc3QgKGFyZ3YxLCAuLi4sIGFyZ3ZOKSAqLwpAQCAtMjQxNSwxMSArMjQxNSw5IEBACiBUa3R0X1JlcHIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgVGt0dE9iamVjdCAqdiA9IChUa3R0T2JqZWN0ICopc2VsZjsKLSAgICBjaGFyIGJ1ZlsxMDBdOwotCi0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiPHRrdGltZXJ0b2tlbiBhdCAlcCVzPiIsIHYsCi0gICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8dGt0aW1lcnRva2VuIGF0ICVwJXM+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi0+ZnVuYyA9PSBOVUxMID8gIiwgaGFuZGxlciBkZWxldGVkIiA6ICIiKTsKIH0KIAogc3RhdGljIFB5VHlwZU9iamVjdCBUa3R0X1R5cGUgPQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2luYXBpLmMgYi9Nb2R1bGVzL193aW5hcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDc0ODkxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fd2luYXBpLmMKQEAgLTAsMCArMSwxMzI4IEBACisvKgorICogU3VwcG9ydCByb3V0aW5lcyBmcm9tIHRoZSBXaW5kb3dzIEFQSQorICoKKyAqIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgbWVyZ2luZyBQQy9fc3VicHJvY2Vzcy5jIHdpdGgKKyAqIE1vZHVsZXMvX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwNCBieSBTZWNyZXQgTGFicyBBQiwgaHR0cDovL3d3dy5weXRob253YXJlLmNvbQorICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFBldGVyIEFzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+CisgKgorICogQnkgb2J0YWluaW5nLCB1c2luZywgYW5kL29yIGNvcHlpbmcgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgaXRzCisgKiBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIHlvdSBhZ3JlZSB0aGF0IHlvdSBoYXZlIHJlYWQsIHVuZGVyc3Rvb2QsCisgKiBhbmQgd2lsbCBjb21wbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zOgorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCisgKiBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKKyAqIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4KKyAqIGFsbCBjb3BpZXMsIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KKyAqIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiB0aGUKKyAqIGF1dGhvcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KKyAqIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgorICogcGVybWlzc2lvbi4KKyAqCisgKiBUSEUgQVVUSE9SUyBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKKyAqIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTCisgKiBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisgKiBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorICogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisgKgorICovCisKKy8qIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4gKi8KKy8qIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvMi40L2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLiAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKyNkZWZpbmUgV0lORE9XU19MRUFOX0FORF9NRUFOCisjaW5jbHVkZSAid2luZG93cy5oIgorI2luY2x1ZGUgPGNydGRiZy5oPgorCisjaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoTVNfV0lONjQpCisjZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFwKKyAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykgaGFuZGxlKQorI2RlZmluZSBQWU5VTV9UT19IQU5ETEUob2JqKSAoKEhBTkRMRSlQeUxvbmdfQXNVbnNpZ25lZExvbmcob2JqKSkKKyNkZWZpbmUgRl9QT0lOVEVSICJrIgorI2RlZmluZSBUX1BPSU5URVIgVF9VTE9ORworI2Vsc2UKKyNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgXAorICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgbG9uZyBsb25nKSBoYW5kbGUpCisjZGVmaW5lIFBZTlVNX1RPX0hBTkRMRShvYmopICgoSEFORExFKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKSkKKyNkZWZpbmUgRl9QT0lOVEVSICJLIgorI2RlZmluZSBUX1BPSU5URVIgVF9VTE9OR0xPTkcKKyNlbmRpZgorCisjZGVmaW5lIEZfSEFORExFIEZfUE9JTlRFUgorI2RlZmluZSBGX0RXT1JEICJrIgorI2RlZmluZSBGX0JPT0wgImkiCisjZGVmaW5lIEZfVUlOVCAiSSIKKworI2RlZmluZSBUX0hBTkRMRSBUX1BPSU5URVIKKworLyogR3JhYiBDYW5jZWxJb0V4IGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KK3N0YXRpYyBpbnQgaGFzX0NhbmNlbElvRXggPSAtMTsKK3N0YXRpYyBCT09MIChDQUxMQkFDSyAqUHlfQ2FuY2VsSW9FeCkoSEFORExFLCBMUE9WRVJMQVBQRUQpOworCitzdGF0aWMgaW50CitjaGVja19DYW5jZWxJb0V4KCkKK3sKKyAgICBpZiAoaGFzX0NhbmNlbElvRXggPT0gLTEpCisgICAgeworICAgICAgICBISU5TVEFOQ0UgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlKCJLRVJORUwzMiIpOworICAgICAgICAqIChGQVJQUk9DICopICZQeV9DYW5jZWxJb0V4ID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbElvRXgiKTsKKyAgICAgICAgaGFzX0NhbmNlbElvRXggPSAoUHlfQ2FuY2VsSW9FeCAhPSBOVUxMKTsKKyAgICB9CisgICAgcmV0dXJuIGhhc19DYW5jZWxJb0V4OworfQorCisKKy8qCisgKiBBIFB5dGhvbiBvYmplY3Qgd3JhcHBpbmcgYW4gT1ZFUkxBUFBFRCBzdHJ1Y3R1cmUgYW5kIG90aGVyIHVzZWZ1bCBkYXRhCisgKiBmb3Igb3ZlcmxhcHBlZCBJL08KKyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIE9WRVJMQVBQRUQgb3ZlcmxhcHBlZDsKKyAgICAvKiBGb3IgY29udmVuaWVuY2UsIHdlIHN0b3JlIHRoZSBmaWxlIGhhbmRsZSB0b28gKi8KKyAgICBIQU5ETEUgaGFuZGxlOworICAgIC8qIFdoZXRoZXIgdGhlcmUncyBJL08gaW4gZmxpZ2h0ICovCisgICAgaW50IHBlbmRpbmc7CisgICAgLyogV2hldGhlciBJL08gY29tcGxldGVkIHN1Y2Nlc3NmdWxseSAqLworICAgIGludCBjb21wbGV0ZWQ7CisgICAgLyogQnVmZmVyIHVzZWQgZm9yIHJlYWRpbmcgKG9wdGlvbmFsKSAqLworICAgIFB5T2JqZWN0ICpyZWFkX2J1ZmZlcjsKKyAgICAvKiBCdWZmZXIgdXNlZCBmb3Igd3JpdGluZyAob3B0aW9uYWwpICovCisgICAgUHlfYnVmZmVyIHdyaXRlX2J1ZmZlcjsKK30gT3ZlcmxhcHBlZE9iamVjdDsKKworc3RhdGljIHZvaWQKK292ZXJsYXBwZWRfZGVhbGxvYyhPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQoreworICAgIERXT1JEIGJ5dGVzOworICAgIGludCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoc2VsZi0+cGVuZGluZykgeworICAgICAgICAvKiBtYWtlIGl0IGEgcHJvZ3JhbW1pbmcgZXJyb3IgdG8gZGVhbGxvY2F0ZSB3aGlsZSBvcGVyYXRpb24KKyAgICAgICAgICAgaXMgcGVuZGluZywgZXZlbiBpZiB3ZSBjYW4gc2FmZWx5IGNhbmNlbCBpdCAqLworICAgICAgICBpZiAoY2hlY2tfQ2FuY2VsSW9FeCgpICYmCisgICAgICAgICAgICAgICAgUHlfQ2FuY2VsSW9FeChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkKSkKKyAgICAgICAgICAgIEdldE92ZXJsYXBwZWRSZXN1bHQoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCwgJmJ5dGVzLCBUUlVFKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9ucyBzdGlsbCBpbiBmbGlnaHQgd2hpbGUgZGVzdHJveWluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiT3ZlcmxhcHBlZCBvYmplY3QsIHRoZSBwcm9jZXNzIG1heSBjcmFzaCIpOworICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoTlVMTCk7CisgICAgfQorICAgIENsb3NlSGFuZGxlKHNlbGYtPm92ZXJsYXBwZWQuaEV2ZW50KTsKKyAgICBTZXRMYXN0RXJyb3IoZXJyKTsKKyAgICBpZiAoc2VsZi0+d3JpdGVfYnVmZmVyLm9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZi0+d3JpdGVfYnVmZmVyKTsKKyAgICBQeV9DTEVBUihzZWxmLT5yZWFkX2J1ZmZlcik7CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0KE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp3YWl0b2JqKQoreworICAgIGludCB3YWl0OworICAgIEJPT0wgcmVzOworICAgIERXT1JEIHRyYW5zZmVycmVkID0gMDsKKyAgICBEV09SRCBlcnI7CisKKyAgICB3YWl0ID0gUHlPYmplY3RfSXNUcnVlKHdhaXRvYmopOworICAgIGlmICh3YWl0IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IEdldE92ZXJsYXBwZWRSZXN1bHQoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCwgJnRyYW5zZmVycmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCAhPSAwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZXJyID0gcmVzID8gRVJST1JfU1VDQ0VTUyA6IEdldExhc3RFcnJvcigpOworICAgIHN3aXRjaCAoZXJyKSB7CisgICAgICAgIGNhc2UgRVJST1JfU1VDQ0VTUzoKKyAgICAgICAgY2FzZSBFUlJPUl9NT1JFX0RBVEE6CisgICAgICAgIGNhc2UgRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICBzZWxmLT5jb21wbGV0ZWQgPSAxOworICAgICAgICAgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFUlJPUl9JT19JTkNPTVBMRVRFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCBlcnIpOworICAgIH0KKyAgICBpZiAoc2VsZi0+Y29tcGxldGVkICYmIHNlbGYtPnJlYWRfYnVmZmVyICE9IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2tFeGFjdChzZWxmLT5yZWFkX2J1ZmZlcikpOworICAgICAgICBpZiAodHJhbnNmZXJyZWQgIT0gUHlCeXRlc19HRVRfU0laRShzZWxmLT5yZWFkX2J1ZmZlcikgJiYKKyAgICAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmc2VsZi0+cmVhZF9idWZmZXIsIHRyYW5zZmVycmVkKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiSUkiLCAodW5zaWduZWQpIHRyYW5zZmVycmVkLCAodW5zaWduZWQpIGVycik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgaWYgKCFzZWxmLT5jb21wbGV0ZWQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZ2V0IHJlYWQgYnVmZmVyIGJlZm9yZSBHZXRPdmVybGFwcGVkUmVzdWx0KCkgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbHMgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlcyA9IHNlbGYtPnJlYWRfYnVmZmVyID8gc2VsZi0+cmVhZF9idWZmZXIgOiBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQoreworICAgIEJPT0wgcmVzID0gVFJVRTsKKworICAgIGlmIChzZWxmLT5wZW5kaW5nKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNoZWNrX0NhbmNlbElvRXgoKSkKKyAgICAgICAgICAgIHJlcyA9IFB5X0NhbmNlbElvRXgoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IENhbmNlbElvKHNlbGYtPmhhbmRsZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgLyogQ2FuY2VsSW9FeCByZXR1cm5zIEVSUk9SX05PVF9GT1VORCBpZiB0aGUgSS9PIGNvbXBsZXRlZCBpbi1iZXR3ZWVuICovCisgICAgaWYgKCFyZXMgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9UX0ZPVU5EKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBvdmVybGFwcGVkX21ldGhvZHNbXSA9IHsKKyAgICB7IkdldE92ZXJsYXBwZWRSZXN1bHQiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAorICAgIHsiZ2V0YnVmZmVyIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2dldGJ1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2NhbmNlbCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIG92ZXJsYXBwZWRfbWVtYmVyc1tdID0geworICAgIHsiZXZlbnQiLCBUX0hBTkRMRSwKKyAgICAgb2Zmc2V0b2YoT3ZlcmxhcHBlZE9iamVjdCwgb3ZlcmxhcHBlZCkgKyBvZmZzZXRvZihPVkVSTEFQUEVELCBoRXZlbnQpLAorICAgICBSRUFET05MWSwgIm92ZXJsYXBwZWQgZXZlbnQgaGFuZGxlIn0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgT3ZlcmxhcHBlZFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgLyogdHBfbmFtZSAgICAgICAgICAgKi8gIl93aW5hcGkuT3ZlcmxhcHBlZCIsCisgICAgLyogdHBfYmFzaWNzaXplICAgICAgKi8gc2l6ZW9mKE92ZXJsYXBwZWRPYmplY3QpLAorICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICovIDAsCisgICAgLyogdHBfZGVhbGxvYyAgICAgICAgKi8gKGRlc3RydWN0b3IpIG92ZXJsYXBwZWRfZGVhbGxvYywKKyAgICAvKiB0cF9wcmludCAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2dldGF0dHIgICAgICAgICovIDAsCisgICAgLyogdHBfc2V0YXR0ciAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9yZXNlcnZlZCAgICAgICAqLyAwLAorICAgIC8qIHRwX3JlcHIgICAgICAgICAgICovIDAsCisgICAgLyogdHBfYXNfbnVtYmVyICAgICAgKi8gMCwKKyAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAqLyAwLAorICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICovIDAsCisgICAgLyogdHBfaGFzaCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9jYWxsICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX3N0ciAgICAgICAgICAgICovIDAsCisgICAgLyogdHBfZ2V0YXR0cm8gICAgICAgKi8gMCwKKyAgICAvKiB0cF9zZXRhdHRybyAgICAgICAqLyAwLAorICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICovIDAsCisgICAgLyogdHBfZmxhZ3MgICAgICAgICAgKi8gUHlfVFBGTEFHU19ERUZBVUxULAorICAgIC8qIHRwX2RvYyAgICAgICAgICAgICovICJPVkVSTEFQUEVEIHN0cnVjdHVyZSB3cmFwcGVyIiwKKyAgICAvKiB0cF90cmF2ZXJzZSAgICAgICAqLyAwLAorICAgIC8qIHRwX2NsZWFyICAgICAgICAgICovIDAsCisgICAgLyogdHBfcmljaGNvbXBhcmUgICAgKi8gMCwKKyAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyAwLAorICAgIC8qIHRwX2l0ZXIgICAgICAgICAgICovIDAsCisgICAgLyogdHBfaXRlcm5leHQgICAgICAgKi8gMCwKKyAgICAvKiB0cF9tZXRob2RzICAgICAgICAqLyBvdmVybGFwcGVkX21ldGhvZHMsCisgICAgLyogdHBfbWVtYmVycyAgICAgICAgKi8gb3ZlcmxhcHBlZF9tZW1iZXJzLAorICAgIC8qIHRwX2dldHNldCAgICAgICAgICovIDAsCisgICAgLyogdHBfYmFzZSAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9kaWN0ICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICovIDAsCisgICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgKi8gMCwKKyAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAqLyAwLAorICAgIC8qIHRwX2luaXQgICAgICAgICAgICovIDAsCisgICAgLyogdHBfYWxsb2MgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9uZXcgICAgICAgICAgICAqLyAwLAorfTsKKworc3RhdGljIE92ZXJsYXBwZWRPYmplY3QgKgorbmV3X292ZXJsYXBwZWQoSEFORExFIGhhbmRsZSkKK3sKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpzZWxmOworCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhPdmVybGFwcGVkT2JqZWN0LCAmT3ZlcmxhcHBlZFR5cGUpOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2VsZi0+aGFuZGxlID0gaGFuZGxlOworICAgIHNlbGYtPnJlYWRfYnVmZmVyID0gTlVMTDsKKyAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICBzZWxmLT5jb21wbGV0ZWQgPSAwOworICAgIG1lbXNldCgmc2VsZi0+b3ZlcmxhcHBlZCwgMCwgc2l6ZW9mKE9WRVJMQVBQRUQpKTsKKyAgICBtZW1zZXQoJnNlbGYtPndyaXRlX2J1ZmZlciwgMCwgc2l6ZW9mKFB5X2J1ZmZlcikpOworICAgIC8qIE1hbnVhbCByZXNldCwgaW5pdGlhbGx5IG5vbi1zaWduYWxsZWQgKi8KKyAgICBzZWxmLT5vdmVybGFwcGVkLmhFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIHdpbmRvd3MgQVBJIGZ1bmN0aW9ucyAqLworCitQeURvY19TVFJWQVIoQ2xvc2VIYW5kbGVfZG9jLAorIkNsb3NlSGFuZGxlKGhhbmRsZSkgLT4gTm9uZVxuXAorXG5cCitDbG9zZSBoYW5kbGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ2xvc2VIYW5kbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEhBTkRMRSBoT2JqZWN0OworICAgIEJPT0wgc3VjY2VzczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhPYmplY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzdWNjZXNzID0gQ2xvc2VIYW5kbGUoaE9iamVjdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEhBTkRMRSBoTmFtZWRQaXBlOworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisgICAgQk9PTCBzdWNjZXNzOworICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgInwiIEZfQk9PTCwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgeworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaE5hbWVkUGlwZSk7CisgICAgICAgIGlmICghb3ZlcmxhcHBlZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoTmFtZWRQaXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAob3ZlcmxhcHBlZCkgeworICAgICAgICBpbnQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIC8qIE92ZXJsYXBwZWQgQ29ubmVjdE5hbWVkUGlwZSBuZXZlciByZXR1cm5zIGEgc3VjY2VzcyBjb2RlICovCisgICAgICAgIGFzc2VydChzdWNjZXNzID09IDApOworICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICBvdmVybGFwcGVkLT5wZW5kaW5nID0gMTsKKyAgICAgICAgZWxzZSBpZiAoZXJyID09IEVSUk9SX1BJUEVfQ09OTkVDVEVEKQorICAgICAgICAgICAgU2V0RXZlbnQob3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZC5oRXZlbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb3ZlcmxhcHBlZDsKKyAgICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBMUENUU1RSIGxwRmlsZU5hbWU7CisgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOworICAgIERXT1JEIGR3U2hhcmVNb2RlOworICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKKyAgICBEV09SRCBkd0NyZWF0aW9uRGlzcG9zaXRpb247CisgICAgRFdPUkQgZHdGbGFnc0FuZEF0dHJpYnV0ZXM7CisgICAgSEFORExFIGhUZW1wbGF0ZUZpbGU7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUgorICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscEZpbGVOYW1lLCAmZHdEZXNpcmVkQWNjZXNzLCAmZHdTaGFyZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcywgJmR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCAmaFRlbXBsYXRlRmlsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGhhbmRsZSA9IENyZWF0ZUZpbGUobHBGaWxlTmFtZSwgZHdEZXNpcmVkQWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgZHdTaGFyZU1vZGUsIGxwU2VjdXJpdHlBdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMsIGhUZW1wbGF0ZUZpbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIExQQ1RTVFIgbHBOYW1lOworICAgIERXT1JEIGR3T3Blbk1vZGU7CisgICAgRFdPUkQgZHdQaXBlTW9kZTsKKyAgICBEV09SRCBuTWF4SW5zdGFuY2VzOworICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOworICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7CisgICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OworICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAorICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihDcmVhdGVQaXBlX2RvYywKKyJDcmVhdGVQaXBlKHBpcGVfYXR0cnMsIHNpemUpIC0+IChyZWFkX2hhbmRsZSwgd3JpdGVfaGFuZGxlKVxuXAorXG5cCitDcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUsIGFuZCByZXR1cm4gaGFuZGxlcyB0byB0aGUgcmVhZCBhbmRcblwKK3dyaXRlIGVuZHMgb2YgdGhlIHBpcGUuXG5cCitcblwKK3BpcGVfYXR0cnMgaXMgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVQaXBlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBIQU5ETEUgcmVhZF9waXBlOworICAgIEhBTkRMRSB3cml0ZV9waXBlOworICAgIEJPT0wgcmVzdWx0OworCisgICAgUHlPYmplY3QqIHBpcGVfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLworICAgIERXT1JEIHNpemU7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiBGX0RXT1JEICI6Q3JlYXRlUGlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlwZV9hdHRyaWJ1dGVzLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IENyZWF0ZVBpcGUoJnJlYWRfcGlwZSwgJndyaXRlX3BpcGUsIE5VTEwsIHNpemUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgIk5OIiwgSEFORExFX1RPX1BZTlVNKHJlYWRfcGlwZSksIEhBTkRMRV9UT19QWU5VTSh3cml0ZV9waXBlKSk7Cit9CisKKy8qIGhlbHBlcnMgZm9yIGNyZWF0ZXByb2Nlc3MgKi8KKworc3RhdGljIHVuc2lnbmVkIGxvbmcKK2dldHVsb25nKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCit7CisgICAgUHlPYmplY3QqIHZhbHVlOworICAgIHVuc2lnbmVkIGxvbmcgcmV0OworCisgICAgdmFsdWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7CisgICAgaWYgKCEgdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyh2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgSEFORExFCitnZXRoYW5kbGUoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK3sKKyAgICBQeU9iamVjdCogdmFsdWU7CisgICAgSEFORExFIHJldDsKKworICAgIHZhbHVlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIG5hbWUpOworICAgIGlmICghIHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3I/ICovCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKKyAgICAgICAgcmV0ID0gTlVMTDsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IFBZTlVNX1RPX0hBTkRMRSh2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QqCitnZXRlbnZpcm9ubWVudChQeU9iamVjdCogZW52aXJvbm1lbnQpCit7CisgICAgUHlfc3NpemVfdCBpLCBlbnZzaXplLCB0b3RhbHNpemU7CisgICAgUHlfVUNTNCAqYnVmZmVyID0gTlVMTCwgKnAsICplbmQ7CisgICAgUHlPYmplY3QgKmtleXMsICp2YWx1ZXMsICpyZXM7CisKKyAgICAvKiBjb252ZXJ0IGVudmlyb25tZW50IGRpY3Rpb25hcnkgdG8gd2luZG93cyBlbnZpcm9tZW50IHN0cmluZyAqLworICAgIGlmICghIFB5TWFwcGluZ19DaGVjayhlbnZpcm9ubWVudCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLCAiZW52aXJvbm1lbnQgbXVzdCBiZSBkaWN0aW9uYXJ5IG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZW52c2l6ZSA9IFB5TWFwcGluZ19MZW5ndGgoZW52aXJvbm1lbnQpOworCisgICAga2V5cyA9IFB5TWFwcGluZ19LZXlzKGVudmlyb25tZW50KTsKKyAgICB2YWx1ZXMgPSBQeU1hcHBpbmdfVmFsdWVzKGVudmlyb25tZW50KTsKKyAgICBpZiAoIWtleXMgfHwgIXZhbHVlcykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHRvdGFsc2l6ZSA9IDE7IC8qIHRyYWlsaW5nIG51bGwgY2hhcmFjdGVyICovCisgICAgZm9yIChpID0gMDsgaSA8IGVudnNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCoga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOworICAgICAgICBQeU9iamVjdCogdmFsdWUgPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKworICAgICAgICBpZiAoISBQeVVuaWNvZGVfQ2hlY2soa2V5KSB8fCAhIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImVudmlyb25tZW50IGNhbiBvbmx5IGNvbnRhaW4gc3RyaW5ncyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB0b3RhbHNpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoa2V5KSArIDE7ICAgIC8qICsxIGZvciAnPScgKi8KKyAgICAgICAgdG90YWxzaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKSArIDE7ICAvKiArMSBmb3IgJ1wwJyAqLworICAgIH0KKworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYyh0b3RhbHNpemUgKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghIGJ1ZmZlcikKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBwID0gYnVmZmVyOworICAgIGVuZCA9IGJ1ZmZlciArIHRvdGFsc2l6ZTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBlbnZzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKKyAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChrZXksIHAsIGVuZCAtIHAsIDApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpOworICAgICAgICAqcCsrID0gJz0nOworICAgICAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQodmFsdWUsIHAsIGVuZCAtIHAsIDApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSk7CisgICAgICAgICpwKysgPSAnXDAnOworICAgIH0KKworICAgIC8qIGFkZCB0cmFpbGluZyBudWxsIGJ5dGUgKi8KKyAgICAqcCsrID0gJ1wwJzsKKyAgICBhc3NlcnQocCA9PSBlbmQpOworCisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlcyk7CisKKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBidWZmZXIsIHAgLSBidWZmZXIpOworICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzOworCisgZXJyb3I6CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworICAgIFB5X1hERUNSRUYoa2V5cyk7CisgICAgUHlfWERFQ1JFRih2YWx1ZXMpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQ3JlYXRlUHJvY2Vzc19kb2MsCisiQ3JlYXRlUHJvY2VzcyhhcHBfbmFtZSwgY21kX2xpbmUsIHByb2NfYXR0cnMsIHRocmVhZF9hdHRycyxcblwKKyAgICAgICAgICAgICAgIGluaGVyaXQsIGZsYWdzLCBlbnZfbWFwcGluZywgY3VyZGlyLFxuXAorICAgICAgICAgICAgICAgc3RhcnR1cF9pbmZvKSAtPiAocHJvY19oYW5kbGUsIHRocmVhZF9oYW5kbGUsXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHRpZClcblwKK1xuXAorQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC4gVGhlIHJldHVyblxuXAordmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsXG5cCitwcm9jZXNzIElELCBhbmQgdGhyZWFkIElELlxuXAorXG5cCitwcm9jX2F0dHJzIGFuZCB0aHJlYWRfYXR0cnMgYXJlIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgQk9PTCByZXN1bHQ7CisgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKKyAgICBTVEFSVFVQSU5GT1cgc2k7CisgICAgUHlPYmplY3QqIGVudmlyb25tZW50OworICAgIHdjaGFyX3QgKndlbnZpcm9ubWVudDsKKworICAgIHdjaGFyX3QqIGFwcGxpY2F0aW9uX25hbWU7CisgICAgd2NoYXJfdCogY29tbWFuZF9saW5lOworICAgIFB5T2JqZWN0KiBwcm9jZXNzX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KKyAgICBQeU9iamVjdCogdGhyZWFkX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KKyAgICBCT09MIGluaGVyaXRfaGFuZGxlczsKKyAgICBEV09SRCBjcmVhdGlvbl9mbGFnczsKKyAgICBQeU9iamVjdCogZW52X21hcHBpbmc7CisgICAgd2NoYXJfdCogY3VycmVudF9kaXJlY3Rvcnk7CisgICAgUHlPYmplY3QqIHN0YXJ0dXBfaW5mbzsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT08iIEZfQk9PTCBGX0RXT1JEICJPWk86Q3JlYXRlUHJvY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21tYW5kX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2Vzc19hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZF9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVhdGlvbl9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnZfbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHVwX2luZm8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFplcm9NZW1vcnkoJnNpLCBzaXplb2Yoc2kpKTsKKyAgICBzaS5jYiA9IHNpemVvZihzaSk7CisKKyAgICAvKiBub3RlOiB3ZSBvbmx5IHN1cHBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgYWxsIFNJIGF0dHJpYnV0ZXMgKi8KKyAgICBzaS5kd0ZsYWdzID0gZ2V0dWxvbmcoc3RhcnR1cF9pbmZvLCAiZHdGbGFncyIpOworICAgIHNpLndTaG93V2luZG93ID0gKFdPUkQpZ2V0dWxvbmcoc3RhcnR1cF9pbmZvLCAid1Nob3dXaW5kb3ciKTsKKyAgICBzaS5oU3RkSW5wdXQgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZElucHV0Iik7CisgICAgc2kuaFN0ZE91dHB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkT3V0cHV0Iik7CisgICAgc2kuaFN0ZEVycm9yID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRFcnJvciIpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChlbnZfbWFwcGluZyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGVudmlyb25tZW50ID0gZ2V0ZW52aXJvbm1lbnQoZW52X21hcHBpbmcpOworICAgICAgICBpZiAoISBlbnZpcm9ubWVudCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB3ZW52aXJvbm1lbnQgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGVudmlyb25tZW50KTsKKyAgICAgICAgaWYgKHdlbnZpcm9ubWVudCA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnZpcm9ubWVudCA9IE5VTEw7CisgICAgICAgIHdlbnZpcm9ubWVudCA9IE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IENyZWF0ZVByb2Nlc3NXKGFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uX2ZsYWdzIHwgQ1JFQVRFX1VOSUNPREVfRU5WSVJPTk1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZW52aXJvbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5X1hERUNSRUYoZW52aXJvbm1lbnQpOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5Oa2siLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9UT19QWU5VTShwaS5oUHJvY2VzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX1RPX1BZTlVNKHBpLmhUaHJlYWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3UHJvY2Vzc0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3VGhyZWFkSWQpOworfQorCitQeURvY19TVFJWQVIoRHVwbGljYXRlSGFuZGxlX2RvYywKKyJEdXBsaWNhdGVIYW5kbGUoc291cmNlX3Byb2NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuXAorICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY19oYW5kbGUsIHRhcmdldF9oYW5kbGUsIGFjY2VzcyxcblwKKyAgICAgICAgICAgICAgICAgaW5oZXJpdFssIG9wdGlvbnNdKSAtPiBoYW5kbGVcblwKK1xuXAorUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG5cCitcblwKK1RoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsXG5cCitoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG5cCit0aHJvdWdoIGJvdGggaGFuZGxlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9EdXBsaWNhdGVIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEhBTkRMRSB0YXJnZXRfaGFuZGxlOworICAgIEJPT0wgcmVzdWx0OworCisgICAgSEFORExFIHNvdXJjZV9wcm9jZXNzX2hhbmRsZTsKKyAgICBIQU5ETEUgc291cmNlX2hhbmRsZTsKKyAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlOworICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzOworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGU7CisgICAgRFdPUkQgb3B0aW9ucyA9IDA7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSBGX0hBTkRMRSBGX0hBTkRMRSBGX0RXT1JEIEZfQk9PTCBGX0RXT1JECisgICAgICAgICAgICAgICAgICAgICAgICAgICAiOkR1cGxpY2F0ZUhhbmRsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc2lyZWRfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBEdXBsaWNhdGVIYW5kbGUoCisgICAgICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgc291cmNlX2hhbmRsZSwKKyAgICAgICAgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAmdGFyZ2V0X2hhbmRsZSwKKyAgICAgICAgZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgIGluaGVyaXRfaGFuZGxlLAorICAgICAgICBvcHRpb25zCisgICAgKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTSh0YXJnZXRfaGFuZGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9FeGl0UHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgVUlOVCB1RXhpdENvZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9VSU5ULCAmdUV4aXRDb2RlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKKyAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8CisgICAgICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1h8U0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7CisgICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfREVCVUcpOworICAgICNlbmRpZgorCisgICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKKworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoR2V0Q3VycmVudFByb2Nlc3NfZG9jLAorIkdldEN1cnJlbnRQcm9jZXNzKCkgLT4gaGFuZGxlXG5cCitcblwKK1JldHVybiBhIGhhbmRsZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpHZXRDdXJyZW50UHJvY2VzcyIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oR2V0Q3VycmVudFByb2Nlc3MoKSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRFeGl0Q29kZVByb2Nlc3NfZG9jLAorIkdldEV4aXRDb2RlUHJvY2VzcyhoYW5kbGUpIC0+IEV4aXQgY29kZVxuXAorXG5cCitSZXR1cm4gdGhlIHRlcm1pbmF0aW9uIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBEV09SRCBleGl0X2NvZGU7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBIQU5ETEUgcHJvY2VzczsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IEdldEV4aXRDb2RlUHJvY2Vzcyhwcm9jZXNzLCAmZXhpdF9jb2RlKTsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhleGl0X2NvZGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldExhc3RFcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9EV09SRCwgR2V0TGFzdEVycm9yKCkpOworfQorCitQeURvY19TVFJWQVIoR2V0TW9kdWxlRmlsZU5hbWVfZG9jLAorIkdldE1vZHVsZUZpbGVOYW1lKG1vZHVsZSkgLT4gcGF0aFxuXAorXG5cCitSZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zXG5cCit0aGUgc3BlY2lmaWVkIG1vZHVsZS4gVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlXG5cCitjdXJyZW50IHByb2Nlc3MuXG5cCitcblwKK1RoZSBtb2R1bGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGhhbmRsZSB0byB0aGUgbG9hZGVkIG1vZHVsZVxuXAord2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsIFxuXAorR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcblwKK29mIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEJPT0wgcmVzdWx0OworICAgIEhNT0RVTEUgbW9kdWxlOworICAgIFdDSEFSIGZpbGVuYW1lW01BWF9QQVRIXTsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kdWxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBHZXRNb2R1bGVGaWxlTmFtZVcobW9kdWxlLCBmaWxlbmFtZSwgTUFYX1BBVEgpOworICAgIGZpbGVuYW1lW01BWF9QQVRILTFdID0gJ1wwJzsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGZpbGVuYW1lLCB3Y3NsZW4oZmlsZW5hbWUpKTsKK30KKworUHlEb2NfU1RSVkFSKEdldFN0ZEhhbmRsZV9kb2MsCisiR2V0U3RkSGFuZGxlKGhhbmRsZSkgLT4gaW50ZWdlclxuXAorXG5cCitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2VcblwKKyhTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwgU1REX0VSUk9SX0hBTkRMRSkuXG5cCitUaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0U3RkSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIERXT1JEIHN0ZF9oYW5kbGU7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgIjpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZShzdGRfaGFuZGxlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIGlmICghIGhhbmRsZSkgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHJldHVybiBQeV9Ob25lOworICAgIH0KKworICAgIC8qIG5vdGU6IHJldHVybnMgaW50ZWdlciwgbm90IGhhbmRsZSBvYmplY3QgKi8KKyAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRWZXJzaW9uX2RvYywKKyJHZXRWZXJzaW9uKCkgLT4gdmVyc2lvblxuXAorXG5cCitSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0VmVyc2lvbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldFZlcnNpb24iKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoR2V0VmVyc2lvbigpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOworICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7CisgICAgRFdPUkQgZHdQcm9jZXNzSWQ7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEIEZfQk9PTCBGX0RXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOworICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfUGVla05hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEw7CisgICAgRFdPUkQgbnJlYWQsIG5hdmFpbCwgbmxlZnQ7CisgICAgQk9PTCByZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiICwgJmhhbmRsZSwgJnNpemUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNpemUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNpemUpIHsKKyAgICAgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICAgICAgaWYgKCFidWYpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBQZWVrTmFtZWRQaXBlKGhhbmRsZSwgUHlCeXRlc19BU19TVFJJTkcoYnVmKSwgc2l6ZSwgJm5yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYXZhaWwsICZubGVmdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZidWYsIG5yZWFkKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmlpIiwgYnVmLCBuYXZhaWwsIG5sZWZ0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gUGVla05hbWVkUGlwZShoYW5kbGUsIE5VTEwsIDAsIE5VTEwsICZuYXZhaWwsICZubGVmdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpIiwgbmF2YWlsLCBubGVmdCk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZTsKKyAgICBEV09SRCBucmVhZDsKKyAgICBQeU9iamVjdCAqYnVmOworICAgIEJPT0wgcmV0OworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisgICAgRFdPUkQgZXJyOworICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAiaXxpOlJlYWRGaWxlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgeworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFvdmVybGFwcGVkKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIC8qIFN0ZWFscyByZWZlcmVuY2UgdG8gYnVmICovCisgICAgICAgIG92ZXJsYXBwZWQtPnJlYWRfYnVmZmVyID0gYnVmOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBSZWFkRmlsZShoYW5kbGUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZiksIHNpemUsICZucmVhZCwKKyAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkID8gJm92ZXJsYXBwZWQtPm92ZXJsYXBwZWQgOiBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZXJyID0gcmV0ID8gMCA6IEdldExhc3RFcnJvcigpOworCisgICAgaWYgKG92ZXJsYXBwZWQpIHsKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU9fUEVORElORykKKyAgICAgICAgICAgICAgICBvdmVybGFwcGVkLT5wZW5kaW5nID0gMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVyciAhPSBFUlJPUl9NT1JFX0RBVEEpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIChQeU9iamVjdCAqKSBvdmVybGFwcGVkLCBlcnIpOworICAgIH0KKworICAgIGlmICghcmV0ICYmIGVyciAhPSBFUlJPUl9NT1JFX0RBVEEpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICB9CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmLCBucmVhZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIGJ1ZiwgZXJyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgSEFORExFIGhOYW1lZFBpcGU7CisgICAgUHlPYmplY3QgKm9BcmdzWzNdOworICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OworICAgIGludCBpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgeworICAgICAgICBpZiAob0FyZ3NbaV0gIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgZHdBcmdzW2ldID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhvQXJnc1tpXSk7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHBBcmdzW2ldID0gJmR3QXJnc1tpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoaE5hbWVkUGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoVGVybWluYXRlUHJvY2Vzc19kb2MsCisiVGVybWluYXRlUHJvY2VzcyhoYW5kbGUsIGV4aXRfY29kZSkgLT4gTm9uZVxuXAorXG5cCitUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfVGVybWluYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBIQU5ETEUgcHJvY2VzczsKKyAgICBVSU5UIGV4aXRfY29kZTsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfVUlOVCAiOlRlcm1pbmF0ZVByb2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3MsICZleGl0X2NvZGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MocHJvY2VzcywgZXhpdF9jb2RlKTsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9XYWl0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBMUENUU1RSIGxwTmFtZWRQaXBlTmFtZTsKKyAgICBEV09SRCBuVGltZU91dDsKKyAgICBCT09MIHN1Y2Nlc3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQsICZscE5hbWVkUGlwZU5hbWUsICZuVGltZU91dCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKGxwTmFtZWRQaXBlTmFtZSwgblRpbWVPdXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIERXT1JEIHJlc3VsdDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3NlcTsKKyAgICBIQU5ETEUgaGFuZGxlc1tNQVhJTVVNX1dBSVRfT0JKRUNUU107CisgICAgSEFORExFIHNpZ2ludF9ldmVudCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuaGFuZGxlcywgaTsKKyAgICBCT09MIHdhaXRfZmxhZzsKKyAgICBEV09SRCBtaWxsaXNlY29uZHMgPSBJTkZJTklURTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIgRl9CT09MICJ8IiBGX0RXT1JECisgICAgICAgICAgICAgICAgICAgICAgICAgICI6V2FpdEZvck11bHRpcGxlT2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soaGFuZGxlX3NlcSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzZXF1ZW5jZSB0eXBlIGV4cGVjdGVkLCBnb3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGhhbmRsZV9zZXEpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5oYW5kbGVzID0gUHlTZXF1ZW5jZV9MZW5ndGgoaGFuZGxlX3NlcSk7CisgICAgaWYgKG5oYW5kbGVzID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobmhhbmRsZXMgPCAwIHx8IG5oYW5kbGVzID49IE1BWElNVU1fV0FJVF9PQkpFQ1RTIC0gMSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGF0IG1vc3QgJXpkIGhhbmRsZXMsIGdvdCBhIHNlcXVlbmNlIG9mIGxlbmd0aCAlemQiLAorICAgICAgICAgICAgICAgICAgICAgTUFYSU1VTV9XQUlUX09CSkVDVFMgLSAxLCBuaGFuZGxlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbmhhbmRsZXM7IGkrKykgeworICAgICAgICBIQU5ETEUgaDsKKyAgICAgICAgUHlPYmplY3QgKnYgPSBQeVNlcXVlbmNlX0dldEl0ZW0oaGFuZGxlX3NlcSwgaSk7CisgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCBGX0hBTkRMRSwgJmgpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGVzW2ldID0gaDsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KKyAgICAvKiBJZiB0aGlzIGlzIHRoZSBtYWluIHRocmVhZCB0aGVuIG1ha2UgdGhlIHdhaXQgaW50ZXJydXB0aWJsZQorICAgICAgIGJ5IEN0cmwtQyB1bmxlc3Mgd2UgYXJlIHdhaXRpbmcgZm9yICphbGwqIGhhbmRsZXMgKi8KKyAgICBpZiAoIXdhaXRfZmxhZyAmJiBfUHlPU19Jc01haW5UaHJlYWQoKSkgeworICAgICAgICBzaWdpbnRfZXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICBhc3NlcnQoc2lnaW50X2V2ZW50ICE9IE5VTEwpOworICAgICAgICBoYW5kbGVzW25oYW5kbGVzKytdID0gc2lnaW50X2V2ZW50OworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoc2lnaW50X2V2ZW50ICE9IE5VTEwpCisgICAgICAgIFJlc2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKKyAgICByZXN1bHQgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKChEV09SRCkgbmhhbmRsZXMsIGhhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2ZsYWcsIG1pbGxpc2Vjb25kcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICBlbHNlIGlmIChzaWdpbnRfZXZlbnQgIT0gTlVMTCAmJiByZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCArIG5oYW5kbGVzIC0gMSkgeworICAgICAgICBlcnJubyA9IEVJTlRSOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGludCkgcmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSKFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jLAorIldhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCB0aW1lb3V0KSAtPiByZXN1bHRcblwKK1xuXAorV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3JcblwKK3RoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWRcblwKK2luIG1pbGxpc2Vjb25kcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBEV09SRCByZXN1bHQ7CisKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIERXT1JEIG1pbGxpc2Vjb25kczsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfRFdPUkQgIjpXYWl0Rm9yU2luZ2xlT2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIG1pbGxpc2Vjb25kcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVzdWx0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5X2J1ZmZlciBfYnVmLCAqYnVmOworICAgIFB5T2JqZWN0ICpidWZvYmo7CisgICAgRFdPUkQgd3JpdHRlbjsKKyAgICBCT09MIHJldDsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworICAgIERXT1JEIGVycjsKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworCisgICAgLyogRmlyc3QgZ2V0IGhhbmRsZSBhbmQgdXNlX292ZXJsYXBwZWQgdG8ga25vdyB3aGljaCBQeV9idWZmZXIgdG8gdXNlICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmYnVmb2JqLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgeworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFvdmVybGFwcGVkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGJ1ZiA9ICZvdmVybGFwcGVkLT53cml0ZV9idWZmZXI7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgYnVmID0gJl9idWY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGJ1Zm9iaiwgInkqIiwgYnVmKSkgeworICAgICAgICBQeV9YREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gV3JpdGVGaWxlKGhhbmRsZSwgYnVmLT5idWYsIGJ1Zi0+bGVuLCAmd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGVyciA9IHJldCA/IDAgOiBHZXRMYXN0RXJyb3IoKTsKKworICAgIGlmIChvdmVybGFwcGVkKSB7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZC0+cGVuZGluZyA9IDE7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIChQeU9iamVjdCAqKSBvdmVybGFwcGVkLCBlcnIpOworICAgIH0KKworICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICBpZiAoIXJldCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJJSSIsIHdyaXR0ZW4sIGVycik7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHdpbmFwaV9mdW5jdGlvbnNbXSA9IHsKKyAgICB7IkNsb3NlSGFuZGxlIiwgd2luYXBpX0Nsb3NlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCisgICAgIENsb3NlSGFuZGxlX2RvY30sCisgICAgeyJDb25uZWN0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9Db25uZWN0TmFtZWRQaXBlLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAiIn0sCisgICAgeyJDcmVhdGVGaWxlIiwgd2luYXBpX0NyZWF0ZUZpbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiQ3JlYXRlTmFtZWRQaXBlIiwgd2luYXBpX0NyZWF0ZU5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJDcmVhdGVQaXBlIiwgd2luYXBpX0NyZWF0ZVBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgQ3JlYXRlUGlwZV9kb2N9LAorICAgIHsiQ3JlYXRlUHJvY2VzcyIsIHdpbmFwaV9DcmVhdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIENyZWF0ZVByb2Nlc3NfZG9jfSwKKyAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsIHdpbmFwaV9EdXBsaWNhdGVIYW5kbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgRHVwbGljYXRlSGFuZGxlX2RvY30sCisgICAgeyJFeGl0UHJvY2VzcyIsIHdpbmFwaV9FeGl0UHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJHZXRDdXJyZW50UHJvY2VzcyIsIHdpbmFwaV9HZXRDdXJyZW50UHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBHZXRDdXJyZW50UHJvY2Vzc19kb2N9LAorICAgIHsiR2V0RXhpdENvZGVQcm9jZXNzIiwgd2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBHZXRFeGl0Q29kZVByb2Nlc3NfZG9jfSwKKyAgICB7IkdldExhc3RFcnJvciIsIHdpbmFwaV9HZXRMYXN0RXJyb3IsIE1FVEhfTk9BUkdTLAorICAgICBHZXRDdXJyZW50UHJvY2Vzc19kb2N9LAorICAgIHsiR2V0TW9kdWxlRmlsZU5hbWUiLCB3aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVfZG9jfSwKKyAgICB7IkdldFN0ZEhhbmRsZSIsIHdpbmFwaV9HZXRTdGRIYW5kbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0U3RkSGFuZGxlX2RvY30sCisgICAgeyJHZXRWZXJzaW9uIiwgd2luYXBpX0dldFZlcnNpb24sIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0VmVyc2lvbl9kb2N9LAorICAgIHsiT3BlblByb2Nlc3MiLCB3aW5hcGlfT3BlblByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiUGVla05hbWVkUGlwZSIsIHdpbmFwaV9QZWVrTmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IlJlYWRGaWxlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9SZWFkRmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgIiJ9LAorICAgIHsiU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUiLCB3aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiVGVybWluYXRlUHJvY2VzcyIsIHdpbmFwaV9UZXJtaW5hdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFRlcm1pbmF0ZVByb2Nlc3NfZG9jfSwKKyAgICB7IldhaXROYW1lZFBpcGUiLCB3aW5hcGlfV2FpdE5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwgd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiV2FpdEZvclNpbmdsZU9iamVjdCIsIHdpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0LCBNRVRIX1ZBUkFSR1MsCisgICAgIFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jfSwKKyAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfV3JpdGVGaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAiIn0sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHdpbmFwaV9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfd2luYXBpIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIHdpbmFwaV9mdW5jdGlvbnMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworI2RlZmluZSBXSU5BUElfQ09OU1RBTlQoZm10LCBjb24pIFwKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAjY29uLCBQeV9CdWlsZFZhbHVlKGZtdCwgY29uKSkKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fd2luYXBpKHZvaWQpCit7CisgICAgUHlPYmplY3QgKmQ7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZPdmVybGFwcGVkVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJndpbmFwaV9tb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworCisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk92ZXJsYXBwZWQiLCAoUHlPYmplY3QgKikgJk92ZXJsYXBwZWRUeXBlKTsKKworICAgIC8qIGNvbnN0YW50cyAqLworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBDUkVBVEVfTkVXX0NPTlNPTEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVApOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBEVVBMSUNBVEVfQ0xPU0VfU09VUkNFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfQUxSRUFEWV9FWElTVFMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9CUk9LRU5fUElQRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0lPX1BFTkRJTkcpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9NT1JFX0RBVEEpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9ORVROQU1FX0RFTEVURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTU9SRV9EQVRBKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTkVUTkFNRV9ERUxFVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fREFUQSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05PX1NZU1RFTV9SRVNPVVJDRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1BJUEVfQlVTWSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1BJUEVfQ09OTkVDVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfU0VNX1RJTUVPVVQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfRkxBR19PVkVSTEFQUEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9HRU5FUklDX1JFQUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0dFTkVSSUNfV1JJVEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBHRU5FUklDX1JFQUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBHRU5FUklDX1dSSVRFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgSU5GSU5JVEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBOTVBXQUlUX1dBSVRfRk9SRVZFUik7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIE9QRU5fRVhJU1RJTkcpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19EVVBMRVgpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19JTkJPVU5EKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9SRUFETU9ERV9NRVNTQUdFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9UWVBFX01FU1NBR0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1dBSVQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0FMTF9BQ0NFU1MpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0RVUF9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVEFSVEZfVVNFU0hPV1dJTkRPVyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNUQVJURl9VU0VTVERIQU5ETEVTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1REX0lOUFVUX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNURF9PVVRQVVRfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1REX0VSUk9SX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNUSUxMX0FDVElWRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNXX0hJREUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBXQUlUX09CSkVDVF8wKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgV0FJVF9USU1FT1VUKTsKKworICAgIFdJTkFQSV9DT05TVEFOVCgiaSIsIE5VTEwpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKaW5kZXggNDc1YWNiNC4uYWRjNGQ1ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwpAQCAtMjIsNyArMjIsNyBAQAogICogZnVuY3Rpb25zIGFyZW4ndCB2aXNpYmxlIHlldC4KICAqLwogc3RydWN0IGFycmF5ZGVzY3IgewotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgY2hhciB0eXBlY29kZTsKICAgICBpbnQgaXRlbXNpemU7CiAgICAgUHlPYmplY3QgKiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKICAgICBpbnQgKCpzZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CkBAIC0zNTYsNiArMzU2LDU5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworCitzdGF0aWMgUHlPYmplY3QgKgorcV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKCgoUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKK30KKworc3RhdGljIGludAorcV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKK3sKKyAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJngpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGkgPj0gMCkKKyAgICAgICAgKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUVFfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKAorICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7Cit9CisKK3N0YXRpYyBpbnQKK1FRX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQoreworICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CisgICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQWV9MT05HX0xPTkcgeTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCAiTDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlciIsICZ5KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHkgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgeCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpeTsKKyAgICB9CisKKyAgICBpZiAoaSA+PSAwKQorICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIGZfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKIHsKQEAgLTQwNiw2ICs0NTksMTAgQEAKICAgICB7J0knLCBzaXplb2YoaW50KSwgSUlfZ2V0aXRlbSwgSUlfc2V0aXRlbSwgIkkiLCAxLCAwfSwKICAgICB7J2wnLCBzaXplb2YobG9uZyksIGxfZ2V0aXRlbSwgbF9zZXRpdGVtLCAibCIsIDEsIDF9LAogICAgIHsnTCcsIHNpemVvZihsb25nKSwgTExfZ2V0aXRlbSwgTExfc2V0aXRlbSwgIkwiLCAxLCAwfSwKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIHsncScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKKyAgICB7J1EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKKyNlbmRpZgogICAgIHsnZicsIHNpemVvZihmbG9hdCksIGZfZ2V0aXRlbSwgZl9zZXRpdGVtLCAiZiIsIDAsIDB9LAogICAgIHsnZCcsIHNpemVvZihkb3VibGUpLCBkX2dldGl0ZW0sIGRfc2V0aXRlbSwgImQiLCAwLCAwfSwKICAgICB7J1wwJywgMCwgMCwgMCwgMCwgMCwgMH0gLyogU2VudGluZWwgKi8KQEAgLTQyNiwxMSArNDgzLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG5ieXRlcyA9IHNpemUgKiBkZXNjci0+aXRlbXNpemU7CiAgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgaWYgKG5ieXRlcyAvIGRlc2NyLT5pdGVtc2l6ZSAhPSAoc2l6ZV90KXNpemUpIHsKKyAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gZGVzY3ItPml0ZW1zaXplKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KKyAgICBuYnl0ZXMgPSBzaXplICogZGVzY3ItPml0ZW1zaXplOwogICAgIG9wID0gKGFycmF5b2JqZWN0ICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChvcCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTE0LDEwICs1NzEsOCBAQAogICAgIFB5X3NzaXplX3QgaSwgazsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFhcnJheV9DaGVjayh2KSB8fCAhYXJyYXlfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIWFycmF5X0NoZWNrKHYpIHx8ICFhcnJheV9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgdmEgPSAoYXJyYXlvYmplY3QgKil2OwogICAgIHdhID0gKGFycmF5b2JqZWN0ICopdzsKQEAgLTg3Niw3ICs5MzEsNiBAQAogICAgIGlmIChQeV9TSVpFKHNlbGYpID4gMCkgewogICAgICAgICBpZiAobiA8IDApCiAgICAgICAgICAgICBuID0gMDsKLSAgICAgICAgaXRlbXMgPSBzZWxmLT5vYl9pdGVtOwogICAgICAgICBpZiAoKHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSAhPSAwKSAmJgogICAgICAgICAgICAgKFB5X1NJWkUoc2VsZikgPiBQWV9TU0laRV9UX01BWCAvIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSkpIHsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTE5MSwxOCArMTI0NSwyMyBAQAogICAgIFB5T2JqZWN0ICpmLCAqYiwgKnJlczsKICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplID0gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplOwogICAgIFB5X3NzaXplX3QgbiwgbmJ5dGVzOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogICAgIGludCBub3RfZW5vdWdoX2J5dGVzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsICZmLCAmbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbmJ5dGVzID0gbiAqIGl0ZW1zaXplOwotICAgIGlmIChuYnl0ZXMgPCAwIHx8IG5ieXRlcy9pdGVtc2l6ZSAhPSBuKSB7CisgICAgaWYgKG4gPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChuID4gUFlfU1NJWkVfVF9NQVggLyBpdGVtc2l6ZSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbmJ5dGVzID0gbiAqIGl0ZW1zaXplOwogCi0gICAgYiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgInJlYWQiLCAibiIsIG5ieXRlcyk7CisgICAgYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfcmVhZCwgIm4iLCBuYnl0ZXMpOwogICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjU5LDEyICsxMzE4LDE0IEBACiAgICAgICAgIGNoYXIqIHB0ciA9IHNlbGYtPm9iX2l0ZW0gKyBpKkJMT0NLU0laRTsKICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gQkxPQ0tTSVpFOwogICAgICAgICBQeU9iamVjdCAqYnl0ZXMsICpyZXM7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgICAgICBpZiAoaSpCTE9DS1NJWkUgKyBzaXplID4gbmJ5dGVzKQogICAgICAgICAgICAgc2l6ZSA9IG5ieXRlcyAtIGkqQkxPQ0tTSVpFOwogICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocHRyLCBzaXplKTsKICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAid3JpdGUiLCAiTyIsIGJ5dGVzKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF93cml0ZSwgIk8iLCBieXRlcyk7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ1Niw3ICsxNTE3LDcgQEAKIHsKICAgICBQeV9VTklDT0RFICp1c3RyOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDkxLDcgKzE1NTIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X3RvdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAgICAgdHlwZWNvZGUgPSBzZWxmLT5vYl9kZXNjci0+dHlwZWNvZGU7CiAgICAgaWYgKHR5cGVjb2RlICE9ICd1JykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE2MDEsNyArMTY2Miw3IEBACiAgKiBiZSBmb3VuZC4KICAqLwogc3RhdGljIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZQotdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKGludCB0eXBlY29kZSkKK3R5cGVjb2RlX3RvX21mb3JtYXRfY29kZShjaGFyIHR5cGVjb2RlKQogewogI2lmZGVmIFdPUkRTX0JJR0VORElBTgogICAgIGNvbnN0IGludCBpc19iaWdfZW5kaWFuID0gMTsKQEAgLTE2NzEsNiArMTczMiwxNiBAQAogICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKKyNpZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOgorICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGlzX3NpZ25lZCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1EnOgorICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGlzX3NpZ25lZCA9IDA7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFVOS05PV05fRk9STUFUOwogICAgIH0KQEAgLTE3MDEsNyArMTc3Miw3IEBACiAgKiBOVUxMIGlzIHJldHVybmVkIHRvIGluZGljYXRlIGEgZmFpbHVyZS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW1ha2VfYXJyYXkoUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsIFB5X1VOSUNPREUgdHlwZWNvZGUsIFB5T2JqZWN0ICppdGVtcykKK21ha2VfYXJyYXkoUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsIGNoYXIgdHlwZWNvZGUsIFB5T2JqZWN0ICppdGVtcykKIHsKICAgICBQeU9iamVjdCAqbmV3X2FyZ3M7CiAgICAgUHlPYmplY3QgKmFycmF5X29iajsKQEAgLTE3MTAsNyArMTc4MSw3IEBACiAgICAgYXNzZXJ0KGFycmF5dHlwZSAhPSBOVUxMKTsKICAgICBhc3NlcnQoaXRlbXMgIT0gTlVMTCk7CiAKLSAgICB0eXBlY29kZV9vYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnR5cGVjb2RlLCAxKTsKKyAgICB0eXBlY29kZV9vYmogPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwodHlwZWNvZGUpOwogICAgIGlmICh0eXBlY29kZV9vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDAsMTcgKzE4MTEsMTQgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmNvbnZlcnRlZF9pdGVtczsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCB0eXBlY29kZV9pbnQ7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBpbnQgdHlwZWNvZGU7CiAgICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZTsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86YXJyYXkuX2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGVfaW50LCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHlwZWNvZGUgPSAoUHlfVU5JQ09ERSl0eXBlY29kZV9pbnQ7Ci0KICAgICBpZiAoIVB5VHlwZV9DaGVjayhhcnJheXR5cGUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAiZmlyc3QgYXJndW1lbnQgbXVzdCBhIHR5cGUgb2JqZWN0LCBub3QgJS4yMDBzIiwKQEAgLTE3NjQsNyArMTgzMiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBmb3IgKGRlc2NyID0gZGVzY3JpcHRvcnM7IGRlc2NyLT50eXBlY29kZSAhPSAnXDAnOyBkZXNjcisrKSB7Ci0gICAgICAgIGlmIChkZXNjci0+dHlwZWNvZGUgPT0gdHlwZWNvZGUpCisgICAgICAgIGlmICgoaW50KWRlc2NyLT50eXBlY29kZSA9PSB0eXBlY29kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoZGVzY3ItPnR5cGVjb2RlID09ICdcMCcpIHsKQEAgLTE3ODYsOSArMTg1NCw5IEBACiAgICAgfQogCiAgICAgLyogRmFzdCBwYXRoOiBObyBkZWNvZGluZyBoYXMgdG8gYmUgZG9uZS4gKi8KLSAgICBpZiAobWZvcm1hdF9jb2RlID09IHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSh0eXBlY29kZSkgfHwKKyAgICBpZiAobWZvcm1hdF9jb2RlID09IHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSgoY2hhcil0eXBlY29kZSkgfHwKICAgICAgICAgbWZvcm1hdF9jb2RlID09IFVOS05PV05fRk9STUFUKSB7Ci0gICAgICAgIHJldHVybiBtYWtlX2FycmF5KGFycmF5dHlwZSwgdHlwZWNvZGUsIGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfYXJyYXkoYXJyYXl0eXBlLCAoY2hhcil0eXBlY29kZSwgaXRlbXMpOwogICAgIH0KIAogICAgIC8qIFNsb3cgcGF0aDogRGVjb2RlIHRoZSBieXRlIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG1hY2hpbmUKQEAgLTE5MzQsNyArMjAwMiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IG1ha2VfYXJyYXkoYXJyYXl0eXBlLCB0eXBlY29kZSwgY29udmVydGVkX2l0ZW1zKTsKKyAgICByZXN1bHQgPSBtYWtlX2FycmF5KGFycmF5dHlwZSwgKGNoYXIpdHlwZWNvZGUsIGNvbnZlcnRlZF9pdGVtcyk7CiAgICAgUHlfREVDUkVGKGNvbnZlcnRlZF9pdGVtcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE5NDksMTQgKzIwMTcsMTYgQEAKICAgICBpbnQgbWZvcm1hdF9jb2RlOwogICAgIHN0YXRpYyBQeU9iamVjdCAqYXJyYXlfcmVjb25zdHJ1Y3RvciA9IE5VTEw7CiAgICAgbG9uZyBwcm90b2NvbDsKKyAgICBfUHlfSURFTlRJRklFUihfYXJyYXlfcmVjb25zdHJ1Y3Rvcik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAgaWYgKGFycmF5X3JlY29uc3RydWN0b3IgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYXJyYXlfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJhcnJheSIpOwogICAgICAgICBpZiAoYXJyYXlfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXJyYXlfcmVjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoCisgICAgICAgIGFycmF5X3JlY29uc3RydWN0b3IgPSBfUHlPYmplY3RfR2V0QXR0cklkKAogICAgICAgICAgICAgYXJyYXlfbW9kdWxlLAotICAgICAgICAgICAgIl9hcnJheV9yZWNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAmUHlJZF9fYXJyYXlfcmVjb25zdHJ1Y3Rvcik7CiAgICAgICAgIFB5X0RFQ1JFRihhcnJheV9tb2R1bGUpOwogICAgICAgICBpZiAoYXJyYXlfcmVjb25zdHJ1Y3RvciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTcxLDcgKzIwNDEsNyBAQAogICAgIGlmIChwcm90b2NvbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKWFycmF5LCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilhcnJheSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjAyMyw4ICsyMDkzLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9nZXRfdHlwZWNvZGUoYXJyYXlvYmplY3QgKmEsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgUHlfVU5JQ09ERSB0YyA9IGEtPm9iX2Rlc2NyLT50eXBlY29kZTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZ0YywgMSk7CisgICAgY2hhciB0eXBlY29kZSA9IGEtPm9iX2Rlc2NyLT50eXBlY29kZTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHR5cGVjb2RlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwNDQsNyArMjExNCw3IEBACiBzdGF0aWMgUHlNZXRob2REZWYgYXJyYXlfbWV0aG9kc1tdID0gewogICAgIHsiYXBwZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2FwcGVuZCwgICAgICBNRVRIX08sCiAgICAgIGFwcGVuZF9kb2N9LAotICAgIHsiYnVmZmVyX2luZm8iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYnVmZmVyX2luZm8sIE1FVEhfTk9BUkdTLAorICAgIHsiYnVmZmVyX2luZm8iLCAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywKICAgICAgYnVmZmVyX2luZm9fZG9jfSwKICAgICB7ImJ5dGVzd2FwIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9ieXRlc3dhcCwgICAgTUVUSF9OT0FSR1MsCiAgICAgIGJ5dGVzd2FwX2RvY30sCkBAIC0yMDUyLDkgKzIxMjIsOSBAQAogICAgICBjb3B5X2RvY30sCiAgICAgeyJjb3VudCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfY291bnQsICAgICAgIE1FVEhfTywKICAgICAgY291bnRfZG9jfSwKLSAgICB7Il9fZGVlcGNvcHlfXyIsKFB5Q0Z1bmN0aW9uKWFycmF5X2NvcHksICAgICAgICAgICAgTUVUSF9PLAorICAgIHsiX19kZWVwY29weV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2NvcHksICAgICAgICBNRVRIX08sCiAgICAgIGNvcHlfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2V4dGVuZCwgICAgICAgICAgTUVUSF9PLAorICAgIHsiZXh0ZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2V4dGVuZCwgICAgICBNRVRIX08sCiAgICAgIGV4dGVuZF9kb2N9LAogICAgIHsiZnJvbWZpbGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21maWxlLCAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIGZyb21maWxlX2RvY30sCkBAIC0yMDcyLDE0ICsyMTQyLDEyIEBACiAgICAgIGluc2VydF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3BvcCwgICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIHBvcF9kb2N9LAotICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilhcnJheV9yZWR1Y2VfZXgsICAgICBNRVRIX08sCisgICAgeyJfX3JlZHVjZV9leF9fIiwgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmVkdWNlX2V4LCAgIE1FVEhfTywKICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmVtb3ZlLCAgICAgIE1FVEhfTywKICAgICAgcmVtb3ZlX2RvY30sCiAgICAgeyJyZXZlcnNlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfcmV2ZXJzZSwgICAgIE1FVEhfTk9BUkdTLAogICAgICByZXZlcnNlX2RvY30sCi0vKiAgICAgIHsic29ydCIsICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfc29ydCwgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICBzb3J0X2RvY30sKi8KICAgICB7InRvZmlsZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2ZpbGUsICAgICAgTUVUSF9PLAogICAgICB0b2ZpbGVfZG9jfSwKICAgICB7InRvbGlzdCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2xpc3QsICAgICAgTUVUSF9OT0FSR1MsCkBAIC0yMDg4LDcgKzIxNTYsNyBAQAogICAgICB0b3N0cmluZ19kb2N9LAogICAgIHsidG9ieXRlcyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3RvYnl0ZXMsICAgICBNRVRIX05PQVJHUywKICAgICAgdG9ieXRlc19kb2N9LAotICAgIHsidG91bmljb2RlIiwgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG91bmljb2RlLCAgICAgICBNRVRIX05PQVJHUywKKyAgICB7InRvdW5pY29kZSIsICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b3VuaWNvZGUsICAgTUVUSF9OT0FSR1MsCiAgICAgIHRvdW5pY29kZV9kb2N9LAogICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3NpemVvZiwgICAgICBNRVRIX05PQVJHUywKICAgICAgc2l6ZW9mX2RvY30sCkBAIC0yMDk4LDcgKzIxNjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X3JlcHIoYXJyYXlvYmplY3QgKmEpCiB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIFB5T2JqZWN0ICpzLCAqdiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKQEAgLTIzMDMsNyArMjM3MSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSArIChjdXIgKyAxKSAqIGl0ZW1zaXplLAogICAgICAgICAgICAgICAgIGxpbSAqIGl0ZW1zaXplKTsKICAgICAgICAgfQotICAgICAgICBjdXIgPSBzdGFydCArIHNsaWNlbGVuZ3RoICogc3RlcDsKKyAgICAgICAgY3VyID0gc3RhcnQgKyAoc2l6ZV90KXNsaWNlbGVuZ3RoICogc3RlcDsKICAgICAgICAgaWYgKGN1ciA8IChzaXplX3QpUHlfU0laRShzZWxmKSkgewogICAgICAgICAgICAgbWVtbW92ZShzZWxmLT5vYl9pdGVtICsgKGN1ci1zbGljZWxlbmd0aCkgKiBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgY3VyICogaXRlbXNpemUsCkBAIC0yNDg3LDcgKzI1NTUsMTcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChpbml0aWFsICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGluaXRpYWwpKSAgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKGluaXRpYWwpOworICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnVzdHI7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuOworCisgICAgICAgICAgICAgICAgdXN0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoaW5pdGlhbCk7CisgICAgICAgICAgICAgICAgaWYgKHVzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG4gPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShpbml0aWFsKTsKICAgICAgICAgICAgICAgICBpZiAobiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgYXJyYXlvYmplY3QgKnNlbGYgPSAoYXJyYXlvYmplY3QgKilhOwogICAgICAgICAgICAgICAgICAgICBjaGFyICppdGVtID0gc2VsZi0+b2JfaXRlbTsKQEAgLTI0OTksNyArMjU3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSA9IGl0ZW07CiAgICAgICAgICAgICAgICAgICAgIFB5X1NJWkUoc2VsZikgPSBuIC8gc2l6ZW9mKFB5X1VOSUNPREUpOwotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoaXRlbSwgUHlVbmljb2RlX0FTX0RBVEEoaW5pdGlhbCksIG4pOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoaXRlbSwgdXN0ciwgbik7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFsbG9jYXRlZCA9IFB5X1NJWkUoc2VsZik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjUyMCw3ICsyNTk4LDExIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBxLCBRLCBmIG9yIGQpIik7CisjZWxzZQogICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIGYgb3IgZCkiKTsKKyNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yNTQzLDEyICsyNjI1LDE4IEBACiAgICAgJ0knICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDIgXG5cCiAgICAgJ2wnICAgICAgICAgc2lnbmVkIGludGVnZXIgICAgIDQgXG5cCiAgICAgJ0wnICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDQgXG5cCisgICAgJ3EnICAgICAgICAgc2lnbmVkIGludGVnZXIgICAgIDggKHNlZSBub3RlKSBcblwKKyAgICAnUScgICAgICAgICB1bnNpZ25lZCBpbnRlZ2VyICAgOCAoc2VlIG5vdGUpIFxuXAogICAgICdmJyAgICAgICAgIGZsb2F0aW5nIHBvaW50ICAgICA0IFxuXAogICAgICdkJyAgICAgICAgIGZsb2F0aW5nIHBvaW50ICAgICA4IFxuXAogXG5cCiBOT1RFOiBUaGUgJ3UnIHR5cGVjb2RlIGNvcnJlc3BvbmRzIHRvIFB5dGhvbidzIHVuaWNvZGUgY2hhcmFjdGVyLiBPbiBcblwKIG5hcnJvdyBidWlsZHMgdGhpcyBpcyAyLWJ5dGVzIG9uIHdpZGUgYnVpbGRzIHRoaXMgaXMgNC1ieXRlcy5cblwKIFxuXAorTk9URTogVGhlICdxJyBhbmQgJ1EnIHR5cGUgY29kZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBwbGF0Zm9ybSBcblwKK0MgY29tcGlsZXIgdXNlZCB0byBidWlsZCBQeXRob24gc3VwcG9ydHMgJ2xvbmcgbG9uZycsIG9yLCBvbiBXaW5kb3dzLCBcblwKKydfX2ludDY0Jy5cblwKK1xuXAogVGhlIGNvbnN0cnVjdG9yIGlzOlxuXAogXG5cCiBhcnJheSh0eXBlY29kZSBbLCBpbml0aWFsaXplcl0pIC0tIGNyZWF0ZSBhIG5ldyBhcnJheVxuXApAQCAtMjY5Myw2ICsyNzgxLDM0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheWl0ZXJfcmVkdWNlKGFycmF5aXRlcm9iamVjdCAqaXQpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+YW8sIGl0LT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheWl0ZXJfc2V0c3RhdGUoYXJyYXlpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworc3RhdGljIFB5TWV0aG9kRGVmIGFycmF5aXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLworfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeUFycmF5SXRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJhcnJheWl0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yNzIyLDcgKzI4MzgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpYXJyYXlpdGVyX25leHQsICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBhcnJheWl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogfTsKIAogCkBAIC0yNzUyLDkgKzI4NjgsOSBAQAogUHlJbml0X2FycmF5KHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07CisgICAgY2hhciBidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGRlc2NyaXB0b3JzKV0sICpwOwogICAgIFB5T2JqZWN0ICp0eXBlY29kZXM7CiAgICAgUHlfc3NpemVfdCBzaXplID0gMDsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICpwOwogICAgIHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkFycmF5dHlwZSkgPCAwKQpAQCAtMjc3MywxMyArMjg4OSwxMyBAQAogICAgICAgICBzaXplKys7CiAgICAgfQogCi0gICAgdHlwZWNvZGVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0eXBlY29kZXMpOworICAgIHAgPSBidWZmZXI7CiAgICAgZm9yIChkZXNjciA9IGRlc2NyaXB0b3JzOyBkZXNjci0+dHlwZWNvZGUgIT0gJ1wwJzsgZGVzY3IrKykgewogICAgICAgICAqcCsrID0gKGNoYXIpZGVzY3ItPnR5cGVjb2RlOwogICAgIH0KKyAgICB0eXBlY29kZXMgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoYnVmZmVyLCBwIC0gYnVmZmVyLCBOVUxMKTsKIAotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHlwZWNvZGVzIiwgKFB5T2JqZWN0ICopdHlwZWNvZGVzKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR5cGVjb2RlcyIsIHR5cGVjb2Rlcyk7CiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jIGIvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYwppbmRleCAxZWU3ZWFkLi5mNjhkODA0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKQEAgLTIxMSw2ICsyMTEsMTQgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorc3RhdGljIHZvaWQKK2F0ZXhpdF9mcmVlKFB5T2JqZWN0ICptKQoreworICAgIGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGU7CisgICAgbW9kc3RhdGUgPSBHRVRfQVRFWElUX1NUQVRFKG0pOworICAgIFB5TWVtX0ZyZWUobW9kc3RhdGUtPmF0ZXhpdF9jYWxsYmFja3MpOworfQorCiBQeURvY19TVFJWQVIoYXRleGl0X3VucmVnaXN0ZXJfX2RvY19fLAogInVucmVnaXN0ZXIoZnVuYykgLT4gTm9uZVxuXAogXG5cCkBAIC0yNzUsNyArMjgzLDcgQEAKIAlOVUxMLAogCU5VTEwsCiAJTlVMTCwKLQlOVUxMCisJKGZyZWVmdW5jKWF0ZXhpdF9mcmVlCiB9OwogCiBQeU1PRElOSVRfRlVOQwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdWRpb29wLmMgYi9Nb2R1bGVzL2F1ZGlvb3AuYwppbmRleCA5YWI0ODM0Li4yYmNhMzkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F1ZGlvb3AuYworKysgYi9Nb2R1bGVzL2F1ZGlvb3AuYwpAQCAtNTEzLDcgKzUxMyw2IEBACiAKICAgICBiZXN0X3Jlc3VsdCA9IHJlc3VsdDsKICAgICBiZXN0X2ogPSAwOwotICAgIGogPSAwOwogCiAgICAgZm9yICggaj0xOyBqPD1sZW4xLWxlbjI7IGorKykgewogICAgICAgICBhal9tMSA9IChkb3VibGUpY3AxW2otMV07CkBAIC01OTksNyArNTk4LDYgQEAKIAogICAgIGJlc3RfcmVzdWx0ID0gcmVzdWx0OwogICAgIGJlc3RfaiA9IDA7Ci0gICAgaiA9IDA7CiAKICAgICBmb3IgKCBqPTE7IGo8PWxlbjEtbGVuMjsgaisrKSB7CiAgICAgICAgIGFqX20xID0gKGRvdWJsZSljcDFbai0xXTsKQEAgLTExMTAsOCArMTEwOCw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICIjIG9mIGNoYW5uZWxzIHNob3VsZCBiZSA+PSAxIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBieXRlc19wZXJfZnJhbWUgPSBzaXplICogbmNoYW5uZWxzOwotICAgIGlmIChieXRlc19wZXJfZnJhbWUgLyBuY2hhbm5lbHMgIT0gc2l6ZSkgeworICAgIGlmIChzaXplID4gSU5UX01BWCAvIG5jaGFubmVscykgewogICAgICAgICAvKiBUaGlzIG92ZXJmbG93IHRlc3QgaXMgcmlnb3JvdXNseSBjb3JyZWN0IGJlY2F1c2UKICAgICAgICAgICAgYm90aCBtdWx0aXBsaWNhbmRzIGFyZSA+PSAxLiAgVXNlIHRoZSBhcmd1bWVudCBuYW1lcwogICAgICAgICAgICBmcm9tIHRoZSBkb2NzIGZvciB0aGUgZXJyb3IgbXNnLiAqLwpAQCAtMTExOSw2ICsxMTE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCAqIG5jaGFubmVscyB0b28gYmlnIGZvciBhIEMgaW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBieXRlc19wZXJfZnJhbWUgPSBzaXplICogbmNoYW5uZWxzOwogICAgIGlmICh3ZWlnaHRBIDwgMSB8fCB3ZWlnaHRCIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLAogICAgICAgICAgICAgIndlaWdodEEgc2hvdWxkIGJlID49IDEsIHdlaWdodEIgc2hvdWxkIGJlID49IDAiKTsKQEAgLTE0MzMsNyArMTQzMSw2IEBACiAgICAgaWYgKCBzdGF0ZSA9PSBQeV9Ob25lICkgewogICAgICAgICAvKiBGaXJzdCB0aW1lLCBpdCBzZWVtcy4gU2V0IGRlZmF1bHRzICovCiAgICAgICAgIHZhbHByZWQgPSAwOwotICAgICAgICBzdGVwID0gNzsKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0gZWxzZSBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiaWkiLCAmdmFscHJlZCwgJmluZGV4KSApCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTUzNCw3ICsxNTMxLDYgQEAKICAgICBpZiAoIHN0YXRlID09IFB5X05vbmUgKSB7CiAgICAgICAgIC8qIEZpcnN0IHRpbWUsIGl0IHNlZW1zLiBTZXQgZGVmYXVsdHMgKi8KICAgICAgICAgdmFscHJlZCA9IDA7Ci0gICAgICAgIHN0ZXAgPSA3OwogICAgICAgICBpbmRleCA9IDA7CiAgICAgfSBlbHNlIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJpaSIsICZ2YWxwcmVkLCAmaW5kZXgpICkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2JpbmFzY2lpLmMgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKaW5kZXggMTk2ODFiNC4uYWQ1ZTFiMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9iaW5hc2NpaS5jCisrKyBiL01vZHVsZXMvYmluYXNjaWkuYwpAQCAtMTgzLDYgKzE4Myw0NCBAQAogICAgIDB4NmUxNywgMHg3ZTM2LCAweDRlNTUsIDB4NWU3NCwgMHgyZTkzLCAweDNlYjIsIDB4MGVkMSwgMHgxZWYwLAogfTsKIAorc3RhdGljIGludAorYXNjaWlfYnVmZmVyX2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCBQeV9idWZmZXIgKmJ1ZikKK3sKKyAgICBpZiAoYXJnID09IE5VTEwpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoYXJnKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBhcmd1bWVudCBzaG91bGQgY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChhcmcpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgYnVmLT5idWYgPSAodm9pZCAqKSBQeVVuaWNvZGVfMUJZVEVfREFUQShhcmcpOworICAgICAgICBidWYtPmxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFyZyk7CisgICAgICAgIGJ1Zi0+b2JqID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCBidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBieXRlcywgYnVmZmVyIG9yIEFTQ0lJIHN0cmluZywgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlUiIsIFB5X1RZUEUoYXJnKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIVB5QnVmZmVyX0lzQ29udGlndW91cyhidWYsICdDJykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYSBjb250aWd1b3VzIGJ1ZmZlciwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlUiIsIFB5X1RZUEUoYXJnKSk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKK30KKworCiBQeURvY19TVFJWQVIoZG9jX2EyYl91dSwgIihhc2NpaSkgLT4gYmluLiBEZWNvZGUgYSBsaW5lIG9mIHV1ZW5jb2RlZCBkYXRhIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTYsNyArMjM0LDcgQEAKICAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBhc2NpaV9sZW4sIGJpbl9sZW47CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfdXUiLCAmcGFzY2lpKSApCisgICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBhc2NpaSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc2NpaV9kYXRhID0gcGFzY2lpLmJ1ZjsKICAgICBhc2NpaV9sZW4gPSBwYXNjaWkubGVuOwpAQCAtMzcwLDcgKzQwOCw3IEBACiAgICAgUHlfc3NpemVfdCBhc2NpaV9sZW4sIGJpbl9sZW47CiAgICAgaW50IHF1YWRfcG9zID0gMDsKIAotICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl9iYXNlNjQiLCAmcGFzY2lpKSApCisgICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgYXNjaWlfbGVuID0gcGFzY2lpLmxlbjsKQEAgLTU0Niw3ICs1ODQsNyBAQAogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGludCBkb25lID0gMDsKIAotICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl9ocXgiLCAmcGFzY2lpKSApCisgICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgbGVuID0gcGFzY2lpLmxlbjsKQEAgLTEwNzgsMTMgKzExMTYsMTEgQEAKIAogICAgIC8qIG1ha2UgaGV4IHZlcnNpb24gb2Ygc3RyaW5nLCB0YWtlbiBmcm9tIHNoYW1vZHVsZS5jICovCiAgICAgZm9yIChpPWo9MDsgaSA8IGFyZ2xlbjsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGFyZ2J1ZltpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICByZXRidWZbaisrXSA9IGM7CisgICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gYXJnYnVmW2ldICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIHJldGJ1ZltqKytdID0gYzsKKyAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhcmcpOwogICAgIHJldHVybiByZXR2YWw7CkBAIC0xMTIxLDcgKzExNTcsNyBAQAogICAgIGNoYXIqIHJldGJ1ZjsKICAgICBQeV9zc2l6ZV90IGksIGo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl9oZXgiLCAmcGFyZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBhcmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhcmdidWYgPSBwYXJnLmJ1ZjsKICAgICBhcmdsZW4gPSBwYXJnLmxlbjsKQEAgLTExOTksOCArMTIzNSw4IEBACiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aSIsIGt3bGlzdCwgJnBkYXRhLAotICAgICAgICAgICZoZWFkZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwZGF0YSwgJmhlYWRlcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGRhdGEgPSBwZGF0YS5idWY7CiAgICAgZGF0YWxlbiA9IHBkYXRhLmxlbjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYnoybW9kdWxlLmMgYi9Nb2R1bGVzL2J6Mm1vZHVsZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTk5ZGY5Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvYnoybW9kdWxlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkzICswLDAgQEAKLS8qCi0KLXB5dGhvbi1iejIgLSBweXRob24gYnoyIGxpYnJhcnkgaW50ZXJmYWNlCi0KLUNvcHlyaWdodCAoYykgMjAwMiAgR3VzdGF2byBOaWVtZXllciA8bmllbWV5ZXJAY29uZWN0aXZhLmNvbT4KLUNvcHlyaWdodCAoYykgMjAwMiAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMgUmVzZXJ2ZWQKLQotKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8YnpsaWIuaD4KLSNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKLQotI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKLSNlbmRpZgotCi1zdGF0aWMgY2hhciBfX2F1dGhvcl9fW10gPQotIlRoZSBiejIgcHl0aG9uIG1vZHVsZSB3YXMgd3JpdHRlbiBieTpcblwKLVxuXAotICAgIEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+XG5cCi0iOwotCi0vKiBPdXIgdmVyeSBvd24gb2ZmX3QtbGlrZSB0eXBlLCA2NC1iaXQgaWYgcG9zc2libGUgKi8KLS8qIGNvcGllZCBmcm9tIE9iamVjdHMvZmlsZW9iamVjdC5jICovCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLXR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7Ci0jZWxpZiBTSVpFT0ZfT0ZGX1QgPj0gOAotdHlwZWRlZiBvZmZfdCBQeV9vZmZfdDsKLSNlbGlmIFNJWkVPRl9GUE9TX1QgPj0gOAotdHlwZWRlZiBmcG9zX3QgUHlfb2ZmX3Q7Ci0jZWxzZQotI2Vycm9yICJMYXJnZSBmaWxlIHN1cHBvcnQsIGJ1dCBuZWl0aGVyIG9mZl90IG5vciBmcG9zX3QgaXMgbGFyZ2UgZW5vdWdoLiIKLSNlbmRpZgotCi0jZGVmaW5lIEJVRih2KSBQeUJ5dGVzX0FTX1NUUklORyh2KQotCi0jZGVmaW5lIE1PREVfQ0xPU0VEICAgMAotI2RlZmluZSBNT0RFX1JFQUQgICAgIDEKLSNkZWZpbmUgTU9ERV9SRUFEX0VPRiAyCi0jZGVmaW5lIE1PREVfV1JJVEUgICAgMwotCi0KLSNpZm5kZWYgQlpfQ09ORklHX0VSUk9SCi0KLSNkZWZpbmUgQloyX2J6UmVhZCBielJlYWQKLSNkZWZpbmUgQloyX2J6UmVhZE9wZW4gYnpSZWFkT3BlbgotI2RlZmluZSBCWjJfYnpSZWFkQ2xvc2UgYnpSZWFkQ2xvc2UKLSNkZWZpbmUgQloyX2J6V3JpdGUgYnpXcml0ZQotI2RlZmluZSBCWjJfYnpXcml0ZU9wZW4gYnpXcml0ZU9wZW4KLSNkZWZpbmUgQloyX2J6V3JpdGVDbG9zZSBieldyaXRlQ2xvc2UKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3MgYnpDb21wcmVzcwotI2RlZmluZSBCWjJfYnpDb21wcmVzc0luaXQgYnpDb21wcmVzc0luaXQKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3NFbmQgYnpDb21wcmVzc0VuZAotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzIGJ6RGVjb21wcmVzcwotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzSW5pdCBiekRlY29tcHJlc3NJbml0Ci0jZGVmaW5lIEJaMl9iekRlY29tcHJlc3NFbmQgYnpEZWNvbXByZXNzRW5kCi0KLSNlbmRpZiAvKiAhIEJaX0NPTkZJR19FUlJPUiAqLwotCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKLSAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jayhvYmotPmxvY2ssIDApKSB7IFwKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCi0gICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhvYmotPmxvY2ssIDEpOyBcCi0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTIFwKLSAgICB9IH0gd2hpbGUoMCkKLSNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKG9iai0+bG9jaykKLSNlbHNlCi0jZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopCi0jZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopCi0jZW5kaWYKLQotI2RlZmluZSBNSU4oWCwgWSkgKCgoWCkgPCAoWSkpID8gKFgpIDogKFkpKQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFN0cnVjdHVyZSBkZWZpbml0aW9ucy4gKi8KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBGSUxFICpyYXdmcDsKLQotICAgIGNoYXIqIGZfYnVmOyAgICAgICAgICAgICAgICAvKiBBbGxvY2F0ZWQgcmVhZGFoZWFkIGJ1ZmZlciAqLwotICAgIGNoYXIqIGZfYnVmZW5kOyAgICAgICAgICAgICAvKiBQb2ludHMgYWZ0ZXIgbGFzdCBvY2N1cGllZCBwb3NpdGlvbiAqLwotICAgIGNoYXIqIGZfYnVmcHRyOyAgICAgICAgICAgICAvKiBDdXJyZW50IGJ1ZmZlciBwb3NpdGlvbiAqLwotCi0gICAgQlpGSUxFICpmcDsKLSAgICBpbnQgbW9kZTsKLSAgICBQeV9vZmZfdCBwb3M7Ci0gICAgUHlfb2ZmX3Qgc2l6ZTsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwotI2VuZGlmCi19IEJaMkZpbGVPYmplY3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgYnpfc3RyZWFtIGJ6czsKLSAgICBpbnQgcnVubmluZzsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwotI2VuZGlmCi19IEJaMkNvbXBPYmplY3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgYnpfc3RyZWFtIGJ6czsKLSAgICBpbnQgcnVubmluZzsKLSAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKLSNlbmRpZgotfSBCWjJEZWNvbXBPYmplY3Q7Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogVXRpbGl0eSBmdW5jdGlvbnMuICovCi0KLS8qIFJlZnVzZSByZWd1bGFyIEkvTyBpZiB0aGVyZSdzIGRhdGEgaW4gdGhlIGl0ZXJhdGlvbi1idWZmZXIuCi0gKiBNaXhpbmcgdGhlbSB3b3VsZCBjYXVzZSBkYXRhIHRvIGFycml2ZSBvdXQgb2Ygb3JkZXIsIGFzIHRoZSByZWFkKgotICogbWV0aG9kcyBkb24ndCB1c2UgdGhlIGl0ZXJhdGlvbiBidWZmZXIuICovCi1zdGF0aWMgaW50Ci1jaGVja19pdGVyYnVmZmVyZWQoQloyRmlsZU9iamVjdCAqZikKLXsKLSAgICBpZiAoZi0+Zl9idWYgIT0gTlVMTCAmJgotICAgICAgICAoZi0+Zl9idWZlbmQgLSBmLT5mX2J1ZnB0cikgPiAwICYmCi0gICAgICAgIGYtPmZfYnVmWzBdICE9ICdcMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAiTWl4aW5nIGl0ZXJhdGlvbiBhbmQgcmVhZCBtZXRob2RzIHdvdWxkIGxvc2UgZGF0YSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1VdGlsX0NhdGNoQloyRXJyb3IoaW50IGJ6ZXJyb3IpCi17Ci0gICAgaW50IHJldCA9IDA7Ci0gICAgc3dpdGNoKGJ6ZXJyb3IpIHsKLSAgICAgICAgY2FzZSBCWl9PSzoKLSAgICAgICAgY2FzZSBCWl9TVFJFQU1fRU5EOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSNpZmRlZiBCWl9DT05GSUdfRVJST1IKLSAgICAgICAgY2FzZSBCWl9DT05GSUdfRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBiejIgbGlicmFyeSB3YXMgbm90IGNvbXBpbGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ycmVjdGx5Iik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIEJaX1BBUkFNX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBiejIgbGlicmFyeSBoYXMgcmVjZWl2ZWQgd3JvbmcgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9NRU1fRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUjoKLSAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SX01BR0lDOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJpbnZhbGlkIGRhdGEgc3RyZWFtIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9JT19FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAidW5rbm93biBJTyBlcnJvciIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfVU5FWFBFQ1RFRF9FT0Y6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9naWNhbCBlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZCIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfU0VRVUVOQ0VfRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBzZXF1ZW5jZSBvZiBiejIgbGlicmFyeSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmRzIHVzZWQiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotI2lmIEJVRlNJWiA8IDgxOTIKLSNkZWZpbmUgU01BTExDSFVOSyA4MTkyCi0jZWxzZQotI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgotI2VuZGlmCi0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6bmV3X2J1ZmZlcnNpemUoKS4gKi8KLXN0YXRpYyBzaXplX3QKLVV0aWxfTmV3QnVmZmVyU2l6ZShzaXplX3QgY3VycmVudHNpemUpCi17Ci0gICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAotICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKLSAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLwotICAgIHJldHVybiBjdXJyZW50c2l6ZSArIChjdXJyZW50c2l6ZSA+PiAzKSArIDY7Ci19Ci0KLXN0YXRpYyBpbnQKLVV0aWxfR3Jvd0J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKLXsKLSAgICBzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1Zik7Ci0gICAgc2l6ZV90IG5ld19zaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKHNpemUpOwotICAgIGlmIChuZXdfc2l6ZSA+IHNpemUpIHsKLSAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld19zaXplKTsKLSAgICB9IGVsc2UgeyAgLyogb3ZlcmZsb3cgKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFsbG9jYXRlIGJ1ZmZlciAtIG91dHB1dCB0b28gbGFyZ2UiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpnZXRfbGluZSgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLVV0aWxfR2V0TGluZShCWjJGaWxlT2JqZWN0ICpmLCBpbnQgbikKLXsKLSAgICBjaGFyIGM7Ci0gICAgY2hhciAqYnVmLCAqZW5kOwotICAgIHNpemVfdCB0b3RhbF92X3NpemU7ICAgICAgICAvKiB0b3RhbCAjIG9mIHNsb3RzIGluIGJ1ZmZlciAqLwotICAgIHNpemVfdCB1c2VkX3Zfc2l6ZTsgICAgICAgICAvKiAjIHVzZWQgc2xvdHMgaW4gYnVmZmVyICovCi0gICAgc2l6ZV90IGluY3JlbWVudDsgICAgICAgLyogYW1vdW50IHRvIGluY3JlbWVudCB0aGUgYnVmZmVyICovCi0gICAgUHlPYmplY3QgKnY7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgaW50IGJ5dGVzX3JlYWQ7Ci0KLSAgICB0b3RhbF92X3NpemUgPSBuID4gMCA/IG4gOiAxMDA7Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCB0b3RhbF92X3NpemUpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYnVmID0gQlVGKHYpOwotICAgIGVuZCA9IGJ1ZiArIHRvdGFsX3Zfc2l6ZTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBieXRlc19yZWFkID0gQloyX2J6UmVhZCgmYnplcnJvciwgZi0+ZnAsICZjLCAxKTsKLSAgICAgICAgICAgIGYtPnBvcysrOwotICAgICAgICAgICAgaWYgKGJ5dGVzX3JlYWQgPT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICpidWYrKyA9IGM7Ci0gICAgICAgIH0gd2hpbGUgKGJ6ZXJyb3IgPT0gQlpfT0sgJiYgYyAhPSAnXG4nICYmIGJ1ZiAhPSBlbmQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBmLT5zaXplID0gZi0+cG9zOwotICAgICAgICAgICAgZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYyA9PSAnXG4nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qIE11c3QgYmUgYmVjYXVzZSBidWYgPT0gZW5kICovCi0gICAgICAgIGlmIChuID4gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB1c2VkX3Zfc2l6ZSA9IHRvdGFsX3Zfc2l6ZTsKLSAgICAgICAgaW5jcmVtZW50ID0gdG90YWxfdl9zaXplID4+IDI7IC8qIG1pbGQgZXhwb25lbnRpYWwgZ3Jvd3RoICovCi0gICAgICAgIHRvdGFsX3Zfc2l6ZSArPSBpbmNyZW1lbnQ7Ci0gICAgICAgIGlmICh0b3RhbF92X3NpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAibGluZSBpcyBsb25nZXIgdGhhbiBhIFB5dGhvbiBzdHJpbmcgY2FuIGhvbGQiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIHRvdGFsX3Zfc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBidWYgPSBCVUYodikgKyB1c2VkX3Zfc2l6ZTsKLSAgICAgICAgZW5kID0gQlVGKHYpICsgdG90YWxfdl9zaXplOwotICAgIH0KLQotICAgIHVzZWRfdl9zaXplID0gYnVmIC0gQlVGKHYpOwotICAgIGlmICh1c2VkX3Zfc2l6ZSAhPSB0b3RhbF92X3NpemUpIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgdXNlZF92X3NpemUpIDwgMCkgewotICAgICAgICAgICAgdiA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHY7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZHJvcF9yZWFkYWhlYWQoKS4gKi8KLXN0YXRpYyB2b2lkCi1VdGlsX0Ryb3BSZWFkQWhlYWQoQloyRmlsZU9iamVjdCAqZikKLXsKLSAgICBpZiAoZi0+Zl9idWYgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKGYtPmZfYnVmKTsKLSAgICAgICAgZi0+Zl9idWYgPSBOVUxMOwotICAgIH0KLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpyZWFkYWhlYWQoKS4gKi8KLXN0YXRpYyBpbnQKLVV0aWxfUmVhZEFoZWFkKEJaMkZpbGVPYmplY3QgKmYsIGludCBidWZzaXplKQotewotICAgIGludCBjaHVua3NpemU7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoZi0+Zl9idWYgIT0gTlVMTCkgewotICAgICAgICBpZigoZi0+Zl9idWZlbmQgLSBmLT5mX2J1ZnB0cikgPj0gMSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoZik7Ci0gICAgfQotICAgIGlmIChmLT5tb2RlID09IE1PREVfUkVBRF9FT0YpIHsKLSAgICAgICAgZi0+Zl9idWZwdHIgPSBmLT5mX2J1ZjsKLSAgICAgICAgZi0+Zl9idWZlbmQgPSBmLT5mX2J1ZjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICgoZi0+Zl9idWYgPSBQeU1lbV9NYWxsb2MoYnVmc2l6ZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgZi0+ZnAsIGYtPmZfYnVmLCBidWZzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICBmLT5zaXplID0gZi0+cG9zOwotICAgICAgICBmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoZik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZi0+Zl9idWZwdHIgPSBmLT5mX2J1ZjsKLSAgICBmLT5mX2J1ZmVuZCA9IGYtPmZfYnVmICsgY2h1bmtzaXplOwotICAgIHJldHVybiAwOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MKLSAqIGZpbGVvYmplY3QuYzpyZWFkYWhlYWRfZ2V0X2xpbmVfc2tpcCgpLiAqLwotc3RhdGljIFB5Qnl0ZXNPYmplY3QgKgotVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChCWjJGaWxlT2JqZWN0ICpmLCBpbnQgc2tpcCwgaW50IGJ1ZnNpemUpCi17Ci0gICAgUHlCeXRlc09iamVjdCogczsKLSAgICBjaGFyICpidWZwdHI7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0KLSAgICBpZiAoZi0+Zl9idWYgPT0gTlVMTCkKLSAgICAgICAgaWYgKFV0aWxfUmVhZEFoZWFkKGYsIGJ1ZnNpemUpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbGVuID0gZi0+Zl9idWZlbmQgLSBmLT5mX2J1ZnB0cjsKLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybiAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBza2lwKTsKLSAgICBidWZwdHIgPSBtZW1jaHIoZi0+Zl9idWZwdHIsICdcbicsIGxlbik7Ci0gICAgaWYgKGJ1ZnB0ciAhPSBOVUxMKSB7Ci0gICAgICAgIGJ1ZnB0cisrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb3VudCB0aGUgJ1xuJyAqLwotICAgICAgICBsZW4gPSBidWZwdHIgLSBmLT5mX2J1ZnB0cjsKLSAgICAgICAgcyA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNraXArbGVuKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocykrc2tpcCwgZi0+Zl9idWZwdHIsIGxlbik7Ci0gICAgICAgIGYtPmZfYnVmcHRyID0gYnVmcHRyOwotICAgICAgICBpZiAoYnVmcHRyID09IGYtPmZfYnVmZW5kKQotICAgICAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZnB0ciA9IGYtPmZfYnVmcHRyOwotICAgICAgICBidWYgPSBmLT5mX2J1ZjsKLSAgICAgICAgZi0+Zl9idWYgPSBOVUxMOyAgICAgICAgICAgICAgICAvKiBGb3JjZSBuZXcgcmVhZGFoZWFkIGJ1ZmZlciAqLwotICAgICAgICBzID0gVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChmLCBza2lwK2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSArIChidWZzaXplPj4yKSk7Ci0gICAgICAgIGlmIChzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhzKStza2lwLCBidWZwdHIsIGxlbik7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJGaWxlLiAqLwotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkX19kb2NfXywKLSJyZWFkKFtzaXplXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJlYWQgYXQgbW9zdCBzaXplIHVuY29tcHJlc3NlZCBieXRlcywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuIElmIHRoZSBzaXplXG5cCi1hcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9yZWFkKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9yZWFkKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGxvbmcgYnl0ZXNyZXF1ZXN0ZWQgPSAtMTsKLSAgICBzaXplX3QgYnl0ZXNyZWFkLCBidWZmZXJzaXplLCBjaHVua3NpemU7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxsOnJlYWQiLCAmYnl0ZXNyZXF1ZXN0ZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgLyogcmVmdXNlIHRvIG1peCB3aXRoIGYubmV4dCgpICovCi0gICAgaWYgKGNoZWNrX2l0ZXJidWZmZXJlZChzZWxmKSkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgaWYgKGJ5dGVzcmVxdWVzdGVkIDwgMCkKLSAgICAgICAgYnVmZmVyc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZSgoc2l6ZV90KTApOwotICAgIGVsc2UKLSAgICAgICAgYnVmZmVyc2l6ZSA9IGJ5dGVzcmVxdWVzdGVkOwotICAgIGlmIChidWZmZXJzaXplID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0ZWQgbnVtYmVyIG9mIGJ5dGVzIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGJ1ZmZlcnNpemUpOwotICAgIGlmIChyZXQgPT0gTlVMTCB8fCBidWZmZXJzaXplID09IDApCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICBieXRlc3JlYWQgPSAwOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRihyZXQpK2J5dGVzcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzaXplLWJ5dGVzcmVhZCk7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnl0ZXNyZXF1ZXN0ZWQgPCAwKSB7Ci0gICAgICAgICAgICBidWZmZXJzaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBidWZmZXJzaXplKSA8IDApIHsKLSAgICAgICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChieXRlc3JlYWQgIT0gYnVmZmVyc2l6ZSkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIGJ5dGVzcmVhZCkgPCAwKSB7Ci0gICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi1jbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkbGluZV9fZG9jX18sCi0icmVhZGxpbmUoW3NpemVdKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBuZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBzdHJpbmcsIHJldGFpbmluZyBuZXdsaW5lLlxuXAotQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCB3aWxsIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0b1xuXAotcmV0dXJuIChhbiBpbmNvbXBsZXRlIGxpbmUgbWF5IGJlIHJldHVybmVkIHRoZW4pLiBSZXR1cm4gYW4gZW1wdHlcblwKLXN0cmluZyBhdCBFT0YuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZGxpbmUoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgaW50IHNpemVoaW50ID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnJlYWRsaW5lIiwgJnNpemVoaW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3IgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHJlZnVzZSB0byBtaXggd2l0aCBmLm5leHQoKSAqLwotICAgIGlmIChjaGVja19pdGVyYnVmZmVyZWQoc2VsZikpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmIChzaXplaGludCA9PSAwKQotICAgICAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHJldCA9IFV0aWxfR2V0TGluZShzZWxmLCAoc2l6ZWhpbnQgPCAwKSA/IDAgOiBzaXplaGludCk7Ci0KLWNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3JlYWRsaW5lc19fZG9jX18sCi0icmVhZGxpbmVzKFtzaXplXSkgLT4gbGlzdFxuXAotXG5cCi1DYWxsIHJlYWRsaW5lKCkgcmVwZWF0ZWRseSBhbmQgcmV0dXJuIGEgbGlzdCBvZiBsaW5lcyByZWFkLlxuXAotVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcblwKLXRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgbGluZXMgcmV0dXJuZWQuXG5cCi0iKTsKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX3JlYWRsaW5lcygpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZGxpbmVzKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGxvbmcgc2l6ZWhpbnQgPSAwOwotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGluZTsKLSAgICBjaGFyIHNtYWxsX2J1ZmZlcltTTUFMTENIVU5LXTsKLSAgICBjaGFyICpidWZmZXIgPSBzbWFsbF9idWZmZXI7Ci0gICAgc2l6ZV90IGJ1ZmZlcnNpemUgPSBTTUFMTENIVU5LOwotICAgIFB5T2JqZWN0ICpiaWdfYnVmZmVyID0gTlVMTDsKLSAgICBzaXplX3QgbmZpbGxlZCA9IDA7Ci0gICAgc2l6ZV90IG5yZWFkOwotICAgIHNpemVfdCB0b3RhbHJlYWQgPSAwOwotICAgIGNoYXIgKnAsICpxLCAqZW5kOwotICAgIGludCBlcnI7Ci0gICAgaW50IHNob3J0cmVhZCA9IDA7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxsOnJlYWRsaW5lcyIsICZzaXplaGludCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICAvKiByZWZ1c2UgdG8gbWl4IHdpdGggZi5uZXh0KCkgKi8KLSAgICBpZiAoY2hlY2tfaXRlcmJ1ZmZlcmVkKHNlbGYpKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgbnJlYWQgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcituZmlsbGVkLCBidWZmZXJzaXplLW5maWxsZWQpOwotICAgICAgICBzZWxmLT5wb3MgKz0gbnJlYWQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGlmIChucmVhZCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZWhpbnQgPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hvcnRyZWFkID0gMTsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgZXJyb3I6Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICBsaXN0ID0gTlVMTDsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICB0b3RhbHJlYWQgKz0gbnJlYWQ7Ci0gICAgICAgIHAgPSBtZW1jaHIoYnVmZmVyK25maWxsZWQsICdcbicsIG5yZWFkKTsKLSAgICAgICAgaWYgKCFzaG9ydHJlYWQgJiYgcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBOZWVkIGEgbGFyZ2VyIGJ1ZmZlciB0byBmaXQgdGhpcyBsaW5lICovCi0gICAgICAgICAgICBuZmlsbGVkICs9IG5yZWFkOwotICAgICAgICAgICAgYnVmZmVyc2l6ZSAqPSAyOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcnNpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgImxpbmUgaXMgbG9uZ2VyIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChiaWdfYnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAvKiBDcmVhdGUgdGhlIGJpZyBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICBiaWdfYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgICAgICAgICAgICAgTlVMTCwgYnVmZmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJpZ19idWZmZXIgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBQeUJ5dGVzX0FTX1NUUklORyhiaWdfYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzbWFsbF9idWZmZXIsIG5maWxsZWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogR3JvdyB0aGUgYmlnIGJ1ZmZlciAqLwotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJpZ19idWZmZXIsIGJ1ZmZlcnNpemUpIDwgMCl7Ci0gICAgICAgICAgICAgICAgICAgIGJpZ19idWZmZXIgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBidWZmZXIgPSBQeUJ5dGVzX0FTX1NUUklORyhiaWdfYnVmZmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGVuZCA9IGJ1ZmZlcituZmlsbGVkK25yZWFkOwotICAgICAgICBxID0gYnVmZmVyOwotICAgICAgICB3aGlsZSAocCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBQcm9jZXNzIGNvbXBsZXRlIGxpbmVzICovCi0gICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShxLCBwLXEpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChsaXN0LCBsaW5lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgcSA9IHA7Ci0gICAgICAgICAgICBwID0gbWVtY2hyKHEsICdcbicsIGVuZC1xKTsKLSAgICAgICAgfQotICAgICAgICAvKiBNb3ZlIHRoZSByZW1haW5pbmcgaW5jb21wbGV0ZSBsaW5lIHRvIHRoZSBzdGFydCAqLwotICAgICAgICBuZmlsbGVkID0gZW5kLXE7Ci0gICAgICAgIG1lbW1vdmUoYnVmZmVyLCBxLCBuZmlsbGVkKTsKLSAgICAgICAgaWYgKHNpemVoaW50ID4gMCkKLSAgICAgICAgICAgIGlmICh0b3RhbHJlYWQgPj0gKHNpemVfdClzaXplaGludCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKHNob3J0cmVhZCkgewotICAgICAgICAgICAgc2l6ZWhpbnQgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5maWxsZWQgIT0gMCkgewotICAgICAgICAvKiBQYXJ0aWFsIGxhc3QgbGluZSAqLwotICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsIG5maWxsZWQpOwotICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKHNpemVoaW50ID4gMCkgewotICAgICAgICAgICAgLyogTmVlZCB0byBjb21wbGV0ZSB0aGUgbGFzdCBsaW5lICovCi0gICAgICAgICAgICBQeU9iamVjdCAqcmVzdCA9IFV0aWxfR2V0TGluZShzZWxmLCAwKTsKLSAgICAgICAgICAgIGlmIChyZXN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0KCZsaW5lLCByZXN0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN0KTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kKGxpc3QsIGxpbmUpOwotICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgIGlmIChlcnIgIT0gMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gIGNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIGlmIChiaWdfYnVmZmVyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihiaWdfYnVmZmVyKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxpc3Q7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3dyaXRlX19kb2NfXywKLSJ3cml0ZShkYXRhKSAtPiBOb25lXG5cCi1cblwKLVdyaXRlIHRoZSAnZGF0YScgc3RyaW5nIHRvIGZpbGUuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCBjbG9zZSgpIG1heVxuXAotYmUgbmVlZGVkIGJlZm9yZSB0aGUgZmlsZSBvbiBkaXNrIHJlZmxlY3RzIHRoZSBkYXRhIHdyaXR0ZW4uXG5cCi0iKTsKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX3dyaXRlKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV93cml0ZShCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjaGFyICpidWY7Ci0gICAgaW50IGxlbjsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IHBidWYuYnVmOwotICAgIGxlbiA9IHBidWYubGVuOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciB3cml0aW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIEJaMl9ieldyaXRlICgmYnplcnJvciwgc2VsZi0+ZnAsIGJ1ZiwgbGVuKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0ID0gUHlfTm9uZTsKLQotY2xlYW51cDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfd3JpdGVsaW5lc19fZG9jX18sCi0id3JpdGVsaW5lcyhzZXF1ZW5jZV9vZl9zdHJpbmdzKSAtPiBOb25lXG5cCi1cblwKLVdyaXRlIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHRvIHRoZSBmaWxlLiBOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdFxuXAotYWRkZWQuIFRoZSBzZXF1ZW5jZSBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdCBwcm9kdWNpbmcgc3RyaW5ncy4gVGhpcyBpc1xuXAotZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yIGVhY2ggc3RyaW5nLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV93cml0ZWxpbmVzKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV93cml0ZWxpbmVzKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXEpCi17Ci0jZGVmaW5lIENIVU5LU0laRSAxMDAwCi0gICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICppdGVyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGluZTsKLSAgICBpbnQgaSwgaiwgaW5kZXgsIGxlbiwgaXNsaXN0OwotICAgIGludCBiemVycm9yOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3Igd3JpdGluZyIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBpc2xpc3QgPSBQeUxpc3RfQ2hlY2soc2VxKTsKLSAgICBpZiAgKCFpc2xpc3QpIHsKLSAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoc2VxKTsKLSAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAid3JpdGVsaW5lcygpIHJlcXVpcmVzIGFuIGl0ZXJhYmxlIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGxpc3QgPSBQeUxpc3RfTmV3KENIVU5LU0laRSk7Ci0gICAgICAgIGlmIChsaXN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIC8qIFN0cmF0ZWd5OiBzbHVycCBDSFVOS1NJWkUgbGluZXMgaW50byBhIHByaXZhdGUgbGlzdCwKLSAgICAgICBjaGVja2luZyB0aGF0IHRoZXkgYXJlIGFsbCBzdHJpbmdzLCB0aGVuIHdyaXRlIHRoYXQgbGlzdAotICAgICAgIHdpdGhvdXQgaG9sZGluZyB0aGUgaW50ZXJwcmV0ZXIgbG9jaywgdGhlbiBjb21lIGJhY2sgZm9yIG1vcmUuICovCi0gICAgZm9yIChpbmRleCA9IDA7IDsgaW5kZXggKz0gQ0hVTktTSVpFKSB7Ci0gICAgICAgIGlmIChpc2xpc3QpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICBsaXN0ID0gUHlMaXN0X0dldFNsaWNlKHNlcSwgaW5kZXgsIGluZGV4K0NIVU5LU0laRSk7Ci0gICAgICAgICAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBqID0gUHlMaXN0X0dFVF9TSVpFKGxpc3QpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IENIVU5LU0laRTsgaisrKSB7Ci0gICAgICAgICAgICAgICAgbGluZSA9IFB5SXRlcl9OZXh0KGl0ZXIpOwotICAgICAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlMaXN0X1NldEl0ZW0obGlzdCwgaiwgbGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGogPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qIENoZWNrIHRoYXQgYWxsIGVudHJpZXMgYXJlIGluZGVlZCBieXRlIHN0cmluZ3MuIElmIG5vdCwKLSAgICAgICAgICAgYXBwbHkgdGhlIHNhbWUgcnVsZXMgYXMgZm9yIGZpbGUud3JpdGUoKSBhbmQKLSAgICAgICAgICAgY29udmVydCB0aGUgcmV0cyB0byBzdHJpbmdzLiBUaGlzIGlzIHNsb3csIGJ1dAotICAgICAgICAgICBzZWVtcyB0byBiZSB0aGUgb25seSB3YXkgc2luY2UgYWxsIGNvbnZlcnNpb24gQVBJcwotICAgICAgICAgICBjb3VsZCBwb3RlbnRpYWxseSBleGVjdXRlIFB5dGhvbiBjb2RlLiAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgajsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKTsKLSAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayh2KSkgewotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfQXNDaGFyQnVmZmVyKHYsICZidWZmZXIsICZsZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGVsaW5lcygpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIHNlcXVlbmNlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBvYmplY3RzIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGxpbmUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgbGluZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTaW5jZSB3ZSBhcmUgcmVsZWFzaW5nIHRoZSBnbG9iYWwgbG9jaywgdGhlCi0gICAgICAgICAgIGZvbGxvd2luZyBjb2RlIG1heSAqbm90KiBleGVjdXRlIFB5dGhvbiBjb2RlLiAqLwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIHsKLSAgICAgICAgICAgIGxpbmUgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgaSk7Ci0gICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGxpbmUpOwotICAgICAgICAgICAgQloyX2J6V3JpdGUgKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhsaW5lKSwgbGVuKTsKLSAgICAgICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwotICAgICAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGogPCBDSFVOS1NJWkUpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0ID0gUHlfTm9uZTsKLQotICBlcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlfWERFQ1JFRihsaXN0KTsKLSAgICBQeV9YREVDUkVGKGl0ZXIpOwotICAgIHJldHVybiByZXQ7Ci0jdW5kZWYgQ0hVTktTSVpFCi19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3NlZWtfX2RvY19fLAotInNlZWsob2Zmc2V0IFssIHdoZW5jZV0pIC0+IE5vbmVcblwKLVxuXAotTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4gQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gT3B0aW9uYWxcblwKLWFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0byAwIChvZmZzZXQgZnJvbSBzdGFydCBvZiBmaWxlLCBvZmZzZXRcblwKLXNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzIGFyZSAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sXG5cCi1wb3NpdGl2ZSBvciBuZWdhdGl2ZSksIGFuZCAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5XG5cCi1uZWdhdGl2ZSwgYWx0aG91Z2ggbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGUpLlxuXAotXG5cCi1Ob3RlIHRoYXQgc2Vla2luZyBvZiBiejIgZmlsZXMgaXMgZW11bGF0ZWQsIGFuZCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnNcblwKLXRoZSBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3NlZWsoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IHdoZXJlID0gMDsKLSAgICBQeU9iamVjdCAqb2Zmb2JqOwotICAgIFB5X29mZl90IG9mZnNldDsKLSAgICBjaGFyIHNtYWxsX2J1ZmZlcltTTUFMTENIVU5LXTsKLSAgICBjaGFyICpidWZmZXIgPSBzbWFsbF9idWZmZXI7Ci0gICAgc2l6ZV90IGJ1ZmZlcnNpemUgPSBTTUFMTENIVU5LOwotICAgIFB5X29mZl90IGJ5dGVzcmVhZCA9IDA7Ci0gICAgc2l6ZV90IHJlYWRzaXplOwotICAgIGludCBjaHVua3NpemU7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwgJm9mZm9iaiwgJndoZXJlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICBvZmZzZXQgPSBQeUxvbmdfQXNMb25nKG9mZm9iaik7Ci0jZWxzZQotICAgIG9mZnNldCA9IFB5TG9uZ19DaGVjayhvZmZvYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcob2Zmb2JqKSA6IFB5TG9uZ19Bc0xvbmcob2Zmb2JqKTsKLSNlbmRpZgotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlZWsgd29ya3Mgb25seSB3aGlsZSByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgaWYgKHdoZXJlID09IDIpIHsKLSAgICAgICAgaWYgKHNlbGYtPnNpemUgPT0gLTEpIHsKLSAgICAgICAgICAgIGFzc2VydChzZWxmLT5tb2RlICE9IE1PREVfUkVBRF9FT0YpOwotICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgYnVmZmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgc2VsZi0+cG9zICs9IGNodW5rc2l6ZTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgICAgICAgICAgYnl0ZXNyZWFkICs9IGNodW5rc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBieXRlc3JlYWQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIG9mZnNldCA9IHNlbGYtPnNpemUgKyBvZmZzZXQ7Ci0gICAgfSBlbHNlIGlmICh3aGVyZSA9PSAxKSB7Ci0gICAgICAgIG9mZnNldCA9IHNlbGYtPnBvcyArIG9mZnNldDsKLSAgICB9Ci0KLSAgICAvKiBCZWZvcmUgZ2V0dGluZyBoZXJlLCBvZmZzZXQgbXVzdCBiZSB0aGUgYWJzb2x1dGUgcG9zaXRpb24gdGhlIGZpbGUKLSAgICAgKiBwb2ludGVyIHNob3VsZCBiZSBzZXQgdG8uICovCi0KLSAgICBpZiAob2Zmc2V0ID49IHNlbGYtPnBvcykgewotICAgICAgICAvKiB3ZSBjYW4gbW92ZSBmb3J3YXJkICovCi0gICAgICAgIG9mZnNldCAtPSBzZWxmLT5wb3M7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogd2UgY2Fubm90IG1vdmUgYmFjaywgc28gcmV3aW5kIHRoZSBzdHJlYW0gKi8KLSAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgcmV3aW5kKHNlbGYtPnJhd2ZwKTsKLSAgICAgICAgc2VsZi0+cG9zID0gMDsKLSAgICAgICAgc2VsZi0+ZnAgPSBCWjJfYnpSZWFkT3BlbigmYnplcnJvciwgc2VsZi0+cmF3ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgTlVMTCwgMCk7Ci0gICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRDsKLSAgICB9Ci0KLSAgICBpZiAob2Zmc2V0IDw9IDAgfHwgc2VsZi0+bW9kZSA9PSBNT0RFX1JFQURfRU9GKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KLSAgICAvKiBCZWZvcmUgZ2V0dGluZyBoZXJlLCBvZmZzZXQgbXVzdCBiZSBzZXQgdG8gdGhlIG51bWJlciBvZiBieXRlcwotICAgICAqIHRvIHdhbGsgZm9yd2FyZC4gKi8KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGlmIChvZmZzZXQtYnl0ZXNyZWFkID4gYnVmZmVyc2l6ZSkKLSAgICAgICAgICAgIHJlYWRzaXplID0gYnVmZmVyc2l6ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgLyogb2Zmc2V0IG1pZ2h0IGJlIHdpZGVyIHRoYXQgcmVhZHNpemUsIGJ1dCB0aGUgcmVzdWx0Ci0gICAgICAgICAgICAgKiBvZiB0aGUgc3VidHJhY3Rpb24gaXMgYm91bmQgYnkgYnVmZmVyc2l6ZSAoc2VlIHRoZQotICAgICAgICAgICAgICogY29uZGl0aW9uIGFib3ZlKS4gYnVmZmVyc2l6ZSBpcyA4MTkyLiAqLwotICAgICAgICAgICAgcmVhZHNpemUgPSAoc2l6ZV90KShvZmZzZXQtYnl0ZXNyZWFkKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwgYnVmZmVyLCByZWFkc2l6ZSk7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnNpemUgPSBzZWxmLT5wb3M7Ci0gICAgICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnl0ZXNyZWFkID09IG9mZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotZXhpdDoKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0ID0gUHlfTm9uZTsKLQotY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfdGVsbF9fZG9jX18sCi0idGVsbCgpIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYW4gaW50ZWdlciAobWF5IGJlIGEgbG9uZyBpbnRlZ2VyKS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV90ZWxsKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICByZXQgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+cG9zKTsKLSNlbHNlCi0gICAgcmV0ID0gUHlMb25nX0Zyb21Mb25nTG9uZyhzZWxmLT5wb3MpOwotI2VuZGlmCi0KLWNsZWFudXA6Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfY2xvc2VfX2RvY19fLAotImNsb3NlKCkgLT4gTm9uZSBvciAocGVyaGFwcykgYW4gaW50ZWdlclxuXAotXG5cCi1DbG9zZSB0aGUgZmlsZS4gU2V0cyBkYXRhIGF0dHJpYnV0ZSAuY2xvc2VkIHRvIHRydWUuIEEgY2xvc2VkIGZpbGVcblwKLWNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiBjbG9zZSgpIG1heSBiZSBjYWxsZWQgbW9yZVxuXAotdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfY2xvc2UoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBpbnQgYnplcnJvciA9IEJaX09LOwotCi0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgQloyX2J6V3JpdGVDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNlbGYtPm1vZGUgPSBNT0RFX0NMT1NFRDsKLSAgICBmY2xvc2Uoc2VsZi0+cmF3ZnApOwotICAgIHNlbGYtPnJhd2ZwID0gTlVMTDsKLSAgICBpZiAoYnplcnJvciA9PSBCWl9PSykgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldCA9IFB5X05vbmU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2VudGVyX2RvYywKLSJfX2VudGVyX18oKSAtPiBzZWxmLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9lbnRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2V4aXRfZG9jLAotIl9fZXhpdF9fKCpleGNpbmZvKSAtPiBOb25lLiAgQ2xvc2VzIHRoZSBmaWxlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9leGl0KEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKSBzZWxmLCAiY2xvc2UiLCBOVUxMKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgLyogSWYgZXJyb3Igb2NjdXJyZWQsIHBhc3MgdGhyb3VnaCAqLwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9ERUNSRUYocmV0KTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotCi1zdGF0aWMgUHlPYmplY3QgKkJaMkZpbGVfZ2V0aXRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKTsKLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkZpbGVfbWV0aG9kc1tdID0gewotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3JlYWQsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9yZWFkX19kb2NfX30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfcmVhZGxpbmVfX2RvY19ffSwKLSAgICB7InJlYWRsaW5lcyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3JlYWRsaW5lc19fZG9jX199LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV93cml0ZSwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3dyaXRlX19kb2NfX30sCi0gICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfd3JpdGVsaW5lcywgTUVUSF9PLCBCWjJGaWxlX3dyaXRlbGluZXNfX2RvY19ffSwKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9zZWVrLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfc2Vla19fZG9jX199LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3RlbGwsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX3RlbGxfX2RvY19ffSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfY2xvc2UsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX2Nsb3NlX19kb2NfX30sCi0gICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9lbnRlciwgTUVUSF9OT0FSR1MsIEJaMkZpbGVfZW50ZXJfZG9jfSwKLSAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfZXhpdCwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX2V4aXRfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEdldHRlcnMgYW5kIHNldHRlcnMgb2YgQloyRmlsZS4gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZ2V0X2Nsb3NlZChCWjJGaWxlT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCk7Ci19Ci0KLXN0YXRpYyBQeUdldFNldERlZiBCWjJGaWxlX2dldHNldFtdID0gewotICAgIHsiY2xvc2VkIiwgKGdldHRlcilCWjJGaWxlX2dldF9jbG9zZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZCJ9LAotICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU2xvdCBkZWZpbml0aW9ucyBmb3IgQloyRmlsZV9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJGaWxlX2luaXQoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlbmFtZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIiwgMH07Ci0gICAgUHlPYmplY3QgKm5hbWVfb2JqID0gTlVMTDsKLSAgICBjaGFyICpuYW1lOwotICAgIGNoYXIgKm1vZGUgPSAiciI7Ci0gICAgaW50IGJ1ZmZlcmluZyA9IC0xOwotICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBpbnQgbW9kZV9jaGFyID0gMDsKLQotICAgIHNlbGYtPnNpemUgPSAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfHNpaTpCWjJGaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWVfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlLCAmYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wcmVzc2xldmVsKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZV9vYmopOwotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGludCBlcnJvciA9IDA7Ci0gICAgICAgIHN3aXRjaCAoKm1vZGUpIHsKLSAgICAgICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgY2FzZSAndyc6Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGVfY2hhcikKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAxOwotICAgICAgICAgICAgICAgIG1vZGVfY2hhciA9ICptb2RlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlICdiJzoKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBlcnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtb2RlIGNoYXIgJWMiLCAqbW9kZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZV9vYmopOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIG1vZGUrKzsKLSAgICAgICAgaWYgKCptb2RlID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAobW9kZV9jaGFyID09IDApIHsKLSAgICAgICAgbW9kZV9jaGFyID0gJ3InOwotICAgIH0KLQotICAgIG1vZGUgPSAobW9kZV9jaGFyID09ICdyJykgPyAicmIiIDogIndiIjsKLQotICAgIHNlbGYtPnJhd2ZwID0gZm9wZW4obmFtZSwgbW9kZSk7Ci0gICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICBpZiAoc2VsZi0+cmF3ZnAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogWFhYIElnbm9yZSBidWZmZXJpbmcgKi8KLQotICAgIC8qIEZyb20gbm93IG9uLCB3ZSBoYXZlIHN0dWZmIHRvIGRlYWxsb2MsIHNvIGp1bXAgdG8gZXJyb3IgbGFiZWwKLSAgICAgKiBpbnN0ZWFkIG9mIHJldHVybmluZyAqLwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwotICAgIGlmICghc2VsZi0+bG9jaykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1vZGVfY2hhciA9PSAncicpCi0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6UmVhZE9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwsIDApOwotICAgIGVsc2UKLSAgICAgICAgc2VsZi0+ZnAgPSBCWjJfYnpXcml0ZU9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsLCAwLCAwKTsKLQotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5tb2RlID0gKG1vZGVfY2hhciA9PSAncicpID8gTU9ERV9SRUFEIDogTU9ERV9XUklURTsKLQotICAgIHJldHVybiAwOwotCi1lcnJvcjoKLSAgICBmY2xvc2Uoc2VsZi0+cmF3ZnApOwotICAgIHNlbGYtPnJhd2ZwID0gTlVMTDsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgdm9pZAotQloyRmlsZV9kZWFsbG9jKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgaW50IGJ6ZXJyb3I7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBCWjJfYnpSZWFkQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBCWjJfYnpXcml0ZUNsb3NlKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgVXRpbF9Ecm9wUmVhZEFoZWFkKHNlbGYpOwotICAgIGlmIChzZWxmLT5yYXdmcCAhPSBOVUxMKQotICAgICAgICBmY2xvc2Uoc2VsZi0+cmF3ZnApOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9nZXRpdGVyKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9nZXRpdGVyKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKChQeU9iamVjdCopc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9pdGVybmV4dCgpLiAqLwotI2RlZmluZSBSRUFEQUhFQURfQlVGU0laRSA4MTkyCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9pdGVybmV4dChCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIFB5Qnl0ZXNPYmplY3QqIHJldDsKLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXQgPSBVdGlsX1JlYWRBaGVhZEdldExpbmVTa2lwKHNlbGYsIDAsIFJFQURBSEVBRF9CVUZTSVpFKTsKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgaWYgKHJldCA9PSBOVUxMIHx8IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSA9PSAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXQ7Ci19Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogQloyRmlsZV9UeXBlIGRlZmluaXRpb24uICovCi0KLVB5RG9jX1ZBUihCWjJGaWxlX19kb2NfXykgPQotUHlEb2NfU1RSKAotIkJaMkZpbGUobmFtZSBbLCBtb2RlPSdyJywgYnVmZmVyaW5nPTAsIGNvbXByZXNzbGV2ZWw9OV0pIC0+IGZpbGUgb2JqZWN0XG5cCi1cblwKLU9wZW4gYSBiejIgZmlsZS4gVGhlIG1vZGUgY2FuIGJlICdyJyBvciAndycsIGZvciByZWFkaW5nIChkZWZhdWx0KSBvclxuXAotd3JpdGluZy4gV2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcsIHRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0XG5cCi1leGlzdCwgYW5kIHRydW5jYXRlZCBvdGhlcndpc2UuIElmIHRoZSBidWZmZXJpbmcgYXJndW1lbnQgaXMgZ2l2ZW4sIDAgbWVhbnNcblwKLXVuYnVmZmVyZWQsIGFuZCBsYXJnZXIgbnVtYmVycyBzcGVjaWZ5IHRoZSBidWZmZXIgc2l6ZS4gSWYgY29tcHJlc3NsZXZlbFxuXAotaXMgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuXAotRGF0YSByZWFkIGlzIGFsd2F5cyByZXR1cm5lZCBpbiBieXRlczsgZGF0YSB3cml0dGVuIG91Z2h0IHRvIGJlIGJ5dGVzLlxuXAotIik7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgQloyRmlsZV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJiejIuQloyRmlsZSIsICAgICAgICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihCWjJGaWxlT2JqZWN0KSwgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKUJaMkZpbGVfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyRmlsZV9fZG9jX18sICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIChnZXRpdGVyZnVuYylCWjJGaWxlX2dldGl0ZXIsIC8qdHBfaXRlciovCi0gICAgKGl0ZXJuZXh0ZnVuYylCWjJGaWxlX2l0ZXJuZXh0LCAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBCWjJGaWxlX21ldGhvZHMsICAgICAgICAvKnRwX21ldGhvZHMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIEJaMkZpbGVfZ2V0c2V0LCAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJGaWxlX2luaXQsIC8qdHBfaW5pdCovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgLyp0cF9hbGxvYyovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgLyp0cF9uZXcqLwotICAgIFB5T2JqZWN0X0ZyZWUsICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJDb21wLiAqLwotCi1QeURvY19TVFJWQVIoQloyQ29tcF9jb21wcmVzc19fZG9jX18sCi0iY29tcHJlc3MoZGF0YSkgLT4gc3RyaW5nXG5cCi1cblwKLVByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mXG5cCi1jb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIFdoZW4geW91J3ZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhXG5cCi10byBjb21wcmVzcywgY2FsbCB0aGUgZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLFxuXAotYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gdGhlIGludGVybmFsIGJ1ZmZlcnMuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkNvbXBfY29tcHJlc3MoQloyQ29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpjb21wcmVzcyIsICZwZGF0YSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHBkYXRhLmxlbiA9PSAwKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIH0KLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoIXNlbGYtPnJ1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGhpcyBvYmplY3Qgd2FzIGFscmVhZHkgZmx1c2hlZCIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBienMtPm5leHRfaW4gPSBwZGF0YS5idWY7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IE1JTihwZGF0YS5sZW4sIFVJTlRfTUFYKTsKLSAgICBpbnB1dF9sZWZ0ID0gcGRhdGEubGVuIC0gYnpzLT5hdmFpbF9pbjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcyhienMsIEJaX1JVTik7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9SVU5fT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGlucHV0X2xlZnQgPT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsgLyogbm8gbW9yZSBpbnB1dCBkYXRhICovCi0gICAgICAgICAgICBienMtPmF2YWlsX2luID0gTUlOKGlucHV0X2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgICAgIGlucHV0X2xlZnQgLT0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChVdGlsX0dyb3dCdWZmZXIoJnJldCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIG91dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBvdXRwdXRfc2l6ZSkgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotCi1lcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfZmx1c2hfX2RvY19fLAotImZsdXNoKCkgLT4gc3RyaW5nXG5cCi1cblwKLUZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcyBhbmQgcmV0dXJuIHdoYXQgaXMgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLlxuXAotWW91IG11c3Qgbm90IHVzZSB0aGUgY29tcHJlc3NvciBvYmplY3QgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZC5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyQ29tcF9mbHVzaChCWjJDb21wT2JqZWN0ICpzZWxmKQotewotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmICghc2VsZi0+cnVubmluZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9iamVjdCB3YXMgYWxyZWFkeSBmbHVzaGVkIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIHNlbGYtPnJ1bm5pbmcgPSAwOwotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcyhienMsIEJaX0ZJTklTSCk7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX0ZJTklTSF9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChVdGlsX0dyb3dCdWZmZXIoJnJldCkgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIG91dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG91dHB1dF9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSkKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBvdXRwdXRfc2l6ZSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotCi1lcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlfWERFQ1JFRihyZXQpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgQloyQ29tcF9tZXRob2RzW10gPSB7Ci0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJDb21wX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEJaMkNvbXBfY29tcHJlc3NfX2RvY19ffSwKLSAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKUJaMkNvbXBfZmx1c2gsIE1FVEhfTk9BUkdTLAotICAgICBCWjJDb21wX2ZsdXNoX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJDb21wX1R5cGUuICovCi0KLXN0YXRpYyBpbnQKLUJaMkNvbXBfaW5pdChCWjJDb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb21wcmVzc2xldmVsIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZjb21wcmVzc2xldmVsKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKGNvbXByZXNzbGV2ZWwgPCAxIHx8IGNvbXByZXNzbGV2ZWwgPiA5KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7Ci0gICAgaWYgKCFzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgInVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBtZW1zZXQoJnNlbGYtPmJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHNlbGYtPnJ1bm5pbmcgPSAxOwotCi0gICAgcmV0dXJuIDA7Ci1lcnJvcjoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgdm9pZAotQloyQ29tcF9kZWFsbG9jKEJaMkNvbXBPYmplY3QgKnNlbGYpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgQloyX2J6Q29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7Ci0gICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKLX0KLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEJaMkNvbXBfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoQloyQ29tcF9fZG9jX18sCi0iQloyQ29tcHJlc3NvcihbY29tcHJlc3NsZXZlbD05XSkgLT4gY29tcHJlc3NvciBvYmplY3RcblwKLVxuXAotQ3JlYXRlIGEgbmV3IGNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBjb21wcmVzc1xuXAotZGF0YSBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QsIHVzZSB0aGVcblwKLWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC4gVGhlIGNvbXByZXNzbGV2ZWwgcGFyYW1ldGVyLCBpZiBnaXZlbixcblwKLW11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuXAotIik7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgQloyQ29tcF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJiejIuQloyQ29tcHJlc3NvciIsICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihCWjJDb21wT2JqZWN0KSwgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKUJaMkNvbXBfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyQ29tcF9fZG9jX18sICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgQloyQ29tcF9tZXRob2RzLCAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJDb21wX2luaXQsIC8qdHBfaW5pdCovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgLyp0cF9hbGxvYyovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgLyp0cF9uZXcqLwotICAgIFB5T2JqZWN0X0ZyZWUsICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWVtYmVycyBvZiBCWjJEZWNvbXAuICovCi0KLSN1bmRlZiBPRkYKLSNkZWZpbmUgT0ZGKHgpIG9mZnNldG9mKEJaMkRlY29tcE9iamVjdCwgeCkKLQotc3RhdGljIFB5TWVtYmVyRGVmIEJaMkRlY29tcF9tZW1iZXJzW10gPSB7Ci0gICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNULCBPRkYodW51c2VkX2RhdGEpLCBSRUFET05MWX0sCi0gICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNZXRob2RzIG9mIEJaMkRlY29tcC4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkRlY29tcF9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKGRhdGEpIC0+IHN0cmluZ1xuXAotXG5cCi1Qcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzXG5cCi1vZiBkZWNvbXByZXNzZWQgZGF0YSB3aGVuZXZlciBwb3NzaWJsZS4gSWYgeW91IHRyeSB0byBkZWNvbXByZXNzIGRhdGFcblwKLWFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIGZvdW5kLCBFT0ZFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYgYW55IGRhdGFcblwKLXdhcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSwgaXQnbGwgYmUgaWdub3JlZCBhbmQgc2F2ZWQgaW5cblwKLXVudXNlZF9kYXRhIGF0dHJpYnV0ZS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRGVjb21wX2RlY29tcHJlc3MoQloyRGVjb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgc2l6ZV90IGlucHV0X2xlZnQ7Ci0gICAgc2l6ZV90IG91dHB1dF9zaXplID0gMDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZzZWxmLT5ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmRlY29tcHJlc3MiLCAmcGRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoIXNlbGYtPnJ1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiZW5kIG9mIHN0cmVhbSB3YXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbHJlYWR5IGZvdW5kIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IHBkYXRhLmJ1ZjsKLSAgICBienMtPmF2YWlsX2luID0gTUlOKHBkYXRhLmxlbiwgVUlOVF9NQVgpOwotICAgIGlucHV0X2xlZnQgPSBwZGF0YS5sZW4gLSBienMtPmF2YWlsX2luOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBjaGFyICpzYXZlZF9uZXh0X291dDsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHNhdmVkX25leHRfb3V0ID0gYnpzLT5uZXh0X291dDsKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3MoYnpzKTsKLSAgICAgICAgb3V0cHV0X3NpemUgKz0gYnpzLT5uZXh0X291dCAtIHNhdmVkX25leHRfb3V0OwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIHNlbGYtPnJ1bm5pbmcgPSAwOwotICAgICAgICAgICAgaW5wdXRfbGVmdCArPSBienMtPmF2YWlsX2luOwotICAgICAgICAgICAgaWYgKGlucHV0X2xlZnQgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7Ci0gICAgICAgICAgICAgICAgc2VsZi0+dW51c2VkX2RhdGEgPQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ6cy0+bmV4dF9pbiwgaW5wdXRfbGVmdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCA9PSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBubyBtb3JlIGlucHV0IGRhdGEgKi8KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4oaW5wdXRfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICAgICAgaW5wdXRfbGVmdCAtPSBienMtPmF2YWlsX2luOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFV0aWxfR3Jvd0J1ZmZlcigmcmV0KSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChvdXRwdXRfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkpCi0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgUHlfWERFQ1JFRihyZXQpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgQloyRGVjb21wX21ldGhvZHNbXSA9IHsKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyRGVjb21wX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgQloyRGVjb21wX2RlY29tcHJlc3NfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFNsb3QgZGVmaW5pdGlvbnMgZm9yIEJaMkRlY29tcF9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJEZWNvbXBfaW5pdChCWjJEZWNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6QloyRGVjb21wcmVzc29yIikpCi0gICAgICAgIHJldHVybiAtMTsKLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgaWYgKCFzZWxmLT51bnVzZWRfZGF0YSkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG1lbXNldCgmc2VsZi0+YnpzLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7Ci0gICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KCZzZWxmLT5ienMsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5ydW5uaW5nID0gMTsKLQotICAgIHJldHVybiAwOwotCi1lcnJvcjoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0gICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkRlY29tcF9kZWFsbG9jKEJaMkRlY29tcE9iamVjdCAqc2VsZikKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKQotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0jZW5kaWYKLSAgICBQeV9YREVDUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICBCWjJfYnpEZWNvbXByZXNzRW5kKCZzZWxmLT5ienMpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBCWjJEZWNvbXBfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoQloyRGVjb21wX19kb2NfXywKLSJCWjJEZWNvbXByZXNzb3IoKSAtPiBkZWNvbXByZXNzb3Igb2JqZWN0XG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBkZWNvbXByZXNzXG5cCi1kYXRhIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlXG5cCi1kZWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkRlY29tcF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJiejIuQloyRGVjb21wcmVzc29yIiwgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihCWjJEZWNvbXBPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKUJaMkRlY29tcF9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsLyp0cF9nZXRhdHRybyovCi0gICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBCWjJEZWNvbXBfX2RvY19fLCAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBCWjJEZWNvbXBfbWV0aG9kcywgICAgICAvKnRwX21ldGhvZHMqLwotICAgIEJaMkRlY29tcF9tZW1iZXJzLCAgICAgIC8qdHBfbWVtYmVycyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKUJaMkRlY29tcF9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1vZHVsZSBmdW5jdGlvbnMuICovCi0KLVB5RG9jX1NUUlZBUihiejJfY29tcHJlc3NfX2RvY19fLAotImNvbXByZXNzKGRhdGEgWywgY29tcHJlc3NsZXZlbD05XSkgLT4gc3RyaW5nXG5cCi1cblwKLUNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QuIElmIHlvdSB3YW50IHRvIGNvbXByZXNzIGRhdGEgc2VxdWVudGlhbGx5LFxuXAotdXNlIGFuIGluc3RhbmNlIG9mIEJaMkNvbXByZXNzb3IgaW5zdGVhZC4gVGhlIGNvbXByZXNzbGV2ZWwgcGFyYW1ldGVyLCBpZlxuXAotZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1iejJfY29tcHJlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIGludCBjb21wcmVzc2xldmVsPTk7Ci0gICAgaW50IGFjdGlvbjsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgc2l6ZV90IGlucHV0X2xlZnQ7Ci0gICAgc2l6ZV90IG91dHB1dF9zaXplID0gMDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBiel9zdHJlYW0gX2J6czsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZfYnpzOwotICAgIGludCBiemVycm9yOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZGF0YSIsICJjb21wcmVzc2xldmVsIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZwZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGNvbXByZXNzbGV2ZWwgPCAxIHx8IGNvbXByZXNzbGV2ZWwgPiA5KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOwotICAgIGlmICghcmV0KSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgbWVtc2V0KGJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotCi0gICAgYnpzLT5uZXh0X2luID0gcGRhdGEuYnVmOwotICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4ocGRhdGEubGVuLCBVSU5UX01BWCk7Ci0gICAgaW5wdXRfbGVmdCA9IHBkYXRhLmxlbiAtIGJ6cy0+YXZhaWxfaW47Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KGJ6cywgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhY3Rpb24gPSBpbnB1dF9sZWZ0ID4gMCA/IEJaX1JVTiA6IEJaX0ZJTklTSDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcyhienMsIGFjdGlvbik7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX1JVTl9PSyAmJiBiemVycm9yICE9IEJaX0ZJTklTSF9PSykgewotICAgICAgICAgICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFjdGlvbiA9PSBCWl9SVU4gJiYgYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgYWN0aW9uID0gQlpfRklOSVNIOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBienMtPmF2YWlsX2luID0gTUlOKGlucHV0X2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChvdXRwdXRfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkpCi0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBvdXRwdXRfc2l6ZSk7ICAvKiBTZXRzIHJldCB0byBOVUxMIG9uIGZhaWx1cmUuICovCi0KLSAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoYnoyX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoZGF0YSkgLT4gZGVjb21wcmVzc2VkIGRhdGFcblwKLVxuXAotRGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBkZWNvbXByZXNzIGRhdGEgc2VxdWVudGlhbGx5LFxuXAotdXNlIGFuIGluc3RhbmNlIG9mIEJaMkRlY29tcHJlc3NvciBpbnN0ZWFkLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1iejJfZGVjb21wcmVzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldDsKLSAgICBiel9zdHJlYW0gX2J6czsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZfYnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocGRhdGEubGVuID09IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIG1lbXNldChienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IHBkYXRhLmJ1ZjsKLSAgICBienMtPmF2YWlsX2luID0gTUlOKHBkYXRhLmxlbiwgVUlOVF9NQVgpOwotICAgIGlucHV0X2xlZnQgPSBwZGF0YS5sZW4gLSBienMtPmF2YWlsX2luOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KGJ6cywgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcyhienMpOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgZmluZCBlbmQgb2Ygc3RyZWFtIik7Ci0gICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9pbiA9IE1JTihpbnB1dF9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIG91dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG91dHB1dF9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSkKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKTsgIC8qIFNldHMgcmV0IHRvIE5VTEwgb24gZmFpbHVyZS4gKi8KLQotICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIGJ6Ml9tZXRob2RzW10gPSB7Ci0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbikgYnoyX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgYnoyX2NvbXByZXNzX19kb2NfX30sCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKSBiejJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAotICAgICAgICBiejJfZGVjb21wcmVzc19fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoYnoyX19kb2NfXywKLSJUaGUgcHl0aG9uIGJ6MiBtb2R1bGUgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIGludGVyZmFjZSBmb3JcblwKLXRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4gSXQgaW1wbGVtZW50cyBhIGNvbXBsZXRlIGZpbGVcblwKLWludGVyZmFjZSwgb25lIHNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kIHR5cGVzIGZvclxuXAotc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uXG5cCi0iKTsKLQotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGJ6Mm1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImJ6MiIsCi0gICAgYnoyX19kb2NfXywKLSAgICAtMSwKLSAgICBiejJfbWV0aG9kcywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X2J6Mih2b2lkKQotewotICAgIFB5T2JqZWN0ICptOwotCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyRmlsZV9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkNvbXBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJEZWNvbXBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmJ6Mm1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fYXV0aG9yX18iLCBQeVVuaWNvZGVfRnJvbVN0cmluZyhfX2F1dGhvcl9fKSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkZpbGVfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJGaWxlIiwgKFB5T2JqZWN0ICopJkJaMkZpbGVfVHlwZSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkNvbXBfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJDb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkNvbXBfVHlwZSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkRlY29tcF9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkRlY29tcHJlc3NvciIsIChQeU9iamVjdCAqKSZCWjJEZWNvbXBfVHlwZSk7Ci0gICAgcmV0dXJuIG07Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKaW5kZXggYWI0ZTY1OS4uOWU5ZTk2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYwpAQCAtODUsNyArODUsNyBAQAogICAgICAgICBUUllNQVBfREVDKGdiMjMxMiwgKipvdXRidWYsIGMgXiAweDgwLCBJTjIgXiAweDgwKSB7CiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAKICAgICAgICAgR0JLX0RFQ09ERShjLCBJTjIsICoqb3V0YnVmKQotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgICAgIGMzID0gSU4zOwogICAgICAgICAgICAgYzQgPSBJTjQ7CiAgICAgICAgICAgICBpZiAoYyA8IDB4ODEgfHwgYzMgPCAweDgxIHx8IGM0IDwgMHgzMCB8fCBjNCA+IDB4MzkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICBjIC09IDB4ODE7ICBjMiAtPSAweDMwOwogICAgICAgICAgICAgYzMgLT0gMHg4MTsgYzQgLT0gMHgzMDsKIApAQCAtMjkyLDEyICsyOTIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogCiAgICAgICAgIEdCS19ERUNPREUoYywgYzIsICoqb3V0YnVmKQogICAgICAgICBlbHNlIFRSWU1BUF9ERUMoZ2IxODAzMGV4dCwgKipvdXRidWYsIGMsIGMyKTsKLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtNDAwLDcgKzQwMCw3IEBACiAgICAgICAgICAgICBlbHNlIGlmIChjMiA9PSAnXG4nKQogICAgICAgICAgICAgICAgIDsgLyogbGluZS1jb250aW51YXRpb24gKi8KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMiwgMCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNDE5LDcgKzQxOSw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMKaW5kZXggNTU4YTQyZi4uZDNhZDA0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYwpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICAgICAgIGNhc2UgMHg4ODY0OiBXUklURTIoMHgwMGNhLCAweDAzMGMpOyBicmVhazsKICAgICAgICAgY2FzZSAweDg4YTM6IFdSSVRFMigweDAwZWEsIDB4MDMwNCk7IGJyZWFrOwogICAgICAgICBjYXNlIDB4ODhhNTogV1JJVEUyKDB4MDBlYSwgMHgwMzBjKTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IHJldHVybiAyOworICAgICAgICBkZWZhdWx0OiByZXR1cm4gMTsKICAgICAgICAgfQogCiAgICAgICAgIE5FWFQoMiwgMikgLyogYWxsIGRlY29kZWQgY29kZXBvaW50cyBhcmUgcGFpcnMsIGFib3ZlLiAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYwppbmRleCAyNWMxYTM2Li5jYmMxNTQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiAKIENPREVDX0lOSVQoaXNvMjAyMikKIHsKLSAgICBjb25zdCBzdHJ1Y3QgaXNvMjAyMl9kZXNpZ25hdGlvbiAqZGVzaWcgPSBDT05GSUdfREVTSUdOQVRJT05TOworICAgIGNvbnN0IHN0cnVjdCBpc28yMDIyX2Rlc2lnbmF0aW9uICpkZXNpZzsKICAgICBmb3IgKGRlc2lnID0gQ09ORklHX0RFU0lHTkFUSU9OUzsgZGVzaWctPm1hcms7IGRlc2lnKyspCiAgICAgICAgIGlmIChkZXNpZy0+aW5pdGlhbGl6ZXIgIT0gTlVMTCAmJiBkZXNpZy0+aW5pdGlhbGl6ZXIoKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jCmluZGV4IGEwNWUwMWIuLmE1MDA2OTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfanAuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2pwLmMKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgICAgICBUUllNQVBfREVDKGNwOTMyZXh0LCAqKm91dGJ1ZiwgYywgYzIpOwogICAgICAgICBlbHNlIGlmICgoYyA+PSAweDgxICYmIGMgPD0gMHg5ZikgfHwgKGMgPj0gMHhlMCAmJiBjIDw9IDB4ZWEpKXsKICAgICAgICAgICAgIGlmIChjMiA8IDB4NDAgfHwgKGMyID4gMHg3ZSAmJiBjMiA8IDB4ODApIHx8IGMyID4gMHhmYykKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgYyA9IChjIDwgMHhlMCA/IGMgLSAweDgxIDogYyAtIDB4YzEpOwogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDgwID8gYzIgLSAweDQwIDogYzIgLSAweDQxKTsKQEAgLTEyMCw3ICsxMjAsNyBAQAogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDVlID8gYzIgOiBjMiAtIDB4NWUpICsgMHgyMTsKIAogICAgICAgICAgICAgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsIGMsIGMyKTsKLSAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgICAgICBlbHNlIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHhmMCAmJiBjIDw9IDB4ZjkpIHsKICAgICAgICAgICAgIGlmICgoYzIgPj0gMHg0MCAmJiBjMiA8PSAweDdlKSB8fApAQCAtMTI4LDEwICsxMjgsMTAgQEAKICAgICAgICAgICAgICAgICBPVVQxKDB4ZTAwMCArIDE4OCAqIChjIC0gMHhmMCkgKwogICAgICAgICAgICAgICAgICAgICAgKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSkpCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHg4ZikgewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMiwgYzM7CkBAIC0yNzQsNyArMjc0LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxMiwgKipvdXRidWYsIGMyLCBjMykgOwotICAgICAgICAgICAgZWxzZSByZXR1cm4gMzsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgICAgICAgICBORVhUKDMsIDEpCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0zMDAsNyArMzAwLDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDIsIDIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQogICAgIH0KQEAgLTM4OCw3ICszODgsNyBAQAogICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID09IDB4OGYpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzIsIGMzOwpAQCAtNDAxLDcgKzQwMSw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgzLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMjsKQEAgLTQxNyw3ICs0MTcsNyBAQAogI2VuZGlmCiAgICAgICAgICAgICAgICAgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjIF4gMHg4MCwgYzIgXiAweDgwKSA7Ci0gICAgICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQogICAgIH0KQEAgLTUwMiw3ICs1MDIsNyBAQAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogICAgICAgICAgICAgYzIgPSBJTjI7CiAgICAgICAgICAgICBpZiAoYzIgPCAweDQwIHx8IChjMiA+IDB4N2UgJiYgYzIgPCAweDgwKSB8fCBjMiA+IDB4ZmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIGMxID0gKGMgPCAweGUwID8gYyAtIDB4ODEgOiBjIC0gMHhjMSk7CiAgICAgICAgICAgICBjMiA9IChjMiA8IDB4ODAgPyBjMiAtIDB4NDAgOiBjMiAtIDB4NDEpOwpAQCAtNTIyLDEwICs1MjIsMTAgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMSwgMSkgLyogSklTIFggMDIwMSAqLwogICAgIH0KQEAgLTY0NSw3ICs2NDUsNyBAQAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogICAgICAgICAgICAgYzIgPSBJTjI7CiAgICAgICAgICAgICBpZiAoYzIgPCAweDQwIHx8IChjMiA+IDB4N2UgJiYgYzIgPCAweDgwKSB8fCBjMiA+IDB4ZmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIGMxID0gKGMgPCAweGUwID8gYyAtIDB4ODEgOiBjIC0gMHhjMSk7CiAgICAgICAgICAgICBjMiA9IChjMiA8IDB4ODAgPyBjMiAtIDB4NDAgOiBjMiAtIDB4NDEpOwpAQCAtNjcxLDcgKzY3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIE5FWFRfT1VUKDIpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIE5FWFRfSU4oMikKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBQbGFuZSAyICovCkBAIC02ODksMTMgKzY4OSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDEsIDEpIC8qIEpJUyBYIDAyMDEgKi8KICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMKaW5kZXggOTI3MmUzNi4uZjU2OTdkZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3Nfa3IuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiAgICAgICAgICAgICBpZiAoKCppbmJ1ZilbMl0gIT0gRVVDS1JfSkFNT19GSVJTVEJZVEUgfHwKICAgICAgICAgICAgICAgICAoKmluYnVmKVs0XSAhPSBFVUNLUl9KQU1PX0ZJUlNUQllURSB8fAogICAgICAgICAgICAgICAgICgqaW5idWYpWzZdICE9IEVVQ0tSX0pBTU9fRklSU1RCWVRFKQotICAgICAgICAgICAgICAgIHJldHVybiA4OworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICBjID0gKCppbmJ1ZilbM107CiAgICAgICAgICAgICBpZiAoMHhhMSA8PSBjICYmIGMgPD0gMHhiZSkKQEAgLTE0Myw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgIGpvbmcgPSBOT05FOwogCiAgICAgICAgICAgICBpZiAoY2hvID09IE5PTkUgfHwganVuZyA9PSBOT05FIHx8IGpvbmcgPT0gTk9ORSkKLSAgICAgICAgICAgICAgICByZXR1cm4gODsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgT1VUMSgweGFjMDAgKyBjaG8qNTg4ICsganVuZyoyOCArIGpvbmcpOwogICAgICAgICAgICAgTkVYVCg4LCAxKQpAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTIwOCw3ICsyMDgsNyBAQAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAgICAgICAgIFRSWU1BUF9ERUMoa3N4MTAwMSwgKipvdXRidWYsIGMgXiAweDgwLCBJTjIgXiAweDgwKTsKICAgICAgICAgZWxzZSBUUllNQVBfREVDKGNwOTQ5ZXh0LCAqKm91dGJ1ZiwgYywgSU4yKTsKLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBACiAgICAgICAgICAgICBpX2pvbmcgPSBqb2hhYmlkeF9qb25nc2VvbmdbY19qb25nXTsKIAogICAgICAgICAgICAgaWYgKGlfY2hvID09IE5PTkUgfHwgaV9qdW5nID09IE5PTkUgfHwgaV9qb25nID09IE5PTkUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIC8qIHdlIGRvbid0IHVzZSBVKzExMDAgaGFuZ3VsIGphbW8geWV0LiAqLwogICAgICAgICAgICAgaWYgKGlfY2hvID09IEZJTEwpIHsKQEAgLTM5MSw3ICszOTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgT1VUMSgweDMxMDAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICBqb2hhYmphbW9fanVuZ3Nlb25nW2NfanVuZ10pCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoaV9qdW5nID09IEZJTEwpIHsKQEAgLTM5OSw3ICszOTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgT1VUMSgweDMxMDAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICBqb2hhYmphbW9fY2hvc2VvbmdbY19jaG9dKQogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIE9VVDEoMHhhYzAwICsKQEAgLTQxNCw3ICs0MTQsNyBAQAogICAgICAgICAgICAgICAgIGMyIDwgMHgzMSB8fCAoYzIgPj0gMHg4MCAmJiBjMiA8IDB4OTEpIHx8CiAgICAgICAgICAgICAgICAgKGMyICYgMHg3ZikgPT0gMHg3ZiB8fAogICAgICAgICAgICAgICAgIChjID09IDB4ZGEgJiYgKGMyID49IDB4YTEgJiYgYzIgPD0gMHhkMykpKQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB0MSwgdDI7CiAKQEAgLTQyNSw3ICs0MjUsNyBAQAogICAgICAgICAgICAgICAgIHQyID0gKHQyIDwgMHg1ZSA/IHQyIDogdDIgLSAweDVlKSArIDB4MjE7CiAKICAgICAgICAgICAgICAgICBUUllNQVBfREVDKGtzeDEwMDEsICoqb3V0YnVmLCB0MSwgdDIpOwotICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYwppbmRleCAzOGNmNzIzLi45MTYyOThkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX3R3LmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc190dy5jCkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgIFRSWU1BUF9ERUMoYmlnNSwgKipvdXRidWYsIGMsIElOMikgewogICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMDksNyArMTA5LDcgQEAKIAogICAgICAgICBUUllNQVBfREVDKGNwOTUwZXh0LCAqKm91dGJ1ZiwgYywgSU4yKTsKICAgICAgICAgZWxzZSBUUllNQVBfREVDKGJpZzUsICoqb3V0YnVmLCBjLCBJTjIpOwotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYwppbmRleCA3YjA0ZjAyMC4uYzAzMmNkYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC0zMTYsMTUgKzMxNiwxNSBAQAogICAgICAgICBnb3RvIGVycm9yZXhpdDsKIAogICAgIGlmICghUHlUdXBsZV9DaGVjayhyZXRvYmopIHx8IFB5VHVwbGVfR0VUX1NJWkUocmV0b2JqKSAhPSAyIHx8Ci0gICAgICAgICFQeVVuaWNvZGVfQ2hlY2soKHRvYmogPSBQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMCkpKSB8fAorICAgICAgICAoIVB5VW5pY29kZV9DaGVjaygodG9iaiA9IFB5VHVwbGVfR0VUX0lURU0ocmV0b2JqLCAwKSkpICYmICFQeUJ5dGVzX0NoZWNrKHRvYmopKSB8fAogICAgICAgICAhUHlMb25nX0NoZWNrKFB5VHVwbGVfR0VUX0lURU0ocmV0b2JqLCAxKSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICIodW5pY29kZSwgaW50KSB0dXBsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIihzdHIsIGludCkgdHVwbGUiKTsKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgfQogCi0gICAgeworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodG9iaikpIHsKICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdXJhdyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRvYmopOwogCiAgICAgICAgIHJldHN0ciA9IG11bHRpYnl0ZWNvZGVjX2VuY29kZShjb2RlYywgc3RhdGUsICZ1cmF3LApAQCAtMzMzLDYgKzMzMywxMCBAQAogICAgICAgICBpZiAocmV0c3RyID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRih0b2JqKTsKKyAgICAgICAgcmV0c3RyID0gdG9iajsKKyAgICB9CiAKICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhyZXRzdHIpKTsKICAgICByZXRzdHJzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXRzdHIpOwpAQCAtNDM5LDE0ICs0NDMsMTYgQEAKICAgICAgICAgIVB5TG9uZ19DaGVjayhQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMSkpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiKHVuaWNvZGUsIGludCkgdHVwbGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIoc3RyLCBpbnQpIHR1cGxlIik7CiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfQXNVbmljb2RlKHJldHVuaSkgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgcmV0dW5pc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXR1bmkpOwogICAgIGlmIChyZXR1bmlzaXplID4gMCkgewogICAgICAgICBSRVFVSVJFX0RFQ09ERUJVRkZFUihidWYsIHJldHVuaXNpemUpOwotICAgICAgICBtZW1jcHkoKGNoYXIgKilidWYtPm91dGJ1ZiwgUHlVbmljb2RlX0FTX0RBVEEocmV0dW5pKSwKKyAgICAgICAgbWVtY3B5KChjaGFyICopYnVmLT5vdXRidWYsIFB5VW5pY29kZV9BU19VTklDT0RFKHJldHVuaSksCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1bmlzaXplICogUHlfVU5JQ09ERV9TSVpFKTsKICAgICAgICAgYnVmLT5vdXRidWYgKz0gcmV0dW5pc2l6ZTsKICAgICB9CkBAIC00ODMsNiArNDg5LDcgQEAKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKICAgICBidWYuZXhjb2JqID0gTlVMTDsKKyAgICBidWYub3V0b2JqID0gTlVMTDsKICAgICBidWYuaW5idWYgPSBidWYuaW5idWZfdG9wID0gKmRhdGE7CiAgICAgYnVmLmluYnVmX2VuZCA9IGJ1Zi5pbmJ1Zl90b3AgKyBkYXRhbGVuOwogCkBAIC01NzMsOCArNTgwLDExIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkYXRhID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGFyZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmRhdGFsZW4pOworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlfWERFQ1JFRih1Y3Z0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgZXJyb3JjYiA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKGVycm9yY2IgPT0gTlVMTCkgewpAQCAtNjI3LDcgKzYzNyw3IEBACiAgICAgaWYgKGRhdGFsZW4gPT0gMCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKLSAgICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApLCAwKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoUHlVbmljb2RlX05ldygwLCAwKSwgMCk7CiAgICAgfQogCiAgICAgYnVmLmV4Y29iaiA9IE5VTEw7CkBAIC02MzcsNiArNjQ3LDggQEAKICAgICBpZiAoYnVmLm91dG9iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICBidWYub3V0YnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLm91dG9iaik7CisgICAgaWYgKGJ1Zi5vdXRidWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgYnVmLm91dGJ1Zl9lbmQgPSBidWYub3V0YnVmICsgUHlVbmljb2RlX0dFVF9TSVpFKGJ1Zi5vdXRvYmopOwogCiAgICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNpbml0ICE9IE5VTEwgJiYKQEAgLTc0Miw2ICs3NTQsNyBAQAogICAgIFB5T2JqZWN0ICp1Y3Z0LCAqciA9IE5VTEw7CiAgICAgUHlfVU5JQ09ERSAqaW5idWYsICppbmJ1Zl9lbmQsICppbmJ1Zl90bXAgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgZGF0YWxlbiwgb3JpZ3BlbmRpbmc7CisgICAgd2NoYXJfdCAqZGF0YTsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodW5pc3RyKSkKICAgICAgICAgdWN2dCA9IE5VTEw7CkBAIC03NTEsMTMgKzc2NCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pc3RyKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiY291bGRuJ3QgY29udmVydCB0aGUgb2JqZWN0IHRvIHVuaWNvZGUuIik7CisgICAgICAgICAgICAgICAgImNvdWxkbid0IGNvbnZlcnQgdGhlIG9iamVjdCB0byBzdHIuIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodWN2dCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KIAotICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pc3RyKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pc3RyLCAmZGF0YWxlbik7CisgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgb3JpZ3BlbmRpbmcgPSBjdHgtPnBlbmRpbmdzaXplOwogCiAgICAgaWYgKG9yaWdwZW5kaW5nID4gMCkgewpAQCAtODQ4LDcgKzg2Myw5IEBACiAgICAgICAgIGJ1Zi0+b3V0b2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwogICAgICAgICBpZiAoYnVmLT5vdXRvYmogPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgYnVmLT5vdXRidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShidWYtPm91dG9iaik7CisgICAgICAgIGJ1Zi0+b3V0YnVmID0gUHlVbmljb2RlX0FzVW5pY29kZShidWYtPm91dG9iaik7CisgICAgICAgIGlmIChidWYtPm91dGJ1ZiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBidWYtPm91dGJ1Zl9lbmQgPSBidWYtPm91dGJ1ZiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShidWYtPm91dG9iaik7CiAgICAgfQpAQCAtOTAwLDExICs5MTcsMTcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYmllbmNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+Y29kZWMtPmRlY3Jlc2V0ICE9IE5VTEwgJiYKLSAgICAgICAgc2VsZi0+Y29kZWMtPmRlY3Jlc2V0KCZzZWxmLT5zdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogTG9uZ2VzdCBvdXRwdXQ6IDQgYnl0ZXMgKGInXHgwRlx4MUYoQicpIHdpdGggSVNPIDIwMjIgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0XSwgKm91dGJ1ZjsKKyAgICBQeV9zc2l6ZV90IHI7CisgICAgaWYgKHNlbGYtPmNvZGVjLT5lbmNyZXNldCAhPSBOVUxMKSB7CisgICAgICAgIG91dGJ1ZiA9IGJ1ZmZlcjsKKyAgICAgICAgciA9IHNlbGYtPmNvZGVjLT5lbmNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dGJ1Ziwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICBpZiAociAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHNlbGYtPnBlbmRpbmdzaXplID0gMDsKLQogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xMjQ2LDcgKzEyNjksNyBAQAogICAgIFB5X3NzaXplX3QgcnNpemUsIGZpbmFsc2l6ZSA9IDA7CiAKICAgICBpZiAoc2l6ZWhpbnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAKICAgICBidWYub3V0b2JqID0gYnVmLmV4Y29iaiA9IE5VTEw7CiAgICAgY3JlcyA9IE5VTEw7CkBAIC0xNTcyLDEyICsxNTk1LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaXN0cikKIHsKICAgICBQeU9iamVjdCAqc3RyLCAqd3I7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgc3RyID0gZW5jb2Rlcl9lbmNvZGVfc3RhdGVmdWwoU1RBVEVGVUxfRUNUWChzZWxmKSwgdW5pc3RyLCAwKTsKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHdyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sICJ3cml0ZSIsICJPIiwgc3RyKTsKKyAgICB3ciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+c3RyZWFtLCAmUHlJZF93cml0ZSwgIk8iLCBzdHIpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIGlmICh3ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNjQzLDcgKzE2NjcsOSBAQAogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHB3cnQpKTsKICAgICBpZiAoUHlCeXRlc19TaXplKHB3cnQpID4gMCkgewogICAgICAgICBQeU9iamVjdCAqd3I7Ci0gICAgICAgIHdyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sICJ3cml0ZSIsICJPIiwgcHdydCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKworICAgICAgICB3ciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+c3RyZWFtLCAmUHlJZF93cml0ZSwgIk8iLCBwd3J0KTsKICAgICAgICAgaWYgKHdyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihwd3J0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jb25maWcuYy5pbiBiL01vZHVsZXMvY29uZmlnLmMuaW4KaW5kZXggMzRkNDRkNS4uN2EyNGUyZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jb25maWcuYy5pbgorKysgYi9Nb2R1bGVzL2NvbmZpZy5jLmluCkBAIC0zOSwxMyArMzksMTIgQEAKICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGluIGltcG9ydC5jICovCi0gICAgeyJpbXAiLCBQeUluaXRfaW1wfSwKKyAgICB7Il9pbXAiLCBQeUluaXRfaW1wfSwKIAogICAgIC8qIFRoaXMgbGl2ZXMgaW4gUHl0aG9uL1B5dGhvbi1hc3QuYyAqLwogICAgIHsiX2FzdCIsIFB5SW5pdF9fYXN0fSwKIAogICAgIC8qIFRoZXNlIGVudHJpZXMgYXJlIGhlcmUgZm9yIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyAqLwotICAgIHsiX19tYWluX18iLCBOVUxMfSwKICAgICB7ImJ1aWx0aW5zIiwgTlVMTH0sCiAgICAgeyJzeXMiLCBOVUxMfSwKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9lcnJub21vZHVsZS5jIGIvTW9kdWxlcy9lcnJub21vZHVsZS5jCmluZGV4IDg2NzIwYWYuLjA2ZWQ1M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXJybm9tb2R1bGUuYworKysgYi9Nb2R1bGVzL2Vycm5vbW9kdWxlLmMKQEAgLTcsNiArNywzMyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKy8qIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHdlcmUgYWRkZWQgdG8gZXJybm8uaCBpbiBWUzIwMTAgYnV0IGhhdmUKKyAgIHByZWZlcnJlZCBXU0EgZXF1aXZhbGVudHMuICovCisjdW5kZWYgRUFERFJJTlVTRQorI3VuZGVmIEVBRERSTk9UQVZBSUwKKyN1bmRlZiBFQUZOT1NVUFBPUlQKKyN1bmRlZiBFQUxSRUFEWQorI3VuZGVmIEVDT05OQUJPUlRFRAorI3VuZGVmIEVDT05OUkVGVVNFRAorI3VuZGVmIEVDT05OUkVTRVQKKyN1bmRlZiBFREVTVEFERFJSRVEKKyN1bmRlZiBFSE9TVFVOUkVBQ0gKKyN1bmRlZiBFSU5QUk9HUkVTUworI3VuZGVmIEVJU0NPTk4KKyN1bmRlZiBFTE9PUAorI3VuZGVmIEVNU0dTSVpFCisjdW5kZWYgRU5FVERPV04KKyN1bmRlZiBFTkVUUkVTRVQKKyN1bmRlZiBFTkVUVU5SRUFDSAorI3VuZGVmIEVOT0JVRlMKKyN1bmRlZiBFTk9QUk9UT09QVAorI3VuZGVmIEVOT1RDT05OCisjdW5kZWYgRU5PVFNPQ0sKKyN1bmRlZiBFT1BOT1RTVVBQCisjdW5kZWYgRVBST1RPTk9TVVBQT1JUCisjdW5kZWYgRVBST1RPVFlQRQorI3VuZGVmIEVUSU1FRE9VVAorI3VuZGVmIEVXT1VMREJMT0NLCiAjZW5kaWYKIAogLyoKQEAgLTg0LDYgKzExMSw4IEBACiAgICAgICogVGhlIG5hbWVzIGFuZCBjb21tZW50cyBhcmUgYm9ycm93ZWQgZnJvbSBsaW51eC9pbmNsdWRlL2Vycm5vLmgsCiAgICAgICogd2hpY2ggc2hvdWxkIGJlIHByZXR0eSBhbGwtaW5jbHVzaXZlLiAgSG93ZXZlciwgdGhlIFNvbGFyaXMgc3BlY2lmaWMKICAgICAgKiBuYW1lcyBhbmQgY29tbWVudHMgYXJlIGJvcnJvd2VkIGZyb20gc3lzL2Vycm5vLmggaW4gU29sYXJpcy4KKyAgICAgKiBNYWNPU1ggc3BlY2lmaWMgbmFtZXMgYW5kIGNvbW1lbnRzIGFyZSBib3Jyb3dlZCBmcm9tIHN5cy9lcnJuby5oIGluCisgICAgICogTWFjT1NYLgogICAgICAqLwogCiAjaWZkZWYgRU5PREVWCkBAIC04NDgsNiArODc3LDU5IEBACiAgICAgaW5zY29kZShkLCBkcywgZGUsICJFTk9UQUNUSVZFIiwgRU5PVEFDVElWRSwgIkZhY2lsaXR5IGlzIG5vdCBhY3RpdmUiKTsKICNlbmRpZgogCisgICAgLyogTWFjT1NYIHNwZWNpZmljIGVycm5vcyAqLworI2lmZGVmIEVBVVRICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQVVUSCIsIEVBVVRILCAiQXV0aGVudGljYXRpb24gZXJyb3IiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURBUkNICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFEQVJDSCIsIEVCQURBUkNILCAiQmFkIENQVSB0eXBlIGluIGV4ZWN1dGFibGUiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURFWEVDCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFERVhFQyIsIEVCQURFWEVDLCAiQmFkIGV4ZWN1dGFibGUgKG9yIHNoYXJlZCBsaWJyYXJ5KSIpOworI2VuZGlmCisjaWZkZWYgRUJBRE1BQ0hPCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFETUFDSE8iLCBFQkFETUFDSE8sICJNYWxmb3JtZWQgTWFjaC1vIGZpbGUiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURSUEMKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVCQURSUEMiLCBFQkFEUlBDLCAiUlBDIHN0cnVjdCBpcyBiYWQiKTsKKyNlbmRpZgorI2lmZGVmIEVERVZFUlIKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVERVZFUlIiLCBFREVWRVJSLCAiRGV2aWNlIGVycm9yIik7CisjZW5kaWYKKyNpZmRlZiBFRlRZUEUKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVGVFlQRSIsIEVGVFlQRSwgIkluYXBwcm9wcmlhdGUgZmlsZSB0eXBlIG9yIGZvcm1hdCIpOworI2VuZGlmCisjaWZkZWYgRU5FRURBVVRICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFTkVFREFVVEgiLCBFTkVFREFVVEgsICJOZWVkIGF1dGhlbnRpY2F0b3IiKTsKKyNlbmRpZgorI2lmZGVmIEVOT0FUVFIKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVOT0FUVFIiLCBFTk9BVFRSLCAiQXR0cmlidXRlIG5vdCBmb3VuZCIpOworI2VuZGlmCisjaWZkZWYgRU5PUE9MSUNZCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFTk9QT0xJQ1kiLCBFTk9QT0xJQ1ksICJQb2xpY3kgbm90IGZvdW5kIik7CisjZW5kaWYKKyNpZmRlZiBFUFJPQ0xJTQorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0NMSU0iLCBFUFJPQ0xJTSwgIlRvbyBtYW55IHByb2Nlc3NlcyIpOworI2VuZGlmCisjaWZkZWYgRVBST0NVTkFWQUlMCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFJPQ1VOQVZBSUwiLCBFUFJPQ1VOQVZBSUwsICJCYWQgcHJvY2VkdXJlIGZvciBwcm9ncmFtIik7CisjZW5kaWYKKyNpZmRlZiBFUFJPR01JU01BVENICisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFJPR01JU01BVENIIiwgRVBST0dNSVNNQVRDSCwgIlByb2dyYW0gdmVyc2lvbiB3cm9uZyIpOworI2VuZGlmCisjaWZkZWYgRVBST0dVTkFWQUlMCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFJPR1VOQVZBSUwiLCBFUFJPR1VOQVZBSUwsICJSUEMgcHJvZy4gbm90IGF2YWlsIik7CisjZW5kaWYKKyNpZmRlZiBFUFdST0ZGCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFUFdST0ZGIiwgRVBXUk9GRiwgIkRldmljZSBwb3dlciBpcyBvZmYiKTsKKyNlbmRpZgorI2lmZGVmIEVSUENNSVNNQVRDSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVJQQ01JU01BVENIIiwgRVJQQ01JU01BVENILCAiUlBDIHZlcnNpb24gd3JvbmciKTsKKyNlbmRpZgorI2lmZGVmIEVTSExJQlZFUlMKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVTSExJQlZFUlMiLCBFU0hMSUJWRVJTLCAiU2hhcmVkIGxpYnJhcnkgdmVyc2lvbiBtaXNtYXRjaCIpOworI2VuZGlmCisKICAgICBQeV9ERUNSRUYoZGUpOwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9DT1BZSU5HIGIvTW9kdWxlcy9leHBhdC9DT1BZSU5HCmluZGV4IGZjOTdiMDIuLmRjYjQ1MDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvQ09QWUlORworKysgYi9Nb2R1bGVzL2V4cGF0L0NPUFlJTkcKQEAgLTEsNSArMSw2IEBACiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIENsYXJrIENvb3BlcgorQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEV4cGF0IG1haW50YWluZXJzLgogCiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9hbWlnYWNvbmZpZy5oIGIvTW9kdWxlcy9leHBhdC9hbWlnYWNvbmZpZy5oCmluZGV4IDY3ODFhNzEuLjg2YzYxMTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvYW1pZ2Fjb25maWcuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2FtaWdhY29uZmlnLmgKQEAgLTEwLDY2ICsxMCwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjaGVjay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0NIRUNLX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX0RMRkNOX0gKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwYWdlc2l6ZScgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9HRVRQQUdFU0laRQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX01FTU1PVkUgMQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX01FTU9SWV9ICi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBgbW1hcCcgc3lzdGVtIGNhbGwuICovCi0jdW5kZWYgSEFWRV9NTUFQCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NURElOVF9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKIAotLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJleHBhdC1idWdzQG1haWwubGliZXhwYXQub3JnIgotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfTkFNRSAiZXhwYXQiCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImV4cGF0IDEuOTUuOCIKLQotLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQotCi0vKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuOTUuOCIKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCi0jZGVmaW5lIFNURENfSEVBREVSUyAxCi0KIC8qIHdoZXRoZXIgYnl0ZW9yZGVyIGlzIGJpZ2VuZGlhbiAqLwogI2RlZmluZSBXT1JEU19CSUdFTkRJQU4KIApAQCAtODMsMTQgKzI5LDQgQEAKIC8qIERlZmluZSB0byBtYWtlIFhNTCBOYW1lc3BhY2VzIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLwogI2RlZmluZSBYTUxfTlMKIAotLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCi0jdW5kZWYgY29uc3QKLQotLyogRGVmaW5lIHRvIGBsb25nJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KLSN1bmRlZiBvZmZfdAotCi0vKiBEZWZpbmUgdG8gYHVuc2lnbmVkJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KLSN1bmRlZiBzaXplX3QKLQotCiAjZW5kaWYgIC8qIEFNSUdBQ09ORklHX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvYXNjaWkuaCBiL01vZHVsZXMvZXhwYXQvYXNjaWkuaAppbmRleCAzMzdlNWJiLi5kMTA1MzBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L2FzY2lpLmgKKysrIGIvTW9kdWxlcy9leHBhdC9hc2NpaS5oCkBAIC04MywzICs4MywxMCBAQAogI2RlZmluZSBBU0NJSV9MU1FCIDB4NUIKICNkZWZpbmUgQVNDSUlfUlNRQiAweDVECiAjZGVmaW5lIEFTQ0lJX1VOREVSU0NPUkUgMHg1RgorI2RlZmluZSBBU0NJSV9MUEFSRU4gMHgyOAorI2RlZmluZSBBU0NJSV9SUEFSRU4gMHgyOQorI2RlZmluZSBBU0NJSV9GRiAweDBDCisjZGVmaW5lIEFTQ0lJX1NMQVNIIDB4MkYKKyNkZWZpbmUgQVNDSUlfSEFTSCAweDIzCisjZGVmaW5lIEFTQ0lJX1BJUEUgMHg3QworI2RlZmluZSBBU0NJSV9DT01NQSAweDJDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2V4cGF0LmggYi9Nb2R1bGVzL2V4cGF0L2V4cGF0LmgKaW5kZXggODk2NDZkMi4uMDZiNWRlMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9leHBhdC5oCisrKyBiL01vZHVsZXMvZXhwYXQvZXhwYXQuaApAQCAtNzQyLDYgKzc0MiwyOSBAQAogWE1MUEFSU0VBUEkoaW50KQogWE1MX0dldElkQXR0cmlidXRlSW5kZXgoWE1MX1BhcnNlciBwYXJzZXIpOwogCisjaWZkZWYgWE1MX0FUVFJfSU5GTworLyogU291cmNlIGZpbGUgYnl0ZSBvZmZzZXRzIGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcy4KKyAgIFRoZSB2YWx1ZSBpbmRpY2VzIGFyZSBleGNsdXNpdmUgb2Ygc3Vycm91bmRpbmcgcXVvdGVzOyB0aHVzIGluIGEgVVRGLTggc291cmNlCisgICBmaWxlIGFuIGF0dHJpYnV0ZSB2YWx1ZSBvZiAiYmxhaCIgd2lsbCB5aWVsZDoKKyAgIGluZm8tPnZhbHVlRW5kIC0gaW5mby0+dmFsdWVTdGFydCA9IDQgYnl0ZXMuCisqLwordHlwZWRlZiBzdHJ1Y3QgeworICBYTUxfSW5kZXggIG5hbWVTdGFydDsgIC8qIE9mZnNldCB0byBiZWdpbm5pbmcgb2YgdGhlIGF0dHJpYnV0ZSBuYW1lLiAqLworICBYTUxfSW5kZXggIG5hbWVFbmQ7ICAgIC8qIE9mZnNldCBhZnRlciB0aGUgYXR0cmlidXRlIG5hbWUncyBsYXN0IGJ5dGUuICovCisgIFhNTF9JbmRleCAgdmFsdWVTdGFydDsgLyogT2Zmc2V0IHRvIGJlZ2lubmluZyBvZiB0aGUgYXR0cmlidXRlIHZhbHVlLiAqLworICBYTUxfSW5kZXggIHZhbHVlRW5kOyAgIC8qIE9mZnNldCBhZnRlciB0aGUgYXR0cmlidXRlIHZhbHVlJ3MgbGFzdCBieXRlLiAqLworfSBYTUxfQXR0ckluZm87CisKKy8qIFJldHVybnMgYW4gYXJyYXkgb2YgWE1MX0F0dHJJbmZvIHN0cnVjdHVyZXMgZm9yIHRoZSBhdHRyaWJ1dGUvdmFsdWUgcGFpcnMKKyAgIHBhc3NlZCBpbiBsYXN0IGNhbGwgdG8gdGhlIFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyIHRoYXQgd2VyZSBzcGVjaWZpZWQKKyAgIGluIHRoZSBzdGFydC10YWcgcmF0aGVyIHRoYW4gZGVmYXVsdGVkLiBFYWNoIGF0dHJpYnV0ZS92YWx1ZSBwYWlyIGNvdW50cworICAgYXMgMTsgdGh1cyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGFycmF5IGlzCisgICBYTUxfR2V0U3BlY2lmaWVkQXR0cmlidXRlQ291bnQocGFyc2VyKSAvIDIuCisqLworWE1MUEFSU0VBUEkoY29uc3QgWE1MX0F0dHJJbmZvICopCitYTUxfR2V0QXR0cmlidXRlSW5mbyhYTUxfUGFyc2VyIHBhcnNlcik7CisjZW5kaWYKKwogLyogUGFyc2VzIHNvbWUgaW5wdXQuIFJldHVybnMgWE1MX1NUQVRVU19FUlJPUiBpZiBhIGZhdGFsIGVycm9yIGlzCiAgICBkZXRlY3RlZC4gIFRoZSBsYXN0IGNhbGwgdG8gWE1MX1BhcnNlIG11c3QgaGF2ZSBpc0ZpbmFsIHRydWU7IGxlbgogICAgbWF5IGJlIHplcm8gZm9yIHRoaXMgY2FsbCAob3IgYW55IG90aGVyKS4KQEAgLTk5NCw3ICsxMDE3LDkgQEAKICAgWE1MX0ZFQVRVUkVfTUlOX1NJWkUsCiAgIFhNTF9GRUFUVVJFX1NJWkVPRl9YTUxfQ0hBUiwKICAgWE1MX0ZFQVRVUkVfU0laRU9GX1hNTF9MQ0hBUiwKLSAgWE1MX0ZFQVRVUkVfTlMKKyAgWE1MX0ZFQVRVUkVfTlMsCisgIFhNTF9GRUFUVVJFX0xBUkdFX1NJWkUsCisgIFhNTF9GRUFUVVJFX0FUVFJfSU5GTwogICAvKiBBZGRpdGlvbmFsIGZlYXR1cmVzIG11c3QgYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGlzIGVudW0uICovCiB9OwogCkBAIC0xMDE0LDcgKzEwMzksNyBAQAogICAgY2hhbmdlIHRvIG1ham9yIG9yIG1pbm9yIHZlcnNpb24uCiAqLwogI2RlZmluZSBYTUxfTUFKT1JfVkVSU0lPTiAyCi0jZGVmaW5lIFhNTF9NSU5PUl9WRVJTSU9OIDAKKyNkZWZpbmUgWE1MX01JTk9SX1ZFUlNJT04gMQogI2RlZmluZSBYTUxfTUlDUk9fVkVSU0lPTiAwCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oIGIvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oCmluZGV4IDNmMWMzNjMuLjJjMDMyODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvZXhwYXRfZXh0ZXJuYWwuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2V4cGF0X2V4dGVybmFsLmgKQEAgLTcsMTEgKzcsNyBAQAogCiAvKiBFeHRlcm5hbCBBUEkgZGVmaW5pdGlvbnMgKi8KIAotLyogTmFtZXNwYWNlIGV4dGVybmFsIHN5bWJvbHMgdG8gYWxsb3cgbXVsdGlwbGUgbGliZXhwYXQgdmVyc2lvbiB0bwotICAgY28tZXhpc3QuICovCi0jaW5jbHVkZSAicHlleHBhdG5zLmgiCi0KLSNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKKyNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19CRU9TX18pICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCiAjZGVmaW5lIFhNTF9VU0VfTVNDX0VYVEVOU0lPTlMgMQogI2VuZGlmCiAKQEAgLTM4LDkgKzM0LDkgQEAKICAgIHN5c3RlbSBoZWFkZXJzIG1heSBhc3N1bWUgdGhlIGNkZWNsIGNvbnZlbnRpb24uCiAqLwogI2lmbmRlZiBYTUxDQUxMCi0jaWYgZGVmaW5lZChYTUxfVVNFX01TQ19FWFRFTlNJT05TKQorI2lmIGRlZmluZWQoX01TQ19WRVIpCiAjZGVmaW5lIFhNTENBTEwgX19jZGVjbAotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODYpCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4NikgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKICNkZWZpbmUgWE1MQ0FMTCBfX2F0dHJpYnV0ZV9fKChjZGVjbCkpCiAjZWxzZQogLyogRm9yIGFueSBwbGF0Zm9ybSB3aGljaCB1c2VzIHRoaXMgZGVmaW5pdGlvbiBhbmQgc3VwcG9ydHMgbW9yZSB0aGFuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2ludGVybmFsLmggYi9Nb2R1bGVzL2V4cGF0L2ludGVybmFsLmgKaW5kZXggZmYwNTZjNi4uZGQ1NDU0OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9pbnRlcm5hbC5oCisrKyBiL01vZHVsZXMvZXhwYXQvaW50ZXJuYWwuaApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICAgYW5kIHRoZXJlZm9yZSBzdWJqZWN0IHRvIGNoYW5nZS4KICovCiAKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKQorI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogLyogV2UnbGwgdXNlIHRoaXMgdmVyc2lvbiBieSBkZWZhdWx0IG9ubHkgd2hlcmUgd2Uga25vdyBpdCBoZWxwcy4KIAogICAgcmVncGFybSgpIGdlbmVyYXRlcyB3YXJuaW5ncyBvbiBTb2xhcmlzIGJveGVzLiAgIFNlZSBTRiBidWcgIzY5Mjg3OC4KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvd2F0Y29tY29uZmlnLmggYi9Nb2R1bGVzL2V4cGF0L3dhdGNvbWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMDVlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2V4cGF0L3dhdGNvbWNvbmZpZy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qIGV4cGF0X2NvbmZpZy5oIGZvciB1c2Ugd2l0aCBPcGVuIFdhdGNvbSAxLjUgYW5kIGFib3ZlLiAgKi8KKworI2lmbmRlZiBXQVRDT01DT05GSUdfSAorI2RlZmluZSBXQVRDT01DT05GSUdfSAorCisjaWZkZWYgX19OVF9fCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2VuZGlmCisKKy8qIDEyMzQgPSBMSUxfRU5ESUFOLCA0MzIxID0gQklHRU5ESUFOICovCisjZGVmaW5lIEJZVEVPUkRFUiAxMjM0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uICovCisjZGVmaW5lIEhBVkVfTUVNTU9WRSAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKKworLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJleHBhdC1idWdzQG1haWwubGliZXhwYXQub3JnIgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiZXhwYXQiCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImV4cGF0IDIuMC4wIgorCisvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjdW5kZWYgUEFDS0FHRV9UQVJOQU1FCisKKy8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMi4wLjAiCisKKy8qIERlZmluZSB0byBzcGVjaWZ5IGhvdyBtdWNoIGNvbnRleHQgdG8gcmV0YWluIGFyb3VuZCB0aGUgY3VycmVudCBwYXJzZQorICAgcG9pbnQuICovCisjZGVmaW5lIFhNTF9DT05URVhUX0JZVEVTIDEwMjQKKworLyogRGVmaW5lIHRvIG1ha2UgcGFyYW1ldGVyIGVudGl0eSBwYXJzaW5nIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLworI2RlZmluZSBYTUxfRFREIDEKKworLyogRGVmaW5lIHRvIG1ha2UgWE1MIE5hbWVzcGFjZXMgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUuICovCisjZGVmaW5lIFhNTF9OUyAxCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHBhcnNlLmMgYi9Nb2R1bGVzL2V4cGF0L3htbHBhcnNlLmMKaW5kZXggNDZmNjUwNy4uZjM1YWEzNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1scGFyc2UuYwpAQCAtMiwyNCArMiwyNyBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKLSNkZWZpbmUgWE1MX0JVSUxESU5HX0VYUEFUIDEKLQotI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCi0jaW5jbHVkZSAid2luY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCi0jaW5jbHVkZSAibWFjY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2FvczRfXykKLSNpbmNsdWRlICJhbWlnYWNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChIQVZFX0VYUEFUX0NPTkZJR19IKQotI2luY2x1ZGUgPGV4cGF0X2NvbmZpZy5oPgotI2VuZGlmIC8qIG5kZWYgQ09NUElMRURfRlJPTV9EU1AgKi8KLQogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPiAgICAgICAgICAgICAgICAgICAgIC8qIG1lbXNldCgpLCBtZW1jcHkoKSAqLwogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPiAgICAgICAgICAgICAgICAgICAgIC8qIFVJTlRfTUFYICovCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgICAgICAgICAgLyogdGltZSgpICovCiAKKyNkZWZpbmUgWE1MX0JVSUxESU5HX0VYUEFUIDEKKworI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCisjaW5jbHVkZSAid2luY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCisjaW5jbHVkZSAibWFjY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQorI2luY2x1ZGUgImFtaWdhY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQorI2luY2x1ZGUgIndhdGNvbWNvbmZpZy5oIgorI2VsaWYgZGVmaW5lZChIQVZFX0VYUEFUX0NPTkZJR19IKQorI2luY2x1ZGUgPGV4cGF0X2NvbmZpZy5oPgorI2VuZGlmIC8qIG5kZWYgQ09NUElMRURfRlJPTV9EU1AgKi8KKworI2luY2x1ZGUgImFzY2lpLmgiCiAjaW5jbHVkZSAiZXhwYXQuaCIKIAogI2lmZGVmIFhNTF9VTklDT0RFCkBAIC0yOCw3ICszMSw4IEBACiAjZGVmaW5lIFhtbEdldEludGVybmFsRW5jb2RpbmcgWG1sR2V0VXRmMTZJbnRlcm5hbEVuY29kaW5nCiAjZGVmaW5lIFhtbEdldEludGVybmFsRW5jb2RpbmdOUyBYbWxHZXRVdGYxNkludGVybmFsRW5jb2RpbmdOUwogI2RlZmluZSBYbWxFbmNvZGUgWG1sVXRmMTZFbmNvZGUKLSNkZWZpbmUgTVVTVF9DT05WRVJUKGVuYywgcykgKCEoZW5jKS0+aXNVdGYxNiB8fCAoKCh1bnNpZ25lZCBsb25nKXMpICYgMSkpCisvKiBVc2luZyBwb2ludGVyIHN1YnRyYWN0aW9uIHRvIGNvbnZlcnQgdG8gaW50ZWdlciB0eXBlLiAqLworI2RlZmluZSBNVVNUX0NPTlZFUlQoZW5jLCBzKSAoIShlbmMpLT5pc1V0ZjE2IHx8ICgoKGNoYXIgKikocykgLSAoY2hhciAqKU5VTEwpICYgMSkpCiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IElDSEFSOwogI2Vsc2UKICNkZWZpbmUgWE1MX0VOQ09ERV9NQVggWE1MX1VURjhfRU5DT0RFX01BWApAQCAtMzI1LDE1ICszMjksMTUgQEAKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgogaW5pdGlhbGl6ZUVuY29kaW5nKFhNTF9QYXJzZXIgcGFyc2VyKTsKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgotZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnMsIAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBpbnQgdG9rLCBjb25zdCBjaGFyICpuZXh0LCBjb25zdCBjaGFyICoqbmV4dFB0ciwgCitkb1Byb2xvZyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcywKKyAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgaW50IHRvaywgY29uc3QgY2hhciAqbmV4dCwgY29uc3QgY2hhciAqKm5leHRQdHIsCiAgICAgICAgICBYTUxfQm9vbCBoYXZlTW9yZSk7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKLXByb2Nlc3NJbnRlcm5hbEVudGl0eShYTUxfUGFyc2VyIHBhcnNlciwgRU5USVRZICplbnRpdHksIAorcHJvY2Vzc0ludGVybmFsRW50aXR5KFhNTF9QYXJzZXIgcGFyc2VyLCBFTlRJVFkgKmVudGl0eSwKICAgICAgICAgICAgICAgICAgICAgICBYTUxfQm9vbCBiZXR3ZWVuRGVjbCk7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKIGRvQ29udGVudChYTUxfUGFyc2VyIHBhcnNlciwgaW50IHN0YXJ0VGFnTGV2ZWwsIGNvbnN0IEVOQ09ESU5HICplbmMsCi0gICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKmVuZFB0ciwgCisgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKmVuZFB0ciwKICAgICAgICAgICBYTUxfQm9vbCBoYXZlTW9yZSk7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKIGRvQ2RhdGFTZWN0aW9uKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORyAqLCBjb25zdCBjaGFyICoqc3RhcnRQdHIsCkBAIC0zNTEsNyArMzU1LDcgQEAKIGFkZEJpbmRpbmcoWE1MX1BhcnNlciBwYXJzZXIsIFBSRUZJWCAqcHJlZml4LCBjb25zdCBBVFRSSUJVVEVfSUQgKmF0dElkLAogICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqdXJpLCBCSU5ESU5HICoqYmluZGluZ3NQdHIpOwogc3RhdGljIGludAotZGVmaW5lQXR0cmlidXRlKEVMRU1FTlRfVFlQRSAqdHlwZSwgQVRUUklCVVRFX0lEICosIFhNTF9Cb29sIGlzQ2RhdGEsIAorZGVmaW5lQXR0cmlidXRlKEVMRU1FTlRfVFlQRSAqdHlwZSwgQVRUUklCVVRFX0lEICosIFhNTF9Cb29sIGlzQ2RhdGEsCiAgICAgICAgICAgICAgICAgWE1MX0Jvb2wgaXNJZCwgY29uc3QgWE1MX0NoYXIgKmRmbHRWYWx1ZSwgWE1MX1BhcnNlciBwYXJzZXIpOwogc3RhdGljIGVudW0gWE1MX0Vycm9yCiBzdG9yZUF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORyAqLCBYTUxfQm9vbCBpc0NkYXRhLApAQCAtNDM2LDYgKzQ0MCw3IEBACiAgICAgICAgICAgICAgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbWVtc3VpdGUsCiAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKm5hbWVTZXAsCiAgICAgICAgICAgICAgRFREICpkdGQpOworCiBzdGF0aWMgdm9pZAogcGFyc2VySW5pdChYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgWE1MX0NoYXIgKmVuY29kaW5nTmFtZSk7CiAKQEAgLTUzNSw2ICs1NDAsOSBAQAogICBOU19BVFQgKm1fbnNBdHRzOwogICB1bnNpZ25lZCBsb25nIG1fbnNBdHRzVmVyc2lvbjsKICAgdW5zaWduZWQgY2hhciBtX25zQXR0c1Bvd2VyOworI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgWE1MX0F0dHJJbmZvICptX2F0dEluZm87CisjZW5kaWYKICAgUE9TSVRJT04gbV9wb3NpdGlvbjsKICAgU1RSSU5HX1BPT0wgbV90ZW1wUG9vbDsKICAgU1RSSU5HX1BPT0wgbV90ZW1wMlBvb2w7CkBAIC02NDMsNiArNjUxLDcgQEAKICNkZWZpbmUgbnNBdHRzIChwYXJzZXItPm1fbnNBdHRzKQogI2RlZmluZSBuc0F0dHNWZXJzaW9uIChwYXJzZXItPm1fbnNBdHRzVmVyc2lvbikKICNkZWZpbmUgbnNBdHRzUG93ZXIgKHBhcnNlci0+bV9uc0F0dHNQb3dlcikKKyNkZWZpbmUgYXR0SW5mbyAocGFyc2VyLT5tX2F0dEluZm8pCiAjZGVmaW5lIHRlbXBQb29sIChwYXJzZXItPm1fdGVtcFBvb2wpCiAjZGVmaW5lIHRlbXAyUG9vbCAocGFyc2VyLT5tX3RlbXAyUG9vbCkKICNkZWZpbmUgZ3JvdXBDb25uZWN0b3IgKHBhcnNlci0+bV9ncm91cENvbm5lY3RvcikKQEAgLTY3MywxMCArNjgyLDEyIEBACiB9CiAKIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBpbXBsaWNpdENvbnRleHRbXSA9IHsKLSAgJ3gnLCAnbScsICdsJywgJz0nLCAnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAnLycsCi0gICd3JywgJ3cnLCAndycsICcuJywgJ3cnLCAnMycsICcuJywgJ28nLCAncicsICdnJywgJy8nLAotICAnWCcsICdNJywgJ0wnLCAnLycsICcxJywgJzknLCAnOScsICc4JywgJy8nLAotICAnbicsICdhJywgJ20nLCAnZScsICdzJywgJ3AnLCAnYScsICdjJywgJ2UnLCAnXDAnCisgIEFTQ0lJX3gsIEFTQ0lJX20sIEFTQ0lJX2wsIEFTQ0lJX0VRVUFMUywgQVNDSUlfaCwgQVNDSUlfdCwgQVNDSUlfdCwgQVNDSUlfcCwKKyAgQVNDSUlfQ09MT04sIEFTQ0lJX1NMQVNILCBBU0NJSV9TTEFTSCwgQVNDSUlfdywgQVNDSUlfdywgQVNDSUlfdywKKyAgQVNDSUlfUEVSSU9ELCBBU0NJSV93LCBBU0NJSV8zLCBBU0NJSV9QRVJJT0QsIEFTQ0lJX28sIEFTQ0lJX3IsIEFTQ0lJX2csCisgIEFTQ0lJX1NMQVNILCBBU0NJSV9YLCBBU0NJSV9NLCBBU0NJSV9MLCBBU0NJSV9TTEFTSCwgQVNDSUlfMSwgQVNDSUlfOSwKKyAgQVNDSUlfOSwgQVNDSUlfOCwgQVNDSUlfU0xBU0gsIEFTQ0lJX24sIEFTQ0lJX2EsIEFTQ0lJX20sIEFTQ0lJX2UsCisgIEFTQ0lJX3MsIEFTQ0lJX3AsIEFTQ0lJX2EsIEFTQ0lJX2MsIEFTQ0lJX2UsICdcMCcKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nCkBAIC02OTAsMjMgKzcwMSwyMiBAQAogc3RhdGljIFhNTF9Cb29sICAvKiBvbmx5IHZhbGlkIGZvciByb290IHBhcnNlciAqLwogc3RhcnRQYXJzaW5nKFhNTF9QYXJzZXIgcGFyc2VyKQogewotICAvKiBoYXNoIGZ1bmN0aW9ucyBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBzZXRDb250ZXh0KCkgaXMgY2FsbGVkICovCi0KLSAgaWYgKGhhc2hfc2VjcmV0X3NhbHQgPT0gMCkKLSAgICBoYXNoX3NlY3JldF9zYWx0ID0gZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdCgpOwotICBpZiAobnMpIHsKLSAgICAvKiBpbXBsaWNpdCBjb250ZXh0IG9ubHkgc2V0IGZvciByb290IHBhcnNlciwgc2luY2UgY2hpbGQKLSAgICAgICBwYXJzZXJzIChpLmUuIGV4dGVybmFsIGVudGl0eSBwYXJzZXJzKSB3aWxsIGluaGVyaXQgaXQKLSAgICAqLwotICAgIHJldHVybiBzZXRDb250ZXh0KHBhcnNlciwgaW1wbGljaXRDb250ZXh0KTsKLSAgfQotICByZXR1cm4gWE1MX1RSVUU7CisgICAgLyogaGFzaCBmdW5jdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2V0Q29udGV4dCgpIGlzIGNhbGxlZCAqLworICAgIGlmIChoYXNoX3NlY3JldF9zYWx0ID09IDApCisgICAgICBoYXNoX3NlY3JldF9zYWx0ID0gZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdCgpOworICAgIGlmIChucykgeworICAgICAgLyogaW1wbGljaXQgY29udGV4dCBvbmx5IHNldCBmb3Igcm9vdCBwYXJzZXIsIHNpbmNlIGNoaWxkCisgICAgICAgICBwYXJzZXJzIChpLmUuIGV4dGVybmFsIGVudGl0eSBwYXJzZXJzKSB3aWxsIGluaGVyaXQgaXQKKyAgICAgICovCisgICAgICByZXR1cm4gc2V0Q29udGV4dChwYXJzZXIsIGltcGxpY2l0Q29udGV4dCk7CisgICAgfQorICAgIHJldHVybiBYTUxfVFJVRTsKIH0KIAogWE1MX1BhcnNlciBYTUxDQUxMCiBYTUxfUGFyc2VyQ3JlYXRlX01NKGNvbnN0IFhNTF9DaGFyICplbmNvZGluZ05hbWUsCi0gICAgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbWVtc3VpdGUsCi0gICAgY29uc3QgWE1MX0NoYXIgKm5hbWVTZXApCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgKm1lbXN1aXRlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqbmFtZVNlcCkKIHsKICAgcmV0dXJuIHBhcnNlckNyZWF0ZShlbmNvZGluZ05hbWUsIG1lbXN1aXRlLCBuYW1lU2VwLCBOVUxMKTsKIH0KQEAgLTc1Myw5ICs3NjMsMjAgQEAKICAgICBGUkVFKHBhcnNlcik7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgIGF0dEluZm8gPSAoWE1MX0F0dHJJbmZvKilNQUxMT0MoYXR0c1NpemUgKiBzaXplb2YoWE1MX0F0dHJJbmZvKSk7CisgIGlmIChhdHRJbmZvID09IE5VTEwpIHsKKyAgICBGUkVFKGF0dHMpOworICAgIEZSRUUocGFyc2VyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorI2VuZGlmCiAgIGRhdGFCdWYgPSAoWE1MX0NoYXIgKilNQUxMT0MoSU5JVF9EQVRBX0JVRl9TSVpFICogc2l6ZW9mKFhNTF9DaGFyKSk7CiAgIGlmIChkYXRhQnVmID09IE5VTEwpIHsKICAgICBGUkVFKGF0dHMpOworI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgICBGUkVFKGF0dEluZm8pOworI2VuZGlmCiAgICAgRlJFRShwYXJzZXIpOwogICAgIHJldHVybiBOVUxMOwogICB9CkBAIC03NjgsNiArNzg5LDkgQEAKICAgICBpZiAoX2R0ZCA9PSBOVUxMKSB7CiAgICAgICBGUkVFKGRhdGFCdWYpOwogICAgICAgRlJFRShhdHRzKTsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgICBGUkVFKGF0dEluZm8pOworI2VuZGlmCiAgICAgICBGUkVFKHBhcnNlcik7CiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03ODMsNyArODA3LDcgQEAKICAgdW5rbm93bkVuY29kaW5nSGFuZGxlciA9IE5VTEw7CiAgIHVua25vd25FbmNvZGluZ0hhbmRsZXJEYXRhID0gTlVMTDsKIAotICBuYW1lc3BhY2VTZXBhcmF0b3IgPSAnISc7CisgIG5hbWVzcGFjZVNlcGFyYXRvciA9IEFTQ0lJX0VYQ0w7CiAgIG5zID0gWE1MX0ZBTFNFOwogICBuc190cmlwbGV0cyA9IFhNTF9GQUxTRTsKIApAQCAtMTE1NCw2ICsxMTc4LDkgQEAKICNlbmRpZiAvKiBYTUxfRFREICovCiAgICAgZHRkRGVzdHJveShfZHRkLCAoWE1MX0Jvb2wpIXBhcmVudFBhcnNlciwgJnBhcnNlci0+bV9tZW0pOwogICBGUkVFKCh2b2lkICopYXR0cyk7CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICBGUkVFKCh2b2lkICopYXR0SW5mbyk7CisjZW5kaWYKICAgRlJFRShncm91cENvbm5lY3Rvcik7CiAgIEZSRUUoYnVmZmVyKTsKICAgRlJFRShkYXRhQnVmKTsKQEAgLTEyMzQsNiArMTI2MSwxNCBAQAogICByZXR1cm4gaWRBdHRJbmRleDsKIH0KIAorI2lmZGVmIFhNTF9BVFRSX0lORk8KK2NvbnN0IFhNTF9BdHRySW5mbyAqIFhNTENBTEwKK1hNTF9HZXRBdHRyaWJ1dGVJbmZvKFhNTF9QYXJzZXIgcGFyc2VyKQoreworICByZXR1cm4gYXR0SW5mbzsKK30KKyNlbmRpZgorCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRFbGVtZW50SGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICBYTUxfU3RhcnRFbGVtZW50SGFuZGxlciBzdGFydCwKQEAgLTE0OTksNyArMTUzNCw3IEBACiAgICAgICAgIFhtbFVwZGF0ZVBvc2l0aW9uKGVuY29kaW5nLCBwb3NpdGlvblB0ciwgYnVmZmVyUHRyLCAmcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvblB0ciA9IGJ1ZmZlclB0cjsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfU1VTUEVOREVEOwotICAgICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6IAorICAgICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6CiAgICAgICBjYXNlIFhNTF9QQVJTSU5HOgogICAgICAgICBwc19wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KQEAgLTE1NTUsMTUgKzE1OTAsMTEgQEAKICAgICAgICAgICAgICAgICA6IChjaGFyICopUkVBTExPQyhidWZmZXIsIGxlbiAqIDIpKTsKICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkgewogICAgICAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyID0gdGVtcDsKLSAgICAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgICBlcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICAgIGV2ZW50UHRyID0gZXZlbnRFbmRQdHIgPSBOVUxMOwogICAgICAgICAgIHByb2Nlc3NvciA9IGVycm9yUHJvY2Vzc29yOwogICAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICAgICAgICB9CisgICAgICAgIGJ1ZmZlciA9IHRlbXA7CiAgICAgICAgIGJ1ZmZlckxpbSA9IGJ1ZmZlciArIGxlbiAqIDI7CiAgICAgICB9CiAgICAgICBtZW1jcHkoYnVmZmVyLCBlbmQsIG5MZWZ0T3Zlcik7CkBAIC0xNjI5LDcgKzE2NjAsNyBAQAogICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgIHJlc3VsdCA9IFhNTF9TVEFUVVNfU1VTUEVOREVEOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6IAorICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOgogICAgIGNhc2UgWE1MX1BBUlNJTkc6CiAgICAgICBpZiAoaXNGaW5hbCkgewogICAgICAgICBwc19wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwpAQCAtMTcxOSw2ICsxNzUwLDggQEAKICAgICAgIGJ1ZmZlclB0ciA9IGJ1ZmZlciA9IG5ld0J1ZjsKICNlbmRpZiAgLyogbm90IGRlZmluZWQgWE1MX0NPTlRFWFRfQllURVMgKi8KICAgICB9CisgICAgZXZlbnRQdHIgPSBldmVudEVuZFB0ciA9IE5VTEw7CisgICAgcG9zaXRpb25QdHIgPSBOVUxMOwogICB9CiAgIHJldHVybiBidWZmZXJFbmQ7CiB9CkBAIC0xNzc2LDcgKzE4MDksNyBAQAogICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgIHJlc3VsdCA9IFhNTF9TVEFUVVNfU1VTUEVOREVEOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6IAorICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOgogICAgIGNhc2UgWE1MX1BBUlNJTkc6CiAgICAgICBpZiAocHNfZmluYWxCdWZmZXIpIHsKICAgICAgICAgcHNfcGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKQEAgLTIwMDEsNiArMjAzNCwxMiBAQAogI2lmZGVmIFhNTF9OUwogICAgIHtYTUxfRkVBVFVSRV9OUywgICAgICAgICAgICAgICBYTUxfTCgiWE1MX05TIiksIDB9LAogI2VuZGlmCisjaWZkZWYgWE1MX0xBUkdFX1NJWkUKKyAgICB7WE1MX0ZFQVRVUkVfTEFSR0VfU0laRSwgICAgICAgWE1MX0woIlhNTF9MQVJHRV9TSVpFIiksIDB9LAorI2VuZGlmCisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIHtYTUxfRkVBVFVSRV9BVFRSX0lORk8sICAgICAgICBYTUxfTCgiWE1MX0FUVFJfSU5GTyIpLCAwfSwKKyNlbmRpZgogICAgIHtYTUxfRkVBVFVSRV9FTkQsICAgICAgICAgICAgICBOVUxMLCAwfQogICB9OwogCkBAIC0yMDYzLDcgKzIxMDIsNyBAQAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7Ci0gIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIDAsIGVuY29kaW5nLCBzdGFydCwgZW5kLCAKKyAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMCwgZW5jb2RpbmcsIHN0YXJ0LCBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7CiAgICAgaWYgKCFzdG9yZVJhd05hbWVzKHBhcnNlcikpCkBAIC0yMTQ1LDcgKzIxODQsNyBAQAogICAgICAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIHN3aXRjaCAocHNfcGFyc2luZykgewotICAgICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICAgKmVuZFB0ciA9IG5leHQ7CiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICAgIGNhc2UgWE1MX0ZJTklTSEVEOgpAQCAtMjE3OSw3ICsyMjE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZFB0cikKIHsKLSAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMSwgZW5jb2RpbmcsIHN0YXJ0LCBlbmQsIAorICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCAxLCBlbmNvZGluZywgc3RhcnQsIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFB0ciwgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CiAgIGlmIChyZXN1bHQgPT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICBpZiAoIXN0b3JlUmF3TmFtZXMocGFyc2VyKSkKQEAgLTIxOTgsNyArMjIzNyw3IEBACiAgICAgICAgICAgWE1MX0Jvb2wgaGF2ZU1vcmUpCiB7CiAgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCi0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7ICAKKyAgRFREICogY29uc3QgZHRkID0gX2R0ZDsKIAogICBjb25zdCBjaGFyICoqZXZlbnRQUDsKICAgY29uc3QgY2hhciAqKmV2ZW50RW5kUFA7CkBAIC0yMjI5LDggKzIyNjgsOCBAQAogICAgICAgfQogICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIGVuZCk7Ci0gICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yIAotICAgICAgICAgWE1MX1NVU1BFTkRFRCwgWE1MX0ZJTklTSEVEPyAKKyAgICAgIC8qIFdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBmaW5hbCBidWZmZXIsIHNob3VsZCB3ZSBjaGVjayBmb3IKKyAgICAgICAgIFhNTF9TVVNQRU5ERUQsIFhNTF9GSU5JU0hFRD8KICAgICAgICovCiAgICAgICBpZiAoc3RhcnRUYWdMZXZlbCA9PSAwKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX0VMRU1FTlRTOwpAQCAtMjU4MSw4ICsyNjIwLDggQEAKICAgICAgIH0KICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQogICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBlbmQpOwotICAgICAgLyogV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbmFsIGJ1ZmZlciwgc2hvdWxkIHdlIGNoZWNrIGZvciAKLSAgICAgICAgIFhNTF9TVVNQRU5ERUQsIFhNTF9GSU5JU0hFRD8gCisgICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yCisgICAgICAgICBYTUxfU1VTUEVOREVELCBYTUxfRklOSVNIRUQ/CiAgICAgICAqLwogICAgICAgaWYgKHN0YXJ0VGFnTGV2ZWwgPT0gMCkgewogICAgICAgICAqZXZlbnRQUCA9IGVuZDsKQEAgLTI1OTUsMjYgKzI2MzQsMjkgQEAKICAgICAgICpuZXh0UHRyID0gZW5kOwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgIGNhc2UgWE1MX1RPS19EQVRBX0NIQVJTOgotICAgICAgaWYgKGNoYXJhY3RlckRhdGFIYW5kbGVyKSB7Ci0gICAgICAgIGlmIChNVVNUX0NPTlZFUlQoZW5jLCBzKSkgewotICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopZGF0YUJ1ZjsKLSAgICAgICAgICAgIFhtbENvbnZlcnQoZW5jLCAmcywgbmV4dCwgJmRhdGFQdHIsIChJQ0hBUiAqKWRhdGFCdWZFbmQpOwotICAgICAgICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgZGF0YUJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGRhdGFQdHIgLSAoSUNIQVIgKilkYXRhQnVmKSk7Ci0gICAgICAgICAgICBpZiAocyA9PSBuZXh0KQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICpldmVudFBQID0gczsKKyAgICAgIHsKKyAgICAgICAgWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyIGNoYXJEYXRhSGFuZGxlciA9IGNoYXJhY3RlckRhdGFIYW5kbGVyOworICAgICAgICBpZiAoY2hhckRhdGFIYW5kbGVyKSB7CisgICAgICAgICAgaWYgKE1VU1RfQ09OVkVSVChlbmMsIHMpKSB7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopZGF0YUJ1ZjsKKyAgICAgICAgICAgICAgWG1sQ29udmVydChlbmMsICZzLCBuZXh0LCAmZGF0YVB0ciwgKElDSEFSICopZGF0YUJ1ZkVuZCk7CisgICAgICAgICAgICAgICpldmVudEVuZFBQID0gczsKKyAgICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShkYXRhUHRyIC0gKElDSEFSICopZGF0YUJ1ZikpOworICAgICAgICAgICAgICBpZiAocyA9PSBuZXh0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAqZXZlbnRQUCA9IHM7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYTUxfQ2hhciAqKXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKFhNTF9DaGFyICopbmV4dCAtIChYTUxfQ2hhciAqKXMpKTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWE1MX0NoYXIgKilzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKChYTUxfQ2hhciAqKW5leHQgLSAoWE1MX0NoYXIgKilzKSk7CisgICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgfQotICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCi0gICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfVE9LX1BJOgogICAgICAgaWYgKCFyZXBvcnRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ocGFyc2VyLCBlbmMsIHMsIG5leHQpKQpAQCAtMjYzMSw3ICsyNjczLDcgQEAKICAgICB9CiAgICAgKmV2ZW50UFAgPSBzID0gbmV4dDsKICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6IAorICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICpuZXh0UHRyID0gbmV4dDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTI2OTAsMjMgKzI3MzIsNDQgQEAKICAgaWYgKG4gKyBuRGVmYXVsdEF0dHMgPiBhdHRzU2l6ZSkgewogICAgIGludCBvbGRBdHRzU2l6ZSA9IGF0dHNTaXplOwogICAgIEFUVFJJQlVURSAqdGVtcDsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgWE1MX0F0dHJJbmZvICp0ZW1wMjsKKyNlbmRpZgogICAgIGF0dHNTaXplID0gbiArIG5EZWZhdWx0QXR0cyArIElOSVRfQVRUU19TSVpFOwogICAgIHRlbXAgPSAoQVRUUklCVVRFICopUkVBTExPQygodm9pZCAqKWF0dHMsIGF0dHNTaXplICogc2l6ZW9mKEFUVFJJQlVURSkpOwogICAgIGlmICh0ZW1wID09IE5VTEwpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICBhdHRzID0gdGVtcDsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgdGVtcDIgPSAoWE1MX0F0dHJJbmZvICopUkVBTExPQygodm9pZCAqKWF0dEluZm8sIGF0dHNTaXplICogc2l6ZW9mKFhNTF9BdHRySW5mbykpOworICAgIGlmICh0ZW1wMiA9PSBOVUxMKQorICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgYXR0SW5mbyA9IHRlbXAyOworI2VuZGlmCiAgICAgaWYgKG4gPiBvbGRBdHRzU2l6ZSkKICAgICAgIFhtbEdldEF0dHJpYnV0ZXMoZW5jLCBhdHRTdHIsIG4sIGF0dHMpOwogICB9CiAKICAgYXBwQXR0cyA9IChjb25zdCBYTUxfQ2hhciAqKilhdHRzOwogICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgQVRUUklCVVRFICpjdXJyQXR0ID0gJmF0dHNbaV07CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIFhNTF9BdHRySW5mbyAqY3VyckF0dEluZm8gPSAmYXR0SW5mb1tpXTsKKyNlbmRpZgogICAgIC8qIGFkZCB0aGUgbmFtZSBhbmQgdmFsdWUgdG8gdGhlIGF0dHJpYnV0ZSBsaXN0ICovCi0gICAgQVRUUklCVVRFX0lEICphdHRJZCA9IGdldEF0dHJpYnV0ZUlkKHBhcnNlciwgZW5jLCBhdHRzW2ldLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHNbaV0ubmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhtbE5hbWVMZW5ndGgoZW5jLCBhdHRzW2ldLm5hbWUpKTsKKyAgICBBVFRSSUJVVEVfSUQgKmF0dElkID0gZ2V0QXR0cmlidXRlSWQocGFyc2VyLCBlbmMsIGN1cnJBdHQtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBdHQtPm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBYbWxOYW1lTGVuZ3RoKGVuYywgY3VyckF0dC0+bmFtZSkpOwogICAgIGlmICghYXR0SWQpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgY3VyckF0dEluZm8tPm5hbWVTdGFydCA9IHBhcnNlRW5kQnl0ZUluZGV4IC0gKHBhcnNlRW5kUHRyIC0gY3VyckF0dC0+bmFtZSk7CisgICAgY3VyckF0dEluZm8tPm5hbWVFbmQgPSBjdXJyQXR0SW5mby0+bmFtZVN0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFhtbE5hbWVMZW5ndGgoZW5jLCBjdXJyQXR0LT5uYW1lKTsKKyAgICBjdXJyQXR0SW5mby0+dmFsdWVTdGFydCA9IHBhcnNlRW5kQnl0ZUluZGV4IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZVB0cik7CisgICAgY3VyckF0dEluZm8tPnZhbHVlRW5kID0gcGFyc2VFbmRCeXRlSW5kZXggLSAocGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZUVuZCk7CisjZW5kaWYKICAgICAvKiBEZXRlY3QgZHVwbGljYXRlIGF0dHJpYnV0ZXMgYnkgdGhlaXIgUU5hbWVzLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbgogICAgICAgIG5hbWVzcGFjZSBwcm9jZXNzaW5nIGlzIHR1cm5lZCBvbiBhbmQgZGlmZmVyZW50IHByZWZpeGVzIGZvciB0aGUgc2FtZQogICAgICAgIG5hbWVzcGFjZSBhcmUgdXNlZC4gRm9yIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2hlY2sgZnVydGhlciBkb3duLgpAQCAtMjg0OCw4ICsyOTExLDYgQEAKICAgICAgICAgdW5zaWduZWQgbG9uZyB1cmlIYXNoID0gaGFzaF9zZWNyZXRfc2FsdDsKICAgICAgICAgKChYTUxfQ2hhciAqKXMpWy0xXSA9IDA7ICAvKiBjbGVhciBmbGFnICovCiAgICAgICAgIGlkID0gKEFUVFJJQlVURV9JRCAqKWxvb2t1cChwYXJzZXIsICZkdGQtPmF0dHJpYnV0ZUlkcywgcywgMCk7Ci0gICAgICAgIGlmICghaWQpCi0gICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgIGIgPSBpZC0+cHJlZml4LT5iaW5kaW5nOwogICAgICAgICBpZiAoIWIpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkJPVU5EX1BSRUZJWDsKQEAgLTI4NjEsNyArMjkyMiw3IEBACiAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICB1cmlIYXNoID0gQ0hBUl9IQVNIKHVyaUhhc2gsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHdoaWxlICgqcysrICE9IFhNTF9UKCc6JykpCisgICAgICAgIHdoaWxlICgqcysrICE9IFhNTF9UKEFTQ0lJX0NPTE9OKSkKICAgICAgICAgICA7CiAgICAgICAgIGRvIHsgIC8qIGNvcGllcyBudWxsIHRlcm1pbmF0b3IgKi8KICAgICAgICAgICBjb25zdCBYTUxfQ2hhciBjID0gKnM7CkBAIC0yOTM1LDcgKzI5OTYsNyBAQAogICAgIGlmICghYmluZGluZykKICAgICAgIHJldHVybiBYTUxfRVJST1JfVU5CT1VORF9QUkVGSVg7CiAgICAgbG9jYWxQYXJ0ID0gdGFnTmFtZVB0ci0+c3RyOwotICAgIHdoaWxlICgqbG9jYWxQYXJ0KysgIT0gWE1MX1QoJzonKSkKKyAgICB3aGlsZSAoKmxvY2FsUGFydCsrICE9IFhNTF9UKEFTQ0lJX0NPTE9OKSkKICAgICAgIDsKICAgfQogICBlbHNlIGlmIChkdGQtPmRlZmF1bHRQcmVmaXguYmluZGluZykgewpAQCAtMjk5MCwyNSArMzA1MSwyOSBAQAogICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqdXJpLCBCSU5ESU5HICoqYmluZGluZ3NQdHIpCiB7CiAgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciB4bWxOYW1lc3BhY2VbXSA9IHsKLSAgICAnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAnLycsCi0gICAgJ3cnLCAndycsICd3JywgJy4nLCAndycsICczJywgJy4nLCAnbycsICdyJywgJ2cnLCAnLycsCi0gICAgJ1gnLCAnTScsICdMJywgJy8nLCAnMScsICc5JywgJzknLCAnOCcsICcvJywKLSAgICAnbicsICdhJywgJ20nLCAnZScsICdzJywgJ3AnLCAnYScsICdjJywgJ2UnLCAnXDAnCisgICAgQVNDSUlfaCwgQVNDSUlfdCwgQVNDSUlfdCwgQVNDSUlfcCwgQVNDSUlfQ09MT04sIEFTQ0lJX1NMQVNILCBBU0NJSV9TTEFTSCwKKyAgICBBU0NJSV93LCBBU0NJSV93LCBBU0NJSV93LCBBU0NJSV9QRVJJT0QsIEFTQ0lJX3csIEFTQ0lJXzMsIEFTQ0lJX1BFUklPRCwKKyAgICBBU0NJSV9vLCBBU0NJSV9yLCBBU0NJSV9nLCBBU0NJSV9TTEFTSCwgQVNDSUlfWCwgQVNDSUlfTSwgQVNDSUlfTCwKKyAgICBBU0NJSV9TTEFTSCwgQVNDSUlfMSwgQVNDSUlfOSwgQVNDSUlfOSwgQVNDSUlfOCwgQVNDSUlfU0xBU0gsCisgICAgQVNDSUlfbiwgQVNDSUlfYSwgQVNDSUlfbSwgQVNDSUlfZSwgQVNDSUlfcywgQVNDSUlfcCwgQVNDSUlfYSwgQVNDSUlfYywKKyAgICBBU0NJSV9lLCAnXDAnCiAgIH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgeG1sTGVuID0gCisgIHN0YXRpYyBjb25zdCBpbnQgeG1sTGVuID0KICAgICAoaW50KXNpemVvZih4bWxOYW1lc3BhY2UpL3NpemVvZihYTUxfQ2hhcikgLSAxOwogICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgeG1sbnNOYW1lc3BhY2VbXSA9IHsKLSAgICAnaCcsICd0JywgJ3QnLCAncCcsICc6JywgJy8nLCAnLycsCi0gICAgJ3cnLCAndycsICd3JywgJy4nLCAndycsICczJywgJy4nLCAnbycsICdyJywgJ2cnLCAnLycsCi0gICAgJzInLCAnMCcsICcwJywgJzAnLCAnLycsICd4JywgJ20nLCAnbCcsICduJywgJ3MnLCAnLycsICdcMCcKKyAgICBBU0NJSV9oLCBBU0NJSV90LCBBU0NJSV90LCBBU0NJSV9wLCBBU0NJSV9DT0xPTiwgQVNDSUlfU0xBU0gsIEFTQ0lJX1NMQVNILAorICAgIEFTQ0lJX3csIEFTQ0lJX3csIEFTQ0lJX3csIEFTQ0lJX1BFUklPRCwgQVNDSUlfdywgQVNDSUlfMywgQVNDSUlfUEVSSU9ELAorICAgIEFTQ0lJX28sIEFTQ0lJX3IsIEFTQ0lJX2csIEFTQ0lJX1NMQVNILCBBU0NJSV8yLCBBU0NJSV8wLCBBU0NJSV8wLAorICAgIEFTQ0lJXzAsIEFTQ0lJX1NMQVNILCBBU0NJSV94LCBBU0NJSV9tLCBBU0NJSV9sLCBBU0NJSV9uLCBBU0NJSV9zLAorICAgIEFTQ0lJX1NMQVNILCAnXDAnCiAgIH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgeG1sbnNMZW4gPSAKKyAgc3RhdGljIGNvbnN0IGludCB4bWxuc0xlbiA9CiAgICAgKGludClzaXplb2YoeG1sbnNOYW1lc3BhY2UpL3NpemVvZihYTUxfQ2hhcikgLSAxOwogCiAgIFhNTF9Cb29sIG11c3RCZVhNTCA9IFhNTF9GQUxTRTsKICAgWE1MX0Jvb2wgaXNYTUwgPSBYTUxfVFJVRTsKICAgWE1MX0Jvb2wgaXNYTUxOUyA9IFhNTF9UUlVFOwotICAKKwogICBCSU5ESU5HICpiOwogICBpbnQgbGVuOwogCkBAIC0zMDE3LDEzICszMDgyLDEzIEBACiAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkRFQ0xBUklOR19QUkVGSVg7CiAKICAgaWYgKHByZWZpeC0+bmFtZQotICAgICAgJiYgcHJlZml4LT5uYW1lWzBdID09IFhNTF9UKCd4JykKLSAgICAgICYmIHByZWZpeC0+bmFtZVsxXSA9PSBYTUxfVCgnbScpCi0gICAgICAmJiBwcmVmaXgtPm5hbWVbMl0gPT0gWE1MX1QoJ2wnKSkgeworICAgICAgJiYgcHJlZml4LT5uYW1lWzBdID09IFhNTF9UKEFTQ0lJX3gpCisgICAgICAmJiBwcmVmaXgtPm5hbWVbMV0gPT0gWE1MX1QoQVNDSUlfbSkKKyAgICAgICYmIHByZWZpeC0+bmFtZVsyXSA9PSBYTUxfVChBU0NJSV9sKSkgewogCiAgICAgLyogTm90IGFsbG93ZWQgdG8gYmluZCB4bWxucyAqLwotICAgIGlmIChwcmVmaXgtPm5hbWVbM10gPT0gWE1MX1QoJ24nKQotICAgICAgICAmJiBwcmVmaXgtPm5hbWVbNF0gPT0gWE1MX1QoJ3MnKQorICAgIGlmIChwcmVmaXgtPm5hbWVbM10gPT0gWE1MX1QoQVNDSUlfbikKKyAgICAgICAgJiYgcHJlZml4LT5uYW1lWzRdID09IFhNTF9UKEFTQ0lJX3MpCiAgICAgICAgICYmIHByZWZpeC0+bmFtZVs1XSA9PSBYTUxfVCgnXDAnKSkKICAgICAgIHJldHVybiBYTUxfRVJST1JfUkVTRVJWRURfUFJFRklYX1hNTE5TOwogCkBAIC0zMDM1LDcgKzMxMDAsNyBAQAogICAgIGlmIChpc1hNTCAmJiAobGVuID4geG1sTGVuIHx8IHVyaVtsZW5dICE9IHhtbE5hbWVzcGFjZVtsZW5dKSkKICAgICAgIGlzWE1MID0gWE1MX0ZBTFNFOwogCi0gICAgaWYgKCFtdXN0QmVYTUwgJiYgaXNYTUxOUyAKKyAgICBpZiAoIW11c3RCZVhNTCAmJiBpc1hNTE5TCiAgICAgICAgICYmIChsZW4gPiB4bWxuc0xlbiB8fCB1cmlbbGVuXSAhPSB4bWxuc05hbWVzcGFjZVtsZW5dKSkKICAgICAgIGlzWE1MTlMgPSBYTUxfRkFMU0U7CiAgIH0KQEAgLTMxNzcsMjYgKzMyNDIsMjkgQEAKICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9UT0tfREFUQV9DSEFSUzoKLSAgICAgIGlmIChjaGFyYWN0ZXJEYXRhSGFuZGxlcikgewotICAgICAgICBpZiAoTVVTVF9DT05WRVJUKGVuYywgcykpIHsKLSAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKWRhdGFCdWY7Ci0gICAgICAgICAgICBYbWxDb252ZXJ0KGVuYywgJnMsIG5leHQsICZkYXRhUHRyLCAoSUNIQVIgKilkYXRhQnVmRW5kKTsKLSAgICAgICAgICAgICpldmVudEVuZFBQID0gbmV4dDsKLSAgICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShkYXRhUHRyIC0gKElDSEFSICopZGF0YUJ1ZikpOwotICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqZXZlbnRQUCA9IHM7CisgICAgICB7CisgICAgICAgIFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlciBjaGFyRGF0YUhhbmRsZXIgPSBjaGFyYWN0ZXJEYXRhSGFuZGxlcjsKKyAgICAgICAgaWYgKGNoYXJEYXRhSGFuZGxlcikgeworICAgICAgICAgIGlmIChNVVNUX0NPTlZFUlQoZW5jLCBzKSkgeworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKWRhdGFCdWY7CisgICAgICAgICAgICAgIFhtbENvbnZlcnQoZW5jLCAmcywgbmV4dCwgJmRhdGFQdHIsIChJQ0hBUiAqKWRhdGFCdWZFbmQpOworICAgICAgICAgICAgICAqZXZlbnRFbmRQUCA9IG5leHQ7CisgICAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKKyAgICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgKmV2ZW50UFAgPSBzOworICAgICAgICAgICAgfQogICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBjaGFyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWE1MX0NoYXIgKilzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKChYTUxfQ2hhciAqKW5leHQgLSAoWE1MX0NoYXIgKilzKSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFhNTF9DaGFyICopcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoWE1MX0NoYXIgKiluZXh0IC0gKFhNTF9DaGFyICopcykpOworICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQotICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19JTlZBTElEOgogICAgICAgKmV2ZW50UFAgPSBuZXh0OwpAQCAtMzI0Myw3ICszMzExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZW5kUHRyKQogewotICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0lnbm9yZVNlY3Rpb24ocGFyc2VyLCBlbmNvZGluZywgJnN0YXJ0LCBlbmQsIAorICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0lnbm9yZVNlY3Rpb24ocGFyc2VyLCBlbmNvZGluZywgJnN0YXJ0LCBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNTI1LDcgKzM1OTMsNyBAQAogICBjb25zdCBjaGFyICpuZXh0ID0gc3RhcnQ7CiAgIGV2ZW50UHRyID0gc3RhcnQ7CiAKLSAgZm9yICg7OykgeyAgCisgIGZvciAoOzspIHsKICAgICB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHN0YXJ0LCBlbmQsICZuZXh0KTsKICAgICBldmVudEVuZFB0ciA9IG5leHQ7CiAgICAgaWYgKHRvayA8PSAwKSB7CkBAIC0zNTUzLDcgKzM2MjEsNyBAQAogICAgICAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIHN3aXRjaCAocHNfcGFyc2luZykgewotICAgICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICAgKm5leHRQdHIgPSBuZXh0OwogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTM2MTgsNyArMzY4Niw3IEBACiAgIH0KIAogICBwcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7Ci0gIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgCisgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwKICAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogfQogCkBAIC0zNjY4LDcgKzM3MzYsNyBAQAogewogICBjb25zdCBjaGFyICpuZXh0ID0gczsKICAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhlbmNvZGluZywgcywgZW5kLCAmbmV4dCk7Ci0gIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgCisgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwKICAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogfQogCkBAIC0zNjgzLDI2ICszNzUxLDMwIEBACiAgICAgICAgICBYTUxfQm9vbCBoYXZlTW9yZSkKIHsKICNpZmRlZiBYTUxfRFRECi0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBleHRlcm5hbFN1YnNldE5hbWVbXSA9IHsgJyMnICwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZXh0ZXJuYWxTdWJzZXROYW1lW10gPSB7IEFTQ0lJX0hBU0ggLCAnXDAnIH07CiAjZW5kaWYgLyogWE1MX0RURCAqLwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVDREFUQVtdID0geyAnQycsICdEJywgJ0EnLCAnVCcsICdBJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFtdID0geyAnSScsICdEJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRltdID0geyAnSScsICdEJywgJ1InLCAnRScsICdGJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRlNbXSA9IHsgJ0knLCAnRCcsICdSJywgJ0UnLCAnRicsICdTJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVFTlRJVFlbXSA9IHsgJ0UnLCAnTicsICdUJywgJ0knLCAnVCcsICdZJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVFTlRJVElFU1tdID0KLSAgICAgIHsgJ0UnLCAnTicsICdUJywgJ0knLCAnVCcsICdJJywgJ0UnLCAnUycsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlQ0RBVEFbXSA9CisgICAgICB7IEFTQ0lJX0MsIEFTQ0lJX0QsIEFTQ0lJX0EsIEFTQ0lJX1QsIEFTQ0lJX0EsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURbXSA9IHsgQVNDSUlfSSwgQVNDSUlfRCwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRltdID0KKyAgICAgIHsgQVNDSUlfSSwgQVNDSUlfRCwgQVNDSUlfUiwgQVNDSUlfRSwgQVNDSUlfRiwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVJRFJFRlNbXSA9CisgICAgICB7IEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsIEFTQ0lJX1MsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlRU5USVRZW10gPQorICAgICAgeyBBU0NJSV9FLCBBU0NJSV9OLCBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9ULCBBU0NJSV9ZLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZUVOVElUSUVTW10gPSB7IEFTQ0lJX0UsIEFTQ0lJX04sCisgICAgICBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9FLCBBU0NJSV9TLCAnXDAnIH07CiAgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZU5NVE9LRU5bXSA9IHsKLSAgICAgICdOJywgJ00nLCAnVCcsICdPJywgJ0snLCAnRScsICdOJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVOTVRPS0VOU1tdID0gewotICAgICAgJ04nLCAnTScsICdUJywgJ08nLCAnSycsICdFJywgJ04nLCAnUycsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIG5vdGF0aW9uUHJlZml4W10gPSB7Ci0gICAgICAnTicsICdPJywgJ1QnLCAnQScsICdUJywgJ0knLCAnTycsICdOJywgJygnLCAnXDAnIH07Ci0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTZXBbXSA9IHsgJ3wnLCAnXDAnIH07Ci0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTdGFydFtdID0geyAnKCcsICdcMCcgfTsKKyAgICAgIEFTQ0lJX04sIEFTQ0lJX00sIEFTQ0lJX1QsIEFTQ0lJX08sIEFTQ0lJX0ssIEFTQ0lJX0UsIEFTQ0lJX04sICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlTk1UT0tFTlNbXSA9IHsgQVNDSUlfTiwgQVNDSUlfTSwgQVNDSUlfVCwKKyAgICAgIEFTQ0lJX08sIEFTQ0lJX0ssIEFTQ0lJX0UsIEFTQ0lJX04sIEFTQ0lJX1MsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIG5vdGF0aW9uUHJlZml4W10gPSB7IEFTQ0lJX04sIEFTQ0lJX08sIEFTQ0lJX1QsCisgICAgICBBU0NJSV9BLCBBU0NJSV9ULCBBU0NJSV9JLCBBU0NJSV9PLCBBU0NJSV9OLCBBU0NJSV9MUEFSRU4sICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGVudW1WYWx1ZVNlcFtdID0geyBBU0NJSV9QSVBFLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTdGFydFtdID0geyBBU0NJSV9MUEFSRU4sICdcMCcgfTsKIAogICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLwotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAKKyAgRFREICogY29uc3QgZHRkID0gX2R0ZDsKIAogICBjb25zdCBjaGFyICoqZXZlbnRQUDsKICAgY29uc3QgY2hhciAqKmV2ZW50RW5kUFA7CkBAIC0zODE4LDE1ICszODkwLDE3IEBACiAjZW5kaWYgLyogWE1MX0RURCAqLwogICAgICAgZHRkLT5oYXNQYXJhbUVudGl0eVJlZnMgPSBYTUxfVFJVRTsKICAgICAgIGlmIChzdGFydERvY3R5cGVEZWNsSGFuZGxlcikgeworICAgICAgICBYTUxfQ2hhciAqcHViSWQ7CiAgICAgICAgIGlmICghWG1sSXNQdWJsaWNJZChlbmMsIHMsIG5leHQsIGV2ZW50UFApKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfUFVCTElDSUQ7Ci0gICAgICAgIGRvY3R5cGVQdWJpZCA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKyBlbmMtPm1pbkJ5dGVzUGVyQ2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhcik7Ci0gICAgICAgIGlmICghZG9jdHlwZVB1YmlkKQorICAgICAgICBwdWJJZCA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIpOworICAgICAgICBpZiAoIXB1YklkKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICBub3JtYWxpemVQdWJsaWNJZCgoWE1MX0NoYXIgKilkb2N0eXBlUHViaWQpOworICAgICAgICBub3JtYWxpemVQdWJsaWNJZChwdWJJZCk7CiAgICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKKyAgICAgICAgZG9jdHlwZVB1YmlkID0gcHViSWQ7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgIGdvdG8gYWxyZWFkeUNoZWNrZWQ7CiAgICAgICB9CkBAIC0zODgxLDggKzM5NTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+cHVibGljSWQpKQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FWFRFUk5BTF9FTlRJVFlfSEFORExJTkc7CiAgICAgICAgICAgaWYgKGR0ZC0+cGFyYW1FbnRpdHlSZWFkKSB7Ci0gICAgICAgICAgICBpZiAoIWR0ZC0+c3RhbmRhbG9uZSAmJiAKLSAgICAgICAgICAgICAgICBub3RTdGFuZGFsb25lSGFuZGxlciAmJiAKKyAgICAgICAgICAgIGlmICghZHRkLT5zdGFuZGFsb25lICYmCisgICAgICAgICAgICAgICAgbm90U3RhbmRhbG9uZUhhbmRsZXIgJiYKICAgICAgICAgICAgICAgICAhbm90U3RhbmRhbG9uZUhhbmRsZXIoaGFuZGxlckFyZykpCiAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9UX1NUQU5EQUxPTkU7CiAgICAgICAgICAgfQpAQCAtNDAxMCwxMSArNDA4NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwYXJzZXIpKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBpZiAoYXR0bGlzdERlY2xIYW5kbGVyICYmIGRlY2xBdHRyaWJ1dGVUeXBlKSB7Ci0gICAgICAgICAgaWYgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVCgnKCcpCi0gICAgICAgICAgICAgIHx8ICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoJ04nKQotICAgICAgICAgICAgICAgICAgJiYgZGVjbEF0dHJpYnV0ZVR5cGVbMV0gPT0gWE1MX1QoJ08nKSkpIHsKKyAgICAgICAgICBpZiAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX0xQQVJFTikKKyAgICAgICAgICAgICAgfHwgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9OKQorICAgICAgICAgICAgICAgICAgJiYgZGVjbEF0dHJpYnV0ZVR5cGVbMV0gPT0gWE1MX1QoQVNDSUlfTykpKSB7CiAgICAgICAgICAgICAvKiBFbnVtZXJhdGVkIG9yIE5vdGF0aW9uIHR5cGUgKi8KLSAgICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVCgnKScpKQorICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX1JQQVJFTikpCiAgICAgICAgICAgICAgICAgfHwgIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJ1wwJykpKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICAgIGRlY2xBdHRyaWJ1dGVUeXBlID0gdGVtcFBvb2wuc3RhcnQ7CkBAIC00MDQ3LDExICs0MTIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xBdHRyaWJ1dGVJc0NkYXRhLCBYTUxfRkFMU0UsIGF0dFZhbCwgcGFyc2VyKSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgaWYgKGF0dGxpc3REZWNsSGFuZGxlciAmJiBkZWNsQXR0cmlidXRlVHlwZSkgewotICAgICAgICAgIGlmICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoJygnKQotICAgICAgICAgICAgICB8fCAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKCdOJykKLSAgICAgICAgICAgICAgICAgICYmIGRlY2xBdHRyaWJ1dGVUeXBlWzFdID09IFhNTF9UKCdPJykpKSB7CisgICAgICAgICAgaWYgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9MUEFSRU4pCisgICAgICAgICAgICAgIHx8ICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoQVNDSUlfTikKKyAgICAgICAgICAgICAgICAgICYmIGRlY2xBdHRyaWJ1dGVUeXBlWzFdID09IFhNTF9UKEFTQ0lJX08pKSkgewogICAgICAgICAgICAgLyogRW51bWVyYXRlZCBvciBOb3RhdGlvbiB0eXBlICovCi0gICAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJyknKSkKKyAgICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVChBU0NJSV9SUEFSRU4pKQogICAgICAgICAgICAgICAgIHx8ICFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKICAgICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IHRlbXBQb29sLnN0YXJ0OwpAQCAtNDMyMSw3ICs0Mzk1LDcgQEAKICAgICAgIHN3aXRjaCAodG9rKSB7CiAgICAgICBjYXNlIFhNTF9UT0tfUEFSQU1fRU5USVRZX1JFRjoKICAgICAgICAgLyogUEUgcmVmZXJlbmNlcyBpbiBpbnRlcm5hbCBzdWJzZXQgYXJlCi0gICAgICAgICAgIG5vdCBhbGxvd2VkIHdpdGhpbiBkZWNsYXJhdGlvbnMuICovICAKKyAgICAgICAgICAgbm90IGFsbG93ZWQgd2l0aGluIGRlY2xhcmF0aW9ucy4gKi8KICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9QQVJBTV9FTlRJVFlfUkVGOwogICAgICAgY2FzZSBYTUxfVE9LX1hNTF9ERUNMOgogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX01JU1BMQUNFRF9YTUxfUEk7CkBAIC00Mzc5LDE0ICs0NDUzLDE0IEBACiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0dST1VQX1NFUVVFTkNFOgotICAgICAgaWYgKGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9PSAnfCcpCisgICAgICBpZiAoZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID09IEFTQ0lJX1BJUEUpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfU1lOVEFYOwotICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gJywnOworICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gQVNDSUlfQ09NTUE7CiAgICAgICBpZiAoZHRkLT5pbl9lbGRlY2wgJiYgZWxlbWVudERlY2xIYW5kbGVyKQogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9HUk9VUF9DSE9JQ0U6Ci0gICAgICBpZiAoZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID09ICcsJykKKyAgICAgIGlmIChncm91cENvbm5lY3Rvcltwcm9sb2dTdGF0ZS5sZXZlbF0gPT0gQVNDSUlfQ09NTUEpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfU1lOVEFYOwogICAgICAgaWYgKGR0ZC0+aW5fZWxkZWNsCiAgICAgICAgICAgJiYgIWdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXQpAQCAtNDM5OCw3ICs0NDcyLDcgQEAKICAgICAgICAgaWYgKGVsZW1lbnREZWNsSGFuZGxlcikKICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQotICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gJ3wnOworICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gQVNDSUlfUElQRTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfUEFSQU1fRU5USVRZX1JFRjoKICNpZmRlZiBYTUxfRFRECkBAIC00NDQyLDcgKzQ1MTYsNyBAQAogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfUkVDVVJTSVZFX0VOVElUWV9SRUY7CiAgICAgICAgIGlmIChlbnRpdHktPnRleHRQdHIpIHsKICAgICAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7Ci0gICAgICAgICAgWE1MX0Jvb2wgYmV0d2VlbkRlY2wgPSAKKyAgICAgICAgICBYTUxfQm9vbCBiZXR3ZWVuRGVjbCA9CiAgICAgICAgICAgICAocm9sZSA9PSBYTUxfUk9MRV9QQVJBTV9FTlRJVFlfUkVGID8gWE1MX1RSVUUgOiBYTUxfRkFMU0UpOwogICAgICAgICAgIHJlc3VsdCA9IHByb2Nlc3NJbnRlcm5hbEVudGl0eShwYXJzZXIsIGVudGl0eSwgYmV0d2VlbkRlY2wpOwogICAgICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCkBAIC00NjM3LDcgKzQ3MTEsNyBAQAogICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAKICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6IAorICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgICpuZXh0UHRyID0gbmV4dDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTQ3MDcsNyArNDc4MSw3IEBACiAgICAgfQogICAgIGV2ZW50UHRyID0gcyA9IG5leHQ7CiAgICAgc3dpdGNoIChwc19wYXJzaW5nKSB7Ci0gICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgY2FzZSBYTUxfRklOSVNIRUQ6CkBAIC00NzUwLDEyICs0ODI0LDEyIEBACiAjaWZkZWYgWE1MX0RURAogICBpZiAoZW50aXR5LT5pc19wYXJhbSkgewogICAgIGludCB0b2sgPSBYbWxQcm9sb2dUb2soaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCAmbmV4dCk7Ci0gICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywgCisgICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywKICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCAmbmV4dCwgWE1MX0ZBTFNFKTsKICAgfQotICBlbHNlIAorICBlbHNlCiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIHRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIAorICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIHRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOwogCiAgIGlmIChyZXN1bHQgPT0gWE1MX0VSUk9SX05PTkUpIHsKQEAgLTQ3OTUsMTMgKzQ4NjksMTMgQEAKICNpZmRlZiBYTUxfRFRECiAgIGlmIChlbnRpdHktPmlzX3BhcmFtKSB7CiAgICAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0KTsKLSAgICByZXN1bHQgPSBkb1Byb2xvZyhwYXJzZXIsIGludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwgdGV4dEVuZCwgdG9rLCAKKyAgICByZXN1bHQgPSBkb1Byb2xvZyhwYXJzZXIsIGludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwgdGV4dEVuZCwgdG9rLAogICAgICAgICAgICAgICAgICAgICAgIG5leHQsICZuZXh0LCBYTUxfRkFMU0UpOwogICB9CiAgIGVsc2UKICNlbmRpZiAvKiBYTUxfRFREICovCi0gICAgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgb3BlbkVudGl0eS0+c3RhcnRUYWdMZXZlbCwgaW50ZXJuYWxFbmNvZGluZywgCi0gICAgICAgICAgICAgICAgICAgICAgIHRleHRTdGFydCwgdGV4dEVuZCwgJm5leHQsIFhNTF9GQUxTRSk7ICAKKyAgICByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCBvcGVuRW50aXR5LT5zdGFydFRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOwogCiAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ4MjIsNyArNDg5Niw3IEBACiAgICAgaW50IHRvazsKICAgICBwcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7CiAgICAgdG9rID0gWG1sUHJvbG9nVG9rKGVuY29kaW5nLCBzLCBlbmQsICZuZXh0KTsKLSAgICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsIG5leHRQdHIsIAorICAgIHJldHVybiBkb1Byb2xvZyhwYXJzZXIsIGVuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgbmV4dFB0ciwKICAgICAgICAgICAgICAgICAgICAgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CiAgIH0KICAgZWxzZQpAQCAtNDgzMSw4ICs0OTA1LDggQEAKICAgICBwcm9jZXNzb3IgPSBjb250ZW50UHJvY2Vzc29yOwogICAgIC8qIHNlZSBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNzb3IgdnMgY29udGVudFByb2Nlc3NvciAqLwogICAgIHJldHVybiBkb0NvbnRlbnQocGFyc2VyLCBwYXJlbnRQYXJzZXIgPyAxIDogMCwgZW5jb2RpbmcsIHMsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOyAKLSAgfSAgCisgICAgICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKKyAgfQogfQogCiBzdGF0aWMgZW51bSBYTUxfRXJyb3IgUFRSQ0FMTApAQCAtNDk4NSw3ICs1MDU5LDcgQEAKICAgICAgICAgaWYgKCFlbnRpdHktPnRleHRQdHIpIHsKICAgICAgICAgICBpZiAoZW5jID09IGVuY29kaW5nKQogICAgICAgICAgICAgZXZlbnRQdHIgPSBwdHI7Ci0gICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQVRUUklCVVRFX0VYVEVSTkFMX0VOVElUWV9SRUY7CisgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9BVFRSSUJVVEVfRVhURVJOQUxfRU5USVRZX1JFRjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7CkBAIC01MzI4LDcgKzU0MDIsNyBAQAogICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KICAgY29uc3QgWE1MX0NoYXIgKm5hbWU7CiAgIGZvciAobmFtZSA9IGVsZW1lbnRUeXBlLT5uYW1lOyAqbmFtZTsgbmFtZSsrKSB7Ci0gICAgaWYgKCpuYW1lID09IFhNTF9UKCc6JykpIHsKKyAgICBpZiAoKm5hbWUgPT0gWE1MX1QoQVNDSUlfQ09MT04pKSB7CiAgICAgICBQUkVGSVggKnByZWZpeDsKICAgICAgIGNvbnN0IFhNTF9DaGFyICpzOwogICAgICAgZm9yIChzID0gZWxlbWVudFR5cGUtPm5hbWU7IHMgIT0gbmFtZTsgcysrKSB7CkBAIC01Mzc1LDEyICs1NDQ5LDEyIEBACiAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKICAgICBpZiAoIW5zKQogICAgICAgOwotICAgIGVsc2UgaWYgKG5hbWVbMF0gPT0gWE1MX1QoJ3gnKQotICAgICAgICAmJiBuYW1lWzFdID09IFhNTF9UKCdtJykKLSAgICAgICAgJiYgbmFtZVsyXSA9PSBYTUxfVCgnbCcpCi0gICAgICAgICYmIG5hbWVbM10gPT0gWE1MX1QoJ24nKQotICAgICAgICAmJiBuYW1lWzRdID09IFhNTF9UKCdzJykKLSAgICAgICAgJiYgKG5hbWVbNV0gPT0gWE1MX1QoJ1wwJykgfHwgbmFtZVs1XSA9PSBYTUxfVCgnOicpKSkgeworICAgIGVsc2UgaWYgKG5hbWVbMF0gPT0gWE1MX1QoQVNDSUlfeCkKKyAgICAgICAgJiYgbmFtZVsxXSA9PSBYTUxfVChBU0NJSV9tKQorICAgICAgICAmJiBuYW1lWzJdID09IFhNTF9UKEFTQ0lJX2wpCisgICAgICAgICYmIG5hbWVbM10gPT0gWE1MX1QoQVNDSUlfbikKKyAgICAgICAgJiYgbmFtZVs0XSA9PSBYTUxfVChBU0NJSV9zKQorICAgICAgICAmJiAobmFtZVs1XSA9PSBYTUxfVCgnXDAnKSB8fCBuYW1lWzVdID09IFhNTF9UKEFTQ0lJX0NPTE9OKSkpIHsKICAgICAgIGlmIChuYW1lWzVdID09IFhNTF9UKCdcMCcpKQogICAgICAgICBpZC0+cHJlZml4ID0gJmR0ZC0+ZGVmYXVsdFByZWZpeDsKICAgICAgIGVsc2UKQEAgLTUzOTEsNyArNTQ2NSw3IEBACiAgICAgICBpbnQgaTsKICAgICAgIGZvciAoaSA9IDA7IG5hbWVbaV07IGkrKykgewogICAgICAgICAvKiBhdHRyaWJ1dGVzIHdpdGhvdXQgcHJlZml4IGFyZSAqbm90KiBpbiB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgKi8KLSAgICAgICAgaWYgKG5hbWVbaV0gPT0gWE1MX1QoJzonKSkgeworICAgICAgICBpZiAobmFtZVtpXSA9PSBYTUxfVChBU0NJSV9DT0xPTikpIHsKICAgICAgICAgICBpbnQgajsKICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CiAgICAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZkdGQtPnBvb2wsIG5hbWVbal0pKQpAQCAtNTQwMSw4ICs1NDc1LDYgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgIGlkLT5wcmVmaXggPSAoUFJFRklYICopbG9va3VwKHBhcnNlciwgJmR0ZC0+cHJlZml4ZXMsIHBvb2xTdGFydCgmZHRkLT5wb29sKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUFJFRklYKSk7Ci0gICAgICAgICAgaWYgKCFpZC0+cHJlZml4KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgaWYgKGlkLT5wcmVmaXgtPm5hbWUgPT0gcG9vbFN0YXJ0KCZkdGQtPnBvb2wpKQogICAgICAgICAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKICAgICAgICAgICBlbHNlCkBAIC01NDE1LDcgKzU0ODcsNyBAQAogICByZXR1cm4gaWQ7CiB9CiAKLSNkZWZpbmUgQ09OVEVYVF9TRVAgWE1MX1QoJ1xmJykKKyNkZWZpbmUgQ09OVEVYVF9TRVAgWE1MX1QoQVNDSUlfRkYpCiAKIHN0YXRpYyBjb25zdCBYTUxfQ2hhciAqCiBnZXRDb250ZXh0KFhNTF9QYXJzZXIgcGFyc2VyKQpAQCAtNTQyNyw3ICs1NDk5LDcgQEAKICAgaWYgKGR0ZC0+ZGVmYXVsdFByZWZpeC5iaW5kaW5nKSB7CiAgICAgaW50IGk7CiAgICAgaW50IGxlbjsKLSAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJz0nKSkpCisgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX0VRVUFMUykpKQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbGVuID0gZHRkLT5kZWZhdWx0UHJlZml4LmJpbmRpbmctPnVyaUxlbjsKICAgICBpZiAobmFtZXNwYWNlU2VwYXJhdG9yKQpAQCAtNTQ1Myw3ICs1NTI1LDcgQEAKICAgICBmb3IgKHMgPSBwcmVmaXgtPm5hbWU7ICpzOyBzKyspCiAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgKnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJz0nKSkpCisgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX0VRVUFMUykpKQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbGVuID0gcHJlZml4LT5iaW5kaW5nLT51cmlMZW47CiAgICAgaWYgKG5hbWVzcGFjZVNlcGFyYXRvcikKQEAgLTU1MDUsNyArNTU3Nyw3IEBACiAgICAgICBjb250ZXh0ID0gczsKICAgICAgIHBvb2xEaXNjYXJkKCZ0ZW1wUG9vbCk7CiAgICAgfQotICAgIGVsc2UgaWYgKCpzID09IFhNTF9UKCc9JykpIHsKKyAgICBlbHNlIGlmICgqcyA9PSBYTUxfVChBU0NJSV9FUVVBTFMpKSB7CiAgICAgICBQUkVGSVggKnByZWZpeDsKICAgICAgIGlmIChwb29sTGVuZ3RoKCZ0ZW1wUG9vbCkgPT0gMCkKICAgICAgICAgcHJlZml4ID0gJmR0ZC0+ZGVmYXVsdFByZWZpeDsKQEAgLTYxNjIsMTIgKzYyMzQsMTMgQEAKICAgfQogICBpZiAocG9vbC0+YmxvY2tzICYmIHBvb2wtPnN0YXJ0ID09IHBvb2wtPmJsb2Nrcy0+cykgewogICAgIGludCBibG9ja1NpemUgPSAoaW50KShwb29sLT5lbmQgLSBwb29sLT5zdGFydCkqMjsKLSAgICBwb29sLT5ibG9ja3MgPSAoQkxPQ0sgKikKKyAgICBCTE9DSyAqdGVtcCA9IChCTE9DSyAqKQogICAgICAgcG9vbC0+bWVtLT5yZWFsbG9jX2Zjbihwb29sLT5ibG9ja3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXRvZihCTE9DSywgcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYmxvY2tTaXplICogc2l6ZW9mKFhNTF9DaGFyKSkpOwotICAgIGlmIChwb29sLT5ibG9ja3MgPT0gTlVMTCkKKyAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKKyAgICBwb29sLT5ibG9ja3MgPSB0ZW1wOwogICAgIHBvb2wtPmJsb2Nrcy0+c2l6ZSA9IGJsb2NrU2l6ZTsKICAgICBwb29sLT5wdHIgPSBwb29sLT5ibG9ja3MtPnMgKyAocG9vbC0+cHRyIC0gcG9vbC0+c3RhcnQpOwogICAgIHBvb2wtPnN0YXJ0ID0gcG9vbC0+YmxvY2tzLT5zOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWxyb2xlLmMgYi9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYwppbmRleCAxNWQ0ZDhmLi40NDc3MmUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYworKysgYi9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYwpAQCAtMiwyMCArMiwyMiBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCiAjaW5jbHVkZSAid2luY29uZmlnLmgiCiAjZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCiAjaW5jbHVkZSAibWFjY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2FvczRfXykKKyNlbGlmIGRlZmluZWQoX19hbWlnYW9zX18pCiAjaW5jbHVkZSAiYW1pZ2Fjb25maWcuaCIKKyNlbGlmIGRlZmluZWQoX19XQVRDT01DX18pCisjaW5jbHVkZSAid2F0Y29tY29uZmlnLmgiCiAjZWxzZQogI2lmZGVmIEhBVkVfRVhQQVRfQ09ORklHX0gKICNpbmNsdWRlIDxleHBhdF9jb25maWcuaD4KICNlbmRpZgogI2VuZGlmIC8qIG5kZWYgQ09NUElMRURfRlJPTV9EU1AgKi8KIAotI2luY2x1ZGUgPHN0ZGRlZi5oPgotCiAjaW5jbHVkZSAiZXhwYXRfZXh0ZXJuYWwuaCIKICNpbmNsdWRlICJpbnRlcm5hbC5oIgogI2luY2x1ZGUgInhtbHJvbGUuaCIKQEAgLTUzLDEyICs1NSwxNiBAQAogICAgIEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsICdcMCcgfTsKIHN0YXRpYyBjb25zdCBjaGFyIEtXX0lEUkVGU1tdID0gewogICAgIEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsIEFTQ0lJX1MsICdcMCcgfTsKKyNpZmRlZiBYTUxfRFRECiBzdGF0aWMgY29uc3QgY2hhciBLV19JR05PUkVbXSA9IHsKICAgICBBU0NJSV9JLCBBU0NJSV9HLCBBU0NJSV9OLCBBU0NJSV9PLCBBU0NJSV9SLCBBU0NJSV9FLCAnXDAnIH07CisjZW5kaWYKIHN0YXRpYyBjb25zdCBjaGFyIEtXX0lNUExJRURbXSA9IHsKICAgICBBU0NJSV9JLCBBU0NJSV9NLCBBU0NJSV9QLCBBU0NJSV9MLCBBU0NJSV9JLCBBU0NJSV9FLCBBU0NJSV9ELCAnXDAnIH07CisjaWZkZWYgWE1MX0RURAogc3RhdGljIGNvbnN0IGNoYXIgS1dfSU5DTFVERVtdID0gewogICAgIEFTQ0lJX0ksIEFTQ0lJX04sIEFTQ0lJX0MsIEFTQ0lJX0wsIEFTQ0lJX1UsIEFTQ0lJX0QsIEFTQ0lJX0UsICdcMCcgfTsKKyNlbmRpZgogc3RhdGljIGNvbnN0IGNoYXIgS1dfTkRBVEFbXSA9IHsKICAgICBBU0NJSV9OLCBBU0NJSV9ELCBBU0NJSV9BLCBBU0NJSV9ULCBBU0NJSV9BLCAnXDAnIH07CiBzdGF0aWMgY29uc3QgY2hhciBLV19OTVRPS0VOW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRvay5jIGIvTW9kdWxlcy9leHBhdC94bWx0b2suYwppbmRleCBkYjkyMjQ3Li5iZjA5ZGZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRvay5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rLmMKQEAgLTIsMjAgKzIsMjIgQEAKICAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCiAqLwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAogI2luY2x1ZGUgIndpbmNvbmZpZy5oIgogI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQogI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX2FtaWdhb3M0X18pCisjZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQogI2luY2x1ZGUgImFtaWdhY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQorI2luY2x1ZGUgIndhdGNvbWNvbmZpZy5oIgogI2Vsc2UKICNpZmRlZiBIQVZFX0VYUEFUX0NPTkZJR19ICiAjaW5jbHVkZSA8ZXhwYXRfY29uZmlnLmg+CiAjZW5kaWYKICNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2luY2x1ZGUgImV4cGF0X2V4dGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ4bWx0b2suaCIKQEAgLTI5NSw3ICsyOTcsOSBAQAogI2VuZGlmCiAKICNkZWZpbmUgUFJFRklYKGlkZW50KSBub3JtYWxfICMjIGlkZW50CisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC02OTIsNyArNjk2LDkgQEAKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVIoZW5jLCBwLCBuKSAoMCkKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkgTElUVExFMl9JU19OTVNUUlRfQ0hBUl9NSU5CUEMoZW5jLCBwKQogCisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC04MzEsNyArODM3LDkgQEAKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVIoZW5jLCBwLCBuKSAoMCkKICNkZWZpbmUgSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkgQklHMl9JU19OTVNUUlRfQ0hBUl9NSU5CUEMoZW5jLCBwKQogCisjZGVmaW5lIFhNTF9UT0tfSU1QTF9DCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuYyIKKyN1bmRlZiBYTUxfVE9LX0lNUExfQwogCiAjdW5kZWYgTUlOQlBDCiAjdW5kZWYgQllURV9UWVBFCkBAIC0xMzM3LDcgKzEzNDUsNyBAQAogRU5DT0RJTkcgKgogWG1sSW5pdFVua25vd25FbmNvZGluZyh2b2lkICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgIENPTlZFUlRFUiBjb252ZXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKQogewogICBpbnQgaTsKQEAgLTE2MTAsNyArMTYxOCw5IEBACiAKICNkZWZpbmUgTlMoeCkgeAogI2RlZmluZSBucyh4KSB4CisjZGVmaW5lIFhNTF9UT0tfTlNfQwogI2luY2x1ZGUgInhtbHRva19ucy5jIgorI3VuZGVmIFhNTF9UT0tfTlNfQwogI3VuZGVmIE5TCiAjdW5kZWYgbnMKIApAQCAtMTYxOSw3ICsxNjI5LDkgQEAKICNkZWZpbmUgTlMoeCkgeCAjIyBOUwogI2RlZmluZSBucyh4KSB4ICMjIF9ucwogCisjZGVmaW5lIFhNTF9UT0tfTlNfQwogI2luY2x1ZGUgInhtbHRva19ucy5jIgorI3VuZGVmIFhNTF9UT0tfTlNfQwogCiAjdW5kZWYgTlMKICN1bmRlZiBucwpAQCAtMTYyNyw3ICsxNjM5LDcgQEAKIEVOQ09ESU5HICoKIFhtbEluaXRVbmtub3duRW5jb2RpbmdOUyh2b2lkICptZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBDT05WRVJURVIgY29udmVydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpCiB7CiAgIEVOQ09ESU5HICplbmMgPSBYbWxJbml0VW5rbm93bkVuY29kaW5nKG1lbSwgdGFibGUsIGNvbnZlcnQsIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYwppbmRleCBmNzkzYTZiLi45YzI4OTViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmMKKysrIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5jCkBAIC0yLDYgKzIsOSBAQAogICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KICovCiAKKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEgKi8KKyNpZmRlZiBYTUxfVE9LX0lNUExfQworCiAjaWZuZGVmIElTX0lOVkFMSURfQ0hBUgogI2RlZmluZSBJU19JTlZBTElEX0NIQVIoZW5jLCBwdHIsIG4pICgwKQogI2VuZGlmCkBAIC04ODIsNyArODg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7CiAgIGlmIChwdHIgPT0gZW5kKQotICAgIHJldHVybiAtWE1MX1RPS19QRVJDRU5UOworICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CiAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgY2FzZSBCVF9TOiBjYXNlIEJUX0xGOiBjYXNlIEJUX0NSOiBjYXNlIEJUX1BFUkNOVDoKQEAgLTE3NzcsMyArMTc4MCw0IEBACiAjdW5kZWYgQ0hFQ0tfTk1TVFJUX0NBU0UKICN1bmRlZiBDSEVDS19OTVNUUlRfQ0FTRVMKIAorI2VuZGlmIC8qIFhNTF9UT0tfSU1QTF9DICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfbnMuYwppbmRleCBkMmY4OTM4Li5jM2I4OGZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX25zLmMKQEAgLTEsMyArMSwxMCBAQAorLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKyovCisKKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEgKi8KKyNpZmRlZiBYTUxfVE9LX05TX0MKKwogY29uc3QgRU5DT0RJTkcgKgogTlMoWG1sR2V0VXRmOEludGVybmFsRW5jb2RpbmcpKHZvaWQpCiB7CkBAIC0xMDQsMyArMTExLDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhbG9uZSk7CiB9CisKKyNlbmRpZiAvKiBYTUxfVE9LX05TX0MgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMzYzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0wLDAgKzEsMTE1MiBAQAorI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8b2JqZWN0Lmg+CisjaW5jbHVkZSA8ZnJhbWVvYmplY3QuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKy8qIEFsbG9jYXRlIGF0IG1heGltdW0gMTAwIE1CIG9mIHRoZSBzdGFjayB0byByYWlzZSB0aGUgc3RhY2sgb3ZlcmZsb3cgKi8KKyNkZWZpbmUgU1RBQ0tfT1ZFUkZMT1dfTUFYX1NJWkUgKDEwMCoxMDI0KjEwMjQpCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorIyAgZGVmaW5lIEZBVUxUSEFORExFUl9MQVRFUgorI2VuZGlmCisKKyNpZm5kZWYgTVNfV0lORE9XUworICAgLyogcmVnaXN0ZXIoKSBpcyB1c2VsZXNzIG9uIFdpbmRvd3MsIGJlY2F1c2Ugb25seSBTSUdTRUdWLCBTSUdBQlJUIGFuZAorICAgICAgU0lHSUxMIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBwcm9jZXNzLCBhbmQgdGhlc2Ugc2lnbmFscyBjYW4gb25seSBiZSB1c2VkCisgICAgICB3aXRoIGVuYWJsZSgpLCBub3QgdXNpbmcgcmVnaXN0ZXIoKSAqLworIyAgZGVmaW5lIEZBVUxUSEFORExFUl9VU0VSCisjZW5kaWYKKworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorCisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KK3R5cGVkZWYgc3RydWN0IHNpZ2FjdGlvbiBfUHlfc2lnaGFuZGxlcl90OworI2Vsc2UKK3R5cGVkZWYgUHlPU19zaWdoYW5kbGVyX3QgX1B5X3NpZ2hhbmRsZXJfdDsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHNpZ251bTsKKyAgICBpbnQgZW5hYmxlZDsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgaW50IGFsbF90aHJlYWRzOworfSBmYXVsdF9oYW5kbGVyX3Q7CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IGZhdGFsX2Vycm9yID0gezAsIE5VTEwsIC0xLCAwfTsKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorc3RhdGljIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IGZkOworICAgIFBZX1RJTUVPVVRfVCB0aW1lb3V0X3VzOyAgIC8qIHRpbWVvdXQgaW4gbWljcm9zZWNvbmRzICovCisgICAgaW50IHJlcGVhdDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBpbnQgZXhpdDsKKyAgICBjaGFyICpoZWFkZXI7CisgICAgc2l6ZV90IGhlYWRlcl9sZW47CisgICAgLyogVGhlIG1haW4gdGhyZWFkIGFsd2F5cyBob2xkcyB0aGlzIGxvY2suIEl0IGlzIG9ubHkgcmVsZWFzZWQgd2hlbgorICAgICAgIGZhdWx0aGFuZGxlcl90aHJlYWQoKSBpcyBpbnRlcnJ1cHRlZCBiZWZvcmUgdGhpcyB0aHJlYWQgZXhpdHMsIG9yIGF0CisgICAgICAgUHl0aG9uIGV4aXQuICovCisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGNhbmNlbF9ldmVudDsKKyAgICAvKiByZWxlYXNlZCBieSBjaGlsZCB0aHJlYWQgd2hlbiBqb2luZWQgKi8KKyAgICBQeVRocmVhZF90eXBlX2xvY2sgcnVubmluZzsKK30gdGhyZWFkOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgaW50IGNoYWluOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IHVzZXJfc2lnbmFsX3Q7CisKK3N0YXRpYyB1c2VyX3NpZ25hbF90ICp1c2VyX3NpZ25hbHM7CisKKy8qIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGNvbWUgZnJvbSBQeXRob246IE1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgKi8KKyNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKKyNkZWZpbmUgTlNJRyAxMgorI2VuZGlmCisjaWZuZGVmIE5TSUcKKyMgaWYgZGVmaW5lZChfTlNJRykKKyMgIGRlZmluZSBOU0lHIF9OU0lHICAgICAgICAgICAgLyogRm9yIEJTRC9TeXNWICovCisjIGVsaWYgZGVmaW5lZChfU0lHTUFYKQorIyAgZGVmaW5lIE5TSUcgKF9TSUdNQVggKyAxKSAgICAvKiBGb3IgUU5YICovCisjIGVsaWYgZGVmaW5lZChTSUdNQVgpCisjICBkZWZpbmUgTlNJRyAoU0lHTUFYICsgMSkgICAgIC8qIEZvciBkamdwcCAqLworIyBlbHNlCisjICBkZWZpbmUgTlNJRyA2NCAgICAgICAgICAgICAgIC8qIFVzZSBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZSAqLworIyBlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pOworI2VuZGlmIC8qIEZBVUxUSEFORExFUl9VU0VSICovCisKKworc3RhdGljIGZhdWx0X2hhbmRsZXJfdCBmYXVsdGhhbmRsZXJfaGFuZGxlcnNbXSA9IHsKKyNpZmRlZiBTSUdCVVMKKyAgICB7U0lHQlVTLCAwLCAiQnVzIGVycm9yIiwgfSwKKyNlbmRpZgorI2lmZGVmIFNJR0lMTAorICAgIHtTSUdJTEwsIDAsICJJbGxlZ2FsIGluc3RydWN0aW9uIiwgfSwKKyNlbmRpZgorICAgIHtTSUdGUEUsIDAsICJGbG9hdGluZyBwb2ludCBleGNlcHRpb24iLCB9LAorICAgIHtTSUdBQlJULCAwLCAiQWJvcnRlZCIsIH0sCisgICAgLyogZGVmaW5lIFNJR1NFR1YgYXQgdGhlIGVuZCB0byBtYWtlIGl0IHRoZSBkZWZhdWx0IGNob2ljZSBpZiBzZWFyY2hpbmcgdGhlCisgICAgICAgaGFuZGxlciBmYWlscyBpbiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSAqLworICAgIHtTSUdTRUdWLCAwLCAiU2VnbWVudGF0aW9uIGZhdWx0IiwgfQorfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKKyAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKKworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKK3N0YXRpYyBzdGFja190IHN0YWNrOworI2VuZGlmCisKKworLyogR2V0IHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSBmaWxlIGJ5IGNhbGxpbmcgaXRzIGZpbGVubygpIG1ldGhvZCBhbmQgdGhlbgorICAgY2FsbCBpdHMgZmx1c2goKSBtZXRob2QuCisKKyAgIElmIGZpbGUgaXMgTlVMTCBvciBQeV9Ob25lLCB1c2Ugc3lzLnN0ZGVyciBhcyB0aGUgbmV3IGZpbGUuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbmV3IGZpbGUgYW5kIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50byAqcF9mZC4KKyAgIE9uIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKmZpbGUsIGludCAqcF9mZCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOworICAgIGxvbmcgZmRfbG9uZzsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgeworICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKKyAgICAgICAgaWYgKGZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLnN0ZGVyciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmZCA9IC0xOworICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgeworICAgICAgICBmZF9sb25nID0gUHlMb25nX0FzTG9uZyhyZXN1bHQpOworICAgICAgICBpZiAoMCA8PSBmZF9sb25nICYmIGZkX2xvbmcgPCBJTlRfTUFYKQorICAgICAgICAgICAgZmQgPSAoaW50KWZkX2xvbmc7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworCisgICAgaWYgKGZkID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIGlnbm9yZSBmbHVzaCgpIGVycm9yICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgICpwX2ZkID0gZmQ7CisgICAgcmV0dXJuIGZpbGU7Cit9CisKKy8qIEdldCB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkOiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB0aGUgY3VycmVudAorICAgdGhyZWFkIGhvbGRzIHRoZSBHSUwuIFJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KK3N0YXRpYyBQeVRocmVhZFN0YXRlKgorZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiB0c3RhdGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAiYWxsX3RocmVhZHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisgICAgaW50IGFsbF90aHJlYWRzID0gMTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgY29uc3QgY2hhciAqZXJybXNnOworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgInxPaTpkdW1wX3RyYWNlYmFjayIsIGt3bGlzdCwKKyAgICAgICAgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChhbGxfdGhyZWFkcykgeworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKKy8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KKworICAgRGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gdHJhY2ViYWNrLCByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyIGFuZCBjYWxsCisgICB0aGUgcHJldmlvdXMgaGFuZGxlci4KKworICAgT24gV2luZG93cywgZG9uJ3QgZXhwbGljaXRseSBjYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyLCBiZWNhdXNlIHRoZSBXaW5kb3dzCisgICBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkIChmb3IgYW4gdW5rbm93biByZWFzb24pLiBUaGUgZXhlY3V0aW9uIG9mCisgICB0aGUgcHJvZ3JhbSBjb250aW51ZXMgYXQgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgZXhpdCwgYnV0IHRoZSBzYW1lCisgICBpbnN0cnVjdGlvbiB3aWxsIHJhaXNlIHRoZSBzYW1lIGZhdWx0IChzaWduYWwpLCBhbmQgc28gdGhlIHByZXZpb3VzIGhhbmRsZXIKKyAgIHdpbGwgYmUgY2FsbGVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbC1zYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbC1zYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CisKKyAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGlmIChoYW5kbGVyLT5zaWdudW0gPT0gc2lnbnVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChoYW5kbGVyID09IE5VTEwpIHsKKyAgICAgICAgLyogZmF1bHRoYW5kbGVyX25zaWduYWxzID09IDAgKHVubGlrZWx5KSAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogcmVzdG9yZSB0aGUgcHJldmlvdXMgaGFuZGxlciAqLworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKHNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCisgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisKKyAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKKyAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKKyAgICBQVVRTKGZkLCAiXG5cbiIpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzIGFuZAorICAgICAgIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZSBQeXRob24KKyAgICAgICB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlCisgICAgICAgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKKyAgICAgICB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCisgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAoZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgZmF0YWxfZXJyb3IuaW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKKyAgICB9CisKKyAgICBlcnJubyA9IHNhdmVfZXJybm87CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChzaWdudW0gPT0gU0lHU0VHVikgeworICAgICAgICAvKiBkb24ndCBleHBsaWNpdGx5IGNhbGwgdGhlIHByZXZpb3VzIGhhbmRsZXIgZm9yIFNJR1NFR1YgaW4gdGhpcyBzaWduYWwKKyAgICAgICAgICAgaGFuZGxlciwgYmVjYXVzZSB0aGUgV2luZG93cyBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkICovCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAvKiBjYWxsIHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlcjogaXQgaXMgY2FsbGVkIGltbWVkaWF0bHkgaWYgd2UgdXNlCisgICAgICAgc2lnYWN0aW9uKCkgdGhhbmtzIHRvIFNBX05PREVGRVIgZmxhZywgb3RoZXJ3aXNlIGl0IGlzIGRlZmVycmVkICovCisgICAgcmFpc2Uoc2lnbnVtKTsKK30KKworLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKyAgICBpbnQgYWxsX3RocmVhZHMgPSAxOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgaW50IGVycjsKKyAgICBpbnQgZmQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAifE9pOmVuYWJsZSIsIGt3bGlzdCwgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1hERUNSRUYoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIGZhdGFsX2Vycm9yLmZpbGUgPSBmaWxlOworICAgIGZhdGFsX2Vycm9yLmZkID0gZmQ7CisgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKKyAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKworICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgeworICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKKyNlbHNlCisgICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOworICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlKHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKCFoYW5kbGVyLT5lbmFibGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgICAgICAodm9pZClzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOworI2Vsc2UKKyAgICAgICAgICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9DTEVBUihmYXRhbF9lcnJvci5maWxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2Rpc2FibGVfcHkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKCFmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgICAgIHJldHVybiBQeV9GYWxzZTsKKyAgICB9CisgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGUoKTsKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgcmV0dXJuIFB5X1RydWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9pc19lbmFibGVkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZmF0YWxfZXJyb3IuZW5hYmxlZCk7Cit9CisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl90aHJlYWQodm9pZCAqdW51c2VkKQoreworICAgIFB5TG9ja1N0YXR1cyBzdDsKKyAgICBjb25zdCBjaGFyKiBlcnJtc2c7CisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKKyAgICBpbnQgb2s7CisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQorICAgIHNpZ3NldF90IHNldDsKKworICAgIC8qIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgc2lnbmFsICovCisgICAgc2lnZmlsbHNldCgmc2V0KTsKKyAgICBwdGhyZWFkX3NpZ21hc2soU0lHX1NFVE1BU0ssICZzZXQsIE5VTEwpOworI2VuZGlmCisKKyAgICBkbyB7CisgICAgICAgIHN0ID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKHRocmVhZC5jYW5jZWxfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC50aW1lb3V0X3VzLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIFRpbWVvdXQgPT4gZHVtcCB0cmFjZWJhY2sgKi8KKyAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CisKKyAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KKyAgICAgICAgY3VycmVudCA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKworICAgICAgICB3cml0ZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIHRocmVhZC5oZWFkZXJfbGVuKTsKKworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOworCisgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKKyAgICAgICAgICAgIF9leGl0KDEpOworICAgIH0gd2hpbGUgKG9rICYmIHRocmVhZC5yZXBlYXQpOworCisgICAgLyogVGhlIG9ubHkgd2F5IG91dCAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7Cit9CisKK3N0YXRpYyB2b2lkCitjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIodm9pZCkKK3sKKyAgICAvKiBOb3RpZnkgY2FuY2VsbGF0aW9uICovCisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworCisgICAgLyogV2FpdCBmb3IgdGhyZWFkIHRvIGpvaW4gKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sodGhyZWFkLnJ1bm5pbmcsIDEpOworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CisKKyAgICAvKiBUaGUgbWFpbiB0aHJlYWQgc2hvdWxkIGFsd2F5cyBob2xkIHRoZSBjYW5jZWxfZXZlbnQgbG9jayAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50LCAxKTsKKworICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKKyAgICBpZiAodGhyZWFkLmhlYWRlcikgeworICAgICAgICBmcmVlKHRocmVhZC5oZWFkZXIpOworICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBjaGFyKgorZm9ybWF0X3RpbWVvdXQoZG91YmxlIHRpbWVvdXQpCit7CisgICAgdW5zaWduZWQgbG9uZyB1cywgc2VjLCBtaW4sIGhvdXI7CisgICAgZG91YmxlIGludHBhcnQsIGZyYWNwYXJ0OworICAgIGNoYXIgYnVmZmVyWzEwMF07CisKKyAgICBmcmFjcGFydCA9IG1vZGYodGltZW91dCwgJmludHBhcnQpOworICAgIHNlYyA9ICh1bnNpZ25lZCBsb25nKWludHBhcnQ7CisgICAgdXMgPSAodW5zaWduZWQgbG9uZykoZnJhY3BhcnQgKiAxZTYpOworICAgIG1pbiA9IHNlYyAvIDYwOworICAgIHNlYyAlPSA2MDsKKyAgICBob3VyID0gbWluIC8gNjA7CisgICAgbWluICU9IDYwOworCisgICAgaWYgKHVzICE9IDApCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1LiUwNmx1KSFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMsIHVzKTsKKyAgICBlbHNlCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1KSFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMpOworCisgICAgcmV0dXJuIHN0cmR1cChidWZmZXIpOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2tfbGF0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJyZXBlYXQiLCAiZmlsZSIsICJleGl0IiwgTlVMTH07CisgICAgZG91YmxlIHRpbWVvdXQ7CisgICAgUFlfVElNRU9VVF9UIHRpbWVvdXRfdXM7CisgICAgaW50IHJlcGVhdCA9IDA7CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgZXhpdCA9IDA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGNoYXIgKmhlYWRlcjsKKyAgICBzaXplX3QgaGVhZGVyX2xlbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgImR8aU9pOmR1bXBfdHJhY2ViYWNrX2xhdGVyIiwga3dsaXN0LAorICAgICAgICAmdGltZW91dCwgJnJlcGVhdCwgJmZpbGUsICZleGl0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCh0aW1lb3V0ICogMWU2KSA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdGltZW91dF91cyA9IChQWV9USU1FT1VUX1QpKHRpbWVvdXQgKiAxZTYpOworICAgIGlmICh0aW1lb3V0X3VzIDw9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGZvcm1hdCB0aGUgdGltZW91dCAqLworICAgIGhlYWRlciA9IGZvcm1hdF90aW1lb3V0KHRpbWVvdXQpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgaGVhZGVyX2xlbiA9IHN0cmxlbihoZWFkZXIpOworCisgICAgLyogQ2FuY2VsIHByZXZpb3VzIHRocmVhZCwgaWYgcnVubmluZyAqLworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworCisgICAgUHlfWERFQ1JFRih0aHJlYWQuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIHRocmVhZC5maWxlID0gZmlsZTsKKyAgICB0aHJlYWQuZmQgPSBmZDsKKyAgICB0aHJlYWQudGltZW91dF91cyA9IHRpbWVvdXRfdXM7CisgICAgdGhyZWFkLnJlcGVhdCA9IHJlcGVhdDsKKyAgICB0aHJlYWQuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisgICAgdGhyZWFkLmV4aXQgPSBleGl0OworICAgIHRocmVhZC5oZWFkZXIgPSBoZWFkZXI7CisgICAgdGhyZWFkLmhlYWRlcl9sZW4gPSBoZWFkZXJfbGVuOworCisgICAgLyogQXJtIHRoZXNlIGxvY2tzIHRvIHNlcnZlIGFzIGV2ZW50cyB3aGVuIHJlbGVhc2VkICovCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5ydW5uaW5nLCAxKTsKKworICAgIGlmIChQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl90aHJlYWQsIE5VTEwpID09IC0xKSB7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CisgICAgICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKKyAgICAgICAgZnJlZShoZWFkZXIpOworICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gc3RhcnQgd2F0Y2hkb2cgdGhyZWFkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyX3B5KFB5T2JqZWN0ICpzZWxmKQoreworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmICAvKiBGQVVMVEhBTkRMRVJfTEFURVIgKi8KKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoaW50IHNpZ251bSwgaW50IGNoYWluLCBfUHlfc2lnaGFuZGxlcl90ICpwX3ByZXZpb3VzKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfdXNlcjsKKyAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgIC8qIGlmIHRoZSBzaWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgdGhlIGtlcm5lbCBpcyBleGVjdXRpbmcgYSBzeXN0ZW0KKyAgICAgICBjYWxsLCB0cnkgdG8gcmVzdGFydCB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiBpbnRlcnJ1cHRpbmcgaXQgYW5kCisgICAgICAgcmV0dXJuIEVJTlRSLiAqLworICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CisgICAgaWYgKGNoYWluKSB7CisgICAgICAgIC8qIGRvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbiBpdHMKKyAgICAgICAgICAgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisgICAgfQorI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNpZ2FjdGlvbihzaWdudW0sICZhY3Rpb24sIHBfcHJldmlvdXMpOworI2Vsc2UKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIHByZXZpb3VzID0gc2lnbmFsKHNpZ251bSwgZmF1bHRoYW5kbGVyX3VzZXIpOworICAgIGlmIChwX3ByZXZpb3VzICE9IE5VTEwpCisgICAgICAgICpwX3ByZXZpb3VzID0gcHJldmlvdXM7CisgICAgcmV0dXJuIChwcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorfQorCisvKiBIYW5kbGVyIG9mIHVzZXIgc2lnbmFscyAoZS5nLiBTSUdVU1IxKS4KKworICAgRHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYKKyAgIHRocmVhZC5hbGxfdGhyZWFkcyBpcyB0cnVlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbCBzYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pCit7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYKKyAgICAgICB0aGUgdGhyZWFkIGRvZXNuJ3QgaG9sZCB0aGUgR0lMLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKQorICAgICAgIGluc3RlYWQ6IGNhbGwgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKKyAgICB9CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICBpZiAodXNlci0+Y2hhaW4pIHsKKyAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKKyAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworCisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHJhaXNlKHNpZ251bSk7CisKKyAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAodm9pZClmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCB1c2VyLT5jaGFpbiwgTlVMTCk7CisgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKyAgICB9CisjZWxzZQorICAgIGlmICh1c2VyLT5jaGFpbikgeworICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHVzZXItPnByZXZpb3VzKHNpZ251bSk7CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX3NpZ251bShpbnQgc2lnbnVtKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBpZiAoZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldLnNpZ251bSA9PSBzaWdudW0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCAlaSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZW5hYmxlKCkgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbnVtKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzaWdudW0gPCAxIHx8IE5TSUcgPD0gc2lnbnVtKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHkoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaWdudW0iLCAiZmlsZSIsICJhbGxfdGhyZWFkcyIsICJjaGFpbiIsIE5VTEx9OworICAgIGludCBzaWdudW07CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBhbGxfdGhyZWFkcyA9IDE7CisgICAgaW50IGNoYWluID0gMDsKKyAgICBpbnQgZmQ7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAiaXxPaWk6cmVnaXN0ZXIiLCBrd2xpc3QsCisgICAgICAgICZzaWdudW0sICZmaWxlLCAmYWxsX3RocmVhZHMsICZjaGFpbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CisgICAgICAgIHVzZXJfc2lnbmFscyA9IGNhbGxvYyhOU0lHLCBzaXplb2YodXNlcl9zaWduYWxfdCkpOworICAgICAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgdXNlciA9ICZ1c2VyX3NpZ25hbHNbc2lnbnVtXTsKKworICAgIGlmICghdXNlci0+ZW5hYmxlZCkgeworICAgICAgICBlcnIgPSBmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCBjaGFpbiwgJnByZXZpb3VzKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICB1c2VyLT5maWxlID0gZmlsZTsKKyAgICB1c2VyLT5mZCA9IGZkOworICAgIHVzZXItPmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CisgICAgdXNlci0+Y2hhaW4gPSBjaGFpbjsKKyAgICB1c2VyLT5wcmV2aW91cyA9IHByZXZpb3VzOworICAgIHVzZXItPmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIHVzZXItPmVuYWJsZWQgPSAxOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKHVzZXJfc2lnbmFsX3QgKnVzZXIsIGludCBzaWdudW0pCit7CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICB1c2VyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZ1c2VyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChzaWdudW0sIHVzZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgIFB5X0NMRUFSKHVzZXItPmZpbGUpOworICAgIHVzZXItPmZkID0gLTE7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyX3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc2lnbnVtOworICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7CisgICAgaW50IGNoYW5nZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp1bnJlZ2lzdGVyIiwgJnNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgY2hhbmdlID0gZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXIodXNlciwgc2lnbnVtKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGNoYW5nZSk7Cit9CisjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLworCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmVhZF9udWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB2b2xhdGlsZSBpbnQgKng7CisgICAgdm9sYXRpbGUgaW50IHk7CisgICAgaW50IHJlbGVhc2VfZ2lsID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9yZWFkX251bGwiLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHggPSBOVUxMOworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHkgPSAqeDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UKKyAgICAgICAgeSA9ICp4OworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeSk7CisKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgLyogRm9yIFNJR1NFR1YsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpIHJlc3RvcmVzIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyIGFuZCB0aGVuIGdpdmVzIGJhY2sgdGhlIGV4ZWN1dGlvbiBmbG93IHRvIHRoZSBwcm9ncmFtICh3aXRob3V0CisgICAgICAgZXhwbGljaXRseSBjYWxsaW5nIHRoZSBwcmV2aW91cyBlcnJvciBoYW5kbGVyKS4gSW4gYSBub3JtYWwgY2FzZSwgdGhlCisgICAgICAgU0lHU0VHViB3YXMgcmFpc2VkIGJ5IHRoZSBrZXJuZWwgYmVjYXVzZSBvZiBhIGZhdWx0LCBhbmQgc28gaWYgdGhlCisgICAgICAgcHJvZ3JhbSByZXRyaWVzIHRvIGV4ZWN1dGUgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24sIHRoZSBmYXVsdCB3aWxsIGJlCisgICAgICAgcmFpc2VkIGFnYWluLgorCisgICAgICAgSGVyZSB0aGUgZmF1bHQgaXMgc2ltdWxhdGVkIGJ5IGEgZmFrZSBTSUdTRUdWIHNpZ25hbCByYWlzZWQgYnkgdGhlCisgICAgICAgYXBwbGljYXRpb24uIFdlIGhhdmUgdG8gcmFpc2UgU0lHU0VHViBhdCBsZWFzZSB0d2ljZTogb25jZSBmb3IKKyAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSwgYW5kIG9uZSBtb3JlIHRpbWUgZm9yIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyLiAqLworICAgIHdoaWxlKDEpCisgICAgICAgIHJhaXNlKFNJR1NFR1YpOworI2Vsc2UKKyAgICByYWlzZShTSUdTRUdWKTsKKyNlbmRpZgorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogRG8gYW4gaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvOiByYWlzZSBhIFNJR0ZQRSBvbiBJbnRlbCBDUFUsIGJ1dCBub3Qgb24KKyAgICAgICBQb3dlclBDLiBVc2Ugdm9sYXRpbGUgdG8gZGlzYWJsZSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9ucy4gKi8KKyAgICB2b2xhdGlsZSBpbnQgeCA9IDEsIHkgPSAwLCB6OworICAgIHogPSB4IC8geTsKKyAgICAvKiBJZiB0aGUgZGl2aXNpb24gYnkgemVybyBkaWRuJ3QgcmFpc2UgYSBTSUdGUEUgKGUuZy4gb24gUG93ZXJQQyksCisgICAgICAgcmFpc2UgaXQgbWFudWFsbHkuICovCisgICAgcmFpc2UoU0lHRlBFKTsKKyAgICAvKiBUaGlzIGxpbmUgaXMgbmV2ZXIgcmVhY2hlZCwgYnV0IHdlIHByZXRlbmQgdG8gbWFrZSBzb21ldGhpbmcgd2l0aCB6CisgICAgICAgdG8gc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh6KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdhYnJ0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8qIFZpc3VhbCBTdHVkaW86IGNvbmZpZ3VyZSBhYm9ydCgpIHRvIG5vdCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugbm9yCisgICAgICAgb3BlbiBhIHBvcHVwIGFza2luZyB0byByZXBvcnQgdGhlIGZhdWx0LiAqLworICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoMCwgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsKKyNlbmRpZgorICAgIGFib3J0KCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBTSUdCVVMKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdCVVMpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKyNpZmRlZiBTSUdJTEwKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdJTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKm1lc3NhZ2U7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorc3RhdGljIHZvaWQqCitzdGFja19vdmVyZmxvdyh2b2lkICptaW5fc3AsIHZvaWQgKm1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3sKKyAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKKyAgICB2b2lkICpzcCA9ICZidWZmZXI7CisgICAgKmRlcHRoICs9IDE7CisgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQorICAgICAgICByZXR1cm4gc3A7CisgICAgYnVmZmVyWzBdID0gMTsKKyAgICBidWZmZXJbNDA5NV0gPSAwOworICAgIHJldHVybiBzdGFja19vdmVyZmxvdyhtaW5fc3AsIG1heF9zcCwgZGVwdGgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQoreworICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKKyAgICBjaGFyICpzcCA9IChjaGFyICopJmRlcHRoLCAqc3RvcDsKKworICAgIGRlcHRoID0gMDsKKyAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlcHRoKTsKKyAgICBpZiAoc3AgPCBzdG9wKQorICAgICAgICBzaXplID0gc3RvcCAtIHNwOworICAgIGVsc2UKKyAgICAgICAgc2l6ZSA9IHNwIC0gc3RvcDsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAidW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cgKGFsbG9jYXRlZCAlenUgYnl0ZXMgIgorICAgICAgICAib24gdGhlIHN0YWNrLCAlenUgcmVjdXJzaXZlIGNhbGxzKSIsCisgICAgICAgIHNpemUsIGRlcHRoKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl90cmF2ZXJzZShQeU9iamVjdCAqbW9kdWxlLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIFB5X1ZJU0lUKHRocmVhZC5maWxlKTsKKyNlbmRpZgorI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgaWYgKHVzZXJfc2lnbmFscyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoc2lnbnVtPTA7IHNpZ251bSA8IE5TSUc7IHNpZ251bSsrKQorICAgICAgICAgICAgUHlfVklTSVQodXNlcl9zaWduYWxzW3NpZ251bV0uZmlsZSk7CisgICAgfQorI2VuZGlmCisgICAgUHlfVklTSVQoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAorImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiZW5hYmxlIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZGlzYWJsZSgpOiBkaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiaXNfZW5hYmxlZCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfaXNfZW5hYmxlZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiaXNfZW5hYmxlZCgpLT5ib29sOiBjaGVjayBpZiB0aGUgaGFuZGxlciBpcyBlbmFibGVkIil9LAorICAgIHsiZHVtcF90cmFjZWJhY2siLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX3B5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgIgorICAgICAgICAgICAgICAgImlmIGFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICB7ImR1bXBfdHJhY2ViYWNrX2xhdGVyIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19sYXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnJuLCBleGl0PUZhbHNlKTpcbiIKKyAgICAgICAgICAgICAgICJkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW4gdGltZW91dCBzZWNvbmRzLFxuIgorICAgICAgICAgICAgICAgIm9yIGVhY2ggdGltZW91dCBzZWNvbmRzIGlmIHJlcGVhdCBpcyBUcnVlLiBJZiBleGl0IGlzIFRydWUsICIKKyAgICAgICAgICAgICAgICJjYWxsIF9leGl0KDEpIHdoaWNoIGlzIG5vdCBzYWZlLiIpfSwKKyAgICB7ImNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyX3B5LCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKTpcbmNhbmNlbCB0aGUgcHJldmlvdXMgY2FsbCAiCisgICAgICAgICAgICAgICAidG8gZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4iKX0sCisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgeyJyZWdpc3RlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoInJlZ2lzdGVyKHNpZ251bSwgZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlLCBjaGFpbj1GYWxzZSk6ICIKKyAgICAgICAgICAgICAgICJyZWdpc3RlciBhbiBoYW5kbGVyIGZvciB0aGUgc2lnbmFsICdzaWdudW0nOiBkdW1wIHRoZSAiCisgICAgICAgICAgICAgICAidHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYgIgorICAgICAgICAgICAgICAgImFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyAgICB7InVucmVnaXN0ZXIiLAorICAgICBmYXVsdGhhbmRsZXJfdW5yZWdpc3Rlcl9weSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigidW5yZWdpc3RlcihzaWdudW0pOiB1bnJlZ2lzdGVyIHRoZSBoYW5kbGVyIG9mIHRoZSBzaWduYWwgIgorICAgICAgICAgICAgICAgICInc2lnbnVtJyByZWdpc3RlcmVkIGJ5IHJlZ2lzdGVyKCkiKX0sCisjZW5kaWYKKworICAgIHsiX3JlYWRfbnVsbCIsIGZhdWx0aGFuZGxlcl9yZWFkX251bGwsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfcmVhZF9udWxsKHJlbGVhc2VfZ2lsPUZhbHNlKTogcmVhZCBmcm9tIE5VTEwsIHJhaXNlICIKKyAgICAgICAgICAgICAgICJhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIil9LAorICAgIHsiX3NpZ3NlZ3YiLCBmYXVsdGhhbmRsZXJfc2lnc2VndiwgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdzZWd2KCk6IHJhaXNlIGEgU0lHU0VHViBzaWduYWwiKX0sCisgICAgeyJfc2lnYWJydCIsIGZhdWx0aGFuZGxlcl9zaWdhYnJ0LCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKKyAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCisjaWZkZWYgU0lHQlVTCisgICAgeyJfc2lnYnVzIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdidXMsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdidXMoKTogcmFpc2UgYSBTSUdCVVMgc2lnbmFsIil9LAorI2VuZGlmCisjaWZkZWYgU0lHSUxMCisgICAgeyJfc2lnaWxsIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdpbGwsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdpbGwoKTogcmFpc2UgYSBTSUdJTEwgc2lnbmFsIil9LAorI2VuZGlmCisgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKKyNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisgICAgeyJfc3RhY2tfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93LCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc3RhY2tfb3ZlcmZsb3coKTogcmVjdXJzaXZlIGNhbGwgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdyIpfSwKKyNlbmRpZgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgbW9kdWxlX2RlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgImZhdWx0aGFuZGxlciIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLCAvKiBub24tbmVnYXRpdmUgc2l6ZSB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlICovCisgICAgbW9kdWxlX21ldGhvZHMsCisgICAgTlVMTCwKKyAgICBmYXVsdGhhbmRsZXJfdHJhdmVyc2UsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2ZhdWx0aGFuZGxlcih2b2lkKQoreworICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworfQorCisvKiBDYWxsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBpZiB0aGUgUFlUSE9ORkFVTFRIQU5ETEVSIGVudmlyb25tZW50IHZhcmlhYmxlCisgICBpcyBkZWZpbmVkLCBvciBpZiBzeXMuX3hvcHRpb25zIGhhcyBhICdmYXVsdGhhbmRsZXInIGtleS4gKi8KKworc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2Vudl9vcHRpb25zKHZvaWQpCit7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqa2V5LCAqbW9kdWxlLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKGVuYWJsZSk7CisKKyAgICBpZiAoIVB5X0dFVEVOVigiUFlUSE9ORkFVTFRIQU5ETEVSIikpIHsKKyAgICAgICAgaW50IGhhc19rZXk7CisKKyAgICAgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgICAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZmF1bHRoYW5kbGVyIik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBoYXNfa2V5ID0gUHlEaWN0X0NvbnRhaW5zKHhvcHRpb25zLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKCFoYXNfa2V5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmYXVsdGhhbmRsZXIiKTsKKyAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCAiIik7CisgICAgUHlfREVDUkVGKG1vZHVsZSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKQoreworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpbnQgZXJyOworCisgICAgLyogVHJ5IHRvIGFsbG9jYXRlIGFuIGFsdGVybmF0ZSBzdGFjayBmb3IgZmF1bHRoYW5kbGVyKCkgc2lnbmFsIGhhbmRsZXIgdG8KKyAgICAgKiBiZSBhYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgc3RhY2ssIGV2ZW4gb24gYSBzdGFjayBvdmVyZmxvdy4gSWYgaXQKKyAgICAgKiBmYWlscywgaWdub3JlIHRoZSBlcnJvci4gKi8KKyAgICBzdGFjay5zc19mbGFncyA9IDA7CisgICAgc3RhY2suc3Nfc2l6ZSA9IFNJR1NUS1NaOworICAgIHN0YWNrLnNzX3NwID0gUHlNZW1fTWFsbG9jKHN0YWNrLnNzX3NpemUpOworICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgIGVyciA9IHNpZ2FsdHN0YWNrKCZzdGFjaywgTlVMTCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2suc3Nfc3ApOworICAgICAgICAgICAgc3RhY2suc3Nfc3AgPSBOVUxMOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisjaWZkZWYgRkFVTFRIQU5ETEVSX0xBVEVSCisgICAgdGhyZWFkLmZpbGUgPSBOVUxMOworICAgIHRocmVhZC5jYW5jZWxfZXZlbnQgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgdGhyZWFkLnJ1bm5pbmcgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKCF0aHJlYWQuY2FuY2VsX2V2ZW50IHx8ICF0aHJlYWQucnVubmluZykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhbGxvY2F0ZSBsb2NrcyBmb3IgZmF1bHRoYW5kbGVyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQsIDEpOworI2VuZGlmCisKKyAgICByZXR1cm4gZmF1bHRoYW5kbGVyX2Vudl9vcHRpb25zKCk7Cit9CisKK3ZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCkKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIC8qIGxhdGVyICovCisgICAgaWYgKHRocmVhZC5jYW5jZWxfZXZlbnQpIHsKKyAgICAgICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworICAgICAgICB0aHJlYWQuY2FuY2VsX2V2ZW50ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKHRocmVhZC5ydW5uaW5nKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayh0aHJlYWQucnVubmluZyk7CisgICAgICAgIHRocmVhZC5ydW5uaW5nID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgLyogdXNlciAqLworICAgIGlmICh1c2VyX3NpZ25hbHMgIT0gTlVMTCkgeworICAgICAgICBmb3IgKHNpZ251bT0wOyBzaWdudW0gPCBOU0lHOyBzaWdudW0rKykKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKCZ1c2VyX3NpZ25hbHNbc2lnbnVtXSwgc2lnbnVtKTsKKyAgICAgICAgZnJlZSh1c2VyX3NpZ25hbHMpOworICAgICAgICB1c2VyX3NpZ25hbHMgPSBOVUxMOworICAgIH0KKyNlbmRpZgorCisgICAgLyogZmF0YWwgKi8KKyAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZSgpOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrLnNzX3NwKTsKKyAgICAgICAgc3RhY2suc3Nfc3AgPSBOVUxMOworICAgIH0KKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mY250bG1vZHVsZS5jIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCmluZGV4IGJmYzU5ODUuLjZiN2UzZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmNudGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKQEAgLTU0MCwxMCArNTQwLDEzIEBACiAgICAgaWYgKGlucyhkLCAiRl9TSExDSyIsIChsb25nKUZfU0hMQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKIAotLyogT1MgWCAoYW5kIG1heWJlIG90aGVycykgbGV0IHlvdSB0ZWxsIHRoZSBzdG9yYWdlIGRldmljZSB0byBmbHVzaCB0byBwaHlzaWNhbCBtZWRpYSAqLworLyogT1MgWCBzcGVjaWZpY3MgKi8KICNpZmRlZiBGX0ZVTExGU1lOQwogICAgIGlmIChpbnMoZCwgIkZfRlVMTEZTWU5DIiwgKGxvbmcpRl9GVUxMRlNZTkMpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBGX05PQ0FDSEUKKyAgICBpZiAoaW5zKGQsICJGX05PQ0FDSEUiLCAobG9uZylGX05PQ0FDSEUpKSByZXR1cm4gLTE7CisjZW5kaWYKIAogLyogRm9yIEZfe0dFVHxTRVR9RkwgKi8KICNpZmRlZiBGRF9DTE9FWEVDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jIGIvTW9kdWxlcy9mcGVjdGxtb2R1bGUuYwppbmRleCAxYmI1MWNmLi42YWYyZjgyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMKQEAgLTE3NCwxNyArMTc0LDYgQEAKICAgICBmcF9lbmFibGUoVFJQX0lOVkFMSUQgfCBUUlBfRElWX0JZX1pFUk8gfCBUUlBfT1ZFUkZMT1cpOwogICAgIFB5T1Nfc2V0c2lnKFNJR0ZQRSwgaGFuZGxlcik7CiAKLS8qLS0gREVDIEFMUEhBIE9TRiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jZWxpZiBkZWZpbmVkKF9fYWxwaGEpICYmIGRlZmluZWQoX19vc2ZfXykKLSAgICAvKiBSZWZlcmVuY2VzOiAgIGV4Y2VwdGlvbl9pbnRybywgaWVlZSBtYW4gcGFnZXMgKi8KLSAgICAvKiBjYyAtYyAtSS91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUgZnBlY3RsbW9kdWxlLmMgKi8KLSAgICAvKiBsZCAtc2hhcmVkIC1vIGZwZWN0bG1vZHVsZS5zbyBmcGVjdGxtb2R1bGUubyAqLwotI2luY2x1ZGUgPG1hY2hpbmUvZnB1Lmg+Ci0gICAgdW5zaWduZWQgbG9uZyBmcF9jb250cm9sID0KLSAgICBJRUVFX1RSQVBfRU5BQkxFX0lOViB8IElFRUVfVFJBUF9FTkFCTEVfRFpFIHwgSUVFRV9UUkFQX0VOQUJMRV9PVkY7Ci0gICAgaWVlZV9zZXRfZnBfY29udHJvbChmcF9jb250cm9sKTsKLSAgICBQeU9TX3NldHNpZyhTSUdGUEUsIGhhbmRsZXIpOwotCiAvKi0tIERFQyBBTFBIQSBMSU5VWCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2VsaWYgZGVmaW5lZChfX2FscGhhKSAmJiBkZWZpbmVkKGxpbnV4KQogI2luY2x1ZGUgPGFzbS9mcHUuaD4KZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQgYi9Nb2R1bGVzL2djX3dlYWtyZWYudHh0CmluZGV4IGQ3YmU2YzMuLjJmMTg0MDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQKKysrIGIvTW9kdWxlcy9nY193ZWFrcmVmLnR4dApAQCAtMTUsOCArMTUsOCBAQAogaGlzdG9yaWNhbGx5IGNvbW1vbiBidWcpLCB0cF9jbGVhciBlbXB0aWVzIGFuIGluc3RhbmNlJ3MgX19kaWN0X18sIGFuZAogImltcG9zc2libGUiIEF0dHJpYnV0ZUVycm9ycyByZXN1bHQuICBBdCB3b3JzdCwgdHBfY2xlYXIgbGVhdmVzIGJlaGluZCBhbgogaW5zYW5lIG9iamVjdCBhdCB0aGUgQyBsZXZlbCwgYW5kIHNlZ2ZhdWx0cyByZXN1bHQgKGhpc3RvcmljYWxseSwgbW9zdAotb2Z0ZW4gYnkgc2V0dGluZyBhIG5ldy1zdHlsZSBjbGFzcydzIG1ybyBwb2ludGVyIHRvIE5VTEwsIGFmdGVyIHdoaWNoCi1hdHRyaWJ1dGUgbG9va3VwcyBwZXJmb3JtZWQgYnkgdGhlIGNsYXNzIGNhbiBzZWdmYXVsdCkuCitvZnRlbiBieSBzZXR0aW5nIGEgY2xhc3MncyBtcm8gcG9pbnRlciB0byBOVUxMLCBhZnRlciB3aGljaCBhdHRyaWJ1dGUKK2xvb2t1cHMgcGVyZm9ybWVkIGJ5IHRoZSBjbGFzcyBjYW4gc2VnZmF1bHQpLgogCiBPVE9ILCBpdCdzIE9LIHRvIHJ1biBQeXRob24tbGV2ZWwgY29kZSB0aGF0IGNhbid0IGFjY2VzcyB1bnJlYWNoYWJsZQogb2JqZWN0cywgYW5kIHNvbWV0aW1lcyB0aGF0J3MgbmVjZXNzYXJ5LiAgVGhlIGNoaWVmIGV4YW1wbGUgaXMgdGhlIGNhbGxiYWNrCkBAIC0xMTksNyArMTE5LDcgQEAKIGl0IHRvb2sgcXVpdGUgYSB3aGlsZSB0byBkcmVhbSB1cCBmYWlsaW5nIHRlc3QgY2FzZXMuICBab3BlMyBzYXcgc2VnZmF1bHRzCiBkdXJpbmcgc2h1dGRvd24sIGR1cmluZyB0aGUgc2Vjb25kIGNhbGwgb2YgZ2MgaW4gUHlfRmluYWxpemUsIGFmdGVyIG1vc3QKIG1vZHVsZXMgaGFkIGJlZW4gdG9ybiBkb3duLiAgVGhhdCBjcmVhdGVzIG1hbnkgdHJhc2ggY3ljbGVzIChlc3AuIHRob3NlCi1pbnZvbHZpbmcgbmV3LXN0eWxlIGNsYXNzZXMpLCBtYWtpbmcgdGhlIHByb2JsZW0gbXVjaCBtb3JlIGxpa2VseS4gIE9uY2UgeW91CitpbnZvbHZpbmcgY2xhc3NlcyksIG1ha2luZyB0aGUgcHJvYmxlbSBtdWNoIG1vcmUgbGlrZWx5LiAgT25jZSB5b3UKIGtub3cgd2hhdCdzIHJlcXVpcmVkIHRvIHByb3Zva2UgdGhlIHByb2JsZW0sIHRob3VnaCwgaXQncyBlYXN5IHRvIGNyZWF0ZQogdGVzdHMgdGhhdCBzZWdmYXVsdCBiZWZvcmUgc2h1dGRvd24uCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA4YzUyNGY4Li5mNzgyZGQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC02NSwxNyArNjUsMTcgQEAKIC8qIFB5dGhvbiBzdHJpbmcgdG8gdXNlIGlmIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzICovCiBzdGF0aWMgUHlPYmplY3QgKmdjX3N0ciA9IE5VTEw7CiAKLS8qIFB5dGhvbiBzdHJpbmcgdXNlZCB0byBsb29rIGZvciBfX2RlbF9fIGF0dHJpYnV0ZS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqZGVsc3RyID0gTlVMTDsKKy8qIGEgbGlzdCBvZiBjYWxsYmFja3MgdG8gYmUgaW52b2tlZCB3aGVuIGNvbGxlY3Rpb24gaXMgcGVyZm9ybWVkICovCitzdGF0aWMgUHlPYmplY3QgKmNhbGxiYWNrcyA9IE5VTEw7CiAKLS8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHdobyBzdXJ2aXZlZCB0aGUgbGFzdCBmdWxsIGNvbGxlY3Rpb24uIEl0CisvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHN1cnZpdmVkIHRoZSBsYXN0IGZ1bGwgY29sbGVjdGlvbi4gSXQKICAgIGFwcHJveGltYXRlcyB0aGUgbnVtYmVyIG9mIGxvbmcgbGl2ZWQgb2JqZWN0cyB0cmFja2VkIGJ5IHRoZSBHQy4KIAogICAgKGJ5ICJmdWxsIGNvbGxlY3Rpb24iLCB3ZSBtZWFuIGEgY29sbGVjdGlvbiBvZiB0aGUgb2xkZXN0IGdlbmVyYXRpb24pLgogKi8KIHN0YXRpYyBQeV9zc2l6ZV90IGxvbmdfbGl2ZWRfdG90YWwgPSAwOwogCi0vKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB3aG8gc3Vydml2ZWQgYWxsICJub24tZnVsbCIgY29sbGVjdGlvbnMsCisvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHN1cnZpdmVkIGFsbCAibm9uLWZ1bGwiIGNvbGxlY3Rpb25zLAogICAgYW5kIGFyZSBhd2FpdGluZyB0byB1bmRlcmdvIGEgZnVsbCBjb2xsZWN0aW9uIGZvciB0aGUgZmlyc3QgdGltZS4KIAogKi8KQEAgLTczMSw4ICs3MzEsOCBAQAogc3RhdGljIHZvaWQKIGRlYnVnX2N5Y2xlKGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQogewotICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogJS4xMDBzIDwlLjEwMHMgJXA+XG4iLAotICAgICAgICAgICAgICAgICAgICAgIG1zZywgUHlfVFlQRShvcCktPnRwX25hbWUsIG9wKTsKKyAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImdjOiAlcyA8JXMgJXA+XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CiB9CiAKIC8qIEhhbmRsZSB1bmNvbGxlY3RhYmxlIGdhcmJhZ2UgKGN5Y2xlcyB3aXRoIGZpbmFsaXplcnMsIGFuZCBzdHVmZiByZWFjaGFibGUKQEAgLTgxMyw2ICs4MTMsOSBAQAogICAgICh2b2lkKVB5VHVwbGVfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CisgICAgKHZvaWQpUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAogc3RhdGljIGRvdWJsZQpAQCAtODIwLDcgKzgyMyw5IEBACiB7CiAgICAgZG91YmxlIHJlc3VsdCA9IDA7CiAgICAgaWYgKHRtb2QgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodG1vZCwgInRpbWUiLCBOVUxMKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgUHlPYmplY3QgKmYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRtb2QsICZQeUlkX3RpbWUsIE5VTEwpOwogICAgICAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CkBAIC04MzYsNyArODQxLDcgQEAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCiAgKiBjb2xsZWN0aW9uIHByb2Nlc3Mgd29ya3MuICovCiBzdGF0aWMgUHlfc3NpemVfdAotY29sbGVjdChpbnQgZ2VuZXJhdGlvbikKK2NvbGxlY3QoaW50IGdlbmVyYXRpb24sIFB5X3NzaXplX3QgKm5fY29sbGVjdGVkLCBQeV9zc2l6ZV90ICpuX3VuY29sbGVjdGFibGUpCiB7CiAgICAgaW50IGk7CiAgICAgUHlfc3NpemVfdCBtID0gMDsgLyogIyBvYmplY3RzIGNvbGxlY3RlZCAqLwpAQCAtODQ4LDEyICs4NTMsNiBAQAogICAgIFB5R0NfSGVhZCAqZ2M7CiAgICAgZG91YmxlIHQxID0gMC4wOwogCi0gICAgaWYgKGRlbHN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRlbHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2RlbF9fIik7Ci0gICAgICAgIGlmIChkZWxzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdjIGNvdWxkbid0IGFsbG9jYXRlIFwiX19kZWxfX1wiIik7Ci0gICAgfQotCiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBjb2xsZWN0aW5nIGdlbmVyYXRpb24gJWQuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24pOwpAQCAtOTkzLDkgKzk5Miw2NCBAQAogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZ2Nfc3RyKTsKICAgICAgICAgUHlfRmF0YWxFcnJvcigidW5leHBlY3RlZCBleGNlcHRpb24gZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiIpOwogICAgIH0KKworICAgIGlmIChuX2NvbGxlY3RlZCkKKyAgICAgICAgKm5fY29sbGVjdGVkID0gbTsKKyAgICBpZiAobl91bmNvbGxlY3RhYmxlKQorICAgICAgICAqbl91bmNvbGxlY3RhYmxlID0gbjsKICAgICByZXR1cm4gbittOwogfQogCisvKiBJbnZva2UgcHJvZ3Jlc3MgY2FsbGJhY2tzIHRvIG5vdGlmeSBjbGllbnRzIHRoYXQgZ2FyYmFnZSBjb2xsZWN0aW9uCisgKiBpcyBzdGFydGluZyBvciBzdG9wcGluZworICovCitzdGF0aWMgdm9pZAoraW52b2tlX2djX2NhbGxiYWNrKGNvbnN0IGNoYXIgKnBoYXNlLCBpbnQgZ2VuZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlY3RlZCwgUHlfc3NpemVfdCB1bmNvbGxlY3RhYmxlKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqaW5mbyA9IE5VTEw7CisKKyAgICAvKiB3ZSBtYXkgZ2V0IGNhbGxlZCB2ZXJ5IGVhcmx5ICovCisgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgLyogVGhlIGxvY2FsIHZhcmlhYmxlIGNhbm5vdCBiZSByZWJvdW5kLCBjaGVjayBpdCBmb3Igc2FuaXR5ICovCisgICAgYXNzZXJ0KGNhbGxiYWNrcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVja0V4YWN0KGNhbGxiYWNrcykpOworICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoY2FsbGJhY2tzKSAhPSAwKSB7CisgICAgICAgIGluZm8gPSBQeV9CdWlsZFZhbHVlKCJ7c2lzbnNufSIsCisgICAgICAgICAgICAiZ2VuZXJhdGlvbiIsIGdlbmVyYXRpb24sCisgICAgICAgICAgICAiY29sbGVjdGVkIiwgY29sbGVjdGVkLAorICAgICAgICAgICAgInVuY29sbGVjdGFibGUiLCB1bmNvbGxlY3RhYmxlKTsKKyAgICAgICAgaWYgKGluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoaT0wOyBpPFB5TGlzdF9HRVRfU0laRShjYWxsYmFja3MpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnIsICpjYiA9IFB5TGlzdF9HRVRfSVRFTShjYWxsYmFja3MsIGkpOworICAgICAgICBQeV9JTkNSRUYoY2IpOyAvKiBtYWtlIHN1cmUgY2IgZG9lc24ndCBnbyBhd2F5ICovCisgICAgICAgIHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2IsICJzTyIsIHBoYXNlLCBpbmZvKTsKKyAgICAgICAgUHlfWERFQ1JFRihyKTsKKyAgICAgICAgaWYgKHIgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShjYik7CisgICAgICAgIFB5X0RFQ1JFRihjYik7CisgICAgfQorICAgIFB5X1hERUNSRUYoaW5mbyk7Cit9CisKKy8qIFBlcmZvcm0gZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIGEgZ2VuZXJhdGlvbiBhbmQgaW52b2tlCisgKiBwcm9ncmVzcyBjYWxsYmFja3MuCisgKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citjb2xsZWN0X3dpdGhfY2FsbGJhY2soaW50IGdlbmVyYXRpb24pCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQsIGNvbGxlY3RlZCwgdW5jb2xsZWN0YWJsZTsKKyAgICBpbnZva2VfZ2NfY2FsbGJhY2soInN0YXJ0IiwgZ2VuZXJhdGlvbiwgMCwgMCk7CisgICAgcmVzdWx0ID0gY29sbGVjdChnZW5lcmF0aW9uLCAmY29sbGVjdGVkLCAmdW5jb2xsZWN0YWJsZSk7CisgICAgaW52b2tlX2djX2NhbGxiYWNrKCJzdG9wIiwgZ2VuZXJhdGlvbiwgY29sbGVjdGVkLCB1bmNvbGxlY3RhYmxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlfc3NpemVfdAogY29sbGVjdF9nZW5lcmF0aW9ucyh2b2lkKQogewpAQCAtMTAxNCw3ICsxMDY4LDcgQEAKICAgICAgICAgICAgIGlmIChpID09IE5VTV9HRU5FUkFUSU9OUyAtIDEKICAgICAgICAgICAgICAgICAmJiBsb25nX2xpdmVkX3BlbmRpbmcgPCBsb25nX2xpdmVkX3RvdGFsIC8gNCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG4gPSBjb2xsZWN0KGkpOworICAgICAgICAgICAgbiA9IGNvbGxlY3Rfd2l0aF9jYWxsYmFjayhpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA4NSw3ICsxMTM5LDcgQEAKICAgICAgICAgbiA9IDA7IC8qIGFscmVhZHkgY29sbGVjdGluZywgZG9uJ3QgZG8gYW55dGhpbmcgKi8KICAgICBlbHNlIHsKICAgICAgICAgY29sbGVjdGluZyA9IDE7Ci0gICAgICAgIG4gPSBjb2xsZWN0KGdlbmFyZyk7CisgICAgICAgIG4gPSBjb2xsZWN0X3dpdGhfY2FsbGJhY2soZ2VuYXJnKTsKICAgICAgICAgY29sbGVjdGluZyA9IDA7CiAgICAgfQogCkBAIC0xMzc4LDYgKzE0MzIsMTUgQEAKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJnYXJiYWdlIiwgZ2FyYmFnZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChjYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBjYWxsYmFja3MgPSBQeUxpc3RfTmV3KDApOworICAgICAgICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGNhbGxiYWNrcyk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiY2FsbGJhY2tzIiwgY2FsbGJhY2tzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogSW1wb3J0aW5nIGNhbid0IGJlIGRvbmUgaW4gY29sbGVjdCgpIGJlY2F1c2UgY29sbGVjdCgpCiAgICAgICogY2FuIGJlIGNhbGxlZCB2aWEgUHlHQ19Db2xsZWN0KCkgaW4gUHlfRmluYWxpemUoKS4KICAgICAgKiBUaGlzIHdvdWxkbid0IGJlIGEgcHJvYmxlbSwgZXhjZXB0IHRoYXQgPGluaXRpYWxpemVkPiBpcwpAQCAtMTQxMCw3ICsxNDczLDcgQEAKICAgICAgICAgbiA9IDA7IC8qIGFscmVhZHkgY29sbGVjdGluZywgZG9uJ3QgZG8gYW55dGhpbmcgKi8KICAgICBlbHNlIHsKICAgICAgICAgY29sbGVjdGluZyA9IDE7Ci0gICAgICAgIG4gPSBjb2xsZWN0KE5VTV9HRU5FUkFUSU9OUyAtIDEpOworICAgICAgICBuID0gY29sbGVjdF93aXRoX2NhbGxiYWNrKE5VTV9HRU5FUkFUSU9OUyAtIDEpOwogICAgICAgICBjb2xsZWN0aW5nID0gMDsKICAgICB9CiAKQEAgLTE0NDcsNiArMTUxMCw3IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKGJ5dGVzKTsKICAgICAgICAgfQogICAgIH0KKyAgICBQeV9DTEVBUihjYWxsYmFja3MpOwogfQogCiAvKiBmb3IgZGVidWdnaW5nICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jIGIvTW9kdWxlcy9nZXRidWlsZGluZm8uYwppbmRleCA3MDY5YjZlLi4wOTcxYTY0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCisrKyBiL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKQEAgLTIwLDE0ICsyMCw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0vKiBvbiB1bml4LCBTVk5WRVJTSU9OIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotICogb24gV2luZG93cywgdGhlIHN0cmluZyBpcyBpbnRlcnBvbGF0ZWQgdXNpbmcKLSAqIHN1YndjcmV2LmV4ZQotICovCi0jaWZuZGVmIFNWTlZFUlNJT04KLSNkZWZpbmUgU1ZOVkVSU0lPTiAiJFdDUkFOR0UkJFdDTU9EUz9NOiQiCi0jZW5kaWYKLQogLyogWFhYIE9ubHkgdW5peCBidWlsZCBwcm9jZXNzIGhhcyBiZWVuIHRlc3RlZCAqLwogI2lmbmRlZiBIR1ZFUlNJT04KICNkZWZpbmUgSEdWRVJTSU9OICIiCkBAIC01NywxNiArNDksNiBAQAogfQogCiBjb25zdCBjaGFyICoKLV9QeV9zdm52ZXJzaW9uKHZvaWQpCi17Ci0gICAgLyogdGhlIGZvbGxvd2luZyBzdHJpbmcgY2FuIGJlIG1vZGlmaWVkIGJ5IHN1YndjcmV2LmV4ZSAqLwotICAgIHN0YXRpYyBjb25zdCBjaGFyIHN2bnZlcnNpb25bXSA9IFNWTlZFUlNJT047Ci0gICAgaWYgKHN2bnZlcnNpb25bMF0gIT0gJyQnKQotICAgICAgICByZXR1cm4gc3ZudmVyc2lvbjsgLyogaXQgd2FzIGludGVycG9sYXRlZCwgb3IgcGFzc2VkIG9uIGNvbW1hbmQgbGluZSAqLwotICAgIHJldHVybiAiVW52ZXJzaW9uZWQgZGlyZWN0b3J5IjsKLX0KLQotY29uc3QgY2hhciAqCiBfUHlfaGd2ZXJzaW9uKHZvaWQpCiB7CiAgICAgcmV0dXJuIEhHVkVSU0lPTjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggYjdmOTU3My4uYjk4YzUyMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTI2MCw2ICsyNjAsNTkgQEAKICAgICB3Y3NjcHkocGF0aCwgYnVmZmVyKTsKIH0KIAorLyogc2VhcmNoIGZvciBhIHByZWZpeCB2YWx1ZSBpbiBhbiBlbnZpcm9ubWVudCBmaWxlLiBJZiBmb3VuZCwgY29weSBpdAorICAgdG8gdGhlIHByb3ZpZGVkIGJ1ZmZlciwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgbm8gbW9yZSB0aGFuIE1BWFBBVEhMRU4KKyAgIGJ5dGVzIGxvbmcuCisqLworCitzdGF0aWMgaW50CitmaW5kX2Vudl9jb25maWdfdmFsdWUoRklMRSAqIGVudl9maWxlLCBjb25zdCB3Y2hhcl90ICoga2V5LCB3Y2hhcl90ICogdmFsdWUpCit7CisgICAgaW50IHJlc3VsdCA9IDA7IC8qIG1lYW5pbmcgbm90IGZvdW5kICovCisgICAgY2hhciBidWZmZXJbTUFYUEFUSExFTioyKzFdOyAgLyogYWxsb3cgZXh0cmEgZm9yIGtleSwgJz0nLCBldGMuICovCisKKyAgICBmc2VlayhlbnZfZmlsZSwgMCwgU0VFS19TRVQpOworICAgIHdoaWxlICghZmVvZihlbnZfZmlsZSkpIHsKKyAgICAgICAgY2hhciAqIHAgPSBmZ2V0cyhidWZmZXIsIE1BWFBBVEhMRU4qMiwgZW52X2ZpbGUpOworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07CisgICAgICAgIFB5T2JqZWN0ICogZGVjb2RlZDsKKyAgICAgICAgaW50IG47CisKKyAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuID0gc3RybGVuKHApOworICAgICAgICBpZiAocFtuIC0gMV0gIT0gJ1xuJykgeworICAgICAgICAgICAgLyogbGluZSBoYXMgb3ZlcmZsb3dlZCAtIGJhaWwgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChwWzBdID09ICcjJykgICAgLyogQ29tbWVudCAtIHNraXAgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjgoYnVmZmVyLCBuLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIGlmIChkZWNvZGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgazsKKyAgICAgICAgICAgIHdjaGFyX3QgKiBzdGF0ZTsKKyAgICAgICAgICAgIGsgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhcihkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGJ1ZmZlciwgTUFYUEFUSExFTiAqIDIpOworICAgICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOworICAgICAgICAgICAgaWYgKGsgPj0gMCkgeworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2sodG1wYnVmZmVyLCBMIiBcdFxyXG4iLCAmc3RhdGUpOworICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIiBcdCIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NuY3B5KHZhbHVlLCB0b2ssIE1BWFBBVEhMRU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyogc2VhcmNoX2Zvcl9wcmVmaXggcmVxdWlyZXMgdGhhdCBhcmd2MF9wYXRoIGJlIG5vIG1vcmUgdGhhbiBNQVhQQVRITEVOCiAgICBieXRlcyBsb25nLgogKi8KQEAgLTQwNiw3ICs0NTksNyBAQAogICAgIHN0YXRpYyB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307CiAgICAgc3RhdGljIHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CiAgICAgY2hhciAqX3J0cHlwYXRoID0gUHlfR0VURU5WKCJQWVRIT05QQVRIIik7IC8qIFhYWCB1c2Ugd2lkZSB2ZXJzaW9uIG9uIFdpbmRvd3MgKi8KLSAgICB3Y2hhcl90IHJ0cHlwYXRoW01BWFBBVEhMRU4rMV07CisgICAgd2NoYXJfdCAqcnRweXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CiAgICAgY2hhciAqX3BhdGggPSBnZXRlbnYoIlBBVEgiKTsKICAgICB3Y2hhcl90ICpwYXRoX2J1ZmZlciA9IE5VTEw7CkBAIC00MjEsNiArNDc0LDcgQEAKICAgICB3Y2hhcl90ICpkZWZwYXRoOwogI2lmZGVmIFdJVEhfTkVYVF9GUkFNRVdPUksKICAgICBOU01vZHVsZSBweXRob25Nb2R1bGU7CisgICAgY29uc3QgY2hhciogICAgbW9kUGF0aDsKICNlbmRpZgogI2lmZGVmIF9fQVBQTEVfXwogI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gTUFDX09TX1hfVkVSU0lPTl8xMF80CkBAIC01MTUsOCArNTY5LDggQEAKICAgICAqLwogICAgIHB5dGhvbk1vZHVsZSA9IE5TTW9kdWxlRm9yU3ltYm9sKE5TTG9va3VwQW5kQmluZFN5bWJvbCgiX1B5X0luaXRpYWxpemUiKSk7CiAgICAgLyogVXNlIGR5bGliIGZ1bmN0aW9ucyB0byBmaW5kIG91dCB3aGVyZSB0aGUgZnJhbWV3b3JrIHdhcyBsb2FkZWQgZnJvbSAqLwotICAgIGJ1ZiA9ICh3Y2hhcl90ICopTlNMaWJyYXJ5TmFtZUZvck1vZHVsZShweXRob25Nb2R1bGUpOwotICAgIGlmIChidWYgIT0gTlVMTCkgeworICAgIG1vZFBhdGggPSBOU0xpYnJhcnlOYW1lRm9yTW9kdWxlKHB5dGhvbk1vZHVsZSk7CisgICAgaWYgKG1vZFBhdGggIT0gTlVMTCkgewogICAgICAgICAvKiBXZSdyZSBpbiBhIGZyYW1ld29yay4gKi8KICAgICAgICAgLyogU2VlIGlmIHdlIG1pZ2h0IGJlIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuIFRoZSBmcmFtZXdvcmsgaW4gdGhlCiAgICAgICAgICoqIGJ1aWxkIGRpcmVjdG9yeSBpcyBpbmNvbXBsZXRlLCBpdCBvbmx5IGhhcyB0aGUgLmR5bGliIGFuZCBhIGZldwpAQCAtNTI1LDcgKzU3OSwxMiBAQAogICAgICAgICAqKiBiZSBydW5uaW5nIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LCBzbyB3ZSB1c2UgdGhlCiAgICAgICAgICoqIGJ1aWxkLWRpcmVjdG9yeS1zcGVjaWZpYyBsb2dpYyB0byBmaW5kIExpYiBhbmQgc3VjaC4KICAgICAgICAgKi8KLSAgICAgICAgd2NzbmNweShhcmd2MF9wYXRoLCBidWYsIE1BWFBBVEhMRU4pOworICAgICAgICB3Y2hhcl90KiB3YnVmID0gX1B5X2NoYXIyd2NoYXIobW9kUGF0aCwgTlVMTCk7CisgICAgICAgIGlmICh3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBkZWNvZGUgZnJhbWV3b3JrIGxvY2F0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHdidWYsIE1BWFBBVEhMRU4pOwogICAgICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CiAgICAgICAgIGpvaW5wYXRoKGFyZ3YwX3BhdGgsIGxpYl9weXRob24pOwogICAgICAgICBqb2lucGF0aChhcmd2MF9wYXRoLCBMQU5ETUFSSyk7CkBAIC01MzYsOCArNTk1LDkgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIFVzZSB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkgYXMgdGhlIHByb2dwYXRoICovCi0gICAgICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIGJ1ZiwgTUFYUEFUSExFTik7CisgICAgICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHdidWYsIE1BWFBBVEhMRU4pOwogICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU2NSw2ICs2MjUsNDAgQEAKICAgICAgICBNQVhQQVRITEVOIGJ5dGVzIGxvbmcuCiAgICAgKi8KIAorICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKKyAgICAgICBleGVjdXRhYmxlJ3MgZGlyZWN0b3J5IGFuZCB0aGVuIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgIElmIGZvdW5kLCBvcGVuIGl0IGZvciB1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHByZWZpeGVzLgorICAgICovCisKKyAgICB7CisgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4rMV07CisgICAgICAgIHdjaGFyX3QgKmVudl9jZmcgPSBMInB5dmVudi5jZmciOworICAgICAgICBGSUxFICogZW52X2ZpbGUgPSBOVUxMOworCisgICAgICAgIHdjc2NweSh0bXBidWZmZXIsIGFyZ3YwX3BhdGgpOworCisgICAgICAgIGpvaW5wYXRoKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKKyAgICAgICAgICAgIGpvaW5wYXRoKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCisgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmY2xvc2UoZW52X2ZpbGUpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCEocGZvdW5kID0gc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgaG9tZSwgX3ByZWZpeCkpKSB7CiAgICAgICAgIGlmICghUHlfRnJvemVuRmxhZykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLApAQCAtNjA2LDEyICs3MDAsMTIgQEAKICAgICBidWZzeiA9IDA7CiAKICAgICBpZiAoX3J0cHlwYXRoKSB7Ci0gICAgICAgIHNpemVfdCBzID0gbWJzdG93Y3MocnRweXBhdGgsIF9ydHB5cGF0aCwgc2l6ZW9mKHJ0cHlwYXRoKS9zaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAocyA9PSAoc2l6ZV90KS0xIHx8IHMgPj1zaXplb2YocnRweXBhdGgpKQotICAgICAgICAgICAgLyogWFhYIGRlYWwgd2l0aCBlcnJvcnMgbW9yZSBncmFjZWZ1bGx5ICovCisgICAgICAgIHNpemVfdCBydHB5cGF0aF9sZW47CisgICAgICAgIHJ0cHlwYXRoID0gX1B5X2NoYXIyd2NoYXIoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKKyAgICAgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCisgICAgICAgICAgICBidWZzeiArPSBydHB5cGF0aF9sZW4gKyAxOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBfcnRweXBhdGggPSBOVUxMOwotICAgICAgICBpZiAoX3J0cHlwYXRoKQotICAgICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKHJ0cHlwYXRoKSArIDE7CiAgICAgfQogCiAgICAgZGVmcGF0aCA9IF9weXRob25wYXRoOwpAQCAtNjQ1LDcgKzczOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBSdW4tdGltZSB2YWx1ZSBvZiAkUFlUSE9OUEFUSCBnb2VzIGZpcnN0ICovCi0gICAgICAgIGlmIChfcnRweXBhdGgpIHsKKyAgICAgICAgaWYgKHJ0cHlwYXRoKSB7CiAgICAgICAgICAgICB3Y3NjcHkoYnVmLCBydHB5cGF0aCk7CiAgICAgICAgICAgICB3Y3NjYXQoYnVmLCBkZWxpbWl0ZXIpOwogICAgICAgICB9CkBAIC03MTksNiArODEzLDggQEAKICAgICBQeU1lbV9GcmVlKF9weXRob25wYXRoKTsKICAgICBQeU1lbV9GcmVlKF9wcmVmaXgpOwogICAgIFB5TWVtX0ZyZWUoX2V4ZWNfcHJlZml4KTsKKyAgICBpZiAocnRweXBhdGggIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRnJlZShydHB5cGF0aCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKaW5kZXggNzdlNzZmZS4uOTExNWI2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCkBAIC0xMzQsNiArMTM0LDUzIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitncm91cGJ5X3JlZHVjZShncm91cGJ5b2JqZWN0ICpseikKK3sKKyAgICAvKiByZWR1Y2UgYXMgYSAnbmV3JyBjYWxsIHdpdGggYW4gb3B0aW9uYWwgJ3NldHN0YXRlJyBpZiBncm91cGJ5CisgICAgICogaGFzIHN0YXJ0ZWQKKyAgICAgKi8KKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgaWYgKGx6LT50Z3RrZXkgJiYgbHotPmN1cnJrZXkgJiYgbHotPmN1cnJ2YWx1ZSkKKyAgICAgICAgdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJPKE9PKShPT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+aXQsIGx6LT5rZXlmdW5jLCBsei0+Y3VycmtleSwgbHotPmN1cnJ2YWx1ZSwgbHotPnRndGtleSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+aXQsIGx6LT5rZXlmdW5jKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JvdXBieV9zZXRzdGF0ZShncm91cGJ5b2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpjdXJya2V5LCAqY3VycnZhbHVlLCAqdGd0a2V5OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9PTyIsICZjdXJya2V5LCAmY3VycnZhbHVlLCAmdGd0a2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQ0xFQVIobHotPmN1cnJrZXkpOworICAgIGx6LT5jdXJya2V5ID0gY3VycmtleTsKKyAgICBQeV9JTkNSRUYobHotPmN1cnJrZXkpOworICAgIFB5X0NMRUFSKGx6LT5jdXJydmFsdWUpOworICAgIGx6LT5jdXJydmFsdWUgPSBjdXJydmFsdWU7CisgICAgUHlfSU5DUkVGKGx6LT5jdXJydmFsdWUpOworICAgIFB5X0NMRUFSKGx6LT50Z3RrZXkpOworICAgIGx6LT50Z3RrZXkgPSB0Z3RrZXk7CisgICAgUHlfSU5DUkVGKGx6LT50Z3RrZXkpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgZ3JvdXBieV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZ3JvdXBieV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihncm91cGJ5X2RvYywKICJncm91cGJ5KGl0ZXJhYmxlWywga2V5ZnVuY10pIC0+IGNyZWF0ZSBhbiBpdGVyYXRvciB3aGljaCByZXR1cm5zXG5cCiAoa2V5LCBzdWItaXRlcmF0b3IpIGdyb3VwZWQgYnkgZWFjaCB2YWx1ZSBvZiBrZXkodmFsdWUpLlxuIik7CkBAIC0xNjgsNyArMjE1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWdyb3VwYnlfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBncm91cGJ5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTE5NCw2ICsyNDEsMTcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgX2dyb3VwZXJfdHlwZTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK19ncm91cGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcGFyZW50LCAqdGd0a2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIU8iLCAmZ3JvdXBieV90eXBlLCAmcGFyZW50LCAmdGd0a2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gX2dyb3VwZXJfY3JlYXRlKChncm91cGJ5b2JqZWN0KikgcGFyZW50LCB0Z3RrZXkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogX2dyb3VwZXJfY3JlYXRlKGdyb3VwYnlvYmplY3QgKnBhcmVudCwgUHlPYmplY3QgKnRndGtleSkKIHsKICAgICBfZ3JvdXBlcm9iamVjdCAqaWdvOwpAQCAtMjY5LDYgKzMyNywyMCBAQAogICAgIHJldHVybiByOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX2dyb3VwZXJfcmVkdWNlKF9ncm91cGVyb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgX2dyb3VwZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKV9ncm91cGVyX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgX2dyb3VwZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLl9ncm91cGVyIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yOTgsNyArMzcwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKV9ncm91cGVyX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBfZ3JvdXBlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTMwOCw3ICszODAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBfZ3JvdXBlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCkBAIC0zNDQsNyArNDE2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdGVlZGF0YW9iamVjdF9uZXcoUHlPYmplY3QgKml0KQordGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChQeU9iamVjdCAqaXQpCiB7CiAgICAgdGVlZGF0YW9iamVjdCAqdGRvOwogCkBAIC0zNjQsNyArNDM2LDcgQEAKIHRlZWRhdGFvYmplY3RfanVtcGxpbmsodGVlZGF0YW9iamVjdCAqdGRvKQogewogICAgIGlmICh0ZG8tPm5leHRsaW5rID09IE5VTEwpCi0gICAgICAgIHRkby0+bmV4dGxpbmsgPSB0ZWVkYXRhb2JqZWN0X25ldyh0ZG8tPml0KTsKKyAgICAgICAgdGRvLT5uZXh0bGluayA9IHRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwodGRvLT5pdCk7CiAgICAgUHlfWElOQ1JFRih0ZG8tPm5leHRsaW5rKTsKICAgICByZXR1cm4gdGRvLT5uZXh0bGluazsKIH0KQEAgLTQyMCwxMSArNDkyLDgxIEBACiAgICAgUHlPYmplY3RfR0NfRGVsKHRkbyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVkYXRhb2JqZWN0X3JlZHVjZSh0ZWVkYXRhb2JqZWN0ICp0ZG8pCit7CisgICAgaW50IGk7CisgICAgLyogY3JlYXRlIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgYWxyZWFkeSBpdGVyYXRlZCB2YWx1ZXMgKi8KKyAgICBQeU9iamVjdCAqdmFsdWVzID0gUHlMaXN0X05ldyh0ZG8tPm51bXJlYWQpOworICAgIGlmICghdmFsdWVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MCA7IGk8dGRvLT5udW1yZWFkIDsgaSsrKSB7CisgICAgICAgIFB5X0lOQ1JFRih0ZG8tPnZhbHVlc1tpXSk7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2YWx1ZXMsIGksIHRkby0+dmFsdWVzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT05PKSIsIFB5X1RZUEUodGRvKSwgdGRvLT5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGRvLT5uZXh0bGluayA/IHRkby0+bmV4dGxpbmsgOiBQeV9Ob25lKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVkYXRhb2JqZWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgdGVlZGF0YW9iamVjdCAqdGRvOworICAgIFB5T2JqZWN0ICppdCwgKnZhbHVlcywgKm5leHQ7CisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBhc3NlcnQodHlwZSA9PSAmdGVlZGF0YW9iamVjdF90eXBlKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIU8iLCAmaXQsICZQeUxpc3RfVHlwZSwgJnZhbHVlcywgJm5leHQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRkbyA9ICh0ZWVkYXRhb2JqZWN0ICopdGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChpdCk7CisgICAgaWYgKCF0ZG8pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHZhbHVlcyk7CisgICAgaWYgKGxlbiA+IExJTktDRUxMUykKKyAgICAgICAgZ290byBlcnI7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgdGRvLT52YWx1ZXNbaV0gPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKHRkby0+dmFsdWVzW2ldKTsKKyAgICB9CisgICAgLyogbGVuIDw9IExJTktDRUxMUyA8IElOVF9NQVggKi8KKyAgICB0ZG8tPm51bXJlYWQgPSBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgaW50KTsKKworICAgIGlmIChsZW4gPT0gTElOS0NFTExTKSB7CisgICAgICAgIGlmIChuZXh0ICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGlmIChQeV9UWVBFKG5leHQpICE9ICZ0ZWVkYXRhb2JqZWN0X3R5cGUpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBhc3NlcnQodGRvLT5uZXh0bGluayA9PSBOVUxMKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihuZXh0KTsKKyAgICAgICAgICAgIHRkby0+bmV4dGxpbmsgPSBuZXh0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5leHQgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgIGdvdG8gZXJyOyAvKiBzaG91bGRuJ3QgaGF2ZSBhIG5leHQgaWYgd2UgYXJlIG5vdCBmdWxsICovCisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKXRkbzsKKworZXJyOgorICAgIFB5X1hERUNSRUYodGRvKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgYXJndW1lbnRzIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0ZWVkYXRhb2JqZWN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVkYXRhb2JqZWN0X3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIodGVlZGF0YW9iamVjdF9kb2MsICJEYXRhIGNvbnRhaW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCi0gICAgIml0ZXJ0b29scy50ZWVfZGF0YW9iamVjdCIsICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIml0ZXJ0b29scy5fdGVlX2RhdGFvYmplY3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHRlZWRhdGFvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtNDUxLDcgKzU5Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB0ZWVkYXRhb2JqZWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNDYxLDcgKzYwMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgdGVlZGF0YW9iamVjdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKQEAgLTUyOCw3ICs2NzAsNyBAQAogICAgIHRvID0gUHlPYmplY3RfR0NfTmV3KHRlZW9iamVjdCwgJnRlZV90eXBlKTsKICAgICBpZiAodG8gPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIHRvLT5kYXRhb2JqID0gKHRlZWRhdGFvYmplY3QgKil0ZWVkYXRhb2JqZWN0X25ldyhpdCk7CisgICAgdG8tPmRhdGFvYmogPSAodGVlZGF0YW9iamVjdCAqKXRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwoaXQpOwogICAgIGlmICghdG8tPmRhdGFvYmopIHsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKHRvKTsKICAgICAgICAgdG8gPSBOVUxMOwpAQCAtNTQ4LDcgKzY5MCw3IEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGVlIiwgMSwgMSwgJml0ZXJhYmxlKSkKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJfdGVlIiwgMSwgMSwgJml0ZXJhYmxlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHRlZV9mcm9taXRlcmFibGUoaXRlcmFibGUpOwogfQpAQCAtNTcwLDE3ICs3MTIsNDMgQEAKICAgICBQeU9iamVjdF9HQ19EZWwodG8pOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVlX3JlZHVjZSh0ZWVvYmplY3QgKnRvKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpKShPaSkiLCBQeV9UWVBFKHRvKSwgdG8tPmRhdGFvYmosIHRvLT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVfc2V0c3RhdGUodGVlb2JqZWN0ICp0bywgUHlPYmplY3QgKnN0YXRlKQoreworICAgIHRlZWRhdGFvYmplY3QgKnRkbzsKKyAgICBpbnQgaW5kZXg7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiTyFpIiwgJnRlZWRhdGFvYmplY3RfdHlwZSwgJnRkbywgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IExJTktDRUxMUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfQ0xFQVIodG8tPmRhdGFvYmopOworICAgIHRvLT5kYXRhb2JqID0gdGRvOworICAgIFB5X0lOQ1JFRih0by0+ZGF0YW9iaik7CisgICAgdG8tPmluZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIFB5RG9jX1NUUlZBUih0ZWVvYmplY3RfZG9jLAogIkl0ZXJhdG9yIHdyYXBwZWQgdG8gbWFrZSBpdCBjb3B5YWJsZSIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgdGVlX21ldGhvZHNbXSA9IHsKICAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbil0ZWVfY29weSwgIE1FVEhfTk9BUkdTLCB0ZWVjb3B5X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGVlX3NldHN0YXRlLCAgICBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy50ZWUiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMuX3RlZSIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YodGVlb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTYyNiw2ICs3OTQsNyBAQAogewogICAgIFB5X3NzaXplX3QgaSwgbj0yOwogICAgIFB5T2JqZWN0ICppdCwgKml0ZXJhYmxlLCAqY29weWFibGUsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX19jb3B5X18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfG4iLCAmaXRlcmFibGUsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDMsNyArODEyLDcgQEAKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoaXQsICJfX2NvcHlfXyIpKSB7CisgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKGl0LCAmUHlJZF9fX2NvcHlfXykpIHsKICAgICAgICAgY29weWFibGUgPSB0ZWVfZnJvbWl0ZXJhYmxlKGl0KTsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgaWYgKGNvcHlhYmxlID09IE5VTEwpIHsKQEAgLTY1NCw3ICs4MjMsOCBAQAogICAgICAgICBjb3B5YWJsZSA9IGl0OwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBjb3B5YWJsZSk7CiAgICAgZm9yIChpPTEgOyBpPG4gOyBpKyspIHsKLSAgICAgICAgY29weWFibGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNvcHlhYmxlLCAiX19jb3B5X18iLCBOVUxMKTsKKworICAgICAgICBjb3B5YWJsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoY29weWFibGUsICZQeUlkX19fY29weV9fLCBOVUxMKTsKICAgICAgICAgaWYgKGNvcHlhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NjksNiArOTM5LDM4IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY3ljbGVfcmVkdWNlKGN5Y2xlb2JqZWN0ICpseikKK3sKKyAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0CisgICAgICogdGhlIHNhdmVkIHN0YXRlIG9uIGl0LgorICAgICAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pKE9pKSIsIFB5X1RZUEUobHopLCAKKyAgICAgICAgbHotPml0LCBsei0+c2F2ZWQsIGx6LT5maXJzdHBhc3MpOworICAgIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK2N5Y2xlX3NldHN0YXRlKGN5Y2xlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpzYXZlZD1OVUxMOworICAgIGludCBmaXJzdHBhc3M7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT2kiLCAmc2F2ZWQsICZmaXJzdHBhc3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9DTEVBUihsei0+c2F2ZWQpOworICAgIGx6LT5zYXZlZCA9IHNhdmVkOworICAgIFB5X1hJTkNSRUYobHotPnNhdmVkKTsKKyAgICBsei0+Zmlyc3RwYXNzID0gZmlyc3RwYXNzICE9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjeWNsZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY3ljbGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljeWNsZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGN5Y2xlX2RvYywKICJjeWNsZShpdGVyYWJsZSkgLS0+IGN5Y2xlIG9iamVjdFxuXAogXG5cCkBAIC04MDUsNyArMTAwNyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljeWNsZV9uZXh0LCAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY3ljbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC05MTMsNiArMTExNSwzMSBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2Ryb3B3aGlsZV9yZWR1Y2UoZHJvcHdoaWxlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Ryb3B3aGlsZV9zZXRzdGF0ZShkcm9wd2hpbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgaW50IHN0YXJ0ID0gUHlPYmplY3RfSXNUcnVlKHN0YXRlKTsKKyAgICBpZiAoc3RhcnQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsei0+c3RhcnQgPSBzdGFydDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGRyb3B3aGlsZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZHJvcHdoaWxlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pZHJvcHdoaWxlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZHJvcHdoaWxlX2RvYywKICJkcm9wd2hpbGUocHJlZGljYXRlLCBpdGVyYWJsZSkgLS0+IGRyb3B3aGlsZSBvYmplY3RcblwKIFxuXApAQCAtOTQ5LDcgKzExNzYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZHJvcHdoaWxlX25leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGRyb3B3aGlsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEwNDUsNyArMTI3Miw3IEBACiAgICAgfQogICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGdvb2QpOwogICAgIFB5X0RFQ1JFRihnb29kKTsKLSAgICBpZiAob2sgPiAwKQorICAgIGlmIChvayA9PSAxKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgaWYgKG9rID09IDApCkBAIC0xMDUzLDYgKzEyODAsMzAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rha2V3aGlsZV9yZWR1Y2UodGFrZXdoaWxlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0b3ApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGFrZXdoaWxlX3JlZHVjZV9zZXRzdGF0ZSh0YWtld2hpbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgaW50IHN0b3AgPSBQeU9iamVjdF9Jc1RydWUoc3RhdGUpOworICAgIGlmIChzdG9wIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbHotPnN0b3AgPSBzdG9wOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgdGFrZXdoaWxlX3JlZHVjZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGFrZXdoaWxlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGFrZXdoaWxlX3JlZHVjZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKIFB5RG9jX1NUUlZBUih0YWtld2hpbGVfZG9jLAogInRha2V3aGlsZShwcmVkaWNhdGUsIGl0ZXJhYmxlKSAtLT4gdGFrZXdoaWxlIG9iamVjdFxuXAogXG5cCkBAIC0xMDg5LDcgKzEzNDAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpdGFrZXdoaWxlX25leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHRha2V3aGlsZV9yZWR1Y2VfbWV0aG9kcywgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTI0NSw2ICsxNDk2LDQ0IEBACiAgICAgcmV0dXJuIGl0ZW07CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitpc2xpY2VfcmVkdWNlKGlzbGljZW9iamVjdCAqbHopCit7CisgICAgLyogV2hlbiB1bnBpY2tsZWQsIGdlbmVyYXRlIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGJvdW5kcywKKyAgICAgKiB0aGVuICdzZXRzdGF0ZScgd2l0aCB0aGUgbmV4dCBhbmQgY291bnQKKyAgICAgKi8KKyAgICBQeU9iamVjdCAqc3RvcDsKKyAgICBpZiAobHotPnN0b3AgPT0gLTEpIHsKKyAgICAgICAgc3RvcCA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihzdG9wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdG9wID0gUHlMb25nX0Zyb21Tc2l6ZV90KGx6LT5zdG9wKTsKKyAgICAgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbk5uKW4iLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgbHotPml0LCBsei0+bmV4dCwgc3RvcCwgbHotPnN0ZXAsCisgICAgICAgIGx6LT5jbnQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXNsaWNlX3NldHN0YXRlKGlzbGljZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGNudCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChjbnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbHotPmNudCA9IGNudDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGlzbGljZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24paXNsaWNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24paXNsaWNlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoaXNsaWNlX2RvYywKICJpc2xpY2UoaXRlcmFibGUsIFtzdGFydCxdIHN0b3AgWywgc3RlcF0pIC0tPiBpc2xpY2Ugb2JqZWN0XG5cCiBcblwKQEAgLTEyODUsNyArMTU3NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylpc2xpY2VfbmV4dCwgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgaXNsaWNlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMzgwLDYgKzE2NjksMTkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorc3Rhcm1hcF9yZWR1Y2Uoc3Rhcm1hcG9iamVjdCAqbHopCit7CisgICAgLyogSnVzdCBwaWNrbGUgdGhlIGl0ZXJhdG9yICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgc3Rhcm1hcF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pc3Rhcm1hcF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHN0YXJtYXBfZG9jLAogInN0YXJtYXAoZnVuY3Rpb24sIHNlcXVlbmNlKSAtLT4gc3Rhcm1hcCBvYmplY3RcblwKIFxuXApAQCAtMTQxNiw3ICsxNzE4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXN0YXJtYXBfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBzdGFybWFwX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTE1MzUsNiArMTgzNyw0MSBAQAogICAgIHJldHVybiBjaGFpbl9uZXh0KGx6KTsgICAgICAgICAgICAgICAgICAgICAgLyogcmVjdXJzZSBhbmQgdXNlIG5leHQgYWN0aXZlICovCiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjaGFpbl9yZWR1Y2UoY2hhaW5vYmplY3QgKmx6KQoreworICAgIGlmIChsei0+c291cmNlKSB7CisgICAgICAgIC8qIHdlIGNhbid0IHBpY2tsZSBmdW5jdGlvbiBvYmplY3RzIChpdGVydG9vbHMuZnJvbV9pdGVyYWJsZSkgc28KKyAgICAgICAgICogd2UgbXVzdCB1c2Ugc2V0c3RhdGUgdG8gcmVwbGFjZSB0aGUgaXRlcmFibGUuICBPbmUgZGF5IHdlCisgICAgICAgICAqIHdpbGwgZml4IHBpY2tsaW5nIG9mIGZ1bmN0aW9ucworICAgICAgICAgKi8KKyAgICAgICAgaWYgKGx6LT5hY3RpdmUpIHsKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCkoT08pIiwgUHlfVFlQRShseiksIGx6LT5zb3VyY2UsIGx6LT5hY3RpdmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKShPKSIsIFB5X1RZUEUobHopLCBsei0+c291cmNlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCkiLCBQeV9UWVBFKGx6KSk7IC8qIGV4aGF1c3RlZCAqLworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NoYWluX3NldHN0YXRlKGNoYWlub2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpzb3VyY2UsICphY3RpdmU9TlVMTDsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT3xPIiwgJnNvdXJjZSwgJmFjdGl2ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7CisgICAgbHotPnNvdXJjZSA9IHNvdXJjZTsKKyAgICBQeV9JTkNSRUYobHotPnNvdXJjZSk7CisgICAgUHlfQ0xFQVIobHotPmFjdGl2ZSk7CisgICAgbHotPmFjdGl2ZSA9IGFjdGl2ZTsKKyAgICBQeV9YSU5DUkVGKGx6LT5hY3RpdmUpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiBQeURvY19TVFJWQVIoY2hhaW5fZG9jLAogImNoYWluKCppdGVyYWJsZXMpIC0tPiBjaGFpbiBvYmplY3RcblwKIFxuXApAQCAtMTU1MSw2ICsxODg4LDEwIEBACiBzdGF0aWMgUHlNZXRob2REZWYgY2hhaW5fbWV0aG9kc1tdID0gewogICAgIHsiZnJvbV9pdGVyYWJsZSIsIChQeUNGdW5jdGlvbikgY2hhaW5fbmV3X2Zyb21faXRlcmFibGUsICAgICAgICAgICAgTUVUSF9PIHwgTUVUSF9DTEFTUywKICAgICAgICAgY2hhaW5fZnJvbV9pdGVyYWJsZV9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY2hhaW5fc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE3OTEsNiArMjEzMiw4MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcHJvZHVjdF9yZWR1Y2UocHJvZHVjdG9iamVjdCAqbHopCit7CisgICAgaWYgKGx6LT5zdG9wcGVkKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpKSIsIFB5X1RZUEUobHopKTsKKyAgICB9IGVsc2UgaWYgKGx6LT5yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT08iLCBQeV9UWVBFKGx6KSwgbHotPnBvb2xzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlczsKKyAgICAgICAgUHlfc3NpemVfdCBuLCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIHVzZSB0aGVtIGZvciBzZXRzdGF0ZSwgYW5kCisgICAgICAgICAqIGFkZGl0aW9uYWxseSBpbmRpY2F0ZSB0aGF0IHRoZSBpdGVyYXRvciBoYXMgc3RhcnRlZAorICAgICAgICAgKi8KKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2xzKTsKKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKyl7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPT04iLCBQeV9UWVBFKGx6KSwgbHotPnBvb2xzLCBpbmRpY2VzKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwcm9kdWN0X3NldHN0YXRlKHByb2R1Y3RvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbHMpOworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4ICovCisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi0xKQorICAgICAgICAgICAgaW5kZXggPSBuLTE7CisgICAgICAgIGx6LT5pbmRpY2VzW2ldID0gaW5kZXg7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPG47IGkrKykgeworICAgICAgICBQeU9iamVjdCAqcG9vbCA9IFB5VHVwbGVfR0VUX0lURU0obHotPnBvb2xzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBQeVR1cGxlX0dFVF9JVEVNKHBvb2wsIGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorICAgIFB5X0NMRUFSKGx6LT5yZXN1bHQpOworICAgIGx6LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBwcm9kdWN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilwcm9kdWN0X3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pcHJvZHVjdF9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHByb2R1Y3RfZG9jLAogInByb2R1Y3QoKml0ZXJhYmxlcykgLS0+IHByb2R1Y3Qgb2JqZWN0XG5cCiBcblwKQEAgLTE4MzUsNyArMjI1Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylwcm9kdWN0X25leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcHJvZHVjdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMDIyLDYgKzI0NDAsODYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NvbWJpbmF0aW9uc19yZWR1Y2UoY29tYmluYXRpb25zb2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIpOworICAgIH0gZWxzZSBpZiAobHotPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKSIsIFB5X1RZUEUobHopLCBsei0+cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmluZGljZXM7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyBhbmQgdXNlIHRoZW0gZm9yIHNldHN0YXRlICovCisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgICAgIGlmICghaW5kaWNlcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pTiIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIsIGluZGljZXMpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbWJpbmF0aW9uc19zZXRzdGF0ZShjb21iaW5hdGlvbnNvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IGx6LT5yKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlfc3NpemVfdCBtYXg7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIG1heCA9IGkgKyBuIC0gbHotPnI7CisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAoYmV3YXJlIG9mIG5lZ2F0aXZlIG1heCkgKi8KKyAgICAgICAgaWYgKGluZGV4ID4gbWF4KQorICAgICAgICAgICAgaW5kZXggPSBtYXg7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGx6LT5pbmRpY2VzW2ldID0gaW5kZXg7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobHotPnIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0obHotPnBvb2wsIGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorCisgICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7CisgICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGNvbWJpbmF0aW9uc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY29tYmluYXRpb25zX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY29tYmluYXRpb25zX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY29tYmluYXRpb25zX2RvYywKICJjb21iaW5hdGlvbnMoaXRlcmFibGUsIHIpIC0tPiBjb21iaW5hdGlvbnMgb2JqZWN0XG5cCiBcblwKQEAgLTIwMzAsMTEgKzI1MjgsMTEgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjb21iaW5hdGlvbnNfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyIsICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGNvbWJpbmF0aW9uc29iamVjdCksICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpY29tYmluYXRpb25zX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpY29tYmluYXRpb25zX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTIwNTEsMTQgKzI1NDksMTQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgY29tYmluYXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWNvbWJpbmF0aW9uc190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgY29tYmluYXRpb25zX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyljb21iaW5hdGlvbnNfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYyljb21iaW5hdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAoaXRlcm5leHRmdW5jKWNvbWJpbmF0aW9uc19uZXh0LCAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGNvbWJpbmF0aW9uc19tZXRob2RzLCAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjA2OCw3ICsyNTY2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgY29tYmluYXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBjb21iaW5hdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCkBAIC0yMjY3LDYgKzI3NjUsODIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2N3cl9yZWR1Y2UoY3dyb2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIpOworICAgIH0gZWxzZSBpZiAobHotPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKSIsIFB5X1RZUEUobHopLCBsei0+cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmluZGljZXM7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyBhbmQgdXNlIHRoZW0gZm9yIHNldHN0YXRlICovCisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgICAgIGlmICghaW5kaWNlcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pTiIsIFB5X1RZUEUobHopLCBsei0+cG9vbCwgbHotPnIsIGluZGljZXMpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N3cl9zZXRzdGF0ZShjd3JvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IGx6LT5yKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgbHotPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobHotPnIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0obHotPnBvb2wsIGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorICAgIFB5X0NMRUFSKGx6LT5yZXN1bHQpOworICAgIGx6LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjd3JfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWN3cl9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWN3cl9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGN3cl9kb2MsCiAiY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoaXRlcmFibGUsIHIpIC0tPiBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCBvYmplY3RcblwKIFxuXApAQCAtMjI3NiwxMSArMjg1MCwxMSBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGN3cl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQiLCAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoY3dyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IiwgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihjd3JvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpY3dyX2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWN3cl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMjI5MiwxOSArMjg2NiwxOSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGN3cl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyljd3JfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBjd3JfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyljd3JfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIChpdGVybmV4dGZ1bmMpY3dyX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWN3cl9uZXh0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjd3JfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMzE0LDggKzI4ODgsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBjd3JfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBjd3JfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtMjUzOSw2ICszMTEzLDExNSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcGVybXV0YXRpb25zX3JlZHVjZShwZXJtdXRhdGlvbnNvYmplY3QgKnBvKQoreworICAgIGlmIChwby0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShwbyksIHBvLT5wb29sLCBwby0+cik7CisgICAgfSBlbHNlIGlmIChwby0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pIiwgUHlfVFlQRShwbyksIHBvLT5yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlcz1OVUxMLCAqY3ljbGVzPU5VTEw7CisgICAgICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyBhbmQgY3ljbGVzIGFuZCB1c2UgdGhlbSBmb3Igc2V0c3RhdGUgKi8KKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUocG8tPnBvb2wpOworICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChpbmRpY2VzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChwby0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjeWNsZXMgPSBQeVR1cGxlX05ldyhwby0+cik7CisgICAgICAgIGlmIChjeWNsZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmN5Y2xlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjeWNsZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikoTk4pIiwgUHlfVFlQRShwbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvLT5wb29sLCBwby0+ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgY3ljbGVzKTsKKyAgICBlcnI6CisgICAgICAgIFB5X1hERUNSRUYoaW5kaWNlcyk7CisgICAgICAgIFB5X1hERUNSRUYoY3ljbGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGVybXV0YXRpb25zX3NldHN0YXRlKHBlcm11dGF0aW9uc29iamVjdCAqcG8sIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqaW5kaWNlcywgKmN5Y2xlcywgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG4sIGk7CisgICAgCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiTyFPISIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmY3ljbGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fAorICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPG47IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oaW5kaWNlcywgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4tMSkKKyAgICAgICAgICAgIGluZGV4ID0gbi0xOworICAgICAgICBwby0+aW5kaWNlc1tpXSA9IGluZGV4OworICAgIH0KKworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGN5Y2xlcywgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIGlmIChpbmRleCA8IDEpCisgICAgICAgICAgICBpbmRleCA9IDE7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi1pKQorICAgICAgICAgICAgaW5kZXggPSBuLWk7CisgICAgICAgIHBvLT5jeWNsZXNbaV0gPSBpbmRleDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcocG8tPnIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0ocG8tPnBvb2wsIHBvLT5pbmRpY2VzW2ldKTsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbWVudCk7CisgICAgfQorICAgIFB5X0NMRUFSKHBvLT5yZXN1bHQpOworICAgIHBvLT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBwZXJtdWF0aW9uc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pcGVybXV0YXRpb25zX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pcGVybXV0YXRpb25zX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIocGVybXV0YXRpb25zX2RvYywKICJwZXJtdXRhdGlvbnMoaXRlcmFibGVbLCByXSkgLS0+IHBlcm11dGF0aW9ucyBvYmplY3RcblwKIFxuXApAQCAtMjU3NSw3ICszMjU4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXBlcm11dGF0aW9uc19uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHBlcm11YXRpb25zX21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjU5NSw2ICszMjc4LDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKnRvdGFsOwogICAgIFB5T2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqYmlub3A7CiB9IGFjY3VtdWxhdGVvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgYWNjdW11bGF0ZV90eXBlOwpAQCAtMjYwMiwxMiArMzI4NiwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFjY3VtdWxhdGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsiaXRlcmFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgImZ1bmMiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqaXRlcmFibGU7CiAgICAgUHlPYmplY3QgKml0OworICAgIFB5T2JqZWN0ICpiaW5vcCA9IFB5X05vbmU7CiAgICAgYWNjdW11bGF0ZW9iamVjdCAqbHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzphY2N1bXVsYXRlIiwga3dhcmdzLCAmaXRlcmFibGUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86YWNjdW11bGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCAmaXRlcmFibGUsICZiaW5vcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogR2V0IGl0ZXJhdG9yLiAqLwpAQCAtMjYyMiw2ICszMzA4LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChiaW5vcCAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5X1hJTkNSRUYoYmlub3ApOworICAgICAgICBsei0+Ymlub3AgPSBiaW5vcDsKKyAgICB9CiAgICAgbHotPnRvdGFsID0gTlVMTDsKICAgICBsei0+aXQgPSBpdDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbHo7CkBAIC0yNjMxLDYgKzMzMjEsNyBAQAogYWNjdW11bGF0ZV9kZWFsbG9jKGFjY3VtdWxhdGVvYmplY3QgKmx6KQogewogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobHopOworICAgIFB5X1hERUNSRUYobHotPmJpbm9wKTsKICAgICBQeV9YREVDUkVGKGx6LT50b3RhbCk7CiAgICAgUHlfWERFQ1JFRihsei0+aXQpOwogICAgIFB5X1RZUEUobHopLT50cF9mcmVlKGx6KTsKQEAgLTI2MzksNiArMzMzMCw3IEBACiBzdGF0aWMgaW50CiBhY2N1bXVsYXRlX3RyYXZlcnNlKGFjY3VtdWxhdGVvYmplY3QgKmx6LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKKyAgICBQeV9WSVNJVChsei0+Ymlub3ApOwogICAgIFB5X1ZJU0lUKGx6LT5pdCk7CiAgICAgUHlfVklTSVQobHotPnRvdGFsKTsKICAgICByZXR1cm4gMDsKQEAgLTI2NTgsOCArMzM1MCwxMSBAQAogICAgICAgICBsei0+dG90YWwgPSB2YWw7CiAgICAgICAgIHJldHVybiBsei0+dG90YWw7CiAgICAgfQotICAgCi0gICAgbmV3dG90YWwgPSBQeU51bWJlcl9BZGQobHotPnRvdGFsLCB2YWwpOworCisgICAgaWYgKGx6LT5iaW5vcCA9PSBOVUxMKSAKKyAgICAgICAgbmV3dG90YWwgPSBQeU51bWJlcl9BZGQobHotPnRvdGFsLCB2YWwpOworICAgIGVsc2UKKyAgICAgICAgbmV3dG90YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5iaW5vcCwgbHotPnRvdGFsLCB2YWwsIE5VTEwpOwogICAgIFB5X0RFQ1JFRih2YWwpOwogICAgIGlmIChuZXd0b3RhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI2NzIsMTAgKzMzNjcsMzUgQEAKICAgICByZXR1cm4gbmV3dG90YWw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCithY2N1bXVsYXRlX3JlZHVjZShhY2N1bXVsYXRlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylPIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPml0LCBsei0+Ymlub3A/bHotPmJpbm9wOlB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPnRvdGFsP2x6LT50b3RhbDpQeV9Ob25lKTsKKyB9CisKK3N0YXRpYyBQeU9iamVjdCAqCithY2N1bXVsYXRlX3NldHN0YXRlKGFjY3VtdWxhdGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfQ0xFQVIobHotPnRvdGFsKTsKKyAgICBsei0+dG90YWwgPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYobHotPnRvdGFsKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGFjY3VtdWxhdGVfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFjY3VtdWxhdGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhY2N1bXVsYXRlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoYWNjdW11bGF0ZV9kb2MsCi0iYWNjdW11bGF0ZShpdGVyYWJsZSkgLS0+IGFjY3VtdWxhdGUgb2JqZWN0XG5cCisiYWNjdW11bGF0ZShpdGVyYWJsZVssIGZ1bmNdKSAtLT4gYWNjdW11bGF0ZSBvYmplY3RcblwKIFxuXAotUmV0dXJuIHNlcmllcyBvZiBhY2N1bXVsYXRlZCBzdW1zLiIpOworUmV0dXJuIHNlcmllcyBvZiBhY2N1bXVsYXRlZCBzdW1zIChvciBvdGhlciBiaW5hcnkgZnVuY3Rpb24gcmVzdWx0cykuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgYWNjdW11bGF0ZV90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQpAQCAtMjcwNyw3ICszNDI3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWFjY3VtdWxhdGVfbmV4dCwgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBhY2N1bXVsYXRlX21ldGhvZHMsICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTI4MTksMTEgKzM1MzksMjQgQEAKICAgICAgICAgaWYgKG9rID09IDEpCiAgICAgICAgICAgICByZXR1cm4gZGF0dW07CiAgICAgICAgIFB5X0RFQ1JFRihkYXR1bSk7Ci0gICAgICAgIGlmIChvayA9PSAtMSkKKyAgICAgICAgaWYgKG9rIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzX3JlZHVjZShjb21wcmVzc29iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgIGx6LT5kYXRhLCBsei0+c2VsZWN0b3JzKTsKKyAgICB9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb21wcmVzc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY29tcHJlc3NfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihjb21wcmVzc19kb2MsCiAiY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKSAtLT4gaXRlcmF0b3Igb3ZlciBzZWxlY3RlZCBkYXRhXG5cCiBcblwKQEAgLTI4NjEsNyArMzU5NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljb21wcmVzc19uZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjb21wcmVzc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjk3MCw2ICszNzAzLDE5IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmlsdGVyZmFsc2VfcmVkdWNlKGZpbHRlcmZhbHNlb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCk7CisgICAgfQorCitzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyZmFsc2VfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcmZhbHNlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZmlsdGVyZmFsc2VfZG9jLAogImZpbHRlcmZhbHNlKGZ1bmN0aW9uIG9yIE5vbmUsIHNlcXVlbmNlKSAtLT4gZmlsdGVyZmFsc2Ugb2JqZWN0XG5cCiBcblwKQEAgLTMwMDYsNyArMzc1Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylmaWx0ZXJmYWxzZV9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZmlsdGVyZmFsc2VfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0zMjAwLDExICszOTQ2LDkgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhuKSIsIFB5X1RZUEUobHopLCBsei0+Y250KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X3JlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwotCiBzdGF0aWMgUHlNZXRob2REZWYgY291bnRfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNvdW50X3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKLSAgICAgY291bnRfcmVkdWNlX2RvY30sCisgICAgIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzM0NSw4ICs0MDg5LDIxIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JlcGVhdF9yZWR1Y2UocmVwZWF0b2JqZWN0ICpybykKK3sKKyAgICAvKiB1bnBpY2tsZSB0aGlzIHNvIHRoYXQgYSBuZXcgcmVwZWF0IGl0ZXJhdG9yIGlzIGNvbnN0cnVjdGVkIHdpdGggYW4KKyAgICAgKiBvYmplY3QsIHRoZW4gY2FsbCBfX3NldHN0YXRlX18gb24gaXQgdG8gc2V0IGNudAorICAgICAqLworICAgIGlmIChyby0+Y250ID49IDApCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUocm8pLCByby0+ZWxlbWVudCwgcm8tPmNudCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKSIsIFB5X1RZUEUocm8pLCByby0+ZWxlbWVudCk7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiByZXBlYXRfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXJlcGVhdF9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXJlcGVhdF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzU3Miw2ICs0MzI5LDQ5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3ppcF9sb25nZXN0X3JlZHVjZSh6aXBsb25nZXN0b2JqZWN0ICpseikKK3sKKyAgICAKKyAgICAvKiBDcmVhdGUgYSBuZXcgdHVwbGUgd2l0aCBlbXB0eSBzZXF1ZW5jZXMgd2hlcmUgYXBwcm9wcmlhdGUgdG8gcGlja2xlLgorICAgICAqIFRoZW4gdXNlIHNldHN0YXRlIHRvIHNldCB0aGUgZmlsbHZhbHVlCisgICAgICovCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8UHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSk7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqZWxlbSA9IFB5VHVwbGVfR0VUX0lURU0obHotPml0dHVwbGUsIGkpOworICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpLCBlbGVtKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9OTyIsIFB5X1RZUEUobHopLCBhcmdzLCBsei0+ZmlsbHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3ppcF9sb25nZXN0X3NldHN0YXRlKHppcGxvbmdlc3RvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfQ0xFQVIobHotPmZpbGx2YWx1ZSk7CisgICAgbHotPmZpbGx2YWx1ZSA9IHN0YXRlOworICAgIFB5X0lOQ1JFRihsei0+ZmlsbHZhbHVlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHppcF9sb25nZXN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil6aXBfbG9uZ2VzdF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXppcF9sb25nZXN0X3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoemlwX2xvbmdlc3RfZG9jLAogInppcF9sb25nZXN0KGl0ZXIxIFssaXRlcjIgWy4uLl1dLCBbZmlsbHZhbHVlPU5vbmVdKSAtLT4gemlwX2xvbmdlc3Qgb2JqZWN0XG5cCiBcblwKQEAgLTM2MTMsNyArNDQxMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl6aXBfbG9uZ2VzdF9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgemlwX2xvbmdlc3RfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0zNjM4LDcgKzQ0MzgsNyBAQAogcmVwZWF0KGVsZW0gWyxuXSkgLS0+IGVsZW0sIGVsZW0sIGVsZW0sIC4uLiBlbmRsZXNzbHkgb3IgdXAgdG8gbiB0aW1lc1xuXAogXG5cCiBJdGVyYXRvcnMgdGVybWluYXRpbmcgb24gdGhlIHNob3J0ZXN0IGlucHV0IHNlcXVlbmNlOlxuXAotYWNjdW11bGF0ZShwLCBzdGFydD0wKSAtLT4gcDAsIHAwK3AxLCBwMCtwMStwMlxuXAorYWNjdW11bGF0ZShwWywgZnVuY10pIC0tPiBwMCwgcDArcDEsIHAwK3AxK3AyXG5cCiBjaGFpbihwLCBxLCAuLi4pIC0tPiBwMCwgcDEsIC4uLiBwbGFzdCwgcTAsIHExLCAuLi4gXG5cCiBjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpIC0tPiAoZFswXSBpZiBzWzBdKSwgKGRbMV0gaWYgc1sxXSksIC4uLlxuXAogZHJvcHdoaWxlKHByZWQsIHNlcSkgLS0+IHNlcVtuXSwgc2VxW24rMV0sIHN0YXJ0aW5nIHdoZW4gcHJlZCBmYWlsc1xuXApAQCAtMzcwMSw2ICs0NTAxLDkgQEAKICAgICAgICAgJnByb2R1Y3RfdHlwZSwKICAgICAgICAgJnJlcGVhdF90eXBlLAogICAgICAgICAmZ3JvdXBieV90eXBlLAorICAgICAgICAmX2dyb3VwZXJfdHlwZSwKKyAgICAgICAgJnRlZV90eXBlLAorICAgICAgICAmdGVlZGF0YW9iamVjdF90eXBlLAogICAgICAgICBOVUxMCiAgICAgfTsKIApAQCAtMzcxOCwxMSArNDUyMSw1IEBACiAgICAgICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCBuYW1lKzEsIChQeU9iamVjdCAqKXR5cGVsaXN0W2ldKTsKICAgICB9CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZ0ZWVkYXRhb2JqZWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmdGVlX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmX2dyb3VwZXJfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggMTdhZWJhZS4uNGQyZTAzYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBfX1ZNUworI2Vycm9yICJQRVAgMTE6IFZNUyBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCiAjaW5jbHVkZSA8dW5peGxpYi5oPgogI2VuZGlmCiAKQEAgLTcyLDkgKzczLDYgQEAKIC1PICAgICA6IG9wdGltaXplIGdlbmVyYXRlZCBieXRlY29kZSBzbGlnaHRseTsgYWxzbyBQWVRIT05PUFRJTUlaRT14XG5cCiAtT08gICAgOiByZW1vdmUgZG9jLXN0cmluZ3MgaW4gYWRkaXRpb24gdG8gdGhlIC1PIG9wdGltaXphdGlvbnNcblwKIC1xICAgICA6IGRvbid0IHByaW50IHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcyBvbiBpbnRlcmFjdGl2ZSBzdGFydHVwXG5cCi0tUiAgICAgOiB1c2UgYSBwc2V1ZG8tcmFuZG9tIHNhbHQgdG8gbWFrZSBoYXNoKCkgdmFsdWVzIG9mIHZhcmlvdXMgdHlwZXMgYmVcblwKLSAgICAgICAgIHVucHJlZGljdGFibGUgYmV0d2VlbiBzZXBhcmF0ZSBpbnZvY2F0aW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIsIGFzXG5cCi0gICAgICAgICBhIGRlZmVuY2UgYWdhaW5zdCBkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2tzXG5cCiAtcyAgICAgOiBkb24ndCBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSB0byBzeXMucGF0aDsgYWxzbyBQWVRIT05OT1VTRVJTSVRFXG5cCiAtUyAgICAgOiBkb24ndCBpbXBseSAnaW1wb3J0IHNpdGUnIG9uIGluaXRpYWxpemF0aW9uXG5cCiAiOwpAQCAtMTAyLDEzICsxMDAsMTQgQEAKICJQWVRIT05IT01FICAgOiBhbHRlcm5hdGUgPHByZWZpeD4gZGlyZWN0b3J5IChvciA8cHJlZml4PiVjPGV4ZWNfcHJlZml4PikuXG4iCiAiICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgbW9kdWxlIHNlYXJjaCBwYXRoIHVzZXMgJXMuXG4iCiAiUFlUSE9OQ0FTRU9LIDogaWdub3JlIGNhc2UgaW4gJ2ltcG9ydCcgc3RhdGVtZW50cyAoV2luZG93cykuXG4iCi0iUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cblwKKyJQWVRIT05JT0VOQ09ESU5HOiBFbmNvZGluZ1s6ZXJyb3JzXSB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyLlxuIgorIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG5cCiAiOwogc3RhdGljIGNoYXIgKnVzYWdlXzYgPSAiXAotUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCB0aGUgZWZmZWN0IGlzIHRoZSBzYW1lXG5cCi0gICBhcyBzcGVjaWZ5aW5nIHRoZSAtUiBvcHRpb246IGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQgdG8gc2VlZCB0aGUgaGFzaGVzIG9mXG5cCi0gICBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRvIGFuIGludGVnZXJcblwKLSAgIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XSB0byBnZXQgaGFzaCB2YWx1ZXMgd2l0aCBhIHByZWRpY3RhYmxlIHNlZWQuXG5cCitQWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWRcblwKKyAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmVcblwKKyAgIHNldCB0byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XSB0byBnZXQgaGFzaCB2YWx1ZXMgd2l0aCBhXG5cCisgICBwcmVkaWN0YWJsZSBzZWVkLlxuXAogIjsKIAogc3RhdGljIGludApAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgaWYgKGltcG9ydGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoaW1wb3J0ZXItPm9iX3R5cGUgPT0gJlB5TnVsbEltcG9ydGVyX1R5cGUpIHsKKyAgICBpZiAoaW1wb3J0ZXIgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoYXJndjApOwogICAgICAgICBQeV9ERUNSRUYoaW1wb3J0ZXIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0zNDYsMjEgKzM0NSwxMyBAQAogICAgICAgICAgICAgICAgbm90IGludGVycHJldGVyIG9wdGlvbnMuICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgY2FzZSAnRSc6CisgICAgICAgIGlmIChjID09ICdFJykgewogICAgICAgICAgICAgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKys7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnUic6Ci0gICAgICAgICAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcrKzsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHRlc3RlZCBmb3IgZXhpc3RlbmNlIGhlcmU7IF9QeVJhbmRvbV9Jbml0IHdpbGwKLSAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KLSAgICBpZiAoIVB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyAmJgotICAgICAgICAocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKLSAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMTsKIAorICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIAogICAgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMoKTsKQEAgLTQ2Nyw3ICs0NTgsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnUic6Ci0gICAgICAgICAgICAvKiBBbHJlYWR5IGhhbmRsZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIC8qIElnbm9yZWQgKi8KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFRoaXMgc3BhY2UgcmVzZXJ2ZWQgZm9yIG90aGVyIG9wdGlvbnMgKi8KQEAgLTUzNCwxNiArNTI1LDEzIEBACiAgICAgICAgICAgICAvKiBVc2UgdXRmLTggb24gTWFjIE9TIFggKi8KICAgICAgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwKTsKICNlbHNlCi0gICAgICAgICAgICB3Y2hhcl90ICp3Y2hhcjsKLSAgICAgICAgICAgIHNpemVfdCBsZW47Ci0gICAgICAgICAgICB3Y2hhciA9IF9QeV9jaGFyMndjaGFyKHAsICZsZW4pOwotICAgICAgICAgICAgaWYgKHdjaGFyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3Y2hhciwgbGVuKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOworICAgICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocCwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUodW5pY29kZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgICAgIH0KQEAgLTYxOCw3ICs2MDYsNiBAQAogICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9ORVhFQ1VUQUJMRSIpKSAmJiAqcCAhPSAnXDAnKSB7CiAgICAgICAgIHdjaGFyX3QqIGJ1ZmZlcjsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihwKSArIDE7Ci0gICAgICAgIHNpemVfdCByOwogCiAgICAgICAgIGJ1ZmZlciA9IG1hbGxvYyhsZW4gKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKQEAgLTYyNiwxMSArNjEzLDMzIEBACiAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnkgdG8gY29weSBQWVRIT05FWEVDVVRBQkxFIik7CiAgICAgICAgIH0KIAotICAgICAgICByID0gbWJzdG93Y3MoYnVmZmVyLCBwLCBsZW4pOworICAgICAgICBtYnN0b3djcyhidWZmZXIsIHAsIGxlbik7CiAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGJ1ZmZlcik7CiAgICAgICAgIC8qIGJ1ZmZlciBpcyBub3cgaGFuZGVkIG9mZiAtIGRvIG5vdCBmcmVlICovCiAgICAgfSBlbHNlIHsKKyNpZmRlZiBXSVRIX05FWFRfRlJBTUVXT1JLCisgICAgICAgIGNoYXIqIHB5dmVudl9sYXVuY2hlciA9IGdldGVudigiX19QWVZFTlZfTEFVTkNIRVJfXyIpOworCisgICAgICAgIGlmIChweXZlbnZfbGF1bmNoZXIgJiYgKnB5dmVudl9sYXVuY2hlcikgeworICAgICAgICAgICAgLyogVXNlZCBieSBNYWMvVG9vbHMvcHl0aG9udy5jIHRvIGZvcndhcmQKKyAgICAgICAgICAgICAqIHRoZSBhcmd2MCBvZiB0aGUgc3R1YiBleGVjdXRhYmxlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihweXZlbnZfbGF1bmNoZXIsIE5VTEwpOworCisgICAgICAgICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBfX1BZVkVOVl9MQVVOQ0hFUl9fIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZSh3YnVmKTsKKworICAgICAgICAgICAgLyogRG9uJ3QgZnJlZSB3YnVmLCB0aGUgYXJndW1lbnQgdG8gUHlfU2V0UHJvZ3JhbU5hbWUKKyAgICAgICAgICAgICAqIG11c3QgcmVtYWluIHZhbGlkIHVudGlsIHRoZSBQeV9GaW5hbGl6ZSBpcyBjYWxsZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOworICAgICAgICB9CisjZWxzZQogICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKKyNlbmRpZgogICAgIH0KICNlbHNlCiAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IDE0MmVjYTQuLjNmYTUyZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC01NSwxMSArNTUsNiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgIl9tYXRoLmgiCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoaXMgYXZhaWxhYmxlIHdpdGggWE9QRU5fU09VUkNFX0VYVEVOREVEIGRlZmluZWQgKi8KLWV4dGVybiBkb3VibGUgY29weXNpZ24oZG91YmxlLCBkb3VibGUpOwotI2VuZGlmCi0KIC8qCiAgICBzaW4ocGkqeCksIGdpdmluZyBhY2N1cmF0ZSByZXN1bHRzIGZvciBhbGwgZmluaXRlIHggKGVzcGVjaWFsbHkgeAogICAgaW50ZWdyYWwgb3IgY2xvc2UgdG8gYW4gaW50ZWdlcikuICBUaGlzIGlzIGhlcmUgZm9yIHVzZSBpbiB0aGUKQEAgLTI0NCw3ICsyMzksOCBAQAogICAgIH0KICAgICBpZiAoeCA9PSAwLjApIHsKICAgICAgICAgZXJybm8gPSBFRE9NOwotICAgICAgICByZXR1cm4gMS4wL3g7IC8qIHRnYW1tYSgrLTAuMCkgPSArLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICAgICAgLyogdGdhbW1hKCstMC4wKSA9ICstaW5mLCBkaXZpZGUtYnktemVybyAqLworICAgICAgICByZXR1cm4gY29weXNpZ24oUHlfSFVHRV9WQUwsIHgpOwogICAgIH0KIAogICAgIC8qIGludGVnZXIgYXJndW1lbnRzICovCkBAIC01ODIsNiArNTc4LDYxIEBACiAgICAgfQogfQogCisvKgorICAgbG9nMjogbG9nIHRvIGJhc2UgMi4KKworICAgVXNlcyBhbiBhbGdvcml0aG0gdGhhdCBzaG91bGQ6CisKKyAgICAgKGEpIHByb2R1Y2UgZXhhY3QgcmVzdWx0cyBmb3IgcG93ZXJzIG9mIDIsIGFuZAorICAgICAoYikgZ2l2ZSBhIG1vbm90b25pYyBsb2cyIChmb3IgcG9zaXRpdmUgZmluaXRlIGZsb2F0cyksCisgICAgICAgICBhc3N1bWluZyB0aGF0IHRoZSBzeXN0ZW0gbG9nIGlzIG1vbm90b25pYy4KKyovCisKK3N0YXRpYyBkb3VibGUKK21fbG9nMihkb3VibGUgeCkKK3sKKyAgICBpZiAoIVB5X0lTX0ZJTklURSh4KSkgeworICAgICAgICBpZiAoUHlfSVNfTkFOKHgpKQorICAgICAgICAgICAgcmV0dXJuIHg7IC8qIGxvZzIobmFuKSA9IG5hbiAqLworICAgICAgICBlbHNlIGlmICh4ID4gMC4wKQorICAgICAgICAgICAgcmV0dXJuIHg7IC8qIGxvZzIoK2luZikgPSAraW5mICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICAgICAgcmV0dXJuIFB5X05BTjsgLyogbG9nMigtaW5mKSA9IG5hbiwgaW52YWxpZC1vcGVyYXRpb24gKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh4ID4gMC4wKSB7CisjaWZkZWYgSEFWRV9MT0cyCisgICAgICAgIHJldHVybiBsb2cyKHgpOworI2Vsc2UKKyAgICAgICAgZG91YmxlIG07CisgICAgICAgIGludCBlOworICAgICAgICBtID0gZnJleHAoeCwgJmUpOworICAgICAgICAvKiBXZSB3YW50IGxvZzIobSAqIDIqKmUpID09IGxvZyhtKSAvIGxvZygyKSArIGUuICBDYXJlIGlzIG5lZWRlZCB3aGVuCisgICAgICAgICAqIHggaXMganVzdCBncmVhdGVyIHRoYW4gMS4wOiBpbiB0aGF0IGNhc2UgZSBpcyAxLCBsb2cobSkgaXMgbmVnYXRpdmUsCisgICAgICAgICAqIGFuZCB3ZSBnZXQgc2lnbmlmaWNhbnQgY2FuY2VsbGF0aW9uIGVycm9yIGZyb20gdGhlIGFkZGl0aW9uIG9mCisgICAgICAgICAqIGxvZyhtKSAvIGxvZygyKSB0byBlLiAgVGhlIHNsaWdodCByZXdyaXRlIG9mIHRoZSBleHByZXNzaW9uIGJlbG93CisgICAgICAgICAqIGF2b2lkcyB0aGlzIHByb2JsZW0uCisgICAgICAgICAqLworICAgICAgICBpZiAoeCA+PSAxLjApIHsKKyAgICAgICAgICAgIHJldHVybiBsb2coMi4wICogbSkgLyBsb2coMi4wKSArIChlIC0gMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbG9nKG0pIC8gbG9nKDIuMCkgKyBlOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9PSAwLjApIHsKKyAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICByZXR1cm4gLVB5X0hVR0VfVkFMOyAvKiBsb2cyKDApID0gLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgcmV0dXJuIFB5X05BTjsgLyogbG9nMigtaW5mKSA9IG5hbiwgaW52YWxpZC1vcGVyYXRpb24gKi8KKyAgICB9Cit9CisKIHN0YXRpYyBkb3VibGUKIG1fbG9nMTAoZG91YmxlIHgpCiB7CkBAIC04MzYsMTAgKzg4NywxMCBAQAogICAgICAgImF0YW5oKHgpXG5cblJldHVybiB0aGUgaHlwZXJib2xpYyBhcmMgdGFuZ2VudCAobWVhc3VyZWQgaW4gcmFkaWFucykgb2YgeC4iKQogCiBzdGF0aWMgUHlPYmplY3QgKiBtYXRoX2NlaWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpudW1iZXIpIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNlaWxfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2NlaWxfXyk7CiAgICAgUHlPYmplY3QgKm1ldGhvZCwgKnJlc3VsdDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fY2VpbF9fIiwgJmNlaWxfc3RyKTsKKyAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICZQeUlkX19fY2VpbF9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg3NCwxMCArOTI1LDEwIEBACiAgICAgICAiZmFicyh4KVxuXG5SZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBmbG9hdCB4LiIpCiAKIHN0YXRpYyBQeU9iamVjdCAqIG1hdGhfZmxvb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpudW1iZXIpIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZsb29yX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19mbG9vcl9fKTsKICAgICBQeU9iamVjdCAqbWV0aG9kLCAqcmVzdWx0OwogCi0gICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAiX19mbG9vcl9fIiwgJmZsb29yX3N0cik7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX2Zsb29yX18pOwogICAgIGlmIChtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM4Myw3ICsxNDM0LDcgQEAKICAgICB9CiAKICAgICAvKiB1c2UgbG9va3VwIHRhYmxlIGlmIHggaXMgc21hbGwgKi8KLSAgICBpZiAoeCA8IChsb25nKShzaXplb2YoU21hbGxGYWN0b3JpYWxzKS9zaXplb2YoU21hbGxGYWN0b3JpYWxzWzBdKSkpCisgICAgaWYgKHggPCAobG9uZylQeV9BUlJBWV9MRU5HVEgoU21hbGxGYWN0b3JpYWxzKSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKFNtYWxsRmFjdG9yaWFsc1t4XSk7CiAKICAgICAvKiBlbHNlIGV4cHJlc3MgaW4gdGhlIGZvcm0gb2RkX3BhcnQgKiAyKip0d29fdmFsdWF0aW9uLCBhbmQgY29tcHV0ZSBhcwpAQCAtMTQxMCw3ICsxNDYxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYXRoX3RydW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqdHJ1bmNfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogICAgIFB5T2JqZWN0ICp0cnVuYywgKnJlc3VsdDsKIAogICAgIGlmIChQeV9UWVBFKG51bWJlciktPnRwX2RpY3QgPT0gTlVMTCkgewpAQCAtMTQxOCw3ICsxNDY5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHRydW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAiX190cnVuY19fIiwgJnRydW5jX3N0cik7CisgICAgdHJ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTE2MjcsNiArMTY3OCwxNSBAQAogSWYgdGhlIGJhc2Ugbm90IHNwZWNpZmllZCwgcmV0dXJucyB0aGUgbmF0dXJhbCBsb2dhcml0aG0gKGJhc2UgZSkgb2YgeC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK21hdGhfbG9nMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICByZXR1cm4gbG9naGVscGVyKGFyZywgbV9sb2cyLCAibG9nMiIpOworfQorCitQeURvY19TVFJWQVIobWF0aF9sb2cyX2RvYywKKyJsb2cyKHgpXG5cblJldHVybiB0aGUgYmFzZSAyIGxvZ2FyaXRobSBvZiB4LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgogbWF0aF9sb2cxMChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICByZXR1cm4gbG9naGVscGVyKGFyZywgbV9sb2cxMCwgImxvZzEwIik7CkBAIC0xODk4LDYgKzE5NTgsNyBAQAogICAgIHsibG9nIiwgICAgICAgICAgICAgbWF0aF9sb2csICAgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX2xvZ19kb2N9LAogICAgIHsibG9nMXAiLCAgICAgICAgICAgbWF0aF9sb2cxcCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2xvZzFwX2RvY30sCiAgICAgeyJsb2cxMCIsICAgICAgICAgICBtYXRoX2xvZzEwLCAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbG9nMTBfZG9jfSwKKyAgICB7ImxvZzIiLCAgICAgICAgICAgIG1hdGhfbG9nMiwgICAgICBNRVRIX08sICAgICAgICAgbWF0aF9sb2cyX2RvY30sCiAgICAgeyJtb2RmIiwgICAgICAgICAgICBtYXRoX21vZGYsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbW9kZl9kb2N9LAogICAgIHsicG93IiwgICAgICAgICAgICAgbWF0aF9wb3csICAgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX3Bvd19kb2N9LAogICAgIHsicmFkaWFucyIsICAgICAgICAgbWF0aF9yYWRpYW5zLCAgIE1FVEhfTywgICAgICAgICBtYXRoX3JhZGlhbnNfZG9jfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWQ1bW9kdWxlLmMgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCmluZGV4IDIwODkzMGQuLjEyZTE4N2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWQ1bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwpAQCAtMjEwLDcgKzIxMCw4IEBACiAgICBJbml0aWFsaXplIHRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gc2hhMSAgIFRoZSBoYXNoIHN0YXRlIHlvdSB3aXNoIHRvIGluaXRpYWxpemUKICovCi12b2lkIG1kNV9pbml0KHN0cnVjdCBtZDVfc3RhdGUgKm1kNSkKK3N0YXRpYyB2b2lkCittZDVfaW5pdChzdHJ1Y3QgbWQ1X3N0YXRlICptZDUpCiB7CiAgICAgYXNzZXJ0KG1kNSAhPSBOVUxMKTsKICAgICBtZDUtPnN0YXRlWzBdID0gMHg2NzQ1MjMwMVVMOwpAQCAtMjI3LDggKzIyOCw4IEBACiAgICBAcGFyYW0gaW4gICAgIFRoZSBkYXRhIHRvIGhhc2gKICAgIEBwYXJhbSBpbmxlbiAgVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSAob2N0ZXRzKQogKi8KLXZvaWQgbWQ1X3Byb2Nlc3Moc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LAotICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQorc3RhdGljIHZvaWQKK21kNV9wcm9jZXNzKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIFB5X3NzaXplX3QgaW5sZW4pCiB7CiAgICAgUHlfc3NpemVfdCBuOwogCkBAIC0yNDMsNyArMjQ0LDcgQEAKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gTUQ1X0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gTUQ1X0JMT0NLU0laRTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKE1ENV9CTE9DS1NJWkUgLSBtZDUtPmN1cmxlbikpOworICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoTUQ1X0JMT0NLU0laRSAtIG1kNS0+Y3VybGVuKSk7CiAgICAgICAgICAgIG1lbWNweShtZDUtPmJ1ZiArIG1kNS0+Y3VybGVuLCBpbiwgKHNpemVfdCluKTsKICAgICAgICAgICAgbWQ1LT5jdXJsZW4gICAgKz0gbjsKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gbjsKQEAgLTI2Miw3ICsyNjMsOCBAQAogICAgQHBhcmFtIHNoYTEgIFRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gb3V0IFtvdXRdIFRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgaGFzaCAoMTYgYnl0ZXMpCiAqLwotdm9pZCBtZDVfZG9uZShzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIHVuc2lnbmVkIGNoYXIgKm91dCkKK3N0YXRpYyB2b2lkCittZDVfZG9uZShzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIHVuc2lnbmVkIGNoYXIgKm91dCkKIHsKICAgICBpbnQgaTsKIApAQCAtMzc2LDcgKzM3OCw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbTUQ1X0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBtZDVfc3RhdGUgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtMzg0LDI1ICszODYsMjIgQEAKICAgICBtZDVfZG9uZSgmdGVtcCwgZGlnZXN0KTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgTUQ1X0RJR0VTVFNJWkUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KE1ENV9ESUdFU1RTSVpFICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8TUQ1X0RJR0VTVFNJWkU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CisjZW5kaWYKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21tYXBtb2R1bGUuYyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCmluZGV4IDMzYzE0M2UuLmQ2NTBlYWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbW1hcG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCkBAIC03OCw4ICs3OCw2IEBACiAjICBkZWZpbmUgTUFQX0FOT05ZTU9VUyBNQVBfQU5PTgogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqbW1hcF9tb2R1bGVfZXJyb3I7Ci0KIHR5cGVkZWYgZW51bQogewogICAgIEFDQ0VTU19ERUZBVUxULApAQCAtMjQwLDE1ICsyMzgsMzcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBCYXNpY2FsbHkgdGhlICJuIiBmb3JtYXQgY29kZSB3aXRoIHRoZSBhYmlsaXR5IHRvIHR1cm4gTm9uZSBpbnRvIC0xLiAqLworc3RhdGljIGludAorbW1hcF9jb252ZXJ0X3NzaXplX3QoUHlPYmplY3QgKm9iaiwgdm9pZCAqcmVzdWx0KSB7CisgICAgUHlfc3NpemVfdCBsaW1pdDsKKyAgICBpZiAob2JqID09IFB5X05vbmUpIHsKKyAgICAgICAgbGltaXQgPSAtMTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlOdW1iZXJfQ2hlY2sob2JqKSkgeworICAgICAgICBsaW1pdCA9IFB5TnVtYmVyX0FzU3NpemVfdChvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAobGltaXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICooKFB5X3NzaXplX3QgKilyZXN1bHQpID0gbGltaXQ7CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBtbWFwX3JlYWRfbWV0aG9kKG1tYXBfb2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IG51bV9ieXRlcywgbjsKKyAgICBQeV9zc2l6ZV90IG51bV9ieXRlcyA9IC0xLCBuOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46cmVhZCIsICZudW1fYnl0ZXMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLCBtbWFwX2NvbnZlcnRfc3NpemVfdCwgJm51bV9ieXRlcykpCiAgICAgICAgIHJldHVybihOVUxMKTsKIAogICAgIC8qIHNpbGVudGx5ICdhZGp1c3QnIG91dC1vZi1yYW5nZSByZXF1ZXN0cyAqLwpAQCAtNDM3LDcgKzQ1Nyw3IEBACiAgICAgewogICAgICAgICBzdHJ1Y3Qgc3RhdCBidWY7CiAgICAgICAgIGlmICgtMSA9PSBmc3RhdChzZWxmLT5mZCwgJmJ1ZikpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKQEAgLTUyNyw3ICs1NDcsNyBAQAogICAgICAgICB2b2lkICpuZXdtYXA7CiAKICAgICAgICAgaWYgKGZ0cnVuY2F0ZShzZWxmLT5mZCwgc2VsZi0+b2Zmc2V0ICsgbmV3X3NpemUpID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNTQyLDcgKzU2Miw3IEBACiAjZW5kaWYKICAgICAgICAgaWYgKG5ld21hcCA9PSAodm9pZCAqKS0xKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+ZGF0YSA9IG5ld21hcDsKQEAgLTU4Myw3ICs2MDMsNyBAQAogICAgIC8qIFhYWCBzZW1hbnRpY3Mgb2YgcmV0dXJuIHZhbHVlPyAqLwogICAgIC8qIFhYWCBmbGFncyBmb3IgbXN5bmM/ICovCiAgICAgaWYgKC0xID09IG1zeW5jKHNlbGYtPmRhdGEgKyBvZmZzZXQsIHNpemUsIE1TX1NZTkMpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC02NDUsOSArNjY1LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogYm91bmRzIGNoZWNrIHRoZSB2YWx1ZXMgKi8KLSAgICAgICAgaWYgKGNudCA8IDAgfHwgKGNudCArIGRlc3QpIDwgY250IHx8IChjbnQgKyBzcmMpIDwgY250IHx8Ci0gICAgICAgICAgIHNyYyA8IDAgfHwgc3JjID4gc2VsZi0+c2l6ZSB8fCAoc3JjICsgY250KSA+IHNlbGYtPnNpemUgfHwKLSAgICAgICAgICAgZGVzdCA8IDAgfHwgZGVzdCA+IHNlbGYtPnNpemUgfHwgKGRlc3QgKyBjbnQpID4gc2VsZi0+c2l6ZSkgeworICAgICAgICBpZiAoKGNudCArIGRlc3QpIDwgY250IHx8IChjbnQgKyBzcmMpIDwgY250IHx8CisgICAgICAgICAgIHNyYyA+IHNlbGYtPnNpemUgfHwgKHNyYyArIGNudCkgPiBzZWxmLT5zaXplIHx8CisgICAgICAgICAgIGRlc3QgPiBzZWxmLT5zaXplIHx8IChkZXN0ICsgY250KSA+IHNlbGYtPnNpemUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJzb3VyY2UsIGRlc3RpbmF0aW9uLCBvciBjb3VudCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjgwLDcgKzcwMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbW1hcF9fZXhpdF9fbWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAiY2xvc2UiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9jbG9zZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbW1hcF9vYmplY3RfbWV0aG9kc1tdID0gewpAQCAtOTM3LDEzICs5NTksMTMgQEAKIH0KIAogc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1tYXBfYXNfc2VxdWVuY2UgPSB7Ci0gICAgKGxlbmZ1bmMpbW1hcF9sZW5ndGgsICAgICAgICAgICAgICAgICAgICAgIC8qc3FfbGVuZ3RoKi8KLSAgICAoYmluYXJ5ZnVuYyltbWFwX2NvbmNhdCwgICAgICAgICAgICAgICAgICAgLypzcV9jb25jYXQqLwotICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9yZXBlYXQsICAgICAgICAgICAgICAgICAvKnNxX3JlcGVhdCovCi0gICAgKHNzaXplYXJnZnVuYyltbWFwX2l0ZW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9pdGVtKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX3NsaWNlKi8KLSAgICAoc3NpemVvYmphcmdwcm9jKW1tYXBfYXNzX2l0ZW0sICAgICAgICAgICAgLypzcV9hc3NfaXRlbSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9hc3Nfc2xpY2UqLworICAgIChsZW5mdW5jKW1tYXBfbGVuZ3RoLCAgICAgICAgICAgIC8qc3FfbGVuZ3RoKi8KKyAgICAoYmluYXJ5ZnVuYyltbWFwX2NvbmNhdCwgICAgICAgICAvKnNxX2NvbmNhdCovCisgICAgKHNzaXplYXJnZnVuYyltbWFwX3JlcGVhdCwgICAgICAgLypzcV9yZXBlYXQqLworICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9pdGVtLCAgICAgICAgIC8qc3FfaXRlbSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9zbGljZSovCisgICAgKHNzaXplb2JqYXJncHJvYyltbWFwX2Fzc19pdGVtLCAgLypzcV9hc3NfaXRlbSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9hc3Nfc2xpY2UqLwogfTsKIAogc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbW1hcF9hc19tYXBwaW5nID0gewpAQCAtMTAwNSw3ICsxMDI3LDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCiAgICAgJm1tYXBfYXNfYnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKnRwX2ZsYWdzKi8KICAgICBtbWFwX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtMTAyMSwxMCArMTA0MywxMCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBuZXdfbW1hcF9vYmplY3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTEwNzUsOCArMTA5Nyw4IEBACiAgICAgaW50IGRldnplcm8gPSAtMTsKICAgICBpbnQgYWNjZXNzID0gKGludClBQ0NFU1NfREVGQVVMVDsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZmlsZW5vIiwgImxlbmd0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgInByb3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgInByb3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpT3xpaWkiIF9QeV9QQVJTRV9PRkZfVCwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZkLCAmbWFwX3NpemVfb2JqLCAmZmxhZ3MsICZwcm90LApAQCAtMTE4Niw3ICsxMjA4LDcgQEAKICAgICAgICAgZmQgPSBkZXZ6ZXJvID0gb3BlbigiL2Rldi96ZXJvIiwgT19SRFdSKTsKICAgICAgICAgaWYgKGRldnplcm8gPT0gLTEpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtX29iaik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTE5NCw3ICsxMjE2LDcgQEAKICAgICAgICAgbV9vYmotPmZkID0gZHVwKGZkKTsKICAgICAgICAgaWYgKG1fb2JqLT5mZCA9PSAtMSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMTAsNyArMTIzMiw3IEBACiAgICAgaWYgKG1fb2JqLT5kYXRhID09IChjaGFyICopLTEpIHsKICAgICAgICAgbV9vYmotPmRhdGEgPSBOVUxMOwogICAgICAgICBQeV9ERUNSRUYobV9vYmopOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBtX29iai0+YWNjZXNzID0gKGFjY2Vzc19tb2RlKWFjY2VzczsKQEAgLTEyNDMsOCArMTI2NSw4IEBACiAgICAgaW50IGFjY2VzcyA9IChhY2Nlc3NfbW9kZSlBQ0NFU1NfREVGQVVMVDsKICAgICBEV09SRCBmbFByb3RlY3QsIGR3RGVzaXJlZEFjY2VzczsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsgImZpbGVubyIsICJsZW5ndGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFnbmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTCB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFnbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTCB9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaU98emlMIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbGVubywgJm1hcF9zaXplX29iaiwKQEAgLTEyOTEsMTIgKzEzMTMsMTIgQEAKICAgICBpZiAoZmlsZW5vICE9IC0xICYmIGZpbGVubyAhPSAwKSB7CiAgICAgICAgIC8qIEVuc3VyZSB0aGF0IGZpbGVubyBpcyB3aXRoaW4gdGhlIENSVCdzIHZhbGlkIHJhbmdlICovCiAgICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKSA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyk7CiAgICAgICAgIGlmIChmaD09KEhBTkRMRSktMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIC8qIFdpbjl4IGFwcGVhcnMgdG8gbmVlZCB1cyBzZWVrZWQgdG8gemVybyAqLwpAQCAtMTQ1NiwxMSArMTQ3OCw3IEBACiAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kdWxlKTsKICAgICBpZiAoIWRpY3QpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG1tYXBfbW9kdWxlX2Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJtbWFwLmVycm9yIiwKLSAgICAgICAgUHlFeGNfRW52aXJvbm1lbnRFcnJvciAsIE5VTEwpOwotICAgIGlmIChtbWFwX21vZHVsZV9lcnJvciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiZXJyb3IiLCBtbWFwX21vZHVsZV9lcnJvcik7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIm1tYXAiLCAoUHlPYmplY3QqKSAmbW1hcF9vYmplY3RfdHlwZSk7CiAjaWZkZWYgUFJPVF9FWEVDCiAgICAgc2V0aW50KGRpY3QsICJQUk9UX0VYRUMiLCBQUk9UX0VYRUMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9uaXNtb2R1bGUuYyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKaW5kZXggYTgxY2E4Yy4uMGFmNDk1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9uaXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL25pc21vZHVsZS5jCkBAIC00MTEsNyArNDExLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChtYXBzID0gbWFwczsgbWFwczsgbWFwcyA9IG1hcHMtPm5leHQpIHsKKyAgICBmb3IgKDsgbWFwczsgbWFwcyA9IG1hcHMtPm5leHQpIHsKICAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1hcHMtPm1hcCk7CiAgICAgICAgIGlmICghc3RyIHx8IFB5TGlzdF9BcHBlbmQobGlzdCwgc3RyKSA8IDApCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3BlcmF0b3IuYyBiL01vZHVsZXMvb3BlcmF0b3IuYwppbmRleCA4NjZlYzNhLi4xMmZkYWQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9vcGVyYXRvci5jCkBAIC0xNTksNiArMTU5LDE0MyBAQAogI3VuZGVmIHNwYW0yCiAjdW5kZWYgc3BhbTFvCiAjdW5kZWYgc3BhbTFvCisKKy8qIGNvbXBhcmVfZGlnZXN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiB0aW1pbmcgc2FmZSBjb21wYXJlCisgKgorICogUmV0dXJucyAxIG9mIHRoZSBzdHJpbmdzIGFyZSBlcXVhbC4KKyAqIEluIGNhc2Ugb2YgbGVuKGEpICE9IGxlbihiKSB0aGUgZnVuY3Rpb24gdHJpZXMgdG8ga2VlcCB0aGUgdGltaW5nCisgKiBkZXBlbmRlbnQgb24gdGhlIGxlbmd0aCBvZiBiLiBDUFUgY2FjaGUgbG9jYWxseSBtYXkgc3RpbGwgYWx0ZXIgdGltaW5nCisgKiBhIGJpdC4KKyAqLworc3RhdGljIGludAorX3RzY21wKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIsCisgICAgICAgIFB5X3NzaXplX3QgbGVuX2EsIFB5X3NzaXplX3QgbGVuX2IpCit7CisgICAgLyogVGhlIHZvbGF0aWxlIHR5cGUgZGVjbGFyYXRpb25zIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb21waWxlciBoYXMgbm8KKyAgICAgKiBjaGFuY2UgdG8gb3B0aW1pemUgYW5kIGZvbGQgdGhlIGNvZGUgaW4gYW55IHdheSB0aGF0IG1heSBjaGFuZ2UKKyAgICAgKiB0aGUgdGltaW5nLgorICAgICAqLworICAgIHZvbGF0aWxlIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHZvbGF0aWxlIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxlZnQ7CisgICAgdm9sYXRpbGUgY29uc3QgdW5zaWduZWQgY2hhciAqcmlnaHQ7CisgICAgUHlfc3NpemVfdCBpOworICAgIHVuc2lnbmVkIGNoYXIgcmVzdWx0OworCisgICAgLyogbG9vcCBjb3VudCBkZXBlbmRzIG9uIGxlbmd0aCBvZiBiICovCisgICAgbGVuZ3RoID0gbGVuX2I7CisgICAgbGVmdCA9IE5VTEw7CisgICAgcmlnaHQgPSBiOworCisgICAgLyogZG9uJ3QgdXNlIGVsc2UgaGVyZSB0byBrZWVwIHRoZSBhbW91bnQgb2YgQ1BVIGluc3RydWN0aW9ucyBjb25zdGFudCwKKyAgICAgKiB2b2xhdGlsZSBmb3JjZXMgcmUtZXZhbHVhdGlvbgorICAgICAqICAqLworICAgIGlmIChsZW5fYSA9PSBsZW5ndGgpIHsKKyAgICAgICAgbGVmdCA9ICooKHZvbGF0aWxlIGNvbnN0IHVuc2lnbmVkIGNoYXIqKikmYSk7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfQorICAgIGlmIChsZW5fYSAhPSBsZW5ndGgpIHsKKyAgICAgICAgbGVmdCA9IGI7CisgICAgICAgIHJlc3VsdCA9IDE7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICByZXN1bHQgfD0gKmxlZnQrKyBeICpyaWdodCsrOworICAgIH0KKworICAgIHJldHVybiAocmVzdWx0ID09IDApOworfQorCitQeURvY19TVFJWQVIoY29tcGFyZV9kaWdlc3RfX2RvY19fLAorImNvbXBhcmVfZGlnZXN0KGEsIGIpIC0+IGJvb2xcbiIKKyJcbiIKKyJSZXR1cm4gJ2EgPT0gYicuICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gYXBwcm9hY2ggZGVzaWduZWQgdG8gcHJldmVudFxuIgorInRpbWluZyBhbmFseXNpcywgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuXG4iCisiYSBhbmQgYiBtdXN0IGJvdGggYmUgb2YgdGhlIHNhbWUgdHlwZTogZWl0aGVyIHN0ciAoQVNDSUkgb25seSksXG4iCisib3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIChlLmcuIGJ5dGVzKS5cbiIKKyJcbiIKKyJOb3RlOiBJZiBhIGFuZCBiIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3Rocywgb3IgaWYgYW4gZXJyb3Igb2NjdXJzLFxuIgorImEgdGltaW5nIGF0dGFjayBjb3VsZCB0aGVvcmV0aWNhbGx5IHJldmVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiIKKyJ0eXBlcyBhbmQgbGVuZ3RocyBvZiBhIGFuZCBiLS1idXQgbm90IHRoZWlyIHZhbHVlcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QqCitjb21wYXJlX2RpZ2VzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIGludCByYzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086Y29tcGFyZV9kaWdlc3QiLCAmYSwgJmIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEFTQ0lJIHVuaWNvZGUgc3RyaW5nICovCisgICAgaWYoUHlVbmljb2RlX0NoZWNrKGEpICYmIFB5VW5pY29kZV9DaGVjayhiKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShiKSA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoYSkgfHwgIVB5VW5pY29kZV9JU19BU0NJSShiKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGFyaW5nIHN0cmluZ3Mgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBfdHNjbXAoUHlVbmljb2RlX0RBVEEoYSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKGIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYikpOworICAgIH0KKyAgICAvKiBmYWxsYmFjayB0byBidWZmZXIgaW50ZXJmYWNlIGZvciBieXRlcywgYnl0ZXNhcnJheSBhbmQgb3RoZXIgKi8KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfYnVmZmVyIHZpZXdfYTsKKyAgICAgICAgUHlfYnVmZmVyIHZpZXdfYjsKKworICAgICAgICBpZiAoKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGEpID09IDApICYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGIpID09IDApKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGVzKHMpIG9yIGNvbWJpbmF0aW9uIG9mIHR5cGVzOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIGFuZCAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhKS0+dHBfbmFtZSwgUHlfVFlQRShiKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYSwgJnZpZXdfYSwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXdfYS5uZGltID4gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIsICZ2aWV3X2IsIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlld19iLm5kaW0gPiAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1ZmZlciBtdXN0IGJlIHNpbmdsZSBkaW1lbnNpb24iKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByYyA9IF90c2NtcCgoY29uc3QgdW5zaWduZWQgY2hhciopdmlld19hLmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXZpZXdfYi5idWYsCisgICAgICAgICAgICAgICAgICAgIHZpZXdfYS5sZW4sCisgICAgICAgICAgICAgICAgICAgIHZpZXdfYi5sZW4pOworCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYik7CisgICAgfQorCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyYyk7Cit9CisKKy8qIG9wZXJhdG9yIG1ldGhvZHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogI2RlZmluZSBzcGFtMShPUCxET0MpIHsjT1AsIE9QLCBNRVRIX1ZBUkFSR1MsIFB5RG9jX1NUUihET0MpfSwKICNkZWZpbmUgc3BhbTIoT1AsQUxUT1AsRE9DKSB7I09QLCBvcF8jI09QLCBNRVRIX1ZBUkFSR1MsIFB5RG9jX1NUUihET0MpfSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyNBTFRPUCwgb3BfIyNPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sCkBAIC0yMjcsNiArMzY0LDggQEAKIHNwYW0yKGd0LF9fZ3RfXywgImd0KGEsIGIpIC0tIFNhbWUgYXMgYT5iLiIpCiBzcGFtMihnZSxfX2dlX18sICJnZShhLCBiKSAtLSBTYW1lIGFzIGE+PWIuIikKIAorICAgIHsiX2NvbXBhcmVfZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKWNvbXBhcmVfZGlnZXN0LCBNRVRIX1ZBUkFSR1MsCisgICAgIGNvbXBhcmVfZGlnZXN0X19kb2NfX30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIAogfTsKQEAgLTQwMiw3ICs1NDEsOCBAQAogICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgbmF0dHJzOyArK2lkeCkgewogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaWR4KTsKICAgICAgICAgUHlfc3NpemVfdCBpdGVtX2xlbjsKLSAgICAgICAgUHlfVU5JQ09ERSAqaXRlbV9idWZmZXI7CisgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kOwogICAgICAgICBpbnQgZG90X2NvdW50OwogCiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7CkBAIC00MTEsMTMgKzU1MSwxOCBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaXRlbV9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7Ci0gICAgICAgIGl0ZW1fYnVmZmVyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaXRlbSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl0ZW1fbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpdGVtKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGl0ZW0pOwogCiAgICAgICAgIC8qIGNoZWNrIHdoZXRoZXJlIHRoZSBzdHJpbmcgaXMgZG90dGVkICovCiAgICAgICAgIGRvdF9jb3VudCA9IDA7CiAgICAgICAgIGZvciAoY2hhcl9pZHggPSAwOyBjaGFyX2lkeCA8IGl0ZW1fbGVuOyArK2NoYXJfaWR4KSB7Ci0gICAgICAgICAgICBpZiAoaXRlbV9idWZmZXJbY2hhcl9pZHhdID09IChQeV9VTklDT0RFKScuJykKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjaGFyX2lkeCkgPT0gJy4nKQogICAgICAgICAgICAgICAgICsrZG90X2NvdW50OwogICAgICAgICB9CiAKQEAgLTQzOCwxMiArNTgzLDEyIEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZvciAoOyBkb3RfY291bnQgPiAwOyAtLWRvdF9jb3VudCkgewotICAgICAgICAgICAgICAgIHdoaWxlIChpdGVtX2J1ZmZlclt1bmlidWZmX3RpbGxdICE9IChQeV9VTklDT0RFKScuJykgeworICAgICAgICAgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCB1bmlidWZmX3RpbGwpICE9ICcuJykgewogICAgICAgICAgICAgICAgICAgICArK3VuaWJ1ZmZfdGlsbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2J1ZmZlciArIHVuaWJ1ZmZfZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pYnVmZl90aWxsIC0gdW5pYnVmZl9mcm9tKTsKKyAgICAgICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pYnVmZl90aWxsKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cl9jaGFpbl9pdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJfY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CkBAIC00NTYsOSArNjAxLDggQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogbm93IGFkZCB0aGUgbGFzdCBkb3RsZXNzIG5hbWUgKi8KLSAgICAgICAgICAgIGF0dHJfY2hhaW5faXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2J1ZmZlciArIHVuaWJ1ZmZfZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2xlbiAtIHVuaWJ1ZmZfZnJvbSk7CisgICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfZnJvbSwgaXRlbV9sZW4pOwogICAgICAgICAgICAgaWYgKGF0dHJfY2hhaW5faXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJfY2hhaW4pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCBiMzhjZTUyLi5hMTdhNjQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0yMTQsNiArMjE0LDIxIEBACiAgKiBIZWxwZXIgZnVuY3Rpb25zCiAgKi8KIAorLyogQ2hlY2sgaWYgYSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgKGkuZS4gaGFzbid0IGJlZW4gY2xvc2VkKS4KKyAqIElmIHRydWUsIHJldHVybiAxLiBPdGhlcndpc2UsIHJhaXNlIFZhbHVlRXJyb3IgYW5kIHJldHVybiAwLgorICovCitzdGF0aWMgaW50IF9pc19mZF92YWxpZChpbnQgZmQpCit7CisgICAgLyogdGhlIEZEIGlzIHNldCB0byAtMSBpbiBvc3NfY2xvc2UoKS9vc3NfbWl4ZXJfY2xvc2UoKSAqLworICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk9wZXJhdGlvbiBvbiBjbG9zZWQgT1NTIGRldmljZS4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiAvKiBfZG9faW9jdGxfMSgpIGlzIGEgcHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIE9TUyBpb2N0bHMgLS0KICAgIFNORENUTF9EU1Bfe1NFVEZNVCxDSEFOTkVMUyxTUEVFRH0gLS0gdGhhdCB0aGF0IGFyZSBjYWxsZWQgZnJvbSBDCiAgICBsaWtlIHRoaXM6CkBAIC0zMDEsNiArMzE2LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfbm9uYmxvY2sob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIEhtbW06IGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGJlIHBvc3NpYmxlIHRvIHJldHVybiB0byBibG9ja2luZwogICAgICAgIG1vZGUgb25jZSB3ZSdyZSBpbiBub24tYmxvY2tpbmcgbW9kZSEgKi8KICAgICBpZiAoaW9jdGwoc2VsZi0+ZmQsIFNORENUTF9EU1BfTk9OQkxPQ0ssIE5VTEwpID09IC0xKQpAQCAtMzEyLDYgKzMzMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3NldGZtdChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMShzZWxmLT5mZCwgYXJncywgInNldGZtdCIsIFNORENUTF9EU1BfU0VURk1UKTsKIH0KIApAQCAtMzE5LDYgKzM0MCwxMCBAQAogb3NzX2dldGZtdHMob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CiAgICAgaW50IG1hc2s7CisKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKGlvY3RsKHNlbGYtPmZkLCBTTkRDVExfRFNQX0dFVEZNVFMsICZtYXNrKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1hc2spOwpAQCAtMzI3LDMwICszNTIsNDUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfY2hhbm5lbHMob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJjaGFubmVscyIsIFNORENUTF9EU1BfQ0hBTk5FTFMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3NwZWVkKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAic3BlZWQiLCBTTkRDVExfRFNQX1NQRUVEKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19zeW5jKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8wKHNlbGYtPmZkLCBhcmdzLCAic3luYyIsIFNORENUTF9EU1BfU1lOQyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfcmVzZXQob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzAoc2VsZi0+ZmQsIGFyZ3MsICJyZXNldCIsIFNORENUTF9EU1BfUkVTRVQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3Bvc3Qob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzAoc2VsZi0+ZmQsIGFyZ3MsICJwb3N0IiwgU05EQ1RMX0RTUF9QT1NUKTsKIH0KIApAQCAtMzY1LDYgKzQwNSw5IEBACiAgICAgY2hhciAqY3A7CiAgICAgUHlPYmplY3QgKnJ2OwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBydiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CkBAIC0zOTIsNiArNDM1LDkgQEAKICAgICBjaGFyICpjcDsKICAgICBpbnQgcnYsIHNpemU7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQyMyw2ICs0NjksOSBAQAogICAgICAgIG1vZGUsIHRoZSBiZWhhdmlvdXIgb2Ygd3JpdGUoKSBhbmQgd3JpdGVhbGwoKSBmcm9tIFB5dGhvbiBpcwogICAgICAgIGluZGlzdGluZ3Vpc2hhYmxlLiAqLwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSM6d3JpdGUiLCAmY3AsICZzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQ4MiwxMCArNTMxLDEyIEBACiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqIAorc3RhdGljIFB5T2JqZWN0ICoKIG9zc19leGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIFB5T2JqZWN0ICpyZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJjbG9zZSIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKworICAgIFB5T2JqZWN0ICpyZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICBpZiAoIXJldCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJldCk7CkBAIC00OTUsNiArNTQ2LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfZmlsZW5vKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkKTsKIH0KIApAQCAtNTA5LDYgKzU2Myw5IEBACiAgICAgaW50IGZtdCwgY2hhbm5lbHMsIHJhdGU7CiAgICAgUHlPYmplY3QgKiBydjsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiB0dXBsZSAoZm10LCBjaGFubmVscywgcmF0ZSkgKi8KIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaXxpOnNldHBhcmFtZXRlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmd2FudGVkX2ZtdCwgJndhbnRlZF9jaGFubmVscywgJndhbnRlZF9yYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaWN0KSkKQEAgLTU5OSw2ICs2NTYsOSBAQAogICAgIGF1ZGlvX2J1Zl9pbmZvIGFpOwogICAgIGludCBuY2hhbm5lbHM9MCwgc3NpemU9MDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoX3NzaXplKHNlbGYsICZuY2hhbm5lbHMsICZzc2l6ZSkgPCAwIHx8ICFuY2hhbm5lbHMgfHwgIXNzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MTgsNiArNjc4LDkgQEAKICAgICBhdWRpb19idWZfaW5mbyBhaTsKICAgICBpbnQgbmNoYW5uZWxzPTAsIHNzaXplPTA7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKF9zc2l6ZShzZWxmLCAmbmNoYW5uZWxzLCAmc3NpemUpIDwgMCB8fCAhbmNoYW5uZWxzIHx8ICFzc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjM4LDYgKzcwMSw5IEBACiAgICAgYXVkaW9fYnVmX2luZm8gYWk7CiAgICAgaW50IG5jaGFubmVscz0wLCBzc2l6ZT0wOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChfc3NpemUoc2VsZiwgJm5jaGFubmVscywgJnNzaXplKSA8IDAgfHwgIW5jaGFubmVscyB8fCAhc3NpemUpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY1NSw2ICs3MjEsOSBAQAogICAgIGNvdW50X2luZm8gaW5mbzsKICAgICBpbnQgcmVxOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzZWxmLT5tb2RlID09IE9fUkRPTkxZKQogICAgICAgICByZXEgPSBTTkRDVExfRFNQX0dFVElQVFI7CiAgICAgZWxzZQpAQCAtNjg1LDYgKzc1NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX2ZpbGVubyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZCk7CiB9CiAKQEAgLTY5Myw2ICs3NjUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9jb250cm9scyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgImNvbnRyb2xzIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9ERVZNQVNLKTsKIH0KQEAgLTcwMCw2ICs3NzUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9zdGVyZW9jb250cm9scyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgInN0ZXJlb2NvbnRyb2xzIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9TVEVSRU9ERVZTKTsKIH0KQEAgLTcwNyw2ICs3ODUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9yZWNjb250cm9scyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgInJlY2NvbnRyb2xzIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9SRUNNQVNLKTsKIH0KQEAgLTcxNiw2ICs3OTcsOSBAQAogewogICAgIGludCBjaGFubmVsLCB2b2x1bWU7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogQ2FuJ3QgdXNlIF9kb19pb2N0bF8xIGJlY2F1c2Ugb2YgZW5jb2RlZCBhcmcgdGhpbmd5LiAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXQiLCAmY2hhbm5lbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzM2LDYgKzgyMCw5IEBACiB7CiAgICAgaW50IGNoYW5uZWwsIHZvbHVtZSwgbGVmdFZvbCwgcmlnaHRWb2w7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogQ2FuJ3QgdXNlIF9kb19pb2N0bF8xIGJlY2F1c2Ugb2YgZW5jb2RlZCBhcmcgdGhpbmd5LiAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaShpaSk6c2V0IiwgJmNoYW5uZWwsICZsZWZ0Vm9sLCAmcmlnaHRWb2wpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc2MSw2ICs4NDgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9nZXRfcmVjc3JjKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAiZ2V0X3JlY3NyYyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1JFQURfUkVDU1JDKTsKIH0KQEAgLTc2OCw2ICs4NTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9zZXRfcmVjc3JjKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAic2V0X3JlY3NyYyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1dSSVRFX1JFQ1NSQyk7CiB9CkBAIC05NzEsOCArMTA2NCw4IEBACiAgICAgaW50IG51bV9jb250cm9sczsKICAgICBpbnQgaTsKIAotICAgIG51bV9jb250cm9scyA9IHNpemVvZihjb250cm9sX2xhYmVscykgLyBzaXplb2YoY29udHJvbF9sYWJlbHNbMF0pOwotICAgIGFzc2VydChudW1fY29udHJvbHMgPT0gc2l6ZW9mKGNvbnRyb2xfbmFtZXMpIC8gc2l6ZW9mKGNvbnRyb2xfbmFtZXNbMF0pKTsKKyAgICBudW1fY29udHJvbHMgPSBQeV9BUlJBWV9MRU5HVEgoY29udHJvbF9sYWJlbHMpOworICAgIGFzc2VydChudW1fY29udHJvbHMgPT0gUHlfQVJSQVlfTEVOR1RIKGNvbnRyb2xfbmFtZXMpKTsKIAogICAgIGxhYmVscyA9IFB5TGlzdF9OZXcobnVtX2NvbnRyb2xzKTsKICAgICBuYW1lcyA9IFB5TGlzdF9OZXcobnVtX2NvbnRyb2xzKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCmluZGV4IDk0OTdhYWUuLmU4NmZlNGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwpAQCAtMzAwLDI1ICszMDAsMjUgQEAKIAogICAgIC8qIENvbnZlcnQgcmV0dXJuIHZhbHVlIHRvIGEgQm9vbGVhbiAqLwogICAgIHN3aXRjaCAob3ApIHsKLSAgICBjYXNlIFB5X0VROgorICAgICAgY2FzZSBQeV9FUToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPT0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfTkU6CisgICAgICBjYXNlIFB5X05FOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCAhPSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9MRToKKyAgICAgIGNhc2UgUHlfTEU6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0IDw9IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0dFOgorICAgICAgY2FzZSBQeV9HRToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPj0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfTFQ6CisgICAgICBjYXNlIFB5X0xUOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA8IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0dUOgorICAgICAgY2FzZSBQeV9HVDoKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPiAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTM4Miw0MCArMzgyLDI4IEBACiBzdGF0aWMgUHlPYmplY3QqCiBwYXJzZXJfc3QydHVwbGUoUHlTVF9PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKmxpbmVfb3B0aW9uID0gMDsKLSAgICBQeU9iamVjdCAqY29sX29wdGlvbiA9IDA7CisgICAgaW50IGxpbmVfaW5mbyA9IDA7CisgICAgaW50IGNvbF9pbmZvID0gMDsKICAgICBQeU9iamVjdCAqcmVzID0gMDsKICAgICBpbnQgb2s7CiAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3QiLCAibGluZV9pbmZvIiwgImNvbF9pbmZvIiwgTlVMTH07CiAKICAgICBpZiAoc2VsZiA9PSBOVUxMIHx8IFB5TW9kdWxlX0NoZWNrKHNlbGYpKSB7Ci0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8T086c3QydHVwbGUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX29wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfHBwOnN0MnR1cGxlIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVNUX1R5cGUsICZzZWxmLCAmbGluZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX2luZm8pOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9POnRvdHVwbGUiLCAma2V5d29yZHNbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX29wdGlvbiwgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxwcDp0b3R1cGxlIiwgJmtleXdvcmRzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGluZV9pbmZvLCAmY29sX2luZm8pOwogICAgIGlmIChvayAhPSAwKSB7Ci0gICAgICAgIGludCBsaW5lbm8gPSAwOwotICAgICAgICBpbnQgY29sX29mZnNldCA9IDA7Ci0gICAgICAgIGlmIChsaW5lX29wdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBsaW5lbm8gPSBQeU9iamVjdF9Jc1RydWUobGluZV9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGxpbmVubyA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbF9vcHRpb24gIT0gTlVMTCkgewotICAgICAgICAgICAgY29sX29mZnNldCA9IFB5T2JqZWN0X0lzVHJ1ZShjb2xfb3B0aW9uKTsKLSAgICAgICAgICAgIGlmIChjb2xfb2Zmc2V0IDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICAvKgogICAgICAgICAgKiAgQ29udmVydCBTVCBpbnRvIGEgdHVwbGUgcmVwcmVzZW50YXRpb24uICBVc2UgR3VpZG8ncyBmdW5jdGlvbiwKICAgICAgICAgICogIHNpbmNlIGl0J3Mga25vd24gdG8gd29yayBhbHJlYWR5LgogICAgICAgICAgKi8KICAgICAgICAgcmVzID0gbm9kZTJ0dXBsZSgoKFB5U1RfT2JqZWN0KilzZWxmKS0+c3Rfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX05ldywgUHlUdXBsZV9TZXRJdGVtLCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfTmV3LCBQeVR1cGxlX1NldEl0ZW0sIGxpbmVfaW5mbywgY29sX2luZm8pOwogICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CkBAIC00MzAsMzkgKzQxOCwyNyBAQAogc3RhdGljIFB5T2JqZWN0KgogcGFyc2VyX3N0Mmxpc3QoUHlTVF9PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKmxpbmVfb3B0aW9uID0gMDsKLSAgICBQeU9iamVjdCAqY29sX29wdGlvbiA9IDA7CisgICAgaW50IGxpbmVfaW5mbyA9IDA7CisgICAgaW50IGNvbF9pbmZvID0gMDsKICAgICBQeU9iamVjdCAqcmVzID0gMDsKICAgICBpbnQgb2s7CiAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3QiLCAibGluZV9pbmZvIiwgImNvbF9pbmZvIiwgTlVMTH07CiAKICAgICBpZiAoc2VsZiA9PSBOVUxMIHx8IFB5TW9kdWxlX0NoZWNrKHNlbGYpKQotICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfE9POnN0Mmxpc3QiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX29wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfHBwOnN0Mmxpc3QiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfaW5mbyk7CiAgICAgZWxzZQotICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPTzp0b2xpc3QiLCAma2V5d29yZHNbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX29wdGlvbiwgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxwcDp0b2xpc3QiLCAma2V5d29yZHNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX2luZm8sICZjb2xfaW5mbyk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGludCBsaW5lbm8gPSAwOwotICAgICAgICBpbnQgY29sX29mZnNldCA9IDA7Ci0gICAgICAgIGlmIChsaW5lX29wdGlvbiAhPSAwKSB7Ci0gICAgICAgICAgICBsaW5lbm8gPSBQeU9iamVjdF9Jc1RydWUobGluZV9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGxpbmVubyA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbF9vcHRpb24gIT0gMCkgewotICAgICAgICAgICAgY29sX29mZnNldCA9IFB5T2JqZWN0X0lzVHJ1ZShjb2xfb3B0aW9uKTsKLSAgICAgICAgICAgIGlmIChjb2xfb2Zmc2V0IDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICAvKgogICAgICAgICAgKiAgQ29udmVydCBTVCBpbnRvIGEgdHVwbGUgcmVwcmVzZW50YXRpb24uICBVc2UgR3VpZG8ncyBmdW5jdGlvbiwKICAgICAgICAgICogIHNpbmNlIGl0J3Mga25vd24gdG8gd29yayBhbHJlYWR5LgogICAgICAgICAgKi8KICAgICAgICAgcmVzID0gbm9kZTJ0dXBsZShzZWxmLT5zdF9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9OZXcsIFB5TGlzdF9TZXRJdGVtLCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9OZXcsIFB5TGlzdF9TZXRJdGVtLCBsaW5lX2luZm8sIGNvbF9pbmZvKTsKICAgICB9CiAgICAgcmV0dXJuIChyZXMpOwogfQpAQCAtNjAwLDggKzU3NiwxMCBAQAogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICAoKFB5U1RfT2JqZWN0ICopcmVzKS0+c3RfZmxhZ3MuY2ZfZmxhZ3MgPSBmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlQYXJzZXJfU2V0RXJyb3IoJmVycik7CisgICAgICAgIH0KKyAgICAgICAgUHlQYXJzZXJfQ2xlYXJFcnJvcigmZXJyKTsKICAgICB9CiAgICAgcmV0dXJuIChyZXMpOwogfQpAQCAtNzQ3LDcgKzcyNSw3IEBACiAgICAgICAgIC8qIGVsZW0gbXVzdCBhbHdheXMgYmUgYSBzZXF1ZW5jZSwgaG93ZXZlciBzaW1wbGUgKi8KICAgICAgICAgUHlPYmplY3QqIGVsZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0odHVwbGUsIGkpOwogICAgICAgICBpbnQgb2sgPSBlbGVtICE9IE5VTEw7Ci0gICAgICAgIGxvbmcgIHR5cGUgPSAwOworICAgICAgICBpbnQgdHlwZSA9IDA7CiAgICAgICAgIGNoYXIgKnN0cm4gPSAwOwogCiAgICAgICAgIGlmIChvaykKQEAgLTc1OCw4ICs3MzYsMTQgQEAKICAgICAgICAgICAgICAgICBvayA9IDA7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBvayA9IFB5TG9uZ19DaGVjayh0ZW1wKTsKLSAgICAgICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQeUxvbmdfQVNfTE9ORyh0ZW1wKTsKKyAgICAgICAgICAgICAgICBpZiAob2spIHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IF9QeUxvbmdfQXNJbnQodGVtcCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzk1LDggKzc3OSwxNiBAQAogICAgICAgICAgICAgaWYgKGxlbiA9PSAzKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVNlcXVlbmNlX0dldEl0ZW0oZWxlbSwgMik7CiAgICAgICAgICAgICAgICAgaWYgKG8gIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKQotICAgICAgICAgICAgICAgICAgICAgICAgKmxpbmVfbnVtID0gUHlMb25nX0FTX0xPTkcobyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2sobykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0gPSBfUHlMb25nX0FzSW50KG8pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAqbGluZV9udW0gPSBudW07CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlyZCBpdGVtIGluIHRlcm1pbmFsIG5vZGUgbXVzdCBiZSBhbiIKQEAgLTk5NSw2ICs5ODcsNyBAQAogVkFMSURBVEVSKHRlc3RsaXN0X2NvbXApOyAgICAgICBWQUxJREFURVIoeWllbGRfZXhwcik7CiBWQUxJREFURVIob3JfdGVzdCk7CiBWQUxJREFURVIodGVzdF9ub2NvbmQpOyAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmX25vY29uZCk7CitWQUxJREFURVIoeWllbGRfYXJnKTsKIAogI3VuZGVmIFZBTElEQVRFUgogCkBAIC0xNjU1LDIyICsxNjQ4LDQ5IEBACiB9CiAKIAotLyogeWllbGRfZXhwcjogJ3lpZWxkJyBbdGVzdGxpc3RdCisvKiB5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCiAgKi8KIHN0YXRpYyBpbnQKIHZhbGlkYXRlX3lpZWxkX2V4cHIobm9kZSAqdHJlZSkKIHsKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAieWllbGQiKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDEpKTsKLQotICAgIHJldHVybiAocmVzKTsKKyAgICBpZiAobmNoIDwgMSB8fCBuY2ggPiAyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2V4cHIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ5aWVsZCIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmNoID09IDIpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV95aWVsZF9hcmcoQ0hJTEQodHJlZSwgMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOwogfQogCisvKiB5aWVsZF9hcmc6ICdmcm9tJyB0ZXN0IHwgdGVzdGxpc3QKKyAqLworc3RhdGljIGludAordmFsaWRhdGVfeWllbGRfYXJnKG5vZGUgKnRyZWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2FyZykpCisgICAgICAgIHJldHVybiAwOworICAgIHN3aXRjaCAobmNoKSB7CisgICAgICBjYXNlIDE6CisgICAgICAgIGlmICghdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyOgorICAgICAgICBpZiAoIXZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmcm9tIikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KIAogLyogeWllbGRfc3RtdDogeWllbGRfZXhwcgogICovCkBAIC0yMTY1LDE2ICsyMTg1LDE2IEBACiAgICAgICAgICAqLwogICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7CiAgICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgewotICAgICAgICAgICAgY2FzZSBMRVNTOgotICAgICAgICAgICAgY2FzZSBHUkVBVEVSOgotICAgICAgICAgICAgY2FzZSBFUUVRVUFMOgotICAgICAgICAgICAgY2FzZSBFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgTEVTU0VRVUFMOgotICAgICAgICAgICAgY2FzZSBHUkVBVEVSRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIE5PVEVRVUFMOgorICAgICAgICAgIGNhc2UgTEVTUzoKKyAgICAgICAgICBjYXNlIEdSRUFURVI6CisgICAgICAgICAgY2FzZSBFUUVRVUFMOgorICAgICAgICAgIGNhc2UgRVFVQUw6CisgICAgICAgICAgY2FzZSBMRVNTRVFVQUw6CisgICAgICAgICAgY2FzZSBHUkVBVEVSRVFVQUw6CisgICAgICAgICAgY2FzZSBOT1RFUVVBTDoKICAgICAgICAgICAgICAgcmVzID0gMTsKICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE5BTUU6CisgICAgICAgICAgY2FzZSBOQU1FOgogICAgICAgICAgICAgICByZXMgPSAoKHN0cmNtcChTVFIodHJlZSksICJpbiIpID09IDApCiAgICAgICAgICAgICAgICAgICAgICB8fCAoc3RyY21wKFNUUih0cmVlKSwgImlzIikgPT0gMCkpOwogICAgICAgICAgICAgICBpZiAoIXJlcykgewpAQCAtMjcxOSw5ICsyNzM5LDkgQEAKIHsKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwogICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0KKyAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkpOworICAgIGlmIChyZXMpIAorICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKICAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCiAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKTsKICAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKQEAgLTMzNTYsMTAgKzMzNzYsMTMgQEAKICAgICBjb3B5cmVnID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiY29weXJlZyIpOwogICAgIGlmIChjb3B5cmVnICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmZ1bmMsICpwaWNrbGVyOworICAgICAgICBfUHlfSURFTlRJRklFUihwaWNrbGUpOworICAgICAgICBfUHlfSURFTlRJRklFUihzZXF1ZW5jZTJzdCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9waWNrbGVyKTsKIAotICAgICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb3B5cmVnLCAicGlja2xlIik7Ci0gICAgICAgIHBpY2tsZV9jb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAic2VxdWVuY2Uyc3QiKTsKLSAgICAgICAgcGlja2xlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAiX3BpY2tsZXIiKTsKKyAgICAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfcGlja2xlKTsKKyAgICAgICAgcGlja2xlX2NvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2R1bGUsICZQeUlkX3NlcXVlbmNlMnN0KTsKKyAgICAgICAgcGlja2xlciA9IF9QeU9iamVjdF9HZXRBdHRySWQobW9kdWxlLCAmUHlJZF9fcGlja2xlcik7CiAgICAgICAgIFB5X1hJTkNSRUYocGlja2xlX2NvbnN0cnVjdG9yKTsKICAgICAgICAgaWYgKChmdW5jICE9IE5VTEwpICYmIChwaWNrbGVfY29uc3RydWN0b3IgIT0gTlVMTCkKICAgICAgICAgICAgICYmIChwaWNrbGVyICE9IE5VTEwpKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKaW5kZXggZTdlNTMwNS4uOTA4MzhjOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCiAjaWYgZGVmaW5lZChfX1ZNUykKKyMgICAgZXJyb3IgIlBFUCAxMTogVk1TIGlzIG5vdyB1bnN1cHBvcnRlZCwgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNCIKICMgICAgaW5jbHVkZSA8dW5peGlvLmg+CiAjZW5kaWYgLyogZGVmaW5lZChfX1ZNUykgKi8KIApAQCAtNDMsNiArNDQsNyBAQAogCiAKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQorI2Vycm9yICJQRVAgMTE6IE9TLzIgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgogI2RlZmluZSAgSU5DTF9ET1MKICNkZWZpbmUgIElOQ0xfRE9TRVJST1JTCiAjZGVmaW5lICBJTkNMX0RPU1BST0NFU1MKQEAgLTU3LDYgKzU5LDEwIEBACiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lTX1VJT19ICisjaW5jbHVkZSA8c3lzL3Vpby5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwpAQCAtOTMsNiArOTksNDggQEAKICNpbmNsdWRlIDxsYW5naW5mby5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19TRU5ERklMRV9ICisjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfSAorI2luY2x1ZGUgPHNjaGVkLmg+CisjZW5kaWYKKworI2lmICFkZWZpbmVkKENQVV9BTExPQykgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVEFGRklOSVRZKQorI3VuZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19YQVRUUl9IKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyNkZWZpbmUgVVNFX1hBVFRSUworI2VuZGlmCisKKyNpZmRlZiBVU0VfWEFUVFJTCisjaW5jbHVkZSA8c3lzL3hhdHRyLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ETEZDTl9ICisjaW5jbHVkZSA8ZGxmY24uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorIyAgZGVmaW5lIFRFUk1TSVpFX1VTRV9DT05JTworI2VsaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKQorIyAgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjICBpZiBkZWZpbmVkKEhBVkVfVEVSTUlPU19IKQorIyAgICBpbmNsdWRlIDx0ZXJtaW9zLmg+CisjICBlbmRpZgorIyAgaWYgZGVmaW5lZChUSU9DR1dJTlNaKQorIyAgICBkZWZpbmUgVEVSTVNJWkVfVVNFX0lPQ1RMCisjICBlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKwogLyogVmFyaW91cyBjb21waWxlcnMgaGF2ZSBvbmx5IGNlcnRhaW4gcG9zaXggZnVuY3Rpb25zICovCiAvKiBYWFggR29zaCBJIHdpc2ggdGhlc2Ugd2VyZSBhbGwgbW92ZWQgaW50byBweWNvbmZpZy5oICovCiAjaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQpAQCAtMTU1LDYgKzIwMyw5IEBACiAjZW5kaWYgIC8qICEgX19XQVRDT01DX18gfHwgX19RTlhfXyAqLwogI2VuZGlmIC8qICEgX19JQk1DX18gKi8KIAorCisKKwogI2lmbmRlZiBfTVNDX1ZFUgogCiAjaWYgZGVmaW5lZChfX3NnaSkmJl9DT01QSUxFUl9WRVJTSU9OPj03MDAKQEAgLTMyOCwxMCArMzc5LDEyIEBACiAjdW5kZWYgU1RSVUNUX1NUQVQKICNpZiBkZWZpbmVkKE1TX1dJTjY0KSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCiAjICAgICAgIGRlZmluZSBTVEFUIHdpbjMyX3N0YXQKKyMgICAgICAgZGVmaW5lIExTVEFUIHdpbjMyX2xzdGF0CiAjICAgICAgIGRlZmluZSBGU1RBVCB3aW4zMl9mc3RhdAogIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IHdpbjMyX3N0YXQKICNlbHNlCiAjICAgICAgIGRlZmluZSBTVEFUIHN0YXQKKyMgICAgICAgZGVmaW5lIExTVEFUIGxzdGF0CiAjICAgICAgIGRlZmluZSBGU1RBVCBmc3RhdAogIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IHN0YXQKICNlbmRpZgpAQCAtMzQ3LDYgKzQwMCw0MDYgQEAKICNlbmRpZgogI2VuZGlmCiAKKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK3dpbjMyX3dhcm5fYnl0ZXNfYXBpKCkKK3sKKyAgICByZXR1cm4gUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgIlRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkLCAiCisgICAgICAgICJ1c2UgVW5pY29kZSBmaWxlbmFtZXMgaW5zdGVhZCIsCisgICAgICAgIDEpOworfQorI2VuZGlmCisKKworI2lmZGVmIEFUX0ZEQ1dECisvKgorICogV2h5IHRoZSAoaW50KSBjYXN0PyAgU29sYXJpcyAxMCBkZWZpbmVzIEFUX0ZEQ1dEIGFzIDB4ZmZkMTk1NTMgKC0zMDQxOTY1KTsKKyAqIHdpdGhvdXQgdGhlIGludCBjYXN0LCB0aGUgdmFsdWUgZ2V0cyBpbnRlcnByZXRlZCBhcyB1aW50ICg0MjkxOTI1MzMxKSwKKyAqIHdoaWNoIGRvZXNuJ3QgcGxheSBuaWNlbHkgd2l0aCBhbGwgdGhlIGluaXRpYWxpemVyIGxpbmVzIGluIHRoaXMgZmlsZSB0aGF0CisgKiBsb29rIGxpa2UgdGhpczoKKyAqICAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICovCisjZGVmaW5lIERFRkFVTFRfRElSX0ZEIChpbnQpQVRfRkRDV0QKKyNlbHNlCisjZGVmaW5lIERFRkFVTFRfRElSX0ZEICgtMTAwKQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK19mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCwgY29uc3QgY2hhciAqYWxsb3dlZCkKK3sKKyAgICBpbnQgb3ZlcmZsb3c7CisgICAgbG9uZyBsb25nX3ZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG8sICZvdmVyZmxvdyk7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykgfHwKKyAgICAgICAgKGxvbmdfdmFsdWUgPT0gLTEgJiYgIW92ZXJmbG93ICYmIFB5RXJyX09jY3VycmVkKCkpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQsIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKG92ZXJmbG93ID4gMCB8fCBsb25nX3ZhbHVlID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaWduZWQgaW50ZWdlciBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKG92ZXJmbG93IDwgMCB8fCBsb25nX3ZhbHVlIDwgSU5UX01JTikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaWduZWQgaW50ZWdlciBpcyBsZXNzIHRoYW4gbWluaW11bSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKnAgPSAoaW50KWxvbmdfdmFsdWU7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2Rpcl9mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApCit7CisgICAgaWYgKG8gPT0gUHlfTm9uZSkgeworICAgICAgICAqKGludCAqKXAgPSBERUZBVUxUX0RJUl9GRDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBfZmRfY29udmVydGVyKG8sIChpbnQgKilwLCAiaW50ZWdlciIpOworfQorCisKKworLyoKKyAqIEEgUHlBcmdfUGFyc2VUdXBsZSAiY29udmVydGVyIiBmdW5jdGlvbgorICogdGhhdCBoYW5kbGVzIGZpbGVzeXN0ZW0gcGF0aHMgaW4gdGhlIG1hbm5lcgorICogcHJlZmVycmVkIGJ5IHRoZSBvcyBtb2R1bGUuCisgKgorICogcGF0aF9jb252ZXJ0ZXIgYWNjZXB0cyAoVW5pY29kZSkgc3RyaW5ncyBhbmQgdGhlaXIKKyAqIHN1YmNsYXNzZXMsIGFuZCBieXRlcyBhbmQgdGhlaXIgc3ViY2xhc3Nlcy4gIFdoYXQKKyAqIGl0IGRvZXMgd2l0aCB0aGUgYXJndW1lbnQgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06CisgKgorICogICAqIE9uIFdpbmRvd3MsIGlmIHdlIGdldCBhIChVbmljb2RlKSBzdHJpbmcgd2UKKyAqICAgICBleHRyYWN0IHRoZSB3Y2hhcl90ICogYW5kIHJldHVybiBpdDsgaWYgd2UgZ2V0CisgKiAgICAgYnl0ZXMgd2UgZXh0cmFjdCB0aGUgY2hhciAqIGFuZCByZXR1cm4gdGhhdC4KKyAqCisgKiAgICogT24gYWxsIG90aGVyIHBsYXRmb3Jtcywgc3RyaW5ncyBhcmUgZW5jb2RlZAorICogICAgIHRvIGJ5dGVzIHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgdGhlbiB3ZQorICogICAgIGV4dHJhY3QgdGhlIGNoYXIgKiBmcm9tIHRoZSBieXRlcyBvYmplY3QgYW5kCisgKiAgICAgcmV0dXJuIHRoYXQuCisgKgorICogcGF0aF9jb252ZXJ0ZXIgYWxzbyBvcHRpb25hbGx5IGFjY2VwdHMgc2lnbmVkCisgKiBpbnRlZ2VycyAocmVwcmVzZW50aW5nIG9wZW4gZmlsZSBkZXNjcmlwdG9ycykgaW5zdGVhZAorICogb2YgcGF0aCBzdHJpbmdzLgorICoKKyAqIElucHV0IGZpZWxkczoKKyAqICAgcGF0aC5udWxsYWJsZQorICogICAgIElmIG5vbnplcm8sIHRoZSBwYXRoIGlzIHBlcm1pdHRlZCB0byBiZSBOb25lLgorICogICBwYXRoLmFsbG93X2ZkCisgKiAgICAgSWYgbm9uemVybywgdGhlIHBhdGggaXMgcGVybWl0dGVkIHRvIGJlIGEgZmlsZSBoYW5kbGUKKyAqICAgICAoYSBzaWduZWQgaW50KSBpbnN0ZWFkIG9mIGEgc3RyaW5nLgorICogICBwYXRoLmZ1bmN0aW9uX25hbWUKKyAqICAgICBJZiBub24tTlVMTCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCB1c2UgdGhhdCBhcyB0aGUgbmFtZQorICogICAgIG9mIHRoZSBmdW5jdGlvbiBpbiBlcnJvciBtZXNzYWdlcy4KKyAqICAgICAoSWYgcGF0aC5hcmd1bWVudF9uYW1lIGlzIE5VTEwgaXQgb21pdHMgdGhlIGZ1bmN0aW9uIG5hbWUuKQorICogICBwYXRoLmFyZ3VtZW50X25hbWUKKyAqICAgICBJZiBub24tTlVMTCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCB1c2UgdGhhdCBhcyB0aGUgbmFtZQorICogICAgIG9mIHRoZSBwYXJhbWV0ZXIgaW4gZXJyb3IgbWVzc2FnZXMuCisgKiAgICAgKElmIHBhdGguYXJndW1lbnRfbmFtZSBpcyBOVUxMIGl0IHVzZXMgInBhdGgiLikKKyAqCisgKiBPdXRwdXQgZmllbGRzOgorICogICBwYXRoLndpZGUKKyAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBVbmljb2RlCisgKiAgICAgYW5kIHdhcyBub3QgZW5jb2RlZC4gIChPbmx5IHVzZWQgb24gV2luZG93cy4pCisgKiAgIHBhdGgubmFycm93CisgKiAgICAgUG9pbnRzIHRvIHRoZSBwYXRoIGlmIGl0IHdhcyBleHByZXNzZWQgYXMgYnl0ZXMsCisgKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLgorICogICBwYXRoLmZkCisgKiAgICAgQ29udGFpbnMgYSBmaWxlIGRlc2NyaXB0b3IgaWYgcGF0aC5hY2NlcHRfZmQgd2FzIHRydWUKKyAqICAgICBhbmQgdGhlIGNhbGxlciBwcm92aWRlZCBhIHNpZ25lZCBpbnRlZ2VyIGluc3RlYWQgb2YgYW55CisgKiAgICAgc29ydCBvZiBzdHJpbmcuCisgKgorICogICAgIFdBUk5JTkc6IGlmIHlvdXIgInBhdGgiIHBhcmFtZXRlciBpcyBvcHRpb25hbCwgYW5kIGlzCisgKiAgICAgdW5zcGVjaWZpZWQsIHBhdGhfY29udmVydGVyIHdpbGwgbmV2ZXIgZ2V0IGNhbGxlZC4KKyAqICAgICBTbyBpZiB5b3Ugc2V0IGFsbG93X2ZkLCB5b3UgKk1VU1QqIGluaXRpYWxpemUgcGF0aC5mZCA9IC0xCisgKiAgICAgeW91cnNlbGYhCisgKiAgIHBhdGgubGVuZ3RoCisgKiAgICAgVGhlIGxlbmd0aCBvZiB0aGUgcGF0aCBpbiBjaGFyYWN0ZXJzLCBpZiBzcGVjaWZpZWQgYXMKKyAqICAgICBhIHN0cmluZy4KKyAqICAgcGF0aC5vYmplY3QKKyAqICAgICBUaGUgb3JpZ2luYWwgb2JqZWN0IHBhc3NlZCBpbi4KKyAqICAgcGF0aC5jbGVhbnVwCisgKiAgICAgRm9yIGludGVybmFsIHVzZSBvbmx5LiAgTWF5IHBvaW50IHRvIGEgdGVtcG9yYXJ5IG9iamVjdC4KKyAqICAgICAoUGF5IG5vIGF0dGVudGlvbiB0byB0aGUgbWFuIGJlaGluZCB0aGUgY3VydGFpbi4pCisgKgorICogICBBdCBtb3N0IG9uZSBvZiBwYXRoLndpZGUgb3IgcGF0aC5uYXJyb3cgd2lsbCBiZSBub24tTlVMTC4KKyAqICAgSWYgcGF0aCB3YXMgTm9uZSBhbmQgcGF0aC5udWxsYWJsZSB3YXMgc2V0LAorICogICAgIG9yIGlmIHBhdGggd2FzIGFuIGludGVnZXIgYW5kIHBhdGguYWxsb3dfZmQgd2FzIHNldCwKKyAqICAgICBib3RoIHBhdGgud2lkZSBhbmQgcGF0aC5uYXJyb3cgd2lsbCBiZSBOVUxMCisgKiAgICAgYW5kIHBhdGgubGVuZ3RoIHdpbGwgYmUgMC4KKyAqCisgKiAgIHBhdGhfY29udmVydGVyIHRha2VzIGNhcmUgdG8gbm90IHdyaXRlIHRvIHRoZSBwYXRoX3QKKyAqICAgdW5sZXNzIGl0J3Mgc3VjY2Vzc2Z1bC4gIEhvd2V2ZXIgaXQgbXVzdCByZXNldCB0aGUKKyAqICAgImNsZWFudXAiIGZpZWxkIGVhY2ggdGltZSBpdCdzIGNhbGxlZC4KKyAqCisgKiBVc2UgYXMgZm9sbG93czoKKyAqICAgICAgcGF0aF90IHBhdGg7CisgKiAgICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAqICAgICAgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyYiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpOworICogICAgICAvLyAuLi4gdXNlIHZhbHVlcyBmcm9tIHBhdGggLi4uCisgKiAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgKgorICogKE5vdGUgdGhhdCBpZiBQeUFyZ19QYXJzZSBmYWlscyB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsCisgKiBwYXRoX2NsZWFudXAoKS4gIEhvd2V2ZXIgaXQgaXMgc2FmZSB0byBkbyBzby4pCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjaGFyICpmdW5jdGlvbl9uYW1lOworICAgIGNoYXIgKmFyZ3VtZW50X25hbWU7CisgICAgaW50IG51bGxhYmxlOworICAgIGludCBhbGxvd19mZDsKKyAgICB3Y2hhcl90ICp3aWRlOworICAgIGNoYXIgKm5hcnJvdzsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeU9iamVjdCAqY2xlYW51cDsKK30gcGF0aF90OworCitzdGF0aWMgdm9pZAorcGF0aF9jbGVhbnVwKHBhdGhfdCAqcGF0aCkgeworICAgIGlmIChwYXRoLT5jbGVhbnVwKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoLT5jbGVhbnVwKTsKKyAgICAgICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgaW50CitwYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkgeworICAgIHBhdGhfdCAqcGF0aCA9IChwYXRoX3QgKilwOworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgY2hhciAqbmFycm93OworCisjZGVmaW5lIEZPUk1BVF9FWENFUFRJT04oZXhjLCBmbXQpIFwKKyAgICBQeUVycl9Gb3JtYXQoZXhjLCAiJXMlcyIgZm10LCBcCisgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsIFwKKyAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/ICI6ICIgICAgICAgICAgICAgICAgOiAiIiwgXAorICAgICAgICBwYXRoLT5hcmd1bWVudF9uYW1lID8gcGF0aC0+YXJndW1lbnRfbmFtZSA6ICJwYXRoIikKKworICAgIC8qIFB5X0NMRUFOVVBfU1VQUE9SVEVEIHN1cHBvcnQgKi8KKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHBhdGhfY2xlYW51cChwYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKSAqLworICAgIHBhdGgtPmNsZWFudXAgPSBOVUxMOworCisgICAgaWYgKG8gPT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIXBhdGgtPm51bGxhYmxlKSB7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNwZWNpZnkgTm9uZSBmb3IgJXMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICBwYXRoLT5sZW5ndGggPSAwOworICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICBwYXRoLT5mZCA9IC0xOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21PYmplY3Qobyk7CisgICAgaWYgKHVuaWNvZGUpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdjaGFyX3QgKndpZGU7CisgICAgICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKKyAgICAgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmljb2RlKTsKKyAgICAgICAgaWYgKCF3aWRlKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGgtPndpZGUgPSB3aWRlOworICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CisgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgIHBhdGgtPmZkID0gLTE7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSB1bmljb2RlOworICAgICAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisjZWxzZQorICAgICAgICBpbnQgY29udmVydGVkID0gUHlVbmljb2RlX0ZTQ29udmVydGVyKHVuaWNvZGUsICZieXRlcyk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWQpCisgICAgICAgICAgICBieXRlcyA9IE5VTEw7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihvKSkKKyAgICAgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KG8pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBieXRlcyA9IE5VTEw7CisgICAgICAgIGlmICghYnl0ZXMpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBpZiAocGF0aC0+YWxsb3dfZmQpIHsKKyAgICAgICAgICAgICAgICBpbnQgZmQ7CisgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IF9mZF9jb252ZXJ0ZXIobywgJmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciIpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFieXRlcykgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImlsbGVnYWwgdHlwZSBmb3IgJXMgcGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIGxlbmd0aCA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAobGVuZ3RoID4gTUFYX1BBVEgpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICBuYXJyb3cgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisgICAgaWYgKGxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgIHBhdGgtPm5hcnJvdyA9IG5hcnJvdzsKKyAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CisgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICBwYXRoLT5mZCA9IC0xOworICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CisKK3N0YXRpYyB2b2lkCithcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBjaGFyICphcmd1bWVudF9uYW1lKSB7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICIlcyVzJXMgdW5hdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIsCisgICAgICAgIChmdW5jdGlvbl9uYW1lICE9IE5VTEwpID8gZnVuY3Rpb25fbmFtZSA6ICIiLAorICAgICAgICAoZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSA/ICI6ICI6ICIiLAorICAgICAgICBhcmd1bWVudF9uYW1lKTsKK30KKworc3RhdGljIGludAorZGlyX2ZkX3VuYXZhaWxhYmxlKFB5T2JqZWN0ICpvLCB2b2lkICpwKQoreworICAgIGludCBkaXJfZmQ7CisgICAgaWYgKCFkaXJfZmRfY29udmVydGVyKG8sICZkaXJfZmQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKE5VTEwsICJkaXJfZmQiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICooaW50ICopcCA9IGRpcl9mZDsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorZmRfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkgeworICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAiZmQiKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAiZm9sbG93X3N5bWxpbmtzIik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3BhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkgeworICAgIGlmICghcGF0aC0+bmFycm93ICYmICFwYXRoLT53aWRlICYmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGRpcl9mZCB3aXRob3V0IG1hdGNoaW5nIHBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkgeworICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoZmQgIT0gLTEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW4ndCBzcGVjaWZ5IGJvdGggZGlyX2ZkIGFuZCBmZCIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKKyAgICBpZiAoKGZkID4gMCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBBIGhlbHBlciB1c2VkIGJ5IGEgbnVtYmVyIG9mIFBPU0lYLW9ubHkgZnVuY3Rpb25zICovCisjaWZuZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK19wYXJzZV9vZmZfdChQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQoreworI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCisgICAgKigob2ZmX3QqKWFkZHIpID0gUHlMb25nX0FzTG9uZyhhcmcpOworI2Vsc2UKKyAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworI2VuZGlmCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKICNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKIC8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKICAqIHZhbGlkIGFuZCByYWlzZSBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCkBAIC00OTgsNiArOTUxLDcgQEAKIAogICAgIHJldHVybiBUUlVFOwogfQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIGVudmlyb25tZW50IHRhYmxlICovCkBAIC02NTMsNyArMTEwNyw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcl91bmljb2RlKGNoYXIqIGZ1bmN0aW9uLCBQeV9VTklDT0RFKiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yX3VuaWNvZGUoY2hhciogZnVuY3Rpb24sIHdjaGFyX3QqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLwogICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CkBAIC02NjMsMjUgKzExMTcsNDggQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycm5vKTsKIH0KIAotc3RhdGljIGludAotY29udmVydF90b191bmljb2RlKFB5T2JqZWN0ICoqcGFyYW0pCitzdGF0aWMgUHlPYmplY3QgKgord2luMzJfZXJyb3Jfb2JqZWN0KGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KCpwYXJhbSkpCi0gICAgICAgIFB5X0lOQ1JFRigqcGFyYW0pOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjaygqcGFyYW0pKQotICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAotICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKCpwYXJhbSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKnBhcmFtKSk7CisgICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCisgICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICAgICAgICAgICAgICBlcnJubywKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCpwYXJhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0Iik7Ci0gICAgcmV0dXJuICgqcGFyYW0pICE9IE5VTEw7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnJubyk7CiB9CiAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKKy8qCisgKiBTb21lIGZ1bmN0aW9ucyByZXR1cm4gV2luMzIgZXJyb3JzLCBvdGhlcnMgb25seSBldmVyIHVzZSBwb3NpeF9lcnJvcgorICogKHRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhjZXB0aW9ucykKKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK3BhdGhfcG9zaXhfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoKQoreworICAgIGlmIChwYXRoLT5uYXJyb3cpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgtPm5hcnJvdyk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgtPm5hcnJvdykKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKGZ1bmN0aW9uX25hbWUsIHBhdGgtPm5hcnJvdyk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKGZ1bmN0aW9uX25hbWUsIHBhdGgtPndpZGUpOworICAgIHJldHVybiB3aW4zMl9lcnJvcihmdW5jdGlvbl9uYW1lLCBOVUxMKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhdGhfcG9zaXhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgcGF0aCk7CisjZW5kaWYKK30KKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICBIZWxwZXIgRnVuY3Rpb24gdG8gVHJpbSBhbmQgRm9ybWF0IE9TLzIgTWVzc2FnZXMKQEAgLTgwMCwzMiArMTI3Nyw2IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF8yc3RyKFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICBjaGFyICpmb3JtYXQsCi0gICAgICAgICAgIGludCAoKmZ1bmMpKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSkKLXsKLSAgICBQeU9iamVjdCAqb3BhdGgxID0gTlVMTCwgKm9wYXRoMiA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aDEsICpwYXRoMjsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgyKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcGF0aDEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMSk7Ci0gICAgcGF0aDIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMik7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykocGF0aDEsIHBhdGgyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aDEpOwotICAgIFB5X0RFQ1JFRihvcGF0aDIpOwotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgLyogWFhYIGhvdyB0byByZXBvcnQgYm90aCBwYXRoMSBhbmQgcGF0aDI/Pz8gKi8KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIFB5T2JqZWN0KgpAQCAtODM0LDIyICsxMjg1LDI4IEBACiAgICAgICAgICAgIGNoYXIqIHdmb3JtYXQsIEJPT0wgKF9fc3RkY2FsbCAqZnVuY1cpKExQV1NUUikpCiB7CiAgICAgUHlPYmplY3QgKnVuaTsKLSAgICBjaGFyICphbnNpOworICAgIGNvbnN0IGNoYXIgKmFuc2k7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCisgICAgeworICAgICAgICB3Y2hhcl90ICp3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gZnVuY1coUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY1cod3N0cik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoZnVuYywgUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoZnVuYywgdW5pKTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CisgICAgUHlFcnJfQ2xlYXIoKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsICZhbnNpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBmdW5jQShhbnNpKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMTA2NCwxOCArMTUyMSwxOSBAQAogCiAvKiBHcmFiIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCiBzdGF0aWMgaW50IGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgPSAwOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSkoSEFORExFLCBMUFNUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKShIQU5ETEUsIExQV1NUUiwgRFdPUkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgaW50CiBjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBKShIQU5ETEUsIExQU1RSLCBEV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKKwogICAgIC8qIG9ubHkgcmVjaGVjayAqLwogICAgIGlmICghaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKICAgICB7Ci0gICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKKyAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSIpOwogICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLApAQCAtMTM4Miw3ICsxODQwLDEwIEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZV9udW1iZXIpKQorICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgZWxzZQorICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CiAKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNDI2LDcgKzE4ODcsNyBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKLSJzdGF0X3Jlc3VsdDogUmVzdWx0IGZyb20gc3RhdCBvciBsc3RhdC5cblxuXAorInN0YXRfcmVzdWx0OiBSZXN1bHQgZnJvbSBzdGF0LCBmc3RhdCwgb3IgbHN0YXQuXG5cblwKIFRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAogICAobW9kZSwgaW5vLCBkZXYsIG5saW5rLCB1aWQsIGdpZCwgc2l6ZSwgYXRpbWUsIG10aW1lLCBjdGltZSlcblwKIG9yIHZpYSB0aGUgYXR0cmlidXRlcyBzdF9tb2RlLCBzdF9pbm8sIHN0X2Rldiwgc3RfbmxpbmssIHN0X3VpZCwgYW5kIHNvIG9uLlxuXApAQCAtMTQ1MSw2ICsxOTEyLDkgQEAKICAgICB7InN0X2F0aW1lIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyJ9LAogICAgIHsic3RfbXRpbWUiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIn0sCiAgICAgeyJzdF9jdGltZSIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UifSwKKyAgICB7InN0X2F0aW1lX25zIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyBpbiBuYW5vc2Vjb25kcyJ9LAorICAgIHsic3RfbXRpbWVfbnMiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIGluIG5hbm9zZWNvbmRzIn0sCisgICAgeyJzdF9jdGltZV9ucyIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UgaW4gbmFub3NlY29uZHMifSwKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKICAgICB7InN0X2Jsa3NpemUiLCAiYmxvY2tzaXplIGZvciBmaWxlc3lzdGVtIEkvTyJ9LAogI2VuZGlmCkBAIC0xNDczLDkgKzE5MzcsOSBAQAogfTsKIAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQotI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxMworI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxNgogI2Vsc2UKLSNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTIKKyNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTUKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MKQEAgLTE1NDQsOSArMjAwOCwzOSBAQAogICAgIDEwCiB9OwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHdhaXRpZF9yZXN1bHRfX2RvY19fLAorIndhaXRpZF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHdhaXRpZC5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzaV9waWQsIHNpX3VpZCwgc2lfc2lnbm8sIHNpX3N0YXR1cywgc2lfY29kZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfcGlkLCBzaV91aWQsIGFuZCBzbyBvbi5cblwKK1xuXAorU2VlIG9zLndhaXRpZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgd2FpdGlkX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InNpX3BpZCIsICB9LAorICAgIHsic2lfdWlkIiwgfSwKKyAgICB7InNpX3NpZ25vIiwgfSwKKyAgICB7InNpX3N0YXR1cyIsICB9LAorICAgIHsic2lfY29kZSIsIH0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHdhaXRpZF9yZXN1bHRfZGVzYyA9IHsKKyAgICAid2FpdGlkX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB3YWl0aWRfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgd2FpdGlkX3Jlc3VsdF9maWVsZHMsCisgICAgNQorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgV2FpdGlkUmVzdWx0VHlwZTsKKyNlbmRpZgorCiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwogc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0UmVzdWx0VHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgU3RhdFZGU1Jlc3VsdFR5cGU7CisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorc3RhdGljIFB5VHlwZU9iamVjdCBTY2hlZFBhcmFtVHlwZTsKKyNlbmRpZgogc3RhdGljIG5ld2Z1bmMgc3RydWN0c2VxX25ldzsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1ODksNiArMjA4MywxMCBAQAogICAgIGludCBuZXd2YWwgPSAtMTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnN0YXRfZmxvYXRfdGltZXMiLCAmbmV3dmFsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAic3RhdF9mbG9hdF90aW1lcygpIGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuZXd2YWwgPT0gLTEpCiAgICAgICAgIC8qIFJldHVybiBvbGQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhfc3RhdF9mbG9hdF90aW1lcyk7CkBAIC0xNTk3LDI1ICsyMDk1LDUwIEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqYmlsbGlvbiA9IE5VTEw7CisKIHN0YXRpYyB2b2lkCiBmaWxsX3RpbWUoUHlPYmplY3QgKnYsIGludCBpbmRleCwgdGltZV90IHNlYywgdW5zaWduZWQgbG9uZyBuc2VjKQogewotICAgIFB5T2JqZWN0ICpmdmFsLCppdmFsOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgIGl2YWwgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VjKTsKLSNlbHNlCi0gICAgaXZhbCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWMpOwotI2VuZGlmCi0gICAgaWYgKCFpdmFsKQotICAgICAgICByZXR1cm47CisgICAgUHlPYmplY3QgKnMgPSBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKTsKKyAgICBQeU9iamVjdCAqbnNfZnJhY3Rpb25hbCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG5zZWMpOworICAgIFB5T2JqZWN0ICpzX2luX25zID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbnNfdG90YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbG9hdF9zID0gTlVMTDsKKworICAgIGlmICghKHMgJiYgbnNfZnJhY3Rpb25hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHNfaW5fbnMgPSBQeU51bWJlcl9NdWx0aXBseShzLCBiaWxsaW9uKTsKKyAgICBpZiAoIXNfaW5fbnMpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIG5zX3RvdGFsID0gUHlOdW1iZXJfQWRkKHNfaW5fbnMsIG5zX2ZyYWN0aW9uYWwpOworICAgIGlmICghbnNfdG90YWwpCisgICAgICAgIGdvdG8gZXhpdDsKKwogICAgIGlmIChfc3RhdF9mbG9hdF90aW1lcykgewotICAgICAgICBmdmFsID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlYyArIDFlLTkqbnNlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnZhbCA9IGl2YWw7Ci0gICAgICAgIFB5X0lOQ1JFRihmdmFsKTsKKyAgICAgICAgZmxvYXRfcyA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWMgKyAxZS05Km5zZWMpOworICAgICAgICBpZiAoIWZsb2F0X3MpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgsIGl2YWwpOwotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgrMywgZnZhbCk7CisgICAgZWxzZSB7CisgICAgICAgIGZsb2F0X3MgPSBzOworICAgICAgICBQeV9JTkNSRUYoZmxvYXRfcyk7CisgICAgfQorCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCwgcyk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCszLCBmbG9hdF9zKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIGluZGV4KzYsIG5zX3RvdGFsKTsKKyAgICBzID0gTlVMTDsKKyAgICBmbG9hdF9zID0gTlVMTDsKKyAgICBuc190b3RhbCA9IE5VTEw7CitleGl0OgorICAgIFB5X1hERUNSRUYocyk7CisgICAgUHlfWERFQ1JFRihuc19mcmFjdGlvbmFsKTsKKyAgICBQeV9YREVDUkVGKHNfaW5fbnMpOworICAgIFB5X1hERUNSRUYobnNfdG90YWwpOworICAgIFB5X1hERUNSRUYoZmxvYXRfcyk7CiB9CiAKIC8qIHBhY2sgYSBzeXN0ZW0gc3RhdCBDIHN0cnVjdHVyZSBpbnRvIHRoZSBQeXRob24gc3RhdCB0dXBsZQpAQCAtMTcxOCwxMjYgKzIyNDEsMjM4IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LAotI2lmZGVmIF9fVk1TCi0gICAgICAgICAgICAgIGludCAoKnN0YXRmdW5jKShjb25zdCBjaGFyICosIFNUUlVDVF9TVEFUICosIC4uLiksCi0jZWxzZQotICAgICAgICAgICAgICBpbnQgKCpzdGF0ZnVuYykoY29uc3QgY2hhciAqLCBTVFJVQ1RfU1RBVCAqKSwKLSNlbmRpZgotICAgICAgICAgICAgICBjaGFyICp3Zm9ybWF0LAotICAgICAgICAgICAgICBpbnQgKCp3c3RhdGZ1bmMpKGNvbnN0IFB5X1VOSUNPREUgKiwgU1RSVUNUX1NUQVQgKikpCi17Ci0gICAgU1RSVUNUX1NUQVQgc3Q7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSByZXN1bHQgT0sgd2l0aG91dAotICAgICAgICAgICAgICAgdGhyZWFkIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIHJlcyA9IHdzdGF0ZnVuYyh3cGF0aCwgJnN0KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAocmVzICE9IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgic3RhdCIsIHdwYXRoKTsKLSAgICAgICAgcmV0dXJuIF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKnN0YXRmdW5jKShwYXRoLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzICE9IDApIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yKCJzdGF0IiwgcGF0aCk7Ci0jZWxzZQotICAgICAgICByZXN1bHQgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOwotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBQT1NJWCBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9hY2Nlc3NfX2RvY19fLAotImFjY2VzcyhwYXRoLCBtb2RlKSAtPiBUcnVlIGlmIGdyYW50ZWQsIEZhbHNlIG90aGVyd2lzZVxuXG5cCi1Vc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgTm90ZSB0aGF0IG1vc3RcblwKLW9wZXJhdGlvbnMgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpcyByb3V0aW5lIGNhblxuXAotYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyIGhhcyB0aGVcblwKLXNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgRl9PSyB0byB0ZXN0XG5cCi1leGlzdGVuY2UsIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9hY2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZG9fc3RhdChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCisgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgaW50IHJlc3VsdDsKKworI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgIWRlZmluZWQoSEFWRV9MU1RBVCkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChmdW5jdGlvbl9uYW1lLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJzdGF0IiwgcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInN0YXQiLCBkaXJfZmQsIHBhdGgtPmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInN0YXQiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBGU1RBVChwYXRoLT5mZCwgJnN0KTsKKyAgICBlbHNlCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLT53aWRlKSB7CisgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLT53aWRlLCAmc3QpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCJzdGF0IiwgcGF0aCk7CisKKyAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCisic3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpIC0+IHN0YXQgcmVzdWx0XG5cblwKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIGEgc3RyaW5nIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorICBkaXJfZmQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgaWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nXG5cCisgIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoInN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2xzdGF0X19kb2NfXywKKyJsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gc3RhdCByZXN1bHRcblxuXAorTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAwOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0Iiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZG9fc3RhdCgic3RhdCIsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfYWNjZXNzX19kb2NfXywKKyJhY2Nlc3MocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsXAorIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgUmV0dXJucyBUcnVlIGlmIGdyYW50ZWQsXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBlZmZlY3RpdmVfaWRzIGlzIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZlxuXAorICB0aGUgcmVhbCB1aWQvZ2lkLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGFjY2VzcyB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcblwKKyAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcblwKKyAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyXG5cCisgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC5cblwKK1RoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSBGX09LIHRvIHRlc3QgZXhpc3RlbmNlLCBvciB0aGUgaW5jbHVzaXZlLU9SXG5cCisgIG9mIFJfT0ssIFdfT0ssIGFuZCBYX09LLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfYWNjZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZWZmZWN0aXZlX2lkcyA9IDA7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaTphY2Nlc3MiLCAmcG8sICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkIGxvY2sgYXMKLSAgICAgICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZ290byBmaW5pc2g7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci1maW5pc2g6Ci0gICAgaWYgKGF0dHIgPT0gMHhGRkZGRkZGRikKLSAgICAgICAgLyogRmlsZSBkb2VzIG5vdCBleGlzdCwgb3IgY2Fubm90IHJlYWQgYXR0cmlidXRlcyAqLwotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwotICAgIC8qIEFjY2VzcyBpcyBwb3NzaWJsZSBpZiBlaXRoZXIgd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsIG9yCi0gICAgICAgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LCBvciBpZiBpdCdzIGEgZGlyZWN0b3J5LCBhcyB0aGVyZSBhcmUKLSAgICAgICBubyByZWFkLW9ubHkgZGlyZWN0b3JpZXMgb24gV2luZG93cy4gKi8KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCEobW9kZSAmIDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSk7CiAjZWxzZQotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6YWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBhY2Nlc3MocGF0aCwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzID09IDApOworICAgIGludCByZXN1bHQ7CiAjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImFjY2VzcyIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGlmIChlZmZlY3RpdmVfaWRzKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJhY2Nlc3MiLCAiZWZmZWN0aXZlX2lkcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUgIT0gTlVMTCkKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIC8qCisgICAgICogQWNjZXNzIGlzIHBvc3NpYmxlIGlmCisgICAgICogICAqIHdlIGRpZG4ndCBnZXQgYSAtMSwgYW5kCisgICAgICogICAgICogd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsCisgICAgICogICAgICogb3IgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LAorICAgICAqICAgICAqIG9yIGl0J3MgYSBkaXJlY3RvcnkuCisgICAgICogKERpcmVjdG9yaWVzIGNhbm5vdCBiZSByZWFkLW9ubHkgb24gV2luZG93cy4pCisgICAgKi8KKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgIChhdHRyICE9IDB4RkZGRkZGRkYpICYmCisgICAgICAgICAgICAoIShtb2RlICYgMikgfHwKKyAgICAgICAgICAgICEoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSB8fAorICAgICAgICAgICAgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSk7CisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgIGVmZmVjdGl2ZV9pZHMgfHwKKyAgICAgICAgIWZvbGxvd19zeW1saW5rcykgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICBpZiAoIWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZsYWdzIHw9IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgICAgIGlmIChlZmZlY3RpdmVfaWRzKQorICAgICAgICAgICAgZmxhZ3MgfD0gQVRfRUFDQ0VTUzsKKyAgICAgICAgcmVzdWx0ID0gZmFjY2Vzc2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGZsYWdzKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGFjY2VzcyhwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoIXJlc3VsdCk7CisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAorZXhpdDoKKyNlbmRpZgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmbmRlZiBGX09LCkBAIC0xOTA4LDI3ICsyNTQzLDY2IEBACiAKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGRpcl9fZG9jX18sCiAiY2hkaXIocGF0aClcblxuXAotQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4iKTsKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyXzFzdHIoYXJncywgImNoZGlyIiwgInk6Y2hkaXIiLCB3aW4zMl9jaGRpciwgIlU6Y2hkaXIiLCB3aW4zMl93Y2hkaXIpOwotI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6Y2hkaXIiLCBfY2hkaXIyKTsKLSNlbGlmIGRlZmluZWQoX19WTVMpCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOmNoZGlyIiwgKGludCAoKikoY29uc3QgY2hhciAqKSljaGRpcik7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaGRpciIsIGNoZGlyKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKKyAgICByZXN1bHQgPSBfY2hkaXIyKHBhdGgubmFycm93KTsKKyNlbHNlCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNoZGlyKHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJjaGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmZGVmIEhBVkVfRkNIRElSCiBQeURvY19TVFJWQVIocG9zaXhfZmNoZGlyX19kb2NfXywKLSJmY2hkaXIoZmlsZGVzKVxuXG5cCi1DaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmlsZGVzIG11c3QgYmVcblwKLW9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4iKTsKKyJmY2hkaXIoZmQpXG5cblwKK0NoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuICBmZCBtdXN0IGJlXG5cCitvcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuICBFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQpAQCAtMTkzOSw4NyArMjYxMywxNTUgQEAKIAogCiBQeURvY19TVFJWQVIocG9zaXhfY2htb2RfX2RvY19fLAotImNobW9kKHBhdGgsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4iKTsKKyJjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAorICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoID0gTlVMTDsKLSAgICBjaGFyICpwYXRoID0gTlVMTDsKLSAgICBpbnQgaTsKLSAgICBpbnQgcmVzOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaXw6Y2htb2QiLCAmcG8sICZpKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgaWYgKGF0dHIgIT0gMHhGRkZGRkZGRikgewotICAgICAgICAgICAgaWYgKGkgJiBfU19JV1JJVEUpCi0gICAgICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzVyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIGF0dHIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoImNobW9kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgIGludCBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9IDA7CisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmICEoZGVmaW5lZChIQVZFX0ZDSE1PREFUKSB8fCBkZWZpbmVkKEhBVkVfTENITU9EKSkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBpZiAoYXR0ciAhPSAweEZGRkZGRkZGKSB7Ci0gICAgICAgIGlmIChpICYgX1NfSVdSSVRFKQorICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgIGlmIChhdHRyID09IDB4RkZGRkZGRkYpCisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtb2RlICYgX1NfSVdSSVRFKQogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLCBhdHRyKTsKKyAgICAgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUsIGF0dHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3csIGF0dHIpOworICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJjaG1vZCIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGguZmQsIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENITU9ECisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNobW9kKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogZmNobW9kYXQoKSBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IEFUX1NZTUxJTktfTk9GT0xMT1chCisgICAgICAgICAqIFRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSBzaG93cyBob3cgdG8gdXNlIGl0LAorICAgICAgICAgKiBhbmQgdGhlbiBzYXlzIGl0IGlzbid0IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICogKHRydWUgb24gbGludXggd2l0aCBnbGliYyAyLjE1LCBhbmQgb3BlbmluZGlhbmEgMy54KQorICAgICAgICAgKgorICAgICAgICAgKiBPbmNlIGl0IGlzIHN1cHBvcnRlZCwgb3MuY2htb2Qgd2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAqIHN1cHBvcnQgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3M9RmFsc2UuICAoSG9wZWZ1bGx5LikKKyAgICAgICAgICogVW50aWwgdGhlbiwgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgZXhjZXB0aW9uIHdlIHJhaXNlLgorICAgICAgICAgKi8KKyAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOworICAgICAgICAvKgorICAgICAgICAgKiBCdXQgd2FpdCEgIFdlIGNhbid0IHRocm93IHRoZSBleGNlcHRpb24gd2l0aG91dCBhbGxvd2luZyB0aHJlYWRzLAorICAgICAgICAgKiBhbmQgd2UgY2FuJ3QgZG8gdGhhdCBpbiB0aGlzIG5lc3RlZCBzY29wZS4gIChNYWNybyB0cmlja2VyeSwgc2lnaC4pCisgICAgICAgICAqLworICAgICAgICBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgKChlcnJubyA9PSBFTk9UU1VQKSB8fCAoZXJybm8gPT0gRU9QTk9UU1VQUCkpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIWZvbGxvd19zeW1saW5rczsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXMgPSAwOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgd2luMzJfZXJyb3IoImNobW9kIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2htb2QocGF0aCwgaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGlmIChmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCkgeworICAgICAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgICAgICBkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG1vZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigiY2htb2QiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfRkNITU9ECiBQeURvY19TVFJWQVIocG9zaXhfZmNobW9kX19kb2NfXywKICJmY2htb2QoZmQsIG1vZGUpXG5cblwKIENoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGVcblwKLWRlc2NyaXB0b3IgZmQuIik7CitkZXNjcmlwdG9yIGZkLiAgRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjA0MCw3ICsyNzgyLDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2htb2RfX2RvY19fLAogImxjaG1vZChwYXRoLCBtb2RlKVxuXG5cCiBDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzXG5cCi1hZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiIpOworYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC5cblwKK0VxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2xjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMDY2LDI4ICsyODA5LDU2IEBACiAKICNpZmRlZiBIQVZFX0NIRkxBR1MKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGZsYWdzX19kb2NfXywKLSJjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCi1TZXQgZmlsZSBmbGFncy4iKTsKKyJjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorU2V0IGZpbGUgZmxhZ3MuXG5cCitcblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAorICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKK2ZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuXAordW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6Y2hmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmZmxhZ3MpKQorICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8JGk6Y2hmbGFncyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmbmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNoZmxhZ3MiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBjaGZsYWdzKHBhdGgsIGZsYWdzKTsKKyNpZmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNoZmxhZ3MiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCiAKQEAgLTIwOTUsNyArMjg2Niw4IEBACiBQeURvY19TVFJWQVIocG9zaXhfbGNoZmxhZ3NfX2RvY19fLAogImxjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCiBTZXQgZmlsZSBmbGFncy5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMTQzLDYgKzI5MTUsMjEgQEAKIH0KICNlbmRpZiAvKiBIQVZFX0ZTWU5DICovCiAKKyNpZmRlZiBIQVZFX1NZTkMKK1B5RG9jX1NUUlZBUihwb3NpeF9zeW5jX19kb2NfXywKKyJzeW5jKClcblxuXAorRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3luYygpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCiAKICNpZmRlZiBfX2hwdXgKQEAgLTIxNjQsMjkgKzI5NTEsMTA1IEBACiAKICNpZmRlZiBIQVZFX0NIT1dOCiBQeURvY19TVFJWQVIocG9zaXhfY2hvd25fX2RvY19fLAotImNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworImNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGxvbmcgdWlkLCBnaWQ7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mbGw6Y2hvd24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVpZCwgJmdpZCkpCisgICAgcGF0aF90IHBhdGg7CisgICAgbG9uZyB1aWRfbCwgZ2lkX2w7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmxsfCRPJnA6Y2hvd24iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVpZF9sLCAmZ2lkX2wsCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZiAhKGRlZmluZWQoSEFWRV9MQ0hPV04pIHx8IGRlZmluZWQoSEFWRV9GQ0hPV05BVCkpCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisgICAgaWYgKGRpcl9mZF9hbmRfZmRfaW52YWxpZCgiY2hvd24iLCBkaXJfZmQsIHBhdGguZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2hvd24iLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICAvKgorICAgICAqIFRoaXMgaXMgZm9yIE1hYyBPUyBYIDEwLjMsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBsY2hvd24uCisgICAgICogKEJ1dCB3ZSBzdGlsbCBoYXZlIGFuIGxjaG93biBzeW1ib2wgYmVjYXVzZSBvZiB3ZWFrLWxpbmtpbmcuKQorICAgICAqIEl0IGRvZXNuJ3QgaGF2ZSBmY2hvd25hdCBlaXRoZXIuICBTbyB0aGVyZSdzIG5vIHBvc3NpYmlsaXR5CisgICAgICogb2YgYSBncmFjZWZ1bCBmYWlsb3Zlci4KKyAgICAgKi8KKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChsY2hvd24gPT0gTlVMTCkpIHsKKyAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hvd24iLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2hvd24ocGF0aCwgKHVpZF90KSB1aWQsIChnaWRfdCkgZ2lkKTsKKyAgICB1aWQgPSAodWlkX3QpdWlkX2w7CisgICAgZ2lkID0gKHVpZF90KWdpZF9sOworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bihwYXRoLmZkLCB1aWQsIGdpZCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9MQ0hPV04KKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBsY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE9XTkFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmVzdWx0ID0gZmNob3duYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgdWlkLCBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNob3duIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KIApAQCAtMjE5NCw3ICszMDU3LDcgQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9mY2hvd25fX2RvY19fLAogImZjaG93bihmZCwgdWlkLCBnaWQpXG5cblwKIENoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvclxuXAotZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuIik7CitmZCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjE3LDcgKzMwODAsOCBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X2xjaG93bl9fZG9jX18sCiAibGNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCiBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAotVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuIik7CitUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKK0VxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjI3OSw2ICszMTQzLDkgQEAKICAgICAgICAgaWYgKHdidWYyICE9IHdidWYpIGZyZWUod2J1ZjIpOwogICAgICAgICByZXR1cm4gcmVzb2JqOwogICAgIH0KKworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjMxNiwxNTAgKzMxODMsMjI2IEBACiB9CiAjZW5kaWYKIAorI2lmICgoIWRlZmluZWQoSEFWRV9MSU5LKSkgJiYgZGVmaW5lZChNU19XSU5ET1dTKSkKKyNkZWZpbmUgSEFWRV9MSU5LIDEKKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSU5LCiBQeURvY19TVFJWQVIocG9zaXhfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4iKTsKKyJsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuXG5cCitcblwKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBsaW5rIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCitzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91clxuXAorICBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICByZXR1cm4gcG9zaXhfMnN0cihhcmdzLCAiTyZPJjpsaW5rIiwgbGluayk7Ci19Ci0jZW5kaWYgLyogSEFWRV9MSU5LICovCi0KKyAgICBwYXRoX3Qgc3JjLCBkc3Q7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogI2lmZGVmIE1TX1dJTkRPV1MKLVB5RG9jX1NUUlZBUih3aW4zMl9saW5rX19kb2NfXywKLSJsaW5rKHNyYywgZHN0KVxuXG5cCi1DcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLiIpOworICAgIEJPT0wgcmVzdWx0OworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3NyYywgKm9kc3Q7Ci0gICAgY2hhciAqc3JjLCAqZHN0OwotICAgIEJPT0wgcnNsdDsKLQotICAgIFB5VW5pY29kZU9iamVjdCAqdXNyYywgKnVkc3Q7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOmxpbmsiLCAmdXNyYywgJnVkc3QpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcnNsdCA9IENyZWF0ZUhhcmRMaW5rVyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1ZHN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1c3JjKSwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKHJzbHQgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigibGluayIsIE5VTEwpOwotCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIH0KLQotICAgIC8qIE5hcnJvdyBzdHJpbmdzIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpsaW5rIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3NyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2RzdCkpCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8TyZPJnA6bGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsCisgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzcmMgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zcmMpOwotICAgIGRzdCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2RzdCk7CisjaWZuZGVmIEhBVkVfTElOS0FUCisgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoImxpbmsiLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCiAKKyAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcnNsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QsIHNyYywgTlVMTCk7CisgICAgaWYgKHNyYy53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua1coZHN0LndpZGUsIHNyYy53aWRlLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfREVDUkVGKG9zcmMpOwotICAgIFB5X0RFQ1JFRihvZHN0KTsKLSAgICBpZiAocnNsdCA9PSAwKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImxpbmsiLCBOVUxMKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoImxpbmsiLCBkc3Qub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTElOS0FUCisgICAgaWYgKChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgKCFmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXN1bHQgPSBsaW5rYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywKKyAgICAgICAgICAgIGRzdF9kaXJfZmQsIGRzdC5uYXJyb3csCisgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyBBVF9TWU1MSU5LX0ZPTExPVyA6IDApOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoImxpbmsiLCAmZHN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZgorCiAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3RkaXJfX2RvY19fLAotImxpc3RkaXIoW3BhdGhdKSAtPiBsaXN0X29mX3N0cmluZ3NcblxuXAotUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5LlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBkaXJlY3RvcnkgdG8gbGlzdCAoZGVmYXVsdDogJy4nKVxuXAotXG5cCisibGlzdGRpcihwYXRoPScuJykgLT4gbGlzdF9vZl9maWxlbmFtZXNcblxuXAorUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWxcblwKLWVudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOworZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuXG5cCitcblwKK3BhdGggY2FuIGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgc3RyIG9yIGJ5dGVzLiAgSWYgcGF0aCBpcyBieXRlcyxcblwKKyAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgYnl0ZXM7IGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzXG5cCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3I7XG5cCisgIHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbGlzdGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgcGF0aF90IHBhdGg7CisgICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgaW50IGZkID0gLTE7CisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKKyAgICBQeU9iamVjdCAqdjsKKyAgICBIQU5ETEUgaEZpbmRGaWxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgQk9PTCByZXN1bHQ7CisgICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOworICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsgLyogT3ZlcmFsbG9jYXRlIGZvciBcXCouKlwwICovCisgICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICAvKiBvbmx5IGNsYWltIHRvIGhhdmUgc3BhY2UgZm9yIE1BWF9QQVRIICovCisgICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsKKyAgICBQeU9iamVjdCAqcG8gPSBOVUxMOworICAgIHdjaGFyX3QgKnduYW1lYnVmID0gTlVMTDsKKyNlbGlmIGRlZmluZWQoUFlPU19PUzIpCisjaWZuZGVmIE1BWF9QQVRICisjZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKKyNlbmRpZgorICAgIGNoYXIgKnB0OworICAgIFB5T2JqZWN0ICp2OworICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKKyAgICBIRElSICBoZGlyID0gMTsKKyAgICBVTE9ORyBzcmNoY250ID0gMTsKKyAgICBGSUxFRklOREJVRjMgICBlcDsKKyAgICBBUElSRVQgcmM7CisjZWxzZQorICAgIFB5T2JqZWN0ICp2OworICAgIERJUiAqZGlycCA9IE5VTEw7CisgICAgc3RydWN0IGRpcmVudCAqZXA7CisgICAgaW50IHJldHVybl9zdHI7IC8qIGlmIGZhbHNlLCByZXR1cm4gYnl0ZXMgKi8KKyNlbmRpZgorCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGgubnVsbGFibGUgPSAxOworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgcGF0aC5mZCA9IC0xOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogWFhYIFNob3VsZCByZWRvIHRoaXMgcHV0dGluZyB0aGUgKG5vdyBmb3VyKSB2ZXJzaW9ucyBvZiBvcGVuZGlyCiAgICAgICAgaW4gc2VwYXJhdGUgZmlsZXMgaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBhbGwgaGVyZS4uLiAqLwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoSEFWRV9PUEVORElSKQotCi0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIEhBTkRMRSBoRmluZEZpbGU7Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgV0lOMzJfRklORF9EQVRBIEZpbGVEYXRhOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLwotICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwotCi0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifFU6bGlzdGRpciIsICZwbykpIHsKKyAgICBpZiAoIXBhdGgubmFycm93KSB7CiAgICAgICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOwotICAgICAgICBQeV9VTklDT0RFICp3bmFtZWJ1ZiwgKnBvX3djaGFyczsKKyAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOwogCi0gICAgICAgIGlmIChwbyA9PSBOVUxMKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgaWYgKCFwYXRoLndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwogICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKICAgICAgICAgICAgIGxlbiA9IDE7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0gICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocG8pOworICAgICAgICAgICAgcG9fd2NoYXJzID0gcGF0aC53aWRlOworICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgud2lkZSk7CiAgICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIGZvciBcXCouKlwwICovCisgICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwogICAgICAgICB3bmFtZWJ1ZiA9IG1hbGxvYygobGVuICsgNSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoIXduYW1lYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgd2NzY3B5KHduYW1lYnVmLCBwb193Y2hhcnMpOwogICAgICAgICBpZiAobGVuID4gMCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CisgICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKICAgICAgICAgICAgIGlmICh3Y2ggIT0gTCcvJyAmJiB3Y2ggIT0gTCdcXCcgJiYgd2NoICE9IEwnOicpCiAgICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gTCdcXCc7CiAgICAgICAgICAgICB3Y3NjcHkod25hbWVidWYgKyBsZW4sIEwiKi4qIik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKChkID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgewotICAgICAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgICAgIHJldHVybiBkOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZEZpcnN0RmlsZVciLCB3bmFtZWJ1Zik7Ci0gICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwogICAgICAgICAgICAgaWYgKHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCiAgICAgICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3RmlsZURhdGEuY0ZpbGVOYW1lLCB3Y3NsZW4od0ZpbGVEYXRhLmNGaWxlTmFtZSkpOworICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdGaWxlRGF0YS5jRmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNDcwLDM4ICszNDEzLDE2IEBACiAgICAgICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgICAgICBpdCBnb3QgdG8gdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5LiAqLwogICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICB3aW4zMl9lcnJvcl91bmljb2RlKCJGaW5kTmV4dEZpbGVXIiwgd25hbWVidWYpOwotICAgICAgICAgICAgICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgICAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZE5leHRGaWxlVyIsIHduYW1lYnVmKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gd2hpbGUgKHJlc3VsdCA9PSBUUlVFKTsKIAotICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRDbG9zZSIsIHduYW1lYnVmKTsKLSAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgIHJldHVybiBkOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpsaXN0ZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlCeXRlc19HRVRfU0laRShvcGF0aCkrMSA+IE1BWF9QQVRIKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RyY3B5KG5hbWVidWYsIFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpKTsKLSAgICBsZW4gPSBQeU9iamVjdF9TaXplKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLm5hcnJvdyk7CisgICAgbGVuID0gcGF0aC5sZW5ndGg7CiAgICAgaWYgKGxlbiA+IDApIHsKICAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwogICAgICAgICBpZiAoY2ggIT0gU0VQICYmIGNoICE9IEFMVFNFUCAmJiBjaCAhPSAnOicpCkBAIC0yNTA5LDcgKzM0MzAsNyBAQAogICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOwogICAgIH0KIAotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yNTE4LDkgKzM0MzksMTAgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGludCBlcnJvciA9IEdldExhc3RFcnJvcigpOwogICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwpAQCAtMjUyOCwxNCArMzQ1MCwxNCBAQAogICAgICAgICAgICAgc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4uIikgIT0gMCkgewogICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhGaWxlRGF0YS5jRmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNTQ2LDQ2ICszNDY4LDMzIEBACiAgICAgICAgIC8qIEZpbmROZXh0RmlsZSBzZXRzIGVycm9yIHRvIEVSUk9SX05PX01PUkVfRklMRVMgaWYKICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewotICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgd2luMzJfZXJyb3IoIkZpbmROZXh0RmlsZSIsIG5hbWVidWYpOwotICAgICAgICAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGxpc3QgPSB3aW4zMl9lcnJvcigiRmluZE5leHRGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKLSAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkZpbmRDbG9zZSIsIG5hbWVidWYpOworZXhpdDoKKyAgICBpZiAoaEZpbmRGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGlmIChGaW5kQ2xvc2UoaEZpbmRGaWxlKSA9PSBGQUxTRSkgeworICAgICAgICAgICAgaWYgKGxpc3QgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJGaW5kQ2xvc2UiLCBwYXRoLm9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKHduYW1lYnVmKQorICAgICAgICBmcmVlKHduYW1lYnVmKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCi0gICAgcmV0dXJuIGQ7CisgICAgcmV0dXJuIGxpc3Q7CiAKICNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0KLSNpZm5kZWYgTUFYX1BBVEgKLSNkZWZpbmUgTUFYX1BBVEggICAgQ0NITUFYUEFUSAotI2VuZGlmCi0gICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKm5hbWUsICpwdDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqZCwgKnY7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzVdOwotICAgIEhESVIgIGhkaXIgPSAxOwotICAgIFVMT05HIHNyY2hjbnQgPSAxOwotICAgIEZJTEVGSU5EQlVGMyAgIGVwOwotICAgIEFQSVJFVCByYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bGlzdGRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9uYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob25hbWUpOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob25hbWUpOwotICAgIGlmIChsZW4gPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgUHlfREVDUkVGKG9uYW1lKTsKKyAgICBpZiAocGF0aC5sZW5ndGggPj0gTUFYX1BBVEgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBuYW1lKTsKKyAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOwogICAgIGZvciAocHQgPSBuYW1lYnVmOyAqcHQ7IHB0KyspCiAgICAgICAgIGlmICgqcHQgPT0gQUxUU0VQKQogICAgICAgICAgICAgKnB0ID0gU0VQOwpAQCAtMjU5Myw5ICszNTAyLDggQEAKICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CiAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKIAotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCiAgICAgcmMgPSBEb3NGaW5kRmlyc3QobmFtZWJ1ZiwgICAgICAgICAvKiBXaWxkY2FyZCBQYXR0ZXJuIHRvIE1hdGNoICovCkBAIC0yNjA3LDcgKzM1MTUsOSBAQAogCiAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7CiAgICAgICAgIGVycm5vID0gRU5PRU5UOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob25hbWUpOworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIGxpc3QgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgubmFycm93KTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIGlmIChzcmNoY250ID4gMCkgeyAvKiBJZiBEaXJlY3RvcnkgaXMgTk9UIFRvdGFsbHkgRW1wdHksICovCkBAIC0yNjIzLDU1ICszNTMzLDcwIEBACiAKICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcobmFtZWJ1Zik7CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGQsIHYpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgfSB3aGlsZSAoRG9zRmluZE5leHQoaGRpciwgJmVwLCBzaXplb2YoZXApLCAmc3JjaGNudCkgPT0gTk9fRVJST1IgJiYgc3JjaGNudCA+IDApOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgcmV0dXJuIGQ7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gbGlzdDsKICNlbHNlCi0gICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICplcDsKLSAgICBpbnQgYXJnX2lzX3VuaWNvZGUgPSAxOwogCiAgICAgZXJybm8gPSAwOwotICAgIC8qIHYgaXMgbmV2ZXIgcmVhZCwgc28gaXQgZG9lcyBub3QgbmVlZCB0byBiZSBpbml0aWFsaXplZCB5ZXQuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8VTpsaXN0ZGlyIiwgJnYpKSB7Ci0gICAgICAgIGFyZ19pc191bmljb2RlID0gMDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgb25hbWUgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmxpc3RkaXIiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvbmFtZSA9PSBOVUxMKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KLSAgICAgICAgb25hbWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoIi4iKTsKLSAgICB9Ci0gICAgbmFtZSA9IFB5Qnl0ZXNfQXNTdHJpbmcob25hbWUpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBkaXJwID0gb3BlbmRpcihuYW1lKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChkaXJwID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKLSAgICB9Ci0gICAgaWYgKChkID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyAgICAgICAgLyogY2xvc2VkaXIoKSBjbG9zZXMgdGhlIEZELCBzbyB3ZSBkdXBsaWNhdGUgaXQgKi8KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjbG9zZWRpcihkaXJwKTsKKyAgICAgICAgZmQgPSBkdXAocGF0aC5mZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICAgICAgbGlzdCA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5fc3RyID0gMTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcnAgPSBmZG9wZW5kaXIoZmQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIGlmIChwYXRoLm5hcnJvdykgeworICAgICAgICAgICAgbmFtZSA9IHBhdGgubmFycm93OworICAgICAgICAgICAgLyogb25seSByZXR1cm4gYnl0ZXMgaWYgdGhleSBzcGVjaWZpZWQgYSBieXRlcyBvYmplY3QgKi8KKyAgICAgICAgICAgIHJldHVybl9zdHIgPSAhKFB5Qnl0ZXNfQ2hlY2socGF0aC5vYmplY3QpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG5hbWUgPSAiLiI7CisgICAgICAgICAgICByZXR1cm5fc3RyID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZGlycCA9IG9wZW5kaXIobmFtZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgaWYgKGRpcnAgPT0gTlVMTCkgeworICAgICAgICBsaXN0ID0gcGF0aF9lcnJvcigibGlzdGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZm9yICg7OykgewogICAgICAgICBlcnJubyA9IDA7CkBAIC0yNjgyLDM4ICszNjA3LDQzIEBACiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gMCkgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+ZF9uYW1lWzBdID09ICcuJyAmJgogICAgICAgICAgICAgKE5BTUxFTihlcCkgPT0gMSB8fAogICAgICAgICAgICAgIChlcC0+ZF9uYW1lWzFdID09ICcuJyAmJiBOQU1MRU4oZXApID09IDIpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoYXJnX2lzX3VuaWNvZGUpCisgICAgICAgIGlmIChyZXR1cm5fc3RyKQogICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGVwLT5kX25hbWUsIE5BTUxFTihlcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShlcC0+ZF9uYW1lLCBOQU1MRU4oZXApKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIoZCk7CisgICAgICAgICAgICBQeV9DTEVBUihsaXN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGQsIHYpICE9IDApIHsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfQ0xFQVIoZCk7CisgICAgICAgICAgICBQeV9DTEVBUihsaXN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNsb3NlZGlyKGRpcnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9uYW1lKTsKIAotICAgIHJldHVybiBkOworZXhpdDoKKyAgICBpZiAoZGlycCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGZkID4gLTEpCisgICAgICAgICAgICByZXdpbmRkaXIoZGlycCk7CisgICAgICAgIGNsb3NlZGlyKGRpcnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gbGlzdDsKIAogI2VuZGlmIC8qIHdoaWNoIE9TICovCiB9ICAvKiBlbmQgb2YgcG9zaXhfbGlzdGRpciAqLwpAQCAtMjcyMywzMSArMzY1MywzNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X19nZXRmdWxscGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgY2hhciBvdXRidWZbTUFYX1BBVEgqMl07CiAgICAgY2hhciAqdGVtcDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZ1bGxwYXRobmFtZSIsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0gICAgICAgIFB5X1VOSUNPREUgd291dGJ1ZltNQVhfUEFUSCoyXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3RlbXA7CisgICAgUHlPYmplY3QgKnBvOworCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKQorICAgIHsKKyAgICAgICAgd2NoYXJfdCAqd3BhdGg7CisgICAgICAgIHdjaGFyX3Qgd291dGJ1ZltNQVhfUEFUSCoyXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICAgICAgd2NoYXJfdCAqd3RlbXA7CiAgICAgICAgIERXT1JEIHJlc3VsdDsKICAgICAgICAgUHlPYmplY3QgKnY7CisKKyAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod291dGJ1Zikvc2l6ZW9mKHdvdXRidWZbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gc2l6ZW9mKHdvdXRidWYpL3NpemVvZih3b3V0YnVmWzBdKSkgewotICAgICAgICAgICAgd291dGJ1ZnAgPSBtYWxsb2MocmVzdWx0ICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgaWYgKHJlc3VsdCA+IFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSkgeworICAgICAgICAgICAgd291dGJ1ZnAgPSBtYWxsb2MocmVzdWx0ICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgICAgIGlmICghd291dGJ1ZnApCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHdwYXRoLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZ1bGxQYXRoTmFtZVciLCB3cGF0aCk7CisgICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcG8pOwogICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKICAgICAgICAgICAgIGZyZWUod291dGJ1ZnApOwogICAgICAgICByZXR1cm4gdjsKQEAgLTI3NTYsMTggKzM2OTAsMTYgQEAKICAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KICAgICBQeUVycl9DbGVhcigpOwogCi0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJ5Ol9nZXRmdWxscGF0aG5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKCFHZXRGdWxsUGF0aE5hbWUocGF0aCwgc2l6ZW9mKG91dGJ1Zikvc2l6ZW9mKG91dGJ1ZlswXSksCisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7CiAgICAgICAgIHdpbjMyX2Vycm9yKCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhQeVR1cGxlX0dldEl0ZW0oYXJncywgMCkpKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlKG91dGJ1Ziwgc3RybGVuKG91dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsIE5VTEwpOwpAQCAtMjc4NSwxMiArMzcxNywxNCBAQAogICAgIGludCBidWZfc2l6ZTsKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKICAgICB3Y2hhcl90ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1fDpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcG8pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOworICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYoIWNoZWNrX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSgpKSB7CiAgICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLCByZXR1cm4gYQpAQCAtMjgwOSwxOCArMzc0MywxNSBAQAogICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKICAgICAgICAgTlVMTCk7CiAKLSAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZ2V0IGEgaGFuZGxlIHRvIGZpbGUuIik7Ci0gICAgfQorICAgIGlmKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDcmVhdGVGaWxlVyIsIHBvKTsKIAogICAgIC8qIFdlIGhhdmUgYSBnb29kIGhhbmRsZSB0byB0aGUgdGFyZ2V0LCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHRoZQogICAgICAgIHRhcmdldCBwYXRoIG5hbWUuICovCiAgICAgYnVmX3NpemUgPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCAwLCAwLCBWT0xVTUVfTkFNRV9OVCk7CiAKICAgICBpZighYnVmX3NpemUpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcG8pOwogCiAgICAgdGFyZ2V0X3BhdGggPSAod2NoYXJfdCAqKW1hbGxvYygoYnVmX3NpemUrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZighdGFyZ2V0X3BhdGgpCkBAIC0yODI5LDEzICszNzYwLDEzIEBACiAgICAgcmVzdWx0X2xlbmd0aCA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaEZpbGUsIHRhcmdldF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBvKTsKIAogICAgIGlmKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ2xvc2VIYW5kbGUiLCBwbyk7CiAKICAgICB0YXJnZXRfcGF0aFtyZXN1bHRfbGVuZ3RoXSA9IDA7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKICAgICBmcmVlKHRhcmdldF9wYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC0yODcyLDEzICszODAzLDE0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfX2lzZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgICAgUHlPYmplY3QgKnBvOwogICAgIERXT1JEIGF0dHJpYnV0ZXM7CiAKICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2lzZGlyIiwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKKyAgICAgICAgd2NoYXJfdCAqd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdwYXRoKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpCkBAIC0yODg5LDExICszODIxLDEwIEBACiAgICAgICAgYXJlIGFsc28gdmFsaWQuICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6X2lzZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieTpfaXNkaXIiLCAmcGF0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgpOwogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0yOTA3LDY5ICszODM4LDcyIEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfbWtkaXJfX2RvY19fLAotIm1rZGlyKHBhdGggWywgbW9kZT0wNzc3XSlcblxuXAotQ3JlYXRlIGEgZGlyZWN0b3J5LiIpOworIm1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBkaXJlY3RvcnkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG5cCitcblwKK1RoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X21rZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlID0gMDc3NzsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcmVzdWx0OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwKKyNpZmRlZiBIQVZFX01LRElSQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxpOm1rZGlyIiwgJnBvLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICByZXMgPSBDcmVhdGVEaXJlY3RvcnlXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIm1rZGlyIiwgUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgcmVzID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLCBOVUxMKTsKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgud2lkZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgubmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yKCJta2RpciIsIHBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jZWxzZQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZGlyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgIHJlcyA9IG1rZGlyKHBhdGgpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgibWtkaXIiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAjZWxzZQotICAgIHJlcyA9IG1rZGlyKHBhdGgsIG1vZGUpOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZiBIQVZFX01LRElSQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmICggZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChQWUNDX1ZBQ1BQKSApICYmICFkZWZpbmVkKF9fUU5YX18pCisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93KTsKKyNlbHNlCisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgubmFycm93LCBtb2RlKTsKICNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigibWtkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAjZW5kaWYKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAKQEAgLTMwMTUsNzkgKzM5NDksMjIwIEBACiB9CiAjZW5kaWYgLyogSEFWRV9OSUNFICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAotInJlbmFtZShvbGQsIG5ldylcblxuXAotUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuIik7CisKKyNpZmRlZiBIQVZFX0dFVFBSSU9SSVRZCitQeURvY19TVFJWQVIocG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19fLAorImdldHByaW9yaXR5KHdoaWNoLCB3aG8pIC0+IGN1cnJlbnRfcHJpb3JpdHlcblxuXAorR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9nZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpvMSwgKm8yOwotICAgIGNoYXIgKnAxLCAqcDI7Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpyZW5hbWUiLCAmbzEsICZvMikpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJm8xKSkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoIWNvbnZlcnRfdG9fdW5pY29kZSgmbzIpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvMSk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBNb3ZlRmlsZVcoUHlVbmljb2RlX0FzVW5pY29kZShvMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUobzIpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvMSk7Ci0gICAgUHlfREVDUkVGKG8yKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJyZW5hbWUiLCBOVUxMKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci1lcnJvcjoKLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3M6cmVuYW1lIiwgJnAxLCAmcDIpKQorICAgIGludCB3aGljaCwgd2hvLCByZXR2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJndoaWNoLCAmd2hvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IE1vdmVGaWxlQShwMSwgcDIpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigicmVuYW1lIiwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBnZXRwcmlvcml0eSh3aGljaCwgd2hvKTsKKyAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylyZXR2YWwpOworfQorI2VuZGlmIC8qIEhBVkVfR0VUUFJJT1JJVFkgKi8KKworCisjaWZkZWYgSEFWRV9TRVRQUklPUklUWQorUHlEb2NfU1RSVkFSKHBvc2l4X3NldHByaW9yaXR5X19kb2NfXywKKyJzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKSAtPiBOb25lXG5cblwKK1NldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHdoaWNoLCB3aG8sIHByaW8sIHJldHZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpIiwgJndoaWNoLCAmd2hvLCAmcHJpbykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pOworICAgIGlmIChyZXR2YWwgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfU0VUUFJJT1JJVFkgKi8KKworCitzdGF0aWMgUHlPYmplY3QgKgoraW50ZXJuYWxfcmVuYW1lKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLCBpbnQgaXNfcmVwbGFjZSkKK3sKKyAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIHBhdGhfdCBzcmM7CisgICAgcGF0aF90IGRzdDsKKyAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBmb3JtYXRbMjRdOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworCisjaWZkZWYgTVNfV0lORE9XUworICAgIEJPT0wgcmVzdWx0OworICAgIGludCBmbGFncyA9IGlzX3JlcGxhY2UgPyBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HIDogMDsKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4XzJzdHIoYXJncywgIk8mTyY6cmVuYW1lIiwgcmVuYW1lKTsKKyAgICBpbnQgcmVzdWx0OwogI2VuZGlmCisKKyAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOworICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgc3RyY3B5KGZvcm1hdCwgIk8mTyZ8JE8mTyY6Iik7CisgICAgc3RyY2F0KGZvcm1hdCwgZnVuY3Rpb25fbmFtZSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmb3JtYXQsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZGlyX2ZkX3NwZWNpZmllZCA9IChzcmNfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAoZHN0X2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCk7CisjaWZuZGVmIEhBVkVfUkVOQU1FQVQKKyAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkgeworICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihmdW5jdGlvbl9uYW1lLCAic3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIiwgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzcmMud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLndpZGUsIGRzdC53aWRlLCBmbGFncyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMubmFycm93LCBkc3QubmFycm93LCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdChmdW5jdGlvbl9uYW1lLCBkc3Qub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2Vsc2UKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9SRU5BTUVBVAorICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQorICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMubmFycm93LCBkc3RfZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgJmRzdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKK1B5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAorInJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKK1JlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoYXJncywga3dhcmdzLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3JlcGxhY2VfX2RvY19fLAorInJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMSk7Cit9CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9ybWRpcl9fZG9jX18sCi0icm1kaXIocGF0aClcblxuXAotUmVtb3ZlIGEgZGlyZWN0b3J5LiIpOworInJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBkaXJlY3RvcnkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ybWRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJybWRpciIsICJ5OnJtZGlyIiwgUmVtb3ZlRGlyZWN0b3J5QSwgIlU6cm1kaXIiLCBSZW1vdmVEaXJlY3RvcnlXKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpybWRpciIsIHJtZGlyKTsKKyAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAogI2VuZGlmCi19CisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotCi1QeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCi0ic3RhdChwYXRoKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1QZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3N0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoteworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOnN0YXQiLCBTVEFULCAiVTpzdGF0Iiwgd2luMzJfc3RhdF93KTsKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgubmFycm93KTsKKyAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLwogI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfZG9fc3RhdChzZWxmLCBhcmdzLCAiTyY6c3RhdCIsIFNUQVQsIE5VTEwsIE5VTEwpOworI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCBBVF9SRU1PVkVESVIpOworICAgIGVsc2UKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBybWRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJybWRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogCkBAIC0zMTc5LDE2MyArNDI1NCw0NjggQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF91bmxpbmtfX2RvY19fLAotInVubGluayhwYXRoKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZShwYXRoKSkuIik7CisidW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZV9fZG9jX18sCi0icmVtb3ZlKHBhdGgpXG5cblwKLVJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKHBhdGgpKS4iKTsKKyJyZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK1JlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdW5saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJyZW1vdmUiLCAieTpyZW1vdmUiLCBEZWxldGVGaWxlQSwKLSAgICAgICAgICAgICAgICAgICAgICAiVTpyZW1vdmUiLCBQeV9EZWxldGVGaWxlVyk7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnVubGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOnJlbW92ZSIsIHVubGluayk7CisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0RlbGV0ZUZpbGVXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyNlbHNlCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIDApOworICAgIGVsc2UKKyNlbmRpZiAvKiBIQVZFX1VOTElOS0FUICovCisgICAgICAgIHJlc3VsdCA9IHVubGluayhwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJ1bmxpbmsiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIAotI2lmZGVmIEhBVkVfVU5BTUUKIFB5RG9jX1NUUlZBUihwb3NpeF91bmFtZV9fZG9jX18sCi0idW5hbWUoKSAtPiAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpXG5cblwKLVJldHVybiBhIHR1cGxlIGlkZW50aWZ5aW5nIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisidW5hbWUoKSAtPiB1bmFtZV9yZXN1bHRcblxuXAorUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuXAorVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuXAorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpIik7CiAKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHVuYW1lX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InN5c25hbWUiLCAgICAib3BlcmF0aW5nIHN5c3RlbSBuYW1lIn0sCisgICAgeyJub2RlbmFtZSIsICAgIm5hbWUgb2YgbWFjaGluZSBvbiBuZXR3b3JrIChpbXBsZW1lbnRhdGlvbi1kZWZpbmVkKSJ9LAorICAgIHsicmVsZWFzZSIsICAgICJvcGVyYXRpbmcgc3lzdGVtIHJlbGVhc2UifSwKKyAgICB7InZlcnNpb24iLCAgICAib3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uIn0sCisgICAgeyJtYWNoaW5lIiwgICAgImhhcmR3YXJlIGlkZW50aWZpZXIifSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUih1bmFtZV9yZXN1bHRfX2RvY19fLAorInVuYW1lX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudW5hbWUoKS5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIGFuZCBtYWNoaW5lLlxuXAorXG5cCitTZWUgb3MudW5hbWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdW5hbWVfcmVzdWx0X2Rlc2MgPSB7CisgICAgInVuYW1lX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB1bmFtZV9yZXN1bHRfX2RvY19fLCAvKiBkb2MgKi8KKyAgICB1bmFtZV9yZXN1bHRfZmllbGRzLAorICAgIDUKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVW5hbWVSZXN1bHRUeXBlOworCisKKyNpZmRlZiBIQVZFX1VOQU1FCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfdW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CiAgICAgc3RydWN0IHV0c25hbWUgdTsKICAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSB1bmFtZSgmdSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzc3NzcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUuc3lzbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1Lm5vZGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUucmVsZWFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS5tYWNoaW5lKTsKKworICAgIHZhbHVlID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlVuYW1lUmVzdWx0VHlwZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisjZGVmaW5lIFNFVChpLCBmaWVsZCkgXAorICAgIHsgXAorICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGZpZWxkLCBzdHJsZW4oZmllbGQpLCBOVUxMKTsgXAorICAgIGlmICghbykgeyBcCisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHZhbHVlLCBpLCBvKTsgXAorICAgIH0gXAorCisgICAgU0VUKDAsIHUuc3lzbmFtZSk7CisgICAgU0VUKDEsIHUubm9kZW5hbWUpOworICAgIFNFVCgyLCB1LnJlbGVhc2UpOworICAgIFNFVCgzLCB1LnZlcnNpb24pOworICAgIFNFVCg0LCB1Lm1hY2hpbmUpOworCisjdW5kZWYgU0VUCisKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9VTkFNRSAqLwogCi1zdGF0aWMgaW50Ci1leHRyYWN0X3RpbWUoUHlPYmplY3QgKnQsIHRpbWVfdCogc2VjLCBsb25nKiB1c2VjKQotewotICAgIHRpbWVfdCBpbnR2YWw7Ci0gICAgaWYgKFB5RmxvYXRfQ2hlY2sodCkpIHsKLSAgICAgICAgZG91YmxlIHR2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHQpOwotICAgICAgICBQeU9iamVjdCAqaW50b2JqID0gUHlOdW1iZXJfTG9uZyh0KTsKLSAgICAgICAgaWYgKCFpbnRvYmopCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgICAgIGludHZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKGludG9iaik7Ci0jZWxzZQotICAgICAgICBpbnR2YWwgPSBQeUxvbmdfQXNMb25nKGludG9iaik7Ci0jZW5kaWYKLSAgICAgICAgUHlfREVDUkVGKGludG9iaik7Ci0gICAgICAgIGlmIChpbnR2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKnNlYyA9IGludHZhbDsKLSAgICAgICAgKnVzZWMgPSAobG9uZykoKHR2YWwgLSBpbnR2YWwpICogMWU2KTsgLyogY2FuJ3QgZXhjZWVkIDEwMDAwMDAgKi8KLSAgICAgICAgaWYgKCp1c2VjIDwgMCkKLSAgICAgICAgICAgIC8qIElmIHJvdW5kaW5nIGdhdmUgdXMgYSBuZWdhdGl2ZSBudW1iZXIsCi0gICAgICAgICAgICAgICB0cnVuY2F0ZS4gICovCi0gICAgICAgICAgICAqdXNlYyA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKLSAgICBpbnR2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh0KTsKLSNlbHNlCi0gICAgaW50dmFsID0gUHlMb25nX0FzTG9uZyh0KTsKLSNlbmRpZgotICAgIGlmIChpbnR2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICpzZWMgPSBpbnR2YWw7Ci0gICAgKnVzZWMgPSAwOwotICAgIHJldHVybiAwOwotfQogCiBQeURvY19TVFJWQVIocG9zaXhfdXRpbWVfX2RvY19fLAotInV0aW1lKHBhdGgsIChhdGltZSwgbXRpbWUpKVxuXAotdXRpbWUocGF0aCwgTm9uZSlcblxuXAotU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgdGhlIGZpbGUgdG8gdGhlIGdpdmVuIHZhbHVlcy4gIElmIHRoZVxuXAotc2Vjb25kIGZvcm0gaXMgdXNlZCwgc2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIHRvIHRoZSBjdXJyZW50IHRpbWUuIik7CisidXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKiwgbnM9Tm9uZSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXAorU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWUgb2YgcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorXG5cCitJZiB0aW1lcyBpcyBub3QgTm9uZSwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpO1xuXAorICAgIGF0aW1lIGFuZCBtdGltZSBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGZsb2F0IHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLlxuXAorSWYgbnMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTtcblwKKyAgICBhdGltZV9ucyBhbmQgbXRpbWVfbnMgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBpbnRlZ2VyIG5hbm9zZWNvbmRzXG5cCisgICAgc2luY2UgdGhlIGVwb2NoLlxuXAorSWYgYm90aCB0aW1lcyBhbmQgbnMgYXJlIE5vbmUsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS5cblwKK1NwZWNpZnlpbmcgdHVwbGVzIGZvciBib3RoIHRpbWVzIGFuZCBucyBpcyBhbiBlcnJvci5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aFxuXAorICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqYXJnOwotICAgIFB5VW5pY29kZU9iamVjdCAqb2J3cGF0aDsKLSAgICB3Y2hhcl90ICp3cGF0aCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm9hcGF0aDsKLSAgICBjaGFyICphcGF0aDsKLSAgICBIQU5ETEUgaEZpbGU7Ci0gICAgdGltZV90IGF0aW1lc2VjLCBtdGltZXNlYzsKLSAgICBsb25nIGF1c2VjLCBtdXNlYzsKLSAgICBGSUxFVElNRSBhdGltZSwgbXRpbWU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Cit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50ICAgIG5vdzsKKyAgICB0aW1lX3QgYXRpbWVfczsKKyAgICBsb25nICAgYXRpbWVfbnM7CisgICAgdGltZV90IG10aW1lX3M7CisgICAgbG9uZyAgIG10aW1lX25zOworfSB1dGltZV90OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPfDp1dGltZSIsICZvYndwYXRoLCAmYXJnKSkgewotICAgICAgICB3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9id3BhdGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcod3BhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInV0aW1lIiwgd3BhdGgpOwotICAgIH0gZWxzZQotICAgICAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgICAgICBQeUVycl9DbGVhcigpOworLyoKKyAqIHRoZXNlIG1hY3JvcyBhc3N1bWUgdGhhdCAidXRpbWUiIGlzIGEgcG9pbnRlciB0byBhIHV0aW1lX3QKKyAqIHRoZXkgYWxzbyBpbnRlbnRpb25hbGx5IGxlYWsgdGhlIGRlY2xhcmF0aW9uIG9mIGEgcG9pbnRlciBuYW1lZCAidGltZSIKKyAqLworI2RlZmluZSBVVElNRV9UT19USU1FU1BFQyBcCisgICAgc3RydWN0IHRpbWVzcGVjIHRzWzJdOyBcCisgICAgc3RydWN0IHRpbWVzcGVjICp0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0c1swXS50dl9zZWMgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0c1swXS50dl9uc2VjID0gdXRpbWUtPmF0aW1lX25zOyBcCisgICAgICAgIHRzWzFdLnR2X3NlYyA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHRzWzFdLnR2X25zZWMgPSB1dGltZS0+bXRpbWVfbnM7IFwKKyAgICAgICAgdGltZSA9IHRzOyBcCisgICAgfSBcCiAKLSAgICBpZiAoIXdwYXRoKSB7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOnV0aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9hcGF0aCwgJmFyZykpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9hcGF0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShhcGF0aCwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIGFwYXRoKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYXBhdGgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG9hcGF0aCk7CisjZGVmaW5lIFVUSU1FX1RPX1RJTUVWQUwgXAorICAgIHN0cnVjdCB0aW1ldmFsIHR2WzJdOyBcCisgICAgc3RydWN0IHRpbWV2YWwgKnRpbWU7IFwKKyAgICBpZiAodXRpbWUtPm5vdykgXAorICAgICAgICB0aW1lID0gTlVMTDsgXAorICAgIGVsc2UgeyBcCisgICAgICAgIHR2WzBdLnR2X3NlYyA9IHV0aW1lLT5hdGltZV9zOyBcCisgICAgICAgIHR2WzBdLnR2X3VzZWMgPSB1dGltZS0+YXRpbWVfbnMgLyAxMDAwOyBcCisgICAgICAgIHR2WzFdLnR2X3NlYyA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHR2WzFdLnR2X3VzZWMgPSB1dGltZS0+bXRpbWVfbnMgLyAxMDAwOyBcCisgICAgICAgIHRpbWUgPSB0djsgXAorICAgIH0gXAorCisjZGVmaW5lIFVUSU1FX1RPX1VUSU1CVUYgXAorICAgIHN0cnVjdCB1dGltYnVmIHVbMl07IFwKKyAgICBzdHJ1Y3QgdXRpbWJ1ZiAqdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdS5hY3RpbWUgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB1Lm1vZHRpbWUgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0aW1lID0gdTsgXAogICAgIH0KIAotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgeworI2RlZmluZSBVVElNRV9UT19USU1FX1QgXAorICAgIHRpbWVfdCB0aW1ldFsyXTsgXAorICAgIHN0cnVjdCB0aW1ldCB0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0aW1ldFswXSA9IHV0aW1lLT5hdGltZV9zOyBcCisgICAgICAgIHRpbWV0WzFdID0gdXRpbWUtPm10aW1lX3M7IFwKKyAgICAgICAgdGltZSA9ICZ0aW1ldDsgXAorICAgIH0gXAorCisKKyNkZWZpbmUgVVRJTUVfSEFWRV9ESVJfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpKQorCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKworc3RhdGljIGludAordXRpbWVfZGlyX2ZkKHV0aW1lX3QgKnV0aW1lLCBpbnQgZGlyX2ZkLCBjaGFyICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworI2lmZGVmIEhBVkVfVVRJTUVOU0FUCisgICAgaW50IGZsYWdzID0gZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgVVRJTUVfVE9fVElNRVNQRUM7CisgICAgcmV0dXJuIHV0aW1lbnNhdChkaXJfZmQsIHBhdGgsIHRpbWUsIGZsYWdzKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICAvKgorICAgICAqIGZvbGxvd19zeW1saW5rcyB3aWxsIG5ldmVyIGJlIGZhbHNlIGhlcmU7CisgICAgICogd2Ugb25seSBhbGxvdyAhZm9sbG93X3N5bWxpbmtzIGFuZCBkaXJfZmQgdG9nZXRoZXIKKyAgICAgKiBpZiB3ZSBoYXZlIHV0aW1lbnNhdCgpCisgICAgICovCisgICAgYXNzZXJ0KGZvbGxvd19zeW1saW5rcyk7CisgICAgcmV0dXJuIGZ1dGltZXNhdChkaXJfZmQsIHBhdGgsIHRpbWUpOworI2VuZGlmCit9CisKKyNlbmRpZgorCisjZGVmaW5lIFVUSU1FX0hBVkVfRkQgKGRlZmluZWQoSEFWRV9GVVRJTUVTKSB8fCBkZWZpbmVkKEhBVkVfRlVUSU1FTlMpKQorCisjaWYgVVRJTUVfSEFWRV9GRAorCitzdGF0aWMgaW50Cit1dGltZV9mZCh1dGltZV90ICp1dGltZSwgaW50IGZkKQoreworI2lmZGVmIEhBVkVfRlVUSU1FTlMKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gZnV0aW1lbnMoZmQsIHRpbWUpOworI2Vsc2UKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiBmdXRpbWVzKGZkLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworCisjZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAorICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQorCisjaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworCitzdGF0aWMgaW50Cit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dGltZSwgY2hhciAqcGF0aCkKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoREVGQVVMVF9ESVJfRkQsIHBhdGgsIHRpbWUsIEFUX1NZTUxJTktfTk9GT0xMT1cpOworI2Vsc2UKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiBsdXRpbWVzKHBhdGgsIHRpbWUpOworI2VuZGlmCit9CisKKyNlbmRpZgorCisjaWZuZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIGludAordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dGltZSwgY2hhciAqcGF0aCkKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoREVGQVVMVF9ESVJfRkQsIHBhdGgsIHRpbWUsIDApOworI2VsaWYgZGVmaW5lZChIQVZFX1VUSU1FUykKKyAgICBVVElNRV9UT19USU1FVkFMOworICAgIHJldHVybiB1dGltZXMocGF0aCwgdGltZSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfVVRJTUVfSCkKKyAgICBVVElNRV9UT19VVElNQlVGOworICAgIHJldHVybiB1dGltZShwYXRoLCB0aW1lKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRV9UOworICAgIHJldHVybiB1dGltZShwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworc3RhdGljIGludAorc3BsaXRfcHlfbG9uZ190b19zX2FuZF9ucyhQeU9iamVjdCAqcHlfbG9uZywgdGltZV90ICpzLCBsb25nICpucykKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBQeU9iamVjdCAqZGl2bW9kOworICAgIGRpdm1vZCA9IFB5TnVtYmVyX0Rpdm1vZChweV9sb25nLCBiaWxsaW9uKTsKKyAgICBpZiAoIWRpdm1vZCkKKyAgICAgICAgZ290byBleGl0OworICAgICpzID0gX1B5TG9uZ19Bc1RpbWVfdChQeVR1cGxlX0dFVF9JVEVNKGRpdm1vZCwgMCkpOworICAgIGlmICgoKnMgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAqbnMgPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oZGl2bW9kLCAxKSk7CisgICAgaWYgKCgqbnMgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHJlc3VsdCA9IDE7CitleGl0OgorICAgIFB5X1hERUNSRUYoZGl2bW9kKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ0aW1lcyIsICJucyIsICJkaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgdXRpbWVfdCB1dGltZTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaEZpbGU7CisgICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCisKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZiBVVElNRV9IQVZFX0ZECisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAiTyZ8TyRPTyZwOnV0aW1lIiwga2V5d29yZHMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAmdGltZXMsICZucywKKyNpZiBVVElNRV9IQVZFX0RJUl9GRAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHRpbWVzICYmICh0aW1lcyAhPSBQeV9Ob25lKSAmJiBucykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogeW91IG1heSBzcGVjaWZ5IGVpdGhlciAndGltZXMnIgorICAgICAgICAgICAgICAgICAgICAgIiBvciAnbnMnIGJ1dCBub3QgYm90aCIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKHRpbWVzICYmICh0aW1lcyAhPSBQeV9Ob25lKSkgeworICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdCh0aW1lcykgfHwgKFB5VHVwbGVfU2l6ZSh0aW1lcykgIT0gMikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInV0aW1lOiAndGltZXMnIG11c3QgYmUgZWl0aGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgYSB0dXBsZSBvZiB0d28gaW50cyBvciBOb25lIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdXRpbWUubm93ID0gMDsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUuYXRpbWVfcywgJnV0aW1lLmF0aW1lX25zKSA9PSAtMSB8fAorICAgICAgICAgICAgX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5tdGltZV9zLCAmdXRpbWUubXRpbWVfbnMpID09IC0xKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobnMpIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QobnMpIHx8IChQeVR1cGxlX1NpemUobnMpICE9IDIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogJ25zJyBtdXN0IGJlIGEgdHVwbGUgb2YgdHdvIGludHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICB1dGltZS5ub3cgPSAwOworICAgICAgICBpZiAoIXNwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlUdXBsZV9HRVRfSVRFTShucywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5hdGltZV9zLCAmdXRpbWUuYXRpbWVfbnMpIHx8CisgICAgICAgICAgICAhc3BsaXRfcHlfbG9uZ190b19zX2FuZF9ucyhQeVR1cGxlX0dFVF9JVEVNKG5zLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1dGltZS5tdGltZV9zLCAmdXRpbWUubXRpbWVfbnMpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHRpbWVzIGFuZCBucyBhcmUgYm90aCBOb25lL3Vuc3BlY2lmaWVkLiB1c2UgIm5vdyIuICovCisgICAgICAgIHV0aW1lLm5vdyA9IDE7CisgICAgfQorCisjaWYgIVVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgidXRpbWUiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworICAgIGlmIChwYXRoX2FuZF9kaXJfZmRfaW52YWxpZCgidXRpbWUiLCAmcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInV0aW1lIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInV0aW1lIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisjaWYgIWRlZmluZWQoSEFWRV9VVElNRU5TQVQpCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogY2Fubm90IHVzZSBkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyAiCisgICAgICAgICAgICAgICAgICAgICAidG9nZXRoZXIgb24gdGhpcyBwbGF0Zm9ybSIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgubmFycm93LCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJ1dGltZSIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGlmICh1dGltZS5ub3cpIHsKICAgICAgICAgU1lTVEVNVElNRSBub3c7CiAgICAgICAgIEdldFN5c3RlbVRpbWUoJm5vdyk7CiAgICAgICAgIGlmICghU3lzdGVtVGltZVRvRmlsZVRpbWUoJm5vdywgJm10aW1lKSB8fAogICAgICAgICAgICAgIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZhdGltZSkpIHsKICAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOwotICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZykgfHwgUHlUdXBsZV9TaXplKGFyZykgIT0gMikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInV0aW1lKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIChhdGltZSwgbXRpbWUpIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICZhdGltZXNlYywgJmF1c2VjKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRShhdGltZXNlYywgMTAwMCphdXNlYywgJmF0aW1lKTsKLSAgICAgICAgaWYgKGV4dHJhY3RfdGltZShQeVR1cGxlX0dFVF9JVEVNKGFyZywgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJm10aW1lc2VjLCAmbXVzZWMpID09IC0xKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKG10aW1lc2VjLCAxMDAwKm11c2VjLCAmbXRpbWUpOworICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLmF0aW1lX3MsIHV0aW1lLmF0aW1lX25zLCAmYXRpbWUpOworICAgICAgICB0aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOwogICAgIH0KICAgICBpZiAoIVNldEZpbGVUaW1lKGhGaWxlLCBOVUxMLCAmYXRpbWUsICZtdGltZSkpIHsKICAgICAgICAgLyogQXZvaWQgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGVycm9yIGhlcmUsCkBAIC0zMzQzLDkzICs0NzIzLDUyIEBACiAgICAgICAgICAgIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaWxlLCB3aGVuIGl0IGFsc28KICAgICAgICAgICAgY291bGQgYmUgdGhlIHRpbWUgc3RhbXAgdGhhdCBnaXZlcyBhIHByb2JsZW0uICovCiAgICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOwotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJlc3VsdCA9IFB5X05vbmU7Ci1kb25lOgotICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLyogTVNfV0lORE9XUyAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIHRpbWVfdCBhdGltZSwgbXRpbWU7Ci0gICAgbG9uZyBhdXNlYywgbXVzZWM7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCogYXJnOworI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgubmFycm93KTsKKyAgICBlbHNlCisjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9VVElNRVMpCi0gICAgc3RydWN0IHRpbWV2YWwgYnVmWzJdOwotI2RlZmluZSBBVElNRSBidWZbMF0udHZfc2VjCi0jZGVmaW5lIE1USU1FIGJ1ZlsxXS50dl9zZWMKLSNlbGlmIGRlZmluZWQoSEFWRV9VVElNRV9IKQotLyogWFhYIHNob3VsZCBkZWZpbmUgc3RydWN0IHV0aW1idWYgaW5zdGVhZCwgYWJvdmUgKi8KLSAgICBzdHJ1Y3QgdXRpbWJ1ZiBidWY7Ci0jZGVmaW5lIEFUSU1FIGJ1Zi5hY3RpbWUKLSNkZWZpbmUgTVRJTUUgYnVmLm1vZHRpbWUKLSNkZWZpbmUgVVRJTUVfQVJHICZidWYKLSNlbHNlIC8qIEhBVkVfVVRJTUVTICovCi0gICAgdGltZV90IGJ1ZlsyXTsKLSNkZWZpbmUgQVRJTUUgYnVmWzBdCi0jZGVmaW5lIE1USU1FIGJ1ZlsxXQotI2RlZmluZSBVVElNRV9BUkcgYnVmCi0jZW5kaWYgLyogSEFWRV9VVElNRVMgKi8KKyNpZiBVVElNRV9IQVZFX0RJUl9GRAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJlc3VsdCA9IHV0aW1lX2Rpcl9mZCgmdXRpbWUsIGRpcl9mZCwgcGF0aC5uYXJyb3csIGZvbGxvd19zeW1saW5rcyk7CisgICAgZWxzZQorI2VuZGlmCiAKKyNpZiBVVElNRV9IQVZFX0ZECisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IHV0aW1lX2ZkKCZ1dGltZSwgcGF0aC5mZCk7CisgICAgZWxzZQorI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzp1dGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICAvKiBvcHRpb25hbCB0aW1lIHZhbHVlcyBub3QgZ2l2ZW4gKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSB1dGltZShwYXRoLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSB1dGltZV9kZWZhdWx0KCZ1dGltZSwgcGF0aC5uYXJyb3cpOworCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIC8qIHNlZSBwcmV2aW91cyBjb21tZW50IGFib3V0IG5vdCBwdXR0aW5nIGZpbGVuYW1lIGluIGVycm9yIGhlcmUgKi8KKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpIHx8IFB5VHVwbGVfU2l6ZShhcmcpICE9IDIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZSgpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKSIpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICZhdGltZSwgJmF1c2VjKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZtdGltZSwgJm11c2VjKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIEFUSU1FID0gYXRpbWU7Ci0gICAgICAgIE1USU1FID0gbXRpbWU7Ci0jaWZkZWYgSEFWRV9VVElNRVMKLSAgICAgICAgYnVmWzBdLnR2X3VzZWMgPSBhdXNlYzsKLSAgICAgICAgYnVmWzFdLnR2X3VzZWMgPSBtdXNlYzsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSB1dGltZXMocGF0aCwgYnVmKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbHNlCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWUocGF0aCwgVVRJTUVfQVJHKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbmRpZiAvKiBIQVZFX1VUSU1FUyAqLwotICAgIH0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSN1bmRlZiBVVElNRV9BUkcKLSN1bmRlZiBBVElNRQotI3VuZGVmIE1USU1FCisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCi19CiAKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoaEZpbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CiAKIC8qIFByb2Nlc3Mgb3BlcmF0aW9ucyAqLwogCkBAIC0zNDc0LDc5ICs0ODEzLDcgQEAKIH0KICNlbmRpZgogCi0KLSNpZmRlZiBIQVZFX0VYRUNWCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAotImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKLSAgICBjaGFyICoqYXJndmxpc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmdjOwotICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwotCi0gICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKLSAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChhcmdjIDwgMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOwotICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkgewotICAgICAgICAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGkpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3YoKSBhcmcgMiBtdXN0IGNvbnRhaW4gb25seSBzdHJpbmdzIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgfQotICAgIH0KLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7Ci0KLSAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7Ci0KLSAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KLQotICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotfQotCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkIChIQVZFX0ZFWEVDVkUpCiBzdGF0aWMgY2hhcioqCiBwYXJzZV9lbnZsaXN0KFB5T2JqZWN0KiBlbnYsIFB5X3NzaXplX3QgKmVudmNfcHRyKQogewpAQCAtMzYyOCw4NyArNDg5NSwxNjIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIGNoYXIqKgorcGFyc2VfYXJnbGlzdChQeU9iamVjdCogYXJndiwgUHlfc3NpemVfdCAqYXJnYykKK3sKKyAgICBpbnQgaTsKKyAgICBjaGFyICoqYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCAqYXJnYysxKTsKKyAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8ICphcmdjOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBQeVNlcXVlbmNlX0lURU0oYXJndiwgaSk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChpdGVtLCAmYXJndmxpc3RbaV0pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIH0KKyAgICBhcmd2bGlzdFsqYXJnY10gPSBOVUxMOworICAgIHJldHVybiBhcmd2bGlzdDsKK2ZhaWw6CisgICAgKmFyZ2MgPSBpOworICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfRVhFQ1YKK1B5RG9jX1NUUlZBUihwb3NpeF9leGVjdl9fZG9jX18sCisiZXhlY3YocGF0aCwgYXJncylcblxuXAorRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCitcblwKKyAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAorICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncyIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZXhlY3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvcGF0aDsKKyAgICBjaGFyICpwYXRoOworICAgIFB5T2JqZWN0ICphcmd2OworICAgIGNoYXIgKiphcmd2bGlzdDsKKyAgICBQeV9zc2l6ZV90IGFyZ2M7CisKKyAgICAvKiBleGVjdiBoYXMgdHdvIGFyZ3VtZW50czogKHBhdGgsIGFyZ3YpLCB3aGVyZQorICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzpleGVjdiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBpZiAoIVB5TGlzdF9DaGVjayhhcmd2KSAmJiAhUHlUdXBsZV9DaGVjayhhcmd2KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFyZ2MgPSBQeVNlcXVlbmNlX1NpemUoYXJndik7CisgICAgaWYgKGFyZ2MgPCAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXhlY3YoKSBhcmcgMiBtdXN0IG5vdCBiZSBlbXB0eSIpOworICAgICAgICBQeV9ERUNSRUYob3BhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOworICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGV4ZWN2KHBhdGgsIGFyZ3ZsaXN0KTsKKworICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLworCisgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOworICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKIFB5RG9jX1NUUlZBUihwb3NpeF9leGVjdmVfX2RvY19fLAogImV4ZWN2ZShwYXRoLCBhcmdzLCBlbnYpXG5cblwKIEV4ZWN1dGUgYSBwYXRoIHdpdGggYXJndW1lbnRzIGFuZCBlbnZpcm9ubWVudCwgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKIFxuXAogICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCiAgICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MiKTsKKyAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3NcblwKK1xuXAorT24gc29tZSBwbGF0Zm9ybXMsIHlvdSBtYXkgc3BlY2lmeSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgcGF0aDtcblwKKyAgZXhlY3ZlIHdpbGwgZXhlY3V0ZSB0aGUgcHJvZ3JhbSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG9wZW4gdG8uXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBQeU9iamVjdCAqYXJndiwgKmVudjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgY2hhciAqKmFyZ3ZsaXN0ID0gTlVMTDsKICAgICBjaGFyICoqZW52bGlzdDsKLSAgICBQeV9zc2l6ZV90IGksIGFyZ2MsIGVudmM7Ci0gICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7Ci0gICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKKyAgICBQeV9zc2l6ZV90IGFyZ2MsIGVudmM7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnZpcm9ubWVudCIsIE5VTEx9OwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKICAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mT086ZXhlY3ZlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2LCAmZW52KSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GRVhFQ1ZFCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk9POmV4ZWN2ZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2LCAmZW52CisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeVR1cGxlX1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeVR1cGxlX0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgeworCisgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwotICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmU6IGFyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KKyAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOwogICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGVudikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmUoKSBhcmcgMyBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBlbnZpcm9ubWVudCBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKKyAgICBhcmd2bGlzdCA9IHBhcnNlX2FyZ2xpc3QoYXJndiwgJmFyZ2MpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZmFpbF8wOworICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgaWYgKCFmc2NvbnZlcnRfc3RyZHVwKCgqZ2V0aXRlbSkoYXJndiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndmxpc3RbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBsYXN0YXJnID0gaTsKLSAgICAgICAgICAgIGdvdG8gZmFpbF8xOwotICAgICAgICB9Ci0gICAgfQotICAgIGxhc3RhcmcgPSBhcmdjOwotICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKIAogICAgIGVudmxpc3QgPSBwYXJzZV9lbnZsaXN0KGVudiwgJmVudmMpOwogICAgIGlmIChlbnZsaXN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbF8xOworICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBleGVjdmUocGF0aCwgYXJndmxpc3QsIGVudmxpc3QpOworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIGZleGVjdmUocGF0aC5mZCwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBleGVjdmUocGF0aC5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCi0gICAgKHZvaWQpIHBvc2l4X2Vycm9yKCk7CisgICAgcGF0aF9wb3NpeF9lcnJvcigiZXhlY3ZlIiwgJnBhdGgpOwogCiAgICAgd2hpbGUgKC0tZW52YyA+PSAwKQogICAgICAgICBQeU1lbV9ERUwoZW52bGlzdFtlbnZjXSk7CiAgICAgUHlNZW1fREVMKGVudmxpc3QpOwotICBmYWlsXzE6Ci0gICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGxhc3RhcmcpOwotICBmYWlsXzA6Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgZmFpbDoKKyAgICBpZiAoYXJndmxpc3QpCisgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiBOVUxMOwogfQogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KQEAgLTQxNTMsNiArNTQ5NSw0MDUgQEAKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisKKyNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KVxuXG5cCitHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgKnBvbGljeSouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9saWN5LCBtYXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsICZwb2xpY3kpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYXggPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSk7CisgICAgaWYgKG1heCA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWF4KTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KVxuXG5cCitHZXQgdGhlIG1pbmltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgKnBvbGljeSouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcG9saWN5LCBtaW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsICZwb2xpY3kpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CisgICAgaWYgKG1pbiA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWluKTsKK30KKworI2VuZGlmIC8qIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCAqLworCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfZ2V0c2NoZWR1bGVyKHBpZClcblxuXAorR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBhIFBJRCBvZiAqcGlkKi5cblwKK1Bhc3NpbmcgYSBQSUQgb2YgMCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX2dldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwb2xpY3kgPSBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKKyAgICBpZiAocG9saWN5IDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhwb2xpY3kpOworfQorCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkKKworc3RhdGljIFB5T2JqZWN0ICoKK3NjaGVkX3BhcmFtX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXMsICpwcmlvcml0eTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwga3dsaXN0LCAmcHJpb3JpdHkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldyh0eXBlKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHByaW9yaXR5KTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgcHJpb3JpdHkpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUihzY2hlZF9wYXJhbV9fZG9jX18sCisic2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHkpOiBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLlxuXG5cCitDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgc2NoZWRfcGFyYW1fZmllbGRzW10gPSB7CisgICAgeyJzY2hlZF9wcmlvcml0eSIsICJ0aGUgc2NoZWR1bGluZyBwcmlvcml0eSJ9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzY2hlZF9wYXJhbV9kZXNjID0geworICAgICJzY2hlZF9wYXJhbSIsIC8qIG5hbWUgKi8KKyAgICBzY2hlZF9wYXJhbV9fZG9jX18sIC8qIGRvYyAqLworICAgIHNjaGVkX3BhcmFtX2ZpZWxkcywKKyAgICAxCit9OworCitzdGF0aWMgaW50Citjb252ZXJ0X3NjaGVkX3BhcmFtKFB5T2JqZWN0ICpwYXJhbSwgc3RydWN0IHNjaGVkX3BhcmFtICpyZXMpCit7CisgICAgbG9uZyBwcmlvcml0eTsKKworICAgIGlmIChQeV9UWVBFKHBhcmFtKSAhPSAmU2NoZWRQYXJhbVR5cGUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm11c3QgaGF2ZSBhIHNjaGVkX3BhcmFtIG9iamVjdCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcHJpb3JpdHkgPSBQeUxvbmdfQXNMb25nKFB5U3RydWN0U2VxdWVuY2VfR0VUX0lURU0ocGFyYW0sIDApKTsKKyAgICBpZiAocHJpb3JpdHkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHByaW9yaXR5ID4gSU5UX01BWCB8fCBwcmlvcml0eSA8IElOVF9NSU4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzY2hlZF9wcmlvcml0eSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJlcy0+c2NoZWRfcHJpb3JpdHkgPSBQeV9TQUZFX0RPV05DQVNUKHByaW9yaXR5LCBsb25nLCBpbnQpOworICAgIHJldHVybiAxOworfQorCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pXG5cblwKK1NldCB0aGUgc2NoZWR1bGluZyBwb2xpY3ksICpwb2xpY3kqLCBmb3IgKnBpZCouXG5cCitJZiAqcGlkKiBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG5cCisqcGFyYW0qIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IHBvbGljeTsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaU8mOnNjaGVkX3NldHNjaGVkdWxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZwb2xpY3ksICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qCisgICAgKiogc2NoZWRfc2V0c2NoZWR1bGVyKCkgcmV0dXJucyAwIGluIExpbnV4LCBidXQgdGhlIHByZXZpb3VzCisgICAgKiogc2NoZWR1bGluZyBwb2xpY3kgdW5kZXIgU29sYXJpcy9JbGx1bW9zLCBhbmQgb3RoZXJzLgorICAgICoqIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCBpbiBhbGwgT3BlcmF0aW5nIFN5c3RlbXMuCisgICAgKi8KKyAgICBpZiAoc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCAmcGFyYW0pID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX18sCisic2NoZWRfZ2V0cGFyYW0ocGlkKSAtPiBzY2hlZF9wYXJhbVxuXG5cCitSZXR1cm5zIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCAqcGlkKiBhcyBhbiBpbnN0YW5jZSBvZiB0aGVcblwKK3NjaGVkX3BhcmFtIGNsYXNzLiBBIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKyAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9nZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHByaW9yaXR5ID0gUHlMb25nX0Zyb21Mb25nKHBhcmFtLnNjaGVkX3ByaW9yaXR5KTsKKyAgICBpZiAoIXByaW9yaXR5KSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0cGFyYW1fX2RvY19fLAorInNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pXG5cblwKK1NldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIGEgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi5cblwKK0EgUElEIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3NldHBhcmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBwaWRfdCBwaWQ7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsICZwYXJhbSkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19fLAorInNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWQpIC0+IGZsb2F0XG5cblwKK1JldHVybiB0aGUgcm91bmQtcm9iaW4gcXVhbnR1bSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogaW4gc2Vjb25kcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCB0aW1lc3BlYyBpbnRlcnZhbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjKTsKK30KKworI2VuZGlmCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF95aWVsZF9fZG9jX18sCisic2NoZWRfeWllbGQoKVxuXG5cCitWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF95aWVsZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBpZiAoc2NoZWRfeWllbGQoKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisKKy8qIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFVzIGFsbG9jYXRlZCBpbiBhIGNwdV9zZXRfdCAqLworc3RhdGljIGNvbnN0IGludCBOQ1BVU19TVEFSVCA9IHNpemVvZih1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUOworCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX3NldGFmZmluaXR5KHBpZCwgY3B1X3NldClcblxuXAorU2V0IHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiB0byAqY3B1X3NldCouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9zZXRhZmZpbml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBuY3B1czsKKyAgICBzaXplX3Qgc2V0c2l6ZTsKKyAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYWJsZSwgKml0ZXJhdG9yID0gTlVMTCwgKml0ZW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZpdGVyYWJsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOworICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CisgICAgbWFzayA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgaWYgKG1hc2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBDUFVfWkVST19TKHNldHNpemUsIG1hc2spOworCisgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXRlcmF0b3IpKSkgeworICAgICAgICBsb25nIGNwdTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gaXRlcmF0b3Igb2YgaW50cywgIgorICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBpdGVyYXRvciB5aWVsZGVkICVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaXRlbSkpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBjcHUgPSBQeUxvbmdfQXNMb25nKGl0ZW0pOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIGlmIChjcHUgPCAwKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBDUFUgbnVtYmVyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChjcHUgPiBJTlRfTUFYIC0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJDUFUgbnVtYmVyIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3B1ID49IG5jcHVzKSB7CisgICAgICAgICAgICAvKiBHcm93IENQVSBtYXNrIHRvIGZpdCB0aGUgQ1BVIG51bWJlciAqLworICAgICAgICAgICAgaW50IG5ld25jcHVzID0gbmNwdXM7CisgICAgICAgICAgICBjcHVfc2V0X3QgKm5ld21hc2s7CisgICAgICAgICAgICBzaXplX3QgbmV3c2V0c2l6ZTsKKyAgICAgICAgICAgIHdoaWxlIChuZXduY3B1cyA8PSBjcHUpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3bmNwdXMgPiBJTlRfTUFYIC8gMikKKyAgICAgICAgICAgICAgICAgICAgbmV3bmNwdXMgPSBjcHUgKyAxOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3bmNwdXMgPSBuZXduY3B1cyAqIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdtYXNrID0gQ1BVX0FMTE9DKG5ld25jcHVzKTsKKyAgICAgICAgICAgIGlmIChuZXdtYXNrID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmV3bmNwdXMpOworICAgICAgICAgICAgQ1BVX1pFUk9fUyhuZXdzZXRzaXplLCBuZXdtYXNrKTsKKyAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBtYXNrLCBzZXRzaXplKTsKKyAgICAgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgICAgICAgICAgc2V0c2l6ZSA9IG5ld3NldHNpemU7CisgICAgICAgICAgICBtYXNrID0gbmV3bWFzazsKKyAgICAgICAgICAgIG5jcHVzID0gbmV3bmNwdXM7CisgICAgICAgIH0KKyAgICAgICAgQ1BVX1NFVF9TKGNwdSwgc2V0c2l6ZSwgbWFzayk7CisgICAgfQorICAgIFB5X0NMRUFSKGl0ZXJhdG9yKTsKKworICAgIGlmIChzY2hlZF9zZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIENQVV9GUkVFKG1hc2spOworICAgIFB5X1JFVFVSTl9OT05FOworCitlcnJvcjoKKyAgICBpZiAobWFzaykKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgUHlfWERFQ1JFRihpdGVyYXRvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfZ2V0YWZmaW5pdHkocGlkLCBuY3B1cykgLT4gY3B1X3NldFxuXG5cCitSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAorVGhlIHJldHVybmVkIGNwdV9zZXQgd2lsbCBiZSBvZiBzaXplICpuY3B1cyouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRhZmZpbml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBjcHUsIG5jcHVzLCBjb3VudDsKKyAgICBzaXplX3Qgc2V0c2l6ZTsKKyAgICBjcHVfc2V0X3QgKm1hc2sgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKKyAgICAgICAgbWFzayA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgICAgIGlmIChtYXNrID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgaWYgKHNjaGVkX2dldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgbWFzaykgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlZBTCkKKyAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICBpZiAobmNwdXMgPiBJTlRfTUFYIC8gMikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJjb3VsZCBub3QgYWxsb2NhdGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIGxhcmdlIGVub3VnaCBDUFUgc2V0Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuY3B1cyA9IG5jcHVzICogMjsKKyAgICB9CisKKyAgICByZXMgPSBQeVNldF9OZXcoTlVMTCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGZvciAoY3B1ID0gMCwgY291bnQgPSBDUFVfQ09VTlRfUyhzZXRzaXplLCBtYXNrKTsgY291bnQ7IGNwdSsrKSB7CisgICAgICAgIGlmIChDUFVfSVNTRVRfUyhjcHUsIHNldHNpemUsIG1hc2spKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY3B1X251bSA9IFB5TG9uZ19Gcm9tTG9uZyhjcHUpOworICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgIGlmIChjcHVfbnVtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVNldF9BZGQocmVzLCBjcHVfbnVtKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjcHVfbnVtKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGNwdV9udW0pOworICAgICAgICB9CisgICAgfQorICAgIENQVV9GUkVFKG1hc2spOworICAgIHJldHVybiByZXM7CisKK2Vycm9yOgorICAgIGlmIChtYXNrKQorICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBQeV9YREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZICovCisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KKwogLyogQUlYIHVzZXMgL2Rldi9wdGMgYnV0IGlzIG90aGVyd2lzZSB0aGUgc2FtZSBhcyAvZGV2L3B0bXggKi8KIC8qIElSSVggaGFzIGJvdGggL2Rldi9wdGMgYW5kIC9kZXYvcHRteCwgdXNlIHB0bXggKi8KICNpZiBkZWZpbmVkKEhBVkVfREVWX1BUQykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRNWCkKQEAgLTQyNzksNiArNjAyMCw3IEBACiB9CiAjZW5kaWYKIAorCiAjaWZkZWYgSEFWRV9HRVRFR0lECiBQeURvY19TVFJWQVIocG9zaXhfZ2V0ZWdpZF9fZG9jX18sCiAiZ2V0ZWdpZCgpIC0+IGVnaWRcblxuXApAQCAtNDMyOCw2ICs2MDcwLDcwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBpZCgpKTsKIH0KIAorI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCitQeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfXywKKyJnZXRncm91cGxpc3QodXNlciwgZ3JvdXApIC0+IGxpc3Qgb2YgZ3JvdXBzIHRvIHdoaWNoIGEgdXNlciBiZWxvbmdzXG5cblwKK1JldHVybnMgYSBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25ncy5cblxuXAorICAgIHVzZXI6IHVzZXJuYW1lIHRvIGxvb2t1cFxuXAorICAgIGdyb3VwOiBiYXNlIGdyb3VwIGlkIG9mIHRoZSB1c2VyIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9nZXRncm91cGxpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmZGVmIE5HUk9VUFNfTUFYCisjZGVmaW5lIE1BWF9HUk9VUFMgTkdST1VQU19NQVgKKyNlbHNlCisgICAgLyogZGVmaW5lZCB0byBiZSAxNiBvbiBTb2xhcmlzNywgc28gdGhpcyBzaG91bGQgYmUgYSBzbWFsbCBudW1iZXIgKi8KKyNkZWZpbmUgTUFYX0dST1VQUyA2NAorI2VuZGlmCisKKyAgICBjb25zdCBjaGFyICp1c2VyOworICAgIGludCBpLCBuZ3JvdXBzOworICAgIFB5T2JqZWN0ICpsaXN0OworI2lmZGVmIF9fQVBQTEVfXworICAgIGludCAqZ3JvdXBzLCBiYXNlZ2lkOworI2Vsc2UKKyAgICBnaWRfdCAqZ3JvdXBzLCBiYXNlZ2lkOworI2VuZGlmCisgICAgbmdyb3VwcyA9IE1BWF9HUk9VUFM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnVzZXIsICZiYXNlZ2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBncm91cHMgPSBQeU1lbV9NYWxsb2Mobmdyb3VwcyAqIHNpemVvZihpbnQpKTsKKyNlbHNlCisgICAgZ3JvdXBzID0gUHlNZW1fTWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKKyNlbmRpZgorICAgIGlmIChncm91cHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBpZiAoZ2V0Z3JvdXBsaXN0KHVzZXIsIGJhc2VnaWQsIGdyb3VwcywgJm5ncm91cHMpID09IC0xKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldyhuZ3JvdXBzKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmdyb3VwczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpZ3JvdXBzW2ldKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgbyk7CisgICAgfQorCisgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cHNfX2RvY19fLApAQCAtNDU2NSw3ICs2MzcxLDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCB1c2VyX25hbWVbVU5MRU4gKyAxXTsKLSAgICBEV09SRCBudW1fY2hhcnMgPSBzaXplb2YodXNlcl9uYW1lKS9zaXplb2YodXNlcl9uYW1lWzBdKTsKKyAgICBEV09SRCBudW1fY2hhcnMgPSBQeV9BUlJBWV9MRU5HVEgodXNlcl9uYW1lKTsKIAogICAgIGlmIChHZXRVc2VyTmFtZVcodXNlcl9uYW1lLCAmbnVtX2NoYXJzKSkgewogICAgICAgICAvKiBudW1fY2hhcnMgaXMgdGhlIG51bWJlciBvZiB1bmljb2RlIGNoYXJzIHBsdXMgbnVsbCB0ZXJtaW5hdG9yICovCkBAIC00OTY1LDYgKzY3NzEsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpzdHJ1Y3RfcnVzYWdlOworICAgIF9QeV9JREVOVElGSUVSKHN0cnVjdF9ydXNhZ2UpOwogCiAgICAgaWYgKHBpZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC00OTczLDcgKzY3ODAsNyBAQAogICAgICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInJlc291cmNlIik7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RydWN0X3J1c2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobSwgInN0cnVjdF9ydXNhZ2UiKTsKKyAgICAgICAgc3RydWN0X3J1c2FnZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobSwgJlB5SWRfc3RydWN0X3J1c2FnZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgaWYgKHN0cnVjdF9ydXNhZ2UgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTA2OSw2ICs2ODc2LDU1IEBACiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRpZF9fZG9jX18sCisid2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpIC0+IHdhaXRpZF9yZXN1bHRcblxuXAorV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLlxuXG5cCitpZHR5cGUgY2FuIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG5cCitpZCBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLlxuXAorb3B0aW9ucyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRFxuXAorb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuXAorUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmVcblwKK25vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93YWl0aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaWR0eXBlX3QgaWR0eXBlOworICAgIGlkX3QgaWQ7CisgICAgaW50IG9wdGlvbnMsIHJlczsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgc2kuc2lfcGlkID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgaWYgKHNpLnNpX3BpZCA9PSAwKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIHJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZXYWl0aWRSZXN1bHRUeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21QaWQoc2kuc2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIFB5TG9uZ19Gcm9tUGlkKHNpLnNpX3VpZCkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAyLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLnNpX3NpZ25vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAzLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLnNpX3N0YXR1cykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9jb2RlKSkpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX1dBSVRQSUQKIFB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKICJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzKVxuXG5cCkBAIC01MTQyLDEwNiArNjk5OCwyMjYgQEAKICNlbmRpZgogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9sc3RhdF9fZG9jX18sCi0ibHN0YXQocGF0aCkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KHBhdGgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSNpZmRlZiBIQVZFX0xTVEFUCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0IiwgbHN0YXQsIE5VTEwsIE5VTEwpOwotI2Vsc2UgLyogIUhBVkVfTFNUQVQgKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0Iiwgd2luMzJfbHN0YXQsICJVOmxzdGF0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB3aW4zMl9sc3RhdF93KTsKLSNlbHNlCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOmxzdGF0IiwgU1RBVCwgTlVMTCwgTlVMTCk7CisjaWYgZGVmaW5lZChIQVZFX1JFQURMSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCitQeURvY19TVFJWQVIocmVhZGxpbmtfX2RvY19fLAorInJlYWRsaW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKSAtPiBwYXRoXG5cblwKK1JldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfTFNUQVQgKi8KLX0KLQogCiAjaWZkZWYgSEFWRV9SRUFETElOSwotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWRsaW5rX19kb2NfXywKLSJyZWFkbGluayhwYXRoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0KiB2OwotICAgIGNoYXIgYnVmW01BWFBBVEhMRU5dOwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGludCBuOwotICAgIGludCBhcmdfaXNfdW5pY29kZSA9IDA7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU5dOworICAgIHNzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpyZWFkbGluayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIHYgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYXJncywgMCk7Ci0gICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIGFyZ19pc191bmljb2RlID0gMTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHYpOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG4gPSByZWFkbGluayhwYXRoLCBidWYsIChpbnQpIHNpemVvZiBidWYpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAoYXJnX2lzX3VuaWNvZGUpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWYsIG4pOworI2lmZGVmIEhBVkVfUkVBRExJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIGxlbmd0aCA9IHJlYWRsaW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIG4pOworI2VuZGlmCisgICAgICAgIGxlbmd0aCA9IHJlYWRsaW5rKHBhdGgubmFycm93LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9wb3NpeF9lcnJvcigicmVhZGxpbmsiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgub2JqZWN0KSkKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsIGxlbmd0aCk7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KKworCiAjZW5kaWYgLyogSEFWRV9SRUFETElOSyAqLwogCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBIQVZFX1NZTUxJTksKIFB5RG9jX1NUUlZBUihwb3NpeF9zeW1saW5rX19kb2NfXywKLSJzeW1saW5rKHNyYywgZHN0KVxuXG5cCi1DcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuIik7Cisic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK0NyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblxuXAordGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcblwKKyAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuXAorICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKVxuXAorICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCisvKiBHcmFiIENyZWF0ZVN5bWJvbGljTGlua1cgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykoTFBXU1RSLCBMUFdTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKShMUFNUUiwgTFBTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgaW50CitjaGVja19DcmVhdGVTeW1ib2xpY0xpbmsoKQoreworICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgLyogb25seSByZWNoZWNrICovCisgICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CisgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKKyAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOworICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKK30KKworI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIHJldHVybiBwb3NpeF8yc3RyKGFyZ3MsICJPJk8mOnN5bWxpbmsiLCBzeW1saW5rKTsKKyAgICBwYXRoX3Qgc3JjOworICAgIHBhdGhfdCBkc3Q7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRFdPUkQgcmVzdWx0OworI2Vsc2UKKyAgICBpbnQgcmVzdWx0OworI2VuZGlmCisKKyAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOworICAgIHNyYy5hcmd1bWVudF9uYW1lID0gInNyYyI7CisgICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKKyAgICBkc3QuYXJndW1lbnRfbmFtZSA9ICJkc3QiOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rIGZ1bmN0aW9ucyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIGlmICghd2luMzJfY2FuX3N5bWxpbmspIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzeW1ib2xpYyBsaW5rIHByaXZpbGVnZSBub3QgaGVsZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisjZW5kaWYKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8aSRPJjpzeW1saW5rIiwKKyAgICAgICAgICAgIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKKyAgICAgICAgICAgICZ0YXJnZXRfaXNfZGlyZWN0b3J5LAorI2lmZGVmIEhBVkVfU1lNTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CisgICAgICAgIHJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChkc3Qud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3Qud2lkZSwgc3JjLndpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKGRzdC5uYXJyb3csIHNyYy5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgic3ltbGluayIsIHNyYy5vYmplY3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmIEhBVkVfU1lNTElOS0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gc3ltbGlua2F0KHNyYy5uYXJyb3csIGRpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHN5bWxpbmsoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigic3ltbGluayIsICZkc3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBnb3RvIGV4aXQ7IC8qIHNpbGVuY2UgInVudXNlZCBsYWJlbCIgd2FybmluZyAqLworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CisKICNlbmRpZiAvKiBIQVZFX1NZTUxJTksgKi8KIAorCiAjaWYgIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogCi1QeURvY19TVFJWQVIod2luX3JlYWRsaW5rX19kb2NfXywKLSJyZWFkbGluayhwYXRoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiIpOwotCi0vKiBXaW5kb3dzIHJlYWRsaW5rIGltcGxlbWVudGF0aW9uICovCiBzdGF0aWMgUHlPYmplY3QgKgotd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgd2NoYXJfdCAqcGF0aDsKICAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwogICAgIERXT1JEIGlvX3Jlc3VsdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKKyAgICAgICAgaW50IGRpcl9mZDsKICAgICBIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGU7CiAKICAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOwogICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKICAgICB3Y2hhcl90ICpwcmludF9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAidTpyZWFkbGluayIsCi0gICAgICAgICAgICAgICAgICAmcGF0aCkpCisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEZpcnN0IGdldCBhIGhhbmRsZSB0byB0aGUgcmVwYXJzZSBwb2ludCAqLwpAQCAtNTI1Nyw5ICs3MjMzLDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlcGFyc2VfcG9pbnRfaGFuZGxlPT1JTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJyZWFkbGluayIsIHBhdGgpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgLyogTmV3IGNhbGwgRGV2aWNlSW9Db250cm9sIHRvIHJlYWQgdGhlIHJlcGFyc2UgcG9pbnQgKi8KQEAgLTUyNzUsOSArNzI0OSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChpb19yZXN1bHQ9PTApCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgicmVhZGxpbmsiLCBwYXRoKTsKLSAgICB9CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOwogCiAgICAgaWYgKHJkYi0+UmVwYXJzZVRhZyAhPSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKQogICAgIHsKQEAgLTUyOTUsODAgKzcyNjcsNzYgQEAKIAogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKLS8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgaW50IGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXID0gMDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCk7Ci1zdGF0aWMgaW50Ci1jaGVja19DcmVhdGVTeW1ib2xpY0xpbmtXKCkKLXsKLSAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOwotICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmIChoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVykKLSAgICAgICAgcmV0dXJuIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXOwotICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rVyIpOwotICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKQotICAgICAgICBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IDE7Ci0gICAgcmV0dXJuIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXOwotfQorc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGltZXNfcmVzdWx0X2ZpZWxkc1tdID0geworICAgIHsidXNlciIsICAgICJ1c2VyIHRpbWUifSwKKyAgICB7InN5c3RlbSIsICAgInN5c3RlbSB0aW1lIn0sCisgICAgeyJjaGlsZHJlbl91c2VyIiwgICAgInVzZXIgdGltZSBvZiBjaGlsZHJlbiJ9LAorICAgIHsiY2hpbGRyZW5fc3lzdGVtIiwgICAgInN5c3RlbSB0aW1lIG9mIGNoaWxkcmVuIn0sCisgICAgeyJlbGFwc2VkIiwgICAgImVsYXBzZWQgdGltZSBzaW5jZSBhbiBhcmJpdHJhcnkgcG9pbnQgaW4gdGhlIHBhc3QifSwKKyAgICB7TlVMTH0KK307CiAKLVB5RG9jX1NUUlZBUih3aW5fc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSlcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LlxuXAotdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlIGludGVycHJldGVkIGFzXG5cCi1hIGRpcmVjdG9yeS5cblwKLVRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhXG5cCi1Ob3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4iKTsKK1B5RG9jX1NUUlZBUih0aW1lc19yZXN1bHRfX2RvY19fLAorInRpbWVzX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudGltZXMoKS5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgICh1c2VyLCBzeXN0ZW0sIGNoaWxkcmVuX3VzZXIsIGNoaWxkcmVuX3N5c3RlbSwgZWxhcHNlZCksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgdXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sXG5cCithbmQgZWxhcHNlZC5cblwKK1xuXAorU2VlIG9zLnRpbWVzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luX3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic3JjIiwgImRlc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpzcmMsICpkZXN0OwotICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKLSAgICBEV09SRCByZXM7CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHRpbWVzX3Jlc3VsdF9kZXNjID0geworICAgICJ0aW1lc19yZXN1bHQiLCAvKiBuYW1lICovCisgICAgdGltZXNfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgdGltZXNfcmVzdWx0X2ZpZWxkcywKKyAgICA1Cit9OwogCi0gICAgaWYgKCFjaGVja19DcmVhdGVTeW1ib2xpY0xpbmtXKCkpCi0gICAgewotICAgICAgICAvKiByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yICovCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIG5vdCBmb3VuZCIpOwotICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xpOnN5bWxpbmsiLAotICAgICAgICBrd2xpc3QsICZzcmMsICZkZXN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5VHlwZU9iamVjdCBUaW1lc1Jlc3VsdFR5cGU7CiAKLSAgICBpZiAod2luMzJfY2FuX3N5bWxpbmsgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKLQotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZzcmMpKSB7IHJldHVybiBOVUxMOyB9Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJmRlc3QpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzcmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVygKLSAgICAgICAgUHlVbmljb2RlX0FzVW5pY29kZShkZXN0KSwKLSAgICAgICAgUHlVbmljb2RlX0FzVW5pY29kZShzcmMpLAotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihzcmMpOwotICAgIFB5X0RFQ1JFRihkZXN0KTsKLSAgICBpZiAoIXJlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJzeW1saW5rIiwgUHlVbmljb2RlX0FzVW5pY29kZShzcmMpKTsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKyNpZmRlZiBNU19XSU5ET1dTCisjZGVmaW5lIEhBVkVfVElNRVMgIC8qIG1hbmRhdG9yeSwgZm9yIHRoZSBtZXRob2QgdGFibGUgKi8KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9USU1FUworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfdGltZXNfcmVzdWx0KGRvdWJsZSB1c2VyLCBkb3VibGUgc3lzdGVtLAorICAgIGRvdWJsZSBjaGlsZHJlbl91c2VyLCBkb3VibGUgY2hpbGRyZW5fc3lzdGVtLAorICAgIGRvdWJsZSBlbGFwc2VkKQoreworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUaW1lc1Jlc3VsdFR5cGUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBTRVQoaSwgZmllbGQpIFwKKyAgICB7IFwKKyAgICBQeU9iamVjdCAqbyA9IFB5RmxvYXRfRnJvbURvdWJsZShmaWVsZCk7IFwKKyAgICBpZiAoIW8pIHsgXAorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2YWx1ZSwgaSwgbyk7IFwKKyAgICB9IFwKKworICAgIFNFVCgwLCB1c2VyKTsKKyAgICBTRVQoMSwgc3lzdGVtKTsKKyAgICBTRVQoMiwgY2hpbGRyZW5fdXNlcik7CisgICAgU0VUKDMsIGNoaWxkcmVuX3N5c3RlbSk7CisgICAgU0VUKDQsIGVsYXBzZWQpOworCisjdW5kZWYgU0VUCisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCisidGltZXMoKSAtPiB0aW1lc19yZXN1bHRcblxuXAorUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzXG5cCit0aW1lcy4gIFRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG5cCisgICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpIik7CisKICNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApICYmIGRlZmluZWQoUFlPU19PUzIpCiBzdGF0aWMgbG9uZwogc3lzdGVtX3VwdGltZSh2b2lkKQpAQCAtNTM4NiwzOCArNzM1NCwxNCBAQAogcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CiAgICAgLyogQ3VycmVudGx5IE9ubHkgVXB0aW1lIGlzIFByb3ZpZGVkIC0tIE90aGVycyBMYXRlciAqLwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJkZGRkZCIsCisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfdXRpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfc3RpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfY3V0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX2NzdGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpc3lzdGVtX3VwdGltZSgpIC8gMTAwMCk7CiB9Ci0jZWxzZSAvKiBub3QgT1MyICovCi0jZGVmaW5lIE5FRURfVElDS1NfUEVSX1NFQ09ORAotc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOwotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHN0cnVjdCB0bXMgdDsKLSAgICBjbG9ja190IGM7Ci0gICAgZXJybm8gPSAwOwotICAgIGMgPSB0aW1lcygmdCk7Ci0gICAgaWYgKGMgPT0gKGNsb2NrX3QpIC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGRkZGQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2NzdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljIC8gdGlja3NfcGVyX3NlY29uZCk7Ci19Ci0jZW5kaWYgLyogbm90IE9TMiAqLwotI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KLQotCi0jaWZkZWYgTVNfV0lORE9XUwotI2RlZmluZSBIQVZFX1RJTUVTICAgICAgLyogc28gdGhlIG1ldGhvZCB0YWJsZSB3aWxsIHBpY2sgaXQgdXAgKi8KKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKQEAgLTU0MzAsOCArNzM3NCw3IEBACiAgICAgICAgMWU3IGlzIG9uZSBzZWNvbmQgaW4gc3VjaCB1bml0czsgMWUtNyB0aGUgaW52ZXJzZS4KICAgICAgICA0MjkuNDk2NzI5NiBpcyAyKiozMiAvIDFlNyBvciAyKiozMiAqIDFlLTcuCiAgICAgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgImRkZGRkIiwKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAogICAgICAgICAoZG91YmxlKSh1c2VyLmR3SGlnaERhdGVUaW1lKjQyOS40OTY3Mjk2ICsKICAgICAgICAgICAgICAgICAgdXNlci5kd0xvd0RhdGVUaW1lKjFlLTcpLAogICAgICAgICAoZG91YmxlKShrZXJuZWwuZHdIaWdoRGF0ZVRpbWUqNDI5LjQ5NjcyOTYgKwpAQCAtNTQ0MCwxNCArNzM4MywyOSBAQAogICAgICAgICAoZG91YmxlKTAsCiAgICAgICAgIChkb3VibGUpMCk7CiB9Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi0jaWZkZWYgSEFWRV9USU1FUwotUHlEb2NfU1RSVkFSKHBvc2l4X3RpbWVzX19kb2NfXywKLSJ0aW1lcygpIC0+ICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpXG5cblwKLVJldHVybiBhIHR1cGxlIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzIHRpbWVzLiIpOworI2Vsc2UgLyogTmVpdGhlciBXaW5kb3dzIG5vciBPUy8yICovCisjZGVmaW5lIE5FRURfVElDS1NfUEVSX1NFQ09ORAorc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIHN0cnVjdCB0bXMgdDsKKyAgICBjbG9ja190IGM7CisgICAgZXJybm8gPSAwOworICAgIGMgPSB0aW1lcygmdCk7CisgICAgaWYgKGMgPT0gKGNsb2NrX3QpIC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2NzdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljIC8gdGlja3NfcGVyX3NlY29uZCk7Cit9CiAjZW5kaWYKIAorI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRTSUQKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRzaWRfX2RvY19fLApAQCAtNTU0Niw0OSArNzUwNCw2OCBAQAogLyogRnVuY3Rpb25zIGFjdGluZyBvbiBmaWxlIGRlc2NyaXB0b3JzICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9vcGVuX19kb2NfXywKLSJvcGVuKGZpbGVuYW1lLCBmbGFnIFssIG1vZGU9MDc3N10pIC0+IGZkXG5cblwKLU9wZW4gYSBmaWxlIChmb3IgbG93IGxldmVsIElPKS4iKTsKKyJvcGVuKHBhdGgsIGZsYWdzLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorT3BlbiBhIGZpbGUgZm9yIGxvdyBsZXZlbCBJTy4gIFJldHVybnMgYSBmaWxlIGhhbmRsZSAoaW50ZWdlcikuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X29wZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvZmlsZTsKLSAgICBjaGFyICpmaWxlOwotICAgIGludCBmbGFnOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBmbGFnczsKICAgICBpbnQgbW9kZSA9IDA3Nzc7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVpfGk6b3BlbiIsICZwbywgJmZsYWcsICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkCi0gICAgICAgICAgIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGZkID0gX3dvcGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSwgZmxhZywgbW9kZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChmZCA8IDApCi0gICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJmZsYWdzLCAmbW9kZSwKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8aTpvcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFnLCAmbW9kZSkpCisgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZmQgPSBvcGVuKGZpbGUsIGZsYWcsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9maWxlKTsKLSAgICBQeV9ERUNSRUYob2ZpbGUpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotfQogCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBmZCA9IF93b3BlbihwYXRoLndpZGUsIGZsYWdzLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIGZkID0gb3BlbmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgZmQgPSBvcGVuKHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChmZCA9PSAtMSkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgLyogZm9yY2UgdXNlIG9mIHBvc2l4X2Vycm9yIGhlcmUgZm9yIGV4YWN0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCisgICAgICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigib3BlbiIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiBQeURvY19TVFJWQVIocG9zaXhfY2xvc2VfX2RvY19fLAogImNsb3NlKGZkKVxuXG5cCkBAIC01NjQzLDkgKzc2MjAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBmZCA9IGR1cChmZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKQEAgLTU2NjQsMTUgKzc2MzksNDIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmRfZHVwMihmZCwgZmQyKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IGR1cDIoZmQsIGZkMik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisjaWZkZWYgSEFWRV9MT0NLRgorUHlEb2NfU1RSVkFSKHBvc2l4X2xvY2tmX19kb2NfXywKKyJsb2NrZihmZCwgY21kLCBsZW4pXG5cblwKK0FwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cblwKK2ZkIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorY21kIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgLSBvbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yXG5cCitGX1RFU1QuXG5cCitsZW4gc3BlY2lmaWVzIHRoZSBzZWN0aW9uIG9mIHRoZSBmaWxlIHRvIGxvY2suIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sb2NrZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbWQsIHJlczsKKyAgICBvZmZfdCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKKyAgICAgICAgICAgICZmZCwgJmNtZCwgX3BhcnNlX29mZl90LCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gbG9ja2YoZmQsIGNtZCwgbGVuKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogCiBQeURvY19TVFJWQVIocG9zaXhfbHNlZWtfX2RvY19fLAogImxzZWVrKGZkLCBwb3MsIGhvdykgLT4gbmV3cG9zXG5cblwKQEAgLTU3MDMsOCArNzcwNSw3IEBACiAjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKICAgICBwb3MgPSBQeUxvbmdfQXNMb25nKHBvc29iaik7CiAjZWxzZQotICAgIHBvcyA9IFB5TG9uZ19DaGVjayhwb3NvYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKSA6IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKKyAgICBwb3MgPSBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopOwogI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTc2NCw2ICs3NzY1LDE0MCBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKKyNpZiAoZGVmaW5lZChIQVZFX1NFTkRGSUxFKSAmJiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICAgfHwgZGVmaW5lZChfX0FQUExFX18pKSkgfHwgZGVmaW5lZChIQVZFX1JFQURWKSB8fCBkZWZpbmVkKEhBVkVfV1JJVEVWKQorc3RhdGljIFB5X3NzaXplX3QKK2lvdl9zZXR1cChzdHJ1Y3QgaW92ZWMgKippb3YsIFB5X2J1ZmZlciAqKmJ1ZiwgUHlPYmplY3QgKnNlcSwgaW50IGNudCwgaW50IHR5cGUpCit7CisgICAgaW50IGksIGo7CisgICAgUHlfc3NpemVfdCBibGVuLCB0b3RhbCA9IDA7CisKKyAgICAqaW92ID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgY250KTsKKyAgICBpZiAoKmlvdiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiB0b3RhbDsKKyAgICB9CisKKyAgICAqYnVmID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgY250KTsKKyAgICBpZiAoKmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbCgqaW92KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIHRvdGFsOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShzZXEsIGkpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGl0ZW0sICYoKmJ1ZilbaV0sIHR5cGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAoKmlvdilbaV0uaW92X2Jhc2UgPSAoKmJ1ZilbaV0uYnVmOworICAgICAgICBibGVuID0gKCpidWYpW2ldLmxlbjsKKyAgICAgICAgKCppb3YpW2ldLmlvdl9sZW4gPSBibGVuOworICAgICAgICB0b3RhbCArPSBibGVuOworICAgIH0KKyAgICByZXR1cm4gdG90YWw7CisKK2ZhaWw6CisgICAgUHlNZW1fRGVsKCppb3YpOworICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmKCpidWYpW2pdKTsKKyAgICB9CisgICAgUHlNZW1fRGVsKCpidWYpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW92X2NsZWFudXAoc3RydWN0IGlvdmVjICppb3YsIFB5X2J1ZmZlciAqYnVmLCBpbnQgY250KQoreworICAgIGludCBpOworICAgIFB5TWVtX0RlbChpb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZbaV0pOworICAgIH0KKyAgICBQeU1lbV9EZWwoYnVmKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFEVgorUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWR2X19kb2NfXywKKyJyZWFkdihmZCwgYnVmZmVycykgLT4gYnl0ZXNyZWFkXG5cblwKK1JlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuIGJ1ZmZlcnNcblwKK2lzIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiB3cml0YWJsZSBidWZmZXJzLlxuXAorUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZWFkdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbnQ7CisgICAgUHlfc3NpemVfdCBuOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgc3RydWN0IGlvdmVjICppb3Y7CisgICAgUHlfYnVmZmVyICpidWY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwgJmZkLCAmc2VxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJyZWFkdigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CisKKyAgICBpZiAoIWlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfV1JJVEFCTEUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QUkVBRAorUHlEb2NfU1RSVkFSKHBvc2l4X3ByZWFkX19kb2NfXywKKyJwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KSAtPiBzdHJpbmdcblxuXAorUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgYXQgYSBwb3NpdGlvbiBvZiBvZmZzZXQuIEl0IHdpbGwgcmVhZCB1cFxuXAordG8gYnVmZmVyc2l6ZSBudW1iZXIgb2YgYnl0ZXMuIFRoZSBmaWxlIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3ByZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIHNpemU7CisgICAgb2ZmX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsICZmZCwgJnNpemUsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHNpemUpOworICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG4gPSBwcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgc2l6ZSwgb2Zmc2V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGlmIChuICE9IHNpemUpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorI2VuZGlmCiAKIFB5RG9jX1NUUlZBUihwb3NpeF93cml0ZV9fZG9jX18sCiAid3JpdGUoZmQsIHN0cmluZykgLT4gYnl0ZXN3cml0dGVuXG5cblwKQEAgLTU3OTgsMTAgKzc5MzMsMTQ5IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAorI2lmZGVmIEhBVkVfU0VOREZJTEUKK1B5RG9jX1NUUlZBUihwb3NpeF9zZW5kZmlsZV9fZG9jX18sCisic2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMpIC0+IGJ5dGVzd3JpdHRlblxuXAorc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9Tm9uZSwgdHJhaWxlcnM9Tm9uZSwgZmxhZ3M9MClcblwKKyAgICAgICAgICAgIC0+IGJ5dGVzd3JpdHRlblxuXAorQ29weSBuYnl0ZXMgYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgaW4gdG8gZmlsZSBkZXNjcmlwdG9yIG91dC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NlbmRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK3sKKyAgICBpbnQgaW4sIG91dDsKKyAgICBQeV9zc2l6ZV90IHJldDsKKyAgICBvZmZfdCBvZmZzZXQ7CisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmbmRlZiBfX0FQUExFX18KKyAgICBQeV9zc2l6ZV90IGxlbjsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpoZWFkZXJzID0gTlVMTCwgKnRyYWlsZXJzID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmhidWYsICp0YnVmOworICAgIG9mZl90IHNieXRlczsKKyAgICBzdHJ1Y3Qgc2ZfaGR0ciBzZjsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHNmLmhlYWRlcnMgPSBOVUxMOworICAgIHNmLnRyYWlsZXJzID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsib3V0IiwgImluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsICJjb3VudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIiwgInRyYWlsZXJzIiwgImZsYWdzIiwgTlVMTH07CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKKyAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCisjZWxzZQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpTyZufE9PaTpzZW5kZmlsZSIsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgJmxlbiwKKyNlbmRpZgorICAgICAgICAgICAgICAgICZoZWFkZXJzLCAmdHJhaWxlcnMsICZmbGFncykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaGVhZGVycyAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoZWFkZXJzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAic2VuZGZpbGUoKSBoZWFkZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvciBOb25lIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7IC8qIEF2b2lkIHVuaW5pdGlhbGl6ZWQgd2FybmluZyAqLworICAgICAgICAgICAgc2YuaGRyX2NudCA9IFB5U2VxdWVuY2VfU2l6ZShoZWFkZXJzKTsKKyAgICAgICAgICAgIGlmIChzZi5oZHJfY250ID4gMCAmJgorICAgICAgICAgICAgICAgICEoaSA9IGlvdl9zZXR1cCgmKHNmLmhlYWRlcnMpLCAmaGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycywgc2YuaGRyX2NudCwgUHlCVUZfU0lNUExFKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgICAgICBzYnl0ZXMgKz0gaTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorICAgIGlmICh0cmFpbGVycyAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayh0cmFpbGVycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInNlbmRmaWxlKCkgdHJhaWxlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9yIE5vbmUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsgLyogQXZvaWQgdW5pbml0aWFsaXplZCB3YXJuaW5nICovCisgICAgICAgICAgICBzZi50cmxfY250ID0gUHlTZXF1ZW5jZV9TaXplKHRyYWlsZXJzKTsKKyAgICAgICAgICAgIGlmIChzZi50cmxfY250ID4gMCAmJgorICAgICAgICAgICAgICAgICEoaSA9IGlvdl9zZXR1cCgmKHNmLnRyYWlsZXJzKSwgJnRidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzLCBzZi50cmxfY250LCBQeUJVRl9TSU1QTEUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgICAgIHNieXRlcyArPSBpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgX19BUFBMRV9fCisgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKKyNlbHNlCisgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCBsZW4sICZzZiwgJnNieXRlcywgZmxhZ3MpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChzZi5oZWFkZXJzICE9IE5VTEwpCisgICAgICAgIGlvdl9jbGVhbnVwKHNmLmhlYWRlcnMsIGhidWYsIHNmLmhkcl9jbnQpOworICAgIGlmIChzZi50cmFpbGVycyAhPSBOVUxMKQorICAgICAgICBpb3ZfY2xlYW51cChzZi50cmFpbGVycywgdGJ1Ziwgc2YudHJsX2NudCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBpZiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVCVVNZKSkgeworICAgICAgICAgICAgaWYgKHNieXRlcyAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gc29tZSBkYXRhIGhhcyBiZWVuIHNlbnQKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBubyBkYXRhIGhhcyBiZWVuIHNlbnQ7IHVwcGVyIGFwcGxpY2F0aW9uIGlzIHN1cHBvc2VkCisgICAgICAgICAgICAgICAgLy8gdG8gcmV0cnkgb24gRUFHQUlOIG9yIEVCVVNZCisgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGdvdG8gZG9uZTsKKworZG9uZToKKyAgICAjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImwiLCBzYnl0ZXMpOworICAgICNlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJMIiwgc2J5dGVzKTsKKyAgICAjZW5kaWYKKworI2Vsc2UKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpvZmZvYmo7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im91dCIsICJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLCAiY291bnQiLCBOVUxMfTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU9uOnNlbmRmaWxlIiwKKyAgICAgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sICZvZmZvYmosICZjb3VudCkpCisgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIGxpbnV4CisgICAgaWYgKG9mZm9iaiA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKCFfcGFyc2Vfb2ZmX3Qob2Zmb2JqLCAmb2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sICZvZmZzZXQsIGNvdW50KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CisjZW5kaWYKK30KKyNlbmRpZgogCiBQeURvY19TVFJWQVIocG9zaXhfZnN0YXRfX2RvY19fLAogImZzdGF0KGZkKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1MaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKK0xpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KGZkPWZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTU4MTUsOCArODA4OSw2IEBACiAgICAgLyogb24gT3BlblZNUyB3ZSBtdXN0IGVuc3VyZSB0aGF0IGFsbCBieXRlcyBhcmUgd3JpdHRlbiB0byB0aGUgZmlsZSAqLwogICAgIGZzeW5jKGZkKTsKICNlbmRpZgotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC01ODU5LDkgKzgxMzEsNyBAQAogICAgIEhGSUxFIHJlYWQsIHdyaXRlOwogICAgIEFQSVJFVCByYzsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IERvc0NyZWF0ZVBpcGUoICZyZWFkLCAmd3JpdGUsIDQwOTYpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gb3MyX2Vycm9yKHJjKTsKIApAQCAtNTg3MCw5ICs4MTQwLDcgQEAKICNpZiAhZGVmaW5lZChNU19XSU5ET1dTKQogICAgIGludCBmZHNbMl07CiAgICAgaW50IHJlczsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gcGlwZShmZHMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyAhPSAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKGlpKSIsIGZkc1swXSwgZmRzWzFdKTsKQEAgLTU4ODAsOSArODE0OCw3IEBACiAgICAgSEFORExFIHJlYWQsIHdyaXRlOwogICAgIGludCByZWFkX2ZkLCB3cml0ZV9mZDsKICAgICBCT09MIG9rOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBvayA9IENyZWF0ZVBpcGUoJnJlYWQsICZ3cml0ZSwgTlVMTCwgMCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkNyZWF0ZVBpcGUiLCBOVUxMKTsKICAgICByZWFkX2ZkID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdClyZWFkLCAwKTsKQEAgLTU4OTMsNjYgKzgxNTksMjE0IEBACiB9CiAjZW5kaWYgIC8qIEhBVkVfUElQRSAqLwogCi0KLSNpZmRlZiBIQVZFX01LRklGTwotUHlEb2NfU1RSVkFSKHBvc2l4X21rZmlmb19fZG9jX18sCi0ibWtmaWZvKGZpbGVuYW1lIFssIG1vZGU9MDY2Nl0pXG5cblwKLUNyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuIik7CisjaWZkZWYgSEFWRV9QSVBFMgorUHlEb2NfU1RSVkFSKHBvc2l4X3BpcGUyX19kb2NfXywKKyJwaXBlMihmbGFncykgLT4gKHJlYWRfZW5kLCB3cml0ZV9lbmQpXG5cblwKK0NyZWF0ZSBhIHBpcGUgd2l0aCBmbGFncyBzZXQgYXRvbWljYWxseS5cblwKK2ZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6XG5cCitPX05PTkJMT0NLLCBPX0NMT0VYRUMuXG5cCisiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZmlmbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9waXBlMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqZmlsZW5hbWU7Ci0gICAgaW50IG1vZGUgPSAwNjY2OworICAgIGludCBmbGFnczsKKyAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZmlmbyIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSkpCisKKyAgICBmbGFncyA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKKyAgICBpZiAoZmxhZ3MgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZmlsZW5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IG1rZmlmbyhmaWxlbmFtZSwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIGlmIChyZXMgPCAwKQorCisgICAgcmVzID0gcGlwZTIoZmRzLCBmbGFncyk7CisgICAgaWYgKHJlcyAhPSAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihpaSkiLCBmZHNbMF0sIGZkc1sxXSk7Cit9CisjZW5kaWYgLyogSEFWRV9QSVBFMiAqLworCisjaWZkZWYgSEFWRV9XUklURVYKK1B5RG9jX1NUUlZBUihwb3NpeF93cml0ZXZfX2RvY19fLAorIndyaXRldihmZCwgYnVmZmVycykgLT4gYnl0ZXN3cml0dGVuXG5cblwKK1dyaXRlIHRoZSBjb250ZW50cyBvZiBidWZmZXJzIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCB3aGVyZSBidWZmZXJzIGlzIGFuXG5cCithcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy5cblwKK1JldHVybnMgdGhlIHRvdGFsIGJ5dGVzIHdyaXR0ZW4uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93cml0ZXYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY250OworICAgIFB5X3NzaXplX3QgcmVzOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgc3RydWN0IGlvdmVjICppb3Y7CisgICAgUHlfYnVmZmVyICpidWY7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLCAmZmQsICZzZXEpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIndyaXRldigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CisKKyAgICBpZiAoIWlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfU0lNUExFKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gd3JpdGV2KGZkLCBpb3YsIGNudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9QV1JJVEUKK1B5RG9jX1NUUlZBUihwb3NpeF9wd3JpdGVfX2RvY19fLAorInB3cml0ZShmZCwgc3RyaW5nLCBvZmZzZXQpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCitXcml0ZSBzdHJpbmcgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIGZkLCBmcm9tIG9mZnNldCwgbGVhdmluZyB0aGUgZmlsZVxuXAorb2Zmc2V0IHVuY2hhbmdlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3B3cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIHBidWY7CisgICAgaW50IGZkOworICAgIG9mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsICZmZCwgJnBidWYsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHNpemUgPSBwd3JpdGUoZmQsIHBidWYuYnVmLCAoc2l6ZV90KXBidWYubGVuLCBvZmZzZXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRklGTworUHlEb2NfU1RSVkFSKHBvc2l4X21rZmlmb19fZG9jX18sCisibWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBGSUZPIChhIFBPU0lYIG5hbWVkIHBpcGUpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbWtmaWZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZSA9IDA2NjY7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZtb2RlLAorI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IG1rZmlmb2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBta2ZpZm8ocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQogUHlEb2NfU1RSVkFSKHBvc2l4X21rbm9kX19kb2NfXywKLSJta25vZChmaWxlbmFtZSBbLCBtb2RlPTA2MDAsIGRldmljZV0pXG5cblwKKyJta25vZChmaWxlbmFtZSwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKVxuXG5cCiBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSlcblwKIG5hbWVkIGZpbGVuYW1lLiBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuXAogdHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuXAogU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uIEZvciBTX0lGQ0hSIGFuZCBTX0lGQkxLLFxuXAogZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmdcblwKLW9zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLiIpOworb3MubWFrZWRldigpKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqZmlsZW5hbWU7Ci0gICAgaW50IG1vZGUgPSAwNjAwOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlID0gMDY2NjsKICAgICBpbnQgZGV2aWNlID0gMDsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aWk6bWtub2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUsICZkZXZpY2UpKQorICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGlpJE8mOm1rbm9kIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJm1vZGUsICZkZXZpY2UsCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGVuYW1lID0gUHlCeXRlc19BU19TVFJJTkcob3BhdGgpOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IG1rbm9kKGZpbGVuYW1lLCBtb2RlLCBkZXZpY2UpOworI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYKIApAQCAtNjAwOSwxOCArODQyMyw4IEBACiAgICAgaW50IGZkOwogICAgIG9mZl90IGxlbmd0aDsKICAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpsZW5vYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmZ0cnVuY2F0ZSIsICZmZCwgJmxlbm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICBsZW5ndGggPSBQeUxvbmdfQXNMb25nKGxlbm9iaik7Ci0jZWxzZQotICAgIGxlbmd0aCA9IFB5TG9uZ19DaGVjayhsZW5vYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcobGVub2JqKSA6IFB5TG9uZ19Bc0xvbmcobGVub2JqKTsKLSNlbmRpZgotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsICZmZCwgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC02MDMzLDYgKzg0MzcsMTA5IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfVFJVTkNBVEUKK1B5RG9jX1NUUlZBUihwb3NpeF90cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUocGF0aCwgbGVuZ3RoKVxuXG5cCitUcnVuY2F0ZSB0aGUgZmlsZSBnaXZlbiBieSBwYXRoIHRvIGxlbmd0aCBieXRlcy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIG9mZl90IGxlbmd0aDsKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlcyA9IGZ0cnVuY2F0ZShwYXRoLmZkLCBsZW5ndGgpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXMgPSB0cnVuY2F0ZShwYXRoLm5hcnJvdywgbGVuZ3RoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXN1bHQgPSBwYXRoX3Bvc2l4X2Vycm9yKCJ0cnVuY2F0ZSIsICZwYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICByZXN1bHQgPSBQeV9Ob25lOworICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCitQeURvY19TVFJWQVIocG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfXywKKyJwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKVxuXG5cCitFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmRcblwKK3N0YXJ0aW5nIGZyb20gb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wb3NpeF9mYWxsb2NhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIG9mZl90IGxlbiwgb2Zmc2V0OworICAgIGludCByZXMsIGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAorICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgIGVycm5vID0gcmVzOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19fLAorInBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpXG5cblwKK0Fubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmdcblwKK3RoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuXAorVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG5cCitvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy5cblwKK2FkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcblwKK1BPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQgb3JcblwKK1BPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wb3NpeF9mYWR2aXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvZmZfdCBsZW4sIG9mZnNldDsKKyAgICBpbnQgcmVzLCBmZCwgYWR2aWNlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCisgICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuLCAmYWR2aWNlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgZXJybm8gPSByZXM7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9QVVRFTlYKIFB5RG9jX1NUUlZBUihwb3NpeF9wdXRlbnZfX2RvY19fLAogInB1dGVudihrZXksIHZhbHVlKVxuXG5cCkBAIC02MDQ1LDIzICs4NTUyLDQwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfcHV0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBQeU9iamVjdCAqbmV3c3RyID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgd2NoYXJfdCAqczEsICpzMjsKKyAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwogICAgIHdjaGFyX3QgKm5ld2VudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVVU6cHV0ZW52IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9zMSwgJm9zMikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3c3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgb3MxLCBvczIpOworICAgIGlmIChuZXdzdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuZXdzdHIpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsb25nZXIgdGhhbiAldSBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIF9NQVhfRU5WKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBuZXdlbnYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKG5ld3N0cik7CisgICAgaWYgKG5ld2VudiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChfd3B1dGVudihuZXdlbnYpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogI2Vsc2UKICAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwogICAgIGNoYXIgKnMxLCAqczI7CiAgICAgY2hhciAqbmV3ZW52OwotI2VuZGlmCi0gICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7Ci0gICAgc2l6ZV90IGxlbjsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInV1OnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzMSwgJnMyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZWxzZQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiTyZPJjpwdXRlbnYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEsCkBAIC02MDY5LDU4ICs4NTkzLDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHMxID0gUHlCeXRlc19Bc1N0cmluZyhvczEpOwogICAgIHMyID0gUHlCeXRlc19Bc1N0cmluZyhvczIpOwotI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIGlmIChzdHJpY21wKHMxLCAiQkVHSU5MSUJQQVRIIikgPT0gMCkgewotICAgICAgICBBUElSRVQgcmM7Ci0KLSAgICAgICAgcmMgPSBEb3NTZXRFeHRMSUJQQVRIKHMyLCBCRUdJTl9MSUJQQVRIKTsKLSAgICAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICBvczJfZXJyb3IocmMpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotCi0gICAgfSBlbHNlIGlmIChzdHJpY21wKHMxLCAiRU5ETElCUEFUSCIpID09IDApIHsKLSAgICAgICAgQVBJUkVUIHJjOwotCi0gICAgICAgIHJjID0gRG9zU2V0RXh0TElCUEFUSChzMiwgRU5EX0xJQlBBVEgpOwotICAgICAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIG9zMl9lcnJvcihyYyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNlbmRpZgotICAgIC8qIFhYWCBUaGlzIGNhbiBsZWFrIG1lbW9yeSAtLSBub3QgZWFzeSB0byBmaXggOi0oICovCi0gICAgLyogbGVuIGluY2x1ZGVzIHNwYWNlIGZvciBhIHRyYWlsaW5nIFwwOyB0aGUgc2l6ZSBhcmcgdG8KLSAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplIGRvZXMgbm90IGNvdW50IHRoYXQgKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbGVuID0gd2NzbGVuKHMxKSArIHdjc2xlbihzMikgKyAyOwotICAgIGlmIChfTUFYX0VOViA8IChsZW4gLSAxKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCi0gICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAoaW50KWxlbiAtIDEpOwotI2Vsc2UKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9zMSkgKyBQeUJ5dGVzX0dFVF9TSVpFKG9zMikgKyAyOwotICAgIG5ld3N0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgKGludClsZW4gLSAxKTsKLSNlbmRpZgorICAgIG5ld3N0ciA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBzMSwgczIpOwogICAgIGlmIChuZXdzdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOwotICAgIF9zbndwcmludGYobmV3ZW52LCBsZW4sIEwiJXM9JXMiLCBzMSwgczIpOwotICAgIGlmIChfd3B1dGVudihuZXdlbnYpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2Vsc2UKKwogICAgIG5ld2VudiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cik7Ci0gICAgUHlPU19zbnByaW50ZihuZXdlbnYsIGxlbiwgIiVzPSVzIiwgczEsIHMyKTsKICAgICBpZiAocHV0ZW52KG5ld2VudikpIHsKICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTYxMzEsMTMgKzg2MTEsNyBAQAogICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bwogICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQogICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgIG9zMSwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICBuZXdzdHIpKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEsIG5ld3N0cikpIHsKICAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQpAQCAtNjE0NSwxMCArODYxOSw2IEBACiAgICAgICAgIFB5X0RFQ1JFRihuZXdzdHIpOwogICAgIH0KIAotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgfQotI2VuZGlmCi0KICNpZm5kZWYgTVNfV0lORE9XUwogICAgIFB5X0RFQ1JFRihvczEpOwogICAgIFB5X0RFQ1JFRihvczIpOwpAQCAtNjE3MywyMyArODY0MywyMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3Vuc2V0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3MxOwotICAgIGNoYXIgKnMxOworICAgIFB5T2JqZWN0ICpuYW1lOwogI2lmbmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgogICAgIGludCBlcnI7CiAjZW5kaWYKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6dW5zZXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEpKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzMSA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MxKTsKIAogI2lmZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCi0gICAgdW5zZXRlbnYoczEpOworICAgIHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICNlbHNlCi0gICAgZXJyID0gdW5zZXRlbnYoczEpOworICAgIGVyciA9IHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvczEpOworICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KICNlbmRpZgpAQCAtNjE5OSwxMiArODY2OCwxMSBAQAogICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCB1bnNldGVudigpIGNhbGwgYmVjYXVzZSB0aGUKICAgICAgKiBvbGQgdmFsdWUgd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4KICAgICAgKi8KLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG9zMSkpIHsKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG5hbWUpKSB7CiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KLQotICAgIFB5X0RFQ1JFRihvczEpOworICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiB1bnNldGVudiAqLwpAQCAtNjIyNiw3ICs4Njk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlcnJvcigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1lc3NhZ2UpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKG1lc3NhZ2UsICJzdXJyb2dhdGVlc2NhcGUiKTsKIH0KIAogCkBAIC02NDMyLDcgKzg5MDAsOCBAQAogCiBQeURvY19TVFJWQVIocG9zaXhfZnN0YXR2ZnNfX2RvY19fLAogImZzdGF0dmZzKGZkKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC4iKTsKK1BlcmZvcm0gYW4gZnN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZkLlxuXAorRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZzdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTY0NTcsMzEgKzg5MjYsODcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgogCiBQeURvY19TVFJWQVIocG9zaXhfc3RhdHZmc19fZG9jX18sCi0ic3RhdHZmcyhwYXRoKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4iKTsKKyJzdGF0dmZzKHBhdGgpXG5cblwKK1BlcmZvcm0gYSBzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3N0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aCwgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBpbnQgcmVzOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBzdHJ1Y3Qgc3RhdHZmcyBzdDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnN0YXR2ZnMiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FTX1NUUklORyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHN0YXR2ZnMocGF0aCwgJnN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKIAotICAgIHJlc3VsdCA9IF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3RhdHZmcyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgIGlmIChwYXRoLmZkICE9IC0xKSB7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgIC8qIGhhbmRsZSB3ZWFrLWxpbmtpbmcgb24gTWFjIE9TIFggMTAuMyAqLworICAgICAgICBpZiAoZnN0YXR2ZnMgPT0gTlVMTCkgeworICAgICAgICAgICAgZmRfc3BlY2lmaWVkKCJzdGF0dmZzIiwgcGF0aC5mZCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhwYXRoLmZkLCAmc3QpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gc3RhdHZmcyhwYXRoLm5hcnJvdywgJnN0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJzdGF0dmZzIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfU1RBVFZGUyAqLwogCisjaWZkZWYgTVNfV0lORE9XUworUHlEb2NfU1RSVkFSKHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19fLAorIl9nZXRkaXNrdXNhZ2UocGF0aCkgLT4gKHRvdGFsLCBmcmVlKVxuXG5cCitSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW4zMl9fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBCT09MIHJldHZhbDsKKyAgICBVTEFSR0VfSU5URUdFUiBfLCB0b3RhbCwgZnJlZTsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSIsICZwYXRoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0dmFsID0gR2V0RGlza0ZyZWVTcGFjZUV4VyhwYXRoLCAmXywgJnRvdGFsLCAmZnJlZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmV0dmFsID09IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTEwpIiwgdG90YWwuUXVhZFBhcnQsIGZyZWUuUXVhZFBhcnQpOworfQorI2VuZGlmCisKKwogLyogVGhpcyBpcyB1c2VkIGZvciBmcGF0aGNvbmYoKSwgcGF0aGNvbmYoKSwgY29uZnN0cigpIGFuZCBzeXNjb25mKCkuCiAgKiBJdCBtYXBzIHN0cmluZ3MgcmVwcmVzZW50aW5nIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgbmFtZXMgdG8KICAqIGludGVnZXIgdmFsdWVzLCBhbGxvd2luZyB0aG9zZSBmdW5jdGlvbnMgdG8gYmUgY2FsbGVkIHdpdGggdGhlCkBAIC02NjY4LDMxICs5MTkzLDQ1IEBACiBQeURvY19TVFJWQVIocG9zaXhfcGF0aGNvbmZfX2RvY19fLAogInBhdGhjb25mKHBhdGgsIG5hbWUpIC0+IGludGVnZXJcblxuXAogUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLlxuXAotSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4iKTsKK0lmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3BhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3BhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgbmFtZTsKLSAgICBjaGFyICpwYXRoOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyY6cGF0aGNvbmYiLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgeworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnBhdGhjb25mIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgewogICAgIGxvbmcgbGltaXQ7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgbGltaXQgPSBwYXRoY29uZihwYXRoLCBuYW1lKTsKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICBsaW1pdCA9IGZwYXRoY29uZihwYXRoLmZkLCBuYW1lKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgbGltaXQgPSBwYXRoY29uZihwYXRoLm5hcnJvdywgbmFtZSk7CiAgICAgaWYgKGxpbWl0ID09IC0xICYmIGVycm5vICE9IDApIHsKICAgICAgICAgaWYgKGVycm5vID09IEVJTlZBTCkKICAgICAgICAgICAgIC8qIGNvdWxkIGJlIGEgcGF0aCBvciBuYW1lIHByb2JsZW0gKi8KICAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l4X2Vycm9yX3dpdGhfZmlsZW5hbWUocGF0aCk7CisgICAgICAgICAgICByZXN1bHQgPSBwYXRoX3Bvc2l4X2Vycm9yKCJwYXRoY29uZiIsICZwYXRoKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcobGltaXQpOwogICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTc1NDQsOSArMTAwODMsMTAgQEAKICAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwogICAgIGNoYXIgKmZpbGVwYXRoOwogICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7CisgICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwogICAgIEhJTlNUQU5DRSByYzsKIAotICAgIFB5T2JqZWN0ICp1bmlwYXRoLCAqd29wZXJhdGlvbiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnVuaXBhdGgsICp1b3BlcmF0aW9uID0gTlVMTDsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8czpzdGFydGZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pcGF0aCwgJm9wZXJhdGlvbikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTc1NTQsMjYgKzEwMDk0LDM1IEBACiAgICAgfQogCiAgICAgaWYgKG9wZXJhdGlvbikgewotICAgICAgICB3b3BlcmF0aW9uID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKG9wZXJhdGlvbiwKKyAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXdvcGVyYXRpb24pIHsKKyAgICAgICAgaWYgKCF1b3BlcmF0aW9uKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgb3BlcmF0aW9uID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gbm9ybWFsOwogICAgICAgICB9CiAgICAgfQogCisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaXBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICBnb3RvIG5vcm1hbDsKKyAgICBpZiAodW9wZXJhdGlvbikgeworICAgICAgICB3b3BlcmF0aW9uID0gUHlVbmljb2RlX0FzVW5pY29kZSh1b3BlcmF0aW9uKTsKKyAgICAgICAgaWYgKHdvcGVyYXRpb24gPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gbm9ybWFsOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHdvcGVyYXRpb24gPSBOVUxMOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uID8gUHlVbmljb2RlX0FTX1VOSUNPREUod29wZXJhdGlvbikgOiAwLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmlwYXRoKSwKLSAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CisgICAgcmMgPSBTaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih3b3BlcmF0aW9uKTsKKyAgICBQeV9YREVDUkVGKHVvcGVyYXRpb24pOwogICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcl91bmljb2RlKCJzdGFydGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmlwYXRoKSk7Ci0gICAgICAgIHJldHVybiBlcnJ2YWw7CisgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgic3RhcnRmaWxlIiwgdW5pcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC03NTgzLDYgKzEwMTMyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJjID0gU2hlbGxFeGVjdXRlKChIV05EKTAsIG9wZXJhdGlvbiwgZmlsZXBhdGgsCkBAIC03NjI3LDYyICsxMDE4MCwxMSBAQAogZGV2aWNlX2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgZmQ7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZGV2aWNlX2VuY29kaW5nIiwgJmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8ICFpc2F0dHkoZmQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKLSAgICBpZiAoZmQgPT0gMCkgewotICAgICAgICBjaGFyIGJ1ZlsxMDBdOwotICAgICAgICBzcHJpbnRmKGJ1ZiwgImNwJWQiLCBHZXRDb25zb2xlQ1AoKSk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgIH0KLSAgICBpZiAoZmQgPT0gMSB8fCBmZCA9PSAyKSB7Ci0gICAgICAgIGNoYXIgYnVmWzEwMF07Ci0gICAgICAgIHNwcmludGYoYnVmLCAiY3AlZCIsIEdldENvbnNvbGVPdXRwdXRDUCgpKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgfQotI2VsaWYgZGVmaW5lZChDT0RFU0VUKQotICAgIHsKLSAgICAgICAgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwotICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjb2Rlc2V0KTsKLSAgICB9Ci0jZW5kaWYKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19CiAKLVB5RG9jX1NUUlZBUihwb3NpeF91cmFuZG9tX19kb2NfXywKLSJ1cmFuZG9tKG4pIC0+IHN0clxuXG5cCi1SZXR1cm4gbiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdXJhbmRvbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHJldDsKLQotICAgICAvKiBSZWFkIGFyZ3VtZW50cyAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp1cmFuZG9tIiwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpOwotICAgIGlmIChyZXQgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKIH0KIAogI2lmZGVmIEhBVkVfU0VUUkVTVUlECkBAIC03NzYxLDIxICsxMDI2Myw0NjggQEAKIH0KICNlbmRpZgogCisjaWZkZWYgVVNFX1hBVFRSUworCitQeURvY19TVFJWQVIocG9zaXhfZ2V0eGF0dHJfX2RvY19fLAorImdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpIC0+IHZhbHVlXG5cblwKK1JldHVybiB0aGUgdmFsdWUgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgZ2V0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2dldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBwYXRoX3QgYXR0cmlidXRlOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpidWZmZXIgPSBOVUxMOworICAgIGludCBpOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiZ2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBmb3IgKGkgPSAwOyA7IGkrKykgeworICAgICAgICB2b2lkICpwdHI7CisgICAgICAgIHNzaXplX3QgcmVzdWx0OworICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKKyAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKKyAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgcGF0aF9lcnJvcigiZ2V0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgICAgIGlmIChwYXRoLmZkID49IDApCisgICAgICAgICAgICByZXN1bHQgPSBmZ2V0eGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gbGdldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCJnZXR4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXN1bHQgIT0gYnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIC8qIENhbiBvbmx5IHNocmluay4gKi8KKyAgICAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2V0eGF0dHJfX2RvY19fLAorInNldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgdmFsdWUsIGZsYWdzPTAsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitTZXQgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoIHRvIHZhbHVlLlxuXAorcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHNldHhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBwYXRoX3QgYXR0cmlidXRlOworICAgIFB5X2J1ZmZlciB2YWx1ZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBtZW1zZXQoJnZhbHVlLCAwLCBzaXplb2YodmFsdWUpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8meSp8aSRwOnNldHhhdHRyIiwKKyAgICAgICAga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCisgICAgICAgICZ2YWx1ZSwgJmZsYWdzLAorICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJzZXR4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHBhdGguZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnNldHhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gc2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigic2V0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX18sCisicmVtb3ZleGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZW1vdmV4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgcGF0aF90IGF0dHJpYnV0ZTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJyZW1vdmV4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHBhdGguZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnJlbW92ZXhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gcmVtb3ZleGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigicmVtb3ZleGF0dHIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3R4YXR0cl9fZG9jX18sCisibGlzdHhhdHRyKHBhdGg9Jy4nLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorUmV0dXJuIGEgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGJlIGVpdGhlciBOb25lLCBhIHN0cmluZywgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitpZiBwYXRoIGlzIE5vbmUsIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbGlzdHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgY2hhciAqYnVmZmVyID0gTlVMTDsKKyAgICBjaGFyICpuYW1lOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIHBhdGguZmQgPSAtMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJsaXN0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBuYW1lID0gcGF0aC5uYXJyb3cgPyBwYXRoLm5hcnJvdyA6ICIuIjsKKyAgICBmb3IgKGkgPSAwOyA7IGkrKykgeworICAgICAgICBjaGFyICpzdGFydCwgKnRyYWNlLCAqZW5kOworICAgICAgICBzc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7IDI1NiwgWEFUVFJfTElTVF9NQVgsIDAgfTsKKyAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKKyAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgLyogRVJBTkdFICovCisgICAgICAgICAgICBwYXRoX2Vycm9yKCJsaXN0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBidWZmZXIgPSBQeU1lbV9NQUxMT0MoYnVmZmVyX3NpemUpOworICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICAgICAgaWYgKHBhdGguZmQgPiAtMSkKKyAgICAgICAgICAgIGxlbmd0aCA9IGZsaXN0eGF0dHIocGF0aC5mZCwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGxlbmd0aCA9IGxpc3R4YXR0cihuYW1lLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoID0gbGxpc3R4YXR0cihuYW1lLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICAgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCJsaXN0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBlbmQgPSBidWZmZXIgKyBsZW5ndGg7CisgICAgICAgIGZvciAodHJhY2UgPSBzdGFydCA9IGJ1ZmZlcjsgdHJhY2UgIT0gZW5kOyB0cmFjZSsrKSB7CisgICAgICAgICAgICBpZiAoISp0cmFjZSkgeworICAgICAgICAgICAgICAgIGludCBlcnJvcjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cmlidXRlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVycm9yID0gUHlMaXN0X0FwcGVuZChyZXN1bHQsIGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJhY2UgKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgYnJlYWs7CisgICAgfQorZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIGlmIChidWZmZXIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLyogVVNFX1hBVFRSUyAqLworCisKK1B5RG9jX1NUUlZBUihwb3NpeF91cmFuZG9tX19kb2NfXywKKyJ1cmFuZG9tKG4pIC0+IHN0clxuXG5cCitSZXR1cm4gbiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdXJhbmRvbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IHJldDsKKworICAgICAvKiBSZWFkIGFyZ3VtZW50cyAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBUZXJtaW5hbCBzaXplIHF1ZXJ5aW5nICovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVGVybWluYWxTaXplVHlwZTsKKworUHlEb2NfU1RSVkFSKFRlcm1pbmFsU2l6ZV9kb2NzdHJpbmcsCisgICAgIkEgdHVwbGUgb2YgKGNvbHVtbnMsIGxpbmVzKSBmb3IgaG9sZGluZyB0ZXJtaW5hbCB3aW5kb3cgc2l6ZSIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBUZXJtaW5hbFNpemVfZmllbGRzW10gPSB7CisgICAgeyJjb2x1bW5zIiwgIndpZHRoIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycyJ9LAorICAgIHsibGluZXMiLCAiaGVpZ2h0IG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycyJ9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBUZXJtaW5hbFNpemVfZGVzYyA9IHsKKyAgICAib3MudGVybWluYWxfc2l6ZSIsCisgICAgVGVybWluYWxTaXplX2RvY3N0cmluZywKKyAgICBUZXJtaW5hbFNpemVfZmllbGRzLAorICAgIDIsCit9OworCisjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQorUHlEb2NfU1RSVkFSKHRlcm1zaXplX19kb2NfXywKKyAgICAiUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgKGNvbHVtbnMsIGxpbmVzKS5cbiIgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGZkIChkZWZhdWx0IHN0YW5kYXJkIG91dHB1dCkgc3BlY2lmaWVzXG4iICAgICAgIFwKKyAgICAid2hpY2ggZmlsZSBkZXNjcmlwdG9yIHNob3VsZCBiZSBxdWVyaWVkLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiSWYgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBub3QgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIGFuIE9TRXJyb3JcbiIgIFwKKyAgICAiaXMgdGhyb3duLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgZGVmaW5lZCBpZiBhbiBpbXBsZW1lbnRhdGlvbiBpc1xuIiAgICAgICAgIFwKKyAgICAiYXZhaWxhYmxlIGZvciB0aGlzIHN5c3RlbS5cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAic2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIGlzIHRoZSBoaWdoLWxldmVsIGZ1bmN0aW9uIHdoaWNoIHNob3VsZCBcbiIgIFwKKyAgICAibm9ybWFsbHkgYmUgdXNlZCwgb3MuZ2V0X3Rlcm1pbmFsX3NpemUgaXMgdGhlIGxvdy1sZXZlbCBpbXBsZW1lbnRhdGlvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorZ2V0X3Rlcm1pbmFsX3NpemUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBjb2x1bW5zLCBsaW5lczsKKyAgICBQeU9iamVjdCAqdGVybXNpemU7CisKKyAgICBpbnQgZmQgPSBmaWxlbm8oc3Rkb3V0KTsKKyAgICAvKiBVbmRlciBzb21lIGNvbmRpdGlvbnMgc3Rkb3V0IG1heSBub3QgYmUgY29ubmVjdGVkIGFuZAorICAgICAqIGZpbGVubyhzdGRvdXQpIG1heSBwb2ludCB0byBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4gRm9yIGV4YW1wbGUKKyAgICAgKiBHVUkgYXBwcyBkb24ndCBoYXZlIHZhbGlkIHN0YW5kYXJkIHN0cmVhbXMgYnkgZGVmYXVsdC4KKyAgICAgKgorICAgICAqIElmIHRoaXMgaGFwcGVucywgYW5kIHRoZSBvcHRpb25hbCBmZCBhcmd1bWVudCBpcyBub3QgcHJlc2VudCwKKyAgICAgKiB0aGUgaW9jdGwgYmVsb3cgd2lsbCBmYWlsIHJldHVybmluZyBFQkFERi4gVGhpcyBpcyB3aGF0IHdlIHdhbnQuCisgICAgICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpIiwgJmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBURVJNU0laRV9VU0VfSU9DVEwKKyAgICB7CisgICAgICAgIHN0cnVjdCB3aW5zaXplIHc7CisgICAgICAgIGlmIChpb2N0bChmZCwgVElPQ0dXSU5TWiwgJncpKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgY29sdW1ucyA9IHcud3NfY29sOworICAgICAgICBsaW5lcyA9IHcud3Nfcm93OworICAgIH0KKyNlbmRpZiAvKiBURVJNU0laRV9VU0VfSU9DVEwgKi8KKworI2lmZGVmIFRFUk1TSVpFX1VTRV9DT05JTworICAgIHsKKyAgICAgICAgRFdPUkQgbmhhbmRsZTsKKyAgICAgICAgSEFORExFIGhhbmRsZTsKKyAgICAgICAgQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gY3NiaTsKKyAgICAgICAgc3dpdGNoIChmZCkgeworICAgICAgICBjYXNlIDA6IG5oYW5kbGUgPSBTVERfSU5QVVRfSEFORExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTogbmhhbmRsZSA9IFNURF9PVVRQVVRfSEFORExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjogbmhhbmRsZSA9IFNURF9FUlJPUl9IQU5ETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImJhZCBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGUgPSBHZXRTdGRIYW5kbGUobmhhbmRsZSk7CisgICAgICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfT1NFcnJvciwgImhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkIik7CisgICAgICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICAgICAgaWYgKCFHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyhoYW5kbGUsICZjc2JpKSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgICAgICBjb2x1bW5zID0gY3NiaS5zcldpbmRvdy5SaWdodCAtIGNzYmkuc3JXaW5kb3cuTGVmdCArIDE7CisgICAgICAgIGxpbmVzID0gY3NiaS5zcldpbmRvdy5Cb3R0b20gLSBjc2JpLnNyV2luZG93LlRvcCArIDE7CisgICAgfQorI2VuZGlmIC8qIFRFUk1TSVpFX1VTRV9DT05JTyAqLworCisgICAgdGVybXNpemUgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGVybWluYWxTaXplVHlwZSk7CisgICAgaWYgKHRlcm1zaXplID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGVybXNpemUsIDAsIFB5TG9uZ19Gcm9tTG9uZyhjb2x1bW5zKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0ZXJtc2l6ZSwgMSwgUHlMb25nX0Zyb21Mb25nKGxpbmVzKSk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHRlcm1zaXplKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiB0ZXJtc2l6ZTsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpICovCisKKwogc3RhdGljIFB5TWV0aG9kRGVmIHBvc2l4X21ldGhvZHNbXSA9IHsKLSAgICB7ImFjY2VzcyIsICAgICAgICAgIHBvc2l4X2FjY2VzcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9hY2Nlc3NfX2RvY19ffSwKKyAgICB7ImFjY2VzcyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfYWNjZXNzX19kb2NfX30sCiAjaWZkZWYgSEFWRV9UVFlOQU1FCiAgICAgeyJ0dHluYW1lIiwgICAgICAgICBwb3NpeF90dHluYW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3R0eW5hbWVfX2RvY19ffSwKICNlbmRpZgotICAgIHsiY2hkaXIiLCAgICAgICAgICAgcG9zaXhfY2hkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2hkaXJfX2RvY19ffSwKKyAgICB7ImNoZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaGRpcl9fZG9jX199LAogI2lmZGVmIEhBVkVfQ0hGTEFHUwotICAgIHsiY2hmbGFncyIsICAgICAgICAgcG9zaXhfY2hmbGFncywgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaGZsYWdzX19kb2NfX30sCisgICAgeyJjaGZsYWdzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaGZsYWdzX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCi0gICAgeyJjaG1vZCIsICAgICAgICAgICBwb3NpeF9jaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaG1vZF9fZG9jX199LAorICAgIHsiY2htb2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NobW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NobW9kX19kb2NfX30sCiAjaWZkZWYgSEFWRV9GQ0hNT0QKICAgICB7ImZjaG1vZCIsICAgICAgICAgIHBvc2l4X2ZjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mY2htb2RfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0ZDSE1PRCAqLwogI2lmZGVmIEhBVkVfQ0hPV04KLSAgICB7ImNob3duIiwgICAgICAgICAgIHBvc2l4X2Nob3duLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nob3duX19kb2NfX30sCisgICAgeyJjaG93biIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hvd24sCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hvd25fX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAjaWZkZWYgSEFWRV9MQ0hNT0QKICAgICB7ImxjaG1vZCIsICAgICAgICAgIHBvc2l4X2xjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sY2htb2RfX2RvY19ffSwKQEAgLTc4MDEsMzIgKzEwNzUwLDU3IEBACiAgICAgeyJnZXRjd2RiIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0Y3dkX2J5dGVzLAogICAgIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRjd2RiX19kb2NfX30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0xJTksKLSAgICB7ImxpbmsiLCAgICAgICAgICAgIHBvc2l4X2xpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfbGlua19fZG9jX199LAorI2lmIGRlZmluZWQoSEFWRV9MSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgeyJsaW5rIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saW5rX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9MSU5LICovCi0gICAgeyJsaXN0ZGlyIiwgICAgICAgICBwb3NpeF9saXN0ZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xpc3RkaXJfX2RvY19ffSwKLSAgICB7ImxzdGF0IiwgICAgICAgICAgIHBvc2l4X2xzdGF0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xzdGF0X19kb2NfX30sCi0gICAgeyJta2RpciIsICAgICAgICAgICBwb3NpeF9ta2RpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9ta2Rpcl9fZG9jX199LAorICAgIHsibGlzdGRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3RkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdGRpcl9fZG9jX199LAorICAgIHsibHN0YXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xzdGF0X19kb2NfX30sCisgICAgeyJta2RpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtkaXJfX2RvY19ffSwKICNpZmRlZiBIQVZFX05JQ0UKICAgICB7Im5pY2UiLCAgICAgICAgICAgIHBvc2l4X25pY2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfbmljZV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfTklDRSAqLworI2lmZGVmIEhBVkVfR0VUUFJJT1JJVFkKKyAgICB7ImdldHByaW9yaXR5IiwgICAgIHBvc2l4X2dldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHByaW9yaXR5X19kb2NfX30sCisjZW5kaWYgLyogSEFWRV9HRVRQUklPUklUWSAqLworI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKKyAgICB7InNldHByaW9yaXR5IiwgICAgIHBvc2l4X3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHByaW9yaXR5X19kb2NfX30sCisjZW5kaWYgLyogSEFWRV9TRVRQUklPUklUWSAqLwogI2lmZGVmIEhBVkVfUkVBRExJTksKLSAgICB7InJlYWRsaW5rIiwgICAgICAgIHBvc2l4X3JlYWRsaW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWRsaW5rX19kb2NfX30sCisgICAgeyJyZWFkbGluayIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVhZGxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1JFQURMSU5LICovCiAjaWYgIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsicmVhZGxpbmsiLCAgICAgICAgd2luX3JlYWRsaW5rLCBNRVRIX1ZBUkFSR1MsIHdpbl9yZWFkbGlua19fZG9jX199LAorICAgIHsicmVhZGxpbmsiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXdpbl9yZWFkbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkbGlua19fZG9jX199LAogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KLSAgICB7InJlbmFtZSIsICAgICAgICAgIHBvc2l4X3JlbmFtZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZW5hbWVfX2RvY19ffSwKLSAgICB7InJtZGlyIiwgICAgICAgICAgIHBvc2l4X3JtZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JtZGlyX19kb2NfX30sCi0gICAgeyJzdGF0IiwgICAgICAgICAgICBwb3NpeF9zdGF0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N0YXRfX2RvY19ffSwKKyAgICB7InJlbmFtZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVuYW1lX19kb2NfX30sCisgICAgeyJyZXBsYWNlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVwbGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZXBsYWNlX19kb2NfX30sCisgICAgeyJybWRpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcm1kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcm1kaXJfX2RvY19ffSwKKyAgICB7InN0YXQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N0YXRfX2RvY19ffSwKICAgICB7InN0YXRfZmxvYXRfdGltZXMiLCBzdGF0X2Zsb2F0X3RpbWVzLCBNRVRIX1ZBUkFSR1MsIHN0YXRfZmxvYXRfdGltZXNfX2RvY19ffSwKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKLSAgICB7InN5bWxpbmsiLCAgICAgICAgIHBvc2l4X3N5bWxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfc3ltbGlua19fZG9jX199LAorI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKQorICAgIHsic3ltbGluayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N5bWxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3ltbGlua19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKXdpbl9zeW1saW5rLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICB3aW5fc3ltbGlua19fZG9jX199LAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAjaWZkZWYgSEFWRV9TWVNURU0KICAgICB7InN5c3RlbSIsICAgICAgICAgIHBvc2l4X3N5c3RlbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeXN0ZW1fX2RvY19ffSwKICNlbmRpZgpAQCAtNzgzNCwxNiArMTA4MDgsMjMgQEAKICNpZmRlZiBIQVZFX1VOQU1FCiAgICAgeyJ1bmFtZSIsICAgICAgICAgICBwb3NpeF91bmFtZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3VuYW1lX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9VTkFNRSAqLwotICAgIHsidW5saW5rIiwgICAgICAgICAgcG9zaXhfdW5saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3VubGlua19fZG9jX199LAotICAgIHsicmVtb3ZlIiwgICAgICAgICAgcG9zaXhfdW5saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlbW92ZV9fZG9jX199LAotICAgIHsidXRpbWUiLCAgICAgICAgICAgcG9zaXhfdXRpbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfdXRpbWVfX2RvY19ffSwKKyAgICB7InVubGluayIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdW5saW5rX19kb2NfX30sCisgICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdW5saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbW92ZV9fZG9jX199LAorICAgIHsidXRpbWUiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3V0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcG9zaXhfdXRpbWVfX2RvY19ffSwKICNpZmRlZiBIQVZFX1RJTUVTCiAgICAgeyJ0aW1lcyIsICAgICAgICAgICBwb3NpeF90aW1lcywgTUVUSF9OT0FSR1MsIHBvc2l4X3RpbWVzX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9USU1FUyAqLwogICAgIHsiX2V4aXQiLCAgICAgICAgICAgcG9zaXhfX2V4aXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2V4aXRfX2RvY19ffSwKICNpZmRlZiBIQVZFX0VYRUNWCiAgICAgeyJleGVjdiIsICAgICAgICAgICBwb3NpeF9leGVjdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9leGVjdl9fZG9jX199LAotICAgIHsiZXhlY3ZlIiwgICAgICAgICAgcG9zaXhfZXhlY3ZlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2V4ZWN2ZV9fZG9jX199LAorICAgIHsiZXhlY3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2V4ZWN2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9leGVjdmVfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAjaWZkZWYgSEFWRV9TUEFXTlYKICAgICB7InNwYXdudiIsICAgICAgICAgIHBvc2l4X3NwYXdudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZfX2RvY19ffSwKQEAgLTc4NTksNiArMTA4NDAsMzIgQEAKICNpZmRlZiBIQVZFX0ZPUksKICAgICB7ImZvcmsiLCAgICAgICAgICAgIHBvc2l4X2ZvcmssIE1FVEhfTk9BUkdTLCBwb3NpeF9mb3JrX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9GT1JLICovCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisgICAgeyJzY2hlZF9nZXRwYXJhbSIsIHBvc2l4X3NjaGVkX2dldHBhcmFtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldHBhcmFtX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorICAgIHsic2NoZWRfZ2V0c2NoZWR1bGVyIiwgcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwKKyAgICB7InNjaGVkX3JyX2dldF9pbnRlcnZhbCIsIHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKyAgICB7InNjaGVkX3NldHBhcmFtIiwgcG9zaXhfc2NoZWRfc2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0cGFyYW1fX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisgICAgeyJzY2hlZF9zZXRzY2hlZHVsZXIiLCBwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfX30sCisjZW5kaWYKKyAgICB7InNjaGVkX3lpZWxkIiwgICAgIHBvc2l4X3NjaGVkX3lpZWxkLCBNRVRIX05PQVJHUywgcG9zaXhfc2NoZWRfeWllbGRfX2RvY19ffSwKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisgICAgeyJzY2hlZF9zZXRhZmZpbml0eSIsIHBvc2l4X3NjaGVkX3NldGFmZmluaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfX30sCisgICAgeyJzY2hlZF9nZXRhZmZpbml0eSIsIHBvc2l4X3NjaGVkX2dldGFmZmluaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldGFmZmluaXR5X19kb2NfX30sCisjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KICNpZiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkKICAgICB7Im9wZW5wdHkiLCAgICAgICAgIHBvc2l4X29wZW5wdHksIE1FVEhfTk9BUkdTLCBwb3NpeF9vcGVucHR5X19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9PUEVOUFRZIHx8IEhBVkVfX0dFVFBUWSB8fCBIQVZFX0RFVl9QVE1YICovCkBAIC03ODc0LDYgKzEwODgxLDkgQEAKICNpZmRlZiBIQVZFX0dFVEdJRAogICAgIHsiZ2V0Z2lkIiwgICAgICAgICAgcG9zaXhfZ2V0Z2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z2lkX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KKyNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAorICAgIHsiZ2V0Z3JvdXBsaXN0IiwgICAgcG9zaXhfZ2V0Z3JvdXBsaXN0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKICAgICB7ImdldGdyb3VwcyIsICAgICAgIHBvc2l4X2dldGdyb3VwcywgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGdyb3Vwc19fZG9jX199LAogI2VuZGlmCkBAIC03OTAyLDcgKzEwOTEyLDYgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCiAgICAgeyJraWxsIiwgICAgd2luMzJfa2lsbCwgTUVUSF9WQVJBUkdTLCB3aW4zMl9raWxsX19kb2NfX30sCi0gICAgeyJsaW5rIiwgICAgd2luMzJfbGluaywgTUVUSF9WQVJBUkdTLCB3aW4zMl9saW5rX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX1NFVFVJRAogICAgIHsic2V0dWlkIiwgICAgICAgICAgcG9zaXhfc2V0dWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHVpZF9fZG9jX199LApAQCAtNzk0Myw2ICsxMDk1Miw5IEBACiAjaWZkZWYgSEFWRV9XQUlUNAogICAgIHsid2FpdDQiLCAgICAgICAgICAgcG9zaXhfd2FpdDQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdDRfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1dBSVQ0ICovCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorICAgIHsid2FpdGlkIiwgICAgICAgICAgcG9zaXhfd2FpdGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRpZF9fZG9jX199LAorI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX1dBSVRQSUQpIHx8IGRlZmluZWQoSEFWRV9DV0FJVCkKICAgICB7IndhaXRwaWQiLCAgICAgICAgIHBvc2l4X3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdHBpZF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfV0FJVFBJRCAqLwpAQCAtNzk2MSwyNSArMTA5NzMsNTMgQEAKICNpZmRlZiBIQVZFX1RDU0VUUEdSUAogICAgIHsidGNzZXRwZ3JwIiwgICAgICAgcG9zaXhfdGNzZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Rjc2V0cGdycF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfVENTRVRQR1JQICovCi0gICAgeyJvcGVuIiwgICAgICAgICAgICBwb3NpeF9vcGVuLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X29wZW5fX2RvY19ffSwKKyAgICB7Im9wZW4iLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9vcGVuLFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9vcGVuX19kb2NfX30sCiAgICAgeyJjbG9zZSIsICAgICAgICAgICBwb3NpeF9jbG9zZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZV9fZG9jX199LAogICAgIHsiY2xvc2VyYW5nZSIsICAgICAgcG9zaXhfY2xvc2VyYW5nZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZXJhbmdlX19kb2NfX30sCiAgICAgeyJkZXZpY2VfZW5jb2RpbmciLCBkZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHUywgZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCiAgICAgeyJkdXAiLCAgICAgICAgICAgICBwb3NpeF9kdXAsIE1FVEhfVkFSQVJHUywgcG9zaXhfZHVwX19kb2NfX30sCiAgICAgeyJkdXAyIiwgICAgICAgICAgICBwb3NpeF9kdXAyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2R1cDJfX2RvY19ffSwKKyNpZmRlZiBIQVZFX0xPQ0tGCisgICAgeyJsb2NrZiIsICAgICAgICAgICBwb3NpeF9sb2NrZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sb2NrZl9fZG9jX199LAorI2VuZGlmCiAgICAgeyJsc2VlayIsICAgICAgICAgICBwb3NpeF9sc2VlaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9sc2Vla19fZG9jX199LAogICAgIHsicmVhZCIsICAgICAgICAgICAgcG9zaXhfcmVhZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkX19kb2NfX30sCisjaWZkZWYgSEFWRV9SRUFEVgorICAgIHsicmVhZHYiLCAgICAgICAgICAgcG9zaXhfcmVhZHYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZHZfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUFJFQUQKKyAgICB7InByZWFkIiwgICAgICAgICAgIHBvc2l4X3ByZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3ByZWFkX19kb2NfX30sCisjZW5kaWYKICAgICB7IndyaXRlIiwgICAgICAgICAgIHBvc2l4X3dyaXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRlX19kb2NfX30sCisjaWZkZWYgSEFWRV9XUklURVYKKyAgICB7IndyaXRldiIsICAgICAgICAgIHBvc2l4X3dyaXRldiwgTUVUSF9WQVJBUkdTLCBwb3NpeF93cml0ZXZfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUFdSSVRFCisgICAgeyJwd3JpdGUiLCAgICAgICAgICBwb3NpeF9wd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHdyaXRlX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NFTkRGSUxFCisgICAgeyJzZW5kZmlsZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2VuZGZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2VuZGZpbGVfX2RvY19ffSwKKyNlbmRpZgogICAgIHsiZnN0YXQiLCAgICAgICAgICAgcG9zaXhfZnN0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXRfX2RvY19ffSwKICAgICB7ImlzYXR0eSIsICAgICAgICAgIHBvc2l4X2lzYXR0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9pc2F0dHlfX2RvY19ffSwKICNpZmRlZiBIQVZFX1BJUEUKICAgICB7InBpcGUiLCAgICAgICAgICAgIHBvc2l4X3BpcGUsIE1FVEhfTk9BUkdTLCBwb3NpeF9waXBlX19kb2NfX30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1BJUEUyCisgICAgeyJwaXBlMiIsICAgICAgICAgICBwb3NpeF9waXBlMiwgTUVUSF9PLCBwb3NpeF9waXBlMl9fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9NS0ZJRk8KLSAgICB7Im1rZmlmbyIsICAgICAgICAgIHBvc2l4X21rZmlmbywgTUVUSF9WQVJBUkdTLCBwb3NpeF9ta2ZpZm9fX2RvY19ffSwKKyAgICB7Im1rZmlmbyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2ZpZm8sCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtmaWZvX19kb2NfX30sCiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQotICAgIHsibWtub2QiLCAgICAgICAgICAgcG9zaXhfbWtub2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWtub2RfX2RvY19ffSwKKyAgICB7Im1rbm9kIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta25vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta25vZF9fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9ERVZJQ0VfTUFDUk9TCiAgICAgeyJtYWpvciIsICAgICAgICAgICBwb3NpeF9tYWpvciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9tYWpvcl9fZG9jX199LApAQCAtNzk4OSw2ICsxMTAyOSwxNyBAQAogI2lmZGVmIEhBVkVfRlRSVU5DQVRFCiAgICAgeyJmdHJ1bmNhdGUiLCAgICAgICBwb3NpeF9mdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnRydW5jYXRlX19kb2NfX30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1RSVU5DQVRFCisgICAgeyJ0cnVuY2F0ZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdHJ1bmNhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdHJ1bmNhdGVfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCisgICAgeyJwb3NpeF9mYWxsb2NhdGUiLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKKyAgICB7InBvc2l4X2ZhZHZpc2UiLCAgIHBvc2l4X3Bvc2l4X2ZhZHZpc2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfcG9zaXhfZmFkdmlzZV9fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9QVVRFTlYKICAgICB7InB1dGVudiIsICAgICAgICAgIHBvc2l4X3B1dGVudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wdXRlbnZfX2RvY19ffSwKICNlbmRpZgpAQCAtODAwMiw2ICsxMTA1Myw5IEBACiAjaWZkZWYgSEFWRV9GU1lOQwogICAgIHsiZnN5bmMiLCAgICAgICBwb3NpeF9mc3luYywgTUVUSF9PLCBwb3NpeF9mc3luY19fZG9jX199LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TWU5DCisgICAgeyJzeW5jIiwgICAgICAgIHBvc2l4X3N5bmMsIE1FVEhfTk9BUkdTLCBwb3NpeF9zeW5jX19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX0ZEQVRBU1lOQwogICAgIHsiZmRhdGFzeW5jIiwgICBwb3NpeF9mZGF0YXN5bmMsICBNRVRIX08sIHBvc2l4X2ZkYXRhc3luY19fZG9jX199LAogI2VuZGlmCkBAIC04MDM1LDcgKzExMDg5LDkgQEAKICAgICB7ImZzdGF0dmZzIiwgICAgICAgIHBvc2l4X2ZzdGF0dmZzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZzdGF0dmZzX19kb2NfX30sCiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpCi0gICAgeyJzdGF0dmZzIiwgICAgICAgICBwb3NpeF9zdGF0dmZzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N0YXR2ZnNfX2RvY19ffSwKKyAgICB7InN0YXR2ZnMiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zdGF0dmZzLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N0YXR2ZnNfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfQ09ORlNUUgogICAgIHsiY29uZnN0ciIsICAgICAgICAgcG9zaXhfY29uZnN0ciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jb25mc3RyX19kb2NfX30sCkBAIC04MDQ3LDcgKzExMTAzLDkgQEAKICAgICB7ImZwYXRoY29uZiIsICAgICAgIHBvc2l4X2ZwYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mcGF0aGNvbmZfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfUEFUSENPTkYKLSAgICB7InBhdGhjb25mIiwgICAgICAgIHBvc2l4X3BhdGhjb25mLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3BhdGhjb25mX19kb2NfX30sCisgICAgeyJwYXRoY29uZiIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcGF0aGNvbmYsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcGF0aGNvbmZfX2RvY19ffSwKICNlbmRpZgogICAgIHsiYWJvcnQiLCAgICAgICAgICAgcG9zaXhfYWJvcnQsIE1FVEhfTk9BUkdTLCBwb3NpeF9hYm9ydF9fZG9jX199LAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTgwNTUsNiArMTExMTMsNyBAQAogICAgIHsiX2dldGZpbmFscGF0aG5hbWUiLCAgICAgICBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7Il9nZXRmaWxlaW5mb3JtYXRpb24iLCAgICAgcG9zaXhfX2dldGZpbGVpbmZvcm1hdGlvbiwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7Il9pc2RpciIsICAgICAgICAgICAgICAgICAgcG9zaXhfX2lzZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19pc2Rpcl9fZG9jX199LAorICAgIHsiX2dldGRpc2t1c2FnZSIsICAgICAgICAgICB3aW4zMl9fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfR0VUTE9BREFWRwogICAgIHsiZ2V0bG9hZGF2ZyIsICAgICAgcG9zaXhfZ2V0bG9hZGF2ZywgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGxvYWRhdmdfX2RvY19ffSwKQEAgLTgwNzIsNiArMTExMzEsMjQgQEAKICNpZmRlZiBIQVZFX0dFVFJFU0dJRAogICAgIHsiZ2V0cmVzZ2lkIiwgICAgICAgcG9zaXhfZ2V0cmVzZ2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cmVzZ2lkX19kb2NfX30sCiAjZW5kaWYKKworI2lmZGVmIFVTRV9YQVRUUlMKKyAgICB7InNldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NldHhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9zZXR4YXR0cl9fZG9jX199LAorICAgIHsiZ2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0eGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X2dldHhhdHRyX19kb2NfX30sCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9yZW1vdmV4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZleGF0dHJfX2RvY19ffSwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9saXN0eGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X2xpc3R4YXR0cl9fZG9jX199LAorI2VuZGlmCisjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQorICAgIHsiZ2V0X3Rlcm1pbmFsX3NpemUiLCBnZXRfdGVybWluYWxfc2l6ZSwgTUVUSF9WQVJBUkdTLCB0ZXJtc2l6ZV9fZG9jX199LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC04MjM5LDYgKzExMzE2LDkgQEAKICNpZmRlZiBPX1RFWFQKICAgICBpZiAoaW5zKGQsICJPX1RFWFQiLCAobG9uZylPX1RFWFQpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBPX1hBVFRSCisgICAgaWYgKGlucyhkLCAiT19YQVRUUiIsIChsb25nKU9fWEFUVFIpKSByZXR1cm4gLTE7CisjZW5kaWYKICNpZmRlZiBPX0xBUkdFRklMRQogICAgIGlmIChpbnMoZCwgIk9fTEFSR0VGSUxFIiwgKGxvbmcpT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTgyNDgsNiArMTEzMjgsMzggQEAKICNpZmRlZiBPX0VYTE9DSwogICAgIGlmIChpbnMoZCwgIk9fRVhMT0NLIiwgKGxvbmcpT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBPX0VYRUMKKyAgICBpZiAoaW5zKGQsICJPX0VYRUMiLCAobG9uZylPX0VYRUMpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX1NFQVJDSAorICAgIGlmIChpbnMoZCwgIk9fU0VBUkNIIiwgKGxvbmcpT19TRUFSQ0gpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX1RUWV9JTklUCisgICAgaWYgKGlucyhkLCAiT19UVFlfSU5JVCIsIChsb25nKU9fVFRZX0lOSVQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQUklPX1BST0NFU1MKKyAgICBpZiAoaW5zKGQsICJQUklPX1BST0NFU1MiLCAobG9uZylQUklPX1BST0NFU1MpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQUklPX1BHUlAKKyAgICBpZiAoaW5zKGQsICJQUklPX1BHUlAiLCAobG9uZylQUklPX1BHUlApKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQUklPX1VTRVIKKyAgICBpZiAoaW5zKGQsICJQUklPX1VTRVIiLCAobG9uZylQUklPX1VTRVIpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX0NMT0VYRUMKKyAgICBpZiAoaW5zKGQsICJPX0NMT0VYRUMiLCAobG9uZylPX0NMT0VYRUMpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX0FDQ01PREUKKyAgICBpZiAoaW5zKGQsICJPX0FDQ01PREUiLCAobG9uZylPX0FDQ01PREUpKSByZXR1cm4gLTE7CisjZW5kaWYKKworCisjaWZkZWYgU0VFS19IT0xFCisgICAgaWYgKGlucyhkLCAiU0VFS19IT0xFIiwgKGxvbmcpU0VFS19IT0xFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0VFS19EQVRBCisgICAgaWYgKGlucyhkLCAiU0VFS19EQVRBIiwgKGxvbmcpU0VFS19EQVRBKSkgcmV0dXJuIC0xOworI2VuZGlmCiAKIC8qIE1TIFdpbmRvd3MgKi8KICNpZmRlZiBPX05PSU5IRVJJVApAQCAtODI5MCw2ICsxMTQwMiwxMCBAQAogICAgIC8qIERvIG5vdCBmb2xsb3cgbGlua3MuICAgICAgKi8KICAgICBpZiAoaW5zKGQsICJPX05PRk9MTE9XIiwgKGxvbmcpT19OT0ZPTExPVykpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIE9fTk9MSU5LUworICAgIC8qIEZhaWxzIGlmIGxpbmsgY291bnQgb2YgdGhlIG5hbWVkIGZpbGUgaXMgZ3JlYXRlciB0aGFuIDEgKi8KKyAgICBpZiAoaW5zKGQsICJPX05PTElOS1MiLCAobG9uZylPX05PTElOS1MpKSByZXR1cm4gLTE7CisjZW5kaWYKICNpZmRlZiBPX05PQVRJTUUKICAgICAvKiBEbyBub3QgdXBkYXRlIHRoZSBhY2Nlc3MgdGltZS4gKi8KICAgICBpZiAoaW5zKGQsICJPX05PQVRJTUUiLCAobG9uZylPX05PQVRJTUUpKSByZXR1cm4gLTE7CkBAIC04MzU2LDYgKzExNDcyLDc5IEBACiAgICAgaWYgKGlucyhkLCAiU1RfTk9TVUlEIiwgKGxvbmcpU1RfTk9TVUlEKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIFNUX05PU1VJRCAqLwogCisgICAgLyogRnJlZUJTRCBzZW5kZmlsZSgpIGNvbnN0YW50cyAqLworI2lmZGVmIFNGX05PRElTS0lPCisgICAgaWYgKGlucyhkLCAiU0ZfTk9ESVNLSU8iLCAobG9uZylTRl9OT0RJU0tJTykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNGX01OT1dBSVQKKyAgICBpZiAoaW5zKGQsICJTRl9NTk9XQUlUIiwgKGxvbmcpU0ZfTU5PV0FJVCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNGX1NZTkMKKyAgICBpZiAoaW5zKGQsICJTRl9TWU5DIiwgKGxvbmcpU0ZfU1lOQykpIHJldHVybiAtMTsKKyNlbmRpZgorCisgICAgLyogY29uc3RhbnRzIGZvciBwb3NpeF9mYWR2aXNlICovCisjaWZkZWYgUE9TSVhfRkFEVl9OT1JNQUwKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX05PUk1BTCIsIChsb25nKVBPU0lYX0ZBRFZfTk9STUFMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9TRVFVRU5USUFMCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9TRVFVRU5USUFMIiwgKGxvbmcpUE9TSVhfRkFEVl9TRVFVRU5USUFMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9SQU5ET00KKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1JBTkRPTSIsIChsb25nKVBPU0lYX0ZBRFZfUkFORE9NKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9OT1JFVVNFCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9OT1JFVVNFIiwgKGxvbmcpUE9TSVhfRkFEVl9OT1JFVVNFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9XSUxMTkVFRAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfV0lMTE5FRUQiLCAobG9uZylQT1NJWF9GQURWX1dJTExORUVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9ET05UTkVFRAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfRE9OVE5FRUQiLCAobG9uZylQT1NJWF9GQURWX0RPTlRORUVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyAgICAvKiBjb25zdGFudHMgZm9yIHdhaXRpZCAqLworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKEhBVkVfV0FJVElEKQorICAgIGlmIChpbnMoZCwgIlBfUElEIiwgKGxvbmcpUF9QSUQpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiUF9QR0lEIiwgKGxvbmcpUF9QR0lEKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlBfQUxMIiwgKGxvbmcpUF9BTEwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBXRVhJVEVECisgICAgaWYgKGlucyhkLCAiV0VYSVRFRCIsIChsb25nKVdFWElURUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBXTk9XQUlUCisgICAgaWYgKGlucyhkLCAiV05PV0FJVCIsIChsb25nKVdOT1dBSVQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBXU1RPUFBFRAorICAgIGlmIChpbnMoZCwgIldTVE9QUEVEIiwgKGxvbmcpV1NUT1BQRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfRVhJVEVECisgICAgaWYgKGlucyhkLCAiQ0xEX0VYSVRFRCIsIChsb25nKUNMRF9FWElURUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfRFVNUEVECisgICAgaWYgKGlucyhkLCAiQ0xEX0RVTVBFRCIsIChsb25nKUNMRF9EVU1QRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfVFJBUFBFRAorICAgIGlmIChpbnMoZCwgIkNMRF9UUkFQUEVEIiwgKGxvbmcpQ0xEX1RSQVBQRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfQ09OVElOVUVECisgICAgaWYgKGlucyhkLCAiQ0xEX0NPTlRJTlVFRCIsIChsb25nKUNMRF9DT05USU5VRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKworICAgIC8qIGNvbnN0YW50cyBmb3IgbG9ja2YgKi8KKyNpZmRlZiBGX0xPQ0sKKyAgICBpZiAoaW5zKGQsICJGX0xPQ0siLCAobG9uZylGX0xPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX1RMT0NLCisgICAgaWYgKGlucyhkLCAiRl9UTE9DSyIsIChsb25nKUZfVExPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX1VMT0NLCisgICAgaWYgKGlucyhkLCAiRl9VTE9DSyIsIChsb25nKUZfVUxPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX1RFU1QKKyAgICBpZiAoaW5zKGQsICJGX1RFU1QiLCAobG9uZylGX1RFU1QpKSByZXR1cm4gLTE7CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfU1BBV05WCiAjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKICAgICBpZiAoaW5zKGQsICJQX1dBSVQiLCAobG9uZylQX1dBSVQpKSByZXR1cm4gLTE7CkBAIC04Mzg3LDYgKzExNTc2LDY0IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisgICAgaWYgKGlucyhkLCAiU0NIRURfT1RIRVIiLCAobG9uZylTQ0hFRF9PVEhFUikpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9GSUZPIiwgKGxvbmcpU0NIRURfRklGTykpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9SUiIsIChsb25nKVNDSEVEX1JSKSkgcmV0dXJuIC0xOworI2lmZGVmIFNDSEVEX1NQT1JBRElDCisgICAgaWYgKGlucyhkLCAiU0NIRURfU1BPUkFESUMiLCAobG9uZylTQ0hFRF9TUE9SQURJQykgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfQkFUQ0gKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9CQVRDSCIsIChsb25nKVNDSEVEX0JBVENIKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfSURMRQorICAgIGlmIChpbnMoZCwgIlNDSEVEX0lETEUiLCAobG9uZylTQ0hFRF9JRExFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfUkVTRVRfT05fRk9SSworICAgIGlmIChpbnMoZCwgIlNDSEVEX1JFU0VUX09OX0ZPUksiLCAobG9uZylTQ0hFRF9SRVNFVF9PTl9GT1JLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfU1lTCisgICAgaWYgKGlucyhkLCAiU0NIRURfU1lTIiwgKGxvbmcpU0NIRURfU1lTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfSUEKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9JQSIsIChsb25nKVNDSEVEX0lBKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfRlNTCisgICAgaWYgKGlucyhkLCAiU0NIRURfRlNTIiwgKGxvbmcpU0NIRURfRlNTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfRlgKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9GWCIsIChsb25nKVNDSEVEX0ZTUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBVU0VfWEFUVFJTCisgICAgaWYgKGlucyhkLCAiWEFUVFJfQ1JFQVRFIiwgKGxvbmcpWEFUVFJfQ1JFQVRFKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlhBVFRSX1JFUExBQ0UiLCAobG9uZylYQVRUUl9SRVBMQUNFKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlhBVFRSX1NJWkVfTUFYIiwgKGxvbmcpWEFUVFJfU0laRV9NQVgpKSByZXR1cm4gLTE7CisjZW5kaWYKKworI2lmZGVmIFJUTERfTEFaWQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0xBWlkpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX05PVworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PVykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfR0xPQkFMCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9MT0NBTAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0xPQ0FMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9OT0RFTEVURQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PREVMRVRFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9OT0xPQUQKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT0xPQUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX0RFRVBCSU5ECisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfREVFUEJJTkQpKSByZXR1cm4gLTE7CisjZW5kaWYKKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAgICAgaWYgKGluc2VydHZhbHVlcyhkKSkgcmV0dXJuIC0xOwogI2VuZGlmCkBAIC04NDIwLDEwICsxMTY2NywxMzggQEAKIH07CiAKIAorc3RhdGljIGNoYXIgKmhhdmVfZnVuY3Rpb25zW10gPSB7CisKKyNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgICJIQVZFX0ZBQ0NFU1NBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIRElSCisgICAgIkhBVkVfRkNIRElSIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICAiSEFWRV9GQ0hNT0QiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgIkhBVkVfRkNITU9EQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgICJIQVZFX0ZDSE9XTiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgICJIQVZFX0ZFWEVDVkUiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgICJIQVZFX0ZET1BFTkRJUiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgIkhBVkVfRlBBVEhDT05GIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgIkhBVkVfRlNUQVRBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICAiSEFWRV9GU1RBVFZGUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgIkhBVkVfRlRSVU5DQVRFIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVVRJTUVOUworICAgICJIQVZFX0ZVVElNRU5TIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVVRJTUVTCisgICAgIkhBVkVfRlVUSU1FUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlVUSU1FU0FUCisgICAgIkhBVkVfRlVUSU1FU0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSU5LQVQKKyAgICAiSEFWRV9MSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xDSEZMQUdTCisgICAgIkhBVkVfTENIRkxBR1MiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xDSE1PRAorICAgICJIQVZFX0xDSE1PRCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTENIT1dOCisgICAgIkhBVkVfTENIT1dOIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MU1RBVAorICAgICJIQVZFX0xTVEFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MVVRJTUVTCisgICAgIkhBVkVfTFVUSU1FUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtESVJBVAorICAgICJIQVZFX01LRElSQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgIkhBVkVfTUtGSUZPQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICAiSEFWRV9NS05PREFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICAiSEFWRV9PUEVOQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICAiSEFWRV9SRUFETElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRU5BTUVBVAorICAgICJIQVZFX1JFTkFNRUFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWU1MSU5LQVQKKyAgICAiSEFWRV9TWU1MSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgIkhBVkVfVU5MSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgICJIQVZFX1VUSU1FTlNBVCIsCisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAiTVNfV0lORE9XUyIsCisjZW5kaWYKKworICAgIE5VTEwKK307CisKKwogUHlNT0RJTklUX0ZVTkMKIElOSVRGVU5DKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm0sICp2OworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIGNoYXIgKip0cmFjZTsKIAogI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2luMzJfY2FuX3N5bWxpbmsgPSBlbmFibGVfc3ltbGluaygpOwpAQCAtODQ1NSw2ICsxMTgzMCwxMSBAQAogI2VuZGlmCiAKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICB3YWl0aWRfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi53YWl0aWRfcmVzdWx0IjsKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmV2FpdGlkUmVzdWx0VHlwZSwgJndhaXRpZF9yZXN1bHRfZGVzYyk7CisjZW5kaWYKKwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc3RhdF9yZXN1bHQiOwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLmZpZWxkc1s3XS5uYW1lID0gUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQ7CiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MuZmllbGRzWzhdLm5hbWUgPSBQeVN0cnVjdFNlcXVlbmNlX1VubmFtZWRGaWVsZDsKQEAgLTg0NzQsMTMgKzExODU0LDM4IEBACiAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSA2MDsgLyogbWFnaWMgZmFsbGJhY2sgdmFsdWU7IG1heSBiZSBib2d1cyAqLwogIyAgZW5kaWYKICNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorICAgICAgICBzY2hlZF9wYXJhbV9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc2NoZWRfcGFyYW0iOworICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTY2hlZFBhcmFtVHlwZSwgJnNjaGVkX3BhcmFtX2Rlc2MpOworICAgICAgICBTY2hlZFBhcmFtVHlwZS50cF9uZXcgPSBzY2hlZF9wYXJhbV9uZXc7CisjZW5kaWYKKworICAgICAgICAvKiBpbml0aWFsaXplIFRlcm1pbmFsU2l6ZV9pbmZvICovCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRlcm1pbmFsU2l6ZVR5cGUsICZUZXJtaW5hbFNpemVfZGVzYyk7CiAgICAgfQorI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJldhaXRpZFJlc3VsdFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAid2FpdGlkX3Jlc3VsdCIsIChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKKyNlbmRpZgogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU3RhdFJlc3VsdFR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RhdF9yZXN1bHQiLCAoUHlPYmplY3QqKSAmU3RhdFJlc3VsdFR5cGUpOwogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU3RhdFZGU1Jlc3VsdFR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RhdHZmc19yZXN1bHQiLAogICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSAmU3RhdFZGU1Jlc3VsdFR5cGUpOwotICAgIGluaXRpYWxpemVkID0gMTsKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKyAgICBQeV9JTkNSRUYoJlNjaGVkUGFyYW1UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInNjaGVkX3BhcmFtIiwgKFB5T2JqZWN0ICopJlNjaGVkUGFyYW1UeXBlKTsKKyNlbmRpZgorCisgICAgdGltZXNfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi50aW1lc19yZXN1bHQiOworICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRpbWVzUmVzdWx0VHlwZSwgJnRpbWVzX3Jlc3VsdF9kZXNjKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRpbWVzX3Jlc3VsdCIsIChQeU9iamVjdCAqKSZUaW1lc1Jlc3VsdFR5cGUpOworCisgICAgdW5hbWVfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi51bmFtZV9yZXN1bHQiOworICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlVuYW1lUmVzdWx0VHlwZSwgJnVuYW1lX3Jlc3VsdF9kZXNjKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInVuYW1lX3Jlc3VsdCIsIChQeU9iamVjdCAqKSZVbmFtZVJlc3VsdFR5cGUpOwogCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgLyoKQEAgLTg0OTAsNyArMTE4OTUsNyBAQAogICAgICAqIGN1cnJlbnRseSBhY3RpdmUgcGxhdGZvcm0uCiAgICAgICoKICAgICAgKiBUaGlzIGJsb2NrIGFsbG93IG9uZSB0byB1c2UgYSBweXRob24gYmluYXJ5IHRoYXQgd2FzIGJ1aWxkIG9uCi0gICAgICogT1NYIDEwLjQgb24gT1NYIDEwLjMsIHdpdGhvdXQgbG9vc2luZyBhY2Nlc3MgdG8gbmV3IEFQSXMgb24KKyAgICAgKiBPU1ggMTAuNCBvbiBPU1ggMTAuMywgd2l0aG91dCBsb3NpbmcgYWNjZXNzIHRvIG5ldyBBUElzIG9uCiAgICAgICogT1NYIDEwLjQuCiAgICAgICovCiAjaWZkZWYgSEFWRV9GU1RBVFZGUwpAQCAtODUxOSw2ICsxMTkyNCw0MyBAQAogCiAKICNlbmRpZiAvKiBfX0FQUExFX18gKi8KKworICAgIFB5X0lOQ1JFRigmVGVybWluYWxTaXplVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0ZXJtaW5hbF9zaXplIiwgKFB5T2JqZWN0KikgJlRlcm1pbmFsU2l6ZVR5cGUpOworCisgICAgYmlsbGlvbiA9IFB5TG9uZ19Gcm9tTG9uZygxMDAwMDAwMDAwKTsKKyAgICBpZiAoIWJpbGxpb24pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogc3VwcHJlc3MgImZ1bmN0aW9uIG5vdCB1c2VkIiB3YXJuaW5ncyAqLworICAgIHsKKyAgICBpbnQgaWdub3JlZDsKKyAgICBmZF9zcGVjaWZpZWQoIiIsIC0xKTsKKyAgICBmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCIiLCAxKTsKKyAgICBkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG1vZCIsIERFRkFVTFRfRElSX0ZELCAxKTsKKyAgICBkaXJfZmRfY29udmVydGVyKFB5X05vbmUsICZpZ25vcmVkKTsKKyAgICBkaXJfZmRfdW5hdmFpbGFibGUoUHlfTm9uZSwgJmlnbm9yZWQpOworICAgIH0KKworICAgIC8qCisgICAgICogcHJvdmlkZSBsaXN0IG9mIGxvY2FsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucworICAgICAqIHNvIG9zLnB5IGNhbiBwb3B1bGF0ZSBzdXBwb3J0XyogbGlzdHMKKyAgICAgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAodHJhY2UgPSBoYXZlX2Z1bmN0aW9uczsgKnRyYWNlOyB0cmFjZSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKCp0cmFjZSwgc3RybGVuKCp0cmFjZSksIE5VTEwpOworICAgICAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdW5pY29kZSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIH0KKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9oYXZlX2Z1bmN0aW9ucyIsIGxpc3QpOworCisgICAgaW5pdGlhbGl6ZWQgPSAxOworCiAgICAgcmV0dXJuIG07CiAKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggNGI5Njg3YS4uM2Y1OWYwZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTEwMCwxNiArMTAwLDE3IEBACiBzZXRfZXJyb3IoeG1scGFyc2VvYmplY3QgKnNlbGYsIGVudW0gWE1MX0Vycm9yIGNvZGUpCiB7CiAgICAgUHlPYmplY3QgKmVycjsKLSAgICBjaGFyIGJ1ZmZlclsyNTZdOworICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgWE1MX1BhcnNlciBwYXJzZXIgPSBzZWxmLT5pdHNlbGY7CiAgICAgaW50IGxpbmVubyA9IFhNTF9HZXRFcnJvckxpbmVOdW1iZXIocGFyc2VyKTsKICAgICBpbnQgY29sdW1uID0gWE1MX0dldEVycm9yQ29sdW1uTnVtYmVyKHBhcnNlcik7CiAKLSAgICAvKiBUaGVyZSBpcyBubyByaXNrIG9mIG92ZXJmbG93aW5nIHRoaXMgYnVmZmVyLCBzaW5jZQotICAgICAgIGV2ZW4gZm9yIDY0LWJpdCBpbnRlZ2VycywgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZS4gKi8KLSAgICBzcHJpbnRmKGJ1ZmZlciwgIiUuMjAwczogbGluZSAlaSwgY29sdW1uICVpIiwKLSAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhjb2RlKSwgbGluZW5vLCBjb2x1bW4pOwotICAgIGVyciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihFcnJvck9iamVjdCwgInMiLCBidWZmZXIpOworICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlaSwgY29sdW1uICVpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRXJyb3JTdHJpbmcoY29kZSksIGxpbmVubywgY29sdW1uKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVyciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihFcnJvck9iamVjdCwgIk8iLCBidWZmZXIpOworICAgIFB5X0RFQ1JFRihidWZmZXIpOwogICAgIGlmICggIGVyciAhPSBOVUxMCiAgICAgICAgICAgJiYgc2V0X2Vycm9yX2F0dHIoZXJyLCAiY29kZSIsIGNvZGUpCiAgICAgICAgICAgJiYgc2V0X2Vycm9yX2F0dHIoZXJyLCAib2Zmc2V0IiwgY29sdW1uKQpAQCAtODQyLDkgKzg0Myw5IEBACiB7CiAgICAgaW50IHJ2ID0gMTsKICAgICBQeU9iamVjdCAqcmVhZG1ldGhvZCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKLQotICAgIHJlYWRtZXRob2QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGYsICJyZWFkIik7CisgICAgcmVhZG1ldGhvZCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZCk7CiAgICAgaWYgKHJlYWRtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgaGF2ZSAncmVhZCcgYXR0cmlidXRlIik7CkBAIC0xMDMyLDE2ICsxMDMzLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogeG1scGFyc2VfVXNlRm9yZWlnbkRURCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmZsYWdvYmogPSBOVUxMOwogICAgIGludCBmbGFnID0gMTsKICAgICBlbnVtIFhNTF9FcnJvciByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOlVzZUZvcmVpZ25EVEQiLCAmZmxhZ29iaikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZmxhZ29iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGZsYWcgPSBQeU9iamVjdF9Jc1RydWUoZmxhZ29iaik7Ci0gICAgICAgIGlmIChmbGFnIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByYyA9IFhNTF9Vc2VGb3JlaWduRFREKHNlbGYtPml0c2VsZiwgZmxhZyA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFKTsKICAgICBpZiAocmMgIT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZWxmLCByYyk7CkBAIC0xMTA0LDE3ICsxMDk5LDIyIEBACiAgICAgUHlVbmljb2RlT2JqZWN0ICpfdV9zdHJpbmcgPSBOVUxMOwogICAgIGludCByZXN1bHQgPSAwOwogICAgIGludCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICAvKiBZZXMsIHN1cHBvcnRzIG9ubHkgOGJpdCBlbmNvZGluZ3MgKi8KICAgICBfdV9zdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopCiAgICAgICAgIFB5VW5pY29kZV9EZWNvZGUodGVtcGxhdGVfYnVmZmVyLCAyNTYsIG5hbWUsICJyZXBsYWNlIik7CiAKLSAgICBpZiAoX3Vfc3RyaW5nID09IE5VTEwpCisgICAgaWYgKF91X3N0cmluZyA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShfdV9zdHJpbmcpID09IC0xKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKF91X3N0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKF91X3N0cmluZyk7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgLyogU3R1cGlkIHRvIGFjY2VzcyBkaXJlY3RseSwgYnV0IGZhc3QgKi8KLSAgICAgICAgUHlfVU5JQ09ERSBjID0gX3Vfc3RyaW5nLT5zdHJbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoYyA9PSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKICAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IC0xOwogICAgICAgICBlbHNlCkBAIC0xMjM4LDExICsxMjM4LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogeG1scGFyc2VfZ2V0YXR0cm8oeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqKQogewotICAgIFB5X1VOSUNPREUgKm5hbWU7CisgICAgUHlfVUNTNCBmaXJzdF9jaGFyOwogICAgIGludCBoYW5kbGVybnVtID0gLTE7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKICAgICAgICAgZ290byBnZW5lcmljOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZW9iaikpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaGFuZGxlcm51bSA9IGhhbmRsZXJuYW1lMmludChuYW1lb2JqKTsKIApAQCAtMTI1NCw4ICsxMjU2LDggQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaik7Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ0UnKSB7CisgICAgZmlyc3RfY2hhciA9IFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZW9iaiwgMCk7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ0UnKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiRXJyb3JDb2RlIikgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEVycm9yQ29kZShzZWxmLT5pdHNlbGYpKTsKQEAgLTEyNjksNyArMTI3MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRFcnJvckJ5dGVJbmRleChzZWxmLT5pdHNlbGYpKTsKICAgICB9Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ0MnKSB7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ0MnKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiQ3VycmVudExpbmVOdW1iZXIiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0Q3VycmVudExpbmVOdW1iZXIoc2VsZi0+aXRzZWxmKSk7CkBAIC0xMjgwLDcgKzEyODIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0Q3VycmVudEJ5dGVJbmRleChzZWxmLT5pdHNlbGYpKTsKICAgICB9Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ2InKSB7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ2InKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiYnVmZmVyX3NpemUiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc2VsZi0+YnVmZmVyX3NpemUpOwogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZW9iaiwgImJ1ZmZlcl90ZXh0IikgPT0gMCkKQEAgLTE2NzQsNyArMTY3Niw2IEBACiAgICAgUHlPYmplY3QgKmVycm9yc19tb2R1bGU7CiAgICAgUHlPYmplY3QgKm1vZGVsbW9kX25hbWU7CiAgICAgUHlPYmplY3QgKm1vZGVsX21vZHVsZTsKLSAgICBQeU9iamVjdCAqdmVyc2lvbjsKICAgICBQeU9iamVjdCAqc3lzX21vZHVsZXM7CiAgICAgUHlPYmplY3QgKnRtcG51bSwgKnRtcHN0cjsKICAgICBQeU9iamVjdCAqY29kZXNfZGljdDsKQEAgLTE3MTEsMTAgKzE3MTIsNiBAQAogICAgIFB5X0lOQ1JFRigmWG1scGFyc2V0eXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlhNTFBhcnNlclR5cGUiLCAoUHlPYmplY3QgKikgJlhtbHBhcnNldHlwZSk7CiAKLSAgICB2ZXJzaW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUFlfVkVSU0lPTik7Ci0gICAgaWYgKCF2ZXJzaW9uKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fdmVyc2lvbl9fIiwgdmVyc2lvbik7CiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkVYUEFUX1ZFUlNJT04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIFhNTF9FeHBhdFZlcnNpb24oKSk7CiAgICAgewpAQCAtMTkwNyw2ICsxOTA0LDcgQEAKICAgICBjYXBpLlNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBYTUxfU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcjsKICAgICBjYXBpLlNldFVua25vd25FbmNvZGluZ0hhbmRsZXIgPSBYTUxfU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlcjsKICAgICBjYXBpLlNldFVzZXJEYXRhID0gWE1MX1NldFVzZXJEYXRhOworICAgIGNhcGkuU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBYTUxfU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXI7CiAKICAgICAvKiBleHBvcnQgdXNpbmcgY2Fwc3VsZSAqLwogICAgIGNhcGlfb2JqZWN0ID0gUHlDYXBzdWxlX05ldygmY2FwaSwgUHlFeHBhdF9DQVBTVUxFX05BTUUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weXRob24uYyBiL01vZHVsZXMvcHl0aG9uLmMKaW5kZXggMmJlNjlmMS4uMmMwOGI5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weXRob24uYworKysgYi9Nb2R1bGVzL3B5dGhvbi5jCkBAIC00Myw2ICs0Myw3IEBACiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICBhcmd2X2NvcHlbaV0gPSBfUHlfY2hhcjJ3Y2hhcihhcmd2W2ldLCBOVUxMKTsKICAgICAgICAgaWYgKCFhcmd2X2NvcHlbaV0pIHsKKyAgICAgICAgICAgIGZyZWUob2xkbG9jKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDRkNTRkYWQuLmE3MTA2NTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTIzNSwxMCArMjM1LDkgQEAKICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICJzZXRfJS41MHMoZnVuYyk6IGFyZ3VtZW50IG5vdCBjYWxsYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZnVuY25hbWUpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBidWYpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInNldF8lLjUwcyhmdW5jKTogYXJndW1lbnQgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtODkyLDcgKzg5MSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIF9fQVBQTEVfXwotICAgIC8qIHRoZSBsaWJlZGl0IHJlYWRsaW5lIGVtdWxhdGlvbiByZXNldHMga2V5IGJpbmRpbmdzIGV0YyAKKyAgICAvKiB0aGUgbGliZWRpdCByZWFkbGluZSBlbXVsYXRpb24gcmVzZXRzIGtleSBiaW5kaW5ncyBldGMKICAgICAgKiB3aGVuIGNhbGxpbmcgcmxfaW5pdGlhbGl6ZS4gIFNvIGNhbGwgaXQgdXBmcm9udAogICAgICAqLwogICAgIGlmICh1c2luZ19saWJlZGl0X2VtdWxhdGlvbikKQEAgLTkzMiwxMSArOTMxLDExIEBACiAgICAgICovCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgaWYgKHVzaW5nX2xpYmVkaXRfZW11bGF0aW9uKQotCXJsX3JlYWRfaW5pdF9maWxlKE5VTEwpOworICAgICAgICBybF9yZWFkX2luaXRfZmlsZShOVUxMKTsKICAgICBlbHNlCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAgICAgICAgIHJsX2luaXRpYWxpemUoKTsKLSAgICAKKwogICAgIFJFU1RPUkVfTE9DQUxFKHNhdmVkX2xvY2FsZSkKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZXNvdXJjZS5jIGIvTW9kdWxlcy9yZXNvdXJjZS5jCmluZGV4IDE4NzVlNDguLjFhZWQ0OTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVzb3VyY2UuYworKysgYi9Nb2R1bGVzL3Jlc291cmNlLmMKQEAgLTE4LDggKzE4LDYgQEAKIAogI2RlZmluZSBkb3VibGV0aW1lKFRWKSAoKGRvdWJsZSkoVFYpLnR2X3NlYyArIChUVikudHZfdXNlYyAqIDAuMDAwMDAxKQogCi1zdGF0aWMgUHlPYmplY3QgKlJlc291cmNlRXJyb3I7Ci0KIFB5RG9jX1NUUlZBUihzdHJ1Y3RfcnVzYWdlX19kb2NfXywKICJzdHJ1Y3RfcnVzYWdlOiBSZXN1bHQgZnJvbSBnZXRydXNhZ2UuXG5cbiIKICJUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2ZcbiIKQEAgLTczLDcgKzcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB3aG8gcGFyYW1ldGVyIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUmVzb3VyY2VFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMjUsNyArMTIzLDcgQEAKICAgICB9CiAKICAgICBpZiAoZ2V0cmxpbWl0KHJlc291cmNlLCAmcmwpID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhSZXNvdXJjZUVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE4Myw3ICsxODEsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGxvd2VkIHRvIHJhaXNlIG1heGltdW0gbGltaXQiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFJlc291cmNlRXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMjQ2LDEyICsyNDQsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCi0gICAgaWYgKFJlc291cmNlRXJyb3IgPT0gTlVMTCkgewotICAgICAgICBSZXNvdXJjZUVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJyZXNvdXJjZS5lcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihSZXNvdXJjZUVycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUmVzb3VyY2VFcnJvcik7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RSVXNhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfcnVzYWdlX2Rlc2MpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggNzg2M2FhYS4uMDZhYmNmMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC03LDYgKzcsMTQgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxzdHJ1Y3RtZW1iZXIuaD4KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPHN5cy9kZXZwb2xsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2VuZGlmCisKICNpZmRlZiBfX0FQUExFX18KICAgICAvKiBQZXJmb3JtIHJ1bnRpbWUgdGVzdGluZyBmb3IgYSBicm9rZW4gcG9sbCBvbiBPU1ggdG8gbWFrZSBpdCBlYXNpZXIKICAgICAgKiB0byB1c2UgdGhlIHNhbWUgYmluYXJ5IG9uIG11bHRpcGxlIHJlbGVhc2VzIG9mIHRoZSBPUy4KQEAgLTU0LDggKzYyLDYgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0ICpTZWxlY3RFcnJvcjsKLQogLyogbGlzdCBvZiBQeXRob24gb2JqZWN0cyBhbmQgdGhlaXIgZmlsZSBkZXNjcmlwdG9yICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QgKm9iajsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvd25lZCByZWZlcmVuY2UgKi8KQEAgLTE5OCw5ICsyMDQsNyBAQAogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0b3V0ID0gUHlfTm9uZTsKICAgICBmZF9zZXQgaWZkc2V0LCBvZmRzZXQsIGVmZHNldDsKLSAgICBkb3VibGUgdGltZW91dDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKLSAgICBsb25nIHNlY29uZHM7CiAgICAgaW50IGltYXgsIG9tYXgsIGVtYXgsIG1heDsKICAgICBpbnQgbjsKIApAQCAtMjE3LDE4ICsyMjEsMzEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZSh0b3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHRpbWVfdCBzZWM7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0b3V0LCAmc2VjLCAmdHYudHZfdXNlYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPiAoZG91YmxlKUxPTkdfTUFYKSB7CisgICAgICAgIGFzc2VydChzaXplb2YodHYudHZfc2VjKSA9PSBzaXplb2YobG9uZykpOworI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORworICAgICAgICBpZiAoc2VjID4gTE9OR19NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHBlcmlvZCB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgc2Vjb25kcyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHRpbWVvdXQgPSB0aW1lb3V0IC0gKGRvdWJsZSlzZWNvbmRzOwotICAgICAgICB0di50dl9zZWMgPSBzZWNvbmRzOwotICAgICAgICB0di50dl91c2VjID0gKGxvbmcpKHRpbWVvdXQgKiAxRTYpOworI2VuZGlmCisgICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXNlYzsKKyNlbHNlCisgICAgICAgIC8qIDY0LWJpdCBPUyBYIGhhcyBzdHJ1Y3QgdGltZXZhbC50dl91c2VjIGFzIGFuIGludCAoYW5kIHRodXMgc3RpbGwgNAorICAgICAgICAgICBieXRlcyBhcyByZXF1aXJlZCksIGJ1dCBubyBsb25nZXIgZGVmaW5lZCBieSBhIGxvbmcuICovCisgICAgICAgIGxvbmcgdHZfdXNlYzsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRvdXQsICZ0di50dl9zZWMsICZ0dl91c2VjKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0di50dl91c2VjID0gdHZfdXNlYzsKKyNlbmRpZgorICAgICAgICBpZiAodHYudHZfc2VjIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQogCkBAIC0yNjcsMTEgKzI4NCwxMSBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChuID09IFNPQ0tFVF9FUlJPUikgewotICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihTZWxlY3RFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgfQogI2Vsc2UKICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFNlbGVjdEVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIH0KICNlbmRpZgogICAgIGVsc2UgewpAQCAtNDIyLDcgKzQzOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfR2V0SXRlbShzZWxmLT5kaWN0LCBrZXkpID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFTk9FTlQ7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTIyLDcgKzUzOSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFNlbGVjdEVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTY0OCw2ICs2NjUsMzM5IEBACiAgICAgcG9sbF9tZXRob2RzLCAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCiB9OwogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBmZF9kZXZwb2xsOworICAgIGludCBtYXhfbl9mZHM7CisgICAgaW50IG5fZmRzOworICAgIHN0cnVjdCBwb2xsZmQgKmZkczsKK30gZGV2cG9sbE9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXZwb2xsX1R5cGU7CisKK3N0YXRpYyBpbnQgZGV2cG9sbF9mbHVzaChkZXZwb2xsT2JqZWN0ICpzZWxmKQoreworICAgIGludCBzaXplLCBuOworCisgICAgaWYgKCFzZWxmLT5uX2ZkcykgcmV0dXJuIDA7CisKKyAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKnNlbGYtPm5fZmRzOworICAgIHNlbGYtPm5fZmRzID0gMDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKG4gPT0gLTEgKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobiA8IHNpemUpIHsKKyAgICAgICAgLyoKKyAgICAgICAgKiogRGF0YSB3cml0ZWQgdG8gL2Rldi9wb2xsIGlzIGEgYmluYXJ5IGRhdGEgc3RydWN0dXJlLiBJdCBpcyBub3QKKyAgICAgICAgKiogY2xlYXIgd2hhdCB0byBkbyBpZiBhIHBhcnRpYWwgd3JpdGUgb2NjdXJyZWQuIEZvciBub3csIHJhaXNlCisgICAgICAgICoqIGFuIGV4Y2VwdGlvbiBhbmQgc2VlIGlmIHdlIGFjdHVhbGx5IGZvdW5kIHRoaXMgcHJvYmxlbSBpbgorICAgICAgICAqKiB0aGUgd2lsZC4KKyAgICAgICAgKiogU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2Mzk3LgorICAgICAgICAqLworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwgImZhaWxlZCB0byB3cml0ZSBhbGwgcG9sbGZkcy4gIgorICAgICAgICAgICAgICAgICJQbGVhc2UsIHJlcG9ydCBhdCBodHRwOi8vYnVncy5weXRob24ub3JnLy4gIgorICAgICAgICAgICAgICAgICJEYXRhIHRvIHJlcG9ydDogU2l6ZSB0cmllZDogJWQsIGFjdHVhbCBzaXplIHdyaXR0ZW46ICVkLiIsCisgICAgICAgICAgICAgICAgc2l6ZSwgbik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpbnRlcm5hbF9kZXZwb2xsX3JlZ2lzdGVyKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgcmVtb3ZlKQoreworICAgIFB5T2JqZWN0ICpvOworICAgIGludCBmZCwgZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSSB8IFBPTExPVVQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpyZWdpc3RlciIsICZvLCAmZXZlbnRzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3Iobyk7CisgICAgaWYgKGZkID09IC0xKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZW1vdmUpIHsKKyAgICAgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgICAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IFBPTExSRU1PVkU7CisKKyAgICAgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZmQgPSBmZDsKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IGV2ZW50czsKKworICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9yZWdpc3Rlcl9kb2MsCisicmVnaXN0ZXIoZmQgWywgZXZlbnRtYXNrXSApIC0+IE5vbmVcblxuXAorUmVnaXN0ZXIgYSBmaWxlIGRlc2NyaXB0b3Igd2l0aCB0aGUgcG9sbGluZyBvYmplY3QuXG5cCitmZCAtLSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSBmaWxlbm8oKSBtZXRob2QgcmV0dXJuaW5nIGFuXG5cCisgICAgICBpbnQuXG5cCitldmVudHMgLS0gYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB0byBjaGVjayBmb3IiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfcmVnaXN0ZXIoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX2RldnBvbGxfcmVnaXN0ZXIoc2VsZiwgYXJncywgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX21vZGlmeV9kb2MsCisibW9kaWZ5KGZkWywgZXZlbnRtYXNrXSkgLT4gTm9uZVxuXG5cCitNb2RpZnkgYSBwb3NzaWJsZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9yLlxuXAorZmQgLS0gZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgZmlsZW5vKCkgbWV0aG9kIHJldHVybmluZyBhblxuXAorICAgICAgaW50LlxuXAorZXZlbnRzIC0tIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgdG8gY2hlY2sgZm9yIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX21vZGlmeShkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfZGV2cG9sbF9yZWdpc3RlcihzZWxmLCBhcmdzLCAxKTsKK30KKworCitQeURvY19TVFJWQVIoZGV2cG9sbF91bnJlZ2lzdGVyX2RvYywKKyJ1bnJlZ2lzdGVyKGZkKSAtPiBOb25lXG5cblwKK1JlbW92ZSBhIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0cmFja2VkIGJ5IHRoZSBwb2xsaW5nIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfdW5yZWdpc3RlcihkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbykKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoIG8gKTsKKyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gUE9MTFJFTU9WRTsKKworICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9wb2xsX2RvYywKKyJwb2xsKCBbdGltZW91dF0gKSAtPiBsaXN0IG9mIChmZCwgZXZlbnQpIDItdHVwbGVzXG5cblwKK1BvbGxzIHRoZSBzZXQgb2YgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3JzLCByZXR1cm5pbmcgYSBsaXN0IGNvbnRhaW5pbmcgXG5cCithbnkgZGVzY3JpcHRvcnMgdGhhdCBoYXZlIGV2ZW50cyBvciBlcnJvcnMgdG8gcmVwb3J0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF9wb2xsKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHN0cnVjdCBkdnBvbGwgZHZwOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0b3V0ID0gTlVMTDsKKyAgICBpbnQgcG9sbF9yZXN1bHQsIGk7CisgICAgbG9uZyB0aW1lb3V0OworICAgIFB5T2JqZWN0ICp2YWx1ZSwgKm51bTEsICpudW0yOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KKyAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICAgICAgdGltZW91dCA9IC0xOworICAgIGVsc2UgaWYgKCFQeU51bWJlcl9DaGVjayh0b3V0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0b3V0ID0gUHlOdW1iZXJfTG9uZyh0b3V0KTsKKyAgICAgICAgaWYgKCF0b3V0KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHRpbWVvdXQgPSBQeUxvbmdfQXNMb25nKHRvdXQpOworICAgICAgICBQeV9ERUNSRUYodG91dCk7CisgICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoKHRpbWVvdXQgPCAtMSkgfHwgKHRpbWVvdXQgPiBJTlRfTUFYKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkdnAuZHBfZmRzID0gc2VsZi0+ZmRzOworICAgIGR2cC5kcF9uZmRzID0gc2VsZi0+bWF4X25fZmRzOworICAgIGR2cC5kcF90aW1lb3V0ID0gdGltZW91dDsKKworICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHBvbGxfcmVzdWx0ID0gaW9jdGwoc2VsZi0+ZmRfZGV2cG9sbCwgRFBfUE9MTCwgJmR2cCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBidWlsZCB0aGUgcmVzdWx0IGxpc3QgKi8KKworICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CisgICAgaWYgKCFyZXN1bHRfbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7CisgICAgICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7CisgICAgICAgICAgICBudW0yID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5yZXZlbnRzKTsKKyAgICAgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0yKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgbnVtMSwgbnVtMik7CisgICAgICAgICAgICBQeV9ERUNSRUYobnVtMSk7CisgICAgICAgICAgICBQeV9ERUNSRUYobnVtMik7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHRfbGlzdDsKKworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYocmVzdWx0X2xpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgZGV2cG9sbF9tZXRob2RzW10gPSB7CisgICAgeyJyZWdpc3RlciIsICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9yZWdpc3RlciwKKyAgICAgTUVUSF9WQVJBUkdTLCAgZGV2cG9sbF9yZWdpc3Rlcl9kb2N9LAorICAgIHsibW9kaWZ5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfbW9kaWZ5LAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX21vZGlmeV9kb2N9LAorICAgIHsidW5yZWdpc3RlciIsICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfdW5yZWdpc3RlciwKKyAgICAgTUVUSF9PLCAgICAgICAgZGV2cG9sbF91bnJlZ2lzdGVyX2RvY30sCisgICAgeyJwb2xsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9wb2xsLAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX3BvbGxfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIGRldnBvbGxPYmplY3QgKgorbmV3RGV2UG9sbE9iamVjdCh2b2lkKQoreworICAgIGRldnBvbGxPYmplY3QgKnNlbGY7CisgICAgaW50IGZkX2RldnBvbGwsIGxpbWl0X3Jlc3VsdDsKKyAgICBzdHJ1Y3QgcG9sbGZkICpmZHM7CisgICAgc3RydWN0IHJsaW1pdCBsaW1pdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAvKgorICAgICoqIElmIHdlIHRyeSB0byBwcm9jZXNzIG1vcmUgdGhhdCBnZXRybGltaXQoKQorICAgICoqIGZkcywgdGhlIGtlcm5lbCB3aWxsIGdpdmUgYW4gZXJyb3IsIHNvCisgICAgKiogd2Ugc2V0IHRoZSBsaW1pdCBoZXJlLiBJdCBpcyBhIGR5bmFtaWMKKyAgICAqKiB2YWx1ZSwgYmVjYXVzZSB3ZSBjYW4gY2hhbmdlIHJsaW1pdCgpIGFueXRpbWUuCisgICAgKi8KKyAgICBsaW1pdF9yZXN1bHQgPSBnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJmxpbWl0KTsKKyAgICBpZiAobGltaXRfcmVzdWx0ICE9IC0xKQorICAgICAgICBmZF9kZXZwb2xsID0gb3BlbigiL2Rldi9wb2xsIiwgT19SRFdSKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGxpbWl0X3Jlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoZmRfZGV2cG9sbCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgIi9kZXYvcG9sbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmZHMgPSBQeU1lbV9ORVcoc3RydWN0IHBvbGxmZCwgbGltaXQucmxpbV9jdXIpOworICAgIGlmIChmZHMgPT0gTlVMTCkgeworICAgICAgICBjbG9zZShmZF9kZXZwb2xsKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhkZXZwb2xsT2JqZWN0LCAmZGV2cG9sbF9UeXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGNsb3NlKGZkX2RldnBvbGwpOworICAgICAgICBQeU1lbV9ERUwoZmRzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmZkX2RldnBvbGwgPSBmZF9kZXZwb2xsOworICAgIHNlbGYtPm1heF9uX2ZkcyA9IGxpbWl0LnJsaW1fY3VyOworICAgIHNlbGYtPm5fZmRzID0gMDsKKyAgICBzZWxmLT5mZHMgPSBmZHM7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIHZvaWQKK2RldnBvbGxfZGVhbGxvYyhkZXZwb2xsT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBjbG9zZShzZWxmLT5mZF9kZXZwb2xsKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fREVMKHNlbGYtPmZkcyk7CisKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgZGV2cG9sbF9UeXBlID0geworICAgIC8qIFRoZSBvYl90eXBlIGZpZWxkIG11c3QgYmUgaW5pdGlhbGl6ZWQgaW4gdGhlIG1vZHVsZSBpbml0IGZ1bmN0aW9uCisgICAgICogdG8gYmUgcG9ydGFibGUgdG8gV2luZG93cyB3aXRob3V0IHVzaW5nIEMrKy4gKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAic2VsZWN0LmRldnBvbGwiLCAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoZGV2cG9sbE9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZGV2cG9sbF9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICBkZXZwb2xsX21ldGhvZHMsICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KK307CisjZW5kaWYgIC8qIEhBVkVfU1lTX0RFVlBPTExfSCAqLworCisKKwogUHlEb2NfU1RSVkFSKHBvbGxfZG9jLAogIlJldHVybnMgYSBwb2xsaW5nIG9iamVjdCwgd2hpY2ggc3VwcG9ydHMgcmVnaXN0ZXJpbmcgYW5kXG5cCiB1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuIHBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4iKTsKQEAgLTY1OCw2ICsxMDA4LDE5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld1BvbGxPYmplY3QoKTsKIH0KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorUHlEb2NfU1RSVkFSKGRldnBvbGxfZG9jLAorIlJldHVybnMgYSBwb2xsaW5nIG9iamVjdCwgd2hpY2ggc3VwcG9ydHMgcmVnaXN0ZXJpbmcgYW5kXG5cCit1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuIHBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NlbGVjdF9kZXZwb2xsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdEZXZQb2xsT2JqZWN0KCk7Cit9CisjZW5kaWYKKworCiAjaWZkZWYgX19BUFBMRV9fCiAvKgogICogT24gc29tZSBzeXN0ZW1zIHBvbGwoKSBzZXRzIGVycm5vIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4gV2UgdGVzdApAQCAtNzMzLDIwICsxMDk2LDEwIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdQeUVwb2xsX09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzaXplaGludCwgU09DS0VUIGZkKQorbmV3UHlFcG9sbF9PYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgc2l6ZWhpbnQsIGludCBmbGFncywgU09DS0VUIGZkKQogewogICAgIHB5RXBvbGxfT2JqZWN0ICpzZWxmOwogCi0gICAgaWYgKHNpemVoaW50ID09IC0xKSB7Ci0gICAgICAgIHNpemVoaW50ID0gRkRfU0VUU0laRS0xOwotICAgIH0KLSAgICBlbHNlIGlmIChzaXplaGludCA8IDEpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAic2l6ZWhpbnQgbXVzdCBiZSBncmVhdGVyIHplcm8sIGdvdCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICBzaXplaGludCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CiAgICAgc2VsZiA9IChweUVwb2xsX09iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQpAQCAtNzU0LDYgKzExMDcsMTEgQEAKIAogICAgIGlmIChmZCA9PSAtMSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9FUE9MTF9DUkVBVEUxCisgICAgICAgIGlmIChmbGFncykKKyAgICAgICAgICAgIHNlbGYtPmVwZmQgPSBlcG9sbF9jcmVhdGUxKGZsYWdzKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIHNlbGYtPmVwZmQgPSBlcG9sbF9jcmVhdGUoc2l6ZWhpbnQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0KQEAgLTc2Miw3ICsxMTIwLDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPmVwZmQgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKQEAgLTc3MiwxNCArMTEzMCwxOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXBvbGxfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGludCBzaXplaGludCA9IC0xOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2l6ZWhpbnQiLCBOVUxMfTsKKyAgICBpbnQgZmxhZ3MgPSAwLCBzaXplaGludCA9IEZEX1NFVFNJWkUgLSAxOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2l6ZWhpbnQiLCAiZmxhZ3MiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aTplcG9sbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZWhpbnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aWk6ZXBvbGwiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemVoaW50LCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2l6ZWhpbnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZWhpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KHR5cGUsIHNpemVoaW50LCAtMSk7CisgICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KHR5cGUsIHNpemVoaW50LCBmbGFncywgLTEpOwogfQogCiAKQEAgLTc5NSw3ICsxMTU3LDcgQEAKIHsKICAgICBlcnJubyA9IHB5ZXBvbGxfaW50ZXJuYWxfY2xvc2Uoc2VsZik7CiAgICAgaWYgKGVycm5vIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtODM3LDcgKzExOTksNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpmcm9tZmQiLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBuZXdQeUVwb2xsX09iamVjdCgoUHlUeXBlT2JqZWN0KiljbHMsIC0xLCBmZCk7CisgICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KChQeVR5cGVPYmplY3QqKWNscywgRkRfU0VUU0laRSAtIDEsIDAsIGZkKTsKIH0KIAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfZnJvbWZkX2RvYywKQEAgLTg4OCw3ICsxMjUwLDcgQEAKICAgICB9CiAKICAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtOTEyLDcgKzEyNzQsNyBAQAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfcmVnaXN0ZXJfZG9jLAogInJlZ2lzdGVyKGZkWywgZXZlbnRtYXNrXSkgLT4gTm9uZVxuXAogXG5cCi1SZWdpc3RlcnMgYSBuZXcgZmQgb3IgcmFpc2VzIGFuIElPRXJyb3IgaWYgdGhlIGZkIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5cblwKK1JlZ2lzdGVycyBhIG5ldyBmZCBvciByYWlzZXMgYW4gT1NFcnJvciBpZiB0aGUgZmQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuXAogZmQgaXMgdGhlIHRhcmdldCBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIG9wZXJhdGlvbi5cblwKIGV2ZW50cyBpcyBhIGJpdCBzZXQgY29tcG9zZWQgb2YgdGhlIHZhcmlvdXMgRVBPTEwgY29uc3RhbnRzOyB0aGUgZGVmYXVsdFxuXAogaXMgRVBPTExfSU4gfCBFUE9MTF9PVVQgfCBFUE9MTF9QUkkuXG5cCkBAIC0xMDExLDcgKzEzNzMsNyBAQAogICAgIG5mZHMgPSBlcG9sbF93YWl0KHNlbGYtPmVwZmQsIGV2cywgbWF4ZXZlbnRzLCB0aW1lb3V0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChuZmRzIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTEwNjYsNyArMTQyOCw3IEBACiB9OwogCiBQeURvY19TVFJWQVIocHllcG9sbF9kb2MsCi0ic2VsZWN0LmVwb2xsKFtzaXplaGludD0tMV0pXG5cCisic2VsZWN0LmVwb2xsKHNpemVoaW50PS0xLCBmbGFncz0wKVxuXAogXG5cCiBSZXR1cm5zIGFuIGVwb2xsaW5nIG9iamVjdFxuXAogXG5cCkBAIC0xNDAyLDcgKzE3NjQsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+a3FmZCA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwpAQCAtMTQzNCw3ICsxNzk2LDcgQEAKIHsKICAgICBlcnJubyA9IGtxdWV1ZV9xdWV1ZV9pbnRlcm5hbF9jbG9zZShzZWxmKTsKICAgICBpZiAoZXJybm8gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xNDk3LDcgKzE4NTksNyBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIHN0cnVjdCBrZXZlbnQgKmV2bCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqY2hsID0gTlVMTDsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dHNwZWM7CisgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CiAgICAgc3RydWN0IHRpbWVzcGVjICpwdGltZW91dHNwZWM7CiAKICAgICBpZiAoc2VsZi0+a3FmZCA8IDApCkBAIC0xNTE3LDI4ICsxODc5LDE2IEBACiAgICAgICAgIHB0aW1lb3V0c3BlYyA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG90aW1lb3V0KSkgewotICAgICAgICBkb3VibGUgdGltZW91dDsKLSAgICAgICAgbG9uZyBzZWNvbmRzOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0LnR2X3NlYywgJnRpbWVvdXQudHZfbnNlYykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZShvdGltZW91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPiAoZG91YmxlKUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBwZXJpb2QgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICBpZiAodGltZW91dC50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIG9yIE5vbmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KLSAgICAgICAgc2Vjb25kcyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHRpbWVvdXQgPSB0aW1lb3V0IC0gKGRvdWJsZSlzZWNvbmRzOwotICAgICAgICB0aW1lb3V0c3BlYy50dl9zZWMgPSBzZWNvbmRzOwotICAgICAgICB0aW1lb3V0c3BlYy50dl9uc2VjID0gKGxvbmcpKHRpbWVvdXQgKiAxRTkpOwotICAgICAgICBwdGltZW91dHNwZWMgPSAmdGltZW91dHNwZWM7CisgICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0OwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTE3MTUsNiArMjA2NSwxMSBAQAogfTsKIAogI2VuZGlmIC8qIEhBVkVfS1FVRVVFICovCisKKworCisKKwogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAKIFB5RG9jX1NUUlZBUihzZWxlY3RfZG9jLApAQCAtMTc0Niw2ICsyMTAxLDkgQEAKICNpZiBkZWZpbmVkKEhBVkVfUE9MTCkgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUE9MTCkKICAgICB7InBvbGwiLCAgICAgICAgICAgIHNlbGVjdF9wb2xsLCAgICBNRVRIX05PQVJHUywgICAgcG9sbF9kb2N9LAogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLworI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorICAgIHsiZGV2cG9sbCIsICAgICAgICAgc2VsZWN0X2RldnBvbGwsIE1FVEhfTk9BUkdTLCAgICBkZXZwb2xsX2RvY30sCisjZW5kaWYKICAgICB7MCwgICAgICAgICAwfSwgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNzY4LDYgKzIxMjYsOSBAQAogICAgIE5VTEwKIH07CiAKKworCisKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfc2VsZWN0KHZvaWQpCiB7CkBAIC0xNzc2LDkgKzIxMzcsOCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgU2VsZWN0RXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNlbGVjdC5lcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihTZWxlY3RFcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFNlbGVjdEVycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogCiAjaWZkZWYgUElQRV9CVUYKICNpZmRlZiBIQVZFX0JST0tFTl9QSVBFX0JVRgpAQCAtMTgyNSw2ICsyMTg1LDExIEBACiAgICAgfQogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLwogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICisgICAgaWYgKFB5VHlwZV9SZWFkeSgmZGV2cG9sbF9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKICNpZmRlZiBIQVZFX0VQT0xMCiAgICAgUHlfVFlQRSgmcHlFcG9sbF9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZweUVwb2xsX1R5cGUpIDwgMCkKQEAgLTE4NDksNiArMjIxNCwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFdSTk9STSIsIEVQT0xMV1JOT1JNKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExXUkJBTkQiLCBFUE9MTFdSQkFORCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMTVNHIiwgRVBPTExNU0cpOworCisjaWZkZWYgRVBPTExfQ0xPRVhFQworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9DTE9FWEVDIiwgRVBPTExfQ0xPRVhFQyk7CisjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0VQT0xMICovCiAKICNpZmRlZiBIQVZFX0tRVUVVRQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCBiMjViZDQ0Li4wOWI4N2VmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMTg0LDcgKzE4NCw4IEBACiAgICBJbml0aWFsaXplIHRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gc2hhMSAgIFRoZSBoYXNoIHN0YXRlIHlvdSB3aXNoIHRvIGluaXRpYWxpemUKICovCi12b2lkIHNoYTFfaW5pdChzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSkKK3N0YXRpYyB2b2lkCitzaGExX2luaXQoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEpCiB7CiAgICBhc3NlcnQoc2hhMSAhPSBOVUxMKTsKICAgIHNoYTEtPnN0YXRlWzBdID0gMHg2NzQ1MjMwMVVMOwpAQCAtMjAyLDcgKzIwMyw4IEBACiAgICBAcGFyYW0gaW4gICAgIFRoZSBkYXRhIHRvIGhhc2gKICAgIEBwYXJhbSBpbmxlbiAgVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSAob2N0ZXRzKQogKi8KLXZvaWQgc2hhMV9wcm9jZXNzKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLAorc3RhdGljIHZvaWQKK3NoYTFfcHJvY2VzcyhzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQogewogICAgIFB5X3NzaXplX3QgbjsKQEAgLTIxOCw3ICsyMjAsNyBAQAogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBTSEExX0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gU0hBMV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChTSEExX0JMT0NLU0laRSAtIHNoYTEtPmN1cmxlbikpOworICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoU0hBMV9CTE9DS1NJWkUgLSBzaGExLT5jdXJsZW4pKTsKICAgICAgICAgICAgbWVtY3B5KHNoYTEtPmJ1ZiArIHNoYTEtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7CiAgICAgICAgICAgIHNoYTEtPmN1cmxlbiAgICs9IG47CiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IG47CkBAIC0yMzcsNyArMjM5LDggQEAKICAgIEBwYXJhbSBzaGExICBUaGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIG91dCBbb3V0XSBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGhhc2ggKDIwIGJ5dGVzKQogKi8KLXZvaWQgc2hhMV9kb25lKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLCB1bnNpZ25lZCBjaGFyICpvdXQpCitzdGF0aWMgdm9pZAorc2hhMV9kb25lKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLCB1bnNpZ25lZCBjaGFyICpvdXQpCiB7CiAgICAgaW50IGk7CiAKQEAgLTM1Miw3ICszNTUsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtMzYwLDI1ICszNjMsMjIgQEAKICAgICBzaGExX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNIQTFfRElHRVNUU0laRSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoU0hBMV9ESUdFU1RTSVpFICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8U0hBMV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOworI2VuZGlmCiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKaW5kZXggODYxNzIxMC4uOWY2YjQxNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCkBAIC00NDUsNyArNDQ1LDcgQEAKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTQ1MywyNSArNDUzLDIyIEBACiAgICAgc2hhX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmLT5kaWdlc3RzaXplICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhzZWxmLT5kaWdlc3RzaXplICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQorI2lmZGVmIFB5X0RFQlVHCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKKyNlbmRpZgogICAgIHJldHVybiByZXR2YWw7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCmluZGV4IDBmYWFmNWMuLjU1MzZmZDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtNTExLDcgKzUxMSw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSAqaGV4X2RpZ2VzdDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwogICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCkBAIC01MTksMjUgKzUxOSwyMiBAQAogICAgIHNoYTUxMl9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZi0+ZGlnZXN0c2l6ZSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoc2VsZi0+ZGlnZXN0c2l6ZSAqIDIsIDEyNyk7CiAgICAgaWYgKCFyZXR2YWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmV0dmFsKTsKLSAgICBpZiAoIWhleF9kaWdlc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yIChpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOworI2VuZGlmCiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKaW5kZXggOWNhZTQ1NC4uMGFhYzk4YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCkBAIC0yMiw2ICsyMiwxNCBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKKyMgIGRlZmluZSBQWVBUSFJFQURfU0lHTUFTSworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKQorIyAgaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKICNpZm5kZWYgU0lHX0VSUgogI2RlZmluZSBTSUdfRVJSICgoUHlPU19zaWdoYW5kbGVyX3QpKC0xKSkKICNlbmRpZgpAQCAtMTAxLDYgKzEwOSwxMCBAQAogCiBzdGF0aWMgUHlPU19zaWdoYW5kbGVyX3Qgb2xkX3NpZ2ludGhhbmRsZXIgPSBTSUdfREZMOwogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOworI2VuZGlmCisKICNpZmRlZiBIQVZFX0dFVElUSU1FUgogc3RhdGljIFB5T2JqZWN0ICpJdGltZXJFcnJvcjsKIApAQCAtMTY4LDE1ICsxODAsMTkgQEAKIHN0YXRpYyB2b2lkCiB0cmlwX3NpZ25hbChpbnQgc2lnX251bSkKIHsKKyAgICB1bnNpZ25lZCBjaGFyIGJ5dGU7CisKICAgICBIYW5kbGVyc1tzaWdfbnVtXS50cmlwcGVkID0gMTsKKyAgICBpZiAod2FrZXVwX2ZkICE9IC0xKSB7CisgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOworICAgICAgICB3cml0ZSh3YWtldXBfZmQsICZieXRlLCAxKTsKKyAgICB9CiAgICAgaWYgKGlzX3RyaXBwZWQpCiAgICAgICAgIHJldHVybjsKICAgICAvKiBTZXQgaXNfdHJpcHBlZCBhZnRlciBzZXR0aW5nIC50cmlwcGVkLCBhcyBpdCBnZXRzCiAgICAgICAgY2xlYXJlZCBpbiBQeUVycl9DaGVja1NpZ25hbHMoKSBiZWZvcmUgLnRyaXBwZWQuICovCiAgICAgaXNfdHJpcHBlZCA9IDE7CiAgICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOwotICAgIGlmICh3YWtldXBfZmQgIT0gLTEpCi0gICAgICAgIHdyaXRlKHdha2V1cF9mZCwgIlwwIiwgMSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMTcsNiArMjMzLDExIEBACiAgICAgLyogSXNzdWUgIzEwMzExOiBhc3luY2hyb25vdXNseSBleGVjdXRpbmcgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBub3QKICAgICAgICBtdXRhdGUgZXJybm8gdW5kZXIgdGhlIGZlZXQgb2YgdW5zdXNwZWN0aW5nIEMgY29kZS4gKi8KICAgICBlcnJubyA9IHNhdmVfZXJybm87CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHNpZ19udW0gPT0gU0lHSU5UKQorICAgICAgICBTZXRFdmVudChzaWdpbnRfZXZlbnQpOworI2VuZGlmCiB9CiAKIApAQCAtMzEzLDcgKzMzNCw3IEBACiAgICAgZWxzZQogICAgICAgICBmdW5jID0gc2lnbmFsX2hhbmRsZXI7CiAgICAgaWYgKFB5T1Nfc2V0c2lnKHNpZ19udW0sIGZ1bmMpID09IFNJR19FUlIpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnX251bV0uZnVuYzsKQEAgLTM4Miw3ICs0MDMsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKHNpZ2ludGVycnVwdChzaWdfbnVtLCBmbGFnKTwwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDA2LDcgKzQyNyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNlbmRpZgotICAgIGlmIChmZCAhPSAtMSAmJiBmc3RhdChmZCwgJmJ1ZikgIT0gMCkgeworICAgIGlmIChmZCAhPSAtMSAmJiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgZnN0YXQoZmQsICZidWYpICE9IDApKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC00OTUsNiArNTE2LDM0MSBAQAogUmV0dXJucyBjdXJyZW50IHZhbHVlIG9mIGdpdmVuIGl0aW1lci4iKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgfHwgZGVmaW5lZChIQVZFX1NJR1dBSVQpIHx8IFwKKyAgICAgICAgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorLyogQ29udmVydCBhbiBpdGVyYWJsZSB0byBhIHNpZ3NldC4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJldHVybiAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAqLworCitzdGF0aWMgaW50CitpdGVyYWJsZV90b19zaWdzZXQoUHlPYmplY3QgKml0ZXJhYmxlLCBzaWdzZXRfdCAqbWFzaykKK3sKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKml0ZXJhdG9yLCAqaXRlbTsKKyAgICBsb25nIHNpZ251bTsKKyAgICBpbnQgZXJyOworCisgICAgc2lnZW1wdHlzZXQobWFzayk7CisKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgd2hpbGUgKDEpCisgICAgeworICAgICAgICBpdGVtID0gUHlJdGVyX05leHQoaXRlcmF0b3IpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgc2lnbnVtID0gUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICBpZiAoc2lnbnVtID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoMCA8IHNpZ251bSAmJiBzaWdudW0gPCBOU0lHKQorICAgICAgICAgICAgZXJyID0gc2lnYWRkc2V0KG1hc2ssIChpbnQpc2lnbnVtKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJyID0gMTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgJWxkIG91dCBvZiByYW5nZSIsIHNpZ251bSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdCA9IDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdQRU5ESU5HKQorc3RhdGljIFB5T2JqZWN0Kgorc2lnc2V0X3RvX3NldChzaWdzZXRfdCBtYXNrKQoreworICAgIFB5T2JqZWN0ICpzaWdudW0sICpyZXN1bHQ7CisgICAgaW50IHNpZzsKKworICAgIHJlc3VsdCA9IFB5U2V0X05ldygwKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChzaWcgPSAxOyBzaWcgPCBOU0lHOyBzaWcrKykgeworICAgICAgICBpZiAoc2lnaXNtZW1iZXIoJm1hc2ssIHNpZykgIT0gMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBpdCBpcyBhIG1lbWJlciBieSBhZGRpbmcgdGhlIHNpZ25hbCB0bworICAgICAgICAgICB0aGUgcmVzdWx0IGxpc3QuICBJZ25vcmUgdGhlIG90aGVyIGNhc2VzIGJlY2F1c2UgdGhleSBtZWFuIHRoZQorICAgICAgICAgICBzaWduYWwgaXNuJ3QgYSBtZW1iZXIgb2YgdGhlIG1hc2sgb3IgdGhlIHNpZ25hbCB3YXMgaW52YWxpZCwKKyAgICAgICAgICAgYW5kIGFuIGludmFsaWQgc2lnbmFsIG11c3QgaGF2ZSBiZWVuIG91ciBmYXVsdCBpbiBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgdGhlIGxvb3AgYm91bmRhcmllcy4gKi8KKyAgICAgICAgc2lnbnVtID0gUHlMb25nX0Zyb21Mb25nKHNpZyk7CisgICAgICAgIGlmIChzaWdudW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlTZXRfQWRkKHJlc3VsdCwgc2lnbnVtKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNpZ251bSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzaWdudW0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX3NpZ21hc2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBob3c7CisgICAgUHlPYmplY3QgKnNpZ25hbHM7CisgICAgc2lnc2V0X3QgbWFzaywgcHJldmlvdXM7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwgJmhvdywgJnNpZ25hbHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJm1hc2spKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVyciA9IHB0aHJlYWRfc2lnbWFzayhob3csICZtYXNrLCAmcHJldmlvdXMpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBpZiBzaWduYWxzIHdhcyB1bmJsb2NrZWQsIHNpZ25hbCBoYW5kbGVycyBoYXZlIGJlZW4gY2FsbGVkICovCisgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBzaWdzZXRfdG9fc2V0KHByZXZpb3VzKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfZG9jLAorInB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spIC0+IG9sZCBtYXNrXG5cCitcblwKK0ZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSyAqLworCisKKyNpZmRlZiBIQVZFX1NJR1BFTkRJTkcKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lncGVuZGluZyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBpbnQgZXJyOworICAgIHNpZ3NldF90IG1hc2s7CisgICAgZXJyID0gc2lncGVuZGluZygmbWFzayk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICByZXR1cm4gc2lnc2V0X3RvX3NldChtYXNrKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWdwZW5kaW5nX2RvYywKKyJzaWdwZW5kaW5nKCkgLT4gbGlzdFxuXAorXG5cCitFeGFtaW5lIHBlbmRpbmcgc2lnbmFscy4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKworCisjaWZkZWYgSEFWRV9TSUdXQUlUCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3dhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IHNldDsKKyAgICBpbnQgZXJyLCBzaWdudW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdCIsICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBlcnIgPSBzaWd3YWl0KCZzZXQsICZzaWdudW0pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVycikgeworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNpZ251bSk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdF9kb2MsCisic2lnd2FpdChzaWdzZXQpIC0+IHNpZ251bVxuXAorXG5cCitXYWl0IGEgc2lnbmFsLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorc3RhdGljIGludCBpbml0aWFsaXplZDsKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9zaWdpbmZvX2ZpZWxkc1tdID0geworICAgIHsic2lfc2lnbm8iLCAgICAgICAgInNpZ25hbCBudW1iZXIifSwKKyAgICB7InNpX2NvZGUiLCAgICAgICAgICJzaWduYWwgY29kZSJ9LAorICAgIHsic2lfZXJybm8iLCAgICAgICAgImVycm5vIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNpZ25hbCJ9LAorICAgIHsic2lfcGlkIiwgICAgICAgICAgInNlbmRpbmcgcHJvY2VzcyBJRCJ9LAorICAgIHsic2lfdWlkIiwgICAgICAgICAgInJlYWwgdXNlciBJRCBvZiBzZW5kaW5nIHByb2Nlc3MifSwKKyAgICB7InNpX3N0YXR1cyIsICAgICAgICJleGl0IHZhbHVlIG9yIHNpZ25hbCJ9LAorICAgIHsic2lfYmFuZCIsICAgICAgICAgImJhbmQgZXZlbnQgZm9yIFNJR1BPTEwifSwKKyAgICB7MH0KK307CisKK1B5RG9jX1NUUlZBUihzdHJ1Y3Rfc2lnaW5mb19fZG9jX18sCisic3RydWN0X3NpZ2luZm86IFJlc3VsdCBmcm9tIHNpZ3dhaXRpbmZvIG9yIHNpZ3RpbWVkd2FpdC5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisoc2lfc2lnbm8sIHNpX2NvZGUsIHNpX2Vycm5vLCBzaV9waWQsIHNpX3VpZCwgc2lfc3RhdHVzLCBzaV9iYW5kKSxcblwKK29yIHZpYSB0aGUgYXR0cmlidXRlcyBzaV9zaWdubywgc2lfY29kZSwgYW5kIHNvIG9uLiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHN0cnVjdF9zaWdpbmZvX2Rlc2MgPSB7CisgICAgInNpZ25hbC5zdHJ1Y3Rfc2lnaW5mbyIsICAgICAgICAgICAvKiBuYW1lICovCisgICAgc3RydWN0X3NpZ2luZm9fX2RvY19fLCAgICAgICAvKiBkb2MgKi8KKyAgICBzdHJ1Y3Rfc2lnaW5mb19maWVsZHMsICAgICAgIC8qIGZpZWxkcyAqLworICAgIDcgICAgICAgICAgLyogbl9pbl9zZXF1ZW5jZSAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTaWdpbmZvVHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZpbGxfc2lnaW5mbyhzaWdpbmZvX3QgKnNpKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2lnaW5mb1R5cGUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV9zaWdubykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMSwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfY29kZSkpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMiwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfZXJybm8pKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDMsIFB5TG9uZ19Gcm9tUGlkKHNpLT5zaV9waWQpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfdWlkKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV9zdGF0dXMpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDYsIFB5TG9uZ19Gcm9tTG9uZyhzaS0+c2lfYmFuZCkpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3dhaXRpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFsczsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgc2lnaW5mb190IHNpOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdGluZm8iLCAmc2lnbmFscykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lnd2FpdGluZm8oJnNldCwgJnNpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIgPT0gLTEpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisKKyAgICByZXR1cm4gZmlsbF9zaWdpbmZvKCZzaSk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdGluZm9fZG9jLAorInNpZ3dhaXRpbmZvKHNpZ3NldCkgLT4gc3RydWN0X3NpZ2luZm9cblwKK1xuXAorV2FpdCBzeW5jaHJvbm91c2x5IGZvciBhIHNpZ25hbCB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXNcblwKK2RlbGl2ZXJlZC5cblwKK1JldHVybnMgYSBzdHJ1Y3Rfc2lnaW5mbyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYWwuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTyAqLworCisjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lndGltZWR3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFscywgKnRpbWVvdXQ7CisgICAgc3RydWN0IHRpbWVzcGVjIGJ1ZjsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgc2lnaW5mb190IHNpOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnNpZ3RpbWVkd2FpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzaWduYWxzLCAmdGltZW91dCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyh0aW1lb3V0LCAmYnVmLnR2X3NlYywgJmJ1Zi50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYnVmLnR2X3NlYyA8IDAgfHwgYnVmLnR2X25zZWMgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBlcnIgPSBzaWd0aW1lZHdhaXQoJnNldCwgJnNpLCAmYnVmKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIgPT0gLTEpIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jLAorInNpZ3RpbWVkd2FpdChzaWdzZXQsICh0aW1lb3V0X3NlYywgdGltZW91dF9uc2VjKSkgLT4gc3RydWN0X3NpZ2luZm9cblwKK1xuXAorTGlrZSBzaWd3YWl0aW5mbygpLCBidXQgd2l0aCBhIHRpbWVvdXQgc3BlY2lmaWVkIGFzIGEgdHVwbGUgb2YgKHNlY29uZHMsXG5cCituYW5vc2Vjb25kcykuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQgKi8KKworCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9raWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBsb25nIHRpZDsKKyAgICBpbnQgc2lnbnVtOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsICZ0aWQsICZzaWdudW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVyciA9IHB0aHJlYWRfa2lsbCgocHRocmVhZF90KXRpZCwgc2lnbnVtKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogdGhlIHNpZ25hbCBtYXkgaGF2ZSBiZWVuIHNlbmQgdG8gdGhlIGN1cnJlbnQgdGhyZWFkICovCisgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2MsCisicHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKVxuXAorXG5cCitTZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLiIpOworI2VuZGlmICAgLyogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpICovCisKKwogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8KIHN0YXRpYyBQeU1ldGhvZERlZiBzaWduYWxfbWV0aG9kc1tdID0gewpAQCAtNTE1LDEwICs4NzEsMzQgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfUEFVU0UKICAgICB7InBhdXNlIiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wYXVzZSwKLSAgICAgTUVUSF9OT0FSR1MscGF1c2VfZG9jfSwKKyAgICAgTUVUSF9OT0FSR1MsIHBhdXNlX2RvY30sCiAjZW5kaWYKICAgICB7ImRlZmF1bHRfaW50X2hhbmRsZXIiLCBzaWduYWxfZGVmYXVsdF9pbnRfaGFuZGxlciwKICAgICAgTUVUSF9WQVJBUkdTLCBkZWZhdWx0X2ludF9oYW5kbGVyX2RvY30sCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKKyAgICB7InB0aHJlYWRfa2lsbCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX2tpbGwsCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2N9LAorI2VuZGlmCisjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKKyAgICB7InB0aHJlYWRfc2lnbWFzayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX3NpZ21hc2ssCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCisgICAgeyJzaWdwZW5kaW5nIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lncGVuZGluZywKKyAgICAgTUVUSF9OT0FSR1MsIHNpZ25hbF9zaWdwZW5kaW5nX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1dBSVQKKyAgICB7InNpZ3dhaXQiLCAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0LAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd3YWl0X2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCisgICAgeyJzaWd3YWl0aW5mbyIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdGluZm8sCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRpbmZvX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorICAgIHsic2lndGltZWR3YWl0IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3RpbWVkd2FpdCwKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lndGltZWR3YWl0X2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC01ODcsNiArOTY3LDE1IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pIHx8IGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpCisgICAgaWYgKCFpbml0aWFsaXplZCkKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU2lnaW5mb1R5cGUsICZzdHJ1Y3Rfc2lnaW5mb19kZXNjKTsKKworICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU2lnaW5mb1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3NpZ2luZm8iLCAoUHlPYmplY3QqKSAmU2lnaW5mb1R5cGUpOworICAgIGluaXRpYWxpemVkID0gMTsKKyNlbmRpZgorCiAgICAgLyogQWRkIHNvbWUgc3ltYm9saWMgY29uc3RhbnRzIHRvIHRoZSBtb2R1bGUgKi8KICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKIApAQCAtNjAzLDYgKzk5MiwxOSBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgUHlfREVDUkVGKHgpOwogCisjaWZkZWYgU0lHX0JMT0NLCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR19CTE9DSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CisjZW5kaWYKKyNpZmRlZiBTSUdfVU5CTE9DSworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdfVU5CTE9DSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CisjZW5kaWYKKyNpZmRlZiBTSUdfU0VUTUFTSworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdfU0VUTUFTSykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CisjZW5kaWYKKwogICAgIHggPSBJbnRIYW5kbGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgImRlZmF1bHRfaW50X2hhbmRsZXIiKTsKICAgICBpZiAoIXgpCiAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTg1NSw2ICsxMjU3LDExIEBACiAgICAgUHlfREVDUkVGKHgpOwogI2VuZGlmCiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogQ3JlYXRlIG1hbnVhbC1yZXNldCBldmVudCwgaW5pdGlhbGx5IHVuc2V0ICovCisgICAgc2lnaW50X2V2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIEZBTFNFKTsKKyNlbmRpZgorCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBtID0gTlVMTDsKQEAgLTEwMTcsMyArMTQyNCwyNSBAQAogICAgIF9QeUltcG9ydF9SZUluaXRMb2NrKCk7CiAjZW5kaWYKIH0KKworaW50CitfUHlPU19Jc01haW5UaHJlYWQodm9pZCkKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHJldHVybiBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgPT0gbWFpbl90aHJlYWQ7CisjZWxzZQorICAgIHJldHVybiAxOworI2VuZGlmCit9CisKKyNpZmRlZiBNU19XSU5ET1dTCit2b2lkICpfUHlPU19TaWdpbnRFdmVudCh2b2lkKQoreworICAgIC8qIFJldHVybnMgYSBtYW51YWwtcmVzZXQgZXZlbnQgd2hpY2ggZ2V0cyB0cmlwcGVkIHdoZW5ldmVyCisgICAgICAgU0lHSU5UIGlzIHJlY2VpdmVkLgorCisgICAgICAgUHl0aG9uLmggZG9lcyBub3QgaW5jbHVkZSB3aW5kb3dzLmggc28gd2UgZG8gY2Fubm90IHVzZSBIQU5ETEUKKyAgICAgICBhcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhpcyBmdW5jdGlvbi4gIFdlIHVzZSB2b2lkKiBpbnN0ZWFkLiAqLworICAgIHJldHVybiBzaWdpbnRfZXZlbnQ7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCmluZGV4IGJjMzM3MmYuLmQ3YWVmOGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwpAQCAtNDIsNiArNDIsOSBAQAogLSBzb2NrZXQuaW5ldF9udG9hKHBhY2tlZCBJUCkgLT4gSVAgYWRkcmVzcyBzdHJpbmcKIC0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkgLT4gTm9uZSB8IGZsb2F0CiAtIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChOb25lIHwgZmxvYXQpCistIHNvY2tldC5pZl9uYW1laW5kZXgoKSAtPiBsaXN0IG9mIHR1cGxlcyAoaWZfaW5kZXgsIGlmX25hbWUpCistIHNvY2tldC5pZl9uYW1ldG9pbmRleChuYW1lKSAtPiBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBpbmRleAorLSBzb2NrZXQuaWZfaW5kZXh0b25hbWUoaW5kZXgpIC0+IGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIG5hbWUKIC0gYW4gSW50ZXJuZXQgc29ja2V0IGFkZHJlc3MgaXMgYSBwYWlyIChob3N0bmFtZSwgcG9ydCkKICAgd2hlcmUgaG9zdG5hbWUgY2FuIGJlIGFueXRoaW5nIHJlY29nbml6ZWQgYnkgZ2V0aG9zdGJ5bmFtZSgpCiAgIChpbmNsdWRpbmcgdGhlIGRkLmRkLmRkLmRkIG5vdGF0aW9uKSBhbmQgcG9ydCBpcyBpbiBob3N0IGJ5dGUgb3JkZXIKQEAgLTEzMyw2ICsxMzYsOSBAQAogc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAogc2V0dGltZW91dChOb25lIHwgZmxvYXQpIC0tIHNldCBvciBjbGVhciB0aGUgdGltZW91dFxuXAogc2h1dGRvd24oaG93KSAtLSBzaHV0IGRvd24gdHJhZmZpYyBpbiBvbmUgb3IgYm90aCBkaXJlY3Rpb25zXG5cCitpZl9uYW1laW5kZXgoKSAtLSByZXR1cm4gYWxsIG5ldHdvcmsgaW50ZXJmYWNlIGluZGljZXMgYW5kIG5hbWVzXG5cCitpZl9uYW1ldG9pbmRleChuYW1lKSAtLSByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGluZGV4XG5cCitpZl9pbmRleHRvbmFtZShpbmRleCkgLS0gcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBuYW1lXG5cCiBcblwKICBbKl0gbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zISIpOwogCkBAIC0xNTAsMTIgKzE1NiwxNiBAQAogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQorIyBpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKwogI2lmbmRlZiBXSVRIX1RIUkVBRAogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgotIyBpZiBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19vc2ZfXykKKyMgaWYgZGVmaW5lZChfQUlYKQogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwpAQCAtMjA4LDYgKzIxOCwxMSBAQAogIyAgaW5jbHVkZSA8aW9jdGwuaD4KICNlbmRpZgogCisjaWZkZWYgX19BUFBMRV9fCisjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisKKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAjIGRlZmluZSAgSU5DTF9ET1MKICMgZGVmaW5lICBJTkNMX0RPU0VSUk9SUwpAQCAtMjUwLDYgKzI2NSwxNCBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisKIC8qIEdlbmVyaWMgc29ja2V0IG9iamVjdCBkZWZpbml0aW9ucyBhbmQgaW5jbHVkZXMgKi8KICNkZWZpbmUgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCkBAIC0yNjAsNiArMjgzLDcgQEAKIAogLyogTm9uLU1TIFdJTkRPV1MgaW5jbHVkZXMgKi8KICMgaW5jbHVkZSA8bmV0ZGIuaD4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CiAKIC8qIEhlYWRlcnMgbmVlZGVkIGZvciBpbmV0X250b2EoKSBhbmQgaW5ldF9hZGRyKCkgKi8KICMgaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX1ZBQ1BQKQpAQCAtMzU3LDcgKzM4MSw3IEBACiAgICAgICAgIHJldHVybiBJTlZBTElEX1NPQ0tFVDsKIAogICAgIHJldHVybiBXU0FTb2NrZXQoRlJPTV9QUk9UT0NPTF9JTkZPLCBGUk9NX1BST1RPQ09MX0lORk8sCi0gICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIFdTQV9GTEFHX09WRVJMQVBQRUQpOwogfQogI2RlZmluZSBTT0NLRVRDTE9TRSBjbG9zZXNvY2tldAogI2Vsc2UKQEAgLTM2Niw2ICszOTAsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBNU19XSU4zMgorI3VuZGVmIEVBRk5PU1VQUE9SVAogI2RlZmluZSBFQUZOT1NVUFBPUlQgV1NBRUFGTk9TVVBQT1JUCiAjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgogI2VuZGlmCkBAIC00MTcsNyArNDQyLDggQEAKICNkZWZpbmUgU0VHTUVOVF9TSVpFICgzMiAqIDEwMjQgLTEpCiAjZW5kaWYKIAotI2RlZmluZSBTQVMyU0EoeCkgICAgICAgKChzdHJ1Y3Qgc29ja2FkZHIgKikoeCkpCisvKiBDb252ZXJ0ICJzb2NrX2FkZHJfdCAqIiB0byAic3RydWN0IHNvY2thZGRyICoiLiAqLworI2RlZmluZSBTQVMyU0EoeCkgICAgICAgKCYoKHgpLT5zYSkpCiAKIC8qCiAgKiBDb25zdGFudHMgZm9yIGdldG5hbWVpbmZvKCkKQEAgLTQzOCw3ICs0NjQsNiBAQAogCiAvKiBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgZXhjZXB0aW9uIHR5cGUgZm9yIGVycm9ycyBkZXRlY3RlZAogICAgYnkgdGhpcyBtb2R1bGUgKGJ1dCBub3QgYXJndW1lbnQgdHlwZSBvciBtZW1vcnkgZXJyb3JzLCBldGMuKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2Vycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfaGVycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfZ2FpZXJyb3I7CiBzdGF0aWMgUHlPYmplY3QgKnNvY2tldF90aW1lb3V0OwpAQCAtNDU1LDYgKzQ4MCwxNyBAQAogI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiAjZW5kaWYKIAorLyogTGFyZ2VzdCB2YWx1ZSB0byB0cnkgdG8gc3RvcmUgaW4gYSBzb2NrbGVuX3QgKHVzZWQgd2hlbiBoYW5kbGluZworICAgYW5jaWxsYXJ5IGRhdGEpLiAgUE9TSVggcmVxdWlyZXMgc29ja2xlbl90IHRvIGhvbGQgYXQgbGVhc3QKKyAgICgyKiozMSktMSBhbmQgcmVjb21tZW5kcyBhZ2FpbnN0IHN0b3JpbmcgbGFyZ2VyIHZhbHVlcywgYnV0CisgICBzb2NrbGVuX3Qgd2FzIG9yaWdpbmFsbHkgaW50IGluIHRoZSBCU0QgaW50ZXJmYWNlLCBzbyB0byBiZSBvbiB0aGUKKyAgIHNhZmUgc2lkZSB3ZSB1c2UgdGhlIHNtYWxsZXIgb2YgKDIqKjMxKS0xIGFuZCBJTlRfTUFYLiAqLworI2lmIElOVF9NQVggPiAweDdmZmZmZmZmCisjZGVmaW5lIFNPQ0tMRU5fVF9MSU1JVCAweDdmZmZmZmZmCisjZWxzZQorI2RlZmluZSBTT0NLTEVOX1RfTElNSVQgSU5UX01BWAorI2VuZGlmCisKICNpZmRlZiBIQVZFX1BPTEwKIC8qIEluc3RlYWQgb2Ygc2VsZWN0KCksIHdlJ2xsIHVzZSBwb2xsKCkgc2luY2UgcG9sbCgpIHdvcmtzIG9uIGFueSBmZC4gKi8KICNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAxCkBAIC00NjgsNyArNTA0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHNlbGVjdF9lcnJvcih2b2lkKQogewotICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmFibGUgdG8gc2VsZWN0IG9uIHNvY2tldCIpOworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5hYmxlIHRvIHNlbGVjdCBvbiBzb2NrZXQiKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNDk1LDcgKzUzMSw3IEBACiAgICAgICAgcmVjb2duaXplcyB0aGUgZXJyb3IgY29kZXMgdXNlZCBieSBib3RoIEdldExhc3RFcnJvcigpIGFuZAogICAgICAgIFdTQUdldExhc3RFcnJvciAqLwogICAgIGlmIChlcnJfbm8pCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0Vycihzb2NrZXRfZXJyb3IsIGVycl9ubyk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBlcnJfbm8pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKQEAgLTUyNiw3ICs1NjIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBteWVycm9yY29kZSwgb3V0YnVmKTsKICAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3Qoc29ja2V0X2Vycm9yLCB2KTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfT1NFcnJvciwgdik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MzQsNyArNTcwLDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogfQogCiAKQEAgLTg1MywxMyArODg5LDEzIEBACiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXMtPmFpX25leHQpIHsKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJ3aWxkY2FyZCByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTg3Miw3ICs5MDgsNyBAQAogICAgIGlmIChuYW1lWzBdID09ICc8JyAmJiBzdHJjbXAobmFtZSwgIjxicm9hZGNhc3Q+IikgPT0gMCkgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKICAgICAgICAgaWYgKGFmICE9IEFGX0lORVQgJiYgYWYgIT0gQUZfVU5TUEVDKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgImFkZHJlc3MgZmFtaWx5IG1pc21hdGNoZWQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtOTMwLDcgKzk2Niw3IEBACiAgICAgICAgIHJldHVybiAxNjsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtOTc5LDcgKzEwMTUsNyBAQAogICAgICAgICBiZGFkZHItPmJbNV0gPSBiNTsKICAgICAgICAgcmV0dXJuIDY7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImJhZCBibHVldG9vdGggYWRkcmVzcyIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImJhZCBibHVldG9vdGggYWRkcmVzcyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtMTA0NCw3ICsxMDgwLDcgQEAKICNlbmRpZiAvKiBsaW51eCAqLwogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhhLT5zdW5fcGF0aCk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChhLT5zdW5fcGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYgLyogQUZfVU5JWCAqLwpAQCAtMTE5MCw2ICsxMjI2LDQyIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICBjYXNlIEFGX0NBTjoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmEgPSAoc3RydWN0IHNvY2thZGRyX2NhbiAqKWFkZHI7CisgICAgICAgIGNoYXIgKmlmbmFtZSA9ICIiOworICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgICAgICAvKiBuZWVkIHRvIGxvb2sgdXAgaW50ZXJmYWNlIG5hbWUgZ2l2ZW4gaW5kZXggKi8KKyAgICAgICAgaWYgKGEtPmNhbl9pZmluZGV4KSB7CisgICAgICAgICAgICBpZnIuaWZyX2lmaW5kZXggPSBhLT5jYW5faWZpbmRleDsKKyAgICAgICAgICAgIGlmIChpb2N0bChzb2NrZmQsIFNJT0NHSUZOQU1FLCAmaWZyKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmbmFtZSA9IGlmci5pZnJfbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPJmgiLCBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS0+Y2FuX2ZhbWlseSk7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoKHByb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgKmEgPSAoc3RydWN0IHNvY2thZGRyX2N0bCAqKWFkZHI7CisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKElJKSIsIGEtPnNjX2lkLCBhLT5zY191bml0KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhZGRyZXNzIHR5cGUiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKQEAgLTEyMjEsMTcgKzEyOTMsMjcgQEAKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuKiBhZGRyOwogICAgICAgICBjaGFyICpwYXRoOwogICAgICAgICBpbnQgbGVuOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJzIyIsICZwYXRoLCAmbGVuKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQgcmV0dmFsID0gMDsKKworICAgICAgICAvKiBQRVAgMzgzLiAgTm90IHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciBzaW5jZSB3ZSBuZWVkIHRvCisgICAgICAgICAgIGFsbG93IGVtYmVkZGVkIG51bGxzIG9uIExpbnV4LiAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICBpZiAoKGFyZ3MgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZ3MpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAieSMiLCAmcGF0aCwgJmxlbikpCisgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKICNpZmRlZiBsaW51eAogICAgICAgICBpZiAobGVuID4gMCAmJiBwYXRoWzBdID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KICAgICAgICAgICAgIGlmIChsZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byB1bml4X291dDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0xMjM5LDkgKzEzMjEsOSBAQAogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KICAgICAgICAgICAgIGlmIChsZW4gPj0gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRyLT5zdW5fcGF0aFtsZW5dID0gMDsKICAgICAgICAgfQpAQCAtMTI1Miw3ICsxMzM0LDEwIEBACiAjZWxzZQogICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR2YWwgPSAxOworICAgIHVuaXhfb3V0OgorICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiByZXR2YWw7CiAgICAgfQogI2VuZGlmIC8qIEFGX1VOSVggKi8KIApAQCAtMTI4MCw2ICsxMzY1LDExIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9SRFMKKyAgICBjYXNlIEFGX1JEUzoKKyAgICAgICAgLyogUkRTIHNvY2tldHMgdXNlIHNvY2thZGRyX2luOiBmYWxsLXRocm91Z2ggKi8KKyNlbmRpZgorCiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyOwpAQCAtMTM3Niw3ICsxNDY2LDcgQEAKICAgICAgICAgICAgIF9CVF9MMl9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnN0cmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9CVF9MMl9NRU1CKGFkZHIsIHBzbSkpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xMzk1LDcgKzE0ODUsNyBAQAogICAgICAgICAgICAgX0JUX1JDX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2kiLCAmc3RyYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX0JUX1JDX01FTUIoYWRkciwgY2hhbm5lbCkpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDEzLDcgKzE1MDMsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICBfQlRfSENJX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmIChzdHJhZGRyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0MjIsNyArMTUxMiw3IEBACiAjZWxzZQogICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmX0JUX0hDSV9NRU1CKGFkZHIsIGRldikpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDM5LDcgKzE1MjksNyBAQAogICAgICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfc2NvICopYWRkcl9yZXQ7CiAgICAgICAgICAgICBfQlRfU0NPX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhhcmdzKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQ1Miw3ICsxNTQyLDcgQEAKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTY0LDEwICsxNjU0LDExNiBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgICAgIHN3aXRjaCAocy0+c29ja19wcm90bykgeworICAgICAgICBjYXNlIENBTl9SQVc6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmFkZHI7CisgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJmYWNlTmFtZTsKKyAgICAgICAgICAgIHN0cnVjdCBpZnJlcSBpZnI7CisgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9jYW4gKilhZGRyX3JldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmZhY2VOYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShpbnRlcmZhY2VOYW1lKTsKKworICAgICAgICAgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWZyLmlmcl9pZmluZGV4ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGVuIDwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBzdHJuY3B5KGlmci5pZnJfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoaW50ZXJmYWNlTmFtZSksIHNpemVvZihpZnIuaWZyX25hbWUpKTsKKyAgICAgICAgICAgICAgICBpZnIuaWZyX25hbWVbKHNpemVvZihpZnIuaWZyX25hbWUpKS0xXSA9ICdcMCc7CisgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9DQU4gaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZHItPmNhbl9mYW1pbHkgPSBBRl9DQU47CisgICAgICAgICAgICBhZGRyLT5jYW5faWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKKworICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKmFkZHIpOworICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrYWRkcmFyZzogdW5zdXBwb3J0ZWQgQ0FOIHByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoIChzLT5zb2NrX3Byb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgKmFkZHI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2N0bCAqKWFkZHJfcmV0OworICAgICAgICAgICAgYWRkci0+c2NfZmFtaWx5ID0gQUZfU1lTVEVNOworICAgICAgICAgICAgYWRkci0+c3Nfc3lzYWRkciA9IEFGX1NZU19DT05UUk9MOyAKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmdzKSkgeworICAgICAgICAgICAgICAgIHN0cnVjdCBjdGxfaW5mbyBpbmZvOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjdGxfbmFtZTsKKworICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgIk8mIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY3RsX25hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGN0bF9uYW1lKSA+IHNpemVvZihpbmZvLmN0bF9uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN0bF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0cm5jcHkoaW5mby5jdGxfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoY3RsX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGluZm8uY3RsX25hbWUpKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3RsX25hbWUpOworCisgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIENUTElPQ0dJTkZPLCAmaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZmluZCBrZXJuZWwgY29udHJvbCB3aXRoIHByb3ZpZGVkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZHItPnNjX2lkID0gaW5mby5jdGxfaWQ7CisgICAgICAgICAgICAgICAgYWRkci0+c2NfdW5pdCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoYWRkci0+c2NfaWQpLCAmKGFkZHItPnNjX3VuaXQpKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgc3RyIG9yIHR1cGxlIG9mIHR3byBpbnRzIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKmFkZHIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2thZGRyYXJnOiB1bnN1cHBvcnRlZCBQRl9TWVNURU0gcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiBiYWQgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IGJhZCBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB9CkBAIC0xNTk4LDYgKzE3OTQsMTEgQEAKICAgICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX1JEUworICAgIGNhc2UgQUZfUkRTOgorICAgICAgICAvKiBSRFMgc29ja2V0cyB1c2Ugc29ja2FkZHJfaW46IGZhbGwtdGhyb3VnaCAqLworI2VuZGlmCisKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgewogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luKTsKQEAgLTE2MzMsNyArMTgzNCw3IEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICNlbmRpZgogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRybGVuOiAiCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRybGVuOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gQlQgcHJvdG9jb2wiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjU3LDE2ICsxODU4LDE1MSBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgeworICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2Nhbik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaChzLT5zb2NrX3Byb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2N0bCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIFBGX1NZU1RFTSBwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJsZW46IGJhZCBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogYmFkIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gMDsKIAogICAgIH0KIH0KIAogCisvKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgdGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzLgorICAgQ3VycmVudGx5LCB0aGVzZSBtZXRob2RzIGFyZSBvbmx5IGNvbXBpbGVkIGlmIHRoZSBSRkMgMjI5Mi8zNTQyCisgICBDTVNHX0xFTigpIG1hY3JvIGlzIGF2YWlsYWJsZS4gIE9sZGVyIHN5c3RlbXMgc2VlbSB0byBoYXZlIHVzZWQKKyAgIHNpemVvZihzdHJ1Y3QgY21zZ2hkcikgKyAobGVuZ3RoKSB3aGVyZSBDTVNHX0xFTigpIGlzIHVzZWQgbm93LCBzbworICAgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGRlZmluZSBDTVNHX0xFTigpIHRoYXQgd2F5IGlmIGl0J3Mgbm90CisgICBwcm92aWRlZC4gIFNvbWUgYXJjaGl0ZWN0dXJlcyBtaWdodCBuZWVkIGV4dHJhIHBhZGRpbmcgYWZ0ZXIgdGhlCisgICBjbXNnaGRyLCBob3dldmVyLCBhbmQgQ01TR19MRU4oKSB3b3VsZCBoYXZlIHRvIHRha2UgYWNjb3VudCBvZgorICAgdGhpcy4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyogSWYgbGVuZ3RoIGlzIGluIHJhbmdlLCBzZXQgKnJlc3VsdCB0byBDTVNHX0xFTihsZW5ndGgpIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAqLworc3RhdGljIGludAorZ2V0X0NNU0dfTEVOKHNpemVfdCBsZW5ndGgsIHNpemVfdCAqcmVzdWx0KQoreworICAgIHNpemVfdCB0bXA7CisKKyAgICBpZiAobGVuZ3RoID4gKFNPQ0tMRU5fVF9MSU1JVCAtIENNU0dfTEVOKDApKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdG1wID0gQ01TR19MRU4obGVuZ3RoKTsKKyAgICBpZiAodG1wID4gU09DS0xFTl9UX0xJTUlUIHx8IHRtcCA8IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnJlc3VsdCA9IHRtcDsKKyAgICByZXR1cm4gMTsKK30KKworI2lmZGVmIENNU0dfU1BBQ0UKKy8qIElmIGxlbmd0aCBpcyBpbiByYW5nZSwgc2V0ICpyZXN1bHQgdG8gQ01TR19TUEFDRShsZW5ndGgpIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAqLworc3RhdGljIGludAorZ2V0X0NNU0dfU1BBQ0Uoc2l6ZV90IGxlbmd0aCwgc2l6ZV90ICpyZXN1bHQpCit7CisgICAgc2l6ZV90IHRtcDsKKworICAgIC8qIFVzZSBDTVNHX1NQQUNFKDEpIGhlcmUgaW4gb3JkZXIgdG8gdGFrZSBhY2NvdW50IG9mIHRoZSBwYWRkaW5nCisgICAgICAgbmVjZXNzYXJ5IGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgZGF0YS4gKi8KKyAgICBpZiAobGVuZ3RoID4gKFNPQ0tMRU5fVF9MSU1JVCAtIENNU0dfU1BBQ0UoMSkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB0bXAgPSBDTVNHX1NQQUNFKGxlbmd0aCk7CisgICAgaWYgKHRtcCA+IFNPQ0tMRU5fVF9MSU1JVCB8fCB0bXAgPCBsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworICAgICpyZXN1bHQgPSB0bXA7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworLyogUmV0dXJuIHRydWUgaWZmIG1zZy0+bXNnX2NvbnRyb2xsZW4gaXMgdmFsaWQsIGNtc2doIGlzIGEgdmFsaWQKKyAgIHBvaW50ZXIgaW4gbXNnLT5tc2dfY29udHJvbCB3aXRoIGF0IGxlYXN0ICJzcGFjZSIgYnl0ZXMgYWZ0ZXIgaXQsCisgICBhbmQgaXRzIGNtc2dfbGVuIG1lbWJlciBpbnNpZGUgdGhlIGJ1ZmZlci4gKi8KK3N0YXRpYyBpbnQKK2Ntc2dfbWluX3NwYWNlKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3Qgc3BhY2UpCit7CisgICAgc2l6ZV90IGNtc2dfb2Zmc2V0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY21zZ19sZW5fZW5kID0gKG9mZnNldG9mKHN0cnVjdCBjbXNnaGRyLCBjbXNnX2xlbikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjbXNnaC0+Y21zZ19sZW4pKTsKKworICAgIC8qIE5vdGUgdGhhdCBQT1NJWCBhbGxvd3MgbXNnX2NvbnRyb2xsZW4gdG8gYmUgb2Ygc2lnbmVkIHR5cGUuICovCisgICAgaWYgKGNtc2doID09IE5VTEwgfHwgbXNnLT5tc2dfY29udHJvbCA9PSBOVUxMIHx8IG1zZy0+bXNnX2NvbnRyb2xsZW4gPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoc3BhY2UgPCBjbXNnX2xlbl9lbmQpCisgICAgICAgIHNwYWNlID0gY21zZ19sZW5fZW5kOworICAgIGNtc2dfb2Zmc2V0ID0gKGNoYXIgKiljbXNnaCAtIChjaGFyICopbXNnLT5tc2dfY29udHJvbDsKKyAgICByZXR1cm4gKGNtc2dfb2Zmc2V0IDw9IChzaXplX3QpLTEgLSBzcGFjZSAmJgorICAgICAgICAgICAgY21zZ19vZmZzZXQgKyBzcGFjZSA8PSBtc2ctPm1zZ19jb250cm9sbGVuKTsKK30KKworLyogSWYgcG9pbnRlciBDTVNHX0RBVEEoY21zZ2gpIGlzIGluIGJ1ZmZlciBtc2ctPm1zZ19jb250cm9sLCBzZXQKKyAgICpzcGFjZSB0byBudW1iZXIgb2YgYnl0ZXMgZm9sbG93aW5nIGl0IGluIHRoZSBidWZmZXIgYW5kIHJldHVybgorICAgdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuICBBc3N1bWVzIGNtc2doLCBtc2ctPm1zZ19jb250cm9sIGFuZAorICAgbXNnLT5tc2dfY29udHJvbGxlbiBhcmUgdmFsaWQuICovCitzdGF0aWMgaW50CitnZXRfY21zZ19kYXRhX3NwYWNlKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3QgKnNwYWNlKQoreworICAgIHNpemVfdCBkYXRhX29mZnNldDsKKyAgICBjaGFyICpkYXRhX3B0cjsKKworICAgIGlmICgoZGF0YV9wdHIgPSAoY2hhciAqKUNNU0dfREFUQShjbXNnaCkpID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIGRhdGFfb2Zmc2V0ID0gZGF0YV9wdHIgLSAoY2hhciAqKW1zZy0+bXNnX2NvbnRyb2w7CisgICAgaWYgKGRhdGFfb2Zmc2V0ID4gbXNnLT5tc2dfY29udHJvbGxlbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnNwYWNlID0gbXNnLT5tc2dfY29udHJvbGxlbiAtIGRhdGFfb2Zmc2V0OworICAgIHJldHVybiAxOworfQorCisvKiBJZiBjbXNnaCBpcyBpbnZhbGlkIG9yIG5vdCBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CisgICBtc2ctPm1zZ19jb250cm9sLCByZXR1cm4gLTEuICBJZiBjbXNnaCBpcyB2YWxpZCBhbmQgaXRzIGFzc29jaWF0ZWQKKyAgIGRhdGEgaXMgZW50aXJlbHkgY29udGFpbmVkIGluIHRoZSBidWZmZXIsIHNldCAqZGF0YV9sZW4gdG8gdGhlCisgICBsZW5ndGggb2YgdGhlIGFzc29jaWF0ZWQgZGF0YSBhbmQgcmV0dXJuIDAuICBJZiBvbmx5IHBhcnQgb2YgdGhlCisgICBhc3NvY2lhdGVkIGRhdGEgaXMgY29udGFpbmVkIGluIHRoZSBidWZmZXIgYnV0IGNtc2doIGlzIG90aGVyd2lzZQorICAgdmFsaWQsIHNldCAqZGF0YV9sZW4gdG8gdGhlIGxlbmd0aCBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBhbmQKKyAgIHJldHVybiAxLiAqLworc3RhdGljIGludAorZ2V0X2Ntc2dfZGF0YV9sZW4oc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3QgY21zZ2hkciAqY21zZ2gsIHNpemVfdCAqZGF0YV9sZW4pCit7CisgICAgc2l6ZV90IHNwYWNlLCBjbXNnX2RhdGFfbGVuOworCisgICAgaWYgKCFjbXNnX21pbl9zcGFjZShtc2csIGNtc2doLCBDTVNHX0xFTigwKSkgfHwKKyAgICAgICAgY21zZ2gtPmNtc2dfbGVuIDwgQ01TR19MRU4oMCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBjbXNnX2RhdGFfbGVuID0gY21zZ2gtPmNtc2dfbGVuIC0gQ01TR19MRU4oMCk7CisgICAgaWYgKCFnZXRfY21zZ19kYXRhX3NwYWNlKG1zZywgY21zZ2gsICZzcGFjZSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoc3BhY2UgPj0gY21zZ19kYXRhX2xlbikgeworICAgICAgICAqZGF0YV9sZW4gPSBjbXNnX2RhdGFfbGVuOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKmRhdGFfbGVuID0gc3BhY2U7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKworCiAvKiBzLl9hY2NlcHQoKSAtPiAoZmQsIGFkZHJlc3MpICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xODg5LDcgKzIyMjUsNyBAQAogI2Vsc2UKICAgICBpZiAoYnVmbGVuIDw9IDAgfHwgYnVmbGVuID4gMTAyNCkgewogI2VuZGlmCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tvcHQgYnVmbGVuIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjIwLDYgKzI5NTYsMzMxIEBACiBMaWtlIHJlY3ZfaW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSBidXQgYWxzbyByZXR1cm4gdGhlIHNlbmRlcidzIGFkZHJlc3MgaW5mby4iKTsKIAogCisvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKKyAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyoKKyAqIENhbGwgcmVjdm1zZygpIHdpdGggdGhlIHN1cHBsaWVkIGlvdmVjIHN0cnVjdHVyZXMsIGZsYWdzLCBhbmQKKyAqIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciBzaXplIChjb250cm9sbGVuKS4gIFJldHVybnMgdGhlIHR1cGxlIHJldHVybgorICogdmFsdWUgZm9yIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKSwgd2l0aCB0aGUgZmlyc3QgaXRlbSBwcm92aWRlZAorICogYnkgdGhlIHN1cHBsaWVkIG1ha2V2YWwoKSBmdW5jdGlvbi4gIG1ha2V2YWwoKSB3aWxsIGJlIGNhbGxlZCB3aXRoCisgKiB0aGUgbGVuZ3RoIHJlYWQgYW5kIG1ha2V2YWxfZGF0YSBhcyBhcmd1bWVudHMsIGFuZCBtdXN0IHJldHVybiBhCisgKiBuZXcgcmVmZXJlbmNlICh3aGljaCB3aWxsIGJlIGRlY3JlZmVkIGlmIHRoZXJlIGlzIGEgc3Vic2VxdWVudAorICogZXJyb3IpLiAgT24gZXJyb3IsIGNsb3NlcyBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEKKyAqIFNDTV9SSUdIVFMuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrX3JlY3Ztc2dfZ3V0cyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92bGVuLAorICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBQeV9zc2l6ZV90IGNvbnRyb2xsZW4sCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKCptYWtldmFsKShzc2l6ZV90LCB2b2lkICopLCB2b2lkICptYWtldmFsX2RhdGEpCit7CisgICAgc3NpemVfdCBieXRlc19yZWNlaXZlZCA9IC0xOworICAgIGludCB0aW1lb3V0OworICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CisgICAgc29ja2xlbl90IGFkZHJidWZsZW47CisgICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgUHlPYmplY3QgKmNtc2dfbGlzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaDsKKyAgICBzaXplX3QgY21zZ2RhdGFsZW4gPSAwOworICAgIGludCBjbXNnX3N0YXR1czsKKworICAgIC8qIFhYWDogUE9TSVggc2F5cyB0aGF0IG1zZ19uYW1lIGFuZCBtc2dfbmFtZWxlbiAic2hhbGwgYmUKKyAgICAgICBpZ25vcmVkIiB3aGVuIHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkIChMaW51eCBmaWxscyB0aGVtIGluCisgICAgICAgYW55d2F5IGZvciBBRl9VTklYIHNvY2tldHMgYXQgbGVhc3QpLiAgTm9ybWFsbHkgbXNnX25hbWVsZW4KKyAgICAgICBzZWVtcyB0byBiZSBzZXQgdG8gMCBpZiB0aGVyZSdzIG5vIGFkZHJlc3MsIGJ1dCB0cnkgdG8KKyAgICAgICBpbml0aWFsaXplIG1zZ19uYW1lIHRvIHNvbWV0aGluZyB0aGF0IHdvbid0IGJlIG1pc3Rha2VuIGZvciBhCisgICAgICAgcmVhbCBhZGRyZXNzIGlmIHRoYXQgZG9lc24ndCBoYXBwZW4uICovCisgICAgaWYgKCFnZXRzb2NrYWRkcmxlbihzLCAmYWRkcmJ1ZmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbXNldCgmYWRkcmJ1ZiwgMCwgYWRkcmJ1Zmxlbik7CisgICAgU0FTMlNBKCZhZGRyYnVmKS0+c2FfZmFtaWx5ID0gQUZfVU5TUEVDOworCisgICAgaWYgKGNvbnRyb2xsZW4gPCAwIHx8IGNvbnRyb2xsZW4gPiBTT0NLTEVOX1RfTElNSVQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBidWZmZXIgbGVuZ3RoIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY29udHJvbGxlbiA+IDAgJiYgKGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgLyogTWFrZSB0aGUgc3lzdGVtIGNhbGwuICovCisgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CisgICAgICAgIHNlbGVjdF9lcnJvcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgQkVHSU5fU0VMRUNUX0xPT1AocykKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIG1zZy5tc2dfbmFtZSA9IFNBUzJTQSgmYWRkcmJ1Zik7CisgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmJ1ZmxlbjsKKyAgICBtc2cubXNnX2lvdiA9IGlvdjsKKyAgICBtc2cubXNnX2lvdmxlbiA9IGlvdmxlbjsKKyAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7CisgICAgaWYgKCF0aW1lb3V0KQorICAgICAgICBieXRlc19yZWNlaXZlZCA9IHJlY3Ztc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgRU5EX1NFTEVDVF9MT09QKHMpCisKKyAgICBpZiAoYnl0ZXNfcmVjZWl2ZWQgPCAwKSB7CisgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgLyogTWFrZSBsaXN0IG9mIChsZXZlbCwgdHlwZSwgZGF0YSkgdHVwbGVzIGZyb20gY29udHJvbCBtZXNzYWdlcy4gKi8KKyAgICBpZiAoKGNtc2dfbGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgIC8qIENoZWNrIGZvciBlbXB0eSBhbmNpbGxhcnkgZGF0YSBhcyBvbGQgQ01TR19GSVJTVEhEUigpCisgICAgICAgaW1wbGVtZW50YXRpb25zIGRpZG4ndCBkbyBzby4gKi8KKyAgICBmb3IgKGNtc2doID0gKChtc2cubXNnX2NvbnRyb2xsZW4gPiAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBOVUxMKTsKKyAgICAgICAgIGNtc2doICE9IE5VTEw7IGNtc2doID0gQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpKSB7CisgICAgICAgIFB5T2JqZWN0ICpieXRlcywgKnR1cGxlOworICAgICAgICBpbnQgdG1wOworCisgICAgICAgIGNtc2dfc3RhdHVzID0gZ2V0X2Ntc2dfZGF0YV9sZW4oJm1zZywgY21zZ2gsICZjbXNnZGF0YWxlbik7CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1J1bnRpbWVXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgbWFsZm9ybWVkIG9yIGltcHJvcGVybHktdHJ1bmNhdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuY2lsbGFyeSBkYXRhIiwgMSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY21zZ2RhdGFsZW4gPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJjb250cm9sIG1lc3NhZ2UgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopQ01TR19EQVRBKGNtc2doKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2dkYXRhbGVuKTsKKyAgICAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaU4iLCAoaW50KWNtc2doLT5jbXNnX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCljbXNnaC0+Y21zZ190eXBlLCBieXRlcyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIHRtcCA9IFB5TGlzdF9BcHBlbmQoY21zZ19saXN0LCB0dXBsZSk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgIGlmICh0bXAgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworCisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dmFsID0gUHlfQnVpbGRWYWx1ZSgiTk9pTiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm1ha2V2YWwpKGJ5dGVzX3JlY2VpdmVkLCBtYWtldmFsX2RhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zZ19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltc2cubXNnX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtc2cubXNnX25hbWVsZW4gPiBhZGRyYnVmbGVuKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJidWZsZW4gOiBtc2cubXNnX25hbWVsZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNvY2tfcHJvdG8pKTsKKyAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworCitmaW5hbGx5OgorICAgIFB5X1hERUNSRUYoY21zZ19saXN0KTsKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycl9jbG9zZWZkczoKKyNpZmRlZiBTQ01fUklHSFRTCisgICAgLyogQ2xvc2UgYWxsIGRlc2NyaXB0b3JzIGNvbWluZyBmcm9tIFNDTV9SSUdIVFMsIHNvIHRoZXkgZG9uJ3QgbGVhay4gKi8KKyAgICBmb3IgKGNtc2doID0gKChtc2cubXNnX2NvbnRyb2xsZW4gPiAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBOVUxMKTsKKyAgICAgICAgIGNtc2doICE9IE5VTEw7IGNtc2doID0gQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpKSB7CisgICAgICAgIGNtc2dfc3RhdHVzID0gZ2V0X2Ntc2dfZGF0YV9sZW4oJm1zZywgY21zZ2gsICZjbXNnZGF0YWxlbik7CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNtc2doLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYKKyAgICAgICAgICAgIGNtc2doLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykgeworICAgICAgICAgICAgc2l6ZV90IG51bWZkczsKKyAgICAgICAgICAgIGludCAqZmRwOworCisgICAgICAgICAgICBudW1mZHMgPSBjbXNnZGF0YWxlbiAvIHNpemVvZihpbnQpOworICAgICAgICAgICAgZmRwID0gKGludCAqKUNNU0dfREFUQShjbXNnaCk7CisgICAgICAgICAgICB3aGlsZSAobnVtZmRzLS0gPiAwKQorICAgICAgICAgICAgICAgIGNsb3NlKCpmZHArKyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYgLyogU0NNX1JJR0hUUyAqLworICAgIGdvdG8gZmluYWxseTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZXZhbF9yZWN2bXNnKHNzaXplX3QgcmVjZWl2ZWQsIHZvaWQgKmRhdGEpCit7CisgICAgUHlPYmplY3QgKipidWYgPSBkYXRhOworCisgICAgaWYgKHJlY2VpdmVkIDwgUHlCeXRlc19HRVRfU0laRSgqYnVmKSkKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgcmVjZWl2ZWQpOworICAgIFB5X1hJTkNSRUYoKmJ1Zik7CisgICAgcmV0dXJuICpidWY7Cit9CisKKy8qIHMucmVjdm1zZyhidWZzaXplWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBidWZzaXplLCBhbmNidWZzaXplID0gMDsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHN0cnVjdCBpb3ZlYyBpb3Y7CisgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufG5pOnJlY3Ztc2ciLCAmYnVmc2l6ZSwgJmFuY2J1ZnNpemUsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJ1ZnNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgYnVmZmVyIHNpemUgaW4gcmVjdm1zZygpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoKGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmc2l6ZSkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlvdi5pb3ZfYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1Zik7CisgICAgaW92Lmlvdl9sZW4gPSBidWZzaXplOworCisgICAgLyogTm90ZSB0aGF0IHdlJ3JlIHBhc3NpbmcgYSBwb2ludGVyIHRvICpvdXIgcG9pbnRlciogdG8gdGhlIGJ5dGVzCisgICAgICAgb2JqZWN0IGhlcmUgKCZidWYpOyBtYWtldmFsX3JlY3Ztc2coKSBtYXkgaW5jcmVmIHRoZSBvYmplY3QsIG9yCisgICAgICAgZGVhbGxvY2F0ZSBpdCBhbmQgc2V0IG91ciBwb2ludGVyIHRvIE5VTEwuICovCisgICAgcmV0dmFsID0gc29ja19yZWN2bXNnX2d1dHMocywgJmlvdiwgMSwgZmxhZ3MsIGFuY2J1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1ha2V2YWxfcmVjdm1zZywgJmJ1Zik7CisgICAgUHlfWERFQ1JFRihidWYpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihyZWN2bXNnX2RvYywKKyJyZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkgLT4gKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcylcblwKK1xuXAorUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gYnVmc2l6ZSBieXRlcykgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlXG5cCitzb2NrZXQuICBUaGUgYW5jYnVmc2l6ZSBhcmd1bWVudCBzZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZVxuXAoraW50ZXJuYWwgYnVmZmVyIHVzZWQgdG8gcmVjZWl2ZSB0aGUgYW5jaWxsYXJ5IGRhdGE7IGl0IGRlZmF1bHRzIHRvIDAsXG5cCittZWFuaW5nIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgd2lsbCBiZSByZWNlaXZlZC4gIEFwcHJvcHJpYXRlIGJ1ZmZlclxuXAorc2l6ZXMgZm9yIGFuY2lsbGFyeSBkYXRhIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIENNU0dfU1BBQ0UoKSBvclxuXAorQ01TR19MRU4oKSwgYW5kIGl0ZW1zIHdoaWNoIGRvIG5vdCBmaXQgaW50byB0aGUgYnVmZmVyIG1pZ2h0IGJlXG5cCit0cnVuY2F0ZWQgb3IgZGlzY2FyZGVkLiAgVGhlIGZsYWdzIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGVcblwKK3NhbWUgbWVhbmluZyBhcyBmb3IgcmVjdigpLlxuXAorXG5cCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuXG5cCitUaGUgZGF0YSBpdGVtIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YVxuXAorcmVjZWl2ZWQuICBUaGUgYW5jZGF0YSBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvIG9yIG1vcmUgdHVwbGVzXG5cCisoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpIHJlcHJlc2VudGluZyB0aGUgYW5jaWxsYXJ5IGRhdGFcblwKKyhjb250cm9sIG1lc3NhZ2VzKSByZWNlaXZlZDogY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2Vyc1xuXAorc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LFxuXAorYW5kIGNtc2dfZGF0YSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGVcblwKK21zZ19mbGFncyBpdGVtIGlzIHRoZSBiaXR3aXNlIE9SIG9mIHZhcmlvdXMgZmxhZ3MgaW5kaWNhdGluZ1xuXAorY29uZGl0aW9ucyBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yXG5cCitkZXRhaWxzLiAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsIGFkZHJlc3MgaXMgdGhlXG5cCithZGRyZXNzIG9mIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpc1xuXAordW5zcGVjaWZpZWQuXG5cCitcblwKK0lmIHJlY3Ztc2coKSByYWlzZXMgYW4gZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLCBpdFxuXAord2lsbCBmaXJzdCBhdHRlbXB0IHRvIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGVcblwKK1NDTV9SSUdIVFMgbWVjaGFuaXNtLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtldmFsX3JlY3Ztc2dfaW50byhzc2l6ZV90IHJlY2VpdmVkLCB2b2lkICpkYXRhKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVjZWl2ZWQpOworfQorCisvKiBzLnJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnX2ludG8oUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGFuY2J1ZnNpemUgPSAwOworICAgIGludCBmbGFncyA9IDA7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5pdGVtcywgbmJ1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqYnVmcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ1ZmZlcnNfYXJnLCAqZmFzdCwgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98bmk6cmVjdm1zZ19pbnRvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcnNfYXJnLCAmYW5jYnVmc2l6ZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoKGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoYnVmZmVyc19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN2bXNnX2ludG8oKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbml0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGZhc3QpOworICAgIGlmIChuaXRlbXMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBpdGVtLCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKG5pdGVtcyA+IDAgJiYgKChpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbml0ZW1zKSkgPT0gTlVMTCB8fAorICAgICAgICAgICAgICAgICAgICAgICAoYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5pdGVtcykpID09IE5VTEwpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgZm9yICg7IG5idWZzIDwgbml0ZW1zOyBuYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGZhc3QsIG5idWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidyo7cmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAib2Ygc2luZ2xlLXNlZ21lbnQgcmVhZC13cml0ZSBidWZmZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmc1tuYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25idWZzXS5pb3ZfYmFzZSA9IGJ1ZnNbbmJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuYnVmc10uaW92X2xlbiA9IGJ1ZnNbbmJ1ZnNdLmxlbjsKKyAgICB9CisKKyAgICByZXR2YWwgPSBzb2NrX3JlY3Ztc2dfZ3V0cyhzLCBpb3ZzLCBuaXRlbXMsIGZsYWdzLCBhbmNidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWtldmFsX3JlY3Ztc2dfaW50bywgTlVMTCk7CitmaW5hbGx5OgorICAgIGZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSsrKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZzW2ldKTsKKyAgICBQeU1lbV9GcmVlKGJ1ZnMpOworICAgIFB5TWVtX0ZyZWUoaW92cyk7CisgICAgUHlfREVDUkVGKGZhc3QpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihyZWN2bXNnX2ludG9fZG9jLAorInJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIC0+IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcylcblwKK1xuXAorUmVjZWl2ZSBub3JtYWwgZGF0YSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbSB0aGUgc29ja2V0LCBzY2F0dGVyaW5nIHRoZVxuXAorbm9uLWFuY2lsbGFyeSBkYXRhIGludG8gYSBzZXJpZXMgb2YgYnVmZmVycy4gIFRoZSBidWZmZXJzIGFyZ3VtZW50XG5cCittdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIG9iamVjdHMgdGhhdCBleHBvcnQgd3JpdGFibGUgYnVmZmVyc1xuXAorKGUuZy4gYnl0ZWFycmF5IG9iamVjdHMpOyB0aGVzZSB3aWxsIGJlIGZpbGxlZCB3aXRoIHN1Y2Nlc3NpdmUgY2h1bmtzXG5cCitvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuIG9yIHRoZXJlIGFyZVxuXAorbm8gbW9yZSBidWZmZXJzLiAgVGhlIGFuY2J1ZnNpemUgYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZlxuXAordGhlIGludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cyB0b1xuXAorMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZVxuXAorYnVmZmVyIHNpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZyBDTVNHX1NQQUNFKClcblwKK29yIENNU0dfTEVOKCksIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0IGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZVxuXAordHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSBmbGFncyBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlXG5cCitzYW1lIG1lYW5pbmcgYXMgZm9yIHJlY3YoKS5cblwKK1xuXAorVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuXG5cCitUaGUgbmJ5dGVzIGl0ZW0gaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBvZiBub24tYW5jaWxsYXJ5IGRhdGFcblwKK3dyaXR0ZW4gaW50byB0aGUgYnVmZmVycy4gIFRoZSBhbmNkYXRhIGl0ZW0gaXMgYSBsaXN0IG9mIHplcm8gb3IgbW9yZVxuXAordHVwbGVzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSkgcmVwcmVzZW50aW5nIHRoZSBhbmNpbGxhcnlcblwKK2RhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiBjbXNnX2xldmVsIGFuZCBjbXNnX3R5cGUgYXJlXG5cCitpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBsZXZlbCBhbmQgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZVxuXAorcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWRcblwKK2RhdGEuICBUaGUgbXNnX2ZsYWdzIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFnc1xuXAoraW5kaWNhdGluZyBjb25kaXRpb25zIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW1cblwKK2RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuICBJZiB0aGUgcmVjZWl2aW5nIHNvY2tldCBpcyB1bmNvbm5lY3RlZCxcblwKK2FkZHJlc3MgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRpbmcgc29ja2V0LCBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSxcblwKK2l0cyB2YWx1ZSBpcyB1bnNwZWNpZmllZC5cblwKK1xuXAorSWYgcmVjdm1zZ19pbnRvKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhZnRlciB0aGUgc3lzdGVtIGNhbGwgcmV0dXJucyxcblwKK2l0IHdpbGwgZmlyc3QgYXR0ZW1wdCB0byBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhlXG5cCitTQ01fUklHSFRTIG1lY2hhbmlzbS4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCisKIC8qIHMuc2VuZChkYXRhIFssZmxhZ3NdKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI3NzEsNiArMzQzMiw3IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kdG8oKSB0YWtlcyAyIG9yIDMgYXJndW1lbnRzICglZCBnaXZlbikiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2xlbik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjgxNCw2ICszNDc2LDIzNCBAQAogRm9yIElQIHNvY2tldHMsIHRoZSBhZGRyZXNzIGlzIGEgcGFpciAoaG9zdGFkZHIsIHBvcnQpLiIpOwogCiAKKy8qIFRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcyByZXF1aXJlIGEgd29ya2luZworICAgQ01TR19MRU4oKS4gIFNlZSB0aGUgY29tbWVudCBuZWFyIGdldF9DTVNHX0xFTigpLiAqLworI2lmZGVmIENNU0dfTEVOCisvKiBzLnNlbmRtc2coYnVmZmVyc1ssIGFuY2RhdGFbLCBmbGFnc1ssIGFkZHJlc3NdXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19zZW5kbXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOworICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIHN0cnVjdCBjbXNnaW5mbyB7CisgICAgICAgIGludCBsZXZlbDsKKyAgICAgICAgaW50IHR5cGU7CisgICAgICAgIFB5X2J1ZmZlciBkYXRhOworICAgIH0gKmNtc2dzID0gTlVMTDsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OworICAgIHNzaXplX3QgYnl0ZXNfc2VudCA9IC0xOworICAgIGludCBhZGRybGVuLCB0aW1lb3V0LCBmbGFncyA9IDA7CisgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKKyAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBQYXJzZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLworICAgIGlmIChhZGRyX2FyZyAhPSBOVUxMICYmIGFkZHJfYXJnICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFnZXRzb2NrYWRkcmFyZyhzLCBhZGRyX2FyZywgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBtc2cubXNnX25hbWUgPSAmYWRkcmJ1ZjsKKyAgICAgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmxlbjsKKyAgICB9CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmICgoZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIG1zZy5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IDAgJiYKKyAgICAgICAgKChtc2cubXNnX2lvdiA9IGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCB8fAorICAgICAgICAgKGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cykpID09IE5VTEwpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CisgICAgfQorCisgICAgaWYgKGNtc2dfYXJnID09IE5VTEwpCisgICAgICAgIG5jbXNncyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmICgoY21zZ19mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGNtc2dfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDIgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBuY21zZ3MgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoY21zZ19mYXN0KTsKKyAgICB9CisKKyNpZm5kZWYgQ01TR19TUEFDRQorICAgIGlmIChuY21zZ3MgPiAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRpbmcgbXVsdGlwbGUgY29udHJvbCBtZXNzYWdlcyBpcyBub3Qgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvbiB0aGlzIHN5c3RlbSIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorI2VuZGlmCisgICAgLyogU2F2ZSBsZXZlbCwgdHlwZSBhbmQgUHlfYnVmZmVyIGZvciBlYWNoIGNvbnRyb2wgbWVzc2FnZSwKKyAgICAgICBhbmQgY2FsY3VsYXRlIHRvdGFsIHNpemUuICovCisgICAgaWYgKG5jbXNncyA+IDAgJiYgKGNtc2dzID0gUHlNZW1fTmV3KHN0cnVjdCBjbXNnaW5mbywgbmNtc2dzKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGNvbnRyb2xsZW4gPSBjb250cm9sbGVuX2xhc3QgPSAwOworICAgIHdoaWxlIChuY21zZ2J1ZnMgPCBuY21zZ3MpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZnNpemUsIHNwYWNlOworCisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGNtc2dfZmFzdCwgbmNtc2didWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiKGlpeSopOltzZW5kbXNnKCkgYW5jaWxsYXJ5IGRhdGEgaXRlbXNdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS5sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNnc1tuY21zZ2J1ZnNdLmRhdGEpKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBidWZzaXplID0gY21zZ3NbbmNtc2didWZzKytdLmRhdGEubGVuOworCisjaWZkZWYgQ01TR19TUEFDRQorICAgICAgICBpZiAoIWdldF9DTVNHX1NQQUNFKGJ1ZnNpemUsICZzcGFjZSkpIHsKKyNlbHNlCisgICAgICAgIGlmICghZ2V0X0NNU0dfTEVOKGJ1ZnNpemUsICZzcGFjZSkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJhbmNpbGxhcnkgZGF0YSBpdGVtIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGNvbnRyb2xsZW4gKz0gc3BhY2U7CisgICAgICAgIGlmIChjb250cm9sbGVuID4gU09DS0xFTl9UX0xJTUlUIHx8IGNvbnRyb2xsZW4gPCBjb250cm9sbGVuX2xhc3QpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidG9vIG11Y2ggYW5jaWxsYXJ5IGRhdGEiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9sbGVuX2xhc3QgPSBjb250cm9sbGVuOworICAgIH0KKworICAgIC8qIENvbnN0cnVjdCBhbmNpbGxhcnkgZGF0YSBibG9jayBmcm9tIGNvbnRyb2wgbWVzc2FnZSBpbmZvLiAqLworICAgIGlmIChuY21zZ2J1ZnMgPiAwKSB7CisgICAgICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaCA9IE5VTEw7CisKKyAgICAgICAgaWYgKChtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmID0KKyAgICAgICAgICAgICBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKKworICAgICAgICAvKiBOZWVkIHRvIHplcm8gb3V0IHRoZSBidWZmZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBnbGliYydzCisgICAgICAgICAgIENNU0dfTlhUSERSKCkgaW1wbGVtZW50YXRpb24uICBBZnRlciBnZXR0aW5nIHRoZSBwb2ludGVyIHRvCisgICAgICAgICAgIHRoZSBuZXh0IGhlYWRlciwgaXQgY2hlY2tzIGl0cyAodW5pbml0aWFsaXplZCkgY21zZ19sZW4KKyAgICAgICAgICAgbWVtYmVyIHRvIHNlZSBpZiB0aGUgIm1lc3NhZ2UiIGZpdHMgaW4gdGhlIGJ1ZmZlciwgYW5kCisgICAgICAgICAgIHJldHVybnMgTlVMTCBpZiBpdCBkb2Vzbid0LiAgWmVyby1maWxsaW5nIHRoZSBidWZmZXIKKyAgICAgICAgICAgZW5zdXJlcyB0aGF0IHRoYXQgZG9lc24ndCBoYXBwZW4uICovCisgICAgICAgIG1lbXNldChjb250cm9sYnVmLCAwLCBjb250cm9sbGVuKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmNtc2didWZzOyBpKyspIHsKKyAgICAgICAgICAgIHNpemVfdCBtc2dfbGVuLCBkYXRhX2xlbiA9IGNtc2dzW2ldLmRhdGEubGVuOworICAgICAgICAgICAgaW50IGVub3VnaF9zcGFjZSA9IDA7CisKKyAgICAgICAgICAgIGNtc2doID0gKGkgPT0gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpOworICAgICAgICAgICAgaWYgKGNtc2doID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tICVzKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSAwKSA/ICJDTVNHX0ZJUlNUSERSIiA6ICJDTVNHX05YVEhEUiIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZ2V0X0NNU0dfTEVOKGRhdGFfbGVuLCAmbXNnX2xlbikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlbSBzaXplIG91dCBvZiByYW5nZSBmb3IgQ01TR19MRU4oKSIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbXNnX21pbl9zcGFjZSgmbXNnLCBjbXNnaCwgbXNnX2xlbikpIHsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc3BhY2U7CisKKyAgICAgICAgICAgICAgICBjbXNnaC0+Y21zZ19sZW4gPSBtc2dfbGVuOworICAgICAgICAgICAgICAgIGlmIChnZXRfY21zZ19kYXRhX3NwYWNlKCZtc2csIGNtc2doLCAmc3BhY2UpKQorICAgICAgICAgICAgICAgICAgICBlbm91Z2hfc3BhY2UgPSAoc3BhY2UgPj0gZGF0YV9sZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFlbm91Z2hfc3BhY2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5jaWxsYXJ5IGRhdGEgZG9lcyBub3QgZml0IGluIGNhbGN1bGF0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BhY2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbXNnaC0+Y21zZ19sZXZlbCA9IGNtc2dzW2ldLmxldmVsOworICAgICAgICAgICAgY21zZ2gtPmNtc2dfdHlwZSA9IGNtc2dzW2ldLnR5cGU7CisgICAgICAgICAgICBtZW1jcHkoQ01TR19EQVRBKGNtc2doKSwgY21zZ3NbaV0uZGF0YS5idWYsIGRhdGFfbGVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE1ha2UgdGhlIHN5c3RlbSBjYWxsLiAqLworICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgeworICAgICAgICBzZWxlY3RfZXJyb3IoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKKyAgICBpZiAoIXRpbWVvdXQpCisgICAgICAgIGJ5dGVzX3NlbnQgPSBzZW5kbXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIEVORF9TRUxFQ1RfTE9PUChzKQorCisgICAgaWYgKGJ5dGVzX3NlbnQgPCAwKSB7CisgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChieXRlc19zZW50KTsKKworZmluYWxseToKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIGZvciAoaSA9IDA7IGkgPCBuY21zZ2J1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmY21zZ3NbaV0uZGF0YSk7CisgICAgUHlNZW1fRnJlZShjbXNncyk7CisgICAgUHlfWERFQ1JFRihjbXNnX2Zhc3QpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOworICAgIFB5TWVtX0ZyZWUoaW92cyk7CisgICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihzZW5kbXNnX2RvYywKKyJzZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSAtPiBjb3VudFxuXAorXG5cCitTZW5kIG5vcm1hbCBhbmQgYW5jaWxsYXJ5IGRhdGEgdG8gdGhlIHNvY2tldCwgZ2F0aGVyaW5nIHRoZVxuXAorbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdCBpbnRvXG5cCithIHNpbmdsZSBtZXNzYWdlLiAgVGhlIGJ1ZmZlcnMgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBub24tYW5jaWxsYXJ5XG5cCitkYXRhIGFzIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMgKGUuZy4gYnl0ZXMgb2JqZWN0cykuXG5cCitUaGUgYW5jZGF0YSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGFuY2lsbGFyeSBkYXRhIChjb250cm9sIG1lc3NhZ2VzKVxuXAorYXMgYW4gaXRlcmFibGUgb2YgemVybyBvciBtb3JlIHR1cGxlcyAoY21zZ19sZXZlbCwgY21zZ190eXBlLFxuXAorY21zZ19kYXRhKSwgd2hlcmUgY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZVxuXAorcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhXG5cCitpcyBhIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgZmxhZ3NcblwKK2FyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBzZW5kKCkuICBJZlxuXAorYWRkcmVzcyBpcyBzdXBwbGllZCBhbmQgbm90IE5vbmUsIGl0IHNldHMgYSBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvclxuXAordGhlIG1lc3NhZ2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeVxuXAorZGF0YSBzZW50LiIpOworI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKKwogLyogcy5zaHV0ZG93bihob3cpIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg4Miw2ICszNzcyLDM0IEBACiBDb250cm9sIHRoZSBzb2NrZXQgd2l0aCBXU0FJb2N0bCBzeXNjYWxsLiBDdXJyZW50bHkgc3VwcG9ydGVkICdjbWQnIHZhbHVlcyBhcmVcblwKIFNJT19SQ1ZBTEw6ICAnb3B0aW9uJyBtdXN0IGJlIG9uZSBvZiB0aGUgc29ja2V0LlJDVkFMTF8qIGNvbnN0YW50cy5cblwKIFNJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuIik7CisjZW5kaWYKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKK3N0YXRpYyBQeU9iamVjdCoKK3NvY2tfc2hhcmUoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJnKQoreworICAgIFdTQVBST1RPQ09MX0lORk8gaW5mbzsKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmcsICJJIiwgJnByb2Nlc3NJZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IFdTQUR1cGxpY2F0ZVNvY2tldChzLT5zb2NrX2ZkLCBwcm9jZXNzSWQsICZpbmZvKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXN1bHQgPT0gU09DS0VUX0VSUk9SKQorICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKSZpbmZvLCBzaXplb2YoaW5mbykpOworfQorUHlEb2NfU1RSVkFSKHNvY2tfc2hhcmVfZG9jLAorInNoYXJlKHByb2Nlc3NfaWQpIC0+IGJ5dGVzXG5cCitcblwKK1NoYXJlIHRoZSBzb2NrZXQgd2l0aCBhbm90aGVyIHByb2Nlc3MuICBUaGUgdGFyZ2V0IHByb2Nlc3MgaWRcblwKK211c3QgYmUgcHJvdmlkZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZXMgb2JqZWN0IHBhc3NlZCB0byB0aGUgdGFyZ2V0XG5cCitwcm9jZXNzLiAgVGhlcmUgdGhlIHNoYXJlZCBzb2NrZXQgY2FuIGJlIGluc3RhbnRpYXRlZCBieSBjYWxsaW5nXG5cCitzb2NrZXQuZnJvbXNoYXJlKCkuIik7CisKIAogI2VuZGlmCiAKQEAgLTI5MTQsNiArMzgzMiwxMCBAQAogICAgIHsiaW9jdGwiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19pb2N0bCwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHNvY2tfaW9jdGxfZG9jfSwKICNlbmRpZgorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICB7InNoYXJlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaGFyZSwgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHNvY2tfc2hhcmVfZG9jfSwKKyNlbmRpZgogICAgIHsibGlzdGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19saXN0ZW4sIE1FVEhfTywKICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5fZG9jfSwKICAgICB7InJlY3YiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdiwgTUVUSF9WQVJBUkdTLApAQCAtMjk0MCw2ICszODYyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgc2V0c29ja29wdF9kb2N9LAogICAgIHsic2h1dGRvd24iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaHV0ZG93biwgTUVUSF9PLAogICAgICAgICAgICAgICAgICAgICAgIHNodXRkb3duX2RvY30sCisjaWZkZWYgQ01TR19MRU4KKyAgICB7InJlY3Ztc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdm1zZywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHJlY3Ztc2dfZG9jfSwKKyAgICB7InJlY3Ztc2dfaW50byIsICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdm1zZ19pbnRvLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgcmVjdm1zZ19pbnRvX2RvYyx9LAorICAgIHsic2VuZG1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzAzMywxMyArMzk2Myw0MCBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmRvYmogIT0gTlVMTCAmJiBmZG9iaiAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIGZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOwotICAgICAgICBpZiAoZmQgPT0gKFNPQ0tFVF9UKSgtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGludmFsaWQgc29ja2V0IHZhbHVlIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAvKiByZWNyZWF0ZSBhIHNvY2tldCB0aGF0IHdhcyBkdXBsaWNhdGVkICovCisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGZkb2JqKSkgeworICAgICAgICAgICAgV1NBUFJPVE9DT0xfSU5GTyBpbmZvOworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoZmRvYmopICE9IHNpemVvZihpbmZvKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAic29ja2V0IGRlc2NyaXB0b3Igc3RyaW5nIGhhcyB3cm9uZyBzaXplLCAiCisgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgJXp1IGJ5dGVzLiIsIHNpemVvZihpbmZvKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KCZpbmZvLCBQeUJ5dGVzX0FTX1NUUklORyhmZG9iaiksIHNpemVvZihpbmZvKSk7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IFdTQVNvY2tldChGUk9NX1BST1RPQ09MX0lORk8sIEZST01fUFJPVE9DT0xfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIFdTQV9GTEFHX09WRVJMQVBQRUQpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICAgICAgICAgIHNldF9lcnJvcigpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZhbWlseSA9IGluZm8uaUFkZHJlc3NGYW1pbHk7CisgICAgICAgICAgICB0eXBlID0gaW5mby5pU29ja2V0VHlwZTsKKyAgICAgICAgICAgIHByb3RvID0gaW5mby5pUHJvdG9jb2w7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOworICAgICAgICAgICAgaWYgKGZkID09IChTT0NLRVRfVCkoLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgaW52YWxpZCBzb2NrZXQgdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CkBAIC0zMTE1LDI1ICs0MDcyLDM1IEBACiAgICAgICAgdmVyc2lvbiBvZiB0aGUgaG9zdG5hbWUsIHdoZXJlYXMgd2UgbmVlZCBhIFVuaWNvZGUgc3RyaW5nLgogICAgICAgIE90aGVyd2lzZSwgZ2V0aG9zdG5hbWUgYXBwYXJlbnRseSBhbHNvIHJldHVybnMgdGhlIEROUyBuYW1lLiAqLwogICAgIHdjaGFyX3QgYnVmW01BWF9DT01QVVRFUk5BTUVfTEVOR1RIICsgMV07Ci0gICAgRFdPUkQgc2l6ZSA9IHNpemVvZihidWYpIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgIERXT1JEIHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoYnVmKTsKKyAgICB3Y2hhcl90ICpuYW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaWYgKCFHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwgYnVmLCAmc2l6ZSkpIHsKLSAgICAgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX01PUkVfREFUQSkgewotICAgICAgICAgICAgLyogTVNETiBzYXlzIHRoaXMgbWF5IG9jY3VyICJiZWNhdXNlIEROUyBhbGxvd3MgbG9uZ2VyIG5hbWVzICovCi0gICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSAvKiBYWFg6IEknbSBub3Qgc3VyZSBob3cgdG8gaGFuZGxlIHRoaXMgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOwotICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUgLSAxKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKEdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19XaW5kb3dzRXJyb3IsIEdldExhc3RFcnJvcigpKTsKKworICAgIGlmIChHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwgYnVmLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1Ziwgc2l6ZSk7CisKKyAgICBpZiAoR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTU9SRV9EQVRBKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKKworICAgIC8qIE1TRE4gc2F5cyBFUlJPUl9NT1JFX0RBVEEgbWF5IG9jY3VyIGJlY2F1c2UgRE5TIGFsbG93cyBsb25nZXIKKyAgICAgICBuYW1lcyAqLworICAgIG5hbWUgPSBQeU1lbV9NYWxsb2Moc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplKSkKKyAgICB7CisgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShidWYsIHNpemUpOyAgICAgICAgICAgIAorCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihuYW1lLCBzaXplKTsKKyAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIGNoYXIgYnVmWzEwMjRdOwogICAgIGludCByZXM7CkBAIC0zMTUyLDYgKzQxMTksMzcgQEAKIFxuXAogUmV0dXJuIHRoZSBjdXJyZW50IGhvc3QgbmFtZS4iKTsKIAorI2lmZGVmIEhBVkVfU0VUSE9TVE5BTUUKK1B5RG9jX1NUUlZBUihzZXRob3N0bmFtZV9kb2MsCisic2V0aG9zdG5hbWUobmFtZSlcblxuXAorU2V0cyB0aGUgaG9zdG5hbWUgdG8gbmFtZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9zZXRob3N0bmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmhub2JqOworICAgIFB5X2J1ZmZlciBidWY7CisgICAgaW50IHJlcywgZmxhZyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlM6c2V0aG9zdG5hbWUiLCAmaG5vYmopKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0aG9zdG5hbWUiLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmhub2JqKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmbGFnID0gMTsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfR2V0QnVmZmVyKGhub2JqLCAmYnVmLCBQeUJVRl9TSU1QTEUpOworICAgIGlmICghcmVzKSB7CisgICAgICAgIHJlcyA9IHNldGhvc3RuYW1lKGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICBpZiAoZmxhZykKKyAgICAgICAgUHlfREVDUkVGKGhub2JqKTsKKyAgICBpZiAocmVzKQorICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKIAogLyogUHl0aG9uIGludGVyZmFjZSB0byBnZXRob3N0YnluYW1lKG5hbWUpLiAqLwogCkBAIC0zMTk4LDkgKzQxOTYsOCBAQAogCiAgICAgaWYgKGgtPmhfYWRkcnR5cGUgIT0gYWYpIHsKICAgICAgICAgLyogTGV0J3MgZ2V0IHJlYWwgZXJyb3IgbWVzc2FnZSB0byByZXR1cm4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RyZXJyb3IoRUFGTk9TVVBQT1JUKSk7Ci0KKyAgICAgICAgZXJybm8gPSBFQUZOT1NVUFBPUlQ7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMjgzLDcgKzQyODAsNyBAQAogI2VuZGlmCiAKICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyogY2FuJ3QgaGFwcGVuICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMzMxNSwxMSArNDMxMiw3IEBACiB7CiAgICAgY2hhciAqbmFtZTsKICAgICBzdHJ1Y3QgaG9zdGVudCAqaDsKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHI7Ci0jZWxzZQotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotI2VuZGlmCisgICAgc29ja19hZGRyX3QgYWRkcjsKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCkBAIC0zMzMxLDE5ICs0MzI0LDE5IEBACiAgICAgaW50IGJ1Zl9sZW4gPSAoc2l6ZW9mIGJ1ZikgLSAxOwogICAgIGludCBlcnJub3A7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHKSB8fCBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQorI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OmdldGhvc3RieW5hbWVfZXgiLCAiaWRuYSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGlwYWRkcihuYW1lLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSwgQUZfSU5FVCkgPCAwKQorICAgIGlmIChzZXRpcGFkZHIobmFtZSwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLCBBRl9JTkVUKSA8IDApCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNpZiAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCi0gICAgcmVzdWx0ID0gZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKKyAgICBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaCwgJmVycm5vcCk7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHKQogICAgIGggPSBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLCAmZXJybm9wKTsKQEAgLTMzNjMsOCArNDM1Niw4IEBACiAgICAgICAgYWRkci5zc19mYW1pbHkuCiAgICAgICAgVGhlcmVmb3JlLCB3ZSBjYXN0IHRoZSBzb2NrYWRkcl9zdG9yYWdlIGludG8gc29ja2FkZHIgdG8KICAgICAgICBhY2Nlc3Mgc2FfZmFtaWx5LiAqLwotICAgIHNhID0gKHN0cnVjdCBzb2NrYWRkciopJmFkZHI7Ci0gICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkciksCisgICAgc2EgPSBTQVMyU0EoJmFkZHIpOworICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzYS0+c2FfZmFtaWx5KTsKICNpZmRlZiBVU0VfR0VUSE9TVEJZTkFNRV9MT0NLCiAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKG5ldGRiX2xvY2spOwpAQCAtMzM4NywxMiArNDM4MCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGhvc3RieWFkZHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIEVOQUJMRV9JUFY2Ci0gICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcjsKLSNlbHNlCi0gICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7Ci0jZW5kaWYKLSAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyOworICAgIHNvY2tfYWRkcl90IGFkZHI7CisgICAgc3RydWN0IHNvY2thZGRyICpzYSA9IFNBUzJTQSgmYWRkcik7CiAgICAgY2hhciAqaXBfbnVtOwogICAgIHN0cnVjdCBob3N0ZW50ICpoOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwpAQCAtMzQwOSw3ICs0Mzk4LDcgQEAKICAgICBpbnQgYnVmX2xlbiA9IChzaXplb2YgYnVmKSAtIDE7CiAgICAgaW50IGVycm5vcDsKICNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcpIHx8IGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCisjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KQEAgLTM0MjQsNyArNDQxMyw3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBhZiA9IHNhLT5zYV9mYW1pbHk7CiAgICAgYXAgPSBOVUxMOwotICAgIGFsID0gMDsKKyAgICAvKiBhbCA9IDA7ICovCiAgICAgc3dpdGNoIChhZikgewogICAgIGNhc2UgQUZfSU5FVDoKICAgICAgICAgYXAgPSAoY2hhciAqKSYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNhKS0+c2luX2FkZHI7CkBAIC0zNDM3LDEzICs0NDI2LDEzIEBACiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNpZiAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCi0gICAgcmVzdWx0ID0gZ2V0aG9zdGJ5YWRkcl9yKGFwLCBhbCwgYWYsCisgICAgZ2V0aG9zdGJ5YWRkcl9yKGFwLCBhbCwgYWYsCiAgICAgICAgICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKICAgICAgICAgJmgsICZlcnJub3ApOwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRykKQEAgLTM0NjEsNyArNDQ1MCw3IEBACiAgICAgaCA9IGdldGhvc3RieWFkZHIoYXAsIGFsLCBhZik7CiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpLCBhZik7CisgICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLCBhZik7CiAjaWZkZWYgVVNFX0dFVEhPU1RCWU5BTUVfTE9DSwogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhuZXRkYl9sb2NrKTsKICNlbmRpZgpAQCAtMzQ5Myw3ICs0NDgyLDcgQEAKICAgICBzcCA9IGdldHNlcnZieW5hbWUobmFtZSwgcHJvdG8pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInNlcnZpY2UvcHJvdG8gbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VydmljZS9wcm90byBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIG50b2hzKHNwLT5zX3BvcnQpKTsKQEAgLTM1MzAsNyArNDUxOSw3IEBACiAgICAgc3AgPSBnZXRzZXJ2Ynlwb3J0KGh0b25zKChzaG9ydClwb3J0KSwgcHJvdG8pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInBvcnQvcHJvdG8gbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicG9ydC9wcm90byBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzcC0+c19uYW1lKTsKQEAgLTM1NTksNyArNDU0OCw3IEBACiAgICAgc3AgPSBnZXRwcm90b2J5bmFtZShuYW1lKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJwcm90b2NvbCBub3QgZm91bmQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJwcm90b2NvbCBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHNwLT5wX3Byb3RvKTsKQEAgLTM4MTQsNyArNDgwMyw3IEBACiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopKCZidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGJ1ZikpOwogCi0gICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfYXRvbiIpOwogICAgIHJldHVybiBOVUxMOwogCkBAIC0zODM1LDcgKzQ4MjQsNyBAQAogICAgICAgICBwYWNrZWRfYWRkciA9IGluZXRfYWRkcihpcF9hZGRyKTsKIAogICAgICAgICBpZiAocGFja2VkX2FkZHIgPT0gSU5BRERSX05PTkUpIHsgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGFkZHJlc3MgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9hdG9uIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMzg2Nyw3ICs0ODU2LDcgQEAKICAgICB9CiAKICAgICBpZiAoYWRkcl9sZW4gIT0gc2l6ZW9mKHBhY2tlZF9hZGRyKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJwYWNrZWQgSVAgd3JvbmcgbGVuZ3RoIGZvciBpbmV0X250b2EiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzkwMiw3ICs0ODkxLDcgQEAKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9JUFY2KSAmJiBkZWZpbmVkKEFGX0lORVQ2KQogICAgIGlmKGFmID09IEFGX0lORVQ2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBBRl9JTkVUNiwgSVB2NiBpcyBkaXNhYmxlZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zOTEwLDEwICs0ODk5LDEwIEBACiAKICAgICByZXR2YWwgPSBpbmV0X3B0b24oYWYsIGlwLCBwYWNrZWQpOwogICAgIGlmIChyZXR2YWwgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhzb2NrZXRfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSBpZiAocmV0dmFsID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9wdG9uIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSBpZiAoYWYgPT0gQUZfSU5FVCkgewpAQCAtMzkyNSw3ICs0OTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKICNlbmRpZgogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiB9CkBAIC0zOTc3LDcgKzQ5NjYsNyBAQAogCiAgICAgcmV0dmFsID0gaW5ldF9udG9wKGFmLCBwYWNrZWQsIGlwLCBzaXplb2YoaXApKTsKICAgICBpZiAoIXJldHZhbCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocmV0dmFsKTsKQEAgLTM5OTYsNyArNDk4NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGFkZHJpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QqIGt3YXJncykKIHsKLSAgICBzdGF0aWMgY2hhcioga3duYW1lc1tdID0geyJob3N0IiwgInBvcnQiLCAiZmFtaWx5IiwgInR5cGUiLCAicHJvdG8iLCAKKyAgICBzdGF0aWMgY2hhcioga3duYW1lc1tdID0geyJob3N0IiwgInBvcnQiLCAiZmFtaWx5IiwgInR5cGUiLCAicHJvdG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgMH07CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqcmVzOwogICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzMCA9IE5VTEw7CkBAIC00MDExLDcgKzUwMDAsNyBAQAogCiAgICAgZmFtaWx5ID0gc29ja3R5cGUgPSBwcm90b2NvbCA9IGZsYWdzID0gMDsKICAgICBmYW1pbHkgPSBBRl9VTlNQRUM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098aWlpaTpnZXRhZGRyaW5mbyIsIAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfGlpaWk6Z2V0YWRkcmluZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBrd25hbWVzLCAmaG9iaiwgJnBvYmosICZmYW1pbHksICZzb2NrdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb3RvY29sLCAmZmxhZ3MpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDAxOSw3ICs1MDA4LDkgQEAKICAgICBpZiAoaG9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGhwdHIgPSBOVUxMOwogICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGhvYmopKSB7Ci0gICAgICAgIGlkbmEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGhvYmosICJlbmNvZGUiLCAicyIsICJpZG5hIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVuY29kZSk7CisKKyAgICAgICAgaWRuYSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaG9iaiwgJlB5SWRfZW5jb2RlLCAicyIsICJpZG5hIik7CiAgICAgICAgIGlmICghaWRuYSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhpZG5hKSk7CkBAIC00MDQ2LDcgKzUwMzcsNyBAQAogICAgIH0gZWxzZSBpZiAocG9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHBwdHIgPSAoY2hhciAqKU5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgIkludCBvciBTdHJpbmcgZXhwZWN0ZWQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJJbnQgb3IgU3RyaW5nIGV4cGVjdGVkIik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KICAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKQEAgLTQxNDksNyArNTE0MCw3IEBACiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgaWYgKHJlcy0+YWlfbmV4dCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJzb2NrYWRkciByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzZXMiKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KQEAgLTQxNTcsNyArNTE0OCw3IEBACiAgICAgY2FzZSBBRl9JTkVUOgogICAgICAgICB7CiAgICAgICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHNhKSAhPSAyKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgIklQdjQgc29ja2FkZHIgbXVzdCBiZSAyIHR1cGxlIik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KQEAgLTQyNDQsNiArNTIzNSwxNjMgQEAKIEEgdmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgdGhhdCBuZXcgc29ja2V0IG9iamVjdHMgaGF2ZSBubyB0aW1lb3V0LlxuXAogV2hlbiB0aGUgc29ja2V0IG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgdGhlIGRlZmF1bHQgaXMgTm9uZS4iKTsKIAorI2lmZGVmIEhBVkVfSUZfTkFNRUlOREVYCisvKiBQeXRob24gQVBJIGZvciBnZXR0aW5nIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X2lmX25hbWVpbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBpbnQgaTsKKyAgICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICpuaTsKKworICAgIG5pID0gaWZfbmFtZWluZGV4KCk7CisgICAgaWYgKG5pID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBuaVtpXS5pZl9pbmRleCAhPSAwICYmIGkgPCBJTlRfTUFYOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm5pX3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiSU8mIiwKKyAgICAgICAgICAgICAgICBuaVtpXS5pZl9pbmRleCwgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCwgbmlbaV0uaWZfbmFtZSk7CisKKyAgICAgICAgaWYgKG5pX3R1cGxlID09IE5VTEwgfHwgUHlMaXN0X0FwcGVuZChsaXN0LCBuaV90dXBsZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobmlfdHVwbGUpOworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgaWZfZnJlZW5hbWVpbmRleChuaSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobmlfdHVwbGUpOworICAgIH0KKworICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgIHJldHVybiBsaXN0OworfQorCitQeURvY19TVFJWQVIoaWZfbmFtZWluZGV4X2RvYywKKyJpZl9uYW1laW5kZXgoKVxuXAorXG5cCitSZXR1cm5zIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmZvcm1hdGlvbiAoaW5kZXgsIG5hbWUpIHR1cGxlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9uYW1ldG9pbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9uYW1lOworICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmlmX25hbWV0b2luZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb25hbWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGluZGV4ID0gaWZfbmFtZXRvaW5kZXgoUHlCeXRlc19BU19TVFJJTkcob25hbWUpKTsKKyAgICBQeV9ERUNSRUYob25hbWUpOworICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgIC8qIGlmX25hbWV0b2luZGV4KCkgZG9lc24ndCBzZXQgZXJybm8gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJubyBpbnRlcmZhY2Ugd2l0aCB0aGlzIG5hbWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGluZGV4KTsKK30KKworUHlEb2NfU1RSVkFSKGlmX25hbWV0b2luZGV4X2RvYywKKyJpZl9uYW1ldG9pbmRleChpZl9uYW1lKVxuXAorXG5cCitSZXR1cm5zIHRoZSBpbnRlcmZhY2UgaW5kZXggY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJmYWNlIG5hbWUgaWZfbmFtZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9pbmRleHRvbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGluZGV4OworICAgIGNoYXIgbmFtZVtJRl9OQU1FU0laRSArIDFdOworCisgICAgaW5kZXggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoYXJnKTsKKyAgICBpZiAoaW5kZXggPT0gKHVuc2lnbmVkIGxvbmcpIC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpZl9pbmRleHRvbmFtZShpbmRleCwgbmFtZSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KG5hbWUpOworfQorCitQeURvY19TVFJWQVIoaWZfaW5kZXh0b25hbWVfZG9jLAorImlmX2luZGV4dG9uYW1lKGlmX2luZGV4KVxuXAorXG5cCitSZXR1cm5zIHRoZSBpbnRlcmZhY2UgbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcmZhY2UgaW5kZXggaWZfaW5kZXguIik7CisKKyNlbmRpZiAgLyogSEFWRV9JRl9OQU1FSU5ERVggKi8KKworCisjaWZkZWYgQ01TR19MRU4KKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gQ01TR19MRU4obGVuZ3RoKS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9DTVNHX0xFTihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgc2l6ZV90IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpDTVNHX0xFTiIsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuZ3RoIDwgMCB8fCAhZ2V0X0NNU0dfTEVOKGxlbmd0aCwgJnJlc3VsdCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsICJDTVNHX0xFTigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihDTVNHX0xFTl9kb2MsCisiQ01TR19MRU4obGVuZ3RoKSAtPiBjb250cm9sIG1lc3NhZ2UgbGVuZ3RoXG5cCitcblwKK1JldHVybiB0aGUgdG90YWwgbGVuZ3RoLCB3aXRob3V0IHRyYWlsaW5nIHBhZGRpbmcsIG9mIGFuIGFuY2lsbGFyeVxuXAorZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGguICBUaGlzIHZhbHVlIGNhblxuXAorb2Z0ZW4gYmUgdXNlZCBhcyB0aGUgYnVmZmVyIHNpemUgZm9yIHJlY3Ztc2coKSB0byByZWNlaXZlIGEgc2luZ2xlXG5cCitpdGVtIG9mIGFuY2lsbGFyeSBkYXRhLCBidXQgUkZDIDM1NDIgcmVxdWlyZXMgcG9ydGFibGUgYXBwbGljYXRpb25zIHRvXG5cCit1c2UgQ01TR19TUEFDRSgpIGFuZCB0aHVzIGluY2x1ZGUgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGVcblwKK2l0ZW0gd2lsbCBiZSB0aGUgbGFzdCBpbiB0aGUgYnVmZmVyLiAgUmFpc2VzIE92ZXJmbG93RXJyb3IgaWYgbGVuZ3RoXG5cCitpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSByYW5nZSBvZiB2YWx1ZXMuIik7CisKKworI2lmZGVmIENNU0dfU1BBQ0UKKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gQ01TR19TUEFDRShsZW5ndGgpLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X0NNU0dfU1BBQ0UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46Q01TR19TUEFDRSIsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuZ3RoIDwgMCB8fCAhZ2V0X0NNU0dfU1BBQ0UobGVuZ3RoLCAmcmVzdWx0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDTVNHX1NQQUNFKCkgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSKENNU0dfU1BBQ0VfZG9jLAorIkNNU0dfU1BBQ0UobGVuZ3RoKSAtPiBidWZmZXIgc2l6ZVxuXAorXG5cCitSZXR1cm4gdGhlIGJ1ZmZlciBzaXplIG5lZWRlZCBmb3IgcmVjdm1zZygpIHRvIHJlY2VpdmUgYW4gYW5jaWxsYXJ5XG5cCitkYXRhIGl0ZW0gd2l0aCBhc3NvY2lhdGVkIGRhdGEgb2YgdGhlIGdpdmVuIGxlbmd0aCwgYWxvbmcgd2l0aCBhbnlcblwKK3RyYWlsaW5nIHBhZGRpbmcuICBUaGUgYnVmZmVyIHNwYWNlIG5lZWRlZCB0byByZWNlaXZlIG11bHRpcGxlIGl0ZW1zXG5cCitpcyB0aGUgc3VtIG9mIHRoZSBDTVNHX1NQQUNFKCkgdmFsdWVzIGZvciB0aGVpciBhc3NvY2lhdGVkIGRhdGFcblwKK2xlbmd0aHMuICBSYWlzZXMgT3ZlcmZsb3dFcnJvciBpZiBsZW5ndGggaXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGVcblwKK3JhbmdlIG9mIHZhbHVlcy4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX1NQQUNFICovCisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKwogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKi8KIApAQCAtNDI1Niw2ICs1NDA0LDEwIEBACiAgICAgIE1FVEhfVkFSQVJHUywgZ2V0aG9zdGJ5YWRkcl9kb2N9LAogICAgIHsiZ2V0aG9zdG5hbWUiLCAgICAgICAgICAgICBzb2NrZXRfZ2V0aG9zdG5hbWUsCiAgICAgIE1FVEhfTk9BUkdTLCAgZ2V0aG9zdG5hbWVfZG9jfSwKKyNpZmRlZiBIQVZFX1NFVEhPU1ROQU1FCisgICAgeyJzZXRob3N0bmFtZSIsICAgICAgICAgICAgIHNvY2tldF9zZXRob3N0bmFtZSwKKyAgICAgTUVUSF9WQVJBUkdTLCAgc2V0aG9zdG5hbWVfZG9jfSwKKyNlbmRpZgogICAgIHsiZ2V0c2VydmJ5bmFtZSIsICAgICAgICAgICBzb2NrZXRfZ2V0c2VydmJ5bmFtZSwKICAgICAgTUVUSF9WQVJBUkdTLCBnZXRzZXJ2YnluYW1lX2RvY30sCiAgICAgeyJnZXRzZXJ2Ynlwb3J0IiwgICAgICAgICAgIHNvY2tldF9nZXRzZXJ2Ynlwb3J0LApAQCAtNDI5Niw2ICs1NDQ4LDIyIEBACiAgICAgIE1FVEhfTk9BUkdTLCBnZXRkZWZhdWx0dGltZW91dF9kb2N9LAogICAgIHsic2V0ZGVmYXVsdHRpbWVvdXQiLCAgICAgICBzb2NrZXRfc2V0ZGVmYXVsdHRpbWVvdXQsCiAgICAgIE1FVEhfTywgc2V0ZGVmYXVsdHRpbWVvdXRfZG9jfSwKKyNpZmRlZiBIQVZFX0lGX05BTUVJTkRFWAorICAgIHsiaWZfbmFtZWluZGV4Iiwgc29ja2V0X2lmX25hbWVpbmRleCwKKyAgICAgTUVUSF9OT0FSR1MsIGlmX25hbWVpbmRleF9kb2N9LAorICAgIHsiaWZfbmFtZXRvaW5kZXgiLCBzb2NrZXRfaWZfbmFtZXRvaW5kZXgsCisgICAgIE1FVEhfVkFSQVJHUywgaWZfbmFtZXRvaW5kZXhfZG9jfSwKKyAgICB7ImlmX2luZGV4dG9uYW1lIiwgc29ja2V0X2lmX2luZGV4dG9uYW1lLAorICAgICBNRVRIX08sIGlmX2luZGV4dG9uYW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBDTVNHX0xFTgorICAgIHsiQ01TR19MRU4iLCAgICAgICAgICAgICAgICBzb2NrZXRfQ01TR19MRU4sCisgICAgIE1FVEhfVkFSQVJHUywgQ01TR19MRU5fZG9jfSwKKyNpZmRlZiBDTVNHX1NQQUNFCisgICAgeyJDTVNHX1NQQUNFIiwgICAgICAgICAgICAgIHNvY2tldF9DTVNHX1NQQUNFLAorICAgICBNRVRIX1ZBUkFSR1MsIENNU0dfU1BBQ0VfZG9jfSwKKyNlbmRpZgorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTQ0MjgsMjcgKzU1OTYsMjQgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNvY2tldF9lcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfSU9FcnJvciwgTlVMTCk7Ci0gICAgaWYgKHNvY2tldF9lcnJvciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeVNvY2tldE1vZHVsZUFQSS5lcnJvciA9IHNvY2tldF9lcnJvcjsKLSAgICBQeV9JTkNSRUYoc29ja2V0X2Vycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgc29ja2V0X2Vycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlTb2NrZXRNb2R1bGVBUEkuZXJyb3IgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgc29ja2V0X2hlcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmhlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfZXJyb3IsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgTlVMTCk7CiAgICAgaWYgKHNvY2tldF9oZXJyb3IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvY2tldF9oZXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaGVycm9yIiwgc29ja2V0X2hlcnJvcik7Ci0gICAgc29ja2V0X2dhaWVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZ2FpZXJyb3IiLCBzb2NrZXRfZXJyb3IsCisgICAgc29ja2V0X2dhaWVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZ2FpZXJyb3IiLCBQeUV4Y19PU0Vycm9yLAogICAgICAgICBOVUxMKTsKICAgICBpZiAoc29ja2V0X2dhaWVycm9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzb2NrZXRfZ2FpZXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZ2FpZXJyb3IiLCBzb2NrZXRfZ2FpZXJyb3IpOwogICAgIHNvY2tldF90aW1lb3V0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQudGltZW91dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0X2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCBOVUxMKTsKICAgICBpZiAoc29ja2V0X3RpbWVvdXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlTb2NrZXRNb2R1bGVBUEkudGltZW91dF9lcnJvciA9IHNvY2tldF90aW1lb3V0OwpAQCAtNDYzNCw2ICs1Nzk5LDMxIEBACiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkJEQUREUl9MT0NBTCIsICIwMDowMDowMDpGRjpGRjpGRiIpOwogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICAvKiBDb250cm9sbGVyIEFyZWEgTmV0d29yayAqLworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9DQU4iLCBBRl9DQU4pOworI2VuZGlmCisjaWZkZWYgUEZfQ0FOCisgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfQ0FOIiwgUEZfQ0FOKTsKKyNlbmRpZgorCisvKiBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzICovCisjaWZkZWYgQUZfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX1JEUyIsIEFGX1JEUyk7CisjZW5kaWYKKyNpZmRlZiBQRl9SRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfUkRTIiwgUEZfUkRTKTsKKyNlbmRpZgorCisvKiBLZXJuZWwgZXZlbnQgbWVzc2FnZXMgKi8KKyNpZmRlZiBQRl9TWVNURU0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfU1lTVEVNIiwgUEZfU1lTVEVNKTsKKyNlbmRpZgorI2lmZGVmIEFGX1NZU1RFTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9TWVNURU0iLCBBRl9TWVNURU0pOworI2VuZGlmCisKICNpZmRlZiBBRl9QQUNLRVQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9QQUNLRVQpOwogI2VuZGlmCkBAIC00NzgzLDYgKzU5NzMsMTggQEAKICNpZmRlZiAgU09fU0VURklCCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1NFVEZJQiIsIFNPX1NFVEZJQik7CiAjZW5kaWYKKyNpZmRlZiAgU09fUEFTU0NSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEFTU0NSRUQiLCBTT19QQVNTQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgU09fUEVFUkNSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEVFUkNSRUQiLCBTT19QRUVSQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgTE9DQUxfUEVFUkNSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9DQUxfUEVFUkNSRUQiLCBMT0NBTF9QRUVSQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgU09fQklORFRPREVWSUNFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNDc5MSw2ICs1OTkzLDE3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTUFYQ09OTiIsIDUpOyAvKiBDb21tb24gdmFsdWUgKi8KICNlbmRpZgogCisgICAgLyogQW5jaWxsaWFyeSBtZXNzYWdlIHR5cGVzICovCisjaWZkZWYgIFNDTV9SSUdIVFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX1JJR0hUUyIsIFNDTV9SSUdIVFMpOworI2VuZGlmCisjaWZkZWYgIFNDTV9DUkVERU5USUFMUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFREVOVElBTFMiLCBTQ01fQ1JFREVOVElBTFMpOworI2VuZGlmCisjaWZkZWYgIFNDTV9DUkVEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFRFMiLCBTQ01fQ1JFRFMpOworI2VuZGlmCisKICAgICAvKiBGbGFncyBmb3Igc2VuZCwgcmVjdiAqLwogI2lmZGVmICBNU0dfT09CCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19PT0IiLCBNU0dfT09CKTsKQEAgLTQ4MjIsNiArNjAzNSwzMyBAQAogI2lmZGVmICBNU0dfRVRBRwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRVRBRyIsIE1TR19FVEFHKTsKICNlbmRpZgorI2lmZGVmICBNU0dfTk9TSUdOQUwKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX05PU0lHTkFMIiwgTVNHX05PU0lHTkFMKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTk9USUZJQ0FUSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1RJRklDQVRJT04iLCBNU0dfTk9USUZJQ0FUSU9OKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQ01TR19DTE9FWEVDCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19DTVNHX0NMT0VYRUMiLCBNU0dfQ01TR19DTE9FWEVDKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfRVJSUVVFVUUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VSUlFVRVVFIiwgTVNHX0VSUlFVRVVFKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQ09ORklSTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQ09ORklSTSIsIE1TR19DT05GSVJNKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTU9SRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTU9SRSIsIE1TR19NT1JFKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfRU9GCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19FT0YiLCBNU0dfRU9GKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQkNBU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0JDQVNUIiwgTVNHX0JDQVNUKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTUNBU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX01DQVNUIiwgTVNHX01DQVNUKTsKKyNlbmRpZgogCiAgICAgLyogUHJvdG9jb2wgbGV2ZWwgYW5kIG51bWJlcnMsIHVzYWJsZSBmb3IgW2dzXWV0c29ja29wdCAqLwogI2lmZGVmICBTT0xfU09DS0VUCkBAIC00ODU3LDYgKzYwOTcsNDkgQEAKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9VRFAiLCAxNyk7CiAjZW5kaWYKKyNpZmRlZiBTT0xfQ0FOX0JBU0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0NBTl9CQVNFIiwgU09MX0NBTl9CQVNFKTsKKyNlbmRpZgorI2lmZGVmIFNPTF9DQU5fUkFXCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9DQU5fUkFXIiwgU09MX0NBTl9SQVcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXIiwgQ0FOX1JBVyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FRkZfRkxBRyIsIENBTl9FRkZfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SVFJfRkxBRyIsIENBTl9SVFJfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FUlJfRkxBRyIsIENBTl9FUlJfRkxBRyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1NGRl9NQVNLIiwgQ0FOX1NGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VGRl9NQVNLIiwgQ0FOX0VGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VSUl9NQVNLIiwgQ0FOX0VSUl9NQVNLKTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfRklMVEVSIiwgQ0FOX1JBV19GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0VSUl9GSUxURVIiLCBDQU5fUkFXX0VSUl9GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0xPT1BCQUNLIiwgQ0FOX1JBV19MT09QQkFDSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfUkVDVl9PV05fTVNHUyIsIENBTl9SQVdfUkVDVl9PV05fTVNHUyk7CisjZW5kaWYKKyNpZmRlZiBTT0xfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9SRFMiLCBTT0xfUkRTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DQU5DRUxfU0VOVF9UTworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ0FOQ0VMX1NFTlRfVE8iLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOworI2VuZGlmCisjaWZkZWYgUkRTX0dFVF9NUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfR0VUX01SIiwgUkRTX0dFVF9NUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfRlJFRV9NUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfRlJFRV9NUiIsIFJEU19GUkVFX01SKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRUNWRVJSCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRUNWRVJSIiwgUkRTX1JFQ1ZFUlIpOworI2VuZGlmCisjaWZkZWYgUkRTX0NPTkdfTU9OSVRPUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ09OR19NT05JVE9SIiwgUkRTX0NPTkdfTU9OSVRPUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfR0VUX01SX0ZPUl9ERVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19HRVRfTVJfRk9SX0RFU1QiLCBSRFNfR0VUX01SX0ZPUl9ERVNUKTsKKyNlbmRpZgogI2lmZGVmICBJUFBST1RPX0lQCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSVAiLCBJUFBST1RPX0lQKTsKICNlbHNlCkBAIC00OTYxLDYgKzYyNDQsOSBAQAogI2lmZGVmICBJUFBST1RPX1ZSUlAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19WUlJQIiwgSVBQUk9UT19WUlJQKTsKICNlbmRpZgorI2lmZGVmICBJUFBST1RPX1NDVFAKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19TQ1RQIiwgSVBQUk9UT19TQ1RQKTsKKyNlbmRpZgogI2lmZGVmICBJUFBST1RPX0JJUAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0JJUCIsIElQUFJPVE9fQklQKTsKICNlbmRpZgpAQCAtNDk3NCw2ICs2MjYwLDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fTUFYIiwgSVBQUk9UT19NQVgpOwogI2VuZGlmCiAKKyNpZmRlZiAgU1lTUFJPVE9fQ09OVFJPTAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTWVNQUk9UT19DT05UUk9MIiwgU1lTUFJPVE9fQ09OVFJPTCk7CisjZW5kaWYKKwogICAgIC8qIFNvbWUgcG9ydCBjb25maWd1cmF0aW9uICovCiAjaWZkZWYgIElQUE9SVF9SRVNFUlZFRAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBPUlRfUkVTRVJWRUQiLCBJUFBPUlRfUkVTRVJWRUQpOwpAQCAtNTA3Niw2ICs2MzY2LDkgQEAKICNpZmRlZiAgSVBfTUFYX01FTUJFUlNISVBTCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX01BWF9NRU1CRVJTSElQUyIsIElQX01BWF9NRU1CRVJTSElQUyk7CiAjZW5kaWYKKyNpZmRlZiAgSVBfVFJBTlNQQVJFTlQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfVFJBTlNQQVJFTlQiLCBJUF9UUkFOU1BBUkVOVCk7CisjZW5kaWYKIAogICAgIC8qIElQdjYgW2dzXWV0c29ja29wdCBvcHRpb25zLCBkZWZpbmVkIGluIFJGQzI1NTMgKi8KICNpZmRlZiAgSVBWNl9KT0lOX0dST1VQCkBAIC01MjA2LDYgKzY0OTksNDQgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBYX1RZUEUiLCBJUFhfVFlQRSk7CiAjZW5kaWYKIAorLyogUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAqLworI2lmZGVmIFJEU19DTVNHX1JETUFfQVJHUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX0FSR1MiLCBSRFNfQ01TR19SRE1BX0FSR1MpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9ERVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfREVTVCIsIFJEU19DTVNHX1JETUFfREVTVCk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX01BUAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX01BUCIsIFJEU19DTVNHX1JETUFfTUFQKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfU1RBVFVTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfU1RBVFVTIiwgUkRTX0NNU0dfUkRNQV9TVEFUVVMpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9VUERBVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9VUERBVEUiLCBSRFNfQ01TR19SRE1BX1VQREFURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9SRUFEV1JJVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfUkVBRFdSSVRFIiwgUkRTX1JETUFfUkVBRFdSSVRFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0ZFTkNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0ZFTkNFIiwgUkRTX1JETUFfRkVOQ0UpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfSU5WQUxJREFURQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9JTlZBTElEQVRFIiwgUkRTX1JETUFfSU5WQUxJREFURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9VU0VfT05DRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9VU0VfT05DRSIsIFJEU19SRE1BX1VTRV9PTkNFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0RPTlRXQUlUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0RPTlRXQUlUIiwgUkRTX1JETUFfRE9OVFdBSVQpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfTk9USUZZX01FCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX05PVElGWV9NRSIsIFJEU19SRE1BX05PVElGWV9NRSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9TSUxFTlQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfU0lMRU5UIiwgUkRTX1JETUFfU0lMRU5UKTsKKyNlbmRpZgorCiAgICAgLyogZ2V0e2FkZHIsbmFtZX1pbmZvIHBhcmFtZXRlcnMgKi8KICNpZmRlZiBFQUlfQUREUkZBTUlMWQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfQUREUkZBTUlMWSIsIEVBSV9BRERSRkFNSUxZKTsKQEAgLTUzMzIsNyArNjY2Myw3IEBACiAgICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTfTsKICAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMifTsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvcihpID0gMDsgaTxzaXplb2YoY29kZXMpL3NpemVvZigqY29kZXMpOyArK2kpIHsKKyAgICAgICAgZm9yKGkgPSAwOyBpPFB5X0FSUkFZX0xFTkdUSChjb2Rlcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGNvZGVzW2ldKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmggYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCmluZGV4IGYwNjQ3OTUuLjA0MzU4NzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaApAQCAtNTksOSArNTksMTIgQEAKICNpbmNsdWRlIDxibHVldG9vdGguaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorIyBpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKICMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jIGluY2x1ZGUgPG5ldC9pZi5oPgogIyBpbmNsdWRlIDxuZXRwYWNrZXQvcGFja2V0Lmg+CiAjZW5kaWYKIApAQCAtNjksNiArNzIsMjEgQEAKICMgaW5jbHVkZSA8bGludXgvdGlwYy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisjaW5jbHVkZSA8bGludXgvY2FuLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19TWVNfRE9NQUlOX0gKKyNpbmNsdWRlIDxzeXMvc3lzX2RvbWFpbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKyNpbmNsdWRlIDxzeXMva2Vybl9jb250cm9sLmg+CisjZW5kaWYKKwogI2lmbmRlZiBQeV9fU09DS0VUX0gKICNkZWZpbmUgUHlfX1NPQ0tFVF9ICiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEwNCw2ICsxMjIsNyBAQAogLyogU29ja2V0IGFkZHJlc3MgKi8KIHR5cGVkZWYgdW5pb24gc29ja19hZGRyIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gaW47CisgICAgc3RydWN0IHNvY2thZGRyIHNhOwogI2lmZGVmIEFGX1VOSVgKICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gdW47CiAjZW5kaWYKQEAgLTEyMyw2ICsxNDIsMTIgQEAKICNpZmRlZiBIQVZFX05FVFBBQ0tFVF9QQUNLRVRfSAogICAgIHN0cnVjdCBzb2NrYWRkcl9sbCBsbDsKICNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0gKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuIGNhbjsKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0tFUk5fQ09OVFJPTF9ICisgICAgc3RydWN0IHNvY2thZGRyX2N0bCBjdGw7CisjZW5kaWYKIH0gc29ja19hZGRyX3Q7CiAKIC8qIFRoZSBvYmplY3QgaG9sZGluZyBhIHNvY2tldC4gIEl0IGhvbGRzIHNvbWUgZXh0cmEgaW5mb3JtYXRpb24sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZS5oIGIvTW9kdWxlcy9zcmUuaAppbmRleCBkMzg5YjQ2Li4wMGI1MmFhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZS5oCisrKyBiL01vZHVsZXMvc3JlLmgKQEAgLTI2LDcgKzI2LDggQEAKICAgICBQeU9iamVjdCogcGF0dGVybjsgLyogcGF0dGVybiBzb3VyY2UgKG9yIE5vbmUpICovCiAgICAgaW50IGZsYWdzOyAvKiBmbGFncyB1c2VkIHdoZW4gY29tcGlsaW5nIHBhdHRlcm4gc291cmNlICovCiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotCWludCBjaGFyc2l6ZTsgLyogcGF0dGVybiBjaGFyc2l6ZSAob3IgLTEpICovCisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemU7IC8qIHBhdHRlcm4gY2hhcnNpemUgKG9yIC0xKSAqLworICAgIGludCBjaGFyc2l6ZTsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICAvKiBwYXR0ZXJuIGNvZGUgKi8KICAgICBQeV9zc2l6ZV90IGNvZGVzaXplOwpAQCAtNjgsNiArNjksNyBAQAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MsIGVuZHBvczsKICAgICAvKiBjaGFyYWN0ZXIgc2l6ZSAqLworICAgIGludCBsb2dpY2FsX2NoYXJzaXplOyAvKiBraW5kIG9mIHRoaW5nOiAxIC0gYnl0ZXMsIDIvNCAtIHVuaWNvZGUgKi8KICAgICBpbnQgY2hhcnNpemU7CiAgICAgLyogcmVnaXN0ZXJzICovCiAgICAgUHlfc3NpemVfdCBsYXN0aW5kZXg7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jIGIvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYwppbmRleCA1Yjg2OTYzLi44Yjg3N2NmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCisrKyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKQEAgLTcwLDcgKzcwLDcgQEAKIAogICAgIFB5X3NzaXplX3QgYXJndl9sZW4sIHNjcmlwdGxlbjsKICAgICBQeU9iamVjdCAqc2NyaXB0b2JqOwotICAgIFB5X1VOSUNPREUgKmF0c2xhc2gsICphdHN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2xhc2g7CiAgICAgUHlPYmplY3QgKmFyZ3YgPSBQeVN5c19HZXRPYmplY3QoImFyZ3YiKTsKIAogICAgIGlmIChhcmd2ID09IE5VTEwpIHsKQEAgLTkwLDE2ICs5MCwxNiBAQAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNjcmlwdG9iaikpIHsKICAgICAgICAgcmV0dXJuKE5VTEwpOwogICAgIH0KLSAgICBzY3JpcHRsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2NyaXB0b2JqKTsKKyAgICBzY3JpcHRsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzY3JpcHRvYmopOwogICAgIGlmIChzY3JpcHRsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4oTlVMTCk7CiAgICAgfQogCi0gICAgYXRzdGFydCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNjcmlwdG9iaik7Ci0gICAgYXRzbGFzaCA9IFB5X1VOSUNPREVfc3RycmNocihhdHN0YXJ0LCBTRVApOwotICAgIGlmIChhdHNsYXNoKSB7Ci0gICAgICAgIHJldHVybihQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYXRzbGFzaCArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bGVuIC0gKGF0c2xhc2ggLSBhdHN0YXJ0KSAtIDEpKTsKKyAgICBzbGFzaCA9IFB5VW5pY29kZV9GaW5kQ2hhcihzY3JpcHRvYmosIFNFUCwgMCwgc2NyaXB0bGVuLCAtMSk7CisgICAgaWYgKHNsYXNoID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2xhc2ggIT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2NyaXB0b2JqLCBzbGFzaCwgc2NyaXB0bGVuKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoc2NyaXB0b2JqKTsKICAgICAgICAgcmV0dXJuKHNjcmlwdG9iaik7CkBAIC0yOTEsNiArMjkxLDkgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1BJRCIsICAgICAgICAgTE9HX1BJRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DT05TIiwgICAgICAgIExPR19DT05TKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX05ERUxBWSIsICBMT0dfTkRFTEFZKTsKKyNpZmRlZiBMT0dfT0RFTEFZCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19PREVMQVkiLCAgTE9HX09ERUxBWSk7CisjZW5kaWYKICNpZmRlZiBMT0dfTk9XQUlUCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19OT1dBSVQiLCAgTE9HX05PV0FJVCk7CiAjZW5kaWYKQEAgLTMzMSw1ICszMzQsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0NST04iLCAgICAgICAgTE9HX0NST04pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfVVVDUCIsICAgICAgICBMT0dfVVVDUCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19ORVdTIiwgICAgICAgIExPR19ORVdTKTsKKworI2lmZGVmIExPR19BVVRIUFJJVgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQVVUSFBSSVYiLCAgICBMT0dfQVVUSFBSSVYpOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvdGVybWlvcy5jIGIvTW9kdWxlcy90ZXJtaW9zLmMKaW5kZXggZWRlYjZmNS4uYjc4ZDMzZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy90ZXJtaW9zLmMKKysrIGIvTW9kdWxlcy90ZXJtaW9zLmMKQEAgLTksMTEgKzksNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0jaWZkZWYgX19vc2ZfXwotLyogT24gT1NGLCBzeXMvaW9jdGwuaCByZXF1aXJlcyB0aGF0IHN0cnVjdCB0ZXJtaW8gYWxyZWFkeSBiZSBkZWZpbmVkLAotICogc28gdGhpcyBuZWVkcyB0byBiZSBpbmNsdWRlZCBmaXJzdCBvbiB0aGF0IHBsYXRmb3JtLiAqLwotI2luY2x1ZGUgPHRlcm1pby5oPgotI2VuZGlmCiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKIC8qIEhQLVVYIHJlcXVpcmVzIHRoYXQgdGhpcyBiZSBpbmNsdWRlZCB0byBwaWNrIHVwIE1EQ0QsIE1DVFMsIE1EU1IsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaCBiL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCmluZGV4IGZhOTRmZDYuLjZiZGRhZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCisrKyBiL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCkBAIC0zMyw4ICszMyw3IEBACiAgICAgICAgICAgICB1bnNpZ25lZCBUWVBFTkFNRSB1aW4sIHVvdXQ7CiAKICAgICAgICAgICAgIC8qIEZvciAwLCAxLCAyIHVzZSBiYXNlOyBmb3IgMywgNCwgNSB1c2UgLWJhc2UgKi8KLSAgICAgICAgICAgIHVpbiA9IGogPCAzID8gYmFzZQotICAgICAgICAgICAgICAgICAgICAgICAgOiAodW5zaWduZWQgVFlQRU5BTUUpKC0oVFlQRU5BTUUpYmFzZSk7CisgICAgICAgICAgICB1aW4gPSBqIDwgMyA/IGJhc2UgOiAwVSAtIGJhc2U7CiAKICAgICAgICAgICAgIC8qIEZvciAwICYgMywgc3VidHJhY3QgMS4KICAgICAgICAgICAgICAqIEZvciAxICYgNCwgbGVhdmUgYWxvbmUuCkBAIC0xNzcsNiArMTc2LDMyIEBACiAgICAgICAgIFB5X0RFQ1JFRihvbmUpOwogICAgIH0KIAorICAgIC8qIFRlc3QgRl9QWV9UT197UyxVfSBvbiBub24tcHlsb25nIGlucHV0LiBUaGlzIHNob3VsZCByYWlzZSBhIFR5cGVFcnJvci4gKi8KKyAgICB7CisgICAgICAgIFRZUEVOQU1FIG91dDsKKyAgICAgICAgdW5zaWduZWQgVFlQRU5BTUUgdW91dDsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICAgICAgb3V0ID0gRl9QWV9UT19TKFB5X05vbmUpOworICAgICAgICBpZiAob3V0ICE9IChUWVBFTkFNRSktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIHVvdXQgPSBGX1BZX1RPX1UoUHlfTm9uZSk7CisgICAgICAgIGlmICh1b3V0ICE9ICh1bnNpZ25lZCBUWVBFTkFNRSktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIFB5X0RFQ1JFRihQeV9Ob25lKTsKKyAgICB9CisKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IDM1MTYyZmYuLjE2MTQwN2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xLDEzICsxLDIwIEBACiAvKiBUaW1lIG1vZHVsZSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAiX3RpbWUuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKKyNpZmRlZiBIQVZFX1NZU19USU1FU19ICisjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TWVNfUkVTT1VSQ0VfSCkKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNlbmRpZgogCiAjaWZkZWYgUVVJQ0tXSU4KICNpbmNsdWRlIDxpby5oPgpAQCAtMjEsMTkgKzI4LDYgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAotLyogaGVscGVyIHRvIGFsbG93IHVzIHRvIGludGVycnVwdCBzbGVlcCgpIG9uIFdpbmRvd3MqLwotc3RhdGljIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBOVUxMOwotc3RhdGljIEJPT0wgV0lOQVBJIFB5Q3RybEhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKLXsKLSAgICBTZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOwotICAgIC8qIGFsbG93IG90aGVyIGRlZmF1bHQgaGFuZGxlcnMgdG8gYmUgY2FsbGVkLgotICAgICAgIERlZmF1bHQgUHl0aG9uIGhhbmRsZXIgd2lsbCBzZXR1cCB0aGUKLSAgICAgICBLZXlib2FyZEludGVycnVwdCBleGNlcHRpb24uCi0gICAgKi8KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci1zdGF0aWMgbG9uZyBtYWluX3RocmVhZDsKLQogI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQogLyogVGhlc2Ugb3ZlcnJpZGVzIG5vdCBuZWVkZWQgZm9yIFdpbjMyICovCiAjZGVmaW5lIHRpbWV6b25lIF90aW1lem9uZQpAQCAtNDMsMTEgKzM3LDYgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAjZW5kaWYgLyogIV9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotLyogV2luMzIgaGFzIGJldHRlciBjbG9jayByZXBsYWNlbWVudDsgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gYmVsb3cuICovCi0jdW5kZWYgSEFWRV9DTE9DSwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAqLwotCiAjaWYgZGVmaW5lZChQWU9TX09TMikKICNkZWZpbmUgSU5DTF9ET1MKICNkZWZpbmUgSU5DTF9FUlJPUlMKQEAgLTU4LDIzICs0NywyMiBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjZW5kaWYKKwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBpbnQgZmxvYXRzbGVlcChkb3VibGUpOwotc3RhdGljIGRvdWJsZSBmbG9hdHRpbWUodm9pZCk7CitzdGF0aWMgUHlPYmplY3QqIGZsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKIAotLyogRm9yIFkySyBjaGVjayAqLwotc3RhdGljIFB5T2JqZWN0ICptb2RkaWN0ID0gTlVMTDsKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV90aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIGRvdWJsZSBzZWNzOwotICAgIHNlY3MgPSBmbG9hdHRpbWUoKTsKLSAgICBpZiAoc2VjcyA9PSAwLjApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKKyAgICByZXR1cm4gZmxvYXR0aW1lKE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIodGltZV9kb2MsCkBAIC04Myw3ICs3MSw3IEBACiBSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC5cblwKIEZyYWN0aW9ucyBvZiBhIHNlY29uZCBtYXkgYmUgcHJlc2VudCBpZiB0aGUgc3lzdGVtIGNsb2NrIHByb3ZpZGVzIHRoZW0uIik7CiAKLSNpZmRlZiBIQVZFX0NMT0NLCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLKQogCiAjaWZuZGVmIENMT0NLU19QRVJfU0VDCiAjaWZkZWYgQ0xLX1RDSwpAQCAtOTQsNDIgKzgyLDgyIEBACiAjZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfY2xvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitmbG9hdGNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvIENMT0NLU19QRVJfU0VDKTsKKyAgICBjbG9ja190IHZhbHVlOworICAgIHZhbHVlID0gY2xvY2soKTsKKyAgICBpZiAodmFsdWUgPT0gKGNsb2NrX3QpLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidGhlIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSAiCisgICAgICAgICAgICAgICAgIm9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wIC8gKGRvdWJsZSlDTE9DS1NfUEVSX1NFQzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl2YWx1ZSAvIENMT0NLU19QRVJfU0VDKTsKIH0KICNlbmRpZiAvKiBIQVZFX0NMT0NLICovCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIER1ZSB0byBNYXJrIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2Nsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorI2RlZmluZSBXSU4zMl9QRVJGX0NPVU5URVIKKy8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uLCBkdWUgdG8gTWFyaworICAgSGFtbW9uZCBhbmQgVGltIFBldGVycyAqLworc3RhdGljIGludAord2luX3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvLCBQeU9iamVjdCAqKnJlc3VsdCkKIHsKLSAgICBzdGF0aWMgTEFSR0VfSU5URUdFUiBjdHJTdGFydDsKLSAgICBzdGF0aWMgZG91YmxlIGRpdmlzb3IgPSAwLjA7CisgICAgc3RhdGljIExPTkdMT05HIGNwdV9mcmVxdWVuY3kgPSAwOworICAgIHN0YXRpYyBMT05HTE9ORyBjdHJTdGFydDsKICAgICBMQVJHRV9JTlRFR0VSIG5vdzsKICAgICBkb3VibGUgZGlmZjsKIAotICAgIGlmIChkaXZpc29yID09IDAuMCkgeworICAgIGlmIChjcHVfZnJlcXVlbmN5ID09IDApIHsKICAgICAgICAgTEFSR0VfSU5URUdFUiBmcmVxOwotICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3RyU3RhcnQpOworICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKKyAgICAgICAgY3RyU3RhcnQgPSBub3cuUXVhZFBhcnQ7CiAgICAgICAgIGlmICghUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcSkgfHwgZnJlcS5RdWFkUGFydCA9PSAwKSB7CiAgICAgICAgICAgICAvKiBVbmxpa2VseSB0byBoYXBwZW4gLSB0aGlzIHdvcmtzIG9uIGFsbCBpbnRlbAogICAgICAgICAgICAgICAgbWFjaGluZXMgYXQgbGVhc3QhICBSZXZlcnQgdG8gY2xvY2soKSAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT0NLU19QRVJfU0VDKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGRpdmlzb3IgPSAoZG91YmxlKWZyZXEuUXVhZFBhcnQ7CisgICAgICAgIGNwdV9mcmVxdWVuY3kgPSBmcmVxLlF1YWRQYXJ0OwogICAgIH0KICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKLSAgICBkaWZmID0gKGRvdWJsZSkobm93LlF1YWRQYXJ0IC0gY3RyU3RhcnQuUXVhZFBhcnQpOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIGRpdmlzb3IpOworICAgIGRpZmYgPSAoZG91YmxlKShub3cuUXVhZFBhcnQgLSBjdHJTdGFydCk7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjAgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3k7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICAqcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3kpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChIQVZFX0NMT0NLKQorI2RlZmluZSBQWUNMT0NLCitzdGF0aWMgUHlPYmplY3QqCitweWNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAod2luX3BlcmZfY291bnRlcihpbmZvLCAmcmVzKSA9PSAwKQorICAgICAgICByZXR1cm4gcmVzOworI2VuZGlmCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CiB9CiAKLSNkZWZpbmUgSEFWRV9DTE9DSyAvKiBTbyBpdCBnZXRzIGluY2x1ZGVkIGluIHRoZSBtZXRob2RzICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICovCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHljbG9jayhOVUxMKTsKK30KIAotI2lmZGVmIEhBVkVfQ0xPQ0sKIFB5RG9jX1NUUlZBUihjbG9ja19kb2MsCiAiY2xvY2soKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXApAQCAtMTM4LDEyICsxNjYsOTMgQEAKIHJlY29yZHMuIik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfZ2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXR0aW1lIiwgJmNsa19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gY2xvY2tfZ2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKKyAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXR0aW1lX2RvYywKKyJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCitcblwKK1JldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfc2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNsa19pZDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjbG9ja19zZXR0aW1lIiwgJmNsa19pZCwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZ0cC50dl9zZWMsICZ0cC50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19zZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGNsb2NrX3NldHRpbWVfZG9jLAorImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAorXG5cCitTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrX2dldHJlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXRyZXMiLCAmY2xrX2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19nZXRyZXMoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CisgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXRyZXNfZG9jLAorImNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAorXG5cCitSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGRvdWJsZSBzZWNzOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDpzbGVlcCIsICZzZWNzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNlY3MgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGZsb2F0c2xlZXAoc2VjcykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMTY2LDYgKzI3NSwxMCBAQAogICAgIHsidG1fd2RheSIsICJkYXkgb2Ygd2VlaywgcmFuZ2UgWzAsIDZdLCBNb25kYXkgaXMgMCJ9LAogICAgIHsidG1feWRheSIsICJkYXkgb2YgeWVhciwgcmFuZ2UgWzEsIDM2Nl0ifSwKICAgICB7InRtX2lzZHN0IiwgIjEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24ifSwKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgeyJ0bV96b25lIiwgImFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lIn0sCisgICAgeyJ0bV9nbXRvZmYiLCAib2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMifSwKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgezB9CiB9OwogCkBAIC0xODUsNiArMjk4LDcgQEAKIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFN0cnVjdFRpbWVUeXBlOwogCisKIHN0YXRpYyBQeU9iamVjdCAqCiB0bXRvdHVwbGUoc3RydWN0IHRtICpwKQogewpAQCAtMjAzLDYgKzMxNywxMSBAQAogICAgIFNFVCg2LCAocC0+dG1fd2RheSArIDYpICUgNyk7IC8qIFdhbnQgTW9uZGF5ID09IDAgKi8KICAgICBTRVQoNywgcC0+dG1feWRheSArIDEpOyAgICAgICAgLyogV2FudCBKYW51YXJ5LCAxID09IDEgKi8KICAgICBTRVQoOCwgcC0+dG1faXNkc3QpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCisgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocC0+dG1fem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKKyAgICBTRVQoMTAsIHAtPnRtX2dtdG9mZik7CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI3VuZGVmIFNFVAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X1hERUNSRUYodik7CkBAIC0yMTIsNTUgKzMzMSw0OSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGltZV9jb252ZXJ0KGRvdWJsZSB3aGVuLCBzdHJ1Y3QgdG0gKiAoKmZ1bmN0aW9uKShjb25zdCB0aW1lX3QgKikpCi17Ci0gICAgc3RydWN0IHRtICpwOwotICAgIHRpbWVfdCB3aGVudCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh3aGVuKTsKLQotICAgIGlmICh3aGVudCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGVycm5vID0gMDsKLSAgICBwID0gZnVuY3Rpb24oJndoZW50KTsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRtdG90dXBsZShwKTsKLX0KLQogLyogUGFyc2UgYXJnIHR1cGxlIHRoYXQgY2FuIGNvbnRhaW4gYW4gb3B0aW9uYWwgZmxvYXQtb3ItTm9uZSB2YWx1ZTsKICAgIGZvcm1hdCBuZWVkcyB0byBiZSAifE86bmFtZSIuCiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX2RvdWJsZV9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIGRvdWJsZSAqcHdoZW4pCitwYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CisgICAgdGltZV90IHdoZW50OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGZvcm1hdCwgJm90KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgKnB3aGVuID0gZmxvYXR0aW1lKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvdWJsZSB3aGVuID0gUHlGbG9hdF9Bc0RvdWJsZShvdCk7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpwd2hlbiA9IHdoZW47CisgICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkgeworICAgICAgICB3aGVudCA9IHRpbWUoTlVMTCk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqcHdoZW4gPSB3aGVudDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfZ210aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgd2hlbjsKLSAgICBpZiAoIXBhcnNlX3RpbWVfZG91YmxlX2FyZ3MoYXJncywgInxPOmdtdGltZSIsICZ3aGVuKSkKKyAgICB0aW1lX3Qgd2hlbjsKKyAgICBzdHJ1Y3QgdG0gYnVmLCAqbG9jYWw7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgZ210aW1lKTsKKworICAgIGVycm5vID0gMDsKKyAgICBsb2NhbCA9IGdtdGltZSgmd2hlbik7CisgICAgaWYgKGxvY2FsID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKyAgICBidWYgPSAqbG9jYWw7CisgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCkBAIC0yNjgsMTUgKzM4MSw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXAogXG5cCiBDb252ZXJ0IHNlY29uZHMgc2luY2UgdGhlIEVwb2NoIHRvIGEgdGltZSB0dXBsZSBleHByZXNzaW5nIFVUQyAoYS5rLmEuXG5cCi1HTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuIik7CitHTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuXG5cCitcblwKK0lmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdG1fZ210b2ZmIGFuZCB0bV96b25lLCB0aGV5IGFyZSBhdmFpbGFibGUgYXNcblwKK2F0dHJpYnV0ZXMgb25seS4iKTsKKworc3RhdGljIGludAorcHlsb2NhbHRpbWUodGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCit7CisgICAgc3RydWN0IHRtICpsb2NhbDsKKworICAgIGFzc2VydCAodGltZXAgIT0gTlVMTCk7CisgICAgbG9jYWwgPSBsb2NhbHRpbWUodGltZXApOworICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7CisgICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAqcmVzdWx0ID0gKmxvY2FsOworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9sb2NhbHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB3aGVuOwotICAgIGlmICghcGFyc2VfdGltZV9kb3VibGVfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQorICAgIHRpbWVfdCB3aGVuOworICAgIHN0cnVjdCB0bSBidWY7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgbG9jYWx0aW1lKTsKKyAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTMwNyw1MyArNDQ3LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwLT50bV9ob3VyLCAmcC0+dG1fbWluLCAmcC0+dG1fc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmcC0+dG1fd2RheSwgJnAtPnRtX3lkYXksICZwLT50bV9pc2RzdCkpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgLyogSWYgeWVhciBpcyBzcGVjaWZpZWQgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMsIGl0cyBpbnRlcnByZXRhdGlvbgotICAgICAqIGRlcGVuZHMgb24gdGhlIGFjY2VwdDJkeWVhciB2YWx1ZS4KLSAgICAgKgotICAgICAqIElmIGFjY2VwdDJkeWVhciBpcyB0cnVlIChkZWZhdWx0KSwgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGlzCi0gICAgICogaW52b2tlZCBhcyBmb2xsb3dzOgotICAgICAqCi0gICAgICogICAtIGZvciAyLWRpZ2l0IHllYXIsIGNlbnR1cnkgaXMgZ3Vlc3NlZCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMgZm9yCi0gICAgICogICAgICAleSBzdHJwdGltZSBmb3JtYXQ6IDIxc3QgY2VudHVyeSBmb3IgeSA8IDY5LCAyMHRoIGNlbnR1cnkKLSAgICAgKiAgICAgIG90aGVyd2lzZS4gIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBpc3N1ZWQgd2hlbiBjZW50dXJ5Ci0gICAgICogICAgICBpbmZvcm1hdGlvbiBpcyBndWVzc2VkIGluIHRoaXMgd2F5LgotICAgICAqCi0gICAgICogICAtIGZvciAzLWRpZ2l0IG9yIG5lZ2F0aXZlIHllYXIsIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgotICAgICAqCi0gICAgICogSWYgYWNjZXB0MmR5ZWFyIGlzIGZhbHNlIChzZXQgYnkgdGhlIHByb2dyYW0gb3IgYXMgYSByZXN1bHQgb2YgYQotICAgICAqIG5vbi1lbXB0eSB2YWx1ZSBhc3NpZ25lZCB0byBQWVRIT05ZMksgZW52aXJvbm1lbnQgdmFyaWFibGUpIGFsbCB5ZWFyCi0gICAgICogdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBnaXZlbi4KLSAgICAgKi8KLSAgICBpZiAoeSA8IDEwMDApIHsKLSAgICAgICAgUHlPYmplY3QgKmFjY2VwdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZGRpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0MmR5ZWFyIik7Ci0gICAgICAgIGlmIChhY2NlcHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IGFjY2VwdHZhbCA9ICBQeU9iamVjdF9Jc1RydWUoYWNjZXB0KTsKLSAgICAgICAgICAgIGlmIChhY2NlcHR2YWwgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBpZiAoYWNjZXB0dmFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKDAgPD0geSAmJiB5IDwgNjkpCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMjAwMDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICg2OSA8PSB5ICYmIHkgPCAxMDApCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMTkwMDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWVhciBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNlbnR1cnkgaW5mbyBndWVzc2VkIGZvciBhIDItZGlnaXQgeWVhci4iLCAxKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgcC0+dG1feWVhciA9IHkgLSAxOTAwOwogICAgIHAtPnRtX21vbi0tOwogICAgIHAtPnRtX3dkYXkgPSAocC0+dG1fd2RheSArIDEpICUgNzsKICAgICBwLT50bV95ZGF5LS07CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIGlmIChQeV9UWVBFKGFyZ3MpID09ICZTdHJ1Y3RUaW1lVHlwZSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgOSk7CisgICAgICAgIHAtPnRtX3pvbmUgPSBpdGVtID09IFB5X05vbmUgPyBOVUxMIDogX1B5VW5pY29kZV9Bc1N0cmluZyhpdGVtKTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMTApOworICAgICAgICBwLT50bV9nbXRvZmYgPSBpdGVtID09IFB5X05vbmUgPyAwIDogUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHJldHVybiAxOwogfQogCkBAIC00NzAsNyArNTc4LDggQEAKIAogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5OCw3ICs2MDcsNyBAQAogICAgIGZtdCA9IGZvcm1hdDsKICNlbHNlCiAgICAgLyogQ29udmVydCB0aGUgdW5pY29kZSBzdHJpbmcgdG8gYW4gYXNjaWkgb25lICovCi0gICAgZm9ybWF0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmb3JtYXRfYXJnKTsKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKGZvcm1hdF9hcmcsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7CkBAIC01NDksNyArNjU4LDggQEAKICNpZmRlZiBIQVZFX1dDU0ZUSU1FCiAgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG91dGJ1ZiwgYnVmbGVuKTsKICNlbHNlCi0gICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShvdXRidWYsIGJ1Zmxlbik7CisgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShvdXRidWYsIGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgogICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODcsMTEgKzY5NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpzdHJwdGltZV9tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJfc3RycHRpbWUiKTsKICAgICBQeU9iamVjdCAqc3RycHRpbWVfcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9zdHJwdGltZV90aW1lKTsKIAogICAgIGlmICghc3RycHRpbWVfbW9kdWxlKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJwdGltZV9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cnB0aW1lX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9zdHJwdGltZV90aW1lIiwgIk8iLCBhcmdzKTsKKyAgICBzdHJwdGltZV9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cnB0aW1lX21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19zdHJwdGltZV90aW1lLCAiTyIsIGFyZ3MpOwogICAgIFB5X0RFQ1JFRihzdHJwdGltZV9tb2R1bGUpOwogICAgIHJldHVybiBzdHJwdGltZV9yZXN1bHQ7CiB9CkBAIC02MDgsMzEgKzcxOSwyMCBAQAogewogICAgIC8qIEluc3BpcmVkIGJ5IE9wZW4gR3JvdXAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhdAogICAgICAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL2FzY3RpbWUuaHRtbCAqLwotICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVszXSA9IHsKKyAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CiAgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCiAgICAgfTsKLSAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bM10gPSB7CisgICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzRdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKLSAgICBjaGFyIGJ1ZlsyMF07IC8qICdTdW4gU2VwIDE2IDAxOjAzOjUyXDAnICovCi0gICAgaW50IG47Ci0KLSAgICBuID0gUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJS4zcyAlLjNzJTNkICUuMmQ6JS4yZDolLjJkIiwKLSAgICAgICAgICAgICAgICAgICAgICB3ZGF5X25hbWVbdGltZXB0ci0+dG1fd2RheV0sCi0gICAgICAgICAgICAgICAgICAgICAgbW9uX25hbWVbdGltZXB0ci0+dG1fbW9uXSwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVwdHItPnRtX21pbiwgdGltZXB0ci0+dG1fc2VjKTsKLSAgICAvKiBYWFg6IHNpbmNlIHRoZSBmaWVsZHMgdXNlZCBieSBzbnByaW50ZiBhYm92ZSBhcmUgdmFsaWRhdGVkIGluIGNoZWNrdG0sCi0gICAgICogdGhlIGZvbGxvd2luZyBjb25kaXRpb24gc2hvdWxkIG5ldmVyIHRyaWdnZXIuIFdlIGtlZXAgdGhlIGNoZWNrIGJlY2F1c2UKLSAgICAgKiBoaXN0b3JpY2FsbHkgZml4ZWQgc2l6ZSBidWZmZXIgdXNlZCBpbiBhc2N0aW1lIHdhcyB0aGUgc291cmNlIG9mCi0gICAgICogY3Jhc2hlcy4gKi8KLSAgICBpZiAobiArIDEgIT0gc2l6ZW9mKGJ1ZikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmNvbnZlcnRpYmxlIHRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAlZCIsIGJ1ZiwgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiVzICVzJTNkICUuMmQ6JS4yZDolLjJkICVkIiwKKyAgICAgICAgd2RheV9uYW1lW3RpbWVwdHItPnRtX3dkYXldLAorICAgICAgICBtb25fbmFtZVt0aW1lcHRyLT50bV9tb25dLAorICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAorICAgICAgICB0aW1lcHRyLT50bV9taW4sIHRpbWVwdHItPnRtX3NlYywKKyAgICAgICAgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjQ1LDcgKzc0NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CkBAIC02NjEsMjggKzc2MywxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHR0OwotICAgIHN0cnVjdCB0bSAqdGltZXB0cjsKLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImN0aW1lIiwgMCwgMSwgJm90KSkKKyAgICBzdHJ1Y3QgdG0gYnVmOworICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmN0aW1lIiwgJnR0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgdHQgPSB0aW1lKE5VTEwpOwotICAgIGVsc2UgewotICAgICAgICBkb3VibGUgZHQgPSBQeUZsb2F0X0FzRG91YmxlKG90KTsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQoZHQpOwotICAgICAgICBpZiAodHQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHRpbWVwdHIgPSBsb2NhbHRpbWUoJnR0KTsKLSAgICBpZiAodGltZXB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5jb252ZXJ0aWJsZSB0aW1lIik7CisgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gX2FzY3RpbWUodGltZXB0cik7CisgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIoY3RpbWVfZG9jLApAQCAtNzE1LDcgKzgwMiwxMCBAQAogUHlEb2NfU1RSVkFSKG1rdGltZV9kb2MsCiAibWt0aW1lKHR1cGxlKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAotQ29udmVydCBhIHRpbWUgdHVwbGUgaW4gbG9jYWwgdGltZSB0byBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC4iKTsKK0NvbnZlcnQgYSB0aW1lIHR1cGxlIGluIGxvY2FsIHRpbWUgdG8gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guXG5cCitOb3RlIHRoYXQgbWt0aW1lKGdtdGltZSgwKSkgd2lsbCBub3QgZ2VuZXJhbGx5IHJldHVybiB6ZXJvIGZvciBtb3N0XG5cCit0aW1lIHpvbmVzOyBpbnN0ZWFkIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGVpdGhlciBiZSBlcXVhbCB0byB0aGF0XG5cCitvZiB0aGUgdGltZXpvbmUgb3IgYWx0em9uZSBhdHRyaWJ1dGVzIG9uIHRoZSB0aW1lIG1vZHVsZS4iKTsKICNlbmRpZiAvKiBIQVZFX01LVElNRSAqLwogCiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCkBAIC03NTUsNiArODQ1LDQwMiBAQAogc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIik7CiAjZW5kaWYgLyogSEFWRV9XT1JLSU5HX1RaU0VUICovCiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCisgICAgfHwgKGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCisgICAgICAgICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkpCisjZGVmaW5lIFBZTU9OT1RPTklDCisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCitzdGF0aWMgUHlPYmplY3QqCitweW1vbm90b25pYyhfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBzdGF0aWMgVUxPTkdMT05HICgqR2V0VGlja0NvdW50NjQpICh2b2lkKSA9IE5VTEw7CisgICAgc3RhdGljIFVMT05HTE9ORyAoQ0FMTEJBQ0sgKlB5X0dldFRpY2tDb3VudDY0KSh2b2lkKTsKKyAgICBzdGF0aWMgaW50IGhhc19nZXRpY2tjb3VudDY0ID0gLTE7CisgICAgZG91YmxlIHJlc3VsdDsKKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCA9PSAtMSkgeworICAgICAgICAvKiBHZXRUaWNrQ291bnQ2NCgpIHdhcyBhZGRlZCB0byBXaW5kb3dzIFZpc3RhICovCisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikgeworICAgICAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKKyAgICAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0VGlja0NvdW50NjQgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAoUHlfR2V0VGlja0NvdW50NjQgIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAwOworICAgIH0KKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkgeworICAgICAgICBVTE9OR0xPTkcgdGlja3M7CisgICAgICAgIHRpY2tzID0gUHlfR2V0VGlja0NvdW50NjQoKTsKKyAgICAgICAgcmVzdWx0ID0gKGRvdWJsZSl0aWNrcyAqIDFlLTM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGF0aWMgRFdPUkQgbGFzdF90aWNrcyA9IDA7CisgICAgICAgIHN0YXRpYyBEV09SRCBuX292ZXJmbG93ID0gMDsKKyAgICAgICAgRFdPUkQgdGlja3M7CisKKyAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgaWYgKHRpY2tzIDwgbGFzdF90aWNrcykKKyAgICAgICAgICAgIG5fb3ZlcmZsb3crKzsKKyAgICAgICAgbGFzdF90aWNrcyA9IHRpY2tzOworCisgICAgICAgIHJlc3VsdCA9IGxkZXhwKG5fb3ZlcmZsb3csIDMyKTsKKyAgICAgICAgcmVzdWx0ICs9IHRpY2tzOworICAgICAgICByZXN1bHQgKj0gMWUtMzsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworICAgICAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpCisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50KCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyZXN1bHQpOworCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKKyAgICB1aW50NjRfdCB0aW1lOworICAgIGRvdWJsZSBzZWNzOworCisgICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90CisgICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLworICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKKyAgICB9CisKKyAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgc2VjcyA9IChkb3VibGUpdGltZSAqIHRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOworCisjZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKQorICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKKyNlbmRpZgorCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhjbGtfaWQsICZyZXMpID09IDApCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX21vbm90b25pYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHltb25vdG9uaWMoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihtb25vdG9uaWNfZG9jLAorIm1vbm90b25pYygpIC0+IGZsb2F0XG5cCitcblwKK01vbm90b25pYyBjbG9jaywgY2Fubm90IGdvIGJhY2t3YXJkLiIpOworI2VuZGlmICAgLyogUFlNT05PVE9OSUMgKi8KKworc3RhdGljIFB5T2JqZWN0KgorcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoUFlNT05PVE9OSUMpCisgICAgUHlPYmplY3QgKnJlczsKKyNlbmRpZgorI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKQorICAgIHN0YXRpYyBpbnQgdXNlX3BlcmZfY291bnRlciA9IDE7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIHN0YXRpYyBpbnQgdXNlX21vbm90b25pYyA9IDE7CisjZW5kaWYKKworI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgorICAgIGlmICh1c2VfcGVyZl9jb3VudGVyKSB7CisgICAgICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB1c2VfcGVyZl9jb3VudGVyID0gMDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCisgICAgaWYgKHVzZV9tb25vdG9uaWMpIHsKKyAgICAgICAgcmVzID0gcHltb25vdG9uaWMoaW5mbyk7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIHVzZV9tb25vdG9uaWMgPSAwOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0dGltZShpbmZvKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcGVyZl9jb3VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBwZXJmX2NvdW50ZXIoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwZXJmX2NvdW50ZXJfZG9jLAorInBlcmZfY291bnRlcigpIC0+IGZsb2F0XG5cCitcblwKK1BlcmZvcm1hbmNlIGNvdW50ZXIgZm9yIGJlbmNobWFya2luZy4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcHlfcHJvY2Vzc190aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIEhBTkRMRSBwcm9jZXNzOworICAgIEZJTEVUSU1FIGNyZWF0aW9uX3RpbWUsIGV4aXRfdGltZSwga2VybmVsX3RpbWUsIHVzZXJfdGltZTsKKyAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKKyAgICBkb3VibGUgdG90YWw7CisgICAgQk9PTCBvazsKKworICAgIHByb2Nlc3MgPSBHZXRDdXJyZW50UHJvY2VzcygpOworICAgIG9rID0gR2V0UHJvY2Vzc1RpbWVzKHByb2Nlc3MsICZjcmVhdGlvbl90aW1lLCAmZXhpdF90aW1lLCAma2VybmVsX3RpbWUsICZ1c2VyX3RpbWUpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIGxhcmdlLnUuTG93UGFydCA9IGtlcm5lbF90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IGtlcm5lbF90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsID0gKGRvdWJsZSlsYXJnZS5RdWFkUGFydDsKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSB1c2VyX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gdXNlcl90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsICs9IChkb3VibGUpbGFyZ2UuUXVhZFBhcnQ7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0UHJvY2Vzc1RpbWVzKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodG90YWwgKiAxZS03KTsKKyNlbHNlCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisgICAgc3RydWN0IHJ1c2FnZSBydTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfVElNRVMKKyAgICBzdHJ1Y3QgdG1zIHQ7CisgICAgc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgXAorICAgICYmIChkZWZpbmVkKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCkgfHwgZGVmaW5lZChDTE9DS19QUk9GKSkKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisjaWZkZWYgQ0xPQ0tfUFJPRgorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19QUk9GOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPRikiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKSI7CisjZW5kaWYKKworICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIH0KKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19SRVNPVVJDRV9IKQorICAgIGlmIChnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZydSkgPT0gMCkgeworICAgICAgICBkb3VibGUgdG90YWw7CisgICAgICAgIHRvdGFsID0gcnUucnVfdXRpbWUudHZfc2VjICsgcnUucnVfdXRpbWUudHZfdXNlYyAqIDFlLTY7CisgICAgICAgIHRvdGFsICs9IHJ1LnJ1X3N0aW1lLnR2X3NlYyArIHJ1LnJ1X3N0aW1lLnR2X3VzZWMgKiAxZS02OworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0cnVzYWdlKFJVU0FHRV9TRUxGKSI7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfVElNRVMKKyAgICBpZiAodGltZXMoJnQpICE9IChjbG9ja190KS0xKSB7CisgICAgICAgIGRvdWJsZSB0b3RhbDsKKworICAgICAgICBpZiAodGlja3NfcGVyX3NlY29uZCA9PSAtMSkgeworI2lmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKF9TQ19DTEtfVENLKQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworICAgICAgICAgICAgaWYgKHRpY2tzX3Blcl9zZWNvbmQgPCAxKQorICAgICAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKKyNlbGlmIGRlZmluZWQoSFopCisgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gSFo7CisjZWxzZQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IDYwOyAvKiBtYWdpYyBmYWxsYmFjayB2YWx1ZTsgbWF5IGJlIGJvZ3VzICovCisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aWNrc19wZXJfc2Vjb25kICE9IC0xKSB7CisgICAgICAgICAgICB0b3RhbCA9IChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kOworICAgICAgICAgICAgdG90YWwgKz0gKGRvdWJsZSl0LnRtc19zdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gInRpbWVzKCkiOworICAgICAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMCAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcHJvY2Vzc190aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBweV9wcm9jZXNzX3RpbWUoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwcm9jZXNzX3RpbWVfZG9jLAorInByb2Nlc3NfdGltZSgpIC0+IGZsb2F0XG5cCitcblwKK1Byb2Nlc3MgdGltZSBmb3IgcHJvZmlsaW5nOiBzdW0gb2YgdGhlIGtlcm5lbCBhbmQgdXNlci1zcGFjZSBDUFUgdGltZS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9nZXRfY2xvY2tfaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqbmFtZTsKKyAgICBfUHlfY2xvY2tfaW5mb190IGluZm87CisgICAgUHlPYmplY3QgKm9iaiA9IE5VTEwsICpkaWN0LCAqbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0X2Nsb2NrX2luZm8iLCAmbmFtZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgUHlfREVCVUcKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uID0gTlVMTDsKKyAgICBpbmZvLm1vbm90b25pYyA9IC0xOworICAgIGluZm8uYWRqdXN0YWJsZSA9IC0xOworICAgIGluZm8ucmVzb2x1dGlvbiA9IC0xLjA7CisjZWxzZQorICAgIGluZm8uaW1wbGVtZW50YXRpb24gPSAiIjsKKyAgICBpbmZvLm1vbm90b25pYyA9IDA7CisgICAgaW5mby5hZGp1c3RhYmxlID0gMDsKKyAgICBpbmZvLnJlc29sdXRpb24gPSAxLjA7CisjZW5kaWYKKworICAgIGlmIChzdHJjbXAobmFtZSwgInRpbWUiKSA9PSAwKQorICAgICAgICBvYmogPSBmbG9hdHRpbWUoJmluZm8pOworI2lmZGVmIFBZQ0xPQ0sKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgImNsb2NrIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHljbG9jaygmaW5mbyk7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW9ub3RvbmljIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHltb25vdG9uaWMoJmluZm8pOworI2VuZGlmCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwZXJmX2NvdW50ZXIiKSA9PSAwKQorICAgICAgICBvYmogPSBwZXJmX2NvdW50ZXIoJmluZm8pOworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicHJvY2Vzc190aW1lIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHlfcHJvY2Vzc190aW1lKCZpbmZvKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmtub3duIGNsb2NrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0RFQ1JFRihvYmopOworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFzc2VydChpbmZvLmltcGxlbWVudGF0aW9uICE9IE5VTEwpOworICAgIG9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGluZm8uaW1wbGVtZW50YXRpb24pOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImltcGxlbWVudGF0aW9uIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgYXNzZXJ0KGluZm8ubW9ub3RvbmljICE9IC0xKTsKKyAgICBvYmogPSBQeUJvb2xfRnJvbUxvbmcoaW5mby5tb25vdG9uaWMpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIm1vbm90b25pYyIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIGFzc2VydChpbmZvLmFkanVzdGFibGUgIT0gLTEpOworICAgIG9iaiA9IFB5Qm9vbF9Gcm9tTG9uZyhpbmZvLmFkanVzdGFibGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImFkanVzdGFibGUiLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uID4gMC4wKTsKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uIDw9IDEuMCk7CisgICAgb2JqID0gUHlGbG9hdF9Gcm9tRG91YmxlKGluZm8ucmVzb2x1dGlvbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAicmVzb2x1dGlvbiIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhkaWN0KTsKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIG5zOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihvYmopOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoZ2V0X2Nsb2NrX2luZm9fZG9jLAorImdldF9jbG9ja19pbmZvKG5hbWU6IHN0cikgLT4gZGljdFxuXAorXG5cCitHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4iKTsKKwogc3RhdGljIHZvaWQKIFB5SW5pdF90aW1lem9uZShQeU9iamVjdCAqbSkgewogICAgIC8qIFRoaXMgY29kZSBtb3ZlZCBmcm9tIFB5SW5pdF90aW1lIHdob2xlc2FsZSB0byBhbGxvdyBjYWxsaW5nIGl0IGZyb20KQEAgLTc5MSw4ICsxMjc3LDggQEAKICNlbmRpZiAvKiBQWU9TX09TMiAqLwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImRheWxpZ2h0IiwgZGF5bGlnaHQpOwotICAgIG90ejAgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSh0em5hbWVbMF0sIHN0cmxlbih0em5hbWVbMF0pKTsKLSAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUodHpuYW1lWzFdLCBzdHJsZW4odHpuYW1lWzFdKSk7CisgICAgb3R6MCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzBdLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzFdLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0em5hbWUiLCBQeV9CdWlsZFZhbHVlKCIoTk4pIiwgb3R6MCwgb3R6MSkpOwogI2Vsc2UgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KICNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCkBAIC04NDMsMTQgKzEzMjksMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KKworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogICAgIHsidGltZSIsICAgICAgICAgICAgdGltZV90aW1lLCBNRVRIX05PQVJHUywgdGltZV9kb2N9LAotI2lmZGVmIEhBVkVfQ0xPQ0sKKyNpZmRlZiBQWUNMT0NLCiAgICAgeyJjbG9jayIsICAgICAgICAgICB0aW1lX2Nsb2NrLCBNRVRIX05PQVJHUywgY2xvY2tfZG9jfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKKyNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9WQVJBUkdTLCBzbGVlcF9kb2N9LAogICAgIHsiZ210aW1lIiwgICAgICAgICAgdGltZV9nbXRpbWUsIE1FVEhfVkFSQVJHUywgZ210aW1lX2RvY30sCiAgICAgeyJsb2NhbHRpbWUiLCAgICAgICB0aW1lX2xvY2FsdGltZSwgTUVUSF9WQVJBUkdTLCBsb2NhbHRpbWVfZG9jfSwKQEAgLTg2Niw2ICsxMzc2LDEyIEBACiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAgICAgeyJ0enNldCIsICAgICAgICAgICB0aW1lX3R6c2V0LCBNRVRIX05PQVJHUywgdHpzZXRfZG9jfSwKICNlbmRpZgorI2lmZGVmIFBZTU9OT1RPTklDCisgICAgeyJtb25vdG9uaWMiLCAgICAgICB0aW1lX21vbm90b25pYywgTUVUSF9OT0FSR1MsIG1vbm90b25pY19kb2N9LAorI2VuZGlmCisgICAgeyJwcm9jZXNzX3RpbWUiLCAgICB0aW1lX3Byb2Nlc3NfdGltZSwgTUVUSF9OT0FSR1MsIHByb2Nlc3NfdGltZV9kb2N9LAorICAgIHsicGVyZl9jb3VudGVyIiwgICAgdGltZV9wZXJmX2NvdW50ZXIsIE1FVEhfTk9BUkdTLCBwZXJmX2NvdW50ZXJfZG9jfSwKKyAgICB7ImdldF9jbG9ja19pbmZvIiwgIHRpbWVfZ2V0X2Nsb2NrX2luZm8sIE1FVEhfVkFSQVJHUywgZ2V0X2Nsb2NrX2luZm9fZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtODgxLDcgKzEzOTcsNyBAQAogXG5cCiBUaGUgb3RoZXIgcmVwcmVzZW50YXRpb24gaXMgYSB0dXBsZSBvZiA5IGludGVnZXJzIGdpdmluZyBsb2NhbCB0aW1lLlxuXAogVGhlIHR1cGxlIGl0ZW1zIGFyZTpcblwKLSAgeWVhciAoZm91ciBkaWdpdHMsIGUuZy4gMTk5OClcblwKKyAgeWVhciAoaW5jbHVkaW5nIGNlbnR1cnksIGUuZy4gMTk5OClcblwKICAgbW9udGggKDEtMTIpXG5cCiAgIGRheSAoMS0zMSlcblwKICAgaG91cnMgKDAtMjMpXG5cCkBAIC05MzMsNTEgKzE0NDksNjUgQEAKIFB5SW5pdF90aW1lKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgY2hhciAqcDsKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ0aW1lbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEFjY2VwdCAyLWRpZ2l0IGRhdGVzIHVubGVzcyBQWVRIT05ZMksgaXMgc2V0IGFuZCBub24tZW1wdHkgKi8KLSAgICBwID0gUHlfR0VURU5WKCJQWVRIT05ZMksiKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiYWNjZXB0MmR5ZWFyIiwgKGxvbmcpICghcCB8fCAhKnApKTsKLSAgICAvKiBJZiBhbiBlbWJlZGRlZCBpbnRlcnByZXRlciBpcyBzaHV0ZG93biBhbmQgcmVpbml0aWFsaXplZCB0aGUgb2xkCi0gICAgICAgbW9kZGljdCB3YXMgbm90IGRlY3JlZmVkIG9uIHNodXRkb3duIGFuZCB0aGUgbmV4dCBpbXBvcnQgb2YgdGhpcwotICAgICAgIG1vZHVsZSBsZWFkcyB0byBhIGxlYWsuICBDb25kaXRpb25hbGx5IGRlY3JlZiBoZXJlIHRvIHByZXZlbnQgdGhhdC4KLSAgICAqLwotICAgIFB5X1hERUNSRUYobW9kZGljdCk7Ci0gICAgLyogU3F1aXJyZWwgYXdheSB0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBmb3IgdGhlIHkyayBjaGVjayAqLwotICAgIG1vZGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIFB5X0lOQ1JFRihtb2RkaWN0KTsKLQogICAgIC8qIFNldCwgb3IgcmVzZXQsIG1vZHVsZSB2YXJpYWJsZXMgbGlrZSB0aW1lLnRpbWV6b25lICovCiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIEhlbHBlciB0byBhbGxvdyBpbnRlcnJ1cHRzIGZvciBXaW5kb3dzLgotICAgICAgIElmIEN0cmwrQyBldmVudCBkZWxpdmVyZWQgd2hpbGUgbm90IHNsZWVwaW5nCi0gICAgICAgaXQgd2lsbCBiZSBpZ25vcmVkLgotICAgICovCi0gICAgbWFpbl90aHJlYWQgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7Ci0gICAgaEludGVycnVwdEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotICAgIFNldENvbnNvbGVDdHJsSGFuZGxlciggUHlDdHJsSGFuZGxlciwgVFJVRSk7Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYyk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdpbnZlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcik7CisgICAgICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDExKTsKKyNlbHNlCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCA5KTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3RpbWUiLCAoUHlPYmplY3QqKSAmU3RydWN0VGltZVR5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKICAgICByZXR1cm4gbTsKIH0KIAotc3RhdGljIGRvdWJsZQotZmxvYXR0aW1lKHZvaWQpCitzdGF0aWMgUHlPYmplY3QqCitmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKICAgICBfUHlUaW1lX3RpbWV2YWwgdDsKLSAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmdCk7Ci0gICAgcmV0dXJuIChkb3VibGUpdC50dl9zZWMgKyB0LnR2X3VzZWMqMC4wMDAwMDE7CisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworICAgIGludCByZXQ7CisKKyAgICAvKiBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGRvZXMgbm90IHVzZSBjbG9ja19nZXR0aW1lKCkKKyAgICAgICBiZWNhdXNlIGl0IHdvdWxkIHJlcXVpcmUgdG8gbGluayBQeXRob24gdG8gdGhlIHJ0IChyZWFsLXRpbWUpCisgICAgICAgbGlicmFyeSwgYXQgbGVhc3Qgb24gTGludXggKi8KKyAgICByZXQgPSBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHApOworICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoQ0xPQ0tfUkVBTFRJTUUsICZyZXMpID09IDApCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7CisgICAgfQorI2VuZGlmCisgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygmdCwgaW5mbyk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKXQudHZfc2VjICsgdC50dl91c2VjICogMWUtNik7CiB9CiAKIApAQCAtOTkyLDIzICsxNTIyLDI4IEBACiAjaWYgZGVmaW5lZChIQVZFX1NFTEVDVCkgJiYgIWRlZmluZWQoX19FTVhfXykKICAgICBzdHJ1Y3QgdGltZXZhbCB0OwogICAgIGRvdWJsZSBmcmFjOworICAgIGludCBlcnI7CisKICAgICBmcmFjID0gZm1vZChzZWNzLCAxLjApOwogICAgIHNlY3MgPSBmbG9vcihzZWNzKTsKICAgICB0LnR2X3NlYyA9IChsb25nKXNlY3M7CiAgICAgdC50dl91c2VjID0gKGxvbmcpKGZyYWMqMTAwMDAwMC4wKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdCkgIT0gMCkgeworICAgIGVyciA9IHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyICE9IDApIHsKICNpZmRlZiBFSU5UUgotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSNlbHNlCi0gICAgICAgIGlmICgxKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgewogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChfX1FOWF9fKQogICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTEwMjksMTggKzE1NjQsMTQgQEAKICAgICAgICAgICogYnkgR3VpZG8sIG9ubHkgdGhlIG1haW4gdGhyZWFkIGNhbiBiZSBpbnRlcnJ1cHRlZC4KICAgICAgICAgICovCiAgICAgICAgIHVsX21pbGxpcyA9ICh1bnNpZ25lZCBsb25nKW1pbGxpc2VjczsKLSAgICAgICAgaWYgKHVsX21pbGxpcyA9PSAwIHx8Ci0gICAgICAgICAgICBtYWluX3RocmVhZCAhPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpCisgICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpCiAgICAgICAgICAgICBTbGVlcCh1bF9taWxsaXMpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIERXT1JEIHJjOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CiAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CiAgICAgICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMpOwogICAgICAgICAgICAgaWYgKHJjID09IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICAvKiBZaWVsZCB0byBtYWtlIHN1cmUgcmVhbCBQeXRob24gc2lnbmFsCi0gICAgICAgICAgICAgICAgICogaGFuZGxlciBjYWxsZWQuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgU2xlZXAoMSk7CiAgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwogICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVFI7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90a2FwcGluaXQuYyBiL01vZHVsZXMvdGthcHBpbml0LmMKaW5kZXggYzFmOTdiMC4uMmVkODU5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy90a2FwcGluaXQuYworKysgYi9Nb2R1bGVzL3RrYXBwaW5pdC5jCkBAIC0yNiw3ICsyNiw5IEBACiBpbnQKIFRjbF9BcHBJbml0KFRjbF9JbnRlcnAgKmludGVycCkKIHsKKyNpZmRlZiBXSVRIX01PUkVCVVRUT05TCiAgICAgVGtfV2luZG93IG1haW5fd2luZG93OworI2VuZGlmCiAgICAgY29uc3QgY2hhciAqX3RraW50ZXJfc2tpcF90a19pbml0OwogI2lmZGVmIFRLSU5URVJfUFJPVEVDVF9MT0FEVEsKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl90a19mYWlsZWQ7CkBAIC0xMTEsNyArMTEzLDExIEBACiAgICAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICAgfQogCisjaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwogICAgIG1haW5fd2luZG93ID0gVGtfTWFpbldpbmRvdyhpbnRlcnApOworI2Vsc2UKKyAgICBUa19NYWluV2luZG93KGludGVycCk7CisjZW5kaWYKIAogI2lmZGVmIFRLX0FRVUEKICAgICBUa01hY09TWEluaXRBcHBsZUV2ZW50cyhpbnRlcnApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDRkYjUwODcuLjI3ZmFkYjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTkzLDE2ICs5MywxMyBAQAogCiBzdGF0aWMgUHlfVUNTNCBnZXR1Y2hhcihQeVVuaWNvZGVPYmplY3QgKm9iaikKIHsKLSAgICBQeV9VTklDT0RFICp2ID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLQotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSA9PSAxKQotICAgICAgICByZXR1cm4gKnY7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGVsc2UgaWYgKChQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSA9PSAyKSAmJgotICAgICAgICAgICAgICgweEQ4MDAgPD0gdlswXSAmJiB2WzBdIDw9IDB4REJGRikgJiYKLSAgICAgICAgICAgICAoMHhEQzAwIDw9IHZbMV0gJiYgdlsxXSA8PSAweERGRkYpKQotICAgICAgICByZXR1cm4gKCgodlswXSAmIDB4M0ZGKTw8MTApIHwgKHZbMV0gJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbmRpZgorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopID09IDEpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAibmVlZCBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlciBhcyBwYXJhbWV0ZXIiKTsKICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CkBAIC00NDMsNyArNDQwLDcgQEAKICAgICAgICBmcm9tIFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5LCBpdCBzaG91bGQgbm90IGJlIHBvc3NpYmxlCiAgICAgICAgdG8gb3ZlcmZsb3cgZGVjb21wX3ByZWZpeC4gKi8KICAgICBwcmVmaXhfaW5kZXggPSBkZWNvbXBfZGF0YVtpbmRleF0gJiAyNTU7Ci0gICAgYXNzZXJ0KHByZWZpeF9pbmRleCA8IChzaXplb2YoZGVjb21wX3ByZWZpeCkvc2l6ZW9mKCpkZWNvbXBfcHJlZml4KSkpOworICAgIGFzc2VydChwcmVmaXhfaW5kZXggPCBQeV9BUlJBWV9MRU5HVEgoZGVjb21wX3ByZWZpeCkpOwogCiAgICAgLyogY29weSBwcmVmaXggKi8KICAgICBpID0gc3RybGVuKGRlY29tcF9wcmVmaXhbcHJlZml4X2luZGV4XSk7CkBAIC00OTgsMzYgKzQ5NSw0NyBAQAogbmZkX25ma2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppbnB1dCwgaW50IGspCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9VTklDT0RFICppLCAqZW5kLCAqbzsKKyAgICBQeV9VQ1M0ICpvdXRwdXQ7CisgICAgUHlfc3NpemVfdCBpLCBvLCBvc2l6ZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIC8qIExvbmdlc3QgZGVjb21wb3NpdGlvbiBpbiBVbmljb2RlIDMuMjogVStGREZBICovCi0gICAgUHlfVU5JQ09ERSBzdGFja1syMF07CisgICAgUHlfVUNTNCBzdGFja1syMF07CiAgICAgUHlfc3NpemVfdCBzcGFjZSwgaXNpemU7CiAgICAgaW50IGluZGV4LCBwcmVmaXgsIGNvdW50LCBzdGFja3B0cjsKICAgICB1bnNpZ25lZCBjaGFyIHByZXYsIGN1cjsKIAogICAgIHN0YWNrcHRyID0gMDsKLSAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShpbnB1dCk7CisgICAgaXNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAgICAgLyogT3ZlcmFsbG9jYXRlIGF0bW9zdCAxMCBjaGFyYWN0ZXJzLiAqLwogICAgIHNwYWNlID0gKGlzaXplID4gMTAgPyAxMCA6IGlzaXplKSArIGlzaXplOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzcGFjZSk7Ci0gICAgaWYgKCFyZXN1bHQpCisgICAgb3NpemUgPSBzcGFjZTsKKyAgICBvdXRwdXQgPSBQeU1lbV9NYWxsb2Moc3BhY2UgKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpbnB1dCk7Ci0gICAgZW5kID0gaSArIGlzaXplOwotICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIH0KKyAgICBpID0gbyA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaW5wdXQpOwogCi0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgc3RhY2tbc3RhY2twdHIrK10gPSAqaSsrOworICAgIHdoaWxlIChpIDwgaXNpemUpIHsKKyAgICAgICAgc3RhY2tbc3RhY2twdHIrK10gPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKyspOwogICAgICAgICB3aGlsZShzdGFja3B0cikgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjb2RlID0gc3RhY2tbLS1zdGFja3B0cl07CisgICAgICAgICAgICBQeV9VQ1M0IGNvZGUgPSBzdGFja1stLXN0YWNrcHRyXTsKICAgICAgICAgICAgIC8qIEhhbmd1bCBEZWNvbXBvc2l0aW9uIGFkZHMgdGhyZWUgY2hhcmFjdGVycyBpbgogICAgICAgICAgICAgICAgYSBzaW5nbGUgc3RlcCwgc28gd2UgbmVlZCBhdGxlYXN0IHRoYXQgbXVjaCByb29tLiAqLwogICAgICAgICAgICAgaWYgKHNwYWNlIDwgMykgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpICsgMTA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCAqbmV3X291dHB1dDsKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSAxMDsKICAgICAgICAgICAgICAgICBzcGFjZSArPSAxMDsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBuZXdzaXplKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gUHlNZW1fUmVhbGxvYyhvdXRwdXQsIG9zaXplKnNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgICAgICAgICAgaWYgKG5ld19vdXRwdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpICsgbmV3c2l6ZSAtIHNwYWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBuZXdfb3V0cHV0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogSGFuZ3VsIERlY29tcG9zaXRpb24uICovCiAgICAgICAgICAgICBpZiAoU0Jhc2UgPD0gY29kZSAmJiBjb2RlIDwgKFNCYXNlK1NDb3VudCkpIHsKQEAgLTUzNSwxMSArNTQzLDExIEBACiAgICAgICAgICAgICAgICAgaW50IEwgPSBMQmFzZSArIFNJbmRleCAvIE5Db3VudDsKICAgICAgICAgICAgICAgICBpbnQgViA9IFZCYXNlICsgKFNJbmRleCAlIE5Db3VudCkgLyBUQ291bnQ7CiAgICAgICAgICAgICAgICAgaW50IFQgPSBUQmFzZSArIFNJbmRleCAlIFRDb3VudDsKLSAgICAgICAgICAgICAgICAqbysrID0gTDsKLSAgICAgICAgICAgICAgICAqbysrID0gVjsKKyAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IEw7CisgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBWOwogICAgICAgICAgICAgICAgIHNwYWNlIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKFQgIT0gVEJhc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgKm8rKyA9IFQ7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gVDsKICAgICAgICAgICAgICAgICAgICAgc3BhY2UgLS07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTU5LDcgKzU2Nyw3IEBACiAgICAgICAgICAgICAvKiBDb3B5IGNoYXJhY3RlciBpZiBpdCBpcyBub3QgZGVjb21wb3NhYmxlLCBvciBoYXMgYQogICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLCBidXQgd2UgZG8gTkZELiAqLwogICAgICAgICAgICAgaWYgKCFjb3VudCB8fCAocHJlZml4ICYmICFrKSkgewotICAgICAgICAgICAgICAgICpvKysgPSBjb2RlOworICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKICAgICAgICAgICAgICAgICBzcGFjZS0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtNTcyLDE1ICs1ODAsMjAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIERyb3Agb3ZlcmFsbG9jYXRpb24uIENhbm5vdCBmYWlsLiAqLwotICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCkgLSBzcGFjZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiByZXN1bHQgaXMgZ3VhcmFudGVlZCB0byBiZSByZWFkeSwgYXMgaXQgaXMgY29tcGFjdC4gKi8KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKIAogICAgIC8qIFNvcnQgY2Fub25pY2FsbHkuICovCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOwotICAgIGZvciAoaSsrOyBpIDwgZW5kOyBpKyspIHsKLSAgICAgICAgY3VyID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKKyAgICBpID0gMDsKKyAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSktPmNvbWJpbmluZzsKKyAgICBmb3IgKGkrKzsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7IGkrKykgeworICAgICAgICBjdXIgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOwogICAgICAgICBpZiAocHJldiA9PSAwIHx8IGN1ciA9PSAwIHx8IHByZXYgPD0gY3VyKSB7CiAgICAgICAgICAgICBwcmV2ID0gY3VyOwogICAgICAgICAgICAgY29udGludWU7CkBAIC01ODgsMzEgKzYwMSwzMiBAQAogICAgICAgICAvKiBOb24tY2Fub25pY2FsIG9yZGVyLiBOZWVkIHRvIHN3aXRjaCAqaSB3aXRoIHByZXZpb3VzLiAqLwogICAgICAgICBvID0gaSAtIDE7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHRtcCA9IG9bMV07Ci0gICAgICAgICAgICBvWzFdID0gb1swXTsKLSAgICAgICAgICAgIG9bMF0gPSB0bXA7CisgICAgICAgICAgICBQeV9VQ1M0IHRtcCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8rMSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgbysxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8pKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvLCB0bXApOwogICAgICAgICAgICAgby0tOwotICAgICAgICAgICAgaWYgKG8gPCBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpKQorICAgICAgICAgICAgaWYgKG8gPCAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKm8pLT5jb21iaW5pbmc7CisgICAgICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBvKSktPmNvbWJpbmluZzsKICAgICAgICAgICAgIGlmIChwcmV2ID09IDAgfHwgcHJldiA8PSBjdXIpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7CisgICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50Ci1maW5kX25mY19pbmRleChQeU9iamVjdCAqc2VsZiwgc3RydWN0IHJlaW5kZXgqIG5mYywgUHlfVU5JQ09ERSBjb2RlKQorZmluZF9uZmNfaW5kZXgoUHlPYmplY3QgKnNlbGYsIHN0cnVjdCByZWluZGV4KiBuZmMsIFB5X1VDUzQgY29kZSkKIHsKLSAgICBpbnQgaW5kZXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4OwogICAgIGZvciAoaW5kZXggPSAwOyBuZmNbaW5kZXhdLnN0YXJ0OyBpbmRleCsrKSB7Ci0gICAgICAgIGludCBzdGFydCA9IG5mY1tpbmRleF0uc3RhcnQ7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCA9IG5mY1tpbmRleF0uc3RhcnQ7CiAgICAgICAgIGlmIChjb2RlIDwgc3RhcnQpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChjb2RlIDw9IHN0YXJ0ICsgbmZjW2luZGV4XS5jb3VudCkgewotICAgICAgICAgICAgaW50IGRlbHRhID0gY29kZSAtIHN0YXJ0OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlbHRhID0gY29kZSAtIHN0YXJ0OwogICAgICAgICAgICAgcmV0dXJuIG5mY1tpbmRleF0uaW5kZXggKyBkZWx0YTsKICAgICAgICAgfQogICAgIH0KQEAgLTYyMywyNyArNjM3LDM2IEBACiBuZmNfbmZrYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgaykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKmksICppMSwgKm8sICplbmQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0ICpvdXRwdXQ7CisgICAgUHlfc3NpemVfdCBpLCBpMSwgbywgbGVuOwogICAgIGludCBmLGwsaW5kZXgsaW5kZXgxLGNvbWI7Ci0gICAgUHlfVU5JQ09ERSBjb2RlOwotICAgIFB5X1VOSUNPREUgKnNraXBwZWRbMjBdOworICAgIFB5X1VDUzQgY29kZTsKKyAgICBQeV9zc2l6ZV90IHNraXBwZWRbMjBdOwogICAgIGludCBjc2tpcHBlZCA9IDA7CiAKICAgICByZXN1bHQgPSBuZmRfbmZrZChzZWxmLCBpbnB1dCwgayk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJlc3VsdCB3aWxsIGJlICJyZWFkeSIuICovCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlc3VsdCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKIAotICAgIC8qIFdlIGFyZSBnb2luZyB0byBtb2RpZnkgcmVzdWx0IGluLXBsYWNlLgotICAgICAgIElmIG5mZF9uZmtkIGlzIGNoYW5nZWQgdG8gc29tZXRpbWVzIHJldHVybiB0aGUgaW5wdXQsCi0gICAgICAgdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHJldmlld2VkLiAqLwotICAgIGFzc2VydChyZXN1bHQgIT0gaW5wdXQpOwotCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOwotICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIC8qIFdlIGFsbG9jYXRlIGEgYnVmZmVyIGZvciB0aGUgb3V0cHV0LgorICAgICAgIElmIHdlIGZpbmQgdGhhdCB3ZSBtYWRlIG5vIGNoYW5nZXMsIHdlIHN0aWxsIHJldHVybgorICAgICAgIHRoZSBORkQgcmVzdWx0LiAqLworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaSA9IG8gPSAwOwogCiAgIGFnYWluOgotICAgIHdoaWxlIChpIDwgZW5kKSB7CisgICAgd2hpbGUgKGkgPCBsZW4pIHsKICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNza2lwcGVkOyBpbmRleCsrKSB7CiAgICAgICAgICAgaWYgKHNraXBwZWRbaW5kZXhdID09IGkpIHsKICAgICAgICAgICAgICAgLyogKmkgY2hhcmFjdGVyIGlzIHNraXBwZWQuCkBAIC02NTYsMzMgKzY3OSw0MSBAQAogICAgICAgfQogICAgICAgLyogSGFuZ3VsIENvbXBvc2l0aW9uLiBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciA8TFYsVD4KICAgICAgICAgIHBhaXJzLCBzaW5jZSB3ZSBhbHdheXMgaGF2ZSBkZWNvbXBvc2VkIGRhdGEuICovCi0gICAgICBpZiAoTEJhc2UgPD0gKmkgJiYgKmkgPCAoTEJhc2UrTENvdW50KSAmJgotICAgICAgICAgIGkgKyAxIDwgZW5kICYmCi0gICAgICAgICAgVkJhc2UgPD0gaVsxXSAmJiBpWzFdIDw9IChWQmFzZStWQ291bnQpKSB7CisgICAgICBjb2RlID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICBpZiAoTEJhc2UgPD0gY29kZSAmJiBjb2RlIDwgKExCYXNlK0xDb3VudCkgJiYKKyAgICAgICAgICBpICsgMSA8IGxlbiAmJgorICAgICAgICAgIFZCYXNlIDw9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgJiYKKyAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpIDw9IChWQmFzZStWQ291bnQpKSB7CiAgICAgICAgICAgaW50IExJbmRleCwgVkluZGV4OwotICAgICAgICAgIExJbmRleCA9IGlbMF0gLSBMQmFzZTsKLSAgICAgICAgICBWSW5kZXggPSBpWzFdIC0gVkJhc2U7CisgICAgICAgICAgTEluZGV4ID0gY29kZSAtIExCYXNlOworICAgICAgICAgIFZJbmRleCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgLSBWQmFzZTsKICAgICAgICAgICBjb2RlID0gU0Jhc2UgKyAoTEluZGV4KlZDb3VudCtWSW5kZXgpKlRDb3VudDsKICAgICAgICAgICBpKz0yOwotICAgICAgICAgIGlmIChpIDwgZW5kICYmCi0gICAgICAgICAgICAgIFRCYXNlIDw9ICppICYmICppIDw9IChUQmFzZStUQ291bnQpKSB7Ci0gICAgICAgICAgICAgIGNvZGUgKz0gKmktVEJhc2U7CisgICAgICAgICAgaWYgKGkgPCBsZW4gJiYKKyAgICAgICAgICAgICAgVEJhc2UgPD0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgJiYKKyAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPD0gKFRCYXNlK1RDb3VudCkpIHsKKyAgICAgICAgICAgICAgY29kZSArPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKS1UQmFzZTsKICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgIH0KLSAgICAgICAgICAqbysrID0gY29kZTsKKyAgICAgICAgICBvdXRwdXRbbysrXSA9IGNvZGU7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKLSAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsICppKTsKKyAgICAgIC8qIGNvZGUgaXMgc3RpbGwgaW5wdXRbaV0gaGVyZSAqLworICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgY29kZSk7CiAgICAgICBpZiAoZiA9PSAtMSkgewotICAgICAgICAgICpvKysgPSAqaSsrOworICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKKyAgICAgICAgICBpKys7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAgICAgICAvKiBGaW5kIG5leHQgdW5ibG9ja2VkIGNoYXJhY3Rlci4gKi8KICAgICAgIGkxID0gaSsxOwogICAgICAgY29tYiA9IDA7Ci0gICAgICB3aGlsZSAoaTEgPCBlbmQpIHsKLSAgICAgICAgICBpbnQgY29tYjEgPSBfZ2V0cmVjb3JkX2V4KCppMSktPmNvbWJpbmluZzsKKyAgICAgIC8qIG91dHB1dCBiYXNlIGNoYXJhY3RlciBmb3Igbm93OyBtaWdodCBiZSB1cGRhdGVkIGxhdGVyLiAqLworICAgICAgb3V0cHV0W29dID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICB3aGlsZSAoaTEgPCBsZW4pIHsKKyAgICAgICAgICBQeV9VQ1M0IGNvZGUxID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaTEpOworICAgICAgICAgIGludCBjb21iMSA9IF9nZXRyZWNvcmRfZXgoY29kZTEpLT5jb21iaW5pbmc7CiAgICAgICAgICAgaWYgKGNvbWIpIHsKICAgICAgICAgICAgICAgaWYgKGNvbWIxID09IDApCiAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTY5Miw4ICs3MjMsOCBAQAogICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9Ci0gICAgICAgICAgbCA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19sYXN0LCAqaTEpOwotICAgICAgICAgIC8qICppMSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAqaS4gSWYgKmkxCisgICAgICAgICAgbCA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19sYXN0LCBjb2RlMSk7CisgICAgICAgICAgLyogaTEgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggaS4gSWYgaTEKICAgICAgICAgICAgICBpcyBhIHN0YXJ0ZXIsIHdlIGRvbid0IG5lZWQgdG8gbG9vayBmdXJ0aGVyLgogICAgICAgICAgICAgIE90aGVyd2lzZSwgcmVjb3JkIHRoZSBjb21iaW5pbmcgY2xhc3MuICovCiAgICAgICAgICAgaWYgKGwgPT0gLTEpIHsKQEAgLTcxMiwxOSArNzQzLDI4IEBACiAgICAgICAgICAgICAgIGdvdG8gbm90X2NvbWJpbmFibGU7CiAKICAgICAgICAgICAvKiBSZXBsYWNlIHRoZSBvcmlnaW5hbCBjaGFyYWN0ZXIuICovCi0gICAgICAgICAgKmkgPSBjb2RlOworICAgICAgICAgIG91dHB1dFtvXSA9IGNvZGU7CiAgICAgICAgICAgLyogTWFyayB0aGUgc2Vjb25kIGNoYXJhY3RlciB1bnVzZWQuICovCiAgICAgICAgICAgYXNzZXJ0KGNza2lwcGVkIDwgMjApOwogICAgICAgICAgIHNraXBwZWRbY3NraXBwZWQrK10gPSBpMTsKICAgICAgICAgICBpMSsrOwotICAgICAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsICppKTsKKyAgICAgICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCBvdXRwdXRbb10pOwogICAgICAgICAgIGlmIChmID09IC0xKQogICAgICAgICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgICpvKysgPSAqaSsrOworICAgICAgLyogT3V0cHV0IGNoYXJhY3RlciB3YXMgYWxyZWFkeSB3cml0dGVuLgorICAgICAgICAgSnVzdCBhZHZhbmNlIHRoZSBpbmRpY2VzLiAqLworICAgICAgbysrOyBpKys7CiAgICAgfQotICAgIGlmIChvICE9IGVuZCkKLSAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBvIC0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSk7CisgICAgaWYgKG8gPT0gbGVuKSB7CisgICAgICAgIC8qIE5vIGNoYW5nZXMuIFJldHVybiBvcmlnaW5hbCBzdHJpbmcuICovCisgICAgICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTczMiw3ICs3NzIsOSBAQAogc3RhdGljIGludAogaXNfbm9ybWFsaXplZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgbmZjLCBpbnQgaykKIHsKLSAgICBQeV9VTklDT0RFICppLCAqZW5kOworICAgIFB5X3NzaXplX3QgaSwgbGVuOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgY2hhciBwcmV2X2NvbWJpbmluZyA9IDAsIHF1aWNrY2hlY2tfbWFzazsKIAogICAgIC8qIEFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIGlzIHJlcXVlc3RlZCwgcXVpY2tjaGVja3MgbXVzdCBiZQpAQCAtNzQ0LDEwICs3ODYsMTMgQEAKICAgICAgICBhcyBkZXNjcmliZWQgaW4gaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIxNS8jQW5uZXg4LiAqLwogICAgIHF1aWNrY2hlY2tfbWFzayA9IDMgPDwgKChuZmMgPyA0IDogMCkgKyAoayA/IDIgOiAwKSk7CiAKLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaW5wdXQpOwotICAgIGVuZCA9IGkgKyBQeVVuaWNvZGVfR0VUX1NJWkUoaW5wdXQpOwotICAgIHdoaWxlIChpIDwgZW5kKSB7Ci0gICAgICAgIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgKnJlY29yZCA9IF9nZXRyZWNvcmRfZXgoKmkrKyk7CisgICAgaSA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKyAgICB3aGlsZSAoaSA8IGxlbikgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsrKTsKKyAgICAgICAgY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCAqcmVjb3JkID0gX2dldHJlY29yZF9leChjaCk7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29tYmluaW5nID0gcmVjb3JkLT5jb21iaW5pbmc7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcXVpY2tjaGVjayA9IHJlY29yZC0+bm9ybWFsaXphdGlvbl9xdWlja19jaGVjazsKIApAQCAtNzc2LDcgKzgyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HZXRTaXplKGlucHV0KSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSA9PSAwKSB7CiAgICAgICAgIC8qIFNwZWNpYWwgY2FzZSBlbXB0eSBpbnB1dCBzdHJpbmdzLCBzaW5jZSByZXNpemluZwogICAgICAgICAgICB0aGVtICBsYXRlciB3b3VsZCBjYXVzZSBpbnRlcm5hbCBlcnJvcnMuICovCiAgICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7CkBAIC04NzYsMTUgKzkyNCwyNSBAQAogewogICAgIHJldHVybgogICAgICAgICAoMHgzNDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDREQjUpICAgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQSAqLwotICAgICAgICAoMHg0RTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDlGQ0IpICAgfHwgLyogQ0pLIElkZW9ncmFwaCAqLworICAgICAgICAoMHg0RTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDlGQ0MpICAgfHwgLyogQ0pLIElkZW9ncmFwaCAqLwogICAgICAgICAoMHgyMDAwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQTZENikgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQiAqLwogICAgICAgICAoMHgyQTcwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQjczNCkgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQyAqLwogICAgICAgICAoMHgyQjc0MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQjgxRCk7ICAgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gRCAqLwogfQogCisvKiBtYWNyb3MgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIGNvZGVwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQKKyAqIHdlIGFyZSB1c2luZyB0byBzdG9yZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgKi8KKyNkZWZpbmUgSVNfQUxJQVMoY3ApICgoY3AgPj0gYWxpYXNlc19zdGFydCkgJiYgKGNwIDwgYWxpYXNlc19lbmQpKQorI2RlZmluZSBJU19OQU1FRF9TRVEoY3ApICgoY3AgPj0gbmFtZWRfc2VxdWVuY2VzX3N0YXJ0KSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjcCA8IG5hbWVkX3NlcXVlbmNlc19lbmQpKQorCiBzdGF0aWMgaW50Ci1fZ2V0dWNuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbikKK19nZXR1Y25hbWUoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLAorICAgICAgICAgICBpbnQgd2l0aF9hbGlhc19hbmRfc2VxKQogeworICAgIC8qIEZpbmQgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb2RlcG9pbnQuCisgICAgICogSWYgd2l0aF9hbGlhc19hbmRfc2VxIGlzIDEsIGNoZWNrIGZvciBuYW1lcyBpbiB0aGUgUHJpdmF0ZSBVc2UgQXJlYSAxNQorICAgICAqIHRoYXQgd2UgYXJlIHVzaW5nIGZvciBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuICovCiAgICAgaW50IG9mZnNldDsKICAgICBpbnQgaTsKICAgICBpbnQgd29yZDsKQEAgLTg5Myw4ICs5NTEsMTYgQEAKICAgICBpZiAoY29kZSA+PSAweDExMDAwMCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvKiBYWFggc2hvdWxkIHdlIGp1c3Qgc2tpcCBhbGwgdGhlIGNvZGVwb2ludHMgaW4gdGhlIFBVQXMgaGVyZT8gKi8KKyAgICBpZiAoIXdpdGhfYWxpYXNfYW5kX3NlcSAmJiAoSVNfQUxJQVMoY29kZSkgfHwgSVNfTkFNRURfU0VRKGNvZGUpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKLSAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgY29kZSk7CisgICAgICAgIC8qIGluIDMuMi4wIHRoZXJlIGFyZSBubyBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgKi8KKyAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkOworICAgICAgICBpZiAoSVNfQUxJQVMoY29kZSkgfHwgSVNfTkFNRURfU0VRKGNvZGUpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIG9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGNvZGUpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApIHsKICAgICAgICAgICAgIC8qIHVuYXNzaWduZWQgKi8KICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtOTc4LDcgKzEwNDQsNyBAQAogICAgIC8qIGNoZWNrIGlmIGNvZGUgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIG5hbWUgKi8KICAgICBpbnQgaTsKICAgICBjaGFyIGJ1ZmZlcltOQU1FX01BWExFTl07Ci0gICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGNvZGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKQorICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjb2RlLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAxKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZm9yIChpID0gMDsgaSA8IG5hbWVsZW47IGkrKykgewogICAgICAgICBpZiAoUHlfVE9VUFBFUihQeV9DSEFSTUFTSyhuYW1lW2ldKSkgIT0gYnVmZmVyW2ldKQpAQCAtOTk0LDcgKzEwNjAsNyBAQAogICAgICpsZW4gPSAtMTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOwotICAgICAgICBsZW4xID0gc3RybGVuKHMpOworICAgICAgICBsZW4xID0gUHlfU0FGRV9ET1dOQ0FTVChzdHJsZW4ocyksIHNpemVfdCwgaW50KTsKICAgICAgICAgaWYgKGxlbjEgPD0gKmxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoc3RybmNtcChzdHIsIHMsIGxlbjEpID09IDApIHsKQEAgLTEwMDgsOCArMTA3NCwyOCBAQAogfQogCiBzdGF0aWMgaW50Ci1fZ2V0Y29kZShQeU9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUpCitfY2hlY2tfYWxpYXNfYW5kX3NlcSh1bnNpZ25lZCBpbnQgY3AsIFB5X1VDUzQqIGNvZGUsIGludCB3aXRoX25hbWVkX3NlcSkKIHsKKyAgICAvKiBjaGVjayBpZiBuYW1lZCBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgKi8KKyAgICBpZiAoIXdpdGhfbmFtZWRfc2VxICYmIElTX05BTUVEX1NFUShjcCkpCisgICAgICAgIHJldHVybiAwOworICAgIC8qIGlmIHRoZSBjb2RlcG9pbnQgaXMgaW4gdGhlIFBVQSByYW5nZSB0aGF0IHdlIHVzZSBmb3IgYWxpYXNlcywKKyAgICAgKiBjb252ZXJ0IGl0IHRvIG9idGFpbiB0aGUgcmlnaHQgY29kZXBvaW50ICovCisgICAgaWYgKElTX0FMSUFTKGNwKSkKKyAgICAgICAgKmNvZGUgPSBuYW1lX2FsaWFzZXNbY3AtYWxpYXNlc19zdGFydF07CisgICAgZWxzZQorICAgICAgICAqY29kZSA9IGNwOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitfZ2V0Y29kZShQeU9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUsCisgICAgICAgICBpbnQgd2l0aF9uYW1lZF9zZXEpCit7CisgICAgLyogUmV0dXJuIHRoZSBjb2RlcG9pbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICAgICAqIE5hbWVkIGFsaWFzZXMgYXJlIHJlc29sdmVkIHRvbyAodW5sZXNzIHNlbGYgIT0gTlVMTCAoaS5lLiB3ZSBhcmUgdXNpbmcKKyAgICAgKiAzLjIuMCkpLiAgSWYgd2l0aF9uYW1lZF9zZXEgaXMgMSwgcmV0dXJucyB0aGUgUFVBIGNvZGVwb2ludCB0aGF0IHdlIGFyZQorICAgICAqIHVzaW5nIGZvciB0aGUgbmFtZWQgc2VxdWVuY2UsIGFuZCB0aGUgY2FsbGVyIG11c3QgdGhlbiBjb252ZXJ0IGl0LiAqLwogICAgIHVuc2lnbmVkIGludCBoLCB2OwogICAgIHVuc2lnbmVkIGludCBtYXNrID0gY29kZV9zaXplLTE7CiAgICAgdW5zaWduZWQgaW50IGksIGluY3I7CkBAIC0xMDY1LDEwICsxMTUxLDggQEAKICAgICB2ID0gY29kZV9oYXNoW2ldOwogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKSB7Ci0gICAgICAgICpjb2RlID0gdjsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkKKyAgICAgICAgcmV0dXJuIF9jaGVja19hbGlhc19hbmRfc2VxKHYsIGNvZGUsIHdpdGhfbmFtZWRfc2VxKTsKICAgICBpbmNyID0gKGggXiAoaCA+PiAzKSkgJiBtYXNrOwogICAgIGlmICghaW5jcikKICAgICAgICAgaW5jciA9IG1hc2s7CkBAIC0xMDc3LDEwICsxMTYxLDggQEAKICAgICAgICAgdiA9IGNvZGVfaGFzaFtpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkgewotICAgICAgICAgICAgKmNvZGUgPSB2OwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19hbGlhc19hbmRfc2VxKHYsIGNvZGUsIHdpdGhfbmFtZWRfc2VxKTsKICAgICAgICAgaW5jciA9IGluY3IgPDwgMTsKICAgICAgICAgaWYgKGluY3IgPiBtYXNrKQogICAgICAgICAgICAgaW5jciA9IGluY3IgXiBjb2RlX3BvbHk7CkBAIC0xMTE4LDcgKzEyMDAsNyBAQAogICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjLCBuYW1lLCBzaXplb2YobmFtZSkpKSB7CisgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSwgMCkpIHsKICAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5vIHN1Y2ggbmFtZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTQzLDI4ICsxMjI1LDI2IEBACiB1bmljb2RlZGF0YV9sb29rdXAoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5X1VDUzQgY29kZTsKLSAgICBQeV9VTklDT0RFIHN0clsyXTsKIAogICAgIGNoYXIqIG5hbWU7CiAgICAgaW50IG5hbWVsZW47CisgICAgdW5zaWduZWQgaW50IGluZGV4OwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lbGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIG5hbWVsZW4sICZjb2RlKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIG5hbWVsZW4sICZjb2RlLCAxKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKGNvZGUgPj0gMHgxMDAwMCkgewotICAgICAgICBzdHJbMF0gPSAweGQ4MDAgKyAoKGNvZGUgLSAweDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgIHN0clsxXSA9IDB4ZGMwMCArICgoY29kZSAtIDB4MTAwMDApICYgMHgzZmYpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0ciwgMik7CisgICAgLyogY2hlY2sgaWYgY29kZSBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQgd2UgdXNlIGZvciBuYW1lZCBzZXF1ZW5jZXMKKyAgICAgICBhbmQgY29udmVydCBpdCAqLworICAgIGlmIChJU19OQU1FRF9TRVEoY29kZSkpIHsKKyAgICAgICAgaW5kZXggPSBjb2RlLW5hbWVkX3NlcXVlbmNlc19zdGFydDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzJCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkX3NlcXVlbmNlc1tpbmRleF0uc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZF9zZXF1ZW5jZXNbaW5kZXhdLnNlcWxlbik7CiAgICAgfQotI2VuZGlmCi0gICAgc3RyWzBdID0gKFB5X1VOSUNPREUpIGNvZGU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzdHIsIDEpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY29kZSk7CiB9CiAKIC8qIFhYWCBBZGQgZG9jIHN0cmluZ3MuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggOGUyZTcyNC4uNWQ1ZGNhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4wLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4xLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMjgsMTIgKzI4LDEyIEBACiAgICAgezI2LCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI4LCAwLCAxMSwgMCwgNCwgMH0sCiAgICAgezMwLCAwLCAxOSwgMCwgMywgMH0sCi0gICAgezMwLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI5LCAwLCAxOSwgMCwgNCwgMTM2fSwKICAgICB7MzAsIDAsIDE5LCAwLCA1LCAwfSwKLSAgICB7MiwgMCwgMSwgMCwgNCwgMTM2fSwKKyAgICB7MTksIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezI0LCAwLCAxOSwgMSwgNSwgMH0sCiAgICAgezE0LCAwLCAxNSwgMCwgNCwgMH0sCisgICAgezMwLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI5LCAwLCAxOSwgMCwgMywgMTM2fSwKICAgICB7MzAsIDAsIDExLCAwLCA0LCAwfSwKICAgICB7MjcsIDAsIDExLCAwLCA0LCAwfSwKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICB7MiwgMCwgMSwgMCwgNSwgMTB9LAogICAgIHsxLCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MSwgMCwgMSwgMCwgNCwgMTM2fSwKKyAgICB7MiwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7MiwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MSwgMCwgMSwgMCwgNSwgMTM2fSwKQEAgLTg3LDYgKzg4LDcgQEAKICAgICB7NiwgMCwgMTQsIDAsIDUsIDB9LAogICAgIHsyNiwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNSwgMH0sCisgICAgezI4LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezQsIDIyMCwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMjIsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMjI4LCAxNCwgMCwgNSwgMH0sCkBAIC0xMzQsNiArMTM2LDcgQEAKICAgICB7MTksIDAsIDUsIDAsIDUsIDEzNn0sCiAgICAgezcsIDAsIDksIDAsIDUsIDB9LAogICAgIHszMCwgMCwgNSwgMCwgNSwgMH0sCisgICAgezE0LCAwLCA1LCAwLCA1LCAwfSwKICAgICB7NCwgMzYsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDB9LAogICAgIHs3LCAwLCA0LCAwLCA1LCAwfSwKQEAgLTE0OCw3ICsxNTEsNiBAQAogICAgIHs0LCA3LCAxNCwgMCwgNSwgMH0sCiAgICAgezUsIDAsIDEsIDAsIDUsIDgwfSwKICAgICB7NSwgMCwgMSwgMCwgNSwgMTB9LAotICAgIHsyOCwgMCwgMTEsIDAsIDUsIDB9LAogICAgIHs5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDgwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDEwfSwKQEAgLTE3NSw3ICsxNzcsNiBAQAogICAgIHsxOSwgMCwgMSwgMCwgNSwgODB9LAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDB9LAogICAgIHs4LCAwLCAxLCAwLCA1LCAwfSwKLSAgICB7MTQsIDAsIDEsIDAsIDUsIDB9LAogICAgIHs1LCA5LCAxLCAwLCA1LCAwfSwKICAgICB7NCwgMSwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMzQsIDE0LCAwLCA1LCAwfSwKQEAgLTE5MCw2ICsxOTEsNyBAQAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDE3MH0sCiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMTM2fSwKICAgICB7MTQsIDAsIDE1LCAwLCA1LCAwfSwKKyAgICB7MTQsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxNCwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNSwgMTM2fSwKQEAgLTI1Niw3ICsyNTgsNyBAQAogICAgIHs0LCAyMjgsIDE0LCAwLCAyLCAwfSwKICAgICB7NCwgMjMyLCAxNCwgMCwgMiwgMH0sCiAgICAgezQsIDIyMiwgMTQsIDAsIDIsIDB9LAotICAgIHs0LCAyMjQsIDE0LCAwLCAyLCAwfSwKKyAgICB7NSwgMjI0LCAxLCAwLCAyLCAwfSwKICAgICB7OCwgMCwgMSwgMCwgMiwgMTM2fSwKICAgICB7MTksIDAsIDEsIDAsIDIsIDEwfSwKICAgICB7NCwgOCwgMTQsIDAsIDIsIDgwfSwKQEAgLTI2Niw3ICsyNjgsNyBAQAogICAgIHszMCwgMCwgMSwgMCwgMiwgMH0sCiAgICAgezksIDAsIDEsIDAsIDIsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCAyLCAxMzZ9LAotICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCisgICAgezksIDAsIDEsIDAsIDQsIDB9LAogICAgIHs5LCAwLCAxOSwgMCwgMiwgMTM2fSwKICAgICB7MjksIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxNSwgMCwgMSwgMCwgNSwgMH0sCkBAIC0zMjUsMTEgKzMyNywxMiBAQAogICAgIHsyNywgMCwgMSwgMCwgNSwgMTM2fSwKICAgICB7NywgMCwgOSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDEzNn0sCisgICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCi0jZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MAotI2RlZmluZSBUT1RBTF9MQVNUIDU1CisjZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MgorI2RlZmluZSBUT1RBTF9MQVNUIDU2CiBzdHJ1Y3QgcmVpbmRleHtpbnQgc3RhcnQ7c2hvcnQgY291bnQsaW5kZXg7fTsKIHN0YXRpYyBzdHJ1Y3QgcmVpbmRleCBuZmNfZmlyc3RbXSA9IHsKICAgeyA2MCwgMiwgMH0sCkBAIC01MzgsNiArNTQxLDcgQEAKICAgeyA2OTc4NSwgMCwgMzY3fSwKICAgeyA2OTc4NywgMCwgMzY4fSwKICAgeyA2OTc5NywgMCwgMzY5fSwKKyAgeyA2OTkzNywgMSwgMzcwfSwKICAgezAsMCwwfQogfTsKIApAQCAtNTc0LDYgKzU3OCw3IEBACiAgIHsgNjk2NSwgMCwgNTF9LAogICB7IDEyNDQxLCAxLCA1Mn0sCiAgIHsgNjk4MTgsIDAsIDU0fSwKKyAgeyA2OTkyNywgMCwgNTV9LAogICB7MCwwLDB9CiB9OwogCkBAIC02NzEsNTE1ICs2NzYsNTE1IEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCiAgICAgMzksIDQwLCA0MSwgNDEsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgCiAgICAgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgCi0gICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMTcsIDg0LCA4NSwgODYsIDg3LCA4OCwgCi0gICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDEsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAyLCAKLSAgICAxMDMsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDQsIDQxLCA0MSwgMTA1LCAxMDYsIDEwNywgCi0gICAgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE4LCAxMTksIAotICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKLSAgICAxMTksIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgCisgICAgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAyLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMywgMTA0LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTA1LCA0MSwgNDEsIDEwNiwgMTA3LCAKKyAgICAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgCiAgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjEsIDEyMSwgMTIyLCAxMjMsIDEyNCwgCi0gICAgMTI1LCAxMjYsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxNywgMTM3LCAKLSAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE0MiwgMTcsIDE0MywgMTcsIDE0NCwgMTcsIAotICAgIDE0NSwgMTcsIDE0NiwgMTcsIDE3LCAxNywgMTQ3LCAxNywgMTcsIDE3LCAxNDgsIDE0OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTUwLCAxNywgMTUxLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTUyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDE1MywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE1NCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNzgsIAotICAgIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTcsIDE1OSwgMTcsIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCi0gICAgMTcsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTgyLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTgzLCAxMDAsIDE4NCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTg1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODYsIDE3LCAxODcsIAotICAgIDE4OCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTg5LCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDE4OSwgCisgICAgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMTIzLCAxMjQsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCA4NCwgCisgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE0MywgODQsIDE0NCwgMTQ1LCAxNDYsIAorICAgIDg0LCAxNDcsIDg0LCAxNDgsIDg0LCA4NCwgODQsIDE0OSwgODQsIDg0LCA4NCwgMTUwLCAxNTEsIDE1MiwgMTUzLCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NSwgODQsIDE1NiwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NywgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCAxNTgsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDE1OSwgMTYwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE2MSwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgNzgsIDE2MiwgMTYzLCAxNjQsIDE2NSwgODQsIDE2NiwgODQsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIAorICAgIDE3MywgMTc0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE3NSwgMTc2LCA4NCwgODQsIDE3NywgMTc4LCAxNzksIAorICAgIDE4MCwgMTgxLCA4NCwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTIsIAorICAgIDEwMSwgMTkzLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgMTIyLCAxMjIsIDEyMiwgMTIyLCAxOTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDE5NSwgODQsIDE5NiwgMTk3LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxOTgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTk4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTExOTEsMTQwMSArMTE5NiwxNDY0IEBACiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCiAgICAgMjAsIDIwLCA5LCAxNiwgMTAsIDE2LCAxLCAxLCAxLCAxLCAxLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyMSwgMjIsIDgsIDgsIDIzLCA4LCAyNCwgCi0gICAgMjUsIDI2LCAyNywgMjgsIDI5LCAxNiwgMzAsIDI1LCAzMSwgMzIsIDMzLCAzNCwgMzQsIDI2LCAzNSwgMjUsIDIyLCAyNiwgCi0gICAgMzQsIDI4LCAzNiwgMzcsIDM3LCAzNywgMjIsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMjIsIDI1LCAyNiwgMjcsIDI4LCAxNiwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzQsIDI1LCAzNSwgMjIsIDIyLCAyNSwgCisgICAgMzQsIDI3LCAzNiwgMzcsIDM3LCAzNywgMjIsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCiAgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOSwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDAsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCiAgICAgMzgsIDM5LCA0MSwgNDIsIDQyLCA0MywgNDMsIDQzLCA0MywgNDEsIDQzLCA0MiwgNDIsIDQyLCA0MywgNDIsIDQyLCA0MywgCiAgICAgNDMsIDQxLCA0MywgNDIsIDQyLCA0MywgNDMsIDQzLCA0MCwgNDEsIDQyLCA0MiwgNDMsIDQyLCA0MywgNDEsIDQzLCAzOCwgCiAgICAgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQxLCAzOCwgCiAgICAgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDEsIDQ1LCAyOCwgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NSwgMjgsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MiwgCi0gICAgMjgsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDEsIDQ1LCA0NiwgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NSwgNDYsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MiwgCisgICAgNDYsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQyLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzUsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgNDQsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NiwgNDcsIDQ0LCA0NiwgNDYsIDQ2LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ5LCAzNSwgCi0gICAgNDgsIDQ5LCAzNSwgNDgsIDQ5LCAzNSwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgCi0gICAgMzgsIDQyLCAzOCwgNDIsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDgsIDQ5LCAzNSwgMzgsIDQzLCA0NCwgNDQsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgMzUsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgNDQsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NywgNDgsIDQ0LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDksIDUwLCAzNSwgCisgICAgNDksIDUwLCAzNSwgNDksIDUwLCAzNSwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgCisgICAgMzgsIDQyLCAzOCwgNDIsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDksIDUwLCAzNSwgMzgsIDQzLCA0NCwgNDQsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDEsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQxLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ3LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MSwgNTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MywgCi0gICAgNTMsIDU0LCA1MywgNTEsIDU1LCA1MSwgNTUsIDU1LCA1NSwgNTEsIDU1LCA1MSwgNTEsIDU2LCA1MiwgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgMjYsIDI2LCAyNiwgMjYsIDU3LCAyNiwgNTMsIDU0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MSwgNTMsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDU4LCA1OCwgNTgsIDU4LCA1OCwgNTksIDU4LCA1OCwgNTgsIDU4LCA1OCwgCi0gICAgNTgsIDU4LCA1OSwgNTksIDU4LCA1OSwgNTgsIDU5LCA1OCwgNTgsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjAsIDYyLCA2MSwgCi0gICAgNjEsIDYxLCA2MSwgNjEsIDYzLCA2MywgNjQsIDY0LCA2NCwgNjQsIDY1LCA2NSwgNjEsIDYxLCA2MSwgNjEsIDY0LCA2NCwgCi0gICAgNjEsIDY0LCA2NCwgNjEsIDYxLCA2NiwgNjYsIDY2LCA2NiwgNjcsIDYxLCA2MSwgNjEsIDYxLCA1OSwgNTksIDU5LCA2OCwgCi0gICAgNjgsIDU4LCA2OCwgNjgsIDY5LCA1OSwgNjEsIDYxLCA2MSwgNTksIDU5LCA1OSwgNjEsIDYxLCA3MCwgNTksIDU5LCA1OSwgCi0gICAgNjEsIDYxLCA2MSwgNjEsIDU5LCA2MCwgNjEsIDYxLCA1OSwgNzEsIDcyLCA3MiwgNzEsIDcyLCA3MiwgNzEsIDU5LCA1OSwgCi0gICAgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA0NCwgNDYsIDQ0LCA0NiwgNzMsIDUzLCA0NCwgCi0gICAgNDYsIDAsIDAsIDUwLCA0NiwgNDYsIDQ2LCA3NCwgMCwgMCwgMCwgMCwgMCwgNTcsIDc1LCAzOCwgNzQsIDM4LCAzOCwgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTIsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTQsIAorICAgIDU0LCA1NSwgNTQsIDUyLCA1NiwgNTIsIDU2LCA1NiwgNTYsIDUyLCA1NiwgNTIsIDUyLCA1NywgNTMsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDI1LCAyNSwgMjUsIDI1LCA1OCwgMjUsIDU0LCA1NSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDU0LCA1MywgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1OSwgNTksIDU5LCA1OSwgNTksIDYwLCA1OSwgNTksIDU5LCA1OSwgNTksIAorICAgIDU5LCA1OSwgNjAsIDYwLCA1OSwgNjAsIDU5LCA2MCwgNTksIDU5LCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYxLCA2MywgNjIsIAorICAgIDYyLCA2MiwgNjIsIDYyLCA2NCwgNjQsIDY1LCA2NSwgNjUsIDY1LCA2NiwgNjYsIDYyLCA2MiwgNjIsIDYyLCA2NSwgNjUsIAorICAgIDYyLCA2NSwgNjUsIDYyLCA2MiwgNjcsIDY3LCA2NywgNjcsIDY4LCA2MiwgNjIsIDYyLCA2MiwgNjAsIDYwLCA2MCwgNjksIAorICAgIDY5LCA1OSwgNjksIDY5LCA3MCwgNjAsIDYyLCA2MiwgNjIsIDYwLCA2MCwgNjAsIDYyLCA2MiwgNzEsIDYwLCA2MCwgNjAsIAorICAgIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjEsIDYyLCA2MiwgNjAsIDcyLCA3MywgNzMsIDcyLCA3MywgNzMsIDcyLCA2MCwgNjAsIAorICAgIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNDQsIDQ3LCA0NCwgNDcsIDc0LCA1NCwgNDQsIAorICAgIDQ3LCAwLCAwLCA1MSwgNDcsIDQ3LCA0NywgNzUsIDAsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKICAgICAwLCAzOCwgMCwgMzgsIDM4LCA0MywgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgMzksIDM5LCAwLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCiAgICAgNDMsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCi0gICAgNDYsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQ0LCAzNSwgMzUsIDQ4LCA3NiwgCi0gICAgNzYsIDM1LCAzNSwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDM1LCAzNSwgMzUsIDQ2LCA0OCwgMzUsIDc3LCA0NCwgCi0gICAgNDYsIDQ4LCA0NCwgNDYsIDQ2LCA0NCwgNDQsIDQ0LCAzOCwgNzgsIDQ0LCAzOCwgNDQsIDQ0LCA0NCwgMzgsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCAzOCwgMzgsIDM4LCA0NCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgNzgsIDM5LCAzOSwgCisgICAgNDcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQ0LCAzNSwgMzUsIDQ5LCA3NywgCisgICAgNzcsIDM1LCAzNSwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDM1LCAzNSwgMzUsIDQ3LCA0OSwgMzUsIDc4LCA0NCwgCisgICAgNDcsIDQ5LCA0NCwgNDcsIDQ3LCA0NCwgNDQsIDQ0LCAzOCwgNzksIDQ0LCAzOCwgNDQsIDQ0LCA0NCwgMzgsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCAzOCwgMzgsIDM4LCA0NCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgNzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MiwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCiAgICAgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MiwgCi0gICAgNDYsIDQzLCA0NiwgNDYsIDQ2LCA0MywgNDYsIDQ2LCA0NiwgNDYsIDQzLCA0MywgNDMsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNzksIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODEsIDgxLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDAsIDAsIDAsIAorICAgIDQ3LCA0MywgNDcsIDQ3LCA0NywgNDMsIDQ3LCA0NywgNDcsIDQ3LCA0MywgNDMsIDQzLCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgyLCA4MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDM1LCAKLSAgICAwLCA4MiwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCA4MCwgODAsIDg1LCA4NCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODAsIDgwLCA4NCwgODAsIDgwLCA4NSwgCi0gICAgODYsIDgwLCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAKLSAgICAxMDIsIDEwMywgMTA0LCAxMDIsIDgwLCA4NCwgMTAyLCA5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMTA2LCAxMDYsIAotICAgIDEwNiwgMCwgMCwgNzcsIDc3LCAxMDcsIDEwOCwgMTA4LCAxMDksIDExMCwgMTExLCAyNywgMjcsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgMTEyLCAxMTMsIDExNCwgMTExLCAwLCAwLCAxMTEsIDExMSwgMTE1LCAxMTUsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNywgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTgsIDExOSwgMTIwLCAKLSAgICAxMTIsIDExMywgMTE0LCAxMjEsIDEyMiwgMTIzLCAxMjMsIDEyNCwgODQsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCAKLSAgICA4MCwgODQsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTA4LCAxMjYsIDEyNiwgCi0gICAgMTExLCAxMTUsIDExNSwgMTI3LCAxMTUsIDExNSwgMTE1LCAxMTUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNiwgCi0gICAgMTE1LCAxMTYsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE2LCAxMTEsIDExNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEwNiwgMjcsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDExNywgMTE3LCA4MCwgODAsIDI3LCA4NCwgODAsIDgwLCA4NCwgMTE1LCAxMTUsIAotICAgIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTE1LCAxMTUsIDExNSwgMTMwLCAKLSAgICAxMzAsIDExNSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgCi0gICAgMTExLCAxMTEsIDAsIDEwNiwgMTE1LCAxMzEsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDgwLCA4NCwgODAsIDgwLCA4NCwgODAsIDgwLCA4NCwgODQsIAotICAgIDg0LCA4MCwgODQsIDg0LCA4MCwgODQsIDgwLCA4MCwgODAsIDg0LCA4MCwgODQsIDgwLCA4NCwgODAsIDg0LCA4MCwgODAsIAotICAgIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDEzNCwgMTM0LCAyNywgMTM1LCAxMzUsIDEzNSwgMTM0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDgwLCA4MCwgODAsIDgwLCAxMzQsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNCwgODAsIDgwLCA4MCwgMTM0LCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODQsIDg0LCA4NCwgCi0gICAgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAxMzIsIDEzNiwgMTM4LCA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM5LCAxMzYsIDEzNiwgNDcsIDgwLCA4NCwgODAsIDgwLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgNDcsIDQ3LCAxMzIsIDEzMiwgCi0gICAgODIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA1MiwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDEzMiwgMTM2LCAxMzYsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgCi0gICAgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAwLCAxMzYsIDEzNiwgMCwgMCwgMTQ0LCAxNDQsIDEzOSwgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDAsIDE0MCwgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIAotICAgIDE0NSwgMTQ1LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCA3OSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDE0MCwgMCwgNDcsIDE0MCwgMCwgNDcsIDQ3LCAwLCAwLCAKLSAgICAxNDIsIDAsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzOSwgMCwgMCwgMCwgMTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMTQwLCA0NywgMCwgMTQwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDEzMiwgCi0gICAgMTMyLCA0NywgNDcsIDQ3LCAxMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzYsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgCi0gICAgNDcsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAxMzIsIDEzMiwgMTM2LCAwLCAxMzYsIAotICAgIDEzNiwgMTM5LCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAxNDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAxNDMsIAotICAgIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDAsIDEzNiwgMTQ0LCAwLCAwLCAxNDQsIDE0NCwgMTM5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDcsIDE0MywgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDAsIDQ3LCA0NywgNDcsIDEzMiwgCi0gICAgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDc5LCA0NywgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCA0NywgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAxMzcsIDQ3LCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDAsIDQ3LCAwLCA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMTQzLCAxMzYsIDEzMiwgCi0gICAgMTM2LCAxMzYsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDAsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMCwgMCwgNDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDYsIDE0NiwgMTQ2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAxNDUsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMCwgMTMyLCAxMzIsIDE0OCwgMCwgMTMyLCAxMzIsIDEzMiwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDksIDE1MCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgNzksIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgMTM2LCAxNTIsIDE0NCwgMTM2LCAKLSAgICAxNDMsIDEzNiwgMTM2LCAwLCAxNTIsIDE0NCwgMTQ0LCAwLCAxNDQsIDE0NCwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE0MywgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMCwgMTM2LCAxMzYsIDEzNiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIAotICAgIDc5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAxNTMsIDAsIDAsIDAsIDAsIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIAotICAgIDAsIDEzMiwgMCwgMTM2LCAxMzYsIDE0NCwgMTM2LCAxNDQsIDE0NCwgMTQ0LCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCA0NywgMTU0LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDE1NSwgMTU1LCAxMzksIDAsIDAsIDAsIDAsIDE0NSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNTIsIDEzMiwgMTU2LCAxNTYsIDE1NiwgMTU2LCAxMzIsIDEzMiwgMTMyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMzUsIAorICAgIDAsIDgzLCA4NCwgMCwgMCwgMCwgMCwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg3LCA4NiwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NywgCisgICAgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAKKyAgICAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDcsIDEwNywgMTA3LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDAsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIDI2LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExNywgMTE3LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTksIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTIwLCAKKyAgICAxMjEsIDEyMiwgMTE0LCAxMTUsIDExNiwgMTIzLCAxMjQsIDEyNSwgMTI1LCAxMjYsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDg2LCA4MSwgODEsIDg2LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDExMCwgCisgICAgMTI4LCAxMjgsIDExMywgMTE3LCAxMTcsIDEyOSwgMTE3LCAxMTcsIDExNywgMTE3LCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTgsIDExNywgMTE4LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExOCwgMTEzLCAxMTcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMDgsIDI2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMTksIDExOSwgODEsIDgxLCAyNiwgODYsIDgxLCA4MSwgODYsIAorICAgIDExNywgMTE3LCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDExNywgMTE3LCAKKyAgICAxMTcsIDEzMiwgMTMyLCAxMTcsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMzMsIDExNywgMTM0LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgCisgICAgODYsIDg2LCA4NiwgODEsIDg2LCA4NiwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgCisgICAgODEsIDgxLCAwLCAwLCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDExNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMzcsIDEzNywgMjYsIDEzOCwgMTM4LCAxMzgsIDEzNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAKKyAgICAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgCisgICAgMTA0LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDg2LCA4NiwgODYsIAorICAgIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDQ3LCAKLSAgICAwLCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCAxNTQsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTU3LCAKLSAgICAxNTcsIDAsIDEzMiwgMTMyLCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA1MiwgMCwgMTU4LCAxNTgsIDE1OCwgCi0gICAgMTU4LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAKLSAgICAwLCAxNTQsIDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDc5LCA3OSwgNzksIDgyLCA4MiwgODIsIDgyLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgMTU5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCA4NCwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDc5LCA4NCwgNzksIDg0LCA3OSwgCi0gICAgMTYwLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY1LCAxNjUsIDE2NywgMTY1LCAxNjcsIDE2NCwgMTY0LCAKLSAgICAxNjQsIDE2NCwgMTMyLCAxMzYsIDE2NCwgMTY1LCA4MCwgODAsIDEzOSwgODIsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgNzksIDc5LCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA4MiwgCi0gICAgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTQ3LCAxMzIsIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTQyLCAxMzYsIDEzOSwgCi0gICAgMTM5LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDQ3LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDg0LCA0NywgMTM2LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDEzNiwgMTM2LCAxMzYsIDEzMiwgNzksIDc5LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE3LCAwLCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIAorICAgIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIwLCAxMjEsIDEyMiwgODEsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgCisgICAgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgCisgICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCisgICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCisgICAgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCisgICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgMCwgCisgICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIAorICAgIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAKKyAgICAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAKKyAgICAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAKKyAgICAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIAorICAgIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAorICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKKyAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDE0OSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIDE0MiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA1MCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgNDcsIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA3OSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgODMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2MSwgCi0gICAgMTYyLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDgyLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAxMzksIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCAwLCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MiwgMTcyLCAxMzYsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzOSwgCi0gICAgMTMyLCA4MiwgODIsIDgyLCA1MiwgODIsIDgyLCA4MiwgMTQ1LCA0NywgODAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICA4MywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzIsIDEzMiwgMTMyLCAxNzAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgODYsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDEzNiwgMTM2LCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCA4NSwgODAsIDg0LCAwLCAwLCAwLCAwLCAyNywgMCwgMCwgMCwgMTM1LCAxMzUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTM2LCAxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQ2LCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MCwgODQsIDEzNiwgMTM2LCAxMzYsIDAsIDAsIDgyLCA4MiwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIAotICAgIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDEzOSwgMTM2LCAxMzIsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODQsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgCi0gICAgNTIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAKKyAgICAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTM1LCA4MywgODMsIAorICAgIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3MiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDg3LCA4MSwgODYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAorICAgIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4NiwgMTM5LCAxMzksIDEzOSwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTQyLCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCA4NiwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDEzNywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQyLCAxNDMsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNDQsIDEzMiwgMTQ0LCAxMzYsIDEzNiwgMTQ0LCAxNDQsIDEzMiwgMTQ0LCAKLSAgICAxNzMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgODAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTczLCAwLCAKLSAgICAwLCAwLCA0NywgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCAxNDAsIDQ4LCAKKyAgICAxNDAsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxNDYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDcsIDEzNSwgMTQ3LCAxMzksIDEzOSwgMTQ3LCAxNDcsIDEzNSwgMTQ3LCAxNzQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTc0LCAxNDIsIDEzOSwgMTM5LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDE3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTQ1LCAwLCAwLCAwLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODMsIDE3NSwgODYsIDg2LCA4NiwgODYsIDg2LCAKKyAgICA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCA4MSwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDE0MiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIAotICAgIDEzNiwgMTMyLCAxNDIsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODIsIDE3NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4MCwgODAsIDg0LCA4NCwgODQsIDg0LCA4MCwgMTM2LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDQ3LCA0NywgNDcsIDQ3LCA4NCwgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgNTAsIDUwLCA1MiwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNTAsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgODAsIAotICAgIDgwLCA4NCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgODAsIDE3NSwgMTc2LCA4NCwgMTc3LCA4MCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc2LCAxNzcsIDg2LCAxNzgsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzksIDg2LCAKKyAgICA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgwLCA0NywgNDcsIDQ0LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIAorICAgIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIAorICAgIDQzLCAxODEsIDQzLCAxODEsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIAorICAgIDE4MiwgNTgsIDE4MSwgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgzLCAzOCwgMTgzLCAxODIsIAorICAgIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MSwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIDAsIDc2LCA3NiwgCisgICAgNzYsIDQzLCA0MywgNDMsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgMzgsIDc2LCAxODQsIDE4NCwgCisgICAgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgzLCAzOCwgMTgzLCAxODIsIDE4NCwgNTgsIDAsIDE4NSwgMTg1LCAKKyAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAxODgsIDE4OSwgCisgICAgMTkwLCAxOTEsIDg0LCAxOTAsIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIAorICAgIDE5NiwgMjIsIDIyLCAyMiwgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgCisgICAgMjA0LCAyMSwgMjA1LCAxMTAsIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIAorICAgIDEzOCwgMTk3LCAyMDgsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAyMTAsIDUxLCAwLCAwLCAzNCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAyMTAsIAorICAgIDIxMSwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxMCwgMzQsIDM0LCAzNCwgMzQsIDIxMCwgMjEwLCAyMTAsIDIxMCwgCisgICAgMjEwLCAyMTEsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjE2LCAyMTcsIDg1LCA4NSwgCisgICAgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NSwgMTc1LCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTc1LCAxNzUsIDE3NSwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NSwgMTc1LCAKKyAgICA4MSwgODYsIDgxLCAxNzUsIDE3NSwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMTgsIDIxOCwgNDksIDIxOSwgMjYsIDIxOSwgMjE4LCA0OSwgMjYsIDIxOSwgMzUsIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjE5LCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIAorICAgIDI2LCAyMTgsIDIxOSwgMjE5LCAyNiwgNDksIDI2LCAyMjAsIDI2LCA0OSwgMjYsIDE4MywgMjIwLCA0OSwgNDksIDIyMSwgCisgICAgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIxOCwgMzUsIDM1LCA0OSwgNDksIAorICAgIDIyMiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjIzLCAKKyAgICAyMjMsIDIyMywgMzcsIDM3LCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAzNywgMzcsIDM3LCAzNywgMjIzLCAyMjQsIAorICAgIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDIyNSwgMjI1LCAKKyAgICAyMjUsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCAyMjUsIDIyNSwgCisgICAgMjI1LCAyMjUsIDIyNSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjI2LCAyMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI3LCAyMjYsIDIyNiwgMjYsIDI2LCA0MCwgMjYsIDQwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIyOCwgMjI5LCAyMjksIDIzMCwgNzgsIDc4LCA0MCwgMjI5LCAyMzAsIAorICAgIDIyOCwgMjI5LCAyMzAsIDIyOCwgNzgsIDQwLCA3OCwgMjI5LCAyMzEsIDIzMiwgNzgsIDIyOSwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjksIDIyOCwgMjI4LCAyMjksIDQwLCAyMjksIDIyOSwgMjI4LCAyMjgsIDQwLCAyMzAsIDQwLCAyMzAsIDQwLCA0MCwgNDAsIAorICAgIDQwLCAyMjksIDIzMywgMjIyLCAyMjksIDIyMiwgMjIyLCAyMjgsIDIyOCwgMjI4LCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIyOCwgCisgICAgNzgsIDIyOCwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjI5LCAKKyAgICAyMzAsIDIyOCwgMjI4LCAyMjksIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI5LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIzNCwgNDAsIDIzMCwgNzgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAKKyAgICAyMjgsIDIyOSwgMjI5LCA3OCwgMjI2LCAyMzQsIDIzNCwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjI4LCAyMjgsIAorICAgIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjI5LCAyMjksIDIzMCwgMjMwLCAKKyAgICAyMjksIDIyOSwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDQwLCA3OCwgNzgsIDIyOCwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA0MCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI5LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgCisgICAgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAyMzAsIDc4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjgsIDIyOCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzNSwgMjM2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3OCwgODQsIDgwLCA4NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxNzksIDQ2LCAKLSAgICA0NiwgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAKLSAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgCi0gICAgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgCi0gICAgMzgsIDE4MiwgMTgxLCA1NywgMTgwLCA1NywgNTcsIDc1LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODIsIDM4LCAKLSAgICAxODIsIDE4MSwgNzUsIDc1LCA3NSwgNDMsIDQzLCA0MywgMTgwLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MiwgMCwgCi0gICAgNzUsIDc1LCA3NSwgNDMsIDQzLCA0MywgMTgwLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgyLCAzOCwgNzUsIAotICAgIDE4MywgMTgzLCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODIsIDM4LCAxODIsIDE4MSwgMTgzLCA1NywgMCwgCi0gICAgMTg0LCAxODQsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NiwgMTg2LCAxODYsIAotICAgIDE3MiwgMTg3LCAxODgsIDE4OSwgODMsIDE4OCwgMTg4LCAxODgsIDIyLCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTkxLCAKLSAgICAxOTIsIDE5MywgMTk0LCAyMiwgMjIsIDIyLCAxMzUsIDE5NSwgMTk1LCAxOTUsIDIyLCAxOTYsIDE5NywgMTk4LCAxOTksIAotICAgIDIwMCwgMjAxLCAyMDIsIDIxLCAyMDMsIDEwOCwgMjAzLCAyMDQsIDIwNSwgMjIsIDE5MCwgMTkwLCAxMzUsIDI5LCAzNiwgCi0gICAgMjIsIDE5MCwgMTM1LCAxOTUsIDIwNiwgMjA2LCAxMzUsIDEzNSwgMTM1LCAyMDcsIDE2MSwgMTYyLCAxOTAsIDE5MCwgMTkwLCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNzcsIDEzNSwgMjA2LCAxMzUsIDEzNSwgMTkwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE4NSwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDIwOCwgNTAsIDAsIDAsIDM0LCAyMDgsIDIwOCwgMjA4LCAyMDgsIAotICAgIDIwOCwgMjA5LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjA4LCAzNCwgMzQsIDM0LCAzNCwgMjA4LCAyMDgsIDIwOCwgCi0gICAgMjA4LCAyMDgsIDIwOSwgMjA5LCAyMTAsIDIxMSwgMjEyLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIxNCwgCi0gICAgMjE1LCAxNDUsIDE0NSwgMjMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODAsIDgwLCAxNzQsIDE3NCwgODAsIDgwLCA4MCwgODAsIDE3NCwgMTc0LCAxNzQsIDgwLCA4MCwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgwLCA4MSwgODEsIDgxLCAxNzQsIDE3NCwgODAsIDg0LCA4MCwgMTc0LCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE2LCAyMTYsIDQ4LCAyMTcsIDI3LCAyMTcsIAotICAgIDIxNiwgNDgsIDI3LCAyMTcsIDM1LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDI4LCAyNywgNDgsIDIxNywgCi0gICAgMjcsIDc3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI3LCAyNywgMjE2LCAyMTcsIDIxNywgMjcsIDQ4LCAyNywgMjE4LCAyNywgCi0gICAgNDgsIDI3LCAxODIsIDIxOCwgNDgsIDQ4LCAyMTksIDM1LCA0OCwgNDgsIDQ0LCA0OCwgMzUsIDE1NCwgMTU0LCAxNTQsIAotICAgIDE1NCwgMzUsIDI3LCAyMTYsIDM1LCAzNSwgNDgsIDQ4LCAyMjAsIDc3LCA3NywgNzcsIDc3LCA0OCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDI3LCA3NywgMjcsIDI3LCA0NiwgNzksIDIyMSwgMjIxLCAyMjEsIDM3LCAzNywgMjIxLCAyMjEsIDIyMSwgMjIxLCAKLSAgICAyMjEsIDIyMSwgMzcsIDM3LCAzNywgMzcsIDIyMSwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIAotICAgIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAKLSAgICAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDE3MSwgMTcxLCAxNzEsIDQ0LCA0NiwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAzNywgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDIyNCwgMjI0LCAyNywgMjcsIDI3LCAyNywgNzcsIDI3LCAyNywgNzcsIDI3LCAyNywgNzcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyMjQsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIyNSwgCi0gICAgMjI0LCAyMjQsIDI3LCAyNywgNDAsIDI3LCA0MCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDQwLCAyMjYsIDIyNywgCi0gICAgMjI3LCAyMjgsIDc3LCA3NywgNDAsIDIyNywgMjI4LCAyMjYsIDIyNywgMjI4LCAyMjYsIDc3LCA0MCwgNzcsIDIyNywgMjI5LCAKLSAgICAyMzAsIDc3LCAyMjcsIDIyNiwgNzcsIDc3LCA3NywgMjI3LCAyMjYsIDIyNiwgMjI3LCA0MCwgMjI3LCAyMjcsIDIyNiwgCi0gICAgMjI2LCA0MCwgMjI4LCA0MCwgMjI4LCA0MCwgNDAsIDQwLCA0MCwgMjI3LCAyMzEsIDIyMCwgMjI3LCAyMjAsIDIyMCwgMjI2LCAKLSAgICAyMjYsIDIyNiwgNDAsIDQwLCA0MCwgNDAsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNywgMjI3LCAyMjYsIDIyNiwgMjI2LCAyMjgsIAotICAgIDIyNiwgMjI2LCAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyNywgMjI4LCAyMjYsIDIyNiwgMjI3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNywgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMzIsIDQwLCAKLSAgICAyMjgsIDc3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNiwgMjI2LCAyMjcsIDIyNywgNzcsIDIyNCwgMjMyLCAyMzIsIDIyOCwgCi0gICAgMjI4LCAyMjYsIDIyNiwgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI4LCAyMjgsIDIyNywgMjI3LCAyMjgsIDIyOCwgMjI3LCAyMjcsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA0MCwgNzcsIDc3LCAyMjYsIDQwLCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgNDAsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDIyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMzMsIDIzNCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAyNywgNzcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgCiAgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCi0gICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIyMSwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIAotICAgIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNSwgNDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjUsIDQwLCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgCi0gICAgMjcsIDQwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTYxLCAxNjIsIAotICAgIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDIzNiwgMjM2LCAKLSAgICAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjI2LCA3NywgNzcsIDIyNiwgMjI2LCAxNjEsIDE2MiwgNzcsIDIyNiwgCi0gICAgMjI2LCA3NywgMCwgMjI2LCAwLCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDksIDEwLCA5LCAxMCwgOSwgCi0gICAgMTAsIDksIDEwLCAxNjEsIDE2MiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAxNjEsIDE2MiwgOSwgMTAsIDE2MSwgMTYyLCAxNjEsIAotICAgIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAKLSAgICAxNjIsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDc3LCA3NywgMTYxLCAxNjIsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjAsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIAotICAgIDc3LCA3NywgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDIyNiwgMjIwLCAyMTAsIDIxMCwgNzcsIDc3LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgMjM3LCA3NywgMjI2LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgMjI2LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgNzcsIDc3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMCwgNDQsIDQ2LCAKLSAgICA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NiwgNDQsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDM1LCA1MCwgNDQsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDQ0LCA0NiwgNDQsIDQ2LCA4MCwgODAsIDgwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1MSwgMTM1LCAxMzUsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIyMywgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAorICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKKyAgICAyMzgsIDIzOCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCAxNjMsIDE2NCwgNzgsIDIyOCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAyOSwgMzYsIDI5LCAzNiwgMTM1LCAxMzUsIDEzNSwgMjksIDM2LCAxMzUsIDI5LCAKLSAgICAzNiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODMsIDEzNSwgMTM1LCA4MywgMTM1LCAKLSAgICAyOSwgMzYsIDEzNSwgMTM1LCAyOSwgMzYsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTEsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzksIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMCwgMCwgMCwgMjQwLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyMzgsIDI0MiwgMTY4LCAyNDMsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgCi0gICAgMjM4LCAyMzgsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDgsIAotICAgIDIzOCwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQ5LCAyNTAsIDI1MSwgMjUyLCAKLSAgICAyNTMsIDI1MywgMjQ2LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjM5LCAyMzgsIDI1NCwgMjU0LCAyNTQsIDI0MiwgCi0gICAgMTY4LCAyNDEsIDIzOCwgMjcsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIAotICAgIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgCi0gICAgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAyNTUsIDE2OCwgMTY4LCAwLCAwLCAyNTYsIDI1NiwgMjU3LCAyNTcsIDI0MiwgMjU4LCAyNTksIAotICAgIDI0NiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAKLSAgICAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDI1NSwgMTY4LCAxNjgsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjQxLCAyNDIsIDI0MiwgMjU4LCAyNTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDAsIDI2MCwgMjYwLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDIzOSwgMjY0LCAyNjQsIAotICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIAotICAgIDIzOSwgMjM5LCAyNjAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKLSAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjM5LCAyMzksIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjQyLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgMTM1LCAxMzUsIAotICAgIDEzNSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDcsIDgwLCA4MSwgODEsIDgxLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgMTM1LCA1MSwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgODAsIDgwLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MywgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNTAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNTEsIDI2NSwgMjY1LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgMCwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDQ3LCA0NywgNDcsIDEzOSwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDEzNiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDc5LCA3OSwgMTQ1LCAyMTksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDgyLCA4MiwgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCA4NCwgODQsIDg0LCA4MiwgCi0gICAgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDIsIDEzNiwgMTM2LCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzYsIDE3MywgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgCi0gICAgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDUyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTM2LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIAotICAgIDAsIDgyLCA4MiwgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNTIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDc5LCA3OSwgNzksIDQ3LCAxMzYsIDAsIDAsIDAsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgwLCA0NywgODAsIDgwLCA4NCwgNDcsIAotICAgIDQ3LCA4MCwgODAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODAsIDgwLCA0NywgODAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDUyLCA4MiwgODIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMTYzLCAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjIyLCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCA3OCwgMjI4LCA3OCwgNzgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIAorICAgIDIyMiwgMjEyLCAyMTIsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzOSwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDc4LCAyMjgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAKLSAgICAxMzYsIDEzNiwgODIsIDEzNiwgMTM5LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTY4LCAxNjgsIDI2OCwgMTY4LCAyNjgsIDE2OCwgMTY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE2OCwgMjY4LCAxNjgsIDI2OCwgMTY4LCAKLSAgICAxNjgsIDI2OCwgMjY4LCAxNjgsIDE2OCwgMTY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjcwLCAyNjksIAotICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDIwOSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMCwgMjY5LCAwLCAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI3MSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxOTMsIDI3MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAyNzQsIDI3LCAwLCAwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzYsIDI3NywgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzgsIDI3OCwgMjc5LCAyNzksIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAKLSAgICAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjQxLCAyNDEsIDI3NiwgCi0gICAgMjc3LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3OSwgMjc5LCAyNzksIDI4MCwgMjc1LCAyODAsIDAsIDI3NSwgMjgwLCAyNzUsIAotICAgIDI3NSwgMjc4LCAyODEsIDI4MiwgMjgxLCAyODIsIDI4MSwgMjgyLCAyODMsIDI3NSwgMjc1LCAyODQsIDI4NSwgMjg2LCAKLSAgICAyODYsIDI4NywgMCwgMjc1LCAyODgsIDI4MywgMjc1LCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMTUsIDEyOCwgMCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMTg2LCAwLCAyODksIDI4OSwgMjkwLCAKLSAgICAyOTEsIDI5MCwgMjg5LCAyODksIDI5MiwgMjkzLCAyODksIDI5NCwgMjk1LCAyOTYsIDI5NSwgMjk1LCAyOTcsIDI5NywgCi0gICAgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NSwgMjg5LCAyOTgsIDI5OSwgMjk4LCAyODksIAotICAgIDI4OSwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAKLSAgICAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDI5MiwgCi0gICAgMjg5LCAyOTMsIDMwMSwgMzAyLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAyOTIsIDI5OSwgMjkzLCAyOTksIDI5MiwgMjkzLCAzMDQsIDMwNSwgMzA2LCAzMDQsIDMwNCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDgsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwOCwgMzA4LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIDAsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIAotICAgIDMwNywgMzA3LCAzMDcsIDAsIDAsIDAsIDI5MSwgMjkxLCAyOTksIDMwMSwgMzA5LCAyOTEsIDI5MSwgMCwgMzEwLCAzMTEsIAotICAgIDMxMSwgMzExLCAzMTEsIDMxMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTIsIDMxMiwgMzEyLCAyNywgCi0gICAgMjUsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgODIsIDEzNSwgNzksIDAsIDAsIDAsIDAsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTUxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcxLCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAKKyAgICAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDgyLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQxLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDI0MiwgMjQzLCAyNDMsIDI0MywgCisgICAgMjQwLCAyNDQsIDE3MCwgMjQ1LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIAorICAgIDI0MCwgMjQwLCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUwLCAKKyAgICAyNDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI1MSwgMjUyLCAyNTMsIDI1NCwgCisgICAgMjU1LCAyNTUsIDI0OCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0MSwgMjQwLCAyNTYsIDI1NiwgMjU2LCAyNDQsIAorICAgIDE3MCwgMjQzLCAyNDAsIDI2LCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAKKyAgICAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIAorICAgIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMCwgMCwgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNDQsIDI2MCwgMjYxLCAKKyAgICAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIAorICAgIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgCisgICAgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNTcsIDE3MCwgMTcwLCAyNTcsIDI1NywgMjU3LCAyNTcsIDI0MywgMjQ0LCAyNDQsIDI2MCwgMjYxLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIAorICAgIDI2MywgMjYzLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAwLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKKyAgICAyNjMsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNDEsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjYyLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ0LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM4LCAxMzgsIAorICAgIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDU0LCA1NCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI2NywgMjY3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgMCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjIxLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDgzLCA4MywgODMsIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIAorICAgIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzQsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKKyAgICA0OCwgMTM5LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgCisgICAgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIAorICAgIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDE3MCwgMTcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDAsIDAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjcxLCAyNzIsIDI3MSwgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjExLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAwLCAyNzEsIDAsIDI3MSwgMjcxLCAKKyAgICAwLCAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjczLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDE5NSwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDI3NiwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3OCwgMjc5LCAKKyAgICAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzcsIDI4MCwgMjgwLCAyODEsIDI4MSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIAorICAgIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNDMsIDI0MywgMjc4LCAyNzksIDI3NywgMjc3LCAKKyAgICAyNzcsIDI3NywgMjgxLCAyODEsIDI4MSwgMjgyLCAyNzcsIDI4MiwgMCwgMjc3LCAyODIsIDI3NywgMjc3LCAyODAsIDI4MywgCisgICAgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4NSwgMjc3LCAyNzcsIDI4NiwgMjg3LCAyODgsIDI4OCwgMjg5LCAwLCAyNzcsIAorICAgIDI5MCwgMjg1LCAyNzcsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDExNywgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxODcsIDAsIDI5MSwgMjkxLCAyOTIsIDI5MywgMjkyLCAyOTEsIAorICAgIDI5MSwgMjk0LCAyOTUsIDI5MSwgMjk2LCAyOTcsIDI5OCwgMjk3LCAyOTcsIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAKKyAgICAyOTksIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk3LCAyOTEsIDMwMCwgMzAxLCAzMDAsIDI5MSwgMjkxLCAzMDIsIDMwMiwgCisgICAgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIAorICAgIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMjk0LCAyOTEsIDI5NSwgMzAzLCAKKyAgICAzMDQsIDMwMywgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgCisgICAgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIAorICAgIDI5NCwgMzAxLCAyOTUsIDMwMSwgMjk0LCAyOTUsIDMwNiwgMzA3LCAzMDgsIDMwNiwgMzA2LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMxMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzEwLCAzMTAsIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMCwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCisgICAgMCwgMCwgMCwgMjkzLCAyOTMsIDMwMSwgMzAzLCAzMTEsIDI5MywgMjkzLCAwLCAzMTIsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEyLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDI2LCAzMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMCwgMCwgMTA1LCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDAsIDAsIDAsIDEwNSwgMCwgMCwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwMiwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCi0gICAgMzE0LCAzMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMTM1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEzMiwgMTMyLCAxMzIsIDAsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzIsIDg0LCAxMzIsIDgwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDgwLCAxNzQsIAotICAgIDg0LCAwLCAwLCAwLCAwLCAxMzksIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMzE0LCAzMTQsIDEwMiwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAotICAgIDMxNCwgMzE0LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCi0gICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMCwgMTM2LCAxMzIsIAotICAgIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTM5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCAKLSAgICAxMzcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM5LCAxMzgsIDgyLCA4MiwgCi0gICAgMTcyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKLSAgICAzMTYsIDMxNiwgMzE3LCAzMTcsIDE3NCwgMTc0LCAxNzQsIDc5LCA3OSwgNzksIDMxOCwgMzE3LCAzMTcsIDMxNywgMzE3LCAKLSAgICAzMTcsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDc5LCA3OSwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODQsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDgwLCA4MCwgODAsIDgwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA4MCwgODAsIDgwLCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzUsIAorICAgIDg2LCAwLCAwLCAwLCAwLCAxNDIsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMzE2LCAzMTYsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDMxNiwgMzE2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAKKyAgICAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgCisgICAgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMCwgMTM5LCAxMzUsIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQyLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgCisgICAgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgMzUsIDAsIDAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMzIxLCAwLCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyMzUsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMjYyLCAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzQsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE3NCwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE5LCAzMTksIAorICAgIDE3NSwgMTc1LCAxNzUsIDgwLCA4MCwgODAsIDMyMCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE4LCAzMTgsIAorICAgIDMxOCwgMzE4LCAzMTgsIDMxOCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgCisgICAgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIAorICAgIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAwLCAKKyAgICAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIAorICAgIDAsIDEzMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMzIzLCAwLCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDIxOCwgMjE4LCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMjM3LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMjY0LCAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMCwgMjcsIDAsIDI3LCAwLCAyNywgCi0gICAgMCwgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgCi0gICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgCisgICAgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTMwNzIsMzIxICszMTQwLDMyMiBAQAogICAgIDUwLCA0OSwgMjYwODUsIDc3MCwgNTAsIDUwLCAyNjA4NSwgNzcwLCA1MCwgNTEsIDI2MDg1LCA3NzAsIDUwLCA1MiwgCiAgICAgMjYwODUsIDc3MCwgNTAsIDUzLCAyNjA4NSwgNzcwLCA1MCwgNTQsIDI2MDg1LCA3NzAsIDUwLCA1NSwgMjYwODUsIDc3MCwgCiAgICAgNTAsIDU2LCAyNjA4NSwgNzcwLCA1MCwgNTcsIDI2MDg1LCA3NzAsIDUxLCA0OCwgMjYwODUsIDc3MCwgNTEsIDQ5LCAKLSAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1NiwgMzU5MTIsIDI1NiwgMjYzNTYsIDI1NiwgMzY1NTQsIAotICAgIDI1NiwgMzYwNDAsIDI1NiwgMjgzNjksIDI1NiwgMjAwMTgsIDI1NiwgMjE0NzcsIDI1NiwgNDA4NjAsIDI1NiwgNDA4NjAsIAotICAgIDI1NiwgMjI4NjUsIDI1NiwgMzczMjksIDI1NiwgMjE4OTUsIDI1NiwgMjI4NTYsIDI1NiwgMjUwNzgsIDI1NiwgMzAzMTMsIAotICAgIDI1NiwgMzI2NDUsIDI1NiwgMzQzNjcsIDI1NiwgMzQ3NDYsIDI1NiwgMzUwNjQsIDI1NiwgMzcwMDcsIDI1NiwgMjcxMzgsIAotICAgIDI1NiwgMjc5MzEsIDI1NiwgMjg4ODksIDI1NiwgMjk2NjIsIDI1NiwgMzM4NTMsIDI1NiwgMzcyMjYsIDI1NiwgMzk0MDksIAotICAgIDI1NiwgMjAwOTgsIDI1NiwgMjEzNjUsIDI1NiwgMjczOTYsIDI1NiwgMjkyMTEsIDI1NiwgMzQzNDksIDI1NiwgNDA0NzgsIAotICAgIDI1NiwgMjM4ODgsIDI1NiwgMjg2NTEsIDI1NiwgMzQyNTMsIDI1NiwgMzUxNzIsIDI1NiwgMjUyODksIDI1NiwgMzMyNDAsIAotICAgIDI1NiwgMzQ4NDcsIDI1NiwgMjQyNjYsIDI1NiwgMjYzOTEsIDI1NiwgMjgwMTAsIDI1NiwgMjk0MzYsIDI1NiwgMzcwNzAsIAotICAgIDI1NiwgMjAzNTgsIDI1NiwgMjA5MTksIDI1NiwgMjEyMTQsIDI1NiwgMjU3OTYsIDI1NiwgMjczNDcsIDI1NiwgMjkyMDAsIAotICAgIDI1NiwgMzA0MzksIDI1NiwgMzI3NjksIDI1NiwgMzQzMTAsIDI1NiwgMzQzOTYsIDI1NiwgMzYzMzUsIDI1NiwgMzg3MDYsIAotICAgIDI1NiwgMzk3OTEsIDI1NiwgNDA0NDIsIDI1NiwgMzA4NjAsIDI1NiwgMzExMDMsIDI1NiwgMzIxNjAsIDI1NiwgMzM3MzcsIAotICAgIDI1NiwgMzc2MzYsIDI1NiwgNDA1NzUsIDI1NiwgMzU1NDIsIDI1NiwgMjI3NTEsIDI1NiwgMjQzMjQsIDI1NiwgMzE4NDAsIAotICAgIDI1NiwgMzI4OTQsIDI1NiwgMjkyODIsIDI1NiwgMzA5MjIsIDI1NiwgMzYwMzQsIDI1NiwgMzg2NDcsIDI1NiwgMjI3NDQsIAotICAgIDI1NiwgMjM2NTAsIDI1NiwgMjcxNTUsIDI1NiwgMjgxMjIsIDI1NiwgMjg0MzEsIDI1NiwgMzIwNDcsIDI1NiwgMzIzMTEsIAotICAgIDI1NiwgMzg0NzUsIDI1NiwgMjEyMDIsIDI1NiwgMzI5MDcsIDI1NiwgMjA5NTYsIDI1NiwgMjA5NDAsIDI1NiwgMzEyNjAsIAotICAgIDI1NiwgMzIxOTAsIDI1NiwgMzM3NzcsIDI1NiwgMzg1MTcsIDI1NiwgMzU3MTIsIDI1NiwgMjUyOTUsIDI1NiwgMjcxMzgsIAotICAgIDI1NiwgMzU1ODIsIDI1NiwgMjAwMjUsIDI1NiwgMjM1MjcsIDI1NiwgMjQ1OTQsIDI1NiwgMjk1NzUsIDI1NiwgMzAwNjQsIAotICAgIDI1NiwgMjEyNzEsIDI1NiwgMzA5NzEsIDI1NiwgMjA0MTUsIDI1NiwgMjQ0ODksIDI1NiwgMTk5ODEsIDI1NiwgMjc4NTIsIAotICAgIDI1NiwgMjU5NzYsIDI1NiwgMzIwMzQsIDI1NiwgMjE0NDMsIDI1NiwgMjI2MjIsIDI1NiwgMzA0NjUsIDI1NiwgMzM4NjUsIAotICAgIDI1NiwgMzU0OTgsIDI1NiwgMjc1NzgsIDI1NiwgMzY3ODQsIDI1NiwgMjc3ODQsIDI1NiwgMjUzNDIsIDI1NiwgMzM1MDksIAotICAgIDI1NiwgMjU1MDQsIDI1NiwgMzAwNTMsIDI1NiwgMjAxNDIsIDI1NiwgMjA4NDEsIDI1NiwgMjA5MzcsIDI1NiwgMjY3NTMsIAotICAgIDI1NiwgMzE5NzUsIDI1NiwgMzMzOTEsIDI1NiwgMzU1MzgsIDI1NiwgMzczMjcsIDI1NiwgMjEyMzcsIDI1NiwgMjE1NzAsIAotICAgIDI1NiwgMjI4OTksIDI1NiwgMjQzMDAsIDI1NiwgMjYwNTMsIDI1NiwgMjg2NzAsIDI1NiwgMzEwMTgsIDI1NiwgMzgzMTcsIAotICAgIDI1NiwgMzk1MzAsIDI1NiwgNDA1OTksIDI1NiwgNDA2NTQsIDI1NiwgMjExNDcsIDI1NiwgMjYzMTAsIDI1NiwgMjc1MTEsIAotICAgIDI1NiwgMzY3MDYsIDI1NiwgMjQxODAsIDI1NiwgMjQ5NzYsIDI1NiwgMjUwODgsIDI1NiwgMjU3NTQsIDI1NiwgMjg0NTEsIAotICAgIDI1NiwgMjkwMDEsIDI1NiwgMjk4MzMsIDI1NiwgMzExNzgsIDI1NiwgMzIyNDQsIDI1NiwgMzI4NzksIDI1NiwgMzY2NDYsIAotICAgIDI1NiwgMzQwMzAsIDI1NiwgMzY4OTksIDI1NiwgMzc3MDYsIDI1NiwgMjEwMTUsIDI1NiwgMjExNTUsIDI1NiwgMjE2OTMsIAotICAgIDI1NiwgMjg4NzIsIDI1NiwgMzUwMTAsIDI1NiwgMzU0OTgsIDI1NiwgMjQyNjUsIDI1NiwgMjQ1NjUsIDI1NiwgMjU0NjcsIAotICAgIDI1NiwgMjc1NjYsIDI1NiwgMzE4MDYsIDI1NiwgMjk1NTcsIDI1NiwgMjAxOTYsIDI1NiwgMjIyNjUsIDI1NiwgMjM1MjcsIAotICAgIDI1NiwgMjM5OTQsIDI1NiwgMjQ2MDQsIDI1NiwgMjk2MTgsIDI1NiwgMjk4MDEsIDI1NiwgMzI2NjYsIDI1NiwgMzI4MzgsIAotICAgIDI1NiwgMzc0MjgsIDI1NiwgMzg2NDYsIDI1NiwgMzg3MjgsIDI1NiwgMzg5MzYsIDI1NiwgMjAzNjMsIDI1NiwgMzExNTAsIAotICAgIDI1NiwgMzczMDAsIDI1NiwgMzg1ODQsIDI1NiwgMjQ4MDEsIDI1NiwgMjAxMDIsIDI1NiwgMjA2OTgsIDI1NiwgMjM1MzQsIAotICAgIDI1NiwgMjM2MTUsIDI1NiwgMjYwMDksIDI1NiwgMjcxMzgsIDI1NiwgMjkxMzQsIDI1NiwgMzAyNzQsIDI1NiwgMzQwNDQsIAotICAgIDI1NiwgMzY5ODgsIDI1NiwgNDA4NDUsIDI1NiwgMjYyNDgsIDI1NiwgMzg0NDYsIDI1NiwgMjExMjksIDI1NiwgMjY0OTEsIAotICAgIDI1NiwgMjY2MTEsIDI1NiwgMjc5NjksIDI1NiwgMjgzMTYsIDI1NiwgMjk3MDUsIDI1NiwgMzAwNDEsIDI1NiwgMzA4MjcsIAotICAgIDI1NiwgMzIwMTYsIDI1NiwgMzkwMDYsIDI1NiwgMjA4NDUsIDI1NiwgMjUxMzQsIDI1NiwgMzg1MjAsIDI1NiwgMjA1MjMsIAotICAgIDI1NiwgMjM4MzMsIDI1NiwgMjgxMzgsIDI1NiwgMzY2NTAsIDI1NiwgMjQ0NTksIDI1NiwgMjQ5MDAsIDI1NiwgMjY2NDcsIAotICAgIDI1NiwgMjk1NzUsIDI1NiwgMzg1MzQsIDI1NiwgMjEwMzMsIDI1NiwgMjE1MTksIDI1NiwgMjM2NTMsIDI1NiwgMjYxMzEsIAotICAgIDI1NiwgMjY0NDYsIDI1NiwgMjY3OTIsIDI1NiwgMjc4NzcsIDI1NiwgMjk3MDIsIDI1NiwgMzAxNzgsIDI1NiwgMzI2MzMsIAotICAgIDI1NiwgMzUwMjMsIDI1NiwgMzUwNDEsIDI1NiwgMzczMjQsIDI1NiwgMzg2MjYsIDI1NiwgMjEzMTEsIDI1NiwgMjgzNDYsIAotICAgIDI1NiwgMjE1MzMsIDI1NiwgMjkxMzYsIDI1NiwgMjk4NDgsIDI1NiwgMzQyOTgsIDI1NiwgMzg1NjMsIDI1NiwgNDAwMjMsIAotICAgIDI1NiwgNDA2MDcsIDI1NiwgMjY1MTksIDI1NiwgMjgxMDcsIDI1NiwgMzMyNTYsIDI1NiwgMzE0MzUsIDI1NiwgMzE1MjAsIAotICAgIDI1NiwgMzE4OTAsIDI1NiwgMjkzNzYsIDI1NiwgMjg4MjUsIDI1NiwgMzU2NzIsIDI1NiwgMjAxNjAsIDI1NiwgMzM1OTAsIAotICAgIDI1NiwgMjEwNTAsIDI1NiwgMjA5OTksIDI1NiwgMjQyMzAsIDI1NiwgMjUyOTksIDI1NiwgMzE5NTgsIDI1NiwgMjM0MjksIAotICAgIDI1NiwgMjc5MzQsIDI1NiwgMjYyOTIsIDI1NiwgMzY2NjcsIDI1NiwgMzQ4OTIsIDI1NiwgMzg0NzcsIDI1NiwgMzUyMTEsIAotICAgIDI1NiwgMjQyNzUsIDI1NiwgMjA4MDAsIDI1NiwgMjE5NTIsIDI1NiwgMjI2MTgsIDI1NiwgMjYyMjgsIDI1NiwgMjA5NTgsIAotICAgIDI1NiwgMjk0ODIsIDI1NiwgMzA0MTAsIDI1NiwgMzEwMzYsIDI1NiwgMzEwNzAsIDI1NiwgMzEwNzcsIDI1NiwgMzExMTksIAotICAgIDI1NiwgMzg3NDIsIDI1NiwgMzE5MzQsIDI1NiwgMzI3MDEsIDI1NiwgMzQzMjIsIDI1NiwgMzU1NzYsIDI1NiwgMzY5MjAsIAotICAgIDI1NiwgMzcxMTcsIDI1NiwgMzkxNTEsIDI1NiwgMzkxNjQsIDI1NiwgMzkyMDgsIDI1NiwgNDAzNzIsIDI1NiwgMjAzOTgsIAotICAgIDI1NiwgMjA3MTEsIDI1NiwgMjA4MTMsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEzMjksIDI1NiwgMjE5MTcsIAotICAgIDI1NiwgMjIwMjIsIDI1NiwgMjIxMjAsIDI1NiwgMjI1OTIsIDI1NiwgMjI2OTYsIDI1NiwgMjM2NTIsIDI1NiwgMjM2NjIsIAotICAgIDI1NiwgMjQ3MjQsIDI1NiwgMjQ5MzYsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwNzQsIDI1NiwgMjU5MzUsIDI1NiwgMjYwODIsIAotICAgIDI1NiwgMjYyNTcsIDI1NiwgMjY3NTcsIDI1NiwgMjgwMjMsIDI1NiwgMjgxODYsIDI1NiwgMjg0NTAsIDI1NiwgMjkwMzgsIAotICAgIDI1NiwgMjkyMjcsIDI1NiwgMjk3MzAsIDI1NiwgMzA4NjUsIDI1NiwgMzEwMzgsIDI1NiwgMzEwNDksIDI1NiwgMzEwNDgsIAotICAgIDI1NiwgMzEwNTYsIDI1NiwgMzEwNjIsIDI1NiwgMzEwNjksIDI1NiwgMzExMTcsIDI1NiwgMzExMTgsIDI1NiwgMzEyOTYsIAotICAgIDI1NiwgMzEzNjEsIDI1NiwgMzE2ODAsIDI1NiwgMzIyNDQsIDI1NiwgMzIyNjUsIDI1NiwgMzIzMjEsIDI1NiwgMzI2MjYsIAotICAgIDI1NiwgMzI3NzMsIDI1NiwgMzMyNjEsIDI1NiwgMzM0MDEsIDI1NiwgMzM0MDEsIDI1NiwgMzM4NzksIDI1NiwgMzUwODgsIAotICAgIDI1NiwgMzUyMjIsIDI1NiwgMzU1ODUsIDI1NiwgMzU2NDEsIDI1NiwgMzYwNTEsIDI1NiwgMzYxMDQsIDI1NiwgMzY3OTAsIAotICAgIDI1NiwgMzY5MjAsIDI1NiwgMzg2MjcsIDI1NiwgMzg5MTEsIDI1NiwgMzg5NzEsIDI1NiwgMjQ2OTMsIDI1NiwgMTQ4MjA2LCAKLSAgICAyNTYsIDMzMzA0LCAyNTYsIDIwMDA2LCAyNTYsIDIwOTE3LCAyNTYsIDIwODQwLCAyNTYsIDIwMzUyLCAyNTYsIDIwODA1LCAKLSAgICAyNTYsIDIwODY0LCAyNTYsIDIxMTkxLCAyNTYsIDIxMjQyLCAyNTYsIDIxOTE3LCAyNTYsIDIxODQ1LCAyNTYsIDIxOTEzLCAKLSAgICAyNTYsIDIxOTg2LCAyNTYsIDIyNjE4LCAyNTYsIDIyNzA3LCAyNTYsIDIyODUyLCAyNTYsIDIyODY4LCAyNTYsIDIzMTM4LCAKLSAgICAyNTYsIDIzMzM2LCAyNTYsIDI0Mjc0LCAyNTYsIDI0MjgxLCAyNTYsIDI0NDI1LCAyNTYsIDI0NDkzLCAyNTYsIDI0NzkyLCAKLSAgICAyNTYsIDI0OTEwLCAyNTYsIDI0ODQwLCAyNTYsIDI0OTc0LCAyNTYsIDI0OTI4LCAyNTYsIDI1MDc0LCAyNTYsIDI1MTQwLCAKLSAgICAyNTYsIDI1NTQwLCAyNTYsIDI1NjI4LCAyNTYsIDI1NjgyLCAyNTYsIDI1OTQyLCAyNTYsIDI2MjI4LCAyNTYsIDI2MzkxLCAKLSAgICAyNTYsIDI2Mzk1LCAyNTYsIDI2NDU0LCAyNTYsIDI3NTEzLCAyNTYsIDI3NTc4LCAyNTYsIDI3OTY5LCAyNTYsIDI4Mzc5LCAKLSAgICAyNTYsIDI4MzYzLCAyNTYsIDI4NDUwLCAyNTYsIDI4NzAyLCAyNTYsIDI5MDM4LCAyNTYsIDMwNjMxLCAyNTYsIDI5MjM3LCAKLSAgICAyNTYsIDI5MzU5LCAyNTYsIDI5NDgyLCAyNTYsIDI5ODA5LCAyNTYsIDI5OTU4LCAyNTYsIDMwMDExLCAyNTYsIDMwMjM3LCAKLSAgICAyNTYsIDMwMjM5LCAyNTYsIDMwNDEwLCAyNTYsIDMwNDI3LCAyNTYsIDMwNDUyLCAyNTYsIDMwNTM4LCAyNTYsIDMwNTI4LCAKLSAgICAyNTYsIDMwOTI0LCAyNTYsIDMxNDA5LCAyNTYsIDMxNjgwLCAyNTYsIDMxODY3LCAyNTYsIDMyMDkxLCAyNTYsIDMyMjQ0LCAKLSAgICAyNTYsIDMyNTc0LCAyNTYsIDMyNzczLCAyNTYsIDMzNjE4LCAyNTYsIDMzNzc1LCAyNTYsIDM0NjgxLCAyNTYsIDM1MTM3LCAKLSAgICAyNTYsIDM1MjA2LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTE5LCAyNTYsIDM1NTc2LCAyNTYsIDM1NTMxLCAyNTYsIDM1NTg1LCAKLSAgICAyNTYsIDM1NTgyLCAyNTYsIDM1NTY1LCAyNTYsIDM1NjQxLCAyNTYsIDM1NzIyLCAyNTYsIDM2MTA0LCAyNTYsIDM2NjY0LCAKLSAgICAyNTYsIDM2OTc4LCAyNTYsIDM3MjczLCAyNTYsIDM3NDk0LCAyNTYsIDM4NTI0LCAyNTYsIDM4NjI3LCAyNTYsIDM4NzQyLCAKLSAgICAyNTYsIDM4ODc1LCAyNTYsIDM4OTExLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTcxLCAyNTYsIDM5Njk4LCAyNTYsIDQwODYwLCAKLSAgICAyNTYsIDE0MTM4NiwgMjU2LCAxNDEzODAsIDI1NiwgMTQ0MzQxLCAyNTYsIDE1MjYxLCAyNTYsIDE2NDA4LCAyNTYsIAotICAgIDE2NDQxLCAyNTYsIDE1MjEzNywgMjU2LCAxNTQ4MzIsIDI1NiwgMTYzNTM5LCAyNTYsIDQwNzcxLCAyNTYsIDQwODQ2LCAKLSAgICA1MTQsIDEwMiwgMTAyLCA1MTQsIDEwMiwgMTA1LCA1MTQsIDEwMiwgMTA4LCA3NzAsIDEwMiwgMTAyLCAxMDUsIDc3MCwgCi0gICAgMTAyLCAxMDIsIDEwOCwgNTE0LCAzODMsIDExNiwgNTE0LCAxMTUsIDExNiwgNTE0LCAxMzk2LCAxMzk4LCA1MTQsIDEzOTYsIAotICAgIDEzODEsIDUxNCwgMTM5NiwgMTM4NywgNTE0LCAxNDA2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODksIDUxMiwgMTQ5NywgMTQ2MCwgCi0gICAgNTEyLCAxNTIyLCAxNDYzLCAyNjIsIDE1MDYsIDI2MiwgMTQ4OCwgMjYyLCAxNDkxLCAyNjIsIDE0OTIsIDI2MiwgMTQ5OSwgCi0gICAgMjYyLCAxNTAwLCAyNjIsIDE1MDEsIDI2MiwgMTUxMiwgMjYyLCAxNTE0LCAyNjIsIDQzLCA1MTIsIDE1MTMsIDE0NzMsIAotICAgIDUxMiwgMTUxMywgMTQ3NCwgNTEyLCA2NDMyOSwgMTQ3MywgNTEyLCA2NDMyOSwgMTQ3NCwgNTEyLCAxNDg4LCAxNDYzLCAKLSAgICA1MTIsIDE0ODgsIDE0NjQsIDUxMiwgMTQ4OCwgMTQ2OCwgNTEyLCAxNDg5LCAxNDY4LCA1MTIsIDE0OTAsIDE0NjgsIDUxMiwgCi0gICAgMTQ5MSwgMTQ2OCwgNTEyLCAxNDkyLCAxNDY4LCA1MTIsIDE0OTMsIDE0NjgsIDUxMiwgMTQ5NCwgMTQ2OCwgNTEyLCAxNDk2LCAKLSAgICAxNDY4LCA1MTIsIDE0OTcsIDE0NjgsIDUxMiwgMTQ5OCwgMTQ2OCwgNTEyLCAxNDk5LCAxNDY4LCA1MTIsIDE1MDAsIDE0NjgsIAotICAgIDUxMiwgMTUwMiwgMTQ2OCwgNTEyLCAxNTA0LCAxNDY4LCA1MTIsIDE1MDUsIDE0NjgsIDUxMiwgMTUwNywgMTQ2OCwgNTEyLCAKLSAgICAxNTA4LCAxNDY4LCA1MTIsIDE1MTAsIDE0NjgsIDUxMiwgMTUxMSwgMTQ2OCwgNTEyLCAxNTEyLCAxNDY4LCA1MTIsIDE1MTMsIAotICAgIDE0NjgsIDUxMiwgMTUxNCwgMTQ2OCwgNTEyLCAxNDkzLCAxNDY1LCA1MTIsIDE0ODksIDE0NzEsIDUxMiwgMTQ5OSwgMTQ3MSwgCi0gICAgNTEyLCAxNTA4LCAxNDcxLCA1MTQsIDE0ODgsIDE1MDAsIDI2NywgMTY0OSwgMjY4LCAxNjQ5LCAyNjcsIDE2NTksIDI2OCwgCi0gICAgMTY1OSwgMjY5LCAxNjU5LCAyNzAsIDE2NTksIDI2NywgMTY2MiwgMjY4LCAxNjYyLCAyNjksIDE2NjIsIDI3MCwgMTY2MiwgCi0gICAgMjY3LCAxNjY0LCAyNjgsIDE2NjQsIDI2OSwgMTY2NCwgMjcwLCAxNjY0LCAyNjcsIDE2NTgsIDI2OCwgMTY1OCwgMjY5LCAKLSAgICAxNjU4LCAyNzAsIDE2NTgsIDI2NywgMTY2MywgMjY4LCAxNjYzLCAyNjksIDE2NjMsIDI3MCwgMTY2MywgMjY3LCAxNjU3LCAKLSAgICAyNjgsIDE2NTcsIDI2OSwgMTY1NywgMjcwLCAxNjU3LCAyNjcsIDE3MDAsIDI2OCwgMTcwMCwgMjY5LCAxNzAwLCAyNzAsIAotICAgIDE3MDAsIDI2NywgMTcwMiwgMjY4LCAxNzAyLCAyNjksIDE3MDIsIDI3MCwgMTcwMiwgMjY3LCAxNjY4LCAyNjgsIDE2NjgsIAotICAgIDI2OSwgMTY2OCwgMjcwLCAxNjY4LCAyNjcsIDE2NjcsIDI2OCwgMTY2NywgMjY5LCAxNjY3LCAyNzAsIDE2NjcsIDI2NywgCi0gICAgMTY3MCwgMjY4LCAxNjcwLCAyNjksIDE2NzAsIDI3MCwgMTY3MCwgMjY3LCAxNjcxLCAyNjgsIDE2NzEsIDI2OSwgMTY3MSwgCi0gICAgMjcwLCAxNjcxLCAyNjcsIDE2NzcsIDI2OCwgMTY3NywgMjY3LCAxNjc2LCAyNjgsIDE2NzYsIDI2NywgMTY3OCwgMjY4LCAKLSAgICAxNjc4LCAyNjcsIDE2NzIsIDI2OCwgMTY3MiwgMjY3LCAxNjg4LCAyNjgsIDE2ODgsIDI2NywgMTY4MSwgMjY4LCAxNjgxLCAKLSAgICAyNjcsIDE3MDUsIDI2OCwgMTcwNSwgMjY5LCAxNzA1LCAyNzAsIDE3MDUsIDI2NywgMTcxMSwgMjY4LCAxNzExLCAyNjksIAotICAgIDE3MTEsIDI3MCwgMTcxMSwgMjY3LCAxNzE1LCAyNjgsIDE3MTUsIDI2OSwgMTcxNSwgMjcwLCAxNzE1LCAyNjcsIDE3MTMsIAotICAgIDI2OCwgMTcxMywgMjY5LCAxNzEzLCAyNzAsIDE3MTMsIDI2NywgMTcyMiwgMjY4LCAxNzIyLCAyNjcsIDE3MjMsIDI2OCwgCi0gICAgMTcyMywgMjY5LCAxNzIzLCAyNzAsIDE3MjMsIDI2NywgMTcyOCwgMjY4LCAxNzI4LCAyNjcsIDE3MjksIDI2OCwgMTcyOSwgCi0gICAgMjY5LCAxNzI5LCAyNzAsIDE3MjksIDI2NywgMTcyNiwgMjY4LCAxNzI2LCAyNjksIDE3MjYsIDI3MCwgMTcyNiwgMjY3LCAKLSAgICAxNzQ2LCAyNjgsIDE3NDYsIDI2NywgMTc0NywgMjY4LCAxNzQ3LCAyNjcsIDE3MDksIDI2OCwgMTcwOSwgMjY5LCAxNzA5LCAKLSAgICAyNzAsIDE3MDksIDI2NywgMTczNSwgMjY4LCAxNzM1LCAyNjcsIDE3MzQsIDI2OCwgMTczNCwgMjY3LCAxNzM2LCAyNjgsIAotICAgIDE3MzYsIDI2NywgMTY1NSwgMjY3LCAxNzM5LCAyNjgsIDE3MzksIDI2NywgMTczMywgMjY4LCAxNzMzLCAyNjcsIDE3MzcsIAotICAgIDI2OCwgMTczNywgMjY3LCAxNzQ0LCAyNjgsIDE3NDQsIDI2OSwgMTc0NCwgMjcwLCAxNzQ0LCAyNjksIDE2MDksIDI3MCwgCi0gICAgMTYwOSwgNTIzLCAxNTc0LCAxNTc1LCA1MjQsIDE1NzQsIDE1NzUsIDUyMywgMTU3NCwgMTc0OSwgNTI0LCAxNTc0LCAxNzQ5LCAKLSAgICA1MjMsIDE1NzQsIDE2MDgsIDUyNCwgMTU3NCwgMTYwOCwgNTIzLCAxNTc0LCAxNzM1LCA1MjQsIDE1NzQsIDE3MzUsIDUyMywgCi0gICAgMTU3NCwgMTczNCwgNTI0LCAxNTc0LCAxNzM0LCA1MjMsIDE1NzQsIDE3MzYsIDUyNCwgMTU3NCwgMTczNiwgNTIzLCAxNTc0LCAKLSAgICAxNzQ0LCA1MjQsIDE1NzQsIDE3NDQsIDUyNSwgMTU3NCwgMTc0NCwgNTIzLCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MDksIAotICAgIDUyNSwgMTU3NCwgMTYwOSwgMjY3LCAxNzQwLCAyNjgsIDE3NDAsIDI2OSwgMTc0MCwgMjcwLCAxNzQwLCA1MjMsIDE1NzQsIAotICAgIDE1ODAsIDUyMywgMTU3NCwgMTU4MSwgNTIzLCAxNTc0LCAxNjA1LCA1MjMsIDE1NzQsIDE2MDksIDUyMywgMTU3NCwgMTYxMCwgCi0gICAgNTIzLCAxNTc2LCAxNTgwLCA1MjMsIDE1NzYsIDE1ODEsIDUyMywgMTU3NiwgMTU4MiwgNTIzLCAxNTc2LCAxNjA1LCA1MjMsIAotICAgIDE1NzYsIDE2MDksIDUyMywgMTU3NiwgMTYxMCwgNTIzLCAxNTc4LCAxNTgwLCA1MjMsIDE1NzgsIDE1ODEsIDUyMywgMTU3OCwgCi0gICAgMTU4MiwgNTIzLCAxNTc4LCAxNjA1LCA1MjMsIDE1NzgsIDE2MDksIDUyMywgMTU3OCwgMTYxMCwgNTIzLCAxNTc5LCAxNTgwLCAKLSAgICA1MjMsIDE1NzksIDE2MDUsIDUyMywgMTU3OSwgMTYwOSwgNTIzLCAxNTc5LCAxNjEwLCA1MjMsIDE1ODAsIDE1ODEsIDUyMywgCi0gICAgMTU4MCwgMTYwNSwgNTIzLCAxNTgxLCAxNTgwLCA1MjMsIDE1ODEsIDE2MDUsIDUyMywgMTU4MiwgMTU4MCwgNTIzLCAxNTgyLCAKLSAgICAxNTgxLCA1MjMsIDE1ODIsIDE2MDUsIDUyMywgMTU4NywgMTU4MCwgNTIzLCAxNTg3LCAxNTgxLCA1MjMsIDE1ODcsIDE1ODIsIAotICAgIDUyMywgMTU4NywgMTYwNSwgNTIzLCAxNTg5LCAxNTgxLCA1MjMsIDE1ODksIDE2MDUsIDUyMywgMTU5MCwgMTU4MCwgNTIzLCAKLSAgICAxNTkwLCAxNTgxLCA1MjMsIDE1OTAsIDE1ODIsIDUyMywgMTU5MCwgMTYwNSwgNTIzLCAxNTkxLCAxNTgxLCA1MjMsIDE1OTEsIAotICAgIDE2MDUsIDUyMywgMTU5MiwgMTYwNSwgNTIzLCAxNTkzLCAxNTgwLCA1MjMsIDE1OTMsIDE2MDUsIDUyMywgMTU5NCwgMTU4MCwgCi0gICAgNTIzLCAxNTk0LCAxNjA1LCA1MjMsIDE2MDEsIDE1ODAsIDUyMywgMTYwMSwgMTU4MSwgNTIzLCAxNjAxLCAxNTgyLCA1MjMsIAotICAgIDE2MDEsIDE2MDUsIDUyMywgMTYwMSwgMTYwOSwgNTIzLCAxNjAxLCAxNjEwLCA1MjMsIDE2MDIsIDE1ODEsIDUyMywgMTYwMiwgCi0gICAgMTYwNSwgNTIzLCAxNjAyLCAxNjA5LCA1MjMsIDE2MDIsIDE2MTAsIDUyMywgMTYwMywgMTU3NSwgNTIzLCAxNjAzLCAxNTgwLCAKLSAgICA1MjMsIDE2MDMsIDE1ODEsIDUyMywgMTYwMywgMTU4MiwgNTIzLCAxNjAzLCAxNjA0LCA1MjMsIDE2MDMsIDE2MDUsIDUyMywgCi0gICAgMTYwMywgMTYwOSwgNTIzLCAxNjAzLCAxNjEwLCA1MjMsIDE2MDQsIDE1ODAsIDUyMywgMTYwNCwgMTU4MSwgNTIzLCAxNjA0LCAKLSAgICAxNTgyLCA1MjMsIDE2MDQsIDE2MDUsIDUyMywgMTYwNCwgMTYwOSwgNTIzLCAxNjA0LCAxNjEwLCA1MjMsIDE2MDUsIDE1ODAsIAotICAgIDUyMywgMTYwNSwgMTU4MSwgNTIzLCAxNjA1LCAxNTgyLCA1MjMsIDE2MDUsIDE2MDUsIDUyMywgMTYwNSwgMTYwOSwgNTIzLCAKLSAgICAxNjA1LCAxNjEwLCA1MjMsIDE2MDYsIDE1ODAsIDUyMywgMTYwNiwgMTU4MSwgNTIzLCAxNjA2LCAxNTgyLCA1MjMsIDE2MDYsIAotICAgIDE2MDUsIDUyMywgMTYwNiwgMTYwOSwgNTIzLCAxNjA2LCAxNjEwLCA1MjMsIDE2MDcsIDE1ODAsIDUyMywgMTYwNywgMTYwNSwgCi0gICAgNTIzLCAxNjA3LCAxNjA5LCA1MjMsIDE2MDcsIDE2MTAsIDUyMywgMTYxMCwgMTU4MCwgNTIzLCAxNjEwLCAxNTgxLCA1MjMsIAotICAgIDE2MTAsIDE1ODIsIDUyMywgMTYxMCwgMTYwNSwgNTIzLCAxNjEwLCAxNjA5LCA1MjMsIDE2MTAsIDE2MTAsIDUyMywgMTU4NCwgCi0gICAgMTY0OCwgNTIzLCAxNTg1LCAxNjQ4LCA1MjMsIDE2MDksIDE2NDgsIDc3OSwgMzIsIDE2MTIsIDE2MTcsIDc3OSwgMzIsIAotICAgIDE2MTMsIDE2MTcsIDc3OSwgMzIsIDE2MTQsIDE2MTcsIDc3OSwgMzIsIDE2MTUsIDE2MTcsIDc3OSwgMzIsIDE2MTYsIAotICAgIDE2MTcsIDc3OSwgMzIsIDE2MTcsIDE2NDgsIDUyNCwgMTU3NCwgMTU4NSwgNTI0LCAxNTc0LCAxNTg2LCA1MjQsIDE1NzQsIAotICAgIDE2MDUsIDUyNCwgMTU3NCwgMTYwNiwgNTI0LCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MTAsIDUyNCwgMTU3NiwgMTU4NSwgCi0gICAgNTI0LCAxNTc2LCAxNTg2LCA1MjQsIDE1NzYsIDE2MDUsIDUyNCwgMTU3NiwgMTYwNiwgNTI0LCAxNTc2LCAxNjA5LCA1MjQsIAotICAgIDE1NzYsIDE2MTAsIDUyNCwgMTU3OCwgMTU4NSwgNTI0LCAxNTc4LCAxNTg2LCA1MjQsIDE1NzgsIDE2MDUsIDUyNCwgMTU3OCwgCi0gICAgMTYwNiwgNTI0LCAxNTc4LCAxNjA5LCA1MjQsIDE1NzgsIDE2MTAsIDUyNCwgMTU3OSwgMTU4NSwgNTI0LCAxNTc5LCAxNTg2LCAKLSAgICA1MjQsIDE1NzksIDE2MDUsIDUyNCwgMTU3OSwgMTYwNiwgNTI0LCAxNTc5LCAxNjA5LCA1MjQsIDE1NzksIDE2MTAsIDUyNCwgCi0gICAgMTYwMSwgMTYwOSwgNTI0LCAxNjAxLCAxNjEwLCA1MjQsIDE2MDIsIDE2MDksIDUyNCwgMTYwMiwgMTYxMCwgNTI0LCAxNjAzLCAKLSAgICAxNTc1LCA1MjQsIDE2MDMsIDE2MDQsIDUyNCwgMTYwMywgMTYwNSwgNTI0LCAxNjAzLCAxNjA5LCA1MjQsIDE2MDMsIDE2MTAsIAotICAgIDUyNCwgMTYwNCwgMTYwNSwgNTI0LCAxNjA0LCAxNjA5LCA1MjQsIDE2MDQsIDE2MTAsIDUyNCwgMTYwNSwgMTU3NSwgNTI0LCAKLSAgICAxNjA1LCAxNjA1LCA1MjQsIDE2MDYsIDE1ODUsIDUyNCwgMTYwNiwgMTU4NiwgNTI0LCAxNjA2LCAxNjA1LCA1MjQsIDE2MDYsIAotICAgIDE2MDYsIDUyNCwgMTYwNiwgMTYwOSwgNTI0LCAxNjA2LCAxNjEwLCA1MjQsIDE2MDksIDE2NDgsIDUyNCwgMTYxMCwgMTU4NSwgCi0gICAgNTI0LCAxNjEwLCAxNTg2LCA1MjQsIDE2MTAsIDE2MDUsIDUyNCwgMTYxMCwgMTYwNiwgNTI0LCAxNjEwLCAxNjA5LCA1MjQsIAotICAgIDE2MTAsIDE2MTAsIDUyNSwgMTU3NCwgMTU4MCwgNTI1LCAxNTc0LCAxNTgxLCA1MjUsIDE1NzQsIDE1ODIsIDUyNSwgMTU3NCwgCi0gICAgMTYwNSwgNTI1LCAxNTc0LCAxNjA3LCA1MjUsIDE1NzYsIDE1ODAsIDUyNSwgMTU3NiwgMTU4MSwgNTI1LCAxNTc2LCAxNTgyLCAKLSAgICA1MjUsIDE1NzYsIDE2MDUsIDUyNSwgMTU3NiwgMTYwNywgNTI1LCAxNTc4LCAxNTgwLCA1MjUsIDE1NzgsIDE1ODEsIDUyNSwgCi0gICAgMTU3OCwgMTU4MiwgNTI1LCAxNTc4LCAxNjA1LCA1MjUsIDE1NzgsIDE2MDcsIDUyNSwgMTU3OSwgMTYwNSwgNTI1LCAxNTgwLCAKLSAgICAxNTgxLCA1MjUsIDE1ODAsIDE2MDUsIDUyNSwgMTU4MSwgMTU4MCwgNTI1LCAxNTgxLCAxNjA1LCA1MjUsIDE1ODIsIDE1ODAsIAotICAgIDUyNSwgMTU4MiwgMTYwNSwgNTI1LCAxNTg3LCAxNTgwLCA1MjUsIDE1ODcsIDE1ODEsIDUyNSwgMTU4NywgMTU4MiwgNTI1LCAKLSAgICAxNTg3LCAxNjA1LCA1MjUsIDE1ODksIDE1ODEsIDUyNSwgMTU4OSwgMTU4MiwgNTI1LCAxNTg5LCAxNjA1LCA1MjUsIDE1OTAsIAotICAgIDE1ODAsIDUyNSwgMTU5MCwgMTU4MSwgNTI1LCAxNTkwLCAxNTgyLCA1MjUsIDE1OTAsIDE2MDUsIDUyNSwgMTU5MSwgMTU4MSwgCi0gICAgNTI1LCAxNTkyLCAxNjA1LCA1MjUsIDE1OTMsIDE1ODAsIDUyNSwgMTU5MywgMTYwNSwgNTI1LCAxNTk0LCAxNTgwLCA1MjUsIAotICAgIDE1OTQsIDE2MDUsIDUyNSwgMTYwMSwgMTU4MCwgNTI1LCAxNjAxLCAxNTgxLCA1MjUsIDE2MDEsIDE1ODIsIDUyNSwgMTYwMSwgCi0gICAgMTYwNSwgNTI1LCAxNjAyLCAxNTgxLCA1MjUsIDE2MDIsIDE2MDUsIDUyNSwgMTYwMywgMTU4MCwgNTI1LCAxNjAzLCAxNTgxLCAKLSAgICA1MjUsIDE2MDMsIDE1ODIsIDUyNSwgMTYwMywgMTYwNCwgNTI1LCAxNjAzLCAxNjA1LCA1MjUsIDE2MDQsIDE1ODAsIDUyNSwgCi0gICAgMTYwNCwgMTU4MSwgNTI1LCAxNjA0LCAxNTgyLCA1MjUsIDE2MDQsIDE2MDUsIDUyNSwgMTYwNCwgMTYwNywgNTI1LCAxNjA1LCAKLSAgICAxNTgwLCA1MjUsIDE2MDUsIDE1ODEsIDUyNSwgMTYwNSwgMTU4MiwgNTI1LCAxNjA1LCAxNjA1LCA1MjUsIDE2MDYsIDE1ODAsIAotICAgIDUyNSwgMTYwNiwgMTU4MSwgNTI1LCAxNjA2LCAxNTgyLCA1MjUsIDE2MDYsIDE2MDUsIDUyNSwgMTYwNiwgMTYwNywgNTI1LCAKLSAgICAxNjA3LCAxNTgwLCA1MjUsIDE2MDcsIDE2MDUsIDUyNSwgMTYwNywgMTY0OCwgNTI1LCAxNjEwLCAxNTgwLCA1MjUsIDE2MTAsIAotICAgIDE1ODEsIDUyNSwgMTYxMCwgMTU4MiwgNTI1LCAxNjEwLCAxNjA1LCA1MjUsIDE2MTAsIDE2MDcsIDUyNiwgMTU3NCwgMTYwNSwgCi0gICAgNTI2LCAxNTc0LCAxNjA3LCA1MjYsIDE1NzYsIDE2MDUsIDUyNiwgMTU3NiwgMTYwNywgNTI2LCAxNTc4LCAxNjA1LCA1MjYsIAotICAgIDE1NzgsIDE2MDcsIDUyNiwgMTU3OSwgMTYwNSwgNTI2LCAxNTc5LCAxNjA3LCA1MjYsIDE1ODcsIDE2MDUsIDUyNiwgMTU4NywgCi0gICAgMTYwNywgNTI2LCAxNTg4LCAxNjA1LCA1MjYsIDE1ODgsIDE2MDcsIDUyNiwgMTYwMywgMTYwNCwgNTI2LCAxNjAzLCAxNjA1LCAKLSAgICA1MjYsIDE2MDQsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNSwgNTI2LCAxNjA2LCAxNjA3LCA1MjYsIDE2MTAsIDE2MDUsIDUyNiwgCi0gICAgMTYxMCwgMTYwNywgNzgyLCAxNjAwLCAxNjE0LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTUsIDE2MTcsIDc4MiwgMTYwMCwgCi0gICAgMTYxNiwgMTYxNywgNTIzLCAxNTkxLCAxNjA5LCA1MjMsIDE1OTEsIDE2MTAsIDUyMywgMTU5MywgMTYwOSwgNTIzLCAxNTkzLCAKLSAgICAxNjEwLCA1MjMsIDE1OTQsIDE2MDksIDUyMywgMTU5NCwgMTYxMCwgNTIzLCAxNTg3LCAxNjA5LCA1MjMsIDE1ODcsIDE2MTAsIAotICAgIDUyMywgMTU4OCwgMTYwOSwgNTIzLCAxNTg4LCAxNjEwLCA1MjMsIDE1ODEsIDE2MDksIDUyMywgMTU4MSwgMTYxMCwgNTIzLCAKLSAgICAxNTgwLCAxNjA5LCA1MjMsIDE1ODAsIDE2MTAsIDUyMywgMTU4MiwgMTYwOSwgNTIzLCAxNTgyLCAxNjEwLCA1MjMsIDE1ODksIAotICAgIDE2MDksIDUyMywgMTU4OSwgMTYxMCwgNTIzLCAxNTkwLCAxNjA5LCA1MjMsIDE1OTAsIDE2MTAsIDUyMywgMTU4OCwgMTU4MCwgCi0gICAgNTIzLCAxNTg4LCAxNTgxLCA1MjMsIDE1ODgsIDE1ODIsIDUyMywgMTU4OCwgMTYwNSwgNTIzLCAxNTg4LCAxNTg1LCA1MjMsIAotICAgIDE1ODcsIDE1ODUsIDUyMywgMTU4OSwgMTU4NSwgNTIzLCAxNTkwLCAxNTg1LCA1MjQsIDE1OTEsIDE2MDksIDUyNCwgMTU5MSwgCi0gICAgMTYxMCwgNTI0LCAxNTkzLCAxNjA5LCA1MjQsIDE1OTMsIDE2MTAsIDUyNCwgMTU5NCwgMTYwOSwgNTI0LCAxNTk0LCAxNjEwLCAKLSAgICA1MjQsIDE1ODcsIDE2MDksIDUyNCwgMTU4NywgMTYxMCwgNTI0LCAxNTg4LCAxNjA5LCA1MjQsIDE1ODgsIDE2MTAsIDUyNCwgCi0gICAgMTU4MSwgMTYwOSwgNTI0LCAxNTgxLCAxNjEwLCA1MjQsIDE1ODAsIDE2MDksIDUyNCwgMTU4MCwgMTYxMCwgNTI0LCAxNTgyLCAKLSAgICAxNjA5LCA1MjQsIDE1ODIsIDE2MTAsIDUyNCwgMTU4OSwgMTYwOSwgNTI0LCAxNTg5LCAxNjEwLCA1MjQsIDE1OTAsIDE2MDksIAotICAgIDUyNCwgMTU5MCwgMTYxMCwgNTI0LCAxNTg4LCAxNTgwLCA1MjQsIDE1ODgsIDE1ODEsIDUyNCwgMTU4OCwgMTU4MiwgNTI0LCAKLSAgICAxNTg4LCAxNjA1LCA1MjQsIDE1ODgsIDE1ODUsIDUyNCwgMTU4NywgMTU4NSwgNTI0LCAxNTg5LCAxNTg1LCA1MjQsIDE1OTAsIAotICAgIDE1ODUsIDUyNSwgMTU4OCwgMTU4MCwgNTI1LCAxNTg4LCAxNTgxLCA1MjUsIDE1ODgsIDE1ODIsIDUyNSwgMTU4OCwgMTYwNSwgCi0gICAgNTI1LCAxNTg3LCAxNjA3LCA1MjUsIDE1ODgsIDE2MDcsIDUyNSwgMTU5MSwgMTYwNSwgNTI2LCAxNTg3LCAxNTgwLCA1MjYsIAotICAgIDE1ODcsIDE1ODEsIDUyNiwgMTU4NywgMTU4MiwgNTI2LCAxNTg4LCAxNTgwLCA1MjYsIDE1ODgsIDE1ODEsIDUyNiwgMTU4OCwgCi0gICAgMTU4MiwgNTI2LCAxNTkxLCAxNjA1LCA1MjYsIDE1OTIsIDE2MDUsIDUyNCwgMTU3NSwgMTYxMSwgNTIzLCAxNTc1LCAxNjExLCAKLSAgICA3ODEsIDE1NzgsIDE1ODAsIDE2MDUsIDc4MCwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIAotICAgIDE1NzgsIDE1ODEsIDE2MDUsIDc4MSwgMTU3OCwgMTU4MiwgMTYwNSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgwLCA3ODEsIAotICAgIDE1NzgsIDE2MDUsIDE1ODEsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE1ODAsIDE2MDUsIDE1ODEsIDc4MCwgMTU4MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTgxLCAxNjA1LCAxNjA5LCA3ODEsIAotICAgIDE1ODcsIDE1ODEsIDE1ODAsIDc4MSwgMTU4NywgMTU4MCwgMTU4MSwgNzgwLCAxNTg3LCAxNTgwLCAxNjA5LCA3ODAsIAotICAgIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgwLCA3ODAsIAotICAgIDE1ODcsIDE2MDUsIDE2MDUsIDc4MSwgMTU4NywgMTYwNSwgMTYwNSwgNzgwLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODEsIAotICAgIDE1ODksIDE1ODEsIDE1ODEsIDc4MCwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODEsIAotICAgIDE1ODgsIDE1ODEsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODEsIAotICAgIDE1ODgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4OCwgMTYwNSwgMTYwNSwgNzgxLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTAsIDE1ODEsIDE2MDksIDc4MCwgMTU5MCwgMTU4MiwgMTYwNSwgNzgxLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODAsIAotICAgIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTEsIDE2MDUsIDE2MTAsIDc4MCwgMTU5MywgMTU4MCwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE1OTMsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwOSwgNzgwLCAxNTk0LCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTQsIDE2MDUsIDE2MTAsIDc4MCwgMTU5NCwgMTYwNSwgMTYwOSwgNzgwLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODEsIAotICAgIDE2MDEsIDE1ODIsIDE2MDUsIDc4MCwgMTYwMiwgMTYwNSwgMTU4MSwgNzgwLCAxNjAyLCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgxLCAxNjA5LCA3ODEsIAotICAgIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODEsIAotICAgIDE2MDQsIDE1ODIsIDE2MDUsIDc4MCwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE2MDUsIDE1ODEsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MSwgMTYwNSwgNzgwLCAxNjA1LCAxNTgxLCAxNjEwLCA3ODEsIAotICAgIDE2MDUsIDE1ODAsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MCwgMTYwNSwgNzgxLCAxNjA1LCAxNTgyLCAxNTgwLCA3ODEsIAotICAgIDE2MDUsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MiwgNzgxLCAxNjA3LCAxNjA1LCAxNTgwLCA3ODEsIAotICAgIDE2MDcsIDE2MDUsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MSwgMTYwNSwgNzgwLCAxNjA2LCAxNTgxLCAxNjA5LCA3ODAsIAotICAgIDE2MDYsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MCwgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA5LCA3ODAsIAotICAgIDE2MDYsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTYwNSwgMTYwOSwgNzgwLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE2MTAsIDE2MDUsIDE2MDUsIDc4MCwgMTU3NiwgMTU4MiwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjEwLCA3ODAsIAotICAgIDE1NzgsIDE1ODAsIDE2MDksIDc4MCwgMTU3OCwgMTU4MiwgMTYxMCwgNzgwLCAxNTc4LCAxNTgyLCAxNjA5LCA3ODAsIAotICAgIDE1NzgsIDE2MDUsIDE2MTAsIDc4MCwgMTU3OCwgMTYwNSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjEwLCA3ODAsIAotICAgIDE1ODAsIDE1ODEsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYwOSwgNzgwLCAxNTg3LCAxNTgyLCAxNjA5LCA3ODAsIAotICAgIDE1ODksIDE1ODEsIDE2MTAsIDc4MCwgMTU4OCwgMTU4MSwgMTYxMCwgNzgwLCAxNTkwLCAxNTgxLCAxNjEwLCA3ODAsIAotICAgIDE2MDQsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNCwgMTYwNSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgxLCAxNjEwLCA3ODAsIAotICAgIDE2MTAsIDE1ODAsIDE2MTAsIDc4MCwgMTYxMCwgMTYwNSwgMTYxMCwgNzgwLCAxNjA1LCAxNjA1LCAxNjEwLCA3ODAsIAotICAgIDE2MDIsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MSwgMTYxMCwgNzgxLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYxMCwgNzgwLCAxNjAzLCAxNjA1LCAxNjEwLCA3ODEsIAotICAgIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTYwNSwgMTU4MiwgMTYxMCwgNzgxLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIAotICAgIDE2MDMsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIAotICAgIDE1ODAsIDE1ODEsIDE2MTAsIDc4MCwgMTU4MSwgMTU4MCwgMTYxMCwgNzgwLCAxNjA1LCAxNTgwLCAxNjEwLCA3ODAsIAotICAgIDE2MDEsIDE2MDUsIDE2MTAsIDc4MCwgMTU3NiwgMTU4MSwgMTYxMCwgNzgxLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE1OTMsIDE1ODAsIDE2MDUsIDc4MSwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAxNTg3LCAxNTgyLCAxNjEwLCA3ODAsIAotICAgIDE2MDYsIDE1ODAsIDE2MTAsIDc3OSwgMTU4OSwgMTYwNCwgMTc0NiwgNzc5LCAxNjAyLCAxNjA0LCAxNzQ2LCAxMDM1LCAKLSAgICAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTc1LCAxNjAzLCAxNTc2LCAxNTg1LCAxMDM1LCAxNjA1LCAxNTgxLCAKLSAgICAxNjA1LCAxNTgzLCAxMDM1LCAxNTg5LCAxNjA0LCAxNTkzLCAxNjA1LCAxMDM1LCAxNTg1LCAxNTg3LCAxNjA4LCAxNjA0LCAKLSAgICAxMDM1LCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAxMDM1LCAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCA3NzksIDE1ODksIAotICAgIDE2MDQsIDE2MDksIDQ2MTksIDE1ODksIDE2MDQsIDE2MDksIDMyLCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAzMiwgMTU5MywgCi0gICAgMTYwNCwgMTYxMCwgMTYwNywgMzIsIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDIwNTksIDE1ODAsIDE2MDQsIDMyLCAxNTgwLCAKLSAgICAxNjA0LCAxNTc1LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTg1LCAxNzQwLCAxNTc1LCAxNjA0LCAyNjUsIDQ0LCAyNjUsIAotICAgIDEyMjg5LCAyNjUsIDEyMjkwLCAyNjUsIDU4LCAyNjUsIDU5LCAyNjUsIDMzLCAyNjUsIDYzLCAyNjUsIDEyMzEwLCAyNjUsIAotICAgIDEyMzExLCAyNjUsIDgyMzAsIDI2NSwgODIyOSwgMjY1LCA4MjEyLCAyNjUsIDgyMTEsIDI2NSwgOTUsIDI2NSwgOTUsIDI2NSwgCi0gICAgNDAsIDI2NSwgNDEsIDI2NSwgMTIzLCAyNjUsIDEyNSwgMjY1LCAxMjMwOCwgMjY1LCAxMjMwOSwgMjY1LCAxMjMwNCwgMjY1LCAKLSAgICAxMjMwNSwgMjY1LCAxMjI5OCwgMjY1LCAxMjI5OSwgMjY1LCAxMjI5NiwgMjY1LCAxMjI5NywgMjY1LCAxMjMwMCwgMjY1LCAKLSAgICAxMjMwMSwgMjY1LCAxMjMwMiwgMjY1LCAxMjMwMywgMjY1LCA5MSwgMjY1LCA5MywgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIAotICAgIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDk1LCAyNTgsIDk1LCAyNTgsIDk1LCAyNzEsIDQ0LCAyNzEsIDEyMjg5LCAKLSAgICAyNzEsIDQ2LCAyNzEsIDU5LCAyNzEsIDU4LCAyNzEsIDYzLCAyNzEsIDMzLCAyNzEsIDgyMTIsIDI3MSwgNDAsIDI3MSwgNDEsIAotICAgIDI3MSwgMTIzLCAyNzEsIDEyNSwgMjcxLCAxMjMwOCwgMjcxLCAxMjMwOSwgMjcxLCAzNSwgMjcxLCAzOCwgMjcxLCA0MiwgCi0gICAgMjcxLCA0MywgMjcxLCA0NSwgMjcxLCA2MCwgMjcxLCA2MiwgMjcxLCA2MSwgMjcxLCA5MiwgMjcxLCAzNiwgMjcxLCAzNywgCi0gICAgMjcxLCA2NCwgNTIzLCAzMiwgMTYxMSwgNTI2LCAxNjAwLCAxNjExLCA1MjMsIDMyLCAxNjEyLCA1MjMsIDMyLCAxNjEzLCAKLSAgICA1MjMsIDMyLCAxNjE0LCA1MjYsIDE2MDAsIDE2MTQsIDUyMywgMzIsIDE2MTUsIDUyNiwgMTYwMCwgMTYxNSwgNTIzLCAzMiwgCi0gICAgMTYxNiwgNTI2LCAxNjAwLCAxNjE2LCA1MjMsIDMyLCAxNjE3LCA1MjYsIDE2MDAsIDE2MTcsIDUyMywgMzIsIDE2MTgsIAotICAgIDUyNiwgMTYwMCwgMTYxOCwgMjY3LCAxNTY5LCAyNjcsIDE1NzAsIDI2OCwgMTU3MCwgMjY3LCAxNTcxLCAyNjgsIDE1NzEsIAotICAgIDI2NywgMTU3MiwgMjY4LCAxNTcyLCAyNjcsIDE1NzMsIDI2OCwgMTU3MywgMjY3LCAxNTc0LCAyNjgsIDE1NzQsIDI2OSwgCi0gICAgMTU3NCwgMjcwLCAxNTc0LCAyNjcsIDE1NzUsIDI2OCwgMTU3NSwgMjY3LCAxNTc2LCAyNjgsIDE1NzYsIDI2OSwgMTU3NiwgCi0gICAgMjcwLCAxNTc2LCAyNjcsIDE1NzcsIDI2OCwgMTU3NywgMjY3LCAxNTc4LCAyNjgsIDE1NzgsIDI2OSwgMTU3OCwgMjcwLCAKLSAgICAxNTc4LCAyNjcsIDE1NzksIDI2OCwgMTU3OSwgMjY5LCAxNTc5LCAyNzAsIDE1NzksIDI2NywgMTU4MCwgMjY4LCAxNTgwLCAKLSAgICAyNjksIDE1ODAsIDI3MCwgMTU4MCwgMjY3LCAxNTgxLCAyNjgsIDE1ODEsIDI2OSwgMTU4MSwgMjcwLCAxNTgxLCAyNjcsIAotICAgIDE1ODIsIDI2OCwgMTU4MiwgMjY5LCAxNTgyLCAyNzAsIDE1ODIsIDI2NywgMTU4MywgMjY4LCAxNTgzLCAyNjcsIDE1ODQsIAotICAgIDI2OCwgMTU4NCwgMjY3LCAxNTg1LCAyNjgsIDE1ODUsIDI2NywgMTU4NiwgMjY4LCAxNTg2LCAyNjcsIDE1ODcsIDI2OCwgCi0gICAgMTU4NywgMjY5LCAxNTg3LCAyNzAsIDE1ODcsIDI2NywgMTU4OCwgMjY4LCAxNTg4LCAyNjksIDE1ODgsIDI3MCwgMTU4OCwgCi0gICAgMjY3LCAxNTg5LCAyNjgsIDE1ODksIDI2OSwgMTU4OSwgMjcwLCAxNTg5LCAyNjcsIDE1OTAsIDI2OCwgMTU5MCwgMjY5LCAKLSAgICAxNTkwLCAyNzAsIDE1OTAsIDI2NywgMTU5MSwgMjY4LCAxNTkxLCAyNjksIDE1OTEsIDI3MCwgMTU5MSwgMjY3LCAxNTkyLCAKLSAgICAyNjgsIDE1OTIsIDI2OSwgMTU5MiwgMjcwLCAxNTkyLCAyNjcsIDE1OTMsIDI2OCwgMTU5MywgMjY5LCAxNTkzLCAyNzAsIAotICAgIDE1OTMsIDI2NywgMTU5NCwgMjY4LCAxNTk0LCAyNjksIDE1OTQsIDI3MCwgMTU5NCwgMjY3LCAxNjAxLCAyNjgsIDE2MDEsIAotICAgIDI2OSwgMTYwMSwgMjcwLCAxNjAxLCAyNjcsIDE2MDIsIDI2OCwgMTYwMiwgMjY5LCAxNjAyLCAyNzAsIDE2MDIsIDI2NywgCi0gICAgMTYwMywgMjY4LCAxNjAzLCAyNjksIDE2MDMsIDI3MCwgMTYwMywgMjY3LCAxNjA0LCAyNjgsIDE2MDQsIDI2OSwgMTYwNCwgCi0gICAgMjcwLCAxNjA0LCAyNjcsIDE2MDUsIDI2OCwgMTYwNSwgMjY5LCAxNjA1LCAyNzAsIDE2MDUsIDI2NywgMTYwNiwgMjY4LCAKLSAgICAxNjA2LCAyNjksIDE2MDYsIDI3MCwgMTYwNiwgMjY3LCAxNjA3LCAyNjgsIDE2MDcsIDI2OSwgMTYwNywgMjcwLCAxNjA3LCAKLSAgICAyNjcsIDE2MDgsIDI2OCwgMTYwOCwgMjY3LCAxNjA5LCAyNjgsIDE2MDksIDI2NywgMTYxMCwgMjY4LCAxNjEwLCAyNjksIAotICAgIDE2MTAsIDI3MCwgMTYxMCwgNTIzLCAxNjA0LCAxNTcwLCA1MjQsIDE2MDQsIDE1NzAsIDUyMywgMTYwNCwgMTU3MSwgNTI0LCAKLSAgICAxNjA0LCAxNTcxLCA1MjMsIDE2MDQsIDE1NzMsIDUyNCwgMTYwNCwgMTU3MywgNTIzLCAxNjA0LCAxNTc1LCA1MjQsIDE2MDQsIAotICAgIDE1NzUsIDI2NCwgMzMsIDI2NCwgMzQsIDI2NCwgMzUsIDI2NCwgMzYsIDI2NCwgMzcsIDI2NCwgMzgsIDI2NCwgMzksIDI2NCwgCi0gICAgNDAsIDI2NCwgNDEsIDI2NCwgNDIsIDI2NCwgNDMsIDI2NCwgNDQsIDI2NCwgNDUsIDI2NCwgNDYsIDI2NCwgNDcsIDI2NCwgCi0gICAgNDgsIDI2NCwgNDksIDI2NCwgNTAsIDI2NCwgNTEsIDI2NCwgNTIsIDI2NCwgNTMsIDI2NCwgNTQsIDI2NCwgNTUsIDI2NCwgCi0gICAgNTYsIDI2NCwgNTcsIDI2NCwgNTgsIDI2NCwgNTksIDI2NCwgNjAsIDI2NCwgNjEsIDI2NCwgNjIsIDI2NCwgNjMsIDI2NCwgCi0gICAgNjQsIDI2NCwgNjUsIDI2NCwgNjYsIDI2NCwgNjcsIDI2NCwgNjgsIDI2NCwgNjksIDI2NCwgNzAsIDI2NCwgNzEsIDI2NCwgCi0gICAgNzIsIDI2NCwgNzMsIDI2NCwgNzQsIDI2NCwgNzUsIDI2NCwgNzYsIDI2NCwgNzcsIDI2NCwgNzgsIDI2NCwgNzksIDI2NCwgCi0gICAgODAsIDI2NCwgODEsIDI2NCwgODIsIDI2NCwgODMsIDI2NCwgODQsIDI2NCwgODUsIDI2NCwgODYsIDI2NCwgODcsIDI2NCwgCi0gICAgODgsIDI2NCwgODksIDI2NCwgOTAsIDI2NCwgOTEsIDI2NCwgOTIsIDI2NCwgOTMsIDI2NCwgOTQsIDI2NCwgOTUsIDI2NCwgCi0gICAgOTYsIDI2NCwgOTcsIDI2NCwgOTgsIDI2NCwgOTksIDI2NCwgMTAwLCAyNjQsIDEwMSwgMjY0LCAxMDIsIDI2NCwgMTAzLCAKLSAgICAyNjQsIDEwNCwgMjY0LCAxMDUsIDI2NCwgMTA2LCAyNjQsIDEwNywgMjY0LCAxMDgsIDI2NCwgMTA5LCAyNjQsIDExMCwgCi0gICAgMjY0LCAxMTEsIDI2NCwgMTEyLCAyNjQsIDExMywgMjY0LCAxMTQsIDI2NCwgMTE1LCAyNjQsIDExNiwgMjY0LCAxMTcsIAotICAgIDI2NCwgMTE4LCAyNjQsIDExOSwgMjY0LCAxMjAsIDI2NCwgMTIxLCAyNjQsIDEyMiwgMjY0LCAxMjMsIDI2NCwgMTI0LCAKLSAgICAyNjQsIDEyNSwgMjY0LCAxMjYsIDI2NCwgMTA2MjksIDI2NCwgMTA2MzAsIDI3MiwgMTIyOTAsIDI3MiwgMTIzMDAsIDI3MiwgCi0gICAgMTIzMDEsIDI3MiwgMTIyODksIDI3MiwgMTI1MzksIDI3MiwgMTI1MzAsIDI3MiwgMTI0NDksIDI3MiwgMTI0NTEsIDI3MiwgCi0gICAgMTI0NTMsIDI3MiwgMTI0NTUsIDI3MiwgMTI0NTcsIDI3MiwgMTI1MTUsIDI3MiwgMTI1MTcsIDI3MiwgMTI1MTksIDI3MiwgCi0gICAgMTI0ODMsIDI3MiwgMTI1NDAsIDI3MiwgMTI0NTAsIDI3MiwgMTI0NTIsIDI3MiwgMTI0NTQsIDI3MiwgMTI0NTYsIDI3MiwgCi0gICAgMTI0NTgsIDI3MiwgMTI0NTksIDI3MiwgMTI0NjEsIDI3MiwgMTI0NjMsIDI3MiwgMTI0NjUsIDI3MiwgMTI0NjcsIDI3MiwgCi0gICAgMTI0NjksIDI3MiwgMTI0NzEsIDI3MiwgMTI0NzMsIDI3MiwgMTI0NzUsIDI3MiwgMTI0NzcsIDI3MiwgMTI0NzksIDI3MiwgCi0gICAgMTI0ODEsIDI3MiwgMTI0ODQsIDI3MiwgMTI0ODYsIDI3MiwgMTI0ODgsIDI3MiwgMTI0OTAsIDI3MiwgMTI0OTEsIDI3MiwgCi0gICAgMTI0OTIsIDI3MiwgMTI0OTMsIDI3MiwgMTI0OTQsIDI3MiwgMTI0OTUsIDI3MiwgMTI0OTgsIDI3MiwgMTI1MDEsIDI3MiwgCi0gICAgMTI1MDQsIDI3MiwgMTI1MDcsIDI3MiwgMTI1MTAsIDI3MiwgMTI1MTEsIDI3MiwgMTI1MTIsIDI3MiwgMTI1MTMsIDI3MiwgCi0gICAgMTI1MTQsIDI3MiwgMTI1MTYsIDI3MiwgMTI1MTgsIDI3MiwgMTI1MjAsIDI3MiwgMTI1MjEsIDI3MiwgMTI1MjIsIDI3MiwgCi0gICAgMTI1MjMsIDI3MiwgMTI1MjQsIDI3MiwgMTI1MjUsIDI3MiwgMTI1MjcsIDI3MiwgMTI1MzEsIDI3MiwgMTI0NDEsIDI3MiwgCi0gICAgMTI0NDIsIDI3MiwgMTI2NDQsIDI3MiwgMTI1OTMsIDI3MiwgMTI1OTQsIDI3MiwgMTI1OTUsIDI3MiwgMTI1OTYsIDI3MiwgCi0gICAgMTI1OTcsIDI3MiwgMTI1OTgsIDI3MiwgMTI1OTksIDI3MiwgMTI2MDAsIDI3MiwgMTI2MDEsIDI3MiwgMTI2MDIsIDI3MiwgCi0gICAgMTI2MDMsIDI3MiwgMTI2MDQsIDI3MiwgMTI2MDUsIDI3MiwgMTI2MDYsIDI3MiwgMTI2MDcsIDI3MiwgMTI2MDgsIDI3MiwgCi0gICAgMTI2MDksIDI3MiwgMTI2MTAsIDI3MiwgMTI2MTEsIDI3MiwgMTI2MTIsIDI3MiwgMTI2MTMsIDI3MiwgMTI2MTQsIDI3MiwgCi0gICAgMTI2MTUsIDI3MiwgMTI2MTYsIDI3MiwgMTI2MTcsIDI3MiwgMTI2MTgsIDI3MiwgMTI2MTksIDI3MiwgMTI2MjAsIDI3MiwgCi0gICAgMTI2MjEsIDI3MiwgMTI2MjIsIDI3MiwgMTI2MjMsIDI3MiwgMTI2MjQsIDI3MiwgMTI2MjUsIDI3MiwgMTI2MjYsIDI3MiwgCi0gICAgMTI2MjcsIDI3MiwgMTI2MjgsIDI3MiwgMTI2MjksIDI3MiwgMTI2MzAsIDI3MiwgMTI2MzEsIDI3MiwgMTI2MzIsIDI3MiwgCi0gICAgMTI2MzMsIDI3MiwgMTI2MzQsIDI3MiwgMTI2MzUsIDI3MiwgMTI2MzYsIDI3MiwgMTI2MzcsIDI3MiwgMTI2MzgsIDI3MiwgCi0gICAgMTI2MzksIDI3MiwgMTI2NDAsIDI3MiwgMTI2NDEsIDI3MiwgMTI2NDIsIDI3MiwgMTI2NDMsIDI2NCwgMTYyLCAyNjQsIAotICAgIDE2MywgMjY0LCAxNzIsIDI2NCwgMTc1LCAyNjQsIDE2NiwgMjY0LCAxNjUsIDI2NCwgODM2MSwgMjcyLCA5NDc0LCAyNzIsIAotICAgIDg1OTIsIDI3MiwgODU5MywgMjcyLCA4NTk0LCAyNzIsIDg1OTUsIDI3MiwgOTYzMiwgMjcyLCA5Njc1LCA1MTIsIDY5Nzg1LCAKLSAgICA2OTgxOCwgNTEyLCA2OTc4NywgNjk4MTgsIDUxMiwgNjk3OTcsIDY5ODE4LCA1MTIsIDExOTEyNywgMTE5MTQxLCA1MTIsIAotICAgIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIDExOTEzNSwgCi0gICAgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgMTE5MTQxLCAKLSAgICA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCA1MTIsIAotICAgIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAKLSAgICAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAKLSAgICAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAKLSAgICAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIAotICAgIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAKLSAgICAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgCi0gICAgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIAotICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIAotICAgIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIAotICAgIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIAotICAgIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKKyAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1OSwgMjk0LCAyNTksIDMzOSwgMjU2LCAzNTkxMiwgCisgICAgMjU2LCAyNjM1NiwgMjU2LCAzNjU1NCwgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgCisgICAgMjU2LCA0MDg2MCwgMjU2LCA0MDg2MCwgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgCisgICAgMjU2LCAyNTA3OCwgMjU2LCAzMDMxMywgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgCisgICAgMjU2LCAzNzAwNywgMjU2LCAyNzEzOCwgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgCisgICAgMjU2LCAzNzIyNiwgMjU2LCAzOTQwOSwgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgCisgICAgMjU2LCAzNDM0OSwgMjU2LCA0MDQ3OCwgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgCisgICAgMjU2LCAyNTI4OSwgMjU2LCAzMzI0MCwgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgCisgICAgMjU2LCAyOTQzNiwgMjU2LCAzNzA3MCwgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgCisgICAgMjU2LCAyNzM0NywgMjU2LCAyOTIwMCwgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgCisgICAgMjU2LCAzNjMzNSwgMjU2LCAzODcwNiwgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgCisgICAgMjU2LCAzMjE2MCwgMjU2LCAzMzczNywgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgCisgICAgMjU2LCAyNDMyNCwgMjU2LCAzMTg0MCwgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgCisgICAgMjU2LCAzODY0NywgMjU2LCAyMjc0NCwgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgCisgICAgMjU2LCAzMjA0NywgMjU2LCAzMjMxMSwgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgCisgICAgMjU2LCAyMDk0MCwgMjU2LCAzMTI2MCwgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgCisgICAgMjU2LCAyNTI5NSwgMjU2LCAyNzEzOCwgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgCisgICAgMjU2LCAyOTU3NSwgMjU2LCAzMDA2NCwgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgCisgICAgMjU2LCAxOTk4MSwgMjU2LCAyNzg1MiwgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgCisgICAgMjU2LCAzMDQ2NSwgMjU2LCAzMzg2NSwgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgCisgICAgMjU2LCAyNTM0MiwgMjU2LCAzMzUwOSwgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgCisgICAgMjU2LCAyMDkzNywgMjU2LCAyNjc1MywgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgCisgICAgMjU2LCAyMTIzNywgMjU2LCAyMTU3MCwgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgCisgICAgMjU2LCAzMTAxOCwgMjU2LCAzODMxNywgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgCisgICAgMjU2LCAyNjMxMCwgMjU2LCAyNzUxMSwgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgCisgICAgMjU2LCAyNTc1NCwgMjU2LCAyODQ1MSwgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgCisgICAgMjU2LCAzMjg3OSwgMjU2LCAzNjY0NiwgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgCisgICAgMjU2LCAyMTE1NSwgMjU2LCAyMTY5MywgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgCisgICAgMjU2LCAyNDU2NSwgMjU2LCAyNTQ2NywgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgCisgICAgMjU2LCAyMjI2NSwgMjU2LCAyMzUyNywgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgCisgICAgMjU2LCAzMjY2NiwgMjU2LCAzMjgzOCwgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgCisgICAgMjU2LCAyMDM2MywgMjU2LCAzMTE1MCwgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgCisgICAgMjU2LCAyMDY5OCwgMjU2LCAyMzUzNCwgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgCisgICAgMjU2LCAzMDI3NCwgMjU2LCAzNDA0NCwgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgCisgICAgMjU2LCAyMTEyOSwgMjU2LCAyNjQ5MSwgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgCisgICAgMjU2LCAzMDA0MSwgMjU2LCAzMDgyNywgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgCisgICAgMjU2LCAzODUyMCwgMjU2LCAyMDUyMywgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgCisgICAgMjU2LCAyNDkwMCwgMjU2LCAyNjY0NywgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgCisgICAgMjU2LCAyMzY1MywgMjU2LCAyNjEzMSwgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgCisgICAgMjU2LCAzMDE3OCwgMjU2LCAzMjYzMywgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgCisgICAgMjU2LCAyMTMxMSwgMjU2LCAyODM0NiwgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgCisgICAgMjU2LCAzODU2MywgMjU2LCA0MDAyMywgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgCisgICAgMjU2LCAzMTQzNSwgMjU2LCAzMTUyMCwgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgCisgICAgMjU2LCAyMDE2MCwgMjU2LCAzMzU5MCwgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgCisgICAgMjU2LCAzMTk1OCwgMjU2LCAyMzQyOSwgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgCisgICAgMjU2LCAzODQ3NywgMjU2LCAzNTIxMSwgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgCisgICAgMjU2LCAyNjIyOCwgMjU2LCAyMDk1OCwgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgCisgICAgMjU2LCAzMTA3NywgMjU2LCAzMTExOSwgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgCisgICAgMjU2LCAzNTU3NiwgMjU2LCAzNjkyMCwgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgCisgICAgMjU2LCA0MDM3MiwgMjU2LCAzNzA4NiwgMjU2LCAzODU4MywgMjU2LCAyMDM5OCwgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgCisgICAgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgCisgICAgMjU2LCAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgCisgICAgMjU2LCAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgCisgICAgMjU2LCAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgCisgICAgMjU2LCAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgCisgICAgMjU2LCAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgCisgICAgMjU2LCAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgCisgICAgMjU2LCAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgCisgICAgMjU2LCAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgCisgICAgMjU2LCAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIAorICAgIDI1NiwgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIAorICAgIDI1NiwgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIAorICAgIDI1NiwgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIAorICAgIDI1NiwgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIAorICAgIDI1NiwgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIAorICAgIDI1NiwgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIAorICAgIDI1NiwgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIAorICAgIDI1NiwgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIAorICAgIDI1NiwgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIAorICAgIDI1NiwgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIAorICAgIDI1NiwgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIAorICAgIDI1NiwgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIAorICAgIDI1NiwgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIAorICAgIDI1NiwgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIAorICAgIDI1NiwgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIAorICAgIDI1NiwgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgCisgICAgMjU2LCAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIAorICAgIDE1NDgzMiwgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAKKyAgICAxMDUsIDUxNCwgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgCisgICAgMTE2LCA1MTQsIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCAKKyAgICA1MTQsIDE0MDYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgCisgICAgMTUwNiwgMjYyLCAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgCisgICAgMjYyLCAxNTEyLCAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIAorICAgIDY0MzI5LCAxNDczLCA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAKKyAgICAxNDg4LCAxNDY4LCA1MTIsIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIAorICAgIDE0NjgsIDUxMiwgMTQ5MywgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgCisgICAgNTEyLCAxNDk4LCAxNDY4LCA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIAorICAgIDE1MDQsIDE0NjgsIDUxMiwgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgCisgICAgMTQ2OCwgNTEyLCAxNTExLCAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCAKKyAgICA1MTIsIDE0OTMsIDE0NjUsIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgCisgICAgMTQ4OCwgMTUwMCwgMjY3LCAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAxNjU5LCAyNjksIDE2NTksIDI3MCwgCisgICAgMTY1OSwgMjY3LCAxNjYyLCAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgCisgICAgMjY5LCAxNjY0LCAyNzAsIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAKKyAgICAxNjYzLCAyNjgsIDE2NjMsIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAKKyAgICAyNzAsIDE2NTcsIDI2NywgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIAorICAgIDE3MDIsIDI2OSwgMTcwMiwgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIAorICAgIDI2NywgMTY2NywgMjY4LCAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgCisgICAgMTY3MCwgMjcwLCAxNjcwLCAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAyNzAsIDE2NzEsIDI2NywgMTY3NywgCisgICAgMjY4LCAxNjc3LCAyNjcsIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAKKyAgICAxNjcyLCAyNjcsIDE2ODgsIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAKKyAgICAyNjksIDE3MDUsIDI3MCwgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgMTcxMSwgMjcwLCAxNzExLCAyNjcsIAorICAgIDE3MTUsIDI2OCwgMTcxNSwgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgMjY4LCAxNzEzLCAyNjksIDE3MTMsIAorICAgIDI3MCwgMTcxMywgMjY3LCAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAxNzIzLCAyNjksIDE3MjMsIDI3MCwgCisgICAgMTcyMywgMjY3LCAxNzI4LCAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAyNjksIDE3MjksIDI3MCwgMTcyOSwgCisgICAgMjY3LCAxNzI2LCAyNjgsIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAKKyAgICAxNzQ3LCAyNjgsIDE3NDcsIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAKKyAgICAyNjgsIDE3MzUsIDI2NywgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgMTczNiwgMjY3LCAxNjU1LCAyNjcsIAorICAgIDE3MzksIDI2OCwgMTczOSwgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIAorICAgIDI2OCwgMTc0NCwgMjY5LCAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIAorICAgIDUyNCwgMTU3NCwgMTU3NSwgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAKKyAgICAxNTc0LCAxNjA4LCA1MjMsIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIAorICAgIDE3MzQsIDUyMywgMTU3NCwgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgCisgICAgNTI1LCAxNTc0LCAxNzQ0LCA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIAorICAgIDE3NDAsIDI2OCwgMTc0MCwgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCAKKyAgICA1MjMsIDE1NzQsIDE2MDUsIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCA1MjMsIDE1NzYsIDE1ODAsIDUyMywgCisgICAgMTU3NiwgMTU4MSwgNTIzLCAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAKKyAgICAxNjEwLCA1MjMsIDE1NzgsIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIAorICAgIDUyMywgMTU3OCwgMTYwOSwgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAKKyAgICAxNTc5LCAxNjA5LCA1MjMsIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIAorICAgIDE1ODAsIDUyMywgMTU4MSwgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgCisgICAgNTIzLCAxNTg3LCAxNTgwLCA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIAorICAgIDE1ODksIDE1ODEsIDUyMywgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgCisgICAgMTU4MiwgNTIzLCAxNTkwLCAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCAKKyAgICA1MjMsIDE1OTMsIDE1ODAsIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCA1MjMsIDE1OTQsIDE2MDUsIDUyMywgCisgICAgMTYwMSwgMTU4MCwgNTIzLCAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAKKyAgICAxNjA5LCA1MjMsIDE2MDEsIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIAorICAgIDUyMywgMTYwMiwgMTYxMCwgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIDUyMywgMTYwMywgMTU4MSwgNTIzLCAKKyAgICAxNjAzLCAxNTgyLCA1MjMsIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIAorICAgIDE2MTAsIDUyMywgMTYwNCwgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgCisgICAgNTIzLCAxNjA0LCAxNjA5LCA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIAorICAgIDE2MDUsIDE1ODIsIDUyMywgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgCisgICAgMTU4MCwgNTIzLCAxNjA2LCAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCAKKyAgICA1MjMsIDE2MDYsIDE2MTAsIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCA1MjMsIDE2MDcsIDE2MDksIDUyMywgCisgICAgMTYwNywgMTYxMCwgNTIzLCAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAKKyAgICAxNjA1LCA1MjMsIDE2MTAsIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIAorICAgIDUyMywgMTYwOSwgMTY0OCwgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgCisgICAgMTYxNywgNzc5LCAzMiwgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAKKyAgICAxNTc0LCAxNTg1LCA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIAorICAgIDE2MDksIDUyNCwgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgCisgICAgNTI0LCAxNTc2LCAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIAorICAgIDE1NzgsIDE1ODYsIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgCisgICAgMTYxMCwgNTI0LCAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCAKKyAgICA1MjQsIDE1NzksIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgCisgICAgMTYwMiwgMTYwOSwgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAKKyAgICAxNjA1LCA1MjQsIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIAorICAgIDUyNCwgMTYwNCwgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAKKyAgICAxNjA2LCAxNTg2LCA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIAorICAgIDE2MTAsIDUyNCwgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgCisgICAgNTI0LCAxNjEwLCAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIAorICAgIDE1NzQsIDE1ODEsIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgCisgICAgMTU4MCwgNTI1LCAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCAKKyAgICA1MjUsIDE1NzgsIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgCisgICAgMTU3OCwgMTYwNywgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAKKyAgICAxNTgwLCA1MjUsIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIAorICAgIDUyNSwgMTU4NywgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAKKyAgICAxNTg5LCAxNTgyLCA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIAorICAgIDE1ODIsIDUyNSwgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgCisgICAgNTI1LCAxNTkzLCAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIAorICAgIDE2MDEsIDE1ODEsIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgCisgICAgMTYwNSwgNTI1LCAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCAKKyAgICA1MjUsIDE2MDMsIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgCisgICAgMTYwNCwgMTYwNSwgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAKKyAgICAxNTgyLCA1MjUsIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIAorICAgIDUyNSwgMTYwNiwgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAKKyAgICAxNjA3LCAxNjQ4LCA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIAorICAgIDE2MDUsIDUyNSwgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgCisgICAgNTI2LCAxNTc2LCAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIAorICAgIDE1NzksIDE2MDcsIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgCisgICAgMTYwNywgNTI2LCAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCAKKyAgICA1MjYsIDE2MDYsIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIAorICAgIDc4MiwgMTYwMCwgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgCisgICAgMTYxMCwgNTIzLCAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCAKKyAgICA1MjMsIDE1ODcsIDE2MDksIDUyMywgMTU4NywgMTYxMCwgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgCisgICAgMTU4MSwgMTYwOSwgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAKKyAgICAxNjA5LCA1MjMsIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIAorICAgIDUyMywgMTU5MCwgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAKKyAgICAxNTg4LCAxNjA1LCA1MjMsIDE1ODgsIDE1ODUsIDUyMywgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIAorICAgIDE1ODUsIDUyNCwgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgCisgICAgNTI0LCAxNTk0LCAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIAorICAgIDE1ODgsIDE2MDksIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgCisgICAgMTYwOSwgNTI0LCAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCAKKyAgICA1MjQsIDE1ODksIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgCisgICAgMTU4OCwgMTU4MSwgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAKKyAgICAxNTg1LCA1MjQsIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIAorICAgIDUyNSwgMTU4OCwgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAKKyAgICAxNTkxLCAxNjA1LCA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIAorICAgIDE1ODAsIDUyNiwgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgCisgICAgNTI0LCAxNTc1LCAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAKKyAgICAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAKKyAgICAxNjA1LCA3ODEsIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAKKyAgICAxNTgyLCA3ODAsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAKKyAgICAxNTgxLCA3ODAsIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAKKyAgICAxNjEwLCA3ODAsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAKKyAgICAxNjA1LCA3ODEsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAKKyAgICAxNjA1LCA3ODEsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAKKyAgICAxNTgxLCA3ODAsIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAKKyAgICAxNjEwLCA3ODAsIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAKKyAgICAxNTgwLCA3ODAsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAKKyAgICAxNjA1LCA3ODAsIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAKKyAgICAxNjA1LCA3ODEsIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAKKyAgICAxNTgyLCA3ODEsIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAKKyAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAKKyAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAKKyAgICAxNjEwLCA3ODAsIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAKKyAgICAxNjEwLCA3ODEsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAKKyAgICAxNjEwLCA3ODEsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAKKyAgICAxNjEwLCA3ODAsIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAKKyAgICAxNjEwLCA3ODEsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAKKyAgICAxNzQ2LCA3NzksIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIAorICAgIDE2MDMsIDE1NzYsIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIAorICAgIDE2MDUsIDEwMzUsIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIAorICAgIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgCisgICAgMzIsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgCisgICAgMTYwNCwgMTYwNSwgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIAorICAgIDE1ODUsIDE3NDAsIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgCisgICAgNTksIDI2NSwgMzMsIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIAorICAgIDgyMTIsIDI2NSwgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAKKyAgICAyNjUsIDEyMzA4LCAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAKKyAgICAyNjUsIDEyMjk2LCAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAKKyAgICAyNjUsIDkxLCAyNjUsIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIAorICAgIDI1OCwgOTUsIDI1OCwgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgCisgICAgNjMsIDI3MSwgMzMsIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAKKyAgICAyNzEsIDEyMzA5LCAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIAorICAgIDYyLCAyNzEsIDYxLCAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIAorICAgIDE2MDAsIDE2MTEsIDUyMywgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgCisgICAgNTIzLCAzMiwgMTYxNSwgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIAorICAgIDE2MTcsIDUyNiwgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgCisgICAgMTU3MCwgMjY4LCAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgCisgICAgMjY4LCAxNTczLCAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAKKyAgICAxNTc1LCAyNjcsIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAKKyAgICAyNjcsIDE1NzgsIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIAorICAgIDE1NzksIDI3MCwgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIAorICAgIDI2OCwgMTU4MSwgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgCisgICAgMTU4MiwgMjY3LCAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgCisgICAgMjY3LCAxNTg2LCAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAKKyAgICAxNTg4LCAyNjgsIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAKKyAgICAyNzAsIDE1ODksIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIAorICAgIDE1OTEsIDI2OSwgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIAorICAgIDI2NywgMTU5MywgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgCisgICAgMTU5NCwgMjcwLCAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgCisgICAgMjY4LCAxNjAyLCAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAKKyAgICAxNjAzLCAyNjcsIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAKKyAgICAyNjksIDE2MDUsIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIAorICAgIDE2MDcsIDI2OCwgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIAorICAgIDI2OCwgMTYwOSwgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIAorICAgIDUyNCwgMTYwNCwgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAKKyAgICAxNjA0LCAxNTczLCA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgCisgICAgMjY0LCAzNiwgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgCisgICAgMjY0LCA0NCwgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgCisgICAgMjY0LCA1MiwgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgCisgICAgMjY0LCA2MCwgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgCisgICAgMjY0LCA2OCwgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgCisgICAgMjY0LCA3NiwgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgCisgICAgMjY0LCA4NCwgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgCisgICAgMjY0LCA5MiwgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgCisgICAgMjY0LCAxMDAsIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIAorICAgIDI2NCwgMTA3LCAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAKKyAgICAyNjQsIDExNCwgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgCisgICAgMjY0LCAxMjEsIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgCisgICAgMjY0LCAxMDYzMCwgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgCisgICAgMjcyLCAxMjUzMCwgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgCisgICAgMjcyLCAxMjUxNSwgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgCisgICAgMjcyLCAxMjQ1MiwgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgCisgICAgMjcyLCAxMjQ2MywgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgCisgICAgMjcyLCAxMjQ3NSwgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgCisgICAgMjcyLCAxMjQ4OCwgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgCisgICAgMjcyLCAxMjQ5NSwgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgCisgICAgMjcyLCAxMjUxMSwgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgCisgICAgMjcyLCAxMjUyMCwgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgCisgICAgMjcyLCAxMjUyNywgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgCisgICAgMjcyLCAxMjU5NCwgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgCisgICAgMjcyLCAxMjYwMCwgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgCisgICAgMjcyLCAxMjYwNiwgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgCisgICAgMjcyLCAxMjYxMiwgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgCisgICAgMjcyLCAxMjYxOCwgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgCisgICAgMjcyLCAxMjYyNCwgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgCisgICAgMjcyLCAxMjYzMCwgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgCisgICAgMjcyLCAxMjYzNiwgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgCisgICAgMjcyLCAxMjY0MiwgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAKKyAgICAyNjQsIDE2NSwgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgCisgICAgODU5NSwgMjcyLCA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCAKKyAgICA2OTc5NywgNjk4MTgsIDUxMiwgNjk5MzcsIDY5OTI3LCA1MTIsIDY5OTM4LCA2OTkyNywgNTEyLCAxMTkxMjcsIDExOTE0MSwgCisgICAgNTEyLCAxMTkxMjgsIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAKKyAgICAxMTkxMzUsIDExOTE1MiwgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIAorICAgIDExOTE0MSwgNTEyLCAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgCisgICAgNTEyLCAxMTkyMjcsIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCAKKyAgICA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCAKKyAgICA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCAKKyAgICA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCAKKyAgICA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgCisgICAgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIAorICAgIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAKKyAgICAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIAorICAgIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIAorICAgIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIAorICAgIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIAorICAgIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgCiAgICAgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIAogICAgIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAKICAgICAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgCkBAIC0zNTEwLDIwICszNTc5LDQyIEBACiAgICAgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgCiAgICAgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgCiAgICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDUxNCwgNDgsIDQ2LCA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCAKLSAgICA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIAotICAgIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIAotICAgIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIAotICAgIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCAKLSAgICA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCAKLSAgICA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCAKLSAgICA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCAKLSAgICA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIAotICAgIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIAotICAgIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIAotICAgIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIAotICAgIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCAKLSAgICA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIDg2LCA1MjIsIDg3LCA2NywgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAorICAgIDU2LCAyNjIsIDU3LCAyNjIsIDE1NzUsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAKKyAgICAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAKKyAgICAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIAorICAgIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIAorICAgIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTcyMiwgMjYyLCAxNjk3LCAyNjIsIDE2NDcsIDI2MiwgCisgICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgCisgICAgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAKKyAgICAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAKKyAgICAyNjIsIDE1ODAsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIAorICAgIDE1OTMsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAorICAgIDI2MiwgMTcyMiwgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgCisgICAgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCisgICAgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAKKyAgICAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTY5NywgMjYyLCAxNTc1LCAKKyAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDcsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIAorICAgIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIAorICAgIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgCisgICAgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgCisgICAgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAKKyAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIAorICAgIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCA1MTQsIDQ4LCA0NiwgCisgICAgNTE0LCA0OCwgNDQsIDUxNCwgNDksIDQ0LCA1MTQsIDUwLCA0NCwgNTE0LCA1MSwgNDQsIDUxNCwgNTIsIDQ0LCA1MTQsIDUzLCAKKyAgICA0NCwgNTE0LCA1NCwgNDQsIDUxNCwgNTUsIDQ0LCA1MTQsIDU2LCA0NCwgNTE0LCA1NywgNDQsIDc3MCwgNDAsIDY1LCA0MSwgCisgICAgNzcwLCA0MCwgNjYsIDQxLCA3NzAsIDQwLCA2NywgNDEsIDc3MCwgNDAsIDY4LCA0MSwgNzcwLCA0MCwgNjksIDQxLCA3NzAsIAorICAgIDQwLCA3MCwgNDEsIDc3MCwgNDAsIDcxLCA0MSwgNzcwLCA0MCwgNzIsIDQxLCA3NzAsIDQwLCA3MywgNDEsIDc3MCwgNDAsIAorICAgIDc0LCA0MSwgNzcwLCA0MCwgNzUsIDQxLCA3NzAsIDQwLCA3NiwgNDEsIDc3MCwgNDAsIDc3LCA0MSwgNzcwLCA0MCwgNzgsIAorICAgIDQxLCA3NzAsIDQwLCA3OSwgNDEsIDc3MCwgNDAsIDgwLCA0MSwgNzcwLCA0MCwgODEsIDQxLCA3NzAsIDQwLCA4MiwgNDEsIAorICAgIDc3MCwgNDAsIDgzLCA0MSwgNzcwLCA0MCwgODQsIDQxLCA3NzAsIDQwLCA4NSwgNDEsIDc3MCwgNDAsIDg2LCA0MSwgNzcwLCAKKyAgICA0MCwgODcsIDQxLCA3NzAsIDQwLCA4OCwgNDEsIDc3MCwgNDAsIDg5LCA0MSwgNzcwLCA0MCwgOTAsIDQxLCA3NzAsIAorICAgIDEyMzA4LCA4MywgMTIzMDksIDI2MywgNjcsIDI2MywgODIsIDUxOSwgNjcsIDY4LCA1MTksIDg3LCA5MCwgMjY2LCA2NSwgCisgICAgMjY2LCA2NiwgMjY2LCA2NywgMjY2LCA2OCwgMjY2LCA2OSwgMjY2LCA3MCwgMjY2LCA3MSwgMjY2LCA3MiwgMjY2LCA3MywgCisgICAgMjY2LCA3NCwgMjY2LCA3NSwgMjY2LCA3NiwgMjY2LCA3NywgMjY2LCA3OCwgMjY2LCA3OSwgMjY2LCA4MCwgMjY2LCA4MSwgCisgICAgMjY2LCA4MiwgMjY2LCA4MywgMjY2LCA4NCwgMjY2LCA4NSwgMjY2LCA4NiwgMjY2LCA4NywgMjY2LCA4OCwgMjY2LCA4OSwgCisgICAgMjY2LCA5MCwgNTIyLCA3MiwgODYsIDUyMiwgNzcsIDg2LCA1MjIsIDgzLCA2OCwgNTIyLCA4MywgODMsIDc3OCwgODAsIDgwLCAKKyAgICA4NiwgNTIyLCA4NywgNjcsIDUxNSwgNzcsIDY3LCA1MTUsIDc3LCA2OCwgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAogICAgIDEyMzYzLCA1MjIsIDEyNDY3LCAxMjQ2NywgMjY2LCAxMjQ2OSwgMjY2LCAyNTE2MywgMjY2LCAyMzM4MywgMjY2LCAyMTQ1MiwgCiAgICAgMjY2LCAxMjQ4NywgMjY2LCAyMDEwOCwgMjY2LCAyMjgxMCwgMjY2LCAzNTI5OSwgMjY2LCAyMjgyNSwgMjY2LCAyMDEzMiwgCiAgICAgMjY2LCAyNjE0NCwgMjY2LCAyODk2MSwgMjY2LCAyNjAwOSwgMjY2LCAyMTA2OSwgMjY2LCAyNDQ2MCwgMjY2LCAyMDg3NywgCkBAIC0zNjQzLDcgKzM3MzQsNyBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MiwgNywgNywgNywgNywgNywgNywgCisgICAgNDEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQyLCA0MywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCkBAIC0zNjUxLDkgKzM3NDIsOSBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQzLCA3LCA3LCA0NCwgNDUsIAotICAgIDQ2LCA0NywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNDgsIDQ5LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0NCwgNywgNywgNDUsIAorICAgIDQ2LCA0NywgNDgsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDQ5LCA3LCA3LCA1MCwgNTEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIApAQCAtMzY2NCw3ICszNzU1LDcgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA1MCwgNTEsIDUyLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA1MiwgNTMsIDU0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKQEAgLTM4MTMsNyArMzkwNCw3IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZGVjb21wX2luZGV4MltdID0gewpAQCAtNDI4MiwzNTYgKzQzNzMsMTYzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjY0OCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgNjY2NCwgCisgICAgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgNjY4OCwgCisgICAgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgNjcxMiwgCisgICAgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgNjczNiwgCisgICAgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgNjc2MCwgCisgICAgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgNjc4NCwgCisgICAgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgNjgwOCwgCisgICAgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgNjgzMiwgCisgICAgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgNjg1NiwgCisgICAgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgNjg4MCwgCisgICAgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgNjkwNCwgCisgICAgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgNjkyOCwgCisgICAgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgNjk1MiwgCisgICAgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgNjk3NiwgCisgICAgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgNzAwMCwgCisgICAgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgNzAyNCwgCisgICAgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgNzA0OCwgCisgICAgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgNzA3MiwgCisgICAgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgNzA5NiwgCisgICAgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgNzEyMCwgCisgICAgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgNzE0NCwgCisgICAgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgNzE2OCwgCisgICAgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgNzE4OCwgNzE5MCwgMCwgMCwgCisgICAgNzE5MiwgMCwgNzE5NCwgMCwgMCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgNzIxMCwgCisgICAgNzIxMiwgNzIxNCwgMCwgNzIxNiwgMCwgNzIxOCwgMCwgMCwgNzIyMCwgNzIyMiwgMCwgMCwgMCwgNzIyNCwgNzIyNiwgCisgICAgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgNzI0OCwgNzI1MCwgCisgICAgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgNzI3MiwgNzI3NCwgCisgICAgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgNzI5NiwgNzI5OCwgCisgICAgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgNzMyMCwgNzMyMiwgCisgICAgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgNzM0NCwgNzM0NiwgCisgICAgNzM0OCwgNzM1MCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgMCwgMCwgNzM2MCwgNzM2MiwgNzM2NCwgNzM2NiwgNzM2OCwgCisgICAgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgNzM5MCwgNzM5MiwgCisgICAgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgNzQxNCwgNzQxNiwgCisgICAgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgNzQzOCwgNzQ0MCwgCisgICAgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgNzQ2MiwgNzQ2NCwgCisgICAgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgNzQ4NiwgNzQ4OCwgCisgICAgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgNzUxMCwgNzUxMiwgCisgICAgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgNzUzNCwgNzUzNiwgCisgICAgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgNzU1OCwgNzU2MCwgCisgICAgNzU2MiwgNzU2NCwgNzU2NiwgNzU2OCwgNzU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0OCwgNjY1MCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgCi0gICAgNjY2NCwgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgCi0gICAgNjY4OCwgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgCi0gICAgNjcxMiwgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgCi0gICAgNjczNiwgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgCi0gICAgNjc2MCwgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgCi0gICAgNjc4NCwgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgCi0gICAgNjgwOCwgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgCi0gICAgNjgzMiwgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgCi0gICAgNjg1NiwgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgCi0gICAgNjg4MCwgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgCi0gICAgNjkwNCwgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgCi0gICAgNjkyOCwgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgCi0gICAgNjk1MiwgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgCi0gICAgNjk3NiwgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgCi0gICAgNzAwMCwgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgCi0gICAgNzAyNCwgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgCi0gICAgNzA0OCwgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgCi0gICAgNzA3MiwgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgCi0gICAgNzA5NiwgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgCi0gICAgNzEyMCwgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgCi0gICAgNzE0NCwgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgCi0gICAgNzE2OCwgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgMCwgMCwgNzE4OCwgCi0gICAgMCwgNzE5MCwgMCwgMCwgNzE5MiwgNzE5NCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgCi0gICAgNzIxMCwgMCwgNzIxMiwgMCwgNzIxNCwgMCwgMCwgNzIxNiwgNzIxOCwgMCwgMCwgMCwgNzIyMCwgNzIyMiwgNzIyNCwgCi0gICAgNzIyNiwgMCwgMCwgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgCi0gICAgNzI0OCwgNzI1MCwgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgCi0gICAgNzI3MiwgNzI3NCwgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgCi0gICAgNzI5NiwgNzI5OCwgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgCi0gICAgNzMyMCwgNzMyMiwgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgCi0gICAgNzM0NCwgNzM0NiwgNzM0OCwgNzM1MCwgMCwgMCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgNzM2MCwgNzM2MiwgNzM2NCwgCi0gICAgNzM2NiwgNzM2OCwgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgCi0gICAgNzM5MCwgNzM5MiwgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgCi0gICAgNzQxNCwgNzQxNiwgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgCi0gICAgNzQzOCwgNzQ0MCwgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgCi0gICAgNzQ2MiwgNzQ2NCwgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgCi0gICAgNzQ4NiwgNzQ4OCwgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgCi0gICAgNzUxMCwgNzUxMiwgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgCi0gICAgNzUzNCwgNzUzNiwgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgCi0gICAgNzU1OCwgNzU2MCwgNzU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU2NCwgNzU2NywgCi0gICAgNzU3MCwgNzU3MywgNzU3NywgNzU4MSwgNzU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU4NywgCi0gICAgNzU5MCwgNzU5MywgNzU5NiwgNzU5OSwgMCwgMCwgMCwgMCwgMCwgNzYwMiwgMCwgNzYwNSwgNzYwOCwgNzYxMCwgNzYxMiwgCi0gICAgNzYxNCwgNzYxNiwgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMSwgNzYzNCwgNzYzNywgNzY0MCwgCi0gICAgNzY0MywgNzY0NiwgNzY0OSwgNzY1MiwgNzY1NSwgNzY1OCwgNzY2MSwgNzY2NCwgMCwgNzY2NywgNzY3MCwgNzY3MywgCi0gICAgNzY3NiwgNzY3OSwgMCwgNzY4MiwgMCwgNzY4NSwgNzY4OCwgMCwgNzY5MSwgNzY5NCwgMCwgNzY5NywgNzcwMCwgNzcwMywgCi0gICAgNzcwNiwgNzcwOSwgNzcxMiwgNzcxNSwgNzcxOCwgNzcyMSwgNzcyNCwgNzcyNywgNzcyOSwgNzczMSwgNzczMywgNzczNSwgCi0gICAgNzczNywgNzczOSwgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgCi0gICAgNzc2MSwgNzc2MywgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgCi0gICAgNzc4NSwgNzc4NywgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgCi0gICAgNzgwOSwgNzgxMSwgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgCi0gICAgNzgzMywgNzgzNSwgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgCi0gICAgNzg1NywgNzg1OSwgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgCi0gICAgNzg4MSwgNzg4MywgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgCi0gICAgNzkwNSwgNzkwNywgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU3MiwgNzU3NSwgNzU3OCwgNzU4MSwgNzU4NSwgNzU4OSwgNzU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzU5NSwgNzU5OCwgNzYwMSwgNzYwNCwgNzYwNywgMCwgMCwgMCwgMCwgMCwgNzYxMCwgMCwgNzYxMywgNzYxNiwgCisgICAgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMCwgNzYzMiwgNzYzNCwgNzYzNiwgNzYzOSwgNzY0MiwgCisgICAgNzY0NSwgNzY0OCwgNzY1MSwgNzY1NCwgNzY1NywgNzY2MCwgNzY2MywgNzY2NiwgNzY2OSwgNzY3MiwgMCwgNzY3NSwgCisgICAgNzY3OCwgNzY4MSwgNzY4NCwgNzY4NywgMCwgNzY5MCwgMCwgNzY5MywgNzY5NiwgMCwgNzY5OSwgNzcwMiwgMCwgNzcwNSwgCisgICAgNzcwOCwgNzcxMSwgNzcxNCwgNzcxNywgNzcyMCwgNzcyMywgNzcyNiwgNzcyOSwgNzczMiwgNzczNSwgNzczNywgNzczOSwgCisgICAgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgNzc2MSwgNzc2MywgCisgICAgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgNzc4NSwgNzc4NywgCisgICAgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgNzgwOSwgNzgxMSwgCisgICAgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgNzgzMywgNzgzNSwgCisgICAgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgNzg1NywgNzg1OSwgCisgICAgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgNzg4MSwgNzg4MywgCisgICAgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgNzkwNSwgNzkwNywgCisgICAgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgCi0gICAgNzk0MywgNzk0NSwgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgCi0gICAgNzk2NywgNzk2OSwgNzk3MiwgNzk3NSwgNzk3OCwgNzk4MSwgNzk4NCwgNzk4NywgNzk5MCwgNzk5MywgNzk5NiwgNzk5OSwgCi0gICAgODAwMiwgODAwNSwgODAwOCwgODAxMSwgODAxNCwgODAxNywgODAyMCwgODAyMywgODAyNSwgODAyNywgODAyOSwgODAzMSwgCi0gICAgODAzNCwgODAzNywgODA0MCwgODA0MywgODA0NiwgODA0OSwgODA1MiwgODA1NSwgODA1OCwgODA2MSwgODA2NCwgODA2NywgCi0gICAgODA3MCwgODA3MywgODA3NiwgODA3OSwgODA4MiwgODA4NSwgODA4OCwgODA5MSwgODA5NCwgODA5NywgODEwMCwgODEwMywgCi0gICAgODEwNiwgODEwOSwgODExMiwgODExNSwgODExOCwgODEyMSwgODEyNCwgODEyNywgODEzMCwgODEzMywgODEzNiwgODEzOSwgCi0gICAgODE0MiwgODE0NSwgODE0OCwgODE1MSwgODE1NCwgODE1NywgODE2MCwgODE2MywgODE2NiwgODE2OSwgODE3MiwgODE3NSwgCi0gICAgODE3OCwgODE4MSwgODE4NCwgODE4NywgODE5MCwgODE5MywgODE5NiwgODE5OSwgODIwMiwgODIwNSwgODIwOCwgODIxMSwgCi0gICAgODIxNCwgODIxNywgODIyMCwgODIyMywgODIyNiwgODIyOSwgODIzMiwgODIzNSwgODIzOCwgODI0MSwgODI0NCwgODI0NywgCi0gICAgODI1MCwgODI1MywgODI1NiwgODI1OSwgODI2MiwgODI2NSwgODI2OCwgODI3MSwgODI3NCwgODI3NywgODI4MCwgODI4MywgCi0gICAgODI4NiwgODI4OSwgODI5MiwgODI5NSwgODI5OCwgODMwMSwgODMwNCwgODMwNywgODMxMCwgODMxMywgODMxNywgODMyMSwgCi0gICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MCwgODM0MywgODM0NiwgODM0OSwgODM1MiwgODM1NSwgODM1OCwgODM2MSwgCi0gICAgODM2NCwgODM2NywgODM3MCwgODM3MywgODM3NiwgODM3OSwgODM4MiwgODM4NSwgODM4OCwgODM5MSwgODM5NCwgODM5NywgCi0gICAgODQwMCwgODQwMywgODQwNiwgODQwOSwgODQxMiwgODQxNSwgODQxOCwgODQyMSwgODQyNCwgODQyNywgODQzMCwgODQzMywgCi0gICAgODQzNiwgODQzOSwgODQ0MiwgODQ0NSwgODQ0OCwgODQ1MSwgODQ1NCwgODQ1NywgODQ2MCwgODQ2MywgODQ2NiwgODQ2OSwgCi0gICAgODQ3MiwgODQ3NSwgODQ3OCwgODQ4MSwgODQ4NCwgODQ4NywgODQ5MCwgODQ5MywgODQ5NiwgODQ5OSwgODUwMiwgODUwNSwgCi0gICAgODUwOCwgODUxMSwgODUxNCwgODUxNywgODUyMCwgODUyMywgODUyNiwgODUyOSwgODUzMiwgODUzNSwgODUzOCwgODU0MSwgCi0gICAgODU0NCwgODU0NywgODU1MCwgODU1MywgODU1NiwgODU1OSwgODU2MiwgODU2NSwgODU2OCwgODU3MSwgODU3NCwgODU3NywgCi0gICAgODU4MCwgODU4MywgODU4NiwgODU4OSwgODU5MiwgODU5NSwgODU5OCwgODYwMSwgODYwNCwgODYwNywgODYxMCwgODYxMywgCi0gICAgODYxNiwgODYxOSwgODYyMiwgODYyNSwgODYyOCwgODYzMSwgODYzNCwgODYzNywgODY0MCwgODY0MywgODY0NiwgODY0OSwgCi0gICAgODY1MiwgODY1NSwgODY1OCwgODY2MSwgODY2NCwgODY2NywgODY3MCwgODY3MywgODY3NiwgODY3OSwgODY4MiwgODY4NSwgCi0gICAgODY4OCwgODY5MSwgODY5NCwgODY5NywgODcwMCwgODcwMywgODcwNiwgODcwOSwgODcxMiwgODcxNSwgODcxOCwgODcyMSwgCi0gICAgODcyNCwgODcyNywgODczMCwgODczMywgODczNiwgODczOSwgODc0MiwgODc0NSwgODc0OCwgODc1MSwgODc1NCwgODc1NywgCi0gICAgODc2MCwgODc2MywgODc2NywgODc3MSwgODc3NSwgODc3OCwgODc4MSwgODc4NCwgODc4NywgODc5MCwgODc5MywgODc5NiwgCi0gICAgODc5OSwgODgwMiwgODgwNSwgODgwOCwgODgxMSwgODgxNCwgODgxNywgODgyMCwgODgyMywgODgyNiwgODgyOSwgODgzMiwgCi0gICAgODgzNSwgODgzOCwgODg0MSwgODg0NCwgODg0NywgODg1MCwgODg1MywgODg1NiwgODg1OSwgODg2MiwgODg2NSwgODg2OCwgCi0gICAgODg3MSwgODg3NCwgODg3NywgODg4MCwgODg4MywgODg4NiwgODg4OSwgODg5MiwgODg5NSwgODg5OCwgODkwMSwgODkwNCwgCi0gICAgODkwNywgODkxMCwgODkxMywgODkxNiwgODkxOSwgODkyMiwgODkyNSwgODkyOCwgODkzMSwgODkzNCwgODkzNywgODk0MCwgCi0gICAgODk0MywgODk0NiwgODk0OSwgODk1MiwgODk1NSwgODk1OCwgODk2MSwgODk2NCwgODk2NywgODk3MCwgODk3MywgODk3NiwgCi0gICAgODk3OSwgODk4MiwgODk4NSwgODk4OCwgODk5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODk5NCwgODk5OCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgNzk0MywgNzk0NSwgCisgICAgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgNzk2NywgNzk2OSwgCisgICAgNzk3MSwgNzk3MywgNzk3NSwgNzk3NywgNzk4MCwgNzk4MywgNzk4NiwgNzk4OSwgNzk5MiwgNzk5NSwgNzk5OCwgODAwMSwgCisgICAgODAwNCwgODAwNywgODAxMCwgODAxMywgODAxNiwgODAxOSwgODAyMiwgODAyNSwgODAyOCwgODAzMSwgODAzMywgODAzNSwgCisgICAgODAzNywgODAzOSwgODA0MiwgODA0NSwgODA0OCwgODA1MSwgODA1NCwgODA1NywgODA2MCwgODA2MywgODA2NiwgODA2OSwgCisgICAgODA3MiwgODA3NSwgODA3OCwgODA4MSwgODA4NCwgODA4NywgODA5MCwgODA5MywgODA5NiwgODA5OSwgODEwMiwgODEwNSwgCisgICAgODEwOCwgODExMSwgODExNCwgODExNywgODEyMCwgODEyMywgODEyNiwgODEyOSwgODEzMiwgODEzNSwgODEzOCwgODE0MSwgCisgICAgODE0NCwgODE0NywgODE1MCwgODE1MywgODE1NiwgODE1OSwgODE2MiwgODE2NSwgODE2OCwgODE3MSwgODE3NCwgODE3NywgCisgICAgODE4MCwgODE4MywgODE4NiwgODE4OSwgODE5MiwgODE5NSwgODE5OCwgODIwMSwgODIwNCwgODIwNywgODIxMCwgODIxMywgCisgICAgODIxNiwgODIxOSwgODIyMiwgODIyNSwgODIyOCwgODIzMSwgODIzNCwgODIzNywgODI0MCwgODI0MywgODI0NiwgODI0OSwgCisgICAgODI1MiwgODI1NSwgODI1OCwgODI2MSwgODI2NCwgODI2NywgODI3MCwgODI3MywgODI3NiwgODI3OSwgODI4MiwgODI4NSwgCisgICAgODI4OCwgODI5MSwgODI5NCwgODI5NywgODMwMCwgODMwMywgODMwNiwgODMwOSwgODMxMiwgODMxNSwgODMxOCwgODMyMSwgCisgICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MSwgODM0NSwgODM0OCwgODM1MSwgODM1NCwgODM1NywgODM2MCwgODM2MywgCisgICAgODM2NiwgODM2OSwgODM3MiwgODM3NSwgODM3OCwgODM4MSwgODM4NCwgODM4NywgODM5MCwgODM5MywgODM5NiwgODM5OSwgCisgICAgODQwMiwgODQwNSwgODQwOCwgODQxMSwgODQxNCwgODQxNywgODQyMCwgODQyMywgODQyNiwgODQyOSwgODQzMiwgODQzNSwgCisgICAgODQzOCwgODQ0MSwgODQ0NCwgODQ0NywgODQ1MCwgODQ1MywgODQ1NiwgODQ1OSwgODQ2MiwgODQ2NSwgODQ2OCwgODQ3MSwgCisgICAgODQ3NCwgODQ3NywgODQ4MCwgODQ4MywgODQ4NiwgODQ4OSwgODQ5MiwgODQ5NSwgODQ5OCwgODUwMSwgODUwNCwgODUwNywgCisgICAgODUxMCwgODUxMywgODUxNiwgODUxOSwgODUyMiwgODUyNSwgODUyOCwgODUzMSwgODUzNCwgODUzNywgODU0MCwgODU0MywgCisgICAgODU0NiwgODU0OSwgODU1MiwgODU1NSwgODU1OCwgODU2MSwgODU2NCwgODU2NywgODU3MCwgODU3MywgODU3NiwgODU3OSwgCisgICAgODU4MiwgODU4NSwgODU4OCwgODU5MSwgODU5NCwgODU5NywgODYwMCwgODYwMywgODYwNiwgODYwOSwgODYxMiwgODYxNSwgCisgICAgODYxOCwgODYyMSwgODYyNCwgODYyNywgODYzMCwgODYzMywgODYzNiwgODYzOSwgODY0MiwgODY0NSwgODY0OCwgODY1MSwgCisgICAgODY1NCwgODY1NywgODY2MCwgODY2MywgODY2NiwgODY2OSwgODY3MiwgODY3NSwgODY3OCwgODY4MSwgODY4NCwgODY4NywgCisgICAgODY5MCwgODY5MywgODY5NiwgODY5OSwgODcwMiwgODcwNSwgODcwOCwgODcxMSwgODcxNCwgODcxNywgODcyMCwgODcyMywgCisgICAgODcyNiwgODcyOSwgODczMiwgODczNSwgODczOCwgODc0MSwgODc0NCwgODc0NywgODc1MCwgODc1MywgODc1NiwgODc1OSwgCisgICAgODc2MiwgODc2NSwgODc2OCwgODc3MSwgODc3NSwgODc3OSwgODc4MywgODc4NiwgODc4OSwgODc5MiwgODc5NSwgODc5OCwgCisgICAgODgwMSwgODgwNCwgODgwNywgODgxMCwgODgxMywgODgxNiwgODgxOSwgODgyMiwgODgyNSwgODgyOCwgODgzMSwgODgzNCwgCisgICAgODgzNywgODg0MCwgODg0MywgODg0NiwgODg0OSwgODg1MiwgODg1NSwgODg1OCwgODg2MSwgODg2NCwgODg2NywgODg3MCwgCisgICAgODg3MywgODg3NiwgODg3OSwgODg4MiwgODg4NSwgODg4OCwgODg5MSwgODg5NCwgODg5NywgODkwMCwgODkwMywgODkwNiwgCisgICAgODkwOSwgODkxMiwgODkxNSwgODkxOCwgODkyMSwgODkyNCwgODkyNywgODkzMCwgODkzMywgODkzNiwgODkzOSwgODk0MiwgCisgICAgODk0NSwgODk0OCwgODk1MSwgODk1NCwgODk1NywgODk2MCwgODk2MywgODk2NiwgODk2OSwgODk3MiwgODk3NSwgODk3OCwgCisgICAgODk4MSwgODk4NCwgODk4NywgODk5MCwgODk5MywgODk5NiwgODk5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCiAgICAgOTAzNCwgOTAzOCwgOTA0MiwgOTA0NiwgOTA1MCwgOTA1NCwgOTA1OCwgOTA2MiwgOTA2NiwgOTA3MCwgOTA3NCwgOTA3OCwgCiAgICAgOTA4MiwgOTA4NiwgOTA5MCwgOTA5NCwgOTA5OCwgOTEwMiwgOTEwNiwgOTExMCwgOTExNCwgOTExOCwgOTEyMiwgOTEyNiwgCiAgICAgOTEzMCwgOTEzNCwgOTEzOCwgOTE0MiwgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgCiAgICAgOTE3OCwgOTE4MiwgOTE4NiwgOTE5MCwgOTE5NCwgOTE5OCwgOTIwMiwgOTIwNiwgOTIxMCwgOTIxNCwgOTIxOCwgOTIyMiwgCi0gICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgMCwgMCwgOTI1MCwgOTI1NCwgOTI1OCwgOTI2MiwgOTI2NiwgCisgICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgOTI1MCwgOTI1NCwgMCwgMCwgOTI1OCwgOTI2MiwgOTI2NiwgCiAgICAgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgOTI4NiwgOTI5MCwgOTI5NCwgOTI5OCwgOTMwMiwgOTMwNiwgOTMxMCwgOTMxNCwgCiAgICAgOTMxOCwgOTMyMiwgOTMyNiwgOTMzMCwgOTMzNCwgOTMzOCwgOTM0MiwgOTM0NiwgOTM1MCwgOTM1NCwgOTM1OCwgOTM2MiwgCiAgICAgOTM2NiwgOTM3MCwgOTM3NCwgOTM3OCwgOTM4MiwgOTM4NiwgOTM5MCwgOTM5NCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgCiAgICAgOTQxNCwgOTQxOCwgOTQyMiwgOTQyNiwgOTQzMCwgOTQzNCwgOTQzOCwgOTQ0MiwgOTQ0NiwgOTQ1MCwgOTQ1NCwgOTQ1OCwgCi0gICAgOTQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ2NiwgOTQ3MCwgOTQ3NCwgCi0gICAgOTQ3OSwgOTQ4NCwgOTQ4OSwgOTQ5NCwgOTQ5OSwgOTUwNCwgOTUwOSwgOTUxMywgOTUzMiwgOTU0MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU0NiwgOTU0OCwgOTU1MCwgOTU1MiwgCi0gICAgOTU1NCwgOTU1NiwgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgOTU3NCwgOTU3NiwgOTU3OCwgCi0gICAgOTU4MCwgOTU4MiwgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgCi0gICAgOTYwNCwgOTYwNiwgMCwgMCwgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgCi0gICAgOTYyNiwgOTYyOCwgOTYzMCwgMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgCi0gICAgOTY0OCwgOTY1MCwgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgMCwgCi0gICAgOTY3MCwgOTY3MiwgOTY3NCwgOTY3NiwgMCwgMCwgMCwgMCwgOTY3OCwgOTY4MSwgOTY4NCwgMCwgOTY4NywgMCwgOTY5MCwgCi0gICAgOTY5MywgOTY5NiwgOTY5OSwgOTcwMiwgOTcwNSwgOTcwOCwgOTcxMSwgOTcxNCwgOTcxNywgOTcyMCwgOTcyMiwgOTcyNCwgCi0gICAgOTcyNiwgOTcyOCwgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgCi0gICAgOTc1MCwgOTc1MiwgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgCi0gICAgOTc3NCwgOTc3NiwgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgCi0gICAgOTc5OCwgOTgwMCwgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgCi0gICAgOTgyMiwgOTgyNCwgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgCi0gICAgOTg0NiwgOTg0OCwgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgCi0gICAgOTg3MCwgOTg3MiwgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgCi0gICAgOTg5NCwgOTg5NiwgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgCi0gICAgOTkxOCwgOTkyMCwgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgCi0gICAgOTk0MiwgOTk0NCwgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NywgOTk2MCwgOTk2MywgOTk2NiwgOTk2OSwgCi0gICAgOTk3MiwgOTk3NSwgMCwgMCwgMCwgMCwgOTk3OCwgOTk4MCwgOTk4MiwgOTk4NCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgCi0gICAgOTk5NCwgOTk5NiwgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAKLSAgICAxMDAxNiwgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgCi0gICAgMTAwMzYsIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIAotICAgIDEwMDU2LCAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAKLSAgICAxMDA3NiwgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgCi0gICAgMTAwOTYsIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIAotICAgIDEwMTE2LCAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAKLSAgICAxMDEzNiwgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgCi0gICAgMTAxNTYsIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIAotICAgIDEwMTc2LCAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAKLSAgICAxMDE5NiwgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgCi0gICAgMTAyMTYsIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIAotICAgIDEwMjM2LCAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAKLSAgICAxMDI1NiwgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgCi0gICAgMTAyNzYsIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIAotICAgIDEwMjk2LCAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAKLSAgICAxMDMxNiwgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgCi0gICAgMTAzMzYsIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIAotICAgIDEwMzU2LCAwLCAwLCAwLCAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMTAzNjYsIDEwMzY4LCAwLCAwLCAxMDM3MCwgCi0gICAgMTAzNzIsIDEwMzc0LCAxMDM3NiwgMTAzNzgsIDEwMzgwLCAwLCAwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgCi0gICAgMTAzOTAsIDEwMzkyLCAwLCAwLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAwLCAwLCAwLCAxMDQwMCwgMTA0MDIsIDEwNDA0LCAKLSAgICAxMDQwNiwgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMCwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDEwNDIyLCAxMDQyNCwgCi0gICAgMTA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk0NjIsIDk0NjYsIDk0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NzQsIAorICAgIDk0NzgsIDk0ODIsIDk0ODcsIDk0OTIsIDk0OTcsIDk1MDIsIDk1MDcsIDk1MTIsIDk1MTcsIDk1MjEsIDk1NDAsIDk1NDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NTQsIDk1NTYsIAorICAgIDk1NTgsIDk1NjAsIDk1NjIsIDk1NjQsIDk1NjYsIDk1NjgsIDk1NzAsIDk1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NzQsIDk1NzYsIDk1NzgsIDk1ODAsIDk1ODIsIAorICAgIDk1ODQsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIDk1OTgsIDk2MDAsIDk2MDIsIDk2MDQsIDk2MDYsIAorICAgIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDAsIDAsIDk2MTYsIDk2MTgsIDk2MjAsIDk2MjIsIDk2MjQsIDk2MjYsIDk2MjgsIAorICAgIDk2MzAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDAsIDk2NDAsIDk2NDIsIDk2NDQsIDk2NDYsIDk2NDgsIDk2NTAsIAorICAgIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIDk2NjYsIDk2NjgsIDk2NzAsIDk2NzIsIDk2NzQsIAorICAgIDk2NzYsIDAsIDk2NzgsIDk2ODAsIDk2ODIsIDk2ODQsIDAsIDAsIDAsIDAsIDk2ODYsIDk2ODksIDk2OTIsIDAsIDk2OTUsIAorICAgIDAsIDk2OTgsIDk3MDEsIDk3MDQsIDk3MDcsIDk3MTAsIDk3MTMsIDk3MTYsIDk3MTksIDk3MjIsIDk3MjUsIDk3MjgsIAorICAgIDk3MzAsIDk3MzIsIDk3MzQsIDk3MzYsIDk3MzgsIDk3NDAsIDk3NDIsIDk3NDQsIDk3NDYsIDk3NDgsIDk3NTAsIDk3NTIsIAorICAgIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIDk3NjgsIDk3NzAsIDk3NzIsIDk3NzQsIDk3NzYsIAorICAgIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIDk3OTIsIDk3OTQsIDk3OTYsIDk3OTgsIDk4MDAsIAorICAgIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIDk4MTYsIDk4MTgsIDk4MjAsIDk4MjIsIDk4MjQsIAorICAgIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIDk4NDAsIDk4NDIsIDk4NDQsIDk4NDYsIDk4NDgsIAorICAgIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIDk4NjQsIDk4NjYsIDk4NjgsIDk4NzAsIDk4NzIsIAorICAgIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIDk4ODgsIDk4OTAsIDk4OTIsIDk4OTQsIDk4OTYsIAorICAgIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIDk5MTIsIDk5MTQsIDk5MTYsIDk5MTgsIDk5MjAsIAorICAgIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIDk5MzYsIDk5MzgsIDk5NDAsIDk5NDIsIDk5NDQsIAorICAgIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTYsIDk5NTgsIDk5NjAsIDk5NjIsIDk5NjUsIDk5NjgsIDk5NzEsIAorICAgIDk5NzQsIDk5NzcsIDk5ODAsIDk5ODMsIDAsIDAsIDAsIDAsIDk5ODYsIDk5ODgsIDk5OTAsIDk5OTIsIDk5OTQsIDk5OTYsIAorICAgIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgMTAwMTAsIDEwMDEyLCAxMDAxNCwgMTAwMTYsIAorICAgIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIDEwMDMwLCAxMDAzMiwgMTAwMzQsIDEwMDM2LCAKKyAgICAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAxMDA1MCwgMTAwNTIsIDEwMDU0LCAxMDA1NiwgCisgICAgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgMTAwNzAsIDEwMDcyLCAxMDA3NCwgMTAwNzYsIAorICAgIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIDEwMDkwLCAxMDA5MiwgMTAwOTQsIDEwMDk2LCAKKyAgICAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAxMDExMCwgMTAxMTIsIDEwMTE0LCAxMDExNiwgCisgICAgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgMTAxMzAsIDEwMTMyLCAxMDEzNCwgMTAxMzYsIAorICAgIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIDEwMTUwLCAxMDE1MiwgMTAxNTQsIDEwMTU2LCAKKyAgICAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAxMDE3MCwgMTAxNzIsIDEwMTc0LCAxMDE3NiwgCisgICAgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgMTAxOTAsIDEwMTkyLCAxMDE5NCwgMTAxOTYsIAorICAgIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIDEwMjEwLCAxMDIxMiwgMTAyMTQsIDEwMjE2LCAKKyAgICAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAxMDIzMCwgMTAyMzIsIDEwMjM0LCAxMDIzNiwgCisgICAgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgMTAyNTAsIDEwMjUyLCAxMDI1NCwgMTAyNTYsIAorICAgIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIDEwMjcwLCAxMDI3MiwgMTAyNzQsIDEwMjc2LCAKKyAgICAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAxMDI5MCwgMTAyOTIsIDEwMjk0LCAxMDI5NiwgCisgICAgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgMTAzMTAsIDEwMzEyLCAxMDMxNCwgMTAzMTYsIAorICAgIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIDEwMzMwLCAxMDMzMiwgMTAzMzQsIDEwMzM2LCAKKyAgICAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAxMDM1MCwgMTAzNTIsIDEwMzU0LCAxMDM1NiwgCisgICAgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDAsIDAsIDAsIDEwMzY2LCAxMDM2OCwgMTAzNzAsIDEwMzcyLCAxMDM3NCwgCisgICAgMTAzNzYsIDAsIDAsIDEwMzc4LCAxMDM4MCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgMTAzODgsIDAsIDAsIDEwMzkwLCAKKyAgICAxMDM5MiwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMTA0MDAsIDAsIDAsIDEwNDAyLCAxMDQwNCwgMTA0MDYsIDAsIDAsIDAsIAorICAgIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDEwNDIwLCAwLCAxMDQyMiwgMTA0MjQsIDEwNDI2LCAKKyAgICAxMDQyOCwgMTA0MzAsIDEwNDMyLCAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA0MjgsIDAsIDEwNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzYsIDAsIDEwNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzcsIDEwNDQwLCAxMDQ0MywgMTA0NDYsIDEwNDQ5LCAKLSAgICAxMDQ1MiwgMTA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDU4LCAxMDQ2MSwgCi0gICAgMTA0NjQsIDEwNDY3LCAxMDQ3MCwgMTA0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDc2LCAxMDQ3OCwgMTA0ODAsIDEwNDgyLCAxMDQ4NCwgMTA0ODYsIDEwNDg4LCAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAKLSAgICAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgMTA1MTAsIDEwNTEyLCAxMDUxNCwgCi0gICAgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIDEwNTMwLCAxMDUzMiwgMTA1MzQsIAotICAgIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAxMDU1MCwgMTA1NTIsIDEwNTU0LCAKLSAgICAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgMTA1NzAsIDEwNTcyLCAxMDU3NCwgCi0gICAgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIDEwNTkwLCAxMDU5MiwgMTA1OTQsIAotICAgIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAxMDYxMCwgMTA2MTIsIDEwNjE0LCAKLSAgICAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgMTA2MzAsIDEwNjMyLCAxMDYzNCwgCi0gICAgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAwLCAxMDY0NiwgMTA2NDgsIDEwNjUwLCAxMDY1MiwgMTA2NTQsIAotICAgIDEwNjU2LCAxMDY1OCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAxMDY3MCwgMTA2NzIsIDEwNjc0LCAKLSAgICAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgMTA2OTAsIDEwNjkyLCAxMDY5NCwgCi0gICAgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIDEwNzEwLCAxMDcxMiwgMTA3MTQsIAotICAgIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAxMDczMCwgMTA3MzIsIDEwNzM0LCAKLSAgICAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgMTA3NTAsIDEwNzUyLCAxMDc1NCwgCi0gICAgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIDEwNzcwLCAxMDc3MiwgMTA3NzQsIAotICAgIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDAsIDEwNzg4LCAxMDc5MCwgMCwgMCwgMTA3OTIsIAotICAgIDAsIDAsIDEwNzk0LCAxMDc5NiwgMCwgMCwgMTA3OTgsIDEwODAwLCAxMDgwMiwgMTA4MDQsIDAsIDEwODA2LCAxMDgwOCwgCi0gICAgMTA4MTAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAxMDgyMCwgMTA4MjIsIDEwODI0LCAxMDgyNiwgMTA4MjgsIDAsIAotICAgIDEwODMwLCAwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAxMDg0NCwgMCwgMTA4NDYsIAotICAgIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDEwODYwLCAxMDg2MiwgMTA4NjQsIDEwODY2LCAKLSAgICAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgMTA4ODIsIDEwODg0LCAxMDg4NiwgCi0gICAgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIDEwOTAyLCAxMDkwNCwgMTA5MDYsIAotICAgIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAxMDkyMiwgMTA5MjQsIDEwOTI2LCAKLSAgICAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgCi0gICAgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIDEwOTYyLCAxMDk2NCwgMTA5NjYsIAotICAgIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAwLCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAxMDk4MiwgMCwgMCwgMTA5ODQsIAotICAgIDEwOTg2LCAxMDk4OCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDEwOTk4LCAwLCAxMTAwMCwgMTEwMDIsIDExMDA0LCAKLSAgICAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgMTEwMjAsIDExMDIyLCAxMTAyNCwgCi0gICAgMTEwMjYsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIDExMDQwLCAxMTA0MiwgMTEwNDQsIAotICAgIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAxMTA2MCwgMTEwNjIsIDExMDY0LCAKLSAgICAxMTA2NiwgMTEwNjgsIDAsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAwLCAxMTA3OCwgMTEwODAsIDExMDgyLCAKLSAgICAxMTA4NCwgMTEwODYsIDAsIDExMDg4LCAwLCAwLCAwLCAxMTA5MCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgMTEwOTgsIAotICAgIDExMTAwLCAxMTEwMiwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAxMTExNCwgMTExMTYsIDExMTE4LCAKLSAgICAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgMTExMzQsIDExMTM2LCAxMTEzOCwgCi0gICAgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIDExMTU0LCAxMTE1NiwgMTExNTgsIAotICAgIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAxMTE3NCwgMTExNzYsIDExMTc4LCAKLSAgICAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgMTExOTQsIDExMTk2LCAxMTE5OCwgCi0gICAgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIDExMjE0LCAxMTIxNiwgMTEyMTgsIAotICAgIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAxMTIzNCwgMTEyMzYsIDExMjM4LCAKLSAgICAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgMTEyNTQsIDExMjU2LCAxMTI1OCwgCi0gICAgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIDExMjc0LCAxMTI3NiwgMTEyNzgsIAotICAgIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAxMTI5NCwgMTEyOTYsIDExMjk4LCAKLSAgICAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgMTEzMTQsIDExMzE2LCAxMTMxOCwgCi0gICAgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIDExMzM0LCAxMTMzNiwgMTEzMzgsIAotICAgIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAxMTM1NCwgMTEzNTYsIDExMzU4LCAKLSAgICAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgMTEzNzQsIDExMzc2LCAxMTM3OCwgCi0gICAgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIDExMzk0LCAxMTM5NiwgMTEzOTgsIAotICAgIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAxMTQxNCwgMTE0MTYsIDExNDE4LCAKLSAgICAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgMTE0MzQsIDExNDM2LCAxMTQzOCwgCi0gICAgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIDExNDU0LCAxMTQ1NiwgMTE0NTgsIAotICAgIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAxMTQ3NCwgMTE0NzYsIDExNDc4LCAKLSAgICAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgMTE0OTQsIDExNDk2LCAxMTQ5OCwgCi0gICAgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIDExNTE0LCAxMTUxNiwgMTE1MTgsIAotICAgIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAxMTUzNCwgMTE1MzYsIDExNTM4LCAKLSAgICAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgMTE1NTQsIDExNTU2LCAxMTU1OCwgCi0gICAgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIDExNTc0LCAxMTU3NiwgMTE1NzgsIAotICAgIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAxMTU5NCwgMTE1OTYsIDExNTk4LCAKLSAgICAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgMTE2MTQsIDExNjE2LCAxMTYxOCwgCi0gICAgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIDExNjM0LCAxMTYzNiwgMTE2MzgsIAotICAgIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAxMTY1NCwgMTE2NTYsIDExNjU4LCAKLSAgICAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgMTE2NzQsIDExNjc2LCAxMTY3OCwgCi0gICAgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIDExNjk0LCAxMTY5NiwgMTE2OTgsIAotICAgIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAxMTcxNCwgMTE3MTYsIDExNzE4LCAKLSAgICAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgMTE3MzQsIDExNzM2LCAxMTczOCwgCi0gICAgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIDExNzU0LCAxMTc1NiwgMTE3NTgsIAotICAgIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAxMTc3NCwgMTE3NzYsIDExNzc4LCAKLSAgICAxMTc4MCwgMTE3ODIsIDAsIDAsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgMTE3OTQsIDExNzk2LCAKLSAgICAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgMTE4MTIsIDExODE0LCAxMTgxNiwgCi0gICAgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIDExODMyLCAxMTgzNCwgMTE4MzYsIAotICAgIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAxMTg1MiwgMTE4NTQsIDExODU2LCAKLSAgICAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgMTE4NzIsIDExODc0LCAxMTg3NiwgCi0gICAgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIDExODkyLCAxMTg5NCwgMTE4OTYsIAotICAgIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAxMTkxMiwgMTE5MTQsIDExOTE2LCAKLSAgICAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgMTE5MzIsIDExOTM0LCAxMTkzNiwgCi0gICAgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIDExOTUyLCAxMTk1NCwgMTE5NTYsIAotICAgIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAxMTk3MiwgMTE5NzQsIDExOTc2LCAKLSAgICAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgMTE5OTIsIDExOTk0LCAxMTk5NiwgCi0gICAgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIDEyMDEyLCAxMjAxNCwgMTIwMTYsIAotICAgIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAxMjAzMiwgMTIwMzQsIDEyMDM2LCAKLSAgICAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgMTIwNTIsIDEyMDU0LCAxMjA1NiwgCi0gICAgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIDEyMDcyLCAxMjA3NCwgMTIwNzYsIAotICAgIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAxMjA5MiwgMTIwOTQsIDEyMDk2LCAKLSAgICAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgMTIxMTIsIDEyMTE0LCAxMjExNiwgCi0gICAgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIDEyMTMyLCAxMjEzNCwgMTIxMzYsIAotICAgIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAxMjE1MiwgMTIxNTQsIDEyMTU2LCAKLSAgICAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgMTIxNzIsIDEyMTc0LCAxMjE3NiwgCi0gICAgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIDEyMTkyLCAxMjE5NCwgMTIxOTYsIAotICAgIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAxMjIxMiwgMTIyMTQsIDEyMjE2LCAKLSAgICAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgMTIyMzIsIDEyMjM0LCAxMjIzNiwgCi0gICAgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIDEyMjUyLCAxMjI1NCwgMTIyNTYsIAotICAgIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAxMjI3MiwgMTIyNzQsIDEyMjc2LCAKLSAgICAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgMTIyOTIsIDEyMjk0LCAxMjI5NiwgCi0gICAgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIDEyMzEyLCAxMjMxNCwgMTIzMTYsIAotICAgIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAxMjMzMiwgMTIzMzQsIDEyMzM2LCAKLSAgICAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgMTIzNTIsIDEyMzU0LCAxMjM1NiwgCi0gICAgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAwLCAwLCAxMjM2OCwgMTIzNzAsIDEyMzcyLCAxMjM3NCwgCi0gICAgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIDEyMzkwLCAxMjM5MiwgMTIzOTQsIAotICAgIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAxMjQxMCwgMTI0MTIsIDEyNDE0LCAKLSAgICAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgMTI0MzAsIDEyNDMyLCAxMjQzNCwgCi0gICAgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIAotICAgIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAxMjQ3MSwgMTI0NzQsIDEyNDc3LCAKLSAgICAxMjQ4MCwgMTI0ODMsIDEyNDg2LCAxMjQ4OSwgMTI0OTIsIDEyNDk1LCAxMjQ5OCwgMCwgMCwgMCwgMCwgMCwgMTI1MDEsIAotICAgIDEyNTA1LCAxMjUwOSwgMTI1MTMsIDEyNTE3LCAxMjUyMSwgMTI1MjUsIDEyNTI5LCAxMjUzMywgMTI1MzcsIDEyNTQxLCAKLSAgICAxMjU0NSwgMTI1NDksIDEyNTUzLCAxMjU1NywgMTI1NjEsIDEyNTY1LCAxMjU2OSwgMTI1NzMsIDEyNTc3LCAxMjU4MSwgCi0gICAgMTI1ODUsIDEyNTg5LCAxMjU5MywgMTI1OTcsIDEyNjAxLCAxMjYwNSwgMTI2MDksIDEyNjExLCAxMjYxMywgMTI2MTYsIDAsIAotICAgIDEyNjE5LCAxMjYyMSwgMTI2MjMsIDEyNjI1LCAxMjYyNywgMTI2MjksIDEyNjMxLCAxMjYzMywgMTI2MzUsIDEyNjM3LCAKLSAgICAxMjYzOSwgMTI2NDEsIDEyNjQzLCAxMjY0NSwgMTI2NDcsIDEyNjQ5LCAxMjY1MSwgMTI2NTMsIDEyNjU1LCAxMjY1NywgCi0gICAgMTI2NTksIDEyNjYxLCAxMjY2MywgMTI2NjUsIDEyNjY3LCAxMjY2OSwgMTI2NzEsIDEyNjc0LCAxMjY3NywgMTI2ODAsIAotICAgIDEyNjgzLCAxMjY4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2OTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjkzLCAxMjY5NiwgMTI2OTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzAxLCAxMjcwMywgMTI3MDUsIDEyNzA3LCAxMjcwOSwgMTI3MTEsIAotICAgIDEyNzEzLCAxMjcxNSwgMTI3MTcsIDEyNzE5LCAxMjcyMSwgMTI3MjMsIDEyNzI1LCAxMjcyNywgMTI3MjksIDEyNzMxLCAKLSAgICAxMjczMywgMTI3MzUsIDEyNzM3LCAxMjczOSwgMTI3NDEsIDEyNzQzLCAxMjc0NSwgMTI3NDcsIDEyNzQ5LCAxMjc1MSwgCi0gICAgMTI3NTMsIDEyNzU1LCAxMjc1NywgMTI3NTksIDEyNzYxLCAxMjc2MywgMTI3NjUsIDEyNzY3LCAxMjc2OSwgMTI3NzEsIAotICAgIDEyNzczLCAxMjc3NSwgMTI3NzcsIDEyNzc5LCAxMjc4MSwgMTI3ODMsIDEyNzg1LCAwLCAwLCAwLCAwLCAwLCAxMjc4NywgCi0gICAgMTI3OTEsIDEyNzk1LCAxMjc5OSwgMTI4MDMsIDEyODA3LCAxMjgxMSwgMTI4MTUsIDEyODE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjgyMywgMTI4MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODI3LCAxMjgyOSwgMTI4MzEsIDEyODMzLCAxMjgzNSwgCi0gICAgMTI4MzcsIDEyODM5LCAxMjg0MSwgMTI4NDMsIDEyODQ1LCAxMjg0NywgMTI4NDksIDEyODUxLCAxMjg1MywgMTI4NTUsIAotICAgIDEyODU3LCAxMjg1OSwgMTI4NjEsIDEyODYzLCAxMjg2NSwgMTI4NjcsIDEyODY5LCAxMjg3MSwgMTI4NzMsIDEyODc1LCAKLSAgICAxMjg3NywgMTI4NzksIDEyODgxLCAxMjg4MywgMTI4ODUsIDEyODg3LCAxMjg4OSwgMTI4OTEsIDEyODkzLCAxMjg5NSwgCi0gICAgMTI4OTcsIDEyODk5LCAxMjkwMSwgMTI5MDMsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTExLCAxMjkxMywgMTI5MTUsIAotICAgIDEyOTE3LCAxMjkxOSwgMTI5MjEsIDEyOTIzLCAxMjkyNSwgMTI5MjcsIDEyOTI5LCAxMjkzMSwgMTI5MzMsIDEyOTM1LCAKLSAgICAxMjkzNywgMTI5MzksIDEyOTQxLCAxMjk0MywgMTI5NDUsIDEyOTQ3LCAxMjk0OSwgMTI5NTEsIDEyOTUzLCAxMjk1NSwgCi0gICAgMTI5NTcsIDEyOTU5LCAxMjk2MSwgMTI5NjMsIDEyOTY1LCAxMjk2NywgMTI5NjksIDEyOTcxLCAxMjk3MywgMTI5NzUsIAotICAgIDEyOTc3LCAxMjk3OSwgMTI5ODEsIDEyOTgzLCAxMjk4NSwgMTI5ODcsIDEyOTg5LCAxMjk5MSwgMTI5OTMsIDEyOTk1LCAKLSAgICAxMjk5NywgMTI5OTksIDEzMDAxLCAxMzAwMywgMTMwMDUsIDEzMDA3LCAxMzAwOSwgMTMwMTEsIDEzMDEzLCAxMzAxNSwgCi0gICAgMTMwMTcsIDEzMDE5LCAxMzAyMSwgMTMwMjMsIDEzMDI1LCAxMzAyNywgMTMwMjksIDEzMDMxLCAxMzAzMywgMTMwMzUsIAotICAgIDEzMDM3LCAxMzAzOSwgMTMwNDEsIDEzMDQzLCAxMzA0NSwgMTMwNDcsIDEzMDQ5LCAxMzA1MSwgMTMwNTMsIDEzMDU1LCAKLSAgICAxMzA1NywgMTMwNTksIDEzMDYxLCAxMzA2MywgMTMwNjUsIDEzMDY3LCAxMzA2OSwgMTMwNzEsIDEzMDczLCAxMzA3NSwgCi0gICAgMTMwNzcsIDEzMDc5LCAxMzA4MSwgMTMwODMsIDEzMDg1LCAxMzA4NywgMTMwODksIDEzMDkxLCAxMzA5MywgMTMwOTUsIAotICAgIDEzMDk3LCAxMzA5OSwgMTMxMDEsIDEzMTAzLCAxMzEwNSwgMTMxMDcsIDEzMTA5LCAxMzExMSwgMTMxMTMsIDEzMTE1LCAKLSAgICAxMzExNywgMTMxMTksIDEzMTIxLCAxMzEyMywgMTMxMjUsIDEzMTI3LCAxMzEyOSwgMTMxMzEsIDEzMTMzLCAxMzEzNSwgCi0gICAgMTMxMzcsIDEzMTM5LCAxMzE0MSwgMTMxNDMsIDEzMTQ1LCAxMzE0NywgMTMxNDksIDEzMTUxLCAxMzE1MywgMTMxNTUsIAotICAgIDEzMTU3LCAxMzE1OSwgMTMxNjEsIDEzMTYzLCAxMzE2NSwgMTMxNjcsIDEzMTY5LCAxMzE3MSwgMTMxNzMsIDEzMTc1LCAKLSAgICAxMzE3NywgMTMxNzksIDEzMTgxLCAxMzE4MywgMTMxODUsIDEzMTg3LCAxMzE4OSwgMTMxOTEsIDEzMTkzLCAxMzE5NSwgCi0gICAgMTMxOTcsIDEzMTk5LCAxMzIwMSwgMTMyMDMsIDEzMjA1LCAxMzIwNywgMTMyMDksIDEzMjExLCAxMzIxMywgMTMyMTUsIAotICAgIDEzMjE3LCAxMzIxOSwgMTMyMjEsIDEzMjIzLCAxMzIyNSwgMTMyMjcsIDEzMjI5LCAxMzIzMSwgMTMyMzMsIDEzMjM1LCAKLSAgICAxMzIzNywgMTMyMzksIDEzMjQxLCAxMzI0MywgMTMyNDUsIDEzMjQ3LCAxMzI0OSwgMTMyNTEsIDEzMjUzLCAxMzI1NSwgCi0gICAgMTMyNTcsIDEzMjU5LCAxMzI2MSwgMTMyNjMsIDEzMjY1LCAxMzI2NywgMTMyNjksIDEzMjcxLCAxMzI3MywgMTMyNzUsIAotICAgIDEzMjc3LCAxMzI3OSwgMTMyODEsIDEzMjgzLCAxMzI4NSwgMTMyODcsIDEzMjg5LCAxMzI5MSwgMTMyOTMsIDEzMjk1LCAKLSAgICAxMzI5NywgMTMyOTksIDEzMzAxLCAxMzMwMywgMTMzMDUsIDEzMzA3LCAxMzMwOSwgMTMzMTEsIDEzMzEzLCAxMzMxNSwgCi0gICAgMTMzMTcsIDEzMzE5LCAxMzMyMSwgMTMzMjMsIDEzMzI1LCAxMzMyNywgMTMzMjksIDEzMzMxLCAxMzMzMywgMTMzMzUsIAotICAgIDEzMzM3LCAxMzMzOSwgMTMzNDEsIDEzMzQzLCAxMzM0NSwgMTMzNDcsIDEzMzQ5LCAxMzM1MSwgMTMzNTMsIDEzMzU1LCAKLSAgICAxMzM1NywgMTMzNTksIDEzMzYxLCAxMzM2MywgMTMzNjUsIDEzMzY3LCAxMzM2OSwgMTMzNzEsIDEzMzczLCAxMzM3NSwgCi0gICAgMTMzNzcsIDEzMzc5LCAxMzM4MSwgMTMzODMsIDEzMzg1LCAxMzM4NywgMTMzODksIDEzMzkxLCAxMzM5MywgMTMzOTUsIAotICAgIDEzMzk3LCAxMzM5OSwgMTM0MDEsIDEzNDAzLCAxMzQwNSwgMTM0MDcsIDEzNDA5LCAxMzQxMSwgMTM0MTMsIDEzNDE1LCAKLSAgICAxMzQxNywgMTM0MTksIDEzNDIxLCAxMzQyMywgMTM0MjUsIDEzNDI3LCAxMzQyOSwgMTM0MzEsIDEzNDMzLCAxMzQzNSwgCi0gICAgMTM0MzcsIDEzNDM5LCAxMzQ0MSwgMTM0NDMsIDEzNDQ1LCAxMzQ0NywgMTM0NDksIDEzNDUxLCAxMzQ1MywgMTM0NTUsIAotICAgIDEzNDU3LCAxMzQ1OSwgMTM0NjEsIDEzNDYzLCAxMzQ2NSwgMTM0NjcsIDEzNDY5LCAxMzQ3MSwgMTM0NzMsIDEzNDc1LCAKLSAgICAxMzQ3NywgMTM0NzksIDEzNDgxLCAxMzQ4MywgMTM0ODUsIDEzNDg3LCAxMzQ4OSwgMTM0OTEsIDEzNDkzLCAxMzQ5NSwgCi0gICAgMTM0OTcsIDEzNDk5LCAxMzUwMSwgMTM1MDMsIDEzNTA1LCAxMzUwNywgMTM1MDksIDEzNTExLCAxMzUxMywgMTM1MTUsIAotICAgIDEzNTE3LCAxMzUxOSwgMTM1MjEsIDEzNTIzLCAxMzUyNSwgMTM1MjcsIDEzNTI5LCAxMzUzMSwgMTM1MzMsIDEzNTM1LCAKLSAgICAxMzUzNywgMTM1MzksIDEzNTQxLCAxMzU0MywgMTM1NDUsIDEzNTQ3LCAxMzU0OSwgMTM1NTEsIDEzNTUzLCAxMzU1NSwgCi0gICAgMTM1NTcsIDEzNTU5LCAxMzU2MSwgMTM1NjMsIDEzNTY1LCAxMzU2NywgMTM1NjksIDEzNTcxLCAxMzU3MywgMTM1NzUsIAotICAgIDEzNTc3LCAxMzU3OSwgMTM1ODEsIDEzNTgzLCAxMzU4NSwgMTM1ODcsIDEzNTg5LCAxMzU5MSwgMTM1OTMsIDEzNTk1LCAKLSAgICAxMzU5NywgMTM1OTksIDEzNjAxLCAxMzYwMywgMTM2MDUsIDEzNjA3LCAxMzYwOSwgMTM2MTEsIDEzNjEzLCAxMzYxNSwgCi0gICAgMTM2MTcsIDEzNjE5LCAxMzYyMSwgMTM2MjMsIDEzNjI1LCAxMzYyNywgMTM2MjksIDEzNjMxLCAxMzYzMywgMTM2MzUsIAotICAgIDEzNjM3LCAxMzYzOSwgMTM2NDEsIDEzNjQzLCAxMzY0NSwgMTM2NDcsIDEzNjQ5LCAxMzY1MSwgMTM2NTMsIDEzNjU1LCAKLSAgICAxMzY1NywgMTM2NTksIDEzNjYxLCAxMzY2MywgMTM2NjUsIDEzNjY3LCAxMzY2OSwgMTM2NzEsIDEzNjczLCAxMzY3NSwgCi0gICAgMTM2NzcsIDEzNjc5LCAxMzY4MSwgMTM2ODMsIDEzNjg1LCAxMzY4NywgMTM2ODksIDEzNjkxLCAxMzY5MywgMTM2OTUsIAotICAgIDEzNjk3LCAxMzY5OSwgMTM3MDEsIDEzNzAzLCAxMzcwNSwgMTM3MDcsIDEzNzA5LCAxMzcxMSwgMTM3MTMsIDEzNzE1LCAKLSAgICAxMzcxNywgMTM3MTksIDEzNzIxLCAxMzcyMywgMTM3MjUsIDEzNzI3LCAxMzcyOSwgMTM3MzEsIDEzNzMzLCAxMzczNSwgCi0gICAgMTM3MzcsIDEzNzM5LCAxMzc0MSwgMTM3NDMsIDEzNzQ1LCAxMzc0NywgMTM3NDksIDEzNzUxLCAxMzc1MywgMTM3NTUsIAotICAgIDEzNzU3LCAxMzc1OSwgMTM3NjEsIDEzNzYzLCAxMzc2NSwgMTM3NjcsIDEzNzY5LCAxMzc3MSwgMTM3NzMsIDEzNzc1LCAKLSAgICAxMzc3NywgMTM3NzksIDEzNzgxLCAxMzc4MywgMTM3ODUsIDEzNzg3LCAxMzc4OSwgMTM3OTEsIDEzNzkzLCAxMzc5NSwgCi0gICAgMTM3OTcsIDEzNzk5LCAxMzgwMSwgMTM4MDMsIDEzODA1LCAxMzgwNywgMTM4MDksIDEzODExLCAxMzgxMywgMTM4MTUsIAotICAgIDEzODE3LCAxMzgxOSwgMTM4MjEsIDEzODIzLCAxMzgyNSwgMTM4MjcsIDEzODI5LCAxMzgzMSwgMTM4MzMsIDEzODM1LCAKLSAgICAxMzgzNywgMTM4MzksIDEzODQxLCAxMzg0MywgMTM4NDUsIDEzODQ3LCAxMzg0OSwgMTM4NTEsIDEzODUzLCAxMzg1NSwgCi0gICAgMTM4NTcsIDEzODU5LCAxMzg2MSwgMTM4NjMsIDEzODY1LCAxMzg2NywgMTM4NjksIDEzODcxLCAxMzg3MywgMTM4NzUsIAotICAgIDEzODc3LCAxMzg3OSwgMTM4ODEsIDEzODgzLCAxMzg4NSwgMTM4ODcsIDEzODg5LCAxMzg5MSwgMTM4OTMsIDEzODk1LCAKLSAgICAxMzg5NywgMTM4OTksIDEzOTAxLCAxMzkwMywgMTM5MDUsIDEzOTA3LCAxMzkwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NDUsIDEwNDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTQ2NDEsNDAyICs0NTM5LDYyMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDUxLCAxMDQ1NCwgMTA0NTcsIDEwNDYwLCAxMDQ2MywgCisgICAgMTA0NjYsIDEwNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ3MiwgMTA0NzUsIAorICAgIDEwNDc4LCAxMDQ4MSwgMTA0ODQsIDEwNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgCisgICAgMTA1MTAsIDEwNTEyLCAxMDUxNCwgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIAorICAgIDEwNTMwLCAxMDUzMiwgMTA1MzQsIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAKKyAgICAxMDU1MCwgMTA1NTIsIDEwNTU0LCAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgCisgICAgMTA1NzAsIDEwNTcyLCAxMDU3NCwgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIAorICAgIDEwNTkwLCAxMDU5MiwgMTA1OTQsIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAKKyAgICAxMDYxMCwgMTA2MTIsIDEwNjE0LCAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgCisgICAgMTA2MzAsIDEwNjMyLCAxMDYzNCwgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAxMDY0NiwgMTA2NDgsIAorICAgIDEwNjUwLCAxMDY1MiwgMTA2NTQsIDEwNjU2LCAxMDY1OCwgMCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAKKyAgICAxMDY3MCwgMTA2NzIsIDEwNjc0LCAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgCisgICAgMTA2OTAsIDEwNjkyLCAxMDY5NCwgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIAorICAgIDEwNzEwLCAxMDcxMiwgMTA3MTQsIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAKKyAgICAxMDczMCwgMTA3MzIsIDEwNzM0LCAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgCisgICAgMTA3NTAsIDEwNzUyLCAxMDc1NCwgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIAorICAgIDEwNzcwLCAxMDc3MiwgMTA3NzQsIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDEwNzg4LCAKKyAgICAxMDc5MCwgMTA3OTIsIDEwNzk0LCAxMDc5NiwgMTA3OTgsIDEwODAwLCAwLCAxMDgwMiwgMTA4MDQsIDAsIDAsIDEwODA2LCAKKyAgICAwLCAwLCAxMDgwOCwgMTA4MTAsIDAsIDAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAwLCAxMDgyMCwgMTA4MjIsIAorICAgIDEwODI0LCAxMDgyNiwgMTA4MjgsIDEwODMwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAwLCAKKyAgICAxMDg0NCwgMCwgMTA4NDYsIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDAsIDEwODYwLCAKKyAgICAxMDg2MiwgMTA4NjQsIDEwODY2LCAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgCisgICAgMTA4ODIsIDEwODg0LCAxMDg4NiwgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIAorICAgIDEwOTAyLCAxMDkwNCwgMTA5MDYsIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAKKyAgICAxMDkyMiwgMTA5MjQsIDEwOTI2LCAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgCisgICAgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIAorICAgIDEwOTYyLCAxMDk2NCwgMTA5NjYsIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAKKyAgICAxMDk4MiwgMTA5ODQsIDEwOTg2LCAxMDk4OCwgMCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDAsIDAsIDEwOTk4LCAKKyAgICAxMTAwMCwgMTEwMDIsIDExMDA0LCAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgCisgICAgMTEwMjAsIDExMDIyLCAxMTAyNCwgMTEwMjYsIDAsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIAorICAgIDExMDQwLCAxMTA0MiwgMTEwNDQsIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAKKyAgICAxMTA2MCwgMTEwNjIsIDExMDY0LCAxMTA2NiwgMTEwNjgsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAxMTA3OCwgCisgICAgMTEwODAsIDExMDgyLCAwLCAxMTA4NCwgMTEwODYsIDExMDg4LCAxMTA5MCwgMCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgCisgICAgMTEwOTgsIDExMTAwLCAwLCAxMTEwMiwgMCwgMCwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAKKyAgICAxMTExNCwgMTExMTYsIDAsIDExMTE4LCAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgCisgICAgMTExMzQsIDExMTM2LCAxMTEzOCwgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIAorICAgIDExMTU0LCAxMTE1NiwgMTExNTgsIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAKKyAgICAxMTE3NCwgMTExNzYsIDExMTc4LCAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgCisgICAgMTExOTQsIDExMTk2LCAxMTE5OCwgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIAorICAgIDExMjE0LCAxMTIxNiwgMTEyMTgsIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAKKyAgICAxMTIzNCwgMTEyMzYsIDExMjM4LCAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgCisgICAgMTEyNTQsIDExMjU2LCAxMTI1OCwgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIAorICAgIDExMjc0LCAxMTI3NiwgMTEyNzgsIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAKKyAgICAxMTI5NCwgMTEyOTYsIDExMjk4LCAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgCisgICAgMTEzMTQsIDExMzE2LCAxMTMxOCwgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIAorICAgIDExMzM0LCAxMTMzNiwgMTEzMzgsIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAKKyAgICAxMTM1NCwgMTEzNTYsIDExMzU4LCAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgCisgICAgMTEzNzQsIDExMzc2LCAxMTM3OCwgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIAorICAgIDExMzk0LCAxMTM5NiwgMTEzOTgsIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAKKyAgICAxMTQxNCwgMTE0MTYsIDExNDE4LCAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgCisgICAgMTE0MzQsIDExNDM2LCAxMTQzOCwgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIAorICAgIDExNDU0LCAxMTQ1NiwgMTE0NTgsIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAKKyAgICAxMTQ3NCwgMTE0NzYsIDExNDc4LCAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgCisgICAgMTE0OTQsIDExNDk2LCAxMTQ5OCwgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIAorICAgIDExNTE0LCAxMTUxNiwgMTE1MTgsIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAKKyAgICAxMTUzNCwgMTE1MzYsIDExNTM4LCAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgCisgICAgMTE1NTQsIDExNTU2LCAxMTU1OCwgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIAorICAgIDExNTc0LCAxMTU3NiwgMTE1NzgsIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAKKyAgICAxMTU5NCwgMTE1OTYsIDExNTk4LCAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgCisgICAgMTE2MTQsIDExNjE2LCAxMTYxOCwgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIAorICAgIDExNjM0LCAxMTYzNiwgMTE2MzgsIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAKKyAgICAxMTY1NCwgMTE2NTYsIDExNjU4LCAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgCisgICAgMTE2NzQsIDExNjc2LCAxMTY3OCwgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIAorICAgIDExNjk0LCAxMTY5NiwgMTE2OTgsIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAKKyAgICAxMTcxNCwgMTE3MTYsIDExNzE4LCAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgCisgICAgMTE3MzQsIDExNzM2LCAxMTczOCwgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIAorICAgIDExNzU0LCAxMTc1NiwgMTE3NTgsIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAKKyAgICAxMTc3NCwgMTE3NzYsIDExNzc4LCAxMTc4MCwgMTE3ODIsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgCisgICAgMTE3OTQsIDExNzk2LCAwLCAwLCAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgCisgICAgMTE4MTIsIDExODE0LCAxMTgxNiwgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIAorICAgIDExODMyLCAxMTgzNCwgMTE4MzYsIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAKKyAgICAxMTg1MiwgMTE4NTQsIDExODU2LCAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgCisgICAgMTE4NzIsIDExODc0LCAxMTg3NiwgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIAorICAgIDExODkyLCAxMTg5NCwgMTE4OTYsIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAKKyAgICAxMTkxMiwgMTE5MTQsIDExOTE2LCAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgCisgICAgMTE5MzIsIDExOTM0LCAxMTkzNiwgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIAorICAgIDExOTUyLCAxMTk1NCwgMTE5NTYsIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAKKyAgICAxMTk3MiwgMTE5NzQsIDExOTc2LCAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgCisgICAgMTE5OTIsIDExOTk0LCAxMTk5NiwgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIAorICAgIDEyMDEyLCAxMjAxNCwgMTIwMTYsIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAKKyAgICAxMjAzMiwgMTIwMzQsIDEyMDM2LCAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgCisgICAgMTIwNTIsIDEyMDU0LCAxMjA1NiwgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIAorICAgIDEyMDcyLCAxMjA3NCwgMTIwNzYsIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAKKyAgICAxMjA5MiwgMTIwOTQsIDEyMDk2LCAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgCisgICAgMTIxMTIsIDEyMTE0LCAxMjExNiwgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIAorICAgIDEyMTMyLCAxMjEzNCwgMTIxMzYsIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAKKyAgICAxMjE1MiwgMTIxNTQsIDEyMTU2LCAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgCisgICAgMTIxNzIsIDEyMTc0LCAxMjE3NiwgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIAorICAgIDEyMTkyLCAxMjE5NCwgMTIxOTYsIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAKKyAgICAxMjIxMiwgMTIyMTQsIDEyMjE2LCAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgCisgICAgMTIyMzIsIDEyMjM0LCAxMjIzNiwgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIAorICAgIDEyMjUyLCAxMjI1NCwgMTIyNTYsIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAKKyAgICAxMjI3MiwgMTIyNzQsIDEyMjc2LCAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgCisgICAgMTIyOTIsIDEyMjk0LCAxMjI5NiwgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIAorICAgIDEyMzEyLCAxMjMxNCwgMTIzMTYsIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAKKyAgICAxMjMzMiwgMTIzMzQsIDEyMzM2LCAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgCisgICAgMTIzNTIsIDEyMzU0LCAxMjM1NiwgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAxMjM2OCwgMTIzNzAsIAorICAgIDEyMzcyLCAxMjM3NCwgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMCwgMCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIAorICAgIDEyMzkwLCAxMjM5MiwgMTIzOTQsIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAKKyAgICAxMjQxMCwgMTI0MTIsIDEyNDE0LCAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgCisgICAgMTI0MzAsIDEyNDMyLCAxMjQzNCwgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIAorICAgIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAKKyAgICAxMjQ3MCwgMTI0NzIsIDEyNDc0LCAxMjQ3NiwgMTI0NzgsIDEyNDgwLCAxMjQ4MiwgMTI0ODQsIDEyNDg2LCAxMjQ4OCwgMCwgCisgICAgMTI0OTAsIDEyNDkyLCAxMjQ5NCwgMTI0OTYsIDEyNDk4LCAxMjUwMCwgMTI1MDIsIDEyNTA0LCAxMjUwNiwgMTI1MDgsIAorICAgIDEyNTEwLCAxMjUxMiwgMTI1MTQsIDEyNTE2LCAxMjUxOCwgMTI1MjAsIDEyNTIyLCAxMjUyNCwgMTI1MjYsIDEyNTI4LCAKKyAgICAxMjUzMCwgMTI1MzIsIDEyNTM0LCAxMjUzNiwgMTI1MzgsIDEyNTQwLCAxMjU0MiwgMCwgMTI1NDQsIDEyNTQ2LCAwLCAKKyAgICAxMjU0OCwgMCwgMCwgMTI1NTAsIDAsIDEyNTUyLCAxMjU1NCwgMTI1NTYsIDEyNTU4LCAxMjU2MCwgMTI1NjIsIDEyNTY0LCAKKyAgICAxMjU2NiwgMTI1NjgsIDEyNTcwLCAwLCAxMjU3MiwgMTI1NzQsIDEyNTc2LCAxMjU3OCwgMCwgMTI1ODAsIDAsIDEyNTgyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjU4NCwgMCwgMCwgMCwgMCwgMTI1ODYsIDAsIDEyNTg4LCAwLCAxMjU5MCwgMCwgMTI1OTIsIAorICAgIDEyNTk0LCAxMjU5NiwgMCwgMTI1OTgsIDEyNjAwLCAwLCAxMjYwMiwgMCwgMCwgMTI2MDQsIDAsIDEyNjA2LCAwLCAxMjYwOCwgCisgICAgMCwgMTI2MTAsIDAsIDEyNjEyLCAwLCAxMjYxNCwgMTI2MTYsIDAsIDEyNjE4LCAwLCAwLCAxMjYyMCwgMTI2MjIsIDEyNjI0LCAKKyAgICAxMjYyNiwgMCwgMTI2MjgsIDEyNjMwLCAxMjYzMiwgMTI2MzQsIDEyNjM2LCAxMjYzOCwgMTI2NDAsIDAsIDEyNjQyLCAKKyAgICAxMjY0NCwgMTI2NDYsIDEyNjQ4LCAwLCAxMjY1MCwgMTI2NTIsIDEyNjU0LCAxMjY1NiwgMCwgMTI2NTgsIDAsIDEyNjYwLCAKKyAgICAxMjY2MiwgMTI2NjQsIDEyNjY2LCAxMjY2OCwgMTI2NzAsIDEyNjcyLCAxMjY3NCwgMTI2NzYsIDEyNjc4LCAwLCAxMjY4MCwgCisgICAgMTI2ODIsIDEyNjg0LCAxMjY4NiwgMTI2ODgsIDEyNjkwLCAxMjY5MiwgMTI2OTQsIDEyNjk2LCAxMjY5OCwgMTI3MDAsIAorICAgIDEyNzAyLCAxMjcwNCwgMTI3MDYsIDEyNzA4LCAxMjcxMCwgMTI3MTIsIDAsIDAsIDAsIDAsIDAsIDEyNzE0LCAxMjcxNiwgCisgICAgMTI3MTgsIDAsIDEyNzIwLCAxMjcyMiwgMTI3MjQsIDEyNzI2LCAxMjcyOCwgMCwgMTI3MzAsIDEyNzMyLCAxMjczNCwgCisgICAgMTI3MzYsIDEyNzM4LCAxMjc0MCwgMTI3NDIsIDEyNzQ0LCAxMjc0NiwgMTI3NDgsIDEyNzUwLCAxMjc1MiwgMTI3NTQsIAorICAgIDEyNzU2LCAxMjc1OCwgMTI3NjAsIDEyNzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjc2NCwgMTI3NjcsIDEyNzcwLCAxMjc3MywgMTI3NzYsIDEyNzc5LCAxMjc4MiwgMTI3ODUsIAorICAgIDEyNzg4LCAxMjc5MSwgMTI3OTQsIDAsIDAsIDAsIDAsIDAsIDEyNzk3LCAxMjgwMSwgMTI4MDUsIDEyODA5LCAxMjgxMywgCisgICAgMTI4MTcsIDEyODIxLCAxMjgyNSwgMTI4MjksIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIAorICAgIDEyODU3LCAxMjg2MSwgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAKKyAgICAxMjg5NywgMTI5MDEsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTEyLCAwLCAxMjkxNSwgMTI5MTcsIDEyOTE5LCAxMjkyMSwgCisgICAgMTI5MjMsIDEyOTI1LCAxMjkyNywgMTI5MjksIDEyOTMxLCAxMjkzMywgMTI5MzUsIDEyOTM3LCAxMjkzOSwgMTI5NDEsIAorICAgIDEyOTQzLCAxMjk0NSwgMTI5NDcsIDEyOTQ5LCAxMjk1MSwgMTI5NTMsIDEyOTU1LCAxMjk1NywgMTI5NTksIDEyOTYxLCAKKyAgICAxMjk2MywgMTI5NjUsIDEyOTY3LCAxMjk3MCwgMTI5NzMsIDEyOTc2LCAxMjk3OSwgMTI5ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2LCAxMjk4OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyOTk1LCAxMjk5OCwgMTMwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzMDAzLCAxMzAwNSwgMTMwMDcsIDEzMDA5LCAxMzAxMSwgMTMwMTMsIDEzMDE1LCAxMzAxNywgMTMwMTksIDEzMDIxLCAKKyAgICAxMzAyMywgMTMwMjUsIDEzMDI3LCAxMzAyOSwgMTMwMzEsIDEzMDMzLCAxMzAzNSwgMTMwMzcsIDEzMDM5LCAxMzA0MSwgCisgICAgMTMwNDMsIDEzMDQ1LCAxMzA0NywgMTMwNDksIDEzMDUxLCAxMzA1MywgMTMwNTUsIDEzMDU3LCAxMzA1OSwgMTMwNjEsIAorICAgIDEzMDYzLCAxMzA2NSwgMTMwNjcsIDEzMDY5LCAxMzA3MSwgMTMwNzMsIDEzMDc1LCAxMzA3NywgMTMwNzksIDEzMDgxLCAKKyAgICAxMzA4MywgMTMwODUsIDEzMDg3LCAwLCAwLCAwLCAwLCAwLCAxMzA4OSwgMTMwOTMsIDEzMDk3LCAxMzEwMSwgMTMxMDUsIAorICAgIDEzMTA5LCAxMzExMywgMTMxMTcsIDEzMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEyNSwgMTMxMjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzMTI5LCAxMzEzMSwgMTMxMzMsIDEzMTM1LCAxMzEzNywgMTMxMzksIDEzMTQxLCAxMzE0MywgMTMxNDUsIAorICAgIDEzMTQ3LCAxMzE0OSwgMTMxNTEsIDEzMTUzLCAxMzE1NSwgMTMxNTcsIDEzMTU5LCAxMzE2MSwgMTMxNjMsIDEzMTY1LCAKKyAgICAxMzE2NywgMTMxNjksIDEzMTcxLCAxMzE3MywgMTMxNzUsIDEzMTc3LCAxMzE3OSwgMTMxODEsIDEzMTgzLCAxMzE4NSwgCisgICAgMTMxODcsIDEzMTg5LCAxMzE5MSwgMTMxOTMsIDEzMTk1LCAxMzE5NywgMTMxOTksIDEzMjAxLCAxMzIwMywgMTMyMDUsIAorICAgIDEzMjA3LCAxMzIwOSwgMTMyMTEsIDEzMjEzLCAxMzIxNSwgMTMyMTcsIDEzMjE5LCAxMzIyMSwgMTMyMjMsIDEzMjI1LCAKKyAgICAxMzIyNywgMTMyMjksIDEzMjMxLCAxMzIzMywgMTMyMzUsIDEzMjM3LCAxMzIzOSwgMTMyNDEsIDEzMjQzLCAxMzI0NSwgCisgICAgMTMyNDcsIDEzMjQ5LCAxMzI1MSwgMTMyNTMsIDEzMjU1LCAxMzI1NywgMTMyNTksIDEzMjYxLCAxMzI2MywgMTMyNjUsIAorICAgIDEzMjY3LCAxMzI2OSwgMTMyNzEsIDEzMjczLCAxMzI3NSwgMTMyNzcsIDEzMjc5LCAxMzI4MSwgMTMyODMsIDEzMjg1LCAKKyAgICAxMzI4NywgMTMyODksIDEzMjkxLCAxMzI5MywgMTMyOTUsIDEzMjk3LCAxMzI5OSwgMTMzMDEsIDEzMzAzLCAxMzMwNSwgCisgICAgMTMzMDcsIDEzMzA5LCAxMzMxMSwgMTMzMTMsIDEzMzE1LCAxMzMxNywgMTMzMTksIDEzMzIxLCAxMzMyMywgMTMzMjUsIAorICAgIDEzMzI3LCAxMzMyOSwgMTMzMzEsIDEzMzMzLCAxMzMzNSwgMTMzMzcsIDEzMzM5LCAxMzM0MSwgMTMzNDMsIDEzMzQ1LCAKKyAgICAxMzM0NywgMTMzNDksIDEzMzUxLCAxMzM1MywgMTMzNTUsIDEzMzU3LCAxMzM1OSwgMTMzNjEsIDEzMzYzLCAxMzM2NSwgCisgICAgMTMzNjcsIDEzMzY5LCAxMzM3MSwgMTMzNzMsIDEzMzc1LCAxMzM3NywgMTMzNzksIDEzMzgxLCAxMzM4MywgMTMzODUsIAorICAgIDEzMzg3LCAxMzM4OSwgMTMzOTEsIDEzMzkzLCAxMzM5NSwgMTMzOTcsIDEzMzk5LCAxMzQwMSwgMTM0MDMsIDEzNDA1LCAKKyAgICAxMzQwNywgMTM0MDksIDEzNDExLCAxMzQxMywgMTM0MTUsIDEzNDE3LCAxMzQxOSwgMTM0MjEsIDEzNDIzLCAxMzQyNSwgCisgICAgMTM0MjcsIDEzNDI5LCAxMzQzMSwgMTM0MzMsIDEzNDM1LCAxMzQzNywgMTM0MzksIDEzNDQxLCAxMzQ0MywgMTM0NDUsIAorICAgIDEzNDQ3LCAxMzQ0OSwgMTM0NTEsIDEzNDUzLCAxMzQ1NSwgMTM0NTcsIDEzNDU5LCAxMzQ2MSwgMTM0NjMsIDEzNDY1LCAKKyAgICAxMzQ2NywgMTM0NjksIDEzNDcxLCAxMzQ3MywgMTM0NzUsIDEzNDc3LCAxMzQ3OSwgMTM0ODEsIDEzNDgzLCAxMzQ4NSwgCisgICAgMTM0ODcsIDEzNDg5LCAxMzQ5MSwgMTM0OTMsIDEzNDk1LCAxMzQ5NywgMTM0OTksIDEzNTAxLCAxMzUwMywgMTM1MDUsIAorICAgIDEzNTA3LCAxMzUwOSwgMTM1MTEsIDEzNTEzLCAxMzUxNSwgMTM1MTcsIDEzNTE5LCAxMzUyMSwgMTM1MjMsIDEzNTI1LCAKKyAgICAxMzUyNywgMTM1MjksIDEzNTMxLCAxMzUzMywgMTM1MzUsIDEzNTM3LCAxMzUzOSwgMTM1NDEsIDEzNTQzLCAxMzU0NSwgCisgICAgMTM1NDcsIDEzNTQ5LCAxMzU1MSwgMTM1NTMsIDEzNTU1LCAxMzU1NywgMTM1NTksIDEzNTYxLCAxMzU2MywgMTM1NjUsIAorICAgIDEzNTY3LCAxMzU2OSwgMTM1NzEsIDEzNTczLCAxMzU3NSwgMTM1NzcsIDEzNTc5LCAxMzU4MSwgMTM1ODMsIDEzNTg1LCAKKyAgICAxMzU4NywgMTM1ODksIDEzNTkxLCAxMzU5MywgMTM1OTUsIDEzNTk3LCAxMzU5OSwgMTM2MDEsIDEzNjAzLCAxMzYwNSwgCisgICAgMTM2MDcsIDEzNjA5LCAxMzYxMSwgMTM2MTMsIDEzNjE1LCAxMzYxNywgMTM2MTksIDEzNjIxLCAxMzYyMywgMTM2MjUsIAorICAgIDEzNjI3LCAxMzYyOSwgMTM2MzEsIDEzNjMzLCAxMzYzNSwgMTM2MzcsIDEzNjM5LCAxMzY0MSwgMTM2NDMsIDEzNjQ1LCAKKyAgICAxMzY0NywgMTM2NDksIDEzNjUxLCAxMzY1MywgMTM2NTUsIDEzNjU3LCAxMzY1OSwgMTM2NjEsIDEzNjYzLCAxMzY2NSwgCisgICAgMTM2NjcsIDEzNjY5LCAxMzY3MSwgMTM2NzMsIDEzNjc1LCAxMzY3NywgMTM2NzksIDEzNjgxLCAxMzY4MywgMTM2ODUsIAorICAgIDEzNjg3LCAxMzY4OSwgMTM2OTEsIDEzNjkzLCAxMzY5NSwgMTM2OTcsIDEzNjk5LCAxMzcwMSwgMTM3MDMsIDEzNzA1LCAKKyAgICAxMzcwNywgMTM3MDksIDEzNzExLCAxMzcxMywgMTM3MTUsIDEzNzE3LCAxMzcxOSwgMTM3MjEsIDEzNzIzLCAxMzcyNSwgCisgICAgMTM3MjcsIDEzNzI5LCAxMzczMSwgMTM3MzMsIDEzNzM1LCAxMzczNywgMTM3MzksIDEzNzQxLCAxMzc0MywgMTM3NDUsIAorICAgIDEzNzQ3LCAxMzc0OSwgMTM3NTEsIDEzNzUzLCAxMzc1NSwgMTM3NTcsIDEzNzU5LCAxMzc2MSwgMTM3NjMsIDEzNzY1LCAKKyAgICAxMzc2NywgMTM3NjksIDEzNzcxLCAxMzc3MywgMTM3NzUsIDEzNzc3LCAxMzc3OSwgMTM3ODEsIDEzNzgzLCAxMzc4NSwgCisgICAgMTM3ODcsIDEzNzg5LCAxMzc5MSwgMTM3OTMsIDEzNzk1LCAxMzc5NywgMTM3OTksIDEzODAxLCAxMzgwMywgMTM4MDUsIAorICAgIDEzODA3LCAxMzgwOSwgMTM4MTEsIDEzODEzLCAxMzgxNSwgMTM4MTcsIDEzODE5LCAxMzgyMSwgMTM4MjMsIDEzODI1LCAKKyAgICAxMzgyNywgMTM4MjksIDEzODMxLCAxMzgzMywgMTM4MzUsIDEzODM3LCAxMzgzOSwgMTM4NDEsIDEzODQzLCAxMzg0NSwgCisgICAgMTM4NDcsIDEzODQ5LCAxMzg1MSwgMTM4NTMsIDEzODU1LCAxMzg1NywgMTM4NTksIDEzODYxLCAxMzg2MywgMTM4NjUsIAorICAgIDEzODY3LCAxMzg2OSwgMTM4NzEsIDEzODczLCAxMzg3NSwgMTM4NzcsIDEzODc5LCAxMzg4MSwgMTM4ODMsIDEzODg1LCAKKyAgICAxMzg4NywgMTM4ODksIDEzODkxLCAxMzg5MywgMTM4OTUsIDEzODk3LCAxMzg5OSwgMTM5MDEsIDEzOTAzLCAxMzkwNSwgCisgICAgMTM5MDcsIDEzOTA5LCAxMzkxMSwgMTM5MTMsIDEzOTE1LCAxMzkxNywgMTM5MTksIDEzOTIxLCAxMzkyMywgMTM5MjUsIAorICAgIDEzOTI3LCAxMzkyOSwgMTM5MzEsIDEzOTMzLCAxMzkzNSwgMTM5MzcsIDEzOTM5LCAxMzk0MSwgMTM5NDMsIDEzOTQ1LCAKKyAgICAxMzk0NywgMTM5NDksIDEzOTUxLCAxMzk1MywgMTM5NTUsIDEzOTU3LCAxMzk1OSwgMTM5NjEsIDEzOTYzLCAxMzk2NSwgCisgICAgMTM5NjcsIDEzOTY5LCAxMzk3MSwgMTM5NzMsIDEzOTc1LCAxMzk3NywgMTM5NzksIDEzOTgxLCAxMzk4MywgMTM5ODUsIAorICAgIDEzOTg3LCAxMzk4OSwgMTM5OTEsIDEzOTkzLCAxMzk5NSwgMTM5OTcsIDEzOTk5LCAxNDAwMSwgMTQwMDMsIDE0MDA1LCAKKyAgICAxNDAwNywgMTQwMDksIDE0MDExLCAxNDAxMywgMTQwMTUsIDE0MDE3LCAxNDAxOSwgMTQwMjEsIDE0MDIzLCAxNDAyNSwgCisgICAgMTQwMjcsIDE0MDI5LCAxNDAzMSwgMTQwMzMsIDE0MDM1LCAxNDAzNywgMTQwMzksIDE0MDQxLCAxNDA0MywgMTQwNDUsIAorICAgIDE0MDQ3LCAxNDA0OSwgMTQwNTEsIDE0MDUzLCAxNDA1NSwgMTQwNTcsIDE0MDU5LCAxNDA2MSwgMTQwNjMsIDE0MDY1LCAKKyAgICAxNDA2NywgMTQwNjksIDE0MDcxLCAxNDA3MywgMTQwNzUsIDE0MDc3LCAxNDA3OSwgMTQwODEsIDE0MDgzLCAxNDA4NSwgCisgICAgMTQwODcsIDE0MDg5LCAxNDA5MSwgMTQwOTMsIDE0MDk1LCAxNDA5NywgMTQwOTksIDE0MTAxLCAxNDEwMywgMTQxMDUsIAorICAgIDE0MTA3LCAxNDEwOSwgMTQxMTEsIDE0MTEzLCAxNDExNSwgMTQxMTcsIDE0MTE5LCAxNDEyMSwgMTQxMjMsIDE0MTI1LCAKKyAgICAxNDEyNywgMTQxMjksIDE0MTMxLCAxNDEzMywgMTQxMzUsIDE0MTM3LCAxNDEzOSwgMTQxNDEsIDE0MTQzLCAxNDE0NSwgCisgICAgMTQxNDcsIDE0MTQ5LCAxNDE1MSwgMTQxNTMsIDE0MTU1LCAxNDE1NywgMTQxNTksIDE0MTYxLCAxNDE2MywgMTQxNjUsIAorICAgIDE0MTY3LCAxNDE2OSwgMTQxNzEsIDE0MTczLCAxNDE3NSwgMTQxNzcsIDE0MTc5LCAxNDE4MSwgMTQxODMsIDE0MTg1LCAKKyAgICAxNDE4NywgMTQxODksIDE0MTkxLCAxNDE5MywgMTQxOTUsIDE0MTk3LCAxNDE5OSwgMTQyMDEsIDE0MjAzLCAxNDIwNSwgCisgICAgMTQyMDcsIDE0MjA5LCAxNDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KICNkZWZpbmUgQ09NUF9TSElGVCAyCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgY29tcF9pbmRleFtdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIDYsIDcsIDgsIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAxMSwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAxNCwgCi0gICAgMTUsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMiwgMzMsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAKLSAgICA1MCwgMCwgNTEsIDUyLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDU1LCA1NiwgNTcsIDU4LCA1OSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjAsIDYxLCAwLCAwLCA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMsIDY0LCA2NSwgMCwgCi0gICAgNjYsIDY3LCA2OCwgMCwgMCwgMCwgMCwgMCwgMCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc2LCAwLCA3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc5LCAwLCA4MCwgODEsIDgyLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQsIDg1LCA4NiwgMCwgODcsIDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4OSwgOTAsIDAsIDkxLCA5MiwgOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgCi0gICAgMTA0LCAwLCAwLCAxMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA3LCAxMDgsIDEwOSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTEsIDExMiwgCi0gICAgMCwgMTEzLCAxMTQsIDAsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyLCAwLCAwLCAxMjMsIDAsIDEyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1LCAKLSAgICAxMjYsIDEyNywgMTI4LCAwLCAxMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMTMxLCAxMzIsIDEzMywgCi0gICAgMTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAwLCAKLSAgICAxNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIAotICAgIDAsIDE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAwLCAxNjgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2OSwgMCwgMCwgMTcwLCAxNzEsIDE3MiwgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNzQsIDE3NSwgMCwgMCwgMTc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzcsIDE3OCwgMTc5LCAxODAsIDAsIDE4MSwgCi0gICAgMTgyLCAxODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAwLCAxODksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5MCwgMTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTIsIDE5MywgMTk0LCAKLSAgICAxOTUsIDE5NiwgMTk3LCAxOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OSwgMjAwLCAyMDEsIDAsIDIwMiwgMjAzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNywgMCwgMCwgMCwgCi0gICAgMjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTksIDIyMCwgMjIxLCAyMjIsIDAsIDIyMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjUsIDIyNiwgMjI3LCAwLCAKLSAgICAyMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyOSwgMjMwLCAyMzEsIDAsIDIzMiwgMCwgMjMzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMzQsIDIzNSwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzOCwgMjM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ1LCAyNDYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjQ4LCAyNDksIDI1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUxLCAyNTIsIDI1MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NiwgMjU3LCAwLCAyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI1OSwgMjYwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjY2LCAyNjcsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDI3MSwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzMsIDI3NCwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4LCAyNzksIAotICAgIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAyODIsIDI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjg0LCAyODUsIDI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODgsIDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMSwgMzAyLCAzMDMsIDAsIDAsIDMwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzA1LCAzMDYsIDMwNywgMCwgMzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDksIAotICAgIDMxMCwgMzExLCAwLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgMzE0LCAwLCAzMTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzI2LCAzMjcsIDAsIDMyOCwgMzI5LCAwLCAwLCAzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMSwgMCwgCi0gICAgMCwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzMsIDMzNCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAzMzYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMzNywgMzM4LCAzMzksIDAsIDM0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAKLSAgICAzNDIsIDM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNDUsIDM0NiwgMzQ3LCAwLCAzNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OSwgMCwgMCwgMCwgCi0gICAgMzUwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAzNTQsIDM1NSwgMzU2LCAwLCAzNTcsIDAsIAotICAgIDAsIDM1OCwgMzU5LCAwLCAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDM2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzYyLCAwLCAwLCAzNjMsIDM2NCwgMCwgMCwgMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNjYsIDM2NywgMCwgMzY4LCAwLCAwLCAKLSAgICAwLCAzNjksIDAsIDAsIDAsIDAsIDAsIDM3MCwgMzcxLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAzNzUsIDM3NiwgMzc3LCAzNzgsIDAsIDAsIAotICAgIDM3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMzgwLCAwLCAwLCAzODEsIDAsIDAsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMzgzLCAKLSAgICAzODQsIDAsIDAsIDAsIDAsIDAsIDM4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAzODcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAzOTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzkyLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAzOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzOTksIDQwMCwgNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA0LCAKLSAgICA0MDUsIDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCA0MTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDQxOCwgNDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCA0MjMsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDU1LCA0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgNiwgNywgOCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDExLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIAorICAgIDE0LCAxNSwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxOCwgMCwgMTksIDIwLCAyMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMyLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzQsIDM1LCAzNiwgMCwgMzcsIDM4LCAzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCAKKyAgICA0NSwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgMCwgNDksIDAsIDUwLCA1MSwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCA1NCwgMCwgNTUsIDU2LCA1NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDU5LCAwLCAwLCA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEsIDYyLCAKKyAgICA2MywgMCwgNjQsIDY1LCA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzMsIDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NSwgNzYsIDc3LCAKKyAgICA3OCwgNzksIDgwLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgzLCA4NCwgMCwgODUsIDg2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4NywgODgsIDAsIDg5LCA5MCwgOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyLCA5MywgOTQsIAorICAgIDk1LCA5NiwgOTcsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMTAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDEsIDEwMiwgMCwgMCwgMTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA2LCAxMDcsIDAsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA5LCAxMTAsIDExMSwgMCwgMTEyLCAwLCAxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNCwgMTE1LCAxMTYsIAorICAgIDExNywgMTE4LCAxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMCwgMCwgMCwgMTIxLCAwLCAxMjIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMywgMTI0LCAxMjUsIDAsIDAsIDEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKKyAgICAxMjgsIDAsIDEyOSwgMTMwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAorICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDAsIDE0MSwgMTQyLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ1LCAxNDYsIDAsIDE0NywgCisgICAgMTQ4LCAxNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTU3LCAwLCAxNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1OSwgMCwgMTYwLCAKKyAgICAwLCAxNjEsIDE2MiwgMTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDE2NSwgMCwgMTY2LCAxNjcsIDE2OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTY5LCAxNzAsIDAsIDAsIDE3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcyLCAKKyAgICAxNzMsIDE3NCwgMCwgMTc1LCAxNzYsIDE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIAorICAgIDE4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTkzLCAxOTQsIDE5NSwgCisgICAgMCwgMTk2LCAxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OCwgMTk5LCAwLCAyMDAsIDIwMSwgMjAyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIxMCwgMCwgMCwgMCwgMjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTIsIDIxMywgMjE0LCAwLCAyMTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE3LCAKKyAgICAyMTgsIDIxOSwgMCwgMjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjEsIDIyMiwgMjIzLCAwLCAyMjQsIDAsIAorICAgIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIyOCwgMCwgMjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyLCAyMzMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjM1LCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDUsIAorICAgIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTEsIDI1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDI1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTcsIDAsIAorICAgIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU5LCAyNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNjYsIDAsIDI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAwLCAyNjksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjgzLCAwLCAyODQsIDAsIDI4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg2LCAwLCAyODcsIDAsIAorICAgIDI4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5LCAwLCAyOTAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjkyLCAwLCAyOTMsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDUsIDMwNiwgMCwgMzA3LCAKKyAgICAwLCAwLCAwLCAzMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOSwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMTEsIDAsIDAsIDMxMiwgMCwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNSwgMCwgMzE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDMyMSwgMCwgMzIyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDAsIDAsIDMyNCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzI4LCAzMjksIDAsIDMzMCwgMCwgMCwgMCwgMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzIsIDAsIDAsIAorICAgIDMzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM0LCAwLCAwLCAzMzUsIDAsIDAsIDAsIDMzNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzM3LCAzMzgsIDAsIDMzOSwgMCwgMCwgMCwgMzQwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIAorICAgIDM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNDQsIDM0NSwgMCwgMzQ2LCAwLCAwLCAwLCAzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OCwgMCwgMCwgMzQ5LCAKKyAgICAwLCAwLCAwLCAzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxLCAzNjIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjUsIDM2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OSwgMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzc2LCAzNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODAsIAorICAgIDM4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NCwgMzg1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDA5LCA0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNCwgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MTksIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAKKyAgICAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQyLCA0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAKLSAgICA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAKLSAgICA1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDUxMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTMyLCA1MzMsIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDU0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIDAsIDAsIDAsIDAsIDAsIDU0NiwgCi0gICAgNTQ3LCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1OCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgNTc3LCA1NzgsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDUyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgxLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzOSwgNjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MCwgNjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjUsIDY2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA2NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2OSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYzMywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvbXBfZGF0YVtdID0gewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDAsIDg4MDAsIDAsIDAsIDg4MTUsIDAsIDAsIDAsIDE5MiwgMTkzLCAKLSAgICAxOTQsIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIAotICAgIDAsIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgMjYyLCAKLSAgICAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAxOTksIDAsIDAsIDAsIDc2OTAsIDAsIDAsIDAsIDAsIAotICAgIDI3MCwgMCwgMCwgMCwgMCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgMCwgMCwgMCwgCi0gICAgMjAwLCAyMDEsIDIwMiwgNzg2OCwgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAwLCAwLCAKLSAgICAwLCA3ODY0LCAwLCAwLCAwLCA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgMCwgNzcxMCwgMCwgNTAwLCAyODQsIDAsIAotICAgIDc3MTIsIDI4NiwgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDI5MCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCA3NzE0LCAKLSAgICA3NzE4LCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIDc3MjIsIDAsIDAsIAotICAgIDIwNCwgMjA1LCAyMDYsIDI5NiwgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCA0NjMsIDUyMCwgNTIyLCAwLCAwLCAKLSAgICAwLCA3ODgyLCAwLCAwLCAwLCAwLCAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDAsIDMwOCwgMCwgNzcyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDg4LCAwLCA3NzMwLCAwLCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDc3MzIsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgCi0gICAgMzE3LCAwLCAwLCAwLCAwLCAwLCA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDc3NDIsIDAsIDAsIDAsIDAsIDc3NDQsIDAsIDAsIDc3NDYsIDAsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIAotICAgIDAsIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAKLSAgICAwLCA0MTYsIDc4ODQsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgNzc2NCwgNzc2NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzQwLCAwLCAwLCAwLCAwLCA3NzY4LCAzNDQsIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDAsIDAsIAotICAgIDAsIDAsIDc3NzQsIDAsIDM0NiwgMzQ4LCAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIAotICAgIDUzNiwgMzUwLCAwLCAwLCAwLCA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCAKLSAgICA3NzkyLCAwLCAwLCA3NzkwLCAwLCAwLCAwLCAwLCAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIAotICAgIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgCi0gICAgNzc5NiwgNzgwNCwgMCwgMCwgMCwgMCwgMCwgNzgwNiwgMCwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCA3ODEyLCAKLSAgICAwLCA3ODE2LCAwLCAwLCAwLCA3ODE4LCA3ODIwLCAwLCAwLCAwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCAKLSAgICA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIDc5MjQsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgMzc5LCAzODEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4MjYsIDAsIDAsIDAsIDAsIDc4MjgsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjU3LCAyNTksIDU1MSwgCi0gICAgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIDc2ODEsIDAsIDAsIDI2MSwgMCwgCi0gICAgMCwgNzY4MywgMCwgMCwgNzY4NSwgMCwgMCwgMCwgMCwgNzY4NywgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjUsIDAsIDAsIDAsIAotICAgIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAwLCAwLCAwLCAwLCAyMzEsIDAsIDAsIDAsIDc2OTEsIDI3MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgNzY5NSwgMjMyLCAyMzMsIDIzNCwgNzg2OSwgMjc1LCAKLSAgICAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgNTE5LCAwLCAwLCAwLCA3ODY1LCAwLCAwLCAwLCA1NTMsIAotICAgIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgMCwgNzcxMSwgMCwgMCwgMCwgMCwgMCwgNTAxLCAyODUsIDAsIDc3MTMsIDI4NywgCi0gICAgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIDI5MSwgMCwgMCwgMCwgMjkzLCAwLCAwLCAwLCA3NzE1LCAKLSAgICA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIDc3MjMsIDAsIAotICAgIDc4MzAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCA1MjEsIDUyMywgMCwgCi0gICAgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAwLCAzMDksIDAsIDAsIDAsIDAsIDQ5NiwgCi0gICAgMCwgMCwgMCwgMCwgNzcyOSwgMCwgNDg5LCAwLCAwLCAwLCAwLCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDc3MzMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMxNCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIDAsIDc3NDEsIDAsIDAsIAotICAgIDc3MzksIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMzI0LCAwLCAKLSAgICAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAwLCAwLCAKLSAgICA3NzUzLCAwLCAwLCAwLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCAKLSAgICA0NjYsIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDQ5MSwgMCwgMCwgMCwgMCwgMCwgNzc2NSwgMCwgMCwgMCwgMCwgCi0gICAgNzc2NywgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAKLSAgICAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAKLSAgICAzNTMsIDAsIDc3NzksIDAsIDAsIDUzNywgMzUxLCAwLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAwLCAwLCAwLCAyNDksIDI1MCwgCi0gICAgMjUxLCAzNjEsIDM2MywgMzY1LCAwLCAyNTIsIDc5MTEsIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIAotICAgIDc5MDksIDc3OTUsIDAsIDAsIDAsIDM3MSwgNzc5OSwgMCwgNzc5NywgMCwgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzgwOSwgNzgxMSwgMzczLCAwLCAwLCAwLCA3ODE1LCA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAKLSAgICAwLCAwLCA3ODE5LCA3ODIxLCAwLCAwLCAwLCA3OTIzLCAyNTMsIDM3NSwgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIAotICAgIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDAsIDM3OCwgNzgyNSwgMCwgMCwgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIAotICAgIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIDAsIDAsIDAsIDAsIDgxNzMsIDkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgODEyOSwgMCwgCi0gICAgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgMCwgMCwgMCwgMCwgNzg0OCwgMCwgMCwgNDc4LCAwLCAwLCAwLCA1MDYsIDAsIDAsIAotICAgIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCAwLCA3Njg4LCAwLCA3ODcyLCA3ODcwLCAwLCA3ODc2LCAwLCAwLCAwLCAwLCA3ODc0LCAKLSAgICAwLCAwLCAwLCA3NzI2LCAwLCAwLCAwLCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAwLCAwLCAwLCAwLCA3ODkyLCAwLCAKLSAgICAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgNTEwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCA0NzMsIDAsIDAsIDAsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIDAsIDAsIAotICAgIDAsIDAsIDc4NDksIDAsIDAsIDQ3OSwgMCwgMCwgMCwgNTA3LCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgMCwgNzY4OSwgCi0gICAgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgMCwgMCwgMCwgMCwgNzg3NSwgMCwgMCwgMCwgNzcyNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzg5MSwgNzg4OSwgMCwgNzg5NSwgMCwgMCwgMCwgMCwgNzg5MywgMCwgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAwLCAKLSAgICA3NzU5LCAwLCAwLCAwLCA1NTUsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgCi0gICAgMCwgNDc0LCAwLCAwLCAwLCA3ODU2LCA3ODU0LCAwLCA3ODYwLCAwLCAwLCAwLCAwLCA3ODU4LCAwLCAwLCA3ODU3LCA3ODU1LCAKLSAgICAwLCA3ODYxLCAwLCAwLCAwLCAwLCA3ODU5LCAwLCAwLCA3NzAwLCA3NzAyLCAwLCAwLCAwLCAwLCAwLCA3NzAxLCA3NzAzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NzYwLCA3NzYyLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCAwLCA3NzgwLCAwLCAwLCA3NzgxLCAwLCAKLSAgICAwLCA3NzgyLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzgzLCAwLCA3ODAwLCAwLCAwLCA3ODAxLCAwLCAwLCAwLCAwLCA3ODAyLCAKLSAgICAwLCAwLCA3ODAzLCAwLCAwLCAwLCAwLCAwLCA3ODM1LCAwLCAwLCAwLCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAwLCAwLCAKLSAgICAwLCAwLCA3OTAyLCA3OTA2LCAwLCAwLCAwLCAwLCAwLCA3OTAxLCA3ODk5LCAwLCA3OTA1LCAwLCAwLCAwLCAwLCA3OTAzLCAKLSAgICAwLCAwLCAwLCAwLCA3OTA3LCAwLCA3OTE0LCA3OTEyLCAwLCA3OTE4LCAwLCAwLCAwLCAwLCA3OTE2LCAwLCAwLCAwLCAwLCAKLSAgICA3OTIwLCAwLCA3OTE1LCA3OTEzLCAwLCA3OTE5LCA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCAwLCA0OTQsIDAsIAotICAgIDAsIDAsIDQ5MiwgMCwgMCwgNDkzLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgNzcwOCwgMCwgCi0gICAgMCwgNzcwOSwgMCwgNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDQ5NSwgMCwgMCwgMCwgODEyMiwgOTAyLCAwLCAwLCAKLSAgICA4MTIxLCA4MTIwLCAwLCAwLCAwLCAwLCA3OTQ0LCA3OTQ1LCAwLCAwLCAwLCAwLCAwLCA4MTI0LCAwLCA4MTM2LCA5MDQsIDAsIAotICAgIDAsIDAsIDAsIDc5NjAsIDc5NjEsIDAsIDAsIDAsIDgxMzgsIDkwNSwgMCwgMCwgMCwgMCwgNzk3NiwgNzk3NywgMCwgODE0MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCA4MTUyLCAwLCA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDAsIAotICAgIDAsIDAsIDgxODQsIDkwOCwgMCwgMCwgMCwgMCwgODAwOCwgODAwOSwgMCwgMCwgMCwgMCwgMCwgMCwgODE3MiwgMCwgMCwgMCwgCi0gICAgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDAsIDAsIDAsIDgxODYsIDkxMSwgCi0gICAgODA0MCwgODA0MSwgMCwgMCwgMCwgMCwgMCwgODE4OCwgMCwgMCwgODExNiwgMCwgMCwgODEzMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCAwLCAwLCAwLCAwLCA3OTM2LCA3OTM3LCAwLCAwLCAwLCAwLCA4MTE4LCAKLSAgICA4MTE1LCAwLCAwLCAwLCAwLCAwLCA4MDUwLCA5NDEsIDc5NTIsIDc5NTMsIDAsIDAsIDAsIDgwNTIsIDk0MiwgMCwgMCwgMCwgCi0gICAgMCwgNzk2OCwgNzk2OSwgMCwgMCwgMCwgMCwgODEzNCwgODEzMSwgMCwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCAKLSAgICA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIDgxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgMCwgMCwgMCwgMCwgCi0gICAgODAwMCwgODAwMSwgMCwgODE2NCwgODE2NSwgMCwgMCwgMCwgODA1OCwgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgwMTYsIDgwMTcsIDAsIDAsIDAsIDAsIDgxNjYsIDAsIDAsIDgwNjAsIDk3NCwgMCwgMCwgMCwgCi0gICAgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgMCwgMCwgMCwgODE0NiwgOTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTUxLCAwLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDgxODAsIDAsIDAsIDk3OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTgwLCAwLCAwLCAxMDMxLCAwLCAwLCAwLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAwLCAwLCAwLCAxMDI3LCAwLCAxMDI0LCAKLSAgICAwLCAwLCAwLCAwLCAxMjM4LCAwLCAxMDI1LCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAxMjQ2LCAwLCAwLCAwLCAxMDM3LCAwLCAKLSAgICAwLCAwLCAxMjUwLCAxMDQ5LCAwLCAxMjUyLCAwLCAwLCAwLCAwLCAxMDM2LCAwLCAwLCAwLCAwLCAxMjU0LCAwLCAwLCAwLCAKLSAgICAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAxMjY2LCAwLCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyLCAKLSAgICAwLCAwLCAxMjYwLCAwLCAwLCAwLCAwLCAxMjMzLCAwLCAxMjM1LCAwLCAwLCAwLCAwLCAxMTA3LCAwLCAxMTA0LCAwLCAwLCAKLSAgICAwLCAwLCAxMjM5LCAwLCAxMTA1LCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAxMjQ3LCAwLCAwLCAwLCAxMTE3LCAwLCAwLCAwLCAKLSAgICAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAwLCAwLCAwLCAxMTE2LCAwLCAwLCAwLCAwLCAxMjU1LCAwLCAwLCAwLCAxMjYzLCAKLSAgICAxMTE4LCAwLCAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjczLCAwLCAwLCAKLSAgICAxMjYxLCAwLCAwLCAxMTExLCAwLCAwLCAwLCAxMTQyLCAwLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAwLCAxMjQyLCAwLCAwLCAKLSAgICAxMjQzLCAwLCAwLCAxMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjU5LCAwLCAxNTcwLCAxNTcxLCAxNTczLCAwLCAxNTcyLCAKLSAgICAwLCAwLCAxNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMwLCAwLCAwLCAxNzQ3LCAwLCAwLCAxNzI4LCAwLCAwLCAwLCAwLCAKLSAgICAyMzQ1LCAwLCAwLCAyMzUzLCAwLCAwLCAyMzU2LCAwLCAwLCAwLCAyNTA3LCAyNTA4LCAwLCAwLCAwLCAyODkxLCAyODg4LCAKLSAgICAyODkyLCAyOTY0LCAwLCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAzMDE5LCAwLCAwLCAwLCAwLCAzMTQ0LCAwLCAwLCAKLSAgICAwLCAwLCAzMjY0LCAwLCAzMjc0LCAzMjcxLCAzMjcyLCAwLCAzMjc1LCAwLCAwLCAwLCAwLCAzNDAyLCAzNDA0LCAwLCAKLSAgICAzNDAzLCAwLCAwLCAwLCAwLCAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAwLCAzNTQ5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MTM0LCAwLCAwLCAwLCA2OTE4LCAwLCAwLCA2OTIwLCAwLCAwLCA2OTIyLCAwLCAwLCA2OTI0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA2OTI2LCAwLCAwLCA2OTMwLCAwLCAwLCA2OTcxLCAwLCAwLCA2OTczLCAwLCAwLCAwLCAwLCAwLCAwLCA2OTc2LCAwLCAKLSAgICAwLCA2OTc3LCAwLCAwLCA2OTc5LCAwLCAwLCAwLCA3NzM2LCAwLCAwLCA3NzM3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NzcyLCAKLSAgICAwLCAwLCA3NzczLCAwLCAwLCAwLCAwLCA3Nzg0LCAwLCAwLCA3Nzg1LCAwLCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAKLSAgICAwLCA3ODUzLCAwLCAwLCA3ODYzLCAwLCAwLCAwLCA3ODc4LCAwLCAwLCA3ODc5LCAwLCAwLCA3ODk2LCAwLCAwLCA3ODk3LCAKLSAgICAwLCAwLCAwLCAwLCA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCAwLCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCAKLSAgICA4MDY1LCAwLCAwLCA4MDY2LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDY3LCAwLCAwLCA4MDY4LCAwLCAwLCA4MDY5LCAwLCAwLCAKLSAgICA4MDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDcxLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCAwLCA3OTQ3LCAKLSAgICA3OTQ5LCAwLCAwLCA3OTUxLCA4MDczLCAwLCAwLCA4MDc0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDc1LCAwLCAwLCA4MDc2LCAKLSAgICAwLCAwLCA4MDc3LCAwLCAwLCA4MDc4LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDc5LCAwLCA3OTU0LCA3OTU2LCAwLCA3OTU1LCAKLSAgICA3OTU3LCAwLCAwLCAwLCAwLCAwLCA3OTYyLCA3OTY0LCAwLCAwLCAwLCAwLCAwLCA3OTYzLCA3OTY1LCAwLCA3OTcwLCAKLSAgICA3OTcyLCAwLCAwLCA3OTc0LCA4MDgwLCAwLCA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCA4MDgyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MDgzLCAwLCAwLCA4MDg0LCAwLCAwLCA4MDg1LCAwLCAwLCA4MDg2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MDg3LCAwLCA3OTc4LCA3OTgwLCAwLCAwLCA3OTgyLCA4MDg4LCAwLCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCAKLSAgICA4MDg5LCAwLCAwLCA4MDkwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDkxLCAwLCAwLCA4MDkyLCAwLCAwLCA4MDkzLCAwLCAwLCAKLSAgICA4MDk0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDk1LCAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCAwLCA3OTg3LCAKLSAgICA3OTg5LCAwLCAwLCA3OTkxLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTk0LCA3OTk2LCAwLCAwLCAwLCAwLCAwLCAwLCA3OTk4LCAKLSAgICAwLCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAwLCAwLCA4MDAyLCA4MDA0LCAwLCA4MDAzLCA4MDA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MDEwLCA4MDEyLCAwLCAwLCAwLCAwLCAwLCA4MDExLCA4MDEzLCAwLCA4MDE4LCA4MDIwLCAwLCAwLCA4MDIyLCAKLSAgICAwLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MDMxLCAwLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCA4MDM1LCA4MDM3LCAwLCAwLCAKLSAgICA4MDM5LCA4MDk3LCAwLCAwLCA4MDk4LCAwLCAwLCA4MDk5LCAwLCAwLCAwLCAwLCAwLCAwLCA4MTAwLCAwLCAwLCA4MTAxLCAKLSAgICAwLCAwLCA4MTAyLCAwLCAwLCA4MTAzLCAwLCAwLCAwLCAwLCAwLCA4MDQyLCA4MDQ0LCAwLCAwLCA4MDQ2LCA4MTA0LCAwLCAKLSAgICA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCAwLCA4MTA2LCAwLCAwLCA4MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTA4LCAwLCAwLCA4MTA5LCAwLCAwLCA4MTEwLCAwLCAwLCA4MTExLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTE0LCAwLCAwLCAKLSAgICA4MTMwLCAwLCAwLCA4MTc4LCAwLCAwLCA4MTE5LCAwLCAwLCAwLCAwLCAwLCA4MTQxLCA4MTQyLCAwLCAwLCA4MTQzLCAwLCAKLSAgICAwLCAwLCA4MTM1LCAwLCAwLCA4MTgzLCAwLCAwLCAwLCAwLCAwLCA4MTU3LCA4MTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTU5LCAwLCA4NjAyLCAwLCAwLCA4NjAzLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjIyLCAwLCAwLCA4NjUzLCAwLCAwLCAKLSAgICA4NjU1LCAwLCAwLCA4NjU0LCAwLCAwLCAwLCAwLCAwLCAwLCA4NzA4LCAwLCAwLCA4NzEzLCAwLCAwLCA4NzE2LCAwLCAwLCAKLSAgICA4NzQwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzQyLCAwLCAwLCA4NzY5LCAwLCAwLCA4NzcyLCAwLCAwLCA4Nzc1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4Nzc3LCAwLCAwLCA4ODEzLCAwLCAwLCA4ODAyLCAwLCAwLCA4ODE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4ODE3LCAwLCAwLCA4ODIwLCAwLCAwLCA4ODIxLCAwLCAwLCA4ODI0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODI1LCAwLCAwLCAKLSAgICA4ODMyLCAwLCAwLCA4ODMzLCAwLCAwLCA4OTI4LCAwLCAwLCAwLCAwLCAwLCAwLCA4OTI5LCAwLCAwLCA4ODM2LCAwLCAwLCAKLSAgICA4ODM3LCAwLCAwLCA4ODQwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODQxLCAwLCAwLCA4OTMwLCAwLCAwLCA4OTMxLCAwLCAwLCAKLSAgICA4ODc2LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODc3LCAwLCAwLCA4ODc4LCAwLCAwLCA4ODc5LCAwLCAwLCA4OTM4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4OTM5LCAwLCAwLCA4OTQwLCAwLCAwLCA4OTQxLCAwLCAwLCAwLCAxMjQzNiwgMCwgMCwgMTIzNjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyMzY2LCAwLCAwLCAxMjM2OCwgMCwgMCwgMTIzNzAsIDAsIDAsIDEyMzcyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMjM3NCwgMCwgMCwgMTIzNzYsIDAsIDAsIDEyMzc4LCAwLCAwLCAxMjM4MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIzODIsIDAsIDAsIDEyMzg0LCAwLCAwLCAxMjM4NiwgMCwgMCwgMTIzODksIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzkxLCAwLCAKLSAgICAwLCAxMjM5MywgMCwgMCwgMTI0MDAsIDEyNDAxLCAwLCAxMjQwMywgMTI0MDQsIDAsIDAsIDAsIDAsIDAsIDEyNDA2LCAKLSAgICAxMjQwNywgMCwgMCwgMCwgMCwgMCwgMTI0MDksIDEyNDEwLCAwLCAxMjQxMiwgMTI0MTMsIDAsIDEyNDQ2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMjUzMiwgMCwgMCwgMTI0NjAsIDAsIDAsIDEyNDYyLCAwLCAwLCAxMjQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI0NjYsIDAsIDAsIDEyNDY4LCAwLCAwLCAxMjQ3MCwgMCwgMCwgMTI0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDc0LCAwLCAKLSAgICAwLCAxMjQ3NiwgMCwgMCwgMTI0NzgsIDAsIDAsIDEyNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4MiwgMCwgMCwgMTI0ODUsIAotICAgIDAsIDAsIDEyNDg3LCAwLCAwLCAxMjQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjQ5OSwgMTI1MDAsIDAsIDEyNTAyLCAxMjUwMywgMCwgMTI1MDUsIDEyNTA2LCAwLCAwLCAwLCAwLCAwLCAxMjUwOCwgCi0gICAgMTI1MDksIDAsIDAsIDAsIDAsIDAsIDEyNTM1LCAwLCAwLCAxMjUzNiwgMCwgMCwgMTI1MzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNTM4LCAwLCAwLCAxMjU0MiwgMCwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDY5Nzg4LCAwLCAwLCA2OTgwMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgMCwgODgwMCwgMCwgMCwgMCwgODgxNSwgMTkyLCAxOTMsIDE5NCwgCisgICAgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgMCwgCisgICAgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAwLCAyNjIsIAorICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCisgICAgMjcwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAyMDAsIDIwMSwgMjAyLCA3ODY4LCAKKyAgICAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIDAsIDc4NjQsIDAsIDAsIDAsIAorICAgIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCAwLCA3NzEwLCAwLCAwLCA1MDAsIDI4NCwgMCwgNzcxMiwgMjg2LCAKKyAgICAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIDc3MTgsIDAsIDAsIAorICAgIDAsIDU0MiwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjk2LCAKKyAgICAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIDAsIDc4ODIsIDAsIDAsIDAsIDAsIAorICAgIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIAorICAgIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAorICAgIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgCisgICAgMCwgNzc0NiwgMCwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAKKyAgICAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgCisgICAgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAKKyAgICA3NzY0LCAwLCAwLCAwLCAwLCA3NzY2LCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDAsIDAsIDAsIDAsIDM0NCwgCisgICAgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgMCwgMCwgNzc3NCwgMCwgMCwgMzQ2LCAzNDgsIAorICAgIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgNTM2LCAzNTAsIDAsIDAsIDAsIDAsIAorICAgIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIDc3OTIsIDAsIDAsIDc3OTAsIDAsIAorICAgIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIAorICAgIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCA3Nzk2LCAwLCAwLCAwLCAwLCAwLCA3ODA0LCAwLCAKKyAgICA3ODA2LCAwLCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIDAsIDc4MTYsIDAsIDAsIDAsIDAsIAorICAgIDc4MTgsIDc4MjAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgCisgICAgNzkyNCwgMCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDM4MSwgMCwgNzgyNiwgMCwgMCwgCisgICAgMCwgMCwgNzgyOCwgMCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCAKKyAgICA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAwLCAwLCA3NjgzLCAwLCAwLCA3Njg1LCAKKyAgICAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDIzMSwgCisgICAgMCwgMCwgMCwgMCwgNzY5MSwgMCwgMCwgMCwgMCwgMjcxLCAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCAKKyAgICA3Njk1LCAwLCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCAKKyAgICA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCAwLCA3NzExLCAKKyAgICAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMjkxLCAwLCAwLCAwLCAwLCAKKyAgICAyOTMsIDAsIDAsIDAsIDc3MTUsIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgCisgICAgNzcyMywgMCwgNzgzMCwgMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIAorICAgIDUyMSwgNTIzLCAwLCAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDAsIDMwOSwgMCwgCisgICAgMCwgMCwgMCwgNDk2LCAwLCA3NzI5LCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgMCwgMCwgCisgICAgMCwgMCwgNzczMywgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgCisgICAgNzc0MSwgMCwgMCwgNzczOSwgMCwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgNTA1LCAKKyAgICAzMjQsIDAsIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIAorICAgIDAsIDAsIDc3NTMsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIDQ2NiwgCisgICAgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCA3NzY3LCAKKyAgICAwLCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIDAsIAorICAgIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAorICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgCisgICAgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDI0OSwgMjUwLCAyNTEsIDM2MSwgMzYzLCAKKyAgICAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgNzkwOSwgNzc5NSwgMCwgMCwgCisgICAgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCA3ODA5LCA3ODExLCAKKyAgICAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIDAsIDAsIDAsIDc4MTksIDc4MjEsIAorICAgIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgCisgICAgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgCisgICAgMCwgODE3MywgOTAxLCAwLCAwLCA4MTI5LCAwLCAwLCAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCA3ODQ4LCAwLCAwLCAwLCAKKyAgICA0NzgsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDc2ODgsIDAsIDAsIAorICAgIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDc4NzQsIDAsIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIAorICAgIDc4OTIsIDAsIDAsIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgNTU0LCAwLCAwLCAwLCAwLCA1MTAsIDAsIAorICAgIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNzg0NywgNzg0NSwgMCwgNzg1MSwgNzg0OSwgCisgICAgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCA3Njg5LCAKKyAgICAwLCAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCA3ODc1LCAwLCAwLCAwLCAwLCA3NzI3LCAwLCAwLCA3ODkxLCA3ODg5LCAwLCAKKyAgICA3ODk1LCA3ODkzLCAwLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIDc3NTksIDU1NSwgMCwgMCwgMCwgMCwgCisgICAgNTExLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzQsIDc4NTYsIDc4NTQsIDAsIAorICAgIDc4NjAsIDc4NTgsIDAsIDAsIDAsIDc4NTcsIDc4NTUsIDAsIDc4NjEsIDc4NTksIDAsIDAsIDAsIDc3MDAsIDc3MDIsIDAsIAorICAgIDAsIDc3MDEsIDc3MDMsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDAsIDc3ODAsIDAsIAorICAgIDAsIDAsIDc3ODEsIDAsIDAsIDAsIDc3ODIsIDAsIDAsIDAsIDc3ODMsIDAsIDAsIDc4MDAsIDAsIDAsIDAsIDc4MDEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc4MDIsIDAsIDAsIDAsIDc4MDMsIDAsIDAsIDc4MzUsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIAorICAgIDc5MDIsIDAsIDAsIDAsIDAsIDc5MDYsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDc5MDMsIDAsIDAsIDAsIDAsIAorICAgIDc5MDcsIDAsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDc5MTYsIDAsIDAsIDAsIDAsIDc5MjAsIDAsIDAsIDc5MTUsIAorICAgIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgNDkyLCAwLCAwLCAwLCAKKyAgICA0OTMsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCAwLCA3NzA4LCAwLCAwLCAwLCA3NzA5LCAwLCAwLCAKKyAgICA1NjAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCA4MTIyLCA5MDIsIDAsIDAsIDgxMjEsIDgxMjAsIDAsIAorICAgIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDgxMjQsIDAsIDAsIDgxMzYsIDkwNCwgMCwgMCwgMCwgMCwgNzk2MCwgNzk2MSwgCisgICAgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIAorICAgIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAKKyAgICAwLCA4MTcyLCA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgODE4NiwgOTExLCAKKyAgICAwLCAwLCAwLCAwLCA4MDQwLCA4MDQxLCAwLCA4MTg4LCAwLCAwLCAwLCA4MTE2LCAwLCAwLCAwLCA4MTMyLCAwLCAwLCAKKyAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDgxMTgsIDgxMTUsIDAsIDAsIAorICAgIDgwNTAsIDk0MSwgMCwgMCwgMCwgMCwgNzk1MiwgNzk1MywgODA1MiwgOTQyLCAwLCAwLCAwLCAwLCA3OTY4LCA3OTY5LCAKKyAgICA4MTM0LCA4MTMxLCAwLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgCisgICAgODE1MCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCA4MDAwLCA4MDAxLCAwLCAwLCA4MTY0LCA4MTY1LCA4MDU4LCAKKyAgICA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgMCwgMCwgODAxNiwgODAxNywgODE2NiwgMCwgMCwgMCwgODA2MCwgCisgICAgOTc0LCAwLCAwLCAwLCAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDgxNTEsIDAsIAorICAgIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgMCwgODE4MCwgMCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5ODAsIDAsIDAsIDAsIDEwMzEsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDEwMjcsIDAsIDAsIDEwMjQsIDAsIDAsIDAsIDAsIAorICAgIDEyMzgsIDAsIDEwMjUsIDAsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDAsIDEyNDYsIDEwMzcsIDAsIDAsIDAsIDEyNTAsIAorICAgIDEwNDksIDAsIDEyNTIsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDAsIDEyNTQsIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIAorICAgIDEyNjYsIDAsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDEyNzIsIDAsIDAsIDAsIDEyNjAsIDAsIDEyMzMsIDAsIDEyMzUsIAorICAgIDAsIDExMDcsIDAsIDAsIDExMDQsIDAsIDAsIDAsIDAsIDEyMzksIDAsIDExMDUsIDAsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIAorICAgIDAsIDEyNDcsIDExMTcsIDAsIDAsIDAsIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNTUsIDEyNjMsIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDEyNzMsIAorICAgIDAsIDAsIDAsIDEyNjEsIDAsIDAsIDAsIDExMTEsIDExNDIsIDAsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDIsIDAsIDAsIDAsIDEyNDMsIDAsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDEyNTksIDAsIDAsIDE1NzAsIDE1NzEsIAorICAgIDE1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzIsIDAsIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDAsIAorICAgIDE3NDcsIDAsIDAsIDAsIDE3MjgsIDAsIDIzNDUsIDAsIDAsIDAsIDIzNTMsIDAsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDAsIAorICAgIDI1MDcsIDI1MDgsIDI4OTEsIDI4ODgsIDI4OTIsIDAsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMwMTksIDAsIDMxNDQsIDAsIDAsIDAsIDAsIDAsIDMyNjQsIDAsIDAsIDMyNzQsIDMyNzEsIAorICAgIDMyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzUsIDAsIDM0MDIsIDM0MDQsIDAsIDAsIDM0MDMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDQxMzQsIDAsIDAsIDAsIDAsIDY5MTgsIDAsIAorICAgIDAsIDAsIDY5MjAsIDAsIDAsIDAsIDY5MjIsIDAsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDY5MjYsIDAsIDAsIDAsIDY5MzAsIAorICAgIDAsIDAsIDAsIDY5NzEsIDAsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDY5NzYsIDAsIDAsIDAsIDY5NzcsIDAsIDAsIDAsIAorICAgIDY5NzksIDc3MzYsIDAsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDc3NzIsIDAsIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc3ODQsIDAsIDAsIDAsIDc3ODUsIDAsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIDAsIDAsIDc4NTMsIDAsIDAsIAorICAgIDc4NjMsIDAsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDAsIDc4NzksIDAsIDAsIDAsIDc4OTYsIDAsIDAsIDAsIDc4OTcsIDAsIAorICAgIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIDgwNjUsIDAsIDAsIAorICAgIDAsIDgwNjYsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDAsIDgwNjgsIDAsIDAsIDAsIDgwNjksIDAsIDAsIDAsIDgwNzAsIDAsIAorICAgIDAsIDAsIDgwNzEsIDAsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDAsIDc5NDcsIDc5NDksIDAsIDAsIAorICAgIDc5NTEsIDgwNzMsIDAsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDAsIDgwNzYsIDAsIDAsIDAsIDgwNzcsIAorICAgIDAsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDgwNzksIDAsIDAsIDc5NTQsIDc5NTYsIDAsIDAsIDc5NTUsIDc5NTcsIDAsIDAsIAorICAgIDc5NjIsIDc5NjQsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDAsIDc5NzAsIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDAsIAorICAgIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDAsIDgwODIsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDAsIAorICAgIDgwODQsIDAsIDAsIDAsIDgwODUsIDAsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDgwODcsIDAsIDAsIDc5NzgsIDc5ODAsIDAsIAorICAgIDAsIDc5ODIsIDgwODgsIDAsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIDgwODksIDAsIDAsIDAsIDgwOTAsIDAsIDAsIAorICAgIDAsIDgwOTEsIDAsIDAsIDAsIDgwOTIsIDAsIDAsIDAsIDgwOTMsIDAsIDAsIDAsIDgwOTQsIDAsIDAsIDAsIDgwOTUsIDAsIAorICAgIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDAsIDc5ODcsIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIAorICAgIDc5OTQsIDc5OTYsIDAsIDAsIDc5OTgsIDAsIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDAsIDgwMDIsIAorICAgIDgwMDQsIDAsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDAsIDgwMTgsIAorICAgIDgwMjAsIDAsIDAsIDgwMjIsIDAsIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDgwMjcsIDgwMjksIAorICAgIDAsIDAsIDgwMzEsIDAsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDAsIDgwMzUsIDgwMzcsIDAsIAorICAgIDAsIDgwMzksIDgwOTcsIDAsIDAsIDAsIDgwOTgsIDAsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDAsIAorICAgIDgxMDEsIDAsIDAsIDAsIDgxMDIsIDAsIDAsIDAsIDgxMDMsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIAorICAgIDAsIDAsIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDAsIDgxMDYsIDAsIDAsIDAsIDgxMDcsIDAsIDAsIAorICAgIDAsIDgxMDgsIDAsIDAsIDAsIDgxMDksIDAsIDAsIDAsIDgxMTAsIDAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDgxMTQsIDAsIAorICAgIDAsIDAsIDgxMzAsIDAsIDAsIDAsIDgxNzgsIDAsIDAsIDAsIDgxMTksIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIAorICAgIDAsIDAsIDAsIDAsIDgxMzUsIDAsIDAsIDAsIDgxODMsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDgxNTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDg2MDIsIDAsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDAsIDg2NTMsIDAsIDAsIDAsIAorICAgIDg2NTUsIDAsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDAsIDg3MTMsIDAsIDAsIDAsIDg3MTYsIDAsIDAsIAorICAgIDAsIDg3NDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDAsIDg3NjksIDAsIDAsIDAsIDg3NzIsIDAsIDAsIDAsIDg3NzUsIDAsIAorICAgIDAsIDAsIDg3NzcsIDAsIDAsIDAsIDg4MTMsIDAsIDAsIDAsIDg4MDIsIDAsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDg4MTcsIAorICAgIDAsIDAsIDAsIDg4MjAsIDAsIDAsIDAsIDg4MjEsIDAsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIDAsIAorICAgIDg4MzIsIDAsIDAsIDAsIDg4MzMsIDAsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDAsIDg4MzYsIDAsIDAsIAorICAgIDAsIDg4MzcsIDAsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDAsIDg5MzAsIDAsIDAsIDAsIDg5MzEsIDAsIAorICAgIDAsIDAsIDg4NzYsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDAsIDg4NzgsIDAsIDAsIDAsIDg4NzksIDAsIDAsIDAsIDg5MzgsIAorICAgIDAsIDAsIDAsIDg5MzksIDAsIDAsIDAsIDg5NDAsIDAsIDAsIDAsIDg5NDEsIDEyNDM2LCAwLCAwLCAwLCAxMjM2NCwgMCwgMCwgCisgICAgMCwgMTIzNjYsIDAsIDAsIDAsIDEyMzY4LCAwLCAwLCAwLCAxMjM3MCwgMCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDEyMzc0LCAKKyAgICAwLCAwLCAwLCAxMjM3NiwgMCwgMCwgMCwgMTIzNzgsIDAsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAxMjM4MiwgMCwgMCwgMCwgCisgICAgMTIzODQsIDAsIDAsIDAsIDEyMzg2LCAwLCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMTIzOTEsIDAsIDAsIDAsIDEyMzkzLCAwLCAKKyAgICAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMTI0MDYsIDEyNDA3LCAwLCAwLCAxMjQwOSwgCisgICAgMTI0MTAsIDAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMCwgMTI0NDYsIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAwLCAxMjQ2MCwgCisgICAgMCwgMCwgMCwgMTI0NjIsIDAsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAxMjQ2NiwgMCwgMCwgMCwgMTI0NjgsIDAsIDAsIDAsIAorICAgIDEyNDcwLCAwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMTI0NzQsIDAsIDAsIDAsIDEyNDc2LCAwLCAwLCAwLCAxMjQ3OCwgMCwgCisgICAgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAwLCAxMjQ4NSwgMCwgMCwgMCwgMTI0ODcsIDAsIDAsIDAsIAorICAgIDEyNDg5LCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDEyNDk5LCAxMjUwMCwgMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAKKyAgICAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDEyNTA4LCAxMjUwOSwgMCwgMCwgMTI1MzUsIDAsIDAsIDAsIDEyNTM2LCAwLCAwLCAKKyAgICAwLCAxMjUzNywgMCwgMCwgMCwgMTI1MzgsIDAsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgMCwgCisgICAgNjk3ODgsIDAsIDAsIDAsIDY5ODAzLCAwLCAwLCAwLCAwLCA2OTkzNCwgMCwgMCwgMCwgNjk5MzUsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKIAl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKIAl7IDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAogCXsgMTksIDIxLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDIsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDMsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDEsIDI1NSwgMCB9LAogCXsgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjYsIDI1NSwgMjU1LCAwIH0sCiAJeyA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MDU4LDcgKzUxNzcsNyBAQAogCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKIAl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDksIDI1NSwgMCB9LAotCXsgMjU1LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgNSwgMjU1LCAyNTUsIDAgfSwKIAl7IDE1LCAxNCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMTAsIDI1NSwgMjU1LCAwIH0sCiAJeyAxOCwgMjU1LCAyNTUsIDI1NSwgMCB9LApAQCAtNTA3MCwxMiArNTE4OSwxMiBAQAogCXsgMjU1LCAyNTUsIDcsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDgsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDksIDI1NSwgMCB9LAotCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE5LCAzMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjIsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIzLCAyNTUsIDI1NSwgMCB9LAogCXsgOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDQsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LApAQCAtNTA4NCw3NCArNTIwMyw3NCBAQAogCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7Ci0gICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAyLCAxNSwgMTYsIDE3LCAKLSAgICAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyLCAyLCAyLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgCi0gICAgMzQsIDIsIDIsIDIsIDM1LCAzNiwgMiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgCi0gICAgNDksIDIsIDUwLCAyLCAyLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDIsIDIsIDU2LCA1NywgNTgsIDIsIDIsIDU5LCA2MCwgNjEsIAotICAgIDYyLCA2MywgNjMsIDIsIDIsIDIsIDIsIDY0LCAyLCA2NSwgNjYsIDY3LCA2OCwgNjksIDIsIDIsIDIsIDIsIDcwLCA3MSwgCi0gICAgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDIsIDIsIDIsIDIsIDIsIDIsIDc5LCAyLCAyLCAyLCAyLCAyLCA4MCwgMiwgCisgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCisgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMiwgMiwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKKyAgICAzNiwgMiwgMiwgMiwgMzcsIDM4LCAyLCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCAKKyAgICA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgMiwgNTgsIDU5LCA2MCwgMiwgMiwgNjEsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NSwgMiwgMiwgMiwgMiwgNjYsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgMiwgMiwgMiwgNzIsIDczLCA3NCwgCisgICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCA4MywgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODEsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MywgCi0gICAgODQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgODcsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIAorICAgIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODksIDkwLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDkyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgNDgsIDQ4LCAKLSAgICA5NCwgOTUsIDQ4LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA1MCwgNTAsIAorICAgIDk3LCA5OCwgNTAsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwgMiwgMiwgMiwgMTEyLCAxMTMsIDIsIDExNCwgMTE1LCAKLSAgICAxMTYsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjUsIDIsIAotICAgIDEyNiwgMiwgMTI3LCAyLCAxMjgsIDIsIDEyOSwgMiwgMiwgMiwgMTMwLCAyLCAyLCAyLCAxMzEsIDEzMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTMzLCAyLCAxMzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMDgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDIsIDIsIDIsIDExNSwgMTE2LCAyLCAxMTcsIDExOCwgCisgICAgMTE5LCAxMjAsIDEyMSwgMTIyLCAyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMiwgMiwgMiwgMiwgMiwgMiwgMTI4LCAyLCAKKyAgICAxMjksIDEzMCwgMTMxLCAyLCAxMzIsIDIsIDEzMywgMiwgMiwgMiwgMTM0LCAyLCAyLCAyLCAxMzUsIDEzNiwgMTM3LCAxMzgsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEzOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTQwLCAyLCAxNDEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgMTQyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgMTM2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTQzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAxNDQsIDE0NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDEzOCwgMiwgMTM5LCAyLCAxNDAsIDIsIDIsIDE0MSwgMiwgMiwgMiwgMTQyLCAxNDMsIDE0NCwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ1LCAKLSAgICAxNDYsIDE0NywgMTQ4LCAxNDksIDIsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTM5LCAxNTcsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE1OCwgMTU5LCA5MCwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNzksIDE2MCwgMiwgMTYxLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NywgMiwgMTQ4LCAyLCAxNDksIDIsIDIsIDE1MCwgMiwgMiwgMiwgMTUxLCAxNTIsIAorICAgIDE1MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTU0LCAxNTUsIAorICAgIDIsIDIsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAyLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE0OCwgCisgICAgMTY4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDE3MCwgOTMsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAxNzEsIDIsIDE3MiwgMTczLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjMsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDE2NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzQsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc2LCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjYsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjcsIDQ4LCAxNjgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc4LCA1MCwgMTc5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjMsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01Mzg2LDcgKzU1MDUsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCAxNjksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNTQ1MCw3ICs1NTY5LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfZGF0YVtdID0gewpAQCAtNTQ2MCw4ICs1NTc5LDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAKKyAgICAwLCAwLCA0LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCA2LCA3LCAwLCAwLCAzLCAwLCAwLCA4LCA0LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCA0LCA1LCAwLCAwLCAwLCAwLCAwLCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU0NzAsODQ4ICs1NTkwLDkwNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAxMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAxMCwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgOSwgMCwgNywgNywgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMiwgMTMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMSwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNCwgMTUsIDE2LCAxNywgMTgsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAKKyAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCA4LCAwLCAKLSAgICAwLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCA4LCAzNSwgNiwgNCwgNSwgMzYsIDM3LCAzOCwgMzksIAotICAgIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgMzcsIDM4LCAzOSwgNDAsIAorICAgIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDEsIDEsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ1LCA0NiwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCAKKyAgICA0NiwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCAwLCA3LCA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMTgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAxLCAxLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMywgMTMsIDEzLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgCisgICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAwLCA3LCAwLCA3LCAwLCA3LCAwLCA3LCAKLSAgICA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIAorICAgIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjMxOSwyNSArNjQ5NywyNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjM0NiwyNCArNjUyNCwyNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggODgzMDU2MC4uMzgzODg4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwzMzcgKzQsNDI4IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODcsIDczLCA4NCwgMjAwLCA4MywgNzcsIDY1LCA3NiwgMjA0LCA4MywgODksIAotICAgIDc2LCA3NiwgNjUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCAyMDYsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDIwNiwgODksIDIwMSwgNjcsIDc0LCAyMDMsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKLSAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzcsIDY1LCA4NCwgNzIsIDY5LCAKLSAgICA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDIwNCwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgCi0gICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY4LCA3MywgNzEsIDczLCAKLSAgICAyMTIsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDY1LCA3OCwgMTk2LCA3MSwgODIsIDY5LCAKLSAgICA2OSwgMjAzLCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDg2LCA3OSwgODcsIDY5LCAKLSAgICAyMDQsIDcwLCA3OSwgMjEwLCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDc2LCAKKyAgICAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDgzLCA3MywgNzEsIDIwNiwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgMjA2LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDc3LCAKKyAgICA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCA2NSwgCisgICAgMjA2LCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCAKKyAgICA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgMjA0LCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgCisgICAgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjgsIDczLCA3MSwgNzMsIAorICAgIDIxMiwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDg2LCA3OSwgODcsIAorICAgIDY5LCAyMDQsIDcxLCA4MiwgNjksIDY5LCAyMDMsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDc3LCA4NSwgCisgICAgODMsIDczLCA2NywgNjUsIDIwNCwgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgODQsIDczLCA3NywgNjksIAorICAgIDIxMSwgNzAsIDc5LCAyMTAsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgCiAgICAgMTk1LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgODQsIDY1LCAyMDEsIDg2LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCi0gICAgNzYsIDY5LCA3MCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCAKLSAgICA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY2LCA4OSwgOTAsIAotICAgIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNjYsIDc5LCA4NiwgCi0gICAgNjksIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCAKLSAgICA3OCwgMTI4LCAxOTQsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCAKLSAgICA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCAyMTAsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNjUsIDEyOCwgNjgsIDc5LCAyMTIsIDc3LCA2OSwgNjksIAotICAgIDIwNSwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA3OSwgMTk4LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIAotICAgIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NSwgMTI4LCA3MywgNzgsIDczLCA4NCwgCi0gICAgNzMsIDY1LCAyMDQsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAxMjgsIDg5LCA2OSwgMjAwLCA3OSwgCi0gICAgMTI4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgCi0gICAgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCAKLSAgICA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgMjAzLCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc2LCAxOTcsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDUsIAotICAgIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDgzLCA4MSwgCi0gICAgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA4MCwgNzYsIDg1LCAKLSAgICAyMTEsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIAorICAgIDE5OCwgODQsIDY1LCA3NywgNzMsIDIwNCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgCisgICAgNzMsIDc4LCA3MywgNzgsIDE5OSwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDg2LCA2NSwgMjAxLCA4MywgCisgICAgODEsIDg1LCA2NSwgODIsIDE5NywgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NiwgNjUsIDgyLCAKKyAgICA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIAorICAgIDgyLCAyMDYsIDY1LCA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgCisgICAgODMsIDczLCA3MSwgNzgsIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCAKKyAgICA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNzUsIDY1LCA4NCwgNjUsIAorICAgIDc1LCA2NSwgNzgsIDE5MywgMTk0LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIAorICAgIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4NCwgNzMsIDY2LCA2OSwgCisgICAgODQsIDY1LCAyMDYsIDc5LCAxOTgsIDczLCA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY5LCA2OSwgMjA1LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDc1LCA3MiwgNzcsIDY5LCAKKyAgICAyMTAsIDg1LCAxMjgsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgNzMsIDEyOCwgCisgICAgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDc5LCAxMjgsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDc3LCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDg5LCA2OSwgMjAwLCA2NSwgODIsIDgyLCA3OSwgMjE1LCA2NywgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIDcyLCAKKyAgICA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgNjUsIAorICAgIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgMjAzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCAKKyAgICA4NCwgNzIsIDY1LCAyMDUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIAorICAgIDY5LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIDgyLCA2OSwgCisgICAgMjE1LCA3NywgNzMsIDY1LCAyMDcsIDgwLCA3NiwgODUsIDIxMSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCAKKyAgICA2OCwgMjExLCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgCiAgICAgMjExLCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgODQsIAotICAgIDIwMCwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgCi0gICAgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCAKLSAgICA0NSwgMTk2LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY1LCA3NiwgNjksIDE5OCwgNzIsIDY5LCA2NSwgODYsIDIxNywgODQsIDc5LCAxMjgsIAotICAgIDg0LCA4NywgNzksIDEyOCwgNzksIDg2LCA2OSwgMjEwLCAyMTMsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIAotICAgIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAyMTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCAyMDcsIDY4LCAKLSAgICA3OSwgODcsIDIwNiwgNzAsIDg1LCA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIAotICAgIDE5NywgNjksIDgxLCA4NSwgNjUsIDIwNCwgNzIsIDczLCA3MSwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgCi0gICAgMTI4LCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgCi0gICAgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgODAsIDcyLCAKLSAgICA2NSwgODMsIDY5LCA0NSwgMTk1LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODQsIDcyLCA4MiwgNjksIAotICAgIDE5NywgNjYsIDY1LCA4MiwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzEsIDc2LCA2NSwgCi0gICAgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgNzcsIDY5LCAKLSAgICA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCA3MSwgMjEzLCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIAotICAgIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjksIDY5LCAKLSAgICAyMDUsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDg3LCA2OSwgODMsIAotICAgIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3MiwgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgODAsIDcyLCA2NSwgCi0gICAgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY5LCAKLSAgICAyMTUsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDcyLCA2NSwgMTI4LCA4NCwgNzksIDc4LCAxOTcsIDg2LCAKLSAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDcyLCA2NSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA3MSwgODUsIAotICAgIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA3NiwgODUsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4NSwgCi0gICAgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCAKLSAgICA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgCi0gICAgMTkzLCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgNjgsIDc5LCA4NCwgMjExLCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNjUsIAotICAgIDc3LCA3MywgMjA0LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDczLCA4NiwgNjksIDEyOCwgNzUsIDY1LCAxMjgsIAotICAgIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3NiwgNzksIDc4LCAxOTksIDg0LCA4NSwgODIsIDc1LCA3MywgMTk1LCA4OSwgCi0gICAgNjUsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3NywgNjUsIAotICAgIDEyOCwgODMsIDczLCA4OCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDgwLCA2NSwgMTI4LCAKLSAgICA2NSwgODAsIDIwNCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgODMsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDIwNCwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY2LCAKLSAgICA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDgyLCA2NSwgMTI4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4MiwgMTk0LCAKLSAgICA2OCwgNjUsIDgzLCA3MywgMTkzLCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzYsIDczLCA3NywgNjYsIDIxMywgNzcsIAotICAgIDY1LCA3NSwgODMsIDg1LCA4MiwgMTkzLCA4NCwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgCi0gICAgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCAKLSAgICA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIAotICAgIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgCi0gICAgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCAKLSAgICA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCAKLSAgICA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIAotICAgIDY1LCA4MiwgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgCi0gICAgODUsIDY2LCA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDgyLCA2NSwgMTI4LCA5MCwgCi0gICAgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgCi0gICAgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgOTAsIDc0LCA2OSwgMTI4LCA5MCwgCi0gICAgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCAKLSAgICA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIAotICAgIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCAKLSAgICA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIAotICAgIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCAKLSAgICA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIAotICAgIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIDY5LCAxMjgsIDkwLCA3MiwgCi0gICAgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgCi0gICAgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODgsIDEyOCwgCi0gICAgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCAKLSAgICA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCAKLSAgICA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCAKLSAgICA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgCi0gICAgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgCi0gICAgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCAKLSAgICA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCA4OCwgMTI4LCA5MCwgNjUsIAotICAgIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCA2NSwgNzIsIAotICAgIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAotICAgIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCAKLSAgICA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCAKLSAgICA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCAKLSAgICA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCAKLSAgICA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCAKLSAgICA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIAotICAgIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIAotICAgIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIAotICAgIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIAotICAgIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIAotICAgIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgCi0gICAgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCAKLSAgICA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIAotICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgCi0gICAgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgCi0gICAgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKLSAgICA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgCi0gICAgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgODgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCAKLSAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIAotICAgIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIAotICAgIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgCi0gICAgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgCi0gICAgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCAKLSAgICA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIAotICAgIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIAotICAgIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIAotICAgIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgCi0gICAgNzMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCAKLSAgICA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCAKLSAgICA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIAotICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgCi0gICAgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIAotICAgIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIAotICAgIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIAotICAgIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgCi0gICAgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgCi0gICAgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzIsIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAKLSAgICAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIAotICAgIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIAotICAgIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIAotICAgIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIAotICAgIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIAotICAgIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAKLSAgICA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCAKLSAgICA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIAotICAgIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgCi0gICAgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgCi0gICAgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA2NSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCAKLSAgICA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgCi0gICAgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgCi0gICAgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIDEyOCwgCi0gICAgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCA4OCwgCi0gICAgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIDEyOCwgCi0gICAgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgCi0gICAgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCAKLSAgICA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAKLSAgICAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgCi0gICAgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCAKLSAgICA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAKLSAgICAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgCi0gICAgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCAxMjgsIAotICAgIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgCi0gICAgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgCi0gICAgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIDc4LCAKLSAgICAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIDg0LCAKLSAgICA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIAotICAgIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgCi0gICAgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCAKLSAgICA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIAotICAgIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAKLSAgICAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCAKLSAgICA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIAotICAgIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgCi0gICAgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgCi0gICAgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAKLSAgICAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCAKLSAgICA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgNzgsIAotICAgIDEyOCwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgCi0gICAgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCAKLSAgICA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIAotICAgIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCAKLSAgICA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgCi0gICAgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAKLSAgICAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAKLSAgICAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIDY5LCA3OCwgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIAotICAgIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NSwgCi0gICAgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgCi0gICAgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgCi0gICAgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAKLSAgICAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCAKLSAgICA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIAotICAgIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgCi0gICAgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgCi0gICAgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCAKLSAgICA2NSwgODMsIDc2LCA2NSwgMTI4LCA4NywgNjUsIDgzLCA3NiwgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIAotICAgIDEyOCwgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgCi0gICAgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDEyOCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCAKLSAgICA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgCi0gICAgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgCi0gICAgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAKLSAgICAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIAotICAgIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgCi0gICAgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA2NSwgCi0gICAgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgCi0gICAgMTI4LCA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgCi0gICAgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCAKLSAgICA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAxMjgsIAotICAgIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgODYsIAotICAgIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgCi0gICAgNzksIDEyOCwgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCAKLSAgICA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIAotICAgIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OCwgCi0gICAgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCAKLSAgICAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgNzMsIAotICAgIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAKLSAgICAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgODIsIAotICAgIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCA3OSwgCi0gICAgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgNjksIAotICAgIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCA2NSwgCi0gICAgNzEsIDY5LCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCA3MywgNzgsIDE5OSwgODYsIDczLCAKLSAgICA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIAotICAgIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCisgICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MiwgNzksIDc5LCA3NSwgMTI4LCAyMTMsIDg0LCA4NywgCisgICAgNzksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKKyAgICA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDczLCAxOTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjksIDE5OCwgODQsIDg3LCAyMDcsIAorICAgIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3OSwgODYsIDY5LCAKKyAgICAyMTAsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAKKyAgICAyMTUsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NywgMjA2LCA3MiwgNzMsIDcxLCAyMDAsIDcwLCA4NSwgCisgICAgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCAKKyAgICA2NSwgMjA0LCA4NCwgNjUsIDE5OSwgNjYsIDY1LCA4MiwgMTI4LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCAKKyAgICA3NywgNjksIDgyLCA3MywgMTk1LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIAorICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA4NCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCAKKyAgICA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDcyLCA3MywgODIsIAorICAgIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgCisgICAgNzgsIDE5OSwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAKKyAgICAyMDEsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgNzEsIDIxMywgODYsIDc5LCA2NywgNjUsIAorICAgIDc2LCA3MywgMTk1LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NCwgNjksIDY5LCAyMDUsIDc4LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCAKKyAgICA2NSwgNzgsIDY5LCA4MywgMTk3LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODcsIAorICAgIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA2NSwgMTI4LCA3MiwgCisgICAgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIDIxNSwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAKKyAgICAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNjcsIDcyLCA2NSwgMjA1LCAKKyAgICA3NiwgODUsIDE5NywgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIAorICAgIDc1LCA2NSwgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAKKyAgICAxOTMsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIAorICAgIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3NywgNjUsIDEyOCwgCisgICAgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjUsIDEyOCwgODksIDY1LCAKKyAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA3MywgODgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCAKKyAgICA2OSwgODAsIDY3LCA3MiwgMTkzLCA3OCwgNjUsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDc2LCA3OSwgNzgsIAorICAgIDE5OSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzksIDgwLCA2OSwgMjA2LCA4MiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4NiwgNzMsIDY5LCAyMTIsIDc2LCAKKyAgICA2NSwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIAorICAgIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIAorICAgIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgCisgICAgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgCisgICAgOTAsIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCAKKyAgICA3OSwgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCAKKyAgICA5MCwgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgCisgICAgNjksIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgCisgICAgOTAsIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCAKKyAgICA2NSwgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIAorICAgIDEyOCwgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgNjUsIDgyLCA2NSwgCisgICAgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIDg1LCAKKyAgICA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODMsIDcyLCA2NSwgMTI4LCA5MCwgODIsIDY1LCAKKyAgICAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIDc5LCAKKyAgICA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIDY5LCAKKyAgICAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgODIsIAorICAgIDEyOCwgOTAsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIAorICAgIDkwLCA3MywgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCAKKyAgICA5MCwgNzIsIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIAorICAgIDcyLCA4OSwgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgCisgICAgMTI4LCA5MCwgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgCisgICAgNzIsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIAorICAgIDg1LCAxMjgsIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIAorICAgIDkwLCA3MiwgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIDEyOCwgCisgICAgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCAKKyAgICA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCAKKyAgICA5MCwgNzIsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIAorICAgIDEyOCwgOTAsIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIAorICAgIDc4LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgCisgICAgNjksIDUwLCAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgCisgICAgNjUsIDg5LCA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgOTAsIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIAorICAgIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIAorICAgIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAorICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAKKyAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIAorICAgIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIAorICAgIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIAorICAgIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIAorICAgIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIAorICAgIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCAKKyAgICA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgCisgICAgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIAorICAgIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIAorICAgIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgCisgICAgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgCisgICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCisgICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAorICAgIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgCisgICAgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCAKKyAgICA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIAorICAgIDg4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgCisgICAgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAKKyAgICAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgCisgICAgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgCisgICAgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIAorICAgIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIAorICAgIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgCisgICAgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgCisgICAgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgCisgICAgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCAKKyAgICA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIAorICAgIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIAorICAgIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgCisgICAgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIAorICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKKyAgICA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIAorICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgCisgICAgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgCisgICAgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCAKKyAgICA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIAorICAgIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgCisgICAgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDcyLCAKKyAgICAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAKKyAgICAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCAKKyAgICA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIAorICAgIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIAorICAgIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIAorICAgIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgCisgICAgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCAKKyAgICA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIAorICAgIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIAorICAgIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAKKyAgICAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCAKKyAgICA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCAKKyAgICA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgCisgICAgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAKKyAgICAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIAorICAgIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCAKKyAgICA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCAKKyAgICA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCAKKyAgICA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCAKKyAgICA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCAKKyAgICA4NywgNjUsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCAKKyAgICA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCAKKyAgICA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCAKKyAgICA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCAKKyAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCAKKyAgICA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCAKKyAgICA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgODgsIDQ4LCA0OCwgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgCisgICAgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAKKyAgICAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCAKKyAgICA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIAorICAgIDIwMCwgODcsIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIAorICAgIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgCisgICAgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCAKKyAgICA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCAKKyAgICA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgCisgICAgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgCisgICAgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCAKKyAgICA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCAKKyAgICA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA3OCwgODQsIAorICAgIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgCisgICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCAKKyAgICA2OCwgODUsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIDc4LCAxMjgsIDg3LCAKKyAgICA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDY4LCA2OSwgNDUsIAorICAgIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgCisgICAgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAKKyAgICA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIAorICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCAKKyAgICA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCAKKyAgICA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIAorICAgIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIAorICAgIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIAorICAgIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAxMjgsIDg3LCA2NSwgMjE3LCA4NywgNjUsIDg4LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA4OCwgMTI4LCA4NywgNjUsIDg3LCA0NSwgNjUsIDg5LCA3MywgNzgsIDQ1LCA4MiwgNjksIDgzLCA3MiwgCisgICAgMTI4LCA4NywgNjUsIDg3LCAxMjgsIDg3LCA2NSwgMjE1LCA4NywgNjUsIDg2LCAyMTcsIDg3LCA2NSwgODYsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDg2LCA2OSwgODMsIDEyOCwgODcsIDY1LCA4NiwgNjksIDEyOCwgODcsIDY1LCA4NiwgMTk3LCA4NywgCisgICAgNjUsIDg1LCAxMjgsIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDc3LCA2OSwgNzYsIDc5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDEyOCwgODcsIDY1LCA4NCwgNjksIDIxMCwgODcsIDY1LCA4NCwgNjcsIAorICAgIDcyLCAxMjgsIDg3LCA2NSwgODQsIDEyOCwgODcsIDY1LCA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA4MywgCisgICAgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIAorICAgIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAKKyAgICAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgCisgICAgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgCisgICAgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKKyAgICA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCAKKyAgICA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCisgICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCisgICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIAorICAgIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIAorICAgIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgCisgICAgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgCisgICAgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIAorICAgIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIAorICAgIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIAorICAgIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgCisgICAgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAKKyAgICAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIAorICAgIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCAKKyAgICA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgCisgICAgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIAorICAgIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgCisgICAgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIAorICAgIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDY3LCA2NSwgCisgICAgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCAKKyAgICA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCAKKyAgICA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIAorICAgIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgCisgICAgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCAKKyAgICA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIAorICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCisgICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAorICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgCisgICAgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCAKKyAgICA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIAorICAgIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgCisgICAgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCAKICAgICA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIAotICAgIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MywgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgCi0gICAgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAKLSAgICAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCi0gICAgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgCi0gICAgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgCi0gICAgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgCi0gICAgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCAKLSAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAotICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKLSAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg0LCA3MiwgODksIAotICAgIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgCi0gICAgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCAKLSAgICA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIAotICAgIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgCi0gICAgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCAKLSAgICA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIAotICAgIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDczLCAxMjgsIDg2LCA3MCwgNjUsIDEyOCwgODYsIDY5LCAKKyAgICA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCAKKyAgICA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIAorICAgIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIAorICAgIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIAorICAgIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAorICAgIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIAorICAgIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIAorICAgIDgzLCAxMjgsIDg2LCA2OSwgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIAorICAgIDY5LCA3MiwgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgCisgICAgMTI4LCA4NiwgNjksIDE5NywgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgCisgICAgODYsIDY1LCA4NSwgMTI4LCA4NiwgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCAKKyAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIAorICAgIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgCisgICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCAKKyAgICA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIAorICAgIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgCisgICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzMsIAorICAgIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIAogICAgIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgCiAgICAgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAKICAgICAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCAKQEAgLTM2NSwxNSArNDU2LDE2IEBACiAgICAgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCAKICAgICA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIAogICAgIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgCi0gICAgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MiwgCi0gICAgODUsIDIxOCwgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAKLSAgICAxOTMsIDg1LCA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDg1LCA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCAKLSAgICA4NSwgODIsIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCAKLSAgICA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NSwgODAsIDg3LCA2NSwgODIsIAotICAgIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgCi0gICAgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgMjEyLCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIAorICAgIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIAorICAgIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIAorICAgIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgCisgICAgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgCisgICAgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCAKKyAgICA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCAKKyAgICA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIAorICAgIDIxMiwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAKICAgICAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIAogICAgIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgCiAgICAgNzgsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCAKQEAgLTM4OCwxMDAgKzQ4MCwxMDQgQEAKICAgICAxMjgsIDg1LCA3NSwgODUsIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIAogICAgIDgyLCA2NSwgMTI4LCA4NSwgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgCiAgICAgNzgsIDc4LCAxMjgsIDg1LCA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKLSAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgNjgsIDg1LCA3MSwgMTI4LCAKLSAgICA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA4NSwgNjgsIDY1LCA2NSwgODQsIAotICAgIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA4NSwgNjYsIDcyLCA2NSwgODksIDY1LCA4NCwgMjA3LCA4NSwgNjYsIDY1LCA2OCwgNjUsIDc3LCA2NSwgMTI4LCA4NSwgNjYsIAotICAgIDEyOCwgODUsIDY1LCA4NCwgNzIsIDEyOCwgODUsIDY1LCAxMjgsIDg1LCAxNzgsIDg1LCA0OCwgNTIsIDUwLCAxMjgsIDg1LCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDg1LCA0OCwgNTIsIDQ4LCAxMjgsIDg1LCA0OCwgNTEsIDU3LCAxMjgsIDg1LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDg1LCA0OCwgNTEsIDU1LCAxMjgsIDg1LCA0OCwgNTEsIDU0LCAxMjgsIDg1LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDg1LCA0OCwgNTEsIDUyLCAxMjgsIDg1LCA0OCwgNTEsIDUxLCAxMjgsIDg1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NSwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4NSwgNDgsIDUxLCA0OSwgMTI4LCA4NSwgNDgsIDUxLCA0OCwgMTI4LCA4NSwgNDgsIDUwLCAKLSAgICA1NywgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDEyOCwgODUsIDQ4LCA1MCwgNTYsIDEyOCwgODUsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgODUsIDQ4LCA1MCwgNTQsIDEyOCwgODUsIDQ4LCA1MCwgNTMsIDEyOCwgODUsIDQ4LCA1MCwgNTIsIDEyOCwgODUsIAotICAgIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDUxLCAxMjgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDg1LCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDg1LCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDg1LCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDg1LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgCi0gICAgODUsIDQ4LCA0OCwgNTQsIDEyOCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgODUsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDQ1LCA3MywgNDUsIAotICAgIDczLCAxMjgsIDg1LCA0NSwgNjksIDc5LCA0NSwgNjksIDg1LCAxMjgsIDg0LCA5MCwgODUsIDEyOCwgODQsIDkwLCA3OSwgCi0gICAgNjUsIDEyOCwgODQsIDkwLCA3OSwgMTI4LCA4NCwgOTAsIDczLCAyMTAsIDg0LCA5MCwgNzMsIDEyOCwgODQsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgODQsIDkwLCA2OSwgMTI4LCA4NCwgOTAsIDY1LCA2NSwgMTI4LCA4NCwgOTAsIDY1LCAxMjgsIDg0LCA5MCwgCi0gICAgMTI4LCA4NCwgODksIDIxMCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODMsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgyLCA4NCwgCi0gICAgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc5LCAKLSAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE3OCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzcsIDg0LCA4OSwgODAsIDE5NywgODQsIAotICAgIDg5LCA3OSwgMTI4LCA4NCwgODksIDczLCAxMjgsIDg0LCA4OSwgNjksIDEyOCwgODQsIDg5LCA2NSwgMTI4LCA4NCwgODcsIAotICAgIDc5LCA3OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgODcsIDY1LCAyMTcsIDg0LCA4NywgNzksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA4NywgNzksIDQ1LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNjksIDE5NiwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgMTI4LCA4NCwgODcsIAotICAgIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgCi0gICAgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgCi0gICAgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIAotICAgIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCAKLSAgICA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIAotICAgIDE5NywgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIAotICAgIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgCi0gICAgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCAKLSAgICA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCAKLSAgICA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIAotICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgCi0gICAgODIsIDY2LCA2NSwgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDg0LCA4NSwgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCAKLSAgICA3OCwgNzgsIDg5LCAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgCi0gICAgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCAKLSAgICA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIAotICAgIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgCi0gICAgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgCi0gICAgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIAorICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIAorICAgIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgCisgICAgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgCisgICAgNzAsIDczLCA3NiwgNzMsIDEyOCwgODUsIDY2LCA3MiwgNjUsIDg5LCA2NSwgODQsIDIwNywgODUsIDY2LCA2NSwgNjgsIDY1LCAKKyAgICA3NywgNjUsIDEyOCwgODUsIDY2LCAxMjgsIDg1LCA2NSwgODQsIDcyLCAxMjgsIDg1LCA2NSwgNzgsIDcxLCAxMjgsIDg1LCAKKyAgICA2NSwgMTI4LCA4NSwgMTc4LCA4NSwgNDgsIDUyLCA1MCwgMTI4LCA4NSwgNDgsIDUyLCA0OSwgMTI4LCA4NSwgNDgsIDUyLCAKKyAgICA0OCwgMTI4LCA4NSwgNDgsIDUxLCA1NywgMTI4LCA4NSwgNDgsIDUxLCA1NiwgMTI4LCA4NSwgNDgsIDUxLCA1NSwgMTI4LCAKKyAgICA4NSwgNDgsIDUxLCA1NCwgMTI4LCA4NSwgNDgsIDUxLCA1MywgMTI4LCA4NSwgNDgsIDUxLCA1MiwgMTI4LCA4NSwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDEyOCwgODUsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgODUsIDQ4LCA1MSwgNDgsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDg1LCA0OCwgNTAsIDU2LCAxMjgsIDg1LCA0OCwgNTAsIDU1LCAxMjgsIDg1LCA0OCwgNTAsIDU0LCAxMjgsIDg1LCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDg1LCA0OCwgNTAsIDUyLCAxMjgsIDg1LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NSwgNDgsIAorICAgIDUwLCA1MSwgMTI4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA4NSwgNDgsIDUwLCA0OCwgCisgICAgMTI4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA4NSwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA4NSwgNDgsIDQ5LCAKKyAgICA1MSwgMTI4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA4NSwgNDgsIAorICAgIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDg1LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDg1LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgNzMsIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIAorICAgIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIDcxLCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgCisgICAgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgCisgICAgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgCisgICAgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgCisgICAgODQsIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIAorICAgIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCAKKyAgICA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIAorICAgIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgCisgICAgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgCisgICAgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKKyAgICA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgCisgICAgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKKyAgICA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCAKKyAgICA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgCisgICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIAorICAgIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIAorICAgIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgCisgICAgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCAKKyAgICA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCAKKyAgICA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCAKKyAgICA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgCisgICAgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCAKKyAgICA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIAorICAgIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgCisgICAgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgCisgICAgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAKICAgICAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCAKICAgICA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIAotICAgIDgzLCA2NSwgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIAotICAgIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCAKLSAgICA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCAKLSAgICA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIAotICAgIDc5LCAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgCi0gICAgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAKLSAgICAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIAotICAgIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgCi0gICAgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCAKLSAgICA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIAotICAgIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgCi0gICAgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgCi0gICAgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIAotICAgIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAKLSAgICAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIAotICAgIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIAotICAgIDEyOCwgODQsIDgyLCA3MywgODAsIDc5LCA2OCwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgCi0gICAgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCAKLSAgICA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAotICAgIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgCi0gICAgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIAotICAgIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIAotICAgIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgCi0gICAgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCAKLSAgICA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIAotICAgIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAKLSAgICAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIAotICAgIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAKLSAgICAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIAorICAgIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIAorICAgIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgCisgICAgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIAorICAgIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgCisgICAgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCAKKyAgICA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIAorICAgIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIAorICAgIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgCisgICAgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCAKKyAgICA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAorICAgIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgCisgICAgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCAKKyAgICA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgCisgICAgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCAKKyAgICA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIAorICAgIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKKyAgICA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgCisgICAgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgCisgICAgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIDg0LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCA3OSwgCisgICAgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDgyLCA3MywgODAsIDc5LCA2OCwgMTI4LCAKKyAgICA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgCisgICAgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCAKKyAgICA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgCisgICAgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAxMjgsIAorICAgIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIDc5LCAKKyAgICA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDIxMiwgODQsIDgyLCA2NSwgNzgsIAogICAgIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIDgzLCAKICAgICA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzcsIDg3LCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgNzcsIDEyOCwgODQsIAogICAgIDgyLCA2NSwgMjA1LCA4NCwgODIsIDY1LCA3MywgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzMsIDIwNiwgODQsIDgyLCA2NSwgCkBAIC00OTMsMTYgKzU4OSwxNyBAQAogICAgIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDIxMSwgODQsIDc5LCA4MiwgNjcsIDcyLCAxMjgsIDg0LCA3OSwgODEsIDEyOCwgCiAgICAgODQsIDc5LCA4MCwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIDgwLCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCAKICAgICA4NCwgNzksIDgwLCAxMjgsIDg0LCA3OSwgMjA4LCA4NCwgNzksIDc5LCA4NCwgNzIsIDEyOCwgODQsIDc5LCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgNzksIDc4LCA3OSwgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDE5NywgODQsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCAKLSAgICA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIAotICAgIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAKLSAgICAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIAotICAgIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCAKLSAgICA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCAKLSAgICA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKKyAgICAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIAorICAgIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIDg0LCA3OSwgCisgICAgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAKKyAgICAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIAorICAgIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgCisgICAgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgCisgICAgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCAKKyAgICA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgCisgICAgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIAorICAgIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCiAgICAgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCAKICAgICA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2NSwgMTI4LCA4NCwgNzYsIAogICAgIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCA4OCwgMTI4LCA4NCwgNzMsIApAQCAtNTEzLDEyMSArNjEwLDEyMyBAQAogICAgIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgCiAgICAgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCAKICAgICA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgCi0gICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCi0gICAgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIAotICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCi0gICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODQsIAotICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKLSAgICA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAyMTIsIDg0LCA3MywgNzMsIDEyOCwgODQsIDczLCA3MSwgNzIsIAotICAgIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgCi0gICAgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIAotICAgIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIAotICAgIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCAKLSAgICA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIAotICAgIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIAotICAgIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCAKLSAgICA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCAKLSAgICA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAotICAgIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgCi0gICAgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCAKLSAgICA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDg0LCA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAKLSAgICAxOTYsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgCi0gICAgMjE3LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIAotICAgIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgCi0gICAgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIAotICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCAKLSAgICA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgCi0gICAgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIAotICAgIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgCi0gICAgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgCi0gICAgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIAotICAgIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgCi0gICAgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCAKLSAgICA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIAotICAgIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCAKLSAgICA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCAKLSAgICA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIAotICAgIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgCi0gICAgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCAKLSAgICA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIAotICAgIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgCi0gICAgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAKLSAgICAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCAKLSAgICA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIAotICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgCi0gICAgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCAKLSAgICA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCi0gICAgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCAKLSAgICA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIAotICAgIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2OSwgCi0gICAgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgCi0gICAgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNDUsIAotICAgIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIDY3LCA3MiwgCi0gICAgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCAKLSAgICA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIAotICAgIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgCi0gICAgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgCi0gICAgNjUsIDg1LCAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCAKLSAgICA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIAotICAgIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgCi0gICAgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAKLSAgICAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCAKLSAgICA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCA2NiwgNjUsIAotICAgIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc3LCAxMjgsIAotICAgIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgCi0gICAgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCA3NiwgNjksIDc4LCAKLSAgICAyMTIsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIAotICAgIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgCi0gICAgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCAKLSAgICA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIAotICAgIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIAotICAgIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgCi0gICAgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCA2NSwgCi0gICAgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIDg0LCAKLSAgICA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgODQsIAotICAgIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIAotICAgIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIAotICAgIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIAotICAgIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIAotICAgIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgCi0gICAgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgCi0gICAgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCAKLSAgICA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCAKLSAgICA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIAotICAgIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgyLCA4OCwgMTI4LCAKLSAgICA4MywgODksIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIAotICAgIDgyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgCi0gICAgODUsIDg3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCAKLSAgICA3NywgNzksIDIxMSwgODMsIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIAotICAgIDcxLCA3NywgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCisgICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgCisgICAgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCAKKyAgICA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgCisgICAgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIAorICAgIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDIxMiwgODQsIDczLCA3MSwgNzIsIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIAorICAgIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgCisgICAgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgCisgICAgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCAKKyAgICA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIAorICAgIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCAKKyAgICA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgCisgICAgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCAKKyAgICA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIAorICAgIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCAKKyAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIAorICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgCisgICAgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKKyAgICA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIAorICAgIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgCisgICAgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCAKKyAgICA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCAKKyAgICA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgCisgICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAKKyAgICAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCisgICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAorICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgCisgICAgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCAKKyAgICA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIAorICAgIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgCisgICAgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCAKKyAgICA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIAorICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgCisgICAgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIAorICAgIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKKyAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCisgICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAorICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCisgICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKKyAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIAorICAgIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKKyAgICAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCAKKyAgICA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIAorICAgIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgCisgICAgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKKyAgICA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIAorICAgIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAKKyAgICAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgCisgICAgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgCisgICAgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIAorICAgIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIAorICAgIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIAorICAgIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgCisgICAgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCAKKyAgICA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIAorICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgCisgICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKKyAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAorICAgIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgCisgICAgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCAKKyAgICA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCAKKyAgICA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIAorICAgIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIAorICAgIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgCisgICAgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgCisgICAgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCAKKyAgICA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgCisgICAgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgCisgICAgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCAKKyAgICA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIAorICAgIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIAorICAgIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgCisgICAgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIAorICAgIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIAorICAgIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIAorICAgIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIAorICAgIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgCisgICAgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAKKyAgICAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIAorICAgIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgCisgICAgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIAogICAgIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIAogICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgCkBAIC02NTQsMjIzICs3NTMsMjI4IEBACiAgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCAKICAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgCiAgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCA2NSwgMTI4LCA4MywgODksIDEyOCwgODMsIDg3LCAKLSAgICA5MCwgMTI4LCA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIAotICAgIDgyLCA2OCwgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIAotICAgIDgzLCA4NywgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgCi0gICAgODcsIDczLCA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAKLSAgICAxMjgsIDgzLCA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCAKLSAgICA4MywgODcsIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCi0gICAgMTI4LCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgCi0gICAgODUsIDg0LCAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIAotICAgIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgCi0gICAgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCAKLSAgICA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIAotICAgIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgCi0gICAgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCAKLSAgICA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIAotICAgIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAKLSAgICAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCAKLSAgICA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIAotICAgIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIAotICAgIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIAotICAgIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgCi0gICAgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIAotICAgIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgCi0gICAgODMsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCAKLSAgICA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIAotICAgIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgCi0gICAgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCAKLSAgICA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgCi0gICAgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIAotICAgIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIAotICAgIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgMjA4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAotICAgIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIAotICAgIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCAKLSAgICA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCAKLSAgICA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIAotICAgIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgCi0gICAgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgMjA1LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCAKLSAgICA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgCi0gICAgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIAotICAgIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIAotICAgIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIAotICAgIDY1LCA3MCwgNzAsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIAotICAgIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgCi0gICAgODgsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgCi0gICAgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIAotICAgIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgCi0gICAgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgCi0gICAgODUsIDc3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgCi0gICAgNjUsIDY5LCA2NSwgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDY1LCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgCi0gICAgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCAKLSAgICA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgODMsIDEyOCwgODMsIAotICAgIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgCi0gICAgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCAKLSAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIAotICAgIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDc5LCA3OSwgNzgsIDEyOCwgODMsIDgwLCA3NiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA4MCwgNzYsIDY1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIAotICAgIDczLCA4MiwgNzMsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCAKLSAgICA2OCwgNjksIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY3LCA2OSwgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIAotICAgIDIwNCwgODMsIDgwLCA2OSwgODMsIDc3LCA3MywgNzYsIDIwNywgODMsIDgwLCA2OSwgNjksIDY4LCA2NiwgNzksIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDcyLCAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgMjAwLCA4MywgODAsIDY5LCAKLSAgICA2NywgNzMsIDY1LCA3NiwgMTI4LCA4MywgODAsIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgMjEwLCA4MywgODAsIDY5LCA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgCi0gICAgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDEyOCwgODMsIDgwLCA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgCi0gICAgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgODMsIDgwLCAxMjgsIDgzLCA3OSwgODksIDEyOCwgODMsIDc5LCAKLSAgICA4NywgNzMsIDc2LCAyMDcsIDgzLCA3OSwgODcsIDEyOCwgODMsIDc5LCA4NSwgODQsIDcyLCA2OSwgODIsIDIwNiwgODMsIAotICAgIDc5LCA4NSwgODQsIDcyLCA0NSwgODMsIDc2LCA2NSwgODYsIDY5LCAyMTcsIDgzLCA3OSwgODUsIDg0LCAyMDAsIDgzLCA3OSwgCi0gICAgODUsIDgyLCA2NywgNjksIDEyOCwgODMsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKLSAgICA3OSwgODUsIDc4LCA2NSwgODAsIDEyOCwgODMsIDc5LCA4NSwgMTI4LCA4MywgNzksIDgzLCAxMjgsIDgzLCA3OSwgODEsIAotICAgIDEyOCwgODMsIDc5LCA3OSwgMjA2LCA4MywgNzksIDc5LCAxMjgsIDgzLCA3OSwgNzgsIDc0LCA2NSwgNzcsIDEyOCwgODMsIAotICAgIDc5LCA3OCwgNzEsIDEyOCwgODMsIDc5LCA3OCwgMTI4LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgCi0gICAgODUsIDgzLCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3MSwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA4MywgNzksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgCi0gICAgNzksIDcwLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCA4MywgNzksIDE5OCwgODMsIDc5LCAKLSAgICA2NywgNzMsIDY5LCA4NCwgODksIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIDgzLCA3OSwgNjUsIDgwLCAxMjgsIAotICAgIDgzLCA3OSwgNjUsIDEyOCwgODMsIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgCi0gICAgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKLSAgICA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIAotICAgIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIAotICAgIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIAotICAgIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgCi0gICAgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCAKLSAgICA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIAotICAgIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgCi0gICAgNjksIDEyOCwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIAotICAgIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgCi0gICAgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCAKLSAgICA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIAotICAgIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgCi0gICAgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgCi0gICAgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAotICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKLSAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCi0gICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKLSAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNzMsIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCAKLSAgICA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgCi0gICAgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIDg1LCAKLSAgICAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgNzUsIAotICAgIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgMTI4LCAKLSAgICA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgCi0gICAgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgCi0gICAgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCAKLSAgICA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgCi0gICAgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgCi0gICAgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgCi0gICAgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgCi0gICAgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCAKLSAgICA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIAotICAgIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgCi0gICAgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCA3OSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgCi0gICAgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgCi0gICAgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODQsIDg5LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIAotICAgIDcxLCA0NSwgODMsIDc5LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzksIDgzLCAKLSAgICAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzgsIDY1LCA4NSwgMTk2LCA4MywgNzIsIAotICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgCi0gICAgODQsIDg3LCA3MywgNzEsIDQ1LCA2NiwgNzQsIDY1LCA4MiwgNzUsIDY1LCAyMDYsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIAotICAgIDg0LCA4NywgNzMsIDcxLCA0NSwgNjUsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCAKLSAgICAyMTIsIDgzLCA3MiwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNzksIDIwOSwgODMsIDcyLCA3OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA3OSwgNzksIDg0LCA3MywgNzgsIDE5OSwgODMsIDcyLCA3OSwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDc5LCAxMjgsIAotICAgIDgzLCA3MiwgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCA3OSwgCi0gICAgMTk3LCA4MywgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIDY1LCAKLSAgICA3NiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgNzIsIAotICAgIDczLCA4MiwgMjEyLCA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDIxMCwgODMsIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAKLSAgICAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIAotICAgIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAxOTMsIAotICAgIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIDgzLCAKLSAgICA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgODMsIAotICAgIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIAorICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCA4MywgODcsIAorICAgIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgMTI4LCA4MywgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgNzMsIDc3LCAKKyAgICA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCA3MywgCisgICAgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCA4NywgCisgICAgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIDY1LCAKKyAgICA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgODMsIAorICAgIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgCisgICAgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgCisgICAgNjgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIAorICAgIDY1LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgCisgICAgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCAKKyAgICA4MCwgNjksIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgCisgICAgODMsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIAorICAgIDIxMCwgODMsIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIAorICAgIDc5LCAxMjgsIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgCisgICAgODUsIDc4LCA4MiwgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCAKKyAgICA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgCisgICAgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIAorICAgIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgCisgICAgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgCisgICAgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MiwgODUsIDgyLCAKKyAgICAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCA4MywgODUsIDY3LCAKKyAgICA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDIxMSwgODMsIDg1LCA2NywgNjcsIAorICAgIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgCisgICAgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCAKKyAgICA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIAorICAgIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgCisgICAgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCAKKyAgICA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIAorICAgIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgCisgICAgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKKyAgICA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgCisgICAgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA4OSwgCisgICAgMTI4LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCAKKyAgICA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCAKKyAgICA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCAKKyAgICA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCAKKyAgICA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIAorICAgIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgCisgICAgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKKyAgICA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIAorICAgIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzcsIDEyOCwgCisgICAgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAKKyAgICAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIAorICAgIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCAKKyAgICA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgCisgICAgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCAKKyAgICA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgCisgICAgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgCisgICAgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCAKKyAgICA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIAorICAgIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCAKKyAgICA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIAorICAgIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIAorICAgIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIAorICAgIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgCisgICAgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIAorICAgIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgCisgICAgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgCisgICAgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCAKKyAgICA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIAorICAgIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgCisgICAgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIAorICAgIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAKKyAgICAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgCisgICAgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCA2NSwgNzYsIDEyOCwgODMsIDgwLCAKKyAgICA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIAorICAgIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgCisgICAgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCAKKyAgICA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIAorICAgIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgCisgICAgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAKKyAgICAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCAKKyAgICA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIAorICAgIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgCisgICAgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCAKKyAgICA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCA4MiwgMTkzLCA4MywgNzksIDgxLCAxMjgsIDgzLCAKKyAgICA3OSwgNzksIDIwNiwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCA4MywgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIAorICAgIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDgwLCA2OSwgNzgsIDE5OSwgODMsIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgCisgICAgNjgsIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAyMTEsIDgzLCA3OSwgNzIsIDEyOCwgODMsIDc5LCAKKyAgICA3MSwgNjgsIDczLCA2NSwgMjA2LCA4MywgNzksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgCisgICAgODQsIDczLCA3OSwgMjA2LCA4MywgNzksIDcwLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCAKKyAgICA4MywgNzksIDE5OCwgODMsIDc5LCA2NywgNzMsIDY5LCA4NCwgODksIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIAorICAgIDgzLCA3OSwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgNjUsIDEyOCwgODMsIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgCisgICAgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgCisgICAgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgCisgICAgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCAKKyAgICA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgCisgICAgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIAorICAgIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAorICAgIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgCisgICAgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCAKKyAgICA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIAorICAgIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgCisgICAgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgCisgICAgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCisgICAgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIAorICAgIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgCisgICAgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgCisgICAgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgCisgICAgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAorICAgIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgCisgICAgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCAKKyAgICA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCAKKyAgICA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgCisgICAgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAyMTAsIDgzLCAKKyAgICA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIDIwNiwgODMsIAorICAgIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIDgzLCA3MywgNzUsIAorICAgIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIAorICAgIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgCisgICAgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgCisgICAgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCAKKyAgICA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIAorICAgIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgCisgICAgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAKKyAgICAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzAsIAorICAgIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgCisgICAgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCAKKyAgICA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgCisgICAgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIAorICAgIDgzLCA3MiwgNzksIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCAKKyAgICA2OSwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCAKKyAgICA4NCwgODcsIDczLCA3MSwgNDUsIDgzLCA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgCisgICAgNDUsIDc5LCA4MywgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIAorICAgIDE5NiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgCisgICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIAorICAgIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgMjEyLCA4MywgNzIsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDc5LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA4MywgNzIsIDc5LCA3MSwgMjAxLCA4MywgNzIsIDc5LCAxOTksIDgzLCA3MiwgNzksIDY5LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDE5NywgODMsIDcyLCA3OSwgNjUsIDEyOCwgODMsIDcyLCA3OSwgMTI4LCA4MywgNzIsIDczLCA4OSwgODksIDY1LCAKKyAgICA2NSwgNzYsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDE5MywgODMsIAorICAgIDcyLCA3MywgODIsIDIxMiwgODMsIDcyLCA3MywgODIsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDczLCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDczLCAyMTAsIDgzLCA3MiwgNzMsIDgxLCAxMjgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCAKKyAgICA4NCwgMjA3LCA4MywgNzIsIDczLCA3OCwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA2OCwgMTkzLCA4MywgNzIsIAorICAgIDczLCA3OCwgMTI4LCA4MywgNzIsIDczLCAyMDYsIDgzLCA3MiwgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzIsIDczLCA3NywgCisgICAgMTkzLCA4MywgNzIsIDczLCA3NywgMTI4LCA4MywgNzIsIDczLCAyMDUsIDgzLCA3MiwgNzMsIDczLCA3OCwgMTI4LCA4MywgCisgICAgNzIsIDczLCA3MywgMTI4LCA4MywgNzIsIDczLCA3MCwgMjEyLCA4MywgNzIsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDY4LCAxMjgsIDgzLCA3MiwgNzMsIDE5NiwgODMsIDcyLCA3MiwgNjUsIDEyOCwgODMsIDcyLCA3MiwgMTkzLCAKKyAgICA4MywgNzIsIDY5LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NiwgNjUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNjksIDg1LCA3OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDg0LCA4NSwgMTI4LCA4MywgCisgICAgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNjksIDg0LCAKICAgICAxMjgsIDgzLCA3MiwgNjksIDIxMiwgODMsIDcyLCA2OSwgODMsIDcyLCA3NiwgNjUsIDc3LCAxMjgsIDgzLCA3MiwgNjksIAogICAgIDgzLCA3MiwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzMsIDE5OSwgODMsIDcyLCA2OSwgODMsIDcyLCA1MCwgCiAgICAgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDEyOCwgODMsIDcyLCA2OSwgODEsIDY5LCAyMDQsIDgzLCA3MiwgNjksIDgwLCAKQEAgLTg4MCwzNzYgKzk4NCwzODQgQEAKICAgICAxMjgsIDgzLCA3MiwgNjksIDY5LCAyMDYsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIAogICAgIDY1LCA4NCwgMTI4LCA4MywgNzIsIDE5NywgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAxMjgsIAogICAgIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIAotICAgIDc5LCAyMTAsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OCwgODQsIAotICAgIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAKLSAgICAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIAotICAgIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgCi0gICAgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCAKLSAgICA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIAotICAgIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAKLSAgICAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIAotICAgIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAKLSAgICAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIAotICAgIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgCi0gICAgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCAKLSAgICA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgCi0gICAgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIAotICAgIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgCi0gICAgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCAKLSAgICA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCAKLSAgICA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIAotICAgIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIAotICAgIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgCi0gICAgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCAKLSAgICA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIAotICAgIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgCi0gICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKLSAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCi0gICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKLSAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCi0gICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgNzMsIDc2LCAKLSAgICAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAKLSAgICAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIAotICAgIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIAotICAgIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgCi0gICAgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCAKLSAgICA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgCi0gICAgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgCi0gICAgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCAKLSAgICA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIAotICAgIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCAKLSAgICA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIAotICAgIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgCi0gICAgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAKLSAgICAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgCi0gICAgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIAotICAgIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCAKLSAgICA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCAKLSAgICA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIAotICAgIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgCi0gICAgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIAotICAgIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgCi0gICAgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAKLSAgICAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIAotICAgIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIAotICAgIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIAotICAgIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIAotICAgIDgyLCA4OSwgNjUsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgCi0gICAgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgCi0gICAgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIAotICAgIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIAotICAgIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCAKLSAgICA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCAKLSAgICA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIAotICAgIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAKLSAgICAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCAKLSAgICA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIAotICAgIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCAKLSAgICA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCAKLSAgICA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIAotICAgIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIAotICAgIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgCi0gICAgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIAotICAgIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgCi0gICAgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCAKLSAgICA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3OSwgMTI4LCA4MiwgNzksIDc3LCA2NSwgMjA2LCAKLSAgICA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIAotICAgIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIAotICAgIDgyLCA3OSwgNjUsIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgCi0gICAgNzgsIDg5LCA3MywgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCAKLSAgICA3OCwgNjUsIDIwNSwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgCi0gICAgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCAKLSAgICA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIAotICAgIDY1LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MywgMTI4LCA4MiwgNzMsIDcxLCA4NiwgCi0gICAgNjksIDY4LCA3MywgMTk1LCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCA3MCwgCi0gICAgMjEyLCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIAotICAgIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIAotICAgIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIAotICAgIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgCi0gICAgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NSwgMjA0LCA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCAKLSAgICA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKLSAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIAotICAgIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgCi0gICAgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIDg0LCAKLSAgICA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgNzksIAotICAgIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgCi0gICAgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAKLSAgICAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIAotICAgIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAKLSAgICAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCAKLSAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCAKLSAgICA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIAotICAgIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAKLSAgICAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIAotICAgIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgCi0gICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCAKLSAgICA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIAotICAgIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgCisgICAgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgODMsIDcyLCAKKyAgICA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIAorICAgIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgCisgICAgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCAKKyAgICA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCAKKyAgICA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIAorICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgCisgICAgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCAKKyAgICA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIAorICAgIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgCisgICAgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCAKKyAgICA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIAorICAgIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgCisgICAgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAKKyAgICAyMTEsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIAorICAgIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgCisgICAgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIDc3LCAKKyAgICA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgCisgICAgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIAorICAgIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCAKKyAgICA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIAorICAgIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAorICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIAorICAgIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIAorICAgIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCAKKyAgICA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgCisgICAgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCAKKyAgICA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIAorICAgIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgCisgICAgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIAorICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgCisgICAgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIAorICAgIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCAKKyAgICA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIAorICAgIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgCisgICAgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgCisgICAgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIAorICAgIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgCisgICAgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDg0LCAKKyAgICA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAxMjgsIDgzLCA2NSwgODQsIAorICAgIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgCisgICAgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCAKKyAgICA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIAorICAgIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgCisgICAgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIAorICAgIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgCisgICAgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgCisgICAgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIAorICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgCisgICAgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCAKKyAgICA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIAorICAgIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgCisgICAgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCAKKyAgICA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgMTI4LCA4MywgNjUsIAorICAgIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA3MSwgCisgICAgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgCisgICAgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCAKKyAgICA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIAorICAgIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgCisgICAgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgCisgICAgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgCisgICAgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIAorICAgIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgCisgICAgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgCisgICAgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAKKyAgICAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCAKKyAgICA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIAorICAgIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIAorICAgIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgCisgICAgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCAKKyAgICA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgCisgICAgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCAKKyAgICA3MSwgNjYsIDIxNywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCAKKyAgICA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIAorICAgIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgNzksIAorICAgIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDc5LCAxMjgsIAorICAgIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgMTI4LCA4MiwgODIsIDY5LCA4OCwgCisgICAgMTI4LCA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgCisgICAgODIsIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgCisgICAgODIsIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDgyLCAKKyAgICA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIAorICAgIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCAKKyAgICA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIAorICAgIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgCisgICAgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCAKKyAgICA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgNzIsIAorICAgIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgyLCA3OSwgCisgICAgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgODMsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCA3OCwgMTk5LCAKKyAgICA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCA4MiwgNzcsIAorICAgIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgMTI4LCA4MiwgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIAorICAgIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIAorICAgIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAKKyAgICAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCAKKyAgICA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIAorICAgIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIDc1LCA4MiwgCisgICAgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIAorICAgIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgCisgICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIAorICAgIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCAKKyAgICA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgCisgICAgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIAorICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgCisgICAgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIAorICAgIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIAorICAgIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgCisgICAgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgCisgICAgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCAKKyAgICA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCAKKyAgICA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIAorICAgIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCAKKyAgICA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIAorICAgIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgCisgICAgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCAKKyAgICA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCAKKyAgICA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgCisgICAgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIAorICAgIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgCisgICAgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAKKyAgICAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCAKKyAgICA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIAorICAgIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgCisgICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCAKKyAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIAorICAgIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgCisgICAgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCAKICAgICA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAogICAgIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgCiAgICAgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIApAQCAtMTI2NSw1NiArMTM3Nyw1NyBAQAogICAgIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAKICAgICAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIAogICAgIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIAotICAgIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCAKLSAgICA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgCi0gICAgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MywgMTI4LCA4MiwgCi0gICAgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCAKLSAgICA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIAotICAgIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCAKLSAgICA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NiwgNjYsIAotICAgIDczLCA4NCwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgCi0gICAgMTI4LCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgCi0gICAgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgCi0gICAgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIAotICAgIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgCi0gICAgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgCi0gICAgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCAKLSAgICA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCAKLSAgICA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCAKLSAgICA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCAKLSAgICA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCAKLSAgICA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCAKLSAgICA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgCi0gICAgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIAotICAgIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAKLSAgICAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIAotICAgIDIxMSwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIAotICAgIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAKLSAgICAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgCi0gICAgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCAKLSAgICA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIAotICAgIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCAKLSAgICA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAKLSAgICAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgCi0gICAgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgCi0gICAgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgCi0gICAgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCAKLSAgICA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCAKKyAgICA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIAorICAgIDY1LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgCisgICAgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAKKyAgICAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIAorICAgIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAKKyAgICAyMDAsIDgyLCA2NSwgNzIsIDEyOCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCAKKyAgICA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIAorICAgIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIAorICAgIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgCisgICAgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCAKKyAgICA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIAorICAgIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIAorICAgIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgCisgICAgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIAorICAgIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIAorICAgIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgCisgICAgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgCisgICAgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCAKKyAgICA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIAorICAgIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgCisgICAgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCAKKyAgICA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCAKKyAgICA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgCisgICAgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCAKKyAgICA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIAorICAgIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgCisgICAgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIAorICAgIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAKKyAgICAyMTIsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgCisgICAgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgCisgICAgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgCisgICAgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIAorICAgIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIAorICAgIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgCisgICAgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgCisgICAgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgCisgICAgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgCiAgICAgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg1LCAKICAgICAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCAKICAgICA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIApAQCAtMTMyOCwyOTcgKzE0NDEsMzA3IEBACiAgICAgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgMTI4LCA4MCwgCiAgICAgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgNjUsIDEyOCwgCiAgICAgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIDgwLCA4NSwgCi0gICAgODQsIDgyLCA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgMTI4LCA4MCwgODUsIAotICAgIDIxMiwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzUsIDY1LCAKLSAgICAxMjgsIDgwLCA4NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIDg1LCA4MiwgODMsIAotICAgIDY5LCAxMjgsIDgwLCA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAxMjgsIDgwLCA4NSwgCi0gICAgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCA4NSwgODAsIDEyOCwgCi0gICAgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCA4MCwgODUsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDg1LCA3NywgCi0gICAgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgCi0gICAgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCi0gICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIAotICAgIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgCi0gICAgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIAotICAgIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgCi0gICAgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCAKLSAgICA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIAotICAgIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgCi0gICAgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIAotICAgIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgCi0gICAgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCAKLSAgICA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIAotICAgIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgCi0gICAgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCAKLSAgICA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIAotICAgIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIAotICAgIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIAotICAgIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgCi0gICAgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIAotICAgIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgCi0gICAgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCAKLSAgICA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIAotICAgIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc2LCAKLSAgICA3MywgODMsIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIAotICAgIDY5LCAxMjgsIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgCi0gICAgNzUsIDc5LCA3NCwgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIAotICAgIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIDgyLCAyMTcsIDgwLCAKLSAgICA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDY1LCAxMjgsIAotICAgIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIDc2LCA4NSwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCA4NSwgODMsIAotICAgIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIDc2LCA4NSwgCi0gICAgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgCi0gICAgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCAKLSAgICA2NSwgODksIDczLCA3OCwgMTk5LCA4MCwgNzYsIDY1LCA4MywgODQsIDczLCA2NywgODMsIDEyOCwgODAsIDc2LCA2NSwgNzgsIAotICAgIDY5LCAxMjgsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgwLCA3NiwgNjUsIDc4LCA2NywgMjAzLCA4MCwgNzYsIDY1LCA3NSwgCi0gICAgMTI4LCA4MCwgNzYsIDY1LCA3MSwgNzMsIDc5LCAyMTEsIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzIsIDc5LCA3NiwgNjgsIDY5LCAKLSAgICAyMTAsIDgwLCA3NiwgNjUsIDY3LCAxOTcsIDgwLCA3NiwgNjUsIDEyOCwgODAsIDczLCA5MCwgOTAsIDczLCA2NywgNjUsIAotICAgIDg0LCA3OSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNjUsIDEyOCwgODAsIDczLCA4OCwgMTI4LCA4MCwgNzMsIDg3LCA4MiwgCi0gICAgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDc1LCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCAKLSAgICA4MiwgMjAzLCA4MCwgNzMsIDg0LCAxMjgsIDgwLCA3MywgODMsIDg0LCA3OSwgNzYsIDEyOCwgODAsIDczLCA4MywgNjksIAotICAgIDc2LCA2OSwgNzIsIDEyOCwgODAsIDczLCA4MywgNjcsIDY5LCA4MywgMTI4LCA4MCwgNzMsIDgyLCA3MywgNzEsIDEyOCwgCi0gICAgODAsIDczLCA4MiwgNzMsIDE5OSwgODAsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgODAsIDczLCA4MCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgODAsIDczLCA4MCwgNjUsIAotICAgIDY5LCA3NywgNjYsIDY1LCAxMjgsIDgwLCA3MywgODAsIDEyOCwgODAsIDczLCA3OCwgODcsIDcyLCA2OSwgNjksIDIwNCwgCi0gICAgODAsIDczLCA3OCwgNjksIDY1LCA4MCwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MywgNzgsIDY1LCAKLSAgICA4MiwgNjYsIDc5LCA4MiwgNjUsIDgzLCAxMjgsIDgwLCA3MywgNzYsIDc2LCAxMjgsIDgwLCA3MywgNzYsIDE5NywgODAsIAotICAgIDczLCA3NiwgNjcsIDgyLCA3OSwgMjE1LCA4MCwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNzUsIDc5LCAKLSAgICAxMjgsIDgwLCA3MywgNzEsIDEyOCwgODAsIDczLCAxOTksIDgwLCA3MywgNjksIDg4LCAxMjgsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODAsIDczLCA2OSwgCi0gICAgODUsIDgwLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgMjA4LCAKLSAgICA4MCwgNzMsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2OSwgNjksIDgxLCAxMjgsIDgwLCA3MywgNjksIDY3LCA2OSwgMTI4LCA4MCwgNzMsIDY5LCAxMjgsIDgwLCA3MywgCi0gICAgNjcsIDc1LCA2OSwgODQsIDEyOCwgODAsIDczLCA2NywgNzUsIDEyOCwgODAsIDczLCA2NSwgODMsIDg1LCA4NCwgNzksIDgyLCAKLSAgICA4NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgNzcsIDE5MywgODAsIDczLCA2NSwgNzgsIDc5LCAxMjgsIDgwLCAyMDEsIDgwLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgwLCA3MiwgODUsIDg0LCA3MiwgNjUsIDc5LCAxMjgsIDgwLCA3MiwgODUsIDIxMCwgODAsIAotICAgIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA3MiwgODIsIDY1LCA4MywgNjksIDEyOCwgODAsIDcyLCA3OSwgNzgsIDY5LCA4MywgCi0gICAgMTI4LCA4MCwgNzIsIDc5LCA2OSwgNzgsIDczLCA2NywgNzMsIDY1LCAyMDYsIDgwLCA3MiwgNzksIDY1LCAxMjgsIDgwLCAKLSAgICA3MiwgNzksIDEyOCwgODAsIDcyLCAyMDcsIDgwLCA3MiwgNzgsIDY1LCA2OSwgMjAzLCA4MCwgNzIsIDczLCA3OCwgODQsIAotICAgIDcyLCA4NSwgMTI4LCA4MCwgNzIsIDczLCA3NiwgNzksIDgzLCA3OSwgODAsIDcyLCA2OSwgODIsIDIxMSwgODAsIDcyLCA3MywgCi0gICAgNzYsIDczLCA4MCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDcyLCA3MywgNjksIAotICAgIDg1LCA4MCwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgMjAwLCA4MCwgCi0gICAgNzIsIDczLCAxMjgsIDgwLCA3MiwgMjAxLCA4MCwgNzIsIDY5LCA2OSwgMTI4LCA4MCwgNzIsIDY5LCAxMjgsIDgwLCA3MiwgCi0gICAgNjUsIDgzLCA2OSwgNDUsIDE5OCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk0LCA4MCwgNzIsIDY1LCA4MiwgODksIDc4LCAKLSAgICA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIDgwLCAKLSAgICAxOTMsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIAotICAgIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIDEyOCwgODAsIDY5LCA4NSwgODgsIDEyOCwgODAsIDY5LCA4NSwgODQsIAotICAgIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3OSwgNzUsIDc5LCA4NSwgCi0gICAgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDczLCAxMjgsIDgwLCA2OSwgODQsIDY1LCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA3NiwgNzYsIDY5LCAxOTYsIDgwLCA2OSwgODMsIDc5LCAxMjgsIAotICAgIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCA4MCwgCi0gICAgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIDcyLCAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA2OSwgCi0gICAgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIAotICAgIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIDY5LCA4MiwgCi0gICAgNzcsIDY1LCA3OCwgNjksIDc4LCAyMTIsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCAKLSAgICA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCAKLSAgICA4NCwgNjUsIDEyOCwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIAotICAgIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA2OSwgODQsIDEyOCwgCi0gICAgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgNzksIDgwLCA3NiwgNjksIAotICAgIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3MywgCi0gICAgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAKLSAgICAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIAotICAgIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgCi0gICAgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAKLSAgICAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCAKLSAgICA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgCi0gICAgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCAKLSAgICA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCA2NSwgMjA0LCA4MCwgNjksIDY1LCA2NywgNzIsIDEyOCwgODAsIAotICAgIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIAotICAgIDY1LCA5MCwgNjksIDgyLCAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgCi0gICAgNjUsIDIxNSwgODAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIDIwMCwgODAsIAotICAgIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCAKLSAgICA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgCi0gICAgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIDc5LCA4NSwgCi0gICAgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIAotICAgIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDczLCAKLSAgICA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIAotICAgIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIAotICAgIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAKLSAgICAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCAKLSAgICA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIAotICAgIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIAotICAgIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgCi0gICAgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgCi0gICAgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCAKLSAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIAotICAgIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgCi0gICAgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgCi0gICAgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCAKLSAgICA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIAotICAgIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCAKLSAgICA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIAotICAgIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgCi0gICAgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCAKLSAgICA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIAotICAgIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAKLSAgICAyMDEsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCAKLSAgICA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIAotICAgIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCAKLSAgICA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIAotICAgIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCAKLSAgICA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIAotICAgIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgCi0gICAgODksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCAKLSAgICA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIAotICAgIDg2LCAxMjgsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIAotICAgIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIAotICAgIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgCi0gICAgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCAKLSAgICA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgCi0gICAgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIAotICAgIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgCi0gICAgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIAotICAgIDIwNCwgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIAotICAgIDgzLCA3MywgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgCi0gICAgODUsIDgzLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCAKLSAgICA3OSwgMjEwLCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIAotICAgIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCAKLSAgICA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgCi0gICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDIwNiwgNzksIDc5LCA5MCwgNjksIDEyOCwgNzksIDc5LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCA4NSwgMTI4LCA3OSwgNzksIAotICAgIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgCi0gICAgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCAKLSAgICA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCAKLSAgICA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIAotICAgIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgCi0gICAgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgCi0gICAgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIAotICAgIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIAotICAgIDIwNSwgNzksIDcyLCAxMjgsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIAotICAgIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAKLSAgICAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIAotICAgIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIAotICAgIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgCi0gICAgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCAKLSAgICA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgCi0gICAgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCAKLSAgICA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIAotICAgIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIAotICAgIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgCi0gICAgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgCi0gICAgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCAKLSAgICA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgCi0gICAgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIAotICAgIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCAKLSAgICA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAKLSAgICA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIAotICAgIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAKLSAgICAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgCi0gICAgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCAKLSAgICA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgCi0gICAgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgCisgICAgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAKKyAgICAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIAorICAgIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgCisgICAgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCA2NSwgNzcsIDY1LCAKKyAgICAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIAorICAgIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCAKKyAgICA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIAorICAgIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgCisgICAgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgCisgICAgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCAKKyAgICA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCAKKyAgICA3OSwgODQsIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIAorICAgIDY5LCA2NywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCAKKyAgICA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIAorICAgIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgCisgICAgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCAKKyAgICA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIAorICAgIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIAorICAgIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAKKyAgICAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIAorICAgIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgCisgICAgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIAorICAgIDgzLCA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgCisgICAgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIAorICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgCisgICAgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCAKKyAgICA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIAorICAgIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgCisgICAgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAKKyAgICAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIAorICAgIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgCisgICAgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAKKyAgICA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIAorICAgIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCAKKyAgICA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIAorICAgIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgCisgICAgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIAorICAgIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgCisgICAgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCAKKyAgICA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIAorICAgIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCA3MiwgMTI4LCA4MCwgCisgICAgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc2LCAKKyAgICAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIDczLCAxMjgsIAorICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgODAsIDc5LCA3MywgNzgsIDg0LCAxMjgsIDgwLCAKKyAgICA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCA4MiwgMjE3LCA4MCwgNzksIDY5LCA4NCwgNzMsIDE5NSwgODAsIAorICAgIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA2NSwgMTI4LCA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIAorICAgIDc4LCA2OSwgODUsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgwLCA3NiwgODUsIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgCisgICAgNDUsIDc3LCA3MywgNzgsIDg1LCAyMTEsIDgwLCA3NiwgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIAorICAgIDEyOCwgODAsIDc2LCA4NSwgNzcsIDY5LCAxOTYsIDgwLCA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIAorICAgIDgwLCA3NiwgODUsIDcxLCAxMjgsIDgwLCA3NiwgODUsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgCisgICAgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCA2OCwgMTI4LCAKKyAgICA4MCwgNzYsIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCA3NiwgNjUsIDgzLCA4NCwgNzMsIDY3LCA4MywgMTI4LCA4MCwgNzYsIAorICAgIDY1LCA3OCwgNjksIDEyOCwgODAsIDc2LCA2NSwgNzgsIDE5NywgODAsIDc2LCA2NSwgNzgsIDY3LCAyMDMsIDgwLCA3NiwgCisgICAgNjUsIDc1LCAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3MiwgNzksIDc2LCAKKyAgICA2OCwgNjksIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNzMsIAorICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIDg4LCAxMjgsIDgwLCA3MywgCisgICAgODcsIDgyLCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCAKKyAgICA3MCwgNzksIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCA3NiwgMTI4LCA4MCwgNzMsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIDgwLCA3MywgODIsIDczLCA3MSwgCisgICAgMTI4LCA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA4MCwgNzMsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA4MCwgNzMsIAorICAgIDgwLCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgODAsIDczLCA4MCwgMTI4LCA4MCwgNzMsIDc4LCA4NywgNzIsIDY5LCA2OSwgCisgICAgMjA0LCA4MCwgNzMsIDc4LCA2OSwgNjUsIDgwLCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA3MywgNzgsIDE5NywgODAsIDczLCAKKyAgICA3OCwgNjUsIDgyLCA2NiwgNzksIDgyLCA2NSwgODMsIDEyOCwgODAsIDczLCA3NiwgNzYsIDEyOCwgODAsIDczLCA3NiwgCisgICAgMTk3LCA4MCwgNzMsIDc2LCA2NywgODIsIDc5LCAyMTUsIDgwLCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODAsIDczLCAKKyAgICA3NSwgNzksIDEyOCwgODAsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDE5OSwgODAsIDczLCA2OSwgODgsIDEyOCwgODAsIDczLCAKKyAgICA2OSwgODUsIDgwLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3MywgNjksIAorICAgIDg1LCAyMDgsIDgwLCA3MywgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDgwLCAxMjgsIDgwLCA3MywgNjksIDY5LCA4NCwgCisgICAgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODEsIDEyOCwgODAsIDczLCA2OSwgNjcsIDY5LCAxMjgsIDgwLCA3MywgNjksIDEyOCwgCisgICAgODAsIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgODUsIDg0LCAKKyAgICA3OSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA3NywgMTkzLCA4MCwgNzMsIDY1LCA3OCwgNzksIDEyOCwgODAsIAorICAgIDIwMSwgODAsIDcyLCA4NywgNjUsIDEyOCwgODAsIDcyLCA4NSwgODQsIDcyLCA2NSwgNzksIDEyOCwgODAsIDcyLCA4NSwgCisgICAgMjEwLCA4MCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDcyLCA4MiwgNjUsIDgzLCA2OSwgMTI4LCA4MCwgNzIsIDc5LCAKKyAgICA3OCwgNjksIDgzLCAxMjgsIDgwLCA3MiwgNzksIDY5LCA3OCwgNzMsIDY3LCA3MywgNjUsIDIwNiwgODAsIDcyLCA3OSwgNjUsIAorICAgIDEyOCwgODAsIDcyLCA3OSwgMTI4LCA4MCwgNzIsIDIwNywgODAsIDcyLCA3OCwgNjUsIDY5LCAyMDMsIDgwLCA3MiwgNzMsIAorICAgIDc4LCA4NCwgNzIsIDg1LCAxMjgsIDgwLCA3MiwgNzMsIDc2LCA3OSwgODMsIDc5LCA4MCwgNzIsIDY5LCA4MiwgMjExLCA4MCwgCisgICAgNzIsIDczLCA3NiwgNzMsIDgwLCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODQsIAorICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MywgNzMsIDc5LCAKKyAgICA4MywgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzIsIAorICAgIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKKyAgICAyMDAsIDgwLCA3MiwgNzMsIDEyOCwgODAsIDcyLCAyMDEsIDgwLCA3MiwgNjksIDY5LCAxMjgsIDgwLCA3MiwgNjksIDEyOCwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTQsIDgwLCA3MiwgNjUsIDgyLCAKKyAgICA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgODAsIDcyLCA2NSwgODIsIDEyOCwgODAsIDcyLCA2NSwgNzgsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgNzcsIDEyOCwgODAsIDcyLCA2NSwgNzMsIDgzLCA4NCwgNzksIDIxMSwgODAsIDcyLCA2NSwgNzEsIDgzLCA0NSwgCisgICAgODAsIDE5MywgODAsIDcyLCA2NSwgNjUsIDgyLCA3NSwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDEyOCwgODAsIDcxLCAxMjgsIDgwLCA3MCwgMTI4LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA4MCwgNjksIDg1LCAKKyAgICA4NCwgNjUsIDY5LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDc5LCA3NSwgNzksIAorICAgIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzMsIDEyOCwgODAsIDY5LCA4NCwgCisgICAgNjUsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDc2LCA3NiwgNjksIDE5NiwgODAsIDY5LCA4MywgNzksIAorICAgIDEyOCwgODAsIDY5LCA4MywgMjA3LCA4MCwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODAsIDY5LCA4MywgNjksIDg0LCAxOTMsIAorICAgIDgwLCA2OSwgMjExLCA4MCwgNjksIDgyLCA4NCwgNzIsIDIwNywgODAsIDY5LCA4MiwgODMsIDgwLCA2OSwgNjcsIDg0LCA3MywgCisgICAgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA3MywgNjUsIDIwNiwgODAsIDY5LCA4MiwgCisgICAgODMsIDY5LCA4NiwgNjksIDgyLCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgODIsIDEyOCwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MCwgCisgICAgNjksIDgyLCA3NywgNzMsIDg0LCA4NCwgNjksIDE5NiwgODAsIDY5LCA4MiwgNzcsIDY1LCA3OCwgNjksIDc4LCAyMTIsIDgwLCAKKyAgICA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgCisgICAgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgCisgICAgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCAKKyAgICA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIAorICAgIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCAKKyAgICA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIAorICAgIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKKyAgICA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIAorICAgIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIAorICAgIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCAKKyAgICA2NSwgMjA0LCA4MCwgNjksIDY1LCA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIAorICAgIDY3LCAxOTcsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAKKyAgICA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAyMDAsIAorICAgIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCA4MCwgCisgICAgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCAKKyAgICA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgCisgICAgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA3OSwgCisgICAgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIAorICAgIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgCisgICAgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIAorICAgIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgCisgICAgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIAorICAgIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIAorICAgIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgCisgICAgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgCisgICAgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgODAsIAorICAgIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCA2OCwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc5LCA3NiwgCisgICAgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDY1LCAKKyAgICA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCA4MCwgNjUsIDc4LCAKKyAgICA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA3OCwgNzEsIAorICAgIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgNzcsIDgzLCA3MiwgCisgICAgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCA3NywgNzMsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgNzgsIAorICAgIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjUsIDY5LCA3MiwgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgCisgICAgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgCisgICAgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCAKKyAgICA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDEyOCwgODAsIDY1LCA3MiwgNzYsIAorICAgIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIAorICAgIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKKyAgICA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAxMjgsIDgwLCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgMTI4LCA4MCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKKyAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAorICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAorICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCisgICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKKyAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIAorICAgIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODYsIDEyOCwgNzksIDg1LCA4NCwgCisgICAgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIAorICAgIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgCisgICAgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgNzksIAorICAgIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIDE5NywgCisgICAgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAyMTIsIDc5LCAKKyAgICA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIAorICAgIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgCisgICAgNjgsIDY5LCAyMTAsIDc5LCA4MiwgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCAKKyAgICA4MCwgODQsIDczLCA3OSwgMjA2LCA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIAorICAgIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgCisgICAgODAsIDc5LCA4MywgNzMsIDc4LCAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCAKKyAgICA2NywgNzIsIDg1LCA4MywgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIAorICAgIDY1LCA4NCwgNzksIDIxMCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgCisgICAgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCAKKyAgICA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIAorICAgIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDc5LCAKKyAgICA5MCwgNjksIDEyOCwgNzksIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIAorICAgIDc3LCA4NSwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCisgICAgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCAKKyAgICA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIAorICAgIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCA3NywgNzMsIAorICAgIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgCisgICAgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCAKKyAgICA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIAorICAgIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIAorICAgIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgCisgICAgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAKKyAgICA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgCisgICAgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgCisgICAgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAKKyAgICAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDc5LCAKKyAgICA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIDY2LCA3OSwgNzAsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgNjcsIDIxMiwgNzksIAorICAgIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCA2NiwgMTI4LCA3OSwgCisgICAgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKKyAgICA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA1MywgNDgsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgNTIsIDU2LCAxMjgsIAorICAgIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCA0OCwgNTIsIDQ5LCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIDU2LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjcsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIDQ4LCA1MSwgNDgsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCA1NCwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIDc5LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCA0OSwgNTUsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIDQ4LCA0OSwgNDgsIAorICAgIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA0OSwgCisgICAgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjgsIAorICAgIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIDUwLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgMTI4LCA3OSwgNDUsIAorICAgIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCA4OSwgODAsIDEyOCwgCisgICAgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIDkwLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgMTI4LCA3OCwgOTAsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgOTAsIDczLCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIDkwLCA2NSwgODQsIAorICAgIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgMTI4LCA3OCwgOTAsIAorICAgIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgODUsIDEyOCwgNzgsIAogICAgIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgCiAgICAgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAKICAgICAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCAKICAgICA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIAogICAgIDEyOCwgNzgsIDg5LCA3MywgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIAogICAgIDczLCAyMTEsIDc4LCA4OSwgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgCi0gICAgNzksIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCAKLSAgICA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCAKLSAgICA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCAKLSAgICA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCAKLSAgICA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIAotICAgIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIAotICAgIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgCi0gICAgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgCi0gICAgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCAKLSAgICA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIAotICAgIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgCi0gICAgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCAKLSAgICA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIAorICAgIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIAorICAgIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIAorICAgIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgCisgICAgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgCisgICAgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCAKKyAgICA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCAKKyAgICA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAKKyAgICA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCAKKyAgICA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIAorICAgIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgCisgICAgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCAKKyAgICA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgCisgICAgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCAKKyAgICA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCAKICAgICA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIAogICAgIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCiAgICAgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCAKQEAgLTE2NTksNDcwICsxNzgyLDQ5MyBAQAogICAgIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgCiAgICAgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCAKICAgICA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIAotICAgIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgCisgICAgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc5LCAKKyAgICA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDczLCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2OSwgMTI4LCA3OCwgCisgICAgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA2NSwgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIAogICAgIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3MSwgCiAgICAgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDEyOCwgCi0gICAgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCAKLSAgICA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIAotICAgIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgCi0gICAgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCAKLSAgICA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgCi0gICAgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCAKLSAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIAotICAgIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIAotICAgIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgCi0gICAgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDc0LCAxMjgsIDc4LCA3MywgODgsIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAKLSAgICAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIAotICAgIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCAKLSAgICA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc3LCAKLSAgICAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIAotICAgIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzMsIDcyLCA4MywgCi0gICAgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCAKLSAgICA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIAotICAgIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIAotICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCAKLSAgICA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAotICAgIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgCi0gICAgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgCi0gICAgNjUsIDEyOCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgCi0gICAgNjksIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCAKLSAgICA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIAotICAgIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgCi0gICAgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCAKLSAgICA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIAotICAgIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgCi0gICAgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIAotICAgIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCi0gICAgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCAKLSAgICA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAKLSAgICAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIAotICAgIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgCi0gICAgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCAKLSAgICA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgCi0gICAgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCAKLSAgICA3OCwgMTI4LCA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDc4LCA2OSwgNzEsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgCi0gICAgMTI4LCA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIAotICAgIDEyOCwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIAotICAgIDc4LCA2OCwgODUsIDgwLCAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgCi0gICAgMTI4LCA3OCwgNjgsIDc5LCA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgCi0gICAgNjgsIDc5LCA3OCwgMTI4LCA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCAKLSAgICA2OCwgNzMsIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIAotICAgIDgwLCAxMjgsIDc4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgCi0gICAgNjUsIDEyOCwgNzgsIDY4LCA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDg4LCAxMjgsIDc4LCA2OCwgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAKLSAgICAxMjgsIDc4LCA2OCwgNjUsIDY1LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIAotICAgIDEyOCwgNzgsIDY4LCA2NSwgMTkzLCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCA3OCwgNjYsIAotICAgIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIDY2LCA4OSwgCi0gICAgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgNjYsIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAxMjgsIDc4LCAKLSAgICA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCA2NiwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIDY2LCA3MywgCi0gICAgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCAKLSAgICA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIAotICAgIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCAKLSAgICA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIAotICAgIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgCi0gICAgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIAotICAgIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIAotICAgIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgCi0gICAgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgCi0gICAgMTI4LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCAKLSAgICA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNjUsIAotICAgIDE5MywgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIAotICAgIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgCi0gICAgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAKLSAgICAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgCi0gICAgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgCi0gICAgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCAKLSAgICA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgCi0gICAgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgCi0gICAgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgCi0gICAgMjE1LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCAKLSAgICA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCAKLSAgICA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgCi0gICAgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCAKLSAgICA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIAotICAgIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgCi0gICAgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAKLSAgICAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCAKLSAgICA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIAotICAgIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgCi0gICAgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKLSAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIAotICAgIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgCi0gICAgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgCi0gICAgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKLSAgICA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIAotICAgIDE5NywgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIAotICAgIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgCi0gICAgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCAKLSAgICA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIAotICAgIDE5NiwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCAKLSAgICA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIAotICAgIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgCi0gICAgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCAKLSAgICA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIAotICAgIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgCi0gICAgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIAotICAgIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgCi0gICAgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIAotICAgIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgCi0gICAgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIAotICAgIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIAotICAgIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAKLSAgICAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCAKLSAgICA3MywgMjEyLCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgCi0gICAgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgCi0gICAgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCAKLSAgICA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIAotICAgIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgCi0gICAgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCAKLSAgICA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIAotICAgIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCAKLSAgICA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKLSAgICA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgCi0gICAgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAKLSAgICA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIAotICAgIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgCi0gICAgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCAKLSAgICA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIAotICAgIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIAotICAgIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCi0gICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKLSAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCi0gICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKLSAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKLSAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCi0gICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAotICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCi0gICAgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCAKLSAgICA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIAotICAgIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgCi0gICAgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAKLSAgICAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIAotICAgIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgCi0gICAgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCAKLSAgICA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIAotICAgIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgCi0gICAgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKLSAgICA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIAotICAgIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgCi0gICAgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIDY1LCAKLSAgICAyMDYsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCAKLSAgICA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgCi0gICAgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCAKLSAgICA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgCi0gICAgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCAKLSAgICA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgCi0gICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIAotICAgIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgNjYsIDEyOCwgNzcsIDE5NCwgNzcsIDY1LCA4OSwgNjksIAotICAgIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgCi0gICAgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCAKLSAgICA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIAotICAgIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgCi0gICAgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCAKLSAgICA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIAotICAgIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgCi0gICAgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCAKLSAgICA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCAKLSAgICA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIAotICAgIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgCi0gICAgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4MywgODksIDc5LCAKLSAgICA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDIxOCwgNzcsIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgCi0gICAgNjUsIDczLCA3NiwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAKLSAgICAyMTMsIDc3LCA2NSwgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAxOTcsIAotICAgIDc3LCA2NSwgNzYsIDY5LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIDE5NywgCi0gICAgNzcsIDY1LCA3NiwgNjUsIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgNjUsIDczLCAKLSAgICA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDc3LCA2NSwgNzMsIDg0LCA2NSwgNzMsIAotICAgIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA4NSwgNjUsIDc4LCAKLSAgICAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgMTI4LCA3NywgNjUsIDczLCA3NiwgNjYsIDc5LCAyMTYsIAotICAgIDc3LCA2NSwgNzMsIDc1LCA4NSwgODIsIDc5LCAxMjgsIDc3LCA2NSwgNzMsIDY4LCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA3MiwgCi0gICAgNzQsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDcyLCA3MiwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA4MiwgNjUsIDc4LCAKLSAgICA2NSwgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDY1LCA3NSwgNzIsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDY1LCA4MCwgODIsIAotICAgIDY1LCA2NSwgNzgsIDE5MywgNzcsIDY1LCA3MiwgMTI4LCA3NywgNjUsIDcxLCA3OCwgNzMsIDcwLCA4OSwgNzMsIDc4LCAKLSAgICAxOTksIDc3LCA2NSwgNjksIDgzLCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc4LCA3NCwgNjksIDg0LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgCi0gICAgNzUsIDgwLCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCAKLSAgICA3NywgNjYsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc3LCAxMjgsIDc3LCA2NSwgNjksIDc2LCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzUsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgNzcsIDY1LCA2OCwgODksIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDg1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMjAwLCAKLSAgICA3NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDE5MywgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIAotICAgIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgODYsIDY5LCAKLSAgICAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIAotICAgIDc5LCA3OCwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDIwNiwgNzcsIDY1LCA2NywgNzIsIDczLCA3OCwgNjksIDEyOCwgCi0gICAgNzcsIDY1LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA2NSwgMTI4LCA3NywgNjUsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDc3LCA0OCwgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDQ5LCAxMjgsIDc3LCAKLSAgICA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCA0OCwgMTI4LCA3NywgNDgsIDUxLCA1NywgMTI4LCA3NywgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIDUxLCA1MywgCi0gICAgMTI4LCA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY1LCAKLSAgICAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDUwLCAxMjgsIDc3LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKLSAgICA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUwLCA1NywgMTI4LCA3NywgNDgsIAotICAgIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUyLCAKLSAgICAxMjgsIDc3LCA0OCwgNTAsIDUxLCAxMjgsIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCA0OCwgMTI4LCA3NywgNDgsIDQ5LCA1NywgMTI4LCA3NywgNDgsIAotICAgIDQ5LCA1NiwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDUzLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1MywgMTI4LCA3NywgNDgsIDQ5LCA1MiwgMTI4LCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzIsIAotICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgCi0gICAgNjksIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY4LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NywgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1MCwgNjYsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUwLCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA3NywgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgNDgsIDQ4LCA1NCwgMTI4LCA3NywgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgNzcsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIAotICAgIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgMTI4LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIAotICAgIDEyOCwgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIAotICAgIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIAotICAgIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIAotICAgIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgCi0gICAgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAKLSAgICAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCAKLSAgICA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgCi0gICAgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgCi0gICAgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCAKLSAgICA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIAotICAgIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIAotICAgIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgCi0gICAgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCAKLSAgICA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIAotICAgIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgCi0gICAgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAKLSAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIAotICAgIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgCi0gICAgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIAotICAgIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCAKLSAgICA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIAotICAgIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDIwMywgNzYsIAotICAgIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgCi0gICAgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgCi0gICAgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCAKLSAgICA4NCwgNjksIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDgzLCAyMTMsIDc2LCAKLSAgICA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIAotICAgIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgMjAzLCA3NiwgCi0gICAgNzMsIDc4LCA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIAotICAgIDQ1LCA1MSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgCi0gICAgNzYsIDczLCA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIAotICAgIDIxMywgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA3NiwgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NiwgODksIDEyOCwgCi0gICAgNzYsIDczLCA3NiwgNzMsIDg0LCA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDczLCAKLSAgICA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgCi0gICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCAKLSAgICA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIAotICAgIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDY5LCAKLSAgICAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA3NywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIAotICAgIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgCi0gICAgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCAKLSAgICA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIAotICAgIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgCi0gICAgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCAKLSAgICA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCAKLSAgICA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgCi0gICAgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAKLSAgICAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIAotICAgIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCi0gICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIAotICAgIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgCi0gICAgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIAotICAgIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAKLSAgICAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgCi0gICAgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCAKLSAgICA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIAotICAgIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgCi0gICAgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCAKLSAgICA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAotICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgCi0gICAgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgCi0gICAgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCAKLSAgICA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIAotICAgIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCAKLSAgICA3OCwgMTI4LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIAorICAgIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgCisgICAgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCisgICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKKyAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCisgICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAorICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCisgICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKKyAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAorICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKKyAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIAorICAgIDcyLCA4MywgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgCisgICAgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgCisgICAgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIAorICAgIDczLCA2NiwgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIAorICAgIDcyLCA3NCwgNjUsIDEyOCwgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgODUsIDg1LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgCisgICAgNzgsIDcxLCA4NSwgNzksIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIAorICAgIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgCisgICAgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCisgICAgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAorICAgIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCAKKyAgICA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCAKKyAgICA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgCisgICAgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAyMDYsIDc4LCA3MSwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCAKKyAgICA3OCwgNzEsIDcxLCA3MywgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgCisgICAgNzEsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCAKKyAgICA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIAorICAgIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAorICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCAxMjgsIDc4LCAKKyAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCAxMjgsIAorICAgIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgCisgICAgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCAKKyAgICA2OSwgMjA3LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKKyAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgCisgICAgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCAKKyAgICA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIAorICAgIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIAorICAgIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgCisgICAgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCAKKyAgICA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIAorICAgIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgCisgICAgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCAKKyAgICA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIAorICAgIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIAorICAgIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgCisgICAgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAKKyAgICAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIAorICAgIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgCisgICAgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCAKKyAgICA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIAorICAgIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgCisgICAgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgCisgICAgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCAKKyAgICA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgCisgICAgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgCisgICAgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAKKyAgICAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCAKKyAgICA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIAorICAgIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCAKKyAgICA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIAorICAgIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgCisgICAgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIAorICAgIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIAorICAgIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCAKKyAgICA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIAorICAgIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAKKyAgICAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCAKKyAgICA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgCisgICAgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIAorICAgIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIAorICAgIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgCisgICAgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCAKKyAgICA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIAorICAgIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgCisgICAgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCAKKyAgICA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgCisgICAgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgCisgICAgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAKKyAgICAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCAKKyAgICA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgCisgICAgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCAKKyAgICA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIAorICAgIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgCisgICAgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgCisgICAgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCAKKyAgICA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIAorICAgIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCAKKyAgICA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgCisgICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCAKKyAgICA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIAorICAgIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgCisgICAgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIAorICAgIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIAorICAgIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIAorICAgIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgCisgICAgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCAKKyAgICA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIAorICAgIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgCisgICAgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAKKyAgICAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIAorICAgIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIAorICAgIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgCisgICAgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIAorICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgCisgICAgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIAorICAgIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCAKKyAgICA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3NywgNzEsIAorICAgIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCA3OSwgODgsIDEyOCwgCisgICAgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCA3NywgNzEsIDIwNywgCisgICAgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIDg4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAorICAgIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDc4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCA4MSwgCisgICAgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCA3MSwgNjUsIDg0LCAKKyAgICAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCA3MCwgNzksIDc4LCAKKyAgICAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIDgxLCAxMjgsIDc3LCAKKyAgICA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDgxLCAxMjgsIAorICAgIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCA5MCwgOTAsIDc5LCAKKyAgICAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCAKKyAgICA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA2OSwgODQsIAorICAgIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgNzMsIDY1LCAKKyAgICAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIDg0LCA2NSwgCisgICAgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzcsIDY5LCAKKyAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCA3OSwgCisgICAgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCAKKyAgICA3MywgMTk1LCA3NywgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIAorICAgIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgCisgICAgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCAKKyAgICA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIAorICAgIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgCisgICAgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIAorICAgIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgCisgICAgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCAKKyAgICA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIAorICAgIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIAorICAgIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgCisgICAgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIAorICAgIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgCisgICAgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCAKKyAgICA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIAorICAgIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCAKKyAgICA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIAorICAgIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgCisgICAgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgCisgICAgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgCisgICAgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIAorICAgIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA3MCwgCisgICAgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIAorICAgIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgCisgICAgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIAorICAgIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgCisgICAgNjUsIDg0LCA3OSwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIAorICAgIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgCisgICAgODQsIDY1LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCAKKyAgICA2NSwgNzAsIDEyOCwgNzcsIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIAorICAgIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIAorICAgIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCAKKyAgICA3OCwgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIAorICAgIDc4LCA2NSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNzcsIDY1LCA3NiwgODQsIDY5LCA4MywgMTk3LCA3NywgNjUsIDc2LCA2OSwgCisgICAgNjksIDgyLCA3MywgMTI4LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3NywgNjUsIDc2LCAxOTcsIDc3LCA2NSwgNzYsIDY1LCAKKyAgICA3NSwgNzksIDIwNiwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgCisgICAgMTkzLCA3NywgNjUsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDc3LCAKKyAgICA2NSwgNzMsIDg0LCA2NSwgNzMsIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIAorICAgIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgMTI4LCA3NywgNjUsIDczLCA3NiwgCisgICAgNjYsIDc5LCAyMTYsIDc3LCA2NSwgNzMsIDc1LCA4NSwgODIsIDc5LCAxMjgsIDc3LCA2NSwgNzMsIDY4LCA2OSwgNzgsIAorICAgIDEyOCwgNzcsIDY1LCA3MywgMTI4LCA3NywgNjUsIDcyLCA3NCwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzIsIDcyLCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgNjUsIDc1LCAKKyAgICA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIAorICAgIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgCisgICAgNjksIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCAKKyAgICA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIAorICAgIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgCisgICAgNjksIDc3LCA2NiwgNjUsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCA4MCwgMTI4LCA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIAorICAgIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAyMDAsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgCisgICAgMTkzLCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCAKKyAgICA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgCisgICAgODUsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCAKKyAgICA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjUsIDY1LCA4OSwgODksIDY1LCA2NSwgMTI4LCA3NywgNjUsIAorICAgIDY1LCA3MywgMTI4LCA3NywgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNTIsIDEyOCwgNzcsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNDksIDEyOCwgNzcsIDQ4LCA1MiwgCisgICAgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNTIsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgNTEsIDU2LCAKKyAgICAxMjgsIDc3LCA0OCwgNTEsIDU1LCAxMjgsIDc3LCA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDUzLCAxMjgsIDc3LCAKKyAgICA0OCwgNTEsIDUyLCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgNTAsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCisgICAgNTEsIDQ5LCAxMjgsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAKKyAgICA2NSwgMTI4LCA3NywgNDgsIDUwLCA1NiwgMTI4LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCA1NCwgMTI4LCAKKyAgICA3NywgNDgsIDUwLCA1MywgMTI4LCA3NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDEyOCwgNzcsIAorICAgIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUwLCAxMjgsIDc3LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNDksIDU3LCAxMjgsIDc3LCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTQsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDc3LCA0OCwgNDksIDUyLCAxMjgsIDc3LCA0OCwgNDksIDUxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MiwgMTI4LCA3NywgCisgICAgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2OSwgMTI4LCAKKyAgICA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NiwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgNDgsIDU3LCAxMjgsIDc3LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAxMjgsIDc3LCA0OCwgNDgsIAorICAgIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgMTI4LCA3NiwgCisgICAgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgMTI4LCA3NiwgCisgICAgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCAKKyAgICA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCAKKyAgICA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCAKKyAgICA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCAKKyAgICA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIAorICAgIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgCisgICAgMTI4LCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCAKKyAgICA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCAKKyAgICA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgNzcsIDEyOCwgNzYsIDgyLCAKKyAgICA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIAorICAgIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgCisgICAgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCAKKyAgICA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIAorICAgIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgCisgICAgNjUsIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCAKKyAgICA3OSwgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIAorICAgIDc3LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgCisgICAgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAorICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgCisgICAgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIAorICAgIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgCisgICAgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCAKKyAgICA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIAorICAgIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgCisgICAgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgCisgICAgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKKyAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAorICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAorICAgIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgCisgICAgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgCisgICAgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIAorICAgIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgCisgICAgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIAorICAgIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCAKKyAgICA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIAorICAgIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgCisgICAgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIAorICAgIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgCisgICAgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCAKKyAgICA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgCisgICAgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgCisgICAgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCAKKyAgICA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIAorICAgIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCAKKyAgICA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIAorICAgIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAorICAgIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgCisgICAgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgCisgICAgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgCisgICAgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCAKKyAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIAorICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCAKKyAgICA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIAorICAgIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAKKyAgICAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIAorICAgIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgCisgICAgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCAKKyAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIAorICAgIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIAorICAgIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgCisgICAgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCAKKyAgICA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIAorICAgIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgCisgICAgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCA3NiwgCisgICAgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCAKKyAgICA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIAorICAgIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgCisgICAgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCAKKyAgICA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIAorICAgIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgCisgICAgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAKICAgICAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCAKICAgICA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIAogICAgIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIAogICAgIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgCi0gICAgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCAKLSAgICA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIAotICAgIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIAotICAgIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIAotICAgIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgCi0gICAgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCAKLSAgICA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIAotICAgIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIAotICAgIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgCi0gICAgNzksIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgCi0gICAgODcsIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAKLSAgICAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIAotICAgIDEyOCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgCi0gICAgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCAKLSAgICA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCAKLSAgICA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgCi0gICAgMjA0LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIAotICAgIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIAotICAgIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgCi0gICAgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIAotICAgIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgCi0gICAgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCAKLSAgICA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgCi0gICAgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCAKLSAgICA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIAotICAgIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAKLSAgICAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIAotICAgIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgCi0gICAgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCAKLSAgICA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCAKLSAgICA3NSwgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCAKLSAgICA3MiwgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgNzksIAotICAgIDY1LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgCi0gICAgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgCi0gICAgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCAKLSAgICA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCAKLSAgICA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAKLSAgICAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgCi0gICAgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIAotICAgIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgCi0gICAgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCAKLSAgICA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIAotICAgIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgCi0gICAgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCAKLSAgICA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIAotICAgIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgCi0gICAgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgCi0gICAgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCAKLSAgICA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIAotICAgIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgCi0gICAgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKLSAgICA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIAotICAgIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgCi0gICAgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIAotICAgIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAKKyAgICA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIAorICAgIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgCisgICAgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCAKKyAgICA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIAorICAgIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAKKyAgICAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCAKKyAgICA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIAorICAgIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgCisgICAgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgCisgICAgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgCisgICAgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCAKKyAgICA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgCisgICAgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCAKKyAgICA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCAKKyAgICA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIAorICAgIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIAorICAgIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCAKKyAgICA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIAorICAgIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgCisgICAgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAKKyAgICA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCAKKyAgICA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIAorICAgIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCAKKyAgICA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgCisgICAgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIAorICAgIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIAorICAgIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAKKyAgICAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgCisgICAgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCAKKyAgICA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIAorICAgIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgCisgICAgMTI4LCA3NSwgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIAorICAgIDcxLCA3MiwgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgCisgICAgNzksIDY1LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCAKKyAgICA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCAKKyAgICA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgCisgICAgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIAorICAgIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIAorICAgIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIAorICAgIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgCisgICAgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAorICAgIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgCisgICAgODMsIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCAKKyAgICA3NywgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIAorICAgIDY1LCA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgCisgICAgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCAKKyAgICA3NSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIAorICAgIDczLCA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgCisgICAgNjgsIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCAKKyAgICA3MywgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCAKKyAgICA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIAorICAgIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgCisgICAgMTI4LCA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgCisgICAgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKKyAgICAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIAorICAgIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCAKKyAgICA3NSwgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIAorICAgIDcyLCA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgCisgICAgNzIsIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAKICAgICAxMjgsIDc1LCA3MiwgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCAKICAgICA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgCiAgICAgMTI4LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCAKQEAgLTIxNDEsNzEgKzIyODcsNzQgQEAKICAgICA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIAogICAgIDc1LCA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCiAgICAgNzUsIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg2LCAKLSAgICA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODQsIAotICAgIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAKLSAgICAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIAotICAgIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCAKLSAgICA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIAotICAgIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgCi0gICAgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCAKLSAgICA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIAotICAgIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAKLSAgICAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCi0gICAgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIAotICAgIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgCi0gICAgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAKLSAgICAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCAKLSAgICA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODIsIAotICAgIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIAotICAgIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIAotICAgIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIAotICAgIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIAotICAgIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgCi0gICAgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIDEyOCwgNzQsIAotICAgIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA3OSwgODUsIAotICAgIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgCi0gICAgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIAotICAgIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIDEyOCwgCi0gICAgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgNzYsIAotICAgIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAxMjgsIAotICAgIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCA2OSwgCi0gICAgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIAotICAgIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgCi0gICAgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIAotICAgIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgCi0gICAgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgMjAyLCAKLSAgICA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIAotICAgIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCA3MywgODUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgCi0gICAgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAKLSAgICAxMjgsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIAotICAgIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIAotICAgIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIAotICAgIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgCi0gICAgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgCi0gICAgMTk3LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAKKyAgICA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIAorICAgIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgCisgICAgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCAKKyAgICA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgCisgICAgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAKKyAgICAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIAorICAgIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgCisgICAgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIAorICAgIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCAKKyAgICA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIAorICAgIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgCisgICAgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICAyMDEsIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAKKyAgICAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCAKKyAgICA2OCwgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCAKKyAgICA2NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIAorICAgIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgCisgICAgMTI4LCA3NCwgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCAKKyAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIAorICAgIDg1LCA3NiwgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgCisgICAgODUsIDY4LCA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCAKKyAgICA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIAorICAgIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIAorICAgIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgCisgICAgODksIDg4LCAxMjgsIDc0LCA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgCisgICAgNzQsIDc0LCA4NSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgODUsIDgyLCAxMjgsIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgCisgICAgMTI4LCA3NCwgNzQsIDc5LCA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgCisgICAgNzMsIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY1LCAxMjgsIDc0LCA3MywgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgCisgICAgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAKKyAgICAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCAKKyAgICA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIAorICAgIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgCisgICAgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgCisgICAgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODYsIDczLCAKKyAgICA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIAorICAgIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAKKyAgICAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIAorICAgIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgCisgICAgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCAKKyAgICA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCAyMDIsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIAorICAgIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgCisgICAgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAKKyAgICAxMjgsIDczLCA4NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCAKKyAgICA4NCwgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIAorICAgIDgzLCA3OSwgMjA2LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgCisgICAgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIAorICAgIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgCisgICAgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCAKKyAgICA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIAorICAgIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgCisgICAgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAKKyAgICAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIAogICAgIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCiAgICAgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAogICAgIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCkBAIC0yMjM0LDEyMjYgKzIzODMsMTIzMyBAQAogICAgIDc4LCA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNzMsIDc4LCA0NSwgCiAgICAgNjUsIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCAKICAgICA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIAotICAgIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgCi0gICAgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCAKLSAgICA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIAotICAgIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIAotICAgIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAKLSAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIAotICAgIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgCi0gICAgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIAotICAgIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIAotICAgIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIAotICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCAKLSAgICA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCAKLSAgICA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCAKLSAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCAKLSAgICA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCAKLSAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCAKLSAgICA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCAKLSAgICA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCAKLSAgICA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCAKLSAgICA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIAotICAgIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIAotICAgIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAKLSAgICAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIAotICAgIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIAotICAgIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCi0gICAgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCAKLSAgICA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIAotICAgIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgCi0gICAgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCAKLSAgICA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCAKLSAgICA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIAotICAgIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIAotICAgIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAKLSAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIAotICAgIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgCi0gICAgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCAKLSAgICA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIAotICAgIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIAotICAgIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODIsIDY1LCA3OCwgCisgICAgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCAKKyAgICA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCAKKyAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCAKKyAgICA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgCisgICAgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAKKyAgICA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIAorICAgIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIAorICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgCisgICAgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAorICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCAKKyAgICA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCAKKyAgICA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIAorICAgIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgCisgICAgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAKKyAgICAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCAKKyAgICA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIAorICAgIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCAKKyAgICA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIAorICAgIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgCisgICAgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAKKyAgICAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAKKyAgICAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIAorICAgIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgCisgICAgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIAorICAgIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAKKyAgICAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCAKKyAgICA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgCisgICAgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCAKKyAgICA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgyLCA2NSwgNzgsIAogICAgIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgCiAgICAgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAKICAgICA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNjYsIAogICAgIDUwLCAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgCi0gICAgNzksIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAKLSAgICAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIAotICAgIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgCi0gICAgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCAKLSAgICA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIAotICAgIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgCi0gICAgNzgsIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgCi0gICAgNzIsIDc5LCA3MywgMTI4LCA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIAotICAgIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCAKLSAgICA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIAotICAgIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIAotICAgIDEyOCwgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDc3LCA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCAKLSAgICA4NCwgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCAKLSAgICA3NiwgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIAotICAgIDg5LCA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIAotICAgIDcyLCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCAKLSAgICA3MiwgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgCi0gICAgNzYsIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAKLSAgICAxMjgsIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCAKLSAgICA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIAotICAgIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCAKLSAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgCi0gICAgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKLSAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAotICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCi0gICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIAotICAgIDY5LCA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgCi0gICAgNjcsIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCAKLSAgICA2OSwgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIAotICAgIDc2LCAyMTcsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgODMsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDcyLCAKLSAgICA2OSwgNjUsIDgyLCA4NCwgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgNDUsIAotICAgIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIDY5LCAKLSAgICA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIAotICAgIDY2LCA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgCi0gICAgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA3MiwgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgCi0gICAgMTk4LCA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCAKLSAgICA4MCwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIAotICAgIDczLCA2NywgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAKLSAgICAyMDcsIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIAotICAgIDc4LCA2OCwgMjExLCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIAotICAgIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgCi0gICAgMjEwLCA3MiwgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKLSAgICA2NiwgODUsIDgyLCA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgCi0gICAgMTI4LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIAotICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIAotICAgIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgCi0gICAgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgCi0gICAgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCAKLSAgICA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIAotICAgIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgCi0gICAgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgCi0gICAgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgCi0gICAgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgCi0gICAgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCAKLSAgICA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCAKLSAgICA3NiwgMTI4LCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIAotICAgIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCi0gICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAotICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgCi0gICAgMjA2LCA3MSwgODIsIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCAKLSAgICA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgCi0gICAgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIAotICAgIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgCi0gICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIAotICAgIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAKLSAgICAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgCi0gICAgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCAKLSAgICA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgCi0gICAgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCAKLSAgICA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIAotICAgIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIAotICAgIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgCi0gICAgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIAotICAgIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgCi0gICAgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCAKLSAgICA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgCi0gICAgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgCi0gICAgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgCi0gICAgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCAKLSAgICA3MSwgNjUsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIAotICAgIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIAotICAgIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCAKLSAgICA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIAotICAgIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCAKLSAgICA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAKLSAgICA3OCwgODUsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIAotICAgIDY4LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAKLSAgICAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCAKLSAgICA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIAotICAgIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCAKLSAgICA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIAotICAgIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3MSwgNjksIDg0LCAxOTMsIDcxLCA2OSwgODMsIDg0LCAKLSAgICA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCA3OCwgCi0gICAgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA3MSwgNjksIDgyLCAKLSAgICA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCA3MSwgNjksIDgyLCA2OSwgODMsIAotICAgIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgNjksIDc4LCA4NCwgNzYsIAotICAgIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCA3NSwgMjAxLCA3MSwgCi0gICAgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIDY5LCA3NywgNzMsIDc4LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgNjksIAotICAgIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIAotICAgIDY5LCA2NSwgMjEwLCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIAotICAgIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgCi0gICAgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCAKLSAgICA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgCi0gICAgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCAKLSAgICA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIAotICAgIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgCi0gICAgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCAKLSAgICA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgCi0gICAgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgCi0gICAgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCAKLSAgICA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCAKLSAgICA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIAotICAgIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIAotICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAKLSAgICAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCAKLSAgICA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIAotICAgIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIAotICAgIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIAotICAgIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgCi0gICAgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgCi0gICAgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgCi0gICAgNzksIDgyLCAxOTMsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAotICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKLSAgICAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCAKLSAgICA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAKLSAgICAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCAKLSAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgCi0gICAgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCAKLSAgICA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgCi0gICAgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCAKLSAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgCi0gICAgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCAKKyAgICA3OSwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCAKKyAgICA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCAKKyAgICA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgCisgICAgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgCisgICAgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCAKKyAgICA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIAorICAgIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCA2OSwgMjE3LCA3MiwgCisgICAgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIAorICAgIDczLCAxOTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgCisgICAgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNzMsIDEyOCwgCisgICAgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgMTI4LCA3MiwgNzgsIAorICAgIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgNzgsIDczLCA4MCwgCisgICAgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIDg4LCAxMjgsIDcyLCAKKyAgICA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIDc4LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIAorICAgIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgCisgICAgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCAKKyAgICA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIAorICAgIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIAorICAgIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAKKyAgICAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCAKKyAgICA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCAKKyAgICA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIAorICAgIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCAKKyAgICA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIAorICAgIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgCisgICAgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzUsIDEyOCwgCisgICAgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAKKyAgICAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIAorICAgIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzIsIDY5LCA2OSwgNzYsIDY5LCAKKyAgICAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgMjAwLCA3MiwgCisgICAgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIAorICAgIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIDg1LCAxMjgsIDcyLCA3MiwgCisgICAgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA3MiwgCisgICAgNzEsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIAorICAgIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCAKKyAgICA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIAorICAgIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIDY1LCA2OSwgODUsIDIwNSwgNzIsIDY5LCA3OCwgNzEsIDEyOCwgCisgICAgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDg0LCAxMjgsIDcyLCAKKyAgICA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAyMDUsIDcyLCA2OSwgNzYsIDczLCA2NywgNzksIDgwLCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA3MywgODMsIDY5LCA3MywgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgNzYsIDIxNywgNzIsIDY5LCAKKyAgICA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIDY5LCA2NSwgODIsIDg0LCA4MywgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzIsIDY5LCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgCisgICAgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCAKKyAgICA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgCisgICAgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgNjUsIDg1LCAKKyAgICA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgCisgICAgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAKKyAgICAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIAorICAgIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgCisgICAgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCAKKyAgICA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIAorICAgIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCisgICAgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAorICAgIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgCisgICAgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCAKKyAgICA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIAorICAgIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgCisgICAgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIAorICAgIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCAKKyAgICA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgCisgICAgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgCisgICAgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCAKKyAgICA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDEyOCwgCisgICAgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNjUsIDc3LCAKKyAgICA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIAorICAgIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIAorICAgIDg1LCAxOTksIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIAorICAgIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIAorICAgIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIAorICAgIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIAorICAgIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3MywgNzcsIDY1LCAKKyAgICA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2OSwgCisgICAgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCAKKyAgICA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIAorICAgIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgCisgICAgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCAKKyAgICA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgCisgICAgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCAKKyAgICA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgCisgICAgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCAKKyAgICA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIAorICAgIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgCisgICAgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCAKKyAgICA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCAKKyAgICA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIAorICAgIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIAorICAgIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgCisgICAgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCAKKyAgICA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIAorICAgIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIAorICAgIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgCisgICAgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCAKKyAgICA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCAKKyAgICA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIAorICAgIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIAorICAgIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgCisgICAgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgCisgICAgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCAKKyAgICA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIAorICAgIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCAKKyAgICA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgCisgICAgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCAKKyAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAKKyAgICAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIAorICAgIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIAorICAgIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgCisgICAgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCAKKyAgICA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzEsIDY5LCA4NCwgMTkzLCAKKyAgICA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCA4MywgNzIsIAorICAgIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgCisgICAgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgNzEsIDY5LCAKKyAgICA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIAorICAgIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3OCwgCisgICAgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgNzUsIAorICAgIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCA2OSwgCisgICAgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIAorICAgIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIAorICAgIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIAorICAgIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCAKKyAgICA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIAorICAgIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgCisgICAgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAKKyAgICAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIAorICAgIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgCisgICAgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCAKKyAgICA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIAorICAgIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIAorICAgIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgCisgICAgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCAKKyAgICA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIAorICAgIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIAorICAgIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIAorICAgIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCAKKyAgICA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgCisgICAgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgCisgICAgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgCisgICAgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAKKyAgICAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCAKKyAgICA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCAKKyAgICA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgCisgICAgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgCisgICAgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgNzksIDgyLCAxOTMsIDcwLCA4MiwgNzksIDg3LCAKKyAgICA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIAorICAgIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCAKKyAgICA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIAorICAgIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgCisgICAgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCAKKyAgICA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCAKKyAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIAorICAgIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCAKICAgICA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIAogICAgIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCiAgICAgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCAKQEAgLTM0NjIsMzg0ICszNjE4LDM4OSBAQAogICAgIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIAogICAgIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgCiAgICAgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCAKLSAgICA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgMTI4LCAKLSAgICA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIAotICAgIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCAKLSAgICAyMTAsIDcwLCA3NiwgNzksIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIAotICAgIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgCi0gICAgODIsIDEyOCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDY5LCAKLSAgICA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIAotICAgIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgCi0gICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzAsIDc2LCA2NSwgMjEyLCA3MCwgNzYsIDY1LCAKLSAgICA3MSwgODMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIAotICAgIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgCi0gICAgNDUsIDQ5LCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgCi0gICAgNzYsIDEyOCwgNzAsIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCAKLSAgICA3MywgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNzAsIDczLCA4NiwgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgCi0gICAgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDcwLCAKLSAgICA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgNzMsIAotICAgIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCA3MywgCi0gICAgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIAotICAgIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgCi0gICAgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKLSAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNjUsIAotICAgIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCi0gICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCi0gICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzIsIAotICAgIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgNjUsIDc2LCAKLSAgICAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCA4MiwgNzcsIAotICAgIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIDcwLCA2OSwgCi0gICAgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCAKLSAgICA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIAotICAgIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIAotICAgIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgCi0gICAgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgCi0gICAgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIAotICAgIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgCi0gICAgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCAKLSAgICA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgMjAxLCAKLSAgICA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIAotICAgIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgCi0gICAgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDcwLCA2NSwgNzYsIDc2LCA2OSwgMjA2LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCAKLSAgICA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIAotICAgIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgCi0gICAgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCAKLSAgICA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgCi0gICAgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCAKLSAgICA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIAotICAgIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIAotICAgIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIAotICAgIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCAKLSAgICA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIAotICAgIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAKLSAgICAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgCi0gICAgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgCi0gICAgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgCi0gICAgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCAKLSAgICA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAotICAgIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgODgsIDc5LCAKLSAgICAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCA4NCwgMTI4LCAKLSAgICA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCAKLSAgICA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCA2NywgNjksIAotICAgIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgCi0gICAgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCAKLSAgICA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgCi0gICAgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIAotICAgIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgCi0gICAgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIAotICAgIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCi0gICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKLSAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAotICAgIDE3OCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA0NSwgCi0gICAgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgODIsIDgyLCAKLSAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCAKLSAgICA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgODUsIAotICAgIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIDgwLCA2OSwgCi0gICAgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDc5LCAKLSAgICA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIAorICAgIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIAorICAgIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAKKyAgICAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIAorICAgIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCAKKyAgICA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAorICAgIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgCisgICAgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCAKKyAgICA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIAorICAgIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCisgICAgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIAorICAgIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgCisgICAgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCAKKyAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIAorICAgIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgCisgICAgNzgsIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKKyAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAorICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCisgICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKKyAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAorICAgIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgCisgICAgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCAKKyAgICA3NiwgNzYsIDY5LCAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCAKKyAgICA3MCwgNzMsIDczLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCisgICAgMTk3LCA3MCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAKKyAgICAyMTcsIDcwLCA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIAorICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAKKyAgICAxMjgsIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIAorICAgIDg2LCA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgCisgICAgNjksIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIAorICAgIDIwMCwgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgCisgICAgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgNzAsIDY5LCAKKyAgICA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAyMTMsIAorICAgIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCA2OCwgCisgICAgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAKKyAgICAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIAorICAgIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgCisgICAgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCAKKyAgICA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIAorICAgIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgCisgICAgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCAKKyAgICA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCAKKyAgICA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIAorICAgIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3MCwgNjUsIDc2LCA3NiwgCisgICAgNjksIDIwNiwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCAKKyAgICA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIAorICAgIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgCisgICAgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgCisgICAgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgCisgICAgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAKKyAgICAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIAorICAgIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgCisgICAgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIAorICAgIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgCisgICAgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCAKKyAgICA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgCisgICAgNzgsIDIxMiwgNjksIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgCisgICAgODgsIDczLCA4MywgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCAKKyAgICA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIAorICAgIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgCisgICAgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIAorICAgIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAKKyAgICAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCAKKyAgICA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIAorICAgIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgCisgICAgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAKKyAgICAxMjgsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIAorICAgIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgCisgICAgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgMTc4LCA2OSwgODMsIDcyLCAKKyAgICA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIAorICAgIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgCisgICAgMTk2LCA2OSwgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgCisgICAgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAKKyAgICAxMjgsIDY5LCA4MSwgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIAorICAgIDEyOCwgNjksIDgxLCA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgCisgICAgNzYsIDc5LCA3OCwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCAKKyAgICA2OSwgODAsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgCisgICAgNjUsIDIwNiwgNjksIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCAKKyAgICA3NywgNjUsIDEyOCwgNjksIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCAKKyAgICA2OSwgNzksIDc2LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIAogICAgIDc5LCA4MCwgNjksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgCiAgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAKICAgICA0NSwgNDksIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIAogICAgIDcyLCA4NSwgODMsIDczLCA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAKICAgICAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIAotICAgIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgCi0gICAgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCAKLSAgICA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgCi0gICAgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIAotICAgIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgCi0gICAgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCAKLSAgICA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIAotICAgIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgCi0gICAgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCAKLSAgICA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgCi0gICAgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIAotICAgIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgCi0gICAgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIAotICAgIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgCi0gICAgODQsIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKLSAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAotICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCAKLSAgICA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCAKLSAgICA2OCwgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIAotICAgIDY5LCA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgCi0gICAgNjksIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCAKLSAgICA3NywgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIAotICAgIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCAKLSAgICA1MiwgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIAotICAgIDEyOCwgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNjksIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCAKLSAgICA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIAotICAgIDY4LCA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCAKLSAgICA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgODcsIDY5LCAxMjgsIDY4LCAKLSAgICA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCA4NiwgNjgsIDEyOCwgNjgsIAotICAgIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIDEyOCwgNjgsIDg1LCA4MywgCi0gICAgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgODUsIDgyLCAKLSAgICA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIAotICAgIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCA2OCwgODUsIDc4LCAxNzksIAotICAgIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIAotICAgIDY4LCA4NSwgNjYsIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIAotICAgIDgyLCAyMTcsIDY4LCA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIAotICAgIDY4LCA4MiwgNzksIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKLSAgICA4NywgNjksIDE5NiwgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA2OCwgODIsIDczLCA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgCi0gICAgODIsIDY5LCA4MywgODMsIDEyOCwgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCA2NSwgNzcsIAotICAgIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgCi0gICAgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCAKLSAgICA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAotICAgIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCAKLSAgICA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCA3OSwgODUsIAotICAgIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIDc5LCA4NSwgCi0gICAgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgCi0gICAgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCi0gICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKLSAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAxMjgsIDY4LCA3OSwgODQsIDc2LCAKLSAgICA2OSwgODMsIDIxMSwgNjgsIDc5LCA4MiwgODUsIDEyOCwgNjgsIDc5LCA3OSwgODIsIDEyOCwgNjgsIDc5LCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCi0gICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKLSAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCAKLSAgICA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIAotICAgIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCAKLSAgICA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAKLSAgICAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCAKLSAgICA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3NCwgMTI4LCAKLSAgICA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIAotICAgIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgCi0gICAgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCAKLSAgICA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgCi0gICAgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCAKLSAgICA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIAotICAgIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCAKLSAgICA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA2OCwgNzMsIDgwLCA4NCwgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCAKLSAgICA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIAotICAgIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAotICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIAotICAgIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgCi0gICAgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCAKLSAgICA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIAotICAgIDY1LCA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDIwNiwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgCi0gICAgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCAKLSAgICA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCAKLSAgICA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIAotICAgIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgCi0gICAgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgCi0gICAgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCAKLSAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIAotICAgIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgCi0gICAgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgCi0gICAgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgCi0gICAgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCAKLSAgICA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgCi0gICAgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCAKLSAgICA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCAKKyAgICA4NCwgNjksIDIxMCwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIAorICAgIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIAorICAgIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgCisgICAgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCAKKyAgICA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIAorICAgIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgCisgICAgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIAorICAgIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgCisgICAgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCAKKyAgICA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIAorICAgIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgCisgICAgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIAorICAgIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgCisgICAgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMTI4LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDIwNiwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDY5LCAxMjgsIDY5LCA3MiwgODcsIAorICAgIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA3MywgCisgICAgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCAKKyAgICA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIAorICAgIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAKKyAgICAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIAorICAgIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgCisgICAgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCAKKyAgICA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIAorICAgIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAKKyAgICA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCAKKyAgICA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIAorICAgIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgCisgICAgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgCisgICAgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCAKKyAgICA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCAKKyAgICA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgCisgICAgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgCisgICAgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCAKKyAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCAKKyAgICA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCAKKyAgICA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCAKKyAgICA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIAorICAgIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgCisgICAgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIAorICAgIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIAorICAgIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIAorICAgIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIAorICAgIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCisgICAgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCAKKyAgICA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIAorICAgIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgCisgICAgODIsIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCAKKyAgICA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIAorICAgIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAKKyAgICAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgCisgICAgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIAorICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUwLCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCAKKyAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKKyAgICA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTUsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIAorICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCisgICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKKyAgICA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgMTI4LCA2OCwgNzksIDg0LCA3NiwgNjksIDgzLCAyMTEsIDY4LCA3OSwgODIsIDg1LCAxMjgsIDY4LCA3OSwgNzksIAorICAgIDgyLCAxMjgsIDY4LCA3OSwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgCisgICAgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCAKKyAgICA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgODQsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCAKKyAgICA2OCwgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIAorICAgIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCAKKyAgICA2OSwgMTk3LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgCisgICAgNzYsIDg1LCAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgCisgICAgNjgsIDc2LCA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgCisgICAgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCAKKyAgICA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIAorICAgIDIxNywgNjgsIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgCisgICAgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCA3MywgODYsIDczLCAKKyAgICA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIDg0LCA4NCwgCisgICAgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCAKKyAgICA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIAorICAgIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgCisgICAgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCAKKyAgICA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIAorICAgIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCAKKyAgICA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIAorICAgIDczLCA4MCwgODQsIDY5LCAxMjgsIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgCisgICAgNzgsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCAKKyAgICA2NiwgNjUsIDIxMiwgNjgsIDczLCAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIAorICAgIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIAorICAgIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCAKKyAgICA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIAorICAgIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA3NywgNTAsIDEyOCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKKyAgICA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIAorICAgIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDY4LCA3MywgCisgICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAKKyAgICAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIAorICAgIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgCisgICAgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIAorICAgIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgCisgICAgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgCisgICAgNzMsIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCAKKyAgICA2NSwgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIAorICAgIDc3LCA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgCisgICAgNjksIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCAKKyAgICA3MywgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIAorICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCisgICAgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDY5LCAKKyAgICA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIAorICAgIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCA3MiwgNzksIDc5LCAxMjgsIAorICAgIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgCisgICAgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2NSwgODQsIAorICAgIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgNjUsIDc2LCA4NSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgOTAsIDIwMCwgCiAgICAgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMSwgNjgsIDY5LCAKICAgICA4OCwgNzMsIDY1LCAxMjgsIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgNzYsIDc5LCA4MCwgNzcsIAogICAgIDY5LCA3OCwgODQsIDEyOCwgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgCkBAIC0zODc5LDE2MSArNDA0MCwxNjQgQEAKICAgICA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgCiAgICAgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgCiAgICAgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICAxOTQsIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgMTk3LCA2OCwgCi0gICAgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIAotICAgIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgCi0gICAgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCAKLSAgICA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIAotICAgIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgCi0gICAgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCAKLSAgICA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIAotICAgIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCAKLSAgICA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgCi0gICAgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgCi0gICAgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKLSAgICA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIAotICAgIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgCi0gICAgNjUsIDcxLCA2OSwgODMsIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCAKLSAgICA3MSwgNjUsIDIxOCwgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAotICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKLSAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAotICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKLSAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCi0gICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKLSAgICAxMjgsIDY3LCA4OSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCAKLSAgICA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIAotICAgIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgCi0gICAgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCAKLSAgICA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIAotICAgIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgCi0gICAgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgCi0gICAgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgCi0gICAgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAKLSAgICA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MiwgODksIAotICAgIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgCi0gICAgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCAKLSAgICA2NiwgNzYsIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIAotICAgIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAKLSAgICA0NSwgNTAsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgCi0gICAgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgCi0gICAgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIAotICAgIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgCi0gICAgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCA2OSwgNjgsIDczLCAyMTIsIDY3LCA4MiwgCi0gICAgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIAotICAgIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIAotICAgIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgCi0gICAgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgCi0gICAgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIAotICAgIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgCi0gICAgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAKLSAgICAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIAotICAgIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAKLSAgICA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIAotICAgIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCAKLSAgICA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCAKLSAgICA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIAotICAgIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDY5LCA2NywgCi0gICAgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCAKLSAgICA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAyMTIsIDY3LCA3OSwgCi0gICAgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNzksIAotICAgIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgCi0gICAgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCAKLSAgICA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIAotICAgIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgCi0gICAgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCAKLSAgICA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIAotICAgIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgCi0gICAgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAKLSAgICAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc5LCAxMjgsIDY3LCAKLSAgICA3NywgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCAKLSAgICA2NywgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIAotICAgIDg1LCAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCAKLSAgICA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIAotICAgIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCAKLSAgICA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIAotICAgIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgCi0gICAgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCAKLSAgICA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIAotICAgIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDg3LCAxMjgsIDY3LCA3NiwgCi0gICAgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIDIxMCwgNjcsIDc2LCA2NSwgNzgsIAotICAgIDEyOCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgODYsIAotICAgIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgCi0gICAgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgODgsIAotICAgIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAKLSAgICAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIAotICAgIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIDY3LCA3MywgNjksIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNjksIDEyOCwgNjcsIDczLCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIDY3LCAKLSAgICA3MiwgODksIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDcyLCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIDcyLCA2OSwgCi0gICAgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCA4MiwgNzMsIAotICAgIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgCi0gICAgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDc5LCAKLSAgICA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgNjcsIAotICAgIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAKKyAgICA2NywgODMsIDEyOCwgNjgsIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCAKKyAgICA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCAKKyAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAorICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKKyAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCisgICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKKyAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCisgICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCisgICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKKyAgICA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgCisgICAgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIAorICAgIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgCisgICAgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgCisgICAgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCAKKyAgICA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgCisgICAgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCAKKyAgICA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIAorICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKKyAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAorICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKKyAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAorICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCisgICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKKyAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAorICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCisgICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg5LCAKKyAgICAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCAKKyAgICA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIAorICAgIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgCisgICAgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCAKKyAgICA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIAorICAgIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCAKKyAgICA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIAorICAgIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgCisgICAgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgCisgICAgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCAKKyAgICA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgCisgICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCAKKyAgICA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIAorICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCAKKyAgICA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIAorICAgIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgCisgICAgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCAKKyAgICA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIAorICAgIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgCisgICAgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgCisgICAgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCAKKyAgICA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIAorICAgIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgCisgICAgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCAKKyAgICA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKKyAgICA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIAorICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIAorICAgIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgCisgICAgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIAorICAgIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAKKyAgICAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCAKKyAgICA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIAorICAgIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAorICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAorICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKKyAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgCisgICAgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIAorICAgIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgCisgICAgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgCisgICAgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgCisgICAgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCAKKyAgICA2NSwgMTI4LCA2NywgNzksIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgCisgICAgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCAKKyAgICA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIAorICAgIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIAorICAgIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgCisgICAgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIAorICAgIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgCisgICAgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCAKKyAgICA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIAorICAgIDc2LCA2NSwgODcsIDEyOCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCisgICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgCisgICAgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCAKKyAgICA4MCwgMTk3LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIAorICAgIDc3LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgCisgICAgODIsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIAorICAgIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCAKKyAgICA3MywgNjksIDg1LCA2NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNjcsIDczLCA2OSwgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCAKKyAgICA2NywgNzIsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDY3LCAKKyAgICA3MiwgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCA3MiwgCisgICAgNjksIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCAKKyAgICA3OSwgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgODIsIAorICAgIDczLCA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCA3MywgCisgICAgODMsIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCAKKyAgICA3OSwgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIAorICAgIDY3LCA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgCiAgICAgMTI4LCA2NywgNzIsIDIwNywgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKICAgICA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgCiAgICAgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKQEAgLTQwNTEsOTA3NSArNDIxNSw5NjA4IEBACiAgICAgMjExLCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKICAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCAyMDYsIAogICAgIDY3LCA3MiwgNjksIDczLCA3OCwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIAotICAgIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIDY1LCAKLSAgICA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIAotICAgIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgCi0gICAgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIAotICAgIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCA2NywgCi0gICAgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgNjcsIAotICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIDY3LCA2OSwgCi0gICAgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCAKLSAgICA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgNjcsIAotICAgIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCA2OSwgCi0gICAgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIDEyOCwgCi0gICAgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIAorICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgCisgICAgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCAKKyAgICA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgCisgICAgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCAKKyAgICA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgCisgICAgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCAKKyAgICA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIAorICAgIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCAKKyAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIAorICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgCisgICAgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgCisgICAgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCAKKyAgICA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIAorICAgIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgCisgICAgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgCisgICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKKyAgICA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCiAgICAgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIAotICAgIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgCi0gICAgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIAotICAgIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgCi0gICAgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCAKLSAgICA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIAotICAgIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgCi0gICAgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCAKLSAgICA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAKLSAgICAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIAotICAgIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgCi0gICAgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIAotICAgIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgCi0gICAgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCAKLSAgICA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCAKLSAgICA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIAotICAgIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgCi0gICAgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCAKLSAgICA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIAotICAgIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgCi0gICAgMjAxLCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCA4MiwgNjUsIAotICAgIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgNzIsIDEyOCwgCi0gICAgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgNjYsIDg1LCAKLSAgICA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgODIsIAotICAgIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIDgwLCAyMTcsIAotICAgIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgODMsIDY5LCA4OSwgCi0gICAgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCAKLSAgICA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIAotICAgIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCAKLSAgICA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIAotICAgIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCA2NiwgCi0gICAgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCAKLSAgICA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIAotICAgIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgCi0gICAgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCAKLSAgICA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIAotICAgIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgCi0gICAgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCAKLSAgICA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgCi0gICAgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCA2NiwgODIsIDY1LCAKLSAgICA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIDgyLCA2NSwgNjcsIAotICAgIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA3OSwgODksIDEyOCwgNjYsIAotICAgIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgCi0gICAgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgMTI4LCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgNzksIDg0LCAKLSAgICA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCi0gICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKLSAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgCi0gICAgNjYsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgCi0gICAgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgCi0gICAgNjYsIDc2LCA3OSwgODcsIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCAKLSAgICA3NiwgNzksIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIAotICAgIDc2LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgCi0gICAgNjYsIDc2LCA2NSwgNjgsIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCAKLSAgICA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgCi0gICAgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCAKLSAgICA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIAotICAgIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgCi0gICAgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCAKLSAgICA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIAotICAgIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgCi0gICAgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCAKLSAgICA2NiwgNzMsIDE5OSwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIAotICAgIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCA2NiwgNzMsIDY2LCAKLSAgICA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIDcyLCA4NSwgMTI4LCAKLSAgICA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIDcyLCA2OSwgODQsIAotICAgIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgODQsIDg0LCA3MywgCi0gICAgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCAKLSAgICA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgCi0gICAgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgCi0gICAgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCAKLSAgICA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIAotICAgIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgCi0gICAgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgCi0gICAgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCAKLSAgICA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIAotICAgIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIAotICAgIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCAKLSAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIAotICAgIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgCi0gICAgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCAKLSAgICA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCAKLSAgICA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCAKLSAgICA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgCi0gICAgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgCi0gICAgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCAKLSAgICA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgCi0gICAgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKLSAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCi0gICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKLSAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKLSAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgCi0gICAgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCAKLSAgICA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAotICAgIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgCi0gICAgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAKLSAgICAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIAotICAgIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIDY1LCA2NywgCi0gICAgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDcyLCA2NSwgNzgsIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIAotICAgIDY1LCA2NywgNzUsIDEyOCwgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIAotICAgIDY2LCA2NSwgNjUsIDgyLCA2OSwgODIsIDg1LCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDU3LCAKLSAgICAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIDY2LCAKLSAgICA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgNTAsIAotICAgIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCA1MywgCi0gICAgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAxNzYsIAotICAgIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCA1MSwgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCA1MCwgCi0gICAgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIDE4MSwgCi0gICAgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIDQ5LCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgNTAsIAotICAgIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCA1NywgCi0gICAgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCA2NiwgCi0gICAgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIDY2LCAKLSAgICA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgNTYsIAotICAgIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAxMjgsIAotICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCA0OSwgCi0gICAgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCA2NiwgCi0gICAgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIDU0LCAKLSAgICA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgMTI4LCAKLSAgICA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgNTQsIAotICAgIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgNDksIAotICAgIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAxMjgsIAotICAgIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCA0OSwgCi0gICAgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCA2NiwgCi0gICAgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCA2NiwgCi0gICAgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCA2NiwgCi0gICAgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCA0OSwgCi0gICAgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCA0OSwgCi0gICAgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIDU1LCAKLSAgICAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIDY2LCAKLSAgICA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgMTgwLCAKLSAgICA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIDY2LCAKLSAgICA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgMTgxLCAKLSAgICA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgNTYsIAotICAgIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgNTUsIAotICAgIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgMTc4LCAKLSAgICA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIDY2LCAKLSAgICA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIDY2LCAKLSAgICA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIDY2LCAKLSAgICA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY2LCAKLSAgICA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIDQ4LCAKLSAgICA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIDQ4LCAKLSAgICA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIDQ4LCAKLSAgICA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIDUxLCAKLSAgICAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIDUyLCAKLSAgICAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIDE3NiwgCi0gICAgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCA2NiwgCi0gICAgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NiwgCi0gICAgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIDEyOCwgCi0gICAgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCA2NiwgCi0gICAgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCA2NiwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIDE4MiwgCi0gICAgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIDY2LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgMTc3LCAKLSAgICA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjksIDIxMCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCAKLSAgICA2NSwgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgODYsIAotICAgIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIDY1LCAKLSAgICAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAotICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKLSAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgCi0gICAgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCAKLSAgICA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAotICAgIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgCi0gICAgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCAKLSAgICA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgCi0gICAgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCAKLSAgICA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIAotICAgIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIAotICAgIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgCi0gICAgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgNTcsIAotICAgIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgCi0gICAgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCAKLSAgICA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIAotICAgIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAKLSAgICAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIAotICAgIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgCi0gICAgNzksIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCAKLSAgICA4MiwgODIsIDczLCA4NiwgNjksIDEyOCwgNjUsIDgyLCA4MiwgNjUsIDg5LCAxMjgsIDY1LCA4MiwgODAsIDY5LCA3MSwgNzEsIAotICAgIDczLCA2NSwgODQsIDIwNywgNjUsIDgyLCA3OSwgODUsIDgzLCA3MywgNzgsIDE5OSwgNjUsIDgyLCA3OSwgODUsIDgyLCAKLSAgICAxOTMsIDY1LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4MCwgODIsIDc5LCA3MCwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODIsIAotICAgIDc5LCA4NSwgNzgsIDE5NiwgNjUsIDgyLCA3NywgODksIDEyOCwgNjUsIDgyLCA3NywgNzksIDg1LCA4MiwgMTI4LCA2NSwgCi0gICAgODIsIDIwNSwgNjUsIDgyLCA3NiwgNjUsIDg1LCAxOTksIDY1LCA4MiwgNzUsIDg0LCA3MywgNzUsIDIwNywgNjUsIDgyLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA4MiwgNzUsIDY1LCA2NSwgNzgsIDg1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIAotICAgIDgyLCA2NSwgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgMTkzLCA2NSwgODIsIDczLCA2OSwgODMsIDEyOCwgCi0gICAgNjUsIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDY1LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4NCwgNzksIDc4LCAxMjgsIDY1LCA4MiwgNzEsIDczLCAxMjgsIDY1LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA2NSwgCi0gICAgODIsIDY4LCA3MiwgNjUsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAKLSAgICAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgNjUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDg1LCAxMjgsIAotICAgIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCA3OSwgMTI4LCA2NSwgCi0gICAgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgMTI4LCA2NSwgODIsIDY1LCAKLSAgICA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCA3MywgNzgsIDY4LCA3MywgCi0gICAgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCAKLSAgICA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgCi0gICAgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCAKLSAgICA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgCi0gICAgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCAKLSAgICA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgCi0gICAgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCAKLSAgICA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIAotICAgIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgCi0gICAgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCAKLSAgICA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIAotICAgIDIwNywgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc4LCA4NSwgCi0gICAgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIAotICAgIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIAotICAgIDczLCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgCi0gICAgNzcsIDc5LCA3OCwgNzMsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIAotICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDg0LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIAotICAgIDg3LCA3MywgODMsIDY5LCA0NSwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKLSAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIAotICAgIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDcyLCA4NSwgCi0gICAgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCAKLSAgICA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAotICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCi0gICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAotICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCi0gICAgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCAKLSAgICA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIAotICAgIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAKLSAgICAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgCi0gICAgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIAotICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCi0gICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKLSAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAotICAgIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCAKLSAgICA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIAotICAgIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgCi0gICAgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCAKLSAgICA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCi0gICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCi0gICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAotICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgCi0gICAgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCAKLSAgICA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgCi0gICAgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgCi0gICAgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgCi0gICAgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCAKLSAgICA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIAotICAgIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgCi0gICAgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCAKLSAgICA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCAKLSAgICA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgCi0gICAgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgCi0gICAgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIAotICAgIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAKLSAgICAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIAotICAgIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKLSAgICA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIAotICAgIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCAKLSAgICA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIAotICAgIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCAKLSAgICA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDIxMiwgNjUsIAotICAgIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCAKLSAgICA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIAotICAgIDE3OCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIAotICAgIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAotICAgIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCi0gICAgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAKLSAgICAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCAKLSAgICA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIAotICAgIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIAotICAgIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgCi0gICAgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAKLSAgICAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCAKLSAgICA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAKLSAgICAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgMTI4LCAKLSAgICA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgNDgsIAotICAgIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCA1MCwgCi0gICAgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCAKLSAgICA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDUsIAotICAgIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIDg5LCA4NSwgCi0gICAgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgNzIsIDY1LCAKLSAgICAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIAorICAgIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCAKKyAgICAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCAKKyAgICA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgCisgICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCAKKyAgICA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIAorICAgIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgCisgICAgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAKKyAgICAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCAKKyAgICA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIAorICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgCisgICAgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCAKKyAgICA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIAorICAgIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIAorICAgIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAKKyAgICAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCAKKyAgICA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIAorICAgIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgCisgICAgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDY3LCAKKyAgICA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCA2NywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgMTI4LCA2NywgCisgICAgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNDgsIDQ5LCAKKyAgICA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCA0NSwgNTEsIAorICAgIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIDIwMSwgNjYsIAorICAgIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCAKKyAgICA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIAorICAgIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgCisgICAgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgCisgICAgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCAKKyAgICA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIAorICAgIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgCisgICAgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAorICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCisgICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIAorICAgIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCisgICAgNzYsIDY5LCAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCAKKyAgICA2NSwgMTczLCA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIAorICAgIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgCisgICAgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKKyAgICA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgCisgICAgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCAKKyAgICA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIAorICAgIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgCisgICAgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgCisgICAgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIAorICAgIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIAorICAgIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgCisgICAgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCAKKyAgICA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIAorICAgIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCA3OSwgODQsIDIwMCwgCisgICAgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCAKKyAgICA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIAorICAgIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAKKyAgICA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIAorICAgIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIAorICAgIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIDc5LCA2NSwgODIsIDEyOCwgCisgICAgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCAKKyAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCA3OSwgNjgsIAorICAgIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNjksIDc4LCA2OCwgCisgICAgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKKyAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAKKyAgICAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgCisgICAgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIAorICAgIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgCisgICAgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCAKKyAgICA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIAorICAgIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCisgICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCisgICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKKyAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIAorICAgIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgCisgICAgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCAKKyAgICA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCAKKyAgICA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIAorICAgIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAKKyAgICAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCAKKyAgICA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIAorICAgIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgCisgICAgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCAKKyAgICA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCAKKyAgICA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgCisgICAgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAyMDQsIDY2LCA2OSwgCisgICAgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgNzYsIDEyOCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCAKKyAgICA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIAorICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgCisgICAgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKKyAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAorICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCisgICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKKyAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAorICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIAorICAgIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgCisgICAgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIAorICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIAorICAgIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIAorICAgIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIAorICAgIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCAKKyAgICA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIAorICAgIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgCisgICAgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKKyAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIAorICAgIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgCisgICAgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIAorICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgCisgICAgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCAKKyAgICA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDE5NCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCAKKyAgICA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIAorICAgIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgCisgICAgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAKKyAgICAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIAorICAgIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgCisgICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIAorICAgIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgCisgICAgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAKKyAgICA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIAorICAgIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIAorICAgIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgMTI4LCA2NiwgCisgICAgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCAKKyAgICA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIAorICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgCisgICAgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAKKyAgICAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIAorICAgIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAxMjgsIDY2LCAKKyAgICA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgNjYsIDUwLCAKKyAgICA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCA1MCwgNTYsIAorICAgIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCA2NiwgNTAsIAorICAgIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIDU3LCAxMjgsIAorICAgIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIDY2LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgNDksIDUwLCAKKyAgICAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAxMjgsIDY2LCAKKyAgICA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCA1MCwgNDgsIAorICAgIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIDUwLCAxMjgsIAorICAgIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIDQ5LCA1NywgCisgICAgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgCisgICAgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgNjYsIDQ5LCAKKyAgICA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIAorICAgIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCA0OSwgNTUsIAorICAgIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIDY2LCA0OSwgCisgICAgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgCisgICAgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgNTMsIDU2LCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgNjYsIDQ5LCAKKyAgICA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCAKKyAgICA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCA0OSwgNTIsIAorICAgIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCA0OSwgNTEsIAorICAgIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCA0OSwgNTAsIAorICAgIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCAKKyAgICA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIAorICAgIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIAorICAgIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgCisgICAgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIDY2LCA0OSwgCisgICAgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgCisgICAgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIDY2LCA0OCwgCisgICAgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgCisgICAgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgCisgICAgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIDY2LCA0OCwgCisgICAgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgCisgICAgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgCisgICAgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIDQ4LCA1MywgCisgICAgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIDQ4LCA1MywgCisgICAgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIAorICAgIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIDUyLCA1NSwgCisgICAgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIDUyLCAxNzksIAorICAgIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIDE4NSwgNjYsIAorICAgIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIAorICAgIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIAorICAgIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCA0OCwgNTAsIAorICAgIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCA0OCwgNTAsIAorICAgIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIAorICAgIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCA0OCwgNDksIAorICAgIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIAorICAgIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIAorICAgIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgCisgICAgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgCisgICAgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCAKKyAgICA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIAorICAgIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgCisgICAgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCAKKyAgICA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIAorICAgIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAKKyAgICA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIAorICAgIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgCisgICAgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAKKyAgICAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIAorICAgIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCAKKyAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgCisgICAgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCAKKyAgICA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIAorICAgIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCAKKyAgICA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAKKyAgICAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIAorICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgCisgICAgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgCisgICAgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgCisgICAgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgCisgICAgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCAKKyAgICA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIAorICAgIDY1LCA2OCwgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgNjUsIDE5NiwgNjUsIDgyLCA4MiwgNzksIDg3LCA0NSwgCisgICAgODQsIDY1LCA3MywgNzYsIDEyOCwgNjUsIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgODksIAorICAgIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCA3OCwgCisgICAgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIDcwLCAKKyAgICA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgODIsIAorICAgIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCA3NSwgCisgICAgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIAorICAgIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAKKyAgICAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIAorICAgIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgCisgICAgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCA4MiwgNjksIDY1LCAxMjgsIDY1LCA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCAKKyAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIAorICAgIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgCisgICAgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIAorICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAKKyAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIAorICAgIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgCisgICAgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCAKKyAgICA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIAorICAgIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgCisgICAgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCAKKyAgICA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgCisgICAgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIAorICAgIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgCisgICAgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCAKKyAgICA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCisgICAgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKKyAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIAorICAgIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKKyAgICAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAKKyAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgCisgICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAorICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKKyAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCisgICAgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCAKKyAgICA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIAorICAgIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgCisgICAgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCAKKyAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIAorICAgIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKKyAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIAorICAgIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgCisgICAgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIAorICAgIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgCisgICAgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCAKKyAgICA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCAKKyAgICA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIAorICAgIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAKKyAgICAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIAorICAgIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgCisgICAgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAKKyAgICAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIAorICAgIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIAorICAgIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgCisgICAgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCA3NiwgNjUsIDg5LCAKKyAgICA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA0NSwgNzYsIAorICAgIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCA3NSwgNjUsIDY2LCAKKyAgICAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIDY1LCA3NSwgNjYsIAorICAgIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgNzMsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAyMDYsIDY1LCAKKyAgICA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIAorICAgIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA2NSwgNzgsIDE5OSwgCisgICAgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIAorICAgIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgCisgICAgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCAKKyAgICA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjksIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCAKKyAgICA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgCisgICAgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCAKKyAgICA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIAorICAgIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCisgICAgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCAKKyAgICA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIAorICAgIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCAKKyAgICA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIAorICAgIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgCisgICAgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIAorICAgIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgCisgICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIAorICAgIDY3LCA2OSwgNzgsIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAKKyAgICAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIAorICAgIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCAKKyAgICA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKKyAgICA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIAorICAgIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAKKyAgICAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCAKKyAgICA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgCisgICAgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAKKyAgICAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2NSwgNDgsIDUxLCA1NywgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2NSwgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIAorICAgIDQ1LCA3NSwgNzIsIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAKKyAgICAxOTYsIDQ1LCA2NywgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbGV4aWNvbl9vZmZzZXRbXSA9IHsKLSAgICAwLCAwLCA2LCAxMCwgMTUsIDIzLCAyNywgMzQsIDM5LCA0MSwgNDQsIDUyLCA2MiwgNjgsIDgxLCA5MywgMTAyLCAxMDgsIAotICAgIDExMywgMTIxLCAxMzAsIDEzNSwgMTQwLCAxNDQsIDE1MCwgMTUzLCAxNTgsIDE2NiwgMTczLCAxODEsIDE4NiwgMTkxLCAKLSAgICAxOTQsIDIwMCwgMjA4LCAyMTUsIDIyNSwgMjMyLCAyNDEsIDI0NCwgMjQ3LCAyNTIsIDI1OCwgMjYyLCAyNzEsIDI3OCwgCi0gICAgMjg1LCAyOTAsIDI5OSwgMzA3LCAzMTMsIDMxOSwgMzI1LCAxNDEsIDMzMCwgMzMxLCAzMzcsIDM0NSwgMzUxLCAzNTcsIAotICAgIDM2NSwgMzcyLCAzNzQsIDM3NywgMzgxLCAzODgsIDM5MCwgMzk3LCA0MDIsIDQwOCwgNDEwLCA0MTcsIDQyNSwgNDI3LCAKLSAgICAzMTEsIDQzMCwgNDMyLCA0MzcsIDQ0MiwgNDQ3LCA0NTMsIDQ2MCwgNDY5LCA0NzksIDQ4NCwgNDg5LCA0OTMsIDUwNiwgCi0gICAgNTEzLCA1MTcsIDUyNiwgNTMzLCA1NDAsIDU0MywgNTQ5LCA1NTMsIDU2MywgNTcxLCA1NzksIDU4OCwgNTk2LCA2MDQsIAotICAgIDYwOSwgNjE3LCA2MjQsIDYzNCwgNjQ1LCA2NDksIDY1NCwgNjU3LCA2NjEsIDY2NSwgNjY2LCA2NzIsIDY3OCwgNjgwLCAKLSAgICA2ODMsIDY4NywgMzQ0LCA2OTAsIDY5NCwgNzAzLCA3MDYsIDcwOSwgNzE0LCA3MTgsIDcyNiwgNzI5LCA3MzUsIDc0MiwgCi0gICAgNzQ5LCA3NTgsIDc2NSwgNzc0LCA3NzksIDc4MywgNzkyLCA4MDIsIDgxMSwgODE3LCA4MjMsIDgzMCwgODM4LCA4NDYsIAotICAgIDg1NSwgODYzLCA4NjcsIDg3NSwgODgwLCA3ODEsIDUxMSwgODg5LCA4OTMsIDg5NywgOTA0LCA5MDgsIDkxNSwgNjg5LCAKLSAgICA5MTgsIDkyNiwgOTI5LCA5MzMsIDk0MCwgOTQ0LCA5NDksIDk1NywgOTYwLCAxOTIsIDk2NiwgOTcxLCA5ODEsIDk5MCwgCi0gICAgOTk3LCAxMDA0LCAxMDEyLCAxMDIwLCAxMDI2LCAxMDMwLCAxMDM1LCAxMDQwLCAxMDQ2LCAxMDUxLCAxMDU0LCAxMTEsIAotICAgIDEwNjAsIDEwNjQsIDEwNzAsIDEwNzMsIDEwODYsIDEwODksIDEwOTMsIDIyLCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAKLSAgICAxMTE0LCAxMTI0LCAxMTI2LCAxMTMyLCAxMTQyLCAxMTQ3LCAxMTU2LCAxMTY0LCAzMjgsIDExNjcsIDExNzAsIDExNzQsIAotICAgIDExNzksIDExODUsIDExOTAsIDExOTcsIDExOTksIDEyMDQsIDEyMDksIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIAotICAgIDEyNDAsIDEyNDUsIDEyNTAsIDEyNTQsIDEyNTksIDEyNjQsIDEyNjgsIDEyNzMsIDEyNzgsIDEyODMsIDEyODksIDEyOTUsIAotICAgIDEzMDEsIDEzMDYsIDEzMTAsIDEzMTUsIDEzMjAsIDEzMjUsIDEzMjksIDEzMzQsIDEzMzksIDEzNDQsIDEzNDksIDEyMDAsIAotICAgIDEyMDUsIDEyMTAsIDEyMTYsIDEyMjEsIDEzNTMsIDEyMjYsIDEzNTksIDEzNjgsIDEyMzAsIDEzNzIsIDEyMzUsIDEyNDEsIAotICAgIDEyNDYsIDEzNzYsIDEzODEsIDEzODYsIDEzOTAsIDEzOTQsIDE0MDAsIDE0MDQsIDEyNTEsIDE0MDcsIDE0MTEsIDEyNTUsIAotICAgIDE0MTcsIDEyNjAsIDE0MjEsIDE0MjUsIDEyNjUsIDE0MjksIDE0MzQsIDE0MzgsIDE0NDEsIDE0NDUsIDEyNjksIDEyNzQsIAotICAgIDE0NTAsIDEyNzksIDE0NTYsIDE0NjIsIDE0NjgsIDE0NzQsIDEyODQsIDEyOTYsIDEzMDIsIDE0NzgsIDE0ODIsIDE0ODYsIAotICAgIDE0ODksIDEzMDcsIDE0OTMsIDE0OTUsIDE1MDAsIDE1MDUsIDE1MTEsIDE1MTYsIDE1MjEsIDE1MjUsIDE1MzAsIDE1MzUsIAotICAgIDE1NDAsIDE1NDUsIDE1NTEsIDE1NTYsIDE1NjEsIDE1NjcsIDE1NzMsIDE1NzgsIDE1ODIsIDE1ODcsIDE1OTIsIDE1OTcsIAotICAgIDE2MDIsIDE2MDYsIDE2MTQsIDE2MTgsIDE2MjMsIDE2MjgsIDE2MzMsIDE2MzgsIDE2NDIsIDE2NDUsIDE2NTAsIDE2NTUsIAotICAgIDE2NjAsIDE2NjUsIDE2NzEsIDE2NzYsIDE2ODAsIDEzMTEsIDE2ODMsIDE2ODgsIDE2OTMsIDEzMTYsIDE2OTcsIDE3MDEsIAotICAgIDE3MDgsIDEzMjEsIDE3MTUsIDEzMjYsIDE3MTksIDE3MjEsIDE3MjYsIDE3MzIsIDEzMzAsIDE3MzcsIDE3NDYsIDEzMzUsIAotICAgIDE3NTEsIDE3NTcsIDEzNDAsIDE3NjIsIDE3NjcsIDE3NzAsIDE3NzUsIDE3NzksIDE3ODMsIDE3ODcsIDE3OTAsIDE3OTQsIAotICAgIDEzNDUsIDEzNTAsIDExMDAsIDE3OTksIDE4MDUsIDE4MTEsIDE4MTcsIDE4MjMsIDE4MjksIDE4MzUsIDE4NDEsIDE4NDcsIAotICAgIDE4NTIsIDE4NTgsIDE4NjQsIDE4NzAsIDE4NzYsIDE4ODIsIDE4ODgsIDE4OTQsIDE5MDAsIDE5MDYsIDE5MTEsIDE5MTYsIAotICAgIDE5MjEsIDE5MjYsIDE5MzEsIDE5MzYsIDE5NDEsIDE5NDYsIDE5NTEsIDE5NTYsIDE5NjIsIDE5NjcsIDE5NzMsIDE5NzgsIAotICAgIDE5ODQsIDE5OTAsIDE5OTUsIDIwMDEsIDIwMDcsIDIwMTMsIDIwMTksIDIwMjQsIDIwMjksIDIwMzEsIDIwMzIsIDIwMzYsIAotICAgIDIwNDAsIDIwNDUsIDIwNDksIDIwNTMsIDIwNTcsIDIwNjEsIDIwNjQsIDIwNjksIDIwNzMsIDIwNzgsIDIwODIsIDIwODYsIAotICAgIDIwOTEsIDIwOTUsIDIwOTgsIDIxMDIsIDIxMDgsIDIxMjIsIDIxMjYsIDIxMzAsIDIxMzMsIDIxMzgsIDIxNDIsIDIxNDYsIAotICAgIDIxNDksIDIxNTMsIDIxNTgsIDIxNjMsIDIxNjgsIDIxNzMsIDIxNzcsIDIxODEsIDIxODUsIDIxOTAsIDIxOTQsIDIxOTksIAotICAgIDIyMDMsIDIyMDgsIDIyMTQsIDIyMjEsIDIyMjcsIDIyMzIsIDIyMzcsIDIyNDIsIDIyNDgsIDIyNTMsIDIyNTksIDIyNjQsIAotICAgIDIyNjcsIDEyMTcsIDIyNjksIDIyNzYsIDIyODQsIDIyOTQsIDIzMDMsIDIzMTcsIDIzMjEsIDIzMjUsIDIzMzgsIDIzNDYsIAotICAgIDIzNTAsIDIzNTUsIDIzNTksIDIzNjIsIDIzNjYsIDIzNzAsIDIzNzUsIDIzODAsIDIzODUsIDIzODksIDIzOTIsIDIzOTYsIAotICAgIDI0MDMsIDI0MTAsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzIsIDI0MzgsIDI0NDMsIDI0NDYsIDE3MjMsIDI0NDgsIDI0NTQsIAotICAgIDI0NTgsIDI0NjMsIDI0NjcsIDI0NzEsIDE3MjgsIDE3MzQsIDI0NzYsIDI0ODAsIDI0ODMsIDI0ODgsIDI0OTMsIDI0OTgsIAotICAgIDI1MDMsIDI1MDcsIDI1MTQsIDI1MTksIDI1MjIsIDI1MjksIDI1MzUsIDI1MzksIDI1NDMsIDI1NDcsIDI1NTIsIDI1NTksIAotICAgIDI1NjQsIDI1NjksIDI1NzYsIDI1ODIsIDI1ODgsIDI1OTQsIDI2MDgsIDI2MjUsIDI2NDAsIDI2NTUsIDI2NjQsIDI2NjksIAotICAgIDI2NzMsIDI2NzgsIDI2ODMsIDI2ODcsIDI2OTksIDI3MDYsIDI3MTIsIDIyMTcsIDI3MTgsIDI3MjUsIDI3MzEsIDI3MzUsIAotICAgIDI3MzgsIDI3NDUsIDI3NTEsIDI3NTUsIDI3NTksIDI3NjMsIDIwNTQsIDI3NjcsIDI3NzIsIDI3NzcsIDI3ODEsIDI3ODksIAotICAgIDI3OTMsIDI3OTcsIDI4MDEsIDI4MDYsIDI4MTEsIDI4MTYsIDI4MjAsIDI4MjUsIDI4MzAsIDI4MzQsIDI4MzksIDI4NDMsIAotICAgIDI4NDYsIDI4NTAsIDI4NTQsIDI4NTksIDI4NjMsIDI4NjcsIDI4NzMsIDI4ODIsIDI4ODYsIDI4OTAsIDI4OTYsIDI5MDEsIAotICAgIDI5MDgsIDI5MTIsIDI5MjIsIDI5MjYsIDI5MzEsIDI5MzUsIDI5NDAsIDI5NDYsIDI5NTEsIDI5NTUsIDI5NTksIDI5NjMsIAotICAgIDI0MDYsIDI5NzEsIDI5NzYsIDI5ODIsIDI5ODcsIDI5OTEsIDI5OTYsIDMwMDEsIDMwMDUsIDMwMTEsIDMwMTYsIDMwMjIsIAotICAgIDMwMjYsIDMwMzIsIDMwMzcsIDMwNDIsIDMwNDcsIDMwNTIsIDMwNTcsIDMwNjIsIDMwNjcsIDMwNzIsIDMwNzcsIDMwODMsIAotICAgIDMwODgsIDEyMjcsIDgwLCAzMDk0LCAzMDk4LCAzMTAyLCAzMTA2LCAzMTExLCAzMTE1LCAzMTE5LCAzMTIzLCAzMTI3LCAKLSAgICAzMTMyLCAzMTM2LCAzMTQxLCAzMTQ1LCAzMTQ4LCAzMTUyLCAzMTU3LCAzMTYxLCAzMTY2LCAzMTcwLCAzMTc0LCAzMTc4LCAKLSAgICAzMTgzLCAzMTg3LCAzMTkwLCAzMjAzLCAzMjA3LCAzMjExLCAzMjE1LCAzMjE5LCAzMjIzLCAzMjI2LCAzMjMwLCAzMjM0LCAKLSAgICAzMjM5LCAzMjQzLCAzMjQ4LCAzMjUzLCAzMjU4LCAzMjYyLCAzMjY1LCAzMjY4LCAzMjc0LCAzMjc4LCAzMjgyLCAzMjg1LCAKLSAgICAzMjg5LCAzMjkzLCAzMjk2LCAzMzAyLCAzMzA3LCAzMzEyLCAzMzE4LCAzMzIzLCAzMzI4LCAzMzM0LCAzMzQwLCAzMzQ1LCAKLSAgICAzMzUwLCAzMzU1LCAxMDkxLCA1NDIsIDMzNjAsIDMzNjMsIDMzNjgsIDMzNzIsIDMzNzUsIDMzNzksIDMzODQsIDMzODksIAotICAgIDMzOTMsIDMzOTgsIDM0MDIsIDM0MDcsIDM0MTEsIDM0MTUsIDM0MjEsIDM0MjcsIDM0MzAsIDM0MzMsIDM0MzksIDM0NDYsIAotICAgIDM0NTMsIDM0NTksIDM0NjYsIDM0NzEsIDM0NzUsIDM0ODIsIDM0ODcsIDM0OTEsIDM1MDEsIDM1MDUsIDM1MDksIDM1MTQsIAotICAgIDM1MTksIDM1MjksIDIwNjUsIDM1MzQsIDM1MzgsIDM1NDEsIDM1NDcsIDM1NTIsIDM1NTgsIDM1NjQsIDM1NjksIDM1NzYsIAotICAgIDM1ODAsIDM1ODQsIDY1OCwgNjg4LCAzNTg4LCAzNTk1LCAzNjAyLCAzNjA5LCAzNjE1LCAzNjIxLCAzNjI2LCAzNjMwLCAKLSAgICAzNjM2LCAzNjQxLCAzNjQ1LCAyMDc0LCAzNjQ5LCAzNjU3LCA1ODMsIDM2NjMsIDM2NzQsIDM2NzgsIDM2ODgsIDIwNzksIAotICAgIDM2OTQsIDM2OTksIDM3MTQsIDM3MjAsIDM3MjcsIDM3MzcsIDM3NDMsIDM3NDgsIDM3NTQsIDM3NjAsIDM3NjMsIDM3NjcsIAotICAgIDM3NzIsIDM3NzksIDM3ODQsIDM3ODgsIDM3OTIsIDM3OTYsIDM4MDAsIDM4MDUsIDM4MTEsIDMxNTMsIDM4MTYsIDM4MjgsIAotICAgIDM4MzYsIDM4NDEsIDE1MjcsIDM4NDgsIDM4NTEsIDM4NTQsIDM4NTgsIDM4NjEsIDM4NjcsIDM4NzEsIDM4ODUsIDM4ODksIAotICAgIDM4OTIsIDM4OTYsIDM5MDIsIDM5MDgsIDM5MTMsIDM5MTcsIDM5MjEsIDM5MjcsIDM5MzgsIDM5NDQsIDM5NDksIDM5NTUsIAotICAgIDM5NTksIDM5NjcsIDM5NzcsIDM5ODMsIDM5ODgsIDM5OTcsIDQwMDUsIDQwMTIsIDQwMTYsIDQwMjIsIDQwMzEsIDQwNDAsIAotICAgIDQwNDQsIDQwNDksIDQwNTQsIDQwNTgsIDQwNjYsIDQwNzAsIDQwNzUsIDQwNzksIDIwODcsIDEzNjksIDQwODUsIDQwOTAsIAotICAgIDQwOTYsIDQxMDEsIDQxMDYsIDQxMTEsIDQxMTYsIDQxMjEsIDQxMjYsIDQxMzIsIDQxMzcsIDQxNDMsIDQxNDgsIDQxNTMsIAotICAgIDQxNTgsIDQxNjQsIDQxNjksIDQxNzQsIDQxNzksIDQxODQsIDQxOTAsIDQxOTUsIDQyMDEsIDQyMDYsIDQyMTEsIDQyMTYsIAotICAgIDQyMjEsIDQyMjYsIDQyMzEsIDQyMzcsIDQyNDIsIDQyNDcsIDMzNSwgNDM2LCA0MjUyLCA0MjU4LCA0MjYyLCA0MjY2LCAKLSAgICA0MjcxLCA0Mjc1LCA0Mjc5LCA0MjgyLCA0Mjg2LCA0MjkwLCA0Mjk0LCA0Mjk5LCA0MzAzLCA0MzA3LCA0MzEzLCA0MDgyLCAKLSAgICA0MzE4LCA0MzIxLCA0MzI4LCA0MzMyLCA0MzQ1LCA0MzQ5LCA0MzUzLCA0MzU3LCA0MzYxLCA0MzY1LCA0MzY5LCA0Mzc1LCAKLSAgICA0MzgyLCA0MzkwLCA0Mzk0LCA0NDAyLCA0NDExLCA0NDE3LCA0NDI5LCA0NDM0LCA0NDM3LCA0NDQxLCA0NDUxLCA0NDU5LCAKLSAgICA0NDY3LCA0NDczLCA0NDc3LCA0NDg3LCA0NDk3LCA0NTA1LCA0NTEyLCA0NTE5LCA0NTI1LCA0NTMxLCA0NTM4LCA0NTQyLCAKLSAgICA0NTQ5LCA0NTU5LCA0NTY5LCA0NTc3LCA0NTg0LCA0NTg5LCA0NTkzLCA0NjAxLCA0NjA2LCA0NjEzLCA0NjIxLCA0NjI2LCAKLSAgICA0NjMxLCA0NjM1LCA0NjQ5LCA0NjU0LCA0NjU5LCA0NjY2LCA0Njc1LCA0Njc4LCA0NjgyLCA0Njg2LCA0Njg5LCA0Njk0LCAKLSAgICA0Njk5LCA0NzA4LCA0NzE0LCA0NzIwLCA0NzI2LCA0NzMwLCA0NzQxLCA0NzUxLCA0NzY2LCA0NzgxLCA0Nzk2LCA0ODExLCAKLSAgICA0ODI2LCA0ODQxLCA0ODU2LCA0ODcxLCA0ODg2LCA0OTAxLCA0OTE2LCA0OTMxLCA0OTQ2LCA0OTYxLCA0OTc2LCA0OTkxLCAKLSAgICA1MDA2LCA1MDIxLCA1MDM2LCA1MDUxLCA1MDY2LCA1MDgxLCA1MDk2LCA1MTExLCA1MTI2LCA1MTQxLCA1MTU2LCA1MTcxLCAKLSAgICA1MTg2LCA1MjAxLCA1MjE2LCA1MjMxLCA1MjQ2LCA1MjYxLCA1Mjc2LCA1MjkxLCA1MzA2LCA1MzIxLCA1MzM2LCA1MzUxLCAKLSAgICA1MzY2LCA1MzgxLCA1Mzk2LCA1NDExLCA1NDI2LCA1NDQxLCA1NDU2LCA1NDcxLCA1NDg2LCA1NDk1LCA1NTA0LCA1NTA5LCAKLSAgICA1NTE1LCA1NTI1LCA1NTI5LCA1NTM0LCA1NTM5LCA1NTQ3LCA1NTUxLCA1NTU0LCA1NTU4LCAyOTE3LCA1NTYxLCA1NTY2LCAKLSAgICAzMTAsIDQ0NSwgNTU3MiwgNTU4MCwgNTU4NCwgNTU4OCwgNTU5MSwgNTU5NywgNTYwMSwgNTYwOSwgNTYxNSwgNTYyMCwgCi0gICAgNTYyNywgNTYzNCwgNTY0MCwgNTY0NSwgNTY1MiwgNTY1OCwgNTY2NiwgNTY3MCwgNTY3NSwgNTY4NywgNTY5OCwgNTcwNSwgCi0gICAgNTcxMSwgMzE3NSwgNTcxNSwgNTcyMSwgNTcyNiwgNTczMSwgNTczNiwgNTc0MiwgNTc0NywgNTc1MiwgNTc1NywgNTc2MiwgCi0gICAgNTc2OCwgNTc3MywgNTc3OCwgNTc4NCwgNTc4OSwgNTc5NSwgNTgwMCwgNTgwNiwgNTgxMSwgNTgxNywgNTgyMiwgNTgyNywgCi0gICAgNTgzMiwgNTgzNywgNTg0MiwgNTg0OCwgNTg1MywgNTg1OCwgNTg2MywgNTg2OSwgNTg3NSwgNTg4MSwgNTg4NywgNTg5MywgCi0gICAgNTg5OSwgNTkwNSwgNTkxMSwgNTkxNywgNTkyMywgNTkyOSwgNTkzNSwgNTk0MCwgNTk0NSwgNTk1MCwgNTk1NSwgNTk2MCwgCi0gICAgNTk2NSwgNTk3MCwgNTk3NSwgNTk4MSwgNTk4NywgNTk5MiwgNTk5OCwgNjAwNCwgNjAxMCwgNjAxNSwgNjAyMCwgNjAyNSwgCi0gICAgNjAzMCwgNjAzNiwgNjA0MiwgNjA0NywgNjA1MiwgNjA1NywgNjA2MiwgNjA2NywgNjA3MywgNjA3OCwgNjA4NCwgNjA5MCwgCi0gICAgNjA5NiwgNjEwMiwgNjEwOCwgNjExNCwgNjEyMCwgNjEyNiwgNjEzMiwgMjA5NiwgNTU5MCwgNjEzNywgNjE0MSwgNjE0NSwgCi0gICAgNjE0OCwgNjE1NSwgNjE1OCwgNjE2NiwgNjE3MSwgNjE3NiwgNjE2NywgNjE4MSwgNjE2OCwgNjE4NSwgNjE5MSwgNjE5NywgCi0gICAgNjIwMiwgNjIwNywgNjIxNCwgNjIyMiwgNjIyNywgNjIzMSwgNjIzNCwgNjIzOCwgMjEyNywgNTUxLCA2MjQyLCA2MjQ2LCAKLSAgICA2MjUxLCA2MjU3LCA2MjYyLCA2MjY2LCA2MjY5LCA2MjczLCA2Mjc5LCA2Mjg0LCA2Mjg4LCA2Mjk1LCA2Mjk5LCA2MzAzLCAKLSAgICA2MzA3LCA5NDYsIDc0NywgNjMxMCwgNjMxOCwgNjMyNSwgNjMzMiwgNjMzOCwgNjM0NSwgNjM1MywgNjM2MCwgNjM2NywgCi0gICAgNjM3MiwgNjM4NCwgMTI0NywgMTM3NywgMTM4MiwgNjM5NSwgMTM4NywgNjM5OSwgNjQwMywgNjQxMiwgNjQyMCwgNjQyOSwgCi0gICAgNjQzNSwgNjQ0MCwgNjQ0NCwgNjQ1MCwgNjQ1NSwgNjQ2MiwgNjQ2NiwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjUwMiwgNjUwNywgCi0gICAgNjUxMiwgNjUyNCwgNjUyOSwgNjUzNywgMjE3OCwgNjU0MSwgNjU0MywgNjU0OCwgNjU1MiwgNjU2MSwgNjU2OSwgMTM5MSwgCi0gICAgMTMzLCAzNDAzLCAzNDA4LCA2NTc1LCA2NTc5LCA2NTg4LCA2NTk0LCA2NTk5LCA2NjAyLCA2NjExLCAyNjUyLCA2NjE3LCAKLSAgICA2NjI1LCA2NjI5LCA2NjMzLCAyMTkxLCA2NjM3LCA2NjQyLCA2NjQ5LCA2NjU1LCA2NjYxLCA2NjY0LCA2NjY2LCA2NjY5LCAKLSAgICA2Njc3LCA2Njg1LCA2NjkzLCA2Njk2LCA2NzAxLCA2MTc4LCA2NzA0LCA2NzA2LCA2NzExLCA2NzE2LCA2NzIxLCA2NzI2LCAKLSAgICA2NzMxLCA2NzM2LCA2NzQxLCA2NzQ2LCA2NzUxLCA2NzU2LCA2NzYyLCA2NzY3LCA2NzcyLCA2Nzc3LCA2NzgzLCA2Nzg4LCAKLSAgICA2NzkzLCA2Nzk4LCA2ODAzLCA2ODA4LCA2ODEzLCA2ODE5LCA2ODI0LCA2ODI5LCA2ODM0LCA2ODM5LCA2ODQ0LCA2ODQ5LCAKLSAgICA2ODU0LCA2ODU5LCA2ODY0LCA2ODY5LCA2ODc0LCA2ODc5LCA2ODg0LCA2ODg5LCA2ODk0LCA2ODk5LCA2OTA0LCA2OTEwLCAKLSAgICA2OTE2LCA2OTIxLCA2OTI2LCA2OTMxLCA2OTM2LCA2OTQxLCAyMjE1LCAyMjIyLCAyMjI4LCA2OTQ2LCA2OTUyLCAyMjU0LCAKLSAgICAyMjYwLCA2OTYwLCA2OTY0LCA2OTY5LCA2OTczLCA2OTc3LCA2OTgxLCA2OTg2LCA2OTkwLCA2OTk1LCA2OTk5LCA3MDAyLCAKLSAgICA3MDA1LCA3MDExLCA3MDE3LCA3MDIzLCA3MDI5LCA3MDM1LCA3MDQxLCA3MDQ3LCA3MDUxLCA3MDU1LCA3MDU5LCA3MDYzLCAKLSAgICA3MDY3LCA3MDcyLCA3MDc5LCA3MDkwLCA3MDk4LCA3MTA4LCA3MTE1LCA3MTIwLCA3MTI0LCA3MTM1LCA3MTQ4LCA3MTU5LCAKLSAgICA3MTcyLCA3MTgzLCA3MTk1LCA3MjA3LCA3MjE5LCA3MjMyLCA3MjQ1LCA3MjUyLCA3MjU4LCA3MjcyLCA3Mjc5LCA3Mjg1LCAKLSAgICA3Mjg5LCA3Mjk0LCA3Mjk4LCA3MzA1LCA3MzEzLCA3MzE3LCA3MzIzLCA3MzI5LCA3MzM5LCA3MzQzLCA3MzQ4LCA3MzUzLCAKLSAgICA3MzYwLCA3MzY2LCA3Mzc2LCA2MzQwLCA3MzgyLCA3Mzg2LCA3MzkzLCA3NDYsIDczOTcsIDc0MDEsIDc0MDYsIDc0MTEsIAotICAgIDc0MTYsIDc0MjAsIDc0MjYsIDc0MzQsIDc0NDAsIDc0NDQsIDc0NTAsIDc0NjAsIDc0NjQsIDc0NzAsIDc0NzUsIDc0NzksIAotICAgIDc0ODUsIDc0OTEsIDIxMTksIDc0OTYsIDc0OTgsIDc1MDYsIDc1MTUsIDc1MTksIDc1MjUsIDc1MzAsIDc1MzUsIDc1NDAsIAotICAgIDc1NDUsIDc1NTEsIDc1NTYsIDM5MjMsIDc1NjEsIDc1NjUsIDc1NzEsIDc1NzYsIDc1ODIsIDc1ODcsIDc1OTIsIDc1OTgsIAotICAgIDc2MDMsIDc1MjAsIDc2MDksIDc2MTMsIDc2MjAsIDc2MjYsIDc2MzEsIDc2MzUsIDQ2NDUsIDc2NDAsIDc2NDksIDY2NDUsIAotICAgIDY2NTIsIDc2NTQsIDI4MDMsIDc2NTgsIDc2NjMsIDc2NjgsIDc1MzEsIDc2NzIsIDc1MzYsIDc1NDEsIDc2NzcsIDc2ODQsIAotICAgIDc2OTEsIDc2OTcsIDc3MDMsIDc3MDksIDc3MTQsIDc3MTksIDc3MjQsIDc1NDYsIDc1NTIsIDc3MzAsIDc3MzYsIDc3NDEsIAotICAgIDc3NDksIDc1NTcsIDc3NTQsIDEwMjgsIDc3NTcsIDc3NjUsIDc3NzEsIDc3NzcsIDc3ODYsIDc3OTQsIDc3OTksIDc4MDUsIAotICAgIDc4MTMsIDc4MjAsIDc4MzUsIDc4NTIsIDc4NzEsIDc4ODAsIDc4ODgsIDc5MDMsIDc5MTQsIDc5MjQsIDc5MzQsIDc5NDIsIAotICAgIDc5NDgsIDc5NjAsIDc5NjksIDc5NzcsIDc5ODQsIDc5OTEsIDc5OTcsIDgwMDIsIDgwMTAsIDgwMjAsIDgwMjcsIDgwMzcsIAotICAgIDgwNDcsIDgwNTcsIDgwNjUsIDgwNzIsIDgwODEsIDgwOTEsIDgxMDUsIDgxMjAsIDgxMjksIDgxMzcsIDgxNDIsIDgxNDYsIAotICAgIDgxNTUsIDgxNjEsIDgxNjYsIDgxNzYsIDgxODYsIDgxOTYsIDgyMDEsIDgyMDUsIDgyMTQsIDgyMTksIDgyMjksIDgyNDAsIAotICAgIDgyNTMsIDgyNjYsIDgyNzgsIDgyODYsIDgyOTEsIDgyOTUsIDgzMDEsIDgzMDYsIDgzMTQsIDgzMjIsIDgzMjksIDgzMzQsIAotICAgIDgzNDIsIDgzNDgsIDgzNTEsIDgzNTUsIDgzNjEsIDgzNjksIDgzNzQsIDgzNzgsIDgzODYsIDgzOTUsIDg0MDMsIDg0MDksIAotICAgIDg0MTMsIDg0MjAsIDg0MzEsIDg0MzUsIDg0MzgsIDg0NDQsIDg0NDksIDg0NTMsIDg0NTksIDg0NjYsIDg0NzIsIDg0NzcsIAotICAgIDg0ODQsIDg0OTEsIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTksIDg1MjQsIDc4NDgsIDg1MjksIDg1MzUsIDg1NDIsIDg1NDksIAotICAgIDg1NTQsIDg1NjEsIDg1NzAsIDg1NzQsIDg1ODYsIDg1OTAsIDg1OTMsIDg1OTcsIDg2MDEsIDg2MDUsIDg2MDksIDg2MTUsIAotICAgIDg2MjAsIDg2MjYsIDg2MzEsIDg2MzYsIDg2NDIsIDg2NDcsIDg2NTIsIDczNTYsIDg2NTcsIDg2NjEsIDg2NjUsIDg2NjksIAotICAgIDg2NzQsIDg2NzksIDg2ODcsIDg2OTMsIDg2OTcsIDg3MDEsIDg3MDgsIDg3MTMsIDg3MjEsIDg3MjYsIDg3MzAsIDg3MzMsIAotICAgIDg3MzksIDg3NDYsIDg3NTAsIDg3NTMsIDg3NTgsIDg3NjIsIDM5NjIsIDg3NjgsIDg3NzcsIDM2LCA4Nzg1LCA4NzkxLCAKLSAgICA4Nzk2LCA3MzcxLCA4ODAxLCA4ODA3LCA4ODEyLCA4ODE2LCA4ODE5LCA4ODM0LCA4ODUzLCA4ODY1LCA4ODc4LCA4ODkxLCAKLSAgICA4OTA0LCA4OTE4LCA4OTMxLCA4OTQ2LCA4OTUzLCA4OTU5LCA4OTYzLCA4OTc3LCA4OTgyLCA4OTg4LCA4OTkzLCA5MDAxLCAKLSAgICA5MDA2LCA2NDcxLCA5MDExLCA5MDE0LCA5MDIxLCA5MDI2LCA5MDMwLCAyODA4LCA5NTUsIDkwMzYsIDkwNDAsIDkwNDYsIAotICAgIDkwNTIsIDkwNTcsIDkwNjMsIDkwNjgsIDc1NjYsIDkwNzQsIDkwODAsIDkwODUsIDkwOTAsIDkwOTgsIDkxMDQsIDkxMTcsIAotICAgIDkxMjUsIDkxMzIsIDc1NzIsIDkxMzgsIDkxNDYsIDkxNTQsIDkxNjEsIDkxNzQsIDkxODYsIDkxOTYsIDkyMDMsIDkyMTAsIAotICAgIDkyMTksIDkyMjgsIDkyMzYsIDkyNDMsIDkyNDgsIDkyNTQsIDc1NzcsIDkyNTksIDkyNjUsIDc1ODMsIDkyNzAsIDkyNzMsIAotICAgIDkyODAsIDkyODYsIDkyOTksIDcwODMsIDkzMTAsIDkzMTYsIDkzMjUsIDkzMzMsIDkzNDAsIDkzNDYsIDkzNTIsIDkzNTcsIAotICAgIDkzNjEsIDkzNjYsIDg4MjYsIDkzNzIsIDc1ODgsIDkzNzksIDkzODQsIDkzOTEsIDkzOTcsIDk0MDMsIDk0MDgsIDk0MTYsIAotICAgIDk0MjQsIDk0MzEsIDk0MzUsIDk0NDksIDk0NTksIDk0NjQsIDk0NjgsIDk0NzksIDk0ODUsIDk0OTAsIDk0OTUsIDc1OTMsIAotICAgIDc1OTksIDk0OTksIDk1MDIsIDk1MDcsIDk1MTksIDk1MjYsIDk1MzEsIDk1MzUsIDk1NDAsIDk1NDQsIDk1NTEsIDk1NTcsIAotICAgIDc2MDQsIDc1MjEsIDk1NjQsIDI4MTMsIDgsIDk1NzEsIDk1NzYsIDk1ODAsIDk1ODYsIDk1OTQsIDk2MDQsIDk2MDksIAotICAgIDk2MTQsIDk2MjEsIDk2MjgsIDk2MzIsIDk2NDMsIDk2NTMsIDk2NjIsIDk2NzQsIDk2NzksIDk2ODMsIDk2OTEsIDk3MDUsIAotICAgIDk3MDksIDk3MTIsIDk3MjAsIDk3MjcsIDk3MzUsIDk3MzksIDk3NTAsIDk3NTQsIDk3NjEsIDk3NjYsIDk3NzAsIDk3NzYsIAotICAgIDk3ODEsIDk3ODUsIDk3OTEsIDk3OTYsIDk4MDcsIDk4MTEsIDk4MTQsIDk4MjAsIDk4MjUsIDk4MzEsIDk4MzcsIDk4NDQsIAotICAgIDk4NTUsIDk4NjUsIDk4NzUsIDk4ODQsIDk4OTEsIDc2MTQsIDc2MjEsIDc2MjcsIDc2MzIsIDk4OTcsIDk5MDMsIDc2MzYsIAotICAgIDk5MDksIDk5MTIsIDk5MTksIDk5MjQsIDk5MzksIDk5NTUsIDk5NzAsIDk5NzgsIDk5ODQsIDEwNDMsIDQwMCwgOTk4OSwgCi0gICAgOTk5NywgMTAwMDQsIDEwMDEwLCAxMDAxNSwgMTAwMjAsIDc2NDEsIDEwMDIyLCAxMDAyNiwgMTAwMzEsIDEwMDM1LCAKLSAgICAxMDA0NSwgMTAwNTAsIDEwMDU0LCAxMDA2MywgMTAwNjcsIDEwMDcwLCAxMDA3NywgMTAwODEsIDEwMDg0LCAxMDA5MiwgCi0gICAgMTAwOTksIDEwMTA3LCAxMDExMSwgMTAxMTgsIDEwMTI3LCAxMDEzMCwgMTAxMzQsIDEwMTM4LCAxMDE0NCwgMTAxNDgsIAotICAgIDEwMTUyLCAxMDE1NiwgMTAxNjIsIDEwMTcyLCAxMDE3NiwgMTAxODQsIDEwMTg4LCAxMDE5NSwgMTAxOTksIDEwMjA0LCAKLSAgICAxMDIwOCwgMTAyMTUsIDEwMjIxLCAxMDIyOSwgMTAyMzUsIDEwMjQ1LCAxMDI1MCwgMTAyNTUsIDEwMjU5LCAxMDI2NywgCi0gICAgMzgyMiwgMTAyNzUsIDEwMjgwLCAxMDI4NCwgMTAyODgsIDEwMjkxLCAxMDI5OSwgMTAzMDYsIDEwMzEwLCA0NDY5LCAKLSAgICAxMDMxNCwgMTAzMTksIDEwMzIzLCAxMDMzNCwgMTAzMzksIDEwMzQ1LCAxMDM0OSwgMTAzNTIsIDEwMzYwLCAxMDM2NSwgCi0gICAgMTAzNzAsIDEwMzc3LCAxMDM4MiwgNzY1MCwgMTAzODcsIDEwMzkxLCAxNjg1LCA0NjE5LCAxMDM5OCwgMTA0MDMsIDEwNDA4LCAKLSAgICAxMDQxMywgMTA0MTksIDEwNDI0LCAxMDQzMCwgMTA0MzUsIDEwNDQwLCAxMDQ0NSwgMTA0NTAsIDEwNDU1LCAxMDQ2MCwgCi0gICAgMTA0NjUsIDEwNDcwLCAxMDQ3NSwgMTA0ODAsIDEwNDg1LCAxMDQ5MCwgMTA0OTUsIDEwNTAwLCAxMDUwNSwgMTA1MTAsIAotICAgIDEwNTE2LCAxMDUyMSwgMTA1MjYsIDEwNTMxLCAxMDUzNiwgMTA1NDEsIDEwNTQ3LCAxMDU1MiwgMTA1NTcsIDEwNTYzLCAKLSAgICAxMDU2OCwgMTA1NzQsIDEwNTc5LCAxMDU4NSwgMTA1OTAsIDEwNTk1LCAxMDYwMCwgMTA2MDUsIDEwNjExLCAxMDYxNiwgCi0gICAgMTA2MjEsIDEwNjI2LCA3MjQsIDEzOSwgMTA2MzQsIDEwNjM4LCAxMDY0MywgMTA2NDgsIDEwNjUyLCAxMDY1NiwgMTA2NjAsIAotICAgIDEwNjY1LCAxMDY2OSwgMTA2NzQsIDEwNjc4LCAxMDY4MSwgMTA2ODUsIDEwNjg5LCAxMDY5NCwgMTA3MDQsIDEwNzEwLCAKLSAgICAxMDcxOCwgMTA3MjIsIDEwNzI2LCAxMDczMywgMTA3NDEsIDEwNzUwLCAxMDc2MSwgMTA3NjgsIDEwNzc1LCAxMDc4NCwgCi0gICAgMTA3OTMsIDEwODAxLCAxMDgxMCwgMTA4MTksIDEwODI4LCAxMDgzNywgMTA4NDcsIDEwODU3LCAxMDg2NywgMTA4NzcsIAotICAgIDEwODg3LCAxMDg5NiwgMTA5MDYsIDEwOTE2LCAxMDkyNiwgMTA5MzYsIDEwOTQ2LCAxMDk1NiwgMTA5NjYsIDEwOTc1LCAKLSAgICAxMDk4NSwgMTA5OTUsIDExMDA1LCAxMTAxNSwgMTEwMjUsIDExMDM1LCAxMTA0NCwgMTEwNTQsIDExMDY0LCAxMTA3NCwgCi0gICAgMTEwODQsIDExMDk0LCAxMTEwNCwgMTExMTQsIDExMTI0LCAxMTEzNCwgMTExNDMsIDExMTUzLCAxMTE2MywgMTExNzMsIAotICAgIDExMTgzLCAxMTE5MywgMTEyMDMsIDExMjEzLCAxMTIyMywgMTEyMzMsIDExMjQzLCAxMTI1MiwgMTEyNTgsIDExMjYyLCAKLSAgICAxMTI2NSwgMTEyNjksIDExMjc0LCAxMTI4MSwgMTEyODcsIDExMjkyLCAxMTI5NiwgMTEzMDEsIDExMzEwLCAxMTMxOCwgCi0gICAgMTEzMjMsIDExMzI3LCAxMTMzMSwgMTEzMzcsIDExMzQyLCAxMTM0OCwgNzY1OSwgMTEzNTMsIDExMzU4LCAxMTM2NywgCi0gICAgNzY2NCwgMTEzNzIsIDExMzc1LCAxMTM4MSwgMTEzODksIDc2NjksIDExMzk2LCAxMTQwMCwgMTE0MDQsIDExNDA4LCAKLSAgICAxMTQxOCwgMTE0MjQsIDExNDI5LCAxMTQzOCwgMTE0NDYsIDExNDUzLCAxMTQ2MCwgMTE0NjUsIDExNDcyLCAxMTQ3NywgCi0gICAgMTE0ODEsIDExNDg0LCAxMTQ5NSwgMTE1MDUsIDExNTE0LCAxMTUyMiwgMTE1MzMsIDExNTQ1LCAxMTU1NSwgMTE1NjAsIAotICAgIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc4LCAxMTU4NCwgMTE1OTIsIDExNTk5LCAxMTYxMCwgMTE2MTUsIDExNjI1LCAKLSAgICAxMTYzNCwgMTE2MzgsIDExNjQxLCAxMTY0OCwgMTE2NTgsIDExNjY3LCAxMTY3NCwgMTE2NzgsIDExNjg1LCAxMTY5MSwgCi0gICAgMTE2OTYsIDExNzAxLCAxMTcwNSwgMTE3MTQsIDExNzE5LCAxMTcyNSwgMTE3MjksIDExNzM0LCAxMTczOCwgMTE3NDcsIAotICAgIDExNzU1LCAxMTc2MywgMTE3NzAsIDExNzc4LCAxMTc5MCwgMTE4MDEsIDExODExLCAxMTgxOCwgMTE4MjQsIDExODMzLCAKLSAgICAxMTg0NCwgMTE4NTMsIDExODY1LCAxMTg3NywgMTE4ODksIDExODk5LCAxMTkwOCwgMTE5MTcsIDExOTI1LCAxMTkzMiwgCi0gICAgMTE5NDEsIDExOTQ5LCAxMTk1NSwgMTE5NjEsIDExOTY2LCA2MTk5LCAxMTk3MCwgMTE5NzIsIDExOTc3LCAxMTk4MywgCi0gICAgMTE5OTIsIDEyMDAwLCAxMjAwNywgMTIwMTYsIDEyMDI1LCAxMjAzNCwgMTIwNDMsIDEyMDUyLCAxMjA2MSwgMTIwNzAsIAotICAgIDEyMDc5LCAxMjA4OSwgMTIwOTksIDEyMTA4LCAxMjExNCwgMTIxMjEsIDEyMTM1LCAxMjE0MiwgMTIxNTAsIDEyMTU5LCAKLSAgICAxMjE2NSwgMTIxNzQsIDEyMTgzLCAxMjE5NCwgMTIyMDQsIDEyMjEyLCAxMjIxOSwgMTIyMjcsIDEyMjM2LCAxMjI0OSwgCi0gICAgMTIyNTcsIDEyMjY0LCAxMjI3NywgMTIyODMsIDEyMjg5LCAxMjI5OSwgMTIzMDgsIDEyMzE3LCAxMjMyMiwgMTIzMjYsIAotICAgIDEyMzMyLCAxMjMzOCwgMTIzNDUsIDczNzAsIDEyMzUwLCAxMjM1NSwgMTIzNjIsIDEyMzY3LCAxMjM3MiwgMTIzNzYsIAotICAgIDEyMzg0LCAxMjM5MCwgMTIzOTUsIDEyNDAzLCAxMjQxMSwgMTI0MTgsIDEyNDI2LCAxMjQzMiwgMTI0NDAsIDEyNDQ4LCAKLSAgICAxMjQ1MywgMTI0NTksIDEyNDY2LCAxMjQ3MiwgMTI0NzcsIDEyNDgxLCAxMjQ5MiwgMTI1MDAsIDEyNTA2LCAxMjUxMSwgCi0gICAgMTI1MjAsIDEyNTI2LCAxMjUzMSwgMTI1NDAsIDEyNTU0LCAzNzgxLCAxMjU1OCwgMTI1NjMsIDEyNTY4LCAxMjU3NCwgCi0gICAgMTI1NzksIDEyNTg0LCAxMjU4OCwgMTI1OTMsIDEyNTk4LCA2MTk4LCAxMjYwMywgMTI2MDgsIDEyNjEzLCAxMjYxOCwgCi0gICAgMTI2MjIsIDEyNjI3LCAxMjYzMiwgMTI2MzcsIDEyNjQzLCAxMjY0OSwgMTI2NTQsIDEyNjU4LCAxMjY2MywgMTI2NjgsIAotICAgIDEyNjczLCA3NjczLCAxMjY3OCwgMTI2ODMsIDEyNjg4LCAxMjY5MywgMTI3MTAsIDEyNzI4LCAxMjc0MCwgMTI3NTMsIAotICAgIDEyNzcwLCAxMjc4NiwgMTI4MDMsIDEyODEzLCAxMjgzMiwgMTI4NDMsIDEyODU0LCAxMjg2NSwgMTI4NzYsIDEyODg4LCAKLSAgICAxMjg5OSwgMTI5MTAsIDEyOTI3LCAxMjkzOCwgMTI5NDksIDEyOTU0LCAyMzM1LCAxMjk1OCwgMTI5NjEsIDEyOTY3LCAKLSAgICAxMjk3NSwgMTI5ODMsIDEyOTg4LCAxMjk5NiwgMTMwMDQsIDEzMDExLCAxMzAxNiwgMTMwMjIsIDEzMDI5LCAxMzAzNywgCi0gICAgMTMwNDQsIDEzMDU2LCAxMzA2NCwgMTMwNjksIDk5MzMsIDEzMDc1LCAxMzA4NCwgMTMwOTMsIDEzMTAxLCAxMzEwOCwgCi0gICAgMTMxMTQsIDEzMTIyLCAxMzEyOSwgMTMxMzUsIDEzMTQyLCAxMzE0OCwgMTMxNTcsIDEzMTY1LCAxMzE3NSwgMTMxODIsIAotICAgIDEzMTg4LCAxMzE5NiwgMTMyMDIsIDEzMjEwLCAxMzIxNywgMTMyMzAsIDEzMjM3LCAxMzI0NiwgMTMyNTUsIDEzMjY0LCAKLSAgICAxMzI3MiwgMTMyODIsIDEzMjg5LCAxMzI5NCwgMzQ5NSwgMTMzMDEsIDEzMzA2LCAxMzMwOSwgMTI2MDQsIDEzMzEzLCAKLSAgICAxMzMxOSwgMTMzMjMsIDEzMzMxLCAxMzM0MywgMTMzNDgsIDEzMzU1LCAxMzM2MSwgMTMzNjYsIDEzMzczLCAxMjYwOSwgCi0gICAgMTMzNzcsIDEzMzgxLCAxMjYxNCwgMTMzODUsIDEzMzg5LCAxMzM5MywgMTM0MDAsIDEzNDA1LCAxMzQwOSwgMTM0MTMsIAotICAgIDEzNDIxLCAxMzQyOCwgMTM0MzUsIDEzNDUyLCAxMzQ2MSwgMTM0NjUsIDEzNDY4LCAxMzQ3NiwgMTM0ODIsIDEzNDg3LCAKLSAgICAzNTczLCAxMzQ5MSwgMTM0OTMsIDEzNTAxLCAxMzUwOCwgMTM1MTgsIDEzNTMwLCAxMzUzNSwgMTM1NDEsIDEzNTQ2LCAKLSAgICAxMzU1MCwgMTM1NTYsIDEzNTYxLCAxMzU2NywgMTM1NzAsIDEzNTc3LCAxMzU4NSwgMTM1OTIsIDEzNTk4LCAxMzYwNCwgCi0gICAgMTM2MDksIDEzNjE2LCAxMzYyMiwgMTM2MjcsIDEzNjM0LCAxMzYzOCwgMTM2NDQsIDEzNjQ4LCAxMzY1NSwgMTM2NjEsIAotICAgIDEzNjY3LCAxMzY3NSwgMTM2ODEsIDEzNjg2LCAxMzY5MiwgMTM3MDAsIDEzNzA4LCAxMzcxNCwgMTM3MjAsIDEzNzI1LCAKLSAgICAxMzczMiwgMTM3MzcsIDEzNzQxLCAxMzc0NywgMTM3NTIsIDEzNzU5LCAxMzc2NCwgMTM3NzAsIDEzNzczLCAxMzc3OSwgCi0gICAgMTM3ODUsIDEzNzg4LCAxMzc5MiwgMTM4MDQsIDEzODEwLCAxMzgxNSwgMTM4MjIsIDEzODI4LCAxMzgzNCwgMTM4NDUsIAotICAgIDEzODU1LCAxMzg2NCwgMTM4NzIsIDEzODc5LCAxMzg5MCwgMTM5MDAsIDEzOTEwLCAxMzkxOCwgMTM5MjEsIDEyNjI4LCAKLSAgICAxMzkyNiwgMTM5MzEsIDEyNjMzLCAxMjc1OCwgMTM5MzksIDEzOTUyLCAxMzk2NywgMTM5NzgsIDEyNzc1LCAxMzk5NiwgCi0gICAgMTQwMDksIDE0MDIyLCAxNDAzMywgODg0MSwgMTQwNDQsIDE0MDU3LCAxNDA3NiwgMTQwODcsIDE0MDk4LCAxNDEwOSwgCi0gICAgMjYwMywgMTQxMjIsIDE0MTI2LCAxNDEzNCwgMTQxNDUsIDE0MTUyLCAxNDE1OCwgMTQxNjYsIDE0MTcwLCAxNDE3NiwgCi0gICAgMTQxNzksIDE0MTg5LCAxNDE5NywgMTQyMDQsIDE0MjEyLCAxNDIyMiwgMTQyMjcsIDE0MjM0LCAxNDIzOSwgMTQyNDYsIAotICAgIDE0MjU3LCAxNDI2NywgMTQyNzMsIDE0Mjc4LCAxNDI4MywgMTQyODcsIDE0MjkxLCAxNDI5NywgMTQzMDMsIDE0MzA4LCAKLSAgICAxNDMxMywgMTQzMTgsIDE0MzIyLCAxMjYzOCwgMTI2NDQsIDE0MzI2LCAxMjY1MCwgMTQzMzEsIDE0MzM5LCAxNDM0OCwgCi0gICAgMTQzNTUsIDc1NDIsIDE0MzU5LCAxNDM2MSwgMTQzNjYsIDE0MzcxLCAxNDM3NywgMTQzODIsIDE0Mzg3LCAxNDM5MiwgCi0gICAgMTQzOTcsIDE0NDAxLCAxNDQwNywgMTQ0MTMsIDE0NDE4LCAxNDQyNCwgMTQ0MjksIDE0NDM0LCAxNDQ0MCwgMTQ0NDUsIAotICAgIDE0NDUwLCAxNDQ1NSwgMTQ0NjEsIDE0NDY2LCAxNDQ3MSwgMTQ0NzcsIDE0NDgzLCAxNDQ4OCwgMTQ0OTMsIDE0NTAwLCAKLSAgICAxNDUwNiwgMTQ1MTcsIDE0NTI0LCAxNDUyOSwgMTQ1MzMsIDE0NTM3LCAxNDU0MCwgMTQ1NDgsIDE0NTUzLCAxNDU2MCwgCi0gICAgMTQ1NjcsIDE0NTcyLCAxNDU3NywgMTQ1ODQsIDE0NTk0LCAxNDU5OSwgMTQ2MDYsIDE0NjEyLCAxNDYyMiwgMTQ2MzIsIAotICAgIDE0NjQ2LCAxNDY2MCwgMTQ2NzQsIDE0Njg4LCAxNDcwMywgMTQ3MTgsIDE0NzM1LCAxNDc1MywgMTQ3NjYsIDE0NzcyLCAKLSAgICAxNDc3NywgMTQ3ODIsIDE0Nzg2LCAxNDc5MSwgMTQ3OTksIDE0ODA1LCAxNDgxMCwgMTQ4MTUsIDE0ODE5LCAxNDgyNCwgCi0gICAgMTQ4MjgsIDE0ODMzLCAxNDgzNywgMTQ4NDgsIDE0ODU0LCAxNDg1OSwgMTQ4NjQsIDE0ODcxLCAxNDg3NiwgMTQ4ODAsIAotICAgIDE0ODg1LCAxNDg5MCwgMTQ4OTYsIDE0OTAzLCAxNDkwOSwgMTQ5MTQsIDE0OTE4LCAxNDkyNCwgMTQ5MjksIDE0OTM0LCAKLSAgICAxNDkzOCwgMTQ5NDQsIDE0OTQ5LCAxNDk1NCwgMTQ5NjEsIDE0OTY2LCAxMTQyMCwgMTQ5NzAsIDE0OTc1LCAxNDk3OSwgCi0gICAgMTQ5ODQsIDE0OTkwLCAxNDk5NiwgMTUwMDMsIDE1MDEzLCAxNTAyMSwgMTUwMjgsIDE1MDMzLCAxNTAzNywgMTUwNDYsIAotICAgIDE1MDU0LCAxNTA2MSwgMTUwNjgsIDE1MDc0LCAxNTA4MCwgMTUwODUsIDE1MDkwLCAxNTA5NiwgMTUxMDEsIDE1MTA3LCAKLSAgICAxNTExMiwgMTUxMTgsIDE1MTI0LCAxNTEzMSwgMTUxMzcsIDE1MTQyLCAxNTE0NywgNzcxNSwgMTUxNTYsIDE1MTU5LCAKLSAgICAxNTE2NSwgMTUxNzAsIDE1MTc1LCAxNTE4NSwgMTUxOTIsIDE1MTk4LCAxNTIwMywgMTUyMDksIDE1MjE0LCAxNTIyMCwgCi0gICAgMTUyMjUsIDE1MjMxLCAxNTIzNywgMTUyNDIsIDE1MjUwLCAxNTI1NywgMTUyNjIsIDE1MjY3LCAxNTI3MywgMTUyNzgsIAotICAgIDE1MjgyLCAxNTI5MSwgMTUzMDIsIDE1MzA5LCAxNTMxNywgMTUzMjMsIDE1MzMwLCAxNTMzNiwgMTUzNDEsIDE1MzQ1LCAKLSAgICAxNTM1MSwgMTUzNTYsIDE1MzYxLCAxNTM2NiwgNzcyMCwgNjIyMywgMjgyNywgMTUzNzAsIDE1Mzc0LCAxNTM3OCwgMTUzODIsIAotICAgIDE1Mzg2LCAxNTM4OSwgMTUzOTYsIDE1NDA0LCAxMjY2NCwgMTU0MTEsIDE1NDIxLCAxNTQyOSwgMTU0MzYsIDE1NDQ0LCAKLSAgICAxNTQ1NCwgMTU0NjMsIDE1NDc2LCAxNTQ4MSwgMTU0ODYsIDE1NDk0LCAxNTUwMSwgMTE1MTAsIDExNTE5LCAxNTUwOCwgCi0gICAgMTU1MTgsIDE1NTMzLCAxNTUzOSwgMTU1NDYsIDE1NTUzLCAxNTU1OSwgMTU1NjksIDE1NTc5LCAxMjY2OSwgMTU1ODgsIAotICAgIDE1NTk0LCAxNTYwMCwgMTU2MDgsIDE1NjE2LCAxNTYyMSwgMTU2MzAsIDE1NjM4LCAxNTY1MCwgMTU2NjAsIDE1NjcwLCAKLSAgICAxNTY4MCwgMTU2ODksIDE1NzAxLCAxNTcxMSwgMTU3MjEsIDE1NzMyLCAxNTczNywgMTU3NDksIDE1NzYxLCAxNTc3MywgCi0gICAgMTU3ODUsIDE1Nzk3LCAxNTgwOSwgMTU4MjEsIDE1ODMzLCAxNTg0NSwgMTU4NTcsIDE1ODY4LCAxNTg4MCwgMTU4OTIsIAotICAgIDE1OTA0LCAxNTkxNiwgMTU5MjgsIDE1OTQwLCAxNTk1MiwgMTU5NjQsIDE1OTc2LCAxNTk4OCwgMTU5OTksIDE2MDExLCAKLSAgICAxNjAyMywgMTYwMzUsIDE2MDQ3LCAxNjA1OSwgMTYwNzEsIDE2MDgzLCAxNjA5NSwgMTYxMDcsIDE2MTE5LCAxNjEzMCwgCi0gICAgMTYxNDIsIDE2MTU0LCAxNjE2NiwgMTYxNzgsIDE2MTkwLCAxNjIwMiwgMTYyMTQsIDE2MjI2LCAxNjIzOCwgMTYyNTAsIAotICAgIDE2MjYxLCAxNjI3MywgMTYyODUsIDE2Mjk3LCAxNjMwOSwgMTYzMjEsIDE2MzMzLCAxNjM0NSwgMTYzNTcsIDE2MzY5LCAKLSAgICAxNjM4MSwgMTYzOTIsIDE2NDA0LCAxNjQxNiwgMTY0MjgsIDE2NDQwLCAxNjQ1MiwgMTY0NjQsIDE2NDc2LCAxNjQ4OCwgCi0gICAgMTY1MDAsIDE2NTEyLCAxNjUyMywgMTY1MzUsIDE2NTQ3LCAxNjU1OSwgMTY1NzEsIDE2NTgzLCAxNjU5NSwgMTY2MDcsIAotICAgIDE2NjE5LCAxNjYzMSwgMTY2NDMsIDE2NjU0LCAxNjY2NiwgMTY2NzgsIDE2NjkwLCAxNjcwMiwgMTY3MTUsIDE2NzI4LCAKLSAgICAxNjc0MSwgMTY3NTQsIDE2NzY3LCAxNjc4MCwgMTY3OTMsIDE2ODA1LCAxNjgxOCwgMTY4MzEsIDE2ODQ0LCAxNjg1NywgCi0gICAgMTY4NzAsIDE2ODgzLCAxNjg5NiwgMTY5MDksIDE2OTIyLCAxNjkzNSwgMTY5NDcsIDE2OTYwLCAxNjk3MywgMTY5ODYsIAotICAgIDE2OTk5LCAxNzAxMiwgMTcwMjUsIDE3MDM4LCAxNzA1MSwgMTcwNjQsIDE3MDc3LCAxNzA4OSwgMTcxMDIsIDE3MTE1LCAKLSAgICAxNzEyOCwgMTcxNDEsIDE3MTU0LCAxNzE2NywgMTcxODAsIDE3MTkzLCAxNzIwNiwgMTcyMTksIDE3MjMxLCAxNzI0NCwgCi0gICAgMTcyNTcsIDE3MjcwLCAxNzI4MywgMTcyOTYsIDE3MzA5LCAxNzMyMiwgMTczMzUsIDE3MzQ4LCAxNzM2MSwgMTczNzMsIAotICAgIDE3Mzg2LCAxNzM5OSwgMTc0MTIsIDE3NDI1LCAxNzQzOCwgMTc0NTEsIDE3NDY0LCAxNzQ3NywgMTc0OTAsIDE3NTAzLCAKLSAgICAxNzUxNSwgMTc1MjYsIDE3NTM5LCAxNzU1MiwgMTc1NjUsIDE3NTc4LCAxNzU5MSwgMTc2MDQsIDE3NjE3LCAxNzYzMCwgCi0gICAgMTc2NDMsIDE3NjU2LCAxNzY2OCwgMTc2ODEsIDE3Njk0LCAxNzcwNywgMTc3MjAsIDE3NzMzLCAxNzc0NiwgMTc3NTksIAotICAgIDE3NzcyLCAxNzc4NSwgMTc3OTgsIDE3ODEwLCAxNzgyMywgMTc4MzYsIDE3ODQ5LCAxNzg2MiwgMTc4NzUsIDE3ODg4LCAKLSAgICAxNzkwMSwgMTc5MTQsIDE3OTI3LCAxNzk0MCwgMTc5NTIsIDE3OTY1LCAxNzk3OCwgMTc5OTEsIDE4MDA0LCAxODAxNywgCi0gICAgMTgwMzAsIDE4MDQzLCAxODA1NiwgMTgwNjksIDE4MDgyLCAxODA5NCwgMTgxMDcsIDE4MTIwLCAxODEzMywgMTgxNDYsIAotICAgIDE4MTU5LCAxODE3MiwgMTgxODUsIDE4MTk4LCAxODIxMSwgMTgyMjQsIDE4MjM2LCAxODI0OSwgMTgyNjIsIDE4Mjc1LCAKLSAgICAxODI4OCwgMTgzMDEsIDE4MzE0LCAxODMyNywgMTgzNDAsIDE4MzUzLCAxODM2NiwgMTgzNzgsIDE4MzkxLCAxODQwNCwgCi0gICAgMTg0MTcsIDE4NDMwLCAxODQ0MywgMTg0NTYsIDE4NDY5LCAxODQ4MiwgMTg0OTUsIDE4NTA4LCAxODUyMCwgMTg1MzMsIAotICAgIDE4NTQ2LCAxODU1OSwgMTg1NzIsIDE4NTg1LCAxODU5OCwgMTg2MTEsIDE4NjI0LCAxODYzNywgMTg2NTAsIDE4NjYyLCAKLSAgICAxODY3NSwgMTg2ODgsIDE4NzAxLCAxODcxNCwgMTg3MjcsIDE4NzQwLCAxODc1MywgMTg3NjYsIDE4Nzc5LCAxODc5MiwgCi0gICAgMTg4MDQsIDE4ODE3LCAxODgzMCwgMTg4NDMsIDE4ODU2LCAxODg2OSwgMTg4ODIsIDE4ODk1LCAxODkwOCwgMTg5MjEsIAotICAgIDE4OTM0LCAxODk0NiwgMTg5NTcsIDE4OTY1LCAxODk3MiwgMTg5NzgsIDE4OTgyLCAxODk4OCwgMTg5OTQsIDE5MDAyLCAKLSAgICAxOTAwOCwgMTkwMTMsIDE5MDE3LCAxOTAyNiwgNzU0NywgMTkwMzcsIDE5MDQ0LCAxOTA1MiwgMTkwNTksIDE5MDY2LCAKLSAgICA5MjkzLCAxOTA3MywgMTkwODIsIDE5MDg3LCAxOTA5MiwgNjIzOSwgMTkwOTksIDE5MTA0LCAxOTEwNywgMTkxMTIsIAotICAgIDE5MTIwLCAxOTEyNywgMTkxMzQsIDE5MTQxLCAxOTE0NywgMTkxNTYsIDE5MTY1LCAxOTE3MSwgMTkxODAsIDE5MTg2LCAKLSAgICAxOTE5MSwgMTkyMDEsIDE5MjA4LCAxOTIxNCwgMTkyMjIsIDE5MjI4LCAxOTIzNSwgMTkyNDUsIDE5MjU0LCAxOTI1OCwgCi0gICAgMTkyNjUsIDE5MjY5LCAxOTI3NCwgMTkyODAsIDE5Mjg4LCAxOTI5MiwgMTkzMDIsIDEyNjc5LCAxOTMxMSwgMTkzMTcsIAotICAgIDE5MzIxLCAxOTMzMCwgMTkzMzYsIDE5MzQzLCAxOTM1NCwgMTkzNjIsIDE5MzcxLCA3MzM1LCAxOTM3OSwgMTkzODQsIAotICAgIDE5MzkwLCAxOTM5NSwgMTkzOTksIDE5NDAzLCAxOTQwNywgODAwNiwgMTk0MTIsIDE5NDIwLCAxOTQyNywgMTk0MzYsIAotICAgIDE5NDQzLCAxOTQ1MCwgOTIyMywgMTk0NTcsIDE5NDYzLCAxOTQ2NywgMTk0NzMsIDE5NDc5LCAxOTQ4NywgMTk0OTMsIAotICAgIDE5NTAwLCAxOTUwNiwgMTk1MTIsIDE5NTIxLCAxOTUyNSwgMTk1MzMsIDE5NTQyLCAxOTU0OSwgMTk1NTQsIDE5NTU4LCAKLSAgICAxOTU2OSwgMTk1NzQsIDE5NTc5LCAxOTU4NCwgMTk1OTcsIDY0MjYsIDE5NjAxLCAxOTYwNywgMTk2MTUsIDE5NjE5LCAKLSAgICAxOTYyNiwgMTk2MzUsIDE5NjQwLCAxOTY0OCwgMTk2NjAsIDE5NjY1LCAxOTY2OSwgMTk2NzIsIDE5Njc4LCAxOTY4NCwgCi0gICAgMTk2ODksIDE5NjkzLCAxOTY5NiwgMTk3MDcsIDE5NzEyLCA3NzUwLCAxOTcxOSwgNzU1OCwgNzc1NSwgMTk3MjQsIDE5NzI5LCAKLSAgICAxOTczNCwgMTk3MzksIDE5NzQ0LCAxOTc0OSwgMTk3NTQsIDE5NzU5LCAxOTc2NCwgMTk3NjksIDE5Nzc0LCAxOTc3OSwgCi0gICAgMTk3ODUsIDE5NzkwLCAxOTc5NSwgMTk4MDAsIDE5ODA1LCAxOTgxMCwgMTk4MTUsIDE5ODIwLCAxOTgyNSwgMTk4MzAsIAotICAgIDE5ODM2LCAxOTg0MiwgMTk4NDcsIDE5ODUyLCAxOTg1NywgMTk4NjIsIDE5ODY3LCAxOTg3MiwgMTk4NzcsIDE5ODgyLCAKLSAgICAxOTg4NywgMTk4OTMsIDE5ODk4LCAxOTkwMywgMTk5MDgsIDE5OTE0LCAxOTkyMCwgMTk5MjUsIDE5OTMwLCAxOTkzNSwgCi0gICAgMTk5NDAsIDE5OTQ1LCAxOTk1MCwgMTk5NTUsIDE5OTYwLCAxOTk2NiwgMTk5NzEsIDE5OTc2LCAxOTk4MSwgMTk5ODYsIAotICAgIDE5OTkyLCAxOTk5NywgMjAwMDIsIDIwMDA2LCAxMjksIDIwMDE0LCAyMDAxOCwgMjAwMjIsIDIwMDI2LCAyMDAzMSwgCi0gICAgMjAwMzUsIDIwMDM5LCAxMDc4MSwgMjAwNDMsIDIwMDQ4LCAyMDA1MiwgMjAwNTcsIDIwMDYxLCAyMDA2NiwgMjAwNzAsIAotICAgIDIwMDc2LCAyMDA4MSwgMjAwODUsIDIwMDg5LCAyMDA5NywgMjAxMDEsIDIwMTA2LCAyMDExMSwgMjAxMTUsIDIwMTIxLCAKLSAgICAyMDEyNiwgMjAxMzAsIDIwMTM1LCAyMDE0MCwgMjAxNDQsIDIwMTUxLCAyMDE1OCwgMjAxNjUsIDIwMTY5LCAyMDE3MywgCi0gICAgMjAxNzgsIDIwMTgyLCAyMDE4NSwgMjAxOTEsIDIwMjA0LCAyMDIwOSwgMjAyMTgsIDIwMjIzLCA3Nzk1LCAyMDIyOCwgCi0gICAgMjAyMzEsIDI2NjYsIDI2NzEsIDIwMjM1LCAyMDI0MSwgMjAyNDcsIDIwMjUyLCAyMDI1NywgMjAyNjIsIDIwMjY4LCAKLSAgICAyMDI3MywgMTIxOTAsIDIwMjc4LCAyMDI4MywgMjAyODgsIDIwMjk0LCAyMDI5OSwgMjAzMDQsIDIwMzEwLCAyMDMxNSwgCi0gICAgMjAzMTksIDIwMzI0LCAyMDMyOSwgMjAzMzQsIDIwMzM4LCAyMDM0MywgMjAzNDgsIDIwMzUzLCAyMDM1OCwgMjAzNjIsIAotICAgIDIwMzY2LCAyMDM3MSwgMjgzNiwgMjAzMjAsIDIwMzc1LCAyMDM4MywgMjAzOTAsIDgxMDAsIDIwNDAyLCAyMDQxMCwgCi0gICAgMjAzMjUsIDIwNDE3LCAyMDQyMiwgMjA0MzAsIDIwMzMwLCAyMDQzNSwgMjA0NDAsIDIwNDQ4LCAyMDQ1MywgMjA0NTgsIAotICAgIDIwNDYyLCAyMDQ2NywgMjA0NzEsIDIwNDc3LCAyMDQ4MCwgMjA0ODcsIDIwNDkxLCAyMDQ5NSwgMjA1MDEsIDIwNTA4LCAKLSAgICAyMDUxMywgNzM2MiwgMTY5MCwgMTY5NSwgMjA1MTcsIDIwNTIzLCAyMDUyOSwgMjA1MzQsIDIwNTM4LCAyMDU0MiwgMjA1NDYsIAotICAgIDIwNTQ5LCAyMDU1NSwgMjA1NjIsIDIwNTcwLCAyMDU3NiwgMjA1ODIsIDIwNTg3LCAyMDU5MiwgMjA1OTYsIDEzMDM5LCAKLSAgICAxMzg5NiwgMjA2MDEsIDIwNjEzLCAyMDYxNiwgMjA2MjMsIDIwNjMwLCAyMDYzNCwgMjA2NDIsIDIwNjUzLCAyMDY2MiwgCi0gICAgMjA2NzUsIDIwNjg1LCAyMDY5OSwgMjA3MTEsIDIwNzI1LCAyMDczNywgMjA3NDcsIDIwNzU5LCAyMDc2NSwgMjA3ODAsIAotICAgIDIwODA0LCAyMDgyMiwgMjA4NDEsIDIwODU0LCAyMDg2OCwgMjA4ODYsIDIwOTAyLCAyMDkxOSwgMjA5MzcsIDIwOTQ4LCAKLSAgICAyMDk2NywgMjA5ODQsIDIxMDA0LCAyMTAyMiwgMjEwMzQsIDIxMDQ4LCAyMTA2MiwgMjEwNzQsIDIxMDkxLCAyMTExMCwgCi0gICAgMjExMjgsIDIxMTQwLCAyMTE1OCwgMjExNzcsIDEyODE4LCAyMTE5MCwgMjEyMTAsIDIxMjIyLCA4ODcyLCAyMTIzNCwgCi0gICAgMjEyMzksIDIxMjQ0LCAyMTI0OSwgMjEyNTUsIDIxMjYwLCAyMTI2NCwgMjEyNzEsIDIzNTIsIDIxMjc1LCAyMTI4MSwgCi0gICAgMjEyODUsIDIxMjg4LCAyMTI5MiwgMjEzMDAsIDIxMzA2LCAyMDMzOSwgMjEzMTAsIDIxMzE5LCAyMTMzMCwgMjEzMzYsIAotICAgIDIxMzQyLCAyMTM1MSwgMjEzNTksIDIxMzY2LCAyMTM3MSwgMjEzNzgsIDIxMzg0LCAyMTM5MywgMjE0MDEsIDIxNDA4LCAKLSAgICAyMTQxOCwgMjE0MjcsIDIxNDM3LCAyMTQ0MiwgMjE0NTEsIDIxNDYwLCAyMTQ3MSwgMjE0ODIsIDM4ODAsIDIxNDkyLCAKLSAgICAyMTQ5NiwgMjE1MDYsIDIxNTE0LCAyMTUyNCwgMjE1MzUsIDIxNTQwLCAyMTU0OCwgMjE1NTUsIDIxNTYxLCAyMTU2NiwgCi0gICAgMjAzNDksIDIxNTcwLCAyMTU3OSwgMjE1ODMsIDIxNTg2LCAyMTU5MSwgMjE1OTgsIDIxNjA3LCAyMTYxNSwgMjE2MjMsIAotICAgIDIxNjMzLCAyMTY0MiwgMjE2NDgsIDIxNjU0LCAyMDM1NCwgMjAzNTksIDIxNjU4LCAyMTY2OCwgMjE2NzgsIDIxNjg4LCAKLSAgICAyMTY5NiwgMjE3MDMsIDIxNzEzLCAyMTcyMSwgMjE3MjksIDIxNzM1LCA5NjIsIDIxNzQ0LCAxMzAwMCwgNTM3LCAyMTc1OCwgCi0gICAgMjE3NjcsIDIxNzc1LCAyMTc4NiwgMjE3OTcsIDIxODA3LCAyMTgxNiwgMjE4MjgsIDIxODM3LCAyMTg0NiwgMjE4NTIsIAotICAgIDIxODYxLCAyMTg3MCwgMjE4ODAsIDIxODg4LCAyMTg5NiwgNzcyNywgMjE5MDIsIDIxOTA1LCAyMTkwOSwgMjE5MTQsIAotICAgIDIxOTE5LCA4MjE1LCAyMDM2NywgMjE5MjcsIDIxOTMzLCAyMTkzOSwgMjE5NDQsIDIxOTQ5LCAyMTk1MywgMjE5NjEsIAotICAgIDIxOTY3LCAyMTk3MywgMjE5NzcsIDM0NjcsIDIxOTg1LCAyMTk5MCwgMjE5OTUsIDIxOTk5LCAyMjAwMywgODI4NywgCi0gICAgMjIwMTAsIDIyMDE4LCAyMjAyNSwgMjIwMzEsIDgyOTYsIDgzMDIsIDIyMDM5LCAyMjA0NywgMjIwNTQsIDIyMDU5LCAKLSAgICAyMjA2NCwgMjIwNzAsIDIyMDc0LCAyMjA4NSwgMjIwOTAsIDI1NTUsIDIyMDk1LCAyMjEwNiwgMjIxMTIsIDIyMTE3LCAKLSAgICAyMjEyMSwgMjIxMjUsIDIyMTI4LCAyMjEzNSwgMjIxNDIsIDIyMTQ5LCAyMjE1NSwgMjIxNTksIDIyMTY0LCAyMjE2OCwgCi0gICAgMjIxNzIsIDk3OSwgMjIxNzYsIDIyMTgxLCAyMjE4NiwgMjIxOTEsIDIyMTk2LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAKLSAgICAyMjIxNiwgMjIyMjEsIDIyMjI2LCAyMjIzMSwgMjIyMzYsIDIyMjQxLCAyMjI0NywgMjIyNTIsIDIyMjU3LCAyMjI2MiwgCi0gICAgMjIyNjcsIDIyMjcyLCAyMjI3NywgMjIyODMsIDIyMjg4LCAyMjI5MywgMjIyOTgsIDIyMzAzLCAyMjMwOCwgMjIzMTMsIAotICAgIDIyMzE4LCAyMjMyNCwgMjIzMzAsIDIyMzM1LCAyMjM0MSwgMjIzNDYsIDIyMzUxLCA1LCAyMjM1NywgMjIzNjEsIDIyMzY1LCAKLSAgICAyMjM2OSwgMjIzNzQsIDIyMzc4LCAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NSwgMjIzOTksIDIyNDA0LCAyMjQwOCwgCi0gICAgMjI0MTEsIDIyNDE1LCAyMjQyMCwgMjI0MjQsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NiwgMjI0NTAsIAotICAgIDIyNDU0LCAyMjQ2NCwgMjI0NjksIDIyNDczLCAyMjQ3NywgMjI0ODIsIDIyNDg3LCAyMjQ5NiwgMjI1MDEsIDIyNTA2LCAKLSAgICAyMjUxMCwgMjI1MTQsIDIyNTI3LCAyMjUzOSwgMjI1NDgsIDIyNTU3LCAyMjU2MywgMjI1NjgsIDIyNTcyLCAyMjU3NiwgCi0gICAgMjI1ODYsIDIyNTk1LCAyMjYwMywgMjI2MDksIDIyNjE0LCAyMjYxOCwgMjI2MjUsIDIyNjM1LCAyMjY0NCwgMjI2NTIsIAotICAgIDIyNjYwLCAyMjY2NywgMjI2NzUsIDIyNjg0LCAyMjY5MywgMjI3MDEsIDIyNzA2LCAyMjcxMCwgMjI3MTQsIDIyNzE3LCAKLSAgICAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMiwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDgsIDIyNzUyLCAyMjc1NSwgCi0gICAgMjI3NTksIDIyNzYyLCAyMjc2NSwgMjI3NjksIDIyNzc1LCAyMjc3OSwgMjI3ODMsIDIyNzg3LCAyMjc5MiwgMjI3OTcsIAotICAgIDIyODAyLCAyMjgwNiwgMjI4MDksIDIyODE0LCAyMjgyMCwgMjI4MjUsIDIyODMxLCAyMjgzNiwgMjI4NDAsIDIyODQ0LCAKLSAgICAyMjg0OCwgMjI4NTMsIDIyODU3LCAyMjg2MiwgMjI4NjYsIDIyODczLCAyMjg3NywgMjI4ODAsIDIyODg0LCAyMjg5MCwgCi0gICAgMjI4OTYsIDIyOTAwLCAyMjkwNCwgMjI5MDksIDIyOTE2LCAyMjkyMiwgMjI5MjYsIDIyOTM1LCAyMjkzOSwgMjI5NDMsIAotICAgIDIyOTQ2LCAyMjk1MiwgMjI5NTcsIDIyOTYzLCAxNDUyLCAxNzU0LCAyMjk2OCwgMjI5NzMsIDIyOTc4LCAyMjk4MywgCi0gICAgMjI5ODgsIDIyOTkzLCAyMjk5OCwgMjEwNiwgMjE0OCwgMjMwMDMsIDIzMDA2LCAyMzAxMCwgMjMwMTQsIDIzMDE5LCAKLSAgICAyMzAyMywgMjMwMjcsIDIzMDMwLCAyMzAzNSwgMjMwNDAsIDIzMDQ0LCAyMzA0NywgMjMwNTIsIDIzMDU2LCAyMzA2MSwgCi0gICAgMjMwNjUsIDEzMDEyLCAyMzA3MCwgMjMwNzMsIDIzMDc2LCAyMzA4MCwgMjMwODUsIDIzMDk4LCAyMzEwMiwgMjMxMDUsIAotICAgIDIzMTEzLCAyMzEyMiwgMjMxMjksIDIzMTM0LCAyMzE0MCwgMjMxNDYsIDIzMTUzLCAyMzE2MCwgMjMxNjQsIDIzMTY4LCAKLSAgICAyMzE3MiwgMjMxNzcsIDIzMTgyLCAyMzE4NiwgMjMxOTQsIDIzMTk5LCAyMzIxMSwgMjMyMjIsIDIzMjI3LCAyMzIzMSwgCi0gICAgMjMyMzUsIDIzMjQxLCAyMzI0NiwgMjMyNTEsIDIzMjU1LCAyMzI1OCwgMjMyNjQsIDYzNDYsIDIyNzAsIDIzMjY4LCAKLSAgICAyMzI3MywgMjMyODksIDc4NDIsIDIzMzA5LCAyMzMxOCwgMjMzMzQsIDIzMzM4LCAyMzM0MSwgMjMzNDcsIDIzMzU3LCAKLSAgICAyMzM2MywgMjMzNzgsIDIzMzkwLCAyMzQwMSwgMjM0MDksIDIzNDE4LCAyMzQyNCwgMjM0MzMsIDIzNDQzLCAyMzQ1NCwgCi0gICAgMjM0NjUsIDIzNDc0LCAyMzQ4MywgMjM0OTEsIDIzNDk4LCAyMzUwNiwgMjM1MTksIDIzNTI2LCAyMzUzMiwgMjM1MzcsIAotICAgIDIzNTQ2LCAyMzU1MiwgMjM1NTcsIDIzNTY1LCAyMTUxNiwgMjM1NzcsIDIzNTg5LCAyMzYwMywgMjM2MTEsIDIzNjE4LCAKLSAgICAyMzYzMCwgMjM2MzksIDIzNjQ4LCAyMzY1NiwgMjM2NjQsIDIzNjcyLCAyMzY3OSwgMjM2ODgsIDIzNjk2LCAyMzcwNiwgCi0gICAgMjM3MTUsIDIzNzI1LCAyMzczNCwgMjM3NDMsIDIzNzUxLCAyMzc1NiwgMjM3NjAsIDIzNzYzLCAyMzc2NywgMjM3NzEsIAotICAgIDIzNzc1LCAyMzc3OSwgMjM3ODMsIDIzNzg5LCAyMzc5NSwgMjM4MDMsIDEzMDU3LCAyMzgxMCwgMjM4MTUsIDIzODIyLCAKLSAgICAyMzgyOCwgMjM4MzUsIDEzMDY1LCAyMzg0MiwgMjM4NDUsIDIzODU3LCAyMzg2NSwgMjM4NzEsIDIzODc2LCAyMzg4MCwgCi0gICAgODI0NSwgMjM4OTEsIDIzOTAxLCAyMzkxMCwgMjM5MTcsIDIzOTIxLCAxMzA3MCwgMjM5MjQsIDIzOTMxLCAyMzkzNSwgCi0gICAgMjM5NDEsIDIzOTQ0LCAyMzk1MSwgMjM5NTcsIDIzOTYxLCAyMzk2NiwgMjM5NzAsIDIzOTc5LCAyMzk4NiwgMjM5OTIsIAotICAgIDYzODcsIDIzOTk5LCAyNDAwNywgMjQwMTQsIDI0MDIwLCAyNDAyNSwgMjQwMzEsIDI0MDM3LCAyNDA0NSwgMjQwNDksIAotICAgIDI0MDUyLCAyNDA1NCwgMjM3NjgsIDI0MDYzLCAyNDA2OSwgMjQwNzksIDI0MDg0LCAyNDA5MSwgMjQwOTcsIDI0MTAyLCAKLSAgICAyNDEwNywgMjQxMTIsIDI0MTE3LCAyNDEyNCwgMjQxMzMsIDI0MTQwLCAyNDE0OSwgMjQxNTUsIDI0MTYwLCAyNDE2NiwgCi0gICAgMjQxNzEsIDI0MTc4LCAyNDE4OSwgMjQxOTQsIDI0MTk4LCAyNDIwOCwgMjQyMTQsIDI0MjE4LCAyNDIyMywgMjQyMzMsIAotICAgIDI0MjQyLCAyNDI0NiwgMjQyNTMsIDI0MjYxLCAyNDI2OCwgMjQyNzQsIDI0Mjc5LCAyNDI4NywgMjQyOTQsIDI0MzA2LCAKLSAgICAyNDMxNSwgMjQzMTksIDExMzYyLCAyNDMyNywgMjQzMzcsIDI0MzQxLCAyMzEwOSwgMjQzNTIsIDI0MzU3LCAyNDM2MSwgCi0gICAgMjQzNjgsIDI0Mzc1LCAyMDExNywgMjM2OTMsIDI0MzgwLCAyNDM4NCwgMjQzODcsIDIwOTU0LCAyNDM5MiwgMjQ0MDYsIAotICAgIDI0NDIyLCAyNDQ0MCwgMjQ0NTksIDI0NDc2LCAyNDQ5NCwgMjA5NzMsIDI0NTExLCAyNDUzMSwgMjA5OTAsIDI0NTQzLCAKLSAgICAyNDU1NSwgMTM5ODMsIDI0NTY3LCAyMTAxMCwgMjQ1ODEsIDI0NTkzLCA4ODg1LCAyNDYwNywgMjQ2MTIsIDI0NjE3LCAKLSAgICAyNDYyMiwgMjQ2MjgsIDI0NjM0LCAyNDY0MCwgMjQ2NDQsIDI0NjUxLCAyNDY1NiwgMjQ2NjYsIDI0NjcyLCA4NTMyLCAKLSAgICAyNDY3OCwgMjQ2ODAsIDI0Njg1LCAyNDY5MywgMjQ2OTcsIDI0MTIwLCAyNDcwMywgMjQ3MTAsIDk4NjksIDk4NzksIAotICAgIDI0NzE3LCAyNDcyNywgMjQ3MzIsIDI0NzM2LCAyNDczOSwgMjQ3NDUsIDI0NzUzLCAyNDc2NSwgMjQ3NzUsIDI0NzkxLCAKLSAgICAyNDgwNCwgMjQ4MTgsIDE0MDAxLCAyNDgzMiwgMjQ4MzksIDI0ODQzLCAyNDg0NiwgMjQ4NTEsIDI0ODU1LCAyNDg2MiwgCi0gICAgMjQ4NjksIDI0ODc5LCAyNDg4NCwgMjQ4ODksIDI0ODk0LCAyNDkwMiwgMjQ5MTAsIDI0OTE5LCAyNDkyNCwgNzkzOSwgCi0gICAgMjQ5MjgsIDI0OTMxLCAyNDkzNCwgMjQ5MzksIDI0OTQ2LCAyNDk1MSwgMjQ5NjcsIDI0OTc1LCAyNDk4MywgNzc5MCwgCi0gICAgMjQ5OTEsIDI0OTk2LCAyNTAwMCwgMjUwMDYsIDI1MDEyLCAyNTAxNSwgMjUwMjEsIDI1MDMzLCAyNTA0MSwgMjUwNDgsIAotICAgIDI1MDU0LCAyNTA2MSwgMjUwNzIsIDI1MDg2LCAyNTA5OSwgMjUxMDgsIDI1MTIwLCAyNTEzMSwgMjUxNDEsIDI1MTUwLCAKLSAgICAyNTE1OSwgMjUxNjcsIDI1MTc4LCA2MzY5LCAyNTE4NSwgMjUxOTEsIDI1MTk2LCAyNTIwMiwgMjUyMDksIDI1MjE5LCAKLSAgICAyNTIyOSwgMjUyMzgsIDI1MjQ0LCAyNTI1MSwgMjUyNTYsIDI1MjYzLCAyNTI3MSwgMjUyNzksIDI1MjkxLCA0NzA0LCAKLSAgICAyNTI5OCwgMjUzMDcsIDI1MzE1LCAyNTMyMSwgMjUzMjcsIDI1MzMyLCAyNTMzNiwgMjUzMzksIDI1MzQ1LCAyNTM1MiwgCi0gICAgMjUzNTcsIDI1MzYyLCAyNTM2NiwgMjUzNzgsIDI1Mzg5LCAyNTM5OCwgMjU0MDYsIDEzMTk3LCAyNTQxMSwgMjU0MTcsIAotICAgIDI1NDIzLCA5ODYyLCA3MDQ5LCAyNTQyOCwgMjU0MzEsIDI1NDM0LCAyNTQ0MCwgMjU0NDgsIDI1NDU2LCAyNTQ2MCwgCi0gICAgMjU0NjQsIDI1NDY5LCAyNTQ3MiwgMjU0ODEsIDI1NDg5LCAyNTUwMCwgMjU1MDQsIDI1NTEwLCAyNTUxNiwgMjU1MjAsIAotICAgIDI1NTI2LCAyNTUzNCwgMjU1NTYsIDI1NTgwLCAyNTU4NywgMjU1OTQsIDI1NjAwLCAyNTYwNiwgMjU2MTEsIDI1NjIyLCAKLSAgICAyNTY0MCwgMjU2NDcsIDI1NjU1LCAyNTY1OSwgMjU2NjgsIDI1NjgxLCAyNTY4OSwgMjU3MDEsIDI1NzEyLCAyNTcyMiwgCi0gICAgMjU3MzYsIDI1NzQ1LCAyNTc1MywgMjU3NjUsIDc4NTksIDI1Nzc2LCAyNTc4NywgMjU3OTksIDI1ODA5LCAyNTgxOCwgCi0gICAgMjU4MjMsIDI1ODI3LCAyNTgzNSwgMjU4NDUsIDI1ODUwLCAyNTg1NCwgMjU4NTcsIDI1ODYwLCAyNTg2OCwgMjU4NzYsIAotICAgIDI1ODg1LCAyNTg5NSwgMjU5MDQsIDI1OTEwLCAyNTkyNCwgMjYxNywgMjU5NDYsIDI1OTU3LCAyNTk2NiwgMjU5NzYsIAotICAgIDI1OTg4LCAyNTk5NywgMjYwMDcsIDI2MDE1LCAyNjAyMywgMjYwMzIsIDI2MDM3LCAyNjA0OCwgMjYwNTMsIDI2MDY0LCAKLSAgICAyNjA2OCwgMjYwNzgsIDI2MDg3LCAyNjA5NSwgMjYxMDUsIDI2MTE1LCAyNjEyMywgMjYxMzIsIDI2MTM5LCAyNjE0NywgCi0gICAgMjYxNTQsIDI2MTYzLCAyNjE2NywgMjYxNzUsIDI2MTgyLCAyNjE5MCwgMjYxOTcsIDI2MjA4LCAyNjIyMywgMjYyMzAsIAotICAgIDI2MjM2LCAyNjI0NiwgMjYyNTUsIDI2MjYxLCAyNjI2OCwgMTIzMTIsIDI2Mjc0LCAyNjI3OCwgMjYyODMsIDI2Mjg3LCAKLSAgICAyNjI5MSwgMjYyOTksIDI2MzA3LCAyNjMxMywgMjYzMjIsIDI2MzI5LCAyNjMzNCwgMjYzMzksIDI2MzQ5LCAyMTU2OCwgCi0gICAgMjYzNTMsIDI2MzU2LCAyNjM2MSwgMjYzNjYsIDI2MzcxLCAyNjM3NiwgMjYzODEsIDI2Mzg2LCAyNjM5MSwgMjYzOTYsIAotICAgIDI2NDAyLCAyNjQwNywgMjY0MTIsIDI2NDE4LCAxMjIzLCA2NzksIDI2NDIzLCAyNjQzMiwgMjMxOCwgMjY0MzksIDI2NDQ0LCAKLSAgICAyNjQ0OCwgMjY0NTQsIDEyNTYsIDU0MSwgMzM0LCAyNjQ1OSwgMjY0NjgsIDI2NDc2LCAyNjQ4NSwgMjY0OTMsIDI2NTA0LCAKLSAgICAyNjUxMywgMjY1MjEsIDI2NTI1LCAyNjUyOCwgMjY1MzYsIDI2NTQ0LCAyNjU0OSwgMTMwMjUsIDI2NTU1LCAyNjU2MSwgCi0gICAgMjY1NjcsIDQzNTAsIDI2NTcyLCAyNjU3NiwgMjY1ODIsIDI2NTg2LCAyNjU5MywgMTQxOCwgMjY1OTksIDc5NDYsIDI2NjA2LCAKLSAgICAyNjYxNiwgMjY2MjQsIDI2NjMwLCAyNjYzOSwgMjY2NDcsIDI2NjUzLCAyNjY2MSwgMjY2NjgsIDk0NTUsIDI2Njc0LCAKLSAgICAyNjY4MSwgMjY2ODgsIDE0NTksIDIxMDUsIDI2Njk0LCAyNjcwMCwgMjY3MDcsIDI2NzE4LCAyNjcyOSwgMjY3MzcsIAotICAgIDI2NzQ0LCAyNjc1NCwgMjY3NjMsIDI2NzcxLCAyNjc3OCwgMjY3ODUsIDI2Nzk4LCAyNjgwOSwgMjY4MjgsIDEyNjEsIAotICAgIDI2ODMyLCAyNjgzNywgMjY4NDUsIDM1MTAsIDI2ODQ5LCAyNjg1NCwgMjY4NTgsIDE0MjIsIDIyNzQ2LCAyNjg2OCwgCi0gICAgMjY4NzIsIDI2ODc3LCAyNjg4MSwgMzQzNSwgMjY4ODcsIDI2ODk1LCAyNjkwMiwgMjY5MTMsIDI2OTIxLCAyNjkyOSwgCi0gICAgMzUxMSwgMjY5LCAyNjkzNCwgMjY5NDIsIDI2OTUwLCAyNjk1NywgMjY5NjMsIDI2OTY4LCAyMTcwLCAyNjk3NSwgMjY5ODEsIAotICAgIDIzOTYyLCAyNDE4NCwgMjY5ODcsIDEwNiwgMjY5OTEsIDI2OTk1LCAyNzAwMSwgNjA2LCA3Njk1LCAyNzAwNiwgMjcwMTMsIAotICAgIDI3MDE5LCAyMjgxLCAyNzAyMywgMjcwMjcsIDI3MDMwLCAyNzAzMywgMjcwMzgsIDI3MDQ1LCAyNzA1MSwgMjcwNTYsIAotICAgIDI3MDY0LCAyNzA3MSwgMjcwNzcsIDIwNDU1LCAyNzA4MSwgMzU4MSwgMTQ4MjYsIDI3MDg1LCAyNzA5MCwgMjcwOTMsIAotICAgIDI3MTAxLCAyNzEwOSwgMjcxMTIsIDI3MTE5LCAyNzEyOSwgMjcxNDEsIDI3MTQ2LCAyNzE1MCwgMjcxNTgsIDI3MTY1LCAKLSAgICAyNzE3MSwgMjcxNzgsIDI3MTg1LCAyNzE4OCwgMjcxOTIsIDI3MTk2LCAxNDI2LCAyNzIwNiwgMjcyMDgsIDI3MjEzLCAKLSAgICAyNzIxOSwgMjcyMjUsIDI3MjMwLCAyNzIzNSwgMjcyNDAsIDI3MjQ1LCAyNzI1MCwgMjcyNTUsIDI3MjYwLCAyNzI2NSwgCi0gICAgMjcyNzAsIDI3Mjc1LCAyNzI4MCwgMjcyODUsIDI3MjkwLCAyNzI5NSwgMjczMDEsIDI3MzA3LCAyNzMxMywgMjczMTksIAotICAgIDI3MzI0LCAyNzMyOSwgMjczMzQsIDI3MzQwLCAyNzM0NSwgMjczNTAsIDI3MzU1LCAyNzM2MSwgMjczNjYsIDI3MzcyLCAKLSAgICAyNzM3NywgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTgsIDI3NDAzLCAyNzQwOSwgMjc0MTQsIDI3NDE5LCAyNzQyNCwgCi0gICAgMjc0MjksIDI3NDM1LCAyNzQ0MCwgMjc0NDYsIDI3NDUxLCAyNzQ1NiwgMjc0NjEsIDI3NDY2LCAyNzQ3MSwgMjc0NzYsIAotICAgIDI3NDgxLCAyNzQ4NiwgMjc0OTEsIDI3NDk3LCAyNzUwMywgMjc1MDksIDI3NTE0LCAyNzUxOSwgMjc1MjQsIDI3NTI5LCAKLSAgICAyNzUzNSwgMjc1NDEsIDI3NTQ3LCAyNzU1MywgMjc1NTksIDI3NTY1LCAyNzU3MCwgMjc1NzYsIDI3NTgxLCAyNzU4NiwgCi0gICAgMjc1OTEsIDI3NTk2LCAyNzYwMiwgMjM5NywgMjc2MDcsIDI0MDQsIDI0MTEsIDI3MDgsIDI3NjEyLCAyNDE3LCAyNDI3LCAKLSAgICAyNzYxOCwgMjc2MjIsIDI3NjI3LCAyNzYzMiwgMjc2MzgsIDI3NjQzLCAyNzY0OCwgMjc2NTIsIDI3NjU3LCAyNzY2MywgCi0gICAgMjc2NjgsIDI3NjczLCAyNzY3OCwgMjc2ODQsIDI3Njg5LCAyNzY5MywgMjc2OTcsIDI3NzAyLCAyNzcwNywgMjc3MTIsIAotICAgIDI3NzE3LCAyNzcyMiwgMjc3MjgsIDI3NzM0LCAyNzczOSwgMjc3NDMsIDI3NzQ4LCAyNzc1NCwgMjc3NTgsIDI3NzYzLCAKLSAgICAyNzc2OCwgMjc3NzMsIDI3Nzc4LCAyNzc4MiwgMjc3ODUsIDI3NzkwLCAyNzc5NSwgMjc4MDAsIDI3ODA1LCAyNzgxMSwgCi0gICAgMjc4MTcsIDI3ODIyLCAyNzgyNywgMjc4MzEsIDI3ODM2LCAyNzg0MSwgMjc4NDYsIDI3ODUxLCAyNzg1NiwgMjc4NjAsIAotICAgIDI3ODY1LCAyNzg3MCwgMjc4NzUsIDI3ODc5LCAyNzg4MywgMjc4ODcsIDI3ODkyLCAyNzkwMCwgMjc5MDYsIDI3OTEyLCAKLSAgICAyNzkxOCwgMjc5MjMsIDI3OTI3LCAyNzkzMCwgMjc5MzUsIDI3OTM5LCAyNzk0NCwgMjc5NDgsIDI3OTUzLCAyNzk1NywgCi0gICAgMjc5NjAsIDE1NDg5LCAyNzk2NSwgMjc5NzMsIDE5NDM5LCAyNjYwMywgMjc5NzgsIDI3OTgzLCAyNzk4NywgMjc5OTIsIAotICAgIDI3OTk2LCAyODAwMCwgMjgwMDUsIDI4MDA5LCAyODAxMiwgMjgwMTUsIDI4MDE5LCAyODAyNCwgMjgwMzIsIDI4MDM2LCAKLSAgICAyODAzOSwgMjgwNDQsIDI4MDQ4LCAyODA1MiwgMjgwNTcsIDI4MDYyLCAyODA2NiwgMjgwNzIsIDI4MDc3LCAyODA4MiwgCi0gICAgMjgwODksIDI4MDk2LCAyODEwMCwgMjgxMDMsIDI4MTA5LCAyODExOCwgMjgxMjUsIDI4MTMzLCAyODE0MCwgMjgxNDQsIAotICAgIDI4MTQ5LCAyODE1MywgMjgxNTksIDI4MTY1LCAyODE2OSwgMjgxNzUsIDI4MTgwLCAyODE4NSwgMjgxOTIsIDI4MTk4LCAKLSAgICAyODIwNCwgMjgyMTAsIDI4MjE2LCAyODIyMywgMjgyMjksIDI4MjM1LCAyODI0MSwgMjgyNDcsIDI4MjUzLCAyODI1OSwgCi0gICAgMjgyNjUsIDI4MjcyLCAyODI3OCwgMjgyODUsIDI4MjkxLCAyODI5NywgMjgzMDMsIDI4MzA5LCAyODMxNSwgMjgzMjEsIAotICAgIDI4MzI3LCAyODMzMywgMjgzMzksIDk3NjMsIDI4MzQ1LCAyODM1MCwgMjgzNTUsIDI4MzU4LCAyODM2NiwgMjgzNzEsIAotICAgIDI4MzgwLCAyODM4NiwgMjgzOTEsIDI4Mzk2LCAyODQwMSwgMjg0MDUsIDI4NDEwLCAyODQxNSwgMjg0MjAsIDI4NDI1LCAKLSAgICAyODQzMCwgMjg0MzcsIDI4NDQ0LCAyODQ1MCwgMjg0NTYsIDI4NDYxLCAxNDUxMCwgMjg0NjgsIDI4NDc0LCAyODQ4MSwgCi0gICAgMjg0ODcsIDI4NDkzLCAyODQ5OCwgMjg1MDYsIDI4NTExLCAxNDI5NCwgMjg1MTUsIDI4NTIwLCAyODUyNSwgMjg1MzEsIAotICAgIDI4NTM2LCAyODU0MSwgMjg1NDUsIDI4NTUwLCAyODU1NSwgMjg1NjEsIDI4NTY2LCAyODU3MSwgMjg1NzUsIDI4NTgwLCAKLSAgICAyODU4NSwgMjg1ODksIDI4NTk0LCAyODU5OSwgMjg2MDQsIDI4NjA4LCAyODYxMywgMjg2MTgsIDI4NjIzLCAyODYyNywgCi0gICAgMjg2MzEsIDEzNTMxLCAyODYzNSwgMjg2NDQsIDI4NjUwLCAyODY1NiwgMjg2NjUsIDI4NjczLCAyODY4MiwgMjg2OTAsIAotICAgIDI4Njk1LCAyODY5OSwgMjg3MDYsIDI4NzEyLCAyODcxNiwgMjg3MTksIDI4NzI0LCAyODczMywgMjg3NDEsIDI4NzQ2LCAKLSAgICAxNDU4LCAyODc1MiwgMjg3NTUsIDI4NzU5LCAyMDUyNCwgMjA1MzAsIDI4NzY1LCAyODc2OSwgMjg3ODAsIDI4NzkxLCAKLSAgICAyODgwMiwgMjg4MTQsIDI4ODIxLCAyODgyOCwgMjg4MzMsIDI4ODM3LCA0Mzg3LCA3MzMsIDE5NDM4LCAyODg0NSwgMjg4NDksIAotICAgIDI4ODU0LCAyODg2MCwgMjg4NjUsIDI4ODcxLCAyODg3NiwgMjg4ODIsIDI4ODg3LCA4NzY0LCAyNzg1LCAzMzY1LCAyODg5MSwgCi0gICAgMjg4OTQsIDI4OTAwLCAyODkwNiwgMjg5MTIsIDI4OTE5LCAyODkyNSwgMjg5MzEsIDI4OTM3LCAyODk0MywgMjg5NDksIAotICAgIDI4OTU1LCAyODk2MSwgMjg5NjcsIDI4OTczLCAyODk3OSwgMjg5ODUsIDI4OTkxLCAyODk5OCwgMjkwMDQsIDI5MDEwLCAKLSAgICAyOTAxNiwgMjkwMjIsIDI5MDI4LCAyOTAzMywgMjkwMzYsIDI5MDQzLCAyOTA1MSwgMjkwNTYsIDI5MDYxLCAyOTA2NywgCi0gICAgMjkwNzIsIDI5MDc3LCAyOTA4MSwgMjkwODYsIDI5MDkyLCAyOTA5NywgMjkxMDMsIDI5MTA4LCAyOTExNCwgMjkxMTksIAotICAgIDI5MTI1LCAyOTEzMSwgMjkxMzUsIDI5MTQwLCAyOTE0NSwgMjkxNTAsIDI5MTU1LCAyOTE1OSwgMjkxNjQsIDI5MTY5LCAKLSAgICAyOTE3NCwgMjkxODAsIDI5MTg2LCAyOTE5MiwgMjkxOTgsIDI5MjAzLCAyOTIwNywgMjkyMTAsIDI5MjE2LCAyOTIyMiwgCi0gICAgMjkyMzEsIDI5MjM5LCAyOTI0NiwgMjkyNTEsIDI5MjU1LCAyOTI1OSwgMjkyNjQsIDEzMzk1LCAyOTI2OSwgMjkyNzcsIAotICAgIDI5MjgzLCAzNjExLCAyOTI4OCwgMjkyOTEsIDI5Mjk1LCA2NDM2LCAyOTMwMSwgMjkzMDcsIDI5MzE0LCA2NDQ1LCAyOTMxOCwgCi0gICAgMjkzMjQsIDI5MzMxLCAyOTMzNywgMjkzNDYsIDI5MzU0LCAyOTM2NiwgMjkzNzAsIDI5Mzc3LCAyOTM4MywgMjkzODcsIAotICAgIDI5MzkwLCAyOTM5OSwgMjk0MDcsIDI5NDEyLCAyOTQxNiwgMjk0MjYsIDI5NDM2LCAyOTQ0NiwgMjk0NTIsIDI5NDU3LCAKLSAgICAyOTQ2NywgMjk0NzIsIDI5NDg1LCAyOTQ5OSwgMjk1MTAsIDI5NTIyLCAyOTUzNCwgMjk1NDgsIDI5NTYxLCAyOTU3MywgCi0gICAgMjk1ODUsIDEyODU5LCAyOTU5OSwgMjk2MDQsIDI5NjA5LCAyOTYxMywgMjk2MTcsIDI5NjIxLCAxNzQzLCAyNTEyOSwgCi0gICAgMjk2MjUsIDI5NjMwLCAyOTYzNSwgMjk2MzksIDI5NjQyLCAyOTY0NywgMjk2NTIsIDI5NjU4LCAyOTY2NCwgODQ2MSwgCi0gICAgMjk2NjksIDI5Njc2LCAxMzkzNSwgMjk2ODIsIDI5Njg3LCAyOTY5MiwgMjk2OTYsIDI5NzAxLCAyOTcwNiwgMjg4NTUsIAotICAgIDI5NzExLCAyOTcxNiwgMjk3MjEsIDI5NzI3LCAyODg2MSwgMjk3MzIsIDI5NzM1LCAyOTc0MiwgMjk3NTAsIDI5NzU2LCAKLSAgICAyOTc2MiwgMjk3NjgsIDI5Nzc5LCAyOTc4NCwgMjk3OTEsIDI5Nzk4LCAyOTgwNSwgMjk4MTMsIDI5ODIyLCAyOTgzMSwgCi0gICAgMjk4MzcsIDI5ODQzLCAyOTg1MSwgMjg4NjYsIDI5ODU2LCAyOTg2MiwgMjk4NjgsIDI4ODcyLCAyOTg3MywgMjk4ODEsIAotICAgIDI5ODg5LCAyOTg5NSwgMjk5MDIsIDI5OTA4LCAyOTkxNSwgMjk5MjIsIDI5OTI4LCAyOTkzNiwgMjk5NDYsIDI5OTUzLCAKLSAgICAyOTk1OCwgMjk5NjQsIDI5OTY5LCAyOTk3NCwgMjk5ODEsIDI5OTkwLCAyOTk5OCwgMzAwMDMsIDMwMDA5LCAzMDAxNiwgCi0gICAgMzAwMjQsIDMwMDMwLCAzMDAzNSwgMzAwNDEsIDMwMDUwLCAyNTg5MCwgMzAwNTcsIDMwMDYxLCAzMDA2NiwgMzAwNzUsIAotICAgIDMwMDgwLCAzMDA4NSwgMTA3MTQsIDMwMDkzLCAzMDA5OCwgMzAxMDMsIDMwMTA3LCAzMDExMiwgMzAxMTcsIDMwMTI0LCAKLSAgICAzMDEyOSwgMzAxMzQsIDI4ODc3LCAyODg4MywgMzAxNDAsIDI0NzMsIDIzOSwgMzAxNDMsIDMwMTQ2LCAzMDE1MCwgMzAxNTQsIAotICAgIDMwMTY0LCAzMDE3MiwgMzAxNzYsIDMwMTgzLCAzMDE5MCwgMzAxOTQsIDMwMTk3LCAzMDIwMywgMzAyMTEsIDMwMjE5LCAKLSAgICAzMDIyMywgMzAyMjcsIDMwMjMwLCAzMDIzNywgMzAyNDEsIDMwMjQ4LCAzMDI1NiwgMzAyNjMsIDMwMjY3LCAzMDI3NSwgCi0gICAgNjg0LCAyOTcsIDMwMjg3LCAzMDI5MiwgMzAyOTcsIDMwMzAzLCAzMDMwOCwgMzAzMTMsIDM2MzIsIDMwMzE4LCAzMDMyMSwgCi0gICAgMzAzMjYsIDMwMzMxLCAzMDMzNiwgMzAzNDEsIDMwMzQ2LCAzMDM1MywgMjA2MDksIDMwMzU4LCAzMDM2MywgMzAzNjgsIAotICAgIDMwMzczLCAzMDM3OCwgMzAzODQsIDMwMzg5LCAzMDM5NSwgMjkwMzksIDMwNDAxLCAzMDQwNiwgMzA0MTIsIDMwNDE4LCAKLSAgICAzMDQyOCwgMzA0MzMsIDMwNDM4LCAzMDQ0MiwgMzA0NDcsIDMwNDUyLCAzMDQ1NywgMzA0NjIsIDMwNDc1LCAzMDQ4MCwgCi0gICAgMjA0MDYsIDE0OTA2LCAzNjM4LCAzMDQ4NCwgMzA0ODksIDMwNDk0LCAzMDUwMCwgMzA1MDUsIDMwNTEwLCAzMDUxNCwgCi0gICAgMzA1MTksIDMwNTI0LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NCwgMzA1NDksIDMwNTU0LCAzMDU1OSwgMzA1NjMsIAotICAgIDMwNTY4LCAzMDU3MywgMzA1NzgsIDMwNTg0LCAzMDU5MCwgMzA1OTUsIDMwNTk5LCAzMDYwNCwgMzA2MDksIDMwNjE0LCAKLSAgICAzMDYxOCwgMzA2MjYsIDMwNjMwLCAzMDYzNiwgMzA2NDAsIDMwNjQ3LCAxNDY5OSwgMzA2NTMsIDMwNjYwLCAzMDY2OCwgCi0gICAgMzA2NzUsIDMwNjgxLCAzMDY5MywgMzA2OTksIDMwNzAzLCAyNzI3LCAzMDcwNywgMzA3MTEsIDMwMjMyLCAzMDcyMCwgCi0gICAgMzA3MzEsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUwLCAzMDc1NSwgMjA1MzUsIDMwNzU5LCAzMDc2NCwgMTk0NTksIAotICAgIDMwNzY4LCAzMDc3MywgMzA3NzksIDMwNzg0LCAzMDc4OCwgMzA3OTIsIDMwNzk1LCAzMDc5OSwgMzA4MDUsIDMwODE2LCAKLSAgICAzMDgyOCwgMzA4MzMsIDMwODM3LCAzMDg0MCwgMzQzLCAzMDg0NCwgMzA4NDksIDMwODU0LCAzMDg1OSwgMzA4NjQsIAotICAgIDMwODY5LCAzMDg3NSwgMzA4ODAsIDMwODg1LCAzMDg5MSwgMzA4OTYsIDMwOTAyLCAzMDkwNywgMzA5MTMsIDMwOTE4LCAKLSAgICAzMDkyMywgMzA5MjgsIDMwOTMzLCAzMDkzOCwgMzA5NDMsIDMwOTQ4LCAzMDk1MywgMzA5NTksIDMwOTY0LCAzMDk2OSwgCi0gICAgMzA5NzQsIDMwOTc5LCAzMDk4NCwgMzA5ODksIDMwOTk0LCAzMTAwMCwgMzEwMDYsIDMxMDExLCAzMTAxNiwgMzEwMjEsIAotICAgIDMxMDI2LCAzMTAzMSwgMzEwMzYsIDMxMDQxLCAzMTA0NiwgMzEwNTEsIDMxMDU2LCAzMTA2MSwgMzEwNjYsIDMxMDcxLCAKLSAgICAzMTA3NiwgMzEwODEsIDMxMDg2LCAzMTA5MSwgMzEwOTYsIDMxMTAyLCAyNiwgMzExMDcsIDMxMTExLCAzMTExNSwgMzExMjMsIAotICAgIDMxMTI3LCAzMTEzMSwgMzExMzQsIDMxMTM3LCAzMTEzOSwgMzExNDQsIDMxMTQ4LCAzMTE1MywgMzExNTcsIDMxMTYyLCAKLSAgICAzMTE2NiwgMzExNzEsIDMxMTc1LCAzMTE3OCwgMzExODAsIDMxMTg1LCAzMTE4OSwgMzEyMDAsIDMxMjAzLCAzMTIwNSwgCi0gICAgMzEyMDksIDMxMjIxLCAzMTIzMCwgMzEyMzQsIDMxMjQwLCAzMTI0NSwgMzEyNTQsIDMxMjYwLCAzMTI2NSwgMzEyNzAsIAotICAgIDMxMjc0LCAzMTI3OSwgMzEyODYsIDMxMjkxLCAzMTI5NywgMzEzMDIsIDMxMzA2LCAzMTMxMywgMjM3MDEsIDIzNzExLCAKLSAgICAzMTMxNywgMzEzMjIsIDMxMzI3LCAzMTMzMiwgMzEzMzksIDMxMzQzLCAzMTM1MCwgNjU0NCwgMzEzNTYsIDMxMzY1LCAKLSAgICAzMTM3MywgMzEzODgsIDMxNDAyLCAzMTQxMCwgMzE0MjEsIDMxNDMwLCAzMTQzNSwgNTY4MSwgMzE0NDUsIDMxNDUwLCAKLSAgICAzMTQ1NSwgMzE0NTksIDMxNDYyLCAzMTQ2NiwgMzE0NzEsIDMxNDc1LCAzMTQ4MiwgMzE0ODcsIDMxNDkyLCA3MzIwLCAKLSAgICAzMTUwMiwgMzE1MDQsIDMxNTA3LCAzMTUxMSwgMzE1MTcsIDMxNTIxLCAzMTUyNiwgMzE1MzEsIDMxNTM3LCAzMTU0MiwgCi0gICAgMzE1NDgsIDMxNTUzLCAzMTU2MywgMzE1NzIsIDMxNTgwLCAzMTU4NSwgMzE1OTEsIDMxNTk2LCAzMTYwMywgMzE2MDcsIAotICAgIDMxNjE1LCAzMTYyMiwgMzE2MzUsIDMxNjQzLCAzMTY0NywgMzE2NTcsIDMxNjYyLCAzMTY2NiwgMzE2NzQsIDMxNjgyLCAKLSAgICAzMTY4NiwgMzE2OTUsIDMxNzAxLCAzMTcwNiwgMzE3MTQsIDMxNzI0LCAzMTczMywgMzE3NDIsIDMxNzUxLCAzMTc2MiwgCi0gICAgMzE3NzAsIDMxNzgxLCAzMTc5MCwgMzE3OTcsIDMxODAzLCAzMTgwOCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzEsIAotICAgIDMxODM1LCAzMTg0MywgMzE4NDksIDMxODU3LCAzMTg2NCwgMzE4NzAsIDMxODc1LCAzMTg4MSwgMjM3MiwgMzE4ODUsIAotICAgIDMxODg3LCAzMTg5MiwgMzE4OTcsIDMxOTAwLCAzMTkwMiwgMzE5MDYsIDMxOTA5LCAzMTkxNiwgMzE5MjAsIDMxOTI0LCAKLSAgICAzMTkyNywgMzE5MzMsIDMxOTQzLCAzMTk0OCwgMzE5NTQsIDMxOTU4LCAzMTk2MywgMzE5NzYsIDI0MDc0LCAzMTk4MiwgCi0gICAgMzE5OTEsIDE1NjU0LCAzMTk5OCwgMzIwMDcsIDI5NDMyLCAzMjAxNSwgMzIwMjAsIDMyMDI0LCAzMjAzMiwgMzIwMzksIAotICAgIDMyMDQ0LCAzMjA0OCwgMzIwNTMsIDMyMDU3LCAzMjA2NSwgMzIwNzEsIDMyMDc3LCAzMjA4MiwgMzIwODYsIDMyMDg5LCAKLSAgICAzMjA5NCwgMzIxMDcsIDMyMTIzLCAyMTA4MCwgMzIxNDAsIDMyMTUyLCAzMjE2OSwgMzIxODEsIDMyMTk1LCAyMTA5NywgCi0gICAgMjExMTYsIDMyMjA3LCAzMjIxOSwgMjYzNCwgMzIyMzMsIDMyMjM4LCAzMjI0MywgMzIyNDgsIDMyMjUyLCAzMjI1OSwgCi0gICAgMzIyNzEsIDMyMjc3LCAzMjI4MCwgMzIyOTEsIDMyMzAyLCAyOTg0OCwgNjcwLCAzMjMwNywgMzIzMTEsIDMyMzE0LCAKLSAgICAzMjMxOSwgMzIzMjQsIDMyMzMwLCAzMjMzNSwgMzIzNDAsIDMyMzQ2LCAzMjM1MiwgMzIzNTcsIDMyMzYxLCAzMjM2NiwgCi0gICAgMzIzNzEsIDMyMzc2LCAzMjM4MCwgMzIzODMsIDMyMzg5LCAzMjM5NCwgMzIzOTksIDMyNDA0LCAzMjQwOCwgMzI0MTMsIAotICAgIDMyNDE5LCAzMjQyNywgMjQyOTksIDMyNDMyLCAzMjQzNywgMzI0NDQsIDMyNDUwLCAzMjQ1NiwgMzI0NjEsIDMyNDY5LCAKLSAgICAyMDYxOCwgMzI0NzYsIDMyNDgxLCAzMjQ4NiwgMzI0OTEsIDMyNDk1LCAzMjQ5OCwgMzI1MDMsIDMyNTA3LCAzMjUxMSwgCi0gICAgMzI1MTgsIDMyNTI0LCAzMjUzMCwgMzI1MzYsIDMyNTQzLCAzMjU0OCwgMzI1NTQsIDMxNjc3LCAzMjU1OCwgMzI1NjIsIAotICAgIDMyNTY3LCAzMjU4MCwgMzI1ODUsIDMyNTkxLCAzMjU5OSwgMzI2MDYsIDMyNjE0LCAzMjYyNCwgMzI2MzAsIDMyNjM2LCAKLSAgICAzMjY0MiwgMzI2NDYsIDMyNjU1LCAzMjY2MCwgMzI2NjUsIDg3ODcsIDMyNjcwLCAzMjY3NywgMzI2ODMsIDMyNjkzLCAKLSAgICAzMjY5OCwgMzI3MDQsIDMyNzEyLCAzNTQzLCAzMjcxOSwgMzI3MjYsIDM1NDksIDMyNzMwLCAzMjczNSwgMzI3NDYsIAotICAgIDMyNzUzLCAzMjc1OSwgMzI3NjgsIDMyNzcyLCAzOTMyLCAzMjc3NSwgMzI3ODIsIDMyNzg4LCAzMjc5NCwgMzI4MDIsIAotICAgIDMyODEyLCAyNjk1OCwgMzI4MTksIDMyODI3LCAzMjgzMywgMzI4MzgsIDMyODQ0LCAzMjg0OSwgMzI4NTUsIDMyODU5LCAKLSAgICAzMjg2NiwgMzI4NzIsIDMyODgxLCAyNDA5NCwgMzI4ODgsIDMyODkzLCAzMjg5NywgMzI5MDUsIDMyOTEzLCA3OTc0LCAKLSAgICA0MzczLCAzMjkyMCwgMzI5MjQsIDMyOTI4LCAzMjkzMywgMzI5MzksIDMyOTQ0LCAzMjk0OSwgMzI5NTYsIDMwMzQ5LCAKLSAgICAzMjk2MiwgMzI5NjcsIDMyOTcxLCAzMjk3NiwgMzI5ODAsIDMyOTg5LCAzMjk5MywgMzI5OTksIDMzMDA2LCAzMzAxMiwgCi0gICAgMzMwMTksIDMzMDI0LCAzMzAzMywgMzMwMzgsIDMzMDQyLCAzMzA0NywgMzMwNTQsIDMzMDYyLCAzMzA3MCwgMzMwNzUsIAotICAgIDE5NTA4LCAzMzA3OSwgMzMwODIsIDMzMDg2LCAzMzA5MCwgMzMwOTQsIDMzMDk3LCAzMzA5OSwgMzMxMDQsIDMzMTEyLCAKLSAgICAzMzExNiwgMzMxMjMsIDMzMTI3LCAzMzEzNSwgMzMxNDIsIDMzMTUyLCAzMzE1NiwgMzMxNjAsIDMzMTY4LCAzMzE3NiwgCi0gICAgMzMxODIsIDMzMTg3LCAzMzE5NiwgMTE2NjksIDMzMjAyLCAzMzIxMSwgMzMyMTYsIDMzMjIzLCAzMzIzMSwgMzMyMzksIAotICAgIDMzMjQ3LCAzMzI1NCwgMzMyNjEsIDMzMjY4LCAzMzI3NSwgMzMyODIsIDMzMjg3LCAzMzI5MywgMzMzMTAsIDMzMzE4LCAKLSAgICAzMzMyOCwgMzMzMzYsIDMzMzQzLCAzODUsIDMzMzQ3LCAzMzM1MywgMzMzNTcsIDMzMzYyLCAzMTQyNiwgMzMzNjgsIAotICAgIDMzMzcxLCAzMzM3NSwgMzMzODMsIDM1NTQsIDMzMzkxLCAzMzM5NywgMzM0MDMsIDMzNDEyLCAzMzQyMiwgMzM0MjksIAotICAgIDMzNDM1LCAzNTYwLCAzNTY2LCAzMzQ0NCwgMzM0NTEsIDMzNDU5LCAzMzQ2NCwgMzM0NjgsIDMzNDc1LCAzMzQ4MywgCi0gICAgMzM0ODksIDMzNDk4LCAzMzUwOCwgMzM1MTQsIDMzNTIyLCAzMzUzMSwgMzM1MzgsIDMzNTQ2LCAyMDE3NSwgMzM1NTMsIAotICAgIDMzNTYwLCAzMzU2NiwgMzM1NzYsIDMzNTg1LCAzMzU5NiwgMzM2MDAsIDMzNjEwLCAzMzYxNiwgMzM2MjMsIDMzNjMxLCAKLSAgICAzMzY0MCwgMzM2NDksIDMzNjU5LCAzMzY3MCwgMzM2NzcsIDMzNjgyLCAzMzY4OSwgMjk2NywgMzM2OTcsIDMzNzAzLCAKLSAgICAzMzcwOCwgMzM3MTQsIDMzNzIwLCAzMzcyNSwgMzM3MzgsIDMzNzUxLCAzMzc2NCwgMzM3NzEsIDMzNzc3LCAzMzc4NSwgCi0gICAgMzM3OTAsIDMzNzk0LCAxNDMyLCAzMzc5OCwgMzM4MDMsIDMzODA4LCAzMzgxMywgMzM4MTgsIDMzODI0LCAzMzgyOSwgCi0gICAgMzM4MzQsIDMzODM5LCAzMzg0NCwgMzM4NDksIDMzODU0LCAzMzg1OSwgMzM4NjUsIDMzODcxLCAzMzg3NiwgMzM4ODEsIAotICAgIDMzODg3LCAzMzg5MiwgMzM4OTcsIDMzOTAyLCAzMzkwOCwgMzM5MTMsIDMzOTE4LCAzMzkyMywgMzM5MjgsIDMzOTM0LCAKLSAgICAzMzkzOSwgMzM5NDQsIDMzOTUwLCAzMzk1NSwgMzM5NjAsIDMzOTY1LCAzMzk3MCwgMzM5NzUsIDMzOTgxLCAzMzk4NiwgCi0gICAgMzM5OTIsIDMzOTk3LCAzNDAwMywgMzQwMDgsIDM0MDEzLCAzNDAxOCwgMzQwMjQsIDM0MDMwLCAzNDAzNiwgMzQwNDIsIAotICAgIDM0MDQ4LCAzNDA1NCwgMzQwNjAsIDM0MDY2LCAzNDA3MSwgMzQwNzYsIDM0MDgyLCAzNDA4NywgMzQwOTIsIDM0MDk3LCAKLSAgICAzNDEwMiwgMzQxMDcsIDM0MTEyLCAzNDExNywgMzQxMjMsIDM0MTI4LCAzNDEzMywgMzQxMzksIDM0MTQ1LCAxMDEsIAotICAgIDM0MTUwLCAzNDE1MiwgMzQxNTYsIDM0MTYwLCAzNDE2NCwgMzQxNjksIDM0MTczLCA3ODk1LCAzNDE3NywgMzQxODMsIAotICAgIDQ3MzgsIDM0MTg5LCAzNDE5MiwgMzQxOTcsIDM0MjAxLCAzNDIwNiwgMzQyMTAsIDM0MjE0LCAzNDIxOSwgODU5NCwgCi0gICAgMzQyMjMsIDM0MjI3LCAzNDIzMSwgMTM2MjMsIDM0MjM2LCAzNDI0MCwgMzQyNDUsIDM0MjUwLCAzNDI1NSwgMzQyNTksIAotICAgIDM0MjY2LCAyNDA5OCwgMzQyNzIsIDM0Mjc1LCAzNDI3OSwgMzQyODQsIDM0MjkwLCAzNDI5NCwgMzQzMDIsIDM0MzA4LCAKLSAgICAzNDMxMywgMzQzMTcsIDM0MzIzLCAzNDMyNywgMzQzMzEsIDM0MDQsIDM0MDksIDI3MTQ0LCAzNDMzNCwgMzQzNDIsIAotICAgIDM0MzQ5LCAzNDM1MywgMzQzNjAsIDM0MzY1LCAzMzMsIDM0MzcwLCAzNDM3NCwgMzQzODAsIDM0MzkyLCAzNDM5OCwgCi0gICAgMzQ0MDQsIDM0NDA4LCAzNDQxNCwgMzQ0MjMsIDM0NDI3LCAzNDQzMSwgMzQ0MzYsIDM0NDQxLCAzNDQ0NiwgMzQ0NTAsIAotICAgIDM0NDU0LCAzNDQ2MSwgMzQ0NjcsIDM0NDcyLCAzNDQ4NywgMzQ1MDIsIDM0NTE3LCAzNDUzMywgMzQ1NTEsIDg1NDQsIAotICAgIDM0NTY1LCAzNDU3MiwgMzQ1NzYsIDM0NTc5LCAzNDU4OCwgMzQ1OTMsIDM0NTk3LCAzNDYwNSwgMzE2MjgsIDM0NjEzLCAKLSAgICAzNDYxNywgMzQ2MjcsIDI3MTE0LCAzNDYzOCwgMzQ2NDIsIDM0NjUxLCAzNDY1OSwgODE1MiwgMTMxNjMsIDM0NjYzLCAKLSAgICAzNDY2NiwgMzQ2NjksIDY1NTcsIDM4MDIsIDM0Njc0LCAzNDY4MiwgMzQ2ODYsIDM0Njg5LCAzNDY5MywgMzQ2OTgsIAotICAgIDM0NzAzLCAzNDcwOSwgMzQ3MTUsIDM0NzIwLCAzNDcyNCwgMjM5NDYsIDM0NzI4LCAzNDczMiwgMzQ3MzgsIDM0NzQyLCAKLSAgICA3NDQ2LCAzNDc1MSwgMzQ3NTgsIDM0NzYyLCAxMDIxMCwgMzQ3NjksIDM0Nzc1LCAzNDc4MCwgMzQ3ODcsIDM0Nzk0LCAKLSAgICAzNDgwMSwgMjY0ODAsIDY0ODAsIDM0ODA4LCAzNDgxNSwgMzQ4MjIsIDM0ODI4LCAzNDgzMywgMzQ4NDAsIDM0ODUxLCAKLSAgICAzNDg1NywgMzQ4NjIsIDM0ODY3LCAzNDg3NCwgMzQ4NzgsIDM0ODgyLCAzNDg5MiwgMzQ5MDMsIDM0OTA5LCAzNDkxNCwgCi0gICAgMzQ5MTksIDM0OTI0LCAzNDkyOSwgMzQ5MzQsIDM0OTM4LCAzNDk0MiwgMzQ5NDgsIDM0OTU2LCAyMjczLCA4MjgsIDg2MTYsIAotICAgIDg2MjEsIDg2MjcsIDM0OTY1LCA4NjMyLCA4NjM3LCA4NjQzLCAzNDk3MCwgMzQ5ODAsIDM0OTg0LCA4NjQ4LCAzNDk4OSwgCi0gICAgMzQ5OTIsIDM0OTk3LCAzNTAwMSwgMzUwMDYsIDM1MDExLCAzNTAxOCwgMzUwMjUsIDM1MDMzLCA4NTU3LCAzNTA0MCwgCi0gICAgMzUwNDMsIDM1MDQ5LCAzNTA1OSwgNDQwNywgMzUwNjgsIDM1MDcyLCAzNTA4MCwgMzUwODQsIDM1MDk0LCAzNTEwMCwgCi0gICAgMzUxMTEsIDM1MTE3LCAzNTEyMywgMzUxMjgsIDM1MTM0LCAzNTE0MCwgMzUxNDYsIDM1MTUxLCAzNTE1NCwgMzUxNjEsIAotICAgIDM1MTY3LCAzNTE3MiwgMzUxNzksIDM1MTg2LCAzNTE5MCwgMzUyMDAsIDM1MjEzLCAzNTIyMiwgMzUyMzEsIDM1MjQyLCAKLSAgICAzNTI1NSwgMzUyNjYsIDM1Mjc1LCAzNTI4NiwgMzUyOTEsIDM1MzAwLCAzNTMwNSwgODY1MywgMzUzMTEsIDM1MzE4LCAKLSAgICAzNTMyNiwgMzUzMzEsIDM1MzM1LCAzNTM0MiwgMzUzNDksIDM3NTcsIDIxLCAzNTM1MywgMzUzNTgsIDE0OTU4LCAzNTM2MiwgCi0gICAgMzUzNjUsIDM1MzY4LCAyNjAwMSwgMzUzNzIsIDI2NDg5LCAzNTM4MCwgMzUzODQsIDM1Mzg4LCAzNTM5MSwgMzUzOTcsIAotICAgIDM1NDAzLCAzNTQxMSwgMzU0MTcsIDM1NDI0LCAyNTk5MywgMzU0MjgsIDI2MTc4LCAzNTQzMiwgMzU0NDEsIDM1NDQ3LCAKLSAgICAzNTQ1MywgMzU0NTgsIDM1NDYyLCAzNTQ2OCwgMzU0NzIsIDM1NDc1LCAzNTQ4MywgMzU0OTEsIDI0MTU2LCAzNTQ5NywgCi0gICAgMzU1MDQsIDM1NTEwLCAzNTUxNSwgMzU1MjAsIDM1NTI0LCAzNTUzMCwgMzU1MzUsIDM1NTQxLCAzOTczLCA3NTUsIDM1NTQ4LCAKLSAgICAzNTU1MiwgMzU1NTUsIDEzNTEzLCAzNTU2NywgMzM1MjcsIDM1NTc4LCAzNTU4MSwgMzU1ODgsIDM1NTk0LCAzNTU5OCwgCi0gICAgMzU2MDQsIDM1NjA5LCAzNTYxNSwgMzU2MjAsIDM1NjI1LCAzNTYyOSwgMzU2MzMsIDM1NjM4LCAzNTY0MywgMzU2NTMsIAotICAgIDM1NjU5LCAzNTY3MiwgMzU2NzgsIDM1Njg1LCAzNTY5MCwgMzU2OTYsIDM1NzAxLCAxNDg0NCwgMTQzNSwgMTAwMiwgCi0gICAgMjg5NzQsIDI4OTgwLCAzNTcwNiwgMjg5ODYsIDI4OTk5LCAyOTAwNSwgMjkwMTEsIDM1NzEyLCAyOTAxNywgMjkwMjMsIAotICAgIDM1NzE4LCAzNTcyNCwgMTQsIDM1NzMyLCAzNTczOSwgMzU3NDMsIDM1NzQ3LCAzNTc1NSwgMjk3MzcsIDM1NzU5LCAzNTc2MywgCi0gICAgMzU3NzAsIDM1Nzc1LCAzNTc3OSwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDEsIDM1ODA2LCAzNTgxMCwgMzU4MTQsIAotICAgIDM1ODE4LCAzNTgyMywgMzU4MjcsIDM1ODMyLCAzNTgzNiwgMzU4NDMsIDM1ODQ4LCAzNTg1MiwgMzU4NTcsIDM1ODYxLCAKLSAgICAzNTg2NiwgMzU4NzAsIDM1ODc1LCAzNTg4MSwgMTM3MzMsIDEzNzM4LCAzNTg4NiwgMzU4OTAsIDM1ODkzLCAzNTg5NywgCi0gICAgMzU5MDIsIDM1OTA2LCAzNTkxMiwgMzU5MTksIDM1OTI0LCAzNTkzNCwgMzU5MzksIDM1OTQ3LCAzNTk1MSwgMzU5NTQsIAotICAgIDI5NzUyLCAzNTk1OCwgNDAyNiwgMzU5NjMsIDM1OTY4LCAzNTk3MiwgMzU5NzcsIDM1OTgxLCAzNTk4NiwgMTE2ODcsIAotICAgIDM1OTk3LCAzNjAwMSwgMzYwMDQsIDM2MDA5LCAzNjAxMywgMzYwMTcsIDM2MDIwLCAzNjAyNCwgNjU3NiwgMTE3MDMsIAotICAgIDM2MDI3LCAzNjAzMCwgMzYwMzUsIDM2MDM5LCAzNjA0OCwgMzYwNjQsIDM2MDgwLCAzNjA5MCwgMjU5MDAsIDM2MDk3LCAKLSAgICAzNjEwMSwgMzYxMDYsIDM2MTExLCAzNjExNSwgMzYxMTksIDMzNjQ0LCAzNjEyNSwgMzYxMzAsIDM2MTM0LCAzNjE0MSwgCi0gICAgMzYxNDYsIDM2MTUwLCAzNjE1NCwgMjQ5NTgsIDM2MTYwLCAxOTYwMywgMzYxNjUsIDM2MTcyLCAzNjE4MCwgMzYxODYsIAotICAgIDM2MTkzLCAzNjIwMSwgMzYyMDcsIDM2MjExLCAzNjIxNywgMzYyMjUsIDM2MjI5LCAzNjIzOCwgNzg3NiwgMzYyNDYsIAotICAgIDM2MjUwLCAzNjI1OCwgMzYyNjUsIDM2MjcwLCAzNjI3NSwgMzYyNzksIDM2MjgyLCAzNjI4NiwgMzYyODksIDM2MjkzLCAKLSAgICAzNjMwMCwgMzYzMDUsIDM2MzExLCAyNDM3NywgMjkwMzQsIDM2MzE1LCAzNjMyMiwgMzYzMjgsIDM2MzM0LCAzNjMzOSwgCi0gICAgMzYzNDIsIDM2MzQ0LCAzNjM1MSwgMzYzNTgsIDM2MzY0LCAzNjM2OCwgMzYzNzEsIDM2Mzc1LCAzNjM3OSwgMzYzODMsIAotICAgIDM2Mzg4LCAzNjM5MiwgMzYzOTYsIDM2Mzk5LCAzNjQwMywgMzY0MTcsIDIxMTQ2LCAzNjQzNiwgMzY0NDksIDM2NDYyLCAKLSAgICAzNjQ3NSwgMjExNjQsIDM2NDkwLCA4ODQ2LCAzNjUwNSwgMzY1MTEsIDM2NTE1LCAzNjUxOSwgMzY1MjYsIDM2NTMxLCAKLSAgICAzNjUzNSwgMzY1NDIsIDM2NTQ4LCAzNjU1MywgMzY1NTksIDM2NTY5LCAzNjU4MSwgMzY1OTIsIDM2NTk3LCAzNjYwNCwgCi0gICAgMzY2MDgsIDM2NjEyLCAzNjYxNSwgMTQxMjksIDM2MDUsIDM2NjIzLCAxMzc2MCwgMzY2MzYsIDM2NjQzLCAzNjY0NywgCi0gICAgMzY2NTEsIDM2NjU2LCAzNjY2MSwgMzY2NjcsIDM2NjcxLCAzNjY3NSwgMzY2NzgsIDYxODgsIDEzNzcxLCAzNjY4MywgCi0gICAgMzY2ODcsIDM2NjkzLCAzNjcwMiwgMzY3MDcsIDMzNTA0LCAzNjcxMywgMzY3MTgsIDM2NzIyLCAzNjcyNywgMzY3MzQsIAotICAgIDM2NzM4LCAzNjc0MSwgMTI4MjQsIDM2NzQ2LCAzNjc1MywgMTAwOSwgMzY3NTcsIDM2NzYyLCAzNjc2NywgMzY3NzMsIAotICAgIDM2Nzc4LCAzNjc4MywgMzY3ODcsIDM2Nzk3LCAzNjgwMiwgMzY4MDgsIDM2ODEzLCAzNjgxOSwgMzY4MjQsIDM2ODMwLCAKLSAgICAzNjg0MCwgMzY4NDUsIDM2ODUwLCAzNjg1NCwgNTY4MywgNTY5NSwgMzY4NTksIDM2ODYyLCAzNjg2OSwgMzY4NzUsIAotICAgIDMxNzkzLCAzMTgwMCwgMzY4ODQsIDM2ODg4LCAyOTgwMCwgMzY4OTYsIDM2OTA3LCAzNjkxNSwgMzM2OTIsIDM2OTIyLCAKLSAgICAzNjkyNywgMzY5MzIsIDM2OTQzLCAzNjk1MCwgMzY5NjEsIDI5ODI0LCAxOTYwOSwgMzY5NjksIDcyMiwgMzY5NzQsIAotICAgIDM2OTgwLCAyNTk4NCwgMzY5ODYsIDM2OTkxLCAzNzAwMSwgMzcwMTAsIDM3MDE3LCAzNzAyMywgMzcwMjcsIDM3MDMwLCAKLSAgICAzNzAzNywgMzcwNDMsIDM3MDUwLCAzNzA1NiwgMzcwNjYsIDM3MDc0LCAzNzA4MCwgMzcwODYsIDM3MDkxLCAzNzA5NSwgCi0gICAgMzcxMDIsIDM3MTA4LCAzNzExNSwgMzYzODQsIDUzMCwgMTIxMTIsIDM3MTIxLCAzNzEyNiwgMzcxMjksIDM3MTM1LCAKLSAgICAzNzE0MywgMTM2NCwgMzcxNDgsIDM3MTUyLCAzNzE1NywgMzcxNjQsIDM3MTcwLCAzNzE3NCwgMzcxNzksIDM3MTg4LCAKLSAgICAzNzE5NSwgMzcyMDUsIDM3MjExLCAyNjAxOSwgMzcyMjgsIDM3MjM3LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgCi0gICAgMzcyNjksIDM3Mjc3LCAzNzI4NiwgMzcyOTQsIDM3Mjk4LCAzNzMwMywgMzczMTEsIDI5ODMzLCAzNzMxNywgMzczMzYsIAotICAgIDE0MDYyLCAzNzM1MCwgMzczNjYsIDM3MzgwLCAzNzM4NiwgMzczOTEsIDM3Mzk2LCAzNzQwMSwgMzc0MDcsIDI5ODM5LCAKLSAgICAzNzQxMiwgMzc0MTksIDM3NDI0LCAzNzQyOCwgMzQxLCAyODc4LCAzNzQzNSwgMzc0NDAsIDM3NDQ1LCAyNTI3NSwgMzcyNjYsIAotICAgIDM3NDQ5LCAzNzQ1NCwgMzc0NjIsIDM3NDY2LCAzNzQ2OSwgMzc0NzUsIDM3NDc5LCAyNjA3NCwgMzc0ODIsIDM3NDg3LCAKLSAgICAzNzQ5MSwgMzc0OTQsIDM3NDk5LCAzNzUwMywgMzc1MDgsIDM3NTEzLCAzNzUxNywgMzc1MjIsIDM3NTI2LCAzNzUzMCwgCi0gICAgMTkzNDYsIDE5MzU3LCAzNzUzNCwgMzc1MzksIDM3NTQ1LCAyNDkxNSwgMzc1NTAsIDM3NTU0LCAxOTQyNSwgMTQyODAsIAotICAgIDM3NTU3LCAzNzU2MiwgMzc1NjcsIDM3NTcyLCAzNzU3NywgMzc1ODIsIDM3NTg3LCAzNzU5MiwgNDQwLCA0MywgMjkwNTIsIAotICAgIDI5MDU3LCAyOTA2MiwgMjkwNjgsIDI5MDczLCAyOTA3OCwgMzc1OTcsIDI5MDgyLCAzNzYwMSwgMzc2MDUsIDI5MDg3LCAKLSAgICAyOTA5MywgMzc2MDksIDI5MTA0LCAyOTEwOSwgMzc2MTcsIDM3NjIyLCAyOTExNSwgMzc2MjcsIDM3NjMyLCAzNzYzNywgCi0gICAgMzc2NDIsIDM3NjQ4LCAzNzY1NCwgMzc2NjAsIDI5MTMyLCAzNzY3MywgMzc2NzksIDI5MTM2LCAzNzY4MywgMjkxNDEsIAotICAgIDM3Njg4LCAyOTE0NiwgMjkxNTEsIDM3NjkxLCAzNzY5NiwgMzc3MDAsIDI4Nzk1LCAzNzcwNiwgMTE5MTEsIDM3NzEzLCAKLSAgICAzNzcxOCwgMjkxNTYsIDM3NzIyLCAzNzcyNywgMzc3MzIsIDM3NzM3LCAzNzc0MSwgMzc3NDYsIDM3NzUxLCAzNzc1NywgCi0gICAgMzc3NjIsIDM3NzY3LCAzNzc3MywgMzc3NzksIDM3Nzg0LCAzNzc4OCwgMzc3OTMsIDM3Nzk4LCAzNzgwMywgMzc4MDcsIAotICAgIDM3ODEyLCAzNzgxNywgMzc4MjIsIDM3ODI4LCAzNzgzNCwgMzc4NDAsIDM3ODQ1LCAzNzg0OSwgMzc4NTQsIDM3ODU4LCAKLSAgICAyOTE2MCwgMjkxNjUsIDI5MTcwLCAzNzg2MiwgMzc4NjYsIDI5MTc1LCAyOTE4MSwgMjkxODcsIDI5MTk5LCAzNzg3OCwgCi0gICAgMjM5ODMsIDM3ODgyLCAzNzg4NiwgMzc4OTEsIDM3ODk2LCAzNzkwMSwgMzc5MDUsIDM3OTA5LCAzNzkxOSwgMzc5MjQsIAotICAgIDM3OTI5LCAzNzkzMywgMzc5MzcsIDM3OTQwLCAzNzk0OCwgMjkyNDcsIDM3OTUzLCAxNDQyLCAzNzk1OSwgMzc5NjcsIAotICAgIDM3OTc2LCAzNzk4MCwgMzc5ODgsIDM3OTk0LCAzODAwMiwgMzgwMTgsIDM4MDIzLCAzODAzOCwgMjkyODQsIDE3MTIsIAotICAgIDEwMzc1LCAzODA0MiwgMjkyNCwgMzgwNTQsIDM4MDU1LCAzODA2MywgMzgwNzAsIDM4MDc1LCAzODA4MiwgMzgwODcsIAotICAgIDc3NDYsIDEwOTAsIDg2NzUsIDM4MDk0LCAzODA5OSwgMzgxMDIsIDM4MTA1LCAzODExNCwgMTI3NSwgMzgxMTksIDM2NTMyLCAKLSAgICAzODEyNiwgMzgxMzEsIDIwNTgzLCAyNTExLCAzODEzNSwgOTA5NCwgMzgxNDUsIDM4MTUxLCAyMjkxLCAyMzAxLCAzODE2MCwgCi0gICAgMzgxNjksIDM4MTc5LCAzODE5MCwgMzIzNSwgMzE5NDQsIDg3MjcsIDM3MzUsIDE0ODgyLCAxMjgwLCAzODE5NSwgMzgyMDMsIAotICAgIDM4MjEwLCAzODIxNSwgMzgyMTksIDM4MjIzLCAyMTkzMCwgODc1NCwgMzgyMzEsIDM4MjQwLCAzODI0OSwgMzgyNTcsIAotICAgIDM4MjY0LCAzODI2OSwgMzgyODIsIDM4Mjk1LCAzODMwNywgMzgzMTksIDM4MzMxLCAzODM0NCwgMzgzNTUsIDM4MzY2LCAKLSAgICAzODM3NiwgMzgzODQsIDM4MzkyLCAzODQwNCwgMzg0MTYsIDM4NDI3LCAzODQzNiwgMzg0NDQsIDM4NDUxLCAzODQ2MywgCi0gICAgMzg0NzAsIDM4NDc5LCAzODQ4NiwgMzg0OTksIDM4NTA0LCAzODUxNCwgMzg1MTksIDM4NTI1LCAzODUzMCwgMzQ3NTksIAotICAgIDM4NTM0LCAzODU0MSwgMzg1NDUsIDM4NTUyLCAzODU2MCwgMjQ3MiwgMzg1NjcsIDM4NTc4LCAzODU4OCwgMzg1OTcsIAotICAgIDM4NjA1LCAzODYxNSwgMzg2MjMsIDM4NjMzLCAzODY0MiwgMzg2NDcsIDM4NjUzLCAzODY1OSwgMzg2NzAsIDM4NjgwLCAKLSAgICAzODY4OSwgMzg2OTgsIDM4NzA4LCAzODcxNiwgMzg3MjUsIDM4NzMwLCAzODczNSwgMzg3NDAsIDE2NjgsIDM3LCAzODc0OCwgCi0gICAgMzg3NTYsIDM4NzY3LCAzODc3OCwgMTQ1NjMsIDM4Nzg4LCAzODc5NSwgMzg4MDEsIDM4ODA2LCAzODgxMCwgMzg4MjEsIAotICAgIDM4ODMxLCAzODg0MCwgMzg4NTEsIDE0OTMxLCAxNDkzNiwgMzg4NTYsIDM4ODY1LCAzODg3MCwgMzg4ODAsIDM4ODg1LCAKLSAgICAzODg5MywgMzg5MDEsIDM4OTA4LCAzODkxNCwgNTUzNiwgMTAzOCwgMzg5MTgsIDM4OTI0LCAzODkyOSwgMzg5MzIsIDIwNzUsIAotICAgIDM2NjQ4LCAzODk0MCwgMzg5NDQsIDM4OTQ3LCAxNDc1LCAzODk1MywgMTIyNjEsIDEyODUsIDM4OTU4LCAzODk3MSwgCi0gICAgMzg5ODUsIDI1OTcsIDM5MDAzLCAzOTAxNSwgMzkwMjcsIDI2MTEsIDI2MjgsIDM5MDQxLCAzOTA1NCwgMjY0MywgMzkwNjgsIAotICAgIDM5MDgwLCAyNjU4LCAzOTA5NCwgMTI5MSwgMTI5NywgMTMwMywgOTAxMiwgMzkwOTksIDM5MTA0LCAzOTEwOSwgMzkxMTMsIAotICAgIDM5MTI4LCAzOTE0MywgMzkxNTgsIDM5MTczLCAzOTE4OCwgMzkyMDMsIDM5MjE4LCAzOTIzMywgMzkyNDgsIDM5MjYzLCAKLSAgICAzOTI3OCwgMzkyOTMsIDM5MzA4LCAzOTMyMywgMzkzMzgsIDM5MzUzLCAzOTM2OCwgMzkzODMsIDM5Mzk4LCAzOTQxMywgCi0gICAgMzk0MjgsIDM5NDQzLCAzOTQ1OCwgMzk0NzMsIDM5NDg4LCAzOTUwMywgMzk1MTgsIDM5NTMzLCAzOTU0OCwgMzk1NjMsIAotICAgIDM5NTc4LCAzOTU5MywgMzk2MDgsIDM5NjIzLCAzOTYzOCwgMzk2NTMsIDM5NjY4LCAzOTY4MywgMzk2OTgsIDM5NzEzLCAKLSAgICAzOTcyOCwgMzk3NDMsIDM5NzU4LCAzOTc3MywgMzk3ODgsIDM5ODAzLCAzOTgxOCwgMzk4MzMsIDM5ODQ4LCAzOTg2MywgCi0gICAgMzk4NzgsIDM5ODkzLCAzOTkwOCwgMzk5MjMsIDM5OTM4LCAzOTk1MywgMzk5NjgsIDM5OTgzLCAzOTk5OCwgNDAwMTMsIAotICAgIDQwMDI4LCA0MDA0MywgNDAwNTgsIDQwMDczLCA0MDA4OCwgNDAxMDMsIDQwMTE4LCA0MDEzMywgNDAxNDgsIDQwMTYzLCAKLSAgICA0MDE3OCwgNDAxOTMsIDQwMjA4LCA0MDIyMywgNDAyMzgsIDQwMjUzLCA0MDI2OCwgNDAyODMsIDQwMjk4LCA0MDMxMywgCi0gICAgNDAzMjgsIDQwMzQzLCA0MDM1OCwgNDAzNzMsIDQwMzg4LCA0MDQwMywgNDA0MTgsIDQwNDMzLCA0MDQ0OCwgNDA0NjMsIAotICAgIDQwNDc4LCA0MDQ5MywgNDA1MDgsIDQwNTIzLCA0MDUzOCwgNDA1NTMsIDQwNTY4LCA0MDU4MywgNDA1OTgsIDQwNjEzLCAKLSAgICA0MDYyOCwgNDA2NDMsIDQwNjU4LCA0MDY3MywgNDA2ODgsIDQwNzAzLCA0MDcxOCwgNDA3MzMsIDQwNzQ4LCA0MDc2MywgCi0gICAgNDA3NzgsIDQwNzkzLCA0MDgwOCwgNDA4MjMsIDQwODM4LCA0MDg1MywgNDA4NjgsIDQwODgzLCA0MDg5OCwgNDA5MTMsIAotICAgIDQwOTI4LCA0MDk0MywgNDA5NTgsIDQwOTczLCA0MDk4OCwgNDEwMDMsIDQxMDE4LCA0MTAzMywgNDEwNDgsIDQxMDYzLCAKLSAgICA0MTA3OCwgNDEwOTMsIDQxMTA4LCA0MTEyMywgNDExMzgsIDQxMTUzLCA0MTE2OCwgNDExODMsIDQxMTk4LCA0MTIxMywgCi0gICAgNDEyMjgsIDQxMjQzLCA0MTI1OCwgNDEyNzMsIDQxMjg4LCA0MTMwMywgNDEzMTgsIDQxMzMzLCA0MTM0OCwgNDEzNjMsIAotICAgIDQxMzc4LCA0MTM5MywgNDE0MDgsIDQxNDIzLCA0MTQzOCwgNDE0NTMsIDQxNDY4LCA0MTQ4MywgNDE0OTgsIDQxNTEzLCAKLSAgICA0MTUyOCwgNDE1NDMsIDQxNTU4LCA0MTU3MywgNDE1ODgsIDQxNjAzLCA0MTYxOCwgNDE2MzMsIDQxNjQ4LCA0MTY2MywgCi0gICAgNDE2NzgsIDQxNjkzLCA0MTcwOCwgNDE3MjMsIDQxNzM4LCA0MTc1MywgNDE3NjgsIDQxNzgzLCA0MTc5OCwgNDE4MTMsIAotICAgIDQxODI4LCA0MTg0MywgNDE4NTgsIDQxODczLCA0MTg4OCwgNDE5MDMsIDQxOTE4LCA0MTkzMywgNDE5NDgsIDQxOTYzLCAKLSAgICA0MTk3OCwgNDE5OTMsIDQyMDA4LCA0MjAyMywgNDIwMzgsIDQyMDUzLCA0MjA2OCwgNDIwODMsIDQyMDk4LCA0MjExMywgCi0gICAgNDIxMjgsIDQyMTQzLCA0MjE1OCwgNDIxNzMsIDQyMTg4LCA0MjIwMywgNDIyMTgsIDQyMjMzLCA0MjI0OCwgNDIyNjMsIAotICAgIDQyMjc4LCA0MjI5MywgNDIzMDgsIDQyMzIzLCA0MjMzOCwgNDIzNTMsIDQyMzY4LCA0MjM4MywgNDIzOTgsIDQyNDEzLCAKLSAgICA0MjQyOCwgNDI0NDMsIDQyNDU4LCA0MjQ3MywgNDI0ODgsIDQyNTAzLCA0MjUxOCwgNDI1MzMsIDQyNTQ4LCA0MjU2MywgCi0gICAgNDI1NzgsIDQyNTkzLCA0MjYwOCwgNDI2MjMsIDQyNjM4LCA0MjY1MywgNDI2NjgsIDQyNjgzLCA0MjY5OCwgNDI3MTMsIAotICAgIDQyNzI4LCA0Mjc0MywgNDI3NTgsIDQyNzczLCA0Mjc4OCwgNDI4MDMsIDQyODE4LCA0MjgzMywgNDI4NDgsIDQyODYzLCAKLSAgICA0Mjg3OCwgNDI4OTMsIDQyOTA4LCA0MjkyMywgNDI5MzgsIDQyOTUzLCA0Mjk2OCwgNDI5ODMsIDQyOTk4LCA0MzAxMywgCi0gICAgNDMwMjgsIDQzMDQzLCA0MzA1OCwgNDMwNzMsIDQzMDg4LCA0MzEwMywgNDMxMTgsIDQzMTMzLCA0MzE0OCwgNDMxNjMsIAotICAgIDQzMTc4LCA0MzE5MywgNDMyMDgsIDQzMjIzLCA0MzIzOCwgNDMyNTMsIDQzMjY4LCA0MzI4MywgNDMyOTgsIDQzMzEzLCAKLSAgICA0MzMyOCwgNDMzNDMsIDQzMzU4LCA0MzM3MywgNDMzODgsIDQzNDAzLCA0MzQxOCwgNDM0MzMsIDQzNDQ4LCA0MzQ2MywgCi0gICAgNDM0NzgsIDQzNDkzLCA0MzUwOCwgNDM1MjMsIDQzNTM4LCA0MzU1MywgNDM1NjgsIDQzNTgzLCA0MzU5OCwgNDM2MTMsIAotICAgIDQzNjI4LCA0MzY0MywgNDM2NTgsIDQzNjczLCA0MzY4OCwgNDM3MDMsIDQzNzE4LCA0MzczMywgNDM3NDgsIDQzNzYzLCAKLSAgICA0Mzc3OCwgNDM3OTMsIDQzODA4LCA0MzgyMywgNDM4MzgsIDQzODUzLCA0Mzg2OCwgNDM4ODMsIDQzODk4LCA0MzkxMywgCi0gICAgNDM5MjgsIDQzOTQzLCA0Mzk1OCwgNDM5NzMsIDQzOTg4LCA0NDAwMywgNDQwMTgsIDQ0MDMzLCA0NDA0OCwgNDQwNjMsIAotICAgIDQ0MDc4LCA0NDA5MywgNDQxMDgsIDQ0MTIzLCA0NDEzOCwgNDQxNTMsIDQ0MTY4LCA0NDE4MywgNDQxOTgsIDQ0MjEzLCAKLSAgICA0NDIyOCwgNDQyNDMsIDQ0MjU4LCA0NDI3MywgNDQyODgsIDQ0MzAzLCA0NDMxOCwgNDQzMzMsIDQ0MzQ4LCA0NDM2MywgCi0gICAgNDQzNzgsIDQ0MzkzLCA0NDQwOCwgNDQ0MjMsIDQ0NDM4LCA0NDQ1MywgNDQ0NjgsIDQ0NDgzLCA0NDQ5OCwgNDQ1MTMsIAotICAgIDQ0NTI4LCA0NDU0MywgNDQ1NTgsIDQ0NTczLCA0NDU4OCwgNDQ2MDMsIDQ0NjE4LCA0NDYzMywgNDQ2NDgsIDQ0NjYzLCAKLSAgICA0NDY3OCwgNDQ2OTMsIDQ0NzA4LCA0NDcyMywgNDQ3MzgsIDQ0NzUzLCA0NDc2OCwgNDQ3ODMsIDQ0Nzk4LCA0NDgxMywgCi0gICAgNDQ4MjgsIDQ0ODQzLCA0NDg1OCwgNDQ4NzMsIDQ0ODg4LCA0NDkwMywgNDQ5MTgsIDQ0OTMzLCA0NDk0OCwgNDQ5NjMsIAotICAgIDQ0OTc4LCA0NDk5MywgNDUwMDgsIDQ1MDIzLCA0NTAzOCwgNDUwNTMsIDQ1MDY4LCA0NTA4MywgNDUwOTgsIDQ1MTEzLCAKLSAgICA0NTEyOCwgNDUxNDMsIDQ1MTU4LCA0NTE3MywgNDUxODgsIDQ1MjAzLCA0NTIxOCwgNDUyMzMsIDQ1MjQ4LCA0NTI2MywgCi0gICAgNDUyNzgsIDQ1MjkzLCA0NTMwOCwgNDUzMjMsIDQ1MzM4LCA0NTM1MywgNDUzNjgsIDQ1MzgzLCA0NTM5OCwgNDU0MTMsIAotICAgIDQ1NDI4LCA0NTQ0MywgNDU0NTgsIDQ1NDczLCA0NTQ4OCwgNDU1MDMsIDQ1NTE4LCA0NTUzMywgNDU1NDgsIDQ1NTYzLCAKLSAgICA0NTU3OCwgNDU1OTMsIDQ1NjA4LCA0NTYyMywgNDU2MzgsIDQ1NjUzLCA0NTY2OCwgNDU2ODMsIDQ1Njk4LCA0NTcxMywgCi0gICAgNDU3MjgsIDQ1NzQzLCA0NTc1OCwgNDU3NzMsIDQ1Nzg4LCA0NTgwMywgNDU4MTgsIDQ1ODMzLCA0NTg0OCwgNDU4NjMsIAotICAgIDQ1ODc4LCA0NTg5MywgNDU5MDgsIDQ1OTIzLCA0NTkzOCwgNDU5NTMsIDQ1OTY4LCA0NTk4MywgNDU5OTgsIDQ2MDEzLCAKLSAgICA0NjAyOCwgNDYwNDMsIDQ2MDU4LCA0NjA3MywgNDYwODgsIDQ2MTAzLCA0NjExOCwgNDYxMzMsIDQ2MTQ4LCA0NjE2MywgCi0gICAgNDYxNzgsIDQ2MTkzLCA0NjIwOCwgNDYyMjMsIDQ2MjM4LCA0NjI1MywgNDYyNjgsIDQ2MjgzLCA0NjI5OCwgNDYzMTMsIAotICAgIDQ2MzI4LCA0NjM0MywgNDYzNTgsIDQ2MzczLCA0NjM4OCwgNDY0MDMsIDQ2NDE4LCA0NjQzMywgNDY0NDgsIDQ2NDYzLCAKLSAgICA0NjQ3OCwgNDY0OTMsIDQ2NTA4LCA0NjUyMywgNDY1MzgsIDQ2NTUzLCA0NjU2OCwgNDY1ODMsIDQ2NTk4LCA0NjYxMywgCi0gICAgNDY2MjgsIDQ2NjQzLCA0NjY1OCwgNDY2NzMsIDQ2Njg4LCA0NjcwMywgNDY3MTgsIDQ2NzMzLCA0Njc0OCwgNDY3NjMsIAotICAgIDQ2Nzc4LCA0Njc5MywgNDY4MDgsIDQ2ODIzLCA0NjgzOCwgNDY4NTMsIDQ2ODY4LCA0Njg4MywgNDY4OTksIDQ2OTE1LCAKLSAgICA0NjkzMSwgNDY5NDcsIDQ2OTYzLCA0Njk3OSwgNDY5OTUsIDQ3MDExLCA0NzAyNywgNDcwNDMsIDQ3MDU5LCA0NzA3NSwgCi0gICAgNDcwOTEsIDQ3MTA3LCA0NzEyMywgNDcxMzksIDQ3MTU1LCA0NzE3MSwgNDcxODcsIDQ3MjAzLCA0NzIxOSwgNDcyMzUsIAotICAgIDQ3MjUxLCA0NzI2NywgNDcyODMsIDQ3Mjk5LCA0NzMxNSwgNDczMzEsIDQ3MzQ3LCA0NzM2MywgNDczNzksIDQ3Mzk1LCAKLSAgICA0NzQxMSwgNDc0MjcsIDQ3NDQzLCA0NzQ1OSwgNDc0NzUsIDQ3NDkxLCA0NzUwNywgNDc1MjMsIDQ3NTM5LCA0NzU1NSwgCi0gICAgNDc1NzEsIDQ3NTg3LCA0NzYwMywgNDc2MTksIDQ3NjM1LCA0NzY1MSwgNDc2NjcsIDQ3NjgzLCA0NzY5OSwgNDc3MTUsIAotICAgIDQ3NzMxLCA0Nzc0NywgNDc3NjMsIDQ3Nzc5LCA0Nzc5NSwgNDc4MTEsIDQ3ODI3LCA0Nzg0MywgNDc4NTksIDQ3ODc1LCAKLSAgICA0Nzg5MSwgNDc5MDcsIDQ3OTIzLCA0NzkzOSwgNDc5NTUsIDQ3OTcxLCA0Nzk4NywgNDgwMDMsIDQ4MDE5LCA0ODAzNSwgCi0gICAgNDgwNTEsIDQ4MDY3LCA0ODA4MywgNDgwOTksIDQ4MTE1LCA0ODEzMSwgNDgxNDcsIDQ4MTYzLCA0ODE3OSwgNDgxOTUsIAotICAgIDQ4MjExLCA0ODIyNywgNDgyNDMsIDQ4MjU5LCA0ODI3NSwgNDgyOTEsIDQ4MzA3LCA0ODMyMywgNDgzMzksIDQ4MzU1LCAKLSAgICA0ODM3MSwgNDgzODcsIDQ4NDAzLCA0ODQxOSwgNDg0MzUsIDQ4NDUxLCA0ODQ2NywgNDg0ODMsIDQ4NDk5LCA0ODUxNSwgCi0gICAgNDg1MzEsIDQ4NTQ3LCA0ODU2MywgNDg1NzksIDQ4NTk1LCA0ODYxMSwgNDg2MjcsIDQ4NjQzLCA0ODY1OSwgNDg2NzUsIAotICAgIDQ4NjkxLCA0ODcwNywgNDg3MjMsIDQ4NzM5LCA0ODc1NSwgNDg3NzEsIDQ4Nzg3LCA0ODgwMywgNDg4MTksIDQ4ODM1LCAKLSAgICA0ODg1MSwgNDg4NjcsIDQ4ODgzLCA0ODg5OSwgNDg5MTUsIDQ4OTMxLCA0ODk0NywgNDg5NjMsIDQ4OTc5LCA0ODk5NSwgCi0gICAgNDkwMTEsIDQ5MDI3LCA0OTA0MywgNDkwNTksIDQ5MDc1LCA0OTA5MSwgNDkxMDcsIDQ5MTIzLCA0OTEzOSwgNDkxNTUsIAotICAgIDQ5MTcxLCA0OTE4NywgNDkyMDMsIDQ5MjE5LCA0OTIzNSwgNDkyNTEsIDQ5MjY3LCA0OTI4MywgNDkyOTksIDQ5MzE1LCAKLSAgICA0OTMzMSwgNDkzNDcsIDQ5MzYzLCA0OTM3OSwgNDkzOTUsIDQ5NDExLCA0OTQyNywgNDk0NDMsIDQ5NDU5LCA0OTQ3NSwgCi0gICAgNDk0OTEsIDQ5NTA3LCA0OTUyMywgNDk1MzksIDQ5NTU1LCA0OTU3MSwgNDk1ODcsIDQ5NjAzLCA0OTYxOSwgNDk2MzUsIAotICAgIDQ5NjUxLCA0OTY2NywgNDk2ODMsIDQ5Njk5LCA0OTcxNSwgNDk3MzEsIDQ5NzQ3LCA0OTc2MywgNDk3NzksIDQ5Nzk1LCAKLSAgICA0OTgxMSwgNDk4MjcsIDQ5ODQzLCA0OTg1OSwgNDk4NzUsIDQ5ODkxLCA0OTkwNywgNDk5MjMsIDQ5OTM5LCA0OTk1NSwgCi0gICAgNDk5NzEsIDQ5OTg3LCA1MDAwMywgNTAwMTksIDUwMDM1LCA1MDA1MSwgNTAwNjcsIDUwMDgzLCA1MDA5OSwgNTAxMTUsIAotICAgIDUwMTMxLCA1MDE0NywgNTAxNjMsIDUwMTc5LCA1MDE5NSwgNTAyMTEsIDUwMjI3LCA1MDI0MywgNTAyNTksIDUwMjc1LCAKLSAgICA1MDI5MSwgNTAzMDcsIDUwMzIzLCA1MDMzOSwgNTAzNTUsIDUwMzcxLCA1MDM4NywgNTA0MDMsIDUwNDE5LCA1MDQzNSwgCi0gICAgNTA0NTEsIDUwNDY3LCA1MDQ4MywgNTA0OTksIDUwNTE1LCA1MDUzMSwgNTA1NDcsIDUwNTYzLCA1MDU3OSwgNTA1OTUsIAotICAgIDUwNjExLCA1MDYyNywgNTA2NDMsIDUwNjU5LCA1MDY3NSwgNTA2OTEsIDUwNzA3LCA1MDcyMywgNTA3MzksIDUwNzU1LCAKLSAgICA1MDc3MSwgNTA3ODcsIDUwODAzLCA1MDgxOSwgNTA4MzUsIDUwODUxLCA1MDg2NywgNTA4ODMsIDUwODk5LCA1MDkxNSwgCi0gICAgNTA5MzEsIDUwOTQ3LCA1MDk2MywgNTA5NzksIDUwOTk1LCA1MTAxMSwgNTEwMjcsIDUxMDQzLCA1MTA1OSwgNTEwNzUsIAotICAgIDUxMDkxLCA1MTEwNywgNTExMjMsIDUxMTM5LCA1MTE1NSwgNTExNzEsIDUxMTg3LCA1MTIwMywgNTEyMTksIDUxMjM1LCAKLSAgICA1MTI1MSwgNTEyNjcsIDUxMjgzLCA1MTI5OSwgNTEzMTUsIDUxMzMxLCA1MTM0NywgNTEzNjMsIDUxMzc5LCA1MTM5NSwgCi0gICAgNTE0MTEsIDUxNDI3LCA1MTQ0MywgNTE0NTksIDUxNDc1LCA1MTQ5MSwgNTE1MDcsIDUxNTIzLCA1MTUzOSwgNTE1NTUsIAotICAgIDUxNTcxLCA1MTU4NywgNTE2MDMsIDUxNjE5LCA1MTYzNSwgNTE2NTEsIDUxNjY3LCA1MTY4MywgNTE2OTksIDUxNzE1LCAKLSAgICA1MTczMSwgNTE3NDcsIDUxNzYzLCA1MTc3OSwgNTE3OTUsIDUxODExLCA1MTgyNywgNTE4NDMsIDUxODU5LCA1MTg3NSwgCi0gICAgNTE4OTEsIDUxOTA3LCA1MTkyMywgNTE5MzksIDUxOTU1LCA1MTk3MSwgNTE5ODcsIDUyMDAzLCA1MjAxOSwgNTIwMzUsIAotICAgIDUyMDUxLCA1MjA2NywgNTIwODMsIDUyMDk5LCA1MjExNSwgNTIxMzEsIDUyMTQ3LCA1MjE2MywgNTIxNzksIDUyMTk1LCAKLSAgICA1MjIxMSwgNTIyMjcsIDUyMjQzLCA1MjI1OSwgNTIyNzUsIDUyMjkxLCA1MjMwNywgNTIzMjMsIDUyMzM5LCA1MjM1NSwgCi0gICAgNTIzNzEsIDUyMzg3LCA1MjQwMywgNTI0MTksIDUyNDM1LCA1MjQ1MSwgNTI0NjcsIDUyNDgzLCA1MjQ5OSwgNTI1MTUsIAotICAgIDUyNTMxLCA1MjU0NywgNTI1NjMsIDUyNTc5LCA1MjU5NSwgNTI2MTEsIDUyNjI3LCA1MjY0MywgNTI2NTksIDUyNjc1LCAKLSAgICA1MjY5MSwgNTI3MDcsIDUyNzIzLCA1MjczOSwgNTI3NTUsIDUyNzcxLCA1Mjc4NywgNTI4MDMsIDUyODE5LCA1MjgzNSwgCi0gICAgNTI4NTEsIDUyODY3LCA1Mjg4MywgNTI4OTksIDUyOTE1LCA1MjkzMSwgNTI5NDcsIDUyOTYzLCA1Mjk3OSwgNTI5OTUsIAotICAgIDUzMDExLCA1MzAyNywgNTMwNDMsIDUzMDU5LCA1MzA3NSwgNTMwOTEsIDUzMTA3LCA1MzEyMywgNTMxMzksIDUzMTU1LCAKLSAgICA1MzE3MSwgNTMxODcsIDUzMjAzLCA1MzIxOSwgNTMyMzUsIDUzMjUxLCA1MzI2NywgNTMyODMsIDUzMjk5LCA1MzMxNSwgCi0gICAgNTMzMzEsIDUzMzQ3LCA1MzM2MywgNTMzNzksIDUzMzk1LCA1MzQxMSwgNTM0MjcsIDUzNDQzLCA1MzQ1OSwgNTM0NzUsIAotICAgIDUzNDkxLCA1MzUwNywgNTM1MjMsIDUzNTM5LCA1MzU1NSwgNTM1NzEsIDUzNTg3LCA1MzYwMywgNTM2MTksIDUzNjM1LCAKLSAgICA1MzY1MSwgNTM2NjcsIDUzNjgzLCA1MzY5OSwgNTM3MTUsIDUzNzMxLCA1Mzc0NywgNTM3NjMsIDUzNzc5LCA1Mzc5NSwgCi0gICAgNTM4MTEsIDUzODI3LCA1Mzg0MywgNTM4NTksIDUzODc1LCA1Mzg5MSwgNTM5MDcsIDUzOTIzLCA1MzkzOSwgNTM5NTUsIAotICAgIDUzOTcxLCA1Mzk4NywgNTQwMDMsIDU0MDE5LCA1NDAzNSwgNTQwNTEsIDU0MDY3LCA1NDA4MywgNTQwOTksIDU0MTE1LCAKLSAgICA1NDEzMSwgNTQxNDcsIDU0MTYzLCA1NDE3OSwgNTQxOTUsIDU0MjExLCA1NDIyNywgNTQyNDMsIDU0MjU5LCA1NDI3NSwgCi0gICAgNTQyOTEsIDU0MzA3LCA1NDMyMywgNTQzMzksIDU0MzU1LCA1NDM3MSwgNTQzODcsIDU0NDAzLCA1NDQxOSwgNTQ0MzUsIAotICAgIDU0NDUxLCA1NDQ2NywgNTQ0ODMsIDU0NDk5LCA1NDUxNSwgNTQ1MzEsIDU0NTQ3LCA1NDU2MywgNTQ1NzksIDU0NTk1LCAKLSAgICA1NDYxMSwgNTQ2MjcsIDU0NjQzLCA1NDY1OSwgNTQ2NzUsIDU0NjkxLCA1NDcwNywgNTQ3MjMsIDU0NzM5LCA1NDc1NSwgCi0gICAgNTQ3NzEsIDU0Nzg3LCA1NDgwMywgNTQ4MTksIDU0ODM1LCA1NDg1MSwgNTQ4NjcsIDU0ODgzLCA1NDg5OSwgNTQ5MTUsIAotICAgIDU0OTMxLCA1NDk0NywgNTQ5NjMsIDU0OTc5LCA1NDk5NSwgNTUwMTEsIDU1MDI3LCA1NTA0MywgNTUwNTksIDU1MDc1LCAKLSAgICA1NTA5MSwgNTUxMDcsIDU1MTIzLCA1NTEzOSwgNTUxNTUsIDU1MTcxLCA1NTE4NywgNTUyMDMsIDU1MjE5LCA1NTIzNSwgCi0gICAgNTUyNTEsIDU1MjY3LCA1NTI4MywgNTUyOTksIDU1MzE1LCA1NTMzMSwgNTUzNDcsIDU1MzYzLCA1NTM3OSwgNTUzOTUsIAotICAgIDU1NDExLCA1NTQyNywgNTU0NDMsIDU1NDU5LCA1NTQ3NSwgNTU0OTEsIDU1NTA3LCA1NTUyMywgNTU1MzksIDU1NTU1LCAKLSAgICA1NTU3MCwgMTQ5NjMsIDU1NTc5LCA1NTU4NSwgNTU1OTEsIDU1NjAxLCA1NTYwOSwgMTMxNDQsIDEzNjgzLCA4MzE5LCAKLSAgICA1NTYyMiwgMTQ4MywgNTU2MzAsIDI1Mzg1LCA1NjM3LCA1NTYzNiwgNTU2NDEsIDU1NjQ2LCA1NTY1MSwgNTU2NTYsIAotICAgIDU1NjYyLCA1NTY2NywgNTU2NzMsIDU1Njc4LCA1NTY4NCwgNTU2ODksIDU1Njk0LCA1NTY5OSwgNTU3MDQsIDU1NzEwLCAKLSAgICA1NTcxNSwgNTU3MjAsIDU1NzI1LCA1NTczMCwgNTU3MzUsIDU1NzQwLCA1NTc0NSwgNTU3NTEsIDU1NzU2LCA1NTc2MiwgCi0gICAgNTU3NjksIDI1MTUsIDU1Nzc0LCA1NTc4MCwgNjk0OCwgNTU3ODQsIDU1Nzg5LCA1NTc5NiwgNTU4MDQsIDQwLCA1NTgwOCwgCi0gICAgNTU4MTQsIDU1ODE5LCA1NTgyNCwgNTU4MjgsIDU1ODMzLCA1NTgzNywgNTU4NDEsIDkwMzcsIDU1ODQ1LCA1NTg1NSwgCi0gICAgNTU4NjgsIDU1ODc5LCA1NTg5MiwgNTU4OTksIDU1OTA1LCA1NTkxMCwgNTU5MTYsIDU1OTIyLCA1NTkyOCwgNTU5MzMsIAotICAgIDU1OTM4LCA1NTk0MywgNTU5NDgsIDU1OTUyLCA1NTk1NywgNTU5NjIsIDU1OTY3LCA1NTk3MywgNTU5NzksIDU1OTg1LCAKLSAgICA1NTk5MCwgNTU5OTQsIDU1OTk5LCA1NjAwNCwgNTYwMDgsIDU2MDEzLCA1NjAxOCwgNTYwMjMsIDU2MDI3LCA5MDUzLCAKLSAgICA5MDY0LCA5MDY5LCAxNTI2LCA1NjAzMSwgMTUzMSwgNTYwMzcsIDU2MDQwLCAxNTYyLCA1NjA0NiwgMTU2OCwgMTU3NCwgCi0gICAgOTA5OSwgNTYwNTEsIDU2MDU5LCA1NjA2NiwgNTYwNzAsIDU2MDc2LCA1NjA4MSwgMjg4MjQsIDU2MDg2LCA1NjA5MywgCi0gICAgNTYwOTgsIDU2MTAyLCA1NjEwNiwgMTU3OSwgMTQ1MzgsIDE0NTQ5LCA1NjExNSwgNTYxMjIsIDU2MTI3LCA1NjEzMSwgCi0gICAgMTQ1NjgsIDE1ODMsIDM0ODk3LCA1NjEzNCwgNTYxMzksIDU2MTQ5LCA1NjE1OCwgNTYxNjMsIDU2MTY3LCA1NjE3MywgCi0gICAgMTU4OCwgMzY3MTksIDU2MTc4LCA1NjE4NywgNTYxOTMsIDU2MTk4LCA5MjQ5LCA5MjU1LCA1NjIwNCwgNTYyMTYsIDU2MjMzLCAKLSAgICA1NjI1MCwgNTYyNjcsIDU2Mjg0LCA1NjMwMSwgNTYzMTgsIDU2MzM1LCA1NjM1MiwgNTYzNjksIDU2Mzg2LCA1NjQwMywgCi0gICAgNTY0MjAsIDU2NDM3LCA1NjQ1NCwgNTY0NzEsIDU2NDg4LCA1NjUwNSwgNTY1MjIsIDU2NTM5LCA1NjU1NiwgNTY1NzMsIAotICAgIDU2NTkwLCA1NjYwNywgNTY2MjQsIDU2NjQxLCA1NjY1OCwgNTY2NzUsIDU2NjkyLCA1NjcwOSwgNTY3MjYsIDU2NzQzLCAKLSAgICA1Njc2MCwgNTY3NzcsIDU2Nzk0LCA1NjgxMSwgNTY4MjgsIDU2ODQ1LCA1Njg2MiwgNTY4NzksIDU2ODk2LCA1NjkxMywgCi0gICAgNTY5MzAsIDU2OTQ3LCA1Njk2NCwgNTY5ODEsIDU2OTk4LCA1NzAxNSwgNTcwMzIsIDU3MDQ5LCA1NzA2MCwgNTcwNjUsIAotICAgIDE1OTMsIDU3MDY5LCA1NzA3NSwgNTcwODAsIDc2OTMsIDE1OTgsIDU3MDg1LCA1NzA5NCwgMjU2NjQsIDU3MDk5LCA1NzExMCwgCi0gICAgNTcxMjAsIDU3MTI1LCA1NzEzMiwgNTcxMzgsIDU3MTQzLCA1NzE0OCwgMTQ4MjAsIDU3MTUyLCA5MjY2LCAxNjAzLCA5MjcxLCAKLSAgICA1NzE1OCwgNTcxNjMsIDU3MTY5LCA1NzE3NCwgNTcxNzksIDU3MTg0LCA1NzE4OSwgNTcxOTQsIDU3MTk5LCA1NzIwNCwgCi0gICAgNTcyMTAsIDU3MjE2LCA1NzIyMiwgNTcyMjcsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ1LCA1NzI1MCwgNTcyNTUsIAotICAgIDU3MjYwLCA1NzI2NCwgNTcyNjksIDU3Mjc1LCA1NzI4MCwgNTcyODUsIDU3Mjg5LCA1NzI5NCwgNTcyOTksIDU3MzA1LCAKLSAgICA1NzMxMCwgNTczMTUsIDU3MzIxLCA1NzMyNywgNTczMzIsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NSwgCi0gICAgNTczNjAsIDU3MzY1LCA1NzM3MCwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTEsIDU3Mzk1LCA1NzQwMCwgNTc0MDUsIAotICAgIDU3NDEwLCAyNzAyNCwgNTc0MTQsIDU3NDE5LCA1NzQyNCwgNTc0MzAsIDU3NDM1LCA1NzQ0MCwgNTc0NDQsIDU3NDQ5LCAKLSAgICA1NzQ1NCwgNTc0NjAsIDU3NDY1LCA1NzQ3MCwgNTc0NzYsIDU3NDgyLCA1NzQ4NywgNTc0OTEsIDU3NDk2LCA1NzUwMSwgCi0gICAgNTc1MDUsIDU3NTEwLCA1NzUxNSwgNTc1MjAsIDU3NTI2LCA1NzUzMiwgNTc1MzcsIDU3NTQxLCA1NzU0NiwgNTc1NTEsIAotICAgIDU3NTU1LCA1NzU2MCwgNTc1NjUsIDU3NTcwLCA1NzU3NCwgNTc1NzcsIDI5Mzk1LCA1NzU4MiwgNTc1OTAsIDE0ODg2LCAKLSAgICAxNDkxMCwgOTM2MiwgNTc1OTYsIDU3NjA2LCA1NzYyMSwgOTM2NywgNTc2MzIsIDU3NjM3LCA1NzY0OCwgNTc2NjAsIAotICAgIDU3NjcyLCA1NzY4NCwgMjY0OSwgNTc2OTYsIDU3NzAxLCA1NzcwNSwgNTc3MTEsIDU3NzE3LCA1NzcyMiwgMTYxNSwgMTAxMCwgCi0gICAgNTc3MzEsIDU3NzM2LCAzNjc1OCwgNTc3NDAsIDU3NzQ0LCA1Nzc0OSwgNTc3NTMsIDE0OTcxLCA1Nzc1OCwgNTc3NjEsIAotICAgIDU3NzY5LCA1Nzc3NywgMTYxOSwgOTM5MiwgOTM5OCwgMTYyNCwgNTc3ODUsIDU3NzkyLCA1Nzc5NywgNTc4MDYsIDU3ODE2LCAKLSAgICA1NzgyMywgNTc4MjgsIDE2MjksIDU3ODM1LCA1Nzg0MCwgMTUwODYsIDU3ODQ0LCA1Nzg0OSwgNTc4NTYsIDU3ODYyLCAKLSAgICA1Nzg2NiwgNTc4NzcsIDU3ODg3LCAxNTEwOCwgNzYxNiwgNzYyMywgMTYzNCwgNTc4OTQsIDU3OTAwLCA1NzkwOCwgNTc5MTUsIAotICAgIDU3OTIxLCA1NzkyOCwgNTc5NDAsIDU3OTQ2LCA1Nzk1MSwgNTc5NjMsIDU3OTc0LCA1Nzk4MywgNTc5OTMsIDM2NjgsIAotICAgIDI4NjYwLCAyODY2OSwgMTUxNDgsIDE2MzksIDE2NDMsIDU4MDAxLCA1ODAxMiwgNTgwMTcsIDE2NDYsIDU4MDI1LCA1ODAzMCwgCi0gICAgNTgwNDIsIDU4MDQ4LCA1ODA1MywgNTgwNjEsIDE2NTEsIDU4MDY2LCA1ODA3MSwgNTgwNzksIDU4MDg3LCA1ODA5NCwgCi0gICAgNTgxMDMsIDU4MTExLCA1ODEyMCwgMTY1NiwgNTgxMjQsIDE2NjEsIDU4MTI5LCA1ODEzNiwgMTUyNjgsIDU4MTQ0LCAKLSAgICA1ODE1MCwgNTgxNTUsIDU4MTYzLCA1ODE3MCwgNTgxNzgsIDIwNjU4LCA1ODE4MywgOTUyNywgNTgxOTIsIDU4MTk4LCAKLSAgICA1ODIwNSwgNTgyMTIsIDU4MjE4LCA1ODIyOCwgNTgyMzQsIDU4MjM5LCA1ODI0NCwgNTgyNTIsIDk1MzYsIDk1NDEsIAotICAgIDU4MjYwLCA1ODI2NiwgNTgyNzQsIDM3MzMsIDM2ODQ2LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5OCwgNTgzMDUsIAotICAgIDEwMzU2LCA1ODMxMCwgNTgzMTYsIDE2NzIsIDU4MzIxLCA1ODMyNCwgMTA1OCwgNTgzMzAsIDU4MzM1LCA1ODM0MCwgCi0gICAgNTgzNDYsIDU4MzUxLCA1ODM1NiwgNTgzNjEsIDU4MzY2LCA1ODM3MSwgNTgzNzYsIDE2ODEsIDksIDU4MzgyLCA1ODM4NiwgCi0gICAgNTgzOTEsIDU4Mzk1LCA1ODM5OSwgNTg0MDMsIDI5NjQzLCA1ODQwOCwgNTg0MTMsIDU4NDE4LCA1ODQyMiwgNTg0MjUsIAotICAgIDU4NDI5LCA1ODQzMywgNTg0MzgsIDU4NDQyLCA1ODQ0NywgNTg0NTEsIDMyMzE1LCAzMjMyMCwgMzIzMjUsIDU4NDU0LCAKLSAgICA1ODQ2MSwgNTg0NjcsIDM2NTg1LCA1ODQ3NywgMzIzMzEsIDI5ODkxLCAyOTY1MywgMjk2NTksIDMyMzQ3LCAyOTY2NSwgCi0gICAgNTg0ODIsIDU4NDg3LCAyOTkyNCwgNTg0OTEsIDU4NDk0LCA1ODQ5OCwgNTg1MDUsIDU4NTA4LCA1ODUxMywgNTg1MTcsIAotICAgIDU4NTIxLCA1ODUyNCwgNTg1MzQsIDU4NTQ2LCA1ODU1MywgMzEyODIsIDU4NTU2LCAxMzkzNiwgODIxLCA1ODU1OSwgCi0gICAgNTg1NjMsIDU4NTY4LCA1ODU3MiwgNTg1NzUsIDExOTQ0LCA1ODU4MiwgNTg1ODksIDU4NjAyLCA1ODYxMCwgNTg2MTksIAotICAgIDU4NjI0LCA1ODYzNCwgNTg2NDcsIDU4NjU5LCA1ODY2NiwgNTg2NzEsIDU4NjgwLCA1ODY5MywgMzM3MzIsIDU4NzExLCAKLSAgICA1ODcxNiwgNTg3MjMsIDU4NzI5LCA1ODczNCwgNTg3NDIsIDU4NzQ5LCAyNTIyNCwgNjEzLCA1ODc1NSwgNTg3NjEsIAotICAgIDU4NzcxLCA1ODc3NywgNTg3ODIsIDI5NjgzLCA0NDgxLCAyOTY5NywgNTg3ODYsIDU4Nzk2LCA1ODgwMSwgNTg4MTEsIAotICAgIDU4ODI2LCA1ODgzMiwgNTg4MzgsIDI5NzA3LCA1ODg0MywgMjg4NTYsIDU4ODQ3LCA1ODg1MiwgNTg4NTcsIDU4ODYxLCAKLSAgICA1ODg2NiwgMTUxNTEsIDU4ODczLCA1ODg3OCwgNTg4ODIsIDQ1MjIsIDI5NzMzLCA1ODg4NiwgNTg4OTIsIDMyNywgNTg5MDIsIAotICAgIDU4OTA5LCA1ODkxNiwgNTg5MjEsIDU4OTMwLCA1NjE0MywgNTg5MzYsIDU4OTQ0LCA1ODk0OCwgNTg5NTIsIDU4OTU2LCAKLSAgICA1ODk2MCwgNTg5NjUsIDU4OTY5LCA1ODk3NSwgNTg5ODMsIDU4OTg4LCA1ODk5MywgNTg5OTcsIDU5MDAyLCA1OTAwNiwgCi0gICAgNTkwMTAsIDU5MDE2LCA1OTAyMiwgNTkwMjcsIDU5MDMxLCAyOTg1NywgNTkwMzYsIDI5ODYzLCAyOTg2OSwgNTkwNDEsIAotICAgIDU5MDQ3LCA1OTA1NCwgNTkwNTksIDU5MDYzLCAyODg3MywgMTQ4MTMsIDU5MDY2LCA1OTA3MCwgNTkwNzUsIDU5MDgyLCAKLSAgICA1OTA4OCwgNTkwOTIsIDU5MDk3LCAzNjI5NSwgNTkxMDMsIDU5MTA3LCA1OTExMSwgNTkxMTYsIDU5MTIyLCA1OTEyOCwgCi0gICAgNTkxNDAsIDU5MTQ5LCA1OTE1OSwgNTkxNjUsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg2LCA1OTE4OSwgNTkxOTUsIAotICAgIDU5MjAyLCA1OTIwNywgNTkyMTIsIDU5MjE5LCA1OTIyNiwgNTkyMzIsIDU5MjM3LCA1OTI0MiwgNTkyNTAsIDU5MjU1LCAKLSAgICAyMzc3LCA1OTI1OSwgNTkyNjQsIDU5MjcwLCA1OTI3NSwgNTkyODEsIDU5Mjg2LCA1OTI5MSwgNTkyOTYsIDU5MzAyLCAKLSAgICAyOTg5MCwgNTkzMDcsIDU5MzEzLCA1OTMxOSwgNTkzMjUsIDI5OTU0LCA1OTMzMCwgNTkzMzUsIDU5MzQwLCAyOTk2NSwgCi0gICAgNTkzNDUsIDU5MzUwLCA1OTM1NSwgNTkzNjEsIDU5MzY3LCAyOTk3MCwgNTkzNzIsIDU5Mzc3LCA1OTM4MiwgMzAwMjUsIAotICAgIDMwMDMxLCA1OTM4NywgNTkzOTIsIDMwMDM2LCA1OTM5NywgMjU4OTEsIDMwMDU4LCAzMDA2MiwgNTk0MDIsIDU5Mzc4LCAKLSAgICA1OTQwNiwgNTk0MTQsIDU5NDIwLCA1OTQyOCwgNTk0MzUsIDU5NDQxLCA1OTQ1MSwgNTk0NTcsIDU5NDY0LCA4OTg0LCAKLSAgICAzMDA3NiwgNTk0NzAsIDU5NDgzLCA1OTQ5MiwgNTk0OTgsIDU5NTA3LCA1OTUxMywgMjE1NzUsIDU5NTIwLCA1OTUyNywgCi0gICAgNTk1MzcsIDMwMDI2LCA1OTU0MCwgNTk1NDcsIDU5NTUyLCA1OTU1NiwgNTk1NjAsIDU5NTY1LCA0NTk4LCA1OTU2OSwgCi0gICAgNTk1NzQsIDU5NTc5LCAzMjQwOSwgMzI0MTQsIDU5NTgzLCAzMjQyOCwgNTk1ODgsIDMyNDMzLCA1OTU5MywgNTk1OTksIAotICAgIDMyNDQ1LCAzMjQ1MSwgMzI0NTcsIDU5NjA0LCA1OTYxMCwgMjA2MTksIDU5NjIxLCA1OTYyNCwgNTk2MzYsIDU5NjQ0LCAKLSAgICAzMDA5NCwgNTk2NDgsIDU5NjU3LCA1OTY2NywgNTk2NzYsIDMwMDk5LCA1OTY4MSwgNTk2ODgsIDU5Njk3LCA1OTcwMywgCi0gICAgNTk3MTEsIDU5NzE4LCA0NTczLCA0MzEwLCA1OTcyMywgMzAwMzcsIDU5NzI5LCA1OTczMiwgNTk3MzgsIDU5NzQ1LCAKLSAgICA1OTc1MCwgNTk3NTUsIDIxNTAyLCA1OTc1OSwgNTk3NjUsIDU5NzcxLCA1OTc3NiwgNTk3ODEsIDU5Nzg1LCA1OTc5MSwgCi0gICAgNTk3OTcsIDMxMTk2LCA4MjYsIDMzNDA2LCAzNDMwNCwgMzQzMTAsIDU5ODAyLCA1OTgwNiwgNTk4MTAsIDU5ODEzLCAKLSAgICA1OTgyNiwgNTk4MzIsIDU5ODM2LCA1OTgzOSwgNTk4NDQsIDMxNDk1LCA1OTg0OCwgMjg4NzgsIDE5NDQ2LCA1OTg1NCwgCi0gICAgNDUwMiwgNDUxMCwgNzQ3MiwgNTk4NTcsIDU5ODYyLCA1OTg2NywgNTk4NzIsIDU5ODc3LCA1OTg4MiwgNTk4ODcsIDU5ODkyLCAKLSAgICA1OTg5NywgNTk5MDIsIDU5OTA4LCA1OTkxMywgNTk5MTgsIDU5OTI0LCA1OTkyOSwgNTk5MzQsIDU5OTM5LCA1OTk0NCwgCi0gICAgNTk5NDksIDU5OTU0LCA1OTk2MCwgNTk5NjUsIDU5OTcxLCA1OTk3NiwgNTk5ODEsIDU5OTg2LCA1OTk5MSwgNTk5OTYsIAotICAgIDYwMDAxLCA2MDAwNiwgNjAwMTEsIDYwMDE2LCA2MDAyMSwgNjAwMjcsIDYwMDMyLCA2MDAzNywgNjAwNDIsIDYwMDQ3LCAKLSAgICA2MDA1MiwgNjAwNTcsIDYwMDYzLCA2MDA2OCwgNjAwNzMsIDYwMDc4LCA2MDA4MywgNjAwODgsIDYwMDkzLCA2MDA5OCwgCi0gICAgNjAxMDMsIDYwMTA4LCA2MDExNCwgNjAxMTksIDYwMTI0LCA2MDEyOSwgNjAxMzQsIDYwMTQwLCA2MDE0NiwgNjAxNTEsIAotICAgIDYwMTU3LCA2MDE2MiwgNjAxNjcsIDYwMTcyLCA2MDE3NywgNjAxODIsIDE0NzYsIDI0MCwgNjAxODcsIDYwMTkxLCA2MDE5NSwgCi0gICAgNjAxOTksIDIzMTU3LCA2MDIwMywgNjAyMDcsIDYwMjEyLCA2MDIxNiwgNjAyMjEsIDYwMjI1LCA2MDIyOSwgNjAyMzMsIAotICAgIDYwMjM4LCA2MDI0MiwgMTE2ODEsIDYwMjQ3LCA2MDI1MSwgNjAyNTgsIDEzNDQ0LCA2MDI2NywgNjAyNzYsIDYwMjgwLCAKLSAgICA2MDI4NSwgNjAyOTAsIDYwMjk0LCAyMjk2MCwgMjk1NywgNjAyOTgsIDYwMzA0LCA2MDMxMywgNjAzMjEsIDYwMzI3LCAKLSAgICA2MDMzOSwgNjAzNTEsIDYwMzU1LCA2MDM2MCwgNjAzNjQsIDYwMzcwLCA2MDM3NiwgNjAzODEsIDYwMzkxLCA2MDQwMSwgCi0gICAgNjA0MDcsIDYwNDEyLCA2MDQxNiwgNjA0MjEsIDYwNDI3LCA2MDQzNiwgNjA0NDUsIDYwNDUzLCAxMzc5OCwgNjA0NTcsIAotICAgIDYwNDY2LCA2MDQ3NCwgNjA0ODYsIDYwNDk3LCA2MDUwOCwgNjA1MTcsIDYwNTIxLCA2MDUzMCwgNjA1NDAsIDYwNTQ2LCAKLSAgICA2MDU1MSwgNjA1NTcsIDYwNTYyLCA5OCwgMjg3NzIsIDYwNTczLCAyNDIyOCwgMjQyMzgsIDYwNTc5LCA2MDU4NiwgNjA1OTIsIAotICAgIDYwNTk2LCA2MDYwNiwgNjA2MTcsIDYwNjI1LCA2MDYzNCwgNjA2MzksIDYwNjQ0LCA2MDY0OCwgMTU1MDQsIDYwNjU2LCAKLSAgICA2MDY2MCwgNjA2NjYsIDYwNjc2LCA2MDY4MywgNjA2ODksIDMyNTA4LCAxMTYyLCA2MDY5NSwgNjA2OTgsIDYwNzAyLCAKLSAgICA2MDcxMiwgNjA3MTgsIDYwNzI1LCAxMTYxOCwgNjA3MzIsIDYwNzM4LCA2MDc0NywgNjA3NTYsIDYwNzYyLCA2MDc2OCwgCi0gICAgNjA3NzQsIDYwNzc5LCA2MDc4NiwgNjA3OTMsIDYwNzk5LCA2MDgxMiwgNjA4MjEsIDYwODMwLCA2MDgzNSwgNjA4MzksIAotICAgIDYwODQ1LCA2MDg1MiwgNjA4NTksIDYwODY2LCA2MDg3MywgNjA4ODAsIDYwODg1LCA2MDg4OSwgNjA4OTMsIDYwODk2LCAKLSAgICA2MDkwNiwgNjA5MTAsIDYwOTIyLCA2MDkzMSwgNjA5MzUsIDYwOTQwLCA2MDk0NCwgNjA5NTAsIDYwOTU1LCA2MDk2MiwgCi0gICAgNjA5NzEsIDYwOTc5LCA2MDk4NywgNjA5OTIsIDYwOTk2LCA2MTAwMSwgNjEwMDYsIDYxMDE2LCA2MTAyNCwgNjEwMjksIAotICAgIDYxMDMzLCA2MTAzNywgNjEwNDMsIDYxMDU1LCA2MTA2MywgNjEwNzMsIDYxMDgwLCA2MTA4NiwgNjEwOTEsIDYxMDk1LCAKLSAgICA2MTA5OSwgNjExMDMsIDYxMTEyLCA2MTEyMSwgNjExMzAsIDYxMTM2LCA2MTE0MiwgNjExNDgsIDYxMTUzLCA2MTE2MCwgCi0gICAgNjExNjYsIDYxMTc0LCA2MTE4MSwgMTA3NzIsIDYxMTg3LCA2MTE5MywgNjExOTcsIDEyNTIzLCA2MTIwMSwgNjEyMDYsIAotICAgIDYxMjE2LCA2MTIyNSwgNjEyMzEsIDYxMjM3LCA2MTI0NSwgNjEyNTIsIDYxMjU2LCA2MTI2MCwgNjEyNjYsIDYxMjc0LCAKLSAgICA2MTI4MSwgNjEyODcsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIDYxMzEwLCA2MTMxMywgNjEzMTksIDYxMzI0LCA2MTMyOCwgCi0gICAgNjEzMzIsIDYxMzQxLCA2MTM0OSwgNjEzNTYsIDYxMzYyLCA2MTM2OSwgMjIwODcsIDM2MzM3LCA2MTM3NCwgNjEzODIsIAotICAgIDYxMzg2LCA2MTM4OSwgNjEzOTcsIDYxNDA0LCA2MTQxMCwgNjE0MTksIDYxNDI3LCA2MTQzMywgNjE0MzgsIDYxNDQyLCAKLSAgICA2MTQ0NywgNjE0NTEsIDYxNDU1LCA2MTQ2MCwgNjE0NjksIDYxNDczLCA2MTQ4MCwgNjE0ODcsIDYxNDkzLCA2MTUwMSwgCi0gICAgNjE1MDcsIDYxNTE4LCA2MTUyNiwgNjE1MzIsIDIwNzUzLCA2MTU0MSwgNjE1NDgsIDYxNTU1LCA2MTU2MiwgNjE1NjksIAotICAgIDYxNTc2LCAzOTI4OCwgMTE0NTYsIDYxNTgzLCA2MTU5MCwgNjE1OTUsIDMyNTQ0LCAzNzQ4NCwgNjE2MDEsIDYxNjA2LCAKLSAgICA2MTYxMSwgNjE2MTcsIDYxNjIzLCA2MTYyOSwgNjE2MzQsIDYxNjM5LCA2MTY0NCwgNjE2NDksIDYxNjU1LCA2MTY2MCwgCi0gICAgNjE2NjYsIDYxNjcxLCA2MTY3NywgNjE2ODIsIDYxNjg3LCA2MTY5MiwgNjE2OTcsIDYxNzAyLCA2MTcwNywgNjE3MTIsIAotICAgIDYxNzE4LCA2MTcyMywgNjE3MjksIDYxNzM0LCA2MTczOSwgNjE3NDQsIDYxNzQ5LCA2MTc1NCwgNjE3NTksIDYxNzY1LCAKLSAgICA2MTc3MCwgNjE3NzUsIDYxNzgwLCA2MTc4NSwgNjE3OTAsIDYxNzk1LCA2MTgwMCwgNjE4MDUsIDYxODEwLCA2MTgxNSwgCi0gICAgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQxLCA2MTg0NiwgNjE4NTEsIDYxODU2LCA2MTg2MSwgNjE4NjcsIAotICAgIDYxODcyLCA2MTg3NywgNjE4ODIsIDYxODg3LCA2MTg5MiwgNjE4OTcsIDYxOTAyLCA2MTkwNywgNjE5MTIsIDYxOTE3LCAKLSAgICA2MTkyMiwgNjE5MjcsIDYxOTMzLCAxNzk3LCAyMjQsIDM0OTkzLCA2MTkzOCwgNjE5NDEsIDYxOTQ2LCA2MTk1MCwgNjE5NTMsIAotICAgIDYxOTU4LCA2MDk4MywgNjE5NjksIDYxOTc5LCA2MTk4NiwgNjIwMDIsIDYyMDExLCA2MjAyMSwgNjIwMzEsIDYyMDM5LCAKLSAgICA2MjA0NywgNjIwNTEsIDYyMDU0LCA2MjA2MSwgNjIwNjcsIDYyMDc4LCA2MjA5MCwgNjIxMDEsIDYyMTEwLCA2MjExNywgCi0gICAgMTI4NiwgMjEzOTEsIDYyMTI3LCAyNTQ0LCA2MjEzMSwgNjIxNDAsIDExMjcsIDE1NDc3LCAzNTYyMiwgNjIxNDgsIDYyMTU2LCAKLSAgICA2MjE3MCwgNjIxODMsIDYyMTg3LCA2MjE5MiwgNjIxOTcsIDYyMjAyLCA2MjIwOCwgNjIyMTQsIDYyMjE5LCA2OTU3LCAKLSAgICA2MjIyNCwgNjIyMzIsIDkzOTMsIDYyMjM3LCA2MjI0MywgMTY4NCwgOTQwNSwgNzIzLCA2MjI1MiwgNjIyNjEsIDYyMjcxLCAKLSAgICAyNDk5MiwgNjIyODAsIDYyMjg2LCAxNTA2MywgNjIyOTIsIDYyMjk2LCAzODgxLCA5NzM2LCA2MjMwMiwgNTgwMDcsIAotICAgIDYyMzA5LCAzOTA1LCAxODQsIDEyNDQ0LCA2MjMxNSwgNjIzMjcsIDYyMzMxLCA2MjMzNywgMjU2ODQsIDYyMzQxLCA5NzI0LCAKLSAgICAyNjg0LCA0LCA2MjM0NiwgNjIzNTYsIDYyMzYyLCA2MjM3MywgNjIzODAsIDYyMzg2LCA2MjM5MiwgNjI0MDAsIDYyNDA3LCAKLSAgICA2MjQxMywgNjI0MjMsIDYyNDMzLCA2MjQ0MywgMTI5OCwgNjI0NTIsIDYyNDU4LCAyNzA3LCAyNzEzLCA2OTU0LCAyMjE4LCAKLSAgICA2MjQ2MiwgNjI0NjYsIDYyNDc1LCA2MjQ4MywgNjI0OTQsIDYyNTAyLCA2MjUxMCwgNjI1MTYsIDYyNTIxLCA2MjUzMiwgCi0gICAgNjI1NDMsIDYyNTUxLCA2MjU1NywgODA2MSwgNjI1NjIsIDYyNTcwLCA2MjU3NCwgNjI1NzgsIDYyNTkwLCAyNjA2MCwgCi0gICAgNjI1OTcsIDYyNjA3LCA2MjYxMywgNjI2MTksIDgxNjMsIDYyNjI5LCA2MjY0MCwgNjI2NTAsIDYyNjU5LCA2MjY2MywgCi0gICAgNjI2NzAsIDExMjksIDI1MzcsIDYyNjgwLCA2MjY4NSwgNjI2OTMsIDYyNzAxLCA2MjcxMiwgNjI3MTksIDYyNzMzLCAKLSAgICAxMjM2OSwgMzc5LCA2Mjc0MywgNjI3NDcsIDYyNzU2LCA2Mjc2NCwgNjI3NzAsIDYyNzg0LCA2Mjc5MSwgNjI3OTcsIAotICAgIDYyODA2LCA2MjgxMywgNjI4MjMsIDYyODMxLCAzNzQwLCAxODksIDYyODM5LCA2Mjg1MCwgNjI4NTQsIDYyODY2LCAyNTg4MiwgCi0gICAgMTU2LCA2Mjg3MiwgNjI4NzcsIDYyODgxLCA2Mjg4OCwgNjI4OTQsIDYyOTAyLCA2MjkwOSwgNzIyNiwgNjI5MTYsIDYyOTI1LCAKLSAgICA2MjkzMywgMzgwNiwgNjI5NDYsIDE1MTA5LCA2Mjk1MCwgMjc1MiwgNDI4LCA2Mjk1NSwgNjI5NjgsIDYyOTczLCAxNzk2LCAKLSAgICA2NDcsIDYyOTc3LCAzODEyLCA2Mjk4NSwgNjI5OTEsIDk2MywgNjMwMDEsIDYzMDEwLCA2MzAxNSwgMTMxNzgsIDEzMTg1LCAKLSAgICA0MjYyMCwgNjMwMTksIDM3NTAsIDExMzUwLCA2MzAyNywgNjMwMzQsIDIxNjE4LCA2MzAzOCwgNjMwNDUsIDYzMDUxLCAKLSAgICA2MzA1NiwgNjMwNjEsIDEzMTk4LCAzNTQsIDYzMDY2LCA2MzA3OCwgNjMwODQsIDYzMDkyLCAyNzY0LCAxNzE2LCA2MzEwMCwgCi0gICAgNjMxMDIsIDYzMTA3LCA2MzExMiwgNjMxMTcsIDYzMTIzLCA2MzEyOCwgNjMxMzMsIDYzMTM4LCA2MzE0MywgNjMxNDgsIAotICAgIDYzMTUzLCA2MzE1OSwgNjMxNjQsIDYzMTY5LCA2MzE3NCwgNjMxNzksIDYzMTg0LCA2MzE4OSwgNjMxOTQsIDYzMTk5LCAKLSAgICA2MzIwNSwgNjMyMTAsIDYzMjE1LCA2MzIyMCwgNjMyMjYsIDYzMjMxLCA2MzIzNywgNjMyNDIsIDYzMjQ3LCA2MzI1MiwgCi0gICAgNjMyNTcsIDYzMjYyLCA2MzI2NywgNjMyNzIsIDYzMjc4LCA2MzI4MywgNjMyODksIDYzMjk0LCA2MzI5OSwgNjMzMDQsIAotICAgIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI0LCA2MzMyOSwgNjMzMzUsIDYzMzQwLCA2MzM0NSwgNjMzNDksIDYzMzUzLCAKLSAgICA2MzM1OCwgNjMzNjIsIDYzMzY3LCA2MzM3MiwgNjMzNzgsIDYzMzgzLCA2MzM4NywgNjMzOTIsIDYzMzk2LCA2MzM5OSwgCi0gICAgNjM0MDEsIDYzNDA1LCA2MzQwOCwgNjM0MTMsIDYzNDE3LCA2MzQyMSwgNjM0MjUsIDYzNDI5LCA2MzQzOCwgNjM0NDIsIAotICAgIDMwMjg4LCA2MzQ0NSwgMzAyOTMsIDYzNDUyLCA2MzQ1NywgMzAyOTgsIDYzNDY2LCA2MzQ3NSwgMzAzMDQsIDYzNDgwLCAKLSAgICAzMDMwOSwgNjM0ODksIDYzNDk0LCA5OTE0LCA2MzQ5OCwgNjM1MDMsIDYzNTA4LCAzMDMxNCwgNjM1MTIsIDM3NjUwLCAKLSAgICA2MzUxNiwgNjM1MTksIDYzNTIzLCA2NjM4LCA2MzUyOSwgNjM1MzQsIDYzNTM4LCAzNjMzLCAzMDMxOSwgNjM1NDEsIAotICAgIDYzNTQ1LCA2MzU0OCwgNjM1NTMsIDYzNTU3LCA2MzU2MywgNjM1NzEsIDYzNTg0LCA2MzU5MywgNjM1OTksIDYzNjA0LCAKLSAgICA2MzYxMCwgNjM2MTQsIDYzNjIwLCA2MzYyOCwgNjM2MzMsIDYzNjQwLCA2MzY0NiwgNjM2NTQsIDYzNjYzLCA2MzY3MSwgCi0gICAgMzAzMjIsIDYzNjc4LCA2MzY4OCwgNjM2OTcsIDYzNzEwLCA2MzcxNSwgNjM3MjAsIDYzNzI5LCA2MzczNSwgNjM3NDIsIAotICAgIDYzNzUzLCA2Mzc2NSwgNjM3NzIsIDYzNzgxLCA2Mzc5MCwgNjM3OTksIDYzODA2LCA2MzgxMiwgNjM4MTksIDYzODI3LCAKLSAgICA2MzgzNCwgNjM4NDIsIDYzODUxLCA2Mzg1OSwgNjM4NjYsIDYzODc0LCA2Mzg4MywgNjM4OTEsIDYzOTAwLCA2MzkxMCwgCi0gICAgNjM5MTksIDYzOTI3LCA2MzkzNCwgNjM5NDIsIDYzOTUxLCA2Mzk1OSwgNjM5NjgsIDYzOTc4LCA2Mzk4NywgNjM5OTUsIAotICAgIDY0MDA0LCA2NDAxNCwgNjQwMjMsIDY0MDMzLCA2NDA0NCwgNjQwNTQsIDY0MDYzLCA2NDA3MSwgNjQwNzgsIDY0MDg2LCAKLSAgICA2NDA5NSwgNjQxMDMsIDY0MTEyLCA2NDEyMiwgNjQxMzEsIDY0MTM5LCA2NDE0OCwgNjQxNTgsIDY0MTY3LCA2NDE3NywgCi0gICAgNjQxODgsIDY0MTk4LCA2NDIwNywgNjQyMTUsIDY0MjI0LCA2NDIzNCwgNjQyNDMsIDY0MjUzLCA2NDI2NCwgNjQyNzQsIAotICAgIDY0MjgzLCA2NDI5MywgNjQzMDQsIDY0MzE0LCA2NDMyNSwgNjQzMzcsIDY0MzQ4LCA2NDM1OCwgNjQzNjcsIDY0Mzc1LCAKLSAgICA2NDM4MiwgNjQzOTAsIDY0Mzk5LCA2NDQwNywgNjQ0MTYsIDY0NDI2LCA2NDQzNSwgNjQ0NDMsIDY0NDUyLCA2NDQ2MiwgCi0gICAgNjQ0NzEsIDY0NDgxLCA2NDQ5MiwgNjQ1MDIsIDY0NTExLCA2NDUxOSwgNjQ1MjgsIDY0NTM4LCA2NDU0NywgNjQ1NTcsIAotICAgIDY0NTY4LCA2NDU3OCwgNjQ1ODcsIDY0NTk3LCA2NDYwOCwgNjQ2MTgsIDY0NjI5LCA2NDY0MSwgNjQ2NTIsIDY0NjYyLCAKLSAgICA2NDY3MSwgNjQ2NzksIDY0Njg4LCA2NDY5OCwgNjQ3MDcsIDY0NzE3LCA2NDcyOCwgNjQ3MzgsIDY0NzQ3LCA2NDc1NywgCi0gICAgNjQ3NjgsIDY0Nzc4LCA2NDc4OSwgNjQ4MDEsIDY0ODEyLCA2NDgyMiwgNjQ4MzEsIDY0ODQxLCA2NDg1MiwgNjQ4NjIsIAotICAgIDY0ODczLCA2NDg4NSwgNjQ4OTYsIDY0OTA2LCA2NDkxNywgNjQ5MjksIDY0OTQwLCA2NDk1MiwgNjQ5NjUsIDY0OTc3LCAKLSAgICA2NDk4OCwgNjQ5OTgsIDY1MDA3LCA2NTAxNSwgNjUwMjIsIDY1MDMwLCA2NTAzOSwgNjUwNDcsIDY1MDU2LCA2NTA2NiwgCi0gICAgNjUwNzUsIDY1MDgzLCA2NTA5MiwgNjUxMDIsIDY1MTExLCA2NTEyMSwgNjUxMzIsIDY1MTQyLCA2NTE1MSwgNjUxNTksIAotICAgIDY1MTY4LCA2NTE3OCwgNjUxODcsIDY1MTk3LCA2NTIwOCwgNjUyMTgsIDY1MjI3LCA2NTIzNywgNjUyNDgsIDY1MjU4LCAKLSAgICA2NTI2OSwgNjUyODEsIDY1MjkyLCA2NTMwMiwgNjUzMTEsIDY1MzE5LCA2NTMyOCwgNjUzMzgsIDY1MzQ3LCA2NTM1NywgCi0gICAgNjUzNjgsIDY1Mzc4LCA2NTM4NywgNjUzOTcsIDY1NDA4LCA2NTQxOCwgNjU0MjksIDY1NDQxLCA2NTQ1MiwgNjU0NjIsIAotICAgIDY1NDcxLCA2NTQ4MSwgNjU0OTIsIDY1NTAyLCA2NTUxMywgNjU1MjUsIDY1NTM2LCA2NTU0NiwgNjU1NTcsIDY1NTY5LCAKLSAgICA2NTU4MCwgNjU1OTIsIDY1NjA1LCA2NTYxNywgNjU2MjgsIDY1NjM4LCA2NTY0NywgNjU2NTUsIDY1NjY0LCA2NTY3NCwgCi0gICAgNjU2ODMsIDY1NjkzLCA2NTcwNCwgNjU3MTQsIDY1NzIzLCA2NTczMywgNjU3NDQsIDY1NzU0LCA2NTc2NSwgNjU3NzcsIAotICAgIDY1Nzg4LCA2NTc5OCwgNjU4MDcsIDY1ODE3LCA2NTgyOCwgNjU4MzgsIDY1ODQ5LCA2NTg2MSwgNjU4NzIsIDY1ODgyLCAKLSAgICA2NTg5MywgNjU5MDUsIDY1OTE2LCA2NTkyOCwgNjU5NDEsIDY1OTUzLCA2NTk2NCwgNjU5NzQsIDY1OTgzLCA2NTk5MywgCi0gICAgNjYwMDQsIDY2MDE0LCA2NjAyNSwgNjYwMzcsIDY2MDQ4LCA2NjA1OCwgNjYwNjksIDY2MDgxLCA2NjA5MiwgNjYxMDQsIAotICAgIDY2MTE3LCA2NjEyOSwgNjYxNDAsIDY2MTUwLCA2NjE2MSwgNjYxNzMsIDY2MTg0LCA2NjE5NiwgNjYyMDksIDY2MjIxLCAKLSAgICA2NjIzMiwgNjYyNDQsIDY2MjU3LCA2NjI2OSwgNjYyODIsIDY2Mjk2LCA2NjMwOSwgNjYzMjEsIDY2MzMyLCA2NjM0MiwgCi0gICAgNjYzNTEsIDY2MzU5LCA2NjM2NiwgNjYzNzEsIDY0ODksIDY2Mzc4LCAzMDMzMiwgNjYzODMsIDY2Mzg4LCAzMDMzNywgCi0gICAgNjYzOTQsIDE5MTAwLCAzMDM0MiwgNjYzOTksIDY2NDA1LCA2NjQxMywgNjY0MTksIDY2NDI1LCA2NjQzMiwgNjY0MzksIAotICAgIDY2NDQ0LCA2NjQ0OCwgNjY0NTEsIDY2NDU1LCA2NjQ2NCwgNjY0NzAsIDY2NDgyLCA2NjQ5MywgNjY0OTcsIDMwMTksIAotICAgIDY0NjQsIDY2NTAyLCA2NjUwNSwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTksIDIzOTI3LCA2NjUyNCwgNjY1MjgsIAotICAgIDY2NTMxLCA2NjUzNiwgNjY1NDAsIDY2NTQ3LCA2NjU1MywgNjY1NTcsIDY2NTYxLCA2NjU2NCwgMzAzNTksIDY2NTY5LCAKLSAgICA2NjU3NiwgNjY1ODUsIDY2NTkzLCA2NjYwNCwgNjY2MTIsIDY2NjIwLCA2NjYyNywgNjY2MzQsIDY2NjQwLCA2NjY1MSwgCi0gICAgMzAzNjQsIDY2NjU2LCA2NjY2NywgNjY2NzksIDY2Njg3LCA2NjY5OCwgNjY3MDcsIDY2NzE4LCA2NjcyMywgNjY3MzEsIAotICAgIDI1MTAsIDY2NzM2LCAzMjAwMiwgNjY3NDksIDY2NzUzLCA2Njc2NSwgNjY3NzMsIDY2Nzc4LCA2Njc4NiwgMTU2NjQsIAotICAgIDY2Nzk3LCA2NjgwMywgNjY4MTAsIDY2ODE4LCA2NjgyNCwgMzAzNzQsIDY2ODI5LCAzODMxLCA1NTYwNSwgNjY4MzYsIAotICAgIDY2ODM5LCA2Njg0NywgNjY4NjAsIDY2ODczLCA2Njg4NiwgNjY4OTksIDY2OTA2LCA2NjkxNywgNjY5MjYsIDM5MTA1LCAKLSAgICAzOTExMCwgNjY5MzEsIDY2OTM1LCA2Njk0MywgNjY5NTAsIDY2OTU5LCA2Njk2NywgNjY5NzMsIDY2OTgyLCA2Njk5MCwgCi0gICAgNjY5OTgsIDY3MDAyLCA2NzAxMSwgNjcwMjAsIDY3MDMwLCA2NzA0MywgNjcwNTYsIDY3MDY2LCAzMDM3OSwgNjcwNzIsIAotICAgIDY3MDc5LCA2NzA4NSwgMzAzODUsIDY3MDkwLCA2NzA5MywgNjcwOTcsIDY3MTA1LCA2NzExNCwgMzg4NDMsIDY3MTIyLCAKLSAgICA2NzEzMSwgNjcxMzksIDY3MTQ2LCA2NzE1NCwgNjcxNjQsIDY3MTczLCA2NzE4MiwgNjcxOTEsIDY3MTk5LCA2NzIxMCwgCi0gICAgNjcyMjAsIDc3MzMsIDE5NzE1LCA2NzIyOSwgNjcyMzQsIDY3MjM5LCA2NzI0MywgNjcyNDcsIDY3MjUyLCA2NzI1OCwgCi0gICAgNjcyNjMsIDY3MjY4LCA2NzI3NCwgNjcyNzksIDY3Mjg0LCAxOTY4MCwgNjcyODksIDY3Mjk2LCA2NzMwNCwgNjczMTIsIAotICAgIDY3MzE3LCA2NzMyNCwgNjczMzEsIDY3MzM1LCA2NzMzOSwgNjczNDcsIDY3MzU1LCAzMDQwMiwgNjczNjEsIDY3MzY3LCAKLSAgICA2NzM3OSwgNjczODUsIDY3Mzg5LCA2NzM5NiwgNjc0MDEsIDY3NDEyLCA2NzQyMiwgNjc0MzIsIDY3NDQ0LCA2NzQ1MCwgCi0gICAgNjc0NjAsIDY3NDcwLCAzMDQyOSwgNjc0NzksIDY3NDg4LCA2NzQ5NCwgNjc1MDYsIDY3NTE3LCA2NzUyNCwgNjc1MjksIAotICAgIDY3NTMzLCA2NzU0MSwgNjc1NDcsIDY3NTUyLCA2NzU1NywgNjc1NjQsIDY3NTcyLCA2NzU4NCwgNjc1OTQsIDY3NjAzLCAKLSAgICA2NzYxMiwgNjc2MTksIDMxODY2LCAyMTkwNiwgNjc2MjUsIDY3NjMwLCA2NzYzNCwgNjc2MzgsIDY3NjQzLCA2NzY0OSwgCi0gICAgNjc2NjAsIDY3NjczLCA2NzY3OCwgNjc2ODUsIDMwNDM0LCA2NzY5MCwgNjc3MDIsIDY3NzExLCA2NzcyMSwgNjc3MzIsIAotICAgIDY3NzQ1LCA2Nzc1MiwgNjc3NjEsIDY3NzcwLCA2Nzc3OCwgNjc3ODMsIDY3Nzg5LCAxNDY1LCA2Nzc5NCwgNjc3OTksIAotICAgIDY3ODA0LCA2NzgwOSwgNjc4MTUsIDY3ODIwLCA2NzgyNSwgNjc4MzEsIDY3ODM3LCA2Nzg0MiwgNjc4NDYsIDY3ODUxLCAKLSAgICA2Nzg1NiwgNjc4NjEsIDU2MTExLCA2Nzg2NiwgNjc4NzEsIDY3ODc2LCA2Nzg4MSwgNjc4ODcsIDY3ODkzLCA2Nzg5OCwgCi0gICAgNjc5MDIsIDY3OTA3LCA2NzkxMiwgNjc5MTcsIDY3OTIzLCA2NzkyOCwgNjc5MzQsIDY3OTM5LCA2Nzk0NCwgNjc5NDksIAotICAgIDY3OTU0LCA2Nzk1OCwgNjc5NjQsIDY3OTY5LCA2Nzk3OCwgNjc5ODMsIDY3OTg4LCA2Nzk5MywgNjc5OTgsIDY4MDAyLCAKLSAgICA2ODAwOSwgNjgwMTUsIDE1MzI2LCAxNTMzMywgNDI4NzUsIDY4MDIwLCA2Nzk3MCwgNjgwMjIsIDY4MDMyLCAzMDQ0MywgCi0gICAgNjgwMzUsIDY4MDQ0LCA2ODA1MCwgNDYxNywgMzA0NDgsIDY4MDU0LCA2ODA2MCwgNjgwNjYsIDY4MDcxLCA2ODA3NSwgCi0gICAgNjgwODIsIDY4MDg3LCA2ODA5NywgNjgxMDYsIDY4MTEwLCA2ODExNiwgNjgxMjIsIDY4MTI4LCA2ODEzMiwgNjgxNDAsIAotICAgIDY4MTQ3LCA2ODE1NSwgNjgxNjMsIDMwNDUzLCA2ODE3MCwgNjgxNzMsIDY4MTgwLCA2ODE4NiwgNjgxOTEsIDY4MTk1LCAKLSAgICA2ODIwMSwgNjgyMDgsIDY4MjEzLCA2ODIxNywgNjgyMjYsIDY4MjM0LCA2ODI0MCwgNjgyNDUsIDMwNDU4LCA2ODI1MiwgCi0gICAgNjgyNTksIDY4MjY1LCA2ODI3MCwgNjgyNzYsIDY4MjgzLCA2ODI4OSwgMTk0NTMsIDI1NDA4LCA2ODI5NSwgNjgzMDAsIAotICAgIDY4MzA2LCA2ODMxOCwgNjgwMDMsIDY4MDEwLCA2ODMyOCwgNjgzMzMsIDY4MzQwLCA2ODM0NywgNjgzNTMsIDY4MzY0LCAKLSAgICA2ODM2OSwgNzUwMiwgNjgzNzcsIDY4MzgwLCA2ODM4NiwgNjgzOTAsIDY4Mzk0LCA2ODM5NywgNjg0MDMsIDMwMjA3LCAKLSAgICA0NjU2LCA5MTMsIDExNzMxLCA2ODQxMCwgNjg0MTYsIDY4NDIyLCA2ODQyOCwgNjg0MzQsIDY4NDQwLCA2ODQ0NiwgNjg0NTIsIAotICAgIDY4NDU4LCA2ODQ2MywgNjg0NjgsIDY4NDczLCA2ODQ3OCwgNjg0ODMsIDY4NDg4LCA2ODQ5MywgNjg0OTgsIDY4NTAzLCAKLSAgICA2ODUwOCwgNjg1MTMsIDY4NTE4LCA2ODUyMywgNjg1MjksIDY4NTM0LCA2ODUzOSwgNjg1NDUsIDY4NTUwLCA2ODU1NSwgCi0gICAgNjg1NjEsIDY4NTY3LCA2ODU3MywgNjg1NzksIDY4NTg1LCA2ODU5MSwgNjg1OTcsIDY4NjAzLCA2ODYwOSwgNjg2MTQsIAotICAgIDY4NjE5LCA2ODYyNSwgNjg2MzAsIDY4NjM1LCA2ODY0MSwgNjg2NDYsIDY4NjUxLCA2ODY1NiwgNjg2NjEsIDY4NjY2LCAKLSAgICA2ODY3MSwgNjg2NzYsIDY4NjgxLCA2ODY4NiwgNjg2OTEsIDY4Njk2LCA2ODcwMSwgNjg3MDcsIDY4NzEyLCA2ODcxNywgCi0gICAgNjg3MjIsIDY4NzI4LCA2ODczMywgNjg3MzgsIDY4NzQzLCA2ODc0OCwgNjg3NTQsIDY4NzU5LCA2ODc2NCwgNjg3NjksIAotICAgIDY4Nzc0LCA2ODc3OSwgNjg3ODQsIDY4Nzg5LCA2ODc5NCwgNjg3OTksIDY4ODA0LCA2ODgwOSwgNjg4MTQsIDY4ODE5LCAKLSAgICA2ODgyNCwgNjg4MjksIDY4ODM0LCA2ODgzOSwgNjg4NDQsIDY4ODQ5LCA2ODg1NSwgNjg4NjAsIDY4ODY1LCA2ODg3MCwgCi0gICAgNjg4NzUsIDY4ODgwLCA2ODg4NSwgNjg4OTAsIDE4MjcsIDE0MywgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDgsIDY4OTE2LCAKLSAgICA2ODkyMCwgNjg5MjcsIDY4OTM1LCA2ODkzOSwgNjg5NTIsIDY4OTYwLCA2ODk2NCwgNjg5NjcsIDY4OTcyLCA2ODk3NiwgCi0gICAgNjg5ODEsIDY4OTg1LCA2ODk5MywgNjg5OTcsIDE5MTA4LCA2OTAwMiwgNTgyNzAsIDY5MDA2LCA2OTAwOSwgNjkwMTcsIAotICAgIDY5MDI1LCA2OTAzMywgNjkwMzgsIDY5MDQ1LCA2OTA1MSwgNjkwNTcsIDY5MDYyLCA2OTA2NywgNjkwNzUsIDYyMTc1LCAKLSAgICA2OTA4MiwgNjkwODcsIDY5MDkyLCA2OTA5NiwgOTk4MSwgNjkxMDAsIDY5MTA1LCA2OTExMCwgNjkxMTQsIDY5MTE3LCAKLSAgICA2OTEyMywgNjkxMjcsIDY5MTM3LCA2OTE0NiwgNjkxNDksIDY5MTU2LCA2OTE2OSwgNjkxNzUsIDY5MTgzLCA2OTE5NCwgCi0gICAgNjkyMDUsIDY5MjE2LCA2OTIyNywgNjkyMzYsIDY5MjQyLCA2OTI1MSwgNjkyNTksIDY5MjY5LCA2OTI4MiwgNjkyODksIAotICAgIDY5MzAwLCA2OTMwNiwgNjkzMTEsIDY5MzE2LCA2OTMyMiwgNjkzMjgsIDY5MzM4LCA2OTM0NywgNjc2OTIsIDY5MzU1LCAKLSAgICA2OTM2MSwgNjkzNjksIDY5Mzc1LCA2OTM4MywgNjkzODcsIDY5MzkxLCA2OTM5NCwgNjk0MDAsIDY5NDA2LCA2OTQxNCwgCi0gICAgNjk0MjYsIDY5NDM4LCA2OTQ0NSwgNjk0NDksIDY5NDYwLCA2OTQ2OCwgNjk0NzUsIDY5NDg3LCA2OTQ5NSwgNjk1MDMsIAotICAgIDY5NTEwLCA2OTUxNiwgNjk1MjYsIDY5NTM1LCA2OTU0MCwgNjk1NTAsIDY5NTU5LCAzODE4NCwgNjk1NjYsIDY5NTcwLCAKLSAgICA2OTU3NSwgNjk1ODMsIDY5NTkwLCA2OTU5NiwgNjk2MDAsIDY5NjEwLCA2OTYyMSwgNjk2MjksIDY5NjM2LCA2OTY0OCwgCi0gICAgNjk2NjAsIDY5NjY5LCA2NjczOSwgNjk2NzYsIDY5Njg3LCA2OTcwMSwgNjk3MDksIDY5NzE5LCA2OTcyNiwgNjk3MzQsIAotICAgIDY5NzQ2LCA2OTc1NSwgNjk3NjMsIDY5NzczLCA2OTc4MiwgNjk3OTMsIDY5ODA1LCA2OTgxNCwgNjk4MjQsIDY5ODMxLCAKLSAgICA2OTg0MCwgNjk4NTUsIDY5ODY1LCA2OTg3NCwgNjk4ODIsIDY5ODk1LCA2OTkxMCwgNjk5MTQsIDY5OTIzLCA2OTkzNSwgCi0gICAgNjk5NDYsIDY5OTU3LCA2OTk2OCwgNjk5NzgsIDY5OTg5LCA2OTk5NywgNzAwMDMsIDcwMDEzLCA3MDAxOSwgMjY5MjMsIAotICAgIDcwMDI0LCA3MDAzMCwgNzAwMzUsIDcwMDQyLCA4MDc1LCAxNTY4NCwgNzAwNDgsIDcwMDU3LCA3MDA2MiwgNzAwNjYsIAotICAgIDcwMDczLCA3MDA3OSwgNzAwODQsIDcwMDkyLCA3MDEwMCwgNzAxMDQsIDcwMTA3LCA3MDExMCwgNzAxMTIsIDcwMTE5LCAKLSAgICA3MDEyNSwgNzAxMzYsIDcwMTQxLCA3MDE0NSwgNzAxNTIsIDcwMTU4LCA3MDE2MywgNzAxNzEsIDYyNjQyLCA2MjY1MiwgCi0gICAgNzAxNzcsIDcwMTg0LCA3MDE5NCwgODk3MSwgNzAyMDEsIDcwMjA2LCAyNzExMywgNzAyMTUsIDcwMjIwLCA3MDIyNywgCi0gICAgNzAyMzcsIDcwMjQ1LCA3MDI1MywgNzAyNjIsIDcwMjY4LCA3MDI3NCwgNzAyODEsIDcwMjg4LCA3MDI5MywgNzAyOTcsIAotICAgIDcwMzA1LCA3MDMxMCwgNzAzMTUsIDcwMzIzLCA3MDMzMCwgNzAzMzUsIDcwMzQxLCA3MDM0NCwgNzAzNDgsIDcwMzU3LCAKLSAgICA2ODk0NywgNzAzNjYsIDcwMzcwLCA3MDM3NiwgNzAzODcsIDcwMzk3LCAxNTY5MywgNzA0MDgsIDcwNDE2LCAxNTcwNSwgCi0gICAgNzA0MjMsIDcwNDI3LCA3MDQzNiwgMjUyOTQsIDcwNDQzLCA3MDQ0NywgNzA0NTIsIDcwNDY5LCA3MDQ4MSwgODkyNSwgCi0gICAgNzA0OTMsIDcwNDk4LCA3MDUwMywgNzA1MDgsIDcwNTEyLCA3MDUxNSwgNzA1MjAsIDcwNTI1LCA3MDUzMSwgNzA1MzYsIAotICAgIDQzMjQsIDE5MTgxLCA3MDU0MSwgNzA1NDYsIDcwNTUyLCA3MDU1OSwgNzA1NjQsIDcwNTY5LCA3MDU3NSwgNzA1ODEsIAotICAgIDcwNTg3LCA3MDU5MiwgNzA1OTgsIDcwNjAyLCA3MDYxNiwgNzA2MjQsIDcwNjMyLCA3MDYzOCwgNzA2NDMsIDcwNjUwLCAKLSAgICA3MDY2MCwgNzA2NjksIDcwNjc0LCA3MDY3OSwgNzA2ODcsIDcwNjkyLCA3MDY5OCwgNzA3MDMsIDcwNzEyLCA1NzE1NCwgCi0gICAgNzA3MTcsIDcwNzIwLCA3MDczOCwgNzA3NTcsIDcwNzcwLCA3MDc4NCwgNzA4MDAsIDcwODA3LCA3MDgxNCwgNzA4MjAsIAotICAgIDcwODI3LCA3MDgzMiwgNzA4MzgsIDcwODQ0LCA3MDg1MiwgNzA4NTgsIDcwODYzLCA3MDg2OCwgNzA4ODQsIDg5MzgsIAotICAgIDcwODk4LCA3MDkwNSwgNzA5MTMsIDcwOTE5LCA3MDkyMywgNzA5MjYsIDcwOTMxLCA3MDkzNiwgNzA5NDMsIDcwOTQ4LCAKLSAgICA3MDk1NywgNzA5NjIsIDcwOTY4LCA3MDk3NywgNzA5ODYsIDcwOTkxLCA3MDk5NSwgNzEwMDMsIDEwMDA1LCA3MTAxMiwgCi0gICAgNzEwMjAsIDcxMDI1LCA3MTAzMSwgMTAwMTYsIDcxMDM2LCA3MTAzOSwgNzEwNDQsIDcxMDU0LCA3MTA2MywgNzEwNjgsIAotICAgIDcxMDc0LCA3MTA3OSwgNzEwODcsIDcxMDk0LCA3MTEwNSwgNzExMTUsIDcxMTIwLCA2MjEwMywgNzExMjUsIDcxMTMxLCAKLSAgICA3MTEzNiwgNzExNDMsIDcxMTUyLCA3MTE2MCwgNzExNjYsIDcxMTczLCA3MTE3OSwgNzExODMsIDE1MTYxLCAyOTkzLCAKLSAgICA3MTE4OCwgNzExOTIsIDcxMTk4LCA3MTIwNywgNzEyMTMsIDcxMjIwLCA3MTIyNCwgNzEyNDUsIDcxMjY3LCA3MTI4MywgCi0gICAgNzEzMDAsIDcxMzE5LCA3MTMyOCwgNzEzMzgsIDcxMzQ1LCA3MTM1MiwgMjUxODEsIDcxMzU4LCA3MTM2MiwgNzEzNzAsIAotICAgIDcxMzgyLCA3MTM4OCwgNzEzOTYsIDcxNDAwLCA3MTQwOCwgNzE0MTUsIDcxNDE5LCA3MTQyNSwgNzE0MzEsIDcxNDM2LCAKLSAgICAzNDk4LCAzOTMwNSwgNzE0NDIsIDcxNDQ2LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc1LCAKLSAgICA3MTQ4MSwgNzE0ODcsIDcxNDk0LCA3MTUwMCwgNzE1MDcsIDcxNTEzLCA3MTUxOSwgNzE1MjQsIDcxNTMwLCA3MTUzNSwgCi0gICAgNzE1NDAsIDcxNTQ0LCA3MTU0OSwgMzkzMjAsIDcxNTUzLCA3MTU1OCwgNzE1NjYsIDcxNTcwLCA3MTU3NSwgNzE1ODIsIAotICAgIDcxNTkxLCA3MTU5NywgNzE2MDQsIDcxNjA4LCA3MTYxMSwgNzE2MTgsIDcxNjI3LCA3MTYzMiwgNzE2MzYsIDcxNjQ0LCAKLSAgICA3MTY1MywgNzE2NTcsIDcxNjY1LCA3MTY3MSwgNzE2NzYsIDcxNjgxLCA3MTY4NywgNzE2OTMsIDcxNjk4LCA3MTcwMiwgCi0gICAgNzE3MDgsIDcxNzEzLCA3MTcxNywgNzE3MjEsIDcxNzI0LCA3MTcyOSwgNzE3MzcsIDcxNzQ3LCA3MTc1MiwgMzY4NjUsIAotICAgIDcxNzYwLCA3MTc3MiwgNzE3NzYsIDcxNzgyLCA3MTc5NCwgNzE4MDUsIDcxODEyLCA3MTgxOCwgNzE4MjUsIDcxODM3LCAKLSAgICA3MTg0NCwgNzE4NTAsIDE5MjU1LCA3MTg1NCwgNzE4NjAsIDcxODY3LCA3MTg3MywgNzE4NzksIDcxODg0LCA3MTg4OSwgCi0gICAgNzE4OTQsIDcxOTAzLCA1NDkxLCA3MTkwOCwgMTQ2MjcsIDcxOTE0LCA3MTkxOCwgNzE5MjYsIDcxOTM1LCA3MTkzOSwgCi0gICAgNzE5NDYsIDcxOTU1LCA3MTk2OCwgNzE5NzQsIDcxNTQ1LCAyNzk2MiwgNzE5NzksIDcxOTgxLCA3MTk4NiwgNzE5OTEsIAotICAgIDcxOTk2LCA3MjAwMSwgNzIwMDYsIDcyMDExLCA3MjAxNiwgNzIwMjEsIDcyMDI2LCA3MjAzMSwgNzIwMzYsIDcyMDQxLCAKLSAgICA3MjA0NiwgNzIwNTEsIDcyMDU3LCA3MjA2MiwgNzIwNjcsIDcyMDcyLCA3MjA3NywgNzIwODIsIDcyMDg3LCA3MjA5MiwgCi0gICAgNzIwOTcsIDcyMTAzLCA3MjEwOSwgNzIxMTUsIDcyMTIwLCA3MjEyNSwgNzIxMzcsIDcyMTQyLCAxODMzLCA2NywgNzIxNDcsIAotICAgIDcyMTUyLCAzMDQ4NSwgMzA0OTAsIDMwNDk1LCAzMDUwMSwgMzA1MDYsIDcyMTU2LCAzMDUxMSwgMjAyMjYsIDcyMTc4LCAKLSAgICA3MjE4MiwgNzIxODYsIDcyMTkxLCA3MjE5NSwgMzA1MTUsIDcyMTk5LCA3MjIwNywgMzA1MjAsIDcyMjE0LCA3MjIxNywgCi0gICAgNzIyMjIsIDcyMjI2LCA3OTEwLCA3MjIzNSwgMzA1MjUsIDIwMDkyLCA3MjIzOCwgNzIyNDIsIDEzOTYsIDcyMjQ3LCAKLSAgICAzMDUzNiwgNzIyNTAsIDcyMjU1LCAyMzcyMCwgMjM3MzAsIDMyOTQwLCA3MjI2MCwgNzIyNjUsIDcyMjcwLCA3MjI3NSwgCi0gICAgNzIyODEsIDcyMjg2LCA3MjI5NSwgNzIzMDAsIDcyMzA3LCA3MjMxMywgNzIzMTgsIDcyMzIzLCA3MjMyOCwgNzIzMzgsIAotICAgIDcyMzQ3LCA3MjM1MiwgNzIzNjAsIDcyMzY0LCA3MjM3MiwgMzAzNTAsIDExODgsIDcyMzc5LCA3MjM4NSwgNzIzOTAsIAotICAgIDcyMzk1LCA3MjQwMCwgNzI0MDYsIDcyNDExLCA3MjQxOCwgNzI0MjQsIDcyNDI5LCA3MjQzNywgNzI0NDcsIDcyNDU3LCAKLSAgICA3MjQ2MywgNzI0NjgsIDcyNDc0LCAxNTcxNSwgNzI0ODEsIDMzNzQ1LCA3MjQ5NCwgNzI0OTksIDcyNTA1LCA3MjUxOCwgCi0gICAgNzI1MjQsIDcyNTI4LCA3MjUzNywgNzI1NDQsIDcyNTUwLCA3MjU1OCwgNzI1NjcsIDcyNTc0LCA3MjU4MCwgNzI1ODMsIAotICAgIDIzODYxLCA3MjU4NywgNzI1OTQsIDcyNjAwLCA3MjYwOCwgNzI2MTMsIDIyMDM1LCA3MjYxOSwgNzI2MjIsIDcyNjMwLCAKLSAgICA3MjYzOCwgNzI2NTIsIDcyNjU5LCA3MjY2NSwgNzI2NzIsIDcyNjc4LCAzMDU1MCwgNzI2ODIsIDcyNjg5LCA3MjY5NywgCi0gICAgNzI3MDUsIDMwNTU1LCA3MjcxMSwgNzI3MTcsIDcyNzIyLCA3MjczMiwgNzI3MzgsIDcyNzQ3LCAyODY3NywgMzI0MTUsIAotICAgIDcyNzU1LCA3Mjc2MCwgNzI3NjUsIDcyNzcwLCA3Mjc3NCwgMTMxNzAsIDM2ODc4LCA3Mjc3OSwgNzI3ODQsIDMwNTYwLCAKLSAgICA1OTU1NCwgNzI3ODgsIDcyNzkzLCA3Mjc5NywgNzI4MDYsIDcyODE0LCA3MjgyMCwgNzI4MjUsIDcyODMxLCA3MjgzOCwgCi0gICAgNzI4NDQsIDcyODQ5LCA3Mjg1NCwgNzI4NjMsIDcyODc1LCA3Mjg5MCwgMzA4MDEsIDcyODk2LCAxNDc0NiwgMzA1NjQsIAotICAgIDcyOTAwLCA3MjkwNywgMjIxNDUsIDcyOTEzLCA3MjkyMCwgNzI5MjksIDcyOTM2LCA3Mjk0NSwgNzI5NTEsIDcyOTU2LCAKLSAgICA3Mjk2NCwgNzI5NzAsIDMwNTc0LCA3Mjk3NSwgNzI5ODQsIDcxODAwLCA3Mjk5MywgNzMwMDAsIDczMDA2LCA3MzAxMiwgCi0gICAgNzMwMjIsIDczMDMwLCA3MzAzNywgNzMwNDEsIDMwNTc5LCA3MzA0NCwgMzA1ODUsIDMwNTkxLCA3MzA0OSwgNzMwNTcsIAotICAgIDczMDY3LCA3MzA3NiwgNzMwODQsIDczMDkxLCA3MzEwMSwgMzA1OTYsIDczMTA1LCA3MzEwNywgNzMxMTEsIDczMTE2LCAKLSAgICA3MzEyMCwgNzMxMjQsIDczMTMwLCA3MzEzNSwgNzMxMzksIDczMTUwLCA3MzE1NSwgMjk5OCwgNzMxNTksIDczMTY2LCAKLSAgICA3MzE3MCwgNzMxNzksIDczMTg3LCA3MzE5NCwgNzMxOTksIDczMjA0LCA1OTYwMCwgNzMyMDgsIDczMjExLCA3MzIxNywgCi0gICAgNzMyMjUsIDczMjMxLCA3MzIzNSwgNzMyNDAsIDczMjQ3LCA3MzI1MiwgNzMyNTgsIDMyNDQ2LCA3MzI2MywgNzMyNjYsIAotICAgIDczMjcxLCA3MzI3NSwgNzMyODAsIDczMjg1LCA3MzI4OSwgNzMyOTcsIDIzNzM5LCAyMzc0OCwgNzMzMDMsIDczMzA5LCAKLSAgICA3MzMxNSwgNzMzMjAsIDczMzI0LCA3MzMyNywgNzMzMzcsIDczMzQ2LCA3MzM1MSwgNzMzNTcsIDczMzY0LCA3MzM3MCwgCi0gICAgNzMzNzQsIDczMzgyLCA3MzM4NywgMzI0NTIsIDczMzkxLCA3MzM5OSwgNzM0MDUsIDczNDEyLCA3MzQxNywgNzM0MjEsIAotICAgIDczNDI2LCA1NTc5MSwgMzI0NTgsIDczNDMyLCA3MzQzNywgNzM0NDEsIDczNDQ2LCA3MzQ1MSwgNzM0NTYsIDczNDYwLCAKLSAgICA3MzQ2NSwgNzM0NzAsIDczNDc2LCA3MzQ4MSwgNzM0ODYsIDczNDkyLCA3MzQ5OCwgNzM1MDMsIDczNTA3LCA3MzUxMiwgCi0gICAgNzM1MTcsIDczNTIyLCA3MzUyNiwgMjIxNDQsIDczNTMxLCA3MzUzNiwgNzM1NDIsIDczNTQ4LCA3MzU1NCwgNzM1NTksIAotICAgIDczNTYzLCA3MzU2OCwgNzM1NzMsIDczNTc4LCA3MzU4MiwgNzM1ODcsIDczNTkyLCA3MzU5NywgNzM2MDIsIDczNjA2LCAKLSAgICAzMDYwMCwgNzM2MTQsIDczNjE4LCA3MzYyNiwgNzM2MzQsIDczNjQ1LCA3MzY1MCwgNzM2NTQsIDIwNDk3LCA3MzY1OSwgCi0gICAgNzM2NjUsIDczNjc1LCA3MzY4MiwgNzM2ODcsIDczNjk2LCA3MzcwMSwgNzM3MDUsIDczNzEwLCA3MzcxOCwgNzM3MjYsIAotICAgIDczNzMzLCA2MjMyMSwgNzM3MzksIDczNzQ3LCA3Mzc1NCwgNzM3NjUsIDczNzcxLCA3Mzc3NywgMzA2MTAsIDczNzgwLCAKLSAgICA3Mzc4NywgNzM3OTUsIDczODAwLCAzNzA2OSwgNzM4MDQsIDczODA5LCA3MzgxNiwgNzM4MjEsIDczODksIDczODI1LCAKLSAgICA3MzgzMywgNzM4NDAsIDczODQ3LCA3Mzg1MywgNzM4NjcsIDYwNjI5LCA3Mzg3NSwgNzM4ODEsIDczODg1LCA3Mzg4OCwgCi0gICAgNzM4OTYsIDczOTAzLCA3MzkwOCwgNzM5MjEsIDczOTI4LCA3MzkzNSwgNzM5NDAsIDU4MTc0LCA3Mzk0NSwgNzM5NDgsIAotICAgIDczOTU1LCA3Mzk2MSwgNzM5NjUsIDczOTczLCA3Mzk4MywgNzM5OTMsIDc0MDAyLCA3NDAxMCwgNzQwMjEsIDc0MDI2LCAKLSAgICA3NDAzMCwgNzQwMzUsIDc0MDM5LCAzMzA3MSwgMTk1MDksIDMzMDgwLCA3NDA0NywgNzQwNTIsIDc0MDU3LCA3NDA2MiwgCi0gICAgNzQwNjcsIDc0MDcyLCA3NDA3NywgNzQwODEsIDc0MDg2LCA3NDA5MSwgNzQwOTYsIDc0MTAxLCA3NDEwNiwgNzQxMTEsIAotICAgIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTI5LCA3NDEzMywgNzQxMzcsIDc0MTQxLCA3NDE0NiwgNzQxNTEsIDc0MTU1LCAKLSAgICA3NDE2MCwgNzQxNjQsIDc0MTY4LCA3NDE3MywgNzQxNzgsIDc0MTgzLCA3NDE4OCwgNzQxOTIsIDc0MTk3LCA3NDIwMiwgCi0gICAgNzQyMDYsIDc0MjExLCA3NDIxNiwgNzQyMjEsIDc0MjI2LCA3NDIzMSwgNzQyMzYsIDc0MjQxLCA3NDI0NiwgNzQyNTEsIAotICAgIDc0MjU2LCA3NDI2MSwgNzQyNjYsIDc0MjcxLCA3NDI3NiwgNzQyODEsIDc0Mjg2LCA3NDI5MSwgNzQyOTYsIDc0MzAxLCAKLSAgICA3NDMwNiwgNzQzMTAsIDc0MzE1LCA3NDMyMCwgNzQzMjUsIDc0MzMwLCA3NDMzNSwgNzQzNDAsIDc0MzQ1LCA3NDM1MCwgCi0gICAgNzQzNTUsIDc0MzYwLCA3NDM2NSwgNzQzNjksIDc0Mzc0LCA3NDM3OCwgNzQzODMsIDc0Mzg4LCA3NDM5MywgNzQzOTgsIAotICAgIDc0NDAzLCA3NDQwOCwgNzQ0MTMsIDc0NDE4LCA3NDQyMywgNzQ0MjcsIDc0NDMxLCA3NDQzNiwgNzQ0NDEsIDc0NDQ1LCAKLSAgICA3NDQ1MCwgNzQ0NTUsIDc0NDU5LCA3NDQ2NCwgNzQ0NjksIDc0NDc0LCA3NDQ3OSwgNzQ0ODMsIDc0NDg4LCA3NDQ5MywgCi0gICAgNzQ0OTcsIDc0NTAyLCA3NDUwNiwgNzQ1MTAsIDc0NTE0LCA3NDUxOCwgNzQ1MjMsIDc0NTI3LCA3NDUzMSwgNzQ1MzUsIAotICAgIDc0NTM5LCA3NDU0MywgNzQ1NDcsIDc0NTUxLCA3NDU1NSwgNzQ1NTksIDc0NTY0LCA3NDU2OSwgNzQ1NzQsIDc0NTc5LCAKLSAgICA3NDU4NCwgNzQ1ODksIDc0NTk0LCA3NDU5OSwgNzQ2MDQsIDc0NjA5LCA3NDYxMywgNzQ2MTcsIDc0NjIxLCA3NDYyNSwgCi0gICAgNzQ2MjksIDc0NjMzLCA3NDYzOCwgNzQ2NDIsIDc0NjQ3LCA3NDY1MSwgNzQ2NTYsIDc0NjYxLCA3NDY2NSwgNzQ2NjksIAotICAgIDc0Njc0LCA3NDY3OCwgNzQ2ODIsIDc0Njg2LCA3NDY5MCwgNzQ2OTQsIDc0Njk4LCA3NDcwMiwgNzQ3MDYsIDc0NzEwLCAKLSAgICA3NDcxNCwgNzQ3MTgsIDc0NzIyLCA3NDcyNiwgNzQ3MzAsIDc0NzM1LCA3NDc0MCwgNzQ3NDQsIDc0NzQ4LCA3NDc1MiwgCi0gICAgNzQ3NTYsIDc0NzYwLCA3NDc2NCwgNzQ3NjksIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OSwgNzQ3OTMsIAotICAgIDc0Nzk4LCA3NDgwMiwgNzQ4MDcsIDc0ODExLCA3NDgxNSwgNzQ4MTksIDc0ODIzLCA3NDgyNywgNzQ4MzEsIDc0ODM1LCAKLSAgICA3NDgzOSwgNzQ4NDMsIDc0ODQ3LCA3NDg1MSwgNzQ4NTYsIDc0ODYwLCA3NDg2NCwgNzQ4NjgsIDc0ODcyLCA3NDg3NiwgCi0gICAgNzQ4ODAsIDc0ODg0LCA3NDg4OCwgNzQ4OTIsIDc0ODk2LCA3NDkwMCwgNzQ5MDUsIDc0OTA5LCA3NDkxMywgNzQ5MTgsIAotICAgIDc0OTIzLCA3NDkyNywgNzQ5MzEsIDc0OTM1LCA3NDkzOSwgNzQ5NDMsIDc0OTQ3LCA3NDk1MSwgNzQ5NTUsIDc0OTYwLCAKLSAgICA3NDk2NCwgNzQ5NjksIDc0OTczLCA3NDk3OCwgNzQ5ODIsIDc0OTg3LCA3NDk5MSwgNzQ5OTcsIDc1MDAyLCA3NTAwNiwgCi0gICAgNzUwMTEsIDc1MDE1LCA3NTAyMCwgNzUwMjQsIDc1MDI5LCA3NTAzMywgNzUwMzgsIDE0ODQsIDc1MDQyLCAyNzc4LCAxNzIyLCAKLSAgICAxNzI3LCA3NTA0NiwgNzUwNTAsIDI3ODIsIDc1MDU0LCAxMzY1LCA3NTA1OSwgMTMzMSwgNzUwNjMsIDI3OTQsIDc1MDY3LCAKLSAgICA3NTA3NCwgNzUwODEsIDc1MDk1LCAyNzk4LCA1NTg5LCA3NTEwNCwgNzUxMTIsIDc1MTE5LCA3NTEzMCwgNzUxMzksIAotICAgIDc1MTQ2LCA3NTE1OCwgNzUxNzEsIDc1MTg0LCA3NTE5NSwgNzUyMDAsIDc1MjA3LCA3NTIxOSwgNzUyMjMsIDM5MTgsIAotICAgIDEwMDgyLCA3NTIzMywgNzUyMzgsIDc1MjQ3LCA3NTI1NywgMjgwMiwgNzUyNjIsIDc1MjY2LCA3NTI3MSwgNzUyNzgsIAotICAgIDc1Mjg0LCA3NTI5MiwgNzUzMDQsIDEzMzYsIDExMzUxLCA3NTMxNCwgNzUzMTgsIDc1MzI0LCA3NTMzOCwgNzUzNTAsIAotICAgIDc1MzYyLCA3NTM3MiwgNzUzODEsIDc1MzkwLCA3NTM5OSwgNzU0MDcsIDc1NDE4LCA3NTQyNiwgMzk2OCwgNzU0MzYsIAotICAgIDc1NDQ1LCA3NTQ1MSwgNzU0NjYsIDc1NDczLCA3NTQ3OSwgMzMxOTcsIDc1NDg0LCAyODI2LCAxMTM1NSwgNzU0ODgsIAotICAgIDc1NDk1LCA3MzM0LCA3NTUwNCwgMjgzMSwgMzAxMDUsIDc1NTEwLCA1NzkyMywgNzU1MTcsIDc1NTIzLCA3NTUzNCwgCi0gICAgNzU1NDAsIDc1NTQ3LCA3NTU1MywgNzU1NjEsIDc1NTY4LCA3NTU3NCwgNzU1ODQsIDc1NTkzLCA3NTYwNCwgNzU2MTEsIAotICAgIDc1NjE3LCA3NTYyNywgNzU2MzUsIDc1NjQxLCA3NTY1NiwgNzU2NjIsIDc1NjY3LCA3NTY3NCwgNzU2NzcsIDc1NjgzLCAKLSAgICA3NTY5MCwgNzU2OTYsIDc1NzA0LCA3NTcxMywgNzU3MjEsIDc1NzI3LCA3NTczNiwgMzg4NDUsIDc1NzUwLCA3NTc1NSwgCi0gICAgMTMwMDcsIDc1NzYxLCA3NTc3NCwgNzU3ODMsIDc1NzkxLCA3NTc5OCwgNzU4MDIsIDc1ODA2LCA3NTgwOSwgNzU4MTYsIAotICAgIDc1ODIzLCA3NTgzMSwgNzU4MzksIDc1ODQ4LCA3NTg1NiwgMTI5NDMsIDc1ODY0LCA3NTg2OSwgNzU4NzMsIDc1ODg1LCAKLSAgICA3NTg5MiwgNzU5MDEsIDc4MCwgNzU5MTEsIDc1OTIwLCA3NTkzMSwgMjg0NywgNzU5MzUsIDc1OTM5LCA3NTk0NSwgNzU5NTgsIAotICAgIDc1OTcwLCA3NTk4MCwgNzU5ODksIDI0MzMxLCA3NjAwMSwgNzYwMDksIDc2MDE4LCA3NjAyOSwgNzYwNDAsIDc2MDUwLCAKLSAgICA3NjA2MCwgNzYwNjksIDc2MDc3LCA5NjU3LCA3NjA4NCwgNzYwODgsIDc2MDkzLCA3NjA5OCwgNzYxMDQsIDEzNDEsIAotICAgIDEwMTUzLCA3NjExMSwgNzYxMjIsIDc2MTMxLCA3NjEzOSwgNzYxNDgsIDc2MTU2LCA3NjE3MiwgNzYxODMsIDc2MTkyLCAKLSAgICA3NjIwMCwgNzYyMTIsIDc2MjIzLCA3NjIzOSwgNzYyNDksIDc2MjcwLCA3NjI4MywgNzYyOTEsIDc2Mjk4LCAxMzExOCwgCi0gICAgNzYzMTEsIDc2MzE2LCA3NjMyMiwgNDM4NiwgNzYzMjgsIDc2MzMxLCA3NjMzOCwgNzYzNDgsIDY2MDcsIDc2MzU1LCAKLSAgICA3NjM2MCwgNzYzNjUsIDc2MzczLCA3NjM4MSwgODEyMywgODEzMiwgNzYzODYsIDc2Mzk3LCA3NjQwMiwgNzY0MDgsIDI4NTUsIAotICAgIDI4NjAsIDc2NDE0LCA5MjI0LCA3NjQyMCwgNzY0MjcsIDc2NDM0LCA3NjQ0NywgMjIwNSwgNTAsIDc2NDUyLCA3NjQ1NywgCi0gICAgNzY0NjcsIDc2NDczLCA3NjQ4MiwgNzY0OTAsIDc2NTAwLCA3NjUwNCwgNzY1MDksIDc2NTEzLCA3NjUyNSwgMjg4MywgCi0gICAgNzY1MzMsIDc2NTQxLCA3NjU0NiwgNzY1NTcsIDc2NTY4LCA3NjU3NywgNzY1ODIsIDc2NTg4LCA3NjU5MywgNzY2MDMsIAotICAgIDc2NjEzLCA3NjYxOCwgNzY2MjQsIDc2NjI5LCA3NjYzOCwgMTk1NjIsIDc2NjQyLCA0MDQ1LCAxMiwgNzY2NDcsIDc2NjU2LCAKLSAgICA3NjY2MywgNzY2NzAsIDc2Njc2LCA3NjY4MiwgODI3LCA3NjY4NywgNzY2OTIsIDU4MjQwLCA3NjY5NywgNzY3MDIsIAotICAgIDc2NzA4LCA3NjcxNiwgNzY3MjEsIDc2NzI4LCA3NjczNCwgNzY3MzksIDM1NTczLCAzODc0MywgNzY3NDUsIDI4ODcsIDMyLCAKLSAgICA3Njc1NSwgNzY3NjgsIDc2NzczLCA3Njc4MSwgNzY3ODYsIDc2NzkyLCAyOTA5LCAyNjIzNCwgNzY3OTcsIDc2ODA1LCAKLSAgICA3NjgxMiwgNzY4MTcsIDU2MDMzLCA1OTIyMSwgNzY4MjYsIDE2NjcsIDE3NzYsIDc2ODMxLCA3NjgzNiwgNzY4NDMsIDE3ODAsIAotICAgIDI0MiwgNzY4NTAsIDc2ODU2LCA3Njg2MSwgNzY4NjgsIDE3ODQsIDc2ODczLCA3Njg3OSwgNzY4ODQsIDc2ODk2LCA0NTk3LCAKLSAgICA3NjkwNiwgMTc5MSwgNzY5MTIsIDc2OTE3LCA3NjkyNCwgNzY5MzEsIDc2OTQ2LCA3Njk1MywgNzY5NjQsIDc2OTcyLCAKLSAgICAyNTcyLCA3Njk3NiwgNzY5ODgsIDc2OTkzLCA3Njk5NywgNzcwMDMsIDI2MDU5LCAyMjEwLCA3NzAwNywgNzcwMTgsIAotICAgIDc3MDIyLCA3NzAyNiwgNzcwMzIsIDc3MDM2LCA3NzA0NSwgNzcwNDksIDc3MDYwLCA3NzA2NCwgMjI1NiwgMjk5NDQsIAotICAgIDc3MDY4LCA3NzA3OCwgMzAxOCwgNzczOCwgNzcwODYsIDc3MDkxLCA3NzA5NSwgNzcxMDQsIDc3MTExLCA3NzExNywgMjk4OCwgCi0gICAgMTUzNDMsIDc3MTIxLCA3NzEzNCwgNzcxNTIsIDc3MTU3LCA3NzE2NSwgNzcxNzMsIDc3MTgzLCAxMTQ1NywgNzcxOTUsIAotICAgIDc3MjA4LCA3NzIxNSwgNzcyMjIsIDc3MjM4LCA3NzI0NSwgNzcyNTEsIDEwMjQsIDc3MjU4LCA3NzI2NSwgNzcyNzUsIAotICAgIDc3Mjg0LCA3NzI5NiwgMzk3MDksIDc3MzA0LCAzMDAyLCAxMDM1MCwgNzczMDcsIDc3MzE1LCA3NzMxOSwgMzAwNiwgCi0gICAgNzczMjMsIDE5MzU4LCAxMDM2NiwgMzY4NCwgNzczMjcsIDMwMTIsIDc3MzMxLCA3NzM0MSwgNzczNDcsIDc3MzUzLCAKLSAgICA3NzM1OSwgNzczNjUsIDc3MzcxLCA3NzM3NywgNzczODMsIDc3Mzg5LCA3NzM5NSwgNzc0MDEsIDc3NDA3LCA3NzQxMywgCi0gICAgNzc0MTksIDc3NDI1LCA3NzQzMSwgNzc0MzcsIDc3NDQzLCA3NzQ0OSwgNzc0NTUsIDc3NDYxLCA3NzQ2NywgNzc0NzMsIAotICAgIDc3NDc5LCA3NzQ4NSwgNzc0OTEsIDc3NDk4LCA3NzUwNSwgNzc1MTEsIDc3NTE3LCA3NzUyMywgNzc1MjksIDc3NTM1LCAKLSAgICA3NzU0MSwgMTM0NiwgMTQyNzAsIDEwMzg4LCA3NzU0NywgNzc1NTIsIDc3NTU3LCA3NzU2MiwgNzc1NjcsIDc3NTcyLCAKLSAgICA3NzU3NywgNzc1ODIsIDc3NTg3LCA3NzU5MiwgNzc1OTcsIDc3NjAyLCA3NzYwNywgNzc2MTIsIDc3NjE3LCA3NzYyMiwgCi0gICAgNzc2MjcsIDc3NjMyLCA3NzYzNywgNzc2NDIsIDc3NjQ3LCA3NzY1MiwgNzc2NTcsIDc3NjYyLCA3NzY2NywgNzc2NzIsIAotICAgIDc3Njc4LCA3NzY4MywgNzc2ODgsIDc3Njk0LCA3NzY5OSwgNzc3MDUsIDc3NzEwLCA3NzcxNSwgNzc3MjEsIDc3NzI2LCAKLSAgICA3NzczMSwgNzc3MzYsIDc3NzQxLCA3Nzc0NiwgNzc3NTEsIDc3NzU2LCA3Nzc2MSwgNzczNDIsIDc3MzQ4LCA3NzM1NCwgCi0gICAgNzczNjAsIDc3MzY2LCA3NzM3MiwgNzczNzgsIDc3Mzg0LCA3NzM5MCwgNzczOTYsIDc3NDAyLCA3NzQwOCwgNzc0MTQsIAotICAgIDc3NDIwLCA3NzQyNiwgNzc3NjcsIDc3NDMyLCA3NzQzOCwgNzc0NDQsIDc3NzczLCA3NzQ1MCwgNzc0NTYsIDc3NDYyLCAKLSAgICA3NzQ2OCwgNzc0NzQsIDc3NDgwLCA3NzQ4NiwgNzc1MDYsIDc3Nzc5LCA3Nzc4NSwgNzc1MTIsIDc3NzkxLCA3NzUxOCwgCi0gICAgNzc1MjQsIDc3NTMwLCA3NzUzNiwgNzc1NDIsIDMwMzMsIDMwMzgsIDc3Nzk3LCA3NzgwMiwgNzc4MDUsIDc3ODExLCAKLSAgICA3NzgxNywgNzc4MjQsIDc3ODI5LCA3NzgzNCwgMjI2MSwgCisgICAgMCwgMCwgNiwgMTAsIDE4LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ0LCA1MCwgNjIsIDcwLCA4MCwgOTMsIDEwMiwgMTA4LCAKKyAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQzLCAxNDcsIDE1MywgMTU4LCAxNjMsIDE3MSwgMTc4LCAxODYsIDE5MSwgCisgICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMCwgMjM3LCAyNDYsIDI0OSwgMjU0LCAyNTcsIDI2MywgMjY3LCAyNzIsIAorICAgIDI4MSwgMjg4LCAyOTUsIDMwMSwgMzEwLCAzMTUsIDMyMSwgMzI3LCAzMzUsIDE0NCwgMzQxLCAzNDksIDM1MCwgMzU4LCAKKyAgICAzNjEsIDM2NywgMzY5LCAzNzUsIDM4MiwgMzg0LCAzOTEsIDM5NSwgNDAzLCA0MTAsIDQxNSwgNDE3LCA0MjIsIDQyOSwgCisgICAgNDMxLCAyOTksIDQzNywgNDM5LCA0NDQsIDQ0OSwgNDUyLCA0NTcsIDQ2MywgNDcwLCA0NzksIDQ4OSwgNDk0LCA0OTgsIAorICAgIDUwNSwgNTE4LCA1MjIsIDUzMSwgNTM4LCA1NDUsIDU0OCwgNTU0LCA1NTgsIDU2MiwgNTcyLCA1ODAsIDU4OCwgNTk2LCAKKyAgICA2MDUsIDYxMywgNjE4LCA2MTksIDYyMywgNjMxLCA2MzgsIDY0OCwgNjU5LCA2NjMsIDY2NiwgNjcwLCA2NzMsIDM0OCwgCisgICAgNjc4LCA2ODcsIDY5MSwgNjk3LCA3MDMsIDcwNSwgNzA4LCA3MTEsIDcxNCwgNzE4LCA3MjIsIDczMSwgNzM5LCA3NDQsIAorICAgIDc0NywgNzUxLCA3NTcsIDc2NCwgNzcxLCA3NzYsIDc4NSwgNzk0LCA4MDEsIDgwNSwgODE4LCA4MjcsIDgzNSwgODQxLCAKKyAgICA1NTcsIDg1MCwgODYwLCA4NjcsIDg3MywgODc5LCA4ODYsIDg5NCwgODk4LCA3NDksIDkwNiwgOTE1LCA1MDMsIDkyMywgCisgICAgOTI4LCA5MzQsIDE3LCA5NDMsIDk0OCwgOTUxLCA5NTUsIDk1OSwgOTY2LCA5NjksIDk3NiwgOTgwLCA5ODgsIDk5MiwgCisgICAgMTAwMCwgMTAwNCwgMTAwNywgMTAxNCwgMTAyMSwgMTkyLCAxMDI0LCAxMDI5LCAxMDM5LCAxMDQ4LCAxMDU1LCAxMDYxLCAKKyAgICAxMDY5LCAxMDcyLCAxMDc3LCAxMDgzLCAxMDkxLCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAxMTEsIDExMTMsIDExMTcsIAorICAgIDExMjMsIDExMjksIDExMzIsIDExMzgsIDExNDIsIDExNDcsIDExNTMsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAorICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAorICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIAorICAgIDEzMDYsIDEzMTIsIDEzMTcsIDEzMjEsIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDAsIDEzNDUsIDEzNTAsIDEzNTUsIDEzNjAsIAorICAgIDExOTUsIDEyMDAsIDEyMDUsIDEyMTEsIDEyMTYsIDEzNjQsIDEyMjYsIDEzNzAsIDEzNzUsIDEzODAsIDEzODcsIDEzOTEsIAorICAgIDE0MDAsIDEyMzAsIDE0MDQsIDEyMzUsIDEyNDEsIDEyNDYsIDE0MDgsIDE0MTMsIDE0MTgsIDE0MjIsIDE0MjYsIDE0MzIsIAorICAgIDE0MzYsIDEyNTEsIDE0MzksIDEyNjEsIDE0NDQsIDE0NDgsIDEyNjYsIDE0NTQsIDEyNzEsIDE0NTgsIDE0NjIsIDEyNzYsIAorICAgIDE0NjYsIDE0NzEsIDE0NzUsIDE0NzgsIDE0ODIsIDEyODAsIDEyODUsIDE0ODcsIDEyOTAsIDE0OTMsIDE0OTksIDE1MDUsIAorICAgIDE1MTEsIDEyOTUsIDEzMDcsIDEzMTMsIDE1MTUsIDE1MTksIDE1MjMsIDE1MjYsIDEzMTgsIDE1MzAsIDE1MzIsIDE1MzcsIAorICAgIDE1NDIsIDE1NDgsIDE1NTMsIDE1NTgsIDE1NjIsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODIsIDE1ODgsIDE1OTMsIDE1OTgsIAorICAgIDE2MDQsIDE2MTAsIDE2MTUsIDE2MTksIDE2MjQsIDE2MjksIDE2MzQsIDE2MzksIDE2NDMsIDE2NTEsIDE2NTUsIDE2NjAsIAorICAgIDE2NjUsIDE2NzAsIDE2NzUsIDE2NzksIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIAorICAgIDEzMjIsIDE3MjAsIDE3MjUsIDE3MzAsIDEzMjcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMzIsIDE3NTIsIDEzMzcsIDE3NTYsIAorICAgIDE3NTgsIDE3NjMsIDE3NjksIDEzNDEsIDE3NzQsIDE3ODMsIDEzNDYsIDE3ODgsIDE3OTQsIDEzNTEsIDE3OTksIDE4MDQsIAorICAgIDE4MDcsIDE4MTIsIDE4MTYsIDE4MjAsIDE4MjQsIDE4MjcsIDE4MzEsIDEzNTYsIDEzNjEsIDExNTYsIDE4MzYsIDE4NDIsIAorICAgIDE4NDgsIDE4NTQsIDE4NjAsIDE4NjYsIDE4NzIsIDE4NzgsIDE4ODQsIDE4ODksIDE4OTUsIDE5MDEsIDE5MDcsIDE5MTMsIAorICAgIDE5MTksIDE5MjUsIDE5MzEsIDE5MzcsIDE5NDMsIDE5NDgsIDE5NTMsIDE5NTgsIDE5NjMsIDE5NjgsIDE5NzMsIDE5NzgsIAorICAgIDE5ODMsIDE5ODgsIDE5OTMsIDE5OTksIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjcsIDIwMzIsIDIwMzgsIDIwNDQsIAorICAgIDIwNTAsIDIwNTYsIDIwNjEsIDIwNjYsIDIwNjgsIDIwNjksIDIwNzMsIDIwNzcsIDIwODIsIDIwODYsIDIwOTAsIDIwOTQsIAorICAgIDIwOTksIDIxMDMsIDIxMDYsIDIxMTEsIDIxMTUsIDIxMjAsIDIxMjQsIDIxMjgsIDIxMzMsIDIxMzcsIDIxNDAsIDIxNDQsIAorICAgIDIxNTAsIDIxNjQsIDIxNjgsIDIxNzIsIDIxNzYsIDIxNzksIDIxODQsIDIxODgsIDIxOTIsIDIxOTUsIDIxOTksIDIyMDQsIAorICAgIDIyMDksIDIyMTQsIDIyMTksIDIyMjMsIDIyMjcsIDIyMzEsIDIyMzYsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTQsIDIyNjAsIAorICAgIDIyNjcsIDIyNzMsIDIyNzgsIDIyODMsIDIyODgsIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTMsIDEyMTIsIDIzMTUsIAorICAgIDIzMjIsIDIzMzAsIDIzNDAsIDIzNDksIDIzNjMsIDIzNjcsIDIzNzEsIDIzODQsIDIzOTIsIDIzOTYsIDI0MDEsIDI0MDUsIAorICAgIDI0MDgsIDI0MTIsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzEsIDI0MzUsIDI0MzgsIDI0NDIsIDI0NDksIDI0NTYsIDI0NjIsIAorICAgIDI0NjcsIDI0NzIsIDI0NzgsIDI0ODQsIDI0ODksIDI0OTIsIDE3NjAsIDI0OTQsIDI1MDAsIDI1MDQsIDI1MDksIDI1MTMsIAorICAgIDI1MTcsIDE3NjUsIDE3NzEsIDI1MjIsIDI1MjYsIDI1MjksIDI1MzQsIDI1MzksIDI1NDQsIDI1NDksIDI1NTMsIDI1NjAsIAorICAgIDI1NjUsIDI1NjgsIDI1NzUsIDI1ODEsIDI1ODUsIDI1ODksIDI1OTMsIDI1OTgsIDI2MDUsIDI2MTAsIDI2MTUsIDI2MjIsIAorICAgIDI2MjgsIDI2MzQsIDI2NDAsIDI2NTQsIDI2NzEsIDI2ODYsIDI3MDEsIDI3MTAsIDI3MTUsIDI3MTksIDI3MjQsIDI3MjksIAorICAgIDI3MzMsIDI3NDUsIDI3NTIsIDI3NTgsIDIyNjMsIDI3NjQsIDI3NzEsIDI3NzcsIDI3ODEsIDI3ODQsIDI3OTEsIDI3OTcsIAorICAgIDI4MDEsIDI4MDUsIDI4MDksIDIwOTEsIDI4MTMsIDI4MTgsIDI4MjMsIDI4MjcsIDI4MzUsIDI4MzksIDI4NDMsIDI4NDcsIAorICAgIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjYsIDI4NzAsIDI4NzUsIDI4ODAsIDI4ODQsIDI4ODksIDI4OTMsIDI4OTYsIDI5MDAsIAorICAgIDI5MDQsIDI5MTIsIDI5MTcsIDI5MjEsIDI5MjUsIDI5MzEsIDI5NDAsIDI5NDQsIDI5NDgsIDI5NTQsIDI5NTksIDI5NjYsIAorICAgIDI5NzAsIDI5ODAsIDI5ODQsIDI5ODgsIDI5OTMsIDI5OTcsIDMwMDIsIDMwMDgsIDMwMTMsIDMwMTcsIDMwMjEsIDMwMjUsIAorICAgIDI0NTIsIDMwMzMsIDMwMzgsIDMwNDQsIDMwNDksIDMwNTMsIDMwNTgsIDMwNjMsIDMwNjcsIDMwNzMsIDMwNzgsIDIwOTUsIAorICAgIDMwODQsIDMwOTAsIDMwOTUsIDMxMDAsIDMxMDUsIDMxMTAsIDMxMTUsIDMxMjAsIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDEsIAorICAgIDMxNDYsIDEyMjcsIDkyLCAzMTUyLCAzMTU2LCAzMTYwLCAzMTY0LCAzMTY5LCAzMTczLCAzMTc3LCAzMTgxLCAzMTg1LCAKKyAgICAzMTkwLCAzMTk0LCAzMTk5LCAzMjAzLCAzMjA2LCAzMjEwLCAzMjE1LCAzMjE5LCAzMjI0LCAzMjI4LCAzMjMyLCAzMjM2LCAKKyAgICAzMjQxLCAzMjQ1LCAzMjQ4LCAzMjYxLCAzMjY1LCAzMjY5LCAzMjczLCAzMjc3LCAzMjgxLCAzMjg0LCAzMjg4LCAzMjkyLCAKKyAgICAzMjk3LCAzMzAxLCAzMzA2LCAzMzExLCAzMzE2LCAzMzIwLCAzMzIzLCAzMzI2LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQzLCAKKyAgICAzMzQ3LCAzMzUxLCAzMzU0LCAzMzYwLCAzMzY1LCAzMzcwLCAzMzc2LCAzMzgxLCAzMzg2LCAzMzkyLCAzMzk4LCAzNDAzLCAKKyAgICAzNDA4LCAzNDEzLCAxMTE1LCA1NDcsIDM0MTgsIDM0MjEsIDM0MjYsIDM0MzAsIDM0MzMsIDM0MzcsIDM0NDIsIDM0NDcsIAorICAgIDM0NTEsIDM0NTYsIDM0NjAsIDM0NjUsIDM0NjksIDM0NzMsIDM0NzksIDM0ODUsIDM0ODgsIDM0OTEsIDM0OTcsIDM1MDQsIAorICAgIDM1MTEsIDM1MTcsIDM1MjQsIDM1MjksIDM1MzMsIDM1NDAsIDM1NDcsIDM1NTIsIDM1NTYsIDM1NjYsIDM1NzAsIDM1NzQsIAorICAgIDM1NzksIDM1ODQsIDM1OTQsIDIxMDcsIDM1OTksIDM2MDMsIDM2MDYsIDM2MTIsIDM2MTcsIDM2MjMsIDM2MjksIDM2MzQsIAorICAgIDM2NDEsIDM2NDUsIDM2NDksIDYyMCwgNjcxLCAxMzg4LCAzNjUzLCAzNjYwLCAzNjY3LCAzNjc0LCAzNjgxLCAzNjg3LCAKKyAgICAzNjkzLCAzNjk4LCAzNzAyLCAzNzA4LCAzNzEzLCAzNzE3LCAyMTE2LCAzNzIxLCAzNzI5LCA2MDAsIDM3MzUsIDM3NDYsIAorICAgIDM3NTAsIDM3NjAsIDIxMjEsIDM3NjYsIDM3NzEsIDM3ODYsIDM3OTIsIDM3OTksIDM4MDksIDM4MTUsIDM4MjAsIDM4MjYsIAorICAgIDM4MzIsIDM4MzUsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTYsIDM4NjAsIDM4NjQsIDM4NjgsIDM4NzIsIDM4NzcsIDM4ODMsIAorICAgIDM4OTQsIDMyMTEsIDM4OTksIDM5MTEsIDM5MTksIDM5MjQsIDE1NjQsIDM5MzEsIDM5MzQsIDM5MzcsIDM5NDEsIDM5NDQsIAorICAgIDM5NTAsIDM5NTQsIDM5NjgsIDM5NzIsIDM5NzUsIDM5NzksIDM5ODUsIDM5OTEsIDM5OTYsIDQwMDAsIDQwMDQsIDQwMTAsIAorICAgIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIDQwNDIsIDQwNTAsIDQwNjAsIDQwNjYsIDQwNzEsIDQwODAsIDQwODgsIDQwOTUsIAorICAgIDQwOTksIDQxMDUsIDQxMTQsIDQxMjMsIDQxMjcsIDQxMzIsIDQxMzcsIDQxNDEsIDQxNDksIDQxNTMsIDQxNTgsIDQxNjIsIAorICAgIDIxMjksIDE0MDEsIDQxNjgsIDQxNzMsIDQxNzksIDQxODQsIDQxODksIDQxOTQsIDQxOTksIDQyMDQsIDQyMDksIDQyMTUsIAorICAgIDQyMjAsIDQyMjYsIDQyMzEsIDQyMzYsIDQyNDEsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjcsIDQyNzMsIDQyNzgsIAorICAgIDQyODQsIDQyODksIDQyOTQsIDQyOTksIDQzMDQsIDQzMDksIDQzMTQsIDQzMjAsIDQzMjUsIDQzMzAsIDMxOSwgNDU2LCAKKyAgICA0MzM1LCA0MzQxLCA0MzQ1LCA0MzQ5LCA0MzU0LCA0MzU4LCA0MzYyLCA0MzY1LCA0MzY5LCA0MzczLCA0Mzc3LCA0MzgxLCAKKyAgICA0Mzg2LCA0MzkwLCA0Mzk0LCA0NDAwLCA0MTY1LCA0NDA1LCA0NDA5LCA0NDEyLCA0NDE3LCA0NDIyLCA0NDI3LCA0NDMyLCAKKyAgICA0NDM3LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCAKKyAgICA0NDk2LCA0NTAxLCA0NTA2LCA0NTExLCA0NTE2LCA0NTIwLCA0NTI1LCA0NTMwLCA0NTM1LCA0NTQwLCA0NTQ1LCA0NTUwLCAKKyAgICA0NTU1LCA0NTYwLCA0NTY1LCA0NTcwLCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg5LCA0NTk0LCA0NTk5LCA0NjA0LCA0NjA5LCAKKyAgICA0NjE0LCA0NjE5LCA0NjI0LCA0NjI4LCA0NjMzLCA0NjM4LCA0NjQzLCA0NjQ4LCA0NjUzLCA0NjU4LCA0NjYzLCA0NjY4LCAKKyAgICA0NjczLCA0Njc4LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk3LCA0NzAyLCA0NzA3LCA0NzEyLCA0NzE3LCA0NzIyLCA0NzI3LCAKKyAgICA0NzMyLCA0NzM2LCA0NzQxLCA0NzQ2LCA0NzUxLCA0NzU2LCA0NzYxLCA0NzY2LCA0NzcxLCA0Nzc2LCA0NzgxLCA0Nzg2LCAKKyAgICA0NzkwLCA0Nzk1LCA0ODAwLCA0ODA1LCA0ODEwLCA0ODE2LCA0ODIyLCA0ODI4LCA0ODM0LCA0ODQwLCA0ODQ2LCA0ODUyLCAKKyAgICA0ODU3LCA0ODYzLCA0ODY5LCA0ODc1LCA0ODgxLCA0ODg3LCA0ODkzLCA0ODk5LCA0OTA1LCA0OTExLCA0OTE3LCA0OTIyLCAKKyAgICA0OTI4LCA0OTM0LCA0OTQwLCA0OTQ2LCA0OTUyLCA0OTU4LCA0OTY0LCA0OTcwLCA0OTc2LCA0OTgyLCA0OTg3LCA0OTkzLCAKKyAgICA0OTk5LCA1MDA1LCA1MDExLCA1MDE3LCA1MDIzLCA1MDI5LCA1MDM1LCA1MDQxLCA1MDQ3LCA1MDUyLCA1MDU4LCA1MDY0LCAKKyAgICA1MDcwLCA1MDc2LCA1MDgyLCA1MDg4LCA1MDk0LCA1MTAwLCA1MTA2LCA1MTEyLCA1MTE3LCA1MTIzLCA1MTI5LCA1MTM1LCAKKyAgICA1MTQxLCA1MTQ3LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgyLCA1MTg2LCA1MTkyLCA1MTk4LCA1MjA0LCAKKyAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUxLCA1MjU3LCA1MjYzLCA1MjY5LCA1Mjc1LCAKKyAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE2LCA1MzIyLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKKyAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgxLCA1Mzg3LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKKyAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ2LCA1NDUyLCA1NDU4LCA1NDY0LCA1NDcwLCA1NDc2LCA1NDgyLCA1NDg4LCAKKyAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTExLCA1NTE3LCA1NTIzLCA1NTI5LCA1NTM1LCA1NTQxLCA1NTQ3LCA1NTUzLCA1NTU5LCAKKyAgICA1NTY1LCA1NTcxLCA1NTc2LCA1NTgyLCA1NTg4LCA1NTk0LCA1NjAwLCA1NjA2LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKKyAgICA1NjM2LCA1NjQxLCA1NjQ3LCA1NjUzLCA1NjU5LCA1NjY1LCA1NjcxLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKKyAgICA1NzA2LCA1NzEyLCA1NzE4LCA1NzI0LCA1NzMwLCA1NzM2LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcxLCAKKyAgICA1Nzc3LCA1NzgzLCA1Nzg5LCA1Nzk1LCA1ODAxLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM2LCA1ODQwLCAKKyAgICA1ODQzLCA1ODUwLCA1ODU0LCA1ODY3LCA1ODcxLCA1ODc1LCA1ODc5LCA1ODgzLCA1ODg3LCA1ODkxLCA1ODk3LCA1OTA0LCAKKyAgICA1OTEyLCA1OTE2LCA1OTI0LCA1OTMzLCA1OTM5LCA1OTUxLCA1OTU2LCA1OTU5LCA1OTYzLCA1OTczLCA1OTgxLCA1OTg5LCAKKyAgICA1OTk1LCA1OTk5LCA2MDA5LCA2MDE5LCA2MDI3LCA2MDM0LCA2MDQxLCA2MDQ3LCA2MDUzLCA2MDYwLCA2MDY0LCA2MDcxLCAKKyAgICA2MDgxLCA2MDkxLCA2MDk5LCA2MTA2LCA2MTExLCA2MTE1LCA2MTIzLCA2MTI3LCA2MTMyLCA2MTM5LCA2MTQ3LCA2MTUyLCAKKyAgICA2MTU3LCA2MTYxLCA2MTY4LCA2MTczLCA2MTg3LCA2MTkyLCA2MTk3LCA2MjA0LCA2MjEzLCA2MjE2LCA2MjIwLCA2MjI0LCAKKyAgICA2MjI4LCA2MjMxLCA2MjM2LCA2MjQxLCA2MjUwLCA2MjU2LCA2MjYyLCA2MjY4LCA2MjcyLCA2MjgzLCA2MjkzLCA2MzA4LCAKKyAgICA2MzIzLCA2MzM4LCA2MzUzLCA2MzY4LCA2MzgzLCA2Mzk4LCA2NDEzLCA2NDI4LCA2NDQzLCA2NDU4LCA2NDczLCA2NDg4LCAKKyAgICA2NTAzLCA2NTE4LCA2NTMzLCA2NTQ4LCA2NTYzLCA2NTc4LCA2NTkzLCA2NjA4LCA2NjIzLCA2NjM4LCA2NjUzLCA2NjY4LCAKKyAgICA2NjgzLCA2Njk4LCA2NzEzLCA2NzI4LCA2NzQzLCA2NzU4LCA2NzczLCA2Nzg4LCA2ODAzLCA2ODE4LCA2ODMzLCA2ODQ4LCAKKyAgICA2ODYzLCA2ODc4LCA2ODkzLCA2OTA4LCA2OTIzLCA2OTM4LCA2OTUzLCA2OTY4LCA2OTgzLCA2OTk4LCA3MDEzLCA3MDI4LCAKKyAgICA3MDM3LCA3MDQ2LCA3MDUxLCA3MDU3LCA3MDY3LCA3MDcxLCA3MDc2LCA3MDgxLCA3MDg5LCA3MDkzLCA3MDk2LCA3MTAwLCAKKyAgICAyOTc1LCA3MTAzLCA3MTA4LCAyOTgsIDQ0MiwgNzExNCwgNzEyMiwgNzEyNiwgNzEzMCwgNzEzMywgNzEzNywgNzE0MywgCisgICAgNzE0NywgNzE1NSwgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NiwgNzE5MSwgNzE5OCwgNzIwNCwgNzIxMiwgNzIxNiwgCisgICAgNzIyMSwgNzIzMywgNzI0NCwgNzI1MSwgNzI1NSwgNzI1OSwgNzI2NSwgMzIzMywgNzI2OSwgNzI3NSwgNzI4MCwgNzI4NSwgCisgICAgNzI5MCwgNzI5NiwgNzMwMSwgNzMwNiwgNzMxMSwgNzMxNiwgNzMyMiwgNzMyNywgNzMzMiwgNzMzOCwgNzM0MywgNzM0OSwgCisgICAgNzM1NCwgNzM2MCwgNzM2NSwgNzM3MSwgNzM3NiwgNzM4MSwgNzM4NiwgNzM5MSwgNzM5NiwgNzQwMiwgNzQwNywgNzQxMiwgCisgICAgNzQxNywgNzQyMywgNzQyOSwgNzQzNSwgNzQ0MSwgNzQ0NywgNzQ1MywgNzQ1OSwgNzQ2NSwgNzQ3MSwgNzQ3NywgNzQ4MywgCisgICAgNzQ4OSwgNzQ5NCwgNzQ5OSwgNzUwNCwgNzUwOSwgNzUxNCwgNzUxOSwgNzUyNCwgNzUyOSwgNzUzNSwgNzU0MSwgNzU0NiwgCisgICAgNzU1MiwgNzU1OCwgNzU2NCwgNzU2OSwgNzU3NCwgNzU3OSwgNzU4NCwgNzU5MCwgNzU5NiwgNzYwMSwgNzYwNiwgNzYxMSwgCisgICAgNzYxNiwgNzYyMSwgNzYyNywgNzYzMiwgNzYzOCwgNzY0NCwgNzY1MCwgNzY1NiwgNzY2MiwgNzY2OCwgNzY3NCwgNzY4MCwgCisgICAgNzY4NiwgMjEzOCwgNzEzMiwgNzY5MSwgNzY5NSwgNzY5OSwgNzcwMiwgNzcwOSwgNzcxMiwgNzcyMCwgNzcyNSwgNzczMCwgCisgICAgNzcyMSwgNzczNSwgMjE2NSwgNzczOSwgNzc0NSwgNzc1MSwgNzc1NiwgNzc2MSwgNzc2OCwgNzc3NiwgNzc4MSwgNzc4NSwgCisgICAgNzc4OCwgNzc5MiwgNzc5OCwgNzgwNCwgNzgwOCwgMjE3MywgNTYwLCA3ODExLCA3ODE1LCA3ODIwLCA3ODI2LCA3ODMxLCAKKyAgICA3ODM1LCA3ODM4LCA3ODQyLCA3ODQ4LCA3ODUzLCA3ODU3LCA3ODY0LCA3ODY4LCA3ODcyLCA3ODc2LCA5NDUsIDc2OSwgCisgICAgNzg3OSwgNzg4NywgNzg5NCwgNzkwMSwgNzkwNywgNzkxNCwgNzkyMiwgNzkyOSwgNzkzNiwgNzk0MSwgNzk1MywgMTI0NywgCisgICAgMTQwOSwgMTQxNCwgNzk2NCwgMTQxOSwgNzk2OCwgNzk3MiwgNzk4MSwgNzk4OSwgNzk5OCwgODAwNCwgODAwOSwgODAxMywgCisgICAgODAxOSwgODAyNCwgMjcwNiwgODAzMSwgODAzNSwgODA0NCwgODA1MywgODA2MiwgODA3MSwgODA3NiwgODA4MSwgODA5MywgCisgICAgODA5OCwgODEwNiwgMjIyNCwgODExMCwgODExMiwgODExNywgODEyMSwgODEzMCwgODEzOCwgMTQyMywgMTMzLCAzNDYxLCAKKyAgICAzNDY2LCA4MTQ0LCA4MTQ4LCA4MTU3LCA4MTYzLCA4MTY4LCA4MTcxLCA4MTgwLCAyNjk4LCA4MTg2LCA4MTk0LCA4MTk4LCAKKyAgICA4MjAyLCA4MjA2LCAyMjM3LCA4MjEwLCA4MjE1LCA4MjIyLCA4MjI4LCA4MjM0LCA4MjM3LCA4MjM5LCA4MjQyLCA4MjUwLCAKKyAgICA4MjU4LCA4MjY2LCA4MjY5LCA4Mjc0LCAyMjUwLCA4Mjc5LCA3NzMyLCA4MjgyLCA4Mjg0LCA4Mjg5LCA4Mjk0LCA4Mjk5LCAKKyAgICA4MzA0LCA4MzA5LCA4MzE0LCA4MzE5LCA4MzI0LCA4MzI5LCA4MzM0LCA4MzQwLCA4MzQ1LCA4MzUwLCA4MzU1LCA4MzYxLCAKKyAgICA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDA3LCA4NDEyLCA4NDE3LCA4NDIyLCAKKyAgICA4NDI3LCA4NDMyLCA4NDM3LCA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDY3LCA4NDcyLCA4NDc3LCA4NDgyLCAKKyAgICA4NDg4LCA4NDk0LCA4NDk5LCA4NTA0LCA4NTA5LCA4NTE0LCA4NTE5LCAyMjYxLCAyMjY4LCAyMjc0LCA4NTI0LCA4NTMwLCAKKyAgICA4NTM4LCAyMzAwLCAyMzA2LCA4NTQ2LCA4NTUwLCA4NTU1LCA4NTU5LCA4NTYzLCA4NTY3LCA4NTcyLCA4NTc2LCA4NTgxLCAKKyAgICA4NTg1LCA4NTg4LCA4NTkxLCA4NTk3LCA4NjAzLCA4NjA5LCA4NjE1LCA4NjIxLCA4NjI3LCA4NjMzLCA4NjM3LCA4NjQxLCAKKyAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKKyAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKKyAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKKyAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA3NjgsIAorICAgIDg5OTMsIDg5OTcsIDkwMDIsIDkwMDcsIDkwMTIsIDkwMTYsIDkwMjIsIDkwMzAsIDkwMzYsIDkwNDAsIDkwNDYsIDkwNTYsIAorICAgIDkwNjAsIDkwNjYsIDkwNzEsIDkwNzUsIDkwODEsIDkwODcsIDIxNjEsIDkwOTIsIDkwOTQsIDkwOTksIDkxMDcsIDkxMTYsIAorICAgIDkxMjAsIDkxMjYsIDkxMzEsIDkxMzYsIDkxNDEsIDkxNDYsIDkxNTIsIDkxNTcsIDkxNjIsIDQwMDYsIDkxNjcsIDkxNzIsIAorICAgIDkxNzYsIDkxODIsIDkxODcsIDkxOTMsIDkxOTgsIDkyMDMsIDkyMDksIDkyMTQsIDkxMjEsIDkyMjAsIDkyMjQsIDkyMzEsIAorICAgIDkyMzcsIDkyNDIsIDkyNDYsIDYxODMsIDkyNTEsIDkyNjAsIDkyNjUsIDkyNzAsIDgyMTgsIDgyMjUsIDkyNzUsIDI4NTMsIAorICAgIDkyNzksIDkyODQsIDkyODksIDkxMzIsIDkyOTMsIDkyOTgsIDkxMzcsIDkxNDIsIDkzMDMsIDkzMTAsIDkzMTcsIDkzMjMsIAorICAgIDkzMjksIDkzMzUsIDkzNDAsIDkzNDUsIDkzNTAsIDkxNDcsIDkxNTMsIDkzNTYsIDkzNjIsIDkzNjcsIDkzNzUsIDkxNTgsIAorICAgIDkzODAsIDk5MCwgOTM4MywgOTM5MSwgOTM5NywgOTQwMywgOTQxMiwgOTQyMCwgOTQyNSwgOTQzMSwgOTQzOSwgOTQ0NiwgCisgICAgOTQ2MSwgOTQ3OCwgOTQ5NywgOTUwNiwgOTUxNCwgOTUyOSwgOTU0MCwgOTU1MCwgOTU2MCwgOTU2OCwgOTU3NCwgOTU4NiwgCisgICAgOTU5NSwgOTYwMywgOTYxMCwgOTYxNywgOTYyMywgOTYyOCwgOTYzNiwgOTY0NiwgOTY1MywgOTY2MywgOTY3MywgOTY4MywgCisgICAgOTY5MSwgOTY5OCwgOTcwNywgOTcxNywgOTczMSwgOTc0NiwgOTc1NSwgOTc2MywgOTc2OCwgOTc3MiwgOTc4MSwgOTc4NywgCisgICAgOTc5MiwgOTgwMiwgOTgxMiwgOTgyMiwgOTgyNywgOTgzMSwgOTg0MCwgOTg0NSwgOTg1NSwgOTg2NiwgOTg3OSwgOTg4NywgCisgICAgOTkwMCwgOTkxMiwgOTkyMCwgOTkyNSwgOTkyOSwgOTkzNSwgOTk0MCwgOTk0OCwgOTk1NiwgOTk2MywgOTk2OCwgOTk3NiwgCisgICAgOTk4MiwgOTk4NSwgOTk4OSwgOTk5NSwgMTAwMDMsIDEwMDA4LCAxMDAxMiwgMTAwMjAsIDEwMDI5LCAxMDAzNywgMTAwNDMsIAorICAgIDEwMDQ3LCAxMDA1NCwgMTAwNjUsIDEwMDY5LCAxMDA3MiwgMTAwNzgsIDkxNjMsIDEwMDgzLCAxMDA4OSwgMTAwOTYsIAorICAgIDEwMTAyLCAxMDEwNywgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKKyAgICAxMDE2OCwgOTQ3NCwgMTAxNzMsIDEwMTc5LCAxMDE4NiwgMTAxOTMsIDEwMTk4LCAxMDIwNSwgMTAyMTQsIDEwMjE4LCAKKyAgICAxMDIzMCwgODI1NiwgMTAyMzQsIDEwMjM3LCAxMDI0MSwgMTAyNDUsIDEwMjQ5LCAxMDI1MywgMTAyNTksIDEwMjY1LCAKKyAgICAxMDI3MCwgMTAyNzYsIDEwMjgxLCAxMDI4NiwgMTAyOTIsIDEwMjk3LCAxMDMwMiwgODk1MiwgMTAzMDcsIDEwMzExLCAKKyAgICAxMDMxNSwgMTAzMTksIDEwMzI0LCAxMDMyOSwgMTAzMzcsIDEwMzQzLCAxMDM0NywgMTAzNTEsIDEwMzU4LCAxMDM2MywgCisgICAgMTAzNzEsIDEwMzc2LCAxMDM4MCwgMTAzODMsIDEwMzg5LCAxMDM5NiwgMTA0MDAsIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAorICAgIDQwNDUsIDEwNDE4LCAxMDQyNywgMzYsIDEwNDM1LCAxMDQ0MSwgMTA0NDYsIDg5NjcsIDEwNDUxLCAxMDQ1NiwgMTA0NjAsIAorICAgIDEwNDYzLCAxMDQ3OCwgMTA0OTcsIDEwNTA5LCAxMDUyMiwgMTA1MzUsIDEwNTQ4LCAxMDU2MiwgMTA1NzUsIDEwNTkwLCAKKyAgICAxMDU5NywgOTE2OCwgMTA2MDMsIDEwNjE3LCAxMDYyMiwgMTA2MjgsIDEwNjMzLCAxMDY0MSwgMTA2NDYsIDgwNDAsIAorICAgIDEwNjUxLCAxMDY1NCwgMTA2NjEsIDEwNjY2LCAxMDY3MCwgMjg1OCwgOTk4LCAxMDY3NiwgMTA2ODAsIDEwNjg2LCAxMDY5MiwgCisgICAgMTA2OTcsIDEwNzAzLCAxMDcwOCwgOTE3NywgMTA3MTQsIDEwNzIwLCAxMDcyNSwgMTA3MzAsIDEwNzM4LCAxMDc0NCwgCisgICAgMTA3NTcsIDEwNzY1LCAxMDc3MiwgOTE4MywgMTA3NzgsIDEwNzg2LCAxMDc5NCwgMTA4MDEsIDEwODE0LCAxMDgyNiwgCisgICAgMTA4MzYsIDEwODQ0LCAxMDg1MSwgMTA4NTgsIDEwODY3LCAxMDg3NiwgMTA4ODQsIDEwODkxLCAxMDg5NiwgMTA5MDIsIAorICAgIDkxODgsIDEwOTA3LCAxMDkxMywgOTE5NCwgMTA5MTgsIDEwOTIxLCAxMDkyOCwgMTA5MzQsIDEwOTQ3LCA4NjY5LCAxMDk1OCwgCisgICAgMTA5NjQsIDEwOTczLCAxMDk4MSwgMTA5ODgsIDEwOTk0LCAxMTAwMCwgMTEwMDUsIDExMDA5LCAxMTAxNCwgMTA0NzAsIAorICAgIDExMDIwLCA5MTk5LCAxMTAyNywgMTEwMzIsIDExMDM5LCAxMTA0NSwgMTEwNTEsIDExMDU2LCAxMTA2NCwgMTEwNzIsIAorICAgIDExMDc5LCAxMTA4MywgMTEwOTcsIDExMTA3LCAxMTExMiwgMTExMTYsIDExMTI3LCAxMTEzMywgMTExMzgsIDExMTQzLCAKKyAgICA5MjA0LCA5MjEwLCAxMTE0NywgMTExNTAsIDExMTU1LCAxMTE2NywgMTExNzQsIDExMTc5LCAxMTE4MywgMTExODgsIAorICAgIDExMTkyLCAxMTE5OSwgMTEyMDUsIDkyMTUsIDkxMjIsIDExMjEyLCAyODYzLCA4LCAxMTIxOSwgMTEyMjQsIDExMjI4LCAKKyAgICAxMTIzNCwgMTEyNDIsIDExMjUyLCAxMTI1NywgMTEyNjIsIDExMjY5LCAxMTI3NiwgMTEyODAsIDExMjkxLCAxMTMwMSwgCisgICAgMTEzMTAsIDExMzIyLCAxMTMyNywgMTEzMzEsIDExMzM5LCAxMTM1MywgMTEzNTcsIDExMzYwLCAxMTM2OCwgMTEzNzUsIAorICAgIDExMzgzLCAxMTM4NywgMTEzOTgsIDExNDAyLCAxMTQwOSwgMTE0MTQsIDExNDE4LCAxMTQyNCwgMTE0MjksIDExNDMzLCAKKyAgICAxMTQzOSwgMTE0NDQsIDExNDU1LCAxMTQ1OSwgMTE0NjIsIDExNDY4LCAxMTQ3MywgMTE0NzksIDExNDg1LCAxMTQ5MiwgCisgICAgMTE1MDMsIDExNTEzLCAxMTUyMywgMTE1MzIsIDExNTM5LCAxMTU0OCwgOTIyNSwgOTIzMiwgOTIzOCwgOTI0MywgMTE1NTQsIAorICAgIDExNTYwLCA5MjQ3LCAxMTU2NiwgMTE1NjksIDExNTc2LCAxMTU4MSwgMTE1OTYsIDExNjEyLCAxMTYyNywgMTE2MzUsIAorICAgIDExNjQxLCAxMTY0NiwgODM4LCA0MjAsIDExNjUxLCAxMTY1OSwgMTE2NjYsIDExNjcyLCAxMTY3NywgMTE2ODIsIDkyNTIsIAorICAgIDExNjg0LCAxMTY4OCwgMTE2OTMsIDExNjk3LCAxMTcwNywgMTE3MTIsIDExNzE2LCAxMTcyNSwgMTE3MjksIDExNzMyLCAKKyAgICA5MjYxLCAxMTczOSwgMTE3NDIsIDExNzUwLCAxMTc1NywgMTE3NjUsIDExNzY5LCAxMTc3NiwgMTE3ODUsIDExNzg4LCAKKyAgICAxMTc5MiwgMTE3OTYsIDExODAyLCAxMTgwNiwgMTE4MTAsIDExODE0LCAxMTgyMCwgMTE4MzAsIDExODM0LCAxMTg0MiwgCisgICAgMTE4NDYsIDExODUzLCAxMTg1NywgMTE4NjIsIDExODY2LCAxMTg3MywgMTE4NzksIDExODg3LCAxMTg5MywgMTE4OTgsIAorICAgIDExOTA4LCAxMTkxMywgMTE5MTgsIDExOTIyLCAxMTkzMCwgMzkwNSwgMTE5MzgsIDExOTQzLCA5MjY2LCAxMTk0NywgCisgICAgMTE5NTEsIDExOTU0LCAxMTk2MiwgMTE5NjksIDExOTczLCA1OTkxLCAxMTk3NywgMTE5ODIsIDExOTg2LCAxMTk5NywgCisgICAgMTIwMDcsIDEyMDEyLCAxMjAxOCwgMTIwMjIsIDEyMDI1LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA1MCwgMTIwNTUsIAorICAgIDkyNzEsIDEyMDYwLCAxMjA2NCwgMTIwNzEsIDE3MjIsIDYxNDUsIDEyMDc2LCAxMjA4MSwgMTIwODYsIDEyMDkxLCAxMjA5NywgCisgICAgMTIxMDIsIDEyMTA4LCAxMjExMywgMTIxMTgsIDEyMTIzLCAxMjEyOCwgMTIxMzMsIDEyMTM4LCAxMjE0MywgMTIxNDgsIAorICAgIDEyMTUzLCAxMjE1OCwgMTIxNjMsIDEyMTY4LCAxMjE3MywgMTIxNzgsIDEyMTgzLCAxMjE4OCwgMTIxOTQsIDEyMTk5LCAKKyAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjUsIDEyMjMwLCAxMjIzNSwgMTIyNDEsIDEyMjQ2LCAxMjI1MiwgCisgICAgMTIyNTcsIDEyMjYzLCAxMjI2OCwgMTIyNzMsIDEyMjc4LCAxMjI4MywgMTIyODksIDEyMjk0LCAxMjI5OSwgMTIzMDQsIAorICAgIDczNywgMTM5LCAxMjMxMiwgMTIzMTYsIDEyMzIxLCAxMjMyNiwgMTIzMzAsIDEyMzM0LCAxMjMzOCwgMTIzNDMsIDEyMzQ3LCAKKyAgICAxMjM1MiwgMTIzNTYsIDEyMzU5LCAxMjM2MywgMTIzNjcsIDEyMzczLCAxMjM3OCwgMTIzODgsIDEyMzk0LCAxMjQwMiwgCisgICAgMTI0MDYsIDEyNDEwLCAxMjQxNywgMTI0MjUsIDEyNDM0LCAxMjQ0NSwgMTI0NTIsIDEyNDU5LCAxMjQ2MywgMTI0NzIsIAorICAgIDEyNDgxLCAxMjQ4OSwgMTI0OTgsIDEyNTA3LCAxMjUxNiwgMTI1MjUsIDEyNTM1LCAxMjU0NSwgMTI1NTUsIDEyNTY1LCAKKyAgICAxMjU3NSwgMTI1ODQsIDEyNTk0LCAxMjYwNCwgMTI2MTQsIDEyNjI0LCAxMjYzNCwgMTI2NDQsIDEyNjU0LCAxMjY2MywgCisgICAgMTI2NzMsIDEyNjgzLCAxMjY5MywgMTI3MDMsIDEyNzEzLCAxMjcyMywgMTI3MzIsIDEyNzQyLCAxMjc1MiwgMTI3NjIsIAorICAgIDEyNzcyLCAxMjc4MiwgMTI3OTIsIDEyODAyLCAxMjgxMiwgMTI4MjIsIDEyODMxLCAxMjg0MSwgMTI4NTEsIDEyODYxLCAKKyAgICAxMjg3MSwgMTI4ODEsIDEyODkxLCAxMjkwMSwgMTI5MTEsIDEyOTIxLCAxMjkzMSwgMTI5NDAsIDEyNTYsIDEyOTQ2LCAKKyAgICAxMjk0OSwgMTI5NTMsIDEyOTU4LCAxMjk2NSwgMTI5NzEsIDEyOTc2LCAxMjk4MCwgMTI5ODUsIDEyOTk0LCAxMzAwMiwgCisgICAgMTMwMDcsIDEzMDExLCAxMzAxNSwgMTMwMjEsIDEzMDI2LCAxMzAzMiwgOTI4MCwgMTMwMzcsIDEzMDQyLCAxMzA1MSwgCisgICAgOTI4NSwgMTMwNTYsIDEzMDU5LCAxMzA2NSwgMTMwNzMsIDkyOTAsIDEzMDgwLCAxMzA4NCwgMTMwODgsIDEzMDkyLCAKKyAgICAxMzEwMiwgMTMxMDgsIDEzMTE0LCAxMzExOSwgMTMxMjgsIDEzMTM2LCAxMzE0MywgMTMxNTAsIDEzMTU1LCAxMzE2MiwgCisgICAgMTMxNjcsIDEzMTcxLCAxMzE3NCwgMTMxODUsIDEzMTk1LCAxMzIwNCwgMTMyMTIsIDEzMjIzLCAxMzIzNSwgMTMyNDUsIAorICAgIDEzMjUwLCAxMzI1NCwgMTMyNTksIDEzMjY0LCAxMzI2OCwgMTMyNzQsIDEzMjgyLCAxMzI4OSwgMTMzMDAsIDEzMzA1LCAKKyAgICAxMzMxNSwgMTMzMTksIDEzMzIyLCAxMzMyOSwgMTMzMzksIDEzMzQ4LCAxMzM1NSwgMTMzNTksIDEzMzY2LCAxMzM3MiwgCisgICAgMTMzNzcsIDEzMzgyLCAxMzM4NiwgMTMzOTUsIDEzNDAwLCAxMzQwNiwgMTM0MTAsIDEzNDE1LCAxMzQxOSwgMTM0MjgsIAorICAgIDEzNDM2LCAxMzQ0NCwgMTM0NTEsIDEzNDU5LCAxMzQ3MSwgMTM0ODIsIDEzNDkyLCAxMzQ5OSwgMTM1MDUsIDEzNTE0LCAKKyAgICAxMzUyNSwgMTM1MzQsIDEzNTQ2LCAxMzU1OCwgMTM1NzAsIDEzNTgwLCAxMzU4OSwgMTM1OTgsIDEzNjA2LCAxMzYxMywgCisgICAgMTM2MjIsIDEzNjMwLCAxMzYzNCwgMTM2NDAsIDEzNjQ2LCAxMzY1MSwgNzc1MywgMTM2NTUsIDEzNjU3LCAxMzY2MSwgCisgICAgMTM2NjYsIDEzNjcyLCAxMzY4MSwgMTM2ODUsIDEzNjkzLCAxMzcwMCwgMTM3MDksIDEzNzE4LCAxMzcyNywgMTM3MzYsIAorICAgIDEzNzQ1LCAxMzc1NCwgMTM3NjMsIDEzNzcyLCAxMzc4MiwgMTM3OTIsIDEzODAxLCAxMzgwNywgMTM4MTQsIDEzODIxLCAKKyAgICAxMzgyNywgMTM4NDEsIDEzODQ4LCAxMzg1NiwgMTM4NjUsIDEzODcxLCAxMzg4MCwgMTM4ODksIDEzOTAwLCAxMzkxMCwgCisgICAgMTM5MTgsIDEzOTI1LCAxMzkzMywgMTM5NDIsIDEzOTU1LCAxMzk2MywgMTM5NzAsIDEzOTgzLCAxMzk4OSwgMTM5OTUsIAorICAgIDE0MDA1LCAxNDAxNCwgMTQwMjMsIDE0MDI4LCAxNDAzMiwgMTQwMzgsIDE0MDQ0LCAxNDA1MSwgODk2NiwgMTQwNTYsIAorICAgIDE0MDYxLCAxNDA2OCwgMTQwNzMsIDEyMzY5LCAxNDA3OCwgMTQwODYsIDE0MDkyLCAxNDA5NywgMTQxMDUsIDE0MTEzLCAKKyAgICAxNDEyMCwgMTQxMjgsIDE0MTM0LCAxNDE0MiwgMTQxNTAsIDE0MTU2LCAxNDE2MSwgMTQxNjcsIDE0MTc0LCAxNDE4MCwgCisgICAgMTQxODUsIDE0MTg5LCAxNDIwMCwgMTQyMDgsIDE0MjE0LCAxNDIxOSwgMTQyMjgsIDE0MjM0LCAxNDIzOSwgMTQyNDgsIAorICAgIDE0MjYyLCAzODUzLCAxNDI2NiwgMTQyNzEsIDE0Mjc2LCAxNDI4MiwgMTQyODcsIDE0MjkyLCAxNDI5NiwgMTQzMDEsIAorICAgIDE0MzA2LCAxNDMxMSwgNzc1MiwgMTQzMTYsIDE0MzIxLCAxNDMyNiwgMTQzMzEsIDE0MzM2LCAxNDM0MCwgMTQzNDUsIAorICAgIDE0MzUwLCAxNDM1NSwgMTQzNjAsIDE0MzY2LCAxNDM3MiwgMTQzNzcsIDE0MzgxLCAxNDM4NiwgMTQzOTEsIDE0Mzk2LCAKKyAgICA5Mjk0LCAxNDQwMSwgMTQ0MDYsIDE0NDExLCAxNDQxNiwgMTQ0MjEsIDE0NDM4LCAxNDQ1NiwgMTQ0NjgsIDE0NDgxLCAKKyAgICAxNDQ5OCwgMTQ1MTQsIDE0NTMxLCAxNDU0MSwgMTQ1NjAsIDE0NTcxLCAxNDU4MiwgMTQ1OTMsIDE0NjA0LCAxNDYxNiwgCisgICAgMTQ2MjcsIDE0NjM4LCAxNDY1NSwgMTQ2NjYsIDE0Njc3LCAxNDY4MiwgOTI5OSwgMTQ2ODcsIDE0NjkxLCAyMzgxLCAKKyAgICAxNDY5NSwgMTQ2OTgsIDE0NzA0LCAxNDcxMiwgMTQ3MjAsIDE0NzI1LCAxNDczMywgMTQ3NDEsIDE0NzQ4LCAxNDc1MywgCisgICAgMTQ3NTksIDE0NzY2LCAxNDc3NCwgMTQ3ODEsIDE0NzkzLCAxNDgwMSwgMTQ4MDYsIDExNTkwLCAxNDgxMiwgMTQ4MjEsIAorICAgIDE0ODMwLCAxNDgzOCwgMTQ4NDUsIDE0ODUxLCAxNDg1OSwgMTQ4NjYsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODk0LCAKKyAgICAxNDkwMiwgMTQ5MTIsIDE0OTE5LCAxNDkyNSwgMTQ5MzMsIDE0OTM5LCAxNDk0NywgMTQ5NTQsIDE0OTY3LCAxNDk3NCwgCisgICAgMTQ5ODMsIDE0OTkyLCAxNTAwMSwgMTUwMDksIDE1MDE5LCAxNTAyNiwgMTUwMzEsIDM1NjAsIDE1MDM4LCAxNTA0MywgCisgICAgMTM3MiwgMTUwNDcsIDE0MzE3LCAxNTA1MSwgMTUwNTcsIDE1MDYxLCAxNTA2OSwgMTUwODEsIDE1MDg2LCAxNTA5MywgCisgICAgMTUwOTksIDE1MTA0LCAxNTExMSwgMTQzMjIsIDE1MTE1LCAxNTExOSwgMTUxMjMsIDE0MzI3LCAxNTEyNywgMTQzMzIsIAorICAgIDE1MTMxLCAxNTEzOCwgMTUxNDMsIDE1MTQ3LCAxNTE1NCwgMTUxNTgsIDE1MTY2LCAxNTE3MywgMTUxNzcsIDE1MTg0LCAKKyAgICAxNTIwMSwgMTUyMTAsIDE1MjE0LCAxNTIxNywgMTUyMjUsIDE1MjMxLCAxNTIzNiwgMzYzOCwgMTUyNDAsIDE1MjQyLCAKKyAgICAxNTI1MCwgMTUyNTcsIDE1MjY3LCAxNTI3OSwgMTUyODQsIDE1MjkwLCAxNTI5NSwgMTUyOTksIDE1MzA1LCAxNTMxMCwgCisgICAgMTUzMTYsIDE1MzE5LCAxNTMyNiwgMTUzMzQsIDE1MzQxLCAxNTM0NywgMTUzNTMsIDE1MzU4LCAxNTM2NSwgMTUzNzEsIAorICAgIDE1Mzc2LCAxNTM4MywgMTUzODcsIDE1MzkzLCAxNTM5NywgMTU0MDQsIDE1NDEwLCAxNTQxNiwgMTU0MjQsIDE1NDMwLCAKKyAgICAxNTQzNSwgMTU0NDEsIDE1NDQ5LCAxNTQ1NywgMTU0NjMsIDE1NDY5LCAxNTQ3NCwgMTU0ODEsIDE1NDg2LCAxNTQ5MCwgCisgICAgMTU0OTYsIDE1NTAxLCAxNTUwOCwgMTU1MTMsIDE1NTE5LCAxNTUyMiwgMTU1MjgsIDE1NTM0LCAxNTUzNywgMTU1NDEsIAorICAgIDE1NTUzLCAxNTU1OSwgMTU1NjQsIDE1NTcxLCAxNTU3NywgMTU1ODMsIDE1NTk0LCAxNTYwNCwgMTU2MTMsIDE1NjIxLCAKKyAgICAxNTYyOCwgMTU2MzksIDE1NjQ5LCAxNTY1OSwgMTU2NjcsIDE1NjcwLCAxNDM0NiwgMTU2NzUsIDE1NjgwLCAxNDM1MSwgCisgICAgMTQ0ODYsIDE1Njg4LCAxNTcwMSwgMTU3MTYsIDE1NzI3LCAxNDUwMywgMTU3NDUsIDE1NzU4LCAxNTc3MSwgMTU3ODIsIAorICAgIDEwNDg1LCAxNTc5MywgMTU4MDYsIDE1ODI1LCAxNTgzNiwgMTU4NDcsIDE1ODU4LCAyNjQ5LCAxNTg3MSwgMTU4NzUsIAorICAgIDE1ODgzLCAxNTg5OCwgMTU5MTMsIDE1OTI0LCAxNTkzMSwgMTU5MzcsIDE1OTQ1LCAxNTk0OSwgMTU5NTUsIDE1OTU4LCAKKyAgICAxNTk2OCwgMTU5NzYsIDE1OTgzLCAxNTk5MSwgMTYwMDEsIDE2MDA2LCAxNjAxMywgMTYwMTgsIDE2MDI1LCAxNjAzNiwgCisgICAgMTYwNDYsIDE2MDUyLCAxNjA1NywgMTYwNjIsIDE0MzU2LCAxNjA2NiwgMTYwNzIsIDE2MDc4LCAxNjA4MywgMTYwODgsIAorICAgIDE2MDkzLCAxNjA5NywgMTQzNjEsIDE0MzY3LCAxNjEwMSwgMTQzNzMsIDE2MTA2LCAxNjExNCwgMTYxMjMsIDE2MTMwLCAKKyAgICA5MTQzLCAxNjEzNCwgMTYxMzYsIDE2MTQxLCAxNjE0NiwgMTYxNTIsIDE2MTU3LCAxNjE2MiwgMTYxNjcsIDE2MTcyLCAKKyAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5MywgMTYxOTksIDE2MjA0LCAxNjIwOSwgMTYyMTUsIDE2MjIwLCAxNjIyNSwgCisgICAgMTYyMzAsIDE2MjM1LCAxNjI0MSwgMTYyNDYsIDE2MjUxLCAxNjI1NywgMTYyNjMsIDE2MjY4LCAxNjI3MywgMTYyODAsIAorICAgIDE2Mjg2LCAxNjI5NywgMTYzMDQsIDE2MzA5LCAxNjMxMywgMTYzMTcsIDE2MzIwLCAxNjMyOCwgMTYzMzMsIDE2MzQwLCAKKyAgICAxNjM0NywgMTYzNTMsIDE2MzU4LCAxNjM2MywgMTYzNzAsIDE2MzgwLCAxNjM4NSwgMTYzOTIsIDE2Mzk4LCAxNjQwOCwgCisgICAgMTY0MTgsIDE2NDMyLCAxNjQ0NiwgMTY0NjAsIDE2NDc0LCAxNjQ4OSwgMTY1MDQsIDE2NTIxLCAxNjUzOSwgMTY1NTIsIAorICAgIDE2NTU4LCAxNjU2MywgMTY1NjgsIDE2NTcyLCAxNjU3NywgMTY1ODUsIDE2NTkxLCAxNjU5NiwgMTY2MDEsIDE2NjA1LCAKKyAgICAxNjYxMCwgMTY2MTQsIDE2NjE5LCAxNjYyMywgMTY2MzQsIDE2NjQwLCAxNjY0NSwgMTY2NTAsIDE2NjU3LCAxNjY2MiwgCisgICAgMTY2NjYsIDE2NjcxLCAxNjY3NiwgMTY2ODIsIDE2Njg5LCAxNjY5NSwgMTY3MDAsIDE2NzA0LCAxNjcxMCwgMTY3MTUsIAorICAgIDE2NzIwLCAxNjcyNCwgMTY3MzAsIDE2NzM1LCAxNjc0MCwgMTY3NDcsIDE2NzUyLCAxMzEwNCwgMTY3NTYsIDE2NzYxLCAKKyAgICAxNjc2NSwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODksIDE2Nzk5LCAxNjgwNywgMTY4MTQsIDE2ODE5LCAxNjgyMywgCisgICAgMTY4MzIsIDE2ODQwLCAxNjg0NywgMTY4NTQsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc2LCAxNjg4MiwgMTY4ODcsIAorICAgIDE2ODkzLCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNywgMTY5MjMsIDE2OTI4LCAxNjkzMywgOTM0MSwgMTY5NDIsIAorICAgIDE2OTQ1LCAxNjk1MSwgMTY5NTYsIDE2OTYxLCAxNjk3MSwgMTY5NzgsIDE2OTg0LCAxNjk4OSwgMTY5OTQsIDE3MDAwLCAKKyAgICAxNzAwNSwgMTcwMTEsIDE3MDE2LCAxNzAyMiwgMTcwMjgsIDE3MDMzLCAxNzA0MSwgMTcwNDgsIDE3MDUzLCAxNzA1OCwgCisgICAgMTcwNjQsIDE3MDY5LCAxNzA3MywgMTcwODIsIDE3MDkzLCAxNzEwMCwgMTcxMDUsIDE3MTEzLCAxNzExOSwgMTcxMjYsIAorICAgIDE3MTMyLCAxNzEzNywgMTcxNDEsIDE3MTQ3LCAxNzE1MiwgMTcxNTcsIDE3MTYyLCAxNDQwLCA3Nzc3LCAyODc3LCAxNzE2NiwgCisgICAgMTcxNzAsIDE3MTc0LCAxNzE3OCwgMTcxODIsIDE3MTg2LCAxNzE4OSwgMTcxOTYsIDE3MjA0LCAxNDM4NywgMTcyMTEsIAorICAgIDE3MjIxLCAxNzIyOSwgMTcyMzYsIDE3MjQ0LCAxNzI1NCwgMTcyNjMsIDE3Mjc2LCAxNzI4MSwgMTcyODYsIDE3Mjk0LCAKKyAgICAxNzMwMSwgMTMyMDAsIDEzMjA5LCAxNzMwOCwgMTczMTgsIDE3MzMzLCAxNzMzOSwgMTczNDYsIDE3MzUzLCAxNzM1OSwgCisgICAgMTczNjcsIDE3Mzc3LCAxNzM4NywgMTQzOTIsIDE3Mzk2LCAxNzQwMiwgMTc0MDgsIDE3NDE2LCAxNzQyNCwgMTc0MjksIAorICAgIDE3NDM4LCAxNzQ0NiwgMTc0NTgsIDE3NDY4LCAxNzQ3OCwgMTc0ODgsIDE3NDk3LCAxNzUwOSwgMTc1MTksIDE3NTI5LCAKKyAgICAxNzU0MCwgMTc1NDUsIDE3NTU3LCAxNzU2OSwgMTc1ODEsIDE3NTkzLCAxNzYwNSwgMTc2MTcsIDE3NjI5LCAxNzY0MSwgCisgICAgMTc2NTMsIDE3NjY1LCAxNzY3NiwgMTc2ODgsIDE3NzAwLCAxNzcxMiwgMTc3MjQsIDE3NzM2LCAxNzc0OCwgMTc3NjAsIAorICAgIDE3NzcyLCAxNzc4NCwgMTc3OTYsIDE3ODA3LCAxNzgxOSwgMTc4MzEsIDE3ODQzLCAxNzg1NSwgMTc4NjcsIDE3ODc5LCAKKyAgICAxNzg5MSwgMTc5MDMsIDE3OTE1LCAxNzkyNywgMTc5MzgsIDE3OTUwLCAxNzk2MiwgMTc5NzQsIDE3OTg2LCAxNzk5OCwgCisgICAgMTgwMTAsIDE4MDIyLCAxODAzNCwgMTgwNDYsIDE4MDU4LCAxODA2OSwgMTgwODEsIDE4MDkzLCAxODEwNSwgMTgxMTcsIAorICAgIDE4MTI5LCAxODE0MSwgMTgxNTMsIDE4MTY1LCAxODE3NywgMTgxODksIDE4MjAwLCAxODIxMiwgMTgyMjQsIDE4MjM2LCAKKyAgICAxODI0OCwgMTgyNjAsIDE4MjcyLCAxODI4NCwgMTgyOTYsIDE4MzA4LCAxODMyMCwgMTgzMzEsIDE4MzQzLCAxODM1NSwgCisgICAgMTgzNjcsIDE4Mzc5LCAxODM5MSwgMTg0MDMsIDE4NDE1LCAxODQyNywgMTg0MzksIDE4NDUxLCAxODQ2MiwgMTg0NzQsIAorICAgIDE4NDg2LCAxODQ5OCwgMTg1MTAsIDE4NTIzLCAxODUzNiwgMTg1NDksIDE4NTYyLCAxODU3NSwgMTg1ODgsIDE4NjAxLCAKKyAgICAxODYxMywgMTg2MjYsIDE4NjM5LCAxODY1MiwgMTg2NjUsIDE4Njc4LCAxODY5MSwgMTg3MDQsIDE4NzE3LCAxODczMCwgCisgICAgMTg3NDMsIDE4NzU1LCAxODc2OCwgMTg3ODEsIDE4Nzk0LCAxODgwNywgMTg4MjAsIDE4ODMzLCAxODg0NiwgMTg4NTksIAorICAgIDE4ODcyLCAxODg4NSwgMTg4OTcsIDE4OTEwLCAxODkyMywgMTg5MzYsIDE4OTQ5LCAxODk2MiwgMTg5NzUsIDE4OTg4LCAKKyAgICAxOTAwMSwgMTkwMTQsIDE5MDI3LCAxOTAzOSwgMTkwNTIsIDE5MDY1LCAxOTA3OCwgMTkwOTEsIDE5MTA0LCAxOTExNywgCisgICAgMTkxMzAsIDE5MTQzLCAxOTE1NiwgMTkxNjksIDE5MTgxLCAxOTE5NCwgMTkyMDcsIDE5MjIwLCAxOTIzMywgMTkyNDYsIAorICAgIDE5MjU5LCAxOTI3MiwgMTkyODUsIDE5Mjk4LCAxOTMxMSwgMTkzMjMsIDE5MzM0LCAxOTM0NywgMTkzNjAsIDE5MzczLCAKKyAgICAxOTM4NiwgMTkzOTksIDE5NDEyLCAxOTQyNSwgMTk0MzgsIDE5NDUxLCAxOTQ2NCwgMTk0NzYsIDE5NDg5LCAxOTUwMiwgCisgICAgMTk1MTUsIDE5NTI4LCAxOTU0MSwgMTk1NTQsIDE5NTY3LCAxOTU4MCwgMTk1OTMsIDE5NjA2LCAxOTYxOCwgMTk2MzEsIAorICAgIDE5NjQ0LCAxOTY1NywgMTk2NzAsIDE5NjgzLCAxOTY5NiwgMTk3MDksIDE5NzIyLCAxOTczNSwgMTk3NDgsIDE5NzYwLCAKKyAgICAxOTc3MywgMTk3ODYsIDE5Nzk5LCAxOTgxMiwgMTk4MjUsIDE5ODM4LCAxOTg1MSwgMTk4NjQsIDE5ODc3LCAxOTg5MCwgCisgICAgMTk5MDIsIDE5OTE1LCAxOTkyOCwgMTk5NDEsIDE5OTU0LCAxOTk2NywgMTk5ODAsIDE5OTkzLCAyMDAwNiwgMjAwMTksIAorICAgIDIwMDMyLCAyMDA0NCwgMjAwNTcsIDIwMDcwLCAyMDA4MywgMjAwOTYsIDIwMTA5LCAyMDEyMiwgMjAxMzUsIDIwMTQ4LCAKKyAgICAyMDE2MSwgMjAxNzQsIDIwMTg2LCAyMDE5OSwgMjAyMTIsIDIwMjI1LCAyMDIzOCwgMjAyNTEsIDIwMjY0LCAyMDI3NywgCisgICAgMjAyOTAsIDIwMzAzLCAyMDMxNiwgMjAzMjgsIDIwMzQxLCAyMDM1NCwgMjAzNjcsIDIwMzgwLCAyMDM5MywgMjA0MDYsIAorICAgIDIwNDE5LCAyMDQzMiwgMjA0NDUsIDIwNDU4LCAyMDQ3MCwgMjA0ODMsIDIwNDk2LCAyMDUwOSwgMjA1MjIsIDIwNTM1LCAKKyAgICAyMDU0OCwgMjA1NjEsIDIwNTc0LCAyMDU4NywgMjA2MDAsIDIwNjEyLCAyMDYyNSwgMjA2MzgsIDIwNjUxLCAyMDY2NCwgCisgICAgMjA2NzcsIDIwNjkwLCAyMDcwMywgMjA3MTYsIDIwNzI5LCAyMDc0MiwgMjA3NTQsIDIwNzY1LCAyMDc3MywgMjA3ODEsIAorICAgIDIwNzg4LCAyMDc5NCwgMjA3OTgsIDIwODA0LCAyMDgxMCwgMjA4MTgsIDIwODI0LCAyMDgyOSwgMjA4MzMsIDIwODQyLCAKKyAgICA5MTQ4LCAyMDg1MywgMjA4NjAsIDIwODY4LCAyMDg3NSwgMjA4ODIsIDEwOTQxLCAyMDg4OSwgMjA4OTgsIDIwOTAzLCAKKyAgICAyMDkwOCwgNzgwNSwgMjA5MTUsIDIwOTIwLCAyMDkyMywgMjA5MjgsIDIwOTM2LCAyMDk0MywgMjA5NTAsIDIwOTU3LCAKKyAgICAyMDk2MywgMjA5NzIsIDIwOTgxLCAyMDk4NywgMjA5OTYsIDIxMDAwLCAyMTAwNiwgMjEwMTEsIDIxMDIxLCAyMTAyOCwgCisgICAgMjEwMzQsIDIxMDQyLCAyMTA0OCwgMjEwNTUsIDIxMDY1LCAyMTA3NCwgMjEwNzgsIDIxMDg1LCAyMTA4OSwgMjEwOTQsIAorICAgIDIxMTAwLCAyMTEwOCwgMjExMTIsIDIxMTIyLCAxNDQwMiwgMjExMzEsIDIxMTM3LCAyMTE0MSwgMjExNTAsIDE0NDA3LCAKKyAgICAyMTE1NiwgMjExNjMsIDIxMTc0LCAyMTE4MiwgMjExOTEsIDIxMTk5LCA4OTMxLCAyMTIwNywgMjEyMTIsIDIxMjE4LCAKKyAgICAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgOTYzMiwgMjEyNDAsIDIxMjQ4LCAyMTI1NSwgMjEyNjQsIDIxMjcxLCAKKyAgICAyMTI3OCwgMTA4NzEsIDIxMjg1LCAyMTI5MSwgMjEyOTUsIDIxMzAxLCAyMTMwOCwgMjEzMTQsIDIxMzIyLCAyMTMyOCwgCisgICAgMjEzMzUsIDIxMzQxLCAyMTM0NywgMjEzNTYsIDIxMzYwLCAyMTM2OCwgMjEzNzcsIDIxMzg0LCAyMTM4OSwgMjEzOTMsIAorICAgIDIxNDA0LCAyMTQwOSwgMjE0MTQsIDIxNDE5LCAyMTQzMiwgNzk5NSwgMjE0MzYsIDIxNDQyLCAyMTQ1MCwgMjE0NTQsIAorICAgIDIxNDYxLCAyMTQ3MCwgMjE0NzUsIDE0Njc4LCAyMTQ4MywgMjE0ODcsIDIxNDk5LCAyMTUwNCwgMjE1MDgsIDIxNTExLCAKKyAgICAyMTUxNywgMjE1MjMsIDIxNTI4LCAyMTUzMiwgMjE1MzUsIDIxNTQ2LCAyMTU1MSwgOTM3NiwgMjE1NTgsIDIxNTYzLCAKKyAgICA5MzgxLCAyMTU2OCwgMjE1NzMsIDIxNTc4LCAyMTU4MywgMjE1ODgsIDIxNTkzLCAyMTU5OCwgMjE2MDMsIDIxNjA4LCAKKyAgICAyMTYxMywgMjE2MTgsIDIxNjIzLCAyMTYyOSwgMjE2MzQsIDIxNjM5LCAyMTY0NCwgMjE2NDksIDIxNjU0LCAyMTY1OSwgCisgICAgMjE2NjQsIDIxNjY5LCAyMTY3NCwgMjE2ODAsIDIxNjg2LCAyMTY5MSwgMjE2OTYsIDIxNzAxLCAyMTcwNiwgMjE3MTEsIAorICAgIDIxNzE2LCAyMTcyMSwgMjE3MjYsIDIxNzMxLCAyMTczNywgMjE3NDIsIDIxNzQ3LCAyMTc1MiwgMjE3NTgsIDIxNzY0LCAKKyAgICAyMTc2OSwgMjE3NzQsIDIxNzc5LCAyMTc4NCwgMjE3ODksIDIxNzk0LCAyMTc5OSwgMjE4MDQsIDIxODEwLCAyMTgxNSwgCisgICAgMjE4MjAsIDIxODI1LCAyMTgzMCwgMjE4MzYsIDIxODQxLCAyMTg0NiwgMjE4NTAsIDEzNjgsIDEyOSwgMjE4NTgsIDIxODYyLCAKKyAgICAyMTg2NiwgMjE4NzAsIDIxODc1LCAyMTg3OSwgMTMxMTAsIDEyNDY5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAyMTg5NywgCisgICAgMjE5MDEsIDIxOTA2LCAyMTkxMCwgMjE5MTYsIDIxOTIxLCAyMTkyNSwgMjE5MjksIDIxOTM3LCAyMTk0MSwgMjE5NDUsIAorICAgIDIxOTUwLCAyMTk1NSwgMjE5NTksIDIxOTY1LCAyMTk3MCwgMjE5NzQsIDIxOTc5LCAyMTk4NCwgMjE5ODgsIDIxOTk1LCAKKyAgICAyMjAwMiwgMjIwMDksIDIyMDEzLCAyMjAxNywgMjIwMjIsIDIyMDI2LCAyMjAyOSwgMjIwMzUsIDIyMDQ4LCAyMjA1MywgCisgICAgMjIwNjIsIDIyMDY3LCA5NDIxLCAyMjA3MiwgMjIwNzUsIDI3MTIsIDI3MTcsIDIyMDc5LCAyMjA4NSwgMjIwOTEsIDcyMDksIAorICAgIDIyMDk2LCAyMjEwMSwgMjIxMDYsIDIyMTEyLCAyMjExNywgMTM4OTYsIDIyMTIyLCAyMjEyNywgMjIxMzIsIDIyMTM3LCAKKyAgICAyMjE0MywgMjIxNDgsIDIyMTUzLCAyMjE1OSwgMjIxNjQsIDIyMTY4LCAyMjE3MywgMjIxNzgsIDIyMTgzLCAyMjE4OCwgCisgICAgMjIxOTIsIDIyMTk3LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAyMjIxNiwgMjIyMjEsIDIyMjI1LCAyMjIzMCwgMjIyMzQsIAorICAgIDIyMjM5LCAyMjI0NCwgMjIyNDksIDIyMjU0LCAyODg2LCAyMjE2OSwgMjIyNTgsIDIyMjY2LCAyMjI3MywgOTcyNiwgCisgICAgMjIyODUsIDIyMjkzLCAyMjE3NCwgMjIzMDAsIDIyMzA1LCAyMjMxMywgMjIxNzksIDIyMzE4LCAyMjMyMywgMjIzMzEsIAorICAgIDIyMzM2LCAyMjE4NCwgMjIzNDEsIDIyMzQ2LCAyMjM1MCwgMjIzNTYsIDIyMzY0LCAyMjM2NywgMjIzNzQsIDIyMzc4LCAKKyAgICAyMjM4MiwgMjIzODgsIDIyMzk1LCAyMjQwMCwgODk1OCwgMTcyNywgMTczMiwgMjI0MDQsIDIyNDEwLCAyMjQxNiwgMjI0MjEsIAorICAgIDIyNDI1LCAyMjQyOSwgMjI0MzMsIDIyNDM3LCAyMjQ0MSwgMjI0NDUsIDIyNDQ5LCAyMjQ1MiwgMjI0NTgsIDIyNDY1LCAKKyAgICAyMjQ3MywgMjI0NzksIDIyNDg1LCAyMjQ5MCwgMjI0OTUsIDIyNDk5LCAxMzgxNiwgMTM4MjMsIDIyNTA0LCAyMjUxNiwgCisgICAgMjI1MTksIDIyNTI2LCAxNjM0OSwgMjI1MzMsIDIyNTQxLCAyMjU1MiwgMjI1NjEsIDIyNTc0LCAyMjU4NCwgMjI1OTgsIAorICAgIDIyNjEwLCAyMjYyNCwgMjI2MzYsIDIyNjQ2LCAyMjY1OCwgMjI2NjQsIDIyNjc5LCAyMjcwMywgMjI3MjEsIDIyNzQwLCAKKyAgICAyMjc1MywgMjI3NjcsIDIyNzg1LCAyMjgwMSwgMjI4MTgsIDIyODM2LCAyMjg0NywgMjI4NjYsIDIyODgzLCAyMjkwMywgCisgICAgMjI5MjEsIDIyOTMzLCAyMjk0NywgMjI5NjEsIDIyOTczLCAyMjk5MCwgMjMwMDksIDIzMDI3LCAyMzAzOSwgMjMwNTcsIAorICAgIDIzMDc2LCAxNDU0NiwgMjMwODksIDIzMTA5LCAyMzEyMSwgMTA1MTYsIDIzMTMzLCAyMzEzOCwgMjMxNDMsIDIzMTQ4LCAKKyAgICAyMzE1NCwgMjMxNTksIDIzMTYzLCAyMzE3MCwgMjM5OCwgMjMxNzQsIDIzMTgwLCAyMzE4NCwgMjMxODcsIDIzMTkxLCAKKyAgICAyMzE5OSwgMjMyMDUsIDIyMjAyLCAyMzIwOSwgMjMyMTgsIDIzMjI5LCAyMzIzNSwgMjMyNDEsIDIzMjUwLCAyMzI1OCwgCisgICAgMjMyNjUsIDIzMjcwLCAyMzI3NCwgMjMyODEsIDIzMjg3LCAyMzI5NiwgMjMzMDQsIDIzMzExLCAyMzMyMSwgMjMzMzAsIAorICAgIDIzMzQwLCAyMzM0NSwgMjMzNTQsIDIzMzYzLCAyMzM3NCwgMjMzODUsIDM5NjMsIDIzMzk1LCAyMzM5OSwgMjM0MDksIAorICAgIDIzNDE3LCAyMzQyNywgMjM0MzgsIDIzNDQzLCAyMzQ1MywgMjM0NjEsIDIzNDY4LCAyMzQ3NCwgMjM0ODEsIDIzNDg2LCAKKyAgICAyMjIxMiwgMjM0OTAsIDIzNDk5LCAyMzUwMywgMjM1MDYsIDIzNTExLCAyMzUxOCwgMjM1MjcsIDIzNTM1LCAyMzU0MywgCisgICAgMjM1NTMsIDIzNTYyLCAyMzU2OCwgMjM1NzQsIDIyMjE3LCAyMjIyMiwgMjM1NzgsIDIzNTg4LCAyMzU5OCwgMjM2MDgsIAorICAgIDIzNjE2LCAyMzYyMywgMjM2MzMsIDIzNjQxLCAyMzY0OSwgMjM2NTUsIDIzNjYzLCA5MzAsIDIzNjcyLCAxNDczNywgNTQyLCAKKyAgICAyMzY4NiwgMjM2OTUsIDIzNzAzLCAyMzcxNCwgMjM3MjUsIDIzNzM1LCAyMzc0NCwgMjM3NTYsIDIzNzY1LCAyMzc3NCwgCisgICAgMjM3ODAsIDIzNzg5LCAyMzc5OCwgMjM4MDgsIDIzODE2LCAyMzgyNCwgOTM1MywgMjM4MzAsIDIzODMzLCAyMzgzNywgCisgICAgMjM4NDIsIDIzODQ3LCA5ODQxLCAyMjIzNSwgMjIyNDAsIDIzODU1LCAyMzg2MSwgMjM4NjcsIDIzODcyLCAyMzg3NywgCisgICAgMjM4ODEsIDIzODg5LCAyMzg5NSwgMjM5MDEsIDIzOTA1LCAzNTI1LCAyMzkxMywgMjM5MTgsIDIzOTIzLCAyMzkyNywgCisgICAgMjM5MzEsIDk5MjEsIDIzOTM4LCAyMzk0NiwgMjM5NjAsIDIzOTY3LCAyMzk3MywgOTkzMCwgOTkzNiwgMjM5ODEsIDIzOTg5LCAKKyAgICAyMzk5NiwgMjQwMDEsIDI0MDA2LCAyMjI0NSwgMjQwMTIsIDI0MDIzLCAyNDAyNywgMjQwMzIsIDI2MDEsIDI0MDM3LCAKKyAgICAyNDA0OCwgMjQwNTQsIDI0MDU5LCAyNDA2MywgMjQwNjcsIDI0MDcwLCAyNDA3NywgMjQwODQsIDI0MDkxLCAyNDA5NywgCisgICAgMjQxMDEsIDIyMjUwLCAyNDEwNiwgMjQxMTAsIDI0MTE0LCAxMDM3LCAyNDExOSwgMjQxMjQsIDI0MTI5LCAyNDEzNCwgCisgICAgMjQxMzksIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjksIDI0MTc0LCAyNDE3OSwgMjQxODQsIAorICAgIDI0MTkwLCAyNDE5NSwgMjQyMDAsIDI0MjA1LCAyNDIxMCwgMjQyMTUsIDI0MjIwLCAyNDIyNiwgMjQyMzEsIDI0MjM2LCAKKyAgICAyNDI0MSwgMjQyNDYsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY3LCAyNDI3MywgMjQyNzgsIDI0Mjg0LCAyNDI4OSwgCisgICAgMjQyOTQsIDUsIDI0MzAwLCAyNDMwNCwgMjQzMDgsIDI0MzEyLCAyNDMxNywgMjQzMjEsIDI0MzI1LCAyNDMyOSwgMjQzMzMsIAorICAgIDI0MzM4LCAyNDM0MiwgMjQzNDcsIDI0MzUxLCAyNDM1NCwgMjQzNTgsIDI0MzYzLCAyNDM2NywgMjQzNzIsIDI0Mzc2LCAKKyAgICAyNDM4MCwgMjQzODQsIDI0Mzg5LCAyNDM5MywgMjQzOTcsIDI0NDA3LCAyNDQxMiwgMjQ0MTYsIDI0NDIwLCAyNDQyNSwgCisgICAgMjQ0MzAsIDI0NDM5LCAyNDQ0NCwgMjQ0NDksIDI0NDUzLCAyNDQ1NywgMjQ0NzAsIDI0NDgyLCAyNDQ5MSwgMjQ1MDAsIAorICAgIDI0NTA2LCAyNDUxMSwgMjQ1MTUsIDI0NTE5LCAyNDUyOSwgMjQ1MzgsIDI0NTQ2LCAyNDU1MiwgMjQ1NTcsIDI0NTYxLCAKKyAgICAyNDU2OCwgMjQ1NzgsIDI0NTg3LCAyNDU5NSwgMjQ2MDMsIDI0NjEwLCAyNDYxOCwgMjQ2MjcsIDI0NjM2LCAyNDY0NCwgCisgICAgMjQ2NDksIDI0NjUzLCAyNDY1NywgMjQ2NjAsIDI0NjYyLCAyNDY2NiwgMjQ2NzAsIDI0Njc1LCAyNDY4MCwgMjQ2ODQsIAorICAgIDI0Njg4LCAyNDY5MSwgMjQ2OTUsIDI0Njk4LCAyNDcwMiwgMjQ3MDUsIDI0NzA4LCAyNDcxMiwgMjQ3MTgsIDI0NzIyLCAKKyAgICAyNDcyNiwgMjQ3MzAsIDI0NzM1LCAyNDc0MCwgMjQ3NDUsIDI0NzQ5LCAyNDc1MiwgMjQ3NTcsIDI0NzYzLCAyNDc2OCwgCisgICAgMjQ3NzQsIDI0Nzc5LCAyNDc4MywgMjQ3ODcsIDI0NzkxLCAyNDc5NiwgMjQ4MDAsIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIAorICAgIDI0ODIwLCAyNDgyNCwgMjQ4MjcsIDI0ODMxLCAyNDgzNywgMjQ4NDMsIDI0ODQ3LCAyNDg1MSwgMjQ4NTYsIDI0ODYzLCAKKyAgICAyNDg2OSwgMjQ4NzMsIDI0ODgyLCAyNDg4NiwgMjQ4OTAsIDI0ODkzLCAyNDg5OSwgMjQ5MDQsIDI0OTEwLCAxNDg5LCAKKyAgICAxNzkxLCAyNDkxNSwgMjQ5MjAsIDI0OTI1LCAyNDkzMCwgMjQ5MzUsIDI0OTQwLCAyNDk0NSwgMjE0OCwgMjE5NCwgMjQ5NTAsIAorICAgIDI0OTUzLCAyNDk1NywgMjQ5NjEsIDI0OTY2LCAyNDk3MCwgMjQ5NzQsIDI0OTc3LCAyNDk4MiwgMjQ5ODcsIDI0OTkxLCAKKyAgICAyNDk5NCwgMjQ5OTksIDI1MDAzLCAyNTAwOCwgMjUwMTIsIDE0NzQ5LCAyNTAxNywgMjUwMjAsIDI1MDIzLCAyNTAyNywgCisgICAgMjUwMzIsIDI1MDM2LCAyNTA0OSwgMjUwNTMsIDI1MDU2LCAyNTA2NCwgMjUwNzMsIDI1MDgwLCAyNTA4NSwgMjUwOTEsIAorICAgIDI1MDk3LCAyNTEwNSwgMjUxMTIsIDI1MTE5LCAyNTEyMywgMjUxMjcsIDI1MTMxLCAyNTEzNiwgMjUxNDEsIDI1MTQ1LCAKKyAgICAyNTE1MywgMjUxNTgsIDI1MTcwLCAyNTE4MSwgMjUxODYsIDI1MTkwLCAyNTE5NCwgMjUyMDAsIDI1MjA1LCAyNTIxMCwgCisgICAgMjUyMTQsIDI1MjE4LCAyNTIyMSwgMjUyMjcsIDc5MTUsIDIzMTYsIDI1MjMxLCAyNTIzNiwgMjUyNTIsIDk0NjgsIDI1MjcyLCAKKyAgICAyNTI4MSwgMjUyOTcsIDI1MzAxLCAyNTMwNCwgMjUzMTAsIDI1MzIwLCAyNTMyNiwgMjUzMzUsIDI1MzUwLCAyNTM2MiwgCisgICAgMjUzNzMsIDI1MzgxLCAyNTM5MCwgMjUzOTYsIDI1NDA1LCAyNTQxNSwgMjU0MjYsIDI1NDM3LCAyNTQ0NiwgMjU0NTMsIAorICAgIDI1NDYyLCAyNTQ3MCwgMjU0NzcsIDI1NDg1LCAyNTQ5MiwgMjU0OTksIDI1NTEyLCAyNTUxOSwgMjU1MjUsIDI1NTMwLCAKKyAgICAyNTUzOSwgMjU1NDUsIDI1NTUwLCAyNTU1OCwgMjU1NjUsIDIzNDE5LCAyNTU3NywgMjU1ODksIDI1NjAzLCAyNTYxMSwgCisgICAgMjU2MTgsIDI1NjMwLCAyNTYzOSwgMjU2NDgsIDI1NjU2LCAyNTY2NCwgMjU2NzIsIDI1Njc5LCAyNTY4OCwgMjU2OTYsIAorICAgIDI1NzA2LCAyNTcxNSwgMjU3MjUsIDI1NzM0LCAyNTc0MywgMjU3NTEsIDI1NzU2LCAyNTc2MCwgMjU3NjMsIDI1NzY3LCAKKyAgICAyNTc3MSwgMjU3NzUsIDI1Nzc5LCAyNTc4MywgMjU3ODksIDI1Nzk1LCAyNTgwMywgMTQ3OTQsIDI1ODEwLCAyNTgxNSwgCisgICAgMjU4MjIsIDI1ODI4LCAyNTgzNSwgMTQ4MDIsIDI1ODQyLCAyNTg0NSwgMjU4NTcsIDI1ODY1LCAyNTg3MSwgMjU4NzYsIAorICAgIDI1ODgwLCA5ODcxLCAyNTg5MSwgMjU5MDEsIDI1OTEwLCAyNTkxNywgMjU5MjEsIDE0ODA3LCAyNTkyNCwgMjU5MzEsIAorICAgIDI1OTM1LCAyNTk0MSwgMjU5NDQsIDI1OTUxLCAyNTk1NywgMjU5NjQsIDI1OTcwLCAyNTk3NCwgMjU5NzksIDI1OTgzLCAKKyAgICAyNTk5MiwgMjU5OTksIDI2MDA1LCA3OTU2LCAyNjAxMiwgMjYwMjAsIDI2MDI3LCAyNjAzMywgMjYwMzgsIDI2MDQ0LCAKKyAgICAyNjA1MCwgMjYwNTgsIDI2MDYyLCAyNjA2NSwgMjYwNjcsIDI1NzY4LCAyNjA3NiwgMjYwODIsIDI2MDkyLCAyNjA5NywgCisgICAgMjYxMDQsIDI2MTEwLCAyNjExNSwgMjYxMjAsIDI2MTI1LCAyNjEyOSwgMjYxMzQsIDI2MTQxLCAyNjE1MCwgMjYxNTQsIAorICAgIDI2MTYxLCAyNjE3MCwgMjYxNzYsIDI2MTgxLCAyNjE4NywgMjYxOTIsIDI2MTk5LCAyNjIxMCwgMjYyMTUsIDI2MjE5LCAKKyAgICAyNjIyOSwgMjYyMzUsIDI2MjM5LCAyNjI0NCwgMjYyNTQsIDI2MjYzLCAyNjI2NywgMjYyNzQsIDI2MjgyLCAyNjI4OSwgCisgICAgMjYyOTUsIDI2MzAwLCAyNjMwOCwgMjYzMTUsIDI2MzI3LCAyNjMzNiwgMjYzNDAsIDEzMDQ2LCAyNjM0OCwgMjYzNTgsIAorICAgIDI2MzYyLCAyNTA2MCwgMjYzNzMsIDI2Mzc4LCAyNjM4MiwgMjYzODksIDI2Mzk2LCAyMTk2MSwgMjU2OTMsIDI2NDAxLCAKKyAgICAyNjQwNSwgMjY0MDgsIDIyODUzLCAyNjQxMywgMjY0MjcsIDI2NDQzLCAyNjQ2MSwgMjY0ODAsIDI2NDk3LCAyNjUxNSwgCisgICAgMjI4NzIsIDI2NTMyLCAyNjU1MiwgMjI4ODksIDI2NTY0LCAyNjU3NiwgMTU3MzIsIDI2NTg4LCAyMjkwOSwgMjY2MDIsIAorICAgIDI2NjE0LCAxMDUyOSwgMjY2MjgsIDI2NjMzLCAyNjYzOCwgMjY2NDMsIDI2NjQ5LCAyNjY1NSwgMjY2NjEsIDI2NjY1LCAKKyAgICAyNjY3MiwgMjY2NzcsIDI2Njg3LCAyNjY5MywgMTAxNzYsIDI2Njk5LCAyNjcwMSwgMjY3MDYsIDI2NzE0LCAyNjcxOCwgCisgICAgMjYxMzcsIDI2NzI0LCAyNjczMSwgMTE1MTcsIDExNTI3LCAyNjczOCwgMjY3NDgsIDI2NzUzLCAyNjc1NywgMjY3NjAsIAorICAgIDI2NzY2LCAyNjc3NCwgMjY3ODYsIDI2Nzk2LCAyNjgxMiwgMjY4MjUsIDI2ODM5LCAxNTc1MCwgMjY4NTMsIDI2ODYwLCAKKyAgICAyNjg2NCwgMjY4NjcsIDI2ODcyLCAyNjg3NiwgMjY4ODMsIDI2ODkwLCAyNjkwMCwgMjY5MDUsIDI2OTEwLCAyNjkxNSwgCisgICAgMjY5MjMsIDI2OTMxLCAyNjk0MCwgMjY5NDUsIDk1NjUsIDI2OTQ5LCAyNjk1MiwgMjY5NTUsIDI2OTYwLCAyNjk2NywgCisgICAgMjY5NzIsIDI2OTg4LCAyNjk5NiwgMjcwMDQsIDk0MTYsIDI3MDEyLCAyNzAxNywgMjcwMjEsIDI3MDI3LCAyNzAzMywgCisgICAgMjcwMzYsIDI3MDQyLCAyNzA1NCwgMjcwNjIsIDI3MDY5LCAyNzA3NSwgMjcwODIsIDI3MDkzLCAyNzEwNywgMjcxMjAsIAorICAgIDI3MTI5LCAyNzEzOCwgMjcxNTAsIDI3MTYxLCAyNzE3MSwgMjcxODAsIDI3MTg5LCAyNzE5NywgMjcyMDgsIDc5MzgsIAorICAgIDI3MjE1LCAyNzIyMSwgMjcyMjYsIDI3MjMyLCAyNzIzOSwgMjcyNDksIDI3MjU5LCAyNzI2OCwgMjcyNzQsIDI3MjgxLCAKKyAgICAyNzI4NiwgMjcyOTMsIDI3MzAxLCAyNzMwOSwgMjczMjEsIDYyNDYsIDI3MzI4LCAyNzMzNywgMjczNDUsIDI3MzUxLCAKKyAgICAyNzM1NywgMjczNjIsIDI3MzY2LCAyNzM2OSwgMjczNzUsIDI3MzgyLCAyNzM4NywgMjczOTIsIDI3Mzk2LCAyNzQwOCwgCisgICAgMjc0MTksIDI3NDI4LCAyNzQzNiwgMTQ5MzQsIDI3NDQxLCAyNzQ0NywgMjc0NTMsIDExNTEwLCA4NjM1LCAyNzQ1OCwgCisgICAgMjc0NjIsIDI3NDY1LCAyNzQ2OCwgMjc0NzQsIDI3NDgyLCAyNzQ5MCwgMjc0OTQsIDI3NDk4LCAyNzUwMywgMjc1MDYsIAorICAgIDI3NTE1LCAyNzUxOSwgMjc1MjcsIDI3NTM4LCAyNzU0MiwgMjc1NDgsIDI3NTU0LCAyNzU1OCwgMjc1NjQsIDI3NTcyLCAKKyAgICAyNzU5NCwgMjc2MTgsIDI3NjI1LCAyNzYzMiwgMjc2MzgsIDI3NjQ2LCAyNzY1MiwgMjc2NTcsIDI3NjY4LCAyNzY4NiwgCisgICAgMjc2OTMsIDI3NzAxLCAyNzcwNSwgMjc3MTQsIDI3NzI3LCAyNzczNSwgMjc3NDcsIDI3NzU4LCAyNzc2OCwgMjc3ODIsIAorICAgIDI3NzkxLCAyNzc5OSwgMjc4MTEsIDk0ODUsIDI3ODIyLCAyNzgzMywgMjc4NDUsIDI3ODU1LCAyNzg2NCwgMjc4NjksIAorICAgIDI3ODczLCAyNzg4MSwgMjc4OTEsIDI3ODk2LCAyNzkwMCwgMjc5MDMsIDI3OTA2LCAyNzkxNCwgMjc5MjIsIDI3OTMxLCAKKyAgICAyNzk0MSwgMjc5NTAsIDI3OTU2LCAyNzk3MCwgMjY2MywgMjc5OTIsIDI4MDAzLCAyODAxMiwgMjgwMjIsIDI4MDM0LCAKKyAgICAyODA0MywgMjgwNTIsIDI4MDYyLCAyODA3MCwgMjgwNzgsIDI4MDg3LCAyODA5MiwgMjgxMDMsIDI4MTA4LCAyODExOSwgCisgICAgMjgxMjMsIDI4MTMzLCAyODE0MiwgMjgxNTAsIDI4MTYwLCAyODE3MCwgMjgxNzgsIDI4MTg3LCAyODE5NCwgMjgyMDIsIAorICAgIDI4MjA5LCAyODIxOCwgMjgyMjIsIDI4MjMwLCAyODIzNywgMjgyNDUsIDI4MjUyLCAyODI2MywgMjgyNzgsIDI4Mjg1LCAKKyAgICAyODI5MSwgMjgzMDEsIDI4MzEwLCAyODMxNiwgMjgzMjAsIDI4MzI3LCAyODMzMSwgMTQwMTgsIDI4MzM3LCAyODM0MSwgCisgICAgMjgzNDYsIDI4MzUzLCAyODM1NywgMjgzNjEsIDI4MzY5LCAyODM3NywgMjgzODMsIDI4MzkyLCAyODM5OSwgMjg0MDQsIAorICAgIDI4NDA5LCAyODQxOSwgMjM0ODgsIDI4NDIzLCAyODQyNiwgMjg0MzEsIDI4NDM2LCAyODQ0MSwgMjg0NDYsIDI4NDUxLCAKKyAgICAyODQ1NiwgMjg0NjEsIDI4NDY2LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4OCwgMTIxOCwgNzA0LCAyODQ5MywgMjg1MDIsIAorICAgIDIzNjQsIDI4NTA5LCAyODUxNCwgMjg1MTgsIDI4NTI0LCAxMjY3LCA1NDYsIDMxOCwgMjg1MjksIDI4NTM4LCAyODU0NiwgCisgICAgMjg1NTUsIDI4NTYzLCAyODU3NCwgMjg1ODMsIDI4NTkxLCAyODU5NSwgMjg1OTgsIDI4NjA2LCAyODYxNCwgMjg2MTksIAorICAgIDE0NzYyLCAyODYyNSwgMjg2MzEsIDI4NjM3LCA1ODcyLCAyODY0MiwgMjg2NDYsIDI4NjUyLCAyODY1NiwgMjg2NjMsIAorICAgIDE0NTUsIDI4NjY5LCAyODY3NiwgOTU3MiwgMjg2ODAsIDI4NjkwLCAyODY5OCwgMjg3MDQsIDI4NzEzLCAyODcyMSwgCisgICAgMjg3MjcsIDI4NzM1LCAyODc0MiwgMTExMDMsIDI4NzQ4LCAyODc1NSwgMjg3NjAsIDI4NzY3LCAxNDk2LCAyMTQ3LCAKKyAgICAyODc3MywgMjg3NzksIDI4Nzg2LCAyODc5NywgMjg4MDgsIDI4ODE2LCAyODgyMywgMjg4MzMsIDI4ODQyLCAyODg1MCwgCisgICAgMjg4NTksIDI4ODY2LCAyODg3MywgMjg4ODYsIDI4ODk3LCAxMjcyLCAyODkxNiwgMjg5MjEsIDI4OTI5LCAzNTc1LCAKKyAgICAyODkzMywgMjg5MzgsIDI4OTQyLCAxNDU5LCAyNDY4OSwgMjg5NTIsIDI4OTU2LCAyODk2MSwgMjg5NjUsIDM0OTMsIAorICAgIDI4OTcxLCAyODk3OSwgMjg5ODYsIDI4OTk3LCAyOTAwNSwgMjkwMTMsIDM1NzYsIDI3OSwgMjkwMTgsIDI5MDI2LCAyOTAzNCwgCisgICAgMjkwNDEsIDI5MDQ3LCAyOTA1MiwgMjIxNiwgMjkwNTksIDI5MDY1LCAyNTk3NSwgMjYyMDUsIDI5MDcxLCAxMDYsIDI5MDc1LCAKKyAgICAyOTA3OSwgMjkwODUsIDYxNSwgOTMyMSwgMjkwOTAsIDI5MDk3LCAyOTEwMywgMjMyNywgMjkxMDcsIDI5MTExLCAxNTE3NCwgCisgICAgMjkxMTQsIDI5MTE5LCAyOTEyNiwgMjkxMzIsIDI5MTM3LCAyOTE0NSwgMjkxNTIsIDI5MTU4LCAyMjMzOCwgMjkxNjIsIAorICAgIDI5MTY2LCAzNjQ2LCAxNjYxMiwgMjkxNzAsIDI5MTc1LCAyOTE3OCwgMjkxODYsIDI5MTk0LCAyOTE5OSwgMjkyMDIsIAorICAgIDI5MjA5LCAyOTIxOSwgMjkyMzEsIDI5MjM2LCAyOTI0MCwgMjkyNDgsIDI5MjU1LCAyOTI2MSwgMjkyNjgsIDI5Mjc1LCAKKyAgICAyOTI3OCwgMjkyODIsIDI5Mjg2LCAxNDYzLCAyOTI5NiwgMjkyOTgsIDI5MzAzLCAyOTMwOSwgMjkzMTUsIDI5MzIwLCAKKyAgICAyOTMyNSwgMjkzMzAsIDI5MzM1LCAyOTM0MCwgMjkzNDUsIDI5MzUwLCAyOTM1NSwgMjkzNjAsIDI5MzY1LCAyOTM3MCwgCisgICAgMjkzNzUsIDI5MzgwLCAyOTM4NSwgMjkzOTEsIDI5Mzk3LCAyOTQwMywgMjk0MDksIDI5NDE0LCAyOTQxOSwgMjk0MjQsIAorICAgIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYyLCAyOTQ2NywgMjk0NzIsIDI5NDc3LCAKKyAgICAyOTQ4MiwgMjk0ODgsIDI5NDkzLCAyOTQ5OSwgMjk1MDQsIDI5NTA5LCAyOTUxNCwgMjk1MTksIDI5NTI1LCAyOTUzMCwgCisgICAgMjk1MzYsIDI5NTQxLCAyOTU0NiwgMjk1NTEsIDI5NTU2LCAyOTU2MSwgMjk1NjYsIDI5NTcxLCAyOTU3NiwgMjk1ODEsIAorICAgIDI5NTg3LCAyOTU5MywgMjk1OTksIDI5NjA0LCAyOTYwOSwgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzEsIDI5NjM3LCAKKyAgICAyOTY0MywgMjk2NDksIDI5NjU1LCAyOTY2MCwgMjk2NjYsIDI5NjcxLCAyOTY3NiwgMjk2ODEsIDI5Njg2LCAyOTY5MiwgCisgICAgMjQ0MywgMjk2OTcsIDI0NTAsIDI0NTcsIDI3NTQsIDI5NzAyLCAyNDYzLCAyNDczLCAyOTcwOCwgMjk3MTIsIDI5NzE3LCAKKyAgICAyOTcyMiwgMjk3MjgsIDI5NzMzLCAyOTczOCwgMjk3NDIsIDI5NzQ3LCAyOTc1MywgMjk3NTgsIDI5NzYzLCAyOTc2OCwgCisgICAgMjk3NzQsIDI5Nzc5LCAyOTc4MywgMjk3ODcsIDI5NzkyLCAyOTc5NywgMjk4MDIsIDI5ODA3LCAyOTgxMiwgMjk4MTgsIAorICAgIDI5ODI0LCAyOTgyOSwgMjk4MzMsIDI5ODM4LCAyOTg0NCwgMjk4NDgsIDI5ODUzLCAyOTg1OCwgMjk4NjMsIDI5ODY4LCAKKyAgICAyOTg3MiwgMjk4NzUsIDI5ODgwLCAyOTg4NSwgMjk4OTAsIDI5ODk1LCAyOTkwMCwgMjk5MDYsIDI5OTEyLCAyOTkxNywgCisgICAgMjk5MjIsIDI5OTI2LCAyOTkzMSwgMjk5MzYsIDI5OTQxLCAyOTk0NiwgMjk5NTEsIDI5OTU1LCAyOTk2MCwgMjk5NjUsIAorICAgIDI5OTcwLCAyOTk3NCwgMjk5NzgsIDI5OTgyLCAyOTk4NywgMjk5OTUsIDMwMDAwLCAzMDAwNiwgMzAwMTIsIDMwMDE4LCAKKyAgICAzMDAyMywgMzAwMjcsIDMwMDMwLCAzMDAzNSwgMzAwNDAsIDMwMDQ0LCAzMDA0OSwgMzAwNTMsIDMwMDU4LCAzMDA2MiwgCisgICAgMzAwNjUsIDMwMDcwLCAxNzI4OSwgMzAwNzUsIDMwMDgwLCAzMDA4NSwgMzAwOTMsIDIxMjY3LCAyODY3MywgOTAxOSwgCisgICAgMzAwOTgsIDMwMTAzLCAzMDEwNywgMzAxMTIsIDMwMTE2LCAzMDEyMCwgMzAxMjUsIDMwMTI5LCAzMDEzMiwgMzAxMzUsIAorICAgIDMwMTM5LCAzMDE0NCwgMzAxNDgsIDMwMTU2LCAzMDE2MCwgMzAxNjMsIDMwMTY4LCAzMDE3MiwgMzAxNzYsIDMwMTgxLCAKKyAgICAzMDE4NiwgMzAxOTAsIDMwMTk2LCAzMDIwMSwgMzAyMDYsIDMwMjEzLCAzMDIyMCwgMzAyMjQsIDMwMjI3LCAzMDIzMywgCisgICAgMzAyNDIsIDMwMjQ5LCAzMDI1NywgMzAyNjQsIDMwMjY4LCAzMDI3MywgMzAyNzcsIDMwMjgxLCAzMDI4NywgMzAyOTMsIAorICAgIDMwMjk3LCAzMDMwMywgMzAzMDgsIDMwMzEzLCAzMDMyMCwgMzAzMjYsIDMwMzMyLCAzMDMzOCwgMzAzNDQsIDMwMzUxLCAKKyAgICAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIDMwMzg3LCAzMDM5MywgMzA0MDAsIDMwNDA2LCAzMDQxMywgCisgICAgMzA0MTksIDMwNDI1LCAzMDQzMSwgMzA0MzcsIDMwNDQzLCAzMDQ0OSwgMzA0NTUsIDMwNDYxLCAzMDQ2NywgMTE0MTEsIAorICAgIDMwNDczLCAzMDQ3OCwgMzA0ODMsIDMwNDg2LCAzMDQ5NCwgMzA0OTksIDMwNTA4LCAzMDUxNCwgMzA1MTksIDMwNTI0LCAKKyAgICAzMDUyOSwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU1OCwgMzA1NjUsIDMwNTcyLCAzMDU3OCwgCisgICAgMzA1ODQsIDMwNTg5LCAxNjI5MCwgMzA1OTYsIDMwNjAyLCAzMDYwOSwgMzA2MTUsIDMwNjIxLCAzMDYyNiwgMzA2MzQsIAorICAgIDMwNjM5LCAxNjA2OSwgMzA2NDMsIDMwNjQ4LCAzMDY1MywgMzA2NTksIDMwNjY0LCAzMDY2OSwgMzA2NzMsIDMwNjc4LCAKKyAgICAzMDY4MywgMzA2ODksIDMwNjk0LCAzMDY5OSwgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTcsIDMwNzIyLCAzMDcyNywgCisgICAgMzA3MzIsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUxLCAzMDc1NSwgMzA3NTksIDE1MjgwLCAzMDc2MywgMzA3NzIsIAorICAgIDMwNzc4LCAzMDc4NCwgMzA3OTMsIDMwODAxLCAzMDgxMCwgMzA4MTgsIDMwODIzLCAzMDgyNywgMzA4MzQsIDMwODQwLCAKKyAgICAzMDg0NCwgMzA4NDcsIDMwODUyLCAzMDg2MSwgMzA4NjksIDMwODc0LCAxNDk1LCAzMDg4MCwgMzA4ODMsIDMwODg3LCAKKyAgICAyMjQxMSwgMjI0MTcsIDMwODkzLCAzMDg5NywgMzA5MDgsIDMwOTE5LCAzMDkzMCwgMzA5NDIsIDMwOTQ5LCAzMDk1NiwgCisgICAgMzA5NjEsIDMwOTY1LCA1OTA5LCA3NTUsIDIxMjY2LCAzMDk3MywgMzA5NzgsIDMwOTgyLCAzMDk4NywgMzA5OTEsIDMwOTk3LCAKKyAgICAzMTAwMiwgMzEwMDgsIDMxMDEzLCAzMTAxOSwgMzEwMjQsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIDMxMDQ3LCAzMTA1MywgCisgICAgMzEwNTgsIDMxMDE0LCAzMTAyMCwgMzEwNjIsIDMxMDY3LCAzMTA3MywgMzEwNzgsIDMxMDg0LCAzMTA4OSwgMzEwOTUsIAorICAgIDMxMTAwLCAzMTAyNSwgMTA0MTQsIDMxMTA0LCAzMTAzNiwgMzEwNDIsIDMxMDQ4LCAyODMxLCAzNDIzLCAzMTExMCwgCisgICAgMzExMTMsIDMxMTE5LCAzMTEyNSwgMzExMzEsIDMxMTM4LCAzMTE0NCwgMzExNTAsIDMxMTU2LCAzMTE2MiwgMzExNjgsIAorICAgIDMxMTc0LCAzMTE4MCwgMzExODYsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNywgMzEyMjMsIDMxMjI5LCAKKyAgICAzMTIzNSwgMzEyNDEsIDMxMjQ3LCAzMTI1MCwgMzEyNTUsIDMxMjU4LCAzMTI2NSwgMzEyNzMsIDMxMjc4LCAzMTI4MywgCisgICAgMzEyODksIDMxMjk0LCAzMTI5OSwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI1LCAzMTMzMCwgMzEzMzYsIAorICAgIDMxMzQxLCAzMTM0NywgMzEzNTMsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg2LCAKKyAgICAzMTM5MSwgMzEzOTYsIDMxNDAyLCAzMTQwOCwgMzE0MTQsIDMxNDIwLCAzMTQyNSwgMzE0MjksIDMxNDMyLCAzMTQzOCwgCisgICAgMzE0NDQsIDMxNDUzLCAzMTQ2MSwgMzE0NjgsIDMxNDczLCAzMTQ3NywgMzE0ODEsIDMxNDg2LCAxNTEzMywgMzE0OTEsIAorICAgIDMxNDk5LCAzMTUwNSwgMzY4MywgMTM3NywgMzE1MTAsIDMxNTE0LCA4MDA1LCAzMTUyMCwgMzE1MjYsIDMxNTMzLCA4MDE0LCAKKyAgICAzMTUzNywgMzE1NDMsIDMxNTUwLCAzMTU1NiwgMzE1NjUsIDMxNTczLCAzMTU4NSwgMzE1ODksIDMxNTk2LCAzMTYwMiwgCisgICAgMzE2MDYsIDMxNjA5LCAzMTYxOCwgMzE2MjYsIDMxMDE1LCAzMTYzMSwgMzE2NDEsIDMxNjUxLCAzMTY2MSwgMzE2NjcsIAorICAgIDMxNjcyLCAzMTY4MiwgMzE2ODcsIDMxNzAwLCAzMTcxNCwgMzE3MjUsIDMxNzM3LCAzMTc0OSwgMzE3NjMsIDMxNzc2LCAKKyAgICAzMTc4OCwgMzE4MDAsIDE0NTg3LCAzMTgxNCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzIsIDMxODM2LCAxNzgwLCAKKyAgICAyNzE1OSwgMzE4NDAsIDMxODQ1LCAzMTA2MywgMzE4NTAsIDMxODUzLCAzMTg1OCwgMzE4NjMsIDMxODY4LCAzMTg3NCwgCisgICAgMzE4ODAsIDEwMDkxLCAzMTg4NSwgMzE4OTIsIDE1Njg0LCAzMTg5OCwgMzE5MDMsIDMxOTA4LCAzMTkxMiwgMzE5MTcsIAorICAgIDMxOTIyLCAzMTA2OCwgMzE5MjcsIDMxOTMyLCAzMTkzNywgMzE5NDMsIDMxMDc0LCAzMTk0OCwgMzE5NTEsIDMxOTU4LCAKKyAgICAzMTk2NiwgMzE5NzIsIDMxOTc4LCAzMTk4NCwgMzE5OTUsIDMyMDAwLCAzMjAwNywgMzIwMTQsIDMyMDIxLCAzMjAyOSwgCisgICAgMzIwMzgsIDMyMDQ3LCAzMjA1MywgMzIwNTksIDMyMDY3LCAzMTA3OSwgMzIwNzIsIDMyMDc4LCAzMjA4NCwgMzEwODUsIAorICAgIDMyMDg5LCAzMjA5NCwgMzIxMDIsIDMyMTEwLCAzMjExNiwgMzIxMjMsIDMyMTI5LCAzMjEzNiwgMzIxNDMsIDMyMTQ5LCAKKyAgICAzMjE1NywgMzIxNjcsIDMyMTc0LCAzMjE3OSwgMzIxODUsIDMyMTkwLCAzMjE5NSwgMzIyMDIsIDMyMjExLCAzMjIxOSwgCisgICAgMzIyMjQsIDMyMjMwLCAzMjIzNywgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjIsIDMyMjcxLCAyNzkzNiwgMzIyNzgsIAorICAgIDMyMjgyLCAzMjI4NywgMzIyOTYsIDMyMzAxLCAzMjMwNiwgMzIzMTEsIDEyMzk4LCAzMjMxOSwgMzIzMjQsIDMyMzI5LCAKKyAgICAzMjMzNCwgMzIzMzgsIDMyMzQzLCAzMjM0OCwgMzIzNTUsIDMyMzYwLCAzMjM2NSwgMzIzNzAsIDMxMDkwLCAyMTIwMywgCisgICAgMzIzNzYsIDI1MTksIDI0NCwgMzIzNzksIDMyMzgyLCAzMjM4NiwgMzIzOTAsIDMyNDAwLCAzMjQwOCwgMzI0MTIsIDMyNDE5LCAKKyAgICAzMjQyNiwgMzI0MzAsIDMyNDMzLCAzMjQzOSwgMzI0NDcsIDMyNDU1LCAzMjQ1OSwgMzI0NjMsIDMyNDY2LCAzMjQ3MywgCisgICAgMzI0NzcsIDMyNDgxLCAzMjQ4OCwgMzI0OTYsIDMxMDI2LCAzMjUwMywgMzI1MTEsIDEwMTUxLCA2NjAsIDMwOCwgMzI1MjMsIAorICAgIDMyNTI4LCAzMjUzMywgMzI1MzksIDMyNTQ0LCAzMjU0OSwgMzcwNCwgMzI1NTQsIDMyNTU3LCAzMjU2MiwgMzI1NjcsIAorICAgIDMyNTcyLCAzMjU3NywgMzI1ODIsIDMyNTg5LCAyMjUxMiwgMzI1OTQsIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE0LCAKKyAgICAzMjYyMCwgMzI2MjUsIDMyNjMxLCAzMTI2MSwgMzI2MzcsIDMyNjQyLCAzMjY0OCwgMzI2NTQsIDMyNjY0LCAzMjY2OSwgCisgICAgMzI2NzQsIDMyNjc4LCAzMjY4MywgMzI2ODgsIDMyNjkzLCAzMjY5OCwgMzI3MTEsIDMyNzE2LCAyMjI4OSwgMTY2OTIsIAorICAgIDM3MTAsIDMyNzIwLCAzMjcyNSwgMzI3MzAsIDMyNzM2LCAzMjc0MSwgMzI3NDYsIDMyNzUwLCAzMjc1NSwgMzI3NjAsIAorICAgIDMyNzY2LCAzMjc3MSwgMzI3NzYsIDEzODIsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjc5OSwgMzI4MDQsIAorICAgIDMyODA5LCAzMjgxNCwgMzI4MjAsIDMyODI2LCAzMjgzMSwgMzI4MzUsIDMyODM5LCAzMjg0NCwgMzI4NDksIDMyODU0LCAKKyAgICAzMjg1OCwgMzI4NjYsIDMyODcwLCAzMjg3NiwgMzI4ODAsIDMyODg3LCAxNjQ4NSwgMzEwMzcsIDMyODkzLCAzMjkwMCwgCisgICAgMzI5MDgsIDMyOTE1LCAzMjkyMSwgMzI5MzQsIDMyOTQ2LCAzMjk1MiwgMzI5NTYsIDI3NzMsIDMyOTYwLCAzMjk2NCwgCisgICAgMzI0NjgsIDMyOTczLCAzMjk4NCwgMzI5ODksIDMyOTk0LCAzMjk5OSwgMzMwMDMsIDMzMDA4LCAyMjQyMiwgMzMwMTIsIAorICAgIDMzMDE2LCAzMzAyMSwgMzEwNDMsIDIxMjg3LCAzMzAyNSwgMzMwMzAsIDMzMDM2LCAzMzA0MSwgMzMwNDUsIDMzMDQ5LCAKKyAgICAzMzA1MiwgMzMwNTYsIDMzMDYyLCAzMzA3MywgMzMwODUsIDMxMDQ5LCAzMzA5MCwgMzMwOTMsIDMzMDk3LCAzNDcsIAorICAgIDMzMTAyLCAzMzEwNywgMzMxMTIsIDMzMTE3LCAzMzEyMiwgMzMxMjcsIDMzMTMzLCAzMzEzOCwgMzMxNDMsIDMzMTQ5LCAKKyAgICAzMzE1NCwgMzMxNjAsIDMzMTY1LCAzMzE3MSwgMzMxNzYsIDMzMTgxLCAzMzE4NiwgMzMxOTEsIDMzMTk2LCAzMzIwMSwgCisgICAgMzMyMDYsIDMzMjExLCAzMzIxNywgMzMyMjIsIDMzMjI3LCAzMzIzMiwgMzMyMzcsIDMzMjQyLCAzMzI0NywgMzMyNTIsIAorICAgIDMzMjU4LCAzMzI2NCwgMzMyNjksIDMzMjc0LCAzMzI3OSwgMzMyODQsIDMzMjg5LCAzMzI5NCwgMzMyOTksIDMzMzA0LCAKKyAgICAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIDMzMzQ5LCAzMzM1NCwgCisgICAgMzMzNjAsIDMxMywgMjYsIDMzMzY1LCAzMzM2OSwgMzMzNzMsIDMzMzgxLCAzMzM4NSwgMzMzODksIDMzMzkyLCAzMzM5NSwgCisgICAgMzMzOTcsIDMzNDAyLCAzMzQwNiwgMzM0MTEsIDMzNDE1LCAzMzQyMCwgMzM0MjQsIDMzNDI5LCAzMzQzMywgMzM0MzYsIAorICAgIDMzNDM4LCAzMzQ0MiwgMzM0NDcsIDMzNDUxLCAzMzQ2MiwgMzM0NjUsIDMzNDY3LCAzMzQ3MSwgMzM0ODMsIDMzNDkyLCAKKyAgICAzMzQ5NiwgMzM1MDAsIDMzNTA2LCAzMzUxMSwgMzM1MjAsIDMzNTI2LCAzMzUzMSwgMzM1MzYsIDMzNTQwLCAzMzU0NSwgCisgICAgMzM1NTIsIDMzNTU3LCAzMzU2MywgMzM1NjgsIDMzNTcyLCAzMzU3OSwgMjU3MDEsIDI1NzExLCAzMzU4MywgMzM1ODgsIAorICAgIDMzNTkzLCAzMzU5OCwgMzM2MDUsIDMzNjA5LCAzMzYxNiwgODExMywgMzM2MjIsIDMzNjMxLCAzMzYzOSwgMzM2NTQsIAorICAgIDMzNjY4LCAzMzY3NiwgMzM2ODcsIDMzNjk2LCAzMzcwMSwgNzIyNywgMzM3MTEsIDMzNzE2LCAzMzcyMSwgMzM3MjUsIAorICAgIDMzNzI4LCAzMzczMiwgMzM3MzcsIDMzNzQxLCAzMzc0OCwgMzM3NTMsIDMzNzU4LCA4OTEyLCAzMzc2OCwgMzM3NzAsIAorICAgIDMzNzczLCAzMzc3NywgMzM3ODMsIDMzNzg3LCAzMzc5MiwgMzM3OTcsIDMzODAzLCAzMzgwOCwgMzM4MTQsIDMzODE5LCAKKyAgICAzMzgyOSwgMzM4MzgsIDMzODQ2LCAzMzg1MSwgMzM4NTcsIDMzODYyLCAzMzg2OSwgMzM4NzMsIDMzODgxLCAzMzg4OCwgCisgICAgMzM5MDEsIDMzOTA5LCAzMzkxMywgMzM5MjMsIDMzOTI4LCAzMzkzMiwgMzM5NDAsIDMzOTQ4LCAzMzk1MiwgMzM5NjEsIAorICAgIDMzOTY3LCAzMzk3MiwgMzM5ODAsIDMzOTkwLCAzMzk5OSwgMzQwMDgsIDM0MDE3LCAzNDAyOCwgMzQwMzYsIDM0MDQ3LCAKKyAgICAzNDA1NiwgMzQwNjMsIDM0MDY5LCAzNDA3NCwgMzQwODUsIDM0MDkwLCAzNDA5NCwgMzQwOTcsIDM0MTAxLCAzNDEwOSwgCisgICAgMzQxMTUsIDM0MTIzLCAzNDEzMCwgMzQxMzYsIDM0MTQxLCAzNDE0NywgMjQxOCwgMzQxNTEsIDM0MTUzLCAzNDE1OCwgCisgICAgMzQxNjMsIDM0MTY4LCAzNDE3MSwgMzQxNzMsIDM0MTc3LCAzNDE4MCwgMzQxODcsIDM0MTkxLCA5ODg0LCAzNDE5NSwgCisgICAgMzQyMDEsIDM0MjExLCAzNDIxNiwgMzQyMjIsIDM0MjI2LCAzNDIzMSwgMzQyNDQsIDI2MDg3LCAzNDI1MCwgMzQyNTksIAorICAgIDE3NDYyLCAzNDI2NiwgMzQyNzUsIDMxNjQ3LCAzNDI4MywgMzQyODgsIDM0MjkyLCAzNDMwMCwgMzQzMDcsIDM0MzEyLCAKKyAgICAzNDMxNiwgMzQzMjEsIDM0MzI1LCAzNDMzMywgMzQzMzksIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzU3LCAzNDM2MiwgCisgICAgMzQzNzUsIDM0MzkxLCAyMjk3OSwgMzQ0MDgsIDM0NDIwLCAzNDQzNywgMzQ0NDksIDM0NDYzLCAyMjk5NiwgMjMwMTUsIAorICAgIDM0NDc1LCAzNDQ4NywgMjY4MCwgMzQ1MDEsIDM0NTA2LCAzNDUxMSwgMzQ1MTYsIDM0NTIwLCAzNDUyNywgMzQ1MzksIAorICAgIDM0NTQ1LCAzNDU0OCwgMzQ1NTksIDM0NTcwLCAzNDU3NSwgMzIwNjQsIDY5NSwgMzQ1NzksIDM0NTgzLCAzNDU4NywgCisgICAgMzQ1OTAsIDM0NTk1LCAzNDYwMCwgMzQ2MDYsIDM0NjExLCAzNDYxNiwgMzQ2MjIsIDM0NjI4LCAzNDYzMywgMzQ2MzcsIAorICAgIDM0NjQyLCAzNDY0NywgMzQ2NTIsIDM0NjU2LCAzNDY1OSwgMzQ2NjUsIDM0NjcwLCAzNDY3NSwgMzQ2ODAsIDM0Njg0LCAKKyAgICAzNDY4OSwgMzQ2OTUsIDM0NzAzLCAyNjMyMCwgMzQ3MDgsIDM0NzEzLCAzNDcyMCwgMzQ3MjYsIDM0NzMyLCAzNDczNywgCisgICAgMzQ3NDUsIDIyNTIxLCAzNDc1MiwgMzQ3NTcsIDM0NzYyLCAzNDc2NywgMzQ3NzEsIDM0Nzc0LCAzNDc3OSwgMzQ3ODMsIAorICAgIDM0Nzg3LCAzNDc5NCwgMzQ4MDAsIDM0ODA2LCAzNDgxMiwgMzQ4MTksIDM0ODI0LCAzNDgzMCwgMzM5NDMsIDM0ODM0LCAKKyAgICAzNDgzOCwgMzQ4NDMsIDM0ODU2LCAzNDg2MSwgMzQ4NjcsIDM0ODc1LCAzNDg4MiwgMzQ4OTAsIDM0OTAwLCAzNDkwNiwgCisgICAgMzQ5MTIsIDM0OTE4LCAzNDkyMiwgMzQ5MzEsIDM0OTM5LCAzNDk0NiwgMzQ5NTEsIDM0OTU2LCAxMDQzNywgMzQ5NjEsIAorICAgIDM0OTY5LCAzNDk3NiwgMzQ5ODIsIDM0OTkyLCAzNDk5NywgMzUwMDMsIDM1MDExLCAzNjA4LCAzNTAxOCwgMzUwMjUsIAorICAgIDM2MTQsIDM1MDI5LCAzNTAzNCwgMzUwNDUsIDM1MDUyLCAzNTA1OCwgMzUwNjcsIDM1MDcxLCA0MDE1LCAzNTA3NCwgCisgICAgMzUwODEsIDM1MDg3LCAzNTA5MywgMzUxMDEsIDM1MTExLCAyOTA0MiwgMzUxMTgsIDM1MTI2LCAzNTEzMSwgMzUxMzcsIAorICAgIDM1MTQyLCAyNTk0NywgMzUxNDgsIDM1MTU1LCAzNTE2MSwgMzUxNzAsIDIzNjYwLCAzNTE3NywgMzUxODIsIDM1MTg2LCAKKyAgICAzNTE5NCwgMzUyMDIsIDk2MDAsIDU4OTUsIDM1MjA5LCAzNTIxMywgMzUyMTUsIDM1MjE5LCAzNTIyNCwgMzUyMjYsIAorICAgIDM1MjMyLCAzNTIzNywgMzUyNDIsIDM1MjQ5LCAzMjU4NSwgMzUyNTUsIDM1MjYwLCAzNTI2NCwgMzUyNjksIDM1MjczLCAKKyAgICAzNTI4MiwgMzUyODYsIDM1MjkyLCAzNTI5OSwgMzUzMDUsIDM1MzEyLCAzNTMxNywgMzUzMjYsIDM1MzMxLCAzNTMzNSwgCisgICAgMzUzNDAsIDM1MzQ3LCAzNTM1NSwgMzUzNjMsIDM1MzY4LCAyMTM0MywgMzUzNzIsIDM1Mzc1LCAzNTM3OSwgMzUzODMsIAorICAgIDM1Mzg3LCAzNTM5MCwgMzUzOTIsIDM1NDAwLCAzNTQwNCwgMzU0MTEsIDM1NDE1LCAzNTQxOSwgMzU0MjcsIDM1NDM0LCAKKyAgICAzNTQ0NCwgMzU0NDgsIDM1NDUyLCAzNTQ2MCwgMzU0NjgsIDM1NDc0LCAzNTQ3OSwgMzU0ODgsIDEzMzUwLCAzNTQ5NCwgCisgICAgMzU1MDMsIDM1NTA4LCAzNTUxNSwgMzU1MjMsIDM1NTMxLCAzNTUzOSwgMzU1NDYsIDM1NTUzLCAzNTU2MCwgMzU1NjcsIAorICAgIDM1NTc0LCAzNTU3OSwgMzU1ODUsIDM1NjAyLCAzNTYxMCwgMzU2MjAsIDM1NjI4LCAzNTYzNSwgNDA3LCAzNTYzOSwgCisgICAgMzU2NDUsIDM1NjQ5LCAzNTY1NCwgMzM2OTIsIDM1NjYwLCAzNTY2MywgMzU2NjcsIDM1Njc1LCAzNjE5LCAzNTY4MywgCisgICAgMzU2ODksIDM1Njk1LCAzNTcwNCwgMzU3MTQsIDM1NzIxLCAzNTcyNywgMzYyNSwgMzYzMSwgMzU3MzYsIDM1NzQzLCAKKyAgICAzNTc1MSwgMzU3NTYsIDM1NzYwLCAzNTc2NywgMzU3NzUsIDM1NzgyLCAzNTc4OCwgMzU3OTcsIDM1ODA3LCAzNTgxMywgCisgICAgMzU4MjEsIDM1ODMwLCAzNTgzNywgMzU4NDUsIDM1ODUyLCAyMjAxOSwgMzU4NTYsIDM1ODYzLCAzNTg2OSwgMzU4NzksIAorICAgIDM1ODg4LCAzNTg5OSwgMzU5MDMsIDM1OTEzLCAzNTkxOSwgMzU5MjYsIDM1OTM0LCAzNTk0MywgMzU5NTIsIDM1OTYyLCAKKyAgICAzNTk3MywgMzU5ODAsIDM1OTg1LCAzNTk5MiwgMzAyOSwgMzYwMDAsIDM2MDA2LCAzNjAxMSwgMzYwMTcsIDM2MDIzLCAKKyAgICAzNjAyOCwgMzYwNDEsIDM2MDU0LCAzNjA2NywgMzYwNzQsIDM2MDgwLCAzNjA4OCwgMzYwOTYsIDM2MTAxLCAzNjEwNSwgCisgICAgMTQ2OSwgMzYxMDksIDM2MTE0LCAzNjExOSwgMzYxMjQsIDM2MTI5LCAzNjEzNSwgMzYxNDAsIDM2MTQ1LCAzNjE1MCwgCisgICAgMzYxNTUsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc2LCAzNjE4MiwgMzYxODcsIDM2MTkyLCAzNjE5OCwgMzYyMDMsIAorICAgIDM2MjA4LCAzNjIxMywgMzYyMTksIDM2MjI0LCAzNjIyOSwgMzYyMzQsIDM2MjM5LCAzNjI0NSwgMzYyNTAsIDM2MjU1LCAKKyAgICAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NiwgMzYyODEsIDM2Mjg2LCAzNjI5MiwgMzYyOTcsIDM2MzAzLCAzNjMwOCwgCisgICAgMzYzMTQsIDM2MzE5LCAzNjMyNCwgMzYzMjksIDM2MzM1LCAzNjM0MSwgMzYzNDcsIDM2MzUzLCAzNjM1OSwgMzYzNjUsIAorICAgIDM2MzcxLCAzNjM3NywgMzYzODIsIDM2Mzg3LCAzNjM5MywgMzYzOTgsIDM2NDAzLCAzNjQwOCwgMzY0MTMsIDM2NDE4LCAKKyAgICAzNjQyMywgMzY0MjgsIDM2NDM0LCAzNjQzOSwgMzY0NDQsIDM2NDUwLCAzNjQ1NiwgMTAxLCAzNjQ2MSwgMzY0NjMsIAorICAgIDM2NDY3LCAzNjQ3MSwgMzY0NzUsIDM2NDgwLCAzNjQ4NCwgOTUyMSwgMzY0ODgsIDM2NDk0LCAxNzQxLCA2MjgwLCAzNjUwMCwgCisgICAgMzY1MDMsIDM2NTA4LCAzNjUxMiwgMzY1MTcsIDM2NTIxLCAzNjUyNSwgMzY1MzAsIDEwMjM4LCAzNjUzNCwgMzY1MzgsIAorICAgIDM2NTQyLCAzNjU0NiwgMTUzNzIsIDM2NTUxLCAzNjU1NSwgMzY1NjAsIDM2NTY1LCAzNjU3MCwgMzY1NzQsIDM2NTgxLCAKKyAgICAyNjExMSwgMzY1ODcsIDM2NTkwLCAzNjU5NCwgMzY1OTksIDM2NjA1LCAzNjYwOSwgMzY2MTcsIDM2NjIzLCAzNjYyOCwgCisgICAgMzY2MzIsIDM2NjM4LCAzNjY0MiwgMzY2NDYsIDM0NjIsIDM0NjcsIDI5MjM0LCAzNjY0OSwgMzY2NTMsIDM2NjU3LCAKKyAgICAzNjY2MSwgMzY2NjksIDM2Njc2LCAzNjY4MCwgMzY2ODcsIDM2NjkyLCAzMTcsIDM2Njk3LCAzNjcwMSwgMzY3MDcsIAorICAgIDM2NzE5LCAzNjcyNSwgMzY3MzEsIDM2NzM1LCAzNjc0MSwgMzY3NTAsIDM2NzU0LCAzNjc1OCwgMzY3NjMsIDM2NzY5LCAKKyAgICAzNjc3NCwgMzY3NzgsIDM2NzgzLCAzNjc4NywgMzY3OTEsIDM2Nzk4LCAzNjgwNCwgMzY4MDksIDM2ODI0LCAzNjgzOSwgCisgICAgMzY4NTQsIDM2ODcwLCAzNjg4OCwgMTAxODgsIDM2OTAyLCAzNjkwOSwgMzY5MTMsIDM2OTE2LCAzNjkyNSwgMzY5MzAsIAorICAgIDM2OTM0LCAzNjk0MiwgMzM4OTQsIDM2OTUwLCAzNjk1NCwgMzY5NjQsIDM2OTc1LCAyOTIwNCwgMzY5ODgsIDM2OTkyLCAKKyAgICAzNzAwMSwgMzcwMDksIDk3NzgsIDE0OTAwLCAzNzAxMywgMjI0MzQsIDM3MDE2LCAzMDE1MiwgMzcwMjEsIDk3NzcsIAorICAgIDM3MDI2LCAzNzAzMiwgMzcwMzcsIDM3MDQzLCAzNzA0OCwgMzcwNTQsIDM3MDU5LCAzNzA2NSwgMzcwNzAsIDM3MDc2LCAKKyAgICAzNzA4MiwgMzcwODgsIDM3MDkzLCAzNzA0OSwgMzcwNTUsIDM3MDYwLCAzNzA2NiwgMzcwNzEsIDM3MDc3LCAzNzA4MywgCisgICAgODEyNiwgMzg3NCwgMzcwOTcsIDM3MTA1LCAzNzEwOSwgMzcxMTIsIDM3MTE2LCAzNzEyMSwgMzcxMjYsIDM3MTMyLCAKKyAgICAzNzEzOCwgMzcxNDMsIDM3MTQ3LCAyNTk1OSwgMzcxNTEsIDM3MTU1LCAzNzE2MSwgMzcxNjUsIDkwNDIsIDM3MTc0LCAKKyAgICAzNzE4MSwgMzcxODUsIDExODY4LCAzNzE5MiwgMzcxOTgsIDM3MjAzLCAzNzIxMCwgMzcyMTcsIDM3MjI0LCAyODU1MCwgCisgICAgODA0OSwgMzcyMzEsIDM3MjM4LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgMzcyNzQsIDM3MjgwLCAzNzI4NSwgCisgICAgMzcyOTAsIDM3Mjk1LCAzNzMwMiwgMzcwNTAsIDM3MzA2LCAzNzMxNiwgMzczMjcsIDM3MzMzLCAzNzMzOCwgMzczNDMsIAorICAgIDM3MzQ4LCAzNzM1MywgMzczNTgsIDM3MzYyLCAzNzM2NiwgMzczNzIsIDM3MzgwLCAyMzE5LCA4NjUsIDEwMjU0LCAxMDI2NiwgCisgICAgMTAyNzEsIDEwMjc3LCAzNzM4OSwgMTAyODIsIDEwMjg3LCAxMDI5MywgMzczOTQsIDM3NDA0LCAzNzQwOCwgMTAyOTgsIAorICAgIDM3NDEzLCAxNjg5MCwgMzc0MTYsIDM3NDIxLCAzNzQyNSwgMzc0MzAsIDM3NDM1LCAzNzQ0MiwgMzc0NDksIDM3NDUzLCAKKyAgICAzNzQ1NiwgMzc0NjQsIDEwMjAxLCAzNzQ3MSwgMzc0NzQsIDM3NDgwLCAzNzQ5MCwgNTkyOSwgMzc0OTksIDM3NTAzLCAKKyAgICAzNzUxMSwgMzc1MTUsIDM3NTI1LCAzNzUzMSwgMzc1NDIsIDM3NTQ4LCAzNzU1NCwgMzc1NTksIDM3NTY1LCAzNzU3MSwgCisgICAgMzc1NzcsIDM3NTgyLCAzNzU4NSwgMzc1OTIsIDM3NTk4LCAzNzYwMywgMzc2MTAsIDM3NjE3LCAzNzYyMSwgMzc2MzEsIAorICAgIDM3NjQ0LCAzNzY1MywgMzc2NjIsIDM3NjczLCAzNzY4NiwgMzc2OTcsIDM3NzA2LCAzNzcxNywgMzc3MjIsIDM3NzMxLCAKKyAgICAzNzczNiwgMTAzMDMsIDM3NzQyLCAzNzc0OSwgMzc3NTcsIDM3NzYyLCAzNzc2NiwgMzc3NzMsIDM3NzgwLCAzODI5LCAxNiwgCisgICAgMzc3ODQsIDM3Nzg5LCAxNjc0NCwgMzc3OTMsIDM3Nzk2LCAzNzc5OSwgMjgwNTYsIDM3ODAzLCAyODU1OSwgMzc4MTEsIAorICAgIDM3ODE1LCAzNzgxOSwgMzc4MjIsIDM3ODI4LCAzNzA3MiwgMzc4MzQsIDM3ODQyLCAzNzg0OCwgMzc4NTUsIDI4MDM5LCAKKyAgICAzNzg1OSwgMjgyMzMsIDM3ODYzLCAzNzg3MiwgMzc4NzgsIDM3ODg0LCAzNzg4OSwgMzc4OTMsIDM3ODk5LCAzNzkwMywgCisgICAgMzc5MTEsIDM3OTE5LCAyNjE3NywgMzc5MjUsIDM3OTMyLCAzNzkzOCwgMzc5NDMsIDM3OTQ4LCAzNzk1MiwgMzc5NTgsIAorICAgIDM3OTYzLCAzNzk2OSwgNDA1NiwgNzkxLCAzNzk3NiwgMzc5ODAsIDM3OTgzLCAxNTI2MiwgMzc5OTUsIDM1ODI2LCAzODAwNiwgCisgICAgMzgwMDksIDM4MDE2LCAzODAyMCwgMzgwMjYsIDM4MDMwLCAzODAzNiwgMzgwNDEsIDM4MDQ3LCAzODA1MiwgMzgwNTcsIAorICAgIDM4MDYxLCAzODA2NSwgMzgwNzAsIDM4MDc1LCAzODA4NSwgMzgwOTEsIDM4MTA0LCAzODExMCwgMzgxMTYsIDM4MTIzLCAKKyAgICAzODEyOCwgMzgxMzQsIDM4MTM5LCAxNjYzMCwgMTQ3MiwgMTAxOSwgMzExOTMsIDMxMTk5LCAzODE0NCwgMzEyMDUsIAorICAgIDMxMjE4LCAzMTIyNCwgMzEyMzAsIDM4MTUwLCAzMTIzNiwgMzEyNDIsIDM4MTU2LCAzODE2MiwgMjIsIDM4MTcwLCAzODE3NywgCisgICAgMzgxODEsIDM4MTg1LCAzODE5MywgMzE5NTMsIDM4MTk3LCAzODIwMSwgMzgyMDgsIDM4MjEzLCAzODIxNywgMzgyMjIsIAorICAgIDM4MjI4LCAzODIzMywgMzgyMzksIDM4MjQ0LCAzODI0OCwgMzgyNTIsIDM4MjU2LCAzODI2MSwgMzgyNjUsIDM4MjcwLCAKKyAgICAzODI3NCwgMzgyODEsIDM4Mjg2LCAzODI5MCwgMzgyOTUsIDM4Mjk5LCAzODMwNCwgMzgzMDgsIDM4MzEzLCAzODMxOSwgCisgICAgMTU0ODIsIDE1NDg3LCAzODMyNCwgMzgzMjgsIDM4MzMxLCAzODMzNSwgMjExNzAsIDM4MzQwLCAzODM0NCwgMzgzNTAsIAorICAgIDM4MzU3LCAzODM2MiwgMzgzNzIsIDM4Mzc3LCAzODM4NSwgMzgzODksIDM4MzkyLCAzMTk2OCwgMzgzOTYsIDQxMDksIAorICAgIDM4NDAxLCAzODQwNiwgMzg0MTAsIDM4NDE1LCAzODQxOSwgMzg0MjQsIDEzMzY4LCAzODQzNSwgMzg0MzksIDM4NDQyLCAKKyAgICAzODQ0NywgMzg0NTEsIDM4NDU1LCAzODQ1OCwgMzg0NjIsIDgxNDUsIDEzMzg0LCAzODQ2NSwgMzg0NjgsIDM4NDc0LCAKKyAgICAzODQ3OSwgMzg0ODUsIDM4NDkwLCAzODQ5NiwgMzg1MDEsIDM4NTA3LCAzODUxMiwgMzg1MTgsIDM4NTI0LCAzODUzMCwgCisgICAgMzg1MzUsIDM4NTM5LCAzODU0MywgMzg1NTIsIDM4NTY4LCAzODU4NCwgMzg1OTQsIDI3OTQ2LCAzODYwMSwgMzg2MDUsIAorICAgIDM4NjEwLCAzODYxNSwgMzg2MTksIDM4NjIzLCAzNTk0NywgMzg2MjksIDM4NjM0LCAzODYzOCwgMzg2NDUsIDM4NjUwLCAKKyAgICAzODY1NCwgMzg2NTgsIDI2OTc5LCAzODY2NCwgMjE0MzgsIDM4NjY5LCAzODY3NiwgMzg2ODQsIDM4NjkwLCAzODY5NywgCisgICAgMzg3MDUsIDM4NzExLCAzODcxNSwgMzg3MjEsIDM4NzI5LCAzODczMywgMzg3NDIsIDk1MDIsIDM4NzUwLCAzODc1NCwgCisgICAgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIDM4NzgzLCAzODc4NiwgMzg3OTAsIDM4NzkzLCAzODc5NywgMzg4MDQsIAorICAgIDM4ODA5LCAzODgxNSwgMjYzOTgsIDMxMjU2LCAzODgxOSwgMzg4MjYsIDM4ODMyLCAzODgzOCwgMzg4NDMsIDM4ODQ2LCAKKyAgICAzODg0OCwgMzg4NTUsIDM4ODYyLCAzODg2OCwgMzg4NzIsIDM4ODc1LCAzODg3OSwgMzg4ODMsIDM4ODg3LCAzODg5MiwgCisgICAgMzg4OTYsIDM4OTAwLCAzODkwMywgMzg5MDcsIDM4OTIxLCAyMzA0NSwgMzg5NDAsIDM4OTUzLCAzODk2NiwgMzg5NzksIAorICAgIDIzMDYzLCAzODk5NCwgMTA0OTAsIDM5MDA5LCAzOTAxNSwgMzkwMTksIDM5MDIzLCAzOTAzMCwgMzkwMzUsIDM5MDM5LCAKKyAgICAzOTA0NiwgMzkwNTIsIDM5MDU3LCAzOTA2MywgMzkwNzMsIDM5MDg1LCAzOTA5NiwgMzkxMDEsIDM5MTA4LCAzOTExMiwgCisgICAgMzkxMTYsIDM5MTE5LCAxNTg3OCwgMzY3NywgMzkxMjcsIDE1NTA5LCAzOTE0MCwgMzkxNDcsIDM5MTUxLCAzOTE1NSwgCisgICAgMzkxNjAsIDM5MTY1LCAzOTE3MSwgMzkxNzUsIDM5MTc5LCAzOTE4MiwgNzc0MiwgMTU1MjAsIDM5MTg3LCAzOTE5MSwgCisgICAgMzkxOTcsIDM5MjA2LCAzOTIxMSwgMzkyMTgsIDM1ODAzLCAzOTIyNCwgMzkyMjksIDM5MjMzLCAzOTIzOCwgMzkyNDUsIAorICAgIDM5MjQ5LCAzOTI1MiwgMzkyNTYsIDM5MjYxLCAxNDU1MiwgMzkyNjgsIDM5Mjc1LCAxMDY2LCAzOTI3OSwgMzkyODQsIAorICAgIDM5Mjg5LCAzOTI5NSwgMzkzMDAsIDM5MzA1LCAzOTMwOSwgMzkzMTksIDM5MzI0LCAzOTMzMCwgMzkzMzUsIDM5MzQxLCAKKyAgICAzOTM0NiwgMzkzNTIsIDM5MzYyLCAzOTM2NywgMzkzNzIsIDM5Mzc2LCA3MjI5LCA3MjQxLCAzOTM4MSwgMzkzODQsIAorICAgIDM5MzkxLCAzOTM5NywgMzQwNTksIDM0MDY2LCAzOTQwNiwgMzk0MTAsIDMyMDE2LCAzOTQxOCwgMzk0MjksIDM5NDM3LCAKKyAgICAzNTk5NSwgMzk0NDQsIDM5NDQ5LCAzOTQ1NCwgMzk0NjUsIDM5NDcyLCAzOTQ4MywgMzIwNDAsIDIxNDQ0LCAzOTQ5MSwgCisgICAgNzM1LCAzOTQ5NiwgMzk1MDIsIDI4MDMwLCAzOTUwOCwgMzk1MTMsIDM5NTIzLCAzOTUzMiwgMzk1MzksIDM5NTQ1LCAKKyAgICAzOTU0OSwgMzk1NTIsIDM5NTU5LCAzOTU2NSwgMzk1NzIsIDM5NTc4LCAzOTU4OCwgMzk1OTYsIDM5NjAyLCAzOTYwOCwgCisgICAgMzk2MTMsIDM5NjE3LCAzOTYyNCwgMzk2MzAsIDM5NjM3LCAzODg4OCwgNTM1LCAxMzgwNSwgMzk2NDMsIDM5NjQ4LCAKKyAgICAzOTY1MSwgMzk2NTcsIDM5NjY1LCAxMzk2LCAzOTY3MCwgMzk2NzQsIDM5Njc5LCAzOTY4NiwgMzk2OTIsIDM5Njk2LCAKKyAgICAzOTcwMCwgMzk3MDUsIDM5NzE0LCAzOTcyMSwgMzk3MzEsIDM5NzM3LCAyODA3NCwgMzk3NTQsIDM5NzYzLCAzOTc3MSwgCisgICAgMzk3NzcsIDM5NzgyLCAzOTc4OSwgMzk3OTUsIDM5ODAzLCAzOTgxMiwgMzk4MjAsIDM5ODI0LCAzOTgyOSwgMzk4MzcsIAorICAgIDMyMDQ5LCAzOTg0MywgMzk4NjIsIDE1ODExLCAzOTg3NiwgMzk4OTIsIDM5OTA2LCAzOTkxMiwgMzk5MTcsIDM5OTIyLCAKKyAgICAzOTkyNywgMzk5MzMsIDMyMDU1LCAzOTkzOCwgMzk5NDUsIDM5OTUwLCAzOTk1NCwgMzQ1LCAyOTM2LCAzOTk2MSwgMzk5NjYsIAorICAgIDM5OTcxLCAyNzMwNSwgMzk3OTIsIDM5OTc1LCAzOTk4MCwgMzk5ODgsIDM5OTkyLCAzOTk5NSwgNDAwMDEsIDQwMDA3LCAKKyAgICA0MDAxMSwgMjgxMjksIDQwMDE0LCA0MDAxOSwgNDAwMjMsIDQwMDI2LCA0MDAzMSwgNDAwMzUsIDQwMDQwLCA0MDA0NSwgCisgICAgNDAwNDksIDQwMDU0LCA0MDA1OCwgNDAwNjIsIDIxMTY2LCAyMTE3NywgNDAwNjYsIDQwMDcxLCA0MDA3NywgMjY5MzYsIAorICAgIDQwMDgyLCA0MDA4NiwgMjEyNTMsIDE2MDU5LCA0MDA4OSwgNDAwOTQsIDQwMDk5LCA0MDEwNCwgNDAxMDksIDQwMTE0LCAKKyAgICA0MDExOSwgNDAxMjQsIDQ0NywgNDMsIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMzEzMDAsIDQwMTI5LCAKKyAgICAzMTMwNCwgNDAxMzMsIDQwMTM3LCA0MDE0MSwgMzEzMDksIDMxMzE1LCA0MDE1NSwgMzEzMjYsIDMxMzMxLCA0MDE2MywgCisgICAgNDAxNjgsIDMxMzM3LCA0MDE3MywgNDAxNzgsIDQwMTgzLCA0MDE4OCwgNDAxOTQsIDQwMjAwLCA0MDIwNiwgMzEzNTQsIAorICAgIDQwMjE5LCA0MDIyNSwgMzEzNTgsIDQwMjI5LCAzMTM2MywgNDAyMzQsIDMxMzY4LCAzMTM3MywgNDAyMzcsIDQwMjQyLCAKKyAgICA0MDI0NiwgMzA5MjMsIDQwMjUyLCAxMzU5MiwgNDAyNTksIDQwMjY0LCAzMTM3OCwgNDAyNjgsIDQwMjczLCA0MDI3OCwgCisgICAgNDAyODMsIDQwMjg3LCA0MDI5MiwgNDAyOTcsIDQwMzAzLCA0MDMwOCwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzAsIAorICAgIDQwMzM0LCA0MDMzOSwgNDAzNDQsIDQwMzQ5LCA0MDM1MywgNDAzNTgsIDQwMzYzLCA0MDM2OCwgNDAzNzQsIDQwMzgwLCAKKyAgICA0MDM4NiwgNDAzOTEsIDQwMzk1LCA0MDQwMCwgNDA0MDQsIDMxMzgyLCAzMTM4NywgMzEzOTIsIDQwNDA4LCA0MDQxMiwgCisgICAgNDA0MTYsIDMxMzk3LCAzMTQwMywgMzE0MDksIDMxNDIxLCA0MDQyOCwgMjU5OTYsIDQwNDMyLCA0MDQzNiwgNDA0NDEsIAorICAgIDQwNDQ2LCA0MDQ1MSwgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgNDA0NzQsIDQwNDc5LCA0MDQ4NCwgNDA0ODgsIDQwNDkyLCAKKyAgICA0MDQ5NSwgNDA1MDMsIDMxNDY5LCA0MDUwOCwgMTQ3OSwgNDA1MTQsIDQwNTIyLCA0MDUzMSwgNDA1MzUsIDQwNTM5LCAKKyAgICA0MDU0NywgNDA1NTMsIDQwNTYxLCA0MDU3NywgNDA1ODEsIDQwNTg1LCA0MDU5MCwgNDA2MDUsIDMxNTA2LCAxNzQ5LCAKKyAgICAxMjA0OCwgNDA2MDksIDEzNzgsIDQwNjIxLCA0MDYyMiwgNDA2MzAsIDQwNjM3LCA0MDY0MiwgNDA2NDksIDQwNjU0LCAKKyAgICA5MzcyLCAxMTE0LCAxMDMyNSwgNDA2NjEsIDQwNjY2LCA0MDY2OSwgNDA2NzIsIDQwNjgxLCAxMjg2LCA0MDY4NiwgMzkwMzYsIAorICAgIDQwNjkzLCA0MDY5OCwgMjI0ODYsIDI1NTcsIDQwNzAyLCAxMDczNCwgNDA3MTIsIDQwNzE4LCAyMzM3LCAyMzQ3LCA0MDcyNywgCisgICAgNDA3MzYsIDQwNzQ2LCA0MDc1NywgMzI5MywgMzQyMTIsIDEwMzc3LCAzODA3LCAxNjY2OCwgMTI5MSwgNDA3NjIsIDQwNzcwLCAKKyAgICA0MDc3NywgNDA3ODIsIDQwNzg2LCA0MDc5MCwgMjM4NTgsIDEwNDA0LCA0MDc5OCwgNDA4MDcsIDQwODE2LCA0MDgyNCwgCisgICAgNDA4MzEsIDQwODQyLCA0MDg0NywgNDA4NjAsIDQwODczLCA0MDg4NSwgNDA4OTcsIDQwOTA5LCA0MDkyMiwgNDA5MzMsIAorICAgIDQwOTQ0LCA0MDk1NCwgNDA5NjIsIDQwOTcwLCA0MDk4MiwgNDA5OTQsIDQxMDA1LCA0MTAxNCwgNDEwMjIsIDQxMDI5LCAKKyAgICA0MTA0MSwgNDEwNDgsIDQxMDU3LCA0MTA2NCwgNDEwNzcsIDQxMDgyLCA0MTA5MiwgNDEwOTcsIDQxMTAzLCA0MTEwOCwgCisgICAgMzcxODIsIDQxMTEyLCA0MTExOSwgNDExMjMsIDQxMTMwLCA0MTEzOCwgMjUxOCwgNDExNDUsIDQxMTU2LCA0MTE2NiwgCisgICAgNDExNzUsIDQxMTgzLCA0MTE5MywgNDEyMDEsIDQxMjExLCA0MTIyMCwgNDEyMjUsIDQxMjMxLCA0MTIzNywgMzcwOSwgCisgICAgNDEyNDgsIDQxMjU4LCA0MTI2NywgNDEyNzYsIDQxMjg2LCA0MTI5NCwgNDEzMDMsIDQxMzA4LCA0MTMxMywgNDEzMTgsIAorICAgIDE3MDUsIDM3LCA0MTMyNiwgNDEzMzQsIDQxMzQ1LCA0MTM1NiwgMTYzNDMsIDQxMzY2LCA0MTM3MCwgNDEzNzcsIDQxMzgzLCAKKyAgICA0MTM4OCwgNDEzOTIsIDQxNDAzLCA0MTQxMywgNDE0MjIsIDQxNDMzLCAxNjcxNywgMTY3MjIsIDQxNDM4LCA0MTQ0NywgCisgICAgNDE0NTIsIDQxNDYyLCA0MTQ2NywgNDE0NzUsIDQxNDgzLCA0MTQ5MCwgNDE0OTYsIDcwNzgsIDIyOCwgNDE1MDAsIDQxNTA2LCAKKyAgICA0MTUxMSwgNDE1MTQsIDIxMTcsIDM5MTUyLCA0MTUyMiwgNDE1MjYsIDQxNTI5LCAxNTEyLCA0MTUzNSwgMTM5NjcsIDEyOTYsIAorICAgIDQxNTQwLCA0MTU1MywgNDE1NjcsIDI2NDMsIDQxNTg1LCA0MTU5NywgNDE2MDksIDI2NTcsIDI2NzQsIDQxNjIzLCA0MTYzNiwgCisgICAgMjY4OSwgNDE2NTAsIDQxNjYyLCAyNzA0LCA0MTY3NiwgMTMwMiwgMTMwOCwgMTMxNCwgMTA2NTIsIDQxNjgxLCA0MTY4NiwgCisgICAgNDE2OTEsIDQxNjk1LCA0MTcxMCwgNDE3MjUsIDQxNzQwLCA0MTc1NSwgNDE3NzAsIDQxNzg1LCA0MTgwMCwgNDE4MTUsIAorICAgIDQxODMwLCA0MTg0NSwgNDE4NjAsIDQxODc1LCA0MTg5MCwgNDE5MDUsIDQxOTIwLCA0MTkzNSwgNDE5NTAsIDQxOTY1LCAKKyAgICA0MTk4MCwgNDE5OTUsIDQyMDEwLCA0MjAyNSwgNDIwNDAsIDQyMDU1LCA0MjA3MCwgNDIwODUsIDQyMTAwLCA0MjExNSwgCisgICAgNDIxMzAsIDQyMTQ1LCA0MjE2MCwgNDIxNzUsIDQyMTkwLCA0MjIwNSwgNDIyMjAsIDQyMjM1LCA0MjI1MCwgNDIyNjUsIAorICAgIDQyMjgwLCA0MjI5NSwgNDIzMTAsIDQyMzI1LCA0MjM0MCwgNDIzNTUsIDQyMzcwLCA0MjM4NSwgNDI0MDAsIDQyNDE1LCAKKyAgICA0MjQzMCwgNDI0NDUsIDQyNDYwLCA0MjQ3NSwgNDI0OTAsIDQyNTA1LCA0MjUyMCwgNDI1MzUsIDQyNTUwLCA0MjU2NSwgCisgICAgNDI1ODAsIDQyNTk1LCA0MjYxMCwgNDI2MjUsIDQyNjQwLCA0MjY1NSwgNDI2NzAsIDQyNjg1LCA0MjcwMCwgNDI3MTUsIAorICAgIDQyNzMwLCA0Mjc0NSwgNDI3NjAsIDQyNzc1LCA0Mjc5MCwgNDI4MDUsIDQyODIwLCA0MjgzNSwgNDI4NTAsIDQyODY1LCAKKyAgICA0Mjg4MCwgNDI4OTUsIDQyOTEwLCA0MjkyNSwgNDI5NDAsIDQyOTU1LCA0Mjk3MCwgNDI5ODUsIDQzMDAwLCA0MzAxNSwgCisgICAgNDMwMzAsIDQzMDQ1LCA0MzA2MCwgNDMwNzUsIDQzMDkwLCA0MzEwNSwgNDMxMjAsIDQzMTM1LCA0MzE1MCwgNDMxNjUsIAorICAgIDQzMTgwLCA0MzE5NSwgNDMyMTAsIDQzMjI1LCA0MzI0MCwgNDMyNTUsIDQzMjcwLCA0MzI4NSwgNDMzMDAsIDQzMzE1LCAKKyAgICA0MzMzMCwgNDMzNDUsIDQzMzYwLCA0MzM3NSwgNDMzOTAsIDQzNDA1LCA0MzQyMCwgNDM0MzUsIDQzNDUwLCA0MzQ2NSwgCisgICAgNDM0ODAsIDQzNDk1LCA0MzUxMCwgNDM1MjUsIDQzNTQwLCA0MzU1NSwgNDM1NzAsIDQzNTg1LCA0MzYwMCwgNDM2MTUsIAorICAgIDQzNjMwLCA0MzY0NSwgNDM2NjAsIDQzNjc1LCA0MzY5MCwgNDM3MDUsIDQzNzIwLCA0MzczNSwgNDM3NTAsIDQzNzY1LCAKKyAgICA0Mzc4MCwgNDM3OTUsIDQzODEwLCA0MzgyNSwgNDM4NDAsIDQzODU1LCA0Mzg3MCwgNDM4ODUsIDQzOTAwLCA0MzkxNSwgCisgICAgNDM5MzAsIDQzOTQ1LCA0Mzk2MCwgNDM5NzUsIDQzOTkwLCA0NDAwNSwgNDQwMjAsIDQ0MDM1LCA0NDA1MCwgNDQwNjUsIAorICAgIDQ0MDgwLCA0NDA5NSwgNDQxMTAsIDQ0MTI1LCA0NDE0MCwgNDQxNTUsIDQ0MTcwLCA0NDE4NSwgNDQyMDAsIDQ0MjE1LCAKKyAgICA0NDIzMCwgNDQyNDUsIDQ0MjYwLCA0NDI3NSwgNDQyOTAsIDQ0MzA1LCA0NDMyMCwgNDQzMzUsIDQ0MzUwLCA0NDM2NSwgCisgICAgNDQzODAsIDQ0Mzk1LCA0NDQxMCwgNDQ0MjUsIDQ0NDQwLCA0NDQ1NSwgNDQ0NzAsIDQ0NDg1LCA0NDUwMCwgNDQ1MTUsIAorICAgIDQ0NTMwLCA0NDU0NSwgNDQ1NjAsIDQ0NTc1LCA0NDU5MCwgNDQ2MDUsIDQ0NjIwLCA0NDYzNSwgNDQ2NTAsIDQ0NjY1LCAKKyAgICA0NDY4MCwgNDQ2OTUsIDQ0NzEwLCA0NDcyNSwgNDQ3NDAsIDQ0NzU1LCA0NDc3MCwgNDQ3ODUsIDQ0ODAwLCA0NDgxNSwgCisgICAgNDQ4MzAsIDQ0ODQ1LCA0NDg2MCwgNDQ4NzUsIDQ0ODkwLCA0NDkwNSwgNDQ5MjAsIDQ0OTM1LCA0NDk1MCwgNDQ5NjUsIAorICAgIDQ0OTgwLCA0NDk5NSwgNDUwMTAsIDQ1MDI1LCA0NTA0MCwgNDUwNTUsIDQ1MDcwLCA0NTA4NSwgNDUxMDAsIDQ1MTE1LCAKKyAgICA0NTEzMCwgNDUxNDUsIDQ1MTYwLCA0NTE3NSwgNDUxOTAsIDQ1MjA1LCA0NTIyMCwgNDUyMzUsIDQ1MjUwLCA0NTI2NSwgCisgICAgNDUyODAsIDQ1Mjk1LCA0NTMxMCwgNDUzMjUsIDQ1MzQwLCA0NTM1NSwgNDUzNzAsIDQ1Mzg1LCA0NTQwMCwgNDU0MTUsIAorICAgIDQ1NDMwLCA0NTQ0NSwgNDU0NjAsIDQ1NDc1LCA0NTQ5MCwgNDU1MDUsIDQ1NTIwLCA0NTUzNSwgNDU1NTAsIDQ1NTY1LCAKKyAgICA0NTU4MCwgNDU1OTUsIDQ1NjEwLCA0NTYyNSwgNDU2NDAsIDQ1NjU1LCA0NTY3MCwgNDU2ODUsIDQ1NzAwLCA0NTcxNSwgCisgICAgNDU3MzAsIDQ1NzQ1LCA0NTc2MCwgNDU3NzUsIDQ1NzkwLCA0NTgwNSwgNDU4MjAsIDQ1ODM1LCA0NTg1MCwgNDU4NjUsIAorICAgIDQ1ODgwLCA0NTg5NSwgNDU5MTAsIDQ1OTI1LCA0NTk0MCwgNDU5NTUsIDQ1OTcwLCA0NTk4NSwgNDYwMDAsIDQ2MDE1LCAKKyAgICA0NjAzMCwgNDYwNDUsIDQ2MDYwLCA0NjA3NSwgNDYwOTAsIDQ2MTA1LCA0NjEyMCwgNDYxMzUsIDQ2MTUwLCA0NjE2NSwgCisgICAgNDYxODAsIDQ2MTk1LCA0NjIxMCwgNDYyMjUsIDQ2MjQwLCA0NjI1NSwgNDYyNzAsIDQ2Mjg1LCA0NjMwMCwgNDYzMTUsIAorICAgIDQ2MzMwLCA0NjM0NSwgNDYzNjAsIDQ2Mzc1LCA0NjM5MCwgNDY0MDUsIDQ2NDIwLCA0NjQzNSwgNDY0NTAsIDQ2NDY1LCAKKyAgICA0NjQ4MCwgNDY0OTUsIDQ2NTEwLCA0NjUyNSwgNDY1NDAsIDQ2NTU1LCA0NjU3MCwgNDY1ODUsIDQ2NjAwLCA0NjYxNSwgCisgICAgNDY2MzAsIDQ2NjQ1LCA0NjY2MCwgNDY2NzUsIDQ2NjkwLCA0NjcwNSwgNDY3MjAsIDQ2NzM1LCA0Njc1MCwgNDY3NjUsIAorICAgIDQ2NzgwLCA0Njc5NSwgNDY4MTAsIDQ2ODI1LCA0Njg0MCwgNDY4NTUsIDQ2ODcwLCA0Njg4NSwgNDY5MDAsIDQ2OTE1LCAKKyAgICA0NjkzMCwgNDY5NDUsIDQ2OTYwLCA0Njk3NSwgNDY5OTAsIDQ3MDA1LCA0NzAyMCwgNDcwMzUsIDQ3MDUwLCA0NzA2NSwgCisgICAgNDcwODAsIDQ3MDk1LCA0NzExMCwgNDcxMjUsIDQ3MTQwLCA0NzE1NSwgNDcxNzAsIDQ3MTg1LCA0NzIwMCwgNDcyMTUsIAorICAgIDQ3MjMwLCA0NzI0NSwgNDcyNjAsIDQ3Mjc1LCA0NzI5MCwgNDczMDUsIDQ3MzIwLCA0NzMzNSwgNDczNTAsIDQ3MzY1LCAKKyAgICA0NzM4MCwgNDczOTUsIDQ3NDEwLCA0NzQyNSwgNDc0NDAsIDQ3NDU1LCA0NzQ3MCwgNDc0ODUsIDQ3NTAwLCA0NzUxNSwgCisgICAgNDc1MzAsIDQ3NTQ1LCA0NzU2MCwgNDc1NzUsIDQ3NTkwLCA0NzYwNSwgNDc2MjAsIDQ3NjM1LCA0NzY1MCwgNDc2NjUsIAorICAgIDQ3NjgwLCA0NzY5NSwgNDc3MTAsIDQ3NzI1LCA0Nzc0MCwgNDc3NTUsIDQ3NzcwLCA0Nzc4NSwgNDc4MDAsIDQ3ODE1LCAKKyAgICA0NzgzMCwgNDc4NDUsIDQ3ODYwLCA0Nzg3NSwgNDc4OTAsIDQ3OTA1LCA0NzkyMCwgNDc5MzUsIDQ3OTUwLCA0Nzk2NSwgCisgICAgNDc5ODAsIDQ3OTk1LCA0ODAxMCwgNDgwMjUsIDQ4MDQwLCA0ODA1NSwgNDgwNzAsIDQ4MDg1LCA0ODEwMCwgNDgxMTUsIAorICAgIDQ4MTMwLCA0ODE0NSwgNDgxNjAsIDQ4MTc1LCA0ODE5MCwgNDgyMDUsIDQ4MjIwLCA0ODIzNSwgNDgyNTAsIDQ4MjY1LCAKKyAgICA0ODI4MCwgNDgyOTUsIDQ4MzEwLCA0ODMyNSwgNDgzNDAsIDQ4MzU1LCA0ODM3MCwgNDgzODUsIDQ4NDAwLCA0ODQxNSwgCisgICAgNDg0MzAsIDQ4NDQ1LCA0ODQ2MCwgNDg0NzUsIDQ4NDkwLCA0ODUwNSwgNDg1MjAsIDQ4NTM1LCA0ODU1MCwgNDg1NjUsIAorICAgIDQ4NTgwLCA0ODU5NSwgNDg2MTAsIDQ4NjI1LCA0ODY0MCwgNDg2NTUsIDQ4NjcwLCA0ODY4NSwgNDg3MDAsIDQ4NzE1LCAKKyAgICA0ODczMCwgNDg3NDUsIDQ4NzYwLCA0ODc3NSwgNDg3OTAsIDQ4ODA1LCA0ODgyMCwgNDg4MzUsIDQ4ODUwLCA0ODg2NSwgCisgICAgNDg4ODAsIDQ4ODk1LCA0ODkxMCwgNDg5MjUsIDQ4OTQwLCA0ODk1NSwgNDg5NzAsIDQ4OTg1LCA0OTAwMCwgNDkwMTUsIAorICAgIDQ5MDMwLCA0OTA0NSwgNDkwNjAsIDQ5MDc1LCA0OTA5MCwgNDkxMDUsIDQ5MTIwLCA0OTEzNSwgNDkxNTAsIDQ5MTY1LCAKKyAgICA0OTE4MCwgNDkxOTUsIDQ5MjEwLCA0OTIyNSwgNDkyNDAsIDQ5MjU1LCA0OTI3MCwgNDkyODUsIDQ5MzAwLCA0OTMxNSwgCisgICAgNDkzMzAsIDQ5MzQ1LCA0OTM2MCwgNDkzNzUsIDQ5MzkwLCA0OTQwNSwgNDk0MjAsIDQ5NDM1LCA0OTQ1MCwgNDk0NjUsIAorICAgIDQ5NDgwLCA0OTQ5NSwgNDk1MTEsIDQ5NTI3LCA0OTU0MywgNDk1NTksIDQ5NTc1LCA0OTU5MSwgNDk2MDcsIDQ5NjIzLCAKKyAgICA0OTYzOSwgNDk2NTUsIDQ5NjcxLCA0OTY4NywgNDk3MDMsIDQ5NzE5LCA0OTczNSwgNDk3NTEsIDQ5NzY3LCA0OTc4MywgCisgICAgNDk3OTksIDQ5ODE1LCA0OTgzMSwgNDk4NDcsIDQ5ODYzLCA0OTg3OSwgNDk4OTUsIDQ5OTExLCA0OTkyNywgNDk5NDMsIAorICAgIDQ5OTU5LCA0OTk3NSwgNDk5OTEsIDUwMDA3LCA1MDAyMywgNTAwMzksIDUwMDU1LCA1MDA3MSwgNTAwODcsIDUwMTAzLCAKKyAgICA1MDExOSwgNTAxMzUsIDUwMTUxLCA1MDE2NywgNTAxODMsIDUwMTk5LCA1MDIxNSwgNTAyMzEsIDUwMjQ3LCA1MDI2MywgCisgICAgNTAyNzksIDUwMjk1LCA1MDMxMSwgNTAzMjcsIDUwMzQzLCA1MDM1OSwgNTAzNzUsIDUwMzkxLCA1MDQwNywgNTA0MjMsIAorICAgIDUwNDM5LCA1MDQ1NSwgNTA0NzEsIDUwNDg3LCA1MDUwMywgNTA1MTksIDUwNTM1LCA1MDU1MSwgNTA1NjcsIDUwNTgzLCAKKyAgICA1MDU5OSwgNTA2MTUsIDUwNjMxLCA1MDY0NywgNTA2NjMsIDUwNjc5LCA1MDY5NSwgNTA3MTEsIDUwNzI3LCA1MDc0MywgCisgICAgNTA3NTksIDUwNzc1LCA1MDc5MSwgNTA4MDcsIDUwODIzLCA1MDgzOSwgNTA4NTUsIDUwODcxLCA1MDg4NywgNTA5MDMsIAorICAgIDUwOTE5LCA1MDkzNSwgNTA5NTEsIDUwOTY3LCA1MDk4MywgNTA5OTksIDUxMDE1LCA1MTAzMSwgNTEwNDcsIDUxMDYzLCAKKyAgICA1MTA3OSwgNTEwOTUsIDUxMTExLCA1MTEyNywgNTExNDMsIDUxMTU5LCA1MTE3NSwgNTExOTEsIDUxMjA3LCA1MTIyMywgCisgICAgNTEyMzksIDUxMjU1LCA1MTI3MSwgNTEyODcsIDUxMzAzLCA1MTMxOSwgNTEzMzUsIDUxMzUxLCA1MTM2NywgNTEzODMsIAorICAgIDUxMzk5LCA1MTQxNSwgNTE0MzEsIDUxNDQ3LCA1MTQ2MywgNTE0NzksIDUxNDk1LCA1MTUxMSwgNTE1MjcsIDUxNTQzLCAKKyAgICA1MTU1OSwgNTE1NzUsIDUxNTkxLCA1MTYwNywgNTE2MjMsIDUxNjM5LCA1MTY1NSwgNTE2NzEsIDUxNjg3LCA1MTcwMywgCisgICAgNTE3MTksIDUxNzM1LCA1MTc1MSwgNTE3NjcsIDUxNzgzLCA1MTc5OSwgNTE4MTUsIDUxODMxLCA1MTg0NywgNTE4NjMsIAorICAgIDUxODc5LCA1MTg5NSwgNTE5MTEsIDUxOTI3LCA1MTk0MywgNTE5NTksIDUxOTc1LCA1MTk5MSwgNTIwMDcsIDUyMDIzLCAKKyAgICA1MjAzOSwgNTIwNTUsIDUyMDcxLCA1MjA4NywgNTIxMDMsIDUyMTE5LCA1MjEzNSwgNTIxNTEsIDUyMTY3LCA1MjE4MywgCisgICAgNTIxOTksIDUyMjE1LCA1MjIzMSwgNTIyNDcsIDUyMjYzLCA1MjI3OSwgNTIyOTUsIDUyMzExLCA1MjMyNywgNTIzNDMsIAorICAgIDUyMzU5LCA1MjM3NSwgNTIzOTEsIDUyNDA3LCA1MjQyMywgNTI0MzksIDUyNDU1LCA1MjQ3MSwgNTI0ODcsIDUyNTAzLCAKKyAgICA1MjUxOSwgNTI1MzUsIDUyNTUxLCA1MjU2NywgNTI1ODMsIDUyNTk5LCA1MjYxNSwgNTI2MzEsIDUyNjQ3LCA1MjY2MywgCisgICAgNTI2NzksIDUyNjk1LCA1MjcxMSwgNTI3MjcsIDUyNzQzLCA1Mjc1OSwgNTI3NzUsIDUyNzkxLCA1MjgwNywgNTI4MjMsIAorICAgIDUyODM5LCA1Mjg1NSwgNTI4NzEsIDUyODg3LCA1MjkwMywgNTI5MTksIDUyOTM1LCA1Mjk1MSwgNTI5NjcsIDUyOTgzLCAKKyAgICA1Mjk5OSwgNTMwMTUsIDUzMDMxLCA1MzA0NywgNTMwNjMsIDUzMDc5LCA1MzA5NSwgNTMxMTEsIDUzMTI3LCA1MzE0MywgCisgICAgNTMxNTksIDUzMTc1LCA1MzE5MSwgNTMyMDcsIDUzMjIzLCA1MzIzOSwgNTMyNTUsIDUzMjcxLCA1MzI4NywgNTMzMDMsIAorICAgIDUzMzE5LCA1MzMzNSwgNTMzNTEsIDUzMzY3LCA1MzM4MywgNTMzOTksIDUzNDE1LCA1MzQzMSwgNTM0NDcsIDUzNDYzLCAKKyAgICA1MzQ3OSwgNTM0OTUsIDUzNTExLCA1MzUyNywgNTM1NDMsIDUzNTU5LCA1MzU3NSwgNTM1OTEsIDUzNjA3LCA1MzYyMywgCisgICAgNTM2MzksIDUzNjU1LCA1MzY3MSwgNTM2ODcsIDUzNzAzLCA1MzcxOSwgNTM3MzUsIDUzNzUxLCA1Mzc2NywgNTM3ODMsIAorICAgIDUzNzk5LCA1MzgxNSwgNTM4MzEsIDUzODQ3LCA1Mzg2MywgNTM4NzksIDUzODk1LCA1MzkxMSwgNTM5MjcsIDUzOTQzLCAKKyAgICA1Mzk1OSwgNTM5NzUsIDUzOTkxLCA1NDAwNywgNTQwMjMsIDU0MDM5LCA1NDA1NSwgNTQwNzEsIDU0MDg3LCA1NDEwMywgCisgICAgNTQxMTksIDU0MTM1LCA1NDE1MSwgNTQxNjcsIDU0MTgzLCA1NDE5OSwgNTQyMTUsIDU0MjMxLCA1NDI0NywgNTQyNjMsIAorICAgIDU0Mjc5LCA1NDI5NSwgNTQzMTEsIDU0MzI3LCA1NDM0MywgNTQzNTksIDU0Mzc1LCA1NDM5MSwgNTQ0MDcsIDU0NDIzLCAKKyAgICA1NDQzOSwgNTQ0NTUsIDU0NDcxLCA1NDQ4NywgNTQ1MDMsIDU0NTE5LCA1NDUzNSwgNTQ1NTEsIDU0NTY3LCA1NDU4MywgCisgICAgNTQ1OTksIDU0NjE1LCA1NDYzMSwgNTQ2NDcsIDU0NjYzLCA1NDY3OSwgNTQ2OTUsIDU0NzExLCA1NDcyNywgNTQ3NDMsIAorICAgIDU0NzU5LCA1NDc3NSwgNTQ3OTEsIDU0ODA3LCA1NDgyMywgNTQ4MzksIDU0ODU1LCA1NDg3MSwgNTQ4ODcsIDU0OTAzLCAKKyAgICA1NDkxOSwgNTQ5MzUsIDU0OTUxLCA1NDk2NywgNTQ5ODMsIDU0OTk5LCA1NTAxNSwgNTUwMzEsIDU1MDQ3LCA1NTA2MywgCisgICAgNTUwNzksIDU1MDk1LCA1NTExMSwgNTUxMjcsIDU1MTQzLCA1NTE1OSwgNTUxNzUsIDU1MTkxLCA1NTIwNywgNTUyMjMsIAorICAgIDU1MjM5LCA1NTI1NSwgNTUyNzEsIDU1Mjg3LCA1NTMwMywgNTUzMTksIDU1MzM1LCA1NTM1MSwgNTUzNjcsIDU1MzgzLCAKKyAgICA1NTM5OSwgNTU0MTUsIDU1NDMxLCA1NTQ0NywgNTU0NjMsIDU1NDc5LCA1NTQ5NSwgNTU1MTEsIDU1NTI3LCA1NTU0MywgCisgICAgNTU1NTksIDU1NTc1LCA1NTU5MSwgNTU2MDcsIDU1NjIzLCA1NTYzOSwgNTU2NTUsIDU1NjcxLCA1NTY4NywgNTU3MDMsIAorICAgIDU1NzE5LCA1NTczNSwgNTU3NTEsIDU1NzY3LCA1NTc4MywgNTU3OTksIDU1ODE1LCA1NTgzMSwgNTU4NDcsIDU1ODYzLCAKKyAgICA1NTg3OSwgNTU4OTUsIDU1OTExLCA1NTkyNywgNTU5NDMsIDU1OTU5LCA1NTk3NSwgNTU5OTEsIDU2MDA3LCA1NjAyMywgCisgICAgNTYwMzksIDU2MDU1LCA1NjA3MSwgNTYwODcsIDU2MTAzLCA1NjExOSwgNTYxMzUsIDU2MTUxLCA1NjE2NywgNTYxODMsIAorICAgIDU2MTk5LCA1NjIxNSwgNTYyMzEsIDU2MjQ3LCA1NjI2MywgNTYyNzksIDU2Mjk1LCA1NjMxMSwgNTYzMjcsIDU2MzQzLCAKKyAgICA1NjM1OSwgNTYzNzUsIDU2MzkxLCA1NjQwNywgNTY0MjMsIDU2NDM5LCA1NjQ1NSwgNTY0NzEsIDU2NDg3LCA1NjUwMywgCisgICAgNTY1MTksIDU2NTM1LCA1NjU1MSwgNTY1NjcsIDU2NTgzLCA1NjU5OSwgNTY2MTUsIDU2NjMxLCA1NjY0NywgNTY2NjMsIAorICAgIDU2Njc5LCA1NjY5NSwgNTY3MTEsIDU2NzI3LCA1Njc0MywgNTY3NTksIDU2Nzc1LCA1Njc5MSwgNTY4MDcsIDU2ODIzLCAKKyAgICA1NjgzOSwgNTY4NTUsIDU2ODcxLCA1Njg4NywgNTY5MDMsIDU2OTE5LCA1NjkzNSwgNTY5NTEsIDU2OTY3LCA1Njk4MywgCisgICAgNTY5OTksIDU3MDE1LCA1NzAzMSwgNTcwNDcsIDU3MDYzLCA1NzA3OSwgNTcwOTUsIDU3MTExLCA1NzEyNywgNTcxNDMsIAorICAgIDU3MTU5LCA1NzE3NSwgNTcxOTEsIDU3MjA3LCA1NzIyMywgNTcyMzksIDU3MjU1LCA1NzI3MSwgNTcyODcsIDU3MzAzLCAKKyAgICA1NzMxOSwgNTczMzUsIDU3MzUxLCA1NzM2NywgNTczODMsIDU3Mzk5LCA1NzQxNSwgNTc0MzEsIDU3NDQ3LCA1NzQ2MywgCisgICAgNTc0NzksIDU3NDk1LCA1NzUxMSwgNTc1MjcsIDU3NTQzLCA1NzU1OSwgNTc1NzUsIDU3NTkxLCA1NzYwNywgNTc2MjMsIAorICAgIDU3NjM5LCA1NzY1NSwgNTc2NzEsIDU3Njg3LCA1NzcwMywgNTc3MTksIDU3NzM1LCA1Nzc1MSwgNTc3NjcsIDU3NzgzLCAKKyAgICA1Nzc5OSwgNTc4MTUsIDU3ODMxLCA1Nzg0NywgNTc4NjMsIDU3ODc5LCA1Nzg5NSwgNTc5MTEsIDU3OTI3LCA1Nzk0MywgCisgICAgNTc5NTksIDU3OTc1LCA1Nzk5MSwgNTgwMDcsIDU4MDIzLCA1ODAzOSwgNTgwNTUsIDU4MDcxLCA1ODA4NywgNTgxMDMsIAorICAgIDU4MTE5LCA1ODEzNSwgNTgxNTEsIDU4MTY3LCA1ODE4MiwgMTY3NDksIDU4MTkxLCA1ODE5NywgNTgyMDMsIDU4MjEzLCAKKyAgICA1ODIyMSwgMTQ4ODEsIDE1NDMyLCA5OTUzLCA1ODIzNCwgMTUyMCwgNTgyNDIsIDM3NjEsIDI3NDE1LCA3MTgzLCA1ODI0OCwgCisgICAgNTgyNTMsIDU4MjU4LCA1ODI2MywgNTgyNjgsIDU4Mjc0LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5NiwgNTgzMDEsIAorICAgIDU4MzA2LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzIsIDU4MzM3LCA1ODM0MiwgNTgzNDcsIDU4MzUyLCAKKyAgICA1ODM1NywgNTgzNjMsIDU4MzY4LCA1ODM3NCwgNTgzODEsIDI1NjEsIDU4Mzg2LCA1ODM5MiwgODUyNiwgNTgzOTYsIAorICAgIDU4NDAxLCA1ODQwOCwgNTg0MTYsIDQwLCA1ODQyMCwgNTg0MjYsIDU4NDMxLCA1ODQzNiwgNTg0NDAsIDU4NDQ1LCA1ODQ0OSwgCisgICAgNTg0NTMsIDEwNjc3LCA1ODQ1NywgNTg0NjcsIDU4NDgwLCA1ODQ5MSwgNTg1MDQsIDU4NTExLCA1ODUxNywgNTg1MjIsIAorICAgIDU4NTI4LCA1ODUzNCwgNTg1NDAsIDU4NTQ1LCA1ODU1MCwgNTg1NTUsIDU4NTYwLCA1ODU2NCwgNTg1NjksIDU4NTc0LCAKKyAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5NywgNTg2MDIsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgCisgICAgNTg2MzAsIDU4NjM1LCA1ODYzOSwgMTA2OTMsIDEwNzA0LCAxMDcwOSwgMTU2MywgNTg2NDMsIDE1NjgsIDU4NjQ5LCAKKyAgICAxNjIyNiwgNTg2NTIsIDU4NjU4LCAxNTk5LCA1ODY2NCwgMTYwNSwgMTYxMSwgMTA3MzksIDU4NjY5LCA1ODY3NywgNTg2ODQsIAorICAgIDU4Njg4LCA1ODY5NCwgNTg2OTksIDMwOTUyLCA1ODcwNCwgNTg3MTEsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDE2MTYsIAorICAgIDE2MzE4LCA1ODczMywgNTg3MzcsIDE2MzI5LCAxMTIwLCA1ODc0MSwgNTg3NDgsIDU4NzUzLCA1ODc1NywgMTYzNTQsIAorICAgIDE2MjAsIDM3MzIxLCA1ODc2MCwgNTg3NjUsIDU4Nzc1LCA1ODc4NCwgNTg3ODksIDU4NzkzLCA1ODc5OSwgMTYyNSwgCisgICAgMzkyMzAsIDU4ODA0LCA1ODgxMywgNTg4MTksIDU4ODI0LCAxMDg5NywgMTA5MDMsIDU4ODMwLCA1ODg0MiwgNTg4NTksIAorICAgIDU4ODc2LCA1ODg5MywgNTg5MTAsIDU4OTI3LCA1ODk0NCwgNTg5NjEsIDU4OTc4LCA1ODk5NSwgNTkwMTIsIDU5MDI5LCAKKyAgICA1OTA0NiwgNTkwNjMsIDU5MDgwLCA1OTA5NywgNTkxMTQsIDU5MTMxLCA1OTE0OCwgNTkxNjUsIDU5MTgyLCA1OTE5OSwgCisgICAgNTkyMTYsIDU5MjMzLCA1OTI1MCwgNTkyNjcsIDU5Mjg0LCA1OTMwMSwgNTkzMTgsIDU5MzM1LCA1OTM1MiwgNTkzNjksIAorICAgIDU5Mzg2LCA1OTQwMywgNTk0MjAsIDU5NDM3LCA1OTQ1NCwgNTk0NzEsIDU5NDg4LCA1OTUwNSwgNTk1MjIsIDU5NTM5LCAKKyAgICA1OTU1NiwgNTk1NzMsIDU5NTkwLCA1OTYwNywgNTk2MjQsIDU5NjQxLCA1OTY1OCwgNTk2NzUsIDU5Njg2LCA1OTY5MSwgCisgICAgMTYzMCwgNTk2OTUsIDU5NzAxLCA1OTcwNiwgNTk3MTEsIDkzMTksIDE2MzUsIDU5NzE3LCA1OTcyNiwgMjc3MTAsIDU5NzMxLCAKKyAgICA1OTc0MiwgNTk3NTIsIDU5NzU3LCA1OTc2NCwgNTk3NzAsIDU5Nzc1LCA1OTc4MCwgMTY2MDYsIDU5Nzg0LCAxMDkxNCwgCisgICAgMTY0MCwgMTA5MTksIDU5NzkwLCA1OTc5NSwgNTk4MDEsIDU5ODA2LCA1OTgxMSwgNTk4MTYsIDU5ODIxLCA1OTgyNiwgCisgICAgNTk4MzEsIDU5ODM2LCA1OTg0MiwgNTk4NDgsIDU5ODU0LCA1OTg1OSwgNTk4NjMsIDU5ODY4LCA1OTg3MywgNTk4NzcsIAorICAgIDU5ODgyLCA1OTg4NywgNTk4OTIsIDU5ODk2LCA1OTkwMSwgNTk5MDcsIDU5OTEyLCA1OTkxNywgNTk5MjEsIDU5OTI2LCAKKyAgICA1OTkzMSwgNTk5MzcsIDU5OTQyLCA1OTk0NywgNTk5NTMsIDU5OTU5LCA1OTk2NCwgNTk5NjgsIDU5OTczLCA1OTk3OCwgCisgICAgNTk5ODMsIDU5OTg3LCA1OTk5MiwgNTk5OTcsIDYwMDAyLCA2MDAwOCwgNjAwMTQsIDYwMDE5LCA2MDAyMywgNjAwMjcsIAorICAgIDYwMDMyLCA2MDAzNywgNjAwNDIsIDI5MTA4LCA2MDA0NiwgNjAwNTEsIDYwMDU2LCA2MDA2MiwgNjAwNjcsIDYwMDcyLCAKKyAgICA2MDA3NiwgNjAwODEsIDYwMDg2LCA2MDA5MiwgNjAwOTcsIDYwMTAyLCA2MDEwOCwgNjAxMTQsIDYwMTE5LCA2MDEyMywgCisgICAgNjAxMjgsIDYwMTMzLCA2MDEzNywgNjAxNDIsIDYwMTQ3LCA2MDE1MiwgNjAxNTgsIDYwMTY0LCA2MDE2OSwgNjAxNzMsIAorICAgIDYwMTc4LCA2MDE4MywgNjAxODcsIDYwMTkyLCA2MDE5NywgNjAyMDIsIDYwMjA2LCA2MDIwOSwgMzE2MTQsIDYwMjE0LCAKKyAgICA2MDIyMiwgMTY2NzIsIDM2NjMsIDExMDEwLCA2MDIyOCwgNjAyMzgsIDYwMjUzLCAxMTAxNSwgNjAyNjQsIDYwMjY5LCAKKyAgICA2MDI4MCwgNjAyOTIsIDYwMzA0LCA2MDMxNiwgMjY5NSwgNjAzMjgsIDYwMzMzLCA2MDM0NSwgNjAzNDksIDYwMzU1LCAKKyAgICA2MDM2MSwgNjAzNjYsIDE2NTIsIDEwNjcsIDYwMzc1LCA2MDM4MCwgMzkyODAsIDYwMzg0LCA2MDM4OCwgNjAzOTMsIAorICAgIDYwMzk3LCAxNjc1NywgNjA0MDIsIDYwNDA1LCA2MDQxMywgNjA0MjEsIDE2NTYsIDExMDQwLCAxMTA0NiwgMTY2MSwgCisgICAgNjA0MjksIDYwNDM2LCA2MDQ0MSwgNjA0NTAsIDYwNDYwLCA2MDQ2NywgNjA0NzIsIDYwNDc3LCAxNjY2LCA2MDQ4NCwgCisgICAgNjA0ODksIDE2ODcyLCA2MDQ5MywgNjA0OTgsIDYwNTA1LCA2MDUxMSwgNjA1MTUsIDYwNTI2LCA2MDUzNiwgMTY4OTQsIAorICAgIDkyMjcsIDkyMzQsIDE2NzEsIDYwNTQzLCA2MDU0OSwgNjA1NTcsIDYwNTY0LCA2MDU3MCwgNjA1NzcsIDYwNTg5LCA2MDU5NSwgCisgICAgNjA2MDAsIDYwNjEyLCA2MDYyMywgNjA2MzIsIDYwNjQyLCAzNzQwLCAzMDc4OCwgMzA3OTcsIDE2OTM0LCAxNjc2LCAxNjgwLCAKKyAgICA2MDY1MCwgNjA2NjEsIDYwNjY2LCAxNjgzLCA2MDY3NCwgNjA2NzksIDE2OTg1LCA2MDY5MSwgNjA2OTcsIDYwNzAyLCAKKyAgICA2MDcxMCwgMTY4OCwgNjA3MTUsIDYwNzIwLCA2MDcyOCwgNjA3MzYsIDYwNzQzLCA2MDc1MiwgNjA3NjAsIDYwNzY5LCAKKyAgICAxNjkzLCA2MDc3MywgMTY5OCwgNjA3NzgsIDYwNzg1LCAxNzA1OSwgNjA3OTMsIDYwNzk5LCA2MDgwNCwgNjA4MTIsIAorICAgIDYwODE5LCA2MDgyNywgMjI1NTcsIDYwODMyLCAxMTE3NSwgNjA4NDEsIDYwODQ3LCA2MDg1NCwgNjA4NjEsIDYwODY3LCAKKyAgICA2MDg3NywgNjA4ODMsIDYwODg4LCA2MDg5OSwgNjA5MDQsIDYwOTEyLCAxMTE4NCwgMTExODksIDYwOTIwLCA2MDkyNiwgCisgICAgNjA5MzQsIDM4MDUsIDE3MTAxLCAzOTM2OCwgNjA5MzksIDYwOTQ1LCA2MDk1MCwgNjA5NTgsIDYwOTY1LCAxMjAyOSwgCisgICAgNjA5NzAsIDYwOTc2LCAxNzA5LCA2MDk4MSwgNjA5ODQsIDExMjcsIDYwOTkwLCA2MDk5NSwgNjEwMDAsIDYxMDA2LCAKKyAgICA2MTAxMSwgNjEwMTYsIDYxMDIxLCA2MTAyNiwgNjEwMzEsIDYxMDM2LCAxNzE4LCA5LCA2MTA0MiwgNjEwNDYsIDYxMDUxLCAKKyAgICA2MTA1NSwgNjEwNTksIDYxMDYzLCAzMTg1NCwgNjEwNjgsIDYxMDczLCA2MTA3OCwgNjEwODIsIDYxMDg1LCA2MTA4OSwgCisgICAgNjEwOTMsIDYxMDk4LCA2MTEwMiwgNjExMDcsIDYxMTExLCAzNDU5MSwgMzQ1OTYsIDM0NjAxLCA2MTExNCwgNjExMjEsIAorICAgIDYxMTI3LCAzOTA4OSwgNjExMzcsIDM0NjA3LCAzMjExMiwgMzE4NjksIDMxODc1LCAzNDYyMywgMzE4ODEsIDYxMTQyLCAKKyAgICA2MTE0NywgMzIxNDUsIDYxMTUxLCA2MTE1NCwgNjExNTgsIDYxMTY1LCA2MTE2OCwgNjExNzMsIDYxMTc3LCA2MTE4MSwgCisgICAgNjExODQsIDYxMTk0LCA2MTIwNiwgNjEyMTMsIDYxMjE5LCA2MTIyNiwgMzM1NDgsIDYxMjI5LCA4NTQzLCA4NzcsIDYxMjMyLCAKKyAgICA2MTIzNiwgNjEyNDEsIDM2OTAsIDYxMjQ1LCA2MTI0OCwgMTM2MjUsIDYxMjU1LCA2MTI2MiwgNjEyNzUsIDYxMjgzLCAKKyAgICA2MTI5MiwgNjEzMDEsIDYxMzA2LCA2MTMxNiwgNjEzMjksIDYxMzQxLCA2MTM0OCwgNjEzNTMsIDYxMzYyLCA2MTM3NSwgCisgICAgMzYwMzUsIDYxMzkzLCA2MTM5OCwgNjE0MDUsIDYxNDExLCA2NTIsIDYxNDE2LCA2MTQyNCwgNjE0MzEsIDI3MjU0LCA2MjcsIAorICAgIDYxNDM3LCA2MTQ0MywgNjE0NTMsIDYxNDU5LCA2MTQ2NCwgMzE4OTksIDYwMDMsIDMxOTEzLCA2MTQ2OCwgNjE0NzgsIAorICAgIDYxNDgzLCA2MTQ5MywgNjE1MDgsIDYxNTE0LCA2MTUyMCwgMzE5MjMsIDYxNTI1LCAzMTA2OSwgNjE1MjksIDYxNTM0LCAKKyAgICA2MTUzOSwgNjE1NDMsIDYxNTQ4LCAxNjkzNywgNjE1NTUsIDYxNTYwLCA2MTU2NCwgNjA0NCwgMzE5NDksIDYxNTY4LCAKKyAgICA2MTU3NCwgMzEyLCA2MTU4NCwgNjE1OTEsIDYxNTk4LCA2MTYwMywgNjE2MTIsIDU4NzY5LCA2MTYxOCwgNjE2MjYsIAorICAgIDYxNjMwLCA2MTYzNCwgNjE2MzgsIDYxNjQyLCA2MTY0NywgNjE2NTEsIDYxNjU3LCA2MTY2NSwgNjE2NzAsIDYxNjc1LCAKKyAgICA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5MiwgNjE2OTgsIDYxNzA0LCA2MTcwOSwgNjE3MTMsIDMyMDczLCA2MTcxOCwgCisgICAgMzIwNzksIDMyMDg1LCA2MTcyMywgNjE3MjksIDYxNzM2LCA2MTc0MSwgNjE3NDUsIDMxMDg2LCAxNjU5OSwgNjE3NDgsIAorICAgIDYxNzUyLCA2MTc1NywgNjE3NjQsIDYxNzcwLCA2MTc3NCwgNjE3NzksIDM4Nzk5LCA2MTc4NSwgNjE3ODksIDYxNzkzLCAKKyAgICA2MTc5OCwgNjE4MDQsIDYxODEwLCA2MTgyMiwgNjE4MzEsIDYxODQxLCA2MTg0NywgNjE4NTQsIDYxODU5LCA2MTg2NCwgCisgICAgNjE4NjgsIDYxODcxLCA2MTg3NywgNjE4ODQsIDYxODg5LCA2MTg5NCwgNjE5MDEsIDYxOTA4LCA2MTkxNCwgNjE5MTksIAorICAgIDYxOTI0LCA2MTkzMiwgMzIwOTAsIDI0MjMsIDYxOTM3LCA2MTk0MiwgNjE5NDgsIDYxOTUzLCA2MTk1OSwgNjE5NjQsIAorICAgIDYxOTY5LCA2MTk3NCwgNjE5ODAsIDMyMTExLCA2MTk4NSwgNjE5OTEsIDYxOTk3LCA2MjAwMywgMzIxNzUsIDYyMDA4LCAKKyAgICA2MjAxMywgNjIwMTgsIDMyMTg2LCA2MjAyMywgNjIwMjgsIDYyMDMzLCA2MjAzOSwgNjIwNDUsIDMyMTkxLCA2MjA1MCwgCisgICAgNjIwNTUsIDYyMDYwLCAzMjI0NiwgMzIyNTIsIDYyMDY1LCA2MjA3MCwgMzIyNTcsIDYyMDc1LCAyNzkzNywgMzIyNzksIAorICAgIDMyMjgzLCA2MjA4MCwgNjIwNTYsIDYyMDg0LCA2MjA5MiwgNjIwOTgsIDYyMTA2LCA2MjExMywgNjIxMTksIDYyMTI5LCAKKyAgICA2MjEzNSwgNjIxNDIsIDEwNjI0LCAzMjI5NywgNjIxNDgsIDYyMTYxLCA2MjE3MCwgNjIxNzYsIDYyMTg1LCA2MjE5MSwgCisgICAgMjM0OTUsIDYyMTk4LCA2MjIwNSwgNjIyMTUsIDMyMjQ3LCA2MjIxOCwgNjIyMjUsIDYyMjMwLCA2MjIzNCwgNjIyMzgsIAorICAgIDYyMjQzLCA2MTIwLCA2MjI0NywgNjIyNTIsIDYyMjU3LCAzNDY4NSwgMzQ2OTAsIDYyMjYxLCAzNDcwNCwgNjIyNjYsIAorICAgIDM0NzA5LCA2MjI3MSwgNjIyNzcsIDM0NzIxLCAzNDcyNywgMzQ3MzMsIDYyMjgyLCA2MjI4OCwgMjI1MjIsIDYyMjk5LCAKKyAgICA2MjMwMiwgNjIzMTQsIDYyMzIyLCAzMjMyMCwgNjIzMjYsIDYyMzM1LCA2MjM0NSwgNjIzNTQsIDMyMzMwLCA2MjM1OSwgCisgICAgNjIzNjYsIDYyMzc1LCA2MjM4MSwgNjIzODksIDYyMzk2LCA2MDk1LCA0Mzk3LCA2MjQwMSwgMzIyNTgsIDYyNDA3LCAKKyAgICA2MjQxMCwgNjI0MTYsIDYyNDIzLCA2MjQyOCwgNjI0MzMsIDIzNDA1LCA2MjQzNywgNjI0NDMsIDYyNDQ5LCA2MjQ1NCwgCisgICAgNjI0NTksIDYyNDYzLCA2MjQ2OSwgNjI0NzUsIDMzNDU4LCA4NjMsIDM1Njk4LCAzNjYxOSwgMzY2MjUsIDMyMzY2LCAKKyAgICA2MjQ4MCwgNjI0ODQsIDYyNDg4LCA2MjQ5MSwgNjI1MDQsIDYyNTEwLCA2MjUxNCwgNjI1MTcsIDYyNTIyLCAzMzc2MSwgCisgICAgNjI1MjYsIDMxMDkxLCAyMTI3NCwgNjI1MzIsIDYwMjQsIDYwMzIsIDkwNjgsIDYyNTM1LCA2MjU0MCwgNjI1NDUsIDYyNTUwLCAKKyAgICA2MjU1NSwgNjI1NjAsIDYyNTY1LCA2MjU3MCwgNjI1NzUsIDYyNTgwLCA2MjU4NiwgNjI1OTEsIDYyNTk2LCA2MjYwMiwgCisgICAgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjIsIDYyNjI3LCA2MjYzMiwgNjI2MzgsIDYyNjQzLCA2MjY0OSwgNjI2NTQsIAorICAgIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc0LCA2MjY3OSwgNjI2ODQsIDYyNjg5LCA2MjY5NCwgNjI2OTksIDYyNzA1LCAKKyAgICA2MjcxMCwgNjI3MTUsIDYyNzIwLCA2MjcyNSwgNjI3MzAsIDYyNzM1LCA2Mjc0MSwgNjI3NDYsIDYyNzUxLCA2Mjc1NiwgCisgICAgNjI3NjEsIDYyNzY2LCA2Mjc3MSwgNjI3NzYsIDYyNzgxLCA2Mjc4NiwgNjI3OTIsIDYyNzk3LCA2MjgwMiwgNjI4MDcsIAorICAgIDYyODEyLCA2MjgxOCwgNjI4MjQsIDYyODI5LCA2MjgzNSwgNjI4NDAsIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCAKKyAgICAxNTEzLCAyNDUsIDYyODY1LCA2Mjg2OSwgNjI4NzMsIDYyODc3LCAyNTExNiwgNjI4ODEsIDYyODg1LCA2Mjg5MCwgNjI4OTQsIAorICAgIDYyODk5LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMSwgNjI5MzUsIDEzMzYyLCAKKyAgICA2Mjk0MCwgNjI5NDQsIDYyOTUxLCA2Mjk2MSwgMTUxOTMsIDYyOTcwLCA2Mjk3OSwgNjI5ODMsIDYyOTg4LCA2Mjk5MywgCisgICAgNjI5OTcsIDI0OTA3LCAzMDE5LCA2MzAwMSwgMTczNTAsIDYzMDA3LCA2MzAxNiwgNjMwMjQsIDYzMDMwLCA2MzA0MiwgCisgICAgNjMwNTQsIDYzMDU4LCA2MzA2MywgNjMwNjcsIDYzMDczLCA2MzA3OSwgNjMwODQsIDYzMDk0LCA2MzEwNCwgNjMxMTAsIAorICAgIDYzMTE1LCA2MzExOSwgNjMxMjQsIDYzMTMwLCA2MzEzOSwgNjMxNDgsIDYzMTU2LCAxNTU0NywgNjMxNjAsIDYzMTY5LCAKKyAgICA2MzE3NywgNjMxODksIDYzMjAwLCA2MzIxMSwgNjMyMjAsIDYzMjI0LCA2MzIzMywgNjMyNDMsIDYzMjUxLCA2MzI1NywgCisgICAgNjMyNjIsIDYzMjY4LCA2MzI3MywgOTgsIDMwOTAwLCA2MzI4NCwgMjYyNDksIDI2MjU5LCA2MzI5MCwgNjMyOTcsIDYzMzAzLCAKKyAgICA2MzMwNywgNjMzMTcsIDYzMzI4LCA2MzMzNiwgNjMzNDUsIDYzMzUwLCA2MzM1NSwgNjMzNTksIDE3MzA0LCA2MzM2NywgCisgICAgNjMzNzEsIDYzMzc3LCA2MzM4NywgNjMzOTQsIDYzNDAwLCAzNDc4NCwgNjM0MDYsIDYzNDA4LCA2MzQxMSwgNjM0MTUsIAorICAgIDYzNDI1LCA2MzQzMSwgNjM0MzgsIDEzMzA4LCA2MzQ0NSwgNjM0NTEsIDYzNDYwLCA2MzQ2OSwgNjM0NzUsIDYzNDgxLCAKKyAgICA2MzQ4NywgNjM0OTIsIDYzNDk5LCA2MzUwNiwgNjM1MTIsIDYzNTI1LCA2MzUzNCwgNjM1NDMsIDYzNTQ4LCA2MzU1MiwgCisgICAgNjM1NTgsIDYzNTY1LCA2MzU3MiwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MDksIAorICAgIDYzNjE5LCA2MzYyMywgNjM2MzUsIDYzNjQ0LCA2MzY0OCwgNjM2NTMsIDYzNjU3LCA2MzY2MywgNjM2NjgsIDYzNjc1LCAKKyAgICA2MzY4NCwgNjM2OTIsIDYzNzAwLCA2MzcwNSwgNjM3MDksIDYzNzE0LCA2MzcxOSwgNjM3MjksIDYzNzM3LCA2Mzc0MiwgCisgICAgNjM3NDYsIDYzNzUwLCA2Mzc1NiwgNjM3NjgsIDYzNzc2LCA2Mzc4NiwgNjM3OTMsIDYzNzk5LCA2MzgwNCwgNjM4MDgsIAorICAgIDYzODEyLCA2MzgxNiwgNjM4MjUsIDYzODM0LCA2Mzg0MywgNjM4NDksIDYzODU1LCA2Mzg2MSwgNjM4NjYsIDYzODczLCAKKyAgICA2Mzg3OSwgNjM4ODcsIDYzODk0LCAxMjQ1NiwgNjM5MDAsIDYzOTA2LCA2MzkxMCwgMTQyMzEsIDYzOTE0LCA2MzkxOSwgCisgICAgNjM5MjksIDYzOTM4LCA2Mzk0NCwgNjM5NTAsIDYzOTU4LCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3OSwgNjM5ODcsIAorICAgIDYzOTk0LCA2NDAwMCwgNjQwMTEsIDY0MDE1LCA2NDAxOSwgNjQwMjMsIDY0MDI2LCA2NDAzMiwgNjQwMzcsIDY0MDQxLCAKKyAgICA2NDA0NSwgNjQwNTQsIDY0MDYyLCA2NDA2OSwgNjQwNzUsIDY0MDgyLCAyNDAyOSwgMzg4NDEsIDY0MDg3LCA2NDA5NSwgCisgICAgNjQwOTksIDY0MTAzLCA2NDEwNiwgNjQxMTQsIDY0MTIxLCA2NDEyNywgNjQxMzYsIDY0MTQ0LCA2NDE1MCwgNjQxNTUsIAorICAgIDY0MTU5LCA2NDE2NCwgNjQxNjgsIDY0MTcyLCA2NDE3NywgNjQxODYsIDY0MTkwLCA2NDE5NywgNjQyMDQsIDY0MjEwLCAKKyAgICA2NDIxOCwgNjQyMjQsIDY0MjM1LCA2NDI0MywgNjQyNDksIDIyNjUyLCA2NDI1OCwgNjQyNjUsIDY0MjcyLCA2NDI3OSwgCisgICAgNjQyODYsIDY0MjkzLCA0MTg3MCwgMTMxNDYsIDY0MzAwLCA2NDMwNywgNjQzMTIsIDM0ODIwLCA2MjE3LCA2NDMxOCwgCisgICAgNjQzMjMsIDY0MzI4LCA2NDMzNCwgNjQzNDAsIDY0MzQ2LCA2NDM1MSwgNjQzNTYsIDY0MzYxLCA2NDM2NiwgNjQzNzIsIAorICAgIDY0Mzc3LCA2NDM4MywgNjQzODgsIDY0Mzk0LCA2NDM5OSwgNjQ0MDQsIDY0NDA5LCA2NDQxNCwgNjQ0MTksIDY0NDI0LCAKKyAgICA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NiwgNjQ0NTEsIDY0NDU2LCA2NDQ2MSwgNjQ0NjYsIDY0NDcxLCA2NDQ3NiwgCisgICAgNjQ0ODIsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIDY0NTE3LCA2NDUyMiwgNjQ1MjcsIAorICAgIDY0NTMyLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCA2NDU2OCwgNjQ1NzMsIDY0NTc4LCAKKyAgICA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgCisgICAgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgNjQ2NTAsIDE4MzQsIDIyNCwgMzc0MTcsIDY0NjU1LCA2NDY1OCwgNjQ2NjMsIDY0NjY3LCAKKyAgICA2NDY3MCwgNjQ2NzUsIDYzNjk2LCA2NDY4NiwgNjQ2OTYsIDY0NzAzLCA2NDcxOSwgNjQ3MjgsIDY0NzM4LCA2NDc0OCwgCisgICAgNjQ3NTYsIDY0NzcwLCA2NDc3OCwgNjQ3ODIsIDY0Nzg1LCA2NDc5MiwgNjQ3OTgsIDY0ODA5LCA2NDgyMSwgNjQ4MzIsIAorICAgIDY0ODQxLCA2NDg0OCwgMTI5NywgMjMyOTQsIDY0ODU4LCAyNTkwLCA2NDg2MiwgNjQ4NzEsIDExMzMsIDE3Mjc3LCAzODA1NCwgCisgICAgNjQ4NzksIDY0ODg3LCA2NDkwMSwgNjQ5MTQsIDY0OTE4LCA2NDkyMywgNjQ5MjgsIDY0OTMzLCA2NDkzOSwgNjQ5NDUsIAorICAgIDY0OTUwLCA4NTM1LCA2NDk1NSwgNjQ5NTksIDY0OTY3LCAxMTA0MSwgNjQ5NzIsIDY0OTc4LCA2NDk4NywgMTcyMSwgCisgICAgMTEwNTMsIDczNiwgNjQ5OTEsIDY1MDAwLCA2NTAxMCwgMjcwMTMsIDY1MDE5LCA2NTAyNSwgMTY4NDksIDY1MDMxLCAKKyAgICA2NTAzNSwgMzk2NCwgMTEzODQsIDY1MDQxLCA2NTA0OCwgNjA2NTYsIDY1MDUyLCA2NTA1NiwgMzk4OCwgMTg5LCAxNDE0NiwgCisgICAgNjUwNjIsIDY1MDc0LCA2NTA3OCwgNjUwODQsIDI3NzMwLCA2NTA4OCwgMTEzNzIsIDI3MzAsIDQsIDY1MDkzLCA2NTEwMywgCisgICAgNjUxMDksIDY1MTIwLCA2NTEyNywgNjUxMzMsIDY1MTM5LCA2NTE0NywgNjUxNTQsIDY1MTYwLCA2NTE3MCwgNjUxODAsIAorICAgIDY1MTkwLCAyMzQ4MiwgMTMwOSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTMsIDY1MjE3LCAyNzUzLCAyNzU5LCA4NTMyLCAKKyAgICAyMjY0LCA2NTIyMSwgNjUyMjUsIDY1MjM0LCA2NTI0MiwgNjUyNTMsIDY1MjYxLCA2NTI2OSwgNjUyNzUsIDY1MjgwLCAKKyAgICA2NTI5MSwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgOTY4NywgNjUzMjEsIDY1MzI5LCA2NTMzMywgNjUzMzcsIDY1MzQxLCAKKyAgICA2NTM1MywgMjgxMTUsIDY1MzYwLCA2NTM3MCwgNjUzNzYsIDY1MzgyLCA5Nzg5LCA2NTM5MiwgNjU0MDMsIDY1NDEzLCAKKyAgICA2NTQyMiwgNjU0MjYsIDY1NDMzLCAxMTM1LCAxMTcwLCA2NTQ0MywgNjU0NDgsIDY1NDU2LCA2NTQ2NCwgNjU0NzUsIAorICAgIDY1NDgyLCA2NTQ5NiwgMTQwNzUsIDM5MywgNjU1MDYsIDY1NTEwLCA2NTUxOCwgNjU1MjcsIDY1NTM1LCA2NTU0MSwgCisgICAgNjU1NTUsIDY1NTYyLCA2NTU2OCwgNjU1NzcsIDY1NTg0LCA2NTU5NCwgNjU2MDIsIDM4MTIsIDE1NiwgNjU2MTAsIDY1NjIxLCAKKyAgICA2NTYyNSwgNjU2MzcsIDI3OTI4LCAxNjEsIDY1NjQzLCA2NTY0OCwgNjU2NTIsIDY1NjU5LCA2NTY2NSwgNjU2NzMsIAorICAgIDY1NjgwLCA4ODE4LCA2NTY4NywgNjU2OTYsIDY1NzA0LCAzODc4LCA2NTcxNywgODE5OSwgNjU3MjEsIDI3OTgsIDQ1MCwgCisgICAgNjU3MjYsIDY1NzM5LCA2NTc0NCwgMTgzMywgNjY4LCA2NTc0OCwgMzg5NSwgNjU3NTYsIDY1NzYyLCA2NTc2NiwgOTMxLCAKKyAgICA2NTc3NiwgNjU3ODUsIDY1NzkwLCAxNDkxNSwgMTQ5MjIsIDQ1MjMyLCA2NTc5NCwgMzgyMiwgMTMwMzQsIDY1ODAyLCAKKyAgICA2NTgwOSwgMjM1MzgsIDY1ODEzLCA2NTgyMCwgNjU4MjYsIDY1ODMxLCA2NTgzNiwgMTQ5MzUsIDM3MiwgNjU4NDEsIAorICAgIDY1ODUzLCA2NTg1OSwgNjU4NjcsIDI4MTAsIDE3NTMsIDY1ODc1LCA2NTg3NywgNjU4ODIsIDY1ODg3LCA2NTg5MiwgCisgICAgNjU4OTgsIDY1OTAzLCA2NTkwOCwgNjU5MTMsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTM0LCA2NTkzOSwgNjU5NDQsIAorICAgIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzQsIDY1OTgwLCA2NTk4NSwgNjU5OTAsIDY1OTk1LCAKKyAgICA2NjAwMSwgNjYwMDYsIDY2MDEyLCA2NjAxNywgNjYwMjIsIDY2MDI3LCA2NjAzMiwgNjYwMzcsIDY2MDQyLCA2NjA0NywgCisgICAgNjYwNTMsIDY2MDU4LCA2NjA2NCwgNjYwNjksIDY2MDc0LCA2NjA3OSwgNjYwODQsIDY2MDg5LCA2NjA5NCwgNjYwOTksIAorICAgIDY2MTA0LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMjksIDY2MTMzLCA2NjEzOCwgNjYxNDIsIDY2MTQ3LCAKKyAgICA2NjE1MiwgNjYxNTgsIDY2MTYzLCA2NjE2NywgNjYxNzIsIDY2MTc2LCA2NjE3OSwgNjYxODEsIDY2MTg1LCA2NjE4OCwgCisgICAgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxOCwgNjYyMjIsIDMyNTI0LCA2NjIyNSwgMzI1MjksIAorICAgIDY2MjMyLCA2NjIzNywgMzI1MzQsIDY2MjQ2LCA2NjI1NSwgMzI1NDAsIDY2MjYwLCAzMjU0NSwgNjYyNjksIDY2Mjc0LCAKKyAgICAxMTU3MSwgNjYyNzgsIDY2MjgzLCA2NjI4OCwgMzI1NTAsIDY2MjkyLCA0MDE5NiwgNjYyOTYsIDY2Mjk5LCA2NjMwMywgCisgICAgODIxMSwgNjYzMDksIDY2MzE0LCA2NjMxOCwgMzcwNSwgMzI1NTUsIDY2MzIxLCA2NjMyNSwgNjYzMjgsIDY2MzMzLCAKKyAgICA2NjMzNywgNjYzNDMsIDY2MzUxLCA2NjM2NCwgNjYzNzMsIDY2Mzc5LCA2NjM4NCwgNjYzOTAsIDY2Mzk0LCA2NjQwMCwgCisgICAgNjY0MDgsIDY2NDEzLCA2NjQxNywgNjY0MjQsIDY2NDMwLCA2NjQzOCwgNjY0NDcsIDY2NDU1LCAzMjU1OCwgNjY0NjIsIAorICAgIDY2NDcyLCA2NjQ4MSwgNjY0OTQsIDY2NDk5LCA2NjUwNCwgNjY1MTMsIDY2NTE5LCA2NjUyNiwgNjY1MzcsIDY2NTQ5LCAKKyAgICA2NjU1NiwgNjY1NjUsIDY2NTc0LCA2NjU4MywgNjY1OTAsIDY2NTk2LCA2NjYwMywgNjY2MTEsIDY2NjE4LCA2NjYyNiwgCisgICAgNjY2MzUsIDY2NjQzLCA2NjY1MCwgNjY2NTgsIDY2NjY3LCA2NjY3NSwgNjY2ODQsIDY2Njk0LCA2NjcwMywgNjY3MTEsIAorICAgIDY2NzE4LCA2NjcyNiwgNjY3MzUsIDY2NzQzLCA2Njc1MiwgNjY3NjIsIDY2NzcxLCA2Njc3OSwgNjY3ODgsIDY2Nzk4LCAKKyAgICA2NjgwNywgNjY4MTcsIDY2ODI4LCA2NjgzOCwgNjY4NDcsIDY2ODU1LCA2Njg2MiwgNjY4NzAsIDY2ODc5LCA2Njg4NywgCisgICAgNjY4OTYsIDY2OTA2LCA2NjkxNSwgNjY5MjMsIDY2OTMyLCA2Njk0MiwgNjY5NTEsIDY2OTYxLCA2Njk3MiwgNjY5ODIsIAorICAgIDY2OTkxLCA2Njk5OSwgNjcwMDgsIDY3MDE4LCA2NzAyNywgNjcwMzcsIDY3MDQ4LCA2NzA1OCwgNjcwNjcsIDY3MDc3LCAKKyAgICA2NzA4OCwgNjcwOTgsIDY3MTA5LCA2NzEyMSwgNjcxMzIsIDY3MTQyLCA2NzE1MSwgNjcxNTksIDY3MTY2LCA2NzE3NCwgCisgICAgNjcxODMsIDY3MTkxLCA2NzIwMCwgNjcyMTAsIDY3MjE5LCA2NzIyNywgNjcyMzYsIDY3MjQ2LCA2NzI1NSwgNjcyNjUsIAorICAgIDY3Mjc2LCA2NzI4NiwgNjcyOTUsIDY3MzAzLCA2NzMxMiwgNjczMjIsIDY3MzMxLCA2NzM0MSwgNjczNTIsIDY3MzYyLCAKKyAgICA2NzM3MSwgNjczODEsIDY3MzkyLCA2NzQwMiwgNjc0MTMsIDY3NDI1LCA2NzQzNiwgNjc0NDYsIDY3NDU1LCA2NzQ2MywgCisgICAgNjc0NzIsIDY3NDgyLCA2NzQ5MSwgNjc1MDEsIDY3NTEyLCA2NzUyMiwgNjc1MzEsIDY3NTQxLCA2NzU1MiwgNjc1NjIsIAorICAgIDY3NTczLCA2NzU4NSwgNjc1OTYsIDY3NjA2LCA2NzYxNSwgNjc2MjUsIDY3NjM2LCA2NzY0NiwgNjc2NTcsIDY3NjY5LCAKKyAgICA2NzY4MCwgNjc2OTAsIDY3NzAxLCA2NzcxMywgNjc3MjQsIDY3NzM2LCA2Nzc0OSwgNjc3NjEsIDY3NzcyLCA2Nzc4MiwgCisgICAgNjc3OTEsIDY3Nzk5LCA2NzgwNiwgNjc4MTQsIDY3ODIzLCA2NzgzMSwgNjc4NDAsIDY3ODUwLCA2Nzg1OSwgNjc4NjcsIAorICAgIDY3ODc2LCA2Nzg4NiwgNjc4OTUsIDY3OTA1LCA2NzkxNiwgNjc5MjYsIDY3OTM1LCA2Nzk0MywgNjc5NTIsIDY3OTYyLCAKKyAgICA2Nzk3MSwgNjc5ODEsIDY3OTkyLCA2ODAwMiwgNjgwMTEsIDY4MDIxLCA2ODAzMiwgNjgwNDIsIDY4MDUzLCA2ODA2NSwgCisgICAgNjgwNzYsIDY4MDg2LCA2ODA5NSwgNjgxMDMsIDY4MTEyLCA2ODEyMiwgNjgxMzEsIDY4MTQxLCA2ODE1MiwgNjgxNjIsIAorICAgIDY4MTcxLCA2ODE4MSwgNjgxOTIsIDY4MjAyLCA2ODIxMywgNjgyMjUsIDY4MjM2LCA2ODI0NiwgNjgyNTUsIDY4MjY1LCAKKyAgICA2ODI3NiwgNjgyODYsIDY4Mjk3LCA2ODMwOSwgNjgzMjAsIDY4MzMwLCA2ODM0MSwgNjgzNTMsIDY4MzY0LCA2ODM3NiwgCisgICAgNjgzODksIDY4NDAxLCA2ODQxMiwgNjg0MjIsIDY4NDMxLCA2ODQzOSwgNjg0NDgsIDY4NDU4LCA2ODQ2NywgNjg0NzcsIAorICAgIDY4NDg4LCA2ODQ5OCwgNjg1MDcsIDY4NTE3LCA2ODUyOCwgNjg1MzgsIDY4NTQ5LCA2ODU2MSwgNjg1NzIsIDY4NTgyLCAKKyAgICA2ODU5MSwgNjg2MDEsIDY4NjEyLCA2ODYyMiwgNjg2MzMsIDY4NjQ1LCA2ODY1NiwgNjg2NjYsIDY4Njc3LCA2ODY4OSwgCisgICAgNjg3MDAsIDY4NzEyLCA2ODcyNSwgNjg3MzcsIDY4NzQ4LCA2ODc1OCwgNjg3NjcsIDY4Nzc3LCA2ODc4OCwgNjg3OTgsIAorICAgIDY4ODA5LCA2ODgyMSwgNjg4MzIsIDY4ODQyLCA2ODg1MywgNjg4NjUsIDY4ODc2LCA2ODg4OCwgNjg5MDEsIDY4OTEzLCAKKyAgICA2ODkyNCwgNjg5MzQsIDY4OTQ1LCA2ODk1NywgNjg5NjgsIDY4OTgwLCA2ODk5MywgNjkwMDUsIDY5MDE2LCA2OTAyOCwgCisgICAgNjkwNDEsIDY5MDUzLCA2OTA2NiwgNjkwODAsIDY5MDkzLCA2OTEwNSwgNjkxMTYsIDY5MTI2LCA2OTEzNSwgNjkxNDMsIAorICAgIDY5MTUwLCA2OTE1NSwgODA1OCwgNjkxNjIsIDMyNTY4LCA2OTE2NywgNjkxNzIsIDMyNTczLCA2OTE3OCwgMjA5MTYsIAorICAgIDMyNTc4LCA2OTE4MywgNjkxODksIDY5MTk3LCA2OTIwMywgNjkyMDksIDY5MjE2LCA2OTIyMywgNjkyMjgsIDY5MjMyLCAKKyAgICA2OTIzNSwgNjkyMzksIDY5MjQ4LCA2OTI1NCwgNjkyNjYsIDY5Mjc3LCA2OTI4MSwgMzA4MSwgODAzMywgNjkyODYsIAorICAgIDY5Mjg5LCA2OTI5MSwgNjkyOTUsIDY5Mjk5LCA2OTMwMywgNjkzMDksIDY5MzE0LCAyNTkyNywgNjkzMTksIDY5MzIzLCAKKyAgICA2OTMyNiwgNjkzMzEsIDY5MzM1LCA2OTM0MiwgNjkzNDgsIDY5MzUyLCA2MTcwLCA2OTM1NiwgMzI1OTUsIDY5MzYxLCAKKyAgICA2OTM2OCwgNjkzNzcsIDY5Mzg1LCA2OTM5NiwgNjk0MDQsIDY5NDEyLCA2OTQxOSwgNjk0MjYsIDY5NDMyLCA2OTQ0MywgCisgICAgMzI2MDAsIDY5NDQ4LCA2OTQ1OSwgNjk0NzEsIDY5NDc5LCA2OTQ5MCwgNjk0OTksIDY5NTEwLCA2OTUxNSwgNjk1MjMsIAorICAgIDI1NTYsIDY5NTI4LCAzNDI3MCwgNjk1NDEsIDY5NTQ1LCA2OTU1NywgNjk1NjUsIDY5NTcwLCA2OTU3OCwgMTc0NzIsIAorICAgIDY5NTg5LCA2OTU5NSwgNjk2MDIsIDY5NjEwLCA2OTYxNiwgMzI2MTAsIDY5NjIxLCAzOTE0LCA1ODIxNywgNjk2MjgsIAorICAgIDY5NjMxLCA2OTYzOSwgNjk2NTIsIDY5NjY1LCA2OTY3OCwgNjk2OTEsIDY5Njk4LCA2OTcwOSwgNjk3MTgsIDQxNjg3LCAKKyAgICA0MTY5MiwgNjk3MjMsIDY5NzI3LCA2OTczNSwgNjk3NDIsIDY5NzUxLCA2OTc1OSwgNjk3NjUsIDY5Nzc0LCA2OTc4MiwgCisgICAgNjk3OTAsIDY5Nzk0LCA2OTgwMywgNjk4MTIsIDY5ODIyLCA2OTgzNSwgNjk4NDgsIDY5ODU4LCAzMjYxNSwgNjk4NjQsIAorICAgIDY5ODcxLCA2OTg3NywgMzI2MjEsIDY5ODgyLCA2OTg4NSwgNjk4ODksIDY5ODk3LCA2OTkwNiwgNDE0MjUsIDY5OTE0LCAKKyAgICA2OTkyMywgNjk5MzEsIDY5OTM4LCA2OTk0NiwgNjk5NTYsIDY5OTY1LCA2OTk3NCwgNjk5ODMsIDY5OTkxLCA3MDAwMiwgCisgICAgNzAwMTIsIDkzNTksIDIxNTU0LCA3MDAyMSwgNzAwMjYsIDcwMDMxLCA3MDAzNSwgNzAwMzksIDcwMDQ0LCA3MDA1MCwgCisgICAgNzAwNTUsIDcwMDYwLCA3MDA2NiwgNzAwNzEsIDcwMDc2LCAyMTUxOSwgNzAwODEsIDcwMDg4LCA3MDA5NiwgNzAxMDQsIAorICAgIDcwMTA5LCA3MDExNiwgNzAxMjMsIDcwMTI4LCA3MDEzMiwgNzAxMzYsIDcwMTQ0LCA3MDE1MiwgMzI2MzgsIDcwMTU4LCAKKyAgICA3MDE2NCwgNzAxNzYsIDcwMTgyLCA3MDE4NiwgNzAxOTMsIDcwMTk4LCA3MDIwOSwgNzAyMTksIDcwMjI5LCA3MDI0MSwgCisgICAgNzAyNDcsIDcwMjU3LCA3MDI2NywgMzI2NjUsIDcwMjc2LCA3MDI4NSwgNzAyOTEsIDcwMzAzLCA3MDMxNCwgNzAzMjEsIAorICAgIDcwMzI2LCA3MDMzMCwgNzAzMzgsIDcwMzQ0LCA3MDM0OSwgNzAzNTQsIDcwMzYxLCA3MDM2OSwgNzAzODEsIDcwMzkxLCAKKyAgICA3MDQwMCwgNzA0MDksIDcwNDE2LCAzNDEzMiwgMjM4MzQsIDcwNDIyLCA3MDQyNywgNzA0MzEsIDcwNDM1LCA3MDQ0MCwgCisgICAgNzA0NDYsIDcwNDU3LCA3MDQ3MCwgNzA0NzUsIDcwNDgyLCAzMjY3MCwgNzA0ODcsIDcwNDk5LCA3MDUwOCwgNzA1MTgsIAorICAgIDcwNTI5LCA3MDU0MiwgNzA1NDksIDcwNTU4LCA3MDU2NywgNzA1NzUsIDcwNTgwLCA3MDU4NiwgMTA1OCwgNzA1OTEsIAorICAgIDcwNTk2LCA3MDYwMSwgNzA2MDYsIDcwNjEyLCA3MDYxNywgNzA2MjIsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQzLCAKKyAgICA3MDY0OCwgNzA2NTMsIDcwNjU4LCA1ODcyOSwgNzA2NjMsIDcwNjY4LCA3MDY3MywgNzA2NzgsIDcwNjg0LCA3MDY5MCwgCisgICAgNzA2OTUsIDcwNjk5LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcyMCwgNzA3MjUsIDcwNzMxLCA3MDczNiwgNzA3NDEsIAorICAgIDcwNzQ2LCA3MDc1MSwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzUsIDcwNzgwLCA3MDc4NSwgNzA3OTAsIDcwNzk1LCAKKyAgICA3MDc5OSwgNzA4MDYsIDcwODEyLCAxNzEyMiwgMTcxMjksIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgCisgICAgNDU0ODcsIDcwODM3LCA3MDc2NywgNzA4MzksIDcwODQ5LCAzMjY3OSwgNzA4NTIsIDcwODYxLCA3MDg2NywgNjE0MywgCisgICAgMzI2ODQsIDcwODcxLCA3MDg3NywgNzA4ODIsIDcwODg4LCA3MDg5MywgNzA4OTcsIDcwOTA0LCA3MDkwOSwgNzA5MTksIAorICAgIDcwOTI4LCA3MDkzMiwgNzA5MzgsIDcwOTQ0LCA3MDk1MCwgNzA5NTQsIDcwOTYyLCA3MDk2OSwgNzA5NzcsIDcwOTg1LCAKKyAgICAzMjY4OSwgNzA5OTIsIDcwOTk1LCA3MTAwMiwgNzEwMDgsIDcxMDEzLCA3MTAxNywgNzEwMjMsIDcxMDMwLCA3MTAzNSwgCisgICAgNzEwMzksIDcxMDQ4LCA3MTA1NiwgNzEwNjIsIDcxMDY3LCAzMjY5NCwgNzEwNzQsIDcxMDgxLCA3MTA4NywgNzEwOTIsIAorICAgIDcxMDk4LCA3MTEwNSwgNzExMTEsIDIxMjgxLCAyNzQzOCwgNzExMTcsIDcxMTIyLCA3MTEyOCwgNzExNDAsIDcwODAwLCAKKyAgICA3MDgwNywgMjE0NTcsIDcxMTUwLCA3MTE1NSwgNzExNjIsIDcxMTY4LCA3MTE3NSwgNzExODEsIDcxMTkyLCA3MTE5NywgCisgICAgOTEwMywgNzEyMDUsIDcxMjA4LCA3MTIxNCwgNzEyMTgsIDcxMjIyLCA3MTIyNSwgNzEyMzEsIDMyNDQzLCA2MTk0LCA5NjQsIAorICAgIDEzNDEyLCA3MTIzOCwgNzEyNDQsIDcxMjUwLCA3MTI1NiwgNzEyNjIsIDcxMjY4LCA3MTI3NCwgNzEyODAsIDcxMjg2LCAKKyAgICA3MTI5MSwgNzEyOTYsIDcxMzAxLCA3MTMwNiwgNzEzMTEsIDcxMzE2LCA3MTMyMSwgNzEzMjYsIDcxMzMxLCA3MTMzNiwgCisgICAgNzEzNDEsIDcxMzQ2LCA3MTM1MSwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzMsIDcxMzc4LCA3MTM4MywgNzEzODksIAorICAgIDcxMzk1LCA3MTQwMSwgNzE0MDcsIDcxNDEzLCA3MTQxOSwgNzE0MjUsIDcxNDMxLCA3MTQzNywgNzE0NDIsIDcxNDQ3LCAKKyAgICA3MTQ1MywgNzE0NTgsIDcxNDYzLCA3MTQ2OSwgNzE0NzQsIDcxNDc5LCA3MTQ4NCwgNzE0ODksIDcxNDk0LCA3MTQ5OSwgCisgICAgNzE1MDQsIDcxNTA5LCA3MTUxNCwgNzE1MTksIDcxNTI0LCA3MTUyOSwgNzE1MzUsIDcxNTQwLCA3MTU0NSwgNzE1NTAsIAorICAgIDcxNTU2LCA3MTU2MSwgNzE1NjYsIDcxNTcxLCA3MTU3NiwgNzE1ODIsIDcxNTg3LCA3MTU5MiwgNzE1OTcsIDcxNjAyLCAKKyAgICA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMiwgNzE2MjcsIDcxNjMyLCA3MTYzNywgNzE2NDIsIDcxNjQ3LCA3MTY1MiwgCisgICAgNzE2NTcsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MywgNzE2ODgsIDcxNjkzLCA3MTY5OCwgNzE3MDMsIAorICAgIDcxNzA4LCA3MTcxMywgNzE3MTgsIDE4NjQsIDE0MiwgNzE3MjMsIDcxNzI3LCA3MTczMSwgNzE3MzYsIDcxNzQ0LCA3MTc0OCwgCisgICAgNzE3NTUsIDcxNzYzLCA3MTc2NywgNzE3ODAsIDcxNzg4LCA3MTc5MiwgNzE3OTUsIDcxODAwLCA3MTgwNCwgNzE4MDksIAorICAgIDcxODEzLCA3MTgyMSwgNzE4MjUsIDIwOTI0LCA3MTgzMCwgNzE4MzQsIDYwOTMwLCA3MTgzOCwgNzE4NDEsIDcxODQ5LCAKKyAgICA3MTg1NywgNzE4NjUsIDcxODcwLCA3MTg3NywgNzE4ODMsIDcxODg5LCA3MTg5NCwgNzE5MDEsIDcxOTA2LCA3MTkxNCwgCisgICAgNjQ5MDYsIDcxOTIxLCA3MTkyNiwgNzE5MzEsIDcxOTM1LCAxMTYzOCwgNzE5MzksIDcxOTQ0LCA3MTk0OSwgNzE5NTMsIAorICAgIDcxOTU2LCA3MTk2MiwgNzE5NjYsIDcxOTc2LCA3MTk4NSwgNzE5ODgsIDcxOTkyLCA3MTk5OSwgNzIwMTIsIDcyMDE4LCAKKyAgICA3MjAyNiwgNzIwMzcsIDcyMDQ4LCA3MjA1OSwgNzIwNzAsIDcyMDc5LCA3MjA4NSwgNzIwOTQsIDcyMTAyLCA3MjExMiwgCisgICAgNzIxMjUsIDcyMTMyLCA3MjE0MywgNzIxNDksIDcyMTU0LCA3MjE1OSwgNzIxNjUsIDcyMTcxLCA3MjE4MSwgNzIxOTAsIAorICAgIDcwNDg5LCA3MjE5OCwgNzIyMDQsIDcyMjEyLCA3MjIxOCwgNzIyMjYsIDcyMjI5LCA3MjIzMywgNzIyMzcsIDcyMjQwLCAKKyAgICA3MjI0NiwgNzIyNTIsIDcyMjYwLCA3MjI3MiwgNzIyODQsIDcyMjkxLCA3MjI5NSwgNzIzMDYsIDcyMzE0LCA3MjMyMSwgCisgICAgNzIzMzMsIDcyMzQxLCA3MjM0OSwgNzIzNTYsIDcyMzYyLCA3MjM3MiwgNzIzODEsIDcyMzg2LCA3MjM5NiwgNzI0MDUsIAorICAgIDQwNzUxLCA3MjQxMiwgNzI0MTYsIDcyNDIxLCA3MjQyOSwgNzI0MzYsIDcyNDQyLCA3MjQ0NiwgNzI0NTYsIDcyNDY3LCAKKyAgICA3MjQ3NSwgNzI0ODIsIDcyNDk0LCA3MjUwNiwgNzI1MTUsIDY5NTMxLCA3MjUyMiwgNzI1MzMsIDcyNTQ3LCA3MjU1NSwgCisgICAgNzI1NjUsIDcyNTcyLCA3MjU4MCwgNzI1OTIsIDcyNjAxLCA3MjYwOSwgNzI2MTksIDcyNjMwLCA3MjY0MiwgNzI2NTEsIAorICAgIDcyNjYxLCA3MjY2OCwgNzI2NzcsIDcyNjkyLCA3MjcwMCwgNzI3MTAsIDcyNzE5LCA3MjcyNywgNzI3NDAsIDcyNzU1LCAKKyAgICA3Mjc1OSwgNzI3NjgsIDcyNzgwLCA3Mjc5MSwgNzI4MDIsIDcyODEzLCA3MjgyMywgNzI4MzQsIDcyODQyLCA3Mjg0OCwgCisgICAgNzI4NTgsIDcyODY2LCA3Mjg3MiwgMjkwMDcsIDcyODc3LCA3Mjg4MywgNzI4ODgsIDcyODk1LCA5NzAxLCAxNzQ5MiwgCisgICAgNzI5MDEsIDcyOTEwLCA3MjkxNSwgNzI5MTksIDcyOTI2LCA3MjkzMiwgNzI5MzcsIDcyOTQyLCA3Mjk1MCwgNzI5NTgsIAorICAgIDcyOTYyLCA3Mjk2NSwgNzI5NjgsIDcyOTcwLCA3Mjk3NywgNzI5ODMsIDcyOTk0LCA3Mjk5OSwgNzMwMDMsIDczMDEwLCAKKyAgICA3MzAxNiwgNzMwMjEsIDczMDI5LCA2NTQwNSwgNjU0MTUsIDczMDM1LCA3MzA0MiwgNzMwNTIsIDEwNjExLCA3MzA1OSwgCisgICAgNzMwNjQsIDI5MjAzLCA3MzA3MywgNzMwNzgsIDczMDg1LCA3MzA5NSwgNzMxMDMsIDczMTExLCA3MzEyMCwgNzMxMjYsIAorICAgIDczMTMyLCA3MzEzOSwgNzMxNDYsIDczMTUxLCA3MzE1NSwgNzMxNjMsIDczMTY4LCA3MzE3MywgNzMxODEsIDczMTg4LCAKKyAgICA3MzE5MywgNzMxOTksIDczMjAyLCA3MzIwNiwgNzMyMTUsIDcxNzc1LCA3MzIyNCwgNzMyMjgsIDczMjM0LCA3MzI0NSwgCisgICAgNzMyNTUsIDE3NTAxLCA3MzI2NiwgNzMyNzQsIDE3NTEzLCA3MzI4MSwgNzMyODUsIDczMjk0LCAyNzMyNCwgNzMzMDEsIAorICAgIDczMzA1LCA3MzMxMCwgNzMzMjcsIDczMzM5LCAxMDU2OSwgNzMzNTEsIDczMzU2LCA3MzM2MSwgNzMzNjYsIDIwOTk3LCAKKyAgICA3MzM3MCwgNzMzNzUsIDczMzgwLCA3MzM4NiwgNzMzOTEsIDU4NDYsIDIxMDAxLCA3MzM5NiwgNzM0MDEsIDczNDA3LCAKKyAgICA3MzQxNCwgNzM0MTksIDczNDI0LCA3MzQzMCwgNzM0MzYsIDczNDQyLCA3MzQ0NywgNzM0NTMsIDczNDU3LCA3MzQ3MSwgCisgICAgNzM0NzksIDczNDg3LCA3MzQ5MywgNzM0OTgsIDczNTA1LCA3MzUxNSwgNzM1MjQsIDczNTI5LCA3MzUzNCwgNzM1NDIsIAorICAgIDczNTQ3LCA3MzU1MywgNzM1NTgsIDczNTY3LCA1OTc4NiwgNzM1NzIsIDczNTc1LCA3MzU5MywgNzM2MTIsIDczNjI1LCAKKyAgICA3MzYzOSwgNzM2NTUsIDczNjYyLCA3MzY2OSwgNzM2NzUsIDczNjgyLCA3MzY4NywgNzM2OTMsIDczNjk5LCA3MzcwNywgCisgICAgNzM3MTMsIDczNzE4LCA3MzcyMywgNzM3MzksIDEwNTgyLCA3Mzc1MywgNzM3NjAsIDczNzY4LCA3Mzc3NCwgNzM3NzgsIAorICAgIDczNzgxLCA3Mzc4NiwgNzM3OTEsIDczNzk4LCA3MzgwMywgNzM4MTIsIDczODE3LCA3MzgyMywgNzM4MzIsIDczODQxLCAKKyAgICA3Mzg0NiwgNzM4NTAsIDczODU4LCA3Mzg2NywgMTE2NjcsIDczODc2LCA3Mzg4NCwgNzM4ODksIDczODk1LCAxMTY3OCwgCisgICAgNzM5MDAsIDczOTAzLCA3MzkwOCwgNzM5MTgsIDczOTI3LCA3MzkzMiwgNzM5MzgsIDczOTQzLCA3Mzk1MSwgNzM5NTgsIAorICAgIDczOTY5LCA3Mzk3OSwgNzM5ODQsIDY0ODM0LCA3Mzk4OSwgNzM5OTUsIDc0MDAwLCA3NDAwNywgNzQwMTYsIDc0MDI0LCAKKyAgICA3NDAzMCwgNzQwMzYsIDc0MDQzLCA3NDA0OSwgNzQwNTMsIDE2OTQ3LCAzMDU1LCA3NDA1OCwgNzQwNjIsIDc0MDY2LCAKKyAgICA3NDA3MiwgNzQwODEsIDc0MDg3LCA3NDA5NCwgNzQwOTgsIDc0MTE5LCA3NDE0MSwgNzQxNTcsIDc0MTc0LCA3NDE5MywgCisgICAgNzQyMDIsIDc0MjEyLCA3NDIxOSwgNzQyMjYsIDI3MjExLCA3NDIzMiwgNzQyMzYsIDc0MjQ0LCA3NDI1NiwgNzQyNjIsIAorICAgIDc0MjcwLCA3NDI3NCwgNzQyODIsIDc0Mjg5LCA3NDI5MywgNzQyOTksIDc0MzA1LCA3NDMxMCwgMzU2MywgNDE4ODcsIAorICAgIDc0MzE2LCA3NDMyMCwgNzQzMjQsIDc0MzI4LCA3NDMzMywgNzQzMzgsIDc0MzQzLCA3NDM0OSwgNzQzNTUsIDc0MzYxLCAKKyAgICA3NDM2OCwgNzQzNzQsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk4LCA3NDQwNCwgNzQ0MDksIDc0NDEzLCA3NDQxOCwgCisgICAgNzQ0MjIsIDc0NDI3LCA0MTkwMiwgNzQ0MzEsIDc0NDM2LCA3NDQ0NCwgNzQ0NDgsIDc0NDUzLCA3NDQ2MCwgNzQ0NjksIAorICAgIDc0NDc1LCA3NDQ3OSwgNzQ0ODYsIDc0NDkwLCA3NDQ5MywgNzQ1MDAsIDc0NTA5LCA3NDUxNCwgNzQ1MTgsIDc0NTI2LCAKKyAgICA3NDUzNSwgNzQ1MzksIDc0NTQ3LCA3NDU1MywgNzQ1NTgsIDc0NTYzLCA3NDU2OSwgNzQ1NzUsIDc0NTgwLCA3NDU4NCwgCisgICAgNzQ1OTAsIDc0NTk1LCA3NDU5OSwgNzQ2MDMsIDc0NjA2LCA3NDYxMSwgNzQ2MTksIDc0NjI5LCA3NDYzNCwgMzkzODcsIAorICAgIDc0NjQyLCA3NDY1NCwgNzQ2NTgsIDc0NjY0LCA3NDY3NiwgNzQ2ODcsIDc0Njk0LCA3NDcwMCwgNzQ3MDcsIDc0NzE5LCAKKyAgICA3NDcyNiwgNzQ3MzIsIDIxMDc1LCA3NDczNiwgNzQ3NDIsIDc0NzQ5LCA3NDc1NSwgNzQ3NjEsIDc0NzY2LCA3NDc3MSwgCisgICAgNzQ3NzYsIDc0Nzg1LCA3MDMzLCA3NDc5MCwgMTY0MTMsIDc0Nzk2LCA3NDgwMCwgNzQ4MDQsIDc0ODA4LCA3NDgxNiwgCisgICAgNzQ4MjUsIDc0ODI5LCA3NDgzNiwgNzQ4NDUsIDc0ODU4LCA3NDg2NCwgNzQ0MjMsIDMwMDY3LCA3NDg2OSwgNzQ4NzEsIAorICAgIDc0ODc2LCA3NDg4MSwgNzQ4ODYsIDc0ODkxLCA3NDg5NiwgNzQ5MDEsIDc0OTA2LCA3NDkxMSwgNzQ5MTYsIDc0OTIxLCAKKyAgICA3NDkyNiwgNzQ5MzEsIDc0OTM2LCA3NDk0MSwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIDc0OTY3LCA3NDk3MiwgCisgICAgNzQ5NzcsIDc0OTgyLCA3NDk4NywgNzQ5OTMsIDc0OTk5LCA3NTAwNSwgNzUwMTAsIDc1MDE1LCA3NTAyNywgNzUwMzIsIAorICAgIDE4NzAsIDQ5LCA3NTAzNywgNzUwNDIsIDMyNzIxLCA3NTA0NiwgMzI3MjYsIDMyNzMxLCAzMjczNywgMzI3NDIsIDc1MDUwLCAKKyAgICAzMjc0NywgMjIwNzAsIDc1MDcyLCA3NTA3NiwgNzUwODAsIDc1MDg1LCA3NTA4OSwgMzI3NTEsIDc1MDkzLCA3NTEwMSwgCisgICAgMzI3NTYsIDc1MTA4LCA3NTExMSwgNzUxMTYsIDc1MTIwLCA5NTM2LCA3NTEyOSwgMzI3NjEsIDIxOTMyLCA3NTEzMiwgCisgICAgNzUxMzYsIDE0MjgsIDc1MTQxLCAzMjc3MiwgNzUxNDQsIDc1MTQ5LCAyNTcyMCwgMjU3MzAsIDM1MjMzLCA3NTE1NCwgCisgICAgNzUxNTksIDc1MTY0LCA3NTE2OSwgNzUxNzUsIDc1MTgwLCA3NTE4OSwgNzUxOTQsIDc1MjAxLCA3NTIwNywgNzUyMTIsIAorICAgIDc1MjE3LCA3NTIyMiwgNzUyMzIsIDc1MjQxLCA3NTI0NiwgNzUyNTQsIDc1MjU4LCA3NTI2NiwgMzI1ODYsIDM3Mjg4LCAKKyAgICA3NTI3MywgNzUyNzksIDc1Mjg0LCA3NTI4OSwgMTIwMDksIDc1Mjk0LCA3NTMwMCwgNzUzMDUsIDc1MzEyLCA3NTMxOCwgCisgICAgNzUzMjMsIDc1MzMxLCA3NTM0MSwgNzUzNTEsIDc1MzU3LCA3NTM2MiwgNzUzNjgsIDE3NTIzLCA3NTM3NSwgMzYwNDgsIAorICAgIDc1Mzg4LCA3NTM5MywgNzUzOTksIDMwOTY4LCA3NTQxMiwgNzU0MTgsIDc1NDIyLCA3NTQzMSwgNzU0MzgsIDc1NDQ0LCAKKyAgICA3NTQ1MiwgNzU0NjEsIDc1NDY4LCA3NTQ3NCwgNzU0NzcsIDc1NDgxLCAyNTg2MSwgNzU0ODUsIDc1NDkyLCA3NTQ5OCwgCisgICAgNzU1MDYsIDc1NTExLCAyMzk3NywgNzU1MTcsIDc1NTIwLCA3NTUyOCwgNzU1MzYsIDc1NTUwLCA3NTU1NywgNzU1NjMsIAorICAgIDc1NTcwLCA3NTU3NiwgMzI3ODYsIDc1NTgwLCA3NTU4NywgNzU1OTUsIDc1NjAzLCA3NTYwOSwgMzI3OTEsIDc1NjE3LCAKKyAgICA3NTYyMywgNzU2MjgsIDc1NjM4LCA3NTY0NCwgNzU2NTMsIDMwODA1LCAzNDY5MSwgNzU2NjEsIDc1NjY2LCA3NTY3MSwgCisgICAgNzU2NzUsIDc1NjgwLCA3NTY4NCwgNzU2OTIsIDE0OTA3LCAzOTQwMCwgNzU2OTcsIDc1NzAyLCAzMjc5NiwgNjIyMzIsIAorICAgIDc1NzA2LCA3NTcxMSwgNzU3MTUsIDc1NzI0LCA3NTczMiwgNzU3MzgsIDc1NzQzLCA3NTc0OSwgNzU3NTYsIDc1NzYyLCAKKyAgICA3NTc2NywgNzU3NzIsIDc1NzgxLCA3NTc5MywgNzU4MDgsIDMzMDU4LCA3NTgxNCwgMTY1MzIsIDMyODAwLCA3NTgxOCwgCisgICAgNzU4MjUsIDI0MDg3LCA3NTgzMSwgNzU4MzgsIDc1ODQ3LCA3NTg1NCwgNzU4NjMsIDc1ODY5LCA3NTg3NCwgNzU4ODIsIAorICAgIDc1ODg4LCAzMjgxMCwgNzU4OTMsIDc1OTAyLCA3NDY4MiwgNzU5MTEsIDc1OTE4LCA3NTkyNCwgNzU5MzAsIDc1OTQwLCAKKyAgICA3NTk0OCwgNzU5NTUsIDc1OTU5LCAzMjgxNSwgNzU5NjIsIDMyODIxLCAzMjgyNywgNzU5NjcsIDc1OTc1LCA3NTk4MywgCisgICAgNzU5OTMsIDc2MDAyLCA3NjAxMCwgNzYwMTcsIDc2MDI3LCAzMjgzMiwgNzYwMzEsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAorICAgIDc2MDQ2LCA3NjA1MCwgNzYwNTYsIDc2MDYxLCA3NjA2NSwgNzYwNzYsIDc2MDgxLCA3NjA4NiwgMzA2MCwgNzYwOTAsIAorICAgIDc2MDk3LCA3NjEwMSwgNzYxMTAsIDc2MTE4LCA3NjEyNSwgNzYxMzAsIDc2MTM1LCA2MjI3OCwgNzYxMzksIDc2MTQyLCAKKyAgICA3NjE0OCwgNzYxNTYsIDc2MTYyLCA3NjE2NiwgNzYxNzEsIDc2MTc4LCA3NjE4MywgNzYxODksIDM0NzIyLCA3NjE5NCwgCisgICAgNzYxOTcsIDc2MjAyLCA3NjIwNiwgNzYyMTEsIDc2MjE2LCA3NjIyMCwgNzYyMjgsIDc2MjMyLCAyNTczOSwgMjU3NDgsIAorICAgIDc2MjM4LCA3NjI0NCwgNzYyNTAsIDc2MjU1LCA3NjI1OSwgNzYyNjIsIDc2MjcyLCA3NjI4MSwgNzYyODYsIDc2MjkyLCAKKyAgICA3NjI5OSwgNzYzMDUsIDc2MzA5LCA3NjMxNywgNzYzMjIsIDM0NzI4LCA3NjMyNiwgNzYzMzQsIDc2MzQwLCA3NjM0NywgCisgICAgNzYzNTIsIDc2MzU2LCA3NjM2MSwgNTg0MDMsIDM0NzM0LCA3NjM2NywgNzYzNzIsIDc2Mzc2LCA3NjM4MSwgNzYzODYsIAorICAgIDc2MzkxLCA3NjM5NSwgNzY0MDAsIDc2NDA1LCA3NjQxMSwgNzY0MTYsIDc2NDIxLCA3NjQyNywgNzY0MzMsIDc2NDM4LCAKKyAgICA3NjQ0MiwgNzY0NDcsIDc2NDUyLCA3NjQ1NywgNzY0NjEsIDI0MDg2LCA3NjQ2NiwgNzY0NzEsIDc2NDc3LCA3NjQ4MywgCisgICAgNzY0ODksIDc2NDk0LCA3NjQ5OCwgNzY1MDMsIDc2NTA4LCA3NjUxMywgNzY1MTcsIDc2NTIyLCA3NjUyNywgNzY1MzIsIAorICAgIDc2NTM3LCA3NjU0MSwgMzI4NDAsIDc2NTQ5LCA3NjU1MywgNzY1NjEsIDc2NTY5LCA3NjU4MCwgNzY1ODUsIDc2NTg5LCAKKyAgICAyMjM4NCwgNzY1OTQsIDc2NjAwLCA3NjYxMCwgNzY2MTcsIDc2NjIyLCA3NjYzMSwgNzY2MzYsIDc2NjQwLCA3NjY0NSwgCisgICAgNzY2NTMsIDc2NjYxLCA3NjY2OCwgNjUwNjgsIDc2Njc0LCA3NjY4MiwgNzY2ODksIDc2NzAwLCA3NjcwNiwgNzY3MTAsIAorICAgIDc2NzE2LCAzMjg1MCwgNzY3MTksIDc2NzI2LCA3NjczNCwgNzY3MzksIDM5NTkxLCA3Njc0MywgNzY3NDgsIDc2NzU1LCAKKyAgICA3Njc2MCwgODk4NSwgNzY3NjQsIDc2NzcyLCA3Njc3OSwgNzY3ODYsIDc2NzkyLCA3NjgwNiwgNjMzNDAsIDc2ODE0LCAKKyAgICA3NjgyMCwgNzY4MjQsIDc2ODI3LCA3NjgzNSwgNzY4NDIsIDc2ODQ3LCA3Njg2MCwgNzY4NjcsIDc2ODcxLCA3Njg3OCwgCisgICAgNzY4ODMsIDYwODIzLCA3Njg4OCwgNzY4OTEsIDc2ODk4LCA3NjkwNCwgNzY5MDgsIDc2OTE2LCA3NjkyNSwgNzY5MzUsIAorICAgIDc2OTQ1LCA3Njk1NCwgNzY5NjIsIDc2OTczLCA3Njk3OCwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgMzUzNjQsIDc2OTk5LCAKKyAgICAyMTM0NCwgMzUzNzMsIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDE5LCA3NzAyNCwgNzcwMjksIDc3MDM0LCA3NzAzOCwgCisgICAgNzcwNDMsIDc3MDQ4LCA3NzA1MywgNzcwNTgsIDc3MDYzLCA3NzA2OCwgNzcwNzIsIDc3MDc3LCA3NzA4MiwgNzcwODYsIAorICAgIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAzLCA3NzEwOCwgNzcxMTIsIDc3MTE3LCA3NzEyMSwgNzcxMjUsIDc3MTMwLCAKKyAgICA3NzEzNSwgNzcxNDAsIDc3MTQ1LCA3NzE0OSwgNzcxNTQsIDc3MTU5LCA3NzE2MywgNzcxNjgsIDc3MTczLCA3NzE3OCwgCisgICAgNzcxODMsIDc3MTg4LCA3NzE5MywgNzcxOTgsIDc3MjAzLCA3NzIwOCwgNzcyMTMsIDc3MjE4LCA3NzIyMywgNzcyMjgsIAorICAgIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1MywgNzcyNTgsIDc3MjYzLCA3NzI2NywgNzcyNzIsIDc3Mjc3LCAKKyAgICA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgNzczMTcsIDc3MzIyLCA3NzMyNiwgCisgICAgNzczMzEsIDc3MzM1LCA3NzM0MCwgNzczNDUsIDc3MzUwLCA3NzM1NSwgNzczNjAsIDc3MzY1LCA3NzM3MCwgNzczNzUsIAorICAgIDc3MzgwLCA3NzM4NCwgNzczODgsIDc3MzkzLCA3NzM5OCwgNzc0MDIsIDc3NDA3LCA3NzQxMiwgNzc0MTYsIDc3NDIxLCAKKyAgICA3NzQyNiwgNzc0MzEsIDc3NDM2LCA3NzQ0MCwgNzc0NDUsIDc3NDUwLCA3NzQ1NCwgNzc0NTksIDc3NDYzLCA3NzQ2NywgCisgICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODQsIDc3NDg4LCA3NzQ5MiwgNzc0OTYsIDc3NTAwLCA3NzUwNCwgNzc1MDgsIAorICAgIDc3NTEyLCA3NzUxNiwgNzc1MjEsIDc3NTI2LCA3NzUzMSwgNzc1MzYsIDc3NTQxLCA3NzU0NiwgNzc1NTEsIDc3NTU2LCAKKyAgICA3NzU2MSwgNzc1NjYsIDc3NTcwLCA3NzU3NCwgNzc1NzgsIDc3NTgyLCA3NzU4NiwgNzc1OTAsIDc3NTk1LCA3NzU5OSwgCisgICAgNzc2MDQsIDc3NjA4LCA3NzYxMywgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzEsIDc3NjM1LCA3NzYzOSwgNzc2NDMsIAorICAgIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgNzc2NzksIDc3NjgzLCAKKyAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMSwgNzc3MDUsIDc3NzA5LCA3NzcxMywgNzc3MTcsIDc3NzIxLCA3NzcyNiwgCisgICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTUsIDc3NzU5LCA3Nzc2NCwgNzc3NjgsIAorICAgIDc3NzcyLCA3Nzc3NiwgNzc3ODAsIDc3Nzg0LCA3Nzc4OCwgNzc3OTIsIDc3Nzk2LCA3NzgwMCwgNzc4MDQsIDc3ODA4LCAKKyAgICA3NzgxMywgNzc4MTcsIDc3ODIxLCA3NzgyNSwgNzc4MjksIDc3ODMzLCA3NzgzNywgNzc4NDEsIDc3ODQ1LCA3Nzg0OSwgCisgICAgNzc4NTMsIDc3ODU3LCA3Nzg2MiwgNzc4NjYsIDc3ODcwLCA3Nzg3NSwgNzc4ODAsIDc3ODg0LCA3Nzg4OCwgNzc4OTIsIAorICAgIDc3ODk2LCA3NzkwMCwgNzc5MDQsIDc3OTA4LCA3NzkxMiwgNzc5MTcsIDc3OTIxLCA3NzkyNiwgNzc5MzAsIDc3OTM1LCAKKyAgICA3NzkzOSwgNzc5NDQsIDc3OTQ4LCA3Nzk1NCwgNzc5NTksIDc3OTYzLCA3Nzk2OCwgNzc5NzIsIDc3OTc3LCA3Nzk4MSwgCisgICAgNzc5ODYsIDc3OTkwLCA3Nzk5NSwgMTUyMSwgNzc5OTksIDI4MjQsIDE3NTksIDE3NjQsIDc4MDAzLCA3ODAwNywgMjgyOCwgCisgICAgNzgwMTEsIDEzOTcsIDc4MDE2LCAxMzQyLCA3ODAyMCwgMjg0MCwgNzgwMjQsIDc4MDMxLCA3ODAzOCwgNzgwNTIsIDI4NDQsIAorICAgIDcxMzEsIDc4MDYxLCA3ODA2OSwgNzgwNzYsIDc4MDg3LCA3ODA5NiwgNzgxMDMsIDc4MTE1LCA3ODEyOCwgNzgxNDEsIAorICAgIDc4MTUyLCA3ODE1NywgNzgxNjQsIDc4MTc2LCA3ODE4MCwgMjg0OCwgMTE3NDAsIDc4MTkwLCA3ODE5NSwgNzgyMDQsIAorICAgIDc4MjE0LCAyODUyLCA3ODIxOSwgNzgyMjMsIDc4MjI4LCA3ODIzNSwgNzgyNDEsIDc4MjQ5LCA3ODI2MSwgMTM0NywgCisgICAgMTMwMzUsIDc4MjcxLCA3ODI3NSwgNzgyODEsIDc4Mjk1LCA3ODMwNywgNzgzMTksIDc4MzI5LCA3ODMzOCwgNzgzNDcsIAorICAgIDc4MzU2LCA3ODM2NCwgNzgzNzUsIDc4MzgzLCA0MDUxLCA3ODM5MywgNzg0MDQsIDc4NDEzLCA3ODQxOSwgNzg0MzQsIAorICAgIDc4NDQxLCA3ODQ0NywgMzU0ODksIDc4NDUyLCAyODc2LCAxMzAzOSwgNzg0NTYsIDc4NDYzLCA4OTMwLCA3ODQ3MiwgMjg4MSwgCisgICAgMzIzMzYsIDc4NDc4LCA2MDU3MiwgNzg0ODUsIDc4NDkxLCA3ODUwMiwgNzg1MDgsIDc4NTE1LCA3ODUyMSwgNzg1MjksIAorICAgIDc4NTM2LCA3ODU0MiwgNzg1NTIsIDc4NTYxLCA3ODU3MiwgNzg1NzksIDc4NTg1LCA3ODU5NSwgNzg2MDMsIDc4NjA5LCAKKyAgICA3ODYyNCwgNzg2MzAsIDc4NjM1LCA3ODY0MiwgNzg2NDUsIDc4NjUxLCA3ODY1OCwgNzg2NjQsIDc4NjcyLCA3ODY4MSwgCisgICAgNzg2ODksIDc4Njk1LCA3ODcwNCwgNDE0MjcsIDc4NzE4LCA3ODcyMywgNzg3MjksIDE0NzQ0LCA3ODczNCwgNzg3NDcsIAorICAgIDc4NzU2LCA3ODc2NCwgNzg3NzEsIDc4Nzc1LCA3ODc3OSwgNzg3ODIsIDc4Nzg5LCA3ODc5NiwgNzg4MDQsIDc4ODEyLCAKKyAgICA3ODgyMSwgNzg4MjksIDE0NjcxLCA3ODgzNywgNzg4NDIsIDc4ODQ2LCA3ODg1OCwgNzg4NjUsIDc4ODc0LCA3NDgsIAorICAgIDc4ODg0LCA3ODg5MywgNzg5MDQsIDI4OTcsIDc4OTA4LCA3ODkxMiwgNzg5MTgsIDc4OTMxLCA3ODk0MywgNzg5NTMsIAorICAgIDc4OTYyLCA3ODk3NCwgMjYzNTIsIDc4OTg1LCA3ODk5MywgNzkwMDIsIDc5MDEzLCA3OTAyNCwgNzkwMzQsIDc5MDQ0LCAKKyAgICA3OTA1MywgNzkwNjEsIDExMzA1LCA3OTA2OCwgNzkwNzIsIDc5MDc1LCA3OTA4MCwgNzkwODUsIDc5MDg5LCA3OTA5NSwgCisgICAgMTM1MiwgMTE4MTEsIDc5MTAyLCA3OTExMywgNzkxMjIsIDc5MTMwLCA3OTEzOSwgNzkxNDcsIDc5MTYzLCA3OTE3NCwgCisgICAgNzkxODMsIDc5MTkxLCA3OTIwMywgNzkyMTQsIDc5MjMwLCA3OTI0MCwgNzkyNjEsIDc5Mjc0LCA3OTI4MiwgNzkyODksIAorICAgIDE0ODU1LCA3OTMwMiwgNzkzMDcsIDc5MzEzLCA1OTA4LCA3OTMxOSwgNzkzMjIsIDc5MzI5LCA3OTMzOSwgODE3NiwgCisgICAgNzkzNDYsIDc5MzUxLCA3OTM1NiwgNzkzNjEsIDc5MzY5LCA3OTM3OCwgNzkzODYsIDk3NDksIDk3NTgsIDc5MzkxLCAKKyAgICA3OTQwMiwgNzk0MDcsIDc5NDEzLCAyOTEzLCAyOTE4LCA3OTQxOSwgMTA4NzIsIDc5NDI1LCA3OTQzMiwgNzk0MzksIAorICAgIDc5NDUyLCAyMjUxLCA2OCwgNzk0NTcsIDc5NDYyLCA3OTQ3MiwgNzk0NzgsIDc5NDg3LCA3OTQ5NSwgNzk1MDUsIDc5NTA5LCAKKyAgICA3OTUxNCwgNzk1MTgsIDc5NTMwLCAyOTQxLCA3OTUzOCwgNzk1NDYsIDc5NTUxLCA3OTU2MiwgNzk1NzMsIDc5NTgyLCAKKyAgICA3OTU4NywgNzk1OTMsIDc5NTk4LCA3OTYwOCwgNzk2MTgsIDc5NjIzLCA3OTYyOSwgNzk2MzQsIDc5NjQzLCAyMTM5NywgCisgICAgNzk2NDcsIDQxMjgsIDIwLCA3OTY1MiwgNzk2NjEsIDc5NjY4LCA3OTY3NSwgNzk2ODEsIDc5Njg3LCA4NjQsIDc5NjkyLCAKKyAgICA3OTY5NywgNjA5MDAsIDc5NzAyLCA3OTcwNywgNzk3MTMsIDc5NzE5LCA3OTcyNywgNzk3MzIsIDc5NzM5LCA3OTc0NSwgCisgICAgNzk3NTAsIDM4MDAxLCA0MTMyMSwgNzk3NTYsIDI5NDUsIDMyLCA3OTc2NiwgNzk3NzksIDc5Nzg0LCA3OTc5MiwgNzk3OTcsIAorICAgIDc5ODAzLCAyOTY3LCAyODI4OSwgNzk4MDgsIDc5ODE2LCA3OTgyMywgNzk4MjgsIDU4NjQ1LCA2MTkwMywgNzk4MzcsIAorICAgIDc5ODQxLCAxNzA0LCAxODEzLCA3OTg0NiwgNzk4NTEsIDc5ODU4LCAxODE3LCAyNDcsIDc5ODY1LCA3OTg3MSwgMjk4OSwgCisgICAgNzk4NzYsIDc5ODgxLCA3OTg4OCwgMTgyMSwgNzk4OTMsIDc5ODk5LCA3OTkwNCwgNzk5MTYsIDYxMTksIDc5OTI2LCAxODI4LCAKKyAgICA3OTkzMiwgNzk5MzcsIDc5OTQ0LCA3OTk1MSwgNzk5NjYsIDc5OTczLCA3OTk4NCwgNzk5OTIsIDI2MTgsIDc5OTk2LCAKKyAgICA4MDAwOCwgODAwMTMsIDgwMDE3LCA4MDAyMywgMjgxMTQsIDIyNTYsIDgwMDI3LCA4MDAzOCwgODAwNDIsIDgwMDQ2LCAKKyAgICA4MDA1MiwgODAwNTYsIDgwMDY1LCA4MDA2OSwgODAwODAsIDgwMDg0LCAyMzAyLCAzMjE2NSwgODAwODgsIDgwMDk4LCAKKyAgICAzMDgwLCA5MzY0LCA4MDEwNiwgODAxMTEsIDgwMTE1LCA4MDEyNCwgODAxMzEsIDgwMTM3LCAzMDUwLCAxNzEzOSwgODAxNDEsIAorICAgIDgwMTU0LCA4MDE3MiwgODAxNzcsIDgwMTg1LCA4MDE5MywgODAyMDMsIDk5NzgsIDEzMTQ3LCA4MDIxNSwgODAyMjgsIAorICAgIDgwMjM1LCA4MDI0MiwgODAyNTgsIDgwMjY1LCA4MDI3MSwgMTA5NSwgODAyNzgsIDgwMjg1LCA4MDI5NSwgODAzMDQsIAorICAgIDgwMzE2LCA0MjI5MSwgODAzMjQsIDMwNjQsIDEyMDIzLCA4MDMyNywgODAzMzUsIDgwMzM5LCA3ODIzMSwgMzA2OCwgCisgICAgODAzNDMsIDIxMTc4LCAxMjAzOSwgMzc1NiwgODAzNDcsIDMwNzQsIDgwMzUxLCA4MDM2MSwgODAzNjcsIDgwMzczLCAKKyAgICA4MDM3OSwgODAzODUsIDgwMzkxLCA4MDM5NywgODA0MDMsIDgwNDA5LCA4MDQxNSwgODA0MjEsIDgwNDI3LCA4MDQzMywgCisgICAgODA0MzksIDgwNDQ1LCA4MDQ1MSwgODA0NTcsIDgwNDYzLCA4MDQ2OSwgODA0NzUsIDgwNDgxLCA4MDQ4NywgODA0OTMsIAorICAgIDgwNDk5LCA4MDUwNSwgODA1MTEsIDgwNTE4LCA4MDUyNSwgODA1MzEsIDgwNTM3LCA4MDU0MywgODA1NDksIDgwNTU1LCAKKyAgICA4MDU2MSwgMTM1NywgMTYwNDksIDEyMDYxLCA4MDU2NywgODA1NzIsIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCAKKyAgICA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgCisgICAgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgODA2OTIsIAorICAgIDgwNjk4LCA4MDcwMywgODA3MDgsIDgwNzE0LCA4MDcxOSwgODA3MjUsIDgwNzMwLCA4MDczNSwgODA3NDEsIDgwNzQ2LCAKKyAgICA4MDc1MSwgODA3NTYsIDgwNzYxLCA4MDc2NiwgODA3NzEsIDgwNzc2LCA4MDc4MSwgODAzNjIsIDgwMzY4LCA4MDM3NCwgCisgICAgODAzODAsIDgwMzg2LCA4MDM5MiwgODAzOTgsIDgwNDA0LCA4MDQxMCwgODA0MTYsIDgwNDIyLCA4MDQyOCwgODA0MzQsIAorICAgIDgwNDQwLCA4MDQ0NiwgODA3ODcsIDgwNDUyLCA4MDQ1OCwgODA0NjQsIDgwNzkzLCA4MDQ3MCwgODA0NzYsIDgwNDgyLCAKKyAgICA4MDQ4OCwgODA0OTQsIDgwNTAwLCA4MDUwNiwgODA1MjYsIDgwNzk5LCA4MDgwNSwgODA1MzIsIDgwODExLCA4MDUzOCwgCisgICAgODA1NDQsIDgwNTUwLCA4MDU1NiwgODA1NjIsIDMwOTEsIDMwOTYsIDgwODE3LCA4MDgyMiwgODA4MjUsIDgwODMxLCAKKyAgICA4MDgzNywgODA4NDQsIDgwODQ5LCA4MDg1NCwgMjMwNywgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KICNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA3Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjExCisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjA5CiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjE5LCAyMDYsIDI0NCwgMjU0LCA3NywgMjI0LCAxNDMsIDc3LCA1MCwgNTIsIDI0NywgODYsIDUyLCAyMjYsIDU3LCAKLSAgICA1MiwgMjU0LCAzNSwgMjUzLCAyMjYsIDQyLCAyMjYsIDEzMSwgNDYsIDIyNiwgMTMxLCAyNTMsIDEzMiwgOTQsIDUyLCAyNDksIAotICAgIDE1NywgMjQwLCAxNTksIDI0MywgMjAwLCAyMTksIDY5LCAyMTksIDIzMSwgMjEsIDIxMiwgNzksIDIxLCAxMTYsIDIxLCAKLSAgICAxMDksIDIxLCAxNjYsIDIxLCAxNjMsIDIxLCAxODAsIDIxLCAxODksIDIxLCAxOTgsIDIxLCAxOTUsIDIxLCAyMDAsIDI0OSwgCi0gICAgMTY0LCAyMjEsIDcwLCAyMzMsIDM5LCA1MiwgMjQ1LCA2MSwgNTIsIDI0MiwgMTA3LCA1MiwgMjI0LCAxNTgsIDc3LCAyNDksIAotICAgIDE1NiwgMjUzLCAxMjIsIDcsIDYsIDEsIDYxLCA3LCA2LCAxLCAyNTMsIDc0LCA3LCA2LCAxLCAyNTAsIDI1MiwgNywgNiwgMSwgCi0gICAgMjQ5LCAzLCA3LCA2LCAxLCA3NCwgNywgNiwgMSwgMjQ0LCAyMzAsIDcsIDYsIDEsIDI0MywgMTc3LCA3LCA2LCAxLCAyNDIsIAotICAgIDQxLCA3LCA2LCAxLCA3MiwgNywgNiwgMSwgMjM1LCAxNDIsIDcsIDYsIDEsIDIzNSwgMjcsIDcsIDYsIDEsIDE1MCwgNywgNiwgCi0gICAgMSwgMTgzLCA3LCA2LCAxLCAyMDQsIDcsIDYsIDEsIDc1LCA3LCA2LCAxLCAyMjYsIDIyOSwgNywgNiwgMSwgMjI0LCAyNDAsIAotICAgIDcsIDYsIDEsIDE0OSwgNywgNiwgMSwgMTk3LCA3LCA2LCAxLCAyMTgsIDk5LCA3LCA2LCAxLCA2OSwgNywgNiwgMSwgMjE1LCAKLSAgICA3OSwgNywgNiwgMSwgMjE0LCA4MiwgNywgNiwgMSwgMjEzLCAxNjYsIDcsIDYsIDEsIDIxMywgMTA1LCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgNDIsIDQxLCAxMjUsIDIyMywgMjAzLCAyMTksIDIzMSwgNDYsIDQxLCAxMjUsIDI0OSwgMjI0LCAyNTQsIDE3NCwgCi0gICAgMTE1LCAyMzIsIDI0MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCA3LCAzLCAxLCA2MSwgNywgMywgMSwgMjUzLCA3NCwgNywgMywgCi0gICAgMSwgMjUwLCAyNTIsIDcsIDMsIDEsIDI0OSwgMywgNywgMywgMSwgNzQsIDcsIDMsIDEsIDI0NCwgMjMwLCA3LCAzLCAxLCAKLSAgICAyNDMsIDE3NywgNywgMywgMSwgMjQyLCA0MSwgNywgMywgMSwgNzIsIDcsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMzUsIAotICAgIDI3LCA3LCAzLCAxLCAxNTAsIDcsIDMsIDEsIDE4MywgNywgMywgMSwgMjA0LCA3LCAzLCAxLCA3NSwgNywgMywgMSwgMjI2LCAKLSAgICAyMjksIDcsIDMsIDEsIDIyNCwgMjQwLCA3LCAzLCAxLCAxNDksIDcsIDMsIDEsIDE5NywgNywgMywgMSwgMjE4LCA5OSwgNywgCi0gICAgMywgMSwgNjksIDcsIDMsIDEsIDIxNSwgNzksIDcsIDMsIDEsIDIxNCwgODIsIDcsIDMsIDEsIDIxMywgMTY2LCA3LCAzLCAxLCAKLSAgICAyMTMsIDEwNSwgNywgMywgMSwgMjEyLCAxNTIsIDQyLCAyNDksIDQwLCAxMjUsIDcxLCAyMzIsIDI0MiwgNDYsIDI0OSwgNDAsIAotICAgIDEyNSwgMjE3LCA0MiwgMjI4LCAxODQsIDIxOSwgMjA2LCAyMzUsIDE5MSwgMjQ0LCAyNTQsIDc3LCAyNTAsIDExMCwgNTIsIAotICAgIDIyNSwgMTA4LCA1MiwgMjQ5LCAzOSwgNTIsIDIxMywgMzEsIDUyLCAyNTEsIDYzLCAxMzQsIDIyMiwgOTIsIDUyLCAyNDcsIAotICAgIDIwOSwgMjQ5LCAxMDIsIDUyLCAyNDQsIDEwNSwgMjI3LCAyMSwgMjM1LCAyMzUsIDIzMywgNjYsIDUxLCAyNTQsIDE5LCAKLSAgICAyMjQsIDE0MywgNzcsIDIyOCwgMTYzLCA1MiwgMjE5LCAyMzYsIDI0MCwgMTYwLCAyMjMsIDI1MiwgNTIsIDIzMiwgMzcsIAotICAgIDI0OCwgMjIsIDUyLCAyMjUsIDE1NSwgNTIsIDIxOCwgMjIzLCAxMDksIDIxOCwgMjIzLCAxNjYsIDI1NCwgMTY0LCAyNTQsIAotICAgIDE3NCwgMjMxLCA0MSwgNTIsIDIyNSwgMjAwLCA1MiwgMjMxLCAzNywgMjQ3LCA3NCwgMjUwLCAxMTcsIDIxOCwgMjIzLCAKLSAgICAxMTYsIDIzMSwgMjExLCAyMjcsIDIxLCAyMzUsIDIzNSwgMjIzLCAxNDQsIDUxLCAyNTQsIDE5LCAyMjQsIDE0MywgNzcsIAotICAgIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDIxNCwgCi0gICAgOTcsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAyMzUsIDE5MSwgMjI0LCAxNTgsIDc3LCA3LCA2LCAxLCAxMTgsIDIsIAotICAgIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDE3OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMTE4LCAKLSAgICAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA0OSwgNywgCi0gICAgNiwgMSwgMjU0LCAxNDgsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMTkxLCAyLCAyNDIsIAotICAgIDExMywgNywgNiwgMSwgMTkxLCAyLCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjQ3LCAyMDksIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDE3OSwgNywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIAotICAgIDI0NSwgMjUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQyLCAxMTMsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDIsIDcsIAotICAgIDYsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDIzMCwgMTU0LCA1MiwgNywgNiwgMSwgMTU3LCAyLCA5MCwgNywgNiwgMSwgMTExLCAKLSAgICAyLCAyNDIsIDExMywgNywgNiwgMSwgMTExLCAyLCAxNzksIDcsIDYsIDEsIDExMSwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAxNzksIDcsIDYsIDEsIDIxNywgMTA0LCA3LCAzLCAxLCAKLSAgICAyMjAsIDI1NSwgMTk3LCA3LCAzLCAxLCAxMTgsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDE3OSwgNywgMywgMSwgCi0gICAgMTE4LCAyLCAyNDksIDIyMywgNywgMywgMSwgMTE4LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI0NywgMjA5LCA3LCAKLSAgICAzLCAxLCAxMTgsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMjU0LCAxNDgsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIAotICAgIDExNywgNywgMywgMSwgMTkxLCAyLCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCAxNzksIDcsIDMsIDEsIDE5MSwgMiwgCi0gICAgMjQ5LCAyMjMsIDcsIDMsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgNywgCi0gICAgMywgMSwgMjQwLCAxNDYsIDIsIDE3OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0NSwgMjUsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIxNywgNDIsIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjIzLCA3LCAKLSAgICAzLCAxLCAxNTcsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDI0NywgMTIxLCA1MiwgNywgMywgMSwgCi0gICAgMTU3LCAyLCA5MCwgNywgMywgMSwgMTExLCAyLCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCAxNzksIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAxNzksIAotICAgIDcsIDMsIDEsIDIxNywgMTA0LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDExOCwgMiwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMTE4LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDExOCwgMiwgCi0gICAgMjUxLCA3NCwgNywgNiwgMSwgMTE4LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAxMTgsIDIsIDIyNywgOTAsIDcsIDYsIDEsIAotICAgIDI1MCwgMjUzLCAyLCAxNzksIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAxNzksIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNDksIAotICAgIDIyMywgNywgMywgMSwgMjUwLCAyNTMsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgNjIsIDQ5LCA3LCAzLCAKLSAgICAxLCAyNTAsIDI1MywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI1MCwgCi0gICAgMjUzLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCA5MCwgNywgMywgMSwgMjQ5LCA0LCAyLCA5MCwgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyMzIsIDM3LCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDE5MSwgMiwgMjUxLCA3NCwgNywgMywgMSwgCi0gICAgMTkxLCAyLCAyNTEsIDc0LCA3LCA2LCAxLCAxOTEsIDIsIDYyLCA0OSwgNywgMywgMSwgMTkxLCAyLCA2MiwgNDksIDcsIDYsIAotICAgIDEsIDE5MSwgMiwgMjI3LCA5MCwgNywgMywgMSwgMTkxLCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAxOTEsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCAzLCAxLCAxOTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc4LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAKLSAgICAyNTEsIDc0LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgNjIsIDQ5LCA3LCAKLSAgICA2LCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDExNywgNywgNiwgMSwgCi0gICAgMjQyLCA0MiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjQyLCA0MiwgMiwgOTAsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyMzIsIDM3LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjUxLCA3NCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI1MSwgNzQsIDcsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQ3LCA3MywgNzIsIDcsIDYsIDI2LCAyMzYsIDI2LCA3LCAzLCAyNiwgMjM2LCAKLSAgICAyNiwgNywgNiwgMSwgMjM1LCAxNDMsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgMjQ5LCAyMjMsIDcsIDYsIAotICAgIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMzLCAKLSAgICAyNDgsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAxNzksIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAxNzksIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIAotICAgIDI0NywgNzQsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyNDcsIDc0LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCA5MCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMTc5LCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAxNzksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyNTAsIDExNywgNywgCi0gICAgNiwgMSwgMjMwLCA5OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzAsIAotICAgIDk4LCAyMjUsIDg0LCAyNTEsIDcsIDI1MywgMjI2LCA3LCA2LCAxLCAyNDUsIDk2LCA3LCAzLCAxLCAyNDUsIDk2LCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjMyLCAzNywgNywgNiwgMSwgMTU3LCAyLCAyNTEsIDc0LCAKLSAgICA3LCAzLCAxLCAxNTcsIDIsIDI1MSwgNzQsIDcsIDYsIDEsIDE1NywgMiwgNTEsIDE3OSwgNywgMywgMSwgMTU3LCAyLCA1MSwgCi0gICAgMTc5LCA3LCA2LCAyNiwgMjI3LCA5OSwgNywgMywgMjYsIDIyNywgOTksIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAxNzksIDcsIAotICAgIDMsIDEsIDIyNCwgMTEzLCAyLCAxNzksIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjI0LCAKLSAgICAxMTMsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyNTAsIDE2NiwgNywgNiwgMSwgMjIzLCA0LCAyLCAxNzksIDcsIDMsIDEsIDIyMywgNCwgMiwgMTc5LCA3LCA2LCAxLCAyMjMsIAotICAgIDQsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1MCwgCi0gICAgMTE3LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAKLSAgICAyMjMsIDQsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIxOCwgMTAwLCAKLSAgICAyLCAyNTAsIDExNywgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA5MCwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDkwLCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDIxNywgNDIsIDcsIDMsIDEsIDExMSwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTExLCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAKLSAgICAxMTEsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDExMSwgMiwgMjUxLCA3NCwgNywgMywgMSwgMTExLCAyLCAyNTEsIDc0LCA3LCAKLSAgICA2LCAxLCAxMTEsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMTExLCAyLCAyMjMsIDEzMSwgNDksIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgNTEsIDE3OSwgNywgMywgMSwgMTExLCAyLCA1MSwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIDIyNywgOTAsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMjE0LCA4MywgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDI0OSwgCi0gICAgMjIzLCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyNDksIDIyMywgNywgCi0gICAgNiwgMSwgMjEzLCAxMDYsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMTc5LCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgMTc5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgCi0gICAgMTg0LCAxOTcsIDcsIDMsIDEsIDU0LCAyLCA5MCwgNywgNiwgMSwgNTQsIDIsIDEwMSwgNywgNiwgMSwgNTQsIDIsIDIxNiwgCi0gICAgMjI0LCA3LCAzLCAxLCA1NCwgMiwgMjE2LCAyMjQsIDcsIDYsIDEsIDE2MCwgMTg5LCA3LCAzLCAxLCAxNjAsIDE4OSwgNywgCi0gICAgNiwgMSwgMjI3LCA0MCwgNzUsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAxMDEsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAxMDEsIAotICAgIDcsIDYsIDEsIDI1NCwgMTI0LCAyNDksIDMsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMTAxLCA3LCA2LCAxLCAyNDksIDQsIDIsIAotICAgIDIxNiwgMjI0LCA3LCAzLCAxLCAyNDksIDQsIDIsIDIxNiwgMjI0LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDgsIDUsIDcsIDYsIAotICAgIDEsIDIyMywgMjAyLCA3NCwgNywgNiwgMSwgMjIyLCAxMTMsIDcsIDYsIDEsIDIyNywgNDAsIDc0LCA3LCA2LCAxLCAyNDQsIAotICAgIDIzMSwgMiwgMTAxLCA3LCAzLCAxLCAyNDQsIDIzMSwgMiwgMTAxLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMTAxLCA3LCA2LCAKLSAgICAxLCAyNDMsIDgzLCA3LCAzLCAxLCAyNDAsIDE5MywgNywgNiwgMSwgMjM1LCAxODMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICA5MCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMTAxLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAxMDEsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAxMzQsIDcsIDMsIDEsIDIzMywgMTI0LCAyLCA5MCwgNywgNiwgMSwgMjE2LCA1OCwgMTgzLCA3LCA2LCAxLCAKLSAgICAyMzAsIDk4LCAyLCA0MiwgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAxODQsIDQ2LCAyMzMsIDYwLCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzUsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzUsIDcsIDYsIDEsIDIyNywgODUsIDcsIDMsIDEsIDIyNywgODUsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAxMDEsIDcsIDMsIAotICAgIDEsIDIyNiwgMjMwLCAyLCAxMDEsIDcsIDEsIDIxMiwgMjA1LCA3LCA2LCAxLCAxNjAsIDEwOSwgNywgMywgMSwgMTYwLCAKLSAgICAxMDksIDcsIDYsIDEsIDI0NSwgNDAsIDcsIDEsIDIyMywgMjAyLCAyNDUsIDQxLCAyMzIsIDE3NywgNywgMywgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAxMDEsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAKLSAgICAxMDEsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyMjMsIDIwNywgMTAxLCA3LCA2LCAxLCAxMTEsIDIsIDI0MCwgMjM1LCA3LCAKLSAgICAzLCAxLCAxMTEsIDIsIDI0MCwgMjM1LCA3LCA2LCAxLCAyMTUsIDEyOCwgNywgNiwgMSwgMjE1LCA4MCwgMiwgMTAxLCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMTAxLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMTAxLCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCA5MCwgNywgNiwgMSwgMjQ0LCAyMzIsIDcsIDYsIDEsIDI0NCwgMjMzLCAyMjMsIAotICAgIDIwMSwgNywgMywgMSwgMjQ0LCAyMzMsIDIyMywgMjAxLCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjE4LCAyNywgNywgMSwgCi0gICAgMTE3LCAyLCA5MCwgNywgNiwgMSwgMTYwLCAxODAsIDcsIDMsIDEsIDE2MCwgMTgwLCA3LCAxLCAyMzUsIDE5MSwgMjQyLCAKLSAgICAxNTYsIDIxOSwgNzAsIDIsIDkwLCA3LCAxLCAyMTMsIDE2OSwgNywgMSwgMjQ3LCAyNTQsIDI0OSwgMjA0LCA3LCAxLCAyMzMsIAotICAgIDEwMCwgMjQ5LCAyMDQsIDcsIDEsIDI1NCwgNDYsIDI0OSwgMjA0LCA3LCAxLCAyMjMsIDIwNywgMjQ5LCAyMDQsIDcsIDYsIAotICAgIDEsIDI0NSwgMjUxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCAzLCAxLCAyMTIsIDE1MywgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDMsIDEsIDI0NSwgMjUxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjMyLCAyMTcsIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAzLCAxLCAyMzUsIDE0MiwgNywgMywgMSwgMjMyLCAyMTcsIDcsIDYsIDEsIDIyOSwgMTcsIDcsIDYsIDEsIAotICAgIDIzMCwgOTgsIDIsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMjksIDE3LCA3LCA2LCAxLCAxMTgsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCAzLCAxLCAxMTgsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMTU3LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMTU3LCAyLCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMTExLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMTExLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMTExLCAyLCAKLSAgICAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjUwLCAxNjYsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgCi0gICAgMjQyLCAxMTMsIDcsIDMsIDEsIDIxNiwgNTgsIDc0LCA3LCA2LCAxLCAxMTgsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgCi0gICAgNywgMywgMSwgMTE4LCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDc4LCAyNCwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMTE4LCAyLCA2MiwgNzgsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyNTQsIDE0OSwgMiwgMjMyLCAzNywgCi0gICAgNywgMywgMSwgMjU0LCAxNDksIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCA5MCwgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDkwLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTY2LCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDE1NywgMiwgMjI3LCA5MCwgNywgNiwgMSwgMTU3LCAyLCAyMjcsIDkxLCAKLSAgICAyNCwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyMjcsIDkxLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjQ0LCAyMzMsIDIsIAotICAgIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMjQ1LCAyNTAsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMywgMSwgMjEyLCAxNTIsIDcsIDMsIDEsIDI0NSwgMjUwLCAKLSAgICA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMTc5LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMTc5LCA3LCA2LCAxLCAyNDAsIDE5MSwgCi0gICAgNywgNiwgMSwgMjEzLCAxNjksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAKLSAgICAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAyMjMsIDEzMSwgNzgsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAKLSAgICAxMzEsIDc4LCAyNCwgMTc5LCA3LCA2LCAxLCAyNTQsIDE0OSwgMiwgMTc5LCA3LCAzLCAxLCAyNTQsIDE0OSwgMiwgMTc5LCAKLSAgICA3LCA2LCAxLCAxNTcsIDIsIDIxOSwgNDUsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjE5LCA0NSwgMjQsIDE3OSwgNywgCi0gICAgNiwgMSwgMTE4LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIAotICAgIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTgsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDE5MSwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDE1NywgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDExMSwgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDExMSwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDIyMywgNCwgMiwgCi0gICAgMjQ5LCAxNTgsIDU1LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI0OSwgMTU4LCA1NSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIAotICAgIDI0OSwgMTU4LCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0OSwgMTU4LCA1NSwgNywgNiwgMSwgMjEyLCAyMjIsIDcsIAotICAgIDMsIDEsIDIxMiwgMjIyLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDE4NCwgNDYsIDIzMywgNjAsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjQ5LCA0MSwgCi0gICAgNywgNiwgMSwgMjI3LCAyLCA3LCAzLCAxLCAyMjcsIDIsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAxMDEsIDcsIDMsIDEsIAotICAgIDIxMiwgMTUzLCAyLCAxMDEsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDYyLCA0OSwgNywgNiwgCi0gICAgMSwgMTkxLCAyLCAyNTAsIDExNywgNywgMywgMSwgMTkxLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMTU3LCAyLCAyNDcsIAotICAgIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIxNywgNDMsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAKLSAgICAxNTcsIDIsIDYyLCA0OSwgNywgMywgMSwgMTU3LCAyLCA2MiwgNDksIDcsIDYsIDEsIDE1NywgMiwgNjIsIDc4LCAyNCwgCi0gICAgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCA2MiwgNzgsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNDksIDQxLCA3LCAzLCAKLSAgICAxLCAyMzAsIDk4LCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ3LCA3MywgCi0gICAgMjM1LCAxNDIsIDcsIDMsIDEsIDI0OCwgODksIDI0NywgMTcyLCA3LCAzLCAxLCAyMjQsIDE3NiwgMjQ3LCAxNzIsIDcsIDYsIAotICAgIDEsIDExOCwgMiwgOTAsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCA5MCwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDkwLCA3LCA2LCAKLSAgICAxLCAyMzMsIDE3MSwgMiwgMTM0LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMjMsIDQsIAotICAgIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIDYsIDEsIAotICAgIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAzLCAxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgNiwgMSwgNTQsIDIsIDkwLCA3LCA2LCAKLSAgICAxLCAxMTEsIDEzNCwgNywgNiwgMSwgMjE2LCA1OCwgMjE1LCA3OSwgNywgNiwgMSwgMTkxLCAyLCA5MCwgNywgMywgMSwgCi0gICAgMTkxLCAyLCA5MCwgNywgNiwgMSwgMjM1LCAxNDMsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgOTAsIDcsIDYsIDEsIAotICAgIDMsIDIyNCwgMjQxLCAyLCAyNDEsIDM4LCAyMTgsIDI3LCA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMjQxLCAzOCwgMjE4LCAyNywgCi0gICAgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDkwLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgOTAsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDkwLCA3LCAzLCAxLCAyMTYsIDU4LCA2MSwgNywgMywgMSwgMjU0LCA1MiwgNywgCi0gICAgMywgMSwgMjE2LCA1OCwgMjU0LCA1MiwgNywgMywgMSwgNTQsIDIsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgNzUsIDcsIDMsIAotICAgIDEsIDI1MCwgMjUzLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDksIDQsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDI0OSwgNCwgMiwgCi0gICAgMTAxLCA3LCAzLCAxLCAyMjMsIDIwMiwgNzQsIDcsIDMsIDEsIDIyMiwgMTEzLCA3LCAzLCAxLCAyMjIsIDExNCwgMiwgMTAxLCAKLSAgICA3LCAzLCAxLCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMjMsIDIwMiwgCi0gICAgMjI3LCA0MCwgMTkxLCAyLCAxMDEsIDcsIDMsIDEsIDI0OSwgMTkzLCAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIAotICAgIDI0NywgNzMsIDIzNSwgMTQzLCAyLCA5MCwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDEwMSwgNywgMywgMSwgMTEzLCAyNDMsIAotICAgIDE3NywgNywgMSwgMywgNiwgMjQzLCAxNzcsIDcsIDMsIDEsIDI0MywgODMsIDcsIDMsIDEsIDIyNCwgNDMsIDI0MCwgMjM1LCAKLSAgICA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQxLCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAxMDEsIDcsIDMsIDEsIDI0MSwgMTkyLCAKLSAgICAyLCAxMDEsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA5MCwgNywgMywgMSwgMjM1LCAxODMsIDcsIDEsIDMsIDYsIDcyLCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MSwgMjE4LCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjMzLCAyNywgNywgMywgMSwgMjE2LCA1OCwgCi0gICAgMTgzLCA3LCAzLCAxLCAyMTYsIDU4LCAyMzIsIDExMCwgMiwgMTg0LCAyMzMsIDYwLCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgCi0gICAgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCA0MiwgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAKLSAgICAxLCAzLCA2LCAyMDQsIDcsIDMsIDEsIDI1MiwgNTQsIDc1LCA3LCAxLCAzLCA2LCAyMjcsIDk5LCA3LCAzLCAxLCAyNDksIAotICAgIDE5MywgMjI3LCA2NywgNywgMywgMSwgMjI2LCA5LCA3LCAzLCAxLCAyMTYsIDU4LCAxNDksIDcsIDMsIDEsIDIxNiwgNTgsIAotICAgIDIyNCwgMTEzLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNCwgMTEzLCAyLCAxMDEsIDcsIDMsIDEsIAotICAgIDIyNCwgMTEzLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAyMjQsIAotICAgIDExMywgMiwgMjQ0LCA1NiwgNywgMywgMSwgMjIzLCAyMDIsIDIyNCwgMTEzLCAyLCAyNDQsIDU2LCA3LCAxLCAzLCA2LCAKLSAgICAxNDksIDcsIDEsIDMsIDYsIDIzNSwgMTkxLCAxNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMTAxLCA3LCAzLCAxLCAyNDUsIAotICAgIDQwLCA3LCAzLCAxLCAyNDcsIDczLCAyMzUsIDE0MywgMiwgMjE5LCA0NSwgMjQsIDEwMSwgNywgMywgMSwgMjE5LCAxNjMsIAotICAgIDIyMywgMjAyLCAyNDUsIDQwLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTYsIDU4LCAyMTgsIAotICAgIDk5LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMTExLCAxMzQsIDcsIDMsIDEsIDIxNSwgCi0gICAgMTI4LCA3LCAzLCAxLCAyMTUsIDgwLCAyLCAxMDEsIDcsIDMsIDEsIDIxNiwgNTgsIDIxNSwgNzksIDcsIDMsIDEsIDIxNiwgCi0gICAgNTgsIDIxNCwgODIsIDcsIDMsIDEsIDIxNiwgNTgsIDIxMywgMTA1LCA3LCAxLCAzLCA2LCAyMTMsIDEwNSwgNywgMywgMSwgCi0gICAgMjEyLCAxNTMsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDQsIAotICAgIDIzMiwgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDI0OSwgNDEsIDcsIDEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAxLCAyMjYsIAotICAgIDE1LCAyMTQsIDExNiwgMjQzLCAyMTksIDcsIDEsIDIzNSwgMTkxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgMSwgMjE5LCA1MCwgCi0gICAgMjUwLCAyNTIsIDcsIDEsIDI1MSwgMTY5LCAyNDksIDIwNCwgNywgMSwgMywgNiwgMjUzLCA3NCwgNywgMywgMSwgMjQ5LCAKLSAgICAxOTMsIDIyNywgNDAsIDc0LCA3LCAxLCAzLCA2LCAyNDMsIDE3OCwgMiwgMTAxLCA3LCAxLCAzLCA2LCAyNDIsIDQxLCA3LCAKLSAgICAzLCAxLCAyMzUsIDE0MywgMiwgMjQ5LCA2NywgNywgMywgMSwgMjE2LCA1OCwgMjM1LCAyNywgNywgMSwgMywgNiwgMTUwLCAKLSAgICA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMTAxLCA3LCAxLCAyNDIsIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDEsIDIyMywgCi0gICAgMjAyLCAyNDIsIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDMsIDEsIDI0NSwgMjUxLCAyNDcsIDE3MiwgNywgMywgMSwgMjQ3LCAKLSAgICAyMzMsIDI0NywgMTcyLCA3LCAzLCAxLCAyNDUsIDI1MSwgMjQ3LCAxNzMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxNiwgCi0gICAgMTQzLCAyNDcsIDE3MiwgNywgMywgMSwgMjE3LCAxODgsIDI0NywgMTcyLCA3LCAzLCAxLCAyMTcsIDIzNiwgMjQ3LCAxNzMsIAotICAgIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0NCwgMTAzLCAyNDcsIDE3MiwgNywgMywgMSwgMjMyLCAxNTgsIDI0NywgMTcyLCA3LCAKLSAgICAzLCAxLCAyMzIsIDExMSwgMjQ3LCAxNzIsIDcsIDEsIDI1MSwgMTY5LCAyMjYsIDU2LCA3LCAxLCAyNTEsIDE3NywgMjI2LCAKLSAgICA1NiwgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MiwgMiwgMjQ0LCA1NiwgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MiwgMiwgCi0gICAgMjQ0LCA1NywgMjQsIDIxOCwgMjcsIDU5LCAxLCAzLCAyNDIsIDQxLCA1OSwgMSwgMywgMjQyLCA0MiwgMiwgMTAxLCA1OSwgCi0gICAgMSwgMywgMjM1LCAxNDIsIDU5LCAxLCAzLCAxNDksIDU5LCAxLCAzLCAyMTYsIDU4LCAxNDksIDU5LCAxLCAzLCAyMTYsIDU4LCAKLSAgICAyMjQsIDExMywgMiwgMTAxLCA1OSwgMSwgMywgNiwgMjM1LCAxOTEsIDE0OSwgNTksIDEsIDMsIDIxNCwgODIsIDU5LCAxLCAKLSAgICAzLCAyMTMsIDEwNSwgNTksIDEsIDIyNSwgNzEsIDU5LCAxLCA1MSwgMjI1LCA3MSwgNTksIDEsIDIxNiwgNTgsIDI0OSwgCi0gICAgMTU3LCA1OSwgMSwgMjUzLCAyMjYsIDU5LCAxLCAyMjMsIDIwMiwgMjQ5LCAxNTcsIDU5LCAxLCA0NiwgMTUxLCAyMjMsIAotICAgIDEzMCwgNTksIDEsIDQyLCAxNTEsIDIyMywgMTMwLCA1OSwgMSwgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCAyMjMsIDIwMiwgCi0gICAgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCA0MiwgMjUzLCAxNjQsIDU5LCAxLCA0NiwgMjUzLCAxNjQsIDU5LCAxLCAxMTQsIAotICAgIDI1MywgMTY0LCA1OSwgMSwgMTE5LCAyNTMsIDE2NCwgNTksIDEsIDI0OSwgMjI0LCAyNTQsIDE3NCwgMjUwLCAxNjYsIDU5LCAKLSAgICAxLCA3MSwgMjMyLCAyNDIsIDU5LCAxLCAyMzIsIDM3LCA1OSwgMSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjQyLCAKLSAgICAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMTE1LCA3MSwgMjMyLCAyNDIsIDU5LCAxLCAxMTUsIDIzMiwgMzcsIDU5LCAxLCAxMTUsIAotICAgIDI0MiwgMTE0LCAyNTQsIDE3NCwgNTksIDEsIDExNSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjE2LCAxODAsIDI0OSwgCi0gICAgMTY0LCA1OSwgMSwgMTUxLCAyMTYsIDE4MCwgMjQ5LCAxNjQsIDU5LCAxLCAyNTAsIDEwNywgNDYsIDE1MSwgMjIzLCAxMzAsIAotICAgIDU5LCAxLCAyNTAsIDEwNywgNDIsIDE1MSwgMjIzLCAxMzAsIDU5LCAxLCAxMTQsIDIxOCwgMzYsIDU5LCAxLCAxMTksIDIxOCwgCi0gICAgMzYsIDU5LCAxLCA5NCwgNTIsIDU5LCAxLCAyMzAsIDI1MSwgNTIsIDI1MSwgNzQsIDYyLCA0OSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAyMjcsIDkwLCAzLCAyMTcsIDQyLCA1MSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjIzLCAxODksIDEwMSwgNTksIDEsIAotICAgIDI0OSwgNzEsIDI1NCwgMTc0LCA1OSwgMSwgMywgMjQzLCA4MywgNTksIDEsIDMsIDE1MCwgNTksIDEsIDMsIDE5NywgNTksIAotICAgIDEsIDMsIDIxMywgMTY2LCA1OSwgMSwgMywgMjIzLCAyMDIsIDI0MiwgMTU2LCAyMTksIDY5LCA1OSwgMSwgMjQ0LCAyNDQsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgMTI0LCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAxNjAsIDEzNCwgNTksIDEsIDIxMiwgMjQ1LCAyNDcsIDI1MSwgMTYwLCA3NywgCi0gICAgNTksIDEsIDIxMywgNTksIDI0NywgMjUxLCAxNjAsIDc3LCA1OSwgMSwgMjE0LCAxMTQsIDU5LCAxLCAyMTUsIDE1NiwgNTksIAotICAgIDEsIDUxLCAyNTMsIDIyNiwgNTksIDEsIDExNSwgMTE5LCAyNTMsIDE2NCwgNTksIDEsIDExNSwgMTE0LCAyNTMsIDE2NCwgCi0gICAgNTksIDEsIDExNSwgNDIsIDI1MywgMTY0LCA1OSwgMSwgMTE1LCA0NiwgMjUzLCAxNjQsIDU5LCAxLCAxMTUsIDIyMywgMTMwLCAKLSAgICA1OSwgMSwgMjMxLCAzNywgMjQyLCAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMjMxLCAzNywgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgNTksIDEsIDIzMSwgMzcsIDUxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAxMTUsIDIxNywgNDIsIDU5LCAxLCAKLSAgICAyMjQsIDQ4LCAyNDksIDE2NCwgNTksIDEsIDI1MSwgMjM0LCAxMjQsIDIxNiwgMjQxLCA1OSwgMSwgMjQ1LCAxMDEsIDEyNCwgCi0gICAgMjE2LCAyNDEsIDU5LCAxLCAyNTEsIDIzNCwgMTE1LCAyMTYsIDI0MSwgNTksIDEsIDI0NSwgMTAxLCAxMTUsIDIxNiwgMjQxLCAKLSAgICA1OSwgMSwgMjIwLCAyMzQsIDU5LCAxLCAyMjcsIDQwLCAyMjAsIDIzNCwgNTksIDEsIDExNSwgNDIsIDY4LCAzNywgMjQyLCAKLSAgICAxMTQsIDI1NCwgMTc0LCAzNywgMjU0LCAxNjQsIDI1NCwgMTc0LCAzNywgMjQ5LCAyMjQsIDI1NCwgMTc0LCAzNywgMjE3LCAKLSAgICA0MiwgMzcsIDIzMiwgMzcsIDM3LCAyMjYsIDI0MywgMzcsIDI1MSwgNzQsIDM3LCA2MiwgNDksIDM3LCAyNDcsIDIwOSwgMzcsIAotICAgIDI0MSwgMzgsIDQ5LCAzNywgMjIzLCAxMzEsIDQ5LCAzNywgNTEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgMzcsIDI1MCwgMTY2LCAKLSAgICAzNywgNzEsIDIzMiwgMjQzLCA0OSwgMzcsIDUxLCA3MSwgMjMyLCAyNDMsIDQ5LCAzNywgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgMzcsIDI1MCwgMTg3LCAzNywgMjM1LCAxOTEsIDI1MSwgNzQsIDM3LCAyMTYsIDU4LCAyNDksIDE1OCwgNDksIDM3LCAKLSAgICAyNDksIDE1OCwgNDksIDM3LCAyMjMsIDIwMiwgMjQ5LCAxNTgsIDQ5LCAzNywgMjQ5LCAxNTgsIDc4LCAyMjMsIDE0OCwgMzcsIAotICAgIDI0MiwgMTE0LCAyNTQsIDE3NSwgNTUsIDM3LCAyNTQsIDE2NCwgMjU0LCAxNzUsIDU1LCAzNywgNDIsIDIxOCwgMzcsIDU1LCAKLSAgICAzNywgNDYsIDIxOCwgMzcsIDU1LCAzNywgNDIsIDI1NCwgMTksIDQ5LCAzNywgMjQwLCAyMzUsIDM3LCA0MiwgMTUxLCAyMjMsIAotICAgIDEzMSwgNTUsIDM3LCAxMTQsIDIxOCwgMzcsIDU1LCAzNywgMTE5LCAyMTgsIDM3LCA1NSwgMzcsIDk0LCA1LCA1NSwgMzcsIAotICAgIDIzMCwgMjUxLCA1LCA1NSwgMzcsIDIyNiwgMTkxLCAyNDEsIDM4LCA1NSwgMzcsIDIyMywgMjA3LCAyNDEsIDM4LCA1NSwgCi0gICAgMzcsIDYyLCA1NSwgMzcsIDI0NywgMjEwLCA1NSwgMzcsIDIyMywgMTMxLCA1NSwgMzcsIDI0OSwgMTU4LCA1NSwgMzcsIAotICAgIDI1MCwgMTE3LCAzNywgMjI3LCA5MCwgMzcsIDcxLCAyMzIsIDI0MywgNTUsIDM3LCAyNTEsIDY4LCA1NSwgMzcsIDIzNSwgCi0gICAgMTkxLCA1MSwgMjUzLCAxOTQsIDU1LCAzNywgMjUwLCAxNjcsIDU1LCAzNywgMjQ5LCAyMjQsIDI1NCwgMTc1LCA1NSwgMzcsIAotICAgIDI1MSwgNzUsIDU1LCAzNywgMjM1LCAxOTEsIDI1MSwgNzUsIDU1LCAzNywgMjE3LCA0MywgNTUsIDM3LCAyMzIsIDM4LCA1NSwgCi0gICAgMzcsIDExNSwgMjMyLCAyNDIsIDM3LCA1MSwgMTE1LCAyMzIsIDI0MiwgMzcsIDIxNywgNDMsIDIyNiwgMjQ0LCAzNywgMjIwLCAKLSAgICAxNzUsIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMTg0LCAyMTksIDQ1LCAyMjYsIDI0NCwgMzcsIDIyMCwgMTc1LCAyMTksIAotICAgIDIzMiwgMjI2LCAyNDQsIDM3LCAxODQsIDIxOSwgMjMyLCAyMjYsIDI0NCwgMzcsIDQ2LCAxNTEsIDIyMywgMTMxLCA1NSwgCi0gICAgMzcsIDIzNSwgMTkxLCAyNTEsIDY4LCA1NSwgMzcsIDQxLCA1NSwgMzcsIDIyMiwgOTksIDU1LCAzNywgMjEzLCAxNjcsIDQ5LCAKLSAgICAzNywgNzEsIDIxNywgNDIsIDM3LCA1MSwgMjI2LCAyNDMsIDM3LCAyNDIsIDExNCwgMTYwLCA3NywgMzcsIDI1NCwgMTY0LCAKLSAgICAxNjAsIDc3LCAzNywgMjUsIDIyNiwgNTAsIDM3LCAyNSwgMjM0LCAxMSwgMzcsIDI1LCAyNDcsIDIwNCwgMjE2LCAyMzEsIAotICAgIDM3LCAyNSwgMjEyLCAyMTAsIDM3LCAyNTEsIDY4LCA0OSwgMzcsIDI0NSwgNjEsIDUsIDU1LCAzNywgNTEsIDcxLCAyMzIsIAotICAgIDI0MywgNTUsIDM3LCA0MiwgMjU0LCAxOSwgNTUsIDM3LCAyMjgsIDE2MywgMjE3LCA0MywgNDksIDM3LCAyNDEsIDQ0LCA0OSwgCi0gICAgMzcsIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDQ5LCAzNywgNDIsIDQ2LCA3NiwgNTUsIDM3LCAyMTUsIDEyNCwgNzYsIDU1LCAKLSAgICAzNywgMjQyLCAxMTgsIDIzNSwgNjYsIDM3LCA0NiwgMjUzLCAxNjUsIDQ5LCAzNywgNDIsIDE1MSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAzNywgMjQ0LCAxMDAsIDM3LCAyMTMsIDE2NywgNTUsIDM3LCA0MiwgMjUzLCAxNjUsIDU1LCAzNywgNDYsIDI1MywgMTY1LCAKLSAgICA1NSwgMzcsIDQ2LCAyNTMsIDE2NSwgMjQsIDExNCwgMjUzLCAxNjUsIDU1LCAzNywgNDYsIDE1MSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAzNywgNjIsIDc4LCAyMjMsIDE0OCwgMzcsIDI1MywgMTMzLCA1NSwgMzcsIDUxLCAyMjMsIDEzMSwgNTUsIDM3LCAyMTIsIAotICAgIDI4LCA0OSwgMzcsIDUxLCAyNTEsIDc1LCA1NSwgMzcsIDUxLCAyNTEsIDc0LCAzNywgNTEsIDIzMiwgMzcsIDM3LCA1MSwgCi0gICAgMjMyLCAzOCwgNTUsIDM3LCA1MSwgMjE3LCA0MiwgMzcsIDUxLCAyMzUsIDE5MSwgMjUxLCA3NCwgMzcsIDUxLCA5NSwgNzYsIAotICAgIDU1LCAzNywgNywgMywgMSwgNjEsIDM3LCA3LCAzLCAxLCA3NCwgMzcsIDcsIDMsIDEsIDcyLCAzNywgNywgMywgMSwgNzUsIAotICAgIDM3LCA3LCAzLCAxLCA2OSwgMzcsIDcsIDMsIDEsIDI1MCwgMjUyLCAzNywgNywgMywgMSwgMjQ5LCAzLCAzNywgNywgMywgMSwgCi0gICAgMjQyLCA0MSwgMzcsIDcsIDMsIDEsIDE4MywgMzcsIDcsIDMsIDEsIDE0OSwgMzcsIDcsIDMsIDEsIDIxOCwgOTksIDM3LCA3LCAKLSAgICAzLCAxLCAyMTUsIDc5LCAzNywgNywgMywgMSwgMjEzLCAxNjYsIDI1LCA2LCAxLCAyNDEsIDE4MSwgMjUsIDMsIDEsIDI0MSwgCi0gICAgMTgxLCAyNSwgNiwgMSwgMjUzLCAxOTMsIDIyMiwgMTYxLCAyNSwgMywgMSwgMjUzLCAxOTMsIDIyMiwgMTYxLCAyNSwgMjI4LCAKLSAgICA1NCwgNTIsIDI1LCAyMzIsIDE2MywgMjI4LCA1NCwgNTIsIDI1LCA2LCAxLCAyMjYsIDE3OCwgMjQ3LCAxNzksIDI1LCAzLCAKLSAgICAxLCAyMjYsIDE3OCwgMjQ3LCAxNzksIDI1LCAyMTIsIDIxMCwgMjUsIDMsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIAotICAgIDg3LCAyNSwgMywgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDMsIDIyMywgMjAyLCAyNDYsIDcyLCAKLSAgICAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgMjI0LCAxNTgsIDc3LCAyNSwgMjE2LCAyMzEsIDI1LCAyNDcsIDIwNCwgCi0gICAgMjE2LCAyMzEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMTYsIDIzMSwgMjUsIDI1NCwgOCwgMjE3LCAyMTEsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDY0LCAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjM1LCAxODQsIAotICAgIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIAotICAgIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjU0LCA1MiwgMjUsIDYsIDEsIDI1MSwgMjAzLCAyNSwgNiwgMSwgMjQzLCA4MywgMjUsIAotICAgIDYsIDEsIDI0OCwgNSwgMjUsIDYsIDEsIDI0NSwgNjMsIDI1LCA2LCAxLCAyMTIsIDc4LCAyNSwgNiwgMSwgMjQ1LCAyOCwgCi0gICAgMjUsIDYsIDEsIDIxNywgMTMyLCAyNSwgNiwgMSwgMjM1LCAxODMsIDI1LCA2LCAxLCAyMzQsIDIyNywgMjUsIDYsIDEsIAotICAgIDIzMywgMTIyLCAyNSwgNiwgMSwgMjMwLCAxNzIsIDI1LCA2LCAxLCAyMjgsIDkyLCAyNSwgNiwgMSwgMjEzLCAxNDUsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY1LCAyNSwgNiwgMSwgMjI1LCAyNDAsIDI1LCA2LCAxLCAyMjMsIDE5MCwgMjUsIDYsIDEsIDIyMCwgCi0gICAgMTAzLCAyNSwgNiwgMSwgMjE3LCAyNDgsIDI1LCA2LCAxLCAyMTUsIDEyOCwgMjUsIDYsIDEsIDIyNiwgOSwgMjUsIDYsIDEsIAotICAgIDI1MCwgNDcsIDI1LCA2LCAxLCAyMjUsIDQ2LCAyNSwgNiwgMSwgMjI3LCA2NywgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyNDcsIDIwMywgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNiwgCi0gICAgMjMxLCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTYsIDIzMSwgMjUsIAotICAgIDMsIDEsIDIzNSwgMTg0LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIxNiwgCi0gICAgMjMxLCAyNSwgMywgMSwgMjU0LCA1MiwgMjUsIDMsIDEsIDI1MSwgMjAzLCAyNSwgMywgMSwgMjQzLCA4MywgMjUsIDMsIDEsIAotICAgIDI0OCwgNSwgMjUsIDMsIDEsIDI0NSwgNjMsIDI1LCAzLCAxLCAyMTIsIDc4LCAyNSwgMywgMSwgMjQ1LCAyOCwgMjUsIDMsIAotICAgIDEsIDIxNywgMTMyLCAyNSwgMywgMSwgMjM1LCAxODMsIDI1LCAzLCAxLCAyMzQsIDIyNywgMjUsIDMsIDEsIDIzMywgMTIyLCAKLSAgICAyNSwgMywgMSwgMjMwLCAxNzIsIDI1LCAzLCAxLCAyMjgsIDkyLCAyNSwgMywgMSwgMjEzLCAxNDUsIDI1LCAzLCAxLCAyMjcsIAotICAgIDY1LCAyNSwgMywgMSwgMjI1LCAyNDAsIDI1LCAzLCAxLCAyMjMsIDE5MCwgMjUsIDMsIDEsIDQwLCAyMjAsIDEwMywgMjUsIAotICAgIDMsIDEsIDIyMCwgMTAzLCAyNSwgMywgMSwgMjE3LCAyNDgsIDI1LCAzLCAxLCAyMTUsIDEyOCwgMjUsIDMsIDEsIDIyNiwgOSwgCi0gICAgMjUsIDMsIDEsIDI1MCwgNDcsIDI1LCAzLCAxLCAyMjUsIDQ2LCAyNSwgMywgMSwgMjI3LCA2NywgMjUsIDMsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDIyNywgNjYsIDIsIAotICAgIDIxNiwgMjMxLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCA2LCAyMzQsIDI1MSwgODcsIDI1LCAyNTEsIDIwNCwgODcsIDI1LCAyMTcsIDEzMywgODcsIDI1LCAyMTUsIAotICAgIDEyOSwgMiwgMjQxLCAzOCwgODcsIDI1LCAyMTUsIDEyOSwgMiwgMjU0LCAxNjQsIDI0LCAyNDEsIDM4LCA4NywgMjUsIDIxNSwgCi0gICAgMTI5LCAyLCAyNDcsIDIxMCwgMjQsIDI0MSwgMzgsIDg3LCAyNSwgMjI2LCAxMCwgODcsIDI1LCAyMjUsIDI0MSwgODcsIDI1LCAKLSAgICAyMzQsIDI1MSwgODcsIDI1LCAxLCAyNTMsIDE5MywgMjM0LCAxNSwgMjUsIDMsIDEsIDI1MywgMTkzLCAyMzQsIDE1LCAyNSwgCi0gICAgMSwgMjE5LCA3NywgMjUsIDMsIDEsIDIxOSwgNzcsIDI1LCAxLCAyNDcsIDE3OSwgMjUsIDMsIDEsIDI0NywgMTc5LCAyNSwgCi0gICAgMSwgMjM0LCAxNSwgMjUsIDMsIDEsIDIzNCwgMTUsIDI1LCAxLCAyMjIsIDE2MSwgMjUsIDMsIDEsIDIyMiwgMTYxLCA3OSwgCi0gICAgNiwgMSwgMjIwLCAyMzUsIDc5LCAzLCAxLCAyMjAsIDIzNSwgNzksIDYsIDEsIDI0NCwgMTA5LCA3OSwgMywgMSwgMjQ0LCAKLSAgICAxMDksIDc5LCA2LCAxLCAyMzQsIDEyMywgNzksIDMsIDEsIDIzNCwgMTIzLCA3OSwgNiwgMSwgMjQxLCAzMiwgNzksIDMsIDEsIAotICAgIDI0MSwgMzIsIDc5LCA2LCAxLCAyNDMsIDc4LCA3OSwgMywgMSwgMjQzLCA3OCwgNzksIDYsIDEsIDIyMCwgMjAyLCA3OSwgMywgCi0gICAgMSwgMjIwLCAyMDIsIDc5LCA2LCAxLCAyNDgsIDIwLCA3OSwgMywgMSwgMjQ4LCAyMCwgMjUsIDIzNCwgMjI4LCA4NywgMjUsIAotICAgIDIyMywgMTkxLCA4NywgMjUsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCAxLCAyMTIsIDIxNSwgMjUsIDYsIDIxNywgCi0gICAgMTMzLCA4NywgMjUsIDIzMiwgMTQxLCAyNDUsIDY0LCA4NywgMjUsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjQ1LCA2NCwgODcsIAotICAgIDI1LCA2LCAxLCAyMjAsIDE4NywgMjUsIDMsIDEsIDIyMCwgMTg3LCAyNSwgNiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgCi0gICAgMjUsIDYsIDEsIDIyMiwgMTU5LCAyNSwgMywgMSwgMjIyLCAxNTksIDI1LCAyMjMsIDE5MSwgMiwgMjE5LCA0NSwgODcsIDI1LCAKLSAgICA2LCAyMjMsIDIwMiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDYsIDI0NiwgNzIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgCi0gICAgODcsIDI1LCA2LCAyMjMsIDIwMiwgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMzMsIDYsIDEsIDIzNiwgNTYsIAotICAgIDIsIDI0MiwgMTEzLCAzMywgNiwgMSwgMjM1LCAxODcsIDMzLCA2LCAxLCAyNDcsIDExNCwgMzMsIDYsIDEsIDI0MiwgMTYzLCAKLSAgICAzMywgNiwgMSwgMjE1LCAxNzIsIDIzNiwgNTUsIDMzLCA2LCAxLCAyNDUsIDI0NywgMzMsIDYsIDEsIDI1MSwgNSwgNzIsIAotICAgIDMzLCA2LCAxLCAyMTIsIDI1NSwgMzMsIDYsIDEsIDIzNSwgMTI3LCAzMywgNiwgMSwgMjMyLCAyMTYsIDMzLCA2LCAxLCAKLSAgICAyMjksIDksIDMzLCA2LCAxLCAyMTYsIDEzMiwgMzMsIDYsIDEsIDIzNCwgNTcsIDMzLCA2LCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgMjQyLCAxMTMsIDMzLCA2LCAxLCAyMjAsIDE3NSwgNjksIDMzLCA2LCAxLCAyNDUsIDI0MywgMzMsIDYsIDEsIDYxLCAzMywgCi0gICAgNiwgMSwgMjUxLCAyNTEsIDMzLCA2LCAxLCAyMTQsIDIzMiwgMzMsIDYsIDEsIDI0MiwgMjEyLCAzMywgNiwgMSwgMjQ4LCAKLSAgICA0MSwgMzMsIDYsIDEsIDIzNiwgNTUsIDMzLCA2LCAxLCAyMTIsIDY3LCAzMywgNiwgMSwgMjEyLCA4NywgMzMsIDYsIDEsIAotICAgIDcyLCAzMywgNiwgMSwgMjIwLCAxNzUsIDcyLCAzMywgNiwgMSwgMTgxLCAzMywgNiwgMSwgMjQ1LCAxMzEsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDExNywgMzMsIDYsIDEsIDI0NSwgMTA4LCAzMywgNiwgMSwgNzUsIDMzLCA2LCAxLCAyMjYsIDk2LCAzMywgNiwgMSwgCi0gICAgMjQ1LCA1NSwgMzMsIDYsIDEsIDI0NSwgNDUsIDMzLCA2LCAxLCAyMTcsIDIyOSwgMzMsIDYsIDEsIDY5LCAzMywgNiwgMSwgCi0gICAgMjQ1LCAxNTksIDMzLCA2LCAxLCAxNTksIDMzLCA2LCAxLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDI1MCwgNjcsIDMzLCA2LCAxLCAKLSAgICAyMjEsIDI0LCAzMywgNiwgMSwgMjIwLCAyNDUsIDMzLCA2LCAxLCAyNDEsIDI0MiwgNTIsIDMzLCA2LCAxLCAyMTMsIDE4LCAKLSAgICAzMywgNiwgMSwgMjE5LCAyMzYsIDUyLCAzMywgNiwgMSwgNzQsIDMzLCA2LCAxLCAyMTIsIDIwMywgMzMsIDYsIDEsIDE4NiwgCi0gICAgMzMsIDMsIDEsIDYxLCAzMywgMywgMSwgMjUxLCAyNTEsIDMzLCAzLCAxLCAyMTQsIDIzMiwgMzMsIDMsIDEsIDI0MiwgMjEyLCAKLSAgICAzMywgMywgMSwgMjQ4LCA0MSwgMzMsIDMsIDEsIDIzNiwgNTUsIDMzLCAzLCAxLCAyMTIsIDY3LCAzMywgMywgMSwgMjEyLCAKLSAgICA4NywgMzMsIDMsIDEsIDcyLCAzMywgMywgMSwgMjIwLCAxNzUsIDcyLCAzMywgMywgMSwgMTgxLCAzMywgMywgMSwgMjQ1LCAKLSAgICAxMzEsIDMzLCAzLCAxLCAyNDUsIDExNywgMzMsIDMsIDEsIDI0NSwgMTA4LCAzMywgMywgMSwgNzUsIDMzLCAzLCAxLCAyMjYsIAotICAgIDk2LCAzMywgMywgMSwgMjQ1LCA1NSwgMzMsIDMsIDEsIDI0NSwgNDUsIDMzLCAzLCAxLCAyMTcsIDIyOSwgMzMsIDMsIDEsIAotICAgIDY5LCAzMywgMywgMSwgMjQ1LCAxNTksIDMzLCAzLCAxLCAxNTksIDMzLCAzLCAxLCAyMTYsIDEzNiwgMzMsIDMsIDEsIDI1MCwgCi0gICAgNjcsIDMzLCAzLCAxLCAyMjEsIDI0LCAzMywgMywgMSwgMjIwLCAyNDUsIDMzLCAzLCAxLCAyNDEsIDI0MiwgNTIsIDMzLCAzLCAKLSAgICAxLCAyMTMsIDE4LCAzMywgMywgMSwgMjE5LCAyMzYsIDUyLCAzMywgMywgMSwgNzQsIDMzLCAzLCAxLCAyMTIsIDIwMywgMzMsIAotICAgIDMsIDEsIDE4NiwgMzMsIDMsIDEsIDIzNiwgNTYsIDIsIDI0MiwgMTEzLCAzMywgMywgMSwgMjM1LCAxODcsIDMzLCAzLCAxLCAKLSAgICAyNDcsIDExNCwgMzMsIDMsIDEsIDI0MiwgMTYzLCAzMywgMywgMSwgMjE1LCAxNzIsIDIzNiwgNTUsIDMzLCAzLCAxLCAyNDUsIAotICAgIDI0NywgMzMsIDMsIDEsIDI1MSwgNSwgNzIsIDMzLCAzLCAxLCAyMTIsIDI1NSwgMzMsIDMsIDEsIDIzNSwgMTI3LCAzMywgMywgCi0gICAgMSwgMjMyLCAyMTYsIDMzLCAzLCAxLCAyMjksIDksIDMzLCAzLCAxLCAyMTYsIDEzMiwgMzMsIDMsIDEsIDIzNCwgNTcsIDMzLCAKLSAgICAzLCAxLCAyNDAsIDE0NiwgMiwgMjQyLCAxMTMsIDMzLCAzLCAxLCAyMjAsIDE3NSwgNjksIDMzLCAzLCAxLCAyNDUsIDI0MywgCi0gICAgMzMsIDYsIDEsIDIyNywgNjcsIDMzLCAzLCAxLCAyMjcsIDY3LCAzMywgNiwgMSwgMjEzLCA0OSwgMzMsIDMsIDEsIDIxMywgCi0gICAgNDksIDMzLCA2LCAxLCAyMzUsIDE4MSwgNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgNzQsIDMzLCA2LCAxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjM1LCAxODEsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDI1MSwgMTcyLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjMzLCAyNDIsIDMzLCAKLSAgICAzLCAxLCAyMzMsIDI0MiwgMzMsIDYsIDEsIDIyNSwgNDYsIDMzLCAzLCAxLCAyMjUsIDQ2LCAzMywgNiwgMSwgMjQ0LCA1MSwgCi0gICAgMzMsIDMsIDEsIDI0NCwgNTEsIDMzLCA2LCAxLCAyMzUsIDE0NCwgMzMsIDMsIDEsIDIzNSwgMTQ0LCAzMywgNiwgMSwgMjM1LCAKLSAgICAxNDUsIDIsIDUxLCAyNDIsIDExNCwgMjU0LCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE0NSwgMiwgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgMzMsIDYsIDEsIDIxNSwgMTc1LCAzMywgMywgMSwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyMjMsIDg3LCAyMjcsIDY3LCAKLSAgICAzMywgMywgMSwgMjIzLCA4NywgMjI3LCA2NywgMzMsIDYsIDEsIDIyNywgNjgsIDIsIDIxNywgMTgsIDMzLCAzLCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMTcsIDE4LCAzMywgNiwgMSwgMjI3LCA4LCAzMywgMywgMSwgMjI3LCA4LCAzMywgNiwgMSwgMjM0LCAxNSwgCi0gICAgMzMsIDMsIDEsIDIzNCwgMTUsIDMzLCAyMTcsIDk5LCA1MiwgMzcsIDMzLCAyMTcsIDE4LCAzNywgMzMsIDIyNiwgMTkyLCAKLSAgICAzNywgMzMsIDIwNywgMjI1LCAxNTIsIDM3LCAzMywgMjI1LCA0MCwgMjI1LCAxNTIsIDM3LCAzMywgMjI1LCAxMzcsIDM3LCAKLSAgICAzMywgMjQwLCAyMDEsIDIxNywgOTksIDUyLCAzNywgMzMsIDIzMSwgNCwgNTIsIDMzLCA2LCAxLCAyMjAsIDE3NSwgMjQwLCAKLSAgICAxNDYsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyMjAsIDE3NSwgMjQwLCAxNDYsIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAyMjEsIAotICAgIDY2LCA1MiwgMzMsIDMsIDEsIDIyMSwgNjYsIDUyLCAzMywgNiwgMSwgMjQ1LCA1NiwgMiwgMjE3LCA2OCwgMzMsIDMsIDEsIAotICAgIDI0NSwgNTYsIDIsIDIxNywgNjgsIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgMjE1LCAxMjcsIDMzLCAzLCAxLCAyNDIsIDIxMywgCi0gICAgMiwgMjE1LCAxMjcsIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgOTAsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgOTAsIDMzLCA2LCAKLSAgICAxLCAyNDIsIDIxMywgMiwgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIAotICAgIDEsIDIxMiwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjEyLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMTIsIAotICAgIDg4LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxMiwgODgsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjM1LCAxNywgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDcxLCA5MCwgCi0gICAgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDcxLCA5MCwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDkwLCAzMywgMywgMSwgMjM1LCAKLSAgICAxNywgMiwgOTAsIDMzLCA2LCAxLCAyNTIsIDQ0LCAxODEsIDMzLCAzLCAxLCAyNTIsIDQ0LCAxODEsIDMzLCA2LCAxLCAyNDUsIAotICAgIDEwOSwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAyNiwgMjQ1LCAxMDksIAotICAgIDI0MiwgMjEyLCAzMywgMywgMjYsIDI0NSwgMTA5LCAyNDIsIDIxMiwgMzMsIDYsIDEsIDIyNiwgOTcsIDIsIDIzMSwgMzcsIAotICAgIDEwMSwgMzMsIDMsIDEsIDIyNiwgOTcsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDI1NCwgMTgwLCAxNTksIDMzLCAzLCAKLSAgICAxLCAyNTQsIDE4MCwgMTU5LCAzMywgNiwgMSwgMjQ1LCA0NiwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDUsIDQ2LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDYsIDEsIDIxNywgMjMwLCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxNywgMjMwLCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDYsIDEsIDIxOSwgNjEsIDY5LCAzMywgMywgMSwgMjE5LCA2MSwgNjksIDMzLCA2LCAxLCAyMTksIDYxLCAKLSAgICAxMTEsIDIsIDkwLCAzMywgMywgMSwgMjE5LCA2MSwgMTExLCAyLCA5MCwgMzMsIDYsIDEsIDI0MiwgMzAsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgMywgMSwgMjQyLCAzMCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAyNiwgMjE3LCAyMzAsIDIxNiwgMTM2LCAzMywgCi0gICAgMywgMjYsIDIxNywgMjMwLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjUwLCAKLSAgICA2OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCA3MSwgOTAsIDMzLCAzLCAxLCAyNTAsIDY4LCAyLCA3MSwgCi0gICAgOTAsIDMzLCA2LCAxLCAyMjAsIDIxMywgMzMsIDMsIDEsIDIyMCwgMjEzLCAzMywgNiwgMSwgMjU0LCAxODAsIDI1MCwgNjcsIAotICAgIDMzLCAzLCAxLCAyNTQsIDE4MCwgMjUwLCA2NywgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgCi0gICAgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDEsIDIyNiwgMTg1LCAzMywgNiwgMSwgMjEyLCAKLSAgICA2OCwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDIxMiwgNjgsIDIsIDI1MSwgNzQsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCAxMDEsIAotICAgIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCAxMDEsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgCi0gICAgMTMyLCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgMjQ1LCAxMDksIDIsIDEwMSwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAxMDEsIAotICAgIDMzLCA2LCAxLCAyNDUsIDEwOSwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgCi0gICAgMjM0LCAxMzMsIDI1MCwgNjcsIDMzLCAzLCAxLCAyMzQsIDEzMywgMjUwLCA2NywgMzMsIDYsIDEsIDI0NSwgMTE4LCAyLCAKLSAgICAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAxMTgsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyMjYsIDE4NSwgMzMsIDYsIDEsIAotICAgIDExOCwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDExOCwgMiwgMjUxLCA3NCwgMzMsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMDksIAotICAgIDMzLCAzLCAxLCAxMTgsIDIsIDI0NywgMjA5LCAzMywgNiwgMjYsIDExOCwgMjM2LCA1NSwgMzMsIDMsIDI2LCAxMTgsIDIzNiwgCi0gICAgNTUsIDMzLCA2LCAxLCAyMzYsIDU2LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMjM2LCA1NiwgMiwgMjUxLCA3NCwgMzMsIDYsIAotICAgIDEsIDIyMiwgMTEzLCAzMywgMywgMSwgMjIyLCAxMTMsIDMzLCA2LCAxLCAyMjIsIDExNCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAKLSAgICAxLCAyMjIsIDExNCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAyMTIsIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMiwgCi0gICAgNjgsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMjEyLCA4OCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTIsIDg4LCAyLCAKLSAgICAyNDcsIDIwOSwgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNDUsIDI0NywgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNDUsIDI0NywgMzMsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMzIsIDM3LCAzMywgMywgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDMzLCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxNTcsIDIsIAotICAgIDI0NywgMjA5LCAzMywgMywgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDI1MiwgNTQsIDc1LCAzMywgMywgMSwgCi0gICAgMjUyLCA1NCwgNzUsIDMzLCA2LCAxLCAyNTIsIDU0LCAxNTcsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjUyLCA1NCwgMTU3LCAKLSAgICAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAxOTEsIDIsIDI0NywgMjA5LCAzMywgCi0gICAgNiwgMSwgMTExLCAyLCAyMzIsIDM3LCAzMywgMywgMSwgMTExLCAyLCAyMzIsIDM3LCAzMywgNiwgMSwgMTExLCAyLCAyNDcsIAotICAgIDIwOSwgMzMsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxMTEsIDIsIDUxLCAxNzksIDMzLCAzLCAxLCAKLSAgICAxMTEsIDIsIDUxLCAxNzksIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDI1MCwgNjgsIDIsIAotICAgIDI0NywgMjA5LCAzMywgNiwgMSwgMjQyLCAyMTMsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgNiwgMSwgMjEzLCAxOSwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTMsIDE5LCAyLCAyNDcsIDIwOSwgMzMsIAotICAgIDYsIDEsIDI0MiwgMjEzLCAyLCAyMTksIDQ1LCAyNCwgMTAxLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAxMDEsIDMzLCA2LCAxLCAyNDIsIDMwLCAyLCAxMDEsIDMzLCAzLCAxLCAyNDIsIDMwLCAyLCAxMDEsIDMzLCA2LCAxLCAyNDIsIAotICAgIDMwLCAyLCA5MCwgMzMsIDMsIDEsIDI0MiwgMzAsIDIsIDkwLCAzMywgNiwgMSwgMjM0LCAyMywgMjQ4LCA0MSwgMzMsIDMsIAotICAgIDEsIDIzNCwgMjMsIDI0OCwgNDEsIDMzLCA2LCAxLCAyMzQsIDIzLCAyNDcsIDExNCwgMzMsIDMsIDEsIDIzNCwgMjMsIDI0NywgCi0gICAgMTE0LCAzMywgNiwgMSwgMjM0LCAyMywgMjEyLCAyMCwgMzMsIDMsIDEsIDIzNCwgMjMsIDIxMiwgMjAsIDMzLCA2LCAxLCAKLSAgICAyMzQsIDIzLCAyNDUsIDI0MSwgMzMsIDMsIDEsIDIzNCwgMjMsIDI0NSwgMjQxLCAzMywgNiwgMSwgMjM0LCAyMywgMjMyLCAKLSAgICAyMTYsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMzIsIDIxNiwgMzMsIDYsIDEsIDIzNCwgMjMsIDIyOSwgOSwgMzMsIDMsIDEsIAotICAgIDIzNCwgMjMsIDIyOSwgOSwgMzMsIDYsIDEsIDIzNCwgMjMsIDIyMCwgMzcsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMjAsIDM3LCAKLSAgICAzMywgNiwgMSwgMjM0LCAyMywgMjE3LCAxMywgMzMsIDMsIDEsIDIzNCwgMjMsIDIxNywgMTMsIDMzLCA2LCAxLCAyMjMsIAotICAgIDIwMiwgMjEyLCA4NywgMzMsIDMsIDEsIDIyMywgMjAyLCAyMTIsIDg3LCAzMywgNiwgMSwgMjQ1LCAxMzIsIDIsIDEwMSwgCi0gICAgMzMsIDMsIDEsIDI0NSwgMTMyLCAyLCAxMDEsIDMzLCA2LCAxLCAyMzMsIDI1LCAzMywgMywgMSwgMjMzLCAyNSwgMzMsIDYsIAotICAgIDEsIDIyMywgMTkyLCAzMywgMywgMSwgMjIzLCAxOTIsIDMzLCA2LCAxLCAyMTMsIDgwLCAzMywgMywgMSwgMjEzLCA4MCwgCi0gICAgMzMsIDYsIDEsIDIyNCwgMjMyLCAzMywgMywgMSwgMjI0LCAyMzIsIDMzLCA2LCAxLCAyMTQsIDYsIDMzLCAzLCAxLCAyMTQsIAotICAgIDYsIDMzLCA2LCAxLCAyNTQsIDc1LCAxODEsIDMzLCAzLCAxLCAyNTQsIDc1LCAxODEsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgCi0gICAgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQ1LCAxMzIsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDI0NSwgMTA5LCAyLCAKLSAgICAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjI2LCA5NywgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMjYsIDk3LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIyMCwgMjE0LCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDMsIDEsIDIyMCwgMjE0LCAyLCAyNDcsIDI0NiwgMTQxLCA2LCAxLCAyNTMsIDgwLCAxNDEsIDYsIDEsIDI1MSwgCi0gICAgMjE2LCAxNDEsIDYsIDEsIDI0MiwgMTc5LCAxNDEsIDYsIDEsIDI0OCwgMTY0LCAxNDEsIDYsIDEsIDI0NSwgMTY5LCAxNDEsIAotICAgIDYsIDEsIDIxMiwgMTA5LCAxNDEsIDYsIDEsIDI0NSwgMTU0LCAxNDEsIDYsIDEsIDI0NSwgMzAsIDE0MSwgNiwgMSwgMTA4LCAKLSAgICAxNDEsIDYsIDEsIDIxMiwgNjcsIDE0MSwgNiwgMSwgMjM1LCAyMjQsIDE0MSwgNiwgMSwgMjMyLCAyMTksIDE0MSwgNiwgMSwgCi0gICAgMjEzLCAxNDgsIDE0MSwgNiwgMSwgMjUwLCAyMTksIDE0MSwgNiwgMSwgMjM0LCAxNzEsIDE0MSwgNiwgMSwgMjQxLCA1NCwgCi0gICAgMTQxLCA2LCAxLCAyMzUsIDEzOSwgMTQxLCA2LCAxLCAyNDIsIDIyMiwgMTQxLCA2LCAxLCAyNTAsIDYyLCAxNDEsIDYsIDEsIAotICAgIDIzMSwgMTIyLCAxNDEsIDYsIDEsIDIxMiwgMjU1LCAxNDEsIDYsIDEsIDIyOCwgMTUwLCAxNDEsIDYsIDEsIDIyMSwgMjQsIAotICAgIDE0MSwgNiwgMSwgMjE0LCAxMTksIDE0MSwgNiwgMSwgMjUwLCA5MiwgMTQxLCA2LCAxLCAyMjYsIDgwLCAxNDEsIDYsIDEsIAotICAgIDIzNSwgMTEyLCAxNDEsIDYsIDEsIDIwMywgMTQxLCA2LCAxLCAyMjIsIDgwLCAxNDEsIDYsIDEsIDIxNCwgMTU2LCAxNDEsIAotICAgIDYsIDEsIDIxNywgMTUsIDE0MSwgNiwgMSwgMjIzLCAyNDUsIDE0MSwgNiwgMSwgMjQ5LCAxNzUsIDE0MSwgNiwgMSwgMjEyLCAKLSAgICAyNDAsIDE0MSwgNiwgMSwgMjI1LCAxNzgsIDE0MSwgNiwgMSwgMjM0LCAxODIsIDE0MSwgNiwgMSwgMjI3LCA4OCwgMTQxLCAKLSAgICA2LCAxLCAyNDQsIDExMSwgMTQxLCA1OSwgMSwgNDIsIDE1MSwgMjIzLCAxMzAsIDE0MSwgMjUzLCAyMjYsIDE0MSwgMjQ1LCAKLSAgICAxMTIsIDc3LCAxNDEsIDI0NCwgMjU0LCA3NywgMTQxLCAyNDksIDE1NywgMTQxLCAyMjQsIDE1OCwgNzcsIDE0MSwgMjU0LCAKLSAgICAxODEsIDc3LCAxNDEsIDMsIDEsIDI1MywgODAsIDE0MSwgMywgMSwgMjUxLCAyMTYsIDE0MSwgMywgMSwgMjQyLCAxNzksIAotICAgIDE0MSwgMywgMSwgMjQ4LCAxNjQsIDE0MSwgMywgMSwgMjQ1LCAxNjksIDE0MSwgMywgMSwgMjEyLCAxMDksIDE0MSwgMywgMSwgCi0gICAgMjQ1LCAxNTQsIDE0MSwgMywgMSwgMjQ1LCAzMCwgMTQxLCAzLCAxLCAxMDgsIDE0MSwgMywgMSwgMjEyLCA2NywgMTQxLCAzLCAKLSAgICAxLCAyMzUsIDIyNCwgMTQxLCAzLCAxLCAyMzIsIDIxOSwgMTQxLCAzLCAxLCAyMTMsIDE0OCwgMTQxLCAzLCAxLCAyNTAsIAotICAgIDIxOSwgMTQxLCAzLCAxLCAyMzQsIDE3MSwgMTQxLCAzLCAxLCAyNDEsIDU0LCAxNDEsIDMsIDEsIDIzNSwgMTM5LCAxNDEsIAotICAgIDMsIDEsIDI0MiwgMjIyLCAxNDEsIDMsIDEsIDI1MCwgNjIsIDE0MSwgMywgMSwgMjMxLCAxMjIsIDE0MSwgMywgMSwgMjEyLCAKLSAgICAyNTUsIDE0MSwgMywgMSwgMjI4LCAxNTAsIDE0MSwgMywgMSwgMjIxLCAyNCwgMTQxLCAzLCAxLCAyMTQsIDExOSwgMTQxLCAKLSAgICAzLCAxLCAyNTAsIDkyLCAxNDEsIDMsIDEsIDIyNiwgODAsIDE0MSwgMywgMSwgMjM1LCAxMTIsIDE0MSwgMywgMSwgMjAzLCAKLSAgICAxNDEsIDMsIDEsIDIyMiwgODAsIDE0MSwgMywgMSwgMjE0LCAxNTYsIDE0MSwgMywgMSwgMjE3LCAxNSwgMTQxLCAzLCAxLCAKLSAgICAyMjMsIDI0NSwgMTQxLCAzLCAxLCAyNDksIDE3NSwgMTQxLCAzLCAxLCAyMTIsIDI0MCwgMTQxLCAzLCAxLCAyMjUsIDE3OCwgCi0gICAgMTQxLCAzLCAxLCAyMzQsIDE4MiwgMTQxLCAzLCAxLCAyMjcsIDg4LCAxNDEsIDMsIDEsIDI0NCwgMTExLCAxNDEsIDMsIDI2LCAKLSAgICAyNDUsIDE3MCwgMjEyLCAyNDAsIDE0MSwgMjQzLCAyMDAsIDIxOSwgNjksIDE0MSwgMjQwLCAxNjAsIDkzLCAyNTQsIDE3NSwgCi0gICAgMjQ1LCAyMywgOTMsIDI1NCwgMTc1LCAyMjIsIDgxLCA5MywgMjU0LCAxNzUsIDIyMSwgMTEsIDkzLCAyNTQsIDE3NSwgMjEyLCAKLSAgICA5NywgMjI0LCAyMTUsIDkzLCAyNTQsIDE3NSwgMjEyLCA5NywgMjQzLCAxMDAsIDkzLCAyNTQsIDE3NSwgMjE3LCAyOCwgOTMsIAotICAgIDI1NCwgMTc1LCAyMjMsIDIwMCwgOTMsIDI1NCwgMTc1LCAyMTIsIDk2LCA5MywgMjU0LCAxNzUsIDIyNiwgMTE4LCA5MywgCi0gICAgMjU0LCAxNzUsIDIxMywgMTEsIDkzLCAyNTQsIDE3NSwgMjE3LCAxNjcsIDkzLCAyNTQsIDE3NSwgMjQzLCAxNywgOTMsIAotICAgIDI1NCwgMTc1LCAyNDMsIDE4LCAyMzAsIDEzOSwgOTMsIDI1NCwgMTc1LCAyNDMsIDE1LCA5MywgMjU0LCAxNzUsIDIyNCwgCi0gICAgMjE2LCAyMjYsIDE0NCwgOTMsIDI1NCwgMTc1LCAyMTcsIDIwNiwgMjQzLCAzMiwgOTMsIDI1NCwgMTc1LCAyMjYsIDEwMCwgCi0gICAgOTMsIDI1NCwgMTc1LCAyNTMsIDExNiwgMjQyLCAyMiwgOTMsIDI1NCwgMTc1LCAyMzAsIDE0OSwgOTMsIDI1NCwgMTc1LCAKLSAgICAyMzIsIDEzLCA5MywgMjU0LCAxNzUsIDIzMSwgMTEzLCA5MywgMjU0LCAxNzUsIDIzMSwgMTE0LCAyMzQsIDE4MywgOTMsIAotICAgIDI1NCwgMTc1LCAyNDgsIDEwOCwgOTMsIDI1NCwgMTc1LCAyMjQsIDIyNywgOTMsIDI1NCwgMTc1LCAyMTcsIDIwNiwgMjI0LCAKLSAgICAyMTEsIDkzLCAyNTQsIDE3NSwgMjEzLCAyMSwgMjUxLCAyMTcsIDIxMiwgMjIxLCA5MywgMjU0LCAxNzUsIDIyNywgNzMsIAotICAgIDkzLCAyNTQsIDE3NSwgMjM2LCAxNCwgOTMsIDI1NCwgMTc1LCAyNDgsIDIxLCA5MywgMjU0LCAxNzUsIDIxMiwgMjYsIDkzLCAKLSAgICAxNTIsIDIzMSwgMjA2LCAyNDksIDIyOCwgOTMsIDIyNSwgMTQ1LCAyMjAsIDIxNiwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgCi0gICAgMjIyLCA4MSwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgMjI2LCAxMTIsIDkzLCAyMjUsIDE0NSwgMjQxLCAyMzMsIDIyNCwgCi0gICAgMjIwLCA5MywgMjI1LCAxNDUsIDI0MSwgMTQ0LCA5MywgMjI1LCAxNDUsIDIxNiwgMTM0LCA5MywgMjI1LCAxNDUsIDIyMiwgCi0gICAgODEsIDkzLCAyMjUsIDE0NSwgMjI2LCAxMTIsIDkzLCAyMjUsIDE0NSwgMjI0LCAyMjAsIDkzLCAyMjUsIDE0NSwgMjQxLCAKLSAgICA0NywgOTMsIDIyNSwgMTQ1LCAyNDEsIDQ4LCAyNDEsIDIzNSwgMzEsIDIxNCwgMjM2LCA5MywgMjI1LCAxNDUsIDIyNCwgCi0gICAgMTYyLCA5MywgMjI1LCAxNDUsIDI0OCwgMTUxLCAxNjcsIDIzMSwgMjM0LCA5MywgMjI1LCAxNDUsIDIzMSwgMTA1LCA5MywgCi0gICAgMjI1LCAyNywgMjMxLCAyMzEsIDkzLCAyMjUsIDE0NSwgMjI0LCA1OSwgOTMsIDIyNSwgMjcsIDIyNiwgMTIwLCA5MywgMjI1LCAKLSAgICAxNDUsIDIyMCwgMjAxLCAyNDcsIDc0LCA5MywgMjI1LCAxNDUsIDIyMCwgODUsIDI0NywgNzQsIDkzLCAyMjUsIDI3LCAyMTksIAotICAgIDIzNywgMjI2LCAxMTQsIDkzLCAxNTIsIDIxNSwgMTMxLCAyNDcsIDc0LCA5MywgMTUyLCAyMzIsIDE2MywgMjQ3LCA3NCwgCi0gICAgOTMsIDIyNSwgMjcsIDIyOCwgNTEsIDI0MiwgMjEsIDkzLCAyMjUsIDE0NSwgMjI0LCAyMjEsIDIyNCwgMjE1LCA5MywgMSwgCi0gICAgMjU0LCA3OCwgOTMsIDEsIDI1MSwgMjA1LCA5MywgMSwgMjQyLCAxNzcsIDkzLCAxLCAyNDgsIDEzNCwgOTMsIDEsIDI0MSwgCi0gICAgMjIyLCA5MywgMSwgMjE0LCAyMzYsIDkzLCAxLCAyMTIsIDkwLCA5MywgMSwgMjQxLCAxODIsIDkzLCAxLCAyMTcsIDE4MywgCi0gICAgOTMsIDEsIDIxMiwgMjI0LCA5MywgMSwgNDAsIDIzNCwgMjU0LCA5MywgMSwgMjM0LCAyNTQsIDkzLCAxLCAyMzMsIDExOCwgCi0gICAgOTMsIDEsIDQwLCAyMzEsIDEyOSwgOTMsIDEsIDIzMSwgMTI5LCA5MywgMSwgNDAsIDIyOCwgNTAsIDkzLCAxLCAyMjgsIDUwLCAKLSAgICA5MywgMSwgMjIyLCAxNjQsIDkzLCAxLCAyNTMsIDc4LCA5MywgMSwgNDAsIDIyNiwgOTYsIDkzLCAxLCAyMjYsIDk2LCA5MywgCi0gICAgMSwgNDAsIDIxNiwgMTM3LCA5MywgMSwgMjE2LCAxMzcsIDkzLCAxLCAyMjQsIDE4NCwgOTMsIDEsIDIyMywgMjE5LCA5MywgCi0gICAgMSwgMjIwLCAyMDAsIDkzLCAxLCAyMTcsIDI0NSwgOTMsIDI2LCAyMTIsIDI1MywgNTEsIDIxNCwgMjM2LCA5MywgMjYsIAotICAgIDIxMiwgMjUzLCAyMTQsIDIzNywgMjEyLCAyMjQsIDkzLCAyNiwgMjEyLCAyNTMsIDUxLCAyMTIsIDIyNCwgOTMsIDIyNSwgCi0gICAgMjcsIDI0MywgMTcsIDkzLCAyMjUsIDI3LCAyNDMsIDE1LCAxMiwgNTAsIDUyLCAxMiwgNSwgMjIyLCAxNTgsIDEyLCAyNDMsIAotICAgIDI1NSwgMjMxLCAyMTcsIDEyLCA1LCAyMjIsIDE5MiwgMjUzLCAyMDcsIDI0OSwgNTAsIDIyMywgOTUsIDI1MywgMjA3LCAKLSAgICAyNDMsIDIzMCwgMjIzLCA5NSwgMTIsIDIyNCwgMjcsIDI1MywgMjA3LCAyMjYsIDU4LCAyMzEsIDYsIDUyLCAyNTMsIDIwNywgCi0gICAgMjI2LCA1OCwgMjE3LCAyMDEsIDIxNywgMTAxLCA1MiwgMjU0LCAxMjYsIDUyLCAxMiwgMjQ5LCAxNTcsIDEyLCAyNDgsIDk2LCAKLSAgICAyMjEsIDU3LCAxMiwgMjI1LCAxNDcsIDIxNCwgMjE4LCA1MiwgMTIsIDUsIDIzMCwgMjQzLCAxMiwgNSwgMjIyLCAxNzQsIAotICAgIDI1NCwgODAsIDIxNCwgMjksIDEyLCA1LCAyNTQsIDgwLCAyNTMsIDEzNywgMTIsIDUsIDIyNCwgNTgsIDI1NCwgNzksIDEyLCAKLSAgICA1LCAyMjQsIDY1LCAyNTQsIDYxLCAyNTQsIDE0LCAxMiwgNSwgMjE4LCAyMCwgMTIsIDMsIDEyNCwgMjE4LCAyOSwgMTIsIDMsIAotICAgIDEyNCwgMjYsIDEwNiwgMiwgMjMzLCAxMjcsIDIsIDIxMywgMzQsIDEyLCAzLCAxMjQsIDIxMiwgMTAxLCAxMiwgMywgMjQ0LCAKLSAgICAxMzMsIDEyLCAzLCAyNDgsIDEyOSwgMTIsIDMsIDIzNCwgMjEwLCAxMiwgMjIxLCA3MCwgMTIsIDIxNiwgMTY5LCA2MiwgCi0gICAgMjI1LCAyNywgNzcsIDEyLCAyMjQsIDE1OCwgNzcsIDEyLCAxLCAyMzQsIDIxNCwgMjEzLCAzNCwgMTIsIDEsIDI0MiwgMiwgCi0gICAgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgNDksIDEyLCAxLCAxMDYsIDIsIDE5MiwgNDksIDEyLCAxLCAyMTQsIDE1LCAyLCAKLSAgICAxOTIsIDQ5LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDU1LCAxMiwgMSwgNzMsIDIsIDE5MiwgNDksIDEyLCAxLCAyNTQsIDc4LCAKLSAgICAxMiwgMSwgMjUxLCAyMzAsIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjcsIDEyLCAxLCAyMTcsIDIxNSwgMTIsIDEsIDIxNywgCi0gICAgMTQ1LCAxMiwgMSwgMjM1LCAxMjQsIDEyLCAxLCAyNDIsIDE4LCAxMiwgMSwgMjM0LCAxMzUsIDEyLCAxLCAyNDgsIDE0MCwgCi0gICAgMTIsIDEsIDIxNywgMTU1LCAxMiwgMSwgMjIzLCAyNDUsIDEyLCAxLCAyMTIsIDEwMSwgMTIsIDEsIDIyMiwgODUsIDEyLCAxLCAKLSAgICAyMjAsIDIzOSwgMTIsIDEsIDIyMiwgMTk1LCAxMiwgMSwgMjQ4LCAxNTksIDEyLCAxLCAyMTgsIDI5LCAxMiwgMSwgMjEyLCAKLSAgICAxMDQsIDEyLCAxLCAyNTQsIDEwMywgMTIsIDEsIDI0MiwgMjIwLCAxMiwgMSwgMjM0LCAxODEsIDIsIDExNywgMTc2LCA0OSwgCi0gICAgMTIsIDEsIDIzNCwgMTgxLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDIzNSwgMTkxLCAyMTUsIAotICAgIDc5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDEzMywgCi0gICAgMTc2LCA0OSwgMTIsIDIxNywgMjUwLCAxMiwgMSwgMjQ0LCAxMTEsIDEyLCAxLCAyMjQsIDIyNSwgMTIsIDEsIDIzNCwgMjU0LCAKLSAgICAxMiwgMSwgMjMzLCAxMjYsIDEyLCAxLCAyMzEsIDE0MywgMTIsIDEsIDIyOCwgMTczLCAxMiwgMSwgMjQxLCAyMDIsIDEyLCAKLSAgICAxLCAyMTQsIDE0LCAxMiwgMSwgMTA2LCAyMzEsIDI1NSwgMTIsIDEsIDIxMywgMzQsIDEyLCAyNDQsIDEzMSwgMTIsIDI0OCwgCi0gICAgMTI3LCAxMiwgMjM0LCAyMDgsIDEyLCAyNDQsIDEzMywgMTIsIDI0OCwgMTI5LCAxMiwgMjM0LCAyMTAsIDEyLCAyMjEsIDE1LCAKLSAgICAxMiwgMjE4LCAyNDYsIDEyLCAyMzIsIDMxLCA0OSwgMTIsIDE5MiwgNDksIDEyLCAxOTIsIDU1LCAxMiwgMjE5LCAxMCwgCi0gICAgMjU0LCA3OCwgMTIsIDIzNSwgMTkxLCAyNDgsIDEyOSwgMTIsIDE1MiwgMjI4LCAxNzQsIDI0MiwgMTk0LCAxMiwgMjExLCAKLSAgICAyNTAsIDEyLCAzMCwgNSwgMywgMjE1LCA4MCwgNDksIDEyLCAzMCwgNSwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDQ5LCAxMiwgCi0gICAgMzAsIDUsIDYyLCA1NSwgMTIsIDIyMywgMjAyLCAyNDgsIDEyOSwgMTIsIDI0NCwgMTM0LCAyLCAxMTcsIDI0NywgNzIsIDEyLCAKLSAgICAyMTQsIDE2LCAxOTIsIDU1LCAyNTMsIDIwNywgMjEsIDIxMiwgNzksIDI1MywgMjA3LCAyMSwgMTE2LCAyNTMsIDIwNywgMjEsIAotICAgIDEwOSwgMjUzLCAyMDcsIDIxLCAxNjYsIDI1MywgMjA3LCAyMSwgMTYzLCAyNTMsIDIwNywgMjEsIDE4MCwgMjUzLCAyMDcsIAotICAgIDIxLCAxODksIDI1MywgMjA3LCAyMSwgMTk4LCAyNTMsIDIwNywgMjEsIDE5NSwgMjUzLCAyMDcsIDIxLCAyMDAsIDEyLCAKLSAgICAyMjYsIDU3LCA1MiwgMTIsIDI0OCwgMzQsIDIyMSwgNTcsIDEyLCAyMTcsIDk5LCAyMjEsIDU3LCAxMiwgMjQ0LCA1MCwgCi0gICAgMjI1LCAxNDMsIDIxOSwgOTUsIDEyLCAxLCAyNDcsIDczLCAyNTEsIDIzMCwgMTIsIDEsIDI0NywgNzMsIDIyNCwgMjI1LCAKLSAgICAxMiwgMSwgMjE4LCAyMjMsIDI1NCwgNzgsIDEyLCAxLCAxMDYsIDIxNCwgMzAsIDEyLCAxLCAxMDYsIDIsIDIxNCwgMTYsIAotICAgIDE5MiwgNDksIDEyLCAxLCAxMDYsIDIsIDIxNCwgMTYsIDE5MiwgNTUsIDEyLCAxLCAxMjQsIDI0MiwgMiwgMTIsIDEsIDEyNCwgCi0gICAgMTkyLCAyNTQsIDc4LCAxMiwgMSwgMTI0LCAxOTIsIDIxNCwgMTQsIDEyLCAxLCAxMTEsIDIsIDE5MiwgNDksIDEyLCAxLCAKLSAgICAxMjQsIDE5MiwgMjEzLCAzNCwgMTIsIDEsIDIxNiwgMTA5LCAxMiwgMSwgMjE2LCAxMDcsIDEyLCAxLCAyNTEsIDI0MCwgMTIsIAotICAgIDEsIDIxNywgMjE2LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIxNywgMjE2LCAyLCAxMzMsIDE3NiwgNzgsIDI0NiwgNTcsIDEyLCAKLSAgICAxLCAyMjYsIDgwLCAxMiwgMSwgMjE3LCAyMTMsIDEyLCAxLCAyNTEsIDIyOCwgMTIsIDEsIDEyMSwgMiwgMTkyLCA0OSwgMTIsIAotICAgIDEsIDEyMSwgMiwgMTE3LCAxNzYsIDcxLCA0OSwgMTIsIDEsIDIyOCwgMTQsIDEyLCAxLCAyNDUsIDI1NCwgMTIsIDEsIDEyMSwgCi0gICAgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjE3LCAyMzMsIDEyLCAxLCAyMTcsIDIzMSwgMTIsIDEsIDI0OCwgODEsIDEyLCAxLCAKLSAgICAyNDgsIDE0MSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyNDgsIDE0MSwgMiwgNjIsIDU1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIAotICAgIDYyLCAyNTEsIDIyMCwgMjQsIDMsIDIxOCwgMjksIDEyLCAxLCAyNDgsIDE0NiwgMTIsIDEsIDI0OCwgODMsIDEyLCAxLCAKLSAgICAyNDYsIDI1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIDEzMywgMTc2LCA3OCwgMjQ2LCA1NywgMTIsIDEsIDI0OCwgMTQxLCAyLCAKLSAgICAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDEsIDIyMywgNzcsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIAotICAgIDIyMywgMjQ2LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIyMywgMjQ2LCAyLCA2MiwgNTUsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgCi0gICAgMjE1LCA4MCwgNTUsIDEyLCAxLCAyMjMsIDI0NiwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjIzLCAKLSAgICAyNDYsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDIzNSwgMTIxLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDI0MywgMjM3LCAxNzYsIAotICAgIDQ5LCAxMiwgMSwgMjIyLCA4NiwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjIyLCA4NiwgMiwgMTMzLCAKLSAgICAxNzYsIDU1LCAxMiwgMSwgMjIyLCA4NiwgMiwgMTMzLCAxNzYsIDI1MSwgMjIwLCAyNCwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgCi0gICAgMjIyLCAxOTYsIDIsIDExNywgMTc2LCA1NSwgMTIsIDEsIDIyMiwgMTk2LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMTgsIAotICAgIDMwLCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjQ3LCA3MywgCi0gICAgMjQ0LCAxMTEsIDEyLCAxLCAyNDQsIDExMiwgMiwgNjIsIDIzMCwgMTc5LCA1NSwgMTIsIDEsIDI0NCwgMTEyLCAyLCA2MiwgCi0gICAgNTUsIDEyLCAxLCAyMTQsIDIyNSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyMjYsIDc4LCAKLSAgICAxMiwgMSwgMjI0LCAyMjYsIDIsIDYyLCA0OSwgMTIsIDEsIDIyNCwgMjI2LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzQsIAotICAgIDE4MCwgMTIsIDEsIDIxOCwgMTk1LCAyMzQsIDI1NCwgMTIsIDEsIDIzNCwgMjU1LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIzNCwgCi0gICAgMjU1LCAyLCA2MiwgNDksIDEyLCAxLCAyMjksIDE2MSwgMTIsIDEsIDIzNCwgMjU1LCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAKLSAgICAyNDMsIDk3LCAxMiwgMSwgMjQzLCA5OCwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMjksIDg4LCAxMiwgMSwgMjQzLCA5OCwgMiwgCi0gICAgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjQyLCA4MiwgMTIsIDEsIDI0MywgOTgsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIAotICAgIDIzMywgMTI3LCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIDYyLCA0OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAKLSAgICAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzMsIDEyNywgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDYyLCAKLSAgICA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyNDIsIDE5NCwgMTIsIDEsIDIyMywgMTE1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDIyMywgCi0gICAgMTMwLCAxMiwgMSwgMjI4LCAxNzQsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk1LCAxMiwgMSwgCi0gICAgMjE3LCAyMzQsIDIsIDYyLCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyLCA3MywgNDksIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAKLSAgICAxNDcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDIsIDE5MiwgNDksIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjgsIAotICAgIDI0MiwgMTQ3LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMzQsIDgyLCAyMjcsIDk5LCAxMiwgMSwgCi0gICAgMjI3LCA5OSwgMTIsIDEsIDY5LCAxMiwgMSwgMjEyLCAyMDMsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIDIwMywgMTIsIDEsIAotICAgIDIxNCwgMTUsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDIxNCwgMjMyLCAxMiwgMSwgMjQ0LCAxMzYsIDIxMywgMzQsIDEyLCAKLSAgICAxLCA3MywgMiwgMjE4LCAyNywgMTIsIDEsIDczLCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjE0LCAxNSwgMiwgNjIsIDQ5LCAKLSAgICAxMiwgMSwgNzQsIDEyLCAxLCA3MywgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgNzMsIDI1MiwgNTIsIDEyLCAxLCA3MywgCi0gICAgMjUyLCA1MywgMiwgMTkyLCA0OSwgMTIsIDI0MywgMjAwLCAyMTksIDY5LCAxMiwgMSwgMjU0LCAxNDgsIDEyLCAzLCAxMjQsIAotICAgIDI2LCAyMjIsIDE5NiwgMiwgMjMzLCAxMjcsIDIsIDEwNiwgMjMxLCAyNTUsIDEyLCAzLCAxMjQsIDI2LCAyMjQsIDIyNiwgMiwgCi0gICAgMjMzLCAxMjcsIDIsIDEwNiwgMjMxLCAyNTUsIDEyLCAzLCAxMjQsIDYzLCA3MCwgMTcsIDEyLCAzLCAxMjQsIDIzMywgMTI3LCAKLSAgICAyNTQsIDc4LCAxMiwgMywgMTI0LCAyMzUsIDEyNCwgMTIsIDMsIDEyNCwgMTMzLCAyNDcsIDcyLCAxMiwgMywgMTI0LCAyMjIsIAotICAgIDg1LCAxMiwgMjQ1LCAxMDEsIDY1LCAyNTMsIDgyLCAxMiwgMjE5LCA5MSwgNjUsIDIyMywgNDksIDI0NSwgMTMyLCAyNDEsIAotICAgIDE0MSwgMTIsIDMsIDEyNCwgMjIzLCA4NSwgMjEyLCA3OSwgMTIsIDMsIDEyNCwgMjE1LCAxMzAsIDIyNCwgOCwgMjEyLCA3OSwgCi0gICAgMTIsIDMsIDEyNCwgMjQ3LCA3MywgMjQxLCAyMjAsIDY1LCAyMzQsIDEzNSwgMTIsIDMsIDEyNCwgNjMsIDQ4LCAxNywgMTIsIAotICAgIDMsIDExNSwgMjIyLCA4NSwgMTIsIDMsIDEyNCwgMjMyLCAzMiwgMTIsIDMsIDIxNCwgMTQsIDEyLCAzLCAyMTMsIDM0LCAxMiwgCi0gICAgMywgMTI0LCAyMTMsIDM0LCAxMiwgMywgMTI0LCAyMjgsIDE3MywgMTIsIDIyNSwgMTczLCA2NSwgMjIyLCAxODQsIDEyLCAKLSAgICAyNDUsIDExMCwgMjUwLCAxMDksIDExNSwgMjE5LCA2OSwgMTIsIDI0NSwgMTEwLCAyNTAsIDEwOSwgMTI0LCAyMTksIDY5LCAKLSAgICAxMiwgMjIzLCA4NSwgMTI0LCAyMTksIDcwLCAyLCAyNDQsIDczLCAyNTAsIDEwOCwgMTIsIDMsIDExNSwgMjMxLCAxNDMsIAotICAgIDEyLCAxLCAyNDgsIDE0MSwgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDEyLCAxLCAyMjMsIDI0NiwgMiwgMjM1LCAxOTEsIDIxNSwgCi0gICAgNzksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDIxMiwgNzksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNiwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMTA5LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxNjYsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDE2MywgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTgwLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxODksIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDE5OCwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTk1LCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAyMDAsIDEyLCAxLCAyMjAsIDI0MCwgMiwgNjIsIDU1LCAxMiwgMSwgMjQ4LCAxNjAsIDIsIDYyLCA1NSwgMTIsIDEsIAotICAgIDI0MiwgMjIxLCAyLCA2MiwgNTUsIDEyLCA1LCAyMjAsIDg0LCAyNTQsIDM1LCAxMiwgNSwgMjIwLCA4NCwgMjI1LCAxMTUsIAotICAgIDIzMSwgMTIyLCAxMiwgMSwgMjQxLCAyMDMsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxNzUsIDI0NSwgMTAxLCA2NSwgMjI2LCAKLSAgICAxNDIsIDE3NSwgMjE4LCAyMTksIDI0MywgMjAwLCAyMTksIDY5LCAxNzUsIDIxOSwgMTIsIDI0MywgMjAwLCAyMTksIDY5LCAKLSAgICAxNzUsIDIxOCwgMjE5LCAyNDksIDE2NCwgMTc1LCAyMTksIDEyLCAyNDksIDE2NCwgMTc1LCAxOTksIDI0OSwgMTY0LCAxNzUsIAotICAgIDI0OSwgMTY1LCAyMjAsIDM0LCAyMzMsIDcwLCAxNzUsIDI0OSwgMTY1LCAyMjAsIDM0LCAyMjMsIDE0OCwgMTc1LCAyMTgsIAotICAgIDIxOSwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIzMywgNzAsIDE3NSwgMjE5LCAxMiwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIyMywgCi0gICAgMTQ4LCAxNzUsIDI0OSwgMTE5LCAxNzUsIDI0MSwgMjQwLCAyMjcsIDExNCwgMTc1LCAyNDEsIDI0MCwgMjMxLCAxMDMsIAotICAgIDE3NSwgMjQxLCAyNDAsIDI1MywgMTM0LCAxNzUsIDI1NCwgMTgxLCA3NywgMTc1LCAxLCAyNTQsIDgyLCAxNzUsIDEsIDIxOCwgCi0gICAgMjIzLCAyNTQsIDgyLCAxNzUsIDEsIDI1MSwgMjAyLCAxNzUsIDEsIDI0MywgODksIDE3NSwgMSwgMjQzLCA5MCwgMjQzLCAKLSAgICA2NywgMTc1LCAxLCAyNDgsIDEzNywgMTc1LCAxLCAyNDcsIDczLCAyNDgsIDEzOCwgMjIzLCAxMjYsIDE3NSwgMSwgMjQxLCAKLSAgICAyMjIsIDE3NSwgMSwgMjE0LCAxNCwgMTc1LCAxLCAyMTIsIDEwMSwgMTc1LCAxLCAyNDEsIDE4MCwgMTc1LCAxLCAyMTcsIAotICAgIDE3OSwgMTc1LCAxLCAyMTcsIDE4MCwgMjQzLCA2NywgMTc1LCAxLCAyMTIsIDE5MCwgMTc1LCAxLCAyMTIsIDE5MSwgMjQxLCAKLSAgICAyMjIsIDE3NSwgMSwgMjM0LCAyMzAsIDE3NSwgMSwgMjMzLCAxMjUsIDE3NSwgMSwgMjMxLCAzLCAxNzUsIDEsIDIyOCwgNTAsIAotICAgIDE3NSwgMSwgMjIxLCA2MywgMTc1LCAxLCA0MCwgMjIxLCA2MywgMTc1LCAxLCA3NCwgMTc1LCAxLCAyMjYsIDk2LCAxNzUsIAotICAgIDEsIDIyMywgMjAyLCAyMjYsIDk2LCAxNzUsIDEsIDIyMiwgMTkzLCAxNzUsIDEsIDIyNCwgMjE5LCAxNzUsIDEsIDIyMywgCi0gICAgMTI2LCAxNzUsIDEsIDIyMCwgMjAwLCAxNzUsIDEsIDIxNywgMjQzLCAxNzUsIDEsIDIyNiwgNDUsIDI1MSwgMTkwLCAxNzUsIAotICAgIDEsIDIyNiwgNDUsIDI0MiwgMjE4LCAxNzUsIDEsIDIyNiwgNDUsIDI0NywgMjI4LCAxNzUsIDIyNSwgMzYsIDQ5LCAxNzUsIAotICAgIDIyNSwgMzYsIDU1LCAxNzUsIDIyNSwgMzYsIDI0NiwgNzEsIDE3NSwgMjEyLCAxMCwgNDksIDE3NSwgMjEyLCAxMCwgNTUsIAotICAgIDE3NSwgMjEyLCAxMCwgMjQ2LCA3MSwgMTc1LCAyMjQsIDI0LCA0OSwgMTc1LCAyMjQsIDI0LCA1NSwgMTc1LCAyNDYsIDcyLCAKLSAgICAyMTIsIDE3LCAyNDEsIDMxLCAxNzUsIDI0NiwgNzIsIDIxMiwgMTcsIDI1NCwgMTUsIDE3NSwgMjQxLCAyMjUsIDQ5LCAxNzUsIAotICAgIDI0MSwgMjI1LCA1NSwgMTc1LCAyNDEsIDIyNCwgMjQ2LCA3MSwgMTc1LCAyNDUsIDQzLCA0OSwgMTc1LCAyNDUsIDQzLCA1NSwgCi0gICAgMTc1LCAyMjMsIDE5LCAxNzUsIDI0NCwgMTA1LCAyNDcsIDc0LCAxNzUsIDIyNCwgMTM3LCAxNzUsIDIyMywgNDUsIDE3NSwgCi0gICAgMTE3LCA3MSwgMTc2LCA0OSwgMTc1LCAxMTcsIDcxLCAxNzYsIDU1LCAxNzUsIDEzMywgMTc2LCA0OSwgMTc1LCAxMzMsIAotICAgIDE3NiwgNTUsIDE3NSwgMjI3LCAxMTIsIDIzMiwgMjQzLCA0OSwgMTc1LCAyMjcsIDExMiwgMjMyLCAyNDMsIDU1LCAxNzUsIAotICAgIDIzMCwgMTI2LCAxNzUsIDI1MiwgNTEsIDE3NSwgMSwgMjE5LCAyMzMsIDIxMiwgNzMsIDE3NSwgMSwgMjE5LCAyMzMsIDIzNCwgCi0gICAgMTI4LCAxNzUsIDEsIDIxOSwgMjMzLCAyNDQsIDEyMywgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMzMsIDE3NiwgMjQwLCAyMzcsIAotICAgIDU1LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAKLSAgICAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMzMsIDE3NiwgMjI1LCAKLSAgICAxNDEsIDIxNSwgMTI0LCAyNTEsIDIyMCwgMjQsIDExNywgMTc2LCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMTcsIDE3NiwgCi0gICAgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyNTEsIDIzMSwgMiwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDU1LCAxMiwgCi0gICAgMSwgMjUxLCAyMzEsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAxMjEsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDEyMSwgMiwgCi0gICAgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCAKLSAgICAyNTEsIDIyMCwgMjQsIDMsIDIxOCwgMjksIDEyLCAxLCAyNDgsIDE0MSwgMiwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDU1LCAKLSAgICAxMiwgMSwgMjIzLCAyNDYsIDIsIDkwLCAxMiwgMSwgMjIyLCA4NiwgMiwgMjQzLCAyMzcsIDE3NiwgNDksIDEyLCAxLCAyNTQsIAotICAgIDEwNCwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjU0LCAxMDQsIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgCi0gICAgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMTcsIAotICAgIDE3NiwgNTUsIDEyLCAxLCAyNDQsIDExMiwgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAKLSAgICAyMzQsIDE4MSwgMiwgNjIsIDQ5LCAxMiwgMSwgMjM0LCAxODEsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzNCwgMTgxLCAKLSAgICAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDYzLCAyLCA2MiwgNDksIDEyLCAxLCA2MywgMiwgCi0gICAgNjIsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDExNywgMTc2LCA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyLCAzLCAyMTgsIDI5LCAKLSAgICAxMiwgMSwgMjI4LCAxNzQsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMzMsIDEyNywgMiwgMTM0LCAxMiwgMSwgMjIzLCAyNDYsIAotICAgIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAyMjMsIDI0NiwgMiwgMTkyLCA0OSwgMTIsIDEsIDIyMiwgODYsIAotICAgIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAxMjEsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCA1NSwgMTIsIDEsIAotICAgIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDI0LCAxMTcsIDI0NywgNzIsIDEyLCAxLCAyMjIsIDg2LCAyLCAzLCAxMiwgMSwgCi0gICAgMjE4LCAzMCwgMjQsIDExNywgMjQ3LCA3MiwgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgMjQsIAotICAgIDExNywgMjQ3LCA3MiwgMTIsIDEsIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIAotICAgIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMjQ0LCAKLSAgICAxMzYsIDczLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAyNDMsIDIzNywgNTUsIDEyLCAxLCAyMTQsIDE1LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCA0OSwgMTIsIDEsIAotICAgIDczLCAyNTIsIDUzLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDIsIAotICAgIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgNDksIDEyLCAxLCAxMjEsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIAotICAgIDI0MywgMjM3LCA1NSwgMTIsIDEsIDIyMiwgODYsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDI0MywgMjM3LCA0OSwgCi0gICAgMTIsIDEsIDIyMiwgODYsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxMiwgMSwgMjM0LCAyNTUsIDIsIDExNywgMTc2LCA0OSwgCi0gICAgMjE3LCAxNTgsIDEsIDI0MiwgMjcsIDIxNywgMTU4LCAxLCAyMjAsIDI0OCwgMjE3LCAxNTgsIDEsIDIyOCwgMTcyLCAyMTcsIAotICAgIDE1OCwgMSwgMjI0LCA3NCwgMjE3LCAxNTgsIDEsIDI1MiwgMTA2LCAyMTcsIDE1OCwgMSwgMjMzLCAyMiwgMjE3LCAxNTgsIAotICAgIDEsIDIzNSwgMTIsIDIxNywgMTU4LCAxLCAyNTQsIDY4LCAyMTcsIDE1OCwgMSwgMjE0LCAyNTUsIDIxNywgMTU4LCAxLCAKLSAgICAyMzEsIDE0MiwgMjE3LCAxNTgsIDEsIDI0NCwgMTYyLCAyMTcsIDE1OCwgMSwgMjQ3LCAyMzEsIDIxNywgMTU4LCAxLCAyMTcsIAotICAgIDE2MCwgMjE3LCAxNTgsIDEsIDIzMywgMTUzLCAyMTcsIDE1OCwgMSwgMjQzLCAxMDYsIDIxNywgMTU4LCAxLCAyNDIsIDE1MywgCi0gICAgMjE3LCAxNTgsIDEsIDIyMiwgODQsIDIxNywgMTU4LCAxLCAyNDgsIDk0LCAyMTcsIDE1OCwgMSwgMjEyLCA5MywgMjE3LCAKLSAgICAxNTgsIDEsIDIxNywgMjQ0LCAyMTcsIDE1OCwgMSwgMjEzLCA5MSwgMjE3LCAxNTgsIDEsIDIyNiwgMTA3LCAyMTcsIDE1OCwgCi0gICAgMSwgMjM1LCAxMjksIDIxNywgMTU4LCAxLCAyNTAsIDcwLCAyMTcsIDE1OCwgMSwgMjE2LCAxMTQsIDIxNywgMTU4LCAxLCAKLSAgICAyNDEsIDE3MywgMjE3LCAxNTgsIDEsIDIzNCwgMTM3LCAyMTcsIDE1OCwgMSwgMjE3LCAxNTksIDIxNywgMTU4LCAxLCAyMTIsIAotICAgIDEwOCwgMjE3LCAxNTgsIDEsIDIyMCwgMjM4LCAyMTcsIDE1OCwgMSwgMjIyLCAxOTksIDIxNywgMTU4LCAxLCAyNDgsIDE2MiwgCi0gICAgMjE3LCAxNTgsIDEsIDEwOCwgMjE3LCAxNTgsIDEsIDIxMiwgMTYsIDIxNywgMTU4LCAxLCAyNTQsIDEwMSwgMjE3LCAxNTgsIAotICAgIDEsIDI0MiwgMjE5LCAyMTcsIDE1OCwgMSwgMjI0LCAyMjksIDIxNywgMTU4LCAxLCAyMTQsIDQ3LCAyMTcsIDE1OCwgMjU0LCAKLSAgICAxODIsIDIxNywgMTU4LCAyNTQsIDE5NywgMjE3LCAxNTgsIDI0MCwgMTA3LCAyMTcsIDE1OCwgMjQ1LCAxNjQsIDIxNywgCi0gICAgMTU4LCAyMTUsIDE5MSwgMjE3LCAxNTgsIDIyNywgNDgsIDIxNywgMTU4LCAyNDUsIDE3MiwgMjE3LCAxNTgsIDI0NCwgMjQwLCAKLSAgICAyMTcsIDE1OCwgMjI3LCAxMTEsIDIxNywgMTU4LCAyMjcsIDExOSwgMjE3LCAxNTgsIDIxOCwgMjQ2LCAyMTcsIDE1OCwgMSwgCi0gICAgMjMwLCA0MywgMjI4LCAyMjQsIDIxLCAyMTIsIDc5LCAyMjgsIDIyNCwgMjEsIDExNiwgMjI4LCAyMjQsIDIxLCAxMDksIAotICAgIDIyOCwgMjI0LCAyMSwgMTY2LCAyMjgsIDIyNCwgMjEsIDE2MywgMjI4LCAyMjQsIDIxLCAxODAsIDIyOCwgMjI0LCAyMSwgCi0gICAgMTg5LCAyMjgsIDIyNCwgMjEsIDE5OCwgMjI4LCAyMjQsIDIxLCAxOTUsIDIyOCwgMjI0LCAyMSwgMjAwLCAyMjgsIDIyNCwgCi0gICAgMSwgNjEsIDIyOCwgMjI0LCAxLCAyNDUsIDE2NSwgMjI4LCAyMjQsIDEsIDcyLCAyMjgsIDIyNCwgMSwgNzQsIDIyOCwgMjI0LCAKLSAgICAxLCA2OSwgMjI4LCAyMjQsIDEsIDIyNywgNDksIDIyOCwgMjI0LCAxLCA3NSwgMjI4LCAyMjQsIDEsIDI0OCwgMTUyLCAyMjgsIAotICAgIDIyNCwgMSwgMjA0LCAyMjgsIDIyNCwgMSwgMjUyLCAxMDcsIDIyOCwgMjI0LCAxLCAxOTMsIDIyOCwgMjI0LCAxLCAyMTgsIAotICAgIDUyLCAyMjgsIDIyNCwgMSwgMjM1LCAxMzksIDIyOCwgMjI0LCAxLCAyNTAsIDkyLCAyMjgsIDIyNCwgMSwgMjQ4LCAxNjQsIAotICAgIDIyOCwgMjI0LCAxLCAyMDMsIDIyOCwgMjI0LCAxLCAyMjMsIDgxLCAyMjgsIDIyNCwgMSwgMjIyLCAyMDIsIDIyOCwgMjI0LCAKLSAgICAxLCAyNDMsIDU1LCAyMjgsIDIyNCwgMSwgMjQ0LCAxNjQsIDIyOCwgMjI0LCAxLCAxODEsIDIyOCwgMjI0LCAxLCAyMzMsIAotICAgIDE1NywgMjI4LCAyMjQsIDEsIDIzMCwgNDYsIDIxMywgMjEwLCAyMjgsIDIyNCwgMSwgMTg4LCAyMjgsIDIyNCwgMSwgMjI4LCAKLSAgICAyMywgMjI4LCAyMjQsIDEsIDIwNSwgMjI4LCAyMjQsIDEsIDE1OSwgMjI4LCAyMjQsIDEsIDIxNCwgNDksIDIyOCwgMjI0LCAKLSAgICAxLCAxODYsIDIyOCwgMjI0LCAxLCAyMjgsIDI0LCAyMTMsIDIxMCwgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDIzNSwgMTM5LCAKLSAgICAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjUwLCA5MiwgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDIwMywgMjI4LCAyMjQsIDM3LCAKLSAgICAyMjAsIDE3NSwgMTI0LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAyMjAsIDE3NSwgMTE1LCAyMTYsIDI0MSwgMjI4LCAyMjQsIAotICAgIDM3LCAyMjAsIDE3NSwgMjIzLCAxMjUsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDE4NCwgMjQ3LCAyNDUsIDIxNiwgMjQxLCAKLSAgICAyMjgsIDIyNCwgMzcsIDE4NCwgMTI0LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAxODQsIDExNSwgMjE2LCAyNDEsIDIyOCwgCi0gICAgMjI0LCAzNywgMTg0LCAyMjMsIDEyNSwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMjMwLCAxMywgNzcsIDIyOCwgMjI0LCAKLSAgICAzNywgNTEsIDYyLCA0OSwgMjI4LCAyMjQsIDEyNCwgMTYwLCAyNTMsIDIyNiwgMjI4LCAyMjQsIDExNSwgMTYwLCAyNTMsIAotICAgIDIyNiwgMjI4LCAyMjQsIDE2LCAyMjcsIDUwLCAyNDgsIDEsIDIyOCwgMjI0LCAxNiwgMjQzLCA1NCwgMjI4LCAyMjQsIDI0OSwgCi0gICAgMTU3LCAyMjgsIDIyNCwgMjQ0LCAyNTQsIDc3LCAyMjgsIDIyNCwgMjMzLCAxMzIsIDIyMiwgMTY3LCAxLCAyNTQsIDg0LCAKLSAgICAyMjIsIDE2NywgMSwgMjUxLCAxNTEsIDIyMiwgMTY3LCAxLCAyNDMsIDg4LCAyMjIsIDE2NywgMSwgMjQ4LCAxMzksIDIyMiwgCi0gICAgMTY3LCAxLCAyMzUsIDE1MCwgMjIyLCAxNjcsIDEsIDI1MiwgMTA2LCAyMjIsIDE2NywgMSwgMjEyLCA4MiwgMjIyLCAxNjcsIAotICAgIDEsIDIzNSwgMTU4LCAyMjIsIDE2NywgMSwgMjE3LCAyMCwgMjIyLCAxNjcsIDEsIDIxMiwgMTczLCAyMjIsIDE2NywgMSwgCi0gICAgMjM1LCAxMywgMjIyLCAxNjcsIDEsIDIzMywgMTUwLCAyMjIsIDE2NywgMSwgMjMxLCAzLCAyMjIsIDE2NywgMSwgMjI4LCAKLSAgICA1MCwgMjIyLCAxNjcsIDEsIDIyMCwgODIsIDIyMiwgMTY3LCAxLCAyMzUsIDI1MSwgMjIyLCAxNjcsIDEsIDI0NCwgOTAsIAotICAgIDIyMiwgMTY3LCAxLCAyMTYsIDEzOSwgMjIyLCAxNjcsIDEsIDIyNCwgMTU1LCAyMjIsIDE2NywgMSwgMjIzLCAxMjYsIDIyMiwgCi0gICAgMTY3LCAxLCAyMjEsIDgsIDIyMiwgMTY3LCAxLCAyMTgsIDQ4LCAyMjIsIDE2NywgMTUyLCAyMzUsIDI1MSwgMjIyLCAxNjcsIAotICAgIDE1MiwgMjM1LCAyNTAsIDIyMiwgMTY3LCAxNTIsIDIyNywgMTA3LCAyMjIsIDE2NywgMTUyLCAyNDgsIDE1MCwgMjIyLCAKLSAgICAxNjcsIDU5LCAxLCAyNDUsIDY4LCAyMTIsIDE3MywgMjIyLCAxNjcsIDE1MiwgMjQ1LCA2OCwgMjEyLCAxNzMsIDIyMiwgCi0gICAgMTY3LCAzMCwgNSwgMTg0LCA3NCwgMjIyLCAxNjcsIDMwLCA1LCA3NCwgMjIyLCAxNjcsIDMwLCA1LCAyMjYsIDI0MiwgMjU0LCAKLSAgICAyMzIsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCAyNTQsIDIzMiwgMjIyLCAxNjcsIDMwLCA1LCAyNTQsIDIzMiwgMjIyLCAxNjcsIAotICAgIDMwLCA1LCAyMjYsIDI0MiwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCA2MSwgMjIyLCAxNjcsIDMwLCA1LCA2MSwgMjIyLCAKLSAgICAxNjcsIDU5LCAxLCAyMjAsIDE3NSwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgMjIwLCAxNzUsIDYxLCAyMjIsIDE2NywgMzAsIDUsIAotICAgIDE4NCwgNjksIDIyMiwgMTY3LCAzMCwgNSwgNjksIDIyMiwgMTY3LCA1OSwgMSwgNzIsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCAKLSAgICA3MiwgMjIyLCAxNjcsIDMwLCA1LCA3MiwgMjIyLCAxNjcsIDMwLCA1LCA3NSwgMjIyLCAxNjcsIDMwLCA1LCAyMTgsIDI0NiwgCi0gICAgMjIyLCAxNjcsIDE1MiwgMjI5LCAxNzQsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMjksIDE3NCwgMjIyLCAxNjcsIDIyNSwgMjcsIAotICAgIDI1NCwgMTIzLCAyMjIsIDE2NywgMjI1LCAyNywgMjU0LCAyMywgMjIyLCAxNjcsIDIyNSwgMjcsIDI1MiwgMzQsIDIyMiwgCi0gICAgMTY3LCAyMjUsIDI3LCAyNTMsIDExNywgMjIyLCAxNjcsIDIyNSwgMjcsIDIyMCwgMTg4LCAyMjIsIDE2NywgMjU0LCAxODEsIAotICAgIDc3LCAyMjIsIDE2NywgMjI1LCAyNywgMjMxLCAxMzIsIDIyNCwgMTkwLCAyMjIsIDE2NywgMjI1LCAyNywgMjEyLCAyNCwgCi0gICAgMjIyLCAxNjcsIDIyNSwgMjcsIDIyNCwgMTkwLCAyMjIsIDE2NywgMjI1LCAyNywgMjEyLCAxMDcsIDIyMiwgMTY3LCAyMjUsIAotICAgIDI3LCAyMTYsIDU0LCAyMjIsIDE2NywgMjI1LCAyNywgMjUzLCAxODAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTksIDIzNywgCi0gICAgMjMxLCAyMDgsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTQsIDExLCAyMzEsIDI0NSwgMSwgMjQyLCA3LCAyMzEsIDI0NSwgMSwgCi0gICAgMjU0LCAxODUsIDIzMSwgMjQ1LCAxLCAyNTQsIDEyMSwgMjMxLCAyNDUsIDEsIDI1NCwgMTYwLCAyMzEsIDI0NSwgMSwgMjU0LCAKLSAgICAxMTQsIDIzMSwgMjQ1LCAxLCAyMTUsIDk4LCAyMzEsIDI0NSwgMSwgMjUzLCA3NiwgMjMxLCAyNDUsIDEsIDIzNSwgMTU4LCAKLSAgICAyMzEsIDI0NSwgMSwgMjUzLCAxMTQsIDIzMSwgMjQ1LCAxLCAyNTQsIDg5LCAyMzEsIDI0NSwgMSwgMjU0LCA5NCwgMjMxLCAKLSAgICAyNDUsIDEsIDI1NCwgODYsIDIzMSwgMjQ1LCAxLCAyNTQsIDQ1LCAyMzEsIDI0NSwgMSwgMjU0LCAzMiwgMjMxLCAyNDUsIDEsIAotICAgIDI1MywgMTUyLCAyMzEsIDI0NSwgMSwgMjM1LCAyNTEsIDIzMSwgMjQ1LCAxLCAyNTMsIDIzOSwgMjMxLCAyNDUsIDEsIDI1MywgCi0gICAgMTI0LCAyMzEsIDI0NSwgMSwgMjUzLCAyMTUsIDIzMSwgMjQ1LCAxLCAyNTMsIDIxMSwgMjMxLCAyNDUsIDEsIDI1MywgMTQ2LCAKLSAgICAyMzEsIDI0NSwgMSwgMjUzLCAxMjIsIDIzMSwgMjQ1LCAxLCAyNDYsIDEwLCAyMzEsIDI0NSwgMSwgMjM1LCA2LCAyMzEsIAotICAgIDI0NSwgMSwgMjU0LCAxMDMsIDIzMSwgMjQ1LCAyNTQsIDEyNywgNzcsIDIzMSwgMjQ1LCAyMTQsIDExNywgNzcsIDIzMSwgCi0gICAgMjQ1LCAyNDMsIDI5LCA3NywgMjMxLCAyNDUsIDIyNSwgMjYsIDgyLCA1LCAyMzUsIDE5MSwgMjUwLCAxODcsIDgyLCA1LCAKLSAgICAyNTAsIDE4NywgODIsIDUsIDI1MywgMjQyLCA4MiwgNSwgMjE0LCAxMjgsIDgyLCAxLCAyMjAsIDE3NSwgNjEsIDgyLCAxLCAKLSAgICA2MSwgODIsIDEsIDI1NCwgMjMyLCA4MiwgMSwgNzIsIDgyLCAxLCAyMzYsIDI4LCA4MiwgMSwgNjksIDgyLCAxLCAyMTUsIAotICAgIDkyLCA4MiwgMSwgMTYxLCAxNDksIDgyLCAxLCAxNjEsIDE1MCwgODIsIDEsIDI1MCwgMTkwLCA3NCwgODIsIDEsIDIyMCwgCi0gICAgMTc1LCA3NCwgODIsIDEsIDc0LCA4MiwgMSwgMjU0LCAxMDgsIDgyLCAxLCAyNTAsIDE5MCwgNzUsIDgyLCAxLCAyMjAsIAotICAgIDE3NSwgNzUsIDgyLCAxLCA3NSwgODIsIDEsIDI1MywgMTA4LCA4MiwgMSwgMTgxLCA4MiwgMSwgMjM0LCAxMzgsIDgyLCAxLCAKLSAgICAyNDMsIDExMCwgODIsIDEsIDI0MiwgMjI1LCA4MiwgMSwgMjI5LCAxNTksIDgyLCAxLCAyNTAsIDIxOSwgODIsIDEsIDI1MCwgCi0gICAgOTIsIDgyLCAxLCAyMzUsIDEzOSwgODIsIDEsIDIzNSwgMTE1LCA4MiwgMSwgMjI4LCAyMywgODIsIDEsIDIxNiwgMTE1LCAKLSAgICA4MiwgMSwgMjE2LCAxMDUsIDgyLCAxLCAyNDgsIDg2LCA4MiwgMSwgMjQ4LCA3MCwgODIsIDEsIDIyOCwgMTk4LCA4MiwgMSwgCi0gICAgMjE4LCA1MiwgODIsIDEsIDIxNywgMTYxLCA4MiwgMSwgMjQ4LCAxNjQsIDgyLCAxLCAyNDcsIDIzMiwgODIsIDEsIDIwNSwgCi0gICAgODIsIDEsIDIyOCwgMTg5LCA4MiwgMSwgMTkzLCA4MiwgMSwgMjI2LCAyMywgODIsIDEsIDI1MiwgMTA3LCA4MiwgMSwgMjUxLCAKLSAgICAxOTUsIDgyLCAxLCAxODgsIDgyLCAxLCAxODYsIDgyLCAxLCAyMDMsIDgyLCAxLCAyMjMsIDgxLCA4MiwgMSwgMjMzLCAxNTcsIAotICAgIDgyLCAxLCAyMzIsIDIxMywgODIsIDEsIDIzMiwgMjEyLCA4MiwgMSwgMjE1LCAxLCA4MiwgMSwgMjIxLCAyNCwgODIsIDEsIAotICAgIDIxOSwgMTU3LCA4MiwgMSwgMjIyLCAyMDIsIDgyLCAxLCAxNTksIDgyLCAzMCwgNSwgMjI3LCA5OSwgODIsIDMwLCA1LCAKLSAgICAyMjcsIDQ3LCA4MiwgNSwgMjI4LCA2MCwgODIsIDUsIDI1MywgOTEsIDgyLCAzMCwgNSwgMjU0LCAyMzIsIDgyLCAzMCwgNSwgCi0gICAgNzIsIDgyLCAzMCwgNSwgMjM2LCAyOCwgODIsIDMwLCA1LCA2OSwgODIsIDMwLCA1LCAyMTUsIDkyLCA4MiwgMzAsIDUsIAotICAgIDE2MSwgMTQ5LCA4MiwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgODIsIDMwLCA1LCAyNTAsIDE5MCwgNzQsIDgyLCAzMCwgNSwgCi0gICAgMjIwLCAxNzUsIDc0LCA4MiwgMzAsIDUsIDc0LCA4MiwgMzAsIDUsIDI1NCwgMTA4LCA4MiwgMzAsIDUsIDI1MCwgMTkwLCAKLSAgICA3NSwgODIsIDMwLCA1LCAyMjAsIDE3NSwgNzUsIDgyLCAzMCwgNSwgNzUsIDgyLCAzMCwgNSwgMjUzLCAxMDgsIDgyLCA1LCAKLSAgICAyMTQsIDEzMywgODIsIDMwLCA1LCAyMjUsIDY2LCA3NCwgODIsIDMwLCA1LCAyNTMsIDg3LCA4MiwgMjI3LCA3MCwgODIsIAotICAgIDIxOSwgNTEsIDUsIDIxNSwgMTg1LCA4MiwgMjE5LCA1MSwgNSwgMjUzLCAyNDQsIDgyLCAyNDIsIDExNCwgMjU0LCAxNzQsIAotICAgIDgyLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDgyLCAzMCwgNSwgMjUwLCAxOTAsIDE4NCwgNzQsIDgyLCAzMCwgNSwgMjE1LCAKLSAgICAxODMsIDgyLCAzMCwgNSwgMjE1LCA5MSwgODIsIDEsIDIyNCwgMjMyLCA4MiwgMSwgMjM0LCAxMjEsIDgyLCAxLCAyNDIsIAotICAgIDIwMiwgODIsIDEsIDIxMiwgMTA5LCA4MiwgMSwgMjQ4LCA3NSwgODIsIDEsIDIyMywgMTkyLCA4MiwgMSwgMjQ0LCAxNjQsIAotICAgIDgyLCAxLCAyMTIsIDE2MCwgODIsIDEsIDE2MSwgMjIzLCA4MiwgODIsIDEsIDE2MSwgMjMyLCAyMTQsIDgyLCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDgyLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgODIsIDI0OCwgMTIzLCA4MiwgNTEsIDI0OCwgMTIzLCA4MiwgCi0gICAgMjEsIDIxMiwgNzksIDgyLCAyMSwgMTE2LCA4MiwgMjEsIDEwOSwgODIsIDIxLCAxNjYsIDgyLCAyMSwgMTYzLCA4MiwgMjEsIAotICAgIDE4MCwgODIsIDIxLCAxODksIDgyLCAyMSwgMTk4LCA4MiwgMjEsIDE5NSwgODIsIDIxLCAyMDAsIDgyLCAyNTQsIDE4MSwgCi0gICAgNTIsIDgyLCA1LCAxMjQsIDIxOSwgMjA1LCAyNDcsIDc0LCA4MiwgMSwgMjUwLCAxOTAsIDYxLCA4MiwgMSwgMjI3LCA5OSwgCi0gICAgODIsIDEsIDIyNywgNDcsIDgyLCAxLCAyNTMsIDg3LCA4MiwgMSwgMjE1LCAxODMsIDgyLCAxLCAyMTUsIDkxLCA4MiwgMSwgCi0gICAgMjEyLCA3NSwgODIsIDEsIDEwNywgMTg2LCA4MiwgMSwgMjQzLCA1LCA4MiwgMSwgMjM1LCA5OSwgODIsIDEsIDI0MiwgMTU2LCAKLSAgICAyMTksIDY5LCA4MiwgMSwgMjQ4LCA3NiwgODIsIDEsIDI1MiwgMzEsIDE0MCwgNSwgMjUwLCAxODcsIDE0MCwgNSwgMjUzLCAKLSAgICAyNDIsIDE0MCwgNSwgMjE0LCAxMjgsIDE0MCwgMSwgNjEsIDE0MCwgMSwgMjU0LCAyMzIsIDE0MCwgMSwgNzIsIDE0MCwgMSwgCi0gICAgMjM2LCAyOCwgMTQwLCAxLCA2OSwgMTQwLCAxLCAyMTUsIDkyLCAxNDAsIDEsIDE2MSwgMTQ5LCAxNDAsIDEsIDE2MSwgMTUwLCAKLSAgICAxNDAsIDEsIDc0LCAxNDAsIDEsIDI1NCwgMTA4LCAxNDAsIDEsIDc1LCAxNDAsIDEsIDI1MywgMTA4LCAxNDAsIDEsIDE4MSwgCi0gICAgMTQwLCAxLCAyMzQsIDEzOCwgMTQwLCAxLCAyNDMsIDExMCwgMTQwLCAxLCAyNDIsIDIyNSwgMTQwLCAxLCAyMjksIDE1OSwgCi0gICAgMTQwLCAxLCAyNTAsIDIxOSwgMTQwLCAxLCAyNTAsIDkyLCAxNDAsIDEsIDIzNSwgMTM5LCAxNDAsIDEsIDIzNSwgMTE1LCAKLSAgICAxNDAsIDEsIDIyOCwgMjMsIDE0MCwgMSwgMjE2LCAxMTUsIDE0MCwgMSwgMjE2LCAxMDUsIDE0MCwgMSwgMjQ4LCA4NiwgCi0gICAgMTQwLCAxLCAyNDgsIDcwLCAxNDAsIDEsIDIyOCwgMTk4LCAxNDAsIDEsIDIxOCwgNTIsIDE0MCwgMSwgMjE3LCAxNjEsIAotICAgIDE0MCwgMSwgMjQ4LCAxNjQsIDE0MCwgMSwgMjQ3LCAyMzIsIDE0MCwgMSwgMjA1LCAxNDAsIDEsIDE5MywgMTQwLCAxLCAKLSAgICAyMjYsIDIzLCAxNDAsIDEsIDI1MiwgMTA3LCAxNDAsIDEsIDI1MSwgMTk1LCAxNDAsIDEsIDE4OCwgMTQwLCAxLCAxODYsIAotICAgIDE0MCwgMSwgMjAzLCAxNDAsIDEsIDIzMywgMTU3LCAxNDAsIDEsIDIyMSwgMjQsIDE0MCwgMSwgMjE5LCAxNTcsIDE0MCwgMSwgCi0gICAgMjIyLCAyMDIsIDE0MCwgMSwgMTU5LCAxNDAsIDUsIDIyOCwgNjAsIDE0MCwgNSwgMjUzLCA5MSwgMTQwLCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDE0MCwgMzAsIDUsIDcyLCAxNDAsIDMwLCA1LCAyMzYsIDI4LCAxNDAsIDMwLCA1LCA2OSwgMTQwLCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMTQwLCAzMCwgNSwgMTYxLCAxNDksIDE0MCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTQwLCAzMCwgNSwgNzQsIAotICAgIDE0MCwgMzAsIDUsIDI1NCwgMTA4LCAxNDAsIDMwLCA1LCA3NSwgMTQwLCAzMCwgNSwgMjUzLCAxMDgsIDE0MCwgNSwgMjE0LCAKLSAgICAxMzMsIDE0MCwgMSwgMjM0LCAxMzAsIDIxOCwgNTIsIDE0MCwgMjUzLCAxMDksIDIzMywgNDcsIDc3LCAxNDAsIDEsIDIyMywgCi0gICAgODEsIDE0MCwgMSwgMjIzLCAxOTIsIDE0MCwgMSwgMjEyLCAxNjAsIDE0MCwgMSwgMTYxLCAyMjMsIDgyLCAxNDAsIDEsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE0MCwgMzAsIDUsIDE2MSwgMTUwLCAxNDAsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNDAsIDIxLCAKLSAgICAyMTIsIDc5LCAxNDAsIDIxLCAxMTYsIDE0MCwgMjEsIDEwOSwgMTQwLCAyMSwgMTY2LCAxNDAsIDIxLCAxNjMsIDE0MCwgMjEsIAotICAgIDE4MCwgMTQwLCAyMSwgMTg5LCAxNDAsIDIxLCAxOTgsIDE0MCwgMjEsIDE5NSwgMTQwLCAyMSwgMjAwLCAxNDAsIDEsIDIyNCwgCi0gICAgNzcsIDIsIDIzMSwgMzcsIDI0NywgMjA2LCAxNDAsIDEsIDIyNCwgNzcsIDIsIDIzMiwgMTYzLCAyNDcsIDIwNiwgMTQwLCAKLSAgICAyMjMsIDI5LCA3NywgMTQwLCAyMjMsIDI5LCA1MiwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxMTYsIDE0MCwgMjQ5LCAzOSwgCi0gICAgMjI4LCA1MywgMTA5LCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDE2NiwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxNjMsIAotICAgIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTIyLCAyMzMsIDQwLCAyMTcsIDE1NCwgMjE3LCAxNDksIDI0NywgMjU1LCAxNDAsIAotICAgIDI0OSwgMzksIDI0OCwgMCwgMjIwLCA0NywgMTQwLCAyMzUsIDE1OSwgMTQwLCAyNDMsIDc5LCA3NywgMTczLCA1LCAyNTQsIAotICAgIDE1OSwgMjUxLCAxNjYsIDE3MywgNSwgMjUxLCAxNjYsIDE3MywgNSwgMjE0LCAxMjgsIDE3MywgMSwgNjEsIDE3MywgMSwgCi0gICAgMjU0LCAyMzIsIDE3MywgMSwgNzIsIDE3MywgMSwgMjM2LCAyOCwgMTczLCAxLCA2OSwgMTczLCAxLCAyMTUsIDkyLCAxNzMsIAotICAgIDEsIDI0NSwgMTY1LCAxNzMsIDEsIDI1NCwgMTA4LCAxNzMsIDEsIDIyNywgNDksIDE3MywgMSwgMjUzLCAxMDgsIDE3MywgMSwgCi0gICAgMTgxLCAxNzMsIDEsIDIzNCwgMTM4LCAxNzMsIDEsIDI0MywgMTEwLCAxNzMsIDEsIDI0MiwgMjI1LCAxNzMsIDEsIDIyOSwgCi0gICAgMTU5LCAxNzMsIDEsIDI1MCwgMjE5LCAxNzMsIDEsIDI1MCwgOTIsIDE3MywgMSwgMjM1LCAxMzksIDE3MywgMSwgMjM1LCAKLSAgICAxMTUsIDE3MywgMSwgMjI4LCAyMywgMTczLCAxLCAyMTYsIDExNSwgMTczLCAxLCAyMTYsIDEwNSwgMTczLCAxLCAyNDgsIAotICAgIDg2LCAxNzMsIDEsIDI0OCwgNzAsIDE3MywgMSwgMjI4LCAxOTgsIDE3MywgMSwgMjE4LCA1MiwgMTczLCAxLCAyMTcsIDE2MSwgCi0gICAgMTczLCAxLCAyNDgsIDE2NCwgMTczLCAxLCAyNDcsIDIzMiwgMTczLCAxLCAyMDUsIDE3MywgMSwgMTkzLCAxNzMsIDEsIAotICAgIDIyNiwgMjMsIDE3MywgMSwgMjUyLCAxMDcsIDE3MywgMSwgMjUxLCAxOTUsIDE3MywgMSwgMTg4LCAxNzMsIDEsIDE4NiwgCi0gICAgMTczLCAxLCAyMDMsIDE3MywgMSwgMjMzLCAxNTcsIDE3MywgMSwgMjMyLCAyMTMsIDE3MywgMSwgMjE1LCAxLCAxNzMsIDEsIAotICAgIDIyMSwgMjQsIDE3MywgMSwgMjIyLCAyMDIsIDE3MywgMSwgMTU5LCAxNzMsIDUsIDIyOCwgNjAsIDE3MywgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAxNzMsIDMwLCA1LCA3MiwgMTczLCAzMCwgNSwgMjM2LCAyOCwgMTczLCAzMCwgNSwgNjksIDE3MywgMzAsIDUsIAotICAgIDIxNSwgOTIsIDE3MywgMzAsIDUsIDI0NSwgMTY1LCAxNzMsIDMwLCA1LCAyNTQsIDEwOCwgMTczLCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTczLCAzMCwgNSwgMjUzLCAxMDgsIDE3MywgNSwgMjE0LCAxMzMsIDE3MywgNSwgMjE1LCAxODcsIDE3MywgMSwgMjM0LCAKLSAgICAxMjEsIDE3MywgMSwgMjQyLCAyMDIsIDE3MywgMSwgMjEyLCAxMDksIDE3MywgMSwgMjIzLCA4MSwgMTczLCAxLCAyNDQsIAotICAgIDE2NCwgMTczLCAyMSwgMjEyLCA3OSwgMTczLCAyMSwgMTE2LCAxNzMsIDIxLCAxMDksIDE3MywgMjEsIDE2NiwgMTczLCAyMSwgCi0gICAgMTYzLCAxNzMsIDIxLCAxODAsIDE3MywgMjEsIDE4OSwgMTczLCAyMSwgMTk4LCAxNzMsIDIxLCAxOTUsIDE3MywgMjEsIAotICAgIDIwMCwgMTczLCAyMTcsIDI3LCAxNzMsIDI1NCwgMTU4LCAxNzMsIDIzNSwgMTc2LCAxNzMsIDIxNSwgMTE3LCAxNzMsIDI0NSwgCi0gICAgMTM4LCAyMjcsIDU0LCAxNzMsIDUsIDIxMywgNjcsIDE2NCwgNSwgMjUwLCAxODcsIDE2NCwgNSwgMjUzLCAyNDIsIDE2NCwgCi0gICAgNSwgMjE0LCAxMjgsIDE2NCwgMSwgNjEsIDE2NCwgMSwgMjU0LCAyMzIsIDE2NCwgMSwgNzIsIDE2NCwgMSwgMjM2LCAyOCwgCi0gICAgMTY0LCAxLCA2OSwgMTY0LCAxLCAyMTUsIDkyLCAxNjQsIDEsIDE2MSwgMTQ5LCAxNjQsIDEsIDE2MSwgMTUwLCAxNjQsIDMwLCAKLSAgICAyNTAsIDE5MCwgNzQsIDE2NCwgMSwgNzQsIDE2NCwgMSwgMjU0LCAxMDgsIDE2NCwgMzAsIDI1MCwgMTkwLCA3NSwgMTY0LCAKLSAgICAxLCA3NSwgMTY0LCAxLCAyNTMsIDEwOCwgMTY0LCAxLCAxODEsIDE2NCwgMSwgMjM0LCAxMzgsIDE2NCwgMSwgMjQzLCAxMTAsIAotICAgIDE2NCwgMSwgMjQyLCAyMjUsIDE2NCwgMSwgMjI5LCAxNTksIDE2NCwgMSwgMjUwLCAyMTksIDE2NCwgMSwgMjUwLCA5MiwgCi0gICAgMTY0LCAxLCAyMzUsIDEzOSwgMTY0LCAxLCAyMzUsIDExNSwgMTY0LCAxLCAyMjgsIDIzLCAxNjQsIDEsIDIxNiwgMTE1LCAKLSAgICAxNjQsIDEsIDIxNiwgMTA1LCAxNjQsIDEsIDI0OCwgODYsIDE2NCwgMSwgMjQ4LCA3MCwgMTY0LCAxLCAyMjgsIDE5OCwgCi0gICAgMTY0LCAxLCAyMTgsIDUyLCAxNjQsIDEsIDIxNywgMTYxLCAxNjQsIDEsIDI0OCwgMTY0LCAxNjQsIDEsIDI0NywgMjMyLCAKLSAgICAxNjQsIDEsIDIwNSwgMTY0LCAxLCAxOTMsIDE2NCwgMSwgMjI2LCAyMywgMTY0LCAxLCAyNTIsIDEwNywgMTY0LCAxLCAyNTEsIAotICAgIDE5NSwgMTY0LCAxLCAxODgsIDE2NCwgMSwgMTg2LCAxNjQsIDEsIDIwMywgMTY0LCAxLCAyMzMsIDE1NywgMTY0LCAxLCAKLSAgICAyMzIsIDIxMywgMTY0LCAxLCAyMTUsIDEsIDE2NCwgMSwgMjIxLCAyNCwgMTY0LCAxLCAyMTksIDE1NywgMTY0LCAxLCAyMjIsIAotICAgIDIwMiwgMTY0LCAxLCAxNTksIDE2NCwgNSwgMjI4LCA2MCwgMTY0LCA1LCAyNTMsIDkxLCAxNjQsIDMwLCA1LCAyNTQsIDIzMiwgCi0gICAgMTY0LCAzMCwgNSwgNzIsIDE2NCwgMzAsIDUsIDIzNiwgMjgsIDE2NCwgMzAsIDUsIDY5LCAxNjQsIDMwLCA1LCAyMTUsIDkyLCAKLSAgICAxNjQsIDMwLCA1LCAxNjEsIDE0OSwgMTY0LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNjQsIDMwLCA1LCAyNTAsIDE5MCwgNzQsIAotICAgIDE2NCwgMzAsIDUsIDc0LCAxNjQsIDMwLCA1LCAyNTQsIDEwOCwgMTY0LCAzMCwgNSwgMjUwLCAxOTAsIDc1LCAxNjQsIDMwLCAKLSAgICA1LCA3NSwgMTY0LCAzMCwgNSwgMjUzLCAxMDgsIDE2NCwgNSwgMjE0LCAxMzMsIDE2NCwgMjI3LCA3MCwgMTY0LCAxLCAxNjEsIAotICAgIDIyMywgODIsIDE2NCwgMSwgMTYxLCAyMzIsIDIxNCwgMTY0LCAzMCwgNSwgMTYxLCAxNTAsIDE2NCwgMzAsIDUsIDE2MSwgCi0gICAgMjMyLCAyMTQsIDE2NCwgMjEsIDIxMiwgNzksIDE2NCwgMjEsIDExNiwgMTY0LCAyMSwgMTA5LCAxNjQsIDIxLCAxNjYsIAotICAgIDE2NCwgMjEsIDE2MywgMTY0LCAyMSwgMTgwLCAxNjQsIDIxLCAxODksIDE2NCwgMjEsIDE5OCwgMTY0LCAyMSwgMTk1LCAKLSAgICAxNjQsIDIxLCAyMDAsIDE2NCwgMjIzLCAyOSwgNTIsIDE0NywgNSwgMjUwLCAxODcsIDE0NywgNSwgMjUzLCAyNDIsIDE0NywgCi0gICAgNSwgMjE0LCAxMjgsIDE0NywgMSwgNjEsIDE0NywgMSwgMjU0LCAyMzIsIDE0NywgMSwgNzIsIDE0NywgMSwgMjM2LCAyOCwgCi0gICAgMTQ3LCAxLCA2OSwgMTQ3LCAxLCAyMTUsIDkyLCAxNDcsIDEsIDE2MSwgMTQ5LCAxNDcsIDEsIDE2MSwgMTUwLCAxNDcsIDEsIAotICAgIDc0LCAxNDcsIDEsIDI1NCwgMTA4LCAxNDcsIDEsIDc1LCAxNDcsIDEsIDI1MywgMTA4LCAxNDcsIDEsIDE4MSwgMTQ3LCAxLCAKLSAgICAyMzQsIDEzOCwgMTQ3LCAxLCAyNDMsIDExMCwgMTQ3LCAxLCAyNDIsIDIyNSwgMTQ3LCAxLCAyMjksIDE1OSwgMTQ3LCAxLCAKLSAgICAyNTAsIDIxOSwgMTQ3LCAxLCAyNTAsIDkyLCAxNDcsIDEsIDIzNSwgMTM5LCAxNDcsIDEsIDIzNSwgMTE1LCAxNDcsIDEsIAotICAgIDIyOCwgMjMsIDE0NywgMSwgMjE2LCAxMTUsIDE0NywgMSwgMjE2LCAxMDUsIDE0NywgMSwgMjQ4LCA4NiwgMTQ3LCAxLCAKLSAgICAyNDgsIDcwLCAxNDcsIDEsIDIyOCwgMTk4LCAxNDcsIDEsIDIxOCwgNTIsIDE0NywgMSwgMjE3LCAxNjEsIDE0NywgMSwgCi0gICAgMjQ4LCAxNjQsIDE0NywgMSwgMjQ3LCAyMzIsIDE0NywgMSwgMjA1LCAxNDcsIDEsIDE5MywgMTQ3LCAxLCAyMjYsIDIzLCAKLSAgICAxNDcsIDEsIDI1MiwgMTA3LCAxNDcsIDEsIDI1MSwgMTk1LCAxNDcsIDEsIDE4OCwgMTQ3LCAxLCAxODYsIDE0NywgMSwgCi0gICAgMjAzLCAxNDcsIDEsIDIzMywgMTU3LCAxNDcsIDEsIDIzMiwgMjEzLCAxNDcsIDEsIDIxNSwgMSwgMTQ3LCAxLCAyMjEsIDI0LCAKLSAgICAxNDcsIDEsIDIxOSwgMTU3LCAxNDcsIDEsIDIyMiwgMjAyLCAxNDcsIDEsIDE1OSwgMTQ3LCA1LCAyMjgsIDYwLCAxNDcsIDUsIAotICAgIDI1MywgOTEsIDE0NywgMzAsIDUsIDI1NCwgMjMyLCAxNDcsIDMwLCA1LCA3MiwgMTQ3LCAzMCwgNSwgMjM2LCAyOCwgMTQ3LCAKLSAgICAzMCwgNSwgNjksIDE0NywgMzAsIDUsIDIxNSwgOTIsIDE0NywgMzAsIDUsIDE2MSwgMTQ5LCAxNDcsIDMwLCA1LCAxNjEsIAotICAgIDIyMywgODIsIDE0NywgMzAsIDUsIDc0LCAxNDcsIDMwLCA1LCAyNTQsIDEwOCwgMTQ3LCAzMCwgNSwgNzUsIDE0NywgMzAsIAotICAgIDUsIDI1MywgMTA4LCAxNDcsIDUsIDIxNCwgMTMzLCAxNDcsIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTQ3LCAyNTMsIDEwOSwgCi0gICAgMjMzLCA0NywgNzcsIDE0NywgMSwgMjIzLCA4MSwgMTQ3LCAxLCAyMjMsIDE5MiwgMTQ3LCAxLCAyMTIsIDE2MCwgMTQ3LCAxLCAKLSAgICAxNjEsIDIyMywgODIsIDE0NywgMSwgMTYxLCAyMzIsIDIxNCwgMTQ3LCAzMCwgNSwgMTYxLCAxNTAsIDE0NywgMzAsIDUsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE0NywgMjEsIDIxMiwgNzksIDE0NywgMjEsIDExNiwgMTQ3LCAyMSwgMTA5LCAxNDcsIDIxLCAKLSAgICAxNjYsIDE0NywgMjEsIDE2MywgMTQ3LCAyMSwgMTgwLCAxNDcsIDIxLCAxODksIDE0NywgMjEsIDE5OCwgMTQ3LCAyMSwgCi0gICAgMTk1LCAxNDcsIDIxLCAyMDAsIDE0NywgMjM1LCAxNTksIDE0NywgMSwgMjE0LCA0OSwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAKLSAgICAyMjQsIDE2NiwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDE0NywgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDE0NywgCi0gICAgMjQzLCAyMjgsIDEyMiwgMjIwLCA0NSwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAyNDUsIDE0NSwgMTQ3LCAyNDMsIDIyOCwgMTMzLCAKLSAgICAyMjAsIDQ0LCAxNzgsIDUsIDI1MywgMjQyLCAxNzgsIDUsIDIxNCwgMTI4LCAxNzgsIDEsIDYxLCAxNzgsIDEsIDI1NCwgCi0gICAgMjMyLCAxNzgsIDEsIDcyLCAxNzgsIDEsIDIzNiwgMjgsIDE3OCwgMSwgNjksIDE3OCwgMSwgMjE1LCA5MiwgMTc4LCAxLCAKLSAgICA3NCwgMTc4LCAxLCAyNDUsIDE2NSwgMTc4LCAxLCAyNTQsIDEwOCwgMTc4LCAxLCA3NSwgMTc4LCAxLCAyMjcsIDQ5LCAxNzgsIAotICAgIDEsIDI1MywgMTA4LCAxNzgsIDEsIDE4MSwgMTc4LCAxLCAyMjksIDE1OSwgMTc4LCAxLCAyNTAsIDIxOSwgMTc4LCAxLCAKLSAgICAyMzUsIDEzOSwgMTc4LCAxLCAyMjgsIDIzLCAxNzgsIDEsIDIxNiwgMTE1LCAxNzgsIDEsIDIyOCwgMTk4LCAxNzgsIDEsIAotICAgIDIxOCwgNTIsIDE3OCwgMSwgMjA1LCAxNzgsIDEsIDIyOCwgMTg5LCAxNzgsIDEsIDE5MywgMTc4LCAxLCAxODgsIDE3OCwgMSwgCi0gICAgMTg2LCAxNzgsIDEsIDIwMywgMTc4LCAxLCAyMjMsIDgxLCAxNzgsIDEsIDIzMywgMTU3LCAxNzgsIDEsIDIzMiwgMjEzLCAKLSAgICAxNzgsIDEsIDIzMiwgMjEyLCAxNzgsIDEsIDIxNSwgMSwgMTc4LCAxLCAyMjEsIDI0LCAxNzgsIDEsIDIxOSwgMTU3LCAxNzgsIAotICAgIDEsIDIyMiwgMjAyLCAxNzgsIDEsIDE1OSwgMTc4LCAzMCwgNSwgMjU0LCAyMzIsIDE3OCwgMzAsIDUsIDcyLCAxNzgsIDMwLCAKLSAgICA1LCAyMzYsIDI4LCAxNzgsIDMwLCA1LCA2OSwgMTc4LCAzMCwgNSwgMjE1LCA5MiwgMTc4LCAzMCwgNSwgNzQsIDE3OCwgMzAsIAotICAgIDUsIDI0NSwgMTY1LCAxNzgsIDMwLCA1LCAyNTQsIDEwOCwgMTc4LCAzMCwgNSwgNzUsIDE3OCwgMzAsIDUsIDIyNywgNDksIAotICAgIDE3OCwgMzAsIDUsIDI1MywgMTA4LCAxNzgsIDUsIDIxNCwgMTMzLCAxNzgsIDIyNywgNzAsIDE3OCwgMjUzLCAxMDksIDIzMywgCi0gICAgNDcsIDc3LCAxNzgsIDIxLCAyMTIsIDc5LCAxNzgsIDIxLCAxMTYsIDE3OCwgMjEsIDEwOSwgMTc4LCAyMSwgMTY2LCAxNzgsIAotICAgIDIxLCAxNjMsIDE3OCwgMjEsIDE4MCwgMTc4LCAyMSwgMTg5LCAxNzgsIDIxLCAxOTgsIDE3OCwgMjEsIDE5NSwgMTc4LCAyMSwgCi0gICAgMjAwLCAxNzgsIDUwLCAyMTcsIDIwMCwgMTc4LCA1MCwgMTIyLCAyNDAsIDIwMCwgMTc4LCA1MCwgMTIyLCAyMTcsIDEwMCwgCi0gICAgMTc4LCAyNDgsIDkyLCA1MiwgMTc4LCAyMzAsIDIwNSwgNTIsIDE3OCwgMjEzLCAzNiwgNTIsIDE3OCwgMjQ4LCAzOCwgNTIsIAotICAgIDE3OCwgMjQ5LCA3OSwgNTIsIDE3OCwgMjUzLCAxNTMsIDc4LCA1MiwgMTc4LCAyMjMsIDI5LCA1MiwgMTc4LCA1MCwgNTIsIAotICAgIDEzOSwgNSwgMjUwLCAxODcsIDEzOSwgNSwgMjUzLCAyNDIsIDEzOSwgNSwgMjE0LCAxMjgsIDEzOSwgMSwgNjEsIDEzOSwgMSwgCi0gICAgMjU0LCAyMzIsIDEzOSwgMSwgNzIsIDEzOSwgMSwgMjM2LCAyOCwgMTM5LCAxLCA2OSwgMTM5LCAxLCAyMTUsIDkyLCAxMzksIAotICAgIDEsIDE2MSwgMTQ5LCAxMzksIDEsIDE2MSwgMTUwLCAxMzksIDEsIDc0LCAxMzksIDEsIDI0NSwgMTY1LCAxMzksIDEsIDI1NCwgCi0gICAgMTA4LCAxMzksIDEsIDc1LCAxMzksIDEsIDIyNywgNDksIDEzOSwgMSwgMjUzLCAxMDgsIDEzOSwgMSwgMTgxLCAxMzksIDEsIAotICAgIDIzNCwgMTM4LCAxMzksIDEsIDI0MywgMTEwLCAxMzksIDEsIDI0MiwgMjI1LCAxMzksIDEsIDIyOSwgMTU5LCAxMzksIDEsIAotICAgIDI1MCwgMjE5LCAxMzksIDEsIDI1MCwgOTIsIDEzOSwgMSwgMjM1LCAxMzksIDEzOSwgMSwgMjM1LCAxMTUsIDEzOSwgMSwgCi0gICAgMjI4LCAyMywgMTM5LCAxLCAyMTYsIDExNSwgMTM5LCAxLCAyMTYsIDEwNSwgMTM5LCAxLCAyNDgsIDg2LCAxMzksIDEsIAotICAgIDI0OCwgNzAsIDEzOSwgMSwgMjI4LCAxOTgsIDEzOSwgMSwgMjE4LCA1MiwgMTM5LCAxLCAyMTcsIDE2MSwgMTM5LCAxLCAKLSAgICAyNDgsIDE2NCwgMTM5LCAxLCAyNDcsIDIzMiwgMTM5LCAxLCAyMDUsIDEzOSwgMSwgMTkzLCAxMzksIDEsIDIyNiwgMjMsIAotICAgIDEzOSwgMSwgMjUyLCAxMDcsIDEzOSwgMSwgMjUxLCAxOTUsIDEzOSwgMSwgMTg4LCAxMzksIDEsIDE4NiwgMTM5LCAxLCAKLSAgICAyMDMsIDEzOSwgMSwgMjIzLCA4MSwgMTM5LCAxLCAyMzMsIDE1NywgMTM5LCAxLCAyMzIsIDIxMywgMTM5LCAxLCAyMTUsIDEsIAotICAgIDEzOSwgMSwgMjIxLCAyNCwgMTM5LCAxLCAyMTksIDE1NywgMTM5LCAxLCAyMjIsIDIwMiwgMTM5LCAxLCAxNTksIDEzOSwgNSwgCi0gICAgMjUzLCA5MSwgMTM5LCAzMCwgNSwgMjU0LCAyMzIsIDEzOSwgMzAsIDUsIDcyLCAxMzksIDMwLCA1LCAyMzYsIDI4LCAxMzksIAotICAgIDMwLCA1LCA2OSwgMTM5LCAzMCwgNSwgMjE1LCA5MiwgMTM5LCAzMCwgNSwgMTYxLCAxNDksIDEzOSwgMzAsIDUsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTM5LCAzMCwgNSwgNzQsIDEzOSwgMzAsIDUsIDI0NSwgMTY1LCAxMzksIDMwLCA1LCAyNTQsIDEwOCwgMTM5LCAKLSAgICAzMCwgNSwgNzUsIDEzOSwgMzAsIDUsIDIyNywgNDksIDEzOSwgMzAsIDUsIDI1MywgMTA4LCAxMzksIDUsIDIxNCwgMTMzLCAKLSAgICAxMzksIDIzMywgNDcsIDc3LCAxMzksIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTM5LCAxLCAyMTYsIDE0MSwgMTM5LCAxLCAKLSAgICAyNDUsIDI0OSwgMTM5LCAxLCAxNjEsIDIyMywgODIsIDEzOSwgMSwgMTYxLCAyMzIsIDIxNCwgMTM5LCAzMCwgNSwgMTYxLCAKLSAgICAxNTAsIDEzOSwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDEzOSwgMjEsIDIxMiwgNzksIDEzOSwgMjEsIDExNiwgMTM5LCAyMSwgCi0gICAgMTA5LCAxMzksIDIxLCAxNjYsIDEzOSwgMjEsIDE2MywgMTM5LCAyMSwgMTgwLCAxMzksIDIxLCAxODksIDEzOSwgMjEsIAotICAgIDE5OCwgMTM5LCAyMSwgMTk1LCAxMzksIDIxLCAyMDAsIDEzOSwgMjQzLCAyMjgsIDIxLCAyMTIsIDgwLCAzMSwgMjI3LCAKLSAgICAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTIyLCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCAKLSAgICA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTE3LCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIAotICAgIDI0MywgMjI4LCAyMSwgMTMzLCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgCi0gICAgMTIyLCAzMSwgMjQ1LCA5LCAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDExNywgMzEsIDI0NSwgOSwgCi0gICAgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMzMsIDMxLCAyNDUsIDksIDIyNSwgMTAzLCA2NSwgMTYzLCAKLSAgICAxMzksIDUsIDIxNiwgNDksIDE1NSwgNSwgMjUzLCAyNDIsIDE1NSwgNSwgMjE0LCAxMjgsIDE1NSwgMSwgNjEsIDE1NSwgMSwgCi0gICAgMjU0LCAyMzIsIDE1NSwgMSwgNzIsIDE1NSwgMSwgMjM2LCAyOCwgMTU1LCAxLCA2OSwgMTU1LCAxLCAyMTUsIDkyLCAxNTUsIAotICAgIDEsIDE2MSwgMTQ5LCAxNTUsIDEsIDE2MSwgMTUwLCAxNTUsIDEsIDc0LCAxNTUsIDEsIDI0NSwgMTY1LCAxNTUsIDEsIDI1NCwgCi0gICAgMTA4LCAxNTUsIDEsIDc1LCAxNTUsIDEsIDIyNywgNDksIDE1NSwgMSwgMjUzLCAxMDgsIDE1NSwgMSwgMTgxLCAxNTUsIDEsIAotICAgIDIzNCwgMTM4LCAxNTUsIDEsIDI0MywgMTEwLCAxNTUsIDEsIDI0MiwgMjI1LCAxNTUsIDEsIDIyOSwgMTU5LCAxNTUsIDEsIAotICAgIDI1MCwgMjE5LCAxNTUsIDEsIDI1MCwgOTIsIDE1NSwgMSwgMjM1LCAxMzksIDE1NSwgMSwgMjM1LCAxMTUsIDE1NSwgMSwgCi0gICAgMjI4LCAyMywgMTU1LCAxLCAyMTYsIDExNSwgMTU1LCAxLCAyMTYsIDEwNSwgMTU1LCAxLCAyNDgsIDg2LCAxNTUsIDEsIAotICAgIDI0OCwgNzAsIDE1NSwgMSwgMjI4LCAxOTgsIDE1NSwgMSwgMjE4LCA1MiwgMTU1LCAxLCAyMTcsIDE2MSwgMTU1LCAxLCAKLSAgICAyNDgsIDE2NCwgMTU1LCAxLCAyNDcsIDIzMiwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMTkzLCAxNTUsIDEsIDIyNiwgMjMsIAotICAgIDE1NSwgMSwgMjUyLCAxMDcsIDE1NSwgMSwgMjUxLCAxOTUsIDE1NSwgMSwgMTg4LCAxNTUsIDEsIDE4NiwgMTU1LCAxLCAKLSAgICAyMDMsIDE1NSwgMSwgMjIzLCA4MSwgMTU1LCAxLCAyMzMsIDE1NywgMTU1LCAxLCAyMzIsIDIxMywgMTU1LCAxLCAyMTUsIDEsIAotICAgIDE1NSwgMSwgMjIxLCAyNCwgMTU1LCAxLCAyMTksIDE1NywgMTU1LCAxLCAyMjIsIDIwMiwgMTU1LCAxLCAxNTksIDE1NSwgNSwgCi0gICAgMjI4LCA2MCwgMTU1LCA1LCAyNTMsIDkxLCAxNTUsIDMwLCA1LCAyNTQsIDIzMiwgMTU1LCAzMCwgNSwgNzIsIDE1NSwgMzAsIAotICAgIDUsIDIzNiwgMjgsIDE1NSwgMzAsIDUsIDY5LCAxNTUsIDMwLCA1LCAyMTUsIDkyLCAxNTUsIDMwLCA1LCAxNjEsIDE0OSwgCi0gICAgMTU1LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNTUsIDMwLCA1LCA3NCwgMTU1LCAzMCwgNSwgMjQ1LCAxNjUsIDE1NSwgMzAsIAotICAgIDUsIDI1NCwgMTA4LCAxNTUsIDMwLCA1LCA3NSwgMTU1LCAzMCwgNSwgMjI3LCA0OSwgMTU1LCAzMCwgNSwgMjUzLCAxMDgsIAotICAgIDE1NSwgNSwgMjE0LCAxMzMsIDE1NSwgMjMzLCA0NywgNzcsIDE1NSwgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxNTUsIDEsIAotICAgIDI0NCwgMTY0LCAxNTUsIDEsIDE2MSwgMjIzLCA4MiwgMTU1LCAxLCAxNjEsIDIzMiwgMjE0LCAxNTUsIDMwLCA1LCAxNjEsIAotICAgIDE1MCwgMTU1LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTU1LCAyMSwgMjEyLCA3OSwgMTU1LCAyMSwgMTE2LCAxNTUsIDIxLCAKLSAgICAxMDksIDE1NSwgMjEsIDE2NiwgMTU1LCAyMSwgMTYzLCAxNTUsIDIxLCAxODAsIDE1NSwgMjEsIDE4OSwgMTU1LCAyMSwgCi0gICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCA1LCAyMzUsIDEwNCwgMTU1LCA1LCAyMTUsIDEzMiwgMTMwLCAKLSAgICA1LCAyNTMsIDI0MiwgMTMwLCA1LCAyMTQsIDEyOCwgMTMwLCAxLCA2MSwgMTMwLCAxLCAyNTQsIDIzMiwgMTMwLCAxLCA3MiwgCi0gICAgMTMwLCAxLCAyMzYsIDI4LCAxMzAsIDEsIDY5LCAxMzAsIDEsIDIxNSwgOTIsIDEzMCwgMSwgMTYxLCAxNDksIDEzMCwgMSwgCi0gICAgMTYxLCAxNTAsIDEzMCwgMSwgNzQsIDEzMCwgMSwgMjQ1LCAxNjUsIDEzMCwgMSwgMjU0LCAxMDgsIDEzMCwgMSwgNzUsIAotICAgIDEzMCwgMSwgMjI3LCA0OSwgMTMwLCAxLCAyNTMsIDEwOCwgMTMwLCAxLCAxODEsIDEzMCwgMSwgMjM0LCAxMzgsIDEzMCwgMSwgCi0gICAgMjQzLCAxMTAsIDEzMCwgMSwgMjQyLCAyMjUsIDEzMCwgMSwgMjI5LCAxNTksIDEzMCwgMSwgMjUwLCAyMTksIDEzMCwgMSwgCi0gICAgMjUwLCA5MiwgMTMwLCAxLCAyMzUsIDEzOSwgMTMwLCAxLCAyMzUsIDExNSwgMTMwLCAxLCAyMjgsIDIzLCAxMzAsIDEsIAotICAgIDIxNiwgMTE1LCAxMzAsIDEsIDIxNiwgMTA1LCAxMzAsIDEsIDI0OCwgODYsIDEzMCwgMSwgMjQ4LCA3MCwgMTMwLCAxLCAKLSAgICAyMjgsIDE5OCwgMTMwLCAxLCAyMTgsIDUyLCAxMzAsIDEsIDIxNywgMTYxLCAxMzAsIDEsIDI0OCwgMTY0LCAxMzAsIDEsIAotICAgIDI0NywgMjMyLCAxMzAsIDEsIDIwNSwgMTMwLCAxLCAyMjgsIDE4OSwgMTMwLCAxLCAxOTMsIDEzMCwgMSwgMjI2LCAyMywgCi0gICAgMTMwLCAxLCAyNTIsIDEwNywgMTMwLCAxLCAyNTEsIDE5NSwgMTMwLCAxLCAxODgsIDEzMCwgMSwgMTg2LCAxMzAsIDEsIAotICAgIDIwMywgMTMwLCAxLCAyMjMsIDgxLCAxMzAsIDEsIDIzMywgMTU3LCAxMzAsIDEsIDIzMiwgMjEzLCAxMzAsIDEsIDIzMiwgCi0gICAgMjEyLCAxMzAsIDEsIDIxNSwgMSwgMTMwLCAxLCAyMjEsIDI0LCAxMzAsIDEsIDIxOSwgMTU3LCAxMzAsIDEsIDIyMiwgMjAyLCAKLSAgICAxMzAsIDEsIDE1OSwgMTMwLCAxLCAyMTYsIDg4LCAxMzAsIDUsIDI1MywgOTEsIDEzMCwgMzAsIDUsIDI1NCwgMjMyLCAxMzAsIAotICAgIDMwLCA1LCA3MiwgMTMwLCAzMCwgNSwgMjM2LCAyOCwgMTMwLCAzMCwgNSwgNjksIDEzMCwgMzAsIDUsIDIxNSwgOTIsIDEzMCwgCi0gICAgMzAsIDUsIDE2MSwgMTQ5LCAxMzAsIDMwLCA1LCAxNjEsIDIyMywgODIsIDEzMCwgMzAsIDUsIDc0LCAxMzAsIDMwLCA1LCAKLSAgICAyNDUsIDE2NSwgMTMwLCAzMCwgNSwgMjU0LCAxMDgsIDEzMCwgMzAsIDUsIDc1LCAxMzAsIDMwLCA1LCAyMjcsIDQ5LCAxMzAsIAotICAgIDMwLCA1LCAyNTMsIDEwOCwgMTMwLCA1LCAyMTQsIDEzMywgMTMwLCAxLCA2MiwgMjIzLCAyMjUsIDEzMCwgMjUzLCAxMDksIAotICAgIDIzMywgNDcsIDc3LCAxMzAsIDEsIDE2MSwgMjIzLCA4MiwgMTMwLCAxLCAxNjEsIDIzMiwgMjE0LCAxMzAsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgMTMwLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTMwLCAyMSwgMjEyLCA3OSwgMTMwLCAyMSwgMTE2LCAxMzAsIAotICAgIDIxLCAxMDksIDEzMCwgMjEsIDE2NiwgMTMwLCAyMSwgMTYzLCAxMzAsIDIxLCAxODAsIDEzMCwgMjEsIDE4OSwgMTMwLCAyMSwgCi0gICAgMTk4LCAxMzAsIDIxLCAxOTUsIDEzMCwgMjEsIDIwMCwgMTMwLCA1MCwgMjE3LCAyMDAsIDEzMCwgNTAsIDEyMiwgMjQwLCAKLSAgICAyMDAsIDEzMCwgNTAsIDEyMiwgMjE3LCAxMDAsIDEzMCwgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDEzMCwgMjQzLCAyMjgsIAotICAgIDEyMiwgMjQyLCA5LCAxMzAsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAxMzAsIDI0OCwgOTYsIDc3LCAxMzAsIDEsIDI1MCwgCi0gICAgMzYsIDIyOCwgMTk5LCAxMzAsIDEsIDI1MCwgMzYsIDIwNCwgMTMwLCAxLCAyNTAsIDM2LCAyMjMsIDgyLCAxMzAsIDEsIAotICAgIDI1MCwgMzYsIDE1MCwgMTMwLCAxLCAyNTAsIDM2LCAyMzIsIDIxNCwgMTMwLCAxLCAyNTAsIDM2LCAyMzUsIDI3LCAxNzIsIAotICAgIDUsIDI1MywgMjQxLCAxNzIsIDUsIDIxNCwgMTI3LCAxNzIsIDEsIDI1MywgODEsIDE3MiwgMSwgMjU0LCAxODcsIDE3MiwgMSwgCi0gICAgMjU0LCAxMjgsIDE3MiwgMSwgMjU0LCAxNDMsIDE3MiwgMSwgMjM1LCAxNDksIDE3MiwgMSwgMjM2LCAyNywgMTcyLCAxLCAKLSAgICAyMTUsIDg0LCAxNzIsIDEsIDIxNSwgODYsIDE3MiwgMSwgMjM1LCAxNzEsIDE3MiwgMSwgMjM1LCAxNzIsIDE3MiwgMSwgCi0gICAgMjM2LCAxMywgMTcyLCAxLCAyMzYsIDE1LCAxNzIsIDEsIDI0NCwgMjQxLCAxNzIsIDEsIDI0NSwgMTYxLCAxNzIsIDEsIAotICAgIDI1NCwgOTYsIDE3MiwgMSwgMjI2LCAyMzIsIDE3MiwgMSwgMjI3LCA0MywgMTcyLCAxLCAyNTMsIDk0LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIzNCwgMTkzLCAxNzIsIDEsIDIzMiwgMTQsIDIzNCwgMTkzLCAxNzIsIDEsIDI1NCwgNTUsIDI0MywgNTgsIDE3MiwgCi0gICAgMSwgMjMyLCAxNCwgMjQzLCA1OCwgMTcyLCAxLCAyMzQsIDIzNCwgMjMwLCA0MCwgMTcyLCAxLCAyMjIsIDE1MiwgMjQzLCAKLSAgICA1OCwgMTcyLCAxLCAyNTQsIDU1LCAyNTAsIDE0OSwgMTcyLCAxLCAyMzIsIDE0LCAyNTAsIDE0OSwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMzUsIDEyOCwgMTcyLCAxLCAyMzIsIDE0LCAyMzUsIDEyOCwgMTcyLCAxLCAyMTgsIDQ2LCAyMzAsIDQwLCAxNzIsIAotICAgIDEsIDIxOCwgNDYsIDIyMiwgMTUxLCAyMzAsIDQxLCAxNzIsIDEsIDIyMiwgMTUyLCAyMzUsIDEyOCwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMTYsIDExMywgMTcyLCAxLCAyMzIsIDE0LCAyMTYsIDExMywgMTcyLCAxLCAyNTQsIDU1LCAyNDgsIDc3LCAxNzIsIAotICAgIDEsIDIzMiwgMTQsIDI0OCwgNzcsIDE3MiwgMSwgMjMwLCAxMjQsIDIzMCwgMiwgMTcyLCAxLCAyMjIsIDE1MiwgMjQ4LCA3NywgCi0gICAgMTcyLCAxLCAyNTQsIDU1LCAyMTcsIDIzNywgMTcyLCAxLCAyMzIsIDE0LCAyMTcsIDIzNywgMTcyLCAxLCAyNTQsIDU1LCAKLSAgICAyNDgsIDkwLCAxNzIsIDEsIDIzMiwgMTQsIDI0OCwgOTAsIDE3MiwgMSwgMjQ4LCAxMTksIDIzMCwgMiwgMTcyLCAxLCAyMjIsIAotICAgIDE1MiwgMjQ4LCA5MCwgMTcyLCAxLCAyNTQsIDU1LCAyMjYsIDEwMiwgMTcyLCAxLCAyMzIsIDE0LCAyMjYsIDEwMiwgMTcyLCAKLSAgICAxLCAyNTQsIDU1LCAyNTIsIDMyLCAxNzIsIDEsIDIzMiwgMTQsIDI1MiwgMzIsIDE3MiwgMSwgMjMxLCAxOTUsIDE3MiwgMSwgCi0gICAgMjU0LCA0MCwgMjUyLCAzMiwgMTcyLCAxLCAyMTMsIDQyLCAxNzIsIDEsIDIyNCwgMjYsIDE3MiwgMSwgMjQ4LCAxMTksIAotICAgIDIzMywgOTEsIDE3MiwgMSwgMjE0LCAyMzQsIDE3MiwgMSwgMjE4LCA0NiwgMjIyLCAxMjgsIDE3MiwgMSwgMjMwLCAxMjQsIAotICAgIDIyMiwgMTI4LCAxNzIsIDEsIDI0OCwgMTE5LCAyMjIsIDEyOCwgMTcyLCAxLCAyNDEsIDIyNiwgMTcyLCAxLCAyMzAsIDEyNCwgCi0gICAgMjMzLCA5MSwgMTcyLCAxLCAyNDQsIDEyNSwgMTcyLCA1LCAyNTQsIDg1LCAxNzIsIDMwLCA1LCAyNTQsIDEzOCwgMTcyLCAKLSAgICAzMCwgNSwgMjM0LCAxNjEsIDI1NCwgMTQ1LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjU0LCAxNDUsIDE3MiwgMzAsIDUsIAotICAgIDIzNCwgMTYxLCAyMzUsIDE2OCwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIzNSwgMTY4LCAxNzIsIDMwLCA1LCAyMzQsIDE2MSwgCi0gICAgMjI2LCAyMTIsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyMjYsIDIxMiwgMTcyLCAzMCwgNSwgMjQzLCA5OSwgMTcyLCAzMCwgCi0gICAgNSwgMjM0LCAyNCwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIzNCwgMjQsIDE3MiwgMzAsIDUsIDIzNCwgMjYsIDI0OCwgMTgsIAotICAgIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIDI1NCwgMTM4LCAxNzIsIDMwLCA1LCAyMzQsIDI1LCAyNDIsIDI4LCAKLSAgICAyNDcsIDE4MCwgMjU0LCAxMzgsIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIDI0MywgNTcsIDE3MiwgMzAsIDUsIAotICAgIDI0MywgNTcsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNDMsIDk5LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjQzLCA1NywgCi0gICAgMTcyLCAyMjUsIDI3LCAyMzMsIDIyOCwgMTU0LCAxMzcsIDIzNCwgMzgsIDIzNCwgMjUwLCAxNTQsIDEzNywgMjM0LCAxMTQsIAotICAgIDIzNCwgMTM0LCAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTA3LCAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTA0LCAKLSAgICAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTExLCAxNTQsIDEzNywgMjM0LCAxMTQsIDIyNCwgNDYsIDE1NCwgMTM3LCAyMjksIAotICAgIDkxLCAyMjksIDc4LCAxNTQsIDEzNywgMjUwLCAyNCwgMjUwLCA4MywgMTU0LCAxMzcsIDI1MCwgMjQsIDI1MCwgMzIsIDE1NCwgCi0gICAgMTM3LCAyNTAsIDI0LCAyNTAsIDgyLCAxNTQsIDEzNywgMjE5LCAyNDMsIDIxOSwgMjQyLCAxNTQsIDEzNywgMjUwLCAyNCwgCi0gICAgMjUwLCAyMCwgMTU0LCAxMzcsIDIxMiwgMjM2LCAyMTIsIDI0MywgMTU0LCAxMzcsIDI0NywgMTAwLCAyNTAsIDg5LCAxNTQsIAotICAgIDEzNywgMjExLCAyMTEsIDIyNiwgMTExLCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTUzLCAxNTQsIDEzNywgMjE3LCAKLSAgICAxMTAsIDIzMCwgMjEsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjI1LCAyNDMsIDE1NCwgMTM3LCAyMjgsIDE4NiwgMjI5LCAxODAsIAotICAgIDE1NCwgMTM3LCAyNDcsIDEwMCwgMjQ4LCAxOSwgMTU0LCAxMzcsIDIxMSwgMjExLCAyMTgsIDYsIDE1NCwgMTM3LCAyMTcsIAotICAgIDExMCwgMjE3LCA4NSwgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDE1NywgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDEwNywgCi0gICAgMTU0LCAxMzcsIDIyOCwgMTg2LCAyMjgsIDkyLCAxNTQsIDEzNywgMjUxLCAxMjksIDI1MiwgODMsIDE1NCwgMTM3LCAyMjUsIAotICAgIDE1MSwgMjI1LCAxNzQsIDE1NCwgMTM3LCAyMjUsIDI1NCwgMjI1LCAyNDUsIDE1NCwgMTM3LCAyNDQsIDEzLCAyNDQsIDE2NCwgCi0gICAgMTU0LCAxMzcsIDIyNSwgMjU0LCAyMjYsIDE3LCAxNTQsIDEzNywgMjQ0LCAxMywgMjQ0LCAxNDEsIDE1NCwgMTM3LCAyMjUsIAotICAgIDI1NCwgMjIyLCAxNjIsIDE1NCwgMTM3LCAyMzAsIDIzMiwgMTg4LCAxNTQsIDEzNywgMjEyLCAyMzYsIDIxMywgNjgsIDE1NCwgCi0gICAgMTM3LCAyMjMsIDExMywgMjIzLCA1MCwgMTU0LCAxMzcsIDIyMywgNTEsIDE1NCwgMTM3LCAyMzIsIDIwOSwgMjMyLCAyMzUsIAotICAgIDE1NCwgMTM3LCAyMzIsIDE1NiwgMTU0LCAxMzcsIDIxMywgMjE1LCAyMTQsIDQ1LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIyMiwgCi0gICAgMTc3LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIyMywgMjUsIDE1NCwgMTM3LCAyMTksIDI0MywgMjE5LCAyNiwgMTU0LCAxMzcsIAotICAgIDI0MSwgNTUsIDI0MSwgMTQ1LCAxNTQsIDEzNywgMjMyLCAyMDksIDI1MCwgNSwgMTU0LCAxMzcsIDE1NywgMjU0LCAyNCwgCi0gICAgMTU0LCAxMzcsIDI0MSwgNTUsIDIyOCwgMTgxLCAxNTQsIDEzNywgMjI2LCAxOTUsIDE1NCwgMTM3LCAyMjIsIDE0NiwgNjEsIAotICAgIDE1NCwgMTM3LCAyMzIsIDksIDI0MiwgMCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDIzMiwgMTU0LCAxMzcsIDIyMiwgCi0gICAgMTQ2LCAyNTQsIDQ1LCAxNTQsIDEzNywgMjIyLCAxNDYsIDcyLCAxNTQsIDEzNywgMjIyLCAxNDYsIDIzNiwgMjgsIDE1NCwgCi0gICAgMTM3LCAyMjIsIDE0NiwgMjE1LCAxODMsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjE1LCAxODEsIDE1NCwgMTM3LCAyMjIsIAotICAgIDE0NiwgNjksIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjE1LCA5MiwgMTU0LCAxMzcsIDIyNiwgMCwgMTU0LCAyNDksIDM5LCAxNiwgCi0gICAgMjUyLCA4NCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCA3NCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDE0OCwgMTU0LCAxMzcsIAotICAgIDIyMiwgMTQ2LCA3NSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDEwOSwgMjMyLCA0LCAxNTQsIDEzNywgMjIyLCAxNDYsIAotICAgIDI1NCwgMTA5LCAyMzIsIDUsIDE1NCwgMTM3LCAyMzMsIDEzMCwgMTU0LCAxMzcsIDIzMiwgMSwgMTU0LCAxMzcsIDIzMiwgMiwgCi0gICAgMTU0LCAxMzcsIDIzMiwgOSwgMjQ1LCAxMzcsIDE1NCwgMTM3LCAyMzIsIDksIDIxNywgMTA5LCAxNTQsIDEzNywgMjMyLCA5LCAKLSAgICAyMTYsIDE4NiwgMTU0LCAxMzcsIDIzMiwgOSwgMjUwLCA3MSwgMTU0LCAxMzcsIDIxNywgMTUxLCAxNTQsIDEzNywgMjI5LCAKLSAgICAzNiwgMTU0LCAxMzcsIDIxMywgNjIsIDE1NCwgMTM3LCAyNDQsIDQsIDE1NCwgMjEsIDIxMiwgNzksIDE1NCwgMjEsIDExNiwgCi0gICAgMTU0LCAyMSwgMTA5LCAxNTQsIDIxLCAxNjYsIDE1NCwgMjEsIDE2MywgMTU0LCAyMSwgMTgwLCAxNTQsIDIxLCAxODksIAotICAgIDE1NCwgMjEsIDE5OCwgMTU0LCAyMSwgMTk1LCAxNTQsIDIxLCAyMDAsIDE1NCwgMTM3LCAyNTQsIDIwLCAxNTQsIDEzNywgCi0gICAgMjM0LCAxMTIsIDIzMywgMTEyLCAxLCAyMzQsIDM3LCAyMzMsIDExMiwgMSwgMjM0LCAxMTQsIDIxOCwgMjM1LCAyMzMsIAotICAgIDExMiwgMSwgMjM0LCAxMTQsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyMjksIDkwLCAyMzMsIDExMiwgMSwgMjQ5LCAxNzUsIAotICAgIDIzMywgMTEyLCAxLCAyMTksIDI0MywgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDIyNywgMjUzLCAyMzMsIDExMiwgMSwgMjQ3LCAKLSAgICA5OSwgMjMzLCAxMTIsIDEsIDEwOCwgMjMzLCAxMTIsIDEsIDIxNywgMTEwLCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDIxNywgCi0gICAgMTEwLCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjI4LCAxODUsIDIzMywgMTEyLCAxLCAyNTEsIDEyOCwgMjMzLCAxMTIsIDEsIAotICAgIDIyNSwgMTUwLCAyMzMsIDExMiwgMSwgMjI1LCAyNTQsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgMjQ0LCAxMywgMjE4LCAxMywgCi0gICAgMjMzLCAxMTIsIDEsIDIyNSwgMjU0LCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjQ0LCAxMywgMjE4LCAyMzUsIDIzMywgMTEyLCAKLSAgICAxLCAyMzAsIDIzMSwgMjMzLCAxMTIsIDEsIDIxMiwgMjM1LCAyMzMsIDExMiwgMSwgMjMyLCAyMDksIDIzMiwgMjM1LCAyMzMsIAotICAgIDExMiwgMSwgMjMyLCAyMDksIDIzMiwgMTc2LCAyMzMsIDExMiwgMSwgMjEzLCAyMTQsIDIzMywgMTEyLCAxLCAyMTksIDI0MywgCi0gICAgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCAyNDEsIDU1LCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDc1LCAyMzMsIDExMiwgMSwgCi0gICAgMjQxLCA1NSwgMjE4LCAxMywgMjMzLCAxMTIsIDI0NSwgMTIwLCAyMzMsIDExMiwgMzAsIDUsIDYxLCAyMzMsIDExMiwgMzAsIAotICAgIDUsIDIzMiwgOSwgMjM0LCAyMzksIDIzMywgMTEyLCAzMCwgNSwgMjU0LCAyMzIsIDIzMywgMTEyLCAzMCwgNSwgMjU0LCA0NSwgCi0gICAgMjMzLCAxMTIsIDMwLCA1LCA3MiwgMjMzLCAxMTIsIDMwLCA1LCAyMzYsIDI4LCAyMzMsIDExMiwgMzAsIDUsIDIxMywgMTA1LCAKLSAgICAyMzMsIDExMiwgMzAsIDUsIDIxMiwgMTYxLCAyMzMsIDExMiwgMzAsIDUsIDY5LCAyMzMsIDExMiwgMzAsIDUsIDIxNSwgOTIsIAotICAgIDIzMywgMTEyLCAzMCwgNSwgMjMyLCA5LCAyMzQsIDIyLCAyMzMsIDExMiwgMjIxLCA2NSwgNSwgMjMyLCAyMDgsIDIzMywgCi0gICAgMTEyLCAyMjEsIDY1LCA1LCAyMjcsIDI1MywgMjMzLCAxMTIsIDMwLCA1LCA3NCwgMjMzLCAxMTIsIDMwLCA1LCAyNDUsIAotICAgIDE1MiwgMjMzLCAxMTIsIDMwLCA1LCA3NSwgMjMzLCAxMTIsIDMwLCA1LCAyNTMsIDgzLCAyMzMsIDExMiwgMzAsIDUsIDI1NCwgCi0gICAgMTA4LCAyMzMsIDExMiwgMjM0LCAzOCwgMjMzLCAxNTcsIDIzMywgMTEyLCAxNjAsIDIzMiwgOSwgMjQ1LCAxMzcsIDIzMywgCi0gICAgMTEyLCAxNjAsIDIzMiwgOSwgMjE3LCAxMDksIDIzMywgMTEyLCAxNjAsIDIzMiwgOSwgMjE3LCA3MSwgMjMzLCAxMTIsIAotICAgIDE2MCwgMjMyLCA5LCAyNTAsIDE1NSwgMjMzLCAxMTIsIDI1MCwgMTkyLCA3NywgMjMzLCAxMTIsIDIyOSwgNDUsIDIzMywgCi0gICAgMTEyLCAyMSwgMjEyLCA3OSwgMjMzLCAxMTIsIDIxLCAxMTYsIDIzMywgMTEyLCAyMSwgMTA5LCAyMzMsIDExMiwgMjEsIAotICAgIDE2NiwgMjMzLCAxMTIsIDIxLCAxNjMsIDIzMywgMTEyLCAyMSwgMTgwLCAyMzMsIDExMiwgMjEsIDE4OSwgMjMzLCAxMTIsIAotICAgIDIxLCAxOTgsIDIzMywgMTEyLCAyMSwgMTk1LCAyMzMsIDExMiwgMjEsIDIwMCwgMjMzLCAxMTIsIDI0MSwgNTUsIDIyOCwgCi0gICAgMTg1LCAyMzMsIDExMiwgMjQxLCA1NSwgMjMwLCAyMzEsIDYwLCA0LCAyMjcsIDcwLCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIAotICAgIDI0NywgMjMxLCA1OSwgMjE2LCAxNDcsIDYxLCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjU1LCA2MiwgCi0gICAgMjIzLCAxMTcsIDI1MSwgMjUzLCAxODgsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyNTUsIDYyLCAKLSAgICAyNDIsIDk0LCAyMTYsIDEzMSwgMTg4LCA2MCwgMTUyLCA3MCwgMjEyLCAyNDcsIDIzMSwgNTksIDIzMSwgMTU4LCAxODgsIAotICAgIDYwLCAxNTIsIDI0OSwgMTg5LCAyMTIsIDI0NywgMjMxLCA1OSwgMjIxLCAzMCwgMTg4LCA2MCwgMTUyLCAyNTAsIDE3MSwgCi0gICAgMjEyLCAyNDcsIDIzMSwgNTksIDIyNSwgMjQ0LCAyMjEsIDE4LCAxODgsIDYwLCAxNTIsIDIxMiwgMjQ3LCAyMzEsIDU5LCAKLSAgICAyMTYsIDEzMSwgMjIxLCAxOCwgMTg4LCA2MCwgMTUyLCAyMjIsIDEyNiwgMjIxLCAxNywgNjAsIDE1MiwgMjUxLCA1NywgCi0gICAgMjEyLCAyNDcsIDIzMSwgNTgsIDYwLCAxNTIsIDI1MSwgMTQ2LCAyMjAsIDE4MywgMjEyLCAyNDcsIDIzMSwgNTgsIDYwLCAKLSAgICAxNTIsIDIzNSwgMTk0LCAyMTYsIDEzMCwgNjAsIDE1MiwgMjQ4LCAxMiwgMjE2LCAxMzEsIDI1MSwgNTYsIDYwLCAxNTIsIAotICAgIDIyMSwgMTcsIDYwLCAxNTIsIDIyOCwgMiwgMjIxLCAxNywgNjAsIDE1MiwgMjE2LCAxMzEsIDIyMSwgMTcsIDYwLCAxNTIsIAotICAgIDIyOCwgMiwgMjE2LCAxMzEsIDIyMSwgMTcsIDYwLCAxNTIsIDIyMywgMTMzLCAyNTAsIDU5LCAyMTksIDE2OCwgMjIxLCAxNywgCi0gICAgNjAsIDE1MiwgMjIzLCAxOTUsIDI0MiwgMTIyLCAyMjEsIDE3LCA2MCwgMTUyLCAyNTAsIDE3MSwgMjU1LCA2NiwgMjIzLCAKLSAgICA1NSwgMjMxLCAxNTcsIDE4NCwgMjUwLCAxOTUsIDYwLCAxNTIsIDI0MiwgOTQsIDIxNiwgMTMwLCA2MCwgMjMyLCAxOTcsIDUsIAotICAgIDI1MCwgOTAsIDIyMywgNTQsIDYwLCAyMzIsIDE5NywgNSwgMjMzLCAyMywgMjIzLCA1NCwgNjAsIDI1MywgMTI4LCA1LCAKLSAgICAyMjEsIDI3LCAyNDMsIDQxLCAyNTUsIDY3LCAyMjMsIDU0LCA2MCwgMjUzLCAxMjgsIDUsIDI1NSwgNjQsIDE5MywgNjAsIAotICAgIDI1MywgMTI4LCA1LCAyMjIsIDEwMSwgMjE2LCAxMjYsIDYwLCA1LCAyMjQsIDIzLCAyNDcsIDExMSwgMjQzLCA0MCwgNjAsIAotICAgIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDIsIDE1MiwgNjAsIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDIsIDk1LCA2MCwgNSwgCi0gICAgMjI0LCAyMywgMjMwLCAzNywgMjQzLCA0MCwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgMzcsIDI0MiwgMTUyLCA2MCwgNSwgMjI0LCAKLSAgICAyMywgMjQ3LCAxMTEsIDIyNCwgMjMsIDIzMCwgMzYsIDYwLCAyMSwgMjEyLCA3OSwgNjAsIDIxLCAxMTYsIDYwLCAyMSwgCi0gICAgMTA5LCA2MCwgMjEsIDE2NiwgNjAsIDIxLCAxNjMsIDYwLCAyMSwgMTgwLCA2MCwgMjEsIDE4OSwgNjAsIDIxLCAxOTgsIDYwLCAKLSAgICAyMSwgMTk1LCA2MCwgMjEsIDIwMCwgNjAsIDIxLCAxNTEsIDExNiwgNjAsIDIxLCAxNTEsIDEwOSwgNjAsIDIxLCAxNTEsIAotICAgIDE2NiwgNjAsIDIxLCAxNTEsIDE2MywgNjAsIDIxLCAxNTEsIDE4MCwgNjAsIDIxLCAxNTEsIDE4OSwgNjAsIDIxLCAxNTEsIAotICAgIDE5OCwgNjAsIDIxLCAxNTEsIDE5NSwgNjAsIDIxLCAxNTEsIDIwMCwgNjAsIDIxLCAxNTEsIDIxMiwgNzksIDYwLCAxNTIsIAotICAgIDI1MSwgNTksIDIyMywgNTQsIDYwLCAxNTIsIDIyOSwgMTUxLCAyNTAsIDI1NCwgMjI4LCAxMSwgMjEyLCAxOCwgNjAsIDE1MiwgCi0gICAgMjUwLCAxNzEsIDI1NSwgNjYsIDIyMywgNTUsIDI1MCwgMjU1LCAyMzEsIDE1LCAyNTAsIDE5NSwgNjAsIDE1MiwgMjI5LCAKLSAgICAxNTEsIDI1MCwgMjU0LCAyMjEsIDI4LCAyMjMsIDU0LCA2MCwgMTUyLCAyNTAsIDY4LCAyMzEsIDU4LCA2MCwgMTUyLCAyMTYsIAotICAgIDE0MiwgMjU1LCA2MywgNjAsIDE1MiwgMjQyLCA4MSwgMjIzLCA1NSwgMjQyLCA0NCwgNjAsIDE1MiwgMjQyLCA4MSwgMjIzLCAKLSAgICA1NSwgMjQyLCA1MCwgNjAsIDE1MiwgMjU0LCAyNSwgMjM0LCAxMjksIDI0MiwgNDQsIDYwLCAxNTIsIDI1NCwgMjUsIDIzNCwgCi0gICAgMTI5LCAyNDIsIDUwLCA2MCwgNSwgMjEzLCA1NSwgMjE2LCAxMjksIDYwLCA1LCAyMzEsIDIzMCwgMjE2LCAxMjksIDYwLCAxLCAKLSAgICAxODEsIDYwLCAxLCAyMzQsIDEzOCwgNjAsIDEsIDI0MywgMTEwLCA2MCwgMSwgMjQyLCAyMjUsIDYwLCAxLCAyMjksIDE1OSwgCi0gICAgNjAsIDEsIDI1MCwgMjE5LCA2MCwgMSwgMjUwLCA5MiwgNjAsIDEsIDIzNSwgMTM5LCA2MCwgMSwgMjI4LCAyMywgNjAsIDEsIAotICAgIDIxNiwgMTE1LCA2MCwgMSwgMjE2LCAxMDUsIDYwLCAxLCAyNDgsIDg2LCA2MCwgMSwgMjQ4LCA3MCwgNjAsIDEsIDIyOCwgCi0gICAgMTk4LCA2MCwgMSwgMjE4LCA1MiwgNjAsIDEsIDIxNywgMTYxLCA2MCwgMSwgMjQ4LCAxNjQsIDYwLCAxLCAyNDcsIDIzMiwgCi0gICAgNjAsIDEsIDIwNSwgNjAsIDEsIDE5MywgNjAsIDEsIDIyNiwgMjMsIDYwLCAxLCAyNTIsIDEwNywgNjAsIDEsIDI1MSwgMTk1LCAKLSAgICA2MCwgMSwgMTg4LCA2MCwgMSwgMjE2LCAxNDEsIDYwLCAxLCAyMTYsIDEzMywgNjAsIDEsIDI0NSwgMjQ5LCA2MCwgMSwgCi0gICAgMjQ1LCAyNDQsIDYwLCAxLCAyMTQsIDQ5LCA2MCwgMSwgMjEyLCA3NSwgNjAsIDEsIDIxMiwgMTA5LCA2MCwgMSwgMjU1LCAKLSAgICA2OSwgNjAsIDEsIDE4NiwgNjAsIDEsIDIwMywgNjAsIDEsIDIzMywgMTU3LCA2MCwgMSwgMjIxLCAyNCwgNjAsIDEsIDIxOSwgCi0gICAgMTU3LCA2MCwgMSwgMjIyLCAyMDIsIDYwLCAxLCAxNTksIDYwLCAxLCA2MSwgNjAsIDEsIDIzMywgMjQxLCA2MCwgMSwgMjQ0LCAKLSAgICA0NiwgMjAzLCA2MCwgMSwgMjM0LCA1NSwgNjAsIDEsIDIyMywgODEsIDYwLCAzMCwgNSwgMjU0LCAyMzIsIDYwLCAzMCwgNSwgCi0gICAgNzIsIDYwLCAzMCwgNSwgMjM2LCAyOCwgNjAsIDMwLCA1LCA2OSwgNjAsIDMwLCA1LCAyMTUsIDkyLCA2MCwgMzAsIDUsIAotICAgIDE2MSwgMTQ5LCA2MCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgNjAsIDMwLCA1LCAxNjEsIDE1MCwgNjAsIDMwLCA1LCAxNjEsIAotICAgIDIzMiwgMjE0LCA2MCwgMzAsIDUsIDc0LCA2MCwgMzAsIDUsIDI0NSwgMTY1LCA2MCwgMzAsIDUsIDc1LCA2MCwgMzAsIDUsIAotICAgIDIyNywgNDksIDYwLCA1LCAyMjMsIDExOCwgMjE5LCAyOCwgMjI5LCAxNjAsIDIyMywgMTEyLCA2MCwgNSwgMjIzLCAxMTcsIAotICAgIDI1MSwgMjUyLCA2MCwgMzAsIDUsIDIyMywgMjAyLCA3MiwgNjAsIDMwLCA1LCAyMjMsIDIwMiwgMjM2LCAyOCwgNjAsIDUsIAotICAgIDIyOCwgMTEsIDIxMiwgMTksIDIzMCwgNDQsIDI0OCwgMTY0LCA2MCwgNSwgMjE5LCAyNTUsIDIzMywgODQsIDYwLCAxNTIsIAotICAgIDI0MiwgMTEsIDYwLCAxNTIsIDIyNiwgMTg0LCA2MCwgNSwgMjMzLCA4NywgMjIzLCA1NCwgNjAsIDUsIDIxMywgNTksIDIyMywgCi0gICAgNTQsIDYwLCA1LCAyMzMsIDg4LCAyMTYsIDE0MiwgMjUwLCAxOTUsIDYwLCA1LCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCA1LCAKLSAgICAyNDIsIDk3LCAyNTAsIDE5NiwgMjIzLCAxOTMsIDYwLCA1LCAyNDIsIDk3LCAyMzEsIDE1MCwgMjIzLCAxOTMsIDYwLCA1LCAKLSAgICAyMzUsIDE5MSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjMzLCA4OCwgMjE2LCAxNDIsIDI1MCwgCi0gICAgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjM1LCAxOTEsIDIzMSwgCi0gICAgMTU5LCAyNTAsIDE5NSwgNjAsIDIxOSwgMTgsIDEsIDE4MSwgNjAsIDIxOSwgMTgsIDEsIDIzNCwgMTM4LCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjQzLCAxMTAsIDYwLCAyMTksIDE4LCAxLCAyNDIsIDIyNSwgNjAsIDIxOSwgMTgsIDEsIDIyOSwgMTU5LCA2MCwgCi0gICAgMjE5LCAxOCwgMSwgMjUwLCAyMTksIDYwLCAyMTksIDE4LCAxLCAyNTAsIDkyLCA2MCwgMjE5LCAxOCwgMSwgMjM1LCAxMzksIAotICAgIDYwLCAyMTksIDE4LCAxLCAyMjgsIDIzLCA2MCwgMjE5LCAxOCwgMSwgMjE2LCAxMTUsIDYwLCAyMTksIDE4LCAxLCAyMTYsIAotICAgIDEwNSwgNjAsIDIxOSwgMTgsIDEsIDI0OCwgODYsIDYwLCAyMTksIDE4LCAxLCAyNDgsIDcwLCA2MCwgMjE5LCAxOCwgMSwgCi0gICAgMjI4LCAxOTgsIDYwLCAyMTksIDE4LCAxLCAyMTgsIDUyLCA2MCwgMjE5LCAxOCwgMSwgMjE3LCAxNjEsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAyNDgsIDE2NCwgNjAsIDIxOSwgMTgsIDEsIDI0NywgMjMyLCA2MCwgMjE5LCAxOCwgMSwgMjA1LCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMTkzLCA2MCwgMjE5LCAxOCwgMSwgMjI2LCAyMywgNjAsIDIxOSwgMTgsIDEsIDI1MiwgMTA3LCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMjUxLCAxOTUsIDYwLCAyMTksIDE4LCAxLCAxODgsIDYwLCAyMTksIDE4LCAxLCAyMTYsIDE0MSwgNjAsIDIxOSwgMTgsIAotICAgIDEsIDIxNiwgMTMzLCA2MCwgMjE5LCAxOCwgMSwgMjQ1LCAyNDksIDYwLCAyMTksIDE4LCAxLCAyNDUsIDI0NCwgNjAsIDIxOSwgCi0gICAgMTgsIDEsIDIxNCwgNDksIDYwLCAyMTksIDE4LCAxLCAyMTIsIDc1LCA2MCwgMjE5LCAxOCwgMSwgMjEyLCAxMDksIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyNTUsIDY5LCA2MCwgMjE5LCAxOCwgMSwgMTg2LCA2MCwgMjE5LCAxOCwgMSwgMjAzLCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjMzLCAxNTcsIDYwLCAyMTksIDE4LCAxLCAyMjEsIDI0LCA2MCwgMjE5LCAxOCwgMSwgMjE5LCAxNTcsIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyMjIsIDIwMiwgNjAsIDIxOSwgMTgsIDEsIDE1OSwgNjAsIDIxOSwgMTgsIDEsIDYxLCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjMzLCAyNDEsIDYwLCAyMTksIDE4LCAxLCAyNDQsIDQ2LCAyMTQsIDQ5LCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCAKLSAgICA0NiwgMTg2LCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCA0NiwgMjAzLCA2MCwgMjMzLCAyMzksIDIyMywgNTIsIDIzNCwgMTM4LCAKLSAgICA2MCwgMjMzLCAyMzksIDIyMywgNTIsIDIzNCwgMTM5LCAyNTAsIDI1NSwgMjMxLCAxNSwgMjUwLCAxOTUsIDYwLCAyNTAsIAotICAgIDE4NCwgNSwgMTA3LCAyNTEsIDI0NiwgNjAsIDI1MCwgMTg0LCA1LCAxNzcsIDI1MSwgMjQ2LCA2MCwgMjUwLCAxODQsIDUsIAotICAgIDI1MCwgMTg1LCAyMTcsIDIyOCwgNjAsIDI1MCwgMTg0LCA1LCAyMjIsIDEyNSwgMjU1LCA2OCwgNjAsIDE2LCAyNDYsIDQ2LCAKLSAgICAyNTEsIDU0LCA2MCwgMTYsIDIyNCwgMjIsIDIyMywgMTE5LCA2MCwgMTYsIDIyNiwgMjAyLCAyNDMsIDM5LCA2MCwgMTYsIAotICAgIDIyNCwgMjIsIDIyMywgMTIwLCAyMjMsIDE5NSwgMjQyLCAxMjEsIDYwLCAxNiwgMjI1LCAyNDQsIDE5MywgNjAsIDE2LCAKLSAgICAyMjgsIDE3MCwgMjUxLCA1NCwgNjAsIDE2LCAyMjgsIDE3MCwgMjUxLCA1NSwgMjI4LCAyLCAyNTUsIDY1LCA2MCwgMTYsIAotICAgIDIyOCwgMTcwLCAyNTEsIDU1LCAyNDIsIDk2LCAyNTUsIDY1LCA2MCwgMTYsIDIyOCwgMTcwLCAyNTEsIDU1LCAyNTAsIDI1NSwgCi0gICAgMjU1LCA2NSwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgMzcsIDIyNCwgMjMsIDI0NywgMTEwLCA2MCwgNSwgMjI0LCAyMywgMjMwLCAKLSAgICAzNywgMjQyLCA5NSwgNjAsIDE1MiwgMjUxLCA1OCwgMjIwLCAxODMsIDI0MiwgMTkxLCAyMzEsIDU5LCAyMjMsIDE5NCwgNjAsIAotICAgIDE1MiwgMjMwLCAyMzMsIDIxMiwgMjQ3LCAyNDIsIDE5MSwgMjMxLCA1OSwgMjIzLCAxOTQsIDYwLCAxNTIsIDIyOCwgMiwgCi0gICAgMjE2LCAxMzAsIDYwLCAxNTIsIDcwLCAyNTEsIDc5LCAyMjMsIDExNCwgMjEyLCAyNDcsIDIzMSwgNTksIDIzMSwgMTU4LCAKLSAgICAxODgsIDYwLCAxNTIsIDI0OSwgMTg5LCAyNTEsIDc5LCAyMjMsIDExNCwgMjEyLCAyNDcsIDIzMSwgNTksIDIyMSwgMzAsIAotICAgIDE4OCwgMjIzLCAxNDcsIDIxOCwgMjAwLCA1MiwgMjMzLCA2OSwgMjE4LCAyMDAsIDUyLCAyMjMsIDE0NywgMjE4LCAyMDAsIAotICAgIDUsIDIsIDI0NywgNzIsIDIzMywgNjksIDIxOCwgMjAwLCA1LCAyLCAyNDcsIDcyLCA2MCwgMTUyLCAyMzMsIDc5LCAyMzEsIAotICAgIDE2MCwgMjIzLCA1NCwgNjAsIDE1MiwgMjE2LCAyMDcsIDIzMSwgMTYwLCAyMjMsIDU0LCA2NCwgMSwgMTgxLCA2NCwgMSwgCi0gICAgMjM0LCAxMzgsIDY0LCAxLCAyNDMsIDExMCwgNjQsIDEsIDI0MiwgMjI1LCA2NCwgMSwgMjI5LCAxNTksIDY0LCAxLCAyNTAsIAotICAgIDIxOSwgNjQsIDEsIDI1MCwgOTIsIDY0LCAxLCAyMzUsIDEzOSwgNjQsIDEsIDIzNSwgMTE1LCA2NCwgMSwgMjI4LCAyMywgCi0gICAgNjQsIDEsIDIyOCwgMTg3LCA2NCwgMSwgMjE2LCAxMTUsIDY0LCAxLCAyMTYsIDEwNSwgNjQsIDEsIDI0OCwgODYsIDY0LCAxLCAKLSAgICAyNDgsIDcwLCA2NCwgMSwgMjI4LCAxOTgsIDY0LCAxLCAyMTgsIDUyLCA2NCwgMSwgMjE3LCAxNjEsIDY0LCAxLCAyNDgsIAotICAgIDE2NCwgNjQsIDEsIDI0NywgMjMyLCA2NCwgMSwgMjA1LCA2NCwgMSwgMTkzLCA2NCwgMSwgMjI2LCAyMywgNjQsIDEsIDI1MiwgCi0gICAgMTA3LCA2NCwgMSwgMjUxLCAxOTUsIDY0LCAxLCAxODgsIDY0LCAxLCAxODYsIDY0LCAxLCAyMDMsIDY0LCAxLCAyMzMsIAotICAgIDE1NywgNjQsIDEsIDIxNCwgNDksIDY0LCAxLCAyMjIsIDIwMiwgNjQsIDEsIDE1OSwgNjQsIDEsIDIzMiwgMjEzLCA2NCwgMSwgCi0gICAgNjEsIDY0LCAxLCAyMjEsIDksIDYxLCA2NCwgMSwgNzIsIDY0LCAxLCAyMzYsIDI4LCA2NCwgMSwgNjksIDY0LCAxLCAyMTUsIAotICAgIDkyLCA2NCwgMSwgNzQsIDY0LCAxLCAyMzAsIDIyMSwgNzQsIDY0LCAxLCA3NSwgNjQsIDEsIDI1MywgMTA4LCA2NCwgMzAsIAotICAgIDUsIDIxOCwgMTUsIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDcyLCA2NCwgMzAsIDUsIDIzNiwgCi0gICAgMjgsIDY0LCAzMCwgNSwgNjksIDY0LCAzMCwgNSwgMjE1LCA5MiwgNjQsIDMwLCA1LCA3NCwgNjQsIDMwLCA1LCAyNTQsIAotICAgIDEwOCwgNjQsIDMwLCA1LCAyMzAsIDIyMSwgMjM2LCAyOCwgNjQsIDMwLCA1LCAyMzAsIDIyMSwgNzUsIDY0LCAzMCwgNSwgCi0gICAgMTkxLCA0OSwgNjQsIDUsIDI1MywgMjQyLCA2NCwgNSwgNjIsIDU1LCA2NCwgNSwgMjE0LCAxMjgsIDY0LCA1LCAyMTQsIAotICAgIDEzMywgNjQsIDUsIDI1MywgMTUwLCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMTg2LCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgCi0gICAgMjAzLCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMjE0LCA0OSwgNjQsIDI0OSwgMTMzLCA1LCAxMzgsIDE1OSwgNjQsIDEsIAotICAgIDI0MiwgMTA5LCAyMjIsIDIwMiwgNjQsIDIxLCAyMTIsIDc5LCA2NCwgMjEsIDExNiwgNjQsIDIxLCAxMDksIDY0LCAyMSwgCi0gICAgMTY2LCA2NCwgMjEsIDE2MywgNjQsIDIxLCAxODAsIDY0LCAyMSwgMTg5LCA2NCwgMjEsIDE5OCwgNjQsIDIxLCAxOTUsIDY0LCAKLSAgICAyMSwgMjAwLCA2NCwgNSwgMjMyLCAyMjEsIDIyMiwgOTEsIDY0LCA1LCAyMjIsIDkxLCA2NCwgMTYsIDIzMiwgMjA1LCA2NCwgCi0gICAgMTYsIDI0OSwgMTUyLCA2NCwgMTYsIDI1NCwgMTI1LCA2NCwgMTYsIDI0MywgMjQsIDY0LCAxLCAyMjEsIDI0LCA2NCwgMSwgCi0gICAgMjE5LCAxNTcsIDY0LCAxLCAxNjEsIDE0OSwgNjQsIDEsIDE2MSwgMjIzLCA4MiwgNjQsIDEsIDE2MSwgMTUwLCA2NCwgMSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgNjQsIDMwLCA1LCAxNjEsIDE0OSwgNjQsIDMwLCA1LCAxNjEsIDIyMywgODIsIDY0LCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDY0LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgNjQsIDEsIDIzMCwgMjIxLCAyMjksIDE1OSwgNjQsIDEsIAotICAgIDIzMCwgMjIxLCAyMzUsIDExNSwgNjQsIDEsIDIzMCwgMjIxLCAyNTIsIDMxLCA2NCwgMSwgMjMwLCAyMjEsIDI1MiwgMjYsIAotICAgIDY0LCAyNDksIDEzMywgNSwgMjMwLCAyMjEsIDEzOCwgMjA1LCA2NCwgMjQ5LCAxMzMsIDUsIDIzMCwgMjIxLCAxMzgsIDE4OCwgCi0gICAgNjQsIDI0OSwgMTMzLCA1LCAyMzAsIDIyMSwgMTM4LCAyMzMsIDE1NywgNjQsIDEsIDIyMSwgMjksIDIzNCwgMjE4LCAyMjEsIAotICAgIDI0LCA2NCwgMzAsIDUsIDIyMSwgMjksIDIzNCwgMjE4LCAyNDUsIDIyLCA2NCwgMTYwLCAxNTIsIDIyMSwgMjksIDIzNCwgCi0gICAgMjE4LCAyNDEsIDIzMCwgNjQsIDE2MCwgMTUyLCAyMjEsIDI5LCAyMzQsIDIxOCwgMjM0LCAxODksIDIyNSwgMjUzLCA2NCwgCi0gICAgMSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE3LCAxNjEsIDY0LCAxLCAyMTMsIDI0OCwgMjI0LCAyNTIsIAotICAgIDIzNCwgMjE4LCAyMjUsIDIsIDY0LCAzMCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjQ1LCAyMiwgNjQsIAotICAgIDMwLCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTUsIDE4MywgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgCi0gICAgMjM0LCAyMTgsIDIxNiwgMjQwLCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzksIDY0LCA1LCAKLSAgICAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzOCwgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAKLSAgICAyMTgsIDIxNiwgMjM3LCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzYsIDY0LCAxLCAyNDUsIAotICAgIDE3NSwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMjgsIDE5OCwgNjQsIDEsIDI0NSwgMTc1LCAyMjQsIDI1MiwgMjM0LCAyMTgsIAotICAgIDIxMiwgMTY4LCA2NCwgMSwgMjQ1LCAxNzUsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjQyLCAxOTMsIDY0LCAzMCwgNSwgMjQzLCAKLSAgICAzNSwgMjM0LCAyMTgsIDcyLCA2NCwgMzAsIDUsIDIzNCwgMTk0LCAyMjcsIDk5LCA2NCwgMzAsIDUsIDIzNCwgMTk0LCA2OSwgCi0gICAgNjQsIDMwLCA1LCAyMzQsIDE5NCwgMjQ1LCAxNjUsIDY0LCAxLCAyMjEsIDksIDE4MSwgNjQsIDEsIDIyMSwgOSwgMjM0LCAKLSAgICAxMzgsIDY0LCAxLCAyMjEsIDksIDI0MywgMTEwLCA2NCwgMSwgMjIxLCA5LCAyNTAsIDIxOSwgNjQsIDEsIDIyMSwgOSwgCi0gICAgMjEyLCAxMDksIDY0LCAxLCAyMjEsIDksIDIyOCwgMjMsIDY0LCAxLCAyMjEsIDksIDI0OCwgMTY0LCA2NCwgMSwgMjIxLCA5LCAKLSAgICAyMDUsIDY0LCAxLCAyMjEsIDksIDIyNiwgMjMsIDY0LCAxLCAyMjEsIDksIDI0NCwgMTY0LCA2NCwgMSwgMjIxLCA5LCAyNTIsIAotICAgIDEwNywgNjQsIDEsIDIyMSwgOSwgMjE3LCAxNjEsIDY0LCAxLCAyMjEsIDksIDE1OSwgNjQsIDI0OSwgMTMzLCA1LCAyMjEsIAotICAgIDksIDEzOCwgMjE0LCA0OSwgNjQsIDMwLCA1LCAyMjEsIDksIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDIyMSwgOSwgNzQsIDY0LCAKLSAgICAzMCwgNSwgMjIxLCA5LCAxOTEsIDQ5LCA2NCwgMzAsIDUsIDIyMSwgOSwgNDAsIDIxMywgMTA1LCA2NCwgNSwgMjIxLCA5LCAKLSAgICAyMTYsIDIzOSwgNjQsIDUsIDIyMSwgOSwgMjE2LCAyMzgsIDY0LCA1LCAyMjEsIDksIDIxNiwgMjM2LCA2NCwgNSwgMjIxLCAKLSAgICA5LCAyMTYsIDIzNSwgNjQsIDUsIDIyMSwgOSwgMjQ5LCA5MSwgMjE2LCAyMzksIDY0LCA1LCAyMjEsIDksIDI0OSwgOTEsIAotICAgIDIxNiwgMjM4LCA2NCwgNSwgMjIxLCA5LCAyNDksIDkxLCAyNDUsIDExMSwgMjE2LCAyNDEsIDY0LCAxLCAyMjMsIDM5LCAKLSAgICAyMjYsIDE5MCwgMjQ0LCAxNjQsIDY0LCA1LCAyMjMsIDM5LCAyMjYsIDE5MCwgMjE2LCAyMzYsIDY0LCAyMjEsIDksIDIxLCAKLSAgICAyMTIsIDc5LCA2NCwgMjIxLCA5LCAyMSwgMTE2LCA2NCwgMjIxLCA5LCAyMSwgMTA5LCA2NCwgMjIxLCA5LCAyMSwgMTY2LCAKLSAgICA2NCwgMjIxLCA5LCAyMSwgMTYzLCA2NCwgMjIxLCA5LCAyMSwgMTgwLCA2NCwgMjIxLCA5LCAyMSwgMTg5LCA2NCwgMjIxLCAKLSAgICA5LCAyMSwgMTk4LCA2NCwgMjIxLCA5LCAyMSwgMTk1LCA2NCwgMjIxLCA5LCAyMSwgMjAwLCA2NCwgNSwgMjM0LCAxMzIsIAotICAgIDIxNiwgMjQwLCA2NCwgNSwgMjM0LCAxMzIsIDIxNiwgMjM4LCA2NCwgMzAsIDUsIDI1NCwgOTgsIDYxLCA2NCwgMzAsIDUsIAotICAgIDI1NCwgOTgsIDI1NCwgMTA4LCA2NCwgMTYsIDIyMSwgOSwgMTE2LCA2NCwgMTYsIDIyMSwgOSwgMjQ0LCAyNTMsIDEwMCwgNiwgCi0gICAgMSwgMjU0LCAzMiwgMTAwLCA2LCAxLCAyNTIsIDcxLCAxMDAsIDYsIDEsIDI0MywgODIsIDEwMCwgNiwgMSwgMjQ3LCA4MiwgCi0gICAgMTAwLCA2LCAxLCAyNDUsIDEwOCwgMTAwLCA2LCAxLCAyMTQsIDE0MSwgMTAwLCA2LCAxLCAyMTIsIDgyLCAxMDAsIDYsIDEsIAotICAgIDIxOCwgMTEsIDEwMCwgNiwgMSwgMjM1LCAyNTEsIDEwMCwgNiwgMSwgMjM0LCAyMzksIDEwMCwgNiwgMSwgMjMzLCAxMDQsIAotICAgIDEwMCwgNiwgMSwgMjMxLCAyNDgsIDEwMCwgNiwgMSwgMjMwLCAxNSwgMTAwLCA2LCAxLCAyMjcsIDYyLCAxMDAsIDYsIDEsIAotICAgIDIyNiwgMTQ1LCAxMDAsIDYsIDEsIDIxMiwgNzEsIDEwMCwgNiwgMSwgMjI0LCA2MSwgMTAwLCA2LCAxLCAyMjIsIDE1OSwgCi0gICAgMTAwLCA2LCAxLCAyMTgsIDEsIDEwMCwgNiwgMSwgMjE1LCAxNjAsIDEwMCwgNiwgMSwgMjI2LCAxNiwgMTAwLCA2LCAxLCAKLSAgICAyMzQsIDEyNywgMTAwLCA2LCAxLCAyNDIsIDIxNywgMTAwLCA2LCAxLCAyMjQsIDIxNywgMTAwLCA2LCAxLCAyMjAsIDIwMCwgCi0gICAgMTAwLCA2LCAxLCAyNTAsIDM0LCAxMDAsIDYsIDEsIDI1MCwgMTk1LCAxMDAsIDYsIDEsIDIzNSwgMTAzLCAxMDAsIDYsIDEsIAotICAgIDI0OSwgMjMzLCAxMDAsIDYsIDEsIDI1MCwgNzksIDEwMCwgNiwgMSwgMjEzLCAxNTEsIDEwMCwgNiwgMSwgMjM1LCAxMTMsIAotICAgIDEwMCwgNiwgMSwgMjQyLCAyNCwgMTAwLCA2LCAxLCAyNDEsIDIyMiwgMTAwLCA2LCAxLCAyNDEsIDE2MCwgMTAwLCA2LCAxLCAKLSAgICAyMTQsIDYsIDEwMCwgNiwgMSwgMjQxLCAyNDMsIDEwMCwgNiwgMSwgMjQxLCA1MSwgMTAwLCAxLCAyNTQsIDMyLCAxMDAsIDEsIAotICAgIDI1MiwgNzEsIDEwMCwgMSwgMjQzLCA4MiwgMTAwLCAxLCAyNDcsIDgyLCAxMDAsIDEsIDI0NSwgMTA4LCAxMDAsIDEsIDIxNCwgCi0gICAgMTQxLCAxMDAsIDEsIDIxMiwgODIsIDEwMCwgMSwgMjE4LCAxMSwgMTAwLCAxLCAyMzUsIDI1MSwgMTAwLCAxLCAyMzQsIAotICAgIDIzOSwgMTAwLCAxLCAyMzMsIDEwNCwgMTAwLCAxLCAyMzEsIDI0OCwgMTAwLCAxLCAyMzAsIDE1LCAxMDAsIDEsIDIyNywgCi0gICAgNjIsIDEwMCwgMSwgMjI2LCAxNDUsIDEwMCwgMSwgMjEyLCA3MSwgMTAwLCAxLCAyMjQsIDYxLCAxMDAsIDEsIDIyMiwgMTU5LCAKLSAgICAxMDAsIDEsIDIxOCwgMSwgMTAwLCAxLCAyMTUsIDE2MCwgMTAwLCAxLCAyMjYsIDE2LCAxMDAsIDEsIDIzNCwgMTI3LCAxMDAsIAotICAgIDEsIDI0MiwgMjE3LCAxMDAsIDEsIDIyNCwgMjE3LCAxMDAsIDEsIDIyMCwgMjAwLCAxMDAsIDEsIDI1MCwgMzQsIDEwMCwgMSwgCi0gICAgMjUwLCAxOTUsIDEwMCwgMSwgMjM1LCAxMDMsIDEwMCwgMSwgMjQ5LCAyMzMsIDEwMCwgMSwgMjUwLCA3OSwgMTAwLCAxLCAKLSAgICAyMTMsIDE1MSwgMTAwLCAxLCAyMzUsIDExMywgMTAwLCAxLCAyNDIsIDI0LCAxMDAsIDEsIDI0MSwgMjIyLCAxMDAsIDEsIAotICAgIDI0MSwgMTYwLCAxMDAsIDEsIDIxNCwgNiwgMTAwLCAxLCAyNDEsIDI0MywgMTAwLCAxLCAyNDEsIDUxLCAxMDAsIDEsIDI0NCwgCi0gICAgOTAsIDEwMCwgMSwgMjEyLCAyMzcsIDEwMCwgMSwgMjQ1LCAxMjIsIDEwMCwgMSwgMjE2LCA1OCwgMjQzLCA4MiwgMTAwLCAxLCAKLSAgICAyNTQsIDEwMywgMTAwLCAyMjYsIDE0MywgMjIxLCA1NywgNTksIDEsIDEwMCwgMjMwLCAxNSwgMjMsIDk3LCAyMzQsIDY3LCAKLSAgICAyMywgOTcsIDIxOSwgMTUwLCAyMywgOTcsIDIyOSwgNTcsIDIzLCA5NywgMjE3LCA1NSwgMjMsIDk3LCAyMTksIDEzOSwgMjMsIAotICAgIDk3LCAyMjMsIDE3OSwgMjMsIDk3LCAyMzEsIDMwLCAyMywgOTcsIDIyNSwgMjI3LCAyMywgOTcsIDIxOSwgMTQ3LCAyMywgCi0gICAgOTcsIDIyMCwgNzYsIDIzLCA5NywgMjE5LCAxNDQsIDIzLCA5NywgMjM2LCA1MSwgMjMsIDk3LCAyNDksIDIzOSwgMjMsIDk3LCAKLSAgICAyMTksIDE1NCwgMjMsIDk3LCAyNTAsIDQzLCAyMywgOTcsIDIzNCwgMTE2LCAyMywgOTcsIDIxNywgMTI2LCAyMywgOTcsIAotICAgIDIyNiwgNywgMjMsIDk3LCAyNDEsIDE1OCwgMjMsIDk3LCAyMjksIDUzLCAyMywgOTcsIDIxOSwgMTQ4LCAyMywgOTcsIDIyOSwgCi0gICAgNDcsIDIzLCA5NywgMjI5LCA1MSwgMjMsIDk3LCAyMTcsIDUyLCAyMywgOTcsIDIyMywgMTY3LCAyMywgOTcsIDIxOSwgMTQ2LCAKLSAgICAyMywgOTcsIDIyMywgMTc3LCAyMywgOTcsIDIzNCwgMjIzLCAyMywgOTcsIDIzMSwgMjMsIDIzLCA5NywgMjM0LCAyMjYsIAotICAgIDIzLCA5NywgMjI1LCAyMjIsIDIzLCA5NywgMjI1LCAyMjAsIDIzLCA5NywgMjI1LCAyMDgsIDIzLCA5NywgMjI1LCAyMTYsIAotICAgIDIzLCA5NywgMjI1LCAyMTQsIDIzLCA5NywgMjI1LCAyMTEsIDIzLCA5NywgMjI1LCAyMTMsIDIzLCA5NywgMjI1LCAyMTAsIAotICAgIDIzLCA5NywgMjI1LCAyMTUsIDIzLCA5NywgMjI1LCAyMjUsIDIzLCA5NywgMjI1LCAyMjYsIDIzLCA5NywgMjI1LCAyMDksIAotICAgIDIzLCA5NywgMjI1LCAyMTksIDIzLCA5NywgMjM0LCAyMjQsIDIzLCA5NywgMjM0LCAyMjIsIDIzLCA5NywgMjIwLCA2OSwgCi0gICAgMjMsIDk3LCAyMjAsIDY3LCAyMywgOTcsIDIyMCwgNTksIDIzLCA5NywgMjIwLCA2MiwgMjMsIDk3LCAyMjAsIDY4LCAyMywgCi0gICAgOTcsIDIyMCwgNjQsIDIzLCA5NywgMjIwLCA2MywgMjMsIDk3LCAyMjAsIDYxLCAyMywgOTcsIDIyMCwgNzIsIDIzLCA5NywgCi0gICAgMjIwLCA3NCwgMjMsIDk3LCAyMjAsIDc1LCAyMywgOTcsIDIyMCwgNzAsIDIzLCA5NywgMjIwLCA2MCwgMjMsIDk3LCAyMjAsIAotICAgIDY1LCAyMywgOTcsIDIyMCwgNzMsIDIzLCA5NywgMjUwLCAyNywgMjMsIDk3LCAyNTAsIDI1LCAyMywgOTcsIDI1MCwgMTAyLCAKLSAgICAyMywgOTcsIDI1MCwgMTAwLCAyMywgOTcsIDIyNiwgMTYwLCAyMywgOTcsIDIzNiwgNDYsIDIzLCA5NywgMjM2LCAzNywgMjMsIAotICAgIDk3LCAyMzYsIDQ1LCAyMywgOTcsIDIzNiwgNDIsIDIzLCA5NywgMjM2LCA0MCwgMjMsIDk3LCAyMzYsIDQ0LCAyMywgOTcsIAotICAgIDIxOSwgMTUxLCAyMywgOTcsIDIzNiwgNDksIDIzLCA5NywgMjM2LCA1MCwgMjMsIDk3LCAyMzYsIDM4LCAyMywgOTcsIDIzNiwgCi0gICAgNDMsIDIzLCA5NywgMjEzLCAxNywgMjMsIDk3LCAyNDksIDIzOCwgMjMsIDk3LCAyNTAsIDI4LCAyMywgOTcsIDI1MCwgMjYsIAotICAgIDIzLCA5NywgMjUwLCAxMDMsIDIzLCA5NywgMjUwLCAxMDEsIDIzLCA5NywgMjUwLCA0MSwgMjMsIDk3LCAyNTAsIDQyLCAyMywgCi0gICAgOTcsIDI1MCwgMjksIDIzLCA5NywgMjUwLCAxMDQsIDIzLCA5NywgMjI2LCA1LCAyMywgOTcsIDIzNCwgMjI1LCAyMywgOTcsIAotICAgIDIxOSwgMTUyLCAyMywgOTcsIDIxMywgMjMsIDIzLCA5NywgMjM0LCA1OCwgMjMsIDk3LCAyMjksIDQ5LCAyMywgOTcsIDIyOSwgCi0gICAgNTUsIDIzLCA5NywgMjI5LCA1NCwgMjMsIDk3LCAyMTcsIDQ5LCAyMywgOTcsIDI0NCwgNzIsIDIzLCAxMzUsIDI0NCwgNzIsIAotICAgIDIzLCAxMzUsIDYxLCAyMywgMTM1LCAyNTQsIDE0OCwgMjMsIDEzNSwgMTg2LCAyMywgMTM1LCAyMTMsIDgwLCAyMywgMTM1LCAKLSAgICAyNDUsIDc2LCAyMywgMTM1LCA3NCwgMjMsIDEzNSwgMjEzLCAyNywgMjMsIDEzNSwgMjEzLCAzOCwgMjMsIDEzNSwgNzUsIAotICAgIDIzLCAxMzUsIDIxNCwgNDksIDIzLCAxMzUsIDIxNCwgNDYsIDIzLCAxMzUsIDIyNywgOTksIDIzLCAxMzUsIDIxMiwgMjM1LCAKLSAgICAyMywgMTM1LCA2OSwgMjMsIDEzNSwgMjEzLCAyNTIsIDIzLCAxMzUsIDIxNCwgNiwgMjMsIDEzNSwgMjEzLCAyMzUsIDIzLCAKLSAgICAxMzUsIDIxMiwgMjAzLCAyMywgMTM1LCAyNDUsIDIyLCAyMywgMTM1LCAyMTIsIDI1NSwgMjMsIDEzNSwgNzIsIDIzLCAxMzUsIAotICAgIDI1NSwgNjAsIDIzLCAxMzUsIDI1NSwgNTksIDIzLCAxMzUsIDIxMywgOTQsIDIzLCAxMzUsIDIxMywgOTIsIDIzLCAxMzUsIAotICAgIDI0NSwgNzQsIDIzLCAxMzUsIDI0NSwgNzMsIDIzLCAxMzUsIDI0NSwgNzUsIDIzLCAxMzUsIDIxMywgMjYsIDIzLCAxMzUsIAotICAgIDIxMywgMjUsIDIzLCAxMzUsIDIyNywgMjA0LCAyMywgMTM1LCAyMjcsIDIwNSwgMjMsIDEzNSwgMjI3LCAxOTgsIDIzLCAKLSAgICAxMzUsIDIyNywgMjAzLCAyMywgMTM1LCAyMjcsIDIwMSwgMjMsIDEzNSwgMjEyLCAyMjksIDIzLCAxMzUsIDIxMiwgMjI4LCAKLSAgICAyMywgMTM1LCAyMTIsIDIyNywgMjMsIDEzNSwgMjEyLCAyMzAsIDIzLCAxMzUsIDIxMiwgMjMxLCAyMywgMTM1LCAyMTUsIAotICAgIDI1MiwgMjMsIDEzNSwgMjE1LCAyNTEsIDIzLCAxMzUsIDIxNSwgMjUwLCAyMywgMTM1LCAyMTUsIDI0NywgMjMsIDEzNSwgCi0gICAgMjE1LCAyNDgsIDIzLCAxMzUsIDIxMiwgMjAyLCAyMywgMTM1LCAyMTIsIDE5OSwgMjMsIDEzNSwgMjEyLCAyMDAsIDIzLCAKLSAgICAxMzUsIDIxMiwgMTk0LCAyMywgMTM1LCAyMTIsIDE5NSwgMjMsIDEzNSwgMjEyLCAxOTYsIDIzLCAxMzUsIDIxMiwgMTk4LCAKLSAgICAyMywgMTM1LCAyNDUsIDE2LCAyMywgMTM1LCAyNDUsIDE4LCAyMywgMTM1LCAyMTIsIDI1NCwgMjMsIDEzNSwgMjQwLCAxNDUsIAotICAgIDIzLCAxMzUsIDI0MCwgMTM3LCAyMywgMTM1LCAyNDAsIDE0MCwgMjMsIDEzNSwgMjQwLCAxMzgsIDIzLCAxMzUsIDI0MCwgCi0gICAgMTQyLCAyMywgMTM1LCAyNDAsIDE0NCwgMjMsIDEzNSwgMjUzLCAyMDQsIDIzLCAxMzUsIDI1MywgMjAxLCAyMywgMTM1LCAKLSAgICAyNTMsIDE5OSwgMjMsIDEzNSwgMjUzLCAyMDAsIDIzLCAxMzUsIDIxOSwgMTU1LCAyMywgMTM1LCAyNTUsIDYxLCAyMywgCi0gICAgMTM1LCAyMTMsIDkzLCAyMywgMTM1LCAyMTMsIDI0LCAyMywgMTM1LCAyMjcsIDIwMCwgMjMsIDEzNSwgMjI3LCAxOTksIDIzLCAKLSAgICA4OSwgMjM0LCA2NywgMjMsIDg5LCAyMTksIDE1MCwgMjMsIDg5LCAyMzQsIDYwLCAyMywgODksIDIyOSwgNTcsIDIzLCA4OSwgCi0gICAgMjI5LCA1NSwgMjMsIDg5LCAyMjksIDU0LCAyMywgODksIDIxNywgNTUsIDIzLCA4OSwgMjIzLCAxNzksIDIzLCA4OSwgMjIzLCAKLSAgICAxNzQsIDIzLCA4OSwgMjIzLCAxNzEsIDIzLCA4OSwgMjIzLCAxNjQsIDIzLCA4OSwgMjIzLCAxNTksIDIzLCA4OSwgMjIzLCAKLSAgICAxNTQsIDIzLCA4OSwgMjIzLCAxNjUsIDIzLCA4OSwgMjIzLCAxNzcsIDIzLCA4OSwgMjMxLCAzMCwgMjMsIDg5LCAyMjUsIAotICAgIDIyNywgMjMsIDg5LCAyMjUsIDIxNiwgMjMsIDg5LCAyMjAsIDc2LCAyMywgODksIDIxOSwgMTQ0LCAyMywgODksIDIzNiwgCi0gICAgNTEsIDIzLCA4OSwgMjQ5LCAyMzksIDIzLCA4OSwgMjUwLCA0MywgMjMsIDg5LCAyMzQsIDExNiwgMjMsIDg5LCAyMTcsIAotICAgIDEyNiwgMjMsIDg5LCAyMjYsIDcsIDIzLCA4OSwgMjQxLCAxNTgsIDIzLCA4OSwgMjM0LCA2MSwgMjMsIDg5LCAyMzQsIDU5LCAKLSAgICAyMywgODksIDIyOSwgNTMsIDIzLCA4OSwgMjI5LCA0NywgMjMsIDg5LCAyMjksIDQ5LCAyMywgODksIDIyOSwgNTIsIDIzLCAKLSAgICA4OSwgMjI5LCA0OCwgMjMsIDg5LCAyMTcsIDUyLCAyMywgODksIDIxNywgNDksIDIzLCA4OSwgMjIzLCAxNzIsIDIzLCA4OSwgCi0gICAgMjIzLCAxNjcsIDIzLCA4OSwgMjIzLCAxNTMsIDIzLCA4OSwgMjIzLCAxNTIsIDIzLCA4OSwgMjE5LCAxNDYsIDIzLCA4OSwgCi0gICAgMjIzLCAxNjksIDIzLCA4OSwgMjIzLCAxNjgsIDIzLCA4OSwgMjIzLCAxNjEsIDIzLCA4OSwgMjIzLCAxNjMsIDIzLCA4OSwgCi0gICAgMjIzLCAxNzYsIDIzLCA4OSwgMjIzLCAxNTYsIDIzLCA4OSwgMjIzLCAxNjYsIDIzLCA4OSwgMjIzLCAxNzUsIDIzLCA4OSwgCi0gICAgMjIzLCAxNTEsIDIzLCA4OSwgMjMxLCAyNiwgMjMsIDg5LCAyMzEsIDIxLCAyMywgODksIDIzMSwgMjMsIDIzLCA4OSwgMjMxLCAKLSAgICAyMCwgMjMsIDg5LCAyMzEsIDE4LCAyMywgODksIDIzMSwgMjQsIDIzLCA4OSwgMjMxLCAyOSwgMjMsIDg5LCAyMzEsIDI3LCAKLSAgICAyMywgODksIDIzNCwgMjI2LCAyMywgODksIDIyNSwgMjE4LCAyMywgODksIDIyNSwgMjE5LCAyMywgODksIDIyNSwgMjI0LCAKLSAgICAyMywgODksIDIzNCwgMjI0LCAyMywgODksIDIyMCwgNjksIDIzLCA4OSwgMjIwLCA1OSwgMjMsIDg5LCAyMjAsIDYyLCAyMywgCi0gICAgODksIDIyMCwgNjQsIDIzLCA4OSwgMjI2LCAxNjAsIDIzLCA4OSwgMjM2LCA0NiwgMjMsIDg5LCAyMzYsIDM5LCAyMywgODksIAotICAgIDIxOSwgMTUxLCAyMywgODksIDIzNiwgNDcsIDIzLCA4OSwgMjEzLCAxNywgMjMsIDg5LCAyMTMsIDEzLCAyMywgODksIDIxMywgCi0gICAgMTQsIDIzLCA4OSwgMjI2LCA1LCAyMywgODksIDIzNCwgMjI1LCAyMywgODksIDI0MSwgMTU2LCAyMywgODksIDI0MSwgMTU0LCAKLSAgICAyMywgODksIDI0MSwgMTU3LCAyMywgODksIDI0MSwgMTU1LCAyMywgODksIDIxMywgMjMsIDIzLCA4OSwgMjM0LCA2MywgMjMsIAotICAgIDg5LCAyMzQsIDYyLCAyMywgODksIDIzNCwgNjYsIDIzLCA4OSwgMjM0LCA2NCwgMjMsIDg5LCAyMzQsIDY1LCAyMywgODksIAotICAgIDIxOSwgMTQ4LCAyOCwgNCwgMTU5LCAyOCwgNCwgMjQwLCAyMTIsIDI4LCA0LCAyNDEsIDE2NSwgMjgsIDQsIDI0MiwgMjcsIAotICAgIDI4LCA0LCAyNDEsIDIwNCwgMjgsIDQsIDI0MSwgMjIyLCAyOCwgNCwgMjQxLCA1NCwgMjgsIDQsIDI0MSwgNTMsIDI4LCA0LCAKLSAgICAyMzMsIDE1NywgMjgsIDQsIDIzMiwgMTU2LCAyOCwgNCwgMjMzLCAxMywgMjgsIDQsIDIzMywgMTU2LCAyOCwgNCwgMjMzLCAKLSAgICA3NCwgMjgsIDQsIDIzMywgODIsIDI4LCA0LCAyMzIsIDIwOCwgMjgsIDQsIDIzMiwgMTI5LCAyOCwgNCwgMjQxLCAxNzQsIAotICAgIDI4LCA0LCAyNDEsIDE2OCwgMjgsIDQsIDI0MSwgMTcwLCAyOCwgNCwgMjQxLCAxNzMsIDI4LCA0LCAyNDEsIDE3MSwgMjgsIAotICAgIDQsIDI0MSwgMTcyLCAyOCwgNCwgMjQxLCAxNjksIDI4LCA0LCAyNDEsIDE2NywgMjgsIDQsIDE4OCwgMjgsIDQsIDIzMCwgCi0gICAgMTcyLCAyOCwgNCwgMjMxLCA0MiwgMjgsIDQsIDIzMiwgNDEsIDI4LCA0LCAyMzEsIDE0NSwgMjgsIDQsIDIzMSwgMTU2LCAKLSAgICAyOCwgNCwgMjMwLCAyMzEsIDI4LCA0LCAyMzAsIDExNCwgMjgsIDQsIDIxOCwgMTEwLCAyOCwgNCwgMjE4LCAxMDQsIDI4LCAKLSAgICA0LCAyMTgsIDEwNiwgMjgsIDQsIDIxOCwgMTA5LCAyOCwgNCwgMjE4LCAxMDcsIDI4LCA0LCAyMTgsIDEwOCwgMjgsIDQsIAotICAgIDIxOCwgMTA1LCAyOCwgNCwgMjE4LCAxMDMsIDI4LCA0LCAyMDMsIDI4LCA0LCAyMjMsIDUxLCAyOCwgNCwgMjIzLCAxODgsIAotICAgIDI4LCA0LCAyMjQsIDc0LCAyOCwgNCwgMjI0LCAxLCAyOCwgNCwgMjI0LCAyMSwgMjgsIDQsIDIyMywgMTEyLCAyOCwgNCwgCi0gICAgMjIzLCAyMSwgMjgsIDQsIDIyMiwgMjAyLCAyOCwgNCwgMjE5LCAyNywgMjgsIDQsIDIyMCwgMTE3LCAyOCwgNCwgMjIyLCAKLSAgICAyMDAsIDI4LCA0LCAyMjIsIDg5LCAyOCwgNCwgMjIyLCAxMDAsIDI4LCA0LCAyMTksIDI0MiwgMjgsIDQsIDIxOCwgMTk4LCAKLSAgICAyOCwgNCwgMjIxLCAyNCwgMjgsIDQsIDIyMCwgMTUwLCAyOCwgNCwgMjIwLCAyMTIsIDI4LCA0LCAyMjEsIDIwLCAyOCwgNCwgCi0gICAgMjIwLCAyNDEsIDI4LCA0LCAyMjAsIDI0MywgMjgsIDQsIDIyMCwgMTg3LCAyOCwgNCwgMjIwLCAxMzQsIDI4LCA0LCAyMjQsIAotICAgIDIzMiwgMjgsIDQsIDIyNCwgMTc1LCAyOCwgNCwgMjI0LCAxOTgsIDI4LCA0LCAyMjQsIDIzMSwgMjgsIDQsIDIyNCwgMjEyLCAKLSAgICAyOCwgNCwgMjI0LCAyMTMsIDI4LCA0LCAyMjQsIDE4NywgMjgsIDQsIDIyNCwgMTg2LCAyOCwgNCwgMjI0LCAxMzEsIDI4LCAKLSAgICA0LCAyMjQsIDEyNywgMjgsIDQsIDIyNCwgMTMwLCAyOCwgNCwgMjI0LCAxMjgsIDI4LCA0LCAyMjQsIDEyOSwgMjgsIDQsIAotICAgIDIyNCwgMjEwLCAyOCwgNCwgMjI0LCAyMDQsIDI4LCA0LCAyMjQsIDIwNiwgMjgsIDQsIDIyNCwgMjA5LCAyOCwgNCwgMjI0LCAKLSAgICAyMDcsIDI4LCA0LCAyMjQsIDIwOCwgMjgsIDQsIDIyNCwgMjA1LCAyOCwgNCwgMjI0LCAyMDMsIDI4LCA0LCAyMjQsIDE5OSwgCi0gICAgMjgsIDQsIDIyNCwgMjAyLCAyOCwgNCwgMjI0LCAyMDAsIDI4LCA0LCAyMjQsIDIwMSwgMjgsIDQsIDI1MiwgMTA3LCAyOCwgCi0gICAgNCwgMjUxLCA1NCwgMjgsIDQsIDI1MSwgMTg0LCAyOCwgNCwgMjUyLCAxMDYsIDI4LCA0LCAyNTEsIDI0MiwgMjgsIDQsIAotICAgIDI1MSwgMjUxLCAyOCwgNCwgMjUxLCAxMjgsIDI4LCA0LCAyNTEsIDEyLCAyOCwgNCwgMjE1LCAxLCAyOCwgNCwgMjE0LCA5OSwgCi0gICAgMjgsIDQsIDIxNCwgMTU0LCAyOCwgNCwgMjE1LCAwLCAyOCwgNCwgMjE0LCAyMjcsIDI4LCA0LCAyMTQsIDIzMiwgMjgsIDQsIAotICAgIDIxNCwgMTE5LCAyOCwgNCwgMjE0LCA5MSwgMjgsIDQsIDIxOCwgNTIsIDI4LCA0LCAyMTYsIDgyLCAyOCwgNCwgMjE3LCA3MSwgCi0gICAgMjgsIDQsIDIxOCwgNDksIDI4LCA0LCAyMTcsIDIxOSwgMjgsIDQsIDIxNywgMjI5LCAyOCwgNCwgMTA4LCAyOCwgNCwgMjE2LCAKLSAgICA0NSwgMjgsIDQsIDI1MCwgMjE5LCAyOCwgNCwgMjQ5LCA1MywgMjgsIDQsIDI0OSwgMjQ0LCAyOCwgNCwgMjUwLCAyMTgsIAotICAgIDI4LCA0LCAyNTAsIDExNiwgMjgsIDQsIDI1MCwgMTI0LCAyOCwgNCwgMjQ5LCAxNzUsIDI4LCA0LCAyNDksIDI0LCAyOCwgNCwgCi0gICAgMjEzLCAxNTMsIDI4LCA0LCAyMTMsIDEyOSwgMjgsIDQsIDIxMywgMTQ1LCAyOCwgNCwgMjEzLCAxNTIsIDI4LCA0LCAyMTMsIAotICAgIDE0OSwgMjgsIDQsIDIxMywgMTUwLCAyOCwgNCwgMjEzLCAxMzYsIDI4LCA0LCAyMTMsIDEzNSwgMjgsIDQsIDIxMywgMTI0LCAKLSAgICAyOCwgNCwgMjEzLCAxMjAsIDI4LCA0LCAyMTMsIDEyMywgMjgsIDQsIDIxMywgMTIxLCAyOCwgNCwgMjEzLCAxMjIsIDI4LCAKLSAgICA0LCAyMDUsIDI4LCA0LCAyMjgsIDkyLCAyOCwgNCwgMjI5LCA2NCwgMjgsIDQsIDIzMCwgNDMsIDI4LCA0LCAyMjksIDE4NCwgCi0gICAgMjgsIDQsIDIyOSwgMTg3LCAyOCwgNCwgMjI4LCAxODUsIDI4LCA0LCAyMjgsIDMxLCAyOCwgNCwgMjI4LCAyMywgMjgsIDQsIAotICAgIDIyNywgMjQ3LCAyOCwgNCwgMjI4LCAxMCwgMjgsIDQsIDIyOCwgMjIsIDI4LCA0LCAyMjgsIDE2LCAyOCwgNCwgMjI4LCAxNywgCi0gICAgMjgsIDQsIDIyNywgMjUzLCAyOCwgNCwgMjI3LCAyMzksIDI4LCA0LCAyNDIsIDE1NiwgNjEsIDI4LCA0LCAyNDIsIDE1NiwgCi0gICAgNjksIDI4LCA0LCAyNDIsIDE1NiwgNzIsIDI4LCA0LCAyNDIsIDE1NiwgMjU0LCAyMzIsIDI4LCA0LCAyNDIsIDE1NiwgMjQ1LCAKLSAgICAxNjUsIDI4LCA0LCAyNDIsIDE1NiwgNzQsIDI4LCA0LCAyNDIsIDE1NiwgNzUsIDI4LCA0LCAyNDIsIDE1NiwgMjE0LCA0OSwgCi0gICAgMjgsIDQsIDE4MSwgMjgsIDQsIDIzMywgMjM4LCAyOCwgNCwgMjM0LCAxMDEsIDI4LCA0LCAyMzUsIDE0LCAyOCwgNCwgMjM0LCAKLSAgICAxODcsIDI4LCA0LCAyMzQsIDE4OCwgMjgsIDQsIDIzNCwgMzcsIDI4LCA0LCAyMzQsIDM2LCAyOCwgNCwgMjMzLCAyMDQsIAotICAgIDI4LCA0LCAyMzMsIDE5OCwgMjgsIDQsIDIzMywgMjAzLCAyOCwgNCwgMjMzLCAxOTksIDI4LCA0LCAyMzMsIDIwMCwgMjgsIAotICAgIDQsIDIzMywgMTkzLCAyOCwgNCwgMjMzLCAxODcsIDI4LCA0LCAyMzMsIDE4OSwgMjgsIDQsIDIzMywgMTkyLCAyOCwgNCwgCi0gICAgMjMzLCAxOTAsIDI4LCA0LCAyMzMsIDE5MSwgMjgsIDQsIDIzMywgMTg4LCAyOCwgNCwgMjMzLCAxODYsIDI4LCA0LCAyMzMsIAotICAgIDE4MiwgMjgsIDQsIDIzMywgMTg1LCAyOCwgNCwgMjMzLCAxODMsIDI4LCA0LCAyMzMsIDE4NCwgMjgsIDQsIDIxNCwgNDksIAotICAgIDI4LCA0LCAyMTMsIDE4MywgMjgsIDQsIDIxMywgMjM1LCAyOCwgNCwgMjE0LCA0OCwgMjgsIDQsIDIxNCwgMSwgMjgsIDQsIAotICAgIDIxNCwgNiwgMjgsIDQsIDIxMywgMjE0LCAyOCwgNCwgMjEzLCAyMTMsIDI4LCA0LCAyMjYsIDE1LCA2MSwgMjgsIDQsIDIyNiwgCi0gICAgMTUsIDY5LCAyOCwgNCwgMjI2LCAxNSwgNzIsIDI4LCA0LCAyMjYsIDE1LCAyNTQsIDIzMiwgMjgsIDQsIDIyNiwgMTUsIAotICAgIDI0NSwgMTY1LCAyOCwgNCwgMjI2LCAxNSwgNzQsIDI4LCA0LCAyMjYsIDE1LCA3NSwgMjgsIDQsIDIxMiwgMTA5LCAyOCwgNCwgCi0gICAgMjEyLCA4LCAyOCwgNCwgMjEyLCAzNywgMjgsIDQsIDIxMiwgMTA4LCAyOCwgNCwgMjEyLCA4NSwgMjgsIDQsIDIxMiwgODcsIAotICAgIDI4LCA0LCAyMTIsIDE2LCAyOCwgNCwgMjExLCAyNTEsIDI4LCA0LCAyMTIsIDc1LCAyOCwgNCwgMjEyLCA1NSwgMjgsIDQsIAotICAgIDIxMiwgNjIsIDI4LCA0LCAyMTIsIDc0LCAyOCwgNCwgMjEyLCA2NiwgMjgsIDQsIDIxMiwgNjcsIDI4LCA0LCAyMTIsIDYwLCAKLSAgICAyOCwgNCwgMjEyLCA0NiwgMjgsIDQsIDE4NiwgMjgsIDQsIDIxMiwgMjAzLCAyOCwgNCwgMjEyLCAyNTUsIDI4LCA0LCAyMTMsIAotICAgIDkxLCAyOCwgNCwgMjEzLCAzNSwgMjgsIDQsIDIxMywgMzgsIDI4LCA0LCAyMTIsIDIzNSwgMjgsIDQsIDIxMiwgMjI2LCAyOCwgCi0gICAgNCwgMjQ4LCAxNjQsIDI4LCA0LCAyNDYsIDMzLCAyOCwgNCwgMjQ3LCAyMTEsIDI4LCA0LCAyNDgsIDE2MywgMjgsIDQsIAotICAgIDI0OCwgMjgsIDI4LCA0LCAyNDgsIDQxLCAyOCwgNCwgMjQ3LCA5OSwgMjgsIDQsIDI0NiwgMiwgMjgsIDQsIDI0OCwgODYsIAotICAgIDI4LCA0LCAyNDgsIDUxLCAyOCwgNCwgMjQ4LCA2MywgMjgsIDQsIDI0OCwgODUsIDI4LCA0LCAyNDgsIDczLCAyOCwgNCwgCi0gICAgMjQ4LCA3NCwgMjgsIDQsIDI0OCwgNTYsIDI4LCA0LCAyNDgsIDQyLCAyOCwgNCwgMjM1LCAxMzksIDI4LCA0LCAyMzUsIDU0LCAKLSAgICAyOCwgNCwgMjM1LCAxMTAsIDI4LCA0LCAyMzUsIDEzOCwgMjgsIDQsIDIzNSwgMTI1LCAyOCwgNCwgMjM1LCAxMjcsIDI4LCAKLSAgICA0LCAyMzUsIDcxLCAyOCwgNCwgMjM1LCAzNSwgMjgsIDQsIDI0MywgMTEwLCAyOCwgNCwgMjQyLCA5MiwgMjgsIDQsIDI0MiwgCi0gICAgMTkwLCAyOCwgNCwgMjQzLCAxMDcsIDI4LCA0LCAyNDMsIDMxLCAyOCwgNCwgMjQzLCAzOCwgMjgsIDQsIDI0MiwgMTUwLCAKLSAgICAyOCwgNCwgMjQyLCAxNDksIDI4LCA0LCAyNDIsIDU5LCAyOCwgNCwgMjQyLCA1NSwgMjgsIDQsIDI0MiwgNTgsIDI4LCA0LCAKLSAgICAyNDIsIDU2LCAyOCwgNCwgMjQyLCA1NywgMjgsIDQsIDI0MywgNSwgMjgsIDQsIDI0MiwgMjQxLCAyOCwgNCwgMjQyLCAyNTEsIAotICAgIDI4LCA0LCAyNDMsIDQsIDI4LCA0LCAyNDIsIDI1NSwgMjgsIDQsIDI0MywgMCwgMjgsIDQsIDI0MiwgMjQ1LCAyOCwgNCwgCi0gICAgMjQyLCAyMzAsIDI4LCA0LCAyMTcsIDE2MSwgMjgsIDQsIDIxNywgOTAsIDI4LCA0LCAyMTcsIDEyOCwgMjgsIDQsIDIxNywgCi0gICAgMTYwLCAyOCwgNCwgMjE3LCAxNDcsIDI4LCA0LCAyMTcsIDE0OCwgMjgsIDQsIDIxNywgMTA5LCAyOCwgNCwgMjE3LCA4MiwgCi0gICAgMjgsIDQsIDI1MCwgOTIsIDI4LCA0LCAyNTAsIDYsIDI4LCA0LCAyNTAsIDQ3LCAyOCwgNCwgMjUwLCA5MSwgMjgsIDQsIAotICAgIDI1MCwgNjQsIDI4LCA0LCAyNTAsIDY3LCAyOCwgNCwgMjUwLCAyMywgMjgsIDQsIDI0OSwgMjUxLCAyOCwgNCwgMjI2LCAyMywgCi0gICAgMjgsIDQsIDIyNSwgMjQ2LCAyOCwgNCwgMjI2LCA5LCAyOCwgNCwgMjI2LCAyMiwgMjgsIDQsIDIyNiwgMTEsIDI4LCA0LCAKLSAgICAyMjYsIDEyLCAyOCwgNCwgMjI1LCAyNTMsIDI4LCA0LCAyMjUsIDI0MiwgMjgsIDQsIDIxNiwgMTQxLCAyOCwgNCwgMjE2LCAKLSAgICAxMjIsIDI4LCA0LCAyMTYsIDEyNSwgMjgsIDQsIDIxNiwgMTQwLCAyOCwgNCwgMjE2LCAxMzUsIDI4LCA0LCAyMTYsIDEzNiwgCi0gICAgMjgsIDQsIDIxNiwgMTI0LCAyOCwgNCwgMjE2LCAxMjAsIDI4LCA0LCAyMTYsIDUsIDI4LCA0LCAyMTUsIDI1MywgMjgsIDQsIAotICAgIDIxNiwgMSwgMjgsIDQsIDIxNiwgNCwgMjgsIDQsIDIxNiwgMiwgMjgsIDQsIDIxNiwgMywgMjgsIDQsIDIxNSwgMjU1LCAyOCwgCi0gICAgNCwgMjE1LCAyNTQsIDI4LCA0LCAyNDQsIDE2NCwgMjgsIDQsIDI0MywgMjA1LCAyOCwgNCwgMjQ0LCA5MCwgMjgsIDQsIAotICAgIDI0NCwgMTYzLCAyOCwgNCwgMjQ0LCAxMTYsIDI4LCA0LCAyNDQsIDEyMywgMjgsIDQsIDI0NCwgMTIsIDI4LCA0LCAyNDMsIAotICAgIDE4OCwgMjgsIDQsIDE5MywgMjgsIDQsIDIyNSwgMzUsIDI4LCA0LCAyMjUsIDI0MCwgMjgsIDQsIDIyNiwgMjEzLCAyOCwgNCwgCi0gICAgMjI2LCA4NiwgMjgsIDQsIDIyNiwgOTYsIDI4LCA0LCAyMjUsIDE1MCwgMjgsIDQsIDIyNSwgMiwgMjgsIDQsIDIyMywgMTEsIAotICAgIDI4LCA0LCAyMzAsIDEwMywgMjgsIDQsIDI0MywgMTgyLCAyOCwgMzcsIDI0MywgMjksIDI0LCAzMCwgMjMzLCA0NywgNzcsIAotICAgIDI4LCAzNywgMzAsIDIzMywgNDcsIDc3LCAyOCwgMzcsIDI0MywgMjksIDc3LCAyOCwgMjIyLCA5MiwgNzcsIDI4LCAyMTMsIAotICAgIDE5NSwgMjgsIDI0MywgMjAwLCAyMTksIDY5LCAyOCwgMjQ5LCAxNTcsIDI4LCAyMjEsIDcwLCAyOCwgMjQ5LCAxNjQsIDI4LCAKLSAgICAyMjUsIDc5LCAyNDksIDE2NCwgMjgsIDIyNCwgMTU4LCA3NywgMjgsIDIyNiwgMTQzLCAyMjEsIDU3LCAyOCwgMjEsIDExNiwgCi0gICAgMjgsIDIxLCAxMDksIDI4LCAyMSwgMTY2LCAyOCwgMjEsIDE2MywgMjgsIDIxLCAxODAsIDI4LCAyMSwgMTg5LCAyOCwgMjEsIAotICAgIDE5OCwgMjgsIDIxLCAxOTUsIDI4LCAyMSwgMjAwLCAyOCwgNTAsIDIxNywgMjAwLCAyOCwgNTAsIDIxNiwgMzgsIDI4LCA1MCwgCi0gICAgMjE3LCAxMTUsIDI4LCA1MCwgMjQzLCAyNDAsIDI4LCA1MCwgMjQ0LCA4MywgMjgsIDUwLCAyMjAsIDM5LCAyOCwgNTAsIAotICAgIDIyMSwgMzcsIDI4LCA1MCwgMjQ1LCAxNDEsIDI4LCA1MCwgMjI5LCAyNiwgMjgsIDUwLCAyNDAsIDIwMCwgMjgsIDUwLCAKLSAgICAyMTcsIDIwMSwgMjE3LCAxMDAsIDI4LCA0LCAyMjIsIDk2LCAyMzAsIDExNCwgMjgsIDQsIDIzMCwgMTEwLCAyOCwgNCwgCi0gICAgMjMwLCAxMTEsIDI4LCA0LCAyMzAsIDExMiwgMjgsIDQsIDIyMiwgOTYsIDI1MSwgMTIsIDI4LCA0LCAyNTEsIDksIDI4LCA0LCAKLSAgICAyNTEsIDEwLCAyOCwgNCwgMjUxLCAxMSwgMjgsIDQsIDIyMiwgOTYsIDI0MywgMTg4LCAyOCwgNCwgMjQzLCAxODQsIDI4LCAKLSAgICA0LCAyNDMsIDE4NSwgMjgsIDQsIDI0MywgMTg2LCAyOCwgNCwgMjIyLCA5NiwgMjI1LCAyLCAyOCwgNCwgMjI0LCAyNTQsIAotICAgIDI4LCA0LCAyMjQsIDI1NSwgMjgsIDQsIDIyNSwgMCwgMjgsIDIxNiwgMjQyLCAxNTIsIDIxMiwgMjM4LCAyOCwgMjE2LCAKLSAgICAyNDIsIDE1MiwgMjQ3LCAyNDgsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMjMsIDEzNSwgMjgsIDIxNiwgMjQyLCAxNTIsIDIyMCwgCi0gICAgMTc1LCAyMjMsIDEzNSwgMjgsIDIxNiwgMjQyLCAxNTIsIDI0NywgMTg3LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjM0LCAxNzAsIAotICAgIDI4LCAyMTYsIDI0MiwgMTUyLCAyNTAsIDMxLCAyOCwgMjE2LCAyNDIsIDE1MiwgMjQxLCAxNjIsIDI4LCAyMTYsIDI0MiwgCi0gICAgMTUyLCAyNDcsIDI0NywgMjgsIDIxNiwgMjQyLCAxNTIsIDIzMywgMjE1LCAxNTgsIDEsIDYxLCAxNTgsIDEsIDc0LCAxNTgsIAotICAgIDEsIDcyLCAxNTgsIDEsIDc1LCAxNTgsIDEsIDY5LCAxNTgsIDEsIDIxNSwgNzksIDE1OCwgMSwgMjQzLCAxMTAsIDE1OCwgMSwgCi0gICAgMTgxLCAxNTgsIDEsIDI0MywgMzgsIDE1OCwgMSwgMjQyLCAxOTAsIDE1OCwgMSwgMjQyLCAxNTAsIDE1OCwgMSwgMjQyLCAKLSAgICA5MiwgMTU4LCAxLCAyNDIsIDYwLCAxNTgsIDEsIDE1OSwgMTU4LCAxLCAyNDEsIDIyMiwgMTU4LCAxLCAyNDEsIDE2NSwgCi0gICAgMTU4LCAxLCAyNDEsIDU0LCAxNTgsIDEsIDI0MCwgMjEyLCAxNTgsIDEsIDI0MCwgMTkzLCAxNTgsIDEsIDIzMywgMTU3LCAKLSAgICAxNTgsIDEsIDIzMywgODIsIDE1OCwgMSwgMjMzLCAxMywgMTU4LCAxLCAyMzIsIDIwOCwgMTU4LCAxLCAyMzIsIDE1NiwgCi0gICAgMTU4LCAxLCAyMzIsIDEzMCwgMTU4LCAxLCAxODgsIDE1OCwgMSwgMjMxLCAxNTYsIDE1OCwgMSwgMjMxLCA0MiwgMTU4LCAxLCAKLSAgICAyMzAsIDIzMSwgMTU4LCAxLCAyMzAsIDE3MiwgMTU4LCAxLCAyMDUsIDE1OCwgMSwgMjQxLCA3NiwgMTU4LCAxLCAyMzAsIAotICAgIDMxLCAxNTgsIDEsIDIyOSwgMTg3LCAxNTgsIDEsIDIyOSwgNjQsIDE1OCwgMSwgMjI4LCAxODUsIDE1OCwgMSwgMjI4LCA5MiwgCi0gICAgMTU4LCAxLCAyMjgsIDMzLCAxNTgsIDEsIDIyNCwgMTc0LCAxNTgsIDEsIDIyNCwgMTYxLCAxNTgsIDEsIDIyNCwgMTU0LCAKLSAgICAxNTgsIDEsIDIyNCwgMTQ2LCAxNTgsIDEsIDIyNCwgMTM1LCAxNTgsIDEsIDIyNCwgMTMzLCAxNTgsIDEsIDIyMiwgMjAyLCAKLSAgICAxNTgsIDEsIDE5NywgMTU4LCAxLCAyMjIsIDEwMCwgMTU4LCAxLCAyMjAsIDExNywgMTU4LCAxLCAyMTksIDI0MiwgMTU4LCAKLSAgICAxLCAyMTksIDI3LCAxNTgsIDEsIDIxOCwgMjAzLCAxNTgsIDEsIDI0OCwgMTY0LCAxNTgsIDEsIDIxOCwgNTIsIDE1OCwgMSwgCi0gICAgMjQ4LCA0MSwgMTU4LCAxLCAyMTcsIDIyOSwgMTU4LCAxLCAyNDcsIDIxMSwgMTU4LCAxLCAyMTcsIDcxLCAxNTgsIDEsIAotICAgIDI0NywgOTksIDE1OCwgMSwgMjQ2LCAzMywgMTU4LCAxLCAyNDYsIDUsIDE1OCwgMSwgMjQ3LCAxMDgsIDE1OCwgMSwgMjE3LCAKLSAgICAxMiwgMTU4LCAxLCAyMTcsIDExLCAxNTgsIDEsIDIxNywgMSwgMTU4LCAxLCAyMTcsIDAsIDE1OCwgMSwgMjE2LCAyNTUsIAotICAgIDE1OCwgMSwgMjE2LCAyNTQsIDE1OCwgMSwgMjE2LCAxNDEsIDE1OCwgMSwgMjE2LCAxMzYsIDE1OCwgMSwgMjE2LCAxMjUsIAotICAgIDE1OCwgMSwgMjE2LCAxMjQsIDE1OCwgMSwgMjE2LCAxMjIsIDE1OCwgMSwgMjE2LCAxMjEsIDE1OCwgMSwgMjE0LCA0OSwgCi0gICAgMTU4LCAxLCAyMTQsIDYsIDE1OCwgMSwgMjEzLCAyMzUsIDE1OCwgMSwgMjEzLCAyMTQsIDE1OCwgMSwgMjEzLCAxODMsIAotICAgIDE1OCwgMSwgMjEzLCAxNzEsIDE1OCwgMSwgMTg2LCAxNTgsIDEsIDIxMywgMzgsIDE1OCwgMSwgMjEyLCAyNTUsIDE1OCwgMSwgCi0gICAgMjEyLCAyMzUsIDE1OCwgMSwgMjEyLCAyMDMsIDE1OCwgMSwgMjEyLCAxNjksIDE4LCAxOSwgMjQwLCAxNjAsIDE4LCAxOSwgCi0gICAgNzQsIDE4LCAxOSwgMjU0LCAxOTYsIDE4LCAxOSwgNzIsIDE4LCAxOSwgMjM2LCAyOCwgMTgsIDE5LCA3NSwgMTgsIDE5LCAKLSAgICAyMjcsIDQ5LCAxOCwgMTksIDIxMywgMTA0LCAyMjcsIDQ5LCAxOCwgMTksIDY2LCAyNDUsIDE2NSwgMTgsIDE5LCA2NiwgNzIsIAotICAgIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU0LCAyMzIsIDE4LCAxOSwgMjE0LCA2LCAxOCwgMTksIDE0OCwgMjE0LCA2LCAxOCwgCi0gICAgMTksIDIxMywgMjM1LCAxOCwgMTksIDE0OCwgMjEzLCAyMzUsIDE4LCAxOSwgMjEzLCAyMjcsIDE4LCAxOSwgMTQ4LCAyMTMsIAotICAgIDIyNywgMTgsIDE5LCAyMTMsIDIxNCwgMTgsIDE5LCAxNDgsIDIxMywgMjE0LCAxOCwgMTksIDIxMywgMjAyLCAxOCwgMTksIAotICAgIDE0OCwgMjEzLCAyMDIsIDE4LCAxOSwgMjMwLCAxMSwgMjEzLCAyMDIsIDE4LCAxOSwgMjE0LCA0OSwgMTgsIDE5LCAxNDgsIAotICAgIDIxNCwgNDksIDE4LCAxOSwgMjE0LCA0OCwgMTgsIDE5LCAxNDgsIDIxNCwgNDgsIDE4LCAxOSwgMjMwLCAxMSwgMjE0LCA0OCwgCi0gICAgMTgsIDE5LCAyNTQsIDEwOCwgMTgsIDE5LCAyMTMsIDEwNCwgMjE0LCA4MiwgMTgsIDE5LCAyNDIsIDE1NiwgMjE5LCA2OSwgCi0gICAgMTgsIDE5LCA0MCwgMTc5LCAxOCwgMTksIDQwLCAyNDIsIDExMywgMTgsIDE5LCA0MCwgMjUxLCAxMDEsIDE1MSwgMjIzLCAKLSAgICAxMzAsIDE4LCAxOSwgNDAsIDIxNiwgMjI3LCAxNTEsIDIyMywgMTMwLCAxOCwgMTksIDQwLCA0NiwgMTUxLCAyMjMsIDEzMCwgCi0gICAgMTgsIDE5LCA0MCwgMjIzLCAxMzAsIDE4LCAxOSwgNDAsIDUxLCAxNzksIDE4LCAxOSwgNDAsIDUxLCAyMjAsIDE3NSwgNzEsIAotICAgIDIxOSwgMzIsIDE4LCAxOSwgNDAsIDIzMSwgMzcsIDI0NywgNzQsIDE4LCAxOSwgNDAsIDIyMCwgMTc1LCAxOTksIDkwLCAxOCwgCi0gICAgMTksIDQwLCAyMjUsIDE1NiwgMTgsIDE5LCA0MCwgMTE5LCAyMTgsIDM2LCAxOCwgMTksIDI0NSwgMTA4LCAxOCwgMTksIAotICAgIDIzNSwgMjUxLCAxOCwgMTksIDIyNywgNjIsIDE4LCAxOSwgMjU0LCAzMiwgMTgsIDE5LCAyMjYsIDk2LCAxOCwgMTksIDIyNiwgCi0gICAgMjExLCAxOCwgMTksIDIyNSwgMjQwLCAxOCwgMTksIDIyNSwgMjAzLCAxOCwgMTksIDIyNSwgMTUwLCAxOCwgMTksIDIyNSwgCi0gICAgMTI5LCAxOCwgMTksIDIxMywgMTA0LCAyMjUsIDEyOSwgMTgsIDE5LCA2NiwgMjQxLCAyMDQsIDE4LCAxOSwgNjYsIDI0MSwgCi0gICAgMTY1LCAxOCwgMTksIDE5MywgMTgsIDE5LCAyMjYsIDIxMywgMTgsIDE5LCAyMjUsIDAsIDE4LCAxOSwgMTQ4LCAyMjUsIDAsIAotICAgIDE4LCAxOSwgMjI0LCAyNTQsIDE4LCAxOSwgMTQ4LCAyMjQsIDI1NCwgMTgsIDE5LCAyMjQsIDI1MywgMTgsIDE5LCAxNDgsIAotICAgIDIyNCwgMjUzLCAxOCwgMTksIDIyNCwgMjUxLCAxOCwgMTksIDE0OCwgMjI0LCAyNTEsIDE4LCAxOSwgMjI0LCAyNTAsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMjQsIDI1MCwgMTgsIDE5LCAyMjUsIDIsIDE4LCAxOSwgMTQ4LCAyMjUsIDIsIDE4LCAxOSwgMjI1LCAxLCAKLSAgICAxOCwgMTksIDE0OCwgMjI1LCAxLCAxOCwgMTksIDIxMywgMTA0LCAyMjUsIDEsIDE4LCAxOSwgMjI2LCAyMjksIDE4LCAxOSwgCi0gICAgMTQ4LCAyMjYsIDIyOSwgMTgsIDE5LCA2NiwgMjQyLCA0MSwgMTgsIDE5LCAyMTcsIDIyOSwgMTgsIDE5LCAyMTgsIDQ3LCAKLSAgICAxOCwgMTksIDIxNywgNzEsIDE4LCAxOSwgMjE3LCA1NywgMTgsIDE5LCAxMDgsIDE4LCAxOSwgMjE2LCAyMzAsIDE4LCAxOSwgCi0gICAgMjEzLCAxMDQsIDIxNiwgMjMwLCAxOCwgMTksIDY2LCAyNDgsIDI4LCAxOCwgMTksIDY2LCAyNDcsIDIxMSwgMTgsIDE5LCAKLSAgICAyMTgsIDUyLCAxOCwgMTksIDIxOCwgNDksIDE4LCAxOSwgMjE2LCA0MywgMTgsIDE5LCAxNDgsIDIxNiwgNDMsIDE4LCAxOSwgCi0gICAgMjE2LCAyNywgMTgsIDE5LCAxNDgsIDIxNiwgMjcsIDE4LCAxOSwgMjE2LCAyNiwgMTgsIDE5LCAxNDgsIDIxNiwgMjYsIDE4LCAKLSAgICAxOSwgMTA5LCAxOCwgMTksIDE0OCwgMTA5LCAxOCwgMTksIDIxNiwgMjAsIDE4LCAxOSwgMTQ4LCAyMTYsIDIwLCAxOCwgMTksIAotICAgIDIxNiwgNDUsIDE4LCAxOSwgMTQ4LCAyMTYsIDQ1LCAxOCwgMTksIDIxNiwgNDQsIDE4LCAxOSwgMTQ4LCAyMTYsIDQ0LCAxOCwgCi0gICAgMTksIDIzMCwgMTEsIDIxNiwgNDQsIDE4LCAxOSwgMjE4LCA5OSwgMTgsIDE5LCAyMTYsIDExMiwgMTgsIDE5LCAyMTYsIDk2LCAKLSAgICAxOCwgMTksIDIxNiwgOTUsIDE4LCAxOSwgMjE2LCAxMTUsIDE4LCAxOSwgMjM0LCAxODgsIDE4LCAxOSwgMjM1LCAxMSwgMTgsIAotICAgIDE5LCAyMzQsIDEwMSwgMTgsIDE5LCAyMzQsIDkyLCAxOCwgMTksIDIzNCwgMzcsIDE4LCAxOSwgMjM0LCAxOSwgMTgsIDE5LCAKLSAgICAyMTMsIDEwNCwgMjM0LCAxOSwgMTgsIDE5LCAxODEsIDE4LCAxOSwgMjM1LCAxNCwgMTgsIDE5LCAyMzMsIDIwMCwgMTgsIAotICAgIDE5LCAxNDgsIDIzMywgMjAwLCAxOCwgMTksIDIzMywgMTk4LCAxOCwgMTksIDE0OCwgMjMzLCAxOTgsIDE4LCAxOSwgMjMzLCAKLSAgICAxOTcsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5NywgMTgsIDE5LCAyMzMsIDE5NiwgMTgsIDE5LCAxNDgsIDIzMywgMTk2LCAxOCwgCi0gICAgMTksIDIzMywgMTk1LCAxOCwgMTksIDE0OCwgMjMzLCAxOTUsIDE4LCAxOSwgMjMzLCAyMDQsIDE4LCAxOSwgMTQ4LCAyMzMsIAotICAgIDIwNCwgMTgsIDE5LCAyMzMsIDIwMywgMTgsIDE5LCAxNDgsIDIzMywgMjAzLCAxOCwgMTksIDIzMCwgMTEsIDIzMywgMjAzLCAKLSAgICAxOCwgMTksIDIzNSwgMjcsIDE4LCAxOSwgMjMzLCAyMDUsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMTgyLCAxOCwgMTksIAotICAgIDIxOSwgMjE0LCAyMzQsIDkzLCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDMyLCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDI1MiwgCi0gICAgMTgsIDE5LCAyNTAsIDEyNCwgMTgsIDE5LCAyNTAsIDIxNywgMTgsIDE5LCAyNDksIDI0NCwgMTgsIDE5LCAyNDksIDIzNCwgCi0gICAgMTgsIDE5LCAyNDksIDE3NSwgMTgsIDE5LCAyNDksIDExMywgMTgsIDE5LCAyMTMsIDEwNCwgMjQ5LCAxMTMsIDE4LCAxOSwgCi0gICAgMjUwLCAyMTksIDE4LCAxOSwgMjUwLCAyMTgsIDE4LCAxOSwgMjQ5LCAyMiwgMTgsIDE5LCAxNDgsIDI0OSwgMjIsIDE4LCAKLSAgICAxOSwgMjQ5LCAyMCwgMTgsIDE5LCAxNDgsIDI0OSwgMjAsIDE4LCAxOSwgMjQ5LCAxOSwgMTgsIDE5LCAxNDgsIDI0OSwgMTksIAotICAgIDE4LCAxOSwgMjQ5LCAxOCwgMTgsIDE5LCAxNDgsIDI0OSwgMTgsIDE4LCAxOSwgMjQ5LCAxNywgMTgsIDE5LCAxNDgsIDI0OSwgCi0gICAgMTcsIDE4LCAxOSwgMjQ5LCAyNCwgMTgsIDE5LCAxNDgsIDI0OSwgMjQsIDE4LCAxOSwgMjQ5LCAyMywgMTgsIDE5LCAxNDgsIAotICAgIDI0OSwgMjMsIDE4LCAxOSwgMjMwLCAxMSwgMjQ5LCAyMywgMTgsIDE5LCAyNTAsIDI1MiwgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMjE3LCAxNjMsIDE4LCAxOSwgMjMxLCAxNTYsIDE4LCAxOSwgMjMyLCA0MCwgMTgsIDE5LCAyMzEsIDQyLCAxOCwgMTksIAotICAgIDIzMSwgMTQsIDE4LCAxOSwgMjMwLCAyMzEsIDE4LCAxOSwgMjMwLCAyMDIsIDE4LCAxOSwgMjEzLCAxMDQsIDIzMCwgMjAyLCAKLSAgICAxOCwgMTksIDE4OCwgMTgsIDE5LCAyMzIsIDQxLCAxOCwgMTksIDIzMCwgMTEyLCAxOCwgMTksIDE0OCwgMjMwLCAxMTIsIAotICAgIDE4LCAxOSwgMjMwLCAxMTAsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMCwgMTgsIDE5LCAyMzAsIDEwOSwgMTgsIDE5LCAxNDgsIAotICAgIDIzMCwgMTA5LCAxOCwgMTksIDIzMCwgMTA4LCAxOCwgMTksIDE0OCwgMjMwLCAxMDgsIDE4LCAxOSwgMjMwLCAxMDcsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMzAsIDEwNywgMTgsIDE5LCAyMzAsIDExNCwgMTgsIDE5LCAxNDgsIDIzMCwgMTE0LCAxOCwgMTksIDIzMCwgCi0gICAgMTEzLCAxOCwgMTksIDE0OCwgMjMwLCAxMTMsIDE4LCAxOSwgMjMwLCAxMSwgMjMwLCAxMTMsIDE4LCAxOSwgMTgzLCAxOCwgCi0gICAgMTksIDE0OCwgMTgzLCAxOCwgMTksIDIzMSwgNDUsIDE4LCAxOSwgMjUzLCAxMjEsIDE4MywgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMTgzLCAxOCwgMTksIDIyOSwgMTg3LCAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMjI5LCA2NCwgMTgsIDE5LCAyMjksIDM5LCAKLSAgICAxOCwgMTksIDIyOCwgMTg1LCAxOCwgMTksIDIyOCwgMTc1LCAxOCwgMTksIDIxMywgMTA0LCAyMjgsIDE3NSwgMTgsIDE5LCAKLSAgICAyMDUsIDE4LCAxOSwgMjMwLCA0MywgMTgsIDE5LCAyMjgsIDI5LCAxOCwgMTksIDE0OCwgMjI4LCAyOSwgMTgsIDE5LCAyMjgsIAotICAgIDMxLCAxOCwgMTksIDE0OCwgMjI4LCAzMSwgMTgsIDE5LCAyMjgsIDMwLCAxOCwgMTksIDE0OCwgMjI4LCAzMCwgMTgsIDE5LCAKLSAgICAyMzAsIDExLCAyMjgsIDMwLCAxOCwgMTksIDIwNCwgMTgsIDE5LCA2NiwgMjI5LCAxNjEsIDE4LCAxOSwgMjI5LCA2OSwgMTgsIAotICAgIDE5LCAyMzMsIDgyLCAxOCwgMTksIDIzMywgMTU1LCAxOCwgMTksIDIzMywgMTMsIDE4LCAxOSwgMjMyLCAyNTUsIDE4LCAxOSwgCi0gICAgMjMyLCAyMDgsIDE4LCAxOSwgMjMyLCAxODAsIDE4LCAxOSwgMjEzLCAxMDQsIDIzMiwgMTgwLCAxOCwgMTksIDIzMywgMTU3LCAKLSAgICAxOCwgMTksIDIzMywgMTU2LCAxOCwgMTksIDIzMiwgMTI3LCAxOCwgMTksIDE0OCwgMjMyLCAxMjcsIDE4LCAxOSwgMjMyLCAKLSAgICAxMjYsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNiwgMTgsIDE5LCAyMzIsIDEyNSwgMTgsIDE5LCAxNDgsIDIzMiwgMTI1LCAxOCwgCi0gICAgMTksIDIzMiwgMTI0LCAxOCwgMTksIDE0OCwgMjMyLCAxMjQsIDE4LCAxOSwgMjMyLCAxMjMsIDE4LCAxOSwgMTQ4LCAyMzIsIAotICAgIDEyMywgMTgsIDE5LCAyMzIsIDEyOSwgMTgsIDE5LCAxNDgsIDIzMiwgMTI5LCAxOCwgMTksIDIzMiwgMTI4LCAxOCwgMTksIAotICAgIDE0OCwgMjMyLCAxMjgsIDE4LCAxOSwgMTUwLCAxOCwgMTksIDE0OCwgMTUwLCAxOCwgMTksIDEzOCwgMTUwLCAxOCwgMTksIAotICAgIDIyMiwgMTAwLCAxOCwgMTksIDIyMiwgMTk4LCAxOCwgMTksIDIyMCwgMTE3LCAxOCwgMTksIDIyMCwgMTAxLCAxOCwgMTksIAotICAgIDIxOSwgMjQyLCAxOCwgMTksIDIxOSwgMjI2LCAxOCwgMTksIDIxMywgMTA0LCAyMTksIDIyNiwgMTgsIDE5LCAyMjIsIDIwMiwgCi0gICAgMTgsIDE5LCAyMjIsIDIwMCwgMTgsIDE5LCAyMTgsIDE5NCwgMTgsIDE5LCAxNDgsIDIxOCwgMTk0LCAxOCwgMTksIDIxOCwgCi0gICAgMTg4LCAxOCwgMTksIDE0OCwgMjE4LCAxODgsIDE4LCAxOSwgMjE4LCAxODcsIDE4LCAxOSwgMTQ4LCAyMTgsIDE4NywgMTgsIAotICAgIDE5LCAyMTgsIDE4MywgMTgsIDE5LCAxNDgsIDIxOCwgMTgzLCAxOCwgMTksIDIxOCwgMTgyLCAxOCwgMTksIDE0OCwgMjE4LCAKLSAgICAxODIsIDE4LCAxOSwgMjE4LCAxOTgsIDE4LCAxOSwgMTQ4LCAyMTgsIDE5OCwgMTgsIDE5LCAyMTgsIDE5NywgMTgsIDE5LCAKLSAgICAxNDgsIDIxOCwgMTk3LCAxOCwgMTksIDIzMCwgMTEsIDIxOCwgMTk3LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyNTMsIDEyMSwgCi0gICAgMTk3LCAxOCwgMTksIDIxOCwgMTk5LCAxOCwgMTksIDI1MSwgMTQxLCAxOTcsIDE4LCAxOSwgMjMwLCAxOTcsIDIyMCwgMzYsIAotICAgIDE4LCAxOSwgMjMwLCAxMSwgMjIwLCAyNywgMTgsIDE5LCAyMzAsIDExLCAyMjMsIDIsIDE4LCAxOSwgMjMwLCAxMSwgMjE5LCAKLSAgICAxNjcsIDE4LCAxOSwgMjMwLCAxMSwgMjE5LCAyOSwgMTgsIDE5LCAyMzAsIDExLCAyMjAsIDI2LCAxOCwgMTksIDIzMCwgMTEsIAotICAgIDIyMiwgMTAzLCAxOCwgMTksIDIyMCwgMjQzLCAxOCwgMTksIDIyMCwgMjEyLCAxOCwgMTksIDIyMCwgMjA3LCAxOCwgMTksIAotICAgIDIyMCwgMTg3LCAxOCwgMTksIDIyMCwgMTgxLCAxOCwgMTksIDIyMSwgMjQsIDE4LCAxOSwgMjIxLCAyMCwgMTgsIDE5LCAKLSAgICAyMjAsIDEzMiwgMTgsIDE5LCAxNDgsIDIyMCwgMTMyLCAxOCwgMTksIDIyMCwgMTMxLCAxOCwgMTksIDE0OCwgMjIwLCAxMzEsIAotICAgIDE4LCAxOSwgMjIwLCAxMzAsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMCwgMTgsIDE5LCAyMjAsIDEyOSwgMTgsIDE5LCAxNDgsIAotICAgIDIyMCwgMTI5LCAxOCwgMTksIDIyMCwgMTI4LCAxOCwgMTksIDE0OCwgMjIwLCAxMjgsIDE4LCAxOSwgMjIwLCAxMzQsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMjAsIDEzNCwgMTgsIDE5LCAyMjAsIDEzMywgMTgsIDE5LCAxNDgsIDIyMCwgMTMzLCAxOCwgMTksIDIyMSwgCi0gICAgMjYsIDE4LCAxOSwgMjEzLCAzOCwgMTgsIDE5LCAyMTMsIDg5LCAxOCwgMTksIDIxMiwgMjU1LCAxOCwgMTksIDIxMiwgMjQ2LCAKLSAgICAxOCwgMTksIDIxMiwgMjM1LCAxOCwgMTksIDIxMiwgMjIwLCAxOCwgMTksIDIxMywgMTA0LCAyMTIsIDIyMCwgMTgsIDE5LCAKLSAgICAxODYsIDE4LCAxOSwgMjEzLCA5MSwgMTgsIDE5LCAyMTIsIDE2NiwgMTgsIDE5LCAxNDgsIDIxMiwgMTY2LCAxOCwgMTksIAotICAgIDIxMiwgMTY1LCAxOCwgMTksIDE0OCwgMjEyLCAxNjUsIDE4LCAxOSwgMjEyLCAxNjQsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2NCwgCi0gICAgMTgsIDE5LCAyMTIsIDE2MywgMTgsIDE5LCAxNDgsIDIxMiwgMTYzLCAxOCwgMTksIDIxMiwgMTYyLCAxOCwgMTksIDE0OCwgCi0gICAgMjEyLCAxNjIsIDE4LCAxOSwgMjEyLCAxNjgsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2OCwgMTgsIDE5LCAyMTIsIDE2NywgMTgsIAotICAgIDE5LCAxNDgsIDIxMiwgMTY3LCAxOCwgMTksIDIzMCwgMTEsIDIxMiwgMTY3LCAxOCwgMTksIDIxMywgMTA1LCAxOCwgMTksIAotICAgIDI1MSwgMTgyLCAyMTMsIDEwNSwgMTgsIDE5LCAxNDgsIDIxMywgMTA1LCAxOCwgMTksIDIyMiwgMTI3LCAyMTIsIDI1NSwgCi0gICAgMTgsIDE5LCAyMjQsIDIxLCAxOCwgMTksIDIyNCwgMTEyLCAyMjQsIDIxLCAxOCwgMTksIDE0OCwgMjMzLCA4MiwgMTgsIDE5LCAKLSAgICAyMjQsIDczLCAxOCwgMTksIDIyMywgMTg4LCAxOCwgMTksIDIyMywgMTM2LCAxOCwgMTksIDIyMywgMTEyLCAxOCwgMTksIAotICAgIDIyMywgOTksIDE4LCAxOSwgMTQ4LCAyMzIsIDIwOCwgMTgsIDE5LCAyMDMsIDE4LCAxOSwgMjI0LCA3NCwgMTgsIDE5LCAKLSAgICAxNDgsIDIzMywgMTU3LCAxOCwgMTksIDIyMywgMjAsIDE4LCAxOSwgMTQ4LCAyMjMsIDIwLCAxOCwgMTksIDE0OSwgMTgsIAotICAgIDE5LCAxNDgsIDE0OSwgMTgsIDE5LCAxMzgsIDE0OSwgMTgsIDE5LCAyNDQsIDEyMywgMTgsIDE5LCAyNDQsIDE2MSwgMTgsIAotICAgIDE5LCAyNDQsIDkwLCAxOCwgMTksIDI0NCwgNzcsIDE4LCAxOSwgMjQ0LCAxMiwgMTgsIDE5LCAyNDQsIDMsIDE4LCAxOSwgCi0gICAgMjQ0LCAxNjQsIDE4LCAxOSwgMjQ0LCAxNjMsIDE4LCAxOSwgMjQzLCAxODcsIDE4LCAxOSwgMTQ4LCAyNDMsIDE4NywgMTgsIAotICAgIDE5LCAyNDQsIDIzMCwgMTgsIDE5LCAyMTcsIDE0OCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIDE0OCwgMTgsIDE5LCAyMTcsIAotICAgIDEyOCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIDEyOCwgMTgsIDE5LCAyMTcsIDEyNCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIAotICAgIDEyNCwgMTgsIDE5LCAyMTcsIDEwOSwgMTgsIDE5LCAyMTcsIDEwNiwgMTgsIDE5LCAyMTcsIDE2MSwgMTgsIDE5LCAyMTcsIAotICAgIDE2MCwgMTgsIDE5LCAyMTcsIDgxLCAxOCwgMTksIDE0OCwgMjE3LCA4MSwgMTgsIDE5LCAyMTcsIDE2MywgMTgsIDE5LCAKLSAgICAyMTYsIDEwMywgMTgsIDE5LCAyMTYsIDEwMSwgMTgsIDE5LCAyMTYsIDEwMCwgMTgsIDE5LCAyMTYsIDEwNSwgMTgsIDE5LCAKLSAgICAyMTYsIDEwNiwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxNiwgMTcsIDE4LCAxOSwgMjE2LCAxNiwgMTgsIDE5LCAyMTYsIAotICAgIDE5LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMjIyLCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMTY1LCAxOCwgMTksIDIyOCwgCi0gICAgNDksIDI0MSwgMTQ3LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgNTQsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAzOSwgMTgsIDE5LCAKLSAgICAyMjgsIDQ5LCAxNTksIDE4LCAxOSwgMjI4LCA0OSwgMjQyLCAyNywgMTgsIDE5LCAyMjgsIDQ5LCAyNDIsIDQxLCAxOCwgMTksIAotICAgIDIyOCwgNDgsIDI0MiwgNDEsIDE4LCAxOSwgMjQxLCAxNDAsIDE4LCAxOSwgMjI0LCAyMjgsIDE4LCAxOSwgMjI0LCAxOTgsIAotICAgIDE4LCAxOSwgMjI0LCAxOTMsIDE4LCAxOSwgMjI0LCAxODcsIDE4LCAxOSwgMjI0LCAxODIsIDE4LCAxOSwgMjI0LCAyMzIsIAotICAgIDE4LCAxOSwgMjI0LCAyMzEsIDE4LCAxOSwgMjI0LCAyNDAsIDE4LCAxOSwgMjE3LCA4LCAxOCwgMTksIDIxNywgNiwgMTgsIAotICAgIDE5LCAyMTcsIDUsIDE4LCAxOSwgMjE3LCA5LCAxOCwgMTksIDE0OCwgMjI0LCAyMSwgMTgsIDE5LCAxNDgsIDIyMywgMTg4LCAKLSAgICAxOCwgMTksIDE0OCwgMjIzLCAxMTIsIDE4LCAxOSwgMTQ4LCAyMDMsIDE4LCAxOSwgMjI5LCAxNTcsIDE4LCAxOSwgMjI5LCAKLSAgICAxMTMsIDE4LCAxOSwgMjI5LCAxMDksIDE4LCAxOSwgMjI5LCA5MCwgMTgsIDE5LCAyMjksIDg1LCAxOCwgMTksIDIyOSwgCi0gICAgMTU5LCAxOCwgMTksIDIyOSwgMTU4LCAxOCwgMTksIDIyOSwgMTYxLCAxOCwgMTksIDIyOCwgMTk2LCAxOCwgMTksIDIyMiwgCi0gICAgMTI3LCAyMjAsIDI0MywgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAyMTIsIDE4LCAxOSwgMjIyLCAxMjcsIDIyMCwgMTg3LCAKLSAgICAxOCwgMTksIDIyMiwgMTI3LCAyMjEsIDI0LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDE0OCwgMTgsIDE5LCAyMTMsIDIwMCwgCi0gICAgMjE3LCAxMjgsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTA5LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDE2MSwgMTgsIDE5LCAKLSAgICAyMTMsIDIwMCwgMjE3LCAxNjMsIDE4LCAxOSwgMjMzLCAxOSwgMTgsIDE5LCAyMzMsIDE4LCAxOCwgMTksIDIzMywgMTcsIAotICAgIDE4LCAxOSwgMjMzLCAxNiwgMTgsIDE5LCAyMzMsIDI1LCAxOCwgMTksIDIzMywgMjQsIDE4LCAxOSwgMjMzLCAyNiwgMTgsIAotICAgIDE5LCAyMTcsIDE2MiwgMjE3LCAxNDgsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTI4LCAxOCwgMTksIDIxNywgMTYyLCAKLSAgICAyMTcsIDEyNCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMDksIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTA2LCAxOCwgMTksIAotICAgIDIxNywgMTYyLCAyMTcsIDE2MSwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxNjAsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgCi0gICAgMTYzLCAxOCwgMTksIDI1NCwgOTcsIDI1MywgNzQsIDE4LCAxOSwgMjUxLCAxNDEsIDc0LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICA3MiwgMTgsIDE5LCAyNTEsIDE0MSwgNzUsIDE4LCAxOSwgMjUxLCAxNDEsIDYxLCAxOCwgMTksIDI1MSwgMTQxLCAyMTQsIDYsIAotICAgIDE4LCAxOSwgMjUxLCAxNDEsIDIxMywgMjM1LCAxOCwgMTksIDI1MSwgMTQxLCAyMTMsIDIxNCwgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgMjE0LCA0OSwgMTgsIDE5LCAyNTEsIDE0MSwgMjI5LCAxODcsIDE4LCAxOSwgMjUxLCAxNDEsIDIyOSwgNjQsIDE4LCAxOSwgCi0gICAgMjUxLCAxNDEsIDIyOCwgMTg1LCAxOCwgMTksIDI1MSwgMTQxLCAyMDUsIDE4LCAxOSwgMjUxLCAxNDEsIDIzNCwgMTg4LCAKLSAgICAxOCwgMTksIDI1MSwgMTQxLCAyMzQsIDEwMSwgMTgsIDE5LCAyNTEsIDE0MSwgMjM0LCAzNywgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgMTgxLCAxOCwgMTksIDIyMiwgMTI3LCAyNDEsIDIyMiwgMTgsIDE5LCAyMjIsIDEyNywgMjQxLCAxNjUsIDE4LCAxOSwgMjIyLCAKLSAgICAxMjcsIDI0MSwgNTQsIDE4LCAxOSwgMjIyLCAxMjcsIDE1OSwgMTgsIDE5LCA2NiwgMjQyLCAxOTYsIDE4LCAxOSwgNjYsIAotICAgIDI0MiwgMjAwLCAxOCwgMTksIDY2LCAyNDIsIDIxMiwgMTgsIDE5LCA2NiwgMjQyLCAyMTEsIDE4LCAxOSwgNjYsIDI0MiwgCi0gICAgMjAxLCAxOCwgMTksIDY2LCAyNDIsIDIyNSwgMTgsIDE5LCA2NiwgMjIzLCA1MSwgMTgsIDE5LCA2NiwgMjIzLCAxMTIsIDE4LCAKLSAgICAxOSwgNjYsIDIyNCwgMjEsIDE4LCAxOSwgNjYsIDIyNCwgMSwgMTgsIDE5LCA2NiwgMjIzLCAxODgsIDE4LCAxOSwgNjYsIAotICAgIDIwMywgMTgsIDE5LCA2NiwgMjEzLCAxODMsIDE4LCAxOSwgNjYsIDIxMywgMjE0LCAxOCwgMTksIDY2LCAyMTQsIDYsIDE4LCAKLSAgICAxOSwgNjYsIDIxNCwgMSwgMTgsIDE5LCA2NiwgMjEzLCAyMzUsIDE4LCAxOSwgNjYsIDIxNCwgNDksIDE4LCAxOSwgNjYsIAotICAgIDI0MCwgMTg2LCAxOCwgMTksIDY2LCAyNDAsIDE4NywgMTgsIDE5LCA2NiwgMjQwLCAxOTAsIDE4LCAxOSwgNjYsIDI0MCwgCi0gICAgMTg5LCAxOCwgMTksIDY2LCAyNDAsIDE4OCwgMTgsIDE5LCA2NiwgMjQwLCAxOTIsIDE4LCAxOSwgNjYsIDIxNywgOTAsIDE4LCAKLSAgICAxOSwgNjYsIDIxNywgMTA5LCAxOCwgMTksIDY2LCAyMTcsIDE0OCwgMTgsIDE5LCA2NiwgMjE3LCAxNDcsIDE4LCAxOSwgNjYsIAotICAgIDIxNywgMTI4LCAxOCwgMTksIDY2LCAyMTcsIDE2MSwgMTgsIDE5LCA2NiwgMjE2LCA4NiwgMTgsIDE5LCA2NiwgMjE2LCA5NSwgCi0gICAgMTgsIDE5LCA2NiwgMjE2LCAxMTIsIDE4LCAxOSwgNjYsIDIxNiwgMTExLCAxOCwgMTksIDY2LCAyMTYsIDk2LCAxOCwgMTksIAotICAgIDY2LCAyMTYsIDExNSwgMTgsIDE5LCA2NiwgMjI1LCAzNSwgMTgsIDE5LCA2NiwgMjI1LCAxNTAsIDE4LCAxOSwgNjYsIDIyNiwgCi0gICAgOTYsIDE4LCAxOSwgNjYsIDIyNiwgODYsIDE4LCAxOSwgNjYsIDIyNSwgMjQwLCAxOCwgMTksIDY2LCAxOTMsIDE4LCAxOSwgCi0gICAgNjYsIDIyNiwgMjI5LCAxOCwgMTksIDY2LCAyNDIsIDkyLCAxOCwgMTksIDY2LCAyNDIsIDE1MCwgMTgsIDE5LCA2NiwgMjQzLCAKLSAgICAzOCwgMTgsIDE5LCA2NiwgMjQzLCAzMSwgMTgsIDE5LCA2NiwgMjQyLCAxOTAsIDE4LCAxOSwgNjYsIDI0MywgMTEwLCAxOCwgCi0gICAgMTksIDY2LCAyMzQsIDEwOCwgMTgsIDE5LCA2NiwgMjM0LCAxMTMsIDE4LCAxOSwgNjYsIDIzNCwgMTI1LCAxOCwgMTksIDY2LCAKLSAgICAyMzQsIDEyNCwgMTgsIDE5LCA2NiwgMjM0LCAxMTgsIDE4LCAxOSwgNjYsIDIzNCwgMTM4LCAxOCwgMTksIDY2LCAyMzQsIAotICAgIDUwLCAxOCwgMTksIDY2LCAyMzQsIDUxLCAxOCwgMTksIDY2LCAyMzQsIDU0LCAxOCwgMTksIDY2LCAyMzQsIDUzLCAxOCwgCi0gICAgMTksIDY2LCAyMzQsIDUyLCAxOCwgMTksIDY2LCAyMzQsIDU1LCAxOCwgMTksIDY2LCAyMzQsIDU2LCAxOCwgMTksIDY2LCAKLSAgICAyMjgsIDkyLCAxOCwgMTksIDY2LCAyMjgsIDE4NSwgMTgsIDE5LCA2NiwgMjI5LCAxODcsIDE4LCAxOSwgNjYsIDIyOSwgCi0gICAgMTg0LCAxOCwgMTksIDY2LCAyMjksIDY0LCAxOCwgMTksIDY2LCAyMDUsIDE4LCAxOSwgNjYsIDIzMCwgMTcyLCAxOCwgMTksIAotICAgIDY2LCAyMzAsIDIzMSwgMTgsIDE5LCA2NiwgMjMxLCAxNTYsIDE4LCAxOSwgNjYsIDIzMSwgMTQ1LCAxOCwgMTksIDY2LCAKLSAgICAyMzEsIDQyLCAxOCwgMTksIDY2LCAxODgsIDE4LCAxOSwgNjYsIDIxMiwgMjAzLCAxOCwgMTksIDY2LCAyMTIsIDIzNSwgMTgsIAotICAgIDE5LCA2NiwgMjEzLCAzOCwgMTgsIDE5LCA2NiwgMjEzLCAzNSwgMTgsIDE5LCA2NiwgMjEyLCAyNTUsIDE4LCAxOSwgNjYsIAotICAgIDE4NiwgMTgsIDE5LCA2NiwgMjM1LCA1NCwgMTgsIDE5LCAyMjIsIDEyNywgMjM1LCA1NCwgMTgsIDE5LCA2NiwgMjM1LCA3MSwgCi0gICAgMTgsIDE5LCA2NiwgMjM1LCAxMjcsIDE4LCAxOSwgNjYsIDIzNSwgMTI1LCAxOCwgMTksIDY2LCAyMzUsIDExMCwgMTgsIDE5LCAKLSAgICAyMjIsIDEyNywgMjM1LCAxMTAsIDE4LCAxOSwgNjYsIDIzNSwgMTM5LCAxOCwgMTksIDY2LCAyMzUsIDg0LCAxOCwgMTksIAotICAgIDY2LCAyMzUsIDg4LCAxOCwgMTksIDY2LCAyMzUsIDk4LCAxOCwgMTksIDY2LCAyMzUsIDk3LCAxOCwgMTksIDY2LCAyMzUsIAotICAgIDk2LCAxOCwgMTksIDY2LCAyMzUsIDk5LCAxOCwgMTksIDY2LCAyMzIsIDE1NiwgMTgsIDE5LCA2NiwgMjMyLCAyMDgsIDE4LCAKLSAgICAxOSwgNjYsIDIzMywgODIsIDE4LCAxOSwgNjYsIDIzMywgNzQsIDE4LCAxOSwgNjYsIDIzMywgMTMsIDE4LCAxOSwgNjYsIAotICAgIDIzMywgMTU3LCAxOCwgMTksIDY2LCAyNDcsIDEwMywgMTgsIDE5LCA2NiwgMjQ3LCAxMDQsIDE4LCAxOSwgNjYsIDI0NywgCi0gICAgMTA3LCAxOCwgMTksIDY2LCAyNDcsIDEwNiwgMTgsIDE5LCA2NiwgMjQ3LCAxMDUsIDE4LCAxOSwgNjYsIDI0NywgMTA4LCAKLSAgICAxOCwgMTksIDY2LCAyMzMsIDE1LCAxOCwgMTksIDY2LCAyMzMsIDE3LCAxOCwgMTksIDY2LCAyMzMsIDIxLCAxOCwgMTksIAotICAgIDY2LCAyMzMsIDIwLCAxOCwgMTksIDY2LCAyMzMsIDE5LCAxOCwgMTksIDY2LCAyMzMsIDI1LCAxOCwgMTksIDY2LCAyMTcsIAotICAgIDMsIDE4LCAxOSwgNjYsIDIxNywgNSwgMTgsIDE5LCA2NiwgMjE3LCA4LCAxOCwgMTksIDY2LCAyMTcsIDcsIDE4LCAxOSwgCi0gICAgNjYsIDIxNywgNiwgMTgsIDE5LCA2NiwgMjE3LCA5LCAxOCwgMTksIDY2LCAyMTYsIDI1NSwgMTgsIDE5LCA2NiwgMjE3LCAwLCAKLSAgICAxOCwgMTksIDY2LCAyMTcsIDExLCAxOCwgMTksIDY2LCAyMTcsIDEwLCAxOCwgMTksIDY2LCAyMTcsIDEsIDE4LCAxOSwgNjYsIAotICAgIDIxNywgMTIsIDE4LCAxOSwgNjYsIDIxMiwgOCwgMTgsIDE5LCA2NiwgMjEyLCAxNiwgMTgsIDE5LCA2NiwgMjEyLCA4NywgCi0gICAgMTgsIDE5LCA2NiwgMjEyLCA4NSwgMTgsIDE5LCA2NiwgMjEyLCAzNywgMTgsIDE5LCA2NiwgMjEyLCAxMDksIDE4LCAxOSwgCi0gICAgNjYsIDIxMiwgMTUyLCAxOCwgMTksIDY2LCA3MCwgMjEyLCAxNTIsIDE4LCAxOSwgNjYsIDI0NSwgMjM5LCAxOCwgMTksIDY2LCAKLSAgICAyNDUsIDI0MCwgMTgsIDE5LCA2NiwgMjQ1LCAyNDcsIDE4LCAxOSwgNjYsIDI0NSwgMjQ2LCAxOCwgMTksIDY2LCAyNDUsIAotICAgIDI0MiwgMTgsIDE5LCA2NiwgMjQ1LCAyNDksIDE4LCAxOSwgNjYsIDIxOSwgMjcsIDE4LCAxOSwgNjYsIDIxOSwgMjQyLCAxOCwgCi0gICAgMTksIDY2LCAyMjIsIDEwMCwgMTgsIDE5LCA2NiwgMjIyLCA4OSwgMTgsIDE5LCA2NiwgMjIwLCAxMTcsIDE4LCAxOSwgNjYsIAotICAgIDIyMiwgMjAyLCAxOCwgMTksIDY2LCAyMjAsIDE1MCwgMTgsIDE5LCA2NiwgMjIwLCAxODcsIDE4LCAxOSwgNjYsIDIyMCwgCi0gICAgMjQzLCAxOCwgMTksIDY2LCAyMjAsIDI0MSwgMTgsIDE5LCA2NiwgMjIwLCAyMTIsIDE4LCAxOSwgNjYsIDIyMSwgMjQsIDE4LCAKLSAgICAxOSwgNjYsIDIyMSwgMjYsIDE4LCAxOSwgNjYsIDIxNiwgMTIyLCAxOCwgMTksIDY2LCAyMTYsIDEyNCwgMTgsIDE5LCA2NiwgCi0gICAgMjE2LCAxMzYsIDE4LCAxOSwgNjYsIDIxNiwgMTM1LCAxOCwgMTksIDY2LCAyMTYsIDEyNSwgMTgsIDE5LCA2NiwgMjE2LCAKLSAgICAxNDEsIDE4LCAxOSwgNjYsIDI1MCwgNiwgMTgsIDE5LCA2NiwgMjUwLCAyMywgMTgsIDE5LCA2NiwgMjUwLCA2NywgMTgsIAotICAgIDE5LCA2NiwgMjUwLCA2NCwgMTgsIDE5LCA2NiwgMjUwLCA0NywgMTgsIDE5LCA2NiwgMjUwLCA5MiwgMTgsIDE5LCA2NiwgCi0gICAgMjE2LCA4OSwgMTgsIDE5LCA2NiwgMjE2LCA5MCwgMTgsIDE5LCA2NiwgMjE2LCA5MywgMTgsIDE5LCA2NiwgMjE2LCA5MiwgCi0gICAgMTgsIDE5LCA2NiwgMjE2LCA5MSwgMTgsIDE5LCA2NiwgMjE2LCA5NCwgMTgsIDE5LCAyNTAsIDQ4LCA1MiwgMTgsIDE5LCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMTgsIDE5LCAyMjQsIDIyNCwgMTgsIDE5LCAyMjksIDE1NiwgMTgsIDE5LCAyMjgsIDE5MywgCi0gICAgMTgsIDE5LCAyMjgsIDE5MiwgMTgsIDE5LCAyMjgsIDE5MSwgMTgsIDE5LCAyMjgsIDE5MCwgMTgsIDE5LCAyMjgsIDE5NSwgCi0gICAgMTgsIDE5LCAyMjgsIDE5NCwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3OSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3OCwgCi0gICAgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3NywgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3NiwgMTgsIDE5LCAyMTMsIDIwMCwgCi0gICAgMjE3LCA3NSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA4MiwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA4MSwgMTgsIDE5LCAKLSAgICAyMTMsIDIwMCwgNDAsIDIxNywgMTYzLCAxOCwgMTksIDI1MSwgMTQxLCAyMTQsIDgyLCAyMjcsIDkyLCAyMTksIDIwNywgNzcsIAotICAgIDIyNywgOTIsIDEsIDI1MSwgMjI0LCAyMjcsIDkyLCAxLCAyMzIsIDE0NSwgMjI3LCA5MiwgMSwgMjQ0LCAxMjAsIDIyNywgCi0gICAgOTIsIDEsIDIyMiwgMTg2LCAyMjcsIDkyLCAxLCAyMjksIDI0LCAyMjcsIDkyLCAxLCAyMTUsIDE5NSwgMjI3LCA5MiwgMSwgCi0gICAgMjQ4LCAxNDIsIDIyNywgOTIsIDEsIDIxNywgMzMsIDIyNywgOTIsIDEsIDI0OSwgMTY3LCAyMjcsIDkyLCAxLCAyNTAsIAotICAgIDExNCwgMjI3LCA5MiwgMSwgMjMwLCAxNjEsIDIyNywgOTIsIDEsIDI0MiwgMTMyLCAyMjcsIDkyLCAxLCAyMjksIDE0NywgCi0gICAgMjI3LCA5MiwgMSwgMjE5LCA2MiwgMjI3LCA5MiwgMSwgMjIzLCA0NiwgMjI3LCA5MiwgMSwgMjU0LCAxMDUsIDIyNywgOTIsIAotICAgIDEsIDIyNywgNTMsIDIyNywgOTIsIDEsIDIxNSwgMTIxLCAyMjcsIDkyLCAxLCAyNDUsIDE4NywgMjI3LCA5MiwgMSwgMjM1LCAKLSAgICAxODYsIDIyNywgOTIsIDEsIDI0NSwgMTg4LCAyMjcsIDkyLCAxLCAyMjcsIDI0LCAyMjcsIDkyLCAxLCAyMTUsIDE3NiwgCi0gICAgMjI3LCA5MiwgMSwgMjM2LCAzNCwgMjI3LCA5MiwgMSwgMjQ1LCAxODUsIDIyNywgOTIsIDEsIDIyNiwgNzcsIDIyNywgOTIsIAotICAgIDI0NCwgMTE5LCA3NywgMjI3LCA5MiwgMjIzLCAyMDIsIDI0NCwgMTE5LCA3NywgMTY4LCAxLCAyNDQsIDExMCwgMjQ0LCAKLSAgICAxMDIsIDI0NCwgMTI0LCAyNDQsIDIzMCwgMTY4LCAxLCAyMTUsIDc5LCAxNjgsIDEsIDIxNSwgMTA2LCAyMTUsIDEyMiwgNjksIAotICAgIDE2OCwgMSwgMjEyLCAyMDUsIDE2OCwgMSwgMjEzLCAxMDUsIDE2OCwgMSwgMjE0LCA4MiwgMTY4LCAxLCAyMTcsIDg0LCAKLSAgICAyMTcsIDgzLCAyMTcsIDEwNCwgMTY4LCAxLCAyNDUsIDI1LCAxNjgsIDEsIDI1NCwgNCwgNjEsIDE2OCwgMSwgMjI3LCAxMCwgCi0gICAgNzUsIDE2OCwgMSwgMjU0LCAxNzcsIDYxLCAxNjgsIDEsIDI1NCwgMTMyLCAxNjgsIDEsIDIzMiwgMTg2LCA3NSwgMTY4LCAxLCAKLSAgICAyMjAsIDE2OCwgNzUsIDE2OCwgMSwgNzUsIDE2OCwgMSwgMjI3LCA5OSwgMTY4LCAxLCAyMjcsIDYyLCAxNjgsIDEsIDIyNCwgCi0gICAgNTUsIDIyNCwgNjcsIDIyMywgMjQ0LCAxNDksIDE2OCwgMSwgMjM0LCAxOTksIDE2OCwgMSwgMjUwLCAxMTEsIDE2OCwgMSwgCi0gICAgMjM0LCAyMDAsIDIzNSwgMjcsIDE2OCwgMSwgMjQzLCAxNzcsIDE2OCwgMSwgMjQ1LCA5NiwgMTY4LCAxLCAyNDMsIDM0LCAKLSAgICAyNDIsIDQ3LCAyNDMsIDE3NywgMTY4LCAxLCAyNDMsIDcyLCAxNjgsIDEsIDIxMywgMTc2LCAyMTMsIDE3MCwgMjE0LCA4MiwgCi0gICAgMTY4LCAxLCAyNDIsIDE5LCAyNDIsIDQxLCAxNjgsIDEsIDI0MiwgMjMsIDI0MiwgNDEsIDE2OCwgMSwgMjMyLCAxODgsIAotICAgIDI0MiwgNDEsIDE2OCwgMSwgMjIwLCAxNzEsIDI0MiwgNDEsIDE2OCwgMSwgMjMwLCA3LCAyMjgsIDE4LCAyMzAsIDgsIDIwNCwgCi0gICAgMTY4LCAxLCAyMjAsIDE2OSwgMjA0LCAxNjgsIDEsIDI0NiwgNjksIDE2OCwgMSwgMjM1LCAxNjYsIDIzNSwgMTcwLCAyMzUsIAotICAgIDE2MCwgNzIsIDE2OCwgMSwgNzQsIDE2OCwgMSwgMjM1LCAxMTgsIDIzNSwgMTQyLCAxNjgsIDEsIDI0MywgMTksIDE2OCwgMSwgCi0gICAgMjMyLCAxODksIDI1NCwgMTQ4LCAxNjgsIDEsIDIyMCwgMTczLCA2MSwgMTY4LCAxLCAyMzUsIDE1MiwgMjQ1LCA3MiwgMTY4LCAKLSAgICAxLCAyMjYsIDQwLCAyMjYsIDYxLCAyMjYsIDIyOSwgMTY4LCAxLCAyNTQsIDcyLCAyNDUsIDcxLCAxNjgsIDEsIDIxOSwgCi0gICAgMjExLCAxOTcsIDE2OCwgMSwgMjIwLCAxMDUsIDIzMiwgMTg1LCAxOTcsIDE2OCwgMSwgMjIwLCAxNjcsIDE5NywgMTY4LCAxLCAKLSAgICAyNTAsIDI1MiwgMTY4LCAxLCAyMTIsIDE1MiwgMTY4LCAxLCAyMTcsIDE2LCAyMTcsIDI2LCAyMTYsIDcsIDIxOCwgOTksIAotICAgIDE2OCwgMSwgMjIwLCAxNjYsIDIxOCwgOTksIDE2OCwgMSwgMjQ5LCAzLCAxNjgsIDEsIDI1MSwgMjA4LCAyNTEsIDIxMSwgCi0gICAgMjUxLCAxNDcsIDI1MywgNzQsIDE2OCwgMSwgMjIwLCAxNzIsIDI1MywgNzQsIDE2OCwgMSwgMjQ2LCA2OCwgMTY4LCAxLCAKLSAgICAyMjcsIDM2LCAxNjgsIDEsIDI0NSwgMTUzLCAyNDUsIDE1NSwgNzQsIDE2OCwgMSwgMjMxLCAyNDEsIDIzMSwgMjQ5LCAxODMsIAotICAgIDE2OCwgMSwgMjMyLCAxODcsIDE4MywgMTY4LCAxLCAyMjAsIDE3MCwgMTgzLCAxNjgsIDEsIDIzMywgOTcsIDIzMywgMTM3LCAKLSAgICAyMzIsIDE5NiwgMTUwLCAxNjgsIDEsIDI0NiwgNzAsIDE2OCwgMSwgMjM1LCAyMjcsIDE2OCwgMSwgMjM1LCAyMjgsIDE2OCwgCi0gICAgMSwgMjQ4LCAxNTMsIDI0OCwgMTU4LCAyNDksIDMsIDE2OCwgMSwgMjI3LCA2LCAyNDUsIDI0LCA3NSwgMTY4LCAxLCAyNDUsIAotICAgIDE4MywgMTY4LCAxLCAyMzUsIDE4NSwgMTY4LCAxLCAyNDksIDIxLCAxNjgsIDEsIDI1MCwgMjA1LCAxNjgsIDEsIDI1MCwgCi0gICAgMTIzLCAxNjgsIDEsIDIxOSwgMTAwLCAxNjgsIDEsIDIzMiwgMTg0LCAxNjgsIDEsIDIyMCwgMTY1LCAxNjgsIDEsIDI0MCwgCi0gICAgMTAzLCAxNjgsIDEsIDIyNCwgMjQwLCAxNjgsIDEsIDIxMywgMTY2LCAxNjgsIDIyMCwgODEsIDIyNSwgMjYsIDE2OCwgMjMwLCAKLSAgICAxNTUsIDIyNSwgMjYsIDE2OCwgMjQ5LCA3MSwgMjI1LCAyNiwgMTY4LCAyNTMsIDE3NywgODcsIDE2OCwgMjE2LCA0NywgODcsIAotICAgIDE2OCwgMjUxLCAyMjMsIDg3LCAyMTgsIDMyLCAxLCA2MSwgMjE4LCAzMiwgMSwgNzIsIDIxOCwgMzIsIDEsIDY5LCAyMTgsIAotICAgIDMyLCAxLCAxODEsIDIxOCwgMzIsIDEsIDI0MywgMTEwLCAyMTgsIDMyLCAxLCAyMjksIDE1OSwgMjE4LCAzMiwgMSwgMjE4LCAKLSAgICA1MiwgMjE4LCAzMiwgMSwgMjQ4LCAxNjQsIDIxOCwgMzIsIDEsIDIwNSwgMjE4LCAzMiwgMSwgMTkzLCAyMTgsIDMyLCAxLCAKLSAgICAyNTIsIDEwNywgMjE4LCAzMiwgMSwgMTg4LCAyMTgsIDMyLCAxLCAxODYsIDIxOCwgMzIsIDEsIDIzMywgMTU3LCAyMTgsIAotICAgIDMyLCAxLCAyMTQsIDQ5LCAyMTgsIDMyLCAxLCAyMjIsIDIwMiwgMjE4LCAzMiwgMSwgMTU5LCAyMTgsIDMyLCAzMCwgNSwgCi0gICAgNzIsIDIxOCwgMzIsIDMwLCA1LCA2OSwgMjE4LCAzMiwgNSwgMjE0LCAxMzMsIDI0MSwgMjQ2LCAxLCA2MSwgMjQxLCAyNDYsIAotICAgIDEsIDcyLCAyNDEsIDI0NiwgMSwgNjksIDI0MSwgMjQ2LCAxLCAxODEsIDI0MSwgMjQ2LCAxLCAyNDMsIDExMCwgMjQxLCAKLSAgICAyNDYsIDEsIDIyOSwgMTU5LCAyNDEsIDI0NiwgMSwgMjE4LCA1MiwgMjQxLCAyNDYsIDEsIDI0OCwgMTY0LCAyNDEsIDI0NiwgCi0gICAgMSwgMjA1LCAyNDEsIDI0NiwgMSwgMTkzLCAyNDEsIDI0NiwgMSwgMjUyLCAxMDcsIDI0MSwgMjQ2LCAxLCAxODgsIDI0MSwgCi0gICAgMjQ2LCAxLCAxODYsIDI0MSwgMjQ2LCAxLCAyMDMsIDI0MSwgMjQ2LCAxLCAyMzMsIDE1NywgMjQxLCAyNDYsIDEsIDIxNCwgCi0gICAgNDksIDI0MSwgMjQ2LCAxLCAyMjIsIDIwMiwgMjQxLCAyNDYsIDEsIDE1OSwgMjQxLCAyNDYsIDMwLCA1LCA3MiwgMjQxLCAKLSAgICAyNDYsIDMwLCA1LCA2OSwgMjQxLCAyNDYsIDUsIDIyNiwgMTc2LCAyMjYsIDIsIDIyMCwgODEsIDIyNSwgMjYsIDIyNiwgMiwgCi0gICAgNTEsIDIyNSwgMjYsIDI1MSwgNDksIDEsIDYxLCAyNTEsIDQ5LCAxLCA3MiwgMjUxLCA0OSwgMSwgNjksIDI1MSwgNDksIDEsIAotICAgIDE4MSwgMjUxLCA0OSwgMSwgMjQzLCAxMTAsIDI1MSwgNDksIDEsIDIyOSwgMTU5LCAyNTEsIDQ5LCAxLCAyMTgsIDUyLCAKLSAgICAyNTEsIDQ5LCAxLCAyNDgsIDE2NCwgMjUxLCA0OSwgMSwgMjA1LCAyNTEsIDQ5LCAxLCAxOTMsIDI1MSwgNDksIDEsIDI1MiwgCi0gICAgMTA3LCAyNTEsIDQ5LCAxLCAxODgsIDI1MSwgNDksIDEsIDE4NiwgMjUxLCA0OSwgMSwgMjAzLCAyNTEsIDQ5LCAxLCAyMzMsIAotICAgIDE1NywgMjUxLCA0OSwgMSwgMjE0LCA0OSwgMjUxLCA0OSwgMSwgMjIyLCAyMDIsIDI1MSwgNDksIDEsIDE1OSwgMjUxLCA0OSwgCi0gICAgMzAsIDUsIDcyLCAyNTEsIDQ5LCAzMCwgNSwgNjksIDIxOCwgMzEsIDEsIDYxLCAyMTgsIDMxLCAxLCA3MiwgMjE4LCAzMSwgCi0gICAgMSwgNjksIDIxOCwgMzEsIDEsIDE4MSwgMjE4LCAzMSwgMSwgMjQzLCAxMTAsIDIxOCwgMzEsIDEsIDIyOSwgMTU5LCAyMTgsIAotICAgIDMxLCAxLCAyMTgsIDUyLCAyMTgsIDMxLCAxLCAyNDgsIDE2NCwgMjE4LCAzMSwgMSwgMjA1LCAyMTgsIDMxLCAxLCAxOTMsIAotICAgIDIxOCwgMzEsIDEsIDI1MiwgMTA3LCAyMTgsIDMxLCAxLCAxODgsIDIxOCwgMzEsIDEsIDE4NiwgMjE4LCAzMSwgMSwgMjMzLCAKLSAgICAxNTcsIDIxOCwgMzEsIDEsIDIxNCwgNDksIDIxOCwgMzEsIDEsIDIyMiwgMjAyLCAyMTgsIDMxLCAzMCwgNSwgNzIsIDIxOCwgCi0gICAgMzEsIDMwLCA1LCA2OSwgODQsIDEsIDE4MSwgODQsIDEsIDIzNCwgMTM4LCA4NCwgMSwgMjM0LCAzNywgODQsIDEsIDIzNCwgCi0gICAgMTEzLCA4NCwgMSwgMjI5LCA5MCwgODQsIDEsIDI1MCwgMjE5LCA4NCwgMSwgMjUwLCA5MiwgODQsIDEsIDI0OSwgMTc1LCAKLSAgICA4NCwgMSwgMjUwLCAyMywgODQsIDEsIDIyNywgMjUzLCA4NCwgMSwgMjQ4LCAxNjQsIDg0LCAxLCAyMTYsIDEwNSwgODQsIDEsIAotICAgIDI0NywgOTksIDg0LCAxLCAyMTYsIDEwMCwgODQsIDEsIDIyOCwgMTg4LCA4NCwgMSwgMjE4LCA1MiwgODQsIDEsIDIxNywgCi0gICAgMTYxLCA4NCwgMSwgMTA4LCA4NCwgMSwgMjE3LCAxMDksIDg0LCAxLCAyMjgsIDE4NSwgODQsIDEsIDI1MiwgMTA3LCA4NCwgCi0gICAgMSwgMjI2LCAyMywgODQsIDEsIDIyNSwgMTUwLCA4NCwgMSwgMjI1LCAyNTMsIDg0LCAxLCAyMzAsIDIzMSwgODQsIDEsIAotICAgIDIxMiwgMjM1LCA4NCwgMSwgMjIzLCAxMTIsIDg0LCAxLCAyMzIsIDIwOCwgODQsIDEsIDIxNCwgMTE5LCA4NCwgMSwgMjIxLCAKLSAgICAyNCwgODQsIDEsIDIxOSwgMTIxLCA4NCwgMSwgMjIyLCAyMDIsIDg0LCAxLCAxNTksIDg0LCAxLCAyMzMsIDE1NywgODQsIDEsIAotICAgIDIyNCwgMjMyLCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIxOCwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMzEsIDg0LCAKLSAgICAyMzUsIDI0MCwgMzAsIDIyNCwgMTk4LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDE5MywgODQsIDIzNSwgMjQwLCAzMCwgCi0gICAgMjI0LCAxNzUsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTQ3LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDEzNSwgODQsIAotICAgIDIzNSwgMjQwLCAzMCwgMjI0LCAxMzQsIDg0LCAyMzUsIDI0MCwgMzAsIDIyMywgMTIsIDg0LCAyMzUsIDI0MCwgMzAsIDIyMywgCi0gICAgNSwgODQsIDIzNSwgMjQwLCAzMCwgMjMyLCAxMjEsIDg0LCAyMzUsIDI0MCwgMzAsIDIzMiwgMTEyLCA4NCwgMjM1LCAyNDAsIAotICAgIDMwLCAyMjQsIDIxMywgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMjQsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTgzLCAKLSAgICAyMTYsIDE1LCAxMTYsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTgzLCAyMTYsIDE1LCAxMDksIDg0LCAyMzUsIDI0MCwgMzAsIAotICAgIDIyNCwgMjE0LCA4NCwgMzAsIDIzNSwgMjI2LCAyNTMsIDIxNSwgODQsIDMwLCAyMzUsIDIyNiwgMjU0LCAyMzIsIDg0LCAzMCwgCi0gICAgNSwgMjU0LCAyMzIsIDg0LCAzMCwgNSwgNzIsIDg0LCAzMCwgNSwgMjM2LCAyOCwgODQsIDMwLCA1LCAyMTMsIDEwNSwgODQsIAotICAgIDMwLCA1LCAyMTIsIDE2MSwgODQsIDMwLCA1LCA2OSwgODQsIDMwLCA1LCAyMTUsIDkyLCA4NCwgMzAsIDUsIDIxNSwgMTk2LCAKLSAgICA4NCwgMzAsIDUsIDIyNywgOTksIDg0LCAzMCwgNSwgMTg2LCA4NCwgMzAsIDUsIDIzNiwgNTUsIDg0LCAzMCwgNSwgNzQsIAotICAgIDg0LCAzMCwgNSwgMjU0LCAxNDgsIDg0LCAzMCwgNSwgMjU0LCAxMDgsIDg0LCAzMCwgNSwgMjI3LCA0OSwgODQsIDMwLCA1LCAKLSAgICAyNTMsIDEwOCwgODQsIDUsIDIyOSwgMzcsIDg0LCA1LCAyMjQsIDE5LCA4NCwgNSwgMjEyLCAxNzIsIDg0LCA1LCAyMzAsIAotICAgIDEyMywgODQsIDUsIDIxNiwgMTcxLCA4NCwgNSwgMjUyLCA2MiwgODQsIDUsIDIyMywgMTA3LCA4NCwgNSwgMjE2LCAyNTEsIAotICAgIDg0LCA1LCAyMzQsIDI0NiwgODQsIDUsIDI1NCwgMTEwLCA4NCwgNSwgMjIyLCAxNjAsIDIyMiwgMTU0LCA4NCwgNSwgMjE0LCAKLSAgICAxMzAsIDg0LCA1LCAyNDksIDE3MCwgODQsIDUsIDI1MiwgMzcsIDg0LCA1LCAyMzQsIDEzMSwgODQsIDUsIDI1MiwgNTcsIAotICAgIDg0LCA1LCAyNTAsIDE5NywgMjI1LCAyMDQsIDIzMywgMjA5LCA4NCwgNSwgMjMzLCA1NCwgMjE2LCAyMzAsIDg0LCA1LCAKLSAgICAyNTEsIDE5NywgODQsIDUsIDIyNSwgMjU1LCAyMzAsIDE2OSwgODQsIDUsIDIzNCwgMTgsIDg0LCAyNDksIDM5LCAxNiwgCi0gICAgMjIzLCAxODEsIDg0LCA1LCAyNTMsIDkwLCA4NCwgNSwgMjUzLCAxMTEsIDg0LCAyMSwgMjEyLCA3OSwgODQsIDIxLCAxMTYsIAotICAgIDg0LCAyMSwgMTA5LCA4NCwgMjEsIDE2NiwgODQsIDIxLCAxNjMsIDg0LCAyMSwgMTgwLCA4NCwgMjEsIDE4OSwgODQsIDIxLCAKLSAgICAxOTgsIDg0LCAyMSwgMTk1LCA4NCwgMjEsIDIwMCwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjE5LCAyMjksIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIzMCwgMTQxLCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDIwMywgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjUxLCAyMjUsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDI1MSwgMzIsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTUsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgODksIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgODcsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTMsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTEsIDgxLCAyNTEsIDE1OSwgODEsIDI0NSwgMTIwLCA4MSwgMjQ5LCAxNTcsIAotICAgIDgxLCAyNDMsIDIwMCwgMjE5LCA2OSwgODEsIDI0OSwgMTY0LCA4MSwgMjQzLCAyMzcsIDI0NywgNzIsIDgxLCAyMTYsIDI1MCwgCi0gICAgMjE5LCAyMzYsIDI0MCwgMTYwLCA4MSwgMjIwLCAxMTYsIDQsIDI1MSwgOTgsIDIzMSwgMjE3LCA4MSwgMjMxLCAyNDYsIAotICAgIDI0OSwgMTU3LCA4MSwgMjMxLCAyNDYsIDI0MywgMjAwLCAyMTksIDY5LCA4MSwgMjI5LCAyMiwgODEsIDI0MywgMjIzLCA0MywgCi0gICAgMjIyLCA3NywgMTE2LCA4MSwgMjQzLCAyMjMsIDQzLCAyMjIsIDc3LCAxMDksIDgxLCAyNDMsIDIyMywgNDMsIDIyMiwgNzcsIAotICAgIDE2NiwgODEsIDMwLCAyMjEsIDU3LCA4MSwgMjEsIDIxMiwgNzksIDgxLCAyMSwgMTE2LCA4MSwgMjEsIDEwOSwgODEsIDIxLCAKLSAgICAxNjYsIDgxLCAyMSwgMTYzLCA4MSwgMjEsIDE4MCwgODEsIDIxLCAxODksIDgxLCAyMSwgMTk4LCA4MSwgMjEsIDE5NSwgODEsIAotICAgIDIxLCAyMDAsIDgxLCAxLCA2MSwgODEsIDEsIDc0LCA4MSwgMSwgNzIsIDgxLCAxLCA3NSwgODEsIDEsIDY5LCA4MSwgMSwgCi0gICAgMjI3LCA5OSwgODEsIDEsIDIxNSwgMTgzLCA4MSwgMSwgMjQ1LCAxNjUsIDgxLCAxLCAyMDUsIDgxLCAxLCAyNTQsIDI0LCAKLSAgICA4MSwgMSwgMjUyLCAxMDcsIDgxLCAxLCAxOTMsIDgxLCAxLCAyMjQsIDIzMiwgODEsIDEsIDI0MywgMTEwLCA4MSwgMSwgCi0gICAgMTg4LCA4MSwgMSwgMjMzLCAxNTcsIDgxLCAxLCAyMjIsIDIwMiwgODEsIDEsIDIyMSwgMjQsIDgxLCAxLCAyMTgsIDUyLCAKLSAgICA4MSwgMSwgMjQ4LCAxNjQsIDgxLCAxLCAyNTAsIDkyLCA4MSwgMSwgMjM1LCAxMzksIDgxLCAxLCAxODYsIDgxLCAxLCAyMDMsIAotICAgIDgxLCAxLCAyMTQsIDQ5LCA4MSwgMSwgMjQ0LCAxNjQsIDgxLCAxLCAxODEsIDgxLCAxLCAyMzQsIDEzOCwgODEsIDEsIDIxNiwgCi0gICAgMTQxLCA4MSwgMSwgMjEyLCAxMDksIDgxLCAxLCAyNDIsIDI3LCA4MSwgMSwgMjEyLCA5LCA4MSwgMSwgMjMzLCAyNSwgODEsIAotICAgIDEsIDIxMiwgNjIsIDgxLCAxLCAyNTAsIDQ3LCA4MSwgMSwgMjE2LCAyNTAsIDE4NCwgMzAsIDUyLCA4MSwgMSwgMjE2LCAKLSAgICAyNTAsIDc0LCA4MSwgMSwgMjE2LCAyNTAsIDcyLCA4MSwgMSwgMjE2LCAyNTAsIDc1LCA4MSwgMSwgMjE2LCAyNTAsIDY5LCAKLSAgICA4MSwgMSwgMjE2LCAyNTAsIDIyNywgOTksIDgxLCAxLCAyMTYsIDI1MCwgMjE1LCAxODMsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMjU0LCAyNCwgODEsIDEsIDIxNiwgMjUwLCAyNTIsIDEwNywgODEsIDEsIDIxNiwgMjUwLCAxOTMsIDgxLCAxLCAyMTYsIAotICAgIDI1MCwgMjI0LCAyMzIsIDgxLCAxLCAyMTYsIDI1MCwgMjQzLCAxMTAsIDgxLCAxLCAyMTYsIDI1MCwgMTg4LCA4MSwgMSwgCi0gICAgMjE2LCAyNTAsIDIxOCwgNTIsIDgxLCAxLCAyMTYsIDI1MCwgMjQ4LCAxNjQsIDgxLCAxLCAyMTYsIDI1MCwgMjUwLCA5MiwgCi0gICAgODEsIDEsIDIxNiwgMjUwLCAyMzUsIDEzOSwgODEsIDEsIDIxNiwgMjUwLCAyMTYsIDE0MSwgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAxODYsIDgxLCAxLCAyMTYsIDI1MCwgMjE0LCA0OSwgODEsIDEsIDIxNiwgMjUwLCAxODEsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMjQzLCAxMDcsIDgxLCAxLCAyMTYsIDI1MCwgMjQyLCAyNywgODEsIDEsIDIxNiwgMjUwLCAyMzUsIDEwOSwgODEsIDEsIAotICAgIDIxNiwgMjUwLCAyMjksIDYyLCA4MSwgMSwgMjE2LCAyNTAsIDI0NSwgMjQ5LCA4MSwgMSwgMjIwLCAxMTYsIDc0LCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDcyLCA4MSwgMSwgMjIwLCAxMTYsIDIzNSwgMTUwLCA4MSwgMSwgMjIwLCAxMTYsIDIxNSwgMTgzLCA4MSwgCi0gICAgMSwgMjIwLCAxMTYsIDY5LCA4MSwgMSwgMjIwLCAxMTYsIDI1NCwgMjQsIDgxLCAxLCAyMjAsIDExNiwgMTgxLCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDI0MywgMTEwLCA4MSwgMSwgMjIwLCAxMTYsIDE1OSwgODEsIDEsIDIyMCwgMTE2LCAxOTMsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjIxLCAyNCwgODEsIDEsIDIyMCwgMTE2LCAyMTgsIDUyLCA4MSwgMSwgMjIwLCAxMTYsIDI0OCwgMTY0LCAKLSAgICA4MSwgMSwgMjIwLCAxMTYsIDIzNSwgMTM5LCA4MSwgMSwgMjIwLCAxMTYsIDI0NCwgMTY0LCA4MSwgMSwgMjIwLCAxMTYsIAotICAgIDI0MywgMTA3LCA4MSwgMSwgMjIwLCAxMTYsIDI0MiwgMjcsIDgxLCAxLCAyMjAsIDExNiwgMjE2LCAxNDEsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjEyLCAxMDksIDgxLCAxLCAyMjAsIDExNiwgMjI0LCA3NCwgODEsIDEsIDIyMCwgMTE2LCAyNTAsIDkyLCAKLSAgICA4MSwgMSwgMjIwLCAxMTYsIDIxMiwgNzUsIDgxLCAxLCAyMzEsIDI0NiwgNzIsIDgxLCAxLCAyMzEsIDI0NiwgMTgxLCA4MSwgCi0gICAgMSwgMjMxLCAyNDYsIDIwMywgODEsIDEsIDIzMSwgMjQ2LCAyNDQsIDE2NCwgODEsIDEsIDIzMSwgMjQ2LCAyMTIsIDc1LCAKLSAgICA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjUzLCAyNDMsIDExNiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxNCwgCi0gICAgMTI5LCAxMTYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDEzMSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxNSwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjM1LCAxOTEsIDIxNSwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMjUyLCA3NCwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDEzMywgMjUyLCA3NCwgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDYxLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgNzIsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAxODEsIAotICAgIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjksIDE1OSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1MCwgMjE5LCA4MSwgCi0gICAgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjE2LCAxMTUsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDEwNSwgODEsIDEsIAotICAgIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgODYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjgsIDE5OCwgODEsIDEsIDI1NCwgCi0gICAgNzEsIDI0MywgOTIsIDIxOCwgNTIsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDE2NCwgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDE5MywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyNiwgMjMsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAKLSAgICAyMTksIDE1NywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgNzUsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIAotICAgIDEwOSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1NCwgMTE0LCA4MSwgMSwgMjE2LCAyNTAsIDI1NCwgNzEsIDI0MywgCi0gICAgOTIsIDIxOCwgNTIsIDgxLCAxLCAyMTYsIDI1MCwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCA3NSwgODEsIDEsIDIzMSwgMjQ2LCAKLSAgICAyNTQsIDcxLCAyNDMsIDkyLCAyNDIsIDIyNSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMjksIDE1OSwgCi0gICAgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNTAsIDIxOSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAyMzUsIDExNSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDExNSwgODEsIDEsIAotICAgIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDcwLCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxOCwgNTIsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ3LCAyMzIsIDgxLCAxLCAyMzEsIDI0NiwgCi0gICAgMjU0LCA3MSwgMjQzLCA5MiwgMjE5LCAxNTcsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ5LCAxNSwgCi0gICAgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIDc1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDIxMiwgMTA5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMTUxLCA2OSwgODEsIDEsIDI1NCwgNzEsIDI0MywgCi0gICAgOTIsIDE1MSwgMTg2LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI1MSwgMTk1LCA4MSwgMSwgMjU0LCAKLSAgICA3MSwgMjQzLCA5MiwgMjQ4LCAxNTQsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjMzLCAyNSwgMTgsIAotICAgIDE5LCAyMjYsIDIzMywgMTgsIDE5LCAyNTMsIDgzLCAxOCwgMTksIDI1NCwgMTg4LCAxOCwgMTksIDIxNCwgOSwgMTgsIDE5LCAKLSAgICAyMjUsIDEwMSwgMTgsIDE5LCAyMjYsIDEwMywgMTgsIDE5LCAyMjQsIDI0OSwgMTgsIDE5LCAyMTcsIDIzOCwgMTgsIDE5LCAKLSAgICAyMzQsIDE5NSwgMTgsIDE5LCAyMzMsIDIwMSwgMTgsIDE5LCAyMzEsIDE5NiwgMTgsIDE5LCAyMjgsIDE0OCwgMTgsIDE5LCAKLSAgICAyMzAsIDMsIDE4LCAxOSwgMjMzLCA5MiwgMTgsIDE5LCAyMTksIDIwOSwgMTgsIDE5LCAyMjIsIDEyOSwgMTgsIDE5LCAyMjAsIAotICAgIDE1NiwgMTgsIDE5LCAyMjAsIDI0NiwgMTgsIDE5LCAyMjAsIDEyNywgMTgsIDE5LCAyMTIsIDIxMSwgMTgsIDE5LCAyMTMsIAotICAgIDQzLCAxOCwgMTksIDIyNCwgMjcsIDE4LCAxOSwgMjI4LCAyOCwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI4LCAxOCwgMTksIAotICAgIDIyOCwgMjcsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAyNywgMTgsIDE5LCAyMjgsIDI2LCAxOCwgMTksIDIyNywgODIsIDIyOCwgCi0gICAgMjYsIDE4LCAxOSwgMjI4LCAyNSwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI1LCAxOCwgMTksIDIyMywgMTcsIDE4LCAxOSwgCi0gICAgMjIzLCAxNiwgMTgsIDE5LCAyMjMsIDE1LCAxOCwgMTksIDIyMywgMTQsIDE4LCAxOSwgMjIzLCAxMywgMTgsIDE5LCAyMjMsIAotICAgIDIxLCAxOCwgMTksIDIyNywgODIsIDIyNiwgMjI5LCAxOCwgMTksIDIyNywgODIsIDIxOCwgOTksIDE4LCAxOSwgMjI3LCA4MiwgCi0gICAgMjM1LCAyNywgMTgsIDE5LCAyMjcsIDgyLCAyNTAsIDI1MiwgMTgsIDE5LCAyMjcsIDgyLCAxODMsIDE4LCAxOSwgMjI3LCAKLSAgICA4MiwgMjA0LCAxOCwgMTksIDIyNywgODIsIDE5NywgMTgsIDE5LCAyMjcsIDgyLCAyMjEsIDI2LCAxOCwgMTksIDI0NSwgCi0gICAgMTc1LCAyMTQsIDgyLCAxOCwgMTksIDIxMywgMjQ4LCAyMTQsIDgyLCAxOCwgMTksIDQwLCAzLCAyMjMsIDEzMCwgMTgsIDE5LCAKLSAgICA0MCwgMjI0LCA0OCwgMjQ3LCA3NCwgMTgsIDE5LCAyMjQsIDExMiwgMjIzLCAxOCwgMTgsIDE5LCAxNDgsIDIzMiwgMTgwLCAKLSAgICAxOCwgMTksIDE0OCwgMjMzLCAxNTYsIDE4LCAxOSwgMjE3LCA4MCwgMTgsIDE5LCAyMTcsIDgyLCAxOCwgMTksIDIxNiwgOTcsIAotICAgIDE4LCAxOSwgMjE2LCA5OSwgMTgsIDE5LCAyMTYsIDEwNCwgMTgsIDE5LCAyMTcsIDIsIDE4LCAxOSwgMjE3LCA0LCAxOCwgCi0gICAgMTksIDIyMiwgMTI3LCAyMjAsIDEzMiwgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAxODEsIDE4LCAxOSwgMjIyLCAxMjcsIAotICAgIDI0MSwgMzksIDE4LCAxOSwgNjYsIDI0MiwgNTQsIDE4LCAxOSwgNjYsIDI0OCwgMywgMjQzLCAzMSwgMTgsIDE5LCA2NiwgCi0gICAgMjQzLCAxMDcsIDE4LCAxOSwgNjYsIDI0MiwgNTksIDE4LCAxOSwgMjIyLCAxMjcsIDIzNSwgMzcsIDE4LCAxOSwgNjYsIAotICAgIDIzNSwgMzUsIDE4LCAxOSwgMjUxLCAyNDQsIDI0OCwgMywgMTUwLCAxOCwgMTksIDI1MSwgMjQ0LCAyNDgsIDMsIDE0OSwgCi0gICAgMTgsIDE5LCA2NiwgMjQ3LCAyNTQsIDE5NywgMjA5LCAyMTQsIDEwMywgMjMzLCAzNCwgMjA5LCAxLCAxODEsIDIwOSwgMSwgCi0gICAgMjM0LCAxMzgsIDIwOSwgMSwgMjQzLCAxMTAsIDIwOSwgMSwgMjQyLCAyMjUsIDIwOSwgMSwgMjI5LCAxNTksIDIwOSwgMSwgCi0gICAgMjUwLCAyMTksIDIwOSwgMSwgMjUwLCA5MiwgMjA5LCAxLCAyMzUsIDEzOSwgMjA5LCAxLCAyMzUsIDExNSwgMjA5LCAxLCAKLSAgICAyMTMsIDYwLCAyMDksIDEsIDIxOCwgNTIsIDIwOSwgMSwgMjE3LCAxNjEsIDIwOSwgMSwgMjQ4LCAxNjQsIDIwOSwgMSwgCi0gICAgMjQ3LCAyMzIsIDIwOSwgMSwgMjA1LCAyMDksIDEsIDE5MywgMjA5LCAxLCAyMjYsIDIzLCAyMDksIDEsIDI1MiwgMTA3LCAKLSAgICAyMDksIDEsIDI1MSwgMTk1LCAyMDksIDEsIDE4OCwgMjA5LCAxLCAxODYsIDIwOSwgMSwgMjAzLCAyMDksIDEsIDIzMywgCi0gICAgMTU3LCAyMDksIDEsIDIxNCwgNDksIDIwOSwgMSwgMjIxLCAyNCwgMjA5LCAxLCAyMTksIDE1NywgMjA5LCAxLCAyMjIsIAotICAgIDIwMiwgMjA5LCAxLCAxNTksIDIwOSwgMzAsIDUsIDYxLCAyMDksIDMwLCA1LCA3MiwgMjA5LCAzMCwgNSwgNjksIDIwOSwgCi0gICAgMzAsIDUsIDI0NSwgMTY1LCAyMDksIDMwLCA1LCAyNTQsIDEwOCwgMjA5LCAzMCwgNSwgMjI3LCA0OSwgMjA5LCAzMCwgNSwgCi0gICAgMjUzLCAxMDgsIDIwOSwgMzAsIDUsIDc0LCAyMDksIDMwLCA1LCA3NSwgMjA5LCAyMTksIDE4LCAxLCAxODYsIDIwOSwgMjE5LCAKLSAgICAxOCwgMSwgMjAzLCAyMDksIDIxOSwgMTgsIDEsIDIxNCwgNDksIDIwOSwgMywgMSwgMTgxLCAyMDksIDMsIDEsIDIyOSwgCi0gICAgMTU5LCAyMDksIDMsIDEsIDI1MywgMjQyLCAyMDksIDMsIDEsIDIxOCwgNTIsIDIwOSwgMywgMSwgMjA1LCAyMDksIDMsIDEsIAotICAgIDE5MywgMjA5LCAzLCAxLCAxODgsIDIwOSwgMywgMSwgMjAzLCAyMDksIDMsIDEsIDIzMywgMTU3LCAyMDksIDUsIDIzMCwgCi0gICAgMTU5LCAyMDksIDUsIDIzNCwgMTc3LCAyMDksIDUsIDIyMiwgMjAxLCAyMDksIDUsIDIzMiwgMTgwLCAyMDksIDI0NCwgMjU0LCAKLSAgICA3NywgMjA5LCAyMjQsIDE1OCwgNzcsIDIwOSwgMjEsIDIxMiwgNzksIDIwOSwgMjEsIDExNiwgMjA5LCAyMSwgMTA5LCAyMDksIAotICAgIDIxLCAxNjYsIDIwOSwgMjEsIDE2MywgMjA5LCAyMSwgMTgwLCAyMDksIDIxLCAxODksIDIwOSwgMjEsIDE5OCwgMjA5LCAyMSwgCi0gICAgMTk1LCAyMDksIDIxLCAyMDAsIDM4LCAyMzMsIDgzLCAxLCAxODEsIDM4LCAyMzMsIDgzLCAxLCAyMTMsIDE1MywgMzgsIAotICAgIDIzMywgODMsIDEsIDIyOSwgMTU5LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAxNDEsIDM4LCAyMzMsIDgzLCAxLCAyMjIsIDIwMiwgCi0gICAgMzgsIDIzMywgODMsIDEsIDE4NiwgMzgsIDIzMywgODMsIDEsIDIxOCwgNTIsIDM4LCAyMzMsIDgzLCAxLCAyMTcsIDE2MSwgCi0gICAgMzgsIDIzMywgODMsIDEsIDIzMywgMTU3LCAzOCwgMjMzLCA4MywgMSwgMTkzLCAzOCwgMjMzLCA4MywgMSwgMjI2LCAyMywgCi0gICAgMzgsIDIzMywgODMsIDEsIDE4OCwgMzgsIDIzMywgODMsIDEsIDI0NCwgMTY0LCAzOCwgMjMzLCA4MywgMSwgMjE1LCAxLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTU5LCAzOCwgMjMzLCA4MywgMSwgMjI0LCAyMzIsIDM4LCAyMzMsIDgzLCAxLCAyMzQsIDEzOCwgCi0gICAgMzgsIDIzMywgODMsIDEsIDIxNiwgMTMzLCAzOCwgMjMzLCA4MywgMSwgMjA1LCAzOCwgMjMzLCA4MywgMSwgNjEsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCA3MiwgMzgsIDIzMywgODMsIDEsIDI0NSwgMTY1LCAzOCwgMjMzLCA4MywgMSwgMjQ1LCAxNTQsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCA2OSwgMzgsIDIzMywgODMsIDEsIDIyNywgNDksIDM4LCAyMzMsIDgzLCAxLCA3NSwgMzgsIDIzMywgODMsIAotICAgIDEsIDIxNSwgMTgzLCAzOCwgMjMzLCA4MywgMSwgNzQsIDM4LCAyMzMsIDgzLCAxLCAyNTMsIDEwNiwgMzgsIDIzMywgODMsIAotICAgIDEsIDI1NCwgMTA4LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzksIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzOCwgMzgsIDIzMywgCi0gICAgODMsIDEsIDIxNiwgMjM3LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzYsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzNSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCAxMjQsIDIyNCwgMjMyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjI0LCAyMzIsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAxODEsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTMsIDE1MywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIyOSwgCi0gICAgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTgxLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjEzLCAxNTMsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMjksIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNiwgMTQxLCAxNTYsIDM4LCAxNjUsIDEsIAotICAgIDEyNCwgMjIyLCAyMDIsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxODYsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTYsIDE0MSwgCi0gICAgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIyMiwgMjAyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTg2LCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMjE4LCA1MiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNywgMTYxLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjA1LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE4LCA1MiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNywgMTYxLCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDExNSwgMjA1LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTkzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjI2LCAyMywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE4OCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE5MywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIyNiwgMjMsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODgsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyNDQsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNSwgMSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIzMywgMTU3LCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjQ0LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTUsIDEsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMzMsIDE1NywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDI0OCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjUyLCAxMDcsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxNTksIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgMTE1LCAyNDgsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDI1MiwgMTA3LCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMjMzLCAyMDYsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTMsIDEyNiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIAotICAgIDIzMywgMjA2LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjEzLCAxMjYsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTksIDI2LCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE5LCAyNiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMzAsIDIyMCwgMTYzLCAxNTYsIAotICAgIDM4LCAxNjUsIDMwLCA1LCAyNTQsIDIzMiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjM2LCAyOCwgMTU2LCAzOCwgMTY1LCAzMCwgCi0gICAgNSwgNjksIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgOTIsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDc0LCAxNTYsIDM4LCAKLSAgICAxNjUsIDMwLCA1LCAyNTQsIDE0OCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgNzUsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIyNywgCi0gICAgMTIwLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIDE4MywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjUzLCA4MywgMTU2LCAKLSAgICAzOCwgMTY1LCAzMCwgNSwgMjU0LCAxODgsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgODUsIDE1NiwgMzgsIDE2NSwgMzAsIAotICAgIDUsIDIyNiwgMjMzLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMjcsIDExNywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCAKLSAgICAxODAsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIzNSwgMTUwLCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyMTUsIDc5LCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDQwLCAyMjksIDE2MSwgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjA0LCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAKLSAgICAxODMsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDIzNSwgMjcsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDI0OSwgMywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCA0MCwgMjUzLCA3NCwgMTU2LCAzOCwgMTY1LCAxNjAsIDIzMSwgMjIxLCAxNTYsIDM4LCAxNjUsIDE2MCwgMjMxLCAKLSAgICAyMjAsIDE1NiwgMzgsIDE2NSwgMjEsIDIxMiwgNzksIDE1NiwgMzgsIDE2NSwgMjEsIDExNiwgMTU2LCAzOCwgMTY1LCAyMSwgCi0gICAgMTA5LCAxNTYsIDM4LCAxNjUsIDIxLCAxNjYsIDE1NiwgMzgsIDE2NSwgMjEsIDE2MywgMTU2LCAzOCwgMTY1LCAyMSwgMTgwLCAKLSAgICAxNTYsIDM4LCAxNjUsIDIxLCAxODksIDE1NiwgMzgsIDE2NSwgMjEsIDE5OCwgMTU2LCAzOCwgMTY1LCAyMSwgMTk1LCAxNTYsIAotICAgIDM4LCAxNjUsIDIxLCAyMDAsIDE1NiwgMzgsIDE2NSwgODgsIDIxLCAxMTYsIDE1NiwgMzgsIDE2NSwgNSwgMjMzLCAxNDMsIAotICAgIDE1NiwgMzgsIDE2NSwgNSwgMjMzLCAxNDIsIDg0LCAxNiwgMjI2LCAxMDksIDg0LCAxNiwgMjMwLCAxNDIsIDIzNCwgMzQsIAotICAgIDg0LCAxNiwgMjI1LCAyMDQsIDIzNCwgMzQsIDg0LCAxNiwgMjUxLCAyMjYsIDIzNCwgMzQsIDg0LCAxNiwgMjUxLCAzMywgCi0gICAgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDk2LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTAsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCAKLSAgICA4OCwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDk0LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTIsIDIzNCwgMzQsIDg0LCAxNiwgCi0gICAgMjQ4LCAxMTgsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTQsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTMsIDIzNCwgMzQsIAotICAgIDg0LCAxNiwgMjQ4LCAxMTYsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTUsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTIsIAotICAgIDIzNCwgMzQsIDg0LCAxNiwgMjE2LCA1MSwgODQsIDE2LCAyMzAsIDE0MiwgMjIzLCAxMDYsIDg0LCAxNiwgMjI1LCAyMDQsIAotICAgIDIyMywgMTA2LCA4NCwgMTYsIDI1MSwgMjI2LCAyMjMsIDEwNiwgODQsIDE2LCAyNTEsIDMzLCAyMjMsIDEwNiwgODQsIDE2LCAKLSAgICAyMjUsIDk2LCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDkwLCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDg4LCAyMjMsIDEwNiwgCi0gICAgODQsIDE2LCAyMjUsIDk0LCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDkyLCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExOCwgCi0gICAgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTQsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTEzLCAyMjMsIDEwNiwgODQsIDE2LCAKLSAgICAyNDgsIDExNiwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTUsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTEyLCAyMjMsIAotICAgIDEwNiwgMjUxLCA1MCwgMSwgMTgxLCAyNTEsIDUwLCAxLCAyNDMsIDExMCwgMjUxLCA1MCwgMSwgMjI5LCAxNTksIDI1MSwgCi0gICAgNTAsIDEsIDIyOSwgMTA4LCAyNTEsIDUwLCAxLCAxOTMsIDI1MSwgNTAsIDEsIDI1MiwgMTA3LCAyNTEsIDUwLCAxLCAxODgsIAotICAgIDI1MSwgNTAsIDEsIDIzMCwgMTc1LCAyNTEsIDUwLCAxLCAyMTgsIDUyLCAyNTEsIDUwLCAxLCAyNDgsIDE2NCwgMjUxLCA1MCwgCi0gICAgMSwgMjA1LCAyNTEsIDUwLCAxLCAyMjgsIDE0NywgMjUxLCA1MCwgMSwgMjUwLCAyMTksIDI1MSwgNTAsIDEsIDIzNSwgMTM5LCAKLSAgICAyNTEsIDUwLCAxLCAyMjgsIDIzLCAyNTEsIDUwLCAxLCAyMjgsIDE5LCAyNTEsIDUwLCAxLCAxODYsIDI1MSwgNTAsIDEsIAotICAgIDIwMywgMjUxLCA1MCwgMSwgMjMzLCAxNTcsIDI1MSwgNTAsIDEsIDIxNSwgMSwgMjUxLCA1MCwgMSwgMjIyLCAyMDIsIDI1MSwgCi0gICAgNTAsIDEsIDYxLCAyNTEsIDUwLCAxLCAxNTksIDI1MSwgNTAsIDMwLCA1LCA3MiwgMjUxLCA1MCwgMzAsIDUsIDY5LCAyNTEsIAotICAgIDUwLCAzMCwgNSwgNzQsIDI1MSwgNTAsIDMwLCA1LCA3NSwgMjUxLCA1MCwgMzAsIDUsIDI1NCwgMTQ4LCAyNTEsIDUwLCAKLSAgICAyMjYsIDE4NywgMjUxLCA1MCwgMjQ1LCAxMDEsIDY1LCAyMjIsIDkxLCAzOCwgODgsIDEsIDEyNCwgMTgxLCAzOCwgODgsIDEsIAotICAgIDEyNCwgMjM0LCAxMzgsIDM4LCA4OCwgMSwgMTI0LCAyMzMsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDE4MSwgMzgsIDg4LCAxLCAKLSAgICAxMTUsIDIzMywgMTkzLCAzOCwgODgsIDEsIDExNSwgMjM0LCAxMzgsIDM4LCA4OCwgMSwgMjI5LCAxNTksIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyNTAsIDIxOSwgMzgsIDg4LCAxLCAxMjQsIDI1MCwgOTIsIDM4LCA4OCwgMSwgMTE1LCAyNTAsIDIxOSwgMzgsIDg4LCAKLSAgICAxLCAxMTUsIDIyMiwgMjAyLCAzOCwgODgsIDEsIDExNSwgMjUwLCA5MiwgMzgsIDg4LCAxLCAyMjgsIDIzLCAzOCwgODgsIDEsIAotICAgIDIyNCwgMzIsIDM4LCA4OCwgMSwgMTI0LCAyMjQsIDMwLCAzOCwgODgsIDEsIDI0OCwgMTY0LCAzOCwgODgsIDEsIDExNSwgCi0gICAgMjI0LCAzMCwgMzgsIDg4LCAxLCAyMjQsIDQxLCAzOCwgODgsIDEsIDEyNCwgMjE4LCA1MiwgMzgsIDg4LCAxLCAxMjQsIAotICAgIDIxNywgMTYxLCAzOCwgODgsIDEsIDExNSwgMjE4LCA1MiwgMzgsIDg4LCAxLCAxMTUsIDIxNywgMTYxLCAzOCwgODgsIDEsIAotICAgIDIwNSwgMzgsIDg4LCAxLCAyNTIsIDEwNywgMzgsIDg4LCAxLCAxMjQsIDE5MywgMzgsIDg4LCAxLCAxMjQsIDIyNiwgMjMsIAotICAgIDM4LCA4OCwgMSwgMTI0LCAyNDQsIDE2NCwgMzgsIDg4LCAxLCAxMTUsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDI0NCwgMTY0LCAKLSAgICAzOCwgODgsIDEsIDExNSwgMjI2LCAyMywgMzgsIDg4LCAxLCAxODgsIDM4LCA4OCwgMSwgMTE1LCAxODYsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAxODYsIDM4LCA4OCwgMSwgMjAzLCAzOCwgODgsIDEsIDIyMywgNDgsIDM4LCA4OCwgMSwgMjMzLCAxNTcsIDM4LCAKLSAgICA4OCwgMSwgMjMyLCAxNTEsIDM4LCA4OCwgMSwgMjE0LCA0OSwgMzgsIDg4LCAxLCAxMjQsIDIyMSwgMjQsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyMTksIDE1NywgMzgsIDg4LCAxLCAxMjQsIDIyMiwgMjAyLCAzOCwgODgsIDEsIDEyNCwgMTU5LCAzOCwgODgsIDEsIAotICAgIDIzMiwgMjEzLCAzOCwgODgsIDEsIDYxLCAzOCwgODgsIDEsIDExNSwgMTU5LCAzOCwgODgsIDEsIDcyLCAzOCwgODgsIDEsIAotICAgIDIzNiwgMjgsIDM4LCA4OCwgMSwgNjksIDM4LCA4OCwgMSwgMjE1LCA5MiwgMzgsIDg4LCAxLCAyNDUsIDE2NSwgMzgsIDg4LCAKLSAgICAxLCAyMjcsIDQ5LCAzOCwgODgsIDEsIDIzMywgMTQzLCAzOCwgODgsIDEsIDI0MiwgMTA5LCAyMjIsIDIwMiwgMzgsIDg4LCAKLSAgICAyNDksIDEzMywgNSwgMTM4LCAyMDMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDEzOCwgMjMzLCAxNTcsIDM4LCA4OCwgMjQ5LCAKLSAgICAxMzMsIDUsIDIzMywgMTU4LCAyMTgsIDksIDIzMywgMTMzLCAzOCwgODgsIDUsIDIzMiwgOSwgMjM0LCAyMzYsIDIzMywgCi0gICAgMTMzLCAzOCwgODgsIDI0OSwgMTMzLCA1LCA0MCwgMjI5LCAxNTksIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDExNSwgMTkzLCAKLSAgICAzOCwgODgsIDI0OSwgMTMzLCA1LCAxMjQsIDIyNCwgMzEsIDE2NywgMTE1LCAxOTMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIAotICAgIDE4OCwgMzgsIDg4LCAyNDksIDEzMywgNSwgMjUyLCAxMDcsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDIyMiwgMjAyLCAzOCwgCi0gICAgODgsIDUsIDIyMiwgMTgxLCAzOCwgODgsIDMwLCA1LCA2MSwgMzgsIDg4LCAzMCwgNSwgMjMyLCA5LCAyMjIsIDE0MiwgMzgsIAotICAgIDg4LCAzMCwgNSwgMjU0LCAyMzIsIDM4LCA4OCwgMzAsIDUsIDIxOCwgMTUsIDI1NCwgMjMyLCAzOCwgODgsIDMwLCA1LCA3MiwgCi0gICAgMzgsIDg4LCAzMCwgNSwgMjM2LCAyOCwgMzgsIDg4LCAzMCwgNSwgMjE1LCAxODMsIDM4LCA4OCwgMzAsIDUsIDIxNSwgOTEsIAotICAgIDM4LCA4OCwgMzAsIDUsIDY5LCAzOCwgODgsIDMwLCA1LCAyMTUsIDkyLCAzOCwgODgsIDMwLCA1LCA3NSwgMzgsIDg4LCAzMCwgCi0gICAgNSwgMjI3LCAxMjEsIDU1LCAzOCwgODgsIDMwLCA1LCAyMjYsIDIzMywgMzgsIDg4LCAzMCwgNSwgNzQsIDM4LCA4OCwgMzAsIAotICAgIDUsIDI1NCwgMTQ4LCAzOCwgODgsIDMwLCA1LCAyMjcsIDQ5LCAzOCwgODgsIDMwLCA1LCAyNTQsIDEwOCwgMzgsIDg4LCAzMCwgCi0gICAgNSwgODgsIDI1NCwgMTA4LCAzOCwgODgsIDMwLCA1LCAyMjcsIDEyMSwgNDksIDM4LCA4OCwgNSwgMjMyLCA5LCAyMzQsIAotICAgIDIzNSwgMzgsIDg4LCA1LCAyMTYsIDI0MCwgMzgsIDg4LCA1LCAyMTYsIDIzOSwgMzgsIDg4LCA1LCAyMzQsIDEwNiwgMjE2LCAKLSAgICAyMzgsIDM4LCA4OCwgNSwgMjM0LCAxMDYsIDIxNiwgMjM3LCAzOCwgODgsIDUsIDIzNCwgMTA2LCAyMTYsIDIzNiwgMzgsIAotICAgIDg4LCA1LCAyMjQsIDc3LCAyNDIsIDI2LCAzOCwgODgsIDUsIDIzMiwgOSwgMjIyLCAxNjgsIDM4LCA4OCwgNSwgMjM0LCAKLSAgICAxMDUsIDIzNCwgMjIwLCAzOCwgODgsIDM3LCAyNDksIDU1LCAyNDcsIDc0LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAyMTIsIAotICAgIDc5LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxMTYsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDEwOSwgMzgsIDg4LCAyNDEsIDMzLCAKLSAgICAyMSwgMTY2LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxNjMsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE4MCwgMzgsIDg4LCAyNDEsIAotICAgIDMzLCAyMSwgMTg5LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxOTgsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE5NSwgMzgsIDg4LCAKLSAgICAyNDEsIDMzLCAyMSwgMjAwLCAzOCwgODgsIDg4LCAyMSwgMjEyLCA3OSwgMzgsIDg4LCA4OCwgMjEsIDExNiwgMzgsIDg4LCAKLSAgICA4OCwgMjEsIDEwOSwgMzgsIDg4LCA4OCwgMjEsIDE2NiwgMzgsIDg4LCA4OCwgMjEsIDE2MywgMzgsIDg4LCA4OCwgMjEsIAotICAgIDE4MCwgMzgsIDg4LCA4OCwgMjEsIDE4OSwgMzgsIDg4LCA4OCwgMjEsIDE5OCwgMzgsIDg4LCA4OCwgMjEsIDE5NSwgMzgsIAotICAgIDg4LCA4OCwgMjEsIDIwMCwgMzgsIDg4LCA1LCAyMTMsIDIzNCwgMzgsIDg4LCA1LCAyMTMsIDIzMywgMzgsIDg4LCA1LCAKLSAgICAyMjIsIDEzMywgMzgsIDg4LCA1LCAyMzQsIDE2NiwgMzgsIDg4LCA1LCAyNDAsIDIxOSwgMzgsIDg4LCA1LCAyNDcsIDg4LCAKLSAgICAzOCwgODgsIDUsIDIyMywgMjAyLCAyMjMsIDg5LCAyMjQsIDQxLCAzOCwgODgsIDUsIDIzMiwgOSwgMjEzLCA2MSwgMzgsIAotICAgIDg4LCA1LCAyMzUsIDEwLCAzOCwgODgsIDUsIDIzNSwgOSwgMzgsIDg4LCA1LCAyMjIsIDEzOSwgMzgsIDg4LCA1LCAyMjIsIAotICAgIDEzOCwgMzgsIDg4LCA1LCAyNDEsIDI0OCwgMzgsIDg4LCA1LCAyNTAsIDIxNiwgOTksIDUsIDIxNSwgMTcwLCAyMjMsIDE4MywgCi0gICAgOTksIDUsIDIxNSwgMTcwLCAyNTAsIDE4OSwgOTksIDUsIDI1MCwgMTIwLCA5OSwgNSwgMjE4LCAyMTUsIDk5LCA1LCAyNTEsIAotICAgIDE1NiwgOTksIDEsIDI1NCwgOTIsIDk5LCAxLCAyNTQsIDkzLCAyMTcsIDIyMSwgOTksIDEsIDIzNiwgMjQsIDk5LCAxLCAKLSAgICAyMzYsIDI1LCAyMTcsIDIyMSwgOTksIDEsIDIxNSwgMTczLCA5OSwgMSwgMjE1LCAxNzQsIDIxNywgMjIxLCA5OSwgMSwgCi0gICAgMjI0LCA3NywgMjIzLCAyMjksIDk5LCAxLCAyMjQsIDc3LCAyMjMsIDIzMCwgMjE3LCAyMjEsIDk5LCAxLCAyMzMsIDE1OCwgCi0gICAgMjMzLCA0OCwgOTksIDEsIDIzMywgMTU4LCAyMzMsIDQ5LCAyMTcsIDIyMSwgOTksIDEsIDI0NSwgMTM2LCA5OSwgMSwgMjU0LCAKLSAgICAxMDYsIDk5LCAxLCAyMjcsIDc4LCA5OSwgMSwgMjI3LCA3OSwgMjE3LCAyMjEsIDk5LCAxLCAxODEsIDk5LCAxLCAyMzUsIAotICAgIDE3LCAyMzIsIDEyLCA5OSwgMSwgMjQzLCAxMTAsIDk5LCAxLCAyNDMsIDExMSwgMjQyLCAxMzcsIDk5LCAxLCAyMjksIDE1OSwgCi0gICAgOTksIDEsIDI1MCwgMjE5LCA5OSwgMSwgMjUwLCAyMjAsIDIzMywgMTQ2LCA5OSwgMSwgMjM1LCAxMzksIDk5LCAxLCAyMzUsIAotICAgIDE0MCwgMjM1LCAxMTksIDk5LCAxLCAyMjgsIDIzLCA5OSwgMSwgMjE4LCA1MywgMjMzLCA5OSwgOTksIDEsIDIxOCwgNTMsIAotICAgIDIzMCwgMTM3LCAyMzIsIDEyLCA5OSwgMSwgMjQ4LCAxNjUsIDIzMCwgMTM3LCAyNTQsIDU0LCA5OSwgMSwgMjQ4LCAxNjUsIAotICAgIDIzMCwgMTM3LCAyMzIsIDEyLCA5OSwgMSwgMjMwLCA0NiwgMjI0LCA0NCwgOTksIDEsIDIxOCwgNTIsIDk5LCAxLCAyMTgsIAotICAgIDUzLCAyMTcsIDI0MiwgOTksIDEsIDI0OCwgMTY0LCA5OSwgMSwgMjQ4LCAxNjUsIDIzMiwgMzAsIDk5LCAxLCAyMDUsIDk5LCAKLSAgICAxLCAxOTMsIDk5LCAxLCAyMjYsIDIxNCwgMjM0LCAyMzEsIDk5LCAxLCAyNTIsIDEwNywgOTksIDEsIDI1MiwgMTA4LCAyMzQsIAotICAgIDE3OCwgOTksIDEsIDE4OCwgOTksIDEsIDE4NiwgOTksIDEsIDIwMywgOTksIDEsIDIzMywgMTU3LCA5OSwgMSwgMjE0LCA0OSwgCi0gICAgOTksIDEsIDIyMiwgMjAzLCAyMjIsIDE4OSwgOTksIDEsIDIyMiwgMjAzLCAyMjIsIDE0OSwgOTksIDEsIDIyMiwgMjAyLCAKLSAgICA5OSwgMSwgMTU5LCA5OSwgNSwgMjIzLCAyMjIsIDk5LCAzMCwgNSwgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjE1LCAxNjksIAotICAgIDk5LCAzMCwgNSwgMjE1LCAxNzAsIDIyMiwgMTQ1LCA5OSwgMzAsIDUsIDIxOCwgMjQ4LCA5OSwgMzAsIDUsIDIxOCwgMjQ5LCAKLSAgICAyMzYsIDE2LCA5OSwgMzAsIDUsIDIyNCwgNzcsIDIyMywgMjI5LCA5OSwgMzAsIDUsIDIyNCwgNzcsIDIyMywgMjMwLCAyMTcsIAotICAgIDIyMSwgOTksIDMwLCA1LCAyMzMsIDE1OCwgMjMzLCA0OCwgOTksIDMwLCA1LCAyMzMsIDE1OCwgMjMzLCA0OSwgMjE3LCAKLSAgICAyMjEsIDk5LCAzMCwgNSwgMjE4LCAxNiwgOTksIDMwLCA1LCAyMTgsIDE3LCAyMjMsIDIyOSwgOTksIDMwLCA1LCAyMTgsIAotICAgIDE3LCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMTgsIDE3LCAyMjMsIDIzMCwgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjI2LCA1OSwgCi0gICAgOTksIDMwLCA1LCAyMjYsIDYwLCAyMTcsIDIyMSwgOTksIDI1NCwgMTU1LCAyNTQsIDE1NCwgOTksIDEsIDIzNCwgMjU1LCAKLSAgICAyMjIsIDE0NCwgOTksIDEsIDIzNCwgMTEwLCAyMjIsIDE0NCwgOTksIDEsIDIxNiwgMCwgMjIyLCAxNDQsIDk5LCAxLCAyNDUsIAotICAgIDE2MCwgMjIyLCAxNDQsIDk5LCAxLCAyMTQsIDIzMywgMjIyLCAxNDQsIDk5LCAxLCAyMTIsIDEwMCwgMjIyLCAxNDQsIDk5LCAKLSAgICAxLCAyNTMsIDEyNSwgMjIyLCAxNDQsIDk5LCAyMSwgMjEyLCA3OSwgOTksIDIxLCAxMTYsIDk5LCAyMSwgMTA5LCA5OSwgMjEsIAotICAgIDE2NiwgOTksIDIxLCAxNjMsIDk5LCAyMSwgMTgwLCA5OSwgMjEsIDE4OSwgOTksIDIxLCAxOTgsIDk5LCAyMSwgMTk1LCA5OSwgCi0gICAgMjEsIDIwMCwgOTksIDIyNiwgMTU3LCA5OSwgMjI2LCAxODIsIDk5LCAyMTMsIDIyMywgOTksIDI1MCwgMTY4LCAyMjYsIAotICAgIDE3NSwgOTksIDI1MCwgMTY4LCAyMjAsIDk4LCA5OSwgMjUwLCAxNjgsIDIyNiwgMTMwLCA5OSwgMjI2LCAxODEsIDk5LCAyNywgCi0gICAgMTYsIDI0NywgODAsIDk5LCAyNywgMTYsIDI0OCwgMiwgOTksIDI3LCAxNiwgMjQ2LCAxOSwgOTksIDI3LCAxNiwgMjQ4LCAKLSAgICAxMjEsIDk5LCAyNywgMTYsIDI0OCwgMTIyLCAyMTgsIDIxNSwgOTksIDI3LCAxNiwgMjQ3LCAxNTcsIDk5LCAyNywgMTYsIAotICAgIDI0OCwgMTU3LCA5OSwgMjcsIDE2LCAyNDcsIDI0MCwgOTksIDI3LCAxNiwgMjQ4LCAxNDMsIDk5LCAyNywgMTYsIDI0OCwgCi0gICAgMTIyLCAyNDMsIDMzLCA5OSwgMjcsIDE2LCAzNywgMjE3LCAyMTcsIDk5LCAyNywgMTYsIDM3LCAyNDUsIDk5LCA5OSwgMjcsIAotICAgIDE2LCAzNywgMjM0LCAxNzMsIDk5LCAyNywgMTYsIDM3LCAyMzQsIDE3NSwgOTksIDI3LCAxNiwgMzcsIDIzNSwgMTIzLCA5OSwgCi0gICAgMjcsIDE2LCAzNywgMjM0LCAxNzQsIDIsIDIzNSwgMTIzLCA5OSwgMjcsIDE2LCAzNywgMjM0LCAxNzYsIDIsIDIzNSwgMTIzLCAKLSAgICA5OSwgMjcsIDE2LCAzNywgMjUxLCAyMTQsIDk5LCAyNywgMTYsIDM3LCAyNDIsIDE0MSwgOTksIDI3LCAxNiwgMjIzLCAxNDYsIAotICAgIDIyNywgNDAsIDI0NiwgMjksIDk5LCAyNywgMTYsIDIyMywgMTQ2LCAyMjcsIDQwLCAyNDgsIDE1NSwgOTksIDI3LCAxNiwgCi0gICAgMjIzLCAxNDYsIDI0OSwgMTkzLCAyMTYsIDc1LCA5OSwgMjcsIDE2LCAyMjMsIDE0NiwgMjQ5LCAxOTMsIDIxOCwgMjMsIDk5LCAKLSAgICAyNywgMTYsIDIzMywgNjgsIDIyNywgNDAsIDIyNiwgMTcwLCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyMjcsIDQwLCAyMjUsIAotICAgIDI1LCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyNDksIDE5MywgMjI1LCAxNzAsIDk5LCAyNywgMTYsIDIzMywgNjgsIDI0OSwgCi0gICAgMTkzLCAyMjUsIDE2MCwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjI3LCA0MCwgMjI1LCAxOTMsIDIxOCwgMjM3LCA1LCAyMjYsIAotICAgIDE1NCwgMjE4LCAyMzcsIDUsIDIyNiwgMTY2LCAyMTgsIDIzNywgNSwgMjI2LCAxNjMsIDIxOCwgMjM3LCAxLCA2MSwgMjE4LCAKLSAgICAyMzcsIDEsIDcyLCAyMTgsIDIzNywgMSwgNjksIDIxOCwgMjM3LCAxLCAyNTQsIDE0OCwgMjE4LCAyMzcsIDEsIDc1LCAyMTgsIAotICAgIDIzNywgMSwgNzQsIDIxOCwgMjM3LCAxLCAyNDUsIDIyLCAyMTgsIDIzNywgMSwgMTgxLCAyMTgsIDIzNywgMSwgMjI0LCAKLSAgICAyMzIsIDIxOCwgMjM3LCAxLCAyNDMsIDExMCwgMjE4LCAyMzcsIDEsIDIyOSwgMTU5LCAyMTgsIDIzNywgMSwgMjUwLCAyMTksIAotICAgIDIxOCwgMjM3LCAxLCAyMzUsIDEzOSwgMjE4LCAyMzcsIDEsIDIxMiwgMTA5LCAyMTgsIDIzNywgMSwgMjI4LCAyMywgMjE4LCAKLSAgICAyMzcsIDEsIDIxOCwgNTIsIDIxOCwgMjM3LCAxLCAyNDgsIDE2NCwgMjE4LCAyMzcsIDEsIDIwNSwgMjE4LCAyMzcsIDEsIAotICAgIDE5MywgMjE4LCAyMzcsIDEsIDI0NCwgMTY0LCAyMTgsIDIzNywgMSwgMjE1LCAxLCAyMTgsIDIzNywgMSwgMjUyLCAxMDcsIAotICAgIDIxOCwgMjM3LCAxLCAxODgsIDIxOCwgMjM3LCAxLCAxODYsIDIxOCwgMjM3LCAxLCAyMDMsIDIxOCwgMjM3LCAxLCAyMzMsIAotICAgIDE1NywgMjE4LCAyMzcsIDEsIDIxNCwgNDksIDIxOCwgMjM3LCAxLCAyMjIsIDIwMiwgMjE4LCAyMzcsIDEsIDIxMywgMTUzLCAKLSAgICAyMTgsIDIzNywgMSwgMTU5LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIDIyNiwgMTc5LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIAotICAgIDIyNiwgMTU2LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIDIyNiwgMTUzLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTY5LCAKLSAgICAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTUyLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTczLCAyMTgsIDIzNywgMzAsIDUsIAotICAgIDIyNiwgMTYyLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTgwLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTcxLCAyMTgsIDIzNywgCi0gICAgNSwgMjI2LCAxODMsIDIxOCwgMjM3LCAxLCAyMzQsIDEzOCwgMjE4LCAyMzcsIDEsIDIxOCwgMTc2LCAyMTgsIDIzNywgMjEsIAotICAgIDIxMiwgNzksIDIxOCwgMjM3LCAyMSwgMTE2LCAyMTgsIDIzNywgMjEsIDEwOSwgMjE4LCAyMzcsIDIxLCAxNjYsIDIxOCwgCi0gICAgMjM3LCAyMSwgMTYzLCAyMTgsIDIzNywgMjEsIDE4MCwgMjE4LCAyMzcsIDIxLCAxODksIDIxOCwgMjM3LCAyMSwgMTk4LCAKLSAgICAyMTgsIDIzNywgMjEsIDE5NSwgMjE4LCAyMzcsIDIxLCAyMDAsIDI1MiwgNDAsIDEsIDYxLCAyNTIsIDQwLCAxLCAyMjAsIAotICAgIDkwLCA2MSwgMjUyLCA0MCwgMSwgMTU5LCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxNTksIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAKLSAgICAxNTksIDI1MiwgNDAsIDEsIDI1MiwgMTA3LCAyNTIsIDQwLCAxLCAyMzQsIDIxNywgMjUyLCAxMDcsIDI1MiwgNDAsIDEsIAotICAgIDE5MywgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTkzLCAyNTIsIDQwLCAxLCAyMDUsIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAKLSAgICAyMDUsIDI1MiwgNDAsIDEsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDIyNiwgCi0gICAgMTk0LCAyMTQsIDQ5LCAyNTIsIDQwLCAxLCAyNDMsIDExMCwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMjQzLCAxMTAsIDI1MiwgCi0gICAgNDAsIDEsIDIzNSwgMTM5LCAyNTIsIDQwLCAxLCAyNDgsIDE2NCwgMjUyLCA0MCwgMSwgMjAzLCAyNTIsIDQwLCAxLCAyMjAsIAotICAgIDkwLCAyMDMsIDI1MiwgNDAsIDEsIDE4OCwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTg4LCAyNTIsIDQwLCAxLCAyMTksIDIxMywgCi0gICAgMjE4LCA1MiwgMjUyLCA0MCwgMSwgMjI4LCAxNjYsIDIxOCwgNTIsIDI1MiwgNDAsIDEsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAKLSAgICAyMjAsIDkwLCAyMjIsIDIwMiwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAxODYsIDI1MiwgCi0gICAgNDAsIDEsIDIyMCwgOTAsIDE4NiwgMjUyLCA0MCwgMSwgMjI5LCAxNTksIDI1MiwgNDAsIDEsIDIzMywgMTU3LCAyNTIsIDQwLCAKLSAgICAxLCAyMjAsIDkwLCAyMzMsIDE1NywgMjUyLCA0MCwgMSwgMjI4LCAyMywgMjUyLCA0MCwgMSwgMjUwLCAyMTksIDI1MiwgNDAsIAotICAgIDEsIDIyOSwgMjI4LCAyNTIsIDQwLCAxLCAyMzEsIDE4NywgMjUyLCA0MCwgMSwgNzIsIDI1MiwgNDAsIDEsIDY5LCAyNTIsIAotICAgIDQwLCA1LCAyMTYsIDI0NCwgMjUyLCA0MCwgMzAsIDUsIDc0LCAyNTIsIDQwLCAzMCwgNSwgMjI2LCAxOTQsIDc0LCAyNTIsIAotICAgIDQwLCAzMCwgNSwgMjQ1LCAxNjUsIDI1MiwgNDAsIDMwLCA1LCA3MiwgMjUyLCA0MCwgMzAsIDUsIDIzNCwgMjE3LCA3MiwgCi0gICAgMjUyLCA0MCwgMzAsIDUsIDc1LCAyNTIsIDQwLCAzMCwgNSwgMjM0LCAyMTcsIDc1LCAyNTIsIDQwLCAzMCwgNSwgNjksIAotICAgIDI1MiwgNDAsIDMwLCA1LCAxMTEsIDMxLCAyMjAsIDkwLCAyMjIsIDIwMiwgMjUyLCA0MCwgMjQ5LCAxMzMsIDUsIDIyOSwgCi0gICAgMTYxLCAyNTIsIDQwLCAyNDksIDEzMywgNSwgMjQyLCA0MSwgMjUyLCA0MCwgMjI2LCAxNjUsIDI1MiwgNDAsIDIyNiwgMTYxLCAKLSAgICAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIzMCwgNDYsIDIzMSwgMTA0LCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIyNSwgCi0gICAgMTk2LCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIzNSwgNTEsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjI2LCAxNjUsIAotICAgIDE4MiwgMSwgMTgxLCAxODIsIDEsIDIzNCwgNDgsIDE4MiwgMSwgMjM0LCAxMzgsIDE4MiwgMSwgMjQzLCAxMTAsIDE4MiwgMSwgCi0gICAgMjQyLCAxNjIsIDE4MiwgMSwgMjI5LCAxNTksIDE4MiwgMSwgMjUwLCAyMTksIDE4MiwgMSwgMjUwLCA5MiwgMTgyLCAxLCAKLSAgICAyMzUsIDEzOSwgMTgyLCAxLCAyMjgsIDIzLCAxODIsIDEsIDIxOCwgNTIsIDE4MiwgMSwgMjE3LCAxNjEsIDE4MiwgMSwgCi0gICAgMjQ4LCAxNjQsIDE4MiwgMSwgMjA1LCAxODIsIDEsIDE5MywgMTgyLCAxLCAyMjUsIDE3NCwgMTgyLCAxLCAyMjYsIDIzLCAKLSAgICAxODIsIDEsIDI0NCwgMTY0LCAxODIsIDEsIDI0NCwgNDQsIDE4MiwgMSwgMjUyLCAxMDcsIDE4MiwgMSwgMjUxLCAxNDUsIAotICAgIDE4MiwgMSwgMTg4LCAxODIsIDEsIDIzMCwgMjM3LCAxODIsIDEsIDIxNiwgMTQxLCAxODIsIDEsIDIxNiwgMTMzLCAxODIsIAotICAgIDEsIDI0NSwgMjQ5LCAxODIsIDEsIDE4NiwgMTgyLCAxLCAyMDMsIDE4MiwgMSwgMjMzLCAxNTcsIDE4MiwgMSwgMTU5LCAKLSAgICAxODIsIDEsIDI0MSwgMTM5LCAxODIsIDEsIDIxNSwgMSwgMTgyLCAxLCAyMjIsIDIwMiwgMTgyLCAxLCAyMjEsIDI0LCAxODIsIAotICAgIDEsIDIxNCwgNDksIDE4MiwgMSwgNjEsIDE4MiwgMjE5LCAxOCwgMSwgMTg2LCAxODIsIDIxOSwgMTgsIDEsIDIwMywgMTgyLCAKLSAgICAzMCwgNSwgMjU0LCAyMzIsIDE4MiwgMzAsIDUsIDcyLCAxODIsIDMwLCA1LCA3NSwgMTgyLCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTgyLCAzMCwgNSwgNjksIDE4MiwgMzAsIDUsIDIxNSwgOTIsIDE4MiwgMzAsIDUsIDc0LCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMzUsIDI3LCAxODIsIDI0OSwgMTMzLCA1LCAxODMsIDE4MiwgMjQ5LCAxMzMsIDUsIDE1MCwgMTgyLCAyNDksIDEzMywgNSwgCi0gICAgMjA0LCAxODIsIDI0OSwgMTMzLCA1LCAyMjYsIDIyOSwgMTgyLCAyNDksIDEzMywgNSwgMTQ5LCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMTgsIDk5LCAxODIsIDI0OSwgMTMzLCA1LCAyMjgsIDUsIDE4MiwgMjQ5LCAxMzMsIDUsIDIzNCwgMjM1LCAxODIsIDUsIAotICAgIDIyNCwgNDIsIDE4MiwgNSwgMjI4LCA2MCwgMTgyLCAyMjUsIDI3LCAyMTgsIDUxLCAxODIsIDIyNSwgMjcsIDIyOCwgMTMsIAotICAgIDIxNywgNzQsIDIxOCwgNTEsIDE4MiwgMjI1LCAyNywgMjUwLCA5OCwgMTgyLCAyMjUsIDI3LCAyMTYsIDEyOCwgMjUwLCA5OCwgCi0gICAgMTgyLCAyMjUsIDI3LCAyMTYsIDEyNywgMTgyLCAyMSwgMjEyLCA3OSwgMTgyLCAyMSwgMTE2LCAxODIsIDIxLCAxMDksIAotICAgIDE4MiwgMjEsIDE2NiwgMTgyLCAyMSwgMTYzLCAxODIsIDIxLCAxODAsIDE4MiwgMjEsIDE4OSwgMTgyLCAyMSwgMTk4LCAKLSAgICAxODIsIDIxLCAxOTUsIDE4MiwgMjEsIDIwMCwgMTgyLCAxLCAyMTYsIDExNSwgMTgyLCAxLCAyMTYsIDEwNSwgMTgyLCAxLCAKLSAgICAyNDgsIDg2LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMjEyLCA3OSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDExNiwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMjEsIDEwOSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE2NiwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIAotICAgIDE2MywgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE4MCwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE4OSwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMjEsIDE5OCwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE5NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDIwMCwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxNTcsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1MywgMTIyLCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyNTQsIDEyMSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAyNCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAKLSAgICA4NiwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxNTYsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMTk0LCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDE5NSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAxOTMsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDI1NCwgMTg5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDEzLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzUsIAotICAgIDE2OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM2LCAyOSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM1LCAxODgsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDEsIDIzNSwgMTc3LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzIsIDE1NiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjE1LCAxOTAsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIxNSwgMTg4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMTUsIAotICAgIDEzOSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjE1LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCA4MiwgMjI3LCA3NiwgCi0gICAgMjUwLCA0MCwgMSwgMjQ1LCA3MCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjQ1LCAxNjgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIAotICAgIDI0NSwgMTA4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNDUsIDQ5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzIsIDIwOCwgCi0gICAgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjI3LCA1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMjcsIDExNiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjI2LCAyNDksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIyNywgODgsIDIyNywgNzYsIDI1MCwgNDAsIDIzMCwgCi0gICAgMTczLCAyMTYsIDg0LCAyMjcsIDc2LCAyNTAsIDQwLCAyNDMsIDEwNSwgMjE2LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjMwLCAKLSAgICAxNzEsIDIxNiwgODUsIDIyNywgNzYsIDI1MCwgNDAsIDIyMywgMjQyLCAyMjcsIDc2LCAyNTAsIDQwLCAyMjYsIDIxLCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAyNTQsIDExMywgMjI3LCA3NiwgMjUwLCA0MCwgMjI1LCAyNywgMjMwLCAxNjgsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDIyNSwgMjcsIDUxLCAyMzAsIDE2OCwgMjE0LCAyMjksIDE2MCwgMjM0LCAyMTUsIDIxNCwgMjI5LCAxNjAsIDIyMSwgCi0gICAgMCwgMjE0LCAyMjksIDE2MCwgMjI1LCA3OCwgMjE0LCAyMjksIDUsIDIyOSwgNDAsIDIxNCwgMjI5LCA1LCAyMTMsIDY5LCAKLSAgICAyMzEsIDM1LCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjU0LCAxMTgsIDIzNSwgMjQwLCAyMTgsIDIwMSwgCi0gICAgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyMzQsIAotICAgIDIwMywgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyNTAsIDE5MCwgNTUsIDIxNCwgMjI5LCAxNjAsIDIxMywgCi0gICAgNjksIDIzNCwgMjAzLCAyMzUsIDI0MCwgMjE4LCAyMDIsIDIyMiwgMTE1LCAyMTQsIDIyOSwgMTYwLCA1MSwgMjE4LCAyMDEsIAotICAgIDIxNCwgMjI5LCAxNjAsIDIxNiwgMTY5LCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjM0LCAyMDMsIDI1MywgMjQ0LCAKLSAgICAyMTQsIDIyOSwgMTYwLCA2MiwgNTUsIDIxNCwgMjI5LCAxNjAsIDExNywgMTc2LCA1NSwgMjE0LCAyMjksIDE2MCwgMTMzLCAKLSAgICAxNzYsIDU1LCAyMTQsIDIyOSwgMTYwLCAyMjMsIDEzNywgMjM0LCAyMTQsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIAotICAgIDE2MCwgMjUzLCAxMjAsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAyMTgsIDIwMSwgMjE0LCAKLSAgICAyMjksIDUsIDIxNCwgMTI5LCAyMTUsIDE4NSwgMjE0LCAyMjksIDUsIDIyMywgMjAyLCAyMTQsIDEyOSwgMjE1LCAxODUsIAotICAgIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgMjUzLCAyNDQsIDIxNCwgMjI5LCA1LCAyMjMsIDIwMiwgMjE0LCAxMjksIDI1MywgCi0gICAgMjQ0LCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIDIxNSwgMTg2LCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIAotICAgIDI1MywgMjQ1LCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDI1NCwgMiwgMjE0LCAyMjksIDUsIDI1MywgCi0gICAgMjQzLCAyNTIsIDg1LCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDIxNCwgMjUyLCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIAotICAgIDIxNCwgMjUzLCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjE3LCAyMSwgMjE0LCAyMjksIDUsIDI0MSwgMTc2LCAxODQsIAotICAgIDI1MywgMjQyLCAyMTQsIDIyOSwgNSwgMTg0LCAyNTMsIDI0MiwgMjE0LCAyMjksIDUsIDIyMywgNTMsIDE4NCwgMjUzLCAKLSAgICAyNDIsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjE1LCAxOTIsIDIzMCwgMTYwLCAyMTQsIDIyOSwgNSwgMjUzLCAxOTAsIDcsIAotICAgIDEsIDMsIDYsIDYxLCA3LCAxLCAzLCA2LCAyNTQsIDE0OCwgNywgMywgMSwgMjE2LCA1OCwgMjU0LCAxNDgsIDcsIDEsIDMsIAotICAgIDYsIDI1MiwgNTQsIDI1MywgNzQsIDcsIDEsIDMsIDYsIDI1MCwgMjUyLCA3LCAxLCAzLCA2LCAyNDksIDMsIDcsIDEsIDMsIAotICAgIDYsIDI0NSwgMjUsIDcsIDEsIDMsIDYsIDc0LCA3LCAzLCAxLCAyMTYsIDU4LCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjE2LCAKLSAgICA1OCwgNzIsIDcsIDEsIDMsIDYsIDIzNSwgMTQyLCA3LCAxLCAzLCA2LCAyMzUsIDI3LCA3LCAxLCAzLCA2LCAyMzMsIDE3MSwgCi0gICAgMiwgOTAsIDcsIDEsIDMsIDYsIDE4MywgNywgMSwgMywgNiwgMjIzLCAyMDIsIDIwNCwgNywgMSwgMywgNiwgNzUsIDcsIDEsIAotICAgIDMsIDYsIDIyNywgNDAsIDc1LCA3LCAzLCAxLCAyMjAsIDExMywgNzUsIDcsIDMsIDEsIDIyMCwgMTEzLCAyMjcsIDQwLCA3NSwgCi0gICAgNywgMywgMSwgMjIwLCAxMTMsIDE1NywgMiwgOTAsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNywgOTksIDcsIDEsIDMsIDYsIAotICAgIDIyNywgMiwgNywgMywgMSwgMjE2LCAyMjcsIDE1MSwgNzUsIDcsIDMsIDEsIDI1MSwgMTAxLCAxNTEsIDc1LCA3LCAxLCAzLCAKLSAgICA2LCAyMjYsIDIyOSwgNywgMSwgMywgNiwgMjIzLCAyMDIsIDE0OSwgNywgMSwgMywgNiwgMjE2LCA1OCwgMTQ5LCA3LCAxLCAKLSAgICAzLCA2LCAyMTgsIDk5LCA3LCAxLCAzLCA2LCA2OSwgNywgMywgMSwgMjIwLCAxMTMsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgCi0gICAgMjQ3LCAyMDgsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgMjE2LCA1OCwgMTgzLCA3LCAxLCAzLCA2LCAyMTUsIDc5LCA3LCAxLCAKLSAgICAzLCA2LCAyMTQsIDgyLCA3LCAxLCAzLCA2LCAyMTIsIDE1MiwgNywgMSwgMywgNiwgMjQ0LCAyMzIsIDcsIDEsIDIxNCwgCi0gICAgMTE2LCAyMzMsIDEwNSwgMjE5LCAxODIsIDcsIDEsIDI1NCwgMTAzLCAyNSwgMSwgMywgNiwgMjQzLCA4MywgMjUsIDEsIDMsIAotICAgIDYsIDIzMywgMTIyLCAyNSwgMSwgMywgNiwgMjI1LCAyNDAsIDI1LCAxLCAzLCA2LCAyMjMsIDE5MCwgMjUsIDEsIDMsIDYsIAotICAgIDIyNSwgNDYsIDMzLCAxLCAzLCA2LCAyNDUsIDEzMSwgNTksIDEsIDYsIDYxLCA1OSwgMSwgNiwgMjU0LCAxNDgsIDU5LCAxLCAKLSAgICA2LCAyNTMsIDc0LCA1OSwgMSwgNiwgMjUyLCA1NCwgMjUzLCA3NCwgNTksIDEsIDYsIDI0OSwgMywgNTksIDEsIDYsIDc0LCAKLSAgICA1OSwgMSwgNiwgMjIzLCAyMDIsIDc0LCA1OSwgMSwgNiwgMjQzLCAxNzcsIDU5LCAxLCA2LCAyNDIsIDQxLCA1OSwgMSwgNiwgCi0gICAgNzIsIDU5LCAxLCA2LCAyMzUsIDE0MiwgNTksIDEsIDYsIDIzNSwgMjcsIDU5LCAxLCA2LCAxNTAsIDU5LCAxLCA2LCAxODMsIAotICAgIDU5LCAxLCA2LCAyMDQsIDU5LCAxLCA2LCAyMjMsIDIwMiwgMjA0LCA1OSwgMSwgNiwgNzUsIDU5LCAxLCA2LCAyMjcsIDIsIAotICAgIDU5LCAxLCA2LCAyMjYsIDIyOSwgNTksIDEsIDYsIDE0OSwgNTksIDEsIDYsIDIxOCwgOTksIDU5LCAxLCA2LCA2OSwgNTksIAotICAgIDEsIDYsIDIxNCwgODIsIDU5LCAxLCAzLCA2MSwgNTksIDEsIDMsIDIxNiwgNTgsIDYxLCA1OSwgMSwgMywgMjU0LCA1MiwgCi0gICAgNTksIDEsIDMsIDIxNiwgNTgsIDI1NCwgMTQ4LCA1OSwgMSwgMywgMjUzLCA3NCwgNTksIDEsIDMsIDI0OSwgMywgNTksIDEsIAotICAgIDMsIDc0LCA1OSwgMSwgMywgMjIyLCAxMTMsIDU5LCAxLCAzLCAyMjcsIDQwLCA3NCwgNTksIDEsIDMsIDIxNiwgNTgsIDIyNywgCi0gICAgNDAsIDc0LCA1OSwgMSwgMywgMjQzLCAxNzcsIDU5LCAxLCAzLCAyMTYsIDU4LCA3MiwgNTksIDEsIDMsIDIzNSwgMjcsIDU5LCAKLSAgICAxLCAzLCAxODMsIDU5LCAxLCAzLCAyNDUsIDk2LCA1OSwgMSwgMywgNzUsIDU5LCAxLCAzLCAyMjcsIDQwLCA3NSwgNTksIDEsIAotICAgIDMsIDIxNiwgMjI3LCAxNTEsIDc1LCA1OSwgMSwgMywgMjUxLCAxMDEsIDE1MSwgNzUsIDU5LCAxLCAzLCAyMjYsIDIyOSwgCi0gICAgNTksIDEsIDMsIDIxOCwgOTksIDU5LCAxLCAzLCA2OSwgNTksIDEsIDMsIDIyMCwgMTEzLCA2OSwgNTksIDEsIDMsIDIxNiwgCi0gICAgNTgsIDE4MywgNTksIDEsIDMsIDIxNSwgNzksIDU5LCAxLCAzLCAyNTQsIDEwMywgNTksIDEsIDMsIDI1MSwgMjAzLCA1OSwgCi0gICAgMSwgMywgMjUsIDI0MywgODMsIDU5LCAxLCAzLCAyNDgsIDUsIDU5LCAxLCAzLCAyNSwgMjI2LCA5LCA1OSwgMSwgMywgMjUwLCAKLSAgICA0NywgNywgMjE5LCAxMCwgMywgMSwgNzIsIDcsIDIxOSwgMTAsIDMsIDEsIDE0OSwgNywgMjE5LCAxMCwgMywgMSwgNjksIDcsIAotICAgIDIxOSwgMTAsIDMsIDEsIDIxNSwgNzksIDI1LCAyMTksIDEwLCAzLCAxLCAyNTEsIDIwMywgMjUsIDIxOSwgMTAsIDMsIDEsIAotICAgIDI0MywgODMsIDI1LCAyMTksIDEwLCAzLCAxLCAyMjMsIDE5MCwgMjUsIDIxOSwgMTAsIDMsIDEsIDIyNiwgOSwgMjUsIDIxOSwgCi0gICAgMTAsIDMsIDEsIDI1MCwgNDcsIDcsIDMsIDEsIDIxNSwgMTgzLCA3LCAzLCAxLCA1NCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgCi0gICAgNywgMywgMSwgMjQ5LCA0LCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyNDQsIDIzMSwgMiwgMjMxLCAzNywgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIzMSwgMzcsIAotICAgIDIxNywgNDIsIDcsIDMsIDEsIDIyNiwgMjMwLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgCi0gICAgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDI0NCwgNTcsIDI0LCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAKLSAgICAzLCAxLCAyMjMsIDQsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMzEsIDM3LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjE2LCA1OCwgMjQzLCAxNzcsIAotICAgIDU5LCAxLCAzMywgMjQ1LCAxMDgsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgMywgMSwgMjE3LCAxNjQsIDIsIAotICAgIDIxOSwgNDcsIDcsIDMsIDYsIDEsIDI0MCwgMTQ2LCAyLCA5MCwgNywgMywgMSwgMjM1LCAxODQsIDIsIDkwLCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgOTAsIDcsIDMsIDYsIDEsIDExMSwgMiwgOTAsIDcsIDMsIDEsIDIxNSwgMTI5LCAyLCA5MCwgNywgMywgCi0gICAgMSwgNTQsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQ0LCAKLSAgICAyMzEsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzUsIAotICAgIDI4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjMyLCAKLSAgICAxMTAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIyNiwgCi0gICAgMjMwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjIzLCAKLSAgICA0LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTUsIAotICAgIDgwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTMsIDE2NywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjU0LCA1MywgCi0gICAgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDEsIDM4LCAyNCwgMjE4LCAyNywgNywgMywgMSwgMTkxLCAKLSAgICAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCAxOTEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyMywgCi0gICAgMjAyLCAyMjcsIDQwLCAxOTEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyMiwgMTE0LCAyLCAyMjMsIDIwNywgMTAxLCAKLSAgICA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgMTU3LCAyLCAyMjMsIDIwNywgCi0gICAgMTAxLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAxMTEsIDIsIDIyMywgMjA3LCAxMDEsIAotICAgIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyMjMsIDIwNywgMTAxLCA1OSwgMSwgMywgMjE2LCA1OCwgMjU0LCA1MiwgNTksIDEsIAotICAgIDMsIDI1MCwgMjUyLCA1OSwgMSwgMywgMjUwLCAyNTMsIDIsIDI0OSwgNDEsIDU5LCAxLCAzLCAyNDUsIDI1LCA1OSwgMSwgMywgCi0gICAgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA1OSwgMSwgMywgMjQ0LCAyMzAsIDU5LCAxLCAzLCAyNDcsIDczLCAyMzUsIDE0MywgCi0gICAgMiwgOTAsIDU5LCAxLCAzLCAxMTMsIDI0MywgMTc3LCA1OSwgMSwgMywgMjE2LCA1OCwgMjQyLCA0MSwgNTksIDEsIDMsIAotICAgIDI0MCwgMTQ2LCAyLCA5MCwgNTksIDEsIDMsIDIzNSwgMTgzLCA1OSwgMSwgMywgNiwgNzIsIDU5LCAxLCAzLCA2LCAyNDAsIAotICAgIDE0NiwgMiwgOTAsIDU5LCAxLCAzLCAyMzUsIDE0MywgMiwgMjQ5LCA2NywgNTksIDEsIDMsIDIzMywgMTcxLCAyLCAyMjMsIAotICAgIDIwNywgMTAxLCA1OSwgMSwgMywgMjMzLCAxNzEsIDIsIDIyNiwgMTkzLCAxMDEsIDU5LCAxLCAzLCA2LCAxNTAsIDU5LCAxLCAKLSAgICAzLCAyMzIsIDExMCwgMiwgMTAxLCA1OSwgMSwgMywgMjE2LCA1OCwgMjMyLCAxMTAsIDIsIDE4NCwgMjMzLCA2MCwgNTksIDEsIAotICAgIDMsIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDU5LCAxLCAzLCAyMzAsIDk4LCAyLCAyMjMsIDIwNywgMTAxLCA1OSwgMSwgMywgNiwgCi0gICAgMjA0LCA1OSwgMSwgMywgMjUyLCA1NCwgNzUsIDU5LCAxLCAzLCAyMjYsIDksIDU5LCAxLCAzLCAyMjMsIDQsIDIsIDEwMSwgCi0gICAgNTksIDEsIDMsIDI0NSwgNDAsIDU5LCAxLCAzLCAyMTgsIDEwMCwgMiwgMjI2LCAxOTMsIDEwMSwgNTksIDEsIDMsIDExMSwgCi0gICAgMTM0LCA1OSwgMSwgMywgMjE1LCAxMjgsIDU5LCAxLCAzLCA2LCA2OSwgNTksIDEsIDMsIDIxNSwgODAsIDIsIDEwMSwgNTksIAotICAgIDEsIDMsIDIxNiwgNTgsIDIxNSwgNzksIDU5LCAxLCAzLCAyMTIsIDE1MiwgNTksIDEsIDMsIDIxMiwgMTUzLCAyLCAyMjMsIAotICAgIDIwNywgMTAxLCA1OSwgMSwgMywgMjEyLCAxNTMsIDIsIDI0OSwgNDEsIDU5LCAxLCAzLCAyNDQsIDIzMiwgNTksIDEsIDMsIAotICAgIDIxNywgMTMyLCAzNywgMjQ2LCA3MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCAzNywgMjQ2LCA3MiwgMjU0LCAxNjQsIDI1NCwgCi0gICAgMTc0LCAzNywgMjE5LCAyNTMsIDU1LCAzNywgMjE4LCAyMDcsIDc3LCAzNywgMjMyLCAzNiwgMzcsIDI0MiwgMTExLCAzNywgCi0gICAgMjMyLCAzNCwgMzcsIDI1NCwgMTYyLCAzNywgMjQyLCAxMTIsIDM3LCAyNTQsIDE2MywgMzcsIDcsIDMsIDEsIDIyNCwgMTEzLCAKLSAgICA1NSwgMzcsIDI1MSwgNzMsIDM3LCAyMzIsIDM1LCAzNywgNTEsIDI0OSwgMjI0LCA0OSwgMzcsIDIyNywgOTEsIDQ5LCAzNywgCi0gICAgMjEyLCAyOCwgNTUsIDM3LCAyMzUsIDE3MCwgNTUsIDM3LCAyMTUsIDEyMiwgNDksIDM3LCAyMTUsIDEwNSwgNDksIDM3LCA3LCAKLSAgICAzLCAxLCAyNDQsIDMyLCAyMjcsIDQwLCAxMTgsIDQ5LCAzNywgNywgMywgMSwgMjU0LCAxNDgsIDM3LCA3LCAzLCAxLCAyNTMsIAotICAgIDI0MCwgMzcsIDcsIDMsIDEsIDI1MywgOTIsIDM3LCA3LCAzLCAxLCAyNTAsIDI1MywgMjUwLCAxMTcsIDM3LCA3LCAzLCAxLCAKLSAgICAyMzUsIDIxMCwgMjQ5LCAzLCAzNywgNywgMywgMSwgMjQ1LCAyNSwgMzcsIDcsIDMsIDEsIDI0MywgMTc3LCAzNywgNywgMSwgCi0gICAgMywgNiwgMjQzLCAxNzcsIDM3LCA3LCAzLCAxLCAyMzUsIDI3LCAzNywgNywgMywgMSwgMTUwLCAzNywgNywgMSwgMywgNiwgCi0gICAgMTUwLCAzNywgNywgMSwgMywgNiwgMTgzLCAzNywgNywgMywgMSwgMjA0LCAzNywgNywgMSwgMywgNiwgMjA0LCAzNywgNywgCi0gICAgMSwgMywgNiwgMTQ5LCAzNywgNywgMywgMSwgMjI0LCAxMTMsIDIyMywgODgsIDM3LCA3LCAzLCAxLCAxOTcsIDM3LCA3LCAzLCAKLSAgICAxLCAxODQsIDE5NywgMzcsIDcsIDMsIDEsIDIxMiwgMTUyLCAzNywgNTEsIDIzNSwgMTkxLCAyNTEsIDc1LCA1NSwgMzcsIAotICAgIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDU1LCAzNywgNDIsIDI1MywgMTY1LCA0OSwgMzcsIDQ2LCAyNTMsIDE2NSwgMjQsIAotICAgIDExOSwgMjUzLCAxNjUsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIAotICAgIDEzMSwgNTUsIDcsIDYsIDEsIDU0LCAyLCA2MiwgNDksIDcsIDMsIDEsIDU0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDU0LCAyLCAKLSAgICA2MiwgNTUsIDcsIDMsIDEsIDU0LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDU0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIAotICAgIDU0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDExOCwgMjQsIDE3OSwgNywgMywgMSwgCi0gICAgMjUwLCAyNTMsIDIsIDI1MCwgMTE4LCAyNCwgMTc5LCA3LCA2LCAxLCAyNDksIDQsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQ5LCAKLSAgICA0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDI0OSwgNCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDksIDQsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjQ5LCA0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAKLSAgICAyNDksIDQsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyNDksIDQsIDIsIAotICAgIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDE5MSwgMiwgMjMyLCAzOCwgCi0gICAgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyMzIsIDM4LCAyNCwgMTc5LCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzgsIDI0LCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgNywgMywgMSwgMTkxLCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyNTAsIDExOCwgMjQsIDI1MSwgNzQsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjUwLCAxMTgsIDI0LCAyNTEsIDc0LCA3LCA2LCAxLCAyNDQsIDIzMSwgMiwgNjIsIDQ5LCA3LCAKLSAgICAzLCAxLCAyNDQsIDIzMSwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjMyLCAzNywgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQyLCA0MiwgMiwgNjIsIAotICAgIDQ5LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDYyLCA1NSwgNywgNiwgMSwgCi0gICAgMjQyLCA0MiwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAKLSAgICAyNTAsIDExNywgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI1MSwgNzUsIAotICAgIDU1LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTEsIDc1LCA1NSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIxNywgNDMsIDU1LCAKLSAgICA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjE3LCA0MywgNTUsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIxMCwgMjQsIAotICAgIDE3OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAxNzksIAotICAgIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDE3OSwgNywgNiwgMSwgMjM1LCAyOCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzUsIDI4LCAKLSAgICAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjMyLCAKLSAgICAyNDMsIDU1LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyMzMsIDE3MSwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDYyLCAKLSAgICAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCAxNzksIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCAKLSAgICAxNzksIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNDksIDcsIDYsIDEsIAotICAgIDIzMiwgMTEwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIAotICAgIDYyLCA0OSwgNywgMywgMSwgMjMwLCA5OCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCA2MiwgNTUsIDcsIDMsIAotICAgIDEsIDIzMCwgOTgsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMzAsIAotICAgIDk4LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjE3LCAKLSAgICA0MywgMjQsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyMTcsIDQzLCAyNCwgMjQ3LCAyMDksIDcsIDMsIDEsIDE1NywgMiwgCi0gICAgMjE3LCA0MywgMjQsIDI0NywgMjA5LCA3LCA2LCAxLCAxNTcsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgMywgMSwgCi0gICAgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjMyLCAzOCwgMjQsIDE3OSwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMTc5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMTc5LCA3LCAzLCAxLCAyMjYsIAotICAgIDIzMCwgMiwgMTc5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjYsIDIzMCwgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMjQsIDExMywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMjQsIAotICAgIDExMywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgNjIsIAotICAgIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMjI0LCAxMTMsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIAotICAgIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMzIsIDI0MywgNTUsIAotICAgIDcsIDYsIDEsIDIyMywgNCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjIzLCA0LCAKLSAgICAyLCA2MiwgNTUsIDcsIDMsIDEsIDIyMywgNCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1NCwgMTY0LCAyNCwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1NCwgMTY0LCAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAyMjMsIDQsIDIsIAotICAgIDI1MCwgMTY3LCAyNCwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1MCwgMTY3LCAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAKLSAgICAyMjMsIDQsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgNywgMywgMSwgMjIzLCA0LCAyLCA2MiwgMjUxLCAyMjAsIAotICAgIDI0LCA2MiwgNDksIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgMjQ3LCAyMTAsIDU1LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCA1NSwgNywgNiwgMSwgMTExLCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgNywgMywgMSwgMTExLCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMTExLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDIxNywgNDMsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgCi0gICAgMjE3LCA0MywgMjQsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAyMzIsIDM4LCAyNCwgMjQ3LCAyMDksIDcsIDMsIDEsIDExMSwgCi0gICAgMiwgMjMyLCAzOCwgMjQsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyMTUsIDgwLCAKLSAgICAyLCAyMTcsIDQyLCA3LCA2LCAxLCAyMTUsIDgwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjE0LCA4MywgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAyMTQsIAotICAgIDgzLCAyLCAxNzksIDcsIDMsIDEsIDIxNCwgODMsIDIsIDE3OSwgNywgNiwgMSwgMjE0LCA4MywgMiwgMjQ3LCAyMDksIDcsIAotICAgIDMsIDEsIDIxNCwgODMsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxNCwgCi0gICAgODMsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjE0LCA4MywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTQsIDgzLCAyLCA2MiwgNTUsIAotICAgIDcsIDYsIDEsIDIxMywgMTY3LCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxMywgMTY3LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIxMywgCi0gICAgMTY3LCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjEzLCAxNjcsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjQ5LCAyMjMsIDcsIAotICAgIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDYyLCA1NSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjEyLCAxNTMsIDIsIAotICAgIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgCi0gICAgMjQ3LCAyMDksIDcsIDMsIDEsIDIxNCwgODMsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIyMywgCi0gICAgMTMxLCA0OSwgNywgMywgMSwgMTE4LCAyLCA0NiwgMTUxLCAyMjMsIDEzMCwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDYyLCAKLSAgICA0OSwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDEyNCwgCi0gICAgOTAsIDcsIDYsIDEsIDIyMCwgMjU1LCAxOTcsIDcsIDMsIDEsIDI0OCwgNSwgNywgNiwgMSwgMTE4LCAyLCA2MiwgNTUsIDcsIAotICAgIDMsIDEsIDExOCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDI0MSwgCi0gICAgMzgsIDQ5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgMTc5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAKLSAgICAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgCi0gICAgMjQsIDYyLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTE4LCAyLCAyNTEsIAotICAgIDc1LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAxNzksIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgCi0gICAgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAKLSAgICAyNTEsIDc1LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAKLSAgICA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyMTcsIAotICAgIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIAotICAgIDYyLCA1NSwgNywgNiwgMSwgMTkxLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxOTEsIDIsIDIxNywgNDIsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgMywgMSwgCi0gICAgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAKLSAgICAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIAotICAgIDM4LCA0OSwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgCi0gICAgMjI0LCAyNCwgMjE3LCA0MiwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDYyLCAKLSAgICA1NSwgNywgMywgMSwgMTU3LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE1NywgCi0gICAgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAKLSAgICAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIAotICAgIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgCi0gICAgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNiwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTExLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDExMSwgMiwgNjIsIDU1LCA3LCA2LCAKLSAgICAxLCAxMTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAKLSAgICAzOCwgNDksIDcsIDYsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTExLCAyLCAKLSAgICAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMTMsIDEwNiwgCi0gICAgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCA2MiwgNTUsIAotICAgIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMjE3LCA0MiwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDIzMSwgCi0gICAgMzYsIDIzMiwgMjE0LCA3LCAzLCAxLCAyMzEsIDM2LCAyMzIsIDIxNCwgNywgNiwgMSwgMjMxLCAzNiwgMjE1LCA3OSwgNywgCi0gICAgMywgMSwgMjMxLCAzNiwgMjE1LCA3OSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDIzMiwgMTc3LCA3LCAzLCAxLCAyMTMsIAotICAgIDEwNiwgMiwgMjMyLCAxNzcsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgCi0gICAgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIAotICAgIDM5LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAKLSAgICAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgNTAsIAotICAgIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIAotICAgIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIwNywgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgNjQsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgCi0gICAgMSwgMjQ1LCA2NCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDM5LCAyNSwgMywgCi0gICAgMSwgMjQ1LCAyOSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIAotICAgIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICAyMzQsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAKLSAgICAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgCi0gICAgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIAotICAgIDI0OCwgOTksIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIAotICAgIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI1LCAzOSwgMjUsIDYsIAotICAgIDEsIDIyNywgNjYsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY2LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIAotICAgIDIyNSwgMzksIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIAotICAgIDEyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIAotICAgIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIxNSwgCi0gICAgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyNywgCi0gICAgNjgsIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAKLSAgICAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCAzOSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIAotICAgIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIAotICAgIDIzNCwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI2LCAyMzQsIDI1LCAKLSAgICAzLCAxLCAyNDUsIDI5LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgCi0gICAgMjM1LCAxODQsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCAKLSAgICA2NiwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAKLSAgICAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgCi0gICAgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIAotICAgIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI1LCAKLSAgICA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIAotICAgIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgCi0gICAgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgNTEsIDI0LCAyMjUsIDUxLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAKLSAgICAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIAotICAgIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgCi0gICAgMjksIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAKLSAgICAyLCAyMDcsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIAotICAgIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICA1MSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIAotICAgIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAKLSAgICAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIAotICAgIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI1LCA1MSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIAotICAgIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgCi0gICAgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIAotICAgIDEwMSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIDI0NiwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIDIzNSwgCi0gICAgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgCi0gICAgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMTAxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgCi0gICAgMjMyLCAzNywgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDUxLCAyNSwgMjM0LCAxMSwgMjUsIDIyNSwgNTEsIDI1LCAyMjUsIDM5LCAyNSwgCi0gICAgMjI2LCA1MCwgMjUsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM1LCAKLSAgICAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAKLSAgICA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyMjYsIDIzNCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDUxLCAyNSwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgMjM0LCAyNSwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjE0LCAxMDEsIAotICAgIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMzUsIDE4NCwgCi0gICAgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMzUsIAotICAgIDE4NCwgMiwgMjE0LCAxMDEsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjMyLCAzNywgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjYsIDIzNCwgMjUsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIxNCwgMTAxLCAKLSAgICAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMTQsIAotICAgIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjIzLCAxOTEsIAotICAgIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyMjMsIDE5MSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIAotICAgIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMTQsIDEwMSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMzIsIDM3LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIxNCwgCi0gICAgMjQ1LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjIzLCAxOTEsIDIsIDI0OCwgOTksIDI1LCAKLSAgICAyNDcsIDIwNCwgMjQsIDIxNCwgMjQ1LCAyNSwgMjQ3LCAyMDQsIDI0LCAyMjYsIDIzNCwgMjUsIDIxNCwgMjQ1LCAyNSwgMywgCi0gICAgMSwgMjI3LCA2OCwgMiwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxMiwgMjEwLCAKLSAgICAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgCi0gICAgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjE0LCAyNDUsIAotICAgIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNTEsIDI1LCAyMjYsIAotICAgIDIzNCwgMjUsIDI0OCwgOTksIDI0NSwgMTA5LCAyMjQsIDE3MiwgMjQ1LCAxMTgsIDIyNCwgMTcyLCAyNDUsIDEwOSwgMjE5LCAKLSAgICAyMDYsIDI0NSwgMTE4LCAyMTksIDIwNiwgMjE3LCA5NSwgMjE5LCAyMDYsIDI0MywgMjM1LCAyMTksIDIwNiwgMjIwLCA1MSwgCi0gICAgMjE5LCAyMDYsIDI0NCwgODEsIDIxOSwgMjA2LCAyMjUsIDI3LCAyMTksIDIwNiwgMjE3LCAxMjMsIDIxOSwgMjA2LCAyNDIsIAotICAgIDE3LCAyMTksIDIwNiwgMjEyLCA4MCwgMjEzLCAyMzAsIDIxOSwgMjA2LCAyMTIsIDgwLCAyMTMsIDIzMCwgMjI4LCAxNzgsIAotICAgIDIxMiwgODAsIDIxMywgMjMwLCAyMzUsIDY2LCAyMzMsIDYyLCA3NywgMjIzLCAxNDAsIDc3LCAyNDAsIDE2MCwgMjI4LCAKLSAgICAxNzksIDI0MCwgMTYwLCAyNDQsIDgxLCAyNDgsIDEwMSwgMjQ1LCAxMDksIDI0OCwgMTAxLCAyNDUsIDExOCwgMjQ4LCAxMDEsIAotICAgIDE5OSwgMTM0LCA1MSwgNzEsIDIzMiwgMjQyLCA1MSwgMTE1LCAyMzIsIDI0MiwgNDIsIDIyMCwgODEsIDIyNCwgMTQzLCA3NywgCi0gICAgNDYsIDIyMCwgODEsIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjMyLCAxNjQsIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjQxLCAKLSAgICAxNDksIDIyNCwgMTQzLCA3NywgNDIsIDUxLCAyMjQsIDE0MywgNzcsIDQ2LCA1MSwgMjI0LCAxNDMsIDc3LCA1MSwgMjMyLCAKLSAgICAxNjQsIDIyNCwgMTQzLCA3NywgNTEsIDI0MSwgMTQ5LCAyMjQsIDE0MywgNzcsIDI0OCwgMTQ5LCA1MSwgMjQ4LCAxNDksIAotICAgIDI1MSwgNDIsIDIxNiwgMTgwLCAyNTEsIDQyLCAxMjIsIDYyLCAyMzMsIDgwLCAxMTcsIDYyLCAyMzMsIDgwLCAxOTksIDI0NSwgCi0gICAgMTIwLCAyNDAsIDE1OCwgMjI1LCAxNDQsIDIzMiwgMjQzLCAyMjEsIDU3LCAyMjYsIDE0MywgMjIxLCA1NywgMjMzLCA2MiwgCi0gICAgMjQ1LCAxMTYsIDIyMywgMTQwLCAyNDUsIDExNiwgMjI1LCAxMjYsIDI0NywgMTQ4LCAyNDMsIDI0NCwgMjMzLCA2MiwgMjI2LCAKLSAgICAyNDEsIDIyMywgMTQwLCAyMjYsIDI0MSwgMjMwLCAxNCwgMjI4LCAxODQsIDIxOSwgMjA2LCAyMjYsIDU4LCAyMzEsIDYsIAotICAgIDUyLCAyMjYsIDU4LCAyMTcsIDIwMSwgMjE3LCAxMDEsIDUyLCAyMjUsIDcxLCA1MSwgMjI1LCA3MSwgMjE2LCAxNjksIDIyNSwgCi0gICAgNzEsIDIyMywgMjAyLCAyMjUsIDcxLCAyMjMsIDIwMiwgNTEsIDIyNSwgNzEsIDIyMywgMjAyLCAyMTYsIDE2OSwgMjI1LCAKLSAgICA3MSwgMjUwLCAxNzAsIDIyMCwgODEsIDIzMywgNjYsIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjIzLCAxNDQsIAotICAgIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgMjI0LCAwLCA3NywgNTEsIDI0NCwgMjU0LCA3NywgMjM1LCAxOTgsIDIyNiwgMjQzLCAKLSAgICAyMTUsIDE1MCwgMTM3LCAyMTcsIDY1LCAyNTAsIDE3MSwgMjM1LCAyMTMsIDIyNSwgMTQ0LCAyNTMsIDEzMCwgMjQwLCAxNjEsIAotICAgIDI1MSwgNDIsIDI0MywgMjI4LCAyMjAsIDIzLCA0MiwgNDEsIDI1MSwgODUsIDIsIDIyNCwgMTUyLCA0NiwgNDEsIDI1MSwgCi0gICAgODUsIDIsIDIyNCwgMTUyLCA1MSwgMjI0LCAxNTgsIDc3LCAyMjQsIDE1OCwgMjQ0LCAyNTQsIDc3LCAyNDQsIDI1NCwgMjI0LCAKLSAgICAxNTgsIDc3LCAyMTcsIDIzLCA1LCAyNDUsIDMwLCAyMjMsIDIwMiwgMjI1LCAyMDAsIDUyLCA4MywgMTMyLCAyNTEsIDQyLCAKLSAgICA4MywgOTUsIDI1MSwgNDIsIDExNSwgMjUzLCAxMzIsIDIyMywgMjAyLCAyMjEsIDcwLCAyNDksIDE5NCwgMjE1LCAxMzQsIAotICAgIDExNywgMjUzLCAxMzEsIDI1NCwgNjcsIDIxNCwgMTY1LCAyNDksIDE1NiwgMjMwLCAyNTEsIDUyLCAyMTgsIDE3OSwgMjQ4LCAKLSAgICAxMDEsIDIzNSwgMTkxLCAyMTUsIDE1MCwgMjQ0LCAyMSwgMjI1LCAyNywgNzcsIDEzMywgNjIsIDIyNSwgMjYsIDIyNCwgCi0gICAgMTY5LCAyMjUsIDcxLCAyNDMsIDIzNywgNjIsIDIyNSwgMjYsIDI0NCwgNTAsIDYyLCAyMjUsIDI2LCAxMTcsIDYyLCAyMjUsIAotICAgIDI2LCAyNDMsIDIzNywgNjIsIDc3LCAyNDYsIDcyLCAyNDksIDcwLCAyMTYsIDE3OSwgNzEsIDI0MywgMjM3LCAyNDcsIDcyLCAKLSAgICAyMzEsIDE0NywgMTQsIDIxOSwgMjA2LCAyMTMsIDE5NiwgMjM1LCA2NiwgMjQzLCAxOTgsIDI1MywgMjIyLCAyMzUsIDE4OSwgCi0gICAgMjE3LCAzOCwgMjM1LCAxODksIDIyMSwgNTcsIDIzNSwgMTg5LCAyMjUsIDE1NiwgMjM1LCAyMjUsIDIxOCwgMTI3LCAyMTgsIAotICAgIDE5NiwgMjU0LCAxNjYsIDIxOCwgMTI3LCAyMTgsIDE5NiwgMjM1LCAyMjUsIDEyLCAyNDMsIDI0NSwgMjIxLCAzLCAyNTQsIAotICAgIDE2NiwgMTIsIDI0MywgMjQ1LCAyMjEsIDMsIDIzMCwgMTAsIDIxLCAyMjEsIDQsIDIyOCwgMTgwLCAyMSwgMjIxLCA0LCAKLSAgICAyMTgsIDIyMywgMjEyLCA3OSwgMjE4LCAyMjMsIDcsIDMsIDEsIDcyLCAyMTgsIDIyMywgMTYzLCAyMTgsIDIyMywgMTgwLCAKLSAgICAyMTgsIDIyMywgMTg5LCAyMTgsIDIyMywgMTk4LCAyMTgsIDIyMywgMTk1LCAyMTgsIDIyMywgMjAwLCAyMTgsIDIyMywgOTQsIAotICAgIDUyLCAyMTgsIDIyMywgMjMwLCAyNTAsIDIxOCwgMjIzLCAyNDUsIDYxLCA1MiwgMjE4LCAyMjMsIDQyLCAyMjYsIDEzMSwgCi0gICAgMjE4LCAyMjMsIDQ2LCAyMjYsIDEzMSwgMjE4LCAyMjMsIDcsIDMsIDEsIDIwNCwgMjE5LCAxMCwgMjEyLCA3OSwgMjE5LCAKLSAgICAxMCwgMTE2LCAyMTksIDEwLCAxMDksIDIxOSwgMTAsIDE2NiwgMjE5LCAxMCwgMTYzLCAyMTksIDEwLCAxODAsIDIxOSwgMTAsIAotICAgIDE4OSwgMjE5LCAxMCwgMTk4LCAyMTksIDEwLCAxOTUsIDIxOSwgMTAsIDIwMCwgMjE5LCAxMCwgOTQsIDUyLCAyMTksIDEwLCAKLSAgICAyMzAsIDI1MCwgMjE5LCAxMCwgMjQ1LCA2MSwgNTIsIDIxOSwgMTAsIDQyLCAyMjYsIDEzMSwgMjE5LCAxMCwgNDYsIDIyNiwgCi0gICAgMTMxLCA3LCAyMTksIDEwLCAzLCAxLCA2MSwgNywgMjE5LCAxMCwgMywgMSwgNzQsIDcsIDIxOSwgMTAsIDMsIDEsIDc1LCA3LCAKLSAgICAyMTksIDEwLCAzLCAxLCAyMTMsIDE2NiwgNywgMjE5LCAxMCwgMywgMSwgMjIyLCAxMTMsIDcsIDIxOSwgMTAsIDMsIDEsIAotICAgIDI0MiwgNDEsIDcsIDIxOSwgMTAsIDMsIDEsIDIzNSwgMjcsIDcsIDIxOSwgMTAsIDMsIDEsIDE1MCwgNywgMjE5LCAxMCwgMywgCi0gICAgMSwgMTgzLCA3LCAyMTksIDEwLCAzLCAxLCAyMDQsIDcsIDIxOSwgMTAsIDMsIDEsIDIyNiwgMjI5LCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAxOTcsIDcsIDIxOSwgMTAsIDMsIDEsIDIxOCwgOTksIDI0NSwgMTMsIDUyLCAyNDksIDE2NSwgNTIsIDI0OSwgNTcsIAotICAgIDUyLCAyNDMsIDIyMSwgMjQzLCAyMjQsIDUyLCAyMzIsIDIyNywgNTIsIDIzMSwgNywgNTIsIDIzMCwgMjksIDUyLCAyMjYsIAotICAgIDM4LCA1MiwgMjIzLCAyOSwgNTIsIDIxMywgMjA0LCA1MiwgMTU2LCAyMjAsIDIyOSwgNTIsIDI0NywgODEsIDUyLCAyNDUsIAotICAgIDE0LCA1MiwgMjM0LCA4NSwgNTIsIDIxNiwgNzYsIDUyLCAyNDYsIDU1LCA1MiwgMjQzLCAxNiwgMjI2LCA2OCwgNTIsIDIyNiwgCi0gICAgMzYsIDUyLCAyNDIsIDg4LCA1MiwgMjUzLCA5OCwgNTIsIDI0MCwgMjE1LCA1MiwgMjUwLCAxMTksIDUyLCAyMzIsIDIyMCwgCi0gICAgMjE2LCAyMTYsIDUyLCAyMTksIDE4OCwgNTIsIDIxNywgMTk4LCA1MiwgMjM1LCAyMzgsIDIyMywgMjksIDUyLCAzNywgNDIsIAotICAgIDI0MSwgMjM4LCA0OSwgMzcsIDQ2LCAyNDEsIDIzOCwgNDksIDM3LCAxODQsIDcxLCAyMzIsIDI0MywgMjI2LCAyNDQsIDM3LCAKLSAgICAyMjAsIDE3NSwgNzEsIDIzMiwgMjQzLCAyMjYsIDI0NCwgMzcsIDI1MywgMjU1LCA3NiwgNDksIDM3LCAyNDksIDE5NSwgNzYsIAotICAgIDQ5LCAzNywgNDIsIDc2LCA0OSwgMzcsIDQ2LCA3NiwgNDksIDM3LCAyMjMsIDEzMSwgMjI2LCAyNDQsIDM3LCAyNDksIDE5NSwgCi0gICAgMjIzLCAxMzEsIDIyNiwgMjQ0LCAzNywgMjUzLCAyNTUsIDIyMywgMTMxLCAyMjYsIDI0NCwgMzcsIDEzMywgMTc2LCA0OSwgCi0gICAgMzcsIDI0MywgMjM3LCAxNzYsIDQ5LCAzNywgMjQ1LCAxMDQsIDI0OSwgMjI4LCAzNywgMjQ1LCAxMDQsIDIxOSwgMTY2LCAKLSAgICAzNywgMjQ1LCAxMDQsIDI0NywgMjAwLCAzNywgMjQ1LCAxMDQsIDI0OSwgMjI5LCAyNTIsIDk3LCAzNywgNDIsIDQ2LCA3NiwgCi0gICAgNDksIDM3LCAyNDUsIDEwNCwgMjIyLCAxMDcsIDM3LCAyNDUsIDEwNCwgMjM0LCAxNDEsIDM3LCAyNDUsIDEwNCwgMjE1LCAKLSAgICAxMjYsIDIyNSwgMTQxLCAyMTYsIDE4MywgMzcsIDIyMywgMjAzLCAyMTksIDIzMiwgMjI2LCAyNDQsIDM3LCA1MSwgNzEsIAotICAgIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMjU0LCA5LCA4NywgMzcsIDIxNiwgMTY5LCAyMTUsIDE1MiwgMzcsIDIxMywgMjMyLCAKLSAgICAyNTEsIDY4LCA0OSwgMzcsIDEzMiwgNzYsIDIyNiwgMjQ0LCAzNywgMTg0LCA1MSwgMjE5LCAyMzIsIDIyNiwgMjQ0LCAzNywgCi0gICAgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDM3LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDM3LCAKLSAgICA0MiwgNzYsIDU1LCAzNywgNDYsIDc2LCA1NSwgMzcsIDI1MywgMTMzLCA0OSwgMjU0LCAxNzEsIDIyNywgOTcsIDI1NCwgCi0gICAgMTU2LCAyMTEsIDIxMSwgMjE3LCAxNDksIDIxOSwgMTksIDE4NywgNiwgMjUwLCAyNTIsIDI0OCwgMjIsIDI1MCwgMTEyLCAKLSAgICAyNTAsIDEwOSwgMjMyLCAyNDMsIDg3LCAyNTAsIDE3MiwgMjI3LCA5NywgMjUwLCAyMTIsIDIxNSwgMTU5LCAyNDUsIDE1LCAKLSAgICAyNDksIDEzMCwgMjIyLCAxMDQsIDI0OCwgMjIsIDI0NCwgMTQ3LCAxMTMsIDMsIDI0MywgMTc3LCAxMTMsIDYsIDI0MiwgNDEsIAotICAgIDI1MSwgMTQyLCA2LCAyNDIsIDQxLCAxODcsIDYsIDI0MiwgNDEsIDIyNSwgMTY5LCAyNDksIDEzMCwgMjI1LCAxNjksIDI0OSwgCi0gICAgMTMxLCAxMTAsIDExNywgMjI1LCAyNDAsIDExMywgNiwgNzIsIDI1MSwgMTQyLCA2LCA3MiwgMTEzLCA2LCAxNTAsIDExMywgCi0gICAgMywgMTUwLCAyMzMsIDE3MSwgNTQsIDI1MiwgNjAsIDg3LCAxODcsIDYsIDIwNCwgMjI4LCA1MiwgNTIsIDIxOSwgMjE4LCAKLSAgICAyMjQsIDEyLCAyNDksIDEwMSwgMTEzLCA2LCAyMjYsIDIyOSwgMTg3LCA2LCAyMjYsIDIyOSwgMTg3LCA2LCAyMjQsIDI0MCwgCi0gICAgMTEzLCA2LCAxNDksIDI1MSwgMTQyLCA2LCAxNDksIDE4NywgNiwgMTQ5LCAyMjUsIDc2LCAyMTgsIDIxLCAyMjMsIDIxNCwgCi0gICAgMjIxLCA1MywgNzcsIDIxNywgMjEwLCA1MiwgMjE2LCAyMTAsIDE1MiwgNTIsIDIxNCwgMjE3LCAxODcsIDYsIDIxMiwgMTUyLCAKLSAgICAyMjcsIDEsIDUyLCAyMjcsIDg3LCA1MiwgMjM1LCAxOTEsIDIyNywgODcsIDUyLCAyNTEsIDE0MiwgNiwgMjEyLCAxNTIsIAotICAgIDIxNiwgNTgsIDI1LCAzLCAxLCAyMzUsIDE4MywgMjM0LCAxNzksIDUyLCAyNTQsIDE2LCA1MiwgMTEzLCA2LCAyNTMsIDc0LCAKLSAgICAyNTEsIDE0MiwgNiwgMjUwLCAyNTIsIDI0NSwgMzMsIDg3LCAxMTMsIDMsIDc0LCAxMTMsIDYsIDc0LCAxMTMsIDYsIDI0NCwgCi0gICAgMjMwLCAyMTYsIDU4LCA2LCAyNDQsIDIzMCwgMTEzLCA2LCAxODMsIDExMywgMywgNzUsIDEwNiwgODcsIDI1MSwgMjA2LCAKLSAgICA4NywgMjQyLCAxNzgsIDg3LCAyNDgsIDEzNSwgODcsIDIzNSwgMjI5LCAyMTksIDIxNiwgMjIzLCA4OSwgNiwgMjI0LCAyNDAsIAotICAgIDI0NCwgMTUwLCA1MiwgMTg3LCAzLCAyMjUsIDI0MCwgMTg3LCAzLCAyNDMsIDgzLCAxODcsIDYsIDI0MywgODMsIDE4NywgNiwgCi0gICAgMjI1LCAyNDAsIDE4NywgMjMwLCA5NywgMjE4LCAyNDEsIDIxNiwgNTgsIDM1LCA2LCAyNDMsIDE3NywgMjE2LCA1OCwgMzUsIAotICAgIDYsIDE1MCwgMjIzLCAyMDIsIDM1LCA2LCAxNTAsIDIxNiwgNTgsIDM1LCA2LCAyMTMsIDEwNSwgMTg3LCAzMiwgNiwgMjQ5LCAKLSAgICAzLCAxODcsIDMyLCAzLCAyNDksIDMsIDE4NywgMzIsIDMsIDc0LCAxODcsIDMyLCAzLCA3MiwgMTg3LCAzMiwgMywgMjM1LCAKLSAgICAxNDIsIDIyNSwgNTQsIDIzMiwgMjQyLCAyMTYsIDU4LCAyNTQsIDM1LCAyMjYsIDU4LCA1MiwgMjU0LCA4OCwgMjE2LCA1OCwgCi0gICAgMywgMjQ0LCAyMzAsIDE2LCAzMSwgMjIyLCAxNjcsIDIxOSwgMjE2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjEsIDM5LCAKLSAgICAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjksIDI1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDE5NCwgMjE0LCAKLSAgICA5NywgMjQzLCAyMjgsIDEyMiwgMjE3LCAxMjEsIDIxNCwgOTcsIDI0MywgMjI4LCAxMTcsIDIxNywgMTE5LCAyMTQsIDk3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyNDQsIDg2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTE3LCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTMzLCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMjQzLCAyMzcsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMjIsIDIyMCwgNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAyNDQsIDUwLCAyMjAsIDQxLCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTIyLCAyNDUsIDE0NSwgMjE0LCA5NywgMjQzLCAyMjgsIDEzMywgMjQ1LCAxNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAKLSAgICAyNDQsIDUwLCAyNDUsIDE0MywgMjE0LCA5NywgMjQzLCAyMjgsIDIyMSwgNDMsIDI0NSwgMTQzLCAyNDMsIDIyOCwgMjI4LCAKLSAgICA1MywgMTE2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTE2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTA5LCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMTY2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTYzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTgwLCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMTg5LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk4LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk1LCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE3LCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDUsIDEyNCwgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDIxNiwgNDEsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIDgzLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTIyLCAyNDAsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgNTAsIDI0MCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTIyLCAyMTcsIDEwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDExNiwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEwOSwgMywgCi0gICAgMjIzLCAxMDAsIDIyOCwgNTQsIDE2NiwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE2MywgMywgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDE4MCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE4OSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE5OCwgMywgMjIzLCAxMDAsIAotICAgIDIyOCwgNTQsIDE5NSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNywgMjAwLCAKLSAgICAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ1LCAxMjQsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTYsIDQxLCAzLCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjQ0LCA4MywgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjQwLCAyMDAsIDMsIDIyMywgMTAwLCAKLSAgICAyMjgsIDU0LCAyNDQsIDUwLCAyNDAsIDIwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjE3LCAxMDAsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAxMjIsIDIxNywgMTAxLCAyNTAsIDI1MywgMjQ5LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCAKLSAgICA1MCwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTcsIDIwMSwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAyMjMsIDIwMiwgMTIyLCAyNDAsIDIwMCwgNywgMywgMSwgMjIzLCAyMDIsIDI1MCwgMjUyLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMjIwLCA1MywgMjMzLCAxMDEsIDE3LCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCA4NCwgMjQ1LCAxODIsIDE3LCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjQ0LCA4NCwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAxMjIsIDI0MCwgMjAxLCAyMTcsIAotICAgIDEwMCwgMjE0LCA5NywgMjQzLCAyMjgsIDIxMiwgODAsIDIxNywgMTE5LCAxMzIsIDY4LCAyMTUsIDEyNCwgNjgsIDk1LCA2OCwgCi0gICAgMjQ2LCA1OCwgNjgsIDQyLCA0NiwgNjgsIDExNCwgMTE5LCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA2OCwgMjI4LCAxNjcsIAotICAgIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2OCwgMTMyLCA3NiwgMiwgCi0gICAgOTAsIDk1LCA3NiwgMiwgOTAsIDEzMiwgMjE0LCAyMCwgNjgsIDk1LCAyMTQsIDIwLCA2OCwgMTMyLCAxMTcsIDI0MSwgMjE4LCAKLSAgICA2OCwgMjE1LCAxMjQsIDExNywgMjQxLCAyMTgsIDY4LCA5NSwgMTE3LCAyNDEsIDIxOCwgNjgsIDI0NiwgNTgsIDExNywgCi0gICAgMjQxLCAyMTgsIDY4LCAxMzIsIDc2LCAyLCAyMTgsIDI3LCA5NSwgNzYsIDIsIDIxOCwgMjcsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDIxNSwgMTI0LCA3NiwgMjQzLCAyMTMsIDEzNCwgOTUsIDc2LCAyNDMsIDIxMywgMTM0LCAyNDYsIDU4LCA3NiwgCi0gICAgMjQzLCAyMTMsIDEzNCwgMTE0LCAxMTksIDc2LCAyLCAyNTIsIDQ3LCAxMzIsIDc2LCAyLCAxMDEsIDk1LCA3NiwgMiwgMTAxLCAKLSAgICAxMzIsIDc2LCAyLCAyMzIsIDE3NywgOTUsIDc2LCAyLCAyMzIsIDE3NywgNDIsIDQ2LCAyMTQsIDIwLCA2OCwgNDIsIDQ2LCAKLSAgICA3NiwgMiwgOTAsIDI0NiwgNTgsIDIxMiwgMjgsIDY4LCAyMTUsIDEyNCwgNzYsIDIsIDIxNywgMzAsIDIzMywgNjEsIDIxNSwgCi0gICAgMTI0LCA3NiwgMiwgMjE3LCAzMCwgMjIzLCAxMzgsIDI0NiwgNTgsIDc2LCAyLCAyMTcsIDMwLCAyMzMsIDYxLCAyNDYsIDU4LCAKLSAgICA3NiwgMiwgMjE3LCAzMCwgMjIzLCAxMzgsIDk1LCA3NiwgMiwgMjQ5LCAxMDAsIDI0NiwgNTcsIDI0NiwgNTgsIDc2LCAyLCAKLSAgICAyNDksIDEwMCwgMjMzLCA2MSwgMjUzLCAyNTUsIDIxNiwgMjI3LCAyMjEsIDczLCA2OCwgMjQ5LCAxOTUsIDIxNiwgMjI3LCAKLSAgICAyMjEsIDczLCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjExLCAyMTEsIDE4NCwgMTM0LCAxMzIsIDc2LCAyMTEsIAotICAgIDIxMSwgMjUyLCA2MCwgMTEwLCA5NSwgNzYsIDIxMSwgMjExLCAxMzQsIDI1MywgMjU1LCAyMjcsIDQwLCAyNDksIDIyOSwgCi0gICAgNjgsIDI0OSwgMTk1LCAyMjcsIDQwLCAyNDksIDIyOSwgNjgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMjMsIAotICAgIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTM4LCAKLSAgICAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjMzLCA2MSwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTIzLCA5NSwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxMzgsIDI0NiwgNTgsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDIzMywgNjEsIDk1LCA3NiwgMTEwLCAxMzIsIDY4LCAyMTUsIDEyNCwgNzYsIDEzMiwgNjUsIAotICAgIDI0NiwgNTgsIDY4LCAxMzIsIDc2LCAxMTAsIDk1LCA2OCwgMTMyLCAyMjYsIDE5NywgMjUzLCAxNjIsIDIxNSwgMTI0LCAKLSAgICAyMjYsIDE5NywgMjUzLCAxNjIsIDk1LCAyMjYsIDE5NywgMjUzLCAxNjIsIDI0NiwgNTgsIDIyNiwgMTk3LCAyNTMsIDE2MiwgCi0gICAgMTMyLCAyNDEsIDIzOCwgMTEwLCA5NSwgMjQxLCAyMzcsIDk1LCAyNDEsIDIzOCwgMTEwLCAxMzIsIDI0MSwgMjM3LCAxMzIsIAotICAgIDUxLCA3NiwgMiwgOTAsIDQyLCA0NiwgNTEsIDc2LCAyLCA5MCwgOTUsIDUxLCA3NiwgMiwgOTAsIDEzMiwgNTEsIDY4LCAKLSAgICAyMTUsIDEyNCwgNTEsIDY4LCA5NSwgNTEsIDY4LCAyNDYsIDU4LCA1MSwgNjgsIDQyLCA0NiwgNTEsIDY4LCAxMTQsIDExOSwgCi0gICAgNTEsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDUxLCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA1MSwgNjgsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNTEsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDUxLCA2OCwgMTMyLCAyMTYsIDE2OSwgNjgsIDk1LCAyMTYsIAotICAgIDE2OSwgNjgsIDEzMiwgMjE5LCAxNjIsIDY4LCA5NSwgMjE5LCAxNjIsIDY4LCAyMTUsIDEyNCwgNzYsIDIsIDUxLCA5MCwgCi0gICAgMjQ2LCA1OCwgNzYsIDIsIDUxLCA5MCwgMTMyLCAyNDgsIDEwMCwgNjgsIDIxNSwgMTI0LCAyNDgsIDEwMCwgNjgsIDk1LCAKLSAgICAyNDgsIDEwMCwgNjgsIDI0NiwgNTgsIDI0OCwgMTAwLCA2OCwgMTMyLCA3NiwgMjExLCAyMTEsIDEzNCwgOTUsIDc2LCAyMTEsIAotICAgIDIxMSwgMTM0LCAxMzIsIDY3LCA2OCwgMjE1LCAxMjQsIDY3LCA2OCwgOTUsIDY3LCA2OCwgMjQ2LCA1OCwgNjcsIDY4LCAKLSAgICAyMTUsIDEyNCwgNjcsIDc2LCAyNDMsIDIxMywgMTM0LCAyMTUsIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAyMjYsIDg5LCAyMTUsIAotICAgIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAyMjYsIDkwLCAyLCAxOTksIDEzNCwgMjE1LCAxMjQsIDY3LCA3NiwgMjI3LCA2MywgCi0gICAgMjI2LCA5MCwgMiwgNzEsIDEzNCwgMjE1LCAxMjQsIDY3LCA1MSwgNjgsIDIxNSwgMTI0LCA2NywgNTEsIDc2LCAyMjcsIDYzLCAKLSAgICAyMjYsIDg5LCA5NSwgNjcsIDc2LCAyNDMsIDIxMywgMjE0LCA0MCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjExLCAyMTEsIAotICAgIDI0OSwgOTksIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDIxMSwgMjExLCAyNDksIDk5LCAxMTQsIDExOSwgNjcsIDY4LCA0NiwgCi0gICAgNzYsIDIsIDMsIDI0OSwgMjI4LCAyNDYsIDU4LCA3NiwgMTMyLCA2NSwgMjE1LCAxMjQsIDY4LCAxMzMsIDk1LCAyNTMsIAotICAgIDE2MiwgMTMyLCA3NiwgMiwgNzEsIDkwLCA5NSwgNzYsIDIsIDcxLCA5MCwgNDIsIDQ2LCA3NiwgMiwgNzEsIDkwLCAxMzIsIAotICAgIDc2LCAyLCA1MSwgNzEsIDkwLCA5NSwgNzYsIDIsIDUxLCA3MSwgOTAsIDQyLCA0NiwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgCi0gICAgMjI3LCAzOCwgNjgsIDk1LCAyMjcsIDM4LCA2OCwgNDIsIDQ2LCAyMjcsIDM4LCA2OCwgMzEsIDI1NCwgNjMsIDI0OSwgMTUzLCAKLSAgICAyMjYsIDEyNSwgMjQ3LCAxODUsIDIxNywgMTQwLCAyNDQsIDI1MCwgMjE3LCAxNDAsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDQsIAotICAgIDI1MSwgMjQ1LCAxMTAsIDIyMSwgNDgsIDIzNSwgMjQxLCAyMzAsIDM5LCAyNDUsIDEyNywgMjI3LCA5NywgMjI4LCAxNjMsIAotICAgIDI1NCwgMzMsIDI0NSwgMTI3LCAyMjcsIDk3LCAzLCAyNDUsIDEyNywgMjI3LCA5NywgMjQ5LCAxMjUsIDI1MywgMTUzLCAKLSAgICAyMzEsIDEyNiwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjMxLCAxMjYsIDMsIDI0OSwgMTI1LCAKLSAgICAyNTMsIDE1MywgMjMxLCAxMjYsIDI0NSwgMTAxLCA2NSwgMjI1LCA1NiwgMjMwLCA5NywgMjI1LCA2MywgMjMwLCA5NywgCi0gICAgMjQ5LCAxMDQsIDIzMCwgOTcsIDIxOCwgMjQxLCAyMzAsIDI1MSwgNTIsIDIzMCwgMjQ5LCA1MiwgNjIsIDIyNSwgMTU2LCAKLSAgICAyNDcsIDEyMSwgMjIwLCAyMywgMjIxLCA0OSwgMjMwLCAyNTAsIDI1MywgMTMzLCAyMjcsIDMzLCAyMjMsIDEzMSwgMjI3LCAKLSAgICAzMywgMjUxLCA0MywgMjI3LCAzMywgNDEsIDIyMywgOTUsIDI0OSwgNTAsIDIyMywgOTUsIDI0MywgMjMwLCAyMjMsIDk1LCAKLSAgICAyMjUsIDUyLCAxMDgsIDIzNSwgMjMxLCA0NiwgMjU0LCAxOCwgMjU0LCAxOCwgMjMxLCAxNTMsIDI1NCwgMTgsIDIxOSwgCi0gICAgMTg3LCAyNTQsIDE4LCAyNDcsIDEyMywgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0NywgMTI2LCAyMjYsIDEzNiwgMTA4LCAyMjgsIAotICAgIDE2MywgMjI2LCAxMzYsIDEwOCwgMjMyLCAxOTksIDI1NCwgMjcsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMzUsIDE5NSwgMjE1LCAKLSAgICAxNDYsIDIzNSwgMjA4LCA1MSwgMjM1LCAyMDgsIDIxNiwgMTY5LCAyMzUsIDIwOCwgMjQ5LCAxMjEsIDIzNSwgMjA4LCAyMTgsIAotICAgIDIxMywgMjM1LCAyMDgsIDIxNCwgMTEwLCAyMzUsIDIwOCwgMjQ5LCAxOTUsIDIzNSwgMjA4LCAyNDksIDE5NSwgMjQ5LCAKLSAgICAxMjEsIDIzNSwgMjA4LCAyNTMsIDI1NSwgMjQ5LCAxMjEsIDIzNSwgMjA4LCAyMTcsIDEzOSwgMjUxLCAyNDMsIDIyNCwgMjksIAotICAgIDIyNSwgNTMsIDYyLCAyMzAsIDI1MCwgMjQ1LCAwLCAyNDMsIDIyLCAyMjUsIDUzLCAyNDEsIDQzLCAyMTcsIDQzLCAyMjcsIAotICAgIDMzLCAyMjMsIDIwMiwgMjE3LCA0MiwgMjM1LCAxOTEsIDIzMywgODksIDE5NywgMjIwLCA4MywgMjE0LCAxOSwgMjEzLCAKLSAgICAxODgsIDIyNSwgNjMsIDIyOCwgMTYzLCAyMTcsIDQyLCAyMzAsIDI1MSwgMjE3LCA0MiwgMjUzLCAxMjYsIDEyMywgMTA4LCAKLSAgICAyMjgsIDE2MywgMjUzLCAxMjYsIDEyMywgMTA4LCAyNTMsIDIxOCwgMTIzLCAxMDgsIDI1MywgMjE4LCAyNTEsIDE3LCAyMjgsIAotICAgIDE2MywgMjU0LCAxNjUsIDEyMywgMTA4LCAyMjksIDE4MSwgMjUzLCAyMTgsIDIyOCwgMTcwLCAyNTQsIDE2NSwgMTIzLCAKLSAgICAxMDgsIDI1NCwgNTcsIDEyMywgMTA4LCAyMjgsIDE2MywgMjU0LCA1NywgMTIzLCAxMDgsIDI1NCwgNTcsIDEyMywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE2LCAxNjksIDIxNywgNDIsIDI1NCwgNjQsIDEyMywgMTA4LCAyNDUsIDU3LCAxMDgsIDI0MywgMjEsIAotICAgIDI0NSwgNTcsIDEwOCwgMjQ3LCAxODYsIDI1MSwgMjAwLCAyNTMsIDIyMCwgMjE3LCAxNDksIDIzMiwgMjUwLCAyNDMsIDIxLCAKLSAgICAxMjMsIDEwOCwgMjUzLCAyMTgsIDEyMywgMjExLCAyMTEsIDE2NywgMjE3LCAxNDksIDIzNiwgMTAsIDIyNywgOTcsIDIzNiwgCi0gICAgMTAsIDY1LCAxNjcsIDI1MywgMjE4LCAxMjMsIDEwOCwgMjQ5LCAxNjUsIDI0NSwgNjAsIDI0NSwgNjEsIDI0OSwgMTY0LCAKLSAgICAyMjMsIDEzMSwgMjM1LCAyNTIsIDEyMywgMTA4LCAyMjMsIDEzMSwgMTIzLCAxMDgsIDI0OSwgOTMsIDEwOCwgMjQ1LCAzMiwgCi0gICAgMjQ1LCA1OSwgMTA4LCAyMTksIDk2LCAyNDUsIDYwLCAyNDgsIDYsIDEyMywgMTA4LCAxMjMsIDIxMSwgMjExLCAyNTEsIDcsIAotICAgIDI0OCwgMjMsIDIzMSwgMTUzLCAyNTEsIDYsIDIyNCwgMTU2LCAxMjMsIDEwOCwgMjI4LCAxNjMsIDEyMywgMTA4LCAyNDAsIAotICAgIDk3LCAxMDgsIDIyOCwgMTYzLCAyNDAsIDk3LCAxMDgsIDIxOSwgNDksIDI0NSwgNTcsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQyLCAxMDcsIDE2NywgMTIzLCAxMDgsIDIzMywgMzksIDExMCwgMTIzLCAxMDgsIDI0MiwgMTA3LCAxMTAsIAotICAgIDEyMywgMTA4LCAyMzMsIDM5LCAyNTEsIDE3LCAyMjgsIDE2MywgMTIzLCAxMDgsIDI0MiwgMTA3LCAyNTEsIDE3LCAyMjgsIAotICAgIDE2MywgMTIzLCAxMDgsIDIzMCwgMTY3LCAyMzMsIDM4LCAyMzAsIDE2NywgMjQyLCAxMDYsIDI1MSwgMjAwLCAyMjgsIDE2MywgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjgsIDE2MywgMjMzLCAzOCwgMjI4LCAxNjMsIDI0MiwgMTA2LCAyMjksIDE4MSwgMjMzLCAzOSwgCi0gICAgMjI4LCAxNzAsIDEyMywgMTA4LCAyMjksIDE4MSwgMjQyLCAxMDcsIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAyNDUsIDU3LCAxMDgsIDI0MiwgMTA3LCAxNjcsIDI0NSwgNTcsIDEwOCwgMjI5LCAxODEsIDIzMywgMzksIDIyOCwgMTcwLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyOSwgMTgxLCAyNDIsIDEwNywgMjI4LCAxNzAsIDI0NSwgNTcsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAyNDIsIDEwNiwgMjQyLCAxMDcsIDE2NywgMjMzLCAzOCwgMjI5LCAxODEsIDIzMywgMzksIDIyOCwgMTcwLCAyNDIsIDEwNiwgCi0gICAgMjI5LCAxODEsIDI0MiwgMTA3LCAyMjgsIDE3MCwgMjMzLCAzOCwgMjI1LCA4MiwgMjE5LCAwLCAyMjUsIDgzLCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTksIDEsIDE2NywgMTIzLCAxMDgsIDIyNSwgODMsIDE2NywgMjQ1LCA1NywgMTA4LCAyMTksIDEsIDE2NywgCi0gICAgMjQ1LCA1NywgMTA4LCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA4NSwgMjQ3LCA5MiwgMjI4LCAxNjMsIDIxOSwgMiwgMjE5LCAKLSAgICA5LCAyMjcsIDk3LCAyMTgsIDIyMiwgMjI3LCA5NywgMjI4LCAxNjMsIDExOCwgMjE5LCA5LCAyMjcsIDk3LCAyMjgsIDE2MywgCi0gICAgMTE4LCAyMTgsIDIyMiwgMjI3LCA5NywgMjE5LCA5LCA2NSwgMTY3LCAxMjMsIDEwOCwgMjE4LCAyMjIsIDY1LCAxNjcsIAotICAgIDEyMywgMTA4LCAyMjksIDE4MSwgMTE4LCAyMTksIDksIDY1LCAyMjgsIDE3MCwgMTIzLCAxMDgsIDIyOSwgMTgxLCAxMTgsIAotICAgIDIxOCwgMjIyLCA2NSwgMjI4LCAxNzAsIDEyMywgMTA4LCAyMTksIDksIDY1LCAyLCAyMjgsIDE2MywgMTIzLCAxMDgsIDIxOCwgCi0gICAgMjIyLCA2NSwgMiwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMzAsIDE1MSwgMjMwLCAxNTIsIDIzMCwgMTUzLCAyMzAsIDE1MiwgCi0gICAgMjE1LCAxNDYsIDQxLCAyMzYsIDEwLCAyMjcsIDk3LCA0MSwgMjI3LCAxNywgMjI3LCA5NywgNDEsIDIzNiwgMTAsIDY1LCAKLSAgICAxNjcsIDEyMywgMTA4LCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMTIzLCAxMDgsIDQxLCAyNTAsIDE4MywgNDEsIDI0OSwgNDMsIAotICAgIDM2LCAyMjUsIDE1NiwgMzYsIDIzMCwgMjUwLCAzNiwgMjE3LCAzOCwgMzYsIDI0NywgMTIxLCAyMjAsIDIzLCAzNiwgNjIsIAotICAgIDIyNywgMzMsIDM2LCAyMjMsIDEzMSwgMjI3LCAzMywgMzYsIDI1MywgMTMzLCAyMjcsIDMzLCAzNiwgMjQ1LCA2MCwgMzYsIAotICAgIDI0OCwgMTAxLCA5MSwgMjI1LCAxNTYsIDkxLCAyMzAsIDI1MCwgOTEsIDIxNywgMzgsIDkxLCA2MiwgMjI3LCAzMywgNDYsIAotICAgIDIxOCwgMzYsIDQyLCAyMTgsIDM2LCAxMTksIDIxOCwgMzYsIDExNCwgMjE4LCAzNiwgMjUzLCAxMzYsIDIzMCwgMjI2LCAKLSAgICAyMTYsIDE0OSwgMjQzLCAyNTAsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgNDYsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgCi0gICAgNTEsIDQ2LCAyMTYsIDU3LCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA0OCwgMjI4LCAxNjMsIDIxNiwgMTQ5LCAyNDcsIDkyLCAKLSAgICAyMjgsIDE2MywgMjQzLCAyNTEsIDIyOSwgMTgzLCA1MSwgNzEsIDI1MiwgNjAsIDUxLCA0NiwgMjE2LCA1NywgMjI1LCA4MywgCi0gICAgMjE1LCAxNTQsIDIyMywgMjQxLCAyMTksIDEsIDIxNSwgMTU0LCAyMjMsIDI0MSwgMjI4LCAxNjgsIDIxOSwgMjIsIDIyNywgCi0gICAgOTcsIDI0OSwgMTI1LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjEsIDIyOCwgMTY4LCAyMTksIDIyLCA2NSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQ5LCAxMjUsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMiwgMTY3LCAxMjMsIDEwOCwgMjI3LCAxNywgCi0gICAgMjI3LCA5NywgMjM2LCAxMCwgMjI3LCA5NywgMjMwLCAxNTcsIDI0MSwgMTg1LCAyNDksIDEzNiwgMjMxLCAyMDAsIDIzNSwgCi0gICAgMjA1LCAyMTMsIDEzMywgMjMwLCAyMiwgMjI4LCAxNjksIDQ2LCAyNTQsIDE5LCAyLCAyNTMsIDE5NSwgNDYsIDIxNiwgMTgzLCAKLSAgICAyMzAsIDk3LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMwLCA5NywgMjMyLCAxOTksIDIyNywgMjQsIDIzMCwgOTcsIDIzNSwgCi0gICAgMTk1LCAyMzAsIDk3LCAyMTUsIDE0NiwgMjQ3LCAyMDEsIDIyNywgMzMsIDYyLCAyMjcsIDMzLCAyMTksIDk2LCAyMjcsIDMzLCAKLSAgICAyNDcsIDEyMSwgMjE3LCAzOCwgMjUxLCA5MCwgNDIsIDIyOCwgMTY4LCAyNDQsIDE0OSwgMjIxLCA2OSwgMjI1LCA2MywgNDYsIAotICAgIDIyOCwgMTY4LCAyNDQsIDE0OSwgMjIxLCA2OSwgMjI1LCA2MywgNDIsIDIyMSwgNjksIDIyNSwgNjMsIDQ2LCAyMjEsIDY5LCAKLSAgICAyMjUsIDYzLCAyMjMsIDIwMiwgMjE3LCA0MywgMjQ1LCA2MCwgMjQ5LCA0MCwgMjMyLCAxOTksIDIyNywgMjQsIDI0OSwgNDAsIAotICAgIDIzMiwgMTk5LCAyNTQsIDI3LCA1MSwgMjE5LCA4LCA1MSwgMjE4LCAyMjEsIDUxLCAyMzUsIDE5NSwgNTEsIDIxNSwgMTQ2LCAKLSAgICAyMjUsIDE3OSwgMTIzLCAyNCwgMjI2LCAxMzYsIDEwOCwgMjMzLCAzOSwgMiwgMjQ3LCA3NCwgMjQyLCAxMDcsIDIsIDI0NywgCi0gICAgNzQsIDIxNCwgMTY0LCAyMzAsIDE2NywgMjMzLCAzOCwgMjE0LCAxNjQsIDIzMCwgMTY3LCAyNDIsIDEwNiwgMjMzLCAzOSwgCi0gICAgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAxMjMsIDIxMSwgMjExLCAxNjcsIAotICAgIDIyNSwgODIsIDEyMywgMjExLCAyMTEsIDE2NywgMjE5LCAwLCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA4NiwgMTY3LCAKLSAgICAyNDUsIDYyLCAyNDcsIDkyLCAyMjgsIDE2MywgMjE5LCAzLCAxNjcsIDI0NSwgNjIsIDIyOCwgMTYzLCA0MSwgMjM2LCAxMCwgCi0gICAgNjUsIDE2NywgMTIzLCAxMDgsIDIyOCwgMTYzLCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMTIzLCAxMDgsIDQxLCAyMzYsIDEwLCAKLSAgICA2NSwgMTY3LCAyMjgsIDE2MywgMTIzLCAxMDgsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAyMjgsIDE2MywgMTIzLCAxMDgsIAotICAgIDIzMywgMzksIDI1MSwgMTcsIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDI0MiwgMTA3LCAyNTEsIDE3LCAyMjgsIDE2MywgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjUsIDgzLCAyNTEsIDE3LCAyMjgsIDE2MywgMjQ1LCA1NywgMTA4LCAyMTksIDEsIDI1MSwgMTcsIAotICAgIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDIyOCwgMTYzLCAyMjgsIDE2OCwgMjE5LCAyMiwgMjI3LCA5NywgMjQ3LCA5MiwgCi0gICAgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjEsIDIyOCwgMTYzLCAyMjgsIDE2OCwgMjE5LCAKLSAgICAyMiwgNjUsIDE2NywgMTIzLCAxMDgsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDksIDEyNywgMjUzLCAxNTMsIDIyOCwgMTY4LCAKLSAgICAyMTksIDIyLCAxNjcsIDI0NSwgNjIsIDcxLCAyNDUsIDEyMCwgMjMxLCAzNSwgMTk5LCAyNDUsIDEyMCwgMTE0LCA0NiwgCi0gICAgMjQ3LCAyMDcsIDI0NSwgMTIwLCAxMTksIDQ2LCAyNDcsIDIwNywgMjQ1LCAxMjAsIDI0NSwgMTI3LCA2NSwgMiwgMTg0LCAKLSAgICAxOTksIDkwLCAyNDUsIDEyNywgNjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAKLSAgICAzLCAyNDUsIDEyNywgNjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAyNDUsIAotICAgIDEyNywgNjUsIDIsIDYyLCA0OSwgMjQ1LCAxMjcsIDY1LCAyLCAyMjYsIDI0NywgMywgMjQ1LCAxMjcsIDY1LCAyLCAyMjYsIAotICAgIDI0NywgMjQ1LCAxMjcsIDY1LCAyLCAyMTUsIDE1MywgMjQ1LCAxMjcsIDY1LCAyLCAxMTcsIDE5OSwgMjE5LCAzMiwgMjQ5LCAKLSAgICAxMjUsIDIsIDE4NCwgMTk5LCA5MCwgMjQ5LCAxMjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAKLSAgICAxOTksIDkwLCAzLCAyNDksIDEyNSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIAotICAgIDI0OSwgMTI1LCAyLCAyMjYsIDI0NywgMywgMjQ5LCAxMjUsIDIsIDIyNiwgMjQ3LCAyMTIsIDE1MywgMTc0LCAyNTIsIDkxLCAKLSAgICAyMzEsIDEyNSwgMjQ3LCAyMDIsIDUyLCAyNDUsIDEyOSwgNjgsIDI0MCwgMjIxLCAxMTQsIDI1MywgMTY0LCAxMTksIDI1MywgCi0gICAgMTY0LCAyMjUsIDU5LCAyMjYsIDQxLCAyMTQsIDE2LCAyMzIsIDI0MiwgNDIsIDI1MCwgMTE1LCA0NiwgMjUwLCAxMTUsIDQyLCAKLSAgICAyNDQsIDI2LCA0NiwgMjQ0LCAyNiwgMjUxLCAxMDEsIDQ2LCAyNDksIDcyLCAyNTEsIDEwMSwgNDIsIDI0OSwgNzIsIDIxNiwgCi0gICAgMjI3LCA0NiwgMjQ5LCA3MiwgMjE2LCAyMjcsIDQyLCAyNDksIDcyLCAyMjMsIDIwMiwgMjI4LCAxNjMsIDUyLCA0MSwgMjMyLCAKLSAgICAxNTksIDI1MywgMTk1LCAyMjIsIDgzLCAyMjIsIDkwLCAyMTcsIDIxMCwgMjI0LCAxMywgMjI1LCAxMjEsIDIzNSwgMjM1LCAKLSAgICAyMTQsIDE0NSwgMjE5LCAxNjYsIDIyNSwgMTczLCA2NSwgMjM1LCAyMDQsIDUyLCAyMTYsIDU4LCAyMjgsIDE2MywgNTIsIAotICAgIDIxNCwgMjYsIDI0MCwgMjIzLCAyMTYsIDIyNywgNDIsIDI0OSwgOTksIDIxNiwgMjI3LCA0NiwgMjQ5LCA5OSwgMjUxLCAKLSAgICAxMDEsIDQyLCAyNDksIDk5LCAyNTEsIDEwMSwgNDYsIDI0OSwgOTksIDIxNiwgMjI3LCAxNTEsIDIzNSwgMjA4LCAyNTEsIAotICAgIDEwMSwgMTUxLCAyMzUsIDIwOCwgMjQzLCAyMTAsIDIyMCwgMywgMTE0LCAyNTMsIDE2NSwgMjUxLCAyMDEsIDExNywgMTk5LCAKLSAgICAyNTIsIDQ5LCAyMjcsIDI2LCAyMzQsIDE0NCwgMjQ1LCA1MywgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgMjEzLCAKLSAgICAxNjcsIDIzNSwgMjUyLCAxMTgsIDIyNCwgMTAsIDI1MSwgODksIDIzNCwgMTQzLCAyMzMsIDY2LCAyNTQsIDE5LCAxMjUsIAotICAgIDIyMywgMTQ0LCAyNTQsIDE5LCAxMjUsIDI0NSwgNTMsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjMzLCA3MCwgMjUxLCAyMTIsIAotICAgIDIyMywgMTMwLCAyNDksIDEzLCAyNTQsIDY0LCAyNTMsIDE3MiwgMjE4LCAxMjYsIDIxNiwgMjE3LCAyMjMsIDM0LCAyNDcsIAotICAgIDE2NywgMjI3LCAxOCwgMjQ5LCAxMzgsIDIxOCwgMywgMjIwLCAxNCwgMjQ5LCA5MCwgMjQ5LCA4OSwgMTk0LCAxOTYsIDE2LCAKLSAgICAyNDAsIDE0MywgMTk0LCAxOTYsIDE2LCAyMTksIDE2MCwgMjI0LCAxNzIsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NSwgCi0gICAgNjIsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NywgMTI2LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDcsIDIwMCwgCi0gICAgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ5LCAyMjgsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjQ5LCAyMjksIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIzNSwgNTksIDE5NCwgMTk2LCAKLSAgICAxNiwgMjIwLCAyNCwgMTM0LCAxOTQsIDE5NiwgMTYsIDI1MiwgOTgsIDEzNCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMjIwLCAyMywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjUyLCA5NywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjMzLCAKLSAgICAzOCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQyLCAxMDYsIDE5NCwgMTk2LCAxNiwgMTMyLCAyMTQsIDI1MSwgMTk0LCAKLSAgICAxOTYsIDE2LCA5NSwgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDEzMiwgNjgsIDE5NCwgMTk2LCAxNiwgCi0gICAgMjI0LCAxNzMsIDk1LCA2OCwgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjUyLCA5NywgMTk0LCAxOTYsIDE2LCAxMTksIAotICAgIDIxOCwgMzcsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0OCwgNiwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMTE5LCAyNTAsIDE3MCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ4LCA1LCAxOTQsIDE5NiwgMTYsIDExOSwgMjE4LCAKLSAgICAzNywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMTUsIDEyNCwgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIAotICAgIDIxNSwgMTI0LCA2OCwgMTk0LCAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDIyNiwgMjQ3LCAxOTQsIDE5NiwgMTYsIDI0OCwgCi0gICAgMTcsIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDExNCwgMjUwLCAxNzAsIDE5NCwgMTk2LCAxNiwgMjI0LCAKLSAgICAxNzMsIDI0OCwgMTYsIDE5NCwgMTk2LCAxNiwgMTE0LCAyMTgsIDM3LCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDI0NiwgNTgsIAotICAgIDIxNCwgMjUxLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDYsIDU4LCA2OCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE0MiwgCi0gICAgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ4LCA2LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDcsIDIwMSwgMjE1LCAKLSAgICAxNTMsIDE5NCwgMTk2LCAxNiwgMjM1LCA2MCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIxNSwgMTUzLCAKLSAgICAxOTQsIDE5NiwgMTYsIDExNCwgMjIwLCAxODUsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjI0LCAxNDIsIDIyNCwgMTcyLCAKLSAgICAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyMTksIDk1LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDksIDE2NCwgMTk0LCAKLSAgICAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDI0OCwgMTcsIDI0NywgMjA5LCAxOTQsIAotICAgIDE5NiwgMTYsIDIxOSwgOTYsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDIzNSwgNjAsIDI0NywgMjA5LCAxOTQsIDE5NiwgCi0gICAgMTYsIDI0OSwgMjI5LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAxMTksIDIyMCwgMTg1LCAyMTksIDc1LCAxOTQsIDE5NiwgCi0gICAgMTYsIDQyLCAyMjAsIDE4NSwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMTcsIDQzLCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAKLSAgICAyNDIsIDEwNywgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjQ5LCAxNTgsIDEzNCwgMTk0LCAxOTYsIDE2LCAyNDgsIDE3LCAKLSAgICAyMTcsIDQyLCAxOTQsIDE5NiwgMTYsIDIxMiwgMjcsIDE5NCwgMTk2LCAxNiwgMjE5LCA3NiwgMjE3LCA0MiwgMTk0LCAxOTYsIAotICAgIDE2LCAyMjEsIDcxLCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjI4LCAxNjMsIDI0NSwgNjIsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjI0LCAxNzMsIDIyNCwgMTU3LCAxOTQsIDE5NiwgMTYsIDExOSwgMjUwLCAxNzEsIDIxNywgNDIsIDE5NCwgCi0gICAgMTk2LCAxNiwgMTE0LCAyNTAsIDE3MSwgMjE3LCA0MiwgMTk0LCAxOTYsIDE2LCAyMzUsIDE4MywgMTk0LCAxOTYsIDE2LCAKLSAgICAyMjMsIDE5MCwgMTk0LCAxOTYsIDE2LCAyMjcsIDY3LCAxOTQsIDE5NiwgMTYsIDI1NCwgNTMsIDIxNSwgMTUzLCAxOTQsIAotICAgIDE5NiwgMTYsIDI0NSwgNjQsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDIzNSwgMTg0LCAyMTUsIDE1MywgMTk0LCAxOTYsIAotICAgIDE2LCAyMjcsIDY4LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNTQsIDUyLCAyMjgsIDE2MywgMjUwLCA2NiwgNzcsIDQ2LCAKLSAgICAyNTQsIDE5LCAyLCAyNDYsIDU4LCAyMTIsIDI4LCA2OCwgMjIwLCAxNTksIDIyNywgNDAsIDI1MSwgODksIDI1MSwgMjIyLCAKLSAgICA4NywgNzEsIDIzMiwgMjQzLCAyLCAyMzEsIDM3LCAyNDcsIDc0LCAyMzUsIDIxMywgODcsIDI0OSwgMTIyLCAyMTUsIDE1MSwgCi0gICAgODcsIDI0NywgMTQxLCAyMTUsIDE1MSwgODcsIDI0NSwgMTEyLCA4NywgMjQ5LCAxNDksIDg3LCA2NywgNDEsIDIsIDI1MCwgCi0gICAgMTA5LCA3MSwgMjMyLCAyNDIsIDI0NSwgODksIDg3LCAyNTQsIDQ4LCAyMzQsIDE0NSwgODcsIDI0MSwgMTk3LCA4NywgMzYsIAotICAgIDE5OSwgMjUyLCA2MCwgMiwgMjI4LCAxNjEsIDM2LCAyMTYsIDE4NCwgMjQ2LCA2MCwgMjUxLCA2MywgMjQ5LCAyMjksIDIsIAotICAgIDIyOCwgMTY1LCA2OCwgMjE1LCAxNDksIDg3LCAyMzAsIDIwNywgODcsIDI0MCwgMTU2LCA4NywgMjI3LCAzOSwgMjQyLCA0MCwgCi0gICAgODcsIDIyNywgMzksIDIzMywgMTY5LCA4NywgMjI2LCAxMTcsIDg3LCAyMjYsIDExNiwgODcsIDI0NywgMTQ5LCAyNDksIDM4LCAKLSAgICAxNiwgMjQzLCAyNDUsIDEwOSwgMjE5LCAyMzQsIDg3LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTcyLCAyNDgsIDM0LCAyMjEsIAotICAgIDU4LCAyMzQsIDE0NSwgODcsIDIyNSwgNzMsIDIyNiwgMjAwLCAyMjksIDE2NCwgMjI2LCAyMDAsIDIyNSwgNjksIDIyMiwgCi0gICAgMTA4LCA4NywgMjQ5LCAyMTAsIDIyMiwgMTA4LCA4NywgNDIsIDIyNiwgMTMyLCAyMTUsIDEzMSwgMTAxLCA0MiwgMjI2LCAKLSAgICAxMzIsIDI0NCwgMjQ1LCA0MiwgMjI2LCAxMzIsIDIzMiwgMTYzLCAxMDEsIDQ2LCAyMjYsIDEzMiwgMjE1LCAxMzEsIDEwMSwgCi0gICAgNDYsIDIyNiwgMTMyLCAyNDQsIDI0NSwgNDYsIDIyNiwgMTMyLCAyMzIsIDE2MywgMTAxLCA0MiwgNDEsIDI1MSwgODUsIAotICAgIDIxNSwgMTMxLCAyNDksIDk5LCA0MiwgNDEsIDI1MSwgODUsIDI0NCwgMjQ1LCA0MiwgNDEsIDI1MSwgODUsIDIzMiwgMTYzLCAKLSAgICAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIxNSwgMTMxLCAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDI0NCwgMjQ1LCAKLSAgICA0NiwgNDEsIDI1MSwgODUsIDIzMiwgMTYzLCAyNDksIDk5LCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjE1LCAxMzEsIDEwMSwgCi0gICAgNDIsIDI0OSwgNDAsIDI1MSwgODUsIDIzMSwgMzcsIDIyNSwgMjMzLCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjMyLCAxNjMsIAotICAgIDEwMSwgMjQ5LCA0MCwgMjUxLCA4NSwgMjQ0LCAyNDUsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMTUsIDEzMSwgMTAxLCA0NiwgCi0gICAgMjQ5LCA0MCwgMjUxLCA4NSwgMjMxLCAzNywgMjI1LCAyMzMsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMzIsIDE2MywgMTAxLCAKLSAgICAyMzUsIDIwOSwgMjQ0LCAyNDUsIDE5OSwgMjMyLCAyNDMsIDI0NCwgMjQ1LCAyMTUsIDEzMSwgNDIsIDE2NywgMjMyLCAxNjMsIAotICAgIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMjIsIDkxLCAyMTUsIDEzMSwgNDYsIDE2NywgMjMyLCAxNjMsIDQyLCAyNDksIDQwLCAKLSAgICAyNTEsIDg1LCAyMjIsIDkxLCAyMTgsIDI0MiwgMjE2LCAyMjYsIDIxOCwgMjQyLCAyNTEsIDEwMCwgMjE2LCAyMjcsIDQxLCAKLSAgICAxMjUsIDI1MSwgMTAxLCA0MSwgMTI1LCAyNTEsIDEwMSwgNDEsIDI1MSwgODUsIDExMCwgMjE2LCAyMjcsIDQxLCAxMjUsIAotICAgIDM0LCAxNiwgMjUxLCAxMDAsIDQyLCA3MSwgOTIsIDIzMiwgMjQyLCA0NiwgNzEsIDkyLCAyMzIsIDI0MiwgMTk5LCAyMjIsIAotICAgIDEyMywgMjMyLCAyNDEsIDE5OSwgMjIyLCAxMjMsIDIzMiwgMjQwLCAxOTksIDIyMiwgMTIzLCAyMzIsIDIzOSwgMTk5LCAKLSAgICAyMjIsIDEyMywgMjMyLCAyMzgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMjQsIDIxNiwgMjI3LCAyMjMsIDE0OCwgMjQ3LCAKLSAgICAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjUxLCAxMDEsIDIyMywgMTQ4LCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDIsIDI0OSwgCi0gICAgMjI4LCAyNDcsIDI1MywgMTYsIDE3NywgMTE5LCAyNCwgMTk5LCAyLCAyNDksIDIyOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIAotICAgIDExNCwgMjQsIDE5OSwgMiwgMjQ5LCAyMjgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMiwgMjE2LCAxODMsIDI0NywgMjUzLCAKLSAgICAxNiwgMTc3LCAxMTksIDI0LCAxOTksIDIsIDIxNiwgMTgzLCAyNDcsIDI1MywgMTYsIDE3NywgMTE0LCAyNCwgMTk5LCAyLCAKLSAgICAyMTYsIDE4MywgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjE0LCAxOSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExOSwgMjQsIAotICAgIDE5OSwgMiwgMjE0LCAxOSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExNCwgMjQsIDE5OSwgMiwgMjE0LCAxOSwgMjQ3LCAyNTMsIAotICAgIDE2LCAxNzcsIDExOSwgMjQsIDI0MSwgMzEsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTQsIDI0LCAyNDEsIDMxLCAyNDcsIDI1MywgCi0gICAgMTYsIDE3NywgNzEsIDI0LCAyMTYsIDIyNywgMjMzLCA3MCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjUxLCAxMDEsIAotICAgIDIzMywgNzAsIDQxLCAyNDQsIDEsIDIyMywgMjA2LCA4NywgMjQ1LCAxMzksIDg3LCA3MSwgMjMyLCAyNDMsIDI0NCwgMjQ1LCAKLSAgICAyMzEsIDEwMCwgMjUxLCA3NCwgMjMxLCAxMDAsIDE4NCwgMTEwLCAyMjAsIDE3NCwgMjMxLCAxMDAsIDIyMCwgMTc1LCAxMTAsIAotICAgIDIzMiwgMTkwLCAyMzEsIDEwMCwgMTg0LCAxMTAsIDExNywgMjIwLCAxNjEsIDIzMSwgMTAwLCAxMTcsIDIyMCwgMTYyLCAKLSAgICAxMTAsIDIzMiwgMTkwLCAyMzEsIDEwMCwgMTE3LCAyMjAsIDE2MiwgMjM1LCA2NywgMjMxLCAxMDAsIDIxNiwgMTY2LCAyMzEsIAotICAgIDEwMCwgMjE3LCAxNzYsIDIzMSwgMTAwLCAyMjYsIDYzLCAyNDUsIDE4MCwgMjQyLCAxMDAsIDI0MywgMTkxLCAyMTYsIDIyNywgCi0gICAgMjI2LCAxMzEsIDI1MSwgMTAxLCAyMjYsIDEzMSwgMjE2LCAyMjcsIDI0OSwgNDAsIDEyNSwgMjUxLCAxMDEsIDI0OSwgNDAsIAotICAgIDEyNSwgMjE2LCAyMjcsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAyNTEsIDEwMSwgMjE2LCAyMTksIDIyMCwgMjMzLCAKLSAgICAxMjUsIDY3LCAyMTYsIDE5NywgMjUxLCAyMTIsIDIyMywgMTMxLCAyLCAyNDksIDIyOCwgMjE5LCA2MCwgMjQ0LCAzMywgCi0gICAgMjU0LCAxNzcsIDI0OSwgMzcsIDI0NSwgMTI4LCAyMzUsIDE5NSwgMjQ4LCAzNCwgMjQ0LCAyNDcsIDg3LCA4MywgMjIzLCAKLSAgICAxNDQsIDUxLCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDUxLCAyMTYsIDE4MywgODMsIDIxNSwgMTMzLCA1MSwgMjE2LCAxODMsIAotICAgIDgzLCAyNDYsIDU5LCA1MSwgMjE2LCAxODMsIDgzLCAyMjMsIDE0NCwgNTEsIDIxNiwgMTg0LCAyLCA3MSwgMTM0LCA4MywgCi0gICAgMjMzLCA2NiwgNTEsIDIxNiwgMTg0LCAyLCA3MSwgMTM0LCA4MywgMjIzLCAxNDQsIDIxNiwgMTg0LCAyLCA1MSwgNzEsIAotICAgIDEzNCwgMjU0LCA4MSwgMjQ5LCAxOTYsIDIxOSwgNjYsIDIxNywgMzksIDI0OSwgMTk2LCAyNDAsIDIyNCwgMiwgMjQ0LCAxOSwgCi0gICAgMjIyLCAxNTcsIDE2LCAzMSwgMjI4LCA1OCwgMTYsIDMxLCAyMTksIDkxLCA2NSwgMjQxLCAyMTcsIDE2LCAzMSwgMjE5LCAKLSAgICA5MSwgNjUsIDIxNywgMTY1LCAxNiwgMzEsIDI0NSwgMTAxLCA2NSwgMjE3LCAxNjUsIDE2LCAzMSwgMjQ1LCAxMDEsIDY1LCAKLSAgICAyMTYsIDIwMCwgMTYsIDMxLCAyNDUsIDkxLCAxNiwgMzEsIDI1NCwgMTY4LCAxNiwgMzEsIDI1MSwgMjIxLCAxNiwgMzEsIAotICAgIDI1MiwgOTYsIDE2LCAzMSwgMTk5LCAyMTgsIDM4LCAxNiwgMzEsIDIzMiwgMjQzLCAyNDQsIDExNCwgMTYsIDMxLCA3MSwgCi0gICAgMjE4LCAzOCwgMTYsIDMxLCAyNDMsIDI0NSwgMjQ0LCAxMTQsIDE2LCAzMSwgMjUwLCAxNjIsIDIyMywgMjA1LCAxNiwgMzEsIAotICAgIDIyMCwgMjA4LCAyMjYsIDI1NCwgMTYsIDMxLCAyMjAsIDIwOCwgMjM1LCAyNTEsIDE2LCAzMSwgMjQ4LCA5NywgMjMyLCAKLSAgICAyMzMsIDI0NSwgNDIsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAxMTYsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgCi0gICAgMTE3LCAxMDksIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAxNjYsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAKLSAgICAxNjMsIDE2LCAzMSwgMTQ2LCAyNTQsIDE2OCwgMTYsIDMxLCAyMTgsIDEyMywgMjM2LCA1NywgMTYsIDMxLCAyNDUsIDEwMSwgCi0gICAgNjUsIDIxNiwgMjAxLCAyNTEsIDEzNiwgMTYsIDMxLCAyNTAsIDE5MywgMTYsIDMxLCAyNDUsIDEwMSwgNjUsIDIzMSwgMTQ2LCAKLSAgICAxNiwgMzEsIDIxOSwgNiwgMTYsIDMxLCAyNDUsIDQyLCAxNiwgMzEsIDI0NCwgNzYsIDIyMSwgNTcsIDE2LCAzMSwgMjQyLCAKLSAgICA5OSwgMjIxLCA1NywgMTYsIDMxLCAyMjQsIDE0LCAyMjEsIDU3LCAxNiwgMzEsIDIxNSwgMTQ1LCAyMjEsIDU3LCAxNiwgMzEsIAotICAgIDIxOSwgMjA2LCAxNiwgMzEsIDI0OCwgMTQsIDI1MSwgMTM5LCA4NywgMjI3LCA0MCwgMjUxLCA4OSwgMTYsIDMxLCAyMjksIAotICAgIDE2NywgMTYsIDMxLCAyNDgsIDE1LCAyNDMsIDI0NSwgMTA5LCAxNiwgMzEsIDIxOSwgNywgMjQzLCAyNDUsIDEwOSwgMjI3LCAKLSAgICAxMDUsIDEwMSwgMjI3LCAxMDUsIDI1MCwgODcsIDIyNywgMTA1LCAyNDMsIDI0OCwgMjI3LCAxMDUsIDIzNSwgMTkxLCAyNDMsIAotICAgIDI0OCwgMjI3LCAxMDUsIDI1MSwgMjE5LCAyNTEsIDUzLCAyMjcsIDEwNSwgMjUxLCA5NiwgMjE3LCA2NSwgMjI3LCAxMDUsIAotICAgIDI1MSwgODIsIDI1MiwgNjUsIDI0MCwgOTYsIDIyNywgMTA1LCAyNTQsIDM2LCA2NSwgMjUwLCA2NSwgMjI3LCAxMDUsIDI0OCwgCi0gICAgMTAxLCAyMjcsIDEwNSwgMjQ5LCAyOSwgMjU0LCAxNzEsIDIyOCwgNTYsIDIyNywgMTA1LCA1MSwgMjUyLCA5NywgMzYsIDIxLCAKLSAgICAxMTYsIDM2LCAyMSwgMTA5LCAzNiwgMjEsIDE2NiwgMzYsIDIxLCAxNjMsIDM2LCAyMSwgMTgwLCAzNiwgMjEsIDE4OSwgMzYsIAotICAgIDIxLCAxOTgsIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDIwMCwgMzYsIDUwLCAyMTcsIDIwMCwgMzYsIDUwLCAyNDUsIDEyNCwgCi0gICAgMzYsIDUwLCAyMTYsIDQxLCAzNiwgNTAsIDIxNywgMTE3LCAzNiwgNTAsIDI0MywgMjMxLCAzNiwgNTAsIDI0NCwgODcsIDM2LCAKLSAgICA1MCwgMjIwLCA0NywgMzYsIDUwLCAyMjEsIDQwLCAzNiwgNTAsIDI0NSwgMTQ3LCAzNiwgNTAsIDIyOSwgMjgsIDM2LCA1MCwgCi0gICAgMjE2LCAzOCwgODYsIDIxLCAxMTYsIDg2LCAyMSwgMTA5LCA4NiwgMjEsIDE2NiwgODYsIDIxLCAxNjMsIDg2LCAyMSwgMTgwLCAKLSAgICA4NiwgMjEsIDE4OSwgODYsIDIxLCAxOTgsIDg2LCAyMSwgMTk1LCA4NiwgMjEsIDIwMCwgODYsIDUwLCAyMTcsIDIwMCwgODYsIAotICAgIDUwLCAyNDUsIDEyNCwgODYsIDUwLCAyMTYsIDQxLCA4NiwgNTAsIDIxNywgMTE3LCA4NiwgNTAsIDI0MywgMjMxLCA4NiwgCi0gICAgNTAsIDI0NCwgODcsIDg2LCA1MCwgMjIwLCA0NywgODYsIDUwLCAyMjEsIDQwLCA4NiwgNTAsIDI0NSwgMTQ3LCA4NiwgNTAsIAotICAgIDIyOSwgMjgsIDg2LCA1MCwgMjE2LCAzOCwgMjEsIDEyMiwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAxMTcsIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCAyMSwgMTMzLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDI0MywgMjM3LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIAotICAgIDI0NCwgNTAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjIwLCA1MywgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMjEsIDQzLCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDI0NSwgMTUwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIyOSwgMzEsIDI0MywgCi0gICAgMjAwLCAyMTksIDY5LCA1MCwgMjE3LCAyMDEsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjQ1LCAxMjUsIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCA1MCwgMjE2LCA0MiwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMTcsIDExOCwgMjQzLCAyMDAsIDIxOSwgNjksIAotICAgIDUwLCAyNDMsIDIzMiwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDQsIDg4LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIyMCwgCi0gICAgNDgsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjIxLCA0MSwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDUsIDE0OCwgMjQzLCAKLSAgICAyMDAsIDIxOSwgNjksIDUwLCAyMjksIDI5LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIxNiwgMzksIDI0MywgMjAwLCAyMTksIAotICAgIDY5LCA4NiwgNywgMywgMSwgNjEsIDg2LCA3LCAzLCAxLCAyNTMsIDc0LCA4NiwgNywgMywgMSwgMjUwLCAyNTIsIDg2LCA3LCAKLSAgICAzLCAxLCAyNDksIDMsIDg2LCA3LCAzLCAxLCA3NCwgODYsIDcsIDMsIDEsIDI0NCwgMjMwLCA4NiwgNywgMywgMSwgMjQzLCAKLSAgICAxNzcsIDg2LCA3LCAzLCAxLCAyNDIsIDQxLCA4NiwgNywgMywgMSwgNzIsIDg2LCA3LCAzLCAxLCAyMzUsIDE0MiwgODYsIDcsIAotICAgIDMsIDEsIDIzNSwgMjcsIDg2LCA3LCAzLCAxLCAxNTAsIDg2LCA3LCAzLCAxLCAxODMsIDg2LCA3LCAzLCAxLCAyMDQsIDg2LCAKLSAgICA3LCAzLCAxLCA3NSwgODYsIDcsIDMsIDEsIDIyNiwgMjI5LCA4NiwgNywgMywgMSwgMjI0LCAyNDAsIDg2LCA3LCAzLCAxLCAKLSAgICAxNDksIDg2LCA3LCAzLCAxLCAxOTcsIDg2LCA3LCAzLCAxLCAyMTgsIDk5LCA4NiwgNywgMywgMSwgNjksIDg2LCA3LCAzLCAKLSAgICAxLCAyMTUsIDc5LCA4NiwgNywgMywgMSwgMjE0LCA4MiwgODYsIDcsIDMsIDEsIDIxMywgMTY2LCA4NiwgNywgMywgMSwgCi0gICAgMjEzLCAxMDUsIDg2LCA3LCAzLCAxLCAyMTIsIDE1MiwgMzYsIDcsIDYsIDEsIDYxLCAzNiwgNywgNiwgMSwgMjUzLCA3NCwgCi0gICAgMzYsIDcsIDYsIDEsIDI1MCwgMjUyLCAzNiwgNywgNiwgMSwgMjQ5LCAzLCAzNiwgNywgNiwgMSwgNzQsIDM2LCA3LCA2LCAxLCAKLSAgICAyNDQsIDIzMCwgMzYsIDcsIDYsIDEsIDI0MywgMTc3LCAzNiwgNywgNiwgMSwgMjQyLCA0MSwgMzYsIDcsIDYsIDEsIDcyLCAKLSAgICAzNiwgNywgNiwgMSwgMjM1LCAxNDIsIDM2LCA3LCA2LCAxLCAyMzUsIDI3LCAzNiwgNywgNiwgMSwgMTUwLCAzNiwgNywgNiwgCi0gICAgMSwgMTgzLCAzNiwgNywgNiwgMSwgMjA0LCAzNiwgNywgNiwgMSwgNzUsIDM2LCA3LCA2LCAxLCAyMjYsIDIyOSwgMzYsIDcsIAotICAgIDYsIDEsIDIyNCwgMjQwLCAzNiwgNywgNiwgMSwgMTQ5LCAzNiwgNywgNiwgMSwgMTk3LCAzNiwgNywgNiwgMSwgMjE4LCA5OSwgCi0gICAgMzYsIDcsIDYsIDEsIDY5LCAzNiwgNywgNiwgMSwgMjE1LCA3OSwgMzYsIDcsIDYsIDEsIDIxNCwgODIsIDM2LCA3LCA2LCAxLCAKLSAgICAyMTMsIDE2NiwgMzYsIDcsIDYsIDEsIDIxMywgMTA1LCAzNiwgNywgNiwgMSwgMjEyLCAxNTIsIDM2LCA3LCAzLCAxLCA2MSwgCi0gICAgMzYsIDcsIDMsIDEsIDI1MywgNzQsIDM2LCA3LCAzLCAxLCAyNTAsIDI1MiwgMzYsIDcsIDMsIDEsIDI0OSwgMywgMzYsIDcsIAotICAgIDMsIDEsIDc0LCAzNiwgNywgMywgMSwgMjQ0LCAyMzAsIDM2LCA3LCAzLCAxLCAyNDMsIDE3NywgMzYsIDcsIDMsIDEsIDI0MiwgCi0gICAgNDEsIDM2LCA3LCAzLCAxLCA3MiwgMzYsIDcsIDMsIDEsIDIzNSwgMTQyLCAzNiwgNywgMywgMSwgMjM1LCAyNywgMzYsIDcsIAotICAgIDMsIDEsIDE1MCwgMzYsIDcsIDMsIDEsIDE4MywgMzYsIDcsIDMsIDEsIDIwNCwgMzYsIDcsIDMsIDEsIDc1LCAzNiwgNywgMywgCi0gICAgMSwgMjI2LCAyMjksIDM2LCA3LCAzLCAxLCAyMjQsIDI0MCwgMzYsIDcsIDMsIDEsIDE0OSwgMzYsIDcsIDMsIDEsIDE5NywgCi0gICAgMzYsIDcsIDMsIDEsIDIxOCwgOTksIDM2LCA3LCAzLCAxLCA2OSwgMzYsIDcsIDMsIDEsIDIxNSwgNzksIDM2LCA3LCAzLCAxLCAKLSAgICAyMTQsIDgyLCAzNiwgNywgMywgMSwgMjEzLCAxNjYsIDM2LCA3LCAzLCAxLCAyMTMsIDEwNSwgMzYsIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUyLCAzNiwgMjEsIDIxMiwgNzksIDE0NiwgMzYsIDUwLCAyNDUsIDEyNCwgMTQ2LCAzNiwgNTAsIDIxNiwgNDEsIDE0NiwgCi0gICAgMzYsIDUwLCAyMTcsIDExNywgMTQ2LCAzNiwgNTAsIDI0MywgMjMxLCAxNDYsIDM2LCA1MCwgMjQ0LCA4NywgMTQ2LCAzNiwgCi0gICAgNTAsIDIyMCwgNDcsIDE0NiwgMzYsIDUwLCAyMjEsIDQwLCAxNDYsIDM2LCA1MCwgMjQ1LCAxNDcsIDE0NiwgMzYsIDUwLCAKLSAgICAyMjksIDI4LCAxNDYsIDM2LCA1MCwgMjE2LCAzOCwgNTEsIDM2LCAyMSwgMTE2LCA1MSwgMzYsIDIxLCAxMDksIDUxLCAzNiwgCi0gICAgMjEsIDE2NiwgNTEsIDM2LCAyMSwgMTYzLCA1MSwgMzYsIDIxLCAxODAsIDUxLCAzNiwgMjEsIDE4OSwgNTEsIDM2LCAyMSwgCi0gICAgMTk4LCA1MSwgMzYsIDIxLCAxOTUsIDUxLCAzNiwgMjEsIDIwMCwgNTEsIDM2LCA1MCwgMjE3LCAyMDAsIDE0NiwgMzYsIDIxLCAKLSAgICAyMTIsIDc5LCA5MiwgOTYsIDE3NywgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyMTQsIAotICAgIDIxNiwgOTIsIDk2LCAxMDcsIDIxNCwgMjE2LCA5MiwgOTYsIDE3NywgMjE2LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgCi0gICAgOTYsIDEwNywgMjE2LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMjE2LCAxNjksIDI0OCwgMTAyLCAKLSAgICAyMTQsIDIxNiwgOTIsIDk2LCAxMDcsIDIxNiwgMTY5LCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTc3LCAyMjQsIAotICAgIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgCi0gICAgMTc3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgMjI0LCAxNjksIDI0OCwgMTAyLCAyMTQsIAotICAgIDIxNiwgOTIsIDk2LCAxNzcsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDExOSwgMTc3LCAyNCwgNDYsIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDExOSwgMTA3LCAyNCwgNDYsIDIzMywgMiwgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIAotICAgIDE3NywgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxMTksIDE3NywgMjQsIDQyLCAyNDEsIDIwNSwgOTIsIDk2LCAxMTksIAotICAgIDEwNywgMjQsIDQyLCAyMzMsIDIsIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgCi0gICAgMjIzLCAxNDgsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0NiwgCi0gICAgMjMzLCAyLCA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAyMzMsIDcwLCAKLSAgICA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDIsIDIzMywgMiwgOTIsIAotICAgIDk2LCAxMDcsIDExNCwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCA0NiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDQ2LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCA0NiwgMTE0LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQ2LCAxMTksIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjMzLCA3MCwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDIsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTA3LCAyNCwgNDIsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCA0MiwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgNDIsIDExNCwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0MiwgMTE5LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDcxLCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCA0NiwgMTA3LCAyNCwgNDIsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTksIDEwNywgMjQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDQ2LCAxNzcsIDI0LCA0MiwgMTE5LCAyNDEsIDIwNSwgOTIsIDk2LCA0MiwgMTc3LCAyNCwgNDYsIDExOSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE0LCAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgNDYsIDE3NywgMjQsIDQyLCAxMTQsIDI0MSwgMjA1LCA5MiwgOTYsIDQyLCAxNzcsIDI0LCA0NiwgMTE0LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDExNCwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCA3MSwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgNzEsIDIzMywgMiwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDExOSwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCAxMTQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICA0MiwgMTE0LCAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDExNCwgMTA3LCAyNCwgNDIsIDExOSwgCi0gICAgMjMzLCAyLCA5MiwgOTYsIDQyLCAxMTksIDEwNywgMjQsIDQ2LCAxMTQsIDIzMywgMiwgOTIsIDk2LCA0NiwgMTE5LCAxMDcsIAotICAgIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgMTE5LCAxNzcsIDI0LCAxMTQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgCi0gICAgMTE0LCAxNzcsIDI0LCAxMTksIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgNDYsIDE3NywgMjQsIDQyLCA3MSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgNDIsIDE3NywgMjQsIDQ2LCA3MSwgMjQxLCAyMDUsIDkyLCA5NiwgMTA3LCA3MSwgMjQsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTc3LCA1MSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCA1MSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTc3LCA1MSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgNTEsIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIAotICAgIDk2LCA1MSwgMjQxLCAzMSwgOTIsIDk2LCA1MSwgMjE0LCAyMTYsIDkyLCA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgCi0gICAgNjcsIDkyLCA5NiwgMTE5LCA1MSwgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTksIDI0LCAyMjMsIDE0OCwgOTIsIAotICAgIDk2LCAxMTksIDIyMCwgODEsIDI0LCA0MiwgMjQ2LCA2NywgOTIsIDk2LCAxMTksIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCAKLSAgICA5NiwgNTEsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTE0LCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgNjcsIDkyLCA5NiwgCi0gICAgMTE0LCA1MSwgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTQsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxMTQsIAotICAgIDIyMCwgODEsIDI0LCA0MiwgMjQ2LCA2NywgOTIsIDk2LCAxMTQsIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCA5NiwgNTEsIAotICAgIDExNCwgMjQsIDIzMywgNzAsIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCA2NywgOTIsIDk2LCA3MSwgNTEsIAotICAgIDI0LCA0NiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIAotICAgIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDcxLCA1MSwgMjQsIDQyLCAyMjAsIDgwLCA5MiwgOTYsIDUxLCA3MSwgMjQsIDIzMywgCi0gICAgNzAsIDkyLCA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgMTk5LCAyNDYsIDY3LCA5MiwgOTYsIDExOSwgNTEsIDI0LCAxOTksIAotICAgIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTE0LCAyMjAsIDgxLCAyNCwgMTk5LCAKLSAgICAyNDYsIDY3LCA5MiwgOTYsIDExNCwgNTEsIDI0LCAxOTksIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExNCwgMjQsIDI0MSwgMzEsIAotICAgIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCAxOTksIDI0NiwgNjcsIDkyLCA5NiwgNzEsIDUxLCAyNCwgMTk5LCAyMjAsIDgwLCAKLSAgICA5MiwgOTYsIDUxLCA3MSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE5LCAyNCwgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTQsIDI0LCAKLSAgICAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExNCwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIAotICAgIDIxNSwgMTMxLCA0NiwgMjExLCAyMTEsIDIzMiwgMTYzLCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIDIxNSwgCi0gICAgMTMxLCA0MiwgMjExLCAyMTEsIDIzMiwgMTYzLCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDI0NywgMjA3LCAyNDksIDcwLCAKLSAgICA5MiwgOTYsIDE3NywgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDIxNSwgMTM0LCA5MiwgOTYsIDE3NywgMjIzLCAxNDgsIDkyLCAKLSAgICA5NiwgMTc3LCAyNDYsIDYwLCA5MiwgOTYsIDEwNywgMjMzLCA3MCwgOTIsIDk2LCAxMDcsIDIxNSwgMTM0LCA5MiwgOTYsIAotICAgIDEwNywgMjIzLCAxNDgsIDkyLCA5NiwgMTA3LCAyNDYsIDYwLCA5MiwgOTYsIDE3NywgNDIsIDI0LCAxMDcsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMTA3LCAyNDYsIDYwLCA5MiwgOTYsIDEwNywgNDIsIDI0LCAxNzcsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMTc3LCAyNDYsIDYwLCAyMTUsIDEzMSwgMTUxLCAyNTEsIDEzNiwgMjMyLCAxNjMsIAotICAgIDEyMiwgMjQ1LCAxNDYsIDI1MSwgMTM2LCAyMzIsIDE2MywgMTIyLCAyMjQsIDE2NywgMjUxLCAxMzYsIDIzMiwgMTYzLCAKLSAgICAxMzMsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDE1MSwgMjUxLCAxMzYsIDIzMiwgMTYzLCAyNDQsIDUwLCAyNDUsIAotICAgIDE0NCwgMjUxLCAxMzYsIDIzMiwgMTYzLCAxMzMsIDIyNCwgMTY1LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDIyMSwgNDMsIDI0NSwgCi0gICAgMTQ0LCAyNTEsIDEzNiwgMjQzLCAyMDAsIDI1MSwgMTM2LCA0MiwgMjIxLCA0MywgMjQ1LCAxNDQsIDI1MSwgMTM2LCA0MiwgCi0gICAgMTMzLCAyMjQsIDE2NSwgMjUxLCAxMzYsIDQyLCAyNDQsIDUwLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAxNTEsIDI1MSwgCi0gICAgMTM2LCA0MiwgMTMzLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAxMjIsIDIyNCwgMTY3LCAyNTEsIDEzNiwgNDIsIDEyMiwgCi0gICAgMjQ1LCAxNDYsIDI1MSwgMTM2LCA0NiwgMTUxLCAyNTEsIDEzNiwgMTc3LCAyMjEsIDE0LCAyMzEsIDE0NywgMjIxLCAxNCwgCi0gICAgMjQ4LCAxMDcsIDIyMSwgMTQsIDIxNSwgMTMxLCAxMjIsIDI0NSwgMTQ2LCAyNTEsIDEzNiwgNDYsIDEyMiwgMjQ1LCAxNDYsIAotICAgIDI1MSwgMTM2LCAyMjQsIDE3MSwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgCi0gICAgMTcxLCAyMTUsIDEzMSwgMjMzLCA3MCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIzMiwgMTYzLCA0MiwgMjQsIAotICAgIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAKLSAgICAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCAyMzMsIDcwLCAyMjQsIDE3MSwgCi0gICAgMjE1LCAxMzEsIDQyLCAyNCwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAKLSAgICAxMzEsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAKLSAgICAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgNDIsIDI0LCAyMzIsIDE2MywgMjIzLCAxNDgsIDgzLCAyMTksIDE2NiwgNjcsIAotICAgIDIxOSwgMTY2LCA2NywgNDEsIDIsIDIyMywgODUsIDI0OSwgOTgsIDY3LCA0MSwgMjQ5LCAxMjYsIDgzLCAzLCAyMTksIDE2NiwgCi0gICAgNDEsIDIsIDE5OSwgMjQ0LCA3NCwgNDEsIDIsIDcxLCAyNDQsIDc0LCA0MSwgMiwgMjI3LCAxMSwgMjQ5LCA2NiwgMjQ0LCAKLSAgICA3NCwgNDEsIDIsIDIxNSwgMTMxLCA0MiwgMjExLCAyMTEsIDIzMiwgMTYzLCA0NiwgMjQ0LCA3NCwgNDEsIDIsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjExLCAyMTEsIDIzMiwgMTYzLCA0MiwgMjQ0LCA3NCwgNDEsIDIsIDI0NywgMjA3LCAyNDksIDY2LCAyNDQsIAotICAgIDc0LCA4MywgMywgMjE5LCAxNjYsIDY3LCAzLCAyMTksIDE2NiwgODMsIDIyNCwgOSwgNjcsIDIyNCwgOSwgODMsIDcxLCAKLSAgICAyMjQsIDksIDY3LCA3MSwgMjI0LCA5LCA4MywgMjI2LCAxMzQsIDY3LCAyMjYsIDEzNCwgODMsIDIxNSwgMTMzLCAyMTYsIAotICAgIDE4MywgNjcsIDIxNSwgMTMzLCAyMTYsIDE4MywgODMsIDIxNSwgMTMzLCAzLCAyMTYsIDE4MywgNjcsIDIxNSwgMTMzLCAzLCAKLSAgICAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAyMTYsIDE4MywgNjcsIDIyMywgMTQ0LCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAKLSAgICAzLCAyMTYsIDE4MywgNjcsIDIyMywgMTQ0LCAzLCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAyMjUsIDE0MiwgNjcsIDIyMywgCi0gICAgMTQ0LCAyMjUsIDE0MiwgODMsIDI0NiwgNTksIDIxNiwgMTgzLCA2NywgMjQ2LCA1OSwgMjE2LCAxODMsIDgzLCAyNDYsIDU5LCAKLSAgICAzLCAyMTYsIDE4MywgNjcsIDI0NiwgNTksIDMsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgMjE2LCAxODMsIDY3LCAyMzMsIAotICAgIDY2LCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDMsIDIxNiwgMTgzLCA2NywgMjMzLCA2NiwgMywgMjE2LCAxODMsIDgzLCAKLSAgICAyMzMsIDY2LCAyMjUsIDE0MiwgNjcsIDIzMywgNjYsIDIyNSwgMTQyLCA4MywgMjQ3LCAyMDAsIDY3LCAyNDcsIDIwMCwgNjcsIAotICAgIDI0NywgMjAxLCAyNDksIDEyNiwgODMsIDMsIDI0NywgMjAwLCAyNDQsIDU4LCAyMzIsIDE1OSwgNjcsIDI0OSwgMjI4LCAKLSAgICAyNDYsIDcyLCAyNDksIDIyOCwgMjQ5LCAyMjksIDIsIDcxLCAyNDQsIDc0LCAyNTEsIDQwLCA4MywgMjQ5LCAyMjgsIDI0OSwgCi0gICAgMjI5LCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgCi0gICAgMjMyLCAxNjMsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAyMTUsIDEzMSwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIAotICAgIDIsIDIxNSwgMTMxLCA0NiwgMjI0LCAxNzEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgMjU0LCA2NCwgMjUxLCAxNywgMjE1LCAKLSAgICAxMzEsIDQyLCAyMjQsIDE3MSwgMjUxLCAxNDQsIDQyLCAxNTEsIDgzLCAyNDksIDIyOCwgNDYsIDE1MSwgODMsIDI0OSwgCi0gICAgMjI4LCAyMzUsIDE5MiwgMjUxLCA0MiwgMjM1LCAxOTIsIDY3LCAyNDksIDIyOCwgMjE1LCAxMzEsIDE1MSwgMjM1LCAxOTIsIAotICAgIDY3LCAyNDksIDIyOCwgMjMyLCAxNjMsIDE1MSwgMjM1LCAxOTIsIDY3LCAyNDksIDIyOCwgMjE1LCAxMzEsIDQyLCAyMjQsIAotICAgIDE3MSwgMjQ5LCAyMjYsIDI1MywgMTk1LCAyMTUsIDEzMSwgNDYsIDIyNCwgMTcxLCAyNDksIDIyNiwgMjUzLCAxOTUsIDIzMiwgCi0gICAgMTYzLCA0NiwgMjI0LCAxNzEsIDI0OSwgMjI2LCAyNTMsIDE5NSwgMjMyLCAxNjMsIDQyLCAyMjQsIDE3MSwgMjQ5LCAyMjYsIAotICAgIDI1MywgMTk1LCAyMTUsIDEzMSwgMTUxLCAyNDksIDIyOCwgMjMyLCAxNjMsIDE1MSwgMjQ5LCAyMjgsIDgzLCAyMzIsIDE2MywgCi0gICAgNDYsIDIxNiwgMTgzLCA4MywgMjMyLCAxNjMsIDQyLCAyMTYsIDE4MywgODMsIDIxNSwgMTMxLCA0MiwgMjE2LCAxODMsIDgzLCAKLSAgICAyMTUsIDEzMSwgNDYsIDIxNiwgMTgzLCA2NywgMjUxLCA0MiwgNDEsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgNDYsIAotICAgIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMTUsIDEzMSwgNDIsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjMyLCAKLSAgICAxNjMsIDQ2LCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgNjcsIDQxLCAyLCA3MSwgMjUxLCAxNTUsIDIzMiwgMjQyLCA2NywgCi0gICAgMjE1LCAxMzMsIDIxNiwgMTg0LCAyLCAyNDcsIDc0LCAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAKLSAgICAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyMzMsIDEwOCwgMjQ5LCAyMjgsIDY3LCA0MSwgMiwgCi0gICAgMjE1LCAxMzEsIDQyLCAyMjQsIDE3MCwgNjcsIDQxLCAyLCAyMzIsIDE2MywgNDIsIDIyNCwgMTcwLCA2NywgNDEsIDIsIAotICAgIDIzMiwgMTYzLCA0NiwgMjI0LCAxNzAsIDY3LCA0MSwgMiwgMjE1LCAxMzEsIDQ2LCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAKLSAgICAyLCAyMTUsIDEzMSwgNDIsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIDIsIDIzMiwgMTYzLCA0MiwgMjI0LCAxNzAsIDY3LCAKLSAgICAyNDksIDIyOSwgMiwgMjMyLCAxNjMsIDQ2LCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAyLCAyMTUsIDEzMSwgNDYsIDIyNCwgCi0gICAgMTcwLCAyMTUsIDEzMSwgNDIsIDIxNiwgMTgzLCAyMTUsIDEzMSwgNDYsIDIxNiwgMTgzLCAyMzIsIDE2MywgNDIsIDIxNiwgCi0gICAgMTgzLCA2NywgMjMxLCAxNDcsIDIxOSwgMTY2LCA4MywgMjMxLCAxNDcsIDIxOSwgMTY2LCA2NywgMjMxLCAxNDcsIDMsIAotICAgIDIxOSwgMTY2LCA4MywgMjMxLCAxNDcsIDMsIDIxOSwgMTY2LCAyMzIsIDE2MywgNDYsIDIxNiwgMTgzLCA4MywgMjE4LCAKLSAgICAyMzksIDIsIDIyNCwgMjUsIDI0OSwgMTg0LCAyMTUsIDE2NCwgMjE5LCAyNDQsIDI0OSwgMTYwLCA4MywgMjE5LCA5NSwgNjcsIAotICAgIDIxOSwgOTUsIDIzMywgMCwgMjE3LCA4NiwgMjE4LCAyMzgsIDI1MywgMTQ5LCAyMjgsIDE4MiwgMjQ3LCAyNDUsIDIyOCwgCi0gICAgMTgyLCAyNDksIDEzNSwgMjI3LCAyOSwgODMsIDIxNywgMjA5LCA2NywgMjE3LCAyMDksIDI1MiwgNzUsIDI1MSwgODksIAotICAgIDI1MiwgNzUsIDkyLCAyLCAyNTAsIDY1LCAyNTIsIDc1LCA5MiwgMiwgMjEzLCAxNjYsIDIyMiwgMTY5LCAyMTUsIDE2NSwgMiwgCi0gICAgMjI0LCA1MSwgMjQ2LCAzOSwgMjQwLCAyMzAsIDI1MSwgMTk5LCA2NywgMjIwLCAxODIsIDIyNSwgMjMzLCA4MywgMjIwLCAKLSAgICAxODIsIDIyNSwgMjMzLCAyMjEsIDEwLCAyMjMsIDIwMiwgMjIzLCA4OSwgMjQ0LCAyNCwgMjQxLCAyMTIsIDI1MSwgNDIsIAotICAgIDgzLCA0MiwgMjI1LCAxNDEsIDIzNSwgMjM5LCA4MywgNDYsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIDQyLCAyMjUsIDE0MSwgCi0gICAgMjM1LCAyMzksIDY3LCAxMTQsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIDQ2LCAyMjUsIDE0MSwgMjM1LCAyMzksIDY3LCAKLSAgICAxMTksIDIyNSwgMTQxLCAyMzUsIDIzOSwgMjIwLCAyOSwgMjQsIDI0OSwgNjksIDI1MCwgMTUyLCA1MiwgMjI0LCA2MiwgNTIsIAotICAgIDI1MSwgMTYyLCA1MiwgMjUwLCAyMTEsIDI1NCwgMTMsIDIyNywgMTIsIDI0OSwgNzAsIDI1MCwgNDgsIDIyMywgMTkwLCAKLSAgICAyNDksIDcxLCA2NSwgMjMyLCAxNzMsIDI0OSwgNzEsIDY1LCAyMzUsIDExNywgMjE5LCA5NiwgMjQsIDI0OSwgNzYsIDI0NCwgCi0gICAgMTM2LCA4NywgMjU0LCAxNTMsIDIyMSwgMTIsIDI0MiwgNSwgMjQsIDIyMCwgMTE1LCAyMjYsIDk1LCA4NywgMjEyLCAyNDUsIAotICAgIDIxMywgNTgsIDIxNiwgMTczLCAzMSwgMjQxLCAyMDcsIDIxNiwgMTczLCAzMSwgMjMzLCAxMzEsIDIxNiwgMTczLCAzMSwgCi0gICAgMjQ0LCA2NSwgMjE2LCAxNzMsIDMxLCAyMTcsIDg3LCAyMTYsIDE3MywgMzEsIDIxMywgMjI0LCAyMTYsIDE3MywgMzEsIAotICAgIDIxNCwgMjQsIDIxNiwgMTczLCAzMSwgMjMwLCAxODUsIDIxNiwgMTczLCAzMSwgMjQ1LCAxNzksIDIxMywgMjQyLCA2NSwgCi0gICAgMjQ3LCAyMjYsIDY3LCAyNDMsIDIwOSwgMjQ0LCAxNTgsIDY3LCAyMjAsIDIsIDI0NCwgMTU4LCA4MywgMjIwLCAyLCAyNDQsIAotICAgIDE1OCwgNjcsIDIxOCwgMjM5LCAyLCAyMjQsIDI1LCAyNDQsIDYxLCAyMjQsIDE2NywgMjMwLCAxOTgsIDIzMywgMTAzLCAKLSAgICAyMjQsIDE2NywgMjMwLCAxOTgsIDIzMSwgMTE4LCAyNDQsIDEwNywgNTIsIDI0NSwgMTc5LCAyMzEsIDI1MywgNTIsIDIzNSwgCi0gICAgNDEsIDIyMiwgMTM3LCAyMTUsIDExNiwgMjI5LCAxNzUsIDIyNSwgMTU0LCAyNTMsIDE4MywgMjE3LCAyNDcsIDI0MywgMjgsIAotICAgIDI1MCwgMTkxLCAyMzMsIDQzLCAyMTQsIDEzMSwgMjMzLCAxMCwgMjIyLCAxMTAsIDIyMiwgMTg4LCAyNTAsIDE4MCwgMjUzLCAKLSAgICAyMTIsIDIyNSwgMTg0LCA2NywgMjUwLCA1NCwgMjM0LCA4NywgNjcsIDI1MCwgNTQsIDIyNCwgMTU5LCA2NywgMjUwLCA1NCwgCi0gICAgMjIzLCA5NywgNjcsIDI1MCwgNTQsIDI1MSwgMTU0LCA2NywgMjUwLCA1NCwgMjM0LCAzOSwgNjcsIDI1MCwgNTQsIDIyNiwgCi0gICAgMTA1LCA4MywgMjUwLCA1NCwgMjM0LCA4NywgODMsIDI1MCwgNTQsIDIyNCwgMTU5LCA4MywgMjUwLCA1NCwgMjIzLCA5NywgCi0gICAgODMsIDI1MCwgNTQsIDI1MSwgMTU0LCA4MywgMjUwLCA1NCwgMjM0LCAzOSwgODMsIDI1MCwgNTQsIDIyNiwgMTA1LCA4MywgCi0gICAgMjE5LCAyMDQsIDIxOCwgMjUxLCA2NywgMjQxLCAyMTIsIDIxOCwgMjUxLCA2NywgMjQ3LCAyMDEsIDIxOCwgMjUxLCA4MywgCi0gICAgMjQ5LCAxODIsIDIxOCwgMjUxLCA2NywgMjE5LCAyMDQsIDIxOCwgMjUxLCA4MywgMjQxLCAyMTIsIDIxOCwgMjUxLCA4MywgCi0gICAgMjQ3LCAyMDEsIDIxOCwgMjUxLCA2NywgMjQ5LCAxODIsIDIxOCwgMjUxLCAyNDAsIDIzMCwgMjE5LCAxNzAsIDIyNCwgMTY3LCAKLSAgICAyMjgsIDE1OCwgMjQ1LCAxNDYsIDIyOCwgMTU4LCAyNTEsIDI0OSwgMjQ1LCAxNDYsIDIyOCwgMTUzLCAyNTEsIDI0OSwgCi0gICAgMjIwLCA0NiwgMjI4LCAxNTMsIDIzMCwgMTI3LCAyNDQsIDM1LCA1MiwgMjMwLCAxMjcsIDIzMCwgOSwgNTIsIDIzMCwgMTI3LCAKLSAgICAyMjAsIDI1NSwgNTIsIDIxMywgMjUwLCAxNzUsIDI0OSwgNzAsIDI0NSwgMTc2LCAxNzUsIDI0OSwgNzAsIDIxNSwgMTQyLCAKLSAgICAyMjQsIDUsIDg3LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxNCwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEzLCAKLSAgICAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTIsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMSwgCi0gICAgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEwLCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgOSwgMjI1LCAKLSAgICAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDgsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjQzLCAyNiwgMjMxLCAyMDEsIAotICAgIDgzLCAyMTUsIDE0MiwgMjI0LCA1LCA4NywgMjI0LCA2LCAyMjYsIDE0OCwgODcsIDIyNiwgMTI0LCAyMjYsIDE0OCwgODcsIAotICAgIDIyNiwgNDksIDIyNiwgMTQ4LCA1MiwgMjEzLCAyNDAsIDg3LCAyNDcsIDE5MywgMjQ0LCAxNTcsIDI0NywgMTkzLCAyNDQsIAotICAgIDE1NiwgMjQ3LCAxOTMsIDI0NCwgMTU1LCAyNDcsIDE5MywgMjQ0LCAxNTQsIDI0NywgMTkzLCAyNDQsIDE1MywgMjQ3LCAKLSAgICAxOTMsIDI0NCwgMTUyLCA2NywgMjQ5LCAyMjksIDIsIDYyLCAyMjMsIDE0OCwgNjcsIDI0OSwgMjI5LCAyLCAxMTcsIDI0NywgCi0gICAgNzIsIDgzLCAyNDksIDIyOSwgMiwgNjcsIDYyLCAyMjMsIDE0OCwgODMsIDI0OSwgMjI5LCAyLCAxMTcsIDY3LCAyNDcsIDcyLCAKLSAgICAyMzAsIDIxMiwgMzEsIDIxMywgNTgsIDIzMCwgMjEyLCAzMSwgMjEyLCAyNDQsIDI0NywgMTc2LCAzMSwgMjQyLCAxMDgsIAotICAgIDIxMywgNTgsIDI0NywgMTc2LCAzMSwgMjMzLCAzNywgMjEyLCAyNDQsIDI0NywgMTc2LCAzMSwgMjMzLCAzNywgMjEzLCA1OCwgCi0gICAgMjQ3LCAxNzYsIDMxLCAyNDIsIDEwOCwgMjEyLCAyNDQsIDY3LCAyNDQsIDQyLCA4MywgMjQ0LCA0MiwgMjQyLCA1LCAyNCwgCi0gICAgMjI1LCAyMzYsIDI1NCwgMjksIDI0OSwgNjgsIDIxOCwgMTgwLCAyMTksIDEwMywgNjUsIDI1NCwgMTMxLCAyMjIsIDEyNCwgCi0gICAgMjU0LCA3NywgMjQ0LCAyMCwgMjQzLCAzNiwgMjE5LCAxMDMsIDY1LCAyNDEsIDE4NywgMjUzLCAxMTUsIDg3LCAyNDQsIDMxLCAKLSAgICAyMjYsIDI1MCwgNjcsIDIxOSwgOTUsIDEzMywgMjMyLCAyMzcsIDI0OSwgMTE0LCAyMjMsIDE0OCwgMTMzLCAyMzIsIDIzNywgCi0gICAgMjQ5LCAxMTQsIDIzMywgNzAsIDIxNCwgMzQsIDUyLCAxMjQsIDIxNCwgMTExLCA1MiwgMjQ2LCA2NCwgMjQ0LCAxMDcsIDUyLCAKLSAgICAyNDYsIDY0LCAyMzEsIDI1MywgNTIsIDIzNSwgMjAwLCAyNDQsIDEwNywgMjQsIDIzMSwgMjUzLCA1MiwgMjMxLCAyNTMsIAotICAgIDI0LCAyNDQsIDEwNywgNTIsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCA1MiwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAyMzEsIDI1MywgMjQsIDI0NCwgMTA3LCA1MiwgNzEsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCA1MiwgMTk5LCAyMzEsIDI1MywgCi0gICAgMiwgMjE5LCA0NSwgNTIsIDIzMSwgMTQ3LCA2NywgMjQ5LCAyMjgsIDIzMSwgMTQ3LCA4MywgMjQ5LCAyMjgsIDIzMSwgMTQ3LCAKLSAgICAzLCA2NywgMjQ5LCAyMjgsIDIzMSwgMjE2LCA4NywgMjQ3LCAxMTksIDg3LCAyMTUsIDE0MCwgMjI2LCAxMjMsIDg3LCAyNDksIAotICAgIDE2OSwgMjQzLCAxOTYsIDIxNSwgMTEyLCAyMjksIDE3MCwgMjUwLCA5NSwgMjI2LCAxODgsIDIzNSwgNDcsIDIxNCwgMTYyLCAKLSAgICAyNTAsIDMwLCA4MywgMjMwLCAxOTksIDIzMiwgMjUzLCAyMjEsIDMzLCAyMjEsIDY3LCAyMjQsIDE1MCwgMjIxLCA1MSwgCi0gICAgMjE5LCAyMzksIDI1MiwgNzgsIDI1MiwgNDYsIDkxLCAyMzQsIDE0NCwgNjcsIDI0NiwgNDgsIDIzMSwgMjQ4LCA2NywgMjQ2LCAKLSAgICA0OCwgMjM0LCA4NywgODMsIDI0NiwgNDgsIDIzMSwgMjQ4LCA4MywgMjQ2LCA0OCwgMjM0LCA4NywgMjE5LCAyNDUsIDIxMywgCi0gICAgMjE2LCAyMTksIDI0OCwgMjE4LCAyMzksIDI1MSwgMjI3LCAyNDksIDE4NCwgMjI0LCA1MCwgODMsIDIxOSwgMjQ0LCAyMTcsIAotICAgIDg4LCAyNDksIDE4NSwgMjQsIDIyNCwgNTAsIDIxNiwgNTgsIDY3LCAyMjAsIDE4MiwgMjI1LCAyMzMsIDIxNiwgNTgsIDgzLCAKLSAgICAyMjAsIDE4MiwgMjI1LCAyMzMsIDY3LCAyNDcsIDIwMSwgMjM1LCAyNTIsIDIxOSwgMTY2LCAyNDksIDY1LCAyMzMsIDExNSwgCi0gICAgMjQ3LCAxNDUsIDI1MCwgMTc2LCAyMjcsIDMyLCAyMjUsIDIzNiwgMjUwLCAxNzcsIDIyMCwgMTYsIDI0MSwgMTk2LCAyLCAKLSAgICA2NywgMjQ5LCA3MCwgMzYsIDI0OSwgNjUsIDIzMywgMTE1LCAyNTAsIDg4LCAyMjgsIDE4NiwgMjQ1LCA4MywgMjU0LCA1MCwgCi0gICAgMjI3LCA1NywgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA4MywgMjE2LCAyMSwgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA2NywgCi0gICAgMjE2LCAyMSwgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA4MywgNDIsIDIzMywgMTE2LCAyMzEsIDExNywgNjcsIDQyLCAyMzMsIAotICAgIDExNiwgMjMxLCAxMTcsIDI0NiwgNDQsIDIyMCwgMTAsIDUyLCAxMDcsIDY3LCAyNDYsIDU5LCAyMTYsIDE4MywgNDIsIDI0OSwgCi0gICAgMTkzLCAyNDUsIDgzLCA5MSwgMjIyLCAxNjksIDI0NCwgMTQzLCAyNDcsIDIwNywgMjM1LCAyNTIsIDY3LCAyNDksIDIyOSwgCi0gICAgMjM1LCAyNTIsIDgzLCAyMTksIDE2NiwgODMsIDIxNiwgMTUwLCAyMjMsIDIxMiwgNDIsIDI0NSwgODIsIDIyMywgMjEyLCAKLSAgICA0MiwgMjQ1LCA4MSwgMjUzLCAxMjcsIDE2LCAzMSwgMjE1LCAxMTYsIDEwNywgMjQ5LCAyMjksIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAxMTcsIDE3NiwgNDksIDIyNiwgNjQsIDIyMywgMTQ1LCAyMzUsIDIwMiwgMjI2LCA2NCwgMjMzLCA2NywgMjM1LCAyMDIsIAotICAgIDIyNiwgNjQsIDIzNSwgMTkxLCAyMjYsIDY0LCA4MywgMjQ5LCA3MSwgMjI3LCA2MywgMjIwLCAyMDksIDIyMCwgMTk3LCAKLSAgICAyMjAsIDE1NCwgMjQ5LCAyNTQsIDI1MCwgMTU4LCAyNDEsIDE0MywgMjIwLCA1NCwgMjQzLCAzNywgMjEzLCAyMTYsIDI0MCwgCi0gICAgMjEwLCAyNDMsIDM3LCAyLCAyNDEsIDI1MSwgMjMxLCAyMzYsIDE2LCAzMSwgMjMzLCAxLCAyMzAsIDE4NSwgMjE1LCAxNjUsIAotICAgIDIyNywgNjMsIDI0MiwgMTAwLCAyNDMsIDIzOCwgMjQ0LCA0MywgMjM1LCAyNTIsIDI0MSwgNDUsIDI0NCwgOTgsIDIyMiwgCi0gICAgMTg1LCA0MSwgMjQzLCAyMzcsIDI0OSwgOTgsIDIyMCwgMzIsIDI0MCwgMTA1LCAyMjAsIDM1LCAyMjYsIDQ0LCAyLCAyNTIsIAotICAgIDc4LCAyMTcsIDE5NSwgMjM1LCAxMzEsIDI1MiwgNjUsIDg3LCAyNDEsIDIxNSwgMjQyLCAxMTAsIDg3LCAyNDMsIDIwMywgCi0gICAgMjI1LCAyOCwgMjQ5LCA0NCwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCA2NywgMjQ0LCA0MywgMiwgMTk5LCAyMzEsIDM3LCAKLSAgICA4MywgMjE5LCA0NiwgMjE1LCAxMzEsIDI1MSwgMTQwLCAyMjIsIDExMiwgODMsIDIyMiwgMTEyLCAyMzIsIDE2MywgMjUxLCAKLSAgICAxNDAsIDIyMiwgMTEyLCA2NywgMjIyLCAxMTIsIDY3LCAxMDcsIDI1MCwgNjYsIDc3LCAyMTcsIDIxMCwgMjMyLCAyMDYsIAotICAgIDUyLCAyMTgsIDQsIDI0NiwgNDMsIDI1NCwgOTksIDI0NSwgNzgsIDIyNCwgNDgsIDI0NCwgNTQsIDIyNCwgNDgsIDI0MSwgCi0gICAgMjU0LCAyMTQsIDE1MiwgMjQxLCAyNTQsIDIxMywgMTg2LCAyNDEsIDI1NCwgMjMyLCAxNjMsIDQ2LCAyMjYsIDczLCAyMjYsIAotICAgIDczLCAyMTUsIDEzMSwgNDYsIDIyNiwgNzMsIDY3LCAyMjksIDYxLCA4MywgMjI5LCA2MSwgMjUwLCA2NiwgNzcsIDEwNywgCi0gICAgMjUwLCA2NiwgNzcsIDIzMCwgMTU0LCAyMTMsIDE2NiwgMTA3LCAyMzAsIDE1NCwgMjEzLCAxNjYsIDI1MiwgNzUsIDIxMywgCi0gICAgMTY2LCAxMDcsIDI1MiwgNzUsIDIxMywgMTY2LCAyMjYsIDI1MCwgMjUsIDI0OSwgNzAsIDEwNywgMjUsIDI0OSwgNzAsIAotICAgIDIyNywgNDAsIDI1MCwgMTA5LCAyNDksIDcwLCAxMDcsIDIyNywgNDAsIDI1MCwgMTA5LCAyNDksIDcwLCA3LCAyNDksIDcwLCAKLSAgICAyMjEsIDEzLCA2NywgNywgMjQ5LCA3MCwgMjI2LCAyNTAsIDcsIDI0OSwgNzAsIDIzMSwgMjUwLCAyNDksIDcwLCAyMTksIAotICAgIDk2LCA2NSwgMjQ4LCA5NSwgMjQzLCAyMzcsIDIxNywgMjIzLCAyNTMsIDEzMiwgMjQzLCAyMzcsIDI1MiwgNzYsIDI1MywgCi0gICAgMTMyLCAxMDcsIDI0MywgMjM3LCAyNTIsIDc2LCAyNTMsIDEzMiwgMjQzLCAyMzcsIDI0OSwgMTgwLCAyNTMsIDEzMiwgODMsIAotICAgIDI0MywgMjM3LCAyMjUsIDE0MywgMjE5LCA5NSwgNjcsIDI0MywgMjM3LCAyMjUsIDE0MywgMjE5LCA5NSwgMjE5LCAxOTksIAotICAgIDIxOSwgNTEsIDIyNiwgMjUwLCA2NywgMjE5LCA5NSwgMzYsIDY3LCAyMTksIDk1LCAyMjcsIDQwLCAyNTAsIDEwOSwgODMsIAotICAgIDIxOSwgOTUsIDgzLCAyNTAsIDEwOSwgNjcsIDIxOSwgOTUsIDIyNiwgMjUwLCA4MywgMjE5LCA5NSwgMTA3LCAyMjYsIDI1MCwgCi0gICAgODMsIDIxOSwgOTUsIDIyNSwgMTkyLCAyMTksIDk1LCAyMjEsIDEzLCA2NywgMjE5LCA5NSwgMTA3LCAyNTMsIDEzMiwgMjI3LCAKLSAgICA0MCwgMjUwLCAxMDksIDI1MywgMTMyLCAyNDUsIDE1MCwgMjE5LCAxNzYsIDI1MywgMTMyLCAyNDUsIDE1MCwgMjI1LCAxNDMsIAotICAgIDgzLCAyMTksIDk1LCAyNDUsIDE1MCwgMjI1LCAxNDMsIDIyNSwgMTkyLCAyMTksIDk1LCAyMjAsIDUzLCAyMjUsIDE0MywgCi0gICAgODMsIDIxOSwgOTUsIDI0NSwgMTUwLCAyMjUsIDE0MywgMjI0LCA3LCA4MywgMjE5LCA5NSwgMTA3LCAyNDUsIDE1MCwgMjI1LCAKLSAgICAxNDMsIDIyNCwgNywgODMsIDIxOSwgOTUsIDIxNiwgNDIsIDIyNSwgMTQzLCA4MywgMjE5LCA5NSwgMjIwLCA0OCwgMjI1LCAKLSAgICAxNDMsIDI1MywgMTMyLCAyMTcsIDIyMywgMjUzLCAxMzIsIDIyNywgNDAsIDI1MCwgMTA5LCAyMTcsIDIyMywgMjUzLCAxMzIsIAotICAgIDEwNywgMjE3LCAyMjMsIDI1MywgMTMyLCAyMjAsIDUzLCAyMjYsIDMzLCA4MywgMjQsIDY3LCAyNDQsIDIzLCA4MywgMjQ0LCAKLSAgICAyMywgNjcsIDI0NCwgMjMsIDI0NSwgMTUwLCAyMjYsIDMzLCAyMjYsIDI1MCwgODMsIDI0NCwgMjMsIDM2LCAyMjcsIDQwLCAKLSAgICAyNTAsIDEwOSwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAyMTksIDk1LCAxMDcsIDIxNywgMjIzLCAyMjUsIDE5MiwgMjUzLCAxMzIsIAotICAgIDIxOSwgMjQ2LCAyMTcsIDU5LCAyMTYsIDE3NiwgMjE5LCAyNDYsIDEwNywgMjUwLCA1MSwgMjE5LCAyNDYsIDIxOSwgMjAxLCAKLSAgICAxMDcsIDIxOSwgMjAxLCAyNTIsIDc2LCAyNTMsIDEzMiwgMjQ1LCAxNTAsIDIxNywgMjIzLCAyMjUsIDU1LCAyNTMsIDEzMiwgCi0gICAgMTA3LCAyNDUsIDE1MCwgMjE3LCAyMjMsIDIyNSwgNTUsIDI1MywgMTMyLCAyNDksIDcxLCA3NywgMjIxLCAxMywgNjcsIAotICAgIDI0OSwgMjI4LCAxNDYsIDkxLCAyNDksIDcxLCA3NywgMjMyLCAxNjMsIDQ2LCAyNDYsIDQxLCA2NywgMjE5LCAxNjYsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjQ2LCA0MSwgNjcsIDIxOSwgMTY2LCAyMzIsIDE2MywgNDYsIDIyMSwgMTMsIDY3LCAyMTksIDE2NiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyMjEsIDEzLCA2NywgMjE5LCAxNjYsIDgzLCAyMjQsIDE1OCwgMTUyLCAyMjcsIDE0LCA2NywgMjI0LCAxNTgsIAotICAgIDE1MiwgMjI3LCAxNCwgNjcsIDI0NCwgMjU0LCAxNTIsIDIyNywgMTQsIDgzLCAyNDcsIDIwMSwgMjMwLCAyNTEsIDY3LCAKLSAgICAyMTMsIDE2NiwgMTA3LCAyNDQsIDI1NCwgMTUyLCA4NywgMTc3LCA3MSwgMTM0LCAyMzEsIDE0NywgNzEsIDEzNCwgMTA3LCAKLSAgICA3MSwgMTM0LCAxMDcsIDIyMCwgODEsIDIxNiwgNTgsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIAotICAgIDIyMCwgODEsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDUxLCAyMTYsIDU4LCAyNDksIDE1OCwgCi0gICAgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCA1MSwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgCi0gICAgMTE1LCAyMjAsIDgxLCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAxMTUsIDUxLCAyNDksIDE1OCwgCi0gICAgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMjQ5LCAzMywgMjE5LCA4MCwgMjI2LCAxNDMsIDUsIDIyNywgMTQsIDEwNywgMjQ0LCAKLSAgICAyNTQsIDE1MiwgMjI3LCAxNCwgMTA3LCAyNDEsIDIxMiwgMjQ0LCAyNTQsIDE1MiwgMjI3LCAxNCwgMTA3LCA4MywgMjQxLCAKLSAgICAyMTEsIDIyMywgODksIDEwNywgODMsIDI0MSwgMjEyLCAyNTEsIDQyLCAyNDQsIDI0LCAyNDEsIDIxMSwgMjIzLCA4OSwgCi0gICAgMjQ0LCAyNCwgMjQxLCAyMTIsIDI1MSwgNDIsIDIzMSwgMTQ3LCA0MiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAKLSAgICA0NiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAyNDQsIDMyLCA0MiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgCi0gICAgMTQ3LCAyNDQsIDMyLCA0NiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAyMzMsIDY2LCAyNTQsIDE5LCAyNTEsIDg1LCAKLSAgICAyMjcsIDE0LCAyMzEsIDE0NywgMjIzLCAxNDQsIDI1NCwgMTksIDI1MSwgODUsIDIyNywgMTQsIDEwNywgMjMzLCA2NiwgCi0gICAgMjU0LCAxOSwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAyMjMsIDE0NCwgMjU0LCAxOSwgMjI0LCAxNDMsIDE1MiwgCi0gICAgMjI3LCAxNCwgMTA3LCAyMzMsIDY2LCAyNTQsIDE5LCAyNTEsIDg1LCAyMjcsIDE0LCAxMDcsIDIyMywgMTQ0LCAyNTQsIDE5LCAKLSAgICAyNTEsIDg1LCAyMjcsIDE0LCAxNzcsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODUsIDIyNywgMTQsIDE3NywgNDYsIAotICAgIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NSwgMjI3LCAxNCwgMjMxLCAxNDcsIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAKLSAgICAyMjcsIDE0LCAyMzEsIDE0NywgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIyNywgMTQsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgCi0gICAgMTE2LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDEwOSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxNjYsIDI0NywgMTU2LCAKLSAgICAxNDYsIDM2LCAyMSwgMTYzLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE4MCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxODksIAotICAgIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTk4LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE5NSwgMjQ3LCAxNTYsIDE0NiwgCi0gICAgMzYsIDIxLCAyMDAsIDI0NywgMTU2LCAxNDYsIDM2LCA1MCwgMjE3LCAyMDAsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxMTYsIAotICAgIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxMDksIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxNjYsIDI0NywgMTU2LCAzNiwgMzUsIAotICAgIDIxLCAxNjMsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxODAsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxODksIDI0NywgMTU2LCAKLSAgICAzNiwgMzUsIDIxLCAxOTgsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxOTUsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAyMDAsIAotICAgIDI0NywgMTU2LCAzNiwgMzUsIDUwLCAyMTcsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTE2LCAyNDcsIDE1NiwgCi0gICAgMTQ2LCAzNiwgMzUsIDIxLCAxMDksIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE2NiwgMjQ3LCAxNTYsIDE0NiwgMzYsIAotICAgIDM1LCAyMSwgMTYzLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxODAsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIAotICAgIDE4OSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTk4LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxOTUsIDI0NywgCi0gICAgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCA1MCwgMjE3LCAyMDAsIDEwNywgMjEzLCAKLSAgICAyMzEsIDk1LCA2OCwgMTA3LCA5NCwgNTIsIDEwNywgMjMwLCAyNTEsIDUyLCAxMDcsIDI0NywgMTIxLCA1MiwgMTA3LCAyMTksIAotICAgIDIxNSwgMjQ1LCAxNzYsIDY4LCAxMDcsIDk1LCA2OCwgMTA3LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyNDYsIDUyLCAKLSAgICAyMjUsIDE0NSwgOTUsIDY4LCAxMDcsIDIyMywgODYsIDk1LCA2OCwgMjE2LCAxODIsIDk1LCA2OCwgMTA3LCAyMTYsIDE4MiwgCi0gICAgOTUsIDY4LCAyNDgsIDEwMCwgMjE2LCAxODIsIDk1LCA2OCwgMTA3LCAyNDgsIDEwMCwgMjE2LCAxODIsIDk1LCA2OCwgODMsIAotICAgIDk1LCA2OCwgMjE3LCA5NywgMjE2LCAyMjUsIDk1LCAyNTMsIDE2NCwgMjE3LCA5NywgMjUxLCA5OSwgOTUsIDI1MywgMTY0LCAKLSAgICA4MywgOTUsIDI1MywgMTY0LCAxMDcsIDgzLCAyNDksIDMzLCAyNDYsIDU4LCAyNCwgOTUsIDY4LCAxMDcsIDgzLCAyNDksIAotICAgIDMzLCAyMTUsIDEyNCwgMjQsIDk1LCA2OCwgMjE5LCAxNjMsIDgzLCA5NSwgNjgsIDEwNywgMjQ5LCAxNDUsIDgzLCA5NSwgCi0gICAgNjgsIDIyMywgMTQzLCA2NywgOTUsIDY4LCAyMzMsIDY1LCA2NywgOTUsIDY4LCAyNTIsIDEwMCwgMjIxLCAxMywgNjcsIDk1LCAKLSAgICA2OCwgMjQzLCAyMTEsIDIyMSwgMTMsIDY3LCA5NSwgNjgsIDEwNywgMjMyLCAxNjMsIDIyMywgMTQyLCA2NywgOTUsIDY4LCAKLSAgICAxMDcsIDIxNSwgMTMxLCAyMjMsIDE0MiwgNjcsIDk1LCA2OCwgMjI4LCAxNjAsIDIzMiwgMTYzLCAyMjMsIDE0MiwgNjcsIAotICAgIDk1LCA2OCwgMjQ5LCA0MCwgMjMyLCAxNzcsIDIyOCwgMTYwLCAyMTUsIDEzMSwgMjIzLCAxNDIsIDY3LCA5NSwgNjgsIDM2LCAKLSAgICAxMDcsIDY3LCA5NSwgNjgsIDIxMywgMjM3LCA5NSwgNjgsIDI1MSwgMTQzLCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyNTEsIAotICAgIDE0MywgOTUsIDY4LCAyNTEsIDE0MywgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMTA3LCAyNTEsIDE0MywgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA2OCwgMTA3LCAyNTEsIDE0MywgOTUsIDY4LCAxMDcsIDI1MSwgMTQzLCAyMjgsIDE2NywgMjQ1LCAxNzYsIAotICAgIDY4LCAyMTcsIDIyNSwgOTUsIDY4LCAxMDcsIDIxNywgMjI0LCA5NSwgNjgsIDIxNCwgMiwgOTUsIDY4LCAxMDcsIDIxNCwgMiwgCi0gICAgOTUsIDY4LCAyMjcsIDM3LCA5NSwgNjgsIDUxLCAyNDksIDQwLCAyMzIsIDE3NywgMTMzLCAyNDcsIDE2NiwgMjU0LCAxOCwgCi0gICAgNjcsIDIxNiwgMTg0LCAyNDksIDEyNiwgMywgNjcsIDIxNiwgMTgzLCAyMjYsIDQ3LCAyMjcsIDQwLCAyMTksIDgsIDIyNywgCi0gICAgNDAsIDIxOCwgMjIxLCA0MiwgMjIzLCAzLCAyNTIsIDkxLCAyNDgsIDExLCA0NiwgMjIzLCAzLCAyNTIsIDkxLCAyNDgsIDExLCAKLSAgICAxNjcsIDIsIDYyLCAyMzUsIDIxMiwgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjUsIDgxLCAyMTksIDgsIDIxOCwgMjIyLCAyMjUsIAotICAgIDgxLCAyMTksIDIzMSwgNzEsIDI1MiwgNjAsIDIsIDE5OSwgOTAsIDE4NCwgMjQ3LCAxMjAsIDkxLCAyMzIsIDE5OSwgMjU0LCAKLSAgICAyNywgOTEsIDIzMiwgMTk5LCAyMjcsIDI0LCA2NywgMjQ3LCAyMDEsIDIsIDI1MCwgMTA3LCAyNDcsIDc0LCAyNCwgMiwgCi0gICAgMjQ3LCA3NCwgMjQ1LCAxMjcsIDY1LCAyMjcsIDM1LCAyMTUsIDEyMywgMjMyLCAxNjMsIDQ2LCAyNDksIDEwMCwgMiwgMjQ3LCAKLSAgICA3NCwgMjE1LCAxMzEsIDQyLCAyNDksIDEwMCwgMiwgMjQ3LCA3NCwgNDIsIDIyNiwgMjUyLCAyMzUsIDY5LCA0NiwgMjI2LCAKLSAgICAyNTIsIDIzNSwgNjksIDI0MywgMjAwLCAyMjYsIDI1MiwgMjM1LCA2OSwgMjMzLCAxMDgsIDExNCwgMjE4LCAzNiwgMjMzLCAKLSAgICAxMDgsIDExOSwgMjE4LCAzNiwgNDIsIDI0LCA0NiwgNTEsIDIxNiwgNTcsIDQyLCAyNCwgNDYsIDIxOCwgMzYsIDQyLCAyMzAsIAotICAgIDE1NywgMTg0LCA0NiwgMjE4LCAzNiwgMTg0LCA0MiwgMjE4LCAzNiwgMTE0LCAyMTgsIDM3LCAyLCAyNDksIDIyOSwgNDksIAotICAgIDIzMiwgMTYwLCAyNDcsIDEyNSwgMjUxLCA3LCAxOTksIDIyMywgNDQsIDY3LCAyNDksIDE0NCwgMjQ3LCAyMDAsIDY3LCAKLSAgICAyNDksIDE0NCwgMjQ3LCAyMDEsIDIsIDEzMiwgMjE3LCA2OCwgNjcsIDI0OSwgMTQ0LCAyNDcsIDIwMSwgMiwgOTUsIDIxNywgCi0gICAgNjgsIDY3LCA0MSwgMiwgMTMyLCAyMTcsIDY4LCA2NywgNDEsIDIsIDk1LCAyMTcsIDY4LCAxNCwgNDIsIDY3LCA0MSwgMTI1LCAKLSAgICAxNCwgNDYsIDY3LCA0MSwgMTI1LCAxNCwgNDIsIDI1NCwgMTksIDEyNSwgMTQsIDQ2LCAyNTQsIDE5LCAxMjUsIDE0LCA0MiwgCi0gICAgNTEsIDI1NCwgMTksIDEyNSwgMTQsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCAxNCwgNDIsIDY3LCAyMTYsIDIxOSwgMjIwLCAKLSAgICAyMzMsIDEyNSwgMTQsIDQ2LCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDE0LCA0MiwgMjQ0LCAzMiwgMjI2LCAxMzEsIAotICAgIDE0LCA0NiwgMjQ0LCAzMiwgMjI2LCAxMzEsIDIxNSwgMTI0LCAyMjQsIDE2OSwgNjgsIDI0NiwgNTgsIDIyNCwgMTY5LCA2OCwgCi0gICAgMjUzLCAyNTUsIDI0MywgNzQsIDI0OSwgMjI5LCA2OCwgMjQ5LCAxOTUsIDI0MywgNzQsIDI0OSwgMjI5LCA2OCwgNDYsIDc2LCAKLSAgICAyLCAzNiwgMjI1LCAxNTYsIDE4NCwgMTMyLCA2OCwgMTg0LCA5NSwgNjgsIDE4NCwgNDIsIDQ2LCA2OCwgMTg0LCAxMzIsIAotICAgIDUxLCA2OCwgMTg0LCA5NSwgNTEsIDY4LCAxODQsIDQyLCA0NiwgNTEsIDY4LCAxODQsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDE4NCwgOTUsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIDEzMiwgNTEsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIAotICAgIDk1LCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgOTUsIDIxOSwgMTYyLCA2OCwgNDQsIDQ1LCAyNTEsIDEzOCwgNDQsIAotICAgIDQ1LCAyNDcsIDcxLCA0NCwgNDUsIDI0NiwgMTk5LCA0NCwgNDUsIDI0NywgNzAsIDQ0LCA0NSwgMjQ2LCAxMzUsIDQ0LCA0NSwgCi0gICAgMjQ3LCA2LCA0NCwgNDUsIDI0NiwgMTk4LCA0NCwgNDUsIDI0NywgNjksIDQ0LCA0NSwgMjQ2LCAxMDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAyMzAsIDQ0LCA0NSwgMjQ2LCAxNjYsIDQ0LCA0NSwgMjQ3LCAzNywgNDQsIDQ1LCAyNDYsIDEzNCwgNDQsIDQ1LCAyNDcsIDUsIAotICAgIDQ0LCA0NSwgMjQ2LCAxOTcsIDQ0LCA0NSwgMjQ3LCA2OCwgNDQsIDQ1LCAyNDYsIDg3LCA0NCwgNDUsIDI0NiwgMjE0LCA0NCwgCi0gICAgNDUsIDI0NiwgMTUwLCA0NCwgNDUsIDI0NywgMjEsIDQ0LCA0NSwgMjQ2LCAxMTgsIDQ0LCA0NSwgMjQ2LCAyNDUsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxODEsIDQ0LCA0NSwgMjQ3LCA1MiwgNDQsIDQ1LCAyNDYsIDEwMiwgNDQsIDQ1LCAyNDYsIDIyOSwgNDQsIAotICAgIDQ1LCAyNDYsIDE2NSwgNDQsIDQ1LCAyNDcsIDM2LCA0NCwgNDUsIDI0NiwgMTMzLCA0NCwgNDUsIDI0NywgNCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE5NiwgNDQsIDQ1LCAyNDcsIDY3LCA0NCwgNDUsIDI0NiwgNzksIDQ0LCA0NSwgMjQ2LCAyMDYsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNDIsIDQ0LCA0NSwgMjQ3LCAxMywgNDQsIDQ1LCAyNDYsIDExMCwgNDQsIDQ1LCAyNDYsIDIzNywgNDQsIDQ1LCAKLSAgICAyNDYsIDE3MywgNDQsIDQ1LCAyNDcsIDQ0LCA0NCwgNDUsIDI0NiwgOTQsIDQ0LCA0NSwgMjQ2LCAyMjEsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNTcsIDQ0LCA0NSwgMjQ3LCAyOCwgNDQsIDQ1LCAyNDYsIDEyNSwgNDQsIDQ1LCAyNDYsIDI1MiwgNDQsIDQ1LCAKLSAgICAyNDYsIDE4OCwgNDQsIDQ1LCAyNDcsIDU5LCA0NCwgNDUsIDI0NiwgODYsIDQ0LCA0NSwgMjQ2LCAyMTMsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNDksIDQ0LCA0NSwgMjQ3LCAyMCwgNDQsIDQ1LCAyNDYsIDExNywgNDQsIDQ1LCAyNDYsIDI0NCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE4MCwgNDQsIDQ1LCAyNDcsIDUxLCA0NCwgNDUsIDI0NiwgMTAxLCA0NCwgNDUsIDI0NiwgMjI4LCA0NCwgNDUsIAotICAgIDI0NiwgMTY0LCA0NCwgNDUsIDI0NywgMzUsIDQ0LCA0NSwgMjQ2LCAxMzIsIDQ0LCA0NSwgMjQ3LCAzLCA0NCwgNDUsIDI0NiwgCi0gICAgMTk1LCA0NCwgNDUsIDI0NywgNjYsIDQ0LCA0NSwgMjQ2LCA3NSwgNDQsIDQ1LCAyNDYsIDIwMiwgNDQsIDQ1LCAyNDYsIAotICAgIDEzOCwgNDQsIDQ1LCAyNDcsIDksIDQ0LCA0NSwgMjQ2LCAxMDYsIDQ0LCA0NSwgMjQ2LCAyMzMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNjksIDQ0LCA0NSwgMjQ3LCA0MCwgNDQsIDQ1LCAyNDYsIDkwLCA0NCwgNDUsIDI0NiwgMjE3LCA0NCwgNDUsIDI0NiwgCi0gICAgMTUzLCA0NCwgNDUsIDI0NywgMjQsIDQ0LCA0NSwgMjQ2LCAxMjEsIDQ0LCA0NSwgMjQ2LCAyNDgsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxODQsIDQ0LCA0NSwgMjQ3LCA1NSwgNDQsIDQ1LCAyNDYsIDgyLCA0NCwgNDUsIDI0NiwgMjA5LCA0NCwgNDUsIDI0NiwgCi0gICAgMTQ1LCA0NCwgNDUsIDI0NywgMTYsIDQ0LCA0NSwgMjQ2LCAxMTMsIDQ0LCA0NSwgMjQ2LCAyNDAsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzYsIDQ0LCA0NSwgMjQ3LCA0NywgNDQsIDQ1LCAyNDYsIDk3LCA0NCwgNDUsIDI0NiwgMjI0LCA0NCwgNDUsIDI0NiwgCi0gICAgMTYwLCA0NCwgNDUsIDI0NywgMzEsIDQ0LCA0NSwgMjQ2LCAxMjgsIDQ0LCA0NSwgMjQ2LCAyNTUsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxOTEsIDQ0LCA0NSwgMjQ3LCA2MiwgNDQsIDQ1LCAyNDYsIDc4LCA0NCwgNDUsIDI0NiwgMjA1LCA0NCwgNDUsIDI0NiwgCi0gICAgMTQxLCA0NCwgNDUsIDI0NywgMTIsIDQ0LCA0NSwgMjQ2LCAxMDksIDQ0LCA0NSwgMjQ2LCAyMzYsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzIsIDQ0LCA0NSwgMjQ3LCA0MywgNDQsIDQ1LCAyNDYsIDkzLCA0NCwgNDUsIDI0NiwgMjIwLCA0NCwgNDUsIDI0NiwgCi0gICAgMTU2LCA0NCwgNDUsIDI0NywgMjcsIDQ0LCA0NSwgMjQ2LCAxMjQsIDQ0LCA0NSwgMjQ2LCAyNTEsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxODcsIDQ0LCA0NSwgMjQ3LCA1OCwgNDQsIDQ1LCAyNDYsIDg1LCA0NCwgNDUsIDI0NiwgMjEyLCA0NCwgNDUsIDI0NiwgCi0gICAgMTQ4LCA0NCwgNDUsIDI0NywgMTksIDQ0LCA0NSwgMjQ2LCAxMTYsIDQ0LCA0NSwgMjQ2LCAyNDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzksIDQ0LCA0NSwgMjQ3LCA1MCwgNDQsIDQ1LCAyNDYsIDEwMCwgNDQsIDQ1LCAyNDYsIDIyNywgNDQsIDQ1LCAyNDYsIAotICAgIDE2MywgNDQsIDQ1LCAyNDcsIDM0LCA0NCwgNDUsIDI0NiwgMTMxLCA0NCwgNDUsIDI0NywgMiwgNDQsIDQ1LCAyNDYsIDE5NCwgCi0gICAgNDQsIDQ1LCAyNDcsIDY1LCA0NCwgNDUsIDI0NiwgNzMsIDQ0LCA0NSwgMjQ2LCAyMDAsIDQ0LCA0NSwgMjQ2LCAxMzYsIDQ0LCAKLSAgICA0NSwgMjQ3LCA3LCA0NCwgNDUsIDI0NiwgMTA0LCA0NCwgNDUsIDI0NiwgMjMxLCA0NCwgNDUsIDI0NiwgMTY3LCA0NCwgNDUsIAotICAgIDI0NywgMzgsIDQ0LCA0NSwgMjQ2LCA4OCwgNDQsIDQ1LCAyNDYsIDIxNSwgNDQsIDQ1LCAyNDYsIDE1MSwgNDQsIDQ1LCAKLSAgICAyNDcsIDIyLCA0NCwgNDUsIDI0NiwgMTE5LCA0NCwgNDUsIDI0NiwgMjQ2LCA0NCwgNDUsIDI0NiwgMTgyLCA0NCwgNDUsIAotICAgIDI0NywgNTMsIDQ0LCA0NSwgMjQ2LCA4MCwgNDQsIDQ1LCAyNDYsIDIwNywgNDQsIDQ1LCAyNDYsIDE0MywgNDQsIDQ1LCAKLSAgICAyNDcsIDE0LCA0NCwgNDUsIDI0NiwgMTExLCA0NCwgNDUsIDI0NiwgMjM4LCA0NCwgNDUsIDI0NiwgMTc0LCA0NCwgNDUsIAotICAgIDI0NywgNDUsIDQ0LCA0NSwgMjQ2LCA5NSwgNDQsIDQ1LCAyNDYsIDIyMiwgNDQsIDQ1LCAyNDYsIDE1OCwgNDQsIDQ1LCAKLSAgICAyNDcsIDI5LCA0NCwgNDUsIDI0NiwgMTI2LCA0NCwgNDUsIDI0NiwgMjUzLCA0NCwgNDUsIDI0NiwgMTg5LCA0NCwgNDUsIAotICAgIDI0NywgNjAsIDQ0LCA0NSwgMjQ2LCA3NiwgNDQsIDQ1LCAyNDYsIDIwMywgNDQsIDQ1LCAyNDYsIDEzOSwgNDQsIDQ1LCAKLSAgICAyNDcsIDEwLCA0NCwgNDUsIDI0NiwgMTA3LCA0NCwgNDUsIDI0NiwgMjM0LCA0NCwgNDUsIDI0NiwgMTcwLCA0NCwgNDUsIAotICAgIDI0NywgNDEsIDQ0LCA0NSwgMjQ2LCA5MSwgNDQsIDQ1LCAyNDYsIDIxOCwgNDQsIDQ1LCAyNDYsIDE1NCwgNDQsIDQ1LCAKLSAgICAyNDcsIDI1LCA0NCwgNDUsIDI0NiwgMTIyLCA0NCwgNDUsIDI0NiwgMjQ5LCA0NCwgNDUsIDI0NiwgMTg1LCA0NCwgNDUsIAotICAgIDI0NywgNTYsIDQ0LCA0NSwgMjQ2LCA4MywgNDQsIDQ1LCAyNDYsIDIxMCwgNDQsIDQ1LCAyNDYsIDE0NiwgNDQsIDQ1LCAKLSAgICAyNDcsIDE3LCA0NCwgNDUsIDI0NiwgMTE0LCA0NCwgNDUsIDI0NiwgMjQxLCA0NCwgNDUsIDI0NiwgMTc3LCA0NCwgNDUsIAotICAgIDI0NywgNDgsIDQ0LCA0NSwgMjQ2LCA5OCwgNDQsIDQ1LCAyNDYsIDIyNSwgNDQsIDQ1LCAyNDYsIDE2MSwgNDQsIDQ1LCAKLSAgICAyNDcsIDMyLCA0NCwgNDUsIDI0NiwgMTI5LCA0NCwgNDUsIDI0NywgMCwgNDQsIDQ1LCAyNDYsIDE5MiwgNDQsIDQ1LCAyNDcsIAotICAgIDYzLCA0NCwgNDUsIDI0NiwgNzQsIDQ0LCA0NSwgMjQ2LCAyMDEsIDQ0LCA0NSwgMjQ2LCAxMzcsIDQ0LCA0NSwgMjQ3LCA4LCAKLSAgICA0NCwgNDUsIDI0NiwgMTA1LCA0NCwgNDUsIDI0NiwgMjMyLCA0NCwgNDUsIDI0NiwgMTY4LCA0NCwgNDUsIDI0NywgMzksIAotICAgIDQ0LCA0NSwgMjQ2LCA4OSwgNDQsIDQ1LCAyNDYsIDIxNiwgNDQsIDQ1LCAyNDYsIDE1MiwgNDQsIDQ1LCAyNDcsIDIzLCA0NCwgCi0gICAgNDUsIDI0NiwgMTIwLCA0NCwgNDUsIDI0NiwgMjQ3LCA0NCwgNDUsIDI0NiwgMTgzLCA0NCwgNDUsIDI0NywgNTQsIDQ0LCAKLSAgICA0NSwgMjQ2LCA4MSwgNDQsIDQ1LCAyNDYsIDIwOCwgNDQsIDQ1LCAyNDYsIDE0NCwgNDQsIDQ1LCAyNDcsIDE1LCA0NCwgNDUsIAotICAgIDI0NiwgMTEyLCA0NCwgNDUsIDI0NiwgMjM5LCA0NCwgNDUsIDI0NiwgMTc1LCA0NCwgNDUsIDI0NywgNDYsIDQ0LCA0NSwgCi0gICAgMjQ2LCA5NiwgNDQsIDQ1LCAyNDYsIDIyMywgNDQsIDQ1LCAyNDYsIDE1OSwgNDQsIDQ1LCAyNDcsIDMwLCA0NCwgNDUsIAotICAgIDI0NiwgMTI3LCA0NCwgNDUsIDI0NiwgMjU0LCA0NCwgNDUsIDI0NiwgMTkwLCA0NCwgNDUsIDI0NywgNjEsIDQ0LCA0NSwgCi0gICAgMjQ2LCA3NywgNDQsIDQ1LCAyNDYsIDIwNCwgNDQsIDQ1LCAyNDYsIDE0MCwgNDQsIDQ1LCAyNDcsIDExLCA0NCwgNDUsIAotICAgIDI0NiwgMTA4LCA0NCwgNDUsIDI0NiwgMjM1LCA0NCwgNDUsIDI0NiwgMTcxLCA0NCwgNDUsIDI0NywgNDIsIDQ0LCA0NSwgCi0gICAgMjQ2LCA5MiwgNDQsIDQ1LCAyNDYsIDIxOSwgNDQsIDQ1LCAyNDYsIDE1NSwgNDQsIDQ1LCAyNDcsIDI2LCA0NCwgNDUsIAotICAgIDI0NiwgMTIzLCA0NCwgNDUsIDI0NiwgMjUwLCA0NCwgNDUsIDI0NiwgMTg2LCA0NCwgNDUsIDI0NywgNTcsIDQ0LCA0NSwgCi0gICAgMjQ2LCA4NCwgNDQsIDQ1LCAyNDYsIDIxMSwgNDQsIDQ1LCAyNDYsIDE0NywgNDQsIDQ1LCAyNDcsIDE4LCA0NCwgNDUsIAotICAgIDI0NiwgMTE1LCA0NCwgNDUsIDI0NiwgMjQyLCA0NCwgNDUsIDI0NiwgMTc4LCA0NCwgNDUsIDI0NywgNDksIDQ0LCA0NSwgCi0gICAgMjQ2LCA5OSwgNDQsIDQ1LCAyNDYsIDIyNiwgNDQsIDQ1LCAyNDYsIDE2MiwgNDQsIDQ1LCAyNDcsIDMzLCA0NCwgNDUsIAotICAgIDI0NiwgMTMwLCA0NCwgNDUsIDI0NywgMSwgNDQsIDQ1LCAyNDYsIDE5MywgNDQsIDQ1LCAyNDcsIDY0LCA5NSwgMjE2LCAyNCwgCi0gICAgNzYsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDUxLCA3NiwgMiwgNzEsIDkwLCAKLSAgICA5NSwgNTEsIDc2LCAyLCA3MSwgOTAsIDQyLCA0NiwgNTEsIDc2LCAyLCA3MSwgOTAsIDk1LCAyMTYsIDI0LCA3NiwgMjQzLCAKLSAgICAyMTMsIDEzNCwgMTMyLCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDk1LCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDI0NiwgNTgsIAotICAgIDc2LCAyLCAxOTksIDkwLCAyMTUsIDEyNCwgNzYsIDIsIDE5OSwgOTAsIDIxNSwgMTI0LCAyMTYsIDE2OSwgNjgsIDI0NiwgCi0gICAgNTgsIDIxNiwgMTY5LCA2OCwgMTMyLCA1MSwgMjQ4LCAxMDIsIDY4LCA5NSwgNTEsIDI0OCwgMTAyLCA2OCwgMTMyLCAyMTYsIAotICAgIDE2OSwgMjQ4LCAxMDIsIDY4LCA5NSwgMjE2LCAxNjksIDI0OCwgMTAyLCA2OCwgOTUsIDIxNiwgMjQsIDIxNiwgMTY5LCAKLSAgICAyNDgsIDEwMiwgNjgsIDk1LCA3NiwgMiwgMjQ2LCA3MiwgMjE5LCA3OSwgMjE1LCAxMjQsIDc2LCAyMTEsIDIxMSwgMTM0LCAKLSAgICAyNDYsIDU4LCA3NiwgMjExLCAyMTEsIDEzNCwgOTUsIDc2LCAyLCAyMTgsIDI4LCAyLCA3MSwgOTAsIDk1LCA3NiwgMiwgCi0gICAgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI3LCA5NSwgMjE2LCAyNCwgNzYsIDIsIAotICAgIDIxOCwgMjgsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDI1MywgCi0gICAgMTY2LCA5NSwgMjUzLCAxNjYsIDEzMiwgNTEsIDI1MywgMTY2LCA5NSwgNTEsIDI1MywgMTY2LCAxMzIsIDc2LCAyMTEsIAotICAgIDIxMSwgODMsIDI0NywgMjAwLCA5NSwgNzYsIDIxMSwgMjExLCA4MywgMjQ3LCAyMDAsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAyNTIsIDYwLCAyMTEsIDIxMSwgODMsIDI0NywgMjAwLCA5NSwgNzYsIDI0MywgMjEzLCAyNTIsIDYwLCAyMTEsIDIxMSwgODMsIAotICAgIDI0NywgMjAwLCAyMjgsIDE2NywgMjEzLCAyNTAsIDI0LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAKLSAgICAxNzYsIDI0LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyLCAxMDEsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNzYsIDIsIDEwMSwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMiwgMTAxLCAyMTksIDIxNSwgMjEzLCAKLSAgICAyNTAsIDc2LCAyLCAxMDEsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDI0LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyMjgsIAotICAgIDE2NywgMjQ1LCAxNzYsIDc2LCAyNCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgCi0gICAgMjQsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNzYsIDI0LCAyMjgsIDE2NywgMjEzLCAKLSAgICAyNTAsIDY4LCAyMjMsIDEyNSwgMjQ3LCAyMDcsIDI0OSwgNjUsIDI0NCwgMTQzLCAyNDcsIDIwNiwgMjQ0LCAxNDMsIDI0NywgCi0gICAgMjA3LCAyNDksIDY1LCAyMjMsIDEyNSwgMjQ3LCAyMDYsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIDIxOSwgMjE1LCAyNDUsIDE3NiwgCi0gICAgNjgsIDI0NCwgMTQzLCAyNDcsIDIwNywgMjQ5LCA2NSwgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMjIzLCAxMjUsIDI0NywgCi0gICAgMjA3LCAyNDksIDY1LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDc2LCAyNDksIDY1LCAKLSAgICAyMjgsIDE2NywgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyNDksIDY1LCAyMjgsIDE2NywgMjQ1LCAKLSAgICAxNzYsIDY4LCAyMTQsIDIwLCA3NiwgMjI1LCAxNDEsIDI0NywgMTQ3LCAyMjMsIDE0OCwgNzYsIDIyNSwgMTQxLCA5NSwgCi0gICAgMjE3LCAxNDEsIDI0OSwgMzIsIDIxNSwgMTIzLCA3NiwgMjI1LCAxNDEsIDk1LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjQ2LCAKLSAgICA1NywgNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjMzLCA2MSwgNzYsIDIyNSwgMTQxLCAyNDYsIAotICAgIDU4LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjIzLCAxMzgsIDIyMywgMTQxLCAyNTMsIDE5NiwgMjQ5LCAxOTUsIDY4LCAyMzMsIAotICAgIDY0LCAyNTMsIDE5NiwgMjUzLCAyNTUsIDY4LCAyMTYsIDIyNywgMjUzLCAxOTYsIDI1MywgMjU1LCA2OCwgMjUxLCAxMDEsIAotICAgIDI1MywgMTk2LCAyNTMsIDI1NSwgNjgsIDIxNiwgMjI3LCAyNTMsIDE5NiwgMjQ5LCAxOTUsIDc2LCAyLCAyMzAsIDI1MCwgCi0gICAgMjE2LCAyMjcsIDI1MywgMTk2LCAyNTMsIDI1NSwgNzYsIDIsIDIyNSwgMTU2LCAyMzIsIDE2MywgNDYsIDIyMSwgNzIsIAotICAgIDI0OSwgMTk1LCA2OCwgMjMyLCAxNjMsIDQyLCAyMjEsIDcyLCAyNTMsIDI1NSwgNjgsIDI1MywgMjU1LCAyNDksIDE5MywgCi0gICAgMjQ5LCAyMjksIDY4LCAyNDksIDE5NSwgMjQ5LCAxOTMsIDI0OSwgMjI5LCA2OCwgOTUsIDc2LCA3OCwgMjIwLCAxNzUsIAotICAgIDEzMiwgNjgsIDEzMiwgNzYsIDc4LCAyMjAsIDE3NSwgOTUsIDY4LCAyMjAsIDE3NSwgOTUsIDc2LCA3OCwgMTMyLCA2OCwgCi0gICAgOTUsIDc2LCAyLCA5NCwgNTUsIDEzMiwgNzYsIDIsIDk0LCA1NSwgOTUsIDc2LCAyMTcsIDkzLCAyMTMsIDE2NiwgNDIsIDQ2LCAKLSAgICA3NiwgMjE3LCA5MywgMywgMjQ5LCAyMjgsIDIxNSwgMTI0LCAyMTYsIDI0LCA3NiwgMjQzLCAyMTMsIDMsIDI0OSwgMjI4LCAKLSAgICA0MiwgMjA2LCAxMTQsIDQ2LCAyMDYsIDExOSwgMjQxLCAyMzcsIDQyLCAyMDYsIDExOSwgNDYsIDIwNiwgMTE0LCAyNDEsIAotICAgIDIzNywgMTE0LCAyMDYsIDQ2LCAxMTksIDIwNiwgNDIsIDI0MSwgMjM3LCAxMTQsIDIwNiwgNDIsIDExOSwgMjA2LCA0NiwgCi0gICAgMjQxLCAyMzcsIDQyLCAyMDYsIDExNCwgNDYsIDIwNiwgMTE0LCAyNDEsIDIzNywgMTE0LCAyMDYsIDQ2LCAxMTksIDIwNiwgCi0gICAgNDYsIDI0MSwgMjM3LCA0MiwgMjA2LCAxMTksIDQ2LCAyMDYsIDExOSwgMjQxLCAyMzcsIDExNCwgMjA2LCA0MiwgMTE5LCAKLSAgICAyMDYsIDQyLCAyNDEsIDIzNywgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDIxMSwgMjExLCAxMzQsIDk1LCAyNDEsIAotICAgIDIzOCwgMiwgMjA2LCAxMTQsIDIxMSwgMjExLCAxMzQsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjExLCAKLSAgICAyMTEsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDIxMSwgMjExLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIAotICAgIDIwNiwgMTE5LCAyMTEsIDIxMSwgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyMTEsIDIxMSwgMTM0LCAyMTUsIAotICAgIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDIxMSwgMjExLCAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAKLSAgICAyMTEsIDIxMSwgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgMjQzLCAyMTMsIDEzNCwgOTUsIDI0MSwgMjM4LCAKLSAgICAyLCAyMDYsIDExNCwgMjQzLCAyMTMsIDEzNCwgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyNDMsIDIxMywgCi0gICAgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjQzLCAyMTMsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAxMTksIDI0MywgMjEzLCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI0MywgMjEzLCAxMzQsIDIxNSwgMTI0LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjQzLCAyMTMsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI0MywgCi0gICAgMjEzLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAKLSAgICAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMjIzLCAxNDgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgCi0gICAgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIAotICAgIDE0OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMzQsIDEzMiwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCA3OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIDk1LCAyNDEsIDIzOCwgCi0gICAgMiwgMjA2LCAxMTQsIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMTE5LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIAotICAgIDE4NCwgMjQ4LCAxMDEsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyNTEsIDIyMCwgMTg0LCAyNDgsIDEwMSwgOTUsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDE4NCwgMjQ4LCAxMDEsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI1MSwgCi0gICAgMjIwLCAxODQsIDI0OCwgMTAxLCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyNDYsIDU4LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDE0OCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyMTUsIAotICAgIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxNDgsIDQ2LCA1MSwgNzYsIDIsIDIyMywgODUsIDI0MSwgMjE5LCAyNDUsIAotICAgIDYxLCA1LCA3OCwgOTUsIDY4LCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgOTUsIDY4LCAxMzIsIDc2LCA3OCwgMjE3LCA0MywgCi0gICAgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIAotICAgIDIzMywgMzksIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCAyMTcsIDkzLCAyMzMsIDM4LCAyNDIsIDEwNywgNzgsIDk1LCA2OCwgCi0gICAgMjE5LCA5LCA3OCwgOTUsIDY4LCAxMzIsIDc2LCAyMTcsIDkzLCAyMTksIDgsIDIxOCwgMjIyLCA3OCwgMTMyLCA2OCwgNDIsIAotICAgIDI0NCwgNjAsIDIxOCwgMjcsIDQ2LCAyNDQsIDYwLCAyMTgsIDI3LCAxMTQsIDI0NCwgNjAsIDIxOCwgMjcsIDExOSwgMjQ0LCAKLSAgICA2MCwgMjE4LCAyNywgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCAyNDgsIDExLCAyMTIsIDE1MywgMTc0LCAyMTksIDE3NCwgCi0gICAgMjEyLCAxNTMsIDE3NCwgMjE2LCAxNSwgMjQ5LCAxNjQsIDQyLCA2NywgMjQ5LCA0MCwgMTI1LCA0NiwgNjcsIDI0OSwgNDAsIAotICAgIDEyNSwgNDIsIDY3LCAyMjYsIDEzMSwgNDYsIDY3LCAyMjYsIDEzMSwgMjEyLCAxNTMsIDE3NCwgNDIsIDIzNiwgMTAsIDEyNSwgCi0gICAgMjEyLCAxNTMsIDE3NCwgNDYsIDIzNiwgMTAsIDEyNSwgMjEyLCAxNTMsIDE3NCwgNDIsIDI1MSwgMTY1LCAxMjUsIDIxMiwgCi0gICAgMTUzLCAxNzQsIDQ2LCAyNTEsIDE2NSwgMTI1LCA0MiwgNDEsIDI1MSwgODUsIDIsIDIxNSwgMTUzLCA0NiwgNDEsIDI1MSwgCi0gICAgODUsIDIsIDIxNSwgMTUzLCA0MiwgNDEsIDI1MSwgODUsIDIsIDIxNywgNjksIDIzNSwgMjUyLCAyMTYsIDIyNywgMjQ5LCAKLSAgICA5OSwgNDYsIDQxLCAyNTEsIDg1LCAyLCAyMTcsIDY5LCAyMzUsIDI1MiwgMjUxLCAxMDEsIDI0OSwgOTksIDQyLCA0MSwgCi0gICAgMjUxLCA4NSwgMiwgMjE3LCA2OSwgMjM1LCAyNTIsIDI1MSwgMTAxLCAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIsIAotICAgIDIxNywgNjksIDIzNSwgMjUyLCAyMTYsIDIyNywgMjQ5LCA5OSwgNDIsIDI1NCwgMTksIDI1MSwgODUsIDIsIDI0NywgNzQsIAotICAgIDQ2LCAyNTQsIDE5LCAyNTEsIDg1LCAyLCAyNDcsIDc0LCA0MiwgMjUzLCAxOTYsIDIzMywgMzksIDEyNSwgNDYsIDI1MywgCi0gICAgMTk2LCAyNDIsIDEwNywgMTI1LCA1MSwgNDIsIDI1MywgMTk2LCAyNDIsIDEwNywgMTI1LCA1MSwgNDYsIDI1MywgMTk2LCAKLSAgICAyMzMsIDM5LCAxMjUsIDQyLCA4MywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQ2LCA4MywgMjE2LCAyMTksIDIyMCwgCi0gICAgMjMzLCAxMjUsIDI0NiwgNzIsIDI0NCwgMTA0LCA3MSwgMjEyLCAyOCwgMjMyLCAyNDIsIDIzMSwgMTUzLCAyNTQsIDE5LCAKLSAgICAyMjcsIDM1LCAyMzMsIDcwLCA0NiwgMjU0LCAxOSwgMjE0LCAyNDQsIDIsIDIxOSwgMTY2LCAyMzEsIDE1MywgNDYsIDI1NCwgCi0gICAgMTksIDIsIDI0NywgNzQsIDI1NCwgMTksIDIsIDIyMywgNCwgMjM1LCAyMTIsIDI1NCwgMTY0LCAyNTQsIDE4LCAyMTksIAotICAgIDE4NywgMjU0LCAxOSwgMjI3LCAzNSwgMjMzLCA3MCwgMjE5LCAxODcsIDI1NCwgMTksIDIyNywgMzUsIDIxNSwgMTM0LCAKLSAgICAyMTYsIDU4LCAyNTQsIDE4LCAyMjMsIDIwMiwgMjU0LCAxOCwgMjU0LCAxOSwgMiwgMjE1LCAxNTMsIDIyMywgMjAyLCAyNTQsIAotICAgIDE5LCAyLCAyMTUsIDE1MywgMjI3LCAxMTIsIDI1NCwgMTksIDIyNywgMzUsIDIxNSwgMTM0LCAyMjcsIDExMiwgMjU0LCAxOSwgCi0gICAgMjI3LCAzNSwgMjQ2LCA2MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIAotICAgIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTQsIDI0LCAyMjMsIDE0OCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgCi0gICAgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTQsIDI0LCAyMzMsIDcwLCAyMzEsIDE1MywgMjU0LCAKLSAgICAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDExOSwgMjQsIDIyMywgCi0gICAgMTQ4LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAKLSAgICAxNDEsIDExOSwgMjQsIDIzMywgNzAsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgCi0gICAgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgNDYsIDI0LCAyMTUsIDEzNCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIAotICAgIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCA0MiwgMjQsIDIxNSwgMTM0LCAyMzEsIDE1MywgCi0gICAgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDQ2LCAyNCwgCi0gICAgMjQ2LCA2MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIAotICAgIDIyNSwgMTQxLCA0MiwgMjQsIDI0NiwgNjAsIDIyMywgMjAyLCAyNDUsIDExMCwgMjIxLCA0OCwgMjQ1LCAxMTAsIDIyMSwgCi0gICAgNDksIDIsIDIyNiwgMjQ3LCAyNDUsIDExMCwgMjIxLCA0OSwgMiwgMywgMjQ5LCAyMjksIDQ5LCAyNDUsIDExMCwgMjIxLCAKLSAgICA0OSwgMiwgNDYsIDc2LCA0OSwgMjQ1LCAxMTAsIDIyMSwgNDksIDIsIDQyLCA3NiwgNDksIDI0OSwgMjI5LCAyLCAxOTksIAotICAgIDEzNCwgMzYsIDcxLCAxMzQsIDM2LCAyMjYsIDEzNSwgMzYsIDIyMywgMjAzLCAyMTksIDIzMSwgMzYsIDIyNiwgNDcsIDI0OSwgCi0gICAgMjI5LCAyNDcsIDEyNSwgMjUxLCA3LCAxOTksIDI1MiwgNjAsIDI0LCAyMTYsIDIyNywgMTUxLCAyNDcsIDEyNSwgMjUxLCA3LCAKLSAgICA3MSwgMTM0LCAyNDksIDIyOSwgMiwgMjE4LCAyMjQsIDIxMywgMTY2LCAzNiwgMjUzLCAyNTQsIDI0NywgMTIxLCA1MiwgCi0gICAgMTE0LCA3NiwgMjE3LCA5MywgMjQ5LCAyMjgsIDM2LCA2NywgMjUxLCA0MiwgMzYsIDI1MSwgNDIsIDM2LCAyMzMsIDM4LCAKLSAgICAzNiwgMjQyLCAxMDYsIDI0OSwgMjI5LCAyLCAzLCAyNDksIDIyOSwgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgCi0gICAgMjQ5LCAyMjksIDIsIDExNywgMTk5LCAyMTksIDMzLCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCA5MSwgMjIzLCAKLSAgICAxMjUsIDI0NywgMjA3LCAyMjAsIDIzLCA5MSwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyMjAsIDIzLCA5MSwgMjUzLCAxMzIsIAotICAgIDkxLCAzLCAyNDksIDIyOCwgOTEsIDIxOSwgMTY2LCAxMTcsIDIzNSwgNjgsIDIxOSwgMTY0LCAyMTYsIDE4NCwgMiwgNjIsIAotICAgIDQ5LCAyMTYsIDE4NCwgMiwgMjE1LCAxNTMsIDIyMywgNCwgMjM1LCAyNTIsIDIxNiwgMTgzLCAyMTYsIDE4NCwgMiwgMjIxLCAKLSAgICA1NSwgMjUzLCAxMjMsIDI1MSwgMTAwLCA0NiwgMjE2LCAxODQsIDc4LCA0MiwgMjE2LCAxODMsIDQyLCAyMTYsIDE4NCwgCi0gICAgMjUxLCAyMDcsIDcxLCAxMzQsIDcxLCAyNTIsIDYwLCAyNTEsIDIwNywgNDYsIDIxNiwgMTgzLCAyNTEsIDkxLCAyLCA0MiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgMjUxLCA5MSwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDgzLCAyNTEsIDkwLCAyOSwgMiwgNDIsIAotICAgIDE1MSwgMjUxLCAxNDQsIDI5LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgNjcsIDI0MCwgMjIzLCA4MywgMjQwLCAyMjMsIDQyLCAKLSAgICAyMTMsIDIyOSwgMjQ0LCAxMDQsIDQ2LCAyMTMsIDIyOSwgMjQ0LCAxMDQsIDQyLCA1MSwgMjEzLCAyMjksIDI0NCwgMTA0LCAKLSAgICA0NiwgNTEsIDIxMywgMjI5LCAyNDQsIDEwNCwgMjM1LCAyNDQsIDIzNSwgMjMxLCAyMTcsIDY2LCAxMTAsIDIzNSwgMjMxLCAKLSAgICAyMzUsIDIzMiwgMjI5LCAxODMsIDIsIDcxLCAxMzQsIDI0NiwgNjYsIDIzMCwgMTU3LCA0MSwgMiwgMjQ5LCAxMjAsIDIyNiwgCi0gICAgMjUxLCAyMzUsIDI0MiwgMjUzLCAxNTIsIDIyMCwgMTQ0LCAyMjUsIDYzLCAyNDUsIDYxLCA1LCAyNCwgMjIwLCAyNSwgMjI2LCAKLSAgICAxMzUsIDI0NSwgNjEsIDUsIDI0LCAyMjAsIDI1LCAyMjYsIDEzNiwgMiwgMjE3LCA0MywgNDksIDI0MCwgOTcsIDIxMSwgCi0gICAgMjExLCAyNCwgMjIwLCAyNSwgMjI2LCAxMzUsIDI0MiwgMTU5LCAyMTksIDk0LCAyMTcsIDEzOCwgMjQ2LCA1OSwgMjE2LCAKLSAgICAxODQsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDYsIDU5LCAyMTYsIDE4NCwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDgzLCAKLSAgICAyNDcsIDIwMSwgMiwgMTE5LCA2OCwgODMsIDIzMiwgMTU5LCA2NywgMjQ5LCAyMjksIDIsIDExOSwgNjgsIDgzLCAyNDksIAotICAgIDIyOSwgMiwgMTE5LCA2OCwgMjQ1LCA0OCwgNjcsIDIxOSwgMTY2LCAyNDUsIDQ4LCA4MywgMjE5LCAxNjYsIDI0NSwgNDgsIAotICAgIDY3LCAyNDcsIDIwMCwgMjQ1LCA0OCwgODMsIDI0NywgMjAwLCAyNDUsIDQ4LCA2NywgMjQ5LCAyMjgsIDI0NSwgNDgsIDgzLCAKLSAgICAyNDksIDIyOCwgMjIzLCA0MywgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjcsIDMzLCAyMTksIDIzMiwgMiwgMjI2LCAyNDcsIAotICAgIDIyMywgMjAzLCAyMTksIDIzMiwgMiwgMTk5LCA5MCwgMjUxLCAxNzIsIDIxOSwgMjMxLCAyNTEsIDE3MiwgMjIzLCAyMDMsIAotICAgIDIxOSwgMjMxLCA1MSwgMjI1LCAxNTYsIDIxNiwgMTY5LCAyMjUsIDE1NiwgMjMzLCA2NiwgMjQ5LCAzMywgMjU0LCAxOSwgCi0gICAgMTI1LCAyMjMsIDE0NCwgMjQ5LCAzMywgMjU0LCAxOSwgMTI1LCAyMTcsIDMxLCAyMzAsIDI0OCwgMjMwLCA5NywgMzYsIDYyLCAKLSAgICAyMjcsIDMzLCAyMzAsIDk3LCAzNiwgOTQsIDIyNywgMzMsIDIzMCwgOTcsIDM2LCAyOSwgMjI3LCAzMywgMjMwLCA5NywgCi0gICAgMjE1LCAxNDcsIDIyNywgMzQsIDIsIDI0NywgNzQsIDIzMCwgOTcsIDIxNSwgMTQ3LCAyMjcsIDM0LCAyLCAyMjUsIDE1NiwgCi0gICAgMjMwLCA5NywgNDEsIDIzNSwgMTk2LCAyMjcsIDMzLCAyMzAsIDk3LCA0MSwgMjE1LCAxNDcsIDIyNywgMzMsIDExNywgMjMyLCAKLSAgICAxOTksIDI0LCAyMjcsIDMzLCAxMTcsIDIzMiwgMTk5LCAxNjcsIDIyNywgMzMsIDIzMCwgOTcsIDI5LCAyMjcsIDMzLCAyMzAsIAotICAgIDIyNCwgMTE3LCAyMTgsIDI0NCwgMjE4LCAyNDIsIDIsIDIzNSwgMjA4LCAyMjQsIDE2OSwgMjM1LCAyMDksIDIyNywgMzMsIAotICAgIDI0NCwgNjgsIDIyNiwgMTI3LCAyMzUsIDIwOCwgMjM1LCAyMDksIDIsIDUxLCA5MCwgMjM1LCAyMDksIDI1MywgODksIDIsIAotICAgIDIyMCwgMjMsIDI0OSwgMjI1LCAyNDMsIDE5NywgMjUzLCAyNTUsIDIzNSwgMjA2LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIsIAotICAgIDIyNCwgOCwgMjI2LCAxMTAsIDI1MywgMTczLCAyMjUsIDEzNSwgMjMyLCAyNDMsIDIzNSwgMjA3LCAyLCAyMjEsIDcyLCAKLSAgICAyMjYsIDExMCwgMjUzLCAxNzMsIDIyNSwgMTM1LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIyOCwgMTYzLCAyMzUsIDI0NiwgCi0gICAgMjE3LCAxNDksIDIyNSwgMTM1LCAyMzUsIDIwOSwgMjUzLCAxNzMsIDExOCwgMjI1LCAxNDUsIDIyNywgMzMsIDIyNCwgMTYzLCAKLSAgICAyMzUsIDIwOSwgMjI3LCAzMywgMjM1LCAyMDksIDIsIDEzMiwgNzYsIDIsIDEwMSwgMjM1LCAyMDksIDIsIDI5LCA1MiwgCi0gICAgMjM1LCAyMDksIDIsIDIzNSwgMTk1LCAyMzUsIDIwOSwgMiwgMjE1LCAxNDYsIDIzNSwgMjA5LCAyLCAyMjYsIDI0NywgMjM1LCAKLSAgICAyMDksIDIsIDIxNSwgMTUzLCAyMzUsIDY5LCAyMzMsIDEwOCwgNDIsIDIxNiwgMTg0LCAyMjcsIDMzLCAyMTIsIDE1MywgCi0gICAgMTc0LCAyMjIsIDExOSwgMjQ5LCAxNDgsIDIxMiwgMTUzLCAxNzQsIDIyMiwgMTE5LCAyMjUsIDE4OCwgMjEyLCAxNTMsIAotICAgIDE3NCwgMjIyLCAxMTksIDIyNSwgNjAsIDk0LCA1LCAyLCAzLCAyNDksIDIyOSwgNDksIDk0LCA1LCAyLCAyNDksIDIyNCwgCi0gICAgMjU0LCAxNzUsIDQ5LCA5NCwgNSwgMiwgMjE3LCA0MywgNDksIDk0LCA1LCAyLCA2MiwgNTUsIDk0LCA1LCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgOTQsIDUsIDIsIDIxOSwgMTAsIDEwOSwgOTQsIDUsIDIsIDgzLCAyMTYsIDE4MywgMjMwLCAyNTEsIDUsIDIsIDI0OSwgCi0gICAgMTU4LCA0OSwgMjMwLCAyNTEsIDUsIDIsIDYyLCA1NSwgMjMwLCAyNTEsIDUsIDIsIDI0NCwgMTQzLCAyNDcsIDcyLCAyMzAsIAotICAgIDI1MSwgNSwgMiwgMjIzLCAxMjUsIDI0NywgNzIsIDk0LCA1LCAyMzUsIDI1MiwgNDIsIDE1MSwgMjQ5LCAyMjgsIDk0LCA1LCAKLSAgICAyMzUsIDI1MiwgNDYsIDE1MSwgMjQ5LCAyMjgsIDIxNCwgMjMxLCAxNjcsIDI0OSwgNzEsIDIyNSwgNjMsIDIzMCwgMTU0LCAKLSAgICA1LCAyLCA2MiwgNDksIDIzMCwgMTU0LCA1LCAyLCAyMTUsIDE1MywgMjIxLCA2OSwgMjI1LCA2NCwgMiwgMjUxLCAxMDEsIAotICAgIDI0OSwgMTkyLCAyMjAsIDUsIDIyNSwgNjMsIDIzMCwgMTU0LCA1LCAyMzUsIDI1MiwgNDIsIDE1MSwgMjQ5LCAyMjgsIDIzMCwgCi0gICAgMTU0LCA1LCAyMzUsIDI1MiwgNDYsIDE1MSwgMjQ5LCAyMjgsIDM2LCAyMzAsIDE1NCwgNSwgMiwgMjQ5LCAyMjQsIDI1NCwgCi0gICAgMTc0LCAyMzAsIDE1NCwgNSwgMjM1LCAyNTIsIDUxLCAyNDksIDIyOCwgMzYsIDI0NywgMTIxLCA1MiwgOTQsIDUsIDIzNSwgCi0gICAgMjUyLCAyMTYsIDE4MywgMjMwLCAyNTEsIDUsIDIzNSwgMjUyLCAyMTYsIDE4MywgMjMwLCAxNTQsIDUsIDIzNSwgMjUyLCAKLSAgICAyMTYsIDE4MywgMjM1LCAyMDMsIDIyNSwgNjMsIDIyMywgMTM5LCAyMzUsIDIwMywgMjI1LCA2MywgMjEyLCAxNTMsIDE3NCwgCi0gICAgMjIzLCAyNDAsIDI0OSwgMTQ4LCAyNTQsIDQzLCAxNjcsIDI0OSwgMTA0LCAyMzUsIDE5NiwgMiwgMjQ3LCA3NCwgMjE1LCAKLSAgICAxNDcsIDIsIDIzMCwgMjUxLCA1MiwgMjE1LCAxNDcsIDIsIDIyNiwgMjQ3LCAyMzUsIDE5NiwgMiwgMjI2LCAyNDcsIDIzNSwgCi0gICAgMTk2LCAyLCAyMzIsIDE5OSwgMjU0LCAyNywgMjE1LCAxNDcsIDIsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMTUsIDE0NywgNzgsIAotICAgIDIzNSwgMTk1LCAyMzUsIDE5NiwgNzgsIDIxNSwgMTQ2LCAyMTUsIDE0NywgNzgsIDI1MiwgNjAsIDc4LCAyMzUsIDE5NSwgCi0gICAgMjM1LCAxOTYsIDc4LCAyNTIsIDYwLCA3OCwgMjE1LCAxNDYsIDIxNSwgMTQ3LCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIDIsIAotICAgIDIxNSwgMTQ2LCAyMzUsIDE5NiwgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAyLCAyMzUsIDE5NSwgMjQ5LCAxOTMsIDIxNSwgCi0gICAgMTQ3LCAyLCAyMjEsIDU0LCAyNDksIDE5MywgMjM1LCAxOTYsIDIsIDIyMSwgNTQsIDUxLCA0MSwgMjM1LCAxOTUsIDUxLCAKLSAgICA0MSwgMjE1LCAxNDYsIDI0OSwgMTkzLCAyMTUsIDE0NywgMiwgMjIxLCA1NSwgMjQsIDIyMCwgNSwgMjI1LCA2MywgMjMyLCAKLSAgICAxOTksIDI0LCAyLCA2MiwgNDksIDIzMiwgMTk5LCAxNjcsIDIsIDYyLCA0OSwgNTEsIDIzMiwgMTk5LCAyNTQsIDI3LCA1MSwgCi0gICAgMjMyLCAxOTksIDIyNywgMjQsIDExNywgMjM1LCAxOTcsIDIzMiwgMTk5LCAyNTQsIDI3LCAxMTcsIDIzNSwgMTk3LCAyMzIsIAotICAgIDE5OSwgMjI3LCAyNCwgMjIwLCAxMywgMjMzLCAxMDgsIDIyNywgMjQsIDIyMCwgMTMsIDIzMywgMTA4LCAyNTQsIDI3LCAKLSAgICAyMzIsIDE5OSwgMTY3LCAyMjYsIDI0NSwgMjMyLCAxOTksIDI1NCwgMjcsIDIzMiwgMTk5LCAyNCwgMiwgMjMxLCAzNywgCi0gICAgMjE5LCA3OSwgMjMyLCAxOTksIDE2NywgMiwgMjMxLCAzNywgMjE5LCA3OSwgMjMyLCAxOTksIDI0LCAyLCAxOTksIDI0OCwgCi0gICAgMTAxLCAyMzIsIDE5OSwgMTY3LCAyLCAxOTksIDI0OCwgMTAxLCAyMzIsIDE5OSwgMjQsIDIsIDUxLCAyMjYsIDI0NywgMjMyLCAKLSAgICAxOTksIDI0LCAyLCAyMTUsIDE1MywgMjMyLCAxOTksIDI0LCAyLCA1MSwgMjE1LCAxNTMsIDMsIDIxNCwgMjI4LCAyLCAyMTUsIAotICAgIDE1MywgMjMyLCAxOTksIDE2NywgMiwgNTEsIDIyNiwgMjQ3LCAyMzIsIDE5OSwgMTY3LCAyLCA1MSwgMjE1LCAxNTMsIDIxMiwgCi0gICAgMTUzLCAxNzQsIDI0NywgODMsIDI1MywgMjQ2LCAyMTIsIDE1MywgMTc0LCAyMjQsIDQwLCAyNTMsIDI0NiwgMjQ1LCA2MSwgCi0gICAgNSwgMiwgNjIsIDU1LCAyNDAsIDk3LCAyLCA2MiwgNDksIDIxNiwgMTY5LCAxOTksIDI1MiwgNjAsIDIsIDUxLCA3MSwgOTAsIAotICAgIDIxNiwgMTY5LCAxOTksIDI1MiwgNjAsIDIsIDIxNiwgMTY5LCA3MSwgOTAsIDIxNywgNDMsIDIyNywgMzQsIDIsIDYyLCA0OSwgCi0gICAgMjE3LCA0MywgMjI3LCAzNCwgMiwgMjIzLCAxMjUsIDI0NywgNzIsIDIyMCwgODgsIDIzMCwgMjUxLCAyMjAsIDg3LCAyNDksIAotICAgIDEzOSwgMiwgNjIsIDQ5LCAyNDUsIDYxLCAyLCAyNTMsIDEzMiwgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgMiwgMjQ5LCAKLSAgICAyMjQsIDI1NCwgMTc0LCAyNTMsIDIxOCwgMTIzLCAxNjcsIDEyMywgMTA4LCAyNDUsIDYxLCA1LCA3OCwgOTQsIDUyLCA5NCwgCi0gICAgNSwgNzgsIDI0NSwgNjEsIDUyLCAyNDUsIDYxLCA1LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgNTEsIDI0OSwgMTY1LCAyNDUsIAotICAgIDYyLCAxMTcsIDI0OSwgMTM0LCAyNDUsIDYxLCAyMjAsIDEwMiwgMTMzLCAyNDksIDEzNCwgMjQ1LCA2MSwgMjIwLCAxMDIsIAotICAgIDI0NSwgNjEsIDUsIDIsIDExNywgMTc2LCA3OCwgMjQsIDExNywgMTc2LCA1NSwgMjQ1LCA1NywgMiwgMjQzLCAyMzcsIDE3NiwgCi0gICAgNDksIDIzMywgMzksIDIsIDI0OSwgMjI5LCAyMzUsIDIxMiwgMjQyLCAxMDcsIDIsIDI0OSwgMjI5LCAyMzUsIDIxMiwgMjMzLCAKLSAgICAzOSwgMiwgMjI0LCAxNTgsIDE1MiwgNDksIDI0MiwgMTA3LCAyLCAyMjQsIDE1OCwgMTUyLCA0OSwgMjMzLCAzOSwgMTY3LCAKLSAgICAyMjAsIDI1LCAxMjMsIDEwOCwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAxMDgsIDIzMywgMzksIDE2NywgMjIwLCAKLSAgICAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDIzNSwgMjEyLCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgCi0gICAgMjExLCAyLCA2MiwgMjM1LCAyMTIsIDIzMywgMzksIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAKLSAgICAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIDIzMywgMzksIDE2NywgMjIwLCAyNSwgCi0gICAgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDc4LCAyMjMsIDE0OCwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIAotICAgIDIxMSwgMiwgNjIsIDc4LCAyMzMsIDcwLCAyMzMsIDM5LCAxNjcsIDI1MywgMjE5LCAyNDIsIDEwNywgMTY3LCAyNTMsIDIxOSwgCi0gICAgMjMzLCAzOSwgMjQsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDI0LCAyMjAsIDc5LCAyMjgsIAotICAgIDE2MywgMTIzLCAxMDgsIDIzMywgMzksIDI0LCAyMjgsIDE2MywgMjUzLCAyMTksIDI0MiwgMTA3LCAyNCwgMjI4LCAxNjMsIAotICAgIDI1MywgMjE5LCAyMzMsIDM5LCA3OCwgMjQ2LCA2NSwgMTIzLCA3OCwgMjQyLCAxMDYsIDI0MiwgMTA3LCA3OCwgMjQ2LCA2NSwgCi0gICAgMTIzLCA3OCwgMjMzLCAzOCwgMjMzLCAzOSwgNzgsIDIyMCwgODgsIDE2NywgMjQ1LCA2MiwgMjQyLCAxMDcsIDc4LCAyMjAsIAotICAgIDg4LCAxNjcsIDI0NSwgNjIsIDIzMywgMzksIDc4LCAyMjAsIDg4LCA3OCwgMjQyLCAxMDYsIDI0MiwgMTA3LCA3OCwgMjIwLCAKLSAgICA4OCwgNzgsIDIzMywgMzgsIDIzMywgMzksIDc4LCAyNDIsIDEwNywgNzgsIDI0NiwgNjUsIDI0NSwgNjIsIDI0MiwgMTA3LCAKLSAgICA3OCwgMjMzLCAzOSwgNzgsIDI0NiwgNjUsIDI0NSwgNjIsIDIzMywgMzksIDc4LCAyMjAsIDI1LCAxMjMsIDc4LCAyNDIsIAotICAgIDEwNywgNzgsIDIyMCwgMjUsIDI0NSwgNjIsIDI0MiwgMTA3LCA3OCwgMjIwLCAyNSwgMTIzLCA3OCwgMjMzLCAzOSwgNzgsIAotICAgIDIyMCwgMjUsIDI0NSwgNjIsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMjIwLCAyNSwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM5LCAyLCA2MiwgCi0gICAgMjM1LCAyMTIsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDcsIDIsIDYyLCAyMzUsIDIxMiwgMjQ2LCAKLSAgICA2NSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAyNDYsIDY1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAKLSAgICAyNDYsIDY1LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDI0NiwgNjUsIDIyMCwgMjUsIDEyMywgCi0gICAgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDIyMCwgODgsIDE2NywgMjMzLCAzOCwgMjIwLCA4OCwgMTY3LCAyNDIsIDEwNiwgCi0gICAgMjIwLCA4OCwgNzgsIDIzMywgMzksIDc4LCAyNDUsIDYxLCA1MiwgMjIwLCA4OCwgNzgsIDI0MiwgMTA3LCA3OCwgMjQ1LCAKLSAgICA2MSwgNTIsIDUxLCAyMjksIDE3MywgMjMzLCAzOCwgNTEsIDIyOSwgMTczLCAyNDIsIDEwNiwgNTEsIDIyOSwgMTczLCAyMzMsIAotICAgIDM5LCAyLCAyMTUsIDE1MywgMjQyLCAxMDcsIDIyNiwgMjQ1LCAyMzMsIDM4LCAyNDIsIDEwNywgMjUxLCAyMDcsIDIzMywgCi0gICAgMzgsIDIzMywgMzksIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzQsIDI0MiwgMTA3LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIAotICAgIDM0LCAyMzMsIDM5LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIDM1LCA3OCwgMjIwLCAyNSwgMjQ1LCA2MiwgMjQyLCAxMDcsIAotICAgIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzUsIDc4LCAyMjAsIDI1LCAyNDUsIDYyLCAyMjAsIDYsIDIxNywgMTUzLCAyMzMsIAotICAgIDEwNiwgMjE3LCAxNTMsIDIyMCwgNiwgMjE3LCAxNTQsIDE2NywgMTIzLCAxMDgsIDIzMywgMTA2LCAyMTcsIDE1NCwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQ1LCA2MSwgNSwgMiwgMjUxLCAzNywgNDksIDIyNSwgODMsIDc4LCAyMjAsIDc5LCAyNDUsIDYxLCA1MiwgCi0gICAgMjE5LCAxLCA3OCwgMjIwLCA3OSwgMjQ1LCA2MSwgNTIsIDIyNSwgODMsIDc4LCAyMjAsIDc5LCAyMjgsIDE2MywgMTIzLCAKLSAgICAxMDgsIDIxOSwgMSwgNzgsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjI1LCA4MywgNzgsIDI0NSwgNjEsIDUyLCAKLSAgICAyMTksIDEsIDc4LCAyNDUsIDYxLCA1MiwgMjI1LCA4MywgNzgsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjE5LCAxLCA3OCwgCi0gICAgMjI4LCAxNjMsIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIDIxOSwgMSwgNzgsIDI1NCwgNTcsIAotICAgIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjI4LCAxNjMsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTksIDEsIDc4LCAyMjgsIDE2MywgCi0gICAgMjU0LCA1NywgMTIzLCAxMDgsIDUxLCAyMjUsIDgyLCA1MSwgMjE5LCAwLCAyMTksIDksIDIsIDI0NywgNzQsIDIxOCwgMjIyLCAKLSAgICAyLCAyNDcsIDc0LCAyMTksIDksIDIsIDk0LCA1LCA1NSwgMjE4LCAyMjIsIDIsIDk0LCA1LCA1NSwgMjE5LCA5LCAyLCAyMzAsIAotICAgIDE1NCwgNSwgNTUsIDIxOCwgMjIyLCAyLCAyMzAsIDE1NCwgNSwgNTUsIDIxOSwgOSwgNjUsIDE2NywgMTIzLCAyMTEsIDIxMSwgCi0gICAgMiwgNjIsIDQ5LCAyMTgsIDIyMiwgNjUsIDE2NywgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAyMTksIDksIDY1LCA3OCwgCi0gICAgMjQ1LCA2MSwgNTIsIDIxOCwgMjIyLCA2NSwgNzgsIDI0NSwgNjEsIDUyLCAyMTksIDksIDY1LCA3OCwgMjE3LCA0MywgMjI3LCAKLSAgICAzMywgMjE4LCAyMjIsIDY1LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgMjE5LCA5LCA2NSwgNzgsIDI1NCwgNTcsIDEyMywgCi0gICAgMTA4LCAyMTgsIDIyMiwgNjUsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE5LCA5LCA2NSwgNzgsIDIyOCwgMTYzLCAxMjMsIAotICAgIDEwOCwgMjE4LCAyMjIsIDY1LCA3OCwgMjI4LCAxNjMsIDEyMywgMTA4LCA0MSwgNDIsIDIyNywgNDAsIDkyLCAyMjcsIDMzLCAKLSAgICA0MSwgNDYsIDIyNywgNDAsIDkyLCAyMjcsIDMzLCAyNDksIDE5MywgMjE5LCA4LCAyNDksIDE5MywgMjE4LCAyMjEsIDI0OSwgCi0gICAgMTkzLCAyMTksIDksIDE2NywgMTIzLCAxMDgsIDI0OSwgMTkzLCAyMTgsIDIyMiwgMTY3LCAxMjMsIDEwOCwgMjE5LCA5LCAKLSAgICA3OCwgMjE4LCAyMjEsIDIxOCwgMjIyLCA3OCwgMjE5LCA4LCAyMTksIDksIDc4LCAyMTksIDgsIDIxOCwgMjIyLCA3OCwgCi0gICAgMjE4LCAyMjEsIDIxOCwgMjIyLCAyNTEsIDIwNywgMjE5LCA4LCAyMTgsIDIyMiwgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAKLSAgICAyNTEsIDcsIDI0OCwgMTAyLCAyLCAyMTksIDgsIDI0NSwgMTI3LCA2NSwgMjI3LCAzNSwgMjQ2LCA1NywgMjI1LCAxODAsIDIsIAotICAgIDIxNywgMjIwLCAyMTYsIDIyNiwgMjE2LCAxOTgsIDIzNSwgMTk1LCAyNDMsIDI0NiwgMjI4LCAxNzYsIDIyMCwgMTc1LCA0MiwgCi0gICAgMjE4LCAzNiwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNiwgMjIwLCAxNzUsIDExNCwgMjE4LCAzNiwgMjI2LCA0OCwgMiwgMTk3LCAKLSAgICA3MSwgMjUyLCA2MCwgMjE2LCAxNjksIDQ2LCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIDQyLCAyMTYsIDU3LCA3MSwgCi0gICAgMjUyLCA2MCwgNTEsIDQyLCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIDUxLCA0MiwgMjE2LCA1NywgMTg0LCAyNDgsIAotICAgIDEwMiwgMjQzLCAyMTMsIDQyLCAyMzEsIDEyNywgNjUsIDUxLCAyMTQsIDIxNiwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNywgMiwgCi0gICAgMjI2LCAyNDcsIDIyMCwgMTc1LCAxMTQsIDIxOCwgMzcsIDIsIDIxNSwgMTUzLCAyMjAsIDE3NSwgMTE0LCAyMTgsIDM3LCAKLSAgICA3OCwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNiwgNTEsIDExOSwgMjE4LCAzNiwgNTEsIDExNCwgMjE4LCAzNiwgNTEsIDIxOSwgCi0gICAgNDUsIDIyOCwgMTYzLCA1MiwgMjIzLCAyMDIsIDUxLCAyMTksIDQ1LCAyMjgsIDE2MywgNTIsIDI0NywgOTIsIDIyOCwgMTYzLCAKLSAgICAyNDcsIDEyNywgMiwgMjIzLCAyMDIsIDIyOSwgMTgyLCAyMjAsIDIzLCA3MSwgMjMyLCAyNDMsIDIsIDI0OSwgMjI5LCA0OSwgCi0gICAgNzEsIDIzMiwgMjQzLCAyLCAyNDksIDIyOSwgNTUsIDExOSwgMjE4LCAzNywgMiwgMjQ5LCAyMjksIDU1LCAyMjYsIDEzNiwgCi0gICAgMiwgMTk5LCA5MCwgMjI2LCAxMzYsIDIsIDIxNywgNDMsIDIyNywgMzMsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgMjUxLCAKLSAgICAxNjcsIDIyMywgMjQxLCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDIsIDE5OSwgOTAsIDIxNiwgMTY5LCAyNDksIDE2NSwgCi0gICAgMjI3LCAzMywgMjE2LCAxNjksIDIyOSwgMTczLCAyMzMsIDM4LCAyMTYsIDE2OSwgMjI5LCAxNzMsIDI0MiwgMTA2LCAyNDYsIAotICAgIDY1LCAyMjAsIDI1LCAyMzMsIDM5LCAxNjcsIDEyMywgMTA4LCAyNDYsIDY1LCAyMjAsIDI1LCAyNDIsIDEwNywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE2LCAxNjksIDIxOSwgMjMyLCAyNTEsIDE2NywgMjIzLCAyNDEsIDIzMywgMTA4LCAyMTYsIDE2OSwgNzEsIAotICAgIDI1MiwgNjAsIDIyNywgMzMsIDUxLCAyMTksIDIzMiwgMjI3LCAzMywgNjcsIDcxLCAxMzQsIDIzMCwgOTcsIDY3LCA3MSwgCi0gICAgMTM0LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY3LCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA2NywgNjgsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNjcsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY3LCA2OCwgNDIsIDQ2LCA2NywgNjgsIDEzMiwgODMsIAotICAgIDY4LCAyMTUsIDEyNCwgODMsIDY4LCAyNDYsIDU4LCA4MywgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgODMsIDY4LCAyMjgsIAotICAgIDE2NywgMjEzLCAyNTAsIDgzLCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA4MywgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgCi0gICAgODMsIDY4LCA0MiwgNDYsIDgzLCA2OCwgMTE0LCAxMTksIDgzLCA2OCwgOTUsIDc2LCAyLCAyMTcsIDMwLCAyNDYsIDU3LCAKLSAgICA5NSwgNzYsIDIsIDIxNywgMzAsIDIxNSwgMTIzLCAxMzIsIDc2LCAyLCAyMTcsIDMwLCAyNDYsIDU3LCAxMzIsIDc2LCAyLCAKLSAgICAyMTcsIDMwLCAyMTUsIDEyMywgNDEsIDIsIDIxNiwgMjI3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjUxLCAxMDEsIDE1MSwgCi0gICAgMjUxLCAxNDQsIDQxLCAyLCAyMTUsIDEzMSwgNDYsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjMyLCAxNjMsIAotICAgIDQyLCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgCi0gICAgNDYsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCAyMTYsIDIyNywgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIAotICAgIDI1MSwgMTAxLCAxNTEsIDI1MSwgMTQ0LCAyNDYsIDcyLCAyMTksIDE2NiwgODMsIDIzMywgMTA4LCAyMTksIDE2NiwgNjcsIAotICAgIDIzMywgMTA4LCAyMTksIDE2NiwgODMsIDIxNCwgMTY0LCAzLCAyMTksIDE2NiwgNjcsIDIxNCwgMTY0LCAzLCAyMTksIDE2NiwgCi0gICAgODMsIDIyNiwgNjUsIDY3LCAyMjYsIDY1LCA2NywgMjQxLCAxNzgsIDgzLCAyNDEsIDE3OCwgMTk5LCA4MywgMjQxLCAxNzgsIAotICAgIDgzLCAyMzMsIDEwOCwgMjQ5LCAyMjgsIDgzLCAyMzEsIDE0NywgMjQ3LCAyMDAsIDY3LCAyMzEsIDE0NywgMjQ3LCAyMDAsIAotICAgIDgzLCAyMzEsIDE0NywgMjMyLCAxNTksIDY3LCAyMzEsIDE0NywgMjMyLCAxNTksIDgzLCAzLCAyNDcsIDIwMCwgODMsIDMsIAotICAgIDIzMiwgMTU5LCA2NywgMywgMjMyLCAxNTksIDgzLCAxOTksIDI0NSwgMTIxLCA2NywgMTk5LCAyNDUsIDEyMSwgODMsIDcxLCAKLSAgICAyNDUsIDEyMSwgNjcsIDcxLCAyNDUsIDEyMSwgNDIsIDc2LCAyLCAzLCAyNDksIDIyOCwgMTMzLCAxMzIsIDI1MywgMTYyLCAKLSAgICA0MiwgNzYsIDIsIDM2LCAyMjUsIDE1NiwgMTg0LCAxMzIsIDIxOSwgMTYyLCA2OCwgMTMyLCAyMTYsIDI0LCA3NiwgMiwgNzEsIAotICAgIDkwLCAxMzIsIDIxNiwgMjQsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDIxNiwgMjQsIDc2LCAyNDMsIDIxMywgMTM0LCAKLSAgICAxMzIsIDIxNiwgMjQsIDIxNiwgMTY5LCAyNDgsIDEwMiwgNjgsIDEzMiwgNzYsIDIsIDI0NiwgNzIsIDIxOSwgNzksIDEzMiwgCi0gICAgNzYsIDIsIDIxOCwgMjgsIDIsIDcxLCA5MCwgMTMyLCA3NiwgMiwgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgMTMyLCAyMTYsIAotICAgIDI0LCA3NiwgMiwgMjE4LCAyNywgMTMyLCAyMTYsIDI0LCA3NiwgMiwgMjE4LCAyOCwgMiwgNzEsIDkwLCAxMzIsIDIxNiwgCi0gICAgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDc2LCAyMTcsIDkzLCAyMTMsIDE2NiwgMjE0LCAyMCwgCi0gICAgNzYsIDIyNSwgMTQxLCAyNDcsIDE0NywgMjMzLCA3MCwgMjQ1LCA2MSwgNSwgNzgsIDEzMiwgNjgsIDIyMywgMjAzLCAyMTcsIAotICAgIDQzLCAyMjcsIDM0LCA3OCwgMTMyLCA2OCwgMTMyLCA3NiwgNzgsIDIyMywgMjAzLCAyNTQsIDU3LCAxMjMsIDEwOCwgOTUsIAotICAgIDc2LCAyMTcsIDkzLCAyNDIsIDEwNiwgOTUsIDc2LCAyMTcsIDkzLCAyMTgsIDIyMSwgMTMyLCAyMjQsIDE2OSwgNjgsIDk1LCAKLSAgICAyMjQsIDE2OSwgNjgsIDIyMywgMjAzLCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgOTUsIDY4LCA5NSwgNzYsIDc4LCAyMjMsIAotICAgIDIwMywgMjU0LCA1NywgMTIzLCAxMDgsIDIxNywgNDMsIDIyNywgMzQsIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCA3OCwgMjU0LCAKLSAgICA1NywgMTIzLCAxMDgsIDEzMiwgNzYsIDc4LCAyMjMsIDIwMywgMjE3LCA0MywgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjIzLCAKLSAgICAyMDMsIDIxNywgNDMsIDIyNywgMzMsIDY3LCAyMzEsIDE0NywgMjE5LCA5NSwgODMsIDMsIDIxOSwgOTUsIDY3LCAzLCAyMTksIAotICAgIDk1LCA4MywgMjIzLCAxNDQsIDIyNiwgNjUsIDY3LCAyMjMsIDE0NCwgMjI2LCA2NSwgMTA3LCAyMzMsIDEwOCwgMjQ5LCAKLSAgICAyMjgsIDEwNywgMjI2LCAyNDgsIDIsIDIyNiwgMjQ4LCAyMzUsIDIxMiwgMTA3LCAyNDksIDIyOSwgMiwgMjQ5LCAyMjksIAotICAgIDIzNSwgMjEyLCAxMDcsIDI0OSwgMjI4LCAxMDcsIDM2LCAyMjIsIDE2OSwgMTM2LCA2LCAxLCAyNTMsIDc1LCAxMzYsIDYsIAotICAgIDEsIDI1MSwgNDYsIDEzNiwgNiwgMSwgMjE0LCAyMzAsIDEzNiwgNiwgMSwgMjQyLCAxNjEsIDEzNiwgNiwgMSwgMjQ3LCA5NCwgCi0gICAgMTM2LCA2LCAxLCAyMTMsIDEyLCAxMzYsIDYsIDEsIDIxMiwgNjEsIDEzNiwgNiwgMSwgMjQ1LCAyNDUsIDEzNiwgNiwgMSwgCi0gICAgMjEyLCA4NCwgMTM2LCA2LCAxLCAyMzUsIDE0NiwgMTM2LCA2LCAxLCA3MCwgMjM1LCAxNDYsIDEzNiwgNiwgMSwgNzIsIAotICAgIDEzNiwgNiwgMSwgMjQ3LCAxMTIsIDEzNiwgNiwgMSwgMjM0LCAyNDUsIDEzNiwgNiwgMSwgMjMyLCAyMTUsIDEzNiwgNiwgMSwgCi0gICAgMjMwLCAxMDEsIDEzNiwgNiwgMSwgMjMwLCAxMiwgMTM2LCA2LCAxLCAyMjcsIDUxLCAxMzYsIDYsIDEsIDIyNSwgMTM4LCAKLSAgICAxMzYsIDYsIDEsIDIyMywgMTI0LCAxMzYsIDYsIDEsIDIyMCwgMTEsIDEzNiwgNiwgMSwgMjE2LCA0NiwgMTM2LCA2LCAxLCAKLSAgICAyMTUsIDE3MSwgMTM2LCA2LCAxLCAyNDMsIDIxNiwgMTM2LCA2LCAxLCAyNDEsIDE4NCwgMTM2LCA2LCAxLCAyMjcsIDMsIAotICAgIDEzNiwgNiwgMSwgMjI2LCA5NiwgMTM2LCA2LCAxLCAyMjAsIDE1MywgMTM2LCA2LCAxLCAyMTYsIDEyNSwgMTM2LCA2LCAxLCAKLSAgICAyNTAsIDEyLCAxMzYsIDYsIDEsIDIyMSwgMjQsIDEzNiwgNiwgMSwgMjEzLCAxOCwgMTM2LCA2LCAxLCAyMTMsIDIwLCAxMzYsIAotICAgIDYsIDEsIDIxMywgNDcsIDEzNiwgNiwgMSwgMjE5LCAxODUsIDE1OSwgMTM2LCA2LCAxLCAyMTIsIDIwMywgMTM2LCA2LCAxLCAKLSAgICAzLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAzLCAyMTIsIDE3NSwgMiwgMjE4LCAyNywgMTM2LCA2LCAxLCAyMTIsIDIzNSwgCi0gICAgMTM2LCA2LCAxLCAyMzUsIDE4MiwgMywgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIDYsIAotICAgIDEsIDIzNSwgMTgyLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMjQ0LCA1MSwgMTM2LCA2LCAxLCAyMzUsIDE0NCwgCi0gICAgMTM2LCA2LCAxLCAyMjAsIDE1MiwgMTM2LCA2LCAxLCAyMTYsIDE2MCwgNjEsIDEzNiwgNiwgMSwgMjMzLCA5OCwgMjMwLCAKLSAgICAxMDEsIDEzNiwgMywgMSwgMjUzLCA3NSwgMTM2LCAzLCAxLCAyNTEsIDQ2LCAxMzYsIDMsIDEsIDIxNCwgMjMwLCAxMzYsIDMsIAotICAgIDEsIDI0MiwgMTYxLCAxMzYsIDMsIDEsIDI0NywgOTQsIDEzNiwgMywgMSwgMjEzLCAxMiwgMTM2LCAzLCAxLCAyMTIsIDYxLCAKLSAgICAxMzYsIDMsIDEsIDI0NSwgMjQ1LCAxMzYsIDMsIDEsIDIxMiwgODQsIDEzNiwgMywgMSwgMjM1LCAxNDYsIDEzNiwgMywgMSwgCi0gICAgNzAsIDIzNSwgMTQ2LCAxMzYsIDMsIDEsIDcyLCAxMzYsIDMsIDEsIDI0NywgMTEyLCAxMzYsIDMsIDEsIDIzNCwgMjQ1LCAKLSAgICAxMzYsIDMsIDEsIDIzMiwgMjE1LCAxMzYsIDMsIDEsIDIzMCwgMTAxLCAxMzYsIDMsIDEsIDIzMCwgMTIsIDEzNiwgMywgMSwgCi0gICAgMjI3LCA1MSwgMTM2LCAzLCAxLCAyMjUsIDEzOCwgMTM2LCAzLCAxLCAyMjMsIDEyNCwgMTM2LCAzLCAxLCAyMjAsIDExLCAKLSAgICAxMzYsIDMsIDEsIDIxNiwgNDYsIDEzNiwgMywgMSwgMjE1LCAxNzEsIDEzNiwgMywgMSwgMjQzLCAyMTYsIDEzNiwgMywgMSwgCi0gICAgMjQxLCAxODQsIDEzNiwgMywgMSwgMjI3LCAzLCAxMzYsIDMsIDEsIDIyNiwgOTYsIDEzNiwgMywgMSwgMjIwLCAxNTMsIAotICAgIDEzNiwgMywgMSwgMjE2LCAxMjUsIDEzNiwgMywgMSwgMjUwLCAxMiwgMTM2LCAzLCAxLCAyMjEsIDI0LCAxMzYsIDMsIDEsIAotICAgIDIxMywgMTgsIDEzNiwgMywgMSwgMjEzLCAyMCwgMTM2LCAzLCAxLCAyMTMsIDQ3LCAxMzYsIDMsIDEsIDIxOSwgMTg1LCAKLSAgICAxNTksIDEzNiwgMywgMSwgMjEyLCAyMDMsIDEzNiwgMywgMSwgMywgMjEyLCAxNzQsIDEzNiwgMywgMSwgMywgMjEyLCAxNzUsIAotICAgIDIsIDIxOCwgMjcsIDEzNiwgMywgMSwgMjEyLCAyMzUsIDEzNiwgMywgMSwgMjM1LCAxODIsIDMsIDIxMiwgMTc0LCAxMzYsIAotICAgIDMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCAzLCAxLCAyMzUsIDE4MiwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIAotICAgIDMsIDEsIDI0NCwgNTEsIDEzNiwgMywgMSwgMjM1LCAxNDQsIDEzNiwgMywgMSwgMjIwLCAxNTIsIDEzNiwgMywgMSwgMjE2LCAKLSAgICAxNjAsIDYxLCAxMzYsIDMsIDEsIDIzMywgOTgsIDIzMCwgMTAxLCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgNTEsIDEzNCwgNywgCi0gICAgMywgMSwgMjMzLCAxNzEsIDIsIDUxLCAxMzQsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCA2LCAKLSAgICAxLCAyMjYsIDIzMCwgMiwgOTAsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAxMTgsIDIsIDkwLCAKLSAgICA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNDcsIDI0NiwgNywgMywgCi0gICAgMSwgMjQyLCA0MiwgMiwgMjQ3LCAyNDYsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMzUsIDI4LCAKLSAgICAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjQ3LCAKLSAgICAyNDYsIDcsIDYsIDEsIDI1NCwgNTIsIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCAxMDEsIDcsIDYsIDEsIDIxNiwgNTgsIDYxLCAKLSAgICA3LCA2LCAxLCAyMTYsIDU4LCAyNTQsIDUyLCA3LCAzLCAxLCAyMTUsIDgwLCAyLCA0NiwgMTAxLCA3LCA2LCAxLCAyMTQsIAotICAgIDgzLCAyLCAxMDEsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDEwMSwgNywgMywgMSwgMjE1LCA4MCwgMiwgMjQ5LCA0MSwgNywgNiwgCi0gICAgMSwgMTUxLCAyNDIsIDQxLCA3LCAzLCAxLCAxNTEsIDI0MiwgNDEsIDcsIDMsIDEsIDIxOCwgMjUsIDIyNiwgOSwgNywgMywgCi0gICAgMSwgMTkxLCAyLCAyMjgsIDE2MSwgNywgMywgMSwgMjE2LCA1OCwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIAotICAgIDE1NywgMiwgMTE1LCAyMjMsIDEzMSwgMjM1LCAyMTIsIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDc0LCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAyMzUsIDE0MiwgNTksIDEsIDYsIDIxNSwgNzksIDcsIDYsIDEsIDIyMywgNCwgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIAotICAgIDYsIDEsIDIxMiwgMTUzLCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNzksIDYsIDEsIDI1NCwgNzMsIDc5LCAzLCAxLCAyNTQsIAotICAgIDczLCA3OSwgNiwgMSwgMjE0LCAxNTEsIDc5LCAzLCAxLCAyMTQsIDE1MSwgNzksIDYsIDEsIDI0MywgODMsIDc5LCAzLCAxLCAKLSAgICAyNDMsIDgzLCA3OSwgNiwgMSwgMjQ4LCAxMzYsIDc5LCAzLCAxLCAyNDgsIDEzNiwgNzksIDYsIDEsIDI0NSwgMTUxLCA3OSwgCi0gICAgMywgMSwgMjQ1LCAxNTEsIDc5LCA2LCAxLCAyMTksIDIyMCwgNzksIDMsIDEsIDIxOSwgMjIwLCA3OSwgNiwgMSwgMjEyLCAKLSAgICA5NCwgNzksIDMsIDEsIDIxMiwgOTQsIDc5LCA2LCAxLCAyNDEsIDIzMSwgNzksIDMsIDEsIDI0MSwgMjMxLCA3OSwgNiwgMSwgCi0gICAgMjE3LCAxMzAsIDc5LCAzLCAxLCAyMTcsIDEzMCwgNzksIDYsIDEsIDI0MCwgMTA5LCA3OSwgMywgMSwgMjQwLCAxMDksIDc5LCAKLSAgICA2LCAxLCAyMzQsIDIzMiwgNzksIDMsIDEsIDIzNCwgMjMyLCA3OSwgNiwgMSwgMjMzLCA5NiwgNzksIDMsIDEsIDIzMywgOTYsIAotICAgIDc5LCA2LCAxLCAyMzEsIDQyLCA3OSwgMywgMSwgMjMxLCA0MiwgNzksIDYsIDEsIDIyOSwgNjQsIDc5LCAzLCAxLCAyMjksIAotICAgIDY0LCA3OSwgNiwgMSwgMjMzLCAyNDIsIDc5LCAzLCAxLCAyMzMsIDI0MiwgNzksIDYsIDEsIDc1LCA3OSwgMywgMSwgNzUsIAotICAgIDc5LCA2LCAxLCAyMjUsIDI0MCwgNzksIDMsIDEsIDIyNSwgMjQwLCA3OSwgNiwgMSwgMjIzLCAxMTIsIDc5LCAzLCAxLCAKLSAgICAyMjMsIDExMiwgNzksIDYsIDEsIDIyMCwgOTEsIDc5LCAzLCAxLCAyMjAsIDkxLCA3OSwgNiwgMSwgMjE3LCAyNDgsIDc5LCAKLSAgICAzLCAxLCAyMTcsIDI0OCwgNzksIDYsIDEsIDIxNSwgMTk2LCA3OSwgMywgMSwgMjE1LCAxOTYsIDc5LCA2LCAxLCAyNDQsIAotICAgIDkwLCA3OSwgMywgMSwgMjQ0LCA5MCwgNzksIDYsIDEsIDIzNCwgMTE4LCA3OSwgMywgMSwgMjM0LCAxMTgsIDc5LCA2LCAxLCAKLSAgICAyMjUsIDQ2LCA3OSwgMywgMSwgMjI1LCA0NiwgNzksIDYsIDEsIDIyNywgNDQsIDc5LCAzLCAxLCAyMjcsIDQ0LCA3OSwgNiwgCi0gICAgMSwgMjQ3LCAyMDUsIDI1NCwgNzgsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjU0LCA3OCwgNzksIDYsIDEsIDUzLCA3OSwgMjU0LCAKLSAgICAxMDMsIDc5LCAzLCAxLCA1MywgNzksIDI1NCwgMTAzLCA3OSwgNiwgMSwgMjQ5LCA1NSwgMjQ1LCAxNTEsIDc5LCAzLCAxLCAKLSAgICAyNDksIDU1LCAyNDUsIDE1MSwgNzksIDYsIDEsIDI0NywgMjA1LCAyMzQsIDIzMiwgNzksIDMsIDEsIDI0NywgMjA1LCAyMzQsIAotICAgIDIzMiwgNzksIDYsIDEsIDI0NywgMjA1LCAyMjksIDY0LCA3OSwgMywgMSwgMjQ3LCAyMDUsIDIyOSwgNjQsIDc5LCA2LCAxLCAKLSAgICAyNDksIDU1LCAyMjksIDY0LCA3OSwgMywgMSwgMjQ5LCA1NSwgMjI5LCA2NCwgNzksIDYsIDEsIDUzLCA3OSwgMjI3LCA0NCwgCi0gICAgNzksIDMsIDEsIDUzLCA3OSwgMjI3LCA0NCwgNzksIDYsIDEsIDIyMiwgMTYxLCA3OSwgMywgMSwgMjIyLCAxNjEsIDc5LCA2LCAKLSAgICAxLCAyNDksIDY4LCAyMjAsIDIzNSwgNzksIDMsIDEsIDI0OSwgNjgsIDIyMCwgMjM1LCA3OSwgNiwgMSwgNTMsIDc5LCAyMjAsIAotICAgIDIzNSwgNzksIDMsIDEsIDUzLCA3OSwgMjIwLCAyMzUsIDc5LCA2LCAxLCA1MywgNzksIDI0NSwgNDAsIDc5LCAzLCAxLCA1MywgCi0gICAgNzksIDI0NSwgNDAsIDc5LCA2LCAxLCAyNTQsIDkwLCAyMzQsIDEyMywgNzksIDMsIDEsIDI1NCwgOTAsIDIzNCwgMTIzLCAKLSAgICA3OSwgNiwgMSwgMjQ3LCAyMDUsIDI0MSwgMzIsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjQxLCAzMiwgNzksIDYsIDEsIDUzLCAKLSAgICA3OSwgMjQxLCAzMiwgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAzMiwgNzksIDYsIDEsIDUzLCA3OSwgMTU5LCA3OSwgMywgMSwgCi0gICAgNTMsIDc5LCAxNTksIDc5LCA2LCAxLCAyMzMsIDE3MCwgMTU5LCA3OSwgMywgMSwgMjMzLCAxNzAsIDE1OSwgNzksIDYsIDEsIAotICAgIDUzLCA3OSwgMjQxLCAyMDEsIDc5LCAzLCAxLCA1MywgNzksIDI0MSwgMjAxLCA3OSwgNiwgMSwgNTMsIDc5LCAyNDEsIDIzNCwgCi0gICAgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAyMzQsIDc5LCA2LCAxLCA1MywgNzksIDI0MywgNzgsIDc5LCAzLCAxLCA1MywgNzksIAotICAgIDI0MywgNzgsIDc5LCA2LCAxLCA1MywgNzksIDI0NywgMTE1LCA3OSwgMywgMSwgNTMsIDc5LCAyNDcsIDExNSwgNzksIDYsIAotICAgIDEsIDUzLCA3OSwgMjIwLCAyMDIsIDc5LCAzLCAxLCA1MywgNzksIDIyMCwgMjAyLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIAotICAgIDIyMCwgMjAyLCA3OSwgMywgMSwgNTMsIDIyOCwgNjMsIDIyMCwgMjAyLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIyOSwgCi0gICAgMTEzLCA3OSwgMywgMSwgNTMsIDIyOCwgNjMsIDIyOSwgMTEzLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIyOCwgMTAsIDc5LCAKLSAgICAzLCAxLCA1MywgMjI4LCA2MywgMjI4LCAxMCwgNzksIDYsIDEsIDUzLCAyMjgsIDYzLCAyMTQsIDIxLCA3OSwgMywgMSwgNTMsIAotICAgIDIyOCwgNjMsIDIxNCwgMjEsIDc5LCAxNiwgMjM0LCAyNTAsIDc5LCAxNiwgMjMxLCA0MywgMjIzLCAxMTIsIDc5LCAxNiwgCi0gICAgMjI1LCAyNDEsIDIyMywgMTEyLCA3OSwgMTYsIDIxOSwgODcsIDc5LCAxNiwgMjE3LCAyNDksIDIyMywgMTEyLCA3OSwgMTYsIAotICAgIDIzNCwgMTE5LCAyMjMsIDExMiwgNzksIDE2LCAyMjAsIDIwMywgMjIwLCA5MSwgNzksIDYsIDEsIDI0OSwgNTUsIDIyMCwgCi0gICAgMjM1LCA3OSwgMywgMSwgMjQ5LCA1NSwgMjIwLCAyMzUsIDc5LCA2LCAxLCAyNDksIDU1LCAyNDMsIDc4LCA3OSwgMywgMSwgCi0gICAgMjQ5LCA1NSwgMjQzLCA3OCwgNzksIDM3LCAyMjksIDY1LCA0OSwgNzksIDM3LCAyMTksIDE3OSwgMjUzLCAxMzksIDc5LCAKLSAgICAzNywgMjE5LCAxNzksIDIzMywgNDUsIDc5LCA1MywgMjI4LCA2MywgMjQzLCAyMDAsIDIxOSwgNjksIDc5LCA1MywgMjI4LCAKLSAgICA2MywgMjQ3LCAxNDksIDIyNCwgMTU4LCA3NywgNzksIDUzLCAyMjgsIDYzLCAyMzUsIDIzNCwgMjI0LCAxNTgsIDc3LCA3OSwgCi0gICAgNTMsIDIyOCwgNjMsIDIxNCwgMjE4LCAyNDcsIDEyNCwgNzksIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgNzksIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCA3OSwgMjMwLCAxOTQsIDI0NywgMTI0LCAxMDAsIDMsIDEsIDI1NCwgMzIsIDEwMCwgMywgMSwgMjUyLCA3MSwgCi0gICAgMTAwLCAzLCAxLCAyNDMsIDgyLCAxMDAsIDMsIDEsIDI0NywgODIsIDEwMCwgMywgMSwgMjQ1LCAxMDgsIDEwMCwgMywgMSwgCi0gICAgMjE0LCAxNDEsIDEwMCwgMywgMSwgMjEyLCA4MiwgMTAwLCAzLCAxLCAyMTgsIDExLCAxMDAsIDMsIDEsIDIzNSwgMjUxLCAKLSAgICAxMDAsIDMsIDEsIDIzNCwgMjM5LCAxMDAsIDMsIDEsIDIzMywgMTA0LCAxMDAsIDMsIDEsIDIzMSwgMjQ4LCAxMDAsIDMsIDEsIAotICAgIDIzMCwgMTUsIDEwMCwgMywgMSwgMjI3LCA2MiwgMTAwLCAzLCAxLCAyMjYsIDE0NSwgMTAwLCAzLCAxLCAyMTIsIDcxLCAKLSAgICAxMDAsIDMsIDEsIDIyNCwgNjEsIDEwMCwgMywgMSwgMjIyLCAxNTksIDEwMCwgMywgMSwgMjE4LCAxLCAxMDAsIDMsIDEsIAotICAgIDIxNSwgMTYwLCAxMDAsIDMsIDEsIDIyNiwgMTYsIDEwMCwgMywgMSwgMjM0LCAxMjcsIDEwMCwgMywgMSwgMjQyLCAyMTcsIAotICAgIDEwMCwgMywgMSwgMjI0LCAyMTcsIDEwMCwgMywgMSwgMjIwLCAyMDAsIDEwMCwgMywgMSwgMjUwLCAzNCwgMTAwLCAzLCAxLCAKLSAgICAyNTAsIDE5NSwgMTAwLCAzLCAxLCAyMzUsIDEwMywgMTAwLCAzLCAxLCAyNDksIDIzMywgMTAwLCAzLCAxLCAyNTAsIDc5LCAKLSAgICAxMDAsIDMsIDEsIDIxMywgMTUxLCAxMDAsIDMsIDEsIDIzNSwgMTEzLCAxMDAsIDMsIDEsIDI0MiwgMjQsIDEwMCwgMywgMSwgCi0gICAgMjQxLCAyMjIsIDEwMCwgMywgMSwgMjQxLCAxNjAsIDEwMCwgMywgMSwgMjE0LCA2LCAxMDAsIDMsIDEsIDI0MSwgMjQzLCAKLSAgICAxMDAsIDMsIDEsIDI0MSwgNTEsIDIxNywgNjIsIDEsIDE4NiwgMjE3LCA2MiwgMSwgMjEzLCA4NywgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA4NiwgMjE3LCA2MiwgMSwgMjEzLCA3NiwgMjE3LCA2MiwgMSwgMjEzLCA3NCwgMjE3LCA2MiwgMSwgMjUxLCAyMDksIAotICAgIDI1NCwgMTc2LCAyMTMsIDcwLCAyMTcsIDYyLCAxLCAyMTMsIDcwLCAyMTcsIDYyLCAxLCAyMTMsIDg0LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDgxLCAyMTcsIDYyLCAxLCAyMTMsIDgzLCAyMTcsIDYyLCAxLCAyMTMsIDgyLCAyMTcsIDYyLCAxLCAyMTMsIDMsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNzgsIDIxNywgNjIsIDEsIDIxMywgNjgsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNjgsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNjUsIDIxNywgNjIsIDEsIDIxMywgNzIsIDIxNywgNjIsIDEsIDI1MSwgMjA5LCAyNTQsIDE3NiwgCi0gICAgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjEzLCA3MSwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA5MSwgMjE3LCA2MiwgMSwgMjEzLCA2NiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA2NiwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA1NiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA1NiwgMjE3LCA2MiwgMSwgMjEyLCAyNTUsIDIxNywgNjIsIDEsIAotICAgIDIxMywgNDAsIDIxNywgNjIsIDEsIDI1NCwgMTEyLCAyMTMsIDQwLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDQwLCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDY0LCAyMTcsIDYyLCAxLCAyMTMsIDYzLCAyMTcsIDYyLCAxLCAyMTMsIDYwLCAyMTcsIDYyLCAKLSAgICAxLCAyMTYsIDc5LCAyMTMsIDczLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDU4LCAyMTcsIDYyLCAxLCAyMTMsIDU3LCAKLSAgICAyMTcsIDYyLCAxLCAyMTIsIDIwMywgMjE3LCA2MiwgMSwgMjEzLCA1NCwgMjE3LCA2MiwgMSwgMjEzLCA1MywgMjE3LCA2MiwgCi0gICAgMSwgMjEzLCA3NSwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA3NSwgMjE3LCA2MiwgMSwgMjUzLCA3OSwgMjEzLCA3NSwgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA1MiwgMjE3LCA2MiwgMSwgMjEzLCA1MCwgMjE3LCA2MiwgMSwgMjEzLCA1MSwgMjE3LCA2MiwgCi0gICAgMSwgMjEzLCA0OSwgMjE3LCA2MiwgMSwgMjEzLCA0OCwgMjE3LCA2MiwgMSwgMjEzLCA4NSwgMjE3LCA2MiwgMSwgMjEzLCAKLSAgICA0NiwgMjE3LCA2MiwgMSwgMjEzLCA0NSwgMjE3LCA2MiwgMSwgMjEzLCA0NCwgMjE3LCA2MiwgMSwgMjEzLCA0MywgMjE3LCAKLSAgICA2MiwgMSwgMjEzLCA0MSwgMjE3LCA2MiwgMSwgMjE3LCAyNDEsIDIxMywgNDEsIDIxNywgNjIsIDEsIDIxMywgMzksIDIxNywgCi0gICAgNjIsIDU5LCAxLCAyMzMsIDE0OSwgNzcsIDIxNywgNjIsIDIyMSwgNTgsIDc3LCAyMTcsIDYyLCAyNDksIDEzMywgMjM1LCAKLSAgICA2NiwgMjgsIDQsIDIzMiwgMjA3LCAyOCwgNCwgMjMwLCAyMzAsIDI4LCA0LCAyMjMsIDExMCwgMjgsIDQsIDIxOSwgMjQxLCAKLSAgICAyOCwgNCwgMjIwLCAxODYsIDI4LCA0LCAyNTEsIDEyNywgMjgsIDQsIDIxNiwgMjUyLCAyOCwgNCwgMjQ5LCAxNzQsIDI4LCAKLSAgICA0LCAyMjgsIDE4MywgMjgsIDQsIDIyNywgMjUyLCAyOCwgNCwgMjQyLCAxNTYsIDIyNywgMTIwLCAyOCwgNCwgMjEyLCAxNSwgCi0gICAgMjgsIDQsIDI0NywgOTcsIDI4LCA0LCAyNDgsIDU1LCAyOCwgNCwgMjM1LCA3MCwgMjgsIDQsIDIxNywgMTA4LCAyOCwgNCwgCi0gICAgMjUwLCAyMiwgMjgsIDQsIDIyNSwgMjUyLCAyOCwgNCwgMjI1LCAxNDksIDI4LCA0LCAyNDIsIDIzMSwgMjgsIDQsIDI0MiwgCi0gICAgMjI3LCAyOCwgNCwgMjQyLCAyMjgsIDI4LCA0LCAyNDIsIDIyOSwgMjgsIDQsIDIxOSwgMTU3LCAyOCwgNCwgMjE5LCAxMTcsIAotICAgIDI4LCA0LCAyMTksIDEyOCwgMjgsIDQsIDIxOSwgMTU2LCAyOCwgNCwgMjE5LCAxMzIsIDI4LCA0LCAyMTksIDEzMywgMjgsIAotICAgIDQsIDIxOSwgMTIxLCAyOCwgNCwgMjUwLCAxNDYsIDI4LCA0LCAyNTAsIDEyNiwgMjgsIDQsIDI1MCwgMTI4LCAyOCwgNCwgCi0gICAgMjUwLCAxNDUsIDI4LCA0LCAyNTAsIDE0MywgMjgsIDQsIDI1MCwgMTQ0LCAyOCwgNCwgMjUwLCAxMjcsIDI4LCA0LCAyMTEsIAotICAgIDI0MiwgMjgsIDQsIDIxMSwgMjIyLCAyOCwgNCwgMjExLCAyMzMsIDI4LCA0LCAyMTEsIDI0MSwgMjgsIDQsIDIxMSwgMjM2LCAKLSAgICAyOCwgNCwgMjExLCAyMzcsIDI4LCA0LCAyMTEsIDIyNSwgMjgsIDQsIDI1MCwgMTQyLCAyOCwgNCwgMjUwLCAxMjksIDI4LCAKLSAgICA0LCAyNTAsIDEzMSwgMjgsIDQsIDI1MCwgMTQxLCAyOCwgNCwgMjUwLCAxMzksIDI4LCA0LCAyNTAsIDE0MCwgMjgsIDQsIAotICAgIDI1MCwgMTMwLCAyOCwgNCwgMjI0LCAxMjUsIDI4LCA0LCAyMjQsIDExNSwgMjgsIDQsIDIyNCwgMTIxLCAyOCwgNCwgMjI0LCAKLSAgICAxMjQsIDI4LCA0LCAyMjQsIDEyMiwgMjgsIDQsIDIyNCwgMTIzLCAyOCwgNCwgMjI0LCAxMjAsIDI4LCA0LCAyMzMsIDE4MSwgCi0gICAgMjgsIDQsIDIzMywgMTczLCAyOCwgNCwgMjMzLCAxNzYsIDI4LCA0LCAyMzMsIDE4MCwgMjgsIDQsIDIzMywgMTc3LCAyOCwgCi0gICAgNCwgMjMzLCAxNzgsIDI4LCA0LCAyMzMsIDE3NCwgMjgsIDQsIDIxMywgMTE4LCAyOCwgNCwgMjEzLCAxMDgsIDI4LCA0LCAKLSAgICAyMTMsIDExNCwgMjgsIDQsIDIxMywgMTE3LCAyOCwgNCwgMjEzLCAxMTUsIDI4LCA0LCAyMTMsIDExNiwgMjgsIDQsIDIxMywgCi0gICAgMTEzLCAyOCwgNCwgMjQyLCA1MiwgMjgsIDQsIDI0MiwgNDMsIDI4LCA0LCAyNDIsIDQ2LCAyOCwgNCwgMjQyLCA1MSwgMjgsIAotICAgIDQsIDI0MiwgNDgsIDI4LCA0LCAyNDIsIDQ5LCAyOCwgNCwgMjQyLCA0NSwgMzcsIDMzLCAxLCAyNTEsIDI1MSwgMzcsIDMzLCAKLSAgICAxLCAyMTQsIDIzMiwgMzcsIDMzLCAxLCAyNDIsIDIxMiwgMzcsIDMzLCAxLCAyNDgsIDQxLCAzNywgMzMsIDEsIDIxMiwgNjcsIAotICAgIDM3LCAzMywgMSwgMjEyLCA4NywgMzcsIDMzLCAxLCAxODEsIDM3LCAzMywgMSwgMjQ1LCAxMzEsIDM3LCAzMywgMSwgMjQ1LCAKLSAgICAxMTcsIDM3LCAzMywgMSwgMjQ1LCAxMDgsIDM3LCAzMywgMSwgNzUsIDM3LCAzMywgMSwgMjI2LCA5NiwgMzcsIDMzLCAxLCAKLSAgICAyNDUsIDU1LCAzNywgMzMsIDEsIDI0NSwgNDUsIDM3LCAzMywgMSwgMjE3LCAyMjksIDM3LCAzMywgMSwgMTU5LCAzNywgMzMsIAotICAgIDEsIDIxNiwgMTM2LCAzNywgMzMsIDEsIDI1MCwgNjcsIDM3LCAzMywgMSwgMjIxLCAyNCwgMzcsIDMzLCAxLCAyMjAsIDI0NSwgCi0gICAgMzcsIDMzLCAxLCAyNDQsIDUxLCAzNywgMzMsIDEsIDI0NSwgNDQsIDM3LCAzMywgMSwgNjEsIDM3LCAzMywgMSwgMjM2LCAKLSAgICA1NSwgMzcsIDMzLCAxLCAyNDcsIDExMywgMzcsIDMzLCAxLCAyMzAsIDIxMCwgMjE1LCAxNzUsIDM3LCAzMywgMSwgMjEzLCAKLSAgICA0OSwgMzcsIDMzLCAxLCAyMTIsIDIwMywgMzcsIDMzLCAxLCAyMzUsIDE4MSwgNjEsIDM3LCAzMywgMSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzNywgMzMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzcsIDMzLCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIAotICAgIDIxMiwgMTc0LCA0NiwgMjU0LCAxOSwgMjE5LCA1LCAyMzEsIDIxNywgNDYsIDI1NCwgMTksIDI0NiwgNzIsIDIxOSwgNSwgCi0gICAgMjMxLCAyMTcsIDQyLCAyMTksIDUsIDEyNSwgNDYsIDIxOSwgNSwgMTI1LCA0MiwgMjQ2LCA3MiwgMjE5LCA1LCAxMjUsIDQ2LCAKLSAgICAyNDYsIDcyLCAyMTksIDUsIDEyNSwgMjI0LCA0OCwgMjM1LCAxOTksIDIzMSwgMjE3LCAyMjQsIDQ4LCAyNDYsIDcyLCAyMzUsIAotICAgIDE5OSwgMjMxLCAyMTcsIDI0NiwgNzIsIDIxNiwgMTk5LCAyMzEsIDIxNywgNDIsIDIxNiwgMTk5LCAxMjUsIDQ2LCAyMTYsIAotICAgIDE5OSwgMTI1LCAyMjQsIDQ4LCAyMTksIDE2NiwgNDIsIDIyNCwgNDgsIDIyNywgNjQsIDEyNSwgNDYsIDIyNCwgNDgsIDIyNywgCi0gICAgNjQsIDEyNSwgMjQ1LCAxNjYsIDI0OSwgOTcsIDIyNiwgMTQxLCAyNDMsIDI0NywgMjI2LCAxNDEsIDIyMywgMjAyLCAyNDMsIAotICAgIDI0NywgMjI2LCAxNDEsIDI0MCwgMTU3LCAyNDYsIDcyLCAyMjcsIDExNSwgMjQ2LCA1OCwgMjU0LCAyOCwgMjE1LCAxMjQsIAotICAgIDI1NCwgMjgsIDI0NiwgNzIsIDIyMywgMTQ0LCAyNTQsIDE4LCA1MSwgMjI3LCAxMTIsIDI0MCwgMTYwLCAyMzUsIDE5MSwgCi0gICAgMjM1LCAxOTgsIDIyNiwgMTg2LCAyNTEsIDgxLCAyNDAsIDE2MSwgMiwgMjQ3LCAyMDksIDIxNywgNDMsIDIsIDIyMywgMTMxLCAKLSAgICA0OSwgNDIsIDExNSwgMjI2LCAxMzMsIDEyNSwgNDYsIDExNSwgMjI2LCAxMzMsIDEyNSwgMjE3LCA0MywgMiwgNjIsIDQ5LCAKLSAgICAyMTcsIDQzLCAyLCA2MiwgNTUsIDQyLCA3MSwgMjUyLCA2MCwgMiwgMjI0LCAxNTIsIDQ2LCA3MSwgMjUyLCA2MCwgMiwgCi0gICAgMjI0LCAxNTIsIDIxNiwgMjI3LCA0MiwgMTUxLCAxMjUsIDIxNiwgMjI3LCA0NiwgMTUxLCAxMjUsIDI1MSwgMTAxLCA0MiwgCi0gICAgMTUxLCAxMjUsIDI1MSwgMTAxLCA0NiwgMTUxLCAxMjUsIDQyLCAyMjAsIDExMywgMTExLCAxMjUsIDQ2LCAyMjAsIDExMywgCi0gICAgMTExLCAxMjUsIDQyLCA1MSwgMjI2LCAxMzEsIDQ2LCA1MSwgMjI2LCAxMzEsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIAotICAgIDIyNSwgMjYsIDEyMiwgNjIsIDExMCwgMTE3LCAxNzYsIDIyNSwgMjYsIDkxLCAyNDMsIDIzNywgNjIsIDIyNSwgMjYsIDI0NCwgCi0gICAgNTAsIDYyLCA3NywgMjIzLCAyMDIsIDIyNCwgMTU4LCA3NywgNzEsIDIxNywgNDIsIDIyMywgMTMxLCAyMjUsIDE0NCwgMjEzLCAKLSAgICAxOTYsIDIyMSwgNTgsIDIzMSwgMzcsIDI0NywgNzQsIDksIDM0LCAyMjMsIDIyNywgOSwgMzQsIDI0OSwgMjAzLCA5LCAzNCwgCi0gICAgMjIyLCA5NSwgMTE2LCA5LCAzNCwgMjIyLCA5NSwgMTA5LCA5LCAzNCwgMjIyLCA5NSwgMTY2LCA5LCAzNCwgMjI2LCA0MywgCi0gICAgOSwgMzQsIDI1MSwgODksIDksIDM0LCAyMTgsIDQwLCA5LCAzNCwgMjM0LCA0MiwgMTE2LCA5LCAzNCwgMjM0LCA0MiwgMTA5LCAKLSAgICA5LCAzNCwgMjQ3LCAxMjIsIDksIDM0LCAyMjIsIDk4LCA5LCAzNCwgMywgMTE2LCA5LCAzNCwgMywgMTA5LCA5LCAzNCwgCi0gICAgMjMzLCAxMjEsIDExNiwgOSwgMzQsIDIzMywgMTIxLCAxMDksIDksIDM0LCAyMzMsIDEyMSwgMTY2LCA5LCAzNCwgMjMzLCAKLSAgICAxMjEsIDE2MywgOSwgMzQsIDIxOSwgMjUyLCA5LCAzNCwgMjE3LCA5OCwgOSwgMzQsIDIxOSwgMjUwLCAxMTYsIDksIDM0LCAKLSAgICAyMTksIDI1MCwgMTA5LCA5LCAzNCwgMjQxLCAyMTIsIDExNiwgOSwgMzQsIDI0MSwgMjEyLCAxMDksIDksIDM0LCAyNDEsIAotICAgIDI1NCwgOSwgMzQsIDIyNCwgMzksIDksIDM0LCAyNTAsIDE5LCA5LCAzNCwgMjE4LCAyMzgsIDksIDM0LCAyMzAsIDE5OCwgOSwgCi0gICAgMzQsIDI0OCwgMzksIDksIDM0LCAyMzAsIDE5MCwgOSwgMzQsIDI0OSwgMjE4LCA5LCAzNCwgMjE0LCAyNSwgMTE2LCA5LCAKLSAgICAzNCwgMjE0LCAyNSwgMTA5LCA5LCAzNCwgMjQ0LCA2NSwgOSwgMzQsIDIyNiwgMTA2LCAxMTYsIDksIDM0LCAyMjYsIDEwNiwgCi0gICAgMTA5LCA5LCAzNCwgMjIwLCA4NiwgMTUxLCAyMTYsIDE5NCwgMjE2LCAxNDYsIDksIDM0LCAyNDksIDg0LCA5LCAzNCwgMjQ3LCAKLSAgICA5MCwgOSwgMzQsIDIzNSwgMTM1LCA5LCAzNCwgMjUxLCAxMjIsIDY1LCAyNDksIDE4NywgOSwgMzQsIDI0NCwgMjM5LCA5LCAKLSAgICAzNCwgMjE5LCAxODEsIDExNiwgOSwgMzQsIDIxOSwgMTgxLCAxMDksIDksIDM0LCAyNTIsIDczLCA5LCAzNCwgMjIwLCA5MywgCi0gICAgOSwgMzQsIDI1MCwgMjQ5LCAyMjAsIDkzLCA5LCAzNCwgMjI5LCAxNzIsIDExNiwgOSwgMzQsIDIyOSwgMTcyLCAxMDksIDksIAotICAgIDM0LCAyMjksIDE3MiwgMTY2LCA5LCAzNCwgMjI5LCAxNzIsIDE2MywgOSwgMzQsIDIzMSwgMTExLCA5LCAzNCwgMjIwLCAKLSAgICAyMzcsIDksIDM0LCAyMjQsIDQ1LCA5LCAzNCwgMjQ1LCA0LCA5LCAzNCwgMjI3LCA3NSwgOSwgMzQsIDI1MSwgNjEsIDExNiwgCi0gICAgOSwgMzQsIDI1MSwgNjEsIDEwOSwgOSwgMzQsIDIzMSwgMTUxLCA5LCAzNCwgMjMwLCAxOTMsIDksIDM0LCAyNDIsIDExNywgCi0gICAgMTE2LCA5LCAzNCwgMjQyLCAxMTcsIDEwOSwgOSwgMzQsIDI0MiwgMTE3LCAxNjYsIDksIDM0LCAyMTcsIDYwLCA5LCAzNCwgCi0gICAgMjQ5LCAxODYsIDksIDM0LCAyMTMsIDI1MCwgMTE2LCA5LCAzNCwgMjEzLCAyNTAsIDEwOSwgOSwgMzQsIDI1MCwgMjQ5LCAKLSAgICAyMjIsIDg5LCA5LCAzNCwgMjIwLCA4NiwgMjQwLCAyMzUsIDksIDM0LCAyNDAsIDIzNSwgOSwgMzQsIDI1MCwgMjQ5LCAyMTksIAotICAgIDE5MCwgOSwgMzQsIDI1MCwgMjQ5LCAyMjAsIDIzMiwgOSwgMzQsIDI0NCwgMSwgOSwgMzQsIDI1MCwgMjQ5LCAyNTAsIDE2MCwgCi0gICAgOSwgMzQsIDIyMCwgODYsIDIxNCwgNDEsIDksIDM0LCAyMTQsIDQyLCAxMTYsIDksIDM0LCAyMTQsIDQyLCAxMDksIDksIDM0LCAKLSAgICAyNDksIDIyMCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDIsIDE0MiwgOSwgMzQsIDE4NCwgMTE2LCA5LCAzNCwgMTg0LCAxMDksIDksIAotICAgIDM0LCAyNTAsIDI0OSwgMjMyLCAxOTAsIDksIDM0LCAyNTAsIDI0OSwgMjQzLCA2NCwgOSwgMzQsIDIzMCwgMTg5LCAxMTYsIAotICAgIDksIDM0LCAyMzAsIDE4OSwgMTA5LCA5LCAzNCwgMjI0LCA1MCwgOSwgMzQsIDI1MSwgMTMwLCA5LCAzNCwgMjUwLCAyNDksIAotICAgIDIxOCwgNywgMjMzLCA3NiwgOSwgMzQsIDI1MCwgMjQ5LCAyMzMsIDc3LCA5LCAzNCwgMjUwLCAyNDksIDIxMywgMjI0LCA5LCAKLSAgICAzNCwgMjUwLCAyNDksIDI0NCwgMTUsIDksIDM0LCAyNDUsIDE3NCwgMTE2LCA5LCAzNCwgMjQ1LCAxNzQsIDEwOSwgOSwgMzQsIAotICAgIDI0NSwgMTc0LCAxNjYsIDksIDM0LCAyNTAsIDI0OSwgMjQ1LCAxNzMsIDksIDM0LCAyNDEsIDIxOSwgOSwgMzQsIDI1MCwgCi0gICAgMjQ5LCAyNDAsIDIzMiwgOSwgMzQsIDI1MSwgMTE5LCA5LCAzNCwgMjQyLCAxOTgsIDksIDM0LCAyNTAsIDI0OSwgMjQ0LCAKLSAgICA1OSwgOSwgMzQsIDI1MCwgMjQ5LCAyNTEsIDE2MCwgOSwgMzQsIDI1MCwgMjQ5LCAyMjIsIDE3MiwgOSwgMzQsIDIyMCwgODYsIAotICAgIDIxMywgMjQzLCA5LCAzNCwgMjIwLCA4NiwgMjEzLCAzMiwgOSwgMzQsIDI1MCwgMjQ5LCAyNDMsIDIxNCwgOSwgMzQsIDIzNSwgCi0gICAgMTQxLCAyNDUsIDgsIDksIDM0LCAyNTAsIDI0OSwgMjQ1LCA4LCA5LCAzNCwgMjM1LCAxNDEsIDIxNiwgMjI4LCA5LCAzNCwgCi0gICAgMjUwLCAyNDksIDIxNiwgMjI4LCA5LCAzNCwgMjM1LCAxNDEsIDI0NiwgNTAsIDksIDM0LCAyNTAsIDI0OSwgMjQ2LCA1MCwgCi0gICAgOSwgMzQsIDIxNiwgNTUsIDksIDM0LCAyMzUsIDE0MSwgMjE2LCA1NSwgOSwgMzQsIDI1MCwgMjQ5LCAyMTYsIDU1LCA1NywgCi0gICAgMzQsIDExNiwgNTcsIDM0LCAyMzIsIDI0MiwgNTcsIDM0LCAyNDcsIDc0LCA1NywgMzQsIDIyMCwgMjMsIDU3LCAzNCwgMjIyLCAKLSAgICA5NCwgNTcsIDM0LCAxMDEsIDU3LCAzNCwgMTA5LCA1NywgMzQsIDIzMywgOSwgNTcsIDM0LCAyMzEsIDI0OCwgNTcsIDM0LCAKLSAgICAyMzMsIDU3LCA1NywgMzQsIDI0NSwgODgsIDU3LCAzNCwgMTk1LCA1NywgMzQsIDExOSwgMjUxLCA4OSwgNTcsIDM0LCAyNDksIAotICAgIDg2LCA1NywgMzQsIDI0MCwgMTA0LCA1NywgMzQsIDIxOCwgNDAsIDU3LCAzNCwgMjI3LCA0MCwgMjUxLCA4OSwgNTcsIDM0LCAKLSAgICAyMzQsIDQxLCA1NywgMzQsIDIyNSwgMTA0LCA1NywgMzQsIDIxMywgMTkwLCA1NywgMzQsIDIxOSwgMTc1LCA1NywgMzQsIAotICAgIDQ2LCAyMjcsIDQwLCAyNTEsIDg5LCA1NywgMzQsIDI0MSwgMTYxLCAyNDUsIDEwMywgNTcsIDM0LCAyMTcsIDIwMCwgNTcsIAotICAgIDM0LCAyNDcsIDEyMiwgNTcsIDM0LCAyMjIsIDk4LCA1NywgMzQsIDI0OSwgMjAzLCA1NywgMzQsIDIyNSwgNjUsIDU3LCAzNCwgCi0gICAgMjU0LCAxMjAsIDU3LCAzNCwgMjMwLCAxODAsIDU3LCAzNCwgMjQ1LCAxMDMsIDU3LCAzNCwgMjQ1LCAxNzksIDU3LCAzNCwgCi0gICAgMjIyLCAxMTgsIDU3LCAzNCwgMjQyLCAxNTAsIDU3LCAzNCwgMjQyLCAxNTEsIDIyMCwgOSwgNTcsIDM0LCAyNDUsIDcsIDU3LCAKLSAgICAzNCwgMjUxLCAxNzEsIDU3LCAzNCwgMjEzLCAyMDgsIDU3LCAzNCwgMjUwLCAzOCwgNTcsIDM0LCAyMjMsIDk4LCA1NywgMzQsIAotICAgIDIzNSwgMjQ3LCA1NywgMzQsIDIyMCwgNywgNTcsIDM0LCAyMzMsIDEyMCwgNTcsIDM0LCAyNDksIDk1LCA1NywgMzQsIDIxOSwgCi0gICAgMTY5LCA1NywgMzQsIDIzMCwgMTg1LCA1NywgMzQsIDIyMywgMTIxLCA1NywgMzQsIDIxMywgMTkzLCA1NywgMzQsIDIyNywgCi0gICAgNTYsIDU3LCAzNCwgMjE2LCA2MSwgNTcsIDM0LCAyNDYsIDM1LCA1NywgMzQsIDIyMCwgMTc1LCAyMTcsIDk4LCA1NywgMzQsIAotICAgIDI0NiwgNzIsIDI0OSwgMjAzLCA1NywgMzQsIDE4NCwgMjE5LCA0OCwgNTcsIDM0LCAxMTcsIDI0MSwgMjQ5LCA1NywgMzQsIAotICAgIDIyMCwgMTgwLCA1NywgMzQsIDI1MSwgOTUsIDU3LCAzNCwgMjE5LCAyNDksIDU3LCAzNCwgMjUxLCA2NSwgNTcsIDM0LCAKLSAgICAyMTksIDc4LCA1NywgMzQsIDI0MSwgMjExLCA1NywgMzQsIDI0MiwgMTAsIDU3LCAzNCwgMjQ3LCA3NywgNTcsIDM0LCAyNDEsIAotICAgIDI1NCwgNTcsIDM0LCAyNTEsIDgxLCA1NywgMzQsIDIyNCwgMzksIDU3LCAzNCwgMjIyLCAxMDYsIDU3LCAzNCwgMjQ3LCAKLSAgICAxNTEsIDU3LCAzNCwgMjUzLCA4NCwgNTcsIDM0LCAyMTksIDE2NiwgNTcsIDM0LCAyMjgsIDE2MiwgNTcsIDM0LCAyMTgsIAotICAgIDIzOCwgNTcsIDM0LCAyMjIsIDEyOSwgNTcsIDM0LCAyMzAsIDE5OCwgNTcsIDM0LCAyMTYsIDE5MywgNTcsIDM0LCAyMzMsIAotICAgIDE0NSwgNTcsIDM0LCAyMTksIDY5LCA1NywgMzQsIDI0OCwgMzksIDU3LCAzNCwgMjE0LCA1LCA1NywgMzQsIDI0NywgMTAwLCAKLSAgICAyMjgsIDE2MiwgNTcsIDM0LCAyNDksIDE1NCwgNTcsIDM0LCAyNDMsIDE5NCwgNTcsIDM0LCAyNDksIDIxNCwgNTcsIDM0LCAKLSAgICAyMTksIDgyLCA1NywgMzQsIDIxNCwgMjQsIDU3LCAzNCwgMjQ0LCA2NSwgNTcsIDM0LCAyNDksIDIxMSwgNTcsIDM0LCAyNDQsIAotICAgIDEyOSwgNTcsIDM0LCA1MSwgMjEzLCAxNjYsIDU3LCAzNCwgMTUxLCAyMTYsIDE5NCwgMjE2LCAxNDYsIDU3LCAzNCwgMjIwLCAKLSAgICAxNywgNTcsIDM0LCAyNDQsIDEzOSwgNTcsIDM0LCAyNDksIDg0LCA1NywgMzQsIDI0NywgOTAsIDU3LCAzNCwgMjI1LCA2MiwgCi0gICAgNTcsIDM0LCAyMzUsIDEzNSwgNTcsIDM0LCAyMzEsIDEzMSwgNTcsIDM0LCAyMTcsIDQxLCA1NywgMzQsIDIxOCwgMTkwLCAKLSAgICA1NywgMzQsIDIzMywgMywgNTcsIDM0LCAyMTUsIDEwMywgNTcsIDM0LCAyNDQsIDg5LCA1NywgMzQsIDI1MSwgMTIyLCA2NSwgCi0gICAgMjQ5LCAxODcsIDU3LCAzNCwgMjIwLCAxMTQsIDU3LCAzNCwgMjQ2LCA3MiwgMjE3LCAxOTUsIDU3LCAzNCwgMjEzLCAyMzgsIAotICAgIDU3LCAzNCwgMjIwLCAzMSwgNTcsIDM0LCAyNDcsIDEzOSwgNTcsIDM0LCAyNDQsIDIzOSwgNTcsIDM0LCAyMTksIDE5MywgCi0gICAgNTcsIDM0LCA2OCwgNTcsIDM0LCAyMTksIDcxLCA1NywgMzQsIDIxOSwgMTgwLCA1NywgMzQsIDIxNiwgMjEyLCA1NywgMzQsIAotICAgIDI0MiwgMTIzLCA1NywgMzQsIDI1MCwgMTUxLCA1NywgMzQsIDIxOSwgOTksIDU3LCAzNCwgMjUyLCA3MywgNTcsIDM0LCAKLSAgICAyMjMsIDE4NCwgNTcsIDM0LCAyMjAsIDkzLCA1NywgMzQsIDIzNSwgMTMwLCA1NywgMzQsIDIyOSwgMTcxLCA1NywgMzQsIAotICAgIDIyMCwgMjM3LCA1NywgMzQsIDI0NCwgMTE4LCA1NywgMzQsIDIyNywgNzUsIDU3LCAzNCwgMjU0LCAyNywgNTcsIDM0LCAKLSAgICAyMjUsIDE2MiwgNTcsIDM0LCAyNDUsIDE4MywgNTcsIDM0LCAyNTEsIDYwLCA1NywgMzQsIDIzMSwgMTUxLCA1NywgMzQsIAotICAgIDIzMCwgMjUyLCA1NywgMzQsIDIyMSwgNzYsIDU3LCAzNCwgMjUzLCAxNjcsIDU3LCAzNCwgMjMwLCAxOTMsIDU3LCAzNCwgCi0gICAgMjE2LCAyMzIsIDU3LCAzNCwgMjI3LCAzMSwgNTcsIDM0LCAyNTEsIDEyNCwgNTcsIDM0LCAyMTksIDY3LCA1NywgMzQsIAotICAgIDI0OSwgMTYzLCA1NywgMzQsIDI0MiwgMTE2LCA1NywgMzQsIDIxNywgNjAsIDU3LCAzNCwgMjM1LCAyMTQsIDU3LCAzNCwgCi0gICAgMjUxLCAxMzQsIDU3LCAzNCwgMjE0LCA0MiwgMjQ1LCAxMDMsIDU3LCAzNCwgMjQ5LCAxODYsIDU3LCAzNCwgMjEzLCAyNDksIAotICAgIDU3LCAzNCwgMjIyLCA4OSwgNTcsIDM0LCAyNDAsIDIzNSwgNTcsIDM0LCAyMTksIDE5MCwgNTcsIDM0LCAyMTQsIDI1NCwgCi0gICAgNTcsIDM0LCAyNTEsIDI0OCwgNTcsIDM0LCAyMjUsIDIwNSwgNTcsIDM0LCAyNTIsIDkyLCA1NywgMzQsIDIyMCwgMjMyLCAKLSAgICA1NywgMzQsIDIyNCwgMywgNTcsIDM0LCAyMjMsIDM3LCA1NywgMzQsIDI0NCwgMSwgNTcsIDM0LCAyNTEsIDEyMywgNTcsIAotICAgIDM0LCAyNTAsIDE2MCwgNTcsIDM0LCAyNTEsIDE0OSwgNTcsIDM0LCAyMzAsIDE5NSwgNTcsIDM0LCAyMTQsIDQxLCA1NywgCi0gICAgMzQsIDI0OSwgMjIwLCA1NywgMzQsIDIxMywgMjIxLCA1NywgMzQsIDI0NywgMTMyLCA1NywgMzQsIDIxNCwgMTQyLCA1NywgCi0gICAgMzQsIDI0MiwgMTQyLCA1NywgMzQsIDIzMiwgMTkwLCA1NywgMzQsIDI0MywgNjQsIDU3LCAzNCwgMjMwLCAxODgsIDU3LCAKLSAgICAzNCwgMjIwLCAyMiwgNTcsIDM0LCAyMjAsIDE3NSwgMjE4LCAyNiwgMjUxLCAxNjAsIDU3LCAzNCwgMjI0LCA1MCwgNTcsIAotICAgIDM0LCAyNTEsIDEzMCwgNTcsIDM0LCAyMTMsIDE4NSwgNTcsIDM0LCAyNDQsIDE1OCwgNTcsIDM0LCAyMzMsIDc2LCA1NywgCi0gICAgMzQsIDIxOCwgNywgMjMzLCA3NiwgNTcsIDM0LCAyMzMsIDcyLCA1NywgMzQsIDIxOSwgMjE3LCA1NywgMzQsIDIzMywgNzcsIAotICAgIDU3LCAzNCwgMjEzLCAyMjQsIDU3LCAzNCwgMjQ0LCAxNSwgNTcsIDM0LCAyNDUsIDE3MywgNTcsIDM0LCAyNDEsIDIxOSwgCi0gICAgNTcsIDM0LCAyNDMsIDIyNiwgNTcsIDM0LCAyNDAsIDIzMiwgNTcsIDM0LCAyNTEsIDExOSwgNTcsIDM0LCAyMTgsIDE0LCAKLSAgICA1NywgMzQsIDI0MiwgMTYsIDU3LCAzNCwgMjQ0LCA4MiwgNTcsIDM0LCAyMjIsIDE5NywgMjEzLCAyMjEsIDU3LCAzNCwgCi0gICAgMjUwLCAxNTMsIDU3LCAzNCwgMjQyLCAxOTgsIDU3LCAzNCwgMjQ0LCA1OSwgNTcsIDM0LCAyNTEsIDE2MCwgNTcsIDM0LCAKLSAgICAyMjIsIDE3MiwgNTcsIDM0LCAyNDgsIDI1LCA1NywgMzQsIDIxMywgMjQzLCA1NywgMzQsIDI0MSwgMTk0LCA1NywgMzQsIAotICAgIDIxMywgMzIsIDU3LCAzNCwgMjMxLCA1LCA1NywgMzQsIDI1MSwgMTQ0LCA1NywgMzQsIDI0NSwgMTEzLCA1NywgMzQsIDI0MywgCi0gICAgMjE0LCA1NywgMzQsIDIxNiwgMTY3LCA1NywgMzQsIDI0NiwgMzcsIDU3LCAzNCwgMjI0LCAzMywgNTcsIDM0LCAyMjgsIAotICAgIDE2NCwgNTcsIDM0LCAyNDUsIDgsIDU3LCAzNCwgMjE2LCAyMjgsIDU3LCAzNCwgMjQ2LCA1MCwgNTcsIDM0LCAyMTYsIDU1LCAKLSAgICA1NywgMzQsIDI0NCwgMTcsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNDIsIDIxMSwgMjExLCAyMjMsIDE0OCwgMTA1LCAyNDcsIAotICAgIDI0NCwgMTM3LCA3OCwgMjExLCAyMTEsIDU1LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDQyLCAyMTEsIDIxMSwgMjMxLCAzNywgCi0gICAgMjQsIDIyMywgMTQ4LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDc4LCAyMTEsIDIxMSwgMjMxLCAzNywgMjQsIDU1LCAxMDUsIAotICAgIDI0NywgMjQ0LCAxMzcsIDI0MywgMjAwLCAyMTgsIDIxMCwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAKLSAgICAyMTMsIDQ5LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgNTUsIDEwNSwgMjQ3LCAyNDQsIDEzNywgCi0gICAgMjE4LCAyMTEsIDI0MywgMjEzLCAyMzMsIDcwLCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgMjE1LCAKLSAgICAxMzEsIDIzMywgNzAsIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMTUsIDEzMSwgMjIzLCAxNDgsIAotICAgIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMzIsIDE2MywgMjMzLCA3MCwgMTA1LCAyNDcsIDI0NCwgCi0gICAgMTM3LCAyMjYsIDI0NiwgMTA1LCAyMTksIDIwNiwgMTA1LCAyNDksIDE1NywgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjQ3LCAKLSAgICAxMjksIDc3LCAyMzUsIDEzMSwgMjM1LCAyMzMsIDIxOSwgOTgsIDg3LCAxMDUsIDIzNSwgMTU2LCA3NywgMTA1LCAyNDksIAotICAgIDE4OSwgNzcsIDEwNSwgNTAsIDIxMiwgNzksIDQyLCAyNTQsIDE5LCAxMjUsIDQ2LCAyNTQsIDE5LCAxMjUsIDQyLCA1MSwgCi0gICAgMjU0LCAxOSwgMTI1LCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgNDIsIDI0OSwgMTAwLCAxMjUsIDQ2LCAyNDksIDEwMCwgMTI1LCAKLSAgICA0MiwgNjcsIDI0OSwgMTAwLCAxMjUsIDQ2LCA2NywgMjQ5LCAxMDAsIDEyNSwgNDIsIDgzLCAyMzMsIDQ0LCAxMjUsIDQ2LCAKLSAgICA4MywgMjMzLCA0NCwgMTI1LCAyMjUsIDExNywgNzcsIDI0MywgOCwgNzcsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgCi0gICAgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCA0MiwgNjcsIDIzMywgNDQsIDEyNSwgNDYsIDY3LCAyMzMsIDQ0LCAxMjUsIAotICAgIDQyLCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQ2LCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQyLCA2NywgCi0gICAgNDEsIDEyNSwgNDYsIDY3LCA0MSwgMTI1LCAyMTQsIDIwLCAyNDgsIDEwMSwgMjIzLCAyMDIsIDUxLCAyMjUsIDcyLCAyMjQsIAotICAgIDE0MywgNzcsIDUxLCAyMjUsIDcyLCAyMjQsIDE0MywgNzcsIDExNSwgNTEsIDIyNSwgNzIsIDIyNCwgMTQzLCA3NywgMjI1LCAKLSAgICAxMTcsIDE1MiwgMjQ0LCAxNTgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxMTYsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxMDksIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAxNjYsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxNjMsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxODAsIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAxODksIDI0MSwgMjQ3LCAyMjgsIDU0LCAxOTgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxOTUsIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAyMDAsIDEwNSwgMjMzLCAyOSwgMTYwLCA3NywgMTA1LCAyMjMsIDEyNSwgMTYwLCA3NywgMTA1LCAKLSAgICAyNDcsIDI1MSwgMTYwLCA3NywgMTA1LCAyNDUsIDg3LCAxNjAsIDc3LCAyMywgMjIwLCA4MSwgNjIsIDE2MCwgNzcsIDIzLCAKLSAgICA1MSwgNjIsIDE2MCwgNzcsIDIxNCwgMTYsIDI0OCwgMTAxLCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCA3NywgNzEsIDIzNCwgCi0gICAgMjM4LCAyMjMsIDIyOCwgMiwgMjE0LCAxMTYsIDIxOSwgMjE4LCA3NywgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMTUyLCAKLSAgICAyMTUsIDEzMSwgMjQyLCA5LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAyLCAyMTQsIDExNiwgMjE5LCAyMTgsIDE1MiwgCi0gICAgMjE1LCAxMzEsIDI0MiwgOSwgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMTUyLCAyMzIsIDE2MywgMjQyLCA5LCAzNiwgMjI1LCAKLSAgICAxMTcsIDc3LCAxMDUsIDIwMSwgMjMyLCAyNDMsIDI0NCwgMTE1LCAyMjEsIDU4LCA4NywgMjQxLCAyNDcsIDIyOCwgNTQsIAotICAgIDIxNywgMjAwLCAyNDEsIDI0NywgMjI4LCA1NCwgMjE2LCAzOCwgMjQxLCAyNDcsIDIyOCwgNTQsIDIxNywgMTE1LCA3MSwgCi0gICAgMTA1LCAyMzUsIDE1NiwgNzcsIDIzMSwgMjAzLCA3NywgMjI2LCAxMjcsIDI1NCwgNDksIDc3LCAxMDUsIDQzLCAyMzUsIAotICAgIDIzNSwgMTA1LCAxNTEsIDI0NCwgNzUsIDIxOSwgMjA2LCAxNDIsIDEsIDMsIDYxLCAxNDIsIDEsIDYxLCAxNDIsIDEsIDMsIAotICAgIDcyLCAxNDIsIDEsIDcyLCAxNDIsIDEsIDMsIDY5LCAxNDIsIDEsIDY5LCAxNDIsIDEsIDMsIDc0LCAxNDIsIDEsIDc0LCAKLSAgICAxNDIsIDEsIDMsIDc1LCAxNDIsIDEsIDc1LCAxNDIsIDEsIDE4MSwgMTQyLCAxLCAyNDMsIDExMCwgMTQyLCAxLCAyMzQsIAotICAgIDEwMSwgMTQyLCAxLCAyNDIsIDE5MCwgMTQyLCAxLCAyMzMsIDIzOCwgMTQyLCAxLCAyNDIsIDkyLCAxNDIsIDEsIDIzNCwgCi0gICAgMTg4LCAxNDIsIDEsIDI0MywgMzgsIDE0MiwgMSwgMjM0LCAzNywgMTQyLCAxLCAyNDIsIDE1MCwgMTQyLCAxLCAyMjIsIAotICAgIDIwMiwgMTQyLCAxLCAyMTIsIDEwOSwgMTQyLCAxLCAyMjAsIDExNywgMTQyLCAxLCAyMTIsIDM3LCAxNDIsIDEsIDIxOSwgCi0gICAgMjcsIDE0MiwgMSwgMjEyLCA4LCAxNDIsIDEsIDIyMiwgMTAwLCAxNDIsIDEsIDIxMiwgODcsIDE0MiwgMSwgMjE5LCAyNDIsIAotICAgIDE0MiwgMSwgMjEyLCAxNiwgMTQyLCAxLCAyMTgsIDUyLCAxNDIsIDEsIDI0OCwgMTY0LCAxNDIsIDEsIDIxNywgNzEsIDE0MiwgCi0gICAgMSwgMjQ3LCAyMTEsIDE0MiwgMSwgMywgMjE2LCA4MiwgMTQyLCAxLCAyMTYsIDgyLCAxNDIsIDEsIDI0NiwgMzMsIDE0MiwgCi0gICAgMSwgMjE3LCAyMjksIDE0MiwgMSwgMjQ4LCA0MSwgMTQyLCAxLCAxMDgsIDE0MiwgMSwgMjQ3LCA5OSwgMTQyLCAxLCAyMDUsIAotICAgIDE0MiwgMSwgMjI5LCA2NCwgMTQyLCAxLCAyMjgsIDkyLCAxNDIsIDEsIDIyOSwgMTg3LCAxNDIsIDEsIDIyOCwgMTg1LCAKLSAgICAxNDIsIDEsIDE1OSwgMTQyLCAxLCAyNTIsIDEwNywgMTQyLCAxLCAxOTMsIDE0MiwgMSwgMjQxLCAxNjUsIDE0MiwgMSwgCi0gICAgMjUxLCAxODQsIDE0MiwgMSwgMjI1LCAyNDAsIDE0MiwgMSwgMjQwLCAyMTIsIDE0MiwgMSwgMjUxLCA1NCwgMTQyLCAxLCAKLSAgICAyMjUsIDM1LCAxNDIsIDEsIDI0MSwgMjIyLCAxNDIsIDEsIDI1MSwgMjUxLCAxNDIsIDEsIDIyNiwgOTYsIDE0MiwgMSwgCi0gICAgMjQxLCA1NCwgMTQyLCAxLCAyNTEsIDEyOCwgMTQyLCAxLCAyMjUsIDE1MCwgMTQyLCAxLCAxODgsIDE0MiwgMSwgMjMxLCAKLSAgICA0MiwgMTQyLCAxLCAyMzAsIDE3MiwgMTQyLCAxLCAyMzEsIDE1NiwgMTQyLCAxLCAyMzAsIDIzMSwgMTQyLCAxLCAzLCAxODYsIAotICAgIDE0MiwgMSwgMTg2LCAxNDIsIDEsIDMsIDIxMiwgMjAzLCAxNDIsIDEsIDIxMiwgMjAzLCAxNDIsIDEsIDMsIDIxMiwgMjM1LCAKLSAgICAxNDIsIDEsIDIxMiwgMjM1LCAxNDIsIDEsIDIwMywgMTQyLCAxLCAyMjMsIDE4OCwgMTQyLCAxLCAyMjMsIDUxLCAxNDIsIDEsIAotICAgIDIyNCwgMjEsIDE0MiwgMSwgMjIzLCAxMTIsIDE0MiwgMSwgMywgMjE0LCA0OSwgMTQyLCAxLCAyMTQsIDQ5LCAxNDIsIDEsIAotICAgIDIxMywgMjM1LCAxNDIsIDEsIDIxNCwgNiwgMTQyLCAxLCAyMTMsIDIxNCwgMTQyLCAxLCAyMDQsIDE0MiwgMSwgMjE0LCA5OSwgCi0gICAgMTQyLCAxLCAzLCAxODEsIDE0MiwgMSwgMywgMjM0LCAxODgsIDM3LCAyMzQsIDIwNiwgMjE0LCAxMTYsIDIxOSwgMjE4LCAKLSAgICA3NywgMzcsIDIzNCwgMjA2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDIzNCwgMjA2LCAyMTQsIDExNiwgMjE5LCAyMTgsIAotICAgIDc3LCAyMzQsIDIwNiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCAxNDIsIDIzNSwgMTU2LCA3NywgMTQyLCAyMTQsIDExNiwgCi0gICAgMjM1LCAxNTYsIDc3LCAxNDIsIDI0NywgMTczLCAyMTIsIDIxNiwgMjM0LCAyMDYsIDUxLCAyNDAsIDE2MCwgNTYsIDEsIDMsIAotICAgIDYxLCA1NiwgMSwgNjEsIDU2LCAxLCAzLCA3MiwgNTYsIDEsIDcyLCA1NiwgMSwgMywgNjksIDU2LCAxLCA2OSwgNTYsIDEsIAotICAgIDMsIDc0LCA1NiwgMSwgNzQsIDU2LCAxLCAzLCA3NSwgNTYsIDEsIDc1LCA1NiwgMSwgMTgxLCA1NiwgMSwgMjQzLCAxMTAsIAotICAgIDU2LCAxLCAyMzQsIDEwMSwgNTYsIDEsIDI0MiwgMTkwLCA1NiwgMSwgMjMzLCAyMzgsIDU2LCAxLCAyNDIsIDkyLCA1NiwgMSwgCi0gICAgMjM0LCAxODgsIDU2LCAxLCAyNDMsIDM4LCA1NiwgMSwgMjM0LCAzNywgNTYsIDEsIDI0MiwgMTUwLCA1NiwgMSwgMjIyLCAKLSAgICAyMDIsIDU2LCAxLCAyMTIsIDEwOSwgNTYsIDEsIDIyMCwgMTE3LCA1NiwgMSwgMjEyLCAzNywgNTYsIDEsIDIxOSwgMjcsIAotICAgIDU2LCAxLCAyMTIsIDgsIDU2LCAxLCAyMjIsIDEwMCwgNTYsIDEsIDIxMiwgODcsIDU2LCAxLCAyMTksIDI0MiwgNTYsIDEsIAotICAgIDIxMiwgMTYsIDU2LCAxLCAyMTgsIDUyLCA1NiwgMSwgMjQ4LCAxNjQsIDU2LCAxLCAyMTcsIDcxLCA1NiwgMSwgMjQ3LCAKLSAgICAyMTEsIDU2LCAxLCAzLCAyMTYsIDgyLCA1NiwgMSwgMjE2LCA4MiwgNTYsIDEsIDI0NiwgMzMsIDU2LCAxLCAyMTcsIDIyOSwgCi0gICAgNTYsIDEsIDI0OCwgNDEsIDU2LCAxLCAxMDgsIDU2LCAxLCAyNDcsIDk5LCA1NiwgMSwgMjA1LCA1NiwgMSwgMjI5LCA2NCwgCi0gICAgNTYsIDEsIDIyOCwgOTIsIDU2LCAxLCAyMjksIDE4NywgNTYsIDEsIDIyOCwgMTg1LCA1NiwgMSwgMTU5LCA1NiwgMSwgMjUyLCAKLSAgICAxMDcsIDU2LCAxLCAxOTMsIDU2LCAxLCAyNDEsIDE2NSwgNTYsIDEsIDI1MSwgMTg0LCA1NiwgMSwgMjI1LCAyNDAsIDU2LCAKLSAgICAxLCAyNDAsIDIxMiwgNTYsIDEsIDI1MSwgNTQsIDU2LCAxLCAyMjUsIDM1LCA1NiwgMSwgMjQxLCAyMjIsIDU2LCAxLCAyNTEsIAotICAgIDI1MSwgNTYsIDEsIDIyNiwgOTYsIDU2LCAxLCAyNDEsIDU0LCA1NiwgMSwgMjUxLCAxMjgsIDU2LCAxLCAyMjUsIDE1MCwgCi0gICAgNTYsIDEsIDE4OCwgNTYsIDEsIDIzMSwgNDIsIDU2LCAxLCAyMzAsIDE3MiwgNTYsIDEsIDIzMSwgMTU2LCA1NiwgMSwgMjMwLCAKLSAgICAyMzEsIDU2LCAxLCAzLCAxODYsIDU2LCAxLCAxODYsIDU2LCAxLCAzLCAyMTIsIDIwMywgNTYsIDEsIDIxMiwgMjAzLCA1NiwgCi0gICAgMSwgMywgMjEyLCAyMzUsIDU2LCAxLCAyMTIsIDIzNSwgNTYsIDEsIDIwMywgNTYsIDEsIDIyMywgMTg4LCA1NiwgMSwgMjIzLCAKLSAgICA1MSwgNTYsIDEsIDIyNCwgMjEsIDU2LCAxLCAyMjMsIDExMiwgNTYsIDEsIDMsIDIxNCwgNDksIDU2LCAxLCAyMTQsIDQ5LCAKLSAgICA1NiwgMSwgMjEzLCAyMzUsIDU2LCAxLCAyMTQsIDYsIDU2LCAxLCAyMTMsIDIxNCwgNTYsIDEsIDIwNCwgNTYsIDEsIDIxNCwgCi0gICAgOTksIDU2LCAxLCAzLCAxODEsIDU2LCAxLCAzLCAyMzQsIDE4OCwgNTYsIDEsIDIxNSwgMSwgNTYsIDEsIDIxNCwgMTU0LCAKLSAgICA1NiwgMSwgMjE0LCAyMzIsIDU2LCAxLCAyMTQsIDExOSwgNTYsIDIzMSwgMzcsIDI0NywgNzQsIDIzNCwgMjA2LCAyMjUsIAotICAgIDU3LCAyMTksIDIxOCwgNzcsIDU2LCAyMzUsIDE1NiwgNzcsIDU2LCAyMTQsIDExNiwgMjM1LCAxNTYsIDc3LCA1NiwgMjQ3LCAKLSAgICAxNzMsIDIzNCwgOCwgMjAyLCAxLCAyNTMsIDc0LCAyMDIsIDEsIDIyNiwgMjI5LCAyMDIsIDEsIDE4MywgMjAyLCAxLCAyNDQsIAotICAgIDIzMCwgMjAyLCAxLCAyNDksIDMsIDIwMiwgMSwgMjE4LCA5OSwgMjAyLCAxLCAyMDQsIDIwMiwgMSwgMTUwLCAyMDIsIDEsIAotICAgIDI0MywgMTc3LCAyMDIsIDEsIDIzNSwgMjcsIDIwMiwgMSwgMjQyLCA0MSwgMjAyLCAxLCAyMzUsIDE0MiwgMjAyLCAxLCAKLSAgICAyMjQsIDI0MCwgMjAyLCAxLCAyMTMsIDE2NiwgMjAyLCAxLCAyMTIsIDc2LCAyMDIsIDEsIDI1MCwgOTMsIDIwMiwgMSwgCi0gICAgMjIxLCAyNiwgMjAyLCAxLCAxNDksIDIwMiwgMSwgMjEyLCAxNTIsIDIwMiwgMSwgMjUwLCAyNTIsIDIwMiwgMSwgMTk3LCAKLSAgICAyMDIsIDEsIDYxLCAyMDIsIDEsIDc1LCAyMDIsIDEsIDc0LCAyMDIsIDEsIDI0NSwgMTU0LCAyMDIsIDEsIDI1NCwgMTA4LCAKLSAgICAyMDIsIDEsIDI0NSwgMTUyLCAyMDIsIDEsIDI1MywgMTA4LCAyMDIsIDEsIDIyNywgMiwgMjAyLCAxLCAyNTQsIDMyLCAyMDIsIAotICAgIDEsIDI0NSwgMTA4LCAyMDIsIDEsIDI1NCwgMjQsIDIwMiwgMSwgMjQ1LCA5NiwgMjAyLCAxLCAyNDUsIDU1LCAyMDIsIDEsIAotICAgIDcyLCAyMDIsIDEsIDY5LCAyMDIsIDEsIDIzNSwgMTU0LCAyMDIsIDEsIDIxNSwgNzksIDIwMiwgMSwgMjI5LCAxNjEsIDIwMiwgCi0gICAgMSwgMjQyLCAxNTQsIDIwMiwgMSwgMjM2LCAyOSwgMjMsIDEsIDIzNCwgNjcsIDIzLCAxLCAyMTksIDE1MCwgMjMsIDEsIAotICAgIDIzNCwgNjAsIDIzLCAxLCAyMjksIDU3LCAyMywgMSwgMjI5LCA1NSwgMjMsIDEsIDIyOSwgNTQsIDIzLCAxLCAyMTcsIDU1LCAKLSAgICAyMywgMSwgMjE5LCAxMzksIDIzLCAxLCAyMjMsIDE3OSwgMjMsIDEsIDIyMywgMTc0LCAyMywgMSwgMjIzLCAxNzEsIDIzLCAKLSAgICAxLCAyMjMsIDE2NCwgMjMsIDEsIDIyMywgMTU5LCAyMywgMSwgMjIzLCAxNTQsIDIzLCAxLCAyMjMsIDE2NSwgMjMsIDEsIAotICAgIDIyMywgMTc3LCAyMywgMSwgMjMxLCAzMCwgMjMsIDEsIDIyNSwgMjI3LCAyMywgMSwgMjE5LCAxNDcsIDIzLCAxLCAyMjUsIAotICAgIDIxNiwgMjMsIDEsIDIyMCwgNzYsIDIzLCAxLCAyMTksIDE0NCwgMjMsIDEsIDIzNiwgNTEsIDIzLCAxLCAyNDksIDIzOSwgCi0gICAgMjMsIDEsIDIxOSwgMTU0LCAyMywgMSwgMjUwLCA0MywgMjMsIDEsIDIzNCwgMTE2LCAyMywgMSwgMjE3LCAxMjYsIDIzLCAxLCAKLSAgICAyMjYsIDcsIDIzLCAxLCAyNDEsIDE1OCwgMjMsIDEsIDYxLCAyMywgMSwgMjU0LCAxNDgsIDIzLCAxLCAxODYsIDIzLCAxLCAKLSAgICAyMTMsIDgwLCAyMywgMSwgMjQ1LCA3NiwgMjMsIDEsIDc0LCAyMywgMSwgMjEzLCAyNywgMjMsIDEsIDIxMywgMzgsIDIzLCAKLSAgICAxLCA3NSwgMjMsIDEsIDIxNCwgNDksIDIzLCAxLCAyMTQsIDQ2LCAyMywgMSwgMjI3LCA5OSwgMjMsIDEsIDIxMiwgMjM1LCAKLSAgICAyMywgMSwgNjksIDIzLCAxLCAyMTMsIDI1MiwgMjMsIDEsIDIxNCwgNiwgMjMsIDEsIDIxMywgMjM1LCAyMywgMSwgMjEyLCAKLSAgICAyMDMsIDIzLCAxLCAyNDUsIDIyLCAyMywgMSwgMjEyLCAyNTUsIDIzLCAxLCA3MiwgMjMsIDI0NCwgNzIsIDIzLCAxLCAyMTksIAotICAgIDE0OCwgMjMsIDEsIDIyOSwgNDcsIDIzLCAxLCAyMjksIDQ5LCAyMywgMSwgMjI5LCA1MiwgMjMsIDEsIDIyMywgMTcyLCAyMywgCi0gICAgMSwgMjIzLCAxNTMsIDIzLCAxLCAyMjMsIDE2MSwgMjMsIDEsIDIyMywgMTY2LCAyMywgMSwgMjIzLCAxNTEsIDIzLCAxLCAKLSAgICAyMzEsIDIzLCAyMywgMSwgMjMxLCAyMCwgMjMsIDEsIDIzMSwgMjQsIDIzLCAxLCAyMzQsIDIyNiwgMjMsIDEsIDIyNSwgCi0gICAgMjIyLCAyMywgMSwgMjI1LCAyMDgsIDIzLCAxLCAyMjUsIDIxNCwgMjMsIDEsIDIyNSwgMjExLCAyMywgMSwgMjI1LCAyMjUsIAotICAgIDIzLCAxLCAyMjUsIDIwOSwgMjMsIDEsIDIzNCwgMjI0LCAyMywgMSwgMjM0LCAyMjIsIDIzLCAxLCAyMjAsIDY5LCAyMywgMSwgCi0gICAgMjIwLCA2NywgMjMsIDEsIDIyMCwgNTksIDIzLCAxLCAyMjAsIDY0LCAyMywgMSwgMjIwLCA3NCwgMjMsIDEsIDIyNiwgMTYwLCAKLSAgICAyMywgMSwgMjE5LCAxNTEsIDIzLCAxLCAyMTMsIDE3LCAyMywgMSwgMjEzLCAxMywgMjMsIDEsIDIxMywgMTQsIDIzLCAxLCAKLSAgICAyMzQsIDIyNSwgMjMsIDEsIDIxOSwgMTUyLCAyMywgMSwgMjEzLCAyMywgMjMsIDEsIDIxMiwgMjI5LCAyMywgMSwgMjEyLCAKLSAgICAyMjgsIDIzLCAxLCAyMTIsIDIzMSwgMjMsIDEsIDIxMiwgMTk0LCAyMywgMSwgMjEyLCAxOTUsIDIzLCAxLCAyMTIsIDE5OCwgCi0gICAgMjMsIDEsIDI1MywgMjA0LCAyMywgMSwgMjUzLCAxOTgsIDEwNSwgMjU0LCAxMCwgMjMyLCAyMzIsIDc3LCAxMDUsIDI1NCwgCi0gICAgMTAsIDIyMywgMjAzLCA3NywgMTA1LCAyNTQsIDEwLCAxMjIsIDc3LCAxMDUsIDI1NCwgMTAsIDExNywgNzcsIDEwNSwgMjU0LCAKLSAgICAxMCwgMTMzLCA3NywgMTA1LCAyNTQsIDEwLCAyNDMsIDIzNywgNzcsIDEwNSwgMjU0LCAxMCwgMjE2LCAyMjcsIDc3LCAxMDUsIAotICAgIDI1NCwgMTAsIDIzMSwgMzcsIDc3LCAxMDUsIDI1NCwgMTAsIDI1MSwgMTAxLCA3NywgMTA1LCAyNTQsIDEwLCAyNDQsIDYxLCAKLSAgICA3NywgMTA1LCAyNTQsIDEwLCAyMjIsIDk1LCA3NywgMTA1LCAyNTQsIDEwLCAyMTcsIDEyMiwgNzcsIDEwNSwgMjU0LCAxMCwgCi0gICAgMjQzLCAyMzAsIDc3LCAxMDUsIDI1NCwgMTAsIDI0MSwgMjA4LCA3NywgMTA1LCAyNTQsIDEwLCAyNDUsIDE4MCwgNzcsIAotICAgIDEwNSwgMjU0LCAxMCwgMjMxLCAyNDksIDc3LCAyMDIsIDEsIDI1MSwgNTQsIDIwMiwgMSwgMjEyLCAzNywgMjAyLCAxLCAKLSAgICAyMzUsIDExMCwgMjAyLCAxLCAyNDIsIDkyLCAyMDIsIDEsIDI0NSwgMTY1LCAyMDIsIDEsIDI0NSwgOTMsIDIwMiwgMSwgCi0gICAgMjI3LCA0OSwgMjAyLCAxLCAyMjcsIDUzLCAyMDIsIDEsIDIzNSwgMTc3LCAyMDIsIDEsIDI1NCwgMTIsIDIwMiwgMSwgMjM1LCAKLSAgICAyMjEsIDIwMiwgMSwgMjE1LCAxMzksIDIwMiwgMSwgMjM2LCAxMSwgMjAyLCAxLCAyMjksIDE0MiwgMjAyLCAxLCAyNTQsIAotICAgIDEwMiwgMjAyLCAxLCAyNTMsIDEwMywgMjAyLCAxLCAyNTQsIDQ1LCAyMDIsIDEsIDIyNywgNzAsIDIwMiwgMSwgMjI3LCA1NSwgCi0gICAgMjAyLCAxLCAyMzUsIDIxOCwgMjAyLCA0MCwgMSwgMjI2LCAyMjksIDIwMiwgNDAsIDEsIDIxOCwgOTksIDIwMiwgNDAsIDEsIAotICAgIDIzNSwgMjcsIDIwMiwgNDAsIDEsIDI0MiwgNDEsIDIwMiwgMSwgMjQyLCAyMjYsIDIwMiwgMSwgMjMzLCAyNiwgMjAyLCAxLCAKLSAgICAyMTEsIDI0OSwgOSwgMjE5LCA0NSwgMjE4LCA5OSwgOSwgMjE5LCA0NSwgMjEzLCAyNDUsIDksIDIxOSwgNDUsIDIxMywgCi0gICAgMTQ2LCA5LCAyMTksIDQ1LCAyNTEsIDgsIDksIDIxOSwgNDUsIDIxOCwgMTk5LCA5LCAyMTksIDQ1LCAyNDAsIDE1MCwgOSwgCi0gICAgMjE5LCA0NSwgMjQwLCAxNTQsIDksIDIxOSwgNDUsIDI0MCwgMjE4LCA5LCAyMTksIDQ1LCAyNDAsIDE1MSwgOSwgMjE5LCAKLSAgICA0NSwgMjE4LCAxMDIsIDksIDIxOSwgNDUsIDI0MCwgMTUzLCA5LCAyMTksIDQ1LCAyNDAsIDE0OSwgOSwgMjE5LCA0NSwgCi0gICAgMjQwLCAyMTYsIDksIDIxOSwgNDUsIDI0MCwgMTUyLCA5LCAyMTksIDQ1LCAyNDAsIDE0OCwgOSwgMjE5LCA0NSwgMjA0LCA5LCAKLSAgICAyMTksIDQ1LCAyNDIsIDQxLCA5LCAyMTksIDQ1LCAxOTcsIDksIDIxOSwgNDUsIDIyNiwgMjI5LCA5LCAyMTksIDQ1LCAyMTksIAotICAgIDIwOCwgOSwgMjE5LCA0NSwgMjQ5LCAzLCA5LCAyMTksIDQ1LCAyNDAsIDE1NSwgOSwgMjE5LCA0NSwgMjQxLCAxNzUsIDksIAotICAgIDIxOSwgNDUsIDIxOCwgMTExLCA5LCAyMTksIDQ1LCAyMTgsIDE3OCwgOSwgMjE5LCA0NSwgMjE5LCAxMDcsIDksIDIxOSwgCi0gICAgNDUsIDIyMSwgMzEsIDksIDIxOSwgNDUsIDIyNiwgOTgsIDksIDIxOSwgNDUsIDIyNCwgMjQyLCA5LCAyMTksIDQ1LCAyMTYsIAotICAgIDI1MywgOSwgMjE5LCA0NSwgMjE4LCAxMDEsIDksIDIxOSwgNDUsIDIxOCwgMTg5LCA5LCAyMTksIDQ1LCAyNDAsIDE2MiwgOSwgCi0gICAgMjE5LCA0NSwgMjQwLCAxNDcsIDksIDIxOSwgNDUsIDIyNiwgMjUsIDksIDIxOSwgNDUsIDIyNCwgMjQwLCA1NiwgMSwgMywgCi0gICAgMjMzLCAyMzgsIDU2LCAxLCAzLCAyMjAsIDExNywgNTYsIDEsIDMsIDIxOSwgMjcsIDU2LCAxLCAzLCAxMDgsIDU2LCAxLCAzLCAKLSAgICAyMjgsIDkyLCA1NiwgMSwgMywgMTU5LCA1NiwgMSwgMywgMjQxLCAxNjUsIDU2LCAxLCAzLCAyNDAsIDIxMiwgNTYsIDEsIDMsIAotICAgIDI0MSwgMjIyLCA1NiwgMSwgMywgMjQxLCA1NCwgNTYsIDEsIDMsIDIzMCwgMTcyLCA1NiwgMSwgMywgMjAzLCA1NiwgMSwgMywgCi0gICAgMjIzLCAxODgsIDU2LCAxLCAzLCAyMjMsIDUxLCA1NiwgMSwgMywgMjI0LCAyMSwgNTYsIDEsIDMsIDIyMywgMTEyLCA4NiwgCi0gICAgMjMsIDIzNCwgNjcsIDg2LCAyMywgMjI5LCA1NywgODYsIDIzLCAyMTcsIDU1LCA4NiwgMjMsIDIyMywgMTc5LCA4NiwgMjMsIAotICAgIDIzMSwgMzAsIDg2LCAyMywgMjI1LCAyMjcsIDg2LCAyMywgMjIwLCA3NiwgODYsIDIzLCAyMzYsIDUxLCA4NiwgMjMsIDI0OSwgCi0gICAgMjM5LCA4NiwgMjMsIDI1MCwgNDMsIDg2LCAyMywgMjM0LCAxMTYsIDg2LCAyMywgMjE3LCAxMjYsIDg2LCAyMywgMjI2LCA3LCAKLSAgICA4NiwgMjMsIDI0MSwgMTU4LCA4NiwgMjMsIDIzNCwgNjgsIDYxLCA4NiwgMjMsIDIyOSwgNTgsIDYxLCA4NiwgMjMsIDIxNywgCi0gICAgNTYsIDYxLCA4NiwgMjMsIDIyMywgMTgwLCA2MSwgODYsIDIzLCAyMzEsIDMxLCA2MSwgODYsIDIzLCAyMjUsIDIyOCwgNjEsIAotICAgIDg2LCAyMywgMjIwLCA3NywgNjEsIDg2LCAyMywgMjM2LCA1MiwgNjEsIDg2LCAyMywgMjQ5LCAyNDAsIDYxLCA4NiwgMjMsIAotICAgIDI1MCwgNDQsIDYxLCA4NiwgMjMsIDIzNCwgMTE3LCA2MSwgODYsIDIzLCAyMTcsIDEyNywgNjEsIDg2LCAyMywgMjI2LCA4LCAKLSAgICA2MSwgODYsIDIzLCAyNDEsIDE1OSwgNjEsIDg2LCAyMywgMjQ5LCAyNDAsIDY5LCA4NiwgMjM0LCAxMiwgMTM3LCAyMjcsIAotICAgIDgzLCA4NiwgMjM0LCAxMiwgMTM3LCAxNTcsIDI0MCwgMjEyLCA4NiwgMTQzLCAxMTYsIDg2LCAxNDMsIDEwOSwgODYsIDE0MywgCi0gICAgMTY2LCA4NiwgMTQzLCAxNjMsIDg2LCAxNDMsIDE4MCwgODYsIDE0MywgMTg5LCA4NiwgMTQzLCAxOTgsIDg2LCAxNDMsIAotICAgIDE5NSwgODYsIDE0MywgMjAwLCA4NiwgMTQzLCAyMTcsIDIwMCwgODYsIDE0MywgMjMwLCAxOTgsIDg2LCAxNDMsIDI0NCwgCi0gICAgNjUsIDg2LCAxNDMsIDIxNCwgMjQsIDg2LCAxNDMsIDIxMywgMjAxLCA4NiwgMTQzLCAyMzEsIDEwNiwgODYsIDE0MywgMjQ1LCAKLSAgICAxNzksIDg2LCAxNDMsIDIxOCwgMjM4LCA4NiwgMTQzLCAyMTksIDcyLCA4NiwgMTQzLCAyNDEsIDIyOCwgODYsIDE0MywgCi0gICAgMjE5LCAyMzgsIDg2LCAxNDMsIDIzMCwgMjQsIDg2LCAxNDMsIDIxOSwgMTkyLCA4NiwgMTQzLCAyNDQsIDcxLCA4NiwgMTQzLCAKLSAgICAyNDksIDE0MCwgODYsIDE0MywgMjMzLCAxNDgsIDg2LCAxNDMsIDIyMywgMjIzLCA4NiwgMTQzLCAyNTAsIDIwMywgODYsIAotICAgIDE0MywgMjE5LCAzMCwgODYsIDE0MywgMjE4LCAyMjAsIDg2LCAxNDMsIDI0NSwgODYsIDg2LCAxNDMsIDIyMywgMjE1LCA4NiwgCi0gICAgMTQzLCAyNTQsIDU5LCA4NiwgMTQzLCAyNDQsIDk3LCA4NiwgMTQzLCAyMjMsIDIxMywgODYsIDE0MywgMjIxLCA3NiwgODYsIAotICAgIDE0MywgMjI0LCAyMCwgMzYsIDE0MywgMjI0LCAxNTcsIDM2LCAxNDMsIDIzNCwgODksIDM2LCAxNDMsIDIyMiwgMTE2LCAzNiwgCi0gICAgMTQzLCAyMzQsIDgsIDM2LCA1MCwgMjE3LCAyMDEsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMTYsIDM5LCAKLSAgICAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjE3LCAxMTYsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAKLSAgICAyNDMsIDI0MSwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDI0NCwgODQsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgCi0gICAgMzYsIDUwLCAyMjAsIDQwLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjIxLCAzOCwgMjI3LCA2MywgODMsIAotICAgIDIxOSwgMTY2LCAzNiwgNTAsIDI0NSwgMTQyLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDIyNiwgMTIzLCA1MiwgMzYsIDUwLCAKLSAgICAyMTYsIDM5LCAxMTYsIDM2LCA1MCwgMjE2LCAzOSwgMTA5LCAzNiwgNTAsIDIxNiwgMzksIDE2NiwgMzYsIDUwLCAyMTYsIAotICAgIDM5LCAxNjMsIDM2LCA1MCwgMjE2LCAzOSwgMTgwLCAzNiwgNTAsIDIxNiwgMzksIDE4OSwgMzYsIDUwLCAyMTYsIDM5LCAKLSAgICAxOTgsIDM2LCA1MCwgMjE2LCAzOSwgMTk1LCAzNiwgNTAsIDIxNiwgMzksIDIwMCwgMzYsIDUwLCAyMTcsIDExNSwgMzYsIAotICAgIDUwLCAyMTcsIDExNiwgMTE2LCAzNiwgNTAsIDIxNywgMTE2LCAxMDksIDM2LCA1MCwgMjE3LCAxMTYsIDE2NiwgMzYsIDUwLCAKLSAgICAyMTcsIDExNiwgMTYzLCAzNiwgNTAsIDIxNywgMTE2LCAxODAsIDM2LCAyMywgMjM0LCA2NywgMzYsIDIzLCAyMjksIDU3LCAKLSAgICAzNiwgMjMsIDIxNywgNTUsIDM2LCAyMywgMjIzLCAxNzksIDM2LCAyMywgMjMxLCAzMCwgMzYsIDIzLCAyMjUsIDIyNywgMzYsIAotICAgIDIzLCAyMjAsIDc2LCAzNiwgMjMsIDIzNiwgNTEsIDM2LCAyMywgMjQ5LCAyMzksIDM2LCAyMywgMjUwLCA0MywgMzYsIDIzLCAKLSAgICAyMzQsIDExNiwgMzYsIDIzLCAyMTcsIDEyNiwgMzYsIDIzLCAyMjYsIDcsIDM2LCAyMywgMjQxLCAxNTgsIDM2LCAyMywgCi0gICAgMjM0LCA2OCwgNjEsIDM2LCAyMywgMjI5LCA1OCwgNjEsIDM2LCAyMywgMjE3LCA1NiwgNjEsIDM2LCAyMywgMjIzLCAxODAsIAotICAgIDYxLCAzNiwgMjMsIDIzMSwgMzEsIDYxLCAzNiwgMjMsIDIyNSwgMjI4LCA2MSwgMzYsIDIzLCAyMjAsIDc3LCA2MSwgMzYsIAotICAgIDIzLCAyMzYsIDUyLCA2MSwgMzYsIDIzLCAyNDksIDI0MCwgNjEsIDM2LCAyMywgMjUwLCA0NCwgNjEsIDM2LCAyMywgMjM0LCAKLSAgICAxMTcsIDYxLCAzNiwgMjMsIDIxNywgMTI3LCA2MSwgMzYsIDIzLCAyMjYsIDgsIDYxLCAzNiwgMjMsIDI0MSwgMTU5LCA2MSwgCi0gICAgMzYsIDIzNCwgMTIsIDEzNywgMjUwLCA4NCwgMzYsIDIzNCwgMTIsIDEzNywgMjM1LCA1MCwgMzYsIDIzLCAyMzYsIDUyLCAKLSAgICA2OSwgMjM0LCAxMiwgMjE5LCA5OCwgODcsIDM2LCAxNDMsIDExNiwgMzYsIDE0MywgMTA5LCAzNiwgMTQzLCAxNjYsIDM2LCAKLSAgICAxNDMsIDE2MywgMzYsIDE0MywgMTgwLCAzNiwgMTQzLCAxODksIDM2LCAxNDMsIDE5OCwgMzYsIDE0MywgMTk1LCAzNiwgCi0gICAgMTQzLCAyMDAsIDM2LCAxNDMsIDIxNywgMjAwLCAzNiwgMTQzLCAyMzAsIDE5OCwgMzYsIDE0MywgMjQ0LCA2NSwgMzYsIAotICAgIDE0MywgMjE0LCAyNCwgMzYsIDE0MywgMjEzLCAyMDEsIDM2LCAxNDMsIDIzMSwgMTA2LCAzNiwgMTQzLCAyNDUsIDE3OSwgCi0gICAgMzYsIDE0MywgMjE4LCAyMzgsIDM2LCAxNDMsIDIxOSwgNzIsIDM2LCAxNDMsIDI0MSwgMjI4LCAzNiwgMTQzLCAyMTksIAotICAgIDIzOCwgMzYsIDE0MywgMjMwLCAyNCwgMzYsIDE0MywgMjE5LCAxOTIsIDM2LCAxNDMsIDI0NCwgNzEsIDM2LCAxNDMsIDI0OSwgCi0gICAgMTQwLCAzNiwgMTQzLCAyMzMsIDE0OCwgMzYsIDE0MywgMjIyLCA5MywgMzYsIDE0MywgMjMxLCAyNTIsIDM2LCAxNDMsIAotICAgIDI0NCwgMTA2LCAzNiwgMTQzLCAyMTgsIDI1MCwgMzYsIDE0MywgMjQ1LCAxLCAzNiwgMTQzLCAyMjUsIDY4LCAzNiwgMTQzLCAKLSAgICAyNTMsIDExMiwgMzYsIDE0MywgMjM1LCAxNTcsIDM2LCAxNDMsIDIyMywgMjEzLCAzNiwgMTQzLCAyNDksIDEwMywgMzYsIAotICAgIDE0MywgMjQ5LCA5NCwgMzYsIDE0MywgMjQxLCAxNTEsIDM2LCAxNDMsIDI1MCwgMTA4LCAzNiwgMTQzLCAyMzIsIDE2NSwgCi0gICAgMzYsIDE0MywgMjMzLCA3MCwgMzYsIDE0MywgMjIzLCAxNDgsIDM2LCAxNDMsIDIzMSwgMTQ4LCAzNiwgMTQzLCAyMjMsIAotICAgIDIzNywgMzYsIDE0MywgMjE5LCAzMCwgMzYsIDE0MywgMjE4LCAyMjAsIDM2LCAxNDMsIDI0NSwgODYsIDM2LCAxNDMsIDIyMywgCi0gICAgMjE1LCAzNiwgMTQzLCAyNTQsIDU5LCAzNiwgMTQzLCAyMjksIDQzLCAzNiwgNTAsIDIxNywgMTE2LCAxODksIDM2LCA1MCwgCi0gICAgMjE3LCAxMTYsIDE5OCwgMzYsIDUwLCAyMTcsIDExNiwgMTk1LCAzNiwgNTAsIDIxNywgMTE2LCAyMDAsIDM2LCA1MCwgMjQzLCAKLSAgICAyNDAsIDM2LCA1MCwgMjQzLCAyNDEsIDExNiwgMzYsIDUwLCAyNDMsIDI0MSwgMTA5LCAzNiwgNTAsIDI0MywgMjQxLCAxNjYsIAotICAgIDM2LCA1MCwgMjQzLCAyNDEsIDE2MywgMzYsIDUwLCAyNDMsIDI0MSwgMTgwLCAzNiwgNTAsIDI0MywgMjQxLCAxODksIDM2LCAKLSAgICA1MCwgMjQzLCAyNDEsIDE5OCwgMzYsIDUwLCAyNDMsIDI0MSwgMTk1LCAzNiwgNTAsIDI0MywgMjQxLCAyMDAsIDM2LCA1MCwgCi0gICAgMjQ0LCA4MywgMTA1LCAyMDEsIDE2LCAzMSwgMjM1LCAxMzMsIDEwNSwgMjAxLCAxNiwgMzEsIDI0NCwgMTE3LCAxMDUsIAotICAgIDIwMSwgMTYsIDMxLCAyMzEsIDIyMywgMTA1LCAyMDEsIDE2LCAzMSwgMjUzLCAyMTcsIDEwNSwgMjAxLCAxNiwgMzEsIDIzMSwgCi0gICAgMTk2LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDQ4LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDQ5LCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNTMsIDEwNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjIxLCA1NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjI3LCAxMDQsIDEwNSwgCi0gICAgMjAxLCAxNiwgMzEsIDIyOCwgMTUxLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDM2LCA0MSwgMjQxLCAxNzUsIDQxLCAyNDUsIAotICAgIDUxLCA0MSwgMjQ1LCAxMCwgMjMyLCAyNDgsIDIzMywgMTIsIDUyLCAzNiwgNTYsIDYxLCAzNiwgNTYsIDcyLCAzNiwgNTYsIAotICAgIDY5LCAzNiwgNTYsIDc0LCAzNiwgNTYsIDc1LCAzNiwgNTYsIDE4MSwgMzYsIDU2LCAyMzQsIDEwMSwgMzYsIDU2LCAyMzMsIAotICAgIDIzOCwgMzYsIDU2LCAyMzQsIDE4OCwgMzYsIDU2LCAyMzQsIDM3LCAzNiwgNTYsIDIyMiwgMjAyLCAzNiwgNTYsIDIyMCwgCi0gICAgMTE3LCAzNiwgNTYsIDIxOSwgMjcsIDM2LCA1NiwgMjIyLCAxMDAsIDM2LCA1NiwgMjE5LCAyNDIsIDM2LCA1NiwgMjE4LCAKLSAgICA1MiwgMzYsIDU2LCAyMTcsIDcxLCAzNiwgNTYsIDIxNiwgODIsIDM2LCA1NiwgMjE3LCAyMjksIDM2LCA1NiwgMTA4LCAzNiwgCi0gICAgNTYsIDIwNSwgMzYsIDU2LCAyMjksIDY0LCAzNiwgNTYsIDIyOCwgOTIsIDM2LCA1NiwgMjI5LCAxODcsIDM2LCA1NiwgMjI4LCAKLSAgICAxODUsIDM2LCA1NiwgMTU5LCAzNiwgNTYsIDI0MSwgMTY1LCAzNiwgNTYsIDI0MCwgMjEyLCAzNiwgNTYsIDI0MSwgMjIyLCAKLSAgICAzNiwgNTYsIDI0MSwgNTQsIDM2LCA1NiwgMTg4LCAzNiwgNTYsIDIzMSwgNDIsIDM2LCA1NiwgMjMwLCAxNzIsIDM2LCA1NiwgCi0gICAgMjMxLCAxNTYsIDM2LCA1NiwgMjMwLCAyMzEsIDM2LCA1NiwgMTg2LCAzNiwgNTYsIDIxMiwgMjAzLCAzNiwgNTYsIDIxMiwgCi0gICAgMjM1LCAzNiwgNTYsIDIwMywgMzYsIDU2LCAyMjMsIDE4OCwgMzYsIDU2LCAyMjMsIDUxLCAzNiwgNTYsIDIyNCwgMjEsIDM2LCAKLSAgICA1NiwgMjIzLCAxMTIsIDM2LCA1NiwgMjE0LCA0OSwgMzYsIDU2LCAyMTMsIDIzNSwgMzYsIDU2LCAyMTQsIDYsIDM2LCA1NiwgCi0gICAgMjEzLCAyMTQsIDQxLCAyNTMsIDIzOCwgNDEsIDI1MywgMTU0LCA0MSwgMjU0LCA2LCA0MSwgMjU0LCAxOTAsIDQxLCAyMzUsIAotICAgIDIyMywgNDEsIDIzNSwgMTkzLCA0MSwgMjE1LCAxMzcsIDQxLCAyNDUsIDMxLCA0MSwgMjQ1LCAxNjMsIDQxLCAyMjcsIDUyLCAKLSAgICA0MSwgMjI3LCA0NiwgNDEsIDIzNCwgMjQ5LCA0MSwgMjM0LCAyMTksIDQxLCAyMzQsIDIxNiwgNDEsIDI0MywgNjgsIDQxLCAKLSAgICAyNDMsIDc3LCA0MSwgMjQyLCAxODAsIDQxLCAyNDIsIDE3NiwgNDEsIDIzMywgMTcyLCA0MSwgMjQyLCAxNjksIDQxLCAyMzQsIAotICAgIDgxLCA0MSwgMjM0LCA4MCwgNDEsIDIzNCwgNzksIDQxLCAyMzQsIDc4LCA0MSwgMjQyLCA2NywgNDEsIDI0MiwgNjYsIDQxLCAKLSAgICAyMzMsIDIxNCwgNDEsIDIzMywgMjE2LCA0MSwgMjM0LCAxODQsIDQxLCAyMzQsIDEwLCA0MSwgMjM0LCAxNywgNDEsIDIyMiwgCi0gICAgMTg3LCA0MSwgMjIyLCAxNTMsIDQxLCAyMjAsIDU3LCA0MSwgMjIxLCA2MSwgNDEsIDIyMSwgNjAsIDQxLCAyNDgsIDE2MSwgCi0gICAgNDEsIDI0NywgMjQzLCA0MSwgMjQ3LCA3NSwgNDEsIDIxNiwgMjQzLCA0MSwgMjMwLCAyMCwgNDEsIDIyOCwgMTUyLCA0MSwgCi0gICAgMjQyLCAxNCwgNDEsIDIyNiwgMjA4LCA0MSwgMjI2LCAyMDcsIDQxLCAyNTIsIDEwNSwgNDEsIDIyNSwgMjM3LCA0MSwgMjI1LCAKLSAgICAyMDEsIDQxLCAyMjUsIDIwMiwgNDEsIDI1MSwgMTU3LCA0MSwgMjQwLCAyMTEsIDQxLCAyNDAsIDIwNywgNDEsIDI1MSwgMjAsIAotICAgIDQxLCAyNDAsIDE5NCwgNDEsIDI0MSwgMTk5LCA0MSwgMjI2LCAzNSwgNDEsIDIyNiwgNjksIDQxLCAyNDEsIDE4MywgNDEsIAotICAgIDIyNiwgNjYsIDQxLCAyMjYsIDgyLCA0MSwgMjUxLCAyMzcsIDQxLCAyMjUsIDE0MCwgNDEsIDI1MSwgMTA2LCA0MSwgMjQxLCAKLSAgICA0MiwgNDEsIDIyNSwgMTMwLCA0MSwgMjQxLCAzNSwgNDEsIDI0MSwgMzcsIDQxLCAyMzIsIDcsIDQxLCAyMzIsIDMsIDQxLCAKLSAgICAyMzIsIDExLCA0MSwgMjMxLCAyMTMsIDQxLCAyMzEsIDIzOCwgNDEsIDIzMSwgMTAsIDQxLCAyMzAsIDI0NSwgNDEsIDIzMCwgCi0gICAgMjQ0LCA0MSwgMjMxLCAxMzgsIDQxLCAyMzEsIDEzNSwgNDEsIDIzMSwgMTM5LCA0MSwgMjEzLCA5MCwgNDEsIDIxMywgODgsIAotICAgIDQxLCAyMTIsIDE5MiwgNDEsIDIyMywgMTIzLCA0MSwgMjIzLCAxMjcsIDQxLCAyMjMsIDI4LCA0MSwgMjIzLCAyMywgNDEsIAotICAgIDIyMywgMjM1LCA0MSwgMjIzLCAyMzIsIDQxLCAyMTQsIDIyLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjEyLCA3OSwgCi0gICAgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDExNiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDEwOSwgMTA1LCAKLSAgICAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE2NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE2MywgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDE4MCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE4OSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQwLCAyMjYsIDE5OCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE5NSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAKLSAgICAyMjYsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNywgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIAotICAgIDIyNiwgMjQ1LCAxMjQsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDQxLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDAsIDIyNiwgMjE3LCAxMTcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyNDMsIDIzMSwgMTA1LCAyMDEsIDE2LCAKLSAgICAzMSwgMjQwLCAyMjYsIDI0NCwgODcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMjAsIDQ3LCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDAsIDIyNiwgMjIxLCA0MCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDI0NSwgMTQ3LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMjI5LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDMyLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAyOCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMjksIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDM0LCA0MSwgMjQwLCAKLSAgICAyMTcsIDQxLCAyNDgsIDE2NCwgNDEsIDI1MywgMTA4LCA0MSwgMTM0LCA0MSwgMjI2LCAyNDksIDQxLCAyMjYsIDk5LCA0MSwgCi0gICAgMjQ3LCAxMDEsIDQxLCAyNDcsIDEwMiwgMjE5LCAxNjUsIDQxLCAyNDcsIDEwMiwgMjQ5LCA0OSwgNDEsIDIzNSwgMTU0LCAKLSAgICA0MSwgMjQ1LCA1NCwgMjMwLCAyNSwgMjQxLCAyMDAsIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyMTgsIDEyMCwgNDEsIDI0NSwgCi0gICAgNTQsIDIzMCwgMjUsIDIxOCwgMjQsIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyMzEsIDEzNCwgNDEsIDI0OSwgOTYsIDQxLCAKLSAgICAyMjYsIDIxNCwgMjU0LCAzNCwgNDEsIDIwNSwgNDEsIDIzMCwgMTczLCA2MSwgNDEsIDE4OCwgNDEsIDE4MSwgNDEsIDIzNCwgCi0gICAgMTkxLCA0MSwgMjMxLCAxOTIsIDQxLCAyNDMsIDU2LCA0MSwgMjUwLCAyMDYsIDQxLCAyMzQsIDE5MCwgNDEsIDIyNiwgMjYsIAotICAgIDQxLCAyMjksIDE2MywgNDEsIDIzMCwgMTczLCAyNDQsIDIzMCwgNDEsIDIzMCwgMTczLCAyNDMsIDE3NywgNDEsIDIzMSwgCi0gICAgODIsIDQxLCAyMzQsIDE0MCwgNDEsIDI0MCwgMTU1LCA0MSwgMjM0LCAxMDMsIDQxLCAyMzEsIDQ0LCA0MSwgMjQyLCAxOTIsIAotICAgIDQxLCAyMTcsIDczLCA0MSwgMjMwLCAxNzMsIDE1MCwgNDEsIDIzMCwgMjM4LCA0MSwgMjQ3LCAxMDksIDQxLCAyMzQsIDQ5LCAKLSAgICA0MSwgMjQ0LCAxNCwgNDEsIDIyOCwgMjAwLCA0MSwgMjMwLCAxNzMsIDE4MywgNDEsIDIzMCwgMjM1LCA0MSwgMjQ5LCAxNzYsIAotICAgIDQxLCAyMzQsIDQzLCA0MSwgMjMwLCAyMzYsIDIxOSwgMTY1LCA0MSwgMjQ5LCAxNzcsIDIxOSwgMTY1LCA0MSwgMjMyLCAKLSAgICAxMTAsIDIxOSwgMTY1LCA0MSwgMjM0LCA0NCwgMjE5LCAxNjUsIDQxLCAyMzAsIDIzNiwgMjQ5LCA0OSwgNDEsIDI0OSwgCi0gICAgMTc3LCAyNDksIDQ5LCA0MSwgMjMyLCAxMTAsIDI0OSwgNDksIDQxLCAyMzQsIDQ0LCAyNDksIDQ5LCA0MSwgMjMyLCAxMTAsIAotICAgIDExMCwgMTk3LCA0MSwgMjMyLCAxMTAsIDExMCwgMjIzLCA0LCAyMTksIDE2NSwgNDEsIDE5MywgNDEsIDIzNCwgNCwgNDEsIAotICAgIDIzMCwgMTc1LCA0MSwgMjQyLCAxMjcsIDQxLCAyMjQsIDY2LCA0MSwgMjI0LCA2NywgMTEwLCAxOTcsIDQxLCAyMjQsIDY3LCAKLSAgICAxMTAsIDIyMywgNCwgMjE5LCAxNjUsIDQxLCAyMjUsIDQ3LCA0MSwgMjI4LCAxMjQsIDQxLCAyMzAsIDE3MywgMTk3LCA0MSwgCi0gICAgMjMwLCAxNzQsIDQxLCAyMjUsIDQsIDQxLCAyMjgsIDMzLCA0MSwgMjMwLCAxNzMsIDIxNSwgNzksIDQxLCAyMzAsIDEyMCwgCi0gICAgNDEsIDIzMywgMjA3LCA0MSwgMjMwLCAxMjEsIDIzMSwgMTM4LCA0MSwgMjI1LCAzLCA0MSwgMjI4LCAzMiwgNDEsIDIzMCwgCi0gICAgMTczLCAyMTQsIDgyLCA0MSwgMjMwLCAxMTUsIDQxLCAyMzMsIDIwNSwgNDEsIDIzMCwgMTE2LCAyMzEsIDEzOCwgNDEsIAotICAgIDIzNSwgMjgsIDIyNywgODYsIDQxLCAyMzIsIDExMCwgMjI3LCA4NiwgNDEsIDI1NCwgNDUsIDQxLCAyNTEsIDg3LCA0MSwgCi0gICAgMjUwLCAxNDcsIDQxLCAyNTAsIDEyNSwgNDEsIDI1MCwgMjUzLCAxMTAsIDIzNCwgMTQwLCA0MSwgMjQ5LCAxNzUsIDQxLCAKLSAgICAyNDgsIDg4LCA0MSwgMjQyLCA1MywgNDEsIDE1OSwgNDEsIDI0MCwgMjE4LCA0MSwgMjM1LCAyNTEsIDQxLCAyMzQsIDU2LCAKLSAgICA0MSwgMjM0LCA0NCwgMjUwLCAxODIsIDQxLCAyMzMsIDI0MCwgNDEsIDIzMiwgMjExLCA0MSwgMjMyLCAyMTAsIDQxLCAyMzIsIAotICAgIDIwMCwgNDEsIDIzMiwgMTIyLCA0MSwgMjMxLCAxOTMsIDIyMCwgNywgNDEsIDIzMSwgOSwgNDEsIDIzMCwgMjIyLCA0MSwgCi0gICAgMjI2LCAyNCwgNDEsIDIyNSwgMTUzLCA0MSwgMjI1LCA5OSwgNDEsIDIyNSwgOTcsIDQxLCAyMTksIDE1OSwgNDEsIDIxOCwgCi0gICAgMjAzLCA0MSwgMjE0LCA4LCA0MSwgMjE1LCA4MCwgMTEwLCAxODMsIDQxLCAxMTgsIDExMCwgMTgzLCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDgsIDkyLCAxMTYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDEwOSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCAKLSAgICA5MiwgMTY2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxNjMsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE4MCwgCi0gICAgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTg5LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxOTgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0OCwgOTIsIDE5NSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTcsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjQ1LCAxMjQsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgNDEsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNywgMTE3LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyNDMsIDIzMSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjQ0LCA4NywgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjIwLCA0NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjIxLCA0MCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjQ1LCAxNDcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIyOSwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzIsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMjksIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzQsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzUsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzEsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzMsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNywgMTE1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTcsIDExNCwgNDEsIDI0MywgOTQsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI0OSwgODAsIDI0MSwgMjA3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMjQsIDE1LCAKLSAgICAyNDUsIDE3OSwgMjQxLCAxNzcsIDMxLCAyNDcsIDE4MywgMjUzLCAxMjMsIDIxNywgMTQ5LCAyNTEsIDIzMiwgMjQxLCAxNzcsIAotICAgIDMxLCAyMTIsIDIxNCwgMjQ0LCA3LCAyNDEsIDE3NywgMzEsIDIxNCwgNDMsIDI0MSwgMTc3LCAzMSwgMjQ5LCAxNDIsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI1MywgMTc0LCAyNDEsIDE3NywgMzEsIDI0MSwgNDYsIDIxNiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDMsIDIxOCwgMTIsIDI0MSwgMTc3LCAzMSwgMjE2LCAxOTUsIDI0MSwgMTc3LCAzMSwgMjI2LCA5NCwgMjQxLCAxNzcsIAotICAgIDMxLCAyMTksIDk3LCAyNDEsIDE3NywgMzEsIDI0NCwgMTA4LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMjUsIDEyMCwgCi0gICAgMjQxLCAxNzcsIDMxLCAyMzAsIDIyNSwgMjQxLCAxNzcsIDMxLCAyNDUsIDg1LCAyNDEsIDE3NywgMzEsIDI0NCwgOCwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTMsIDE5NCwgMjI3LCA2MywgMjE3LCAxNDksIDI0OCwgMzcsIDI0MSwgMTc3LCAzMSwgMjUzLCAyMjEsIAotICAgIDI0MSwgMTc3LCAzMSwgMjQ5LCAxMjQsIDI0MSwgMTc3LCAzMSwgMjUxLCAxNTAsIDIxNywgOTIsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQyLCAxMjUsIDI0MSwgMTc3LCAzMSwgMjE5LCAxNzcsIDI1MywgMjM3LCAyNDEsIDE3NywgMzEsIDIyMywgMjA1LCAyNDEsIAotICAgIDE3NywgMzEsIDIzNSwgMjE3LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMTgsIDEyLCAyNDEsIDE3NywgMzEsIDIzMCwgCi0gICAgMTgxLCAyNDksIDk4LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMjUsIDc3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAKLSAgICAyNTQsIDE3OCwgMjE0LCAyNCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ5LCAyMDEsIDI0NCwgNjUsIDI0MSwgMTc3LCAKLSAgICAzMSwgMjM1LCAyMzAsIDI0MSwgMTc3LCAzMSwgMjQ2LCAxMiwgMjQxLCAxNzcsIDMxLCAyMjMsIDIwOCwgMjQxLCAxNzcsIAotICAgIDMxLCAyNDIsIDEwOSwgMjI1LCAxMDQsIDI0MSwgMTc3LCAzMSwgMjI1LCA2MSwgMjQxLCAxNzcsIDMxLCAyNDgsIDEwNiwgCi0gICAgNjUsIDIxNywgMTQ5LCAyMzMsIDIsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0NCwgMTQyLCAyNDEsIDE3NywgMzEsIAotICAgIDIyNywgMjksIDI0MSwgMTc3LCAzMSwgMjI3LCAxMDgsIDI0MSwgMTc3LCAzMSwgMjQ4LCAxMCwgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDgsIDMwLCAyNDEsIDE3NywgMzEsIDIzNSwgMjQzLCAyNDEsIDE3NywgMzEsIDI1MSwgNzcsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQ5LCAxNTksIDIxMSwgMjExLCAyMzEsIDE0MSwgMjQxLCAxNzcsIDMxLCAyNDMsIDYzLCAyMTYsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMjUsIDEyLCAyMTUsIDEyNSwgMjQxLCAxNzcsIDMxLCAyMjcsIDI4LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAKLSAgICAyMTMsIDI1NCwgMjQxLCAxNzcsIDMxLCAyMjMsIDE5OCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjUwLCAxNTMsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI1MywgMTcwLCAyMTcsIDg3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzQsIDE4NSwgCi0gICAgMjE5LCA3NCwgMjMwLCAxODUsIDI0MSwgMTc3LCAzMSwgMjQ3LCAyMzksIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzMSwgCi0gICAgMjE1LCAyMzIsIDgsIDI0MSwgMTc3LCAzMSwgMjU0LCAxNzksIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIxNCwgMzgsIAotICAgIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0MywgMjMsIDIxMywgMjI0LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzUsIAotICAgIDU1LCAyMzMsIDEzMSwgMjQxLCAxNzcsIDMxLCAyNDcsIDEzNiwgMjQxLCAxNzcsIDMxLCAyMzIsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMzUsIDIyMCwgMjE2LCAxNDUsIDI0MSwgMTc3LCAzMSwgMywgMjI1LCA3NywgMjQxLCAxNzcsIDMxLCAyNTQsIDEyMiwgCi0gICAgMjQ5LCAxNTEsIDI0MSwgMTc3LCAzMSwgMjUxLCAyMzUsIDI0OSwgMTUxLCA4LCA0LCAyMzUsIDE1OCwgOCwgNCwgMjM1LCAKLSAgICAxNTEsIDgsIDQsIDcyLCA4LCA0LCAyMzUsIDE4MCwgOCwgNCwgMjM2LCA1MywgOCwgNCwgMjM2LCAzNiwgOCwgNCwgMjM2LCAKLSAgICA1NSwgOCwgNCwgMjM2LCA1NCwgOCwgNCwgMjUzLCAxMjIsIDgsIDQsIDI1MywgODUsIDgsIDQsIDYxLCA4LCA0LCAyNTMsIAotICAgIDIzOSwgOCwgNCwgMjE1LCAxMzUsIDgsIDQsIDIxNSwgMTM4LCA4LCA0LCAyMTUsIDEzNiwgOCwgNCwgMjI3LCA4LCA4LCA0LCAKLSAgICAyMjYsIDIzOCwgOCwgNCwgNzUsIDgsIDQsIDIyNywgNDEsIDgsIDQsIDI0NSwgMiwgOCwgNCwgNzQsIDgsIDQsIDIxMywgCi0gICAgMTgzLCA4LCA0LCAyNTEsIDE1MSwgOCwgNCwgMjUxLCAxNDgsIDgsIDQsIDI1MSwgMTg0LCA4LCA0LCAyNTEsIDE2MSwgOCwgCi0gICAgNCwgMjUxLCAxNzQsIDgsIDQsIDI1MSwgMTczLCA4LCA0LCAyNTEsIDE3NiwgOCwgNCwgMjUxLCAxNzUsIDgsIDQsIDI1MiwgCi0gICAgNDEsIDgsIDQsIDI1MiwgMzMsIDgsIDQsIDI1MiwgMTA3LCA4LCA0LCAyNTIsIDYxLCA4LCA0LCAyNTEsIDMwLCA4LCA0LCAKLSAgICAyNTEsIDM0LCA4LCA0LCAyNTEsIDMxLCA4LCA0LCAyNTEsIDEwNSwgOCwgNCwgMjUxLCA4OSwgOCwgNCwgMjUxLCAxMjgsIDgsIAotICAgIDQsIDI1MSwgMTEwLCA4LCA0LCAyNTEsIDE5OCwgOCwgNCwgMjUxLCAyNTEsIDgsIDQsIDI1MSwgMjEwLCA4LCA0LCAyNTEsIAotICAgIDE2LCA4LCA0LCAyNTEsIDEzLCA4LCA0LCAyNTEsIDU0LCA4LCA0LCAyNTEsIDI5LCA4LCA0LCAyNTEsIDIzLCA4LCA0LCAKLSAgICAyNTEsIDI3LCA4LCA0LCAyNTEsIDEsIDgsIDQsIDI1MSwgMCwgOCwgNCwgMjUxLCA2LCA4LCA0LCAyNTEsIDQsIDgsIDQsIAotICAgIDI1MSwgMiwgOCwgNCwgMjUxLCAzLCA4LCA0LCAyMjUsIDE4MSwgOCwgNCwgMjI1LCAxNzcsIDgsIDQsIDIyNSwgMjQwLCA4LCAKLSAgICA0LCAyMjUsIDE5MSwgOCwgNCwgMjI1LCAyMDcsIDgsIDQsIDIyNSwgMjM0LCA4LCA0LCAyMjUsIDIzMCwgOCwgNCwgMjI2LCAKLSAgICAxMTMsIDgsIDQsIDIyNiwgMTA0LCA4LCA0LCAxOTMsIDgsIDQsIDIyNiwgMTQ5LCA4LCA0LCAyMjUsIDIxLCA4LCA0LCAyMjUsIAotICAgIDIzLCA4LCA0LCAyMjUsIDIyLCA4LCA0LCAyMjUsIDExMywgOCwgNCwgMjI1LCAxMDIsIDgsIDQsIDIyNSwgMTUwLCA4LCA0LCAKLSAgICAyMjUsIDEyNSwgOCwgNCwgMjI1LCA4LCA4LCA0LCAyMjUsIDUsIDgsIDQsIDIyNSwgMzUsIDgsIDQsIDIyNSwgMjAsIDgsIDQsIAotICAgIDIyNSwgMTMsIDgsIDQsIDIyNSwgMTgsIDgsIDQsIDIyNCwgMjQ0LCA4LCA0LCAyMjQsIDI0MywgOCwgNCwgMjI0LCAyNDgsIAotICAgIDgsIDQsIDIyNCwgMjQ3LCA4LCA0LCAyMjQsIDI0NSwgOCwgNCwgMjI0LCAyNDYsIDgsIDQsIDI1MiwgMTYsIDgsIDQsIDI1MiwgCi0gICAgMTUsIDgsIDQsIDI1MiwgMjIsIDgsIDQsIDI1MiwgMTcsIDgsIDQsIDI1MiwgMTksIDgsIDQsIDI1MiwgMTgsIDgsIDQsIAotICAgIDI1MiwgMjEsIDgsIDQsIDI1MiwgMjAsIDgsIDQsIDI1MiwgMjgsIDgsIDQsIDI1MiwgMjcsIDgsIDQsIDI1MiwgMzEsIDgsIAotICAgIDQsIDI1MiwgMjksIDgsIDQsIDI1MiwgNywgOCwgNCwgMjUyLCA5LCA4LCA0LCAyNTIsIDgsIDgsIDQsIDI1MiwgMTIsIDgsIAotICAgIDQsIDI1MiwgMTEsIDgsIDQsIDI1MiwgMTQsIDgsIDQsIDI1MiwgMTMsIDgsIDQsIDI1MiwgMjMsIDgsIDQsIDI1MiwgMjYsIAotICAgIDgsIDQsIDI1MiwgMjQsIDgsIDQsIDI1MiwgMywgOCwgNCwgMjUyLCAyLCA4LCA0LCAyNTIsIDEwLCA4LCA0LCAyNTIsIDYsIAotICAgIDgsIDQsIDI1MiwgNCwgOCwgNCwgMjUyLCA1LCA4LCA0LCAyNTEsIDI1NSwgOCwgNCwgMjUxLCAyNTQsIDgsIDQsIDI1MiwgMSwgCi0gICAgOCwgNCwgMjUyLCAwLCA4LCA0LCAyMjksIDI0OCwgOCwgNCwgMjI5LCAyNDcsIDgsIDQsIDIyOSwgMjUzLCA4LCA0LCAyMjksIAotICAgIDI0OSwgOCwgNCwgMjI5LCAyNTAsIDgsIDQsIDIyOSwgMjUyLCA4LCA0LCAyMjksIDI1MSwgOCwgNCwgMjI5LCAyNTUsIDgsIAotICAgIDQsIDIyOSwgMjU0LCA4LCA0LCAyMzAsIDEsIDgsIDQsIDIzMCwgMCwgOCwgNCwgMjI5LCAyNDQsIDgsIDQsIDIyOSwgMjQzLCAKLSAgICA4LCA0LCAyMjksIDI0NiwgOCwgNCwgMjI5LCAyNDUsIDgsIDQsIDIyOSwgMjM4LCA4LCA0LCAyMjksIDIzNywgOCwgNCwgCi0gICAgMjI5LCAyNDIsIDgsIDQsIDIyOSwgMjQxLCA4LCA0LCAyMjksIDIzOSwgOCwgNCwgMjI5LCAyNDAsIDgsIDQsIDIyOSwgMjMyLCAKLSAgICA4LCA0LCAyMjksIDIzMSwgOCwgNCwgMjI5LCAyMzYsIDgsIDQsIDIyOSwgMjM1LCA4LCA0LCAyMjksIDIzMywgOCwgNCwgCi0gICAgMjI5LCAyMzQsIDgsIDQsIDI0MSwgOTYsIDgsIDQsIDI0MSwgOTUsIDgsIDQsIDI0MSwgMTAxLCA4LCA0LCAyNDEsIDk3LCA4LCAKLSAgICA0LCAyNDEsIDk4LCA4LCA0LCAyNDEsIDEwMCwgOCwgNCwgMjQxLCA5OSwgOCwgNCwgMjQxLCAxMDQsIDgsIDQsIDI0MSwgCi0gICAgMTAzLCA4LCA0LCAyNDEsIDEwNiwgOCwgNCwgMjQxLCAxMDUsIDgsIDQsIDI0MSwgODcsIDgsIDQsIDI0MSwgODksIDgsIDQsIAotICAgIDI0MSwgODgsIDgsIDQsIDI0MSwgOTIsIDgsIDQsIDI0MSwgOTEsIDgsIDQsIDI0MSwgOTQsIDgsIDQsIDI0MSwgOTMsIDgsIAotICAgIDQsIDI0MSwgODMsIDgsIDQsIDI0MSwgODIsIDgsIDQsIDI0MSwgOTAsIDgsIDQsIDI0MSwgODYsIDgsIDQsIDI0MSwgODQsIAotICAgIDgsIDQsIDI0MSwgODUsIDgsIDQsIDI0MSwgNzcsIDgsIDQsIDI0MSwgODEsIDgsIDQsIDI0MSwgODAsIDgsIDQsIDI0MSwgCi0gICAgNzgsIDgsIDQsIDI0MSwgNzksIDgsIDQsIDIzMCwgMjQxLCA4LCA0LCAyMzAsIDI0MCwgOCwgNCwgMjMxLCA0MiwgOCwgNCwgCi0gICAgMjMwLCAyNDcsIDgsIDQsIDIzMSwgMTYsIDgsIDQsIDIzMSwgMzQsIDgsIDQsIDIzMSwgMzIsIDgsIDQsIDIzMSwgMjAyLCA4LCAKLSAgICA0LCAyMzEsIDE5OCwgOCwgNCwgMTg4LCA4LCA0LCAyMzEsIDIzNSwgOCwgNCwgMjMwLCAxNDQsIDgsIDQsIDIzMCwgMTQzLCAKLSAgICA4LCA0LCAyMzAsIDE0NywgOCwgNCwgMjMwLCAxNDUsIDgsIDQsIDIzMCwgMTkxLCA4LCA0LCAyMzAsIDE3NywgOCwgNCwgCi0gICAgMjMwLCAyMzEsIDgsIDQsIDIzMCwgMTk2LCA4LCA0LCAyMzEsIDkzLCA4LCA0LCAyMzEsIDE1NiwgOCwgNCwgMjMwLCAxMjUsIAotICAgIDgsIDQsIDIzMCwgMTIyLCA4LCA0LCAyMzAsIDE3MiwgOCwgNCwgMjMwLCAxNDAsIDgsIDQsIDIzMCwgMTMzLCA4LCA0LCAKLSAgICAyMzAsIDEzOCwgOCwgNCwgMjMwLCAxMDAsIDgsIDQsIDIzMCwgOTksIDgsIDQsIDIzMCwgMTA1LCA4LCA0LCAyMzAsIDEwMiwgCi0gICAgOCwgNCwgMjQ0LCA1MiwgOCwgNCwgMjQ0LCA0NywgOCwgNCwgMjQ0LCA5MCwgOCwgNCwgMjQ0LCA2NywgOCwgNCwgMjQ0LCAKLSAgICAxMzUsIDgsIDQsIDI0NCwgMTI2LCA4LCA0LCAyNDQsIDE2NCwgOCwgNCwgMjQ0LCAxMzgsIDgsIDQsIDI0MywgMjI5LCA4LCAKLSAgICA0LCAyNDQsIDEyLCA4LCA0LCAyNDMsIDI1MiwgOCwgNCwgMjQzLCAxOTAsIDgsIDQsIDI0MywgMTg5LCA4LCA0LCAyNDMsIAotICAgIDIwNSwgOCwgNCwgMjQzLCAxOTUsIDgsIDQsIDI0MywgMTkzLCA4LCA0LCAyNDMsIDE5NCwgOCwgNCwgMjQzLCAxODAsIDgsIAotICAgIDQsIDI0MywgMTc5LCA4LCA0LCAyNDMsIDE4MywgOCwgNCwgMjQzLCAxODEsIDgsIDQsIDIxNCwgMTI1LCA4LCA0LCAyMTQsIAotICAgIDEyMCwgOCwgNCwgMjE0LCAxNTQsIDgsIDQsIDIxNCwgMTM0LCA4LCA0LCAyMTQsIDE0NiwgOCwgNCwgMjE0LCAxNDMsIDgsIAotICAgIDQsIDIxNCwgMTQ4LCA4LCA0LCAyMTQsIDE0NywgOCwgNCwgMjE0LCAyMzksIDgsIDQsIDIxNCwgMjM1LCA4LCA0LCAyMTUsIAotICAgIDEsIDgsIDQsIDIxNCwgMjUwLCA4LCA0LCAyMTQsIDEwNiwgOCwgNCwgMjE0LCAxMDIsIDgsIDQsIDIxNCwgMTE5LCA4LCA0LCAKLSAgICAyMTQsIDEwNywgOCwgNCwgMjE0LCAxNTUsIDgsIDQsIDIxNCwgMjIxLCA4LCA0LCAyMTQsIDkzLCA4LCA0LCAyMTQsIDkyLCAKLSAgICA4LCA0LCAyMTQsIDk5LCA4LCA0LCAyMTQsIDk2LCA4LCA0LCAyMTQsIDk0LCA4LCA0LCAyMTQsIDk1LCA4LCA0LCAyMTQsIAotICAgIDg2LCA4LCA0LCAyMTQsIDg1LCA4LCA0LCAyMTQsIDkwLCA4LCA0LCAyMTQsIDg5LCA4LCA0LCAyMTQsIDg3LCA4LCA0LCAKLSAgICAyMTQsIDg4LCA4LCA0LCAyNDcsIDEzMCwgOCwgNCwgMjQ3LCAxMTgsIDgsIDQsIDI0NywgMjExLCA4LCA0LCAyNDcsIDE1NSwgCi0gICAgOCwgNCwgMjQ3LCAxODgsIDgsIDQsIDI0NywgMTkyLCA4LCA0LCAyNDcsIDE5MSwgOCwgNCwgMjQ4LCA5OCwgOCwgNCwgMjQ4LCAKLSAgICA5MywgOCwgNCwgMjQ4LCAxNjQsIDgsIDQsIDI0OCwgMTE3LCA4LCA0LCAyNDYsIDE3LCA4LCA0LCAyNDYsIDE4LCA4LCA0LCAKLSAgICAyNDcsIDc0LCA4LCA0LCAyNDYsIDU2LCA4LCA0LCAyNDcsIDk5LCA4LCA0LCAyNDcsIDc2LCA4LCA0LCAyNDcsIDIzNywgOCwgCi0gICAgNCwgMjQ4LCA0MSwgOCwgNCwgMjQ3LCAyNTIsIDgsIDQsIDI0NiwgOCwgOCwgNCwgMjQ2LCA2LCA4LCA0LCAyNDYsIDMzLCA4LCAKLSAgICA0LCAyNDYsIDE2LCA4LCA0LCAyNDYsIDExLCA4LCA0LCAyNDYsIDE0LCA4LCA0LCAyMTcsIDIwLCA4LCA0LCAyMTcsIDE0LCAKLSAgICA4LCA0LCAyMTcsIDcxLCA4LCA0LCAyMTcsIDI5LCA4LCA0LCAyMTcsIDYzLCA4LCA0LCAyMTcsIDY1LCA4LCA0LCAyMTcsIAotICAgIDY0LCA4LCA0LCAyMTcsIDI1MywgOCwgNCwgMjE3LCAyNDAsIDgsIDQsIDIxOCwgNTIsIDgsIDQsIDIxOCwgNSwgOCwgNCwgCi0gICAgMjE2LCA2NiwgOCwgNCwgMjE2LCA2NSwgOCwgNCwgMjE2LCA2OCwgOCwgNCwgMjE2LCA2NywgOCwgNCwgMjE2LCAyMTgsIDgsIAotICAgIDQsIDIxNiwgMjE0LCA4LCA0LCAxMDgsIDgsIDQsIDIxNiwgMjI2LCA4LCA0LCAyMTcsIDE2NiwgOCwgNCwgMjE3LCAyMjksIAotICAgIDgsIDQsIDIxNywgMTkwLCA4LCA0LCAyMTYsIDUyLCA4LCA0LCAyMTYsIDQ4LCA4LCA0LCAyMTYsIDgyLCA4LCA0LCAyMTYsIAotICAgIDY0LCA4LCA0LCAyMTYsIDUzLCA4LCA0LCAyMTYsIDYyLCA4LCA0LCAyNDgsIDU4LCA4LCA0LCAyNDgsIDU3LCA4LCA0LCAKLSAgICAyNDgsIDYzLCA4LCA0LCAyNDgsIDU5LCA4LCA0LCAyNDgsIDYwLCA4LCA0LCAyNDgsIDYyLCA4LCA0LCAyNDgsIDYxLCA4LCAKLSAgICA0LCAyNDgsIDc5LCA4LCA0LCAyNDgsIDc4LCA4LCA0LCAyNDgsIDg2LCA4LCA0LCAyNDgsIDgwLCA4LCA0LCAyNDgsIDQ4LCAKLSAgICA4LCA0LCAyNDgsIDUwLCA4LCA0LCAyNDgsIDQ5LCA4LCA0LCAyNDgsIDUzLCA4LCA0LCAyNDgsIDUyLCA4LCA0LCAyNDgsIAotICAgIDU2LCA4LCA0LCAyNDgsIDU0LCA4LCA0LCAyNDgsIDcxLCA4LCA0LCAyNDgsIDc0LCA4LCA0LCAyNDgsIDcyLCA4LCA0LCAKLSAgICAyNDgsIDQ0LCA4LCA0LCAyNDgsIDQzLCA4LCA0LCAyNDgsIDUxLCA4LCA0LCAyNDgsIDQ3LCA4LCA0LCAyNDgsIDQ1LCA4LCAKLSAgICA0LCAyNDgsIDQ2LCA4LCA0LCAyMjksIDIwNiwgOCwgNCwgMjI5LCAyMDUsIDgsIDQsIDIyOSwgMjEzLCA4LCA0LCAyMjksIAotICAgIDIwOCwgOCwgNCwgMjI5LCAyMDksIDgsIDQsIDIyOSwgMjEwLCA4LCA0LCAyMjksIDIyMiwgOCwgNCwgMjI5LCAyMjEsIDgsIAotICAgIDQsIDIyOSwgMjI4LCA4LCA0LCAyMjksIDIyMywgOCwgNCwgMjI5LCAxOTgsIDgsIDQsIDIyOSwgMTk3LCA4LCA0LCAyMjksIAotICAgIDIwNCwgOCwgNCwgMjI5LCAxOTksIDgsIDQsIDIyOSwgMjE0LCA4LCA0LCAyMjksIDIyMCwgOCwgNCwgMjI5LCAyMTgsIDgsIAotICAgIDQsIDIyOSwgMTkwLCA4LCA0LCAyMjksIDE4OSwgOCwgNCwgMjI5LCAxOTUsIDgsIDQsIDIyOSwgMTkzLCA4LCA0LCAyMjksIAotICAgIDE5MSwgOCwgNCwgMjI5LCAxOTIsIDgsIDQsIDI0MSwgNjMsIDgsIDQsIDI0MSwgNjIsIDgsIDQsIDI0MSwgNjksIDgsIDQsIAotICAgIDI0MSwgNjQsIDgsIDQsIDI0MSwgNjYsIDgsIDQsIDI0MSwgNjUsIDgsIDQsIDI0MSwgNjgsIDgsIDQsIDI0MSwgNjcsIDgsIAotICAgIDQsIDI0MSwgNzQsIDgsIDQsIDI0MSwgNzMsIDgsIDQsIDI0MSwgNzYsIDgsIDQsIDI0MSwgNzUsIDgsIDQsIDI0MSwgNTcsIAotICAgIDgsIDQsIDI0MSwgNTgsIDgsIDQsIDI0MSwgNjAsIDgsIDQsIDI0MSwgNTksIDgsIDQsIDI0MSwgNjEsIDgsIDQsIDI0MSwgCi0gICAgNzAsIDgsIDQsIDI0MSwgNzIsIDgsIDQsIDI0MSwgNzEsIDgsIDQsIDI0MSwgNTYsIDgsIDQsIDIyOSwgMjAsIDgsIDQsIAotICAgIDIyOSwgMTgsIDgsIDQsIDIyOSwgNjQsIDgsIDQsIDIyOSwgMjMsIDgsIDQsIDIyOSwgNDYsIDgsIDQsIDIyOSwgNjAsIDgsIAotICAgIDQsIDIyOSwgNTksIDgsIDQsIDIzMCwgNSwgOCwgNCwgMjA1LCA4LCA0LCAyMzAsIDE3LCA4LCA0LCAyMjgsIDQyLCA4LCA0LCAKLSAgICAyMjgsIDQ0LCA4LCA0LCAyMjgsIDQzLCA4LCA0LCAyMjgsIDE2MiwgOCwgNCwgMjI4LCAxNDksIDgsIDQsIDIyOCwgMTg1LCAKLSAgICA4LCA0LCAyMjgsIDE3MSwgOCwgNCwgMjI5LCAxNjUsIDgsIDQsIDIyOSwgMTg3LCA4LCA0LCAyMjksIDE3NiwgOCwgNCwgCi0gICAgMjI4LCAzNywgOCwgNCwgMjI4LCAzNCwgOCwgNCwgMjI4LCA5MiwgOCwgNCwgMjI4LCA0MSwgOCwgNCwgMjI4LCAzOSwgOCwgCi0gICAgNCwgMjI4LCA0MCwgOCwgNCwgMjQxLCAxMjcsIDgsIDQsIDI0MSwgMTI2LCA4LCA0LCAyNDEsIDEzMiwgOCwgNCwgMjQxLCAKLSAgICAxMjgsIDgsIDQsIDI0MSwgMTI5LCA4LCA0LCAyNDEsIDEzMSwgOCwgNCwgMjQxLCAxMzAsIDgsIDQsIDI0MSwgMTM3LCA4LCAKLSAgICA0LCAyNDEsIDEzNiwgOCwgNCwgMjQxLCAxMzksIDgsIDQsIDI0MSwgMTM4LCA4LCA0LCAyNDEsIDExOSwgOCwgNCwgMjQxLCAKLSAgICAxMjEsIDgsIDQsIDI0MSwgMTIwLCA4LCA0LCAyNDEsIDEyMywgOCwgNCwgMjQxLCAxMjUsIDgsIDQsIDI0MSwgMTI0LCA4LCAKLSAgICA0LCAyNDEsIDEzMywgOCwgNCwgMjQxLCAxMzUsIDgsIDQsIDI0MSwgMTM0LCA4LCA0LCAyNDEsIDExNSwgOCwgNCwgMjQxLCAKLSAgICAxMTQsIDgsIDQsIDI0MSwgMTIyLCA4LCA0LCAyNDEsIDExOCwgOCwgNCwgMjQxLCAxMTYsIDgsIDQsIDI0MSwgMTE3LCA4LCAKLSAgICA0LCAyNDEsIDEwOSwgOCwgNCwgMjQxLCAxMDgsIDgsIDQsIDI0MSwgMTEzLCA4LCA0LCAyNDEsIDExMiwgOCwgNCwgMjQxLCAKLSAgICAxMTAsIDgsIDQsIDI0MSwgMTExLCA4LCA0LCAyMzIsIDIyNCwgOCwgNCwgMjMyLCAyMTgsIDgsIDQsIDIzMywgMTMsIDgsIDQsIAotICAgIDIzMiwgMjMxLCA4LCA0LCAyMzMsIDUsIDgsIDQsIDIzMywgNCwgOCwgNCwgMjMzLCA4LCA4LCA0LCAyMzMsIDYsIDgsIDQsIAotICAgIDIzMywgMTAyLCA4LCA0LCAyMzMsIDkzLCA4LCA0LCAyMzMsIDE1NywgOCwgNCwgMjMzLCAxMTEsIDgsIDQsIDIzMiwgMTM3LCAKLSAgICA4LCA0LCAyMzIsIDEzNiwgOCwgNCwgMjMyLCAxMzksIDgsIDQsIDIzMiwgMTM4LCA4LCA0LCAyMzIsIDE3MSwgOCwgNCwgCi0gICAgMjMyLCAxNjEsIDgsIDQsIDIzMiwgMjA4LCA4LCA0LCAyMzIsIDE3NSwgOCwgNCwgMjMzLCAyOCwgOCwgNCwgMjMzLCA4MiwgCi0gICAgOCwgNCwgMjMzLCA0MSwgOCwgNCwgMjMyLCAxMzIsIDgsIDQsIDIzMiwgMTMxLCA4LCA0LCAyMzIsIDE1NiwgOCwgNCwgMjMyLCAKLSAgICAxMzUsIDgsIDQsIDIzMiwgMTMzLCA4LCA0LCAyMzIsIDEzNCwgOCwgNCwgMjMyLCAxMTQsIDgsIDQsIDIzMiwgMTEzLCA4LCAKLSAgICA0LCAyMzIsIDEyMSwgOCwgNCwgMjMyLCAxMTcsIDgsIDQsIDIzMiwgMTE1LCA4LCA0LCAyMzIsIDExNiwgOCwgNCwgMjQyLCAKLSAgICAxNjUsIDgsIDQsIDI0MiwgMTY0LCA4LCA0LCAyNDIsIDE5MCwgOCwgNCwgMjQyLCAxNzUsIDgsIDQsIDI0MiwgMTgyLCA4LCAKLSAgICA0LCAyNDIsIDE4MSwgOCwgNCwgMjQyLCAxODQsIDgsIDQsIDI0MiwgMTgzLCA4LCA0LCAyNDMsIDY1LCA4LCA0LCAyNDMsIAotICAgIDYwLCA4LCA0LCAyNDMsIDExMCwgOCwgNCwgMjQzLCA3NSwgOCwgNCwgMjQyLCA3MiwgOCwgNCwgMjQyLCA3MSwgOCwgNCwgCi0gICAgMjQyLCA3NCwgOCwgNCwgMjQyLCA3MywgOCwgNCwgMjQyLCAxMzAsIDgsIDQsIDI0MiwgMTI4LCA4LCA0LCAyNDIsIDE1MCwgCi0gICAgOCwgNCwgMjQyLCAxMzgsIDgsIDQsIDI0MywgOSwgOCwgNCwgMjQzLCA3LCA4LCA0LCAyNDMsIDM4LCA4LCA0LCAyNDMsIDIwLCAKLSAgICA4LCA0LCAyNDIsIDYyLCA4LCA0LCAyNDIsIDYxLCA4LCA0LCAyNDIsIDkyLCA4LCA0LCAyNDIsIDcwLCA4LCA0LCAyNDIsIAotICAgIDYzLCA4LCA0LCAyNDIsIDY5LCA4LCA0LCAyMzQsIDcwLCA4LCA0LCAyMzQsIDY5LCA4LCA0LCAyMzQsIDEwMSwgOCwgNCwgCi0gICAgMjM0LCA4NCwgOCwgNCwgMjM0LCA5NCwgOCwgNCwgMjM0LCA5NywgOCwgNCwgMjM0LCA5NSwgOCwgNCwgMjM0LCAyMDcsIDgsIAotICAgIDQsIDIzNCwgMTk2LCA4LCA0LCAxODEsIDgsIDQsIDIzNCwgMjMzLCA4LCA0LCAyMzMsIDIyMSwgOCwgNCwgMjMzLCAyMjYsIAotICAgIDgsIDQsIDIzMywgMjIzLCA4LCA0LCAyMzQsIDksIDgsIDQsIDIzNCwgNSwgOCwgNCwgMjM0LCAzNywgOCwgNCwgMjM0LCAxNiwgCi0gICAgOCwgNCwgMjM0LCAxNjIsIDgsIDQsIDIzNCwgMTQ2LCA4LCA0LCAyMzQsIDE4OCwgOCwgNCwgMjM0LCAxNjUsIDgsIDQsIAotICAgIDIzMywgMjEwLCA4LCA0LCAyMzMsIDIwOCwgOCwgNCwgMjMzLCAyMzgsIDgsIDQsIDIzMywgMjIwLCA4LCA0LCAyMzMsIDIxMywgCi0gICAgOCwgNCwgMjMzLCAyMTcsIDgsIDQsIDI0MiwgMjQ3LCA4LCA0LCAyNDIsIDI0NiwgOCwgNCwgMjQyLCAyNTEsIDgsIDQsIAotICAgIDI0MiwgMjQ4LCA4LCA0LCAyNDIsIDI1MCwgOCwgNCwgMjQyLCAyNDksIDgsIDQsIDI0MywgMiwgOCwgNCwgMjQzLCAxLCA4LCAKLSAgICA0LCAyNDMsIDUsIDgsIDQsIDI0MywgMywgOCwgNCwgMjQyLCAyMzgsIDgsIDQsIDI0MiwgMjM3LCA4LCA0LCAyNDIsIDI0MCwgCi0gICAgOCwgNCwgMjQyLCAyMzksIDgsIDQsIDI0MiwgMjQzLCA4LCA0LCAyNDIsIDI0MiwgOCwgNCwgMjQyLCAyNDUsIDgsIDQsIAotICAgIDI0MiwgMjQ0LCA4LCA0LCAyNDIsIDI1MywgOCwgNCwgMjQyLCAyNTIsIDgsIDQsIDI0MywgMCwgOCwgNCwgMjQyLCAyNTQsIAotICAgIDgsIDQsIDI0MiwgMjMzLCA4LCA0LCAyNDIsIDIzMiwgOCwgNCwgMjQyLCAyNDEsIDgsIDQsIDI0MiwgMjM2LCA4LCA0LCAKLSAgICAyNDIsIDIzNCwgOCwgNCwgMjQyLCAyMzUsIDgsIDQsIDIzMSwgNjAsIDgsIDQsIDIzMSwgNjEsIDgsIDQsIDIzMSwgNzksIDgsIAotICAgIDQsIDIzMSwgNzgsIDgsIDQsIDIzMSwgODEsIDgsIDQsIDIzMSwgODAsIDgsIDQsIDIzMSwgNTEsIDgsIDQsIDIzMSwgNTMsIAotICAgIDgsIDQsIDIzMSwgNTIsIDgsIDQsIDIzMSwgNTYsIDgsIDQsIDIzMSwgNTUsIDgsIDQsIDIzMSwgNTgsIDgsIDQsIDIzMSwgCi0gICAgNTcsIDgsIDQsIDIzMSwgNjIsIDgsIDQsIDIzMSwgNjQsIDgsIDQsIDIzMSwgNjMsIDgsIDQsIDIzMSwgNDcsIDgsIDQsIAotICAgIDIzMSwgNDYsIDgsIDQsIDIzMSwgNTQsIDgsIDQsIDIzMSwgNTAsIDgsIDQsIDIzMSwgNDgsIDgsIDQsIDIzMSwgNDksIDgsIAotICAgIDQsIDI0MCwgMTcyLCA4LCA0LCAyNDAsIDE3MSwgOCwgNCwgMjQwLCAxNzgsIDgsIDQsIDI0MCwgMTczLCA4LCA0LCAyNDAsIAotICAgIDE3NSwgOCwgNCwgMjQwLCAxNzQsIDgsIDQsIDI0MCwgMTc3LCA4LCA0LCAyNDAsIDE3NiwgOCwgNCwgMjQwLCAxODMsIDgsIAotICAgIDQsIDI0MCwgMTgyLCA4LCA0LCAyNDAsIDE4NSwgOCwgNCwgMjQwLCAxODQsIDgsIDQsIDI0MCwgMTY0LCA4LCA0LCAyNDAsIAotICAgIDE2MywgOCwgNCwgMjQwLCAxNjYsIDgsIDQsIDI0MCwgMTY1LCA4LCA0LCAyNDAsIDE2OCwgOCwgNCwgMjQwLCAxNjcsIDgsIAotICAgIDQsIDI0MCwgMTcwLCA4LCA0LCAyNDAsIDE2OSwgOCwgNCwgMjQwLCAxNzksIDgsIDQsIDI0MCwgMTgxLCA4LCA0LCAyNDAsIAotICAgIDE4MCwgOCwgNCwgMjI5LCAxMTAsIDgsIDQsIDIyOSwgMTEyLCA4LCA0LCAyMjksIDExMSwgOCwgNCwgMjI5LCAxNTAsIDgsIAotICAgIDQsIDIyOSwgMTQ5LCA4LCA0LCAyMjksIDE1OSwgOCwgNCwgMjI5LCAxNTMsIDgsIDQsIDIyOSwgNzMsIDgsIDQsIDIyOSwgCi0gICAgNzIsIDgsIDQsIDIyOSwgNzQsIDgsIDQsIDIyOSwgODIsIDgsIDQsIDIyOSwgNzksIDgsIDQsIDIyOSwgOTAsIDgsIDQsIAotICAgIDIyOSwgODQsIDgsIDQsIDIyOSwgMTQzLCA4LCA0LCAyMjksIDE0OCwgOCwgNCwgMjI5LCAxNDUsIDgsIDQsIDI0MSwgMTQyLCAKLSAgICA4LCA0LCAyNDEsIDE1MiwgOCwgNCwgMjQxLCAxNjAsIDgsIDQsIDI0MSwgMjM0LCA4LCA0LCAyNDEsIDIyNywgOCwgNCwgCi0gICAgMTU5LCA4LCA0LCAyNDEsIDI0NSwgOCwgNCwgMjQwLCAxOTYsIDgsIDQsIDI0MCwgMTk1LCA4LCA0LCAyNDAsIDE5OCwgOCwgCi0gICAgNCwgMjQwLCAxOTcsIDgsIDQsIDI0MCwgMjI5LCA4LCA0LCAyNDAsIDIyMCwgOCwgNCwgMjQxLCA1NCwgOCwgNCwgMjQxLCAKLSAgICAzNCwgOCwgNCwgMjQxLCAxNzksIDgsIDQsIDI0MSwgMjIyLCA4LCA0LCAyNDEsIDE5MCwgOCwgNCwgMjE0LCAyNywgOCwgNCwgCi0gICAgMjE0LCAxMiwgOCwgNCwgMjE0LCA0OSwgOCwgNCwgMjE0LCAzNSwgOCwgNCwgMjEzLCAxNzMsIDgsIDQsIDIxMywgMTc1LCA4LCAKLSAgICA0LCAyMTMsIDE3NCwgOCwgNCwgMjEzLCAxOTEsIDgsIDQsIDIxMywgMjE0LCA4LCA0LCAyMTMsIDE5NywgOCwgNCwgMjEzLCAKLSAgICAyNDYsIDgsIDQsIDIxNCwgNiwgOCwgNCwgMjEzLCAyNTEsIDgsIDQsIDIxMiwgMjMsIDgsIDQsIDIxMiwgMjIsIDgsIDQsIAotICAgIDIxMiwgMzcsIDgsIDQsIDIxMiwgMjUsIDgsIDQsIDIxMiwgMzAsIDgsIDQsIDIxMiwgMzIsIDgsIDQsIDIxMiwgMzEsIDgsIAotICAgIDQsIDIxMiwgOTUsIDgsIDQsIDIxMiwgOTIsIDgsIDQsIDIxMiwgMTA5LCA4LCA0LCAyMTIsIDk4LCA4LCA0LCAyMTIsIDEsIAotICAgIDgsIDQsIDIxMiwgMywgOCwgNCwgMjEyLCAyLCA4LCA0LCAyMTIsIDEyLCA4LCA0LCAyMTIsIDExLCA4LCA0LCAyMTIsIDE2LCAKLSAgICA4LCA0LCAyMTIsIDEzLCA4LCA0LCAyMTIsIDc3LCA4LCA0LCAyMTIsIDg3LCA4LCA0LCAyMTIsIDgxLCA4LCA0LCAyMTEsIAotICAgIDI1MywgOCwgNCwgMjExLCAyNTIsIDgsIDQsIDIxMiwgOCwgOCwgNCwgMjEyLCAwLCA4LCA0LCAyMTEsIDI1NCwgOCwgNCwgCi0gICAgMjExLCAyNTUsIDgsIDQsIDIxMSwgMjQ0LCA4LCA0LCAyMTEsIDI0MywgOCwgNCwgMjExLCAyNDksIDgsIDQsIDIxMSwgMjQ3LCAKLSAgICA4LCA0LCAyMTEsIDI0NSwgOCwgNCwgMjExLCAyNDYsIDgsIDQsIDI0OSwgMjIxLCA4LCA0LCAyNDksIDIxNywgOCwgNCwgCi0gICAgMjQ5LCAyNDQsIDgsIDQsIDI0OSwgMjMwLCA4LCA0LCAyNDksIDI0MSwgOCwgNCwgMjQ5LCAyMzUsIDgsIDQsIDI0OSwgMjQzLCAKLSAgICA4LCA0LCAyNDksIDI0MiwgOCwgNCwgMjUwLCAxNTYsIDgsIDQsIDI1MCwgMTUwLCA4LCA0LCAyNTAsIDIxOSwgOCwgNCwgCi0gICAgMjUwLCAxODMsIDgsIDQsIDI0OSwgNDUsIDgsIDQsIDI0OSwgNDcsIDgsIDQsIDI0OSwgNDYsIDgsIDQsIDI0OSwgOTIsIDgsIAotICAgIDQsIDI0OSwgODMsIDgsIDQsIDI0OSwgMTc1LCA4LCA0LCAyNDksIDEwOCwgOCwgNCwgMjUwLCA5NCwgOCwgNCwgMjUwLCAKLSAgICAxMjQsIDgsIDQsIDI1MCwgOTksIDgsIDQsIDI0OSwgMjYsIDgsIDQsIDI0OSwgMjUsIDgsIDQsIDI0OSwgNTMsIDgsIDQsIAotICAgIDI0OSwgNDMsIDgsIDQsIDI0OSwgMzEsIDgsIDQsIDI0OSwgNDIsIDgsIDQsIDI0OSwgNiwgOCwgNCwgMjQ5LCA1LCA4LCA0LCAKLSAgICAyNDksIDE2LCA4LCA0LCAyNDksIDEyLCA4LCA0LCAyNDksIDcsIDgsIDQsIDI0OSwgOSwgOCwgNCwgMjExLCAyMjcsIDgsIDQsIAotICAgIDIxMSwgMjI2LCA4LCA0LCAyMTEsIDIzMywgOCwgNCwgMjExLCAyMjgsIDgsIDQsIDIxMSwgMjMwLCA4LCA0LCAyMTEsIDIyOSwgCi0gICAgOCwgNCwgMjExLCAyMzIsIDgsIDQsIDIxMSwgMjMxLCA4LCA0LCAyMTEsIDIzOSwgOCwgNCwgMjExLCAyMzgsIDgsIDQsIAotICAgIDIxMSwgMjQyLCA4LCA0LCAyMTEsIDI0MCwgOCwgNCwgMjExLCAyMjMsIDgsIDQsIDIxMSwgMjI1LCA4LCA0LCAyMTEsIDIyNCwgCi0gICAgOCwgNCwgMjExLCAyMzQsIDgsIDQsIDIxMSwgMjM3LCA4LCA0LCAyMTEsIDIzNSwgOCwgNCwgMjExLCAyMTgsIDgsIDQsIAotICAgIDIxMSwgMjIyLCA4LCA0LCAyMTEsIDIyMSwgOCwgNCwgMjExLCAyMTksIDgsIDQsIDIxMSwgMjIwLCA4LCA0LCAyMTEsIDIxMywgCi0gICAgOCwgNCwgMjExLCAyMTIsIDgsIDQsIDIxMSwgMjE3LCA4LCA0LCAyMTEsIDIxNiwgOCwgNCwgMjExLCAyMTQsIDgsIDQsIAotICAgIDIxMSwgMjE1LCA4LCA0LCAyMjcsIDIyNCwgOCwgNCwgMjI3LCAyMjMsIDgsIDQsIDIyNywgMjI5LCA4LCA0LCAyMjcsIDIyNSwgCi0gICAgOCwgNCwgMjI3LCAyMjYsIDgsIDQsIDIyNywgMjI4LCA4LCA0LCAyMjcsIDIyNywgOCwgNCwgMjI3LCAyMzQsIDgsIDQsIAotICAgIDIyNywgMjMzLCA4LCA0LCAyMjcsIDIzNywgOCwgNCwgMjI3LCAyMzYsIDgsIDQsIDIyNywgMjE3LCA4LCA0LCAyMjcsIDIxOCwgCi0gICAgOCwgNCwgMjI3LCAyMjEsIDgsIDQsIDIyNywgMjIyLCA4LCA0LCAyMjcsIDIzMCwgOCwgNCwgMjI3LCAyMzIsIDgsIDQsIAotICAgIDIyNywgMjEyLCA4LCA0LCAyMjcsIDIyMCwgOCwgNCwgMjI3LCAyMTYsIDgsIDQsIDIyNywgMjEzLCA4LCA0LCAyMjcsIDIxNCwgCi0gICAgOCwgNCwgMjI3LCAyMDcsIDgsIDQsIDIyNywgMjA2LCA4LCA0LCAyMjcsIDIxMSwgOCwgNCwgMjI3LCAyMTAsIDgsIDQsIAotICAgIDIyNywgMjA4LCA4LCA0LCAyMjcsIDIwOSwgOCwgNCwgMjIwLCA1NSwgOCwgNCwgMTg5LCA4LCA0LCAyMjAsIDExNywgOCwgNCwgCi0gICAgMjIwLCA1OCwgOCwgNCwgMjIwLCAxMDksIDgsIDQsIDIyMCwgMTEyLCA4LCA0LCAyMjAsIDExMCwgOCwgNCwgMjIyLCAxNDIsIAotICAgIDgsIDQsIDIyMiwgMTMyLCA4LCA0LCAyMjIsIDIwMiwgOCwgNCwgMjIyLCAxNTAsIDgsIDQsIDIxOCwgMjI4LCA4LCA0LCAKLSAgICAyMTgsIDIzMCwgOCwgNCwgMjE4LCAyMjksIDgsIDQsIDIxOSwgMjIxLCA4LCA0LCAyMTksIDIxMCwgOCwgNCwgMjE5LCAyNDIsIAotICAgIDgsIDQsIDIxOSwgMjI0LCA4LCA0LCAyMjEsIDM1LCA4LCA0LCAyMjIsIDEwMCwgOCwgNCwgMjIxLCA1OSwgOCwgNCwgMjE4LCAKLSAgICAyMDYsIDgsIDQsIDIxOCwgMjA0LCA4LCA0LCAyMTksIDI3LCA4LCA0LCAyMTgsIDIyNywgOCwgNCwgMjE4LCAyMDksIDgsIDQsIAotICAgIDIxOCwgMjE3LCA4LCA0LCAyMTgsIDExMywgOCwgNCwgMjE4LCAxMTIsIDgsIDQsIDIxOCwgMTc3LCA4LCA0LCAyMTgsIDExOSwgCi0gICAgOCwgNCwgMjE4LCAxMTQsIDgsIDQsIDIxOCwgMTE4LCA4LCA0LCAyMTksIDEyMywgOCwgNCwgMjE5LCAxMjIsIDgsIDQsIAotICAgIDIxOSwgMTI4LCA4LCA0LCAyMTksIDEyNCwgOCwgNCwgMjE5LCAxMjUsIDgsIDQsIDIxOSwgMTI3LCA4LCA0LCAyMTksIDEyNiwgCi0gICAgOCwgNCwgMjE5LCAxMzUsIDgsIDQsIDIxOSwgMTM0LCA4LCA0LCAyMTksIDE1NywgOCwgNCwgMjE5LCAxMzYsIDgsIDQsIAotICAgIDIxOSwgMTE5LCA4LCA0LCAyMTksIDExOCwgOCwgNCwgMjE5LCAxMjEsIDgsIDQsIDIxOSwgMTIwLCA4LCA0LCAyMTksIDEzMCwgCi0gICAgOCwgNCwgMjE5LCAxMzMsIDgsIDQsIDIxOSwgMTMxLCA4LCA0LCAyMTksIDExNSwgOCwgNCwgMjE5LCAxMTQsIDgsIDQsIAotICAgIDIxOSwgMTE3LCA4LCA0LCAyMTksIDExNiwgOCwgNCwgMjE5LCAxMDksIDgsIDQsIDIxOSwgMTA4LCA4LCA0LCAyMTksIDExMywgCi0gICAgOCwgNCwgMjE5LCAxMTIsIDgsIDQsIDIxOSwgMTEwLCA4LCA0LCAyMTksIDExMSwgOCwgNCwgMjEyLCA3MCwgOCwgNCwgMjEyLCAKLSAgICA2OSwgOCwgNCwgMjEyLCA3NSwgOCwgNCwgMjEyLCA3MiwgOCwgNCwgMjEyLCA1MiwgOCwgNCwgMjEyLCA1NCwgOCwgNCwgCi0gICAgMjEyLCA1MywgOCwgNCwgMjEyLCA1NywgOCwgNCwgMjEyLCA1NiwgOCwgNCwgMjEyLCA2MCwgOCwgNCwgMjEyLCA1OCwgOCwgCi0gICAgNCwgMjEyLCA2NCwgOCwgNCwgMjEyLCA2MywgOCwgNCwgMjEyLCA2NywgOCwgNCwgMjEyLCA2NSwgOCwgNCwgMjEyLCA0OCwgCi0gICAgOCwgNCwgMjEyLCA0NywgOCwgNCwgMjEyLCA1NSwgOCwgNCwgMjEyLCA1MSwgOCwgNCwgMjEyLCA0OSwgOCwgNCwgMjEyLCAKLSAgICA1MCwgOCwgNCwgMjEyLCA0MCwgOCwgNCwgMjEyLCAzOSwgOCwgNCwgMjEyLCA0NCwgOCwgNCwgMjEyLCA0MywgOCwgNCwgCi0gICAgMjEyLCA0MSwgOCwgNCwgMjEyLCA0MiwgOCwgNCwgMjUwLCA3MiwgOCwgNCwgMjUwLCA2OSwgOCwgNCwgMjUwLCA5MiwgOCwgCi0gICAgNCwgMjUwLCA4MCwgOCwgNCwgMjUwLCAyLCA4LCA0LCAyNTAsIDEsIDgsIDQsIDI1MCwgNCwgOCwgNCwgMjUwLCAzLCA4LCA0LCAKLSAgICAyNTAsIDE2LCA4LCA0LCAyNTAsIDE1LCA4LCA0LCAyNTAsIDIzLCA4LCA0LCAyNTAsIDE4LCA4LCA0LCAyNTAsIDUyLCA4LCAKLSAgICA0LCAyNTAsIDUwLCA4LCA0LCAyNTAsIDY3LCA4LCA0LCAyNTAsIDU4LCA4LCA0LCAyNDksIDI1MiwgOCwgNCwgMjUwLCA2LCAKLSAgICA4LCA0LCAyNTAsIDAsIDgsIDQsIDI0OSwgMjUzLCA4LCA0LCAyNDksIDI1NSwgOCwgNCwgMjQ5LCAyNDYsIDgsIDQsIDI0OSwgCi0gICAgMjQ1LCA4LCA0LCAyNDksIDI1MCwgOCwgNCwgMjQ5LCAyNDksIDgsIDQsIDI0OSwgMjQ3LCA4LCA0LCAyNDksIDI0OCwgOCwgCi0gICAgNCwgMjIzLCA4MCwgOCwgNCwgMjIzLCA4MSwgOCwgNCwgMjIzLCA2NywgOCwgNCwgMjIzLCA2OCwgOCwgNCwgMjIzLCA3MSwgCi0gICAgOCwgNCwgMjIzLCA3MCwgOCwgNCwgMjIzLCA3MywgOCwgNCwgMjIzLCA3MiwgOCwgNCwgMjIzLCA3NSwgOCwgNCwgMjIzLCAKLSAgICA3NCwgOCwgNCwgMjIzLCA3OSwgOCwgNCwgMjIzLCA3NiwgOCwgNCwgMjIzLCA2MywgOCwgNCwgMjIzLCA2MiwgOCwgNCwgCi0gICAgMjIzLCA2OSwgOCwgNCwgMjIzLCA2NiwgOCwgNCwgMjIzLCA2NCwgOCwgNCwgMjIzLCA2NSwgOCwgNCwgMjIzLCA1NywgOCwgCi0gICAgNCwgMjIzLCA1NiwgOCwgNCwgMjIzLCA2MSwgOCwgNCwgMjIzLCA2MCwgOCwgNCwgMjIzLCA1OCwgOCwgNCwgMjIzLCA1OSwgCi0gICAgOCwgNCwgMjI4LCAxNDUsIDgsIDQsIDIyOCwgMTQ0LCA4LCA0LCAyMjgsIDE0NywgOCwgNCwgMjI4LCAxNDYsIDgsIDQsIAotICAgIDIyOCwgMTM3LCA4LCA0LCAyMjgsIDEzOSwgOCwgNCwgMjI4LCAxMzgsIDgsIDQsIDIyOCwgMTQxLCA4LCA0LCAyMjgsIDE0MCwgCi0gICAgOCwgNCwgMjI4LCAxNDMsIDgsIDQsIDIyOCwgMTQyLCA4LCA0LCAyMjgsIDEzMiwgOCwgNCwgMjI4LCAxMzEsIDgsIDQsIAotICAgIDIyOCwgMTM2LCA4LCA0LCAyMjgsIDEzNSwgOCwgNCwgMjI4LCAxMzMsIDgsIDQsIDIyOCwgMTM0LCA4LCA0LCAyMjgsIDEyNiwgCi0gICAgOCwgNCwgMjI4LCAxMjUsIDgsIDQsIDIyOCwgMTMwLCA4LCA0LCAyMjgsIDEyOSwgOCwgNCwgMjI4LCAxMjcsIDgsIDQsIAotICAgIDIyOCwgMTI4LCA4LCA0LCAyMjAsIDI1MSwgOCwgNCwgMjIwLCAyNDcsIDgsIDQsIDIyMSwgMjQsIDgsIDQsIDIyMSwgNiwgOCwgCi0gICAgNCwgMjIwLCAxNDAsIDgsIDQsIDIyMCwgMTQyLCA4LCA0LCAyMjAsIDE0MSwgOCwgNCwgMjIwLCAxNjAsIDgsIDQsIDIyMCwgCi0gICAgMTU3LCA4LCA0LCAyMjAsIDE4NywgOCwgNCwgMjIwLCAxNzgsIDgsIDQsIDIyMCwgMjIyLCA4LCA0LCAyMjAsIDIxNSwgOCwgCi0gICAgNCwgMjIwLCAyNDMsIDgsIDQsIDIyMCwgMjMwLCA4LCA0LCAyMjAsIDEzNiwgOCwgNCwgMjIwLCAxMzUsIDgsIDQsIDIyMCwgCi0gICAgMTUwLCA4LCA0LCAyMjAsIDEzOSwgOCwgNCwgMjIwLCAxMzcsIDgsIDQsIDIyMCwgMTM4LCA4LCA0LCAyMjAsIDEyMCwgOCwgCi0gICAgNCwgMjIwLCAxMTksIDgsIDQsIDIyMCwgMTI2LCA4LCA0LCAyMjAsIDEyMywgOCwgNCwgMjIwLCAxMjEsIDgsIDQsIDIyMCwgCi0gICAgMTIyLCA4LCA0LCAyMjQsIDMzLCA4LCA0LCAyMjQsIDI4LCA4LCA0LCAyMDMsIDgsIDQsIDIyNCwgMzksIDgsIDQsIDIyMywgCi0gICAgMzEsIDgsIDQsIDIyMywgMzMsIDgsIDQsIDIyMywgMzIsIDgsIDQsIDIyMywgOTAsIDgsIDQsIDIyMywgODMsIDgsIDQsIAotICAgIDIyMywgMTEyLCA4LCA0LCAyMjMsIDk0LCA4LCA0LCAyMjMsIDE5NiwgOCwgNCwgMjI0LCAyMSwgOCwgNCwgMjIzLCAyMzEsIAotICAgIDgsIDQsIDIyMywgMjQsIDgsIDQsIDIyMywgMjIsIDgsIDQsIDIyMywgNTEsIDgsIDQsIDIyMywgMzAsIDgsIDQsIDIyMywgCi0gICAgMjYsIDgsIDQsIDIyMywgMjcsIDgsIDQsIDIyMywgNywgOCwgNCwgMjIzLCA2LCA4LCA0LCAyMjMsIDEyLCA4LCA0LCAyMjMsIAotICAgIDEwLCA4LCA0LCAyMjMsIDgsIDgsIDQsIDIyMywgOSwgOCwgNCwgMjM1LCAxMDEsIDgsIDQsIDIzNSwgMTAwLCA4LCA0LCAKLSAgICAyMzUsIDExMCwgOCwgNCwgMjM1LCAxMDIsIDgsIDQsIDIzNSwgMTA2LCA4LCA0LCAyMzUsIDEwNSwgOCwgNCwgMjM1LCAxMDgsIAotICAgIDgsIDQsIDIzNSwgMTA3LCA4LCA0LCAyMzUsIDQ0LCA4LCA0LCAyMzUsIDQzLCA4LCA0LCAyMzUsIDQ2LCA4LCA0LCAyMzUsIAotICAgIDQ1LCA4LCA0LCAyMzUsIDU5LCA4LCA0LCAyMzUsIDU3LCA4LCA0LCAyMzUsIDcxLCA4LCA0LCAyMzUsIDYxLCA4LCA0LCAKLSAgICAyMzUsIDM4LCA4LCA0LCAyMzUsIDM2LCA4LCA0LCAyMzUsIDU0LCA4LCA0LCAyMzUsIDQyLCA4LCA0LCAyMzUsIDM5LCA4LCAKLSAgICA0LCAyMzUsIDQwLCA4LCA0LCAyMzUsIDMwLCA4LCA0LCAyMzUsIDI5LCA4LCA0LCAyMzUsIDM0LCA4LCA0LCAyMzUsIDMzLCAKLSAgICA4LCA0LCAyMzUsIDMxLCA4LCA0LCAyMzUsIDMyLCA4LCA0LCAyMjQsIDE5MSwgOCwgNCwgMjI0LCAxODksIDgsIDQsIDIyNCwgCi0gICAgMTk4LCA4LCA0LCAyMjQsIDE5MiwgOCwgNCwgMjI0LCAxOTUsIDgsIDQsIDIyNCwgMTk0LCA4LCA0LCAyMjQsIDE5NywgOCwgCi0gICAgNCwgMjI0LCAxOTYsIDgsIDQsIDIyNCwgMTQ0LCA4LCA0LCAyMjQsIDE0MSwgOCwgNCwgMjI0LCAxNDYsIDgsIDQsIDIyNCwgCi0gICAgMTQ1LCA4LCA0LCAyMjQsIDE3OCwgOCwgNCwgMjI0LCAxNzcsIDgsIDQsIDIyNCwgMTg3LCA4LCA0LCAyMjQsIDE4MSwgOCwgCi0gICAgNCwgMjI0LCAxMzYsIDgsIDQsIDIyNCwgMTMyLCA4LCA0LCAyMjQsIDE3NSwgOCwgNCwgMjI0LCAxNDAsIDgsIDQsIDIyNCwgCi0gICAgMTM4LCA4LCA0LCAyMjQsIDEzOSwgOCwgNCwgMjI0LCAxMTYsIDgsIDQsIDIyNCwgMTE0LCA4LCA0LCAyMjQsIDEyNiwgOCwgCi0gICAgNCwgMjI0LCAxMTksIDgsIDQsIDIyNCwgMTE3LCA4LCA0LCAyMjQsIDExOCwgOCwgNCwgMjM1LCA5MCwgOCwgNCwgMjM1LCAKLSAgICA4OSwgOCwgNCwgMjM1LCA5NiwgOCwgNCwgMjM1LCA5MSwgOCwgNCwgMjM1LCA5MywgOCwgNCwgMjM1LCA5MiwgOCwgNCwgCi0gICAgMjM1LCA5NSwgOCwgNCwgMjM1LCA5NCwgOCwgNCwgMjM1LCA4MSwgOCwgNCwgMjM1LCA4MywgOCwgNCwgMjM1LCA4MiwgOCwgCi0gICAgNCwgMjM1LCA4NiwgOCwgNCwgMjM1LCA4NSwgOCwgNCwgMjM1LCA4OCwgOCwgNCwgMjM1LCA4NywgOCwgNCwgMjM1LCA3NywgCi0gICAgOCwgNCwgMjM1LCA3NiwgOCwgNCwgMjM1LCA4NCwgOCwgNCwgMjM1LCA4MCwgOCwgNCwgMjM1LCA3OCwgOCwgNCwgMjM1LCAKLSAgICA3OSwgOCwgNCwgMjM1LCA3MywgOCwgNCwgMjM1LCA3MiwgOCwgNCwgMjM1LCA3NSwgOCwgNCwgMjM1LCA3NCwgOCwgNCwgCi0gICAgMjI4LCAyNDksIDgsIDQsIDIyOCwgMjQ4LCA4LCA0LCAyMjksIDAsIDgsIDQsIDIyOCwgMjUwLCA4LCA0LCAyMjgsIDI1MiwgCi0gICAgOCwgNCwgMjI4LCAyNTEsIDgsIDQsIDIyOCwgMjU1LCA4LCA0LCAyMjgsIDI1MywgOCwgNCwgMjI4LCAyMzgsIDgsIDQsIAotICAgIDIyOCwgMjM5LCA4LCA0LCAyMjgsIDI0NCwgOCwgNCwgMjI4LCAyNDMsIDgsIDQsIDIyOCwgMjQ3LCA4LCA0LCAyMjgsIDI0NSwgCi0gICAgOCwgNCwgMjI4LCAyMzMsIDgsIDQsIDIyOCwgMjQyLCA4LCA0LCAyMjgsIDIzNywgOCwgNCwgMjI4LCAyMzQsIDgsIDQsIAotICAgIDIyOCwgMjM1LCA4LCA0LCAyMjgsIDIyOCwgOCwgNCwgMjI4LCAyMjcsIDgsIDQsIDIyOCwgMjMyLCA4LCA0LCAyMjgsIDIzMSwgCi0gICAgOCwgNCwgMjI4LCAyMjksIDgsIDQsIDIyOCwgMjMwLCA4LCA0LCAyMjgsIDAsIDgsIDQsIDIyNywgMjU1LCA4LCA0LCAyMjgsIAotICAgIDEwLCA4LCA0LCAyMjgsIDQsIDgsIDQsIDIyOCwgNywgOCwgNCwgMjI4LCA2LCA4LCA0LCAyMjgsIDksIDgsIDQsIDIyOCwgOCwgCi0gICAgOCwgNCwgMjI3LCAyNDMsIDgsIDQsIDIyNywgMjQ1LCA4LCA0LCAyMjcsIDI0NCwgOCwgNCwgMjI3LCAyNDksIDgsIDQsIAotICAgIDIyNywgMjQ4LCA4LCA0LCAyMjcsIDI1MywgOCwgNCwgMjI3LCAyNTAsIDgsIDQsIDIyNywgMjQxLCA4LCA0LCAyMjcsIDI0MCwgCi0gICAgOCwgNCwgMjI3LCAyNDcsIDgsIDQsIDIyNywgMjQyLCA4LCA0LCAyMTMsIDEzOCwgOCwgNCwgMjEzLCAxMzcsIDgsIDQsIAotICAgIDIxMywgMTQ1LCA4LCA0LCAyMTMsIDE0MCwgOCwgNCwgMjEzLCAxNDIsIDgsIDQsIDIxMywgMTQxLCA4LCA0LCAyMTMsIDE0NCwgCi0gICAgOCwgNCwgMjEzLCAxNDMsIDgsIDQsIDIxMywgMTI3LCA4LCA0LCAyMTMsIDEyOCwgOCwgNCwgMjEzLCAxMzIsIDgsIDQsIAotICAgIDIxMywgMTMxLCA4LCA0LCAyMTMsIDEzNiwgOCwgNCwgMjEzLCAxMzQsIDgsIDQsIDIxMywgMTA5LCA4LCA0LCAyMTMsIDEwNywgCi0gICAgOCwgNCwgMjEzLCAxMTksIDgsIDQsIDIxMywgMTEyLCA4LCA0LCAyMTMsIDExMCwgOCwgNCwgMjEzLCAxMTEsIDgsIDQsIAotICAgIDIxMiwgMjQxLCA4LCA0LCAyMTIsIDIzOSwgOCwgNCwgMjEyLCAyNTUsIDgsIDQsIDIxMiwgMjQyLCA4LCA0LCAyMTIsIDI0OSwgCi0gICAgOCwgNCwgMjEyLCAyNDgsIDgsIDQsIDIxMiwgMjUyLCA4LCA0LCAyMTIsIDI1MCwgOCwgNCwgMjEyLCAxODIsIDgsIDQsIAotICAgIDIxMiwgMTgxLCA4LCA0LCAyMTIsIDE4NSwgOCwgNCwgMjEyLCAxODMsIDgsIDQsIDIxMiwgMjE1LCA4LCA0LCAyMTIsIDIxMiwgCi0gICAgOCwgNCwgMjEyLCAyMzUsIDgsIDQsIDIxMiwgMjE5LCA4LCA0LCAyMTIsIDE3MywgOCwgNCwgMjEyLCAxNzAsIDgsIDQsIAotICAgIDIxMiwgMjAzLCA4LCA0LCAyMTIsIDE4MCwgOCwgNCwgMjEyLCAxNzYsIDgsIDQsIDIxMiwgMTc3LCA4LCA0LCAyMTIsIDE1NSwgCi0gICAgOCwgNCwgMjEyLCAxNTQsIDgsIDQsIDIxMiwgMTYxLCA4LCA0LCAyMTIsIDE1OCwgOCwgNCwgMjEyLCAxNTYsIDgsIDQsIAotICAgIDIxMiwgMTU3LCA4LCAzNCwgMjI0LCAxNzgsIDgsIDM0LCAyMzMsIDEzLCA4LCAzNCwgMjM0LCA3MCwgOCwgMzQsIDIyOCwgNCwgCi0gICAgOCwgMzQsIDI0OSwgMTIsIDgsIDM0LCAyMTksIDEyOCwgOCwgMzQsIDI0MiwgMjQ0LCA4LCAzNCwgMjQzLCAyMCwgOCwgMzQsIAotICAgIDIzMSwgNDIsIDgsIDM0LCAyNDAsIDE3MiwgOCwgMzQsIDIzMiwgMTE2LCA4LCAzNCwgMjUyLCAzLCA4LCAzNCwgMjMwLCAKLSAgICAxOTYsIDgsIDM0LCAyMTIsIDIzNSwgOCwgMzQsIDIyNSwgOCwgOCwgMzQsIDI0MCwgMTY2LCA4LCAzNCwgMjE3LCAyNTMsIDgsIAotICAgIDM0LCAyNDMsIDExMCwgOCwgMzQsIDIxMiwgMCwgOCwgMzQsIDI0OSwgNiwgOCwgMzQsIDI0OCwgNDYsIDgsIDM0LCAyNTEsIAotICAgIDI3LCA4LCAzNCwgMjQyLCAyNDAsIDgsIDM0LCAyMjcsIDI1MCwgOCwgMzQsIDIxNiwgODIsIDgsIDM0LCAyMjcsIDQxLCA4LCAKLSAgICAzNCwgMjM1LCA3NywgOCwgMzQsIDIxMiwgMTIsIDgsIDM0LCAyMjQsIDI0NCwgOCwgMzQsIDI0MSwgOTQsIDgsIDM0LCAyMTIsIAotICAgIDI0MSwgOCwgMzQsIDIxNCwgOTUsIDgsIDM0LCAyMjAsIDEyNiwgOCwgMzQsIDIxNCwgMjIxLCA4LCAzNCwgMjEyLCAxMDksIAotICAgIDgsIDM0LCAyMzUsIDcxLCA4LCAzNCwgMjI3LCAyMTYsIDgsIDM0LCAyMzUsIDc1LCA4LCAzNCwgMjQyLCAxMzAsIDgsIDM0LCAKLSAgICAyMzUsIDk1LCA4LCAzNCwgMjEzLCAyMTQsIDgsIDM0LCAyNDYsIDMzLCA4LCAzNCwgMjIwLCAxMzgsIDgsIDM0LCAyMzMsIDgsIAotICAgIDgsIDM0LCAyNDksIDE2LCA4LCAzNCwgMjQ5LCA0NiwgOCwgMzQsIDI0OSwgMjMwLCA4LCAzNCwgMjQwLCAxNjksIDgsIDM0LCAKLSAgICAyMjAsIDI1MSwgOCwgMzQsIDIxMSwgMjU1LCA4LCAzNCwgMjIwLCAxNzgsIDgsIDM0LCAyNTAsIDY3LCA4LCAzNCwgMjExLCAKLSAgICAyMzAsIDgsIDM0LCAyMjksIDI1MiwgOCwgMzQsIDIzNCwgMTg4LCAyMzIsIDIyNSwgMSwgMjUyLCAxMDcsIDIzMiwgMjI1LCAKLSAgICAxLCAxOTMsIDIzMiwgMjI1LCAxLCAyMjYsIDIzLCAyMzIsIDIyNSwgMSwgMjQ4LCAxNjQsIDIzMiwgMjI1LCAxLCAyMTgsIAotICAgIDUyLCAyMzIsIDIyNSwgMSwgMjE3LCAxNjEsIDIzMiwgMjI1LCAxLCAyNDMsIDExMCwgMjMyLCAyMjUsIDEsIDE4MSwgMjMyLCAKLSAgICAyMjUsIDEsIDIzNCwgMTM4LCAyMzIsIDIyNSwgMSwgMjM1LCAxMzksIDIzMiwgMjI1LCAxLCAyNTAsIDIxOSwgMjMyLCAyMjUsIAotICAgIDEsIDI1MCwgOTIsIDIzMiwgMjI1LCAxLCAyNDUsIDI0OSwgMjMyLCAyMjUsIDEsIDIxNiwgMTQxLCAyMzIsIDIyNSwgMSwgCi0gICAgMjE2LCAxMzMsIDIzMiwgMjI1LCAxLCAxODgsIDIzMiwgMjI1LCAxLCAyMDUsIDIzMiwgMjI1LCAxLCAyMzMsIDE1NywgMjMyLCAKLSAgICAyMjUsIDEsIDIyMiwgMjAyLCAyMzIsIDIyNSwgMSwgMjEyLCA3NSwgMjMyLCAyMjUsIDEsIDIxMiwgMTA5LCAyMzIsIDIyNSwgCi0gICAgMSwgMjI5LCAxNTksIDIzMiwgMjI1LCAxLCAxNTksIDIzMiwgMjI1LCAxLCAyMTMsIDE1MywgMjMyLCAyMjUsIDEsIDI0MSwgCi0gICAgMTc0LCAyMzIsIDIyNSwgMSwgMjQ0LCAxNjQsIDIzMiwgMjI1LCAxLCAyMTQsIDQ5LCAyMzIsIDIyNSwgMSwgMjIxLCAyNCwgCi0gICAgMjMyLCAyMjUsIDEsIDE4NiwgMjMyLCAyMjUsIDEsIDI0MiwgMjI1LCAyMzIsIDIyNSwgMSwgNjEsIDIzMiwgMjI1LCAxLCAKLSAgICAyNTQsIDE0OCwgMjMyLCAyMjUsIDEsIDc0LCAyMzIsIDIyNSwgMSwgMjQ1LCAyMiwgMjMyLCAyMjUsIDEsIDcyLCAyMzIsIAotICAgIDIyNSwgMSwgNzUsIDIzMiwgMjI1LCAxLCA2OSwgMjMyLCAyMjUsIDEsIDIxNSwgMTgzLCAyMzIsIDIyNSwgMSwgMjE1LCAKLSAgICAxNzgsIDIzMiwgMjI1LCAxLCAyMjcsIDk5LCAyMzIsIDIyNSwgMSwgMTYwLCAyMzAsIDEwNCwgMjE3LCA3MSwgMjMyLCAyMjUsIAotICAgIDEsIDE2MCwgMjMwLCA0NiwgMjI1LCAxNTAsIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyNDksIDE1LCAyMzIsIDIyNSwgCi0gICAgMSwgMTYwLCAyMzAsIDEwNCwgMjUxLCAxMjgsIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyMDUsIDIzMiwgMjI1LCAxLCAKLSAgICAxNjAsIDIzMCwgMTA0LCAyMzUsIDExNiwgMjMyLCAyMjUsIDIyNSwgMjcsIDI0OSwgMTU3LCAyMzIsIDIyNSwgMjI1LCAyNywgCi0gICAgMjQzLCAyMDAsIDIxOSwgNjksIDM5LCA0LCAyNDUsIDE2NSwgMzksIDQsIDI0NSwgMTYyLCAzOSwgNCwgMjQxLCAyMDQsIDM5LCAKLSAgICA0LCAyMTQsIDEsIDM5LCA0LCAyMTQsIDAsIDM5LCA0LCAyMjYsIDg2LCAzOSwgNCwgMjUxLCAxOTEsIDM5LCA0LCAyNTEsIAotICAgIDI0MiwgMzksIDQsIDIzMSwgMTc5LCAzOSwgNCwgMjM0LCAwLCAzOSwgNCwgMjMxLCA3MywgMzksIDQsIDI0MywgNTEsIDM5LCAKLSAgICA0LCAyNDQsIDExNiwgMzksIDQsIDIxNCwgMjI3LCAzOSwgNCwgMjE3LCAyMTksIDM5LCA0LCAyMTcsIDE0NywgMzksIDQsIAotICAgIDI0NywgMjI0LCAzOSwgNCwgMjQ3LCAyMjEsIDM5LCA0LCAyMzMsIDc0LCAzOSwgNCwgMjI0LCAxLCAzOSwgNCwgMjQ4LCAyOCwgCi0gICAgMzksIDQsIDIyOSwgMjE5LCAzOSwgNCwgMjIyLCA4OSwgMzksIDQsIDIyMCwgMjQxLCAzOSwgNCwgMjEyLCA4NSwgMzksIDQsIAotICAgIDIxMiwgNjYsIDM5LCA0LCAyNTAsIDExNiwgMzksIDQsIDIzNSwgMTI1LCAzOSwgNCwgMjI5LCA3LCAzOSwgNCwgMjEzLCAzNSwgCi0gICAgMzksIDQsIDIzNCwgMTg3LCAzOSwgNCwgMjI5LCAxMzYsIDM5LCA0LCAyNDMsIDMxLCAzOSwgNCwgMjMxLCAxNDUsIDM5LCA0LCAKLSAgICAyMjksIDE4NCwgMzksIDQsIDIyOCwgMTYsIDM5LCA0LCA3MiwgMzksIDQsIDIzNSwgMjUxLCAzOSwgNCwgMjQxLCAxNjUsIAotICAgIDM5LCA0LCAyNDEsIDE0NiwgMzksIDQsIDIxMywgMjM1LCAzOSwgNCwgMjEzLCAyMjYsIDM5LCA0LCAyMjUsIDI0MCwgMzksIAotICAgIDQsIDI1MSwgMTg5LCAzOSwgNCwgMjUxLCAxODQsIDM5LCA0LCAyMzEsIDE3MiwgMzksIDQsIDIzMywgMjUzLCAzOSwgNCwgCi0gICAgMjMxLCA3MCwgMzksIDQsIDI0MywgNDcsIDM5LCA0LCAyNDQsIDkwLCAzOSwgNCwgMjE0LCAxNTQsIDM5LCA0LCAyMTcsIDcxLCAKLSAgICAzOSwgNCwgMjE3LCAxMjgsIDM5LCA0LCAyNDcsIDIxNiwgMzksIDQsIDI0NywgMjIwLCAzOSwgNCwgMjMzLCAxMywgMzksIDQsIAotICAgIDIyMywgMTg4LCAzOSwgNCwgMjQ3LCAyMTEsIDM5LCA0LCAyMjksIDIxMywgMzksIDQsIDIyMCwgMTE3LCAzOSwgNCwgMjIwLCAKLSAgICAyMTIsIDM5LCA0LCAyMTIsIDM3LCAzOSwgNCwgMjEyLCA2MiwgMzksIDQsIDI0OSwgMjQ0LCAzOSwgNCwgMjM1LCAxMTAsIAotICAgIDM5LCA0LCAyMjksIDAsIDM5LCA0LCAyMTIsIDI1NSwgMzksIDQsIDIzNCwgMTAxLCAzOSwgNCwgMjI5LCAxMjgsIDM5LCA0LCAKLSAgICAyNDIsIDE5MCwgMzksIDQsIDIzMSwgNDIsIDM5LCA0LCAyMjksIDY0LCAzOSwgNCwgMjI4LCAxMCwgMzksIDQsIDYxLCAzOSwgCi0gICAgNCwgMjU0LCAzMiwgMzksIDQsIDIyOSwgMTU1LCAzOSwgNCwgMTU5LCAzOSwgNCwgMjQyLCAxLCAzOSwgNCwgMjE0LCA0OSwgCi0gICAgMzksIDQsIDIxNCwgMzksIDM5LCA0LCAxOTMsIDM5LCA0LCAyNTEsIDE5NSwgMzksIDQsIDI1MiwgMTA3LCAzOSwgNCwgMjMxLCAKLSAgICAxODcsIDM5LCA0LCAyMzQsIDQsIDM5LCA0LCAyMzQsIDMsIDM5LCA0LCAyMzEsIDc3LCAzOSwgNCwgMjQzLCA1NSwgMzksIDQsIAotICAgIDI0NCwgMTY0LCAzOSwgNCwgMjE1LCAxLCAzOSwgNCwgMjE4LCA1MiwgMzksIDQsIDIxNywgMTYxLCAzOSwgNCwgMjQ3LCAKLSAgICAyMzIsIDM5LCA0LCAyNDcsIDIyMywgMzksIDQsIDIzMywgMTU3LCAzOSwgNCwgMjAzLCAzOSwgNCwgMjQ4LCAxNjQsIDM5LCAKLSAgICA0LCAyMjksIDIyOCwgMzksIDQsIDIyMiwgMjAyLCAzOSwgNCwgMjIxLCAyNCwgMzksIDQsIDIxMiwgMTA5LCAzOSwgNCwgCi0gICAgMjEyLCA3NSwgMzksIDQsIDI1MCwgMjE5LCAzOSwgNCwgMjM1LCAxMzksIDM5LCA0LCAyMjksIDE2LCAzOSwgNCwgMTg2LCAKLSAgICAzOSwgNCwgMTgxLCAzOSwgNCwgMjM0LCAyMzksIDM5LCA0LCAyMjksIDE0MSwgMzksIDQsIDI0MywgMTEwLCAzOSwgNCwgCi0gICAgMTg4LCAzOSwgNCwgMjA1LCAzOSwgNCwgMjI4LCAyMywgMzksIDQsIDIyNywgNDksIDM5LCA0LCAyMjcsIDQ1LCAzOSwgNCwgCi0gICAgMjQxLCAzOSwgMzksIDQsIDIxMywgMjAyLCAzOSwgNCwgMjEzLCAxOTgsIDM5LCA0LCAyMjUsIDEyOSwgMzksIDQsIDI1MSwgCi0gICAgMTg3LCAzOSwgNCwgMjUxLCAxMTgsIDM5LCA0LCAyMzEsIDE2NywgMzksIDQsIDIzMywgMjUxLCAzOSwgNCwgMjMxLCA2NiwgCi0gICAgMzksIDQsIDI0MywgNDMsIDM5LCA0LCAyNDQsIDMsIDM5LCA0LCAyMTQsIDEwOCwgMzksIDQsIDIxNiwgMjMwLCAzOSwgNCwgCi0gICAgMjE3LCAxMDYsIDM5LCA0LCAyNDcsIDIxNCwgMzksIDQsIDI0NywgMjE4LCAzOSwgNCwgMjMyLCAxODAsIDM5LCA0LCAyMjMsIAotICAgIDk5LCAzOSwgNCwgMjQ3LCA3OSwgMzksIDQsIDIyOSwgMjAwLCAzOSwgNCwgMjE5LCAyMjYsIDM5LCA0LCAyMjAsIDE4MSwgCi0gICAgMzksIDQsIDIxMiwgMTQsIDM5LCA0LCAyMTIsIDU5LCAzOSwgNCwgMjQ5LCAxMTMsIDM5LCA0LCAyMzUsIDYyLCAzOSwgNCwgCi0gICAgMjI4LCAyNDYsIDM5LCA0LCAyMTIsIDIyMCwgMzksIDQsIDIzNCwgMTksIDM5LCA0LCAyMjksIDEyNiwgMzksIDQsIDI0MiwgCi0gICAgMTQwLCAzOSwgNCwgMjMwLCAyMDIsIDM5LCA0LCAyMjgsIDE3NSwgMzksIDQsIDIyNywgMjUxLCAzOSwgNCwgNjksIDM5LCA0LCAKLSAgICAyMTUsIDE2MCwgMzksIDQsIDI0MCwgMjEyLCAzOSwgNCwgMjQwLCAyMDIsIDM5LCA0LCAyMTMsIDE4MywgMzksIDQsIDIxMywgCi0gICAgMTc3LCAzOSwgNCwgMjI1LCAzNSwgMzksIDQsIDI1MSwgMTg2LCAzOSwgNCwgMjUxLCA1NCwgMzksIDQsIDIzMSwgMTY2LCAKLSAgICAzOSwgNCwgMjMzLCAyNDksIDM5LCA0LCAyMzEsIDY1LCAzOSwgNCwgMjQzLCA0MiwgMzksIDQsIDI0MywgMjA1LCAzOSwgNCwgCi0gICAgMjE0LCA5OSwgMzksIDQsIDIxNiwgODIsIDM5LCA0LCAyMTcsIDkwLCAzOSwgNCwgMjQ3LCAyMTIsIDM5LCA0LCAyNDcsIAotICAgIDIxNywgMzksIDQsIDIzMiwgMTU2LCAzOSwgNCwgMjIzLCA1MSwgMzksIDQsIDI0NiwgMzMsIDM5LCA0LCAyMjksIDE5NSwgCi0gICAgMzksIDQsIDIxOSwgMjcsIDM5LCA0LCAyMjAsIDE1MCwgMzksIDQsIDIxMiwgOCwgMzksIDQsIDIxMiwgNTUsIDM5LCA0LCAKLSAgICAyNDksIDUzLCAzOSwgNCwgMjM1LCA1NCwgMzksIDQsIDIyOCwgMjQyLCAzOSwgNCwgMjEyLCAyMDMsIDM5LCA0LCAyMzMsIAotICAgIDIzOCwgMzksIDQsIDIyOSwgMTI1LCAzOSwgNCwgMjQyLCA5MiwgMzksIDQsIDIzMCwgMTcyLCAzOSwgNCwgMjI4LCA5MiwgCi0gICAgMzksIDQsIDIyNywgMjQ3LCAzOSwgNCwgNzUsIDM5LCA0LCAyMjcsIDYyLCAzOSwgNCwgMjI5LCA4NiwgMzksIDQsIDI0MSwgCi0gICAgNTQsIDM5LCA0LCAyNDEsIDQyLCAzOSwgNCwgMjEzLCAyMTQsIDM5LCA0LCAyMTMsIDIwMywgMzksIDQsIDIyNSwgMTUwLCAKLSAgICAzOSwgNCwgMjUxLCAxODgsIDM5LCA0LCAyNTEsIDEyOCwgMzksIDQsIDIzMSwgMTY4LCAzOSwgNCwgMjMzLCAyNTIsIDM5LCAKLSAgICA0LCAyMzEsIDY4LCAzOSwgNCwgMjQzLCA0NSwgMzksIDQsIDI0MywgNDQsIDM5LCA0LCAyNDQsIDEyLCAzOSwgNCwgMjE0LCAKLSAgICAxMTksIDM5LCA0LCAxMDgsIDM5LCA0LCAyMTcsIDEwOSwgMzksIDQsIDI0NywgMjE1LCAzOSwgNCwgMjQ3LCAyMTksIDM5LCAKLSAgICA0LCAyMzIsIDIwOCwgMzksIDQsIDIyMywgMTEyLCAzOSwgNCwgMjQ3LCA5OSwgMzksIDQsIDIyOSwgMjA0LCAzOSwgNCwgCi0gICAgMjE5LCAyNDIsIDM5LCA0LCAyMjAsIDE4NywgMzksIDQsIDIxMiwgMTYsIDM5LCA0LCAyMTIsIDYwLCAzOSwgNCwgMjQ5LCAKLSAgICAxNzUsIDM5LCA0LCAyMzUsIDcxLCAzOSwgNCwgMjI4LCAyNDcsIDM5LCA0LCAyMTIsIDIzNSwgMzksIDQsIDIzNCwgMzcsIAotICAgIDM5LCA0LCAyMjksIDEyNywgMzksIDQsIDI0MiwgMTUwLCAzOSwgNCwgMjMwLCAyMzEsIDM5LCA0LCAyMjgsIDE4NSwgMzksIAotICAgIDQsIDIyNywgMjUzLCAzOSwgNCwgNzQsIDM5LCA0LCAyNDUsIDEwOCwgMzksIDQsIDIyOSwgMTQ2LCAzOSwgNCwgMjQxLCAKLSAgICAyMjIsIDM5LCA0LCAyNDEsIDE5MywgMzksIDQsIDIxNCwgNiwgMzksIDQsIDIxMywgMjUzLCAzOSwgNCwgMjI2LCA5NiwgMzksIAotICAgIDQsIDI1MSwgMTkyLCAzOSwgNCwgMjUxLCAyNTEsIDM5LCA0LCAyMzEsIDE4MCwgMzksIDQsIDIzNCwgMSwgMzksIDQsIDIzMywgCi0gICAgMjU1LCAzOSwgNCwgMjMxLCA3NCwgMzksIDQsIDI0MywgNTIsIDM5LCA0LCAyNDMsIDUwLCAzOSwgNCwgMjQ0LCAxMjMsIDM5LCAKLSAgICA0LCAyMTQsIDIzMiwgMzksIDQsIDIxNywgMjI5LCAzOSwgNCwgMjE3LCAxNDgsIDM5LCA0LCAyNDcsIDIyNSwgMzksIDQsIAotICAgIDI0NywgMjIyLCAzOSwgNCwgMjMzLCA4MiwgMzksIDQsIDIyNCwgMjEsIDM5LCA0LCAyNDgsIDQxLCAzOSwgNCwgMjI5LCAKLSAgICAyMjAsIDM5LCA0LCAyMjIsIDEwMCwgMzksIDQsIDIyMCwgMjQzLCAzOSwgNCwgMjEyLCA4NywgMzksIDQsIDIxMiwgNjcsIAotICAgIDM5LCA0LCAyNTAsIDEyNCwgMzksIDQsIDIzNSwgMTI3LCAzOSwgNCwgMjI5LCA5LCAzOSwgNCwgMjEzLCAzOCwgMzksIDQsIAotICAgIDIzNCwgMTg4LCAzOSwgNCwgMjI5LCAxMzcsIDM5LCA0LCAyMjksIDEzMywgMzksIDQsIDI0MywgMzgsIDM5LCA0LCAyNDMsIAotICAgIDI3LCAzOSwgNCwgMjMxLCAxNTYsIDM5LCA0LCAyMjksIDE4NywgMzksIDQsIDIyOCwgMTcsIDM5LCA0LCAyMjksIDE2MSwgCi0gICAgMzksIDQsIDIzMywgNDYsIDM5LCAyNDksIDE1NywgMzksIDI0MywgMjAwLCAyMTksIDY5LCAzOSwgMjI0LCAxNTgsIDc3LCAKLSAgICAzOSwgNCwgMjI5LCAyMDMsIDI0NCwgMTY0LCAzOSwgNCwgMjI5LCAyMDMsIDE4MSwgMzksIDQsIDIyOSwgMjAzLCAyMTksIAotICAgIDIyNiwgMzksIDE2LCAyNDQsIDExMywgMzksIDE2LCAyMzQsIDE4NiwgMzksIDE2LCAyMTcsIDM0LCAzOSwgMTYsIDIyOSwgCi0gICAgMzksIDM5LCAxNiwgMjUyLCA2NiwgMzksIDE2LCAyNDQsIDE2MywgMzksIDE2LCAyMTgsIDQ5LCAzOSwgMTYsIDI0OCwgMTIxLCAKLSAgICAzOSwgMTYsIDI0NywgNzgsIDM5LCAxNiwgMjMzLCAyMjcsIDM5LCAxNiwgMjE2LCAyMzQsIDM5LCAxNiwgMjQ3LCA5OCwgMzksIAotICAgIDE2LCAyMzUsIDYzLCAzOSwgMjEsIDIxMiwgNzksIDM5LCAyMSwgMTE2LCAzOSwgMjEsIDEwOSwgMzksIDIxLCAxNjYsIDM5LCAKLSAgICAyMSwgMTYzLCAzOSwgMjEsIDE4MCwgMzksIDIxLCAxODksIDM5LCAyMSwgMTk4LCAzOSwgMjEsIDE5NSwgMzksIDIxLCAyMDAsIAotICAgIDM5LCA0LCAyMjksIDIwMywgMTg4LCAzOSwgNCwgMjI5LCAyMDMsIDI0NywgOTksIDMzLCA2LCAxLCAyMTIsIDgzLCAzMywgMywgCi0gICAgMSwgMjEyLCA4MywgMzMsIDYsIDEsIDI0NSwgMjQ1LCAzMywgMywgMSwgMjQ1LCAyNDUsIDMzLCA2LCAxLCAyMjMsIDIwMiwgCi0gICAgMjQ1LCAyNDcsIDMzLCAzLCAxLCAyMjMsIDIwMiwgMjQ1LCAyNDcsIDMzLCA2LCAxLCAyMzUsIDE4MywgMzMsIDMsIDEsIAotICAgIDIzNSwgMTgzLCAzMywgNiwgMSwgMjQ3LCAxMTMsIDMzLCAzLCAxLCAyNDcsIDExMywgMzMsIDYsIDEsIDIzMCwgMjEwLCAKLSAgICAyMTUsIDE3NSwgMzMsIDMsIDEsIDIzMCwgMjEwLCAyMTUsIDE3NSwgMzMsIDYsIDEsIDI1MSwgNjQsIDIyNywgNjcsIDMzLCAKLSAgICAzLCAxLCAyNTEsIDY0LCAyMjcsIDY3LCAzMywgNiwgMSwgMjI5LCAxNjksIDIxMywgMjIsIDMzLCAzLCAxLCAyMjksIDE2OSwgCi0gICAgMjEzLCAyMiwgMzMsIDYsIDEsIDIxMywgMTksIDIsIDI1MiwgMTAyLCAyMTMsIDIyLCAzMywgMywgMSwgMjEzLCAxOSwgMiwgCi0gICAgMjUyLCAxMDIsIDIxMywgMjIsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjEzLCA0OSwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyMTMsIAotICAgIDQ5LCAzMywgNiwgMSwgMjIzLCAyMDIsIDIxMiwgMjAzLCAzMywgMywgMSwgMjIzLCAyMDIsIDIxMiwgMjAzLCAzMywgNiwgMSwgCi0gICAgMjM1LCAxODEsIDYxLCAzMywgMywgMSwgMjM1LCAxODEsIDYxLCAzMywgNiwgMSwgMjQ5LCAxOTMsIDIzMiwgMjIxLCAyMTIsIAotICAgIDE3NCwgMzMsIDMsIDEsIDI0OSwgMTkzLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyNTEsIDEzNywgMjEyLCAKLSAgICAxNzQsIDMzLCAzLCAxLCAyNTEsIDEzNywgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjQ5LCAxOTMsIDIzMiwgCi0gICAgMjIxLCAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyNDksIDE5MywgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgCi0gICAgMSwgMjEyLCAyMzcsIDMzLCAzLCAxLCAyMTIsIDIzNywgMzMsIDYsIDEsIDIyMywgMjAyLCAyMTYsIDEzNiwgMzMsIDMsIDEsIAotICAgIDIyMywgMjAyLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDIxOSwgMjM2LCAyNDgsIDQxLCAzMywgMywgMSwgMjE5LCAyMzYsIDI0OCwgCi0gICAgNDEsIDMzLCA2LCAxLCAyMTksIDIzNiwgMjQ1LCAxMzEsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ1LCAxMzEsIDMzLCA2LCAxLCAKLSAgICAyMTksIDIzNiwgMjQ1LCAxMTcsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ1LCAxMTcsIDMzLCA2LCAxLCAyMzAsIDIxNCwgNzUsIAotICAgIDMzLCAzLCAxLCAyMzAsIDIxNCwgNzUsIDMzLCA2LCAxLCAyNTEsIDE2MywgNzUsIDMzLCAzLCAxLCAyNTEsIDE2MywgNzUsIAotICAgIDMzLCA2LCAxLCA1MSwgMjMwLCAyMTQsIDc1LCAzMywgMywgMSwgNTEsIDIzMCwgMjE0LCA3NSwgMzMsIDEsIDIzMCwgMTU2LCAKLSAgICA3NSwgMzcsIDMzLCAyMTQsIDg0LCAzNywgMzMsIDIxNywgMjAxLCAyMzEsIDQsIDUyLCAzNywgMzMsIDI0MCwgMjAxLCAyMzEsIAotICAgIDQsIDUyLCAzNywgMzMsIDIxNywgMTAxLCAyMzEsIDQsIDUyLCAyMjAsIDIxLCAyNTMsIDEzMiwgMzcsIDMzLCAyMzQsIDE5OCwgCi0gICAgMzcsIDMzLCAyMjYsIDEwMSwgMzMsIDIzNCwgMTk4LCAzMywgMjI2LCAxMDEsIDMzLCA2LCAxLCAyNDYsIDEsIDMzLCAzLCAxLCAKLSAgICAyNDYsIDEsIDMzLCA2LCAxLCAyNDUsIDIzOCwgMzMsIDMsIDEsIDI0NSwgMjM4LCAzMywgNiwgMSwgMjEyLCA0NSwgMzMsIDMsIAotICAgIDEsIDIxMiwgNDUsIDMzLCA2LCAxLCAyNTAsIDE0MCwgMzMsIDMsIDEsIDI1MCwgMTQwLCAzMywgNiwgMSwgMjQ1LCAyMzcsIAotICAgIDMzLCAzLCAxLCAyNDUsIDIzNywgMzMsIDYsIDEsIDIxNywgMjMwLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyMTcsIAotICAgIDIzMCwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjE2LCA0MywgMzMsIDMsIDEsIDIxNiwgNDMsIDMzLCA2LCAxLCAKLSAgICAyMTYsIDExOSwgMzMsIDMsIDEsIDIxNiwgMTE5LCAzMywgNiwgMSwgMjE2LCAxMjMsIDMzLCAzLCAxLCAyMTYsIDEyMywgMzMsIAotICAgIDYsIDEsIDIxNywgMjM1LCAzMywgMywgMSwgMjE3LCAyMzUsIDMzLCA2LCAxLCAyNDAsIDE5MCwgMzMsIDMsIDEsIDI0MCwgCi0gICAgMTkwLCAzMywgNiwgMSwgMjIwLCAxMzIsIDMzLCAzLCAxLCAyMjAsIDEzMiwgMjAsIDEsIDYxLCAyMCwgMSwgMTgxLCAyMCwgCi0gICAgMSwgNjksIDIwLCAxLCAyMzMsIDIzOCwgMjAsIDEsIDI0NSwgMTY1LCAyMCwgMSwgMjI0LCAxLCAyMCwgMSwgMjE4LCAzNSwgCi0gICAgMjAsIDEsIDc1LCAyMCwgMSwgMjI4LCAxMCwgMjAsIDEsIDcyLCAyMCwgMSwgMjMzLCAxNTcsIDIwLCAxLCAxOTMsIDIwLCAxLCAKLSAgICAyMjMsIDEzNiwgMjAsIDEsIDIyMywgMTgyLCAyMCwgMSwgMjMzLCA3MywgMjAsIDEsIDIzMSwgMTQ0LCAyMCwgMSwgMjE4LCAKLSAgICA0OSwgMjAsIDEsIDIyOSwgMjI2LCAyMCwgMSwgMjI5LCAxNCwgMjAsIDEsIDE4MywgMjAsIDEsIDIxOCwgMjA1LCAyMCwgMSwgCi0gICAgMjMwLCAxNzIsIDIwLCAxLCAyMjAsIDIwNywgMjAsIDEsIDIyMCwgMTE3LCAyMCwgMSwgMjIwLCAyMTcsIDIwLCAxLCAyMjEsIAotICAgIDQ0LCAyMCwgMSwgMjMzLCAxNzcsIDIwLCAxLCAyMzQsIDE2MiwgMjAsIDEsIDIyOCwgNjQsIDIwLCAxLCAyMjgsIDkyLCAyMCwgCi0gICAgMSwgMjI4LCAyNDEsIDIwLCAxLCAyMTIsIDIxNywgMjAsIDEsIDIyMCwgMTUwLCAyMCwgMSwgMjEyLCAxNzgsIDIwLCAxLCAKLSAgICAxODYsIDIwLCAxLCAyMjgsIDEyMCwgMjAsIDEsIDIzNCwgMTQ4LCAyMCwgMSwgMjI2LCAyNywgMjAsIDEsIDIyOSwgNywgMjAsIAotICAgIDEsIDIyOCwgMTAxLCAyMCwgMSwgMjI1LCAzMCwgMjAsIDEsIDIxMywgMTgwLCAyMCwgMSwgMjI2LCA4NiwgMjAsIDEsIDI0NCwgCi0gICAgMTE2LCAyMCwgMSwgMjIzLCA1MSwgMjAsIDEsIDIzMiwgMTU2LCAyMCwgMSwgMjMxLCA0MiwgMjAsIDEsIDIyOSwgNjQsIDIwLCAKLSAgICAxLCAyMjMsIDIwNCwgMjAsIDEsIDIyNCwgNjEsIDIwLCAxLCAyMzQsIDE3MSwgMjAsIDEsIDIyOSwgOTMsIDIwLCAxLCAyMjksIAotICAgIDE0MSwgMjAsIDEsIDIyOSwgMTU5LCAyMCwgMSwgMjIwLCAxODcsIDIwLCAxLCAyMjUsIDMzLCAyMCwgMSwgMjQzLCAyMDUsIAotICAgIDIwLCAxLCAyNDQsIDYsIDIwLCAxLCAyMTQsIDQ5LCAyMCwgMSwgMjA1LCAyMCwgMSwgMjMzLCAxMywgMjAsIDEsIDIyNSwgCi0gICAgMjQwLCAyMCwgMSwgMjMyLCAxNzQsIDIwLCAxLCAyMzQsIDM3LCAyMCwgMSwgMjMxLCAxNzcsIDIwLCAxLCAyMjMsIDIzMywgCi0gICAgMjAsIDEsIDIzMSwgMTIyLCAyMCwgMSwgMTg4LCAyMCwgMSwgMjE3LCA3MSwgMjAsIDEsIDIzNCwgMTAxLCAyMCwgMSwgMjMwLCAKLSAgICAyMzEsIDIwLCAxLCAyMzEsIDE4NSwgMjAsIDEsIDIxNywgMTgzLCAyMCwgMSwgMjM0LCA0LCAyMCwgMSwgMjE3LCAyMDAsIAotICAgIDIwLCAxLCAyMjgsIDkzLCAyMCwgMSwgMjIyLCAxNjYsIDIwLCAxLCAyNDQsIDE2MCwgMjAsIDEsIDIzNCwgNiwgMjAsIDEsIAotICAgIDIzNCwgMzMsIDIwLCAzNywgMTUyLCAyMzQsIDE0LCAyMCwgMzcsIDE1MiwgMjE2LCA3NCwgMjAsIDIyOSwgMTMsIDIwLCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMjAsIDI0OSwgMTY0LCAyMCwgMjQ5LCAxNTcsIDIwLCAyMjEsIDcwLCAyMCwgMjI0LCAxNTgsIAotICAgIDc3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjI1LCAxOTMsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMywgCi0gICAgNTksIDIyNSwgMTkzLCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjIxLCA3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAKLSAgICAyMTMsIDU5LCAyMjEsIDcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjQsIDE3NSwgNTksIDEsIDI1MCwgMzMsIAotICAgIDE2MCwgMjEzLCA1OSwgMjI0LCAxNzUsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjMsIDUxLCA1OSwgMSwgCi0gICAgMjUwLCAzMywgMTYwLCAyMTMsIDU5LCAyMjMsIDUxLCA1OSwgMSwgMjQ0LCAyNDQsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgCi0gICAgMSwgMTI0LCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAKLSAgICAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQ0LCAKLSAgICAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDEyNCwgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAKLSAgICAxLCAyMzEsIDM4LCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDExNSwgMjQ2LCA3MiwgMjMzLCA2MywgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0NCwgCi0gICAgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMjQsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMjMzLCAKLSAgICA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDIzMywgNjMsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgNjIsIDcxLCAxMzQsIDU5LCAxLCA2MiwgMjIwLCAyMywgNTksIDEsIDYyLCAxOTksIDEzNCwgCi0gICAgNTksIDEsIDIzMiwgMTYzLCA0NiwgMjQ5LCAxMDAsIDI1NCwgMTgsIDU5LCAxLCAyMjQsIDQ4LCAxMTQsIDY4LCA1OSwgMSwgCi0gICAgMjI0LCA0OCwgMTE5LCA2OCwgNTksIDEsIDIyNCwgNDgsIDI0NCwgMjU0LCA3NywgNTksIDEsIDIyNCwgNDgsIDIzNSwgMTkxLCAKLSAgICAyNDQsIDI1NCwgNzcsIDU5LCAxLCAxMTUsIDIzNSwgMTkxLCAyNDQsIDI1NCwgNzcsIDU5LCAxLCAyMTksIDUxLCAyNCwgCi0gICAgMTI0LCAyMTYsIDI0MSwgNTksIDEsIDIxOSwgNTEsIDI0LCAxMTUsIDIxNiwgMjQxLCA3LCA2LCAxLCAyNDUsIDE1NiwgMjU0LCAKLSAgICA3OCwgNywgMywgMSwgMjQ1LCAxNTYsIDI1NCwgNzgsIDcsIDYsIDEsIDI0NSwgMTU2LCAyNTQsIDEwMywgNywgMywgMSwgCi0gICAgMjQ1LCAxNTYsIDI1NCwgMTAzLCA3LCA2LCAxLCAyNDEsIDE5MSwgNywgMywgMSwgMjQxLCAxOTEsIDcsIDYsIDEsIDIxNiwgCi0gICAgNiwgNywgMywgMSwgMjE2LCA2LCA3LCA2LCAxLCAyMTYsIDE4NywgNywgMywgMSwgMjE2LCAxODcsIDcsIDYsIDEsIDI0OSwgCi0gICAgNTEsIDcsIDMsIDEsIDI0OSwgNTEsIDcsIDYsIDEsIDI0OSwgNTIsIDIsIDI0OSwgMTU3LCA3LCAzLCAxLCAyNDksIDUyLCAyLCAKLSAgICAyNDksIDE1NywgNywgMSwgMywgNiwgMjQ0LCAyMzAsIDcsIDEsIDMsIDYsIDE5NywgNywgNiwgMSwgMjU0LCAyMzIsIDcsIDMsIAotICAgIDEsIDI1NCwgMjMyLCA3LCA2LCAxLCAyNTMsIDI0MCwgNywgMywgMSwgMjUzLCAyNDAsIDcsIDYsIDEsIDI1MywgMTA4LCA3LCAKLSAgICAzLCAxLCAyNTMsIDEwOCwgNywgNiwgMSwgMjUzLCA5MiwgNywgMywgMSwgMjUzLCA5MiwgNywgNiwgMSwgMjUzLCA5MywgMiwgCi0gICAgMTk5LCAxMzQsIDcsIDMsIDEsIDI1MywgOTMsIDIsIDE5OSwgMTM0LCA3LCA2LCAxLCAyNTMsIDgzLCA3LCAzLCAxLCAyNTMsIAotICAgIDgzLCA3LCA2LCAxLCAyMjMsIDIwMiwgMjUwLCAyNTMsIDIsIDI0NywgNzQsIDcsIDMsIDEsIDIyMywgMjAyLCAyNTAsIDI1MywgCi0gICAgMiwgMjQ3LCA3NCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDkwLCA3LCA2LCAxLCAKLSAgICAyMzUsIDI4LCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgCi0gICAgMjM1LCAyOCwgMiwgMjE5LCA0NSwgMjQsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjE5LCA0NSwgMjQsIAotICAgIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjUxLCA2MywgMTUwLCA3LCAzLCAxLCAyNTEsIDYzLCAxNTAsIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAxMjQsIDkwLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMTI0LCA5MCwgNywgNiwgMSwgMTU3LCAyLCAxODQsIAotICAgIDIxOSwgNDUsIDIyNiwgMjQ0LCA3LCAzLCAxLCAxNTcsIDIsIDE4NCwgMjE5LCA0NSwgMjI2LCAyNDQsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjMyLCAxNzcsIDcsIDMsIDEsIDE1NywgMiwgMjMyLCAxNzcsIDcsIDYsIDEsIDIyNywgNDksIDcsIDMsIDEsIDIyNywgCi0gICAgNDksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgMywgMSwgMjI2LCAyMzAsIAotICAgIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMjQ0LCAyMiwgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDI0NCwgMjIsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyMTksIDE2MSwgMjE4LCAyNywgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDIxOSwgMTYxLCAyMTgsIDI3LCA3LCA2LCAxLCAyMjQsIDI0MSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgCi0gICAgMjQ3LCAyNDYsIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjI0LCAKLSAgICAyNDEsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjI0LCAyNDEsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjI0LCAKLSAgICAxMTMsIDIyMywgODgsIDcsIDMsIDEsIDIyNCwgMTEzLCAyMjMsIDg4LCA3LCA2LCAxLCAyMjMsIDQxLCAyMjMsIDg4LCA3LCAKLSAgICAzLCAxLCAyMjMsIDQxLCAyMjMsIDg4LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIxNSwgCi0gICAgODAsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjE0LCA5MCwgNywgMywgMSwgMjE0LCA5MCwgNywgNiwgMSwgMjE0LCAKLSAgICAxMjYsIDIxMiwgMTUyLCA3LCAzLCAxLCAyMTQsIDEyNiwgMjEyLCAxNTIsIDcsIDYsIDEsIDIxNywgMTA1LCAyLCA5MCwgNywgCi0gICAgMywgMSwgMjE3LCAxMDUsIDIsIDkwLCA3LCA2LCAxLCAyMTcsIDEwNSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIAotICAgIDcsIDMsIDEsIDIxNywgMTA1LCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjE0LCAyMjIsIDcsIAotICAgIDMsIDEsIDIxNCwgMjIyLCA3LCA2LCAxLCAyNDUsIDMwLCA3LCAzLCAxLCAyNDUsIDMwLCA3LCA2LCAxLCAyMzUsIDE2OSwgNywgCi0gICAgMywgMSwgMjM1LCAxNjksIDcsIDYsIDEsIDI0OSwgMTQ2LCA3LCAzLCAxLCAyNDksIDE0NiwgNTksIDEsIDIxNSwgMTA0LCA3LCAKLSAgICAzLCAxLCAyNDYsIDI0LCA3LCAzLCAxLCAyMzIsIDE0MiwgNywgMywgMSwgMjMwLCAxNTAsIDcsIDMsIDEsIDIyOCwgNTcsIDcsIAotICAgIDMsIDEsIDIyMywgNDAsIDcsIDEsIDMsIDYsIDIyMywgNDAsIDcsIDMsIDEsIDIxNiwgNzIsIDcsIDMsIDEsIDIxNSwgMTY3LCAKLSAgICA3LCA2LCAxLCAyMzUsIDIxMCwgMjQ5LCAzLCA3LCAzLCAxLCAyMzUsIDIxMCwgMjQ5LCAzLCA3LCA2LCAxLCAyMzUsIDIxMCwgCi0gICAgMjQ0LCAyMzAsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDQsIDIzMCwgNywgNiwgMSwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCA2LCAKLSAgICAxLCAyMTYsIDU4LCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIDMsIDEsIDIxNiwgNTgsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgCi0gICAgNiwgMSwgMjE2LCA1OCwgMTUwLCA3LCAzLCAxLCAyMTYsIDU4LCAxNTAsIDcsIDYsIDEsIDIzNSwgMjEwLCAxNDksIDcsIDMsIAotICAgIDEsIDIzNSwgMjEwLCAxNDksIDcsIDYsIDEsIDIzNSwgMjEwLCAxOTcsIDcsIDMsIDEsIDIzNSwgMjEwLCAxOTcsIDcsIDYsIAotICAgIDEsIDIzNSwgMjEwLCAyMTgsIDk5LCA3LCAzLCAxLCAyMzUsIDIxMCwgMjE4LCA5OSwgNTksIDEsIDExNSwgMjQ5LCAyMjQsIAotICAgIDI1NCwgMTc0LCA1OSwgMSwgMjQ5LCAxNjQsIDU5LCAxLCAyMjAsIDE3NSwgMjQ1LCA2MSwgNTIsIDcsIDYsIDEsIDIyMiwgCi0gICAgMTcwLCA3LCAzLCAxLCAyMjIsIDE3MCwgNywgNiwgMSwgMjE2LCA1OCwgMjQyLCA0MSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIAotICAgIDIyMywgMjA3LCAyNDEsIDM4LCAyNCwgMjUxLCAyMTgsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAKLSAgICAyMzAsIDk4LCAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMzUsIAotICAgIDI4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMjQsIDExMywgCi0gICAgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMjMsIDQsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjIzLCA0LCAyLCAKLSAgICAyMjcsIDExMiwgOTAsIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDE4MywgNywgMjQ1LCA2NiwgMSwgMjIzLCAyMDIsIDI0NCwgCi0gICAgMjMwLCA3LCAyNDUsIDY2LCAxLCAyMjMsIDIwMiwgMjI2LCAyMjksIDcsIDI0NSwgNjYsIDEsIDIzNSwgMTkxLCAxODMsIDcsIAotICAgIDI0NSwgNjYsIDEsIDI0MCwgMTQ2LCAyMzIsIDE4MiwgNywgMjQ1LCA2NiwgMSwgMjUzLCAxOTMsIDE4MywgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDYxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgNzIsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNDYsIDMsIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCA2OSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDc0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgCi0gICAgNzUsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNDEsIDIzNiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNCwgMzcsIDIxOCwgCi0gICAgMTc1LCAyMzAsIDMyLCAxLCAyMzQsIDExMywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0MiwgMTUwLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMSwgMjQyLCAyMDAsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNTMsIDI0MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIAotICAgIDI0OSwgMTc1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjUwLCAyMywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNSwgNzEsIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzUsIDExMSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIxNiwgOTUsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCAyMTYsIDEwMCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0OCwgNTYsIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAxLCAyNDgsIDY1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMTA4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjE3LCAxMDksIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDcsIDk5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQ3LCAyMTUsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCAyMjgsIDE4NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIyNSwgMTUwLCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMSwgMjI1LCAyNTMsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNTEsIDEyOCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI1MSwgCi0gICAgMTg4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjMwLCAyMzEsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMjMsIDExMiwgMjE4LCAKLSAgICAxNzUsIDIzMCwgMzIsIDEsIDIzMiwgMjA4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjIzLCA3MywgMjE4LCAxNzUsIDIzMCwgCi0gICAgMzIsIDEsIDIxOSwgMjQyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQxLCA1NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCAKLSAgICA2MSwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCA3MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCA2OSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDMwLCA1LCA3NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCAyMjcsIDQ5LCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMjI1LCAxNDYsIDIzMSwgMjIxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMjI1LCAxNDYsIDIzMSwgMjIwLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMjI1LCAxNDYsIDIzMSwgMjE5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMjI1LCAxNDYsIDIzMSwgMjE4LCAyMjgsIDE2NywgCi0gICAgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIAotICAgIDI0MiwgOSwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMjI4LCAxNjcsIDIzNSwgMjM3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyMjAsIDQ1LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIDI0NSwgMTQ1LCAyMjgsIAotICAgIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMzMsIDIyMCwgNDQsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjI0LCAxNjcsIDc3LCAKLSAgICAyMjgsIDE2NywgMjM1LCAyMzcsIDIyNSwgMTcyLCA3NywgMjI4LCAxNjcsIDIzNSwgMjM3LCAyMjMsIDI5LCA3NywgMjI4LCAKLSAgICAxNjcsIDIzNSwgMjM3LCAyMjQsIDE2OCwgNzcsIDIyNiwgMjAsIDEsIDE4MSwgMjI2LCAyMCwgMSwgMjM0LCAxMzgsIDIyNiwgCi0gICAgMjAsIDEsIDI0MywgMTEwLCAyMjYsIDIwLCAxLCAyMjksIDE1OSwgMjI2LCAyMCwgMSwgMjUwLCAyMTksIDIyNiwgMjAsIDEsIAotICAgIDI1MCwgOTIsIDIyNiwgMjAsIDEsIDIzNSwgMTM5LCAyMjYsIDIwLCAxLCAyMjgsIDIzLCAyMjYsIDIwLCAxLCAyMTgsIDUyLCAKLSAgICAyMjYsIDIwLCAxLCAyMTcsIDE2MSwgMjI2LCAyMCwgMSwgMjQ4LCAxNjQsIDIyNiwgMjAsIDEsIDIwNSwgMjI2LCAyMCwgMSwgCi0gICAgMTkzLCAyMjYsIDIwLCAxLCAyMjYsIDIzLCAyMjYsIDIwLCAxLCAyNTIsIDEwNywgMjI2LCAyMCwgMSwgMTg4LCAyMjYsIDIwLCAKLSAgICAxLCAyMTYsIDE0MSwgMjI2LCAyMCwgMSwgMjE2LCAxMzMsIDIyNiwgMjAsIDEsIDI0NSwgMjQ5LCAyMjYsIDIwLCAxLCAyMTQsIAotICAgIDQ5LCAyMjYsIDIwLCAxLCAyMTIsIDc1LCAyMjYsIDIwLCAxLCAyMTIsIDEwOSwgMjI2LCAyMCwgMSwgMywgNjEsIDIyNiwgCi0gICAgMjAsIDEsIDE4NiwgMjI2LCAyMCwgMSwgMjAzLCAyMjYsIDIwLCAxLCAyMzMsIDE1NywgMjI2LCAyMCwgMSwgMjIxLCAyNCwgCi0gICAgMjI2LCAyMCwgMSwgMjIyLCAyMDIsIDIyNiwgMjAsIDEsIDE1OSwgMjI2LCAyMCwgMSwgNjEsIDIyNiwgMjAsIDEsIDcyLCAKLSAgICAyMjYsIDIwLCAxLCA2OSwgMjI2LCAyMCwgMSwgNzQsIDIyNiwgMjAsIDEsIDc1LCAyMjYsIDIwLCAxLCAyMjQsIDIzMiwgCi0gICAgMjI2LCAyMCwgMSwgMjEzLCAxNTMsIDIyNiwgMjAsIDEsIDI0NCwgMTY0LCAyMjYsIDIwLCAxLCAyNDMsIDUsIDIyNiwgMjAsIAotICAgIDEsIDI0NSwgMTY1LCAyMjYsIDIwLCAyMTksIDE4LCAxLCAyMTQsIDQ5LCAyMjYsIDIwLCAyMTksIDE4LCAxLCAxODYsIDIyNiwgCi0gICAgMjAsIDEsIDIxNiwgMTE1LCAyMjYsIDIwLCAxLCAyMTYsIDEwNSwgMjI2LCAyMCwgMSwgMjQ4LCA4NiwgMjI2LCAyMCwgMSwgCi0gICAgMjI4LCAxOTgsIDIyNiwgMjAsIDEsIDI1NCwgNTAsIDE4NiwgMjI2LCAyMCwgMSwgMjE0LCAxMTUsIDIyMSwgMjQsIDIyNiwgCi0gICAgMjAsIDEsIDIxNCwgMTE2LCAxNTksIDIyNiwgMjAsIDEsIDI1MywgMTM4LCAyNDQsIDE2NCwgMjI2LCAyMCwgMjE5LCAxOCwgCi0gICAgMSwgMjAzLCAyMjYsIDIwLCAyMTgsIDIyNSwgMSwgMjAzLCAyMjYsIDIwLCAxLCAyNTAsIDE4NywgMjI2LCAyMCwgMjIwLCAKLSAgICA4MSwgMjQxLCAyMjAsIDc3LCAyMjYsIDIwLCA1MSwgMjQxLCAyMjAsIDc3LCAyMjYsIDIwLCAxNTIsIDIyMSwgMTcsIDIyNiwgCi0gICAgMjAsIDE1MiwgNTEsIDIyMSwgMTcsIDE2OSwgNSwgMjUzLCAyNDIsIDE2OSwgNSwgMjE0LCAxMjgsIDE2OSwgMSwgNjEsIAotICAgIDE2OSwgMSwgMjU0LCAyMzIsIDE2OSwgMSwgNzIsIDE2OSwgMSwgMjM2LCAyOCwgMTY5LCAxLCA2OSwgMTY5LCAxLCAyMTUsIAotICAgIDkyLCAxNjksIDEsIDE2MSwgMTQ5LCAxNjksIDEsIDE2MSwgMjIzLCA4MiwgMTY5LCAxLCAxNjEsIDE1MCwgMTY5LCAxLCAKLSAgICAxNjEsIDIzMiwgMjE0LCAxNjksIDEsIDc0LCAxNjksIDEsIDI0NSwgMTY1LCAxNjksIDEsIDI1NCwgMTA4LCAxNjksIDEsIAotICAgIDc1LCAxNjksIDEsIDIyNywgNDksIDE2OSwgMSwgMjUzLCAxMDgsIDE2OSwgMSwgMTgxLCAxNjksIDEsIDIzNCwgMTM4LCAKLSAgICAxNjksIDEsIDI0MywgMTEwLCAxNjksIDEsIDI0MiwgMjI1LCAxNjksIDEsIDIyOSwgMTU5LCAxNjksIDEsIDI1MCwgMjE5LCAKLSAgICAxNjksIDEsIDI1MCwgOTIsIDE2OSwgMSwgMjM1LCAxMzksIDE2OSwgMSwgMjM1LCAxMTUsIDE2OSwgMSwgMjI4LCAyMywgCi0gICAgMTY5LCAxLCAyMTYsIDExNSwgMTY5LCAxLCAyMTYsIDEwNSwgMTY5LCAxLCAyNDgsIDg2LCAxNjksIDEsIDI0OCwgNzAsIAotICAgIDE2OSwgMSwgMjI4LCAxOTgsIDE2OSwgMSwgMjE4LCA1MiwgMTY5LCAxLCAyMTcsIDE2MSwgMTY5LCAxLCAyNDgsIDE2NCwgCi0gICAgMTY5LCAxLCAyNDcsIDIzMiwgMTY5LCAxLCAyMDUsIDE2OSwgMSwgMTkzLCAxNjksIDEsIDIyNiwgMjMsIDE2OSwgMSwgMjUyLCAKLSAgICAxMDcsIDE2OSwgMSwgMjUxLCAxOTUsIDE2OSwgMSwgMTg4LCAxNjksIDEsIDE4NiwgMTY5LCAxLCAyMDMsIDE2OSwgMSwgCi0gICAgMjMzLCAxNTcsIDE2OSwgMSwgMjE1LCAxLCAxNjksIDEsIDIyMSwgMjQsIDE2OSwgMSwgMjE5LCAxNTcsIDE2OSwgMSwgMjIyLCAKLSAgICAyMDIsIDE2OSwgMSwgMTU5LCAxNjksIDEsIDIzMiwgMjEzLCAxNjksIDI0OSwgMTMzLCA1LCAyNDIsIDI1LCAxNjksIDMwLCAKLSAgICA1LCAyNTQsIDIzMiwgMTY5LCAzMCwgNSwgNzIsIDE2OSwgMzAsIDUsIDIzNiwgMjgsIDE2OSwgMzAsIDUsIDY5LCAxNjksIAotICAgIDMwLCA1LCAyMTUsIDkyLCAxNjksIDMwLCA1LCAxNjEsIDE0OSwgMTY5LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNjksIDMwLCAKLSAgICA1LCAxNjEsIDE1MCwgMTY5LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTY5LCAzMCwgNSwgNzQsIDE2OSwgMzAsIDUsIDI0NSwgCi0gICAgMTY1LCAxNjksIDMwLCA1LCAyNTQsIDEwOCwgMTY5LCAzMCwgNSwgNzUsIDE2OSwgMzAsIDUsIDIyNywgNDksIDE2OSwgMzAsIAotICAgIDUsIDI1MywgMTA4LCAxNjksIDUsIDIxNCwgMTMzLCAxNjksIDI0OCwgMTIzLCAxNjksIDUxLCAyNDgsIDEyMywgMTY5LCAyMSwgCi0gICAgMjEyLCA3OSwgMTY5LCAyMSwgMTE2LCAxNjksIDIxLCAxMDksIDE2OSwgMjEsIDE2NiwgMTY5LCAyMSwgMTYzLCAxNjksIDIxLCAKLSAgICAxODAsIDE2OSwgMjEsIDE4OSwgMTY5LCAyMSwgMTk4LCAxNjksIDIxLCAxOTUsIDE2OSwgMjEsIDIwMCwgMzcsIDgyLCAyMSwgCi0gICAgMjEyLCA3OSwgMzcsIDgyLCAyMSwgMTE2LCAzNywgODIsIDIxLCAxMDksIDM3LCA4MiwgMjEsIDE2NiwgMzcsIDgyLCAyMSwgCi0gICAgMTYzLCAzNywgODIsIDIxLCAxODAsIDM3LCA4MiwgMjEsIDE4OSwgMzcsIDgyLCAyMSwgMTk4LCAzNywgODIsIDIxLCAxOTUsIAotICAgIDM3LCA4MiwgMjEsIDIwMCwgMzcsIDgyLCAxLCA2MSwgMzcsIDgyLCAxLCA2OSwgMzcsIDgyLCAxLCAxODEsIDM3LCA4MiwgMSwgCi0gICAgMjA1LCAzNywgODIsIDEsIDE5MywgMzcsIDgyLCAxLCAyMDMsIDM3LCA4MiwgMSwgMjE0LCAxNTQsIDM3LCA4MiwgNSwgMjUzLCAKLSAgICA5MSwgODIsIDUsIDIxOSwgMjA1LCAyNTAsIDE4NywgODIsIDUsIDI1MCwgMTg4LCAyMTQsIDEzMywgODIsIDUsIDUxLCAyNTAsIAotICAgIDE4OCwgMjE0LCAxMzMsIDgyLCA1LCAyNTAsIDE4OCwgMTA5LCA4MiwgNSwgMjUwLCAxODgsIDE2NiwgODIsIDUsIDI1MCwgCi0gICAgMTg4LCAyNTMsIDkxLCA4MiwgNSwgMjI1LCAxMSwgODIsIDI0MywgNzYsIDI0NCwgNzIsIDgyLCAyNTAsIDE3MCwgODIsIAotICAgIDI0MSwgMjE0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDIxMiwgNzksIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTE2LCAKLSAgICAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDEwOSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxNjYsIDIzNCwgMTk0LCAyMzMsIAotICAgIDE0LCAyMSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE4MCwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxODksIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAyMSwgMTk4LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE5NSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAKLSAgICAyMDAsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAxODEsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMzQsIDEzOCwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDEsIDI0MywgMTEwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI5LCAxNTksIDIzNCwgMTk0LCAyMzMsIDE0LCAKLSAgICAxLCAyMjIsIDIwMiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyMSwgMjQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTIsIAotICAgIDEwOSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyOCwgMjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTgsIDUyLCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMSwgMjQwLCAyMTQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMDUsIDIzNCwgMTk0LCAyMzMsIDE0LCAKLSAgICAxLCAxOTMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjYsIDIzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMTg4LCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMSwgMjQ4LCAxNjQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyNTIsIDEwNywgMjM0LCAxOTQsIDIzMywgCi0gICAgMTQsIDEsIDIwMywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDE4NiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIzMywgMTU3LCAKLSAgICAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE0LCA0OSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxNywgMTYxLCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMSwgMTU5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE1LCAxLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjUwLCAKLSAgICAyMTksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCA2MSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNywgOTksIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAxLCA3MiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNywgNDksIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgCi0gICAgMjE1LCAxODMsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNzQsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNjksIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAzMCwgMjQ1LCAxNjUsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNzUsIDIzNCwgMTk0LCAyMzMsIDE0LCAxNjAsIAotICAgIDIyNSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMTYwLCAyNTAsIDIwMCwgMjM0LCAxOTQsIDIzMywgMTQsIDE2MCwgMjUwLCAKLSAgICAyMDEsIDIyNSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgNSwgMjQ5LCAyMCwgMjM0LCAxOTQsIDIzMywgMTQsIDUsIDIyMCwgCi0gICAgMTI1LCAyMjMsIDI0MywgMSwgMTgxLCAyMjMsIDI0MywgMSwgMjQzLCAxMTAsIDIyMywgMjQzLCAxLCAyMjksIDE1OSwgMjIzLCAKLSAgICAyNDMsIDEsIDIxOCwgNTIsIDIyMywgMjQzLCAxLCAyNDgsIDE2NCwgMjIzLCAyNDMsIDEsIDIwNSwgMjIzLCAyNDMsIDEsIAotICAgIDE5MywgMjIzLCAyNDMsIDEsIDI1MiwgMTA3LCAyMjMsIDI0MywgMSwgMTg4LCAyMjMsIDI0MywgMSwgMjUwLCAyMTksIDIyMywgCi0gICAgMjQzLCAxLCAyMzUsIDEzOSwgMjIzLCAyNDMsIDEsIDIyOCwgMjMsIDIyMywgMjQzLCAxLCAyMjIsIDIwMiwgMjIzLCAyNDMsIAotICAgIDEsIDIwMywgMjIzLCAyNDMsIDEsIDIzMywgMTU3LCAyMjMsIDI0MywgMSwgMTg2LCAyMjMsIDI0MywgMSwgMjE0LCA0OSwgCi0gICAgMjIzLCAyNDMsIDEsIDE1OSwgMjIzLCAyNDMsIDEsIDIzMSwgMTg3LCAyMjMsIDI0MywgMSwgMjI5LCAxNDEsIDIyMywgMjQzLCAKLSAgICAxLCAyMjksIDIyOCwgMjIzLCAyNDMsIDEsIDIyNywgMjU0LCAyMjMsIDI0MywgMSwgNjEsIDIyMywgMjQzLCAzMCwgNSwgNzIsIAotICAgIDIyMywgMjQzLCAzMCwgNSwgNjksIDIyMywgMjQzLCAzMCwgNSwgNzQsIDIyMywgMjQzLCAzMCwgNSwgMjU0LCAxMDgsIDIyMywgCi0gICAgMjQzLCAzMCwgNSwgNzUsIDIyMywgMjQzLCAzMCwgNSwgMjUzLCAxMDgsIDIyMywgMjQzLCAzMCwgNSwgMjQ1LCAyMiwgMjIzLCAKLSAgICAyNDMsIDMwLCA1LCAyNDUsIDE4OSwgMjIzLCAyNDMsIDI0OSwgMTMzLCA1LCAyMjksIDE2MSwgMjIzLCAyNDMsIDI0OSwgCi0gICAgMTMzLCA1LCAyMDQsIDIyMywgMjQzLCAyNDksIDEzMywgNSwgMTQ5LCAyMjMsIDI0MywgMjQ5LCAxMzMsIDUsIDI0MiwgNDEsIAotICAgIDIyMywgMjQzLCAyMTQsIDEzMywgMjIzLCAyNDMsIDIyMiwgOTIsIDc3LCAyMywgOTcsIDIxNywgNTEsIDIzLCA5NywgMjE3LCAKLSAgICA1MCwgMjMsIDk3LCAyMTcsIDQ4LCAyMywgOTcsIDIxNywgNTMsIDIzLCA5NywgMjIzLCAxNzQsIDIzLCA5NywgMjIzLCAxNTgsIAotICAgIDIzLCA5NywgMjIzLCAxNTMsIDIzLCA5NywgMjIzLCAxNTUsIDIzLCA5NywgMjIzLCAxNzEsIDIzLCA5NywgMjIzLCAxNjQsIAotICAgIDIzLCA5NywgMjIzLCAxNTcsIDIzLCA5NywgMjIzLCAxNzYsIDIzLCA5NywgMjIzLCAxNTksIDIzLCA5NywgMjIzLCAxNzgsIAotICAgIDIzLCA5NywgMjIzLCAxNzUsIDIzLCA5NywgMjMxLCAyNiwgMjMsIDk3LCAyMzEsIDE3LCAyMywgOTcsIDIzMSwgMjAsIDIzLCAKLSAgICA5NywgMjI1LCAyMTIsIDIzLCA5NywgMjI1LCAyMjMsIDIzLCA5NywgMjI1LCAyMjQsIDIzLCA5NywgMjE5LCAxNDIsIDIzLCAKLSAgICA5NywgMjM2LCA0MSwgMjMsIDk3LCAyMzYsIDQ4LCAyMywgOTcsIDIxOSwgMTUzLCAyMywgOTcsIDIxOSwgMTQwLCAyMywgOTcsIAotICAgIDIyNiwgNiwgMjMsIDk3LCAyNDEsIDE1MywgMjMsIDk3LCAyMTksIDEzNywgMTQ0LCA1LCAyMjYsIDE1NSwgMTQ0LCA1LCAKLSAgICAyNTAsIDEyMSwgMTQ0LCA1LCAyMzMsIDkwLCAxNDQsIDUsIDIxMywgMjI4LCAxNDQsIDEsIDYxLCAxNDQsIDEsIDI0MCwgCi0gICAgMTQ2LCAyMzQsIDE5NywgMTQ0LCAxLCA3MiwgMTQ0LCAxLCAyMzYsIDI4LCAxNDQsIDEsIDY5LCAxNDQsIDEsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDk3LCAxNDQsIDEsIDIyOSwgMTYwLCAyMzMsIDUyLCAxNDQsIDEsIDIyOSwgMTYwLCAyMzMsIDUzLCAyMjQsIDM0LCAKLSAgICAxNDQsIDEsIDc0LCAxNDQsIDEsIDI1NCwgMTA4LCAxNDQsIDEsIDc1LCAxNDQsIDEsIDE4MSwgMTQ0LCAxLCAyMzUsIDE3LCAKLSAgICAyMjIsIDE0NCwgMTQ0LCAxLCAyMzUsIDE3LCAyMzAsIDEzNiwgMTQ0LCAxLCAyNDMsIDExMCwgMTQ0LCAxLCAyNDMsIDExMSwgCi0gICAgMjMwLCAxMzYsIDE0NCwgMSwgMjI5LCAxNTksIDE0NCwgMSwgMjUwLCAyMTksIDE0NCwgMSwgMjUwLCAyMjAsIDIzMCwgMTM2LCAKLSAgICAxNDQsIDEsIDIzNSwgMTM5LCAxNDQsIDEsIDIyOCwgMjQsIDIzMCwgMTM2LCAxNDQsIDEsIDIzNSwgMTQwLCAyMzIsIDEyLCAKLSAgICAxNDQsIDEsIDIyOCwgMjMsIDE0NCwgMSwgMjE2LCAxMTUsIDE0NCwgMSwgMjE2LCAxMTYsIDIzMiwgMTIsIDE0NCwgMSwgCi0gICAgMjQ4LCA4NiwgMTQ0LCAxLCAyNDgsIDg3LCAyMzIsIDEyLCAxNDQsIDEsIDIzMCwgNDYsIDIzMCwgMTM2LCAxNDQsIDEsIAotICAgIDIxOCwgNTIsIDE0NCwgMSwgMjE4LCA1MywgMjMwLCAxMzYsIDE0NCwgMSwgMjQ4LCAxNjQsIDE0NCwgMSwgMjQ4LCAxNjUsIAotICAgIDIzMiwgMTIsIDE0NCwgMSwgMjA1LCAxNDQsIDEsIDE5MywgMTQ0LCAxLCAyMjYsIDIxNCwgMjMwLCAxMzYsIDE0NCwgMSwgCi0gICAgMjUyLCAxMDcsIDE0NCwgMSwgMjUyLCAxMDgsIDIzMCwgMTM2LCAxNDQsIDEsIDE4OCwgMTQ0LCAxLCAxODYsIDE0NCwgMSwgCi0gICAgMjAzLCAxNDQsIDEsIDIyNCwgNzcsIDI1NCwgMTE1LCAxNDQsIDEsIDIzMywgMTU3LCAxNDQsIDEsIDIxNCwgNDksIDE0NCwgCi0gICAgMSwgMjIyLCAyMDMsIDIzMCwgMTM2LCAxNDQsIDEsIDIyMiwgMjAzLCAyMzIsIDEyLCAxNDQsIDEsIDIyMiwgMjAyLCAxNDQsIAotICAgIDEsIDE1OSwgMTQ0LCA1LCAyNTAsIDEyMiwgMjE3LCAyMDMsIDE0NCwgMzAsIDUsIDIxNywgMjU0LCAxNDQsIDMwLCA1LCAKLSAgICAyMTYsIDI0NiwgMTQ0LCAzMCwgNSwgMjEzLCAxNzgsIDE0NCwgMzAsIDUsIDIxMywgMTc5LCAyMzEsIDEzMywgMTQ0LCAzMCwgCi0gICAgNSwgMjE4LCAyNDgsIDE0NCwgMzAsIDUsIDIxOCwgMjQ5LCAyMzEsIDEyMSwgMTQ0LCAzMCwgNSwgMjE4LCAxNiwgMTQ0LCAKLSAgICAzMCwgNSwgMjQ3LCAxNDYsIDIzMCwgMTM1LCAxNDQsIDMwLCA1LCAyMjYsIDU5LCAxNDQsIDI0OSwgMTMzLCA1LCAyMzQsIAotICAgIDE2NCwgMTQ0LCAyNDksIDEzMywgNSwgMjI2LCA3MSwgMTQ0LCAyNDksIDEzMywgNSwgMjUwLCAyMDcsIDE0NCwgMjI2LCAKLSAgICAxNjcsIDE0NCwgNDIsIDIyMywgMjIxLCAxNDQsIDQ2LCAyMjMsIDIyMSwgMTQ0LCAyMjYsIDIwMywgMjU0LCAyNiwgMTQ0LCAKLSAgICAyMjYsIDIwMywgMjMyLCAyOSwgMTQ0LCAyMjYsIDIwMywgMjMyLCAxNDYsIDE0NCwgMjI2LCAyMDMsIDIxMywgMjIzLCAxNDQsIAotICAgIDIyNiwgMjAzLCAyMjYsIDE2OCwgMTQ0LCAyMjYsIDIwMywgMjMyLCAyMzQsIDE0NCwgMjI2LCAyMDMsIDIzMiwgMTQwLCAKLSAgICAxNDQsIDIyNiwgMjAzLCAyNTQsIDE1NCwgMTQ0LCAyMjYsIDIwMywgMjU0LCAxNTUsIDI1NCwgMTU0LCAxNDQsIDIyNiwgCi0gICAgMjAzLCAyMjUsIDE4MywgMTQ0LCAyMTYsIDU4LCAyMjYsIDIwMywgMjI1LCAxODMsIDE0NCwgMjI2LCAxNjQsIDE0NCwgMjEsIAotICAgIDIxMiwgNzksIDE0NCwgMjEsIDExNiwgMTQ0LCAyMSwgMTA5LCAxNDQsIDIxLCAxNjYsIDE0NCwgMjEsIDE2MywgMTQ0LCAyMSwgCi0gICAgMTgwLCAxNDQsIDIxLCAxODksIDE0NCwgMjEsIDE5OCwgMTQ0LCAyMSwgMTk1LCAxNDQsIDIxLCAyMDAsIDE0NCwgMjI2LCAKLSAgICAyMDMsIDIxNywgMjIsIDIxNiwgNzAsIDE0NCwgMjI2LCAyMDMsIDIzNSwgMTY1LCAxNjIsIDEsIDYxLCAxNjIsIDEsIDcyLCAKLSAgICAxNjIsIDEsIDY5LCAxNjIsIDEsIDc0LCAxNjIsIDEsIDI1NCwgMTA4LCAxNjIsIDEsIDc1LCAxNjIsIDEsIDE4MSwgMTYyLCAKLSAgICAxLCAyMzQsIDEzOCwgMTYyLCAxLCAyNDMsIDExMCwgMTYyLCAxLCAyNDIsIDIyNSwgMTYyLCAxLCAyMjksIDc1LCAxNjIsIDEsIAotICAgIDIyOSwgMTU5LCAxNjIsIDEsIDI1MCwgOTIsIDE2MiwgMSwgMjUwLCA0OSwgMTYyLCAxLCAyMzUsIDEzOSwgMTYyLCAxLCAKLSAgICAyMzUsIDExNSwgMTYyLCAxLCAyMjksIDY2LCAxNjIsIDEsIDIyOSwgNjgsIDE2MiwgMSwgMjI5LCA2NywgMTYyLCAxLCAyMTgsIAotICAgIDUyLCAxNjIsIDEsIDIxNywgMTYxLCAxNjIsIDEsIDI0OCwgMTY0LCAxNjIsIDEsIDI0NywgMjMyLCAxNjIsIDEsIDIyOCwgCi0gICAgNjIsIDE2MiwgMSwgMjA1LCAxNjIsIDEsIDI0OCwgODYsIDE2MiwgMSwgMTkzLCAxNjIsIDEsIDIyNSwgMTAwLCAxNjIsIDEsIAotICAgIDIyNiwgMjMsIDE2MiwgMSwgMjUyLCAxMDcsIDE2MiwgMSwgMjUxLCAxOTUsIDE2MiwgMSwgMjMwLCAxNjUsIDE2MiwgMSwgCi0gICAgMTg4LCAxNjIsIDEsIDI1MiwgMzEsIDE2MiwgMSwgMTg2LCAxNjIsIDEsIDIwMywgMTYyLCAxLCAyMzMsIDE1NywgMTYyLCAxLCAKLSAgICAyMTUsIDEsIDE2MiwgMSwgMjE5LCAxNTcsIDE2MiwgMSwgMjIyLCAyMDIsIDE2MiwgMSwgMTU5LCAxNjIsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMTYyLCAzMCwgNSwgNzIsIDE2MiwgMzAsIDUsIDIzNiwgMjgsIDE2MiwgMzAsIDUsIDI0NSwgMTUyLCAxNjIsIDMwLCAKLSAgICA1LCA2OSwgMTYyLCAzMCwgNSwgMjI3LCA5OSwgMTYyLCAzMCwgNSwgNzUsIDE2MiwgMzAsIDUsIDI1NCwgMTA4LCAxNjIsIAotICAgIDMwLCA1LCAyNTMsIDEwOCwgMTYyLCAzMCwgNSwgMjE1LCAxODMsIDE2MiwgMjQ5LCAxMzMsIDUsIDE4NiwgMTYyLCAyNDksIAotICAgIDEzMywgNSwgMjAzLCAxNjIsIDI0OSwgMTMzLCA1LCAyMzMsIDE1NywgMTYyLCAyNDksIDEzMywgNSwgMjE0LCA0OSwgMTYyLCAKLSAgICAxLCA0MCwgMjM1LCAyNywgMTYyLCAxLCA0MCwgMjQzLCAxNzcsIDE2MiwgMSwgNDAsIDIyOSwgMTYxLCAxNjIsIDI0OSwgCi0gICAgMTMzLCA1LCA0MCwgMjI5LCAxNjEsIDE2MiwgMSwgNDAsIDI1MCwgOTMsIDE2MiwgMSwgNDAsIDIxOCwgOTksIDE2MiwgMSwgCi0gICAgNDAsIDIwNCwgMTYyLCAxLCA0MCwgMjI2LCAyMjksIDE2MiwgMSwgNDAsIDIxMywgMTA1LCAxNjIsIDEsIDQwLCAxNDksIAotICAgIDE2MiwgMSwgNDAsIDE1MCwgMTYyLCAxLCA0MCwgMjE5LCAxNTgsIDE2MiwgMjQ5LCAxMzMsIDUsIDQwLCAxODMsIDE2MiwgCi0gICAgMjQ5LCAxMzMsIDUsIDQwLCAyNDIsIDQxLCAxNjIsIDIxLCAyMTIsIDc5LCAxNjIsIDIxLCAxMTYsIDE2MiwgMjEsIDEwOSwgCi0gICAgMTYyLCAyMSwgMTY2LCAxNjIsIDIxLCAxNjMsIDE2MiwgMjEsIDE4MCwgMTYyLCAyMSwgMTg5LCAxNjIsIDIxLCAxOTgsIAotICAgIDE2MiwgMjEsIDE5NSwgMTYyLCAyMSwgMjAwLCAxNjIsIDIyNSwgMjcsIDIxOSwgMTgzLCAxNjIsIDIyNSwgMjcsIDI0OCwgCi0gICAgMTIzLCAxNjIsIDIyNSwgMjcsIDUxLCAyNDgsIDEyMywgMTYyLCAyMjUsIDI3LCAyMTYsIDE2OSwgMjQ4LCAxMjMsIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjQzLCAxMTAsIDY0LCAxLCAyMzQsIDEzMiwgMjUwLCAyMTksIDY0LCAxLCAyMzQsIDEzMiwgMjUwLCA5MiwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyMzUsIDEzOSwgNjQsIDEsIDIzNCwgMTMyLCAyMzUsIDExNSwgNjQsIDEsIDIzNCwgMTMyLCAKLSAgICAyMjgsIDIzLCA2NCwgMSwgMjM0LCAxMzIsIDIxNiwgMTE1LCA2NCwgMSwgMjM0LCAxMzIsIDIxNiwgMTA1LCA2NCwgMSwgCi0gICAgMjM0LCAxMzIsIDI0OCwgODYsIDY0LCAxLCAyMzQsIDEzMiwgMjQ4LCA3MCwgNjQsIDEsIDIzNCwgMTMyLCAyNDcsIDIzMiwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyMDUsIDY0LCAxLCAyMzQsIDEzMiwgMjIyLCAyMDIsIDY0LCAxLCAyMzQsIDEzMiwgMTU5LCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDI0MSwgMTc0LCA2NCwgMSwgMjM0LCAxMzIsIDI0NCwgMTY0LCA2NCwgNTksIDEsIDIzNCwgCi0gICAgMTMyLCAyMjQsIDIsIDY0LCAxLCAyMzQsIDEzMiwgMjEzLCAxNTMsIDY0LCAxLCAyMzQsIDEzMiwgMjEyLCAxMDksIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjAzLCA2NCwgMjMyLCAxOTgsIDIzNCwgMTMyLCAyMjcsIDExNywgNjQsIDIzMiwgMTk4LCAyMzQsIDEzMiwgCi0gICAgMjI0LCAxODgsIDY0LCAyMzIsIDE5OCwgMjM0LCAxMzIsIDI0MSwgMTA3LCA2NCwgMTYsIDI1NCwgOTgsIDI0NCwgMjUzLCAKLSAgICA2NCwgMTYsIDI1NCwgOTgsIDExNiwgNjQsIDE2LCAyNTQsIDk4LCAxMDksIDY0LCAxLCAyNTQsIDk4LCAyMDMsIDY0LCA1LCAKLSAgICAyMjYsIDE1MSwgMjM0LCAyMTgsIDIxNiwgMjQxLCAzOCwgMTkwLCAxLCAxMTUsIDIzNCwgMzcsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjM0LCAzNywgMzgsIDE5MCwgMSwgMTE1LCAyMzQsIDExMywgMzgsIDE5MCwgMSwgMTI0LCAyMzQsIDExMywgMzgsIDE5MCwgCi0gICAgMSwgMTE1LCAyMzQsIDEyMCwgMzgsIDE5MCwgMSwgMTI0LCAyMzQsIDEyMCwgMzgsIDE5MCwgMSwgMTE1LCAyNDIsIDE1MCwgCi0gICAgMzgsIDE5MCwgMSwgMTI0LCAyNDIsIDE1MCwgMzgsIDE5MCwgMSwgMTE1LCAyMjksIDkwLCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIyOSwgOTAsIDM4LCAxOTAsIDEsIDExNSwgMjQ5LCAxNzUsIDM4LCAxOTAsIDEsIDEyNCwgMjQ5LCAxNzUsIDM4LCAxOTAsIAotICAgIDEsIDExNSwgMjUwLCAyMywgMzgsIDE5MCwgMSwgMTI0LCAyNTAsIDIzLCAzOCwgMTkwLCAxLCAxMTUsIDIxOSwgMjQyLCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDIxOSwgMjQyLCAzOCwgMTkwLCAxLCAxMTUsIDIyNywgMjUzLCAzOCwgMTkwLCAxLCAxMjQsIDIyNywgCi0gICAgMjUzLCAzOCwgMTkwLCAxLCAxMTUsIDI0NywgOTksIDM4LCAxOTAsIDEsIDEyNCwgMjQ3LCA5OSwgMzgsIDE5MCwgMSwgMTE1LCAKLSAgICAxMDgsIDM4LCAxOTAsIDEsIDEyNCwgMTA4LCAzOCwgMTkwLCAxLCAxMTUsIDIxNywgMTA5LCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIxNywgMTA5LCAzOCwgMTkwLCAxLCAxMTUsIDIyOCwgMTg1LCAzOCwgMTkwLCAxLCAxMjQsIDIyOCwgMTg1LCAzOCwgMTkwLCAKLSAgICAxLCAxMTUsIDI1MSwgMTI4LCAzOCwgMTkwLCAxLCAxMjQsIDI1MSwgMTI4LCAzOCwgMTkwLCAxLCAxMTUsIDIyNSwgMTUwLCAKLSAgICAzOCwgMTkwLCAxLCAxMjQsIDIyNSwgMTUwLCAzOCwgMTkwLCAxLCAxMTUsIDIyNSwgMjUzLCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIyNSwgMjUzLCAzOCwgMTkwLCAxLCAxMTUsIDI0NCwgMTIsIDM4LCAxOTAsIDEsIDEyNCwgMjQ0LCAxMiwgMzgsIDE5MCwgMSwgCi0gICAgMTE1LCAyMzAsIDIzMSwgMzgsIDE5MCwgMSwgMTI0LCAyMzAsIDIzMSwgMzgsIDE5MCwgMSwgMTE1LCAyMTIsIDIzNSwgMzgsIAotICAgIDE5MCwgMSwgMTI0LCAyMTIsIDIzNSwgMzgsIDE5MCwgMSwgMTE1LCAyMjMsIDExMiwgMzgsIDE5MCwgMSwgMTI0LCAyMjMsIAotICAgIDExMiwgMzgsIDE5MCwgMSwgMTE1LCAyMzIsIDIwOCwgMzgsIDE5MCwgMSwgMTI0LCAyMzIsIDIwOCwgMzgsIDE5MCwgMSwgCi0gICAgMTE1LCAyMTQsIDExOSwgMzgsIDE5MCwgMSwgMTI0LCAyMTQsIDExOSwgMzgsIDE5MCwgMSwgMTE1LCAyNDEsIDU0LCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDI0MSwgNTQsIDM4LCAxOTAsIDEsIDExNSwgNzUsIDM4LCAxOTAsIDEsIDEyNCwgNzUsIDM4LCAxOTAsIAotICAgIDIzMiwgOSwgMjM0LCAyMzUsIDM4LCAxOTAsIDMwLCAyNTQsIDIzMiwgMzgsIDE5MCwgMzAsIDcyLCAzOCwgMTkwLCAzMCwgCi0gICAgMjE1LCAxODMsIDM4LCAxOTAsIDMwLCA2OSwgMzgsIDE5MCwgMzAsIDc0LCAzOCwgMTkwLCAzMCwgNzUsIDM4LCAxOTAsIAotICAgIDIzMiwgOSwgMjM0LCAxMTUsIDM4LCAxOTAsIDMwLCAyNDAsIDExMSwgMzgsIDE5MCwgMzAsIDIxNSwgMTgyLCAzOCwgMTkwLCAKLSAgICAzMCwgMjE1LCAxOTYsIDM4LCAxOTAsIDMwLCAyNTMsIDEwNiwgMzgsIDE5MCwgMzAsIDI1MywgODMsIDM4LCAxOTAsIDMwLCAKLSAgICAyNTQsIDMyLCAzOCwgMTkwLCAzMCwgMjU0LCA0NSwgMzgsIDE5MCwgMTYwLCAyMzIsIDksIDI0NSwgMTM3LCAzOCwgMTkwLCAKLSAgICAxNjAsIDIzMiwgOSwgMjI4LCA2MSwgMzgsIDE5MCwgMTYwLCAyMzIsIDksIDIxNywgMTA5LCAzOCwgMTkwLCAxNjAsIDIzMiwgCi0gICAgOSwgMjE5LCAyMjgsIDM4LCAxOTAsIDE2LCAyMzQsIDIyLCAzOCwgMTkwLCAxNiwgMjI4LCA2MSwgMzgsIDE5MCwgMTYsIAotICAgIDIyMiwgMTY4LCAzOCwgMTkwLCAxNiwgMjQxLCA1NSwgMjQxLCA1MCwgMzgsIDE5MCwgMTYsIDIzNCwgMzEsIDIzNCwgMzAsIAotICAgIDI4LCA0LCAyMTYsIDk4LCAyOCwgNCwgMjE2LCAxMDEsIDI4LCA0LCAyMTYsIDEwNCwgMjgsIDQsIDIxNiwgMTAyLCAyOCwgNCwgCi0gICAgMjE2LCAxMDMsIDI4LCA0LCAyMTYsIDEwMCwgMjgsIDQsIDI0OCwgNjQsIDI4LCA0LCAyNDgsIDY2LCAyOCwgNCwgMjQ4LCAKLSAgICA2OSwgMjgsIDQsIDI0OCwgNjcsIDI4LCA0LCAyNDgsIDY4LCAyOCwgNCwgMjQ4LCA2NSwgMjgsIDQsIDI0NSwgMjM5LCAyOCwgCi0gICAgNCwgMjQ1LCAyNDIsIDI4LCA0LCAyNDUsIDI0OCwgMjgsIDQsIDI0NSwgMjQ2LCAyOCwgNCwgMjQ1LCAyNDcsIDI4LCA0LCAKLSAgICAyNDUsIDI0MCwgMjgsIDQsIDI1MCwgMTM4LCAyOCwgNCwgMjUwLCAxMzIsIDI4LCA0LCAyNTAsIDEzNCwgMjgsIDQsIDI1MCwgCi0gICAgMTM3LCAyOCwgNCwgMjUwLCAxMzUsIDI4LCA0LCAyNTAsIDEzNiwgMjgsIDQsIDI1MCwgMTMzLCAyOCwgNCwgMjUyLCAzMSwgCi0gICAgMjgsIDQsIDI1MiwgMTAsIDI4LCA0LCAyNTIsIDIyLCAyOCwgNCwgMjUyLCAzMCwgMjgsIDQsIDI1MiwgMjUsIDI4LCA0LCAKLSAgICAyNTIsIDI2LCAyOCwgNCwgMjUyLCAxNCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzQsIDI4LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDEsIDIyMiwgMTY4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzMywgMTMzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIAotICAgIDIzMCwgMjQxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDE5MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMDUsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgMjUwLCAzOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTcsIDQ0LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDEsIDIzNCwgMTA5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyOSwgODAsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgCi0gICAgMjE3LCAxMDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE0LCA0NCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTMsIDU4LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0MCwgMjA2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNSwgMTYwLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDcyLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNiwgMTgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgCi0gICAgMSwgMjUzLCAxMTgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQyLCAxNDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjM1LCAKLSAgICAxMTQsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI0LCA1NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNTIsIDEwNywgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzUsIDEwMywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDcsIDE3MSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyNDIsIDE5NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDcsIDIxMywgMjMxLCAxNDAsIAotICAgIDIzMSwgMTk0LCAxLCAyNTEsIDE5NCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzQsIDI5LCAyMzIsIDE4MSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyMzMsIDEzNCwgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjMwLCAyNDIsIAotICAgIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNiwgMjE0LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAKLSAgICAxLCAyMzAsIDQ2LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTcsIDQ1LCAyMzIsIDE4MSwgMjMxLCAxNDAsIAotICAgIDIzMSwgMTk0LCAxLCAyMjksIDgxLCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDAsIDE0NiwgMjMyLCAKLSAgICAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIyNywgNjEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIzNSwgCi0gICAgMjQ5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyNTQsIDMxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTMsIAotICAgIDI5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTksIDIxOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjE1LCAKLSAgICAxNTcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDI1MCwgNjAsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIyOCwgCi0gICAgNDcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjUwLCA2MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMzIsIDE0MywgMjM1LCAxNDgsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjUzLCAyMTYsIDIzNSwgMTQ4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAyMTIsIDc5LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxMTYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDEwOSwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAyMSwgMTY2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxNjMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE4MCwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTg5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxOTgsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMjEsIDE5NSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMjAwLCAyMywgMTM1LCAyMjcsIDE5NywgMjMsIDEzNSwgCi0gICAgMjI3LCAyMDIsIDIzLCAxMzUsIDIxMiwgMjM0LCAyMywgMTM1LCAyMTIsIDIzMywgMjMsIDEzNSwgMjEyLCAyMzIsIDIzLCAKLSAgICAxMzUsIDIxNSwgMjQ2LCAyMywgMTM1LCAyMTUsIDI0OSwgMjMsIDEzNSwgMjEyLCAyMDEsIDIzLCAxMzUsIDIxMiwgMTk3LCAKLSAgICAyMywgMTM1LCAyNDUsIDIxLCAyMywgMTM1LCAyNDUsIDE5LCAyMywgMTM1LCAyNDUsIDIwLCAyMywgMTM1LCAyNDUsIDE3LCAKLSAgICAyMywgMTM1LCAyNDAsIDEzNiwgMjMsIDEzNSwgMjQwLCAxMzUsIDIzLCAxMzUsIDI0MCwgMTMzLCAyMywgMTM1LCAyNDAsIAotICAgIDEzNCwgMjMsIDEzNSwgMjQwLCAxMzksIDIzLCAxMzUsIDI0MCwgMTMyLCAyMywgMTM1LCAyNDAsIDEzMSwgMjMsIDEzNSwgCi0gICAgMjQwLCAxNDEsIDIzLCAxMzUsIDI1MywgMjAzLCAyMywgMTM1LCAyNTMsIDIwMiwgMjMsIDg5LCAyMjksIDUwLCAyMywgODksIAotICAgIDIyOSwgNTYsIDIzLCA4OSwgMjE5LCAxMzksIDIzLCA4OSwgMjE5LCAxMzgsIDIzLCA4OSwgMjE3LCA1MCwgMjMsIDg5LCAKLSAgICAyMTcsIDQ4LCAyMywgODksIDIxNywgNDcsIDIzLCA4OSwgMjE3LCA1MywgMjMsIDg5LCAyMTcsIDU0LCAyMywgODksIDIxNywgCi0gICAgNDYsIDIzLCA4OSwgMjIzLCAxNTgsIDIzLCA4OSwgMjIzLCAxNzMsIDIzLCA4OSwgMjE5LCAxNDUsIDIzLCA4OSwgMjIzLCAKLSAgICAxNzAsIDIzLCA4OSwgMjIzLCAxNjAsIDIzLCA4OSwgMjIzLCAxNjIsIDIzLCA4OSwgMjIzLCAxNDksIDIzLCA4OSwgMjIzLCAKLSAgICAxNTAsIDIzLCA4OSwgMjM0LCAyMjMsIDIzLCA4OSwgMjMxLCAyNSwgMjMsIDg5LCAyMzEsIDE5LCAyMywgODksIDIxOSwgCi0gICAgMTQ5LCAyMywgODksIDIzMSwgMjIsIDIzLCA4OSwgMjMxLCAyOCwgMjMsIDg5LCAyMjUsIDIwOCwgMjMsIDg5LCAyMjUsIAotICAgIDIxNywgMjMsIDg5LCAyMjUsIDIyMSwgMjMsIDg5LCAyMTksIDE0NywgMjMsIDg5LCAyMjUsIDIxMSwgMjMsIDg5LCAyMjUsIAotICAgIDIyNSwgMjMsIDg5LCAyMjUsIDIyNiwgMjMsIDg5LCAyMjAsIDY4LCAyMywgODksIDIyMCwgNzEsIDIzLCA4OSwgMjE5LCAKLSAgICAxNDMsIDIzLCA4OSwgMjE5LCAxNDEsIDIzLCA4OSwgMjIwLCA2NiwgMjMsIDg5LCAyMjAsIDc0LCAyMywgODksIDIyMCwgNzUsIAotICAgIDIzLCA4OSwgMjIwLCA2MCwgMjMsIDg5LCAyMjAsIDczLCAyMywgODksIDIyNiwgMTU4LCAyMywgODksIDIyNiwgMTU5LCAyMywgCi0gICAgODksIDIxMywgMTUsIDIzLCA4OSwgMjEzLCAxNiwgMjMsIDg5LCAyNDksIDIzNywgMjMsIDg5LCAyNDksIDIzNiwgMjMsIDg5LCAKLSAgICAyMTksIDE1NCwgMjMsIDg5LCAyMjYsIDQsIDIzLCA4OSwgMjI2LCAzLCA5LCAxMywgMjM4LCAxNywgOSwgMTMsIDIzOCwgMTYsIAotICAgIDksIDEzLCAyMzgsIDE1LCA5LCAxMywgMjM4LCAxNCwgOSwgMTMsIDIzOCwgMTMsIDksIDEzLCAyMzgsIDEyLCA5LCAxMywgCi0gICAgMjM4LCAxMSwgOSwgMTMsIDIzOCwgMTAsIDksIDEzLCAyMzgsIDksIDksIDEzLCAyMzgsIDgsIDksIDEzLCAyMzgsIDcsIDksIAotICAgIDEzLCAyMzgsIDYsIDksIDEzLCAyMzgsIDUsIDksIDEzLCAyMzgsIDQsIDksIDEzLCAyMzgsIDMsIDksIDEzLCAyMzgsIDIsIAotICAgIDksIDEzLCAyMzgsIDEsIDksIDEzLCAyMzgsIDAsIDksIDEzLCAyMzcsIDI1NSwgOSwgMTMsIDIzNywgMjU0LCA5LCAxMywgCi0gICAgMjM3LCAyNTMsIDksIDEzLCAyMzcsIDI1MiwgOSwgMTMsIDIzNywgMjUxLCA5LCAxMywgMjM3LCAyNTAsIDksIDEzLCAyMzcsIAotICAgIDI0OSwgOSwgMTMsIDIzNywgMjQ4LCA5LCAxMywgMjM3LCAyNDcsIDksIDEzLCAyMzcsIDI0NiwgOSwgMTMsIDIzNywgMjQ1LCAKLSAgICA5LCAxMywgMjM3LCAyNDQsIDksIDEzLCAyMzcsIDI0MywgOSwgMTMsIDIzNywgMjQyLCA5LCAxMywgMjM3LCAyNDEsIDksIAotICAgIDEzLCAyMzcsIDI0MCwgOSwgMTMsIDIzNywgMjM5LCA5LCAxMywgMjM3LCAyMzgsIDksIDEzLCAyMzcsIDIzNywgOSwgMTMsIAotICAgIDIzNywgMjM2LCA5LCAxMywgMjM3LCAyMzUsIDksIDEzLCAyMzcsIDIzNCwgOSwgMTMsIDIzNywgMjMzLCA5LCAxMywgMjM3LCAKLSAgICAyMzIsIDksIDEzLCAyMzcsIDIzMSwgOSwgMTMsIDIzNywgMjMwLCA5LCAxMywgMjM3LCAyMjksIDksIDEzLCAyMzcsIDIyOCwgCi0gICAgOSwgMTMsIDIzNywgMjI3LCA5LCAxMywgMjM3LCAyMjYsIDksIDEzLCAyMzcsIDIyNSwgOSwgMTMsIDIzNywgMjI0LCA5LCAKLSAgICAxMywgMjM3LCAyMjMsIDksIDEzLCAyMzcsIDIyMiwgOSwgMTMsIDIzNywgMjIxLCA5LCAxMywgMjM3LCAyMjAsIDksIDEzLCAKLSAgICAyMzcsIDIxOSwgOSwgMTMsIDIzNywgMjE4LCA5LCAxMywgMjM3LCAyMTcsIDksIDEzLCAyMzcsIDIxNiwgOSwgMTMsIDIzNywgCi0gICAgMjE1LCA5LCAxMywgMjM3LCAyMTQsIDksIDEzLCAyMzcsIDIxMywgOSwgMTMsIDIzNywgMjEyLCA5LCAxMywgMjM3LCAyMTEsIAotICAgIDksIDEzLCAyMzcsIDIxMCwgOSwgMTMsIDIzNywgMjA5LCA5LCAxMywgMjM3LCAyMDgsIDksIDEzLCAyMzcsIDIwNywgOSwgCi0gICAgMTMsIDIzNywgMjA2LCA5LCAxMywgMjM3LCAyMDUsIDksIDEzLCAyMzcsIDIwNCwgOSwgMTMsIDIzNywgMjAzLCA5LCAxMywgCi0gICAgMjM3LCAyMDIsIDksIDEzLCAyMzcsIDIwMSwgOSwgMTMsIDIzNywgMjAwLCA5LCAxMywgMjM3LCAxOTksIDksIDEzLCAyMzcsIAotICAgIDE5OCwgOSwgMTMsIDIzNywgMTk3LCA5LCAxMywgMjM3LCAxOTYsIDksIDEzLCAyMzcsIDE5NSwgOSwgMTMsIDIzNywgMTk0LCAKLSAgICA5LCAxMywgMjM3LCAxOTMsIDksIDEzLCAyMzcsIDE5MiwgOSwgMTMsIDIzNywgMTkxLCA5LCAxMywgMjM3LCAxOTAsIDksIAotICAgIDEzLCAyMzcsIDE4OSwgOSwgMTMsIDIzNywgMTg4LCA5LCAxMywgMjM3LCAxODcsIDksIDEzLCAyMzcsIDE4NiwgOSwgMTMsIAotICAgIDIzNywgMTg1LCA5LCAxMywgMjM3LCAxODQsIDksIDEzLCAyMzcsIDE4MywgOSwgMTMsIDIzNywgMTgyLCA5LCAxMywgMjM3LCAKLSAgICAxODEsIDksIDEzLCAyMzcsIDE4MCwgOSwgMTMsIDIzNywgMTc5LCA5LCAxMywgMjM3LCAxNzgsIDksIDEzLCAyMzcsIDE3NywgCi0gICAgOSwgMTMsIDIzNywgMTc2LCA5LCAxMywgMjM3LCAxNzUsIDksIDEzLCAyMzcsIDE3NCwgOSwgMTMsIDIzNywgMTczLCA5LCAKLSAgICAxMywgMjM3LCAxNzIsIDksIDEzLCAyMzcsIDE3MSwgOSwgMTMsIDIzNywgMTcwLCA5LCAxMywgMjM3LCAxNjksIDksIDEzLCAKLSAgICAyMzcsIDE2OCwgOSwgMTMsIDIzNywgMTY3LCA5LCAxMywgMjM3LCAxNjYsIDksIDEzLCAyMzcsIDE2NSwgOSwgMTMsIDIzNywgCi0gICAgMTY0LCA5LCAxMywgMjM3LCAxNjMsIDksIDEzLCAyMzcsIDE2MiwgOSwgMTMsIDIzNywgMTYxLCA5LCAxMywgMjM3LCAxNjAsIAotICAgIDksIDEzLCAyMzcsIDE1OSwgOSwgMTMsIDIzNywgMTU4LCA5LCAxMywgMjM3LCAxNTcsIDksIDEzLCAyMzcsIDE1NiwgOSwgCi0gICAgMTMsIDIzNywgMTU1LCA5LCAxMywgMjM3LCAxNTQsIDksIDEzLCAyMzcsIDE1MywgOSwgMTMsIDIzNywgMTUyLCA5LCAxMywgCi0gICAgMjM3LCAxNTEsIDksIDEzLCAyMzcsIDE1MCwgOSwgMTMsIDIzNywgMTQ5LCA5LCAxMywgMjM3LCAxNDgsIDksIDEzLCAyMzcsIAotICAgIDE0NywgOSwgMTMsIDIzNywgMTQ2LCA5LCAxMywgMjM3LCAxNDUsIDksIDEzLCAyMzcsIDE0NCwgOSwgMTMsIDIzNywgMTQzLCAKLSAgICA5LCAxMywgMjM3LCAxNDIsIDksIDEzLCAyMzcsIDE0MSwgOSwgMTMsIDIzNywgMTQwLCA5LCAxMywgMjM3LCAxMzksIDksIAotICAgIDEzLCAyMzcsIDEzOCwgOSwgMTMsIDIzNywgMTM3LCA5LCAxMywgMjM3LCAxMzYsIDksIDEzLCAyMzcsIDEzNSwgOSwgMTMsIAotICAgIDIzNywgMTM0LCA5LCAxMywgMjM3LCAxMzMsIDksIDEzLCAyMzcsIDEzMiwgOSwgMTMsIDIzNywgMTMxLCA5LCAxMywgMjM3LCAKLSAgICAxMzAsIDksIDEzLCAyMzcsIDEyOSwgOSwgMTMsIDIzNywgMTI4LCA5LCAxMywgMjM3LCAxMjcsIDksIDEzLCAyMzcsIDEyNiwgCi0gICAgOSwgMTMsIDIzNywgMTI1LCA5LCAxMywgMjM3LCAxMjQsIDksIDEzLCAyMzcsIDEyMywgOSwgMTMsIDIzNywgMTIyLCA5LCAKLSAgICAxMywgMjM3LCAxMjEsIDksIDEzLCAyMzcsIDEyMCwgOSwgMTMsIDIzNywgMTE5LCA5LCAxMywgMjM3LCAxMTgsIDksIDEzLCAKLSAgICAyMzcsIDExNywgOSwgMTMsIDIzNywgMTE2LCA5LCAxMywgMjM3LCAxMTUsIDksIDEzLCAyMzcsIDExNCwgOSwgMTMsIDIzNywgCi0gICAgMTEzLCA5LCAxMywgMjM3LCAxMTIsIDksIDEzLCAyMzcsIDExMSwgOSwgMTMsIDIzNywgMTEwLCA5LCAxMywgMjM3LCAxMDksIAotICAgIDksIDEzLCAyMzcsIDEwOCwgOSwgMTMsIDIzNywgMTA3LCA5LCAxMywgMjM3LCAxMDYsIDksIDEzLCAyMzcsIDEwNSwgOSwgCi0gICAgMTMsIDIzNywgMTA0LCA5LCAxMywgMjM3LCAxMDMsIDksIDEzLCAyMzcsIDEwMiwgOSwgMTMsIDIzNywgMTAxLCA5LCAxMywgCi0gICAgMjM3LCAxMDAsIDksIDEzLCAyMzcsIDk5LCA5LCAxMywgMjM3LCA5OCwgOSwgMTMsIDIzNywgOTcsIDksIDEzLCAyMzcsIDk2LCAKLSAgICA5LCAxMywgMjM3LCA5NSwgOSwgMTMsIDIzNywgOTQsIDksIDEzLCAyMzcsIDkzLCA5LCAxMywgMjM3LCA5MiwgOSwgMTMsIAotICAgIDIzNywgOTEsIDksIDEzLCAyMzcsIDkwLCA5LCAxMywgMjM3LCA4OSwgOSwgMTMsIDIzNywgODgsIDksIDEzLCAyMzcsIDg3LCAKLSAgICA5LCAxMywgMjM3LCA4NiwgOSwgMTMsIDIzNywgODUsIDksIDEzLCAyMzcsIDg0LCA5LCAxMywgMjM3LCA4MywgOSwgMTMsIAotICAgIDIzNywgODIsIDksIDEzLCAyMzcsIDgxLCA5LCAxMywgMjM3LCA4MCwgOSwgMTMsIDIzNywgNzksIDksIDEzLCAyMzcsIDc4LCAKLSAgICA5LCAxMywgMjM3LCA3NywgOSwgMTMsIDIzNywgNzYsIDksIDEzLCAyMzcsIDc1LCA5LCAxMywgMjM3LCA3NCwgOSwgMTMsIAotICAgIDIzNywgNzMsIDksIDEzLCAyMzcsIDcyLCA5LCAxMywgMjM3LCA3MSwgOSwgMTMsIDIzNywgNzAsIDksIDEzLCAyMzcsIDY5LCAKLSAgICA5LCAxMywgMjM3LCA2OCwgOSwgMTMsIDIzNywgNjcsIDksIDEzLCAyMzcsIDY2LCA5LCAxMywgMjM3LCA2NSwgOSwgMTMsIAotICAgIDIzNywgNjQsIDksIDEzLCAyMzcsIDYzLCA5LCAxMywgMjM3LCA2MiwgOSwgMTMsIDIzNywgNjEsIDksIDEzLCAyMzcsIDYwLCAKLSAgICA5LCAxMywgMjM3LCA1OSwgOSwgMTMsIDIzNywgNTgsIDksIDEzLCAyMzcsIDU3LCA5LCAxMywgMjM3LCA1NiwgOSwgMTMsIAotICAgIDIzNywgNTUsIDksIDEzLCAyMzcsIDU0LCA5LCAxMywgMjM3LCA1MywgOSwgMTMsIDIzNywgNTIsIDksIDEzLCAyMzcsIDUxLCAKLSAgICA5LCAxMywgMjM3LCA1MCwgOSwgMTMsIDIzNywgNDksIDksIDEzLCAyMzcsIDQ4LCA5LCAxMywgMjM3LCA0NywgOSwgMTMsIAotICAgIDIzNywgNDYsIDksIDEzLCAyMzcsIDQ1LCA5LCAxMywgMjM3LCA0NCwgOSwgMTMsIDIzNywgNDMsIDksIDEzLCAyMzcsIDQyLCAKLSAgICA5LCAxMywgMjM3LCA0MSwgOSwgMTMsIDIzNywgNDAsIDksIDEzLCAyMzcsIDM5LCA5LCAxMywgMjM3LCAzOCwgOSwgMTMsIAotICAgIDIzNywgMzcsIDksIDEzLCAyMzcsIDM2LCA5LCAxMywgMjM3LCAzNSwgOSwgMTMsIDIzNywgMzQsIDksIDEzLCAyMzcsIDMzLCAKLSAgICA5LCAxMywgMjM3LCAzMiwgOSwgMTMsIDIzNywgMzEsIDksIDEzLCAyMzcsIDMwLCA5LCAxMywgMjM3LCAyOSwgOSwgMTMsIAotICAgIDIzNywgMjgsIDksIDEzLCAyMzcsIDI3LCA5LCAxMywgMjM3LCAyNiwgOSwgMTMsIDIzNywgMjUsIDksIDEzLCAyMzcsIDI0LCAKLSAgICA5LCAxMywgMjM3LCAyMywgOSwgMTMsIDIzNywgMjIsIDksIDEzLCAyMzcsIDIxLCA5LCAxMywgMjM3LCAyMCwgOSwgMTMsIAotICAgIDIzNywgMTksIDksIDEzLCAyMzcsIDE4LCA5LCAxMywgMjM3LCAxNywgOSwgMTMsIDIzNywgMTYsIDksIDEzLCAyMzcsIDE1LCAKLSAgICA5LCAxMywgMjM3LCAxNCwgOSwgMTMsIDIzNywgMTMsIDksIDEzLCAyMzcsIDEyLCA5LCAxMywgMjM3LCAxMSwgOSwgMTMsIAotICAgIDIzNywgMTAsIDksIDEzLCAyMzcsIDksIDksIDEzLCAyMzcsIDgsIDksIDEzLCAyMzcsIDcsIDksIDEzLCAyMzcsIDYsIDksIAotICAgIDEzLCAyMzcsIDUsIDksIDEzLCAyMzcsIDQsIDksIDEzLCAyMzcsIDMsIDksIDEzLCAyMzcsIDIsIDksIDEzLCAyMzcsIDEsIAotICAgIDksIDEzLCAyMzcsIDAsIDksIDEzLCAyMzYsIDI1NSwgOSwgMTMsIDIzNiwgMjU0LCA5LCAxMywgMjM2LCAyNTMsIDksIDEzLCAKLSAgICAyMzYsIDI1MiwgOSwgMTMsIDIzNiwgMjUxLCA5LCAxMywgMjM2LCAyNTAsIDksIDEzLCAyMzYsIDI0OSwgOSwgMTMsIDIzNiwgCi0gICAgMjQ4LCA5LCAxMywgMjM2LCAyNDcsIDksIDEzLCAyMzYsIDI0NiwgOSwgMTMsIDIzNiwgMjQ1LCA5LCAxMywgMjM2LCAyNDQsIAotICAgIDksIDEzLCAyMzYsIDI0MywgOSwgMTMsIDIzNiwgMjQyLCA5LCAxMywgMjM2LCAyNDEsIDksIDEzLCAyMzYsIDI0MCwgOSwgCi0gICAgMTMsIDIzNiwgMjM5LCA5LCAxMywgMjM2LCAyMzgsIDksIDEzLCAyMzYsIDIzNywgOSwgMTMsIDIzNiwgMjM2LCA5LCAxMywgCi0gICAgMjM2LCAyMzUsIDksIDEzLCAyMzYsIDIzNCwgOSwgMTMsIDIzNiwgMjMzLCA5LCAxMywgMjM2LCAyMzIsIDksIDEzLCAyMzYsIAotICAgIDIzMSwgOSwgMTMsIDIzNiwgMjMwLCA5LCAxMywgMjM2LCAyMjksIDksIDEzLCAyMzYsIDIyOCwgOSwgMTMsIDIzNiwgMjI3LCAKLSAgICA5LCAxMywgMjM2LCAyMjYsIDksIDEzLCAyMzYsIDIyNSwgOSwgMTMsIDIzNiwgMjI0LCA5LCAxMywgMjM2LCAyMjMsIDksIAotICAgIDEzLCAyMzYsIDIyMiwgOSwgMTMsIDIzNiwgMjIxLCA5LCAxMywgMjM2LCAyMjAsIDksIDEzLCAyMzYsIDIxOSwgOSwgMTMsIAotICAgIDIzNiwgMjE4LCA5LCAxMywgMjM2LCAyMTcsIDksIDEzLCAyMzYsIDIxNiwgOSwgMTMsIDIzNiwgMjE1LCA5LCAxMywgMjM2LCAKLSAgICAyMTQsIDksIDEzLCAyMzYsIDIxMywgOSwgMTMsIDIzNiwgMjEyLCA5LCAxMywgMjM2LCAyMTEsIDksIDEzLCAyMzYsIDIxMCwgCi0gICAgOSwgMTMsIDIzNiwgMjA5LCA5LCAxMywgMjM2LCAyMDgsIDksIDEzLCAyMzYsIDIwNywgOSwgMTMsIDIzNiwgMjA2LCA5LCAKLSAgICAxMywgMjM2LCAyMDUsIDksIDEzLCAyMzYsIDIwNCwgOSwgMTMsIDIzNiwgMjAzLCA5LCAxMywgMjM2LCAyMDIsIDksIDEzLCAKLSAgICAyMzYsIDIwMSwgOSwgMTMsIDIzNiwgMjAwLCA5LCAxMywgMjM2LCAxOTksIDksIDEzLCAyMzYsIDE5OCwgOSwgMTMsIDIzNiwgCi0gICAgMTk3LCA5LCAxMywgMjM2LCAxOTYsIDksIDEzLCAyMzYsIDE5NSwgOSwgMTMsIDIzNiwgMTk0LCA5LCAxMywgMjM2LCAxOTMsIAotICAgIDksIDEzLCAyMzYsIDE5MiwgOSwgMTMsIDIzNiwgMTkxLCA5LCAxMywgMjM2LCAxOTAsIDksIDEzLCAyMzYsIDE4OSwgOSwgCi0gICAgMTMsIDIzNiwgMTg4LCA5LCAxMywgMjM2LCAxODcsIDksIDEzLCAyMzYsIDE4NiwgOSwgMTMsIDIzNiwgMTg1LCA5LCAxMywgCi0gICAgMjM2LCAxODQsIDksIDEzLCAyMzYsIDE4MywgOSwgMTMsIDIzNiwgMTgyLCA5LCAxMywgMjM2LCAxODEsIDksIDEzLCAyMzYsIAotICAgIDE4MCwgOSwgMTMsIDIzNiwgMTc5LCA5LCAxMywgMjM2LCAxNzgsIDksIDEzLCAyMzYsIDE3NywgOSwgMTMsIDIzNiwgMTc2LCAKLSAgICA5LCAxMywgMjM2LCAxNzUsIDksIDEzLCAyMzYsIDE3NCwgOSwgMTMsIDIzNiwgMTczLCA5LCAxMywgMjM2LCAxNzIsIDksIAotICAgIDEzLCAyMzYsIDE3MSwgOSwgMTMsIDIzNiwgMTcwLCA5LCAxMywgMjM2LCAxNjksIDksIDEzLCAyMzYsIDE2OCwgOSwgMTMsIAotICAgIDIzNiwgMTY3LCA5LCAxMywgMjM2LCAxNjYsIDksIDEzLCAyMzYsIDE2NSwgOSwgMTMsIDIzNiwgMTY0LCA5LCAxMywgMjM2LCAKLSAgICAxNjMsIDksIDEzLCAyMzYsIDE2MiwgOSwgMTMsIDIzNiwgMTYxLCA5LCAxMywgMjM2LCAxNjAsIDksIDEzLCAyMzYsIDE1OSwgCi0gICAgOSwgMTMsIDIzNiwgMTU4LCA5LCAxMywgMjM2LCAxNTcsIDksIDEzLCAyMzYsIDE1NiwgOSwgMTMsIDIzNiwgMTU1LCA5LCAKLSAgICAxMywgMjM2LCAxNTQsIDksIDEzLCAyMzYsIDE1MywgOSwgMTMsIDIzNiwgMTUyLCA5LCAxMywgMjM2LCAxNTEsIDksIDEzLCAKLSAgICAyMzYsIDE1MCwgOSwgMTMsIDIzNiwgMTQ5LCA5LCAxMywgMjM2LCAxNDgsIDksIDEzLCAyMzYsIDE0NywgOSwgMTMsIDIzNiwgCi0gICAgMTQ2LCA5LCAxMywgMjM2LCAxNDUsIDksIDEzLCAyMzYsIDE0NCwgOSwgMTMsIDIzNiwgMTQzLCA5LCAxMywgMjM2LCAxNDIsIAotICAgIDksIDEzLCAyMzYsIDE0MSwgOSwgMTMsIDIzNiwgMTQwLCA5LCAxMywgMjM2LCAxMzksIDksIDEzLCAyMzYsIDEzOCwgOSwgCi0gICAgMTMsIDIzNiwgMTM3LCA5LCAxMywgMjM2LCAxMzYsIDksIDEzLCAyMzYsIDEzNSwgOSwgMTMsIDIzNiwgMTM0LCA5LCAxMywgCi0gICAgMjM2LCAxMzMsIDksIDEzLCAyMzYsIDEzMiwgOSwgMTMsIDIzNiwgMTMxLCA5LCAxMywgMjM2LCAxMzAsIDksIDEzLCAyMzYsIAotICAgIDEyOSwgOSwgMTMsIDIzNiwgMTI4LCA5LCAxMywgMjM2LCAxMjcsIDksIDEzLCAyMzYsIDEyNiwgOSwgMTMsIDIzNiwgMTI1LCAKLSAgICA5LCAxMywgMjM2LCAxMjQsIDksIDEzLCAyMzYsIDEyMywgOSwgMTMsIDIzNiwgMTIyLCA5LCAxMywgMjM2LCAxMjEsIDksIAotICAgIDEzLCAyMzYsIDEyMCwgOSwgMTMsIDIzNiwgMTE5LCA5LCAxMywgMjM2LCAxMTgsIDksIDEzLCAyMzYsIDExNywgOSwgMTMsIAotICAgIDIzNiwgMTE2LCA5LCAxMywgMjM2LCAxMTUsIDksIDEzLCAyMzYsIDExNCwgOSwgMTMsIDIzNiwgMTEzLCA5LCAxMywgMjM2LCAKLSAgICAxMTIsIDksIDEzLCAyMzYsIDExMSwgOSwgMTMsIDIzNiwgMTEwLCA5LCAxMywgMjM2LCAxMDksIDksIDEzLCAyMzYsIDEwOCwgCi0gICAgOSwgMTMsIDIzNiwgMTA3LCA5LCAxMywgMjM2LCAxMDYsIDksIDEzLCAyMzYsIDEwNSwgOSwgMTMsIDIzNiwgMTA0LCA5LCAKLSAgICAxMywgMjM2LCAxMDMsIDksIDEzLCAyMzYsIDEwMiwgOSwgMTMsIDIzNiwgMTAxLCA5LCAxMywgMjM2LCAxMDAsIDksIDEzLCAKLSAgICAyMzYsIDk5LCA5LCAxMywgMjM2LCA5OCwgOSwgMTMsIDIzNiwgOTcsIDksIDEzLCAyMzYsIDk2LCA5LCAxMywgMjM2LCA5NSwgCi0gICAgOSwgMTMsIDIzNiwgOTQsIDksIDEzLCAyMzYsIDkzLCA5LCAxMywgMjM2LCA5MiwgOSwgMTMsIDIzNiwgOTEsIDksIDEzLCAKLSAgICAyMzYsIDkwLCA5LCAxMywgMjM2LCA4OSwgOSwgMTMsIDIzNiwgODgsIDksIDEzLCAyMzYsIDg3LCA5LCAxMywgMjM2LCA4NiwgCi0gICAgOSwgMTMsIDIzNiwgODUsIDksIDEzLCAyMzYsIDg0LCA5LCAxMywgMjM2LCA4MywgOSwgMTMsIDIzNiwgODIsIDksIDEzLCAKLSAgICAyMzYsIDgxLCA5LCAxMywgMjM2LCA4MCwgOSwgMTMsIDIzNiwgNzksIDksIDEzLCAyMzYsIDc4LCA5LCAxMywgMjM2LCA3NywgCi0gICAgOSwgMTMsIDIzNiwgNzYsIDksIDEzLCAyMzYsIDc1LCA5LCAxMywgMjM2LCA3NCwgOSwgMTMsIDIzNiwgNzMsIDksIDEzLCAKLSAgICAyMzYsIDcyLCA5LCAxMywgMjM2LCA3MSwgOSwgMTMsIDIzNiwgNzAsIDksIDEzLCAyMzYsIDY5LCA5LCAxMywgMjM2LCA2OCwgCi0gICAgOSwgMTMsIDIzNiwgNjcsIDksIDEzLCAyMzYsIDY2LCA5LCAxMywgMjM2LCA2NSwgOSwgMTMsIDIzNiwgNjQsIDksIDEzLCAKLSAgICAyMzYsIDYzLCA5LCAxMywgMjM2LCA2MiwgOSwgMTMsIDIzNiwgNjEsIDksIDEzLCAyMzYsIDYwLCA3LCAzLCAyNiwgMjQ0LCAKLSAgICA5NCwgNywgMywgMjYsIDI0NCwgOTAsIDcsIDMsIDI2LCAyNDQsIDQ1LCA3LCAzLCAyNiwgMjQ0LCA5MywgNywgMywgMjYsIAotICAgIDI0NCwgOTIsIDcsIDMsIDI2LCAxODQsIDIyMywgNCwgMjE4LCA5OSwgNywgMywgMjYsIDIxOSwgMTA3LCAxNDEsIDMsIDI2LCAKLSAgICAyMzEsIDEyMywgMjI4LCAxNTAsIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAyNDUsIDE2OSwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIAotICAgIDIzNSwgMjI0LCAxNDEsIDMsIDI2LCAyMTQsIDE1NywgMjI4LCAxNTAsIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAyMTMsIDE0OCwgCi0gICAgOTMsIDEsIDIxMiwgMjI1LCAyLCAyNDEsIDE0NCwgOTMsIDIyNSwgMTQ1LCAyMzUsIDUzLCAyMTQsIDI0MywgOTMsIDI2LCAKLSAgICAyMTIsIDI1MywgMjEyLCAyMjUsIDIxMiwgMjI1LCAyMjYsIDExMiwgOTMsIDEsIDI1NCwgNDgsIDI1MywgNzgsIDkzLCAxLCAKLSAgICAyMTMsIDIzMiwgMjU0LCA3OCwgOTMsIDEsIDIxMywgMjMyLCAyNDgsIDEzNCwgOTMsIDEsIDIxMywgMjMyLCAyNDEsIDIyMiwgCi0gICAgOTMsIDEsIDIxMywgMjMyLCAyMzQsIDI1NCwgOTMsIDEsIDIxMywgMjMyLCAyMzMsIDExOCwgOTMsIDEsIDIxMywgMjMyLCAKLSAgICA0MCwgMjMxLCAxMjksIDkzLCAxLCAyMTMsIDIzMiwgMjIzLCAyMTksIDkzLCAxLCAyMTMsIDIzMiwgMjE3LCAyNDUsIDkzLCAKLSAgICAxLCAyNTQsIDQ4LCA5NCwgNTIsIDkzLCAxLCAyMjAsIDIwMSwgMiwgMjIwLCAyMDEsIDI0NywgNzQsIDkzLCAxLCAyMjAsIAotICAgIDIwMSwgMiwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDEsIDIyMCwgMjAxLCAyLCAyNDgsIDE1MSwgMjQsIDIyMCwgMjAxLCAKLSAgICAyNDcsIDc0LCA5MywgMSwgMjIwLCAyMDEsIDIsIDI0OCwgMTUxLCAyNCwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDEsIDEwNiwgCi0gICAgMiwgMjI2LCAxMTIsIDkzLCAxLCAxMDYsIDIsIDIyNCwgMjIwLCA5MywgMSwgMTA2LCAyLCAyMzEsIDIzNCwgOTMsIDEsIAotICAgIDI1MSwgMjA2LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDI0MiwgMTc4LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDI0OCwgMTM1LCAyLCAKLSAgICAyNDgsIDE1MCwgOTMsIDEsIDI0MSwgMjIzLCAyLCAyMzEsIDIzNCwgOTMsIDEsIDIxNCwgMjM3LCAyLCAyNDgsIDE1MCwgOTMsIAotICAgIDEsIDIxMiwgOTEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjE3LCAxODQsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjEyLCAyMjUsIAotICAgIDIsIDI0OCwgMTUwLCA5MywgMSwgNDAsIDIzNCwgMjU1LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIzNCwgMjU1LCAyLCAyNDgsIAotICAgIDE1MCwgOTMsIDEsIDIzMywgMTE5LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIzMSwgMTMwLCAyLCAyNDgsIDE1MCwgOTMsIDEsIAotICAgIDIyOCwgNTEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjIyLCAxNjUsIDIsIDI0OCwgMTUwLCA5MywgMSwgNDAsIDIyNiwgOTcsIAotICAgIDIsIDI0OCwgMTUwLCA5MywgMSwgMjI2LCA5NywgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTYsIDEzOCwgMiwgMjQ4LCAxNTAsIAotICAgIDkzLCAxLCAyMjQsIDE4NSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjMsIDIyMCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjAsIAotICAgIDIwMSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTcsIDI0NiwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTQsIDIzNywgMiwgMjQxLCAKLSAgICA0NywgOTMsIDEsIDI1MSwgMjA2LCAyLCAyMjQsIDU5LCA5MywgMSwgMjM0LCAyNTUsIDIsIDIyNCwgNTksIDkzLCAxLCAyMjYsIAotICAgIDk3LCAyLCAyMjQsIDU5LCA5MywgMjYsIDEwNiwgMjMzLCAxMTgsIDEyLCAxLCAxMDYsIDIxNCwgMzEsIDQ4LCAxNywgMTIsIAotICAgIDEsIDEwNiwgMjE0LCAzMSwgNDAsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjQxLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTEsIDI0MSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDEzOCwgMTcsIDEyLCAxLCAyMjYsIDgxLCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMjYsIDgxLCA0MCwgMTcsIDEyLCAxLCAyMjYsIDgxLCA3MCwgMTcsIDEyLCAxLCAyMjYsIDgxLCAKLSAgICAxMzgsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjI5LCA0MCwgMTcsIDEyLCAxLCAyNTEsIAotICAgIDIyOSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDEzOCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMjE2LCAxMDgsIDQwLCAxNywgMTIsIDEsIDIxNiwgMTA4LCA3MCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgMTM4LCAxNywgMTIsIAotICAgIDEsIDIxNywgMjE0LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDIxNCwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTQsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIxNywgMjE0LCAxMzgsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDQ4LCAxNywgMTIsIDEsIDIxNiwgMTEwLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMTYsIDExMCwgNzAsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDEzOCwgMTcsIDEyLCAxLCAyMTQsIDIyNiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjE0LCAyMjYsIDQwLCAxNywgMTIsIDEsIDIxNCwgMjI2LCA3MCwgMTcsIDEyLCAxLCAyMTQsIAotICAgIDIyNiwgMTM4LCAxNywgMTIsIDEsIDIyNiwgNzksIDQ4LCAxNywgMTIsIDEsIDIyNiwgNzksIDQwLCAxNywgMTIsIDEsIDIyNiwgCi0gICAgNzksIDcwLCAxNywgMTIsIDEsIDIyNiwgNzksIDEzOCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgNDgsIDE3LCAxMiwgMSwgMjQ1LCAKLSAgICAyNTUsIDQwLCAxNywgMTIsIDEsIDI0NSwgMjU1LCA3MCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgMTM4LCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTUsIDQ4LCAxNywgMTIsIDEsIDIyOCwgMTUsIDQwLCAxNywgMTIsIDEsIDIyOCwgMTUsIDcwLCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTUsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgNDgsIDE3LCAxMiwgMSwgMjE3LCAyMzQsIDQwLCAxNywgMTIsIAotICAgIDEsIDIxNywgMjM0LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjMyLCA0OCwgMTcsIAotICAgIDEyLCAxLCAyMTcsIDIzMiwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDcwLCAxNywgMTIsIDEsIDIxNywgMjMyLCAxMzgsIAotICAgIDE3LCAxMiwgMSwgMjQ4LCA4NCwgNDgsIDE3LCAxMiwgMSwgMjQ4LCA4NCwgNDAsIDE3LCAxMiwgMSwgMjQ4LCAxNDcsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDI0OCwgMTQ3LCA0MCwgMTcsIDEyLCAxLCAyNDYsIDI2LCA0OCwgMTcsIDEyLCAxLCAyNDYsIDI2LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNDgsIDgyLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDgyLCA0MCwgMTcsIDEyLCAxLCAyMzUsIDEyMiwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjM1LCAxMjIsIDQwLCAxNywgMTIsIDEsIDIyMywgNzgsIDQ4LCAxNywgMTIsIDEsIDIyMywgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIzNCwgMTgxLCA0OCwgMTcsIDEyLCAxLCAyMzQsIDE4MSwgNDAsIDE3LCAxMiwgMSwgMjM0LCAxODEsIAotICAgIDcwLCAxNywgMTIsIDEsIDIzNCwgMTgxLCAxMzgsIDE3LCAxMiwgMSwgMjQzLCA5OCwgNDgsIDE3LCAxMiwgMSwgMjQzLCA5OCwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjQzLCA5OCwgNzAsIDE3LCAxMiwgMSwgMjQzLCA5OCwgMTM4LCAxNywgMTIsIDEsIDI0MiwgODMsIAotICAgIDQ4LCAxNywgMTIsIDEsIDI0MiwgODMsIDQwLCAxNywgMTIsIDEsIDI0MiwgODMsIDcwLCAxNywgMTIsIDEsIDI0MiwgODMsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyMjksIDg5LCA0OCwgMTcsIDEyLCAxLCAyMjksIDg5LCA0MCwgMTcsIDEyLCAxLCAyMjksIDg5LCAKLSAgICA3MCwgMTcsIDEyLCAxLCAyMjksIDg5LCAxMzgsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDI0MiwgMTk1LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjgsIDE3NCwgMjQyLCAxOTUsIDQwLCAxNywgMTIsIDEsIDIyMywgMTE2LCA0OCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDcwLCAxNywgMTIsIDEsIDIyMywgMTE2LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDIsIDczLCA3OCwgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDIsIDczLCA3OCwgNDAsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0MiwgMTQ4LCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDQwLCAxNywgMTIsIDEsIDI0MSwgCi0gICAgMjAzLCAyNDIsIDE0OCwgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0MiwgMTQ4LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0NywgOTYsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk2LCA0MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgCi0gICAgMjQ3LCA5NiwgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTYsIDEzOCwgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgCi0gICAgNDgsIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDQwLCAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAyLCAxOTIsIDc4LCA0OCwgCi0gICAgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgMiwgMTkyLCA3OCwgNDAsIDE3LCAxMiwgMTYsIDYyLCA0OSwgMTIsIDE2LCA2MiwgCi0gICAgNTUsIDEyLCAxNiwgMTE3LCAxNzYsIDQ5LCAxMiwgMTYsIDExNywgMTc2LCA1NSwgMTIsIDE2LCAxMzMsIDE3NiwgNDksIDEyLCAKLSAgICAxNiwgMTMzLCAxNzYsIDU1LCAxMiwgMTYsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgNDksIDEyLCAxNiwgMTMzLCAKLSAgICAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCA1NSwgMTIsIDE2LCAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDE2LCAyNDMsIDIzNywgCi0gICAgMTc2LCA1NSwgMTIsIDE2LCA1MSwgNzEsIDI1MiwgNjAsIDU1LCAxMiwgMTYsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAKLSAgICAxNiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA1NSwgMTIsIDE2LCAyMjMsIDEzMCwgMTIsIDE2LCAzLCAyMTgsIDMwLCA0OSwgMTIsIAotICAgIDE2LCAzLCAyMTgsIDMwLCA1NSwgMTIsIDEsIDIyOSwgMTYyLCA0OCwgMTcsIDEyLCAxLCAyMjksIDE2MiwgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjI5LCAxNjIsIDcwLCAxNywgMTIsIDEsIDIyOSwgMTYyLCAxMzgsIDE3LCAxMiwgMSwgMTExLCA0OCwgMTcsIDEyLCAxLCAKLSAgICAxMTEsIDQwLCAxNywgMTIsIDEsIDIyNywgMTAwLCA0OCwgMTcsIDEyLCAxLCAyMjcsIDEwMCwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjEyLCAyMDQsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMjA0LCA0MCwgMTcsIDEyLCAxLCAxMTEsIDIsIDE5MiwgNzgsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIxNCwgMjMzLCA0OCwgMTcsIDEyLCAxLCAyMTQsIDIzMywgNDAsIDE3LCAxMiwgMSwgMjM0LCA4MiwgCi0gICAgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDEsIDIzNCwgODIsIDIyNywgMTAwLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIAotICAgIDIwNCwgNDgsIDE3LCAxMiwgMSwgMjM0LCA4MiwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDEsIDE5MSwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMTkxLCA0MCwgMTcsIDEyLCAxLCAxOTEsIDcwLCAxNywgMTIsIDEsIDE5MSwgMTM4LCAxNywgMTIsIDEsIDIxNSwgMTc3LCAKLSAgICAyMzQsIDE5MiwgMjM0LCA4MiwgMTA2LCAyMTAsIDcwLCAxNywgMTIsIDEsIDIxNSwgMTc3LCAyMzQsIDE5MiwgMjM0LCA4MiwgCi0gICAgMTA2LCAyMTAsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxOTIsIDc4LCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjU0LCAxNDksIDQ4LCAxNywgMTIsIAotICAgIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjU0LCAxNDksIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjE0LCAKLSAgICAxNSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTQsIDE1LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDExMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxMTEsIDQwLCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMTkyLCA3OCwgMiwgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjI3LCAxMDAsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjEyLCAyMDQsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTkxLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDE5MiwgNzgsIDIsIDE5MSwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxOTEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMTUsIDE3NywgMjM0LCA4MiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjE1LCAxNzcsIDIzNCwgODIsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxNSwgMTc3LCAKLSAgICAyMzQsIDgyLCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDcwLCAxNywgMTIsIDEsIDI0NCwgMTM2LCA3MywgNDgsIAotICAgIDE3LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCA0MCwgMTcsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDcwLCAxNywgMTIsIDEsIDI0NCwgCi0gICAgMTM2LCA3MywgMTM4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA3MywgNDgsIAotICAgIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTIxLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDYzLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDczLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNzMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDE0NiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjE3LCAxNDYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMTQ1LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAxNDUsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIzNCwgMTM2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIAotICAgIDg2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIAotICAgIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxNDUsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTIxLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMTIsIDEwNSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyNTQsIDEwNCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAKLSAgICAyMjEsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIAotICAgIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIAotICAgIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIAotICAgIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCAxMDYsIAotICAgIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEyMSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDIxMCwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMjEwLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDYzLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgNjMsIAotICAgIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgNzMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDI0MSwgMjAzLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIAotICAgIDIwMywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIxNywgMTU2LCAyLCAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgMjIzLCAKLSAgICAyNDYsIDIsIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAxMDYsIDIxMCwgMiwgMjE4LCAyMjMsIDEwNiwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgMTI4LCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMDksIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDQsIDEzNCwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgCi0gICAgMTMwLCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMTEsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAKLSAgICAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjUxLCAyMzEsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIxMiwgMTAyLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIyOCwgMTc0LCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDIxMCwgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDYzLCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIDI2LCAyMjgsIAotICAgIDE3NCwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDI2LCAyMjgsIAotICAgIDE3NCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAxMDYsIAotICAgIDIxMCwgMiwgMjE4LCAyMjMsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAyMjgsIAotICAgIDE3NCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjUxLCAyMzEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyNTEsIAotICAgIDIzMSwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTEsIAotICAgIDIzMSwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMTQ2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgNzAsIAotICAgIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgCi0gICAgMTM2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIAotICAgIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDEyMSwgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDYzLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjEyLCAxMDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDI0MiwgMjIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNDQsIAotICAgIDExMiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAKLSAgICAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgCi0gICAgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzQsIAotICAgIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAKLSAgICA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgMjE4LCAKLSAgICAyMjMsIDEwNiwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCAxOTIsIDc4LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMTQ2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjIsIDg2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgMTM4LCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAxMzgsIDE3LCAKLSAgICAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjEsIDE2LCAyLCAyNDQsIDEzNCwgMTM4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDgsIDEzMCwgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIxMSwgMTM4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIxOCwgMzAsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMjIsIDg2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyMCwgMjQwLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAxMjEsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDE0NSwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyMjMsIDI0NiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIyMywgCi0gICAgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIAotICAgIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDE0NSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCAxOTYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjQ4LCAxNjAsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDE0NSwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMjM0LCAxMzYsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgMTk2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyMCwgMjQwLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCA4NiwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMTgsIDMwLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDE0NSwgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDg2LCAyLCAxMjEsIDEzOCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDE0NSwgMTM4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgMTM4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMTIsIDEwNSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMTA2LCAyLCAyNDQsIDEzMiwgNDAsIDE3LCAxMiwgMjYsIDEwNiwgCi0gICAgMiwgMjQ0LCAxMzIsIDQ4LCAxNywgMjI3LCAxMywgNDIsIDIyNiwgMTMxLCAyMjcsIDEzLCA0NiwgMjI2LCAxMzEsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCAyLCAxNDUsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgCi0gICAgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMTcsIDIxNiwgMiwgNjMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEyMSwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDIsIDczLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIAotICAgIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgCi0gICAgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDE0NSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAxMjEsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAKLSAgICAxMjEsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMTIxLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDIzNCwgCi0gICAgMTM2LCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIAotICAgIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxOCwgCi0gICAgMzAsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgCi0gICAgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAKLSAgICAyMjEsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyNDQsIDExMiwgMiwgMjM0LCAxMzYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAKLSAgICAyMjYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDYzLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCAxMDYsIAotICAgIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAKLSAgICAyLCAxNDUsIDIsIDE0NSwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAyLCAKLSAgICAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIAotICAgIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAKLSAgICAyMDMsIDIsIDYzLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCAyLCAxMDYsIAotICAgIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIAotICAgIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyOCwgMTc0LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNjMsIDIsIDEwNiwgMjEwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNjMsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIAotICAgIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIAotICAgIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDE0NSwgMiwgMTIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEwNiwgMjEwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAKLSAgICAxOTYsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgMiwgNzMsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCA2MywgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCAKLSAgICAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAKLSAgICAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCAyLCA2MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDE0NSwgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAKLSAgICAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgCi0gICAgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMzQsIDI1NSwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDIsIAotICAgIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDE3NSwgCi0gICAgMjE1LCAxMDIsIDI1MywgMTUzLCAyMzQsIDEzLCAyMTksIDcwLCA1LCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjIsIDIxNSwgCi0gICAgMTAyLCAyNTMsIDE1MywgMjM0LCAxMywgMjE5LCA3MCwgNSwgNDgsIDE3LCAxMiwgMjYsIDI1NCwgNjIsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyNTQsIDkxLCA0OCwgMTcsIDEyLCAyNiwgMjMwLCAyMjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE3NiwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyNCwgMzUsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDgwLCA0OCwgMTcsIDEyLCAyNiwgMjE0LCAzMywgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIyMiwgMTc1LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxNzQsIDI1NCwgODAsIDIxNCwgMzIsIDEyLCAyNiwgCi0gICAgMjM1LCAxMzQsIDIyMywgMTg3LCA1MiwgMTIsIDI2LCAyNTEsIDE1MywgMjUzLCAyMDksIDI1MywgMjEwLCA0MywgMjIyLCAKLSAgICA3NiwgNDMsIDIyMSwgMjIxLCA0MywgMjIxLCAxNTMsIDQzLCAyMjEsIDE0MiwgNDMsIDIyMSwgMTMxLCA0MywgMjIxLCAxMjAsIAotICAgIDQzLCAyMjEsIDEwOSwgNDMsIDIyMSwgOTgsIDQzLCAyMjEsIDg3LCA0MywgMjIyLCA3NSwgNDMsIDIyMiwgNjQsIDQzLCAKLSAgICAyMjIsIDUzLCA0MywgMjIyLCA0MiwgNDMsIDIyMiwgMzEsIDQzLCAyMjIsIDIwLCA0MywgMjIyLCA5LCAyMjUsIDc0LCAyNDMsIAotICAgIDI0NSwgMzEsIDcxLCAyNDksIDE1NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTA1LCAyNDksIDE1NywgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ5LCAKLSAgICAxNjQsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDIyMSwgNzAsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0NCwgCi0gICAgMjU0LCA3NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjI0LCAxNTgsIDc3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIAotICAgIDcxLCA0MiwgNjcsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDY3LCAyMzMsIDQ0LCAKLSAgICAyNTEsIDgzLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxOTksIDI0NSwgMTIwLCAzNywgMjYsIDQyLCAyNDIsIDksIAotICAgIDM3LCAyNiwgNDYsIDI0MiwgOSwgMzcsIDUxLCAyMTcsIDQzLCA0MiwgMjQyLCA5LCAzNywgNTEsIDIxNywgNDMsIDQ2LCAKLSAgICAyNDIsIDksIDM3LCAyMzIsIDM4LCA0MiwgMjQyLCA5LCAzNywgMjMyLCAzOCwgNDYsIDI0MiwgOSwgMzcsIDI0OSwgMTM3LCAKLSAgICAyMzIsIDM3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMTcsIDYyLCAyMzMsIDgwLCAyMjUsIDc0LCAyNDMsIDI0NSwgCi0gICAgMzEsIDcxLCAyNDUsIDExOCwgMjQ4LCAxMDEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0NSwgMTA5LCAyNDgsIAotICAgIDEwMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTE1LCAyMzIsIDI0MiwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgCi0gICAgMjE0LCAxNiwgMTE1LCAyMzIsIDI0MiwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDIyNiwgMTMxLCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgMjI2LCAxMzEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAyNDksIDQwLCAKLSAgICAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAyNDksIDQwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgCi0gICAgNzEsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDIxNiwgMjE5LCAKLSAgICAyMjAsIDIzMywgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgODMsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDgzLCAyMzMsIDQ0LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAKLSAgICA1MSwgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgMjI1LCAKLSAgICA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIAotICAgIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI0OSwgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgCi0gICAgMjQ1LCAzMSwgNzEsIDQ2LCAyNDksIDEwMCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgNjcsIDI0OSwgCi0gICAgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA2NywgMjQ5LCAxMDAsIDEyNSwgMjIxLCA1MiwgMjQ3LCAKLSAgICA3NCwgNjcsIDIyMSwgNTIsIDI0NywgNzQsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA0MSwgMTI1LCAyMjUsIAotICAgIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNDEsIDEyNSwgMjQ4LCAxMDAsIDIyNiwgMjQzLCAyNTAsIDEwNiwgMjI2LCAKLSAgICAyNDMsIDIxNCwgMTYsIDIyNiwgMjQzLCA1MSwgMjE0LCAxNiwgMjI2LCAyNDMsIDI0OCwgMTAwLCAxMTUsIDIzMiwgMjQyLCAKLSAgICAyNTAsIDEwNiwgMTE1LCAyMzIsIDI0MiwgMjE0LCAxNiwgMTE1LCAyMzIsIDI0MiwgMywgMjQ5LCAxNTcsIDMsIDEwNSwgCi0gICAgMjQ5LCAxNTcsIDMsIDI0MywgMjAwLCAyMTksIDY5LCAzLCAyMjEsIDcwLCAzLCAyNDksIDE2NCwgMywgMjI0LCAxNTgsIDc3LCAKLSAgICAzLCAyNDQsIDI1NCwgNzcsIDMsIDI0NSwgMTE4LCAyNDgsIDEwMSwgMywgNDIsIDIyNiwgMTMxLCAzLCA0NiwgMjI2LCAxMzEsIAotICAgIDMsIDQyLCAyNDksIDQwLCAxMjUsIDMsIDQ2LCAyNDksIDQwLCAxMjUsIDMsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgCi0gICAgMywgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAzLCA1MCwgNTIsIDMsIDI1NCwgMzUsIDMsIDI1MywgMTMyLCAzLCAKLSAgICA5NCwgNTIsIDMsIDI0MCwgMTU5LCAzLCAyMzMsIDM5LCA1MiwgMywgMjQyLCAxMDcsIDUyLCAzLCAyNDUsIDYxLCA1MiwgMywgCi0gICAgMjIzLCAyMDMsIDIxOSwgMjMxLCAzLCAyNDcsIDg2LCA1MiwgMywgMjI2LCA1NywgNTIsIDMsIDI0OSwgMTU2LCAyNTMsIAotICAgIDEyMiwgMTIsIDI0NCwgMTMyLCA0OCwgMTcsIDEyLCAyMTcsIDI1MSwgMiwgMjQ0LCAxMzIsIDQ5LCAxMiwgMjQ4LCAxMjgsIAotICAgIDQ4LCAxNywgMTIsIDIxOCwgMjgsIDI0MywgMjI3LCAxMiwgMjM0LCAyMDksIDQ4LCAxNywgMTIsIDI0NCwgMTM0LCA0OCwgCi0gICAgMTcsIDEyLCAyNDQsIDEzNCwgMTM4LCAxNywgMTIsIDI0OCwgMTMwLCA0OCwgMTcsIDEyLCAyNDgsIDEzMCwgMTM4LCAxNywgCi0gICAgMTIsIDIzNCwgMjExLCA0OCwgMTcsIDEyLCAyMzQsIDIxMSwgMTM4LCAxNywgMTIsIDIyMSwgMTYsIDQ4LCAxNywgMTIsIAotICAgIDIyMSwgMTYsIDEzOCwgMTcsIDEyLCAyMTgsIDI0NywgNDgsIDE3LCAxMiwgMjE4LCAyNDcsIDEzOCwgMTcsIDEyLCAxLCAKLSAgICAxOTIsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgNzgsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgCi0gICAgNzgsIDQwLCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCA3OCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMTQsIDE1LCAyLCAxOTIsIDc4LCA0OCwgMTcsIDEyLCAxLCAyMTQsIDE1LCAyLCAxOTIsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgMjUxLCAyMjAsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCAyNTEsIDIyMCwgCi0gICAgNDAsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDQ4LCAxNywgMTIsIDEsIDczLCAyLCAxOTIsIDc4LCA0MCwgMTcsIDEyLCAKLSAgICAxLCA3MywgMiwgMTkyLCA3OCwgNzAsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDEzOCwgMTcsIDEyLCAxLCAxMDYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDEwNiwgNDAsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjMxLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTEsIDIzMSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgCi0gICAgMjMxLCAyMjgsIDQ4LCAxNywgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyOCwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIxNywgMjE2LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgNzAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgNDgsIDE3LCAxMiwgMSwgMjE3LCAxNDYsIDQwLCAxNywgMTIsIDEsIDIxNywgCi0gICAgMTQ2LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgMTM4LCAxNywgMTIsIDEsIDE0NSwgNDgsIDE3LCAxMiwgMSwgMTQ1LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAxNDUsIDcwLCAxNywgMTIsIDEsIDE0NSwgMTM4LCAxNywgMTIsIDEsIDEyMSwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMTIxLCA0MCwgMTcsIDEyLCAxLCAxMjEsIDcwLCAxNywgMTIsIDEsIDEyMSwgMTM4LCAxNywgMTIsIDEsIDIzNCwgMTM2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMzQsIDEzNiwgNDAsIDE3LCAxMiwgMSwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDEsIDIzNCwgCi0gICAgMTM2LCAxMzgsIDE3LCAxMiwgMSwgMjQ4LCAxNDEsIDQ4LCAxNywgMTIsIDEsIDI0OCwgMTQxLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyMTcsIDE1NiwgNDgsIDE3LCAxMiwgMSwgMjE3LCAxNTYsIDQwLCAxNywgMTIsIDEsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMSwgMjEyLCAxMDIsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMTAyLCA0MCwgMTcsIAotICAgIDEyLCAxLCAyMjIsIDg2LCA0OCwgMTcsIDEyLCAxLCAyMjIsIDg2LCA0MCwgMTcsIDEyLCAxLCAyMjIsIDg2LCA3MCwgMTcsIAotICAgIDEyLCAxLCAyMjIsIDg2LCAxMzgsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDQ4LCAxNywgMTIsIDEsIDIyMCwgMjQwLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMjAsIDI0MCwgNzAsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDEzOCwgMTcsIDEyLCAxLCAyMjIsIDE5NiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjIyLCAxOTYsIDQwLCAxNywgMTIsIDEsIDIyMiwgMTk2LCA3MCwgMTcsIDEyLCAxLCAyMjIsIAotICAgIDE5NiwgMTM4LCAxNywgMTIsIDEsIDI0OCwgMTYwLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDE2MCwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjQ4LCAxNjAsIDcwLCAxNywgMTIsIDEsIDI0OCwgMTYwLCAxMzgsIDE3LCAxMiwgMSwgMjE4LCAzMCwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjE4LCAzMCwgNDAsIDE3LCAxMiwgMSwgMjE4LCAzMCwgNzAsIDE3LCAxMiwgMSwgMjE4LCAzMCwgMTM4LCAxNywgMTIsIAotICAgIDEsIDIxMiwgMTA1LCA0OCwgMTcsIDEyLCAxLCAyMTIsIDEwNSwgNDAsIDE3LCAxMiwgMSwgMjEyLCAxMDUsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIxMiwgMTA1LCAxMzgsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDQ4LCAxNywgMTIsIDEsIDI1NCwgMTA0LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTQsIDEwNCwgNzAsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDEzOCwgMTcsIDEyLCAxLCAyNDIsIDIyMSwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjQyLCAyMjEsIDQwLCAxNywgMTIsIDEsIDI0MiwgMjIxLCA3MCwgMTcsIDEyLCAxLCAyNDIsIAotICAgIDIyMSwgMTM4LCAxNywgMTIsIDEsIDI0NCwgMTEyLCA0OCwgMTcsIDEyLCAxLCAyNDQsIDExMiwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjQ0LCAxMTIsIDcwLCAxNywgMTIsIDEsIDI0NCwgMTEyLCAxMzgsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyNCwgMjI2LCA0MCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgNzAsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDEzOCwgMTcsIAotICAgIDEyLCAxLCAyMzQsIDI1NSwgNDgsIDE3LCAxMiwgMSwgMjM0LCAyNTUsIDQwLCAxNywgMTIsIDEsIDIzNCwgMjU1LCA3MCwgCi0gICAgMTcsIDEyLCAxLCAyMzQsIDI1NSwgMTM4LCAxNywgMTIsIDEsIDIzMywgMTI3LCA0OCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDcwLCAxNywgMTIsIDEsIDIzMywgMTI3LCAxMzgsIDE3LCAxMiwgMSwgNjMsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDYzLCA0MCwgMTcsIDEyLCAxLCA2MywgNzAsIDE3LCAxMiwgMSwgNjMsIDEzOCwgMTcsIDEyLCAxLCAyMjgsIAotICAgIDE3NCwgNDgsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDEsIDIyOCwgMTc0LCA3MCwgMTcsIDEyLCAxLCAKLSAgICAyMjgsIDE3NCwgMTM4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMSwgMjE0LCAxNSwgNDgsIDE3LCAKLSAgICAxMiwgMSwgMjE0LCAxNSwgNDAsIDE3LCAxMiwgMSwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMjEwLCA0MCwgMTcsIAotICAgIDEyLCAxLCA3MywgNDgsIDE3LCAxMiwgMSwgNzMsIDQwLCAxNywgMTIsIDEsIDczLCA3MCwgMTcsIDEyLCAxLCA3MywgMTM4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAyMzIsIDMzLCA3OCwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAKLSAgICAyLCAxMDYsIDIsIDIzMiwgMzMsIDc4LCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCA3OCwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDE5MiwgNzgsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgCi0gICAgMTA2LCAyLCAxOTIsIDI1MSwgMjIwLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCAyNTEsIAotICAgIDIyMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAKLSAgICA0MCwgMTcsIDIxMiwgODAsIDIxMywgMjMwLCAyMjgsIDE4NCwgMjE5LCAyMDYsIDEyMCwgMjQ0LCAyNTQsIDc3LCAxMjAsIAotICAgIDIyNCwgMTQzLCA3NywgMTIwLCA1MCwgNTIsIDEyMCwgMjQ3LCA4NiwgNTIsIDEyMCwgMjI2LCA1NywgNTIsIDEyMCwgMjU0LCAKLSAgICAzNSwgMTIwLCAyNTMsIDIyNiwgMTIwLCA0MiwgMjI2LCAxMzEsIDEyMCwgNDYsIDIyNiwgMTMxLCAxMjAsIDI1MywgMTMyLCAKLSAgICAxMjAsIDk0LCA1MiwgMTIwLCAyNDksIDE1NywgMTIwLCAyNDAsIDE1OSwgMTIwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMTIwLCAKLSAgICAyMTksIDIzMSwgMTIwLCAyMSwgMjEyLCA3OSwgMTIwLCAyMSwgMTE2LCAxMjAsIDIxLCAxMDksIDEyMCwgMjEsIDE2NiwgCi0gICAgMTIwLCAyMSwgMTYzLCAxMjAsIDIxLCAxODAsIDEyMCwgMjEsIDE4OSwgMTIwLCAyMSwgMTk4LCAxMjAsIDIxLCAxOTUsIAotICAgIDEyMCwgMjEsIDIwMCwgMTIwLCAyNDksIDE2NCwgMTIwLCAyMjEsIDcwLCAxMjAsIDIzMywgMzksIDUyLCAxMjAsIDI0NSwgCi0gICAgNjEsIDUyLCAxMjAsIDI0MiwgMTA3LCA1MiwgMTIwLCAyMjQsIDE1OCwgNzcsIDEyMCwgMjQ5LCAxNTYsIDI1MywgMTIyLCAKLSAgICAxMjAsIDcsIDYsIDEsIDYxLCAxMjAsIDcsIDYsIDEsIDI1MywgNzQsIDEyMCwgNywgNiwgMSwgMjUwLCAyNTIsIDEyMCwgNywgCi0gICAgNiwgMSwgMjQ5LCAzLCAxMjAsIDcsIDYsIDEsIDc0LCAxMjAsIDcsIDYsIDEsIDI0NCwgMjMwLCAxMjAsIDcsIDYsIDEsIAotICAgIDI0MywgMTc3LCAxMjAsIDcsIDYsIDEsIDI0MiwgNDEsIDEyMCwgNywgNiwgMSwgNzIsIDEyMCwgNywgNiwgMSwgMjM1LCAKLSAgICAxNDIsIDEyMCwgNywgNiwgMSwgMjM1LCAyNywgMTIwLCA3LCA2LCAxLCAxNTAsIDEyMCwgNywgNiwgMSwgMTgzLCAxMjAsIDcsIAotICAgIDYsIDEsIDIwNCwgMTIwLCA3LCA2LCAxLCA3NSwgMTIwLCA3LCA2LCAxLCAyMjYsIDIyOSwgMTIwLCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MCwgMTIwLCA3LCA2LCAxLCAxNDksIDEyMCwgNywgNiwgMSwgMTk3LCAxMjAsIDcsIDYsIDEsIDIxOCwgOTksIDEyMCwgNywgCi0gICAgNiwgMSwgNjksIDEyMCwgNywgNiwgMSwgMjE1LCA3OSwgMTIwLCA3LCA2LCAxLCAyMTQsIDgyLCAxMjAsIDcsIDYsIDEsIAotICAgIDIxMywgMTY2LCAxMjAsIDcsIDYsIDEsIDIxMywgMTA1LCAxMjAsIDcsIDYsIDEsIDIxMiwgMTUyLCAxMjAsIDQyLCA0MSwgCi0gICAgMTI1LCAxMjAsIDIyMywgMjAzLCAyMTksIDIzMSwgMTIwLCA0NiwgNDEsIDEyNSwgMTIwLCAyNDksIDIyNCwgMjU0LCAxNzQsIAotICAgIDEyMCwgMTE1LCAyMzIsIDI0MiwgMTIwLCAyNDIsIDExNCwgMjU0LCAxNzQsIDEyMCwgNywgMywgMSwgNjEsIDEyMCwgNywgMywgCi0gICAgMSwgMjUzLCA3NCwgMTIwLCA3LCAzLCAxLCAyNTAsIDI1MiwgMTIwLCA3LCAzLCAxLCAyNDksIDMsIDEyMCwgNywgMywgMSwgCi0gICAgNzQsIDEyMCwgNywgMywgMSwgMjQ0LCAyMzAsIDEyMCwgNywgMywgMSwgMjQzLCAxNzcsIDEyMCwgNywgMywgMSwgMjQyLCAKLSAgICA0MSwgMTIwLCA3LCAzLCAxLCA3MiwgMTIwLCA3LCAzLCAxLCAyMzUsIDE0MiwgMTIwLCA3LCAzLCAxLCAyMzUsIDI3LCAxMjAsIAotICAgIDcsIDMsIDEsIDE1MCwgMTIwLCA3LCAzLCAxLCAxODMsIDEyMCwgNywgMywgMSwgMjA0LCAxMjAsIDcsIDMsIDEsIDc1LCAKLSAgICAxMjAsIDcsIDMsIDEsIDIyNiwgMjI5LCAxMjAsIDcsIDMsIDEsIDIyNCwgMjQwLCAxMjAsIDcsIDMsIDEsIDE0OSwgMTIwLCAKLSAgICA3LCAzLCAxLCAxOTcsIDEyMCwgNywgMywgMSwgMjE4LCA5OSwgMTIwLCA3LCAzLCAxLCA2OSwgMTIwLCA3LCAzLCAxLCAyMTUsIAotICAgIDc5LCAxMjAsIDcsIDMsIDEsIDIxNCwgODIsIDEyMCwgNywgMywgMSwgMjEzLCAxNjYsIDEyMCwgNywgMywgMSwgMjEzLCAKLSAgICAxMDUsIDEyMCwgNywgMywgMSwgMjEyLCAxNTIsIDEyMCwgNDIsIDI0OSwgNDAsIDEyNSwgMTIwLCA3MSwgMjMyLCAyNDIsIAotICAgIDEyMCwgNDYsIDI0OSwgNDAsIDEyNSwgMTIwLCAyMTcsIDQyLCAxMjAsIDQyLCA2NywgMjI2LCAxMzEsIDEyMCwgNDYsIDY3LCAKLSAgICAyMjYsIDEzMSwgOTgsIDEwNSwgMjQzLCAyMDAsIDIxOSwgNjksIDk4LCA0MiwgMjQ5LCAxMDAsIDEyNSwgOTgsIDQ2LCAyNDksIAotICAgIDEwMCwgMTI1LCA5OCwgMTA1LCAyNDksIDE1NywgOTgsIDU2LCAyMzEsIDM3LCAyNDcsIDc0LCA5OCwgNTYsIDEsIDIxMywgCi0gICAgMjE0LCA5OCwgNTYsIDEsIDMsIDYxLCA5OCwgNTYsIDEsIDMsIDcyLCA5OCwgNTYsIDEsIDMsIDY5LCA5OCwgNTYsIDEsIDMsIAotICAgIDc0LCA5OCwgNTYsIDEsIDMsIDc1LCA5OCwgNTYsIDEsIDMsIDE4NiwgOTgsIDU2LCAxLCAzLCAyMTIsIDIwMywgOTgsIDU2LCAKLSAgICAxLCAzLCAyMTIsIDIzNSwgOTgsIDU2LCAxLCAzLCAyMTYsIDgyLCA5OCwgMjM0LCAyMDYsIDIyNSwgNTcsIDIxOSwgMjE4LCAKLSAgICA3NywgOTgsIDU2LCAxLCA2MSwgOTgsIDU2LCAxLCA3MiwgOTgsIDU2LCAxLCA2OSwgOTgsIDU2LCAxLCA3NCwgOTgsIDU2LCAKLSAgICAxLCA3NSwgOTgsIDU2LCAxLCAxODEsIDk4LCA1NiwgMSwgMjM0LCAxMDEsIDk4LCA1NiwgMSwgMjMzLCAyMzgsIDk4LCA1NiwgCi0gICAgMSwgMjM0LCAxODgsIDk4LCA1NiwgMSwgMjM0LCAzNywgOTgsIDU2LCAxLCAyMjIsIDIwMiwgOTgsIDU2LCAxLCAyMjAsIAotICAgIDExNywgOTgsIDU2LCAxLCAyMTksIDI3LCA5OCwgNTYsIDEsIDIyMiwgMTAwLCA5OCwgNTYsIDEsIDIxOSwgMjQyLCA5OCwgCi0gICAgNTYsIDEsIDIxOCwgNTIsIDk4LCA1NiwgMSwgMjE3LCA3MSwgOTgsIDU2LCAxLCAyMTYsIDgyLCA5OCwgNTYsIDEsIDIxNywgCi0gICAgMjI5LCA5OCwgNTYsIDEsIDEwOCwgOTgsIDU2LCAxLCAyMDUsIDk4LCA1NiwgMSwgMjI5LCA2NCwgOTgsIDU2LCAxLCAyMjgsIAotICAgIDkyLCA5OCwgNTYsIDEsIDIyOSwgMTg3LCA5OCwgNTYsIDEsIDIyOCwgMTg1LCA5OCwgNTYsIDEsIDE1OSwgOTgsIDU2LCAxLCAKLSAgICAyNDEsIDE2NSwgOTgsIDU2LCAxLCAyNDAsIDIxMiwgOTgsIDU2LCAxLCAyNDEsIDIyMiwgOTgsIDU2LCAxLCAyNDEsIDU0LCAKLSAgICA5OCwgNTYsIDEsIDE4OCwgOTgsIDU2LCAxLCAyMzEsIDQyLCA5OCwgNTYsIDEsIDIzMCwgMTcyLCA5OCwgNTYsIDEsIDIzMSwgCi0gICAgMTU2LCA5OCwgNTYsIDEsIDIzMCwgMjMxLCA5OCwgNTYsIDEsIDE4NiwgOTgsIDU2LCAxLCAyMTIsIDIwMywgOTgsIDU2LCAxLCAKLSAgICAyMTIsIDIzNSwgOTgsIDU2LCAxLCAyMDMsIDk4LCA1NiwgMSwgMjIzLCAxODgsIDk4LCA1NiwgMSwgMjIzLCA1MSwgOTgsIAotICAgIDU2LCAxLCAyMjQsIDIxLCA5OCwgNTYsIDEsIDIyMywgMTEyLCA5OCwgNTYsIDEsIDIxNCwgNDksIDk4LCA1NiwgMSwgMjA0LCAKLSAgICA5OCwgNTYsIDIxNCwgMTE2LCAyMTksIDIxOCwgNzcsIDk4LCA1NiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCA5OCwgMjMsIAotICAgIDI0NCwgNzIsIDk4LCAyMywgMSwgMjM0LCA2NywgOTgsIDIzLCAxLCAyMTksIDE1MCwgOTgsIDIzLCAxLCAyMzQsIDYwLCA5OCwgCi0gICAgMjMsIDEsIDIyOSwgNTcsIDk4LCAyMywgMSwgMjI5LCA1NSwgOTgsIDIzLCAxLCAyMjksIDU0LCA5OCwgMjMsIDEsIDIxNywgCi0gICAgNTUsIDk4LCAyMywgMSwgMjE5LCAxMzksIDk4LCAyMywgMSwgMjIzLCAxNzksIDk4LCAyMywgMSwgMjIzLCAxNzQsIDk4LCAKLSAgICAyMywgMSwgMjIzLCAxNzEsIDk4LCAyMywgMSwgMjIzLCAxNjQsIDk4LCAyMywgMSwgMjIzLCAxNTksIDk4LCAyMywgMSwgCi0gICAgMjIzLCAxNTQsIDk4LCAyMywgMSwgMjIzLCAxNjUsIDk4LCAyMywgMSwgMjIzLCAxNzcsIDk4LCAyMywgMSwgMjMxLCAzMCwgCi0gICAgOTgsIDIzLCAxLCAyMjUsIDIyNywgOTgsIDIzLCAxLCAyMTksIDE0NywgOTgsIDIzLCAxLCAyMjUsIDIxNiwgOTgsIDIzLCAxLCAKLSAgICAyMjAsIDc2LCA5OCwgMjMsIDEsIDIxOSwgMTQ0LCA5OCwgMjMsIDEsIDIzNiwgNTEsIDk4LCAyMywgMSwgMjQ5LCAyMzksIAotICAgIDk4LCAyMywgMSwgMjE5LCAxNTQsIDk4LCAyMywgMSwgMjUwLCA0MywgOTgsIDIzLCAxLCAyMzQsIDExNiwgOTgsIDIzLCAxLCAKLSAgICAyMTcsIDEyNiwgOTgsIDIzLCAxLCAyMjYsIDcsIDk4LCAyMywgMSwgMjQxLCAxNTgsIDk4LCAyMywgMSwgNjEsIDk4LCAyMywgCi0gICAgMSwgMjU0LCAxNDgsIDk4LCAyMywgMSwgMTg2LCA5OCwgMjMsIDEsIDIxMywgODAsIDk4LCAyMywgMSwgMjQ1LCA3NiwgOTgsIAotICAgIDIzLCAxLCA3NCwgOTgsIDIzLCAxLCAyMTMsIDI3LCA5OCwgMjMsIDEsIDIxMywgMzgsIDk4LCAyMywgMSwgNzUsIDk4LCAyMywgCi0gICAgMSwgMjE0LCA0OSwgOTgsIDIzLCAxLCAyMTQsIDQ2LCA5OCwgMjMsIDEsIDIyNywgOTksIDk4LCAyMywgMSwgMjEyLCAyMzUsIAotICAgIDk4LCAyMywgMSwgNjksIDk4LCAyMywgMSwgMjEzLCAyNTIsIDk4LCAyMywgMSwgMjE0LCA2LCA5OCwgMjMsIDEsIDIxMywgCi0gICAgMjM1LCA5OCwgMjMsIDEsIDIxMiwgMjAzLCA5OCwgMjMsIDEsIDI0NSwgMjIsIDk4LCAyMywgMSwgMjEyLCAyNTUsIDk4LCAKLSAgICAyMywgMSwgNzIsIDEyMCwgMjUwLCAxMTAsIDUyLCAxMjAsIDIyNSwgMTA4LCA1MiwgMTIwLCAyMjgsIDE2MywgNTIsIDEyMCwgCi0gICAgMjMyLCAzNywgMTIwLCAyNTEsIDYzLCAxMzQsIDEyMCwgMjEzLCAzMSwgNTIsIDEyMCwgMjEzLCAyMDQsIDUyLCA5OCwgMjQzLCAKLSAgICAyNDMsIDE3NywgMjE0LCAyMTYsIDk4LCAxMzIsIDY4LCA5OCwgMjE1LCAxMjQsIDY4LCA5OCwgOTUsIDY4LCA5OCwgMjQ2LCAKLSAgICA1OCwgNjgsIDk4LCA4MywgMjE5LCAxNjYsIDk4LCA2NywgMjQ5LCAyMjgsIDIzNSwgMjAxLCAyNTQsIDEwLCAyNTQsIDI5LCAKLSAgICAyMzUsIDIwMSwgMjU0LCAxMCwgMjIxLCA1NywgMjM1LCAyMDEsIDI1NCwgMTAsIDIxNywgMTg5LCAyMjcsIDExMywgMjIzLCAKLSAgICAyMjQsIDI1MCwgNzgsIDIyMywgMjI0LCAyNTAsIDc4LCA1OCwgNTQsIDQsIDI1MywgNTgsIDYxLCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMjcsIDc0LCA1OCwgNTQsIDQsIDI1MywgMzYsIDcyLCA1OCwgNTQsIDQsIDI1MywgNCwgNzUsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA1NCwgNjksIDU4LCA1NCwgNCwgMjUzLCA3MywgMjQ4LCAxNjQsIDU4LCA1NCwgNCwgMjUzLCAyMCwgMjQ4LCA0MSwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDYwLCAyNDcsIDIxMSwgNTgsIDU0LCA0LCAyNTMsIDUwLCAyNDcsIDk5LCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMTQsIDI0NiwgMzMsIDU4LCA1NCwgNCwgMjUzLCA4LCAyMzUsIDEzOSwgNTgsIDU0LCA0LCAyNTMsIDE5LCAyMzUsIDEyNywgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDI5LCAyMzUsIDcxLCA1OCwgNTQsIDQsIDI1MywgMCwgMjM1LCA1NCwgNTgsIDU0LCA0LCAyNTIsIAotICAgIDI0NCwgMTgxLCA1OCwgNTQsIDQsIDI1MywgMjEsIDIzNCwgMTg4LCA1OCwgNTQsIDQsIDI1MiwgMjU0LCAyMzQsIDEwMSwgCi0gICAgNTgsIDU0LCA0LCAyNTIsIDI1MSwgMjM0LCAzNywgNTgsIDU0LCA0LCAyNTIsIDI0MCwgMjMzLCAyMzgsIDU4LCA1NCwgNCwgCi0gICAgMjUyLCAyNDEsIDE4OCwgNTgsIDU0LCA0LCAyNTMsIDUxLCAyMzEsIDE1NiwgNTgsIDU0LCA0LCAyNTIsIDI0OCwgMjMxLCAKLSAgICA0MiwgNTgsIDU0LCA0LCAyNTMsIDQ5LCAyMzAsIDIzMSwgNTgsIDU0LCA0LCAyNTMsIDQxLCAyMzAsIDE3MiwgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDYyLCAyMDUsIDU4LCA1NCwgNCwgMjUzLCA0MCwgMjI5LCAxODcsIDU4LCA1NCwgNCwgMjUzLCAzNCwgMjI5LCAKLSAgICA2NCwgNTgsIDU0LCA0LCAyNTMsIDEzLCAyMjgsIDE4NSwgNTgsIDU0LCA0LCAyNTMsIDEwLCAyMjgsIDkyLCA1OCwgNTQsIDQsIAotICAgIDI1MywgNjksIDE5MywgNTgsIDU0LCA0LCAyNTIsIDI0OSwgMjI2LCA5NiwgNTgsIDU0LCA0LCAyNTMsIDI2LCAyMjUsIDI0MCwgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDUzLCAyMjUsIDE1MCwgNTgsIDU0LCA0LCAyNTMsIDE1LCAyMjUsIDM1LCA1OCwgNTQsIDQsIAotICAgIDI1MywgNDgsIDIyNCwgMjMyLCA1OCwgNTQsIDQsIDI1MiwgMjQzLCAyMjQsIDIxMywgNTgsIDU0LCA0LCAyNTMsIDQzLCAKLSAgICAyMjQsIDE5OCwgNTgsIDU0LCA0LCAyNTMsIDMyLCAyMjQsIDE4NywgNTgsIDU0LCA0LCAyNTMsIDUsIDIwMywgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDM3LCAyMjQsIDIxLCA1OCwgNTQsIDQsIDI1MywgMTIsIDIyMywgMTg4LCA1OCwgNTQsIDQsIDI1MywgNzEsIAotICAgIDIyMywgMTEyLCA1OCwgNTQsIDQsIDI1MywgMzgsIDIyMywgNTEsIDU4LCA1NCwgNCwgMjUzLCAzMywgMjIyLCAyMDIsIDU4LCAKLSAgICA1NCwgNCwgMjUzLCA1NiwgMjIyLCAxMDAsIDU4LCA1NCwgNCwgMjUzLCAyNCwgMjIwLCAxMTcsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA1MiwgMjE5LCAyNDIsIDU4LCA1NCwgNCwgMjUzLCA3LCAyMTksIDI3LCA1OCwgNTQsIDQsIDI1MywgNiwgMjE4LCA1MiwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDY3LCAyMTcsIDIyOSwgNTgsIDU0LCA0LCAyNTMsIDI4LCAyMTcsIDcxLCA1OCwgNTQsIDQsIDI1MywgCi0gICAgNjUsIDEwOCwgNTgsIDU0LCA0LCAyNTIsIDI1MiwgMjE2LCA4MiwgNTgsIDU0LCA0LCAyNTMsIDExLCAyMTQsIDQ5LCA1OCwgCi0gICAgNTQsIDQsIDI1MiwgMjQ2LCAyMTQsIDYsIDU4LCA1NCwgNCwgMjUzLCAyNSwgMjEzLCAyMzUsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAyMywgMjEzLCAyMTQsIDU4LCA1NCwgNCwgMjUzLCA0NywgMjEyLCAxMDksIDU4LCA1NCwgNCwgMjUyLCAyNDcsIDIxMiwgODcsIAotICAgIDU4LCA1NCwgNCwgMjUzLCA0NCwgMjEyLCAxNiwgNTgsIDU0LCA0LCAyNTMsIDM5LCAyNTQsIDIzNCwgNTgsIDU0LCA0LCAKLSAgICAyNTMsIDIyLCAyNTQsIDIzMywgNTgsIDU0LCA0LCAyNTIsIDIzNywgMjUzLCAxMDgsIDU4LCA1NCwgNCwgMjUyLCAyNTAsIAotICAgIDI0NiwgMSwgNTgsIDU0LCA0LCAyNTIsIDIzMywgMjQ2LCAwLCA1OCwgNTQsIDQsIDI1MywgMTcsIDIyOCwgMzEsIDU4LCA1NCwgCi0gICAgNCwgMjUzLCAzNSwgMjI1LCAzNCwgNTgsIDU0LCA0LCAyNTMsIDMsIDIyNSwgMzcsIDU4LCA1NCwgNCwgMjUyLCAyNDUsIAotICAgIDIyNCwgNzYsIDU4LCA1NCwgNCwgMjUzLCAzMSwgMjI0LCA3NSwgNTgsIDU0LCA0LCAyNTIsIDI1MywgMjIzLCAxMTEsIDU4LCAKLSAgICA1NCwgNCwgMjUyLCAyNTUsIDIxOCwgNTAsIDU4LCA1NCwgNCwgMjUyLCAyMzUsIDIxNiwgNDMsIDU4LCA1NCwgNCwgMjUyLCAKLSAgICAyMzIsIDEwOSwgNTgsIDU0LCAxNiwgMjUzLCA0NiwgNTgsIDU0LCAxNiwgMjUzLCA0NSwgNTgsIDU0LCAxNiwgMjUzLCA0MiwgCi0gICAgNTgsIDU0LCAxNiwgMjUzLCAzMCwgNTgsIDU0LCAxNiwgMjUzLCAxOCwgNTgsIDU0LCAxNiwgMjUzLCAxNiwgNTgsIDU0LCAKLSAgICAxNiwgMjUzLCA5LCA1OCwgNTQsIDE2LCAyNTMsIDIsIDU4LCA1NCwgMTYsIDI1MywgMSwgNTgsIDU0LCAxNiwgMjUyLCAyNDIsIAotICAgIDU4LCA1NCwgMTYsIDI1MiwgMjM5LCA1OCwgNTQsIDE2LCAyNTIsIDIzOCwgNTgsIDU0LCAxNiwgMjUyLCAyMzYsIDU4LCA1NCwgCi0gICAgMTYsIDI1MiwgMjM0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMzEsIDIzMSwgMjQ4LCA1OCwgNTQsIDEwMiwgMjUyLCAyMzAsIAotICAgIDIxMywgMjA4LCA1OCwgNTQsIDEwMiwgMjUyLCAyMjksIDI0OCwgMjUsIDU4LCA1NCwgMTAyLCAyNTIsIDIyOCwgMjQ1LCA1OCwgCi0gICAgNTgsIDU0LCAxMDIsIDI1MiwgMjI3LCAyMzEsIDIyMiwgNTgsIDU0LCAxMDIsIDI1MiwgMjI2LCAyMTksIDEwMSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMjI1LCAyNDUsIDQsIDU4LCA1NCwgMTAyLCAyNTIsIDIyNCwgMjI0LCA0NSwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMjIzLCAyMjAsIDI0MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjIyLCAyNDEsIDIyMSwgNTgsIDU0LCAxMDIsIDI1MiwgMjIxLCAKLSAgICAyMTksIDIxMiwgNTgsIDU0LCAxMDIsIDI1MiwgMjIwLCAyNTEsIDEyNiwgNTgsIDU0LCAxMDIsIDI1MiwgMjE5LCAyNDksIAotICAgIDg0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTgsIDI1MSwgNDQsIDU4LCA1NCwgMTAyLCAyNTIsIDIxNywgMjEzLCAyNDMsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDIxNiwgMjUyLCA1NiwgNTgsIDU0LCAxMDIsIDI1MiwgMjE1LCAyMjcsIDcxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMTQsIDIxOSwgMTg2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTMsIDI0OSwgMTEsIDU4LCA1NCwgMjMwLCAyMTIsIAotICAgIDI1MiwgMjEyLCAyMzQsIDIyOSwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMTEsIDIzNCwgMjM3LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMTAsIDIyNywgODQsIDU4LCA1NCwgMTAyLCAyNTIsIDIwOSwgMjEzLCAyMjEsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDIwOCwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMDcsIDI1MywgMTg4LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIwNiwgCi0gICAgMjMxLCAxMTYsIDU4LCA1NCwgMTAyLCAyNTIsIDIwNSwgMjUxLCA2MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjA0LCAyNDIsIAotICAgIDE0MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjAzLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDIsIDIxMywgMTk5LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMDEsIDU4LCA1NCwgMTAyLCAyNTIsIDIwMCwgNTgsIDU0LCAxMDIsIDI1MiwgMTk5LCAyNDAsIDIzNSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTk4LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTcsIDU4LCA1NCwgMTAyLCAyNTIsIDE5NiwgNTgsIDU0LCAyMzAsIAotICAgIDIxMiwgMjUyLCAxOTQsIDIxNiwgNTYsIDU4LCA1NCwgMTAyLCAyNTIsIDE5MywgNTgsIDU0LCAxMDIsIDI1MiwgMTkyLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxOTEsIDI0OSwgMTg3LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTAsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDE4OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg4LCAyNDMsIDY5LCA1OCwgNTQsIDEwMiwgMjUyLCAxODcsIDI1MywgMTc1LCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxODYsIDU4LCA1NCwgMTAyLCAyNTIsIDE4NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg0LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxODMsIDU4LCA1NCwgMTAyLCAyNTIsIDE4MiwgNTgsIDU0LCAxMDIsIDI1MiwgMTgxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAxODAsIDU4LCA1NCwgMTAyLCAyNTIsIDE3OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTc4LCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxNzcsIDIzMCwgMjA0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzYsIDU4LCA1NCwgMTAyLCAyNTIsIDE3NSwgMjE2LCAxOTMsIAotICAgIDU4LCA1NCwgMTAyLCAyNTIsIDE3NCwgNTgsIDU0LCAxMDIsIDI1MiwgMTczLCA1OCwgNTQsIDEwMiwgMjUyLCAxNzIsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE3MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTcwLCA1OCwgNTQsIDEwMiwgMjUyLCAxNjksIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE2OCwgNTgsIDU0LCAxMDIsIDI1MiwgMTY3LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDE2NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTY0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjMsIDI0MSwgMTk1LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxNDIsIDI0MywgMjUzLCA1OCwgNTQsIDEwMiwgMjUyLCAxMzksIDI1MiwgMzYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDEzNCwgMjE5LCAxOTMsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMywgNjgsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMiwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTMxLCAyMTgsIDE4MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTMwLCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxMjksIDU4LCA1NCwgMTAyLCAyNTIsIDEyOCwgMjEzLCAyMzksIDI1MCwgNzUsIDU4LCA1NCwgMTAyLCAyNTIsIDEyNywgCi0gICAgMjUwLCA3NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI2LCAyNTAsIDc2LCAyNDMsIDIyNSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI1LCAKLSAgICAyMTMsIDI0MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI0LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjMsIDU4LCA1NCwgMjMwLCAyMTIsIAotICAgIDI1MiwgMTIyLCAyNDcsIDE1MCwgNTgsIDU0LCAxMDIsIDI1MiwgMTIxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjAsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDExOCwgNTgsIDU0LCAxMDIsIDI1MiwgMTE3LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDExNSwgMjQ4LCAxMDQsIDU4LCA1NCwgMTAyLCAyNTIsIDExNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTEzLCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxMTIsIDU4LCA1NCwgMTAyLCAyNTIsIDExMSwgNTgsIDU0LCAxMDIsIDI1MiwgMTEwLCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTk1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTYyLCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTYxLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTYwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIAotICAgIDI1MiwgMTU5LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU4LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgCi0gICAgMTU3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU2LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU1LCAKLSAgICA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU0LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUzLCA1OCwgNTQsIAotICAgIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUyLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTUwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ5LCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTQ4LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIAotICAgIDI1MiwgMTQ2LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgCi0gICAgMTQ0LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQzLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQxLCAKLSAgICA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM4LCA1OCwgNTQsIAotICAgIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM2LCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTM1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTE5LCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTA5LCAyNTQsIDE0MSwgMjEzLCAxOTYsIDIyMSwgNTgsIDIzMiwgMjQyLCAyNTQsIDE0MSwgMjEzLCAxOTYsIAotICAgIDIyMSwgNTgsIDI0NywgNzQsIDI1NCwgMTQxLCAyNTAsIDY2LCA3NywgMjU0LCAxNDEsIDUwLCAxMTYsIDI1NCwgMTQxLCA1MCwgCi0gICAgMTA5LCAyNTQsIDE0MSwgNTAsIDE2NiwgMjU0LCAxNDEsIDUwLCAxNjMsIDI1NCwgMTQxLCA1MCwgMTgwLCAyNTQsIDE0MSwgCi0gICAgNTAsIDE4OSwgMjU0LCAxNDEsIDUwLCAxOTgsIDI1NCwgMTQxLCA1MCwgMTk1LCAyNTQsIDE0MSwgNTAsIDIwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMTcsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMTYsIDM4LCAyNTQsIDE0MSwgNTAsIDIxNywgMTE1LCAyNTQsIAotICAgIDE0MSwgNTAsIDI0MywgMjQwLCAyNTQsIDE0MSwgNTAsIDI0NCwgODMsIDI1NCwgMTQxLCA1MCwgMjIwLCAzOSwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMjEsIDM3LCAyNTQsIDE0MSwgNTAsIDI0NSwgMTQxLCAyNTQsIDE0MSwgNTAsIDIyOSwgMjYsIDI1NCwgCi0gICAgMTQxLCA1MCwgMTIyLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAxMTcsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDEzMywgCi0gICAgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyMzcsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDI0NCwgNTAsIDI0MCwgCi0gICAgMjAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNTMsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgNDMsIDI0MCwgMjAwLCAKLSAgICAyNTQsIDE0MSwgNTAsIDI0NSwgMTUwLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDMxLCAyNDAsIDIwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAxMjIsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDExNywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMTMzLCAKLSAgICAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDIzNywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA1MCwgMjE3LCAKLSAgICAxMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA1MywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCA0MywgMjE3LCAxMDAsIAotICAgIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNTAsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMzEsIDIxNywgMTAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDIxNywgMjAxLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMTYsIDM5LCAyMTcsIDEwMCwgMjU0LCAxNDEsIAotICAgIDUwLCAyMTcsIDExNiwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyNDEsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIAotICAgIDI0NCwgODQsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNDAsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgCi0gICAgMzgsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0NSwgMTQyLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDI3LCAKLSAgICAyMTcsIDEwMCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNTIsIDQ4LCAyMTUsIDE0NCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNDQsIAotICAgIDYxLCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjIyLCA5NSwgMjE5LCA0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDIxNywgCi0gICAgMTIyLCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjQzLCAyMzAsIDIxOSwgNCwgMjU0LCAxNDEsIDI0NiwgMzYsIAotICAgIDIzMSwgMTU1LCAyNDQsIDYxLCAyMTksIDQsIDI1NCwgMTQxLCAyMzIsIDIyOCwgMjMxLCAxNTUsIDI0NCwgNjEsIDIxOSwgNCwgCi0gICAgMjU0LCAxNDEsIDIzMSwgMTU1LCAyMjIsIDk1LCAyMTksIDQsIDI1NCwgMTQxLCAyMzEsIDE1NSwgMjE3LCAxMjIsIDIxOSwgCi0gICAgNCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMjQsIDE2NiwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAKLSAgICAyNDIsIDksIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjQ2LCA1NCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgCi0gICAgMTgwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDgzLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAKLSAgICAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE3LCAxMDAsIDI1LCAyNTQsIDE2NywgMjUzLCAKLSAgICAxMTAsIDI0NCwgODQsIDIxNywgMTAwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTgsIDE4LCAyNSwgCi0gICAgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgCi0gICAgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyNDAsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAKLSAgICAyNTMsIDExMCwgMjQ0LCA1MCwgMjQwLCAyMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjE3LCAKLSAgICAxMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxNywgMTAxLCAyMTgsIDE4LCAyNSwgCi0gICAgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgCi0gICAgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIAotICAgIDExMCwgMTIyLCAyNDAsIDIwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjQwLCAyMDEsIAotICAgIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgCi0gICAgMjUzLCAxMTAsIDIxNywgMjAxLCAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgCi0gICAgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAyMzAsIDIzNCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyNDEsIDE4OSwgMTIyLCAyMjUsIDE2NCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTE2LCAyNSwgMjU0LCAxNjcsIAotICAgIDI0MSwgMTg2LCAxMTYsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMTA5LCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMDksIAotICAgIDI1LCAyNTQsIDE2NywgMjQ5LCA4LCAxMTcsIDI0NiwgNTMsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMTE3LCAyNDYsIDUzLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAxODAsIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDIxNywgMjAwLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIxNiwgMTYxLCAyMTcsIDIwMSwgMjU0LCA1MCwgMTcsIDI1LCAyNTQsIDE2NywgMjQxLCAxODYsIDIxNywgMjAwLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIzMSwgMTA4LCAyMTcsIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjE3LCAyMDAsIDI1LCAKLSAgICAyNTQsIDE2NywgMjE3LCAxMzQsIDIxNywgMTE1LCAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAyNDQsIDgzLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIxNiwgMTYxLCAyNDQsIDg0LCAyNTQsIDUwLCAxNywgMjUsIDI1NCwgMTY3LCAyNDEsIDE4NiwgMjQ0LCA4MywgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjQ0LCA4MywgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTIyLCAyNDAsIDIwMCwgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTMzLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAyNDQsIDUwLCAyNDAsIAotICAgIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIAotICAgIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI1MCwgMTU5LCAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyMzAsIDQsIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMjIsIDIxNywgMTAwLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAyNDQsIDUwLCAyMTcsIDEwMCwgMjUsIDI1NCwgMTY3LCAyNDgsIDgsIDI0NCwgNTAsIAotICAgIDIzMCwgMjM0LCAyNSwgMjU0LCAxNjcsIDIxOSwgNTgsIDI0NCwgODQsIDIzMCwgMjM0LCAyNSwgMTIyLCAxNTEsIDUyLCAyNSwgCi0gICAgMTIyLCAxNTEsIDUsIDI1NCwgNTAsIDE3LCAyNSwgMTE3LCAyMTcsIDEyMCwgNTIsIDI1LCAxMzMsIDIyNCwgMTY1LCA1MiwgCi0gICAgMjUsIDIxMywgMzYsIDUyLCAyNSwgMjE4LCAxOSwgNTIsIDI1LCAyNDYsIDU1LCA1MiwgMjUsIDIyNywgMTEwLCA1MiwgMjUsIAotICAgIDExNywgMjI3LCAxMDksIDUyLCAyNSwgMTMzLCAyMjcsIDEwOSwgNTIsIDI1LCAyNDMsIDIzNywgMjI3LCAxMDksIDUyLCAyNSwgCi0gICAgMjQ0LCA1MCwgMjI3LCAxMDksIDUyLCAyNSwgMjMxLCAxMDIsIDUyLCAyNSwgMjMzLCAxNzksIDI1MiwgNDgsIDUyLCAyNSwgCi0gICAgMjMyLCAyMjMsIDUyLCAyNSwgMjI2LCAyNTUsIDUyLCAyNSwgMjEzLCAxNDcsIDUyLCAyNSwgMjUzLCAxNTgsIDUyLCAyNSwgCi0gICAgMjUzLCAxNzEsIDUyLCAyNSwgMjQyLCAxMjAsIDUyLCAyNSwgMjE2LCAxNDQsIDI1MiwgNDgsIDUyLCAyNSwgMjEyLCA4MCwgCi0gICAgNTIsIDIyMywgMTAwLCAyMjEsIDM0LCA1MiwgMjIzLCAxMDAsIDIxNSwgMTU1LCA1MiwgMjIzLCAxMDAsIDIyMSwgNjIsIDUyLCAKLSAgICAyMjMsIDEwMCwgMjIxLCAzMiwgNTIsIDIyMywgMTAwLCAyNDcsIDE2NSwgMjIxLCAzMiwgNTIsIDIyMywgMTAwLCAyMjAsIAotICAgIDk0LCA1MiwgMjIzLCAxMDAsIDI0OCwgNCwgNTIsIDIyMywgMTAwLCAyMjQsIDE1MSwgNTIsIDIyMywgMTAwLCAyMjEsIDUwLCAKLSAgICA1MiwgMjIzLCAxMDAsIDI0NiwgMTUsIDUyLCAyMjMsIDEwMCwgMjUzLCAxNTMsIDUyLCAyMjMsIDEwMCwgMjUwLCAxMDUsIAotICAgIDUyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCA4OCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNSwgMTU4LCAyNDEsIAotICAgIDIxOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNywgMjUyLCAyNDEsIDIxOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgCi0gICAgMTc5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAzOCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxMywgMjA4LCAyMjYsIAotICAgIDE5LCAyNDcsIDE0MywgNSwgMjQxLCAxOTUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDMsIDYxLCAyMjYsIDE5LCAyNDcsIAotICAgIDE0MywgNSwgMjE3LCA3MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDY4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCA5NSwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyMCwgMjA5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ5LCAxODEsIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyMzEsIDI0NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIzMSwgMTk5LCAyMjYsIDE5LCAyNDcsIDE0MywgCi0gICAgNSwgMjIyLCAxMzQsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMzMsIDksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIAotICAgIDExMywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgMTYzLCAyMjUsIDE2NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NywgCi0gICAgODcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDksIDE2MSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyMCwgMTUsIDIyNiwgCi0gICAgMTksIDI0NywgMTQzLCA1LCAyNDksIDE2MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgMjM5LCAyMjYsIDE5LCAyNDcsIAotICAgIDE0MywgNSwgMjIwLCAxOTYsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDAsIDIzNSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIAotICAgIDI0MSwgMTYzLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCA0MSwgMjMzLCA2MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIAotICAgIDI1MCwgMTU2LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI0LCA0NSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NSwgMTg2LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ2LCA2MSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNiwgNjksIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyNTEsIDI0MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNSwgMTY4LCAyMTYsIDE5MywgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDIxNCwgMTQwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCAxNDYsIDIyNiwgMTksIDI0NywgMTQzLCAKLSAgICA1LCAyMjMsIDkyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjMyLCAyNTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIAotICAgIDIzOSwgMjUyLCAxMDEsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDQsIDE3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQyLCAKLSAgICAxMTUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTksIDU5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMywgMjUzLCA4NCwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNCwgMTYsIDI1MiwgNjcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAzNywgMjI3LCAKLSAgICAxMTIsIDkwLCAyMzIsIDEyMCwgMSwgNjEsIDIzMiwgMTIwLCAxLCA3NCwgMjMyLCAxMjAsIDEsIDI1MywgNzQsIDIzMiwgCi0gICAgMTIwLCAxLCAyNTEsIDE5NiwgMjMyLCAxMjAsIDEsIDI0MywgMTc3LCAyMzIsIDEyMCwgMSwgMjQ5LCAzLCAyMzIsIDEyMCwgCi0gICAgMSwgNzIsIDIzMiwgMTIwLCAxLCAyMTQsIDgyLCAyMzIsIDEyMCwgMSwgMjEyLCAxNTIsIDIzMiwgMTIwLCAxLCAyMTcsIAotICAgIDE2MywgMjMyLCAxMjAsIDEsIDIzNSwgMTQyLCAyMzIsIDEyMCwgMSwgMjM1LCAyNywgMjMyLCAxMjAsIDEsIDIyNCwgMjQwLCAKLSAgICAyMzIsIDEyMCwgMSwgMTUwLCAyMzIsIDEyMCwgMSwgMTgzLCAyMzIsIDEyMCwgMSwgMjA0LCAyMzIsIDEyMCwgMSwgMjMwLCAKLSAgICAyMzUsIDIzMiwgMTIwLCAxLCAyMjgsIDE5OSwgMjMyLCAxMjAsIDEsIDY5LCAyMzIsIDEyMCwgMSwgMjI2LCAyMjksIDIzMiwgCi0gICAgMTIwLCAxLCAyMzQsIDU2LCAyMzIsIDEyMCwgMSwgMTQ5LCAyMzIsIDEyMCwgMSwgMTk3LCAyMzIsIDEyMCwgMSwgMjE4LCAKLSAgICA5OSwgMjMyLCAxMjAsIDEsIDIxNiwgMTE4LCAyMzIsIDEyMCwgMSwgMjU0LCAzMiwgMjMyLCAxMjAsIDEsIDI0NSwgMTA4LCAKLSAgICAyMzIsIDEyMCwgMSwgMjQyLCA0MSwgMjMyLCAxMjAsIDEsIDIxMywgMTY2LCAyNTAsIDE2OSwgMSwgNjEsIDI1MCwgMTY5LCAKLSAgICAxLCAyMjYsIDIxNSwgMjUwLCAxNjksIDEsIDI0OSwgMywgMjUwLCAxNjksIDEsIDE1MCwgMjUwLCAxNjksIDEsIDIxNSwgOTAsIAotICAgIDI1MCwgMTY5LCAxLCAxNDksIDI1MCwgMTY5LCAxLCAyMzMsIDg2LCAyNTAsIDE2OSwgMSwgMjU0LCAyMzQsIDI1MCwgMTY5LCAKLSAgICAxLCAyMjQsIDI0MCwgMjUwLCAxNjksIDEsIDI1MywgNzQsIDI1MCwgMTY5LCAxLCAxODMsIDI1MCwgMTY5LCAxLCA3NSwgCi0gICAgMjUwLCAxNjksIDEsIDI0OCwgMTY2LCAyNTAsIDE2OSwgMSwgMjE4LCA5OSwgMjUwLCAxNjksIDEsIDIyMSwgMjYsIDI1MCwgCi0gICAgMTY5LCAxLCAyMjEsIDI1LCAyNTAsIDE2OSwgMSwgMTk3LCAyNTAsIDE2OSwgMSwgMjUwLCAyNTEsIDI1MCwgMTY5LCAxLCAKLSAgICA2OSwgMjUwLCAxNjksIDEsIDIyOCwgMTk5LCAyNTAsIDE2OSwgMSwgMjEzLCAxNjYsIDI1MCwgMTY5LCAxLCAyMDQsIDI1MCwgCi0gICAgMTY5LCAxLCAyMTYsIDExNywgMjUwLCAxNjksIDEsIDIyNiwgMjI5LCAyNTAsIDE2OSwgMSwgMjE5LCAxNTgsIDI1MCwgMTY5LCAKLSAgICAxLCA3MiwgMjUwLCAxNjksIDEsIDc0LCAyNTAsIDE2OSwgMSwgMjE1LCA4NywgMjUwLCAxNjksIDEsIDIzNSwgMjcsIDI1MCwgCi0gICAgMTY5LCAxLCAyMzUsIDE4LCAyNTAsIDE2OSwgMSwgMjI5LCAyMzAsIDI1MCwgMTY5LCAxLCAyMTUsIDkyLCAyNTAsIDE2OSwgCi0gICAgMSwgMjQzLCAxNzcsIDI1MCwgMTY5LCAxLCAyNDMsIDExMiwgMjUwLCAxNjksIDEsIDIxOSwgMTA3LCAyNTAsIDE2OSwgMSwgCi0gICAgMjE5LCAxMDYsIDI1MCwgMTY5LCAxLCAyMjksIDE2MSwgMjUwLCAxNjksIDEsIDIzNiwgMjgsIDI1MCwgMTY5LCAxLCAyNTAsIAotICAgIDI1MCwgMjUwLCAxNjksIDEsIDIxNiwgMTE4LCAyNTAsIDE2OSwgMSwgMjE1LCA4OSwgMjUwLCAxNjksIDEsIDIyMywgODIsIAotICAgIDI1MCwgMTY5LCAxLCAyMzEsIDE5MiwgMjUwLCAxNjksIDEsIDIzMSwgMTkxLCAyNTAsIDE2OSwgMSwgMjMxLCAxOTAsIDI1MCwgCi0gICAgMTY5LCAxLCAyMzEsIDE4OSwgMjUwLCAxNjksIDEsIDIzMywgODUsIDI1MCwgMTY5LCAxLCAyNDUsIDE5MCwgMjUwLCAxNjksIAotICAgIDEsIDIxNSwgODgsIDUzLCAzMiwgMSwgNjEsIDUzLCAzMiwgMSwgMjUxLCAyNTEsIDUzLCAzMiwgMSwgMjM0LCAxODgsIDUzLCAKLSAgICAzMiwgMSwgMjQ4LCA0MSwgNTMsIDMyLCAxLCA3NCwgNTMsIDMyLCAxLCAyMTQsIDIzMiwgNTMsIDMyLCAxLCAyMTIsIDg3LCAKLSAgICA1MywgMzIsIDEsIDI0MSwgMjIyLCA1MywgMzIsIDEsIDIxNywgMTQ4LCA1MywgMzIsIDEsIDcyLCA1MywgMzIsIDEsIDE4MSwgCi0gICAgNTMsIDMyLCAxLCAyNDUsIDEzMSwgNTMsIDMyLCAxLCAyNDUsIDExNywgNTMsIDMyLCAxLCAyNDUsIDEwOCwgNTMsIDMyLCAxLCAKLSAgICAyNDUsIDQwLCA1MywgMzIsIDEsIDc1LCA1MywgMzIsIDEsIDIyNiwgOTYsIDUzLCAzMiwgMSwgMjIwLCAyNDMsIDUzLCAzMiwgCi0gICAgMSwgMjMzLCAyMzgsIDUzLCAzMiwgMSwgMjQ1LCA1NSwgNTMsIDMyLCAxLCAyNDUsIDQ1LCA1MywgMzIsIDEsIDIxNywgMjI5LCAKLSAgICA1MywgMzIsIDEsIDY5LCA1MywgMzIsIDEsIDI0NSwgMTM0LCA1MywgMzIsIDEsIDIyNiwgMTIsIDUzLCAzMiwgMSwgMjM0LCAKLSAgICAxMjUsIDUzLCAzMiwgMSwgMjQ1LCAxNTksIDUzLCAzMiwgMSwgMjQ1LCA0NywgNTMsIDMyLCAxLCAyNTAsIDY3LCA1MywgMzIsIAotICAgIDEsIDIzNiwgMjgsIDUzLCAzMiwgMSwgMjE1LCA5MiwgNTMsIDMyLCAyMjgsIDU0LCAxMTYsIDUzLCAzMiwgMjI4LCA1NCwgCi0gICAgMTgwLCA1MywgMzIsIDIyOCwgNTQsIDIxNywgMjAwLCA1MywgMzIsIDIyOCwgNTQsIDI0NCwgODMsIDI0MiwgMTI5LCAxLCAKLSAgICAyNTQsIDExMSwgMjQyLCAxMjksIDEsIDI1MiwgODIsIDI0MiwgMTI5LCAxLCAyNDIsIDE4NywgMjQyLCAxMjksIDEsIDI0OCwgCi0gICAgMTQ4LCAyNDIsIDEyOSwgMSwgMjU0LCAxMDcsIDI0MiwgMTI5LCAxLCAyMjQsIDIyMywgMjQyLCAxMjksIDEsIDIzNSwgMTUzLCAKLSAgICAyNDIsIDEyOSwgMSwgMjQyLCAyMCwgMjQyLCAxMjksIDEsIDIxNywgMTExLCAyNDIsIDEyOSwgMSwgMjQ1LCAxNDAsIDI0MiwgCi0gICAgMTI5LCAxLCAyMzMsIDIxMSwgMjQyLCAxMjksIDEsIDIzMywgMTM2LCAyNDIsIDEyOSwgMSwgMjMxLCAyNDIsIDI0MiwgMTI5LCAKLSAgICAxLCAyMzAsIDYsIDI0MiwgMTI5LCAxLCAyMzUsIDEyMCwgMjQyLCAxMjksIDEsIDIxNSwgMTA3LCAyNDIsIDEyOSwgMSwgCi0gICAgMjI2LCAxOTYsIDI0MiwgMTI5LCAxLCAyMjksIDI2LCAyNDIsIDEyOSwgMSwgMjI0LCA1NiwgMjQyLCAxMjksIDEsIDIyMiwgCi0gICAgMTM2LCAyNDIsIDEyOSwgMSwgMjE3LCAyMTIsIDI0MiwgMTI5LCAxLCAyMTMsIDIxOSwgMjQyLCAxMjksIDEsIDI0NCwgMTQ2LCAKLSAgICAyNDIsIDEyOSwgMSwgMjM2LCAzMiwgMjQyLCAxMjksIDEsIDI0MCwgMTkxLCAyNDIsIDEyOSwgMSwgMjI3LCA3LCAyNDIsIAotICAgIDEyOSwgMSwgMjI5LCAzMSwgMjQwLCAyMDAsIDIxNSwgMTc5LCAxLCAyNTQsIDU2LCAyMTUsIDE3OSwgMSwgMjUxLCAyMDMsIAotICAgIDIxNSwgMTc5LCAxLCAyNDMsIDg0LCAyMTUsIDE3OSwgMSwgMjM0LCAxMzgsIDIxNSwgMTc5LCAxLCAyNDgsIDUsIDIxNSwgCi0gICAgMTc5LCAxLCAyNDEsIDU0LCAyMTUsIDE3OSwgMSwgMjEzLCAyMTQsIDIxNSwgMTc5LCAxLCAyMTIsIDc4LCAyMTUsIDE3OSwgCi0gICAgMSwgMjQwLCAyMjgsIDIxNSwgMTc5LCAxLCAyMTcsIDE4MywgMjE1LCAxNzksIDEsIDIxMiwgMjI0LCAyMTUsIDE3OSwgMSwgCi0gICAgMjM0LCAyNTQsIDIxNSwgMTc5LCAxLCAyMjAsIDIwMCwgMjE1LCAxNzksIDEsIDIzMywgMTIyLCAyMTUsIDE3OSwgMSwgMjMxLCAKLSAgICAxMjksIDIxNSwgMTc5LCAxLCAyNDcsIDIyOSwgMjE1LCAxNzksIDEsIDIyOCwgNTAsIDIxNSwgMTc5LCAxLCAyMTIsIDgsIAotICAgIDIxNSwgMTc5LCAxLCAyMjIsIDE2MywgMjE1LCAxNzksIDEsIDI1NCwgMTAzLCAyMTUsIDE3OSwgMSwgMjI1LCAzNSwgMjE1LCAKLSAgICAxNzksIDEsIDIyMiwgMTk0LCAyMTUsIDE3OSwgMSwgMjI0LCAxODAsIDIxNSwgMTc5LCAxLCAyMjQsIDM2LCAyMTUsIDE3OSwgCi0gICAgMSwgMjE3LCAxNTIsIDIxNSwgMTc5LCAxLCAyNDIsIDIyMCwgMjE1LCAxNzksIDEsIDEwOCwgMjE1LCAxNzksIDEsIDcyLCAKLSAgICAyMTUsIDE3OSwgMSwgNjksIDIxNSwgMTc5LCAxLCAyMTksIDExNywgMjE1LCAxNzksIDIxMywgMTk2LCAyNDcsIDEyNCwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDYxLCA1MywgMjI2LCA0NSwgNSwgNzIsIDUzLCAyMjYsIDQ1LCA1LCA2OSwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDE4MSwgNTMsIDIyNiwgNDUsIDUsIDIzMywgMjM4LCA1MywgMjI2LCA0NSwgNSwgMjQzLCAxMTAsIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAyNDIsIDkyLCA1MywgMjI2LCA0NSwgNSwgMjEzLCAxNTMsIDUzLCAyMjYsIDQ1LCA1LCAyNTAsIDIxOSwgNTMsIDIyNiwgNDUsIAotICAgIDUsIDIzNSwgMTM5LCA1MywgMjI2LCA0NSwgNSwgMjM1LCAxMTAsIDUzLCAyMjYsIDQ1LCA1LCAyMTgsIDUyLCA1MywgMjI2LCAKLSAgICA0NSwgNSwgMjE2LCA4MiwgNTMsIDIyNiwgNDUsIDUsIDI0OCwgMTY0LCA1MywgMjI2LCA0NSwgNSwgMjQ3LCAyMTEsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyNDYsIDMzLCA1MywgMjI2LCA0NSwgNSwgMjE3LCAxNjEsIDUzLCAyMjYsIDQ1LCA1LCAxOTMsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyNTIsIDEwNywgNTMsIDIyNiwgNDUsIDUsIDI0NCwgMTY0LCA1MywgMjI2LCA0NSwgNSwgMjA1LCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjI4LCA5MiwgNTMsIDIyNiwgNDUsIDUsIDE4OCwgNTMsIDIyNiwgNDUsIDUsIDIzMSwgNDIsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMzAsIDE3MiwgNTMsIDIyNiwgNDUsIDUsIDE4NiwgNTMsIDIyNiwgNDUsIDUsIDIxNSwgMSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIxNCwgMTU0LCA1MywgMjI2LCA0NSwgNSwgMjAzLCA1MywgMjI2LCA0NSwgNSwgMjIzLCA1MSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIzMywgMTU3LCA1MywgMjI2LCA0NSwgNSwgMjIyLCAyMDIsIDUzLCAyMjYsIDQ1LCA1LCAyMTIsIDEwOSwgCi0gICAgNTMsIDIyNiwgNDUsIDUsIDIyMSwgMjQsIDUzLCAyMjYsIDQ1LCA1LCAyMTksIDE1NywgNTMsIDIyNiwgNDUsIDUsIDE1OSwgCi0gICAgNTMsIDIyNiwgNDUsIDUsIDI1MywgMTAyLCA1MywgMjI2LCA0NSwgNSwgMjUzLCAxMDEsIDUzLCAyMjYsIDQ1LCA1LCAyNTMsIAotICAgIDEwMCwgNTMsIDIyNiwgNDUsIDUsIDIxMywgMTMwLCA1MywgMjI2LCA0NSwgNSwgMjQ4LCAxNDUsIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAyNDgsIDE0NCwgNTMsIDIyNiwgNDUsIDUsIDI1MiwgODgsIDUzLCAyMjYsIDQ1LCA1LCAyNTEsIDE0LCA1MywgMjI2LCA0NSwgCi0gICAgMjEzLCAxOTYsIDI0NywgMTI0LCA1MywgMjI2LCA0NSwgNTAsIDExNiwgNTMsIDIyNiwgNDUsIDUwLCAxMDksIDUzLCAyMjYsIAotICAgIDQ1LCA1MCwgMjE3LCAyMDAsIDUzLCAyMjYsIDQ1LCA1MCwgMjE2LCAzOCwgNTMsIDIyNiwgNDUsIDUwLCAyNDAsIDIwMCwgCi0gICAgMTcxLCA2LCAxLCAxODQsIDcyLCAxNzEsIDYsIDEsIDE4NCwgNzQsIDE3MSwgNiwgMSwgMTg0LCA2MSwgMTcxLCA2LCAxLCAKLSAgICAxODQsIDI1NCwgMTE0LCAxNzEsIDYsIDEsIDE4NCwgNzUsIDE3MSwgNiwgMSwgMTg0LCAyMjcsIDQ5LCAxNzEsIDYsIDEsIAotICAgIDIyMCwgMTc1LCA3MiwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNzQsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDYxLCAxNzEsIDYsIAotICAgIDEsIDIyMCwgMTc1LCAyNTQsIDExNCwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNzUsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDIyNywgCi0gICAgNDksIDE3MSwgNiwgMSwgMjUzLCA4MywgMTcxLCA2LCAxLCAyMjYsIDI0MCwgMTcxLCA2LCAxLCAyMTMsIDE4MywgMTcxLCA2LCAKLSAgICAxLCAyMTMsIDM1LCAxNzEsIDYsIDEsIDI0MiwgNDEsIDE3MSwgNiwgMSwgMjI2LCA4NiwgMTcxLCA2LCAxLCAyNTEsIDI0MiwgCi0gICAgMTcxLCA2LCAxLCAyMTcsIDIxOSwgMTcxLCA2LCAxLCAyNDgsIDI4LCAxNzEsIDYsIDEsIDI1MCwgNjQsIDE3MSwgNiwgMSwgCi0gICAgMjM1LCAxMjUsIDE3MSwgNiwgMSwgMjM0LCAxOTUsIDE3MSwgNiwgMSwgMjQzLCA1OSwgMTcxLCA2LCAxLCAyNDUsIDE1OSwgCi0gICAgMTcxLCA2LCAxLCAyMTQsIDIyNywgMTcxLCA2LCAxLCAyNDUsIDI1LCAxNzEsIDYsIDEsIDIxNywgMTQ3LCAxNzEsIDYsIDEsIAotICAgIDI0NSwgNDUsIDE3MSwgNiwgMSwgMjEyLCA4NSwgMTcxLCA2LCAxLCAyNDUsIDQwLCAxNzEsIDYsIDEsIDIxMiwgNjYsIDE3MSwgCi0gICAgNiwgMSwgMjQ1LCA1NSwgMTcxLCA2LCAxLCAyNDUsIDEzMSwgMTcxLCA2LCAxLCAyNDUsIDExNywgMTcxLCA2LCAxLCAyNDUsIAotICAgIDEwOCwgMTcxLCA2LCAxLCAyNDUsIDk2LCAxNzEsIDYsIDEsIDIyNywgODUsIDE3MSwgNiwgMSwgMjQ1LCA1LCAxNzEsIDMsIAotICAgIDEsIDE4NCwgNzIsIDE3MSwgMywgMSwgMTg0LCA3NCwgMTcxLCAzLCAxLCAxODQsIDYxLCAxNzEsIDMsIDEsIDE4NCwgMjU0LCAKLSAgICAxMTQsIDE3MSwgMywgMSwgMTg0LCA3NSwgMTcxLCAzLCAxLCAxODQsIDIyNywgNDksIDE3MSwgMywgMSwgMjIwLCAxNzUsIAotICAgIDcyLCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA3NCwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgNjEsIDE3MSwgMywgMSwgMjIwLCAKLSAgICAxNzUsIDI1NCwgMTE0LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA3NSwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgMjI3LCA0OSwgCi0gICAgMTcxLCAzLCAxLCAyNTMsIDgzLCAxNzEsIDMsIDEsIDIyNiwgMjQwLCAxNzEsIDMsIDEsIDIxMywgMTgzLCAxNzEsIDMsIDEsIAotICAgIDIxMywgMzUsIDE3MSwgMywgMSwgMjQyLCA0MSwgMTcxLCAzLCAxLCAyMjYsIDg2LCAxNzEsIDMsIDEsIDI1MSwgMjQyLCAKLSAgICAxNzEsIDMsIDEsIDIxNywgMjE5LCAxNzEsIDMsIDEsIDI0OCwgMjgsIDE3MSwgMywgMSwgMjUwLCA2NCwgMTcxLCAzLCAxLCAKLSAgICAyMzUsIDEyNSwgMTcxLCAzLCAxLCAyMzQsIDE5NSwgMTcxLCAzLCAxLCAyNDMsIDU5LCAxNzEsIDMsIDEsIDI0NSwgMTU5LCAKLSAgICAxNzEsIDMsIDEsIDIxNCwgMjI3LCAxNzEsIDMsIDEsIDI0NSwgMjUsIDE3MSwgMywgMSwgMjE3LCAxNDcsIDE3MSwgMywgMSwgCi0gICAgMjQ1LCA0NSwgMTcxLCAzLCAxLCAyMTIsIDg1LCAxNzEsIDMsIDEsIDI0NSwgNDAsIDE3MSwgMywgMSwgMjEyLCA2NiwgMTcxLCAKLSAgICAzLCAxLCAyNDUsIDU1LCAxNzEsIDMsIDEsIDI0NSwgMTMxLCAxNzEsIDMsIDEsIDI0NSwgMTE3LCAxNzEsIDMsIDEsIDI0NSwgCi0gICAgMTA4LCAxNzEsIDMsIDEsIDI0NSwgOTYsIDE3MSwgMywgMSwgMjI3LCA4NSwgMTcxLCAzLCAxLCAyNDUsIDUsIDIyMCwgMjQ5LCAKLSAgICAxLCAyMjYsIDg0LCAyMjAsIDI0OSwgMSwgMjE2LCAyMTgsIDIyMCwgMjQ5LCAxLCAyMzQsIDEwMCwgMjIwLCAyNDksIDEsIAotICAgIDI0NCwgMTE2LCAyMjAsIDI0OSwgMSwgMjE3LCAxMjUsIDIyMCwgMjQ5LCAxLCAyMTksIDI0MiwgMjIwLCAyNDksIDEsIDIxOCwgCi0gICAgMjE0LCAyMjAsIDI0OSwgMSwgMjQ5LCAyNTQsIDIyMCwgMjQ5LCAxLCAyMTMsIDM3LCAyMjAsIDI0OSwgMSwgMjQwLCAxOTksIAotICAgIDIyMCwgMjQ5LCAxLCAyNTEsIDE4MywgMjIwLCAyNDksIDEsIDI0OCwgNDAsIDIyMCwgMjQ5LCAxLCAyNDMsIDk2LCAyMjAsIAotICAgIDI0OSwgMSwgMjE0LCAxMDQsIDIyMCwgMjQ5LCAxLCAyMTcsIDEyOSwgMjIwLCAyNDksIDEsIDIxMiwgMTQsIDIyMCwgMjQ5LCAKLSAgICAxLCAyMzEsIDE1NCwgMjIwLCAyNDksIDEsIDIzNSwgNTIsIDIyMCwgMjQ5LCAxLCAyMTMsIDIxMiwgMjIwLCAyNDksIDEsIAotICAgIDI0MiwgMjksIDIyMCwgMjQ5LCAxLCAyMzIsIDE5NSwgMjIwLCAyNDksIDEsIDIzMSwgMiwgMjIwLCAyNDksIDEsIDIzNiwgCi0gICAgMzUsIDIyMCwgMjQ5LCAxLCAyNDUsIDE1OCwgMjIwLCAyNDksIDEsIDI1MywgMTQ2LCAyMjAsIDI0OSwgMSwgMjU0LCAxNTIsIAotICAgIDIyMCwgMjQ5LCAxLCAyMjcsIDYyLCAyMjAsIDI0OSwgMSwgMjEzLCAxOTksIDIyMCwgMjQ5LCAxLCAyMjYsIDI1NCwgMjIwLCAKLSAgICAyNDksIDEsIDI1NCwgMTE0LCAyMjAsIDI0OSwgMSwgMjIzLCAxMDksIDIyMCwgMjQ5LCAxLCAyMjgsIDUwLCAyMjAsIDI0OSwgCi0gICAgMSwgMjQ1LCAxNzMsIDIyMCwgMjQ5LCAxLCAyNTQsIDExOSwgMjIwLCAyNDksIDEsIDI0MCwgMTA0LCAyMjAsIDI0OSwgMSwgCi0gICAgMjE1LCAxMzQsIDIyMCwgMjQ5LCAxLCAyMjcsIDExOCwgMjIwLCAyNDksIDEsIDIyNywgNDIsIDIyMCwgMjQ5LCAxLCAyMjcsIAotICAgIDg0LCAyMjAsIDI0OSwgMSwgMjUzLCA4NiwgMjIwLCAyNDksIDEsIDI1MywgMTg5LCAyMjAsIDI0OSwgMSwgMjI3LCAyNCwgCi0gICAgMjIwLCAyNDksIDEsIDI1NCwgMTAwLCAyMjAsIDI0OSwgMSwgMjQ1LCA0OSwgMjIwLCAyNDksIDEsIDI1MywgMTY4LCAyMjAsIAotICAgIDI0OSwgMSwgMjQ1LCAxODMsIDIyMCwgMjQ5LCAxLCAyNDAsIDExMCwgMjIwLCAyNDksIDEsIDIxMywgNCwgMjI3LCA5LCAxLCAKLSAgICAyNTQsIDc4LCAyMjcsIDksIDEsIDI1MiwgMTA3LCAyMjcsIDksIDEsIDIxOCwgNTIsIDIyNywgOSwgMSwgMjM1LCAxMzksIAotICAgIDIyNywgOSwgMSwgMjEzLCAxNTMsIDIyNywgOSwgMSwgMjM0LCAxMzgsIDIyNywgOSwgMSwgMjQ4LCAyNywgMjI3LCA5LCAxLCAKLSAgICAyMDMsIDIyNywgOSwgMSwgMjIyLCAyMDIsIDIyNywgOSwgMSwgMjIwLCAyMDYsIDIyNywgOSwgMSwgMjQ3LCAyMzIsIDIyNywgCi0gICAgOSwgMSwgMjUwLCAxNDgsIDIyNywgOSwgMSwgMjQzLCAxMTAsIDIyNywgOSwgMSwgMjQ0LCAxNjQsIDIyNywgOSwgMSwgMjI0LCAKLSAgICAyMzAsIDIyNywgOSwgMSwgMjM1LCAxMywgMjI3LCA5LCAxLCAyMzMsIDE1MiwgMjI3LCA5LCAxLCAyMzEsIDEzLCAyMjcsIDksIAotICAgIDEsIDIyOCwgMzUsIDIyNywgOSwgMSwgMjE0LCAxNCwgMjI3LCA5LCAxLCAxNTksIDIyNywgOSwgMSwgMTg2LCAyMjcsIDksIAotICAgIDEsIDYxLCAyMjcsIDksIDEsIDc0LCAyMjcsIDksIDEsIDcyLCAyMjcsIDksIDEsIDc1LCAyMjcsIDksIDEsIDY5LCAyMjcsIAotICAgIDksIDEsIDI1NCwgMjMyLCAyMjcsIDksIDEsIDI0NSwgMTY1LCAyMjcsIDksIDEsIDIyNywgNDksIDIyNywgOSwgMjEsIDIxMiwgCi0gICAgNzksIDIyNywgOSwgMjEsIDExNiwgMjI3LCA5LCAyMSwgMTA5LCAyMjcsIDksIDIxLCAxNjYsIDIyNywgOSwgMjEsIDE2MywgCi0gICAgMjI3LCA5LCAyMSwgMTgwLCAyMjcsIDksIDIxLCAxODksIDIyNywgOSwgMjEsIDE5OCwgMjI3LCA5LCAyMSwgMTk1LCAyMjcsIAotICAgIDksIDIxLCAyMDAsIDI0OSwgMTAsIDQsIDYxLCAyNDksIDEwLCA0LCA3NCwgMjQ5LCAxMCwgNCwgNzIsIDI0OSwgMTAsIDQsIAotICAgIDc1LCAyNDksIDEwLCA0LCA2OSwgMjQ5LCAxMCwgNCwgMjM1LCAxMzksIDI0OSwgMTAsIDQsIDIzNSwgNzEsIDI0OSwgMTAsIAotICAgIDQsIDE4MSwgMjQ5LCAxMCwgNCwgMjM0LCAxODgsIDI0OSwgMTAsIDQsIDIzNCwgMTAxLCAyNDksIDEwLCA0LCAyMzQsIDM3LCAKLSAgICAyNDksIDEwLCA0LCAyMzMsIDIzOCwgMjQ5LCAxMCwgNCwgMjMzLCAxNTcsIDI0OSwgMTAsIDQsIDIzMywgODIsIDI0OSwgMTAsIAotICAgIDQsIDIzMywgMTMsIDI0OSwgMTAsIDQsIDIzMiwgMjA4LCAyNDksIDEwLCA0LCAyMzIsIDE1NiwgMjQ5LCAxMCwgNCwgMTg4LCAKLSAgICAyNDksIDEwLCA0LCAyMzEsIDE1NiwgMjQ5LCAxMCwgNCwgMjMxLCA0MiwgMjQ5LCAxMCwgNCwgMjMwLCAyMzEsIDI0OSwgMTAsIAotICAgIDQsIDIzMCwgMTcyLCAyNDksIDEwLCA0LCAyMDUsIDI0OSwgMTAsIDQsIDIyOSwgMTg3LCAyNDksIDEwLCA0LCAyMjksIDY0LCAKLSAgICAyNDksIDEwLCA0LCAyMjgsIDE4NSwgMjQ5LCAxMCwgNCwgMjI4LCA5MiwgMjQ5LCAxMCwgNCwgMTkzLCAyNDksIDEwLCA0LCAKLSAgICAyMjYsIDk2LCAyNDksIDEwLCA0LCAyMjUsIDI0MCwgMjQ5LCAxMCwgNCwgMjI1LCAxNTAsIDI0OSwgMTAsIDQsIDIyNSwgMzUsIAotICAgIDI0OSwgMTAsIDQsIDIwMywgMjQ5LCAxMCwgNCwgMjI0LCAyMSwgMjQ5LCAxMCwgNCwgMjIzLCAxODgsIDI0OSwgMTAsIDQsIAotICAgIDIyMywgMTEyLCAyNDksIDEwLCA0LCAyMjMsIDUxLCAyNDksIDEwLCA0LCAyMjIsIDIwMiwgMjQ5LCAxMCwgNCwgMjIyLCAKLSAgICAxMDAsIDI0OSwgMTAsIDQsIDIyMCwgMTE3LCAyNDksIDEwLCA0LCAyMTksIDI0MiwgMjQ5LCAxMCwgNCwgMjE5LCAyNywgCi0gICAgMjQ5LCAxMCwgNCwgMjE4LCA1MiwgMjQ5LCAxMCwgNCwgMjE3LCAyMjksIDI0OSwgMTAsIDQsIDIxNywgNzEsIDI0OSwgMTAsIAotICAgIDQsIDEwOCwgMjQ5LCAxMCwgNCwgMjE2LCA4MiwgMjQ5LCAxMCwgNCwgMjE0LCA0OSwgMjQ5LCAxMCwgNCwgMjE0LCA2LCAKLSAgICAyNDksIDEwLCA0LCAyMTMsIDIzNSwgMjQ5LCAxMCwgNCwgMjEzLCAyMTQsIDI0OSwgMTAsIDQsIDIxMywgMTUzLCAyNDksIAotICAgIDEwLCA0LCAyMTMsIDE1MCwgMjQ5LCAxMCwgNCwgMjEyLCAxMDksIDI0OSwgMTAsIDQsIDIxMiwgMTYsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMSwgMjU0LCA3NiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNTEsIDIwMiwgMjM1LCAyNTMsIDI1MywgCi0gICAgMTk3LCAxLCAyNDIsIDE3NywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNDgsIDEzMywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAKLSAgICAyNDEsIDIyMiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTQsIDE0LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxMiwgOTAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjQxLCAxODAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE3LCAxNzksIDIzNSwgCi0gICAgMjUzLCAyNTMsIDE5NywgMSwgMjEyLCAyMjMsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjM0LCAyMzAsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMSwgMjMzLCAxMTcsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjMxLCAxMjksIDIzNSwgMjUzLCAyNTMsIAotICAgIDE5NywgMSwgMjI4LCA1MCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjIsIDE2NCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAKLSAgICAyNTMsIDc4LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyNiwgOTYsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIyLCAxOTMsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjI0LCAxNzksIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIzLCAyMTksIDIzNSwgCi0gICAgMjUzLCAyNTMsIDE5NywgMSwgMjIwLCAyMDAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE3LCAyNDMsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMjIyLCA5MiwgNTIsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDExNiwgMjM1LCAyNTMsIDI1MywgMTk3LCAKLSAgICA1MCwgMTA5LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxNjYsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNywgMjAwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTYsIDM4LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMjIsIDI0MCwgMjAwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMjIsIDIxNywgMTAwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTcsIDIwMSwgCi0gICAgMjE3LCAxMDAsIDIyNSwgMjUxLCAxLCAyNTQsIDc0LCAyMjUsIDI1MSwgMSwgMjUxLCAyMDUsIDIyNSwgMjUxLCAxLCAyNDMsIAotICAgIDg1LCAyMjUsIDI1MSwgMSwgMjQ4LCA3LCAyMjUsIDI1MSwgMSwgMjQxLCAyMjIsIDIyNSwgMjUxLCAxLCAyMTQsIDIxLCAKLSAgICAyMjUsIDI1MSwgMSwgMjEyLCAxMDMsIDIyNSwgMjUxLCAxLCAyNDEsIDE4MiwgMjI1LCAyNTEsIDEsIDIxNywgMTgzLCAyMjUsIAotICAgIDI1MSwgMSwgMjEyLCAyMjQsIDIyNSwgMjUxLCAxLCAyMzQsIDI1NCwgMjI1LCAyNTEsIDEsIDIzMywgMTIzLCAyMjUsIDI1MSwgCi0gICAgMSwgMjMxLCAxMjksIDIyNSwgMjUxLCAxLCAyMjgsIDUwLCAyMjUsIDI1MSwgMSwgMjIxLCA2NCwgMjI1LCAyNTEsIDEsIAotICAgIDI1NCwgMTAzLCAyMjUsIDI1MSwgMSwgMjI2LCA5NiwgMjI1LCAyNTEsIDEsIDIyMiwgMTk0LCAyMjUsIDI1MSwgMSwgMjI0LCAKLSAgICAxODQsIDIyNSwgMjUxLCAxLCAyMjMsIDkxLCAyMjUsIDI1MSwgMSwgMjIwLCAyMDAsIDIyNSwgMjUxLCAxLCAyMTcsIDI0OCwgCi0gICAgMjI1LCAyNTEsIDUwLCAxMTYsIDIyNSwgMjUxLCA1MCwgMjE3LCAyMDAsIDIyNSwgMjUxLCA1MCwgMjE2LCAzOCwgMjI1LCAKLSAgICAyNTEsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMjUsIDI1MSwgNTAsIDEwOSwgMjI1LCAyNTEsIDUwLCAxNjYsIDIyNSwgMjUxLCAKLSAgICAyMTMsIDE5NiwgMjIxLCA1NywgMjMyLCAxMTksIDEsIDYxLCAyMzIsIDExOSwgMSwgMjUzLCA3NCwgMjMyLCAxMTksIDEsIAotICAgIDI0MywgMTc3LCAyMzIsIDExOSwgMSwgMjQ5LCAzLCAyMzIsIDExOSwgMSwgNzQsIDIzMiwgMTE5LCAxLCAyMTUsIDc5LCAKLSAgICAyMzIsIDExOSwgMSwgNzIsIDIzMiwgMTE5LCAxLCAyMTMsIDEwNSwgMjMyLCAxMTksIDEsIDIzNSwgMjcsIDIzMiwgMTE5LCAKLSAgICAxLCAxNTAsIDIzMiwgMTE5LCAxLCAxODMsIDIzMiwgMTE5LCAxLCAyMDQsIDIzMiwgMTE5LCAxLCA3NSwgMjMyLCAxMTksIDEsIAotICAgIDE0OSwgMjMyLCAxMTksIDEsIDIxOSwgMTU4LCAyMzIsIDExOSwgMSwgMjE4LCA5OSwgMjMyLCAxMTksIDEsIDY5LCAyMzIsIAotICAgIDExOSwgMSwgMjQ0LCAyMzAsIDIzMiwgMTE5LCAxLCAyMjQsIDI0MCwgMjMyLCAxMTksIDEsIDE5NywgMjMyLCAxMTksIDEsIAotICAgIDIxNiwgMTE4LCAyMzIsIDExOSwgMSwgMjU0LCAzMiwgMjMyLCAxMTksIDEsIDI0NSwgMTA4LCAyMzIsIDExOSwgMSwgMjMyLCAKLSAgICAxMjEsIDIzMiwgMTE5LCAxLCAyMjgsIDE5OSwgMjMyLCAxMTksIDEsIDI1MCwgMjUyLCAyMzIsIDExOSwgMjE2LCAxODAsIAotICAgIDc3LCAyMzQsIDEyNiwgMSwgNjEsIDIzNCwgMTI2LCAzMCwgNSwgNzIsIDIzNCwgMTI2LCAzMCwgNSwgNjksIDIzNCwgMTI2LCAKLSAgICAzMCwgNSwgMTYxLCAxNDksIDIzNCwgMTI2LCAzMCwgNSwgNzQsIDIzNCwgMTI2LCAzMCwgNSwgNzUsIDIzNCwgMTI2LCAzMCwgCi0gICAgMjMzLCA0NywgNzcsIDIzNCwgMTI2LCA1LCA1MSwgMjIzLCAxMzEsIDU1LCAyMzQsIDEyNiwgNSwgMjUzLCAyNDIsIDIzNCwgCi0gICAgMTI2LCA1LCAyMTQsIDEyOCwgMjM0LCAxMjYsIDEsIDE4MSwgMjM0LCAxMjYsIDEsIDIzNCwgMTM4LCAyMzQsIDEyNiwgMSwgCi0gICAgMjQzLCAxMTAsIDIzNCwgMTI2LCAxLCAyNDIsIDIyNSwgMjM0LCAxMjYsIDEsIDI1MCwgMjE5LCAyMzQsIDEyNiwgMSwgMjUwLCAKLSAgICA5MiwgMjM0LCAxMjYsIDEsIDIzNSwgMTM5LCAyMzQsIDEyNiwgMSwgMjI4LCAyMywgMjM0LCAxMjYsIDEsIDIxNiwgMTE1LCAKLSAgICAyMzQsIDEyNiwgMSwgMjE2LCAxMDUsIDIzNCwgMTI2LCAxLCAyNDgsIDg2LCAyMzQsIDEyNiwgMSwgMjQ4LCA3MCwgMjM0LCAKLSAgICAxMjYsIDEsIDIyOCwgMTk4LCAyMzQsIDEyNiwgMSwgMjE4LCA1MiwgMjM0LCAxMjYsIDEsIDIxNywgMTYxLCAyMzQsIDEyNiwgCi0gICAgMSwgMjQ4LCAxNjQsIDIzNCwgMTI2LCAxLCAyNDcsIDIzMiwgMjM0LCAxMjYsIDEsIDIwNSwgMjM0LCAxMjYsIDEsIDE5MywgCi0gICAgMjM0LCAxMjYsIDEsIDIyNiwgMjMsIDIzNCwgMTI2LCAxLCAyNTIsIDEwNywgMjM0LCAxMjYsIDEsIDI1MSwgMTk1LCAyMzQsIAotICAgIDEyNiwgMSwgMTg4LCAyMzQsIDEyNiwgMSwgMTg2LCAyMzQsIDEyNiwgMSwgMjAzLCAyMzQsIDEyNiwgMSwgMjMzLCAxNTcsIAotICAgIDIzNCwgMTI2LCAxLCAyMTUsIDEsIDIzNCwgMTI2LCAxLCAyMjEsIDI0LCAyMzQsIDEyNiwgMSwgMjE5LCAxNTcsIDIzNCwgCi0gICAgMTI2LCAxLCAyMjIsIDIwMiwgMjM0LCAxMjYsIDEsIDIxMiwgMTA5LCAyMzQsIDEyNiwgMSwgMTU5LCAyMzQsIDEyNiwgMSwgCi0gICAgMjM0LCA1NSwgMjM0LCAxMjYsIDEsIDIxNiwgODcsIDIzNCwgMTI2LCA1LCAyNTIsIDYwLCA0OSwgMjM0LCAxMjYsIDUsIAotICAgIDI1MCwgMTU0LCAyMzQsIDEyNiwgNSwgNjIsIDU1LCAyMzQsIDEyNiwgMjE0LCAxMzMsIDIzNCwgMTI2LCAyMSwgMTE2LCAKLSAgICAyMzQsIDEyNiwgMjEsIDEwOSwgMjM0LCAxMjYsIDIxLCAxNjYsIDIzNCwgMTI2LCAyMSwgMTYzLCAyMzQsIDEyNiwgNTAsIAotICAgIDIxNywgMjAwLCAyMzQsIDEyNiwgNTAsIDIxNiwgMzgsIDIzNCwgMTI2LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjM0LCAxMjYsIAotICAgIDUwLCAxMjIsIDIxNywgMTAwLCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ3LCA3NCwgMjM0LCAxMjYsIDIyNSwgMjcsIDMsIDI0OSwgCi0gICAgMjI4LCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ5LCAyMjgsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDksIDc3LCAxMzQsIDIzNCwgCi0gICAgMTI2LCAyMjUsIDI3LCAyMzEsIDI0MywgMjM0LCAxMjYsIDIyNSwgMjcsIDIzMiwgMTcwLCAyMzQsIDEyNiwgMjI1LCAyNywgCi0gICAgMjQ4LCAxMjMsIDIzNCwgMTI2LCAyMjUsIDI3LCA1MSwgMjQ4LCAxMjMsIDIzNCwgMTI2LCAyMjUsIDI3LCAyMzIsIDIzNiwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQxLCAyMjIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzMywgMTE3LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDEsIDE4MCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjMxLCAxMjksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyNCwgMTc5LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTQsIDE0LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjAsIDIwMCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIzLCAyMTksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI1MSwgMjAyLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDI0MywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxNDIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzNCwgMjMwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjgsIDUwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzQsIDEyMiwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxOTMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMiwgMTY0LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDQsIDEyMywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjU0LCA3OCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjUzLCA3NywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQ3LCAyMzAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MiwgMTc3LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDgsIDEzMywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQyLCAyMTQsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTc5LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTIsIDg5LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDcsIDIyNywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjEyLCAyMjMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTUwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDEzMSwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgNTAsIDExNiwgNTMsIAotICAgIDIxOSwgMjE1LCAyNTMsIDIwOCwgNTAsIDI0NCwgODMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEyOCwgMjM1LCAyMzUsIAotICAgIDI1MywgODgsIDEsIDYxLCAyNTMsIDg4LCAxLCAyNTQsIDIzMiwgMjUzLCA4OCwgMSwgMjUzLCAyNDAsIDI1MywgODgsIDEsIAotICAgIDI1NCwgMTkxLCAyNTMsIDg4LCAxLCAyNTQsIDMyLCAyNTMsIDg4LCAxLCAyNTQsIDE5MiwgMjUzLCA4OCwgMSwgMjU0LCAKLSAgICAxNDgsIDI1MywgODgsIDEsIDI1NCwgMTQ0LCAyNTMsIDg4LCAxLCA3NCwgMjUzLCA4OCwgMSwgMjQ1LCAxNjUsIDI1MywgODgsIAotICAgIDEsIDc1LCAyNTMsIDg4LCAxLCAyMjcsIDQ5LCAyNTMsIDg4LCAxLCA3MiwgMjUzLCA4OCwgMSwgMjM2LCAyOCwgMjUzLCA4OCwgCi0gICAgMSwgNjksIDI1MywgODgsIDEsIDIxNSwgOTIsIDI1MywgODgsIDEsIDIzNCwgMTg4LCAyNTMsIDg4LCAxLCAyMTMsIDE1MCwgCi0gICAgMjUzLCA4OCwgMSwgMjEzLCAxMTYsIDI1MywgODgsIDEsIDIxMywgMTI1LCAyNTMsIDg4LCAxLCAyNDMsIDM4LCAyNTMsIDg4LCAKLSAgICAxLCAyNDMsIDAsIDI1MywgODgsIDEsIDI0MiwgMjEyLCAyNTMsIDg4LCAxLCAyNTAsIDEyNCwgMjUzLCA4OCwgMSwgMjM1LCAKLSAgICAxMjcsIDI1MywgODgsIDEsIDIxNywgMjI5LCAyNTMsIDg4LCAxLCAyMTcsIDE0OCwgMjUzLCA4OCwgMSwgMjQ4LCA0MSwgCi0gICAgMjUzLCA4OCwgMSwgMjQ3LCAyMjUsIDI1MywgODgsIDEsIDIxNiwgMTEyLCAyNTMsIDg4LCAxLCAyMjYsIDk2LCAyNTMsIDg4LCAKLSAgICAxLCAyNDQsIDEyMywgMjUzLCA4OCwgMSwgMjUxLCAyNTEsIDI1MywgODgsIDEsIDI1MSwgMTkyLCAyNTMsIDg4LCAxLCAyMjksIAotICAgIDE0OCwgMjUzLCA4OCwgMSwgMjI5LCA3MCwgMjUzLCA4OCwgMSwgMjI5LCA3MSwgMjUzLCA4OCwgMSwgMjI5LCAxODcsIDI1MywgCi0gICAgODgsIDEsIDIyOCwgMTcsIDI1MywgODgsIDEsIDIyOCwgMTk3LCAyNTMsIDg4LCAxLCAyMzEsIDE1NiwgMjUzLCA4OCwgMSwgCi0gICAgMjQxLCAxMDIsIDI1MywgODgsIDEsIDIxMiwgMTU5LCAyNTMsIDg4LCAxLCAyMTMsIDM4LCAyNTMsIDg4LCAxLCAyMTQsIAotICAgIDIzMiwgMjUzLCA4OCwgMSwgMjI0LCAyMSwgMjUzLCA4OCwgMSwgMjMzLCA4MiwgMjUzLCA4OCwgMSwgMjIyLCAxMDAsIDI1MywgCi0gICAgODgsIDEsIDIxMiwgODcsIDI1MywgODgsIDEsIDIyMCwgMjQzLCAyNTMsIDg4LCAxLCAyMTIsIDY3LCAyNTMsIDg4LCAxLCAKLSAgICAyMjAsIDEyNCwgMjUzLCA4OCwgMSwgMjE5LCAxMjksIDI1MywgODgsIDEsIDI0MSwgMjIyLCAyNTMsIDg4LCAyNTQsIDE4MSwgCi0gICAgNzcsIDIxNywgMzIsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIDIyNSwgMjYsIDMsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIAotICAgIDIyNSwgMjYsIDIzMywgMTA4LCAxMTcsIDE3NiwgMTEwLCAxMjIsIDYyLCAyMjUsIDI2LCAyMzMsIDEwOCwgMTIyLCA2MiwgCi0gICAgMTEwLCAxMTcsIDE3NiwgMjI1LCAyNiwgMjMzLCAxMDgsIDExNywgMjIzLCAxMjksIDExMCwgMTIyLCAyMjMsIDEzMSwgMjI1LCAKLSAgICAyNiwgMjMzLCAxMDgsIDEyMiwgMjIzLCAxMzEsIDExMCwgMTE3LCAyMjMsIDEyOSwgMjI1LCAyNiwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCAxLCAyNTQsIDc2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI1MSwgMjAyLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIAotICAgIDI0MiwgMTc3LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI0OCwgMTMzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI0MSwgCi0gICAgMjIyLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNCwgMTQsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjEyLCA5MCwgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTI2LCAxLCAyNDEsIDE4MCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTcsIDE3OSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCAxLCAyMTIsIDIyMywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMzQsIDIzMCwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCAxLCAyMzMsIDExNywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMzEsIDEyOSwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAKLSAgICAyMjgsIDUwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMiwgMTY0LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI1MywgNzgsIAotICAgIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjI2LCA5NiwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjIsIDE5MywgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTI2LCAxLCAyMjQsIDE3OSwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjMsIDIxOSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCAxLCAyMjAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTcsIDI0MywgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCA1MCwgMTE2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxMDksIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDE2NiwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTYzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAyMTcsIDIwMCwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCA1MCwgMjE2LCAzOCwgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCA1MCwgMTIyLCAyMTcsIDEwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNTQsIDc2LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDEsIDI1MSwgMjAyLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MiwgMTc3LCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxOTgsIDEsIDI0OCwgMTMzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MSwgMjIyLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIAotICAgIDIxNCwgMTMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjEyLCA5MCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNDEsIDE4MCwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTcsIDE3OSwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTIsIDIyMywgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTk4LCAxLCAyMzQsIDIzMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMzMsIDExNywgMjM1LCAyMTUsIAotICAgIDIyNiwgMTk4LCAxLCAyMzEsIDEyOCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMjgsIDUwLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxOTgsIDEsIDIyMiwgMTY0LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIyNiwgOTYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgCi0gICAgMjIyLCAxOTMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjIwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjE3LCAKLSAgICAyNDMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDExNiwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTA5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDUwLCAxNjYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDE2MywgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgCi0gICAgMjE3LCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDIxNiwgMzgsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEyMiwgCi0gICAgMjQwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEyMiwgMjE3LCAxMDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDYxLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCA2MSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDgsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDcyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCA3MiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgNzQsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDc1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDk5LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMjcsIDk5LCAKLSAgICA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE4NSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxODUsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI1NCwgMTQ3LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0NywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjU0LCAxMjEsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTIxLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0MiwgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTYwLCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNTQsIDE2MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNDYsIDUzLCAxODUsIDEsIDIyNywgMTYsIAotICAgIDI0NCwgMjM2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDQsIDIzNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCA4MywgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCA4MywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMjksIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI1NCwgMTI5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0MCwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgCi0gICAgMjU0LCAxNDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgOTgsIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgOTgsIDUzLCAKLSAgICAxODUsIDEsIDIyNywgMTYsIDI1NCwgODYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgODYsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDI1NCwgMTM5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDExOSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAKLSAgICAxMTcsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMzIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTM3LCA1MywgCi0gICAgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEzNywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA5MCwgNTMsIDE4NSwgMSwgMjEzLCAKLSAgICAyOCwgMjQ1LCA5MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAxMDUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgCi0gICAgMTA1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDc3LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIDc3LCA1MywgMTg1LCAKLSAgICAxLCAyMTMsIDI4LCAyNTQsIDI0LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDk2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAKLSAgICAyNTQsIDEzNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA3MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA0MSwgNTMsIAotICAgIDE4NSwgMSwgMjI3LCAxNiwgMjQwLCAxMDYsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgMTcxLCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNDUsIDE3MSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAyMTUsIDUzLCAxODUsIDEsIDIxMywgMjgsIAotICAgIDI1MywgMjE1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMzUsIDE3OSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjM1LCAxNzksIAotICAgIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgMjUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgMjUsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI1MywgMjExLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDIxMSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjU0LCAxMzUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgMTUyLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEzMywgCi0gICAgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAxNDYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgMTQ2LCA1MywgMTg1LCAxLCAKLSAgICAyMjcsIDE2LCAyNDUsIDQwLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIDQwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIAotICAgIDEyMiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCAxMjIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTMwLCA1MywgCi0gICAgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEzMCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA4LCA1MywgMTg1LCAxLCAyMjcsIAotICAgIDE2LCAyNTIsIDQ1LCAyMjMsIDM4LCAyMSwgMTE2LCAyMjMsIDM4LCAyMSwgMTA5LCAyMjMsIDM4LCAyMSwgMTY2LCAyMjMsIAotICAgIDM4LCAyMSwgMTYzLCAyMjMsIDM4LCAyMSwgMTgwLCAyMjMsIDM4LCAyMSwgMTg5LCAyMjMsIDM4LCAyMSwgMTk4LCAyMjMsIAotICAgIDM4LCAyMSwgMTk1LCAyMjMsIDM4LCAyMSwgMjAwLCAyMjMsIDM4LCA1MCwgMjE3LCAyMDAsIDIyMywgMzgsIDUwLCAyMTYsIAotICAgIDM4LCAyMjMsIDM4LCA1MCwgMjE3LCAxMTUsIDIyMywgMzgsIDUwLCAyNDMsIDI0MCwgMjIzLCAzOCwgNTAsIDI0NCwgODMsIAotICAgIDIyMywgMzgsIDUwLCAyMjAsIDM5LCAyMjMsIDM4LCA1MCwgMjIxLCAzNywgMjIzLCAzOCwgNTAsIDI0NSwgMTQxLCAyMjMsIAotICAgIDM4LCA1MCwgMjI5LCAyNiwgMjIzLCAzOCwgNTAsIDEyMiwgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAxMTcsIDI0MCwgMjAwLCAKLSAgICAyMjMsIDM4LCA1MCwgMTMzLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDI0MywgMjM3LCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIAotICAgIDI0NCwgNTAsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjIwLCA1MywgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyMjEsIDQzLCAKLSAgICAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDI0NSwgMTUwLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDIyOSwgMzEsIDI0MCwgCi0gICAgMjAwLCAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAKLSAgICAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDEyMSwgMjIzLCAzOCwgMjQzLCAyMjgsIDExNywgMjE3LCAxMTksIDExMiwgCi0gICAgNSwgMjUwLCAxODcsIDExMiwgNSwgMjUzLCAyNDIsIDExMiwgNSwgMjE0LCAxMjgsIDExMiwgNSwgMjM1LCAxMDQsIDExMiwgCi0gICAgNSwgMjE1LCAxMzIsIDExMiwgMSwgNjEsIDExMiwgMSwgMjU0LCAyMzIsIDExMiwgMSwgNzIsIDExMiwgMSwgMjM2LCAyOCwgCi0gICAgMTEyLCAxLCA2OSwgMTEyLCAxLCAyMTUsIDkyLCAxMTIsIDEsIDE2MSwgMTQ5LCAxMTIsIDEsIDE2MSwgMjIzLCA4MiwgMTEyLCAKLSAgICAxLCAxNjEsIDE1MCwgMTEyLCAxLCAxNjEsIDIzMiwgMjE0LCAxMTIsIDEsIDc0LCAxMTIsIDEsIDI1NCwgMTA4LCAxMTIsIDEsIAotICAgIDc1LCAxMTIsIDEsIDI1MywgMTA4LCAxMTIsIDEsIDE4MSwgMTEyLCAxLCAyMzQsIDEzOCwgMTEyLCAxLCAyNDMsIDExMCwgCi0gICAgMTEyLCAxLCAyNDIsIDIyNSwgMTEyLCAxLCAyMjksIDE1OSwgMTEyLCAxLCAyNTAsIDIxOSwgMTEyLCAxLCAyNTAsIDkyLCAKLSAgICAxMTIsIDEsIDIzNSwgMTM5LCAxMTIsIDEsIDIzNSwgMTE1LCAxMTIsIDEsIDIyOCwgMjMsIDExMiwgMSwgMjE2LCAxMTUsIAotICAgIDExMiwgMSwgMjE2LCAxMDUsIDExMiwgMSwgMjQ4LCA4NiwgMTEyLCAxLCAyNDgsIDcwLCAxMTIsIDEsIDIyOCwgMTk4LCAKLSAgICAxMTIsIDEsIDIxOCwgNTIsIDExMiwgMSwgMjE3LCAxNjEsIDExMiwgMSwgMjQ4LCAxNjQsIDExMiwgMSwgMjQ3LCAyMzIsIAotICAgIDExMiwgMSwgMjA1LCAxMTIsIDEsIDE5MywgMTEyLCAxLCAyMjYsIDIzLCAxMTIsIDEsIDI1MiwgMTA3LCAxMTIsIDEsIDI1MSwgCi0gICAgMTk1LCAxMTIsIDEsIDE4OCwgMTEyLCAxLCAxODYsIDExMiwgMSwgMjAzLCAxMTIsIDEsIDIzMywgMTU3LCAxMTIsIDEsIAotICAgIDIxNSwgMSwgMTEyLCAxLCAyMjEsIDI0LCAxMTIsIDEsIDIxOSwgMTU3LCAxMTIsIDEsIDIyMiwgMjAyLCAxMTIsIDEsIDE1OSwgCi0gICAgMTEyLCAxLCAyMzIsIDIxMywgMTEyLCAxLCA1MywgMTc4LCAyMzIsIDIxMiwgMTEyLCAxLCA1MywgMTc4LCAyMjMsIDgxLCAKLSAgICAxMTIsIDEsIDUzLCAxNzgsIDIyOCwgMTg5LCAxMTIsIDMwLCA1LCAyNTQsIDIzMiwgMTEyLCAzMCwgNSwgMjUxLCAxOTMsIAotICAgIDI1NCwgMjMyLCAxMTIsIDMwLCA1LCA3MiwgMTEyLCAzMCwgNSwgMjM2LCAyOCwgMTEyLCAzMCwgNSwgNjksIDExMiwgMzAsIAotICAgIDUsIDIxNSwgOTIsIDExMiwgMzAsIDUsIDE2MSwgMTQ5LCAxMTIsIDMwLCA1LCAxNjEsIDIyMywgODIsIDExMiwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCAxMTIsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxMTIsIDMwLCA1LCA3NCwgMTEyLCAzMCwgNSwgMjU0LCAKLSAgICAxMDgsIDExMiwgMzAsIDUsIDc1LCAxMTIsIDMwLCA1LCAyNTMsIDEwOCwgMTEyLCAyMTQsIDEzMywgMTEyLCAyNDgsIDEyMywgCi0gICAgMTEyLCA1MSwgMjQ4LCAxMjMsIDExMiwgMjI1LCAyNywgMjQ3LCA3NCwgMTEyLCAyMjUsIDI3LCA1MSwgMjQ3LCA3NCwgMTEyLCAKLSAgICAyMjUsIDI3LCAyMzIsIDI0MiwgMTEyLCAyMjUsIDI3LCAyNDksIDc3LCAxMzQsIDExMiwgMjI1LCAyNywgMjMyLCAxNzAsIAotICAgIDExMiwgNTAsIDExNiwgMTEyLCA1MCwgMTA5LCAxMTIsIDUwLCAxNjYsIDExMiwgNTAsIDE2MywgMTEyLCA1MCwgMTgwLCAKLSAgICAxMTIsIDUwLCAxODksIDExMiwgNTAsIDE5OCwgMTEyLCA1MCwgMTk1LCAxMTIsIDUwLCAyMDAsIDExMiwgNTAsIDIxNywgCi0gICAgMjAwLCAxMTIsIDUwLCAyMTYsIDM4LCAxMTIsIDUwLCAyMTcsIDExNSwgMTEyLCA1MCwgMjQzLCAyNDAsIDExMiwgNTAsIAotICAgIDI0NCwgODMsIDExMiwgNTAsIDIyMCwgMzksIDExMiwgNTAsIDIyMSwgMzcsIDExMiwgNTAsIDI0NSwgMTQxLCAxMTIsIDUwLCAKLSAgICAyMjksIDI2LCAxMTIsIDUwLCAxMjIsIDI0MCwgMjAwLCAxMTIsIDUwLCAxMjIsIDIxNywgMTAwLCAxMTIsIDIxLCAyMTIsIAotICAgIDc5LCAxMTIsIDIxLCAxMTYsIDExMiwgMjEsIDEwOSwgMTEyLCAyMSwgMTY2LCAxMTIsIDIxLCAxNjMsIDExMiwgMjEsIDE4MCwgCi0gICAgMTEyLCAyMSwgMTg5LCAxMTIsIDIxLCAxOTgsIDExMiwgMjEsIDE5NSwgMTEyLCAyMSwgMjAwLCAyMDgsIDUsIDI1MCwgMTg3LCAKLSAgICAyMDgsIDUsIDI1MywgMjQyLCAyMDgsIDUsIDIxNCwgMTI4LCAyMDgsIDEsIDYxLCAyMDgsIDEsIDI1NCwgMjMyLCAyMDgsIDEsIAotICAgIDcyLCAyMDgsIDEsIDIzNiwgMjgsIDIwOCwgMSwgNjksIDIwOCwgMSwgMjE1LCA5MiwgMjA4LCAxLCA3NCwgMjA4LCAxLCAKLSAgICAyNTQsIDEwOCwgMjA4LCAxLCA3NSwgMjA4LCAxLCAyNTMsIDEwOCwgMjA4LCAxLCAxODEsIDIwOCwgMSwgMjM0LCAxMzgsIAotICAgIDIwOCwgMSwgMjQzLCAxMTAsIDIwOCwgMSwgMjQyLCAyMjUsIDIwOCwgMSwgMjI5LCAxNTksIDIwOCwgMSwgMjUwLCAyMTksIAotICAgIDIwOCwgMSwgMjUwLCA5MiwgMjA4LCAxLCAyMzUsIDEzOSwgMjA4LCAxLCAyMzUsIDExNSwgMjA4LCAxLCAyMjgsIDIzLCAKLSAgICAyMDgsIDEsIDIxNiwgMTE1LCAyMDgsIDEsIDIxNiwgMTA1LCAyMDgsIDEsIDI0OCwgODYsIDIwOCwgMSwgMjQ4LCA3NSwgCi0gICAgMjA4LCAxLCAyNDgsIDcwLCAyMDgsIDEsIDIyMywgMTkyLCAyMDgsIDEsIDIyOCwgMTk4LCAyMDgsIDEsIDIxOCwgNTIsIAotICAgIDIwOCwgMSwgMjE3LCAxNjEsIDIwOCwgMSwgMjQ4LCAxNjQsIDIwOCwgMSwgMjQ3LCAyMzIsIDIwOCwgMSwgMjA1LCAyMDgsIAotICAgIDEsIDE5MywgMjA4LCAxLCAyMjYsIDIzLCAyMDgsIDEsIDI1MiwgMTA3LCAyMDgsIDEsIDI1MSwgMTk1LCAyMDgsIDEsIDE4OCwgCi0gICAgMjA4LCAxLCAxODYsIDIwOCwgMSwgMjAzLCAyMDgsIDEsIDIzMywgMTU3LCAyMDgsIDEsIDIxNSwgMSwgMjA4LCAxLCAyMjEsIAotICAgIDI0LCAyMDgsIDEsIDIxOSwgMTU3LCAyMDgsIDEsIDIyMiwgMjAyLCAyMDgsIDEsIDE1OSwgMjA4LCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDIwOCwgMzAsIDUsIDcyLCAyMDgsIDMwLCA1LCAyMzYsIDI4LCAyMDgsIDMwLCA1LCA2OSwgMjA4LCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMjA4LCAzMCwgNSwgNzQsIDIwOCwgMzAsIDUsIDI1NCwgMTA4LCAyMDgsIDMwLCA1LCA3NSwgMjA4LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDIwOCwgNSwgMjE0LCAxMzMsIDIwOCwgNSwgMjI4LCA2MCwgMjA4LCAyNTQsIDE4MSwgNTIsIDIwOCwgCi0gICAgMjQ1LCA4MCwgNTIsIDIwOCwgNTAsIDUyLCAyMDgsIDIyMiwgOTIsIDc3LCAyMDgsIDUxLCAyMjIsIDkyLCA3NywgMjA4LCAKLSAgICAyNDgsIDEyMywgMjA4LCA1MSwgMjQ4LCAxMjMsIDE1LCA1LCA2MSwgMTUsIDUsIDExOCwgMjksIDYxLCAxNSwgNSwgMTE4LCAKLSAgICAyOSwgMjUyLCA5NCwgMTUsIDUsIDExOCwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMTE4LCAyOSwgMTU5LCAxNSwgCi0gICAgNSwgMTE4LCAyOSwgMjM2LCAzMCwgMTUsIDUsIDExOCwgMjksIDIzMywgMTM5LCAyNDIsIDc1LCAxNSwgNSwgMTE4LCAyOSwgCi0gICAgMjMwLCAxMzEsIDE1LCA1LCAxMTgsIDI5LCAyMjIsIDE5MCwgMTUsIDUsIDI1NCwgMjM0LCAxNSwgNSwgMjU0LCAxODUsIDE1LCAKLSAgICA1LCAyNTQsIDE4NiwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyNDYsIDIyLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjU0LCAxODYsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDI1NCwgMTg2LCAyOSwgMTU5LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjU0LCAKLSAgICAxODYsIDI5LCAyMzYsIDQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMjAsIAotICAgIDIyOCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyNTQsIDE4NiwgMjQyLCA3NSwgCi0gICAgMTUsIDUsIDI1NCwgMTgzLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyNDMsIAotICAgIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDI1NCwgCi0gICAgMTg0LCAyOSwgMjIxLCAyMiwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjE4LCAyMiwgMTUsIDUsIDI1NCwgMTYwLCAxNSwgNSwgCi0gICAgMjU0LCA5NCwgMTUsIDUsIDI1NCwgOTUsIDI5LCAyNDUsIDUwLCAxNSwgNSwgMjU0LCA5NSwgMjksIDIyMCwgMTkwLCA5NCwgCi0gICAgMjQyLCAxNjYsIDE1LCA1LCAyNTQsIDg2LCAxNSwgNSwgMjU0LCA4NywgMjksIDI1NCwgODYsIDE1LCA1LCAyNTQsIDg3LCAKLSAgICAyOSwgMjQ3LCAxNjgsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjQyLCAxNjYsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMTU5LCAxNSwgCi0gICAgNSwgMjU0LCA4NywgMjksIDIzNSwgMywgMTUsIDUsIDI1NCwgODcsIDI5LCAyMzQsIDEwMSwgMTUsIDUsIDI1NCwgODcsIDI5LCAKLSAgICAyMjAsIDI0MywgMTUsIDUsIDI1NCwgODcsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDI1NCwgODMsIDE1LCA1LCAyNTQsIDc2LCAKLSAgICAxNSwgNSwgMjU0LCA0MSwgMTUsIDUsIDI1NCwgNDIsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI1NCwgMzIsIDE1LCA1LCAyNTQsIAotICAgIDMzLCAxMTAsIDI1NCwgMzIsIDE1LCA1LCAyNTQsIDMzLCAxMzMsIDIxNywgMzgsIDE1LCA1LCAyNTQsIDMzLCA5NCwgMjMwLCAKLSAgICAzNSwgMjI3LCAzMCwgMjU0LCAzMywgOTQsIDIzMCwgMzQsIDE1LCA1LCAyNTQsIDMzLCA5NCwgMjMwLCAzNSwgMjE5LCAxNjUsIAotICAgIDE1LCA1LCAyNTQsIDUsIDE1LCA1LCAyNTMsIDIzNSwgMTUsIDUsIDI1MywgMjA1LCAxNSwgNSwgMjUzLCAyMDYsIDI5LCAKLSAgICAyMzMsIDIxNywgMTUsIDUsIDI1MywgMTc5LCAxNSwgNSwgMjUzLCAxNTEsIDE1LCA1LCAyNTMsIDE0NiwgMTUsIDUsIDI1MywgCi0gICAgMTQ3LCAyMTIsIDMzLCAyMTcsIDE5MiwgMTUsIDUsIDI1MywgMTQ3LCAyMzUsIDcsIDIxNywgMTkyLCAxNSwgNSwgMjUzLCAKLSAgICAxNDcsIDExMCwgMjUzLCAxNDcsIDIxNiwgNzgsIDExMCwgMjE2LCA3OCwgMjE2LCA3OCwgMTEwLCAyMTYsIDc4LCAyMjYsIAotICAgIDE0OSwgMTUsIDUsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ2LCAxNSwgNSwgMjUzLCAxNDcsIDExMCwgCi0gICAgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDI0OSwgNjUsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ2LCAKLSAgICAxNSwgNSwgMjUzLCAxNDQsIDE1LCA1LCAyNTMsIDE0MSwgMTUsIDUsIDI1MiwgMTA3LCAxNSwgNSwgMjUyLCA5NCwgMTUsIDUsIAotICAgIDI1MiwgODksIDE1LCA1LCAyNTIsIDg2LCAxNSwgNSwgMjUyLCA4MCwgMTUsIDUsIDI1MiwgODEsIDExMCwgMjUyLCA4MCwgCi0gICAgMTUsIDUsIDI1MiwgNzksIDE1LCA1LCAxMzQsIDE1LCA1LCAyNTIsIDU5LCAxNSwgNSwgMjUxLCAxODQsIDE1LCA1LCAyNTEsIAotICAgIDE4NSwgMjksIDYxLCAxNSwgNSwgMjUxLCAxODUsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjUxLCAxODUsIDI5LCAyMzYsIDMxLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjUxLCA1NCwgMTUsIDUsIDI1MSwgNTUsIDExMCwgMjUxLCA1NSwgMjU0LCAxODUsIDE1LCA1LCAKLSAgICAyNTEsIDU1LCAxMTAsIDI1MSwgNTUsIDIxNSwgMTYwLCAxNSwgNSwgMjUxLCA1NSwgMjQ5LCA2NSwgMjUxLCA1NCwgMTUsIDUsIAotICAgIDI1MSwgMzgsIDE1LCA1LCAyNTEsIDM5LCAxMTAsIDI1MSwgMzgsIDE1LCA1LCAyNTEsIDI3LCAxNSwgNSwgMjUxLCAyNiwgCi0gICAgMTUsIDUsIDI0OCwgMTY0LCAxNSwgNSwgMjQ4LCAxNTUsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDExOCwgOTQsIAotICAgIDIzMSwgMjEwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNTQsIDQxLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgCi0gICAgNzUsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MywgMTExLCA5NCwgMjMxLCAKLSAgICAyMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIAotICAgIDI5LCAyNDIsIDE3MywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQyLCA4NCwgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMTU5LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzUsIDE3NywgMTUsIDUsIDI0OCwgCi0gICAgMTU2LCAyMzQsIDc1LCAyOSwgMjM1LCAxNzgsIDk0LCAyMzIsIDE1NiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgCi0gICAgMjM0LCAyNDcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzMywgMTU3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgCi0gICAgNzUsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMyLCAxNTcsIDk0LCAyMzEsIDIwOSwgCi0gICAgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIAotICAgIDIyOSwgMTg3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMjYsIDE1MCwgOTQsIDIyNiwgMTQ5LCAxNSwgNSwgCi0gICAgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMjAsIDExNywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjE4LCAyMiwgCi0gICAgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjE1LCAxOTgsIDk0LCAyNDIsIDE3MywgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyNDgsIDEzMiwgMTUsIDUsIDI0OCwgMTExLCAxNSwgNSwgMjQ4LCAxMTAsIAotICAgIDE1LCA1LCAyNDgsIDEwOSwgMTUsIDUsIDI0NywgMjExLCAxNSwgNSwgMjQ3LCAxOTQsIDE1LCA1LCAyNDcsIDE2OSwgMTUsIAotICAgIDUsIDI0NywgMTcwLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDcsIDE2OCwgMTUsIDUsIDI0NywgMTU4LCAxNSwgNSwgMjQ3LCAKLSAgICAxNTksIDIzNCwgMjEzLCAxMTEsIDI0MiwgNzYsIDI0NywgMTM5LCAxNSwgNSwgMjQ3LCAxMzksIDE1LCA1LCAyNDYsIDMzLCAKLSAgICAxNSwgNSwgMjQ2LCAzNCwgMTEwLCAyNDYsIDMzLCAxNSwgNSwgMjQ2LCAzNCwgMjQyLCA3NSwgMTUsIDUsIDI0NiwgMzQsIAotICAgIDIyMCwgMjI1LCAxNSwgNSwgMjQ2LCAzMSwgMTUsIDUsIDI0NiwgMzIsIDI5LCAyNDUsIDM3LCAxNSwgNSwgMjQ2LCAzMCwgCi0gICAgMTUsIDUsIDI0NiwgMjksIDE1LCA1LCAyNDYsIDI4LCAxNSwgNSwgMjQ2LCAyNywgMTUsIDUsIDI0NiwgMjMsIDE1LCA1LCAKLSAgICAyNDYsIDIxLCAxNSwgNSwgMjQ2LCAyMiwgMjQyLCA3NSwgMTUsIDUsIDI0NiwgMjIsIDI0MiwgNzYsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyNDYsIDIwLCAxNSwgNSwgMjQ2LCAxMywgMTUsIDUsIDc0LCAxNSwgNSwgMTkxLCAyOSwgMjI2LCAxNDksIDE1LCA1LCAKLSAgICAxOTEsIDExMCwgMTkxLCAyMjgsIDUxLCAxMTAsIDIyOCwgNTAsIDE1LCA1LCAyNDUsIDE5MCwgMTUsIDUsIDI0NSwgMTkxLCAKLSAgICAyOSwgMTE4LCA5NCwgMjQyLCAzMCwgOTQsIDI0OCwgMTY0LCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCAyNDMsIDcyLCAxNSwgNSwgCi0gICAgMjQ1LCAxOTEsIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDI0NSwgMTkxLCAKLSAgICAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDY5LCAxNSwgNSwgMjQ1LCAxNjcsIDE1LCA1LCAyNDUsIDE1NywgCi0gICAgMTUsIDUsIDI0NSwgMTMxLCAxNSwgNSwgMjQ1LCAxMDgsIDE1LCA1LCAyNDUsIDEwOSwgMjksIDI0MywgODAsIDE1LCA1LCAKLSAgICAyNDUsIDEwOSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjQ1LCAxMDksIDI5LCAyMzEsIDE1NiwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyNDksIDY1LCAyNDUsIDEwOCwgMTUsIDUsIDI0NSwgMTA5LCAyMjcsIDMwLCAyNDUsIDEwOCwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyMTksIDE2NSwgMTUsIDUsIDI0NSwgNTIsIDE1LCA1LCAyNDUsIDUwLCAxNSwgNSwgMjQ1LCAzNywgMTUsIAotICAgIDUsIDI0NCwgMjM0LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCA2MSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMTE4LCA5NCwgMjMzLCAKLSAgICAxMjgsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDExOCwgOTQsIDIzMywgMTI5LCAyOSwgMjMzLCAxMjgsIDE1LCA1LCAyNDQsIAotICAgIDIzNSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0NiwgCi0gICAgMjIsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0NiwgMjIsIDI0MiwgNzYsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIAotICAgIDIzNSwgMjksIDE1OSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQyLCAzMCwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzNCwgMjEzLCAyMTksIDE2NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjMzLCAyMzYsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzMywgMTU3LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzMsIDEyOSwgMjksIDIzMywgMTI4LCAxNSwgNSwgMjQ0LCAyMzUsIAotICAgIDI5LCAyMzMsIDEzLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjE1LCAKLSAgICAxOTcsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjQzLCAxMTAsIDE1LCA1LCAyNDMsIDExMSwgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDI0MywgMTA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAyNDgsIDE2NSwgOTQsIAotICAgIDE1OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTE4LCA5NCwgMTU5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAKLSAgICAyMzYsIDMwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTQsIDE4NCwgMjE3LCAxOTMsIDk0LCAyMTgsIDQxLCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTMsIDE0NiwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjUzLCAxNDUsIDk0LCAyNDMsIDk0LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyNTIsIDYwLCA5NCwgMjAzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTEsIDI3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNTEsIDI4LCA5NCwgMjAzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDgsIDE2NCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjQ3LCAyMTEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NywgMTcwLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDI0NiwgMzEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgMTMxLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIAotICAgIDEzMiwgOTQsIDIzMywgMTU3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIDEwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjQ1LCAxMDksIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MywgNzIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDIsIDE4OCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAxODksIDk0LCA2MSwgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQyLCAxNzQsIDk0LCAyMTksIDI3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDMwLCA5NCwgMjMyLCAKLSAgICAxNTcsIDk0LCAyNDUsIDM3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDEyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIAotICAgIDEzLCA5NCwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MSwgMTY2LCA5NCwgMjMzLCAxMywgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQwLCAyMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDIzNSwgMTY0LCA5NCwgMjQwLCAyMTMsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM0LCAKLSAgICAyNDcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzQsIDk4LCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyMzQsIDk5LCA5NCwgMjMzLCAxMjgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMywgMjM3LCA5NCwgCi0gICAgMjU0LCAzMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMSwgMTU3LCAKLSAgICA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMSwgNDIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyOCwgNTAsIAotICAgIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTkzLCAxNSwgCi0gICAgNSwgMjQzLCAxMDksIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjIyLCAxNDcsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjAsIDI0NCwgOTQsIDIxNiwgNjIsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDIyMCwgMjEwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMTgsIDI0NCwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjE4LCAyMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgNjksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIxNSwgMTg4LCAxNSwgCi0gICAgNSwgMjQzLCAxMDksIDI5LCAyMTUsIDE4OSwgOTQsIDI0NiwgMzMsIDE1LCA1LCAyNDMsIDEwOSwgMTEwLCAyNDMsIDEwOCwgCi0gICAgMTUsIDUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMDQsIDI0OSwgNjUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMDEsIDE1LCAKLSAgICA1LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMjQzLCA5NCwgMTUsIDUsIAotICAgIDI0MywgOTUsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyNDMsIDkzLCAKLSAgICAxNSwgNSwgMjQzLCA5MSwgMTUsIDUsIDI0MywgODIsIDE1LCA1LCAyNDMsIDgwLCAxNSwgNSwgMjQzLCA4MSwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyNDMsIDgxLCAxMTAsIDI0MywgODAsIDE1LCA1LCAyNDMsIDgxLCAyNDksIDY1LCAyNDMsIDgwLCAxNSwgNSwgCi0gICAgMjQzLCA3MiwgMTUsIDUsIDI0MywgNzEsIDE1LCA1LCAyNDMsIDY2LCAxNSwgNSwgMjQzLCAxMiwgMTUsIDUsIDI0MywgMTMsIAotICAgIDI5LCAyMzMsIDIxNywgMTUsIDUsIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDI5LCA3NCwgMTUsIDUsIDI0MiwgMTkxLCAKLSAgICAyOSwgNjksIDE1LCA1LCAyNDIsIDE5MSwgMjQ5LCA2NSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE4OCwgMTUsIDUsIDI0MiwgCi0gICAgMTg5LCAxMTAsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAxODksIDI0OSwgNjUsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAxODUsIAotICAgIDE1LCA1LCAyNDIsIDE3MywgMTUsIDUsIDI0MiwgMTc0LCAyNDIsIDc1LCAxNSwgNSwgMjQyLCAxNzEsIDE1LCA1LCAyNDIsIAotICAgIDE3MiwgMjksIDExOCwgOTQsIDIzNiwgMzAsIDE1LCA1LCAyNDIsIDE3MiwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjQyLCAxNzIsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjQyLCAxNzIsIDI5LCAyMzIsIDE1NywgOTQsIDIzNiwgMzAsIDE1LCA1LCAKLSAgICAyNDIsIDE3MiwgMjksIDE5MywgMTUsIDUsIDI0MiwgMTY4LCAxNSwgNSwgMjQyLCAxNjYsIDE1LCA1LCAyNDIsIDE2NywgCi0gICAgMjQ5LCA2NSwgMjQyLCAxNjYsIDE1LCA1LCAyNDIsIDE2NywgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDIsIDE2NywgMjksIAotICAgIDIxOCwgMjIsIDE1LCA1LCAyNDIsIDE2NywgMjE3LCAxOTIsIDE1LCA1LCAyNDIsIDkyLCAxNSwgNSwgMjQyLCA5MywgMjQ5LCAKLSAgICA2NSwgMjQyLCA5MiwgMTUsIDUsIDI0MiwgOTAsIDE1LCA1LCAyNDIsIDkxLCAyOSwgMjM0LCAyNDcsIDE1LCA1LCAyNDIsIAotICAgIDkxLCAyOSwgMjM0LCAyNDgsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjQyLCA5MSwgMjksIDIyOCwgNTAsIDE1LCAKLSAgICA1LCAyNDIsIDkxLCAyOSwgMjIyLCAxODAsIDk0LCAyMTYsIDc3LCAxNSwgNSwgMjQyLCA5MSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDI0MiwgODQsIDE1LCA1LCAyNDIsIDg1LCAyOSwgMTE4LCA5NCwgMjMzLCAyMTcsIDE1LCA1LCAyNDIsIDg1LCAyOSwgMjMzLCAKLSAgICAyMTcsIDE1LCA1LCAyNDIsIDg1LCAxMTAsIDI0MiwgODUsIDIzMiwgMTQ5LCAxNSwgNSwgMjQyLCA3OSwgMTUsIDUsIDI0MiwgCi0gICAgNzcsIDE1LCA1LCAyNDIsIDc4LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDIsIDY5LCAxNSwgNSwgMjQyLCA2OCwgMTUsIDUsIAotICAgIDI0MiwgNjUsIDE1LCA1LCAyNDIsIDY0LCAxNSwgNSwgMTU5LCAxNSwgNSwgMjQyLCAzMCwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyNDIsIDMwLCAyNDIsIDc1LCAxNSwgNSwgMjQyLCAxMiwgMTUsIDUsIDI0MSwgMTY1LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAKLSAgICAyNTMsIDE0NiwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI1MiwgOTQsIAotICAgIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI0NywgMTM5LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNDMsIDEwMSwgMTUsIDUsIDI0MSwgCi0gICAgMTY2LCAyOSwgMjM0LCA5MCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjI4LCA1MCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjIwLCAKLSAgICAyNDMsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDY5LCAxNSwgNSwgMjQwLCAyMTIsIDE1LCA1LCAyNDAsIDIwOCwgMTUsIDUsIAotICAgIDI0MCwgMjA5LCAyOSwgMjU0LCAzMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgMjQyLCAxMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgCi0gICAgMjM0LCAyMTIsIDE1LCA1LCAyNDAsIDIwOSwgMjksIDIzMiwgMjI2LCAxNSwgNSwgMjQwLCAyMDksIDI5LCAyMTUsIDE4OCwgCi0gICAgMTUsIDUsIDI0MCwgMjA1LCAxNSwgNSwgNzIsIDE1LCA1LCAyNDAsIDE0NiwgNjEsIDE1LCA1LCAyNDAsIDEwOCwgMTUsIDUsIAotICAgIDIzNiwgNTgsIDE1LCA1LCAyMzYsIDU5LCAxMTAsIDIzNiwgNTksIDI1MSwgMjcsIDE1LCA1LCAyMzYsIDU5LCAxMTAsIDIzNiwgCi0gICAgNTksIDIxOSwgMTY1LCAxNSwgNSwgMjM2LCAzMywgMTUsIDUsIDIzNiwgMzAsIDE1LCA1LCAyMzYsIDMxLCAyNDcsIDE5NCwgCi0gICAgMTUsIDUsIDIzNiwgMzEsIDIyMywgMTg4LCAxNSwgNSwgMjM2LCAzMSwgMTEwLCAyMzYsIDMxLCAyMjAsIDE5NCwgMTEwLCAKLSAgICAyMjAsIDE5NCwgMjE1LCAxODksIDExMCwgMjE1LCAxODgsIDE1LCA1LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjM2LCAKLSAgICAyMiwgMTUsIDUsIDIzNiwgMjMsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzNiwgMjEsIDE1LCA1LCAyMzYsIAotICAgIDExLCAxNSwgNSwgMjM2LCAxMiwgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzYsIDEyLCAyNDksIDY1LCAyMzYsIDExLCAxNSwgNSwgCi0gICAgMjM2LCAxMiwgMjI3LCAzMCwgMjM2LCAxMSwgMTUsIDUsIDIzNiwgMTIsIDIxOSwgMTY1LCAxNSwgNSwgMjM2LCA0LCAxNSwgCi0gICAgNSwgMjM1LCAyNTEsIDE1LCA1LCAyMzUsIDE3NywgMTUsIDUsIDIzNSwgMTYzLCAxNSwgNSwgMTgxLCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDYxLCAxNSwgNSwgMjM1LCAxNywgMjksIDI1NCwgMTYwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI1NCwgMTYxLCAKLSAgICA5NCwgMjMzLCAyMzYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUyLCA5NCwgCi0gICAgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjM1LCAxNywgMjksIDEzNCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyNTEsIDE4NCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDUsIDUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0NSwgMzcsIDE1LCAKLSAgICA1LCAyMzUsIDE3LCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQzLCA5NCwgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDI0MywgNzMsIDk0LCAyMjEsIDIzLCA5NCwgNjEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgMjQyLCAxNzMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCAxNjcsIDk0LCAyMjIsIDE0NywgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCAyNDIsIDE2NywgMjQ5LCA2NSwgMjQyLCAxNjYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCA5MiwgMTUsIDUsIAotICAgIDIzNSwgMTcsIDI5LCAyNDIsIDY4LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNiwgMzAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjM2LCAxMSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDEwMSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDk4LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMywgMTMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMyLCAxNTYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTcsIDk0LCAKLSAgICAyNDYsIDMzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgMTU3LCA5NCwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMxLCAxNTcsIDk0LCAyMTcsIDIyOSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIzMSwgNDMsIDk0LCAyMjgsIDQ1LCAxNSwgNSwgMjM1LCAxNywgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIyOCwgNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjI1LCAyNDAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIzLCA1MSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMjIsIDIwMiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjIsIDE0NywgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyMjEsIDI0LCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMjEwLCAKLSAgICAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMTUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMTA4LCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDIxOCwgMjUyLCAxNSwgNSwgMjM1LCAxNywgMjksIDIxOCwgMSwgMTUsIDUsIDIzNSwgMTcsIDI5LCA2OSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyMTUsIDE2MywgMjksIDE5MywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMTIsIDM3LCAxNSwgNSwgMjM1LCAxNSwgMTUsIDUsIDIzNSwgMTYsIDI0OSwgNjUsIDIzNSwgMTUsIDE1LCA1LCAyMzUsIDgsIAotICAgIDE1LCA1LCAyMzUsIDUsIDE1LCA1LCAyMzUsIDMsIDE1LCA1LCAyMzUsIDIsIDE1LCA1LCAyMzUsIDAsIDE1LCA1LCAyMzUsIAotICAgIDEsIDExMCwgMjM1LCAwLCAxNSwgNSwgMjM0LCAyNDcsIDE1LCA1LCAyMzQsIDI0OCwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIAotICAgIDE1LCA1LCAyMzQsIDI0MywgMTUsIDUsIDIzNCwgMjQ0LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzNCwgMjQ0LCAyNDksIDY1LCAKLSAgICAyMzQsIDI0MywgMTUsIDUsIDIzNCwgMjQxLCAxNSwgNSwgMjM0LCAyNDAsIDE1LCA1LCAyMzQsIDIxMiwgMTUsIDUsIDIzNCwgCi0gICAgMjEzLCAyMzMsIDE0MSwgMjksIDExMSwgMTEwLCAyMzMsIDE0MSwgMjksIDY5LCAxNSwgNSwgMjM0LCAyMTMsIDExMCwgMjM0LCAKLSAgICAyMTMsIDIzMywgMTQxLCAyOSwgMTExLCAxMTAsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzQsIDE2MywgMTUsIDUsIAotICAgIDIzNCwgMTAxLCAxNSwgNSwgMjM0LCAxMDIsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjM0LCAxMDIsIDI5LCA2OSwgMTUsIDUsIAotICAgIDIzNCwgMTAyLCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzQsIDk4LCAxNSwgNSwgMjM0LCA5MCwgMTUsIDUsIDIzNCwgNzcsIAotICAgIDE1LCA1LCAyMzQsIDc2LCAxNSwgNSwgMjM0LCA3NCwgMTUsIDUsIDIzNCwgNzUsIDExMCwgMjM0LCA3NCwgMTUsIDUsIDIzMywgCi0gICAgMjM4LCAxNSwgNSwgMjMzLCAyMzksIDExMCwgMjQxLCAxNjYsIDI5LCAyNTMsIDE0NSwgMjMzLCAyMzksIDExMCwgMjQxLCAKLSAgICAxNjYsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDIzMywgMjM2LCAxNSwgNSwgMjMzLCAyMzQsIDE1LCA1LCAyMzMsIDIzNSwgCi0gICAgMjE0LCAyNDQsIDE3LCAxNSwgNSwgMjMzLCAyMzMsIDE1LCA1LCAyMzMsIDIzMCwgMTUsIDUsIDIzMywgMjMxLCAyNDIsIDc1LCAKLSAgICAxNSwgNSwgMjMzLCAyMjksIDE1LCA1LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMjE4LCAyMjcsIDMwLCAyMzMsIDIxNywgMTUsIAotICAgIDUsIDIzMywgMjEyLCAxNSwgNSwgMjMzLCAxOTQsIDE1LCA1LCAyMzMsIDE1NywgMTUsIDUsIDIzMywgMTQwLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCA2MSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjQ4LCAxNjUsIDk0LCAxNTksIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDI0MywgNzIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDIzMywgMTI4LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTQsIDg2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjMzLCAKLSAgICAxNDEsIDI5LCAyNTMsIDE0NywgMjEyLCAzMywgMjE3LCAxOTIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1MiwgOTQsIDE1LCAKLSAgICA1LCAyMzMsIDE0MSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDgsIDExMSwgMTUsIDUsIDIzMywgCi0gICAgMTQxLCAyOSwgMjQ1LCAxMDgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MywgMTEwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAKLSAgICAyNDMsIDcyLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDg1LCA5NCwgCi0gICAgMjQyLCA4NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTU5LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDEyLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyNDEsIDE2NiwgMjksIDIyOCwgNTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMzEsIDI0MiwgCi0gICAgNzUsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTIsIDk0LCAxNTksIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTIsIDk0LCAyMzIsIDE1NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM0LCAKLSAgICAxMDEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNCwgOTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMywgMjM2LCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMzMsIDIzMCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMzLCAyMzEsIDk0LCAyNDEsIDE2NiwgOTQsIAotICAgIDYxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMyLCAyMjYsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzIsIDE0NCwgMTUsIDUsIDIzMywgMTQxLCAKLSAgICAyOSwgMjMxLCAxNTYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMSwgMTU3LCA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyMzMsIAotICAgIDE0MSwgMjksIDIzMCwgMTMxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIzMywgMTQxLCAyOSwgCi0gICAgMjIwLCAyNDQsIDk0LCAyMTgsIDI0NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxOTAsIDk0LCAyNDIsIDE2NywgOTQsIAotICAgIDI0NSwgNTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyMCwgMTkwLCA5NCwgMjQyLCAxNjcsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMjAsIDE0OCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxNDksIDk0LCAyMjAsIDE0OCwgMTUsIAotICAgIDUsIDIzMywgMTQxLCAyOSwgMjE4LCAyNDQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxOCwgMzMsIDE1LCA1LCAyMzMsIDE0MSwgCi0gICAgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNywgMjMwLCA5NCwgMTE4LCA5NCwgMjE5LCAyOCwgOTQsIAotICAgIDIwNSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExMSwgOTQsIDYxLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxOTgsIDk0LCAKLSAgICAyNTMsIDE0NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNSwgMTAwLCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDIxOSwgMTY1LCAxNSwgNSwgMjMzLCAxMzgsIDE1LCA1LCAyMzMsIDEzOSwgMjksIDIyMCwgCi0gICAgMjQzLCAxNSwgNSwgMjMzLCAxMzksIDI5LCAyMjAsIDI0NCwgOTQsIDIxOCwgMjQ0LCAxNSwgNSwgMjMzLCAxMzksIDI0MiwgCi0gICAgNzUsIDE1LCA1LCAyMzMsIDEzOSwgMjQyLCA3NiwgMTEwLCAyMzMsIDEzOSwgMjQyLCA3NiwgMjIwLCAyNDMsIDE1LCA1LCAKLSAgICAyMzMsIDEzNSwgMTUsIDUsIDIzMywgMTI4LCAxNSwgNSwgMjMzLCAxMjksIDI5LCAyMzMsIDEyOCwgMTUsIDUsIDIzMywgCi0gICAgMTI2LCAxNSwgNSwgMjMzLCAxMjcsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMTI3LCAyOSwgMjMzLCAyMTgsIDk0LCAKLSAgICAyMjMsIDUxLCAxNSwgNSwgMjMzLCAxMywgMTUsIDUsIDIzMiwgMjU0LCAxNSwgNSwgMjMyLCAyNDUsIDE1LCA1LCAyMzIsIAotICAgIDIyNiwgMTUsIDUsIDIzMiwgMTU2LCAxNSwgNSwgMjMyLCAxNTcsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjMyLCAxNTQsIDE1LCAKLSAgICA1LCAyMzIsIDE1NSwgMjksIDI1NCwgODYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjksIDI0NSwgMzcsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI0NSwgMzgsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAKLSAgICAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjQxLCAxNjYsIDI5LCAyNTIsIDk0LCAxNSwgNSwgCi0gICAgMjMyLCAxNTUsIDI5LCAyMzYsIDExLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzUsIDUsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIzNSwgMywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjM1LCA0LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIzNCwgMTAxLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzMsIDE1OCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDIzMiwgCi0gICAgMTU1LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIyOCwgOTIsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIyMCwgMTE4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIyMCwgMTAwLCA5NCwgMjUxLCA1NCwgMTUsIAotICAgIDUsIDIzMiwgMTU1LCAyOSwgMjE2LCA3NywgMTUsIDUsIDIzMiwgMTU1LCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyNDksIDY1LCAyMzIsIDE1NCwgMTUsIDUsIDIzMiwgMTU1LCAyMjcsIDMwLCAyMzIsIDE1NCwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyMTksIDE2NSwgMTUsIDUsIDIzMiwgMTU1LCAyMjAsIDIyNSwgMTUsIDUsIDIzMiwgMTUzLCAxNSwgNSwgMjMyLCAxNDksIAotICAgIDE1LCA1LCAyMzIsIDE1MCwgMTEwLCAyMzIsIDE0OSwgMTUsIDUsIDIzMiwgMTUwLCAyMjcsIDMwLCAyMzIsIDE0OSwgMTUsIAotICAgIDUsIDIzMiwgMTUwLCAyMjAsIDIyNSwgMTUsIDUsIDIzMiwgMTQ3LCAxNSwgNSwgMjMyLCAxNDQsIDE1LCA1LCAyMzIsIDE0MiwgCi0gICAgMTUsIDUsIDIzMiwgMTQzLCAxMTAsIDIzMiwgMTQyLCAxNSwgNSwgMjMyLCAxNDMsIDExMCwgMjMyLCAxNDMsIDI0MywgNzMsIAotICAgIDExMCwgMjQzLCA3MiwgMTUsIDUsIDE4OCwgMTUsIDUsIDIzMiwgNDMsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjMyLCA0MywgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDIzMiwgNDIsIDE1LCA1LCAyMzIsIDE1LCAxNSwgNSwgMjMxLCAyMjksIDE1LCA1LCAyMzEsIAotICAgIDIxMCwgMTUsIDUsIDIzMSwgMjA5LCAxNSwgNSwgMjMxLCAxNTYsIDE1LCA1LCAyMzEsIDExMiwgMTUsIDUsIDIzMSwgNDIsIAotICAgIDE1LCA1LCAyMzEsIDEsIDE1LCA1LCAyMzAsIDE3MiwgMTUsIDUsIDIzMCwgMTczLCAxMTAsIDIzMCwgMTcyLCAxNSwgNSwgCi0gICAgMjMwLCAxNjMsIDE1LCA1LCAyMzAsIDE2NCwgMjQyLCA3NSwgMTUsIDUsIDIzMCwgMTQ4LCAxNSwgNSwgMjMwLCAxMzQsIDE1LCAKLSAgICA1LCAyMzAsIDEzMSwgMTUsIDUsIDIzMCwgMTMyLCAyOSwgNjEsIDE1LCA1LCAyMzAsIDEzMiwgMjksIDIzMywgMjE3LCAxNSwgCi0gICAgNSwgMjMwLCAxMzIsIDI5LCAyMTIsIDEwOSwgMTUsIDUsIDIzMCwgMTMyLCAxMTAsIDIzMCwgMTMxLCAxNSwgNSwgMjMwLCAKLSAgICAxMzIsIDExMCwgMjMwLCAxMzIsIDI5LCAxMTgsIDk0LCAyMDUsIDE1LCA1LCAyMzAsIDEzMiwgMjQ5LCA2NSwgMjMwLCAxMzEsIAotICAgIDE1LCA1LCAyMzAsIDEyOSwgMTUsIDUsIDIzMCwgMTMwLCAyOSwgNjEsIDE1LCA1LCAyMzAsIDEzMCwgMjksIDExOCwgOTQsIAotICAgIDI0NywgMjExLCAxNSwgNSwgMjMwLCAxMzAsIDI5LCAyNDcsIDIxMSwgMTUsIDUsIDIzMCwgMTMwLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjA1LCAxNSwgNSwgMjMwLCA0NSwgMTUsIDUsIDIzMCwgMzQsIDE1LCA1LCAyMzAsIDM1LCAyMzUsIDE5MCwgMTUsIDUsIAotICAgIDIzMCwgMzUsIDI5LCAyMjAsIDE1MSwgMjE3LCAxOTIsIDE1LCA1LCAyMzAsIDM1LCAyMjcsIDMwLCAyMzAsIDM0LCAxNSwgNSwgCi0gICAgMjMwLCAzMywgMTUsIDUsIDIzMCwgMjgsIDIyOCwgMzYsIDE1LCA1LCAyMzAsIDI3LCAxNSwgNSwgMjMwLCAyNiwgMTUsIDUsIAotICAgIDIyOSwgMTg3LCAxNSwgNSwgMjI5LCAxODgsIDI5LCA2MSwgMTUsIDUsIDIyOSwgMTg4LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAKLSAgICAyMjksIDE4OCwgMjIwLCAyMjUsIDE1LCA1LCAyMjksIDY0LCAxNSwgNSwgMjI5LCA2NSwgMjksIDc0LCAxNSwgNSwgMjI5LCAKLSAgICA2MywgMTUsIDUsIDIyOSwgMzQsIDE1LCA1LCAyMjksIDM1LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIAotICAgIDM1LCAyOSwgMjQzLCA3MywgOTQsIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAzMiwgMTUsIDUsIDIyOSwgMzMsIAotICAgIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjI5LCAzMywgMjksIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDI1MywgMTQ3LCAKLSAgICA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMzEsIDE1NywgCi0gICAgOTQsIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAzMywgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjI5LCAzMywgMjksIAotICAgIDIyOCwgNTAsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDQsIDk0LCAKLSAgICAxMTgsIDI1NCwgMzIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDQsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIAotICAgIDI5LCAyMjAsIDI0NCwgOTQsIDI1MywgMTQ3LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjE1LCAxOTgsIAotICAgIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIyOSwgMjEsIDE1LCA1LCAyMjgsIAotICAgIDkyLCAxNSwgNSwgMjI4LCA2NSwgMTUsIDUsIDIyOCwgNTAsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDI0MywgCi0gICAgNzIsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDIzMSwgMjEwLCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAKLSAgICAyMjIsIDE3OSwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjIyLCAxODAsIDExMCwgMjI4LCA1MSwgMjMzLCAxMzksIAotICAgIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyMjgsIDUxLCAKLSAgICAyMTcsIDE5MiwgMTUsIDUsIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDIyOCwgNTEsIDI0OSwgNjUsIDIyOCwgNTAsIAotICAgIDE1LCA1LCAyMjgsIDUxLCAyNDksIDY1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMTEwLCAyMzMsIDEzOCwgMTUsIDUsIDIyOCwgCi0gICAgNDUsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDI1MywgMTQxLCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAKLSAgICAyNTEsIDE4NCwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjQ2LCAyOSwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgCi0gICAgMTg0LCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjM1LCAzLCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzMsIDE1NywgCi0gICAgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIAotICAgIDIyMCwgOTcsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjI4LCA0NiwgMjM0LCA3NSwgCi0gICAgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjI4LCA0NiwgMjM0LCA3NSwgMjksIDI1MSwgMTg1LCA2OSwgMTUsIDUsIDE5MywgMTUsIAotICAgIDUsIDIyNiwgMjA0LCAxNSwgNSwgMjI2LCAxNzQsIDE1LCA1LCAyMjYsIDE0OSwgMTUsIDUsIDIyNiwgMzcsIDE1LCA1LCAKLSAgICAyMjUsIDI0MCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgNjEsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDI1NCwgMTg1LCAxNSwgNSwgCi0gICAgMjI1LCAyNDEsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjUxLCA1NCwgMTUsIDUsIDIyNSwgMjQxLCAKLSAgICAyOSwgNzQsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDcyLCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyNDAsIDEwOCwgMTUsIDUsIAotICAgIDIyNSwgMjQxLCAyOSwgNjksIDE1LCA1LCAyMjUsIDI0MSwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjI1LCAyNDEsIDI0OSwgCi0gICAgNjUsIDIyNSwgMjQwLCAxNSwgNSwgMjI1LCAxODUsIDE1LCA1LCAyMjUsIDE4NiwgMjksIDIzNCwgMjQzLCAxNSwgNSwgMjI1LCAKLSAgICAxODYsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIyNSwgMTg2LCAyOSwgMjEyLCAxMDksIDE1LCA1LCAyMjUsIDE4NiwgMjI3LCAKLSAgICAzMCwgMjI1LCAxODUsIDE1LCA1LCAyMDMsIDE1LCA1LCAyMjQsIDcyLCAxNSwgNSwgMjIzLCAxODgsIDE1LCA1LCAyMjMsIAotICAgIDUxLCAxNSwgNSwgMjIyLCAyMDIsIDE1LCA1LCAyMjIsIDE5MSwgMjI4LCAzNiwgMTUsIDUsIDIyMiwgMTkwLCAxNSwgNSwgCi0gICAgMjIyLCAxOTEsIDI5LCA2MSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjQ2LCAzMywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjQ2LCAKLSAgICAzMSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMTU5LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDIyMiwgCi0gICAgMTkxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAKLSAgICAyMzEsIDQyLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMjIsIDE3OSwgMTUsIAotICAgIDUsIDIyMiwgMTkxLCAyOSwgMjIwLCAyMTAsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxOCwgNDEsIDE1LCA1LCAyMjIsIDE5MSwgCi0gICAgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDE5NCwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAKLSAgICAxNjcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTIxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIAotICAgIDIyMiwgMTkxLCAxMTAsIDIyMiwgMTkwLCAxNSwgNSwgMjIyLCAxOTEsIDI0MiwgNzUsIDE1LCA1LCAyMjIsIDE3OSwgMTUsIAotICAgIDUsIDIyMiwgMTgwLCAyMzMsIDE0MSwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjIyLCAxNTUsIDE1LCA1LCAyMjIsIDE0NywgCi0gICAgMTUsIDUsIDIyMSwgMjQsIDE1LCA1LCAyMjEsIDIyLCAxNSwgNSwgMjIxLCAyMywgMjksIDYxLCAxNSwgNSwgMjIxLCAyMywgCi0gICAgMjksIDI1MiwgOTQsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjQyLCAxNjYsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjI5LCAxODcsIAotICAgIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjIwLCAxNDgsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjE2LCA2MiwgMTUsIDUsIDIyMSwgCi0gICAgMjMsIDI5LCA2OSwgMTUsIDUsIDIyMSwgMjMsIDI5LCAxMTEsIDk0LCA2MSwgMTUsIDUsIDIyMSwgMjEsIDE1LCA1LCAyMjEsIAotICAgIDE5LCAxNSwgNSwgMjIxLCAxLCAxNSwgNSwgMjIwLCAyNDMsIDE1LCA1LCAyMjAsIDI0NCwgMjQwLCAyMTIsIDE1LCA1LCAKLSAgICAyMjAsIDI0NCwgMTEwLCAyMjAsIDI0NCwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgCi0gICAgMTUsIDUsIDIyMCwgMjQ0LCAxMTAsIDIyMCwgMjQ0LCAyMTgsIDQyLCAxMTAsIDIxOCwgNDIsIDI0MywgNzMsIDExMCwgMjQzLCAKLSAgICA3MiwgMTUsIDUsIDIyMCwgMjM2LCAxNSwgNSwgMjIwLCAyMzEsIDE1LCA1LCAyMjAsIDIyOCwgMTUsIDUsIDIyMCwgMjI3LCAKLSAgICAxNSwgNSwgMjIwLCAyMjQsIDE1LCA1LCAyMjAsIDIxMCwgMTUsIDUsIDIyMCwgMjExLCAyOSwgNjEsIDE1LCA1LCAyMjAsIAotICAgIDIxMSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMjAsIDIwNCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgNjEsIDE1LCA1LCAyMjAsIAotICAgIDIwNSwgMjksIDI1MiwgODAsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI1MSwgMzgsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI0NywgCi0gICAgMTU4LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzYsIDMwLCAxNSwgNSwgCi0gICAgMjIwLCAyMDUsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzMsIDIxMiwgMTUsIDUsIAotICAgIDIyMCwgMjA1LCAyOSwgMjMyLCAxNDQsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzMCwgMTYzLCAxNSwgNSwgMjIwLCAyMDUsIAotICAgIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDIyMCwgMTk4LCAxNSwgNSwgMjIwLCAxOTMsIDE1LCA1LCAyMjAsIDE5NCwgMjE3LCAKLSAgICAxOTIsIDE1LCA1LCAyMjAsIDE5NCwgMTEwLCAyMjAsIDE5NCwgMjUxLCAyOCwgMTEwLCAyNTEsIDI3LCAxNSwgNSwgMjIwLCAKLSAgICAxODksIDE1LCA1LCAyMjAsIDE1MCwgMTUsIDUsIDIyMCwgMTUxLCAxMTAsIDIzNSwgMTkxLCAyMjAsIDE1MCwgMTUsIDUsIAotICAgIDIyMCwgMTQ4LCAxNSwgNSwgMjIwLCAxNDcsIDE1LCA1LCAyMjAsIDExNywgMTUsIDUsIDIyMCwgMTE4LCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjIwLCAxMDgsIDE1LCA1LCAyMjAsIDEwNiwgMTUsIDUsIDIyMCwgMTA3LCAxMTAsIDIyMCwgMTA3LCAyMjAsIDE0OCwgCi0gICAgMTUsIDUsIDIyMCwgOTksIDE1LCA1LCAyMjAsIDk3LCAxNSwgNSwgMjE5LCAyNywgMTUsIDUsIDIxOSwgMjgsIDExMCwgMjE5LCAKLSAgICAyNywgMTUsIDUsIDIxOCwgMjU1LCAxNSwgNSwgMjE4LCAyNTQsIDE1LCA1LCAyMTgsIDI1MiwgMTUsIDUsIDIxOCwgMjQ0LCAKLSAgICAxNSwgNSwgMjE4LCAyNDMsIDE1LCA1LCAyMTgsIDIxNywgMTUsIDUsIDIxOCwgMjE2LCAxNSwgNSwgMjE4LCA1MiwgMTUsIDUsIAotICAgIDIxOCwgNTMsIDI1MywgMTMyLCAxNSwgNSwgMjE4LCA1MywgMjksIDI0MSwgMTY1LCAxNSwgNSwgMjE4LCA1MywgMjksIDIzMSwgCi0gICAgNDIsIDE1LCA1LCAyMTgsIDUzLCAyNDIsIDc1LCAxNSwgNSwgMjE4LCA0MSwgMTUsIDUsIDIxOCwgNDIsIDExMCwgMjE4LCAKLSAgICA0MiwgMjI5LCA2NSwgMTEwLCAyMjksIDY1LCAyNDcsIDE0MCwgMTEwLCAyNDcsIDEzOSwgMTUsIDUsIDIxOCwgNDIsIDIxOSwgCi0gICAgMTY1LCAxNSwgNSwgMjE4LCAzMywgMTUsIDUsIDEyNiwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMTI2LCAyOSwgMjQyLCA4NCwgCi0gICAgMTUsIDUsIDEyNiwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMTI2LCAyOSwgMjIwLCAxNTAsIDE1LCA1LCAxMjYsIDI5LCAyMTYsIAotICAgIDc3LCAxNSwgNSwgMTI2LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMTgsIDIyLCAxNSwgNSwgMjE4LCAxLCAxNSwgNSwgMjE3LCAKLSAgICAyMjksIDE1LCA1LCAyMTcsIDIzMCwgMjQyLCA3NSwgMTUsIDUsIDIxNywgNzEsIDE1LCA1LCAyMTcsIDcyLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDIxNywgNDQsIDE1LCA1LCAyMTcsIDI1LCAxNSwgNSwgMjE3LCAyNiwgMjksIDIxOCwgMjIsIDE1LCA1LCAyMTcsIAotICAgIDI2LCAxMTAsIDIxNywgMjUsIDE1LCA1LCAyMTcsIDI2LCAxMTAsIDIxNywgMjYsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAKLSAgICAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyMTYsIDgyLCAxNSwgNSwgMjE2LCA3NywgMTUsIDUsIDIxNiwgNzUsIAotICAgIDE1LCA1LCAyMTYsIDcyLCAxNSwgNSwgMjE2LCA2MiwgMTUsIDUsIDIxNiwgNjMsIDExMCwgMjE2LCA2MywgMjEyLCAxMTAsIAotICAgIDExMCwgMjEyLCAxMDksIDE1LCA1LCA2OSwgMTUsIDUsIDExMSwgMjQyLCA4NCwgMTUsIDUsIDExMSwgMTExLCA2OSwgMTUsIAotICAgIDUsIDExMSwgMTEwLCAxMTEsIDIyNiwgMjE0LCAxMTAsIDIyNiwgMjE0LCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAKLSAgICAxMTEsIDExMCwgMTExLCAyMTgsIDIxOCwgMTEwLCAyMTgsIDIxNywgMTUsIDUsIDExMSwgMTEwLCAxMTEsIDExMSwgMjIzLCAKLSAgICAyMDIsIDExMCwgMTExLCAyMjMsIDIwMSwgMTUsIDUsIDIxNSwgMTk3LCAxNSwgNSwgMjE1LCAxOTQsIDE1LCA1LCAyMTUsIAotICAgIDE4OCwgMTUsIDUsIDIxNSwgMTg5LCAyMzMsIDIxMiwgMTUsIDUsIDIxNSwgMTg5LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg5LCAyOSwgMjMxLCA0MiwgMTUsIDUsIDIxNSwgMTg5LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyMTUsIAotICAgIDE4OSwgMjksIDExMSwgOTQsIDExMSwgOTQsIDExMSwgMjQyLCA3NSwgMTUsIDUsIDIxNSwgMTg5LCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjE1LCAxODksIDIyMCwgMjI1LCAxNSwgNSwgMjE1LCAxODksIDIyMCwgMjI2LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg0LCAxNSwgNSwgMjE1LCAxNjcsIDE1LCA1LCAyMTUsIDE2OCwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAKLSAgICAyMzEsIDE1NywgOTQsIDI0OCwgMTY0LCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAyMjEsIDIyLCAxNSwgNSwgMjE1LCAxNjgsIAotICAgIDI5LCA2OSwgMTUsIDUsIDIxNSwgMTY2LCAxNSwgNSwgMjE1LCAxNjIsIDE1LCA1LCAyMTUsIDE2MywgMjksIDIzNCwgMjEyLCAKLSAgICAxNSwgNSwgMjE1LCAxNjMsIDI5LCAxOTMsIDE1LCA1LCAyMTUsIDE2MCwgMTUsIDUsIDIxNSwgMTYxLCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjE1LCAxMjEsIDE1LCA1LCAyMTUsIDEyMiwgMjQ5LCA2NSwgMjE1LCAxMjEsIDE1LCA1LCAyMTUsIDEyMiwgMjIwLCAKLSAgICAyMjUsIDE1LCA1LCAyMTUsIDExOSwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMTE4LCA5NCwgMTU5LCAxNSwgNSwgMjE1LCAxMjAsIAotICAgIDI5LCAxMTgsIDk0LCAyMDUsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDI1NCwgODYsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDE1OSwgCi0gICAgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjI4LCA1MCwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMTUsIAotICAgIDEyMCwgMjksIDIxNSwgMTk4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDIxNSwgMTk4LCA5NCwgMjUxLCAKLSAgICAxODQsIDE1LCA1LCAyMTUsIDExOCwgMTUsIDUsIDIxNSwgMTE1LCAxNSwgNSwgMjE1LCAxMTQsIDE1LCA1LCAyMTUsIDExMCwgCi0gICAgMTUsIDUsIDIxNSwgMTExLCAyOSwgNjEsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI1MywgMTQxLCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAxMzQsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0NiwgMjMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0MywgMTEwLCAxNSwgCi0gICAgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDIxNSwgMTExLCAyOSwgMjQzLCA3MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQyLCA5MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgCi0gICAgMTU5LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzYsIDExLCAxNSwgNSwgCi0gICAgMjE1LCAxMTEsIDI5LCAyMzUsIDE2MywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjM0LCAxMDEsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzEsIDEsIDE1LCA1LCAyMTUsIDExMSwgMjksIDE5MywgMTUsIAotICAgIDUsIDIxNSwgMTExLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIyMCwgMTA2LCAxNSwgNSwgMjE1LCAKLSAgICAxMTEsIDI5LCAyMTYsIDgyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAxMTEsIDk0LCAyNDIsIDg0LCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjE1LCAxMDgsIDE1LCA1LCAyMTUsIDEwOCwgMTUsIDUsIDIxNSwgCi0gICAgMTA5LCAyOSwgNjksIDE1LCA1LCAyMTUsIDEwMCwgMTUsIDUsIDIxNSwgMTAxLCAyOSwgNjEsIDE1LCA1LCAyMTUsIDEwMSwgCi0gICAgMjksIDIzMywgMjM4LCAxNSwgNSwgMjE1LCAxMDEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIxNSwgMTAxLCAyOSwgMjE4LCAKLSAgICAyMiwgMTUsIDUsIDIxNSwgOTYsIDE1LCA1LCAyMTUsIDk5LCAxNSwgNSwgMjE1LCA5NywgMTUsIDUsIDIxNSwgOTMsIDE1LCAKLSAgICA1LCAyMTUsIDgyLCAxNSwgNSwgMjE1LCA4MywgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjE1LCA4MSwgMTUsIDUsIDIxMiwgCi0gICAgMTA5LCAxNSwgNSwgMjEyLCAxMTAsIDIxNywgMTkyLCAxNSwgNSwgMjEyLCAxMTAsIDkxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAKLSAgICAyMTIsIDEwNiwgMTUsIDUsIDIxMiwgOTksIDE1LCA1LCAyMTIsIDg2LCAxNSwgNSwgMjEyLCAzNywgMTUsIDUsIDIxMiwgMzgsIAotICAgIDExMCwgMjEyLCAzNywgMTUsIDUsIDIxMiwgMzYsIDE1LCA1LCAyMTIsIDM0LCAxNSwgNSwgMjEyLCAzNSwgMjM1LCA3LCAKLSAgICAyMTcsIDE5MiwgMTUsIDUsIDIxMiwgMjksIDE1LCA1LCAyMTIsIDIxLCAxNSwgNSwgMjEyLCA4LCAxNSwgNSwgMjEyLCA2LCAKLSAgICAxNSwgNSwgMjEyLCA3LCAyOSwgNjEsIDE1LCA1LCAyMTIsIDUsIDE1LCA1LCAyMTIsIDQsIDE1LCAxMjgsIDUsIDExNywgCi0gICAgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDEzMywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNTMsIDE0NiwgMTUsIAotICAgIDEyOCwgNSwgMjQ0LCA1MCwgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAKLSAgICAyMjEsIDQzLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAKLSAgICAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTMzLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI0NywgMTM5LCAxNSwgCi0gICAgMTI4LCA1LCAyNDQsIDUwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIAotICAgIDIyMSwgNDMsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDIyOSwgMzEsIAotICAgIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgNjksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDY5LCAxNSwgMTI4LCA1LCAKLSAgICAyMjAsIDUzLCA2OSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgNjksIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCA2OSwgMTUsIDEyOCwgCi0gICAgNSwgMjI5LCAzMSwgNjksIDE1LCAxMjgsIDUsIDEyMiwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMTE3LCAyNDMsIDE0LCAxNSwgCi0gICAgMTI4LCA1LCAxMzMsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAKLSAgICAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyNDMsIDE0LCAxNSwgCi0gICAgMTI4LCA1LCAyNDUsIDE1MCwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMTIyLCAKLSAgICAyNDMsIDExLCAxNSwgMTI4LCA1LCAxMTcsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDEzMywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgCi0gICAgMjQzLCAyMzcsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDExNywgMjIxLCAxLCAKLSAgICAxNSwgMTI4LCA1LCAxMzMsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMTMzLCAyMjEsIDIsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgCi0gICAgNSwgMjQzLCAyMzcsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIxLCAxLCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAKLSAgICAyMjEsIDEsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDIyMSwgMSwgMTUsIAotICAgIDEyOCwgNSwgMjI5LCAzMSwgMjIxLCAxLCAxNSwgMTI4LCA1LCAxMjIsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAxMTcsIDIyMCwgCi0gICAgMjUyLCAxNSwgMTI4LCA1LCAxMzMsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAxMzMsIDIyMCwgMjUzLCAyMTQsIDI0NCwgMTcsIAotICAgIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMjAsIDI1MiwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIwLCAyNTIsIDE1LCAxMjgsIAotICAgIDUsIDIyMSwgMiwgMjksIDI0MywgOTUsIDk0LCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjIxLCAyLCAyOSwgMjQzLCA5NSwgCi0gICAgOTQsIDIzMSwgMSwgMTUsIDEyOCwgNSwgMTIyLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMTcsIDI1MSwgMjQsIDE1LCAxMjgsIAotICAgIDUsIDEzMywgMjUxLCAyNCwgMTUsIDEyOCwgNSwgMTMzLCAyNTEsIDI1LCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIDUsIDI0MywgCi0gICAgMjM3LCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMzMsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgMjQ1LCAzOSwgMTUsIDEyOCwgNSwgMTMzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDI0NSwgMzYsIDE1LCAxMjgsIAotICAgIDUsIDI0MywgMjM3LCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ2LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NCwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjMyLCAKLSAgICAyNDcsIDYxLCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NywgMjUzLCA3NCwgMTUsIAotICAgIDEyOCwgNSwgMjIwLCA1MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyNTMsIDE0MywgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzYsIDMsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCA1LCAKLSAgICA2MSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDUsIDI1MywgNzQsIDE1LCAxMjgsIDUsIAotICAgIDI0NSwgMTUwLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIxNSwgOTUsIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDIxNSwgOTQsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAxOSwgMTUsIAotICAgIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDE4LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzNiwgMTcsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAyMCwgCi0gICAgNjEsIDE1LCAxMjgsIDUsIDExNywgMjUzLCAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAxMzMsIDI1MywgMTQ3LCAyMTcsIAotICAgIDE5MiwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI1MywgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjUzLCAKLSAgICAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNTMsIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDEyMiwgCi0gICAgMjUyLCA2OSwgMTUsIDEyOCwgNSwgMTE3LCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAxMzMsIDI1MiwgNjksIDE1LCAxMjgsIDUsIAotICAgIDI0MywgMjM3LCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjUyLCA3MCwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCAKLSAgICA1LCAyNDQsIDUwLCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTIsIDcwLCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIAotICAgIDUsIDIyOSwgNDEsIDE1LCAxMjgsIDUsIDIyOSwgNDIsIDE1LCAxMjgsIDUsIDEyMiwgMjQ1LCAzNSwgMTUsIDEyOCwgNSwgCi0gICAgMTE3LCAyNDUsIDM1LCAxNSwgMTI4LCA1LCAxMjIsIDIxNywgMTIyLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMTE3LCAyMTcsIAotICAgIDEyMCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDIyMCwgNDIsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAxMjIsIAotICAgIDIxNywgMTIyLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDYxLCAxNSwgMTI4LCA1LCAxMTcsIDIxNywgMTIwLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDYxLCAxNSwgMTI4LCA1LCAxMjIsIDI0NSwgMTQ2LCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTIyLCAyMjQsIAotICAgIDE2NywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDUzLCAyNTMsIDEzNSwgMTIyLCAyMjAsIDQzLCAxNSwgMTI4LCA1LCA1MywgCi0gICAgMjUzLCAxMzUsIDEyMiwgMjI0LCAxNjYsIDE1LCAyMjUsIDI3LCA1LCA1MywgMjUzLCAxMzUsIDIxMywgMTk2LCAyNDcsIAotICAgIDEyNCwgMTUsIDIyNSwgMjcsIDUsIDcxLCAyNDksIDE2NCwgMTUsIDIyNSwgMjcsIDUsIDI0NywgMjA3LCAyNDksIDE2NCwgCi0gICAgMTUsIDIyNSwgMjcsIDUsIDI0NywgMjA3LCAyMTYsIDE3OSwgMTAsIDExLCAyNTUsIDU4LCAxMCwgMTEsIDI1NSwgNTcsIDEwLCAKLSAgICAxMSwgMjU1LCA1NiwgMTAsIDExLCAyNTUsIDU1LCAxMCwgMTEsIDI1NSwgNTQsIDEwLCAxMSwgMjU1LCA1MywgMTAsIDExLCAKLSAgICAyNTUsIDUyLCAxMCwgMTEsIDI1NSwgNTEsIDEwLCAxMSwgMjU1LCA1MCwgMTAsIDExLCAyNTUsIDQ5LCAxMCwgMTEsIDI1NSwgCi0gICAgNDgsIDEwLCAxMSwgMjU1LCA0NywgMTAsIDExLCAyNTUsIDQ2LCAxMCwgMTEsIDI1NSwgNDUsIDEwLCAxMSwgMjU1LCA0NCwgCi0gICAgMTAsIDExLCAyNTUsIDQzLCAxMCwgMTEsIDI1NSwgNDIsIDEwLCAxMSwgMjU1LCA0MSwgMTAsIDExLCAyNTUsIDQwLCAxMCwgCi0gICAgMTEsIDI1NSwgMzksIDEwLCAxMSwgMjU1LCAzOCwgMTAsIDExLCAyNTUsIDM3LCAxMCwgMTEsIDI1NSwgMzYsIDEwLCAxMSwgCi0gICAgMjU1LCAzNSwgMTAsIDExLCAyNTUsIDM0LCAxMCwgMTEsIDI1NSwgMzMsIDEwLCAxMSwgMjU1LCAzMiwgMTAsIDExLCAyNTUsIAotICAgIDMxLCAxMCwgMTEsIDI1NSwgMzAsIDEwLCAxMSwgMjU1LCAyOSwgMTAsIDExLCAyNTUsIDI4LCAxMCwgMTEsIDI1NSwgMjcsIAotICAgIDEwLCAxMSwgMjU1LCAyNiwgMTAsIDExLCAyNTUsIDI1LCAxMCwgMTEsIDI1NSwgMjQsIDEwLCAxMSwgMjU1LCAyMywgMTAsIAotICAgIDExLCAyNTUsIDIyLCAxMCwgMTEsIDI1NSwgMjEsIDEwLCAxMSwgMjU1LCAyMCwgMTAsIDExLCAyNTUsIDE5LCAxMCwgMTEsIAotICAgIDI1NSwgMTgsIDEwLCAxMSwgMjU1LCAxNywgMTAsIDExLCAyNTUsIDE2LCAxMCwgMTEsIDI1NSwgMTUsIDEwLCAxMSwgMjU1LCAKLSAgICAxNCwgMTAsIDExLCAyNTUsIDEzLCAxMCwgMTEsIDI1NSwgMTIsIDEwLCAxMSwgMjU1LCAxMSwgMTAsIDExLCAyNTUsIDEwLCAKLSAgICAxMCwgMTEsIDI1NSwgOSwgMTAsIDExLCAyNTUsIDgsIDEwLCAxMSwgMjU1LCA3LCAxMCwgMTEsIDI1NSwgNiwgMTAsIDExLCAKLSAgICAyNTUsIDUsIDEwLCAxMSwgMjU1LCA0LCAxMCwgMTEsIDI1NSwgMywgMTAsIDExLCAyNTUsIDIsIDEwLCAxMSwgMjU1LCAxLCAKLSAgICAxMCwgMTEsIDI1NSwgMCwgMTAsIDExLCAyNTQsIDI1NSwgMTAsIDExLCAyNTQsIDI1NCwgMTAsIDExLCAyNTQsIDI1MywgMTAsIAotICAgIDExLCAyNTQsIDI1MiwgMTAsIDExLCAyNTQsIDI1MSwgMTAsIDExLCAyNTQsIDI1MCwgMTAsIDExLCAyNTQsIDI0OSwgMTAsIAotICAgIDExLCAyNTQsIDI0OCwgMTAsIDExLCAyNTQsIDI0NywgMTAsIDExLCAyNTQsIDI0NiwgMTAsIDExLCAyNTQsIDI0NSwgMTAsIAotICAgIDExLCAyNTQsIDI0NCwgMTAsIDExLCAyNTQsIDI0MywgMTAsIDExLCAyNTQsIDI0MiwgMTAsIDExLCAyNTQsIDI0MSwgMTAsIAotICAgIDExLCAyNTQsIDI0MCwgMTAsIDExLCAyNTQsIDIzOSwgMTAsIDExLCAyNTQsIDIzOCwgMTAsIDExLCAyNTQsIDIzNywgMTAsIAotICAgIDExLCAyNTQsIDIzNiwgMTAsIDExLCAyNTQsIDIzNSwgMTAsIDExLCAyNTMsIDcyLCAxMCwgMTEsIDI1MywgNzAsIDEwLCAxMSwgCi0gICAgMjUzLCA2OCwgMTAsIDExLCAyNTMsIDY2LCAxMCwgMTEsIDI1MywgNjQsIDEwLCAxMSwgMjUzLCA2MywgMTAsIDExLCAyNTMsIAotICAgIDYxLCAxMCwgMTEsIDI1MywgNTksIDEwLCAxMSwgMjUzLCA1NywgMTAsIDExLCAyNTMsIDU1LCAxMCwgMTEsIDI1MCwgMjQ4LCAKLSAgICAxMCwgMTEsIDI1MCwgMjQ3LCAxMCwgMTEsIDI1MCwgMjQ2LCAxMCwgMTEsIDI1MCwgMjQ1LCAxMCwgMTEsIDI1MCwgMjQ0LCAKLSAgICAxMCwgMTEsIDI1MCwgMjQzLCAxMCwgMTEsIDI1MCwgMjQyLCAxMCwgMTEsIDI1MCwgMjQxLCAxMCwgMTEsIDI1MCwgMjQwLCAKLSAgICAxMCwgMTEsIDI1MCwgMjM5LCAxMCwgMTEsIDI1MCwgMjM4LCAxMCwgMTEsIDI1MCwgMjM3LCAxMCwgMTEsIDI1MCwgMjM2LCAKLSAgICAxMCwgMTEsIDI1MCwgMjM1LCAxMCwgMTEsIDI1MCwgMjM0LCAxMCwgMTEsIDI1MCwgMjMzLCAxMCwgMTEsIDI1MCwgMjMyLCAKLSAgICAxMCwgMTEsIDI1MCwgMjMxLCAxMCwgMTEsIDI1MCwgMjMwLCAxMCwgMTEsIDI1MCwgMjI5LCAxMCwgMTEsIDI1MCwgMjI4LCAKLSAgICAxMCwgMTEsIDI1MCwgMjI3LCAxMCwgMTEsIDI1MCwgMjI2LCAxMCwgMTEsIDI1MCwgMjI1LCAxMCwgMTEsIDI1MCwgMjI0LCAKLSAgICAxMCwgMTEsIDI1MCwgMjIzLCAxMCwgMTEsIDI1MCwgMjIyLCAxMCwgMTEsIDI1MCwgMjIxLCAxMCwgMTEsIDI0OSwgMiwgMTAsIAotICAgIDExLCAyNDksIDEsIDEwLCAxMSwgMjQ5LCAwLCAxMCwgMTEsIDI0OCwgMjU1LCAxMCwgMTEsIDI0OCwgMjU0LCAxMCwgMTEsIAotICAgIDI0OCwgMjUzLCAxMCwgMTEsIDI0OCwgMjUyLCAxMCwgMTEsIDI0OCwgMjUxLCAxMCwgMTEsIDI0OCwgMjUwLCAxMCwgMTEsIAotICAgIDI0OCwgMjQ5LCAxMCwgMTEsIDI0OCwgMjQ4LCAxMCwgMTEsIDI0OCwgMjQ3LCAxMCwgMTEsIDI0OCwgMjQ2LCAxMCwgMTEsIAotICAgIDI0OCwgMjQ1LCAxMCwgMTEsIDI0OCwgMjQ0LCAxMCwgMTEsIDI0OCwgMjQzLCAxMCwgMTEsIDI0OCwgMjQyLCAxMCwgMTEsIAotICAgIDI0OCwgMjQxLCAxMCwgMTEsIDI0OCwgMjQwLCAxMCwgMTEsIDI0OCwgMjM5LCAxMCwgMTEsIDI0OCwgMjM4LCAxMCwgMTEsIAotICAgIDI0OCwgMjM3LCAxMCwgMTEsIDI0OCwgMjM2LCAxMCwgMTEsIDI0OCwgMjM1LCAxMCwgMTEsIDI0OCwgMjM0LCAxMCwgMTEsIAotICAgIDI0OCwgMjMzLCAxMCwgMTEsIDI0OCwgMjMyLCAxMCwgMTEsIDI0OCwgMjMxLCAxMCwgMTEsIDI0OCwgMjMwLCAxMCwgMTEsIAotICAgIDI0OCwgMjI5LCAxMCwgMTEsIDI0OCwgMjI4LCAxMCwgMTEsIDI0OCwgMjI3LCAxMCwgMTEsIDI0OCwgMjI2LCAxMCwgMTEsIAotICAgIDI0OCwgMjI1LCAxMCwgMTEsIDI0OCwgMjI0LCAxMCwgMTEsIDI0OCwgMjIzLCAxMCwgMTEsIDI0OCwgMjIyLCAxMCwgMTEsIAotICAgIDI0OCwgMjIxLCAxMCwgMTEsIDI0OCwgMjIwLCAxMCwgMTEsIDI0OCwgMjE5LCAxMCwgMTEsIDI0OCwgMjE4LCAxMCwgMTEsIAotICAgIDI0OCwgMjE3LCAxMCwgMTEsIDI0OCwgMjE2LCAxMCwgMTEsIDI0OCwgMjE1LCAxMCwgMTEsIDI0OCwgMjE0LCAxMCwgMTEsIAotICAgIDI0OCwgMjEzLCAxMCwgMTEsIDI0OCwgMjEyLCAxMCwgMTEsIDI0OCwgMjExLCAxMCwgMTEsIDI0OCwgMjEwLCAxMCwgMTEsIAotICAgIDI0OCwgMjA5LCAxMCwgMTEsIDI0OCwgMjA4LCAxMCwgMTEsIDI0OCwgMjA3LCAxMCwgMTEsIDI0OCwgMjA2LCAxMCwgMTEsIAotICAgIDI0OCwgMjA1LCAxMCwgMTEsIDI0OCwgMjA0LCAxMCwgMTEsIDI0OCwgMjAzLCAxMCwgMTEsIDI0OCwgMjAyLCAxMCwgMTEsIAotICAgIDI0OCwgMjAxLCAxMCwgMTEsIDI0OCwgMjAwLCAxMCwgMTEsIDI0OCwgMTk5LCAxMCwgMTEsIDI0OCwgMTk4LCAxMCwgMTEsIAotICAgIDI0OCwgMTk3LCAxMCwgMTEsIDI0OCwgMTk2LCAxMCwgMTEsIDI0OCwgMTk1LCAxMCwgMTEsIDI0OCwgMTk0LCAxMCwgMTEsIAotICAgIDI0OCwgMTkzLCAxMCwgMTEsIDI0OCwgMTkyLCAxMCwgMTEsIDI0OCwgMTkxLCAxMCwgMTEsIDI0OCwgMTkwLCAxMCwgMTEsIAotICAgIDI0OCwgMTg5LCAxMCwgMTEsIDI0OCwgMTg4LCAxMCwgMTEsIDI0OCwgMTg3LCAxMCwgMTEsIDI0OCwgMTg2LCAxMCwgMTEsIAotICAgIDI0OCwgMTg1LCAxMCwgMTEsIDI0OCwgMTg0LCAxMCwgMTEsIDI0OCwgMTgzLCAxMCwgMTEsIDI0OCwgMTgyLCAxMCwgMTEsIAotICAgIDI0OCwgMTgxLCAxMCwgMTEsIDI0OCwgMTgwLCAxMCwgMTEsIDI0OCwgMTc5LCAxMCwgMTEsIDI0OCwgMTc4LCAxMCwgMTEsIAotICAgIDI0OCwgMTc3LCAxMCwgMTEsIDI0OCwgMTc2LCAxMCwgMTEsIDI0OCwgMTc1LCAxMCwgMTEsIDI0OCwgMTc0LCAxMCwgMTEsIAotICAgIDI0OCwgMTczLCAxMCwgMTEsIDI0OCwgMTcyLCAxMCwgMTEsIDI0OCwgMTcxLCAxMCwgMTEsIDI0OCwgMTcwLCAxMCwgMTEsIAotICAgIDI0OCwgMTY5LCAxMCwgMTEsIDI0OCwgMTY4LCAxMCwgMTEsIDI0OCwgMTY3LCAxMCwgMTEsIDI0NSwgMjM1LCAxMCwgMTEsIAotICAgIDI0NSwgMjM0LCAxMCwgMTEsIDI0NSwgMjMzLCAxMCwgMTEsIDI0NSwgMjMyLCAxMCwgMTEsIDI0NSwgMjMxLCAxMCwgMTEsIAotICAgIDI0NSwgMjMwLCAxMCwgMTEsIDI0NSwgMjI5LCAxMCwgMTEsIDI0NSwgMjI4LCAxMCwgMTEsIDI0NSwgMjI3LCAxMCwgMTEsIAotICAgIDI0NSwgMjI2LCAxMCwgMTEsIDI0NSwgMjI1LCAxMCwgMTEsIDI0NSwgMjI0LCAxMCwgMTEsIDI0NSwgMjIzLCAxMCwgMTEsIAotICAgIDI0NSwgMjIyLCAxMCwgMTEsIDI0NSwgMjIxLCAxMCwgMTEsIDI0NSwgMjIwLCAxMCwgMTEsIDI0NSwgMjE5LCAxMCwgMTEsIAotICAgIDI0NSwgMjE4LCAxMCwgMTEsIDI0NSwgMjE3LCAxMCwgMTEsIDI0NSwgMjE2LCAxMCwgMTEsIDI0NSwgMjE1LCAxMCwgMTEsIAotICAgIDI0NSwgMjE0LCAxMCwgMTEsIDI0NSwgMjEzLCAxMCwgMTEsIDI0NSwgMjEyLCAxMCwgMTEsIDI0NSwgMjExLCAxMCwgMTEsIAotICAgIDI0NSwgMjEwLCAxMCwgMTEsIDI0NSwgMjA5LCAxMCwgMTEsIDI0NSwgMjA4LCAxMCwgMTEsIDI0NSwgMjA3LCAxMCwgMTEsIAotICAgIDI0NSwgMjA2LCAxMCwgMTEsIDI0NSwgMjA1LCAxMCwgMTEsIDI0NSwgMjA0LCAxMCwgMTEsIDI0NSwgMjAzLCAxMCwgMTEsIAotICAgIDI0NSwgMjAyLCAxMCwgMTEsIDI0NSwgMjAxLCAxMCwgMTEsIDI0NSwgMjAwLCAxMCwgMTEsIDI0NSwgMTk5LCAxMCwgMTEsIAotICAgIDI0NSwgMTk4LCAxMCwgMTEsIDI0NSwgMTk3LCAxMCwgMTEsIDI0NSwgMTk2LCAxMCwgMTEsIDI0NSwgMTk1LCAxMCwgMTEsIAotICAgIDI0NSwgMTk0LCAxMCwgMTEsIDI0NSwgMTkzLCAxMCwgMTEsIDI0NSwgMTkyLCAxMCwgMTEsIDI0NCwgMjI5LCAxMCwgMTEsIAotICAgIDI0NCwgMjI4LCAxMCwgMTEsIDI0NCwgMjI3LCAxMCwgMTEsIDI0NCwgMjI2LCAxMCwgMTEsIDI0NCwgMjI1LCAxMCwgMTEsIAotICAgIDI0NCwgMjI0LCAxMCwgMTEsIDI0NCwgMjIzLCAxMCwgMTEsIDI0NCwgMjIyLCAxMCwgMTEsIDI0NCwgMjIxLCAxMCwgMTEsIAotICAgIDI0NCwgMjIwLCAxMCwgMTEsIDI0NCwgMjE5LCAxMCwgMTEsIDI0NCwgMjE4LCAxMCwgMTEsIDI0NCwgMjE3LCAxMCwgMTEsIAotICAgIDI0NCwgMjE2LCAxMCwgMTEsIDI0NCwgMjE1LCAxMCwgMTEsIDI0NCwgMjE0LCAxMCwgMTEsIDI0NCwgMjEzLCAxMCwgMTEsIAotICAgIDI0NCwgMjEyLCAxMCwgMTEsIDI0NCwgMjExLCAxMCwgMTEsIDI0NCwgMjEwLCAxMCwgMTEsIDI0NCwgMjA5LCAxMCwgMTEsIAotICAgIDI0NCwgMjA4LCAxMCwgMTEsIDI0NCwgMjA3LCAxMCwgMTEsIDI0NCwgMjA2LCAxMCwgMTEsIDI0NCwgMjA1LCAxMCwgMTEsIAotICAgIDI0NCwgMjA0LCAxMCwgMTEsIDI0NCwgMjAzLCAxMCwgMTEsIDI0NCwgMjAyLCAxMCwgMTEsIDI0NCwgMjAxLCAxMCwgMTEsIAotICAgIDI0NCwgMjAwLCAxMCwgMTEsIDI0NCwgMTk5LCAxMCwgMTEsIDI0NCwgMTk4LCAxMCwgMTEsIDI0NCwgMTk3LCAxMCwgMTEsIAotICAgIDI0NCwgMTk2LCAxMCwgMTEsIDI0NCwgMTk1LCAxMCwgMTEsIDI0NCwgMTk0LCAxMCwgMTEsIDI0NCwgMTkzLCAxMCwgMTEsIAotICAgIDI0NCwgMTkyLCAxMCwgMTEsIDI0NCwgMTkxLCAxMCwgMTEsIDI0NCwgMTkwLCAxMCwgMTEsIDI0NCwgMTg5LCAxMCwgMTEsIAotICAgIDI0NCwgMTg4LCAxMCwgMTEsIDI0NCwgMTg3LCAxMCwgMTEsIDI0NCwgMTg2LCAxMCwgMTEsIDI0NCwgMTg1LCAxMCwgMTEsIAotICAgIDI0NCwgMTg0LCAxMCwgMTEsIDI0NCwgMTgzLCAxMCwgMTEsIDI0NCwgMTgyLCAxMCwgMTEsIDI0NCwgMTgxLCAxMCwgMTEsIAotICAgIDI0NCwgMTgwLCAxMCwgMTEsIDI0NCwgMTc5LCAxMCwgMTEsIDI0NCwgMTc4LCAxMCwgMTEsIDI0NCwgMTc3LCAxMCwgMTEsIAotICAgIDI0NCwgMTc2LCAxMCwgMTEsIDI0NCwgMTc1LCAxMCwgMTEsIDI0NCwgMTc0LCAxMCwgMTEsIDI0NCwgMTczLCAxMCwgMTEsIAotICAgIDI0NCwgMTcyLCAxMCwgMTEsIDI0NCwgMTcxLCAxMCwgMTEsIDI0NCwgMTcwLCAxMCwgMTEsIDI0NCwgMTY5LCAxMCwgMTEsIAotICAgIDI0NCwgMTY4LCAxMCwgMTEsIDI0NCwgMTY3LCAxMCwgMTEsIDI0NCwgMTY2LCAxMCwgMTEsIDI0NCwgMTY1LCAxMCwgMTEsIAotICAgIDI0MywgMTc2LCAxMCwgMTEsIDI0MywgMTc1LCAxMCwgMTEsIDI0MywgMTc0LCAxMCwgMTEsIDI0MywgMTczLCAxMCwgMTEsIAotICAgIDI0MywgMTcyLCAxMCwgMTEsIDI0MywgMTcxLCAxMCwgMTEsIDI0MywgMTcwLCAxMCwgMTEsIDI0MywgMTY5LCAxMCwgMTEsIAotICAgIDI0MywgMTY4LCAxMCwgMTEsIDI0MywgMTY3LCAxMCwgMTEsIDI0MywgMTY2LCAxMCwgMTEsIDI0MywgMTY1LCAxMCwgMTEsIAotICAgIDI0MywgMTY0LCAxMCwgMTEsIDI0MywgMTYzLCAxMCwgMTEsIDI0MywgMTYyLCAxMCwgMTEsIDI0MywgMTYxLCAxMCwgMTEsIAotICAgIDI0MywgMTYwLCAxMCwgMTEsIDI0MywgMTU5LCAxMCwgMTEsIDI0MywgMTU4LCAxMCwgMTEsIDI0MywgMTU3LCAxMCwgMTEsIAotICAgIDI0MywgMTU2LCAxMCwgMTEsIDI0MywgMTU1LCAxMCwgMTEsIDI0MywgMTU0LCAxMCwgMTEsIDI0MywgMTUzLCAxMCwgMTEsIAotICAgIDI0MywgMTUyLCAxMCwgMTEsIDI0MywgMTUxLCAxMCwgMTEsIDI0MywgMTUwLCAxMCwgMTEsIDI0MywgMTQ5LCAxMCwgMTEsIAotICAgIDI0MywgMTQ4LCAxMCwgMTEsIDI0MywgMTQ3LCAxMCwgMTEsIDI0MywgMTQ2LCAxMCwgMTEsIDI0MywgMTQ1LCAxMCwgMTEsIAotICAgIDI0MywgMTQ0LCAxMCwgMTEsIDI0MywgMTQzLCAxMCwgMTEsIDI0MywgMTQyLCAxMCwgMTEsIDI0MywgMTQxLCAxMCwgMTEsIAotICAgIDI0MywgMTQwLCAxMCwgMTEsIDI0MywgMTM5LCAxMCwgMTEsIDI0MywgMTM4LCAxMCwgMTEsIDI0MywgMTM3LCAxMCwgMTEsIAotICAgIDI0MywgMTM2LCAxMCwgMTEsIDI0MywgMTM1LCAxMCwgMTEsIDI0MywgMTM0LCAxMCwgMTEsIDI0MywgMTMzLCAxMCwgMTEsIAotICAgIDI0MywgMTMyLCAxMCwgMTEsIDI0MywgMTMxLCAxMCwgMTEsIDI0MywgMTMwLCAxMCwgMTEsIDI0MywgMTI5LCAxMCwgMTEsIAotICAgIDI0MywgMTI4LCAxMCwgMTEsIDI0MywgMTI3LCAxMCwgMTEsIDI0MywgMTI2LCAxMCwgMTEsIDI0MywgMTI1LCAxMCwgMTEsIAotICAgIDI0MywgMTI0LCAxMCwgMTEsIDI0MywgMTIzLCAxMCwgMTEsIDI0MywgMTIyLCAxMCwgMTEsIDI0MywgMTIxLCAxMCwgMTEsIAotICAgIDI0MywgMTIwLCAxMCwgMTEsIDI0MywgMTE5LCAxMCwgMTEsIDI0MywgMTE4LCAxMCwgMTEsIDI0MywgMTE3LCAxMCwgMTEsIAotICAgIDI0MywgMTE2LCAxMCwgMTEsIDI0MywgMTE1LCAxMCwgMTEsIDI0MywgMTE0LCAxMCwgMTEsIDI0MywgMTEzLCAxMCwgMTEsIAotICAgIDI0MiwgMzksIDEwLCAxMSwgMjQyLCAzOCwgMTAsIDExLCAyNDIsIDM3LCAxMCwgMTEsIDI0MiwgMzYsIDEwLCAxMSwgMjQyLCAKLSAgICAzNSwgMTAsIDExLCAyNDIsIDM0LCAxMCwgMTEsIDI0MiwgMzMsIDEwLCAxMSwgMjQyLCAzMiwgMTAsIDExLCAyNDIsIDMxLCAKLSAgICAxMCwgMTEsIDI0MCwgMTMwLCAxMCwgMTEsIDI0MCwgMTI5LCAxMCwgMTEsIDI0MCwgMTI4LCAxMCwgMTEsIDI0MCwgMTI3LCAKLSAgICAxMCwgMTEsIDI0MCwgMTI2LCAxMCwgMTEsIDI0MCwgMTI1LCAxMCwgMTEsIDI0MCwgMTI0LCAxMCwgMTEsIDI0MCwgMTIzLCAKLSAgICAxMCwgMTEsIDI0MCwgMTIyLCAxMCwgMTEsIDI0MCwgMTIxLCAxMCwgMTEsIDI0MCwgMTIwLCAxMCwgMTEsIDI0MCwgMTE5LCAKLSAgICAxMCwgMTEsIDI0MCwgMTE4LCAxMCwgMTEsIDI0MCwgMTE3LCAxMCwgMTEsIDI0MCwgMTE2LCAxMCwgMTEsIDI0MCwgMTE1LCAKLSAgICAxMCwgMTEsIDI0MCwgMTE0LCAxMCwgMTEsIDI0MCwgMTEzLCAxMCwgMTEsIDI0MCwgMTEyLCAxMCwgMTEsIDIzNSwgMjYsIAotICAgIDEwLCAxMSwgMjM1LCAyNSwgMTAsIDExLCAyMzUsIDI0LCAxMCwgMTEsIDIzNSwgMjMsIDEwLCAxMSwgMjM1LCAyMiwgMTAsIAotICAgIDExLCAyMzUsIDIxLCAxMCwgMTEsIDIzNSwgMjAsIDEwLCAxMSwgMjM1LCAxOSwgMTAsIDExLCAyMzMsIDE2OCwgMTAsIDExLCAKLSAgICAyMzMsIDE2NywgMTAsIDExLCAyMzMsIDE2NiwgMTAsIDExLCAyMzMsIDE2NSwgMTAsIDExLCAyMzMsIDE2NCwgMTAsIDExLCAKLSAgICAyMzMsIDE2MywgMTAsIDExLCAyMzMsIDE2MiwgMTAsIDExLCAyMzMsIDE2MSwgMTAsIDExLCAyMzMsIDE2MCwgMTAsIDExLCAKLSAgICAyMzMsIDE1OSwgMTAsIDExLCAyMzIsIDEwOSwgMTAsIDExLCAyMzIsIDEwOCwgMTAsIDExLCAyMzIsIDEwNywgMTAsIDExLCAKLSAgICAyMzIsIDEwNiwgMTAsIDExLCAyMzIsIDEwNSwgMTAsIDExLCAyMzIsIDEwNCwgMTAsIDExLCAyMzIsIDEwMywgMTAsIDExLCAKLSAgICAyMzIsIDEwMiwgMTAsIDExLCAyMzIsIDEwMSwgMTAsIDExLCAyMzIsIDEwMCwgMTAsIDExLCAyMzIsIDk5LCAxMCwgMTEsIAotICAgIDIzMiwgOTgsIDEwLCAxMSwgMjMyLCA5NywgMTAsIDExLCAyMzIsIDk2LCAxMCwgMTEsIDIzMiwgOTUsIDEwLCAxMSwgMjMyLCAKLSAgICA5NCwgMTAsIDExLCAyMzIsIDkzLCAxMCwgMTEsIDIzMiwgOTIsIDEwLCAxMSwgMjMyLCA5MSwgMTAsIDExLCAyMzIsIDkwLCAKLSAgICAxMCwgMTEsIDIzMiwgODksIDEwLCAxMSwgMjMyLCA4OCwgMTAsIDExLCAyMzIsIDg3LCAxMCwgMTEsIDIzMiwgODYsIDEwLCAKLSAgICAxMSwgMjMyLCA4NSwgMTAsIDExLCAyMzIsIDg0LCAxMCwgMTEsIDIzMiwgODMsIDEwLCAxMSwgMjMyLCA4MiwgMTAsIDExLCAKLSAgICAyMzIsIDgxLCAxMCwgMTEsIDIzMiwgODAsIDEwLCAxMSwgMjMyLCA3OSwgMTAsIDExLCAyMzIsIDc4LCAxMCwgMTEsIDIzMiwgCi0gICAgNzcsIDEwLCAxMSwgMjMyLCA3NiwgMTAsIDExLCAyMzIsIDc1LCAxMCwgMTEsIDIzMiwgNzQsIDEwLCAxMSwgMjMyLCA3MywgCi0gICAgMTAsIDExLCAyMzIsIDcyLCAxMCwgMTEsIDIzMiwgNzEsIDEwLCAxMSwgMjMyLCA3MCwgMTAsIDExLCAyMzIsIDY5LCAxMCwgCi0gICAgMTEsIDIzMiwgNjgsIDEwLCAxMSwgMjMyLCA2NywgMTAsIDExLCAyMzIsIDY2LCAxMCwgMTEsIDIzMiwgNjUsIDEwLCAxMSwgCi0gICAgMjMyLCA2NCwgMTAsIDExLCAyMzIsIDYzLCAxMCwgMTEsIDIzMiwgNjIsIDEwLCAxMSwgMjMyLCA2MSwgMTAsIDExLCAyMzIsIAotICAgIDYwLCAxMCwgMTEsIDIzMiwgNTksIDEwLCAxMSwgMjMyLCA1OCwgMTAsIDExLCAyMzIsIDU3LCAxMCwgMTEsIDIzMiwgNTYsIAotICAgIDEwLCAxMSwgMjMyLCA1NSwgMTAsIDExLCAyMzIsIDU0LCAxMCwgMTEsIDIzMiwgNTMsIDEwLCAxMSwgMjMyLCA1MiwgMTAsIAotICAgIDExLCAyMzIsIDUxLCAxMCwgMTEsIDIzMiwgNTAsIDEwLCAxMSwgMjMyLCA0OSwgMTAsIDExLCAyMzIsIDQ4LCAxMCwgMTEsIAotICAgIDIzMiwgNDcsIDEwLCAxMSwgMjMyLCA0NiwgMTAsIDExLCAyMzIsIDQ1LCAxMCwgMTEsIDIzMiwgNDQsIDEwLCAxMSwgMjMwLCAKLSAgICA5NSwgMTAsIDExLCAyMzAsIDk0LCAxMCwgMTEsIDIzMCwgOTMsIDEwLCAxMSwgMjMwLCA5MiwgMTAsIDExLCAyMzAsIDkxLCAKLSAgICAxMCwgMTEsIDIzMCwgOTAsIDEwLCAxMSwgMjMwLCA4OSwgMTAsIDExLCAyMzAsIDg4LCAxMCwgMTEsIDIzMCwgODcsIDEwLCAKLSAgICAxMSwgMjMwLCA4NiwgMTAsIDExLCAyMzAsIDg1LCAxMCwgMTEsIDIzMCwgODQsIDEwLCAxMSwgMjMwLCA4MywgMTAsIDExLCAKLSAgICAyMzAsIDgyLCAxMCwgMTEsIDIzMCwgODEsIDEwLCAxMSwgMjMwLCA4MCwgMTAsIDExLCAyMzAsIDc5LCAxMCwgMTEsIDIzMCwgCi0gICAgNzgsIDEwLCAxMSwgMjMwLCA3NywgMTAsIDExLCAyMzAsIDc2LCAxMCwgMTEsIDIzMCwgNzUsIDEwLCAxMSwgMjMwLCA3NCwgCi0gICAgMTAsIDExLCAyMzAsIDczLCAxMCwgMTEsIDIzMCwgNzIsIDEwLCAxMSwgMjMwLCA3MSwgMTAsIDExLCAyMzAsIDcwLCAxMCwgCi0gICAgMTEsIDIzMCwgNjksIDEwLCAxMSwgMjMwLCA2OCwgMTAsIDExLCAyMzAsIDY3LCAxMCwgMTEsIDIzMCwgNjYsIDEwLCAxMSwgCi0gICAgMjMwLCA2NSwgMTAsIDExLCAyMzAsIDY0LCAxMCwgMTEsIDIzMCwgNjMsIDEwLCAxMSwgMjMwLCA2MiwgMTAsIDExLCAyMzAsIAotICAgIDYxLCAxMCwgMTEsIDIzMCwgNjAsIDEwLCAxMSwgMjMwLCA1OSwgMTAsIDExLCAyMzAsIDU4LCAxMCwgMTEsIDIzMCwgNTcsIAotICAgIDEwLCAxMSwgMjMwLCA1NiwgMTAsIDExLCAyMzAsIDU1LCAxMCwgMTEsIDIzMCwgNTQsIDEwLCAxMSwgMjMwLCA1MywgMTAsIAotICAgIDExLCAyMzAsIDUyLCAxMCwgMTEsIDIzMCwgNTEsIDEwLCAxMSwgMjMwLCA1MCwgMTAsIDExLCAyMzAsIDQ5LCAxMCwgMTEsIAotICAgIDIzMCwgNDgsIDEwLCAxMSwgMjMwLCA0NywgMTAsIDExLCAyMjgsIDIyMiwgMTAsIDExLCAyMjgsIDIyMSwgMTAsIDExLCAKLSAgICAyMjgsIDIyMCwgMTAsIDExLCAyMjgsIDIxOSwgMTAsIDExLCAyMjgsIDIxOCwgMTAsIDExLCAyMjgsIDIxNywgMTAsIDExLCAKLSAgICAyMjgsIDIxNiwgMTAsIDExLCAyMjgsIDIxNSwgMTAsIDExLCAyMjgsIDIxNCwgMTAsIDExLCAyMjgsIDIxMywgMTAsIDExLCAKLSAgICAyMjgsIDIxMiwgMTAsIDExLCAyMjgsIDIxMSwgMTAsIDExLCAyMjgsIDIxMCwgMTAsIDExLCAyMjgsIDIwOSwgMTAsIDExLCAKLSAgICAyMjgsIDIwOCwgMTAsIDExLCAyMjgsIDIwNywgMTAsIDExLCAyMjgsIDIwNiwgMTAsIDExLCAyMjgsIDIwNSwgMTAsIDExLCAKLSAgICAyMjgsIDIwNCwgMTAsIDExLCAyMjgsIDIwMywgMTAsIDExLCAyMjgsIDIwMiwgMTAsIDExLCAyMjgsIDIwMSwgMTAsIDExLCAKLSAgICAyMjgsIDkxLCAxMCwgMTEsIDIyOCwgOTAsIDEwLCAxMSwgMjI4LCA4OSwgMTAsIDExLCAyMjgsIDg4LCAxMCwgMTEsIDIyOCwgCi0gICAgODcsIDEwLCAxMSwgMjI4LCA4NiwgMTAsIDExLCAyMjgsIDg1LCAxMCwgMTEsIDIyOCwgODQsIDEwLCAxMSwgMjI4LCA4MywgCi0gICAgMTAsIDExLCAyMjgsIDgyLCAxMCwgMTEsIDIyOCwgODEsIDEwLCAxMSwgMjI4LCA4MCwgMTAsIDExLCAyMjgsIDc5LCAxMCwgCi0gICAgMTEsIDIyOCwgNzgsIDEwLCAxMSwgMjI4LCA3NywgMTAsIDExLCAyMjgsIDc2LCAxMCwgMTEsIDIyOCwgNzUsIDEwLCAxMSwgCi0gICAgMjI4LCA3NCwgMTAsIDExLCAyMjgsIDczLCAxMCwgMTEsIDIyOCwgNzIsIDEwLCAxMSwgMjI4LCA3MSwgMTAsIDExLCAyMjgsIAotICAgIDcwLCAxMCwgMTEsIDIyOCwgNjksIDEwLCAxMSwgMjI4LCA2OCwgMTAsIDExLCAyMjgsIDY3LCAxMCwgMTEsIDIyOCwgNjYsIAotICAgIDEwLCAxMSwgMjI3LCAxOTYsIDEwLCAxMSwgMjI3LCAxOTUsIDEwLCAxMSwgMjI3LCAxOTQsIDEwLCAxMSwgMjI3LCAxOTMsIAotICAgIDEwLCAxMSwgMjI3LCAxOTIsIDEwLCAxMSwgMjI3LCAxOTEsIDEwLCAxMSwgMjI3LCAxOTAsIDEwLCAxMSwgMjI3LCAxODksIAotICAgIDEwLCAxMSwgMjI3LCAxODgsIDEwLCAxMSwgMjI3LCAxODcsIDEwLCAxMSwgMjI3LCAxODYsIDEwLCAxMSwgMjI3LCAxODUsIAotICAgIDEwLCAxMSwgMjI3LCAxODQsIDEwLCAxMSwgMjI3LCAxODMsIDEwLCAxMSwgMjI3LCAxODIsIDEwLCAxMSwgMjI3LCAxODEsIAotICAgIDEwLCAxMSwgMjI3LCAxODAsIDEwLCAxMSwgMjI3LCAxNzksIDEwLCAxMSwgMjI3LCAxNzgsIDEwLCAxMSwgMjI3LCAxNzcsIAotICAgIDEwLCAxMSwgMjI3LCAxNzYsIDEwLCAxMSwgMjI3LCAxNzUsIDEwLCAxMSwgMjI3LCAxNzQsIDEwLCAxMSwgMjI3LCAxNzMsIAotICAgIDEwLCAxMSwgMjI3LCAxNzIsIDEwLCAxMSwgMjI3LCAxNzEsIDEwLCAxMSwgMjI3LCAxNzAsIDEwLCAxMSwgMjI3LCAxNjksIAotICAgIDEwLCAxMSwgMjI3LCAxNjgsIDEwLCAxMSwgMjI3LCAxNjcsIDEwLCAxMSwgMjI3LCAxNjYsIDEwLCAxMSwgMjI3LCAxNjUsIAotICAgIDEwLCAxMSwgMjI3LCAxNjQsIDEwLCAxMSwgMjI3LCAxNjMsIDEwLCAxMSwgMjI3LCAxNjIsIDEwLCAxMSwgMjI3LCAxNjEsIAotICAgIDEwLCAxMSwgMjI3LCAxNjAsIDEwLCAxMSwgMjI3LCAxNTksIDEwLCAxMSwgMjI3LCAxNTgsIDEwLCAxMSwgMjI3LCAxNTcsIAotICAgIDEwLCAxMSwgMjI3LCAxNTYsIDEwLCAxMSwgMjI3LCAxNTUsIDEwLCAxMSwgMjI3LCAxNTQsIDEwLCAxMSwgMjI3LCAxNTMsIAotICAgIDEwLCAxMSwgMjI3LCAxNTIsIDEwLCAxMSwgMjI3LCAxNTEsIDEwLCAxMSwgMjI3LCAxNTAsIDEwLCAxMSwgMjI3LCAxNDksIAotICAgIDEwLCAxMSwgMjI3LCAxNDgsIDEwLCAxMSwgMjI3LCAxNDcsIDEwLCAxMSwgMjI3LCAxNDYsIDEwLCAxMSwgMjI3LCAxNDUsIAotICAgIDEwLCAxMSwgMjI3LCAxNDQsIDEwLCAxMSwgMjI3LCAxNDMsIDEwLCAxMSwgMjI3LCAxNDIsIDEwLCAxMSwgMjI3LCAxNDEsIAotICAgIDEwLCAxMSwgMjI3LCAxNDAsIDEwLCAxMSwgMjI3LCAxMzksIDEwLCAxMSwgMjI3LCAxMzgsIDEwLCAxMSwgMjI3LCAxMzcsIAotICAgIDEwLCAxMSwgMjI3LCAxMzYsIDEwLCAxMSwgMjI3LCAxMzUsIDEwLCAxMSwgMjI3LCAxMzQsIDEwLCAxMSwgMjI3LCAxMzMsIAotICAgIDEwLCAxMSwgMjI3LCAxMzIsIDEwLCAxMSwgMjI3LCAxMzEsIDEwLCAxMSwgMjI3LCAxMzAsIDEwLCAxMSwgMjI3LCAxMjksIAotICAgIDEwLCAxMSwgMjI3LCAxMjgsIDEwLCAxMSwgMjI3LCAxMjcsIDEwLCAxMSwgMjI3LCAxMjYsIDEwLCAxMSwgMjI3LCAxMjUsIAotICAgIDEwLCAxMSwgMjI3LCAxMjQsIDEwLCAxMSwgMjI3LCAxMjMsIDEwLCAxMSwgMjI3LCAxMjIsIDEwLCAxMSwgMjI2LCAyMjgsIAotICAgIDEwLCAxMSwgMjI2LCAyMjcsIDEwLCAxMSwgMjI2LCAyMjYsIDEwLCAxMSwgMjI2LCAyMjUsIDEwLCAxMSwgMjI2LCAyMjQsIAotICAgIDEwLCAxMSwgMjI2LCAyMjMsIDEwLCAxMSwgMjI2LCAyMjIsIDEwLCAxMSwgMjI2LCAyMjEsIDEwLCAxMSwgMjI2LCAyMjAsIAotICAgIDEwLCAxMSwgMjI2LCAyMTksIDEwLCAxMSwgMjI2LCAyMTgsIDEwLCAxMSwgMjI2LCAyMTcsIDEwLCAxMSwgMjI2LCAyMTYsIAotICAgIDEwLCAxMSwgMjI0LCAyMzksIDEwLCAxMSwgMjI0LCAyMzgsIDEwLCAxMSwgMjI0LCAyMzcsIDEwLCAxMSwgMjI0LCAyMzYsIAotICAgIDEwLCAxMSwgMjI0LCAyMzUsIDEwLCAxMSwgMjI0LCAyMzQsIDEwLCAxMSwgMjI0LCAyMzMsIDEwLCAxMSwgMjI0LCAxMTEsIAotICAgIDEwLCAxMSwgMjI0LCAxMTAsIDEwLCAxMSwgMjI0LCAxMDksIDEwLCAxMSwgMjI0LCAxMDgsIDEwLCAxMSwgMjI0LCAxMDcsIAotICAgIDEwLCAxMSwgMjI0LCAxMDYsIDEwLCAxMSwgMjI0LCAxMDUsIDEwLCAxMSwgMjI0LCAxMDQsIDEwLCAxMSwgMjI0LCAxMDMsIAotICAgIDEwLCAxMSwgMjI0LCAxMDIsIDEwLCAxMSwgMjI0LCAxMDEsIDEwLCAxMSwgMjI0LCAxMDAsIDEwLCAxMSwgMjI0LCA5OSwgCi0gICAgMTAsIDExLCAyMjQsIDk4LCAxMCwgMTEsIDIyNCwgOTcsIDEwLCAxMSwgMjI0LCA5NiwgMTAsIDExLCAyMjQsIDk1LCAxMCwgCi0gICAgMTEsIDIyNCwgOTQsIDEwLCAxMSwgMjI0LCA5MywgMTAsIDExLCAyMjQsIDkyLCAxMCwgMTEsIDIyNCwgOTEsIDEwLCAxMSwgCi0gICAgMjI0LCA5MCwgMTAsIDExLCAyMjQsIDg5LCAxMCwgMTEsIDIyNCwgODgsIDEwLCAxMSwgMjI0LCA4NywgMTAsIDExLCAyMjQsIAotICAgIDg2LCAxMCwgMTEsIDIyNCwgODUsIDEwLCAxMSwgMjI0LCA4NCwgMTAsIDExLCAyMjQsIDgzLCAxMCwgMTEsIDIyNCwgODIsIAotICAgIDEwLCAxMSwgMjI0LCA4MSwgMTAsIDExLCAyMjQsIDgwLCAxMCwgMTEsIDIyNCwgNzksIDEwLCAxMSwgMjI0LCA3OCwgMTAsIAotICAgIDExLCAyMjMsIDEsIDEwLCAxMSwgMjIzLCAwLCAxMCwgMTEsIDIyMiwgMjU1LCAxMCwgMTEsIDIyMiwgMjU0LCAxMCwgMTEsIAotICAgIDIyMiwgMjUzLCAxMCwgMTEsIDIyMiwgMjUyLCAxMCwgMTEsIDIyMiwgMjUxLCAxMCwgMTEsIDIyMiwgMjUwLCAxMCwgMTEsIAotICAgIDIyMiwgMjQ5LCAxMCwgMTEsIDIyMiwgMjQ4LCAxMCwgMTEsIDIyMiwgMjQ3LCAxMCwgMTEsIDIyMiwgMjQ2LCAxMCwgMTEsIAotICAgIDIyMiwgMjQ1LCAxMCwgMTEsIDIyMiwgMjQ0LCAxMCwgMTEsIDIyMiwgMjQzLCAxMCwgMTEsIDIyMiwgMjQyLCAxMCwgMTEsIAotICAgIDIyMiwgMjQxLCAxMCwgMTEsIDIyMiwgMjQwLCAxMCwgMTEsIDIyMiwgMjM5LCAxMCwgMTEsIDIyMiwgMjM4LCAxMCwgMTEsIAotICAgIDIyMiwgMjM3LCAxMCwgMTEsIDIyMiwgMjM2LCAxMCwgMTEsIDIyMiwgMjM1LCAxMCwgMTEsIDIyMiwgMjM0LCAxMCwgMTEsIAotICAgIDIyMiwgMjMzLCAxMCwgMTEsIDIyMiwgMjMyLCAxMCwgMTEsIDIyMiwgMjMxLCAxMCwgMTEsIDIyMiwgMjMwLCAxMCwgMTEsIAotICAgIDIyMiwgMjI5LCAxMCwgMTEsIDIyMiwgMjI4LCAxMCwgMTEsIDIyMiwgMjI3LCAxMCwgMTEsIDIyMiwgMjI2LCAxMCwgMTEsIAotICAgIDIyMiwgMjI1LCAxMCwgMTEsIDIyMiwgMjI0LCAxMCwgMTEsIDIyMiwgMjIzLCAxMCwgMTEsIDIyMiwgMjIyLCAxMCwgMTEsIAotICAgIDIyMiwgMjIxLCAxMCwgMTEsIDIyMiwgMjIwLCAxMCwgMTEsIDIyMiwgMjE5LCAxMCwgMTEsIDIyMiwgMjE4LCAxMCwgMTEsIAotICAgIDIyMiwgMjE3LCAxMCwgMTEsIDIyMiwgMjE2LCAxMCwgMTEsIDIyMiwgMjE1LCAxMCwgMTEsIDIyMiwgMjE0LCAxMCwgMTEsIAotICAgIDIyMiwgMjEzLCAxMCwgMTEsIDIyMiwgMjEyLCAxMCwgMTEsIDIyMiwgMjExLCAxMCwgMTEsIDIyMiwgMjEwLCAxMCwgMTEsIAotICAgIDIyMiwgMjA5LCAxMCwgMTEsIDIyMiwgMjA4LCAxMCwgMTEsIDIyMiwgMjA3LCAxMCwgMTEsIDIyMiwgMjA2LCAxMCwgMTEsIAotICAgIDIyMiwgMjA1LCAxMCwgMTEsIDIyMiwgMjA0LCAxMCwgMTEsIDIxOCwgOTcsIDEwLCAxMSwgMjE4LCA5NiwgMTAsIDExLCAKLSAgICAyMTgsIDk1LCAxMCwgMTEsIDIxOCwgOTQsIDEwLCAxMSwgMjE4LCA5MywgMTAsIDExLCAyMTgsIDkyLCAxMCwgMTEsIDIxOCwgCi0gICAgOTEsIDEwLCAxMSwgMjE4LCA5MCwgMTAsIDExLCAyMTgsIDg5LCAxMCwgMTEsIDIxOCwgODgsIDEwLCAxMSwgMjE4LCA4NywgCi0gICAgMTAsIDExLCAyMTgsIDg2LCAxMCwgMTEsIDIxOCwgODUsIDEwLCAxMSwgMjE4LCA4NCwgMTAsIDExLCAyMTgsIDgzLCAxMCwgCi0gICAgMTEsIDIxOCwgODIsIDEwLCAxMSwgMjE4LCA4MSwgMTAsIDExLCAyMTgsIDgwLCAxMCwgMTEsIDIxOCwgNzksIDEwLCAxMSwgCi0gICAgMjE4LCA3OCwgMTAsIDExLCAyMTgsIDc3LCAxMCwgMTEsIDIxOCwgNzYsIDEwLCAxMSwgMjE4LCA3NSwgMTAsIDExLCAyMTgsIAotICAgIDc0LCAxMCwgMTEsIDIxOCwgNzMsIDEwLCAxMSwgMjE4LCA3MiwgMTAsIDExLCAyMTgsIDcxLCAxMCwgMTEsIDIxOCwgNzAsIAotICAgIDEwLCAxMSwgMjE4LCA2OSwgMTAsIDExLCAyMTgsIDY4LCAxMCwgMTEsIDIxOCwgNjcsIDEwLCAxMSwgMjE4LCA2NiwgMTAsIAotICAgIDExLCAyMTgsIDY1LCAxMCwgMTEsIDIxOCwgNjQsIDEwLCAxMSwgMjE4LCA2MywgMTAsIDExLCAyMTgsIDYyLCAxMCwgMTEsIAotICAgIDIxOCwgNjEsIDEwLCAxMSwgMjE4LCA2MCwgMTAsIDExLCAyMTgsIDU5LCAxMCwgMTEsIDIxOCwgNTgsIDEwLCAxMSwgMjE4LCAKLSAgICA1NywgMTAsIDExLCAyMTgsIDU2LCAxMCwgMTEsIDIxOCwgNTUsIDEwLCAxMSwgMjE4LCA1NCwgMTAsIDExLCAyMTUsIDI0NSwgCi0gICAgMTAsIDExLCAyMTUsIDI0NCwgMTAsIDExLCAyMTUsIDI0MywgMTAsIDExLCAyMTUsIDI0MiwgMTAsIDExLCAyMTUsIDI0MSwgCi0gICAgMTAsIDExLCAyMTUsIDI0MCwgMTAsIDExLCAyMTUsIDIzOSwgMTAsIDExLCAyMTUsIDIzOCwgMTAsIDExLCAyMTUsIDIzNywgCi0gICAgMTAsIDExLCAyMTUsIDIzNiwgMTAsIDExLCAyMTUsIDIzNSwgMTAsIDExLCAyMTUsIDIzNCwgMTAsIDExLCAyMTUsIDIzMywgCi0gICAgMTAsIDExLCAyMTUsIDIzMiwgMTAsIDExLCAyMTUsIDIzMSwgMTAsIDExLCAyMTUsIDIzMCwgMTAsIDExLCAyMTUsIDIyOSwgCi0gICAgMTAsIDExLCAyMTUsIDIyOCwgMTAsIDExLCAyMTUsIDIyNywgMTAsIDExLCAyMTUsIDIyNiwgMTAsIDExLCAyMTUsIDIyNSwgCi0gICAgMTAsIDExLCAyMTUsIDIyNCwgMTAsIDExLCAyMTUsIDIyMywgMTAsIDExLCAyMTUsIDIyMiwgMTAsIDExLCAyMTUsIDIyMSwgCi0gICAgMTAsIDExLCAyMTUsIDIyMCwgMTAsIDExLCAyMTUsIDIxOSwgMTAsIDExLCAyMTUsIDIxOCwgMTAsIDExLCAyMTUsIDIxNywgCi0gICAgMTAsIDExLCAyMTUsIDIxNiwgMTAsIDExLCAyMTUsIDIxNSwgMTAsIDExLCAyMTUsIDIxNCwgMTAsIDExLCAyMTUsIDIxMywgCi0gICAgMTAsIDExLCAyMTUsIDIxMiwgMTAsIDExLCAyMTUsIDIxMSwgMTAsIDExLCAyMTUsIDIxMCwgMTAsIDExLCAyMTUsIDIwOSwgCi0gICAgMTAsIDExLCAyMTUsIDIwOCwgMTAsIDExLCAyMTUsIDIwNywgMTAsIDExLCAyMTUsIDIwNiwgMTAsIDExLCAyMTUsIDIwNSwgCi0gICAgMTAsIDExLCAyMTUsIDIwNCwgMTAsIDExLCAyMTUsIDIwMywgMTAsIDExLCAyMTUsIDIwMiwgMTAsIDExLCAyMTUsIDIwMSwgCi0gICAgMTAsIDExLCAyMTUsIDIwMCwgMTAsIDExLCAyMTUsIDE5OSwgMTAsIDExLCAyMTUsIDc4LCAxMCwgMTEsIDIxNSwgNzcsIDEwLCAKLSAgICAxMSwgMjE1LCA3NiwgMTAsIDExLCAyMTUsIDc1LCAxMCwgMTEsIDIxNSwgNzQsIDEwLCAxMSwgMjE1LCA3MywgMTAsIDExLCAKLSAgICAyMTUsIDcyLCAxMCwgMTEsIDIxNSwgNzEsIDEwLCAxMSwgMjE1LCA3MCwgMTAsIDExLCAyMTUsIDY5LCAxMCwgMTEsIDIxNSwgCi0gICAgNjgsIDEwLCAxMSwgMjE1LCA2NywgMTAsIDExLCAyMTUsIDY2LCAxMCwgMTEsIDIxNSwgNjUsIDEwLCAxMSwgMjE1LCA2NCwgCi0gICAgMTAsIDExLCAyMTUsIDYzLCAxMCwgMTEsIDIxNSwgNjIsIDEwLCAxMSwgMjE1LCA2MSwgMTAsIDExLCAyMTUsIDYwLCAxMCwgCi0gICAgMTEsIDIxNSwgNTksIDEwLCAxMSwgMjE1LCA1OCwgMTAsIDExLCAyMTUsIDU3LCAxMCwgMTEsIDIxNSwgNTYsIDEwLCAxMSwgCi0gICAgMjE1LCA1NSwgMTAsIDExLCAyMTUsIDU0LCAxMCwgMTEsIDIxNSwgNTMsIDEwLCAxMSwgMjE1LCA1MiwgMTAsIDExLCAyMTUsIAotICAgIDUxLCAxMCwgMTEsIDIxNSwgNTAsIDEwLCAxMSwgMjE1LCA0OSwgMTAsIDExLCAyMTUsIDQ4LCAxMCwgMTEsIDIxNSwgNDcsIAotICAgIDEwLCAxMSwgMjE1LCA0NiwgMTAsIDExLCAyMTUsIDQ1LCAxMCwgMTEsIDIxNSwgNDQsIDEwLCAxMSwgMjE1LCA0MywgMTAsIAotICAgIDExLCAyMTUsIDQyLCAxMCwgMTEsIDIxNSwgNDEsIDEwLCAxMSwgMjE1LCA0MCwgMTAsIDExLCAyMTUsIDM5LCAxMCwgMTEsIAotICAgIDIxNSwgMzgsIDEwLCAxMSwgMjE1LCAzNywgMTAsIDExLCAyMTUsIDM2LCAxMCwgMTEsIDIxNSwgMzUsIDEwLCAxMSwgMjE1LCAKLSAgICAzNCwgMTAsIDExLCAyMTUsIDMzLCAxMCwgMTEsIDIxNSwgMzIsIDEwLCAxMSwgMjE1LCAzMSwgMTAsIDExLCAyMTUsIDMwLCAKLSAgICAxMCwgMTEsIDIxNSwgMjksIDEwLCAxMSwgMjE1LCAyOCwgMTAsIDExLCAyMTUsIDI3LCAxMCwgMTEsIDIxNSwgMjYsIDEwLCAKLSAgICAxMSwgMjE1LCAyNSwgMTAsIDExLCAyMTUsIDI0LCAxMCwgMTEsIDIxNSwgMjMsIDEwLCAxMSwgMjE1LCAyMiwgMTAsIDExLCAKLSAgICAyMTUsIDIxLCAxMCwgMTEsIDIxNSwgMjAsIDEwLCAxMSwgMjE1LCAxOSwgMTAsIDExLCAyMTUsIDE4LCAxMCwgMTEsIDIxNSwgCi0gICAgMTcsIDEwLCAxMSwgMjE1LCAxNiwgMTAsIDExLCAyMTUsIDE1LCAxMCwgMTEsIDIxNSwgMTQsIDEwLCAxMSwgMjE1LCAxMywgCi0gICAgMTAsIDExLCAyMTUsIDEyLCAxMCwgMTEsIDIxNSwgMTEsIDEwLCAxMSwgMjE1LCAxMCwgMTAsIDExLCAyMTUsIDksIDEwLCAKLSAgICAxMSwgMjE1LCA4LCAxMCwgMTEsIDIxNSwgNywgMTAsIDExLCAyMTUsIDYsIDEwLCAxMSwgMjE1LCA1LCAxMCwgMTEsIDIxNSwgCi0gICAgNCwgMTAsIDExLCAyMTUsIDMsIDEwLCAxMSwgMjE1LCAyLCAxMCwgMTEsIDIxNCwgODEsIDEwLCAxMSwgMjE0LCA4MCwgMTAsIAotICAgIDExLCAyMTQsIDc5LCAxMCwgMTEsIDIxNCwgNzgsIDEwLCAxMSwgMjE0LCA3NywgMTAsIDExLCAyMTQsIDc2LCAxMCwgMTEsIAotICAgIDIxNCwgNzUsIDEwLCAxMSwgMjE0LCA3NCwgMTAsIDExLCAyMTQsIDczLCAxMCwgMTEsIDIxNCwgNzIsIDEwLCAxMSwgMjE0LCAKLSAgICA3MSwgMTAsIDExLCAyMTQsIDcwLCAxMCwgMTEsIDIxNCwgNjksIDEwLCAxMSwgMjE0LCA2OCwgMTAsIDExLCAyMTQsIDY3LCAKLSAgICAxMCwgMTEsIDIxNCwgNjYsIDEwLCAxMSwgMjE0LCA2NSwgMTAsIDExLCAyMTQsIDY0LCAxMCwgMTEsIDIxNCwgNjMsIDEwLCAKLSAgICAxMSwgMjE0LCA2MiwgMTAsIDExLCAyMTQsIDYxLCAxMCwgMTEsIDIxNCwgNjAsIDEwLCAxMSwgMjE0LCA1OSwgMTAsIDExLCAKLSAgICAyMTQsIDU4LCAxMCwgMTEsIDIxNCwgNTcsIDEwLCAxMSwgMjE0LCA1NiwgMTAsIDExLCAyMTQsIDU1LCAxMCwgMTEsIDIxNCwgCi0gICAgNTQsIDEwLCAxMSwgMjE0LCA1MywgMTAsIDExLCAyMTQsIDUyLCAxMCwgMTEsIDIxNCwgNTEsIDEwLCAxMSwgMjE0LCA1MCwgCi0gICAgMTAsIDExLCAyMTMsIDE2NSwgMTAsIDExLCAyMTMsIDE2NCwgMTAsIDExLCAyMTMsIDE2MywgMTAsIDExLCAyMTMsIDE2MiwgCi0gICAgMTAsIDExLCAyMTMsIDE2MSwgMTAsIDExLCAyMTMsIDE2MCwgMTAsIDExLCAyMTMsIDE1OSwgMTAsIDExLCAyMTMsIDE1OCwgCi0gICAgMTAsIDExLCAyMTMsIDE1NywgMTAsIDExLCAyMTMsIDE1NiwgMTAsIDExLCAyMTMsIDE1NSwgMTAsIDExLCAyMTMsIDE1NCwgCi0gICAgMTAsIDExLCAyMTMsIDEwMywgMTAsIDExLCAyMTMsIDEwMiwgMTAsIDExLCAyMTMsIDEwMSwgMTAsIDExLCAyMTMsIDEwMCwgCi0gICAgMTAsIDExLCAyMTMsIDk5LCAxMCwgMTEsIDIxMywgOTgsIDEwLCAxMSwgMjEzLCA5NywgMTAsIDExLCAyMTMsIDk2LCAxMCwgCi0gICAgMTEsIDIxMywgOTUsIDEwLCAxMSwgMjEyLCAxNTEsIDEwLCAxMSwgMjEyLCAxNTAsIDEwLCAxMSwgMjEyLCAxNDksIDEwLCAKLSAgICAxMSwgMjEyLCAxNDgsIDEwLCAxMSwgMjEyLCAxNDcsIDEwLCAxMSwgMjEyLCAxNDYsIDEwLCAxMSwgMjEyLCAxNDUsIDEwLCAKLSAgICAxMSwgMjEyLCAxNDQsIDEwLCAxMSwgMjEyLCAxNDMsIDEwLCAxMSwgMjEyLCAxNDIsIDEwLCAxMSwgMjEyLCAxNDEsIDEwLCAKLSAgICAxMSwgMjEyLCAxNDAsIDEwLCAxMSwgMjEyLCAxMzksIDEwLCAxMSwgMjEyLCAxMzgsIDEwLCAxMSwgMjEyLCAxMzcsIDEwLCAKLSAgICAxMSwgMjEyLCAxMzYsIDEwLCAxMSwgMjEyLCAxMzUsIDEwLCAxMSwgMjEyLCAxMzQsIDEwLCAxMSwgMjEyLCAxMzMsIDEwLCAKLSAgICAxMSwgMjEyLCAxMzIsIDEwLCAxMSwgMjEyLCAxMzEsIDEwLCAxMSwgMjEyLCAxMzAsIDEwLCAxMSwgMjEyLCAxMjksIDEwLCAKLSAgICAxMSwgMjEyLCAxMjgsIDEwLCAxMSwgMjEyLCAxMjcsIDEwLCAxMSwgMjEyLCAxMjYsIDEwLCAxMSwgMjEyLCAxMjUsIDEwLCAKLSAgICAxMSwgMjEyLCAxMjQsIDEwLCAxMSwgMjEyLCAxMjMsIDEwLCAxMSwgMjEyLCAxMjIsIDEwLCAxMSwgMjEyLCAxMjEsIDEwLCAKLSAgICAxMSwgMjEyLCAxMjAsIDEwLCAxMSwgMjEyLCAxMTksIDEwLCAxMSwgMjEyLCAxMTgsIDEwLCAxMSwgMjEyLCAxMTcsIDEwLCAKLSAgICAxMSwgMjEyLCAxMTYsIDEwLCAxMSwgMjEyLCAxMTUsIDEwLCAxMSwgMjEyLCAxMTQsIDEwLCAxMSwgMjEyLCAxMTMsIDEwLCAKLSAgICAxMSwgMjEyLCAxMTIsIDEwLCAxMSwgMjEyLCAxMTEsIDEwLCAxMSwgMjU0LCAyMzEsIDEwLCAxMSwgMjU0LCAyMzAsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjksIDEwLCAxMSwgMjU0LCAyMjgsIDEwLCAxMSwgMjU0LCAyMjcsIDEwLCAxMSwgMjU0LCAyMjYsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjUsIDEwLCAxMSwgMjU0LCAyMjQsIDEwLCAxMSwgMjU0LCAyMjMsIDEwLCAxMSwgMjU0LCAyMjIsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjEsIDEwLCAxMSwgMjU0LCAyMjAsIDEwLCAxMSwgMjU0LCAyMTksIDEwLCAxMSwgMjU0LCAyMTgsIDEwLCAKLSAgICAxMSwgMjU0LCAyMTcsIDEwLCAxMSwgMjU0LCAyMTYsIDEwLCAxMSwgMjU0LCAyMTUsIDEwLCAxMSwgMjU0LCAyMTQsIDEwLCAKLSAgICAxMSwgMjU0LCAyMTMsIDEwLCAxMSwgMjU0LCAyMTIsIDEwLCAxMSwgMjU0LCAyMTEsIDEwLCAxMSwgMjU0LCAyMTAsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDksIDEwLCAxMSwgMjU0LCAyMDgsIDEwLCAxMSwgMjU0LCAyMDcsIDEwLCAxMSwgMjU0LCAyMDYsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDUsIDEwLCAxMSwgMjU0LCAyMDQsIDEwLCAxMSwgMjU0LCAyMDMsIDEwLCAxMSwgMjU0LCAyMDIsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDEsIDEwLCAxMSwgMjU0LCAyMDAsIDEwLCAxMSwgMjU0LCAxOTksIDEwLCAxMSwgMjU0LCAxOTgsIDIwLCAKLSAgICAxLCAxNTMsIDIyOSwgOTgsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDI0MywgNDYsIDI0NCwgNSwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAxMzEsIDIzMSwgODQsIDIyNSwgMTg5LCAyMCwgMSwgMTUzLCAyMjUsIDEzMSwgMjMxLCA4NCwgMjI1LCAxOTAsIDIwLCAxLCAKLSAgICAxNTMsIDIzMCwgNDQsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDIyMCwgMTQ2LCAyMCwgMSwgMTUzLCAyMTcsIDE5LCAyMzEsIAotICAgIDgzLCAyMCwgMSwgMTUzLCAyMjcsIDIzOCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjIwLCAxOTksIDIyNiwgMjE0LCAyMjksIAotICAgIDAsIDIwLCAxLCAxNTMsIDIyNSwgMTMxLCAyMjYsIDIxNCwgMjI5LCAxLCAyMjUsIDE4OSwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAxMzEsIDIyNiwgMjE0LCAyMjksIDEsIDIyNSwgMTkwLCAyMCwgMSwgMTUzLCAyMzIsIDIzLCAyMCwgMSwgMTUzLCAyMTYsIAotICAgIDgzLCAyMzIsIDI0LCAyMCwgMSwgMTUzLCAyMjksIDE1NCwgMjAsIDEsIDE1MywgMjMyLCAyMCwgMjAsIDEsIDE1MywgMjMxLCAKLSAgICAyMzksIDIwLCAxLCAxNTMsIDIzMCwgMTE5LCAyMCwgMSwgMTUzLCAyMjEsIDQ1LCAyMCwgMSwgMTUzLCAyMjgsIDk2LCAyMCwgCi0gICAgMSwgMTUzLCAyMzQsIDE1NSwgMjAsIDEsIDE1MywgMjI4LCAyMjUsIDIwLCAxLCAxNTMsIDIxOCwgMjA1LCAyMCwgMSwgMTUzLCAKLSAgICAyMjksIDk3LCAyMCwgMSwgMTUzLCAyMzMsIDExMCwgMjAsIDEsIDE1MywgMjMzLCAzNiwgMjMzLCAyMTAsIDIwLCAxLCAxNTMsIAotICAgIDIyOCwgMTAzLCAyMzEsIDkxLCAyMCwgMSwgMTUzLCAyMzIsIDI3LCAyMCwgMSwgMTUzLCAyMjYsIDExOSwgMjAsIDEsIDE1MywgCi0gICAgMjQyLCAyMDcsIDIwLCAxLCAxNTMsIDIyNiwgMTc3LCAyMCwgMSwgMTUzLCAyMzAsIDIyMSwgMjI5LCAxMzAsIDIwLCAxLCAKLSAgICAxNTMsIDIyNywgMjE5LCAyMzEsIDk0LCAyMCwgMSwgMTUzLCAxMTEsIDIxMiwgMTc5LCAyMzAsIDM4LCAyMCwgMSwgMTUzLCAKLSAgICAyNDIsIDIwOCwgMjAsIDEsIDE1MywgMjI4LCAxMDMsIDIyOCwgMTA0LCAyMCwgMSwgMTUzLCAyMjAsIDU2LCAyMCwgMSwgCi0gICAgMTUzLCAyMzEsIDc2LCAyMCwgMSwgMTUzLCAyMzEsIDk3LCAyMCwgMSwgMTUzLCAyMzAsIDIwMCwgMjAsIDEsIDE1MywgMjM0LCAKLSAgICAyNTMsIDIwLCAxLCAxNTMsIDIyNiwgMjE0LCAyMzMsIDcxLCAyMCwgMSwgMTUzLCAyMjksIDIyOSwgMjMzLCA3MSwgMjAsIDEsIAotICAgIDE1MywgMjI2LCAzNCwgMjAsIDEsIDE1MywgMjMyLCAyMSwgMjAsIDEsIDE1MywgMjI5LCAzOCwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAyMCwgMjAsIDEsIDE1MywgMjE2LCA4MCwgMjAsIDEsIDE1MywgMjMyLCAxNTIsIDIwLCAxLCAxNTMsIDIxOSwgMjI3LCAyMCwgCi0gICAgMSwgMTUzLCAyMTcsIDE2OSwgMjAsIDEsIDE1MywgMjMyLCAxOCwgMjAsIDEsIDE1MywgMjM0LCAxNjIsIDIwLCAxLCAxNTMsIAotICAgIDIyOSwgMjI1LCAyMCwgMSwgMTUzLCAyMzMsIDIyMiwgMjAsIDEsIDE1MywgMjMwLCAyMDEsIDIwLCAxLCAxNTMsIDIyMCwgCi0gICAgMTQzLCAyMCwgMSwgMTUzLCAyMzIsIDE5MSwgMjAsIDEsIDE1MywgMjQ0LCA2MiwgMjAsIDEsIDE1MywgMjIzLCAxMDEsIDIwLCAKLSAgICAxLCAxNTMsIDIzMywgMjUwLCAyMCwgMSwgMTUzLCAyMTksIDIyMywgMjAsIDEsIDE1MywgMjMxLCAyMzYsIDIyNSwgMjMxLCAKLSAgICAyMCwgMSwgMTUzLCAyMjAsIDE5MiwgMjAsIDEsIDE1MywgMjI4LCAxMDIsIDIwLCAxLCAxNTMsIDIyMCwgMTc3LCAyMjgsIAotICAgIDExMywgMjEyLCAxODcsIDIwLCAxLCAxNTMsIDIyOCwgMSwgMjMwLCAyMTgsIDIwLCAxLCAxNTMsIDIyNiwgMjA5LCAyMCwgMSwgCi0gICAgMTUzLCAyMjgsIDIyNiwgMjAsIDEsIDE1MywgMjE1LCAxNDEsIDIwLCAxLCAxNTMsIDIyOSwgMTMzLCAyMCwgMSwgMTUzLCAKLSAgICAyMzIsIDE3LCAyMCwgMSwgMTUzLCAyMjksIDEyLCAyMCwgMSwgMTUzLCAyMzEsIDE4MiwgMjAsIDEsIDE1MywgMjI4LCAxMiwgCi0gICAgMjAsIDEsIDE1MywgMjE3LCAxNzMsIDIwLCAxLCAxNTMsIDIxOSwgMjIxLCAyMCwgMSwgMTUzLCAyMjYsIDIxMCwgMjAsIDEsIAotICAgIDE1MywgMjI4LCAxMTcsIDIwLCAxLCAxNTMsIDIzMiwgMjUsIDIwLCAxLCAxNTMsIDIyOCwgMTAsIDIwLCAxLCAxNTMsIDIzNCwgCi0gICAgMjIxLCAyMCwgMSwgMTUzLCAyMjgsIDEyMCwgMjAsIDEsIDE1MywgMjE0LCAyMjcsIDIwLCAxLCAxNTMsIDIzMiwgMTU2LCAKLSAgICAyMCwgMSwgMTUzLCAyMjksIDE4MCwgMjAsIDEsIDE1MywgMjMwLCAxNiwgMjAsIDEsIDE1MywgMjMxLCAxODEsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMjgsIDExNSwgMjAsIDEsIDIyNiwgMTQsIDIxNiwgODMsIDIzMiwgMjIsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIAotICAgIDExMSwgMjAsIDEsIDIyNiwgMTQsIDIyMSwgNDksIDIxNiwgODIsIDIwLCAxLCAyMjYsIDE0LCAyMzIsIDE5MywgMjI4LCA5OSwgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTg4LCAyMzIsIDI2LCAyMCwgMSwgMjI2LCAxNCwgMjM0LCA5NiwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIxMywgNiwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTgzLCAyMCwgMSwgMjI2LCAxNCwgMjM0LCAyNDIsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMjYsIDgzLCAyMCwgMSwgMjI2LCAxNCwgMjEzLCA3NywgMjMzLCA3MSwgMjAsIDEsIDIyNiwgMTQsIDIzMywgCi0gICAgMTI3LCAyMjgsIDExMywgMjI4LCAyMCwgMjAsIDEsIDIyNiwgMTQsIDIyOCwgOTcsIDIyMCwgMjE4LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjI5LCAxOTYsIDIyOSwgMTUsIDIwLCAxLCAyMjYsIDE0LCAyNDIsIDIwNSwgMjAsIDEsIDIyNiwgMTQsIDIyNSwgCi0gICAgMTgxLCAyMCwgMSwgMjI2LCAxNCwgMjE2LCA4MywgMjI4LCAxMTEsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIDIyMywgMjI5LCAKLSAgICAxMCwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgMjE5LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA4NCwgMjE3LCAxNzIsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMzEsIDE3MCwgMjMxLCAxODQsIDIwLCAxLCAyMjYsIDE0LCAyMjgsIDExLCAyMjgsIDk5LCAyMCwgMSwgCi0gICAgMjI2LCAxNCwgMjM0LCAxNTEsIDIwLCAxLCAyMjYsIDE0LCAyNDIsIDIwNiwgMjAsIDEsIDIyNiwgMTQsIDIzNCwgMTQ3LCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjMzLCAxNTEsIDIwLCAxLCAyMjYsIDE0LCAyMjYsIDEyMSwgMjAsIDEsIDIyNiwgMTQsIDIxNCwgCi0gICAgMTU5LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCA5OSwgMjMwLCAxMTcsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDEzMiwgMjMxLCAKLSAgICAxNjYsIDIwLCAxLCAyMjYsIDE0LCAyMTMsIDE4MSwgMjAsIDEsIDIyNiwgMTQsIDIyMiwgMTgyLCAyMCwgMSwgMjI2LCAxNCwgCi0gICAgMjE4LCA0NSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgOTYsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDExNywgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIyOSwgMTE4LCAyMzMsIDEwNywgMjAsIDEsIDIyNiwgMTQsIDIzMSwgODYsIDIwLCAxLCAyMjYsIDE0LCAyMTgsIAotICAgIDI1MywgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTc0LCAyMCwgMSwgMjI2LCAxNCwgMjMwLCAyMDMsIDIwLCAxLCAyMjYsIDE0LCAKLSAgICAyMjgsIDIxLCAyMCwgMSwgMjI2LCAxNCwgMjI1LCAyNCwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgOTUsIDIyOSwgMTM0LCAyMCwgCi0gICAgMSwgMjI2LCAxNCwgMjQ0LCA5NSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTYxLCAyMCwgMSwgMjI2LCAxNCwgMjQ0LCAxMTYsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDE1OSwgMjAsIDEsIDIyNiwgMTQsIDIzMiwgNDMsIDIyOSwgNCwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIzMiwgNDMsIDIyOCwgMjM2LCAyMCwgMSwgMjI2LCAxNCwgMjMzLCAzNSwgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTQwLCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjI4LCAxMjIsIDIwLCAxLCAyMjYsIDE0LCAxODgsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDgzLCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjI5LCA4NywgMjAsIDEsIDEzMSwgMjI5LCA5OCwgMjMyLCAyNCwgMjAsIDEsIDEzMSwgMjI3LCAKLSAgICAyMzcsIDIwLCAxLCAxMzEsIDIxMiwgMTg3LCAyMCwgMSwgMTMxLCAyMTQsIDM3LCAyMCwgMSwgMTMxLCAyMjksIDEzMywgMjAsIAotICAgIDEsIDEzMSwgMjI5LCAyMTcsIDIwLCAxLCAxMzEsIDIyOSwgMTA1LCAyMCwgMSwgMTMxLCAyNDIsIDIxNSwgMjAsIDEsIDEzMSwgCi0gICAgMjMxLCAxNzgsIDIwLCAxLCAxMzEsIDI0MywgNTMsIDIwLCAxLCAxMzEsIDIyOCwgMywgMjMwLCAyMzksIDIzMSwgOTgsIDIwLCAKLSAgICAxLCAxMzEsIDIyOCwgOTUsIDIzMSwgMTY5LCAyMCwgMSwgMTMxLCAyMzEsIDE3NSwgMjAsIDEsIDEzMSwgMjI1LCAxODcsIAotICAgIDIwLCAxLCAxMzEsIDIyOSwgMjAyLCAyMCwgMSwgMTMxLCAyMzEsIDE4NiwgMjUwLCAyMTUsIDIwLCAxLCAxMzEsIDIzNCwgCi0gICAgMTQ5LCAyMCwgMSwgMTMxLCAyNDIsIDIxNiwgMjAsIDEsIDEzMSwgMjM0LCAxNTYsIDIwLCAxLCAxMzEsIDIxMiwgMjA0LCAKLSAgICAyMzAsIDE0NiwgMjAsIDEsIDEzMSwgMjI3LCAyMzEsIDIwLCAxLCAxMzEsIDIzMSwgMTYzLCAyMCwgMSwgMTMxLCAyMjgsIAotICAgIDEyMSwgMjAsIDEsIDEzMSwgMjMxLCAxNjksIDIwLCAxLCAxMzEsIDIxMywgNywgMjAsIDEsIDEzMSwgMjM0LCAyLCAyMCwgMSwgCi0gICAgMTMxLCAyMzUsIDE0LCAyMCwgMSwgMTMxLCAyMjEsIDQ0LCAyMCwgMSwgMTMxLCAyMjksIDIxMSwgMjAsIDEsIDEzMSwgMjE4LCAKLSAgICA0MywgMjAsIDEsIDEzMSwgMjI4LCAyNDAsIDIwLCAxLCAxMzEsIDIxNywgMTksIDIxMiwgMTg5LCAyMCwgMSwgMTMxLCAyMTksIAotICAgIDIzLCAyMCwgMSwgMTMxLCAyMjksIDEyNCwgMjI4LCAyMCwgMjAsIDEsIDEzMSwgMjE0LCAxNTgsIDIwLCAxLCAxMzEsIDIzMCwgCi0gICAgMTksIDIwLCAxLCAxMzEsIDIzMiwgNDMsIDIzNCwgMTU4LCAyMCwgMSwgMTMxLCAyMjgsIDEwNCwgMjAsIDEsIDEzMSwgMjI5LCAKLSAgICAxMTksIDIwLCAxLCAxMzEsIDIzMywgMTExLCAyMCwgMSwgMTMxLCAyMzEsIDE3MSwgMjAsIDEsIDEzMSwgMjMxLCA3NSwgMjAsIAotICAgIDEsIDEzMSwgMjI4LCA5OCwgMjAsIDEsIDEzMSwgMjE3LCAxNjgsIDIwLCAxLCAxMzEsIDIyOSwgMTIxLCAyMCwgMSwgMTMxLCAKLSAgICAyNDMsIDIwNCwgMjAsIDEsIDEzMSwgMjI5LCAyMTYsIDIwLCAxLCAxMzEsIDIyOCwgMTIzLCAyMCwgMSwgMTMxLCAyMjgsIAotICAgIDExOSwgMjAsIDEsIDEzMSwgMjUxLCAzNiwgMjAsIDEsIDEzMSwgMjE0LCAxNjAsIDIwLCAxLCAxMzEsIDIzMSwgMTc2LCAyMCwgCi0gICAgMSwgMTMxLCAyMjMsIDUxLCAyMCwgMSwgMTMxLCAyMjksIDE0LCAyMCwgMSwgMTMxLCAyMzMsIDEyNiwgMjAsIDEsIDEzMSwgCi0gICAgMjE3LCAxNywgMjAsIDEsIDEzMSwgMjI4LCAxMDUsIDIyOSwgODcsIDIwLCAxLCAxMzEsIDIyOSwgNiwgMjAsIDEsIDEzMSwgCi0gICAgMjM0LCAxNjIsIDIwLCAxLCAxMzEsIDIyOSwgMTI1LCAyMCwgMSwgMTMxLCAyMzIsIDE3LCAyMCwgMSwgMTMxLCAyMzEsIAotICAgIDE2NCwgMjAsIDEsIDEzMSwgMjMyLCAxNTYsIDIwLCAxLCAxMzEsIDIzMywgMjEwLCAyMCwgMSwgMTMxLCAyMjksIDEyLCAyMCwgCi0gICAgMSwgMTMxLCAyMjksIDg3LCAyMCwgMSwgMTMxLCAyMTMsIDE3MiwgMjAsIDEsIDEzMSwgMjI5LCAxMjIsIDIwLCAxLCAxMzEsIAotICAgIDIyOCwgMTA4LCAyMCwgMSwgMTMxLCAyMjgsIDEwMCwgMjAsIDEsIDEzMSwgMjMzLCAyMjQsIDIyOCwgMjI2LCAyMCwgMSwgCi0gICAgMTMxLCAyMjgsIDEwNiwgMjAsIDEsIDEzMSwgMjI5LCAyMjQsIDIwLCAxLCAxMzEsIDIzMiwgNDMsIDIyOCwgMTExLCAyMCwgCi0gICAgMSwgMTMxLCAyMTMsIDkxLCAyMCwgMSwgMTMxLCAyMjksIDIyMywgMjAsIDEsIDEzMSwgMjIwLCAxNDUsIDIwLCAxLCAxMzEsIAotICAgIDIyMSwgNDcsIDIwLCAxLCAxMzEsIDIzMSwgMTcyLCAyMCwgMSwgMTMxLCAyMzIsIDI0LCAyMCwgMSwgMTMxLCAyMzEsIDE4MiwgCi0gICAgMjAsIDEsIDEzMSwgMjM0LCAxNTAsIDIwLCAxLCAxMzEsIDIzMSwgMTczLCAyMCwgMSwgMTMxLCAyMzQsIDE1NCwgMjAsIDEsIAotICAgIDEzMSwgMjMxLCAxODYsIDIyNSwgMjM1LCAyMCwgMSwgMTMxLCAyMTIsIDE3MSwgMjAsIDEsIDEzMSwgMjI5LCAyLCAyMCwgMSwgCi0gICAgMTMxLCAyMzEsIDMzLCAyMCwgMSwgMTMxLCAyMzAsIDE3MCwgMjAsIDEsIDEzMSwgMjIwLCAxOTUsIDIwLCAxLCAxMzEsIAotICAgIDIzNCwgMTcyLCAyMzMsIDk0LCAyMCwgMSwgMTMxLCAyMzQsIDE3MiwgMjQ0LCAxMjgsIDIwLCAxLCAxMzEsIDIyOSwgMTUyLCAKLSAgICAyMCwgMSwgMTMxLCAyMzAsIDE2LCAyMCwgMSwgMTMxLCAyMzIsIDIyOSwgMjAsIDEsIDEzMSwgMjI1LCAxOTcsIDIwLCAxLCAKLSAgICAxMzEsIDIyNiwgNzQsIDIwLCAxLCAxMzEsIDIxNywgMTgzLCAyMCwgMSwgMTAzLCAyMzEsIDE2MiwgMjAsIDEsIDEwMywgCi0gICAgMjE0LCAzNSwgMjAsIDEsIDEwMywgMjI5LCAwLCAyMCwgMSwgMTAzLCAyMzEsIDgzLCAyMCwgMSwgMTAzLCAyMjgsIDI1NCwgCi0gICAgMjAsIDEsIDEwMywgMjMzLCA3LCAyMCwgMSwgMTAzLCAyMjksIDMsIDIwLCAxLCAxMDMsIDIyOCwgMTE4LCAyMCwgMSwgMTAzLCAKLSAgICAyMjksIDEzOSwgMjAsIDEsIDEwMywgMjI4LCAyMCwgMjAsIDEsIDEwMywgMjEzLCAxODIsIDIwLCAxLCAxMDMsIDIyOSwgOTUsIAotICAgIDIwLCAxLCAxMDMsIDIyMCwgMjQxLCAyMCwgMSwgMTAzLCAyMjksIDEwNiwgMjAsIDEsIDEwMywgMjM0LCAxNTcsIDIwLCAxLCAKLSAgICAxMDMsIDIxNywgMTcwLCAyMCwgMSwgMTAzLCAyMjAsIDIyMSwgMjAsIDEsIDEwMywgMjI5LCAxMSwgMjAsIDEsIDEwMywgCi0gICAgMjE4LCAyNTMsIDIwLCAxLCAxMDMsIDIzNCwgMTYyLCAyMCwgMSwgMTAzLCAyMTMsIDc5LCAyMCwgMSwgMTAzLCAyMzMsIAotICAgIDIyNSwgMjAsIDEsIDEwMywgMjIyLCAxNTAsIDIwLCAxLCAxMDMsIDIzMSwgODgsIDIwLCAxLCAxMDMsIDIyOSwgMjE1LCAyMCwgCi0gICAgMSwgMTAzLCAyMzEsIDI1MSwgMjAsIDEsIDEwMywgMjMxLCA5NCwgMjAsIDEsIDEwMywgMjIxLCA0NiwgMjAsIDEsIDEwMywgCi0gICAgMjEzLCAzMCwgMjAsIDEsIDEwMywgMjI5LCA1LCAyMCwgMSwgMTAzLCAyMzQsIDE1MywgMjMxLCAxNjUsIDIwLCAxLCAxMDMsIAotICAgIDIyOSwgMTAyLCAyMCwgMSwgMTAzLCAyMTYsIDgyLCAyMCwgMSwgMTAzLCAyNDIsIDIyNCwgMjAsIDEsIDEwMywgMjI5LCA5MiwgCi0gICAgMjAsIDEsIDEwMywgMjQ0LCA5NiwgMjAsIDEsIDEwMywgMjI5LCAyMTksIDIwLCAxLCAxMDMsIDIzMSwgNjcsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMzEsIDIwLCAxLCAxMDMsIDIyOSwgMjAxLCAyMCwgMSwgMTAzLCAyMzAsIDIxNywgMjAsIDEsIDEwMywgCi0gICAgMjMxLCA3MSwgMjAsIDEsIDEwMywgMjI1LCA2LCAyMCwgMSwgMTAzLCAyMzEsIDY5LCAyMCwgMSwgMTAzLCAyMzEsIDg1LCAKLSAgICAyMCwgMSwgMTAzLCAyMzIsIDE0MiwgMjAsIDEsIDEwMywgMjI4LCAxMTAsIDIwLCAxLCAxMDMsIDIzMSwgMTg1LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDIwMiwgMjAsIDEsIDEwMywgMjI4LCAxMiwgMjAsIDEsIDEwMywgMjE3LCAxNzMsIDIwLCAxLCAxMDMsIAotICAgIDIxOSwgMjIxLCAyMCwgMSwgMTAzLCAyMTIsIDE3MSwgMjAsIDEsIDEwMywgMjM0LCAxNTQsIDIwLCAxLCAxMDMsIDIyNCwgCi0gICAgNjAsIDIwLCAxLCAxMDMsIDIxNywgMjE4LCAyMCwgMSwgMTAzLCAyMjksIDEwMywgMjAsIDEsIDEwMywgMjMxLCA5MCwgMjAsIAotICAgIDEsIDEwMywgMjI4LCAxMDksIDIwLCAxLCAxMDMsIDIzNCwgMTUyLCAyMCwgMSwgMTAzLCAyMjUsIDE5MSwgMjAsIDEsIDEwMywgCi0gICAgMjI2LCAyOCwgMjAsIDEsIDEwMywgMjI3LCAyNDYsIDIwLCAxLCAxMDMsIDIzMywgMzUsIDIwLCAxLCAxMDMsIDIyOSwgMTQwLCAKLSAgICAyMCwgMSwgMTAzLCAyMzEsIDg3LCAyMCwgMSwgMTAzLCAyMjksIDExNCwgMjAsIDEsIDEwMywgMjEyLCAxODQsIDIwLCAxLCAKLSAgICAxMDMsIDIyNiwgMTQ5LCAyMCwgMSwgMTAzLCAyMTIsIDE4MywgMjAsIDEsIDEwMywgMjI5LCAyMjQsIDIwLCAxLCAxMDMsIAotICAgIDIyOCwgOTksIDIwLCAxLCAxMDMsIDIxOSwgMjUsIDIwLCAxLCAxMDMsIDIzMywgMjI5LCAyMCwgMSwgMTAzLCAyMjksIDEyOSwgCi0gICAgMjAsIDEsIDEwMywgMjI5LCAxMDAsIDIwLCAxLCAxMDMsIDIxNiwgNjYsIDIwLCAxLCAxMDMsIDIzMSwgOTgsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMjE5LCAyMCwgMSwgMTAzLCAyMjgsIDEwNywgMjAsIDEsIDEwMywgMjE3LCAxNzEsIDIwLCAxLCAxMDMsIAotICAgIDIzMiwgMTksIDIwLCAxLCAxMDMsIDIyOSwgMTM4LCAyMCwgMSwgMTAzLCAyMzMsIDMwLCAyMCwgMSwgMTAzLCAyMjksIDEyMCwgCi0gICAgMjAsIDEsIDEwMywgMjI4LCAxMTIsIDIwLCAxLCAxMDMsIDIyOCwgMjQwLCAyMCwgMSwgMTAzLCAyNDIsIDIwOSwgMjAsIDEsIAotICAgIDEwMywgMjMzLCAyMzgsIDIwLCAxLCAxMDMsIDIyMywgMjM0LCAyMjcsIDc1LCAyMCwgMSwgMTAzLCAyMTgsIDM1LCAyMCwgMSwgCi0gICAgMTAzLCAyMTYsIDIyMywgMjAsIDEsIDEwMywgMjI4LCAxMCwgMjAsIDEsIDEwMywgMjIzLCAxMzYsIDIwLCAxLCAxMDMsIAotICAgIDIzMywgNzMsIDIwLCAxLCAxMDMsIDIzMSwgMTQ0LCAyMCwgMSwgMTAzLCAxODMsIDIwLCAxLCAxMDMsIDIxOCwgMjA1LCAyMCwgCi0gICAgMSwgMTAzLCAyMzAsIDE3MiwgMjAsIDEsIDEwMywgMjIwLCAyMDcsIDIwLCAxLCAxMDMsIDIyMCwgMjE3LCAyMCwgMSwgMTAzLCAKLSAgICAyMzMsIDE3NywgMjAsIDEsIDEwMywgMjI4LCA5MiwgMjAsIDEsIDEwMywgMjIwLCAxNTAsIDIwLCAxLCAxMDMsIDIyOCwgCi0gICAgMTAxLCAyMCwgMSwgMTAzLCAyMjYsIDg2LCAyMCwgMSwgMTAzLCAyMjksIDY0LCAyMCwgMSwgMTAzLCAyMjAsIDE3NiwgMjAsIAotICAgIDEsIDEwMywgMjI1LCAxOSwgMjAsIDEsIDEwMywgMjMwLCAxMTcsIDIwLCAxLCAxMDMsIDIzMiwgMTc0LCAyMCwgMSwgMTAzLCAKLSAgICAyMjMsIDIzNCwgMjMwLCAxNjYsIDIwLCAxLCAxMDMsIDIxNywgNzEsIDIwLCAxLCAxMDMsIDIyOCwgOTMsIDIwLCAxLCAxMDMsIAotICAgIDIzMSwgMTg2LCAxOTgsIDIwLCAxLCAxMDMsIDIyMiwgMTQ4LCAyMCwgMSwgMTAzLCAyNDQsIDE2MywgMjAsIDEsIDgwLCAKLSAgICAyMjksIDIyMywgMjAsIDEsIDgwLCAyMTYsIDIyOSwgMjAsIDEsIDgwLCAyMzEsIDE3NSwgMjAsIDEsIDgwLCAyMzMsIDExMSwgCi0gICAgMjAsIDEsIDgwLCAyMTQsIDEwOSwgMjAsIDEsIDgwLCAyMzIsIDE3OCwgMjAsIDEsIDgwLCAyMjYsIDIxMywgMjAsIDEsIDgwLCAKLSAgICAyMTksIDIzMCwgMjAsIDEsIDgwLCAyMjQsIDM3LCAyMCwgMSwgODAsIDIyOCwgMTE0LCAyMCwgMSwgODAsIDIyOSwgMTk0LCAKLSAgICAyMCwgMSwgODAsIDIyNSwgMzMsIDIwLCAxLCA4MCwgMjE4LCAxMywgMjAsIDEsIDgwLCAyMjksIDEwOCwgMjAsIDEsIDgwLCAKLSAgICAyMzMsIDI1NCwgMjAsIDEsIDgwLCAyMTMsIDE3NSwgMjAsIDEsIDgwLCAyMjIsIDg5LCAyMCwgMSwgODAsIDIyOSwgMTMwLCAKLSAgICAyMCwgMSwgODAsIDIyNiwgMjEwLCAyMCwgMSwgODAsIDIxNiwgMjMwLCAyMCwgMSwgODAsIDIzMywgMjIzLCAyMCwgMSwgODAsIAotICAgIDIzMiwgMTkyLCAyMCwgMSwgODAsIDIyOCwgMTE3LCAyMCwgMSwgODAsIDIyOSwgODQsIDIwLCAxLCA4MCwgMjMyLCAyNSwgCi0gICAgMjAsIDEsIDgwLCAyMjksIDEwMSwgMjAsIDEsIDgwLCAyMjksIDgzLCAyMCwgMSwgODAsIDIyOCwgMTE2LCAyMCwgMSwgODAsIAotICAgIDIyMywgMTM0LCAyMCwgMSwgODAsIDIyOSwgMiwgMjAsIDEsIDgwLCAyMjYsIDg1LCAyMCwgMSwgODAsIDIyMiwgMjAwLCAyMCwgCi0gICAgMSwgODAsIDIyOSwgMTE1LCAyMCwgMSwgODAsIDIzMSwgNzcsIDIwLCAxLCA4MCwgMjQyLCAyMDMsIDIwLCAxLCA4MCwgMjI5LCAKLSAgICAxMDQsIDIwLCAxLCA4MCwgMjI5LCAxMywgMjAsIDEsIDgwLCAyMzEsIDIzNSwgMjAsIDEsIDgwLCAyMzIsIDE3NiwgMjAsIDEsIAotICAgIDgwLCAyMjksIDEzNSwgMjAsIDEsIDgwLCAyMjksIDIwNywgMjAsIDEsIDgwLCAyMTgsIDM0LCAyMjgsIDk5LCAyMCwgMSwgCi0gICAgODAsIDIyMSwgNDgsIDIwLCAxLCA4MCwgMjI1LCAyOSwgMjAsIDEsIDgwLCAyMjksIDIyNywgMjE5LCAyMzUsIDIwLCAxLCAKLSAgICA4MCwgMjI5LCAxMjMsIDIyOCwgMjAsIDIwLCAxLCA4MCwgMjEyLCAyNTEsIDIwLCAxLCA4MCwgMjQyLCAyMDQsIDIwLCAxLCAKLSAgICA4MCwgMjE2LCA4MSwgMjAsIDEsIDgwLCAyMTMsIDEwLCAyMCwgMSwgODAsIDIyNSwgMTUwLCAyMCwgMSwgODAsIDIxNiwgNzEsIAotICAgIDIwLCAxLCA4MCwgMjM0LCAxNjAsIDIwLCAxLCA4MCwgMjE5LCAyNCwgMjAsIDEsIDgwLCAyMTcsIDE3MiwgMjAsIDEsIDgwLCAKLSAgICAyMTQsIDE2MSwgMjAsIDEsIDgwLCAyMTMsIDI0NywgMjAsIDEsIDgwLCAyMzMsIDE1NCwgMjAsIDEsIDgwLCAyMjUsIDM1LCAKLSAgICAyMCwgMSwgODAsIDIxOCwgNDQsIDIwLCAxLCA4MCwgMjQyLCAyMjMsIDIwLCAxLCA4MCwgMjI5LCAxNDQsIDIwLCAxLCA4MCwgCi0gICAgMjIwLCAyMjAsIDIwLCAxLCA4MCwgMjMxLCA3MiwgMjAsIDEsIDgwLCAyMzEsIDE3OSwgMjAsIDEsIDgwLCAyMjcsIDIzNSwgCi0gICAgMjAsIDEsIDgwLCAyMjgsIDIyMywgMjAsIDEsIDgwLCAyNDMsIDQ5LCAyMCwgMSwgODAsIDIxNiwgNzIsIDIwLCAxLCA4MCwgCi0gICAgMjMzLCAyMzIsIDIwLCAxLCA4MCwgMjEzLCA1NywgMjAsIDEsIDgwLCAyMjgsIDExLCAyNDksIDIwOSwgMjAsIDEsIDgwLCAKLSAgICAyMTIsIDI0MSwgMjAsIDEsIDgwLCAyMzEsIDg5LCAyMCwgMSwgODAsIDIyOSwgMjEyLCAyMCwgMSwgODAsIDIyNSwgMjMyLCAKLSAgICAyMCwgMSwgODAsIDIxMiwgMTg4LCAyMCwgMSwgODAsIDIzMywgMzIsIDIwLCAxLCA4MCwgMjQzLCAyMDQsIDIwLCAxLCA4MCwgCi0gICAgMjQzLCA0OCwgMjAsIDEsIDgwLCAyMjksIDk0LCAyMCwgMSwgODAsIDIzNCwgMTYyLCAyMCwgMSwgODAsIDIzMiwgMjgsIDIwLCAKLSAgICAxLCA4MCwgMjI5LCAxMDcsIDIwLCAxLCA4MCwgMjQyLCAyMTAsIDIwLCAxLCA4MCwgMjQ0LCAxNjQsIDIwLCAxLCA4MCwgCi0gICAgMjI4LCA5NCwgMjAsIDEsIDgwLCAyMjYsIDI5LCAyMCwgMSwgODAsIDIxMywgOCwgMjAsIDEsIDgwLCAyMjksIDEzMSwgMjAsIAotICAgIDEsIDgwLCAyMjgsIDExLCAyNTEsIDIwMCwgMjAsIDEsIDgwLCAyMjcsIDIxNSwgMjAsIDEsIDgwLCAyMjUsIDEyNywgMjAsIAotICAgIDEsIDgwLCAyMzEsIDMzLCAyMCwgMSwgODAsIDI0MywgMjAyLCAyMCwgMSwgODAsIDIzMCwgMzgsIDIwLCAxLCA4MCwgMjMwLCAKLSAgICAxNzAsIDIwLCAxLCA4MCwgMjQyLCAyMDksIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDcyLCAyMCwgMSwgODAsIDIzMCwgMTE4LCAKLSAgICAyMCwgMSwgODAsIDIyNSwgMzIsIDIwLCAxLCA4MCwgMjI5LCA5NiwgMjAsIDEsIDgwLCAyMzMsIDIxMCwgMjAsIDEsIDgwLCAKLSAgICAyMjUsIDIyOSwgMjAsIDEsIDgwLCAyMjgsIDEwMiwgMjAsIDEsIDgwLCAyMTMsIDksIDIwLCAxLCA4MCwgMjI5LCAxMTYsIAotICAgIDIwLCAxLCA4MCwgMjI2LCAyMTQsIDIyNiwgNjIsIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDI1MCwgMjAzLCAyMCwgMSwgODAsIAotICAgIDI0NCwgNiwgMjAsIDEsIDgwLCAyMjksIDcsIDIwLCAxLCA4MCwgNjEsIDIwLCAxLCA4MCwgMjE2LCAyMjMsIDIwLCAxLCA4MCwgCi0gICAgNzUsIDIwLCAxLCA4MCwgNzIsIDIwLCAxLCA4MCwgMjMzLCAxMDksIDIwLCAxLCA4MCwgMjI2LCAyMTQsIDIyNSwgMTU3LCAKLSAgICAyMCwgMSwgODAsIDIxOCwgNDksIDIwLCAxLCA4MCwgMjE4LCAyLCAyMCwgMSwgODAsIDIyOSwgMjI3LCAyMzAsIDEwNiwgCi0gICAgMjQwLCAyMjEsIDIwLCAxLCA4MCwgMjIwLCAxOTUsIDIwLCAxLCA4MCwgMjEzLCA1LCAyMCwgMSwgODAsIDIyOSwgNzcsIDIwLCAKLSAgICAxLCA4MCwgMjEyLCAxOTMsIDIwLCAxLCA4MCwgMjEyLCAyMTgsIDIxOCwgMTg1LCAyMCwgMSwgODAsIDIxMiwgMjE4LCAyNDksIAotICAgIDg2LCAyMCwgMSwgODAsIDIxMiwgMTc4LCAyMCwgMSwgODAsIDIxMiwgMTg2LCAyMCwgMSwgODAsIDIzNCwgMTQ4LCAyMCwgMSwgCi0gICAgODAsIDIyNiwgMjcsIDIwLCAxLCA4MCwgMjI5LCA4LCAyNDUsIDY1LCAyMCwgMSwgODAsIDIyNSwgMzAsIDIwLCAxLCA4MCwgCi0gICAgMjEzLCAxODAsIDIwLCAxLCA4MCwgMjQ0LCAxMTYsIDIwLCAxLCA4MCwgMjE0LCAyMjcsIDIwLCAxLCA4MCwgMjMyLCAxNTYsIAotICAgIDIwLCAxLCA4MCwgMjMxLCA0MiwgMjAsIDEsIDgwLCAyMjMsIDIwNCwgMjAsIDEsIDgwLCAyMjQsIDYxLCAyMCwgMSwgODAsIAotICAgIDIyOSwgNzYsIDIwLCAxLCA4MCwgMjI5LCAxNTksIDIwLCAxLCA4MCwgMjIwLCAxODcsIDIwLCAxLCA4MCwgMjIwLCAxNzYsIAotICAgIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDIyMywgMjM2LCAyMCwgMSwgODAsIDIwNSwgMjAsIDEsIDgwLCAyMjUsIDI0MCwgMjAsIAotICAgIDEsIDgwLCAyMzIsIDE3NCwgMjAsIDEsIDgwLCAyMzQsIDM3LCAyMCwgMSwgODAsIDIzMSwgMTIyLCAyMCwgMSwgODAsIDE4OCwgCi0gICAgMjAsIDEsIDgwLCAyMzEsIDIzMiwgMjAsIDEsIDgwLCAyMTcsIDE3NCwgMjAsIDEsIDgwLCAyMzQsIDEwMSwgMjAsIDEsIDgwLCAKLSAgICAyMzAsIDIyMCwgMjAsIDEsIDgwLCAyMTcsIDIwMCwgMjAsIDEsIDgwLCAyNDQsIDEzNywgMjAsIDEsIDgwLCAyNDIsIDE5OSwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDE4MSwgMjAsIDEsIDIyNiwgMTMsIDY5LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAyMzgsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyNDUsIDE2NSwgMjAsIDEsIDIyNiwgMTMsIDIyNCwgMSwgMjAsIDEsIDIyNiwgMTMsIDIxOCwgMzUsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMjgsIDEwLCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxNTcsIDIwLCAxLCAyMjYsIDEzLCAyMjMsIDEzNiwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyMywgMTgyLCAyMCwgMSwgMjI2LCAxMywgMjMxLCAxNDQsIDIwLCAxLCAyMjYsIDEzLCAyMTgsIAotICAgIDQ5LCAyMCwgMSwgMjI2LCAxMywgMjI5LCAyMjYsIDIwLCAxLCAyMjYsIDEzLCAyMjksIDE0LCAyMCwgMSwgMjI2LCAxMywgCi0gICAgMTgzLCAyMCwgMSwgMjI2LCAxMywgMjE4LCAyMDUsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDIwNywgMjAsIDEsIDIyNiwgMTMsIAotICAgIDIyMCwgMTE3LCAyMCwgMSwgMjI2LCAxMywgMjIxLCA0NCwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTc3LCAyMCwgMSwgMjI2LCAKLSAgICAxMywgMjM0LCAxNjIsIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDY0LCAyMCwgMSwgMjI2LCAxMywgMjI4LCA5MiwgMjAsIDEsIAotICAgIDIyNiwgMTMsIDIyOCwgMjQxLCAyMCwgMSwgMjI2LCAxMywgMjEyLCAyMTcsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDE1MCwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDE4NiwgMjAsIDEsIDIyNiwgMTMsIDIyOCwgMTIwLCAyMCwgMSwgMjI2LCAxMywgMjI2LCAyNywgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyOCwgMTAxLCAyMCwgMSwgMjI2LCAxMywgMjEzLCAxODAsIDIwLCAxLCAyMjYsIDEzLCAyMjYsIAotICAgIDg2LCAyMCwgMSwgMjI2LCAxMywgMjIzLCA1MSwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgNjQsIDIwLCAxLCAyMjYsIDEzLCAKLSAgICAyMjMsIDIwNCwgMjAsIDEsIDIyNiwgMTMsIDIzNCwgMTcxLCAyMCwgMSwgMjI2LCAxMywgMjI5LCA5MywgMjAsIDEsIDIyNiwgCi0gICAgMTMsIDIyOSwgMTQxLCAyMCwgMSwgMjI2LCAxMywgMjIwLCAxODcsIDIwLCAxLCAyMjYsIDEzLCAyMjUsIDMzLCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjQ0LCA2LCAyMCwgMSwgMjI2LCAxMywgMjE0LCA0OSwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTMsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyMzIsIDE3NCwgMjAsIDEsIDIyNiwgMTMsIDIzNCwgMzcsIDIwLCAxLCAyMjYsIDEzLCAyMzEsIDE3NywgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIyMywgMjMzLCAyMCwgMSwgMjI2LCAxMywgMTg4LCAyMCwgMSwgMjI2LCAxMywgMjMwLCAyMzEsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMzEsIDE4NSwgMjAsIDEsIDIyNiwgMTMsIDIxNywgMTgzLCAyMCwgMSwgMjI2LCAxMywgMjM0LCA0LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjIyLCAxNjYsIDIwLCAxLCAyMjYsIDEzLCAyMTQsIDk4LCA1NiwgMSwgMjUzLCAxOTMsIDc0LCAKLSAgICAxNDIsIDEsIDI1MywgMTkzLCAyMTMsIDM4LCA0NywgMjcsIDE2LCAyMjUsIDM5LCA0NywgMjcsIDE2LCAyNDgsIDEwMywgNDcsIAotICAgIDI3LCAxNiwgMjI2LCA1MCwgNDcsIDI3LCAxNiwgMjI2LCAyMzcsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyMjYsIDIzNywgCi0gICAgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIxNCwgMjQ4LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgMjE0LCAyNDgsIDI0NywgMTUzLCAKLSAgICA0NywgMjcsIDE2LCAyMzQsIDIwMiwgNDcsIDI3LCAxNiwgMjE4LCAxMTUsIDQ3LCAyNywgMTYsIDIyNiwgMTM3LCA0NywgMjcsIAotICAgIDE2LCAyMTIsIDIwOCwgNDcsIDI3LCAxNiwgMjEyLCAyMDksIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMzMsIDI0MywgNDcsIAotICAgIDI3LCAxNiwgMjUzLCAyMzYsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyNDQsIDI0OSwgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIAotICAgIDIxNywgMjExLCA0NywgMjcsIDE2LCAyMzQsIDE2NywgNDcsIDI3LCAxNiwgMjUzLCAyMjcsIDQ3LCAyNywgMTYsIDI1MywgCi0gICAgMjI4LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjE4LCAxMjEsIDQ3LCAyNywgMTYsIDIxNywgMTEyLCA0NywgMjcsIDE2LCAKLSAgICAyMjcsIDcyLCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMjUsIDM4LCAKLSAgICA0NywgMjcsIDE2LCAyNTAsIDg1LCA0NywgMjcsIDE2LCAyMTQsIDIzOCwgNDcsIDI3LCAxNiwgMjM1LCAxNjIsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAyNTMsIDE5MSwgNDcsIAotICAgIDI3LCAxNiwgMjIyLCAxMzEsIDQ3LCAyNywgMTYsIDIyNiwgMTI4LCA0NywgMjcsIDE2LCAyMTksIDg2LCAyNTMsIDIzMCwgCi0gICAgNDcsIDI3LCAxNiwgMjI2LCAyMzYsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMTQsIDI0NywgMjUzLCAxOTEsIDQ3LCAyNywgCi0gICAgMTYsIDI1MywgMjMxLCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjUzLCAyMjUsIDQ3LCAyNywgMTYsIDIzNCwgNDYsIDQ3LCAKLSAgICAyNywgMTYsIDIyMywgMTk5LCA0NywgMjcsIDE2LCAyMjUsIDIzOCwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIxNywgMzYsIAotICAgIDQ3LCAyNywgMTYsIDI1NCwgMzAsIDQ3LCAyNywgMTYsIDIyMiwgNzgsIDQ3LCAyNywgMTYsIDIxOCwgMTI0LCAyNTMsIDE5MSwgCi0gICAgNDcsIDI3LCAxNiwgMjE4LCAxMjQsIDIzMSwgMTA3LCAyMTksIDg0LCA0NywgMjcsIDE2LCAyMjYsIDIzMSwgMjUzLCAxOTEsIAotICAgIDQ3LCAyNywgMTYsIDIxNywgMTQzLCA0NywgMjcsIDE2LCAyMzMsIDUxLCA0NywgMjcsIDE2LCAyNDUsIDI1MiwgNDcsIDI3LCAKLSAgICAxNiwgMjE2LCAxODUsIDQ3LCAyNywgMTYsIDIxNywgMTg1LCA0NywgMjcsIDE2LCAyMzMsIDI0NiwgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAyMzYsIDI0NCwgMjQ5LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAKLSAgICAyMzYsIDcsIDQ3LCAyNywgMTYsIDIxNiwgMTU3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjM0LCAyMDUsIDIxNiwgMTU2LCAKLSAgICA0NywgMjcsIDE2LCAyMjYsIDc1LCA0NywgMjcsIDE2LCAyMjUsIDQzLCA0NywgMjcsIDE2LCAyMzQsIDIwLCA0NywgMjcsIAotICAgIDE2LCAyNTAsIDE3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjI0LCAzOCwgNDcsIDI3LCAxNiwgMjI2LCAxNDAsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMjYsIDEzOCwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDI0MCwgMTAyLCA0NywgMjcsIDE2LCAKLSAgICAyMzAsIDIzLCA0NywgMjcsIDE2LCAyMjYsIDMyLCA0NywgMjcsIDE2LCAyMzQsIDIxLCAyNTQsIDU4LCA0NywgMjcsIDE2LCAKLSAgICAyMTYsIDE1NywgMjU0LCA1OCwgNDcsIDI3LCAxNiwgMjE5LCA2MywgNDcsIDI3LCAxNiwgMjQyLCAxMDEsIDQ3LCAyNywgMTYsIAotICAgIDIzNSwgMTYyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI3LCA3MiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMjM3LCAKLSAgICAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAzMSwgNDcsIDI3LCAxNiwgMjM0LCA3LCA0NywgMjcsIDE2LCAyMjYsIDMwLCAKLSAgICA0NywgMjcsIDE2LCAyMzMsIDI0NSwgNDcsIDI3LCAxNiwgMjI2LCA3NiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIzNCwgCi0gICAgMTY4LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDI1NCwgNywgNDcsIDI3LCAKLSAgICAxNiwgMjEyLCAyMDYsIDQ3LCAyNywgMTYsIDI1MywgMjI4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjUzLCAyMjksIDIxOCwgCi0gICAgMTIyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjEyLCAyMDcsIDQ3LCAyNywgMTYsIDIzMywgMjQ0LCA0NywgMjcsIDE2LCAKLSAgICAyNDUsIDEzMCwgNDcsIDI3LCAxNiwgMjUwLCA4NiwgNDcsIDI3LCAxNiwgMjMxLCAxMSwgMjM1LCAxNjEsIDQ3LCAyNywgMTYsIAotICAgIDIxNCwgMjQ4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI1LCAyMzgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjUsIDQ0LCAKLSAgICAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI3LCA2OSwgNDcsIDI3LCAxNiwgMjUzLCAyNTEsIDQ3LCAyNywgMTYsIDIzMiwgCi0gICAgMTE4LCA0NywgMjcsIDE2LCAyMjYsIDEzOCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMTQwLCAyMjksIDE3NywgNDcsIAotICAgIDI3LCAxNiwgMjQ1LCAyNiwgMjI2LCAxMzksIDQ3LCAyNywgMTYsIDIzMywgMTc1LCA0NywgMjcsIDE2LCAyNTMsIDI1MiwgCi0gICAgNDcsIDI3LCAxNiwgMjE2LCAxNTcsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNDUsIDEzMywgNDcsIDI3LCAxNiwgMjE4LCAKLSAgICAxMjQsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTgsIDExNiwgNDcsIDI3LCAxNiwgMjUwLCAxNywgMjI5LCAxNzcsIDQ3LCAKLSAgICAyNywgMTYsIDI0NSwgNjksIDQ3LCAyNywgMTYsIDIyMiwgNzksIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTMsIDEzOSwgCi0gICAgMjM0LCA0NiwgNDcsIDI3LCAxNiwgMjE2LCAxNTQsIDQ3LCAyNywgMTYsIDIyNSwgNDUsIDQ3LCAyNywgMTYsIDIxNiwgMTU4LCAKLSAgICA0NywgMjcsIDE2LCAyMTYsIDE1NSwgNDcsIDI3LCAxNiwgMjI1LCA0MiwgNDcsIDI3LCAxNiwgMjE2LCAxNTMsIDQ3LCAyNywgCi0gICAgMTYsIDIyNSwgNDEsIDQ3LCAyNywgMTYsIDI0MiwgMTM0LCA0NywgMjcsIDE2LCAyNTMsIDE4NSwgNDcsIDI3LCAxNiwgMjQ1LCAKLSAgICAyNiwgMjUzLCAxODUsIDQ3LCAyNywgMTYsIDIyNiwgMjMxLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjE3LCAxNDIsIDI0NSwgCi0gICAgMzQsIDQ3LCAyNywgMTYsIDIxNywgMTQyLCAyNDQsIDI0OCwgNDcsIDI3LCAxNiwgMjE3LCAxNDQsIDI1MywgMjMyLCA0NywgCi0gICAgMjcsIDE2LCAyMTcsIDEzNywgMjM0LCAyNTEsIDI1MywgMjI0LCA0NywgMjcsIDE2LCAyMzQsIDIwNCwgNDcsIDI3LCAxNiwgCi0gICAgMjQ1LCA5NywgNDcsIDI3LCAxNiwgMjEzLCAyLCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjEzLCAyLCAyNTQsIDcsIDQ3LCAKLSAgICAyNywgMTYsIDIxOSwgODUsIDQ3LCAyNywgMTYsIDIzNCwgNDcsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQ3LCAxNTQsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMzMsIDI0NywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzMywgMjQ3LCAyNTQsIDU4LCA0NywgCi0gICAgMjcsIDE2LCAyMzMsIDI0NywgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI1MywgMjMxLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAyMzMsIDQ3LCAyNywgMTYsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMTYsIDE2OCwgNDcsIDI3LCAxNiwgMjE3LCAKLSAgICAxNzcsIDQ3LCAyNywgMTYsIDIzNCwgMTEsIDQ3LCAyNywgMTYsIDIzMywgNTYsIDI0NSwgOTIsIDI1MCwgOCwgNDcsIDI3LCAKLSAgICAxNiwgMjMzLCA1NiwgMjQ1LCAyNTMsIDI1MCwgOSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjE2LCAxNzAsIDI1MCwgOSwgNDcsIAotICAgIDI3LCAxNiwgMjMzLCA1NiwgMjE3LCAxODcsIDI1MCwgOSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjM2LCAyLCAyNTAsIDgsIAotICAgIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI2LCAxMjksIAotICAgIDI1MywgMTgxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI2LCAxMjksIDI0NywgMjM2LCA0NywgMjcsIDE2LCAyNDcsIDE3NywgCi0gICAgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIDIyNiwgMTI5LCAyNTMsIDE4MiwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDI0NywgMTc4LCAKLSAgICAyMjYsIDEyOSwgMjUzLCAxODIsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIDIyNiwgMTI5LCAyNDcsIDIzNiwgNDcsIAotICAgIDI3LCAxNiwgMjE2LCAxNzQsIDQ3LCAyNywgMTYsIDI1MywgMTg2LCA0NywgMjcsIDE2LCAyMzYsIDksIDQ3LCAyNywgMTYsIAotICAgIDI0NywgMTk4LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjI1LCAxMzQsIDI1MywgMTg3LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgCi0gICAgMjUzLCAxODQsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyNTMsIDE4NywgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDIzMSwgMTAxLCAKLSAgICA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjMxLCAxMTAsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyNDIsIDEzNiwgNDcsIDI3LCAKLSAgICAxNiwgMjU0LCAxMTYsIDI0MiwgMTMzLCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjI1LCAxMzQsIDI0MiwgMTM2LCA0NywgMjcsIAotICAgIDE2LCAyMzEsIDIxNCwgMjI1LCA1MCwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyNTQsIDYwLCAyMjUsIDUwLCAKLSAgICAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDI0NywgMjM1LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIAotICAgIDI1NCwgNjAsIDI0NywgMjM1LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNiwgMTYzLCAyNDAsIDEwMCwgCi0gICAgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNiwgMTc1LCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE3LCAxODEsIDI0MCwgMTAwLCAKLSAgICA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE3LCAxODEsIDIzMywgNTksIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgCi0gICAgMjMzLCA1OSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMjUsIDE3MSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIAotICAgIDIzNSwgMTY3LCAyMTcsIDIwNCwgMjQwLCAxMDEsIDQ3LCAyNywgMTYsIDI1MywgMjI5LCAyMTcsIDIwNCwgMjQwLCAxMDEsIAotICAgIDQ3LCAyNywgMTYsIDI0NCwgMTQwLCAyMTcsIDE3OCwgNDcsIDI3LCAxNiwgMjQ0LCAxNDAsIDIzMCwgMjEzLCA0NywgMjcsIAotICAgIDE2LCAyNDQsIDE0MCwgMjQ3LCAxODIsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTQsIDI0MiwgMjQwLCAxMDAsIDQ3LCAyNywgCi0gICAgMTYsIDIzMSwgMjE0LCAyMjUsIDQ5LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIyNSwgMTcxLCAyMTcsIAotICAgIDE4MSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDI0MiwgMTMxLCAyMzAsIDk4LCAyNTMsIDIzMiwgNDcsIDI3LCAxNiwgMjQyLCAKLSAgICAxMzEsIDIzMCwgOTgsIDI0NywgMTUyLCA0NywgMjcsIDE2LCAyNDUsIDEwNiwgMjM0LCAyNTEsIDI0MywgMjA3LCAyMTQsIAotICAgIDEwNSwgNDcsIDI3LCAxNiwgMjM2LCA4LCA0NywgMjcsIDE2LCAyMzYsIDYsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNTMsIAotICAgIDE5MiwgMjQ3LCAyMzQsIDI0MCwgOTksIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMTkzLCA0NywgMjcsIDE2LCAKLSAgICAyNDMsIDIwNywgMjQ3LCAxOTYsIDIzMCwgMjMsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyMzAsIDE4LCAyNDAsIDEwMCwgNDcsIAotICAgIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIyMCwgMzAsIDI0NywgCi0gICAgMTk1LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyMzQsIDE4OCwgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyMDcsIDI0NywgMTk2LCAyMTIsIDE2LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIyOSwgNjUsIDIzNCwgCi0gICAgMjAxLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIyOSwgNjUsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyMDcsIDIzMSwgMjU0LCAyNTAsIDEwLCAyNDcsIDE4MiwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIzMSwgMjU0LCAyNTAsIAotICAgIDEwLCAyMzAsIDIxMywgNDcsIDI3LCAxNiwgMjQ0LCA5MSwgMjIwLCAzMCwgMjUwLCAxMCwgMjE0LCAyNDEsIDQ3LCAyNywgCi0gICAgMTYsIDI0MywgMjA3LCAyMjAsIDMwLCAyNTAsIDEwLCAyMTgsIDEyNSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIyOSwgMTc5LCAKLSAgICA0NywgMjcsIDE2LCAyNTAsIDExLCAyMTEsIDI0OCwgNDcsIDI3LCAxNiwgMjUwLCAxMSwgMjM0LCA0NSwgNDcsIDI3LCAxNiwgCi0gICAgMjUwLCAxMSwgMjE5LCAxOTcsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDAsIDE0NiwgMjEzLCAxLCAyMTcsIDE4MiwgNDcsIAotICAgIDI3LCAxNiwgMjQzLCAyMDcsIDI0NSwgMTA3LCAyNTMsIDI1MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyMTYsIDE2NCwgNDcsIAotICAgIDI3LCAxNiwgMjQ3LCAxOTAsIDIxNiwgMTY0LCA0NywgMjcsIDE2LCAyNDcsIDE5MCwgMjE3LCAxODIsIDQ3LCAyNywgMTYsIAotICAgIDI0NywgMTkwLCAyNTMsIDIzNCwgMjQ1LCAyNTMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyMzAsIDIxMSwgCi0gICAgMjE3LCAxODYsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyNDcsIDE3NCwgMjQ1LCAzLCAyNDcsIDkzLCA0NywgCi0gICAgMjcsIDE2LCAyNDcsIDE5MCwgMjE2LCAxNzIsIDIyNywgNzcsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjUzLCAKLSAgICAyMzQsIDI0NSwgMjUzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIzMCwgMjExLCAyMTcsIDE4NiwgMjQ3LCA5MywgCi0gICAgNDcsIDI3LCAxNiwgMjEzLCAxLCAyNDcsIDE3NCwgMjQ1LCAzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIxNiwgCi0gICAgMTcyLCAyMjcsIDc3LCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyNDMsIDI1LCAyNDcsIDE4OSwgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyNSwgMjEzLCAwLCA0NywgMjcsIDE2LCAyNDcsIDE5NywgMjUzLCAyMzQsIDIzMSwgMTIsIDQ3LCAyNywgMTYsIDI0NywgCi0gICAgMTk3LCAyNTMsIDIzNCwgMjMxLCAxMzcsIDQ3LCAyNywgMTYsIDI0NywgMTk3LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjQ3LCAKLSAgICAxOTcsIDIxNywgMTM1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIDEzNSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjE3LCAKLSAgICAxMzYsIDI0NywgMTM4LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIDEzNiwgMjE2LCAxNjUsIDQ3LCAyNywgMTYsIDIyMCwgCi0gICAgODksIDIxNywgMTM2LCAyMTcsIDE3NSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjUzLCAxNTksIDQ3LCAyNywgMTYsIDIyMCwgCi0gICAgODksIDI1MywgMTYwLCAyNDcsIDEzOCwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjUzLCAxNjAsIDIxNiwgMTY1LCA0NywgMjcsIAotICAgIDE2LCAyMjAsIDg5LCAyNTMsIDE2MCwgMjE3LCAxNzUsIDQ3LCAyNywgMTYsIDI0NywgMTc1LCAyNDMsIDYsIDQ3LCAyNywgCi0gICAgMTYsIDI0NywgMTgxLCAyMjcsIDIsIDQ3LCAyNywgMTYsIDIxOSwgNzcsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAxOTMsIDQ3LCAKLSAgICAyNywgMTYsIDI1MywgMTc4LCAyMTQsIDEwNSwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDI0MywgMTEwLCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDE3OCwgMjQ3LCAyMTEsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyMzQsIDE4OCwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIAotICAgIDIxMiwgMTYsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyMjksIDY0LCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgMjI5LCAxNzgsIAotICAgIDIzMSwgMTA5LCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDIzMSwgMTA5LCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgCi0gICAgMjI5LCAxNzgsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAKLSAgICAyMzQsIDQ3LCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyOSwgMTc4LCAyMzQsIDIwMSwgMjcsIDE2LCAyMjAsIAotICAgIDgxLCAyNTIsIDU1LCAyNywgMTYsIDUxLCAyNTIsIDU1LCAyNywgMTYsIDQwLCAyNTIsIDU1LCAyNywgMTYsIDIyMywgMjAzLCAKLSAgICA0MCwgMjUyLCA1NSwgMjcsIDE2LCAyNDgsIDEwMCwgMjUyLCA1NSwgMjcsIDE2LCAyMjAsIDE3NSwgMjUyLCA1NSwgMjcsIAotICAgIDE2LCA0MiwgMjIzLCAyMjgsIDUyLCAyNywgMTYsIDQ2LCAyMjMsIDIyOCwgNTIsIDI3LCAxNiwgMjIzLCAyMjgsIDI0NywgCi0gICAgNzIsIDI3LCAxNiwgMjQ4LCAxNDEsIDIyMiwgODIsIDI3LCAxNiwgMjQ4LCAxNjUsIDI1MCwgMTgxLCAyNywgMTYsIDIyMiwgCi0gICAgODIsIDI3LCAxNiwgMjQ5LCAxNzEsIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgODAsIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgCi0gICAgNzksIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgNzgsIDI3LCAxNiwgMjQ0LCAxMDAsIDI3LCAxNiwgMjQ0LCAxMDEsIDU1LCAKLSAgICAyNywgMTYsIDI1MSwgNzYsIDc3LCAyNywgMTYsIDI1MCwgMjEwLCAyNywgMTYsIDI1MSwgODYsIDI3LCAxNiwgMTI1LCAyNywgCi0gICAgMTYsIDIyNywgNTksIDIxOSwgMTAyLCAyNywgMTYsIDIxNiwgMjMsIDIxOSwgMTAyLCAyNywgMTYsIDIxNywgOTYsIDIxOSwgCi0gICAgMTAyLCAyNywgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgMjcsIDE2LCAyNDQsIDQ5LCAyMTksIDEwMiwgMjcsIDE2LCAyMjAsIAotICAgIDUyLCAyMTksIDEwMiwgMjcsIDE2LCAyMjAsIDUwLCAyNDMsIDIyMCwgMjcsIDE2LCAyNDMsIDIzNCwgMjQzLCAyMjAsIDI3LCAKLSAgICAxNiwgMjQzLCAxNzgsIDI0OSwgMjA3LCAyNywgMTYsIDI0MywgMTc4LCAyNDksIDIwOCwgMjI3LCA0LCAyNTQsIDUxLCAyNywgCi0gICAgMTYsIDI0MywgMTc4LCAyNDksIDIwOCwgMjI3LCA0LCAyNTIsIDQyLCAyNywgMTYsIDI1MCwgMjUzLCAyNDksIDIwNywgMjcsIAotICAgIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDcsIDI3LCAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA4LCAyMjcsIDQsIDI1NCwgNTEsIDI3LCAKLSAgICAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA4LCAyMjcsIDQsIDI1MiwgNDIsIDI3LCAxNiwgMjQ2LCAzOCwgMjQ5LCAyMDYsIDI3LCAKLSAgICAxNiwgMjQ2LCAzOCwgMjQ5LCAyMDUsIDI3LCAxNiwgMjMwLCAxNTUsIDIzMSwgMTU1LCAyMjMsIDIxMywgMjcsIDE2LCA1MSwgCi0gICAgMjIwLCAyNTQsIDI3LCAxNiwgNTEsIDI0NCwgMzQsIDI3LCAxNiwgMjQ0LCAzNSwgMjE1LCAxMzQsIDI3LCAxNiwgMjQ0LCAKLSAgICAzNSwgMjQ2LCA2MCwgMjcsIDE2LCAyMzAsIDksIDIxNSwgMTM0LCAyNywgMTYsIDIzMCwgOSwgMjQ2LCA2MCwgMjcsIDE2LCAKLSAgICAyMjAsIDI1NSwgMjE1LCAxMzQsIDI3LCAxNiwgMjIwLCAyNTUsIDI0NiwgNjAsIDI3LCAxNiwgMjI0LCAxNjcsIDE2MCwgCi0gICAgMjIwLCAyNTQsIDI3LCAxNiwgMjI0LCAxNjcsIDE2MCwgMjQ0LCAzNCwgMjcsIDE2LCAyNDksIDE1NSwgMjE3LCA0MCwgMjcsIAotICAgIDE2LCAyNDksIDI3LCAyMTcsIDQwLCAyNywgMTYsIDIyNywgNCwgMjU0LCA1MSwgMjcsIDE2LCAyMjcsIDQsIDI1MiwgNDIsIAotICAgIDI3LCAxNiwgMjI0LCAxNDksIDI1NCwgNTEsIDI3LCAxNiwgMjI0LCAxNDksIDI1MiwgNDIsIDI3LCAxNiwgMjMwLCAxNTgsIAotICAgIDIyMywgMjEzLCAyNywgMTYsIDIxMywgMjM2LCAyMjMsIDIxMywgMjcsIDE2LCAxNTEsIDIyMywgMjEzLCAyNywgMTYsIDIyNCwgCi0gICAgMTY3LCAyMjMsIDIxMywgMjcsIDE2LCAyNDUsIDE0NiwgMjIzLCAyMTMsIDI3LCAxNiwgMjIwLCA0NiwgMjIzLCAyMTMsIDI3LCAKLSAgICAxNiwgMjE3LCAxMTMsIDIyMywgMjEzLCAyNywgMTYsIDIyMCwgMzgsIDIyMywgMjEzLCAyNywgMTYsIDEyMiwgMjQwLCAyMDEsIAotICAgIDIxNiwgMzYsIDIyMywgMjEzLCAyNywgMTYsIDIxMywgMTY3LCAyMjgsIDE1NCwgMjcsIDE2LCA5NCwgMjI4LCAxNTQsIDI3LCAKLSAgICAxNiwgMjQ5LCAyMjksIDIxMywgMTY3LCAyMjgsIDE1NCwgMjcsIDE2LCA0MSwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgMTYsIAotICAgIDQxLCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDIxMywgMjM4LCAyNywgCi0gICAgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQyLCAKLSAgICAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQyLCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgCi0gICAgMjI4LCAxNTUsIDQ2LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQ2LCAyNTEsIDE0NCwgMjcsIDE2LCAKLSAgICAyMTYsIDE4NCwgMjI4LCAxNTUsIDExOSwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTksIDI1MSwgCi0gICAgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCA0NiwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIAotICAgIDIyOCwgMTU1LCAxMTQsIDQ2LCAyNTEsIDE0NCwgMjcsIDE2LCAyMzAsIDE5OSwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgCi0gICAgMTYsIDIzMCwgMTk5LCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODEsIDIyOCwgMTU1LCAxMTksIDIxMywgCi0gICAgMjM4LCAyNywgMTYsIDIxNiwgMTgxLCAyMjgsIDE1NSwgMTE5LCAyNTEsIDE0NCwgMjcsIDE2LCAyMjYsIDEzMiwgMjI4LCAKLSAgICAxNTQsIDI3LCAxNiwgMjE0LCAxMTMsIDIyOCwgMTU0LCAyNywgMTYsIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMjgsIAotICAgIDU5LCAyMjgsIDE1NCwgMjcsIDE2LCAyNDksIDE3OCwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgMTYsIDI0OSwgMTc4LCAKLSAgICAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjUxLCA3NCwgMjcsIDE2LCAyMTMsIDIzNiwgMjI4LCAxNTgsIDI3LCAxNiwgCi0gICAgMTUxLCAyMjgsIDE1OCwgMjcsIDE2LCAyMjQsIDE2NywgMjI4LCAxNTgsIDI3LCAxNiwgMjQ1LCAxNDYsIDIyOCwgMTU4LCAKLSAgICAyNywgMTYsIDIyMCwgNDYsIDIyOCwgMTU4LCAyNywgMTYsIDIxNywgMTEzLCAyMjgsIDE1OCwgMjcsIDE2LCAyMjAsIDM4LCAKLSAgICAyMjgsIDE1OCwgMjcsIDE2LCAxMjIsIDI0MCwgMjAxLCAyMTYsIDM2LCAyMjgsIDE1OCwgMjcsIDE2LCAzNywgMjE5LCA3OSwgCi0gICAgMjcsIDE2LCAzNywgMjE5LCAxNzIsIDIxOSwgNzksIDI3LCAxNiwgMzcsIDIxNiwgMTkyLCAyNywgMTYsIDM3LCAyMTYsIAotICAgIDE5MSwgMjcsIDE2LCAzNywgMjE2LCAxOTAsIDI3LCAxNiwgMjQ0LCA3MCwgMjE2LCAxOTIsIDI3LCAxNiwgMjQ0LCA3MCwgCi0gICAgMjE2LCAxOTEsIDI3LCAxNiwgMjQ0LCA3MCwgMjE2LCAxOTAsIDI3LCAxNiwgMzcsIDI1MywgMTA1LCAyNDcsIDc0LCAyNywgCi0gICAgMTYsIDM3LCAyNDQsIDQxLCAyNywgMTYsIDM3LCAyNDQsIDQwLCAyNywgMTYsIDM3LCAyNDQsIDM5LCAyNywgMTYsIDM3LCAKLSAgICAyNDQsIDM4LCAyNywgMTYsIDM3LCAyNDQsIDM3LCAyNywgMTYsIDI1MSwgMjM0LCAyNTEsIDI1MCwgMjcsIDE2LCAyNDUsIAotICAgIDEwMSwgMjUxLCAyNTAsIDI3LCAxNiwgMjUxLCAyMzQsIDIxNywgNjUsIDI3LCAxNiwgMjQ1LCAxMDEsIDIxNywgNjUsIDI3LCAKLSAgICAxNiwgMjUxLCAyMzQsIDIyMCwgOCwgMjcsIDE2LCAyNDUsIDEwMSwgMjIwLCA4LCAyNywgMTYsIDI1MSwgMjM0LCAyMjUsIAotICAgIDI0NywgMjcsIDE2LCAyNDUsIDEwMSwgMjI1LCAyNDcsIDI3LCAxNiwgMzcsIDI1NCwgMTc0LCAyNywgMTYsIDM3LCAyMTksIAotICAgIDEwNCwgMjcsIDE2LCAzNywgMjE3LCAxOTEsIDI3LCAxNiwgMzcsIDIxOSwgMTA1LCAyNywgMTYsIDM3LCAyMzEsIDIyNSwgCi0gICAgMjcsIDE2LCAzNywgMjMxLCAyMjQsIDI3LCAxNiwgMzcsIDI1NCwgMTczLCAyNywgMTYsIDM3LCAyMzIsIDE2NywgMjcsIDE2LCAKLSAgICAyNTMsIDE2OSwgMjE1LCAxMzQsIDI3LCAxNiwgMjUzLCAxNjksIDI0NiwgNjAsIDI3LCAxNiwgMzcsIDI0NywgODksIDI3LCAKLSAgICAxNiwgMzcsIDIyMywgMTI4LCAyNywgMTYsIDM3LCAyNDQsIDI3LCAyNywgMTYsIDM3LCAyMjAsIDQsIDI3LCAxNiwgMzcsIAotICAgIDI1MSwgMjE1LCAyNywgMTYsIDM3LCA1MSwgMjE2LCAyMzIsIDI3LCAxNiwgMzcsIDIxNiwgMTY5LCAyMTYsIDIzMiwgMjcsIAotICAgIDE2LCAyMjMsIDEzMiwgMjcsIDE2LCAyMTksIDIwLCAyNywgMTYsIDIxMiwgMTUyLCAyNywgMTYsIDIyNSwgMjM5LCAyNywgCi0gICAgMTYsIDIzMSwgOTIsIDI3LCAxNiwgMjQzLCAyNDIsIDI3LCAxNiwgMjQ5LCA3OCwgMjcsIDE2LCAyNDgsIDI5LCAyNywgMTYsIAotICAgIDI0MiwgMTI2LCAyMjgsIDE1OSwgMjIwLCAyMywgMjcsIDE2LCAyNDIsIDEyNiwgMjI4LCAxNTksIDIyOCwgMTg2LCAyMjAsIAotICAgIDIzLCAyNywgMTYsIDIxNiwgMjEzLCAyNywgMTYsIDIxNiwgNTksIDI3LCAxNiwgMjM1LCAxOTEsIDIxNiwgNTksIDI3LCAxNiwgCi0gICAgMjE2LCA2MCwgMjIwLCAyMywgMjcsIDE2LCAyMTYsIDYwLCAyMTUsIDEzNCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQ0LCAKLSAgICAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDEsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIAotICAgIDM5LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzgsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNywgMjcsIDE2LCAyMjcsIDE1LCAKLSAgICAyMTksIDM2LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzUsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNCwgMjcsIDE2LCAyMjcsIAotICAgIDE1LCAyMTksIDQzLCAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDIsIDI3LCAxNiwgMjQxLCAyMjksIDI3LCAxNiwgMjI5LCAKLSAgICAxODYsIDI3LCAxNiwgMjQ1LCAxMDEsIDY1LCAyMTksIDczLCAyNywgMTYsIDI0OCwgMjIsIDIyMCwgMjMsIDI3LCAxNiwgMzcsIAotICAgIDExOSwgMjUxLCA5NSwgMjcsIDE2LCAzNywgMTE0LCAyNTEsIDk1LCAyNywgMTYsIDM3LCAyNDEsIDIzOSwgMjcsIDE2LCAzNywgCi0gICAgMjE5LCAyNTEsIDIyNSwgMTc1LCAyNywgMTYsIDIyNiwgOTEsIDc3LCAyNywgMTYsIDIyNiwgOTEsIDExNCwgNzcsIDI3LCAKLSAgICAxNiwgMTUxLCAyMjYsIDkxLCA3NywgMjcsIDE2LCAyNDIsIDE1OCwgMjE1LCAxMzQsIDI3LCAxNiwgMjQyLCAxNTgsIDI0NiwgCi0gICAgNjAsIDI3LCAxNiwgMiwgMjQ0LCA2OSwgMjcsIDE2LCAyNDgsIDEyNSwgMjcsIDE2LCAyNDgsIDEyNiwgMjU0LCA2MywgMjcsIAotICAgIDE2LCAyMzEsIDE5NywgMjcsIDE2LCAyMzIsIDE4MiwgMjcsIDE2LCAyNTEsIDcxLCAyNywgMTYsIDIyMSwgNzQsIDIxMywgCi0gICAgMjM4LCAyNywgMTYsIDIyMSwgNzQsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMCwgMjUzLCAyNywgMTYsIDIzMCwgMjU0LCAyNTEsIAotICAgIDE0NCwgMjcsIDE2LCAyMjEsIDY4LCAyMTMsIDIzOCwgMjcsIDE2LCAyMjEsIDY4LCAyNTEsIDE0NCwgMjcsIDE2LCAyNDMsIAotICAgIDE5MiwgMjEzLCAyMzgsIDI3LCAxNiwgMjQzLCAxOTIsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMiwgMTgzLCAyMjYsIDU1LCAKLSAgICAyMjMsIDIxMywgMjcsIDE2LCAyMzIsIDE4MywgMjM2LCAwLCAyMjMsIDIxMywgMjcsIDE2LCAyNTEsIDcyLCAyMjMsIDIxMywgCi0gICAgMjcsIDE2LCAyMjEsIDc0LCAyMjMsIDIxMywgMjcsIDE2LCAyMzAsIDI1NCwgMjIzLCAyMTMsIDI3LCAxNiwgMjIxLCA2OCwgCi0gICAgMjIzLCAyMTMsIDI3LCAxNiwgMjE3LCAyMDIsIDIyNiwgNTMsIDI0OSwgNDgsIDIyNSwgNTgsIDIyNiwgNTQsIDI3LCAxNiwgCi0gICAgMjE3LCAyMDIsIDIyNiwgNTMsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNSwgMjU1LCAyNywgMTYsIDIxNywgMjAyLCAyMjYsIDUzLCAKLSAgICAyNDksIDQ4LCAyMjUsIDU4LCAyMjYsIDU1LCAyNDcsIDE2MywgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIAotICAgIDIyNSwgNTgsIDIyNiwgNTQsIDI3LCAxNiwgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzUsIDI1NSwgCi0gICAgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNiwgMCwgMjQ3LCAxNjMsIDI3LCAxNiwgCi0gICAgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzYsIDAsIDI0NywgMTYyLCAyNywgMTYsIDIxNywgMjAyLCAKLSAgICAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM2LCAwLCAyNDcsIDE2MSwgMjcsIDE2LCAyNDksIDczLCAyNywgMTYsIAotICAgIDI0MiwgMTAzLCAyNTAsIDI1MywgMjQ5LCAyMDcsIDI3LCAxNiwgMjQyLCAxMDMsIDI0NCwgMjMxLCAyNDksIDIwNywgMjcsIAotICAgIDE2LCA0MSwgMjUzLCA3NCwgMjcsIDE2LCAyMTQsIDEzMiwgMjcsIDE2LCAyMjUsIDE0OCwgMjcsIDE2LCAyNDksIDE5OCwgCi0gICAgMjcsIDE2LCAyMjIsIDEyMSwgMjcsIDE2LCAyNDksIDIwMiwgMjcsIDE2LCAyMTYsIDIyMCwgMjcsIDE2LCAyMjUsIDEyMiwgCi0gICAgMjcsIDE2LCAyMjUsIDEyMywgMjQ0LCAyOSwgMjcsIDE2LCAyMjIsIDEyMiwgMjQ0LCAyOSwgMjcsIDE2LCAyMTYsIDIyMSwgCi0gICAgMjIzLCAyMTAsIDI3LCAxNiwgMjI2LCAzOSwgMjE5LCAxMSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTc0LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjMsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE1MywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTQ2LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzgsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzMiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTMxLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDEyOSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTczLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzIsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE3MSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTcwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNjksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2OCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY3LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjYsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2NSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTY0LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjIsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2MSwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTYwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNTksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE1OCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM3LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzYsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDEzNSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM0LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxMzMsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTYzLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNDYsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzOCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTMxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3MiwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTcxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNzAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE2OSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTY2LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjUsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE2NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNTgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU2LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNTUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTUyLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1MCwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTQ5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE0NywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQ1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDQsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE0MywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQyLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNDEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0MCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM5LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxMzcsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzNiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTM1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzQsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzMywgMzcsIDI1LCAKLSAgICAyNywgMjE2LCAxNjYsIDM3LCAyNSwgMjcsIDIxNywgMTc2LCAzNywgMjUsIDI3LCAyMjYsIDYzLCAyNSwgMjcsIDIzMywgNTUsIAotICAgIDIzMCwgMjEyLCAzMSwgMjQ1LCAxNzksIDI0NywgMTc2LCAzMSwgMjQxLCAyMDYsIDI0NSwgMTc5LCAyNDcsIDE3NiwgMzEsIAotICAgIDI0MCwgMjA0LCAyNDUsIDE3OSwgMjQ3LCAxNzYsIDMxLCAyNDUsIDE3OCwgMjQxLCAyMDcsIDI0NywgMTc2LCAzMSwgMjQ1LCAKLSAgICAxNzgsIDI0MCwgMjAzLCAyNDcsIDE3NiwgMzEsIDI0NSwgMTc5LCAxNzAsIDMxLCAyNTAsIDEwOCwgMTcwLCAzMSwgMjQzLCAKLSAgICAyMDAsIDI0OSwgMjI4LCAxNzAsIDMxLCAyMzAsIDI0NiwgMTcwLCAzMSwgMjUyLCA1MCwgMTcwLCAzMSwgMjM0LCAxODUsIAotICAgIDIyMCwgNywgMTcwLCAzMSwgMjQ5LCAxMTgsIDE3MCwgMzEsIDI1MywgMTQ4LCAxNzAsIDMxLCAyMjcsIDI5LCAxNzAsIDMxLCAKLSAgICAyNTEsIDgwLCAyMjYsIDI1NCwgMTcwLCAzMSwgMjQ4LCAyNCwgMTY3LCAyNDcsIDEzMSwgMTcwLCAzMSwgMjQ3LCAxMjgsIAotICAgIDE3MCwgMzEsIDIxMiwgMjEzLCAxNzAsIDMxLCAyMzUsIDI0MywgMTcwLCAzMSwgMjI2LCA3MiwgMTcwLCAzMSwgMjI0LCAyMCwgCi0gICAgMTcwLCAzMSwgMjQ5LCAxMjgsIDE3MCwgMzEsIDI0MSwgNDYsIDI1MiwgMTAxLCAxNzAsIDMxLCAyMTQsIDQzLCAxNzAsIDMxLCAKLSAgICAyNDQsIDgsIDE3MCwgMzEsIDI1NCwgMTUxLCAxNzAsIDMxLCAyMjMsIDIzOSwgMTcwLCAzMSwgMjIzLCAyMTcsIDE3MCwgMzEsIAotICAgIDI0NSwgMTc3LCAxNzAsIDMxLCAyMzUsIDU2LCAxNzAsIDMxLCAyNDksIDEyMywgMTcwLCAzMSwgMjQ1LCAxMDAsIDE3MCwgCi0gICAgMzEsIDI0NiwgNywgMTcwLCAzMSwgMjUwLCA4MSwgMTcwLCAzMSwgMjQ4LCAzMywgMTcwLCAzMSwgMjIsIDIyMywgMjE2LCAKLSAgICAxNzAsIDMxLCAyMjYsIDIwNSwgMTcwLCAzMSwgMjMzLCA1OCwgMTcwLCAzMSwgMjQ5LCAxOTEsIDE3MCwgMzEsIDIzNCwgODYsIAotICAgIDE3MCwgMzEsIDI0MywgNjIsIDE3MCwgMzEsIDIxOSwgNTIsIDE3MCwgMzEsIDIyNSwgMTYsIDE3MCwgMzEsIDI0MywgMTk5LCAKLSAgICAxNzAsIDMxLCAyMjMsIDIxOCwgMTcwLCAzMSwgMjMzLCA5NSwgMTY3LCAyMzAsIDIyNywgMTcwLCAzMSwgMjIzLCAyMTQsIAotICAgIDE3MCwgMzEsIDI0MiwgMTQ0LCAyMTEsIDIxMSwgMjMxLCAxNDEsIDE3MCwgMzEsIDI0NSwgMTAyLCAxNzAsIDMxLCAyMTksIAotICAgIDY0LCAxNzAsIDMxLCAyNDIsIDEwNSwgMTcwLCAzMSwgMjQ1LCA5NCwgMTcwLCAzMSwgMjI2LCAxMDgsIDE3MCwgMzEsIDIyMywgCi0gICAgMTIyLCAxNzAsIDMxLCAyNDQsIDI4LCAxNzAsIDMxLCAyMTQsIDI0MCwgMTY3LCAyMTQsIDI4LCAxNzAsIDMxLCAyNDksIAotICAgIDEzMiwgMTcwLCAzMSwgMjMxLCAxNTQsIDE3MCwgMzEsIDI0NSwgMjcsIDE3MCwgMzEsIDIxNSwgMTQzLCAxNzAsIDMxLCAKLSAgICAyNDcsIDE2NCwgMTcwLCAzMSwgMjQ5LCAxOTMsIDIzMCwgMTgwLCAxNzAsIDMxLCAyNDIsIDg3LCAxNzAsIDMxLCAyNDMsIAotICAgIDYzLCAyMzUsIDI1MSwgMTcwLCAzMSwgMjMxLCAyMDQsIDE3MCwgMzEsIDI1NCwgMTcwLCAxNzAsIDMxLCAyNDUsIDExNSwgCi0gICAgMTcwLCAzMSwgMjQ2LCA2MywgMTcwLCAzMSwgMjE0LCAyNiwgMTcwLCAzMSwgMjIwLCA3OCwgMTcwLCAzMSwgMjM1LCAyMTksIAotICAgIDE3MCwgMzEsIDI0NywgMjQ5LCAxNzAsIDMxLCAyNDgsIDEwNSwgMTcwLCAzMSwgMjQ3LCAxNjAsIDE3MCwgMzEsIDI0NCwgCi0gICAgMjUyLCAxNzAsIDMxLCAyMjEsIDM2LCAxNzAsIDMxLCAyMTksIDY4LCAxNzAsIDMxLCAyNDEsIDI0MSwgMTcwLCAzMSwgMjQ5LCAKLSAgICAxNTEsIDE3MCwgMzEsIDI0OSwgMTg4LCAxNzAsIDMxLCAyNDQsIDE0NSwgMTcwLCAzMSwgMjU0LCAxMTcsIDE3MCwgMzEsIAotICAgIDI0OSwgMTUwLCAxNzAsIDMxLCAyMjcsIDYzLCAyMTcsIDE0OSwgMjE0LCAyMTksIDE3MCwgMzEsIDI0NywgMTg0LCAxNzAsIAotICAgIDMxLCAyMzMsIDE0NywgMTcwLCAzMSwgMjQzLCAyMzksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDExNiwgCi0gICAgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTA5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAKLSAgICAxNjYsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDE2MywgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAKLSAgICAyMSwgMTgwLCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxODksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIAotICAgIDE0NSwgMjEsIDE5OCwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTk1LCAyNDksIDg4LCAyMjMsIDEwMywgCi0gICAgMjE1LCAxNDUsIDIxLCAyMDAsIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDExNiwgMjQ5LCA4OCwgMjIzLCAKLSAgICAxMDMsIDIxNywgMTk2LCAyMSwgMTA5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxNjYsIDI0OSwgODgsIAotICAgIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE2MywgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTgwLCAyNDksIAotICAgIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxODksIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE5OCwgCi0gICAgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTk1LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAKLSAgICAyMDAsIDE0LCAyMiwgNiwgNjEsIDE0LCAyMiwgNiwgMjUzLCA3NCwgMTQsIDIyLCA2LCAyNTAsIDI1MiwgMTQsIDIyLCA2LCAKLSAgICAyNDksIDMsIDE0LCAyMiwgNiwgNzQsIDE0LCAyMiwgNiwgMjQ0LCAyMzAsIDE0LCAyMiwgNiwgMjQzLCAxNzcsIDE0LCAyMiwgCi0gICAgNiwgMjQyLCA0MSwgMTQsIDIyLCA2LCA3MiwgMTQsIDIyLCA2LCAyMzUsIDE0MiwgMTQsIDIyLCA2LCAyMzUsIDI3LCAxNCwgCi0gICAgMjIsIDYsIDE1MCwgMTQsIDIyLCA2LCAxODMsIDE0LCAyMiwgNiwgMjA0LCAxNCwgMjIsIDYsIDc1LCAxNCwgMjIsIDYsIAotICAgIDIyNiwgMjI5LCAxNCwgMjIsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDYsIDE0OSwgMTQsIDIyLCA2LCAxOTcsIDE0LCAyMiwgNiwgCi0gICAgMjE4LCA5OSwgMTQsIDIyLCA2LCA2OSwgMTQsIDIyLCA2LCAyMTUsIDc5LCAxNCwgMjIsIDYsIDIxNCwgODIsIDE0LCAyMiwgCi0gICAgNiwgMjEzLCAxNjYsIDE0LCAyMiwgNiwgMjEzLCAxMDUsIDE0LCAyMiwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMywgNjEsIDE0LCAKLSAgICAyMiwgMywgMjUzLCA3NCwgMTQsIDIyLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAzLCAyNDksIDMsIDE0LCAyMiwgMywgNzQsIAotICAgIDE0LCAyMiwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMywgMjQzLCAxNzcsIDE0LCAyMiwgMywgMjQyLCA0MSwgMTQsIDIyLCAzLCAKLSAgICA3MiwgMTQsIDIyLCAzLCAyMzUsIDE0MiwgMTQsIDIyLCAzLCAyMzUsIDI3LCAxNCwgMjIsIDMsIDE1MCwgMTQsIDIyLCAzLCAKLSAgICAxODMsIDE0LCAyMiwgMywgMjA0LCAxNCwgMjIsIDMsIDc1LCAxNCwgMjIsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIDMsIDIyNCwgCi0gICAgMjQwLCAxNCwgMjIsIDMsIDE0OSwgMTQsIDIyLCAzLCAxOTcsIDE0LCAyMiwgMywgMjE4LCA5OSwgMTQsIDIyLCAzLCA2OSwgCi0gICAgMTQsIDIyLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDMsIDIxNCwgODIsIDE0LCAyMiwgMywgMjEzLCAxNjYsIDE0LCAyMiwgMywgCi0gICAgMjEzLCAxMDUsIDE0LCAyMiwgMywgMjEyLCAxNTIsIDE0LCAzMiwgNiwgNjEsIDE0LCAzMiwgNiwgMjUzLCA3NCwgMTQsIDMyLCAKLSAgICA2LCAyNTAsIDI1MiwgMTQsIDMyLCA2LCAyNDksIDMsIDE0LCAzMiwgNiwgNzQsIDE0LCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAKLSAgICAzMiwgNiwgMjQzLCAxNzcsIDE0LCAzMiwgNiwgMjQyLCA0MSwgMTQsIDMyLCA2LCA3MiwgMTQsIDMyLCA2LCAyMzUsIDE0MiwgCi0gICAgMTQsIDMyLCA2LCAyMzUsIDI3LCAxNCwgMzIsIDYsIDE1MCwgMTQsIDMyLCA2LCAxODMsIDE0LCAzMiwgNiwgMjA0LCAxNCwgCi0gICAgMzIsIDYsIDc1LCAxNCwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMzIsIDYsIDE0OSwgMTQsIAotICAgIDMyLCA2LCAxOTcsIDE0LCAzMiwgNiwgMjE4LCA5OSwgMTQsIDMyLCA2LCA2OSwgMTQsIDMyLCA2LCAyMTUsIDc5LCAxNCwgCi0gICAgMzIsIDYsIDIxNCwgODIsIDE0LCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAzMiwgNiwgMjEzLCAxMDUsIDE0LCAzMiwgNiwgMjEyLCAKLSAgICAxNTIsIDE0LCAzMiwgMywgNjEsIDE0LCAzMiwgMywgMjUzLCA3NCwgMTQsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDMyLCAzLCAKLSAgICAyNDksIDMsIDE0LCAzMiwgMywgNzQsIDE0LCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAzMiwgMywgMjQzLCAxNzcsIDE0LCAzMiwgCi0gICAgMywgNzIsIDE0LCAzMiwgMywgMjM1LCAxNDIsIDE0LCAzMiwgMywgMjM1LCAyNywgMTQsIDMyLCAzLCAxNTAsIDE0LCAzMiwgCi0gICAgMywgMTgzLCAxNCwgMzIsIDMsIDIwNCwgMTQsIDMyLCAzLCA3NSwgMTQsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDMyLCAzLCAKLSAgICAyMjQsIDI0MCwgMTQsIDMyLCAzLCAxNDksIDE0LCAzMiwgMywgMTk3LCAxNCwgMzIsIDMsIDIxOCwgOTksIDE0LCAzMiwgMywgCi0gICAgNjksIDE0LCAzMiwgMywgMjE1LCA3OSwgMTQsIDMyLCAzLCAyMTQsIDgyLCAxNCwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzIsIAotICAgIDMsIDIxMywgMTA1LCAxNCwgMzIsIDMsIDIxMiwgMTUyLCAxNCwgMjIsIDMyLCA2LCA2MSwgMTQsIDIyLCAzMiwgNiwgMjUzLCAKLSAgICA3NCwgMTQsIDIyLCAzMiwgNiwgMjUwLCAyNTIsIDE0LCAyMiwgMzIsIDYsIDI0OSwgMywgMTQsIDIyLCAzMiwgNiwgNzQsIAotICAgIDE0LCAyMiwgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMjIsIDMyLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAzMiwgNiwgMjQyLCA0MSwgCi0gICAgMTQsIDIyLCAzMiwgNiwgNzIsIDE0LCAyMiwgMzIsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDMyLCA2LCAyMzUsIDI3LCAxNCwgCi0gICAgMjIsIDMyLCA2LCAxNTAsIDE0LCAyMiwgMzIsIDYsIDE4MywgMTQsIDIyLCAzMiwgNiwgMjA0LCAxNCwgMjIsIDMyLCA2LCAKLSAgICA3NSwgMTQsIDIyLCAzMiwgNiwgMjI2LCAyMjksIDE0LCAyMiwgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDMyLCA2LCAxNDksIAotICAgIDE0LCAyMiwgMzIsIDYsIDE5NywgMTQsIDIyLCAzMiwgNiwgMjE4LCA5OSwgMTQsIDIyLCAzMiwgNiwgNjksIDE0LCAyMiwgCi0gICAgMzIsIDYsIDIxNSwgNzksIDE0LCAyMiwgMzIsIDYsIDIxNCwgODIsIDE0LCAyMiwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMjIsIAotICAgIDMyLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAzMiwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMzIsIDMsIDYxLCAxNCwgMjIsIDMyLCAKLSAgICAzLCAyNTMsIDc0LCAxNCwgMjIsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAzMiwgMywgMjQ5LCAzLCAxNCwgMjIsIDMyLCAKLSAgICAzLCA3NCwgMTQsIDIyLCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMzIsIDMsIDI0MywgMTc3LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyNDIsIDQxLCAxNCwgMjIsIDMyLCAzLCA3MiwgMTQsIDIyLCAzMiwgMywgMjM1LCAxNDIsIDE0LCAyMiwgMzIsIDMsIDIzNSwgCi0gICAgMjcsIDE0LCAyMiwgMzIsIDMsIDE1MCwgMTQsIDIyLCAzMiwgMywgMTgzLCAxNCwgMjIsIDMyLCAzLCAyMDQsIDE0LCAyMiwgCi0gICAgMzIsIDMsIDc1LCAxNCwgMjIsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDIyLCAzMiwgMywgMjI0LCAyNDAsIDE0LCAyMiwgMzIsIAotICAgIDMsIDE0OSwgMTQsIDIyLCAzMiwgMywgMTk3LCAxNCwgMjIsIDMyLCAzLCAyMTgsIDk5LCAxNCwgMjIsIDMyLCAzLCA2OSwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjE1LCA3OSwgMTQsIDIyLCAzMiwgMywgMjE0LCA4MiwgMTQsIDIyLCAzMiwgMywgMjEzLCAxNjYsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMjIsIDMyLCAzLCAyMTIsIDE1MiwgMTQsIDExMywgNiwgNjEsIDE0LCAKLSAgICAxMTMsIDYsIDI1MCwgMjUyLCAxNCwgMTEzLCA2LCAyNDksIDMsIDE0LCAxMTMsIDYsIDI0MywgMTc3LCAxNCwgMTEzLCA2LCAKLSAgICAyMzUsIDE0MiwgMTQsIDExMywgNiwgMjM1LCAyNywgMTQsIDExMywgNiwgMjA0LCAxNCwgMTEzLCA2LCA3NSwgMTQsIDExMywgCi0gICAgNiwgMjI2LCAyMjksIDE0LCAxMTMsIDYsIDIyNCwgMjQwLCAxNCwgMTEzLCA2LCAxOTcsIDE0LCAxMTMsIDYsIDIxOCwgOTksIAotICAgIDE0LCAxMTMsIDYsIDY5LCAxNCwgMTEzLCA2LCAyMTUsIDc5LCAxNCwgMTEzLCA2LCAyMTQsIDgyLCAxNCwgMTEzLCA2LCAKLSAgICAyMTMsIDE2NiwgMTQsIDExMywgNiwgMjEzLCAxMDUsIDE0LCAxMTMsIDYsIDIxMiwgMTUyLCAxNCwgMTEzLCAzLCA2MSwgMTQsIAotICAgIDExMywgMywgMjUzLCA3NCwgMTQsIDExMywgMywgMjUwLCAyNTIsIDE0LCAxMTMsIDMsIDI0OSwgMywgMTQsIDExMywgMywgCi0gICAgMjQ0LCAyMzAsIDE0LCAxMTMsIDMsIDI0MiwgNDEsIDE0LCAxMTMsIDMsIDcyLCAxNCwgMTEzLCAzLCAyMzUsIDE0MiwgMTQsIAotICAgIDExMywgMywgMjM1LCAyNywgMTQsIDExMywgMywgMTUwLCAxNCwgMTEzLCAzLCAxODMsIDE0LCAxMTMsIDMsIDIwNCwgMTQsIAotICAgIDExMywgMywgMjI2LCAyMjksIDE0LCAxMTMsIDMsIDIyNCwgMjQwLCAxNCwgMTEzLCAzLCAxNDksIDE0LCAxMTMsIDMsIDE5NywgCi0gICAgMTQsIDExMywgMywgMjE4LCA5OSwgMTQsIDExMywgMywgNjksIDE0LCAxMTMsIDMsIDIxNSwgNzksIDE0LCAxMTMsIDMsIAotICAgIDIxNCwgODIsIDE0LCAxMTMsIDMsIDIxMywgMTY2LCAxNCwgMTEzLCAzLCAyMTMsIDEwNSwgMTQsIDExMywgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMiwgMTEzLCA2LCA2MSwgMTQsIDIyLCAxMTMsIDYsIDI1MywgNzQsIDE0LCAyMiwgMTEzLCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIyLCAxMTMsIDYsIDI0OSwgMywgMTQsIDIyLCAxMTMsIDYsIDc0LCAxNCwgMjIsIDExMywgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMiwgMTEzLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAxMTMsIDYsIDI0MiwgNDEsIDE0LCAyMiwgMTEzLCA2LCAKLSAgICA3MiwgMTQsIDIyLCAxMTMsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDExMywgNiwgMjM1LCAyNywgMTQsIDIyLCAxMTMsIDYsIAotICAgIDE1MCwgMTQsIDIyLCAxMTMsIDYsIDE4MywgMTQsIDIyLCAxMTMsIDYsIDIwNCwgMTQsIDIyLCAxMTMsIDYsIDc1LCAxNCwgCi0gICAgMjIsIDExMywgNiwgMjI2LCAyMjksIDE0LCAyMiwgMTEzLCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAxMTMsIDYsIDE0OSwgMTQsIAotICAgIDIyLCAxMTMsIDYsIDE5NywgMTQsIDIyLCAxMTMsIDYsIDIxOCwgOTksIDE0LCAyMiwgMTEzLCA2LCA2OSwgMTQsIDIyLCAKLSAgICAxMTMsIDYsIDIxNSwgNzksIDE0LCAyMiwgMTEzLCA2LCAyMTQsIDgyLCAxNCwgMjIsIDExMywgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAyMiwgMTEzLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAxMTMsIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDExMywgMywgNjEsIDE0LCAKLSAgICAyMiwgMTEzLCAzLCAyNTMsIDc0LCAxNCwgMjIsIDExMywgMywgMjUwLCAyNTIsIDE0LCAyMiwgMTEzLCAzLCAyNDksIDMsIAotICAgIDE0LCAyMiwgMTEzLCAzLCA3NCwgMTQsIDIyLCAxMTMsIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDExMywgMywgMjQzLCAxNzcsIAotICAgIDE0LCAyMiwgMTEzLCAzLCAyNDIsIDQxLCAxNCwgMjIsIDExMywgMywgNzIsIDE0LCAyMiwgMTEzLCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDIzNSwgMjcsIDE0LCAyMiwgMTEzLCAzLCAxNTAsIDE0LCAyMiwgMTEzLCAzLCAxODMsIDE0LCAKLSAgICAyMiwgMTEzLCAzLCAyMDQsIDE0LCAyMiwgMTEzLCAzLCA3NSwgMTQsIDIyLCAxMTMsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIAotICAgIDExMywgMywgMjI0LCAyNDAsIDE0LCAyMiwgMTEzLCAzLCAxNDksIDE0LCAyMiwgMTEzLCAzLCAxOTcsIDE0LCAyMiwgMTEzLCAKLSAgICAzLCAyMTgsIDk5LCAxNCwgMjIsIDExMywgMywgNjksIDE0LCAyMiwgMTEzLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDExMywgMywgCi0gICAgMjE0LCA4MiwgMTQsIDIyLCAxMTMsIDMsIDIxMywgMTY2LCAxNCwgMjIsIDExMywgMywgMjEzLCAxMDUsIDE0LCAyMiwgMTEzLCAKLSAgICAzLCAyMTIsIDE1MiwgMTQsIDEyOSwgNiwgNjEsIDE0LCAxMjksIDYsIDI1MywgNzQsIDE0LCAxMjksIDYsIDI0OSwgMywgMTQsIAotICAgIDEyOSwgNiwgNzQsIDE0LCAxMjksIDYsIDI0NCwgMjMwLCAxNCwgMTI5LCA2LCAyNDMsIDE3NywgMTQsIDEyOSwgNiwgMjM1LCAKLSAgICAxNDIsIDE0LCAxMjksIDYsIDIzNSwgMjcsIDE0LCAxMjksIDYsIDE1MCwgMTQsIDEyOSwgNiwgMTgzLCAxNCwgMTI5LCA2LCAKLSAgICAyMDQsIDE0LCAxMjksIDYsIDc1LCAxNCwgMTI5LCA2LCAyMjYsIDIyOSwgMTQsIDEyOSwgNiwgMjI0LCAyNDAsIDE0LCAxMjksIAotICAgIDYsIDE5NywgMTQsIDEyOSwgNiwgMjE4LCA5OSwgMTQsIDEyOSwgNiwgNjksIDE0LCAxMjksIDYsIDIxNSwgNzksIDE0LCAKLSAgICAxMjksIDYsIDIxNCwgODIsIDE0LCAxMjksIDYsIDIxMywgMTY2LCAxNCwgMTI5LCA2LCAyMTMsIDEwNSwgMTQsIDEyOSwgMywgCi0gICAgNjEsIDE0LCAxMjksIDMsIDI1MywgNzQsIDE0LCAxMjksIDMsIDI1MCwgMjUyLCAxNCwgMTI5LCAzLCAyNDksIDMsIDE0LCAKLSAgICAxMjksIDMsIDc0LCAxNCwgMTI5LCAzLCAyNDQsIDIzMCwgMTQsIDEyOSwgMywgMjQzLCAxNzcsIDE0LCAxMjksIDMsIDI0MiwgCi0gICAgNDEsIDE0LCAxMjksIDMsIDcyLCAxNCwgMTI5LCAzLCAyMzUsIDE0MiwgMTQsIDEyOSwgMywgMjM1LCAyNywgMTQsIDEyOSwgCi0gICAgMywgMTUwLCAxNCwgMTI5LCAzLCAxODMsIDE0LCAxMjksIDMsIDIwNCwgMTQsIDEyOSwgMywgNzUsIDE0LCAxMjksIDMsIAotICAgIDIyNiwgMjI5LCAxNCwgMTI5LCAzLCAyMjQsIDI0MCwgMTQsIDEyOSwgMywgMTQ5LCAxNCwgMTI5LCAzLCAxOTcsIDE0LCAKLSAgICAxMjksIDMsIDIxOCwgOTksIDE0LCAxMjksIDMsIDY5LCAxNCwgMTI5LCAzLCAyMTUsIDc5LCAxNCwgMTI5LCAzLCAyMTQsIAotICAgIDgyLCAxNCwgMTI5LCAzLCAyMTMsIDE2NiwgMTQsIDEyOSwgMywgMjEzLCAxMDUsIDE0LCAxMjksIDMsIDIxMiwgMTUyLCAxNCwgCi0gICAgMTg3LCA2LCA2MSwgMTQsIDE4NywgNiwgMjUzLCA3NCwgMTQsIDE4NywgNiwgMjQ5LCAzLCAxNCwgMTg3LCA2LCA3NCwgMTQsIAotICAgIDE4NywgNiwgMjQ0LCAyMzAsIDE0LCAxODcsIDYsIDI0MywgMTc3LCAxNCwgMTg3LCA2LCA3MiwgMTQsIDE4NywgNiwgMjM1LCAKLSAgICAxNDIsIDE0LCAxODcsIDYsIDIzNSwgMjcsIDE0LCAxODcsIDYsIDE1MCwgMTQsIDE4NywgNiwgMTgzLCAxNCwgMTg3LCA2LCAKLSAgICA3NSwgMTQsIDE4NywgNiwgMTk3LCAxNCwgMTg3LCA2LCAyMTgsIDk5LCAxNCwgMTg3LCA2LCA2OSwgMTQsIDE4NywgNiwgCi0gICAgMjE1LCA3OSwgMTQsIDE4NywgNiwgMjE0LCA4MiwgMTQsIDE4NywgNiwgMjEzLCAxNjYsIDE0LCAxODcsIDYsIDIxMywgMTA1LCAKLSAgICAxNCwgMTg3LCAzLCA2MSwgMTQsIDE4NywgMywgMjUzLCA3NCwgMTQsIDE4NywgMywgMjUwLCAyNTIsIDE0LCAxODcsIDMsIAotICAgIDI0OSwgMywgMTQsIDE4NywgMywgNzQsIDE0LCAxODcsIDMsIDI0NCwgMjMwLCAxNCwgMTg3LCAzLCAyNDMsIDE3NywgMTQsIAotICAgIDE4NywgMywgMjQyLCA0MSwgMTQsIDE4NywgMywgNzIsIDE0LCAxODcsIDMsIDIzNSwgMTQyLCAxNCwgMTg3LCAzLCAyMzUsIAotICAgIDI3LCAxNCwgMTg3LCAzLCAxNTAsIDE0LCAxODcsIDMsIDE4MywgMTQsIDE4NywgMywgMjA0LCAxNCwgMTg3LCAzLCA3NSwgCi0gICAgMTQsIDE4NywgMywgMjI2LCAyMjksIDE0LCAxODcsIDMsIDIyNCwgMjQwLCAxNCwgMTg3LCAzLCAxNDksIDE0LCAxODcsIDMsIAotICAgIDE5NywgMTQsIDE4NywgMywgMjE4LCA5OSwgMTQsIDE4NywgMywgNjksIDE0LCAxODcsIDMsIDIxNSwgNzksIDE0LCAxODcsIAotICAgIDMsIDIxNCwgODIsIDE0LCAxODcsIDMsIDIxMywgMTY2LCAxNCwgMTg3LCAzLCAyMTMsIDEwNSwgMTQsIDE4NywgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMiwgMTI5LCA2LCA2MSwgMTQsIDIyLCAxMjksIDYsIDI1MywgNzQsIDE0LCAyMiwgMTI5LCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIyLCAxMjksIDYsIDI0OSwgMywgMTQsIDIyLCAxMjksIDYsIDc0LCAxNCwgMjIsIDEyOSwgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMiwgMTI5LCA2LCAyNDMsIDE3NywgMTQsIDIyLCAxMjksIDYsIDI0MiwgNDEsIDE0LCAyMiwgMTI5LCA2LCAKLSAgICA3MiwgMTQsIDIyLCAxMjksIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDEyOSwgNiwgMjM1LCAyNywgMTQsIDIyLCAxMjksIDYsIAotICAgIDE1MCwgMTQsIDIyLCAxMjksIDYsIDE4MywgMTQsIDIyLCAxMjksIDYsIDIwNCwgMTQsIDIyLCAxMjksIDYsIDc1LCAxNCwgCi0gICAgMjIsIDEyOSwgNiwgMjI2LCAyMjksIDE0LCAyMiwgMTI5LCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAxMjksIDYsIDE0OSwgMTQsIAotICAgIDIyLCAxMjksIDYsIDE5NywgMTQsIDIyLCAxMjksIDYsIDIxOCwgOTksIDE0LCAyMiwgMTI5LCA2LCA2OSwgMTQsIDIyLCAKLSAgICAxMjksIDYsIDIxNSwgNzksIDE0LCAyMiwgMTI5LCA2LCAyMTQsIDgyLCAxNCwgMjIsIDEyOSwgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAyMiwgMTI5LCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAxMjksIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDEyOSwgMywgNjEsIDE0LCAKLSAgICAyMiwgMTI5LCAzLCAyNTMsIDc0LCAxNCwgMjIsIDEyOSwgMywgMjUwLCAyNTIsIDE0LCAyMiwgMTI5LCAzLCAyNDksIDMsIAotICAgIDE0LCAyMiwgMTI5LCAzLCA3NCwgMTQsIDIyLCAxMjksIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDEyOSwgMywgMjQzLCAxNzcsIAotICAgIDE0LCAyMiwgMTI5LCAzLCAyNDIsIDQxLCAxNCwgMjIsIDEyOSwgMywgNzIsIDE0LCAyMiwgMTI5LCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDIyLCAxMjksIDMsIDIzNSwgMjcsIDE0LCAyMiwgMTI5LCAzLCAxNTAsIDE0LCAyMiwgMTI5LCAzLCAxODMsIDE0LCAKLSAgICAyMiwgMTI5LCAzLCAyMDQsIDE0LCAyMiwgMTI5LCAzLCA3NSwgMTQsIDIyLCAxMjksIDMsIDIyNiwgMjI5LCAxNCwgMjIsIAotICAgIDEyOSwgMywgMjI0LCAyNDAsIDE0LCAyMiwgMTI5LCAzLCAxNDksIDE0LCAyMiwgMTI5LCAzLCAxOTcsIDE0LCAyMiwgMTI5LCAKLSAgICAzLCAyMTgsIDk5LCAxNCwgMjIsIDEyOSwgMywgNjksIDE0LCAyMiwgMTI5LCAzLCAyMTUsIDc5LCAxNCwgMjIsIDEyOSwgMywgCi0gICAgMjE0LCA4MiwgMTQsIDIyLCAxMjksIDMsIDIxMywgMTY2LCAxNCwgMjIsIDEyOSwgMywgMjEzLCAxMDUsIDE0LCAyMiwgMTI5LCAKLSAgICAzLCAyMTIsIDE1MiwgMTQsIDM1LCA2LCA2MSwgMTQsIDM1LCA2LCAyNTMsIDc0LCAxNCwgMzUsIDYsIDI1MCwgMjUyLCAxNCwgCi0gICAgMzUsIDYsIDI0OSwgMywgMTQsIDM1LCA2LCA3NCwgMTQsIDM1LCA2LCAyNDQsIDIzMCwgMTQsIDM1LCA2LCAyNDMsIDE3NywgCi0gICAgMTQsIDM1LCA2LCAyNDIsIDQxLCAxNCwgMzUsIDYsIDcyLCAxNCwgMzUsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDYsIDIzNSwgCi0gICAgMjcsIDE0LCAzNSwgNiwgMTUwLCAxNCwgMzUsIDYsIDE4MywgMTQsIDM1LCA2LCAyMDQsIDE0LCAzNSwgNiwgNzUsIDE0LCAKLSAgICAzNSwgNiwgMjI2LCAyMjksIDE0LCAzNSwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgNiwgMTQ5LCAxNCwgMzUsIDYsIDE5NywgMTQsIAotICAgIDM1LCA2LCAyMTgsIDk5LCAxNCwgMzUsIDYsIDY5LCAxNCwgMzUsIDYsIDIxNSwgNzksIDE0LCAzNSwgNiwgMjE0LCA4MiwgCi0gICAgMTQsIDM1LCA2LCAyMTMsIDE2NiwgMTQsIDM1LCA2LCAyMTMsIDEwNSwgMTQsIDM1LCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAzLCAKLSAgICA2MSwgMTQsIDM1LCAzLCAyNTMsIDc0LCAxNCwgMzUsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDMsIDI0OSwgMywgMTQsIDM1LCAKLSAgICAzLCA3NCwgMTQsIDM1LCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAzLCAyNDMsIDE3NywgMTQsIDM1LCAzLCAyNDIsIDQxLCAxNCwgCi0gICAgMzUsIDMsIDcyLCAxNCwgMzUsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDMsIDIzNSwgMjcsIDE0LCAzNSwgMywgMTUwLCAxNCwgCi0gICAgMzUsIDMsIDE4MywgMTQsIDM1LCAzLCAyMDQsIDE0LCAzNSwgMywgNzUsIDE0LCAzNSwgMywgMjI2LCAyMjksIDE0LCAzNSwgCi0gICAgMywgMjI0LCAyNDAsIDE0LCAzNSwgMywgMTQ5LCAxNCwgMzUsIDMsIDE5NywgMTQsIDM1LCAzLCAyMTgsIDk5LCAxNCwgMzUsIAotICAgIDMsIDY5LCAxNCwgMzUsIDMsIDIxNSwgNzksIDE0LCAzNSwgMywgMjE0LCA4MiwgMTQsIDM1LCAzLCAyMTMsIDE2NiwgMTQsIAotICAgIDM1LCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAzLCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgNiwgNjEsIDE0LCAzNSwgMjIsIDYsIAotICAgIDI1MywgNzQsIDE0LCAzNSwgMjIsIDYsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCA2LCAyNDksIDMsIDE0LCAzNSwgMjIsIDYsIAotICAgIDc0LCAxNCwgMzUsIDIyLCA2LCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgNiwgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDYsIDI0MiwgCi0gICAgNDEsIDE0LCAzNSwgMjIsIDYsIDcyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAyNywgCi0gICAgMTQsIDM1LCAyMiwgNiwgMTUwLCAxNCwgMzUsIDIyLCA2LCAxODMsIDE0LCAzNSwgMjIsIDYsIDIwNCwgMTQsIDM1LCAyMiwgCi0gICAgNiwgNzUsIDE0LCAzNSwgMjIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCA2LCAyMjQsIDI0MCwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMTQ5LCAxNCwgMzUsIDIyLCA2LCAxOTcsIDE0LCAzNSwgMjIsIDYsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDYsIDY5LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMTUsIDc5LCAxNCwgMzUsIDIyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDIyLCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCAzLCA2MSwgMTQsIDM1LCAKLSAgICAyMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMsIDI0OSwgMywgMTQsIDM1LCAKLSAgICAyMiwgMywgNzQsIDE0LCAzNSwgMjIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzLCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgCi0gICAgMywgMjQyLCA0MSwgMTQsIDM1LCAyMiwgMywgNzIsIDE0LCAzNSwgMjIsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzLCAxNTAsIDE0LCAzNSwgMjIsIDMsIDE4MywgMTQsIDM1LCAyMiwgMywgMjA0LCAxNCwgCi0gICAgMzUsIDIyLCAzLCA3NSwgMTQsIDM1LCAyMiwgMywgMjI2LCAyMjksIDE0LCAzNSwgMjIsIDMsIDIyNCwgMjQwLCAxNCwgMzUsIAotICAgIDIyLCAzLCAxNDksIDE0LCAzNSwgMjIsIDMsIDE5NywgMTQsIDM1LCAyMiwgMywgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMywgCi0gICAgNjksIDE0LCAzNSwgMjIsIDMsIDIxNSwgNzksIDE0LCAzNSwgMjIsIDMsIDIxNCwgODIsIDE0LCAzNSwgMjIsIDMsIDIxMywgCi0gICAgMTY2LCAxNCwgMzUsIDIyLCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgMywgMjEyLCAxNTIsIDE0LCAzNSwgMzIsIDYsIDYxLCAKLSAgICAxNCwgMzUsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzUsIDMyLCA2LCAyNTAsIDI1MiwgMTQsIDM1LCAzMiwgNiwgMjQ5LCAzLCAKLSAgICAxNCwgMzUsIDMyLCA2LCA3NCwgMTQsIDM1LCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgMzIsIDYsIDI0MywgMTc3LCAxNCwgCi0gICAgMzUsIDMyLCA2LCAyNDIsIDQxLCAxNCwgMzUsIDMyLCA2LCA3MiwgMTQsIDM1LCAzMiwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgCi0gICAgMzIsIDYsIDIzNSwgMjcsIDE0LCAzNSwgMzIsIDYsIDE1MCwgMTQsIDM1LCAzMiwgNiwgMTgzLCAxNCwgMzUsIDMyLCA2LCAKLSAgICAyMDQsIDE0LCAzNSwgMzIsIDYsIDc1LCAxNCwgMzUsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDM1LCAzMiwgNiwgMjI0LCAyNDAsIAotICAgIDE0LCAzNSwgMzIsIDYsIDE0OSwgMTQsIDM1LCAzMiwgNiwgMTk3LCAxNCwgMzUsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIAotICAgIDMyLCA2LCA2OSwgMTQsIDM1LCAzMiwgNiwgMjE1LCA3OSwgMTQsIDM1LCAzMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAzMiwgNiwgCi0gICAgMjEzLCAxNjYsIDE0LCAzNSwgMzIsIDYsIDIxMywgMTA1LCAxNCwgMzUsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAzMiwgCi0gICAgMywgNjEsIDE0LCAzNSwgMzIsIDMsIDI1MywgNzQsIDE0LCAzNSwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDMyLCAzLCAKLSAgICAyNDksIDMsIDE0LCAzNSwgMzIsIDMsIDc0LCAxNCwgMzUsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAzMiwgMywgMjQzLCAKLSAgICAxNzcsIDE0LCAzNSwgMzIsIDMsIDI0MiwgNDEsIDE0LCAzNSwgMzIsIDMsIDcyLCAxNCwgMzUsIDMyLCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDM1LCAzMiwgMywgMjM1LCAyNywgMTQsIDM1LCAzMiwgMywgMTUwLCAxNCwgMzUsIDMyLCAzLCAxODMsIDE0LCAzNSwgCi0gICAgMzIsIDMsIDIwNCwgMTQsIDM1LCAzMiwgMywgNzUsIDE0LCAzNSwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIDMyLCAzLCAKLSAgICAyMjQsIDI0MCwgMTQsIDM1LCAzMiwgMywgMTQ5LCAxNCwgMzUsIDMyLCAzLCAxOTcsIDE0LCAzNSwgMzIsIDMsIDIxOCwgOTksIAotICAgIDE0LCAzNSwgMzIsIDMsIDY5LCAxNCwgMzUsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzUsIDMyLCAzLCAyMTQsIDgyLCAxNCwgCi0gICAgMzUsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDM1LCAzMiwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMzIsIDMsIDIxMiwgMTUyLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgNjEsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzMiwgNiwgCi0gICAgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDksIDMsIDE0LCAzNSwgMjIsIDMyLCA2LCA3NCwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDIsIDQxLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgNzIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgMzIsIDYsIAotICAgIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMyLCA2LCAxNTAsIDE0LCAzNSwgMjIsIDMyLCA2LCAxODMsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMDQsIDE0LCAzNSwgMjIsIDMyLCA2LCA3NSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgMjIsIDMyLCA2LCAxNDksIDE0LCAzNSwgMjIsIDMyLCA2LCAxOTcsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzMiwgNiwgNjksIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTUsIDc5LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDYxLCAxNCwgMzUsIAotICAgIDIyLCAzMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ5LCAKLSAgICAzLCAxNCwgMzUsIDIyLCAzMiwgMywgNzQsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDI0MywgMTc3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQyLCA0MSwgMTQsIDM1LCAyMiwgMzIsIDMsIDcyLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzMiwgMywgMTUwLCAxNCwgCi0gICAgMzUsIDIyLCAzMiwgMywgMTgzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjA0LCAxNCwgMzUsIDIyLCAzMiwgMywgNzUsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNCwgMjQwLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMTQ5LCAxNCwgMzUsIDIyLCAzMiwgMywgMTk3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMzIsIAotICAgIDMsIDY5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE1LCA3OSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNCwgODIsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMzAsIDIwOCwgNiwgNjEsIDE0LCAyMzAsIDIwOCwgNiwgMjUzLCA3NCwgMTQsIDIzMCwgMjA4LCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIzMCwgMjA4LCA2LCAyNDksIDMsIDE0LCAyMzAsIDIwOCwgNiwgNzQsIDE0LCAyMzAsIDIwOCwgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMzAsIDIwOCwgNiwgMjQzLCAxNzcsIDE0LCAyMzAsIDIwOCwgNiwgMjQyLCA0MSwgMTQsIDIzMCwgMjA4LCAKLSAgICA2LCA3MiwgMTQsIDIzMCwgMjA4LCA2LCAyMzUsIDE0MiwgMTQsIDIzMCwgMjA4LCA2LCAyMzUsIDI3LCAxNCwgMjMwLCAyMDgsIAotICAgIDYsIDE1MCwgMTQsIDIzMCwgMjA4LCA2LCAxODMsIDE0LCAyMzAsIDIwOCwgNiwgMjA0LCAxNCwgMjMwLCAyMDgsIDYsIDc1LCAKLSAgICAxNCwgMjMwLCAyMDgsIDYsIDIyNiwgMjI5LCAxNCwgMjMwLCAyMDgsIDYsIDIyNCwgMjQwLCAxNCwgMjMwLCAyMDgsIDYsIAotICAgIDE0OSwgMTQsIDIzMCwgMjA4LCA2LCAxOTcsIDE0LCAyMzAsIDIwOCwgNiwgMjE4LCA5OSwgMTQsIDIzMCwgMjA4LCA2LCA2OSwgCi0gICAgMTQsIDIzMCwgMjA4LCA2LCAyMTUsIDc5LCAxNCwgMjMwLCAyMDgsIDYsIDIxNCwgODIsIDE0LCAyMzAsIDIwOCwgNiwgMjEzLCAKLSAgICAxNjYsIDE0LCAyMzAsIDIwOCwgNiwgMjEzLCAxMDUsIDE0LCAyMzAsIDIwOCwgNiwgMjEyLCAxNTIsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgNjEsIDE0LCAyMzAsIDIwOCwgMywgMjUzLCA3NCwgMTQsIDIzMCwgMjA4LCAzLCAyNTAsIDI1MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyNDksIDMsIDE0LCAyMzAsIDIwOCwgMywgNzQsIDE0LCAyMzAsIDIwOCwgMywgMjQ0LCAyMzAsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgMjQzLCAxNzcsIDE0LCAyMzAsIDIwOCwgMywgMjQyLCA0MSwgMTQsIDIzMCwgMjA4LCAzLCA3MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyMzUsIDE0MiwgMTQsIDIzMCwgMjA4LCAzLCAyMzUsIDI3LCAxNCwgMjMwLCAyMDgsIDMsIDE1MCwgMTQsIDIzMCwgCi0gICAgMjA4LCAzLCAxODMsIDE0LCAyMzAsIDIwOCwgMywgMjA0LCAxNCwgMjMwLCAyMDgsIDMsIDc1LCAxNCwgMjMwLCAyMDgsIDMsIAotICAgIDIyNiwgMjI5LCAxNCwgMjMwLCAyMDgsIDMsIDIyNCwgMjQwLCAxNCwgMjMwLCAyMDgsIDMsIDE0OSwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAxOTcsIDE0LCAyMzAsIDIwOCwgMywgMjE4LCA5OSwgMTQsIDIzMCwgMjA4LCAzLCA2OSwgMTQsIDIzMCwgMjA4LCAzLCAKLSAgICAyMTUsIDc5LCAxNCwgMjMwLCAyMDgsIDMsIDIxNCwgODIsIDE0LCAyMzAsIDIwOCwgMywgMjEzLCAxNjYsIDE0LCAyMzAsIAotICAgIDIwOCwgMywgMjEzLCAxMDUsIDE0LCAyMzAsIDIwOCwgMywgMjEyLCAxNTIsIDE0LCAzMiwgMywgMjQ3LCA3MywgNzIsIDE0LCAKLSAgICAzMiwgMywgMjQ3LCA3MywgMjM1LCAxNDIsIDE0LCAyMiwgNiwgMjU0LCA1MiwgMTQsIDIyLCA2LCAyNTEsIDIwMywgMTQsIAotICAgIDIyLCA2LCAyNDMsIDgzLCAxNCwgMjIsIDYsIDI0OCwgNSwgMTQsIDIyLCA2LCAyNDUsIDYzLCAxNCwgMjIsIDYsIDIxMiwgCi0gICAgNzgsIDE0LCAyMiwgNiwgMjQ1LCAyOCwgMTQsIDIyLCA2LCAyMTcsIDEzMiwgMTQsIDIyLCA2LCAyMzUsIDE4MywgMTQsIDIyLCAKLSAgICA2LCAyMzQsIDIyNywgMTQsIDIyLCA2LCAyMzMsIDEyMiwgMTQsIDIyLCA2LCAyMzAsIDE3MiwgMTQsIDIyLCA2LCAyMjgsIAotICAgIDkyLCAxNCwgMjIsIDYsIDIxMywgMTQ1LCAxNCwgMjIsIDYsIDIyNywgNjUsIDE0LCAyMiwgNiwgMjI1LCAyNDAsIDE0LCAyMiwgCi0gICAgNiwgMjIzLCAxOTAsIDE0LCAyMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMjIsIDYsIDIyMCwgMTAzLCAxNCwgMjIsIDYsIAotICAgIDIxNywgMjQ4LCAxNCwgMjIsIDYsIDIxNSwgMTI4LCAxNCwgMjIsIDYsIDIyNiwgOSwgMTQsIDIyLCA2LCAyNTAsIDQ3LCAxNCwgCi0gICAgMjIsIDYsIDIyNSwgNDYsIDE0LCAyMiwgNiwgMjI3LCA2NywgMTQsIDIyLCAyMzAsIDM5LCAxNCwgMjIsIDMsIDI1NCwgNTIsIAotICAgIDE0LCAyMiwgMywgMjUxLCAyMDMsIDE0LCAyMiwgMywgMjQzLCA4MywgMTQsIDIyLCAzLCAyNDgsIDUsIDE0LCAyMiwgMywgCi0gICAgMjQ1LCA2MywgMTQsIDIyLCAzLCAyMTIsIDc4LCAxNCwgMjIsIDMsIDI0NSwgMjgsIDE0LCAyMiwgMywgMjE3LCAxMzIsIDE0LCAKLSAgICAyMiwgMywgMjM1LCAxODMsIDE0LCAyMiwgMywgMjM0LCAyMjcsIDE0LCAyMiwgMywgMjMzLCAxMjIsIDE0LCAyMiwgMywgCi0gICAgMjMwLCAxNzIsIDE0LCAyMiwgMywgMjI4LCA5MiwgMTQsIDIyLCAzLCAyMTMsIDE0NSwgMTQsIDIyLCAzLCAyMjcsIDY1LCAKLSAgICAxNCwgMjIsIDMsIDIyNSwgMjQwLCAxNCwgMjIsIDMsIDIyMywgMTkwLCAxNCwgMjIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIAotICAgIDIyLCAzLCAyMjAsIDEwMywgMTQsIDIyLCAzLCAyMTcsIDI0OCwgMTQsIDIyLCAzLCAyMTUsIDEyOCwgMTQsIDIyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAyMiwgMywgMjUwLCA0NywgMTQsIDIyLCAzLCAyMjUsIDQ2LCAxNCwgMjIsIDMsIDIyNywgNjcsIDE0LCAKLSAgICAyMiwgMjI2LCAxMjUsIDI0NywgMTg1LCAxNCwgMjIsIDI0NSwgNjQsIDg3LCAxNCwgMjIsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDIyLCAyMzQsIDIyOCwgODcsIDE0LCAyMiwgMjI2LCAxMCwgODcsIDE0LCAyMiwgMjIzLCAxOTEsIDg3LCAxNCwgMjIsIDIyNSwgCi0gICAgMjQxLCA4NywgMTQsIDMyLCA2LCAyNTQsIDUyLCAxNCwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMzIsIDYsIDI0MywgODMsIDE0LCAKLSAgICAzMiwgNiwgMjQ4LCA1LCAxNCwgMzIsIDYsIDI0NSwgNjMsIDE0LCAzMiwgNiwgMjEyLCA3OCwgMTQsIDMyLCA2LCAyNDUsIAotICAgIDI4LCAxNCwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMzIsIDYsIDIzNSwgMTgzLCAxNCwgMzIsIDYsIDIzNCwgMjI3LCAxNCwgCi0gICAgMzIsIDYsIDIzMywgMTIyLCAxNCwgMzIsIDYsIDIzMCwgMTcyLCAxNCwgMzIsIDYsIDIyOCwgOTIsIDE0LCAzMiwgNiwgMjEzLCAKLSAgICAxNDUsIDE0LCAzMiwgNiwgMjI3LCA2NSwgMTQsIDMyLCA2LCAyMjUsIDI0MCwgMTQsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIAotICAgIDMyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAzMiwgNiwgMjIwLCAxMDMsIDE0LCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAzMiwgNiwgCi0gICAgMjE1LCAxMjgsIDE0LCAzMiwgNiwgMjI2LCA5LCAxNCwgMzIsIDYsIDI1MCwgNDcsIDE0LCAzMiwgNiwgMjI1LCA0NiwgMTQsIAotICAgIDMyLCA2LCAyMjcsIDY3LCAxNCwgMzIsIDIzMCwgMzksIDE0LCAzMiwgMywgMjU0LCA1MiwgMTQsIDMyLCAzLCAyNTEsIDIwMywgCi0gICAgMTQsIDMyLCAzLCAyNDMsIDgzLCAxNCwgMzIsIDMsIDI0OCwgNSwgMTQsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMzIsIDMsIAotICAgIDIxMiwgNzgsIDE0LCAzMiwgMywgMjQ1LCAyOCwgMTQsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDMyLCAzLCAyMzUsIDE4MywgCi0gICAgMTQsIDMyLCAzLCAyMzQsIDIyNywgMTQsIDMyLCAzLCAyMzMsIDEyMiwgMTQsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDMyLCAzLCAKLSAgICAyMjgsIDkyLCAxNCwgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMzIsIDMsIDIyNywgNjUsIDE0LCAzMiwgMywgMjI1LCAyNDAsIAotICAgIDE0LCAzMiwgMywgMjIzLCAxOTAsIDE0LCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzIsIDMsIDIyMCwgMTAzLCAxNCwgCi0gICAgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMzIsIDMsIDIxNSwgMTI4LCAxNCwgMzIsIDMsIDIyNiwgOSwgMTQsIDMyLCAzLCAyNTAsIAotICAgIDQ3LCAxNCwgMzIsIDMsIDIyNSwgNDYsIDE0LCAzMiwgMywgMjI3LCA2NywgMTQsIDMyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIAotICAgIDE0LCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAzMiwgMjE3LCAxMzMsIDg3LCAxNCwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDMyLCAKLSAgICAyMjYsIDEwLCA4NywgMTQsIDMyLCAyMjMsIDE5MSwgODcsIDE0LCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNTQsIDUyLCAxNCwgMjIsIDMyLCA2LCAyNTEsIDIwMywgMTQsIDIyLCAzMiwgNiwgMjQzLCA4MywgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjQ4LCA1LCAxNCwgMjIsIDMyLCA2LCAyNDUsIDYzLCAxNCwgMjIsIDMyLCA2LCAyMTIsIDc4LCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNDUsIDI4LCAxNCwgMjIsIDMyLCA2LCAyMTcsIDEzMiwgMTQsIDIyLCAzMiwgNiwgMjM1LCAxODMsIDE0LCAyMiwgMzIsIDYsIAotICAgIDIzNCwgMjI3LCAxNCwgMjIsIDMyLCA2LCAyMzMsIDEyMiwgMTQsIDIyLCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAyMiwgMzIsIAotICAgIDYsIDIyOCwgOTIsIDE0LCAyMiwgMzIsIDYsIDIxMywgMTQ1LCAxNCwgMjIsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMjIsIDMyLCAKLSAgICA2LCAyMjUsIDI0MCwgMTQsIDIyLCAzMiwgNiwgMjIzLCAxOTAsIDE0LCAyMiwgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDIyLCAzMiwgNiwgMjIwLCAxMDMsIDE0LCAyMiwgMzIsIDYsIDIxNywgMjQ4LCAxNCwgMjIsIDMyLCA2LCAyMTUsIDEyOCwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMjI2LCA5LCAxNCwgMjIsIDMyLCA2LCAyNTAsIDQ3LCAxNCwgMjIsIDMyLCA2LCAyMjUsIDQ2LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAyMjcsIDY3LCAxNCwgMjIsIDMyLCAyMzAsIDM5LCAxNCwgMjIsIDMyLCAzLCAyNTQsIDUyLCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyNTEsIDIwMywgMTQsIDIyLCAzMiwgMywgMjQzLCA4MywgMTQsIDIyLCAzMiwgMywgMjQ4LCA1LCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMjIsIDMyLCAzLCAyMTIsIDc4LCAxNCwgMjIsIDMyLCAzLCAyNDUsIDI4LCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDIyLCAzMiwgMywgMjM1LCAxODMsIDE0LCAyMiwgMzIsIDMsIDIzNCwgMjI3LCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMzMsIDEyMiwgMTQsIDIyLCAzMiwgMywgMjMwLCAxNzIsIDE0LCAyMiwgMzIsIDMsIDIyOCwgOTIsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMjIsIDMyLCAzLCAyMjcsIDY1LCAxNCwgMjIsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjIzLCAxOTAsIDE0LCAyMiwgMzIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDIyLCAzMiwgMywgMjIwLCAKLSAgICAxMDMsIDE0LCAyMiwgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMjIsIDMyLCAzLCAyMTUsIDEyOCwgMTQsIDIyLCAzMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMjIsIDMyLCAzLCAyNTAsIDQ3LCAxNCwgMjIsIDMyLCAzLCAyMjUsIDQ2LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyMjcsIDY3LCAxNCwgMjIsIDMyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAyMiwgMzIsIDI0NSwgNjQsIDg3LCAxNCwgMjIsIAotICAgIDMyLCAyMTcsIDEzMywgODcsIDE0LCAyMiwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDIyLCAzMiwgMjI2LCAxMCwgODcsIDE0LCAKLSAgICAyMiwgMzIsIDIyMywgMTkxLCA4NywgMTQsIDIyLCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMzUsIDIyLCA2LCAyNTQsIDUyLCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgNiwgMjQzLCA4MywgMTQsIDM1LCAyMiwgNiwgMjQ4LCA1LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyNDUsIDYzLCAxNCwgMzUsIDIyLCA2LCAyMTIsIDc4LCAxNCwgMzUsIDIyLCA2LCAyNDUsIDI4LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDYsIDIzNCwgCi0gICAgMjI3LCAxNCwgMzUsIDIyLCA2LCAyMzMsIDEyMiwgMTQsIDM1LCAyMiwgNiwgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDYsIAotICAgIDIyOCwgOTIsIDE0LCAzNSwgMjIsIDYsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCA2LCAyMjcsIDY1LCAxNCwgMzUsIDIyLCA2LCAKLSAgICAyMjUsIDI0MCwgMTQsIDM1LCAyMiwgNiwgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAKLSAgICAyMiwgNiwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDYsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCA2LCAyMTUsIDEyOCwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjI2LCA5LCAxNCwgMzUsIDIyLCA2LCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCA2LCAyMjUsIDQ2LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAyMzAsIDM5LCAxNCwgMzUsIDIyLCAzLCAyNTQsIDUyLCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgMywgMjQzLCA4MywgMTQsIDM1LCAyMiwgMywgMjQ4LCA1LCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNDUsIDYzLCAxNCwgMzUsIDIyLCAzLCAyMTIsIDc4LCAxNCwgMzUsIDIyLCAzLCAyNDUsIDI4LCAxNCwgMzUsIAotICAgIDIyLCAzLCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgMywgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMsIDIzNCwgMjI3LCAxNCwgCi0gICAgMzUsIDIyLCAzLCAyMzMsIDEyMiwgMTQsIDM1LCAyMiwgMywgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMsIDIyOCwgOTIsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCAzLCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzLCAyMjUsIDI0MCwgMTQsIAotICAgIDM1LCAyMiwgMywgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgMywgMjIwLCAKLSAgICAxMDMsIDE0LCAzNSwgMjIsIDMsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCAzLCAyMTUsIDEyOCwgMTQsIDM1LCAyMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMzUsIDIyLCAzLCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCAzLCAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMjcsIDY3LCAxNCwgMzUsIDIyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAzNSwgMjIsIDI0NSwgNjQsIDg3LCAxNCwgMzUsIAotICAgIDIyLCAyMTcsIDEzMywgODcsIDE0LCAzNSwgMjIsIDIzNCwgMjI4LCA4NywgMTQsIDM1LCAyMiwgMjI2LCAxMCwgODcsIDE0LCAKLSAgICAzNSwgMjIsIDIyMywgMTkxLCA4NywgMTQsIDM1LCAyMiwgMjI1LCAyNDEsIDg3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjU0LCAKLSAgICA1MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQzLCA4MywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDI0OCwgNSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTIsIDc4LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjQ1LCAyOCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzQsIDIyNywgMTQsIDM1LCAyMiwgMzIsIDYsIDIzMywgMTIyLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjgsIDkyLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI1LCAyNDAsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTUsIDEyOCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNiwgOSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDMyLCA2LCAKLSAgICAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI3LCA2NywgMTQsIDM1LCAyMiwgMzIsIDIzMCwgMzksIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyNTQsIDUyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDMsIDgzLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgMywgMjQ4LCA1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ1LCA2MywgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDUsIDI4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE3LCAxMzIsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMzIsIDMsIDIzNCwgMjI3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjMzLCAKLSAgICAxMjIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyOCwgOTIsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDMsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNSwgCi0gICAgMTI4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI2LCA5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjUwLCA0NywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAzMiwgMjI2LCAxMjUsIAotICAgIDI0NywgMTg1LCAxNCwgMzUsIDIyLCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMTcsIDEzMywgODcsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAyMzQsIDIyOCwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMjYsIDEwLCA4NywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDIyMywgMTkxLCA4NywgMTQsIDM1LCAyMiwgMzIsIDIyNSwgMjQxLCA4NywgMTQsIDIyLCA2LCAyNDcsIDE3OSwgMTQsIDIyLCAKLSAgICAzLCAyNDcsIDE3OSwgMTQsIDIyLCAyMSwgMjEyLCA3OSwgMTQsIDIyLCAyMSwgMTE2LCAxNCwgMjIsIDIxLCAxMDksIDE0LCAKLSAgICAyMiwgMjEsIDE2NiwgMTQsIDIyLCAyMSwgMTYzLCAxNCwgMjIsIDIxLCAxODAsIDE0LCAyMiwgMjEsIDE4OSwgMTQsIDIyLCAKLSAgICAyMSwgMTk4LCAxNCwgMjIsIDIxLCAxOTUsIDE0LCAyMiwgMjEsIDIwMCwgMTQsIDE4NywgMjEsIDIxMiwgNzksIDE0LCAxODcsIAotICAgIDIxLCAxMTYsIDE0LCAxODcsIDIxLCAxMDksIDE0LCAxODcsIDIxLCAxNjYsIDE0LCAxODcsIDIxLCAxNjMsIDE0LCAxODcsIAotICAgIDIxLCAxODAsIDE0LCAxODcsIDIxLCAxODksIDE0LCAxODcsIDIxLCAxOTgsIDE0LCAxODcsIDIxLCAxOTUsIDE0LCAxODcsIAotICAgIDIxLCAyMDAsIDE0LCAzNSwgMjEsIDIxMiwgNzksIDE0LCAzNSwgMjEsIDExNiwgMTQsIDM1LCAyMSwgMTA5LCAxNCwgMzUsIAotICAgIDIxLCAxNjYsIDE0LCAzNSwgMjEsIDE2MywgMTQsIDM1LCAyMSwgMTgwLCAxNCwgMzUsIDIxLCAxODksIDE0LCAzNSwgMjEsIAotICAgIDE5OCwgMTQsIDM1LCAyMSwgMTk1LCAxNCwgMzUsIDIxLCAyMDAsIDE0LCAzNSwgMjIsIDIxLCAyMTIsIDc5LCAxNCwgMzUsIAotICAgIDIyLCAyMSwgMTE2LCAxNCwgMzUsIDIyLCAyMSwgMTA5LCAxNCwgMzUsIDIyLCAyMSwgMTY2LCAxNCwgMzUsIDIyLCAyMSwgCi0gICAgMTYzLCAxNCwgMzUsIDIyLCAyMSwgMTgwLCAxNCwgMzUsIDIyLCAyMSwgMTg5LCAxNCwgMzUsIDIyLCAyMSwgMTk4LCAxNCwgCi0gICAgMzUsIDIyLCAyMSwgMTk1LCAxNCwgMzUsIDIyLCAyMSwgMjAwLCAxNCwgMjMwLCAyMDgsIDIxLCAyMTIsIDc5LCAxNCwgMjMwLCAKLSAgICAyMDgsIDIxLCAxMTYsIDE0LCAyMzAsIDIwOCwgMjEsIDEwOSwgMTQsIDIzMCwgMjA4LCAyMSwgMTY2LCAxNCwgMjMwLCAyMDgsIAotICAgIDIxLCAxNjMsIDE0LCAyMzAsIDIwOCwgMjEsIDE4MCwgMTQsIDIzMCwgMjA4LCAyMSwgMTg5LCAxNCwgMjMwLCAyMDgsIDIxLCAKLSAgICAxOTgsIDE0LCAyMzAsIDIwOCwgMjEsIDE5NSwgMTQsIDIzMCwgMjA4LCAyMSwgMjAwLCAyMzIsIDEwLCA4NSwgMjQ1LCAxNzYsIAotICAgIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjE5LCAyMTUsIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjEzLCAyNTAsIDIxMywgCi0gICAgMjI0LCAyMzIsIDEwLCA4NSwgMjI4LCAxNjcsIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjI0LCA0LCAyNDYsIDUwLCAyMzIsIAotICAgIDEwLCA4NSwgMjQyLCAxMDQsIDI0NiwgNTAsIDIzMiwgMTAsIDg1LCA2NywgMjQ2LCA1MCwgMjMyLCAxMCwgODUsIDEyMiwgCi0gICAgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAxMTcsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMTMzLCA2NSwgMjUwLCAKLSAgICA3NywgMjMyLCAxMCwgODUsIDI0MywgMjM3LCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDI0NCwgNTAsIDY1LCAyNTAsIAotICAgIDc3LCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAyMjEsIDQzLCA2NSwgMjUwLCA3NywgCi0gICAgMjMyLCAxMCwgODUsIDI0NSwgMTUwLCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDIyOSwgMzEsIDY1LCAyNTAsIDc3LCAKLSAgICAyMzIsIDEwLCA4NSwgMTIyLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDExNywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIAotICAgIDg1LCAxMzMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjQzLCAyMzcsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIAotICAgIDIyMSwgNDMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjI5LCAzMSwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAxMjIsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDExNywgCi0gICAgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMTMzLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDMsIDIzNywgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQ0LCA1MCwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjIxLCA0MywgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyOSwgMzEsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyNSwgMTU5LCAyMzIsIAotICAgIDEwLCA4NSwgMjI3LCAyMiwgMjMyLCAxMCwgODUsIDI1MiwgNzMsIDIzMiwgMTAsIDg1LCAyNTAsIDcsIDIzMiwgMTAsIDg1LCAKLSAgICAyMTksIDE3MSwgMjMyLCAxMCwgODUsIDIxOCwgMjQwLCAyMzIsIDEwLCA4NSwgMjUzLCA5NSwgMjMyLCAxMCwgODUsIDIxMywgCi0gICAgMjE3LCAyMzIsIDEwLCA4NSwgMjM1LCA2NSwgMjMyLCAxMCwgODUsIDI1MiwgMTAxLCAxMjcsIDg1LCAxOTksIDI1MiwgMTAxLCAKLSAgICAxMjcsIDg1LCAyNDEsIDMwLCAxMjcsIDg1LCAyNDEsIDI5LCAxMjcsIDg1LCAyNDEsIDI4LCAxMjcsIDg1LCAyNDEsIDI3LCAKLSAgICAxMjcsIDg1LCAyNDEsIDI2LCAxMjcsIDg1LCAyNDEsIDI1LCAxMjcsIDg1LCAyNDEsIDI0LCAxMjcsIDg1LCAyNDEsIDIzLCAKLSAgICAxMjcsIDg1LCAyNDEsIDIyLCAxMjcsIDg1LCAyNDEsIDIxLCAxMjcsIDg1LCAyNDEsIDIwLCAxMjcsIDg1LCAyNDEsIDE5LCAKLSAgICAxMjcsIDg1LCAyNDEsIDE4LCAxMjcsIDg1LCAyNDEsIDE3LCAxMjcsIDg1LCAyNDEsIDE2LCAxMjcsIDg1LCAyNDEsIDE1LCAKLSAgICAxMjcsIDg1LCAyNDEsIDE0LCAxMjcsIDg1LCAyNDEsIDEzLCAxMjcsIDg1LCAyNDEsIDEyLCAxMjcsIDg1LCAyNDEsIDExLCAKLSAgICAxMjcsIDg1LCAyNDEsIDEwLCAxMjcsIDg1LCAyNDEsIDksIDEyNywgODUsIDI0MSwgOCwgMTI3LCA4NSwgMjQxLCA3LCAxMjcsIAotICAgIDg1LCAyNDEsIDYsIDEyNywgODUsIDI0MSwgNSwgMTI3LCA4NSwgMjQxLCA0LCAxMjcsIDg1LCAyNDEsIDMsIDEyNywgODUsIAotICAgIDI0MSwgMiwgMTI3LCA4NSwgMjQxLCAxLCAxMjcsIDg1LCAyNDEsIDAsIDEyNywgODUsIDI0MCwgMjU1LCAxMjcsIDg1LCAKLSAgICAyNDAsIDI1NCwgMTI3LCA4NSwgMjQwLCAyNTMsIDEyNywgODUsIDI0MCwgMjUyLCAxMjcsIDg1LCAyNDAsIDI1MSwgMTI3LCAKLSAgICA4NSwgMjQwLCAyNTAsIDEyNywgODUsIDI0MCwgMjQ5LCAxMjcsIDg1LCAyNDAsIDI0OCwgMTI3LCA4NSwgMjQwLCAyNDcsIAotICAgIDEyNywgODUsIDI0MCwgMjQ2LCAxMjcsIDg1LCAyNDAsIDI0NSwgMTI3LCA4NSwgMjQwLCAyNDQsIDEyNywgODUsIDI0MCwgCi0gICAgMjQzLCAxMjcsIDg1LCAyNDAsIDI0MiwgMTI3LCA4NSwgMjQwLCAyNDEsIDEyNywgODUsIDI0MCwgMjQwLCAxMjcsIDg1LCAKLSAgICAyNDAsIDIzOSwgMTI3LCA4NSwgMjQwLCAyMzgsIDEyNywgODUsIDcxLCAyNTIsIDEwMSwgMTI3LCA4NSwgMjE0LCAyMTUsIAotICAgIDEyNywgODUsIDIxNCwgMjE0LCAxMjcsIDg1LCAyMTQsIDIxMywgMTI3LCA4NSwgMjE0LCAyMTIsIDEyNywgODUsIDIxNCwgCi0gICAgMjExLCAxMjcsIDg1LCAyMTQsIDIxMCwgMTI3LCA4NSwgMjE0LCAyMDksIDEyNywgODUsIDIxNCwgMjA4LCAxMjcsIDg1LCAKLSAgICAyMTQsIDIwNywgMTI3LCA4NSwgMjE0LCAyMDYsIDEyNywgODUsIDIxNCwgMjA1LCAxMjcsIDg1LCAyMTQsIDIwNCwgMTI3LCAKLSAgICA4NSwgMjE0LCAyMDMsIDEyNywgODUsIDIxNCwgMjAyLCAxMjcsIDg1LCAyMTQsIDIwMSwgMTI3LCA4NSwgMjE0LCAyMDAsIAotICAgIDEyNywgODUsIDIxNCwgMTk5LCAxMjcsIDg1LCAyMTQsIDE5OCwgMTI3LCA4NSwgMjE0LCAxOTcsIDEyNywgODUsIDIxNCwgCi0gICAgMTk2LCAxMjcsIDg1LCAyMTQsIDE5NSwgMTI3LCA4NSwgMjE0LCAxOTQsIDEyNywgODUsIDIxNCwgMTkzLCAxMjcsIDg1LCAKLSAgICAyMTQsIDE5MiwgMTI3LCA4NSwgMjE0LCAxOTEsIDEyNywgODUsIDIxNCwgMTkwLCAxMjcsIDg1LCAyMTQsIDE4OSwgMTI3LCAKLSAgICA4NSwgMjE0LCAxODgsIDEyNywgODUsIDIxNCwgMTg3LCAxMjcsIDg1LCAyMTQsIDE4NiwgMTI3LCA4NSwgMjE0LCAxODUsIAotICAgIDEyNywgODUsIDIxNCwgMTg0LCAxMjcsIDg1LCAyMTQsIDE4MywgMTI3LCA4NSwgMjE0LCAxODIsIDEyNywgODUsIDIxNCwgCi0gICAgMTgxLCAxMjcsIDg1LCAyMTQsIDE4MCwgMTI3LCA4NSwgMjE0LCAxNzksIDEyNywgODUsIDIxNCwgMTc4LCAxMjcsIDg1LCAKLSAgICAyMTQsIDE3NywgMTI3LCA4NSwgMjE0LCAxNzYsIDEyNywgODUsIDIxNCwgMTc1LCAxMjcsIDg1LCAyMTQsIDE3NCwgMTI3LCAKLSAgICA4NSwgMjE0LCAxNzMsIDEyNywgODUsIDIxNCwgMTcyLCAxMjcsIDg1LCAyMTQsIDE3MSwgMTI3LCA4NSwgMjE0LCAxNzAsIAotICAgIDEyNywgODUsIDIxNCwgMTY5LCAxMjcsIDg1LCAyMTQsIDE2OCwgMTI3LCA4NSwgMjE0LCAxNjcsIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjUyLCAxMDEsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAxMTcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NCwgNTAsIDY1LCAyMTksIAotICAgIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIxLCAKLSAgICA0MywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAKLSAgICAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIxNywgMjAxLCA2NSwgMjE5LCAKLSAgICAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIAotICAgIDQwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyNDEsIAotICAgIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI0NCwgNTAsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjQxLCAyMDksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDIxNywgMjAxLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyNDEsIDIwOSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjU0LCAxNjksIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAxMzMsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NCwgNTAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCAKLSAgICA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDI0NSwgMTUwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDIxNywgMjAxLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIAotICAgIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjI0LCAxNjAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgODMsIDIzNSwgNjUsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyNDksIAotICAgIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI0NCwgNTAsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjQ5LCAxNzksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDIxNywgMjAxLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyNDksIDE3OSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgNjcsIDIzNSwgNjUsIDIxLCAyMTIsIDgwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIxMiwgODAsIDI0OSwgMTU3LCAyMSwgCi0gICAgMTIyLCAyNDksIDE1NywgMjEsIDExNywgMjQ5LCAxNTcsIDIxLCAxMzMsIDI0OSwgMTU3LCAyMSwgMjQzLCAyMzcsIDI0OSwgCi0gICAgMTU3LCAyMSwgMjQ0LCA1MCwgMjQ5LCAxNTcsIDIxLCAyMjAsIDUzLCAyNDksIDE1NywgMjEsIDIyMSwgNDMsIDI0OSwgMTU3LCAKLSAgICAyMSwgMjQ1LCAxNTAsIDI0OSwgMTU3LCAyMSwgMjI5LCAzMSwgMjQ5LCAxNTcsIDg2LCA3LCA2LCAxLCA2MSwgODYsIDcsIDYsIAotICAgIDEsIDI1MywgNzQsIDg2LCA3LCA2LCAxLCAyNTAsIDI1MiwgODYsIDcsIDYsIDEsIDI0OSwgMywgODYsIDcsIDYsIDEsIDc0LCAKLSAgICA4NiwgNywgNiwgMSwgMjQ0LCAyMzAsIDg2LCA3LCA2LCAxLCAyNDMsIDE3NywgODYsIDcsIDYsIDEsIDI0MiwgNDEsIDg2LCAKLSAgICA3LCA2LCAxLCA3MiwgODYsIDcsIDYsIDEsIDIzNSwgMTQyLCA4NiwgNywgNiwgMSwgMjM1LCAyNywgODYsIDcsIDYsIDEsIAotICAgIDE1MCwgODYsIDcsIDYsIDEsIDE4MywgODYsIDcsIDYsIDEsIDIwNCwgODYsIDcsIDYsIDEsIDc1LCA4NiwgNywgNiwgMSwgCi0gICAgMjI2LCAyMjksIDg2LCA3LCA2LCAxLCAyMjQsIDI0MCwgODYsIDcsIDYsIDEsIDE0OSwgODYsIDcsIDYsIDEsIDE5NywgODYsIAotICAgIDcsIDYsIDEsIDIxOCwgOTksIDg2LCA3LCA2LCAxLCA2OSwgODYsIDcsIDYsIDEsIDIxNSwgNzksIDg2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCA4NiwgNywgNiwgMSwgMjEzLCAxNjYsIDg2LCA3LCA2LCAxLCAyMTMsIDEwNSwgODYsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDcsIDYsIDEsIDE5NywgMzYsIDMyLCA3LCA2LCAxLCAyNTAsIAotICAgIDI1MiwgMzYsIDMyLCA3LCA2LCAxLCAxNDksIDM2LCAyNTAsIDEyNSwgMzYsIDIxMywgMTY4LCA5MSwgNywgNiwgMSwgNjEsIAotICAgIDkxLCA3LCA2LCAxLCAyNTMsIDc0LCA5MSwgNywgNiwgMSwgMjUwLCAyNTIsIDkxLCA3LCA2LCAxLCAyNDksIDMsIDkxLCA3LCAKLSAgICA2LCAxLCA3NCwgOTEsIDcsIDYsIDEsIDI0NCwgMjMwLCA5MSwgNywgNiwgMSwgMjQzLCAxNzcsIDkxLCA3LCA2LCAxLCAyNDIsIAotICAgIDQxLCA5MSwgNywgNiwgMSwgNzIsIDkxLCA3LCA2LCAxLCAyMzUsIDE0MiwgOTEsIDcsIDYsIDEsIDIzNSwgMjcsIDkxLCA3LCAKLSAgICA2LCAxLCAxNTAsIDkxLCA3LCA2LCAxLCAxODMsIDkxLCA3LCA2LCAxLCAyMDQsIDkxLCA3LCA2LCAxLCA3NSwgOTEsIDcsIDYsIAotICAgIDEsIDIyNiwgMjI5LCA5MSwgNywgNiwgMSwgMjI0LCAyNDAsIDkxLCA3LCA2LCAxLCAxNDksIDkxLCA3LCA2LCAxLCAxOTcsIAotICAgIDkxLCA3LCA2LCAxLCAyMTgsIDk5LCA5MSwgNywgNiwgMSwgNjksIDkxLCA3LCA2LCAxLCAyMTUsIDc5LCA5MSwgNywgNiwgMSwgCi0gICAgMjE0LCA4MiwgOTEsIDcsIDYsIDEsIDIxMywgMTY2LCA5MSwgNywgNiwgMSwgMjEzLCAxMDUsIDkxLCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgOTEsIDI0MCwgMTkzLCA5MSwgMjMwLCAxMjAsIDkxLCAyMjIsIDEwMiwgOTEsIDIxOSwgMTU4LCA5MSwgMjI1LCA5OCwgCi0gICAgOTEsIDIxNCwgNywgMTQ2LCAzNiwgNywgNiwgMSwgNjEsIDE0NiwgMzYsIDcsIDYsIDEsIDI1MywgNzQsIDE0NiwgMzYsIDcsIAotICAgIDYsIDEsIDI1MCwgMjUyLCAxNDYsIDM2LCA3LCA2LCAxLCAyNDksIDMsIDE0NiwgMzYsIDcsIDYsIDEsIDc0LCAxNDYsIDM2LCAKLSAgICA3LCA2LCAxLCAyNDQsIDIzMCwgMTQ2LCAzNiwgNywgNiwgMSwgMjQzLCAxNzcsIDE0NiwgMzYsIDcsIDYsIDEsIDI0MiwgNDEsIAotICAgIDE0NiwgMzYsIDcsIDYsIDEsIDcyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMTQ2LCAzNiwgNywgNiwgMSwgMjM1LCAKLSAgICAyNywgMTQ2LCAzNiwgNywgNiwgMSwgMTUwLCAxNDYsIDM2LCA3LCA2LCAxLCAxODMsIDE0NiwgMzYsIDcsIDYsIDEsIDIwNCwgCi0gICAgMTQ2LCAzNiwgNywgNiwgMSwgNzUsIDE0NiwgMzYsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDM2LCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MCwgMTQ2LCAzNiwgNywgNiwgMSwgMTQ5LCAxNDYsIDM2LCA3LCA2LCAxLCAxOTcsIDE0NiwgMzYsIDcsIDYsIDEsIDIxOCwgCi0gICAgOTksIDE0NiwgMzYsIDcsIDYsIDEsIDY5LCAxNDYsIDM2LCA3LCA2LCAxLCAyMTUsIDc5LCAxNDYsIDM2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMTMsIDE2NiwgMTQ2LCAzNiwgNywgNiwgMSwgMjEzLCAxMDUsIDE0NiwgMzYsIAotICAgIDcsIDYsIDEsIDIxMiwgMTUyLCAxNDYsIDkxLCA3LCA2LCAxLCA2MSwgMTQ2LCA5MSwgNywgNiwgMSwgMjUzLCA3NCwgMTQ2LCAKLSAgICA5MSwgNywgNiwgMSwgMjUwLCAyNTIsIDE0NiwgOTEsIDcsIDYsIDEsIDI0OSwgMywgMTQ2LCA5MSwgNywgNiwgMSwgNzQsIAotICAgIDE0NiwgOTEsIDcsIDYsIDEsIDI0NCwgMjMwLCAxNDYsIDkxLCA3LCA2LCAxLCAyNDMsIDE3NywgMTQ2LCA5MSwgNywgNiwgMSwgCi0gICAgMjQyLCA0MSwgMTQ2LCA5MSwgNywgNiwgMSwgNzIsIDE0NiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQyLCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMzUsIDI3LCAxNDYsIDkxLCA3LCA2LCAxLCAxNTAsIDE0NiwgOTEsIDcsIDYsIDEsIDE4MywgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjA0LCAxNDYsIDkxLCA3LCA2LCAxLCA3NSwgMTQ2LCA5MSwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIyNCwgMjQwLCAxNDYsIDkxLCA3LCA2LCAxLCAxNDksIDE0NiwgOTEsIDcsIDYsIDEsIDE5NywgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjE4LCA5OSwgMTQ2LCA5MSwgNywgNiwgMSwgNjksIDE0NiwgOTEsIDcsIDYsIDEsIDIxNSwgNzksIDE0NiwgOTEsIDcsIAotICAgIDYsIDEsIDIxNCwgODIsIDE0NiwgOTEsIDcsIDYsIDEsIDIxMywgMTY2LCAxNDYsIDkxLCA3LCA2LCAxLCAyMTMsIDEwNSwgCi0gICAgMTQ2LCA5MSwgNywgNiwgMSwgMjEyLCAxNTIsIDI0OSwgNjgsIDE0NiwgOTEsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDkxLCAKLSAgICAyNDAsIDEwNiwgMTQ2LCA5MSwgMTkzLCAxNDYsIDkxLCAyMjIsIDIwMiwgMTQ2LCA5MSwgMjU0LCAxODUsIDE0NiwgOTEsIAotICAgIDIxNCwgNywgNDEsIDI0NywgMTE2LCA5MSwgMjQ5LCAyMTYsIDkxLCAyNDksIDEwOSwgOTEsIDI0MywgMjIyLCA5MSwgMjQwLCAKLSAgICA5OCwgOTEsIDIyOSwgMTY4LCA5MSwgMjI5LCAxNjEsIDkxLCAyMjcsIDgwLCA5MSwgMjE5LCAyMjIsIDkxLCAxMTQsIDIsIAotICAgIDI0NCwgMjU0LCA3NywgOTEsIDIxNCwgMTAwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA2MSwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMjUzLCA3NCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjUwLCAyNTIsIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDI0OSwgMywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzQsIDIyMywgMjUzLCAyMzUsIDIzNiwgCi0gICAgMTYsIDEsIDI0NCwgMjMwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyNDMsIDE3NywgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgMjQyLCA0MSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIzNSwgMTQyLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMzUsIDI3LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAxNTAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDE4MywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjA0LCAyMjMsIAotICAgIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3NSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjI2LCAyMjksIDIyMywgMjUzLCAKLSAgICAyMzUsIDIzNiwgMTYsIDEsIDIyNCwgMjQwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAxNDksIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDE5NywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjE4LCA5OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgNjksIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxNSwgNzksIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIxNCwgODIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxMywgMTY2LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAyMTMsIDEwNSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjEyLCAxNTIsIDQxLCAxNDIsIDI0MSwgNDksIDkxLCA1NiwgCi0gICAgMjM0LCAyNywgOTEsIDU2LCAyMjIsIDIwMiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQzLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNDcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1NSwgOTEsIDU2LCAyNDgsIDQxLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgCi0gICAgNjIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0OSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDIxLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNDgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM1LCA5MSwgOSwgMjE1LCAKLSAgICAxNDgsIDIzOCwgMjgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzNywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU4LCA5MSwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgNDQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM2LCAKLSAgICA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyMiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIAotICAgIDI3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1MCwgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDUyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MSwgOTEsIDksIDIxNSwgCi0gICAgMTQ4LCAyMzgsIDM5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjUsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2NCwgOTEsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDE4LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDUsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MywgCi0gICAgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAKLSAgICAxOSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjQsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCAyMywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzEsIDkxLCA5LCAyMTUsIAotICAgIDE0OCwgMjM4LCAzMywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjYsIDkxLCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCA1NywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUxLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIAotICAgIDksIDIxNSwgMTQ4LCAyMzgsIDMyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDY0LCAKLSAgICAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDYyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIAotICAgIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDQ2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDI5LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDQyLCAyMTYsIDIxOSwgCi0gICAgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDI1LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDU2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDM4LCAzNiwgCi0gICAgMTQzLCAyNTQsIDE1MCwgMzYsIDE0MywgMjU0LCAxNzIsIDI0OSwgMTQsIDI0NCwgMTEsIDI0OSwgMTkzLCAyMTUsIDE2NCwgCi0gICAgMjI5LCA0NCwgMiwgMjE5LCA5MiwgMjE4LCAyMzMsIDExMCwgMjMwLCAxODQsIDIxOCwgMjMyLCAyNDksIDIxOSwgMjUzLCAKLSAgICAxMjMsIDI0NiwgOSwgMjE4LCAyMzEsIDExMCwgMjUxLCA0NywgMjI0LCA0OSwgMjUxLCA2OCwgMjUzLCAxMjMsIDIyOSwgNDMsIAotICAgIDIxNCwgMjUsIDIxNCwgMTksIDIxNCwgMTEyLCAyMzEsIDgsIDIxNCwgOSwgMjQ1LCAxODAsIDI0MiwgMTU3LCAyNDUsIDEyLCAKLSAgICAyNDUsIDE4MCwgMjQyLCAxNTcsIDI1NCwgMzcsIDI0NSwgMTgwLCAyNDIsIDE1NywgMjUzLCAxNDAsIDI0MiwgMTU3LCAyLCAKLSAgICAyMzEsIDExNSwgMTU2LCAyMzAsIDE5OSwgODcsIDIxNCwgMTEsIDI0OSwgNzcsIDIzMCwgMTk5LCA4NywgMjQ0LCA2MSwgCi0gICAgMjI0LCAxNjcsIDIzMCwgMTk5LCA4NywgMjE0LCAxMSwgMjQyLCAxODYsIDIzMCwgMTk5LCA4NywgMjQzLCAyMDAsIDIzMCwgCi0gICAgMTk5LCA4NywgMjE0LCAzNiwgMjQyLCAxODYsIDIzMCwgMTk5LCA4NywgMjMzLCAxMDMsIDIyNCwgMTY3LCAyMzAsIDE5OSwgCi0gICAgODcsIDIxNCwgMzYsIDI0OSwgNzcsIDIzMCwgMTk5LCA4NywgMjQ5LCA3NywgMjMwLCAxOTgsIDE1NiwgMjMwLCAxOTksIDIsIAotICAgIDI0NCwgMTU4LCAyNDQsIDYxLCAyMjQsIDE2NywgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyMzMsIDEwMywgMjI0LCAxNjcsIAotICAgIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjQzLCAyMDAsIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjE4LCAyMzksIDIsIDI0NCwgCi0gICAgMTU4LCAyNDIsIDE1NSwgMjE5LCA5NSwgMjIwLCAxNzksIDIxOSwgOTUsIDI1MCwgNTMsIDIyMiwgODcsIDI0NSwgNiwgMjE2LCAKLSAgICAxOTMsIDI0OCwgMzUsIDIxNiwgMTkzLCAyMjYsIDE4NiwgMjE2LCAxOTMsIDI1MCwgMjEzLCAyMTYsIDczLCAyNTAsIDU1LCAKLSAgICAyNTEsIDEzMywgMjIzLCA5MywgMjQxLCAxNjQsIDIxOCwgMjM2LCAyNTEsIDEzMywgMjQ1LCAxODQsIDY1LCAyMzIsIDAsIAotICAgIDI0NSwgMTg0LCA2NSwgMjIzLCAxODQsIDI0MSwgMTg4LCAyNDMsIDIzNywgMjMzLCA3OCwgMjQ5LCAxODMsIDIzMSwgMjMzLCAKLSAgICAyMzMsIDc3LCAyNDQsIDE0NCwgMjMzLCA3NywgMjMzLCA3OCwgMjQ0LCAxNiwgMjM1LCAyNTIsIDIxMywgMjI0LCAyMzAsIAotICAgIDEyOCwgMjE2LCAyNDUsIDI1MywgMTA3LCAyNDIsIDExOSwgMjMxLCAxMzEsIDIxNCwgMjMsIDIxOCwgOCwgMjMzLCA1MCwgCi0gICAgMjUyLCA2OCwgMjI1LCAxOTQsIDIyNCwgNCwgMjUzLCAyMjMsIDI0MiwgMTA0LCAyNTMsIDIyMywgMjI2LCA5MiwgMjI2LCAKLSAgICA5MywgMjUwLCA1NiwgMjE5LCA1NCwgMjQyLCA2LCAyMjAsIDE4LCA2NSwgMjI1LCAxNzYsIDIzMSwgMTUyLCAyMjcsIDYzLCAKLSAgICAyNTEsIDExOSwgMjI1LCAxMDksIDIzMywgNjAsIDIyMywgMTg1LCAyNDksIDgyLCAyMjMsIDE4NSwgMjUyLCA3OCwgMjQ5LCAKLSAgICAxMTIsIDIyMywgMTg0LCAyNDksIDM2LCAyNCwgMjIzLCAxODQsIDIxOSwgODEsIDI1MSwgOTMsIDIxOSwgMjAyLCAyNTEsIAotICAgIDc4LCAyNDMsIDIyMSwgMjQzLCAyMTcsIDIyMywgMTA4LCAyMTgsIDE5MSwgMjI1LCAxMTEsIDI0OCwgMTIwLCAyMjcsIDEwMSwgCi0gICAgMjE4LCAyMDgsIDI0MywgMjE4LCAyMjAsIDE1NSwgMjQ0LCA2MCwgMjUwLCAyMDksIDIsIDIxOCwgMTg0LCAyNDcsIDI0MiwgCi0gICAgMjE5LCAyMzYsIDI0MCwgMTA1LCAyNDksIDgxLCAyMjAsIDI1MCwgMjQwLCAxMDQsIDI0MCwgMTA1LCAyNDksIDgxLCAyNDYsIAotICAgIDYyLCAyNDksIDExMSwgMjUwLCAyMSwgMTM0LCAyNTAsIDE4NiwgMjMyLCAxOTQsIDI0OSwgMzAsIDI0MSwgNDEsIDIyNSwgCi0gICAgMTEzLCAyMjAsIDE2NCwgMjUxLCAyMTMsIDI1MSwgODksIDIyNSwgMTE0LCA2NSwgMjQ0LCAyLCAyNDksIDExMCwgMjQzLCAKLSAgICAyNDksIDI0LCAyMzQsIDQxLCAyMTcsIDIyNywgMjEzLCAyMTYsIDI0MSwgMjUyLCAyMjIsIDE4MywgMjUxLCAxMDMsIDI0LCAKLSAgICAyNDksIDQzLCAyMTMsIDIyMiwgMjQyLCAxNjAsIDI0OSwgMTcyLCAyNDIsIDE2MCwgMjE2LCAxNTEsIDI0NiwgNDUsIDI1MSwgCi0gICAgMjM4LCAyMzAsIDE2MywgMjQ5LCAyMDAsIDI1MSwgMjM4LCAyMzAsIDE2MiwgMjUyLCAxMDQsIDI1MSwgMTAyLCAyMjMsIAotICAgIDE4NiwgMjEzLCAxODksIDIyNSwgNzUsIDI1MSwgMTU4LCAyNTAsIDIwOCwgMjM1LCAxMzYsIDI1MCwgMTQsIDIxNiwgMTkzLCAKLSAgICAyNDQsIDEzMCwgMjUwLCAxMywgMjQ0LCA2MywgMjQ0LCA2NCwgMjE5LCAyMDAsIDI1MiwgNzcsIDIyNiwgMTIyLCAyMjUsIAotICAgIDEyNCwgMjQ5LCAxNDMsIDI1MiwgNzgsIDIxOCwgMTAsIDIxNiwgMTkzLCAyNDksIDY4LCAyNDQsIDM2LCAyMjUsIDE5NSwgCi0gICAgMjQ4LCAzMiwgMjM1LCAxMzEsIDI0NywgODUsIDI1MCwgMTY0LCAyMTksIDUzLCAyMTMsIDIyNSwgMjUwLCAzNSwgMjMwLCAKLSAgICAxOTksIDIxNCwgMTQ0LCAyNTAsIDk2LCAyMjIsIDExNywgMjIyLCAxNDEsIDI0MiwgMTI0LCAyNTAsIDE4MywgMjUwLCAxNjUsIAotICAgIDI0MCwgMjMyLCAyNDQsIDk5LCAyMTMsIDI0MSwgMjIzLCAxMDIsIDI0OSwgMTczLCAyNDQsIDU1LCAyMjUsIDEzNiwgMjQsIAotICAgIDI0NCwgNTksIDIzMSwgNDAsIDIzMCwgMTc4LCAyNTAsIDE5OCwgMjQ5LCAyMzIsIDI0MSwgMjE2LCAyNTMsIDE1NiwgMjI2LCAKLSAgICAxODksIDIxNiwgMjI3LCAyNDEsIDIzNCwgMjQ5LCAyMjIsIDIxNywgMTk1LCAyMTcsIDY3LCAyNDksIDIxMywgMjUxLCAxMjUsIAotICAgIDIyNiwgNTIsIDI1MywgMTU1LCAyMTQsIDE1MCwgMjQzLCA4NiwgMjQ3LCAxNDksIDI0MSwgMTQyLCAyMjAsIDEyLCAyMzIsIAotICAgIDM5LCAyNTEsIDE2OCwgMjQzLCA4NywgMjQ3LCAxOTIsIDI1MSwgOTIsIDI0NCwgMjEsIDIyNSwgMTY1LCAyNTAsIDE3MywgCi0gICAgMjcsIDIyOCwgMTU4LCAyMzAsIDE1NSwgMjcsIDIyOCwgMTUzLCAyMjIsIDEzMCwgMjQyLCA4MCwgMjcsIDIzNCwgMTQzLCAKLSAgICAyMTYsIDE0OCwgMjE0LCAxMzUsIDI3LCAyMjIsIDExMSwgMjIzLCAzNSwgMjIwLCAxOTEsIDIsIDIyMiwgMTQzLCAyMTcsIAotICAgIDE5NywgMjI0LCA2OCwgMjQsIDI1MiwgNzgsIDIyMCwgMzMsIDI0LCAyMjAsIDMzLCAyNTEsIDExMiwgMjUyLCA0MywgMjQsIAotICAgIDI0MSwgMzYsIDI1MCwgNTcsIDI0NCwgNDIsIDIxOSwgMjQ3LCAyMjMsIDM2LCAyMTgsIDIxMiwgMjE2LCAxNTIsIDI0MCwgCi0gICAgMjMzLCAyMjQsIDY5LCAyNTQsIDM4LCAyNDQsIDAsIDIyMywgNDcsIDI0NCwgMCwgMjE4LCAxODYsIDI0MCwgMjIyLCAyNTEsIAotICAgIDQ4LCAyNDAsIDIyMiwgMiwgMjQzLCA3MCwgMjI3LCA5NSwgMjUxLCA0OCwgMjM1LCAxMzEsIDIyNSwgMTE5LCAyMjcsIDk0LCAKLSAgICAyNDUsIDExLCAyMjUsIDExOSwgMjI3LCA5NCwgMjQwLCAyMzEsIDI1MiwgNjQsIDI1MywgOTcsIDIxNywgMjA1LCAyMzIsIAotICAgIDM5LCAyNDAsIDIyNywgMjMyLCAxNjYsIDI0MCwgMjI3LCAyNDksIDExNSwgMjE5LCA2NSwgMjIyLCAxMTYsIDI0NywgMjUwLCAKLSAgICAyMTksIDY1LCAyNDQsIDE0OCwgMjM1LCAxNDcsIDIzMywgMTEzLCAyMzUsIDEzMSwgMjUwLCAxNTgsIDI0NSwgMTEsIDI1MCwgCi0gICAgMTU4LCAyMjQsIDMzLCAyMzAsIDE4MiwgMjI2LCAyMzgsIDIxNCwgMjUsIDI1MSwgNTIsIDI0OSwgODQsIDIxNywgNjAsIAotICAgIDIzMywgNDIsIDIyNCwgNzAsIDI1MCwgMTU2LCAyNDYsIDUwLCAyNDksIDc1LCAyMTMsIDI0NCwgMjE5LCAyNTQsIDIxOSwgCi0gICAgMjUyLCAyNDAsIDIzMiwgMjI0LCA0NSwgMjQyLCAxNDYsIDIyMCwgMjM3LCAyMzAsIDIxNSwgMjIzLCA5NiwgMjUwLCA0NSwgCi0gICAgMjQ3LCA5MCwgMjI1LCAyMDUsIDI1MSwgMTI2LCAyNDUsIDEyNiwgMjI3LCAxMDMsIDIxOSwgMTg0LCAyMjAsIDIzMiwgMjUxLCAKLSAgICA1MSwgMjU0LCAzLCAyNDEsIDQwLCAyMzMsIDE0NCwgMjUxLCAyMzYsIDI0NCwgNTksIDIxNiwgMTUxLCAyNDQsIDU5LCAyNTEsIAotICAgIDEzMiwgMjE2LCA1NSwgMjQxLCAyMzIsIDI1MCwgNDYsIDI1MiwgMTA0LCAyNTAsIDQ2LCAyNDMsIDIxMiwgMjUyLCAxMDQsIAotICAgIDI1MCwgNDYsIDI1MSwgMTYwLCAyMjYsIDcwLCAyMzQsIDM1LCAyMjUsIDEyOCwgMjQ2LCA0MiwgMjUwLCAxOTksIDI1MiwgCi0gICAgOTUsIDI1MCwgMTk5LCAyNDcsIDg0LCAyMzAsIDE4MywgMjQ0LCAxNTgsIDI0OSwgODUsIDI0NCwgMTU4LCAyMTcsIDYxLCAKLSAgICAyNDQsIDE1OCwgMjI0LCA3MSwgMjQ0LCAxNTgsIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjQ2LCA1MSwgMjQ0LCAxNTgsIDIxOSwgCi0gICAgMTczLCAyMTMsIDI0NCwgMjQwLCAyMzMsIDI0NCwgMTU4LCAyMzAsIDIxNiwgMjQ0LCAxNTgsIDI0NywgOTEsIDI0NCwgMTU4LCAKLSAgICAyMjUsIDIwNiwgMjQ0LCAxNTgsIDI0MywgMjE1LCAyNDQsIDE1OCwgMjQyLCAzLCAyNDQsIDE1OCwgMjEzLCAyMTEsIDI0NCwgCi0gICAgMTU4LCAyNTEsIDI0NywgMjQ0LCAxNTgsIDIyNiwgMTcyLCAyNDQsIDE1OCwgMjI1LCAyMDYsIDIyOCwgMTY0LCAyMjYsIAotICAgIDEwNiwgMjI1LCA2NywgMjQ0LCAyMzcsIDI0NSwgMTgzLCAyMjgsIDE2NCwgMjMwLCAxODAsIDIxNiwgMjMyLCA2NywgMTE0LCAKLSAgICAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCAxMTksIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIAotICAgIDQyLCAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCA0NiwgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCAKLSAgICAyNDQsIDUzLCAyNDEsIDI1NSwgNTIsIDIxNCwgMTcsIDI0MSwgMjU1LCA1MiwgMjI3LCA4MSwgMjQxLCAyNTUsIDUyLCAyMTcsIAotICAgIDg5LCAxMTQsIDUyLCAyMTcsIDg5LCAxMTksIDUyLCAyNDksIDIxMiwgMjQxLCAyNTAsIDUyLCAyMjcsIDQwLCAyNDEsIDI1MCwgCi0gICAgNTIsIDI0OSwgNjMsIDIxMywgMjA3LCAyNDEsIDIzNCwgMjQ0LCAyMzgsIDIyOSwgMTg1LCAyMTgsIDk4LCAyMzUsIDEyNiwgCi0gICAgMjQ2LCA0NywgMjM0LCA5MSwgMjUxLCAxNzAsIDIxMywgMjA3LCAyNDksIDE4NiwgMjI1LCAxNCwgMjQxLCAyNTMsIDIyNSwgCi0gICAgMTEwLCAyMzEsIDI0MCwgMjIwLCAxODQsIDI1MywgMTE5LCAyMjAsIDE4NCwgMjQxLCAxNTAsIDIyMCwgMTg0LCAyMTMsIAotICAgIDIwNywgMjIyLCAxNTYsIDIxMywgMjA3LCAyNTEsIDExMSwgMjQzLCAyNTQsIDI1MSwgMTksIDIzNSwgMjUyLCAyMjAsIDk1LCAKLSAgICAyNTEsIDE4LCAyMzUsIDI1MiwgMjIwLCA5NSwgMjUxLCA4OCwgMjQyLCAxNzAsIDIzMSwgMjQ4LCAyMTMsIDIwOCwgMjQ0LCAKLSAgICAxNDIsIDIzMSwgMjQ5LCAyNCwgMjEzLCAyMDksIDI0MSwgNDYsIDI0MSwgMjQ5LCAxMTcsIDIzMSwgMTIzLCAyNDEsIDQ2LCAKLSAgICAyNDEsIDI0OSwgMTE3LCAyMTMsIDIwNiwgMjQxLCA0NiwgMjQxLCAyNDksIDIyNSwgMTMzLCAyMjcsIDkzLCAyMTMsIDIwOSwgCi0gICAgMiwgMjUxLCAzNSwgMjQ1LCAxODEsIDI1MSwgNjksIDIsIDIxNCwgMjIzLCAyMjYsIDQ0LCAyLCAyNTEsIDEzNSwgMjQyLCAKLSAgICAxNiwgMjMxLCAyNDksIDIsIDI0MiwgODksIDIyNSwgMjQxLCAyMzEsIDIzNywgMjMxLCAyNDksIDIsIDIxNiwgNjEsIDIyNywgCi0gICAgNzQsIDIzMSwgMjQ4LCAyMjcsIDc0LCAyMTMsIDIwOCwgMjUyLCAxMDMsIDI0OSwgMTI5LCAyMTMsIDE5MiwgMjI1LCA3MCwgCi0gICAgMjM1LCAxMzEsIDIyNywgODksIDIzNSwgMTMxLCAyNDIsIDE0NSwgMjQyLCAxOTgsIDI1MiwgMTA0LCAyNTQsIDIyLCAyNDQsIAotICAgIDI0MiwgMjU0LCA2OSwgMjU0LCA3MCwgMjMwLCAyMDYsIDIzNiwgMSwgMjIwLCAyOCwgMjM1LCAyMjksIDI0NywgMjQxLCAKLSAgICAyMjYsIDQzLCAyNDIsIDg2LCAyNDgsIDEyNCwgMjMyLCAyMzAsIDIzMCwgMzAsIDIyNSwgMTMyLCAyNDQsIDE1OSwgMjMxLCAKLSAgICAyMDUsIDI0MiwgMTUsIDI1MiwgNTgsIDIyNSwgMTM1LCAyMTgsIDExNywgMjI1LCAxOTgsIDIzNCwgNzMsIDc3LCAyMzIsIAotICAgIDE2NiwgMjMzLCAzNCwgMjIzLCAxMzAsIDI0MywgMzAsIDIxOSwgNzEsIDIzNCwgNzIsIDI1MSwgOTcsIDI0OSwgODcsIDIsIAotICAgIDI0MSwgMjExLCAyMTQsIDMsIDI1MSwgMjQ1LCAyNDEsIDIxMSwgMjUxLCA2MywgMjQxLCAyMTEsIDExNywgMjQxLCAyMDksIAotICAgIDIxOSwgMTk4LCAyNDEsIDIxMSwgMjQyLCA5OCwgMjQxLCAyMTEsIDI0MSwgMjEyLCAyLCA2OCwgMjUxLCAxMzEsIDI0MSwgCi0gICAgMjExLCAyNDIsIDEwNCwgMjQxLCAyMTEsIDIxMywgMzMsIDI0MSwgMjExLCAyMjUsIDE1LCAyNDEsIDIxMSwgMjQxLCAyMTIsIAotICAgIDIsIDIyMywgMTg2LCAyMjMsIDE5NywgMjQxLCAyMDksIDI0MSwgMjEyLCAyNDgsIDMyLCAyNDcsIDIwMSwgMjIxLCA1LCAyLCAKLSAgICAxMTgsIDYyLCAyMzUsIDIxMiwgMjQ1LCAxMjksIDE3NywgMjUxLCA0NSwgMjU0LCAyMSwgODcsIDI1MSwgMTIwLCAyMjAsIAotICAgIDIwLCA4NywgMjQ5LCAxNjYsIDg3LCAyMTksIDE3OCwgMjE4LCAxOTMsIDg3LCAyNDYsIDQwLCAyNDgsIDEwMiwgODcsIDIyNSwgCi0gICAgMTk5LCA2NSwgMjI1LCAxMjksIDI0NCwgMzAsIDI1MSwgMTgxLCAyNDcsIDExNywgODcsIDIxOSwgMTkxLCAyNTIsIDc3LCAKLSAgICAyMTcsIDEwMiwgMjUyLCA3NywgNjcsIDI0NCwgMjAsIDI0MCwgMjAxLCAyMjUsIDEzOSwgODcsIDIzMCwgMjE5LCAyNTIsIAotICAgIDkwLCAyNDksIDM5LCAyNDQsIDI1NSwgMTA3LCAyNDcsIDg2LCA1MiwgMjQ5LCA3OSwgMjUwLCAxNzQsIDI1MiwgNjMsIDIsIAotICAgIDIxMywgMzEsIDUyLCAyNTIsIDYzLCAyLCAyNDcsIDg2LCA1MiwgMjUyLCA2MywgMiwgMjQ1LCAxNCwgNTIsIDI1MiwgNjMsIAotICAgIDIsIDIyNSwgMTA4LCA1MiwgMjMwLCAyMTksIDIsIDIxMywgMjIwLCAyNTAsIDc0LCAyLCAyMTUsIDEyNCwgMjE2LCAxODksIAotICAgIDI0LCAyMTMsIDMxLCA1MiwgMjIyLCA5NywgMjI2LCA0MiwgMjQ5LCAxNDcsIDI1MSwgNjcsIDIzMCwgMjU1LCAyNDQsIDI1LCAKLSAgICAyNDcsIDEzNywgMjI3LCAyNywgMjQ3LCAxNDIsIDI0NiwgNCwgMjQ0LCA3NiwgMjQ0LCA5LCAyMjcsIDQwLCAyNDQsIDc2LCAKLSAgICAyNDQsIDksIDIyNiwgMjAxLCAyLCAyNDksIDQxLCAyMjYsIDIwMSwgMjQ0LCAxNTEsIDIxNSwgMTM0LCAyNTAsIDIwNCwgCi0gICAgMjE3LCAyMjYsIDI1MCwgMjA0LCAyNTAsIDE3NSwgMjM1LCAyMzksIDI1MCwgNzQsIDIsIDIxNSwgMTI0LCAyMTYsIDE4OCwgCi0gICAgMjUwLCA3NCwgMiwgMjQ2LCA1OCwgMjE2LCAxODgsIDI1MiwgNjAsIDI1MCwgNzMsIDI0OSwgMTk5LCAyMjUsIDEwLCAyMjMsIAotICAgIDg3LCAyMjUsIDEwLCAyMjYsIDE0NywgMjE5LCA2MSwgMjIzLCA0MiwgMjE2LCAxODAsIDIyMywgNDIsIDI1MSwgMTE2LCAKLSAgICAyMTgsIDM5LCAyMzMsIDc1LCAyMjgsIDE1NiwgMjI4LCAxNTcsIDIsIDI0OCwgMzEsIDI0OSwgODYsIDI0OSwgMTkzLCAyNTEsIAotICAgIDExNywgMjI3LCA0MCwgMjUxLCAxMTcsIDI0MiwgMTA0LCAyNTEsIDExNywgMjUxLCAxMzEsIDI1MSwgMTE3LCAyMjcsIDIzLCAKLSAgICAyNTEsIDExNywgMjUxLCAxMTQsIDIzMCwgMjUsIDI1MiwgOTMsIDIyMiwgMTA1LCAyMzEsIDEyNCwgMjE3LCAyMTAsIDIyNCwgCi0gICAgMTYsIDIyNiwgMTk5LCAyNDQsIDEyNywgMjMyLCAzOSwgMjIyLCAxNDAsIDI1NCwgMCwgMjI1LCAzMSwgMjU0LCAxNTcsIAotICAgIDIzMiwgMTY4LCAyNTAsIDYzLCAyMzEsIDEzNiwgMjI2LCAyNTMsIDIxNiwgMTk2LCAyMzUsIDI0OCwgMjE2LCAxOTYsIDIyNiwgCi0gICAgMjA2LCAyNDUsIDIzNiwgODcsIDIzNSwgMjQ1LCAyNDUsIDc4LCAyNDUsIDc5LCAyLCAyNDYsIDU4LCA3NiwgNDksIDI0OSwgCi0gICAgMTkzLCAyMzIsIDYsIDIsIDIzMiwgMTYyLCAyNDQsIDQyLCAyNDksIDE5MywgMjMyLCA2LCAyLCAyMjQsIDQ4LCAyNDQsIDQyLCAKLSAgICAyMjcsIDQwLCAyMzIsIDYsIDIsIDIyNCwgNDgsIDI0NCwgNDIsIDIyNywgNDAsIDIzMiwgNiwgMiwgMjMyLCAxNjIsIDI0NCwgCi0gICAgNDIsIDIyNSwgMTE2LCAyMjUsIDExNywgMjQwLCAyMzUsIDIyOSwgMTY2LCAyMzAsIDIyOSwgMjI1LCAyNDksIDIzMCwgMjI5LCAKLSAgICAyMjUsIDI1MCwgMiwgOTUsIDc2LCAyNTMsIDEyMywgMjMzLCA3MCwgMjE0LCAxNTMsIDIzMCwgMjI4LCAyMzAsIDIyOSwgCi0gICAgMjI1LCAyNTAsIDIyNywgOTYsIDIyOCwgMTg2LCAyMzAsIDIyOSwgMjI1LCAyNDgsIDI1NCwgMSwgMiwgMjUyLCA0OSwgMjUwLCAKLSAgICAxOTgsIDIxNCwgMTUwLCAyNTAsIDE5OCwgMjE3LCAyMDcsIDIyNCwgNjMsIDIxNCwgMTQ5LCAyMTYsIDI1LCA5NSwgMjUzLCAKLSAgICAxNjIsIDI0OSwgMTk1LCA5NSwgMjQsIDEzMiwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAyNDksIDE5NSwgOTUsIAotICAgIDI0LCAxMzIsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MywgMiwgMzYsIDEyMiwgMjI2LCAyNDQsIDI0OSwgMTk1LCAKLSAgICAyNDYsIDU4LCAyNCwgMjE1LCAxMjQsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MiwgMjUzLCAyNTUsIDI0NiwgNTgsIAotICAgIDI0LCAyMTUsIDEyNCwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAxMTUsIDI1MSwgNjYsIDg3LCAxMjQsIDI1MSwgCi0gICAgNjYsIDg3LCAyMTksIDE5NSwgMiwgMjUwLCAxOTIsIDkwLCAyMTksIDE5NCwgMjE5LCAxOTUsIDIsIDEyMiwgMjE5LCAyMTgsIAotICAgIDIxNCwgMTksIDIxOSwgMTk1LCAyLCAxMzMsIDIxOSwgMjE4LCAyMTQsIDE4LCAyNTIsIDM1LCAyNDUsIDEyOSwgMjI1LCAKLSAgICAxNjEsIDIzMywgNjYsIDIzMiwgMTYsIDI0MiwgMTYwLCAyMjMsIDE0NCwgMjMyLCAxNiwgMjQyLCAxNjAsIDIzMiwgMjA0LCAKLSAgICAyLCAyMzUsIDIyMiwgMjI2LCA3NCwgMjQ5LCAxOTMsIDIzMiwgMjA0LCAyLCAyMzQsIDE0NCwgMjM0LCAxNDQsIDIzMiwgCi0gICAgMjAzLCAyMjcsIDQwLCAyMzIsIDIwMywgMjUxLCAyMjEsIDI1MSwgMjIyLCAyLCAyNTAsIDE5MiwgOTAsIDI1MSwgMTE1LCAKLSAgICAyMzIsIDIzMywgODcsIDIyNCwgNjQsIDI1MSwgMTUsIDI1MiwgMTAyLCAyLCAxMzIsIDc2LCA0OSwgMjQ1LCAxMDEsIDIsIAotICAgIDEzMiwgNzYsIDQ5LCAyMjcsIDYzLCAyLCAyNDQsIDI1NCwgMTUyLCAyLCA0MiwgNDYsIDc2LCA0OSwgMjE5LCAyMjUsIDIsIAotICAgIDk1LCA3NiwgNDksIDIxNiwgMjI3LCAyLCAyMTUsIDEyNCwgNzYsIDQ5LCAyMjgsIDE4NiwgMTIyLCAyMTUsIDE1NCwgMjQ1LCAKLSAgICAxNDgsIDg3LCAyMzQsIDE0MiwgMjE3LCAyMDAsIDIzNSwgMjE2LCAxNiwgMzEsIDcsIDYsIDIzMywgMzMsIDIzNSwgMjE2LCAKLSAgICAxNiwgMzEsIDcsIDMsIDIzMywgMzMsIDIzNSwgMjE2LCAxNiwgMzEsIDIyOCwgNTUsIDIzNSwgMjE2LCAxNiwgMzEsIDIxOCwgCi0gICAgMTI4LCAyMzUsIDIxNiwgMTYsIDMxLCA3LCAyMzMsIDMzLCAyNDQsIDY1LCAyNDUsIDEyOSwgMjE2LCAyMjIsIDIxMywgMTg3LCAKLSAgICAyNDIsIDQsIDIyOCwgMzgsIDI0LCAyNTEsIDEyMSwgMjQxLCA1MiwgMjI1LCAxODIsIDIzMSwgMzksIDIxNywgMjA4LCAyNDksIAotICAgIDU0LCAyNTIsIDc4LCAyMjAsIDUzLCAyMjUsIDE0MywgMjE5LCA5NiwgMiwgMjMxLCAzNywgMjQ3LCA3NCwgMjM1LCAxMzEsIAotICAgIDE2LCAzMSwgMjUxLCAyMzMsIDIxNiwgMTc4LCAyNDUsIDExNCwgODMsIDQxLCAyNTEsIDE1LCA2NywgNDEsIDI1MSwgMTUsIAotICAgIDIzMywgMTA4LCAyMjQsIDQsIDI0OSwgMjI4LCAyMzMsIDEwOCwgMjUxLCAxMzEsIDI0OSwgMjI4LCAyMzMsIDEwOCwgMjI3LCAKLSAgICAyMywgMjQ3LCAyMDAsIDIzMywgMTA4LCAyNTEsIDEzMSwgMjQ3LCAyMDAsIDMsIDIyNywgMjMsIDI0NywgMjAwLCAzLCAyNTEsIAotICAgIDEzMSwgMjQ3LCAyMDAsIDIxNSwgMTMzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDYsIDU5LCAyMjQsIDQsIDIxNiwgMTgzLCAKLSAgICAyMTUsIDEzMywgMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ2LCA1OSwgMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAxMjIsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDExNywgMjI3LCAxMDYsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMTMzLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDMsIDIzNywgMjI3LCAxMDYsIDI0OSwgCi0gICAgMTk3LCAyNDQsIDE1OSwgMjQ0LCA1MCwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIwLCA1MywgMjI3LCAxMDYsIAotICAgIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIxLCA0MywgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxNTAsIDIyNywgCi0gICAgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyOSwgMzEsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNywgMjAxLCAKLSAgICAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDEyNSwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgCi0gICAgMjE2LCA0MiwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI3LCA1OCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMTYsIAotICAgIDIyLCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNywgOTQsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQzLCAyMzMsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMjQ0LCA0OCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjAsIDQ5LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyMSwgCi0gICAgNDIsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxNDksIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI5LCAzMCwgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAyMTcsIDE5OSwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDEyMywgMjQ5LCAxOTcsIDI0NCwgMTU5LCAKLSAgICAyMTYsIDQwLCAyMzAsIDE4NywgMjQzLCAyMDEsIDIxNiwgMjQ3LCAyMTYsIDIxNSwgMjE5LCA4OCwgNjUsIDIzMywgMTEsIAotICAgIDIyMCwgOTYsIDY1LCAyMzUsIDEzMiwgMjMwLCAxNzYsIDI0MiwgMTAyLCAyNDQsIDE1OSwgMiwgMjIwLCAyLCAyNDQsIDIzNywgCi0gICAgMjQ0LCAxNTksIDIsIDIxNywgMjIyLCA2NSwgMjM1LCA1NiwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAKLSAgICAxODAsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjIwLCAyLCAyNDQsIDIzNywgMjIwLCAKLSAgICAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyNDksIDE2OCwgMjE4LCAxOTIsIDIyMCwgMiwgMjQ0LCAKLSAgICAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjE3LCA1OCwgMjQ0LCAyMzcsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIAotICAgIDI0MiwgOCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjQwLCAyMzQsIDIxMywgMjE4LCAyNDQsIDE1OCwgMjIwLCAyLCAyNDQsIAotICAgIDE1OSwgMiwgMjIwLCAyLCAyNDQsIDIzNywgMjQ0LCAxNTksIDIyMiwgMTM1LCAyNDgsIDEzLCAyNDQsIDIsIDIyMywgMjM4LCAKLSAgICAyNDQsIDE1OCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjQxLCAyMTAsIDI0NCwgMjM3LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAKLSAgICAyMTgsIDIzNCwgMjIwLCAxLCAyNDQsIDE1OCwgMjI5LCAxNjksIDI0NCwgMTU4LCAyMTUsIDE1OCwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTU5LCAyLCAyNDksIDE2OCwgMjE4LCAxOTIsIDIyNiwgNjcsIDI0NCwgMTU4LCAyNDksIDE0MSwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTU5LCAyMTcsIDkxLCAxMTgsIDIzNCwgNzIsIDIzNCwgNzEsIDI0NCwgMTU5LCAyLCAyNDksIDE5MywgMjQ0LCAyMzcsIAotICAgIDI0NCwgMTU5LCAyLCAyMTksIDMxLCAyMTYsIDIzMywgMjQsIDIxMywgMjE4LCAyNDQsIDIzOSwgMjQ0LCAxNTksIDIsIDIxOSwgCi0gICAgMzEsIDIxNiwgMjMzLCAyNCwgMjE3LCA1OCwgMjQ0LCAyMzcsIDI0NywgMTQ0LCAyNDQsIDE1OCwgMjU0LCAxNywgMjQ0LCAKLSAgICAxNTgsIDIyNSwgMTA3LCAyNDQsIDE1OCwgMjQ5LCA1NiwgMjQ0LCAxNTgsIDIyNiwgNDYsIDI0NCwgMTU4LCAyNDQsIDE1OSwgCi0gICAgMiwgMjMyLCAxNzksIDY1LCAyMTYsIDE2MiwgMjQ3LCAxNDQsIDI1MSwgMTcsIDIyMywgMjM4LCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxMjEsIDI0NCwgMTU4LCAyMTQsIDQsIDI0NCwgMTU4LCAyMjAsIDE5LCAyNDQsIDE1OCwgMjE3LCAyNCwgMjQ0LCAxNTgsIAotICAgIDIzMiwgMTY5LCAyNDksIDU2LCAyNDQsIDE1OCwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjQ5LCAKLSAgICAxNjgsIDIxOCwgMTkyLCAyNDQsIDE1OSwgMjIyLCAxMDksIDIzNSwgMjUyLCAyNDQsIDEyMiwgMjUzLCAxMjksIDI0NCwgCi0gICAgMTU4LCAyNDQsIDE4LCAyNDQsIDE1OCwgMjQ3LCAxMTcsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMjEzLCAyMTYsIDIzMCwgMTgwLCAKLSAgICAyNDQsIDE1OSwgMiwgMjMxLCAxNDksIDIzMSwgMjA3LCAyNDIsIDEwMiwgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyMjAsIDIsIAotICAgIDI0NCwgMjM3LCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIxNywgMjIyLCA2NSwgMjM1LCA1NiwgMjIwLCAyLCAyNTAsIDE1NywgCi0gICAgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgwLCAyMjAsIDIsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjQxLCAyMTAsIAotICAgIDI0NCwgMjM3LCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIxMywgMTg0LCAyMjAsIDMsIDIzNCwgNzEsIDI1MCwgMTU3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjQ5LCAxOTMsIDI0NCwgMjM3LCAyMjUsIDEwNywgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDksIDU2LCAKLSAgICAyNTAsIDE1NywgMjQ0LCAxNTgsIDIxNCwgNCwgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMiwgMjI4LCAxODYsIAotICAgIDI0MiwgMTM5LCAyNDMsIDEwLCAyNDQsIDE1OSwgMiwgMjI3LCA4MSwgMjQzLCAxMCwgMjI2LCA0NCwgMjUxLCA5NCwgMjQ4LCAKLSAgICAyNiwgMjIyLCA4OCwgMjMwLCAyMTUsIDI0MSwgMjEzLCAyMzAsIDIxNSwgMjE5LCAxOTYsIDIzMCwgMjE1LCAyNDEsIDI0NCwgCi0gICAgMjI2LCA0NCwgMjI0LCA0NywgMTIyLCAyNDEsIDI1NCwgMjI2LCA0NCwgMjI0LCA0NywgMjUxLCAxMDQsIDI0MSwgMjUwLCAKLSAgICAyMzUsIDI1MiwgMjUwLCAxMTMsIDIyNiwgNDQsIDI0MywgMjA4LCAyMjYsIDQ0LCAyLCAyMjUsIDEwNywgMjQ0LCAxNTgsIAotICAgIDIyNiwgNDQsIDIsIDI0NCwgMTAsIDI0MSwgMjQ5LCAyMjMsIDEwNCwgMjQxLCAxOTgsIDIxOSwgODMsIDIzMiwgMjAyLCAKLSAgICAyMjQsIDUzLCAyNTAsIDE3NiwgMjQxLCAxNDgsIDIxNiwgMjA1LCAyNDEsIDE0OCwgMjE2LCAyMDYsIDIsIDI1MSwgNDMsIAotICAgIDIyOCwgMTY0LCAyMTYsIDIwNSwgMjMxLCA5OSwgMTc3LCAyMjQsIDU0LCAyMTksIDg5LCAyMTYsIDIwMywgMjE2LCAyMDQsIAotICAgIDI1MCwgMTc2LCAyNTEsIDIxLCAyMjcsIDYwLCAyNTEsIDIxLCAyMTYsIDE1OSwgMjUxLCAyMiwgMjE5LCA2OSwgMjMxLCAwLCAKLSAgICAyNTQsIDM5LCAyNDQsIDY2LCAyNDUsIDk1LCAyMjUsIDEzMywgMjUwLCAxNzYsIDIyNywgNjAsIDIyNSwgMTMzLCAyNTAsIAotICAgIDE3NiwgMjE3LCAyMzksIDIyNywgNjAsIDIxNywgMjM5LCAyNTMsIDk2LCAyMjcsIDYwLCAyNTMsIDk2LCAyMjQsIDExLCAKLSAgICAyMTQsIDIyNCwgMjQ4LCA5LCAyMTYsIDE1MCwgMjUzLCAxNTcsIDIzMiwgMTcyLCAyMTYsIDIxMSwgMjMwLCAyMDksIDIzMCwgCi0gICAgMTg2LCAyMjQsIDUyLCAyMTgsIDIwNywgMjI0LCA1MiwgMjMwLCAxODYsIDI1MCwgMjE0LCAyNTQsIDEzNCwgMjE2LCAyMDIsIAotICAgIDIyMCwgMTk2LCAyMjMsIDg0LCAyMTksIDE4OSwgMTk5LCAyMTYsIDIwOSwgMjMzLCAyLCA3MSwgMjE2LCAyMDksIDIzMywgMiwgCi0gICAgMjQ5LCAxMjksIDUyLCAyMjUsIDEzMywgMjUwLCAxNjEsIDIyMywgMTk3LCAyMzMsIDIsIDIxNiwgMTgwLCAyNDQsIDQzLCAKLSAgICAyMjcsIDYzLCAyMjUsIDExOCwgMjQ3LCA3NywgMjI4LCAxODYsIDI0NSwgODQsIDUyLCAyMjAsIDAsIDg3LCAyMjgsIDE4NiwgCi0gICAgMjIwLCAwLCA4NywgMjI1LCA5LCAyMzIsIDIyMiwgMjM1LCAyNTIsIDIzNSwgMTU1LCAyMjUsIDE3MywgODcsIDI0NywgMTAwLCAKLSAgICAyMjgsIDE2MywgMjMyLCAyMjIsIDg3LCAyMjUsIDExMiwgMjE0LCAyNSwgODcsIDIyOCwgMTc3LCAyMTQsIDI1LCA4NywgCi0gICAgMjUxLCAxODAsIDIyOCwgMTg2LCAyNTEsIDE3OSwgMjUxLCAxNzgsIDIzMCwgMTg2LCAyNTEsIDE3OCwgMjI2LCA4OCwgMjI4LCAKLSAgICAxODYsIDIyNiwgODcsIDI1MCwgMzcsIDI0OSwgNjQsIDIzMSwgMTIwLCA4NywgMjEzLCAyMDUsIDg3LCAyMjMsIDIxMSwgCi0gICAgMjUyLCAxMDQsIDg3LCAyMTYsIDI0OCwgMjE0LCAyNSwgMjQ5LCAxOTAsIDIyMCwgMTU4LCAyNTIsIDM4LCAyNTIsIDM2LCAKLSAgICAyMjYsIDExNSwgMjQ5LCAxMTYsIDI0OSwgMjgsIDI1MiwgODcsIDI0OSwgMjE1LCA0MiwgMjMyLCAxNDgsIDEwNCwgMTYsIAotICAgIDMxLCAyMjQsIDE0OCwgMTA0LCAxNiwgMzEsIDI1NCwgMTAwLCAxMDQsIDE2LCAzMSwgMjQ0LCA2NSwgMTA0LCAxNiwgMzEsIAotICAgIDI0NSwgMTc5LCAxMDQsIDE2LCAzMSwgMjE0LCAyNCwgMTA0LCAxNiwgMzEsIDI1MywgMjEzLCAxMDQsIDE2LCAzMSwgMjUzLCAKLSAgICAyMTQsIDIyMywgMjU1LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIDIyMywgMjU0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIAotICAgIDIxNCwgMTI0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIDIxNCwgMTIzLCAxMDQsIDE2LCAzMSwgMjE0LCAxMzgsIDEwNCwgCi0gICAgMTYsIDMxLCAyMTQsIDEzNywgMTA0LCAxNiwgMzEsIDIxNCwgMTM2LCAxMDQsIDE2LCAzMSwgMjE4LCAyNDUsIDEwNCwgMTYsIAotICAgIDMxLCAyMjYsIDEsIDIxOCwgMjQ1LCAxMDQsIDE2LCAzMSwgODMsIDIxOCwgMjQ1LCAxMDQsIDE2LCAzMSwgMjMxLCAxMTksIAotICAgIDIxOSwgMTYsIDEwNCwgMTYsIDMxLCAyMzEsIDExOSwgMjE5LCAxNSwgMTA0LCAxNiwgMzEsIDIzMSwgMTE5LCAyMTksIDE0LCAKLSAgICAxMDQsIDE2LCAzMSwgMjQ5LCAyMzEsIDEwNCwgMTYsIDMxLCAyMjIsIDE3MiwgMTA0LCAxNiwgMzEsIDIyOSwgMTksIDEwNCwgCi0gICAgMTYsIDMxLCAyMTQsIDEyMiwgMTA0LCAxNiwgMzEsIDIxNCwgMTIxLCAxMDQsIDE2LCAzMSwgMjIzLCAxMDUsIDIyMiwgMTcyLCAKLSAgICAxMDQsIDE2LCAzMSwgMjIzLCAxMDUsIDIyMiwgMTcxLCAxMDQsIDE2LCAzMSwgMjQyLCAxNDIsIDEwNCwgMTYsIDMxLCAyMjAsIAotICAgIDkyLCAxMDQsIDE2LCAzMSwgMjM1LCAxNzUsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI3LCAxOSwgMTA0LCAKLSAgICAxNiwgMzEsIDI0OSwgNzQsIDY1LCAyMzUsIDE3NCwgMTA0LCAxNiwgMzEsIDIyMywgMjUxLCA2NSwgMjM1LCAxNzQsIDEwNCwgCi0gICAgMTYsIDMxLCAyNDksIDEwNywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIzNSwgMTczLCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjE5LCAxNywgNjUsIDI0OSwgMTA2LCAxMDQsIDE2LCAzMSwgMjQ5LCA3NCwgNjUsIDI0OSwgMTA2LCAxMDQsIDE2LCAzMSwgCi0gICAgMjQ5LCA3NCwgNjUsIDI0OSwgMTA1LCAxMDQsIDE2LCAzMSwgMjQ5LCAxMDcsIDI1MywgMjUwLCAxMDQsIDE2LCAzMSwgMjIyLCAKLSAgICAxNzMsIDY1LCAyNDksIDEwNywgMjUzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCA2NSwgMjIyLCAxNzMsIDY1LCAyNDksIAotICAgIDEwNiwgMTA0LCAxNiwgMzEsIDIxNCwgMjIwLCAxMDQsIDE2LCAzMSwgMjE3LCAzNywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIAotICAgIDIzMywgODEsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyNTMsIDI0OSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIAotICAgIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIyMiwgMTczLCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCAKLSAgICA2NSwgMjIyLCAxNzMsIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIxNCwgMTM5LCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIAotICAgIDMxLCAyMjMsIDI1MSwgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjIzLCAyNTEsIDY1LCAyNTMsIDI0NywgMTA0LCAxNiwgCi0gICAgMzEsIDIyMywgMjUwLCAxMDQsIDE2LCAzMSwgMjIzLCAyNDksIDEwNCwgMTYsIDMxLCAyMjMsIDI0OCwgMTA0LCAxNiwgMzEsIAotICAgIDIyMywgMjQ3LCAxMDQsIDE2LCAzMSwgMjU0LCA2NiwgMTA0LCAxNiwgMzEsIDI1NCwgNjUsIDEwNCwgMTYsIDMxLCAyMzEsIAotICAgIDIyNiwgMTA0LCAxNiwgMzEsIDIyMiwgMTc4LCAxMDQsIDE2LCAzMSwgMjUzLCAxNjEsIDEwNCwgMTYsIDMxLCAyMjQsIDE4LCAKLSAgICAxMDQsIDE2LCAzMSwgMjI0LCAxNywgMTA0LCAxNiwgMzEsIDI1MywgOTksIDEwNCwgMTYsIDMxLCAyNTEsIDE1MiwgMjI3LCAKLSAgICAyMCwgMTA0LCAxNiwgMzEsIDIxOCwgMCwgMTA0LCAxNiwgMzEsIDIxNywgMjU1LCAxMDQsIDE2LCAzMSwgMjI0LCAxNTMsIAotICAgIDIzMiwgMjUxLCAxMDQsIDE2LCAzMSwgMjUxLCAxMDksIDEwNCwgMTYsIDMxLCAyNTEsIDEwOCwgMTA0LCAxNiwgMzEsIDI1MSwgCi0gICAgMTA3LCAxMDQsIDE2LCAzMSwgMjU0LCA0NywgMTA0LCAxNiwgMzEsIDIyNywgODQsIDEwNCwgMTYsIDMxLCAyMTksIDE4MCwgCi0gICAgMTA0LCAxNiwgMzEsIDIxNywgMzUsIDEwNCwgMTYsIDMxLCAyNDIsIDc3LCAxMDQsIDE2LCAzMSwgMjE0LCAxMiwgMTA0LCAKLSAgICAxNiwgMzEsIDIyNSwgMTA2LCAxMDQsIDE2LCAzMSwgMjUwLCAyMDIsIDEwNCwgMTYsIDMxLCAyMTYsIDUwLCAxMDQsIDE2LCAKLSAgICAzMSwgMjUwLCAxNzgsIDIzMCwgMTkyLCAxMDQsIDE2LCAzMSwgMjIyLCAxMjAsIDY1LCAyMzUsIDU4LCAxMDQsIDE2LCAzMSwgCi0gICAgMjUwLCAyMTEsIDEwNCwgMTYsIDMxLCAyMTYsIDE3NywgMTA0LCAxNiwgMzEsIDIxOSwgOTMsIDIxNiwgMTc3LCAxMDQsIDE2LCAKLSAgICAzMSwgMjMyLCAyMDEsIDEwNCwgMTYsIDMxLCAyMTksIDI0MCwgMTA0LCAxNiwgMzEsIDIxNSwgMTEzLCAxMDQsIDE2LCAzMSwgCi0gICAgMjQwLCAyMzMsIDI0NiwgMTksIDEwNCwgMTYsIDMxLCAyNTMsIDE0MiwgMTA0LCAxNiwgMzEsIDIyNSwgMTE0LCAyNTMsIAotICAgIDE0MiwgMTA0LCAxNiwgMzEsIDI1MSwgNzAsIDEwNCwgMTYsIDMxLCAyMjUsIDEwNSwgMjUxLCA3MCwgMTA0LCAxNiwgMzEsIAotICAgIDI1NCwgNDQsIDEwNCwgMTYsIDMxLCAyMTksIDU3LCAyMTgsIDIyNiwgMjE5LCA1NiwgMTA0LCAxNiwgMzEsIDIxOSwgNTcsIAotICAgIDIxOCwgMjI2LCAyMTksIDU1LCAxMDQsIDE2LCAzMSwgMjE5LCAxMywgMTA0LCAxNiwgMzEsIDIyNSwgODAsIDEwNCwgMTYsIAotICAgIDMxLCAyNDcsIDEzMywgMTA0LCAxNiwgMzEsIDI0NywgMTM1LCAxMDQsIDE2LCAzMSwgMjQ3LCAxMzQsIDEwNCwgMTYsIDMxLCAKLSAgICAyMjUsIDE3LCAxMDQsIDE2LCAzMSwgMjI1LCA3LCAxMDQsIDE2LCAzMSwgMjQ5LCA2MiwgMTA0LCAxNiwgMzEsIDI0OSwgNjEsIAotICAgIDEwNCwgMTYsIDMxLCAyNDksIDYwLCAxMDQsIDE2LCAzMSwgMjQ5LCA1OSwgMTA0LCAxNiwgMzEsIDI0OSwgNTgsIDEwNCwgCi0gICAgMTYsIDMxLCAyNTQsIDc3LCAxMDQsIDE2LCAzMSwgMjUyLCAzOSwgNjUsIDIzMSwgMjEyLCAxMDQsIDE2LCAzMSwgMjUyLCAKLSAgICAzOSwgNjUsIDIxNCwgMjQ5LCAxMDQsIDE2LCAzMSwgMjIzLCAyMDksIDEwNCwgMTYsIDMxLCAyNDAsIDIyNSwgMTA0LCAxNiwgCi0gICAgMzEsIDIyOSwgNDMsIDEwNCwgMTYsIDMxLCAyNDgsIDkxLCAxMDQsIDE2LCAzMSwgMjMwLCAyMDQsIDEwNCwgMTYsIDMxLCAKLSAgICAxNTEsIDI0NiwgNDksIDEwNCwgMTYsIDMxLCAxNTEsIDIyNywgMCwgOSwgMTMsIDI0MCwgOTUsIDksIDEzLCAyNDAsIDk0LCAKLSAgICA5LCAxMywgMjQwLCA5MywgOSwgMTMsIDI0MCwgOTIsIDksIDEzLCAyNDAsIDkxLCA5LCAxMywgMjQwLCA5MCwgOSwgMTMsIAotICAgIDI0MCwgODksIDksIDEzLCAyNDAsIDg4LCA5LCAxMywgMjQwLCA4NywgOSwgMTMsIDI0MCwgODYsIDksIDEzLCAyNDAsIDg1LCAKLSAgICA5LCAxMywgMjQwLCA4NCwgOSwgMTMsIDI0MCwgODMsIDksIDEzLCAyNDAsIDgyLCA5LCAxMywgMjQwLCA4MSwgOSwgMTMsIAotICAgIDI0MCwgODAsIDksIDEzLCAyNDAsIDc5LCA5LCAxMywgMjQwLCA3OCwgOSwgMTMsIDI0MCwgNzcsIDksIDEzLCAyNDAsIDc2LCAKLSAgICA5LCAxMywgMjQwLCA3NSwgOSwgMTMsIDI0MCwgNzQsIDksIDEzLCAyNDAsIDczLCA5LCAxMywgMjQwLCA3MiwgOSwgMTMsIAotICAgIDI0MCwgNzEsIDksIDEzLCAyNDAsIDcwLCA5LCAxMywgMjQwLCA2OSwgOSwgMTMsIDI0MCwgNjgsIDksIDEzLCAyNDAsIDY3LCAKLSAgICA5LCAxMywgMjQwLCA2NiwgOSwgMTMsIDI0MCwgNjUsIDksIDEzLCAyNDAsIDY0LCA5LCAxMywgMjQwLCA2MywgOSwgMTMsIAotICAgIDI0MCwgNjIsIDksIDEzLCAyNDAsIDYxLCA5LCAxMywgMjQwLCA2MCwgOSwgMTMsIDI0MCwgNTksIDksIDEzLCAyNDAsIDU4LCAKLSAgICA5LCAxMywgMjQwLCA1NywgOSwgMTMsIDI0MCwgNTYsIDksIDEzLCAyNDAsIDU1LCA5LCAxMywgMjQwLCA1NCwgOSwgMTMsIAotICAgIDI0MCwgNTMsIDksIDEzLCAyNDAsIDUyLCA5LCAxMywgMjQwLCA1MSwgOSwgMTMsIDI0MCwgNTAsIDksIDEzLCAyNDAsIDQ5LCAKLSAgICA5LCAxMywgMjQwLCA0OCwgOSwgMTMsIDI0MCwgNDcsIDksIDEzLCAyNDAsIDQ2LCA5LCAxMywgMjQwLCA0NSwgOSwgMTMsIAotICAgIDI0MCwgNDQsIDksIDEzLCAyNDAsIDQzLCA5LCAxMywgMjQwLCA0MiwgOSwgMTMsIDI0MCwgNDEsIDksIDEzLCAyNDAsIDQwLCAKLSAgICA5LCAxMywgMjQwLCAzOSwgOSwgMTMsIDI0MCwgMzgsIDksIDEzLCAyNDAsIDM3LCA5LCAxMywgMjQwLCAzNiwgOSwgMTMsIAotICAgIDI0MCwgMzUsIDksIDEzLCAyNDAsIDM0LCA5LCAxMywgMjQwLCAzMywgOSwgMTMsIDI0MCwgMzIsIDksIDEzLCAyNDAsIDMxLCAKLSAgICA5LCAxMywgMjQwLCAzMCwgOSwgMTMsIDI0MCwgMjksIDksIDEzLCAyNDAsIDI4LCA5LCAxMywgMjQwLCAyNywgOSwgMTMsIAotICAgIDI0MCwgMjYsIDksIDEzLCAyNDAsIDI1LCA5LCAxMywgMjQwLCAyNCwgOSwgMTMsIDI0MCwgMjMsIDksIDEzLCAyNDAsIDIyLCAKLSAgICA5LCAxMywgMjQwLCAyMSwgOSwgMTMsIDI0MCwgMjAsIDksIDEzLCAyNDAsIDE5LCA5LCAxMywgMjQwLCAxOCwgOSwgMTMsIAotICAgIDI0MCwgMTcsIDksIDEzLCAyNDAsIDE2LCA5LCAxMywgMjQwLCAxNSwgOSwgMTMsIDI0MCwgMTQsIDksIDEzLCAyNDAsIDEzLCAKLSAgICA5LCAxMywgMjQwLCAxMiwgOSwgMTMsIDI0MCwgMTEsIDksIDEzLCAyNDAsIDEwLCA5LCAxMywgMjQwLCA5LCA5LCAxMywgCi0gICAgMjQwLCA4LCA5LCAxMywgMjQwLCA3LCA5LCAxMywgMjQwLCA2LCA5LCAxMywgMjQwLCA1LCA5LCAxMywgMjQwLCA0LCA5LCAKLSAgICAxMywgMjQwLCAzLCA5LCAxMywgMjQwLCAyLCA5LCAxMywgMjQwLCAxLCA5LCAxMywgMjQwLCAwLCA5LCAxMywgMjM5LCAyNTUsIAotICAgIDksIDEzLCAyMzksIDI1NCwgOSwgMTMsIDIzOSwgMjUzLCA5LCAxMywgMjM5LCAyNTIsIDksIDEzLCAyMzksIDI1MSwgOSwgCi0gICAgMTMsIDIzOSwgMjUwLCA5LCAxMywgMjM5LCAyNDksIDksIDEzLCAyMzksIDI0OCwgOSwgMTMsIDIzOSwgMjQ3LCA5LCAxMywgCi0gICAgMjM5LCAyNDYsIDksIDEzLCAyMzksIDI0NSwgOSwgMTMsIDIzOSwgMjQ0LCA5LCAxMywgMjM5LCAyNDMsIDksIDEzLCAyMzksIAotICAgIDI0MiwgOSwgMTMsIDIzOSwgMjQxLCA5LCAxMywgMjM5LCAyNDAsIDksIDEzLCAyMzksIDIzOSwgOSwgMTMsIDIzOSwgMjM4LCAKLSAgICA5LCAxMywgMjM5LCAyMzcsIDksIDEzLCAyMzksIDIzNiwgOSwgMTMsIDIzOSwgMjM1LCA5LCAxMywgMjM5LCAyMzQsIDksIAotICAgIDEzLCAyMzksIDIzMywgOSwgMTMsIDIzOSwgMjMyLCA5LCAxMywgMjM5LCAyMzEsIDksIDEzLCAyMzksIDIzMCwgOSwgMTMsIAotICAgIDIzOSwgMjI5LCA5LCAxMywgMjM5LCAyMjgsIDksIDEzLCAyMzksIDIyNywgOSwgMTMsIDIzOSwgMjI2LCA5LCAxMywgMjM5LCAKLSAgICAyMjUsIDksIDEzLCAyMzksIDIyNCwgOSwgMTMsIDIzOSwgMjIzLCA5LCAxMywgMjM5LCAyMjIsIDksIDEzLCAyMzksIDIyMSwgCi0gICAgOSwgMTMsIDIzOSwgMjIwLCA5LCAxMywgMjM5LCAyMTksIDksIDEzLCAyMzksIDIxOCwgOSwgMTMsIDIzOSwgMjE3LCA5LCAKLSAgICAxMywgMjM5LCAyMTYsIDksIDEzLCAyMzksIDIxNSwgOSwgMTMsIDIzOSwgMjE0LCA5LCAxMywgMjM5LCAyMTMsIDksIDEzLCAKLSAgICAyMzksIDIxMiwgOSwgMTMsIDIzOSwgMjExLCA5LCAxMywgMjM5LCAyMTAsIDksIDEzLCAyMzksIDIwOSwgOSwgMTMsIDIzOSwgCi0gICAgMjA4LCA5LCAxMywgMjM5LCAyMDcsIDksIDEzLCAyMzksIDIwNiwgOSwgMTMsIDIzOSwgMjA1LCA5LCAxMywgMjM5LCAyMDQsIAotICAgIDksIDEzLCAyMzksIDIwMywgOSwgMTMsIDIzOSwgMjAyLCA5LCAxMywgMjM5LCAyMDEsIDksIDEzLCAyMzksIDIwMCwgOSwgCi0gICAgMTMsIDIzOSwgMTk5LCA5LCAxMywgMjM5LCAxOTgsIDksIDEzLCAyMzksIDE5NywgOSwgMTMsIDIzOSwgMTk2LCA5LCAxMywgCi0gICAgMjM5LCAxOTUsIDksIDEzLCAyMzksIDE5NCwgOSwgMTMsIDIzOSwgMTkzLCA5LCAxMywgMjM5LCAxOTIsIDksIDEzLCAyMzksIAotICAgIDE5MSwgOSwgMTMsIDIzOSwgMTkwLCA5LCAxMywgMjM5LCAxODksIDksIDEzLCAyMzksIDE4OCwgOSwgMTMsIDIzOSwgMTg3LCAKLSAgICA5LCAxMywgMjM5LCAxODYsIDksIDEzLCAyMzksIDE4NSwgOSwgMTMsIDIzOSwgMTg0LCA5LCAxMywgMjM5LCAxODMsIDksIAotICAgIDEzLCAyMzksIDE4MiwgOSwgMTMsIDIzOSwgMTgxLCA5LCAxMywgMjM5LCAxODAsIDksIDEzLCAyMzksIDE3OSwgOSwgMTMsIAotICAgIDIzOSwgMTc4LCA5LCAxMywgMjM5LCAxNzcsIDksIDEzLCAyMzksIDE3NiwgOSwgMTMsIDIzOSwgMTc1LCA5LCAxMywgMjM5LCAKLSAgICAxNzQsIDksIDEzLCAyMzksIDE3MywgOSwgMTMsIDIzOSwgMTcyLCA5LCAxMywgMjM5LCAxNzEsIDksIDEzLCAyMzksIDE3MCwgCi0gICAgOSwgMTMsIDIzOSwgMTY5LCA5LCAxMywgMjM5LCAxNjgsIDksIDEzLCAyMzksIDE2NywgOSwgMTMsIDIzOSwgMTY2LCA5LCAKLSAgICAxMywgMjM5LCAxNjUsIDksIDEzLCAyMzksIDE2NCwgOSwgMTMsIDIzOSwgMTYzLCA5LCAxMywgMjM5LCAxNjIsIDksIDEzLCAKLSAgICAyMzksIDE2MSwgOSwgMTMsIDIzOSwgMTYwLCA5LCAxMywgMjM5LCAxNTksIDksIDEzLCAyMzksIDE1OCwgOSwgMTMsIDIzOSwgCi0gICAgMTU3LCA5LCAxMywgMjM5LCAxNTYsIDksIDEzLCAyMzksIDE1NSwgOSwgMTMsIDIzOSwgMTU0LCA5LCAxMywgMjM5LCAxNTMsIAotICAgIDksIDEzLCAyMzksIDE1MiwgOSwgMTMsIDIzOSwgMTUxLCA5LCAxMywgMjM5LCAxNTAsIDksIDEzLCAyMzksIDE0OSwgOSwgCi0gICAgMTMsIDIzOSwgMTQ4LCA5LCAxMywgMjM5LCAxNDcsIDksIDEzLCAyMzksIDE0NiwgOSwgMTMsIDIzOSwgMTQ1LCA5LCAxMywgCi0gICAgMjM5LCAxNDQsIDksIDEzLCAyMzksIDE0MywgOSwgMTMsIDIzOSwgMTQyLCA5LCAxMywgMjM5LCAxNDEsIDksIDEzLCAyMzksIAotICAgIDE0MCwgOSwgMTMsIDIzOSwgMTM5LCA5LCAxMywgMjM5LCAxMzgsIDksIDEzLCAyMzksIDEzNywgOSwgMTMsIDIzOSwgMTM2LCAKLSAgICA5LCAxMywgMjM5LCAxMzUsIDksIDEzLCAyMzksIDEzNCwgOSwgMTMsIDIzOSwgMTMzLCA5LCAxMywgMjM5LCAxMzIsIDksIAotICAgIDEzLCAyMzksIDEzMSwgOSwgMTMsIDIzOSwgMTMwLCA5LCAxMywgMjM5LCAxMjksIDksIDEzLCAyMzksIDEyOCwgOSwgMTMsIAotICAgIDIzOSwgMTI3LCA5LCAxMywgMjM5LCAxMjYsIDksIDEzLCAyMzksIDEyNSwgOSwgMTMsIDIzOSwgMTI0LCA5LCAxMywgMjM5LCAKLSAgICAxMjMsIDksIDEzLCAyMzksIDEyMiwgOSwgMTMsIDIzOSwgMTIxLCA5LCAxMywgMjM5LCAxMjAsIDksIDEzLCAyMzksIDExOSwgCi0gICAgOSwgMTMsIDIzOSwgMTE4LCA5LCAxMywgMjM5LCAxMTcsIDksIDEzLCAyMzksIDExNiwgOSwgMTMsIDIzOSwgMTE1LCA5LCAKLSAgICAxMywgMjM5LCAxMTQsIDksIDEzLCAyMzksIDExMywgOSwgMTMsIDIzOSwgMTEyLCA5LCAxMywgMjM5LCAxMTEsIDksIDEzLCAKLSAgICAyMzksIDExMCwgOSwgMTMsIDIzOSwgMTA5LCA5LCAxMywgMjM5LCAxMDgsIDksIDEzLCAyMzksIDEwNywgOSwgMTMsIDIzOSwgCi0gICAgMTA2LCA5LCAxMywgMjM5LCAxMDUsIDksIDEzLCAyMzksIDEwNCwgOSwgMTMsIDIzOSwgMTAzLCA5LCAxMywgMjM5LCAxMDIsIAotICAgIDksIDEzLCAyMzksIDEwMSwgOSwgMTMsIDIzOSwgMTAwLCA5LCAxMywgMjM5LCA5OSwgOSwgMTMsIDIzOSwgOTgsIDksIDEzLCAKLSAgICAyMzksIDk3LCA5LCAxMywgMjM5LCA5NiwgOSwgMTMsIDIzOSwgOTUsIDksIDEzLCAyMzksIDk0LCA5LCAxMywgMjM5LCA5MywgCi0gICAgOSwgMTMsIDIzOSwgOTIsIDksIDEzLCAyMzksIDkxLCA5LCAxMywgMjM5LCA5MCwgOSwgMTMsIDIzOSwgODksIDksIDEzLCAKLSAgICAyMzksIDg4LCA5LCAxMywgMjM5LCA4NywgOSwgMTMsIDIzOSwgODYsIDksIDEzLCAyMzksIDg1LCA5LCAxMywgMjM5LCA4NCwgCi0gICAgOSwgMTMsIDIzOSwgODMsIDksIDEzLCAyMzksIDgyLCA5LCAxMywgMjM5LCA4MSwgOSwgMTMsIDIzOSwgODAsIDksIDEzLCAKLSAgICAyMzksIDc5LCA5LCAxMywgMjM5LCA3OCwgOSwgMTMsIDIzOSwgNzcsIDksIDEzLCAyMzksIDc2LCA5LCAxMywgMjM5LCA3NSwgCi0gICAgOSwgMTMsIDIzOSwgNzQsIDksIDEzLCAyMzksIDczLCA5LCAxMywgMjM5LCA3MiwgOSwgMTMsIDIzOSwgNzEsIDksIDEzLCAKLSAgICAyMzksIDcwLCA5LCAxMywgMjM5LCA2OSwgOSwgMTMsIDIzOSwgNjgsIDksIDEzLCAyMzksIDY3LCA5LCAxMywgMjM5LCA2NiwgCi0gICAgOSwgMTMsIDIzOSwgNjUsIDksIDEzLCAyMzksIDY0LCA5LCAxMywgMjM5LCA2MywgOSwgMTMsIDIzOSwgNjIsIDksIDEzLCAKLSAgICAyMzksIDYxLCA5LCAxMywgMjM5LCA2MCwgOSwgMTMsIDIzOSwgNTksIDksIDEzLCAyMzksIDU4LCA5LCAxMywgMjM5LCA1NywgCi0gICAgOSwgMTMsIDIzOSwgNTYsIDksIDEzLCAyMzksIDU1LCA5LCAxMywgMjM5LCA1NCwgOSwgMTMsIDIzOSwgNTMsIDksIDEzLCAKLSAgICAyMzksIDUyLCA5LCAxMywgMjM5LCA1MSwgOSwgMTMsIDIzOSwgNTAsIDksIDEzLCAyMzksIDQ5LCA5LCAxMywgMjM5LCA0OCwgCi0gICAgOSwgMTMsIDIzOSwgNDcsIDksIDEzLCAyMzksIDQ2LCA5LCAxMywgMjM5LCA0NSwgOSwgMTMsIDIzOSwgNDQsIDksIDEzLCAKLSAgICAyMzksIDQzLCA5LCAxMywgMjM5LCA0MiwgOSwgMTMsIDIzOSwgNDEsIDksIDEzLCAyMzksIDQwLCA5LCAxMywgMjM5LCAzOSwgCi0gICAgOSwgMTMsIDIzOSwgMzgsIDksIDEzLCAyMzksIDM3LCA5LCAxMywgMjM5LCAzNiwgOSwgMTMsIDIzOSwgMzUsIDksIDEzLCAKLSAgICAyMzksIDM0LCA5LCAxMywgMjM5LCAzMywgOSwgMTMsIDIzOSwgMzIsIDksIDEzLCAyMzksIDMxLCA5LCAxMywgMjM5LCAzMCwgCi0gICAgOSwgMTMsIDIzOSwgMjksIDksIDEzLCAyMzksIDI4LCA5LCAxMywgMjM5LCAyNywgOSwgMTMsIDIzOSwgMjYsIDksIDEzLCAKLSAgICAyMzksIDI1LCA5LCAxMywgMjM5LCAyNCwgOSwgMTMsIDIzOSwgMjMsIDksIDEzLCAyMzksIDIyLCA5LCAxMywgMjM5LCAyMSwgCi0gICAgOSwgMTMsIDIzOSwgMjAsIDksIDEzLCAyMzksIDE5LCA5LCAxMywgMjM5LCAxOCwgOSwgMTMsIDIzOSwgMTcsIDksIDEzLCAKLSAgICAyMzksIDE2LCA5LCAxMywgMjM5LCAxNSwgOSwgMTMsIDIzOSwgMTQsIDksIDEzLCAyMzksIDEzLCA5LCAxMywgMjM5LCAxMiwgCi0gICAgOSwgMTMsIDIzOSwgMTEsIDksIDEzLCAyMzksIDEwLCA5LCAxMywgMjM5LCA5LCA5LCAxMywgMjM5LCA4LCA5LCAxMywgMjM5LCAKLSAgICA3LCA5LCAxMywgMjM5LCA2LCA5LCAxMywgMjM5LCA1LCA5LCAxMywgMjM5LCA0LCA5LCAxMywgMjM5LCAzLCA5LCAxMywgCi0gICAgMjM5LCAyLCA5LCAxMywgMjM5LCAxLCA5LCAxMywgMjM5LCAwLCA5LCAxMywgMjM4LCAyNTUsIDksIDEzLCAyMzgsIDI1NCwgCi0gICAgOSwgMTMsIDIzOCwgMjUzLCA5LCAxMywgMjM4LCAyNTIsIDksIDEzLCAyMzgsIDI1MSwgOSwgMTMsIDIzOCwgMjUwLCA5LCAKLSAgICAxMywgMjM4LCAyNDksIDksIDEzLCAyMzgsIDI0OCwgOSwgMTMsIDIzOCwgMjQ3LCA5LCAxMywgMjM4LCAyNDYsIDksIDEzLCAKLSAgICAyMzgsIDI0NSwgOSwgMTMsIDIzOCwgMjQ0LCA5LCAxMywgMjM4LCAyNDMsIDksIDEzLCAyMzgsIDI0MiwgOSwgMTMsIDIzOCwgCi0gICAgMjQxLCA5LCAxMywgMjM4LCAyNDAsIDksIDEzLCAyMzgsIDIzOSwgOSwgMTMsIDIzOCwgMjM4LCA5LCAxMywgMjM4LCAyMzcsIAotICAgIDksIDEzLCAyMzgsIDIzNiwgOSwgMTMsIDIzOCwgMjM1LCA5LCAxMywgMjM4LCAyMzQsIDksIDEzLCAyMzgsIDIzMywgOSwgCi0gICAgMTMsIDIzOCwgMjMyLCA5LCAxMywgMjM4LCAyMzEsIDksIDEzLCAyMzgsIDIzMCwgOSwgMTMsIDIzOCwgMjI5LCA5LCAxMywgCi0gICAgMjM4LCAyMjgsIDksIDEzLCAyMzgsIDIyNywgOSwgMTMsIDIzOCwgMjI2LCA5LCAxMywgMjM4LCAyMjUsIDksIDEzLCAyMzgsIAotICAgIDIyNCwgOSwgMTMsIDIzOCwgMjIzLCA5LCAxMywgMjM4LCAyMjIsIDksIDEzLCAyMzgsIDIyMSwgOSwgMTMsIDIzOCwgMjIwLCAKLSAgICA5LCAxMywgMjM4LCAyMTksIDksIDEzLCAyMzgsIDIxOCwgOSwgMTMsIDIzOCwgMjE3LCA5LCAxMywgMjM4LCAyMTYsIDksIAotICAgIDEzLCAyMzgsIDIxNSwgOSwgMTMsIDIzOCwgMjE0LCA5LCAxMywgMjM4LCAyMTMsIDksIDEzLCAyMzgsIDIxMiwgOSwgMTMsIAotICAgIDIzOCwgMjExLCA5LCAxMywgMjM4LCAyMTAsIDksIDEzLCAyMzgsIDIwOSwgOSwgMTMsIDIzOCwgMjA4LCA5LCAxMywgMjM4LCAKLSAgICAyMDcsIDksIDEzLCAyMzgsIDIwNiwgOSwgMTMsIDIzOCwgMjA1LCA5LCAxMywgMjM4LCAyMDQsIDksIDEzLCAyMzgsIDIwMywgCi0gICAgOSwgMTMsIDIzOCwgMjAyLCA5LCAxMywgMjM4LCAyMDEsIDksIDEzLCAyMzgsIDIwMCwgOSwgMTMsIDIzOCwgMTk5LCA5LCAKLSAgICAxMywgMjM4LCAxOTgsIDksIDEzLCAyMzgsIDE5NywgOSwgMTMsIDIzOCwgMTk2LCA5LCAxMywgMjM4LCAxOTUsIDksIDEzLCAKLSAgICAyMzgsIDE5NCwgOSwgMTMsIDIzOCwgMTkzLCA5LCAxMywgMjM4LCAxOTIsIDksIDEzLCAyMzgsIDE5MSwgOSwgMTMsIDIzOCwgCi0gICAgMTkwLCA5LCAxMywgMjM4LCAxODksIDksIDEzLCAyMzgsIDE4OCwgOSwgMTMsIDIzOCwgMTg3LCA5LCAxMywgMjM4LCAxODYsIAotICAgIDksIDEzLCAyMzgsIDE4NSwgOSwgMTMsIDIzOCwgMTg0LCA5LCAxMywgMjM4LCAxODMsIDksIDEzLCAyMzgsIDE4MiwgOSwgCi0gICAgMTMsIDIzOCwgMTgxLCA5LCAxMywgMjM4LCAxODAsIDksIDEzLCAyMzgsIDE3OSwgOSwgMTMsIDIzOCwgMTc4LCA5LCAxMywgCi0gICAgMjM4LCAxNzcsIDksIDEzLCAyMzgsIDE3NiwgOSwgMTMsIDIzOCwgMTc1LCA5LCAxMywgMjM4LCAxNzQsIDksIDEzLCAyMzgsIAotICAgIDE3MywgOSwgMTMsIDIzOCwgMTcyLCA5LCAxMywgMjM4LCAxNzEsIDksIDEzLCAyMzgsIDE3MCwgOSwgMTMsIDIzOCwgMTY5LCAKLSAgICA5LCAxMywgMjM4LCAxNjgsIDksIDEzLCAyMzgsIDE2NywgOSwgMTMsIDIzOCwgMTY2LCA5LCAxMywgMjM4LCAxNjUsIDksIAotICAgIDEzLCAyMzgsIDE2NCwgOSwgMTMsIDIzOCwgMTYzLCA5LCAxMywgMjM4LCAxNjIsIDksIDEzLCAyMzgsIDE2MSwgOSwgMTMsIAotICAgIDIzOCwgMTYwLCA5LCAxMywgMjM4LCAxNTksIDksIDEzLCAyMzgsIDE1OCwgOSwgMTMsIDIzOCwgMTU3LCA5LCAxMywgMjM4LCAKLSAgICAxNTYsIDksIDEzLCAyMzgsIDE1NSwgOSwgMTMsIDIzOCwgMTU0LCA5LCAxMywgMjM4LCAxNTMsIDksIDEzLCAyMzgsIDE1MiwgCi0gICAgOSwgMTMsIDIzOCwgMTUxLCA5LCAxMywgMjM4LCAxNTAsIDksIDEzLCAyMzgsIDE0OSwgOSwgMTMsIDIzOCwgMTQ4LCA5LCAKLSAgICAxMywgMjM4LCAxNDcsIDksIDEzLCAyMzgsIDE0NiwgOSwgMTMsIDIzOCwgMTQ1LCA5LCAxMywgMjM4LCAxNDQsIDksIDEzLCAKLSAgICAyMzgsIDE0MywgOSwgMTMsIDIzOCwgMTQyLCA5LCAxMywgMjM4LCAxNDEsIDksIDEzLCAyMzgsIDE0MCwgOSwgMTMsIDIzOCwgCi0gICAgMTM5LCA5LCAxMywgMjM4LCAxMzgsIDksIDEzLCAyMzgsIDEzNywgOSwgMTMsIDIzOCwgMTM2LCA5LCAxMywgMjM4LCAxMzUsIAotICAgIDksIDEzLCAyMzgsIDEzNCwgOSwgMTMsIDIzOCwgMTMzLCA5LCAxMywgMjM4LCAxMzIsIDksIDEzLCAyMzgsIDEzMSwgOSwgCi0gICAgMTMsIDIzOCwgMTMwLCA5LCAxMywgMjM4LCAxMjksIDksIDEzLCAyMzgsIDEyOCwgOSwgMTMsIDIzOCwgMTI3LCA5LCAxMywgCi0gICAgMjM4LCAxMjYsIDksIDEzLCAyMzgsIDEyNSwgOSwgMTMsIDIzOCwgMTI0LCA5LCAxMywgMjM4LCAxMjMsIDksIDEzLCAyMzgsIAotICAgIDEyMiwgOSwgMTMsIDIzOCwgMTIxLCA5LCAxMywgMjM4LCAxMjAsIDksIDEzLCAyMzgsIDExOSwgOSwgMTMsIDIzOCwgMTE4LCAKLSAgICA5LCAxMywgMjM4LCAxMTcsIDksIDEzLCAyMzgsIDExNiwgOSwgMTMsIDIzOCwgMTE1LCA5LCAxMywgMjM4LCAxMTQsIDksIAotICAgIDEzLCAyMzgsIDExMywgOSwgMTMsIDIzOCwgMTEyLCA5LCAxMywgMjM4LCAxMTEsIDksIDEzLCAyMzgsIDExMCwgOSwgMTMsIAotICAgIDIzOCwgMTA5LCA5LCAxMywgMjM4LCAxMDgsIDksIDEzLCAyMzgsIDEwNywgOSwgMTMsIDIzOCwgMTA2LCA5LCAxMywgMjM4LCAKLSAgICAxMDUsIDksIDEzLCAyMzgsIDEwNCwgOSwgMTMsIDIzOCwgMTAzLCA5LCAxMywgMjM4LCAxMDIsIDksIDEzLCAyMzgsIDEwMSwgCi0gICAgOSwgMTMsIDIzOCwgMTAwLCA5LCAxMywgMjM4LCA5OSwgOSwgMTMsIDIzOCwgOTgsIDksIDEzLCAyMzgsIDk3LCA5LCAxMywgCi0gICAgMjM4LCA5NiwgOSwgMTMsIDIzOCwgOTUsIDksIDEzLCAyMzgsIDk0LCA5LCAxMywgMjM4LCA5MywgOSwgMTMsIDIzOCwgOTIsIAotICAgIDksIDEzLCAyMzgsIDkxLCA5LCAxMywgMjM4LCA5MCwgOSwgMTMsIDIzOCwgODksIDksIDEzLCAyMzgsIDg4LCA5LCAxMywgCi0gICAgMjM4LCA4NywgOSwgMTMsIDIzOCwgODYsIDksIDEzLCAyMzgsIDg1LCA5LCAxMywgMjM4LCA4NCwgOSwgMTMsIDIzOCwgODMsIAotICAgIDksIDEzLCAyMzgsIDgyLCA5LCAxMywgMjM4LCA4MSwgOSwgMTMsIDIzOCwgODAsIDksIDEzLCAyMzgsIDc5LCA5LCAxMywgCi0gICAgMjM4LCA3OCwgOSwgMTMsIDIzOCwgNzcsIDksIDEzLCAyMzgsIDc2LCA5LCAxMywgMjM4LCA3NSwgOSwgMTMsIDIzOCwgNzQsIAotICAgIDksIDEzLCAyMzgsIDczLCA5LCAxMywgMjM4LCA3MiwgOSwgMTMsIDIzOCwgNzEsIDksIDEzLCAyMzgsIDcwLCA5LCAxMywgCi0gICAgMjM4LCA2OSwgOSwgMTMsIDIzOCwgNjgsIDksIDEzLCAyMzgsIDY3LCA5LCAxMywgMjM4LCA2NiwgMjMzLCAxMTQsIDIxOCwgCi0gICAgMzMsIDEyNiwgMjE5LCAyMDYsIDEyNiwgMjQ0LCAyNTQsIDc3LCAxMjYsIDIyNCwgMTQzLCA3NywgMTI2LCA1MCwgNTIsIAotICAgIDEyNiwgMjQ3LCA4NiwgNTIsIDEyNiwgMjI2LCA1NywgNTIsIDEyNiwgMjU0LCAzNSwgMTI2LCAyNTMsIDIyNiwgMTI2LCA0MiwgCi0gICAgMjI2LCAxMzEsIDEyNiwgNDYsIDIyNiwgMTMxLCAxMjYsIDI1MywgMTMyLCAxMjYsIDk0LCA1MiwgMTI2LCAyNDksIDE1NywgCi0gICAgMTI2LCAyNDAsIDE1OSwgMTI2LCAyNDMsIDIwMCwgMjE5LCA2OSwgMTI2LCAyMTksIDIzMSwgMTI2LCAyMSwgMjEyLCA3OSwgCi0gICAgMTI2LCAyMSwgMTE2LCAxMjYsIDIxLCAxMDksIDEyNiwgMjEsIDE2NiwgMTI2LCAyMSwgMTYzLCAxMjYsIDIxLCAxODAsIAotICAgIDEyNiwgMjEsIDE4OSwgMTI2LCAyMSwgMTk4LCAxMjYsIDIxLCAxOTUsIDEyNiwgMjEsIDIwMCwgMTI2LCAyNDksIDE2NCwgCi0gICAgMTI2LCAyMjEsIDcwLCAxMjYsIDIzMywgMzksIDUyLCAxMjYsIDI0NSwgNjEsIDUyLCAxMjYsIDI0MiwgMTA3LCA1MiwgMTI2LCAKLSAgICAyMjQsIDE1OCwgNzcsIDEyNiwgMjQ5LCAxNTYsIDI1MywgMTIyLCAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIDEsIAotICAgIDI1MywgNzQsIDEyNiwgNywgNiwgMSwgMjUwLCAyNTIsIDEyNiwgNywgNiwgMSwgMjQ5LCAzLCAxMjYsIDcsIDYsIDEsIDc0LCAKLSAgICAxMjYsIDcsIDYsIDEsIDI0NCwgMjMwLCAxMjYsIDcsIDYsIDEsIDI0MywgMTc3LCAxMjYsIDcsIDYsIDEsIDI0MiwgNDEsIAotICAgIDEyNiwgNywgNiwgMSwgNzIsIDEyNiwgNywgNiwgMSwgMjM1LCAxNDIsIDEyNiwgNywgNiwgMSwgMjM1LCAyNywgMTI2LCA3LCAKLSAgICA2LCAxLCAxNTAsIDEyNiwgNywgNiwgMSwgMTgzLCAxMjYsIDcsIDYsIDEsIDIwNCwgMTI2LCA3LCA2LCAxLCA3NSwgMTI2LCAKLSAgICA3LCA2LCAxLCAyMjYsIDIyOSwgMTI2LCA3LCA2LCAxLCAyMjQsIDI0MCwgMTI2LCA3LCA2LCAxLCAxNDksIDEyNiwgNywgNiwgCi0gICAgMSwgMTk3LCAxMjYsIDcsIDYsIDEsIDIxOCwgOTksIDEyNiwgNywgNiwgMSwgNjksIDEyNiwgNywgNiwgMSwgMjE1LCA3OSwgCi0gICAgMTI2LCA3LCA2LCAxLCAyMTQsIDgyLCAxMjYsIDcsIDYsIDEsIDIxMywgMTY2LCAxMjYsIDcsIDYsIDEsIDIxMywgMTA1LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIxMiwgMTUyLCAxMjYsIDQyLCA0MSwgMTI1LCAxMjYsIDIyMywgMjAzLCAyMTksIDIzMSwgMTI2LCAKLSAgICA0NiwgNDEsIDEyNSwgMTI2LCAyNDksIDIyNCwgMjU0LCAxNzQsIDEyNiwgMTE1LCAyMzIsIDI0MiwgMTI2LCAyNDIsIDExNCwgCi0gICAgMjU0LCAxNzQsIDEyNiwgNywgMywgMSwgNjEsIDEyNiwgNywgMywgMSwgMjUzLCA3NCwgMTI2LCA3LCAzLCAxLCAyNTAsIAotICAgIDI1MiwgMTI2LCA3LCAzLCAxLCAyNDksIDMsIDEyNiwgNywgMywgMSwgNzQsIDEyNiwgNywgMywgMSwgMjQ0LCAyMzAsIDEyNiwgCi0gICAgNywgMywgMSwgMjQzLCAxNzcsIDEyNiwgNywgMywgMSwgMjQyLCA0MSwgMTI2LCA3LCAzLCAxLCA3MiwgMTI2LCA3LCAzLCAxLCAKLSAgICAyMzUsIDE0MiwgMTI2LCA3LCAzLCAxLCAyMzUsIDI3LCAxMjYsIDcsIDMsIDEsIDE1MCwgMTI2LCA3LCAzLCAxLCAxODMsIAotICAgIDEyNiwgNywgMywgMSwgMjA0LCAxMjYsIDcsIDMsIDEsIDc1LCAxMjYsIDcsIDMsIDEsIDIyNiwgMjI5LCAxMjYsIDcsIDMsIAotICAgIDEsIDIyNCwgMjQwLCAxMjYsIDcsIDMsIDEsIDE0OSwgMTI2LCA3LCAzLCAxLCAxOTcsIDEyNiwgNywgMywgMSwgMjE4LCA5OSwgCi0gICAgMTI2LCA3LCAzLCAxLCA2OSwgMTI2LCA3LCAzLCAxLCAyMTUsIDc5LCAxMjYsIDcsIDMsIDEsIDIxNCwgODIsIDEyNiwgNywgCi0gICAgMywgMSwgMjEzLCAxNjYsIDEyNiwgNywgMywgMSwgMjEzLCAxMDUsIDEyNiwgNywgMywgMSwgMjEyLCAxNTIsIDEyNiwgNDIsIAotICAgIDI0OSwgNDAsIDEyNSwgMTI2LCA3MSwgMjMyLCAyNDIsIDEyNiwgNDYsIDI0OSwgNDAsIDEyNSwgMTI2LCAyMTcsIDQyLCAKLSAgICAyNTAsIDE5NCwgMjE4LCAzMywgNDMsIDIyMSwgMjU0LCA0MywgMjIxLCAyNDMsIDQzLCAyMjEsIDIzMiwgNDMsIDIyMSwgCi0gICAgMjIwLCA0MywgMjIxLCAyMDksIDQzLCAyMjEsIDE5OCwgNDMsIDIyMSwgMTg3LCA0MywgMjIxLCAxNzYsIDQzLCAyMjEsIAotICAgIDE2NSwgNDMsIDIyMSwgMTU3LCA0MywgMjIxLCAxNTYsIDQzLCAyMjEsIDE1NSwgNDMsIDIyMSwgMTU0LCA0MywgMjIxLCAKLSAgICAxNTIsIDQzLCAyMjEsIDE1MSwgNDMsIDIyMSwgMTUwLCA0MywgMjIxLCAxNDksIDQzLCAyMjEsIDE0OCwgNDMsIDIyMSwgCi0gICAgMTQ3LCA0MywgMjIxLCAxNDYsIDQzLCAyMjEsIDE0NSwgNDMsIDIyMSwgMTQ0LCA0MywgMjIxLCAxNDMsIDQzLCAyMjEsIAotICAgIDE0MSwgNDMsIDIyMSwgMTQwLCA0MywgMjIxLCAxMzksIDQzLCAyMjEsIDEzOCwgNDMsIDIyMSwgMTM3LCA0MywgMjIxLCAKLSAgICAxMzYsIDQzLCAyMjEsIDEzNSwgNDMsIDIyMSwgMTM0LCA0MywgMjIxLCAxMzMsIDQzLCAyMjEsIDEzMiwgNDMsIDIyMSwgCi0gICAgMTMwLCA0MywgMjIxLCAxMjksIDQzLCAyMjEsIDEyOCwgNDMsIDIyMSwgMTI3LCA0MywgMjIxLCAxMjYsIDQzLCAyMjEsIAotICAgIDEyNSwgNDMsIDIyMSwgMTI0LCA0MywgMjIxLCAxMjMsIDQzLCAyMjEsIDEyMiwgNDMsIDIyMSwgMTIxLCA0MywgMjIxLCAKLSAgICAxMTksIDQzLCAyMjEsIDExOCwgNDMsIDIyMSwgMTE3LCA0MywgMjIxLCAxMTYsIDQzLCAyMjEsIDExNSwgNDMsIDIyMSwgCi0gICAgMTE0LCA0MywgMjIxLCAxMTMsIDQzLCAyMjEsIDExMiwgNDMsIDIyMSwgMTExLCA0MywgMjIxLCAxMTAsIDQzLCAyMjEsIAotICAgIDEwOCwgNDMsIDIyMSwgMTA3LCA0MywgMjIxLCAxMDYsIDQzLCAyMjEsIDEwNSwgNDMsIDIyMSwgMTA0LCA0MywgMjIxLCAKLSAgICAxMDMsIDQzLCAyMjEsIDEwMiwgNDMsIDIyMSwgMTAxLCA0MywgMjIxLCAxMDAsIDQzLCAyMjEsIDk5LCA0MywgMjIxLCA5NywgCi0gICAgNDMsIDIyMSwgOTYsIDQzLCAyMjEsIDk1LCA0MywgMjIxLCA5NCwgNDMsIDIyMSwgOTMsIDQzLCAyMjEsIDkyLCA0MywgMjIxLCAKLSAgICA5MSwgNDMsIDIyMSwgOTAsIDQzLCAyMjEsIDg5LCA0MywgMjIxLCA4OCwgNDMsIDIyMSwgODYsIDQzLCAyMjEsIDg1LCA0MywgCi0gICAgMjIxLCA4NCwgNDMsIDIyMSwgODMsIDQzLCAyMjEsIDgyLCA0MywgMjIxLCA4MSwgNDMsIDIyMSwgODAsIDQzLCAyMjEsIDc5LCAKLSAgICA0MywgMjIxLCA3OCwgNDMsIDIyMSwgNzcsIDQzLCAyMjIsIDc0LCA0MywgMjIyLCA3MywgNDMsIDIyMiwgNzIsIDQzLCAyMjIsIAotICAgIDcxLCA0MywgMjIyLCA3MCwgNDMsIDIyMiwgNjksIDQzLCAyMjIsIDY4LCA0MywgMjIyLCA2NywgNDMsIDIyMiwgNjYsIDQzLCAKLSAgICAyMjIsIDY1LCA0MywgMjIyLCA2MywgNDMsIDIyMiwgNjIsIDQzLCAyMjIsIDYxLCA0MywgMjIyLCA2MCwgNDMsIDIyMiwgNTksIAotICAgIDQzLCAyMjIsIDU4LCA0MywgMjIyLCA1NywgNDMsIDIyMiwgNTYsIDQzLCAyMjIsIDU1LCA0MywgMjIyLCA1NCwgNDMsIDIyMiwgCi0gICAgNTIsIDQzLCAyMjIsIDUxLCA0MywgMjIyLCA1MCwgNDMsIDIyMiwgNDksIDQzLCAyMjIsIDQ4LCA0MywgMjIyLCA0NywgNDMsIAotICAgIDIyMiwgNDYsIDQzLCAyMjIsIDQ1LCA0MywgMjIyLCA0NCwgNDMsIDIyMiwgNDMsIDQzLCAyMjIsIDQxLCA0MywgMjIyLCA0MCwgCi0gICAgNDMsIDIyMiwgMzksIDQzLCAyMjIsIDM4LCA0MywgMjIyLCAzNywgNDMsIDIyMiwgMzYsIDQzLCAyMjIsIDM1LCA0MywgMjIyLCAKLSAgICAzNCwgNDMsIDIyMiwgMzMsIDQzLCAyMjIsIDMyLCA0MywgMjIyLCAzMCwgNDMsIDIyMiwgMjksIDQzLCAyMjIsIDI4LCA0MywgCi0gICAgMjIyLCAyNywgNDMsIDIyMiwgMjYsIDQzLCAyMjIsIDI1LCA0MywgMjIyLCAyNCwgNDMsIDIyMiwgMjMsIDQzLCAyMjIsIDIyLCAKLSAgICA0MywgMjIyLCAyMSwgNDMsIDIyMiwgMTksIDQzLCAyMjIsIDE4LCA0MywgMjIyLCAxNywgNDMsIDIyMiwgMTYsIDQzLCAyMjIsIAotICAgIDE1LCA0MywgMjIyLCAxNCwgNDMsIDIyMiwgMTMsIDQzLCAyMjIsIDEyLCA0MywgMjIyLCAxMSwgNDMsIDIyMiwgMTAsIDQzLCAKLSAgICAyMjIsIDgsIDQzLCAyMjIsIDcsIDQzLCAyMjIsIDYsIDQzLCAyMjIsIDUsIDQzLCAyMjIsIDQsIDQzLCAyMjIsIDMsIDQzLCAKLSAgICAyMjIsIDIsIDQzLCAyMjIsIDEsIDQzLCAyMjIsIDAsIDQzLCAyMjEsIDI1NSwgNDMsIDIyMSwgMjUzLCA0MywgMjIxLCAyNTIsIAotICAgIDQzLCAyMjEsIDI1MSwgNDMsIDIyMSwgMjUwLCA0MywgMjIxLCAyNDksIDQzLCAyMjEsIDI0OCwgNDMsIDIyMSwgMjQ3LCA0MywgCi0gICAgMjIxLCAyNDYsIDQzLCAyMjEsIDI0NSwgNDMsIDIyMSwgMjQ0LCA0MywgMjIxLCAyNDIsIDQzLCAyMjEsIDI0MSwgNDMsIAotICAgIDIyMSwgMjQwLCA0MywgMjIxLCAyMzksIDQzLCAyMjEsIDIzOCwgNDMsIDIyMSwgMjM3LCA0MywgMjIxLCAyMzYsIDQzLCAKLSAgICAyMjEsIDIzNSwgNDMsIDIyMSwgMjM0LCA0MywgMjIxLCAyMzMsIDQzLCAyMjEsIDIzMSwgNDMsIDIyMSwgMjMwLCA0MywgCi0gICAgMjIxLCAyMjksIDQzLCAyMjEsIDIyOCwgNDMsIDIyMSwgMjI3LCA0MywgMjIxLCAyMjYsIDQzLCAyMjEsIDIyNSwgNDMsIAotICAgIDIyMSwgMjI0LCA0MywgMjIxLCAyMjMsIDQzLCAyMjEsIDIyMiwgNDMsIDIyMSwgMjE5LCA0MywgMjIxLCAyMTgsIDQzLCAKLSAgICAyMjEsIDIxNywgNDMsIDIyMSwgMjE2LCA0MywgMjIxLCAyMTUsIDQzLCAyMjEsIDIxNCwgNDMsIDIyMSwgMjEzLCA0MywgCi0gICAgMjIxLCAyMTIsIDQzLCAyMjEsIDIxMSwgNDMsIDIyMSwgMjEwLCA0MywgMjIxLCAyMDgsIDQzLCAyMjEsIDIwNywgNDMsIAotICAgIDIyMSwgMjA2LCA0MywgMjIxLCAyMDUsIDQzLCAyMjEsIDIwNCwgNDMsIDIyMSwgMjAzLCA0MywgMjIxLCAyMDIsIDQzLCAKLSAgICAyMjEsIDIwMSwgNDMsIDIyMSwgMjAwLCA0MywgMjIxLCAxOTksIDQzLCAyMjEsIDE5NywgNDMsIDIyMSwgMTk2LCA0MywgCi0gICAgMjIxLCAxOTUsIDQzLCAyMjEsIDE5NCwgNDMsIDIyMSwgMTkzLCA0MywgMjIxLCAxOTIsIDQzLCAyMjEsIDE5MSwgNDMsIAotICAgIDIyMSwgMTkwLCA0MywgMjIxLCAxODksIDQzLCAyMjEsIDE4OCwgNDMsIDIyMSwgMTg2LCA0MywgMjIxLCAxODUsIDQzLCAKLSAgICAyMjEsIDE4NCwgNDMsIDIyMSwgMTgzLCA0MywgMjIxLCAxODIsIDQzLCAyMjEsIDE4MSwgNDMsIDIyMSwgMTgwLCA0MywgCi0gICAgMjIxLCAxNzksIDQzLCAyMjEsIDE3OCwgNDMsIDIyMSwgMTc3LCA0MywgMjIxLCAxNzUsIDQzLCAyMjEsIDE3NCwgNDMsIAotICAgIDIyMSwgMTczLCA0MywgMjIxLCAxNzIsIDQzLCAyMjEsIDE3MSwgNDMsIDIyMSwgMTcwLCA0MywgMjIxLCAxNjksIDQzLCAKLSAgICAyMjEsIDE2OCwgNDMsIDIyMSwgMTY3LCA0MywgMjIxLCAxNjYsIDQzLCAyMjEsIDE2NCwgNDMsIDIyMSwgMTYzLCA0MywgCi0gICAgMjIxLCAxNjIsIDQzLCAyMjEsIDE2MSwgNDMsIDIyMSwgMTYwLCA0MywgMjIxLCAxNTksIDQzLCAyMjEsIDE1OCwgCisgICAgMCwgMjE5LCAxOCwgMjQ1LCAzMSwgNzgsIDIyMywgMjU0LCA3OCwgNTQsIDUwLCAyNDcsIDEzMiwgNTAsIDIyNSwgMTgyLCAKKyAgICA1MCwgMjU0LCAxMjYsIDI1NCwgNTcsIDQzLCAyMjYsIDMsIDQ0LCAyMjYsIDMsIDI1MywgMjE2LCA5NiwgNTAsIDI0OSwgCisgICAgMjE5LCAyNDAsIDE2NywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMTksIDQ2LCAyMSwgMjEwLCA4NiwgMjEsIDExMCwgMjEsIAorICAgIDEwNSwgMjEsIDE1OCwgMjEsIDE2MSwgMjEsIDE4OSwgMjEsIDE5NCwgMjEsIDE5OCwgMjEsIDE5NSwgMjEsIDIwMCwgMjQ5LCAKKyAgICAyMjYsIDIyMCwgMTUwLCAyMzMsIDE1LCA1MCwgMjQ1LCA5OCwgNTAsIDI0MiwgMTMwLCA1MCwgMjI0LCAxMywgNzgsIDI0OSwgCisgICAgMjE3LCAyNTMsIDIwNiwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTU4LCA3LCA2LCAxLCAyNTEsIDY2LCA3LCA2LCAxLCAKKyAgICAyNDksIDYwLCA3LCA2LCAxLCA3NSwgNywgNiwgMSwgMjQ1LCA2LCA3LCA2LCAxLCAyNDMsIDIwMiwgNywgNiwgMSwgMjQyLCAKKyAgICA2MCwgNywgNiwgMSwgNzMsIDcsIDYsIDEsIDIzNSwgMTQ0LCA3LCA2LCAxLCAyMzUsIDIzLCA3LCA2LCAxLCAxNTYsIDcsIDYsIAorICAgIDEsIDE5MywgNywgNiwgMSwgMjMwLCAyNSwgNywgNiwgMSwgNzYsIDcsIDYsIDEsIDIyNiwgMTA1LCA3LCA2LCAxLCAyMjQsIAorICAgIDk2LCA3LCA2LCAxLCAxNTMsIDcsIDYsIDEsIDIyMiwgOTEsIDcsIDYsIDEsIDIxNywgMTUyLCA3LCA2LCAxLCA3MCwgNywgNiwgCisgICAgMSwgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMiwgOTgsIDcsIDYsIDEsIDIxMSwgMTc4LCA3LCA2LCAxLCAyMTEsIDExNywgNywgCisgICAgNiwgMSwgMjEwLCAxNTksIDQzLCA0MiwgMTI3LCAyMjMsIDUwLCAyMTksIDQ2LCA0NCwgNDIsIDEyNywgMjUwLCAzMSwgMjU1LCAKKyAgICAxNCwgMTIxLCAyMzIsIDIxMywgMjQyLCAxMzcsIDI1NSwgMTQsIDcsIDQsIDEsIDYxLCA3LCA0LCAxLCAyNTMsIDE1OCwgNywgCisgICAgNCwgMSwgMjUxLCA2NiwgNywgNCwgMSwgMjQ5LCA2MCwgNywgNCwgMSwgNzUsIDcsIDQsIDEsIDI0NSwgNiwgNywgNCwgMSwgCisgICAgMjQzLCAyMDIsIDcsIDQsIDEsIDI0MiwgNjAsIDcsIDQsIDEsIDczLCA3LCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjM1LCAKKyAgICAyMywgNywgNCwgMSwgMTU2LCA3LCA0LCAxLCAxOTMsIDcsIDQsIDEsIDIzMCwgMjUsIDcsIDQsIDEsIDc2LCA3LCA0LCAxLCAKKyAgICAyMjYsIDEwNSwgNywgNCwgMSwgMjI0LCA5NiwgNywgNCwgMSwgMTUzLCA3LCA0LCAxLCAyMjIsIDkxLCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgNywgNCwgMSwgNzAsIDcsIDQsIDEsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTIsIDk4LCA3LCA0LCAxLCAyMTEsIDE3OCwgCisgICAgNywgNCwgMSwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTU5LCA0MywgMjQ5LCA5OSwgMTI3LCA2NywgMjMyLCAyMTMsIDQ0LCAKKyAgICAyNDksIDk5LCAxMjcsIDE4MiwgMjI4LCA3MywgMjE5LCAxOCwgMjM1LCAxOTMsIDI0NSwgMzEsIDc4LCAyNTAsIDE3NiwgNTAsIAorICAgIDIyNCwgMjI4LCA1MCwgMjQ5LCA5OCwgNTAsIDIxMSwgNDAsIDUwLCAyNTEsIDEzNSwgMTMwLCAyMjEsIDE3MywgNTAsIDI0OCwgCisgICAgMSwgMjQ5LCAxNjMsIDUwLCAyNDQsIDEzNiwgMjI2LCAxNTQsIDIzNSwgMjM4LCAyMzMsIDQyLCA1MiwgMjU0LCAxMTAsIAorICAgIDIyMywgMjU0LCA3OCwgMjI4LCA1MiwgNTAsIDIxOSwgNTIsIDI0MCwgMTY4LCAyMjMsIDEwMiwgNTAsIDIzMSwgMjMyLCAKKyAgICAyNDgsIDcxLCA1MCwgMjI1LCAyMSwgNTAsIDIxOCwgMjMsIDEwNSwgMjE4LCAyMywgMTU4LCAyNTUsIDMsIDI1NSwgMTQsIAorICAgIDIzMCwgMjI4LCA1MCwgMjI1LCA2OCwgNTAsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjUwLCAxODMsIDIxOCwgMjMsIDExMCwgCisgICAgMjMxLCAxNDgsIDIyNiwgMTU0LCAyMzUsIDIzOCwgMjIyLCAyNDcsIDUyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDc4LCAyMTIsIAorICAgIDExNCwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMjEyLCAxMTQsIDI0NCwgCisgICAgMiwgMTM0LCAyMjQsIDE5LCAyMzUsIDE5MywgMjI0LCAxMywgNzgsIDcsIDYsIDEsIDExNSwgMiwgMjQyLCAxMzYsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDExNSwgMiwgMTgyLCA3LCA2LCAxLCAKKyAgICAxMTUsIDIsIDI0OCwgMSwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDYsIDEsIDI1NCwgMjQzLCA3LCA2LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMTYwLCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAxNDIsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMTYwLCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAKKyAgICAyNDIsIDEzNiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMzAsIDcsIDYsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0NSwgNTksIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE4MiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMCwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAxODIsIDcsIDYsIDEsIDE0NCwgMiwgMjQ4LCAxLCAyMzAsIDg0LCA1MCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICA5MSwgNywgNiwgMSwgMTA0LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgCisgICAgMjUwLCAzMCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDIxNiwgMTUxLCA3LCA0LCAxLCAyMjAsIDc2LCAyMjIsIDkxLCA3LCA0LCAxLCAxMTUsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAxMTUsIDIsIDE4MiwgNywgNCwgMSwgCisgICAgMTE1LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAyNTQsIDI0MywgNywgNCwgCisgICAgMSwgMjUxLCA2NywgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDE2MCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgMTQyLCAKKyAgICA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDE2MCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgCisgICAgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAxNDIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDMwLCA3LCA0LCAKKyAgICAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyNDUsIDU5LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAxODIsIDcsIDQsIAorICAgIDEsIDE0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzAsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMTgyLCA3LCA0LCAxLCAxNDQsIDIsIDI0OCwgMSwgMjQ3LCAxNjksIDUwLCA3LCA0LCAxLCAxNDQsIAorICAgIDIsIDkxLCA3LCA0LCAxLCAxMDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyNTAsIDMwLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDE0MiwgNywgNCwgMSwgCisgICAgMjE2LCAxNTEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDExNSwgMiwgMjMxLCAyMzIsIDcsIDQsIAorICAgIDEsIDExNSwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAKKyAgICAxNDYsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDExNSwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDI1MSwgCisgICAgNjcsIDIsIDE0MiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMTQyLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDMwLCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyNDksIDYxLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0OSwgCisgICAgNjEsIDIsIDkxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCA5MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTYwLCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTYwLCAyLCAyNTEsIDE0NiwgCisgICAgNywgNiwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgCisgICAgMjI0LCA3LCA0LCAxLCAxNjAsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgCisgICAgMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MSwgMTQ2LCA3LCA2LCAKKyAgICAxLCAyNDMsIDIwMywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwMywgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAKKyAgICAzMCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjQyLCA2MSwgMiwgOTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjEsIDIsIDkxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMTgyLCA3LCA2LCAxLCAKKyAgICAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjQwLCAxNTQsIAorICAgIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIAorICAgIDIyNCwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgNTksIDQ4LCA3LCA0LCAKKyAgICAxLCAyNDcsIDExOSwgNzMsIDcsIDYsIDI3LCAyMzYsIDMxLCA3LCA0LCAyNywgMjM2LCAzMSwgNywgNiwgMSwgMjM1LCAxNDUsIAorICAgIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDE4MywgCisgICAgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIzMywgMjM5LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgCisgICAgMTQyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTQyLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIAorICAgIDIzMywgMTQ5LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIAorICAgIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxNDIsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDE0MiwgNywgNiwgMSwgMjMwLCAyNiwgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyNTAsIAorICAgIDIzNCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzMCwgMjYsIDIyNCwgMjA0LCAyNTEsIDc4LCAKKyAgICAyNTQsIDU3LCA3LCA2LCAxLCAyNDUsIDEzOCwgNywgNCwgMSwgMjQ1LCAxMzgsIDcsIDYsIDEsIDE0NCwgMiwgMjMxLCAyMzIsIAorICAgIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDE0NCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDE0NCwgMiwgCisgICAgMjUxLCAxNDYsIDcsIDYsIDEsIDE0NCwgMiwgNTIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA2LCAyNywgCisgICAgMjI2LCAyMzQsIDcsIDQsIDI3LCAyMjYsIDIzNCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDE0MiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDE0MiwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAKKyAgICAxODMsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyMjIsIDkyLCAyLCAxNDIsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDE0MiwgNywgNiwgMSwgMjIyLCA5MiwgMiwgCisgICAgMjUwLCAzMCwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAxODMsIDcsIAorICAgIDQsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjIyLCAKKyAgICA5MiwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDI1MCwgMTgzLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDIzNCwgCisgICAgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDkxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAxMDQsIDIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMTA0LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTA0LCAyLCAyNTEsIDE0NiwgNywgNiwgMSwgMTA0LCAKKyAgICAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDUyLCAxNDIsIAorICAgIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyMjYsIDIyNCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjUwLCAzMCwgNywgCisgICAgNiwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMTEsIAorICAgIDExOCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMTQyLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMTQyLCA3LCAKKyAgICA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTAsIAorICAgIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTk5LCAyMjIsIDkxLCAKKyAgICA3LCA0LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDU3LCAyLCAxMDMsIDcsIDYsIDEsIDU3LCAyLCAyMTYsIDExLCA3LCA0LCAKKyAgICAxLCA1NywgMiwgMjE2LCAxMSwgNywgNiwgMSwgMTM4LCAxOTQsIDcsIDQsIDEsIDEzOCwgMTk0LCA3LCA2LCAxLCAyMDQsIAorICAgIDc2LCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAxMDMsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDEwMywgNywgNiwgMSwgMjU0LCAKKyAgICAyMTksIDI0OSwgNjAsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDEwMywgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMjE2LCAxMSwgNywgCisgICAgNCwgMSwgMjQ5LCA2MSwgMiwgMjE2LCAxMSwgNywgNCwgMSwgMjE1LCA5NCwgMjQ4LCA1NCwgNywgNiwgMSwgMjIzLCA0OSwgCisgICAgNzUsIDcsIDYsIDEsIDIyMSwgMTk1LCA3LCA2LCAxLCAyMDQsIDc1LCA3LCA2LCAxLCAyNDUsIDcsIDIsIDEwMywgNywgNCwgCisgICAgMSwgMjQ1LCA3LCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMTA3LCA3LCA0LCAxLCAKKyAgICAyNDAsIDIwMSwgNywgNiwgMSwgMjM1LCAxODUsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNiwgMSwgMjM1LCAyNCwgCisgICAgMiwgMTAzLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAxMDMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxMzAsIDcsIDQsIDEsIAorICAgIDIzMywgMTAwLCAyLCA5MSwgNywgNiwgMSwgMjE1LCA5NCwgMTkzLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA0MywgMTAzLCA3LCAKKyAgICA0LCAxLCAyMzAsIDI2LCAyLCAxOTksIDQ0LCAyMzMsIDM2LCA3LCA2LCAxLCAxNDQsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQwLCAyNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDgsIDcsIDYsIDEsIDIyNiwgMjE5LCA3LCA0LCAKKyAgICAxLCAyMjYsIDIxOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDEwMywgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDEwMywgNywgMSwgCisgICAgMjEwLCAyMTQsIDcsIDYsIDEsIDEzOCwgMTA1LCA3LCA0LCAxLCAxMzgsIDEwNSwgNywgNiwgMSwgMjQ1LCA3NSwgNywgMSwgCisgICAgMjIzLCA0OSwgMjQ1LCA3NiwgMjMyLCAxMjMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDYsIDEsIAorICAgIDIxNywgMTUzLCAyLCAxMDMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAxMDMsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDgsIDcsIDYsIDEsIAorICAgIDIxNCwgMTU3LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMTAzLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTAzLCA3LCA0LCAxLCAKKyAgICAyMTEsIDExOCwgMiwgMTAzLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA5MSwgNywgCisgICAgNiwgMSwgMjQ1LCA4LCA3LCA2LCAxLCAyNDUsIDksIDIyMywgNDgsIDcsIDQsIDEsIDI0NSwgOSwgMjIzLCA0OCwgNywgNCwgCisgICAgMSwgMjQ1LCA5LCAyLCAyMTcsIDc3LCA3LCAxLCAxMTMsIDIsIDkxLCA3LCA2LCAxLCAxMzgsIDE4OSwgNywgNCwgMSwgMTM4LCAKKyAgICAxODksIDcsIDEsIDIzNSwgMTkzLCAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCAxLCAyMTEsIDE4MSwgNywgMSwgCisgICAgMjQ4LCA0NywgMjUwLCAxMSwgNywgMSwgMjMzLCA3NywgMjUwLCAxMSwgNywgMSwgMjU0LCAxMzcsIDI1MCwgMTEsIDcsIDEsIAorICAgIDIyMywgNTUsIDI1MCwgMTEsIDcsIDYsIDEsIDI0NiwgNDAsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDksIDYxLCAyLCA0LCAKKyAgICAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0NiwgNDAsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzIsIAorICAgIDE4OCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMzIsIDE4OCwgNywgNiwgMSwgCisgICAgMjI4LCAxODYsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMjgsIDE4NiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIAorICAgIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAyMzQsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDEwNCwgMiwgMjUwLCAKKyAgICAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCisgICAgMjMxLCAyMzIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjE1LCA5NCwgNzUsIDcsIDYsIDEsIDExNSwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAKKyAgICAyMzIsIDcsIDQsIDEsIDExNSwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDExNSwgMiwgNTksIDc3LCAyMiwgCisgICAgMjMxLCAyMzIsIDcsIDQsIDEsIDExNSwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI1NCwgMjQ0LCAyLCAKKyAgICAyMzEsIDIzMiwgNywgNCwgMSwgMjU0LCAyNDQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgOTEsIDcsIDQsIAorICAgIDEsIDI0MywgMjAzLCAyLCA5MSwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgCisgICAgMjUwLCAyMzQsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDIzNCwgCisgICAgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyMjYsIDIyNSwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDIyNiwgMjI1LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDI0NSwgOSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMjQ2LCAzOSwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNCwgMSwgMjEwLCAxNTksIDcsIDQsIDEsIAorICAgIDI0NiwgMzksIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAxNDIsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDI0MCwgMTk5LCA3LCA2LCAxLCAyMTEsIDE4MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIzMCwgCisgICAgMjYsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAKKyAgICAyMjIsIDIzNCwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDI1NCwgMjQ0LCAyLCAxNDIsIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE4LCAxMDMsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE4LCAxMDMsIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDExNSwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMTUsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDExNSwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAKKyAgICAxLCAxNjAsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgCisgICAgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNjAsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTQ0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDIyMywgCisgICAgMjI0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIyMywgCisgICAgMjI0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIAorICAgIDYsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAKKyAgICAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDEwNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyMjIsIAorICAgIDkyLCAyLCAyNDksIDIyMCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI0OSwgMjIwLCA1MSwgNywgNiwgMSwgMjE3LCAKKyAgICAxNTMsIDIsIDI0OSwgMjIwLCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0OSwgMjIwLCA1MSwgNywgNiwgMSwgMjEwLCAKKyAgICAyMzEsIDcsIDQsIDEsIDIxMCwgMjMxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQyLCA2MSwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE5OSwgNDQsIDIzMywgMzYsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIAorICAgIDI0OSwgMTAwLCA3LCA2LCAxLCAyMjYsIDEzNCwgNywgNCwgMSwgMjI2LCAxMzQsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAxMDMsIDcsIDYsIDEsIDExNSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgCisgICAgMTQ0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDIxMSwgMTE4LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ5LCAKKyAgICAxMDAsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NCwgNywgNCwgMSwgMjQ4LCAxNDMsIDI0NywgMjIwLCA3LCA0LCAxLCAKKyAgICAyMjQsIDMxLCAyNDcsIDIyMCwgNywgNiwgMSwgMTE1LCAyLCA5MSwgNywgNiwgMSwgMjUxLCA2NywgMiwgOTEsIDcsIDQsIDEsIAorICAgIDI1MSwgNjcsIDIsIDkxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMTMwLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjQ3LCAKKyAgICAyNTUsIDkxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyMTcsIDI1MCwgMjE3LCA3NywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA2LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDQsIDEsIDI0MiwgMTgwLCAyMTgsIAorICAgIDEyOSwgNywgNiwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDEzMCwgNywgNiwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgOTEsIDcsIDQsIDEsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQ1LCAyLCA5MSwgNywgNCwgCisgICAgMSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA2LCAxLCA0LCAyMjQsIDk3LCAyLCAyNDEsIDUyLCAyMTcsIDc3LCA3LCA0LCAxLCAKKyAgICAyMjQsIDk3LCAyLCAyNDEsIDUyLCAyMTcsIDc3LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgOTEsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCA5MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgOTEsIDcsIDQsIDEsIAorICAgIDIxNSwgOTQsIDYxLCA3LCA0LCAxLCAyNTQsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAxNDMsIDcsIDQsIDEsIDU3LCAKKyAgICAyLCAxMDMsIDcsIDQsIDEsIDIwNCwgNzYsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyNDksIAorICAgIDYxLCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgNDksIDc1LCA3LCA0LCAxLCAKKyAgICAyMjEsIDE5NSwgNywgNCwgMSwgMjIxLCAxOTYsIDIsIDEwMywgNywgNCwgMSwgMjA0LCA3NSwgNywgNCwgMSwgMjIzLCA0OSwgCisgICAgMjA0LCA3NSwgNywgNCwgMSwgMjIzLCA0OSwgMjA0LCAxNjAsIDIsIDEwMywgNywgNCwgMSwgMjUwLCAwLCAyMjMsIDQ5LCAKKyAgICAyMDQsIDc1LCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMTAzLCAKKyAgICA3LCA0LCAxLCAxMTksIDI0MywgMjAyLCA3LCAxLCA0LCA2LCAyNDMsIDIwMiwgNywgNCwgMSwgMjQzLCAxMDcsIDcsIDQsIDEsIAorICAgIDIyMywgMTUxLCAyNDAsIDI0OCwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMTAzLCAKKyAgICA3LCA0LCAxLCAyNDEsIDIwOCwgMiwgMTAzLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTg1LCAKKyAgICA3LCAxLCA0LCA2LCA3MywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNTIsIDQxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMzMsIDEsIDcsIDQsIDEsIAorICAgIDIxNSwgOTQsIDE5MywgNywgNCwgMSwgMjE1LCA5NCwgMjMyLCA1MCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMzIsIAorICAgIDUwLCAyLCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIyMywgNTUsIAorICAgIDEwMywgNywgMSwgNCwgNiwgMjMwLCAyNSwgNywgNCwgMSwgMjUyLCAxMzQsIDc2LCA3LCAxLCA0LCA2LCAyMjYsIDIzNCwgNywgCisgICAgNCwgMSwgMjUwLCAwLCAyMjYsIDIwMSwgNywgNCwgMSwgMjI1LCAxMzMsIDcsIDQsIDEsIDIxNSwgOTQsIDE1MywgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIAorICAgIDEwMywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIAorICAgIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNDQsIDg3LCA3LCA0LCAxLCAyMjMsIDQ5LCAyMjMsIDIyNCwgMiwgMjQ0LCA4NywgNywgCisgICAgMSwgNCwgNiwgMTUzLCA3LCAxLCA0LCA2LCAyMzUsIDE5MywgMTUzLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAxMDMsIDcsIDQsIAorICAgIDEsIDI0NSwgNzUsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIxOCwgMjMxLCAyMjMsIDQ5LCAyNDUsIDc1LCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE1LCAKKyAgICA5NCwgMjE3LCAxNTIsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDEwNCwgMTMwLCA3LCAKKyAgICA0LCAxLCAyMTQsIDE1NywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIDcsIAorICAgIDQsIDEsIDIxNSwgOTQsIDIxMiwgOTgsIDcsIDQsIDEsIDIxNSwgOTQsIDIxMSwgMTE3LCA3LCAxLCA0LCA2LCAyMTEsIDExNywgCisgICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI0OSwgMTAwLCA3LCA0LCAKKyAgICAxLCAyNDUsIDgsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjQ5LCAxMDAsIDcsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgMSwgCisgICAgMjI1LCAxMzksIDIxMywgMTM1LCAyNDMsIDI0OSwgNywgMSwgMjM1LCAxOTMsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgMSwgCisgICAgMjE4LCAxMTAsIDI1MSwgNjYsIDcsIDEsIDI1MSwgMjQ2LCAyNTAsIDExLCA3LCAxLCA0LCA2LCAyNTMsIDE1OCwgNywgNCwgCisgICAgMSwgMjUwLCAwLCAyMDQsIDc1LCA3LCAxLCA0LCA2LCAyNDMsIDIwMywgMiwgMTAzLCA3LCAxLCA0LCA2LCAyNDIsIDYwLCA3LCAKKyAgICA0LCAxLCAyMzUsIDE0NSwgMiwgMjQ5LCAxMjcsIDcsIDQsIDEsIDIxNSwgOTQsIDIzNSwgMjMsIDcsIDEsIDQsIDYsIDE1NiwgCisgICAgNywgNCwgMSwgMjI0LCA5NywgMiwgMTAzLCA3LCAxLCAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCAxLCAyMjMsIDQ5LCAKKyAgICAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCA0LCAxLCAyNDYsIDQwLCAyNDcsIDIyMCwgNywgNCwgMSwgMjQ4LCAyNiwgCisgICAgMjQ3LCAyMjAsIDcsIDQsIDEsIDI0NiwgNDAsIDI0NywgMjIxLCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE1LCAxODUsIAorICAgIDI0NywgMjIwLCA3LCA0LCAxLCAyMTYsIDIzNSwgMjQ3LCAyMjAsIDcsIDQsIDEsIDIxNywgMjksIDI0NywgMjIxLCAyLCAKKyAgICAyNDksIDEwMCwgNywgNCwgMSwgMjQ0LCAxMzQsIDI0NywgMjIwLCA3LCA0LCAxLCAyMzIsIDEwMCwgMjQ3LCAyMjAsIDcsIDQsIAorICAgIDEsIDIzMiwgNTEsIDI0NywgMjIwLCA3LCAxLCAyNTEsIDI0NiwgMjI1LCAxODEsIDcsIDEsIDI1MSwgMjU0LCAyMjUsIDE4MSwgCisgICAgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MSwgMiwgMjQ0LCA4NywgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MSwgMiwgMjQ0LCAKKyAgICA4OCwgMjIsIDIxNywgNzcsIDU4LCAxLCA0LCAyNDIsIDYwLCA1OCwgMSwgNCwgMjQyLCA2MSwgMiwgMTAzLCA1OCwgMSwgNCwgCisgICAgMjM1LCAxNDQsIDU4LCAxLCA0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMjMsIAorICAgIDIyNCwgMiwgMTAzLCA1OCwgMSwgNCwgNiwgMjM1LCAxOTMsIDE1MywgNTgsIDEsIDQsIDIxMiwgOTgsIDU4LCAxLCA0LCAKKyAgICAyMTEsIDExNywgNTgsIDEsIDIyNCwgMTkwLCA1OCwgMSwgNTIsIDIyNCwgMTkwLCA1OCwgMSwgMjE1LCA5NCwgMjQ5LCAyMTksIAorICAgIDU4LCAxLCAyNTQsIDU3LCA1OCwgMSwgMjIzLCA0OSwgMjQ5LCAyMTksIDU4LCAxLCA0NCwgMTYzLCAyMjIsIDIzMywgNTgsIAorICAgIDEsIDQzLCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA1OCwgMSwgMjIzLCA0OSwgMjQyLCAKKyAgICAxODAsIDIxOCwgMTI5LCA1OCwgMSwgNDMsIDI1MywgMjQ5LCA1OCwgMSwgNDQsIDI1MywgMjQ5LCA1OCwgMSwgMTIwLCAyNTMsIAorICAgIDI0OSwgNTgsIDEsIDEyNCwgMjUzLCAyNDksIDU4LCAxLCAyNTAsIDMxLCAyNTUsIDE0LCAyNTAsIDIzNCwgNTgsIDEsIDY3LCAKKyAgICAyMzIsIDIxMywgNTgsIDEsIDIzMSwgMjMyLCA1OCwgMSwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjQyLCAxMzcsIDI1NSwgCisgICAgMTQsIDU4LCAxLCAxMjEsIDY3LCAyMzIsIDIxMywgNTgsIDEsIDEyMSwgMjMxLCAyMzIsIDU4LCAxLCAxMjEsIDI0MiwgMTM3LCAKKyAgICAyNTUsIDE0LCA1OCwgMSwgMTIxLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyMTUsIDIyMiwgMjQ5LCAyMjYsIDU4LCAxLCAKKyAgICAxNjMsIDIxNSwgMjIyLCAyNDksIDIyNiwgNTgsIDEsIDI1MCwgMTczLCA0NCwgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDI1MCwgCisgICAgMTczLCA0MywgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDEyMCwgMjE3LCA4NywgNTgsIDEsIDEyNCwgMjE3LCA4NywgNTgsIDEsIAorICAgIDk2LCA1MCwgNTgsIDEsIDIzMCwgMTgyLCA1MCwgMjUxLCAxNDYsIDU5LCA0OCwgMjIyLCAyMzQsIDQ4LCAyMjYsIDIyNCwgNCwgCisgICAgMTgyLCA1MiwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjIzLCAzNiwgMTAzLCA1OCwgMSwgMjQ5LCAxMzEsIDI1NSwgMTQsIAorICAgIDU4LCAxLCA0LCAyNDMsIDEwNywgNTgsIDEsIDQsIDE1NiwgNTgsIDEsIDQsIDIyMiwgOTEsIDU4LCAxLCA0LCAyMTEsIDE3OCwgCisgICAgNTgsIDEsIDQsIDIyMywgNDksIDI0MiwgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDI0NSwgMjAsIDEzOCwgMTMwLCA1OCwgMSwgCisgICAgMTI1LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMTM4LCAxMzAsIDU4LCAxLCAKKyAgICAyNDUsIDE5LCAxMzgsIDEzMCwgNTgsIDEsIDIxMCwgMjU0LCAyNDgsIDQ0LCAxMzgsIDc4LCA1OCwgMSwgMjExLCA3MCwgCisgICAgMjQ4LCA0NCwgMTM4LCA3OCwgNTgsIDEsIDIxMywgMTMzLCA1OCwgMSwgMjE0LCAxODYsIDU4LCAxLCA1MiwgMjU0LCA1NywgCisgICAgNTgsIDEsIDEyMSwgMTI0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgMTIwLCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgNDMsIAorICAgIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCA0NCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDIyMiwgMjMzLCA1OCwgMSwgMjMwLCAKKyAgICAyMjQsIDI0MiwgMTM3LCAyNTUsIDE0LCA1OCwgMSwgMjMwLCAyMjQsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgNTgsIDEsIAorICAgIDIzMCwgMjI0LCA1MiwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMTIxLCAxODIsIDU4LCAxLCAyMjMsIDE1NywgMjQ5LCAKKyAgICAyMjYsIDU4LCAxLCAyNTIsIDU4LCAxMjUsIDIxNiwgMzAsIDU4LCAxLCAyNDUsIDE0MywgMTI1LCAyMTYsIDMwLCA1OCwgMSwgCisgICAgMjUyLCA1OCwgMTIxLCAyMTYsIDMwLCA1OCwgMSwgMjQ1LCAxNDMsIDEyMSwgMjE2LCAzMCwgNTgsIDEsIDIyMCwgNTQsIDU4LCAKKyAgICAxLCAyMDQsIDIyMCwgNTQsIDU4LCAxLCAxMjEsIDQzLCA3NCwgMzgsIDI0MiwgMTM3LCAyNTUsIDE0LCAzOCwgMjU1LCAzLCAKKyAgICAyNTUsIDE0LCAzOCwgMjUwLCAzMSwgMjU1LCAxNCwgMzgsIDE4MiwgMzgsIDIzMSwgMjMyLCAzOCwgMjI2LCAxMTksIDM4LCAKKyAgICAyNTEsIDE0NiwgMzgsIDU5LCA0OCwgMzgsIDI0OCwgMSwgMzgsIDI0MSwgNTIsIDQ4LCAzOCwgMjIyLCAyMzQsIDQ4LCAzOCwgCisgICAgNTIsIDI1NSwgMywgMjU1LCAxNCwgMzgsIDI1MCwgMjM0LCAzOCwgNjcsIDIzMiwgMjE0LCA0OCwgMzgsIDUyLCA2NywgMjMyLCAKKyAgICAyMTQsIDQ4LCAzOCwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCAzOCwgMjUwLCAyNTUsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDYsIAorICAgIDM4LCAyMTUsIDk0LCAyNDksIDIyMCwgNDgsIDM4LCAyNDksIDIyMCwgNDgsIDM4LCAyMjMsIDQ5LCAyNDksIDIyMCwgNDgsIAorICAgIDM4LCAyNDksIDIyMCwgNzcsIDIyMiwgMjUxLCAzOCwgMjQyLCAxMzcsIDI1NSwgMTUsIDUxLCAzOCwgMjU1LCAzLCAyNTUsIAorICAgIDE1LCA1MSwgMzgsIDQzLCAyMTcsIDg4LCA1MSwgMzgsIDQ0LCAyMTcsIDg4LCA1MSwgMzgsIDQzLCAyNTQsIDExMCwgNDgsIAorICAgIDM4LCAyNDAsIDI0OCwgMzgsIDQzLCAxNjMsIDIyMiwgMjM0LCA1MSwgMzgsIDEyMCwgMjE3LCA4OCwgNTEsIDM4LCAxMjQsIAorICAgIDIxNywgODgsIDUxLCAzOCwgOTYsIDUsIDUxLCAzOCwgMjMwLCAxODIsIDUsIDUxLCAzOCwgMjI2LCA2NCwgMjQxLCA1MiwgCisgICAgNTEsIDM4LCAyMjMsIDU1LCAyNDEsIDUyLCA1MSwgMzgsIDU5LCA1MSwgMzgsIDI0OCwgMiwgNTEsIDM4LCAyMjIsIDIzNCwgCisgICAgNTEsIDM4LCAyNDksIDIyMCwgNTEsIDM4LCAyNTAsIDE4MywgMzgsIDIyNiwgMjI0LCAzOCwgNjcsIDIzMiwgMjE0LCA1MSwgCisgICAgMzgsIDI1MSwgMTQwLCA1MSwgMzgsIDIzNSwgMTkzLCA1MiwgMjU0LCAyNCwgNTEsIDM4LCAyNTAsIDIzNSwgNTEsIDM4LCAKKyAgICAyNTAsIDMxLCAyNTUsIDE1LCA1MSwgMzgsIDI1MSwgMTQ3LCA1MSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0NywgNTEsIDM4LCAKKyAgICAyMTYsIDg5LCA1MSwgMzgsIDIzMSwgMjMzLCA1MSwgMzgsIDEyMSwgMjMyLCAyMTMsIDM4LCA1MiwgMTIxLCAyMzIsIDIxMywgCisgICAgMzgsIDIxNiwgODksIDIyNiwgMTIwLCAzOCwgMjE5LCAyNTEsIDIxOCwgMTAzLCAyMjYsIDEyMCwgMzgsIDE5OSwgMjE4LCAKKyAgICAxMDMsIDIyNiwgMTIwLCAzOCwgMjE5LCAyNTEsIDIxOSwgNDcsIDIyNiwgMTIwLCAzOCwgMTk5LCAyMTksIDQ3LCAyMjYsIAorICAgIDEyMCwgMzgsIDQ0LCAxNjMsIDIyMiwgMjM0LCA1MSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0MCwgNTEsIDM4LCA0MiwgNTEsIAorICAgIDM4LCAyMjEsIDE4MCwgNTEsIDM4LCAyMTEsIDE3OSwgNDgsIDM4LCA2NywgMTgyLCAzOCwgNTIsIDIyNiwgMTE5LCAzOCwgCisgICAgMjQyLCAxMzcsIDEzOCwgNzgsIDM4LCAyNTUsIDMsIDEzOCwgNzgsIDM4LCAyNiwgMjI1LCAxNzUsIDM4LCAyNiwgMjM0LCAyLCAKKyAgICAzOCwgMjYsIDI0NywgMjUyLCAyMTYsIDE4LCAzOCwgMjYsIDIxMCwgMjE5LCAzOCwgMjUxLCAxNDAsIDQ4LCAzOCwgMjQ1LCAKKyAgICA5OCwgNSwgNTEsIDM4LCA1MiwgNjcsIDIzMiwgMjE0LCA1MSwgMzgsIDQzLCAyNTQsIDExMCwgNTEsIDM4LCAyMjgsIDUyLCAKKyAgICAyMTYsIDg5LCA0OCwgMzgsIDI0MSwgNTgsIDQ4LCAzOCwgMjU0LCAxNDgsIDEyOCwgMjE2LCA0MiwgNDgsIDM4LCA0MywgNDQsIAorICAgIDgwLCA1MSwgMzgsIDIxNCwgMTUzLCA4MCwgNTEsIDM4LCAyNDIsIDE0MiwgMjM1LCA2MywgMzgsIDQ0LCAyNTMsIDI1MCwgCisgICAgNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNCwgNDgsIDM4LCAyNDQsIDEzMSwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAKKyAgICAyNTMsIDI1MCwgNTEsIDM4LCA0NCwgMjUzLCAyNTAsIDUxLCAzOCwgNDQsIDI1MywgMjUwLCAyMiwgMTIwLCAyNTMsIDI1MCwgCisgICAgNTEsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNCwgNDgsIDM4LCA1OSwgNzcsIDIyMiwgMjUxLCAzOCwgMjUzLCAyMTcsIDUxLCAKKyAgICAzOCwgNTIsIDIyMiwgMjM0LCA1MSwgMzgsIDIxMCwgMzUsIDQ4LCAzOCwgNTIsIDI1MSwgMTQ3LCA1MSwgMzgsIDUyLCAyNTEsIAorICAgIDE0NiwgMzgsIDUyLCAyMzEsIDIzMiwgMzgsIDUyLCAyMzEsIDIzMywgNTEsIDM4LCA1MiwgMTgyLCAzOCwgNTIsIDIzNSwgCisgICAgMTkzLCAyNTEsIDE0NiwgMzgsIDUyLCA5NywgODAsIDUxLCAzOCwgNywgNCwgMSwgNjEsIDM4LCA3LCA0LCAxLCA3NSwgMzgsIAorICAgIDcsIDQsIDEsIDczLCAzOCwgNywgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3MCwgMzgsIDcsIDQsIDEsIDI1MSwgNjYsIDM4LCAKKyAgICA3LCA0LCAxLCAyNDksIDYwLCAzOCwgNywgNCwgMSwgMjQyLCA2MCwgMzgsIDcsIDQsIDEsIDE5MywgMzgsIDcsIDQsIDEsIAorICAgIDE1MywgMzgsIDcsIDQsIDEsIDIxNywgMTUyLCAzOCwgNywgNCwgMSwgMjE0LCAxMDUsIDM4LCA3LCA0LCAxLCAyMTEsIDE3OCwgCisgICAgMjYsIDYsIDEsIDI0MSwgMTk2LCAyNiwgNCwgMSwgMjQxLCAxOTYsIDI2LCA2LCAxLCAyNTQsIDIzLCAyMjEsIDI0NiwgMjYsIAorICAgIDQsIDEsIDI1NCwgMjMsIDIyMSwgMjQ2LCAyNiwgMjI3LCAxOTgsIDUwLCAyNiwgMjMyLCAxMDgsIDIyNywgMTk4LCA1MCwgCisgICAgMjYsIDYsIDEsIDIyNiwgNTEsIDI0NywgMjI3LCAyNiwgNCwgMSwgMjI2LCA1MSwgMjQ3LCAyMjcsIDI2LCAyMTAsIDIxOSwgCisgICAgMjYsIDQsIDIyMywgNDksIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDQsIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIAorICAgIDE3OCwgODcsIDI2LCA0LCAyMjMsIDQ5LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgMjI0LCAxMywgCisgICAgNzgsIDI2LCAyMTYsIDE4LCAyNiwgMjQ3LCAyNTIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE2LCAxOCwgCisgICAgMjYsIDI1NCwgOTcsIDIxNywgMiwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIxNiwgCisgICAgMTgsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDE4LCAyNiwgCisgICAgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI1NCwgMTQzLCAyNiwgNiwgMSwgCisgICAgMjUyLCAyNiwgMjYsIDYsIDEsIDI0MywgMTA3LCAyNiwgNiwgMSwgMjQ4LCA1NCwgMjYsIDYsIDEsIDI0NSwgMTAwLCAyNiwgCisgICAgNiwgMSwgMjEwLCA4NSwgMjYsIDYsIDEsIDI0NSwgNjMsIDI2LCA2LCAxLCAyMTYsIDE3OSwgMjYsIDYsIDEsIDIzNSwgMTg1LCAKKyAgICAyNiwgNiwgMSwgMjM0LCAyMjIsIDI2LCA2LCAxLCAyMzMsIDk4LCAyNiwgNiwgMSwgMjMwLCAxMDIsIDI2LCA2LCAxLCAyMjcsIAorICAgIDIzNywgMjYsIDYsIDEsIDIxMSwgMTU3LCAyNiwgNiwgMSwgMjI2LCAxOTksIDI2LCA2LCAxLCAyMjUsIDEwOCwgMjYsIDYsIAorICAgIDEsIDIyMywgMzcsIDI2LCA2LCAxLCAyMTksIDE3NywgMjYsIDYsIDEsIDIxNywgNDEsIDI2LCA2LCAxLCAyMTQsIDE1NywgCisgICAgMjYsIDYsIDEsIDIyNSwgMTMzLCAyNiwgNiwgMSwgMjUwLCAxMTAsIDI2LCA2LCAxLCAyMjQsIDE2MSwgMjYsIDYsIDEsIAorICAgIDIyNiwgMjAxLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUxLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0NywgCisgICAgMjUxLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxOCwgMjYsIAorICAgIDQsIDEsIDI0NSwgNjQsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU4LCAyLCAyNDcsIDI1MiwgMjIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyNTQsIDE0MywgMjYsIDQsIDEsIDI1MiwgMjYsIDI2LCAKKyAgICA0LCAxLCAyNDMsIDEwNywgMjYsIDQsIDEsIDI0OCwgNTQsIDI2LCA0LCAxLCAyNDUsIDEwMCwgMjYsIDQsIDEsIDIxMCwgODUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDYzLCAyNiwgNCwgMSwgMjE2LCAxNzksIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjYsIDQsIDEsIDIzNCwgCisgICAgMjIyLCAyNiwgNCwgMSwgMjMzLCA5OCwgMjYsIDQsIDEsIDIzMCwgMTAyLCAyNiwgNCwgMSwgMjI3LCAyMzcsIDI2LCA0LCAxLCAKKyAgICAyMTEsIDE1NywgMjYsIDQsIDEsIDIyNiwgMTk5LCAyNiwgNCwgMSwgMjI1LCAxMDgsIDI2LCA0LCAxLCAyMjMsIDM3LCAyNiwgCisgICAgNCwgMSwgNDAsIDIxOSwgMTc3LCAyNiwgNCwgMSwgMjE5LCAxNzcsIDI2LCA0LCAxLCAyMTcsIDQxLCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTcsIDI2LCA0LCAxLCAyMjUsIDEzMywgMjYsIDQsIDEsIDI1MCwgMTEwLCAyNiwgNCwgMSwgMjI0LCAxNjEsIDI2LCA0LCAKKyAgICAxLCAyMjYsIDIwMSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIAorICAgIDI1MSwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNiwgMTgsIDI2LCAKKyAgICA0LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAxOCwgMjYsIDYsIDIzNCwgMjQ3LCA4NywgMjYsIDI1MiwgMjcsIDg3LCAyNiwgCisgICAgMjE2LCAxODAsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0MSwgNTIsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI1NSwgMywgMjIsIAorICAgIDI0MSwgNTIsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0OCwgMiwgMjIsIDI0MSwgNTIsIDg3LCAyNiwgMjI1LCAxMzQsIDg3LCAKKyAgICAyNiwgMjI1LCAxMDksIDg3LCAyNiwgMjM0LCAyNDcsIDg3LCAyNiwgMSwgMjU0LCAyMywgMjM0LCA2LCAyNiwgNCwgMSwgCisgICAgMjU0LCAyMywgMjM0LCA2LCAyNiwgMSwgMjE4LCAxMzcsIDI2LCA0LCAxLCAyMTgsIDEzNywgMjYsIDEsIDI0NywgMjI3LCAKKyAgICAyNiwgNCwgMSwgMjQ3LCAyMjcsIDI2LCAxLCAyMzQsIDYsIDI2LCA0LCAxLCAyMzQsIDYsIDI2LCAxLCAyMjEsIDI0NiwgMjYsIAorICAgIDQsIDEsIDIyMSwgMjQ2LCA4MSwgNiwgMSwgMjIwLCA1NSwgODEsIDQsIDEsIDIyMCwgNTUsIDgxLCA2LCAxLCAyNDQsIDE0MCwgCisgICAgODEsIDQsIDEsIDI0NCwgMTQwLCA4MSwgNiwgMSwgMjM0LCAxMTcsIDgxLCA0LCAxLCAyMzQsIDExNywgODEsIDYsIDEsIAorICAgIDI0MSwgNDUsIDgxLCA0LCAxLCAyNDEsIDQ1LCA4MSwgNiwgMSwgMjQzLCAxMDIsIDgxLCA0LCAxLCAyNDMsIDEwMiwgODEsIAorICAgIDYsIDEsIDIyMCwgMjIsIDgxLCA0LCAxLCAyMjAsIDIyLCA4MSwgNiwgMSwgMjQ4LCA2OSwgODEsIDQsIDEsIDI0OCwgNjksIAorICAgIDI2LCAyMzQsIDIyMywgODcsIDI2LCAyMjMsIDM4LCA4NywgMjYsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDEsIDIxMCwgCisgICAgMjI0LCAyNiwgNiwgMjE2LCAxODAsIDg3LCAyNiwgMjMyLCA4MywgMjQ1LCAxMDEsIDg3LCAyNiwgMjIzLCA0OSwgMjMyLCAKKyAgICA4MywgMjQ1LCAxMDEsIDg3LCAyNiwgNiwgMSwgMjIwLCA3LCAyNiwgNCwgMSwgMjIwLCA3LCAyNiwgNiwgMjMyLCA4MywgCisgICAgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMSwgMjIxLCAyNDMsIDI2LCA0LCAxLCAyMjEsIDI0MywgMjYsIDIyMywgMzgsIDIsIAorICAgIDIxOCwgMTAzLCA4NywgMjYsIDYsIDIyMywgNDksIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDYsIDI0NiwgMTE4LCAKKyAgICAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA2LCAyMjMsIDQ5LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAKKyAgICAzMywgNiwgMSwgMjM2LCA2MSwgMiwgMjQyLCAxMzYsIDMzLCA2LCAxLCAyMzUsIDE4OSwgMzMsIDYsIDEsIDI0NywgMTYyLCAKKyAgICAzMywgNiwgMSwgMjQyLCAxODcsIDMzLCA2LCAxLCAyMTQsIDIwMiwgMjM2LCA2MCwgMzMsIDYsIDEsIDI0NiwgMzYsIDMzLCAKKyAgICA2LCAxLCAyNTEsIDc2LCA3MywgMzMsIDYsIDEsIDIxMSwgOCwgMzMsIDYsIDEsIDIzNSwgMTI2LCAzMywgNiwgMSwgMjMyLCAKKyAgICAxODcsIDMzLCA2LCAxLCAyMjgsIDE3OCwgMzMsIDYsIDEsIDIxNSwgMTc0LCAzMywgNiwgMSwgMjM0LCA0OCwgMzMsIDYsIDEsIAorICAgIDI0MCwgMTU0LCAyLCAyNDIsIDEzNiwgMzMsIDYsIDEsIDIxOSwgMjUxLCA3MCwgMzMsIDYsIDEsIDI0NiwgMzIsIDMzLCA2LCAKKyAgICAxLCA2MSwgMzMsIDYsIDEsIDI1MiwgNzUsIDMzLCA2LCAxLCAyMTMsIDI1NSwgMzMsIDYsIDEsIDI0MiwgMjM2LCAzMywgNiwgCisgICAgMSwgMjQ4LCA5MCwgMzMsIDYsIDEsIDIzNiwgNjAsIDMzLCA2LCAxLCAyMTAsIDc0LCAzMywgNiwgMSwgMjEwLCA5NCwgMzMsIAorICAgIDYsIDEsIDczLCAzMywgNiwgMSwgMjE5LCAyNTEsIDczLCAzMywgNiwgMSwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNzQsIDMzLCAKKyAgICA2LCAxLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDI0NSwgMTUwLCAzMywgNiwgMSwgNzYsIDMzLCA2LCAxLCAyMjUsIDIyMSwgMzMsIAorICAgIDYsIDEsIDI0NSwgOTIsIDMzLCA2LCAxLCAyNDUsIDgyLCAzMywgNiwgMSwgMjE3LCAyMiwgMzMsIDYsIDEsIDcwLCAzMywgNiwgCisgICAgMSwgMjQ1LCAyMDIsIDMzLCA2LCAxLCAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OCwgMzMsIDYsIDEsIDI1MCwgMTMxLCAzMywgCisgICAgNiwgMSwgMjIwLCAxMDIsIDMzLCA2LCAxLCAyMjAsIDY1LCAzMywgNiwgMSwgMjQyLCAzLCA1MCwgMzMsIDYsIDEsIDIxMSwgCisgICAgMjcsIDMzLCA2LCAxLCAyMTksIDUyLCA1MCwgMzMsIDYsIDEsIDc1LCAzMywgNiwgMSwgMjEwLCAyMTIsIDMzLCA2LCAxLCAKKyAgICAxOTEsIDMzLCA0LCAxLCA2MSwgMzMsIDQsIDEsIDI1MiwgNzUsIDMzLCA0LCAxLCAyMTMsIDI1NSwgMzMsIDQsIDEsIDI0MiwgCisgICAgMjM2LCAzMywgNCwgMSwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIzNiwgNjAsIDMzLCA0LCAxLCAyMTAsIDc0LCAzMywgNCwgMSwgCisgICAgMjEwLCA5NCwgMzMsIDQsIDEsIDczLCAzMywgNCwgMSwgMjE5LCAyNTEsIDczLCAzMywgNCwgMSwgMTc2LCAzMywgNCwgMSwgCisgICAgMjQ1LCAxNzQsIDMzLCA0LCAxLCAyNDUsIDE1OSwgMzMsIDQsIDEsIDI0NSwgMTUwLCAzMywgNCwgMSwgNzYsIDMzLCA0LCAxLCAKKyAgICAyMjUsIDIyMSwgMzMsIDQsIDEsIDI0NSwgOTIsIDMzLCA0LCAxLCAyNDUsIDgyLCAzMywgNCwgMSwgMjE3LCAyMiwgMzMsIDQsIAorICAgIDEsIDcwLCAzMywgNCwgMSwgMjQ1LCAyMDIsIDMzLCA0LCAxLCAxNjIsIDMzLCA0LCAxLCAyMTUsIDE3OCwgMzMsIDQsIDEsIAorICAgIDI1MCwgMTMxLCAzMywgNCwgMSwgMjIwLCAxMDIsIDMzLCA0LCAxLCAyMjAsIDY1LCAzMywgNCwgMSwgMjQyLCAzLCA1MCwgCisgICAgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCA0LCAxLCAyMTksIDUyLCA1MCwgMzMsIDQsIDEsIDc1LCAzMywgNCwgMSwgMjEwLCAKKyAgICAyMTIsIDMzLCA0LCAxLCAxOTEsIDMzLCA0LCAxLCAyMzYsIDYxLCAyLCAyNDIsIDEzNiwgMzMsIDQsIDEsIDIzNSwgMTg5LCAKKyAgICAzMywgNCwgMSwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyNDIsIDE4NywgMzMsIDQsIDEsIDIxNCwgMjAyLCAyMzYsIDYwLCAzMywgCisgICAgNCwgMSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDI1MSwgNzYsIDczLCAzMywgNCwgMSwgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAKKyAgICAxMjYsIDMzLCA0LCAxLCAyMzIsIDE4NywgMzMsIDQsIDEsIDIyOCwgMTc4LCAzMywgNCwgMSwgMjE1LCAxNzQsIDMzLCA0LCAKKyAgICAxLCAyMzQsIDQ4LCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDI0MiwgMTM2LCAzMywgNCwgMSwgMjE5LCAyNTEsIDcwLCAzMywgCisgICAgNCwgMSwgMjQ2LCAzMiwgMzMsIDYsIDEsIDIyNiwgMjAxLCAzMywgNCwgMSwgMjI2LCAyMDEsIDMzLCA2LCAxLCAyMTEsIDU5LCAKKyAgICAzMywgNCwgMSwgMjExLCA1OSwgMzMsIDYsIDEsIDIzNSwgMTgzLCA3NSwgMzMsIDQsIDEsIDIzNSwgMTgzLCA3NSwgMzMsIDYsIAorICAgIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAKKyAgICAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE4MywgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIAorICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA2LCAxLCAKKyAgICAyMzMsIDIzMywgMzMsIDQsIDEsIDIzMywgMjMzLCAzMywgNiwgMSwgMjI0LCAxNjEsIDMzLCA0LCAxLCAyMjQsIDE2MSwgMzMsIAorICAgIDYsIDEsIDI0NCwgODIsIDMzLCA0LCAxLCAyNDQsIDgyLCAzMywgNiwgMSwgMjM1LCAxNDYsIDMzLCA0LCAxLCAyMzUsIDE0NiwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTQ3LCAyLCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDMzLCA0LCAxLCAyMzUsIDE0NywgMiwgNTIsIAorICAgIDI0MiwgMTM3LCAyNTUsIDE0LCAzMywgNiwgMSwgMjE0LCAyMDUsIDMzLCA0LCAxLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDIyMiwgCisgICAgMTg1LCAyMjYsIDIwMSwgMzMsIDQsIDEsIDIyMiwgMTg1LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIAorICAgIDY1LCAzMywgNCwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgNjUsIDMzLCA2LCAxLCAyMjYsIDE0MCwgMzMsIDQsIDEsIDIyNiwgCisgICAgMTQwLCAzMywgNiwgMSwgMjM0LCA2LCAzMywgNCwgMSwgMjM0LCA2LCAzMywgMjE2LCAxNDYsIDUwLCAzOCwgMzMsIDIxNiwgCisgICAgNjUsIDM4LCAzMywgMjI2LCA2NSwgMzgsIDMzLCAyNDgsIDE1NCwgMjI1LCAxOCwgMzgsIDMzLCAyMjQsIDE1NSwgMjI1LCAKKyAgICAxOCwgMzgsIDMzLCAyMjUsIDMsIDM4LCAzMywgMjQwLCAyMTEsIDIxNiwgMTQ2LCA1MCwgMzgsIDMzLCAyMzAsIDE5MSwgNTAsIAorICAgIDMzLCA2LCAxLCAyMTksIDI1MSwgMjQwLCAxNTQsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyMTksIDI1MSwgMjQwLCAxNTQsIAorICAgIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyMjAsIDE0NiwgNTAsIDMzLCA0LCAxLCAyMjAsIDE0NiwgNTAsIDMzLCA2LCAxLCAKKyAgICAyNDUsIDkzLCAyLCAyMTYsIDExNCwgMzMsIDQsIDEsIDI0NSwgOTMsIDIsIDIxNiwgMTE0LCAzMywgNiwgMSwgMjQyLCAyMzcsIAorICAgIDIsIDIxNCwgMTU2LCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDIxNCwgMTU2LCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDkxLCAKKyAgICAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDkxLCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAKKyAgICAxLCAyNDIsIDIzNywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAKKyAgICAyMTAsIDc1LCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIAorICAgIDI0OCwgMzksIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjM1LCAxMywgMiwgMjQ4LCAzOSwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDY3LCA5MSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIAorICAgIDIzNSwgMTMsIDIsIDkxLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgOTEsIDMzLCA2LCAxLCAyNTIsIDEyNCwgMTc2LCAzMywgNCwgCisgICAgMSwgMjUyLCAxMjQsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIAorICAgIDI0OCwgMzksIDMzLCA2LCAyNywgMjQ1LCAxNTEsIDI0MiwgMjM2LCAzMywgNCwgMjcsIDI0NSwgMTUxLCAyNDIsIDIzNiwgCisgICAgMzMsIDYsIDEsIDIyNSwgMjIyLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjI1LCAyMjIsIDIsIDIzMCwgMjI0LCAKKyAgICAxMDMsIDMzLCA2LCAxLCAyNTUsIDIwLCAxNjIsIDMzLCA0LCAxLCAyNTUsIDIwLCAxNjIsIDMzLCA2LCAxLCAyNDUsIDgzLCAKKyAgICAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQ1LCA4MywgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxNywgMjMsIDIsIDI0OCwgMzksIAorICAgIDMzLCA0LCAxLCAyMTcsIDIzLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjE4LCAxMjEsIDcwLCAzMywgNCwgMSwgMjE4LCAKKyAgICAxMjEsIDcwLCAzMywgNiwgMSwgMjE4LCAxMjEsIDEwNCwgMiwgOTEsIDMzLCA0LCAxLCAyMTgsIDEyMSwgMTA0LCAyLCA5MSwgCisgICAgMzMsIDYsIDEsIDI0MiwgNDksIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCAyNDgsIDM5LCAzMywgNiwgMjcsIAorICAgIDIxNywgMjMsIDIxNSwgMTc4LCAzMywgNCwgMjcsIDIxNywgMjMsIDIxNSwgMTc4LCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIAorICAgIDI0OCwgMzksIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCA2NywgOTEsIAorICAgIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgNjcsIDkxLCAzMywgNiwgMSwgMjIwLCAzMywgMzMsIDQsIDEsIDIyMCwgMzMsIDMzLCAKKyAgICA2LCAxLCAyNTUsIDIwLCAyNTAsIDEzMSwgMzMsIDQsIDEsIDI1NSwgMjAsIDI1MCwgMTMxLCAzMywgNiwgMSwgMjU1LCAyMCwgCisgICAgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNTUsIDIwLCAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDEsIAorICAgIDIyNiwgNTgsIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNTEsIDE0NiwgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTQ2LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxMywgMiwgMTAzLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNzUsIAorICAgIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAxMDMsIAorICAgIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAKKyAgICAyNDUsIDE1MSwgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDIzNCwgMTI3LCAyNTAsIDEzMSwgMzMsIDQsIDEsIDIzNCwgMTI3LCAKKyAgICAyNTAsIDEzMSwgMzMsIDYsIDEsIDI0NSwgMTYwLCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjQ1LCAxNjAsIDIsIDIxNywgNzcsIAorICAgIDMzLCA0LCAxLCAyMjYsIDU4LCAzMywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NiwgMzMsIDQsIDEsIDExNSwgMiwgMjUxLCAKKyAgICAxNDYsIDMzLCA2LCAxLCAxMTUsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDExNSwgMiwgMjQ4LCAxLCAzMywgNiwgMjcsIDExNSwgCisgICAgMjM2LCA2MCwgMzMsIDQsIDI3LCAxMTUsIDIzNiwgNjAsIDMzLCA2LCAxLCAyMzYsIDYxLCAyLCAyNTEsIDE0NiwgMzMsIDQsIAorICAgIDEsIDIzNiwgNjEsIDIsIDI1MSwgMTQ2LCAzMywgNiwgMSwgMjIxLCAxOTUsIDMzLCA0LCAxLCAyMjEsIDE5NSwgMzMsIDYsIAorICAgIDEsIDIyMSwgMTk2LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjEwLCA3NSwgCisgICAgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAxLCAKKyAgICAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjU1LCAyMCwgMjQ2LCAzNiwgMzMsIDQsIDEsIDI1NSwgCisgICAgMjAsIDI0NiwgMzYsIDMzLCA2LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKKyAgICAyMzIsIDMzLCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgMzMsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyNTIsIDEzNCwgNzYsIDMzLCAKKyAgICA0LCAxLCAyNTIsIDEzNCwgNzYsIDMzLCA2LCAxLCAyNTIsIDEzNCwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNTIsIAorICAgIDEzNCwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAxNjAsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDE2MCwgMiwgMjQ4LCAxLCAKKyAgICAzMywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgMzMsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDMzLCA2LCAxLCAxMDQsIDIsIAorICAgIDI0OCwgMSwgMzMsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMTA0LCAyLCA1MiwgMTQyLCAzMywgNCwgMSwgCisgICAgMTA0LCAyLCA1MiwgMTQyLCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCAKKyAgICAyNDgsIDEsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyNDgsIDM5LCAKKyAgICAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjExLCAyOCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgCisgICAgMjQyLCAyMzcsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCAKKyAgICAzMywgNiwgMSwgMjQyLCA0OSwgMiwgMTAzLCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgMTAzLCAzMywgNiwgMSwgMjQyLCA0OSwgCisgICAgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCA5MSwgMzMsIDYsIDEsIDIzNCwgMTQsIDI0OCwgOTAsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE0LCAyNDgsIDkwLCAzMywgNiwgMSwgMjM0LCAxNCwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyMzQsIDE0LCAyNDcsIAorICAgIDE2MiwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxMCwgMjcsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTAsIDI3LCAzMywgNiwgMSwgCisgICAgMjM0LCAxNCwgMjQ2LCAzMCwgMzMsIDQsIDEsIDIzNCwgMTQsIDI0NiwgMzAsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMzIsIAorICAgIDE4NywgMzMsIDQsIDEsIDIzNCwgMTQsIDIzMiwgMTg3LCAzMywgNiwgMSwgMjM0LCAxNCwgMjI4LCAxNzgsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE0LCAyMjgsIDE3OCwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxOSwgMTA5LCAzMywgNCwgMSwgMjM0LCAxNCwgMjE5LCAKKyAgICAxMDksIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTYsIDYwLCAzMywgNCwgMSwgMjM0LCAxNCwgMjE2LCA2MCwgMzMsIDYsIDEsIAorICAgIDIyMywgNDksIDIxMCwgOTQsIDMzLCA0LCAxLCAyMjMsIDQ5LCAyMTAsIDk0LCAzMywgNiwgMSwgMjQ1LCAxNzUsIDIsIDEwMywgCisgICAgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAxMDMsIDMzLCA2LCAxLCAyMzIsIDI1NCwgMzMsIDQsIDEsIDIzMiwgMjU0LCAzMywgCisgICAgNiwgMSwgMjIzLCAzOSwgMzMsIDQsIDEsIDIyMywgMzksIDMzLCA2LCAxLCAyMTEsIDkyLCAzMywgNCwgMSwgMjExLCA5MiwgCisgICAgMzMsIDYsIDEsIDIyNCwgODgsIDMzLCA0LCAxLCAyMjQsIDg4LCAzMywgNiwgMSwgMjEyLCAyMiwgMzMsIDQsIDEsIDIxMiwgCisgICAgMjIsIDMzLCA2LCAxLCAyNTQsIDE2NiwgMTc2LCAzMywgNCwgMSwgMjU0LCAxNjYsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTc1LCAKKyAgICAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyNDUsIAorICAgIDE1MSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgCisgICAgMjI1LCAyMjIsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMjUsIDIyMiwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIyMCwgMzQsIAorICAgIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMjAsIDM0LCAyLCAyNDgsIDM5LCAxNTAsIDYsIDEsIDI1MywgMTY0LCAxNTAsIDYsIAorICAgIDEsIDI1MiwgMzksIDE1MCwgNiwgMSwgMjQyLCAyMDMsIDE1MCwgNiwgMSwgMjQ4LCAyMjEsIDE1MCwgNiwgMSwgMjQ1LCAKKyAgICAyMTMsIDE1MCwgNiwgMSwgMjEwLCAxMTYsIDE1MCwgNiwgMSwgMjQ1LCAxOTcsIDE1MCwgNiwgMSwgMjQ1LCA2NSwgMTUwLCAKKyAgICA2LCAxLCAxMTEsIDE1MCwgNiwgMSwgMjEwLCA3NCwgMTUwLCA2LCAxLCAyMzUsIDIyNywgMTUwLCA2LCAxLCAyMzIsIDE5MCwgCisgICAgMTUwLCA2LCAxLCAyMTEsIDE2MCwgMTUwLCA2LCAxLCAyNTEsIDMzLCAxNTAsIDYsIDEsIDIzNCwgMTY1LCAxNTAsIDYsIDEsIAorICAgIDI0MSwgNjgsIDE1MCwgNiwgMSwgMjM1LCAxNDEsIDE1MCwgNiwgMSwgMjQyLCAyNDYsIDE1MCwgNiwgMSwgMjUwLCAxMjYsIAorICAgIDE1MCwgNiwgMSwgMjMxLCA1OCwgMTUwLCA2LCAxLCAyMTEsIDgsIDE1MCwgNiwgMSwgMjI4LCAzOSwgMTUwLCA2LCAxLCAKKyAgICAyMjAsIDEwMiwgMTUwLCA2LCAxLCAyMTMsIDEzOCwgMTUwLCA2LCAxLCAyNTAsIDE1NywgMTUwLCA2LCAxLCAyMjUsIDIwNSwgCisgICAgMTUwLCA2LCAxLCAyMzUsIDExMCwgMTUwLCA2LCAxLCAyMDUsIDE1MCwgNiwgMSwgMjIxLCAxNjEsIDE1MCwgNiwgMSwgMjEzLCAKKyAgICAxNzksIDE1MCwgNiwgMSwgMjE2LCA2MiwgMTUwLCA2LCAxLCAyMjMsIDk1LCAxNTAsIDYsIDEsIDI0OSwgMjM4LCAxNTAsIDYsIAorICAgIDEsIDIxMCwgMjQ5LCAxNTAsIDYsIDEsIDIyNSwgNDYsIDE1MCwgNiwgMSwgMjM0LCAxNzYsIDE1MCwgNiwgMSwgMjI2LCAKKyAgICAyMjIsIDE1MCwgNiwgMSwgMjQ0LCAxNDIsIDE1MCwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjMzLCAxNTAsIDI1NCwgNTcsIAorICAgIDE1MCwgMjQ1LCAxNTQsIDc4LCAxNTAsIDI0NSwgMzEsIDc4LCAxNTAsIDI0OSwgMjE5LCAxNTAsIDIyNCwgMTMsIDc4LCAKKyAgICAxNTAsIDI1NSwgMjEsIDc4LCAxNTAsIDQsIDEsIDI1MywgMTY0LCAxNTAsIDQsIDEsIDI1MiwgMzksIDE1MCwgNCwgMSwgCisgICAgMjQyLCAyMDMsIDE1MCwgNCwgMSwgMjQ4LCAyMjEsIDE1MCwgNCwgMSwgMjQ1LCAyMTMsIDE1MCwgNCwgMSwgMjEwLCAxMTYsIAorICAgIDE1MCwgNCwgMSwgMjQ1LCAxOTcsIDE1MCwgNCwgMSwgMjQ1LCA2NSwgMTUwLCA0LCAxLCAxMTEsIDE1MCwgNCwgMSwgMjEwLCAKKyAgICA3NCwgMTUwLCA0LCAxLCAyMzUsIDIyNywgMTUwLCA0LCAxLCAyMzIsIDE5MCwgMTUwLCA0LCAxLCAyMTEsIDE2MCwgMTUwLCAKKyAgICA0LCAxLCAyNTEsIDMzLCAxNTAsIDQsIDEsIDIzNCwgMTY1LCAxNTAsIDQsIDEsIDI0MSwgNjgsIDE1MCwgNCwgMSwgMjM1LCAKKyAgICAxNDEsIDE1MCwgNCwgMSwgMjQyLCAyNDYsIDE1MCwgNCwgMSwgMjUwLCAxMjYsIDE1MCwgNCwgMSwgMjMxLCA1OCwgMTUwLCAKKyAgICA0LCAxLCAyMTEsIDgsIDE1MCwgNCwgMSwgMjI4LCAzOSwgMTUwLCA0LCAxLCAyMjAsIDEwMiwgMTUwLCA0LCAxLCAyMTMsIAorICAgIDEzOCwgMTUwLCA0LCAxLCAyNTAsIDE1NywgMTUwLCA0LCAxLCAyMjUsIDIwNSwgMTUwLCA0LCAxLCAyMzUsIDExMCwgMTUwLCAKKyAgICA0LCAxLCAyMDUsIDE1MCwgNCwgMSwgMjIxLCAxNjEsIDE1MCwgNCwgMSwgMjEzLCAxNzksIDE1MCwgNCwgMSwgMjE2LCA2MiwgCisgICAgMTUwLCA0LCAxLCAyMjMsIDk1LCAxNTAsIDQsIDEsIDI0OSwgMjM4LCAxNTAsIDQsIDEsIDIxMCwgMjQ5LCAxNTAsIDQsIDEsIAorICAgIDIyNSwgNDYsIDE1MCwgNCwgMSwgMjM0LCAxNzYsIDE1MCwgNCwgMSwgMjI2LCAyMjIsIDE1MCwgNCwgMSwgMjQ0LCAxNDIsIAorICAgIDE1MCwgNCwgMjcsIDI0NSwgMjE0LCAyMTAsIDI0OSwgMTUwLCAyNDMsIDIyOSwgMjE4LCAxMjksIDE1MCwgMjQwLCAxNjgsIAorICAgIDE1MCwgMjQ2LCA5NSwgNTAsIDk0LCAyNTUsIDE1LCAyNDUsIDU3LCA5NCwgMjU1LCAxNSwgMjIxLCAxNjIsIDk0LCAyNTUsIAorICAgIDE1LCAyMjAsIDg4LCA5NCwgMjU1LCAxNSwgMjEwLCAxMDQsIDIyNCwgNzEsIDk0LCAyNTUsIDE1LCAyMTAsIDEwNCwgMjQzLCAKKyAgICAxMjUsIDk0LCAyNTUsIDE1LCAyMTYsIDc1LCA5NCwgMjU1LCAxNSwgMjIzLCA0NywgOTQsIDI1NSwgMTUsIDIxMCwgMTAzLCAKKyAgICA5NCwgMjU1LCAxNSwgMjI1LCAyNDUsIDk0LCAyNTUsIDE1LCAyMTEsIDIwLCA5NCwgMjU1LCAxNSwgMjE2LCAyMTQsIDk0LCAKKyAgICAyNTUsIDE1LCAyNDMsIDQxLCA5NCwgMjU1LCAxNSwgMjQzLCA0MiwgMjMwLCA2OSwgOTQsIDI1NSwgMTUsIDI0MywgMzksIAorICAgIDk0LCAyNTUsIDE1LCAyMjQsIDcyLCAyMjYsIDE2LCA5NCwgMjU1LCAxNSwgMjE2LCAyNTMsIDI0MywgNTYsIDk0LCAyNTUsIAorICAgIDE1LCAyMjUsIDIyNiwgOTQsIDI1NSwgMTUsIDI1MywgMjAwLCAyNDIsIDQxLCA5NCwgMjU1LCAxNSwgMjMwLCA3OSwgOTQsIAorICAgIDI1NSwgMTUsIDIzMSwgMjA4LCA5NCwgMjU1LCAxNSwgMjMxLCA0OSwgOTQsIDI1NSwgMTUsIDIzMSwgNTAsIDIzNCwgMTc3LCAKKyAgICA5NCwgMjU1LCAxNSwgMjQ4LCAxNjMsIDk0LCAyNTUsIDE1LCAyMjQsIDgzLCA5NCwgMjU1LCAxNSwgMjE2LCAyNTMsIDIyNCwgCisgICAgNjcsIDk0LCAyNTUsIDE1LCAyMTEsIDMwLCAyNTIsIDQwLCAyMTAsIDIzMCwgOTQsIDI1NSwgMTUsIDIyNiwgMjA3LCA5NCwgCisgICAgMjU1LCAxNSwgMjM2LCAxOSwgOTQsIDI1NSwgMTUsIDI0OCwgNzAsIDk0LCAyNTUsIDE1LCAyMTAsIDMzLCA5NCwgMTY0LCAKKyAgICAyMzEsIDE0MywgMjUwLCAzNSwgOTQsIDIyNSwgMTEsIDIyMCwgMzYsIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjIxLCAxNjIsIAorICAgIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjI1LCAyMzksIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjI0LCA3NiwgOTQsIDIyNSwgCisgICAgMTEsIDI0MSwgMTU4LCA5NCwgMjI1LCAxMSwgMjE1LCAxNzYsIDk0LCAyMjUsIDExLCAyMjEsIDE2MiwgOTQsIDIyNSwgMTEsIAorICAgIDIyNSwgMjM5LCA5NCwgMjI1LCAxMSwgMjI0LCA3NiwgOTQsIDIyNSwgMTEsIDI0MSwgNjEsIDk0LCAyMjUsIDExLCAyNDEsIAorICAgIDYyLCAyNDEsIDI1MiwgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTEsIDIyNCwgMTcsIDk0LCAyMjUsIDExLCAyNDgsIDIwOCwgCisgICAgMTc3LCAyMzEsIDE3MSwgOTQsIDIyNSwgMTEsIDIzMSwgMzgsIDk0LCAyMjQsIDE0MSwgMjMxLCAxNjgsIDk0LCAyMjUsIDExLCAKKyAgICAyMjMsIDE2OSwgOTQsIDIyNCwgMTQxLCAyMjUsIDI0NywgOTQsIDIyNSwgMTEsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgCisgICAgMjI1LCAxMSwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMjI0LCAxNDEsIDIxOSwgNTMsIDIyNSwgMjQxLCA5NCwgMTY0LCAKKyAgICAyMTQsIDE2MCwgMjQ3LCAxMjAsIDk0LCAxNjQsIDIzMiwgMTA4LCAyNDcsIDEyMCwgOTQsIDIyNCwgMTQxLCAyMjcsIDE5NSwgCisgICAgMjQyLCA0MCwgOTQsIDIyNSwgMTEsIDIyNCwgNzcsIDIyNCwgNzEsIDk0LCAxLCAyNTQsIDE3MCwgOTQsIDEsIDI1MiwgMjgsIAorICAgIDk0LCAxLCAyNDIsIDIwMSwgOTQsIDEsIDI0OCwgMTg5LCA5NCwgMSwgMjQxLCAyMzgsIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAKKyAgICAyMTAsIDk3LCA5NCwgMSwgMjQxLCAxOTcsIDk0LCAxLCAyMTYsIDIzMCwgOTQsIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIAorICAgIDIzNCwgMjUwLCA5NCwgMSwgMjM0LCAyNTAsIDk0LCAxLCAyMzMsIDk0LCA5NCwgMSwgNDAsIDIzMSwgNjUsIDk0LCAxLCAKKyAgICAyMzEsIDY1LCA5NCwgMSwgNDAsIDIyNywgMTk0LCA5NCwgMSwgMjI3LCAxOTQsIDk0LCAxLCAyMjEsIDI0OSwgOTQsIDEsIAorICAgIDI1MywgMTYyLCA5NCwgMSwgNDAsIDIyNSwgMjIxLCA5NCwgMSwgMjI1LCAyMjEsIDk0LCAxLCA0MCwgMjE1LCAxNzksIDk0LCAKKyAgICAxLCAyMTUsIDE3OSwgOTQsIDEsIDIyNCwgMzksIDk0LCAxLCAyMjMsIDY3LCA5NCwgMSwgMjIwLCAyMCwgOTQsIDEsIDIxNywgCisgICAgMzgsIDk0LCAyNywgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCA0LCAyMTAsIDIzMywgOTQsIDI3LCAKKyAgICAyMTEsIDYsIDUyLCAyMTAsIDIzMywgOTQsIDIyNCwgMTQxLCAyNDMsIDQxLCA5NCwgMjI0LCAxNDEsIDI0MywgMzksIDEwLCAKKyAgICA1NCwgNTAsIDEwLCA1LCAyMjEsIDI0MiwgMTAsIDI0NCwgMzAsIDIzMSwgMTU0LCAxMCwgNSwgMjIyLCAyMywgMTAsIDUsIAorICAgIDIyMSwgMjQ1LCAyNTQsIDM3LCAyNDksIDEwOSwgMjIyLCAxOTMsIDI1NCwgMzcsIDI0NCwgNCwgMjIyLCAxOTMsIDEwLCAKKyAgICAyMjMsIDEzNCwgMjU0LCAzNywgMjI1LCAxODMsIDIzMCwgMTkzLCA1MCwgMjU0LCAzNywgMjI1LCAxODMsIDIxNiwgMjQ4LCAKKyAgICAyMTYsIDE0OCwgNTAsIDI1NCwgMjIxLCA1MCwgMTAsIDI0OSwgMjE5LCAxMCwgMjQ4LCAxNTAsIDIyMCwgMTM3LCAxMCwgCisgICAgMjI1LCAxMywgMjEzLCAyNDEsIDUwLCAxMCwgNSwgMjMwLCAxNzQsIDEwLCA1LCAyMjIsIDMsIDI1NCwgMTcyLCAyMTIsIDQ1LCAKKyAgICAxMCwgNSwgMjU0LCAxNzIsIDI1MywgMjIxLCAxMCwgNSwgMjIzLCAxNjcsIDI1NCwgMTcxLCAxMCwgNSwgMjIzLCAxNzUsIAorICAgIDI1NCwgMTUyLCAyNTQsIDEwNCwgMTAsIDUsIDIxNywgNzAsIDEwLCA0LCAxMjUsIDIxNywgODAsIDEwLCA0LCAxMjUsIDI3LCAKKyAgICAxMTIsIDIsIDIzMywgMTAzLCAyLCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAyMTAsIDEwOCwgMTAsIDQsIDI0NCwgMTY1LCAxMCwgCisgICAgNCwgMjQ4LCAxODQsIDEwLCA0LCAyMzQsIDIwNSwgMTAsIDIyMCwgMTUwLCAxMCwgMjE1LCAyMTEsIDU5LCAyMjQsIDE0MSwgCisgICAgNzgsIDEwLCAyMjQsIDEzLCA3OCwgMTAsIDEsIDIzNCwgMjA5LCAyMTEsIDQzLCAxMCwgMSwgMjQyLCAxOSwgMTAsIDEsIAorICAgIDExMiwgMiwgMjMxLCAyMjgsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA0OCwgCisgICAgMTAsIDEsIDExMiwgMiwgMjAyLCA1MSwgMTAsIDEsIDc5LCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjU0LCAxNzAsIDEwLCAxLCAKKyAgICAyNTIsIDU0LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NCwgMTAsIDEsIDIxNywgNywgMTAsIDEsIDIxNiwgMTkyLCAxMCwgMSwgCisgICAgMjM1LCAxMjMsIDEwLCAxLCAyNDIsIDM3LCAxMCwgMSwgMjM0LCAxMjksIDEwLCAxLCAyNDgsIDE5NSwgMTAsIDEsIDIxNiwgCisgICAgMjAyLCAxMCwgMSwgMjIzLCA5NSwgMTAsIDEsIDIxMCwgMTA4LCAxMCwgMSwgMjIxLCAxNjYsIDEwLCAxLCAyMjAsIDU5LCAKKyAgICAxMCwgMSwgMjIyLCAyNiwgMTAsIDEsIDI0OCwgMjE2LCAxMCwgMSwgMjE3LCA4MCwgMTAsIDEsIDIxMCwgMTExLCAxMCwgMSwgCisgICAgMjU0LCAxOTYsIDEwLCAxLCAyNDIsIDI0NCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMzQsIAorICAgIDE3NSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgNzksIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgCisgICAgMjE3LCA0MywgMTAsIDEsIDI0NCwgMTQyLCAxMCwgMSwgMjI0LCA4MSwgMTAsIDEsIDIzNCwgMjUwLCAxMCwgMSwgMjMzLCAKKyAgICAxMDIsIDEwLCAxLCAyMzEsIDc4LCAxMCwgMSwgMjI4LCA2MiwgMTAsIDEsIDI0MSwgMjE4LCAxMCwgMSwgMjEyLCAzMCwgMTAsIAorICAgIDEsIDExMiwgMjMxLCAxOTIsIDEwLCAxLCAyMTEsIDQzLCAxMCwgMjQ0LCAxNjMsIDEwLCAyNDgsIDE4MiwgMTAsIDIzNCwgCisgICAgMjAzLCAxMCwgMjQ0LCAxNjUsIDEwLCAyNDgsIDE4NCwgMTAsIDIzNCwgMjA1LCAxMCwgMjIwLCA5MywgMTAsIDIxOCwgNDUsIAorICAgIDEwLCAyMzEsIDIyNiwgNDgsIDEwLCAyMDIsIDQ4LCAxMCwgMjAyLCA1MSwgMTAsIDIxOCwgNjUsIDI1NCwgMTcwLCAxMCwgCisgICAgMjM1LCAxOTMsIDI0OCwgMTg0LCAxMCwgMTY0LCAyMjgsIDYzLCAyNDIsIDIxOCwgMTAsIDIwOSwgMjU1LCAxMCwgMjUsIDUsIAorICAgIDQsIDIxNCwgMTA2LCA0OCwgMTAsIDI1LCA1LCAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDQ4LCAxMCwgMjUsIDUsIDU5LCA1MSwgCisgICAgMTAsIDIyMywgNDksIDI0OCwgMTg0LCAxMCwgMjQ0LCAxNjYsIDIsIDExMywgMjQ3LCAxMTgsIDEwLCAyMTIsIDMyLCAyMDIsIAorICAgIDUxLCAyNTQsIDM3LCAyMSwgMjEwLCA4NiwgMjU0LCAzNywgMjEsIDExMCwgMjU0LCAzNywgMjEsIDEwNSwgMjU0LCAzNywgCisgICAgMjEsIDE1OCwgMjU0LCAzNywgMjEsIDE2MSwgMjU0LCAzNywgMjEsIDE4OSwgMjU0LCAzNywgMjEsIDE5NCwgMjU0LCAzNywgCisgICAgMjEsIDE5OCwgMjU0LCAzNywgMjEsIDE5NSwgMjU0LCAzNywgMjEsIDIwMCwgMTAsIDIyNSwgMTgyLCA1MCwgMTAsIDI0OCwgCisgICAgODMsIDIyMCwgMTM3LCAxMCwgMjE2LCAxNDYsIDIyMCwgMTM3LCAxMCwgMjQ0LCA4MSwgMjI1LCA5LCAyMTgsIDE1NiwgMTAsIAorICAgIDEsIDI0NywgMTE5LCAyNTIsIDU0LCAxMCwgMSwgMjQ3LCAxMTksIDIyNCwgODEsIDEwLCAxLCAyMTgsIDIzLCAyNTQsIDE3MCwgCisgICAgMTAsIDEsIDExMiwgMjEyLCA0NiwgMTAsIDEsIDExMiwgMiwgMjEyLCAzMiwgMjAyLCA0OCwgMTAsIDEsIDExMiwgMiwgMjEyLCAKKyAgICAzMiwgMjAyLCA1MSwgMTAsIDEsIDEyNSwgMjQyLCAxOSwgMTAsIDEsIDEyNSwgMjAyLCAyNTQsIDE3MCwgMTAsIDEsIDEyNSwgCisgICAgMjAyLCAyMTIsIDMwLCAxMCwgMSwgMTA0LCAyLCAyMDIsIDQ4LCAxMCwgMSwgMTI1LCAyMDIsIDIxMSwgNDMsIDEwLCAxLCAKKyAgICAyMTUsIDE0OCwgMTAsIDEsIDIxNSwgMTQ2LCAxMCwgMSwgMjUyLCA2NCwgMTAsIDEsIDIxNywgOCwgMiwgMjIyLCAyMzMsIAorICAgIDEwLCAxLCAyMTcsIDgsIDIsIDEzNCwgMTcwLCA3NywgMjQ2LCAxMDMsIDEwLCAxLCAyMjUsIDIwNSwgMTAsIDEsIDIxNywgNSwgCisgICAgMTAsIDEsIDI1MiwgNTIsIDEwLCAxLCAxMjIsIDIsIDIwMiwgNDgsIDEwLCAxLCAxMjIsIDIsIDExMywgMTcwLCA2NywgNDgsIAorICAgIDEwLCAxLCAyMjcsIDE1MywgMTAsIDEsIDI0NiwgNDMsIDEwLCAxLCAxMjIsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIxNywgCisgICAgMjYsIDEwLCAxLCAyMTcsIDI0LCAxMCwgMSwgMjQ4LCAxMzAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjIyLCAyMzMsIDEwLCAxLCAKKyAgICAyNDgsIDE5NiwgMiwgNTksIDUxLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNCwgMjE3LCA4MCwgMTAsIAorICAgIDEsIDI0OCwgMjAxLCAxMCwgMSwgMjQ4LCAxMzIsIDEwLCAxLCAyNDYsIDcwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDEzNCwgCisgICAgMTcwLCA3NywgMjQ2LCAxMDMsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDIyMiwgMTcxLCAKKyAgICAxMCwgMSwgMjIzLCA5NiwgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMjIsIDIzMywgMTAsIDEsIDIyMywgCisgICAgOTYsIDIsIDU5LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDU5LCAKKyAgICAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjM1LCAxMjAsIAorICAgIDEwLCAxLCAyMjMsIDk2LCAyLCAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDU5LCAyNTIsIDQzLCAyMiwgCisgICAgNTksIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMzQsIDE3MCwgCisgICAgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIyMiwgMjcsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDIyMiwgCisgICAgMjcsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIxNywgODEsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAKKyAgICAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDIzMCwgCisgICAgMTA5LCA1MSwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgNTEsIDEwLCAxLCAyMTMsIDI0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCAKKyAgICAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyMjUsIDIwMywgMTAsIDEsIDIyNCwgODIsIDIsIDU5LCA0OCwgMTAsIDEsIDIyNCwgODIsIAorICAgIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzNCwgMTc0LCAxMCwgMSwgMjE3LCAyNTAsIDIzNCwgMjUwLCAxMCwgMSwgMjM0LCAKKyAgICAyNTEsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjM0LCAyNTEsIDIsIDU5LCA0OCwgMTAsIDEsIDIyOSwgNzksIDEwLCAxLCAyMzQsIAorICAgIDI1MSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQzLCAxMjIsIDEwLCAxLCAyNDMsIDEyMywgMiwgMjIyLCAyMzMsIDEwLCAKKyAgICAxLCAyMjksIDIsIDEwLCAxLCAyNDMsIDEyMywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjQyLCAxMDEsIDEwLCAxLCAyNDMsIAorICAgIDEyMywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDIsIDU5LCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgMTM0LCAKKyAgICAxNzAsIDUxLCAxMCwgMSwgMjI4LCA2MywgMiwgNTksIDUxLCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTgsIDEwLCAxLCAyMjIsIAorICAgIDIxNCwgMTAsIDEsIDIyOCwgNjMsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjI4LCA2MywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQxLCAxMCwgMSwgMjE3LCAyNywgMiwgNTksIDQ4LCAxMCwgMSwgMjQxLCAyMTksIDIsIDc5LCAKKyAgICA0OCwgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MSwgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgMiwgMjAyLCA0OCwgMTAsIAorICAgIDEsIDIxNywgOCwgMjMxLCAxNjUsIDI0MiwgMTcxLCAxMCwgMSwgMjEyLCAzMSwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMzQsIAorICAgIDczLCAyMjYsIDIzNCwgMTAsIDEsIDIyNiwgMjM0LCAxMCwgMSwgNzAsIDEwLCAxLCAyMTAsIDIxMiwgMTAsIDEsIDIzNCwgCisgICAgNzMsIDIxMCwgMjEyLCAxMCwgMSwgMjEyLCAzMSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjEzLCAyNTUsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgMjExLCA0MywgMTAsIDEsIDc5LCAyLCAyMTcsIDc3LCAxMCwgMSwgNzksIDIsIDQsIDIxNCwgMTA1LCAxMCwgCisgICAgMSwgMjEyLCAzMSwgMiwgNTksIDQ4LCAxMCwgMSwgNzUsIDEwLCAxLCA3OSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgNzksIAorICAgIDI1MiwgMTMyLCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyMDIsIDQ4LCAxMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMCwgMSwgCisgICAgMjU0LCAyNDMsIDEwLCA0LCAxMjUsIDI3LCAyMjIsIDI3LCAyLCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MiwgMTAsIDQsIAorICAgIDEyNSwgMjcsIDIyNCwgODIsIDIsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkyLCAxMCwgNCwgMTI1LCA2NiwgNjUsIDE3LCAKKyAgICAxMCwgNCwgMTI1LCAyMzMsIDEwMywgMjU0LCAxNzAsIDEwLCA0LCAxMjUsIDIzNSwgMTIzLCAxMCwgNCwgMTI1LCAxMzQsIAorICAgIDI0NywgMTE4LCAxMCwgNCwgMTI1LCAyMjEsIDE2NiwgMTAsIDI0NSwgMTQzLCA2NCwgMjUzLCAxNjYsIDEwLCAyMTgsIDE1MiwgCisgICAgNjQsIDIyMiwgMTM4LCAyNDUsIDE3NSwgMjQxLCAxNTUsIDEwLCA0LCAxMjUsIDIyMiwgMTgzLCAyMTAsIDg2LCAxMCwgNCwgCisgICAgMTI1LCAyMTQsIDE1OSwgMjIzLCAxMTUsIDIxMCwgODYsIDEwLCA0LCAxMjUsIDI0NywgMTE5LCAyNDEsIDIzNiwgNjQsIAorICAgIDIzNCwgMTI5LCAxMCwgNCwgMTI1LCA2NiwgNTMsIDE3LCAxMCwgNCwgMTIxLCAyMjEsIDE2NiwgMTAsIDQsIDEyNSwgMjMxLCAKKyAgICAyMjcsIDEwLCA0LCAyMTIsIDMwLCAxMCwgNCwgMjExLCA0MywgMTAsIDQsIDEyNSwgMjExLCA0MywgMTAsIDQsIDEyNSwgCisgICAgMjI4LCA2MiwgMTAsIDIyNSwgNDEsIDY0LCAyMjIsIDEzLCAxMCwgMjQ1LCAxNTIsIDI1MCwgMTc1LCAxMjEsIDIxOCwgMTI5LCAKKyAgICAxMCwgMjQ1LCAxNTIsIDI1MCwgMTc1LCAxMjUsIDIxOCwgMTI5LCAxMCwgMjIyLCAxODMsIDEyNSwgMjE4LCAxMzAsIDIsIAorICAgIDI0NCwgMTA0LCAyNTAsIDE3NCwgMTAsIDQsIDEyMSwgMjMxLCA3OCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAyMzUsIDE5MywgCisgICAgMjE0LCAxMDUsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAyMTAsIDg2LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEwLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTA1LCAyNDUsIDIyLCAKKyAgICAyNTQsIDM3LCAyMSwgMTU4LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTYxLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTg5LCAKKyAgICAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTk0LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTk4LCAyNDUsIDIyLCAyNTQsIDM3LCAKKyAgICAyMSwgMTk1LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjAwLCAxMCwgMSwgMjIwLCA2MCwgMiwgNTksIDUxLCAxMCwgMSwgCisgICAgMjQ4LCAyMTcsIDIsIDU5LCA1MSwgMTAsIDEsIDI0MiwgMjQ1LCAyLCA1OSwgNTEsIDEwLCA1LCAyMTksIDE1OCwgMjU0LCAKKyAgICAxMjYsIDEwLCA1LCAyMTksIDE1OCwgMjI0LCAyMzUsIDIzMSwgNTgsIDEwLCAxLCAyNDEsIDIxOSwgMiwgMjM1LCAxOTMsIAorICAgIDIxNCwgMTA1LCAxODgsIDI0NSwgMTQzLCA2NCwgMjI2LCAxNCwgMTg4LCAyMTgsIDE5LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDE4OCwgMjE4LCA2NywgMjQzLCAyMjksIDIxOCwgMTI5LCAxODgsIDIxOCwgMTksIDI0OSwgMjI2LCAxODgsIDIxOCwgNjcsIAorICAgIDI0OSwgMjI2LCAxODgsIDIwMywgMjQ5LCAyMjYsIDE4OCwgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMzMsIDQ2LCAxODgsIDI0OSwgCisgICAgMjI3LCAyMTksIDEwNiwgMjIyLCAyNTEsIDE4OCwgMjE4LCAxOSwgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMzMsIDQ2LCAxODgsIAorICAgIDIxOCwgNjcsIDI0OSwgMjI3LCAyMTksIDEwNiwgMjIyLCAyNTEsIDE4OCwgMjQ5LCAxODAsIDE4OCwgMjQyLCAxLCAyMjYsIAorICAgIDI1MCwgMTg4LCAyNDIsIDEsIDIzMSwgMzYsIDE4OCwgMjQyLCAxLCAyNTMsIDIxOCwgMTg4LCAyNTUsIDIxLCA3OCwgMTg4LCAKKyAgICAxLCAyNTQsIDE3NCwgMTg4LCAxLCAyMTgsIDIzLCAyNTQsIDE3NCwgMTg4LCAxLCAyNTIsIDI1LCAxODgsIDEsIDI0MywgCisgICAgMTEzLCAxODgsIDEsIDI0MywgMTE0LCAyNDMsIDkxLCAxODgsIDEsIDI0OCwgMTkyLCAxODgsIDEsIDI0NywgMTE5LCAyNDgsIAorICAgIDE5MywgMjIyLCAyMjksIDE4OCwgMSwgMjQxLCAyMzgsIDE4OCwgMSwgMjEyLCAzMCwgMTg4LCAxLCAyMTAsIDEwOCwgMTg4LCAKKyAgICAxLCAyNDEsIDE5NSwgMTg4LCAxLCAyMTYsIDIyNiwgMTg4LCAxLCAyMTYsIDIyNywgMjQzLCA5MSwgMTg4LCAxLCAyMTAsIAorICAgIDE5OSwgMTg4LCAxLCAyMTAsIDIwMCwgMjQxLCAyMzgsIDE4OCwgMSwgMjM0LCAyMjUsIDE4OCwgMSwgMjMzLCAxMDEsIDE4OCwgCisgICAgMSwgMjMwLCAxOTAsIDE4OCwgMSwgMjI3LCAxOTQsIDE4OCwgMSwgMjIwLCAxNDMsIDE4OCwgMSwgNDAsIDIyMCwgMTQzLCAKKyAgICAxODgsIDEsIDc1LCAxODgsIDEsIDIyNSwgMjIxLCAxODgsIDEsIDIyMywgNDksIDIyNSwgMjIxLCAxODgsIDEsIDIyMiwgMjQsIAorICAgIDE4OCwgMSwgMjI0LCA3NSwgMTg4LCAxLCAyMjIsIDIyOSwgMTg4LCAxLCAyMjAsIDIwLCAxODgsIDEsIDIxNywgMzYsIDE4OCwgCisgICAgMSwgMjI1LCAxNjksIDI1MiwgMTIsIDE4OCwgMSwgMjI1LCAxNjksIDI0MiwgMjQyLCAxODgsIDEsIDIyNSwgMTY5LCAyNDgsIAorICAgIDIwLCAxODgsIDIyNCwgMTUxLCA0OCwgMTg4LCAyMjQsIDE1MSwgNTEsIDE4OCwgMjI0LCAxNTEsIDI0NiwgMTE3LCAxODgsIAorICAgIDIxMCwgMTcsIDQ4LCAxODgsIDIxMCwgMTcsIDUxLCAxODgsIDIxMCwgMTcsIDI0NiwgMTE3LCAxODgsIDIyMywgMTMxLCA0OCwgCisgICAgMTg4LCAyMjMsIDEzMSwgNTEsIDE4OCwgMjQ2LCAxMTgsIDIxMCwgMjQsIDI0MSwgNDQsIDE4OCwgMjQ2LCAxMTgsIDIxMCwgCisgICAgMjQsIDI1NCwgMTA1LCAxODgsIDI0MSwgMjQxLCA0OCwgMTg4LCAyNDEsIDI0MSwgNTEsIDE4OCwgMjQxLCAyNDAsIDI0NiwgCisgICAgMTE3LCAxODgsIDI0NSwgNzksIDQ4LCAxODgsIDI0NSwgNzksIDUxLCAxODgsIDIyMiwgMTA3LCAxODgsIDI0NCwgMTM2LCAKKyAgICAyNDcsIDEyMCwgMTg4LCAyMjMsIDI0OCwgMTg4LCAyMjIsIDEzNCwgMTg4LCAxMTMsIDY3LCAxNzAsIDQ4LCAxODgsIDExMywgCisgICAgNjcsIDE3MCwgNTEsIDE4OCwgMTM0LCAxNzAsIDQ4LCAxODgsIDEzNCwgMTcwLCA1MSwgMTg4LCAyMjYsIDI0OCwgMjMyLCAKKyAgICAyMTQsIDQ4LCAxODgsIDIyNiwgMjQ4LCAyMzIsIDIxNCwgNTEsIDE4OCwgMjMwLCA1NiwgMTg4LCAyNTIsIDEzMSwgMTg4LCAKKyAgICAxLCAyMTksIDQ5LCAyMTAsIDgwLCAxODgsIDEsIDIxOSwgNDksIDIzNCwgMTIyLCAxODgsIDEsIDIxOSwgNDksIDI0NCwgCisgICAgMTU0LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDI0MCwgMjUwLCA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDU5LCAKKyAgICAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIAorICAgIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDI1MiwgNDMsIDIyLCAxMTMsIDE3MCwgCisgICAgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMTMsIDE3MCwgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIAorICAgIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDEyMiwgMiwgCisgICAgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMTIyLCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCAyNDgsIAorICAgIDE5NiwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCAyNTIsIDQzLCAyMiwgNCwgMjE3LCA4MCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAKKyAgICAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgOTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgCisgICAgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgCisgICAgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgCisgICAgNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDEzNCwgMTcwLCAyMjUsIAorICAgIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDIzNCwgMTc1LCAyLCA1OSwgNDgsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTM0LCAKKyAgICAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDY2LCAKKyAgICAyLCA1OSwgNDgsIDEwLCAxLCA2NiwgMiwgNTksIDUxLCAxMCwgMSwgMjI4LCA2MywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgCisgICAgMjI4LCA2MywgMiwgNCwgMjE3LCA4MCwgMTAsIDEsIDIyOCwgNjMsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDIsIDEzMCwgMTAsIDEsIDIyMywgOTYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAKKyAgICAyMDIsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDEwLCAxLCAxMjIsIDIsIDQsIAorICAgIDEwLCAxLCAyMTcsIDgxLCA1MSwgMTAsIDEsIDEyMiwgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAKKyAgICAxMCwgMSwgMjIxLCAxNjcsIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgMTAsIDEsIDIyMywgOTYsIAorICAgIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgMTAsIDEsIDEyMiwgMiwgNCwgMTAsIDEsIDIxNywgCisgICAgODEsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIDExMiwgMiwgMjQ1LCAKKyAgICAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAxMTMsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDI0NCwgMTEsIDUxLCAxMCwgMSwgMjEyLCAzMSwgMiwgCisgICAgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAyMTIsIDMxLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCisgICAgMTM0LCA0OCwgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzMsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgMTIyLCAyLCAyNDUsIDIyLCAKKyAgICAyNTQsIDM3LCAyMSwgMjQ0LCAxMSwgNTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDI0NCwgCisgICAgMTEsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMTAsIDEsIDIzNCwgMjUxLCAyLCAxMTMsIAorICAgIDE3MCwgNDgsIDIxNiwgMjA1LCAxLCAyNDIsIDQ2LCAyMTYsIDIwNSwgMSwgMjIwLCA2OCwgMjE2LCAyMDUsIDEsIDIyOCwgCisgICAgNjEsIDIxNiwgMjA1LCAxLCAyMjMsIDE4NCwgMjE2LCAyMDUsIDEsIDI1MiwgMTg5LCAyMTYsIDIwNSwgMSwgMjMyLCAyNTEsIAorICAgIDIxNiwgMjA1LCAxLCAyMzUsIDgsIDIxNiwgMjA1LCAxLCAyNTQsIDE1OSwgMjE2LCAyMDUsIDEsIDIxNCwgMjUsIDIxNiwgCisgICAgMjA1LCAxLCAyMzEsIDc3LCAyMTYsIDIwNSwgMSwgMjQ0LCAxOTQsIDIxNiwgMjA1LCAxLCAyNDgsIDIzLCAyMTYsIDIwNSwgCisgICAgMSwgMjE2LCAyMDcsIDIxNiwgMjA1LCAxLCAyMzMsIDEzMSwgMjE2LCAyMDUsIDEsIDI0MywgMTMxLCAyMTYsIDIwNSwgMSwgCisgICAgMjQyLCAxNzcsIDIxNiwgMjA1LCAxLCAyMjEsIDE2NSwgMjE2LCAyMDUsIDEsIDI0OCwgMTQ4LCAyMTYsIDIwNSwgMSwgMjEwLCAKKyAgICAxMDAsIDIxNiwgMjA1LCAxLCAyMTcsIDM3LCAyMTYsIDIwNSwgMSwgMjExLCAxMDMsIDIxNiwgMjA1LCAxLCAyMjUsIDIzMywgCisgICAgMjE2LCAyMDUsIDEsIDIzNSwgMTI4LCAyMTYsIDIwNSwgMSwgMjUwLCAxMzQsIDIxNiwgMjA1LCAxLCAyMTUsIDE1NSwgMjE2LCAKKyAgICAyMDUsIDEsIDI0MSwgMTg4LCAyMTYsIDIwNSwgMSwgMjM0LCAxMzEsIDIxNiwgMjA1LCAxLCAyMTYsIDIwNiwgMjE2LCAyMDUsIAorICAgIDEsIDIxMCwgMTE1LCAyMTYsIDIwNSwgMSwgMjIwLCA1OCwgMjE2LCAyMDUsIDEsIDIyMiwgMzAsIDIxNiwgMjA1LCAxLCAKKyAgICAyNDgsIDIxOSwgMjE2LCAyMDUsIDEsIDExMSwgMjE2LCAyMDUsIDEsIDIxMCwgMjMsIDIxNiwgMjA1LCAxLCAyNTQsIDE5MywgCisgICAgMjE2LCAyMDUsIDEsIDI0MiwgMjQzLCAyMTYsIDIwNSwgMSwgMjI0LCA4NSwgMjE2LCAyMDUsIDEsIDIxMiwgNjMsIDIxNiwgCisgICAgMjA1LCAyNTUsIDIyLCAyMTYsIDIwNSwgMjU1LCAzOCwgMjE2LCAyMDUsIDI0MCwgMTE0LCAyMTYsIDIwNSwgMjQ1LCAyMDgsIAorICAgIDIxNiwgMjA1LCAyMTQsIDIyMiwgMjE2LCAyMDUsIDIyNiwgMTgyLCAyMTYsIDIwNSwgMjQ1LCAyMTYsIDIxNiwgMjA1LCAKKyAgICAyNDUsIDE2LCAyMTYsIDIwNSwgMjI2LCAyNDcsIDIxNiwgMjA1LCAyMjYsIDI1NSwgMjE2LCAyMDUsIDIxOCwgNDUsIDIxNiwgCisgICAgMjA1LCAxLCAyMjksIDIyNSwgMjI4LCAxMzcsIDIxLCAyMTAsIDg2LCAyMjgsIDEzNywgMjEsIDExMCwgMjI4LCAxMzcsIDIxLCAKKyAgICAxMDUsIDIyOCwgMTM3LCAyMSwgMTU4LCAyMjgsIDEzNywgMjEsIDE2MSwgMjI4LCAxMzcsIDIxLCAxODksIDIyOCwgMTM3LCAKKyAgICAyMSwgMTk0LCAyMjgsIDEzNywgMjEsIDE5OCwgMjI4LCAxMzcsIDIxLCAxOTUsIDIyOCwgMTM3LCAyMSwgMjAwLCAyMjgsIAorICAgIDEzNywgMSwgNjEsIDIyOCwgMTM3LCAxLCAyNDUsIDIwOSwgMjI4LCAxMzcsIDEsIDczLCAyMjgsIDEzNywgMSwgNzUsIDIyOCwgCisgICAgMTM3LCAxLCA3MCwgMjI4LCAxMzcsIDEsIDIyNiwgMTgzLCAyMjgsIDEzNywgMSwgNzYsIDIyOCwgMTM3LCAxLCAyNDgsIAorICAgIDIwOSwgMjI4LCAxMzcsIDEsIDIzMCwgMjUsIDIyOCwgMTM3LCAxLCAyNTIsIDE5MSwgMjI4LCAxMzcsIDEsIDE5MCwgMjI4LCAKKyAgICAxMzcsIDEsIDIxNywgMTA1LCAyMjgsIDEzNywgMSwgMjM1LCAxNDEsIDIyOCwgMTM3LCAxLCAyNTAsIDE1NywgMjI4LCAxMzcsIAorICAgIDEsIDI0OCwgMjIxLCAyMjgsIDEzNywgMSwgMjA1LCAyMjgsIDEzNywgMSwgMjIyLCAxNzksIDIyOCwgMTM3LCAxLCAyMDYsIAorICAgIDIyOCwgMTM3LCAxLCAyNDMsIDc5LCAyMjgsIDEzNywgMSwgMjQ0LCAxOTYsIDIyOCwgMTM3LCAxLCAxNzYsIDIyOCwgMTM3LCAKKyAgICAxLCAyMzMsIDEzNSwgMjI4LCAxMzcsIDEsIDIyOSwgMjI5LCAyMTEsIDIyMywgMjI4LCAxMzcsIDEsIDE4NCwgMjI4LCAxMzcsIAorICAgIDEsIDIyNywgMTY1LCAyMjgsIDEzNywgMSwgMTk3LCAyMjgsIDEzNywgMSwgMTYyLCAyMjgsIDEzNywgMSwgMjEyLCA2NSwgCisgICAgMjI4LCAxMzcsIDEsIDE5MSwgMjI4LCAxMzcsIDEsIDIyNywgMTY2LCAyMTEsIDIyMywgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIAorICAgIDIzNSwgMTQxLCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgMjUwLCAxNTcsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAyMDUsIDIyOCwgCisgICAgMTM3LCAzOCwgMjE5LCAyNTEsIDEyNSwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAyMTksIDI1MSwgMTIxLCAyMTYsIDMwLCAKKyAgICAyMjgsIDEzNywgMzgsIDIxOSwgMjUxLCAyMjIsIDIyOCwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDI0OCwgMzgsIAorICAgIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAxMjUsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAxMjEsIDIxNiwgCisgICAgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAyMjIsIDIyOCwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAyMjksIDE5MywgNzgsIAorICAgIDIyOCwgMTM3LCAzOCwgNTIsIDU5LCA0OCwgMjI4LCAxMzcsIDEyNSwgMTM4LCAyNTQsIDU3LCAyMjgsIDEzNywgMTIxLCAKKyAgICAxMzgsIDI1NCwgNTcsIDIyOCwgMTM3LCAxNiwgMjI2LCAxODQsIDI0OCwgNTAsIDIyOCwgMTM3LCAxNiwgMjQzLCA3OCwgCisgICAgMjI4LCAxMzcsIDI0OSwgMjE5LCAyMjgsIDEzNywgMjQ1LCAzMSwgNzgsIDIyOCwgMTM3LCAyMzMsIDEwOCwgMjIxLCAyNTIsIAorICAgIDEsIDI1NCwgMTc2LCAyMjEsIDI1MiwgMSwgMjUxLCAyMjgsIDIyMSwgMjUyLCAxLCAyNDMsIDExMiwgMjIxLCAyNTIsIDEsIAorICAgIDI0OCwgMTk0LCAyMjEsIDI1MiwgMSwgMjM1LCAxNTIsIDIyMSwgMjUyLCAxLCAyNTIsIDE4OSwgMjIxLCAyNTIsIDEsIDIxMCwgCisgICAgODksIDIyMSwgMjUyLCAxLCAyMzUsIDE2MCwgMjIxLCAyNTIsIDEsIDIxNiwgNjcsIDIyMSwgMjUyLCAxLCAyMTAsIDE4MiwgCisgICAgMjIxLCAyNTIsIDEsIDIzNSwgOSwgMjIxLCAyNTIsIDEsIDIzMywgMTI4LCAyMjEsIDI1MiwgMSwgMjMwLCAxOTAsIDIyMSwgCisgICAgMjUyLCAxLCAyMjcsIDE5NCwgMjIxLCAyNTIsIDEsIDIxOSwgMTU2LCAyMjEsIDI1MiwgMSwgMjM1LCAyNTUsIDIyMSwgMjUyLCAKKyAgICAxLCAyNDQsIDEyMSwgMjIxLCAyNTIsIDEsIDIxNSwgMTgxLCAyMjEsIDI1MiwgMSwgMjI0LCAxMCwgMjIxLCAyNTIsIDEsIAorICAgIDIyMiwgMjI5LCAyMjEsIDI1MiwgMSwgMjIwLCA4NSwgMjIxLCAyNTIsIDEsIDIxNywgMTAwLCAyMjEsIDI1MiwgMTY0LCAKKyAgICAyMzUsIDI1NSwgMjIxLCAyNTIsIDE2NCwgMjM1LCAyNTQsIDIyMSwgMjUyLCAxNjQsIDIyNiwgMjQzLCAyMjEsIDI1MiwgCisgICAgMTY0LCAyNDgsIDIwNywgMjIxLCAyNTIsIDU4LCAxLCAyNDUsIDEwNSwgMjEwLCAxODIsIDIyMSwgMjUyLCAxNjQsIDI0NSwgCisgICAgMTA1LCAyMTAsIDE4MiwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDc1LCAyMjEsIDI1MiwgMjUsIDUsIDc1LCAyMjEsIDI1MiwgCisgICAgMjUsIDUsIDIyNiwgMTE4LCAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDIyNiwgMTE4LCA2MSwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDYxLCAyMjEsIAorICAgIDI1MiwgMjUsIDUsIDYxLCAyMjEsIDI1MiwgNTgsIDEsIDIxOSwgMjUxLCA2MSwgMjIxLCAyNTIsIDI1LCA1LCAyMTksIDI1MSwgCisgICAgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3MCwgMjIxLCAyNTIsIDI1LCA1LCA3MCwgMjIxLCAyNTIsIDU4LCAxLCA3MywgCisgICAgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDczLCAyMjEsIDI1MiwgMjUsIDUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDc2LCAyMjEsIAorICAgIDI1MiwgMjUsIDUsIDIxOCwgNDUsIDIyMSwgMjUyLCAxNjQsIDIyOSwgOTIsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjI5LCA5MiwgCisgICAgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDIxOCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDExNCwgMjIxLCAyNTIsIAorICAgIDIyNCwgMTQxLCAyNTIsIDExNCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTMsIDIwMSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAKKyAgICAyMjAsIDgsIDIyMSwgMjUyLCAyNTUsIDIxLCA3OCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMzEsIDY4LCAyMjQsIDQ1LCAyMjEsIAorICAgIDI1MiwgMjI0LCAxNDEsIDIxMCwgMzEsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjI0LCA0NSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAKKyAgICAyMTAsIDExNCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMTUsIDkwLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgOSwgMjIxLCAKKyAgICAyNTIsIDIyNCwgMTQxLCAyMTksIDUzLCAyMzEsIDE0NSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDEwMCwgMjMxLCAxODIsIAorICAgIDEsIDI0MiwgMjQsIDIzMSwgMTgyLCAxLCAyNTUsIDI1LCAyMzEsIDE4MiwgMSwgMjU0LCAyMTYsIDIzMSwgMTgyLCAxLCAKKyAgICAyNTQsIDI1NSwgMjMxLCAxODIsIDEsIDI1NCwgMjA5LCAyMzEsIDE4MiwgMSwgMjE0LCAxMjQsIDIzMSwgMTgyLCAxLCAyNTMsIAorICAgIDE2MCwgMjMxLCAxODIsIDEsIDIzNSwgMTYwLCAyMzEsIDE4MiwgMSwgMjUzLCAxOTgsIDIzMSwgMTgyLCAxLCAyNTQsIDE4MSwgCisgICAgMjMxLCAxODIsIDEsIDI1NCwgMTg2LCAyMzEsIDE4MiwgMSwgMjU0LCAxNzgsIDIzMSwgMTgyLCAxLCAyNTQsIDEzNiwgMjMxLCAKKyAgICAxODIsIDEsIDI1NCwgMTIzLCAyMzEsIDE4MiwgMSwgMjUzLCAyMzcsIDIzMSwgMTgyLCAxLCAyMzUsIDI1NSwgMjMxLCAxODIsIAorICAgIDEsIDI1NCwgNzIsIDIzMSwgMTgyLCAxLCAyNTMsIDIwOCwgMjMxLCAxODIsIDEsIDI1NCwgNDUsIDIzMSwgMTgyLCAxLCAKKyAgICAyNTQsIDQxLCAyMzEsIDE4MiwgMSwgMjUzLCAyMzEsIDIzMSwgMTgyLCAxLCAyNTMsIDIwNiwgMjMxLCAxODIsIDEsIDI0NiwgCisgICAgNTUsIDIzMSwgMTgyLCAxLCAyMzUsIDIsIDIzMSwgMTgyLCAxLCAyNTQsIDE5NiwgMjMxLCAxODIsIDI1NCwgMjIyLCA3OCwgCisgICAgMjMxLCAxODIsIDIxMywgMTM2LCA3OCwgMjMxLCAxODIsIDI0MywgNTMsIDc4LCAyMzEsIDE4MiwgMjI0LCAxNDAsIDEwLCAxLCAKKyAgICAyNTIsIDU1LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAxNTEsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIxNywgODEsIAorICAgIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIAorICAgIDEsIDIyNCwgODIsIDIsIDU5LCA1MSwgMTAsIDEsIDIzMywgMTAzLCAyLCA1MiwgMTMwLCAxMCwgMSwgNjYsIDIsIDEzNCwgCisgICAgMTcwLCA0OCwgMTAsIDEsIDc5LCAyLCAxMTMsIDE3MCwgMjUyLCA0MywgMjIsIDIwMiwgNDgsIDEwLCAxLCA3OSwgMiwgMTEzLCAKKyAgICAxNzAsIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMzIsIDEyMywgMTAsIDEsIDIxMiwgMzEsIDIsIAorICAgIDU5LCAyMTEsIDIzMSwgMTAsIDEsIDIyMiwgMjAxLCAyMTEsIDQzLCAxMCwgMjQ5LCA5OSwgMjQ0LCAxNjUsIDEwLCAyNDksIAorICAgIDk5LCAyNDgsIDE4NCwgMTAsIDI0OSwgOTksIDIzNCwgMjA1LCAxMCwgMjQ5LCA5OSwgMjQ0LCAxNjMsIDEwLCAyNDksIDk5LCAKKyAgICAyNDgsIDE4MiwgMTAsIDI0OSwgOTksIDIzNCwgMjAzLCAxMCwgMTM4LCAxMjMsIDU5LCA0OCwgMTAsIDEzOCwgMTEzLCAxNzAsIAorICAgIDQ4LCAxMCwgMTM4LCAyMzIsIDEyNCwgNDgsIDEwLCAxMzgsIDEyMywgNTksIDUxLCAxMCwgMTM4LCAxMTMsIDE3MCwgNTEsIAorICAgIDEwLCAxMzgsIDIzMiwgMTI0LCA1MSwgMTAsIDIwNCwgMjQ0LCAxNjMsIDEwLCAyMDQsIDI0OCwgMTgyLCAxMCwgMjA0LCAKKyAgICAyMzQsIDIwMywgMTAsIDQsIDEyNSwgMjEyLCAzMCwgMTAsIDI0NCwgMTY2LCAyLCAyMjIsIDIzMywgMTAsIDI0NCwgMTY2LCAKKyAgICAyLCA1OSwgNDgsIDEwLCAyMzQsIDIwNiwgMiwgNTksIDUxLCAxMCwgNDMsIDI1MywgMjUwLCA0OCwgMTAsIDQ0LCAyNTMsIAorICAgIDI1MCwgNDgsIDEwLCA0MywgMjUzLCAyNTAsIDUxLCAxMCwgNDQsIDI1MywgMjUwLCA1MSwgMTAsIDUyLCA0NCwgMjUzLCAKKyAgICAyNTAsIDQ4LCAxMCwgNTIsIDQ0LCAyNTMsIDI1MCwgNzcsIDIsIDI0NywgMTIwLCAxMCwgNDQsIDI1MywgMjUwLCA3NywgMiwgCisgICAgMjQ3LCAxMjAsIDEwLCAyNDgsIDE4NSwgMiwgMjQ3LCAxMjAsIDg0LCA1LCAyMzUsIDE5MywgMjUwLCAyNTUsIDg0LCA1LCAKKyAgICAyNTAsIDI1NSwgODQsIDUsIDI1NCwgNzUsIDg0LCA1LCAyMTMsIDE0NywgODQsIDEsIDIxOSwgMjUxLCA2MSwgODQsIDEsIAorICAgIDYxLCA4NCwgMSwgMjU1LCA3MywgODQsIDEsIDczLCA4NCwgMSwgMjM2LCAzMywgODQsIDEsIDcwLCA4NCwgMSwgMjE0LCAKKyAgICAxMTgsIDg0LCAxLCAxNDksIDE1MywgODQsIDEsIDE0OSwgMTU2LCA4NCwgMSwgMjUxLCAyLCA3NSwgODQsIDEsIDIxOSwgCisgICAgMjUxLCA3NSwgODQsIDEsIDc1LCA4NCwgMSwgMjU0LCAyMDEsIDg0LCAxLCAyNTEsIDIsIDc2LCA4NCwgMSwgMjE5LCAyNTEsIAorICAgIDc2LCA4NCwgMSwgNzYsIDg0LCAxLCAyNTMsIDE5MiwgODQsIDEsIDE3NiwgODQsIDEsIDIzNCwgMTMyLCA4NCwgMSwgMjQzLCAKKyAgICAxMzUsIDg0LCAxLCAyNDIsIDI0OSwgODQsIDEsIDIyOSwgNzcsIDg0LCAxLCAyNTEsIDMzLCA4NCwgMSwgMjUwLCAxNTcsIAorICAgIDg0LCAxLCAyMzUsIDE0MSwgODQsIDEsIDIzNSwgMTE0LCA4NCwgMSwgMjI3LCAxNjUsIDg0LCAxLCAyMTUsIDE1NiwgODQsIAorICAgIDEsIDIxNSwgMTQ0LCA4NCwgMSwgMjQ4LCAxMzUsIDg0LCAxLCAyNDgsIDExOSwgODQsIDEsIDIyOCwgMTEwLCA4NCwgMSwgCisgICAgMjE3LCAxMDUsIDg0LCAxLCAyMTYsIDIwOCwgODQsIDEsIDI0OCwgMjIxLCA4NCwgMSwgMjQ4LCAyNSwgODQsIDEsIDE5NywgCisgICAgODQsIDEsIDIyOCwgOTIsIDg0LCAxLCAxOTAsIDg0LCAxLCAyMjUsIDE0NywgODQsIDEsIDI1MiwgMTkxLCA4NCwgMSwgMjUyLCAKKyAgICAxOCwgODQsIDEsIDE4NCwgODQsIDEsIDE5MSwgODQsIDEsIDIwNSwgODQsIDEsIDIyMiwgMTc5LCA4NCwgMSwgMjMzLCAxMzUsIAorICAgIDg0LCAxLCAyMzIsIDE4NCwgODQsIDEsIDIzMiwgMTc1LCA4NCwgMSwgMjE0LCAyNywgODQsIDEsIDIyMCwgMTAyLCA4NCwgMSwgCisgICAgMjE4LCAyMjMsIDg0LCAxLCAyMDYsIDg0LCAxLCAxNjIsIDg0LCAyNSwgNSwgMjI2LCAyMzQsIDg0LCAyNSwgNSwgMjI2LCAKKyAgICAxODEsIDg0LCA1LCAyMjcsIDIwNSwgODQsIDUsIDI1MywgMTc1LCA4NCwgMjUsIDUsIDI1NSwgNzMsIDg0LCAyNSwgNSwgNzMsIAorICAgIDg0LCAyNSwgNSwgMjM2LCAzMywgODQsIDI1LCA1LCA3MCwgODQsIDI1LCA1LCAyMTQsIDExOCwgODQsIDI1LCA1LCAxNDksIAorICAgIDE1MywgODQsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA4NCwgMjUsIDUsIDI1MSwgMiwgNzUsIDg0LCAyNSwgNSwgMjE5LCAKKyAgICAyNTEsIDc1LCA4NCwgMjUsIDUsIDc1LCA4NCwgMjUsIDUsIDI1NCwgMjAxLCA4NCwgMjUsIDUsIDI1MSwgMiwgNzYsIDg0LCAKKyAgICAyNSwgNSwgMjE5LCAyNTEsIDc2LCA4NCwgMjUsIDUsIDc2LCA4NCwgMjUsIDUsIDI1MywgMTkyLCA4NCwgNSwgMjEzLCAxNTIsIAorICAgIDg0LCAyNSwgNSwgMjI0LCAxODUsIDc1LCA4NCwgMjUsIDUsIDI1MywgMTcxLCA4NCwgMjI2LCAyMDQsIDg0LCAyMTgsIDExMSwgCisgICAgNSwgMjE0LCAyMTYsIDg0LCAyMTgsIDExMSwgNSwgMjU0LCA3NywgODQsIDI0MiwgMTM3LCAyNTUsIDE0LCA4NCwgMjU1LCAzLCAKKyAgICAyNTUsIDE0LCA4NCwgMjUsIDUsIDI1MSwgMiwgMTk5LCA3NSwgODQsIDI1LCA1LCAyMTQsIDIxNCwgODQsIDI1LCA1LCAyMTQsIAorICAgIDExNywgODQsIDEsIDIyNCwgODgsIDg0LCAxLCAyMzQsIDExNSwgODQsIDEsIDI0MiwgMjI2LCA4NCwgMSwgMjEwLCAxMTYsIAorICAgIDg0LCAxLCAyNDgsIDEyNCwgODQsIDEsIDIyMywgMzksIDg0LCAxLCAyNDQsIDE5NiwgODQsIDEsIDIxMCwgMTY4LCA4NCwgMSwgCisgICAgMTQ5LCAyMjIsIDE4MCwgODQsIDEsIDE0OSwgMjMyLCAxODUsIDg0LCAyNSwgNSwgMTQ5LCAxNTYsIDg0LCAyNSwgNSwgMTQ5LCAKKyAgICAyMzIsIDE4NSwgODQsIDI0OCwgMTc4LCA4NCwgNTIsIDI0OCwgMTc4LCA4NCwgMjEsIDIxMCwgODYsIDg0LCAyMSwgMTEwLCAKKyAgICA4NCwgMjEsIDEwNSwgODQsIDIxLCAxNTgsIDg0LCAyMSwgMTYxLCA4NCwgMjEsIDE4OSwgODQsIDIxLCAxOTQsIDg0LCAyMSwgCisgICAgMTk4LCA4NCwgMjEsIDE5NSwgODQsIDIxLCAyMDAsIDg0LCAyNTUsIDIxLCA1MCwgODQsIDUsIDEyNSwgMjE5LCAxNywgMjQ3LCAKKyAgICAxMjAsIDg0LCAxLCAyNTEsIDIsIDYxLCA4NCwgMSwgMjI2LCAyMzQsIDg0LCAxLCAyMjYsIDE4MSwgODQsIDEsIDI1MywgCisgICAgMTcxLCA4NCwgMSwgMjE0LCAyMTQsIDg0LCAxLCAyMTQsIDExNywgODQsIDEsIDIxMCwgODIsIDg0LCAxLCAxMTQsIDE5MSwgCisgICAgODQsIDEsIDI0MywgMjksIDg0LCAxLCAyMzUsIDk2LCA4NCwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA4NCwgMSwgMjQ4LCAKKyAgICAxMjUsIDg0LCAxLCAyNTIsIDExMSwgMTQ2LCA1LCAyNTAsIDI1NSwgMTQ2LCA1LCAyNTQsIDc1LCAxNDYsIDUsIDIxMywgCisgICAgMTQ3LCAxNDYsIDEsIDYxLCAxNDYsIDEsIDI1NSwgNzMsIDE0NiwgMSwgNzMsIDE0NiwgMSwgMjM2LCAzMywgMTQ2LCAxLCAKKyAgICA3MCwgMTQ2LCAxLCAyMTQsIDExOCwgMTQ2LCAxLCAxNDksIDE1MywgMTQ2LCAxLCAxNDksIDE1NiwgMTQ2LCAxLCA3NSwgCisgICAgMTQ2LCAxLCAyNTQsIDIwMSwgMTQ2LCAxLCA3NiwgMTQ2LCAxLCAyNTMsIDE5MiwgMTQ2LCAxLCAxNzYsIDE0NiwgMSwgMjM0LCAKKyAgICAxMzIsIDE0NiwgMSwgMjQzLCAxMzUsIDE0NiwgMSwgMjQyLCAyNDksIDE0NiwgMSwgMjI5LCA3NywgMTQ2LCAxLCAyNTEsIAorICAgIDMzLCAxNDYsIDEsIDI1MCwgMTU3LCAxNDYsIDEsIDIzNSwgMTQxLCAxNDYsIDEsIDIzNSwgMTE0LCAxNDYsIDEsIDIyNywgCisgICAgMTY1LCAxNDYsIDEsIDIxNSwgMTU2LCAxNDYsIDEsIDIxNSwgMTQ0LCAxNDYsIDEsIDI0OCwgMTM1LCAxNDYsIDEsIDI0OCwgCisgICAgMTE5LCAxNDYsIDEsIDIyOCwgMTEwLCAxNDYsIDEsIDIxNywgMTA1LCAxNDYsIDEsIDIxNiwgMjA4LCAxNDYsIDEsIDI0OCwgCisgICAgMjIxLCAxNDYsIDEsIDI0OCwgMjUsIDE0NiwgMSwgMTk3LCAxNDYsIDEsIDE5MCwgMTQ2LCAxLCAyMjUsIDE0NywgMTQ2LCAxLCAKKyAgICAyNTIsIDE5MSwgMTQ2LCAxLCAyNTIsIDE4LCAxNDYsIDEsIDE4NCwgMTQ2LCAxLCAxOTEsIDE0NiwgMSwgMjA1LCAxNDYsIDEsIAorICAgIDIzMywgMTM1LCAxNDYsIDEsIDIyMCwgMTAyLCAxNDYsIDEsIDIxOCwgMjIzLCAxNDYsIDEsIDIwNiwgMTQ2LCAxLCAxNjIsIAorICAgIDE0NiwgNSwgMjI3LCAyMDUsIDE0NiwgNSwgMjUzLCAxNzUsIDE0NiwgMjUsIDUsIDI1NSwgNzMsIDE0NiwgMjUsIDUsIDczLCAKKyAgICAxNDYsIDI1LCA1LCAyMzYsIDMzLCAxNDYsIDI1LCA1LCA3MCwgMTQ2LCAyNSwgNSwgMjE0LCAxMTgsIDE0NiwgMjUsIDUsIAorICAgIDE0OSwgMTUzLCAxNDYsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNDYsIDI1LCA1LCA3NSwgMTQ2LCAyNSwgNSwgMjU0LCAKKyAgICAyMDEsIDE0NiwgMjUsIDUsIDc2LCAxNDYsIDI1LCA1LCAyNTMsIDE5MiwgMTQ2LCA1LCAyMTMsIDE1MiwgMTQ2LCAxLCAyMzQsIAorICAgIDEyNCwgMjE3LCAxMDUsIDE0NiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAxNDYsIDEsIDIyMiwgMTc5LCAxNDYsIDEsIDIyMywgCisgICAgMzksIDE0NiwgMSwgMjEwLCAxNjgsIDE0NiwgMSwgMTQ5LCAyMjIsIDE4MCwgMTQ2LCAxLCAxNDksIDIzMiwgMTg1LCAxNDYsIAorICAgIDI1LCA1LCAxNDksIDE1NiwgMTQ2LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTQ2LCAyMSwgMjEwLCA4NiwgMTQ2LCAyMSwgCisgICAgMTEwLCAxNDYsIDIxLCAxMDUsIDE0NiwgMjEsIDE1OCwgMTQ2LCAyMSwgMTYxLCAxNDYsIDIxLCAxODksIDE0NiwgMjEsIAorICAgIDE5NCwgMTQ2LCAyMSwgMTk4LCAxNDYsIDIxLCAxOTUsIDE0NiwgMjEsIDIwMCwgMTQ2LCAxLCAyMjMsIDE4OCwgMiwgMjMwLCAKKyAgICAyMjQsIDI0NywgMjU0LCAxNDYsIDEsIDIyMywgMTg4LCAyLCAyMzIsIDEwOCwgMjQ3LCAyNTQsIDE0NiwgMjIyLCAxMTgsIAorICAgIDc4LCAxNDYsIDIyMiwgMTE4LCA1MCwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTEwLCAxNDYsIDI0OSwgOTgsIDIyNywgCisgICAgMTk3LCAxMDUsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDE1OCwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTYxLCAxNDYsIAorICAgIDI0OSwgOTgsIDIyNywgMTk3LCAxMjMsIDIzMywgMTYsIDIxNiwgMjAxLCAyMTYsIDE5NiwgMjQ4LCA0OCwgMTQ2LCAyNDksIAorICAgIDk4LCAyNDgsIDQ5LCAyMTksIDExOSwgMTQ2LCAyMzUsIDE2MSwgMTQ2LCAyNDMsIDEwMywgNzgsIDE4MywgNSwgMjU0LCAKKyAgICAyNTQsIDI1MSwgMjQzLCAxODMsIDUsIDI1MSwgMjQzLCAxODMsIDUsIDIxMywgMTQ3LCAxODMsIDEsIDYxLCAxODMsIDEsIAorICAgIDI1NSwgNzMsIDE4MywgMSwgNzMsIDE4MywgMSwgMjM2LCAzMywgMTgzLCAxLCA3MCwgMTgzLCAxLCAyMTQsIDExOCwgMTgzLCAKKyAgICAxLCAyNDUsIDIwOSwgMTgzLCAxLCAyNTQsIDIwMSwgMTgzLCAxLCAyMjYsIDE4MywgMTgzLCAxLCAyNTMsIDE5MiwgMTgzLCAKKyAgICAxLCAxNzYsIDE4MywgMSwgMjM0LCAxMzIsIDE4MywgMSwgMjQzLCAxMzUsIDE4MywgMSwgMjQyLCAyNDksIDE4MywgMSwgCisgICAgMjI5LCA3NywgMTgzLCAxLCAyNTEsIDMzLCAxODMsIDEsIDI1MCwgMTU3LCAxODMsIDEsIDIzNSwgMTQxLCAxODMsIDEsIAorICAgIDIzNSwgMTE0LCAxODMsIDEsIDIyNywgMTY1LCAxODMsIDEsIDIxNSwgMTU2LCAxODMsIDEsIDIxNSwgMTQ0LCAxODMsIDEsIAorICAgIDI0OCwgMTM1LCAxODMsIDEsIDI0OCwgMTE5LCAxODMsIDEsIDIyOCwgMTEwLCAxODMsIDEsIDIxNywgMTA1LCAxODMsIDEsIAorICAgIDIxNiwgMjA4LCAxODMsIDEsIDI0OCwgMjIxLCAxODMsIDEsIDI0OCwgMjUsIDE4MywgMSwgMTk3LCAxODMsIDEsIDE5MCwgCisgICAgMTgzLCAxLCAyMjUsIDE0NywgMTgzLCAxLCAyNTIsIDE5MSwgMTgzLCAxLCAyNTIsIDE4LCAxODMsIDEsIDE4NCwgMTgzLCAxLCAKKyAgICAxOTEsIDE4MywgMSwgMjA1LCAxODMsIDEsIDIzMywgMTM1LCAxODMsIDEsIDIzMiwgMTg0LCAxODMsIDEsIDIxNCwgMjcsIAorICAgIDE4MywgMSwgMjIwLCAxMDIsIDE4MywgMSwgMjA2LCAxODMsIDEsIDE2MiwgMTgzLCA1LCAyMjcsIDIwNSwgMTgzLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTgzLCAyNSwgNSwgNzMsIDE4MywgMjUsIDUsIDIzNiwgMzMsIDE4MywgMjUsIDUsIDcwLCAxODMsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTgzLCAyNSwgNSwgMjQ1LCAyMDksIDE4MywgMjUsIDUsIDI1NCwgMjAxLCAxODMsIDI1LCA1LCAyMjYsIAorICAgIDE4MywgMTgzLCAyNSwgNSwgMjUzLCAxOTIsIDE4MywgNSwgMjEzLCAxNTIsIDE4MywgNSwgMjE0LCAyMTgsIDE4MywgMSwgCisgICAgMjM0LCAxMTUsIDE4MywgMSwgMjQyLCAyMjYsIDE4MywgMSwgMjEwLCAxMTYsIDE4MywgMSwgMjIyLCAxNzksIDE4MywgMSwgCisgICAgMjQ0LCAxOTYsIDE4MywgMjEsIDIxMCwgODYsIDE4MywgMjEsIDExMCwgMTgzLCAyMSwgMTA1LCAxODMsIDIxLCAxNTgsIAorICAgIDE4MywgMjEsIDE2MSwgMTgzLCAyMSwgMTg5LCAxODMsIDIxLCAxOTQsIDE4MywgMjEsIDE5OCwgMTgzLCAyMSwgMTk1LCAKKyAgICAxODMsIDIxLCAyMDAsIDE4MywgMjE2LCA3NCwgMTgzLCAyNTQsIDI1MywgMTgzLCAyMzUsIDE3OCwgMTgzLCAyMTQsIDE0NiwgCisgICAgMTgzLCAyNDUsIDE4MSwgMjI2LCAxODgsIDE4MywgNSwgMjExLCA3OCwgMTcxLCA1LCAyNTAsIDI1NSwgMTcxLCA1LCAyNTQsIAorICAgIDc1LCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgNzMsIDE3MSwgMSwgNzMsIDE3MSwgMSwgCisgICAgMjM2LCAzMywgMTcxLCAxLCA3MCwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAxNDksIDE1MywgMTcxLCAxLCAxNDksIAorICAgIDE1NiwgMTcxLCAyNSwgMjUxLCAyLCA3NSwgMTcxLCAxLCA3NSwgMTcxLCAxLCAyNTQsIDIwMSwgMTcxLCAyNSwgMjUxLCAyLCAKKyAgICA3NiwgMTcxLCAxLCA3NiwgMTcxLCAxLCAyNTMsIDE5MiwgMTcxLCAxLCAxNzYsIDE3MSwgMSwgMjM0LCAxMzIsIDE3MSwgMSwgCisgICAgMjQzLCAxMzUsIDE3MSwgMSwgMjQyLCAyNDksIDE3MSwgMSwgMjI5LCA3NywgMTcxLCAxLCAyNTEsIDMzLCAxNzEsIDEsIAorICAgIDI1MCwgMTU3LCAxNzEsIDEsIDIzNSwgMTQxLCAxNzEsIDEsIDIzNSwgMTE0LCAxNzEsIDEsIDIyNywgMTY1LCAxNzEsIDEsIAorICAgIDIxNSwgMTU2LCAxNzEsIDEsIDIxNSwgMTQ0LCAxNzEsIDEsIDI0OCwgMTM1LCAxNzEsIDEsIDI0OCwgMTE5LCAxNzEsIDEsIAorICAgIDIyOCwgMTEwLCAxNzEsIDEsIDIxNywgMTA1LCAxNzEsIDEsIDIxNiwgMjA4LCAxNzEsIDEsIDI0OCwgMjIxLCAxNzEsIDEsIAorICAgIDI0OCwgMjUsIDE3MSwgMSwgMTk3LCAxNzEsIDEsIDE5MCwgMTcxLCAxLCAyMjUsIDE0NywgMTcxLCAxLCAyNTIsIDE5MSwgCisgICAgMTcxLCAxLCAyNTIsIDE4LCAxNzEsIDEsIDE4NCwgMTcxLCAxLCAxOTEsIDE3MSwgMSwgMjA1LCAxNzEsIDEsIDIzMywgMTM1LCAKKyAgICAxNzEsIDEsIDIzMiwgMTg0LCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAxMDIsIDE3MSwgMSwgMjE4LCAyMjMsIAorICAgIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwNSwgMTcxLCA1LCAyNTMsIDE3NSwgMTcxLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTcxLCAyNSwgNSwgNzMsIDE3MSwgMjUsIDUsIDIzNiwgMzMsIDE3MSwgMjUsIDUsIDcwLCAxNzEsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE3MSwgMjUsIDUsIAorICAgIDI1MSwgMiwgNzUsIDE3MSwgMjUsIDUsIDc1LCAxNzEsIDI1LCA1LCAyNTQsIDIwMSwgMTcxLCAyNSwgNSwgMjUxLCAyLCA3NiwgCisgICAgMTcxLCAyNSwgNSwgNzYsIDE3MSwgMjUsIDUsIDI1MywgMTkyLCAxNzEsIDUsIDIxMywgMTUyLCAxNzEsIDIyNiwgMjA0LCAKKyAgICAxNzEsIDEsIDE0OSwgMjIyLCAxODAsIDE3MSwgMSwgMTQ5LCAyMzIsIDE4NSwgMTcxLCAyNSwgNSwgMTQ5LCAxNTYsIDE3MSwgCisgICAgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3MSwgMjEsIDIxMCwgODYsIDE3MSwgMjEsIDExMCwgMTcxLCAyMSwgMTA1LCAxNzEsIAorICAgIDIxLCAxNTgsIDE3MSwgMjEsIDE2MSwgMTcxLCAyMSwgMTg5LCAxNzEsIDIxLCAxOTQsIDE3MSwgMjEsIDE5OCwgMTcxLCAyMSwgCisgICAgMTk1LCAxNzEsIDIxLCAyMDAsIDE3MSwgMjU1LCAyMSwgNTAsIDE3MSwgMjIyLCAxMTgsIDUwLCAxNTcsIDUsIDI1MCwgMjU1LCAKKyAgICAxNTcsIDUsIDI1NCwgNzUsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgNjEsIDE1NywgMSwgMjU1LCA3MywgMTU3LCAxLCAKKyAgICA3MywgMTU3LCAxLCAyMzYsIDMzLCAxNTcsIDEsIDcwLCAxNTcsIDEsIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIAorICAgIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc1LCAxNTcsIDEsIDI1NCwgMjAxLCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1MywgMTkyLCAKKyAgICAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzMiwgMTU3LCAxLCAyNDMsIDEzNSwgMTU3LCAxLCAyNDIsIDI0OSwgMTU3LCAKKyAgICAxLCAyMjksIDc3LCAxNTcsIDEsIDI1MSwgMzMsIDE1NywgMSwgMjUwLCAxNTcsIDE1NywgMSwgMjM1LCAxNDEsIDE1NywgMSwgCisgICAgMjM1LCAxMTQsIDE1NywgMSwgMjI3LCAxNjUsIDE1NywgMSwgMjE1LCAxNTYsIDE1NywgMSwgMjE1LCAxNDQsIDE1NywgMSwgCisgICAgMjQ4LCAxMzUsIDE1NywgMSwgMjQ4LCAxMTksIDE1NywgMSwgMjI4LCAxMTAsIDE1NywgMSwgMjE3LCAxMDUsIDE1NywgMSwgCisgICAgMjE2LCAyMDgsIDE1NywgMSwgMjQ4LCAyMjEsIDE1NywgMSwgMjQ4LCAyNSwgMTU3LCAxLCAxOTcsIDE1NywgMSwgMTkwLCAKKyAgICAxNTcsIDEsIDIyNSwgMTQ3LCAxNTcsIDEsIDI1MiwgMTkxLCAxNTcsIDEsIDI1MiwgMTgsIDE1NywgMSwgMTg0LCAxNTcsIDEsIAorICAgIDE5MSwgMTU3LCAxLCAyMDUsIDE1NywgMSwgMjMzLCAxMzUsIDE1NywgMSwgMjMyLCAxODQsIDE1NywgMSwgMjE0LCAyNywgCisgICAgMTU3LCAxLCAyMjAsIDEwMiwgMTU3LCAxLCAyMTgsIDIyMywgMTU3LCAxLCAyMDYsIDE1NywgMSwgMTYyLCAxNTcsIDUsIAorICAgIDIyNywgMjA1LCAxNTcsIDUsIDI1MywgMTc1LCAxNTcsIDI1LCA1LCAyNTUsIDczLCAxNTcsIDI1LCA1LCA3MywgMTU3LCAyNSwgCisgICAgNSwgMjM2LCAzMywgMTU3LCAyNSwgNSwgNzAsIDE1NywgMjUsIDUsIDIxNCwgMTE4LCAxNTcsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTU3LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTU3LCAyNSwgNSwgNzUsIDE1NywgMjUsIDUsIDI1NCwgMjAxLCAxNTcsIDI1LCAKKyAgICA1LCA3NiwgMTU3LCAyNSwgNSwgMjUzLCAxOTIsIDE1NywgNSwgMjEzLCAxNTIsIDE1NywgMjU0LCAyMDIsIDIzMywgMjMsIAorICAgIDc4LCAxNTcsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMTU3LCAxLCAyMjIsIDE3OSwgMTU3LCAxLCAyMjMsIDM5LCAxNTcsIAorICAgIDEsIDIxMCwgMTY4LCAxNTcsIDEsIDE0OSwgMjIyLCAxODAsIDE1NywgMSwgMTQ5LCAyMzIsIDE4NSwgMTU3LCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDE1NywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE1NywgMjEsIDIxMCwgODYsIDE1NywgMjEsIDExMCwgMTU3LCAKKyAgICAyMSwgMTA1LCAxNTcsIDIxLCAxNTgsIDE1NywgMjEsIDE2MSwgMTU3LCAyMSwgMTg5LCAxNTcsIDIxLCAxOTQsIDE1NywgMjEsIAorICAgIDE5OCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAyMDAsIDE1NywgMjM1LCAxNjEsIDE1NywgMSwgMjEyLCA2NSwgMTU3LCAKKyAgICAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMTU3LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMTU3LCAyNDQsIDIsIDEzNCwgMjI0LCAKKyAgICAxOSwgMTU3LCAyNDQsIDIsIDEyMywgMjE5LCAxMTcsIDE1NywgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAxNTcsIDI0NCwgMiwgCisgICAgMTM0LCAyMTksIDExNiwgMzYsIDUsIDI1NCwgNzUsIDM2LCA1LCAyMTMsIDE0NywgMzYsIDEsIDYxLCAzNiwgMSwgMjU1LCAKKyAgICA3MywgMzYsIDEsIDczLCAzNiwgMSwgMjM2LCAzMywgMzYsIDEsIDcwLCAzNiwgMSwgMjE0LCAxMTgsIDM2LCAxLCA3NSwgMzYsIAorICAgIDEsIDI0NSwgMjA5LCAzNiwgMSwgMjU0LCAyMDEsIDM2LCAxLCA3NiwgMzYsIDEsIDIyNiwgMTgzLCAzNiwgMSwgMjUzLCAKKyAgICAxOTIsIDM2LCAxLCAxNzYsIDM2LCAxLCAyMjksIDc3LCAzNiwgMSwgMjUxLCAzMywgMzYsIDEsIDIzNSwgMTQxLCAzNiwgMSwgCisgICAgMjI3LCAxNjUsIDM2LCAxLCAyMTUsIDE1NiwgMzYsIDEsIDIyOCwgMTEwLCAzNiwgMSwgMjE3LCAxMDUsIDM2LCAxLCAxOTcsIAorICAgIDM2LCAxLCAyMjgsIDkyLCAzNiwgMSwgMTkwLCAzNiwgMSwgMTg0LCAzNiwgMSwgMTkxLCAzNiwgMSwgMjA1LCAzNiwgMSwgCisgICAgMjIyLCAxNzksIDM2LCAxLCAyMzMsIDEzNSwgMzYsIDEsIDIzMiwgMTg0LCAzNiwgMSwgMjMyLCAxNzUsIDM2LCAxLCAyMTQsIAorICAgIDI3LCAzNiwgMSwgMjIwLCAxMDIsIDM2LCAxLCAyMTgsIDIyMywgMzYsIDEsIDIwNiwgMzYsIDEsIDE2MiwgMzYsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAzNiwgMjUsIDUsIDczLCAzNiwgMjUsIDUsIDIzNiwgMzMsIDM2LCAyNSwgNSwgNzAsIDM2LCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDM2LCAyNSwgNSwgNzUsIDM2LCAyNSwgNSwgMjQ1LCAyMDksIDM2LCAyNSwgNSwgMjU0LCAyMDEsIDM2LCAKKyAgICAyNSwgNSwgNzYsIDM2LCAyNSwgNSwgMjI2LCAxODMsIDM2LCAyNSwgNSwgMjUzLCAxOTIsIDM2LCA1LCAyMTMsIDE1MiwgMzYsIAorICAgIDIyNiwgMjA0LCAzNiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAzNiwgMjEsIDIxMCwgODYsIDM2LCAyMSwgMTEwLCAzNiwgCisgICAgMjEsIDEwNSwgMzYsIDIxLCAxNTgsIDM2LCAyMSwgMTYxLCAzNiwgMjEsIDE4OSwgMzYsIDIxLCAxOTQsIDM2LCAyMSwgMTk4LCAKKyAgICAzNiwgMjEsIDE5NSwgMzYsIDIxLCAyMDAsIDM2LCA1NCwgMjE2LCAyNDcsIDM2LCA1NCwgMTIzLCAyNDAsIDIxMCwgMzYsIAorICAgIDU0LCAxMjMsIDIxNiwgMTQ3LCAzNiwgMjQ4LCAxNDYsIDUwLCAzNiwgMjMwLCAxMzUsIDUwLCAzNiwgMjExLCA0NSwgNTAsIAorICAgIDM2LCAyNDgsIDg3LCA1MCwgMzYsIDI0OSwgMTM5LCA1MCwgMzYsIDI1MywgMjM4LCA3NywgNTAsIDM2LCAyMjIsIDExOCwgCisgICAgNTAsIDM2LCA1NCwgNTAsIDE0OCwgNSwgMjUwLCAyNTUsIDE0OCwgNSwgMjU0LCA3NSwgMTQ4LCA1LCAyMTMsIDE0NywgMTQ4LCAKKyAgICAxLCA2MSwgMTQ4LCAxLCAyNTUsIDczLCAxNDgsIDEsIDczLCAxNDgsIDEsIDIzNiwgMzMsIDE0OCwgMSwgNzAsIDE0OCwgMSwgCisgICAgMjE0LCAxMTgsIDE0OCwgMSwgMTQ5LCAxNTMsIDE0OCwgMSwgMTQ5LCAxNTYsIDE0OCwgMSwgNzUsIDE0OCwgMSwgMjQ1LCAKKyAgICAyMDksIDE0OCwgMSwgMjU0LCAyMDEsIDE0OCwgMSwgNzYsIDE0OCwgMSwgMjI2LCAxODMsIDE0OCwgMSwgMjUzLCAxOTIsIAorICAgIDE0OCwgMSwgMTc2LCAxNDgsIDEsIDIzNCwgMTMyLCAxNDgsIDEsIDI0MywgMTM1LCAxNDgsIDEsIDI0MiwgMjQ5LCAxNDgsIAorICAgIDEsIDIyOSwgNzcsIDE0OCwgMSwgMjUxLCAzMywgMTQ4LCAxLCAyNTAsIDE1NywgMTQ4LCAxLCAyMzUsIDE0MSwgMTQ4LCAxLCAKKyAgICAyMzUsIDExNCwgMTQ4LCAxLCAyMjcsIDE2NSwgMTQ4LCAxLCAyMTUsIDE1NiwgMTQ4LCAxLCAyMTUsIDE0NCwgMTQ4LCAxLCAKKyAgICAyNDgsIDEzNSwgMTQ4LCAxLCAyNDgsIDExOSwgMTQ4LCAxLCAyMjgsIDExMCwgMTQ4LCAxLCAyMTcsIDEwNSwgMTQ4LCAxLCAKKyAgICAyMTYsIDIwOCwgMTQ4LCAxLCAyNDgsIDIyMSwgMTQ4LCAxLCAyNDgsIDI1LCAxNDgsIDEsIDE5NywgMTQ4LCAxLCAxOTAsIAorICAgIDE0OCwgMSwgMjI1LCAxNDcsIDE0OCwgMSwgMjUyLCAxOTEsIDE0OCwgMSwgMjUyLCAxOCwgMTQ4LCAxLCAxODQsIDE0OCwgMSwgCisgICAgMTkxLCAxNDgsIDEsIDIwNSwgMTQ4LCAxLCAyMjIsIDE3OSwgMTQ4LCAxLCAyMzMsIDEzNSwgMTQ4LCAxLCAyMzIsIDE4NCwgCisgICAgMTQ4LCAxLCAyMTQsIDI3LCAxNDgsIDEsIDIyMCwgMTAyLCAxNDgsIDEsIDIxOCwgMjIzLCAxNDgsIDEsIDIwNiwgMTQ4LCAxLCAKKyAgICAxNjIsIDE0OCwgNSwgMjUzLCAxNzUsIDE0OCwgMjUsIDUsIDI1NSwgNzMsIDE0OCwgMjUsIDUsIDczLCAxNDgsIDI1LCA1LCAKKyAgICAyMzYsIDMzLCAxNDgsIDI1LCA1LCA3MCwgMTQ4LCAyNSwgNSwgMjE0LCAxMTgsIDE0OCwgMjUsIDUsIDE0OSwgMTUzLCAxNDgsIAorICAgIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNDgsIDI1LCA1LCA3NSwgMTQ4LCAyNSwgNSwgMjQ1LCAyMDksIDE0OCwgMjUsIDUsIAorICAgIDI1NCwgMjAxLCAxNDgsIDI1LCA1LCA3NiwgMTQ4LCAyNSwgNSwgMjI2LCAxODMsIDE0OCwgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAxNDgsIDUsIDIxMywgMTUyLCAxNDgsIDIzMywgMjMsIDc4LCAxNDgsIDI1NCwgMjAyLCAyMzMsIDIzLCA3OCwgMTQ4LCAxLCAKKyAgICAyMTUsIDE4MywgMTQ4LCAxLCAyNDYsIDM4LCAxNDgsIDEsIDE0OSwgMjIyLCAxODAsIDE0OCwgMSwgMTQ5LCAyMzIsIDE4NSwgCisgICAgMTQ4LCAyNSwgNSwgMTQ5LCAxNTYsIDE0OCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE0OCwgMjEsIDIxMCwgODYsIDE0OCwgCisgICAgMjEsIDExMCwgMTQ4LCAyMSwgMTA1LCAxNDgsIDIxLCAxNTgsIDE0OCwgMjEsIDE2MSwgMTQ4LCAyMSwgMTg5LCAxNDgsIDIxLCAKKyAgICAxOTQsIDE0OCwgMjEsIDE5OCwgMTQ4LCAyMSwgMTk1LCAxNDgsIDIxLCAyMDAsIDE0OCwgMjQ0LCAyLCAyMSwgMjEwLCA4NywgCisgICAgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMjMsIDMxLCAyMjYsIDIzNywgMjI0LCAKKyAgICAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTEzLCAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIAorICAgIDI0NCwgMiwgMjEsIDEzNCwgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMjMsIAorICAgIDMxLCAyNDUsIDQyLCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMTMsIDMxLCAyNDUsIDQyLCAyMjQsIAorICAgIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMzQsIDMxLCAyNDUsIDQyLCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAKKyAgICA1LCAyMTUsIDg0LCAxNjUsIDUsIDI1NCwgNzUsIDE2NSwgNSwgMjEzLCAxNDcsIDE2NSwgMSwgNjEsIDE2NSwgMSwgMjU1LCAKKyAgICA3MywgMTY1LCAxLCA3MywgMTY1LCAxLCAyMzYsIDMzLCAxNjUsIDEsIDcwLCAxNjUsIDEsIDIxNCwgMTE4LCAxNjUsIDEsIAorICAgIDE0OSwgMTUzLCAxNjUsIDEsIDE0OSwgMTU2LCAxNjUsIDEsIDc1LCAxNjUsIDEsIDI0NSwgMjA5LCAxNjUsIDEsIDI1NCwgCisgICAgMjAxLCAxNjUsIDEsIDc2LCAxNjUsIDEsIDIyNiwgMTgzLCAxNjUsIDEsIDI1MywgMTkyLCAxNjUsIDEsIDE3NiwgMTY1LCAxLCAKKyAgICAyMzQsIDEzMiwgMTY1LCAxLCAyNDMsIDEzNSwgMTY1LCAxLCAyNDIsIDI0OSwgMTY1LCAxLCAyMjksIDc3LCAxNjUsIDEsIAorICAgIDI1MSwgMzMsIDE2NSwgMSwgMjUwLCAxNTcsIDE2NSwgMSwgMjM1LCAxNDEsIDE2NSwgMSwgMjM1LCAxMTQsIDE2NSwgMSwgCisgICAgMjI3LCAxNjUsIDE2NSwgMSwgMjE1LCAxNTYsIDE2NSwgMSwgMjE1LCAxNDQsIDE2NSwgMSwgMjQ4LCAxMzUsIDE2NSwgMSwgCisgICAgMjQ4LCAxMTksIDE2NSwgMSwgMjI4LCAxMTAsIDE2NSwgMSwgMjE3LCAxMDUsIDE2NSwgMSwgMjE2LCAyMDgsIDE2NSwgMSwgCisgICAgMjQ4LCAyMjEsIDE2NSwgMSwgMjQ4LCAyNSwgMTY1LCAxLCAxOTcsIDE2NSwgMSwgMTkwLCAxNjUsIDEsIDIyNSwgMTQ3LCAKKyAgICAxNjUsIDEsIDI1MiwgMTkxLCAxNjUsIDEsIDI1MiwgMTgsIDE2NSwgMSwgMTg0LCAxNjUsIDEsIDE5MSwgMTY1LCAxLCAyMDUsIAorICAgIDE2NSwgMSwgMjIyLCAxNzksIDE2NSwgMSwgMjMzLCAxMzUsIDE2NSwgMSwgMjMyLCAxODQsIDE2NSwgMSwgMjE0LCAyNywgCisgICAgMTY1LCAxLCAyMjAsIDEwMiwgMTY1LCAxLCAyMTgsIDIyMywgMTY1LCAxLCAyMDYsIDE2NSwgMSwgMTYyLCAxNjUsIDUsIAorICAgIDIyNywgMjA1LCAxNjUsIDUsIDI1MywgMTc1LCAxNjUsIDI1LCA1LCAyNTUsIDczLCAxNjUsIDI1LCA1LCA3MywgMTY1LCAyNSwgCisgICAgNSwgMjM2LCAzMywgMTY1LCAyNSwgNSwgNzAsIDE2NSwgMjUsIDUsIDIxNCwgMTE4LCAxNjUsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTY1LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTY1LCAyNSwgNSwgNzUsIDE2NSwgMjUsIDUsIDI0NSwgMjA5LCAxNjUsIDI1LCAKKyAgICA1LCAyNTQsIDIwMSwgMTY1LCAyNSwgNSwgNzYsIDE2NSwgMjUsIDUsIDIyNiwgMTgzLCAxNjUsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMTY1LCA1LCAyMTMsIDE1MiwgMTY1LCAyMzMsIDIzLCA3OCwgMTY1LCAyNTQsIDIwMiwgMjMzLCAyMywgNzgsIDE2NSwgMSwgCisgICAgMjQ0LCAxOTYsIDE2NSwgMSwgMTQ5LCAyMjIsIDE4MCwgMTY1LCAxLCAxNDksIDIzMiwgMTg1LCAxNjUsIDI1LCA1LCAxNDksIAorICAgIDE1NiwgMTY1LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTY1LCAyMSwgMjEwLCA4NiwgMTY1LCAyMSwgMTEwLCAxNjUsIDIxLCAKKyAgICAxMDUsIDE2NSwgMjEsIDE1OCwgMTY1LCAyMSwgMTYxLCAxNjUsIDIxLCAxODksIDE2NSwgMjEsIDE5NCwgMTY1LCAyMSwgCisgICAgMTk4LCAxNjUsIDIxLCAxOTUsIDE2NSwgMjEsIDIwMCwgMTY1LCA1LCAyMzUsIDEwMiwgMTY1LCA1LCAyMTQsIDE2MSwgMTM2LCAKKyAgICA1LCAyNTQsIDc1LCAxMzYsIDUsIDIxMywgMTQ3LCAxMzYsIDEsIDYxLCAxMzYsIDEsIDI1NSwgNzMsIDEzNiwgMSwgNzMsIAorICAgIDEzNiwgMSwgMjM2LCAzMywgMTM2LCAxLCA3MCwgMTM2LCAxLCAyMTQsIDExOCwgMTM2LCAxLCAxNDksIDE1MywgMTM2LCAxLCAKKyAgICAxNDksIDE1NiwgMTM2LCAxLCA3NSwgMTM2LCAxLCAyNDUsIDIwOSwgMTM2LCAxLCAyNTQsIDIwMSwgMTM2LCAxLCA3NiwgCisgICAgMTM2LCAxLCAyMjYsIDE4MywgMTM2LCAxLCAyNTMsIDE5MiwgMTM2LCAxLCAxNzYsIDEzNiwgMSwgMjM0LCAxMzIsIDEzNiwgCisgICAgMSwgMjQzLCAxMzUsIDEzNiwgMSwgMjQyLCAyNDksIDEzNiwgMSwgMjI5LCA3NywgMTM2LCAxLCAyNTEsIDMzLCAxMzYsIDEsIAorICAgIDI1MCwgMTU3LCAxMzYsIDEsIDIzNSwgMTQxLCAxMzYsIDEsIDIzNSwgMTE0LCAxMzYsIDEsIDIyNywgMTY1LCAxMzYsIDEsIAorICAgIDIxNSwgMTU2LCAxMzYsIDEsIDIxNSwgMTQ0LCAxMzYsIDEsIDI0OCwgMTM1LCAxMzYsIDEsIDI0OCwgMTE5LCAxMzYsIDEsIAorICAgIDIyOCwgMTEwLCAxMzYsIDEsIDIxNywgMTA1LCAxMzYsIDEsIDIxNiwgMjA4LCAxMzYsIDEsIDI0OCwgMjIxLCAxMzYsIDEsIAorICAgIDI0OCwgMjUsIDEzNiwgMSwgMTk3LCAxMzYsIDEsIDIyOCwgOTIsIDEzNiwgMSwgMTkwLCAxMzYsIDEsIDIyNSwgMTQ3LCAKKyAgICAxMzYsIDEsIDI1MiwgMTkxLCAxMzYsIDEsIDI1MiwgMTgsIDEzNiwgMSwgMTg0LCAxMzYsIDEsIDE5MSwgMTM2LCAxLCAyMDUsIAorICAgIDEzNiwgMSwgMjIyLCAxNzksIDEzNiwgMSwgMjMzLCAxMzUsIDEzNiwgMSwgMjMyLCAxODQsIDEzNiwgMSwgMjMyLCAxNzUsIAorICAgIDEzNiwgMSwgMjE0LCAyNywgMTM2LCAxLCAyMjAsIDEwMiwgMTM2LCAxLCAyMTgsIDIyMywgMTM2LCAxLCAyMDYsIDEzNiwgMSwgCisgICAgMTYyLCAxMzYsIDEsIDIxNSwgMTI1LCAxMzYsIDUsIDI1MywgMTc1LCAxMzYsIDI1LCA1LCAyNTUsIDczLCAxMzYsIDI1LCA1LCAKKyAgICA3MywgMTM2LCAyNSwgNSwgMjM2LCAzMywgMTM2LCAyNSwgNSwgNzAsIDEzNiwgMjUsIDUsIDIxNCwgMTE4LCAxMzYsIDI1LCAKKyAgICA1LCAxNDksIDE1MywgMTM2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTM2LCAyNSwgNSwgNzUsIDEzNiwgMjUsIDUsIDI0NSwgCisgICAgMjA5LCAxMzYsIDI1LCA1LCAyNTQsIDIwMSwgMTM2LCAyNSwgNSwgNzYsIDEzNiwgMjUsIDUsIDIyNiwgMTgzLCAxMzYsIDI1LCAKKyAgICA1LCAyNTMsIDE5MiwgMTM2LCA1LCAyMTMsIDE1MiwgMTM2LCAxLCA1OSwgMjIzLCA3MywgMTM2LCAyNTMsIDE5MywgMjMzLCAKKyAgICAyMywgNzgsIDEzNiwgMSwgMTQ5LCAyMjIsIDE4MCwgMTM2LCAxLCAxNDksIDIzMiwgMTg1LCAxMzYsIDI1LCA1LCAxNDksIAorICAgIDE1NiwgMTM2LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTM2LCAyMSwgMjEwLCA4NiwgMTM2LCAyMSwgMTEwLCAxMzYsIDIxLCAKKyAgICAxMDUsIDEzNiwgMjEsIDE1OCwgMTM2LCAyMSwgMTYxLCAxMzYsIDIxLCAxODksIDEzNiwgMjEsIDE5NCwgMTM2LCAyMSwgCisgICAgMTk4LCAxMzYsIDIxLCAxOTUsIDEzNiwgMjEsIDIwMCwgMTM2LCA1NCwgMjE2LCAyNDcsIDEzNiwgNTQsIDEyMywgMjQwLCAKKyAgICAyMTAsIDEzNiwgNTQsIDEyMywgMjE2LCAxNDcsIDEzNiwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDEzNiwgMjQ0LCAyLCAxMjMsIAorICAgIDI0MiwgMjcsIDEzNiwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDEzNiwgMjQ4LCAxNTAsIDc4LCAxMzYsIDEsIDI1MCwgOTksIAorICAgIDIyOCwgMTExLCAxMzYsIDEsIDI1MCwgOTksIDIzMCwgMjUsIDEzNiwgMSwgMjUwLCA5OSwgMjIyLCAxODAsIDEzNiwgMSwgCisgICAgMjUwLCA5OSwgMTU2LCAxMzYsIDEsIDI1MCwgOTksIDIzMiwgMTg1LCAxMzYsIDEsIDI1MCwgOTksIDIzNSwgMjMsIDE3NSwgCisgICAgNSwgMjU0LCA3NCwgMTc1LCA1LCAyMTMsIDE0NiwgMTc1LCAxLCAyNTMsIDE2NSwgMTc1LCAxLCAyNTUsIDI3LCAxNzUsIDEsIAorICAgIDI1NCwgMjIzLCAxNzUsIDEsIDI1NCwgMjM4LCAxNzUsIDEsIDIzNSwgMTUxLCAxNzUsIDEsIDIzNiwgMzIsIDE3NSwgMSwgCisgICAgMjE0LCAxMTAsIDE3NSwgMSwgMjE0LCAxMTIsIDE3NSwgMSwgMjM1LCAxNzMsIDE3NSwgMSwgMjM1LCAxNzQsIDE3NSwgMSwgCisgICAgMjM2LCAxOCwgMTc1LCAxLCAyMzYsIDIwLCAxNzUsIDEsIDI0NSwgMTcsIDE3NSwgMSwgMjQ1LCAyMDQsIDE3NSwgMSwgMjU0LCAKKyAgICAxODgsIDE3NSwgMSwgMjI2LCAxMDgsIDE3NSwgMSwgMjI2LCAxNzcsIDE3NSwgMSwgMjUzLCAxNzgsIDE3NSwgMSwgMjU0LCAKKyAgICAxNDYsIDIzNCwgMTg3LCAxNzUsIDEsIDIzMSwgMjA5LCAyMzQsIDE4NywgMTc1LCAxLCAyNTQsIDE0NiwgMjQzLCA4MiwgCisgICAgMTc1LCAxLCAyMzEsIDIwOSwgMjQzLCA4MiwgMTc1LCAxLCAyMzQsIDIyOSwgMjI5LCAyMjIsIDE3NSwgMSwgMjIxLCAyMzYsIAorICAgIDI0MywgODIsIDE3NSwgMSwgMjU0LCAxNDYsIDI1MCwgMjE2LCAxNzUsIDEsIDIzMSwgMjA5LCAyNTAsIDIxNiwgMTc1LCAxLCAKKyAgICAyNTQsIDE0NiwgMjM1LCAxMjcsIDE3NSwgMSwgMjMxLCAyMDksIDIzNSwgMTI3LCAxNzUsIDEsIDIxNywgOTgsIDIyOSwgCisgICAgMjIyLCAxNzUsIDEsIDIxNywgOTgsIDIyMSwgMjM1LCAyMjksIDIyMywgMTc1LCAxLCAyMjEsIDIzNiwgMjM1LCAxMjcsIAorICAgIDE3NSwgMSwgMjU0LCAxNDYsIDIxNSwgMTUyLCAxNzUsIDEsIDIzMSwgMjA5LCAyMTUsIDE1MiwgMTc1LCAxLCAyNTQsIDE0NiwgCisgICAgMjQ4LCAxMjYsIDE3NSwgMSwgMjMxLCAyMDksIDI0OCwgMTI2LCAxNzUsIDEsIDIzMCwgNTMsIDIyOSwgMTgwLCAxNzUsIDEsIAorICAgIDIyMSwgMjM2LCAyNDgsIDEyNiwgMTc1LCAxLCAyNTQsIDE0NiwgMjE3LCAzMCwgMTc1LCAxLCAyMzEsIDIwOSwgMjE3LCAzMCwgCisgICAgMTc1LCAxLCAyNTQsIDE0NiwgMjQ4LCAxNDQsIDE3NSwgMSwgMjMxLCAyMDksIDI0OCwgMTQ0LCAxNzUsIDEsIDI0OCwgMTc0LCAKKyAgICAyMjksIDE4MCwgMTc1LCAxLCAyMjEsIDIzNiwgMjQ4LCAxNDQsIDE3NSwgMSwgMjU0LCAxNDYsIDIyNSwgMjI4LCAxNzUsIDEsIAorICAgIDIzMSwgMjA5LCAyMjUsIDIyOCwgMTc1LCAxLCAyNTQsIDE0NiwgMjUyLCAxMTIsIDE3NSwgMSwgMjMxLCAyMDksIDI1MiwgCisgICAgMTEyLCAxNzUsIDEsIDIzMSwgMTMxLCAxNzUsIDEsIDI1NCwgMTMxLCAyNTIsIDExMiwgMTc1LCAxLCAyMTEsIDUxLCAxNzUsIAorICAgIDEsIDIyMywgMTMzLCAxNzUsIDEsIDI0OCwgMTc0LCAyMzMsIDY3LCAxNzUsIDEsIDIxNCwgMSwgMTc1LCAxLCAyMTcsIDk4LCAKKyAgICAyMjEsIDIxMCwgMTc1LCAxLCAyMzAsIDUzLCAyMjEsIDIxMCwgMTc1LCAxLCAyNDgsIDE3NCwgMjIxLCAyMTAsIDE3NSwgMSwgCisgICAgMjQxLCAyNDIsIDE3NSwgMSwgMjMwLCA1MywgMjMzLCA2NywgMTc1LCAxLCAyNDQsIDE1NiwgMTc1LCA1LCAyNTQsIDE3NywgCisgICAgMTc1LCAyNSwgNSwgMjU0LCAyMzMsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyNTQsIDI0MCwgMTc1LCAyNSwgNSwgMjQ3LCAKKyAgICAyMjgsIDI1NCwgMjQwLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjM1LCAxNzAsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMzUsIAorICAgIDE3MCwgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDIyNiwgODgsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMjYsIDg4LCAxNzUsIAorICAgIDI1LCA1LCAyNDMsIDEyNCwgMTc1LCAyNSwgNSwgMjM0LCAxNSwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIzNCwgMTUsIDE3NSwgCisgICAgMjUsIDUsIDIzNCwgMTcsIDI0OCwgNjcsIDE3NSwgMjUsIDUsIDIzNCwgMTYsIDI0MiwgNDcsIDI1NCwgMjMzLCAxNzUsIDI1LCAKKyAgICA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAyNDcsIDIyOCwgMjU0LCAyMzMsIDE3NSwgMjUsIDUsIDIzNCwgMTYsIDI0MiwgNDcsIAorICAgIDI0MywgODEsIDE3NSwgMjUsIDUsIDI0MywgODEsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyNDMsIDEyNCwgMTc1LCAyNSwgNSwgCisgICAgMjQ3LCAyMjgsIDI0MywgODEsIDE3NSwgMjI0LCAxNDEsIDIzMywgMjA3LCAxNjgsIDEzNSwgMjM0LCAyOSwgMjM0LCAyNDYsIAorICAgIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCAxMjgsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCA5OSwgMTY4LCAxMzUsIDIzNCwgCisgICAgMTA2LCAyMzQsIDk1LCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgMTAzLCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIyMywgMTU0LCAKKyAgICAxNjgsIDEzNSwgMjI5LCA1LCAyMjgsIDI0OCwgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgMTQ3LCAxNjgsIDEzNSwgMjUwLCAKKyAgICA4NywgMjUwLCA5NSwgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgMTQ2LCAxNjgsIDEzNSwgMjE5LCA1OSwgMjE5LCA1OCwgCisgICAgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgODMsIDE2OCwgMTM1LCAyMTAsIDI0NSwgMjEwLCAyNTIsIDE2OCwgMTM1LCAyNDcsIAorICAgIDE0NiwgMjUwLCAxNTQsIDE2OCwgMTM1LCAyMTYsIDQyLCAyMjUsIDIzOCwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDIwMCwgCisgICAgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMjksIDIwMSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMjUsIDExMSwgMTY4LCAxMzUsIAorICAgIDIyOCwgNzUsIDIyOSwgOTgsIDE2OCwgMTM1LCAyNDcsIDE0NiwgMjQ4LCA2OCwgMTY4LCAxMzUsIDIxNiwgNDIsIDIxNywgCisgICAgNTUsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAxMzEsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAyMDQsIDE2OCwgMTM1LCAKKyAgICAyMTYsIDE1NywgMjE2LCAxNTQsIDE2OCwgMTM1LCAyMjgsIDc1LCAyMjcsIDIzNywgMTY4LCAxMzUsIDI1MSwgMjA2LCAyNTIsIAorICAgIDE2NCwgMTY4LCAxMzUsIDIyNSwgMTcsIDIyNSwgNDIsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjI1LCAxMTMsIDE2OCwgMTM1LCAKKyAgICAyNDQsIDQ0LCAyNDQsIDE5NiwgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjUsIDE0MSwgMTY4LCAxMzUsIDI0NCwgNDQsIDI0NCwgCisgICAgMTczLCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyMSwgMjQ3LCAxNjgsIDEzNSwgMjMwLCAxNjIsIDE4NCwgMTY4LCAxMzUsIAorICAgIDIxMCwgMjQ1LCAyMTEsIDc5LCAxNjgsIDEzNSwgMjIyLCAyMTIsIDIyMiwgMTM5LCAxNjgsIDEzNSwgMjIyLCAxNDAsIDE2OCwgCisgICAgMTM1LCAyMzIsIDE1NywgMjMyLCAyMDYsIDE2OCwgMTM1LCAyMzIsIDk4LCAxNjgsIDEzNSwgMjExLCAyMjgsIDIxMiwgNjEsIAorICAgIDE2OCwgMTM1LCAyMTksIDU5LCAyMjIsIDYsIDE2OCwgMTM1LCAyMTksIDU5LCAyMjIsIDExNCwgMTY4LCAxMzUsIDIxOSwgCisgICAgNTksIDIxOCwgODIsIDE2OCwgMTM1LCAyNDEsIDY5LCAyNDEsIDE1OSwgMTY4LCAxMzUsIDIzMiwgMTU3LCAyNTAsIDY4LCAKKyAgICAxNjgsIDEzNSwgMTQ0LCAyNTQsIDExNSwgMTY4LCAxMzUsIDI0MSwgNjksIDIyOCwgNzAsIDE2OCwgMTM1LCAyMjYsIDY4LCAKKyAgICAxNjgsIDEzNSwgMjIxLCAyMzAsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDQsIDI0MiwgMTcsIDE2OCwgMTM1LCAyMjEsIDIzMCwgCisgICAgMjU1LCA3MywgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDEzNiwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3MywgMTY4LCAxMzUsIAorICAgIDIyMSwgMjMwLCAyMzYsIDMzLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgCisgICAgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDcwLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgMTE4LCAxNjgsIDEzNSwgMjI1LCAKKyAgICAxMjQsIDE2OCwgMjQ5LCA5OCwgMTYsIDI1MiwgMTY1LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDc1LCAxNjgsIDEzNSwgMjIxLCAKKyAgICAyMzAsIDI1NCwgMjQzLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDc2LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMjAyLCAyMzEsIAorICAgIDE5OCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDIwMiwgMjMxLCAxOTksIDE2OCwgMTM1LCAyMzMsIDEwNiwgMTY4LCAKKyAgICAxMzUsIDIzMSwgMTk1LCAxNjgsIDEzNSwgMjMxLCAxOTYsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjQ1LCAxODAsIDE2OCwgCisgICAgMTM1LCAyMzEsIDIwNCwgMjE2LCAxNTYsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjE1LCAyMjgsIDE2OCwgMTM1LCAyMzEsIAorICAgIDIwNCwgMjUwLCAxMzUsIDE2OCwgMTM1LCAyMTYsIDE5OCwgMTY4LCAxMzUsIDIyOCwgMjA1LCAxNjgsIDEzNSwgMjExLCA3MywgCisgICAgMTY4LCAxMzUsIDI0NCwgMzUsIDE2OCwgMjEsIDIxMCwgODYsIDE2OCwgMjEsIDExMCwgMTY4LCAyMSwgMTA1LCAxNjgsIDIxLCAKKyAgICAxNTgsIDE2OCwgMjEsIDE2MSwgMTY4LCAyMSwgMTg5LCAxNjgsIDIxLCAxOTQsIDE2OCwgMjEsIDE5OCwgMTY4LCAyMSwgCisgICAgMTk1LCAxNjgsIDIxLCAyMDAsIDE2OCwgMTM1LCAyNTQsIDExMSwgMTY4LCAxMzUsIDIzNCwgMTA0LCAyMDksIDIwOSwgMSwgCisgICAgMjM0LCAyOCwgMjA5LCAyMDksIDEsIDIzNCwgMTA2LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjM0LCAxMDYsIDIxNywgNjIsIAorICAgIDIwOSwgMjA5LCAxLCAyMjksIDQsIDIwOSwgMjA5LCAxLCAyNDksIDIzOCwgMjA5LCAyMDksIDEsIDIxOSwgNTksIDIxNywgCisgICAgNjIsIDIwOSwgMjA5LCAxLCAyMjcsIDEzNCwgMjA5LCAyMDksIDEsIDI0NywgMTQ1LCAyMDksIDIwOSwgMSwgMTExLCAyMDksIAorICAgIDIwOSwgMSwgMjE2LCAxNTcsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMTYsIDE1NywgMjE3LCA2MiwgMjA5LCAyMDksIDEsIAorICAgIDIyOCwgNzQsIDIwOSwgMjA5LCAxLCAyNTEsIDIwNSwgMjA5LCAyMDksIDEsIDIyNSwgMTYsIDIwOSwgMjA5LCAxLCAyMjUsIAorICAgIDEyMiwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDIxNywgNjIsIDIwOSwgMjA5LCAxLCAyMjUsIDEyMiwgMjE3LCAKKyAgICA2MiwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMzAsIDE2MSwgMjA5LCAyMDksIDEsIAorICAgIDIxMCwgMjQ0LCAyMDksIDIwOSwgMSwgMjMyLCAxNTcsIDIzMiwgMjA2LCAyMDksIDIwOSwgMSwgMjMyLCAxNTcsIDIzMiwgCisgICAgMTIxLCAyMDksIDIwOSwgMSwgMjExLCAyMjcsIDIwOSwgMjA5LCAxLCAyMTksIDU5LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgCisgICAgMjQxLCA2OSwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDc2LCAyMDksIDIwOSwgMSwgMjQxLCA2OSwgMjE3LCA2MiwgMjA5LCAKKyAgICAyMDksIDI0NSwgMTYzLCAyMDksIDIwOSwgMjUsIDUsIDYxLCAyMDksIDIwOSwgMjUsIDUsIDIzMSwgMjA0LCAyMzQsIDIzNCwgCisgICAgMjA5LCAyMDksIDI1LCA1LCAyNTUsIDczLCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMTM2LCAyMDksIDIwOSwgMjUsIDUsIDczLCAKKyAgICAyMDksIDIwOSwgMjUsIDUsIDIzNiwgMzMsIDIwOSwgMjA5LCAyNSwgNSwgMjExLCAxMTcsIDIwOSwgMjA5LCAyNSwgNSwgCisgICAgMjEwLCAxNjksIDIwOSwgMjA5LCAyNSwgNSwgNzAsIDIwOSwgMjA5LCAyNSwgNSwgMjE0LCAxMTgsIDIwOSwgMjA5LCAyNSwgCisgICAgNSwgMjMxLCAyMDQsIDIzNCwgMTMsIDIwOSwgMjA5LCAyMjAsIDE0NSwgNSwgMjMyLCAxNTYsIDIwOSwgMjA5LCAyMjAsIAorICAgIDE0NSwgNSwgMjI3LCAxMzQsIDIwOSwgMjA5LCAyNSwgNSwgNzUsIDIwOSwgMjA5LCAyNSwgNSwgMjQ1LCAxOTUsIDIwOSwgCisgICAgMjA5LCAyNSwgNSwgNzYsIDIwOSwgMjA5LCAyNSwgNSwgMjUzLCAxNjcsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAyMDEsIAorICAgIDIwOSwgMjA5LCAyMzQsIDI5LCAyMzMsIDEzNSwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDQsIDI0NSwgMTgwLCAyMDksIDIwOSwgCisgICAgMTM4LCAyMzEsIDIwNCwgMjE2LCAxNTYsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA0LCAyMTYsIDExNywgMjA5LCAyMDksIAorICAgIDEzOCwgMjMxLCAyMDQsIDI1MCwgMjIzLCAyMDksIDIwOSwgMjUxLCA0LCA3OCwgMjA5LCAyMDksIDIyOCwgMjE0LCAyMDksIAorICAgIDIwOSwgMjEsIDIxMCwgODYsIDIwOSwgMjA5LCAyMSwgMTEwLCAyMDksIDIwOSwgMjEsIDEwNSwgMjA5LCAyMDksIDIxLCAKKyAgICAxNTgsIDIwOSwgMjA5LCAyMSwgMTYxLCAyMDksIDIwOSwgMjEsIDE4OSwgMjA5LCAyMDksIDIxLCAxOTQsIDIwOSwgMjA5LCAKKyAgICAyMSwgMTk4LCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIDIxLCAyMDAsIDIwOSwgMjA5LCAyNDEsIDY5LCAyMjgsIAorICAgIDc0LCAyMDksIDIwOSwgMjQxLCA2OSwgMjMwLCAxNjEsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNywgMjQyLCAxNzQsIDIwOSwgCisgICAgMjA5LCAxLCAyMzQsIDEwNywgMjI3LCAxMzQsIDYzLCAzLCAyMjYsIDIwNCwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgCisgICAgMjMwLCAyNDgsIDIxNSwgMTg5LCA2MSwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgMjMwLCAyNDgsIDI1NSwgMTU5LCAKKyAgICAyMjIsIDIxNiwgMjUyLCA3NywgMTg0LCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAyMzAsIDI0OCwgMjU1LCAxNTksIAorICAgIDI0MiwgMTE1LCAyMTUsIDE3MywgMTg0LCA2MywgMTY0LCA2NSwgMjExLCAwLCAyMzAsIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgCisgICAgMTY0LCAyNDksIDI1MiwgMjExLCAwLCAyMzAsIDI0OCwgMjIwLCAxMDksIDE4NCwgNjMsIDE2NCwgMjUwLCAyMzksIDIxMSwgCisgICAgMCwgMjMwLCAyNDgsIDIyNSwgMTEyLCAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNDgsIDIxNSwgMTczLCAKKyAgICAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIyMSwgMjA4LCAyMjAsIDk1LCA2MywgMTY0LCAyNTEsIDEyOCwgMjExLCAwLCAyMzAsIAorICAgIDI0NywgNjMsIDE2NCwgMjUxLCAyMjMsIDIyMCwgMywgMjExLCAwLCAyMzAsIDI0NywgNjMsIDE2NCwgMjM1LCAxOTcsIDIxNSwgCisgICAgMTcyLCA2MywgMTY0LCAyNDgsIDYxLCAyMTUsIDE3MywgMjUxLCAxMjcsIDYzLCAxNjQsIDIyMCwgOTUsIDYzLCAxNjQsIAorICAgIDIyNywgMTM5LCAyMjAsIDk1LCA2MywgMTY0LCAyMTUsIDE3MywgMjIwLCA5NSwgNjMsIDE2NCwgMjI3LCAxMzksIDIxNSwgCisgICAgMTczLCAyMjAsIDk1LCA2MywgMTY0LCAyMjIsIDIzNiwgMjUwLCAxMjIsIDIxOCwgMjM2LCAyMjAsIDk1LCA2MywgMTY0LCAKKyAgICAyMjMsIDQyLCAyNDIsIDE0NiwgMjIwLCA5NSwgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjMxLCAKKyAgICA5MiwgMTk5LCAyNTEsIDcsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTUsIDE3MiwgNjMsIDIzMiwgMTQ0LCA1LCAyNTAsIDE1NSwgCisgICAgMjIyLCAxNDMsIDYzLCAyMzIsIDE0NCwgNSwgMjMyLCAyNTIsIDIyMiwgMTQzLCA2MywgMjUzLCAyMTIsIDUsIDIyMCwgMTA1LCAKKyAgICAyNDMsIDY1LCAyNTUsIDE2NCwgMjIyLCAxNDMsIDYzLCAyNTMsIDIxMiwgNSwgMjU1LCAxNjEsIDE5MCwgNjMsIDI1MywgCisgICAgMjEyLCA1LCAyMjEsIDE4MiwgMjE1LCAxNjgsIDYzLCA1LCAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MywgNjQsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MiwgMTc2LCA2MywgNSwgMjIzLCAxMzAsIDI0NywgMTU5LCAyNDIsIDExNiwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQzLCA2NCwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxNzYsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDIyMywgMTMwLCAyMjksIDIxOCwgNjMsIDIxLCAyMTAsIDg2LCA2MywgMjEsIDExMCwgNjMsIAorICAgIDIxLCAxMDUsIDYzLCAyMSwgMTU4LCA2MywgMjEsIDE2MSwgNjMsIDIxLCAxODksIDYzLCAyMSwgMTk0LCA2MywgMjEsIDE5OCwgCisgICAgNjMsIDIxLCAxOTUsIDYzLCAyMSwgMjAwLCA2MywgMjEsIDE2MywgMTEwLCA2MywgMjEsIDE2MywgMTA1LCA2MywgMjEsIAorICAgIDE2MywgMTU4LCA2MywgMjEsIDE2MywgMTYxLCA2MywgMjEsIDE2MywgMTg5LCA2MywgMjEsIDE2MywgMTk0LCA2MywgMjEsIAorICAgIDE2MywgMTk4LCA2MywgMjEsIDE2MywgMTk1LCA2MywgMjEsIDE2MywgMjAwLCA2MywgMjEsIDE2MywgMjEwLCA4NiwgNjMsIAorICAgIDE2NCwgMjUxLCAxMzAsIDIyMiwgMTQzLCA2MywgMTY0LCAyMjksIDY4LCAyNTEsIDY4LCAyMjcsIDE0OSwgMjEwLCAyNSwgCisgICAgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjUxLCA2OSwgMjMwLCAyMDIsIDI1MSwgNywgNjMsIAorICAgIDE2NCwgMjI5LCA2OCwgMjUxLCA2OCwgMjIwLCAxMDYsIDIyMiwgMTQzLCA2MywgMTY0LCAyNTAsIDEzMiwgMjMwLCAyNDcsIAorICAgIDYzLCAxNjQsIDIxNSwgMTg0LCAyNTUsIDE2MCwgNjMsIDE2NCwgMjQyLCAxMDAsIDIyMiwgMTQ0LCAyNDIsIDYzLCA2MywgCisgICAgMTY0LCAyNDIsIDEwMCwgMjIyLCAxNDQsIDI0MiwgNjksIDYzLCAxNjQsIDI1NCwgMTE2LCAyMzQsIDEyMywgMjQyLCA2MywgCisgICAgNjMsIDE2NCwgMjU0LCAxMTYsIDIzNCwgMTIzLCAyNDIsIDY5LCA2MywgNSwgMjExLCA2NSwgMjE1LCAxNzEsIDYzLCA1LCAKKyAgICAyMzEsIDE2NywgMjE1LCAxNzEsIDYzLCAxLCAxNzYsIDYzLCAxLCAyMzQsIDEzMiwgNjMsIDEsIDI0MywgMTM1LCA2MywgMSwgCisgICAgMjQyLCAyNDksIDYzLCAxLCAyMjksIDc3LCA2MywgMSwgMjUxLCAzMywgNjMsIDEsIDI1MCwgMTU3LCA2MywgMSwgMjM1LCAKKyAgICAxNDEsIDYzLCAxLCAyMjcsIDE2NSwgNjMsIDEsIDIxNSwgMTU2LCA2MywgMSwgMjE1LCAxNDQsIDYzLCAxLCAyNDgsIDEzNSwgCisgICAgNjMsIDEsIDI0OCwgMTE5LCA2MywgMSwgMjI4LCAxMTAsIDYzLCAxLCAyMTcsIDEwNSwgNjMsIDEsIDIxNiwgMjA4LCA2MywgCisgICAgMSwgMjQ4LCAyMjEsIDYzLCAxLCAyNDgsIDI1LCA2MywgMSwgMTk3LCA2MywgMSwgMTkwLCA2MywgMSwgMjI1LCAxNDcsIDYzLCAKKyAgICAxLCAyNTIsIDE5MSwgNjMsIDEsIDI1MiwgMTgsIDYzLCAxLCAxODQsIDYzLCAxLCAyMTUsIDE4MywgNjMsIDEsIDIxNSwgCisgICAgMTc1LCA2MywgMSwgMjQ2LCAzOCwgNjMsIDEsIDI0NiwgMzMsIDYzLCAxLCAyMTIsIDY1LCA2MywgMSwgMjEwLCA4MiwgNjMsIAorICAgIDEsIDIxMCwgMTE2LCA2MywgMSwgMjU1LCAxNjYsIDYzLCAxLCAxOTEsIDYzLCAxLCAyMDUsIDYzLCAxLCAyMzMsIDEzNSwgCisgICAgNjMsIDEsIDIyMCwgMTAyLCA2MywgMSwgMjE4LCAyMjMsIDYzLCAxLCAyMDYsIDYzLCAxLCAxNjIsIDYzLCAxLCA2MSwgNjMsIAorICAgIDEsIDIzMywgMjMxLCA2MywgMSwgMjQ0LCA3NywgMjA1LCA2MywgMSwgMjM0LCA0NiwgNjMsIDEsIDIyMiwgMTc5LCA2MywgCisgICAgMjUsIDUsIDI1NSwgNzMsIDYzLCAyNSwgNSwgNzMsIDYzLCAyNSwgNSwgMjM2LCAzMywgNjMsIDI1LCA1LCA3MCwgNjMsIDI1LCAKKyAgICA1LCAyMTQsIDExOCwgNjMsIDI1LCA1LCAxNDksIDE1MywgNjMsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA2MywgMjUsIDUsIAorICAgIDE0OSwgMTU2LCA2MywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDYzLCAyNSwgNSwgNzUsIDYzLCAyNSwgNSwgMjQ1LCAyMDksIAorICAgIDYzLCAyNSwgNSwgNzYsIDYzLCAyNSwgNSwgMjI2LCAxODMsIDYzLCA1LCAyMjIsIDIyMSwgMjE4LCA4NCwgMjI5LCA3OCwgCisgICAgMjIyLCAyMTEsIDYzLCA1LCAyMjIsIDIxNiwgMjUyLCA3NiwgNjMsIDI1LCA1LCAyMjMsIDQ5LCA3MywgNjMsIDI1LCA1LCAKKyAgICAyMjMsIDQ5LCAyMzYsIDMzLCA2MywgNSwgMjI3LCAxNDksIDIxMCwgMjYsIDIyOSwgMjI2LCAyNDgsIDIyMSwgNjMsIDUsIAorICAgIDIxOSwgNzEsIDIzMywgNjAsIDYzLCAxNjQsIDI0MiwgMjksIDYzLCAxNjQsIDIyNiwgNTcsIDYzLCA1LCAyMzMsIDYzLCAKKyAgICAyMjIsIDE0MywgNjMsIDUsIDIxMSwgNzAsIDIyMiwgMTQzLCA2MywgNSwgMjMzLCA2NCwgMjE1LCAxODQsIDI1MSwgNywgNjMsIAorICAgIDUsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDUsIDI0MiwgMTE5LCAyNTEsIDgsIDIyMywgNDAsIDYzLCA1LCAyNDIsIDExOSwgCisgICAgMjMxLCA4NSwgMjIzLCA0MCwgNjMsIDUsIDIzNSwgMTkzLCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAyMzMsIAorICAgIDY0LCAyMTUsIDE4NCwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgCisgICAgMjM1LCAxOTMsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDEsIDE3NiwgNjMsIDIxOCwgNzMsIDEsIDIzNCwgMTMyLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjQzLCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyNDIsIDI0OSwgNjMsIDIxOCwgNzMsIDEsIDIyOSwgCisgICAgNzcsIDYzLCAyMTgsIDczLCAxLCAyNTEsIDMzLCA2MywgMjE4LCA3MywgMSwgMjUwLCAxNTcsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMzUsIDE0MSwgNjMsIDIxOCwgNzMsIDEsIDIyNywgMTY1LCA2MywgMjE4LCA3MywgMSwgMjE1LCAxNTYsIDYzLCAyMTgsIAorICAgIDczLCAxLCAyMTUsIDE0NCwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMTM1LCA2MywgMjE4LCA3MywgMSwgMjQ4LCAxMTksIDYzLCAKKyAgICAyMTgsIDczLCAxLCAyMjgsIDExMCwgNjMsIDIxOCwgNzMsIDEsIDIxNywgMTA1LCA2MywgMjE4LCA3MywgMSwgMjE2LCAyMDgsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNDgsIDIyMSwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMjUsIDYzLCAyMTgsIDczLCAxLCAxOTcsIAorICAgIDYzLCAyMTgsIDczLCAxLCAxOTAsIDYzLCAyMTgsIDczLCAxLCAyMjUsIDE0NywgNjMsIDIxOCwgNzMsIDEsIDI1MiwgMTkxLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjUyLCAxOCwgNjMsIDIxOCwgNzMsIDEsIDE4NCwgNjMsIDIxOCwgNzMsIDEsIDIxNSwgMTgzLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjE1LCAxNzUsIDYzLCAyMTgsIDczLCAxLCAyNDYsIDM4LCA2MywgMjE4LCA3MywgMSwgMjQ2LCAKKyAgICAzMywgNjMsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDYzLCAyMTgsIDczLCAxLCAyMTAsIDgyLCA2MywgMjE4LCA3MywgMSwgCisgICAgMjEwLCAxMTYsIDYzLCAyMTgsIDczLCAxLCAyNTUsIDE2NiwgNjMsIDIxOCwgNzMsIDEsIDE5MSwgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIwNSwgNjMsIDIxOCwgNzMsIDEsIDIzMywgMTM1LCA2MywgMjE4LCA3MywgMSwgMjIwLCAxMDIsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMTgsIDIyMywgNjMsIDIxOCwgNzMsIDEsIDIwNiwgNjMsIDIxOCwgNzMsIDEsIDE2MiwgNjMsIDIxOCwgNzMsIDEsIDYxLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjMzLCAyMzEsIDYzLCAyMTgsIDczLCAxLCAyNDQsIDc3LCAyMTIsIDY1LCA2MywgMjE4LCA3MywgCisgICAgMSwgMjQ0LCA3NywgMTkxLCA2MywgMjE4LCA3MywgMSwgMjQ0LCA3NywgMjA1LCA2MywgMjMzLCAyMTgsIDIyMiwgMTQxLCAKKyAgICAyMzQsIDEzMiwgNjMsIDIzMywgMjE4LCAyMjIsIDE0MSwgMjM0LCAxMzMsIDI1MSwgNjksIDIzMCwgMjAyLCAyNTEsIDcsIAorICAgIDYzLCAyNTAsIDI1MiwgNSwgMTE0LCAyNTIsIDcwLCA2MywgMjUwLCAyNTIsIDUsIDE5MiwgMjUyLCA3MCwgNjMsIDI1MCwgCisgICAgMjUyLCA1LCAyNTAsIDI1MywgMjE3LCAyMCwgNjMsIDI1MCwgMjUyLCA1LCAyMjEsIDIwNywgMjU1LCAxNjUsIDYzLCAxNiwgCisgICAgMjQ2LCA5MSwgMjUxLCAxMjUsIDYzLCAxNiwgMjIzLCAxMjksIDIyMiwgMjIyLCA2MywgMTYsIDIyNiwgNzcsIDI0MywgNjMsIAorICAgIDYzLCAxNiwgMjIzLCAxMjksIDIyMiwgMjIzLCAyMjMsIDQyLCAyNDIsIDE0NSwgNjMsIDE2LCAyMjUsIDExMiwgMTkwLCA2MywgCisgICAgMTYsIDIyOCwgNTksIDI1MSwgMTI1LCA2MywgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAyMjcsIDEzOSwgMjU1LCAxNjIsIDYzLCAKKyAgICAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIDI0MiwgMTE3LCAyNTUsIDE2MiwgNjMsIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgCisgICAgMjUxLCA2OSwgMjU1LCAxNjIsIDYzLCA1LCAyMjMsIDEzMCwgMjI5LCAyMTksIDIyMywgMTMwLCAyNDcsIDE1OCwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxMTYsIDYzLCAxNjQsIDI1MSwgMTI5LCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIAorICAgIDI0OCwgMjIzLCA0MSwgNjMsIDE2NCwgMjMwLCAxNjMsIDIxMSwgMCwgMjQyLCAyMTUsIDIzMCwgMjQ4LCAyMjMsIDQxLCA2MywgCisgICAgMTY0LCAyMjcsIDEzOSwgMjE1LCAxNzIsIDYzLCAxNjQsIDY1LCAyNTEsIDE1MiwgMjIyLCAyMTMsIDIxMSwgMCwgMjMwLCAKKyAgICAyNDgsIDIzMSwgOTMsIDE4NCwgNjMsIDE2NCwgMjQ5LCAyNTIsIDI1MSwgMTUyLCAyMjIsIDIxMywgMjExLCAwLCAyMzAsIAorICAgIDI0OCwgMjIwLCAxMDksIDE4NCwgMjIyLCAyNTAsIDIxNywgMjU1LCA1MCwgMjMzLCA0NSwgMjE3LCAyNTUsIDUwLCAyMjIsIAorICAgIDI1MCwgMjE3LCAyNTUsIDUsIDIsIDI0NywgMTE4LCAyMzMsIDQ1LCAyMTcsIDI1NSwgNSwgMiwgMjQ3LCAxMTgsIDYzLCAKKyAgICAxNjQsIDIzMywgNTUsIDIzMSwgOTYsIDIyMiwgMTQzLCA2MywgMTY0LCAyMTUsIDI1MCwgMjMxLCA5NiwgMjIyLCAxNDMsIAorICAgIDY4LCAxLCAxNzYsIDY4LCAxLCAyMzQsIDEzMiwgNjgsIDEsIDI0MywgMTM1LCA2OCwgMSwgMjQyLCAyNDksIDY4LCAxLCAKKyAgICAyMjksIDc3LCA2OCwgMSwgMjUxLCAzMywgNjgsIDEsIDI1MCwgMTU3LCA2OCwgMSwgMjM1LCAxNDEsIDY4LCAxLCAyMzUsIAorICAgIDExNCwgNjgsIDEsIDIyNywgMTY1LCA2OCwgMSwgMjI4LCA3NiwgNjgsIDEsIDIxNSwgMTU2LCA2OCwgMSwgMjE1LCAxNDQsIAorICAgIDY4LCAxLCAyNDgsIDEzNSwgNjgsIDEsIDI0OCwgMTE5LCA2OCwgMSwgMjI4LCAxMTAsIDY4LCAxLCAyMTcsIDEwNSwgNjgsIAorICAgIDEsIDIxNiwgMjA4LCA2OCwgMSwgMjQ4LCAyMjEsIDY4LCAxLCAyNDgsIDI1LCA2OCwgMSwgMTk3LCA2OCwgMSwgMTkwLCA2OCwgCisgICAgMSwgMjI1LCAxNDcsIDY4LCAxLCAyNTIsIDE5MSwgNjgsIDEsIDI1MiwgMTgsIDY4LCAxLCAxODQsIDY4LCAxLCAxOTEsIDY4LCAKKyAgICAxLCAyMDUsIDY4LCAxLCAyMzMsIDEzNSwgNjgsIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAKKyAgICAyMzIsIDE4NCwgNjgsIDEsIDYxLCA2OCwgMSwgMjIwLCA4NiwgNjEsIDY4LCAxLCA3MywgNjgsIDEsIDIzNiwgMzMsIDY4LCAKKyAgICAxLCA3MCwgNjgsIDEsIDIxNCwgMTE4LCA2OCwgMSwgNzUsIDY4LCAxLCAyMzAsIDE1MSwgNzUsIDY4LCAxLCA3NiwgNjgsIDEsIAorICAgIDI1MywgMTkyLCA2OCwgMjUsIDUsIDIxNywgNjQsIDI1NSwgNzMsIDY4LCAyNSwgNSwgMjU1LCA3MywgNjgsIDI1LCA1LCA3MywgCisgICAgNjgsIDI1LCA1LCAyMzYsIDMzLCA2OCwgMjUsIDUsIDcwLCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc1LCAKKyAgICA2OCwgMjUsIDUsIDI1NCwgMjAxLCA2OCwgMjUsIDUsIDIzMCwgMTUxLCAyMzYsIDMzLCA2OCwgMjUsIDUsIDIzMCwgMTUxLCAKKyAgICA3NiwgNjgsIDI1LCA1LCAxNjAsIDQ4LCA2OCwgNSwgMjU0LCA3NSwgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCAKKyAgICA2OCwgNSwgMjEzLCAxNTIsIDY4LCA1LCAyNTMsIDIzNSwgNjgsIDExNiwgNSwgMTQ3LCAxOTEsIDY4LCAxMTYsIDUsIDE0NywgCisgICAgMjA1LCA2OCwgMTE2LCA1LCAxNDcsIDIxMiwgNjUsIDY4LCAxMTYsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzIsIAorICAgIDIwNiwgNjgsIDIxLCAyMTAsIDg2LCA2OCwgMjEsIDExMCwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgCisgICAgNjgsIDIxLCAxODksIDY4LCAyMSwgMTk0LCA2OCwgMjEsIDE5OCwgNjgsIDIxLCAxOTUsIDY4LCAyMSwgMjAwLCA2OCwgNSwgCisgICAgMjMyLCAxOTIsIDIyMSwgMTcyLCA2OCwgNSwgMjIxLCAxNzIsIDY4LCAxNiwgMjMyLCAxNTMsIDY4LCAxNiwgMjQ5LCAyMTMsIAorICAgIDY4LCAxNiwgMjU0LCAyMjAsIDY4LCAxNiwgMjQzLCA0OCwgNjgsIDEsIDIyMCwgMTAyLCA2OCwgMSwgMjE4LCAyMjMsIDY4LCAKKyAgICAxLCAxNDksIDE1MywgNjgsIDEsIDE0OSwgMjIyLCAxODAsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxODUsIAorICAgIDY4LCAyNSwgNSwgMTQ5LCAxNTMsIDY4LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIAorICAgIDI1LCA1LCAxNDksIDIzMiwgMTg1LCA2OCwgMSwgMjMwLCAxNTEsIDIyOSwgNzcsIDY4LCAxLCAyMzAsIDE1MSwgMjM1LCAKKyAgICAxMTQsIDY4LCAxLCAyMzAsIDE1MSwgMjUyLCAxMTEsIDY4LCAxLCAyMzAsIDE1MSwgMjUyLCAxMDYsIDY4LCAxMTYsIDUsIAorICAgIDIzMCwgMTUxLCAxNDcsIDE5NywgNjgsIDExNiwgNSwgMjMwLCAxNTEsIDE0NywgMTg0LCA2OCwgMTE2LCA1LCAyMzAsIDE1MSwgCisgICAgMTQ3LCAyMzMsIDEzNSwgNjgsIDEsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjIwLCAxMDIsIDY4LCAyNSwgNSwgMjIwLCAxMDgsIAorICAgIDIzNCwgMjEzLCAyNDUsIDU1LCA2OCwgMTM4LCAxNjQsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjQxLCAyNDcsIDY4LCAxMzgsIAorICAgIDE2NCwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyMzQsIDE4MywgMjI1LCAxMjEsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA4LCAKKyAgICAyMzQsIDIxMywgMjE2LCAyMDgsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjI0LCAxMTQsIDY4LCAyNSwgCisgICAgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDI0NSwgNTUsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAKKyAgICAyMTMsIDIxNCwgMjE0LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjksIDY4LCA1LCAyMTIsIDcsIAorICAgIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyOCwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI3LCAKKyAgICA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjYsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIAorICAgIDIxMywgMjE2LCAyNSwgNjgsIDEsIDI0NSwgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIyOCwgMTEwLCA2OCwgMSwgMjQ1LCAKKyAgICAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAKKyAgICAyNDIsIDIxNywgNjgsIDI1LCA1LCAyNDMsIDU5LCAyMzQsIDIxMywgNzMsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDIyNiwgCisgICAgMjM0LCA2OCwgMjUsIDUsIDIzNCwgMTg4LCA3MCwgNjgsIDI1LCA1LCAyMzQsIDE4OCwgMjQ1LCAyMDksIDY4LCAxLCAyMjAsIAorICAgIDg2LCAxNzYsIDY4LCAxLCAyMjAsIDg2LCAyMzQsIDEzMiwgNjgsIDEsIDIyMCwgODYsIDI0MywgMTM1LCA2OCwgMSwgMjIwLCAKKyAgICA4NiwgMjUxLCAzMywgNjgsIDEsIDIyMCwgODYsIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4NiwgMjI3LCAxNjUsIDY4LCAxLCAKKyAgICAyMjAsIDg2LCAyNDgsIDIyMSwgNjgsIDEsIDIyMCwgODYsIDE5NywgNjgsIDEsIDIyMCwgODYsIDIyNSwgMTQ3LCA2OCwgMSwgCisgICAgMjIwLCA4NiwgMjQ0LCAxOTYsIDY4LCAxLCAyMjAsIDg2LCAyNTIsIDE5MSwgNjgsIDEsIDIyMCwgODYsIDIxNiwgMjA4LCAKKyAgICA2OCwgMSwgMjIwLCA4NiwgMTYyLCA2OCwgMTE2LCA1LCAyMjAsIDg2LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCAKKyAgICA4NiwgMjU1LCA3MywgNjgsIDI1LCA1LCAyMjAsIDg2LCA3NSwgNjgsIDI1LCA1LCAyMjAsIDg2LCAxNjAsIDQ4LCA2OCwgMjUsIAorICAgIDUsIDIyMCwgODYsIDQwLCAyMTEsIDExNywgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjgsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIAorICAgIDI3LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyNSwgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjQsIDY4LCA1LCAyMjAsIDg2LCAKKyAgICAyNDksIDE1MiwgMjE2LCAyOCwgNjgsIDUsIDIyMCwgODYsIDI0OSwgMTUyLCAyMTYsIDI3LCA2OCwgNSwgMjIwLCA4NiwgCisgICAgMjQ5LCAxNTIsIDI0NSwgMTUzLCAyMTYsIDMwLCA2OCwgMSwgMjIyLCAxMjgsIDIyNiwgNjMsIDI0NCwgMTk2LCA2OCwgNSwgCisgICAgMjIyLCAxMjgsIDIyNiwgNjMsIDIxNiwgMjUsIDY4LCAyMjAsIDg2LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODYsIDIxLCAKKyAgICAxMTAsIDY4LCAyMjAsIDg2LCAyMSwgMTA1LCA2OCwgMjIwLCA4NiwgMjEsIDE1OCwgNjgsIDIyMCwgODYsIDIxLCAxNjEsIAorICAgIDY4LCAyMjAsIDg2LCAyMSwgMTg5LCA2OCwgMjIwLCA4NiwgMjEsIDE5NCwgNjgsIDIyMCwgODYsIDIxLCAxOTgsIDY4LCAKKyAgICAyMjAsIDg2LCAyMSwgMTk1LCA2OCwgMjIwLCA4NiwgMjEsIDIwMCwgNjgsIDUsIDIzNCwgMTI2LCAyMTYsIDI5LCA2OCwgNSwgCisgICAgMjM0LCAxMjYsIDIxNiwgMjcsIDY4LCAyNSwgNSwgMjU0LCAxOTAsIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTkwLCAyNTQsIAorICAgIDIwMSwgNjgsIDE2LCAyMjAsIDg2LCAxMTAsIDY4LCAxNiwgMjIwLCA4NiwgMjQ1LCAzMCwgOTgsIDYsIDEsIDI1NCwgMTIzLCAKKyAgICA5OCwgNiwgMSwgMjUyLCAxNTIsIDk4LCA2LCAxLCAyNDMsIDEwNiwgOTgsIDYsIDEsIDI0NywgMTI4LCA5OCwgNiwgMSwgCisgICAgMjQ1LCAxNTAsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIDYsIDEsIDIxMCwgODksIDk4LCA2LCAxLCAyMTcsIDYwLCA5OCwgCisgICAgNiwgMSwgMjM1LCAyNTUsIDk4LCA2LCAxLCAyMzQsIDIzNCwgOTgsIDYsIDEsIDIzMywgODEsIDk4LCA2LCAxLCAyMzEsIAorICAgIDE4NSwgOTgsIDYsIDEsIDIyOSwgMTk1LCA5OCwgNiwgMSwgMjI2LCAxOTYsIDk4LCA2LCAxLCAyMjYsIDE3LCA5OCwgNiwgMSwgCisgICAgMjEwLCA3OCwgOTgsIDYsIDEsIDIyMywgMTcxLCA5OCwgNiwgMSwgMjIxLCAyNDMsIDk4LCA2LCAxLCAyMTcsIDUwLCA5OCwgCisgICAgNiwgMSwgMjE0LCAxOTAsIDk4LCA2LCAxLCAyMjUsIDE0MCwgOTgsIDYsIDEsIDIzNCwgMTIxLCA5OCwgNiwgMSwgMjQyLCAKKyAgICAyNDEsIDk4LCA2LCAxLCAyMjQsIDczLCA5OCwgNiwgMSwgMjIwLCAyMCwgOTgsIDYsIDEsIDI1MCwgOTcsIDk4LCA2LCAxLCAKKyAgICAyNTEsIDcsIDk4LCA2LCAxLCAyMzUsIDEwMCwgOTgsIDYsIDEsIDI1MCwgNDAsIDk4LCA2LCAxLCAyNTAsIDE0MywgOTgsIDYsIAorICAgIDEsIDIxMSwgMTYzLCA5OCwgNiwgMSwgMjM1LCAxMTEsIDk4LCA2LCAxLCAyNDIsIDQzLCA5OCwgNiwgMSwgMjQxLCAyMzgsIAorICAgIDk4LCA2LCAxLCAyNDEsIDE3NSwgOTgsIDYsIDEsIDIxMiwgMjIsIDk4LCA2LCAxLCAyNDIsIDQsIDk4LCA2LCAxLCAyNDEsIAorICAgIDY1LCA5OCwgNiwgMSwgMjEwLCAyNDYsIDk4LCA2LCAxLCAyNTQsIDIzMiwgOTgsIDEsIDI1NCwgMTIzLCA5OCwgMSwgMjUyLCAKKyAgICAxNTIsIDk4LCAxLCAyNDMsIDEwNiwgOTgsIDEsIDI0NywgMTI4LCA5OCwgMSwgMjQ1LCAxNTAsIDk4LCAxLCAyMTMsIDE2MCwgCisgICAgOTgsIDEsIDIxMCwgODksIDk4LCAxLCAyMTcsIDYwLCA5OCwgMSwgMjM1LCAyNTUsIDk4LCAxLCAyMzQsIDIzNCwgOTgsIDEsIAorICAgIDIzMywgODEsIDk4LCAxLCAyMzEsIDE4NSwgOTgsIDEsIDIyOSwgMTk1LCA5OCwgMSwgMjI2LCAxOTYsIDk4LCAxLCAyMjYsIAorICAgIDE3LCA5OCwgMSwgMjEwLCA3OCwgOTgsIDEsIDIyMywgMTcxLCA5OCwgMSwgMjIxLCAyNDMsIDk4LCAxLCAyMTcsIDUwLCA5OCwgCisgICAgMSwgMjE0LCAxOTAsIDk4LCAxLCAyMjUsIDE0MCwgOTgsIDEsIDIzNCwgMTIxLCA5OCwgMSwgMjQyLCAyNDEsIDk4LCAxLCAKKyAgICAyMjQsIDczLCA5OCwgMSwgMjIwLCAyMCwgOTgsIDEsIDI1MCwgOTcsIDk4LCAxLCAyNTEsIDcsIDk4LCAxLCAyMzUsIDEwMCwgCisgICAgOTgsIDEsIDI1MCwgNDAsIDk4LCAxLCAyNTAsIDE0MywgOTgsIDEsIDIxMSwgMTYzLCA5OCwgMSwgMjM1LCAxMTEsIDk4LCAxLCAKKyAgICAyNDIsIDQzLCA5OCwgMSwgMjQxLCAyMzgsIDk4LCAxLCAyNDEsIDE3NSwgOTgsIDEsIDIxMiwgMjIsIDk4LCAxLCAyNDIsIDQsIAorICAgIDk4LCAxLCAyNDEsIDY1LCA5OCwgMSwgMjQ0LCAxMjEsIDk4LCAxLCAyMTAsIDI0NiwgOTgsIDEsIDI0NSwgMTY1LCA5OCwgMSwgCisgICAgMjE1LCA5NCwgMjQzLCAxMDYsIDk4LCAxLCAyNTQsIDE5NiwgOTgsIDIyNiwgMTUsIDIyMCwgMTM3LCA1OCwgMSwgOTgsIAorICAgIDIyOSwgMTk1LCA5OCwgMSwgMjU0LCAyMzIsIDk4LCAxLCAyNDIsIDMsIDUwLCA5OCwgMSwgMjMzLCAxMjcsIDUwLCAyNCwgCisgICAgMTAwLCAyMzQsIDU4LCAyNCwgMTAwLCAyMTgsIDIxNSwgMjQsIDEwMCwgMjI4LCAyMjYsIDI0LCAxMDAsIDIxNiwgMTAxLCAKKyAgICAyNCwgMTAwLCAyMTgsIDIwNCwgMjQsIDEwMCwgMjIzLCAyNiwgMjQsIDEwMCwgMjMwLCAyMTcsIDI0LCAxMDAsIDIyNSwgOTUsIAorICAgIDI0LCAxMDAsIDIxOCwgMjEyLCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgMjE4LCAyMDksIDI0LCAxMDAsIDIzNiwgCisgICAgNTYsIDI0LCAxMDAsIDI1MCwgNDYsIDI0LCAxMDAsIDIxOCwgMjE5LCAyNCwgMTAwLCAyNTAsIDEwNiwgMjQsIDEwMCwgMjM0LCAKKyAgICAxMTAsIDI0LCAxMDAsIDIxNiwgMTczLCAyNCwgMTAwLCAyMjUsIDEzMSwgMjQsIDEwMCwgMjQxLCAxNzIsIDI0LCAxMDAsIAorICAgIDIyOCwgMjIyLCAyNCwgMTAwLCAyMTgsIDIxMywgMjQsIDEwMCwgMjI4LCAyMTYsIDI0LCAxMDAsIDIyOCwgMjIwLCAyNCwgCisgICAgMTAwLCAyMTYsIDk4LCAyNCwgMTAwLCAyMjMsIDE0LCAyNCwgMTAwLCAyMTgsIDIxMSwgMjQsIDEwMCwgMjIzLCAyNCwgMjQsIAorICAgIDEwMCwgMjM0LCAyMTgsIDI0LCAxMDAsIDIzMCwgMjEwLCAyNCwgMTAwLCAyMzQsIDIyMSwgMjQsIDEwMCwgMjI1LCA5MCwgCisgICAgMjQsIDEwMCwgMjI1LCA4OCwgMjQsIDEwMCwgMjI1LCA3NiwgMjQsIDEwMCwgMjI1LCA4NCwgMjQsIDEwMCwgMjI1LCA4MiwgCisgICAgMjQsIDEwMCwgMjI1LCA3OSwgMjQsIDEwMCwgMjI1LCA4MSwgMjQsIDEwMCwgMjI1LCA3OCwgMjQsIDEwMCwgMjI1LCA4MywgCisgICAgMjQsIDEwMCwgMjI1LCA5MywgMjQsIDEwMCwgMjI1LCA5NCwgMjQsIDEwMCwgMjI1LCA3NywgMjQsIDEwMCwgMjI1LCA4NywgCisgICAgMjQsIDEwMCwgMjM0LCAyMTksIDI0LCAxMDAsIDIzNCwgMjE3LCAyNCwgMTAwLCAyMTksIDE0MSwgMjQsIDEwMCwgMjE5LCAKKyAgICAxMzksIDI0LCAxMDAsIDIxOSwgMTMxLCAyNCwgMTAwLCAyMTksIDEzNCwgMjQsIDEwMCwgMjE5LCAxNDAsIDI0LCAxMDAsIAorICAgIDIxOSwgMTM2LCAyNCwgMTAwLCAyMTksIDEzNSwgMjQsIDEwMCwgMjE5LCAxMzMsIDI0LCAxMDAsIDIxOSwgMTQ0LCAyNCwgCisgICAgMTAwLCAyMTksIDE0NiwgMjQsIDEwMCwgMjE5LCAxNDcsIDI0LCAxMDAsIDIxOSwgMTQyLCAyNCwgMTAwLCAyMTksIDEzMiwgCisgICAgMjQsIDEwMCwgMjE5LCAxMzcsIDI0LCAxMDAsIDIxOSwgMTQ1LCAyNCwgMTAwLCAyNTAsIDkwLCAyNCwgMTAwLCAyNTAsIDg4LCAKKyAgICAyNCwgMTAwLCAyNTAsIDE2OCwgMjQsIDEwMCwgMjUwLCAxNjYsIDI0LCAxMDAsIDIyNiwgMzIsIDI0LCAxMDAsIDIzNiwgNTEsIAorICAgIDI0LCAxMDAsIDIzNiwgNDIsIDI0LCAxMDAsIDIzNiwgNTAsIDI0LCAxMDAsIDIzNiwgNDcsIDI0LCAxMDAsIDIzNiwgNDUsIAorICAgIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAxMDAsIDIxOCwgMjE2LCAyNCwgMTAwLCAyMzYsIDU0LCAyNCwgMTAwLCAyMzYsIDU1LCAKKyAgICAyNCwgMTAwLCAyMzYsIDQzLCAyNCwgMTAwLCAyMzYsIDQ4LCAyNCwgMTAwLCAyMTEsIDI2LCAyNCwgMTAwLCAyNTAsIDQ1LCAKKyAgICAyNCwgMTAwLCAyNTAsIDkxLCAyNCwgMTAwLCAyNTAsIDg5LCAyNCwgMTAwLCAyNTAsIDE2OSwgMjQsIDEwMCwgMjUwLCAxNjcsIAorICAgIDI0LCAxMDAsIDI1MCwgMTA0LCAyNCwgMTAwLCAyNTAsIDEwNSwgMjQsIDEwMCwgMjUwLCA5MiwgMjQsIDEwMCwgMjUwLCAKKyAgICAxNzAsIDI0LCAxMDAsIDIyNSwgMTI5LCAyNCwgMTAwLCAyMzQsIDIyMCwgMjQsIDEwMCwgMjE4LCAyMTcsIDI0LCAxMDAsIAorICAgIDIxMSwgMzIsIDI0LCAxMDAsIDIzNCwgNDksIDI0LCAxMDAsIDIyOCwgMjE4LCAyNCwgMTAwLCAyMjgsIDIyNCwgMjQsIDEwMCwgCisgICAgMjI4LCAyMjMsIDI0LCAxMDAsIDIxNiwgOTUsIDI0LCAxMDAsIDI0NCwgMTAzLCAyNCwgMTQzLCAyNDQsIDEwMywgMjQsIAorICAgIDE0MywgNjEsIDI0LCAxNDMsIDI1NCwgMjQzLCAyNCwgMTQzLCAxOTEsIDI0LCAxNDMsIDIxMSwgOTIsIDI0LCAxNDMsIDI0NSwgCisgICAgMTE3LCAyNCwgMTQzLCA3NSwgMjQsIDE0MywgMjExLCAzNiwgMjQsIDE0MywgMjExLCA0NywgMjQsIDE0MywgNzYsIDI0LCAKKyAgICAxNDMsIDIxMiwgNjUsIDI0LCAxNDMsIDIxMiwgNjIsIDI0LCAxNDMsIDIyNiwgMjM0LCAyNCwgMTQzLCAyMTAsIDI0NCwgMjQsIAorICAgIDE0MywgNzAsIDI0LCAxNDMsIDIxMiwgMTEsIDI0LCAxNDMsIDIxMiwgMjIsIDI0LCAxNDMsIDIxMSwgMjUwLCAyNCwgMTQzLCAKKyAgICAyMTAsIDIxMiwgMjQsIDE0MywgMjQ1LCA1NSwgMjQsIDE0MywgMjExLCA4LCAyNCwgMTQzLCA3MywgMjQsIDE0MywgMjU1LCAKKyAgICAxNTcsIDI0LCAxNDMsIDI1NSwgMTU2LCAyNCwgMTQzLCAyMTEsIDEwNiwgMjQsIDE0MywgMjExLCAxMDQsIDI0LCAxNDMsIAorICAgIDI0NSwgMTE1LCAyNCwgMTQzLCAyNDUsIDExNCwgMjQsIDE0MywgMjQ1LCAxMTYsIDI0LCAxNDMsIDIxMSwgMzUsIDI0LCAKKyAgICAxNDMsIDIxMSwgMzQsIDI0LCAxNDMsIDIyNywgODQsIDI0LCAxNDMsIDIyNywgODUsIDI0LCAxNDMsIDIyNywgNzgsIDI0LCAKKyAgICAxNDMsIDIyNywgODMsIDI0LCAxNDMsIDIyNywgODEsIDI0LCAxNDMsIDIxMCwgMjM4LCAyNCwgMTQzLCAyMTAsIDIzNywgMjQsIAorICAgIDE0MywgMjEwLCAyMzYsIDI0LCAxNDMsIDIxMCwgMjM5LCAyNCwgMTQzLCAyMTAsIDI0MCwgMjQsIDE0MywgMjE1LCAzMCwgCisgICAgMjQsIDE0MywgMjE1LCAyOSwgMjQsIDE0MywgMjE1LCAyNywgMjQsIDE0MywgMjE1LCAyNCwgMjQsIDE0MywgMjE1LCAyNSwgCisgICAgMjQsIDE0MywgMjEwLCAyMTEsIDI0LCAxNDMsIDIxMCwgMjA4LCAyNCwgMTQzLCAyMTAsIDIwOSwgMjQsIDE0MywgMjEwLCAKKyAgICAyMDMsIDI0LCAxNDMsIDIxMCwgMjA0LCAyNCwgMTQzLCAyMTAsIDIwNSwgMjQsIDE0MywgMjEwLCAyMDcsIDI0LCAxNDMsIAorICAgIDI0NSwgNDksIDI0LCAxNDMsIDI0NSwgNTEsIDI0LCAxNDMsIDIxMSwgNywgMjQsIDE0MywgMjQwLCAxNTMsIDI0LCAxNDMsIAorICAgIDI0MCwgMTQ1LCAyNCwgMTQzLCAyNDAsIDE0OCwgMjQsIDE0MywgMjQwLCAxNDYsIDI0LCAxNDMsIDI0MCwgMTUwLCAyNCwgCisgICAgMTQzLCAyNDAsIDE1MiwgMjQsIDE0MywgMjU0LCAzNCwgMjQsIDE0MywgMjU0LCAzMSwgMjQsIDE0MywgMjU0LCAyOSwgMjQsIAorICAgIDE0MywgMjU0LCAzMCwgMjQsIDE0MywgMjE4LCAyMjAsIDI0LCAxNDMsIDI1NSwgMTU4LCAyNCwgMTQzLCAyMTEsIDEwNSwgCisgICAgMjQsIDE0MywgMjExLCAzMywgMjQsIDE0MywgMjI3LCA4MCwgMjQsIDE0MywgMjI3LCA3OSwgMjQsIDkwLCAyMzQsIDU4LCAKKyAgICAyNCwgOTAsIDIxOCwgMjE1LCAyNCwgOTAsIDIzNCwgNTEsIDI0LCA5MCwgMjI4LCAyMjYsIDI0LCA5MCwgMjI4LCAyMjQsIAorICAgIDI0LCA5MCwgMjI4LCAyMjMsIDI0LCA5MCwgMjE2LCAxMDEsIDI0LCA5MCwgMjIzLCAyNiwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgCisgICAgOTAsIDIyMywgMTgsIDI0LCA5MCwgMjIzLCAxMSwgMjQsIDkwLCAyMjMsIDYsIDI0LCA5MCwgMjIzLCAxLCAyNCwgOTAsIAorICAgIDIyMywgMTIsIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMzAsIDIxNywgMjQsIDkwLCAyMjUsIDk1LCAyNCwgOTAsIDIyNSwgCisgICAgODQsIDI0LCA5MCwgMjE5LCAxNDgsIDI0LCA5MCwgMjE4LCAyMDksIDI0LCA5MCwgMjM2LCA1NiwgMjQsIDkwLCAyNTAsIDQ2LCAKKyAgICAyNCwgOTAsIDI1MCwgMTA2LCAyNCwgOTAsIDIzNCwgMTEwLCAyNCwgOTAsIDIxNiwgMTczLCAyNCwgOTAsIDIyNSwgMTMxLCAKKyAgICAyNCwgOTAsIDI0MSwgMTcyLCAyNCwgOTAsIDIzNCwgNTIsIDI0LCA5MCwgMjM0LCA1MCwgMjQsIDkwLCAyMjgsIDIyMiwgMjQsIAorICAgIDkwLCAyMjgsIDIxNiwgMjQsIDkwLCAyMjgsIDIxOCwgMjQsIDkwLCAyMjgsIDIyMSwgMjQsIDkwLCAyMjgsIDIxNywgMjQsIAorICAgIDkwLCAyMTYsIDk4LCAyNCwgOTAsIDIxNiwgOTUsIDI0LCA5MCwgMjIzLCAxOSwgMjQsIDkwLCAyMjMsIDE0LCAyNCwgOTAsIAorICAgIDIyMywgMCwgMjQsIDkwLCAyMjIsIDI1NSwgMjQsIDkwLCAyMTgsIDIxMSwgMjQsIDkwLCAyMjMsIDE2LCAyNCwgOTAsIDIyMywgCisgICAgMTUsIDI0LCA5MCwgMjIzLCA4LCAyNCwgOTAsIDIyMywgMTAsIDI0LCA5MCwgMjIzLCAyMywgMjQsIDkwLCAyMjMsIDMsIDI0LCAKKyAgICA5MCwgMjIzLCAxMywgMjQsIDkwLCAyMjMsIDIyLCAyNCwgOTAsIDIyMiwgMjU0LCAyNCwgOTAsIDIzMCwgMjEzLCAyNCwgOTAsIAorICAgIDIzMCwgMjA4LCAyNCwgOTAsIDIzMCwgMjEwLCAyNCwgOTAsIDIzMCwgMjA3LCAyNCwgOTAsIDIzMCwgMjA1LCAyNCwgOTAsIAorICAgIDIzMCwgMjExLCAyNCwgOTAsIDIzMCwgMjE2LCAyNCwgOTAsIDIzMCwgMjE0LCAyNCwgOTAsIDIzNCwgMjIxLCAyNCwgOTAsIAorICAgIDIyNSwgODYsIDI0LCA5MCwgMjI1LCA4NywgMjQsIDkwLCAyMjUsIDkyLCAyNCwgOTAsIDIzNCwgMjE5LCAyNCwgOTAsIDIxOSwgCisgICAgMTQxLCAyNCwgOTAsIDIxOSwgMTMxLCAyNCwgOTAsIDIxOSwgMTM0LCAyNCwgOTAsIDIxOSwgMTM2LCAyNCwgOTAsIDIyNiwgCisgICAgMzIsIDI0LCA5MCwgMjM2LCA1MSwgMjQsIDkwLCAyMzYsIDQ0LCAyNCwgOTAsIDIxOCwgMjE2LCAyNCwgOTAsIDIzNiwgNTIsIAorICAgIDI0LCA5MCwgMjExLCAyNiwgMjQsIDkwLCAyMTEsIDIyLCAyNCwgOTAsIDIxMSwgMjMsIDI0LCA5MCwgMjI1LCAxMjksIDI0LCAKKyAgICA5MCwgMjM0LCAyMjAsIDI0LCA5MCwgMjQxLCAxNzAsIDI0LCA5MCwgMjQxLCAxNjgsIDI0LCA5MCwgMjQxLCAxNzEsIDI0LCAKKyAgICA5MCwgMjQxLCAxNjksIDI0LCA5MCwgMjExLCAzMiwgMjQsIDkwLCAyMzQsIDU0LCAyNCwgOTAsIDIzNCwgNTMsIDI0LCA5MCwgCisgICAgMjM0LCA1NywgMjQsIDkwLCAyMzQsIDU1LCAyNCwgOTAsIDIzNCwgNTYsIDI0LCA5MCwgMjE4LCAyMTMsIDI5LCAzLCAxNjIsIAorICAgIDI5LCAzLCAyNDAsIDIyMiwgMjksIDMsIDI0MSwgMTgwLCAyOSwgMywgMjQyLCA0NiwgMjksIDMsIDI0MSwgMjIwLCAyOSwgMywgCisgICAgMjQxLCAyMzgsIDI5LCAzLCAyNDEsIDY4LCAyOSwgMywgMjQxLCA2NywgMjksIDMsIDIzMywgMTM1LCAyOSwgMywgMjMyLCAKKyAgICA5OCwgMjksIDMsIDIzMiwgMjQxLCAyOSwgMywgMjMzLCAxMzQsIDI5LCAzLCAyMzMsIDUwLCAyOSwgMywgMjMzLCA1OCwgMjksIAorICAgIDMsIDIzMiwgMTU2LCAyOSwgMywgMjMyLCA3MCwgMjksIDMsIDI0MSwgMTg5LCAyOSwgMywgMjQxLCAxODMsIDI5LCAzLCAKKyAgICAyNDEsIDE4NSwgMjksIDMsIDI0MSwgMTg4LCAyOSwgMywgMjQxLCAxODYsIDI5LCAzLCAyNDEsIDE4NywgMjksIDMsIDI0MSwgCisgICAgMTg0LCAyOSwgMywgMjQxLCAxODIsIDI5LCAzLCAxODQsIDI5LCAzLCAyMzAsIDEwMiwgMjksIDMsIDIzMCwgMjMwLCAyOSwgCisgICAgMywgMjMxLCAyMzcsIDI5LCAzLCAyMzEsIDgwLCAyOSwgMywgMjMxLCA5MSwgMjksIDMsIDIzMCwgMTYxLCAyOSwgMywgMjMwLCAKKyAgICA0MiwgMjksIDMsIDIxNywgMTYzLCAyOSwgMywgMjE3LCAxNTcsIDI5LCAzLCAyMTcsIDE1OSwgMjksIDMsIDIxNywgMTYyLCAKKyAgICAyOSwgMywgMjE3LCAxNjAsIDI5LCAzLCAyMTcsIDE2MSwgMjksIDMsIDIxNywgMTU4LCAyOSwgMywgMjE3LCAxNTYsIDI5LCAKKyAgICAzLCAyMDUsIDI5LCAzLCAyMjIsIDE0MCwgMjksIDMsIDIyMywgMzUsIDI5LCAzLCAyMjMsIDE4NCwgMjksIDMsIDIyMywgCisgICAgMTA4LCAyOSwgMywgMjIzLCAxMjgsIDI5LCAzLCAyMjIsIDIxMSwgMjksIDMsIDIyMiwgMTA5LCAyOSwgMywgMjA2LCAyOSwgCisgICAgMywgMjE4LCA4MywgMjksIDMsIDIxOSwgMTkxLCAyOSwgMywgMjIyLCAzMSwgMjksIDMsIDIyMSwgMTcwLCAyOSwgMywgMjIxLCAKKyAgICAxODEsIDI5LCAzLCAyMTksIDU4LCAyOSwgMywgMjE3LCAyNTMsIDI5LCAzLCAyMjAsIDEwMiwgMjksIDMsIDIxOSwgMjI1LCAKKyAgICAyOSwgMywgMjIwLCAzMiwgMjksIDMsIDIyMCwgOTgsIDI5LCAzLCAyMjAsIDYxLCAyOSwgMywgMjIwLCA2MywgMjksIDMsIAorICAgIDIyMCwgNywgMjksIDMsIDIxOSwgMjA4LCAyOSwgMywgMjI0LCA4OCwgMjksIDMsIDIyNCwgMzAsIDI5LCAzLCAyMjQsIDUzLCAKKyAgICAyOSwgMywgMjI0LCA4NywgMjksIDMsIDIyNCwgNjgsIDI5LCAzLCAyMjQsIDY5LCAyOSwgMywgMjI0LCA0MiwgMjksIDMsIAorICAgIDIyNCwgNDEsIDI5LCAzLCAyMjMsIDI0MiwgMjksIDMsIDIyMywgMjM4LCAyOSwgMywgMjIzLCAyNDEsIDI5LCAzLCAyMjMsIAorICAgIDIzOSwgMjksIDMsIDIyMywgMjQwLCAyOSwgMywgMjI0LCA2NSwgMjksIDMsIDIyNCwgNTksIDI5LCAzLCAyMjQsIDYxLCAyOSwgCisgICAgMywgMjI0LCA2NCwgMjksIDMsIDIyNCwgNjIsIDI5LCAzLCAyMjQsIDYzLCAyOSwgMywgMjI0LCA2MCwgMjksIDMsIDIyNCwgCisgICAgNTgsIDI5LCAzLCAyMjQsIDU0LCAyOSwgMywgMjI0LCA1NywgMjksIDMsIDIyNCwgNTUsIDI5LCAzLCAyMjQsIDU2LCAyOSwgCisgICAgMywgMjUyLCAxOTEsIDI5LCAzLCAyNTEsIDEyNSwgMjksIDMsIDI1MiwgNiwgMjksIDMsIDI1MiwgMTg5LCAyOSwgMywgMjUyLCAKKyAgICA2NiwgMjksIDMsIDI1MiwgNzUsIDI5LCAzLCAyNTEsIDIwNSwgMjksIDMsIDI1MSwgODMsIDI5LCAzLCAyMTQsIDI3LCAyOSwgCisgICAgMywgMjEyLCAxMTYsIDI5LCAzLCAyMTMsIDE3NiwgMjksIDMsIDIxNCwgMjYsIDI5LCAzLCAyMTMsIDI1MCwgMjksIDMsIAorICAgIDIxMywgMjU1LCAyOSwgMywgMjEzLCAxMzgsIDI5LCAzLCAyMTIsIDEwNywgMjksIDMsIDIxNywgMTA1LCAyOSwgMywgMjE1LCAKKyAgICAxMTgsIDI5LCAzLCAyMTYsIDExNywgMjksIDMsIDIxNywgMTAxLCAyOSwgMywgMjE3LCAxMSwgMjksIDMsIDIxNywgMjIsIAorICAgIDI5LCAzLCAxMTEsIDI5LCAzLCAyMTUsIDgwLCAyOSwgMywgMjUxLCAzMywgMjksIDMsIDI0OSwgMTEyLCAyOSwgMywgMjUwLCAKKyAgICA1MSwgMjksIDMsIDI1MSwgMzIsIDI5LCAzLCAyNTAsIDE4MiwgMjksIDMsIDI1MCwgMTkwLCAyOSwgMywgMjQ5LCAyMzgsIAorICAgIDI5LCAzLCAyNDksIDgxLCAyOSwgMywgMjExLCAxNjUsIDI5LCAzLCAyMTEsIDE0MSwgMjksIDMsIDIxMSwgMTU3LCAyOSwgMywgCisgICAgMjExLCAxNjQsIDI5LCAzLCAyMTEsIDE2MSwgMjksIDMsIDIxMSwgMTYyLCAyOSwgMywgMjExLCAxNDgsIDI5LCAzLCAyMTEsIAorICAgIDE0NywgMjksIDMsIDIxMSwgMTM2LCAyOSwgMywgMjExLCAxMzIsIDI5LCAzLCAyMTEsIDEzNSwgMjksIDMsIDIxMSwgMTMzLCAKKyAgICAyOSwgMywgMjExLCAxMzQsIDI5LCAzLCAxOTcsIDI5LCAzLCAyMjcsIDIzNywgMjksIDMsIDIyOCwgMjMzLCAyOSwgMywgCisgICAgMjI5LCAyMjUsIDI5LCAzLCAyMjksIDEwMywgMjksIDMsIDIyOSwgMTA3LCAyOSwgMywgMjI4LCA3NCwgMjksIDMsIDIyNywgCisgICAgMTc0LCAyOSwgMywgMjI3LCAxNjUsIDI5LCAzLCAyMjcsIDEyOCwgMjksIDMsIDIyNywgMTQ4LCAyOSwgMywgMjI3LCAxNjQsIAorICAgIDI5LCAzLCAyMjcsIDE1NSwgMjksIDMsIDIyNywgMTU2LCAyOSwgMywgMjI3LCAxMzQsIDI5LCAzLCAyMjcsIDExOSwgMjksIAorICAgIDMsIDI0MiwgMTgwLCA2MSwgMjksIDMsIDI0MiwgMTgwLCA3MCwgMjksIDMsIDI0MiwgMTgwLCA3MywgMjksIDMsIDI0MiwgCisgICAgMTgwLCAyNTUsIDczLCAyOSwgMywgMjQyLCAxODAsIDI0NSwgMjA5LCAyOSwgMywgMjQyLCAxODAsIDc1LCAyOSwgMywgMjQyLCAKKyAgICAxODAsIDc2LCAyOSwgMywgMjQyLCAxODAsIDIxMiwgNjUsIDI5LCAzLCAxNzYsIDI5LCAzLCAyMzMsIDIxNywgMjksIDMsIAorICAgIDIzNCwgOTIsIDI5LCAzLCAyMzUsIDEwLCAyOSwgMywgMjM0LCAxODEsIDI5LCAzLCAyMzQsIDE4MiwgMjksIDMsIDIzNCwgCisgICAgMjgsIDI5LCAzLCAyMzQsIDI3LCAyOSwgMywgMjMzLCAxODIsIDI5LCAzLCAyMzMsIDE3NiwgMjksIDMsIDIzMywgMTgxLCAKKyAgICAyOSwgMywgMjMzLCAxNzcsIDI5LCAzLCAyMzMsIDE3OCwgMjksIDMsIDIzMywgMTcxLCAyOSwgMywgMjMzLCAxNjUsIDI5LCAKKyAgICAzLCAyMzMsIDE2NywgMjksIDMsIDIzMywgMTcwLCAyOSwgMywgMjMzLCAxNjgsIDI5LCAzLCAyMzMsIDE2OSwgMjksIDMsIAorICAgIDIzMywgMTY2LCAyOSwgMywgMjMzLCAxNjQsIDI5LCAzLCAyMzMsIDE2MCwgMjksIDMsIDIzMywgMTYzLCAyOSwgMywgMjMzLCAKKyAgICAxNjEsIDI5LCAzLCAyMzMsIDE2MiwgMjksIDMsIDIxMiwgNjUsIDI5LCAzLCAyMTEsIDE5NSwgMjksIDMsIDIxMSwgMjUwLCAKKyAgICAyOSwgMywgMjEyLCA2NCwgMjksIDMsIDIxMiwgMTcsIDI5LCAzLCAyMTIsIDIyLCAyOSwgMywgMjExLCAyMjcsIDI5LCAzLCAKKyAgICAyMTEsIDIyNiwgMjksIDMsIDIyNSwgMTM5LCA2MSwgMjksIDMsIDIyNSwgMTM5LCA3MCwgMjksIDMsIDIyNSwgMTM5LCA3MywgCisgICAgMjksIDMsIDIyNSwgMTM5LCAyNTUsIDczLCAyOSwgMywgMjI1LCAxMzksIDI0NSwgMjA5LCAyOSwgMywgMjI1LCAxMzksIDc1LCAKKyAgICAyOSwgMywgMjI1LCAxMzksIDc2LCAyOSwgMywgMjEwLCAxMTYsIDI5LCAzLCAyMTAsIDEzLCAyOSwgMywgMjEwLCA0NCwgMjksIAorICAgIDMsIDIxMCwgMTE1LCAyOSwgMywgMjEwLCA5MiwgMjksIDMsIDIxMCwgOTQsIDI5LCAzLCAyMTAsIDIzLCAyOSwgMywgMjEwLCAKKyAgICAwLCAyOSwgMywgMjEwLCA4MiwgMjksIDMsIDIxMCwgNjIsIDI5LCAzLCAyMTAsIDY5LCAyOSwgMywgMjEwLCA4MSwgMjksIDMsIAorICAgIDIxMCwgNzMsIDI5LCAzLCAyMTAsIDc0LCAyOSwgMywgMjEwLCA2NywgMjksIDMsIDIxMCwgNTMsIDI5LCAzLCAxOTEsIDI5LCAKKyAgICAzLCAyMTAsIDIxMiwgMjksIDMsIDIxMSwgOCwgMjksIDMsIDIxMSwgMTAzLCAyOSwgMywgMjExLCA0NCwgMjksIDMsIDIxMSwgCisgICAgNDcsIDI5LCAzLCAyMTAsIDI0NCwgMjksIDMsIDIxMCwgMjM1LCAyOSwgMywgMjQ4LCAyMjEsIDI5LCAzLCAyNDYsIDc4LCAKKyAgICAyOSwgMywgMjQ4LCAzLCAyOSwgMywgMjQ4LCAyMjAsIDI5LCAzLCAyNDgsIDc3LCAyOSwgMywgMjQ4LCA5MCwgMjksIDMsIAorICAgIDI0NywgMTQ1LCAyOSwgMywgMjQ2LCA0NywgMjksIDMsIDI0OCwgMTM1LCAyOSwgMywgMjQ4LCAxMDAsIDI5LCAzLCAyNDgsIAorICAgIDExMiwgMjksIDMsIDI0OCwgMTM0LCAyOSwgMywgMjQ4LCAxMjIsIDI5LCAzLCAyNDgsIDEyMywgMjksIDMsIDI0OCwgMTA1LCAKKyAgICAyOSwgMywgMjQ4LCA5MSwgMjksIDMsIDIzNSwgMTQxLCAyOSwgMywgMjM1LCA1MSwgMjksIDMsIDIzNSwgMTA4LCAyOSwgMywgCisgICAgMjM1LCAxNDAsIDI5LCAzLCAyMzUsIDEyNCwgMjksIDMsIDIzNSwgMTI2LCAyOSwgMywgMjM1LCA2OCwgMjksIDMsIDIzNSwgCisgICAgMzEsIDI5LCAzLCAyNDMsIDEzNSwgMjksIDMsIDI0MiwgMTEzLCAyOSwgMywgMjQyLCAyMTQsIDI5LCAzLCAyNDMsIDEzMiwgCisgICAgMjksIDMsIDI0MywgNTUsIDI5LCAzLCAyNDMsIDYyLCAyOSwgMywgMjQyLCAxNzQsIDI5LCAzLCAyNDIsIDE3MywgMjksIDMsIAorICAgIDI0MiwgNzgsIDI5LCAzLCAyNDIsIDc0LCAyOSwgMywgMjQyLCA3NywgMjksIDMsIDI0MiwgNzUsIDI5LCAzLCAyNDIsIDc2LCAKKyAgICAyOSwgMywgMjQzLCAyOSwgMjksIDMsIDI0MywgOSwgMjksIDMsIDI0MywgMTksIDI5LCAzLCAyNDMsIDI4LCAyOSwgMywgCisgICAgMjQzLCAyMywgMjksIDMsIDI0MywgMjQsIDI5LCAzLCAyNDMsIDEzLCAyOSwgMywgMjQyLCAyNTQsIDI5LCAzLCAyMTYsIAorICAgIDIwOCwgMjksIDMsIDIxNiwgMTM2LCAyOSwgMywgMjE2LCAxNzUsIDI5LCAzLCAyMTYsIDIwNywgMjksIDMsIDIxNiwgMTk0LCAKKyAgICAyOSwgMywgMjE2LCAxOTUsIDI5LCAzLCAyMTYsIDE1NiwgMjksIDMsIDIxNiwgMTI4LCAyOSwgMywgMjUwLCAxNTcsIDI5LCAKKyAgICAzLCAyNTAsIDY5LCAyOSwgMywgMjUwLCAxMTAsIDI5LCAzLCAyNTAsIDE1NiwgMjksIDMsIDI1MCwgMTI4LCAyOSwgMywgCisgICAgMjUwLCAxMzEsIDI5LCAzLCAyNTAsIDg2LCAyOSwgMywgMjUwLCA1OCwgMjksIDMsIDIyNSwgMTQ3LCAyOSwgMywgMjI1LCAKKyAgICAxMTQsIDI5LCAzLCAyMjUsIDEzMywgMjksIDMsIDIyNSwgMTQ2LCAyOSwgMywgMjI1LCAxMzUsIDI5LCAzLCAyMjUsIDEzNiwgCisgICAgMjksIDMsIDIyNSwgMTIxLCAyOSwgMywgMjI1LCAxMTAsIDI5LCAzLCAyMTUsIDE4MywgMjksIDMsIDIxNSwgMTYzLCAyOSwgCisgICAgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE4MiwgMjksIDMsIDIxNSwgMTc3LCAyOSwgMywgMjE1LCAxNzgsIDI5LCAzLCAKKyAgICAyMTUsIDE2NiwgMjksIDMsIDIxNSwgMTYxLCAyOSwgMywgMjE1LCAzOSwgMjksIDMsIDIxNSwgMzEsIDI5LCAzLCAyMTUsIAorICAgIDM1LCAyOSwgMywgMjE1LCAzOCwgMjksIDMsIDIxNSwgMzYsIDI5LCAzLCAyMTUsIDM3LCAyOSwgMywgMjE1LCAzMywgMjksIAorICAgIDMsIDIxNSwgMzIsIDI5LCAzLCAyNDQsIDE5NiwgMjksIDMsIDI0MywgMjM0LCAyOSwgMywgMjQ0LCAxMjEsIDI5LCAzLCAKKyAgICAyNDQsIDE5NSwgMjksIDMsIDI0NCwgMTQ3LCAyOSwgMywgMjQ0LCAxNTQsIDI5LCAzLCAyNDQsIDQzLCAyOSwgMywgMjQzLCAKKyAgICAyMTMsIDI5LCAzLCAxOTAsIDI5LCAzLCAyMjQsIDE1MCwgMjksIDMsIDIyNSwgMTA4LCAyOSwgMywgMjI2LCA4OSwgMjksIDMsIAorICAgIDIyNSwgMjExLCAyOSwgMywgMjI1LCAyMjEsIDI5LCAzLCAyMjUsIDE2LCAyOSwgMywgMjI0LCAxMTQsIDI5LCAzLCAyMjIsIAorICAgIDk5LCAyOSwgMywgMjMwLCAzMSwgMjksIDMsIDI0MywgMjA3LCAyOSwgMzgsIDI0MywgNTMsIDIyLCAyNSwgMjMzLCAyMywgCisgICAgNzgsIDI5LCAzOCwgMjUsIDIzMywgMjMsIDc4LCAyOSwgMzgsIDI0MywgNTMsIDc4LCAyOSwgMjIxLCAxNzMsIDc4LCAyOSwgCisgICAgMjExLCAyMDgsIDI5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDI5LCAyNDksIDIxOSwgMjksIDIyMCwgMTUwLCAyOSwgMjQ5LCAKKyAgICAyMjYsIDI5LCAyMjQsIDE5OSwgMjQ5LCAyMjYsIDI5LCAyMjQsIDEzLCA3OCwgMjksIDIyNiwgMTUsIDIyMCwgMTM3LCAyOSwgCisgICAgMjEsIDExMCwgMjksIDIxLCAxMDUsIDI5LCAyMSwgMTU4LCAyOSwgMjEsIDE2MSwgMjksIDIxLCAxODksIDI5LCAyMSwgMTk0LCAKKyAgICAyOSwgMjEsIDE5OCwgMjksIDIxLCAxOTUsIDI5LCAyMSwgMjAwLCAyOSwgNTQsIDIxNiwgMjQ3LCAyOSwgNTQsIDIxNSwgNzMsIAorICAgIDI5LCA1NCwgMjE2LCAxNjIsIDI5LCA1NCwgMjQ0LCAxNSwgMjksIDU0LCAyNDQsIDExNCwgMjksIDU0LCAyMTksIDExMSwgCisgICAgMjksIDU0LCAyMjAsIDExNiwgMjksIDU0LCAyNDUsIDE4NCwgMjksIDU0LCAyMjgsIDE5NSwgMjksIDU0LCAyNDAsIDIxMCwgCisgICAgMjksIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDI5LCAzLCAyMjEsIDE3NywgMjMwLCA0MiwgMjksIDMsIDIzMCwgMzgsIDI5LCAKKyAgICAzLCAyMzAsIDM5LCAyOSwgMywgMjMwLCA0MCwgMjksIDMsIDIyMSwgMTc3LCAyNTEsIDgzLCAyOSwgMywgMjUxLCA4MCwgMjksIAorICAgIDMsIDI1MSwgODEsIDI5LCAzLCAyNTEsIDgyLCAyOSwgMywgMjIxLCAxNzcsIDI0MywgMjEzLCAyOSwgMywgMjQzLCAyMDksIAorICAgIDI5LCAzLCAyNDMsIDIxMCwgMjksIDMsIDI0MywgMjExLCAyOSwgMywgMjIxLCAxNzcsIDIyNCwgMTE0LCAyOSwgMywgMjI0LCAKKyAgICAxMTAsIDI5LCAzLCAyMjQsIDExMSwgMjksIDMsIDIyNCwgMTEyLCAyOSwgMjE2LCAzMSwgMTY0LCAyMTAsIDI0NywgMjksIAorICAgIDIxNiwgMzEsIDE2NCwgMjQ4LCA0MSwgMjksIDIxNiwgMzEsIDE2NCwgMjIyLCAyMzgsIDI5LCAyMTYsIDMxLCAxNjQsIDIxOSwgCisgICAgMjUxLCAyMjIsIDIzOCwgMjksIDIxNiwgMzEsIDE2NCwgMjQ3LCAyMzUsIDI5LCAyMTYsIDMxLCAxNjQsIDIzNCwgMTY0LCAKKyAgICAyOSwgMjE2LCAzMSwgMTY0LCAyNTAsIDk0LCAyOSwgMjE2LCAzMSwgMTY0LCAyNDEsIDE3NywgMjksIDIxNiwgMzEsIDE2NCwgCisgICAgMjQ4LCA0MCwgMjksIDIxNiwgMzEsIDE2NCwgMjMzLCAxOTQsIDE2OSwgMSwgNjEsIDE2OSwgMSwgNzUsIDE2OSwgMSwgNzMsIAorICAgIDE2OSwgMSwgNzYsIDE2OSwgMSwgNzAsIDE2OSwgMSwgMjE0LCAxMDUsIDE2OSwgMSwgMjQzLCAxMzUsIDE2OSwgMSwgMTc2LCAKKyAgICAxNjksIDEsIDI0MywgNjIsIDE2OSwgMSwgMjQyLCAyMTQsIDE2OSwgMSwgMjQyLCAxNzQsIDE2OSwgMSwgMjQyLCAxMTMsIAorICAgIDE2OSwgMSwgMjQyLCA3OSwgMTY5LCAxLCAxNjIsIDE2OSwgMSwgMjQxLCAyMzgsIDE2OSwgMSwgMjQxLCAxODAsIDE2OSwgMSwgCisgICAgMjQxLCA2OCwgMTY5LCAxLCAyNDAsIDIyMiwgMTY5LCAxLCAyNDAsIDIwMSwgMTY5LCAxLCAyMzMsIDEzNSwgMTY5LCAxLCAKKyAgICAyMzMsIDU4LCAxNjksIDEsIDIzMiwgMjQxLCAxNjksIDEsIDIzMiwgMTU2LCAxNjksIDEsIDIzMiwgOTgsIDE2OSwgMSwgCisgICAgMjMyLCA3MSwgMTY5LCAxLCAxODQsIDE2OSwgMSwgMjMxLCA5MSwgMTY5LCAxLCAyMzAsIDIzMCwgMTY5LCAxLCAyMzAsIAorICAgIDE2MSwgMTY5LCAxLCAyMzAsIDEwMiwgMTY5LCAxLCAxOTcsIDE2OSwgMSwgMjQxLCA5MCwgMTY5LCAxLCAyMjksIDIxMywgCisgICAgMTY5LCAxLCAyMjksIDEwNywgMTY5LCAxLCAyMjgsIDIzMywgMTY5LCAxLCAyMjgsIDc0LCAxNjksIDEsIDIyNywgMjM3LCAKKyAgICAxNjksIDEsIDIyNywgMTc2LCAxNjksIDEsIDIyNCwgMjksIDE2OSwgMSwgMjI0LCAxNiwgMTY5LCAxLCAyMjQsIDksIDE2OSwgCisgICAgMSwgMjI0LCAxLCAxNjksIDEsIDIyMywgMjQ2LCAxNjksIDEsIDIyMywgMjQ0LCAxNjksIDEsIDIwNiwgMTY5LCAxLCAyMjIsIAorICAgIDkxLCAxNjksIDEsIDIyMSwgMTgxLCAxNjksIDEsIDIxOSwgMTkxLCAxNjksIDEsIDIxOSwgNTgsIDE2OSwgMSwgMjE4LCA4MywgCisgICAgMTY5LCAxLCAyMTgsIDIsIDE2OSwgMSwgMjQ4LCAyMjEsIDE2OSwgMSwgMjE3LCAxMDUsIDE2OSwgMSwgMjQ4LCA5MCwgMTY5LCAKKyAgICAxLCAyMTcsIDIyLCAxNjksIDEsIDI0OCwgMywgMTY5LCAxLCAyMTYsIDExNywgMTY5LCAxLCAyNDcsIDE0NSwgMTY5LCAxLCAKKyAgICAyNDYsIDc4LCAxNjksIDEsIDI0NiwgNTAsIDE2OSwgMSwgMjQ3LCAxNTYsIDE2OSwgMSwgMjE2LCA1OSwgMTY5LCAxLCAyMTYsIAorICAgIDU4LCAxNjksIDEsIDIxNiwgNDcsIDE2OSwgMSwgMjE2LCA0NiwgMTY5LCAxLCAyMTYsIDQ1LCAxNjksIDEsIDIxNiwgNDQsIAorICAgIDE2OSwgMSwgMjE1LCAxODMsIDE2OSwgMSwgMjE1LCAxNzgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjYsIAorICAgIDE2OSwgMSwgMjE1LCAxNjMsIDE2OSwgMSwgMjE1LCAxNjIsIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAKKyAgICAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAKKyAgICAxNjksIDEsIDE5MSwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAKKyAgICAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAyNDAsIDE2OCwgMTgsIDE5LCA3NSwgMTgsIDE5LCAyNTUsIAorICAgIDM3LCAxOCwgMTksIDczLCAxOCwgMTksIDIzNiwgMzMsIDE4LCAxOSwgNzYsIDE4LCAxOSwgMjI2LCAxODMsIDE4LCAxOSwgCisgICAgMjExLCAxMTYsIDIyNiwgMTgzLCAxOCwgMTksIDcyLCAyNDUsIDIwOSwgMTgsIDE5LCA3MiwgNzMsIDE4LCAxOSwgNjEsIDE4LCAKKyAgICAxOSwgMjU1LCA3MywgMTgsIDE5LCAyMTIsIDIyLCAxOCwgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIAorICAgIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAKKyAgICAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTEsIDIxNSwgMTgsIDE5LCAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAKKyAgICAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIDE5LCAyMjksIDE5MCwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIAorICAgIDIwMSwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIDE5LCAyNDIsIDE4MCwgMjE4LCAxMjksIDE4LCAxOSwgNDAsIAorICAgIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxMzYsIDE4LCAxOSwgNDAsIDI1MSwgMTc1LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIAorICAgIDQwLCAyMTYsIDE0LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCA0NCwgMTYzLCAyMjIsIDIzMywgMTgsIDE5LCA0MCwgCisgICAgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgNDAsIDUyLCAyMTksIDI1MSwgNjcsIDIxOCwgOTAsIDE4LCAKKyAgICAxOSwgNDAsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMTgsIDE5LCA0MCwgMjE5LCAyNTEsIDIwMywgOTEsIDE4LCAxOSwgNDAsIAorICAgIDIyNSwgMjIsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4NywgMTgsIDE5LCAyNDUsIDE1MCwgMTgsIDE5LCAyMzUsIDI1NSwgCisgICAgMTgsIDE5LCAyMjYsIDE5NiwgMTgsIDE5LCAyNTQsIDEyMywgMTgsIDE5LCAyMjUsIDIyMSwgMTgsIDE5LCAyMjYsIDg3LCAKKyAgICAxOCwgMTksIDIyNSwgMTA4LCAxOCwgMTksIDIyNSwgNzEsIDE4LCAxOSwgMjI1LCAxNiwgMTgsIDE5LCAyMjQsIDI0OSwgMTgsIAorICAgIDE5LCAyMTEsIDExNiwgMjI0LCAyNDksIDE4LCAxOSwgNzIsIDI0MSwgMjIwLCAxOCwgMTksIDcyLCAyNDEsIDE4MCwgMTgsIAorICAgIDE5LCAxOTAsIDE4LCAxOSwgMjI2LCA4OSwgMTgsIDE5LCAyMjQsIDExMiwgMTgsIDE5LCAxNTksIDIyNCwgMTEyLCAxOCwgCisgICAgMTksIDIyNCwgMTEwLCAxOCwgMTksIDE1OSwgMjI0LCAxMTAsIDE4LCAxOSwgMjI0LCAxMDksIDE4LCAxOSwgMTU5LCAyMjQsIAorICAgIDEwOSwgMTgsIDE5LCAyMjQsIDEwNywgMTgsIDE5LCAxNTksIDIyNCwgMTA3LCAxOCwgMTksIDIyNCwgMTA2LCAxOCwgMTksIAorICAgIDE1OSwgMjI0LCAxMDYsIDE4LCAxOSwgMjI0LCAxMTQsIDE4LCAxOSwgMTU5LCAyMjQsIDExNCwgMTgsIDE5LCAyMjQsIDExMywgCisgICAgMTgsIDE5LCAxNTksIDIyNCwgMTEzLCAxOCwgMTksIDIxMSwgMTE2LCAyMjQsIDExMywgMTgsIDE5LCAyMjYsIDEwNSwgMTgsIAorICAgIDE5LCAxNTksIDIyNiwgMTA1LCAxOCwgMTksIDcyLCAyNDIsIDYwLCAxOCwgMTksIDIxNywgMjIsIDE4LCAxOSwgMjE3LCA5OSwgCisgICAgMTgsIDE5LCAyMTYsIDExNywgMTgsIDE5LCAyMTYsIDEwMywgMTgsIDE5LCAxMTEsIDE4LCAxOSwgMjE2LCAxNywgMTgsIDE5LCAKKyAgICAyMTEsIDExNiwgMjE2LCAxNywgMTgsIDE5LCA3MiwgMjQ4LCA3NywgMTgsIDE5LCA3MiwgMjQ4LCAzLCAxOCwgMTksIDIxNywgCisgICAgMTA1LCAxOCwgMTksIDIxNywgMTAxLCAxOCwgMTksIDIxNSwgNzgsIDE4LCAxOSwgMTU5LCAyMTUsIDc4LCAxOCwgMTksIAorICAgIDIxNSwgNjIsIDE4LCAxOSwgMTU5LCAyMTUsIDYyLCAxOCwgMTksIDIxNSwgNjEsIDE4LCAxOSwgMTU5LCAyMTUsIDYxLCAxOCwgCisgICAgMTksIDEwNSwgMTgsIDE5LCAxNTksIDEwNSwgMTgsIDE5LCAyMTUsIDU0LCAxOCwgMTksIDE1OSwgMjE1LCA1NCwgMTgsIDE5LCAKKyAgICAyMTUsIDgwLCAxOCwgMTksIDE1OSwgMjE1LCA4MCwgMTgsIDE5LCAyMTUsIDc5LCAxOCwgMTksIDE1OSwgMjE1LCA3OSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjE1LCA3OSwgMTgsIDE5LCAyMTcsIDE1MiwgMTgsIDE5LCAyMTUsIDE1MSwgMTgsIDE5LCAyMTUsIAorICAgIDEzNSwgMTgsIDE5LCAyMTUsIDEzMywgMTgsIDE5LCAyMTUsIDE1NiwgMTgsIDE5LCAyMzQsIDE4MiwgMTgsIDE5LCAyMzUsIAorICAgIDcsIDE4LCAxOSwgMjM0LCA5MiwgMTgsIDE5LCAyMzQsIDgzLCAxOCwgMTksIDIzNCwgMjgsIDE4LCAxOSwgMjM0LCAxMCwgCisgICAgMTgsIDE5LCAyMTEsIDExNiwgMjM0LCAxMCwgMTgsIDE5LCAxNzYsIDE4LCAxOSwgMjM1LCAxMCwgMTgsIDE5LCAyMzMsIAorICAgIDE3OCwgMTgsIDE5LCAxNTksIDIzMywgMTc4LCAxOCwgMTksIDIzMywgMTc2LCAxOCwgMTksIDE1OSwgMjMzLCAxNzYsIDE4LCAKKyAgICAxOSwgMjMzLCAxNzUsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NSwgMTgsIDE5LCAyMzMsIDE3NCwgMTgsIDE5LCAxNTksIDIzMywgCisgICAgMTc0LCAxOCwgMTksIDIzMywgMTczLCAxOCwgMTksIDE1OSwgMjMzLCAxNzMsIDE4LCAxOSwgMjMzLCAxODIsIDE4LCAxOSwgCisgICAgMTU5LCAyMzMsIDE4MiwgMTgsIDE5LCAyMzMsIDE4MSwgMTgsIDE5LCAxNTksIDIzMywgMTgxLCAxOCwgMTksIDIyOSwgMTkwLCAKKyAgICAyMzMsIDE4MSwgMTgsIDE5LCAyMzUsIDIzLCAxOCwgMTksIDIzMywgMTgzLCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgMTc2LCAKKyAgICAxOCwgMTksIDIxOSwgMjcsIDIzNCwgODQsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAyMywgMTgsIDE5LCAyMTksIDI3LCAyMzQsIAorICAgIDI0OCwgMTgsIDE5LCAyNTAsIDE5MCwgMTgsIDE5LCAyNTEsIDMxLCAxOCwgMTksIDI1MCwgNTEsIDE4LCAxOSwgMjUwLCA0MSwgCisgICAgMTgsIDE5LCAyNDksIDIzOCwgMTgsIDE5LCAyNDksIDE3NCwgMTgsIDE5LCAyMTEsIDExNiwgMjQ5LCAxNzQsIDE4LCAxOSwgCisgICAgMjUxLCAzMywgMTgsIDE5LCAyNTEsIDMyLCAxOCwgMTksIDI0OSwgNzksIDE4LCAxOSwgMTU5LCAyNDksIDc5LCAxOCwgMTksIAorICAgIDI0OSwgNzcsIDE4LCAxOSwgMTU5LCAyNDksIDc3LCAxOCwgMTksIDI0OSwgNzYsIDE4LCAxOSwgMTU5LCAyNDksIDc2LCAxOCwgCisgICAgMTksIDI0OSwgNzUsIDE4LCAxOSwgMTU5LCAyNDksIDc1LCAxOCwgMTksIDI0OSwgNzQsIDE4LCAxOSwgMTU5LCAyNDksIDc0LCAKKyAgICAxOCwgMTksIDI0OSwgODEsIDE4LCAxOSwgMTU5LCAyNDksIDgxLCAxOCwgMTksIDI0OSwgODAsIDE4LCAxOSwgMTU5LCAyNDksIAorICAgIDgwLCAxOCwgMTksIDIyOSwgMTkwLCAyNDksIDgwLCAxOCwgMTksIDI1MSwgNjYsIDE4LCAxOSwgMjIxLCAyMDksIDIxNiwgCisgICAgMjEwLCAxOCwgMTksIDIzMSwgOTEsIDE4LCAxOSwgMjMxLCAyMzYsIDE4LCAxOSwgMjMwLCAyMzAsIDE4LCAxOSwgMjMwLCAKKyAgICAyMDEsIDE4LCAxOSwgMjMwLCAxNjEsIDE4LCAxOSwgMjMwLCAxMzIsIDE4LCAxOSwgMjExLCAxMTYsIDIzMCwgMTMyLCAxOCwgCisgICAgMTksIDE4NCwgMTgsIDE5LCAyMzEsIDIzNywgMTgsIDE5LCAyMzAsIDQwLCAxOCwgMTksIDE1OSwgMjMwLCA0MCwgMTgsIDE5LCAKKyAgICAyMzAsIDM4LCAxOCwgMTksIDE1OSwgMjMwLCAzOCwgMTgsIDE5LCAyMzAsIDM3LCAxOCwgMTksIDE1OSwgMjMwLCAzNywgMTgsIAorICAgIDE5LCAyMzAsIDM2LCAxOCwgMTksIDE1OSwgMjMwLCAzNiwgMTgsIDE5LCAyMzAsIDM1LCAxOCwgMTksIDE1OSwgMjMwLCAzNSwgCisgICAgMTgsIDE5LCAyMzAsIDQyLCAxOCwgMTksIDE1OSwgMjMwLCA0MiwgMTgsIDE5LCAyMzAsIDQxLCAxOCwgMTksIDE1OSwgMjMwLCAKKyAgICA0MSwgMTgsIDE5LCAyMjksIDE5MCwgMjMwLCA0MSwgMTgsIDE5LCAxOTMsIDE4LCAxOSwgMTU5LCAxOTMsIDE4LCAxOSwgCisgICAgMjMwLCAyMzQsIDE4LCAxOSwgMjUzLCAyMDUsIDE5MywgMTgsIDE5LCAyMjEsIDIwOSwgMTkzLCAxOCwgMTksIDIyOSwgMTA3LCAKKyAgICAxOCwgMTksIDIyOSwgMjI0LCAxOCwgMTksIDIyOCwgMjMzLCAxOCwgMTksIDIyOCwgMjA4LCAxOCwgMTksIDIyOCwgNzQsIAorICAgIDE4LCAxOSwgMjI4LCA2NCwgMTgsIDE5LCAyMTEsIDExNiwgMjI4LCA2NCwgMTgsIDE5LCAxOTcsIDE4LCAxOSwgMjI5LCAKKyAgICAyMjUsIDE4LCAxOSwgMjI3LCAxNzIsIDE4LCAxOSwgMTU5LCAyMjcsIDE3MiwgMTgsIDE5LCAyMjcsIDE3NCwgMTgsIDE5LCAKKyAgICAxNTksIDIyNywgMTc0LCAxOCwgMTksIDIyNywgMTczLCAxOCwgMTksIDE1OSwgMjI3LCAxNzMsIDE4LCAxOSwgMjI5LCAxOTAsIAorICAgIDIyNywgMTczLCAxOCwgMTksIDIzMCwgMjUsIDE4LCAxOSwgNzIsIDIyOSwgNzksIDE4LCAxOSwgMjI4LCAyMzgsIDE4LCAxOSwgCisgICAgMjMzLCA1OCwgMTgsIDE5LCAyMzMsIDEzMywgMTgsIDE5LCAyMzIsIDI0MSwgMTgsIDE5LCAyMzIsIDIyNywgMTgsIDE5LCAKKyAgICAyMzIsIDE1NiwgMTgsIDE5LCAyMzIsIDEyNywgMTgsIDE5LCAyMTEsIDExNiwgMjMyLCAxMjcsIDE4LCAxOSwgMjMzLCAxMzUsIAorICAgIDE4LCAxOSwgMjMzLCAxMzQsIDE4LCAxOSwgMjMyLCA2OCwgMTgsIDE5LCAxNTksIDIzMiwgNjgsIDE4LCAxOSwgMjMyLCA2NywgCisgICAgMTgsIDE5LCAxNTksIDIzMiwgNjcsIDE4LCAxOSwgMjMyLCA2NiwgMTgsIDE5LCAxNTksIDIzMiwgNjYsIDE4LCAxOSwgMjMyLCAKKyAgICA2NSwgMTgsIDE5LCAxNTksIDIzMiwgNjUsIDE4LCAxOSwgMjMyLCA2NCwgMTgsIDE5LCAxNTksIDIzMiwgNjQsIDE4LCAxOSwgCisgICAgMjMyLCA3MCwgMTgsIDE5LCAxNTksIDIzMiwgNzAsIDE4LCAxOSwgMjMyLCA2OSwgMTgsIDE5LCAxNTksIDIzMiwgNjksIDE4LCAKKyAgICAxOSwgMTU2LCAxOCwgMTksIDE1OSwgMTU2LCAxOCwgMTksIDE0NywgMTU2LCAxOCwgMTksIDIyMSwgMTgxLCAxOCwgMTksIAorICAgIDIyMiwgMjksIDE4LCAxOSwgMjE5LCAxOTEsIDE4LCAxOSwgMjE5LCAxNzUsIDE4LCAxOSwgMjE5LCA1OCwgMTgsIDE5LCAKKyAgICAyMTksIDQwLCAxOCwgMTksIDIxMSwgMTE2LCAyMTksIDQwLCAxOCwgMTksIDIwNiwgMTgsIDE5LCAyMjIsIDMxLCAxOCwgMTksIAorICAgIDIxNywgMjQ5LCAxOCwgMTksIDE1OSwgMjE3LCAyNDksIDE4LCAxOSwgMjE3LCAyNDMsIDE4LCAxOSwgMTU5LCAyMTcsIDI0MywgCisgICAgMTgsIDE5LCAyMTcsIDI0MiwgMTgsIDE5LCAxNTksIDIxNywgMjQyLCAxOCwgMTksIDIxNywgMjM4LCAxOCwgMTksIDE1OSwgCisgICAgMjE3LCAyMzgsIDE4LCAxOSwgMjE3LCAyMzcsIDE4LCAxOSwgMTU5LCAyMTcsIDIzNywgMTgsIDE5LCAyMTcsIDI1MywgMTgsIAorICAgIDE5LCAxNTksIDIxNywgMjUzLCAxOCwgMTksIDIxNywgMjUyLCAxOCwgMTksIDE1OSwgMjE3LCAyNTIsIDE4LCAxOSwgMjI5LCAKKyAgICAxOTAsIDIxNywgMjUyLCAxOCwgMTksIDIyMiwgOTEsIDE4LCAxOSwgMjUzLCAyMDUsIDIyMiwgOTEsIDE4LCAxOSwgMjE3LCAKKyAgICAyNTQsIDE4LCAxOSwgMjUxLCAyMTgsIDIyMiwgOTEsIDE4LCAxOSwgMjMwLCAxMjcsIDIxOSwgMTA4LCAxOCwgMTksIDIyOSwgCisgICAgMTkwLCAyMTksIDk5LCAxOCwgMTksIDIyOSwgMTkwLCAyMjIsIDg5LCAxOCwgMTksIDIyOSwgMTkwLCAyMTgsIDIzNSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjE4LCA4NiwgMTgsIDE5LCAyMjksIDE5MCwgMjE5LCA5OCwgMTgsIDE5LCAyMjksIDE5MCwgMjIxLCAKKyAgICAxODQsIDE4LCAxOSwgMjIwLCA2MywgMTgsIDE5LCAyMjAsIDMyLCAxOCwgMTksIDIyMCwgMjcsIDE4LCAxOSwgMjIwLCA3LCAKKyAgICAxOCwgMTksIDIyMCwgMSwgMTgsIDE5LCAyMjAsIDEwMiwgMTgsIDE5LCAyMjAsIDk4LCAxOCwgMTksIDIxOSwgMjA2LCAxOCwgCisgICAgMTksIDE1OSwgMjE5LCAyMDYsIDE4LCAxOSwgMjE5LCAyMDUsIDE4LCAxOSwgMTU5LCAyMTksIDIwNSwgMTgsIDE5LCAyMTksIAorICAgIDIwNCwgMTgsIDE5LCAxNTksIDIxOSwgMjA0LCAxOCwgMTksIDIxOSwgMjAzLCAxOCwgMTksIDE1OSwgMjE5LCAyMDMsIDE4LCAKKyAgICAxOSwgMjE5LCAyMDIsIDE4LCAxOSwgMTU5LCAyMTksIDIwMiwgMTgsIDE5LCAyMTksIDIwOCwgMTgsIDE5LCAxNTksIDIxOSwgCisgICAgMjA4LCAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAxOSwgMjIwLCAxMDQsIDE4LCAxOSwgCisgICAgMjExLCA0NywgMTgsIDE5LCAyMTEsIDEwMSwgMTgsIDE5LCAyMTEsIDgsIDE4LCAxOSwgMjEwLCAyNTUsIDE4LCAxOSwgMjEwLCAKKyAgICAyNDQsIDE4LCAxOSwgMjEwLCAyMjksIDE4LCAxOSwgMjExLCAxMTYsIDIxMCwgMjI5LCAxOCwgMTksIDE5MSwgMTgsIDE5LCAKKyAgICAyMTEsIDEwMywgMTgsIDE5LCAyMTAsIDE3NCwgMTgsIDE5LCAxNTksIDIxMCwgMTc0LCAxOCwgMTksIDIxMCwgMTczLCAxOCwgCisgICAgMTksIDE1OSwgMjEwLCAxNzMsIDE4LCAxOSwgMjEwLCAxNzIsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MiwgMTgsIDE5LCAyMTAsIAorICAgIDE3MSwgMTgsIDE5LCAxNTksIDIxMCwgMTcxLCAxOCwgMTksIDIxMCwgMTcwLCAxOCwgMTksIDE1OSwgMjEwLCAxNzAsIDE4LCAKKyAgICAxOSwgMjEwLCAxNzYsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NiwgMTgsIDE5LCAyMTAsIDE3NSwgMTgsIDE5LCAxNTksIDIxMCwgCisgICAgMTc1LCAxOCwgMTksIDIyOSwgMTkwLCAyMTAsIDE3NSwgMTgsIDE5LCAyMTEsIDExNywgMTgsIDE5LCAyNTIsIDQsIDIxMSwgCisgICAgMTE3LCAxOCwgMTksIDE1OSwgMjExLCAxMTcsIDE4LCAxOSwgMjIxLCAyMDksIDIxMSwgOCwgMTgsIDE5LCAyMjMsIDEyOCwgCisgICAgMTgsIDE5LCAyMjMsIDIyMywgMjIzLCAxMjgsIDE4LCAxOSwgMTU5LCAyMzMsIDU4LCAxOCwgMTksIDIyMywgMTgzLCAxOCwgCisgICAgMTksIDIyMywgMzUsIDE4LCAxOSwgMjIyLCAyMzksIDE4LCAxOSwgMjIyLCAyMTEsIDE4LCAxOSwgMjIyLCAxOTcsIDE4LCAKKyAgICAxOSwgMTU5LCAyMzIsIDE1NiwgMTgsIDE5LCAyMDUsIDE4LCAxOSwgMjIzLCAxODQsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNSwgCisgICAgMTgsIDE5LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTksIDIyMiwgMTA4LCAxOCwgMTksIDE1MywgMTgsIDE5LCAxNTksIDE1MywgCisgICAgMTgsIDE5LCAxNDcsIDE1MywgMTgsIDE5LCAyNDQsIDE1NCwgMTgsIDE5LCAyNDQsIDE5MywgMTgsIDE5LCAyNDQsIDEyMSwgCisgICAgMTgsIDE5LCAyNDQsIDEwOCwgMTgsIDE5LCAyNDQsIDQzLCAxOCwgMTksIDI0NCwgMzQsIDE4LCAxOSwgMjQ0LCAxOTYsIDE4LCAKKyAgICAxOSwgMjQ0LCAxOTUsIDE4LCAxOSwgMjQzLCAyMTIsIDE4LCAxOSwgMTU5LCAyNDMsIDIxMiwgMTgsIDE5LCAyNDUsIDYsIAorICAgIDE4LCAxOSwgMjE2LCAxOTUsIDE4LCAxOSwgMjMwLCAyMywgMjE2LCAxOTUsIDE4LCAxOSwgMjE2LCAxNzUsIDE4LCAxOSwgCisgICAgMjMwLCAyMywgMjE2LCAxNzUsIDE4LCAxOSwgMjE2LCAxNzEsIDE4LCAxOSwgMjMwLCAyMywgMjE2LCAxNzEsIDE4LCAxOSwgCisgICAgMjE2LCAxNTYsIDE4LCAxOSwgMjE2LCAxNTMsIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAyMDcsIDE4LCAxOSwgCisgICAgMjE2LCAxMjcsIDE4LCAxOSwgMTU5LCAyMTYsIDEyNywgMTgsIDE5LCAyMTYsIDIxMCwgMTgsIDE5LCAyMTUsIDE0MiwgMTgsIAorICAgIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDEzOSwgMTgsIDE5LCAyMTUsIDE0NCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIAorICAgIDE5LCAyMTUsIDUyLCAxOCwgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIAorICAgIDIyNywgMTkzLCAyNDEsIDIzOCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCAxODAsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgCisgICAgMTYxLCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDY4LCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDUzLCAxOCwgMTksIDIyNywgCisgICAgMTkzLCAxNjIsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNDYsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNjAsIDE4LCAxOSwgCisgICAgMjI3LCAxOTIsIDI0MiwgNjAsIDE4LCAxOSwgMjQxLCAxNTQsIDE4LCAxOSwgMjI0LCA4NCwgMTgsIDE5LCAyMjQsIDUzLCAKKyAgICAxOCwgMTksIDIyNCwgNDgsIDE4LCAxOSwgMjI0LCA0MiwgMTgsIDE5LCAyMjQsIDM3LCAxOCwgMTksIDIyNCwgODgsIDE4LCAKKyAgICAxOSwgMjI0LCA4NywgMTgsIDE5LCAyMjQsIDk2LCAxOCwgMTksIDIxNiwgNTUsIDE4LCAxOSwgMjE2LCA1MywgMTgsIDE5LCAKKyAgICAyMTYsIDUyLCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMTU5LCAyMjMsIDEyOCwgMTgsIDE5LCAxNTksIDIyMywgMzUsIAorICAgIDE4LCAxOSwgMTU5LCAyMjIsIDIxMSwgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDc1LCAxOCwgMTksIDIyOSwgCisgICAgMjcsIDE4LCAxOSwgMjI5LCAyMywgMTgsIDE5LCAyMjksIDQsIDE4LCAxOSwgMjI4LCAyNTUsIDE4LCAxOSwgMjI5LCA3NywgCisgICAgMTgsIDE5LCAyMjksIDc2LCAxOCwgMTksIDIyOSwgNzksIDE4LCAxOSwgMjI4LCAxMDMsIDE4LCAxOSwgMjIxLCAyMDksIAorICAgIDIyMCwgNjMsIDE4LCAxOSwgMjIxLCAyMDksIDIyMCwgMzIsIDE4LCAxOSwgMjIxLCAyMDksIDIyMCwgNywgMTgsIDE5LCAKKyAgICAyMjEsIDIwOSwgMjIwLCAxMDIsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTk1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIAorICAgIDE3NSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNTYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMjA4LCAxOCwgMTksIDIxMSwgCisgICAgMjEzLCAyMTYsIDIxMCwgMTgsIDE5LCAyMzIsIDI0OCwgMTgsIDE5LCAyMzIsIDI0NywgMTgsIDE5LCAyMzIsIDI0NiwgMTgsIAorICAgIDE5LCAyMzIsIDI0NSwgMTgsIDE5LCAyMzIsIDI1NCwgMTgsIDE5LCAyMzIsIDI1MywgMTgsIDE5LCAyMzIsIDI1NSwgMTgsIAorICAgIDE5LCAyMTYsIDIwOSwgMjE2LCAxOTUsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTc1LCAxOCwgMTksIDIxNiwgMjA5LCAKKyAgICAyMTYsIDE3MSwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNTYsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTUzLCAxOCwgMTksIAorICAgIDIxNiwgMjA5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAyMDcsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgCisgICAgMjEwLCAxOCwgMTksIDI1NCwgMTg5LCAyNTMsIDE1OCwgMTgsIDE5LCAyNTEsIDIxOCwgNzUsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDczLCAxOCwgMTksIDI1MSwgMjE4LCA3NiwgMTgsIDE5LCAyNTEsIDIxOCwgNjEsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMiwgCisgICAgMjIsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMSwgMjUwLCAxOCwgMTksIDI1MSwgMjE4LCAyMTEsIDIyNywgMTgsIDE5LCAyNTEsIAorICAgIDIxOCwgMjEyLCA2NSwgMTgsIDE5LCAyNTEsIDIxOCwgMjI5LCAxMDcsIDE4LCAxOSwgMjUxLCAyMTgsIDIyOCwgMjMzLCAxOCwgCisgICAgMTksIDI1MSwgMjE4LCAyMjgsIDc0LCAxOCwgMTksIDI1MSwgMjE4LCAxOTcsIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgMTgyLCAKKyAgICAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDkyLCAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDI4LCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICAxNzYsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgMjM4LCAxOCwgMTksIDIyMSwgMjA5LCAyNDEsIDE4MCwgMTgsIDE5LCAyMjEsIAorICAgIDIwOSwgMjQxLCA2OCwgMTgsIDE5LCAyMjEsIDIwOSwgMTYyLCAxOCwgMTksIDcyLCAyNDIsIDIyMCwgMTgsIDE5LCA3MiwgCisgICAgMjQyLCAyMjQsIDE4LCAxOSwgNzIsIDI0MiwgMjM2LCAxOCwgMTksIDcyLCAyNDIsIDIzNSwgMTgsIDE5LCA3MiwgMjQyLCAKKyAgICAyMjUsIDE4LCAxOSwgNzIsIDI0MiwgMjQ5LCAxOCwgMTksIDcyLCAyMjIsIDE0MCwgMTgsIDE5LCA3MiwgMjIyLCAyMTEsIAorICAgIDE4LCAxOSwgNzIsIDIyMywgMTI4LCAxOCwgMTksIDcyLCAyMjMsIDEwOCwgMTgsIDE5LCA3MiwgMjIzLCAzNSwgMTgsIDE5LCAKKyAgICA3MiwgMjA1LCAxOCwgMTksIDcyLCAyMTEsIDE5NSwgMTgsIDE5LCA3MiwgMjExLCAyMjcsIDE4LCAxOSwgNzIsIDIxMiwgMjIsIAorICAgIDE4LCAxOSwgNzIsIDIxMiwgMTcsIDE4LCAxOSwgNzIsIDIxMSwgMjUwLCAxOCwgMTksIDcyLCAyMTIsIDY1LCAxOCwgMTksIAorICAgIDcyLCAyNDAsIDE5NCwgMTgsIDE5LCA3MiwgMjQwLCAxOTUsIDE4LCAxOSwgNzIsIDI0MCwgMTk4LCAxOCwgMTksIDcyLCAKKyAgICAyNDAsIDE5NywgMTgsIDE5LCA3MiwgMjQwLCAxOTYsIDE4LCAxOSwgNzIsIDI0MCwgMjAwLCAxOCwgMTksIDcyLCAyMTYsIAorICAgIDEzNiwgMTgsIDE5LCA3MiwgMjE2LCAxNTYsIDE4LCAxOSwgNzIsIDIxNiwgMTk1LCAxOCwgMTksIDcyLCAyMTYsIDE5NCwgCisgICAgMTgsIDE5LCA3MiwgMjE2LCAxNzUsIDE4LCAxOSwgNzIsIDIxNiwgMjA4LCAxOCwgMTksIDcyLCAyMTUsIDEyMywgMTgsIDE5LCAKKyAgICA3MiwgMjE1LCAxMzMsIDE4LCAxOSwgNzIsIDIxNSwgMTUxLCAxOCwgMTksIDcyLCAyMTUsIDE1MCwgMTgsIDE5LCA3MiwgCisgICAgMjE1LCAxMzUsIDE4LCAxOSwgNzIsIDIxNSwgMTU2LCAxOCwgMTksIDcyLCAyMjQsIDE1MCwgMTgsIDE5LCA3MiwgMjI1LCAKKyAgICAxNiwgMTgsIDE5LCA3MiwgMjI1LCAyMjEsIDE4LCAxOSwgNzIsIDIyNSwgMjExLCAxOCwgMTksIDcyLCAyMjUsIDEwOCwgMTgsIAorICAgIDE5LCA3MiwgMTkwLCAxOCwgMTksIDcyLCAyMjYsIDEwNSwgMTgsIDE5LCA3MiwgMjQyLCAxMTMsIDE4LCAxOSwgNzIsIDI0MiwgCisgICAgMTc0LCAxOCwgMTksIDcyLCAyNDMsIDYyLCAxOCwgMTksIDcyLCAyNDMsIDU1LCAxOCwgMTksIDcyLCAyNDIsIDIxNCwgMTgsIAorICAgIDE5LCA3MiwgMjQzLCAxMzUsIDE4LCAxOSwgNzIsIDIzNCwgMTAwLCAxOCwgMTksIDcyLCAyMzQsIDEwNSwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCAxMTksIDE4LCAxOSwgNzIsIDIzNCwgMTE4LCAxOCwgMTksIDcyLCAyMzQsIDExMiwgMTgsIDE5LCA3MiwgMjM0LCAKKyAgICAxMzIsIDE4LCAxOSwgNzIsIDIzNCwgNDEsIDE4LCAxOSwgNzIsIDIzNCwgNDIsIDE4LCAxOSwgNzIsIDIzNCwgNDUsIDE4LCAKKyAgICAxOSwgNzIsIDIzNCwgNDQsIDE4LCAxOSwgNzIsIDIzNCwgNDMsIDE4LCAxOSwgNzIsIDIzNCwgNDYsIDE4LCAxOSwgNzIsIAorICAgIDIzNCwgNDcsIDE4LCAxOSwgNzIsIDIyNywgMjM3LCAxOCwgMTksIDcyLCAyMjgsIDc0LCAxOCwgMTksIDcyLCAyMjksIDEwNywgCisgICAgMTgsIDE5LCA3MiwgMjI5LCAxMDMsIDE4LCAxOSwgNzIsIDIyOCwgMjMzLCAxOCwgMTksIDcyLCAxOTcsIDE4LCAxOSwgNzIsIAorICAgIDIzMCwgMTAyLCAxOCwgMTksIDcyLCAyMzAsIDE2MSwgMTgsIDE5LCA3MiwgMjMxLCA5MSwgMTgsIDE5LCA3MiwgMjMxLCA4MCwgCisgICAgMTgsIDE5LCA3MiwgMjMwLCAyMzAsIDE4LCAxOSwgNzIsIDE4NCwgMTgsIDE5LCA3MiwgMjEwLCAyMTIsIDE4LCAxOSwgNzIsIAorICAgIDIxMCwgMjQ0LCAxOCwgMTksIDcyLCAyMTEsIDQ3LCAxOCwgMTksIDcyLCAyMTEsIDQ0LCAxOCwgMTksIDcyLCAyMTEsIDgsIAorICAgIDE4LCAxOSwgNzIsIDE5MSwgMTgsIDE5LCA3MiwgMjM1LCA1MSwgMTgsIDE5LCAyMjEsIDIwOSwgMjM1LCA1MSwgMTgsIDE5LCAKKyAgICA3MiwgMjM1LCA2OCwgMTgsIDE5LCA3MiwgMjM1LCAxMjYsIDE4LCAxOSwgNzIsIDIzNSwgMTI0LCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDEwOCwgMTgsIDE5LCAyMjEsIDIwOSwgMjM1LCAxMDgsIDE4LCAxOSwgNzIsIDIzNSwgMTQxLCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDgxLCAxOCwgMTksIDcyLCAyMzUsIDg1LCAxOCwgMTksIDcyLCAyMzUsIDk1LCAxOCwgMTksIDcyLCAyMzUsIDk0LCAxOCwgCisgICAgMTksIDcyLCAyMzUsIDkzLCAxOCwgMTksIDcyLCAyMzUsIDk2LCAxOCwgMTksIDcyLCAyMzIsIDk4LCAxOCwgMTksIDcyLCAKKyAgICAyMzIsIDE1NiwgMTgsIDE5LCA3MiwgMjMzLCA1OCwgMTgsIDE5LCA3MiwgMjMzLCA1MCwgMTgsIDE5LCA3MiwgMjMyLCAyNDEsIAorICAgIDE4LCAxOSwgNzIsIDIzMywgMTM1LCAxOCwgMTksIDcyLCAyNDcsIDE0OSwgMTgsIDE5LCA3MiwgMjQ3LCAxNTAsIDE4LCAxOSwgCisgICAgNzIsIDI0NywgMTU1LCAxOCwgMTksIDcyLCAyNDcsIDE1NCwgMTgsIDE5LCA3MiwgMjQ3LCAxNTEsIDE4LCAxOSwgNzIsIAorICAgIDI0NywgMTU2LCAxOCwgMTksIDcyLCAyMzIsIDI0NCwgMTgsIDE5LCA3MiwgMjMyLCAyNDYsIDE4LCAxOSwgNzIsIDIzMiwgCisgICAgMjUwLCAxOCwgMTksIDcyLCAyMzIsIDI0OSwgMTgsIDE5LCA3MiwgMjMyLCAyNDgsIDE4LCAxOSwgNzIsIDIzMiwgMjU0LCAKKyAgICAxOCwgMTksIDcyLCAyMTYsIDUwLCAxOCwgMTksIDcyLCAyMTYsIDUyLCAxOCwgMTksIDcyLCAyMTYsIDU1LCAxOCwgMTksIAorICAgIDcyLCAyMTYsIDU0LCAxOCwgMTksIDcyLCAyMTYsIDUzLCAxOCwgMTksIDcyLCAyMTYsIDU2LCAxOCwgMTksIDcyLCAyMTYsIAorICAgIDQ1LCAxOCwgMTksIDcyLCAyMTYsIDQ2LCAxOCwgMTksIDcyLCAyMTYsIDU4LCAxOCwgMTksIDcyLCAyMTYsIDU3LCAxOCwgCisgICAgMTksIDcyLCAyMTYsIDQ3LCAxOCwgMTksIDcyLCAyMTYsIDU5LCAxOCwgMTksIDcyLCAyMTAsIDEzLCAxOCwgMTksIDcyLCAKKyAgICAyMTAsIDIzLCAxOCwgMTksIDcyLCAyMTAsIDk0LCAxOCwgMTksIDcyLCAyMTAsIDkyLCAxOCwgMTksIDcyLCAyMTAsIDQ0LCAKKyAgICAxOCwgMTksIDcyLCAyMTAsIDExNiwgMTgsIDE5LCA3MiwgMjEwLCAxNTksIDE4LCAxOSwgNzIsIDY1LCAyMTAsIDE1OSwgMTgsIAorICAgIDE5LCA3MiwgMjQ2LCAyOCwgMTgsIDE5LCA3MiwgMjQ2LCAyOSwgMTgsIDE5LCA3MiwgMjQ2LCAzNiwgMTgsIDE5LCA3MiwgCisgICAgMjQ2LCAzNSwgMTgsIDE5LCA3MiwgMjQ2LCAzMSwgMTgsIDE5LCA3MiwgMjQ2LCAzOCwgMTgsIDE5LCA3MiwgMjE4LCA4MywgCisgICAgMTgsIDE5LCA3MiwgMjE5LCA1OCwgMTgsIDE5LCA3MiwgMjIxLCAxODEsIDE4LCAxOSwgNzIsIDIyMSwgMTcwLCAxOCwgMTksIAorICAgIDcyLCAyMTksIDE5MSwgMTgsIDE5LCA3MiwgMjA2LCAxOCwgMTksIDcyLCAyMTksIDIyNSwgMTgsIDE5LCA3MiwgMjIwLCA3LCAKKyAgICAxOCwgMTksIDcyLCAyMjAsIDYzLCAxOCwgMTksIDcyLCAyMjAsIDYxLCAxOCwgMTksIDcyLCAyMjAsIDMyLCAxOCwgMTksIAorICAgIDcyLCAyMjAsIDEwMiwgMTgsIDE5LCA3MiwgMjIwLCAxMDQsIDE4LCAxOSwgNzIsIDIxNSwgMTYzLCAxOCwgMTksIDcyLCAKKyAgICAyMTUsIDE2NiwgMTgsIDE5LCA3MiwgMjE1LCAxNzgsIDE4LCAxOSwgNzIsIDIxNSwgMTc3LCAxOCwgMTksIDcyLCAyMTUsIAorICAgIDE2NywgMTgsIDE5LCA3MiwgMjE1LCAxODMsIDE4LCAxOSwgNzIsIDI1MCwgNjksIDE4LCAxOSwgNzIsIDI1MCwgODYsIDE4LCAKKyAgICAxOSwgNzIsIDI1MCwgMTMxLCAxOCwgMTksIDcyLCAyNTAsIDEyOCwgMTgsIDE5LCA3MiwgMjUwLCAxMTAsIDE4LCAxOSwgNzIsIAorICAgIDI1MCwgMTU3LCAxOCwgMTksIDcyLCAyMTUsIDEyNiwgMTgsIDE5LCA3MiwgMjE1LCAxMjcsIDE4LCAxOSwgNzIsIDIxNSwgCisgICAgMTMwLCAxOCwgMTksIDcyLCAyMTUsIDEyOSwgMTgsIDE5LCA3MiwgMjE1LCAxMjgsIDE4LCAxOSwgNzIsIDIxNSwgMTMxLCAKKyAgICAxOCwgMTksIDI1MCwgMTExLCA1MCwgMTgsIDE5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDE4LCAxOSwgMjI0LCA4MCwgMTgsIAorICAgIDE5LCAyMjksIDczLCAxOCwgMTksIDIyOCwgMTAwLCAxOCwgMTksIDIyOCwgOTksIDE4LCAxOSwgMjI4LCA5OCwgMTgsIDE5LCAKKyAgICAyMjgsIDk3LCAxOCwgMTksIDIyOCwgMTAyLCAxOCwgMTksIDIyOCwgMTAxLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNSwgCisgICAgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjQsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIzLCAxOCwgMTksIDIxMSwgMjEzLCAKKyAgICAyMTYsIDEyMiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjEsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI4LCAxOCwgMTksIAorICAgIDIxMSwgMjEzLCAyMTYsIDEyNywgMTgsIDE5LCAyMTEsIDIxMywgNDAsIDIxNiwgMjEwLCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICAyMTIsIDk4LCAyMjYsIDIyNiwgMjE5LCAxOSwgNzgsIDIyNiwgMjI2LCAxLCAyNTIsIDQ4LCAyMjYsIDIyNiwgMSwgMjMyLCAKKyAgICA4NywgMjI2LCAyMjYsIDEsIDI0NCwgMTUxLCAyMjYsIDIyNiwgMSwgMjIyLCAxNSwgMjI2LCAyMjYsIDEsIDIyOCwgMTkzLCAKKyAgICAyMjYsIDIyNiwgMSwgMjE0LCAyMjYsIDIyNiwgMjI2LCAxLCAyNDgsIDE5NywgMjI2LCAyMjYsIDEsIDIxNiwgODAsIDIyNiwgCisgICAgMjI2LCAxLCAyNDksIDIyOSwgMjI2LCAyMjYsIDEsIDI1MCwgMTgwLCAyMjYsIDIyNiwgMSwgMjMwLCA5MSwgMjI2LCAyMjYsIAorICAgIDEsIDI0MiwgMTU2LCAyMjYsIDIyNiwgMSwgMjI5LCA2MywgMjI2LCAyMjYsIDEsIDIxOCwgMTIyLCAyMjYsIDIyNiwgMSwgCisgICAgMjIyLCAxMzUsIDIyNiwgMjI2LCAxLCAyNTQsIDE5OCwgMjI2LCAyMjYsIDEsIDIyNiwgMTg3LCAyMjYsIDIyNiwgMSwgMjE0LCAKKyAgICAxNTAsIDIyNiwgMjI2LCAxLCAyNDUsIDIzMSwgMjI2LCAyMjYsIDEsIDIzNSwgMTg4LCAyMjYsIDIyNiwgMSwgMjQ1LCAyMzIsIAorICAgIDIyNiwgMjI2LCAxLCAyMjYsIDE1OCwgMjI2LCAyMjYsIDEsIDIxNCwgMjA2LCAyMjYsIDIyNiwgMSwgMjM2LCAzOSwgMjI2LCAKKyAgICAyMjYsIDEsIDI0NSwgMjI5LCAyMjYsIDIyNiwgMSwgMjI1LCAyMDIsIDIyNiwgMjI2LCAyNDQsIDE1MCwgNzgsIDIyNiwgCisgICAgMjI2LCAyMjMsIDQ5LCAyNDQsIDE1MCwgNzgsIDE3OCwgMSwgMjQ0LCAxNDEsIDI0NCwgMTMzLCAyNDQsIDE1NSwgMjQ1LCA2LCAKKyAgICAxNzgsIDEsIDIxNCwgMTA1LCAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNzAsIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgCisgICAgMSwgMjExLCAxMTcsIDE3OCwgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMCwgMjE2LCAxMjksIDIxNiwgMTUxLCAxNzgsIAorICAgIDEsIDI0NSwgNTksIDE3OCwgMSwgMjU0LCA5MywgNjEsIDE3OCwgMSwgMjI2LCAxNDMsIDc2LCAxNzgsIDEsIDI1NSwgMTcsIAorICAgIDYxLCAxNzgsIDEsIDI1NCwgMjI3LCAxNzgsIDEsIDIzMiwgMTMzLCA3NiwgMTc4LCAxLCAyMTksIDI0NCwgNzYsIDE3OCwgMSwgCisgICAgNzYsIDE3OCwgMSwgMjI2LCAyMzQsIDE3OCwgMSwgMjI2LCAxOTYsIDE3OCwgMSwgMjIzLCAxNjQsIDIyMywgMTc3LCAyMjMsIAorICAgIDk0LCAxNTMsIDE3OCwgMSwgMjM0LCAxOTMsIDE3OCwgMSwgMjUwLCAxNzcsIDE3OCwgMSwgMjM0LCAxOTQsIDIzNSwgMjMsIAorICAgIDE3OCwgMSwgMjQzLCAyMDIsIDE3OCwgMSwgMjQ1LCAxMzgsIDE3OCwgMSwgMjQzLCA1OCwgMjQyLCA2NiwgMjQzLCAyMDIsIAorICAgIDE3OCwgMSwgMjQzLCA5NiwgMTc4LCAxLCAyMTEsIDE4OCwgMjExLCAxODIsIDIxMiwgOTgsIDE3OCwgMSwgMjQyLCAzOCwgCisgICAgMjQyLCA2MCwgMTc4LCAxLCAyNDIsIDQyLCAyNDIsIDYwLCAxNzgsIDEsIDIzMiwgMTM1LCAyNDIsIDYwLCAxNzgsIDEsIAorICAgIDIxOSwgMjQ3LCAyNDIsIDYwLCAxNzgsIDEsIDIyOSwgMTg1LCAyMjcsIDE1NywgMjI5LCAxODYsIDIzMCwgMjUsIDE3OCwgMSwgCisgICAgMjE5LCAyNDUsIDIzMCwgMjUsIDE3OCwgMSwgMjQ2LCAxMTUsIDE3OCwgMSwgMjM1LCAxNjgsIDIzNSwgMTcyLCAyMzUsIAorICAgIDE2MiwgNzMsIDE3OCwgMSwgNzUsIDE3OCwgMSwgMjM1LCAxMTcsIDIzNSwgMTQ0LCAxNzgsIDEsIDI0MywgNDMsIDE3OCwgMSwgCisgICAgMjMyLCAxMzYsIDI1NCwgMjQzLCAxNzgsIDEsIDIxOSwgMjQ5LCA2MSwgMTc4LCAxLCAyMzUsIDE1NCwgMjQ1LCAxMTMsIAorICAgIDE3OCwgMSwgMjI1LCAxNjQsIDIyNSwgMTg2LCAyMjYsIDEwNSwgMTc4LCAxLCAyNTQsIDE2MywgMjQ1LCAxMTEsIDE3OCwgMSwgCisgICAgMjE5LCAyNCwgMjIyLCA5MSwgMTc4LCAxLCAyMTksIDE3OSwgMjMyLCAxMzIsIDIyMiwgOTEsIDE3OCwgMSwgMjE5LCAyNDMsIAorICAgIDIyMiwgOTEsIDE3OCwgMSwgMjUxLCA2NiwgMTc4LCAxLCAyMTAsIDE1OSwgMTc4LCAxLCAyMTYsIDYzLCAyMTYsIDczLCAKKyAgICAyMTUsIDQxLCAyMTcsIDE1MiwgMTc4LCAxLCAyMTksIDI0MiwgMjE3LCAxNTIsIDE3OCwgMSwgMjQ5LCA2MCwgMTc4LCAxLCAKKyAgICAyNTIsIDMxLCAyNTIsIDM0LCAyNTEsIDIyNCwgMjUzLCAxNTgsIDE3OCwgMSwgMjE5LCAyNDgsIDI1MywgMTU4LCAxNzgsIDEsIAorICAgIDI0NiwgMTE0LCAxNzgsIDEsIDIyNiwgMTcxLCAxNzgsIDEsIDI0NSwgMTk2LCAyNDUsIDE5OCwgNzUsIDE3OCwgMSwgMjMxLCAKKyAgICAxNzgsIDIzMSwgMTg2LCAxOTMsIDE3OCwgMSwgMjMyLCAxMzQsIDE5MywgMTc4LCAxLCAyMTksIDI0NiwgMTkzLCAxNzgsIDEsIAorICAgIDIzMywgNzMsIDIzMywgMTE0LCAyMzIsIDE0MywgMTU2LCAxNzgsIDEsIDI0NiwgMTE2LCAxNzgsIDEsIDIzNSwgMjMwLCAKKyAgICAxNzgsIDEsIDIzNSwgMjMxLCAxNzgsIDEsIDI0OCwgMjEwLCAyNDgsIDIxNSwgMjQ5LCA2MCwgMTc4LCAxLCAyMjYsIDEzOCwgCisgICAgMjQ1LCA1OCwgNzYsIDE3OCwgMSwgMjQ1LCAyMjcsIDE3OCwgMSwgMjM1LCAxODcsIDE3OCwgMSwgMjQ5LCA3OCwgMTc4LCAxLCAKKyAgICAyNTEsIDE3LCAxNzgsIDEsIDI1MCwgMTg5LCAxNzgsIDEsIDIxOCwgMTYxLCAxNzgsIDEsIDIzMiwgMTMxLCAxNzgsIDEsIAorICAgIDIxOSwgMjQxLCAxNzgsIDEsIDI0MCwgMTEwLCAxNzgsIDEsIDIyNCwgOTYsIDE3OCwgMSwgMjExLCAxNzgsIDE3OCwgMjE5LCAKKyAgICAxNTUsIDIyNCwgMTQwLCAxNzgsIDIzMCwgODUsIDIyNCwgMTQwLCAxNzgsIDI0OSwgMTMxLCAyMjQsIDE0MCwgMTc4LCAyNTQsIAorICAgIDYsIDg3LCAxNzgsIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNDYsIDg3LCAyMTcsIDgzLCAxLCA2MSwgMjE3LCA4MywgMSwgCisgICAgNzMsIDIxNywgODMsIDEsIDcwLCAyMTcsIDgzLCAxLCAxNzYsIDIxNywgODMsIDEsIDI0MywgMTM1LCAyMTcsIDgzLCAxLCAKKyAgICAyMjksIDc3LCAyMTcsIDgzLCAxLCAyMTcsIDEwNSwgMjE3LCA4MywgMSwgMjQ4LCAyMjEsIDIxNywgODMsIDEsIDE5NywgCisgICAgMjE3LCA4MywgMSwgMTkwLCAyMTcsIDgzLCAxLCAyNTIsIDE5MSwgMjE3LCA4MywgMSwgMTg0LCAyMTcsIDgzLCAxLCAxOTEsIAorICAgIDIxNywgODMsIDEsIDIzMywgMTM1LCAyMTcsIDgzLCAxLCAyMTIsIDY1LCAyMTcsIDgzLCAxLCAyMDYsIDIxNywgODMsIDEsIAorICAgIDE2MiwgMjE3LCA4MywgMjUsIDUsIDczLCAyMTcsIDgzLCAyNSwgNSwgNzAsIDIxNywgODMsIDUsIDIxMywgMTUyLCAyNDIsIAorICAgIDcsIDEsIDYxLCAyNDIsIDcsIDEsIDczLCAyNDIsIDcsIDEsIDcwLCAyNDIsIDcsIDEsIDE3NiwgMjQyLCA3LCAxLCAyNDMsIAorICAgIDEzNSwgMjQyLCA3LCAxLCAyMjksIDc3LCAyNDIsIDcsIDEsIDIxNywgMTA1LCAyNDIsIDcsIDEsIDI0OCwgMjIxLCAyNDIsIAorICAgIDcsIDEsIDE5NywgMjQyLCA3LCAxLCAxOTAsIDI0MiwgNywgMSwgMjUyLCAxOTEsIDI0MiwgNywgMSwgMTg0LCAyNDIsIDcsIAorICAgIDEsIDE5MSwgMjQyLCA3LCAxLCAyMDUsIDI0MiwgNywgMSwgMjMzLCAxMzUsIDI0MiwgNywgMSwgMjEyLCA2NSwgMjQyLCA3LCAKKyAgICAxLCAyMDYsIDI0MiwgNywgMSwgMTYyLCAyNDIsIDcsIDI1LCA1LCA3MywgMjQyLCA3LCAyNSwgNSwgNzAsIDI0MiwgNywgNSwgCisgICAgMjI2LCA0OSwgMjI1LCAxMjYsIDIxOSwgMTU1LCAyMjQsIDE0MCwgMjI1LCAxMjYsIDUyLCAyMjQsIDE0MCwgMjUxLCAxMjAsIAorICAgIDEsIDYxLCAyNTEsIDEyMCwgMSwgNzMsIDI1MSwgMTIwLCAxLCA3MCwgMjUxLCAxMjAsIDEsIDE3NiwgMjUxLCAxMjAsIDEsIAorICAgIDI0MywgMTM1LCAyNTEsIDEyMCwgMSwgMjI5LCA3NywgMjUxLCAxMjAsIDEsIDIxNywgMTA1LCAyNTEsIDEyMCwgMSwgMjQ4LCAKKyAgICAyMjEsIDI1MSwgMTIwLCAxLCAxOTcsIDI1MSwgMTIwLCAxLCAxOTAsIDI1MSwgMTIwLCAxLCAyNTIsIDE5MSwgMjUxLCAxMjAsIAorICAgIDEsIDE4NCwgMjUxLCAxMjAsIDEsIDE5MSwgMjUxLCAxMjAsIDEsIDIwNSwgMjUxLCAxMjAsIDEsIDIzMywgMTM1LCAyNTEsIAorICAgIDEyMCwgMSwgMjEyLCA2NSwgMjUxLCAxMjAsIDEsIDIwNiwgMjUxLCAxMjAsIDEsIDE2MiwgMjUxLCAxMjAsIDI1LCA1LCA3MywgCisgICAgMjUxLCAxMjAsIDI1LCA1LCA3MCwgMjE3LCA4MiwgMSwgNjEsIDIxNywgODIsIDEsIDczLCAyMTcsIDgyLCAxLCA3MCwgMjE3LCAKKyAgICA4MiwgMSwgMTc2LCAyMTcsIDgyLCAxLCAyNDMsIDEzNSwgMjE3LCA4MiwgMSwgMjI5LCA3NywgMjE3LCA4MiwgMSwgMjE3LCAKKyAgICAxMDUsIDIxNywgODIsIDEsIDI0OCwgMjIxLCAyMTcsIDgyLCAxLCAxOTcsIDIxNywgODIsIDEsIDE5MCwgMjE3LCA4MiwgMSwgCisgICAgMjUyLCAxOTEsIDIxNywgODIsIDEsIDE4NCwgMjE3LCA4MiwgMSwgMTkxLCAyMTcsIDgyLCAxLCAyMzMsIDEzNSwgMjE3LCAKKyAgICA4MiwgMSwgMjEyLCA2NSwgMjE3LCA4MiwgMSwgMjA2LCAyMTcsIDgyLCAyNSwgNSwgNzMsIDIxNywgODIsIDI1LCA1LCA3MCwgCisgICAgNjksIDEsIDE3NiwgNjksIDEsIDIzNCwgMTMyLCA2OSwgMSwgMjM0LCAyOCwgNjksIDEsIDIzNCwgMTA1LCA2OSwgMSwgMjI5LCAKKyAgICA0LCA2OSwgMSwgMjUxLCAzMywgNjksIDEsIDI1MCwgMTU3LCA2OSwgMSwgMjQ5LCAyMzgsIDY5LCAxLCAyNTAsIDg2LCA2OSwgCisgICAgMSwgMjI3LCAxMzQsIDY5LCAxLCAyNDgsIDIyMSwgNjksIDEsIDIxNSwgMTQ0LCA2OSwgMSwgMjQ3LCAxNDUsIDY5LCAxLCAKKyAgICAyMTUsIDEzOSwgNjksIDEsIDIyOCwgODAsIDY5LCAxLCAyMTcsIDEwNSwgNjksIDEsIDIxNiwgMjA4LCA2OSwgMSwgMTExLCAKKyAgICA2OSwgMSwgMjE2LCAxNTYsIDY5LCAxLCAyMjgsIDc0LCA2OSwgMSwgMjUyLCAxOTEsIDY5LCAxLCAyMjUsIDE0NywgNjksIDEsIAorICAgIDIyNSwgMTYsIDY5LCAxLCAyMjUsIDEyMSwgNjksIDEsIDIzMCwgMTYxLCA2OSwgMSwgMjEwLCAyNDQsIDY5LCAxLCAyMjIsIAorICAgIDIxMSwgNjksIDEsIDIzMiwgMTU2LCA2OSwgMSwgMjEzLCAxMzgsIDY5LCAxLCAyMjAsIDEwMiwgNjksIDEsIDIxOCwgMTg0LCAKKyAgICA2OSwgMSwgMjA2LCA2OSwgMSwgMTYyLCA2OSwgMSwgMjMzLCAxMzUsIDY5LCAxLCAyMjQsIDg4LCA2OSwgMjM1LCAyNDMsIAorICAgIDI1LCAyMjQsIDc0LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDg3LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDUzLCA2OSwgCisgICAgMjM1LCAyNDMsIDI1LCAyMjQsIDQ4LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDMwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIAorICAgIDIsIDY5LCAyMzUsIDI0MywgMjUsIDIyMywgMjQ2LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjMsIDI0NSwgNjksIDIzNSwgMjQzLCAKKyAgICAyNSwgMjIyLCAxMDAsIDY5LCAyMzUsIDI0MywgMjUsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDIzMiwgNjIsIDY5LCAKKyAgICAyMzUsIDI0MywgMjUsIDIzMiwgNTIsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNjksIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgCisgICAgODAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzgsIDIxNSwgNDksIDExMCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzOCwgCisgICAgMjE1LCA0OSwgMTA1LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDcwLCA2OSwgMjUsIDIzNSwgMjI5LCAyNTQsIDQ1LCA2OSwgCisgICAgMjUsIDIzNSwgMjI5LCAyNTUsIDczLCA2OSwgMjUsIDUsIDI1NSwgNzMsIDY5LCAyNSwgNSwgNzMsIDY5LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgNjksIDI1LCA1LCAyMTEsIDExNywgNjksIDI1LCA1LCAyMTAsIDE2OSwgNjksIDI1LCA1LCA3MCwgNjksIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgNjksIDI1LCA1LCAyMTQsIDIyOSwgNjksIDI1LCA1LCAyMjYsIDIzNCwgNjksIDI1LCA1LCAxOTEsIDY5LCAKKyAgICAyNSwgNSwgMjM2LCA2MCwgNjksIDI1LCA1LCA3NSwgNjksIDI1LCA1LCAyNTQsIDI0MywgNjksIDI1LCA1LCAyNTQsIDIwMSwgCisgICAgNjksIDI1LCA1LCAyMjYsIDE4MywgNjksIDI1LCA1LCAyNTMsIDE5MiwgNjksIDUsIDIyOCwgMjA2LCA2OSwgNSwgMjIzLCAKKyAgICAxMjYsIDY5LCA1LCAyMTAsIDE4MCwgNjksIDUsIDIzMCwgNTIsIDY5LCA1LCAyMTUsIDIxMywgNjksIDUsIDI1MiwgMTQzLCAKKyAgICA2OSwgNSwgMjIyLCAyMDYsIDY5LCA1LCAyMTYsIDQwLCA2OSwgNSwgMjM0LCAyNDEsIDY5LCA1LCAyNTQsIDIwMywgNjksIDUsIAorICAgIDIyMSwgMjQ0LCAyMjEsIDIzOCwgNjksIDUsIDIxMywgMTQ5LCA2OSwgNSwgMjQ5LCAyMzIsIDY5LCA1LCAyNTIsIDExNywgCisgICAgNjksIDUsIDIzNCwgMTI1LCA2OSwgNSwgMjUyLCAxMzcsIDY5LCA1LCAyNTEsIDksIDIyNSwgNzIsIDIzMywgMTg3LCA2OSwgCisgICAgNSwgMjMzLCAzMCwgMjE2LCAxNywgNjksIDUsIDI1MiwgMjAsIDY5LCA1LCAyMjUsIDEyMywgMjMwLCA5OSwgNjksIDUsIAorICAgIDIzNCwgOSwgNjksIDI0OSwgOTgsIDE2LCAyMjMsIDI4LCA2OSwgNSwgMjUzLCAxNzQsIDY5LCA1LCAyNTMsIDE5NSwgNjksIAorICAgIDIxLCAyMTAsIDg2LCA2OSwgMjEsIDExMCwgNjksIDIxLCAxMDUsIDY5LCAyMSwgMTU4LCA2OSwgMjEsIDE2MSwgNjksIDIxLCAKKyAgICAxODksIDY5LCAyMSwgMTk0LCA2OSwgMjEsIDE5OCwgNjksIDIxLCAxOTUsIDY5LCAyMSwgMjAwLCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMTksIDQzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMzAsIDcxLCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMjUsIDcxLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyNTIsIDQ5LCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyNTEsIDEwMywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMTUsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIyNCwgMjA5LCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIwNywgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjI0LCAyMTMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjExLCA4MywgMjUxLCAyMzYsIAorICAgIDgzLCAyNDUsIDE2MywgODMsIDI0OSwgMjE5LCA4MywgMjQzLCAyMjksIDIxOCwgMTI5LCA4MywgMjQ5LCAyMjYsIDgzLCAKKyAgICAyNDQsIDExLCAyNDcsIDExOCwgODMsIDIxNiwgMzksIDIxOSwgNTIsIDI0MCwgMTY4LCA4MywgMjE5LCAxOTAsIDMsIDI1MSwgCisgICAgMTcyLCAyMzEsIDE1NCwgODMsIDIzMSwgMTgzLCAyNDksIDIxOSwgODMsIDIzMSwgMTgzLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDgzLCAyMjgsIDE5MSwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAxNTcsIDExMCwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAKKyAgICAxNTcsIDEwNSwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAxNTcsIDE1OCwgODMsIDI1LCAyMjAsIDEzNywgODMsIDIxLCAyMTAsIAorICAgIDg2LCA4MywgMjEsIDExMCwgODMsIDIxLCAxMDUsIDgzLCAyMSwgMTU4LCA4MywgMjEsIDE2MSwgODMsIDIxLCAxODksIDgzLCAKKyAgICAyMSwgMTk0LCA4MywgMjEsIDE5OCwgODMsIDIxLCAxOTUsIDgzLCAyMSwgMjAwLCA4MywgMSwgNjEsIDgzLCAxLCA3NSwgODMsIAorICAgIDEsIDczLCA4MywgMSwgNzYsIDgzLCAxLCA3MCwgODMsIDEsIDIyNiwgMjM0LCA4MywgMSwgMjE0LCAyMTQsIDgzLCAxLCAKKyAgICAyNDUsIDIwOSwgODMsIDEsIDE5NywgODMsIDEsIDI1NCwgMTE1LCA4MywgMSwgMjUyLCAxOTEsIDgzLCAxLCAxOTAsIDgzLCAKKyAgICAxLCAyMjQsIDg4LCA4MywgMSwgMjQzLCAxMzUsIDgzLCAxLCAxODQsIDgzLCAxLCAyMzMsIDEzNSwgODMsIDEsIDIwNiwgODMsIAorICAgIDEsIDIyMCwgMTAyLCA4MywgMSwgMjE3LCAxMDUsIDgzLCAxLCAyNDgsIDIyMSwgODMsIDEsIDI1MCwgMTU3LCA4MywgMSwgCisgICAgMjM1LCAxNDEsIDgzLCAxLCAxOTEsIDgzLCAxLCAyMDUsIDgzLCAxLCAyMTIsIDY1LCA4MywgMSwgMjQ0LCAxOTYsIDgzLCAxLCAKKyAgICAxNzYsIDgzLCAxLCAyMzQsIDEzMiwgODMsIDEsIDIxNSwgMTgzLCA4MywgMSwgMjEwLCAxMTYsIDgzLCAxLCAyNDIsIDQ2LCAKKyAgICA4MywgMSwgMjEwLCAxNiwgODMsIDEsIDIzMiwgMjU0LCA4MywgMSwgMjEwLCA2OSwgODMsIDEsIDI1MCwgMTEwLCA4MywgMSwgCisgICAgMjE2LCAzOSwgMTk5LCAyNSwgNTAsIDgzLCAxLCAyMTYsIDM5LCA3NSwgODMsIDEsIDIxNiwgMzksIDczLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgNzYsIDgzLCAxLCAyMTYsIDM5LCA3MCwgODMsIDEsIDIxNiwgMzksIDIyNiwgMjM0LCA4MywgMSwgMjE2LCAzOSwgCisgICAgMjE0LCAyMTQsIDgzLCAxLCAyMTYsIDM5LCAyNTQsIDExNSwgODMsIDEsIDIxNiwgMzksIDI1MiwgMTkxLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMTkwLCA4MywgMSwgMjE2LCAzOSwgMjI0LCA4OCwgODMsIDEsIDIxNiwgMzksIDI0MywgMTM1LCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMTg0LCA4MywgMSwgMjE2LCAzOSwgMjE3LCAxMDUsIDgzLCAxLCAyMTYsIDM5LCAyNDgsIDIyMSwgODMsIDEsIDIxNiwgCisgICAgMzksIDI1MCwgMTU3LCA4MywgMSwgMjE2LCAzOSwgMjM1LCAxNDEsIDgzLCAxLCAyMTYsIDM5LCAyMTUsIDE4MywgODMsIDEsIAorICAgIDIxNiwgMzksIDE5MSwgODMsIDEsIDIxNiwgMzksIDIxMiwgNjUsIDgzLCAxLCAyMTYsIDM5LCAxNzYsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAyNDMsIDEzMiwgODMsIDEsIDIxNiwgMzksIDI0MiwgNDYsIDgzLCAxLCAyMTYsIDM5LCAyMzUsIDEwNywgODMsIDEsIAorICAgIDIxNiwgMzksIDIyOCwgMjMxLCA4MywgMSwgMjE2LCAzOSwgMjQ2LCAzOCwgODMsIDEsIDIxOSwgMTkwLCA3NSwgODMsIDEsIAorICAgIDIxOSwgMTkwLCA3MywgODMsIDEsIDIxOSwgMTkwLCAyMzUsIDE1MiwgODMsIDEsIDIxOSwgMTkwLCAyMTQsIDIxNCwgODMsIAorICAgIDEsIDIxOSwgMTkwLCA3MCwgODMsIDEsIDIxOSwgMTkwLCAyNTQsIDExNSwgODMsIDEsIDIxOSwgMTkwLCAxNzYsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgMjQzLCAxMzUsIDgzLCAxLCAyMTksIDE5MCwgMTYyLCA4MywgMSwgMjE5LCAxOTAsIDE5MCwgODMsIDEsIAorICAgIDIxOSwgMTkwLCAyMjAsIDEwMiwgODMsIDEsIDIxOSwgMTkwLCAyMTcsIDEwNSwgODMsIDEsIDIxOSwgMTkwLCAyNDgsIDIyMSwgCisgICAgODMsIDEsIDIxOSwgMTkwLCAyMzUsIDE0MSwgODMsIDEsIDIxOSwgMTkwLCAyNDQsIDE5NiwgODMsIDEsIDIxOSwgMTkwLCAKKyAgICAyNDMsIDEzMiwgODMsIDEsIDIxOSwgMTkwLCAyNDIsIDQ2LCA4MywgMSwgMjE5LCAxOTAsIDIxNSwgMTgzLCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDIxMCwgMTE2LCA4MywgMSwgMjE5LCAxOTAsIDIyMywgMTg0LCA4MywgMSwgMjE5LCAxOTAsIDI1MCwgMTU3LCAKKyAgICA4MywgMSwgMjE5LCAxOTAsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgNzMsIDgzLCAxLCAyMzEsIDE4MywgMTc2LCA4MywgCisgICAgMSwgMjMxLCAxODMsIDIwNSwgODMsIDEsIDIzMSwgMTgzLCAyNDQsIDE5NiwgODMsIDEsIDIzMSwgMTgzLCAyMTAsIDgyLCAKKyAgICA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTQsIDc2LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMywgCisgICAgMTQ4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0OCwgMTg2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTQsIDIyNCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjM1LCAxOTMsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjIsIAorICAgIDI0MywgMTE2LCAyNTIsIDE1NSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTM0LCAyNTIsIDE1NSwgODMsIDEsIDI1NCwgCisgICAgMTYyLCAyNDMsIDExNiwgNjEsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDczLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAxNzYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyOSwgNzcsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDI1MSwgMzMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNSwgMTU2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTUsIDE0NCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAxMzUsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIyOCwgMTEwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTcsIDEwNSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjQ4LCAyMjEsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDE5MCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI1LCAKKyAgICAxNDcsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxOCwgMjIzLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIAorICAgIDgyLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjU0LCAKKyAgICAyMDksIDgzLCAxLCAyMTYsIDM5LCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjE2LCAzOSwgMjU0LCAKKyAgICAxNjIsIDI0MywgMTE2LCAyMTAsIDgyLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQyLCAyNDksIAorICAgIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjksIDc3LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAKKyAgICAyNDMsIDExNiwgMjUxLCAzMywgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzNSwgMTE0LCA4MywgMSwgCisgICAgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE1LCAxNTYsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAyNDgsIDExOSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjMxLCAKKyAgICAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAyNSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxOCwgMjIzLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ5LCA3MiwgODMsIDEsIDIzMSwgMTgzLCAKKyAgICAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIAorICAgIDExNiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTYzLCA3MCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTYzLCAKKyAgICAxOTEsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTIsIDE4LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAyNDgsIDIxMSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzMiwgMjU0LCAxOCwgMTksIAorICAgIDIyNiwgMTA5LCAxOCwgMTksIDI1MywgMTY3LCAxOCwgMTksIDI1NSwgMjgsIDE4LCAxOSwgMjEyLCAyNSwgMTgsIDE5LCAKKyAgICAyMjQsIDIyMSwgMTgsIDE5LCAyMjUsIDIyOSwgMTgsIDE5LCAyMjQsIDEwNSwgMTgsIDE5LCAyMTcsIDMxLCAxOCwgMTksIAorICAgIDIzNCwgMTg5LCAxOCwgMTksIDIzMywgMTc5LCAxOCwgMTksIDIzMSwgMTMyLCAxOCwgMTksIDIyOCwgMzcsIDE4LCAxOSwgCisgICAgMjI5LCAxODEsIDE4LCAxOSwgMjMzLCA2OCwgMTgsIDE5LCAyMTksIDIyLCAxOCwgMTksIDIyMSwgMjExLCAxOCwgMTksIAorICAgIDIxOSwgMjMyLCAxOCwgMTksIDIyMCwgNjYsIDE4LCAxOSwgMjE5LCAyMDEsIDE4LCAxOSwgMjEwLCAyMjAsIDE4LCAxOSwgCisgICAgMjExLCA1MiwgMTgsIDE5LCAyMjMsIDEzNCwgMTgsIDE5LCAyMjcsIDE3MSwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNzEsIAorICAgIDE4LCAxOSwgMjI3LCAxNzAsIDE4LCAxOSwgMjI2LCAyMTYsIDIyNywgMTcwLCAxOCwgMTksIDIyNywgMTY5LCAxOCwgMTksIAorICAgIDIyNiwgMjE2LCAyMjcsIDE2OSwgMTgsIDE5LCAyMjcsIDE2OCwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNjgsIDE4LCAxOSwgCisgICAgMjIyLCAxMDUsIDE4LCAxOSwgMjIyLCAxMDQsIDE4LCAxOSwgMjIyLCAxMDMsIDE4LCAxOSwgMjIyLCAxMDIsIDE4LCAxOSwgCisgICAgMjIyLCAxMDEsIDE4LCAxOSwgMjIyLCAxMDksIDE4LCAxOSwgMjI2LCAyMTYsIDIyNiwgMTA1LCAxOCwgMTksIDIyNiwgMjE2LCAKKyAgICAyMTcsIDE1MiwgMTgsIDE5LCAyMjYsIDIxNiwgMjM1LCAyMywgMTgsIDE5LCAyMjYsIDIxNiwgMjUxLCA2NiwgMTgsIDE5LCAKKyAgICAyMjYsIDIxNiwgMTkzLCAxOCwgMTksIDIyNiwgMjE2LCAyMzAsIDI1LCAxOCwgMTksIDIyNiwgMjE2LCAyMjIsIDkxLCAxOCwgCisgICAgMTksIDIyNiwgMjE2LCAyMjAsIDEwNCwgMTgsIDE5LCAyNDUsIDIxOSwgMjEyLCA5OCwgMTgsIDE5LCAyMTIsIDcsIDIxMiwgCisgICAgOTgsIDE4LCAxOSwgNDAsIDQsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCAyMjMsIDE1NywgMjQ3LCAxMjAsIDE4LCAxOSwgMjIzLCAKKyAgICAyMjMsIDIyMiwgMTA2LCAxOCwgMTksIDE1OSwgMjMyLCAxMjcsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNCwgMTgsIDE5LCAyMTYsIAorICAgIDEyNiwgMTgsIDE5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTUsIDEzNiwgMTgsIDE5LCAyMTUsIDEzOCwgMTgsIDE5LCAyMTUsIAorICAgIDE0MywgMTgsIDE5LCAyMTYsIDQ5LCAxOCwgMTksIDIxNiwgNTEsIDE4LCAxOSwgMjIxLCAyMDksIDIxOSwgMjA2LCAxOCwgCisgICAgMTksIDIyMSwgMjA5LCAyMjAsIDEsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgNTMsIDE4LCAxOSwgNzIsIDI0MiwgNzMsIDE4LCAKKyAgICAxOSwgNzIsIDI0OCwgNTIsIDI0MywgNTUsIDE4LCAxOSwgNzIsIDI0MywgMTMyLCAxOCwgMTksIDcyLCAyNDIsIDc4LCAxOCwgCisgICAgMTksIDIyMSwgMjA5LCAyMzUsIDMzLCAxOCwgMTksIDcyLCAyMzUsIDMxLCAxOCwgMTksIDI1MiwgNjgsIDI0OCwgNTIsIAorICAgIDE1NiwgMTgsIDE5LCAyNTIsIDY4LCAyNDgsIDUyLCAxNTMsIDE4LCAxOSwgNzIsIDI0OCwgNDcsIDIyMiwgOTEsIDIzMiwgCisgICAgMjIzLCAyMTMsIDEyMiwgMjMzLCAxMCwgMjMyLCAyMjMsIDEsIDE3NiwgMjMyLCAyMjMsIDEsIDIzNCwgMTMyLCAyMzIsIAorICAgIDIyMywgMSwgMjQzLCAxMzUsIDIzMiwgMjIzLCAxLCAyNDIsIDI0OSwgMjMyLCAyMjMsIDEsIDIyOSwgNzcsIDIzMiwgMjIzLCAKKyAgICAxLCAyNTEsIDMzLCAyMzIsIDIyMywgMSwgMjUwLCAxNTcsIDIzMiwgMjIzLCAxLCAyMzUsIDE0MSwgMjMyLCAyMjMsIDEsIAorICAgIDIzNSwgMTE0LCAyMzIsIDIyMywgMSwgMjExLCA3MSwgMjMyLCAyMjMsIDEsIDIxNywgMTA1LCAyMzIsIDIyMywgMSwgMjE2LCAKKyAgICAyMDgsIDIzMiwgMjIzLCAxLCAyNDgsIDIyMSwgMjMyLCAyMjMsIDEsIDI0OCwgMjUsIDIzMiwgMjIzLCAxLCAxOTcsIDIzMiwgCisgICAgMjIzLCAxLCAxOTAsIDIzMiwgMjIzLCAxLCAyMjUsIDE0NywgMjMyLCAyMjMsIDEsIDI1MiwgMTkxLCAyMzIsIDIyMywgMSwgCisgICAgMjUyLCAxOCwgMjMyLCAyMjMsIDEsIDE4NCwgMjMyLCAyMjMsIDEsIDE5MSwgMjMyLCAyMjMsIDEsIDIwNSwgMjMyLCAyMjMsIAorICAgIDEsIDIzMywgMTM1LCAyMzIsIDIyMywgMSwgMjEyLCA2NSwgMjMyLCAyMjMsIDEsIDIyMCwgMTAyLCAyMzIsIDIyMywgMSwgCisgICAgMjE4LCAyMjMsIDIzMiwgMjIzLCAxLCAyMDYsIDIzMiwgMjIzLCAxLCAxNjIsIDIzMiwgMjIzLCAyNSwgNSwgNjEsIDIzMiwgCisgICAgMjIzLCAyNSwgNSwgNzMsIDIzMiwgMjIzLCAyNSwgNSwgNzAsIDIzMiwgMjIzLCAyNSwgNSwgMjQ1LCAyMDksIDIzMiwgMjIzLCAKKyAgICAyNSwgNSwgMjU0LCAyMDEsIDIzMiwgMjIzLCAyNSwgNSwgMjI2LCAxODMsIDIzMiwgMjIzLCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDIzMiwgMjIzLCAyNSwgNSwgNzUsIDIzMiwgMjIzLCAyNSwgNSwgNzYsIDIzMiwgMjIzLCAyMTgsIDczLCAxLCAxOTEsIDIzMiwgCisgICAgMjIzLCAyMTgsIDczLCAxLCAyMDUsIDIzMiwgMjIzLCAyMTgsIDczLCAxLCAyMTIsIDY1LCAyMzIsIDIyMywgNCwgMSwgMTc2LCAKKyAgICAyMzIsIDIyMywgNCwgMSwgMjI5LCA3NywgMjMyLCAyMjMsIDQsIDEsIDI1NCwgNzUsIDIzMiwgMjIzLCA0LCAxLCAyMTcsIAorICAgIDEwNSwgMjMyLCAyMjMsIDQsIDEsIDE5NywgMjMyLCAyMjMsIDQsIDEsIDE5MCwgMjMyLCAyMjMsIDQsIDEsIDE4NCwgMjMyLCAKKyAgICAyMjMsIDQsIDEsIDIwNSwgMjMyLCAyMjMsIDQsIDEsIDIzMywgMTM1LCAyMzIsIDIyMywgNSwgMjMwLCA4OSwgMjMyLCAyMjMsIAorICAgIDUsIDIzNCwgMTcxLCAyMzIsIDIyMywgNSwgMjIyLCAzMiwgMjMyLCAyMjMsIDUsIDIzMiwgMTI3LCAyMzIsIDIyMywgMjQ1LCAKKyAgICAzMSwgNzgsIDIzMiwgMjIzLCAyMjQsIDEzLCA3OCwgMjMyLCAyMjMsIDIxLCAyMTAsIDg2LCAyMzIsIDIyMywgMjEsIDExMCwgCisgICAgMjMyLCAyMjMsIDIxLCAxMDUsIDIzMiwgMjIzLCAyMSwgMTU4LCAyMzIsIDIyMywgMjEsIDE2MSwgMjMyLCAyMjMsIDIxLCAKKyAgICAxODksIDIzMiwgMjIzLCAyMSwgMTk0LCAyMzIsIDIyMywgMjEsIDE5OCwgMjMyLCAyMjMsIDIxLCAxOTUsIDIzMiwgMjIzLCAKKyAgICAyMSwgMjAwLCAzOSwgMjMzLCA1OSwgMSwgMTc2LCAzOSwgMjMzLCA1OSwgMSwgMjExLCAxNjUsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAyMjksIDc3LCAzOSwgMjMzLCA1OSwgMSwgMjE1LCAxODMsIDM5LCAyMzMsIDU5LCAxLCAyMDYsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAxOTEsIDM5LCAyMzMsIDU5LCAxLCAyMTcsIDEwNSwgMzksIDIzMywgNTksIDEsIDIxNiwgMjA4LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMjMzLCAxMzUsIDM5LCAyMzMsIDU5LCAxLCAxOTAsIDM5LCAyMzMsIDU5LCAxLCAyMjUsIDE0NywgMzksIDIzMywgNTksIDEsIAorICAgIDE4NCwgMzksIDIzMywgNTksIDEsIDI0NCwgMTk2LCAzOSwgMjMzLCA1OSwgMSwgMjE0LCAyNywgMzksIDIzMywgNTksIDEsIAorICAgIDE2MiwgMzksIDIzMywgNTksIDEsIDIyNCwgODgsIDM5LCAyMzMsIDU5LCAxLCAyMzQsIDEzMiwgMzksIDIzMywgNTksIDEsIAorICAgIDIxNSwgMTc1LCAzOSwgMjMzLCA1OSwgMSwgMTk3LCAzOSwgMjMzLCA1OSwgMSwgNjEsIDM5LCAyMzMsIDU5LCAxLCA3MywgCisgICAgMzksIDIzMywgNTksIDEsIDI0NSwgMjA5LCAzOSwgMjMzLCA1OSwgMSwgMjQ1LCAxOTcsIDM5LCAyMzMsIDU5LCAxLCA3MCwgCisgICAgMzksIDIzMywgNTksIDEsIDIyNiwgMTgzLCAzOSwgMjMzLCA1OSwgMSwgNzYsIDM5LCAyMzMsIDU5LCAxLCAyMTQsIDIxNCwgCisgICAgMzksIDIzMywgNTksIDEsIDc1LCAzOSwgMjMzLCA1OSwgMSwgMjUzLCAxOTAsIDM5LCAyMzMsIDU5LCAxLCAyNTQsIDIwMSwgCisgICAgMzksIDIzMywgNTksIDEsIDIxNiwgMjgsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI3LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAKKyAgICAyNiwgMzksIDIzMywgNTksIDEsIDIxNiwgMjUsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI0LCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyNSwgMjI0LCA4OCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNCwgODgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNzYsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyOSwgNzcsIDE2NiwgMzksIAorICAgIDE3MywgMSwgMTIxLCAxNzYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDIyOSwgNzcsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTUsIDE4MywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIwNiwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNSwgMTgzLCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyMSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE3LCAxMDUsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAyMTYsIDIwOCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5NywgMTY2LCAzOSwgMTczLCAxLCAKKyAgICAxMjEsIDIxNywgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE2LCAyMDgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTcsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjUsIDE0NywgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNSwgMTQ3LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjQ0LCAxOTYsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxMzUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKKyAgICAyNDQsIDE5NiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMzMsIDEzNSwgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI0OCwgMjIxLCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMjUyLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxNjIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNDgsIAorICAgIDIyMSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI1MiwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxODQsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTg0LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyMSwgMjExLCAxMzgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTgsIDgyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjE4LCA4MiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjUsIDIxOSwgMjM5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDczLCAKKyAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMzYsIDMzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3MCwgMTY2LCAzOSwgMTczLCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDE2NiwgMzksIDE3MywgMjUsIDUsIDc1LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTQsIDI0MywgMTY2LCAKKyAgICAzOSwgMTczLCAyNSwgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNywgMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCisgICAgMjE0LCAyMTQsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1MywgMTY3LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDI4LCAKKyAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExMSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI2LCAxMDksIDE2NiwgMzksIAorICAgIDE3MywgMjUsIDUsIDIyNiwgMjUzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCisgICAgMjM1LCAxNTIsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDc5LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDI1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAxOTMsIDE2NiwgMzksIDE3MywgMSwgCisgICAgNDAsIDIzNSwgMjMsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgNjAsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTU4LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNTgsIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE1NywgMTY2LCAzOSwgMTczLCAKKyAgICAyMSwgMjEwLCA4NiwgMTY2LCAzOSwgMTczLCAyMSwgMTEwLCAxNjYsIDM5LCAxNzMsIDIxLCAxMDUsIDE2NiwgMzksIDE3MywgCisgICAgMjEsIDE1OCwgMTY2LCAzOSwgMTczLCAyMSwgMTYxLCAxNjYsIDM5LCAxNzMsIDIxLCAxODksIDE2NiwgMzksIDE3MywgMjEsIAorICAgIDE5NCwgMTY2LCAzOSwgMTczLCAyMSwgMTk4LCAxNjYsIDM5LCAxNzMsIDIxLCAxOTUsIDE2NiwgMzksIDE3MywgMjEsIDIwMCwgCisgICAgMTY2LCAzOSwgMTczLCA4OSwgMjEsIDExMCwgMTY2LCAzOSwgMTczLCA1LCAyMzMsIDEyMCwgMTY2LCAzOSwgMTczLCA1LCAKKyAgICAyMzMsIDExOSwgNjksIDE2LCAyMjUsIDIzNiwgNjksIDE2LCAyMzAsIDcyLCAyMzQsIDI1LCA2OSwgMTYsIDIyNSwgNzIsIAorICAgIDIzNCwgMjUsIDY5LCAxNiwgMjUyLCA1MCwgMjM0LCAyNSwgNjksIDE2LCAyNTEsIDEwNCwgMjM0LCAyNSwgNjksIDE2LCAKKyAgICAyMjQsIDIxNiwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIxMCwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIwOCwgMjM0LCAyNSwgCisgICAgNjksIDE2LCAyMjQsIDIxNCwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIxMiwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE3MywgCisgICAgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2OSwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2OCwgMjM0LCAyNSwgNjksIDE2LCAKKyAgICAyNDgsIDE3MSwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE3MCwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2NywgMjM0LCAyNSwgCisgICAgNjksIDE2LCAyMTUsIDg3LCA2OSwgMTYsIDIzMCwgNzIsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNSwgNzIsIDIyMiwgMjA1LCAKKyAgICA2OSwgMTYsIDI1MiwgNTAsIDIyMiwgMjA1LCA2OSwgMTYsIDI1MSwgMTA0LCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxNiwgCisgICAgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTAsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjA4LCAyMjIsIDIwNSwgNjksIDE2LCAKKyAgICAyMjQsIDIxNCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTIsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTczLCAyMjIsIAorICAgIDIwNSwgNjksIDE2LCAyNDgsIDE2OSwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNjgsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgCisgICAgMTcxLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE3MCwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNjcsIDIyMiwgMjA1LCAKKyAgICAyNTEsIDEyMSwgMSwgMTc2LCAyNTEsIDEyMSwgMSwgMjQzLCAxMzUsIDI1MSwgMTIxLCAxLCAyMjksIDc3LCAyNTEsIDEyMSwgCisgICAgMSwgMjI5LCAyMiwgMjUxLCAxMjEsIDEsIDE5MCwgMjUxLCAxMjEsIDEsIDI1MiwgMTkxLCAyNTEsIDEyMSwgMSwgMTg0LCAKKyAgICAyNTEsIDEyMSwgMSwgMjMwLCAxMDUsIDI1MSwgMTIxLCAxLCAyMTcsIDEwNSwgMjUxLCAxMjEsIDEsIDI0OCwgMjIxLCAyNTEsIAorICAgIDEyMSwgMSwgMTk3LCAyNTEsIDEyMSwgMSwgMjI4LCAzNiwgMjUxLCAxMjEsIDEsIDI1MSwgMzMsIDI1MSwgMTIxLCAxLCAKKyAgICAyMzUsIDE0MSwgMjUxLCAxMjEsIDEsIDIyNywgMTY1LCAyNTEsIDEyMSwgMSwgMjI3LCAxNTgsIDI1MSwgMTIxLCAxLCAxOTEsIAorICAgIDI1MSwgMTIxLCAxLCAyMDUsIDI1MSwgMTIxLCAxLCAyMzMsIDEzNSwgMjUxLCAxMjEsIDEsIDIxNCwgMjcsIDI1MSwgMTIxLCAKKyAgICAxLCAyMDYsIDI1MSwgMTIxLCAxLCA2MSwgMjUxLCAxMjEsIDEsIDE2MiwgMjUxLCAxMjEsIDI1LCA1LCA3MywgMjUxLCAxMjEsIAorICAgIDI1LCA1LCA3MCwgMjUxLCAxMjEsIDI1LCA1LCA3NSwgMjUxLCAxMjEsIDI1LCA1LCA3NiwgMjUxLCAxMjEsIDI1LCA1LCAKKyAgICAyNTQsIDI0MywgMjUxLCAxMjEsIDIyNiwgNjAsIDI1MSwgMTIxLCAyNDUsIDE0MywgNjQsIDIyMSwgMTcyLCAzOSwgODksIDEsIAorICAgIDEyNSwgMTc2LCAzOSwgODksIDEsIDEyNSwgMjM0LCAxMzIsIDM5LCA4OSwgMSwgMTI1LCAyMzMsIDE3MSwgMzksIDg5LCAxLCAKKyAgICAxMjEsIDE3NiwgMzksIDg5LCAxLCAxMjEsIDIzMywgMTcxLCAzOSwgODksIDEsIDEyMSwgMjM0LCAxMzIsIDM5LCA4OSwgMSwgCisgICAgMjI5LCA3NywgMzksIDg5LCAxLCAxMjUsIDI1MSwgMzMsIDM5LCA4OSwgMSwgMTI1LCAyNTAsIDE1NywgMzksIDg5LCAxLCAKKyAgICAxMjEsIDI1MSwgMzMsIDM5LCA4OSwgMSwgMTIxLCAyMDYsIDM5LCA4OSwgMSwgMTIxLCAyNTAsIDE1NywgMzksIDg5LCAxLCAKKyAgICAyMjcsIDE2NSwgMzksIDg5LCAxLCAyMjMsIDE0MCwgMzksIDg5LCAxLCAxMjUsIDIyMywgMTM4LCAzOSwgODksIDEsIDI0OCwgCisgICAgMjIxLCAzOSwgODksIDEsIDEyMSwgMjIzLCAxMzgsIDM5LCA4OSwgMSwgMjIzLCAxNDksIDM5LCA4OSwgMSwgMTI1LCAyMTcsIAorICAgIDEwNSwgMzksIDg5LCAxLCAxMjUsIDIxNiwgMjA4LCAzOSwgODksIDEsIDEyMSwgMjE3LCAxMDUsIDM5LCA4OSwgMSwgMTIxLCAKKyAgICAyMTYsIDIwOCwgMzksIDg5LCAxLCAxOTcsIDM5LCA4OSwgMSwgMjUyLCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAxOTAsIDM5LCAKKyAgICA4OSwgMSwgMTI1LCAyMjUsIDE0NywgMzksIDg5LCAxLCAxMjUsIDI0NCwgMTk2LCAzOSwgODksIDEsIDEyMSwgMTkwLCAzOSwgCisgICAgODksIDEsIDEyMSwgMjQ0LCAxOTYsIDM5LCA4OSwgMSwgMTIxLCAyMjUsIDE0NywgMzksIDg5LCAxLCAxODQsIDM5LCA4OSwgCisgICAgMSwgMTIxLCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAxOTEsIDM5LCA4OSwgMSwgMjA1LCAzOSwgODksIDEsIDIyMiwgMTM3LCAKKyAgICAzOSwgODksIDEsIDIzMywgMTM1LCAzOSwgODksIDEsIDIzMiwgOTMsIDM5LCA4OSwgMSwgMjEyLCA2NSwgMzksIDg5LCAxLCAKKyAgICAxMjUsIDIyMCwgMTAyLCAzOSwgODksIDEsIDEyNSwgMjE4LCAyMjMsIDM5LCA4OSwgMSwgMTI1LCAyMDYsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAxNjIsIDM5LCA4OSwgMSwgMjMyLCAxODQsIDM5LCA4OSwgMSwgNjEsIDM5LCA4OSwgMSwgMTIxLCAxNjIsIDM5LCAKKyAgICA4OSwgMSwgNzMsIDM5LCA4OSwgMSwgMjM2LCAzMywgMzksIDg5LCAxLCA3MCwgMzksIDg5LCAxLCAyMTQsIDExOCwgMzksIAorICAgIDg5LCAxLCAyNDUsIDIwOSwgMzksIDg5LCAxLCAyMjYsIDE4MywgMzksIDg5LCAxLCAyMzMsIDEyMCwgMzksIDg5LCAxLCAKKyAgICAyNDIsIDEzMiwgMjA2LCAzOSwgODksIDExNiwgNSwgMTQ3LCAyMDUsIDM5LCA4OSwgMTE2LCA1LCAxNDcsIDIzMywgMTM1LCAKKyAgICAzOSwgODksIDExNiwgNSwgMjMzLCAxMzYsIDIxNywgNTgsIDIzMywgMTA5LCAzOSwgODksIDUsIDIzMSwgMjA0LCAyMzQsIAorICAgIDIzMSwgMjMzLCAxMDksIDM5LCA4OSwgMTE2LCA1LCA0MCwgMjI5LCA3NywgMzksIDg5LCAxMTYsIDUsIDEyMSwgMTkwLCAzOSwgCisgICAgODksIDExNiwgNSwgMTI1LCAyMjMsIDEzOSwgMTc3LCAxMjEsIDE5MCwgMzksIDg5LCAxMTYsIDUsIDE4NCwgMzksIDg5LCAKKyAgICAxMTYsIDUsIDI1MiwgMTkxLCAzOSwgODksIDExNiwgNSwgMjA2LCAzOSwgODksIDUsIDIyMiwgMTAsIDM5LCA4OSwgMjUsIDUsIAorICAgIDYxLCAzOSwgODksIDI1LCA1LCAyMzEsIDIwNCwgMjIxLCAyMjYsIDM5LCA4OSwgMjUsIDUsIDI1NSwgNzMsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIxNywgNjQsIDI1NSwgNzMsIDM5LCA4OSwgMjUsIDUsIDczLCAzOSwgODksIDI1LCA1LCAyMzYsIDMzLCAzOSwgCisgICAgODksIDI1LCA1LCAyMTQsIDIxNCwgMzksIDg5LCAyNSwgNSwgMjE0LCAxMTcsIDM5LCA4OSwgMjUsIDUsIDcwLCAzOSwgODksIAorICAgIDI1LCA1LCAyMTQsIDExOCwgMzksIDg5LCAyNSwgNSwgNzYsIDM5LCA4OSwgMjUsIDUsIDIyNywgMSwgNTEsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIyNiwgMTA5LCAzOSwgODksIDI1LCA1LCA3NSwgMzksIDg5LCAyNSwgNSwgMjU0LCAyNDMsIDM5LCA4OSwgMjUsIAorICAgIDUsIDIyNiwgMTgzLCAzOSwgODksIDI1LCA1LCAyNTQsIDIwMSwgMzksIDg5LCAyNSwgNSwgODksIDI1NCwgMjAxLCAzOSwgCisgICAgODksIDI1LCA1LCAyMjcsIDEsIDQ4LCAzOSwgODksIDUsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDg5LCA1LCAyMTYsIDI5LCAKKyAgICAzOSwgODksIDUsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAyNywgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIAorICAgIDI2LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgMjUsIDM5LCA4OSwgNSwgMjIzLCAxODgsIDI0MiwgNDUsIDM5LCA4OSwgNSwgCisgICAgMjMxLCAyMDQsIDIyMSwgMjUzLCAzOSwgODksIDUsIDIzNCwgOTYsIDIzNCwgMjE1LCAzOSwgODksIDM4LCAyNDksIDExNSwgCisgICAgMjQ3LCAxMjAsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDIxMCwgODYsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDExMCwgMzksIDg5LCAKKyAgICAyNDEsIDQ2LCAyMSwgMTA1LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxNTgsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE2MSwgMzksIAorICAgIDg5LCAyNDEsIDQ2LCAyMSwgMTg5LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTQsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5OCwgCisgICAgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk1LCAzOSwgODksIDI0MSwgNDYsIDIxLCAyMDAsIDM5LCA4OSwgODksIDIxLCAyMTAsIAorICAgIDg2LCAzOSwgODksIDg5LCAyMSwgMTEwLCAzOSwgODksIDg5LCAyMSwgMTA1LCAzOSwgODksIDg5LCAyMSwgMTU4LCAzOSwgCisgICAgODksIDg5LCAyMSwgMTYxLCAzOSwgODksIDg5LCAyMSwgMTg5LCAzOSwgODksIDg5LCAyMSwgMTk0LCAzOSwgODksIDg5LCAKKyAgICAyMSwgMTk4LCAzOSwgODksIDg5LCAyMSwgMTk1LCAzOSwgODksIDg5LCAyMSwgMjAwLCAzOSwgODksIDUsIDIxMSwgMjQ5LCAKKyAgICAzOSwgODksIDUsIDIxMSwgMjQ4LCAzOSwgODksIDUsIDIyMSwgMjE1LCAzOSwgODksIDUsIDIzNCwgMTYwLCAzOSwgODksIDUsIAorICAgIDI0MCwgMjMyLCAzOSwgODksIDUsIDI0NywgMTM0LCAzOSwgODksIDUsIDIyMywgNDksIDIyMiwgMTg3LCAyMjMsIDE0OSwgCisgICAgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjExLCA3MiwgMzksIDg5LCA1LCAyMzUsIDYsIDM5LCA4OSwgNSwgMjM1LCA1LCAzOSwgCisgICAgODksIDUsIDIyMSwgMjIyLCAzOSwgODksIDUsIDIyMSwgMjIxLCAzOSwgODksIDUsIDI0MiwgOSwgMzksIDg5LCA1LCAyNTEsIAorICAgIDMwLCAxMDIsIDUsIDIxNCwgMjAwLCAyMjMsIDMwLCAxMDIsIDUsIDIxNCwgMjAwLCAyNTEsIDEsIDEwMiwgNSwgMjUwLCAKKyAgICAxODYsIDEwMiwgNSwgMjE4LCAxNSwgMTAyLCA1LCAyNTEsIDIzMywgMTAyLCAxLCAyNTQsIDE4NCwgMTAyLCAxLCAyNTQsIAorICAgIDE4NSwgMjE3LCAxMywgMTAyLCAxLCAyMzYsIDI5LCAxMDIsIDEsIDIzNiwgMzAsIDIxNywgMTMsIDEwMiwgMSwgMjE0LCAKKyAgICAyMDMsIDEwMiwgMSwgMjE0LCAyMDQsIDIxNywgMTMsIDEwMiwgMSwgMjIzLCAxODgsIDIyMywgNzksIDEwMiwgMSwgMjIzLCAKKyAgICAxODgsIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMSwgMjMzLCAxMzYsIDIzMywgMjQsIDEwMiwgMSwgMjMzLCAxMzYsIDIzMywgCisgICAgMjUsIDIxNywgMTMsIDEwMiwgMSwgMjQ1LCAxNzksIDEwMiwgMSwgMjU0LCAxOTksIDEwMiwgMSwgMjI2LCAyMTIsIDEwMiwgCisgICAgMSwgMjI2LCAyMTMsIDIxNywgMTMsIDEwMiwgMSwgMTc2LCAxMDIsIDEsIDIzNSwgMTMsIDIzMSwgMjA3LCAxMDIsIDEsIAorICAgIDI0MywgMTM1LCAxMDIsIDEsIDI0MywgMTM2LCAyNDIsIDE2MSwgMTAyLCAxLCAyMjksIDc3LCAxMDIsIDEsIDI1MSwgMzMsIAorICAgIDEwMiwgMSwgMjUxLCAzNCwgMjMzLCAxMjMsIDEwMiwgMSwgMjM1LCAxNDEsIDEwMiwgMSwgMjM1LCAxNDIsIDIzNSwgMTE4LCAKKyAgICAxMDIsIDEsIDIyNywgMTY1LCAxMDIsIDEsIDIxNywgMTA2LCAyMzMsIDc2LCAxMDIsIDEsIDIxNywgMTA2LCAyMzAsIDY3LCAKKyAgICAyMzEsIDIwNywgMTAyLCAxLCAyNDgsIDIyMiwgMjMwLCA2NywgMjU0LCAxNDUsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMCwgNjcsIAorICAgIDIzMSwgMjA3LCAxMDIsIDEsIDIyOSwgMjI5LCAyMjMsIDE1MiwgMTAyLCAxLCAyMTcsIDEwNSwgMTAyLCAxLCAyMTcsIDEwNiwgCisgICAgMjE3LCAzNSwgMTAyLCAxLCAyNDgsIDIyMSwgMTAyLCAxLCAyNDgsIDIyMiwgMjMxLCAyMjUsIDEwMiwgMSwgMTk3LCAxMDIsIAorICAgIDEsIDE5MCwgMTAyLCAxLCAyMjYsIDkwLCAyMzQsIDIyNiwgMTAyLCAxLCAyNTIsIDE5MSwgMTAyLCAxLCAyNTIsIDE5MiwgCisgICAgMjM0LCAxNzIsIDEwMiwgMSwgMTg0LCAxMDIsIDEsIDE5MSwgMTAyLCAxLCAyMDUsIDEwMiwgMSwgMjMzLCAxMzUsIDEwMiwgCisgICAgMSwgMjEyLCA2NSwgMTAyLCAxLCAyMjIsIDM0LCAyMjIsIDIwLCAxMDIsIDEsIDIyMiwgMzQsIDIyMSwgMjMzLCAxMDIsIDEsIAorICAgIDIwNiwgMTAyLCAxLCAxNjIsIDEwMiwgNSwgMjIzLCA3MCwgMTAyLCAyNSwgNSwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE0LCAKKyAgICAxOTksIDEwMiwgMjUsIDUsIDIxNCwgMjAwLCAyMjEsIDIyOSwgMTAyLCAyNSwgNSwgMjE4LCA0NywgMTAyLCAyNSwgNSwgCisgICAgMjE4LCA0OCwgMjM2LCAyMSwgMTAyLCAyNSwgNSwgMjIzLCAxODgsIDIyMywgNzksIDEwMiwgMjUsIDUsIDIyMywgMTg4LCAKKyAgICAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMzMsIDEzNiwgMjMzLCAyNCwgMTAyLCAyNSwgNSwgMjMzLCAxMzYsIAorICAgIDIzMywgMjUsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNywgNjUsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDIyMywgNzksIDEwMiwgCisgICAgMjUsIDUsIDIxNywgNjYsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMjUsIAorICAgIDUsIDIyNSwgMTg0LCAxMDIsIDI1LCA1LCAyMjUsIDE4NSwgMjE3LCAxMywgMTAyLCAyNTQsIDI1MCwgMjU0LCAyNDksIDEwMiwgCisgICAgMSwgMjM0LCAyNTEsIDIyMSwgMjI4LCAxMDIsIDEsIDIzNCwgMTAyLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTUsIDM0LCAyMjEsIAorICAgIDIyOCwgMTAyLCAxLCAyNDUsIDIwMywgMjIxLCAyMjgsIDEwMiwgMSwgMjE0LCAwLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTAsIAorICAgIDEwNywgMjIxLCAyMjgsIDEwMiwgMSwgMjUzLCAyMDksIDIyMSwgMjI4LCAxMDIsIDIxLCAyMTAsIDg2LCAxMDIsIDIxLCAKKyAgICAxMTAsIDEwMiwgMjEsIDEwNSwgMTAyLCAyMSwgMTU4LCAxMDIsIDIxLCAxNjEsIDEwMiwgMjEsIDE4OSwgMTAyLCAyMSwgCisgICAgMTk0LCAxMDIsIDIxLCAxOTgsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMjAwLCAxMDIsIDIyNiwgMjksIDEwMiwgMjI2LCAKKyAgICA1NSwgMTAyLCAyMTEsIDIzOCwgMTAyLCAyNTAsIDIzNiwgMjI2LCA0OCwgMTAyLCAyNTAsIDIzNiwgMjE5LCAxNzIsIDEwMiwgCisgICAgMjUwLCAyMzYsIDIyNiwgMiwgMTAyLCAyMjYsIDU0LCAxMDIsIDI4LCAxNiwgMjQ3LCAxMjYsIDEwMiwgMjgsIDE2LCAyNDgsIAorICAgIDUxLCAxMDIsIDI4LCAxNiwgMjQ2LCA2NCwgMTAyLCAyOCwgMTYsIDI0OCwgMTc2LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzcsIAorICAgIDIxOCwgMTUsIDEwMiwgMjgsIDE2LCAyNDcsIDIwNSwgMTAyLCAyOCwgMTYsIDI0OCwgMjE0LCAxMDIsIDI4LCAxNiwgMjQ4LCAKKyAgICAzMywgMTAyLCAyOCwgMTYsIDI0OCwgMTk4LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzcsIDI0MywgNTcsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjE3LCA5LCAxMDIsIDI4LCAxNiwgMzgsIDI0NSwgMTQxLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTY3LCAxMDIsIAorICAgIDI4LCAxNiwgMzgsIDIzNCwgMTY5LCAxMDIsIDI4LCAxNiwgMzgsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgCisgICAgMTY4LCAyLCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE3MCwgMiwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjUyLCAzNywgMTAyLCAyOCwgMTYsIDM4LCAyNDIsIDE2NSwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyMDQsIDI0NiwgCisgICAgNzQsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjA0LCAyNDgsIDIxMiwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyNTAsIDAsIAorICAgIDIxNSwgMTExLCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDI1MCwgMCwgMjE3LCA3MywgMTAyLCAyOCwgMTYsIDIzMywgNDQsIAorICAgIDIwNCwgMjI2LCA0MywgMTAyLCAyOCwgMTYsIDIzMywgNDQsIDIwNCwgMjI0LCAxMzksIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAKKyAgICAyNTAsIDAsIDIyNSwgMzgsIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAyNTAsIDAsIDIyNSwgMjYsIDEwMiwgMjgsIDE2LCAyMzMsIAorICAgIDQ0LCAyMDQsIDIyNSwgNjEsIDIwNywgNSwgMjI2LCAyNiwgMjA3LCA1LCAyMjYsIDM5LCAyMDcsIDUsIDIyNiwgMzUsIDIwNywgCisgICAgMSwgNjEsIDIwNywgMSwgNzMsIDIwNywgMSwgNzAsIDIwNywgMSwgMjU0LCAyNDMsIDIwNywgMSwgNzYsIDIwNywgMSwgNzUsIAorICAgIDIwNywgMSwgMjQ1LCA1NSwgMjA3LCAxLCAxNzYsIDIwNywgMSwgMjI0LCA4OCwgMjA3LCAxLCAyNDMsIDEzNSwgMjA3LCAxLCAKKyAgICAyMjksIDc3LCAyMDcsIDEsIDI1MSwgMzMsIDIwNywgMSwgMjM1LCAxNDEsIDIwNywgMSwgMjEwLCAxMTYsIDIwNywgMSwgCisgICAgMjI3LCAxNjUsIDIwNywgMSwgMjE3LCAxMDUsIDIwNywgMSwgMjQ4LCAyMjEsIDIwNywgMSwgMTk3LCAyMDcsIDEsIDE5MCwgCisgICAgMjA3LCAxLCAyNDQsIDE5NiwgMjA3LCAxLCAyMTQsIDI3LCAyMDcsIDEsIDI1MiwgMTkxLCAyMDcsIDEsIDE4NCwgMjA3LCAxLCAKKyAgICAxOTEsIDIwNywgMSwgMjA1LCAyMDcsIDEsIDIzMywgMTM1LCAyMDcsIDEsIDIxMiwgNjUsIDIwNywgMSwgMjA2LCAyMDcsIDEsIAorICAgIDIxMSwgMTY1LCAyMDcsIDEsIDE2MiwgMjA3LCAxMTYsIDUsIDIyNiwgNTIsIDIwNywgMTE2LCA1LCAyMjYsIDI4LCAyMDcsIAorICAgIDExNiwgNSwgMjI2LCAyNSwgMjA3LCAyNSwgNSwgMjI2LCA0MiwgMjA3LCAyNSwgNSwgMjI2LCAyNCwgMjA3LCAyNSwgNSwgCisgICAgMjI2LCA0NiwgMjA3LCAyNSwgNSwgMjI2LCAzNCwgMjA3LCAyNSwgNSwgMjI2LCA1MywgMjA3LCAyNSwgNSwgMjI2LCA0NCwgCisgICAgMjA3LCA1LCAyMjYsIDU2LCAyMDcsIDUsIDIxMywgMTUyLCAyMDcsIDExNiwgNSwgMjI1LCAyNDgsIDE4NCwgMjA3LCAxMTYsIAorICAgIDUsIDIyNSwgMjQ4LCAyMTIsIDY1LCAyMDcsIDEsIDIzNCwgMTMyLCAyMDcsIDEsIDIxNywgMjMxLCAyMDcsIDIxLCAyMTAsIAorICAgIDg2LCAyMDcsIDIxLCAxMTAsIDIwNywgMjEsIDEwNSwgMjA3LCAyMSwgMTU4LCAyMDcsIDIxLCAxNjEsIDIwNywgMjEsIDE4OSwgCisgICAgMjA3LCAyMSwgMTk0LCAyMDcsIDIxLCAxOTgsIDIwNywgMjEsIDE5NSwgMjA3LCAyMSwgMjAwLCAyMDcsIDI1MywgMTc1LCAKKyAgICAyMDcsIDEsIDIyMywgNTIsIDIwNywgMSwgMjMzLCA3LCAyMDcsIDEsIDI1MiwgMTgsIDIwNywgMSwgNDAsIDIzNSwgMjMsIAorICAgIDIwNywgMSwgNDAsIDE5MywgMjUyLCAxMjAsIDEsIDYxLCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDYxLCAyNTIsIDEyMCwgMSwgCisgICAgMTYyLCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDE2MiwgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAxNjIsIDI1MiwgMTIwLCAxLCAKKyAgICAyNTIsIDE5MSwgMjUyLCAxMjAsIDEsIDIzNCwgMjEyLCAyNTIsIDE5MSwgMjUyLCAxMjAsIDEsIDE5MCwgMjUyLCAxMjAsIDEsIAorICAgIDIxOSwgMTY0LCAxOTAsIDI1MiwgMTIwLCAxLCAxOTcsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMTk3LCAyNTIsIDEyMCwgMSwgCisgICAgMjEyLCA2NSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyMTIsIDY1LCAyNTIsIDEyMCwgMSwgMjI2LCA2NywgMjEyLCA2NSwgCisgICAgMjUyLCAxMjAsIDEsIDI0MywgMTM1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDI0MywgMTM1LCAyNTIsIDEyMCwgMSwgMjM1LCAKKyAgICAxNDEsIDI1MiwgMTIwLCAxLCAyNDgsIDIyMSwgMjUyLCAxMjAsIDEsIDIwNSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyMDUsIAorICAgIDI1MiwgMTIwLCAxLCAxODQsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMTg0LCAyNTIsIDEyMCwgMSwgMjE5LCAyNiwgMjE3LCAKKyAgICAxMDUsIDI1MiwgMTIwLCAxLCAyMjgsIDU1LCAyMTcsIDEwNSwgMjUyLCAxMjAsIDEsIDIwNiwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAyMDYsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMjA2LCAyNTIsIDEyMCwgMSwgMTkxLCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDE5MSwgMjUyLCAxMjAsIDEsIDIyOSwgNzcsIDI1MiwgMTIwLCAxLCAyMzMsIDEzNSwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAyMzMsIDEzNSwgMjUyLCAxMjAsIDEsIDIyNywgMTY1LCAyNTIsIDEyMCwgMSwgMjUxLCAzMywgMjUyLCAxMjAsIDEsIAorICAgIDIyOSwgMTQ4LCAyNTIsIDEyMCwgMSwgMjMxLCAxMjQsIDI1MiwgMTIwLCAxLCA3MywgMjUyLCAxMjAsIDEsIDcwLCAyNTIsIAorICAgIDEyMCwgNSwgMjE2LCAzMywgMjUyLCAxMjAsIDI1LCA1LCA3NSwgMjUyLCAxMjAsIDI1LCA1LCAyMjYsIDY3LCA3NSwgMjUyLCAKKyAgICAxMjAsIDI1LCA1LCAyNDUsIDIwOSwgMjUyLCAxMjAsIDI1LCA1LCA3MywgMjUyLCAxMjAsIDI1LCA1LCAyMzQsIDIxMiwgNzMsIAorICAgIDI1MiwgMTIwLCAyNSwgNSwgNzYsIDI1MiwgMTIwLCAyNSwgNSwgMjM0LCAyMTIsIDc2LCAyNTIsIDEyMCwgMjUsIDUsIDcwLCAKKyAgICAyNTIsIDEyMCwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgMTY0LCAyMDYsIDI1MiwgMTIwLCAxMTYsIDUsIDIyOSwgNzksIDI1MiwgCisgICAgMTIwLCAxMTYsIDUsIDI0MiwgNjAsIDI1MiwgMTIwLCAyMjYsIDM3LCAyNTIsIDEyMCwgMjI2LCAzMywgMjUyLCAxMjAsIDE2LCAKKyAgICAyNTEsIDI0MSwgMjI5LCAyMjksIDIzMSwgMzcsIDI1MiwgMTIwLCAxNiwgMjUxLCAyNDEsIDIyNSwgNjQsIDI1MiwgMTIwLCAKKyAgICAxNiwgMjUxLCAyNDEsIDIzNSwgNDgsIDI1MiwgMTIwLCAxNiwgMjUxLCAyNDEsIDIyNiwgMzcsIDE5NiwgMSwgMTc2LCAxOTYsIAorICAgIDEsIDIzNCwgMzksIDE5NiwgMSwgMjM0LCAxMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDE5NiwgMSwgMjQyLCAxODYsIDE5NiwgMSwgCisgICAgMjI5LCA3NywgMTk2LCAxLCAyNTEsIDMzLCAxOTYsIDEsIDI1MCwgMTU3LCAxOTYsIDEsIDIzNSwgMTQxLCAxOTYsIDEsIAorICAgIDIyNywgMTY1LCAxOTYsIDEsIDIxNywgMTA1LCAxOTYsIDEsIDIxNiwgMjA4LCAxOTYsIDEsIDI0OCwgMjIxLCAxOTYsIDEsIAorICAgIDE5NywgMTk2LCAxLCAxOTAsIDE5NiwgMSwgMjI1LCA0MiwgMTk2LCAxLCAyMjUsIDE0NywgMTk2LCAxLCAyNDQsIDE5NiwgCisgICAgMTk2LCAxLCAyNDQsIDc1LCAxOTYsIDEsIDI1MiwgMTkxLCAxOTYsIDEsIDI1MSwgMjIyLCAxOTYsIDEsIDE4NCwgMTk2LCAxLCAKKyAgICAyMzAsIDE2OCwgMTk2LCAxLCAyMTUsIDE4MywgMTk2LCAxLCAyMTUsIDE3NSwgMTk2LCAxLCAyNDYsIDM4LCAxOTYsIDEsIAorICAgIDE5MSwgMTk2LCAxLCAyMDUsIDE5NiwgMSwgMjMzLCAxMzUsIDE5NiwgMSwgMTYyLCAxOTYsIDEsIDI0MSwgMTUzLCAxOTYsIAorICAgIDEsIDIxNCwgMjcsIDE5NiwgMSwgMjA2LCAxOTYsIDEsIDIyMCwgMTAyLCAxOTYsIDEsIDIxMiwgNjUsIDE5NiwgMSwgNjEsIAorICAgIDE5NiwgMjE4LCA3MywgMSwgMTkxLCAxOTYsIDIxOCwgNzMsIDEsIDIwNSwgMTk2LCAyNSwgNSwgMjU1LCA3MywgMTk2LCAyNSwgCisgICAgNSwgNzMsIDE5NiwgMjUsIDUsIDc2LCAxOTYsIDI1LCA1LCAyMjYsIDE4MywgMTk2LCAyNSwgNSwgNzAsIDE5NiwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxOTYsIDI1LCA1LCA3NSwgMTk2LCAxMTYsIDUsIDIzNSwgMjMsIDE5NiwgMTE2LCA1LCAxOTMsIDE5NiwgCisgICAgMTE2LCA1LCAxNTYsIDE5NiwgMTE2LCA1LCAyMzAsIDI1LCAxOTYsIDExNiwgNSwgMjI2LCAxMDUsIDE5NiwgMTE2LCA1LCAKKyAgICAxNTMsIDE5NiwgMTE2LCA1LCAyMTcsIDE1MiwgMTk2LCAxMTYsIDUsIDIyNywgMTQyLCAxOTYsIDExNiwgNSwgMjM0LCAyMzAsIAorICAgIDE5NiwgNSwgMjIzLCAxNTAsIDE5NiwgNSwgMjI3LCAyMDUsIDE5NiwgMjI0LCAxNDEsIDIxNywgMTAzLCAxOTYsIDIyNCwgCisgICAgMTQxLCAyMjcsIDE1MiwgMjE2LCAxMjAsIDIxNywgMTAzLCAxOTYsIDIyNCwgMTQxLCAyNTAsIDE2NCwgMTk2LCAyMjQsIAorICAgIDE0MSwgMjE1LCAxNzAsIDI1MCwgMTY0LCAxOTYsIDIyNCwgMTQxLCAyMTUsIDE2OSwgMTk2LCAyMSwgMjEwLCA4NiwgMTk2LCAKKyAgICAyMSwgMTEwLCAxOTYsIDIxLCAxMDUsIDE5NiwgMjEsIDE1OCwgMTk2LCAyMSwgMTYxLCAxOTYsIDIxLCAxODksIDE5NiwgMjEsIAorICAgIDE5NCwgMTk2LCAyMSwgMTk4LCAxOTYsIDIxLCAxOTUsIDE5NiwgMjEsIDIwMCwgMTk2LCAxLCAyMTUsIDE1NiwgMTk2LCAxLCAKKyAgICAyMTUsIDE0NCwgMTk2LCAxLCAyNDgsIDEzNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAyMSwgMTEwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxMDUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIAorICAgIDE1OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTYxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxODksIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMjEsIDE5NCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTk4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAKKyAgICAxOTUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDIwMCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIDEzNSwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAxLCAyNTMsIDIwNiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDIxNiwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyNTQsIDExNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDE3OCwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMzMsIDEzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDM1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIAorICAgIDI1NSwgMzYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU1LCAzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDI5LCAKKyAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMiwgMjQxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzNSwgMTcxLCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDEsIDIzNiwgMzQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjM1LCAxOTAsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjM1LCAxNzksIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCA5OCwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMTQsIDIyMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDIxOSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAKKyAgICAyMTQsIDE2OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDExMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIAorICAgIDU4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTA4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMjEyLCAKKyAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTUwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgODYsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCAxNTYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMzcsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjI2LCAyNTIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMjUsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMSwgMjI2LCAyMjIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjMwLCAxMDMsIDIxNSwgMTIxLCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDI0MywgMTMwLCAyMTUsIDEyMiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMzAsIDEwMSwgMjE1LCAxMjIsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMjIzLCA5MiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjUsIDE0NSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAKKyAgICAyNTQsIDIwOCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIDE0MSwgMjMwLCA5OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIAorICAgIDE0MSwgNTIsIDIzMCwgOTgsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMTgsIDgsIDIwNywgMjI0LCAxNDEsIDI1MSwgCisgICAgMjQxLCAyMjYsIDM4LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjI0LCAxMjksIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAKKyAgICAyNTEsIDE5LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjMzLCA4LCAyMjEsIDIyNSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAKKyAgICAyNDEsIDIzNSwgMTMsIDIyMSwgMjI1LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjQ4LCAyMjIsIDIyMSwgMjI1LCAyMDcsIAorICAgIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjUyLCAxOTIsIDIyMSwgMjI1LCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIxMCwgMjEzLCAKKyAgICAyNTIsIDEzOCwgMjIwLCA3NywgMjEzLCAyNTIsIDEzOCwgMjI0LCAxOTgsIDIxMywgMjUyLCA1LCAyMjgsIDIwOSwgMjEzLCAKKyAgICAyNTIsIDUsIDIxMSwgODAsIDIzMCwgMjIyLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDI1NCwgMjEzLCAyMzUsIAorICAgIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAKKyAgICAyMTEsIDgwLCAyMzQsIDE5OCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjUxLCAyLCA1MSwgMjEzLCAyNTIsIAorICAgIDEzOCwgMjExLCA4MCwgMjM0LCAxOTgsIDIzNSwgMjQzLCAyMTgsIDEsIDIyMSwgMTk3LCAyMTMsIDI1MiwgMTM4LCA1MiwgCisgICAgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTUsIDIxMSwgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDE5OCwgMjU0LCAKKyAgICA3NywgMjEzLCAyNTIsIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIAorICAgIDEzNCwgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDAsIDIzNCwgMjA5LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIAorICAgIDI1MiwgMTM4LCAyNTMsIDIwNCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDAsIDIxMywgCisgICAgMjUyLCA1LCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDQ5LCAyMTMsIDE0OCwgMjE0LCAyMTYsIAorICAgIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCA3NywgMjEzLCAyNTIsIDUsIDIyMywgNDksIDIxMywgMTQ4LCAyNTQsIDc3LCAKKyAgICAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgCisgICAgNzgsIDIsIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyNTQsIDkxLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjUyLCAKKyAgICAxNjYsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjE0LCAyMSwgMiwgCisgICAgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDIxNiwgNjgsIDIxMywgMjUyLCA1LCAyNDEsIDE5MSwgMTk5LCAyNTQsIDc1LCAyMTMsIAorICAgIDI1MiwgNSwgMTk5LCAyNTQsIDc1LCAyMTMsIDI1MiwgNSwgMjIyLCAxNDIsIDE5OSwgMjU0LCA3NSwgMjEzLCAyNTIsIDUsIAorICAgIDI1NCwgNzYsIDIxNCwgMjIzLCAyMzAsIDkwLCAyMTMsIDI1MiwgNSwgMjU0LCAyMCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg3LCAKKyAgICAyNTQsIDIwLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDIsIDQ4LCAyMTMsIDI1MiwgNSwgMjM1LCAxMDIsIDIxMywgMjUyLCA1LCAKKyAgICAyMTQsIDE2MSwgNywgMSwgNCwgNiwgNjEsIDcsIDEsIDQsIDYsIDI1NCwgMjQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIAorICAgIDI0MywgNywgMSwgNCwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA3LCAxLCA0LCA2LCAyNTEsIDY2LCA3LCAxLCA0LCA2LCAKKyAgICAyNDksIDYwLCA3LCAxLCA0LCA2LCAyNDUsIDU5LCA3LCAxLCA0LCA2LCA3NSwgNywgNCwgMSwgMjE1LCA5NCwgMjA0LCA3NSwgCisgICAgNywgNCwgMSwgMjE1LCA5NCwgNzMsIDcsIDEsIDQsIDYsIDIzNSwgMTQ0LCA3LCAxLCA0LCA2LCAyMzUsIDIzLCA3LCAxLCA0LCAKKyAgICA2LCAyMzMsIDE0OSwgMiwgOTEsIDcsIDEsIDQsIDYsIDE5MywgNywgMSwgNCwgNiwgMjIzLCA0OSwgMjMwLCAyNSwgNywgMSwgCisgICAgNCwgNiwgNzYsIDcsIDEsIDQsIDYsIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIAorICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCAxNDQsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCAyMjYsIDIzNCwgNywgMSwgCisgICAgNCwgNiwgMjI2LCAxMzQsIDcsIDQsIDEsIDIxNiwgMTQsIDE2MywgNzYsIDcsIDQsIDEsIDI1MSwgMTc1LCAxNjMsIDc2LCA3LCAKKyAgICAxLCA0LCA2LCAyMjYsIDEwNSwgNywgMSwgNCwgNiwgMjIzLCA0OSwgMTUzLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxNTMsIDcsIAorICAgIDEsIDQsIDYsIDIxNywgMTUyLCA3LCAxLCA0LCA2LCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDcwLCA3LCA0LCAxLCAyMTksIAorICAgIDE4NywgMjQ4LCAwLCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDIxNSwgOTQsIDE5MywgNywgMSwgNCwgNiwgMjE0LCAxMDUsIAorICAgIDcsIDEsIDQsIDYsIDIxMiwgOTgsIDcsIDEsIDQsIDYsIDIxMCwgMTU5LCA3LCAxLCA0LCA2LCAyNDUsIDgsIDcsIDEsIDIxMywgCisgICAgMTM1LCAyMzMsIDgyLCAyMTgsIDI1MCwgNywgMSwgMjU0LCAxOTYsIDI2LCAxLCA0LCA2LCAyNDMsIDEwNywgMjYsIDEsIDQsIAorICAgIDYsIDIzMywgOTgsIDI2LCAxLCA0LCA2LCAyMjUsIDEwOCwgMjYsIDEsIDQsIDYsIDIyMywgMzcsIDI2LCAxLCA0LCA2LCAKKyAgICAyMjQsIDE2MSwgMzMsIDEsIDQsIDYsIDI0NSwgMTc0LCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI0MywgNTgsIDEsIAorICAgIDYsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjQ5LCA2MCwgNTgsIDEsIDYsIAorICAgIDc1LCA1OCwgMSwgNiwgMjIzLCA0OSwgNzUsIDU4LCAxLCA2LCAyNDMsIDIwMiwgNTgsIDEsIDYsIDI0MiwgNjAsIDU4LCAxLCAKKyAgICA2LCA3MywgNTgsIDEsIDYsIDIzNSwgMTQ0LCA1OCwgMSwgNiwgMjM1LCAyMywgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIAorICAgIDE5MywgNTgsIDEsIDYsIDIzMCwgMjUsIDU4LCAxLCA2LCAyMjMsIDQ5LCAyMzAsIDI1LCA1OCwgMSwgNiwgNzYsIDU4LCAxLCAKKyAgICA2LCAyMjYsIDEzNCwgNTgsIDEsIDYsIDIyNiwgMTA1LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTIsIDU4LCAKKyAgICAxLCA2LCA3MCwgNTgsIDEsIDYsIDIxMiwgOTgsIDU4LCAxLCA0LCA2MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDYxLCA1OCwgMSwgCisgICAgNCwgMjU0LCAxNDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI0MywgNTgsIDEsIDQsIDI1MywgMTU4LCA1OCwgMSwgNCwgCisgICAgMjQ5LCA2MCwgNTgsIDEsIDQsIDc1LCA1OCwgMSwgNCwgMjIxLCAxOTUsIDU4LCAxLCA0LCAyMDQsIDc1LCA1OCwgMSwgNCwgCisgICAgMjE1LCA5NCwgMjA0LCA3NSwgNTgsIDEsIDQsIDI0MywgMjAyLCA1OCwgMSwgNCwgMjE1LCA5NCwgNzMsIDU4LCAxLCA0LCAKKyAgICAyMzUsIDIzLCA1OCwgMSwgNCwgMTkzLCA1OCwgMSwgNCwgMjQ1LCAxMzgsIDU4LCAxLCA0LCA3NiwgNTgsIDEsIDQsIDIwNCwgCisgICAgNzYsIDU4LCAxLCA0LCAyMTYsIDE0LCAxNjMsIDc2LCA1OCwgMSwgNCwgMjUxLCAxNzUsIDE2MywgNzYsIDU4LCAxLCA0LCAKKyAgICAyMjYsIDEwNSwgNTgsIDEsIDQsIDIxNywgMTUyLCA1OCwgMSwgNCwgNzAsIDU4LCAxLCA0LCAyMTksIDE4NywgNzAsIDU4LCAKKyAgICAxLCA0LCAyMTUsIDk0LCAxOTMsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMTk2LCA1OCwgMSwgNCwgCisgICAgMjUyLCAyNiwgNTgsIDEsIDQsIDI2LCAyNDMsIDEwNywgNTgsIDEsIDQsIDI0OCwgNTQsIDU4LCAxLCA0LCAyNiwgMjI1LCAKKyAgICAxMzMsIDU4LCAxLCA0LCAyNTAsIDExMCwgNywgMjE4LCA2NSwgNCwgMSwgNzMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1MywgNywgCisgICAgMjE4LCA2NSwgNCwgMSwgNzAsIDcsIDIxOCwgNjUsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjUyLCAKKyAgICAyNiwgMjYsIDIxOCwgNjUsIDQsIDEsIDI0MywgMTA3LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjIzLCAzNywgMjYsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIyNSwgMTMzLCAyNiwgMjE4LCA2NSwgNCwgMSwgMjUwLCAxMTAsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCAKKyAgICA1NywgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjQ1LCAKKyAgICA3LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzAsIAorICAgIDI2LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNDQsIDg4LCAyMiwgMjMwLCAyMjQsIDE4MiwgCisgICAgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIzMCwgMjI0LCAxODIsIAorICAgIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDMsIDIwMiwgNTgsIDEsIAorICAgIDMzLCAyNDUsIDE1MCwgNywgNCwgMSwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA0LCAxLCAyMTYsIDIxMSwgMiwgMjE4LCAKKyAgICAxMDcsIDcsIDQsIDYsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxODYsIDIsIDkxLCA3LCA0LCAxLCAyMjYsIAorICAgIDEwNiwgMiwgOTEsIDcsIDQsIDYsIDEsIDEwNCwgMiwgOTEsIDcsIDQsIDEsIDIxNCwgMTU4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgNTcsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDUsIDcsIAorICAgIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjM1LCAyNCwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjI2LCAxMDYsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjIyLCA5MiwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDExNSwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjIzLCAKKyAgICA1NSwgMTAzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNDEsIDUyLCAyMiwgMjE3LCA3NywgNywgNCwgMSwgMTYwLCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIyMywgNDksIDIwNCwgMTYwLCAKKyAgICAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0MCwgMTU0LCAKKyAgICAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIAorICAgIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMTA0LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjIzLCA1NSwgCisgICAgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjU0LCAxNDMsIDU4LCAxLCA0LCAyNTEsIDY2LCA1OCwgMSwgNCwgMjUxLCA2NywgCisgICAgMiwgMjQ5LCAxMDAsIDU4LCAxLCA0LCAyNDUsIDU5LCA1OCwgMSwgNCwgMjIzLCA0OSwgMjA0LCA3NSwgNTgsIDEsIDQsIAorICAgIDI0NSwgNiwgNTgsIDEsIDQsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgOTEsIDU4LCAxLCA0LCAxMTksIDI0MywgMjAyLCA1OCwgCisgICAgMSwgNCwgMjE1LCA5NCwgMjQyLCA2MCwgNTgsIDEsIDQsIDI0MCwgMTU0LCAyLCA5MSwgNTgsIDEsIDQsIDIzNSwgMTg1LCAKKyAgICA1OCwgMSwgNCwgNiwgNzMsIDU4LCAxLCA0LCA2LCAyNDAsIDE1NCwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE0NSwgMiwgCisgICAgMjQ5LCAxMjcsIDU4LCAxLCA0LCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgMjMzLCAxNDksIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNTgsIDEsIDQsIDYsIDE1NiwgNTgsIDEsIDQsIDIzMiwgNTAsIDIsIDEwMywgNTgsIDEsIDQsIDIxNSwgCisgICAgOTQsIDIzMiwgNTAsIDIsIDE5OSwgMjMzLCAzNiwgNTgsIDEsIDQsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDU4LCAxLCA0LCAKKyAgICAyMzAsIDI2LCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCA2LCAyMzAsIDI1LCA1OCwgMSwgNCwgMjUyLCAxMzQsIDc2LCAKKyAgICA1OCwgMSwgNCwgMjI1LCAxMzMsIDU4LCAxLCA0LCAyMjIsIDkyLCAyLCAxMDMsIDU4LCAxLCA0LCAyNDUsIDc1LCA1OCwgMSwgCisgICAgNCwgMjE3LCAxNTMsIDIsIDIyNiwgNjYsIDEwMywgNTgsIDEsIDQsIDEwNCwgMTMwLCA1OCwgMSwgNCwgMjE0LCAxNTcsIDU4LCAKKyAgICAxLCA0LCA2LCA3MCwgNTgsIDEsIDQsIDIxNCwgMTA2LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMTQsIDEwNSwgNTgsIAorICAgIDEsIDQsIDIxMCwgMTU5LCA1OCwgMSwgNCwgMjEwLCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDIxMCwgMTYwLCAKKyAgICAyLCAyNDksIDEwMCwgNTgsIDEsIDQsIDI0NSwgOCwgNTgsIDEsIDQsIDIxNiwgMTc5LCAzOCwgMjQ2LCAxMTgsIDI0MiwgCisgICAgMTM3LCAyNTUsIDE0LCAzOCwgMjQ2LCAxMTgsIDI1NSwgMywgMjU1LCAxNCwgMzgsIDIxOSwgNjksIDUxLCAzOCwgMjE4LCA2LCAKKyAgICA3OCwgMzgsIDIzMSwgMjMxLCAzOCwgMjQyLCAxMzQsIDM4LCAyMzEsIDIyOSwgMzgsIDI1NSwgMSwgMzgsIDI0MiwgMTM1LCAKKyAgICAzOCwgMjU1LCAyLCAzOCwgNywgNCwgMSwgMjIzLCAyMjQsIDUxLCAzOCwgMjUxLCAxNDUsIDM4LCAyMzEsIDIzMCwgMzgsIAorICAgIDUyLCAyNTAsIDMxLCA0OCwgMzgsIDIyNiwgMjI1LCA0OCwgMzgsIDIxMCwgMzUsIDUxLCAzOCwgMjM1LCAxNzIsIDUxLCAzOCwgCisgICAgMjE0LCAxNTEsIDQ4LCAzOCwgMjE0LCAxMzQsIDQ4LCAzOCwgNywgNCwgMSwgMjQ0LCA2MywgMjA0LCAxMTUsIDQ4LCAzOCwgCisgICAgNywgNCwgMSwgMjU0LCAyNDMsIDM4LCA3LCA0LCAxLCAyNTQsIDczLCAzOCwgNywgNCwgMSwgMjUzLCAxNzYsIDM4LCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyNTAsIDE4MywgMzgsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDksIDYwLCAzOCwgNywgNCwgMSwgMjQ1LCAKKyAgICA1OSwgMzgsIDcsIDQsIDEsIDI0MywgMjAyLCAzOCwgNywgMSwgNCwgNiwgMjQzLCAyMDIsIDM4LCA3LCA0LCAxLCAyMzUsIAorICAgIDIzLCAzOCwgNywgNCwgMSwgMTU2LCAzOCwgNywgMSwgNCwgNiwgMTU2LCAzOCwgNywgMSwgNCwgNiwgMTkzLCAzOCwgNywgNCwgCisgICAgMSwgMjMwLCAyNSwgMzgsIDcsIDEsIDQsIDYsIDIzMCwgMjUsIDM4LCA3LCAxLCA0LCA2LCAxNTMsIDM4LCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMjIyLCAxODYsIDM4LCA3LCA0LCAxLCAyMjIsIDkxLCAzOCwgNywgNCwgMSwgMTk5LCAyMjIsIDkxLCAzOCwgCisgICAgNywgNCwgMSwgMjEwLCAxNTksIDM4LCA1MiwgMjM1LCAxOTMsIDI1MSwgMTQ3LCA1MSwgMzgsIDI1NCwgMTQ4LCAxMjgsIAorICAgIDIxNiwgNDIsIDUxLCAzOCwgNDMsIDI1MywgMjUwLCA0OCwgMzgsIDQ0LCAyNTMsIDI1MCwgMjIsIDEyNCwgMjUzLCAyNTAsIAorICAgIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNTEsIDcsIDYsIAorICAgIDEsIDU3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDU3LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDQsIAorICAgIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDU3LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDU3LCAyLCAyMzIsIDIxNCwgCisgICAgNTEsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTg0LCAyMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNTAsIAorICAgIDE4NCwgMjIsIDE0MiwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDksIDYxLCAyLCA1OSwgNDgsIAorICAgIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDksIAorICAgIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjQ5LCA2MSwgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAyNTAsIDMxLCAKKyAgICA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIAorICAgIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAKKyAgICAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIAorICAgIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTg0LCAyMiwgMjUxLCAxNDYsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAxODQsIDIyLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQ1LCA3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgCisgICAgNywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMjQyLCA2MSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDIsIDYxLCAyLCA1OSwgNDgsIDcsIDYsIDEsIAorICAgIDI0MiwgNjEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAKKyAgICAyNDgsIDEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAxODMsIDcsIDQsIAorICAgIDEsIDI0MiwgNjEsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTEsIDE0NywgNTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjEsIDIsIDI1MSwgMTQ3LCA1MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAyNCwgMiwgCisgICAgMTQyLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDU5LCA1MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDIzMywgMTQ5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAKKyAgICA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIzMiwgMjE0LCAKKyAgICA1MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAzMSwgNTEsIAorICAgIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1MCwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDUwLCAyLCAKKyAgICA1OSwgNDgsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1MCwgMiwgNTksIDUxLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDU5LCA1MSwgNywgNiwgCisgICAgMSwgMjMwLCAyNiwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDIzMCwgMjYsIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjE2LCA4OSwgMjIsIDI0OCwgMSwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjQ4LCAxLCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNiwgCisgICAgMSwgMjI2LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDU5LCAKKyAgICA0OCwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIAorICAgIDU5LCA1MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCAKKyAgICA0LCAxLCAyMjMsIDIyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDQsIDEsIAorICAgIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1NSwgMywgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjU1LCAzLCAKKyAgICAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDIzNSwgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MiwgCisgICAgMiwgMjUwLCAyMzUsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNTksIDQ4LCA3LCAKKyAgICA0LCAxLCAyMjIsIDkyLCAyLCA1OSwgMjUyLCA0MywgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTMsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDUxLCA3LCAKKyAgICA2LCAxLCAxMDQsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIxNiwgODksIDIyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIAorICAgIDI0OCwgMSwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDI0OCwgMSwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDE4MiwgCisgICAgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDE4MiwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDYsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI0MiwgCisgICAgMTM2LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNiwgMSwgMjEyLCAKKyAgICA5OSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMiwgCisgICAgOTksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxNzksIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxNzksIDIsIDU5LCAKKyAgICA0OCwgNywgNiwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNiwgMSwgCisgICAgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDI1MCwgMzAsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAKKyAgICAyMTAsIDE2MCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIAorICAgIDIxNywgMTUzLCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMTE1LCAyLCA0NCwgMTYzLCAyMjIsIDIzMywgNywgNCwgMSwgMTk5LCAKKyAgICAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MiwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTIsIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDIyMCwgNzYsIDIyMiwgOTEsIDcsIDQsIDEsIDI0OCwgNTQsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTE1LCAyLCAyNDEsIDUyLCA0OCwgCisgICAgNywgNCwgMSwgMTE1LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAKKyAgICAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIAorICAgIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgCisgICAgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIAorICAgIDI1MSwgMTQ3LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAyNDEsIDUyLCA0OCwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE4MiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE4MiwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIAorICAgIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDE4MiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAKKyAgICAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIAorICAgIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCAKKyAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQxLCA1MiwgNDgsIDcsIAorICAgIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCisgICAgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAKKyAgICAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAKKyAgICAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCisgICAgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgCisgICAgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNCwgCisgICAgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTM2LCA3LCA0LCAKKyAgICAxLCAyMTEsIDExOCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMSwgCisgICAgMTE4LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIAorICAgIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA2LCAKKyAgICAxLCAyMzAsIDIyMywgMjMyLCAxODUsIDcsIDQsIDEsIDIzMCwgMjIzLCAyMzIsIDE4NSwgNywgNiwgMSwgMjMwLCAyMjMsIAorICAgIDIxNCwgMTA1LCA3LCA0LCAxLCAyMzAsIDIyMywgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyMywgNywgCisgICAgNCwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTIzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIAorICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgCisgICAgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAKKyAgICAyNDgsIDE1MywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAKKyAgICAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgCisgICAgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCAKKyAgICA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAKKyAgICAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgCisgICAgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAKKyAgICAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIAorICAgIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCisgICAgMTU0LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgCisgICAgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIAorICAgIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjM1LCAxODYsIAorICAgIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgCisgICAgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAorICAgIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1MywgMjYsIDYsIAorICAgIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAKKyAgICAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgCisgICAgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIAorICAgIDQsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgCisgICAgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMjYsIDIwMCwgCisgICAgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgCisgICAgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAorICAgIDIxNCwgMTU4LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgCisgICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTUzLCAyNiwgNiwgCisgICAgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAKKyAgICAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIAorICAgIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIAorICAgIDEwMSwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgCisgICAgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgCisgICAgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIAorICAgIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIAorICAgIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgCisgICAgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIAorICAgIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgCisgICAgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCAKKyAgICA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIAorICAgIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAKKyAgICAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAKKyAgICAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgCisgICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDIzMSwgMjMyLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIAorICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIDExMSwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc2LCAKKyAgICAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgCisgICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE2NywgMjYsIDIzNCwgMiwgMjYsIDIyNCwgMTY3LCAyNiwgMjI0LCAKKyAgICAxNTQsIDI2LCAyMjUsIDE3NSwgMjYsIDI0NywgMjUyLCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIAorICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIAorICAgIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI0NSwgCisgICAgNjQsIDIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAorICAgIDI0NSwgMTAxLCAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTY3LCAyNiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAKKyAgICAyNiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIAorICAgIDE4NiwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjMxLCAyMzIsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgCisgICAgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjI2LCAxMTAsIDI2LCAKKyAgICA0LCAxLCAyMzUsIDE4NiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMjUsIAorICAgIDE3NSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMzEsIDIzMiwgCisgICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNiwgMTEwLCAyNiwgMjQ4LCAKKyAgICAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjMxLCAyMzIsIDI2LCA0LCAKKyAgICAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKKyAgICAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjMsIDM4LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyMywgMzgsIDIsIDI0OCwgCisgICAgMTUzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKKyAgICAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgCisgICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDIyMywgMzgsIDIsIDI0OCwgMTUzLCAyNiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgMjQ3LCAKKyAgICAyNTIsIDIyLCAyMjYsIDExMCwgMjYsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNiwgMTExLCAKKyAgICAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNjcsIDI2LCAyMjYsIDExMCwgMjYsIDI0OCwgMTUzLCAKKyAgICAyNDUsIDE1MSwgMjI0LCAyNywgMjQ1LCAxNjAsIDIyNCwgMjcsIDI0NSwgMTUxLCAyMTksIDE4LCAyNDUsIDE2MCwgMjE5LCAKKyAgICAxOCwgMjE2LCAxNDEsIDIxOSwgMTgsIDI0NCwgOSwgMjE5LCAxOCwgMjE5LCAxMjMsIDIxOSwgMTgsIDI0NCwgMTEyLCAyMTksIAorICAgIDE4LCAyMjQsIDE0MSwgMjE5LCAxOCwgMjE2LCAxNzAsIDIxOSwgMTgsIDI0MiwgMzUsIDIxOSwgMTgsIDIxMCwgODcsIDIxMSwgCisgICAgMjQ1LCAyMTksIDE4LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA2NywgMjEwLCA4NywgMjExLCAyNDUsIDIzNSwgNjMsIAorICAgIDIzMywgMzgsIDc4LCAyMjIsIDI0MywgNzgsIDI0MCwgMTY4LCAyMjgsIDY4LCAyNDAsIDE2OCwgMjQ0LCAxMTIsIDI0OCwgCisgICAgMTU2LCAyNDUsIDE1MSwgMjQ4LCAxNTYsIDI0NSwgMTYwLCAyNDgsIDE1NiwgMjAzLCAxMzAsIDUyLCA2NywgMjMyLCAyMTMsIAorICAgIDUyLCAxMjEsIDIzMiwgMjEzLCA0MywgMjE5LCAxNTUsIDIyMywgMjU0LCA3OCwgNDQsIDIxOSwgMTU1LCAyMjMsIDI1NCwgCisgICAgNzgsIDIxOSwgMTU1LCAyMzIsIDEwOSwgMjIzLCAyNTQsIDc4LCAyMTksIDE1NSwgMjQxLCAxNjMsIDIyMywgMjU0LCA3OCwgCisgICAgNDMsIDUyLCAyMjMsIDI1NCwgNzgsIDQ0LCA1MiwgMjIzLCAyNTQsIDc4LCA1MiwgMjMyLCAxMDksIDIyMywgMjU0LCA3OCwgCisgICAgNTIsIDI0MSwgMTYzLCAyMjMsIDI1NCwgNzgsIDI0OCwgMjA1LCA1MiwgMjQ4LCAyMDUsIDI1MSwgMTEzLCAyMTUsIDIyMiwgCisgICAgMjUxLCAxMTMsIDEyMywgNTksIDIzMywgNTYsIDExMywgNTksIDIzMywgNTYsIDIwMywgMjQ1LCAxNjMsIDI0MCwgMTY2LCAKKyAgICAyMjUsIDEwLCAyMzIsIDIxNCwgMjIwLCAxMzcsIDIyNiwgMTUsIDIyMCwgMTM3LCAyMzMsIDM4LCAyNDUsIDE1OCwgMjIyLCAKKyAgICAyNDMsIDI0NSwgMTU4LCAyMjQsIDI0NiwgMjQ3LCAxOTYsIDI0NCwgMTksIDIzMywgMzgsIDIyNiwgMTE3LCAyMjIsIDI0MywgCisgICAgMjI2LCAxMTcsIDIyOSwgMTk0LCAyMjgsIDczLCAyMTksIDE4LCAyMjUsIDE4MywgMjMwLCAxOTMsIDUwLCAyMjUsIDE4MywgCisgICAgMjE2LCAyNDgsIDIxNiwgMTQ4LCA1MCwgMjI0LCAxOTAsIDUyLCAyMjQsIDE5MCwgMjE1LCAyMTEsIDIyNCwgMTkwLCAyMjMsIAorICAgIDQ5LCAyMjQsIDE5MCwgMjIzLCA0OSwgNTIsIDIyNCwgMTkwLCAyMjMsIDQ5LCAyMTUsIDIxMSwgMjI0LCAxOTAsIDI1MCwgCisgICAgMjM4LCAyMTksIDE1NSwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCA3OCwgMjE5LCAxNTUsIDIyMiwgMjQ3LCAyNTQsIAorICAgIDExMCwgMjIzLCAyNTQsIDc4LCAyMjMsIDEwNywgNzgsIDUyLCAyNDUsIDMxLCA3OCwgMjM1LCAyMDEsIDIyNiwgMTE5LCAKKyAgICAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMSwgMjUwLCAyMzksIDIzNSwgMjE2LCAyMjUsIDEwLCAyNTMsIDIxNCwgMjQwLCAxNjksIAorICAgIDI1MSwgMTEzLCAyNDQsIDIsIDIxOSwgOTUsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIyNCwgNywgNDQsIDQyLCAyNTEsIDE1OCwgCisgICAgMiwgMjI0LCA3LCA1MiwgMjI0LCAxMywgNzgsIDIyNCwgMTMsIDI0NSwgMzEsIDc4LCAyNDUsIDMxLCAyMjQsIDEzLCA3OCwgCisgICAgMjE2LCA3MCwgNSwgMjQ1LCA2NSwgMjIzLCA0OSwgMjI1LCA2OCwgNTAsIDg1LCAxNDAsIDI1MSwgMTEzLCA4NSwgOTcsIAorICAgIDI1MSwgMTEzLCAxMjEsIDI1MywgMjE2LCAyMjMsIDQ5LCAyMjAsIDE1MCwgMjUwLCAxLCAyMTQsIDE2MywgMTEzLCAyNTMsIAorICAgIDIxNSwgMjU0LCAxNTgsIDIxMywgMTg4LCAyNDksIDIxNywgMjMwLCAxODIsIDUwLCAyMTcsIDIzNCwgMjQ4LCAxNTYsIDIzNSwgCisgICAgMTkzLCAyMTQsIDE4MCwgMjQ0LCA1MiwgMjI0LCAxNDEsIDc4LCAxMzQsIDU5LCAyMjQsIDE0MCwgMjI0LCAyNCwgMjI0LCAKKyAgICAxOTAsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDIyNCwgMTQwLCAxMTMsIDU5LCAyMjQsIDE0MCwgCisgICAgMjQ0LCAxMSwgNTksIDc4LCAyNDYsIDExOCwgMjQ5LCAxMzAsIDIxNSwgMjIxLCA2NywgMjQ0LCAxMSwgMjQ3LCAxMTgsIAorICAgIDIzMSwgODIsIDExLCAyMTksIDE4LCAyMTEsIDIwOSwgMjM1LCA2MywgMjQzLCAyMjcsIDI1NCwgNTIsIDIzNSwgMTkxLCAKKyAgICAyMTYsIDg1LCAyMzUsIDE5MSwgMjIwLCAxMzcsIDIzNSwgMTkxLCAyMjUsIDIyLCAyMzUsIDIyOCwgMjE3LCAxODIsIDIxNywgCisgICAgMjUxLCAyNTUsIDUsIDIxNywgMTgyLCAyMTcsIDI1MSwgMjM1LCAyMjgsIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyNTUsIDUsIAorICAgIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyMjksIDE4OSwgMjEsIDIyMCwgODEsIDIyOCwgNjksIDIxLCAyMjAsIDgxLCAyMTgsIAorICAgIDIzLCAyMTAsIDg2LCAyMTgsIDIzLCA3LCA0LCAxLCA3MywgMjE4LCAyMywgMTYxLCAyMTgsIDIzLCAxODksIDIxOCwgMjMsIAorICAgIDE5NCwgMjE4LCAyMywgMTk4LCAyMTgsIDIzLCAxOTUsIDIxOCwgMjMsIDIwMCwgMjE4LCAyMywgOTYsIDUwLCAyMTgsIDIzLCAKKyAgICAyMzAsIDE4MSwgMjE4LCAyMywgMjQ1LCA5OCwgNTAsIDIxOCwgMjMsIDQzLCAyMjYsIDMsIDIxOCwgMjMsIDQ0LCAyMjYsIDMsIAorICAgIDIxOCwgMjMsIDcsIDQsIDEsIDIzMCwgMjUsIDIxOCwgNjUsIDIxMCwgODYsIDIxOCwgNjUsIDExMCwgMjE4LCA2NSwgMTA1LCAKKyAgICAyMTgsIDY1LCAxNTgsIDIxOCwgNjUsIDE2MSwgMjE4LCA2NSwgMTg5LCAyMTgsIDY1LCAxOTQsIDIxOCwgNjUsIDE5OCwgCisgICAgMjE4LCA2NSwgMTk1LCAyMTgsIDY1LCAyMDAsIDIxOCwgNjUsIDk2LCA1MCwgMjE4LCA2NSwgMjMwLCAxODEsIDIxOCwgNjUsIAorICAgIDI0NSwgOTgsIDUwLCAyMTgsIDY1LCA0MywgMjI2LCAzLCAyMTgsIDY1LCA0NCwgMjI2LCAzLCA3LCAyMTgsIDY1LCA0LCAxLCAKKyAgICA2MSwgNywgMjE4LCA2NSwgNCwgMSwgNzUsIDcsIDIxOCwgNjUsIDQsIDEsIDc2LCA3LCAyMTgsIDY1LCA0LCAxLCAyMTEsIAorICAgIDE3OCwgNywgMjE4LCA2NSwgNCwgMSwgMjIxLCAxOTUsIDcsIDIxOCwgNjUsIDQsIDEsIDI0MiwgNjAsIDcsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIzNSwgMjMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1NiwgNywgMjE4LCA2NSwgNCwgMSwgMTkzLCA3LCAyMTgsIDY1LCAKKyAgICA0LCAxLCAyMzAsIDI1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjYsIDEwNSwgNywgMjE4LCA2NSwgNCwgMSwgMjIyLCA5MSwgNywgCisgICAgMjE4LCA2NSwgNCwgMSwgMjE3LCAxNTIsIDI0NSwgNDYsIDUwLCAyNDksIDIyNywgNTAsIDI0OSwgMTE3LCA1MCwgMjQzLCAKKyAgICAyNTEsIDI0MywgMjU0LCA1MCwgMjMyLCAxOTgsIDUwLCAyMzAsIDE5NCwgNTAsIDIyOSwgMjEwLCA1MCwgMjI1LCAxNjIsIAorICAgIDUwLCAyMjIsIDExOCwgNTAsIDIxMSwgMjE3LCA1MCwgMTY2LCAyMjAsIDQ5LCA1MCwgMjQ3LCAxMjcsIDUwLCAyNDUsIDQ3LCAKKyAgICA1MCwgMjM0LCA3NiwgNTAsIDIxNSwgMTEyLCA1MCwgMjQ2LCAxMDEsIDUwLCAyNDMsIDQwLCAyMjUsIDE5MywgNTAsIDIyNSwgCisgICAgMTYwLCA1MCwgMjQyLCAxMDksIDUwLCAyNTMsIDE4MiwgNTAsIDI0MCwgMjI4LCA1MCwgMjUwLCAxODUsIDUwLCAyMzIsIAorICAgIDE5MSwgMjE2LCAzLCA1MCwgMjE5LCAwLCA1MCwgMjE2LCAyNDUsIDUwLCAyMzUsIDI0MSwgMjIyLCAxMTgsIDUwLCAzOCwgCisgICAgNDMsIDI0MSwgMjU1LCA0OCwgMzgsIDQ0LCAyNDEsIDI1NSwgNDgsIDM4LCAxOTksIDY3LCAyMzIsIDIxNCwgMjI2LCAxMjAsIAorICAgIDM4LCAyMTksIDI1MSwgNjcsIDIzMiwgMjE0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDgwLCA0OCwgMzgsIDI1MCwgMiwgCisgICAgODAsIDQ4LCAzOCwgNDMsIDgwLCA0OCwgMzgsIDQ0LCA4MCwgNDgsIDM4LCAyMjIsIDIzNCwgMjI2LCAxMjAsIDM4LCAyNTAsIAorICAgIDIsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDEzNCwgMTcwLCA0OCwgCisgICAgMzgsIDI0NCwgMTEsIDE3MCwgNDgsIDM4LCAyNDUsIDE0NiwgMjUwLCAzNSwgMzgsIDI0NSwgMTQ2LCAyMTgsIDIzNCwgMzgsIAorICAgIDI0NSwgMTQ2LCAyNDcsIDI0OCwgMzgsIDI0NSwgMTQ2LCAyNTAsIDM2LCAyNTIsIDE4MCwgMzgsIDQzLCA0NCwgODAsIDQ4LCAKKyAgICAzOCwgMjQ1LCAxNDYsIDIyMSwgMTg4LCAzOCwgMjQ1LCAxNDYsIDIzNCwgMTM1LCAzOCwgMjQ1LCAxNDYsIDIxNCwgMTU1LCAKKyAgICAyMjUsIDcsIDIxNSwgMjI1LCAzOCwgMjIzLCA1MCwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA1MiwgNjcsIDIxOCwgMTAzLCAKKyAgICAyMjYsIDEyMCwgMzgsIDI1NCwgOTgsIDg3LCAzOCwgMjE1LCAyMTEsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgCisgICAgMTQwLCA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTIwLCAzOCwgMTk5LCA1MiwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA5NywgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgMzgsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAorICAgIDEwMywgMzgsIDQzLCA4MCwgNTEsIDM4LCA0NCwgODAsIDUxLCAzOCwgMjUzLCAyMTcsIDQ4LCAyNTUsIDExLCAyMjYsIDIzMSwgCisgICAgMjU0LCAyNTEsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMTgsIDc0LCAxMzksIDYsIDI1MSwgNjYsIDI0OCwgNzEsIDI1MCwgMTc4LCAKKyAgICAyNTAsIDE3NSwgMjMyLCAyMTQsIDg3LCAyNTAsIDI0MCwgMjI2LCAyMzEsIDI1MSwgMjYsIDIxNCwgMTg5LCAyNDUsIDQ4LCAKKyAgICAyNDksIDE5MSwgMjIxLCAxODUsIDI0OCwgNzEsIDI0NCwgMTc5LCAxMTksIDQsIDI0MywgMjAyLCAxMTksIDYsIDI0MiwgNjAsIAorICAgIDI1MSwgMjE5LCA2LCAyNDIsIDYwLCAxMzksIDYsIDI0MiwgNjAsIDIyNSwgMzcsIDI0OSwgMTkxLCAyMjUsIDM3LCAyNDksIAorICAgIDE5MiwgMTE3LCAxMTMsIDIyNSwgMTA4LCAxMTksIDYsIDczLCAyNTEsIDIxOSwgNiwgNzMsIDExOSwgNiwgMTU2LCAxMTksIAorICAgIDQsIDE1NiwgMjMzLCAxNDksIDU3LCAyNTIsIDE0MSwgODcsIDEzOSwgNiwgMjMwLCAyNSwgMjI3LCAxOTYsIDUwLCAyMTksIAorICAgIDMxLCAyMjMsIDExOSwgMjQ5LCAxNjIsIDExOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI0LCAKKyAgICA5NiwgMTE5LCA2LCAxNTMsIDI1MSwgMjE5LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5NiwgMjE3LCA3MSwgMjIzLCAKKyAgICA2MiwgMjIwLCAxMzIsIDc4LCAyMTcsIDEsIDUwLCAyMTUsIDI1MywgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAKKyAgICAxNTksIDIyNiwgMTMzLCA1MCwgMjI2LCAyMjEsIDUwLCAyMzUsIDE5MywgMjI2LCAyMjEsIDUwLCAyNTEsIDIxOSwgNiwgCisgICAgMjEwLCAxNTksIDIxNSwgOTQsIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjM0LCAxNzMsIDUwLCAyNTQsIDEwNywgNTAsIDExOSwgCisgICAgNiwgMjUzLCAxNTgsIDI1MSwgMjE5LCA2LCAyNTEsIDY2LCAyNDUsIDY4LCA4NywgMTE5LCA0LCA3NSwgMTE5LCA2LCA3NSwgCisgICAgMTE5LCA2LCAyNDUsIDYsIDIxNSwgOTQsIDYsIDI0NSwgNiwgMTE5LCA2LCAxOTMsIDExOSwgNCwgNzYsIDExMiwgODcsIAorICAgIDI1MiwgMjksIDg3LCAyNDIsIDIwMiwgODcsIDI0OCwgMTkwLCA4NywgMjM1LCAyMzIsIDIxOSwgMjksIDIyMiwgMTg3LCA2LCAKKyAgICAyMjQsIDk2LCAyNDQsIDE4MiwgNTAsIDEzOSwgNCwgMjI1LCAxMDgsIDEzOSwgNCwgMjQzLCAxMDcsIDEzOSwgNiwgMjQzLCAKKyAgICAxMDcsIDEzOSwgNiwgMjI1LCAxMDgsIDEzOSwgMjMwLCAyNCwgMjE4LCA0MCwgMjE1LCA5NCwgMzUsIDYsIDI0MywgMjAyLCAKKyAgICAyMTUsIDk0LCAzNSwgNiwgMTU2LCAyMjMsIDQ5LCAzNSwgNiwgMTU2LCAyMTUsIDk0LCAzNSwgNiwgMjExLCAxMTcsIDEzOSwgCisgICAgMzIsIDYsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDc1LCAxMzksIDMyLCA0LCA3MywgMTM5LCAKKyAgICAzMiwgNCwgMjM1LCAxNDQsIDIyNCwgMTcwLCAyMzIsIDIxMywgMjE1LCA5NCwgMjU0LCAxMjYsIDIyNSwgMTgzLCA1MCwgCisgICAgMjU0LCAxODAsIDIxNSwgOTQsIDQsIDI0NSwgNiwgMTYsIDMxLCAyMjEsIDI1MiwgMjE5LCAyOSwgMjEyLCAxMTQsIDI0NCwgCisgICAgMiwgMTIzLCAyMjAsIDExOCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMjgsIDE5NCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAKKyAgICAyMTYsIDI0MSwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMTYsIDE2OCwgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyMTYsIAorICAgIDE2NiwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDQsIDExNywgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyNDQsIDExNiwgCisgICAgMjEyLCAxMTQsIDI0NCwgMiwgMTM0LCAyNDQsIDExNiwgMjEyLCAxMTQsIDI0NCwgMiwgMjQ0LCAxMSwgMjQ0LCAxMTYsIAorICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjE5LCAxMTUsIDIxMiwgMTE0LCAyNDQsIDIsIDI0NCwgODEsIDIxOSwgMTEzLCAKKyAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMzQsIDI0NSwgMTg2LCAyMTIsIAorICAgIDExNCwgMjQ0LCAyLCAyNDQsIDgxLCAyNDUsIDE4NiwgMjEyLCAxMTQsIDI0NCwgMiwgMjIwLCAxMjIsIDI0NSwgMTg2LCAKKyAgICAyNDQsIDIsIDIyNywgMTk3LCAxMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgCisgICAgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTYxLCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDE4OSwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk4LCAyMjIsIDE5OCwgMjI3LCAKKyAgICAxOTgsIDE5NSwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMDAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAyNDQsIDExNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIAorICAgIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAKKyAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDQsIDIyMiwgMTk4LCAyMjcsIAorICAgIDE5OCwgMTYxLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE4OSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDQsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMTk4LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAyMDAsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDQsIAorICAgIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNCwgNCwgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIDI0MCwgMjEwLCAKKyAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0OCwgCisgICAgMjUxLCA2NywgMjQ5LCA2MCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDgxLCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgCisgICAgMTk4LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjIzLCA0OSwgMTIzLCAyNDAsIDIxMCwgNywgCisgICAgNCwgMSwgMjIzLCA0OSwgMjUxLCA2NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTksIDEyNSwgMjMzLCA3OCwgMTcsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMjQ0LCAxMTUsIDI0NSwgMjI2LCAxNywgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNSwgMjE2LCAKKyAgICAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyNDAsIDIxMSwgMjE2LCAxNDcsIDIxMiwgMTE0LCAyNDQsIDIsIDIxMCwgCisgICAgODcsIDIxNiwgMTY2LCAxNDAsIDc0LCAyMTQsIDE1MywgNzQsIDk3LCA3NCwgMjQ2LCAxMDQsIDc0LCA0MywgNDQsIDc0LCAKKyAgICAxMjAsIDEyNCwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDc0LCAyMTksIDI4LCAyMTIsIDksIDc0LCAxNDAsIDgwLCAyLCA5MSwgOTcsIDgwLCAyLCA5MSwgMTQwLCAyMTIsIAorICAgIDM2LCA3NCwgOTcsIDIxMiwgMzYsIDc0LCAxNDAsIDExMywgMjQxLCAyMzQsIDc0LCAyMTQsIDE1MywgMTEzLCAyNDEsIDIzNCwgCisgICAgNzQsIDk3LCAxMTMsIDI0MSwgMjM0LCA3NCwgMjQ2LCAxMDQsIDExMywgMjQxLCAyMzQsIDc0LCAxNDAsIDgwLCAyLCAyMTcsIAorICAgIDc3LCA5NywgODAsIDIsIDIxNywgNzcsIDE0MCwgODAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCA4MCwgMjQzLCAyNDMsIAorICAgIDEzMCwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgODAsIDI0MywgMjQzLCAxMzAsIDEyMCwgMTI0LCA4MCwgMiwgCisgICAgMjUyLCAxMjcsIDE0MCwgODAsIDIsIDEwMywgOTcsIDgwLCAyLCAxMDMsIDE0MCwgODAsIDIsIDIzMiwgMTIzLCA5NywgODAsIAorICAgIDIsIDIzMiwgMTIzLCA0MywgNDQsIDIxMiwgMzYsIDc0LCA0MywgNDQsIDgwLCAyLCA5MSwgMjQ2LCAxMDQsIDIxMCwgMzUsIAorICAgIDc0LCAyMTQsIDE1MywgODAsIDIsIDIxNiwgNzcsIDIzMywgMzcsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3NywgMjIyLCAKKyAgICAyNDEsIDI0NiwgMTA0LCA4MCwgMiwgMjE2LCA3NywgMjMzLCAzNywgMjQ2LCAxMDQsIDgwLCAyLCAyMTYsIDc3LCAyMjIsIAorICAgIDI0MSwgOTcsIDgwLCAyLCAyNDksIDE2MSwgMjQ2LCAxMDMsIDI0NiwgMTA0LCA4MCwgMiwgMjQ5LCAxNjEsIDIzMywgMzcsIAorICAgIDI1NCwgODgsIDIxNiwgMTQsIDIyMCwgMTUzLCA3NCwgMjUwLCAyLCAyMTYsIDE0LCAyMjAsIDE1MywgNzQsIDIyOCwgNTYsIAorICAgIDIxMiwgOSwgODAsIDIxNiwgNDIsIDE5OSwgMTMwLCAxNDAsIDgwLCAyMTYsIDQyLCAyNTIsIDE0MSwgMTE3LCA5NywgODAsIAorICAgIDIxNiwgNDIsIDEzMCwgMjU0LCA4OCwgMjA0LCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyMDQsIDI1MCwgMzYsIDc0LCAxNDAsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjE0LCAxNTIsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgCisgICAgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDIzMywgMzcsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIxNCwgMTUyLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAyNDYsIDEwMywgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDI0NiwgMTA0LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDIzMywgMzcsIDk3LCA4MCwgMTE3LCAxNDAsIDc0LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIAorICAgIDI0NiwgMTA0LCA3NCwgMTQwLCA4MCwgMTE3LCA5NywgNzQsIDE0MCwgMjI2LCA3MCwgMjUzLCAyNDcsIDIxNCwgMTUzLCAKKyAgICAyMjYsIDcwLCAyNTMsIDI0NywgOTcsIDIyNiwgNzAsIDI1MywgMjQ3LCAyNDYsIDEwNCwgMjI2LCA3MCwgMjUzLCAyNDcsIAorICAgIDE0MCwgMjQxLCAyNTUsIDExNywgOTcsIDI0MSwgMjU0LCA5NywgMjQxLCAyNTUsIDExNywgMTQwLCAyNDEsIDI1NCwgMTQwLCAKKyAgICA1MiwgODAsIDIsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgOTEsIDk3LCA1MiwgODAsIDIsIDkxLCAxNDAsIDUyLCA3NCwgCisgICAgMjE0LCAxNTMsIDUyLCA3NCwgOTcsIDUyLCA3NCwgMjQ2LCAxMDQsIDUyLCA3NCwgNDMsIDQ0LCA1MiwgNzQsIDEyMCwgMTI0LCAKKyAgICA1MiwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNTIsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyMTIsIDksIDUyLCA3NCwgMTQwLCAyMTUsIDIxMSwgNzQsIDk3LCAyMTUsIDIxMSwgCisgICAgNzQsIDE0MCwgMjE4LCAyMzAsIDc0LCA5NywgMjE4LCAyMzAsIDc0LCAyMTQsIDE1MywgODAsIDIsIDUyLCA5MSwgMjQ2LCAKKyAgICAxMDQsIDgwLCAyLCA1MiwgOTEsIDE0MCwgMjQ4LCAxNTUsIDc0LCAyMTQsIDE1MywgMjQ4LCAxNTUsIDc0LCA5NywgMjQ4LCAKKyAgICAxNTUsIDc0LCAyNDYsIDEwNCwgMjQ4LCAxNTUsIDc0LCAxNDAsIDgwLCAyMTYsIDQyLCAxMzAsIDk3LCA4MCwgMjE2LCA0MiwgCisgICAgMTMwLCAxNDAsIDcxLCA3NCwgMjE0LCAxNTMsIDcxLCA3NCwgOTcsIDcxLCA3NCwgMjQ2LCAxMDQsIDcxLCA3NCwgMjE0LCAKKyAgICAxNTMsIDcxLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAxOTcsIDIyNSwgMjE0LCAyMTQsIAorICAgIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgMjI1LCAyMTUsIDIsIDIwMywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgCisgICAgMjI1LCAyMTUsIDIsIDY3LCAxMzAsIDIxNCwgMTUzLCA3MSwgNTIsIDc0LCAyMTQsIDE1MywgNzEsIDUyLCA4MCwgMjI2LCAKKyAgICAxOTcsIDIyNSwgMjE0LCA5NywgNzEsIDgwLCAyNDMsIDI0MywgMjEyLCA1NiwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjE2LCAKKyAgICA0MiwgMjQ5LCAxNjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgMjE2LCA0MiwgMjQ5LCAxNjAsIDEyMCwgMTI0LCA3MSwgNzQsIAorICAgIDQ0LCA4MCwgMiwgNCwgMjUwLCAzNSwgMjQ2LCAxMDQsIDgwLCAxNDAsIDY0LCAyMTQsIDE1MywgNzQsIDEzNCwgOTcsIDI1MywgCisgICAgMjQ3LCAxNDAsIDgwLCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA2NywgOTEsIDE0MCwgCisgICAgODAsIDIsIDUyLCA2NywgOTEsIDk3LCA4MCwgMiwgNTIsIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAKKyAgICAyMjYsIDE3MywgNzQsIDk3LCAyMjYsIDE3MywgNzQsIDQzLCA0NCwgMjI2LCAxNzMsIDc0LCAzMSwgMjU0LCAxNTQsIDI0OSwgCisgICAgMjE0LCAyMjUsIDI1MywgMjQ3LCAyMzMsIDIxNiwgMTg3LCAyNDUsIDI3LCAyMTYsIDE4NywgMjQ3LCAxMzgsIDIyOCwgNTIsIAorICAgIDI0NSwgMjgsIDI0NSwgMTUyLCAyMjAsIDEyNywgMjM1LCAyNDUsIDIyOSwgMjIxLCAyNDUsIDE3MCwgMjI2LCAyMzEsIDIyOCwgCisgICAgNTIsIDI1NCwgMTI0LCAyNDUsIDE3MCwgMjI2LCAyMzEsIDQsIDI0NSwgMTcwLCAyMjYsIDIzMSwgMjQ5LCAxODYsIDI1MywgCisgICAgMjM4LCAyMzEsIDYyLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMzEsIDYyLCA0LCAyNDksIAorICAgIDE4NiwgMjUzLCAyMzgsIDIzMSwgNjIsIDI0NSwgMTQzLCA2NCwgMjI0LCAxNzIsIDIzMCwgMjQsIDIyNCwgMTgwLCAyMzAsIAorICAgIDI0LCAyNDksIDE2NSwgMjMwLCAyNCwgMjE4LCA0MCwgMjMwLCAxODIsIDUwLCAyMzAsIDE4MCwgNTAsIDU5LCAyMjUsIDIyLCAKKyAgICAyNDcsIDE2OSwgMjE5LCA5NSwgMjIwLCAxMjgsIDIzMCwgMTgxLCAyNTMsIDIxNywgMjI2LCAxNjcsIDIyMiwgMjM0LCAyMjYsIAorICAgIDE2NywgMjUxLCAxMTQsIDIyNiwgMTY3LCA0MiwgMjIyLCAxOTMsIDI0OSwgMTA5LCAyMjIsIDE5MywgMjQ0LCA0LCAyMjIsIAorICAgIDE5MywgMjI0LCAxNjgsIDExMSwgMjM1LCAyMzQsIDQ0LCAyNTQsIDEwOSwgMjU0LCAxMDksIDIzMSwgODgsIDI1NCwgMTA5LCAKKyAgICAyMTgsIDI1NSwgMjU0LCAxMDksIDI0NywgMTcxLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ3LCAxNzQsIDIyNiwgOCwgMTExLCAKKyAgICAyMjgsIDUyLCAyMjYsIDgsIDExMSwgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIzNSwgMTk4LCAKKyAgICAyMTQsIDE3NSwgMjM1LCAyMTEsIDUyLCAyMzUsIDIxMSwgMjE1LCAyMTEsIDIzNSwgMjExLCAyNDksIDE4MiwgMjM1LCAyMTEsIAorICAgIDIxOCwgMTMsIDIzNSwgMjExLCAyMTMsIDEyOSwgMjM1LCAyMTEsIDI1MCwgMiwgMjM1LCAyMTEsIDI1MCwgMiwgMjQ5LCAKKyAgICAxODIsIDIzNSwgMjExLCAyNTQsIDg4LCAyNDksIDE4MiwgMjM1LCAyMTEsIDIxNiwgMTg2LCAyNTIsIDY3LCAyMjMsIDEzNywgCisgICAgMjI0LCAxNjksIDU5LCAyMzAsIDE4MSwgMjQ1LCAzMywgMjQzLCA0NiwgMjI0LCAxNjksIDI0MSwgNTcsIDIxNiwgODksIAorICAgIDIyNiwgMTY3LCAyMjMsIDQ5LCAxODIsIDIzNSwgMTkzLCAyMzMsIDY1LCAyMjIsIDkxLCAyMTksIDE1NywgMjEyLCAzNSwgCisgICAgMjExLCAyMDAsIDIyNCwgMTgwLCAyMjgsIDUyLCAxODIsIDIzMCwgMTgyLCAxODIsIDI1MywgMjEwLCAxMjgsIDExMSwgMjI4LCAKKyAgICA1MiwgMjUzLCAyMTAsIDEyOCwgMTExLCAyNTQsIDQ4LCAxMjgsIDExMSwgMjU0LCA0OCwgMjUxLCA4OCwgMjI4LCA1MiwgCisgICAgMjU1LCA0LCAxMjgsIDExMSwgMjI5LCAxMDAsIDI1NCwgNDgsIDIyOCwgNTksIDI1NSwgNCwgMTI4LCAxMTEsIDI1NCwgMTQ4LCAKKyAgICAxMjgsIDExMSwgMjI4LCA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCAyNTQsIDE0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyMTUsIAorICAgIDIxMSwgMTgyLCAyNTQsIDE1NSwgMTI4LCAxMTEsIDI0NSwgOTQsIDExMSwgMjQzLCA0NSwgMjQ1LCA5NCwgMTExLCAyNDcsIAorICAgIDIzNCwgMjUyLCAyMywgMjU0LCA1MCwgMjE2LCAxOTYsIDIzMiwgMjIxLCAyNDMsIDQ1LCAxMjgsIDExMSwgMjU0LCA0OCwgCisgICAgMTI4LCAyMTYsIDQyLCAxNzcsIDIxNiwgMTk2LCAyMzYsIDE1LCAyMjYsIDIzMSwgMjM2LCAxNSwgNjQsIDE3NywgMjU0LCAKKyAgICA0OCwgMTI4LCAxMTEsIDI0OSwgMjI3LCAyNDUsIDk3LCAyNDUsIDk4LCAyNDksIDIyNiwgMjIyLCAyMzQsIDIzNiwgMCwgCisgICAgMTI4LCAxMTEsIDIyMiwgMjM0LCAxMjgsIDExMSwgMjQ5LCAxNTQsIDExMSwgMjQ1LCA2NywgMjQ1LCA5NiwgMTExLCAyMTgsIAorICAgIDE1NywgMjQ1LCA5NywgMjQ4LCA1NSwgMTI4LCAxMTEsIDEyOCwgMjE2LCA0MiwgMjUxLCA3OCwgMjQ4LCA3MiwgMjMxLCA4OCwgCisgICAgMjUxLCA3NywgMjI0LCAxMSwgMTI4LCAxMTEsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDAsIDEwNCwgMTExLCAyMjgsIDUyLCAKKyAgICAyNDAsIDEwNCwgMTExLCAyMTgsIDEwOSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDEyOCwgMTExLCAyNDIsIDEzMCwgCisgICAgMTc3LCAxMjgsIDExMSwgMjMzLCAxNSwgMTE3LCAxMjgsIDExMSwgMjQyLCAxMzAsIDExNywgMTI4LCAxMTEsIDIzMywgMTUsIAorICAgIDI1MSwgODgsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDIsIDEzMCwgMjUxLCA4OCwgMjI4LCA1MiwgMTI4LCAxMTEsIDIzMCwgCisgICAgOTcsIDIzMywgMTQsIDIzMCwgOTcsIDI0MiwgMTI5LCAyNTIsIDIzLCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIyOCwgNTIsIAorICAgIDIzMywgMTQsIDIyOCwgNTIsIDI0MiwgMTI5LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMTI4LCAxMTEsIDIyOSwgCisgICAgMTAwLCAyNDIsIDEzMCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIzMywgMTUsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDIsIDEzMCwgCisgICAgMTc3LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAKKyAgICAyNDIsIDEzMCwgMjI4LCA1OSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgMTc3LCAKKyAgICAyMzMsIDE0LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMjQyLCAxMjksIDIyOSwgMTAwLCAyNDIsIDEzMCwgMjI4LCAKKyAgICA1OSwgMjMzLCAxNCwgMjI0LCAyMDIsIDIxOCwgNTUsIDIyNCwgMjAzLCAxNzcsIDEyOCwgMTExLCAyMTgsIDU2LCAxNzcsIAorICAgIDEyOCwgMTExLCAyMjQsIDIwMywgMTc3LCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDcsIAorICAgIDEzOCwgMjI4LCA1MiwgMjI0LCAyMDUsIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU3LCAyMTgsIDY0LCAyMjYsIDIzMSwgCisgICAgMjE4LCAyMiwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCA2NCwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCAKKyAgICAyMiwgMjI2LCAyMzEsIDIxOCwgNjQsIDY0LCAxNzcsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjI5LCAxMDAsIDExNSwgMjE4LCA2NCwgNjQsIDIyOCwgNTksIDEyOCwgMTExLCAyMjksIDEwMCwgMTE1LCAyMTgsIDIyLCAKKyAgICA2NCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIxOCwgNjQsIDY0LCAyLCAyMjgsIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDIsIAorICAgIDIyOCwgNTIsIDEyOCwgMTExLCAyMzAsIDgxLCAyMzAsIDgyLCAyMzAsIDgzLCAyMzAsIDgyLCAyMTQsIDE3NSwgNDIsIDIzNiwgCisgICAgMTUsIDIyNiwgMjMxLCA0MiwgMjI2LCAxNTAsIDIyNiwgMjMxLCA0MiwgMjM2LCAxNSwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAKKyAgICAyMjYsIDE1MCwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAyNTAsIDI1MSwgNDIsIDI0OSwgMTAyLCAzNywgMjI1LCAyMiwgMzcsIAorICAgIDIzMCwgMTgxLCAzNywgMjE2LCA4NSwgMzcsIDI0NywgMTY5LCAyMTksIDk1LCAzNywgNTksIDIyNiwgMTY3LCAzNywgMjIyLCAKKyAgICAyMzQsIDIyNiwgMTY3LCAzNywgMjUzLCAyMTcsIDIyNiwgMTY3LCAzNywgMjQ1LCA5NywgMzcsIDI0OCwgMTU2LCA5MiwgCisgICAgMjI1LCAyMiwgOTIsIDIzMCwgMTgxLCA5MiwgMjE2LCA4NSwgOTIsIDU5LCAyMjYsIDE2NywgNDQsIDIxNywgODcsIDQzLCAKKyAgICAyMTcsIDg3LCAxMjQsIDIxNywgODcsIDEyMCwgMjE3LCA4NywgMjUzLCAyMjAsIDIzMCwgMTU2LCAyMTUsIDE5MSwgMjQ0LCAKKyAgICAyNSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0NCwgMjE1LCAKKyAgICA5MywgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgMTYzLCAyMjgsIDUyLCAyMTUsIDE5MSwgMjQ3LCAxMzgsIDIyOCwgNTIsIAorICAgIDI0NCwgMjYsIDIyOSwgMTAyLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDQsIDIxNSwgOTMsIDIyNCwgMjAzLCAyMTQsIDE4NCwgCisgICAgMjIzLCA5MSwgMjE4LCA1NiwgMjE0LCAxODQsIDIyMywgOTEsIDIyOCwgNTcsIDIxOCwgNzcsIDIyNiwgMjMxLCAyNDksIAorICAgIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTcsIDIxOCwgNzcsIDY0LCAxNzcsIDEyOCwgMTExLCAKKyAgICAyNDksIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzcsIDE3NywgMTI4LCAxMTEsIDIyNiwgMTUwLCAyMjYsIDIzMSwgCisgICAgMjM2LCAxNSwgMjI2LCAyMzEsIDIzMCwgODcsIDI0MSwgMjAwLCAyNDksIDE5NiwgMjMxLCAxMzcsIDIzNSwgMjA4LCAyMTEsIAorICAgIDE0NSwgMjI5LCAyMDIsIDIyOCwgNTgsIDQ0LCAyNTQsIDExMCwgMiwgMjU0LCAyNSwgNDQsIDIxNSwgMjI1LCAyMzAsIDI0LCAKKyAgICAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMCwgMjQsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjMwLCAyNCwgMjM1LCAxOTgsIDIzMCwgCisgICAgMjQsIDIxNCwgMTc1LCAyNDcsIDI0OSwgMjI2LCAxNjcsIDU5LCAyMjYsIDE2NywgMjE4LCAxNTcsIDIyNiwgMTY3LCAyNDcsIAorICAgIDE2OSwgMjE2LCA4NSwgMjUxLCAxNjQsIDQzLCAyMjgsIDU3LCAyNDQsIDE4MSwgMjIwLCAxNDksIDIyNCwgMTgwLCA0NCwgCisgICAgMjI4LCA1NywgMjQ0LCAxODEsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDMsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDQsIDIyMCwgCisgICAgMTQ5LCAyMjQsIDE4MCwgMjIzLCA0OSwgMjE2LCA4OSwgMjQ1LCA5NywgMjQ5LCA5OSwgMjMyLCAxNDYsIDIyNiwgMTU4LCAKKyAgICAyNDksIDk5LCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMTgsIDYzLCA1MiwgMjE4LCAyMSwgNTIsIDIzNSwgMTk4LCA1MiwgCisgICAgMjE0LCAxNzUsIDIyNSwgNDcsIDEyOCwgMjIsIDIyNiwgOCwgMTExLCAyMzMsIDE1LCAyLCAyNDcsIDEyMCwgMjQyLCAxMzAsIAorICAgIDIsIDI0NywgMTIwLCAyMTMsIDE4NywgMjMwLCA5NywgMjMzLCAxNCwgMjEzLCAxODcsIDIzMCwgOTcsIDI0MiwgMTI5LCAKKyAgICAyMzMsIDE1LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDI0MiwgMTMwLCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAKKyAgICAxNCwgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMTI4LCAyMTYsIAorICAgIDQyLCAxNzcsIDIyNCwgMjAyLCAxMjgsIDIxNiwgNDIsIDE3NywgMjE4LCA1NSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgCisgICAgMjA2LCAxNzcsIDI0NSwgOTksIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU4LCAxNzcsIDI0NSwgOTksIDIyOCwgNTIsIDQyLCAKKyAgICAyMzYsIDE1LCA2NCwgMTc3LCAxMjgsIDExMSwgMjI4LCA1MiwgNDIsIDIyNiwgMTUwLCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIAorICAgIDIzNiwgMTUsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgMTExLCA0MiwgMjI2LCAxNTAsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgCisgICAgMTExLCAyMzMsIDE1LCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDI0MiwgMTMwLCAyNTEsIDg4LCAyMjgsIDUyLCAKKyAgICAyNDUsIDk0LCAxMTEsIDIyNCwgMjAzLCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDI1MSwgODgsIAorICAgIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjI4LCA1MiwgMjI4LCA1NywgMjE4LCA3NywgMjI2LCAyMzEsIDI0NywgMTM4LCAKKyAgICAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTIsIDIyOCwgNTcsIDIxOCwgNzcsIAorICAgIDY0LCAxNzcsIDEyOCwgMTExLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIAorICAgIDc3LCAxNzcsIDI0NSwgOTksIDY3LCAyNDUsIDE2MywgMjMwLCAyMjIsIDIwMywgMjQ1LCAxNjMsIDEyMCwgNDQsIDI0NywgCisgICAgMjU1LCAyNDUsIDE2MywgMTI0LCA0NCwgMjQ3LCAyNTUsIDI0NSwgMTYzLCAyNDUsIDE3MCwgNjQsIDIsIDE5OSwgMjAzLCAKKyAgICA5MSwgMjQ1LCAxNzAsIDY0LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDQsIAorICAgIDI0NSwgMTcwLCA2NCwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCAyNDUsIDE3MCwgCisgICAgNjQsIDIsIDU5LCA0OCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgNCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgCisgICAgMjQ1LCAxNzAsIDY0LCAyLCAyMTQsIDE4MywgMjQ1LCAxNzAsIDY0LCAyLCAxMTMsIDIwMywgMjE4LCA5MCwgMjQ5LCAxODYsIAorICAgIDIsIDE5OSwgMjAzLCA5MSwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCAKKyAgICA5MSwgNCwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgMjQ5LCAKKyAgICAxODYsIDIsIDIyNiwgMTIzLCA0LCAyNDksIDE4NiwgMiwgMjI2LCAxMjMsIDIxMCwgMTYwLCAxODcsIDI1MiwgMTczLCAyMzEsIAorICAgIDYxLCAyNDcsIDI1MCwgNTAsIDI0NSwgMTcyLCA3NCwgMjQwLCAyMzQsIDEyMCwgMjUzLCAyNDksIDEyNCwgMjUzLCAyNDksIAorICAgIDIyNCwgMTc1LCAyMjUsIDE2NSwgMjEyLCAzMiwgMjMyLCAyMTMsIDQzLCAyNTAsIDE4MSwgNDQsIDI1MCwgMTgxLCA0MywgCisgICAgMjQ0LCA1NywgNDQsIDI0NCwgNTcsIDI1MSwgMTc1LCA0NCwgMjQ5LCAxMzIsIDI1MSwgMTc1LCA0MywgMjQ5LCAxMzIsIAorICAgIDIxNiwgMTQsIDQ0LCAyNDksIDEzMiwgMjE2LCAxNCwgNDMsIDI0OSwgMTMyLCAyMjMsIDQ5LCAyMjgsIDUyLCA1MCwgNDIsIAorICAgIDIzMiwgMTA0LCAyNTQsIDI1LCAyMjEsIDE2NCwgMjIxLCAxNzEsIDIxNywgMSwgMjIzLCAxMjAsIDIyNCwgMjQxLCAyMzUsIAorICAgIDIzOCwgMjEzLCAxNjUsIDIxOCwgMjM0LCAyMjUsIDQxLCA2NCwgMjM1LCAyMDcsIDUwLCAyMTUsIDk0LCAyMjgsIDUyLCA1MCwgCisgICAgMjEyLCA0MiwgMjQwLCAyMzYsIDIxNiwgMTQsIDQzLCAyNDksIDE2MCwgMjE2LCAxNCwgNDQsIDI0OSwgMTYwLCAyNTEsIAorICAgIDE3NSwgNDMsIDI0OSwgMTYwLCAyNTEsIDE3NSwgNDQsIDI0OSwgMTYwLCAyMTYsIDE0LCAxNjMsIDIzNSwgMjExLCAyNTEsIAorICAgIDE3NSwgMTYzLCAyMzUsIDIxMSwgMjQzLCAyNDAsIDIxOSwgNzUsIDEyMCwgMjUzLCAyNTAsIDI1MiwgMjQsIDExMywgMjAzLCAKKyAgICAyNTIsIDEyOSwgMjI2LCAxNjAsIDIzNCwgMTM4LCAyNDUsIDkwLCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDIxMSwgCisgICAgMTc5LCAyMzYsIDAsIDExNSwgMjIzLCAxMTcsIDI1MSwgMTYzLCAyMzQsIDEzNywgMjMzLCA0MiwgMjU0LCAxMTAsIDEyNywgCisgICAgMjIyLCAyNDcsIDI1NCwgMTEwLCAxMjcsIDI0NSwgOTAsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMzMsIDQ2LCAyNTIsIDM1LCAKKyAgICAyMjIsIDIzMywgMjQ5LCA3MCwgMjU0LCAxNTUsIDI1NCwgMSwgMjE3LCAxODEsIDIxNiwgNCwgMjIyLCAxMjMsIDI0NywgCisgICAgMjE1LCAyMjYsIDE1MSwgMjQ5LCAxOTgsIDIxNywgNTIsIDIxOSwgODYsIDI0OSwgMTUxLCAyNDksIDE1MCwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyNDAsIDE1MSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTgsIDIyOCwgMjI0LCAyNywgMjU0LCAKKyAgICA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgCisgICAgMTc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgMjQ4LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjUwLCAzNSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNTAsIDM2LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyMzUsIDU2LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIxOSwgOTYsIDEzMCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTIsIDE4MSwgMTMwLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIxOSwgOTUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMjUyLCAxODAsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjMzLCAxNCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyMjQsIDI4LCAyNDIsIDEyOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxNDAsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgOTcsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMTQwLCA3NCwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCA5NywgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjUyLCAxODAsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyNDgsIDU1LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAxMjQsIDI1MCwgMjM4LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0OCwgNTQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAKKyAgICAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxNCwgMTUzLCAyMTQsIDE5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDIxNCwgMTUzLCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIyNiwgMTIzLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgNjYsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDEyMCwgMjUwLCAyMzgsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ4LCA2NSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ2LCAxMDQsIDIxNCwgMTksIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ2LCAxMDQsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMywgCisgICAgMjUzLCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIDU1LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNDcsIDI0OSwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjM1LCA1NywgMjE0LCAxODMsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAKKyAgICAyMjAsIDUsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIzLCAyNTMsIDIyNCwgMjcsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjUwLCAzNiwgMjE4LCAxNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ5LCAyMjYsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAyMTcsIDg4LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCAKKyAgICA2NiwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxOCwgMTU3LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAKKyAgICAxNiwgMjM1LCA1NywgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDI0OCwgMSwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAxMjQsIDIyMCwgNSwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgNDMsIDIyMCwgNSwgCisgICAgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE2LCA4OSwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI0MiwgMTMwLCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ5LCAyMjAsIDEzMCwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNDgsIDY2LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjEwLCAzNCwgMjU0LCA2NiwgMjQzLCAyMjUsIAorICAgIDE2LCAyMTgsIDEzNiwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMCwgMTUxLCAyMTQsIDE4MywgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMjgsIDUyLCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDIyNCwgMTIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyNTAsIDIzOSwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgCisgICAgMTYsIDEyMCwgMjUwLCAyMzksIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMzUsIDE4NSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyMjMsIDM3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI1NCwgMTQ0LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDUsIDEwMSwgMjE0LCAxODMsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMjM1LCAxODYsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAyLCAyMTQsIAorICAgIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTQsIDE0MywgMjI4LCA1MiwgMjUwLCAxMzAsIDc4LCA0NCwgMjU0LCAKKyAgICAxMTAsIDIsIDI0NiwgMTA0LCAyMTAsIDM1LCA3NCwgMjE5LCAyMzUsIDIwNCwgMjUxLCAxNjMsIDI1MiwgNDUsIDg3LCA2NywgCisgICAgMjMyLCAyMTQsIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM1LCAyMTYsIDg3LCAyNDksIDE4MywgMjE0LCAxODEsIDg3LCAKKyAgICAyNDcsIDE4OSwgMjE0LCAxODEsIDg3LCAyNDUsIDE1NCwgODcsIDI0OSwgMjEwLCA4NywgNzEsIDQyLCAyLCAyNTAsIDE3NSwgCisgICAgNjcsIDIzMiwgMjEzLCAyNDUsIDEzMCwgODcsIDI1NCwgMTM5LCAyMzQsIDEzOSwgODcsIDI0MSwgMjEzLCA4NywgMzcsIAorICAgIDIwMywgMjUyLCAxNDEsIDIsIDIyOCwgNTAsIDM3LCAyMTUsIDIyNiwgMjQ2LCAxMDYsIDI1MSwgMTM1LCAyNTAsIDM2LCAyLCAKKyAgICAyMjgsIDU0LCA3NCwgMjE0LCAxNzksIDg3LCAyMzAsIDEzNywgODcsIDI0MCwgMTY0LCA4NywgMjI2LCAxNzQsIDI0MiwgNTksIAorICAgIDg3LCAyMjYsIDE3NCwgMjMzLCAxNDcsIDg3LCAyMjUsIDI0NCwgODcsIDIyNSwgMjQzLCA4NywgMjQ3LCAxOTcsIDI0OSwgCisgICAgOTcsIDE2LCAyNDQsIDIwLCAxMDUsIDIxOSwgNTAsIDg3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjcsIDI0OCwgCisgICAgODMsIDIyMCwgMTM4LCAyMzQsIDEzOSwgODcsIDIyNCwgMTkyLCAyMjYsIDc1LCAyMjksIDgyLCAyMjYsIDc1LCAyMjQsIAorICAgIDE4OCwgMjIxLCAxODksIDg3LCAyNTAsIDE3LCAyMjEsIDE4OSwgODcsIDQzLCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIDQzLCAKKyAgICAyMjYsIDQsIDI0NSwgMjEsIDQzLCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQ0LCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIAorICAgIDQ0LCAyMjYsIDQsIDI0NSwgMjEsIDQ0LCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQzLCA0MiwgMjUxLCAxNTgsIDIxNCwgCisgICAgMTYwLCAyNDksIDE2MCwgNDMsIDQyLCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDMsIDQyLCAyNTEsIDE1OCwgMjMyLCAxMDgsIAorICAgIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyMTQsIDE2MCwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDI0NSwgCisgICAgMjEsIDQ0LCA0MiwgMjUxLCAxNTgsIDIzMiwgMTA4LCAyNDksIDE2MCwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMTQsIAorICAgIDE2MCwgMTAzLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDMsIDI0OSwgOTksIDI1MSwgCisgICAgMTU4LCAyMzIsIDEwOCwgMTAzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAKKyAgICAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDQsIDI0OSwgOTksIAorICAgIDI1MSwgMTU4LCAyMzIsIDEwOCwgMTAzLCAyMzUsIDIxMiwgMjQ1LCAyMSwgMjAzLCAyMzIsIDIxNCwgMjQ1LCAyMSwgMjE0LCAKKyAgICAxNjAsIDQzLCAxNzcsIDIzMiwgMTA4LCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyMSwgMTcyLCAyMTQsIDE2MCwgNDQsIAorICAgIDE3NywgMjMyLCAxMDgsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjIxLCAxNzIsIDIxOCwgNDEsIDIxNiwgMTMsIDIxOCwgCisgICAgNDEsIDI1MSwgMTc0LCAyMTYsIDE0LCA0MiwgMTI3LCAyNTEsIDE3NSwgNDIsIDEyNywgMjUxLCAxNzUsIDQyLCAyNTEsIAorICAgIDE1OCwgMTE3LCAyMTYsIDE0LCA0MiwgMTI3LCAzNCwgMTYsIDI1MSwgMTc0LCA0MywgNjcsIDkzLCAyMzIsIDIxMywgNDQsIAorICAgIDY3LCA5MywgMjMyLCAyMTMsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjEyLCAyMDMsIDIyMSwgMjA1LCAyMzIsIDIxMSwgMjAzLCAKKyAgICAyMjEsIDIwNSwgMjMyLCAyMTAsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjA5LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIAorICAgIDIxNiwgMTQsIDIyMiwgMjUxLCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIDI1MSwgMTc1LCAyMjIsIDI1MSwgMjQ4LCA0NiwgCisgICAgMTYsIDE5MiwgNjcsIDIsIDI1MCwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjUwLCAzNSwgMjQ4LCAKKyAgICA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjAzLCAyLCAyNTAsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMiwgMjE1LCAyMjUsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIAorICAgIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjEyLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgCisgICAgMTI0LCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDIxMiwgMzUsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDI0MSwgNDQsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDI0MSwgNDQsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjE2LCAxNCwgMjMzLCA0NiwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAKKyAgICAyNTEsIDE3NSwgMjMzLCA0NiwgNDIsIDI0NCwgMzIsIDIyMywgNTQsIDg3LCAyNDUsIDE4MiwgODcsIDY3LCAyMzIsIDIxNCwgCisgICAgMjQ1LCAyMSwgMjMxLCAzMywgMjUxLCAxNDYsIDIzMSwgMzMsIDE5OSwgMTE3LCAyMTksIDI1MCwgMjMxLCAzMywgMjE5LCAKKyAgICAyNTEsIDExNywgMjMyLCAxMzcsIDIzMSwgMzMsIDE5OSwgMTE3LCAxMTMsIDIxOSwgMjM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgCisgICAgMjM4LCAxMTcsIDIzMiwgMTM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgMjM4LCAyMzUsIDY0LCAyMzEsIDMzLCAyMTUsIDIwOCwgCisgICAgMjMxLCAzMywgMjE2LCAyMjMsIDIzMSwgMzMsIDIyNSwgMTg4LCAyNDUsIDIyNCwgMjQyLCAxMjIsIDI0MywgMjE5LCAyMTYsIAorICAgIDE0LCAyMjYsIDMsIDI1MSwgMTc1LCAyMjYsIDMsIDIxNiwgMTQsIDI0OSwgOTksIDEyNywgMjUxLCAxNzUsIDI0OSwgOTksIAorICAgIDEyNywgMjE2LCAxNCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI1MSwgMTc1LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNzEsIAorICAgIDIxNSwgMjM5LCAyNTIsIDM1LCAyMjIsIDIzNCwgMiwgMjUwLCAzNSwgMjE4LCAxMjAsIDI0NCwgNjQsIDI1NSwgMTcsIDI0OSwgCisgICAgOTYsIDI0NSwgMTcxLCAyMzUsIDE5OCwgMjQ4LCA4MywgMjQ1LCAyNCwgODcsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI1LCAKKyAgICA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjIsIDUyLCAyMTUsIDIyNSwgODUsIDI0NiwgMTA1LCA1MiwgCisgICAgMjE1LCAyMjUsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgCisgICAgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjIyLCAyNDcsIDIxNSwgMjI2LCAyLCA1MiwgNjcsIDEzMCwgMjU0LCAxNzMsIDI1MCwgCisgICAgMywgMjE4LCAxMjYsIDIxNiwgODYsIDI1MCwgMywgMjQwLCAyMzcsIDIsIDI0NCwgNTAsIDIyMSwgMjQxLCAxNiwgMzEsIAorICAgIDIyNywgMjAyLCAxNiwgMzEsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDE2LCAzMSwgMjE4LCAxNTIsIDY0LCAyMTYsIDIxMiwgCisgICAgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNiwgMjEyLCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDMsIDE2LCAzMSwgCisgICAgMjQ1LCAxMzIsIDE2LCAzMSwgMjU1LCA3LCAxNiwgMzEsIDI1MiwgNDQsIDE2LCAzMSwgMjUyLCAxNzksIDE2LCAzMSwgMjAzLCAKKyAgICAyMTcsIDg5LCAxNiwgMzEsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTYsIDMxLCA2NywgMjE3LCA4OSwgMTYsIDMxLCAyNDQsIAorICAgIDIwLCAyNDQsIDE0NSwgMTYsIDMxLCAyNTAsIDIzMCwgMjIzLCA1MywgMTYsIDMxLCAyMjAsIDI4LCAyMjYsIDEzMCwgMTYsIAorICAgIDMxLCAyMjAsIDI4LCAyMzUsIDI1NSwgMTYsIDMxLCAyNDgsIDE1MSwgMjMyLCAyMDQsIDI0NSwgNzcsIDE2LCAzMSwgMjQ4LCAKKyAgICAzMSwgMjQ5LCAxNzgsIDExMCwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIDE3OCwgMTA1LCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgCisgICAgMTc4LCAxNTgsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDE2MSwgMTYsIDMxLCAxNTIsIDI1NSwgNywgMTYsIDMxLCAKKyAgICAyMTcsIDE3NywgMjM2LCA2MiwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMTYsIDMxLCAyNTEsIAorICAgIDUsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMzEsIDgxLCAxNiwgMzEsIDIxOCwgNjEsIDE2LCAzMSwgMjQ1LCA3NywgMTYsIAorICAgIDMxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDE2LCAzMSwgMjQyLCAxMjEsIDIyMCwgMTM3LCAxNiwgMzEsIDIyMywgMTIxLCAKKyAgICAyMjAsIDEzNywgMTYsIDMxLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDE2LCAzMSwgMjE5LCAxOCwgMTYsIDMxLCAyNDgsIDYzLCAKKyAgICAyNTEsIDIxNiwgODcsIDIwNCwgMjUxLCAxNjMsIDE2LCAzMSwgMjI5LCA4NSwgMTYsIDMxLCAyNDgsIDY0LCAyNDQsIDIwLCAKKyAgICAxMDUsIDE2LCAzMSwgMjE4LCA2MiwgMjQ0LCAyMCwgMTA1LCAyMjYsIDI0MSwgMTAzLCAyMjYsIDI0MSwgMjUwLCAxNTIsIAorICAgIDIyNiwgMjQxLCAyNDQsIDIzLCAyMjYsIDI0MSwgMjM1LCAxOTMsIDI0NCwgMjMsIDIyNiwgMjQxLCAyNTIsIDQyLCAyNTEsIAorICAgIDEyNCwgMjI2LCAyNDEsIDI1MSwgMTcwLCAyMTYsIDExMSwgMjI2LCAyNDEsIDI1MSwgMTU1LCAyNTIsIDE0NiwgMjQwLCAKKyAgICAxMDMsIDIyNiwgMjQxLCAyNTQsIDEyNywgNjQsIDI1MCwgMTI5LCAyMjYsIDI0MSwgMjQ4LCAxNTYsIDIyNiwgMjQxLCAyNDksIAorICAgIDg3LCAyNTUsIDExLCAyMjcsIDIwMCwgMjI2LCAyNDEsIDUyLCAyNTIsIDE4MCwgMzcsIDIxLCAxMTAsIDM3LCAyMSwgMTA1LCAKKyAgICAzNywgMjEsIDE1OCwgMzcsIDIxLCAxNjEsIDM3LCAyMSwgMTg5LCAzNywgMjEsIDE5NCwgMzcsIDIxLCAxOTgsIDM3LCAyMSwgCisgICAgMTk1LCAzNywgMjEsIDIwMCwgMzcsIDU0LCAyMTYsIDI0NywgMzcsIDU0LCAyNDUsIDE2NywgMzcsIDU0LCAyMTUsIDc2LCAKKyAgICAzNywgNTQsIDIxNiwgMTY0LCAzNywgNTQsIDI0NCwgNSwgMzcsIDU0LCAyNDQsIDExOCwgMzcsIDU0LCAyMTksIDExOSwgMzcsIAorICAgIDU0LCAyMjAsIDExOSwgMzcsIDU0LCAyNDUsIDE5MCwgMzcsIDU0LCAyMjgsIDE5NywgMzcsIDU0LCAyMTUsIDczLCA4OCwgCisgICAgMjEsIDExMCwgODgsIDIxLCAxMDUsIDg4LCAyMSwgMTU4LCA4OCwgMjEsIDE2MSwgODgsIDIxLCAxODksIDg4LCAyMSwgMTk0LCAKKyAgICA4OCwgMjEsIDE5OCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMjAwLCA4OCwgNTQsIDIxNiwgMjQ3LCA4OCwgNTQsIDI0NSwgCisgICAgMTY3LCA4OCwgNTQsIDIxNSwgNzYsIDg4LCA1NCwgMjE2LCAxNjQsIDg4LCA1NCwgMjQ0LCA1LCA4OCwgNTQsIDI0NCwgMTE4LCAKKyAgICA4OCwgNTQsIDIxOSwgMTE5LCA4OCwgNTQsIDIyMCwgMTE5LCA4OCwgNTQsIDI0NSwgMTkwLCA4OCwgNTQsIDIyOCwgMTk3LCAKKyAgICA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDExMywgMjQzLCAyMjksIDIxOCwgCisgICAgMTI5LCAyMSwgMTM0LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyNDQsIDExLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAKKyAgICAyNDQsIDgxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMTksIDEyNSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjIwLCAKKyAgICAxMjIsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDI0NSwgMTkzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMjgsIDIwMCwgCisgICAgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjE2LCAyNDgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDI0NSwgMTY4LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDU0LCAyMTUsIDc3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMTYsIDE2NSwgMjQzLCAyMjksIAorICAgIDIxOCwgMTI5LCA1NCwgMjQ0LCA2LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyNDQsIDExOSwgMjQzLCAyMjksIDIxOCwgCisgICAgMTI5LCA1NCwgMjE5LCAxMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIyMCwgMTIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDU0LCAyNDUsIDE5MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjI4LCAxOTgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIAorICAgIDIxNSwgNzQsIDI0MywgMjI5LCAyMTgsIDEyOSwgODgsIDcsIDQsIDEsIDYxLCA4OCwgNywgNCwgMSwgMjUzLCAxNTgsIDg4LCAKKyAgICA3LCA0LCAxLCAyNTEsIDY2LCA4OCwgNywgNCwgMSwgMjQ5LCA2MCwgODgsIDcsIDQsIDEsIDc1LCA4OCwgNywgNCwgMSwgCisgICAgMjQ1LCA2LCA4OCwgNywgNCwgMSwgMjQzLCAyMDIsIDg4LCA3LCA0LCAxLCAyNDIsIDYwLCA4OCwgNywgNCwgMSwgNzMsIDg4LCAKKyAgICA3LCA0LCAxLCAyMzUsIDE0NCwgODgsIDcsIDQsIDEsIDIzNSwgMjMsIDg4LCA3LCA0LCAxLCAxNTYsIDg4LCA3LCA0LCAxLCAKKyAgICAxOTMsIDg4LCA3LCA0LCAxLCAyMzAsIDI1LCA4OCwgNywgNCwgMSwgNzYsIDg4LCA3LCA0LCAxLCAyMjYsIDEwNSwgODgsIDcsIAorICAgIDQsIDEsIDIyNCwgOTYsIDg4LCA3LCA0LCAxLCAxNTMsIDg4LCA3LCA0LCAxLCAyMjIsIDkxLCA4OCwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDg4LCA3LCA0LCAxLCA3MCwgODgsIDcsIDQsIDEsIDIxNCwgMTA1LCA4OCwgNywgNCwgMSwgMjEyLCA5OCwgODgsIDcsIAorICAgIDQsIDEsIDIxMSwgMTc4LCA4OCwgNywgNCwgMSwgMjExLCAxMTcsIDg4LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDYsIAorICAgIDEsIDYxLCAzNywgNywgNiwgMSwgMjUzLCAxNTgsIDM3LCA3LCA2LCAxLCAyNTEsIDY2LCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgMzcsIDcsIDYsIDEsIDc1LCAzNywgNywgNiwgMSwgMjQ1LCA2LCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDM3LCA3LCA2LCAxLCAKKyAgICAyNDIsIDYwLCAzNywgNywgNiwgMSwgNzMsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgMzcsIDcsIDYsIDEsIDIzNSwgMjMsIAorICAgIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTMsIDM3LCA3LCA2LCAxLCAyMzAsIDI1LCAzNywgNywgNiwgMSwgCisgICAgNzYsIDM3LCA3LCA2LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDYsIDEsIDIyNCwgOTYsIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCAKKyAgICA2LCAxLCAyMjIsIDkxLCAzNywgNywgNiwgMSwgMjE3LCAxNTIsIDM3LCA3LCA2LCAxLCA3MCwgMzcsIDcsIDYsIDEsIDIxNCwgCisgICAgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIAorICAgIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgNywgNCwgMSwgMjUzLCAxNTgsIDM3LCA3LCA0LCAKKyAgICAxLCAyNTEsIDY2LCAzNywgNywgNCwgMSwgMjQ5LCA2MCwgMzcsIDcsIDQsIDEsIDc1LCAzNywgNywgNCwgMSwgMjQ1LCA2LCAKKyAgICAzNywgNywgNCwgMSwgMjQzLCAyMDIsIDM3LCA3LCA0LCAxLCAyNDIsIDYwLCAzNywgNywgNCwgMSwgNzMsIDM3LCA3LCA0LCAKKyAgICAxLCAyMzUsIDE0NCwgMzcsIDcsIDQsIDEsIDIzNSwgMjMsIDM3LCA3LCA0LCAxLCAxNTYsIDM3LCA3LCA0LCAxLCAxOTMsIAorICAgIDM3LCA3LCA0LCAxLCAyMzAsIDI1LCAzNywgNywgNCwgMSwgNzYsIDM3LCA3LCA0LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDQsIAorICAgIDEsIDIyNCwgOTYsIDM3LCA3LCA0LCAxLCAxNTMsIDM3LCA3LCA0LCAxLCAyMjIsIDkxLCAzNywgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDM3LCA3LCA0LCAxLCA3MCwgMzcsIDcsIDQsIDEsIDIxNCwgMTA1LCAzNywgNywgNCwgMSwgMjEyLCA5OCwgMzcsIDcsIAorICAgIDQsIDEsIDIxMSwgMTc4LCAzNywgNywgNCwgMSwgMjExLCAxMTcsIDM3LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDIxLCAKKyAgICAyMTAsIDg2LCAxNTIsIDM3LCA1NCwgMjQ1LCAxNjcsIDE1MiwgMzcsIDU0LCAyMTUsIDc2LCAxNTIsIDM3LCA1NCwgMjE2LCAKKyAgICAxNjQsIDE1MiwgMzcsIDU0LCAyNDQsIDUsIDE1MiwgMzcsIDU0LCAyNDQsIDExOCwgMTUyLCAzNywgNTQsIDIxOSwgMTE5LCAKKyAgICAxNTIsIDM3LCA1NCwgMjIwLCAxMTksIDE1MiwgMzcsIDU0LCAyNDUsIDE5MCwgMTUyLCAzNywgNTQsIDIyOCwgMTk3LCAxNTIsIAorICAgIDM3LCA1NCwgMjE1LCA3MywgNTIsIDM3LCAyMSwgMTEwLCA1MiwgMzcsIDIxLCAxMDUsIDUyLCAzNywgMjEsIDE1OCwgNTIsIAorICAgIDM3LCAyMSwgMTYxLCA1MiwgMzcsIDIxLCAxODksIDUyLCAzNywgMjEsIDE5NCwgNTIsIDM3LCAyMSwgMTk4LCA1MiwgMzcsIAorICAgIDIxLCAxOTUsIDUyLCAzNywgMjEsIDIwMCwgNTIsIDM3LCA1NCwgMjE2LCAyNDcsIDE1MiwgMzcsIDIxLCAyMTAsIDg2LCA5MywgCisgICAgOTksIDE5MiwgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMTMsIDIzOSwgOTMsIDk5LCAKKyAgICAxMTQsIDIxMywgMjM5LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDExNCwgCisgICAgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyMTMsIDIzOSwgCisgICAgOTMsIDk5LCAxMTQsIDIxNSwgMjExLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgMTkyLCAyMjQsIDI0LCAyNDgsIAorICAgIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDIyNCwgMjQsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjI0LCAKKyAgICAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjI0LCAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIAorICAgIDE5MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAKKyAgICAxMTQsIDIyLCA0NCwgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyNCwgCisgICAgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAKKyAgICA0MywgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMjMyLCAKKyAgICAyMzAsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDIzMywgNDYsIDkzLCAKKyAgICA5OSwgMTIwLCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0MywgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTE0LCAxMjAsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCA2NywgCisgICAgMTkyLCAyMiwgNDQsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgMTI0LCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTE0LCAyMiwgNDQsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDEyNCwgMTkyLCAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMTI0LCAyNDEsIAorICAgIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgCisgICAgNjcsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDEyNCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDQzLCAyMzIsIDIzMCwgCisgICAgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQzLCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDMsIDEyNCwgCisgICAgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAxMjQsIDIyLCAyNDEsIDQ0LCAKKyAgICA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDEyNCwgCisgICAgMjMyLCAyMzAsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMjAzLCAKKyAgICAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDEyNCwgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIAorICAgIDQ0LCAxMjQsIDI0MSwgMjIxLCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIAorICAgIDI0MSwgNDQsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCA0MywgCisgICAgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAKKyAgICAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAKKyAgICAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNjcsIAorICAgIDIyLCAyNDEsIDQ0LCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgNjcsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCAKKyAgICA0MywgNjcsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAKKyAgICAyMiwgMTI0LCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMTIwLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDY3LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCAKKyAgICA5MywgOTksIDQ0LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjQsIDExNCwgMjIsIAorICAgIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDEyNCwgMTkyLCAyMiwgMTIwLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgMTI0LCAyMDMsIDI0MSwgCisgICAgMjIxLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgNjcsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIDIyLCA0NCwgNjcsIAorICAgIDI0MSwgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyNDEsIAorICAgIDQ0LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyMTMsIAorICAgIDIzOSwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgNTIsIDI0MSwgNDQsIDkzLCA5OSwgCisgICAgNTIsIDIxMywgMjM5LCA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgCisgICAgMjIsIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgCisgICAgMjIsIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAKKyAgICAyMzMsIDQ2LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIAorICAgIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIAorICAgIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAKKyAgICAyMzMsIDQ2LCA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCA0NCwgCisgICAgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgNDMsIAorICAgIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDQzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMzMsIDQ2LCAKKyAgICA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIDIyLCAyMDMsIDIxOSwgCisgICAgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgCisgICAgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCAyMDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyNDEsIDQ0LCAKKyAgICA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgMjAzLCAyMTksIAorICAgIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTI0LCAyMiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTIwLCAKKyAgICAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMjQ3LCAKKyAgICAyNTUsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MiwgMjMyLCAxMDgsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgCisgICAgMjE0LCAxNjAsIDQzLCAyMTYsIDQyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgMjQ5LCAKKyAgICAxMzAsIDkzLCA5OSwgMTkyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjE0LCAxNjMsIDkzLCA5OSwgMTkyLCAyMjIsIDI1MSwgCisgICAgOTMsIDk5LCAxOTIsIDI0NiwgMTA2LCA5MywgOTksIDExNCwgMjMzLCA0NiwgOTMsIDk5LCAxMTQsIDIxNCwgMTYzLCA5MywgCisgICAgOTksIDExNCwgMjIyLCAyNTEsIDkzLCA5OSwgMTE0LCAyNDYsIDEwNiwgOTMsIDk5LCAxOTIsIDQzLCAyMiwgMTE0LCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDExNCwgMjQ2LCAxMDYsIDkzLCA5OSwgMTE0LCA0MywgMjIsIDE5MiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAxOTIsIDI0NiwgMTA2LCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIxMywgMjMyLCAKKyAgICAxMDgsIDEyMywgMjQ1LCAxODksIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTIzLCAyMjQsIDIyLCAyNTEsIDIxMywgMjMyLCAxMDgsIAorICAgIDEzNCwgMjQ1LCAxODcsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTYzLCAyNTEsIDIxMywgMjMyLCAxMDgsIDI0NCwgODEsIDI0NSwgCisgICAgMTg3LCAyNTEsIDIxMywgMjMyLCAxMDgsIDEzNCwgMjI0LCAyMCwgMjUxLCAyMTMsIDIzMiwgMTA4LCAyMjAsIDEyMiwgMjQ1LCAKKyAgICAxODcsIDI1MSwgMjEzLCAyNDMsIDIyOSwgMjUxLCAyMTMsIDQzLCAyMjAsIDEyMiwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgCisgICAgMTM0LCAyMjQsIDIwLCAyNTEsIDIxMywgNDMsIDI0NCwgODEsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDE2MywgMjUxLCAKKyAgICAyMTMsIDQzLCAxMzQsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDEyMywgMjI0LCAyMiwgMjUxLCAyMTMsIDQzLCAxMjMsIAorICAgIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDE2MywgMjUxLCAyMTMsIDE5MiwgMjIwLCA5MiwgMjMxLCA4MiwgMjIwLCA5MiwgCisgICAgMjQ4LCAxNjIsIDIyMCwgOTIsIDIxNCwgMTYwLCAxMjMsIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDEyMywgMjQ1LCAxODksIAorICAgIDI1MSwgMjEzLCAyMjQsIDI2LCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjMyLCAxMDgsIDIyMiwgMjUxLCAyMjQsIAorICAgIDI2LCAyMTQsIDE2MCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAxMDgsIDQzLCAyMiwgMjMyLCAKKyAgICAxMDgsIDIyMiwgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgNDMsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIAorICAgIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgCisgICAgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCAyMjIsIAorICAgIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCA0NCwgCisgICAgMjIsIDIzMiwgMTA4LCA0MywgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgODUsIDIxOCwgMjM0LCA3MSwgMjE4LCAyMzQsIDcxLCAKKyAgICA0MiwgMiwgMjIyLCAxODMsIDI0OSwgMTU5LCA3MSwgNDIsIDI0OSwgMTg3LCA4NSwgNCwgMjE4LCAyMzQsIDQyLCAyLCAyMDMsIAorICAgIDI0NCwgMTA1LCA0MiwgMiwgNjcsIDI0NCwgMTA1LCA0MiwgMiwgMjI2LCAxNDQsIDI0OSwgMTI2LCAyNDQsIDEwNSwgNDIsIAorICAgIDIsIDIxNCwgMTYwLCA0MywgMjE2LCA0MiwgMjMyLCAxMDgsIDQ0LCAyNDQsIDEwNSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgCisgICAgMjE2LCA0MiwgMjMyLCAxMDgsIDQzLCAyNDQsIDEwNSwgNDIsIDIsIDI0NywgMjU1LCAyNDksIDEyNiwgMjQ0LCAxMDUsIDg1LCAKKyAgICA0LCAyMTgsIDIzNCwgNzEsIDQsIDIxOCwgMjM0LCA4NSwgMjIzLCAxMTYsIDcxLCAyMjMsIDExNiwgODUsIDY3LCAyMjMsIAorICAgIDExNiwgNzEsIDY3LCAyMjMsIDExNiwgODUsIDIyNiwgNiwgNzEsIDIyNiwgNiwgODUsIDIxNCwgMTYyLCAyMTUsIDIyNSwgCisgICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYyLCA0LCAyMTUsIDIyNSwgNzEsIDIxNCwgMTYyLCA0LCAyMTUsIAorICAgIDIyNSwgODUsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCA0LCAKKyAgICAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCA0LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCAyMjUsIDgsIDcxLCAyMjIsIDI0NywgCisgICAgMjI1LCA4LCA4NSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA4NSwgMjQ2LCAxMDUsIDQsIAorICAgIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDQsIDIxNSwgMjI1LCA4NSwgMjMzLCA0MiwgMjE1LCAyMjUsIDcxLCAyMzMsIDQyLCAKKyAgICAyMTUsIDIyNSwgODUsIDIzMywgNDIsIDQsIDIxNSwgMjI1LCA3MSwgMjMzLCA0MiwgNCwgMjE1LCAyMjUsIDg1LCAyMzMsIAorICAgIDQyLCAyMjUsIDgsIDcxLCAyMzMsIDQyLCAyMjUsIDgsIDg1LCAyNDcsIDI0OCwgNzEsIDI0NywgMjQ4LCA3MSwgMjQ3LCAKKyAgICAyNDksIDI0OSwgMTg3LCA4NSwgNCwgMjQ3LCAyNDgsIDI0NCwgODksIDIzMiwgMTA0LCA3MSwgMjUwLCAzNSwgMjQ2LCAxMTgsIAorICAgIDI1MCwgMzUsIDI1MCwgMzYsIDIsIDY3LCAyNDQsIDEwNSwgMjUxLCAxMTEsIDg1LCAyNTAsIDM1LCAyNTAsIDM2LCAyLCA0MywgCisgICAgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIzMiwgMTA4LCAxNjMsIAorICAgIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMjQsIDI2LCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjU0LCAxNTUsIDI1MSwgODgsIDIxNCwgMTYwLCA0MywgMjI0LCAyNiwgCisgICAgMjUxLCAyMjEsIDQzLCAxNjMsIDg1LCAyNTAsIDM1LCA0NCwgMTYzLCA4NSwgMjUwLCAzNSwgMjM1LCAxOTQsIDI1MSwgMTEzLCAKKyAgICAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIxNCwgMTYwLCAxNjMsIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjMyLCAxMDgsIAorICAgIDE2MywgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgCisgICAgMTYwLCA0NCwgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIAorICAgIDI1LCAyMzIsIDEwOCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgMTYwLCAxNjMsIDI1MCwgMzUsIDIzMiwgCisgICAgMTA4LCAxNjMsIDI1MCwgMzUsIDg1LCAyMzIsIDEwOCwgNDQsIDIxNSwgMjI1LCA4NSwgMjMyLCAxMDgsIDQzLCAyMTUsIAorICAgIDIyNSwgODUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI1LCA3MSwgMjUxLCAKKyAgICAxMTMsIDQyLCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjE0LCAxNjAsIAorICAgIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIzMiwgMTA4LCA0NCwgMjQ3LCAyNTUsIDE2MywgMjUxLCAKKyAgICAyMjEsIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjMyLCAyMzIsIDIxMywgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgMjQ3LCAKKyAgICAxMjAsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDQsIAorICAgIDE2MywgMjUxLCAyMjEsIDIzMywgODUsIDI1MCwgMzUsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgCisgICAgNDIsIDIsIDIzMiwgMTA4LCA0MywgMjI0LCAyNSwgNzEsIDQyLCAyLCAyMzIsIDEwOCwgNDQsIDIyNCwgMjUsIDcxLCA0MiwgCisgICAgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAKKyAgICAzNiwgMiwgMjMyLCAxMDgsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI1LCA3MSwgCisgICAgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI1LCAyMTQsIDE2MCwgNDQsIAorICAgIDIxNSwgMjI1LCAyMzIsIDEwOCwgNDMsIDIxNSwgMjI1LCA3MSwgMjMxLCA4MiwgMjE4LCAyMzQsIDg1LCAyMzEsIDgyLCAKKyAgICAyMTgsIDIzNCwgNzEsIDIzMSwgODIsIDQsIDIxOCwgMjM0LCA4NSwgMjMxLCA4MiwgNCwgMjE4LCAyMzQsIDIzMiwgMTA4LCAKKyAgICA0NCwgMjE1LCAyMjUsIDg1LCAyMTgsIDM4LCAyLCAyMjMsIDEzMiwgMjQ5LCAyNDcsIDIxNCwgMTk0LCAyMTksIDYwLCAyNDksIAorICAgIDIyMiwgODUsIDIxOCwgMTU2LCA3MSwgMjE4LCAxNTYsIDIzMiwgMjI4LCAyMTYsIDEzMiwgMjE4LCAzNywgMjUzLCAyMzQsIAorICAgIDIyOCwgNzEsIDI0OCwgMzgsIDIyOCwgNzEsIDI0OSwgMTk1LCAyMjYsIDE2MywgODUsIDIxNywgMCwgNzEsIDIxNywgMCwgCisgICAgMjUyLCAxNTYsIDI1MSwgMTYzLCAyNTIsIDE1NiwgOTMsIDIsIDI1MCwgMTI5LCAyNTIsIDE1NiwgOTMsIDIsIDIxMSwgMTc4LCAKKyAgICAyMjEsIDI1NCwgMjE0LCAxOTUsIDIsIDIyMywgMTYwLCAyNDYsIDg0LCAyNDAsIDI0MywgMjUyLCAyMiwgNzEsIDIyMCwgMiwgCisgICAgMjI1LCAxMDEsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCAyMjAsIDg3LCAyMjMsIDQ5LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAKKyAgICAyMjgsIDI1MSwgMTEzLCA4NSwgNDMsIDIyNSwgNywgMjM1LCAyNDIsIDg1LCA0NCwgMjI1LCA3LCAyMzUsIDI0MiwgNzEsIAorICAgIDQzLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgMTIwLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgNDQsIDIyNSwgNywgMjM1LCAKKyAgICAyNDIsIDcxLCAxMjQsIDIyNSwgNywgMjM1LCAyNDIsIDIxOSwgMTAxLCAyMiwgMjQ5LCAxMjksIDI1MCwgMjE5LCA1MCwgCisgICAgMjIzLCAxNzIsIDUwLCAyNTEsIDIzOSwgNTAsIDI1MSwgMjUsIDI1NCwgMTAyLCAyMjYsIDE0NSwgMjQ5LCAxMzAsIDI1MCwgCisgICAgMTExLCAyMjMsIDM3LCAyNDksIDEzMSwgNjQsIDIzMiwgMTE4LCAyNDksIDEzMSwgNjQsIDIzNSwgMTE2LCAyMTgsIDE1NywgCisgICAgMjIsIDI0OSwgMTM2LCAyNDQsIDE2OCwgODcsIDI1NCwgMjQ4LCAyMjAsIDg5LCAyNDIsIDIyLCAyMiwgMjE5LCAxODksIAorICAgIDIyNSwgMjIwLCA4NywgMjEwLCAyNTQsIDIxMSwgNjksIDIxNSwgMjE1LCAzMSwgMjQxLCAyMjMsIDIxNSwgMjE1LCAzMSwgCisgICAgMjMzLCAxMDcsIDIxNSwgMjE1LCAzMSwgMjQ0LCA5NiwgMjE1LCAyMTUsIDMxLCAyMTYsIDEzMywgMjE1LCAyMTUsIDMxLCAKKyAgICAyMTEsIDIzOSwgMjE1LCAyMTUsIDMxLCAyMTIsIDQwLCAyMTUsIDIxNSwgMzEsIDIzMCwgMTE1LCAyMTUsIDIxNSwgMzEsIAorICAgIDI0NSwgMjIzLCAyMTIsIDEsIDY0LCAyNDgsIDE4LCA3MSwgMjQzLCAyMzksIDI0NCwgMTkwLCA3MSwgMjE5LCA3NCwgMjQ0LCAKKyAgICAxOTAsIDg1LCAyMTksIDc0LCAyNDQsIDE5MCwgNzEsIDIxOCwgMzgsIDIsIDIyMywgMTMyLCAyNDQsIDkyLCAyMjQsIDIyLCAKKyAgICAyMzAsIDEyOCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAxMjgsIDIzMSwgNTQsIDI0NCwgMTM4LCA1MCwgMjQ1LCAyMjMsIAorICAgIDIzMSwgMTkwLCA1MCwgMjM1LCAzOCwgMjIxLCAyMjAsIDIxNCwgMTQ1LCAyMjksIDkzLCAyMjUsIDIwLCAyNTQsIDEyLCAKKyAgICAyMTcsIDQwLCAyNDMsIDUyLCAyNTEsIDMsIDIzMywgMTksIDIxMywgMTUwLCAyMzIsIDIzOCwgMjIxLCAxOTEsIDIyMiwgMTksIAorICAgIDI1MCwgMjQ4LCAyNTQsIDQyLCAyMjUsIDUyLCA3MSwgMjUwLCAxMTcsIDIzNCwgNzgsIDcxLCAyNTAsIDExNywgMjI0LCAxNCwgCisgICAgNzEsIDI1MCwgMTE3LCAyMjIsIDE5NSwgNzEsIDI1MCwgMTE3LCAyNTEsIDIzMSwgNzEsIDI1MCwgMTE3LCAyMzQsIDMwLCAKKyAgICA3MSwgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjUwLCAxMTcsIDIzNCwgNzgsIDg1LCAyNTAsIDExNywgMjI0LCAxNCwgODUsIAorICAgIDI1MCwgMTE3LCAyMjIsIDE5NSwgODUsIDI1MCwgMTE3LCAyNTEsIDIzMSwgODUsIDI1MCwgMTE3LCAyMzQsIDMwLCA4NSwgCisgICAgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjE5LCAxNiwgMjE4LCA1MCwgNzEsIDI0MSwgMjI4LCAyMTgsIDUwLCA3MSwgMjQ3LCAKKyAgICAyNDksIDIxOCwgNTAsIDg1LCAyNDksIDI0NSwgMjE4LCA1MCwgNzEsIDIxOSwgMTYsIDIxOCwgNTAsIDg1LCAyNDEsIDIyOCwgCisgICAgMjE4LCA1MCwgODUsIDI0NywgMjQ5LCAyMTgsIDUwLCA3MSwgMjQ5LCAyNDUsIDIxOCwgNTAsIDI0MCwgMjQzLCAyMTgsIAorICAgIDIzOCwgMjI0LCAyMiwgMjI4LCA0NywgMjQ1LCAxODksIDIyOCwgNDcsIDI1MiwgNzMsIDI0NSwgMTg5LCAyMjgsIDQyLCAKKyAgICAyNTIsIDczLCAyMTksIDExOCwgMjI4LCA0MiwgMjMwLCA1NywgMjQ0LCA2NiwgNTAsIDIzMCwgNTcsIDIyOSwgMTg4LCA1MCwgCisgICAgMjMwLCA1NywgMjIwLCA3NiwgNTAsIDIxMiwgOSwgMTg4LCAyNDksIDEzMCwgMjQ1LCAyMjAsIDE4OCwgMjQ5LCAxMzAsIAorICAgIDIxNCwgMTcxLCAyMjMsIDExMiwgODcsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDgsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDcsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDYsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDUsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDQsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDMsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDIsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDI0MywgNTAsIDIzMSwgMTM4LCA4NSwgMjE0LCAxNzEsIDIyMywgMTEyLCA4NywgMjIzLCAxMTMsIDIyNiwgMjAsIDg3LCAKKyAgICAyMjUsIDI1MiwgMjI2LCAyMCwgODcsIDIyNSwgMTc0LCAyMjYsIDIwLCA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0MSwgCisgICAgMjQ0LCAxODksIDI0NywgMjQxLCAyNDQsIDE4OCwgMjQ3LCAyNDEsIDI0NCwgMTg3LCAyNDcsIDI0MSwgMjQ0LCAxODYsIAorICAgIDI0NywgMjQxLCAyNDQsIDE4NSwgMjQ3LCAyNDEsIDI0NCwgMTg0LCA3MSwgMjUwLCAzNiwgMiwgNTksIDIyMiwgMjUxLCA3MSwgCisgICAgMjUwLCAzNiwgMiwgMTEzLCAyNDcsIDExOCwgODUsIDI1MCwgMzYsIDIsIDcxLCA1OSwgMjIyLCAyNTEsIDg1LCAyNTAsIDM2LCAKKyAgICAyLCAxMTMsIDcxLCAyNDcsIDExOCwgMjMwLCAxNDIsIDMxLCAyMTEsIDY5LCAyMzAsIDE0MiwgMzEsIDIxMCwgMjUzLCAyNDcsIAorICAgIDIyNCwgMzEsIDI0MiwgMTMxLCAyMTEsIDY5LCAyNDcsIDIyNCwgMzEsIDIzMywgMTMsIDIxMCwgMjUzLCAyNDcsIDIyNCwgCisgICAgMzEsIDIzMywgMTMsIDIxMSwgNjksIDI0NywgMjI0LCAzMSwgMjQyLCAxMzEsIDIxMCwgMjUzLCA3MSwgMjQ0LCA3MywgODUsIAorICAgIDI0NCwgNzMsIDI0MiwgMjIsIDIyLCAyMjUsIDEwNCwgMjU0LCAxMjAsIDI0OSwgMTI4LCAyMTcsIDIzNSwgMjE4LCAxNjQsIAorICAgIDY0LCAyNTQsIDIyNiwgMjIxLCAyMDYsIDI1NCwgMTY5LCAyNDQsIDUxLCAyNDMsIDYwLCAyMTgsIDE2NCwgNjQsIDI0MSwgCisgICAgMjAyLCAyNTMsIDE5OSwgODcsIDI0NCwgNjIsIDIyNiwgMTI2LCA3MSwgMjE4LCAxNTYsIDEzNCwgMjMyLCAyMDgsIDI0OSwgCisgICAgMTc1LCAyMjIsIDI1MSwgMTM0LCAyMzIsIDIwOCwgMjQ5LCAxNzUsIDIzMywgNDYsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgCisgICAgMTMwLCA1MCwgMjQ2LCAxMTAsIDI0NCwgMTM4LCA1MCwgMjQ2LCAxMTAsIDIzMSwgMTkwLCA1MCwgMjM1LCAyMDMsIDI0NCwgCisgICAgMTM4LCAyMiwgMjMxLCAxOTAsIDUwLCAyMzEsIDE5MCwgMjIsIDI0NCwgMTM4LCA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAKKyAgICA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAyMiwgMjMxLCAxOTAsIDIyLCAyNDQsIDEzOCwgNTAsIDY3LCAyMzEsIDE5MCwgCisgICAgMiwgMjE4LCAxMDMsIDUwLCAyMDMsIDIzMSwgMTkwLCAyLCAyMTgsIDEwMywgNTAsIDIzMSwgODIsIDcxLCAyNTAsIDM1LCAKKyAgICAyMzEsIDgyLCA4NSwgMjUwLCAzNSwgMjMxLCA4MiwgNCwgNzEsIDI1MCwgMzUsIDIzMSwgMTUzLCA4NywgMjQ3LCAxNjcsIAorICAgIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTEsIDg3LCAyNDksIDIzMSwgMjQzLCAyMjQsIDIxNCwgMTQxLCAyMjksIDg4LCAyNTAsIAorICAgIDE2MSwgMjI2LCA2MSwgMjM1LCA0NCwgMjEzLCAxODUsIDI1MCwgOTMsIDg1LCAyMzAsIDEyOSwgMjMyLCAyMjUsIDIyMCwgCisgICAgMTEyLCAyMjAsIDE0NywgMjI0LCA1LCAyMjAsIDEzMCwgMjE5LCA1NSwgMjUyLCAxNTksIDI1MiwgMTI2LCA5MiwgMjM0LCAKKyAgICAxMzgsIDcxLCAyNDYsIDkzLCAyMzEsIDE4NSwgNzEsIDI0NiwgOTMsIDIzNCwgNzgsIDg1LCAyNDYsIDkzLCAyMzEsIDE4NSwgCisgICAgODUsIDI0NiwgOTMsIDIzNCwgNzgsIDIxOSwgNjEsIDIxMSwgMjMwLCAyMTksIDY0LCAyMTgsIDM4LCAyNTIsIDUxLCAyNDksIAorICAgIDI0NywgMjIzLCAxNTksIDg1LCAyMTksIDYwLCAyMTYsIDEzNCwgMjQ5LCAyNDgsIDIyLCAyMjMsIDE1OSwgMjE1LCA5NCwgCisgICAgNzEsIDIyMCwgMiwgMjI1LCAxMDEsIDIxNSwgOTQsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCA3MSwgMjQ3LCAyNDksIDIzNiwgCisgICAgMCwgMjE4LCAyMzQsIDI0OSwgMTI1LCAyMzMsIDkxLCAyNDcsIDE5MywgMjUwLCAyNDQsIDIyNiwgMTY2LCAyMjUsIDEwNCwgCisgICAgMjUwLCAyNDUsIDIxOSwgODgsIDI0MSwgMjEyLCAyLCA3MSwgMjQ5LCAxMzAsIDM3LCAyNDksIDEyNSwgMjMzLCA5MSwgMjUwLCAKKyAgICAxNTMsIDIyOCwgNzUsIDI0NSwgMTI0LCAyNTQsIDE0MSwgMjI2LCAxOTEsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAorICAgIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgNzEsIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAorICAgIDQzLCAyMzMsIDkyLCAyMzEsIDUzLCA3MSwgNDMsIDIzMywgOTIsIDIzMSwgNTMsIDI0NiwgODksIDIxOSwgODIsIDUwLCAKKyAgICAxMTQsIDcxLCAyNDYsIDEwNSwgMjE1LCAyMjUsIDQzLCAyNTAsIDAsIDI0NSwgMTI0LCA5MiwgMjIxLCAyNTQsIDI0NCwgCisgICAgMTc1LCAyNDcsIDI1NSwgMjM2LCAwLCA3MSwgMjUwLCAzNiwgMjM2LCAwLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTUsIDE5MiwgCisgICAgMjIzLCA2MCwgNDMsIDI0NSwgMTIzLCAyMjMsIDYwLCA0MywgMjQ1LCAxMjIsIDI1MywgMjExLCAxNiwgMzEsIDIxNCwgMTQ1LCAKKyAgICAxMTQsIDI1MCwgMzYsIDIsIDIxOCwgMTAzLCAyMiwgMTEzLCAxNzAsIDQ4LCAyMjUsIDE4OSwgMjIyLCAyNDgsIDIzNSwgCisgICAgMjA1LCAyMjUsIDE4OSwgMjMzLCA0MywgMjM1LCAyMDUsIDIyNSwgMTg5LCAyMzUsIDE5MywgMjI1LCAxODksIDg1LCAyNDksIAorICAgIDEzMSwgMjI2LCAxOTcsIDIyMCwgMjksIDIyMCwgMTcsIDIxOSwgMjI5LCAyNTAsIDYxLCAyNTAsIDIyNiwgMjQxLCAxNTcsIAorICAgIDIxOSwgMTI2LCAyNDMsIDYxLCAyMTEsIDIzMCwgMjQwLCAyMjAsIDI0MywgNjEsIDIsIDI0MiwgMTIsIDIzMSwgMTczLCAxNiwgCisgICAgMzEsIDIzMiwgMjI5LCAyMzAsIDExNSwgMjE0LCAxOTUsIDIyNiwgMTk3LCAyNDIsIDEyMiwgMjQ0LCAxMiwgMjQ0LCA3NCwgCisgICAgMjM2LCAwLCAyNDEsIDU5LCAyNDQsIDEyOSwgMjIyLCAxNCwgNDIsIDI0NCwgMTEsIDI0OSwgMTU5LCAyMTksIDEwNCwgMjQwLCAKKyAgICAxMTIsIDIxOSwgMTA3LCAyMjUsIDE2OCwgMiwgMjUyLCAxNTksIDIxNiwgMjQyLCAyMzUsIDEzMSwgMjUyLCAxNDYsIDg3LCAKKyAgICAyNDEsIDIzMSwgMjQyLCAxMzMsIDg3LCAyNDMsIDIzMiwgMjI0LCAxNDIsIDI0OSwgMTAzLCAyMjYsIDE5NywgODUsIDIxOCwgCisgICAgMjM0LCA3MSwgMjQ0LCA3NCwgMiwgMjAzLCAyMzAsIDIyNCwgODUsIDIxOCwgMTA0LCAyMTQsIDE2MCwgMjUxLCAyMTcsIAorICAgIDIyMSwgMTkzLCA4NSwgMjIxLCAxOTMsIDIzMiwgMTA4LCAyNTEsIDIxNywgMjIxLCAxOTMsIDcxLCAyMjEsIDE5MywgNzEsIAorICAgIDExNCwgMjUwLCAxMzAsIDc4LCAyMTcsIDEsIDIzMiwgMTU0LCA1MCwgMjE3LCA1MywgMjQ2LCA4OCwgMjU0LCAxOTEsIDI0NSwgCisgICAgMTE5LCAyMjMsIDE1NywgMjQ0LCA4NSwgMjIzLCAxNTcsIDI0MiwgMTUsIDIxMywgMTc0LCAyNDIsIDE1LCAyMTEsIDE5OCwgCisgICAgMjQyLCAxNSwgMjMyLCAxMDgsIDQ0LCAyMjUsIDE5OCwgMjI1LCAxOTgsIDIxNCwgMTYwLCA0NCwgMjI1LCAxOTgsIDcxLCAKKyAgICAyMjgsIDIzMCwgODUsIDIyOCwgMjMwLCAyNTAsIDEzMCwgNzgsIDExNCwgMjUwLCAxMzAsIDc4LCAyMzAsIDg0LCAyMTEsIAorICAgIDE3OCwgMTE0LCAyMzAsIDg0LCAyMTEsIDE3OCwgMjUyLCAxNTYsIDIxMSwgMTc4LCAxMTQsIDI1MiwgMTU2LCAyMTEsIDE3OCwgCisgICAgMjI2LCAxMjYsIDI2LCAyNDksIDEzMCwgMTE0LCAyNiwgMjQ5LCAxMzAsIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCAxMTQsIAorICAgIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCA3LCAyNDksIDEzMCwgMjIwLCA5MSwgNzEsIDcsIDI0OSwgMTMwLCAyMjYsIDEyNiwgCisgICAgNywgMjQ5LCAxMzAsIDIzMSwgMTg3LCAyNDksIDEzMCwgMjE4LCAxNTcsIDY0LCAyNDgsIDE0OSwgMjQ0LCAxMSwgMjE3LCAKKyAgICAxNSwgMjUzLCAyMTYsIDI0NCwgMTEsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMTE0LCAyNDQsIDExLCAyNTIsIDE1NywgMjUzLCAKKyAgICAyMTYsIDI0NCwgMTEsIDI0OSwgMjQzLCAyNTMsIDIxNiwgODUsIDI0NCwgMTEsIDIyNSwgOSwgMjE4LCAxNTYsIDcxLCAyNDQsIAorICAgIDExLCAyMjUsIDksIDIxOCwgMTU2LCAyMTksIDExLCAyMTgsIDExMSwgMjI2LCAxMjYsIDcxLCAyMTgsIDE1NiwgMzcsIDcxLCAKKyAgICAyMTgsIDE1NiwgMjA0LCAyNTAsIDE3NSwgODUsIDIxOCwgMTU2LCA4NSwgMjUwLCAxNzUsIDcxLCAyMTgsIDE1NiwgMjI2LCAKKyAgICAxMjYsIDg1LCAyMTgsIDE1NiwgMTE0LCAyMjYsIDEyNiwgODUsIDIxOCwgMTU2LCAyMjUsIDYwLCAyMTgsIDE1NiwgMjIwLCAKKyAgICA5MSwgNzEsIDIxOCwgMTU2LCAxMTQsIDI1MywgMjE2LCAyMDQsIDI1MCwgMTc1LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxOCwgCisgICAgMjQ0LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjUsIDYwLCAKKyAgICAyMTgsIDE1NiwgMjE5LCAxMjUsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjMsIDExNCwgODUsIAorICAgIDIxOCwgMTU2LCAxMTQsIDI0NSwgMTkzLCAyMjUsIDksIDIyMywgMTE0LCA4NSwgMjE4LCAxNTYsIDIxNSwgNzcsIDIyNSwgOSwgCisgICAgODUsIDIxOCwgMTU2LCAyMTksIDEyMCwgMjI1LCA5LCAyNTMsIDIxNiwgMjE3LCAxNSwgMjUzLCAyMTYsIDIwNCwgMjUwLCAKKyAgICAxNzUsIDIxNywgMTUsIDI1MywgMjE2LCAxMTQsIDIxNywgMTUsIDI1MywgMjE2LCAyMTksIDEyNSwgMjI1LCAxNTcsIDg1LCAKKyAgICAyMiwgNzEsIDI0NCwgNTQsIDg1LCAyNDQsIDU0LCA3MSwgMjQ0LCA1NCwgMjQ1LCAxOTMsIDIyNSwgMTU3LCAyMjYsIDEyNiwgCisgICAgODUsIDI0NCwgNTQsIDM3LCAyMDQsIDI1MCwgMTc1LCAyNDUsIDE5MywgMjI1LCA5LCAyMTgsIDE1NiwgMTE0LCAyMTcsIDE1LCAKKyAgICAyMjUsIDYwLCAyNTMsIDIxNiwgMjE5LCA2MiwgMjE2LCAxMDUsIDIxNSwgMjE4LCAyMTksIDYyLCAxMTQsIDI1MCwgMTE0LCAKKyAgICAyMTksIDYyLCAyMTksIDEzLCAxMTQsIDIxOSwgMTMsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxNywgMTUsIAorICAgIDIyNCwgMTcxLCAyNTMsIDIxNiwgMTE0LCAyNDUsIDE5MywgMjE3LCAxNSwgMjI0LCAxNzEsIDI1MywgMjE2LCAyNDksIDEzMSwgCisgICAgNzgsIDIyMCwgOTEsIDcxLCAyNTAsIDM1LCAxNTIsIDkyLCAyNDksIDEzMSwgNzgsIDIzMiwgMTA4LCA0NCwgMjQ2LCA4NiwgCisgICAgNzEsIDIxOCwgMjM0LCAyMTQsIDE2MCwgNDQsIDI0NiwgODYsIDcxLCAyMTgsIDIzNCwgMjMyLCAxMDgsIDQ0LCAyMjAsIDkxLCAKKyAgICA3MSwgMjE4LCAyMzQsIDIxNCwgMTYwLCA0NCwgMjIwLCA5MSwgNzEsIDIxOCwgMjM0LCA4NSwgMjI0LCAxMywgMTY0LCAyMjYsIAorICAgIDE0NywgNzEsIDIyNCwgMTMsIDE2NCwgMjI2LCAxNDcsIDcxLCAyNDUsIDMxLCAxNjQsIDIyNiwgMTQ3LCA4NSwgMjQ3LCAKKyAgICAyNDksIDIzMCwgMTgyLCA3MSwgMjExLCAxNzgsIDExNCwgMjQ1LCAzMSwgMTY0LCA4NywgMTkyLCA2NywgMTMwLCAyMzEsIAorICAgIDgyLCA2NywgMTMwLCAxMTQsIDY3LCAxMzAsIDExNCwgMjE5LCAxNTUsIDIxNSwgOTQsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCAyMTksIDE1NSwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDUyLCAKKyAgICAyMTUsIDk0LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgNTIsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCAxMjEsIDIxOSwgMTU1LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIAorICAgIDExNCwgMTIxLCA1MiwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAyNDksIDkxLCAyMTgsIDE0MCwgMjI2LCAKKyAgICAxNSwgNSwgMjI2LCAxNDcsIDExNCwgMjQ1LCAzMSwgMTY0LCAyMjYsIDE0NywgMTE0LCAyNDEsIDIyOCwgMjQ1LCAzMSwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCA4NSwgMjQxLCAyMjcsIDIyMiwgMTg3LCAxMTQsIDg1LCAyNDEsIDIyOCwgMjUxLCAxMTMsIAorICAgIDI0NCwgNTUsIDI0MSwgMjI3LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAyMjgsIDI1MSwgMTEzLCAyMzEsIDgyLCA0MywgCisgICAgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgNDQsIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDI0NCwgNjMsIDQzLCAKKyAgICAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyNDQsIDYzLCA0NCwgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjMzLCAKKyAgICA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMjMxLCA4MiwgMjIyLCAyNDcsIDI1NCwgMTEwLCAyNTEsIDE1OCwgCisgICAgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIyMiwgMjQ3LCAKKyAgICAyNTQsIDExMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIAorICAgIDE0NywgMTE0LCAyMjIsIDI0NywgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMTkyLCA0MywgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAyNTEsIDE1OCwgMjI2LCAxNDcsIDE5MiwgNDQsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTgsIDIyNiwgMTQ3LCAKKyAgICAyMzEsIDgyLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAyMzEsIDgyLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIAorICAgIDIyNiwgMTQ3LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgCisgICAgMjA0LCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAKKyAgICAxODksIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTk0LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE5OCwgMjQ3LCAyMDQsIAorICAgIDE1MiwgMzcsIDIxLCAxOTUsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMjAwLCAyNDcsIDIwNCwgMTUyLCAzNywgNTQsIDIxNiwgCisgICAgMjQ3LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMzcsIAorICAgIDM1LCAyMSwgMTU4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTg5LCAyNDcsIAorICAgIDIwNCwgMzcsIDM1LCAyMSwgMTk0LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgCisgICAgMTk1LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMjAwLCAyNDcsIDIwNCwgMzcsIDM1LCA1NCwgMjE2LCAyNDcsIDI0NywgMjA0LCAKKyAgICAxNTIsIDM3LCAzNSwgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMTUyLCAzNywgCisgICAgMzUsIDIxLCAxNTgsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgCisgICAgMTg5LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTQsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5OCwgMjQ3LCAKKyAgICAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAyMDAsIDI0NywgMjA0LCAxNTIsIAorICAgIDM3LCAzNSwgNTQsIDIxNiwgMjQ3LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzQsIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTgyLCAKKyAgICA1MCwgMTE0LCAyNDcsIDE2OSwgNTAsIDExNCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAxMTQsIDk3LCA3NCwgMTE0LCAyMjgsIAorICAgIDU2LCAyNDUsIDIyMCwgNzQsIDI0NiwgOTgsIDIyNSwgMTEsIDk3LCA3NCwgMTE0LCAyMjIsIDE4NCwgOTcsIDc0LCAyMTUsIAorICAgIDIyNCwgOTcsIDc0LCAxMTQsIDIxNSwgMjI0LCA5NywgNzQsIDI0OCwgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCAxMTQsIDI0OCwgCisgICAgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCA4NSwgOTcsIDc0LCAyMTYsIDE0NCwgMjE2LCAxMiwgOTcsIDI1MywgMjQ5LCAyMTYsIAorICAgIDE0NCwgMjUxLCAxNzMsIDk3LCAyNTMsIDI0OSwgODUsIDk3LCAyNTMsIDI0OSwgMTE0LCA4NSwgMjQ5LCA5MSwgMjQ2LCAKKyAgICAxMDQsIDIyLCA5NywgNzQsIDExNCwgODUsIDI0OSwgOTEsIDIxNCwgMTUzLCAyMiwgOTcsIDc0LCAyMTgsIDIzMSwgODUsIAorICAgIDk3LCA3NCwgMTE0LCAyNDksIDIwNiwgODUsIDk3LCA3NCwgMjIyLCAyNDYsIDcxLCA5NywgNzQsIDIzMywgNDEsIDcxLCA5NywgCisgICAgNzQsIDI1MiwgMTgzLCAyMjAsIDkxLCA3MSwgOTcsIDc0LCAyNDMsIDI0MSwgMjIwLCA5MSwgNzEsIDk3LCA3NCwgMTE0LCAKKyAgICAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDExNCwgMjE0LCAxNjAsIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAyMjgsIAorICAgIDQ5LCAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDI0OSwgOTksIDIzMiwgMTIzLCAyMjgsIDQ5LCAyMTQsIDE2MCwgCisgICAgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDM3LCAxMTQsIDcxLCA5NywgNzQsIDIxMSwgMjUyLCA5NywgNzQsIDI1MSwgMjIwLCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDI1MSwgMjIwLCA5NywgNzQsIDI1MSwgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAorICAgIDExNCwgMjUxLCAyMjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMTE0LCAyNTEsIDIyMCwgOTcsIDc0LCAxMTQsIDI1MSwgCisgICAgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIxNywgMTcsIDk3LCA3NCwgMTE0LCAyMTcsIDE2LCA5NywgNzQsIDIxMiwgCisgICAgMTgsIDk3LCA3NCwgMTE0LCAyMTIsIDE4LCA5NywgNzQsIDIyNiwgMTcyLCA5NywgNzQsIDUyLCAyNDksIDk5LCAyMzIsIAorICAgIDEyMywgMTM0LCAyNDcsIDIxNCwgMjU0LCAxMDksIDcxLCAyMTUsIDIyNiwgMjQ5LCAxODcsIDQsIDcxLCAyMTUsIDIyNSwgCisgICAgMjI1LCAxNzEsIDIwNCwgMjE4LCA2MywgMjA0LCAyMTgsIDIxLCA0MywgMjIyLCA5MCwgMjUyLCAxNzMsIDI0OCwgNjAsIDQ0LCAKKyAgICAyMjIsIDkwLCAyNTIsIDE3MywgMjQ4LCA2MCwgMTc3LCAyLCA1OSwgMjM1LCAyMTUsIDIyMywgNTAsIDIxOSwgNDcsIDIyNCwgCisgICAgMjAxLCAyMTgsIDYzLCAyMTgsIDIyLCAyMjQsIDIwMSwgMjE5LCA0NiwgNjcsIDI1MiwgMTQxLCAyLCAyMDMsIDkxLCAxMSwgCisgICAgMjIyLCAyMjgsIDI0NywgMjU0LCAxOTksIDI0NywgMTY4LCAxMSwgMjQ0LCAxNzUsIDI0NywgMjU0LCA5MiwgMjMyLCAxNDYsIAorICAgIDI1NCwgMTE4LCA5MiwgMjMyLCAxNDYsIDIyNiwgMTU4LCA3MSwgMjQ3LCAyNDksIDIsIDI1MCwgMTczLCAyNDcsIDEyMCwgCisgICAgMjIsIDIsIDI0NywgMTIwLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyMTQsIDE1MiwgMjMyLCAxMDgsIDQ0LCAyNDksIAorICAgIDE2MSwgMiwgMjQ3LCAxMjAsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjEsIDIsIDI0NywgMTIwLCA0MywgMjI2LCAxMjgsIDIzNSwgCisgICAgNjYsIDQ0LCAyMjYsIDEyOCwgMjM1LCA2NiwgMjQzLCAyMjksIDIyNiwgMTI4LCAyMzUsIDY2LCAyMzMsIDg1LCAxMjAsIAorICAgIDIxNywgODcsIDIzMywgODUsIDEyNCwgMjE3LCA4NywgNDMsIDIyLCA0NCwgNTIsIDIxNSwgOTMsIDQzLCAyMiwgNDQsIDIxNywgCisgICAgODcsIDQzLCAyMzAsIDg3LCAxOTksIDQ0LCAyMTcsIDg3LCAxOTksIDQzLCAyMTcsIDg3LCAxMjAsIDIxNywgODgsIDIsIAorICAgIDI1MCwgMzYsIDQ4LCAyMzIsIDEwNSwgMjQ3LCAxNzMsIDI1MSwgNzgsIDIwMywgMjIyLCAxMzMsIDcxLCAyNDksIDIwNSwgCisgICAgMjQ3LCAyNDgsIDcxLCAyNDksIDIwNSwgMjQ3LCAyNDksIDIsIDE0MCwgMjE2LCAxMTQsIDcxLCAyNDksIDIwNSwgMjQ3LCAKKyAgICAyNDksIDIsIDk3LCAyMTYsIDExNCwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE0LCA3MSwgNDIsIDIsIDk3LCAyMTYsIDExNCwgCisgICAgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExMCwgMTI3LCAxMSwgNDQsIAorICAgIDI1NCwgMTEwLCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCAKKyAgICA0MywgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMTEsIDQzLCAKKyAgICAyNDQsIDYzLCAyMjYsIDMsIDExLCA0NCwgMjQ0LCA2MywgMjI2LCAzLCAyMTQsIDE1MywgMjI0LCAyNCwgNzQsIDI0NiwgCisgICAgMTA0LCAyMjQsIDI0LCA3NCwgMjU0LCA4OCwgMjQzLCA5OCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjQzLCA5OCwgMjUwLCAKKyAgICAzNiwgNzQsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCA3NCwgMTk5LCA5NywgNzQsIDE5OSwgNDMsIDQ0LCAKKyAgICA3NCwgMTk5LCAxNDAsIDUyLCA3NCwgMTk5LCA5NywgNTIsIDc0LCAxOTksIDQzLCA0NCwgNTIsIDc0LCAxOTksIDE0MCwgODAsIAorICAgIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAxOTksIDE0MCwgNTIsIDgwLCAyNDMsIDI0MywgCisgICAgMTMwLCAxOTksIDk3LCA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDIxOCwgMjMwLCA3NCwgNDYsIDQ3LCAyNTEsIAorICAgIDIxNSwgNDYsIDQ3LCAyNDcsIDExNywgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIAorICAgIDE4MSwgNDYsIDQ3LCAyNDcsIDUyLCA0NiwgNDcsIDI0NiwgMjQ0LCA0NiwgNDcsIDI0NywgMTE1LCA0NiwgNDcsIDI0NiwgCisgICAgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIAorICAgIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgCisgICAgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgMTY0LCAKKyAgICA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIDE0OCwgNDYsIAorICAgIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAxNzksIDQ2LCA0NywgCisgICAgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIDEyNSwgNDYsIDQ3LCAKKyAgICAyNDYsIDI1MiwgNDYsIDQ3LCAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMTU2LCA0NiwgNDcsIAorICAgIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAyNDYsIDE0MCwgNDYsIDQ3LCAKKyAgICAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAxNzEsIDQ2LCA0NywgCisgICAgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAKKyAgICAyNDcsIDMsIDQ2LCA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIAorICAgIDM0LCA0NiwgNDcsIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgCisgICAgNDYsIDQ3LCAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCAKKyAgICA0NywgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMjEsIDQ2LCA0NywgMjQ2LCAyNDgsIDQ2LCAKKyAgICA0NywgMjQ2LCAxODQsIDQ2LCA0NywgMjQ3LCA1NSwgNDYsIDQ3LCAyNDYsIDE1MiwgNDYsIDQ3LCAyNDcsIDIzLCA0NiwgNDcsIAorICAgIDI0NiwgMjE1LCA0NiwgNDcsIDI0NywgODYsIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgCisgICAgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAzOCwgNDYsIDQ3LCAyNDYsIAorICAgIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDEyOCwgNDYsIDQ3LCAyNDYsIDI1NSwgNDYsIDQ3LCAyNDYsIAorICAgIDE5MSwgNDYsIDQ3LCAyNDcsIDYyLCA0NiwgNDcsIDI0NiwgMTU5LCA0NiwgNDcsIDI0NywgMzAsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMjIsIDQ2LCA0NywgMjQ3LCA5MywgNDYsIDQ3LCAyNDYsIDE0MywgNDYsIDQ3LCAyNDcsIDE0LCA0NiwgNDcsIDI0NiwgCisgICAgMjA2LCA0NiwgNDcsIDI0NywgNzcsIDQ2LCA0NywgMjQ2LCAxNzQsIDQ2LCA0NywgMjQ3LCA0NSwgNDYsIDQ3LCAyNDYsIAorICAgIDIzNywgNDYsIDQ3LCAyNDcsIDEwOCwgNDYsIDQ3LCAyNDYsIDEyNCwgNDYsIDQ3LCAyNDYsIDI1MSwgNDYsIDQ3LCAyNDYsIAorICAgIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMTU1LCA0NiwgNDcsIDI0NywgMjYsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMTgsIDQ2LCA0NywgMjQ3LCA4OSwgNDYsIDQ3LCAyNDYsIDEzOSwgNDYsIDQ3LCAyNDcsIDEwLCA0NiwgNDcsIDI0NiwgCisgICAgMjAyLCA0NiwgNDcsIDI0NywgNzMsIDQ2LCA0NywgMjQ2LCAxNzAsIDQ2LCA0NywgMjQ3LCA0MSwgNDYsIDQ3LCAyNDYsIAorICAgIDIzMywgNDYsIDQ3LCAyNDcsIDEwNCwgNDYsIDQ3LCAyNDYsIDEzMSwgNDYsIDQ3LCAyNDcsIDIsIDQ2LCA0NywgMjQ2LCAKKyAgICAxOTQsIDQ2LCA0NywgMjQ3LCA2NSwgNDYsIDQ3LCAyNDYsIDE2MiwgNDYsIDQ3LCAyNDcsIDMzLCA0NiwgNDcsIDI0NiwgCisgICAgMjI1LCA0NiwgNDcsIDI0NywgOTYsIDQ2LCA0NywgMjQ2LCAxNDYsIDQ2LCA0NywgMjQ3LCAxNywgNDYsIDQ3LCAyNDYsIAorICAgIDIwOSwgNDYsIDQ3LCAyNDcsIDgwLCA0NiwgNDcsIDI0NiwgMTc3LCA0NiwgNDcsIDI0NywgNDgsIDQ2LCA0NywgMjQ2LCAKKyAgICAyNDAsIDQ2LCA0NywgMjQ3LCAxMTEsIDQ2LCA0NywgMjQ2LCAxMTksIDQ2LCA0NywgMjQ2LCAyNDYsIDQ2LCA0NywgMjQ2LCAKKyAgICAxODIsIDQ2LCA0NywgMjQ3LCA1MywgNDYsIDQ3LCAyNDYsIDE1MCwgNDYsIDQ3LCAyNDcsIDIxLCA0NiwgNDcsIDI0NiwgCisgICAgMjEzLCA0NiwgNDcsIDI0NywgODQsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIDI0NiwgMTk3LCAKKyAgICA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAyNDYsIDIyOCwgNDYsIAorICAgIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTI2LCA0NiwgNDcsIDI0NiwgMjUzLCA0NiwgNDcsIDI0NiwgMTg5LCA0NiwgCisgICAgNDcsIDI0NywgNjAsIDQ2LCA0NywgMjQ2LCAxNTcsIDQ2LCA0NywgMjQ3LCAyOCwgNDYsIDQ3LCAyNDYsIDIyMCwgNDYsIDQ3LCAKKyAgICAyNDcsIDkxLCA0NiwgNDcsIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgCisgICAgMjQ3LCA3NSwgNDYsIDQ3LCAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIAorICAgIDI0NywgMTA2LCA0NiwgNDcsIDI0NiwgMTIyLCA0NiwgNDcsIDI0NiwgMjQ5LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIAorICAgIDI0NywgNTYsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAyNDYsIDIxNiwgNDYsIDQ3LCAKKyAgICAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTM3LCA0NiwgNDcsIDI0NywgOCwgNDYsIDQ3LCAyNDYsIDIwMCwgNDYsIDQ3LCAyNDcsIAorICAgIDcxLCA0NiwgNDcsIDI0NiwgMTY4LCA0NiwgNDcsIDI0NywgMzksIDQ2LCA0NywgMjQ2LCAyMzEsIDQ2LCA0NywgMjQ3LCAKKyAgICAxMDIsIDQ2LCA0NywgMjQ2LCAxMjksIDQ2LCA0NywgMjQ3LCAwLCA0NiwgNDcsIDI0NiwgMTkyLCA0NiwgNDcsIDI0NywgNjMsIAorICAgIDQ2LCA0NywgMjQ2LCAxNjAsIDQ2LCA0NywgMjQ3LCAzMSwgNDYsIDQ3LCAyNDYsIDIyMywgNDYsIDQ3LCAyNDcsIDk0LCA0NiwgCisgICAgNDcsIDI0NiwgMTQ0LCA0NiwgNDcsIDI0NywgMTUsIDQ2LCA0NywgMjQ2LCAyMDcsIDQ2LCA0NywgMjQ3LCA3OCwgNDYsIDQ3LCAKKyAgICAyNDYsIDE3NSwgNDYsIDQ3LCAyNDcsIDQ2LCA0NiwgNDcsIDI0NiwgMjM4LCA0NiwgNDcsIDI0NywgMTA5LCA0NiwgNDcsIAorICAgIDI0NiwgMTIwLCA0NiwgNDcsIDI0NiwgMjQ3LCA0NiwgNDcsIDI0NiwgMTgzLCA0NiwgNDcsIDI0NywgNTQsIDQ2LCA0NywgCisgICAgMjQ2LCAxNTEsIDQ2LCA0NywgMjQ3LCAyMiwgNDYsIDQ3LCAyNDYsIDIxNCwgNDYsIDQ3LCAyNDcsIDg1LCA0NiwgNDcsIAorICAgIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgCisgICAgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIAorICAgIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgCisgICAgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjMsIDQ2LCA0NywgMjQ2LCAyNTAsIDQ2LCA0NywgMjQ2LCAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIAorICAgIDE1NCwgNDYsIDQ3LCAyNDcsIDI1LCA0NiwgNDcsIDI0NiwgMjE3LCA0NiwgNDcsIDI0NywgODgsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzgsIDQ2LCA0NywgMjQ3LCA5LCA0NiwgNDcsIDI0NiwgMjAxLCA0NiwgNDcsIDI0NywgNzIsIDQ2LCA0NywgMjQ2LCAxNjksIAorICAgIDQ2LCA0NywgMjQ3LCA0MCwgNDYsIDQ3LCAyNDYsIDIzMiwgNDYsIDQ3LCAyNDcsIDEwMywgNDYsIDQ3LCAyNDYsIDEzMCwgCisgICAgNDYsIDQ3LCAyNDcsIDEsIDQ2LCA0NywgMjQ2LCAxOTMsIDQ2LCA0NywgMjQ3LCA2NCwgNDYsIDQ3LCAyNDYsIDE2MSwgNDYsIAorICAgIDQ3LCAyNDcsIDMyLCA0NiwgNDcsIDI0NiwgMjI0LCA0NiwgNDcsIDI0NywgOTUsIDQ2LCA0NywgMjQ2LCAxNDUsIDQ2LCA0NywgCisgICAgMjQ3LCAxNiwgNDYsIDQ3LCAyNDYsIDIwOCwgNDYsIDQ3LCAyNDcsIDc5LCA0NiwgNDcsIDI0NiwgMTc2LCA0NiwgNDcsIAorICAgIDI0NywgNDcsIDQ2LCA0NywgMjQ2LCAyMzksIDQ2LCA0NywgMjQ3LCAxMTAsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCAKKyAgICA5NywgMjE1LCA1OCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCA1MiwgODAsIDIsIAorICAgIDY3LCA5MSwgNDMsIDQ0LCA1MiwgODAsIDIsIDY3LCA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgMTMwLCAxNDAsIAorICAgIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgOTcsIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjQ2LCAxMDQsIDgwLCAyLCAyMDMsIAorICAgIDkxLCAyMTQsIDE1MywgODAsIDIsIDIwMywgOTEsIDIxNCwgMTUzLCAyMTUsIDIxMSwgNzQsIDI0NiwgMTA0LCAyMTUsIDIxMSwgCisgICAgNzQsIDE0MCwgNTIsIDI0OCwgMTU3LCA3NCwgOTcsIDUyLCAyNDgsIDE1NywgNzQsIDE0MCwgMjE1LCAyMTEsIDI0OCwgMTU3LCAKKyAgICA3NCwgOTcsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIDk3LCAyMTUsIDU4LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCA5NywgCisgICAgODAsIDIsIDI0NiwgMTE4LCAyMTgsIDEzOSwgMjE0LCAxNTMsIDgwLCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCA4MCwgMjE2LCAKKyAgICA0MiwgMTMwLCA5NywgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIAorICAgIDkxLCA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzcsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAKKyAgICA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjUzLCAyNTEsIDk3LCAyNTMsIDI1MSwgCisgICAgMTQwLCA1MiwgMjUzLCAyNTEsIDk3LCA1MiwgMjUzLCAyNTEsIDE0MCwgODAsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgOTcsIAorICAgIDgwLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDE0MCwgODAsIDI0MywgMjQzLCAyNTIsIDE0MSwgMjE2LCA0MiwgODUsIDI0NywgCisgICAgMjQ4LCA5NywgODAsIDI0MywgMjQzLCAyNTIsIDE0MSwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCAyMjgsIDU2LCAyMTIsIDksIAorICAgIDIyLCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCAyMiwgMjE5LCAyOCwgMjEyLCA5LCA3NCwgCisgICAgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDIsIDEwMywgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDgwLCAyLCAxMDMsIDIxOSwgMjgsIDIxMiwgOSwgODAsIDIsIDEwMywgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjIsIAorICAgIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyMiwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgODAsIDIyLCAyMTksIDI4LCAyMTIsIDksIDc0LCAyMTksIDI4LCAyMTIsIDksIDgwLCAyMiwgCisgICAgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjIyLCAyMjgsIDI0NywgMjU1LCAyNDksIDEyNSwgMjQ0LCAxNzUsIDI0NywgMjU0LCAKKyAgICAyNDQsIDE3NSwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMjIsIDIyOCwgMjQ3LCAyNTQsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgCisgICAgMjQ5LCAxMjUsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyNDksIDEyNSwgMjE5LCAKKyAgICAyOCwgMjQ1LCAyMjAsIDc0LCAyNDQsIDE3NSwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAorICAgIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIAorICAgIDgwLCAyNDksIDEyNSwgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjQ5LCAxMjUsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3NCwgMjEyLCAzNiwgODAsIDIyNSwgNywgMjQ3LCAxOTUsIDIyMiwgMjUxLCA4MCwgMjI1LCA3LCAKKyAgICA5NywgMjE2LCAxODgsIDI0OSwgOTAsIDIxNCwgMTUyLCA4MCwgMjI1LCA3LCA5NywgMjE2LCAxODgsIDI0OSwgOTAsIDI0NiwgCisgICAgMTAzLCA4MCwgMjI1LCA3LCAyNDYsIDEwNCwgMjE2LCAxODgsIDI0OSwgOTAsIDIzMywgMzcsIDgwLCAyMjUsIDcsIDI0NiwgCisgICAgMTA0LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjIyLCAyNDEsIDIyMiwgMjQ0LCAyNTQsIDI2LCAyNTAsIDIsIDc0LCAyMzMsIDQwLCAKKyAgICAyNTQsIDI2LCAyNTQsIDg4LCA3NCwgMjE2LCAxNCwgMjU0LCAyNiwgMjU0LCA4OCwgNzQsIDI1MSwgMTc1LCAyNTQsIDI2LCAKKyAgICAyNTQsIDg4LCA3NCwgMjE2LCAxNCwgMjU0LCAyNiwgMjUwLCAyLCA4MCwgMiwgMjMwLCAxODEsIDIxNiwgMTQsIDI1NCwgMjYsIAorICAgIDI1NCwgODgsIDgwLCAyLCAyMjUsIDIyLCAyMzIsIDEwOCwgNDQsIDIyMCwgMTUyLCAyNTAsIDIsIDc0LCAyMzIsIDEwOCwgCisgICAgNDMsIDIyMCwgMTUyLCAyNTQsIDg4LCA3NCwgMjU0LCA4OCwgMjUwLCAwLCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyNTAsIDAsIAorICAgIDI1MCwgMzYsIDc0LCA5NywgODAsIDc3LCAyMTksIDI1MSwgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIDIxOSwgMjUxLCA5NywgCisgICAgNzQsIDIxOSwgMjUxLCA5NywgODAsIDc3LCAxNDAsIDc0LCA5NywgODAsIDIsIDk2LCA1MSwgMTQwLCA4MCwgMiwgOTYsIDUxLCAKKyAgICA5NywgODAsIDIxNiwgMTM5LCAyMTEsIDE3OCwgNDMsIDQ0LCA4MCwgMjE2LCAxMzksIDQsIDI1MCwgMzUsIDIxNCwgMTUzLCAKKyAgICAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDQsIDI1MCwgMzUsIDQzLCAyNTIsIDEzOSwgMTIwLCA0NCwgMjUyLCAxMzksIDEyNCwgCisgICAgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTI0LCA0NCwgMjUyLCAxMzksIDEyMCwgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIAorICAgIDQ0LCAxMjQsIDI1MiwgMTM5LCA0MywgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIDQzLCAxMjQsIDI1MiwgMTM5LCA0NCwgCisgICAgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTIwLCA0NCwgMjUyLCAxMzksIDEyMCwgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIAorICAgIDQ0LCAxMjQsIDI1MiwgMTM5LCA0NCwgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTI0LCA0NCwgMjUyLCAxMzksIDEyNCwgCisgICAgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIDQzLCAxMjQsIDI1MiwgMTM5LCA0MywgMjQxLCAyNTQsIDE0MCwgMjQxLCAyNTUsIAorICAgIDIsIDI1MiwgMTM5LCAxMjAsIDIxNiwgNDIsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyMTYsIDQyLCAKKyAgICAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyMTYsIDQyLCAxMzAsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDIxNiwgCisgICAgNDIsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyMTYsIDQyLCAxMzAsIDIxNCwgMTUzLCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAKKyAgICAyMTYsIDQyLCAxMzAsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDI0MywgMjQzLCAxMzAsIDk3LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgCisgICAgNDQsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyNDMsIDI0MywgMTMwLCAKKyAgICAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNDMsIDI0MywgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAxMjQsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNDMsIDI0MywgCisgICAgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjQzLCAyNDMsIDEzMCwgMTQwLCAyNDEsIDI1NSwgCisgICAgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwNiwgMjE0LCAxNTMsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgCisgICAgMjUxLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAorICAgIDEwNiwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIyMiwgMjUxLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgOTcsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjE0LCAxNjMsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDc3LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyNDYsIDEwNiwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIxNCwgMTYzLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjQ2LCAxMDYsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxOTksIDI0OCwgMTU2LCAKKyAgICAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNTIsIDQzLCAxOTksIDI0OCwgMTU2LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAxMjAsIDc3LCAxOTksIDI0OCwgMTU2LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI1MiwgCisgICAgNDMsIDE5OSwgMjQ4LCAxNTYsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyNDYsIAorICAgIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI1MSwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgCisgICAgNDMsIDI1MiwgMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjUxLCA0NCwgNTIsIDgwLCAyLCAKKyAgICAyMjIsIDE4MywgMjQxLCAyMzUsIDI0NSwgOTgsIDUsIDc3LCA5NywgNzQsIDIxNiwgODksIDIyNiwgMTY4LCA3NywgOTcsIAorICAgIDc0LCAxNDAsIDgwLCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCA4MCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA5NywgCisgICAgODAsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIzMywgMTUsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCAyMTYsIDEzOSwgMjMzLCAKKyAgICAxNCwgMjQyLCAxMzAsIDc3LCA5NywgNzQsIDIxOCwgNjQsIDc3LCA5NywgNzQsIDE0MCwgODAsIDIxNiwgMTM5LCAyMTgsIAorICAgIDYzLCAyMTgsIDIyLCA3NywgMTQwLCA3NCwgNDMsIDI0NCwgOTEsIDIxNywgNzcsIDQ0LCAyNDQsIDkxLCAyMTcsIDc3LCAKKyAgICAxMjAsIDI0NCwgOTEsIDIxNywgNzcsIDEyNCwgMjQ0LCA5MSwgMjE3LCA3NywgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgCisgICAgMjQ4LCA2MCwgMjEwLCAxNjAsIDE4NywgMjE4LCAyNDIsIDIxMCwgMTYwLCAxODcsIDIxNSwgNDksIDI0OSwgMjI2LCA0MywgCisgICAgNzEsIDI0OSwgOTksIDEyNywgNDQsIDcxLCAyNDksIDk5LCAxMjcsIDQzLCA3MSwgMjI2LCAzLCA0NCwgNzEsIDIyNiwgMywgCisgICAgMjEwLCAxNjAsIDE4NywgNDMsIDIzNiwgMTUsIDEyNywgMjEwLCAxNjAsIDE4NywgNDQsIDIzNiwgMTUsIDEyNywgMjEwLCAKKyAgICAxNjAsIDE4NywgNDMsIDI1MSwgMjQyLCAxMjcsIDIxMCwgMTYwLCAxODcsIDQ0LCAyNTEsIDI0MiwgMTI3LCA0MywgNDIsIAorICAgIDI1MSwgMTU4LCAyLCAyMTQsIDE4MywgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE0LCAxODMsIDQzLCA0MiwgMjUxLCAxNTgsIAorICAgIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDIxNiwgMTQsIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgCisgICAgMjM2LCAwLCAyNTEsIDE3NSwgMjQ5LCAxNjAsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDI1MSwgCisgICAgMTc1LCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjE2LCAxNCwgMjQ5LCAxNjAsIAorICAgIDQzLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIsIDI0NywgMTIwLCA0NCwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyLCAyNDcsIDEyMCwgCisgICAgNDMsIDI1NCwgMjYsIDIzMywgMTUsIDEyNywgNDQsIDI1NCwgMjYsIDI0MiwgMTMwLCAxMjcsIDUyLCA0MywgMjU0LCAyNiwgCisgICAgMjQyLCAxMzAsIDEyNywgNTIsIDQ0LCAyNTQsIDI2LCAyMzMsIDE1LCAxMjcsIDQzLCA4NSwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQ0LCA4NSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI0NiwgMTE4LCAyNDQsIDEzNSwgNjcsIDIxMCwgMzUsIDIzMiwgCisgICAgMjEzLCAyMzEsIDg4LCAyNTQsIDExMCwgMjI2LCAxNzAsIDIzMywgNDYsIDQ0LCAyNTQsIDExMCwgMjE0LCAxMiwgMiwgMjE4LCAKKyAgICAyMzQsIDIzMSwgODgsIDQ0LCAyNTQsIDExMCwgMiwgMjQ3LCAxMjAsIDI1NCwgMTEwLCAyLCAyMjIsIDkyLCAyMzUsIDIxNSwgCisgICAgMjU1LCAzLCAyNTQsIDEwOSwgMjE4LCAyNTUsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjMzLCA0NiwgMjE4LCAyNTUsIDI1NCwgCisgICAgMTEwLCAyMjYsIDE3MCwgMjE0LCAxNjMsIDIxNSwgOTQsIDI1NCwgMTA5LCAyMjMsIDQ5LCAyNTQsIDEwOSwgMjU0LCAxMTAsIAorICAgIDIsIDIxNCwgMTgzLCAyMjMsIDQ5LCAyNTQsIDExMCwgMiwgMjE0LCAxODMsIDIyNiwgMjQ4LCAyNTQsIDExMCwgMjI2LCAKKyAgICAxNzAsIDIxNCwgMTYzLCAyMjYsIDI0OCwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyNDYsIDEwNiwgMjMxLCA4OCwgMjU0LCAxMTAsIAorICAgIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjAsIDIyLCAyMjIsIDI1MSwgMjMxLCA4OCwgCisgICAgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjAsIDIyLCAyMzMsIDQ2LCAKKyAgICAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyNCwgMjIsIAorICAgIDIyMiwgMjUxLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIAorICAgIDcsIDEyNCwgMjIsIDIzMywgNDYsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgCisgICAgODAsIDIyNSwgNywgNDQsIDIyLCAyMTQsIDE2MywgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIAorICAgIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0MywgMjIsIDIxNCwgMTYzLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAKKyAgICAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQ0LCAyMiwgMjQ2LCAxMDYsIDIzMSwgODgsIDI1NCwgCisgICAgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDMsIDIyLCAyNDYsIDEwNiwgMjIzLCAKKyAgICA0OSwgMjQ1LCAxNTIsIDIyMCwgMTI3LCAyNDUsIDE1MiwgMjIwLCAxMjgsIDIsIDIyNiwgMTIzLCAyNDUsIDE1MiwgMjIwLCAKKyAgICAxMjgsIDIsIDQsIDI1MCwgMzYsIDQ4LCAyNDUsIDE1MiwgMjIwLCAxMjgsIDIsIDQ0LCA4MCwgNDgsIDI0NSwgMTUyLCAyMjAsIAorICAgIDEyOCwgMiwgNDMsIDgwLCA0OCwgMjUwLCAzNiwgMiwgMjAzLCAxMzAsIDM3LCA2NywgMTMwLCAzNywgMjI2LCA3LCAzNywgCisgICAgMjIzLCA1MCwgMjE5LCA0NiwgMzcsIDIyNSwgMTcxLCAyNTAsIDM2LCAyNDcsIDE3MywgMjUxLCA3OCwgMjAzLCAyNTIsIAorICAgIDE0MSwgMjIsIDIxNiwgMTQsIDE2MywgMjQ3LCAxNzMsIDI1MSwgNzgsIDY3LCAxMzAsIDI1MCwgMzYsIDIsIDIxOCwgMjQsIAorICAgIDIxMSwgMTc4LCAzNywgMjU0LCA4NywgMjQ3LCAxNjksIDUwLCAxMjAsIDgwLCAyMTYsIDEzOSwgMjUwLCAzNSwgMzcsIDcxLCAKKyAgICAyNTEsIDExMywgMzcsIDI1MSwgMTEzLCAzNywgMjMzLCAxNCwgMzcsIDI0MiwgMTI5LCAyNTAsIDM2LCAyLCA0LCAyNTAsIAorICAgIDM2LCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDI1MCwgMzYsIDIsIDExMywgMjAzLCAyMTgsIDkxLCAyMTYsIDQyLCAKKyAgICAyMTYsIDE5NiwgMjIyLCAyNTEsIDkyLCAyMjIsIDIyOCwgMjQ3LCAyNTUsIDIxOSwgOTUsIDkyLCAyNDQsIDE3NSwgMjQ3LCAKKyAgICAyNTUsIDIxOSwgOTUsIDkyLCAyNTMsIDIxNiwgOTIsIDQsIDI1MCwgMzUsIDkyLCAyMTgsIDIzNCwgMTEzLCAyMzUsIDY1LCAKKyAgICAyMTgsIDIzMiwgMjE1LCAyMjYsIDIsIDU5LCA0OCwgMjE1LCAyMjYsIDIsIDIxNCwgMTgzLCAyMjIsIDkyLCAyMzYsIDAsIAorICAgIDIxNSwgMjI1LCAyMTUsIDIyNiwgMiwgMjIwLCAxMzQsIDI1MywgMjA3LCAyNTEsIDE3NCwgNDQsIDIxNSwgMjI2LCA3NywgCisgICAgNDMsIDIxNSwgMjI1LCA0MywgMjE1LCAyMjYsIDI1MiwgMzAsIDY3LCAxMzAsIDY3LCAyNTIsIDE0MSwgMjUyLCAzMCwgNDQsIAorICAgIDIxNSwgMjI1LCAyNTEsIDE2NSwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI1MSwgMTY1LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgCisgICAgODUsIDI1MSwgMTY0LCAzMCwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDMwLCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgNzEsIAorICAgIDI0MCwgMjM2LCA4NSwgMjQwLCAyMzYsIDQzLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDQ0LCAyMTEsIDI0NCwgMjQ0LCAxMzUsIAorICAgIDQzLCA1MiwgMjExLCAyNDQsIDI0NCwgMTM1LCA0NCwgNTIsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgMjM1LCAyNDgsIDIzNSwgCisgICAgMjM0LCAyMTYsIDExMiwgMTE3LCAyMzUsIDIzNCwgMjM1LCAyMzUsIDIyOSwgMTAyLCAyLCA2NywgMTMwLCAyNDYsIDExMiwgCisgICAgMjMwLCA4NywgNDIsIDIsIDI0OSwgMTgxLCAyMjYsIDEyNywgMjM1LCAyNDYsIDI1MywgMjM3LCAyMTksIDIxOSwgMjI0LCAKKyAgICAxODAsIDI0NSwgOTgsIDUsIDIyLCAyMTksIDk3LCAyMjYsIDcsIDI0NSwgOTgsIDUsIDIyLCAyMTksIDk3LCAyMjYsIDgsIDIsIAorICAgIDIxNiwgODksIDQ4LCAyNDAsIDEwNCwgMjE2LCA0MiwgMjIsIDIxOSwgOTcsIDIyNiwgNywgMjQyLCAxODMsIDIxOCwgMTU1LCAKKyAgICAyMTYsIDE4NSwgMjQ2LCAxMDUsIDIxNSwgMjI2LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjQ2LCAxMDUsIDIxNSwgMjI2LCAKKyAgICAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgODUsIDI0NywgMjQ5LCAyLCAxMjQsIDc0LCA4NSwgMjMyLCAxMDQsIDcxLCAyNTAsIAorICAgIDM2LCAyLCAxMjQsIDc0LCA4NSwgMjUwLCAzNiwgMiwgMTI0LCA3NCwgMjQ1LCA4NSwgNzEsIDIxOCwgMjM0LCAyNDUsIDg1LCAKKyAgICA4NSwgMjE4LCAyMzQsIDI0NSwgODUsIDcxLCAyNDcsIDI0OCwgMjQ1LCA4NSwgODUsIDI0NywgMjQ4LCAyNDUsIDg1LCA3MSwgCisgICAgMjUwLCAzNSwgMjQ1LCA4NSwgODUsIDI1MCwgMzUsIDIyMiwgMTMyLCAyMjMsIDUwLCAyMTksIDQ3LCAyMjYsIDE2NywgMjE5LCAKKyAgICA0NywgMiwgMjI2LCAxMjMsIDIyMywgNTAsIDIxOSwgNDcsIDIsIDIwMywgOTEsIDI1MSwgMjQ5LCAyMTksIDQ2LCAyNTEsIAorICAgIDI0OSwgMjIzLCA1MCwgMjE5LCA0NiwgNTIsIDIyNSwgMjIsIDIxNSwgMjExLCAyMjUsIDIyLCAyMzMsIDQyLCAyNDksIDkxLCAKKyAgICAyNTQsIDExMCwgMTI3LCAyMjIsIDI0NywgMjQ5LCA5MSwgMjU0LCAxMTAsIDEyNywgMjE2LCA3OCwgMjMwLCAxNzksIDIzMCwgCisgICAgMjQsIDM3LCA1OSwgMjI2LCAxNjcsIDIzMCwgMjQsIDM3LCA5NiwgMjI2LCAxNjcsIDIzMCwgMjQsIDM3LCAzMCwgMjI2LCAKKyAgICAxNjcsIDIzMCwgMjQsIDIxNCwgMTc2LCAyMjYsIDE2OCwgMiwgMjQ3LCAxMjAsIDIzMCwgMjQsIDIxNCwgMTc2LCAyMjYsIAorICAgIDE2OCwgMiwgMjI1LCAyMiwgMjMwLCAyNCwgNDIsIDIzNSwgMTk5LCAyMjYsIDE2NywgMjMwLCAyNCwgNDIsIDIxNCwgMTc2LCAKKyAgICAyMjYsIDE2NywgMTEzLCAyMzIsIDE0NiwgMjIsIDIyNiwgMTY3LCAxMTMsIDIzMiwgMTQ2LCAxNzcsIDIyNiwgMTY3LCAyMzAsIAorICAgIDI0LCAzMCwgMjI2LCAxNjcsIDIzMCwgMTU0LCAxMTMsIDIxOCwgNDMsIDIxOCwgNDEsIDIsIDIzNSwgMjExLCAyMjQsIDI0LCAKKyAgICAyMzUsIDIxMiwgMjI2LCAxNjcsIDI0NCwgOTksIDIyNSwgMjU1LCAyMzUsIDIxMSwgMjM1LCAyMTIsIDIsIDUyLCA5MSwgCisgICAgMjM1LCAyMTIsIDI1MywgMTczLCAyLCAyMTksIDk1LCAyNTAsIDMyLCAyNDMsIDIyNiwgMjU0LCA4OCwgMjM1LCAyMDksIAorICAgIDIzMiwgMjE0LCAyMzUsIDIxMCwgMiwgMjIzLCAxMTUsIDIyNSwgMjM3LCAyNTQsIDIsIDIyNSwgMSwgMjMyLCAyMTQsIDIzNSwgCisgICAgMjEwLCAyLCAyMjAsIDE1MiwgMjI1LCAyMzcsIDI1NCwgMiwgMjI1LCAxLCAyMzIsIDIxNCwgMjM1LCAyMTAsIDIyOCwgNTIsIAorICAgIDIzNSwgMjUwLCAyMTYsIDE5NiwgMjI1LCAxLCAyMzUsIDIxMiwgMjU0LCAyLCAxMTUsIDIyNSwgMTEsIDIyNiwgMTY3LCAKKyAgICAyMjQsIDE4LCAyMzUsIDIxMiwgMjI2LCAxNjcsIDIzNSwgMjEyLCAyLCAxNDAsIDgwLCAyLCAxMDMsIDIzNSwgMjEyLCAyLCAKKyAgICAzMCwgNTAsIDIzNSwgMjEyLCAyLCAyMzUsIDE5OCwgMjM1LCAyMTIsIDIsIDIxNCwgMTc1LCAyMzUsIDIxMiwgMiwgMjI2LCAKKyAgICAxMjMsIDIzNSwgMjEyLCAyLCAyMTQsIDE4MywgMjM1LCA2NiwgMjMzLCA4NSwgNDMsIDIxNSwgMjI2LCAyMjYsIDE2NywgCisgICAgMjEwLCAxNjAsIDE4NywgMjIxLCAyMDEsIDI0OSwgMjA5LCAyMTAsIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjI1LCA1NiwgMjEwLCAKKyAgICAxNjAsIDE4NywgMjIxLCAyMDEsIDIyNCwgMTc2LCA5NiwgNSwgMiwgNCwgMjUwLCAzNiwgNDgsIDk2LCA1LCAyLCAyNTAsIAorICAgIDMxLCAyNTUsIDE1LCA0OCwgOTYsIDUsIDIsIDIxNiwgODksIDQ4LCA5NiwgNSwgMiwgNTksIDUxLCA5NiwgNSwgMiwgMjE2LCAKKyAgICA4OSwgNTEsIDk2LCA1LCAyLCAyMTgsIDY1LCAxMDUsIDk2LCA1LCAyLCA4NSwgMjE1LCAyMjUsIDIzMCwgMTgyLCA1LCAyLCAKKyAgICAyNDksIDIyMCwgNDgsIDIzMCwgMTgyLCA1LCAyLCA1OSwgNTEsIDIzMCwgMTgyLCA1LCAyLCAyNDQsIDE3NSwgMjQ3LCAxMTgsIAorICAgIDIzMCwgMTgyLCA1LCAyLCAyMjIsIDIyOCwgMjQ3LCAxMTgsIDk2LCA1LCAyMzYsIDAsIDQzLCAxNjMsIDI1MCwgMzUsIDk2LCAKKyAgICA1LCAyMzYsIDAsIDQ0LCAxNjMsIDI1MCwgMzUsIDIxMywgMjU0LCAxNzcsIDI0OSwgMTMxLCAyMjQsIDE4MCwgMjMwLCA4NCwgCisgICAgNSwgMiwgNTksIDQ4LCAyMzAsIDg0LCA1LCAyLCAyMTQsIDE4MywgMjIwLCAxNDksIDIyNCwgMTgxLCAyLCAyNTEsIDE3NSwgCisgICAgMjQ5LCAyNTUsIDIxOSwgNzcsIDIyNCwgMTgwLCAyMzAsIDg0LCA1LCAyMzYsIDAsIDQzLCAxNjMsIDI1MCwgMzUsIDIzMCwgCisgICAgODQsIDUsIDIzNiwgMCwgNDQsIDE2MywgMjUwLCAzNSwgMzcsIDIzMCwgODQsIDUsIDIsIDI1MCwgMzEsIDI1NSwgMTQsIAorICAgIDIzMCwgODQsIDUsIDIzNiwgMCwgNTIsIDI1MCwgMzUsIDM3LCAyNDcsIDE2OSwgNTAsIDk2LCA1LCAyMzYsIDAsIDIxNSwgCisgICAgMjI1LCAyMzAsIDE4MiwgNSwgMjM2LCAwLCAyMTUsIDIyNSwgMjMwLCA4NCwgNSwgMjM2LCAwLCAyMTUsIDIyNSwgMjM1LCAKKyAgICAyMDYsIDIyNCwgMTgwLCAyMjIsIDI0MiwgMjM1LCAyMDYsIDIyNCwgMTgwLCAyMTAsIDE2MCwgMTg3LCAyMjMsIDkwLCAyNDksIAorICAgIDIwOSwgMjU0LCAxMzQsIDE3NywgMjQ5LCAxNjUsIDIzNSwgMTk5LCAyLCAyNDcsIDEyMCwgMjE0LCAxNzYsIDIsIDIzMCwgCisgICAgMTgyLCA1MCwgMjE0LCAxNzYsIDIsIDIyNiwgMTIzLCAyMzUsIDE5OSwgMiwgMjI2LCAxMjMsIDIzNSwgMTk5LCAyLCAyMzIsIAorICAgIDE0NiwgMjU0LCAxMTgsIDIxNCwgMTc2LCAyLCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIxNCwgMTc2LCA3NywgMjM1LCAxOTgsIAorICAgIDIzNSwgMTk5LCA3NywgMjE0LCAxNzUsIDIxNCwgMTc2LCA3NywgMjUyLCAxNDEsIDc3LCAyMzUsIDE5OCwgMjM1LCAxOTksIAorICAgIDc3LCAyNTIsIDE0MSwgNzcsIDIxNCwgMTc1LCAyMTQsIDE3NiwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDIsIDIxNCwgMTc1LCAKKyAgICAyMzUsIDE5OSwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDIsIDIzNSwgMTk4LCAyNTAsIDAsIDIxNCwgMTc2LCAyLCAyMjAsIAorICAgIDEzMywgMjUwLCAwLCAyMzUsIDE5OSwgMiwgMjIwLCAxMzMsIDUyLCA0MiwgMjM1LCAxOTgsIDUyLCA0MiwgMjE0LCAxNzUsIAorICAgIDI1MCwgMCwgMjE0LCAxNzYsIDIsIDIyMCwgMTM0LCAyMiwgMjE5LCA3NywgMjI0LCAxODAsIDIzMiwgMTQ2LCAyMiwgMiwgCisgICAgNTksIDQ4LCAyMzIsIDE0NiwgMTc3LCAyLCA1OSwgNDgsIDUyLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMzIsIDE0NiwgCisgICAgMjI2LCAxNTgsIDExMywgMjM1LCAyMDAsIDIzMiwgMTQ2LCAyNTQsIDExOCwgMTEzLCAyMzUsIDIwMCwgMjMyLCAxNDYsIAorICAgIDIyNiwgMTU4LCAyMTksIDg1LCAyMzMsIDg1LCAyMjYsIDE1OCwgMjE5LCA4NSwgMjMzLCA4NSwgMjU0LCAxMTgsIDIzMiwgCisgICAgMTQ2LCAxNzcsIDIyNiwgMTIxLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMiwgMTQ2LCAyMiwgMiwgMjMwLCAyMjQsIDIxOCwgCisgICAgMTM5LCAyMzIsIDE0NiwgMTc3LCAyLCAyMzAsIDIyNCwgMjE4LCAxMzksIDIzMiwgMTQ2LCAyMiwgMiwgMjAzLCAyNDgsIAorICAgIDE1NiwgMjMyLCAxNDYsIDE3NywgMiwgMjAzLCAyNDgsIDE1NiwgMjMyLCAxNDYsIDIyLCAyLCA1MiwgMjI2LCAxMjMsIDIzMiwgCisgICAgMTQ2LCAyMiwgMiwgMjE0LCAxODMsIDIzMiwgMTQ2LCAyMiwgMiwgNTIsIDIxNCwgMTgzLCA0LCAyMTMsIDI1MSwgMiwgMjE0LCAKKyAgICAxODMsIDIzMiwgMTQ2LCAxNzcsIDIsIDUyLCAyMjYsIDEyMywgMjMyLCAxNDYsIDE3NywgMiwgNTIsIDIxNCwgMTgzLCAyMTAsIAorICAgIDE2MCwgMTg3LCAyNDcsIDEyOSwgMjU0LCA3OSwgMjEwLCAxNjAsIDE4NywgMjIzLCAxNDgsIDI1NCwgNzksIDI0NSwgOTgsIAorICAgIDUsIDIsIDU5LCA1MSwgMjQwLCAxMDQsIDIsIDU5LCA0OCwgMjE1LCAyMTEsIDIwMywgMjUyLCAxNDEsIDIsIDUyLCA2NywgCisgICAgOTEsIDIxNSwgMjExLCAyMDMsIDI1MiwgMTQxLCAyLCAyMTUsIDIxMSwgNjcsIDkxLCAyMTYsIDg5LCAyMjYsIDE2OCwgMiwgCisgICAgNTksIDQ4LCAyMTYsIDg5LCAyMjYsIDE2OCwgMiwgMjIyLCAyMjgsIDI0NywgMTE4LCAyMTksIDE2MiwgMjMwLCAxODIsIAorICAgIDIxOSwgMTYxLCAyNDksIDE5OSwgMiwgNTksIDQ4LCAyNDUsIDk4LCAyLCAyNTMsIDIxNiwgMjU0LCAxNDgsIDEyOCwgMjE2LCAKKyAgICA0MiwgMiwgMjUwLCAzMSwgMjU1LCAxNCwgMjU0LCA0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyNDUsIDk4LCA1LCA3NywgOTYsIAorICAgIDUwLCA5NiwgNSwgNzcsIDI0NSwgOTgsIDUwLCAyNDUsIDk4LCA1LCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDUyLCAyNDksIAorICAgIDIyNywgMjQ1LCA5OSwgMTEzLCAyNDksIDE5NCwgMjQ1LCA5OCwgMjE5LCAxNzYsIDEzNCwgMjQ5LCAxOTQsIDI0NSwgOTgsIAorICAgIDIxOSwgMTc2LCAyNDUsIDk4LCA1LCAyLCAxMTMsIDE3MCwgNzcsIDIyLCAxMTMsIDE3MCwgNTEsIDI0NSwgOTQsIDIsIDI0NCwgCisgICAgMTEsIDE3MCwgNDgsIDIzMywgMTUsIDIsIDI1MCwgMzYsIDIzNSwgMjE1LCAyNDIsIDEzMCwgMiwgMjUwLCAzNiwgMjM1LCAKKyAgICAyMTUsIDIzMywgMTUsIDIsIDIyNCwgMTMsIDE2NCwgNDgsIDI0MiwgMTMwLCAyLCAyMjQsIDEzLCAxNjQsIDQ4LCAyMzMsIAorICAgIDE1LCAxNzcsIDIxOSwgOTcsIDEyOCwgMTExLCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDExMSwgMjMzLCAxNSwgCisgICAgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCAyMzUsIDIxNSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAKKyAgICAyMTYsIDQyLCAyLCA1OSwgMjM1LCAyMTUsIDIzMywgMTUsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIAorICAgIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMzMsIDE1LCAxNzcsIDIxOSwgOTcsIAorICAgIDEyOCwgMjE2LCA0MiwgMiwgNTksIDc3LCAyMjIsIDI1MSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAKKyAgICAyLCA1OSwgNzcsIDIzMywgNDYsIDIzMywgMTUsIDE3NywgMjU0LCA0OSwgMjQyLCAxMzAsIDE3NywgMjU0LCA0OSwgMjMzLCAKKyAgICAxNSwgMjIsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgMjQyLCAxMzAsIDIyLCAyMTksIDE1MywgMjI4LCA1MiwgCisgICAgMTI4LCAxMTEsIDIzMywgMTUsIDIyLCAyMjgsIDUyLCAyNTQsIDQ5LCAyNDIsIDEzMCwgMjIsIDIyOCwgNTIsIDI1NCwgNDksIAorICAgIDIzMywgMTUsIDc3LCAyNDYsIDExMSwgMTI4LCA3NywgMjQyLCAxMjksIDI0MiwgMTMwLCA3NywgMjQ2LCAxMTEsIDEyOCwgCisgICAgNzcsIDIzMywgMTQsIDIzMywgMTUsIDc3LCAyMTksIDE2MiwgMTc3LCAyNDUsIDk5LCAyNDIsIDEzMCwgNzcsIDIxOSwgMTYyLCAKKyAgICAxNzcsIDI0NSwgOTksIDIzMywgMTUsIDc3LCAyMTksIDE2MiwgNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgNzcsIDIxOSwgCisgICAgMTYyLCA3NywgMjMzLCAxNCwgMjMzLCAxNSwgNzcsIDI0MiwgMTMwLCA3NywgMjQ2LCAxMTEsIDI0NSwgOTksIDI0MiwgMTMwLCAKKyAgICA3NywgMjMzLCAxNSwgNzcsIDI0NiwgMTExLCAyNDUsIDk5LCAyMzMsIDE1LCA3NywgMjE5LCA5NywgMTI4LCA3NywgMjQyLCAKKyAgICAxMzAsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyNDIsIDEzMCwgNzcsIDIxOSwgOTcsIDEyOCwgNzcsIDIzMywgMTUsIDc3LCAKKyAgICAyMTksIDk3LCAyNDUsIDk5LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjE5LCA5NywgMTI4LCAyMTYsIAorICAgIDQyLCAxNzcsIDI0MiwgMTI5LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNSwgMiwgNTksIDIzNSwgMjE1LCAKKyAgICAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMzAsIDIsIDU5LCAyMzUsIDIxNSwgMjQ2LCAxMTEsIDEyOCwgCisgICAgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyNDYsIDExMSwgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTI5LCAyNDYsIDExMSwgCisgICAgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDI0NiwgMTExLCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIAorICAgIDE3NywgMjQyLCAxMjksIDIxOSwgMTYyLCAxNzcsIDIzMywgMTQsIDIxOSwgMTYyLCAxNzcsIDI0MiwgMTI5LCAyMTksIDE2MiwgCisgICAgNzcsIDIzMywgMTUsIDc3LCAyNDUsIDk4LCA1MCwgMjE5LCAxNjIsIDc3LCAyNDIsIDEzMCwgNzcsIDI0NSwgOTgsIDUwLCAKKyAgICA1MiwgMjI5LCA5MSwgMjMzLCAxNCwgNTIsIDIyOSwgOTEsIDI0MiwgMTI5LCA1MiwgMjI5LCA5MSwgMjMzLCAxNSwgMiwgCisgICAgMjE0LCAxODMsIDI0MiwgMTMwLCAyMjYsIDEyMSwgMjMzLCAxNCwgMjQyLCAxMzAsIDI1MiwgMzAsIDIzMywgMTQsIDIzMywgCisgICAgMTUsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MiwgMjQyLCAxMzAsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MiwgMjMzLCAKKyAgICAxNSwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkzLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDI1MCwgMCwgCisgICAgMjUxLCA3OCwgMjQ5LCA5MywgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDIxOSwgNzgsIDIxNiwgMjAwLCAyMzMsIDgzLCAyMTYsIAorICAgIDIwMCwgMjE5LCA3OCwgMjE2LCAyMDEsIDE3NywgMTI4LCAxMTEsIDIzMywgODMsIDIxNiwgMjAxLCAxNzcsIDEyOCwgMTExLCAKKyAgICAyNDUsIDk4LCA1LCAyLCAyNTEsIDEwOCwgNDgsIDIyNCwgMjAzLCA3NywgMjE5LCAxNTMsIDI0NSwgOTgsIDUwLCAyMTgsIAorICAgIDU2LCA3NywgMjE5LCAxNTMsIDI0NSwgOTgsIDUwLCAyMjQsIDIwMywgNzcsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgCisgICAgMjE4LCA1NiwgNzcsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCAKKyAgICA1NiwgNzcsIDI0NSwgOTgsIDUwLCAyMjQsIDIwMywgNzcsIDIyOCwgNTIsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjI4LCAKKyAgICA1MiwgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjU0LCAxNDgsIAorICAgIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDIyOCwgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDIyOCwgCisgICAgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgNTIsIDIyNCwgMjAyLCA1MiwgMjE4LCA1NSwgMjE4LCA2NCwgMiwgMjQ3LCAxMjAsIAorICAgIDIxOCwgMjIsIDIsIDI0NywgMTIwLCAyMTgsIDY0LCAyLCA5NiwgNSwgNTEsIDIxOCwgMjIsIDIsIDk2LCA1LCA1MSwgMjE4LCAKKyAgICA2NCwgMiwgMjMwLCA4NCwgNSwgNTEsIDIxOCwgMjIsIDIsIDIzMCwgODQsIDUsIDUxLCAyMTgsIDY0LCA2NCwgMTc3LCAxMjgsIAorICAgIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjE4LCAyMiwgNjQsIDE3NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIDIxOCwgNjQsIAorICAgIDY0LCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgMjIsIDY0LCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgNjQsIDY0LCA3NywgMjE2LCAKKyAgICA4OSwgMjI2LCAxNjcsIDIxOCwgMjIsIDY0LCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDIxOCwgNjQsIDY0LCA3NywgMjU0LCAKKyAgICAxNDgsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA2NCwgNjQsIDc3LCAyMjgsIAorICAgIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDc3LCAyMjgsIDUyLCAxMjgsIDExMSwgNDIsIDQzLCAyMDQsIDkzLCAyMjYsIAorICAgIDE2NywgNDIsIDQ0LCAyMDQsIDkzLCAyMjYsIDE2NywgMjUwLCAwLCAyMTgsIDYzLCAyNTAsIDAsIDIxOCwgMjEsIDI1MCwgMCwgCisgICAgMjE4LCA2NCwgMTc3LCAxMjgsIDExMSwgMjUwLCAwLCAyMTgsIDIyLCAxNzcsIDEyOCwgMTExLCAyMTgsIDY0LCA3NywgMjE4LCAKKyAgICAyMSwgMjE4LCAyMiwgNzcsIDIxOCwgNjMsIDIxOCwgNjQsIDc3LCAyMTgsIDYzLCAyMTgsIDIyLCA3NywgMjE4LCAyMSwgCisgICAgMjE4LCAyMiwgMjUyLCAzMCwgMjE4LCA2MywgMjE4LCAyMiwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDI1MSwgNzgsIDI0OCwgCisgICAgMTU3LCAyLCAyMTgsIDYzLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyNDYsIDEwMywgMjI1LCA0OCwgMiwgMjE3LCAxMiwgCisgICAgMjE2LCAxMywgMjE1LCAyNDAsIDIzNSwgMTk4LCAyNDQsIDIxLCAyMjgsIDY1LCAyMTksIDI1MSwgNDMsIDIxNywgODcsIAorICAgIDIxOSwgMjUxLCAxMjQsIDIxNywgODcsIDIxOSwgMjUxLCAxMjAsIDIxNywgODcsIDIyNSwgMTcyLCAyLCAyMjIsIDkxLCA2NywgCisgICAgMjUyLCAxNDEsIDIxNSwgMjExLCA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNDMsIDIxNSwgOTMsIDY3LCAyNTIsIAorICAgIDE0MSwgNTIsIDQzLCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDMsIDIxNSwgOTMsIDE5OSwgMjQ4LCAxNTcsIAorICAgIDI0MywgMjQzLCA0MywgMjMxLCA2MywgNjQsIDUyLCAyMTMsIDIzOSwgMjE5LCAyNTEsIDEyNCwgMjE3LCA4OCwgMiwgMjI2LCAKKyAgICAxMjMsIDIxOSwgMjUxLCAxMjAsIDIxNywgODgsIDIsIDIxNCwgMTgzLCAyMTksIDI1MSwgMTIwLCAyMTcsIDg4LCA3NywgCisgICAgMjE5LCAyNTEsIDEyNCwgMjE3LCA4NywgNTIsIDEyNCwgMjE3LCA4NywgNTIsIDEyMCwgMjE3LCA4NywgNTIsIDIxOCwgMTAzLCAKKyAgICAyMjgsIDUyLCA1MCwgMjIzLCA0OSwgNTIsIDIxOCwgMTAzLCAyMjgsIDUyLCA1MCwgMjQ3LCAxMzgsIDIyOCwgNTIsIDI0NywgCisgICAgMTc1LCAyLCAyMjMsIDQ5LCAyMjksIDEwMSwgMjE5LCA5NSwgNjcsIDIzMiwgMjE0LCAyLCAyNTAsIDM2LCA0OCwgNjcsIAorICAgIDIzMiwgMjE0LCAyLCAyNTAsIDM2LCA1MSwgMTI0LCAyMTcsIDg4LCAyLCAyNTAsIDM2LCA1MSwgMjI2LCA4LCAyLCAyMDMsIAorICAgIDkxLCAyMjYsIDgsIDIsIDIxNiwgODksIDIyNiwgMTY3LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAyNTEsIDI0NCwgMjIzLCAKKyAgICA5MSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgMiwgMjAzLCA5MSwgMjE1LCAyMTEsIDI0OSwgMjI3LCAyMjYsIDE2NywgCisgICAgMjE1LCAyMTEsIDIyOSwgOTEsIDIzMywgMTQsIDIxNSwgMjExLCAyMjksIDkxLCAyNDIsIDEyOSwgMjQ2LCAxMTEsIDIxOSwgCisgICAgOTcsIDIzMywgMTUsIDE3NywgMTI4LCAxMTEsIDI0NiwgMTExLCAyMTksIDk3LCAyNDIsIDEzMCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjE1LCAyMTEsIDIxOSwgNDcsIDI1MSwgMjQ0LCAyMjMsIDkxLCAyMzMsIDg1LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAKKyAgICAyMjYsIDE2NywgNTIsIDIxOSwgNDcsIDIyNiwgMTY3LCA3MSwgNjcsIDEzMCwgMjMwLCAyNCwgNzEsIDY3LCAxMzAsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3MSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzEsIDc0LCAyMTksIDI4LCAyNDUsIDIyMCwgNzEsIDc0LCAKKyAgICAyMTksIDI4LCAyMTIsIDksIDcxLCA3NCwgNDMsIDQ0LCA3MSwgNzQsIDE0MCwgODUsIDc0LCAyMTQsIDE1MywgODUsIDc0LCAKKyAgICAyNDYsIDEwNCwgODUsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODUsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDg1LCA3NCwgCisgICAgMjE5LCAyOCwgMjQ1LCAyMjAsIDg1LCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA4NSwgNzQsIDQzLCA0NCwgODUsIDc0LCAxMjAsIAorICAgIDEyNCwgODUsIDc0LCA5NywgODAsIDIsIDIxNiwgNzcsIDI0NiwgMTAzLCA5NywgODAsIDIsIDIxNiwgNzcsIDIxNCwgMTUyLCAKKyAgICAxNDAsIDgwLCAyLCAyMTYsIDc3LCAyNDYsIDEwMywgMTQwLCA4MCwgMiwgMjE2LCA3NywgMjE0LCAxNTIsIDQyLCAyLCAyMTYsIAorICAgIDE0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjUxLCAxNzUsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIAorICAgIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjMyLCAxMDgsIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgCisgICAgMjQ3LCAyNDksIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAKKyAgICAyLCAyMTYsIDE0LCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgMiwgMjUxLCAxNzUsIDE2MywgMjUxLCAyMjEsIDI0NiwgCisgICAgMTE4LCAyMTgsIDIzNCwgODUsIDIzMywgODUsIDIxOCwgMjM0LCA3MSwgMjMzLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTMsIAorICAgIDE4NywgNCwgMjE4LCAyMzQsIDcxLCAyMTMsIDE4NywgNCwgMjE4LCAyMzQsIDg1LCAyMjUsIDE5MCwgNzEsIDIyNSwgMTkwLCAKKyAgICA3MSwgMjQxLCAxOTMsIDg1LCAyNDEsIDE5MywgMjAzLCA4NSwgMjQxLCAxOTMsIDg1LCAyMzMsIDg1LCAyNTAsIDM1LCA4NSwgCisgICAgMjMxLCA4MiwgMjQ3LCAyNDgsIDcxLCAyMzEsIDgyLCAyNDcsIDI0OCwgODUsIDIzMSwgODIsIDIzMiwgMTA0LCA3MSwgMjMxLCAKKyAgICA4MiwgMjMyLCAxMDQsIDg1LCA0LCAyNDcsIDI0OCwgODUsIDQsIDIzMiwgMTA0LCA3MSwgNCwgMjMyLCAxMDQsIDg1LCAyMDMsIAorICAgIDI0NSwgMTY0LCA3MSwgMjAzLCAyNDUsIDE2NCwgODUsIDY3LCAyNDUsIDE2NCwgNzEsIDY3LCAyNDUsIDE2NCwgNDMsIDgwLCAKKyAgICAyLCA0LCAyNTAsIDM1LCAxMzQsIDE0MCwgMjUzLCAyNDcsIDQzLCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCAyMTgsIAorICAgIDIzMCwgNzQsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgNTIsIDY3LCA5MSwgCisgICAgMTQwLCAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTQwLCAyMTUsIDU4LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCAKKyAgICAxNDAsIDgwLCAyLCAyNDYsIDExOCwgMjE4LCAxMzksIDE0MCwgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgMTQwLCA4MCwgCisgICAgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3NywgMTQwLCAyMTUsIDU4LCAKKyAgICA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAKKyAgICAxNDAsIDgwLCAyMTYsIDEzOSwgMjExLCAxNzgsIDIxMiwgMzYsIDgwLCAyMjUsIDcsIDI0NywgMTk1LCAyMzMsIDQ2LCAyNDUsIAorICAgIDk4LCA1LCA3NywgMTQwLCA3NCwgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAxNjgsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgCisgICAgMjIzLCA1MCwgMjU0LCAxNDgsIDEyOCwgMTExLCA5NywgODAsIDIxNiwgMTM5LCAyNDIsIDEyOSwgOTcsIDgwLCAyMTYsIAorICAgIDEzOSwgMjE4LCAyMSwgMTQwLCAyMjQsIDI0LCA3NCwgOTcsIDIyNCwgMjQsIDc0LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIAorICAgIDE2OCwgNzcsIDk3LCA3NCwgOTcsIDgwLCA3NywgMjIzLCA1MCwgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTYsIDg5LCAyMjYsIAorICAgIDE2OCwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDE0MCwgODAsIDc3LCAyMjMsIDUwLCAKKyAgICAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIDgwLCA3NywgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAxNjcsIDcxLCAyMzEsIDgyLCAKKyAgICAyMTgsIDE1NiwgODUsIDQsIDIxOCwgMTU2LCA3MSwgNCwgMjE4LCAxNTYsIDg1LCAyMjIsIDI0NywgMjI1LCAxOTAsIDcxLCAKKyAgICAyMjIsIDI0NywgMjI1LCAxOTAsIDExNCwgMjMzLCA4NSwgMjUwLCAzNSwgMTE0LCAyMjYsIDEyNCwgMiwgMjI2LCAxMjQsIAorICAgIDIzNSwgMjE1LCAxMTQsIDI1MCwgMzYsIDIsIDI1MCwgMzYsIDIzNSwgMjE1LCAxMTQsIDI1MCwgMzUsIDExNCwgMzcsIDIyMSwgCisgICAgMjU0LCAxNDUsIDYsIDEsIDI1MywgMTU5LCAxNDUsIDYsIDEsIDI1MSwgMTE3LCAxNDUsIDYsIDEsIDIxMywgMjUzLCAxNDUsIAorICAgIDYsIDEsIDI0MiwgMTg1LCAxNDUsIDYsIDEsIDI0NywgMTQwLCAxNDUsIDYsIDEsIDIxMSwgMjEsIDE0NSwgNiwgMSwgMjEwLCAKKyAgICA2OCwgMTQ1LCA2LCAxLCAyNDYsIDM0LCAxNDUsIDYsIDEsIDIxMCwgOTEsIDE0NSwgNiwgMSwgMjM1LCAxNDgsIDE0NSwgNiwgCisgICAgMSwgNjUsIDIzNSwgMTQ4LCAxNDUsIDYsIDEsIDczLCAxNDUsIDYsIDEsIDI0NywgMTYwLCAxNDUsIDYsIDEsIDIzNCwgMjQwLCAKKyAgICAxNDUsIDYsIDEsIDIzMiwgMTg2LCAxNDUsIDYsIDEsIDIzMCwgMjksIDE0NSwgNiwgMSwgMjI5LCAxOTEsIDE0NSwgNiwgMSwgCisgICAgMjI2LCAxODUsIDE0NSwgNiwgMSwgMjI1LCA0LCAxNDUsIDYsIDEsIDIyMiwgMjI3LCAxNDUsIDYsIDEsIDIxOSwgODMsIAorICAgIDE0NSwgNiwgMSwgMjE1LCA4MSwgMTQ1LCA2LCAxLCAyMTQsIDIwMSwgMTQ1LCA2LCAxLCAyNDMsIDI0NiwgMTQ1LCA2LCAxLCAKKyAgICAyNDEsIDE5OSwgMTQ1LCA2LCAxLCAyMjYsIDEzNSwgMTQ1LCA2LCAxLCAyMjUsIDIyMSwgMTQ1LCA2LCAxLCAyMTksIDIyOCwgCisgICAgMTQ1LCA2LCAxLCAyMTUsIDE2NywgMTQ1LCA2LCAxLCAyNTAsIDc1LCAxNDUsIDYsIDEsIDIyMCwgMTAyLCAxNDUsIDYsIDEsIAorICAgIDIxMSwgMjcsIDE0NSwgNiwgMSwgMjExLCAyOSwgMTQ1LCA2LCAxLCAyMTEsIDU3LCAxNDUsIDYsIDEsIDIxOCwgMjUzLCAKKyAgICAxNjIsIDE0NSwgNiwgMSwgMjEwLCAyMTIsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODQsIAorICAgIDIsIDIxNywgNzcsIDE0NSwgNiwgMSwgMjEwLCAyNDQsIDE0NSwgNiwgMSwgMjM1LCAxODQsIDQsIDIxMCwgMTgzLCAxNDUsIAorICAgIDYsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyMzUsIDE4NCwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIAorICAgIDYsIDEsIDI0NCwgODIsIDE0NSwgNiwgMSwgMjM1LCAxNDYsIDE0NSwgNiwgMSwgMjE5LCAyMjcsIDE0NSwgNiwgMSwgMjE1LCAKKyAgICAyMDIsIDYxLCAxNDUsIDYsIDEsIDIzMywgNzUsIDIzMCwgMjksIDE0NSwgNCwgMSwgMjUzLCAxNTksIDE0NSwgNCwgMSwgCisgICAgMjUxLCAxMTcsIDE0NSwgNCwgMSwgMjEzLCAyNTMsIDE0NSwgNCwgMSwgMjQyLCAxODUsIDE0NSwgNCwgMSwgMjQ3LCAxNDAsIAorICAgIDE0NSwgNCwgMSwgMjExLCAyMSwgMTQ1LCA0LCAxLCAyMTAsIDY4LCAxNDUsIDQsIDEsIDI0NiwgMzQsIDE0NSwgNCwgMSwgCisgICAgMjEwLCA5MSwgMTQ1LCA0LCAxLCAyMzUsIDE0OCwgMTQ1LCA0LCAxLCA2NSwgMjM1LCAxNDgsIDE0NSwgNCwgMSwgNzMsIAorICAgIDE0NSwgNCwgMSwgMjQ3LCAxNjAsIDE0NSwgNCwgMSwgMjM0LCAyNDAsIDE0NSwgNCwgMSwgMjMyLCAxODYsIDE0NSwgNCwgMSwgCisgICAgMjMwLCAyOSwgMTQ1LCA0LCAxLCAyMjksIDE5MSwgMTQ1LCA0LCAxLCAyMjYsIDE4NSwgMTQ1LCA0LCAxLCAyMjUsIDQsIAorICAgIDE0NSwgNCwgMSwgMjIyLCAyMjcsIDE0NSwgNCwgMSwgMjE5LCA4MywgMTQ1LCA0LCAxLCAyMTUsIDgxLCAxNDUsIDQsIDEsIAorICAgIDIxNCwgMjAxLCAxNDUsIDQsIDEsIDI0MywgMjQ2LCAxNDUsIDQsIDEsIDI0MSwgMTk5LCAxNDUsIDQsIDEsIDIyNiwgMTM1LCAKKyAgICAxNDUsIDQsIDEsIDIyNSwgMjIxLCAxNDUsIDQsIDEsIDIxOSwgMjI4LCAxNDUsIDQsIDEsIDIxNSwgMTY3LCAxNDUsIDQsIDEsIAorICAgIDI1MCwgNzUsIDE0NSwgNCwgMSwgMjIwLCAxMDIsIDE0NSwgNCwgMSwgMjExLCAyNywgMTQ1LCA0LCAxLCAyMTEsIDI5LCAKKyAgICAxNDUsIDQsIDEsIDIxMSwgNTcsIDE0NSwgNCwgMSwgMjE4LCAyNTMsIDE2MiwgMTQ1LCA0LCAxLCAyMTAsIDIxMiwgMTQ1LCAKKyAgICA0LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3NywgMTQ1LCA0LCAxLCAyMTAsIAorICAgIDI0NCwgMTQ1LCA0LCAxLCAyMzUsIDE4NCwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAKKyAgICAxNDUsIDQsIDEsIDIzNSwgMTg0LCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjQ0LCA4MiwgMTQ1LCA0LCAxLCAKKyAgICAyMzUsIDE0NiwgMTQ1LCA0LCAxLCAyMTksIDIyNywgMTQ1LCA0LCAxLCAyMTUsIDIwMiwgNjEsIDE0NSwgNCwgMSwgMjMzLCAKKyAgICA3NSwgMjMwLCAyOSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDUyLCAxMzAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1MiwgCisgICAgMTMwLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDkxLCA3LCA2LCAKKyAgICAxLCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgNywgNCwgMSwgMTE1LCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0NywgCisgICAgMjU1LCA5MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAzOSwgNywgCisgICAgNiwgMSwgMjM1LCAyNCwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjEwLCAKKyAgICAxNjAsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyNTQsIDE0MywgNywgNiwgCisgICAgMSwgMjMyLCA1MCwgMiwgMTAzLCA3LCA2LCAxLCAyMTUsIDk0LCA2MSwgNywgNiwgMSwgMjE1LCA5NCwgMjU0LCAxNDMsIDcsIAorICAgIDQsIDEsIDIxNCwgMTA2LCAyLCA0NCwgMTAzLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIDIxMiwgOTksIAorICAgIDIsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0OSwgMTAwLCA3LCA2LCAxLCAxNjMsIDI0MiwgNjAsIDcsIDQsIDEsIAorICAgIDE2MywgMjQyLCA2MCwgNywgNCwgMSwgMjE3LCA3NSwgMjI1LCAxMzMsIDcsIDQsIDEsIDE2MCwgMiwgMjI4LCA1MCwgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDE0NCwgMiwgMTIxLCAyMjIsIDIzNCwgMjM1LCAKKyAgICAyMTUsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDc1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMzUsIDE0NCwgNTgsIDEsIDYsIDIxNCwgCisgICAgMTA1LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyMTcsIDI1MCwgMjE3LCA3NywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIxNywgCisgICAgMjUwLCAyMTcsIDc3LCA4MSwgNiwgMSwgMjU0LCAxNjQsIDgxLCA0LCAxLCAyNTQsIDE2NCwgODEsIDYsIDEsIDIxMywgMTczLCAKKyAgICA4MSwgNCwgMSwgMjEzLCAxNzMsIDgxLCA2LCAxLCAyNDMsIDEwNywgODEsIDQsIDEsIDI0MywgMTA3LCA4MSwgNiwgMSwgCisgICAgMjQ4LCAxOTEsIDgxLCA0LCAxLCAyNDgsIDE5MSwgODEsIDYsIDEsIDI0NSwgMTk0LCA4MSwgNCwgMSwgMjQ1LCAxOTQsIDgxLCAKKyAgICA2LCAxLCAyMTksIDMzLCA4MSwgNCwgMSwgMjE5LCAzMywgODEsIDYsIDEsIDIxMCwgMTAxLCA4MSwgNCwgMSwgMjEwLCAxMDEsIAorICAgIDgxLCA2LCAxLCAyNDEsIDI0OCwgODEsIDQsIDEsIDI0MSwgMjQ4LCA4MSwgNiwgMSwgMjE2LCAxNzcsIDgxLCA0LCAxLCAKKyAgICAyMTYsIDE3NywgODEsIDYsIDEsIDI0MCwgMTE2LCA4MSwgNCwgMSwgMjQwLCAxMTYsIDgxLCA2LCAxLCAyMzQsIDIyNywgODEsIAorICAgIDQsIDEsIDIzNCwgMjI3LCA4MSwgNiwgMSwgMjMzLCA3MiwgODEsIDQsIDEsIDIzMywgNzIsIDgxLCA2LCAxLCAyMzAsIDIzMCwgCisgICAgODEsIDQsIDEsIDIzMCwgMjMwLCA4MSwgNiwgMSwgMjI4LCAyMzMsIDgxLCA0LCAxLCAyMjgsIDIzMywgODEsIDYsIDEsIAorICAgIDIzMywgMjMzLCA4MSwgNCwgMSwgMjMzLCAyMzMsIDgxLCA2LCAxLCA3NiwgODEsIDQsIDEsIDc2LCA4MSwgNiwgMSwgMjI1LCAKKyAgICAxMDgsIDgxLCA0LCAxLCAyMjUsIDEwOCwgODEsIDYsIDEsIDIyMiwgMjExLCA4MSwgNCwgMSwgMjIyLCAyMTEsIDgxLCA2LCAKKyAgICAxLCAyMTksIDE2NSwgODEsIDQsIDEsIDIxOSwgMTY1LCA4MSwgNiwgMSwgMjE3LCA0MSwgODEsIDQsIDEsIDIxNywgNDEsIAorICAgIDgxLCA2LCAxLCAyMTQsIDIyOSwgODEsIDQsIDEsIDIxNCwgMjI5LCA4MSwgNiwgMSwgMjQ0LCAxMjEsIDgxLCA0LCAxLCAKKyAgICAyNDQsIDEyMSwgODEsIDYsIDEsIDIzNCwgMTEyLCA4MSwgNCwgMSwgMjM0LCAxMTIsIDgxLCA2LCAxLCAyMjQsIDE2MSwgODEsIAorICAgIDQsIDEsIDIyNCwgMTYxLCA4MSwgNiwgMSwgMjI2LCAxNzgsIDgxLCA0LCAxLCAyMjYsIDE3OCwgODEsIDYsIDEsIDI0NywgCisgICAgMjUzLCAyNTQsIDE3MCwgODEsIDQsIDEsIDI0NywgMjUzLCAyNTQsIDE3MCwgODEsIDYsIDEsIDU1LCA4MSwgMjU0LCAxOTYsIAorICAgIDgxLCA0LCAxLCA1NSwgODEsIDI1NCwgMTk2LCA4MSwgNiwgMSwgMjQ5LCAxMTUsIDI0NSwgMTk0LCA4MSwgNCwgMSwgMjQ5LCAKKyAgICAxMTUsIDI0NSwgMTk0LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDIzNCwgMjI3LCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDIzNCwgCisgICAgMjI3LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDIyOCwgMjMzLCA4MSwgNiwgCisgICAgMSwgMjQ5LCAxMTUsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDIyOCwgMjMzLCA4MSwgNiwgMSwgNTUsIDgxLCAKKyAgICAyMjYsIDE3OCwgODEsIDQsIDEsIDU1LCA4MSwgMjI2LCAxNzgsIDgxLCA2LCAxLCAyMjEsIDI0NiwgODEsIDQsIDEsIDIyMSwgCisgICAgMjQ2LCA4MSwgNiwgMSwgMjQ5LCAxMjgsIDIyMCwgNTUsIDgxLCA0LCAxLCAyNDksIDEyOCwgMjIwLCA1NSwgODEsIDYsIDEsIAorICAgIDU1LCA4MSwgMjIwLCA1NSwgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCA1NSwgODEsIDYsIDEsIDU1LCA4MSwgMjQ1LCA3NSwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjQ1LCA3NSwgODEsIDYsIDEsIDI1NCwgMTgyLCAyMzQsIDExNywgODEsIDQsIDEsIDI1NCwgCisgICAgMTgyLCAyMzQsIDExNywgODEsIDYsIDEsIDI0NywgMjUzLCAyNDEsIDQ1LCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDI0MSwgNDUsIAorICAgIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgNDUsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgNDUsIDgxLCA2LCAxLCA1NSwgODEsIAorICAgIDE2MiwgODEsIDQsIDEsIDU1LCA4MSwgMTYyLCA4MSwgNiwgMSwgMjMzLCAxNDgsIDE2MiwgODEsIDQsIDEsIDIzMywgMTQ4LCAKKyAgICAxNjIsIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjE3LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDIxNywgODEsIDYsIDEsIAorICAgIDU1LCA4MSwgMjQxLCAyNTEsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgMjUxLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDMsIDEwMiwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjQzLCAxMDIsIDgxLCA2LCAxLCA1NSwgODEsIDI0NywgMTYzLCA4MSwgNCwgMSwgNTUsIDgxLCAKKyAgICAyNDcsIDE2MywgODEsIDYsIDEsIDU1LCA4MSwgMjIwLCAyMiwgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCAyMiwgODEsIDYsIDEsIAorICAgIDU1LCAyMjcsIDIwOCwgMjIwLCAyMiwgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjIwLCAyMiwgODEsIDYsIDEsIDU1LCAKKyAgICAyMjcsIDIwOCwgMjI5LCAyNywgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjI5LCAyNywgODEsIDYsIDEsIDU1LCAyMjcsIAorICAgIDIwOCwgMjI3LCAxNDgsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyNywgMTQ4LCA4MSwgNiwgMSwgNTUsIDIyNywgMjA4LCAKKyAgICAyMTIsIDM3LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMTIsIDM3LCA4MSwgMTYsIDIzNCwgMjQ2LCA4MSwgMTYsIDIzMCwgCisgICAgMjMxLCAyMjIsIDIxMSwgODEsIDE2LCAyMjUsIDEwOSwgMjIyLCAyMTEsIDgxLCAxNiwgMjE4LCAxNDcsIDgxLCAxNiwgMjE3LCAKKyAgICA0MiwgMjIyLCAyMTEsIDgxLCAxNiwgMjM0LCAxMTMsIDIyMiwgMjExLCA4MSwgMTYsIDIyMCwgMjMsIDIxOSwgMTY1LCA4MSwgCisgICAgNiwgMSwgMjQ5LCAxMTUsIDIyMCwgNTUsIDgxLCA0LCAxLCAyNDksIDExNSwgMjIwLCA1NSwgODEsIDYsIDEsIDI0OSwgMTE1LCAKKyAgICAyNDMsIDEwMiwgODEsIDQsIDEsIDI0OSwgMTE1LCAyNDMsIDEwMiwgODEsIDM4LCAyMjgsIDIzNCwgNDgsIDgxLCAzOCwgCisgICAgMjE4LCAyNDcsIDI1MywgMjI0LCA4MSwgMzgsIDIxOCwgMjQ3LCAyMzMsIDIxLCA4MSwgNiwgMSwgMjUxLCAxOTksIDIzNCwgCisgICAgMTE3LCA4MSwgNCwgMSwgMjUxLCAxOTksIDIzNCwgMTE3LCA4MSwgNTUsIDIyNywgMjA4LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDgxLCA1NSwgMjI3LCAyMDgsIDI0NywgMTk3LCAyMjQsIDEzLCA3OCwgODEsIDU1LCAyMjcsIDIwOCwgMjM1LCAyMzcsIDIyNCwgCisgICAgMTMsIDc4LCA4MSwgNTUsIDIyNywgMjA4LCAyMTMsIDI0MSwgMjQ3LCAxNzIsIDgxLCAyNDQsIDIsIDEyMywgMjQyLCAyNywgCisgICAgODEsIDI0MywgMjI5LCAyMTgsIDEyOSwgODEsIDIzMCwgMTI0LCAyNDcsIDE3MiwgOTgsIDQsIDEsIDI1NCwgMTIzLCA5OCwgCisgICAgNCwgMSwgMjUyLCAxNTIsIDk4LCA0LCAxLCAyNDMsIDEwNiwgOTgsIDQsIDEsIDI0NywgMTI4LCA5OCwgNCwgMSwgMjQ1LCAKKyAgICAxNTAsIDk4LCA0LCAxLCAyMTMsIDE2MCwgOTgsIDQsIDEsIDIxMCwgODksIDk4LCA0LCAxLCAyMTcsIDYwLCA5OCwgNCwgMSwgCisgICAgMjM1LCAyNTUsIDk4LCA0LCAxLCAyMzQsIDIzNCwgOTgsIDQsIDEsIDIzMywgODEsIDk4LCA0LCAxLCAyMzEsIDE4NSwgOTgsIAorICAgIDQsIDEsIDIyOSwgMTk1LCA5OCwgNCwgMSwgMjI2LCAxOTYsIDk4LCA0LCAxLCAyMjYsIDE3LCA5OCwgNCwgMSwgMjEwLCA3OCwgCisgICAgOTgsIDQsIDEsIDIyMywgMTcxLCA5OCwgNCwgMSwgMjIxLCAyNDMsIDk4LCA0LCAxLCAyMTcsIDUwLCA5OCwgNCwgMSwgMjE0LCAKKyAgICAxOTAsIDk4LCA0LCAxLCAyMjUsIDE0MCwgOTgsIDQsIDEsIDIzNCwgMTIxLCA5OCwgNCwgMSwgMjQyLCAyNDEsIDk4LCA0LCAKKyAgICAxLCAyMjQsIDczLCA5OCwgNCwgMSwgMjIwLCAyMCwgOTgsIDQsIDEsIDI1MCwgOTcsIDk4LCA0LCAxLCAyNTEsIDcsIDk4LCAKKyAgICA0LCAxLCAyMzUsIDEwMCwgOTgsIDQsIDEsIDI1MCwgNDAsIDk4LCA0LCAxLCAyNTAsIDE0MywgOTgsIDQsIDEsIDIxMSwgCisgICAgMTYzLCA5OCwgNCwgMSwgMjM1LCAxMTEsIDk4LCA0LCAxLCAyNDIsIDQzLCA5OCwgNCwgMSwgMjQxLCAyMzgsIDk4LCA0LCAxLCAKKyAgICAyNDEsIDE3NSwgOTgsIDQsIDEsIDIxMiwgMjIsIDk4LCA0LCAxLCAyNDIsIDQsIDk4LCA0LCAxLCAyNDEsIDY1LCA5OCwgNCwgCisgICAgMSwgMjEwLCAyNDYsIDk4LCA0LCAxLCAyNTQsIDIzMiwgMjE2LCAxMDgsIDEsIDE5MSwgMjE2LCAxMDgsIDEsIDIxMSwgOTksIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDk4LCAyMTYsIDEwOCwgMSwgMjExLCA4OCwgMjE2LCAxMDgsIDEsIDIxMSwgODYsIDIxNiwgCisgICAgMTA4LCAxLCAyNTIsIDMyLCAyNTUsIDE2LCAyMTEsIDgxLCAyMTYsIDEwOCwgMSwgMjExLCA4MSwgMjE2LCAxMDgsIDEsIAorICAgIDIxMSwgOTYsIDIxNiwgMTA4LCAxLCAyMTEsIDkzLCAyMTYsIDEwOCwgMSwgMjExLCA5NSwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgOTQsIDIxNiwgMTA4LCAxLCAyMTEsIDEyLCAyMTYsIDEwOCwgMSwgMjExLCA5MCwgMjE2LCAxMDgsIDEsIDIxMSwgNzksIAorICAgIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA3OSwgMjE2LCAxMDgsIDEsIDIxMSwgNzYsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDg0LCAyMTYsIDEwOCwgMSwgMjUyLCAzMiwgMjU1LCAxNiwgMjExLCA4NCwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIAorICAgIDg0LCAyMTYsIDEwOCwgMSwgMjExLCA4MywgMjE2LCAxMDgsIDEsIDIxMSwgMTAzLCAyMTYsIDEwOCwgMSwgMjExLCA3NywgCisgICAgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDc3LCAyMTYsIDEwOCwgMSwgMjExLCA2NiwgMjE2LCAxMDgsIDEsIDIxNSwgCisgICAgMTE1LCAyMTEsIDY2LCAyMTYsIDEwOCwgMSwgMjExLCA4LCAyMTYsIDEwOCwgMSwgMjExLCA0OSwgMjE2LCAxMDgsIDEsIAorICAgIDI1NCwgMjA3LCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAyMTEsIDc1LCAKKyAgICAyMTYsIDEwOCwgMSwgMjExLCA3NCwgMjE2LCAxMDgsIDEsIDIxMSwgNzEsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCAKKyAgICA4NSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDY5LCAyMTYsIDEwOCwgMSwgMjExLCA2NywgMjE2LCAxMDgsIDEsIAorICAgIDIxMCwgMjEyLCAyMTYsIDEwOCwgMSwgMjExLCA2NCwgMjE2LCAxMDgsIDEsIDIxMSwgNjMsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDg3LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgODcsIDIxNiwgMTA4LCAxLCAyNTMsIDE2MywgMjExLCA4NywgMjE2LCAKKyAgICAxMDgsIDEsIDIxMSwgNjIsIDIxNiwgMTA4LCAxLCAyMTEsIDYwLCAyMTYsIDEwOCwgMSwgMjExLCA2MSwgMjE2LCAxMDgsIDEsIAorICAgIDIxMSwgNTksIDIxNiwgMTA4LCAxLCAyMTEsIDU4LCAyMTYsIDEwOCwgMSwgMjExLCA5NywgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgNTYsIDIxNiwgMTA4LCAxLCAyMTEsIDU0LCAyMTYsIDEwOCwgMSwgMjExLCA1MywgMjE2LCAxMDgsIDEsIDIxMSwgNTIsIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDUwLCAyMTYsIDEwOCwgMSwgMjE3LCAzNCwgMjExLCA1MCwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgNDgsIDIxNiwgMTA4LCAxLCAyMTEsIDQ3LCAyMTYsIDEwOCwgMSwgMjEwLCAyNDQsIDIxNiwgMTA4LCA1OCwgMSwgMjMzLCAKKyAgICAxMjYsIDc4LCAyMTYsIDEwOCwgMjIwLCAxMzgsIDc4LCAyMTYsIDEwOCwgMTE2LCAyMzUsIDYzLCAyOSwgMywgMjMyLCAxNTUsIAorICAgIDI5LCAzLCAyMzAsIDE2MCwgMjksIDMsIDIyMiwgMjA5LCAyOSwgMywgMjE5LCA1NywgMjksIDMsIDIyMCwgNiwgMjksIDMsIAorICAgIDI1MSwgMjA0LCAyOSwgMywgMjE2LCA0MSwgMjksIDMsIDI0OSwgMjM3LCAyOSwgMywgMjI4LCA3MiwgMjksIDMsIDIyNywgCisgICAgMTMzLCAyOSwgMywgMjQyLCAxODAsIDIyNywgMCwgMjksIDMsIDIxMCwgMjIsIDI5LCAzLCAyNDcsIDE0MywgMjksIDMsIAorICAgIDI0OCwgMTA0LCAyOSwgMywgMjM1LCA2NywgMjksIDMsIDIxNiwgMTU1LCAyOSwgMywgMjUwLCA4NSwgMjksIDMsIDIyNSwgCisgICAgMTIwLCAyOSwgMywgMjI1LCAxNSwgMjksIDMsIDI0MiwgMjU1LCAyOSwgMywgMjQyLCAyNTEsIDI5LCAzLCAyNDIsIDI1MiwgCisgICAgMjksIDMsIDI0MiwgMjUzLCAyOSwgMywgMjE4LCAyMjMsIDI5LCAzLCAyMTgsIDE3OSwgMjksIDMsIDIxOCwgMTkyLCAyOSwgCisgICAgMywgMjE4LCAyMjIsIDI5LCAzLCAyMTgsIDE5NiwgMjksIDMsIDIxOCwgMTk3LCAyOSwgMywgMjE4LCAxODQsIDI5LCAzLCAKKyAgICAyNTAsIDIxMywgMjksIDMsIDI1MCwgMTkyLCAyOSwgMywgMjUwLCAxOTQsIDI5LCAzLCAyNTAsIDIxMiwgMjksIDMsIDI1MCwgCisgICAgMjEwLCAyOSwgMywgMjUwLCAyMTEsIDI5LCAzLCAyNTAsIDE5MywgMjksIDMsIDIwOSwgMjQzLCAyOSwgMywgMjA5LCAyMjEsIAorICAgIDI5LCAzLCAyMDksIDIzNCwgMjksIDMsIDIwOSwgMjQyLCAyOSwgMywgMjA5LCAyMzcsIDI5LCAzLCAyMDksIDIzOCwgMjksIAorICAgIDMsIDIwOSwgMjI2LCAyOSwgMywgMjUwLCAyMDgsIDI5LCAzLCAyNTAsIDE5NSwgMjksIDMsIDI1MCwgMTk3LCAyOSwgMywgCisgICAgMjUwLCAyMDcsIDI5LCAzLCAyNTAsIDIwNSwgMjksIDMsIDI1MCwgMjA2LCAyOSwgMywgMjUwLCAxOTYsIDI5LCAzLCAyMjMsIAorICAgIDIzNiwgMjksIDMsIDIyMywgMjI2LCAyOSwgMywgMjIzLCAyMzIsIDI5LCAzLCAyMjMsIDIzNSwgMjksIDMsIDIyMywgMjMzLCAKKyAgICAyOSwgMywgMjIzLCAyMzQsIDI5LCAzLCAyMjMsIDIzMSwgMjksIDMsIDIzMywgMTU5LCAyOSwgMywgMjMzLCAxNTEsIDI5LCAKKyAgICAzLCAyMzMsIDE1NCwgMjksIDMsIDIzMywgMTU4LCAyOSwgMywgMjMzLCAxNTUsIDI5LCAzLCAyMzMsIDE1NiwgMjksIDMsIAorICAgIDIzMywgMTUyLCAyOSwgMywgMjExLCAxMzAsIDI5LCAzLCAyMTEsIDEyMCwgMjksIDMsIDIxMSwgMTI2LCAyOSwgMywgMjExLCAKKyAgICAxMjksIDI5LCAzLCAyMTEsIDEyNywgMjksIDMsIDIxMSwgMTI4LCAyOSwgMywgMjExLCAxMjUsIDI5LCAzLCAyNDIsIDcxLCAKKyAgICAyOSwgMywgMjQyLCA2MiwgMjksIDMsIDI0MiwgNjUsIDI5LCAzLCAyNDIsIDcwLCAyOSwgMywgMjQyLCA2NywgMjksIDMsIAorICAgIDI0MiwgNjgsIDI5LCAzLCAyNDIsIDY0LCAzOCwgMzMsIDEsIDI1MiwgNzUsIDM4LCAzMywgMSwgMjEzLCAyNTUsIDM4LCAzMywgCisgICAgMSwgMjQyLCAyMzYsIDM4LCAzMywgMSwgMjQ4LCA5MCwgMzgsIDMzLCAxLCAyMTAsIDc0LCAzOCwgMzMsIDEsIDIxMCwgOTQsIAorICAgIDM4LCAzMywgMSwgMTc2LCAzOCwgMzMsIDEsIDI0NSwgMTc0LCAzOCwgMzMsIDEsIDI0NSwgMTU5LCAzOCwgMzMsIDEsIDI0NSwgCisgICAgMTUwLCAzOCwgMzMsIDEsIDc2LCAzOCwgMzMsIDEsIDIyNSwgMjIxLCAzOCwgMzMsIDEsIDI0NSwgOTIsIDM4LCAzMywgMSwgCisgICAgMjQ1LCA4MiwgMzgsIDMzLCAxLCAyMTcsIDIyLCAzOCwgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OCwgMzgsIDMzLCAKKyAgICAxLCAyNTAsIDEzMSwgMzgsIDMzLCAxLCAyMjAsIDEwMiwgMzgsIDMzLCAxLCAyMjAsIDY1LCAzOCwgMzMsIDEsIDI0NCwgODIsIAorICAgIDM4LCAzMywgMSwgMjQ1LCA4MSwgMzgsIDMzLCAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDYwLCAzOCwgMzMsIDEsIDI0NywgCisgICAgMTYxLCAzOCwgMzMsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgCisgICAgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTgzLCA2MSwgMzgsIDMzLCAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDM4LCAzMywgMSwgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzOCwgMzMsIDEsIDIzNSwgMTgzLCAyNTEsIDI0OSwgMjEwLCAxODMsIDQ0LCAyNTQsIAorICAgIDExMCwgMjE4LCA2MCwgMjMxLCAxNTQsIDQ0LCAyNTQsIDExMCwgMjQ2LCAxMTgsIDIxOCwgNjAsIDIzMSwgMTU0LCA0MywgCisgICAgMjE4LCA2MCwgMTI3LCA0NCwgMjE4LCA2MCwgMTI3LCA0MywgMjQ2LCAxMTgsIDIxOCwgNjAsIDEyNywgNDQsIDI0NiwgMTE4LCAKKyAgICAyMTgsIDYwLCAxMjcsIDIyMywgMTU3LCAyMzUsIDIwMiwgMjMxLCAxNTQsIDIyMywgMTU3LCAyNDYsIDExOCwgMjM1LCAyMDIsIAorICAgIDIzMSwgMTU0LCAyNDYsIDExOCwgMjE1LCAyNDEsIDIzMSwgMTU0LCA0MywgMjE1LCAyNDEsIDEyNywgNDQsIDIxNSwgMjQxLCAKKyAgICAxMjcsIDIyMywgMTU3LCAyMTgsIDIzNCwgNDMsIDIyMywgMTU3LCAyMjYsIDE5OCwgMTI3LCA0NCwgMjIzLCAxNTcsIDIyNiwgCisgICAgMTk4LCAxMjcsIDI0NSwgMjEwLCAyNDksIDE1OCwgMjI2LCAxMywgMjQ0LCAyMiwgMjI2LCAxMywgMjIzLCA0OSwgMjQ0LCAKKyAgICAyMiwgMjI2LCAxMywgMjQwLCAxNjUsIDI0NiwgMTE4LCAyMjYsIDI1MSwgMjQ2LCAxMDQsIDI1NCwgMTE5LCAyMTQsIDE1MywgCisgICAgMjU0LCAxMTksIDI0NiwgMTE4LCAyMjIsIDI0NywgMjU0LCAxMDksIDUyLCAyMjYsIDI0OCwgMjQwLCAxNjgsIDIzNSwgMTkzLCAKKyAgICAyMzUsIDIwMSwgMjI2LCA1OSwgMjUxLCAxNTQsIDI0MCwgMTY5LCAyLCAyNDgsIDEsIDIxNiwgODksIDIsIDIyMiwgMjM0LCAKKyAgICA0OCwgNDMsIDEyMSwgMjI2LCA1LCAxMjcsIDQ0LCAxMjEsIDIyNiwgNSwgMTI3LCAyMTYsIDg5LCAyLCA1OSwgNDgsIDIxNiwgCisgICAgODksIDIsIDU5LCA1MSwgNDMsIDY3LCAyNTIsIDE0MSwgMiwgMjI0LCA3LCA0NCwgNjcsIDI1MiwgMTQxLCAyLCAyMjQsIDcsIAorICAgIDIxNiwgMTQsIDQzLCAxNjMsIDEyNywgMjE2LCAxNCwgNDQsIDE2MywgMTI3LCAyNTEsIDE3NSwgNDMsIDE2MywgMTI3LCAKKyAgICAyNTEsIDE3NSwgNDQsIDE2MywgMTI3LCA0MywgMjE5LCAxODcsIDEwNCwgMTI3LCA0NCwgMjE5LCAxODcsIDEwNCwgMTI3LCAKKyAgICA0MywgNTIsIDIyNiwgMywgNDQsIDUyLCAyMjYsIDMsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCAxMjMsIAorICAgIDU5LCAxMTcsIDExMywgMTcwLCAyMjQsIDE0MCwgOTIsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDc4LCAKKyAgICAyMjMsIDQ5LCAyMjQsIDEzLCA3OCwgNjcsIDE4MiwgMjIyLCAyMzQsIDIyNSwgMTAsIDIxMSwgMjA5LCAyMjAsIDEzOCwgCisgICAgMjMwLCAyMjQsIDI0NywgMTIwLCAyMTUsIDk0LCAyNDksIDIxOSwgMjIzLCAxNTcsIDI0NywgMTIwLCAyMjMsIDE1NywgMjQ5LCAKKyAgICAyMTksIDIxNSwgOTQsIDIyMCwgMTUwLCAyNDgsIDIwNiwgMiwgNDMsIDI0MiwgMTA4LCAyNDgsIDIwNiwgMiwgNDQsIDI0MiwgCisgICAgMTA4LCAyMTUsIDk0LCAyNDgsIDIwNSwgMjE2LCAxNCwgMTYzLCAyMjEsIDE3MywgNTAsIDIxNSwgNTksIDI0OCwgMTU2LCAKKyAgICAyMTYsIDE0MywgMjQ4LCAxNTYsIDksIDM0LCAyMjMsIDc2LCA5LCAzNCwgMjUwLCAxMCwgOSwgMzQsIDIyMSwgMTc2LCAxMTAsIAorICAgIDksIDM0LCAyMjEsIDE3NiwgMTA1LCA5LCAzNCwgMjIxLCAxNzYsIDE1OCwgOSwgMzQsIDIyNSwgMTY3LCA5LCAzNCwgMjUxLCAKKyAgICAxNjMsIDksIDM0LCAyMTcsIDkyLCA5LCAzNCwgMjM0LCAzMywgMTEwLCA5LCAzNCwgMjM0LCAzMywgMTA1LCA5LCAzNCwgCisgICAgMjQ3LCAxNzAsIDksIDM0LCAyMjEsIDE3OSwgOSwgMzQsIDQsIDExMCwgOSwgMzQsIDQsIDEwNSwgOSwgMzQsIDIzMywgOTcsIAorICAgIDExMCwgOSwgMzQsIDIzMywgOTcsIDEwNSwgOSwgMzQsIDIzMywgOTcsIDE1OCwgOSwgMzQsIDIzMywgOTcsIDE2MSwgOSwgCisgICAgMzQsIDIxOSwgNjgsIDksIDM0LCAyMTYsIDE0NSwgOSwgMzQsIDIxOSwgNjYsIDExMCwgOSwgMzQsIDIxOSwgNjYsIDEwNSwgCisgICAgOSwgMzQsIDI0MSwgMjI4LCAxMTAsIDksIDM0LCAyNDEsIDIyOCwgMTA1LCA5LCAzNCwgMjQyLCAxNSwgOSwgMzQsIDIyMywgCisgICAgMTQ3LCA5LCAzNCwgMjUwLCA4MiwgOSwgMzQsIDIxOCwgMzcsIDksIDM0LCAyMzAsIDEyOCwgOSwgMzQsIDI0OCwgODgsIDksIAorICAgIDM0LCAyMzAsIDEyMCwgOSwgMzQsIDI1MCwgMjUsIDksIDM0LCAyMTIsIDQxLCAxMTAsIDksIDM0LCAyMTIsIDQxLCAxMDUsIAorICAgIDksIDM0LCAyNDQsIDk2LCA5LCAzNCwgMjI1LCAyMzIsIDExMCwgOSwgMzQsIDIyNSwgMjMyLCAxMDUsIDksIDM0LCAyMTksIAorICAgIDE2MCwgMTYzLCAyMTUsIDIzNiwgMjE1LCAxODgsIDksIDM0LCAyNDksIDE0NSwgOSwgMzQsIDI0NywgMTM2LCA5LCAzNCwgCisgICAgMjM1LCAxMzcsIDksIDM0LCAyNTEsIDE5OCwgNjQsIDI0OSwgMjUwLCA5LCAzNCwgMjQ1LCAxNSwgOSwgMzQsIDIxOCwgMjQ5LCAKKyAgICAxMTAsIDksIDM0LCAyMTgsIDI0OSwgMTA1LCA5LCAzNCwgMjUyLCAxNTQsIDksIDM0LCAyMTksIDE2NywgOSwgMzQsIDI1MSwgCisgICAgNjMsIDIxOSwgMTY3LCA5LCAzNCwgMjI5LCA5MCwgMTEwLCA5LCAzNCwgMjI5LCA5MCwgMTA1LCA5LCAzNCwgMjI5LCA5MCwgCisgICAgMTU4LCA5LCAzNCwgMjI5LCA5MCwgMTYxLCA5LCAzNCwgMjMxLCA0NiwgOSwgMzQsIDIyMCwgNTcsIDksIDM0LCAyMjMsIAorICAgIDE1MywgOSwgMzQsIDI0NSwgMzcsIDksIDM0LCAyMjYsIDIwOSwgOSwgMzQsIDI1MSwgMTMzLCAxMTAsIDksIDM0LCAyNTEsIAorICAgIDEzMywgMTA1LCA5LCAzNCwgMjMxLCA4NiwgOSwgMzQsIDIzMCwgMTIzLCA5LCAzNCwgMjQyLCAxNDAsIDExMCwgOSwgMzQsIAorICAgIDI0MiwgMTQwLCAxMDUsIDksIDM0LCAyNDIsIDE0MCwgMTU4LCA5LCAzNCwgMjE2LCAxMDYsIDksIDM0LCAyNDksIDI0OSwgOSwgCisgICAgMzQsIDIxMiwgOSwgMTEwLCA5LCAzNCwgMjEyLCA5LCAxMDUsIDksIDM0LCAyNTEsIDYzLCAyMjEsIDE3MCwgOSwgMzQsIAorICAgIDIxOSwgMTYwLCAyNDAsIDI0OCwgOSwgMzQsIDI0MCwgMjQ4LCA5LCAzNCwgMjUxLCA2MywgMjE5LCAyLCA5LCAzNCwgMjUxLCAKKyAgICA2MywgMjIwLCA1MiwgOSwgMzQsIDI0NCwgMzIsIDksIDM0LCAyNTEsIDYzLCAyNTAsIDIyOCwgOSwgMzQsIDIxOSwgMTYwLCAKKyAgICAyMTIsIDU3LCA5LCAzNCwgMjEyLCA1OCwgMTEwLCA5LCAzNCwgMjEyLCA1OCwgMTA1LCA5LCAzNCwgMjUwLCAyNywgOSwgMzQsIAorICAgIDI1MSwgNjMsIDI0MiwgMTY2LCA5LCAzNCwgMTk5LCAxMTAsIDksIDM0LCAxOTksIDEwNSwgOSwgMzQsIDI1MSwgNjMsIDIzMiwgCisgICAgMTM3LCA5LCAzNCwgMjUxLCA2MywgMjQzLCA4OCwgOSwgMzQsIDIzMCwgMTE5LCAxMTAsIDksIDM0LCAyMzAsIDExOSwgMTA1LCAKKyAgICA5LCAzNCwgMjIzLCAxNTksIDksIDM0LCAyNTEsIDIwNywgOSwgMzQsIDI1MSwgNjMsIDIxNywgNTYsIDIzMywgNTIsIDksIAorICAgIDM0LCAyNTEsIDYzLCAyMzMsIDUzLCA5LCAzNCwgMjUxLCA2MywgMjExLCAyMzksIDksIDM0LCAyNTEsIDYzLCAyNDQsIDQ2LCAKKyAgICA5LCAzNCwgMjQ1LCAyMTgsIDExMCwgOSwgMzQsIDI0NSwgMjE4LCAxMDUsIDksIDM0LCAyNDUsIDIxOCwgMTU4LCA5LCAzNCwgCisgICAgMjUxLCA2MywgMjQ1LCAyMTcsIDksIDM0LCAyNDEsIDIzNSwgOSwgMzQsIDI1MSwgNjMsIDI0MCwgMjQ1LCA5LCAzNCwgMjUxLCAKKyAgICAxOTQsIDksIDM0LCAyNDIsIDIyMiwgOSwgMzQsIDI1MSwgNjMsIDI0NCwgOTAsIDksIDM0LCAyNTEsIDYzLCAyNTEsIDIzNywgCisgICAgOSwgMzQsIDI1MSwgNjMsIDIyMiwgMSwgOSwgMzQsIDIxOSwgMTYwLCAyMTIsIDIsIDksIDM0LCAyMTksIDE2MCwgMjExLCAKKyAgICA0MSwgOSwgMzQsIDI1MSwgNjMsIDI0MywgMjQ0LCA5LCAzNCwgMjM1LCAxNDMsIDI0NSwgNDEsIDksIDM0LCAyNTEsIDYzLCAKKyAgICAyNDUsIDQxLCA5LCAzNCwgMjM1LCAxNDMsIDIxNiwgMTUsIDksIDM0LCAyNTEsIDYzLCAyMTYsIDE1LCA5LCAzNCwgMjM1LCAKKyAgICAxNDMsIDI0NiwgOTYsIDksIDM0LCAyNTEsIDYzLCAyNDYsIDk2LCA5LCAzNCwgMjE1LCA5MSwgOSwgMzQsIDIzNSwgMTQzLCAKKyAgICAyMTUsIDkxLCA5LCAzNCwgMjUxLCA2MywgMjE1LCA5MSwgNjAsIDM0LCAxMTAsIDYwLCAzNCwgMjMyLCAyMTMsIDYwLCAzNCwgCisgICAgMjQ3LCAxMjAsIDYwLCAzNCwgMjE5LCA5NSwgNjAsIDM0LCAyMjEsIDE3NSwgNjAsIDM0LCAxMDMsIDYwLCAzNCwgMTA1LCAKKyAgICA2MCwgMzQsIDIzMiwgMjM3LCA2MCwgMzQsIDIzMSwgMTg1LCA2MCwgMzQsIDIzMywgMzMsIDYwLCAzNCwgMjQ1LCAxMjksIAorICAgIDYwLCAzNCwgMTk1LCA2MCwgMzQsIDEyNCwgMjUxLCAxNjMsIDYwLCAzNCwgMjQ5LCAxNDcsIDYwLCAzNCwgMjQwLCAxMTEsIAorICAgIDYwLCAzNCwgMjE3LCA5MiwgNjAsIDM0LCAyMDQsIDI1MSwgMTYzLCA2MCwgMzQsIDIzNCwgMzIsIDYwLCAzNCwgMjI0LCAKKyAgICAyMjQsIDYwLCAzNCwgMjExLCAyMDIsIDYwLCAzNCwgMjE4LCAyNDMsIDYwLCAzNCwgNDQsIDIwNCwgMjUxLCAxNjMsIDYwLCAKKyAgICAzNCwgMjQxLCAxNzYsIDI0NSwgMTQ1LCA2MCwgMzQsIDIxNiwgMjQ3LCA2MCwgMzQsIDI0NywgMTcwLCA2MCwgMzQsIDIyMSwgCisgICAgMTc5LCA2MCwgMzQsIDI1MCwgMTAsIDYwLCAzNCwgMjI0LCAxODIsIDYwLCAzNCwgMjU0LCAyMTUsIDYwLCAzNCwgMjMwLCAKKyAgICAxMTAsIDYwLCAzNCwgMjQ1LCAxNDUsIDYwLCAzNCwgMjQ1LCAyMjMsIDYwLCAzNCwgMjIxLCAyMDAsIDYwLCAzNCwgMjQyLCAKKyAgICAxNzQsIDYwLCAzNCwgMjQyLCAxNzUsIDIxOSwgODEsIDYwLCAzNCwgMjQ1LCA0MCwgNjAsIDM0LCAyNTEsIDI0OCwgNjAsIAorICAgIDM0LCAyMTEsIDIyMSwgNjAsIDM0LCAyNTAsIDEwMSwgNjAsIDM0LCAyMjIsIDE5NiwgNjAsIDM0LCAyMzUsIDI1MSwgNjAsIAorICAgIDM0LCAyMTksIDc5LCA2MCwgMzQsIDIzMywgOTYsIDYwLCAzNCwgMjQ5LCAxNTYsIDYwLCAzNCwgMjE4LCAyMzcsIDYwLCAzNCwgCisgICAgMjMwLCAxMTUsIDYwLCAzNCwgMjIyLCAyMjQsIDYwLCAzNCwgMjExLCAyMDYsIDYwLCAzNCwgMjI2LCAxOTAsIDYwLCAzNCwgCisgICAgMjE1LCA5NywgNjAsIDM0LCAyNDYsIDgwLCA2MCwgMzQsIDIxOSwgMjUxLCAyMTYsIDE0NSwgNjAsIDM0LCAyNDYsIDExOCwgCisgICAgMjUwLCAxMCwgNjAsIDM0LCAxOTksIDIxOCwgMTA4LCA2MCwgMzQsIDExMywgMjQyLCAxMCwgNjAsIDM0LCAyMjAsIDAsIDYwLCAKKyAgICAzNCwgMjUxLCAxNjksIDYwLCAzNCwgMjE5LCA2NSwgNjAsIDM0LCAyNTEsIDEzNywgNjAsIDM0LCAyMTgsIDEzOCwgNjAsIAorICAgIDM0LCAyNDEsIDIyNywgNjAsIDM0LCAyNDIsIDI4LCA2MCwgMzQsIDI0NywgMTIzLCA2MCwgMzQsIDI0MiwgMTUsIDYwLCAzNCwgCisgICAgMjUxLCAxNTQsIDYwLCAzNCwgMjIzLCAxNDcsIDYwLCAzNCwgMjIxLCAxODcsIDYwLCAzNCwgMjQ3LCAxOTksIDYwLCAzNCwgCisgICAgMjUzLCAxNjgsIDYwLCAzNCwgMjE4LCAyMzQsIDYwLCAzNCwgMjI4LCA1MSwgNjAsIDM0LCAyMTgsIDM3LCA2MCwgMzQsIAorICAgIDIyMSwgMjExLCA2MCwgMzQsIDIzMCwgMTI4LCA2MCwgMzQsIDIxNSwgMjM1LCA2MCwgMzQsIDIzMywgMTIyLCA2MCwgMzQsIAorICAgIDIxOCwgMTI5LCA2MCwgMzQsIDI0OCwgODgsIDYwLCAzNCwgMjEyLCAyMSwgNjAsIDM0LCAyNDcsIDE0NiwgMjI4LCA1MSwgCisgICAgNjAsIDM0LCAyNDksIDIxNSwgNjAsIDM0LCAyNDMsIDIyMiwgNjAsIDM0LCAyNTAsIDIxLCA2MCwgMzQsIDIxOCwgMTQyLCAKKyAgICA2MCwgMzQsIDIxMiwgNDAsIDYwLCAzNCwgMjQ0LCA5NiwgNjAsIDM0LCAyNTAsIDE4LCA2MCwgMzQsIDI0NCwgMTYxLCA2MCwgCisgICAgMzQsIDUyLCAyMTEsIDE3OCwgNjAsIDM0LCAxNjMsIDIxNSwgMjM2LCAyMTUsIDE4OCwgNjAsIDM0LCAyMTksIDg5LCA2MCwgCisgICAgMzQsIDI0NCwgMTcxLCA2MCwgMzQsIDI0OSwgMTQ1LCA2MCwgMzQsIDI0NywgMTM2LCA2MCwgMzQsIDIyNCwgMTc5LCA2MCwgCisgICAgMzQsIDIzNSwgMTM3LCA2MCwgMzQsIDIzMSwgNjcsIDYwLCAzNCwgMjE2LCA4OCwgNjAsIDM0LCAyMTcsIDI0NSwgNjAsIDM0LCAKKyAgICAyMzIsIDIzMSwgNjAsIDM0LCAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyMCwgNjAsIDM0LCAyNTEsIDE5OCwgNjQsIDI0OSwgCisgICAgMjUwLCA2MCwgMzQsIDIxOSwgMTg4LCA2MCwgMzQsIDI0NiwgMTE4LCAyMTYsIDI0MiwgNjAsIDM0LCAyMTEsIDI1MywgNjAsIAorICAgIDM0LCAyMTksIDEwMywgNjAsIDM0LCAyNDcsIDE4NywgNjAsIDM0LCAyNDUsIDE1LCA2MCwgMzQsIDIxOSwgNSwgNjAsIDM0LCAKKyAgICA3NCwgNjAsIDM0LCAyMTgsIDEzMSwgNjAsIDM0LCAyMTgsIDI0OCwgNjAsIDM0LCAyMTUsIDI1NSwgNjAsIDM0LCAyNDIsIAorICAgIDE0NywgNjAsIDM0LCAyNTAsIDIxOCwgNjAsIDM0LCAyMTgsIDE2MCwgNjAsIDM0LCAyNTIsIDE1NCwgNjAsIDM0LCAyMjMsIAorICAgIDMxLCA2MCwgMzQsIDIxOSwgMTY3LCA2MCwgMzQsIDIzNSwgMTMwLCA2MCwgMzQsIDIyOSwgODksIDYwLCAzNCwgMjIwLCA1NywgCisgICAgNjAsIDM0LCAyNDQsIDE0OSwgNjAsIDM0LCAyMjYsIDIwOSwgNjAsIDM0LCAyNTQsIDExOCwgNjAsIDM0LCAyMjUsIDI5LCAKKyAgICA2MCwgMzQsIDI0NSwgMjI3LCA2MCwgMzQsIDI1MSwgMTMyLCA2MCwgMzQsIDIzMSwgODYsIDYwLCAzNCwgMjMwLCAxODMsIAorICAgIDYwLCAzNCwgMjIwLCAxNTYsIDYwLCAzNCwgMjUzLCAyNTIsIDYwLCAzNCwgMjMwLCAxMjMsIDYwLCAzNCwgMjE2LCAxOSwgCisgICAgNjAsIDM0LCAyMjYsIDE2NSwgNjAsIDM0LCAyNTEsIDIwMSwgNjAsIDM0LCAyMTgsIDEyNywgNjAsIDM0LCAyNDksIDIyNSwgCisgICAgNjAsIDM0LCAyNDIsIDEzOSwgNjAsIDM0LCAyMTYsIDEwNiwgNjAsIDM0LCAyMzUsIDIxNywgNjAsIDM0LCAyNTEsIDIxMSwgCisgICAgNjAsIDM0LCAyMTIsIDU4LCAyNDUsIDE0NSwgNjAsIDM0LCAyNDksIDI0OSwgNjAsIDM0LCAyMTIsIDgsIDYwLCAzNCwgMjIxLCAKKyAgICAxNzAsIDYwLCAzNCwgMjQwLCAyNDgsIDYwLCAzNCwgMjE5LCAyLCA2MCwgMzQsIDIxNCwgMjIsIDYwLCAzNCwgMjUyLCA3MiwgCisgICAgNjAsIDM0LCAyMjUsIDczLCA2MCwgMzQsIDI1MiwgMTc0LCA2MCwgMzQsIDIyMCwgNTIsIDYwLCAzNCwgMjIzLCAxMTAsIDYwLCAKKyAgICAzNCwgMjIyLCAxMjYsIDYwLCAzNCwgMjQ0LCAzMiwgNjAsIDM0LCAyNTEsIDIwMCwgNjAsIDM0LCAyNTAsIDIyOCwgNjAsIAorICAgIDM0LCAyNTEsIDIyNiwgNjAsIDM0LCAyMzAsIDEyNSwgNjAsIDM0LCAyMTIsIDU3LCA2MCwgMzQsIDI1MCwgMjcsIDYwLCAzNCwgCisgICAgMjExLCAyMzYsIDYwLCAzNCwgMjQ3LCAxODAsIDYwLCAzNCwgMjEzLCAxNjEsIDYwLCAzNCwgMjQyLCAxNjYsIDYwLCAzNCwgCisgICAgMjMyLCAxMzcsIDYwLCAzNCwgMjQzLCA4OCwgNjAsIDM0LCAyMzAsIDExOCwgNjAsIDM0LCAyMTksIDk0LCA2MCwgMzQsIAorICAgIDIxOSwgMjUxLCAyMTcsIDc2LCAyNTEsIDIzNywgNjAsIDM0LCAyMjMsIDE1OSwgNjAsIDM0LCAyNTEsIDIwNywgNjAsIDM0LCAKKyAgICAyMTEsIDE5NywgNjAsIDM0LCAyNDQsIDE5MCwgNjAsIDM0LCAyMzMsIDUyLCA2MCwgMzQsIDIxNywgNTYsIDIzMywgNTIsIAorICAgIDYwLCAzNCwgMjMzLCA0OCwgNjAsIDM0LCAyMTksIDMwLCA2MCwgMzQsIDIzMywgNTMsIDYwLCAzNCwgMjExLCAyMzksIDYwLCAKKyAgICAzNCwgMjQ0LCA0NiwgNjAsIDM0LCAyNDUsIDIxNywgNjAsIDM0LCAyNDEsIDIzNSwgNjAsIDM0LCAyNDQsIDAsIDYwLCAzNCwgCisgICAgMjQwLCAyNDUsIDYwLCAzNCwgMjUxLCAxOTQsIDYwLCAzNCwgMjE3LCA2MywgNjAsIDM0LCAyNDIsIDM0LCA2MCwgMzQsIAorICAgIDI0NCwgMTEzLCA2MCwgMzQsIDIyMiwgMjgsIDIxMSwgMjM2LCA2MCwgMzQsIDI1MCwgMjIwLCA2MCwgMzQsIDI0MiwgMjIyLCAKKyAgICA2MCwgMzQsIDI0NCwgOTAsIDYwLCAzNCwgMjUxLCAyMzcsIDYwLCAzNCwgMjIyLCAxLCA2MCwgMzQsIDI0OCwgNzQsIDYwLCAKKyAgICAzNCwgMjEyLCAyLCA2MCwgMzQsIDI0MSwgMjEwLCA2MCwgMzQsIDIxMSwgNDEsIDYwLCAzNCwgMjMwLCAxOTIsIDYwLCAzNCwgCisgICAgMjUxLCAyMjEsIDYwLCAzNCwgMjQ1LCAxNTUsIDYwLCAzNCwgMjQzLCAyNDQsIDYwLCAzNCwgMjE1LCAyMDksIDYwLCAzNCwgCisgICAgMjQ2LCA4MiwgNjAsIDM0LCAyMjMsIDE0MSwgNjAsIDM0LCAyMjgsIDUzLCA2MCwgMzQsIDI0NSwgNDEsIDYwLCAzNCwgMjE2LCAKKyAgICAxNSwgNjAsIDM0LCAyNDYsIDk2LCA2MCwgMzQsIDIxNSwgOTEsIDYwLCAzNCwgMjQ0LCA0OCwgMTA5LCAyNDgsIDM3LCAxMzUsIAorICAgIDQzLCAyMTYsIDQyLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDc3LCAyMTYsIDQyLCA1MSwgMTA5LCAyNDgsIDM3LCAKKyAgICAxMzUsIDQzLCAyMTYsIDQyLCAyMzAsIDIyNCwgMjIsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgNzcsIDIxNiwgNDIsIAorICAgIDIzMCwgMjI0LCAyMiwgNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCAyNDMsIDIyOSwgMjE4LCAxMCwgMTA5LCAyNDgsIDM3LCAKKyAgICAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCA0OCwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCA1MSwgCisgICAgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAyMzMsIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAKKyAgICAxMSwgMjQzLCAyNDMsIDIxNCwgMTYwLCAyMzMsIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIAorICAgIDIxNCwgMTYwLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAyMzIsIDEwOCwgMjMzLCAKKyAgICA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIyNiwgMTIyLCAxMDksIDIxOSwgMTgsIDEwOSwgMjQ5LCAyMTksIDEwOSwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCAyNDcsIDE3NywgNzgsIDIzNSwgMTMxLCAyMzUsIDIzNiwgMjE4LCAxNTksIDg3LCAxMDksIDIzNSwgCisgICAgMTU4LCA3OCwgMTA5LCAyNDksIDI1MiwgNzgsIDEwOSwgNTQsIDIxMCwgODYsIDQzLCAyNTQsIDExMCwgMTI3LCA0NCwgMjU0LCAKKyAgICAxMTAsIDEyNywgNDMsIDUyLCAyNTQsIDExMCwgMTI3LCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDQzLCAyNDksIDE2MSwgCisgICAgMTI3LCA0NCwgMjQ5LCAxNjEsIDEyNywgNDMsIDcxLCAyNDksIDE2MSwgMTI3LCA0NCwgNzEsIDI0OSwgMTYxLCAxMjcsIDQzLCAKKyAgICA4NSwgMjMzLCAyMCwgMTI3LCA0NCwgODUsIDIzMywgMjAsIDEyNywgMjI0LCAyMzcsIDc4LCAyNDMsIDMyLCA3OCwgNDMsIAorICAgIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQzLCA3MSwgMjMzLCAyMCwgMTI3LCA0NCwgCisgICAgNzEsIDIzMywgMjAsIDEyNywgNDMsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNDMsIDcxLCA0MiwgMTI3LCA0NCwgNzEsIDQyLCAxMjcsIDIxMiwgMzYsIDI0OCwgMTU2LCAyMjMsIDQ5LCA1MiwgCisgICAgMjI0LCAxOTEsIDIyMywgMjU0LCA3OCwgNTIsIDIyNCwgMTkxLCAyMjMsIDI1NCwgNzgsIDEyMSwgNTIsIDIyNCwgMTkxLCAKKyAgICAyMjMsIDI1NCwgNzgsIDIyNCwgMjM3LCAxNjQsIDI0NCwgMTkwLCAyNDIsIDgsIDIyNywgMTk4LCAxMTAsIDI0MiwgOCwgCisgICAgMjI3LCAxOTgsIDEwNSwgMjQyLCA4LCAyMjcsIDE5OCwgMTU4LCAyNDIsIDgsIDIyNywgMTk4LCAxNjEsIDI0MiwgOCwgMjI3LCAKKyAgICAxOTgsIDE4OSwgMjQyLCA4LCAyMjcsIDE5OCwgMTk0LCAyNDIsIDgsIDIyNywgMTk4LCAxOTgsIDI0MiwgOCwgMjI3LCAxOTgsIAorICAgIDE5NSwgMjQyLCA4LCAyMjcsIDE5OCwgMjAwLCAxMDksIDIzMywgMywgMTM4LCA3OCwgMTA5LCAyMjIsIDIyOCwgMTM4LCA3OCwgCisgICAgMTA5LCAyNDgsIDQ0LCAxMzgsIDc4LCAxMDksIDI0NSwgMTI4LCAxMzgsIDc4LCAyNCwgMjE5LCAxNTUsIDU5LCAxMzgsIDc4LCAKKyAgICAyNCwgNTIsIDU5LCAxMzgsIDc4LCAyMTIsIDMyLCAyNDgsIDE1NiwgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCA3OCwgNjcsIAorICAgIDIzNCwgMjMzLCAyMjMsIDc3LCAyLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMTY0LCAKKyAgICAyMTQsIDE2MCwgMjQyLCAyNywgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAyLCAyMTMsIDEzNSwgMjE5LCAzMSwgMTY0LCAyMTQsIAorICAgIDE2MCwgMjQyLCAyNywgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAxNjQsIDIzMiwgMTA4LCAyNDIsIDI3LCAzNywgMjI0LCAKKyAgICAyMzcsIDc4LCAxMDksIDIxNywgMywgMjMyLCAyMTQsIDI0NCwgMTQ2LCAyMjAsIDEzOCwgODcsIDI0MiwgOCwgMjI3LCAxOTgsIAorICAgIDIxNiwgMjQ3LCAyNDIsIDgsIDIyNywgMTk4LCAyMTUsIDczLCAyNDIsIDgsIDIyNywgMTk4LCAyMTYsIDE2MiwgNjcsIDEwOSwgCisgICAgMjM1LCAxNTgsIDc4LCAyMzEsIDE0MCwgNzgsIDIyNSwgMjU1LCAyNTQsIDE0MCwgNzgsIDEwOSwgNDUsIDIzNSwgMjM4LCAKKyAgICAxMDksIDE2MywgMjQ0LCAxMDYsIDIxOSwgMTgsIDE0MSwgMSwgNCwgNjEsIDE0MSwgMSwgNjEsIDE0MSwgMSwgNCwgNzMsIAorICAgIDE0MSwgMSwgNzMsIDE0MSwgMSwgNCwgNzAsIDE0MSwgMSwgNzAsIDE0MSwgMSwgNCwgNzUsIDE0MSwgMSwgNzUsIDE0MSwgMSwgCisgICAgNCwgNzYsIDE0MSwgMSwgNzYsIDE0MSwgMSwgMTc2LCAxNDEsIDEsIDI0MywgMTM1LCAxNDEsIDEsIDIzNCwgOTIsIDE0MSwgCisgICAgMSwgMjQyLCAyMTQsIDE0MSwgMSwgMjMzLCAyMTcsIDE0MSwgMSwgMjQyLCAxMTMsIDE0MSwgMSwgMjM0LCAxODIsIDE0MSwgCisgICAgMSwgMjQzLCA2MiwgMTQxLCAxLCAyMzQsIDI4LCAxNDEsIDEsIDI0MiwgMTc0LCAxNDEsIDEsIDIwNiwgMTQxLCAxLCAyMTAsIAorICAgIDExNiwgMTQxLCAxLCAyMTksIDE5MSwgMTQxLCAxLCAyMTAsIDQ0LCAxNDEsIDEsIDIxOCwgODMsIDE0MSwgMSwgMjEwLCAxMywgCisgICAgMTQxLCAxLCAyMjEsIDE4MSwgMTQxLCAxLCAyMTAsIDk0LCAxNDEsIDEsIDIxOSwgNTgsIDE0MSwgMSwgMjEwLCAyMywgMTQxLCAKKyAgICAxLCAyMTcsIDEwNSwgMTQxLCAxLCAyNDgsIDIyMSwgMTQxLCAxLCAyMTYsIDExNywgMTQxLCAxLCAyNDgsIDMsIDE0MSwgMSwgCisgICAgNCwgMjE1LCAxMTgsIDE0MSwgMSwgMjE1LCAxMTgsIDE0MSwgMSwgMjQ2LCA3OCwgMTQxLCAxLCAyMTcsIDIyLCAxNDEsIDEsIAorICAgIDI0OCwgOTAsIDE0MSwgMSwgMTExLCAxNDEsIDEsIDI0NywgMTQ1LCAxNDEsIDEsIDE5NywgMTQxLCAxLCAyMjgsIDIzMywgCisgICAgMTQxLCAxLCAyMjcsIDIzNywgMTQxLCAxLCAyMjksIDEwNywgMTQxLCAxLCAyMjgsIDc0LCAxNDEsIDEsIDE2MiwgMTQxLCAxLCAKKyAgICAyNTIsIDE5MSwgMTQxLCAxLCAxOTAsIDE0MSwgMSwgMjQxLCAxODAsIDE0MSwgMSwgMjUyLCA2LCAxNDEsIDEsIDIyNSwgCisgICAgMTA4LCAxNDEsIDEsIDI0MCwgMjIyLCAxNDEsIDEsIDI1MSwgMTI1LCAxNDEsIDEsIDIyNCwgMTUwLCAxNDEsIDEsIDI0MSwgCisgICAgMjM4LCAxNDEsIDEsIDI1MiwgNzUsIDE0MSwgMSwgMjI1LCAyMjEsIDE0MSwgMSwgMjQxLCA2OCwgMTQxLCAxLCAyNTEsIAorICAgIDIwNSwgMTQxLCAxLCAyMjUsIDE2LCAxNDEsIDEsIDE4NCwgMTQxLCAxLCAyMzAsIDIzMCwgMTQxLCAxLCAyMzAsIDEwMiwgCisgICAgMTQxLCAxLCAyMzEsIDkxLCAxNDEsIDEsIDIzMCwgMTYxLCAxNDEsIDEsIDQsIDE5MSwgMTQxLCAxLCAxOTEsIDE0MSwgMSwgCisgICAgNCwgMjEwLCAyMTIsIDE0MSwgMSwgMjEwLCAyMTIsIDE0MSwgMSwgNCwgMjEwLCAyNDQsIDE0MSwgMSwgMjEwLCAyNDQsIAorICAgIDE0MSwgMSwgMjA1LCAxNDEsIDEsIDIyMywgMzUsIDE0MSwgMSwgMjIyLCAxNDAsIDE0MSwgMSwgMjIzLCAxMjgsIDE0MSwgMSwgCisgICAgMjIyLCAyMTEsIDE0MSwgMSwgNCwgMjEyLCA2NSwgMTQxLCAxLCAyMTIsIDY1LCAxNDEsIDEsIDIxMSwgMjUwLCAxNDEsIDEsIAorICAgIDIxMiwgMjIsIDE0MSwgMSwgMjExLCAyMjcsIDE0MSwgMSwgMjMwLCAyNSwgMTQxLCAxLCAyMTIsIDExNiwgMTQxLCAxLCA0LCAKKyAgICAxNzYsIDE0MSwgMSwgNCwgMjM0LCAxODIsIDM4LCAyMzQsIDIwMSwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAzOCwgMjM0LCAKKyAgICAyMDEsIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMjM0LCAyMDEsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMjM0LCAyMDEsIAorICAgIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMTQxLCAyMzUsIDE1OCwgNzgsIDE0MSwgMjEzLCAxMzUsIDIzNSwgMTU4LCA3OCwgCisgICAgMTQxLCAyNDcsIDIyMSwgMjEwLCAyMjUsIDIzNCwgMjAxLCA1MiwgMjQwLCAxNjgsIDU2LCAxLCA0LCA2MSwgNTYsIDEsIDYxLCAKKyAgICA1NiwgMSwgNCwgNzMsIDU2LCAxLCA3MywgNTYsIDEsIDQsIDcwLCA1NiwgMSwgNzAsIDU2LCAxLCA0LCA3NSwgNTYsIDEsIAorICAgIDc1LCA1NiwgMSwgNCwgNzYsIDU2LCAxLCA3NiwgNTYsIDEsIDE3NiwgNTYsIDEsIDI0MywgMTM1LCA1NiwgMSwgMjM0LCA5MiwgCisgICAgNTYsIDEsIDI0MiwgMjE0LCA1NiwgMSwgMjMzLCAyMTcsIDU2LCAxLCAyNDIsIDExMywgNTYsIDEsIDIzNCwgMTgyLCA1NiwgCisgICAgMSwgMjQzLCA2MiwgNTYsIDEsIDIzNCwgMjgsIDU2LCAxLCAyNDIsIDE3NCwgNTYsIDEsIDIwNiwgNTYsIDEsIDIxMCwgMTE2LCAKKyAgICA1NiwgMSwgMjE5LCAxOTEsIDU2LCAxLCAyMTAsIDQ0LCA1NiwgMSwgMjE4LCA4MywgNTYsIDEsIDIxMCwgMTMsIDU2LCAxLCAKKyAgICAyMjEsIDE4MSwgNTYsIDEsIDIxMCwgOTQsIDU2LCAxLCAyMTksIDU4LCA1NiwgMSwgMjEwLCAyMywgNTYsIDEsIDIxNywgCisgICAgMTA1LCA1NiwgMSwgMjQ4LCAyMjEsIDU2LCAxLCAyMTYsIDExNywgNTYsIDEsIDI0OCwgMywgNTYsIDEsIDQsIDIxNSwgMTE4LCAKKyAgICA1NiwgMSwgMjE1LCAxMTgsIDU2LCAxLCAyNDYsIDc4LCA1NiwgMSwgMjE3LCAyMiwgNTYsIDEsIDI0OCwgOTAsIDU2LCAxLCAKKyAgICAxMTEsIDU2LCAxLCAyNDcsIDE0NSwgNTYsIDEsIDE5NywgNTYsIDEsIDIyOCwgMjMzLCA1NiwgMSwgMjI3LCAyMzcsIDU2LCAKKyAgICAxLCAyMjksIDEwNywgNTYsIDEsIDIyOCwgNzQsIDU2LCAxLCAxNjIsIDU2LCAxLCAyNTIsIDE5MSwgNTYsIDEsIDE5MCwgNTYsIAorICAgIDEsIDI0MSwgMTgwLCA1NiwgMSwgMjUyLCA2LCA1NiwgMSwgMjI1LCAxMDgsIDU2LCAxLCAyNDAsIDIyMiwgNTYsIDEsIDI1MSwgCisgICAgMTI1LCA1NiwgMSwgMjI0LCAxNTAsIDU2LCAxLCAyNDEsIDIzOCwgNTYsIDEsIDI1MiwgNzUsIDU2LCAxLCAyMjUsIDIyMSwgCisgICAgNTYsIDEsIDI0MSwgNjgsIDU2LCAxLCAyNTEsIDIwNSwgNTYsIDEsIDIyNSwgMTYsIDU2LCAxLCAxODQsIDU2LCAxLCAyMzAsIAorICAgIDIzMCwgNTYsIDEsIDIzMCwgMTAyLCA1NiwgMSwgMjMxLCA5MSwgNTYsIDEsIDIzMCwgMTYxLCA1NiwgMSwgNCwgMTkxLCA1NiwgCisgICAgMSwgMTkxLCA1NiwgMSwgNCwgMjEwLCAyMTIsIDU2LCAxLCAyMTAsIDIxMiwgNTYsIDEsIDQsIDIxMCwgMjQ0LCA1NiwgMSwgCisgICAgMjEwLCAyNDQsIDU2LCAxLCAyMDUsIDU2LCAxLCAyMjMsIDM1LCA1NiwgMSwgMjIyLCAxNDAsIDU2LCAxLCAyMjMsIDEyOCwgCisgICAgNTYsIDEsIDIyMiwgMjExLCA1NiwgMSwgNCwgMjEyLCA2NSwgNTYsIDEsIDIxMiwgNjUsIDU2LCAxLCAyMTEsIDI1MCwgNTYsIAorICAgIDEsIDIxMiwgMjIsIDU2LCAxLCAyMTEsIDIyNywgNTYsIDEsIDIzMCwgMjUsIDU2LCAxLCAyMTIsIDExNiwgNTYsIDEsIDQsIAorICAgIDE3NiwgNTYsIDEsIDQsIDIzNCwgMTgyLCA1NiwgMSwgMjE0LCAyNywgNTYsIDEsIDIxMywgMTc2LCA1NiwgMSwgMjEzLCAKKyAgICAyNTUsIDU2LCAxLCAyMTMsIDEzOCwgNTYsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM0LCAyMDEsIDIyNCwgMTczLCAyMTksIAorICAgIDMxLCA3OCwgNTYsIDIzNSwgMTU4LCA3OCwgNTYsIDIxMywgMTM1LCAyMzUsIDE1OCwgNzgsIDU2LCAyNDcsIDIyMSwgMjMzLCAKKyAgICAyNTUsIDI1MSwgMTg0LCAxLCAyNTMsIDE1OCwgMjUxLCAxODQsIDEsIDIyNiwgMTA1LCAyNTEsIDE4NCwgMSwgMTkzLCAyNTEsIAorICAgIDE4NCwgMSwgMjQ1LCA2LCAyNTEsIDE4NCwgMSwgMjQ5LCA2MCwgMjUxLCAxODQsIDEsIDIxNywgMTUyLCAyNTEsIDE4NCwgMSwgCisgICAgMjMwLCAyNSwgMjUxLCAxODQsIDEsIDE1NiwgMjUxLCAxODQsIDEsIDI0MywgMjAyLCAyNTEsIDE4NCwgMSwgMjM1LCAyMywgCisgICAgMjUxLCAxODQsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyMzUsIDE0NCwgMjUxLCAxODQsIDEsIDIyNCwgOTYsIDI1MSwgCisgICAgMTg0LCAxLCAyMTEsIDE3OCwgMjUxLCAxODQsIDEsIDIxMCwgODMsIDI1MSwgMTg0LCAxLCAyNTAsIDE1OCwgMjUxLCAxODQsIAorICAgIDEsIDIyMCwgMTA0LCAyNTEsIDE4NCwgMSwgMTUzLCAyNTEsIDE4NCwgMSwgMjEwLCAxNTksIDI1MSwgMTg0LCAxLCAyNTEsIAorICAgIDY2LCAyNTEsIDE4NCwgMSwgMjIyLCA5MSwgMjUxLCAxODQsIDEsIDYxLCAyNTEsIDE4NCwgMSwgNzYsIDI1MSwgMTg0LCAxLCAKKyAgICA3NSwgMjUxLCAxODQsIDEsIDI0NSwgMTk3LCAyNTEsIDE4NCwgMSwgMjU0LCAyMDEsIDI1MSwgMTg0LCAxLCAyNDUsIDE5NSwgCisgICAgMjUxLCAxODQsIDEsIDI1MywgMTkyLCAyNTEsIDE4NCwgMSwgMjI2LCAxMzQsIDI1MSwgMTg0LCAxLCAyNTQsIDEyMywgMjUxLCAKKyAgICAxODQsIDEsIDI0NSwgMTUwLCAyNTEsIDE4NCwgMSwgMjU0LCAxMTUsIDI1MSwgMTg0LCAxLCAyNDUsIDEzOCwgMjUxLCAxODQsIAorICAgIDEsIDI0NSwgOTIsIDI1MSwgMTg0LCAxLCA3MywgMjUxLCAxODQsIDEsIDcwLCAyNTEsIDE4NCwgMSwgMjM1LCAxNTYsIDI1MSwgCisgICAgMTg0LCAxLCAyMTQsIDEwNSwgMjUxLCAxODQsIDEsIDIyOSwgNzksIDI1MSwgMTg0LCAxLCAyNDIsIDE3OCwgMjUxLCAxODQsIAorICAgIDEsIDIzNiwgMzQsIDI0LCAxLCAyMzQsIDU4LCAyNCwgMSwgMjE4LCAyMTUsIDI0LCAxLCAyMzQsIDUxLCAyNCwgMSwgMjI4LCAKKyAgICAyMjYsIDI0LCAxLCAyMjgsIDIyNCwgMjQsIDEsIDIyOCwgMjIzLCAyNCwgMSwgMjE2LCAxMDEsIDI0LCAxLCAyMTgsIDIwNCwgCisgICAgMjQsIDEsIDIyMywgMjYsIDI0LCAxLCAyMjMsIDIxLCAyNCwgMSwgMjIzLCAxOCwgMjQsIDEsIDIyMywgMTEsIDI0LCAxLCAKKyAgICAyMjMsIDYsIDI0LCAxLCAyMjMsIDEsIDI0LCAxLCAyMjMsIDEyLCAyNCwgMSwgMjIzLCAyNCwgMjQsIDEsIDIzMCwgMjE3LCAKKyAgICAyNCwgMSwgMjI1LCA5NSwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjI1LCA4NCwgMjQsIDEsIDIxOSwgMTQ4LCAyNCwgMSwgCisgICAgMjE4LCAyMDksIDI0LCAxLCAyMzYsIDU2LCAyNCwgMSwgMjUwLCA0NiwgMjQsIDEsIDIxOCwgMjE5LCAyNCwgMSwgMjUwLCAKKyAgICAxMDYsIDI0LCAxLCAyMzQsIDExMCwgMjQsIDEsIDIxNiwgMTczLCAyNCwgMSwgMjI1LCAxMzEsIDI0LCAxLCAyNDEsIDE3MiwgCisgICAgMjQsIDEsIDYxLCAyNCwgMSwgMjU0LCAyNDMsIDI0LCAxLCAxOTEsIDI0LCAxLCAyMTEsIDkyLCAyNCwgMSwgMjQ1LCAxMTcsIAorICAgIDI0LCAxLCA3NSwgMjQsIDEsIDIxMSwgMzYsIDI0LCAxLCAyMTEsIDQ3LCAyNCwgMSwgNzYsIDI0LCAxLCAyMTIsIDY1LCAyNCwgCisgICAgMSwgMjEyLCA2MiwgMjQsIDEsIDIyNiwgMjM0LCAyNCwgMSwgMjEwLCAyNDQsIDI0LCAxLCA3MCwgMjQsIDEsIDIxMiwgMTEsIAorICAgIDI0LCAxLCAyMTIsIDIyLCAyNCwgMSwgMjExLCAyNTAsIDI0LCAxLCAyMTAsIDIxMiwgMjQsIDEsIDI0NSwgNTUsIDI0LCAxLCAKKyAgICAyMTEsIDgsIDI0LCAxLCA3MywgMjQsIDI0NCwgMTAzLCAyNCwgMSwgMjE4LCAyMTMsIDI0LCAxLCAyMjgsIDIxNiwgMjQsIDEsIAorICAgIDIyOCwgMjE4LCAyNCwgMSwgMjI4LCAyMjEsIDI0LCAxLCAyMjMsIDE5LCAyNCwgMSwgMjIzLCAwLCAyNCwgMSwgMjIzLCA4LCAKKyAgICAyNCwgMSwgMjIzLCAxMywgMjQsIDEsIDIyMiwgMjU0LCAyNCwgMSwgMjMwLCAyMTAsIDI0LCAxLCAyMzAsIDIwNywgMjQsIDEsIAorICAgIDIzMCwgMjExLCAyNCwgMSwgMjM0LCAyMjEsIDI0LCAxLCAyMjUsIDkwLCAyNCwgMSwgMjI1LCA3NiwgMjQsIDEsIDIyNSwgCisgICAgODIsIDI0LCAxLCAyMjUsIDc5LCAyNCwgMSwgMjI1LCA5MywgMjQsIDEsIDIyNSwgNzcsIDI0LCAxLCAyMzQsIDIxOSwgMjQsIAorICAgIDEsIDIzNCwgMjE3LCAyNCwgMSwgMjE5LCAxNDEsIDI0LCAxLCAyMTksIDEzOSwgMjQsIDEsIDIxOSwgMTMxLCAyNCwgMSwgCisgICAgMjE5LCAxMzYsIDI0LCAxLCAyMTksIDE0NiwgMjQsIDEsIDIyNiwgMzIsIDI0LCAxLCAyMTgsIDIxNiwgMjQsIDEsIDIxMSwgCisgICAgMjYsIDI0LCAxLCAyMTEsIDIyLCAyNCwgMSwgMjExLCAyMywgMjQsIDEsIDIzNCwgMjIwLCAyNCwgMSwgMjE4LCAyMTcsIDI0LCAKKyAgICAxLCAyMTEsIDMyLCAyNCwgMSwgMjEwLCAyMzgsIDI0LCAxLCAyMTAsIDIzNywgMjQsIDEsIDIxMCwgMjQwLCAyNCwgMSwgCisgICAgMjEwLCAyMDMsIDI0LCAxLCAyMTAsIDIwNCwgMjQsIDEsIDIxMCwgMjA3LCAyNCwgMSwgMjU0LCAzNCwgMjQsIDEsIDI1NCwgCisgICAgMjgsIDEwOSwgMjU0LCA5OSwgMjMyLCAyMDMsIDc4LCAxMDksIDI1NCwgOTksIDIyMywgNTAsIDc4LCAxMDksIDI1NCwgOTksIAorICAgIDEyMywgNzgsIDEwOSwgMjU0LCA5OSwgMTEzLCA3OCwgMTA5LCAyNTQsIDk5LCAxMzQsIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgCisgICAgMTEsIDc4LCAxMDksIDI1NCwgOTksIDIxNiwgMTQsIDc4LCAxMDksIDI1NCwgOTksIDIzMCwgMjI0LCA3OCwgMTA5LCAyNTQsIAorICAgIDk5LCAyNTEsIDE3NSwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCA5MiwgNzgsIDEwOSwgMjU0LCA5OSwgMjIxLCAxNzYsIDc4LCAKKyAgICAxMDksIDI1NCwgOTksIDIxNiwgMTY5LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIDQsIDc4LCAxMDksIDI1NCwgOTksIDI0MSwgCisgICAgMjI0LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDUsIDIyNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjMxLCAxODYsIDc4LCAyNTEsIAorICAgIDE4NCwgMSwgMjUxLCAxMjUsIDI1MSwgMTg0LCAxLCAyMTAsIDQ0LCAyNTEsIDE4NCwgMSwgMjM1LCAxMDgsIDI1MSwgMTg0LCAKKyAgICAxLCAyNDIsIDExMywgMjUxLCAxODQsIDEsIDI0NSwgMjA5LCAyNTEsIDE4NCwgMSwgMjQ1LCAxMzUsIDI1MSwgMTg0LCAxLCAKKyAgICAyMjYsIDE4MywgMjUxLCAxODQsIDEsIDIyNiwgMTg3LCAyNTEsIDE4NCwgMSwgMjM1LCAxNzksIDI1MSwgMTg0LCAxLCAyNTQsIAorICAgIDEwMSwgMjUxLCAxODQsIDEsIDIzNSwgMjI0LCAyNTEsIDE4NCwgMSwgMjE0LCAxNjgsIDI1MSwgMTg0LCAxLCAyMzYsIDE2LCAKKyAgICAyNTEsIDE4NCwgMSwgMjI5LCA1NywgMjUxLCAxODQsIDEsIDI1NCwgMTk1LCAyNTEsIDE4NCwgMSwgMjUzLCAxODcsIDI1MSwgCisgICAgMTg0LCAxLCAyNTQsIDEzNiwgMjUxLCAxODQsIDEsIDIyNiwgMjA0LCAyNTEsIDE4NCwgMSwgMjI2LCAxODksIDI1MSwgMTg0LCAKKyAgICAxLCAyMzUsIDIyMSwgMjUxLCAxODQsIDQwLCAxLCAyMjYsIDEwNSwgMjUxLCAxODQsIDQwLCAxLCAyMTcsIDE1MiwgMjUxLCAKKyAgICAxODQsIDQwLCAxLCAyMzUsIDIzLCAyNTEsIDE4NCwgNDAsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyNDIsIDI1MCwgCisgICAgMjUxLCAxODQsIDEsIDIzMiwgMjU1LCAyNTEsIDE4NCwgMSwgMjA5LCAyNTAsIDksIDIxOCwgMTAzLCAyMTcsIDE1MiwgOSwgCisgICAgMjE4LCAxMDMsIDIxMiwgNCwgOSwgMjE4LCAxMDMsIDIxMSwgMTU4LCA5LCAyMTgsIDEwMywgMjUxLCA3OSwgOSwgMjE4LCAKKyAgICAxMDMsIDIxNywgMjU0LCA5LCAyMTgsIDEwMywgMjQwLCAxNTgsIDksIDIxOCwgMTAzLCAyNDAsIDE2MiwgOSwgMjE4LCAxMDMsIAorICAgIDI0MCwgMjMxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTksIDksIDIxOCwgMTAzLCAyMTcsIDE1NSwgOSwgMjE4LCAxMDMsIDI0MCwgCisgICAgMTYxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTcsIDksIDIxOCwgMTAzLCAyNDAsIDIyOSwgOSwgMjE4LCAxMDMsIDI0MCwgMTYwLCAKKyAgICA5LCAyMTgsIDEwMywgMjQwLCAxNTYsIDksIDIxOCwgMTAzLCAyMzAsIDI1LCA5LCAyMTgsIDEwMywgMjQyLCA2MCwgOSwgCisgICAgMjE4LCAxMDMsIDIyMiwgOTEsIDksIDIxOCwgMTAzLCAyMjYsIDEwNSwgOSwgMjE4LCAxMDMsIDIxOSwgMjEsIDksIDIxOCwgCisgICAgMTAzLCAyNDksIDYwLCA5LCAyMTgsIDEwMywgMjQwLCAxNjMsIDksIDIxOCwgMTAzLCAyNDEsIDE5MCwgOSwgMjE4LCAxMDMsIAorICAgIDIxNywgMTY0LCA5LCAyMTgsIDEwMywgMjE3LCAyMzMsIDksIDIxOCwgMTAzLCAyMTgsIDE2OCwgOSwgMjE4LCAxMDMsIDIyMCwgCisgICAgMTEwLCA5LCAyMTgsIDEwMywgMjI1LCAyMjQsIDksIDIxOCwgMTAzLCAyMjQsIDk4LCA5LCAyMTgsIDEwMywgMjE2LCA0MywgCisgICAgOSwgMjE4LCAxMDMsIDIxNywgMTU0LCA5LCAyMTgsIDEwMywgMjE3LCAyNDQsIDksIDIxOCwgMTAzLCAyNDAsIDE3MCwgOSwgCisgICAgMjE4LCAxMDMsIDI0MCwgMTU1LCA5LCAyMTgsIDEwMywgMjI1LCAxNDksIDksIDIxOCwgMTAzLCAyMjQsIDk2LCA1NiwgMSwgCisgICAgNCwgMjMzLCAyMTcsIDU2LCAxLCA0LCAyMTksIDE5MSwgNTYsIDEsIDQsIDIxOCwgODMsIDU2LCAxLCA0LCAxMTEsIDU2LCAxLCAKKyAgICA0LCAyMjcsIDIzNywgNTYsIDEsIDQsIDE2MiwgNTYsIDEsIDQsIDI0MSwgMTgwLCA1NiwgMSwgNCwgMjQwLCAyMjIsIDU2LCAKKyAgICAxLCA0LCAyNDEsIDIzOCwgNTYsIDEsIDQsIDI0MSwgNjgsIDU2LCAxLCA0LCAyMzAsIDEwMiwgNTYsIDEsIDQsIDIwNSwgNTYsIAorICAgIDEsIDQsIDIyMywgMzUsIDU2LCAxLCA0LCAyMjIsIDE0MCwgNTYsIDEsIDQsIDIyMywgMTI4LCA1NiwgMSwgNCwgMjIyLCAKKyAgICAyMTEsIDg4LCAyNCwgMjM0LCA1OCwgODgsIDI0LCAyMjgsIDIyNiwgODgsIDI0LCAyMTYsIDEwMSwgODgsIDI0LCAyMjMsIAorICAgIDI2LCA4OCwgMjQsIDIzMCwgMjE3LCA4OCwgMjQsIDIyNSwgOTUsIDg4LCAyNCwgMjE5LCAxNDgsIDg4LCAyNCwgMjM2LCA1NiwgCisgICAgODgsIDI0LCAyNTAsIDQ2LCA4OCwgMjQsIDI1MCwgMTA2LCA4OCwgMjQsIDIzNCwgMTEwLCA4OCwgMjQsIDIxNiwgMTczLCAKKyAgICA4OCwgMjQsIDIyNSwgMTMxLCA4OCwgMjQsIDI0MSwgMTcyLCA4OCwgMjQsIDIzNCwgNTksIDYxLCA4OCwgMjQsIDIyOCwgCisgICAgMjI3LCA2MSwgODgsIDI0LCAyMTYsIDEwMiwgNjEsIDg4LCAyNCwgMjIzLCAyNywgNjEsIDg4LCAyNCwgMjMwLCAyMTgsIDYxLCAKKyAgICA4OCwgMjQsIDIyNSwgOTYsIDYxLCA4OCwgMjQsIDIxOSwgMTQ5LCA2MSwgODgsIDI0LCAyMzYsIDU3LCA2MSwgODgsIDI0LCAKKyAgICAyNTAsIDQ3LCA2MSwgODgsIDI0LCAyNTAsIDEwNywgNjEsIDg4LCAyNCwgMjM0LCAxMTEsIDYxLCA4OCwgMjQsIDIxNiwgCisgICAgMTc0LCA2MSwgODgsIDI0LCAyMjUsIDEzMiwgNjEsIDg4LCAyNCwgMjQxLCAxNzMsIDYxLCA4OCwgMjQsIDI1MCwgNDcsIDcwLCAKKyAgICA4OCwgMjM0LCAzLCAxMzUsIDIyNiwgMjE3LCA4OCwgMjM0LCAzLCAxMzUsIDE0NCwgMjQwLCAyMjIsIDg4LCAxNTQsIDExMCwgCisgICAgODgsIDE1NCwgMTA1LCA4OCwgMTU0LCAxNTgsIDg4LCAxNTQsIDE2MSwgODgsIDE1NCwgMTg5LCA4OCwgMTU0LCAxOTQsIDg4LCAKKyAgICAxNTQsIDE5OCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAyMDAsIDg4LCAxNTQsIDIxNiwgMjQ3LCA4OCwgMTU0LCAyMzAsIAorICAgIDEyOCwgODgsIDE1NCwgMjQ0LCA5NiwgODgsIDE1NCwgMjEyLCA0MCwgODgsIDE1NCwgMjExLCAyMTQsIDg4LCAxNTQsIDIzMSwgCisgICAgMzksIDg4LCAxNTQsIDI0NSwgMjIzLCA4OCwgMTU0LCAyMTgsIDM3LCA4OCwgMTU0LCAyMTgsIDEzMiwgODgsIDE1NCwgMjQxLCAKKyAgICAyNDQsIDg4LCAxNTQsIDIxOSwgNTQsIDg4LCAxNTQsIDIyOSwgMjA0LCA4OCwgMTU0LCAyMTksIDQsIDg4LCAxNTQsIDI0NCwgCisgICAgMTAyLCA4OCwgMTU0LCAyNDksIDIwMCwgODgsIDE1NCwgMjMzLCAxMjUsIDg4LCAxNTQsIDIyMywgNzEsIDg4LCAxNTQsIAorICAgIDI1MSwgMTUsIDg4LCAxNTQsIDIxOCwgODcsIDg4LCAxNTQsIDIxOCwgMjAsIDg4LCAxNTQsIDI0NSwgMTI3LCA4OCwgMTU0LCAKKyAgICAyMjMsIDYzLCA4OCwgMTU0LCAyNTQsIDE1MCwgODgsIDE1NCwgMjQ0LCAxMjgsIDg4LCAxNTQsIDIyMywgNjEsIDg4LCAxNTQsIAorICAgIDIyMCwgMTU2LCA4OCwgMTU0LCAyMjMsIDEyNywgMzcsIDE1NCwgMjI0LCAxMiwgMzcsIDE1NCwgMjM0LCA4MCwgMzcsIDE1NCwgCisgICAgMjIxLCAxOTgsIDM3LCAxNTQsIDIzMywgMjU1LCAzNywgNTQsIDIxNiwgMjQ4LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAKKyAgICAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjE2LCAxNjMsIDIyNiwgMTk3LCA4NSwgCisgICAgMjE4LCAyMzQsIDM3LCA1NCwgMjQ0LCAxNiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDQsIDExNSwgMjI2LCAKKyAgICAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMTksIDExMiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMjAsIAorICAgIDExNywgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDUsIDE4NSwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgCisgICAgMjI1LCAyNTEsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMCwgMzcsIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCAKKyAgICA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAyMTUsIDc0LCAxODksIDM3LCA1NCwgMjE1LCA3NCwgCisgICAgMTk0LCAzNywgNTQsIDIxNSwgNzQsIDE5OCwgMzcsIDU0LCAyMTUsIDc0LCAxOTUsIDM3LCA1NCwgMjE1LCA3NCwgMjAwLCAKKyAgICAzNywgNTQsIDIxNiwgMTYyLCAzNywgNTQsIDIxNiwgMTYzLCAxMTAsIDM3LCA1NCwgMjE2LCAxNjMsIDEwNSwgMzcsIDU0LCAKKyAgICAyMTYsIDE2MywgMTU4LCAzNywgNTQsIDIxNiwgMTYzLCAxNjEsIDM3LCA1NCwgMjE2LCAxNjMsIDE4OSwgMzcsIDI0LCAyMzQsIAorICAgIDU4LCAzNywgMjQsIDIyOCwgMjI2LCAzNywgMjQsIDIxNiwgMTAxLCAzNywgMjQsIDIyMywgMjYsIDM3LCAyNCwgMjMwLCAKKyAgICAyMTcsIDM3LCAyNCwgMjI1LCA5NSwgMzcsIDI0LCAyMTksIDE0OCwgMzcsIDI0LCAyMzYsIDU2LCAzNywgMjQsIDI1MCwgNDYsIAorICAgIDM3LCAyNCwgMjUwLCAxMDYsIDM3LCAyNCwgMjM0LCAxMTAsIDM3LCAyNCwgMjE2LCAxNzMsIDM3LCAyNCwgMjI1LCAxMzEsIAorICAgIDM3LCAyNCwgMjQxLCAxNzIsIDM3LCAyNCwgMjM0LCA1OSwgNjEsIDM3LCAyNCwgMjI4LCAyMjcsIDYxLCAzNywgMjQsIDIxNiwgCisgICAgMTAyLCA2MSwgMzcsIDI0LCAyMjMsIDI3LCA2MSwgMzcsIDI0LCAyMzAsIDIxOCwgNjEsIDM3LCAyNCwgMjI1LCA5NiwgNjEsIAorICAgIDM3LCAyNCwgMjE5LCAxNDksIDYxLCAzNywgMjQsIDIzNiwgNTcsIDYxLCAzNywgMjQsIDI1MCwgNDcsIDYxLCAzNywgMjQsIAorICAgIDI1MCwgMTA3LCA2MSwgMzcsIDI0LCAyMzQsIDExMSwgNjEsIDM3LCAyNCwgMjE2LCAxNzQsIDYxLCAzNywgMjQsIDIyNSwgCisgICAgMTMyLCA2MSwgMzcsIDI0LCAyNDEsIDE3MywgNjEsIDM3LCAyMzQsIDMsIDEzNSwgMjUwLCAxNDgsIDM3LCAyMzQsIDMsIAorICAgIDEzNSwgMjM1LCA0NywgMzcsIDI0LCAyMzYsIDU3LCA3MCwgMjM0LCAzLCAyMTgsIDE1OSwgODcsIDM3LCAxNTQsIDExMCwgCisgICAgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIDE1NCwgMTg5LCAzNywgMTU0LCAxOTQsIDM3LCAKKyAgICAxNTQsIDE5OCwgMzcsIDE1NCwgMTk1LCAzNywgMTU0LCAyMDAsIDM3LCAxNTQsIDIxNiwgMjQ3LCAzNywgMTU0LCAyMzAsIAorICAgIDEyOCwgMzcsIDE1NCwgMjQ0LCA5NiwgMzcsIDE1NCwgMjEyLCA0MCwgMzcsIDE1NCwgMjExLCAyMTQsIDM3LCAxNTQsIDIzMSwgCisgICAgMzksIDM3LCAxNTQsIDI0NSwgMjIzLCAzNywgMTU0LCAyMTgsIDM3LCAzNywgMTU0LCAyMTgsIDEzMiwgMzcsIDE1NCwgMjQxLCAKKyAgICAyNDQsIDM3LCAxNTQsIDIxOSwgNTQsIDM3LCAxNTQsIDIyOSwgMjA0LCAzNywgMTU0LCAyMTksIDQsIDM3LCAxNTQsIDI0NCwgCisgICAgMTAyLCAzNywgMTU0LCAyNDksIDIwMCwgMzcsIDE1NCwgMjMzLCAxMjUsIDM3LCAxNTQsIDIyMSwgMTc0LCAzNywgMTU0LCAKKyAgICAyMzEsIDE4OSwgMzcsIDE1NCwgMjQ0LCAxMzcsIDM3LCAxNTQsIDIxOCwgNDksIDM3LCAxNTQsIDI0NSwgMzQsIDM3LCAxNTQsIAorICAgIDIyNCwgMTg3LCAzNywgMTU0LCAyNTMsIDE5NiwgMzcsIDE1NCwgMjM1LCAxNTksIDM3LCAxNTQsIDIyMywgNjEsIDM3LCAKKyAgICAxNTQsIDI0OSwgMTY0LCAzNywgMTU0LCAyNDksIDE1NSwgMzcsIDE1NCwgMjQxLCAxNjUsIDM3LCAxNTQsIDI1MCwgMTc0LCAKKyAgICAzNywgMTU0LCAyMzIsIDExMCwgMzcsIDE1NCwgMjMzLCA0NiwgMzcsIDE1NCwgMjIyLCAyNTEsIDM3LCAxNTQsIDIzMSwgODMsIAorICAgIDM3LCAxNTQsIDIyMywgODcsIDM3LCAxNTQsIDIxOCwgODcsIDM3LCAxNTQsIDIxOCwgMjAsIDM3LCAxNTQsIDI0NSwgMTI3LCAKKyAgICAzNywgMTU0LCAyMjMsIDYzLCAzNywgMTU0LCAyNTQsIDE1MCwgMzcsIDE1NCwgMjI4LCAyMTIsIDM3LCA1NCwgMjE2LCAxNjMsIAorICAgIDE5NCwgMzcsIDU0LCAyMTYsIDE2MywgMTk4LCAzNywgNTQsIDIxNiwgMTYzLCAxOTUsIDM3LCA1NCwgMjE2LCAxNjMsIDIwMCwgCisgICAgMzcsIDU0LCAyNDQsIDE1LCAzNywgNTQsIDI0NCwgMTYsIDExMCwgMzcsIDU0LCAyNDQsIDE2LCAxMDUsIDM3LCA1NCwgMjQ0LCAKKyAgICAxNiwgMTU4LCAzNywgNTQsIDI0NCwgMTYsIDE2MSwgMzcsIDU0LCAyNDQsIDE2LCAxODksIDM3LCA1NCwgMjQ0LCAxNiwgCisgICAgMTk0LCAzNywgNTQsIDI0NCwgMTYsIDE5OCwgMzcsIDU0LCAyNDQsIDE2LCAxOTUsIDM3LCA1NCwgMjQ0LCAxNiwgMjAwLCAKKyAgICAzNywgNTQsIDI0NCwgMTE0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzUsIDEzMywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCisgICAgMjQ0LCAxNDgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzMSwgMTYwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNTQsIDQ3LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyMzEsIDEzMiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjM1LCA0NSwgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjM1LCA0NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjUzLCAxODgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyMCwgCisgICAgMTM2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjYsIDIzOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjI4LCA0MCwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCA4NSwgNDIsIDI0MSwgMTkwLCA0MiwgMjQ1LCA4OCwgNDIsIDI0NSwgNDMsIDIzMiwgCisgICAgMjE5LCAyMzIsIDI0MCwgNTAsIDM3LCA1NiwgNjEsIDM3LCA1NiwgNzMsIDM3LCA1NiwgNzAsIDM3LCA1NiwgNzUsIDM3LCAKKyAgICA1NiwgNzYsIDM3LCA1NiwgMTc2LCAzNywgNTYsIDIzNCwgOTIsIDM3LCA1NiwgMjMzLCAyMTcsIDM3LCA1NiwgMjM0LCAxODIsIAorICAgIDM3LCA1NiwgMjM0LCAyOCwgMzcsIDU2LCAyMDYsIDM3LCA1NiwgMjE5LCAxOTEsIDM3LCA1NiwgMjE4LCA4MywgMzcsIDU2LCAKKyAgICAyMjEsIDE4MSwgMzcsIDU2LCAyMTksIDU4LCAzNywgNTYsIDIxNywgMTA1LCAzNywgNTYsIDIxNiwgMTE3LCAzNywgNTYsIAorICAgIDIxNSwgMTE4LCAzNywgNTYsIDIxNywgMjIsIDM3LCA1NiwgMTExLCAzNywgNTYsIDE5NywgMzcsIDU2LCAyMjgsIDIzMywgCisgICAgMzcsIDU2LCAyMjcsIDIzNywgMzcsIDU2LCAyMjksIDEwNywgMzcsIDU2LCAyMjgsIDc0LCAzNywgNTYsIDE2MiwgMzcsIDU2LCAKKyAgICAyNDEsIDE4MCwgMzcsIDU2LCAyNDAsIDIyMiwgMzcsIDU2LCAyNDEsIDIzOCwgMzcsIDU2LCAyNDEsIDY4LCAzNywgNTYsIAorICAgIDE4NCwgMzcsIDU2LCAyMzAsIDIzMCwgMzcsIDU2LCAyMzAsIDEwMiwgMzcsIDU2LCAyMzEsIDkxLCAzNywgNTYsIDIzMCwgCisgICAgMTYxLCAzNywgNTYsIDE5MSwgMzcsIDU2LCAyMTAsIDIxMiwgMzcsIDU2LCAyMTAsIDI0NCwgMzcsIDU2LCAyMDUsIDM3LCAKKyAgICA1NiwgMjIzLCAzNSwgMzcsIDU2LCAyMjIsIDE0MCwgMzcsIDU2LCAyMjMsIDEyOCwgMzcsIDU2LCAyMjIsIDIxMSwgMzcsIAorICAgIDU2LCAyMTIsIDY1LCAzNywgNTYsIDIxMSwgMjUwLCAzNywgNTYsIDIxMiwgMjIsIDM3LCA1NiwgMjExLCAyMjcsIDQyLCAKKyAgICAyNTQsIDcxLCA0MiwgMjUzLCAyMzksIDQyLCAyNTQsIDk1LCA0MiwgMjU1LCAzMSwgNDIsIDIzNSwgMjI2LCA0MiwgMjM1LCAKKyAgICAxOTYsIDQyLCAyMTQsIDE2NiwgNDIsIDI0NSwgNjYsIDQyLCAyNDUsIDIwNiwgNDIsIDIyNiwgMTg2LCA0MiwgMjI2LCAxODAsIAorICAgIDQyLCAyMzQsIDI0NSwgNDIsIDIzNCwgMjE0LCA0MiwgMjM0LCAyMTEsIDQyLCAyNDMsIDkyLCA0MiwgMjQzLCAxMDEsIDQyLCAKKyAgICAyNDIsIDIwNCwgNDIsIDI0MiwgMjAwLCA0MiwgMjMzLCAxNTAsIDQyLCAyNDIsIDE5MywgNDIsIDIzNCwgNzIsIDQyLCAyMzQsIAorICAgIDcxLCA0MiwgMjM0LCA3MCwgNDIsIDIzNCwgNjksIDQyLCAyNDIsIDg2LCA0MiwgMjQyLCA4NSwgNDIsIDIzMywgMTkzLCA0MiwgCisgICAgMjMzLCAxOTUsIDQyLCAyMzQsIDE3OCwgNDIsIDIzNCwgMSwgNDIsIDIzNCwgOCwgNDIsIDIyMiwgMTYsIDQyLCAyMjEsIAorICAgIDIzNywgNDIsIDIxOSwgMTI5LCA0MiwgMjIwLCAxNDEsIDQyLCAyMjAsIDE0MCwgNDIsIDI0OCwgMjE4LCA0MiwgMjQ4LCAzNiwgCisgICAgNDIsIDI0NywgMTIxLCA0MiwgMjE2LCAzMiwgNDIsIDIyOSwgMjAwLCA0MiwgMjI4LCA0MSwgNDIsIDI0MiwgMzIsIDQyLCAKKyAgICAyMjYsIDg0LCA0MiwgMjI2LCA4MywgNDIsIDI1MiwgMTg4LCA0MiwgMjI1LCAxMDUsIDQyLCAyMjUsIDY5LCA0MiwgMjI1LCAKKyAgICA3MCwgNDIsIDI1MSwgMjM0LCA0MiwgMjQwLCAyMjEsIDQyLCAyNDAsIDIxNywgNDIsIDI1MSwgOTEsIDQyLCAyNDAsIDIwNCwgCisgICAgNDIsIDI0MSwgMjE1LCA0MiwgMjI1LCAxNTksIDQyLCAyMjUsIDE5NCwgNDIsIDI0MSwgMTk4LCA0MiwgMjI1LCAxOTEsIDQyLCAKKyAgICAyMjUsIDIwNywgNDIsIDI1MiwgNjEsIDQyLCAyMjUsIDYsIDQyLCAyNTEsIDE4MCwgNDIsIDI0MSwgNTYsIDQyLCAyMjQsIAorICAgIDI1MCwgNDIsIDI0MSwgNDgsIDQyLCAyNDEsIDUwLCA0MiwgMjMxLCAyMDEsIDQyLCAyMzEsIDE5NywgNDIsIDIzMSwgMjA2LCAKKyAgICA0MiwgMjMxLCAxNTAsIDQyLCAyMzEsIDE3NSwgNDIsIDIzMCwgMTk3LCA0MiwgMjMwLCAxNzYsIDQyLCAyMzAsIDE3NSwgNDIsIAorICAgIDIzMSwgNzQsIDQyLCAyMzEsIDcxLCA0MiwgMjMxLCA3NSwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIAorICAgIDIwMSwgNDIsIDIyMiwgMjI2LCA0MiwgMjIyLCAyMzAsIDQyLCAyMjIsIDExNywgNDIsIDIyMiwgMTExLCA0MiwgMjIzLCA4NSwgCisgICAgNDIsIDIyMywgODIsIDQyLCAyMTIsIDM4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjEwLCA4NiwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDExMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDEwNSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE1OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE2MSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE4OSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NCwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIwMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNiwgMjQ3LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjQ1LCAxNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAKKyAgICAyMTUsIDc2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE2LCAxNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAorICAgIDI0MCwgMjM5LCAyNDQsIDUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDQsIDExOCwgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjQwLCAyMzksIDIxOSwgMTE5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjIwLCAxMTksIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDUsIDE5MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIyOCwgCisgICAgMTk3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA3MywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAKKyAgICAyMzksIDIxNSwgNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDYzLCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDAsIDIzOSwgMjE1LCA2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNjksIDQyLCAyNDAsIAorICAgIDIzMCwgNDIsIDI0OCwgMjIxLCA0MiwgMjUzLCAxOTIsIDQyLCAxMzAsIDQyLCAyMjYsIDEyNSwgNDIsIDIyNSwgMjI1LCA0MiwgCisgICAgMjQ3LCAxNDcsIDQyLCAyNDcsIDE0OCwgMjE4LCAyMzMsIDQyLCAyNDcsIDE0OCwgMjQ5LCAxMDgsIDQyLCAyMzUsIDE1NiwgCisgICAgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyNDEsIDIxNiwgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDE3NCwgNDIsIAorICAgIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDc0LCA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDIzMSwgNzAsIDQyLCAyNDksIDE1NywgCisgICAgNDIsIDIyNiwgOTAsIDI1NCwgMTI1LCA0MiwgMTk3LCA0MiwgMjMwLCAxMDMsIDYxLCA0MiwgMTg0LCA0MiwgMTc2LCA0MiwgCisgICAgMjM0LCAxODUsIDQyLCAyMzEsIDEyOSwgNDIsIDI0MywgODAsIDQyLCAyNTEsIDE4LCA0MiwgMjM0LCAxODQsIDQyLCAyMjUsIAorICAgIDE1MCwgNDIsIDIyOSwgODEsIDQyLCAyMzAsIDEwMywgMjQ1LCA2LCA0MiwgMjMwLCAxMDMsIDI0MywgMjAyLCA0MiwgMjMxLCAKKyAgICAxNSwgNDIsIDIzNCwgMTM0LCA0MiwgMjQwLCAxNjMsIDQyLCAyMzQsIDk0LCA0MiwgMjMwLCAyMzIsIDQyLCAyNDIsIDIxNiwgCisgICAgNDIsIDIxNiwgMTE5LCA0MiwgMjMwLCAxMDMsIDE1NiwgNDIsIDIzMCwgMTY5LCA0MiwgMjQ3LCAxNTcsIDQyLCAyMzQsIDQwLCAKKyAgICA0MiwgMjQ0LCA0NSwgNDIsIDIyOCwgMTEyLCA0MiwgMjMwLCAxMDMsIDE5MywgNDIsIDIzMCwgMTY2LCA0MiwgMjQ5LCAyMzksIAorICAgIDQyLCAyMzQsIDM0LCA0MiwgMjMwLCAxNjcsIDIxOCwgMjMzLCA0MiwgMjQ5LCAyNDAsIDIxOCwgMjMzLCA0MiwgMjMyLCA1MCwgCisgICAgMjE4LCAyMzMsIDQyLCAyMzQsIDM1LCAyMTgsIDIzMywgNDIsIDIzMCwgMTY3LCAyNDksIDEwOCwgNDIsIDI0OSwgMjQwLCAKKyAgICAyNDksIDEwOCwgNDIsIDIzMiwgNTAsIDI0OSwgMTA4LCA0MiwgMjM0LCAzNSwgMjQ5LCAxMDgsIDQyLCAyMzIsIDUwLCAxMTcsIAorICAgIDIyMiwgOTEsIDQyLCAyMzIsIDUwLCAxMTcsIDIyMiwgOTIsIDIxOCwgMjMzLCA0MiwgMTkwLCA0MiwgMjMzLCAyNTEsIDQyLCAKKyAgICAyMzAsIDEwNSwgNDIsIDI0MiwgMTUxLCA0MiwgMjIzLCAxNzYsIDQyLCAyMjMsIDE3NywgMTE3LCAyMjIsIDkxLCA0MiwgCisgICAgMjIzLCAxNzcsIDExNywgMjIyLCA5MiwgMjE4LCAyMzMsIDQyLCAyMjQsIDE2MiwgNDIsIDIyOCwgMTMsIDQyLCAyMzAsIAorICAgIDEwMywgMjIyLCA5MSwgNDIsIDIzMCwgMTA0LCA0MiwgMjI0LCAxMTYsIDQyLCAyMjcsIDE3NiwgNDIsIDIzMCwgMTAzLCAKKyAgICAyMTQsIDEwNSwgNDIsIDIzMCwgNDksIDQyLCAyMzMsIDE4NSwgNDIsIDIzMCwgNTAsIDIzMSwgNzQsIDQyLCAyMjQsIDExNSwgCisgICAgNDIsIDIyNywgMTc1LCA0MiwgMjMwLCAxMDMsIDIxMiwgOTgsIDQyLCAyMzAsIDQzLCA0MiwgMjMzLCAxODMsIDQyLCAyMzAsIAorICAgIDQ0LCAyMzEsIDc0LCA0MiwgMjM1LCAyNCwgMjI2LCAyMjAsIDQyLCAyMzIsIDUwLCAyMjYsIDIyMCwgNDIsIDI1NCwgMTM2LCAKKyAgICA0MiwgMjUxLCAxNjAsIDQyLCAyNTAsIDIxNCwgNDIsIDI1MCwgMTkxLCA0MiwgMjUxLCA2NywgMTE3LCAyMzQsIDEzNCwgNDIsIAorICAgIDI0OSwgMjM4LCA0MiwgMjQ4LCAxNDIsIDQyLCAyNDIsIDcyLCA0MiwgMTYyLCA0MiwgMjQwLCAyMzEsIDQyLCAyMzUsIDI1NSwgCisgICAgNDIsIDIzNCwgNDcsIDQyLCAyMzQsIDM1LCAyNTAsIDI1MCwgNDIsIDIzMywgMjE5LCA0MiwgMjMyLCAxNTksIDQyLCAyMzIsIAorICAgIDE1OCwgNDIsIDIzMiwgMTQ3LCA0MiwgMjMyLCA2MywgNDIsIDIzMSwgMTMwLCAyMTksIDc5LCA0MiwgMjMwLCAxOTYsIDQyLCAKKyAgICAyMzAsIDE1MiwgNDIsIDIyNSwgMTQ4LCA0MiwgMjI1LCAxOSwgNDIsIDIyNCwgMjE5LCA0MiwgMjI0LCAyMTcsIDQyLCAyMTgsIAorICAgIDIyNywgNDIsIDIxOCwgMiwgNDIsIDIxMiwgMjQsIDQyLCAyMTQsIDEwNiwgMTE3LCAxOTMsIDQyLCAxMTUsIDExNywgMTkzLCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTEwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTA1LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTU4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTYxLCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTg5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk0LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk1LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjAwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE2LCAKKyAgICAyNDcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyNDUsIDE2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDYsIDIxNSwgNzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2NCwgMTA5LCAyMTcsIDMsIDE2LCAKKyAgICAzMSwgMjQ4LCAxNDYsIDI0NCwgNSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NCwgMTE4LCAxMDksIDIxNywgCisgICAgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE5LCAxMTksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMjAsIDExOSwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NSwgMTkwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgCisgICAgMjI4LCAxOTcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDczLCAxMDksIDIxNywgMywgMTYsIDMxLCAKKyAgICAyNDgsIDE0NiwgMjE1LCA2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjMsIDEwOSwgMjE3LCAzLCAKKyAgICAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2OSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNzAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIAorICAgIDY1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDYsIDIxNSwgNzIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY4LCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDgsIDE0NiwgMjE2LCAxNjIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2MSwgNDIsIDI0MywgCisgICAgMTE4LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDksIDE0MCwgMjQxLCAyMjMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIyMywgMTIyLCAyNDUsIDIyMywgMjQxLCAxOTIsIDMxLCAyNDcsIDIzMSwgMjUzLCAyMDcsIDIxNiwgMTk2LCAyNTIsIDU2LCAKKyAgICAyNDEsIDE5MiwgMzEsIDIxMCwgMjIzLCAyNDQsIDM4LCAyNDEsIDE5MiwgMzEsIDIxMiwgNTksIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ5LCAyMDMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1NCwgMywgMjQxLCAxOTIsIDMxLCAyNDEsIDYwLCAyMTYsIDM4LCAKKyAgICAyNDEsIDE5MiwgMzEsIDQsIDIxNywgNjEsIDI0MSwgMTkyLCAzMSwgMjE1LCAyMzcsIDI0MSwgMTkyLCAzMSwgMjI1LCAyMTksIAorICAgIDI0MSwgMTkyLCAzMSwgMjE4LCAxNTgsIDI0MSwgMTkyLCAzMSwgMjQ0LCAxMzksIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIAorICAgIDIyNCwgMjQwLCAyNDEsIDE5MiwgMzEsIDIzMCwgMTU1LCAyNDEsIDE5MiwgMzEsIDI0NSwgMTI2LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0NCwgMzksIDI0MSwgMTkyLCAzMSwgMjExLCAyMDcsIDIyNiwgMTk3LCAyMTYsIDE5NiwgMjQ4LCA4NiwgMjQxLCAxOTIsIAorICAgIDMxLCAyNTQsIDUxLCAyNDEsIDE5MiwgMzEsIDI0OSwgMTg1LCAyNDEsIDE5MiwgMzEsIDI1MSwgMjI3LCAyMTYsIDEzOCwgCisgICAgMjQxLCAxOTIsIDMxLCAyNDIsIDE0OSwgMjQxLCAxOTIsIDMxLCAyMTgsIDI0NSwgMjU0LCA3MCwgMjQxLCAxOTIsIDMxLCAKKyAgICAyMjMsIDUzLCAyNDEsIDE5MiwgMzEsIDIzNSwgMjIwLCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMTcsIDYxLCAyNDEsIAorICAgIDE5MiwgMzEsIDIzMCwgMTExLCAyNDksIDE1OSwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjI0LCAxOTcsIDI0MSwgMTkyLCAKKyAgICAzMSwgMjE2LCAxOTYsIDI1NSwgMTgsIDIxMiwgNDAsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MCwgOCwgMjQ0LCA5NiwgCisgICAgMjQxLCAxOTIsIDMxLCAyMzUsIDIzMywgMjQxLCAxOTIsIDMxLCAyNDYsIDU3LCAyNDEsIDE5MiwgMzEsIDIyMywgNTYsIAorICAgIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIyNCwgMjI0LCAyNDEsIDE5MiwgMzEsIDIyNCwgMTc3LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0OCwgMTYxLCA2NCwgMjE2LCAxOTYsIDIzMiwgMjMwLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDQsIDE3NCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMjYsIDE2MywgMjQxLCAxOTIsIDMxLCAyMjYsIDI0NCwgMjQxLCAxOTIsIDMxLCAyNDgsIDU5LCAyNDEsIAorICAgIDE5MiwgMzEsIDI0OCwgNzksIDI0MSwgMTkyLCAzMSwgMjM1LCAyNDcsIDI0MSwgMTkyLCAzMSwgMjUxLCAxNDksIDI0MSwgCisgICAgMTkyLCAzMSwgMjQ5LCAyMjEsIDIxNiwgNDIsIDIzMSwgNzYsIDI0MSwgMTkyLCAzMSwgMjQzLCA4NywgMjE2LCAzOCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMjQsIDEyNSwgMjE0LCAxNTQsIDI0MSwgMTkyLCAzMSwgMjI2LCAxNjIsIDI0MSwgMTkyLCAzMSwgMjE2LCAKKyAgICAxOTYsIDIxMiwgMTMsIDI0MSwgMTkyLCAzMSwgMjIzLCA0NSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUwLCAyMjAsIAorICAgIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MywgMjU1LCAyMTYsIDEzMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjM0LCAKKyAgICAxNzksIDIxOCwgMTM0LCAyMzAsIDExNSwgMjQxLCAxOTIsIDMxLCAyNDgsIDMyLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAKKyAgICAyMzEsIDE1MiwgMjMxLCAyMDIsIDI0MSwgMTkyLCAzMSwgMjU1LCAxOSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjEyLCAKKyAgICA1NCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjQzLCA0NywgMjExLCAyMzksIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIzNSwgNTIsIDIzMywgMTA3LCAyNDEsIDE5MiwgMzEsIDI0NywgMTg0LCAyNDEsIDE5MiwgMzEsIDIzMiwgMjIwLCAyNDEsIAorICAgIDE5MiwgMzEsIDIzNSwgMjIzLCAyMTUsIDE4NywgMjQxLCAxOTIsIDMxLCA0LCAyMjQsIDE5NywgMjQxLCAxOTIsIDMxLCAKKyAgICAyNTQsIDIxNywgMjQ5LCAyMTIsIDI0MSwgMTkyLCAzMSwgMjUyLCA1OSwgMjQ5LCAyMTIsIDgsIDMsIDIzNSwgMTYwLCA4LCAKKyAgICAzLCAyMzUsIDE1MywgOCwgMywgNzMsIDgsIDMsIDIzNSwgMTgyLCA4LCAzLCAyMzYsIDU4LCA4LCAzLCAyMzYsIDQxLCA4LCAKKyAgICAzLCAyMzYsIDYwLCA4LCAzLCAyMzYsIDU5LCA4LCAzLCAyNTMsIDIwNiwgOCwgMywgMjUzLCAxNjksIDgsIDMsIDYxLCA4LCAKKyAgICAzLCAyNTQsIDcyLCA4LCAzLCAyMTQsIDE2NCwgOCwgMywgMjE0LCAxNjcsIDgsIDMsIDIxNCwgMTY1LCA4LCAzLCAyMjYsIAorICAgIDE0MCwgOCwgMywgMjI2LCAxMTQsIDgsIDMsIDc2LCA4LCAzLCAyMjYsIDE3NSwgOCwgMywgMjQ1LCAzNSwgOCwgMywgNzUsIAorICAgIDgsIDMsIDIxMSwgMTk1LCA4LCAzLCAyNTEsIDIyOCwgOCwgMywgMjUxLCAyMjUsIDgsIDMsIDI1MiwgNiwgOCwgMywgMjUxLCAKKyAgICAyMzgsIDgsIDMsIDI1MSwgMjUxLCA4LCAzLCAyNTEsIDI1MCwgOCwgMywgMjUxLCAyNTMsIDgsIDMsIDI1MSwgMjUyLCA4LCAKKyAgICAzLCAyNTIsIDEyMSwgOCwgMywgMjUyLCAxMTMsIDgsIDMsIDI1MiwgMTkxLCA4LCAzLCAyNTIsIDE0MiwgOCwgMywgMjUxLCAKKyAgICAxMDEsIDgsIDMsIDI1MSwgMTA1LCA4LCAzLCAyNTEsIDEwMiwgOCwgMywgMjUxLCAxNzksIDgsIDMsIDI1MSwgMTYzLCA4LCAKKyAgICAzLCAyNTEsIDIwNSwgOCwgMywgMjUxLCAxODUsIDgsIDMsIDI1MiwgMjEsIDgsIDMsIDI1MiwgNzUsIDgsIDMsIDI1MiwgMzMsIAorICAgIDgsIDMsIDI1MSwgODcsIDgsIDMsIDI1MSwgODQsIDgsIDMsIDI1MSwgMTI1LCA4LCAzLCAyNTEsIDEwMCwgOCwgMywgMjUxLCAKKyAgICA5NCwgOCwgMywgMjUxLCA5OCwgOCwgMywgMjUxLCA3MiwgOCwgMywgMjUxLCA3MCwgOCwgMywgMjUxLCA3NywgOCwgMywgCisgICAgMjUxLCA3NSwgOCwgMywgMjUxLCA3MywgOCwgMywgMjUxLCA3NCwgOCwgMywgMjI1LCA0OSwgOCwgMywgMjI1LCA0NSwgOCwgCisgICAgMywgMjI1LCAxMDgsIDgsIDMsIDIyNSwgNTksIDgsIDMsIDIyNSwgNzUsIDgsIDMsIDIyNSwgMTAyLCA4LCAzLCAyMjUsIDk4LCAKKyAgICA4LCAzLCAyMjUsIDI0MCwgOCwgMywgMjI1LCAyMzAsIDgsIDMsIDE5MCwgOCwgMywgMjI2LCAyMSwgOCwgMywgMjI0LCAxMzUsIAorICAgIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEzNiwgOCwgMywgMjI0LCAyMzMsIDgsIDMsIDIyNCwgMjIyLCA4LCAzLCAKKyAgICAyMjUsIDE2LCA4LCAzLCAyMjQsIDI0NSwgOCwgMywgMjI0LCAxMjEsIDgsIDMsIDIyNCwgMTE3LCA4LCAzLCAyMjQsIDE1MCwgCisgICAgOCwgMywgMjI0LCAxMzQsIDgsIDMsIDIyNCwgMTI2LCA4LCAzLCAyMjQsIDEzMiwgOCwgMywgMjI0LCAxMDAsIDgsIDMsIAorICAgIDIyNCwgOTksIDgsIDMsIDIyNCwgMTA0LCA4LCAzLCAyMjQsIDEwMywgOCwgMywgMjI0LCAxMDEsIDgsIDMsIDIyNCwgMTAyLCAKKyAgICA4LCAzLCAyNTIsIDk2LCA4LCAzLCAyNTIsIDk1LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCA5NywgOCwgMywgMjUyLCAKKyAgICA5OSwgOCwgMywgMjUyLCA5OCwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTAwLCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgCisgICAgMjUyLCAxMDcsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAyNTIsIDEwOSwgOCwgMywgMjUyLCA4NywgOCwgMywgMjUyLCA4OSwgCisgICAgOCwgMywgMjUyLCA4OCwgOCwgMywgMjUyLCA5MiwgOCwgMywgMjUyLCA5MSwgOCwgMywgMjUyLCA5NCwgOCwgMywgMjUyLCAKKyAgICA5MywgOCwgMywgMjUyLCAxMDMsIDgsIDMsIDI1MiwgMTA2LCA4LCAzLCAyNTIsIDEwNCwgOCwgMywgMjUyLCA4MywgOCwgMywgCisgICAgMjUyLCA4MiwgOCwgMywgMjUyLCA5MCwgOCwgMywgMjUyLCA4NiwgOCwgMywgMjUyLCA4NCwgOCwgMywgMjUyLCA4NSwgOCwgCisgICAgMywgMjUyLCA3OSwgOCwgMywgMjUyLCA3OCwgOCwgMywgMjUyLCA4MSwgOCwgMywgMjUyLCA4MCwgOCwgMywgMjI5LCAxNjksIAorICAgIDgsIDMsIDIyOSwgMTY4LCA4LCAzLCAyMjksIDE3NCwgOCwgMywgMjI5LCAxNzAsIDgsIDMsIDIyOSwgMTcxLCA4LCAzLCAKKyAgICAyMjksIDE3MywgOCwgMywgMjI5LCAxNzIsIDgsIDMsIDIyOSwgMTc3LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzksIAorICAgIDgsIDMsIDIyOSwgMTc4LCA4LCAzLCAyMjksIDE2NSwgOCwgMywgMjI5LCAxNjQsIDgsIDMsIDIyOSwgMTY3LCA4LCAzLCAKKyAgICAyMjksIDE2NiwgOCwgMywgMjI5LCAxNTgsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjEsIAorICAgIDgsIDMsIDIyOSwgMTU5LCA4LCAzLCAyMjksIDE2MCwgOCwgMywgMjI5LCAxNTIsIDgsIDMsIDIyOSwgMTUxLCA4LCAzLCAKKyAgICAyMjksIDE1NiwgOCwgMywgMjI5LCAxNTUsIDgsIDMsIDIyOSwgMTUzLCA4LCAzLCAyMjksIDE1NCwgOCwgMywgMjQxLCAxMTAsIAorICAgIDgsIDMsIDI0MSwgMTA5LCA4LCAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTEsIDgsIDMsIDI0MSwgMTEyLCA4LCAzLCAKKyAgICAyNDEsIDExNCwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExNywgOCwgMywgMjQxLCAxMjAsIAorICAgIDgsIDMsIDI0MSwgMTE5LCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCAxMDMsIDgsIDMsIDI0MSwgMTAyLCA4LCAzLCAKKyAgICAyNDEsIDEwNiwgOCwgMywgMjQxLCAxMDUsIDgsIDMsIDI0MSwgMTA4LCA4LCAzLCAyNDEsIDEwNywgOCwgMywgMjQxLCA5NywgCisgICAgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCAxMDQsIDgsIDMsIDI0MSwgMTAwLCA4LCAzLCAyNDEsIDk4LCA4LCAzLCAyNDEsIAorICAgIDk5LCA4LCAzLCAyNDEsIDkxLCA4LCAzLCAyNDEsIDk1LCA4LCAzLCAyNDEsIDk0LCA4LCAzLCAyNDEsIDkyLCA4LCAzLCAKKyAgICAyNDEsIDkzLCA4LCAzLCAyMzAsIDE3MiwgOCwgMywgMjMwLCAxNzEsIDgsIDMsIDIzMCwgMjMwLCA4LCAzLCAyMzAsIDE3OCwgCisgICAgOCwgMywgMjMwLCAyMDMsIDgsIDMsIDIzMCwgMjIxLCA4LCAzLCAyMzAsIDIxOSwgOCwgMywgMjMxLCAxMzksIDgsIDMsIAorICAgIDIzMSwgMTM0LCA4LCAzLCAxODQsIDgsIDMsIDIzMSwgMTcyLCA4LCAzLCAyMzAsIDc0LCA4LCAzLCAyMzAsIDczLCA4LCAzLCAKKyAgICAyMzAsIDc3LCA4LCAzLCAyMzAsIDc1LCA4LCAzLCAyMzAsIDEyMSwgOCwgMywgMjMwLCAxMDcsIDgsIDMsIDIzMCwgMTYxLCAKKyAgICA4LCAzLCAyMzAsIDEyNiwgOCwgMywgMjMxLCAyNiwgOCwgMywgMjMxLCA5MSwgOCwgMywgMjMwLCA1NSwgOCwgMywgMjMwLCAKKyAgICA1MSwgOCwgMywgMjMwLCAxMDIsIDgsIDMsIDIzMCwgNzAsIDgsIDMsIDIzMCwgNjMsIDgsIDMsIDIzMCwgNjgsIDgsIDMsIAorICAgIDIzMCwgMjgsIDgsIDMsIDIzMCwgMjcsIDgsIDMsIDIzMCwgMzMsIDgsIDMsIDIzMCwgMzAsIDgsIDMsIDI0NCwgODMsIDgsIAorICAgIDMsIDI0NCwgNzgsIDgsIDMsIDI0NCwgMTIxLCA4LCAzLCAyNDQsIDk4LCA4LCAzLCAyNDQsIDE2NywgOCwgMywgMjQ0LCAKKyAgICAxNTgsIDgsIDMsIDI0NCwgMTk2LCA4LCAzLCAyNDQsIDE3MCwgOCwgMywgMjQ0LCAzLCA4LCAzLCAyNDQsIDQzLCA4LCAzLCAKKyAgICAyNDQsIDI3LCA4LCAzLCAyNDMsIDIxOCwgOCwgMywgMjQzLCAyMTcsIDgsIDMsIDI0MywgMjM0LCA4LCAzLCAyNDMsIDIyMywgCisgICAgOCwgMywgMjQzLCAyMjEsIDgsIDMsIDI0MywgMjIyLCA4LCAzLCAyNDMsIDIwNSwgOCwgMywgMjQzLCAyMDQsIDgsIDMsIAorICAgIDI0MywgMjA4LCA4LCAzLCAyNDMsIDIwNiwgOCwgMywgMjEzLCAxNDQsIDgsIDMsIDIxMywgMTM5LCA4LCAzLCAyMTMsIDE3NiwgCisgICAgOCwgMywgMjEzLCAxNTMsIDgsIDMsIDIxMywgMTY2LCA4LCAzLCAyMTMsIDE2MywgOCwgMywgMjEzLCAxNjgsIDgsIDMsIAorICAgIDIxMywgMTY3LCA4LCAzLCAyMTQsIDcsIDgsIDMsIDIxNCwgMiwgOCwgMywgMjE0LCAyNywgOCwgMywgMjE0LCAxOCwgOCwgMywgCisgICAgMjEzLCAxMjUsIDgsIDMsIDIxMywgMTIxLCA4LCAzLCAyMTMsIDEzOCwgOCwgMywgMjEzLCAxMjYsIDgsIDMsIDIxMywgMTc4LCAKKyAgICA4LCAzLCAyMTMsIDI0NCwgOCwgMywgMjEyLCAxMTAsIDgsIDMsIDIxMiwgMTA4LCA4LCAzLCAyMTIsIDExNiwgOCwgMywgCisgICAgMjEyLCAxMTMsIDgsIDMsIDIxMiwgMTExLCA4LCAzLCAyMTIsIDExMiwgOCwgMywgMjEyLCAxMDIsIDgsIDMsIDIxMiwgMTAxLCAKKyAgICA4LCAzLCAyMTIsIDEwNiwgOCwgMywgMjEyLCAxMDUsIDgsIDMsIDIxMiwgMTAzLCA4LCAzLCAyMTIsIDEwNCwgOCwgMywgCisgICAgMjQ3LCAxNzgsIDgsIDMsIDI0NywgMTY2LCA4LCAzLCAyNDgsIDMsIDgsIDMsIDI0NywgMjAzLCA4LCAzLCAyNDcsIDIzNiwgCisgICAgOCwgMywgMjQ3LCAyNDAsIDgsIDMsIDI0NywgMjM5LCA4LCAzLCAyNDgsIDE1MiwgOCwgMywgMjQ4LCAxNDcsIDgsIDMsIAorICAgIDI0OCwgMjIxLCA4LCAzLCAyNDgsIDE3MiwgOCwgMywgMjQ2LCA2MiwgOCwgMywgMjQ2LCA2MywgOCwgMywgMjQ3LCAxMjAsIAorICAgIDgsIDMsIDI0NiwgMTAyLCA4LCAzLCAyNDcsIDE0NSwgOCwgMywgMjQ3LCAxMjIsIDgsIDMsIDI0OCwgMzAsIDgsIDMsIDI0OCwgCisgICAgOTAsIDgsIDMsIDI0OCwgNDUsIDgsIDMsIDI0NiwgNTMsIDgsIDMsIDI0NiwgNTEsIDgsIDMsIDI0NiwgNzgsIDgsIDMsIAorICAgIDI0NiwgNjEsIDgsIDMsIDI0NiwgNTYsIDgsIDMsIDI0NiwgNTksIDgsIDMsIDIxNiwgNjcsIDgsIDMsIDIxNiwgNjEsIDgsIAorICAgIDMsIDIxNiwgMTE3LCA4LCAzLCAyMTYsIDc2LCA4LCAzLCAyMTYsIDEwOSwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNiwgCisgICAgMTEwLCA4LCAzLCAyMTcsIDQ2LCA4LCAzLCAyMTcsIDMzLCA4LCAzLCAyMTcsIDEwNSwgOCwgMywgMjE3LCA1NCwgOCwgMywgCisgICAgMjE1LCAxMDIsIDgsIDMsIDIxNSwgMTAxLCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE1LCAxMDMsIDgsIDMsIDIxNiwgNSwgCisgICAgOCwgMywgMjE2LCAxLCA4LCAzLCAxMTEsIDgsIDMsIDIxNiwgMTMsIDgsIDMsIDIxNiwgMjEzLCA4LCAzLCAyMTcsIDIyLCA4LCAKKyAgICAzLCAyMTYsIDIzNywgOCwgMywgMjE1LCA4OCwgOCwgMywgMjE1LCA4MywgOCwgMywgMjE1LCAxMTgsIDgsIDMsIDIxNSwgCisgICAgMTAwLCA4LCAzLCAyMTUsIDg5LCA4LCAzLCAyMTUsIDk4LCA4LCAzLCAyNDgsIDEwNywgOCwgMywgMjQ4LCAxMDYsIDgsIDMsIAorICAgIDI0OCwgMTEyLCA4LCAzLCAyNDgsIDEwOCwgOCwgMywgMjQ4LCAxMDksIDgsIDMsIDI0OCwgMTExLCA4LCAzLCAyNDgsIDExMCwgCisgICAgOCwgMywgMjQ4LCAxMjgsIDgsIDMsIDI0OCwgMTI3LCA4LCAzLCAyNDgsIDEzNSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIAorICAgIDI0OCwgOTcsIDgsIDMsIDI0OCwgOTksIDgsIDMsIDI0OCwgOTgsIDgsIDMsIDI0OCwgMTAyLCA4LCAzLCAyNDgsIDEwMSwgOCwgCisgICAgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTAzLCA4LCAzLCAyNDgsIDEyMCwgOCwgMywgMjQ4LCAxMjMsIDgsIDMsIDI0OCwgCisgICAgMTIxLCA4LCAzLCAyNDgsIDkzLCA4LCAzLCAyNDgsIDkyLCA4LCAzLCAyNDgsIDEwMCwgOCwgMywgMjQ4LCA5NiwgOCwgMywgCisgICAgMjQ4LCA5NCwgOCwgMywgMjQ4LCA5NSwgOCwgMywgMjI5LCAxMjYsIDgsIDMsIDIyOSwgMTI1LCA4LCAzLCAyMjksIDEzMywgCisgICAgOCwgMywgMjI5LCAxMjgsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxNDIsIDgsIDMsIAorICAgIDIyOSwgMTQxLCA4LCAzLCAyMjksIDE0OCwgOCwgMywgMjI5LCAxNDMsIDgsIDMsIDIyOSwgMTE4LCA4LCAzLCAyMjksIDExNywgCisgICAgOCwgMywgMjI5LCAxMjQsIDgsIDMsIDIyOSwgMTE5LCA4LCAzLCAyMjksIDEzNCwgOCwgMywgMjI5LCAxNDAsIDgsIDMsIAorICAgIDIyOSwgMTM4LCA4LCAzLCAyMjksIDExMCwgOCwgMywgMjI5LCAxMDksIDgsIDMsIDIyOSwgMTE1LCA4LCAzLCAyMjksIDExMywgCisgICAgOCwgMywgMjI5LCAxMTEsIDgsIDMsIDIyOSwgMTEyLCA4LCAzLCAyNDEsIDc3LCA4LCAzLCAyNDEsIDc2LCA4LCAzLCAyNDEsIAorICAgIDgzLCA4LCAzLCAyNDEsIDc4LCA4LCAzLCAyNDEsIDgwLCA4LCAzLCAyNDEsIDc5LCA4LCAzLCAyNDEsIDgyLCA4LCAzLCAKKyAgICAyNDEsIDgxLCA4LCAzLCAyNDEsIDg4LCA4LCAzLCAyNDEsIDg3LCA4LCAzLCAyNDEsIDkwLCA4LCAzLCAyNDEsIDg5LCA4LCAKKyAgICAzLCAyNDEsIDcxLCA4LCAzLCAyNDEsIDcyLCA4LCAzLCAyNDEsIDc0LCA4LCAzLCAyNDEsIDczLCA4LCAzLCAyNDEsIDc1LCAKKyAgICA4LCAzLCAyNDEsIDg0LCA4LCAzLCAyNDEsIDg2LCA4LCAzLCAyNDEsIDg1LCA4LCAzLCAyNDEsIDcwLCA4LCAzLCAyMjgsIAorICAgIDE4OSwgOCwgMywgMjI4LCAxODcsIDgsIDMsIDIyOCwgMjMzLCA4LCAzLCAyMjgsIDE5MiwgOCwgMywgMjI4LCAyMTUsIDgsIAorICAgIDMsIDIyOCwgMjI5LCA4LCAzLCAyMjgsIDIyOCwgOCwgMywgMjI5LCAxODMsIDgsIDMsIDE5NywgOCwgMywgMjI5LCAxOTcsIAorICAgIDgsIDMsIDIyNywgMTg2LCA4LCAzLCAyMjcsIDE4OCwgOCwgMywgMjI3LCAxODcsIDgsIDMsIDIyOCwgNTEsIDgsIDMsIDIyOCwgCisgICAgMzgsIDgsIDMsIDIyOCwgNzQsIDgsIDMsIDIyOCwgNjAsIDgsIDMsIDIyOSwgODMsIDgsIDMsIDIyOSwgMTA3LCA4LCAzLCAKKyAgICAyMjksIDk0LCA4LCAzLCAyMjcsIDE4MSwgOCwgMywgMjI3LCAxNzcsIDgsIDMsIDIyNywgMjM3LCA4LCAzLCAyMjcsIDE4NSwgCisgICAgOCwgMywgMjI3LCAxODMsIDgsIDMsIDIyNywgMTg0LCA4LCAzLCAyNDEsIDE0MSwgOCwgMywgMjQxLCAxNDAsIDgsIDMsIAorICAgIDI0MSwgMTQ2LCA4LCAzLCAyNDEsIDE0MiwgOCwgMywgMjQxLCAxNDMsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAyNDEsIDE0NCwgCisgICAgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNTIsIDgsIDMsIAorICAgIDI0MSwgMTMzLCA4LCAzLCAyNDEsIDEzNSwgOCwgMywgMjQxLCAxMzQsIDgsIDMsIDI0MSwgMTM3LCA4LCAzLCAyNDEsIDEzOSwgCisgICAgOCwgMywgMjQxLCAxMzgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE0OSwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIAorICAgIDI0MSwgMTI5LCA4LCAzLCAyNDEsIDEyOCwgOCwgMywgMjQxLCAxMzYsIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyNDEsIDEzMCwgCisgICAgOCwgMywgMjQxLCAxMzEsIDgsIDMsIDI0MSwgMTIzLCA4LCAzLCAyNDEsIDEyMiwgOCwgMywgMjQxLCAxMjcsIDgsIDMsIAorICAgIDI0MSwgMTI2LCA4LCAzLCAyNDEsIDEyNCwgOCwgMywgMjQxLCAxMjUsIDgsIDMsIDIzMiwgMTk1LCA4LCAzLCAyMzIsIDE4OSwgCisgICAgOCwgMywgMjMyLCAyNDEsIDgsIDMsIDIzMiwgMjAyLCA4LCAzLCAyMzIsIDIzMywgOCwgMywgMjMyLCAyMzIsIDgsIDMsIAorICAgIDIzMiwgMjM2LCA4LCAzLCAyMzIsIDIzNCwgOCwgMywgMjMzLCA3OSwgOCwgMywgMjMzLCA2OSwgOCwgMywgMjMzLCAxMzUsIAorICAgIDgsIDMsIDIzMywgODgsIDgsIDMsIDIzMiwgNzksIDgsIDMsIDIzMiwgNzgsIDgsIDMsIDIzMiwgODEsIDgsIDMsIDIzMiwgCisgICAgODAsIDgsIDMsIDIzMiwgMTE2LCA4LCAzLCAyMzIsIDEwNiwgOCwgMywgMjMyLCAxNTYsIDgsIDMsIDIzMiwgMTIwLCA4LCAzLCAKKyAgICAyMzMsIDIsIDgsIDMsIDIzMywgNTgsIDgsIDMsIDIzMywgMTcsIDgsIDMsIDIzMiwgNzQsIDgsIDMsIDIzMiwgNzIsIDgsIDMsIAorICAgIDIzMiwgOTgsIDgsIDMsIDIzMiwgNzcsIDgsIDMsIDIzMiwgNzUsIDgsIDMsIDIzMiwgNzYsIDgsIDMsIDIzMiwgNTQsIDgsIAorICAgIDMsIDIzMiwgNTMsIDgsIDMsIDIzMiwgNjIsIDgsIDMsIDIzMiwgNTcsIDgsIDMsIDIzMiwgNTUsIDgsIDMsIDIzMiwgNTYsIAorICAgIDgsIDMsIDI0MiwgMTg5LCA4LCAzLCAyNDIsIDE4OCwgOCwgMywgMjQyLCAyMTQsIDgsIDMsIDI0MiwgMTk5LCA4LCAzLCAKKyAgICAyNDIsIDIwNiwgOCwgMywgMjQyLCAyMDUsIDgsIDMsIDI0MiwgMjA4LCA4LCAzLCAyNDIsIDIwNywgOCwgMywgMjQzLCA4OSwgCisgICAgOCwgMywgMjQzLCA4NCwgOCwgMywgMjQzLCAxMzUsIDgsIDMsIDI0MywgOTksIDgsIDMsIDI0MiwgOTEsIDgsIDMsIDI0MiwgCisgICAgOTAsIDgsIDMsIDI0MiwgOTMsIDgsIDMsIDI0MiwgOTIsIDgsIDMsIDI0MiwgMTU0LCA4LCAzLCAyNDIsIDE1MiwgOCwgMywgCisgICAgMjQyLCAxNzQsIDgsIDMsIDI0MiwgMTYyLCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDYyLCA4LCAKKyAgICAzLCAyNDMsIDQ0LCA4LCAzLCAyNDIsIDgxLCA4LCAzLCAyNDIsIDgwLCA4LCAzLCAyNDIsIDExMywgOCwgMywgMjQyLCA4OSwgCisgICAgOCwgMywgMjQyLCA4MiwgOCwgMywgMjQyLCA4OCwgOCwgMywgMjM0LCA2MSwgOCwgMywgMjM0LCA2MCwgOCwgMywgMjM0LCAKKyAgICA5MiwgOCwgMywgMjM0LCA3NSwgOCwgMywgMjM0LCA4NSwgOCwgMywgMjM0LCA4OCwgOCwgMywgMjM0LCA4NiwgOCwgMywgCisgICAgMjM0LCAyMDIsIDgsIDMsIDIzNCwgMTkwLCA4LCAzLCAxNzYsIDgsIDMsIDIzNCwgMjI4LCA4LCAzLCAyMzMsIDIwMCwgOCwgCisgICAgMywgMjMzLCAyMDUsIDgsIDMsIDIzMywgMjAyLCA4LCAzLCAyMzQsIDAsIDgsIDMsIDIzMywgMjUyLCA4LCAzLCAyMzQsIDI4LCAKKyAgICA4LCAzLCAyMzQsIDcsIDgsIDMsIDIzNCwgMTU2LCA4LCAzLCAyMzQsIDE0MCwgOCwgMywgMjM0LCAxODIsIDgsIDMsIDIzNCwgCisgICAgMTU5LCA4LCAzLCAyMzMsIDE4OSwgOCwgMywgMjMzLCAxODYsIDgsIDMsIDIzMywgMjE3LCA4LCAzLCAyMzMsIDE5OSwgOCwgCisgICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMTk2LCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCA4LCAzLCAyNDMsIDE5LCAKKyAgICA4LCAzLCAyNDMsIDE2LCA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIAorICAgIDI1LCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDYsIDgsIDMsIDI0MywgNSwgOCwgMywgMjQzLCAKKyAgICA4LCA4LCAzLCAyNDMsIDcsIDgsIDMsIDI0MywgMTEsIDgsIDMsIDI0MywgMTAsIDgsIDMsIDI0MywgMTMsIDgsIDMsIDI0MywgCisgICAgMTIsIDgsIDMsIDI0MywgMjEsIDgsIDMsIDI0MywgMjAsIDgsIDMsIDI0MywgMjQsIDgsIDMsIDI0MywgMjIsIDgsIDMsIAorICAgIDI0MywgMSwgOCwgMywgMjQzLCAwLCA4LCAzLCAyNDMsIDksIDgsIDMsIDI0MywgNCwgOCwgMywgMjQzLCAyLCA4LCAzLCAKKyAgICAyNDMsIDMsIDgsIDMsIDIzMCwgMjQ5LCA4LCAzLCAyMzAsIDI1MCwgOCwgMywgMjMxLCAxMiwgOCwgMywgMjMxLCAxMSwgOCwgCisgICAgMywgMjMxLCAxNCwgOCwgMywgMjMxLCAxMywgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQyLCA4LCAzLCAyMzAsIAorICAgIDI0MSwgOCwgMywgMjMwLCAyNDUsIDgsIDMsIDIzMCwgMjQ0LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIAorICAgIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzAsIDI1MywgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjM2LCA4LCAzLCAyMzAsIAorICAgIDIzNSwgOCwgMywgMjMwLCAyNDMsIDgsIDMsIDIzMCwgMjM5LCA4LCAzLCAyMzAsIDIzNywgOCwgMywgMjMwLCAyMzgsIDgsIAorICAgIDMsIDI0MCwgMTgwLCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxODYsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAyNDAsIAorICAgIDE4MywgOCwgMywgMjQwLCAxODIsIDgsIDMsIDI0MCwgMTg1LCA4LCAzLCAyNDAsIDE4NCwgOCwgMywgMjQwLCAxOTEsIDgsIAorICAgIDMsIDI0MCwgMTkwLCA4LCAzLCAyNDAsIDE5MywgOCwgMywgMjQwLCAxOTIsIDgsIDMsIDI0MCwgMTcyLCA4LCAzLCAyNDAsIAorICAgIDE3MSwgOCwgMywgMjQwLCAxNzQsIDgsIDMsIDI0MCwgMTczLCA4LCAzLCAyNDAsIDE3NiwgOCwgMywgMjQwLCAxNzUsIDgsIAorICAgIDMsIDI0MCwgMTc4LCA4LCAzLCAyNDAsIDE3NywgOCwgMywgMjQwLCAxODcsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAyNDAsIAorICAgIDE4OCwgOCwgMywgMjI5LCAyNCwgOCwgMywgMjI5LCAyNiwgOCwgMywgMjI5LCAyNSwgOCwgMywgMjI5LCA2NywgOCwgMywgCisgICAgMjI5LCA2NSwgOCwgMywgMjI5LCA3NywgOCwgMywgMjI5LCA3MCwgOCwgMywgMjI4LCAyNDMsIDgsIDMsIDIyOCwgMjQyLCA4LCAKKyAgICAzLCAyMjgsIDI0NCwgOCwgMywgMjI4LCAyNTIsIDgsIDMsIDIyOCwgMjQ5LCA4LCAzLCAyMjksIDQsIDgsIDMsIDIyOCwgCisgICAgMjU0LCA4LCAzLCAyMjksIDU4LCA4LCAzLCAyMjksIDY0LCA4LCAzLCAyMjksIDYwLCA4LCAzLCAyNDEsIDE1NiwgOCwgMywgCisgICAgMjQxLCAxNjYsIDgsIDMsIDI0MSwgMTc1LCA4LCAzLCAyNDEsIDI1MSwgOCwgMywgMjQxLCAyNDMsIDgsIDMsIDE2MiwgOCwgCisgICAgMywgMjQyLCA2LCA4LCAzLCAyNDAsIDIwNiwgOCwgMywgMjQwLCAyMDUsIDgsIDMsIDI0MCwgMjA4LCA4LCAzLCAyNDAsIAorICAgIDIwNywgOCwgMywgMjQwLCAyNDIsIDgsIDMsIDI0MCwgMjMzLCA4LCAzLCAyNDEsIDY4LCA4LCAzLCAyNDEsIDQ3LCA4LCAzLCAKKyAgICAyNDEsIDE5NCwgOCwgMywgMjQxLCAyMzgsIDgsIDMsIDI0MSwgMjA2LCA4LCAzLCAyMTIsIDQzLCA4LCAzLCAyMTIsIDI4LCAKKyAgICA4LCAzLCAyMTIsIDY1LCA4LCAzLCAyMTIsIDUxLCA4LCAzLCAyMTEsIDE4NSwgOCwgMywgMjExLCAxODcsIDgsIDMsIDIxMSwgCisgICAgMTg2LCA4LCAzLCAyMTEsIDIwMywgOCwgMywgMjExLCAyMjcsIDgsIDMsIDIxMSwgMjEwLCA4LCAzLCAyMTIsIDUsIDgsIDMsIAorICAgIDIxMiwgMjIsIDgsIDMsIDIxMiwgMTAsIDgsIDMsIDIxMCwgMzAsIDgsIDMsIDIxMCwgMjksIDgsIDMsIDIxMCwgNDQsIDgsIAorICAgIDMsIDIxMCwgMzIsIDgsIDMsIDIxMCwgMzcsIDgsIDMsIDIxMCwgMzksIDgsIDMsIDIxMCwgMzgsIDgsIDMsIDIxMCwgMTAyLCAKKyAgICA4LCAzLCAyMTAsIDk5LCA4LCAzLCAyMTAsIDExNiwgOCwgMywgMjEwLCAxMDUsIDgsIDMsIDIxMCwgNiwgOCwgMywgMjEwLCAKKyAgICA4LCA4LCAzLCAyMTAsIDcsIDgsIDMsIDIxMCwgMTksIDgsIDMsIDIxMCwgMTgsIDgsIDMsIDIxMCwgMjMsIDgsIDMsIDIxMCwgCisgICAgMjAsIDgsIDMsIDIxMCwgODQsIDgsIDMsIDIxMCwgOTQsIDgsIDMsIDIxMCwgODgsIDgsIDMsIDIxMCwgMiwgOCwgMywgMjEwLCAKKyAgICAxLCA4LCAzLCAyMTAsIDEzLCA4LCAzLCAyMTAsIDUsIDgsIDMsIDIxMCwgMywgOCwgMywgMjEwLCA0LCA4LCAzLCAyMDksIAorICAgIDI0NSwgOCwgMywgMjA5LCAyNDQsIDgsIDMsIDIwOSwgMjUwLCA4LCAzLCAyMDksIDI0OCwgOCwgMywgMjA5LCAyNDYsIDgsIAorICAgIDMsIDIwOSwgMjQ3LCA4LCAzLCAyNTAsIDI4LCA4LCAzLCAyNTAsIDI0LCA4LCAzLCAyNTAsIDUxLCA4LCAzLCAyNTAsIDM3LCAKKyAgICA4LCAzLCAyNTAsIDQ4LCA4LCAzLCAyNTAsIDQyLCA4LCAzLCAyNTAsIDUwLCA4LCAzLCAyNTAsIDQ5LCA4LCAzLCAyNTAsIAorICAgIDIyNCwgOCwgMywgMjUwLCAyMTcsIDgsIDMsIDI1MSwgMzMsIDgsIDMsIDI1MCwgMjUxLCA4LCAzLCAyNDksIDEwNCwgOCwgMywgCisgICAgMjQ5LCAxMDYsIDgsIDMsIDI0OSwgMTA1LCA4LCAzLCAyNDksIDE1MywgOCwgMywgMjQ5LCAxNDQsIDgsIDMsIDI0OSwgMjM4LCAKKyAgICA4LCAzLCAyNDksIDE2OSwgOCwgMywgMjUwLCAxNjAsIDgsIDMsIDI1MCwgMTkwLCA4LCAzLCAyNTAsIDE2NSwgOCwgMywgCisgICAgMjQ5LCA4NCwgOCwgMywgMjQ5LCA4MiwgOCwgMywgMjQ5LCAxMTIsIDgsIDMsIDI0OSwgMTAyLCA4LCAzLCAyNDksIDg5LCA4LCAKKyAgICAzLCAyNDksIDEwMSwgOCwgMywgMjQ5LCA2MywgOCwgMywgMjQ5LCA2MiwgOCwgMywgMjQ5LCA3MywgOCwgMywgMjQ5LCA2OSwgCisgICAgOCwgMywgMjQ5LCA2NCwgOCwgMywgMjQ5LCA2NiwgOCwgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIAorICAgIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIAorICAgIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIAorICAgIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIAorICAgIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIAorICAgIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIAorICAgIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIAorICAgIDEwNCwgOCwgMywgMjI3LCAxMDMsIDgsIDMsIDIyNywgMTA5LCA4LCAzLCAyMjcsIDEwNSwgOCwgMywgMjI3LCAxMDYsIDgsIAorICAgIDMsIDIyNywgMTA4LCA4LCAzLCAyMjcsIDEwNywgOCwgMywgMjI3LCAxMTQsIDgsIDMsIDIyNywgMTEzLCA4LCAzLCAyMjcsIAorICAgIDExNywgOCwgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTcsIDgsIDMsIDIyNywgOTgsIDgsIDMsIDIyNywgMTAxLCA4LCAzLCAKKyAgICAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDkyLCA4LCAzLCAyMjcsIDEwMCwgCisgICAgOCwgMywgMjI3LCA5NiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjI3LCA5NCwgOCwgMywgMjI3LCA4NywgOCwgMywgMjI3LCAKKyAgICA4NiwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA4OCwgOCwgMywgMjI3LCA4OSwgOCwgMywgCisgICAgMjE5LCAxMjcsIDgsIDMsIDE5NCwgOCwgMywgMjE5LCAxOTEsIDgsIDMsIDIxOSwgMTMwLCA4LCAzLCAyMTksIDE4MywgOCwgCisgICAgMywgMjE5LCAxODYsIDgsIDMsIDIxOSwgMTg0LCA4LCAzLCAyMjEsIDIyNiwgOCwgMywgMjIxLCAyMTQsIDgsIDMsIDIwNiwgCisgICAgOCwgMywgMjIxLCAyMzQsIDgsIDMsIDIxOCwgMjgsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOCwgMjksIDgsIDMsIDIxOSwgCisgICAgMzQsIDgsIDMsIDIxOSwgMjMsIDgsIDMsIDIxOSwgNTgsIDgsIDMsIDIxOSwgMzgsIDgsIDMsIDIyMCwgMTE0LCA4LCAzLCAKKyAgICAyMjEsIDE4MSwgOCwgMywgMjIwLCAxMzksIDgsIDMsIDIxOCwgNSwgOCwgMywgMjE4LCAzLCA4LCAzLCAyMTgsIDgzLCA4LCAKKyAgICAzLCAyMTgsIDI3LCA4LCAzLCAyMTgsIDksIDgsIDMsIDIxOCwgMTcsIDgsIDMsIDIxNywgMTY2LCA4LCAzLCAyMTcsIDE2NSwgCisgICAgOCwgMywgMjE3LCAyMzIsIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTcsIDE2OCwgOCwgMywgMjE3LCAxNzIsIDgsIDMsIAorICAgIDIxOCwgMTg2LCA4LCAzLCAyMTgsIDE4NSwgOCwgMywgMjE4LCAxOTIsIDgsIDMsIDIxOCwgMTg3LCA4LCAzLCAyMTgsIDE4OSwgCisgICAgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkwLCA4LCAzLCAyMTgsIDIwMCwgOCwgMywgMjE4LCAxOTgsIDgsIDMsIAorICAgIDIxOCwgMjIzLCA4LCAzLCAyMTgsIDIwMSwgOCwgMywgMjE4LCAxODEsIDgsIDMsIDIxOCwgMTgwLCA4LCAzLCAyMTgsIDE4NCwgCisgICAgOCwgMywgMjE4LCAxODIsIDgsIDMsIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE5NywgOCwgMywgMjE4LCAxOTUsIDgsIDMsIAorICAgIDIxOCwgMTc3LCA4LCAzLCAyMTgsIDE3NSwgOCwgMywgMjE4LCAxNzksIDgsIDMsIDIxOCwgMTc4LCA4LCAzLCAyMTgsIDE3MCwgCisgICAgOCwgMywgMjE4LCAxNjksIDgsIDMsIDIxOCwgMTc0LCA4LCAzLCAyMTgsIDE3MywgOCwgMywgMjE4LCAxNzEsIDgsIDMsIAorICAgIDIxOCwgMTcyLCA4LCAzLCAyMTAsIDc3LCA4LCAzLCAyMTAsIDc2LCA4LCAzLCAyMTAsIDgyLCA4LCAzLCAyMTAsIDc5LCA4LCAKKyAgICAzLCAyMTAsIDU5LCA4LCAzLCAyMTAsIDYxLCA4LCAzLCAyMTAsIDYwLCA4LCAzLCAyMTAsIDY0LCA4LCAzLCAyMTAsIDYzLCAKKyAgICA4LCAzLCAyMTAsIDY3LCA4LCAzLCAyMTAsIDY1LCA4LCAzLCAyMTAsIDcxLCA4LCAzLCAyMTAsIDcwLCA4LCAzLCAyMTAsIAorICAgIDc0LCA4LCAzLCAyMTAsIDcyLCA4LCAzLCAyMTAsIDU1LCA4LCAzLCAyMTAsIDU0LCA4LCAzLCAyMTAsIDYyLCA4LCAzLCAKKyAgICAyMTAsIDU4LCA4LCAzLCAyMTAsIDU2LCA4LCAzLCAyMTAsIDU3LCA4LCAzLCAyMTAsIDQ3LCA4LCAzLCAyMTAsIDQ2LCA4LCAKKyAgICAzLCAyMTAsIDUxLCA4LCAzLCAyMTAsIDUwLCA4LCAzLCAyMTAsIDQ4LCA4LCAzLCAyMTAsIDQ5LCA4LCAzLCAyNTAsIDEzNiwgCisgICAgOCwgMywgMjUwLCAxMzMsIDgsIDMsIDI1MCwgMTU3LCA4LCAzLCAyNTAsIDE0NCwgOCwgMywgMjUwLCA2NSwgOCwgMywgMjUwLCAKKyAgICA2NCwgOCwgMywgMjUwLCA2NywgOCwgMywgMjUwLCA2NiwgOCwgMywgMjUwLCA3OSwgOCwgMywgMjUwLCA3OCwgOCwgMywgCisgICAgMjUwLCA4NiwgOCwgMywgMjUwLCA4MSwgOCwgMywgMjUwLCAxMTUsIDgsIDMsIDI1MCwgMTEzLCA4LCAzLCAyNTAsIDEzMSwgCisgICAgOCwgMywgMjUwLCAxMjEsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNjksIDgsIDMsIDI1MCwgNjMsIDgsIDMsIDI1MCwgCisgICAgNjAsIDgsIDMsIDI1MCwgNjIsIDgsIDMsIDI1MCwgNTMsIDgsIDMsIDI1MCwgNTIsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIAorICAgIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTQsIDgsIDMsIDI1MCwgNTUsIDgsIDMsIDIyMiwgMTc1LCA4LCAzLCAyMjIsIDE3OSwgOCwgCisgICAgMywgMjIyLCAxNTgsIDgsIDMsIDIyMiwgMTU5LCA4LCAzLCAyMjIsIDE2MiwgOCwgMywgMjIyLCAxNjEsIDgsIDMsIDIyMiwgCisgICAgMTY1LCA4LCAzLCAyMjIsIDE2MywgOCwgMywgMjIyLCAxNjksIDgsIDMsIDIyMiwgMTY4LCA4LCAzLCAyMjIsIDE3NCwgOCwgCisgICAgMywgMjIyLCAxNzAsIDgsIDMsIDIyMiwgMTU0LCA4LCAzLCAyMjIsIDE1MiwgOCwgMywgMjIyLCAxNjAsIDgsIDMsIDIyMiwgCisgICAgMTU3LCA4LCAzLCAyMjIsIDE1NSwgOCwgMywgMjIyLCAxNTYsIDgsIDMsIDIyMiwgMTQ3LCA4LCAzLCAyMjIsIDE0NiwgOCwgCisgICAgMywgMjIyLCAxNTEsIDgsIDMsIDIyMiwgMTUwLCA4LCAzLCAyMjIsIDE0OCwgOCwgMywgMjIyLCAxNDksIDgsIDMsIDIyOCwgCisgICAgMzQsIDgsIDMsIDIyOCwgMzMsIDgsIDMsIDIyOCwgMzYsIDgsIDMsIDIyOCwgMzUsIDgsIDMsIDIyOCwgMjYsIDgsIDMsIAorICAgIDIyOCwgMjgsIDgsIDMsIDIyOCwgMjcsIDgsIDMsIDIyOCwgMzAsIDgsIDMsIDIyOCwgMjksIDgsIDMsIDIyOCwgMzIsIDgsIAorICAgIDMsIDIyOCwgMzEsIDgsIDMsIDIyOCwgMjEsIDgsIDMsIDIyOCwgMjAsIDgsIDMsIDIyOCwgMjUsIDgsIDMsIDIyOCwgMjQsIAorICAgIDgsIDMsIDIyOCwgMjIsIDgsIDMsIDIyOCwgMjMsIDgsIDMsIDIyOCwgMTUsIDgsIDMsIDIyOCwgMTQsIDgsIDMsIDIyOCwgCisgICAgMTksIDgsIDMsIDIyOCwgMTgsIDgsIDMsIDIyOCwgMTYsIDgsIDMsIDIyOCwgMTcsIDgsIDMsIDIyMCwgNzIsIDgsIDMsIAorICAgIDIyMCwgNjcsIDgsIDMsIDIyMCwgMTAyLCA4LCAzLCAyMjAsIDgzLCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAyMTcsIAorICAgIDgsIDMsIDIxOSwgMjE2LCA4LCAzLCAyMTksIDIzNiwgOCwgMywgMjE5LCAyMzMsIDgsIDMsIDIyMCwgNywgOCwgMywgMjE5LCAKKyAgICAyNTQsIDgsIDMsIDIyMCwgNDIsIDgsIDMsIDIyMCwgMzUsIDgsIDMsIDIyMCwgNjMsIDgsIDMsIDIyMCwgNTAsIDgsIDMsIAorICAgIDIxOSwgMjExLCA4LCAzLCAyMTksIDIwOSwgOCwgMywgMjE5LCAyMjUsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxMiwgCisgICAgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMTk0LCA4LCAzLCAyMTksIDE5MywgOCwgMywgMjE5LCAyMDAsIDgsIDMsIAorICAgIDIxOSwgMTk3LCA4LCAzLCAyMTksIDE5NSwgOCwgMywgMjE5LCAxOTYsIDgsIDMsIDIyMywgMTQxLCA4LCAzLCAyMjMsIDEzNSwgCisgICAgOCwgMywgMjA1LCA4LCAzLCAyMjMsIDE0NywgOCwgMywgMjIyLCAxMjAsIDgsIDMsIDIyMiwgMTIyLCA4LCAzLCAyMjIsIAorICAgIDEyMSwgOCwgMywgMjIyLCAxODgsIDgsIDMsIDIyMiwgMTgxLCA4LCAzLCAyMjIsIDIxMSwgOCwgMywgMjIyLCAxOTIsIDgsIAorICAgIDMsIDIyMywgNDMsIDgsIDMsIDIyMywgMTI4LCA4LCAzLCAyMjMsIDgxLCA4LCAzLCAyMjIsIDExMywgOCwgMywgMjIyLCAKKyAgICAxMTAsIDgsIDMsIDIyMiwgMTQwLCA4LCAzLCAyMjIsIDExOSwgOCwgMywgMjIyLCAxMTUsIDgsIDMsIDIyMiwgMTE2LCA4LCAKKyAgICAzLCAyMjIsIDk1LCA4LCAzLCAyMjIsIDk0LCA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5NiwgCisgICAgOCwgMywgMjIyLCA5NywgOCwgMywgMjM1LCA5OCwgOCwgMywgMjM1LCA5NywgOCwgMywgMjM1LCAxMDgsIDgsIDMsIDIzNSwgCisgICAgOTksIDgsIDMsIDIzNSwgMTA0LCA4LCAzLCAyMzUsIDEwMywgOCwgMywgMjM1LCAxMDYsIDgsIDMsIDIzNSwgMTA1LCA4LCAzLCAKKyAgICAyMzUsIDQxLCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDQyLCA4LCAzLCAyMzUsIDU2LCA4LCAKKyAgICAzLCAyMzUsIDU0LCA4LCAzLCAyMzUsIDY4LCA4LCAzLCAyMzUsIDU4LCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMzUsIDMyLCAKKyAgICA4LCAzLCAyMzUsIDUxLCA4LCAzLCAyMzUsIDM5LCA4LCAzLCAyMzUsIDM2LCA4LCAzLCAyMzUsIDM3LCA4LCAzLCAyMzUsIAorICAgIDI2LCA4LCAzLCAyMzUsIDI1LCA4LCAzLCAyMzUsIDMwLCA4LCAzLCAyMzUsIDI5LCA4LCAzLCAyMzUsIDI3LCA4LCAzLCAKKyAgICAyMzUsIDI4LCA4LCAzLCAyMjQsIDQ2LCA4LCAzLCAyMjQsIDQ0LCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDQ3LCA4LCAKKyAgICAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIDUxLCA4LCAzLCAyMjMsIDI1NSwgCisgICAgOCwgMywgMjIzLCAyNTIsIDgsIDMsIDIyNCwgMSwgOCwgMywgMjI0LCAwLCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjQsIDMyLCAKKyAgICA4LCAzLCAyMjQsIDQyLCA4LCAzLCAyMjQsIDM2LCA4LCAzLCAyMjMsIDI0NywgOCwgMywgMjIzLCAyNDMsIDgsIDMsIDIyNCwgCisgICAgMzAsIDgsIDMsIDIyMywgMjUxLCA4LCAzLCAyMjMsIDI0OSwgOCwgMywgMjIzLCAyNTAsIDgsIDMsIDIyMywgMjI3LCA4LCAzLCAKKyAgICAyMjMsIDIyNSwgOCwgMywgMjIzLCAyMzcsIDgsIDMsIDIyMywgMjMwLCA4LCAzLCAyMjMsIDIyOCwgOCwgMywgMjIzLCAyMjksIAorICAgIDgsIDMsIDIzNSwgODcsIDgsIDMsIDIzNSwgODYsIDgsIDMsIDIzNSwgOTMsIDgsIDMsIDIzNSwgODgsIDgsIDMsIDIzNSwgCisgICAgOTAsIDgsIDMsIDIzNSwgODksIDgsIDMsIDIzNSwgOTIsIDgsIDMsIDIzNSwgOTEsIDgsIDMsIDIzNSwgNzgsIDgsIDMsIAorICAgIDIzNSwgODAsIDgsIDMsIDIzNSwgNzksIDgsIDMsIDIzNSwgODMsIDgsIDMsIDIzNSwgODIsIDgsIDMsIDIzNSwgODUsIDgsIAorICAgIDMsIDIzNSwgODQsIDgsIDMsIDIzNSwgNzQsIDgsIDMsIDIzNSwgNzMsIDgsIDMsIDIzNSwgODEsIDgsIDMsIDIzNSwgNzcsIAorICAgIDgsIDMsIDIzNSwgNzUsIDgsIDMsIDIzNSwgNzYsIDgsIDMsIDIzNSwgNzAsIDgsIDMsIDIzNSwgNjksIDgsIDMsIDIzNSwgCisgICAgNzIsIDgsIDMsIDIzNSwgNzEsIDgsIDMsIDIyOCwgMTYyLCA4LCAzLCAyMjgsIDE2MSwgOCwgMywgMjI4LCAxNjksIDgsIDMsIAorICAgIDIyOCwgMTYzLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjQsIDgsIDMsIDIyOCwgMTY4LCA4LCAzLCAyMjgsIDE2NiwgCisgICAgOCwgMywgMjI4LCAxNTEsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1NywgOCwgMywgMjI4LCAxNTYsIDgsIDMsIAorICAgIDIyOCwgMTYwLCA4LCAzLCAyMjgsIDE1OCwgOCwgMywgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTU1LCA4LCAzLCAyMjgsIDE1MCwgCisgICAgOCwgMywgMjI4LCAxNDcsIDgsIDMsIDIyOCwgMTQ4LCA4LCAzLCAyMjgsIDE0MSwgOCwgMywgMjI4LCAxNDAsIDgsIDMsIAorICAgIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE0NCwgOCwgMywgMjI4LCAxNDIsIDgsIDMsIDIyOCwgMTQzLCA4LCAzLCAyMjcsIDEzNywgCisgICAgOCwgMywgMjI3LCAxMzYsIDgsIDMsIDIyNywgMTQ4LCA4LCAzLCAyMjcsIDE0MSwgOCwgMywgMjI3LCAxNDUsIDgsIDMsIAorICAgIDIyNywgMTQ0LCA4LCAzLCAyMjcsIDE0NywgOCwgMywgMjI3LCAxNDYsIDgsIDMsIDIyNywgMTI0LCA4LCAzLCAyMjcsIDEyNiwgCisgICAgOCwgMywgMjI3LCAxMjUsIDgsIDMsIDIyNywgMTMwLCA4LCAzLCAyMjcsIDEyOSwgOCwgMywgMjI3LCAxMzQsIDgsIDMsIAorICAgIDIyNywgMTMxLCA4LCAzLCAyMjcsIDEyMiwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgMTI4LCA4LCAzLCAyMjcsIDEyMywgCisgICAgOCwgMywgMjExLCAxNTAsIDgsIDMsIDIxMSwgMTQ5LCA4LCAzLCAyMTEsIDE1NywgOCwgMywgMjExLCAxNTIsIDgsIDMsIAorICAgIDIxMSwgMTU0LCA4LCAzLCAyMTEsIDE1MywgOCwgMywgMjExLCAxNTYsIDgsIDMsIDIxMSwgMTU1LCA4LCAzLCAyMTEsIDEzOSwgCisgICAgOCwgMywgMjExLCAxNDAsIDgsIDMsIDIxMSwgMTQ0LCA4LCAzLCAyMTEsIDE0MywgOCwgMywgMjExLCAxNDgsIDgsIDMsIAorICAgIDIxMSwgMTQ2LCA4LCAzLCAyMTEsIDEyMSwgOCwgMywgMjExLCAxMTksIDgsIDMsIDIxMSwgMTMxLCA4LCAzLCAyMTEsIDEyNCwgCisgICAgOCwgMywgMjExLCAxMjIsIDgsIDMsIDIxMSwgMTIzLCA4LCAzLCAyMTAsIDI1MCwgOCwgMywgMjEwLCAyNDgsIDgsIDMsIAorICAgIDIxMSwgOCwgOCwgMywgMjEwLCAyNTEsIDgsIDMsIDIxMSwgMiwgOCwgMywgMjExLCAxLCA4LCAzLCAyMTEsIDUsIDgsIDMsIAorICAgIDIxMSwgMywgOCwgMywgMjEwLCAxOTEsIDgsIDMsIDIxMCwgMTkwLCA4LCAzLCAyMTAsIDE5NCwgOCwgMywgMjEwLCAxOTIsIAorICAgIDgsIDMsIDIxMCwgMjI0LCA4LCAzLCAyMTAsIDIyMSwgOCwgMywgMjEwLCAyNDQsIDgsIDMsIDIxMCwgMjI4LCA4LCAzLCAKKyAgICAyMTAsIDE4MiwgOCwgMywgMjEwLCAxNzgsIDgsIDMsIDIxMCwgMjEyLCA4LCAzLCAyMTAsIDE4OSwgOCwgMywgMjEwLCAxODUsIAorICAgIDgsIDMsIDIxMCwgMTg2LCA4LCAzLCAyMTAsIDE2MiwgOCwgMywgMjEwLCAxNjEsIDgsIDMsIDIxMCwgMTY5LCA4LCAzLCAKKyAgICAyMTAsIDE2NSwgOCwgMywgMjEwLCAxNjMsIDgsIDMsIDIxMCwgMTY0LCA4LCAzNCwgMjI0LCAzMywgOCwgMzQsIDIzMiwgCisgICAgMjQxLCA4LCAzNCwgMjM0LCA2MSwgOCwgMzQsIDIyNywgMTQxLCA4LCAzNCwgMjQ5LCA2OSwgOCwgMzQsIDIxOCwgMTkyLCA4LCAKKyAgICAzNCwgMjQzLCAxMiwgOCwgMzQsIDI0MywgNDQsIDgsIDM0LCAyMzAsIDIzMCwgOCwgMzQsIDI0MCwgMTgwLCA4LCAzNCwgCisgICAgMjMyLCA1NiwgOCwgMzQsIDI1MiwgODMsIDgsIDM0LCAyMzAsIDEyNiwgOCwgMzQsIDIxMCwgMjQ0LCA4LCAzNCwgMjI0LCAKKyAgICAxMjEsIDgsIDM0LCAyNDAsIDE3NCwgOCwgMzQsIDIxNywgNDYsIDgsIDM0LCAyNDMsIDEzNSwgOCwgMzQsIDIxMCwgNSwgOCwgCisgICAgMzQsIDI0OSwgNjMsIDgsIDM0LCAyNDgsIDk1LCA4LCAzNCwgMjUxLCA5OCwgOCwgMzQsIDI0MywgOCwgOCwgMzQsIDIyNywgCisgICAgMTMxLCA4LCAzNCwgMjE1LCAxMTgsIDgsIDM0LCAyMjYsIDE3NSwgOCwgMzQsIDIzNSwgNzQsIDgsIDM0LCAyMTAsIDE5LCA4LCAKKyAgICAzNCwgMjI0LCAxMDAsIDgsIDM0LCAyNDEsIDEwOCwgOCwgMzQsIDIxMCwgMjUwLCA4LCAzNCwgMjEyLCAxMTIsIDgsIDM0LCAKKyAgICAyMTksIDIwMCwgOCwgMzQsIDIxMywgMjQ0LCA4LCAzNCwgMjEwLCAxMTYsIDgsIDM0LCAyMzUsIDY4LCA4LCAzNCwgMjI3LCAKKyAgICA5NiwgOCwgMzQsIDIzNSwgNzIsIDgsIDM0LCAyNDIsIDE1NCwgOCwgMzQsIDIzNSwgOTIsIDgsIDM0LCAyMTEsIDIyNywgOCwgCisgICAgMzQsIDI0NiwgNzgsIDgsIDM0LCAyMTksIDIxMywgOCwgMzQsIDIzMiwgMjM2LCA4LCAzNCwgMjQ5LCA3MywgOCwgMzQsIAorICAgIDI0OSwgMTA1LCA4LCAzNCwgMjUwLCAzNywgOCwgMzQsIDI0MCwgMTc3LCA4LCAzNCwgMjIwLCA3MiwgOCwgMzQsIDIxMCwgNCwgCisgICAgOCwgMzQsIDIxOSwgMjU0LCA4LCAzNCwgMjUwLCAxMzEsIDgsIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTczLCA4LCAKKyAgICAzNCwgMjM0LCAxODIsIDIzMiwgMTk2LCAxLCAyNTIsIDE5MSwgMjMyLCAxOTYsIDEsIDE5MCwgMjMyLCAxOTYsIDEsIDIyNSwgCisgICAgMTQ3LCAyMzIsIDE5NiwgMSwgMjQ4LCAyMjEsIDIzMiwgMTk2LCAxLCAyMTcsIDEwNSwgMjMyLCAxOTYsIDEsIDIxNiwgMjA4LCAKKyAgICAyMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDIzMiwgMTk2LCAxLCAxNzYsIDIzMiwgMTk2LCAxLCAyMzQsIDEzMiwgMjMyLCAxOTYsIAorICAgIDEsIDIzNSwgMTQxLCAyMzIsIDE5NiwgMSwgMjUxLCAzMywgMjMyLCAxOTYsIDEsIDI1MCwgMTU3LCAyMzIsIDE5NiwgMSwgCisgICAgMjQ2LCAzOCwgMjMyLCAxOTYsIDEsIDIxNSwgMTgzLCAyMzIsIDE5NiwgMSwgMjE1LCAxNzUsIDIzMiwgMTk2LCAxLCAxODQsIAorICAgIDIzMiwgMTk2LCAxLCAxOTcsIDIzMiwgMTk2LCAxLCAyMzMsIDEzNSwgMjMyLCAxOTYsIDEsIDIwNiwgMjMyLCAxOTYsIDEsIAorICAgIDIxMCwgODIsIDIzMiwgMTk2LCAxLCAyMTAsIDExNiwgMjMyLCAxOTYsIDEsIDIyOSwgNzcsIDIzMiwgMTk2LCAxLCAxNjIsIAorICAgIDIzMiwgMTk2LCAxLCAyMTEsIDE2NSwgMjMyLCAxOTYsIDEsIDI0MSwgMTg5LCAyMzIsIDE5NiwgMSwgMjQ0LCAxOTYsIDIzMiwgCisgICAgMTk2LCAxLCAyMTIsIDY1LCAyMzIsIDE5NiwgMSwgMjIwLCAxMDIsIDIzMiwgMTk2LCAxLCAxOTEsIDIzMiwgMTk2LCAxLCAKKyAgICAyNDIsIDI0OSwgMjMyLCAxOTYsIDEsIDYxLCAyMzIsIDE5NiwgMSwgMjU0LCAyNDMsIDIzMiwgMTk2LCAxLCA3NSwgMjMyLCAKKyAgICAxOTYsIDEsIDI0NSwgNTUsIDIzMiwgMTk2LCAxLCA3MywgMjMyLCAxOTYsIDEsIDc2LCAyMzIsIDE5NiwgMSwgNzAsIDIzMiwgCisgICAgMTk2LCAxLCAyMTQsIDIxNCwgMjMyLCAxOTYsIDEsIDIxNCwgMjA4LCAyMzIsIDE5NiwgMSwgMjI2LCAyMzQsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDIxNiwgMTE3LCAyMzIsIDE5NiwgMSwgMTM4LCAyMjksIDIyOSwgMjI1LCAxNiwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMjQ5LCA3MiwgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjUxLCAyMDUsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDE5NywgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjM1LCAxMTUsIDIzMiwgMTk2LCAyMjQsIAorICAgIDE0MSwgMjQ5LCAyMTksIDIzMiwgMTk2LCAyMjQsIDE0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMywgMjQ1LCAyMDksIAorICAgIDQxLCAzLCAyNDUsIDIwNSwgNDEsIDMsIDI0MSwgMjIwLCA0MSwgMywgMjEyLCAxNywgNDEsIDMsIDIxMiwgMTYsIDQxLCAzLCAKKyAgICAyMjUsIDIxMSwgNDEsIDMsIDI1MiwgMTMsIDQxLCAzLCAyNTIsIDY2LCA0MSwgMywgMjMxLCAxMTYsIDQxLCAzLCAyMzMsIAorICAgIDI0NywgNDEsIDMsIDIzMSwgNiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDE0NywgNDEsIDMsIDIxMywgMjUwLCA0MSwgCisgICAgMywgMjE3LCAxMSwgNDEsIDMsIDIxNiwgMTk0LCA0MSwgMywgMjQ4LCAxNiwgNDEsIDMsIDI0OCwgMTMsIDQxLCAzLCAyMzMsIAorICAgIDUwLCA0MSwgMywgMjIzLCAxMDgsIDQxLCAzLCAyNDgsIDc3LCA0MSwgMywgMjI5LCAxMzksIDQxLCAzLCAyMjEsIDE3MCwgCisgICAgNDEsIDMsIDIyMCwgNjEsIDQxLCAzLCAyMTAsIDkyLCA0MSwgMywgMjEwLCA3MywgNDEsIDMsIDI1MCwgMTgyLCA0MSwgMywgCisgICAgMjM1LCAxMjQsIDQxLCAzLCAyMjgsIDE3NiwgNDEsIDMsIDIxMSwgNDQsIDQxLCAzLCAyMzQsIDE4MSwgNDEsIDMsIDIyOSwgCisgICAgNTEsIDQxLCAzLCAyNDMsIDU1LCA0MSwgMywgMjMxLCA4MCwgNDEsIDMsIDIyOSwgMTAzLCA0MSwgMywgMjI3LCAxNTUsIDQxLCAKKyAgICAzLCA3MywgNDEsIDMsIDIzNSwgMjU1LCA0MSwgMywgMjQxLCAxODAsIDQxLCAzLCAyNDEsIDE2MCwgNDEsIDMsIDIxMSwgCisgICAgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAyMjUsIDEwOCwgNDEsIDMsIDI1MiwgMTEsIDQxLCAzLCAyNTIsIDYsIDQxLCAKKyAgICAzLCAyMzEsIDEwOSwgNDEsIDMsIDIzMywgMjQ0LCA0MSwgMywgMjMxLCAzLCA0MSwgMywgMjQzLCA3MSwgNDEsIDMsIDI0NCwgCisgICAgMTIxLCA0MSwgMywgMjEzLCAxNzYsIDQxLCAzLCAyMTYsIDExNywgNDEsIDMsIDIxNiwgMTc1LCA0MSwgMywgMjQ4LCA4LCAKKyAgICA0MSwgMywgMjQ4LCAxMiwgNDEsIDMsIDIzMiwgMjQxLCA0MSwgMywgMjIzLCAzNSwgNDEsIDMsIDI0OCwgMywgNDEsIDMsIAorICAgIDIyOSwgMTMzLCA0MSwgMywgMjE5LCAxOTEsIDQxLCAzLCAyMjAsIDMyLCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgCisgICAgNjksIDQxLCAzLCAyNTAsIDUxLCA0MSwgMywgMjM1LCAxMDgsIDQxLCAzLCAyMjgsIDE2OSwgNDEsIDMsIDIxMSwgOCwgNDEsIAorICAgIDMsIDIzNCwgOTIsIDQxLCAzLCAyMjksIDQzLCA0MSwgMywgMjQyLCAyMTQsIDQxLCAzLCAyMzAsIDIzMCwgNDEsIDMsIDIyOCwgCisgICAgMjMzLCA0MSwgMywgMjI3LCAxNDgsIDQxLCAzLCA2MSwgNDEsIDMsIDI1NCwgMTIzLCA0MSwgMywgMjI5LCA3MiwgNDEsIDMsIAorICAgIDE2MiwgNDEsIDMsIDI0MiwgMTgsIDQxLCAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MCwgNDEsIDMsIAorICAgIDI1MiwgMTgsIDQxLCAzLCAyNTIsIDE5MSwgNDEsIDMsIDIzMSwgMTI0LCA0MSwgMywgMjMzLCAyNTEsIDQxLCAzLCAyMzMsIAorICAgIDI1MCwgNDEsIDMsIDIzMSwgMTAsIDQxLCAzLCAyNDMsIDc5LCA0MSwgMywgMjQ0LCAxOTYsIDQxLCAzLCAyMTQsIDI3LCA0MSwgCisgICAgMywgMjE3LCAxMDUsIDQxLCAzLCAyMTYsIDIwOCwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDE1LCA0MSwgMywgMjMzLCAKKyAgICAxMzUsIDQxLCAzLCAyMDUsIDQxLCAzLCAyNDgsIDIyMSwgNDEsIDMsIDIyOSwgMTQ4LCA0MSwgMywgMjA2LCA0MSwgMywgCisgICAgMjIwLCAxMDIsIDQxLCAzLCAyMTAsIDExNiwgNDEsIDMsIDIxMCwgODIsIDQxLCAzLCAyNTEsIDMzLCA0MSwgMywgMjM1LCAKKyAgICAxNDEsIDQxLCAzLCAyMjgsIDE4NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDE3NiwgNDEsIDMsIDIzNCwgMjM0LCA0MSwgMywgCisgICAgMjI5LCA1NiwgNDEsIDMsIDI0MywgMTM1LCA0MSwgMywgMTg0LCA0MSwgMywgMTk3LCA0MSwgMywgMjI3LCAxNjUsIDQxLCAzLCAKKyAgICAyMjYsIDE4MywgNDEsIDMsIDIyNiwgMTc5LCA0MSwgMywgMjQxLCA1MywgNDEsIDMsIDIxMSwgMjE1LCA0MSwgMywgMjExLCAKKyAgICAyMTEsIDQxLCAzLCAyMjQsIDI0OSwgNDEsIDMsIDI1MiwgOSwgNDEsIDMsIDI1MSwgMTkzLCA0MSwgMywgMjMxLCAxMDQsIAorICAgIDQxLCAzLCAyMzMsIDI0MiwgNDEsIDMsIDIzMCwgMjU1LCA0MSwgMywgMjQzLCA2NywgNDEsIDMsIDI0NCwgMzQsIDQxLCAzLCAKKyAgICAyMTMsIDEyNywgNDEsIDMsIDIxNiwgMTcsIDQxLCAzLCAyMTYsIDE1MywgNDEsIDMsIDI0OCwgNiwgNDEsIDMsIDI0OCwgMTAsIAorICAgIDQxLCAzLCAyMzIsIDEyNywgNDEsIDMsIDIyMiwgMTk3LCA0MSwgMywgMjQ3LCAxMjUsIDQxLCAzLCAyMjksIDEyMCwgNDEsIAorICAgIDMsIDIxOSwgNDAsIDQxLCAzLCAyMjAsIDEsIDQxLCAzLCAyMTAsIDIxLCA0MSwgMywgMjEwLCA2NiwgNDEsIDMsIDI0OSwgCisgICAgMTc0LCA0MSwgMywgMjM1LCA1OSwgNDEsIDMsIDIyOCwgMTU5LCA0MSwgMywgMjEwLCAyMjksIDQxLCAzLCAyMzQsIDEwLCAKKyAgICA0MSwgMywgMjI5LCA0MSwgNDEsIDMsIDI0MiwgMTY0LCA0MSwgMywgMjMwLCAxMzIsIDQxLCAzLCAyMjgsIDY0LCA0MSwgMywgCisgICAgMjI3LCAxMzIsIDQxLCAzLCA3MCwgNDEsIDMsIDIxNCwgMTkwLCA0MSwgMywgMjQwLCAyMjIsIDQxLCAzLCAyNDAsIDIxMiwgCisgICAgNDEsIDMsIDIxMSwgMTk1LCA0MSwgMywgMjExLCAxODksIDQxLCAzLCAyMjQsIDE1MCwgNDEsIDMsIDI1MiwgOCwgNDEsIDMsIAorICAgIDI1MSwgMTI1LCA0MSwgMywgMjMxLCAxMDMsIDQxLCAzLCAyMzMsIDI0MCwgNDEsIDMsIDIzMCwgMjU0LCA0MSwgMywgMjQzLCAKKyAgICA2NiwgNDEsIDMsIDI0MywgMjM0LCA0MSwgMywgMjEyLCAxMTYsIDQxLCAzLCAyMTUsIDExOCwgNDEsIDMsIDIxNiwgMTM2LCAKKyAgICA0MSwgMywgMjQ4LCA0LCA0MSwgMywgMjQ4LCA5LCA0MSwgMywgMjMyLCA5OCwgNDEsIDMsIDIyMiwgMTQwLCA0MSwgMywgCisgICAgMjQ2LCA3OCwgNDEsIDMsIDIyOSwgMTE1LCA0MSwgMywgMjE4LCA4MywgNDEsIDMsIDIxOSwgMjI1LCA0MSwgMywgMjEwLCAKKyAgICAxMywgNDEsIDMsIDIxMCwgNjIsIDQxLCAzLCAyNDksIDExMiwgNDEsIDMsIDIzNSwgNTEsIDQxLCAzLCAyMjgsIDE1NSwgNDEsIAorICAgIDMsIDIxMCwgMjEyLCA0MSwgMywgMjMzLCAyMTcsIDQxLCAzLCAyMjksIDQwLCA0MSwgMywgMjQyLCAxMTMsIDQxLCAzLCAKKyAgICAyMzAsIDEwMiwgNDEsIDMsIDIyNywgMjM3LCA0MSwgMywgMjI3LCAxMjgsIDQxLCAzLCA3NiwgNDEsIDMsIDIyNiwgMTk2LCAKKyAgICA0MSwgMywgMjI5LCAwLCA0MSwgMywgMjQxLCA2OCwgNDEsIDMsIDI0MSwgNTYsIDQxLCAzLCAyMTEsIDIyNywgNDEsIDMsIAorICAgIDIxMSwgMjE2LCA0MSwgMywgMjI1LCAxNiwgNDEsIDMsIDI1MiwgMTAsIDQxLCAzLCAyNTEsIDIwNSwgNDEsIDMsIDIzMSwgCisgICAgMTA1LCA0MSwgMywgMjMzLCAyNDMsIDQxLCAzLCAyMzEsIDEsIDQxLCAzLCAyNDMsIDY5LCA0MSwgMywgMjQzLCA2OCwgNDEsIAorICAgIDMsIDI0NCwgNDMsIDQxLCAzLCAyMTMsIDEzOCwgNDEsIDMsIDExMSwgNDEsIDMsIDIxNiwgMTU2LCA0MSwgMywgMjQ4LCA3LCAKKyAgICA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIzMiwgMTU2LCA0MSwgMywgMjIyLCAyMTEsIDQxLCAzLCAyNDcsIDE0NSwgNDEsIDMsIAorICAgIDIyOSwgMTI0LCA0MSwgMywgMjE5LCA1OCwgNDEsIDMsIDIyMCwgNywgNDEsIDMsIDIxMCwgMjMsIDQxLCAzLCAyMTAsIDY3LCAKKyAgICA0MSwgMywgMjQ5LCAyMzgsIDQxLCAzLCAyMzUsIDY4LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDI0NCwgNDEsIDMsIAorICAgIDIzNCwgMjgsIDQxLCAzLCAyMjksIDQyLCA0MSwgMywgMjQyLCAxNzQsIDQxLCAzLCAyMzAsIDE2MSwgNDEsIDMsIDIyOCwgCisgICAgNzQsIDQxLCAzLCAyMjcsIDEzNCwgNDEsIDMsIDc1LCA0MSwgMywgMjQ1LCAxNTAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgCisgICAgMjQxLCAyMzgsIDQxLCAzLCAyNDEsIDIwOSwgNDEsIDMsIDIxMiwgMjIsIDQxLCAzLCAyMTIsIDEyLCA0MSwgMywgMjI1LCAKKyAgICAyMjEsIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjUyLCA3NSwgNDEsIDMsIDIzMSwgMTE3LCA0MSwgMywgMjMzLCAyNDgsIAorICAgIDQxLCAzLCAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgNywgNDEsIDMsIDI0MywgNzYsIDQxLCAzLCAyNDMsIDc0LCA0MSwgMywgCisgICAgMjQ0LCAxNTQsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgMjIsIDQxLCAzLCAyMTYsIDE5NSwgNDEsIDMsIDI0OCwgCisgICAgMTcsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjMzLCA1OCwgNDEsIDMsIDIyMywgMTI4LCA0MSwgMywgMjQ4LCA5MCwgNDEsIAorICAgIDMsIDIyOSwgMTQwLCA0MSwgMywgMjIxLCAxODEsIDQxLCAzLCAyMjAsIDYzLCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgCisgICAgNzQsIDQxLCAzLCAyNTAsIDE5MCwgNDEsIDMsIDIzNSwgMTI2LCA0MSwgMywgMjI4LCAxNzgsIDQxLCAzLCAyMTEsIDQ3LCAKKyAgICA0MSwgMywgMjM0LCAxODIsIDQxLCAzLCAyMjksIDUyLCA0MSwgMywgMjI5LCA0OCwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKKyAgICAyNDMsIDUxLCA0MSwgMywgMjMxLCA5MSwgNDEsIDMsIDIyOSwgMTA3LCA0MSwgMywgMjI3LCAxNTYsIDQxLCAzLCAyMjksIAorICAgIDc5LCA0MSwgMywgMjMzLCAyMiwgNDEsIDI0OSwgMjE5LCA0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMjI0LCAxMywgCisgICAgNzgsIDQxLCAzLCAyMjksIDEyMywgMjQ0LCAxOTYsIDQxLCAzLCAyMjksIDEyMywgMTc2LCA0MSwgMywgMjI5LCAxMjMsIAorICAgIDIxOSwgNDAsIDQxLCAxNiwgMjQ0LCAxNDQsIDQxLCAxNiwgMjM0LCAxODAsIDQxLCAxNiwgMjE2LCA4MSwgNDEsIDE2LCAKKyAgICAyMjgsIDIwOCwgNDEsIDE2LCAyNTIsIDE0NywgNDEsIDE2LCAyNDQsIDE5NSwgNDEsIDE2LCAyMTcsIDEwMSwgNDEsIDE2LCAKKyAgICAyNDgsIDE3NiwgNDEsIDE2LCAyNDcsIDEyNCwgNDEsIDE2LCAyMzMsIDIwNiwgNDEsIDE2LCAyMTYsIDIxLCA0MSwgMTYsIAorICAgIDI0NywgMTQ0LCA0MSwgMTYsIDIzNSwgNjAsIDQxLCAyMSwgMjEwLCA4NiwgNDEsIDIxLCAxMTAsIDQxLCAyMSwgMTA1LCA0MSwgCisgICAgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTg5LCA0MSwgMjEsIDE5NCwgNDEsIDIxLCAxOTgsIDQxLCAyMSwgMTk1LCAKKyAgICA0MSwgMjEsIDIwMCwgNDEsIDMsIDIyOSwgMTIzLCAxODQsIDQxLCAzLCAyMjksIDEyMywgMjQ3LCAxNDUsIDMzLCA2LCAxLCAKKyAgICAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIDEsIDI0NiwgMzQsIDMzLCA0LCAxLCAyNDYsIDM0LCAzMywgNiwgCisgICAgMSwgMjIzLCA0OSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDIyMywgNDksIDI0NiwgMzYsIDMzLCA2LCAxLCAyMzUsIDE4NSwgMzMsIAorICAgIDQsIDEsIDIzNSwgMTg1LCAzMywgNiwgMSwgMjQ3LCAxNjEsIDMzLCA0LCAxLCAyNDcsIDE2MSwgMzMsIDYsIDEsIDIzMCwgCisgICAgMTQwLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTM2LCAyMjYsIAorICAgIDIwMSwgMzMsIDQsIDEsIDI1MSwgMTM2LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyOSwgODcsIDIxMSwgMzEsIDMzLCA0LCAxLCAKKyAgICAyMjksIDg3LCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjUyLCAxODUsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIAorICAgIDI4LCAyLCAyNTIsIDE4NSwgMjExLCAzMSwgMzMsIDYsIDEsIDIzNSwgMTgzLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAKKyAgICAxODMsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTAsIDIxMiwgMzMsIDQsIDEsIDIyMywgNDksIDIxMCwgMjEyLCAKKyAgICAzMywgNiwgMSwgMjM1LCAxODMsIDYxLCAzMywgNCwgMSwgMjM1LCAxODMsIDYxLCAzMywgNiwgMSwgMjUwLCAwLCAyMzIsIAorICAgIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjE0LCAKKyAgICAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjE0LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgCisgICAgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIAorICAgIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTUsIDE3OCwgMzMsIDQsIDEsIDIyMywgCisgICAgNDksIDIxNSwgMTc4LCAzMywgNiwgMSwgMjE5LCA1MiwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0OCwgOTAsIDMzLCAKKyAgICA2LCAxLCAyMTksIDUyLCAyNDUsIDE3NCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0NSwgMTc0LCAzMywgNiwgMSwgMjE5LCA1MiwgCisgICAgMjQ1LCAxNTksIDMzLCA0LCAxLCAyMTksIDUyLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDIzMCwgMTQ0LCA3NiwgMzMsIDQsIDEsIAorICAgIDIzMCwgMTQ0LCA3NiwgMzMsIDYsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDQsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDYsIDEsIAorICAgIDUyLCAyMzAsIDE0NCwgNzYsIDMzLCA0LCAxLCA1MiwgMjMwLCAxNDQsIDc2LCAzMywgMSwgMjMwLCA4NiwgNzYsIDM4LCAzMywgCisgICAgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDgsIDIzMCwgMTkxLCA1MCwgMzgsIDMzLCAyNDAsIDIxMSwgMjMwLCAxOTEsIDUwLCAKKyAgICAzOCwgMzMsIDIxNiwgMTQ4LCAyMzAsIDE5MSwgNTAsIDIxOSwgOTMsIDI1MywgMjE2LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAKKyAgICAyMzYsIDYwLCAzOCwgMzMsIDEsIDczLCAzOCwgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA3MCwgMzgsIDMzLCAxLCAyNDIsIAorICAgIDMsIDUwLCAzOCwgMzMsIDEsIDIxMSwgMjcsIDM4LCAzMywgMSwgMjE5LCA1MiwgNTAsIDM4LCAzMywgMSwgMjI2LCAyMDEsIAorICAgIDM4LCAzMywgMjM0LCAxOTIsIDM4LCAzMywgMjI1LCAyMjcsIDMzLCAyMzQsIDE5MiwgMzMsIDIyNSwgMjI3LCAzMywgNiwgMSwgCisgICAgMjQ2LCA0NiwgMzMsIDQsIDEsIDI0NiwgNDYsIDMzLCA2LCAxLCAyNDYsIDI3LCAzMywgNCwgMSwgMjQ2LCAyNywgMzMsIDYsIAorICAgIDEsIDIxMCwgNTIsIDMzLCA0LCAxLCAyMTAsIDUyLCAzMywgNiwgMSwgMjUwLCAyMDYsIDMzLCA0LCAxLCAyNTAsIDIwNiwgCisgICAgMzMsIDYsIDEsIDI0NiwgMjUsIDMzLCA0LCAxLCAyNDYsIDI1LCAzMywgNiwgMSwgMjE3LCAyMywgMiwgMjMwLCAyMjQsIAorICAgIDEwMywgMzMsIDQsIDEsIDIxNywgMjMsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyMTUsIDc4LCAzMywgNCwgMSwgCisgICAgMjE1LCA3OCwgMzMsIDYsIDEsIDIxNSwgMTYwLCAzMywgNCwgMSwgMjE1LCAxNjAsIDMzLCA2LCAxLCAyMTUsIDE2NCwgMzMsIAorICAgIDQsIDEsIDIxNSwgMTY0LCAzMywgNiwgMSwgMjE3LCAyOCwgMzMsIDQsIDEsIDIxNywgMjgsIDMzLCA2LCAxLCAyNDAsIDE5OCwgCisgICAgMzMsIDQsIDEsIDI0MCwgMTk4LCAzMywgNiwgMSwgMjE5LCAyMDYsIDMzLCA0LCAxLCAyMTksIDIwNiwgMzgsIDMzLCAxLCAKKyAgICAyMzUsIDE4MywgNzUsIDIwLCAxLCA2MSwgMjAsIDEsIDE3NiwgMjAsIDEsIDcwLCAyMCwgMSwgMjMzLCAyMTcsIDIwLCAxLCAKKyAgICAyNDUsIDIwOSwgMjAsIDEsIDIyMywgMTA4LCAyMCwgMSwgMjE3LCA4NiwgMjAsIDEsIDc2LCAyMCwgMSwgMjI3LCAxNDgsIAorICAgIDIwLCAxLCA3MywgMjAsIDEsIDIzMywgMTM1LCAyMCwgMSwgMTkwLCAyMCwgMSwgMjIyLCAyMzksIDIwLCAxLCAyMjMsIDI5LCAKKyAgICAyMCwgMSwgMjMzLCA0OSwgMjAsIDEsIDIzMSwgNzksIDIwLCAxLCAyMTcsIDEwMSwgMjAsIDEsIDIyOSwgMTQ2LCAyMCwgMSwgCisgICAgMjI4LCAxODMsIDIwLCAxLCAxOTMsIDIwLCAxLCAyMTgsIDQsIDIwLCAxLCAyMzAsIDEwMiwgMjAsIDEsIDIyMCwgMjcsIDIwLCAKKyAgICAxLCAyMTksIDE5MSwgMjAsIDEsIDIyMCwgMzcsIDIwLCAxLCAyMjAsIDEyMywgMjAsIDEsIDIzMywgMTU1LCAyMCwgMSwgCisgICAgMjM0LCAxNTYsIDIwLCAxLCAyMjcsIDIwOSwgMjAsIDEsIDIyNywgMjM3LCAyMCwgMSwgMjI4LCAxNTQsIDIwLCAxLCAyMTAsIAorICAgIDIyNiwgMjAsIDEsIDIxOSwgMjI1LCAyMCwgMSwgMjEwLCAxODcsIDIwLCAxLCAxOTEsIDIwLCAxLCAyMjgsIDksIDIwLCAxLCAKKyAgICAyMzQsIDE0MiwgMjAsIDEsIDIyNSwgMTUxLCAyMCwgMSwgMjI4LCAxNzYsIDIwLCAxLCAyMjcsIDI0NiwgMjAsIDEsIDIyNCwgCisgICAgMTQ0LCAyMCwgMSwgMjExLCAxOTIsIDIwLCAxLCAyMjUsIDIxMSwgMjAsIDEsIDI0NCwgMTQ3LCAyMCwgMSwgMjIyLCAxNDAsIAorICAgIDIwLCAxLCAyMzIsIDk4LCAyMCwgMSwgMjMwLCAyMzAsIDIwLCAxLCAyMjgsIDIzMywgMjAsIDEsIDIyMywgNTEsIDIwLCAxLCAKKyAgICAyMjMsIDE3MSwgMjAsIDEsIDIzNCwgMTY1LCAyMCwgMSwgMjI5LCA3LCAyMCwgMSwgMjI5LCA1NiwgMjAsIDEsIDIyOSwgNzcsIAorICAgIDIwLCAxLCAyMjAsIDcsIDIwLCAxLCAyMjQsIDE0NywgMjAsIDEsIDI0MywgMjM0LCAyMCwgMSwgMjQ0LCAzNywgMjAsIDEsIAorICAgIDIxMiwgNjUsIDIwLCAxLCAxOTcsIDIwLCAxLCAyMzIsIDI0MSwgMjAsIDEsIDIyNSwgMTA4LCAyMCwgMSwgMjMyLCAxMTksIAorICAgIDIwLCAxLCAyMzQsIDI4LCAyMCwgMSwgMjMxLCAxMTQsIDIwLCAxLCAyMjMsIDgzLCAyMCwgMSwgMjMxLCA1OCwgMjAsIDEsIAorICAgIDE4NCwgMjAsIDEsIDIxNiwgMTE3LCAyMCwgMSwgMjM0LCA5MiwgMjAsIDEsIDIzMCwgMTYxLCAyMCwgMSwgMjMxLCAxMjIsIAorICAgIDIwLCAxLCAyMTYsIDIzMCwgMjAsIDEsIDIzMywgMjUxLCAyMCwgMSwgMjE2LCAyNDcsIDIwLCAxLCAyMjcsIDIzOCwgMjAsIAorICAgIDEsIDIyMSwgMjUxLCAyMCwgMSwgMjQ0LCAxOTIsIDIwLCAxLCAyMzMsIDI1MywgMjAsIDEsIDIzNCwgMjQsIDIwLCAzOCwgCisgICAgMTY0LCAyMzQsIDUsIDIwLCAzOCwgMTY0LCAyMTUsIDExMCwgMjAsIDIyOCwgMTgyLCAyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICAyMCwgMjQ5LCAyMjYsIDIwLCAyNDksIDIxOSwgMjAsIDIyMCwgMTUwLCAyMCwgMjI0LCAxMywgNzgsIDU4LCAxLCAyNTAsIAorICAgIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjUsIDYxLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAyMjUsIDYxLCA1OCwgMSwgCisgICAgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjIwLCA4NCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgMjIwLCA4NCwgCisgICAgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIAorICAgIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjIsIDE0MCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgCisgICAgMjExLCA3MCwgMjIyLCAxNDAsIDU4LCAxLCAyNDUsIDIwLCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgCisgICAgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTE4LCAKKyAgICAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE4LCAKKyAgICAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAKKyAgICAyMjUsIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMCwgMjMzLCAKKyAgICAzOSwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDIzMywgMzksIAorICAgIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDIzMywgMzksIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgNTksIDY3LCAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NSwgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIAorICAgIDIzMiwgMTA4LCA0NCwgMjQ5LCAxNjEsIDI1NCwgMTA5LCA1OCwgMSwgMjIzLCAxNTcsIDEyMCwgNzQsIDU4LCAxLCAyMjMsIAorICAgIDE1NywgMTI0LCA3NCwgNTgsIDEsIDIyMywgMTU3LCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIyMywgMTU3LCAyMzUsIDE5MywgCisgICAgMjQ1LCAzMSwgNzgsIDU4LCAxLCAxMjEsIDIzNSwgMTkzLCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIxOCwgMTExLCAyMiwgMTI1LCAKKyAgICAyMTYsIDMwLCA1OCwgMSwgMjE4LCAxMTEsIDIyLCAxMjEsIDIxNiwgMzAsIDcsIDYsIDEsIDI0NSwgMTk5LCAyNTQsIDE3MCwgCisgICAgNywgNCwgMSwgMjQ1LCAxOTksIDI1NCwgMTcwLCA3LCA2LCAxLCAyNDUsIDE5OSwgMjU0LCAxOTYsIDcsIDQsIDEsIDI0NSwgCisgICAgMTk5LCAyNTQsIDE5NiwgNywgNiwgMSwgMjQxLCAyMDcsIDcsIDQsIDEsIDI0MSwgMjA3LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCAKKyAgICA0LCAxLCAyMTUsIDQwLCA3LCA2LCAxLCAyMTUsIDIyOSwgNywgNCwgMSwgMjE1LCAyMjksIDcsIDYsIDEsIDI0OSwgMTEwLCAKKyAgICA3LCA0LCAxLCAyNDksIDExMCwgNywgNiwgMSwgMjQ5LCAxMTEsIDIsIDI0OSwgMjE5LCA3LCA0LCAxLCAyNDksIDExMSwgMiwgCisgICAgMjQ5LCAyMTksIDcsIDEsIDQsIDYsIDI0NSwgNiwgNywgMSwgNCwgNiwgMjIyLCA5MSwgNywgNiwgMSwgMjU1LCA3MywgNywgCisgICAgNCwgMSwgMjU1LCA3MywgNywgNiwgMSwgMjU0LCA3MywgNywgNCwgMSwgMjU0LCA3MywgNywgNiwgMSwgMjUzLCAxOTIsIDcsIAorICAgIDQsIDEsIDI1MywgMTkyLCA3LCA2LCAxLCAyNTMsIDE3NiwgNywgNCwgMSwgMjUzLCAxNzYsIDcsIDYsIDEsIDI1MywgMTc3LCAKKyAgICAyLCAyMDMsIDEzMCwgNywgNCwgMSwgMjUzLCAxNzcsIDIsIDIwMywgMTMwLCA3LCA2LCAxLCAyNTMsIDE2NywgNywgNCwgMSwgCisgICAgMjUzLCAxNjcsIDcsIDYsIDEsIDIyMywgNDksIDI1MSwgNjcsIDIsIDI0NywgMTIwLCA3LCA0LCAxLCAyMjMsIDQ5LCAyNTEsIAorICAgIDY3LCAyLCAyNDcsIDEyMCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDkxLCA3LCA2LCAKKyAgICAxLCAyMzUsIDI0LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNCwgMiwgMjE4LCAxMDMsIDIyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDIxOCwgMTAzLCAKKyAgICAyMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA0LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA2LCAKKyAgICAxLCAyMzMsIDE0OSwgMiwgMTI1LCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDQsIDEsIDE0NCwgMiwgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDQsIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDYsIDEsIDIyNiwgMTgzLCA3LCA0LCAKKyAgICAxLCAyMjYsIDE4MywgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNCwgMSwgCisgICAgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDI0NCwgNTMsIAorICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyNDQsIDUzLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAyMjksIDIxNywgNzcsIAorICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDIyOSwgMjE3LCA3NywgNywgNiwgMSwgMjI0LCA5NywgMiwgMjE4LCAxMDMsIAorICAgIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMjQsIDk3LCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIAorICAgIDYsIDEsIDIyNCwgOTcsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjI0LCA5NywgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAKKyAgICAxLCAyMjMsIDIyNCwgMjIyLCAxODYsIDcsIDQsIDEsIDIyMywgMjI0LCAyMjIsIDE4NiwgNywgNiwgMSwgMjIyLCAxMzAsIAorICAgIDIyMiwgMTg2LCA3LCA0LCAxLCAyMjIsIDEzMCwgMjIyLCAxODYsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgCisgICAgOTEsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIDIxMiwgMTA2LCA3LCA0LCAxLCAyMTIsIAorICAgIDEwNiwgNywgNiwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA0LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDYsIDEsIAorICAgIDIxNiwgMTUyLCAyLCA5MSwgNywgNCwgMSwgMjE2LCAxNTIsIDIsIDkxLCA3LCA2LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAKKyAgICAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIAorICAgIDM5LCA3LCA2LCAxLCAyMTMsIDI0NSwgNywgNCwgMSwgMjEzLCAyNDUsIDcsIDYsIDEsIDI0NSwgNjUsIDcsIDQsIDEsIDI0NSwgCisgICAgNjUsIDcsIDYsIDEsIDIzNSwgMTcxLCA3LCA0LCAxLCAyMzUsIDE3MSwgNywgNiwgMSwgMjQ5LCAyMDcsIDcsIDQsIDEsIAorICAgIDI0OSwgMjA3LCA1OCwgMSwgMjE0LCAxMzMsIDcsIDQsIDEsIDI0NiwgNjksIDcsIDQsIDEsIDIzMiwgODQsIDcsIDQsIDEsIAorICAgIDIzMCwgODAsIDcsIDQsIDEsIDIyNywgMjAxLCA3LCA0LCAxLCAyMjIsIDEyOSwgNywgMSwgNCwgNiwgMjIyLCAxMjksIDcsIAorICAgIDQsIDEsIDIxNSwgMTA4LCA3LCA0LCAxLCAyMTQsIDE5NywgNywgNiwgMSwgMjM1LCAyMTMsIDI0OSwgNjAsIDcsIDQsIDEsIAorICAgIDIzNSwgMjEzLCAyNDksIDYwLCA3LCA2LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCA3LCA0LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCAKKyAgICA3LCA2LCAxLCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIAorICAgIDE1NiwgNywgNiwgMSwgMjM1LCAyMTMsIDE1MywgNywgNCwgMSwgMjM1LCAyMTMsIDE1MywgNywgNiwgMSwgMjM1LCAyMTMsIAorICAgIDIyMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjEzLCAyMjIsIDkxLCA3LCA2LCAxLCAyMzUsIDIxMywgMjE3LCAxNTIsIDcsIDQsIAorICAgIDEsIDIzNSwgMjEzLCAyMTcsIDE1MiwgNTgsIDEsIDEyMSwgMjUwLCAzMSwgMjU1LCAxNCwgNTgsIDEsIDI0OSwgMjI2LCA1OCwgCisgICAgMSwgMjE5LCAyNTEsIDI0NSwgOTgsIDUwLCA3LCA2LCAxLCAyMjEsIDI1NSwgNywgNCwgMSwgMjIxLCAyNTUsIDcsIDYsIDEsIAorICAgIDIxNSwgOTQsIDI0MiwgNjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAyNDEsIDUyLCAyMiwgMjUyLCA0MSwgNywgCisgICAgNiwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjUxLCAKKyAgICA2NywgMiwgMTMwLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIAorICAgIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgCisgICAgNCwgMSwgMjM1LCAyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIAorICAgIDEsIDIzMCwgMjYsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAxLCAKKyAgICAyMjIsIDkyLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjEsIDIsIAorICAgIDkxLCA1OCwgMSwgNCwgMjcsIDIyNiwgMjM0LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAKKyAgICAyMjMsIDQ5LCAyNDUsIDYsIDcsIDI0NSwgMTAzLCAxLCAyMjMsIDQ5LCAyMjYsIDEwNSwgNywgMjQ1LCAxMDMsIDEsIDIzNSwgCisgICAgMTkzLCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAyNDAsIDE1NCwgMjMyLCAxMjksIDcsIDI0NSwgMTAzLCAxLCAyNTQsIDIzLCAKKyAgICAxOTMsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzMsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgNSwgMjQ2LCA0OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3MCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NSwgCisgICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCA1LCAyNDEsIDI1MywgMjE3LCAyMzAsIAorICAgIDIyOSwgMjE0LCAxLCAyMzQsIDI4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDI0MiwgMTc0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0MiwgMjI0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDUsIAorICAgIDI1NCwgNzUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ5LCAyMzgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjUwLCA4NiwgCisgICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMzUsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNSwgMTA5LCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTMzLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTM5LCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDI0OCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OCwgMTE0LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDExMSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTYsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDcsIAorICAgIDE0NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDgsIDcsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjI4LCA3NCwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAxLCAyMjUsIDE2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyNSwgMTIxLCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDI1MSwgMjA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI1MiwgMTAsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMjMwLCAxNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAyMTEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgCisgICAgMjMyLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAxNjUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE5LCAKKyAgICA1OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDEsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA2MSwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNzMsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDcwLCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDI1LCA1LCA3NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgMjI2LCAxODMsIDIxNywgMjMwLCAyMjksIDIxNCwgCisgICAgMjI1LCAxMiwgMjMxLCAxNTgsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTcsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTUsIDIyOCwgNTYsIAorICAgIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAKKyAgICAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgCisgICAgMjE5LCAxMTcsIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDIyOCwgNTYsIDIzNSwgMjQwLCAKKyAgICAyNDQsIDIsIDEzNCwgMjE5LCAxMTYsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjQsIDIyLCA3OCwgMjI4LCA1NiwgMjM1LCAyNDAsIAorICAgIDIyNSwgNDAsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjIyLCAxMTgsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjI0LCAyMywgCisgICAgNzgsIDIyNSwgMTQ0LCAxLCAxNzYsIDIyNSwgMTQ0LCAxLCAyMzQsIDEzMiwgMjI1LCAxNDQsIDEsIDI0MywgMTM1LCAyMjUsIAorICAgIDE0NCwgMSwgMjI5LCA3NywgMjI1LCAxNDQsIDEsIDI1MSwgMzMsIDIyNSwgMTQ0LCAxLCAyNTAsIDE1NywgMjI1LCAxNDQsIAorICAgIDEsIDIzNSwgMTQxLCAyMjUsIDE0NCwgMSwgMjI3LCAxNjUsIDIyNSwgMTQ0LCAxLCAyMTcsIDEwNSwgMjI1LCAxNDQsIDEsIAorICAgIDIxNiwgMjA4LCAyMjUsIDE0NCwgMSwgMjQ4LCAyMjEsIDIyNSwgMTQ0LCAxLCAxOTcsIDIyNSwgMTQ0LCAxLCAxOTAsIDIyNSwgCisgICAgMTQ0LCAxLCAyMjUsIDE0NywgMjI1LCAxNDQsIDEsIDI1MiwgMTkxLCAyMjUsIDE0NCwgMSwgMTg0LCAyMjUsIDE0NCwgMSwgCisgICAgMjE1LCAxODMsIDIyNSwgMTQ0LCAxLCAyMTUsIDE3NSwgMjI1LCAxNDQsIDEsIDI0NiwgMzgsIDIyNSwgMTQ0LCAxLCAyMTIsIAorICAgIDY1LCAyMjUsIDE0NCwgMSwgMjEwLCA4MiwgMjI1LCAxNDQsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NCwgMSwgNCwgNjEsIDIyNSwgCisgICAgMTQ0LCAxLCAxOTEsIDIyNSwgMTQ0LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAyMzMsIDEzNSwgMjI1LCAxNDQsIDEsIDIyMCwgCisgICAgMTAyLCAyMjUsIDE0NCwgMSwgMjA2LCAyMjUsIDE0NCwgMSwgMTYyLCAyMjUsIDE0NCwgMSwgNjEsIDIyNSwgMTQ0LCAxLCAKKyAgICA3MywgMjI1LCAxNDQsIDEsIDcwLCAyMjUsIDE0NCwgMSwgNzUsIDIyNSwgMTQ0LCAxLCA3NiwgMjI1LCAxNDQsIDEsIDIyNCwgCisgICAgODgsIDIyNSwgMTQ0LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDQsIDEsIDI0NCwgMTk2LCAyMjUsIDE0NCwgMSwgMjQzLCAyOSwgCisgICAgMjI1LCAxNDQsIDEsIDI0NSwgMjA5LCAyMjUsIDE0NCwgMjE4LCA3MywgMSwgMjEyLCA2NSwgMjI1LCAxNDQsIDIxOCwgNzMsIAorICAgIDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxNSwgMTU2LCAyMjUsIDE0NCwgMSwgMjE1LCAxNDQsIDIyNSwgMTQ0LCAxLCAyNDgsIAorICAgIDEzNSwgMjI1LCAxNDQsIDEsIDIyOCwgMTEwLCAyMjUsIDE0NCwgMSwgMjU0LCAxNDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxMywgCisgICAgMTM0LCAyMjAsIDEwMiwgMjI1LCAxNDQsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ0LCAxLCAyNTMsIDIyMywgMjQ0LCAKKyAgICAxOTYsIDIyNSwgMTQ0LCAyMTgsIDczLCAxLCAyMDUsIDIyNSwgMTQ0LCAyMTgsIDI1LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAKKyAgICAyNTAsIDI1NSwgMjI1LCAxNDQsIDIxOSwgMTU1LCAyNDEsIDIzNiwgNzgsIDIyNSwgMTQ0LCA1MiwgMjQxLCAyMzYsIDc4LCAKKyAgICAyMjUsIDE0NCwgMTY0LCAyMjAsIDk1LCAyMjUsIDE0NCwgMTY0LCA1MiwgMjIwLCA5NSwgMTc5LCA1LCAyNTQsIDc1LCAxNzksIAorICAgIDUsIDIxMywgMTQ3LCAxNzksIDEsIDYxLCAxNzksIDEsIDI1NSwgNzMsIDE3OSwgMSwgNzMsIDE3OSwgMSwgMjM2LCAzMywgCisgICAgMTc5LCAxLCA3MCwgMTc5LCAxLCAyMTQsIDExOCwgMTc5LCAxLCAxNDksIDE1MywgMTc5LCAxLCAxNDksIDIyMiwgMTgwLCAKKyAgICAxNzksIDEsIDE0OSwgMTU2LCAxNzksIDEsIDE0OSwgMjMyLCAxODUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjQ1LCAyMDksIAorICAgIDE3OSwgMSwgMjU0LCAyMDEsIDE3OSwgMSwgNzYsIDE3OSwgMSwgMjI2LCAxODMsIDE3OSwgMSwgMjUzLCAxOTIsIDE3OSwgMSwgCisgICAgMTc2LCAxNzksIDEsIDIzNCwgMTMyLCAxNzksIDEsIDI0MywgMTM1LCAxNzksIDEsIDI0MiwgMjQ5LCAxNzksIDEsIDIyOSwgCisgICAgNzcsIDE3OSwgMSwgMjUxLCAzMywgMTc5LCAxLCAyNTAsIDE1NywgMTc5LCAxLCAyMzUsIDE0MSwgMTc5LCAxLCAyMzUsIAorICAgIDExNCwgMTc5LCAxLCAyMjcsIDE2NSwgMTc5LCAxLCAyMTUsIDE1NiwgMTc5LCAxLCAyMTUsIDE0NCwgMTc5LCAxLCAyNDgsIAorICAgIDEzNSwgMTc5LCAxLCAyNDgsIDExOSwgMTc5LCAxLCAyMjgsIDExMCwgMTc5LCAxLCAyMTcsIDEwNSwgMTc5LCAxLCAyMTYsIAorICAgIDIwOCwgMTc5LCAxLCAyNDgsIDIyMSwgMTc5LCAxLCAyNDgsIDI1LCAxNzksIDEsIDE5NywgMTc5LCAxLCAxOTAsIDE3OSwgMSwgCisgICAgMjI1LCAxNDcsIDE3OSwgMSwgMjUyLCAxOTEsIDE3OSwgMSwgMjUyLCAxOCwgMTc5LCAxLCAxODQsIDE3OSwgMSwgMTkxLCAKKyAgICAxNzksIDEsIDIwNSwgMTc5LCAxLCAyMzMsIDEzNSwgMTc5LCAxLCAyMTQsIDI3LCAxNzksIDEsIDIyMCwgMTAyLCAxNzksIDEsIAorICAgIDIxOCwgMjIzLCAxNzksIDEsIDIwNiwgMTc5LCAxLCAxNjIsIDE3OSwgMSwgMjMyLCAxODQsIDE3OSwgMTE2LCA1LCAyNDIsIAorICAgIDQ0LCAxNzksIDI1LCA1LCAyNTUsIDczLCAxNzksIDI1LCA1LCA3MywgMTc5LCAyNSwgNSwgMjM2LCAzMywgMTc5LCAyNSwgNSwgCisgICAgNzAsIDE3OSwgMjUsIDUsIDIxNCwgMTE4LCAxNzksIDI1LCA1LCAxNDksIDE1MywgMTc5LCAyNSwgNSwgMTQ5LCAyMjIsIAorICAgIDE4MCwgMTc5LCAyNSwgNSwgMTQ5LCAxNTYsIDE3OSwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3OSwgMjUsIDUsIDc1LCAKKyAgICAxNzksIDI1LCA1LCAyNDUsIDIwOSwgMTc5LCAyNSwgNSwgMjU0LCAyMDEsIDE3OSwgMjUsIDUsIDc2LCAxNzksIDI1LCA1LCAKKyAgICAyMjYsIDE4MywgMTc5LCAyNSwgNSwgMjUzLCAxOTIsIDE3OSwgNSwgMjEzLCAxNTIsIDE3OSwgMjQ4LCAxNzgsIDE3OSwgNTIsIAorICAgIDI0OCwgMTc4LCAxNzksIDIxLCAyMTAsIDg2LCAxNzksIDIxLCAxMTAsIDE3OSwgMjEsIDEwNSwgMTc5LCAyMSwgMTU4LCAKKyAgICAxNzksIDIxLCAxNjEsIDE3OSwgMjEsIDE4OSwgMTc5LCAyMSwgMTk0LCAxNzksIDIxLCAxOTgsIDE3OSwgMjEsIDE5NSwgCisgICAgMTc5LCAyMSwgMjAwLCAzOCwgODQsIDIxLCAyMTAsIDg2LCAzOCwgODQsIDIxLCAxMTAsIDM4LCA4NCwgMjEsIDEwNSwgMzgsIAorICAgIDg0LCAyMSwgMTU4LCAzOCwgODQsIDIxLCAxNjEsIDM4LCA4NCwgMjEsIDE4OSwgMzgsIDg0LCAyMSwgMTk0LCAzOCwgODQsIAorICAgIDIxLCAxOTgsIDM4LCA4NCwgMjEsIDE5NSwgMzgsIDg0LCAyMSwgMjAwLCAzOCwgODQsIDEsIDYxLCAzOCwgODQsIDEsIDcwLCAKKyAgICAzOCwgODQsIDEsIDE3NiwgMzgsIDg0LCAxLCAxOTcsIDM4LCA4NCwgMSwgMTkwLCAzOCwgODQsIDEsIDIwNSwgMzgsIDg0LCAKKyAgICAxLCAyMTMsIDE3NiwgMzgsIDg0LCA1LCAyNTMsIDE3NSwgODQsIDUsIDIxOSwgMTcsIDI1MCwgMjU1LCA4NCwgNSwgMjUxLCAKKyAgICAwLCAyMTMsIDE1MiwgODQsIDUsIDUyLCAyNTEsIDAsIDIxMywgMTUyLCA4NCwgNSwgMjUxLCAwLCAxMDUsIDg0LCA1LCAyNTEsIAorICAgIDAsIDE1OCwgODQsIDUsIDI1MSwgMCwgMjUzLCAxNzUsIDg0LCA1LCAyMjQsIDEyNCwgODQsIDI0MywgMTAwLCAyNDQsIDEwMywgCisgICAgODQsIDI1MCwgMjM4LCA4NCwgMjQxLCAyMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDIxMCwgODYsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMjEsIDExMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTA1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAKKyAgICAxNTgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE2MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTg5LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDIxLCAxOTQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE5OCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgCisgICAgMTk1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAyMDAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTc2LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDIzNCwgMTMyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0MywgMTM1LCAyMzQsIDE4OCwgMjMyLCAKKyAgICAyNDIsIDEsIDIyOSwgNzcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjA2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyMCwgCisgICAgMTAyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxMCwgMTE2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNywgMTY1LCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNywgMTA1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0MCwgMjI2LCAyMzQsIAorICAgIDE4OCwgMjMyLCAyNDIsIDEsIDE5NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxOTAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgMjI1LCAxNDcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTg0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0OCwgMjIxLCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI1MiwgMTkxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIwNSwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAxLCAxOTEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjMzLCAxMzUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgMjEyLCA2NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTYsIDIwOCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxNjIsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE0LCAyNywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNTEsIDMzLCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDYxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNiwgMjM0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAorICAgIDczLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNiwgMTgzLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCAyMTQsIDIxNCwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDcwLCAyMzQsIDE4OCwgMjMyLCAKKyAgICAyNDIsIDI1LCAyNDUsIDIwOSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAKKyAgICAyMjUsIDMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgMjUxLCAxMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIDI1MSwgCisgICAgMTMsIDIyNSwgMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgNSwgMjQ5LCA3NywgMjM0LCAxODgsIDIzMiwgMjQyLCA1LCAyMTksIAorICAgIDE5OSwgMjIzLCA5MywgMSwgMTc2LCAyMjMsIDkzLCAxLCAyNDMsIDEzNSwgMjIzLCA5MywgMSwgMjI5LCA3NywgMjIzLCA5MywgCisgICAgMSwgMjE3LCAxMDUsIDIyMywgOTMsIDEsIDI0OCwgMjIxLCAyMjMsIDkzLCAxLCAxOTcsIDIyMywgOTMsIDEsIDE5MCwgMjIzLCAKKyAgICA5MywgMSwgMjUyLCAxOTEsIDIyMywgOTMsIDEsIDE4NCwgMjIzLCA5MywgMSwgMjUxLCAzMywgMjIzLCA5MywgMSwgMjM1LCAKKyAgICAxNDEsIDIyMywgOTMsIDEsIDIyNywgMTY1LCAyMjMsIDkzLCAxLCAyMDYsIDIyMywgOTMsIDEsIDIwNSwgMjIzLCA5MywgMSwgCisgICAgMjMzLCAxMzUsIDIyMywgOTMsIDEsIDE5MSwgMjIzLCA5MywgMSwgMjEyLCA2NSwgMjIzLCA5MywgMSwgMTYyLCAyMjMsIDkzLCAKKyAgICAxLCAyMzEsIDEyNCwgMjIzLCA5MywgMSwgMjI5LCA1NiwgMjIzLCA5MywgMSwgMjI5LCAxNDgsIDIyMywgOTMsIDEsIDIyNywgCisgICAgMTM1LCAyMjMsIDkzLCAxLCA2MSwgMjIzLCA5MywgMjUsIDUsIDczLCAyMjMsIDkzLCAyNSwgNSwgNzAsIDIyMywgOTMsIDI1LCAKKyAgICA1LCA3NSwgMjIzLCA5MywgMjUsIDUsIDI1NCwgMjAxLCAyMjMsIDkzLCAyNSwgNSwgNzYsIDIyMywgOTMsIDI1LCA1LCAyNTMsIAorICAgIDE5MiwgMjIzLCA5MywgMjUsIDUsIDI0NSwgNTUsIDIyMywgOTMsIDI1LCA1LCAyNDUsIDIzMywgMjIzLCA5MywgMTE2LCA1LCAKKyAgICAyMjksIDc5LCAyMjMsIDkzLCAxMTYsIDUsIDIzMCwgMjUsIDIyMywgOTMsIDExNiwgNSwgMTUzLCAyMjMsIDkzLCAxMTYsIDUsIAorICAgIDI0MiwgNjAsIDIyMywgOTMsIDIxMywgMTUyLCAyMjMsIDkzLCAyMjEsIDE3MywgNzgsIDI0LCAxMDAsIDIxNiwgOTcsIDI0LCAKKyAgICAxMDAsIDIxNiwgOTYsIDI0LCAxMDAsIDIxNiwgOTQsIDI0LCAxMDAsIDIxNiwgOTksIDI0LCAxMDAsIDIyMywgMjEsIDI0LCAKKyAgICAxMDAsIDIyMywgNSwgMjQsIDEwMCwgMjIzLCAwLCAyNCwgMTAwLCAyMjMsIDIsIDI0LCAxMDAsIDIyMywgMTgsIDI0LCAxMDAsIAorICAgIDIyMywgMTEsIDI0LCAxMDAsIDIyMywgNCwgMjQsIDEwMCwgMjIzLCAyMywgMjQsIDEwMCwgMjIzLCA2LCAyNCwgMTAwLCAKKyAgICAyMjMsIDI1LCAyNCwgMTAwLCAyMjMsIDIyLCAyNCwgMTAwLCAyMzAsIDIxMywgMjQsIDEwMCwgMjMwLCAyMDQsIDI0LCAxMDAsIAorICAgIDIzMCwgMjA3LCAyNCwgMTAwLCAyMjUsIDgwLCAyNCwgMTAwLCAyMjUsIDkxLCAyNCwgMTAwLCAyMjUsIDkyLCAyNCwgMTAwLCAKKyAgICAyMTgsIDIwNywgMjQsIDEwMCwgMjM2LCA0NiwgMjQsIDEwMCwgMjM2LCA1MywgMjQsIDEwMCwgMjE4LCAyMTgsIDI0LCAxMDAsIAorICAgIDIxOCwgMjA1LCAyNCwgMTAwLCAyMjUsIDEzMCwgMjQsIDEwMCwgMjQxLCAxNjcsIDI0LCAxMDAsIDIxOCwgMjAyLCAxNTUsIAorICAgIDUsIDIyNiwgMjcsIDE1NSwgNSwgMjUwLCAxODcsIDE1NSwgNSwgMjMzLCA2NiwgMTU1LCA1LCAyMTEsIDI0MywgMTU1LCAxLCAKKyAgICA2MSwgMTU1LCAxLCAyNDAsIDE1NCwgMjM0LCAxOTEsIDE1NSwgMSwgNzMsIDE1NSwgMSwgMjM2LCAzMywgMTU1LCAxLCA3MCwgCisgICAgMTU1LCAxLCAyMjYsIDkwLCAyNTAsIDE2MywgMTU1LCAxLCAyMjksIDc4LCAyMzMsIDI4LCAxNTUsIDEsIDIyOSwgNzgsIAorICAgIDIzMywgMjksIDIyMywgMTQyLCAxNTUsIDEsIDc1LCAxNTUsIDEsIDI1NCwgMjAxLCAxNTUsIDEsIDc2LCAxNTUsIDEsIDE3NiwgCisgICAgMTU1LCAxLCAyMzUsIDEzLCAyMjEsIDIyOCwgMTU1LCAxLCAyMzUsIDEzLCAyMzAsIDY2LCAxNTUsIDEsIDI0MywgMTM1LCAKKyAgICAxNTUsIDEsIDI0MywgMTM2LCAyMzAsIDY2LCAxNTUsIDEsIDIyOSwgNzcsIDE1NSwgMSwgMjUxLCAzMywgMTU1LCAxLCAyNTEsIAorICAgIDM0LCAyMzAsIDY2LCAxNTUsIDEsIDIzNSwgMTQxLCAxNTUsIDEsIDIyNywgMTY2LCAyMzAsIDY2LCAxNTUsIDEsIDIzNSwgCisgICAgMTQyLCAyMzEsIDIwNywgMTU1LCAxLCAyMjcsIDE2NSwgMTU1LCAxLCAyMTUsIDE1NiwgMTU1LCAxLCAyMTUsIDE1NywgMjMxLCAKKyAgICAyMDcsIDE1NSwgMSwgMjQ4LCAxMzUsIDE1NSwgMSwgMjQ4LCAxMzYsIDIzMSwgMjA3LCAxNTUsIDEsIDIyOSwgMjI5LCAyMzAsIAorICAgIDY2LCAxNTUsIDEsIDIxNywgMTA1LCAxNTUsIDEsIDIxNywgMTA2LCAyMzAsIDY2LCAxNTUsIDEsIDI0OCwgMjIxLCAxNTUsIAorICAgIDEsIDI0OCwgMjIyLCAyMzEsIDIwNywgMTU1LCAxLCAxOTcsIDE1NSwgMSwgMTkwLCAxNTUsIDEsIDIyNiwgOTAsIDIzMCwgCisgICAgNjYsIDE1NSwgMSwgMjUyLCAxOTEsIDE1NSwgMSwgMjUyLCAxOTIsIDIzMCwgNjYsIDE1NSwgMSwgMTg0LCAxNTUsIDEsIAorICAgIDE5MSwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMjIzLCAxODgsIDI1NCwgMjEwLCAxNTUsIDEsIDIzMywgMTM1LCAxNTUsIDEsIAorICAgIDIxMiwgNjUsIDE1NSwgMSwgMjIyLCAzNCwgMjMwLCA2NiwgMTU1LCAxLCAyMjIsIDM0LCAyMzEsIDIwNywgMTU1LCAxLCAKKyAgICAyMDYsIDE1NSwgMSwgMTYyLCAxNTUsIDUsIDI1MCwgMTg4LCAyMTYsIDI1MCwgMTU1LCAyNSwgNSwgMjE3LCA0NywgMTU1LCAKKyAgICAyNSwgNSwgMjE2LCAzNSwgMTU1LCAyNSwgNSwgMjExLCAxOTAsIDE1NSwgMjUsIDUsIDIxMSwgMTkxLCAyMzEsIDY5LCAxNTUsIAorICAgIDI1LCA1LCAyMTgsIDQ3LCAxNTUsIDI1LCA1LCAyMTgsIDQ4LCAyMzEsIDU3LCAxNTUsIDI1LCA1LCAyMTcsIDY1LCAxNTUsIAorICAgIDI1LCA1LCAyNDcsIDE5NCwgMjMwLCA2NSwgMTU1LCAyNSwgNSwgMjI1LCAxODQsIDE1NSwgMTE2LCA1LCAyMzQsIDE1OCwgCisgICAgMTU1LCAxMTYsIDUsIDIyNSwgMTk2LCAxNTUsIDExNiwgNSwgMjUxLCAxOSwgMTU1LCAyMjYsIDQwLCAxNTUsIDQzLCAyMjMsIAorICAgIDY5LCAxNTUsIDQ0LCAyMjMsIDY5LCAxNTUsIDIyNiwgNzksIDI1NCwgMTE3LCAxNTUsIDIyNiwgNzksIDIzMSwgMjI0LCAKKyAgICAxNTUsIDIyNiwgNzksIDIzMiwgODgsIDE1NSwgMjI2LCA3OSwgMjExLCAyMzgsIDE1NSwgMjI2LCA3OSwgMjI2LCA0MSwgCisgICAgMTU1LCAyMjYsIDc5LCAyMzIsIDIwNSwgMTU1LCAyMjYsIDc5LCAyMzIsIDgyLCAxNTUsIDIyNiwgNzksIDI1NCwgMjQ5LCAKKyAgICAxNTUsIDIyNiwgNzksIDI1NCwgMjUwLCAyNTQsIDI0OSwgMTU1LCAyMjYsIDc5LCAyMjUsIDUxLCAxNTUsIDIxNSwgOTQsIAorICAgIDIyNiwgNzksIDIyNSwgNTEsIDE1NSwgMjI2LCAzNiwgMTU1LCAyMSwgMjEwLCA4NiwgMTU1LCAyMSwgMTEwLCAxNTUsIDIxLCAKKyAgICAxMDUsIDE1NSwgMjEsIDE1OCwgMTU1LCAyMSwgMTYxLCAxNTUsIDIxLCAxODksIDE1NSwgMjEsIDE5NCwgMTU1LCAyMSwgCisgICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCAyMjYsIDc5LCAyMTYsIDY5LCAyMTUsIDEwNiwgMTU1LCAKKyAgICAyMjYsIDc5LCAyMzUsIDE2NywgMTcyLCAxLCA2MSwgMTcyLCAxLCA3MywgMTcyLCAxLCA3MCwgMTcyLCAxLCA3NSwgMTcyLCAKKyAgICAxLCAyNTQsIDIwMSwgMTcyLCAxLCA3NiwgMTcyLCAxLCAxNzYsIDE3MiwgMSwgMjM0LCAxMzIsIDE3MiwgMSwgMjQzLCAxMzUsIAorICAgIDE3MiwgMSwgMjQyLCAyNDksIDE3MiwgMSwgMjI4LCAyNDUsIDE3MiwgMSwgMjI5LCA3NywgMTcyLCAxLCAyNTAsIDE1NywgCisgICAgMTcyLCAxLCAyNTAsIDExMiwgMTcyLCAxLCAyMzUsIDE0MSwgMTcyLCAxLCAyMzUsIDExNCwgMTcyLCAxLCAyMjgsIDIzNSwgCisgICAgMTcyLCAxLCAyMjgsIDIzNywgMTcyLCAxLCAyMjgsIDIzNiwgMTcyLCAxLCAyMTcsIDEwNSwgMTcyLCAxLCAyMTYsIDIwOCwgCisgICAgMTcyLCAxLCAyNDgsIDIyMSwgMTcyLCAxLCAyNDgsIDI1LCAxNzIsIDEsIDIyNywgMjA3LCAxNzIsIDEsIDE5NywgMTcyLCAxLCAKKyAgICAyNDgsIDEzNSwgMTcyLCAxLCAxOTAsIDE3MiwgMSwgMjI0LCAyMjAsIDE3MiwgMSwgMjI1LCAxNDcsIDE3MiwgMSwgMjUyLCAKKyAgICAxOTEsIDE3MiwgMSwgMjUyLCAxOCwgMTcyLCAxLCAyMzAsIDk1LCAxNzIsIDEsIDE4NCwgMTcyLCAxLCAyNTIsIDExMSwgCisgICAgMTcyLCAxLCAxOTEsIDE3MiwgMSwgMjA1LCAxNzIsIDEsIDIzMywgMTM1LCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAKKyAgICAyMjMsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgMTcyLCAyNSwgNSwgMjU1LCA3MywgMTcyLCAyNSwgNSwgNzMsIDE3MiwgCisgICAgMjUsIDUsIDIzNiwgMzMsIDE3MiwgMjUsIDUsIDI0NSwgMTk1LCAxNzIsIDI1LCA1LCA3MCwgMTcyLCAyNSwgNSwgMjI2LCAKKyAgICAyMzQsIDE3MiwgMjUsIDUsIDc2LCAxNzIsIDI1LCA1LCAyNTQsIDIwMSwgMTcyLCAyNSwgNSwgMjUzLCAxOTIsIDE3MiwgMjUsIAorICAgIDUsIDIxNCwgMjE0LCAxNzIsIDExNiwgNSwgMTkxLCAxNzIsIDExNiwgNSwgMjA1LCAxNzIsIDExNiwgNSwgMjMzLCAxMzUsIAorICAgIDE3MiwgMTE2LCA1LCAyMTIsIDY1LCAxNzIsIDEsIDQwLCAyMzUsIDIzLCAxNzIsIDEsIDQwLCAyNDMsIDIwMiwgMTcyLCAxLCAKKyAgICA0MCwgMjI5LCA3OSwgMTcyLCAxMTYsIDUsIDQwLCAyMjksIDc5LCAxNzIsIDEsIDQwLCAyNTAsIDE1OCwgMTcyLCAxLCA0MCwgCisgICAgMjE3LCAxNTIsIDE3MiwgMSwgNDAsIDIzMCwgMjUsIDE3MiwgMSwgNDAsIDIyNiwgMTA1LCAxNzIsIDEsIDQwLCAyMTEsIAorICAgIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI2LCAxNzIsIDExNiwgNSwgCisgICAgNDAsIDE5MywgMTcyLCAxMTYsIDUsIDQwLCAyNDIsIDYwLCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTAsIDE3MiwgCisgICAgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIDIxLCAxNjEsIDE3MiwgMjEsIDE4OSwgMTcyLCAyMSwgMTk0LCAxNzIsIDIxLCAKKyAgICAxOTgsIDE3MiwgMjEsIDE5NSwgMTcyLCAyMSwgMjAwLCAxNzIsIDIyNCwgMTQxLCAyMTgsIDI1MSwgMTcyLCAyMjQsIDE0MSwgCisgICAgMjQ4LCAxNzgsIDE3MiwgMjI0LCAxNDEsIDUyLCAyNDgsIDE3OCwgMTcyLCAyMjQsIDE0MSwgMjE1LCAyMTEsIDI0OCwgMTc4LCAKKyAgICA2OCwgMSwgMjM0LCAxMjYsIDI0MywgMTM1LCA2OCwgMSwgMjM0LCAxMjYsIDI1MSwgMzMsIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMjUwLCAxNTcsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxNDEsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxMTQsIDY4LCAxLCAKKyAgICAyMzQsIDEyNiwgMjI3LCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNTYsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNDQsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMzUsIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMTksIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMjQ4LCAyNSwgNjgsIDEsIDIzNCwgMTI2LCAxOTcsIDY4LCAxLCAyMzQsIDEyNiwgMjA2LCA2OCwgMSwgMjM0LCAxMjYsIAorICAgIDE2MiwgNjgsIDEsIDIzNCwgMTI2LCAyNDEsIDE4OSwgNjgsIDEsIDIzNCwgMTI2LCAyNDQsIDE5NiwgNjgsIDU4LCAxLCAKKyAgICAyMzQsIDEyNiwgMjIzLCAxMDksIDY4LCAxLCAyMzQsIDEyNiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjEwLCAxMTYsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjA1LCA2OCwgMjMyLCAxNDUsIDIzNCwgMTI2LCAyMjYsIDI1MywgNjgsIDIzMiwgMTQ1LCAKKyAgICAyMzQsIDEyNiwgMjI0LCA0MywgNjgsIDIzMiwgMTQ1LCAyMzQsIDEyNiwgMjQxLCAxMjEsIDY4LCAxNiwgMjU0LCAxOTAsIAorICAgIDI0NSwgMzAsIDY4LCAxNiwgMjU0LCAxOTAsIDExMCwgNjgsIDE2LCAyNTQsIDE5MCwgMTA1LCA2OCwgMSwgMjU0LCAxOTAsIAorICAgIDIwNSwgNjgsIDUsIDIyNiwgMjMsIDIzNCwgMjEzLCAyMTYsIDMwLCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMjgsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjM0LCAyOCwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDEwNSwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIAorICAgIDEwNSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDExNCwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDExNCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTI1LCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTIxLCAyMjksIDQsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjI5LCA0LCAzOSwgMjA4LCAxLCAxMjEsIDI0OSwgMjM4LCAzOSwgMjA4LCAxLCAxMjUsIDI0OSwgCisgICAgMjM4LCAzOSwgMjA4LCAxLCAxMjEsIDI1MCwgODYsIDM5LCAyMDgsIDEsIDEyNSwgMjUwLCA4NiwgMzksIDIwOCwgMSwgMTIxLCAKKyAgICAyMTksIDU4LCAzOSwgMjA4LCAxLCAxMjUsIDIxOSwgNTgsIDM5LCAyMDgsIDEsIDEyMSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIDEyMSwgMjQ3LCAxNDUsIDM5LCAyMDgsIDEsIDEyNSwgMjQ3LCAxNDUsIDM5LCAKKyAgICAyMDgsIDEsIDEyMSwgMTExLCAzOSwgMjA4LCAxLCAxMjUsIDExMSwgMzksIDIwOCwgMSwgMTIxLCAyMTYsIDE1NiwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMTYsIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMjgsIDc0LCAzOSwgMjA4LCAxLCAxMjUsIDIyOCwgCisgICAgNzQsIDM5LCAyMDgsIDEsIDEyMSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIDEyNSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjI1LCAxNiwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDE2LCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTIxLCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyNSwgMTIxLCAzOSwgMjA4LCAxLCAxMjEsIDI0NCwgNDMsIDM5LCAyMDgsIDEsIDEyNSwgMjQ0LCAKKyAgICA0MywgMzksIDIwOCwgMSwgMTIxLCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgMTI1LCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTI1LCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTIxLCAyMjIsIDIxMSwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjIsIDIxMSwgMzksIDIwOCwgMSwgMTIxLCAyMzIsIDE1NiwgMzksIDIwOCwgMSwgMTI1LCAyMzIsIAorICAgIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgMTI1LCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDEsIDY4LCAzOSwgMjA4LCAxLCAxMjUsIDI0MSwgNjgsIDM5LCAyMDgsIDEsIDEyMSwgNzYsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgNzYsIDM5LCAyMDgsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDIwOCwgMjUsIDI1NSwgNzMsIDM5LCAyMDgsIDI1LCAKKyAgICA3MywgMzksIDIwOCwgMjUsIDIxNCwgMjE0LCAzOSwgMjA4LCAyNSwgNzAsIDM5LCAyMDgsIDI1LCA3NSwgMzksIDIwOCwgMjUsIAorICAgIDc2LCAzOSwgMjA4LCAyMzEsIDIwNCwgMjM0LCAxMDgsIDM5LCAyMDgsIDI1LCAyNDAsIDExOSwgMzksIDIwOCwgMjUsIDIxNCwgCisgICAgMjEzLCAzOSwgMjA4LCAyNSwgMjE0LCAyMjksIDM5LCAyMDgsIDI1LCAyNTMsIDE5MCwgMzksIDIwOCwgMjUsIDI1MywgMTY3LCAKKyAgICAzOSwgMjA4LCAyNSwgMjU0LCAxMjMsIDM5LCAyMDgsIDI1LCAyNTQsIDEzNiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgCisgICAgMjQ1LCAxODAsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIyNywgMjA2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMTYsIAorICAgIDE1NiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjE5LCA0MiwgMzksIDIwOCwgMTYsIDIzNCwgMTMsIDM5LCAyMDgsIDE2LCAKKyAgICAyMjcsIDIwNiwgMzksIDIwOCwgMTYsIDIyMSwgMjUzLCAzOSwgMjA4LCAxNiwgMjQxLCA2OSwgMjQxLCA2NCwgMzksIDIwOCwgCisgICAgMTYsIDIzNCwgMjIsIDIzNCwgMjEsIDE4NiwgMTg1LCAxLCA3NSwgMTg2LCAxODUsIDEsIDc2LCAxODYsIDE4NSwgMSwgMjUwLCAKKyAgICAxNTcsIDE4NiwgMTg1LCAxLCAyMjcsIDE2NSwgMTg2LCAxODUsIDEsIDIxNSwgMTU2LCAxODYsIDE4NSwgMSwgMjE1LCAxNDQsIAorICAgIDE4NiwgMTg1LCAxLCAyNDgsIDEzNSwgMTg2LCAxODUsIDEsIDI0OCwgMTE5LCAxODYsIDE4NSwgMSwgMjI4LCAxMTAsIDE4NiwgCisgICAgMTg1LCAxLCAyMjAsIDEwMiwgMTg2LCAxODUsIDEsIDIxOCwgMjIzLCAxODYsIDE4NSwgMjUsIDUsIDIzNiwgMzMsIDE4NiwgCisgICAgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NiwgMTg1LCAyNSwgNSwgMjU1LCAzNywgMTg2LCAxODUsIDI1LCA1LCAyNTMsIAorICAgIDE5MiwgMTg2LCAxODUsIDI1LCA1LCAyNTUsIDMwLCAxODYsIDE4NSwgMjUwLCAxMjUsIDE4NiwgMTg1LCAyNTQsIDIwNiwgCisgICAgMjM0LCA5OCwgMTg2LCAxODUsIDI1NCwgMTAzLCAxODYsIDE4NSwgMywgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyMTEsIAorICAgIDIwOSwgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyNSwgNSwgMjEzLCAxNDcsIDE4NiwgMTg1LCAyMTMsIDE1MiwgMjksIDMsIAorICAgIDIxNSwgMTM3LCAyOSwgMywgMjE1LCAxNDAsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQxLCAyOSwgMywgMjE1LCAKKyAgICAxNDIsIDI5LCAzLCAyMTUsIDEzOSwgMjksIDMsIDI0OCwgMTEzLCAyOSwgMywgMjQ4LCAxMTUsIDI5LCAzLCAyNDgsIDExOCwgCisgICAgMjksIDMsIDI0OCwgMTE2LCAyOSwgMywgMjQ4LCAxMTcsIDI5LCAzLCAyNDgsIDExNCwgMjksIDMsIDI0NiwgMjgsIDI5LCAzLCAKKyAgICAyNDYsIDMxLCAyOSwgMywgMjQ2LCAzNywgMjksIDMsIDI0NiwgMzUsIDI5LCAzLCAyNDYsIDM2LCAyOSwgMywgMjQ2LCAyOSwgCisgICAgMjksIDMsIDI1MCwgMjA0LCAyOSwgMywgMjUwLCAxOTgsIDI5LCAzLCAyNTAsIDIwMCwgMjksIDMsIDI1MCwgMjAzLCAyOSwgCisgICAgMywgMjUwLCAyMDEsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMTk5LCAyOSwgMywgMjUyLCAxMTEsIDI5LCAzLCAKKyAgICAyNTIsIDkwLCAyOSwgMywgMjUyLCAxMDIsIDI5LCAzLCAyNTIsIDExMCwgMjksIDMsIDI1MiwgMTA1LCAyOSwgMywgMjUyLCAKKyAgICAxMDYsIDI5LCAzLCAyNTIsIDk0LCAxODYsIDE4NSwgMSwgMjM0LCAxOSwgMTg2LCAxODUsIDEsIDIyMSwgMjUzLCAxODYsIAorICAgIDE4NSwgMSwgMjMzLCAxMDksIDE4NiwgMTg1LCAxLCAyMzAsIDE3MiwgMTg2LCAxODUsIDEsIDE5MCwgMTg2LCAxODUsIDEsIAorICAgIDE5NywgMTg2LCAxODUsIDEsIDI1MCwgMTAyLCAxODYsIDE4NSwgMSwgMjE2LCA5MCwgMTg2LCAxODUsIDEsIDIzNCwgMTAxLCAKKyAgICAxODYsIDE4NSwgMSwgMjI4LCAyNTAsIDE4NiwgMTg1LCAxLCAyMTYsIDE1MCwgMTg2LCAxODUsIDEsIDIxMiwgNjAsIDE4NiwgCisgICAgMTg1LCAxLCAyMTEsIDY5LCAxODYsIDE4NSwgMSwgMjQwLCAyMTYsIDE4NiwgMTg1LCAxLCAyMTQsIDE5MCwgMTg2LCAxODUsIAorICAgIDEsIDczLCAxODYsIDE4NSwgMSwgMjI1LCAxNDIsIDE4NiwgMTg1LCAxLCAyNTMsIDIwMiwgMTg2LCAxODUsIDEsIDI0MiwgCisgICAgMTY3LCAxODYsIDE4NSwgMSwgMjM1LCAxMTIsIDE4NiwgMTg1LCAxLCAyMjMsIDE2NiwgMTg2LCAxODUsIDEsIDI1MiwgMTkxLCAKKyAgICAxODYsIDE4NSwgMSwgMjM1LCAxMDAsIDE4NiwgMTg1LCAxLCAyNDcsIDIxOSwgMTg2LCAxODUsIDEsIDI0MiwgMjIxLCAxODYsIAorICAgIDE4NSwgMSwgMjQ4LCA1LCAxODYsIDE4NSwgMSwgMjUyLCAxNiwgMTg2LCAxODUsIDEsIDIzNCwgMjAsIDIzMiwgMTI4LCAKKyAgICAxODYsIDE4NSwgMSwgMjMzLCAxMTAsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjMwLCAxNzMsIDIzMiwgMTI4LCAxODYsIAorICAgIDE4NSwgMSwgMjI2LCA5MCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMjksIDIyOSwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAKKyAgICAyMTYsIDkxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIyOCwgMjUxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDI0MCwgCisgICAgMTU0LCAyMzIsIDEyOCwgMTg2LCAxODUsIDI1LCA1LCAyMjYsIDE5NSwgMTg2LCAxODUsIDI1LCA1LCAyMzUsIDI1MywgMTg2LCAKKyAgICAxODUsIDI1LCA1LCAyNTQsIDEyMiwgMTg2LCAxODUsIDI1LCA1LCAyMTEsIDM4LCAxODYsIDE4NSwgMjUsIDUsIDIxOSwgMzIsIAorICAgIDE4NiwgMTg1LCAyNSwgNSwgMjE0LCAxODcsIDE4NiwgMTg1LCAyNSwgNSwgMjUwLCAxMjMsIDE4NiwgMTg1LCAyNSwgNSwgCisgICAgMjI3LCAxOTEsIDE4NiwgMTg1LCAyNTAsIDEyNCwgMTg2LCAxODUsIDIzMiwgODUsIDIzNSwgMTUwLCAxODYsIDE4NSwgMjU0LCAKKyAgICA0NiwgMjM1LCAxNTAsIDE4NiwgMTg1LCAyMSwgMjEwLCA4NiwgMTg2LCAxODUsIDIxLCAxMTAsIDE4NiwgMTg1LCAyMSwgCisgICAgMTA1LCAxODYsIDE4NSwgMjEsIDE1OCwgMTg2LCAxODUsIDIxLCAxNjEsIDE4NiwgMTg1LCAyMSwgMTg5LCAxODYsIDE4NSwgCisgICAgMjEsIDE5NCwgMTg2LCAxODUsIDIxLCAxOTgsIDE4NiwgMTg1LCAyMSwgMTk1LCAxODYsIDE4NSwgMjEsIDIwMCwgMjQsIAorICAgIDE0MywgMjI3LCA3NywgMjQsIDE0MywgMjI3LCA4MiwgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgCisgICAgMTQzLCAyMTAsIDI0MSwgMjQsIDE0MywgMjE1LCAyMywgMjQsIDE0MywgMjE1LCAyNiwgMjQsIDE0MywgMjEwLCAyMTAsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjA2LCAyNCwgMTQzLCAyNDUsIDU0LCAyNCwgMTQzLCAyNDUsIDUyLCAyNCwgMTQzLCAyNDUsIDUzLCAyNCwgCisgICAgMTQzLCAyNDUsIDUwLCAyNCwgMTQzLCAyNDAsIDE0NCwgMjQsIDE0MywgMjQwLCAxNDMsIDI0LCAxNDMsIDI0MCwgMTQxLCAKKyAgICAyNCwgMTQzLCAyNDAsIDE0MiwgMjQsIDE0MywgMjQwLCAxNDcsIDI0LCAxNDMsIDI0MCwgMTQwLCAyNCwgMTQzLCAyNDAsIAorICAgIDEzOSwgMjQsIDE0MywgMjQwLCAxNDksIDI0LCAxNDMsIDI1NCwgMzMsIDI0LCAxNDMsIDI1NCwgMzIsIDI0LCA5MCwgMjI4LCAKKyAgICAyMTksIDI0LCA5MCwgMjI4LCAyMjUsIDI0LCA5MCwgMjE4LCAyMDQsIDI0LCA5MCwgMjE4LCAyMDMsIDI0LCA5MCwgMjE2LCAKKyAgICA5NiwgMjQsIDkwLCAyMTYsIDk0LCAyNCwgOTAsIDIxNiwgOTMsIDI0LCA5MCwgMjE2LCA5OSwgMjQsIDkwLCAyMTYsIDEwMCwgCisgICAgMjQsIDkwLCAyMTYsIDkyLCAyNCwgOTAsIDIyMywgNSwgMjQsIDkwLCAyMjMsIDIwLCAyNCwgOTAsIDIxOCwgMjEwLCAyNCwgCisgICAgOTAsIDIyMywgMTcsIDI0LCA5MCwgMjIzLCA3LCAyNCwgOTAsIDIyMywgOSwgMjQsIDkwLCAyMjIsIDI1MiwgMjQsIDkwLCAKKyAgICAyMjIsIDI1MywgMjQsIDkwLCAyMzQsIDIxOCwgMjQsIDkwLCAyMzAsIDIxMiwgMjQsIDkwLCAyMzAsIDIwNiwgMjQsIDkwLCAKKyAgICAyMTgsIDIxNCwgMjQsIDkwLCAyMzAsIDIwOSwgMjQsIDkwLCAyMzAsIDIxNSwgMjQsIDkwLCAyMjUsIDc2LCAyNCwgOTAsIAorICAgIDIyNSwgODUsIDI0LCA5MCwgMjI1LCA4OSwgMjQsIDkwLCAyMTgsIDIxMiwgMjQsIDkwLCAyMjUsIDc5LCAyNCwgOTAsIDIyNSwgCisgICAgOTMsIDI0LCA5MCwgMjI1LCA5NCwgMjQsIDkwLCAyMTksIDE0MCwgMjQsIDkwLCAyMTksIDE0MywgMjQsIDkwLCAyMTgsIAorICAgIDIwOCwgMjQsIDkwLCAyMTgsIDIwNiwgMjQsIDkwLCAyMTksIDEzOCwgMjQsIDkwLCAyMTksIDE0NiwgMjQsIDkwLCAyMTksIAorICAgIDE0NywgMjQsIDkwLCAyMTksIDEzMiwgMjQsIDkwLCAyMTksIDE0NSwgMjQsIDkwLCAyMjYsIDMwLCAyNCwgOTAsIDIyNiwgCisgICAgMzEsIDI0LCA5MCwgMjExLCAyNCwgMjQsIDkwLCAyMTEsIDI1LCAyNCwgOTAsIDI1MCwgNDQsIDI0LCA5MCwgMjUwLCA0MywgCisgICAgMjQsIDkwLCAyMTgsIDIxOSwgMjQsIDkwLCAyMjUsIDEyOCwgMjQsIDkwLCAyMjUsIDEyNywgOSwgMTQsIDIzOCwgMjQsIDksIAorICAgIDE0LCAyMzgsIDIzLCA5LCAxNCwgMjM4LCAyMiwgOSwgMTQsIDIzOCwgMjEsIDksIDE0LCAyMzgsIDIwLCA5LCAxNCwgMjM4LCAKKyAgICAxOSwgOSwgMTQsIDIzOCwgMTgsIDksIDE0LCAyMzgsIDE3LCA5LCAxNCwgMjM4LCAxNiwgOSwgMTQsIDIzOCwgMTUsIDksIAorICAgIDE0LCAyMzgsIDE0LCA5LCAxNCwgMjM4LCAxMywgOSwgMTQsIDIzOCwgMTIsIDksIDE0LCAyMzgsIDExLCA5LCAxNCwgMjM4LCAKKyAgICAxMCwgOSwgMTQsIDIzOCwgOSwgOSwgMTQsIDIzOCwgOCwgOSwgMTQsIDIzOCwgNywgOSwgMTQsIDIzOCwgNiwgOSwgMTQsIAorICAgIDIzOCwgNSwgOSwgMTQsIDIzOCwgNCwgOSwgMTQsIDIzOCwgMywgOSwgMTQsIDIzOCwgMiwgOSwgMTQsIDIzOCwgMSwgOSwgCisgICAgMTQsIDIzOCwgMCwgOSwgMTQsIDIzNywgMjU1LCA5LCAxNCwgMjM3LCAyNTQsIDksIDE0LCAyMzcsIDI1MywgOSwgMTQsIAorICAgIDIzNywgMjUyLCA5LCAxNCwgMjM3LCAyNTEsIDksIDE0LCAyMzcsIDI1MCwgOSwgMTQsIDIzNywgMjQ5LCA5LCAxNCwgMjM3LCAKKyAgICAyNDgsIDksIDE0LCAyMzcsIDI0NywgOSwgMTQsIDIzNywgMjQ2LCA5LCAxNCwgMjM3LCAyNDUsIDksIDE0LCAyMzcsIDI0NCwgCisgICAgOSwgMTQsIDIzNywgMjQzLCA5LCAxNCwgMjM3LCAyNDIsIDksIDE0LCAyMzcsIDI0MSwgOSwgMTQsIDIzNywgMjQwLCA5LCAKKyAgICAxNCwgMjM3LCAyMzksIDksIDE0LCAyMzcsIDIzOCwgOSwgMTQsIDIzNywgMjM3LCA5LCAxNCwgMjM3LCAyMzYsIDksIDE0LCAKKyAgICAyMzcsIDIzNSwgOSwgMTQsIDIzNywgMjM0LCA5LCAxNCwgMjM3LCAyMzMsIDksIDE0LCAyMzcsIDIzMiwgOSwgMTQsIDIzNywgCisgICAgMjMxLCA5LCAxNCwgMjM3LCAyMzAsIDksIDE0LCAyMzcsIDIyOSwgOSwgMTQsIDIzNywgMjI4LCA5LCAxNCwgMjM3LCAyMjcsIAorICAgIDksIDE0LCAyMzcsIDIyNiwgOSwgMTQsIDIzNywgMjI1LCA5LCAxNCwgMjM3LCAyMjQsIDksIDE0LCAyMzcsIDIyMywgOSwgCisgICAgMTQsIDIzNywgMjIyLCA5LCAxNCwgMjM3LCAyMjEsIDksIDE0LCAyMzcsIDIyMCwgOSwgMTQsIDIzNywgMjE5LCA5LCAxNCwgCisgICAgMjM3LCAyMTgsIDksIDE0LCAyMzcsIDIxNywgOSwgMTQsIDIzNywgMjE2LCA5LCAxNCwgMjM3LCAyMTUsIDksIDE0LCAyMzcsIAorICAgIDIxNCwgOSwgMTQsIDIzNywgMjEzLCA5LCAxNCwgMjM3LCAyMTIsIDksIDE0LCAyMzcsIDIxMSwgOSwgMTQsIDIzNywgMjEwLCAKKyAgICA5LCAxNCwgMjM3LCAyMDksIDksIDE0LCAyMzcsIDIwOCwgOSwgMTQsIDIzNywgMjA3LCA5LCAxNCwgMjM3LCAyMDYsIDksIAorICAgIDE0LCAyMzcsIDIwNSwgOSwgMTQsIDIzNywgMjA0LCA5LCAxNCwgMjM3LCAyMDMsIDksIDE0LCAyMzcsIDIwMiwgOSwgMTQsIAorICAgIDIzNywgMjAxLCA5LCAxNCwgMjM3LCAyMDAsIDksIDE0LCAyMzcsIDE5OSwgOSwgMTQsIDIzNywgMTk4LCA5LCAxNCwgMjM3LCAKKyAgICAxOTcsIDksIDE0LCAyMzcsIDE5NiwgOSwgMTQsIDIzNywgMTk1LCA5LCAxNCwgMjM3LCAxOTQsIDksIDE0LCAyMzcsIDE5MywgCisgICAgOSwgMTQsIDIzNywgMTkyLCA5LCAxNCwgMjM3LCAxOTEsIDksIDE0LCAyMzcsIDE5MCwgOSwgMTQsIDIzNywgMTg5LCA5LCAKKyAgICAxNCwgMjM3LCAxODgsIDksIDE0LCAyMzcsIDE4NywgOSwgMTQsIDIzNywgMTg2LCA5LCAxNCwgMjM3LCAxODUsIDksIDE0LCAKKyAgICAyMzcsIDE4NCwgOSwgMTQsIDIzNywgMTgzLCA5LCAxNCwgMjM3LCAxODIsIDksIDE0LCAyMzcsIDE4MSwgOSwgMTQsIDIzNywgCisgICAgMTgwLCA5LCAxNCwgMjM3LCAxNzksIDksIDE0LCAyMzcsIDE3OCwgOSwgMTQsIDIzNywgMTc3LCA5LCAxNCwgMjM3LCAxNzYsIAorICAgIDksIDE0LCAyMzcsIDE3NSwgOSwgMTQsIDIzNywgMTc0LCA5LCAxNCwgMjM3LCAxNzMsIDksIDE0LCAyMzcsIDE3MiwgOSwgCisgICAgMTQsIDIzNywgMTcxLCA5LCAxNCwgMjM3LCAxNzAsIDksIDE0LCAyMzcsIDE2OSwgOSwgMTQsIDIzNywgMTY4LCA5LCAxNCwgCisgICAgMjM3LCAxNjcsIDksIDE0LCAyMzcsIDE2NiwgOSwgMTQsIDIzNywgMTY1LCA5LCAxNCwgMjM3LCAxNjQsIDksIDE0LCAyMzcsIAorICAgIDE2MywgOSwgMTQsIDIzNywgMTYyLCA5LCAxNCwgMjM3LCAxNjEsIDksIDE0LCAyMzcsIDE2MCwgOSwgMTQsIDIzNywgMTU5LCAKKyAgICA5LCAxNCwgMjM3LCAxNTgsIDksIDE0LCAyMzcsIDE1NywgOSwgMTQsIDIzNywgMTU2LCA5LCAxNCwgMjM3LCAxNTUsIDksIAorICAgIDE0LCAyMzcsIDE1NCwgOSwgMTQsIDIzNywgMTUzLCA5LCAxNCwgMjM3LCAxNTIsIDksIDE0LCAyMzcsIDE1MSwgOSwgMTQsIAorICAgIDIzNywgMTUwLCA5LCAxNCwgMjM3LCAxNDksIDksIDE0LCAyMzcsIDE0OCwgOSwgMTQsIDIzNywgMTQ3LCA5LCAxNCwgMjM3LCAKKyAgICAxNDYsIDksIDE0LCAyMzcsIDE0NSwgOSwgMTQsIDIzNywgMTQ0LCA5LCAxNCwgMjM3LCAxNDMsIDksIDE0LCAyMzcsIDE0MiwgCisgICAgOSwgMTQsIDIzNywgMTQxLCA5LCAxNCwgMjM3LCAxNDAsIDksIDE0LCAyMzcsIDEzOSwgOSwgMTQsIDIzNywgMTM4LCA5LCAKKyAgICAxNCwgMjM3LCAxMzcsIDksIDE0LCAyMzcsIDEzNiwgOSwgMTQsIDIzNywgMTM1LCA5LCAxNCwgMjM3LCAxMzQsIDksIDE0LCAKKyAgICAyMzcsIDEzMywgOSwgMTQsIDIzNywgMTMyLCA5LCAxNCwgMjM3LCAxMzEsIDksIDE0LCAyMzcsIDEzMCwgOSwgMTQsIDIzNywgCisgICAgMTI5LCA5LCAxNCwgMjM3LCAxMjgsIDksIDE0LCAyMzcsIDEyNywgOSwgMTQsIDIzNywgMTI2LCA5LCAxNCwgMjM3LCAxMjUsIAorICAgIDksIDE0LCAyMzcsIDEyNCwgOSwgMTQsIDIzNywgMTIzLCA5LCAxNCwgMjM3LCAxMjIsIDksIDE0LCAyMzcsIDEyMSwgOSwgCisgICAgMTQsIDIzNywgMTIwLCA5LCAxNCwgMjM3LCAxMTksIDksIDE0LCAyMzcsIDExOCwgOSwgMTQsIDIzNywgMTE3LCA5LCAxNCwgCisgICAgMjM3LCAxMTYsIDksIDE0LCAyMzcsIDExNSwgOSwgMTQsIDIzNywgMTE0LCA5LCAxNCwgMjM3LCAxMTMsIDksIDE0LCAyMzcsIAorICAgIDExMiwgOSwgMTQsIDIzNywgMTExLCA5LCAxNCwgMjM3LCAxMTAsIDksIDE0LCAyMzcsIDEwOSwgOSwgMTQsIDIzNywgMTA4LCAKKyAgICA5LCAxNCwgMjM3LCAxMDcsIDksIDE0LCAyMzcsIDEwNiwgOSwgMTQsIDIzNywgMTA1LCA5LCAxNCwgMjM3LCAxMDQsIDksIAorICAgIDE0LCAyMzcsIDEwMywgOSwgMTQsIDIzNywgMTAyLCA5LCAxNCwgMjM3LCAxMDEsIDksIDE0LCAyMzcsIDEwMCwgOSwgMTQsIAorICAgIDIzNywgOTksIDksIDE0LCAyMzcsIDk4LCA5LCAxNCwgMjM3LCA5NywgOSwgMTQsIDIzNywgOTYsIDksIDE0LCAyMzcsIDk1LCAKKyAgICA5LCAxNCwgMjM3LCA5NCwgOSwgMTQsIDIzNywgOTMsIDksIDE0LCAyMzcsIDkyLCA5LCAxNCwgMjM3LCA5MSwgOSwgMTQsIAorICAgIDIzNywgOTAsIDksIDE0LCAyMzcsIDg5LCA5LCAxNCwgMjM3LCA4OCwgOSwgMTQsIDIzNywgODcsIDksIDE0LCAyMzcsIDg2LCAKKyAgICA5LCAxNCwgMjM3LCA4NSwgOSwgMTQsIDIzNywgODQsIDksIDE0LCAyMzcsIDgzLCA5LCAxNCwgMjM3LCA4MiwgOSwgMTQsIAorICAgIDIzNywgODEsIDksIDE0LCAyMzcsIDgwLCA5LCAxNCwgMjM3LCA3OSwgOSwgMTQsIDIzNywgNzgsIDksIDE0LCAyMzcsIDc3LCAKKyAgICA5LCAxNCwgMjM3LCA3NiwgOSwgMTQsIDIzNywgNzUsIDksIDE0LCAyMzcsIDc0LCA5LCAxNCwgMjM3LCA3MywgOSwgMTQsIAorICAgIDIzNywgNzIsIDksIDE0LCAyMzcsIDcxLCA5LCAxNCwgMjM3LCA3MCwgOSwgMTQsIDIzNywgNjksIDksIDE0LCAyMzcsIDY4LCAKKyAgICA5LCAxNCwgMjM3LCA2NywgOSwgMTQsIDIzNywgNjYsIDksIDE0LCAyMzcsIDY1LCA5LCAxNCwgMjM3LCA2NCwgOSwgMTQsIAorICAgIDIzNywgNjMsIDksIDE0LCAyMzcsIDYyLCA5LCAxNCwgMjM3LCA2MSwgOSwgMTQsIDIzNywgNjAsIDksIDE0LCAyMzcsIDU5LCAKKyAgICA5LCAxNCwgMjM3LCA1OCwgOSwgMTQsIDIzNywgNTcsIDksIDE0LCAyMzcsIDU2LCA5LCAxNCwgMjM3LCA1NSwgOSwgMTQsIAorICAgIDIzNywgNTQsIDksIDE0LCAyMzcsIDUzLCA5LCAxNCwgMjM3LCA1MiwgOSwgMTQsIDIzNywgNTEsIDksIDE0LCAyMzcsIDUwLCAKKyAgICA5LCAxNCwgMjM3LCA0OSwgOSwgMTQsIDIzNywgNDgsIDksIDE0LCAyMzcsIDQ3LCA5LCAxNCwgMjM3LCA0NiwgOSwgMTQsIAorICAgIDIzNywgNDUsIDksIDE0LCAyMzcsIDQ0LCA5LCAxNCwgMjM3LCA0MywgOSwgMTQsIDIzNywgNDIsIDksIDE0LCAyMzcsIDQxLCAKKyAgICA5LCAxNCwgMjM3LCA0MCwgOSwgMTQsIDIzNywgMzksIDksIDE0LCAyMzcsIDM4LCA5LCAxNCwgMjM3LCAzNywgOSwgMTQsIAorICAgIDIzNywgMzYsIDksIDE0LCAyMzcsIDM1LCA5LCAxNCwgMjM3LCAzNCwgOSwgMTQsIDIzNywgMzMsIDksIDE0LCAyMzcsIDMyLCAKKyAgICA5LCAxNCwgMjM3LCAzMSwgOSwgMTQsIDIzNywgMzAsIDksIDE0LCAyMzcsIDI5LCA5LCAxNCwgMjM3LCAyOCwgOSwgMTQsIAorICAgIDIzNywgMjcsIDksIDE0LCAyMzcsIDI2LCA5LCAxNCwgMjM3LCAyNSwgOSwgMTQsIDIzNywgMjQsIDksIDE0LCAyMzcsIDIzLCAKKyAgICA5LCAxNCwgMjM3LCAyMiwgOSwgMTQsIDIzNywgMjEsIDksIDE0LCAyMzcsIDIwLCA5LCAxNCwgMjM3LCAxOSwgOSwgMTQsIAorICAgIDIzNywgMTgsIDksIDE0LCAyMzcsIDE3LCA5LCAxNCwgMjM3LCAxNiwgOSwgMTQsIDIzNywgMTUsIDksIDE0LCAyMzcsIDE0LCAKKyAgICA5LCAxNCwgMjM3LCAxMywgOSwgMTQsIDIzNywgMTIsIDksIDE0LCAyMzcsIDExLCA5LCAxNCwgMjM3LCAxMCwgOSwgMTQsIAorICAgIDIzNywgOSwgOSwgMTQsIDIzNywgOCwgOSwgMTQsIDIzNywgNywgOSwgMTQsIDIzNywgNiwgOSwgMTQsIDIzNywgNSwgOSwgCisgICAgMTQsIDIzNywgNCwgOSwgMTQsIDIzNywgMywgOSwgMTQsIDIzNywgMiwgOSwgMTQsIDIzNywgMSwgOSwgMTQsIDIzNywgMCwgCisgICAgOSwgMTQsIDIzNiwgMjU1LCA5LCAxNCwgMjM2LCAyNTQsIDksIDE0LCAyMzYsIDI1MywgOSwgMTQsIDIzNiwgMjUyLCA5LCAKKyAgICAxNCwgMjM2LCAyNTEsIDksIDE0LCAyMzYsIDI1MCwgOSwgMTQsIDIzNiwgMjQ5LCA5LCAxNCwgMjM2LCAyNDgsIDksIDE0LCAKKyAgICAyMzYsIDI0NywgOSwgMTQsIDIzNiwgMjQ2LCA5LCAxNCwgMjM2LCAyNDUsIDksIDE0LCAyMzYsIDI0NCwgOSwgMTQsIDIzNiwgCisgICAgMjQzLCA5LCAxNCwgMjM2LCAyNDIsIDksIDE0LCAyMzYsIDI0MSwgOSwgMTQsIDIzNiwgMjQwLCA5LCAxNCwgMjM2LCAyMzksIAorICAgIDksIDE0LCAyMzYsIDIzOCwgOSwgMTQsIDIzNiwgMjM3LCA5LCAxNCwgMjM2LCAyMzYsIDksIDE0LCAyMzYsIDIzNSwgOSwgCisgICAgMTQsIDIzNiwgMjM0LCA5LCAxNCwgMjM2LCAyMzMsIDksIDE0LCAyMzYsIDIzMiwgOSwgMTQsIDIzNiwgMjMxLCA5LCAxNCwgCisgICAgMjM2LCAyMzAsIDksIDE0LCAyMzYsIDIyOSwgOSwgMTQsIDIzNiwgMjI4LCA5LCAxNCwgMjM2LCAyMjcsIDksIDE0LCAyMzYsIAorICAgIDIyNiwgOSwgMTQsIDIzNiwgMjI1LCA5LCAxNCwgMjM2LCAyMjQsIDksIDE0LCAyMzYsIDIyMywgOSwgMTQsIDIzNiwgMjIyLCAKKyAgICA5LCAxNCwgMjM2LCAyMjEsIDksIDE0LCAyMzYsIDIyMCwgOSwgMTQsIDIzNiwgMjE5LCA5LCAxNCwgMjM2LCAyMTgsIDksIAorICAgIDE0LCAyMzYsIDIxNywgOSwgMTQsIDIzNiwgMjE2LCA5LCAxNCwgMjM2LCAyMTUsIDksIDE0LCAyMzYsIDIxNCwgOSwgMTQsIAorICAgIDIzNiwgMjEzLCA5LCAxNCwgMjM2LCAyMTIsIDksIDE0LCAyMzYsIDIxMSwgOSwgMTQsIDIzNiwgMjEwLCA5LCAxNCwgMjM2LCAKKyAgICAyMDksIDksIDE0LCAyMzYsIDIwOCwgOSwgMTQsIDIzNiwgMjA3LCA5LCAxNCwgMjM2LCAyMDYsIDksIDE0LCAyMzYsIDIwNSwgCisgICAgOSwgMTQsIDIzNiwgMjA0LCA5LCAxNCwgMjM2LCAyMDMsIDksIDE0LCAyMzYsIDIwMiwgOSwgMTQsIDIzNiwgMjAxLCA5LCAKKyAgICAxNCwgMjM2LCAyMDAsIDksIDE0LCAyMzYsIDE5OSwgOSwgMTQsIDIzNiwgMTk4LCA5LCAxNCwgMjM2LCAxOTcsIDksIDE0LCAKKyAgICAyMzYsIDE5NiwgOSwgMTQsIDIzNiwgMTk1LCA5LCAxNCwgMjM2LCAxOTQsIDksIDE0LCAyMzYsIDE5MywgOSwgMTQsIDIzNiwgCisgICAgMTkyLCA5LCAxNCwgMjM2LCAxOTEsIDksIDE0LCAyMzYsIDE5MCwgOSwgMTQsIDIzNiwgMTg5LCA5LCAxNCwgMjM2LCAxODgsIAorICAgIDksIDE0LCAyMzYsIDE4NywgOSwgMTQsIDIzNiwgMTg2LCA5LCAxNCwgMjM2LCAxODUsIDksIDE0LCAyMzYsIDE4NCwgOSwgCisgICAgMTQsIDIzNiwgMTgzLCA5LCAxNCwgMjM2LCAxODIsIDksIDE0LCAyMzYsIDE4MSwgOSwgMTQsIDIzNiwgMTgwLCA5LCAxNCwgCisgICAgMjM2LCAxNzksIDksIDE0LCAyMzYsIDE3OCwgOSwgMTQsIDIzNiwgMTc3LCA5LCAxNCwgMjM2LCAxNzYsIDksIDE0LCAyMzYsIAorICAgIDE3NSwgOSwgMTQsIDIzNiwgMTc0LCA5LCAxNCwgMjM2LCAxNzMsIDksIDE0LCAyMzYsIDE3MiwgOSwgMTQsIDIzNiwgMTcxLCAKKyAgICA5LCAxNCwgMjM2LCAxNzAsIDksIDE0LCAyMzYsIDE2OSwgOSwgMTQsIDIzNiwgMTY4LCA5LCAxNCwgMjM2LCAxNjcsIDksIAorICAgIDE0LCAyMzYsIDE2NiwgOSwgMTQsIDIzNiwgMTY1LCA5LCAxNCwgMjM2LCAxNjQsIDksIDE0LCAyMzYsIDE2MywgOSwgMTQsIAorICAgIDIzNiwgMTYyLCA5LCAxNCwgMjM2LCAxNjEsIDksIDE0LCAyMzYsIDE2MCwgOSwgMTQsIDIzNiwgMTU5LCA5LCAxNCwgMjM2LCAKKyAgICAxNTgsIDksIDE0LCAyMzYsIDE1NywgOSwgMTQsIDIzNiwgMTU2LCA5LCAxNCwgMjM2LCAxNTUsIDksIDE0LCAyMzYsIDE1NCwgCisgICAgOSwgMTQsIDIzNiwgMTUzLCA5LCAxNCwgMjM2LCAxNTIsIDksIDE0LCAyMzYsIDE1MSwgOSwgMTQsIDIzNiwgMTUwLCA5LCAKKyAgICAxNCwgMjM2LCAxNDksIDksIDE0LCAyMzYsIDE0OCwgOSwgMTQsIDIzNiwgMTQ3LCA5LCAxNCwgMjM2LCAxNDYsIDksIDE0LCAKKyAgICAyMzYsIDE0NSwgOSwgMTQsIDIzNiwgMTQ0LCA5LCAxNCwgMjM2LCAxNDMsIDksIDE0LCAyMzYsIDE0MiwgOSwgMTQsIDIzNiwgCisgICAgMTQxLCA5LCAxNCwgMjM2LCAxNDAsIDksIDE0LCAyMzYsIDEzOSwgOSwgMTQsIDIzNiwgMTM4LCA5LCAxNCwgMjM2LCAxMzcsIAorICAgIDksIDE0LCAyMzYsIDEzNiwgOSwgMTQsIDIzNiwgMTM1LCA5LCAxNCwgMjM2LCAxMzQsIDksIDE0LCAyMzYsIDEzMywgOSwgCisgICAgMTQsIDIzNiwgMTMyLCA5LCAxNCwgMjM2LCAxMzEsIDksIDE0LCAyMzYsIDEzMCwgOSwgMTQsIDIzNiwgMTI5LCA5LCAxNCwgCisgICAgMjM2LCAxMjgsIDksIDE0LCAyMzYsIDEyNywgOSwgMTQsIDIzNiwgMTI2LCA5LCAxNCwgMjM2LCAxMjUsIDksIDE0LCAyMzYsIAorICAgIDEyNCwgOSwgMTQsIDIzNiwgMTIzLCA5LCAxNCwgMjM2LCAxMjIsIDksIDE0LCAyMzYsIDEyMSwgOSwgMTQsIDIzNiwgMTIwLCAKKyAgICA5LCAxNCwgMjM2LCAxMTksIDksIDE0LCAyMzYsIDExOCwgOSwgMTQsIDIzNiwgMTE3LCA5LCAxNCwgMjM2LCAxMTYsIDksIAorICAgIDE0LCAyMzYsIDExNSwgOSwgMTQsIDIzNiwgMTE0LCA5LCAxNCwgMjM2LCAxMTMsIDksIDE0LCAyMzYsIDExMiwgOSwgMTQsIAorICAgIDIzNiwgMTExLCA5LCAxNCwgMjM2LCAxMTAsIDksIDE0LCAyMzYsIDEwOSwgOSwgMTQsIDIzNiwgMTA4LCA5LCAxNCwgMjM2LCAKKyAgICAxMDcsIDksIDE0LCAyMzYsIDEwNiwgOSwgMTQsIDIzNiwgMTA1LCA5LCAxNCwgMjM2LCAxMDQsIDksIDE0LCAyMzYsIDEwMywgCisgICAgOSwgMTQsIDIzNiwgMTAyLCA5LCAxNCwgMjM2LCAxMDEsIDksIDE0LCAyMzYsIDEwMCwgOSwgMTQsIDIzNiwgOTksIDksIDE0LCAKKyAgICAyMzYsIDk4LCA5LCAxNCwgMjM2LCA5NywgOSwgMTQsIDIzNiwgOTYsIDksIDE0LCAyMzYsIDk1LCA5LCAxNCwgMjM2LCA5NCwgCisgICAgOSwgMTQsIDIzNiwgOTMsIDksIDE0LCAyMzYsIDkyLCA5LCAxNCwgMjM2LCA5MSwgOSwgMTQsIDIzNiwgOTAsIDksIDE0LCAKKyAgICAyMzYsIDg5LCA5LCAxNCwgMjM2LCA4OCwgOSwgMTQsIDIzNiwgODcsIDksIDE0LCAyMzYsIDg2LCA5LCAxNCwgMjM2LCA4NSwgCisgICAgOSwgMTQsIDIzNiwgODQsIDksIDE0LCAyMzYsIDgzLCA5LCAxNCwgMjM2LCA4MiwgOSwgMTQsIDIzNiwgODEsIDksIDE0LCAKKyAgICAyMzYsIDgwLCA5LCAxNCwgMjM2LCA3OSwgOSwgMTQsIDIzNiwgNzgsIDksIDE0LCAyMzYsIDc3LCA5LCAxNCwgMjM2LCA3NiwgCisgICAgOSwgMTQsIDIzNiwgNzUsIDksIDE0LCAyMzYsIDc0LCA5LCAxNCwgMjM2LCA3MywgOSwgMTQsIDIzNiwgNzIsIDksIDE0LCAKKyAgICAyMzYsIDcxLCA5LCAxNCwgMjM2LCA3MCwgOSwgMTQsIDIzNiwgNjksIDksIDE0LCAyMzYsIDY4LCA5LCAxNCwgMjM2LCA2NywgCisgICAgOSwgMTQsIDIzNiwgNjYsIDksIDE0LCAyMzYsIDY1LCA3LCA0LCAyNywgMjQ0LCAxMjUsIDcsIDQsIDI3LCAyNDQsIDEyMSwgCisgICAgNywgNCwgMjcsIDI0NCwgNzYsIDcsIDQsIDI3LCAyNDQsIDEyNCwgNywgNCwgMjcsIDI0NCwgMTIzLCA3LCA0LCAyNywgMTk5LCAKKyAgICAyMjIsIDkyLCAyMTcsIDE1MiwgNywgNCwgMjcsIDIxOCwgMTY4LCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMjgsIDM5LCAxNTAsIAorICAgIDQsIDI3LCAyMzEsIDU5LCAyNDUsIDIxMywgMTUwLCA0LCAyNywgMjMxLCA1OSwgMjM1LCAyMjcsIDE1MCwgNCwgMjcsIDIxMywgCisgICAgMTgwLCAyMjgsIDM5LCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMTEsIDE2MCwgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDEsIAorICAgIDE1OCwgOTQsIDIyNSwgMTEsIDIzNSwgNTAsIDIxNCwgMTEsIDk0LCAyNywgMjExLCA2LCAyMTAsIDIzNCwgMjEwLCAyMzQsIAorICAgIDIyNSwgMjM5LCA5NCwgMSwgMjU0LCAxMzksIDI1MywgMTYyLCA5NCwgMSwgMjExLCAyNDcsIDI1NCwgMTcwLCA5NCwgMSwgCisgICAgMjExLCAyNDcsIDI0OCwgMTg5LCA5NCwgMSwgMjExLCAyNDcsIDI0MSwgMjM4LCA5NCwgMSwgMjExLCAyNDcsIDIzNCwgMjUwLCAKKyAgICA5NCwgMSwgMjExLCAyNDcsIDIzMywgOTQsIDk0LCAxLCAyMTEsIDI0NywgNDAsIDIzMSwgNjUsIDk0LCAxLCAyMTEsIDI0NywgCisgICAgMjIzLCA2NywgOTQsIDEsIDIxMSwgMjQ3LCAyMTcsIDM4LCA5NCwgMSwgMjU0LCAxMzksIDk2LCA1MCwgOTQsIDEsIDIyMCwgCisgICAgMjEsIDIsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgMSwgMjIwLCAyMSwgMiwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMSwgCisgICAgMjIwLCAyMSwgMiwgMjQ4LCAyMDgsIDIyLCAyMjAsIDIxLCAyNDcsIDEyMCwgOTQsIDEsIDIyMCwgMjEsIDIsIDI0OCwgMjA4LCAKKyAgICAyMiwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMSwgMTEyLCAyLCAyMjUsIDIzOSwgOTQsIDEsIDExMiwgMiwgMjI0LCA3NiwgCisgICAgOTQsIDEsIDExMiwgMiwgMjMxLCAxNzEsIDk0LCAxLCAyNTIsIDI5LCAyLCAyNDgsIDIwNywgOTQsIDEsIDI0MiwgMjAyLCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDI0OCwgMTkwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDI0MSwgMjM5LCAyLCAyMzEsIDE3MSwgOTQsIAorICAgIDEsIDIxNCwgNCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMTAsIDk4LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxNiwgMjMxLCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDgsIDIwNywgOTQsIDEsIDQwLCAyMzQsIDI1MSwgMiwgMjQ4LCAyMDcsIAorICAgIDk0LCAxLCAyMzQsIDI1MSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMzMsIDk1LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIzMSwgCisgICAgNjYsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI3LCAxOTUsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjIxLCAyNTAsIDIsIDI0OCwgCisgICAgMjA3LCA5NCwgMSwgNDAsIDIyNSwgMjIyLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNSwgMjIyLCAyLCAyNDgsIDIwNywgOTQsIAorICAgIDEsIDIxNSwgMTgwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNCwgNDAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjIzLCA2OCwgMiwgCisgICAgMjQ4LCAyMDcsIDk0LCAxLCAyMjAsIDIxLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxNywgMzksIDIsIDI0OCwgMjA3LCA5NCwgCisgICAgMSwgMjE0LCA0LCAyLCAyNDEsIDYxLCA5NCwgMSwgMjUyLCAyOSwgMiwgMjIzLCAxNjksIDk0LCAxLCAyMzQsIDI1MSwgMiwgCisgICAgMjIzLCAxNjksIDk0LCAxLCAyMjUsIDIyMiwgMiwgMjIzLCAxNjksIDk0LCAyNywgMTEyLCAyMzMsIDk0LCAxMCwgMSwgMTEyLCAKKyAgICAyMTIsIDQ3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIxMiwgNDcsIDQwLCAxNywgMTAsIDEsIDI1MiwgNjUsIDUzLCAxNywgMTAsIAorICAgIDEsIDI1MiwgNjUsIDQwLCAxNywgMTAsIDEsIDI1MiwgNjUsIDY1LCAxNywgMTAsIDEsIDI1MiwgNjUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyMjUsIDIwNiwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDYsIDQwLCAxNywgMTAsIDEsIDIyNSwgMjA2LCA2NSwgMTcsIAorICAgIDEwLCAxLCAyMjUsIDIwNiwgMTQ3LCAxNywgMTAsIDEsIDI1MiwgNTMsIDUzLCAxNywgMTAsIDEsIDI1MiwgNTMsIDQwLCAxNywgCisgICAgMTAsIDEsIDI1MiwgNTMsIDY1LCAxNywgMTAsIDEsIDI1MiwgNTMsIDE0NywgMTcsIDEwLCAxLCAyMTUsIDE0NywgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjE1LCAxNDcsIDQwLCAxNywgMTAsIDEsIDIxNSwgMTQ3LCA2NSwgMTcsIDEwLCAxLCAyMTUsIDE0NywgMTQ3LCAKKyAgICAxNywgMTAsIDEsIDIxNywgNiwgNTMsIDE3LCAxMCwgMSwgMjE3LCA2LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDYsIDY1LCAxNywgCisgICAgMTAsIDEsIDIxNywgNiwgMTQ3LCAxNywgMTAsIDEsIDIxNSwgMTQ5LCA1MywgMTcsIDEwLCAxLCAyMTUsIDE0OSwgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjE1LCAxNDksIDY1LCAxNywgMTAsIDEsIDIxNSwgMTQ5LCAxNDcsIDE3LCAxMCwgMSwgMjEzLCAyNDksIDUzLCAKKyAgICAxNywgMTAsIDEsIDIxMywgMjQ5LCA0MCwgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNjUsIDE3LCAxMCwgMSwgMjEzLCAyNDksIAorICAgIDE0NywgMTcsIDEwLCAxLCAyMjUsIDIwNCwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDQwLCAxNywgMTAsIDEsIDIyNSwgCisgICAgMjA0LCA2NSwgMTcsIDEwLCAxLCAyMjUsIDIwNCwgMTQ3LCAxNywgMTAsIDEsIDI0NiwgNDQsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0NiwgNDQsIDQwLCAxNywgMTAsIDEsIDI0NiwgNDQsIDY1LCAxNywgMTAsIDEsIDI0NiwgNDQsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyMjcsIDE1NCwgNTMsIDE3LCAxMCwgMSwgMjI3LCAxNTQsIDQwLCAxNywgMTAsIDEsIDIyNywgMTU0LCA2NSwgMTcsIDEwLCAKKyAgICAxLCAyMjcsIDE1NCwgMTQ3LCAxNywgMTAsIDEsIDIxNywgMjcsIDUzLCAxNywgMTAsIDEsIDIxNywgMjcsIDQwLCAxNywgMTAsIAorICAgIDEsIDIxNywgMjcsIDY1LCAxNywgMTAsIDEsIDIxNywgMjcsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDI1LCA1MywgMTcsIDEwLCAKKyAgICAxLCAyMTcsIDI1LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDI1LCA2NSwgMTcsIDEwLCAxLCAyMTcsIDI1LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAxMzMsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTMzLCA0MCwgMTcsIDEwLCAxLCAyNDgsIDIwMiwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjQ4LCAyMDIsIDQwLCAxNywgMTAsIDEsIDI0NiwgNzEsIDUzLCAxNywgMTAsIDEsIDI0NiwgNzEsIDQwLCAxNywgCisgICAgMTAsIDEsIDI0OCwgMTMxLCA1MywgMTcsIDEwLCAxLCAyNDgsIDEzMSwgNDAsIDE3LCAxMCwgMSwgMjM1LCAxMjEsIDUzLCAKKyAgICAxNywgMTAsIDEsIDIzNSwgMTIxLCA0MCwgMTcsIDEwLCAxLCAyMjIsIDE3MiwgNTMsIDE3LCAxMCwgMSwgMjIyLCAxNzIsIAorICAgIDQwLCAxNywgMTAsIDEsIDIzNCwgMTc1LCA1MywgMTcsIDEwLCAxLCAyMzQsIDE3NSwgNDAsIDE3LCAxMCwgMSwgMjM0LCAKKyAgICAxNzUsIDY1LCAxNywgMTAsIDEsIDIzNCwgMTc1LCAxNDcsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0MywgMTIzLCA0MCwgMTcsIDEwLCAxLCAyNDMsIDEyMywgNjUsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDIsIDEwMiwgNTMsIDE3LCAxMCwgMSwgMjQyLCAxMDIsIDQwLCAxNywgMTAsIDEsIDI0MiwgMTAyLCA2NSwgMTcsIAorICAgIDEwLCAxLCAyNDIsIDEwMiwgMTQ3LCAxNywgMTAsIDEsIDIyOSwgMywgNTMsIDE3LCAxMCwgMSwgMjI5LCAzLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMjksIDMsIDY1LCAxNywgMTAsIDEsIDIyOSwgMywgMTQ3LCAxNywgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE5LCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyMiwgMjE1LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgNjUsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIxOSwgMiwgNzksIDc3LCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMiwgNzksIDc3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0MiwgMTcyLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDIsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDcsIDE0MiwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQyLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQ3LCAxNDIsIDE0NywgMTcsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzMsIDUzLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgNDAsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAKKyAgICAyLCAyMDIsIDc3LCA1MywgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDE2LCA1OSwgCisgICAgNDgsIDEwLCAxNiwgNTksIDUxLCAxMCwgMTYsIDExMywgMTcwLCA0OCwgMTAsIDE2LCAxMTMsIDE3MCwgNTEsIDEwLCAxNiwgCisgICAgMTM0LCAxNzAsIDQ4LCAxMCwgMTYsIDEzNCwgMTcwLCA1MSwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgCisgICAgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDUxLCAxMCwgMTYsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAKKyAgICAxNiwgMjQ0LCAxMSwgMTcwLCA1MSwgMTAsIDE2LCA1MiwgNjcsIDI1MiwgMTQxLCA1MSwgMTAsIDE2LCAxMTMsIDE3MCwgCisgICAgMjEzLCAxODksIDQ4LCAxMCwgMTYsIDExMywgMTcwLCAyMTMsIDE4OSwgNTEsIDEwLCAxNiwgMjIyLCAyMzMsIDEwLCAxNiwgCisgICAgNCwgMjE3LCA4MSwgNDgsIDEwLCAxNiwgNCwgMjE3LCA4MSwgNTEsIDEwLCAxLCAyMjksIDgwLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjksIDgwLCA0MCwgMTcsIDEwLCAxLCAyMjksIDgwLCA2NSwgMTcsIDEwLCAxLCAyMjksIDgwLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMTA0LCA1MywgMTcsIDEwLCAxLCAxMDQsIDQwLCAxNywgMTAsIDEsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMjYsIAorICAgIDIzNSwgNDAsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxMDQsIDIsIDIwMiwgNzcsIDUzLCAxNywgMTAsIDEsIDIxNCwgMCwgNTMsIDE3LCAxMCwgMSwgMjE0LCAwLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMzQsIDczLCAyMjYsIDIzNSwgNTMsIDE3LCAxMCwgMSwgMjM0LCA3MywgMjI2LCAyMzUsIDQwLCAxNywgMTAsIAorICAgIDEsIDIzNCwgNzMsIDIxMCwgMjEzLCA1MywgMTcsIDEwLCAxLCAyMzQsIDczLCAyMTAsIDIxMywgNDAsIDE3LCAxMCwgMSwgCisgICAgMTYwLCA1MywgMTcsIDEwLCAxLCAxNjAsIDQwLCAxNywgMTAsIDEsIDE2MCwgNjUsIDE3LCAxMCwgMSwgMTYwLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjE0LCAyMDcsIDIzNCwgMTg2LCAyMzQsIDczLCAxMTIsIDIzMSwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyMTQsIAorICAgIDIwNywgMjM0LCAxODYsIDIzNCwgNzMsIDExMiwgMjMxLCAxOTMsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgCisgICAgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDQwLCAKKyAgICAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEyLCAzMSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAyLCAyMTIsIDMxLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDEwNCwgNTMsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAyLCAxMDQsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzUsIDUzLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzUsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgCisgICAgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDY1LCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIAorICAgIDIwMiwgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgCisgICAgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgNTMsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDEyMiwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjUyLCA1NSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjUyLCAKKyAgICA1NSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgCisgICAgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgCisgICAgMTMwLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTUxLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDExMiwgMjMxLCAxOTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgCisgICAgMjcsIDE1MSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDEyMiwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIyLCAyNywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKKyAgICAyMTcsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgCisgICAgMjE3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIAorICAgIDY2LCA1MywgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTUxLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTIyLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjI0LCA4MiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjI0LCA4MiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTEsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzQsIAorICAgIDI1MSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIzNCwgMjUxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMzMsIDEwMywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjI4LCA2MywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjI4LCAKKyAgICA2MywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgCisgICAgMjE5LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAxNTEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDIwMywgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIzLCA5NiwgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgMTEyLCAyMzEsIDE5MywgMiwgMjE4LCAyMywgMTEyLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ4LCAxODMsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyMzQsIAorICAgIDIwNCwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0NCwgMTY2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgCisgICAgMjQ4LCAxODUsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyMzQsIDIwNiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIAorICAgIDIsIDIxOCwgMjMsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCAKKyAgICA3NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgOCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjE3LCA4LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNiwgMTkzLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIyOCwgNjMsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIAorICAgIDEwMywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAorICAgIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTEyLCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2MywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTEyLCAyMzEsIDE5MywgMiwgMjE4LCAyMywgMTEyLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIyMywgOTYsIAorICAgIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjEwLCAxMDksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgNzksIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjQxLCAyMTksIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDIxNywgOCwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIxNywgCisgICAgOCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDY2LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMTIyLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjM0LCAKKyAgICAxMzAsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIAorICAgIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCisgICAgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyNDQsIDE0MywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgCisgICAgMTQzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgCisgICAgODIsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIAorICAgIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjM0LCAKKyAgICAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgCisgICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDY1LCAKKyAgICAxNywgMTAsIDI3LCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgCisgICAgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIAorICAgIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCAyMTgsIAorICAgIDIzLCAxMTIsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCA3OSwgCisgICAgMiwgMjAyLCA3NywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTYsIDE5MywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDYwLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDE0NywgCisgICAgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIAorICAgIDIyMCwgOTQsIDIsIDI0NCwgMTY2LCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0OCwgMTg1LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgOTQsIDIsIDIzNCwgMjA2LCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxMTIsIDIzMSwgMTkzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgCisgICAgNjAsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKKyAgICAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAKKyAgICAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMTcsIAorICAgIDgxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyNTQsIDE5NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMTUxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMTUxLCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgCisgICAgNzksIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMjMsIDk2LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMjMsIDk2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDE0NywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjEwLCAxMTIsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDExMiwgMiwgMjQ0LCAxNjQsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAxMTIsIDIsIDI0NCwgMTY0LCA1MywgMTcsIDIyNiwgMTQ2LCA0MywgMjI2LCAzLCAyMjYsIDE0NiwgNDQsIDIyNiwgMywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgMTUxLCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAKKyAgICAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4LCAyLCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIAorICAgIDE2NywgMiwgMTUxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCAxMjIsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgCisgICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAKKyAgICAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMjcsIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIAorICAgIDIsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjIwLCA2MCwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIAorICAgIDEzMCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4MSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgCisgICAgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIAorICAgIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMjM0LCAxMzAsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDMsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTIyLCAyLCA2NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAorICAgIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjMzLCAKKyAgICAxMDMsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDY2LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNjYsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIAorICAgIDI3LCA2NiwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgMTUxLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDIzNCwgMTMwLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgMTUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAKKyAgICAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgCisgICAgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAKKyAgICAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgCisgICAgNTUsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjU0LCAxOTcsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA2NiwgMiwgNjYsIDY1LCAKKyAgICAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMiwgNCwgMjE0LCAxMjgsIDI1MywgMjM4LCAyMzQsIDQsIDIxOCwgMTMwLCAKKyAgICA1LCA1MywgMTcsIDEwLCAyNywgMjI0LCA3OCwgMjE0LCAxMjgsIDI1MywgMjM4LCAyMzQsIDQsIDIxOCwgMTMwLCA1LCA1MywgCisgICAgMTcsIDEwLCAyNywgMjU0LCAxNTMsIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE4MywgNTMsIDE3LCAxMCwgMjcsIDIzMCwgMTUzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIyLCA1LCA1MywgMTcsIDEwLCAyNywgMjIzLCAxNDMsIDUzLCAxNywgMTAsIDI3LCAyNTQsIAorICAgIDE3MiwgNTMsIDE3LCAxMCwgMjcsIDIxMiwgNDksIDUzLCAxNywgMTAsIDI3LCAyMjIsIDQsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjIsIDMsIDI1NCwgMTcyLCAyMTIsIDQ4LCAxMCwgMjcsIDIzNSwgMTM0LCAyMjMsIDM0LCA1MCwgMTAsIDI3LCAyNTEsIAorICAgIDIzMCwgMjU0LCAzOSwgMjU0LCA0MCwgNDUsIDIyMSwgMTU2LCA0NSwgMjIxLCA0NSwgNDUsIDIyMCwgMjMzLCA0NSwgMjIwLCAKKyAgICAyMjIsIDQ1LCAyMjAsIDIxMSwgNDUsIDIyMCwgMjAwLCA0NSwgMjIwLCAxODksIDQ1LCAyMjAsIDE3OCwgNDUsIDIyMCwgCisgICAgMTY3LCA0NSwgMjIxLCAxNTUsIDQ1LCAyMjEsIDE0NCwgNDUsIDIyMSwgMTMzLCA0NSwgMjIxLCAxMjIsIDQ1LCAyMjEsIAorICAgIDExMSwgNDUsIDIyMSwgMTAwLCA0NSwgMjIxLCA4OSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ5LCAyMTksIDIyNCwgCisgICAgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDEwOSwgMjQ5LCAyMTksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDEwOSwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDksIDIyNiwgMjI0LCAxOTQsIDI0NCwgMjAsIAorICAgIDMxLCA2NywgMjIwLCAxNTAsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMzEsIDc4LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCAyMjQsIDEzLCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDcxLCAyMzMsIDIwLCAxMjcsIAorICAgIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA3MSwgMjMzLCAyMCwgMjUxLCAxNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAKKyAgICAzMSwgNjcsIDIwMywgMjQ1LCAxNjMsIDM4LCAyNywgNDMsIDI0MiwgMjcsIDM4LCAyNywgNDQsIDI0MiwgMjcsIDM4LCA1MiwgCisgICAgMjE2LCA4OSwgNDMsIDI0MiwgMjcsIDM4LCA1MiwgMjE2LCA4OSwgNDQsIDI0MiwgMjcsIDM4LCAyMzEsIDIzMywgNDMsIAorICAgIDI0MiwgMjcsIDM4LCAyMzEsIDIzMywgNDQsIDI0MiwgMjcsIDM4LCAyNDksIDE5NywgMjMxLCAyMzIsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDExMywgNTksIDIzMywgNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMTYwLCAKKyAgICAyNDgsIDE1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAxNTEsIDI0OCwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCAxMjEsIDIzMiwgMjEzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyMTIsIDMyLCAxMjEsIDIzMiwgCisgICAgMjEzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjI2LCAzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAKKyAgICA0NCwgMjI2LCAzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjQ5LCA5OSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCA0NCwgMjQ5LCA5OSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDIwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA4NSwgCisgICAgMjMzLCAyMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIAorICAgIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjQ5LCAxNjEsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDI0OSwgCisgICAgMTYxLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA3MSwgMjQ5LCAxNjEsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2MSwgMTI3LCAyMjAsIDEzMSwgMjQ3LCAxMjAsIDcxLCAyMjAsIDEzMSwgCisgICAgMjQ3LCAxMjAsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIAorICAgIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNTUsIDIyNiwgMTE5LCAyNTAsIDE3MiwgMjI2LCAxMTksIDIxMiwgMzIsIDIyNiwgCisgICAgMTE5LCA1MiwgMjEyLCAzMiwgMjI2LCAxMTksIDI0OCwgMTU1LCAxMjEsIDIzMiwgMjEzLCAyNTAsIDE3MiwgMTIxLCAyMzIsIAorICAgIDIxMywgMjEyLCAzMiwgMTIxLCAyMzIsIDIxMywgNCwgMjQ5LCAyMTksIDQsIDEwOSwgMjQ5LCAyMTksIDQsIDI0MywgMjI5LCAKKyAgICAyMTgsIDEyOSwgNCwgMjIwLCAxNTAsIDQsIDI0OSwgMjI2LCA0LCAyMjQsIDEzLCA3OCwgNCwgMjQ1LCAzMSwgNzgsIDQsIAorICAgIDI0NSwgMTYwLCAyNDgsIDE1NiwgNCwgNDMsIDIyNiwgMywgNCwgNDQsIDIyNiwgMywgNCwgNDMsIDI0OSwgOTksIDEyNywgNCwgCisgICAgNDQsIDI0OSwgOTksIDEyNywgNCwgNDMsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQsIDU0LCA1MCwgNCwgMjU0LCAxMjYsIDQsIDI1MywgMjE2LCA0LCA5NiwgNTAsIDQsIDI0MCwgMTY3LCA0LCAyMzMsIAorICAgIDE1LCA1MCwgNCwgMjQyLCAxMzAsIDUwLCA0LCAyNDUsIDk4LCA1MCwgNCwgMjIzLCA1MCwgMjE5LCA0NiwgNCwgMjQ3LCAKKyAgICAxMzIsIDUwLCA0LCAyMjUsIDE4MiwgNTAsIDQsIDI0OSwgMjE3LCAyNTMsIDIwNiwgMTAsIDI0NCwgMTY0LCA1MywgMTcsIAorICAgIDEwLCAyMTcsIDQ0LCAyLCAyNDQsIDE2NCwgNDgsIDEwLCAyNDgsIDE4MywgNTMsIDE3LCAxMCwgMjE3LCA3OCwgMjQ0LCAxLCAKKyAgICAxMCwgMjM0LCAyMDQsIDUzLCAxNywgMTAsIDI0NCwgMTY2LCA1MywgMTcsIDEwLCAyNDQsIDE2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI0OCwgMTg1LCA1MywgMTcsIDEwLCAyNDgsIDE4NSwgMTQ3LCAxNywgMTAsIDIzNCwgMjA2LCA1MywgMTcsIDEwLCAyMzQsIAorICAgIDIwNiwgMTQ3LCAxNywgMTAsIDIyMCwgOTQsIDUzLCAxNywgMTAsIDIyMCwgOTQsIDE0NywgMTcsIDEwLCAyMTgsIDQ2LCA1MywgCisgICAgMTcsIDEwLCAyMTgsIDQ2LCAxNDcsIDE3LCAxMCwgMSwgMjAyLCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIzMSwgMjI4LCAKKyAgICA3NywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDQwLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCA3NywgCisgICAgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDc3LCA1MywgCisgICAgMTcsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNTMsIAorICAgIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDQwLCAxNywgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA1MywgMTcsIAorICAgIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDY1LCAxNywgMTAsIDEsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAxNDcsIDE3LCAxMCwgMSwgMTEyLCA1MywgMTcsIDEwLCAxLCAxMTIsIDQwLCAxNywgMTAsIDEsIDI1MiwgCisgICAgNTUsIDUzLCAxNywgMTAsIDEsIDI1MiwgNTUsIDQwLCAxNywgMTAsIDEsIDI1MiwgNTUsIDY1LCAxNywgMTAsIDEsIDI1MiwgCisgICAgNTUsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY1LCA1MywgMTcsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY1LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMTcsIDgsIDUzLCAxNywgMTAsIDEsIDIxNywgOCwgNDAsIDE3LCAxMCwgMSwgMjE3LCA4LCA2NSwgCisgICAgMTcsIDEwLCAxLCAyMTcsIDgsIDE0NywgMTcsIDEwLCAxLCAyMTYsIDE5MywgNTMsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDQwLCAKKyAgICAxNywgMTAsIDEsIDIxNiwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyMTYsIDE5MywgMTQ3LCAxNywgMTAsIDEsIDE1MSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMTUxLCA0MCwgMTcsIDEwLCAxLCAxNTEsIDY1LCAxNywgMTAsIDEsIDE1MSwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMSwgMTIyLCA0MCwgMTcsIDEwLCAxLCAxMjIsIDY1LCAxNywgMTAsIDEsIDEyMiwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAxLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIzNCwgMTMwLCAxNDcsIDE3LCAxMCwgMSwgMjQ4LCAxOTYsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTk2LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMTYsIDIwMywgNTMsIDE3LCAxMCwgMSwgMjE2LCAyMDMsIDQwLCAxNywgMTAsIDEsIDIyMywgOTYsIAorICAgIDUzLCAxNywgMTAsIDEsIDIyMywgOTYsIDQwLCAxNywgMTAsIDEsIDIxMCwgMTA5LCA1MywgMTcsIDEwLCAxLCAyMTAsIDEwOSwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDUzLCAxNywgMTAsIDEsIDIyMSwgMTY3LCA0MCwgMTcsIDEwLCAxLCAyMjEsIAorICAgIDE2NywgNjUsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDE0NywgMTcsIDEwLCAxLCAyMjAsIDYwLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjAsIDYwLCA0MCwgMTcsIDEwLCAxLCAyMjAsIDYwLCA2NSwgMTcsIDEwLCAxLCAyMjAsIDYwLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyNywgNTMsIDE3LCAxMCwgMSwgMjIyLCAyNywgNDAsIDE3LCAxMCwgMSwgMjIyLCAyNywgNjUsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyNywgMTQ3LCAxNywgMTAsIDEsIDI0OCwgMjE3LCA1MywgMTcsIDEwLCAxLCAyNDgsIDIxNywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAyMTcsIDY1LCAxNywgMTAsIDEsIDI0OCwgMjE3LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCA4MSwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjE3LCA4MSwgNDAsIDE3LCAxMCwgMSwgMjE3LCA4MSwgNjUsIDE3LCAxMCwgMSwgMjE3LCA4MSwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIxMCwgMTEyLCA1MywgMTcsIDEwLCAxLCAyMTAsIDExMiwgNDAsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIxMCwgMTEyLCAxNDcsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDUzLCAxNywgMTAsIDEsIDI1NCwgMTk3LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyNTQsIDE5NywgNjUsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDE0NywgMTcsIDEwLCAxLCAyNDIsIAorICAgIDI0NSwgNTMsIDE3LCAxMCwgMSwgMjQyLCAyNDUsIDQwLCAxNywgMTAsIDEsIDI0MiwgMjQ1LCA2NSwgMTcsIDEwLCAxLCAKKyAgICAyNDIsIDI0NSwgMTQ3LCAxNywgMTAsIDEsIDI0NCwgMTQzLCA1MywgMTcsIDEwLCAxLCAyNDQsIDE0MywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQ0LCAxNDMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTQzLCAxNDcsIDE3LCAxMCwgMSwgMjI0LCA4MiwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjI0LCA4MiwgNDAsIDE3LCAxMCwgMSwgMjI0LCA4MiwgNjUsIDE3LCAxMCwgMSwgMjI0LCA4MiwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIzNCwgMjUxLCA1MywgMTcsIDEwLCAxLCAyMzQsIDI1MSwgNDAsIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIzNCwgMjUxLCAxNDcsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDUzLCAxNywgMTAsIDEsIDIzMywgMTAzLCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMzMsIDEwMywgNjUsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDE0NywgMTcsIDEwLCAxLCA2NiwgNTMsIAorICAgIDE3LCAxMCwgMSwgNjYsIDQwLCAxNywgMTAsIDEsIDY2LCA2NSwgMTcsIDEwLCAxLCA2NiwgMTQ3LCAxNywgMTAsIDEsIDIyOCwgCisgICAgNjMsIDUzLCAxNywgMTAsIDEsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDEsIDIyOCwgNjMsIDY1LCAxNywgMTAsIDEsIDIyOCwgCisgICAgNjMsIDE0NywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDQwLCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDEsIDIxMiwgMzEsIDUzLCAxNywgMTAsIAorICAgIDEsIDIxMiwgMzEsIDQwLCAxNywgMTAsIDEsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDEsIDExMiwgMjMxLCAxOTMsIAorICAgIDQwLCAxNywgMTAsIDEsIDc5LCA1MywgMTcsIDEwLCAxLCA3OSwgNDAsIDE3LCAxMCwgMSwgNzksIDY1LCAxNywgMTAsIDEsIAorICAgIDc5LCAxNDcsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIAorICAgIDIwMiwgNzcsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgCisgICAgMjAyLCAyNTIsIDQzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCAxMTIsIDQwLCAxNywgMjEwLCA4NywgMjExLCAyNDUsIDIyOCwgNzMsIDIxOSwgMTgsIDEyNiwgMjQ1LCAzMSwgNzgsIAorICAgIDEyNiwgMjIzLCAyNTQsIDc4LCAxMjYsIDU0LCA1MCwgMTI2LCAyNDcsIDEzMiwgNTAsIDEyNiwgMjI1LCAxODIsIDUwLCAKKyAgICAxMjYsIDI1NCwgMTI2LCAxMjYsIDI1NCwgNTcsIDEyNiwgNDMsIDIyNiwgMywgMTI2LCA0NCwgMjI2LCAzLCAxMjYsIDI1MywgCisgICAgMjE2LCAxMjYsIDk2LCA1MCwgMTI2LCAyNDksIDIxOSwgMTI2LCAyNDAsIDE2NywgMTI2LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDEyNiwgMjE5LCA0NiwgMTI2LCAyMSwgMjEwLCA4NiwgMTI2LCAyMSwgMTEwLCAxMjYsIDIxLCAxMDUsIDEyNiwgMjEsIDE1OCwgCisgICAgMTI2LCAyMSwgMTYxLCAxMjYsIDIxLCAxODksIDEyNiwgMjEsIDE5NCwgMTI2LCAyMSwgMTk4LCAxMjYsIDIxLCAxOTUsIAorICAgIDEyNiwgMjEsIDIwMCwgMTI2LCAyNDksIDIyNiwgMTI2LCAyMjAsIDE1MCwgMTI2LCAyMzMsIDE1LCA1MCwgMTI2LCAyNDUsIAorICAgIDk4LCA1MCwgMTI2LCAyNDIsIDEzMCwgNTAsIDEyNiwgMjI0LCAxMywgNzgsIDEyNiwgMjQ5LCAyMTcsIDI1MywgMjA2LCAKKyAgICAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIDEsIDI1MywgMTU4LCAxMjYsIDcsIDYsIDEsIDI1MSwgNjYsIDEyNiwgNywgCisgICAgNiwgMSwgMjQ5LCA2MCwgMTI2LCA3LCA2LCAxLCA3NSwgMTI2LCA3LCA2LCAxLCAyNDUsIDYsIDEyNiwgNywgNiwgMSwgMjQzLCAKKyAgICAyMDIsIDEyNiwgNywgNiwgMSwgMjQyLCA2MCwgMTI2LCA3LCA2LCAxLCA3MywgMTI2LCA3LCA2LCAxLCAyMzUsIDE0NCwgCisgICAgMTI2LCA3LCA2LCAxLCAyMzUsIDIzLCAxMjYsIDcsIDYsIDEsIDE1NiwgMTI2LCA3LCA2LCAxLCAxOTMsIDEyNiwgNywgNiwgCisgICAgMSwgMjMwLCAyNSwgMTI2LCA3LCA2LCAxLCA3NiwgMTI2LCA3LCA2LCAxLCAyMjYsIDEwNSwgMTI2LCA3LCA2LCAxLCAyMjQsIAorICAgIDk2LCAxMjYsIDcsIDYsIDEsIDE1MywgMTI2LCA3LCA2LCAxLCAyMjIsIDkxLCAxMjYsIDcsIDYsIDEsIDIxNywgMTUyLCAKKyAgICAxMjYsIDcsIDYsIDEsIDcwLCAxMjYsIDcsIDYsIDEsIDIxNCwgMTA1LCAxMjYsIDcsIDYsIDEsIDIxMiwgOTgsIDEyNiwgNywgCisgICAgNiwgMSwgMjExLCAxNzgsIDEyNiwgNywgNiwgMSwgMjExLCAxMTcsIDEyNiwgNywgNiwgMSwgMjEwLCAxNTksIDEyNiwgNDMsIAorICAgIDQyLCAxMjcsIDEyNiwgMjIzLCA1MCwgMjE5LCA0NiwgMTI2LCA0NCwgNDIsIDEyNywgMTI2LCAyNTAsIDMxLCAyNTUsIDE0LCAKKyAgICAxMjYsIDEyMSwgMjMyLCAyMTMsIDEyNiwgMjQyLCAxMzcsIDI1NSwgMTQsIDEyNiwgNywgNCwgMSwgNjEsIDEyNiwgNywgNCwgCisgICAgMSwgMjUzLCAxNTgsIDEyNiwgNywgNCwgMSwgMjUxLCA2NiwgMTI2LCA3LCA0LCAxLCAyNDksIDYwLCAxMjYsIDcsIDQsIDEsIAorICAgIDc1LCAxMjYsIDcsIDQsIDEsIDI0NSwgNiwgMTI2LCA3LCA0LCAxLCAyNDMsIDIwMiwgMTI2LCA3LCA0LCAxLCAyNDIsIDYwLCAKKyAgICAxMjYsIDcsIDQsIDEsIDczLCAxMjYsIDcsIDQsIDEsIDIzNSwgMTQ0LCAxMjYsIDcsIDQsIDEsIDIzNSwgMjMsIDEyNiwgNywgCisgICAgNCwgMSwgMTU2LCAxMjYsIDcsIDQsIDEsIDE5MywgMTI2LCA3LCA0LCAxLCAyMzAsIDI1LCAxMjYsIDcsIDQsIDEsIDc2LCAKKyAgICAxMjYsIDcsIDQsIDEsIDIyNiwgMTA1LCAxMjYsIDcsIDQsIDEsIDIyNCwgOTYsIDEyNiwgNywgNCwgMSwgMTUzLCAxMjYsIDcsIAorICAgIDQsIDEsIDIyMiwgOTEsIDEyNiwgNywgNCwgMSwgMjE3LCAxNTIsIDEyNiwgNywgNCwgMSwgNzAsIDEyNiwgNywgNCwgMSwgCisgICAgMjE0LCAxMDUsIDEyNiwgNywgNCwgMSwgMjEyLCA5OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA0LCAxLCAKKyAgICAyMTEsIDExNywgMTI2LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjYsIDY3LCAyMzIsIAorICAgIDIxMywgMTI2LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjYsIDE4MiwgMTI2LCA0MywgNzEsIDIyNiwgMywgMTI2LCA0NCwgNzEsIAorICAgIDIyNiwgMywgMTAxLCAxMDksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTAxLCA0MywgMjQ5LCAxNjEsIDEyNywgMTAxLCA0NCwgCisgICAgMjQ5LCAxNjEsIDEyNywgMTAxLCAxMDksIDI0OSwgMjE5LCAxMDEsIDU2LCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDEwMSwgNTYsIAorICAgIDEsIDIxMSwgMjI3LCAxMDEsIDU2LCAxLCA0LCA2MSwgMTAxLCA1NiwgMSwgNCwgNzMsIDEwMSwgNTYsIDEsIDQsIDcwLCAKKyAgICAxMDEsIDU2LCAxLCA0LCA3NSwgMTAxLCA1NiwgMSwgNCwgNzYsIDEwMSwgNTYsIDEsIDQsIDE5MSwgMTAxLCA1NiwgMSwgNCwgCisgICAgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDQsIDIxMCwgMjQ0LCAxMDEsIDU2LCAxLCA0LCAyMTUsIDExOCwgMTAxLCAyMzQsIAorICAgIDIwMSwgMjI0LCAxNzMsIDIxOSwgMzEsIDc4LCAxMDEsIDU2LCAxLCA2MSwgMTAxLCA1NiwgMSwgNzMsIDEwMSwgNTYsIDEsIAorICAgIDcwLCAxMDEsIDU2LCAxLCA3NSwgMTAxLCA1NiwgMSwgNzYsIDEwMSwgNTYsIDEsIDE3NiwgMTAxLCA1NiwgMSwgMjM0LCA5MiwgCisgICAgMTAxLCA1NiwgMSwgMjMzLCAyMTcsIDEwMSwgNTYsIDEsIDIzNCwgMTgyLCAxMDEsIDU2LCAxLCAyMzQsIDI4LCAxMDEsIDU2LCAKKyAgICAxLCAyMDYsIDEwMSwgNTYsIDEsIDIxOSwgMTkxLCAxMDEsIDU2LCAxLCAyMTgsIDgzLCAxMDEsIDU2LCAxLCAyMjEsIDE4MSwgCisgICAgMTAxLCA1NiwgMSwgMjE5LCA1OCwgMTAxLCA1NiwgMSwgMjE3LCAxMDUsIDEwMSwgNTYsIDEsIDIxNiwgMTE3LCAxMDEsIDU2LCAKKyAgICAxLCAyMTUsIDExOCwgMTAxLCA1NiwgMSwgMjE3LCAyMiwgMTAxLCA1NiwgMSwgMTExLCAxMDEsIDU2LCAxLCAxOTcsIDEwMSwgCisgICAgNTYsIDEsIDIyOCwgMjMzLCAxMDEsIDU2LCAxLCAyMjcsIDIzNywgMTAxLCA1NiwgMSwgMjI5LCAxMDcsIDEwMSwgNTYsIDEsIAorICAgIDIyOCwgNzQsIDEwMSwgNTYsIDEsIDE2MiwgMTAxLCA1NiwgMSwgMjQxLCAxODAsIDEwMSwgNTYsIDEsIDI0MCwgMjIyLCAKKyAgICAxMDEsIDU2LCAxLCAyNDEsIDIzOCwgMTAxLCA1NiwgMSwgMjQxLCA2OCwgMTAxLCA1NiwgMSwgMTg0LCAxMDEsIDU2LCAxLCAKKyAgICAyMzAsIDIzMCwgMTAxLCA1NiwgMSwgMjMwLCAxMDIsIDEwMSwgNTYsIDEsIDIzMSwgOTEsIDEwMSwgNTYsIDEsIDIzMCwgCisgICAgMTYxLCAxMDEsIDU2LCAxLCAxOTEsIDEwMSwgNTYsIDEsIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCAyMTAsIDI0NCwgMTAxLCAKKyAgICA1NiwgMSwgMjA1LCAxMDEsIDU2LCAxLCAyMjMsIDM1LCAxMDEsIDU2LCAxLCAyMjIsIDE0MCwgMTAxLCA1NiwgMSwgMjIzLCAKKyAgICAxMjgsIDEwMSwgNTYsIDEsIDIyMiwgMjExLCAxMDEsIDU2LCAxLCAyMTIsIDY1LCAxMDEsIDU2LCAxLCAyMzAsIDI1LCAxMDEsIAorICAgIDU2LCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDEwMSwgNTYsIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMTAxLCAyNCwgMjQ0LCAKKyAgICAxMDMsIDEwMSwgMjQsIDEsIDIzNCwgNTgsIDEwMSwgMjQsIDEsIDIxOCwgMjE1LCAxMDEsIDI0LCAxLCAyMzQsIDUxLCAxMDEsIAorICAgIDI0LCAxLCAyMjgsIDIyNiwgMTAxLCAyNCwgMSwgMjI4LCAyMjQsIDEwMSwgMjQsIDEsIDIyOCwgMjIzLCAxMDEsIDI0LCAxLCAKKyAgICAyMTYsIDEwMSwgMTAxLCAyNCwgMSwgMjE4LCAyMDQsIDEwMSwgMjQsIDEsIDIyMywgMjYsIDEwMSwgMjQsIDEsIDIyMywgMjEsIAorICAgIDEwMSwgMjQsIDEsIDIyMywgMTgsIDEwMSwgMjQsIDEsIDIyMywgMTEsIDEwMSwgMjQsIDEsIDIyMywgNiwgMTAxLCAyNCwgMSwgCisgICAgMjIzLCAxLCAxMDEsIDI0LCAxLCAyMjMsIDEyLCAxMDEsIDI0LCAxLCAyMjMsIDI0LCAxMDEsIDI0LCAxLCAyMzAsIDIxNywgCisgICAgMTAxLCAyNCwgMSwgMjI1LCA5NSwgMTAxLCAyNCwgMSwgMjE4LCAyMTIsIDEwMSwgMjQsIDEsIDIyNSwgODQsIDEwMSwgMjQsIAorICAgIDEsIDIxOSwgMTQ4LCAxMDEsIDI0LCAxLCAyMTgsIDIwOSwgMTAxLCAyNCwgMSwgMjM2LCA1NiwgMTAxLCAyNCwgMSwgMjUwLCAKKyAgICA0NiwgMTAxLCAyNCwgMSwgMjE4LCAyMTksIDEwMSwgMjQsIDEsIDI1MCwgMTA2LCAxMDEsIDI0LCAxLCAyMzQsIDExMCwgCisgICAgMTAxLCAyNCwgMSwgMjE2LCAxNzMsIDEwMSwgMjQsIDEsIDIyNSwgMTMxLCAxMDEsIDI0LCAxLCAyNDEsIDE3MiwgMTAxLCAKKyAgICAyNCwgMSwgNjEsIDEwMSwgMjQsIDEsIDI1NCwgMjQzLCAxMDEsIDI0LCAxLCAxOTEsIDEwMSwgMjQsIDEsIDIxMSwgOTIsIAorICAgIDEwMSwgMjQsIDEsIDI0NSwgMTE3LCAxMDEsIDI0LCAxLCA3NSwgMTAxLCAyNCwgMSwgMjExLCAzNiwgMTAxLCAyNCwgMSwgCisgICAgMjExLCA0NywgMTAxLCAyNCwgMSwgNzYsIDEwMSwgMjQsIDEsIDIxMiwgNjUsIDEwMSwgMjQsIDEsIDIxMiwgNjIsIDEwMSwgCisgICAgMjQsIDEsIDIyNiwgMjM0LCAxMDEsIDI0LCAxLCAyMTAsIDI0NCwgMTAxLCAyNCwgMSwgNzAsIDEwMSwgMjQsIDEsIDIxMiwgCisgICAgMTEsIDEwMSwgMjQsIDEsIDIxMiwgMjIsIDEwMSwgMjQsIDEsIDIxMSwgMjUwLCAxMDEsIDI0LCAxLCAyMTAsIDIxMiwgMTAxLCAKKyAgICAyNCwgMSwgMjQ1LCA1NSwgMTAxLCAyNCwgMSwgMjExLCA4LCAxMDEsIDI0LCAxLCA3MywgMTI2LCAyNTAsIDE3NiwgNTAsIAorICAgIDEyNiwgMjI0LCAyMjgsIDUwLCAxMjYsIDIyOCwgNTIsIDUwLCAxMjYsIDIzMSwgMjMyLCAxMjYsIDI1MSwgMTM1LCAxMzAsIAorICAgIDEyNiwgMjExLCA0MCwgNTAsIDEyNiwgMjExLCAyMTcsIDUwLCAxMDEsIDI0NCwgMTgsIDE5MiwgMjEzLCAyMzksIDEwMSwgCisgICAgMTQwLCA3NCwgMTAxLCAyMTQsIDE1MywgNzQsIDEwMSwgOTcsIDc0LCAxMDEsIDI0NiwgMTA0LCA3NCwgMTAxLCA4NSwgMjE4LCAKKyAgICAyMzQsIDEwMSwgNzEsIDI1MCwgMzUsIDIzNSwgMjA0LCAyNTQsIDk5LCAyNTQsIDEyMCwgMjM1LCAyMDQsIDI1NCwgOTksIAorICAgIDIyMCwgMTM3LCAyMzUsIDIwNCwgMjU0LCA5OSwgMjE2LCAyMzYsIDIyNiwgMjQ5LCAyMjMsIDcyLCAyNTAsIDE0MiwgMjIzLCAKKyAgICA3MiwgMjUwLCAxNDIsIDYyLCA1NywgMywgMjUzLCAxNDIsIDYxLCA2MiwgNTcsIDMsIDI1MywgMTExLCA3NSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDEyMCwgNzMsIDYyLCA1NywgMywgMjUzLCA4OCwgNzYsIDYyLCA1NywgMywgMjUzLCAxMzgsIDcwLCA2MiwgNTcsIAorICAgIDMsIDI1MywgMTU3LCAyNDgsIDIyMSwgNjIsIDU3LCAzLCAyNTMsIDEwNCwgMjQ4LCA5MCwgNjIsIDU3LCAzLCAyNTMsIDE0NCwgCisgICAgMjQ4LCAzLCA2MiwgNTcsIDMsIDI1MywgMTM0LCAyNDcsIDE0NSwgNjIsIDU3LCAzLCAyNTMsIDk4LCAyNDYsIDc4LCA2MiwgCisgICAgNTcsIDMsIDI1MywgOTIsIDIzNSwgMTQxLCA2MiwgNTcsIDMsIDI1MywgMTAzLCAyMzUsIDEyNiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDExMywgMjM1LCA2OCwgNjIsIDU3LCAzLCAyNTMsIDg0LCAyMzUsIDUxLCA2MiwgNTcsIDMsIDI1MywgNzIsIDE3NiwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEwNSwgMjM0LCAxODIsIDYyLCA1NywgMywgMjUzLCA4MiwgMjM0LCA5MiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDc5LCAyMzQsIDI4LCA2MiwgNTcsIDMsIDI1MywgNjgsIDIzMywgMjE3LCA2MiwgNTcsIDMsIDI1MywgNjksIDE4NCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEzNSwgMjMxLCA5MSwgNjIsIDU3LCAzLCAyNTMsIDc2LCAyMzAsIDIzMCwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDEzMywgMjMwLCAxNjEsIDYyLCA1NywgMywgMjUzLCAxMjUsIDIzMCwgMTAyLCA2MiwgNTcsIDMsIDI1MywgMTQ2LCAxOTcsIAorICAgIDYyLCA1NywgMywgMjUzLCAxMjQsIDIyOSwgMTA3LCA2MiwgNTcsIDMsIDI1MywgMTE4LCAyMjgsIDIzMywgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDk3LCAyMjgsIDc0LCA2MiwgNTcsIDMsIDI1MywgOTQsIDIyNywgMjM3LCA2MiwgNTcsIDMsIDI1MywgMTUzLCAxOTAsIAorICAgIDYyLCA1NywgMywgMjUzLCA3NywgMjI1LCAyMjEsIDYyLCA1NywgMywgMjUzLCAxMTAsIDIyNSwgMTA4LCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTM3LCAyMjUsIDE2LCA2MiwgNTcsIDMsIDI1MywgOTksIDIyNCwgMTUwLCA2MiwgNTcsIDMsIDI1MywgMTMyLCAKKyAgICAyMjQsIDg4LCA2MiwgNTcsIDMsIDI1MywgNzEsIDIyNCwgNjksIDYyLCA1NywgMywgMjUzLCAxMjcsIDIyNCwgNTMsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMTYsIDIyNCwgNDIsIDYyLCA1NywgMywgMjUzLCA4OSwgMjA1LCA2MiwgNTcsIDMsIDI1MywgMTIxLCAKKyAgICAyMjMsIDEyOCwgNjIsIDU3LCAzLCAyNTMsIDk2LCAyMjMsIDM1LCA2MiwgNTcsIDMsIDI1MywgMTU1LCAyMjIsIDIxMSwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEyMiwgMjIyLCAxNDAsIDYyLCA1NywgMywgMjUzLCAxMTcsIDIwNiwgNjIsIDU3LCAzLCAyNTMsIDE0MCwgCisgICAgMjIxLCAxODEsIDYyLCA1NywgMywgMjUzLCAxMDgsIDIxOSwgMTkxLCA2MiwgNTcsIDMsIDI1MywgMTM2LCAyMTksIDU4LCAKKyAgICA2MiwgNTcsIDMsIDI1MywgOTEsIDIxOCwgODMsIDYyLCA1NywgMywgMjUzLCA5MCwgMjE3LCAxMDUsIDYyLCA1NywgMywgCisgICAgMjUzLCAxNTEsIDIxNywgMjIsIDYyLCA1NywgMywgMjUzLCAxMTIsIDIxNiwgMTE3LCA2MiwgNTcsIDMsIDI1MywgMTQ5LCAKKyAgICAxMTEsIDYyLCA1NywgMywgMjUzLCA4MCwgMjE1LCAxMTgsIDYyLCA1NywgMywgMjUzLCA5NSwgMjEyLCA2NSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDc0LCAyMTIsIDIyLCA2MiwgNTcsIDMsIDI1MywgMTA5LCAyMTEsIDI1MCwgNjIsIDU3LCAzLCAyNTMsIDEwNywgCisgICAgMjExLCAyMjcsIDYyLCA1NywgMywgMjUzLCAxMzEsIDIxMCwgMTE2LCA2MiwgNTcsIDMsIDI1MywgNzUsIDIxMCwgOTQsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMjgsIDIxMCwgMjMsIDYyLCA1NywgMywgMjUzLCAxMjMsIDI1NSwgNzUsIDYyLCA1NywgMywgMjUzLCAKKyAgICAxMDYsIDI1NSwgNzQsIDYyLCA1NywgMywgMjUzLCA2NSwgMjUzLCAxOTIsIDYyLCA1NywgMywgMjUzLCA3OCwgMjQ2LCA0NiwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDYxLCAyNDYsIDQ1LCA2MiwgNTcsIDMsIDI1MywgMTAxLCAyMjcsIDE3NCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDExOSwgMjI0LCAxNDgsIDYyLCA1NywgMywgMjUzLCA4NywgMjI0LCAxNTIsIDYyLCA1NywgMywgMjUzLCA3MywgCisgICAgMjIzLCAxODYsIDYyLCA1NywgMywgMjUzLCAxMTUsIDIyMywgMTg1LCA2MiwgNTcsIDMsIDI1MywgODEsIDIyMiwgMjEwLCAKKyAgICA2MiwgNTcsIDMsIDI1MywgODMsIDIxNywgMTAyLCA2MiwgNTcsIDMsIDI1MywgNjMsIDIxNSwgNzgsIDYyLCA1NywgMywgCisgICAgMjUzLCA2MCwgMTA1LCA2MiwgNTcsIDE2LCAyNTMsIDEzMCwgNjIsIDU3LCAxNiwgMjUzLCAxMjksIDYyLCA1NywgMTYsIAorICAgIDI1MywgMTI2LCA2MiwgNTcsIDE2LCAyNTMsIDExNCwgNjIsIDU3LCAxNiwgMjUzLCAxMDIsIDYyLCA1NywgMTYsIDI1MywgCisgICAgMTAwLCA2MiwgNTcsIDE2LCAyNTMsIDkzLCA2MiwgNTcsIDE2LCAyNTMsIDg2LCA2MiwgNTcsIDE2LCAyNTMsIDg1LCA2MiwgCisgICAgNTcsIDE2LCAyNTMsIDcwLCA2MiwgNTcsIDE2LCAyNTMsIDY3LCA2MiwgNTcsIDE2LCAyNTMsIDY2LCA2MiwgNTcsIDE2LCAKKyAgICAyNTMsIDY0LCA2MiwgNTcsIDE2LCAyNTMsIDYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1OSwgMjMxLCAxODUsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDU4LCAyMTEsIDIyMSwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDI0OCwgNzQsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDU2LCAyNDUsIDk1LCA2MiwgNTcsIDEwNiwgMjUzLCA1NSwgMjMxLCAxNTksIDYyLCA1NywgMTA2LCAyNTMsIDU0LCAyMTgsIAorICAgIDE2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTMsIDI0NSwgMzcsIDYyLCA1NywgMTA2LCAyNTMsIDUyLCAyMjMsIDE1MywgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgNTEsIDIyMCwgNjIsIDYyLCA1NywgMTA2LCAyNTMsIDUwLCAyNDEsIDIzNywgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgNDksIDIxOSwgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDQ4LCAyNTEsIDIwMywgNjIsIDU3LCAxMDYsIDI1MywgNDcsIAorICAgIDI0OSwgMTQ1LCA2MiwgNTcsIDEwNiwgMjUzLCA0NiwgMjUxLCAxMTUsIDYyLCA1NywgMTA2LCAyNTMsIDQ1LCAyMTIsIDIsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDQ0LCAyNTIsIDEzNiwgNjIsIDU3LCAxMDYsIDI1MywgNDMsIDIyNiwgMjA1LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCA0MiwgMjE4LCAyNTQsIDYyLCA1NywgMTA2LCAyNTMsIDQxLCAyNDksIDY4LCA2MiwgNTcsIDIzMCwgMTQyLCAKKyAgICAyNTMsIDQwLCAyMzQsIDIyNCwgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAzOSwgMjM0LCAyMzIsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDM4LCAyMjYsIDIxOCwgNjIsIDU3LCAxMDYsIDI1MywgMzcsIDIxMSwgMjM2LCA2MiwgNTcsIDEwNiwgMjUzLCAzNiwgNjIsIAorICAgIDU3LCAyMzAsIDE0MiwgMjUzLCAzNSwgMjU0LCAxNywgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAzNCwgMjMxLCA1MiwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgMzMsIDI1MSwgMTM0LCA2MiwgNTcsIDEwNiwgMjUzLCAzMiwgMjQyLCAxNjYsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDMxLCA2MiwgNTcsIDEwNiwgMjUzLCAzMCwgMjExLCAyMTIsIDYyLCA1NywgMTA2LCAyNTMsIDI5LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCAyOCwgNjIsIDU3LCAxMDYsIDI1MywgMjcsIDI0MCwgMjQ4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDI0LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDIyLCAyMTUsIAorICAgIDkyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDYyLCA1NywgMTA2LCAyNTMsIDE5LCAKKyAgICAyNDksIDI1MCwgNjIsIDU3LCAxMDYsIDI1MywgMTgsIDYyLCA1NywgMTA2LCAyNTMsIDE3LCA2MiwgNTcsIDEwNiwgMjUzLCAKKyAgICAxNiwgMjQzLCA5MywgNjIsIDU3LCAxMDYsIDI1MywgMTUsIDI1NCwgNCwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDEzLCA2MiwgNTcsIDEwNiwgMjUzLCAxMiwgNjIsIDU3LCAxMDYsIDI1MywgMTEsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDEwLCA2MiwgNTcsIDEwNiwgMjUzLCA5LCA2MiwgNTcsIDEwNiwgMjUzLCA4LCA2MiwgNTcsIDEwNiwgMjUzLCA3LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCA2LCA2MiwgNTcsIDEwNiwgMjUzLCA1LCAyMzAsIDEzNCwgNjIsIDU3LCAxMDYsIDI1MywgNCwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgMywgMjE1LCAyMzUsIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDI1NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjU0LCA2MiwgCisgICAgNTcsIDEwNiwgMjUyLCAyNTMsIDYyLCA1NywgMTA2LCAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDI1MiwgMjUxLCA2MiwgNTcsIAorICAgIDEwNiwgMjUyLCAyNTAsIDYyLCA1NywgMTA2LCAyNTIsIDI0OSwgNjIsIDU3LCAxMDYsIDI1MiwgMjQ4LCA2MiwgNTcsIDEwNiwgCisgICAgMjUyLCAyNDcsIDI0MSwgMjExLCA2MiwgNTcsIDEwNiwgMjUyLCAyMjYsIDI0NCwgMjgsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIyMywgMjUyLCAxMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxOCwgMjE5LCA1LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTcsIDc0LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxNSwgMjE3LCAyMzYsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIxNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjEzLCA2MiwgNTcsIDEwNiwgMjUyLCAyMTIsIDIxMSwgMjU0LCAyNTAsIDEzOSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjExLCAyNTAsIDEzOSwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCAyNTAsIDE0MCwgMjQzLCAKKyAgICAyNTUsIDYyLCA1NywgMTA2LCAyNTIsIDIwOSwgMjEyLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDgsIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDIwNywgNjIsIDU3LCAyMzAsIDE0MiwgMjUyLCAyMDYsIDI0NywgMTk4LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDUsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDIwNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjAyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDEsIDYyLCAKKyAgICA1NywgMTA2LCAyNTIsIDIwMCwgNjIsIDU3LCAxMDYsIDI1MiwgMTk5LCAyNDgsIDE1OSwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMTk4LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTcsIDYyLCA1NywgMTA2LCAyNTIsIDE5NiwgNjIsIDU3LCAxMDYsIDI1MiwgMTk1LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAxOTQsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUzLCAyMywgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDI0NiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKKyAgICAyNTIsIDI0NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAorICAgIDI0MiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MCwgCisgICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOCwgNjIsIDU3LCAKKyAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNiwgNjIsIDU3LCAxMDYsIAorICAgIDIxMywgMTg2LCAyNTIsIDIzNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNCwgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDIzMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKKyAgICAyNTIsIDIzMSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAorICAgIDIyOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNywgCisgICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNCwgNjIsIDU3LCAKKyAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIyMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyMSwgNjIsIDU3LCAxMDYsIAorICAgIDIxMywgMTg2LCAyNTIsIDIyMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIxOSwgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDIwMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDE5MywgMjU0LCAyMzYsIDIxMSwgMjA5LCAyMjAsIAorICAgIDEzOCwgMjMyLCAyMTMsIDI1NCwgMjM2LCAyMTEsIDIwOSwgMjIwLCAxMzgsIDI0NywgMTIwLCAyNTQsIDIzNiwgMjUwLCAKKyAgICAxMzAsIDc4LCAyNTQsIDIzNiwgNTQsIDExMCwgMjU0LCAyMzYsIDU0LCAxMDUsIDI1NCwgMjM2LCA1NCwgMTU4LCAyNTQsIAorICAgIDIzNiwgNTQsIDE2MSwgMjU0LCAyMzYsIDU0LCAxODksIDI1NCwgMjM2LCA1NCwgMTk0LCAyNTQsIDIzNiwgNTQsIDE5OCwgCisgICAgMjU0LCAyMzYsIDU0LCAxOTUsIDI1NCwgMjM2LCA1NCwgMjAwLCAyNTQsIDIzNiwgNTQsIDIxNiwgMjQ3LCAyNTQsIDIzNiwgCisgICAgNTQsIDIxNSwgNzMsIDI1NCwgMjM2LCA1NCwgMjE2LCAxNjIsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxNSwgMjU0LCAyMzYsIDU0LCAKKyAgICAyNDQsIDExNCwgMjU0LCAyMzYsIDU0LCAyMTksIDExMSwgMjU0LCAyMzYsIDU0LCAyMjAsIDExNiwgMjU0LCAyMzYsIDU0LCAKKyAgICAyNDUsIDE4NCwgMjU0LCAyMzYsIDU0LCAyMjgsIDE5NSwgMjU0LCAyMzYsIDU0LCAxMjMsIDI0MCwgMjEwLCAyNTQsIDIzNiwgCisgICAgNTQsIDExMywgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMTM0LCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDQsIDExLCAKKyAgICAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyMTksIDEyNSwgMjQwLCAKKyAgICAyMTAsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMjIsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NSwgMTkzLCAyNDAsIDIxMCwgCisgICAgMjU0LCAyMzYsIDU0LCAyMjgsIDIwMCwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMTIzLCAyMTYsIDE0NywgMjU0LCAyMzYsIAorICAgIDU0LCAxMTMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDEzNCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMSwgCisgICAgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCA4MSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMjUsIDIxNiwgCisgICAgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyMCwgMTIyLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDUsIDE5MywgMjE2LCAxNDcsIAorICAgIDI1NCwgMjM2LCA1NCwgMjI4LCAyMDAsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjU0LCAKKyAgICAyMzYsIDU0LCAyMTUsIDc0LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTYsIDE2MywgMjE2LCAxNDcsIDI1NCwgMjM2LCAKKyAgICA1NCwgMjQ0LCAxNiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMTUsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIAorICAgIDIxOSwgMTEyLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMjAsIDExNywgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ1LCAKKyAgICAxODUsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyOCwgMTk2LCAyMTYsIDE0NywgMjU0LCAyMzYsIDIxMiwgMTQsIDI1MiwgCisgICAgMTI4LCAyMTQsIDE3MywgMjU0LCAyMzYsIDIxMiwgMTQsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIDE0LCAKKyAgICAyMjEsIDE3NiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgMTQsIDIxNiwgMTY5LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAKKyAgICAxNCwgMjQ0LCA0LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjQ2LCA4MSwgMjMxLCA5MCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAKKyAgICAyMzYsIDIzMiwgMTk5LCAyMzEsIDkwLCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIDIzNiwgMjMxLCA5MCwgMjIxLCAxNzYsIAorICAgIDIxOCwgNTksIDI1NCwgMjM2LCAyMzEsIDkwLCAyMTYsIDE2OSwgMjE4LCA1OSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjI0LCAyMSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjQyLCAyNywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjQ2LCAxMDAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxODksIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNCwgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE2LCAKKyAgICAxNDcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIAorICAgIDgxLCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgCisgICAgMTk0LCAyNDQsIDExNSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjQwLCAyMTEsIDIxNywgNjcsIDI2LCAKKyAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjE2LCAxNDgsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTYsIDE0OCwgMjE3LCA2NywgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIxOCwgCisgICAgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyNDAsIDIxMSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMSwgMjE4LCAxNTAsIAorICAgIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDIxNiwgMTQ4LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgCisgICAgMjQ4LCAyMTYsIDE0OCwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE2LCAxNDgsIDIxOCwgCisgICAgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIzMCwgMTY0LCAyNiwgMjU1LCA2LCAyNDEsIDIwNSwgMTIzLCAKKyAgICAyMjUsIDMxLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTEwLCAyNiwgMjU1LCA2LCAyNDEsIDIwMSwgMTEwLCAyNiwgMjU1LCAKKyAgICA2LCAyNDUsIDEwNCwgMTA1LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTA1LCAyNiwgMjU1LCA2LCAyNDksIDY1LCAxMTMsIAorICAgIDI0NiwgOTksIDI2LCAyNTUsIDYsIDI0NSwgMTA0LCAxMTMsIDI0NiwgOTksIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAxODksIAorICAgIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDIxNiwgMjQ4LCAyNTQsIDE0MSwgCisgICAgMTcsIDI2LCAyNTUsIDYsIDI0MSwgMjAxLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjMxLCA0MSwgMjE2LCAyNDcsIDI2LCAKKyAgICAyNTUsIDYsIDIxNiwgMTgxLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDIxNiwgMTYyLCAyNiwgMjU1LCA2LCAKKyAgICAyMTUsIDIwMywgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyNDQsIDExNSwgMjU0LCAxNDEsIDE3LCAyNiwgCisgICAgMjU1LCA2LCAyNDEsIDIwMSwgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgCisgICAgMjE2LCAxODEsIDEyMywgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMzQsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAKKyAgICAyNDUsIDEwNCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIAorICAgIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyNTAsIDIyNywgMjQ0LCA4MSwgMjQwLCAKKyAgICAyMTAsIDI2LCAyNTUsIDYsIDIyOSwgMTgyLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEyMywgCisgICAgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDgxLCAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjQ4LCA1NywgCisgICAgMjQ0LCA4MSwgMjMwLCAxNjQsIDI2LCAyNTUsIDYsIDIxOCwgMTE4LCAyNDQsIDExNSwgMjMwLCAxNjQsIDI2LCAxMjMsIAorICAgIDE2MywgNTAsIDI2LCAxMjMsIDE2MywgNSwgMjU0LCAxNDEsIDE3LCAyNiwgMTEzLCAyMTYsIDE2NywgNTAsIDI2LCAxMzQsIAorICAgIDIyNCwgMjAsIDUwLCAyNiwgMjExLCA0NSwgNTAsIDI2LCAyMTcsIDY4LCA1MCwgMjYsIDI0NiwgMTAxLCA1MCwgMjYsIDIyNiwgCisgICAgMjQ2LCA1MCwgMjYsIDExMywgMjI2LCAyNDUsIDUwLCAyNiwgMTM0LCAyMjYsIDI0NSwgNTAsIDI2LCAyNDQsIDExLCAyMjYsIAorICAgIDI0NSwgNTAsIDI2LCAyNDQsIDgxLCAyMjYsIDI0NSwgNTAsIDI2LCAyMzEsIDM1LCA1MCwgMjYsIDIzMywgMTU3LCAyNTIsIAorICAgIDEyOCwgNTAsIDI2LCAyMzIsIDE5NCwgNTAsIDI2LCAyMjYsIDEzMSwgNTAsIDI2LCAyMTEsIDE1OSwgNTAsIDI2LCAyNTMsIAorICAgIDI0MywgNTAsIDI2LCAyNTQsIDAsIDUwLCAyNiwgMjQyLCAxNDQsIDUwLCAyNiwgMjE1LCAxODYsIDI1MiwgMTI4LCA1MCwgCisgICAgMjYsIDIxMCwgODcsIDUwLCAyMjIsIDE5OCwgMjIwLCAxMTMsIDUwLCAyMjIsIDE5OCwgMjE0LCAxODUsIDUwLCAyMjIsIAorICAgIDE5OCwgMjIwLCAxNDIsIDUwLCAyMjIsIDE5OCwgMjIwLCAxMTEsIDUwLCAyMjIsIDE5OCwgMjQ3LCAyMTMsIDIyMCwgMTExLCAKKyAgICA1MCwgMjIyLCAxOTgsIDIxOSwgMTY4LCA1MCwgMjIyLCAxOTgsIDI0OCwgNTMsIDUwLCAyMjIsIDE5OCwgMjI0LCA2LCA1MCwgCisgICAgMjIyLCAxOTgsIDIyMCwgMTI5LCA1MCwgMjIyLCAxOTgsIDI0NiwgNjAsIDUwLCAyMjIsIDE5OCwgMjUzLCAyMzgsIDUwLCAKKyAgICAyMjIsIDE5OCwgMjUwLCAxNzEsIDUwLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNSwgMjEzLCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIyNSwgMjQsIDI0MSwgMjM1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNywgNDUsIDI0MSwgMjM1LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMjQ3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMTAxLCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDIxMSwgMjIxLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0MSwgMjExLCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDI0MywgODUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE2LCAxMTYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgNzQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUxLCAxNjksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIwLCAyOSwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNDksIDI0NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMzEsIDE4NCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyMzEsIDEzNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjEsIDIxNiwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyMzIsIDIzNywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTEsIDE4OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyNTAsIDIzMSwgMjI1LCAzNSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDcsIDEzMywgMjI1LCAxNDMsIDI0NywgMTkxLCAKKyAgICA1LCAyNDksIDIyMywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTksIDg3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0OSwgCisgICAgMjI0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MiwgNjMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIwLCAxNiwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNDAsIDI0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDEsIDE3OCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyNTEsIDExMiwgMjMzLCAzNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDIyNCwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyMjMsIDE1MywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDUsIDIzMCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyNDYsIDEwNywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTUsIDEwNSwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyNTIsIDY2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNSwgMzYsIDIxNSwgMjM1LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIxMywgMTU5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNiwgMTgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjIyLCAxOTAsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjMyLCAyMjQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI2LCAKKyAgICAxMTUsIDI1MiwgMTg0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NCwgNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjQyLCAxMzgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE4LCAxMTksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgNCwgMjUzLCAKKyAgICAxNjgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjEyLCAzMiwgMjUyLCAxNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMzgsIAorICAgIDIyNiwgMjQ4LCA5MSwgMjMyLCA2MCwgMSwgNjEsIDIzMiwgNjAsIDEsIDc1LCAyMzIsIDYwLCAxLCAyNTMsIDE1OCwgMjMyLCAKKyAgICA2MCwgMSwgMjUyLCAxOSwgMjMyLCA2MCwgMSwgMjQzLCAyMDIsIDIzMiwgNjAsIDEsIDI0OSwgNjAsIDIzMiwgNjAsIDEsIAorICAgIDczLCAyMzIsIDYwLCAxLCAyMTIsIDk4LCAyMzIsIDYwLCAxLCAyMTAsIDE1OSwgMjMyLCA2MCwgMSwgMjE2LCAyMTAsIDIzMiwgCisgICAgNjAsIDEsIDIzNSwgMTQ0LCAyMzIsIDYwLCAxLCAyMzUsIDIzLCAyMzIsIDYwLCAxLCAyMjQsIDk2LCAyMzIsIDYwLCAxLCAKKyAgICAxNTYsIDIzMiwgNjAsIDEsIDE5MywgMjMyLCA2MCwgMSwgMjMwLCAyNSwgMjMyLCA2MCwgMSwgMjMwLCAxNjYsIDIzMiwgNjAsIAorICAgIDEsIDIyOCwgMTExLCAyMzIsIDYwLCAxLCA3MCwgMjMyLCA2MCwgMSwgMjI2LCAxMDUsIDIzMiwgNjAsIDEsIDIzNCwgNDcsIAorICAgIDIzMiwgNjAsIDEsIDE1MywgMjMyLCA2MCwgMSwgMjIyLCA5MSwgMjMyLCA2MCwgMSwgMjE3LCAxNTIsIDIzMiwgNjAsIDEsIAorICAgIDIxNSwgMTU5LCAyMzIsIDYwLCAxLCAyNTQsIDEyMywgMjMyLCA2MCwgMSwgMjQ1LCAxNTAsIDIzMiwgNjAsIDEsIDI0MiwgCisgICAgNjAsIDIzMiwgNjAsIDEsIDIxMSwgMTc4LCAyNTAsIDIzNywgMSwgNjEsIDI1MCwgMjM3LCAxLCAyMjYsIDkxLCAyNTAsIAorICAgIDIzNywgMSwgMjQ5LCA2MCwgMjUwLCAyMzcsIDEsIDE1NiwgMjUwLCAyMzcsIDEsIDIxNCwgMTE2LCAyNTAsIDIzNywgMSwgCisgICAgMTUzLCAyNTAsIDIzNywgMSwgMjMzLCA2MiwgMjUwLCAyMzcsIDEsIDI1NSwgNzUsIDI1MCwgMjM3LCAxLCAyMjQsIDk2LCAKKyAgICAyNTAsIDIzNywgMSwgMjUzLCAxNTgsIDI1MCwgMjM3LCAxLCAxOTMsIDI1MCwgMjM3LCAxLCA3NiwgMjUwLCAyMzcsIDEsIAorICAgIDI0OCwgMjIzLCAyNTAsIDIzNywgMSwgMjE3LCAxNTIsIDI1MCwgMjM3LCAxLCAyMjAsIDEwNCwgMjUwLCAyMzcsIDEsIDIyMCwgCisgICAgMTAzLCAyNTAsIDIzNywgMSwgMjIyLCA5MSwgMjUwLCAyMzcsIDEsIDI1MSwgNjUsIDI1MCwgMjM3LCAxLCA3MCwgMjUwLCAKKyAgICAyMzcsIDEsIDIyOCwgMTExLCAyNTAsIDIzNywgMSwgMjExLCAxNzgsIDI1MCwgMjM3LCAxLCAyMzAsIDI1LCAyNTAsIDIzNywgCisgICAgMSwgMjE1LCAxNTgsIDI1MCwgMjM3LCAxLCAyMjYsIDEwNSwgMjUwLCAyMzcsIDEsIDIxOCwgMjI2LCAyNTAsIDIzNywgMSwgCisgICAgNzMsIDI1MCwgMjM3LCAxLCA3NSwgMjUwLCAyMzcsIDEsIDIxNCwgMTEzLCAyNTAsIDIzNywgMSwgMjM1LCAyMywgMjUwLCAKKyAgICAyMzcsIDEsIDIzNSwgMTQsIDI1MCwgMjM3LCAxLCAyMjksIDE1MCwgMjUwLCAyMzcsIDEsIDIxNCwgMTE4LCAyNTAsIDIzNywgCisgICAgMSwgMjQzLCAyMDIsIDI1MCwgMjM3LCAxLCAyNDMsIDEzNywgMjUwLCAyMzcsIDEsIDIxOCwgMTY4LCAyNTAsIDIzNywgMSwgCisgICAgMjE4LCAxNjcsIDI1MCwgMjM3LCAxLCAyMjksIDc5LCAyNTAsIDIzNywgMSwgMjM2LCAzMywgMjUwLCAyMzcsIDEsIDI1MSwgCisgICAgNjQsIDI1MCwgMjM3LCAxLCAyMTUsIDE1OSwgMjUwLCAyMzcsIDEsIDIxNCwgMTE1LCAyNTAsIDIzNywgMSwgMjIyLCAxODAsIAorICAgIDI1MCwgMjM3LCAxLCAyMzEsIDEyOSwgMjUwLCAyMzcsIDEsIDIzMSwgMTI4LCAyNTAsIDIzNywgMSwgMjMxLCAxMjcsIDI1MCwgCisgICAgMjM3LCAxLCAyMzEsIDEyNiwgMjUwLCAyMzcsIDEsIDIzMywgNjEsIDI1MCwgMjM3LCAxLCAyNDUsIDIzNCwgMjUwLCAyMzcsIAorICAgIDEsIDIxNCwgMTE0LCA1NSwgMzIsIDEsIDYxLCA1NSwgMzIsIDEsIDI1MiwgNzUsIDU1LCAzMiwgMSwgMjM0LCAxODIsIDU1LCAKKyAgICAzMiwgMSwgMjQ4LCA5MCwgNTUsIDMyLCAxLCA3NSwgNTUsIDMyLCAxLCAyMTMsIDI1NSwgNTUsIDMyLCAxLCAyMTAsIDk0LCAKKyAgICA1NSwgMzIsIDEsIDI0MSwgMjM4LCA1NSwgMzIsIDEsIDIxNiwgMTk1LCA1NSwgMzIsIDEsIDczLCA1NSwgMzIsIDEsIDE3NiwgCisgICAgNTUsIDMyLCAxLCAyNDUsIDE3NCwgNTUsIDMyLCAxLCAyNDUsIDE1OSwgNTUsIDMyLCAxLCAyNDUsIDE1MCwgNTUsIDMyLCAxLCAKKyAgICAyNDUsIDc1LCA1NSwgMzIsIDEsIDc2LCA1NSwgMzIsIDEsIDIyNSwgMjIxLCA1NSwgMzIsIDEsIDIyMCwgNjMsIDU1LCAzMiwgCisgICAgMSwgMjMzLCAyMTcsIDU1LCAzMiwgMSwgMjQ1LCA5MiwgNTUsIDMyLCAxLCAyNDUsIDgyLCA1NSwgMzIsIDEsIDIxNywgMjIsIAorICAgIDU1LCAzMiwgMSwgNzAsIDU1LCAzMiwgMSwgMjQ1LCAxNzcsIDU1LCAzMiwgMSwgMjI1LCAxMzYsIDU1LCAzMiwgMSwgMjM0LCAKKyAgICAxMTksIDU1LCAzMiwgMSwgMjQ1LCAyMDIsIDU1LCAzMiwgMSwgMjQ1LCA4NCwgNTUsIDMyLCAxLCAyNTAsIDEzMSwgNTUsIAorICAgIDMyLCAxLCAyMzYsIDMzLCA1NSwgMzIsIDEsIDIxNCwgMTE4LCA1NSwgMzIsIDIyNywgMTk4LCAxMTAsIDU1LCAzMiwgMjI3LCAKKyAgICAxOTgsIDE4OSwgNTUsIDMyLCAyMjcsIDE5OCwgMjE2LCAyNDcsIDU1LCAzMiwgMjI3LCAxOTgsIDI0NCwgMTE0LCAyNDIsIAorICAgIDE1MywgMSwgMjU0LCAyMDQsIDI0MiwgMTUzLCAxLCAyNTIsIDE2MywgMjQyLCAxNTMsIDEsIDI0MiwgMjExLCAyNDIsIDE1MywgCisgICAgMSwgMjQ4LCAyMDQsIDI0MiwgMTUzLCAxLCAyNTQsIDIwMCwgMjQyLCAxNTMsIDEsIDIyNCwgNzksIDI0MiwgMTUzLCAxLCAKKyAgICAyMzUsIDE1NSwgMjQyLCAxNTMsIDEsIDI0MiwgMzksIDI0MiwgMTUzLCAxLCAyMTYsIDE1OCwgMjQyLCAxNTMsIDEsIDI0NSwgCisgICAgMTgzLCAyNDIsIDE1MywgMSwgMjMzLCAxOTAsIDI0MiwgMTUzLCAxLCAyMzMsIDExMywgMjQyLCAxNTMsIDEsIDIzMSwgMTc5LCAKKyAgICAyNDIsIDE1MywgMSwgMjI5LCAxODQsIDI0MiwgMTUzLCAxLCAyMzUsIDExOSwgMjQyLCAxNTMsIDEsIDIxNCwgMTM2LCAyNDIsIAorICAgIDE1MywgMSwgMjI2LCA2OSwgMjQyLCAxNTMsIDEsIDIyOCwgMTk1LCAyNDIsIDE1MywgMSwgMjIzLCAxNjUsIDI0MiwgMTUzLCAKKyAgICAxLCAyMjEsIDIxOCwgMjQyLCAxNTMsIDEsIDIxNywgNCwgMjQyLCAxNTMsIDEsIDIxMSwgMjM0LCAyNDIsIDE1MywgMSwgCisgICAgMjQ0LCAxNzgsIDI0MiwgMTUzLCAxLCAyMzYsIDM3LCAyNDIsIDE1MywgMSwgMjQwLCAxOTksIDI0MiwgMTUzLCAxLCAyMjYsIAorICAgIDEzOSwgMjQyLCAxNTMsIDEsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjE0LCAyMDksIDEsIDI1NCwgMTQ3LCAyMTQsIDIwOSwgMSwgCisgICAgMjUyLCAyNiwgMjE0LCAyMDksIDEsIDI0MywgMTA4LCAyMTQsIDIwOSwgMSwgMjM0LCAxMzIsIDIxNCwgMjA5LCAxLCAyNDgsIAorICAgIDU0LCAyMTQsIDIwOSwgMSwgMjQxLCA2OCwgMjE0LCAyMDksIDEsIDIxMSwgMjI3LCAyMTQsIDIwOSwgMSwgMjEwLCA4NSwgCisgICAgMjE0LCAyMDksIDEsIDI0MCwgMjQxLCAyMTQsIDIwOSwgMSwgMjE2LCAyMzAsIDIxNCwgMjA5LCAxLCAyMTAsIDIzMywgMjE0LCAKKyAgICAyMDksIDEsIDIzNCwgMjUwLCAyMTQsIDIwOSwgMSwgMjIwLCAyMCwgMjE0LCAyMDksIDEsIDIzMywgOTgsIDIxNCwgMjA5LCAKKyAgICAxLCAyMzEsIDY1LCAyMTQsIDIwOSwgMSwgMjQ4LCAyMSwgMjE0LCAyMDksIDEsIDIyNywgMTk0LCAyMTQsIDIwOSwgMSwgCisgICAgMjEwLCAxMywgMjE0LCAyMDksIDEsIDIyMSwgMjQ4LCAyMTQsIDIwOSwgMSwgMjU0LCAxOTYsIDIxNCwgMjA5LCAxLCAyMjQsIAorICAgIDE1MCwgMjE0LCAyMDksIDEsIDIyMiwgMjUsIDIxNCwgMjA5LCAxLCAyMjQsIDM1LCAyMTQsIDIwOSwgMSwgMjIzLCAxNDQsIAorICAgIDIxNCwgMjA5LCAxLCAyMTYsIDE5OSwgMjE0LCAyMDksIDEsIDI0MiwgMjQ0LCAyMTQsIDIwOSwgMSwgMTExLCAyMTQsIDIwOSwgCisgICAgMSwgNzMsIDIxNCwgMjA5LCAxLCA3MCwgMjE0LCAyMDksIDEsIDIxOCwgMTc5LCAyMTQsIDIwOSwgMjExLCAyMDksIDI0NywgCisgICAgMTcyLCA1NSwgMjI1LCAxNjksIDUsIDYxLCA1NSwgMjI1LCAxNjksIDUsIDczLCA1NSwgMjI1LCAxNjksIDUsIDcwLCA1NSwgCisgICAgMjI1LCAxNjksIDUsIDE3NiwgNTUsIDIyNSwgMTY5LCA1LCAyMzMsIDIxNywgNTUsIDIyNSwgMTY5LCA1LCAyNDMsIDEzNSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyNDIsIDExMywgNTUsIDIyNSwgMTY5LCA1LCAyMTEsIDE2NSwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNTEsIDMzLCA1NSwgMjI1LCAxNjksIDUsIDIzNSwgMTQxLCA1NSwgMjI1LCAxNjksIDUsIDIzNSwgMTA4LCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDIxNywgMTA1LCA1NSwgMjI1LCAxNjksIDUsIDIxNSwgMTE4LCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMjIxLCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMywgNTUsIDIyNSwgMTY5LCA1LCAyNDYsIDc4LCA1NSwgMjI1LCAxNjksIDUsIDIxNiwgCisgICAgMjA4LCA1NSwgMjI1LCAxNjksIDUsIDE5MCwgNTUsIDIyNSwgMTY5LCA1LCAyNTIsIDE5MSwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNDQsIDE5NiwgNTUsIDIyNSwgMTY5LCA1LCAxOTcsIDU1LCAyMjUsIDE2OSwgNSwgMjI3LCAyMzcsIDU1LCAyMjUsIDE2OSwgCisgICAgNSwgMTg0LCA1NSwgMjI1LCAxNjksIDUsIDIzMCwgMjMwLCA1NSwgMjI1LCAxNjksIDUsIDIzMCwgMTAyLCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDE5MSwgNTUsIDIyNSwgMTY5LCA1LCAyMTQsIDI3LCA1NSwgMjI1LCAxNjksIDUsIDIxMywgMTc2LCA1NSwgCisgICAgMjI1LCAxNjksIDUsIDIwNSwgNTUsIDIyNSwgMTY5LCA1LCAyMjIsIDE0MCwgNTUsIDIyNSwgMTY5LCA1LCAyMzMsIDEzNSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyMDYsIDU1LCAyMjUsIDE2OSwgNSwgMjEwLCAxMTYsIDU1LCAyMjUsIDE2OSwgNSwgMjIwLCAKKyAgICAxMDIsIDU1LCAyMjUsIDE2OSwgNSwgMjE4LCAyMjMsIDU1LCAyMjUsIDE2OSwgNSwgMTYyLCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI1MywgMTg2LCA1NSwgMjI1LCAxNjksIDUsIDI1MywgMTg1LCA1NSwgMjI1LCAxNjksIDUsIDI1MywgMTg0LCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDIxMSwgMTQyLCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMjAwLCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMTk5LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI1MiwgMTcwLCA1NSwgMjI1LCAxNjksIDUsIDI1MSwgODUsIDU1LCAyMjUsIDE2OSwgMjExLCAKKyAgICAyMDksIDI0NywgMTcyLCA1NSwgMjI1LCAxNjksIDU0LCAxMTAsIDU1LCAyMjUsIDE2OSwgNTQsIDEwNSwgNTUsIDIyNSwgCisgICAgMTY5LCA1NCwgMjE2LCAyNDcsIDU1LCAyMjUsIDE2OSwgNTQsIDIxNSwgNzMsIDU1LCAyMjUsIDE2OSwgNTQsIDI0MCwgMjEwLCAKKyAgICAxODEsIDYsIDEsIDE5OSwgNzMsIDE4MSwgNiwgMSwgMTk5LCA3NSwgMTgxLCA2LCAxLCAxOTksIDYxLCAxODEsIDYsIDEsIAorICAgIDE5OSwgMjU0LCAyMDksIDE4MSwgNiwgMSwgMTk5LCA3NiwgMTgxLCA2LCAxLCAxOTksIDIyNiwgMTgzLCAxODEsIDYsIDEsIAorICAgIDIxOSwgMjUxLCA3MywgMTgxLCA2LCAxLCAyMTksIDI1MSwgNzUsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDYxLCAxODEsIDYsIAorICAgIDEsIDIxOSwgMjUxLCAyNTQsIDIwOSwgMTgxLCA2LCAxLCAyMTksIDI1MSwgNzYsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDIyNiwgCisgICAgMTgzLCAxODEsIDYsIDEsIDI1MywgMTY3LCAxODEsIDYsIDEsIDIyNiwgMTE2LCAxODEsIDYsIDEsIDIxMSwgMTk1LCAxODEsIAorICAgIDYsIDEsIDIxMSwgNDQsIDE4MSwgNiwgMSwgMjQyLCA2MCwgMTgxLCA2LCAxLCAyMjUsIDIxMSwgMTgxLCA2LCAxLCAyNTIsIAorICAgIDY2LCAxODEsIDYsIDEsIDIxNywgMTEsIDE4MSwgNiwgMSwgMjQ4LCA3NywgMTgxLCA2LCAxLCAyNTAsIDEyOCwgMTgxLCA2LCAKKyAgICAxLCAyMzUsIDEyNCwgMTgxLCA2LCAxLCAyMzQsIDE4OSwgMTgxLCA2LCAxLCAyNDMsIDgzLCAxODEsIDYsIDEsIDI0NSwgCisgICAgMjAyLCAxODEsIDYsIDEsIDIxMywgMjUwLCAxODEsIDYsIDEsIDI0NSwgNTksIDE4MSwgNiwgMSwgMjE2LCAxOTQsIDE4MSwgCisgICAgNiwgMSwgMjQ1LCA4MiwgMTgxLCA2LCAxLCAyMTAsIDkyLCAxODEsIDYsIDEsIDI0NSwgNzUsIDE4MSwgNiwgMSwgMjEwLCAKKyAgICA3MywgMTgxLCA2LCAxLCAyNDUsIDkyLCAxODEsIDYsIDEsIDI0NSwgMTc0LCAxODEsIDYsIDEsIDI0NSwgMTU5LCAxODEsIDYsIAorICAgIDEsIDI0NSwgMTUwLCAxODEsIDYsIDEsIDI0NSwgMTM4LCAxODEsIDYsIDEsIDIyNiwgMjE5LCAxODEsIDYsIDEsIDI0NSwgCisgICAgMzgsIDE4MSwgNCwgMSwgMTk5LCA3MywgMTgxLCA0LCAxLCAxOTksIDc1LCAxODEsIDQsIDEsIDE5OSwgNjEsIDE4MSwgNCwgCisgICAgMSwgMTk5LCAyNTQsIDIwOSwgMTgxLCA0LCAxLCAxOTksIDc2LCAxODEsIDQsIDEsIDE5OSwgMjI2LCAxODMsIDE4MSwgNCwgCisgICAgMSwgMjE5LCAyNTEsIDczLCAxODEsIDQsIDEsIDIxOSwgMjUxLCA3NSwgMTgxLCA0LCAxLCAyMTksIDI1MSwgNjEsIDE4MSwgCisgICAgNCwgMSwgMjE5LCAyNTEsIDI1NCwgMjA5LCAxODEsIDQsIDEsIDIxOSwgMjUxLCA3NiwgMTgxLCA0LCAxLCAyMTksIDI1MSwgCisgICAgMjI2LCAxODMsIDE4MSwgNCwgMSwgMjUzLCAxNjcsIDE4MSwgNCwgMSwgMjI2LCAxMTYsIDE4MSwgNCwgMSwgMjExLCAxOTUsIAorICAgIDE4MSwgNCwgMSwgMjExLCA0NCwgMTgxLCA0LCAxLCAyNDIsIDYwLCAxODEsIDQsIDEsIDIyNSwgMjExLCAxODEsIDQsIDEsIAorICAgIDI1MiwgNjYsIDE4MSwgNCwgMSwgMjE3LCAxMSwgMTgxLCA0LCAxLCAyNDgsIDc3LCAxODEsIDQsIDEsIDI1MCwgMTI4LCAKKyAgICAxODEsIDQsIDEsIDIzNSwgMTI0LCAxODEsIDQsIDEsIDIzNCwgMTg5LCAxODEsIDQsIDEsIDI0MywgODMsIDE4MSwgNCwgMSwgCisgICAgMjQ1LCAyMDIsIDE4MSwgNCwgMSwgMjEzLCAyNTAsIDE4MSwgNCwgMSwgMjQ1LCA1OSwgMTgxLCA0LCAxLCAyMTYsIDE5NCwgCisgICAgMTgxLCA0LCAxLCAyNDUsIDgyLCAxODEsIDQsIDEsIDIxMCwgOTIsIDE4MSwgNCwgMSwgMjQ1LCA3NSwgMTgxLCA0LCAxLCAKKyAgICAyMTAsIDczLCAxODEsIDQsIDEsIDI0NSwgOTIsIDE4MSwgNCwgMSwgMjQ1LCAxNzQsIDE4MSwgNCwgMSwgMjQ1LCAxNTksIAorICAgIDE4MSwgNCwgMSwgMjQ1LCAxNTAsIDE4MSwgNCwgMSwgMjQ1LCAxMzgsIDE4MSwgNCwgMSwgMjI2LCAyMTksIDE4MSwgNCwgMSwgCisgICAgMjQ1LCAzOCwgMjIwLCA2OSwgMSwgMjI1LCAyMDksIDIyMCwgNjksIDEsIDIxNiwgNSwgMjIwLCA2OSwgMSwgMjM0LCA5MSwgCisgICAgMjIwLCA2OSwgMSwgMjQ0LCAxNDcsIDIyMCwgNjksIDEsIDIxNiwgMTcyLCAyMjAsIDY5LCAxLCAyMTksIDU4LCAyMjAsIDY5LCAKKyAgICAxLCAyMTgsIDE0LCAyMjAsIDY5LCAxLCAyNTAsIDYxLCAyMjAsIDY5LCAxLCAyMTEsIDQ2LCAyMjAsIDY5LCAxLCAyNDAsIAorICAgIDIwOSwgMjIwLCA2OSwgMSwgMjUyLCA1LCAyMjAsIDY5LCAxLCAyNDgsIDg5LCAyMjAsIDY5LCAxLCAyNDMsIDEyMSwgMjIwLCAKKyAgICA2OSwgMSwgMjEzLCAxMjMsIDIyMCwgNjksIDEsIDIxNiwgMTc2LCAyMjAsIDY5LCAxLCAyMTAsIDIxLCAyMjAsIDY5LCAxLCAKKyAgICAyMzEsIDg5LCAyMjAsIDY5LCAxLCAyMzUsIDQ5LCAyMjAsIDY5LCAxLCAyMTEsIDIyNSwgMjIwLCA2OSwgMSwgMjQyLCA0OCwgCisgICAgMjIwLCA2OSwgMSwgMjMyLCAxNDIsIDIyMCwgNjksIDEsIDIzMCwgMTg5LCAyMjAsIDY5LCAxLCAyMzYsIDQwLCAyMjAsIDY5LCAKKyAgICAxLCAyNDUsIDIwMSwgMjIwLCA2OSwgMSwgMjUzLCAyMzEsIDIyMCwgNjksIDEsIDI1NCwgMjQ3LCAyMjAsIDY5LCAxLCAyMjYsIAorICAgIDE5NiwgMjIwLCA2OSwgMSwgMjExLCAyMTIsIDIyMCwgNjksIDEsIDIyNiwgMTMwLCAyMjAsIDY5LCAxLCAyNTQsIDIwOSwgCisgICAgMjIwLCA2OSwgMSwgMjIyLCAyMDgsIDIyMCwgNjksIDEsIDIyNywgMTk0LCAyMjAsIDY5LCAxLCAyNDUsIDIxNywgMjIwLCAKKyAgICA2OSwgMSwgMjU0LCAyMTQsIDIyMCwgNjksIDEsIDI0MCwgMTExLCAyMjAsIDY5LCAxLCAyMTQsIDE2MywgMjIwLCA2OSwgMSwgCisgICAgMjI2LCAyNTQsIDIyMCwgNjksIDEsIDIyNiwgMTc2LCAyMjAsIDY5LCAxLCAyMjYsIDIxOCwgMjIwLCA2OSwgMSwgMjUzLCAKKyAgICAxNzAsIDIyMCwgNjksIDEsIDI1NCwgMTksIDIyMCwgNjksIDEsIDIyNiwgMTU4LCAyMjAsIDY5LCAxLCAyNTQsIDE5MiwgCisgICAgMjIwLCA2OSwgMSwgMjQ1LCA4NiwgMjIwLCA2OSwgMSwgMjUzLCAyNTMsIDIyMCwgNjksIDEsIDI0NSwgMjI3LCAyMjAsIDY5LCAKKyAgICAxLCAyNDAsIDExOCwgMjIwLCA2OSwgMSwgMjExLCAxMywgMjI2LCAxNDEsIDEsIDI1NCwgMTcwLCAyMjYsIDE0MSwgMSwgCisgICAgMjUyLCAxOTEsIDIyNiwgMTQxLCAxLCAyMTcsIDEwNSwgMjI2LCAxNDEsIDEsIDIzNSwgMTQxLCAyMjYsIDE0MSwgMSwgMjExLCAKKyAgICAxNjUsIDIyNiwgMTQxLCAxLCAyMzQsIDEzMiwgMjI2LCAxNDEsIDEsIDI0OCwgNzYsIDIyNiwgMTQxLCAxLCAyMDUsIDIyNiwgCisgICAgMTQxLCAxLCAyMDYsIDIyNiwgMTQxLCAxLCAyMjAsIDI2LCAyMjYsIDE0MSwgMSwgMjQ4LCAyNSwgMjI2LCAxNDEsIDEsIAorICAgIDI1MCwgMjE1LCAyMjYsIDE0MSwgMSwgMjQzLCAxMzUsIDIyNiwgMTQxLCAxLCAyNDQsIDE5NiwgMjI2LCAxNDEsIDEsIDIyNCwgCisgICAgODYsIDIyNiwgMTQxLCAxLCAyMzUsIDksIDIyNiwgMTQxLCAxLCAyMzMsIDEzMCwgMjI2LCAxNDEsIDEsIDIzMCwgMjAwLCAKKyAgICAyMjYsIDE0MSwgMSwgMjI3LCAxNzgsIDIyNiwgMTQxLCAxLCAyMTIsIDMwLCAyMjYsIDE0MSwgMSwgMTYyLCAyMjYsIDE0MSwgCisgICAgMSwgMTkxLCAyMjYsIDE0MSwgMSwgNjEsIDIyNiwgMTQxLCAxLCA3NSwgMjI2LCAxNDEsIDEsIDczLCAyMjYsIDE0MSwgMSwgCisgICAgNzYsIDIyNiwgMTQxLCAxLCA3MCwgMjI2LCAxNDEsIDEsIDI1NSwgNzMsIDIyNiwgMTQxLCAxLCAyNDUsIDIwOSwgMjI2LCAKKyAgICAxNDEsIDEsIDIyNiwgMTgzLCAyMjYsIDE0MSwgMjEsIDIxMCwgODYsIDIyNiwgMTQxLCAyMSwgMTEwLCAyMjYsIDE0MSwgMjEsIAorICAgIDEwNSwgMjI2LCAxNDEsIDIxLCAxNTgsIDIyNiwgMTQxLCAyMSwgMTYxLCAyMjYsIDE0MSwgMjEsIDE4OSwgMjI2LCAxNDEsIAorICAgIDIxLCAxOTQsIDIyNiwgMTQxLCAyMSwgMTk4LCAyMjYsIDE0MSwgMjEsIDE5NSwgMjI2LCAxNDEsIDIxLCAyMDAsIDI0OSwgCisgICAgNjcsIDMsIDYxLCAyNDksIDY3LCAzLCA3NSwgMjQ5LCA2NywgMywgNzMsIDI0OSwgNjcsIDMsIDc2LCAyNDksIDY3LCAzLCAKKyAgICA3MCwgMjQ5LCA2NywgMywgMjM1LCAxNDEsIDI0OSwgNjcsIDMsIDIzNSwgNjgsIDI0OSwgNjcsIDMsIDE3NiwgMjQ5LCA2NywgCisgICAgMywgMjM0LCAxODIsIDI0OSwgNjcsIDMsIDIzNCwgOTIsIDI0OSwgNjcsIDMsIDIzNCwgMjgsIDI0OSwgNjcsIDMsIDIzMywgCisgICAgMjE3LCAyNDksIDY3LCAzLCAyMzMsIDEzNSwgMjQ5LCA2NywgMywgMjMzLCA1OCwgMjQ5LCA2NywgMywgMjMyLCAyNDEsIAorICAgIDI0OSwgNjcsIDMsIDIzMiwgMTU2LCAyNDksIDY3LCAzLCAyMzIsIDk4LCAyNDksIDY3LCAzLCAxODQsIDI0OSwgNjcsIDMsIAorICAgIDIzMSwgOTEsIDI0OSwgNjcsIDMsIDIzMCwgMjMwLCAyNDksIDY3LCAzLCAyMzAsIDE2MSwgMjQ5LCA2NywgMywgMjMwLCAKKyAgICAxMDIsIDI0OSwgNjcsIDMsIDE5NywgMjQ5LCA2NywgMywgMjI5LCAxMDcsIDI0OSwgNjcsIDMsIDIyOCwgMjMzLCAyNDksIAorICAgIDY3LCAzLCAyMjgsIDc0LCAyNDksIDY3LCAzLCAyMjcsIDIzNywgMjQ5LCA2NywgMywgMTkwLCAyNDksIDY3LCAzLCAyMjUsIAorICAgIDIyMSwgMjQ5LCA2NywgMywgMjI1LCAxMDgsIDI0OSwgNjcsIDMsIDIyNSwgMTYsIDI0OSwgNjcsIDMsIDIyNCwgMTUwLCAKKyAgICAyNDksIDY3LCAzLCAyMDUsIDI0OSwgNjcsIDMsIDIyMywgMTI4LCAyNDksIDY3LCAzLCAyMjMsIDM1LCAyNDksIDY3LCAzLCAKKyAgICAyMjIsIDIxMSwgMjQ5LCA2NywgMywgMjIyLCAxNDAsIDI0OSwgNjcsIDMsIDIwNiwgMjQ5LCA2NywgMywgMjIxLCAxODEsIAorICAgIDI0OSwgNjcsIDMsIDIxOSwgMTkxLCAyNDksIDY3LCAzLCAyMTksIDU4LCAyNDksIDY3LCAzLCAyMTgsIDgzLCAyNDksIDY3LCAKKyAgICAzLCAyMTcsIDEwNSwgMjQ5LCA2NywgMywgMjE3LCAyMiwgMjQ5LCA2NywgMywgMjE2LCAxMTcsIDI0OSwgNjcsIDMsIDExMSwgCisgICAgMjQ5LCA2NywgMywgMjE1LCAxMTgsIDI0OSwgNjcsIDMsIDIxMiwgNjUsIDI0OSwgNjcsIDMsIDIxMiwgMjIsIDI0OSwgNjcsIAorICAgIDMsIDIxMSwgMjUwLCAyNDksIDY3LCAzLCAyMTEsIDIyNywgMjQ5LCA2NywgMywgMjExLCAxNjUsIDI0OSwgNjcsIDMsIDIxMSwgCisgICAgMTYyLCAyNDksIDY3LCAzLCAyMTAsIDExNiwgMjQ5LCA2NywgMywgMjEwLCAyMywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNTQsIAorICAgIDE2OCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNTIsIDI1LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MiwgMjAxLCAyMzYsIDEsIAorICAgIDI1NCwgMjcsIDEsIDI0OCwgMTg4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MSwgMjM4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIAorICAgIDIxMiwgMzAsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjEwLCA5NywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDEsIDE5NSwgMjM2LCAKKyAgICAxLCAyNTQsIDI3LCAxLCAyMTYsIDIyNiwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTAsIDIzMiwgMjM2LCAxLCAyNTQsIDI3LCAKKyAgICAxLCAyMzQsIDIyNSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMzMsIDkzLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIzMSwgNjUsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI3LCAxOTQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIxLCAyNDksIDIzNiwgMSwgMjU0LCAKKyAgICAyNywgMSwgMjUzLCAxNjIsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI1LCAyMjEsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIyLCAKKyAgICAyNCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjQsIDM0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMywgNjcsIDIzNiwgMSwgCisgICAgMjU0LCAyNywgMSwgMjIwLCAyMCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTcsIDM2LCAyMzYsIDEsIDI1NCwgMjcsIDIyMSwgCisgICAgMTczLCA1MCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTEwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMDUsIDIzNiwgMSwgMjU0LCAKKyAgICAyNywgNTQsIDE1OCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE2LCAyNDcsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNSwgNzMsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEyMywgMjQwLCAyMTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjI1LCAxMTksIDEsIDI1NCwgMTY1LCAyMjUsIDExOSwgCisgICAgMSwgMjUyLCAyOCwgMjI1LCAxMTksIDEsIDI0MywgMTA5LCAyMjUsIDExOSwgMSwgMjQ4LCA1NiwgMjI1LCAxMTksIDEsIAorICAgIDI0MSwgMjM4LCAyMjUsIDExOSwgMSwgMjEyLCAzNywgMjI1LCAxMTksIDEsIDIxMCwgMTEwLCAyMjUsIDExOSwgMSwgMjQxLCAKKyAgICAxOTcsIDIyNSwgMTE5LCAxLCAyMTYsIDIzMCwgMjI1LCAxMTksIDEsIDIxMCwgMjMzLCAyMjUsIDExOSwgMSwgMjM0LCAyNTAsIAorICAgIDIyNSwgMTE5LCAxLCAyMzMsIDk5LCAyMjUsIDExOSwgMSwgMjMxLCA2NSwgMjI1LCAxMTksIDEsIDIyNywgMTk0LCAyMjUsIAorICAgIDExOSwgMSwgMjIwLCAxNDQsIDIyNSwgMTE5LCAxLCAyNTQsIDE5NiwgMjI1LCAxMTksIDEsIDIyNSwgMjIxLCAyMjUsIDExOSwgCisgICAgMSwgMjIyLCAyNSwgMjI1LCAxMTksIDEsIDIyNCwgMzksIDIyNSwgMTE5LCAxLCAyMjIsIDE4OSwgMjI1LCAxMTksIDEsIAorICAgIDIyMCwgMjAsIDIyNSwgMTE5LCAxLCAyMTcsIDQxLCAyMjUsIDExOSwgNTQsIDExMCwgMjI1LCAxMTksIDU0LCAyMTYsIDI0NywgCisgICAgMjI1LCAxMTksIDU0LCAyMTUsIDczLCAyMjUsIDExOSwgNTQsIDEyMywgMjQwLCAyMTAsIDIyNSwgMTE5LCA1NCwgMTA1LCAKKyAgICAyMjUsIDExOSwgNTQsIDE1OCwgMjI1LCAxMTksIDIxMSwgMjA5LCAyMjAsIDEzNywgMjMyLCA1OSwgMSwgNjEsIDIzMiwgNTksIAorICAgIDEsIDI1MywgMTU4LCAyMzIsIDU5LCAxLCAyNDMsIDIwMiwgMjMyLCA1OSwgMSwgMjQ5LCA2MCwgMjMyLCA1OSwgMSwgNzUsIAorICAgIDIzMiwgNTksIDEsIDIxNCwgMTA1LCAyMzIsIDU5LCAxLCA3MywgMjMyLCA1OSwgMSwgMjExLCAxMTcsIDIzMiwgNTksIDEsIAorICAgIDIzNSwgMjMsIDIzMiwgNTksIDEsIDE1NiwgMjMyLCA1OSwgMSwgMTkzLCAyMzIsIDU5LCAxLCAyMzAsIDI1LCAyMzIsIDU5LCAKKyAgICAxLCA3NiwgMjMyLCA1OSwgMSwgMTUzLCAyMzIsIDU5LCAxLCAyMTgsIDIyNiwgMjMyLCA1OSwgMSwgMjE3LCAxNTIsIDIzMiwgCisgICAgNTksIDEsIDcwLCAyMzIsIDU5LCAxLCAyNDUsIDYsIDIzMiwgNTksIDEsIDIyNCwgOTYsIDIzMiwgNTksIDEsIDIyMiwgOTEsIAorICAgIDIzMiwgNTksIDEsIDIxNSwgMTU5LCAyMzIsIDU5LCAxLCAyNTQsIDEyMywgMjMyLCA1OSwgMSwgMjQ1LCAxNTAsIDIzMiwgCisgICAgNTksIDEsIDIzMiwgNjIsIDIzMiwgNTksIDEsIDIyOCwgMTExLCAyMzIsIDU5LCAxLCAyNTEsIDY2LCAyMzIsIDU5LCAyMTUsIAorICAgIDIyMiwgNzgsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA2MSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDc1LCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgNzMsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA3NiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5MSwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxMiwgNjUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNTIsIDE5MSwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDI1MiwgMTkwLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTkwLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMTg0LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTk3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI5LCAyMjgsIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyMjksIDEwNywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyOSwgMTA2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgCisgICAgMSwgMjA1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjIzLCAxODcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMzMsIDEzNSwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIzNCwgMTMyLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjQxLCAxODksIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyMDYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjIsIDMzLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMjIxLCAxODEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxNzYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjQsIDg4LCAyMzEsIAorICAgIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAxMDUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDEwNCwgMjMxLCA0OCwgMjQxLCAKKyAgICAxNzQsIDEsIDIxNywgMjIsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDIxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMTExLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjQ4LCAyMjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxNiwgMjEzLCAxNzAsIAorICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxNiwgMjEzLCAxNjksIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDYxLCAyMzEsIDQ4LCAyNDksIAorICAgIDk0LCAxLCA3NSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNzMsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDc2LCAyMzEsIDQ4LCAKKyAgICAyNDksIDk0LCAxLCAxOTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIxMiwgNjUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI1MiwgCisgICAgMTkxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxOTAsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE4NCwgMjMxLCA0OCwgMjQ5LCAKKyAgICA5NCwgMSwgMTk3LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMjksIDEwNywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjA1LCAyMzEsIAorICAgIDQ4LCAyNDksIDk0LCAxLCAyMzMsIDEzNSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjM0LCAxMzIsIDIzMSwgNDgsIDI0OSwgCisgICAgOTQsIDEsIDI0MSwgMTg5LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMDYsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI1NCwgMjMsIAorICAgIDIwNiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjIxLCAxODEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE3NiwgMjMxLCA0OCwgCisgICAgMjQ5LCA5NCwgMSwgMjI0LCA4OCwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjE3LCAxMDUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIAorICAgIDIxNywgMjIsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDExMSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjQ4LCAyMjEsIDIzMSwgCisgICAgNDgsIDI0OSwgOTQsIDIzMiwgMTQ1LCAyMjIsIDIxNywgMjMxLCA0OCwgMjQ5LCA5NCwgMjMyLCAxNDUsIDIzNiwgNiwgMjM0LCAKKyAgICAxMjAsIDEsIDYxLCAyMzQsIDEyMCwgMjUsIDUsIDczLCAyMzQsIDEyMCwgMjUsIDUsIDcwLCAyMzQsIDEyMCwgMjUsIDUsIAorICAgIDE0OSwgMTUzLCAyMzQsIDEyMCwgMjUsIDUsIDc1LCAyMzQsIDEyMCwgMjUsIDUsIDc2LCAyMzQsIDEyMCwgMjUsIDIzMywgCisgICAgMjMsIDc4LCAyMzQsIDEyMCwgNSwgNTIsIDIyMiwgMjM0LCA1MSwgMjM0LCAxMjAsIDUsIDI1NCwgNzUsIDIzNCwgMTIwLCA1LCAKKyAgICAyMTMsIDE0NywgMjM0LCAxMjAsIDEsIDE3NiwgMjM0LCAxMjAsIDEsIDIzNCwgMTMyLCAyMzQsIDEyMCwgMSwgMjQzLCAxMzUsIAorICAgIDIzNCwgMTIwLCAxLCAyNDIsIDI0OSwgMjM0LCAxMjAsIDEsIDI1MSwgMzMsIDIzNCwgMTIwLCAxLCAyNTAsIDE1NywgMjM0LCAKKyAgICAxMjAsIDEsIDIzNSwgMTQxLCAyMzQsIDEyMCwgMSwgMjI3LCAxNjUsIDIzNCwgMTIwLCAxLCAyMTUsIDE1NiwgMjM0LCAxMjAsIAorICAgIDEsIDIxNSwgMTQ0LCAyMzQsIDEyMCwgMSwgMjQ4LCAxMzUsIDIzNCwgMTIwLCAxLCAyNDgsIDExOSwgMjM0LCAxMjAsIDEsIAorICAgIDIyOCwgMTEwLCAyMzQsIDEyMCwgMSwgMjE3LCAxMDUsIDIzNCwgMTIwLCAxLCAyMTYsIDIwOCwgMjM0LCAxMjAsIDEsIDI0OCwgCisgICAgMjIxLCAyMzQsIDEyMCwgMSwgMjQ4LCAyNSwgMjM0LCAxMjAsIDEsIDE5NywgMjM0LCAxMjAsIDEsIDE5MCwgMjM0LCAxMjAsIAorICAgIDEsIDIyNSwgMTQ3LCAyMzQsIDEyMCwgMSwgMjUyLCAxOTEsIDIzNCwgMTIwLCAxLCAyNTIsIDE4LCAyMzQsIDEyMCwgMSwgCisgICAgMTg0LCAyMzQsIDEyMCwgMSwgMTkxLCAyMzQsIDEyMCwgMSwgMjA1LCAyMzQsIDEyMCwgMSwgMjMzLCAxMzUsIDIzNCwgMTIwLCAKKyAgICAxLCAyMTQsIDI3LCAyMzQsIDEyMCwgMSwgMjIwLCAxMDIsIDIzNCwgMTIwLCAxLCAyMTgsIDIyMywgMjM0LCAxMjAsIDEsIAorICAgIDIwNiwgMjM0LCAxMjAsIDEsIDIxMCwgMTE2LCAyMzQsIDEyMCwgMSwgMTYyLCAyMzQsIDEyMCwgMSwgMjM0LCA0NiwgMjM0LCAKKyAgICAxMjAsIDEsIDIxNSwgMTI0LCAyMzQsIDEyMCwgNSwgMjUyLCAxNDEsIDQ4LCAyMzQsIDEyMCwgNSwgMjUwLCAyMjEsIDIzNCwgCisgICAgMTIwLCA1LCA1OSwgNTEsIDIzNCwgMTIwLCAyMTMsIDE1MiwgMjM0LCAxMjAsIDIxLCAxMTAsIDIzNCwgMTIwLCAyMSwgMTA1LCAKKyAgICAyMzQsIDEyMCwgMjEsIDE1OCwgMjM0LCAxMjAsIDIxLCAxNjEsIDIzNCwgMTIwLCA1NCwgMjE2LCAyNDcsIDIzNCwgMTIwLCAKKyAgICA1NCwgMjE1LCA3MywgMjM0LCAxMjAsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzQsIDEyMCwgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ3LCAxMjAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgNCwgMjUwLCAzNSwgMjM0LCAxMjAsIAorICAgIDIyNCwgMTQxLCAyNTAsIDM1LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0OSwgMTM3LCAxMzAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgCisgICAgMjMxLCAxODAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjMyLCAxMTUsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ4LCAxNzgsIAorICAgIDIzNCwgMTIwLCAyMjQsIDE0MSwgNTIsIDI0OCwgMTc4LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDIzMiwgMjA3LCA1NSwgMjE5LCAKKyAgICAyOCwgMjU0LCAzOCwgMSwgMjQxLCAyMzgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzMsIDkzLCA1NSwgMjE5LCAyOCwgCisgICAgMjU0LCAzOCwgMSwgMjQxLCAxOTUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzEsIDY1LCA1NSwgMjE5LCAyOCwgMjU0LCAKKyAgICAzOCwgMSwgMjI0LCAzNCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMiwgMzAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAKKyAgICAxLCAyMjAsIDIwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIzLCA2NywgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIAorICAgIDI1MiwgMjUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTcsIDM2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIxLCAKKyAgICAyMjYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzQsIDIyNSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyNywgCisgICAgMTk0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjM0LCAxMTYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjIsIDI0LCAKKyAgICA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIxLCAyNDksIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDQsIDE1NCwgNTUsIAorICAgIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI1NCwgMTcwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjUzLCAxNjEsIDU1LCAKKyAgICAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDgsIDIyLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQyLCAyMDEsIDU1LCAyMTksIAorICAgIDI4LCAyNTQsIDM4LCAxLCAyNDgsIDE4OCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0MiwgMjM4LCA1NSwgMjE5LCAyOCwgCisgICAgMjU0LCAzOCwgMSwgMjE2LCAyMjYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTAsIDk2LCA1NSwgMjE5LCAyOCwgMjU0LCAKKyAgICAzOCwgMSwgMjQ4LCAxOSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMCwgMjMyLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgCisgICAgMSwgMjE2LCAxOTcsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTYsIDE3OCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDU0LCAKKyAgICAxMTAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCA1NCwgMjQ0LCAxMTQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxMzIsIDIzNSwgCisgICAgMjM4LCAyNTMsIDE3MiwgMSwgNjEsIDI1MywgMTcyLCAxLCAyNTUsIDczLCAyNTMsIDE3MiwgMSwgMjU0LCA3MywgMjUzLCAKKyAgICAxNzIsIDEsIDI1NSwgMzIsIDI1MywgMTcyLCAxLCAyNTQsIDEyMywgMjUzLCAxNzIsIDEsIDI1NSwgMzMsIDI1MywgMTcyLCAKKyAgICAxLCAyNTQsIDI0MywgMjUzLCAxNzIsIDEsIDI1NCwgMjM5LCAyNTMsIDE3MiwgMSwgNzUsIDI1MywgMTcyLCAxLCAyNDUsIAorICAgIDIwOSwgMjUzLCAxNzIsIDEsIDc2LCAyNTMsIDE3MiwgMSwgMjI2LCAxODMsIDI1MywgMTcyLCAxLCA3MywgMjUzLCAxNzIsIAorICAgIDEsIDIzNiwgMzMsIDI1MywgMTcyLCAxLCA3MCwgMjUzLCAxNzIsIDEsIDIxNCwgMTE4LCAyNTMsIDE3MiwgMSwgMjM0LCAKKyAgICAxODIsIDI1MywgMTcyLCAxLCAyMTEsIDE2MiwgMjUzLCAxNzIsIDEsIDIxMSwgMTI4LCAyNTMsIDE3MiwgMSwgMjExLCAxMzcsIAorICAgIDI1MywgMTcyLCAxLCAyNDMsIDYyLCAyNTMsIDE3MiwgMSwgMjQzLCAyNCwgMjUzLCAxNzIsIDEsIDI0MiwgMjM2LCAyNTMsIAorICAgIDE3MiwgMSwgMjUwLCAxOTAsIDI1MywgMTcyLCAxLCAyMzUsIDEyNiwgMjUzLCAxNzIsIDEsIDIxNywgMjIsIDI1MywgMTcyLCAKKyAgICAxLCAyMTYsIDE5NSwgMjUzLCAxNzIsIDEsIDI0OCwgOTAsIDI1MywgMTcyLCAxLCAyNDgsIDE3LCAyNTMsIDE3MiwgMSwgCisgICAgMjE1LCAxNTEsIDI1MywgMTcyLCAxLCAyMjUsIDIyMSwgMjUzLCAxNzIsIDEsIDI0NCwgMTU0LCAyNTMsIDE3MiwgMSwgMjUyLCAKKyAgICA3NSwgMjUzLCAxNzIsIDEsIDI1MiwgMTQsIDI1MywgMTcyLCAxLCAyMjksIDY0LCAyNTMsIDE3MiwgMSwgMjI4LCAyMzksIAorICAgIDI1MywgMTcyLCAxLCAyMjgsIDI0MCwgMjUzLCAxNzIsIDEsIDIyOSwgMTA3LCAyNTMsIDE3MiwgMSwgMjI3LCAxNTYsIDI1MywgCisgICAgMTcyLCAxLCAyMjgsIDEwNSwgMjUzLCAxNzIsIDEsIDIzMSwgOTEsIDI1MywgMTcyLCAxLCAyNDEsIDExNiwgMjUzLCAxNzIsIAorICAgIDEsIDIxMCwgMTY2LCAyNTMsIDE3MiwgMSwgMjExLCA0NywgMjUzLCAxNzIsIDEsIDIxMywgMjU1LCAyNTMsIDE3MiwgMSwgCisgICAgMjIzLCAxMjgsIDI1MywgMTcyLCAxLCAyMzMsIDU4LCAyNTMsIDE3MiwgMSwgMjIxLCAxODEsIDI1MywgMTcyLCAxLCAyMTAsIAorICAgIDk0LCAyNTMsIDE3MiwgMSwgMjIwLCA2MywgMjUzLCAxNzIsIDEsIDIxMCwgNzQsIDI1MywgMTcyLCAxLCAyMTksIDE5OCwgCisgICAgMjUzLCAxNzIsIDEsIDIxOCwgMTkzLCAyNTMsIDE3MiwgMSwgMjQxLCAyMzgsIDI1MywgMTcyLCAyNTUsIDIxLCA3OCwgMjE2LCAKKyAgICA3OSwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDQsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgCisgICAgMTQwLCAyMzMsIDg1LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgMjMzLCA4NSwgMTIzLCA1OSwgMTE3LCAKKyAgICAxMTMsIDE3MCwgMjI0LCAxNDAsIDIzMywgODUsIDExMywgMjIyLCAyMzIsIDExNywgMTIzLCAyMjIsIDIzNCwgMjI0LCAxNDAsIAorICAgIDIzMywgODUsIDEyMywgMjIyLCAyMzQsIDExNywgMTEzLCAyMjIsIDIzMiwgMjI0LCAxNDAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgCisgICAgMSwgMjU0LCAxNjgsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjUyLCAyNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDIsIAorICAgIDIwMSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDgsIDE4OCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDEsIDIzOCwgCisgICAgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTIsIDMwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxMCwgOTcsIDIzNSwgMjE4LCAKKyAgICAyMjUsIDI1NCwgMSwgMjQxLCAxOTUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjE2LCAyMjYsIDIzNSwgMjE4LCAyMjUsIAorICAgIDI1NCwgMSwgMjEwLCAyMzIsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjM0LCAyMjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgCisgICAgMjMzLCA5MywgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMzEsIDY1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyNywgMTk0LCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMSwgMjQ5LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI1MywgMTYyLCAyMzUsIAorICAgIDIxOCwgMjI1LCAyNTQsIDEsIDIyNSwgMjIxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMiwgMjQsIDIzNSwgMjE4LCAKKyAgICAyMjUsIDI1NCwgMSwgMjI0LCAzNCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjMsIDY3LCAyMzUsIDIxOCwgMjI1LCAyNTQsIAorICAgIDEsIDIyMCwgMjAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjE3LCAzNiwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTEwLCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMDUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDE1OCwgMjM1LCAyMTgsIDIyNSwgCisgICAgMjU0LCA1NCwgMTYxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAyMTYsIDI0NywgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgCisgICAgMjE1LCA3MywgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgCisgICAgMTIzLCAyMTYsIDE0NywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI1NCwgMTY4LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjUyLCAKKyAgICAyNSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0MiwgMjAxLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQ4LCAxODgsIDIzNSwgCisgICAgMjE4LCAyMjYsIDcyLCAxLCAyNDEsIDIzOCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxMiwgMjksIDIzNSwgMjE4LCAyMjYsIAorICAgIDcyLCAxLCAyMTAsIDk3LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQxLCAxOTUsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAKKyAgICAyMTYsIDIyNiwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxMCwgMjMyLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjM0LCAyMjUsIAorICAgIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzMsIDkzLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjMxLCA2NCwgMjM1LCAyMTgsIAorICAgIDIyNiwgNzIsIDEsIDIyNywgMTk0LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIxLCAyNDksIDIzNSwgMjE4LCAyMjYsIDcyLCAKKyAgICAxLCAyMjUsIDIyMSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMiwgMjQsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjAsIAorICAgIDIwLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjE3LCAzNiwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxMTAsIDIzNSwgMjE4LCAKKyAgICAyMjYsIDcyLCA1NCwgMTA1LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDE1OCwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxNjEsIAorICAgIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMjE2LCAyNDcsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMjE1LCA3MywgMjM1LCAKKyAgICAyMTgsIDIyNiwgNzIsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA2MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgNjEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMjQzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNzMsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDczLCA1NSwgMjAxLCAxLCAKKyAgICAyMTEsIDM3LCA3NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDc2LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAyMzQsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMjM0LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU1LCAyNSwgNTUsIDIwMSwgMSwgCisgICAgMjExLCAzNywgMjU1LCAyNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjQyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDI0MiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjE2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIxNiwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjM3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNywgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI1NCwgMjU1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDI1NSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNDksIDI1NCwgMjQxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAKKyAgICAxMiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMTY3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDE2NywgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI0LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNCwgNTUsIDIwMSwgMSwgCisgICAgMjI2LCAxNDksIDI1NCwgMjM1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDIyNiwgMjMzLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMTc4LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDE3OCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjM0LCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQ1LCAxNjEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDE1OSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNDksIDI1NCwgMTIzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgCisgICAgMjMyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMzEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTMxLCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxNDcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTQ3LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE0OSwgMjQ1LCAxMTgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTE4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDExNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTM4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzMSwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTA4LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNzUsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDAsIDExMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMjE1LCA1NSwgMjAxLCAxLCAyMTEsIAorICAgIDM3LCAyNDUsIDIxNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgNDUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgCisgICAgNDUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMzUsIDE4MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjM1LCAxODEsIDU1LCAKKyAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE1OSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAxNTksIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTQ5LCAyNTQsIDQxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDQxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjU0LCAyMzAsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDIzNywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI4LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAyMzEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMjMxLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQ1LCA3NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCA3NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDI1MywgMjA2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDIwNiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI1LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTQwLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjUyLCAxMjUsIDIyMiwgMTI3LCAyMSwgMTEwLCAyMjIsIDEyNywgMjEsIDEwNSwgMjIyLCAxMjcsIAorICAgIDIxLCAxNTgsIDIyMiwgMTI3LCAyMSwgMTYxLCAyMjIsIDEyNywgMjEsIDE4OSwgMjIyLCAxMjcsIDIxLCAxOTQsIDIyMiwgCisgICAgMTI3LCAyMSwgMTk4LCAyMjIsIDEyNywgMjEsIDE5NSwgMjIyLCAxMjcsIDIxLCAyMDAsIDIyMiwgMTI3LCA1NCwgMjE2LCAKKyAgICAyNDcsIDIyMiwgMTI3LCA1NCwgMjE1LCA3MywgMjIyLCAxMjcsIDU0LCAyMTYsIDE2MiwgMjIyLCAxMjcsIDU0LCAyNDQsIAorICAgIDE1LCAyMjIsIDEyNywgNTQsIDI0NCwgMTE0LCAyMjIsIDEyNywgNTQsIDIxOSwgMTExLCAyMjIsIDEyNywgNTQsIDIyMCwgCisgICAgMTE2LCAyMjIsIDEyNywgNTQsIDI0NSwgMTg0LCAyMjIsIDEyNywgNTQsIDIyOCwgMTk1LCAyMjIsIDEyNywgNTQsIDEyMywgCisgICAgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMTEzLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAxMzQsIDI0MCwgMjEwLCAyMjIsIAorICAgIDEyNywgNTQsIDI0NCwgMTEsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyMjIsIDEyNywgCisgICAgNTQsIDIxOSwgMTI1LCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyMjAsIDEyMiwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgCisgICAgMjQ1LCAxOTMsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDI0NCwgMiwgCisgICAgMTIzLCAyNDIsIDI3LCAyMjIsIDEyNywgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIyMiwgMTI3LCAyNDQsIDIsIDEyMywgMjE2LCAKKyAgICAxNjgsIDIyMiwgMTI3LCAyNDQsIDIsIDExMywgMjE2LCAxNjYsIDExOCwgNSwgMjUwLCAyNTUsIDExOCwgNSwgMjU0LCA3NSwgCisgICAgMTE4LCA1LCAyMTMsIDE0NywgMTE4LCA1LCAyMzUsIDEwMiwgMTE4LCA1LCAyMTQsIDE2MSwgMTE4LCAxLCA2MSwgMTE4LCAxLCAKKyAgICAyNTUsIDczLCAxMTgsIDEsIDczLCAxMTgsIDEsIDIzNiwgMzMsIDExOCwgMSwgNzAsIDExOCwgMSwgMjE0LCAxMTgsIDExOCwgCisgICAgMSwgMTQ5LCAxNTMsIDExOCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTE4LCAxLCAxNDksIDE1NiwgMTE4LCAxLCAxNDksIDIzMiwgCisgICAgMTg1LCAxMTgsIDEsIDc1LCAxMTgsIDEsIDI1NCwgMjAxLCAxMTgsIDEsIDc2LCAxMTgsIDEsIDI1MywgMTkyLCAxMTgsIDEsIAorICAgIDE3NiwgMTE4LCAxLCAyMzQsIDEzMiwgMTE4LCAxLCAyNDMsIDEzNSwgMTE4LCAxLCAyNDIsIDI0OSwgMTE4LCAxLCAyMjksIAorICAgIDc3LCAxMTgsIDEsIDI1MSwgMzMsIDExOCwgMSwgMjUwLCAxNTcsIDExOCwgMSwgMjM1LCAxNDEsIDExOCwgMSwgMjM1LCAKKyAgICAxMTQsIDExOCwgMSwgMjI3LCAxNjUsIDExOCwgMSwgMjE1LCAxNTYsIDExOCwgMSwgMjE1LCAxNDQsIDExOCwgMSwgMjQ4LCAKKyAgICAxMzUsIDExOCwgMSwgMjQ4LCAxMTksIDExOCwgMSwgMjI4LCAxMTAsIDExOCwgMSwgMjE3LCAxMDUsIDExOCwgMSwgMjE2LCAKKyAgICAyMDgsIDExOCwgMSwgMjQ4LCAyMjEsIDExOCwgMSwgMjQ4LCAyNSwgMTE4LCAxLCAxOTcsIDExOCwgMSwgMTkwLCAxMTgsIDEsIAorICAgIDIyNSwgMTQ3LCAxMTgsIDEsIDI1MiwgMTkxLCAxMTgsIDEsIDI1MiwgMTgsIDExOCwgMSwgMTg0LCAxMTgsIDEsIDE5MSwgCisgICAgMTE4LCAxLCAyMDUsIDExOCwgMSwgMjMzLCAxMzUsIDExOCwgMSwgMjE0LCAyNywgMTE4LCAxLCAyMjAsIDEwMiwgMTE4LCAxLCAKKyAgICAyMTgsIDIyMywgMTE4LCAxLCAyMDYsIDExOCwgMSwgMTYyLCAxMTgsIDEsIDIzMiwgMTg0LCAxMTgsIDEsIDU1LCAzNiwgCisgICAgMjMyLCAxNzUsIDExOCwgMSwgNTUsIDM2LCAyMjIsIDE3OSwgMTE4LCAxLCA1NSwgMzYsIDIyOCwgOTIsIDExOCwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDExOCwgMjUsIDUsIDI1MiwgMTUsIDI1NSwgNzMsIDExOCwgMjUsIDUsIDczLCAxMTgsIDI1LCA1LCAyMzYsIAorICAgIDMzLCAxMTgsIDI1LCA1LCA3MCwgMTE4LCAyNSwgNSwgMjE0LCAxMTgsIDExOCwgMjUsIDUsIDE0OSwgMTUzLCAxMTgsIDI1LCAKKyAgICA1LCAxNDksIDIyMiwgMTgwLCAxMTgsIDI1LCA1LCAxNDksIDE1NiwgMTE4LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTE4LCAKKyAgICAyNSwgNSwgNzUsIDExOCwgMjUsIDUsIDI1NCwgMjAxLCAxMTgsIDI1LCA1LCA3NiwgMTE4LCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDExOCwgMjEzLCAxNTIsIDExOCwgMjQ4LCAxNzgsIDExOCwgNTIsIDI0OCwgMTc4LCAxMTgsIDIyNCwgMTQxLCAyNDcsIDEyMCwgCisgICAgMTE4LCAyMjQsIDE0MSwgNTIsIDI0NywgMTIwLCAxMTgsIDIyNCwgMTQxLCAyMzIsIDIxMywgMTE4LCAyMjQsIDE0MSwgMjQ5LCAKKyAgICAxMzcsIDEzMCwgMTE4LCAyMjQsIDE0MSwgMjMyLCAxMTUsIDExOCwgNTQsIDExMCwgMTE4LCA1NCwgMTA1LCAxMTgsIDU0LCAKKyAgICAxNTgsIDExOCwgNTQsIDE2MSwgMTE4LCA1NCwgMTg5LCAxMTgsIDU0LCAxOTQsIDExOCwgNTQsIDE5OCwgMTE4LCA1NCwgCisgICAgMTk1LCAxMTgsIDU0LCAyMDAsIDExOCwgNTQsIDIxNiwgMjQ3LCAxMTgsIDU0LCAyMTUsIDczLCAxMTgsIDU0LCAyMTYsIAorICAgIDE2MiwgMTE4LCA1NCwgMjQ0LCAxNSwgMTE4LCA1NCwgMjQ0LCAxMTQsIDExOCwgNTQsIDIxOSwgMTExLCAxMTgsIDU0LCAKKyAgICAyMjAsIDExNiwgMTE4LCA1NCwgMjQ1LCAxODQsIDExOCwgNTQsIDIyOCwgMTk1LCAxMTgsIDU0LCAxMjMsIDI0MCwgMjEwLCAKKyAgICAxMTgsIDU0LCAxMjMsIDIxNiwgMTQ3LCAxMTgsIDIxLCAyMTAsIDg2LCAxMTgsIDIxLCAxMTAsIDExOCwgMjEsIDEwNSwgCisgICAgMTE4LCAyMSwgMTU4LCAxMTgsIDIxLCAxNjEsIDExOCwgMjEsIDE4OSwgMTE4LCAyMSwgMTk0LCAxMTgsIDIxLCAxOTgsIAorICAgIDExOCwgMjEsIDE5NSwgMTE4LCAyMSwgMjAwLCAyMzQsIDI0NCwgNSwgMjUwLCAyNTUsIDIzNCwgMjQ0LCA1LCAyNTQsIDc1LCAKKyAgICAyMzQsIDI0NCwgNSwgMjEzLCAxNDcsIDIzNCwgMjQ0LCAxLCA2MSwgMjM0LCAyNDQsIDEsIDI1NSwgNzMsIDIzNCwgMjQ0LCAKKyAgICAxLCA3MywgMjM0LCAyNDQsIDEsIDIzNiwgMzMsIDIzNCwgMjQ0LCAxLCA3MCwgMjM0LCAyNDQsIDEsIDIxNCwgMTE4LCAyMzQsIAorICAgIDI0NCwgMSwgNzUsIDIzNCwgMjQ0LCAxLCAyNTQsIDIwMSwgMjM0LCAyNDQsIDEsIDc2LCAyMzQsIDI0NCwgMSwgMjUzLCAKKyAgICAxOTIsIDIzNCwgMjQ0LCAxLCAxNzYsIDIzNCwgMjQ0LCAxLCAyMzQsIDEzMiwgMjM0LCAyNDQsIDEsIDI0MywgMTM1LCAyMzQsIAorICAgIDI0NCwgMSwgMjQyLCAyNDksIDIzNCwgMjQ0LCAxLCAyMjksIDc3LCAyMzQsIDI0NCwgMSwgMjUxLCAzMywgMjM0LCAyNDQsIAorICAgIDEsIDI1MCwgMTU3LCAyMzQsIDI0NCwgMSwgMjM1LCAxNDEsIDIzNCwgMjQ0LCAxLCAyMzUsIDExNCwgMjM0LCAyNDQsIDEsIAorICAgIDIyNywgMTY1LCAyMzQsIDI0NCwgMSwgMjE1LCAxNTYsIDIzNCwgMjQ0LCAxLCAyMTUsIDE0NCwgMjM0LCAyNDQsIDEsIDI0OCwgCisgICAgMTM1LCAyMzQsIDI0NCwgMSwgMjQ4LCAxMjQsIDIzNCwgMjQ0LCAxLCAyNDgsIDExOSwgMjM0LCAyNDQsIDEsIDIyMywgMzksIAorICAgIDIzNCwgMjQ0LCAxLCAyMjgsIDExMCwgMjM0LCAyNDQsIDEsIDIxNywgMTA1LCAyMzQsIDI0NCwgMSwgMjE2LCAyMDgsIDIzNCwgCisgICAgMjQ0LCAxLCAyNDgsIDIyMSwgMjM0LCAyNDQsIDEsIDI0OCwgMjUsIDIzNCwgMjQ0LCAxLCAxOTcsIDIzNCwgMjQ0LCAxLCAKKyAgICAxOTAsIDIzNCwgMjQ0LCAxLCAyMjUsIDE0NywgMjM0LCAyNDQsIDEsIDI1MiwgMTkxLCAyMzQsIDI0NCwgMSwgMjUyLCAxOCwgCisgICAgMjM0LCAyNDQsIDEsIDE4NCwgMjM0LCAyNDQsIDEsIDE5MSwgMjM0LCAyNDQsIDEsIDIwNSwgMjM0LCAyNDQsIDEsIDIzMywgCisgICAgMTM1LCAyMzQsIDI0NCwgMSwgMjE0LCAyNywgMjM0LCAyNDQsIDEsIDIyMCwgMTAyLCAyMzQsIDI0NCwgMSwgMjE4LCAyMjMsIAorICAgIDIzNCwgMjQ0LCAxLCAyMDYsIDIzNCwgMjQ0LCAxLCAxNjIsIDIzNCwgMjQ0LCAyNSwgNSwgMjU1LCA3MywgMjM0LCAyNDQsIAorICAgIDI1LCA1LCA3MywgMjM0LCAyNDQsIDI1LCA1LCAyMzYsIDMzLCAyMzQsIDI0NCwgMjUsIDUsIDcwLCAyMzQsIDI0NCwgMjUsIAorICAgIDUsIDIxNCwgMTE4LCAyMzQsIDI0NCwgMjUsIDUsIDc1LCAyMzQsIDI0NCwgMjUsIDUsIDI1NCwgMjAxLCAyMzQsIDI0NCwgCisgICAgMjUsIDUsIDc2LCAyMzQsIDI0NCwgMjUsIDUsIDI1MywgMTkyLCAyMzQsIDI0NCwgNSwgMjEzLCAxNTIsIDIzNCwgMjQ0LCA1LCAKKyAgICAyMjcsIDIwNSwgMjM0LCAyNDQsIDI1NSwgMjEsIDUwLCAyMzQsIDI0NCwgMjQ1LCAxMjEsIDUwLCAyMzQsIDI0NCwgNTQsIAorICAgIDUwLCAyMzQsIDI0NCwgMjIxLCAxNzMsIDc4LCAyMzQsIDI0NCwgNTIsIDIyMSwgMTczLCA3OCwgMjM0LCAyNDQsIDI0OCwgCisgICAgMTc4LCAyMzQsIDI0NCwgNTIsIDI0OCwgMTc4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjIsIDE4LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMTcsIDgwLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNTIsIDE2OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjUxLCAKKyAgICAyMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ4LCAyMDMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0MywgMTIwLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAxLCAyMzEsIDIxMCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI5LCA3NCwgMjE5LCAzNiwgMjE5LCA0NCwgCisgICAgMSwgMjMzLCAxMTIsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyOSwgMjEzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTQsIDI0LCAKKyAgICAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjYsIDczLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTEsIDg0LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMjMsIDE2OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQyLCAzNywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjM0LCAKKyAgICAyNDgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzNSwgMTM2LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjcsIDE2MiwgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMSwgMjU0LCAyMDksIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0NSwgMjA3LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMzYsIDM0LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTQsIDIwOCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI2LCAKKyAgICAyMjIsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0NSwgMTk3LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzEsIDIyMywgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMjEsIDIxMCwgODYsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxMTAsIDIxOSwgMzYsIDIxOSwgNDQsIAorICAgIDIxLCAxMDUsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxNTgsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxNjEsIDIxOSwgMzYsIAorICAgIDIxOSwgNDQsIDIxLCAxODksIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTQsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTgsIAorICAgIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTUsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAyMDAsIDI1MCwgMTUxLCA1LCAyNTAsIAorICAgIDI1NSwgMjUwLCAxNTEsIDUsIDI1NCwgNzUsIDI1MCwgMTUxLCA1LCAyMTMsIDE0NywgMjUwLCAxNTEsIDEsIDI1NSwgNzMsIAorICAgIDI1MCwgMTUxLCAxLCA3MywgMjUwLCAxNTEsIDEsIDcwLCAyNTAsIDE1MSwgMSwgNzUsIDI1MCwgMTUxLCAxLCAyMzUsIDEwLCAKKyAgICAyNTAsIDE1MSwgMSwgMjM0LCAxMzEsIDI1MCwgMTUxLCAxLCAyNDMsIDEzMiwgMjUwLCAxNTEsIDEsIDI0MiwgMjQ4LCAyNTAsIAorICAgIDE1MSwgMSwgMjI5LCA3NiwgMjUwLCAxNTEsIDEsIDI1MSwgMzIsIDI1MCwgMTUxLCAxLCAyNTAsIDE1NiwgMjUwLCAxNTEsIAorICAgIDEsIDIzNSwgMTQwLCAyNTAsIDE1MSwgMSwgMjM1LCAxMTMsIDI1MCwgMTUxLCAxLCAyMjcsIDE2NCwgMjUwLCAxNTEsIDEsIAorICAgIDIxNSwgMTU1LCAyNTAsIDE1MSwgMSwgMjE1LCAxNDMsIDI1MCwgMTUxLCAxLCAyNDgsIDEzNCwgMjUwLCAxNTEsIDEsIDI0OCwgCisgICAgMTE4LCAyNTAsIDE1MSwgMSwgMjI4LCAxMDksIDI1MCwgMTUxLCAxLCAyMTcsIDEwMSwgMjUwLCAxNTEsIDEsIDIxNiwgMjA3LCAKKyAgICAyNTAsIDE1MSwgMSwgMjQ4LCAyMjAsIDI1MCwgMTUxLCAxLCAyNDgsIDI0LCAyNTAsIDE1MSwgMSwgMjI5LCAyMjUsIDI1MCwgCisgICAgMTUxLCAxLCAyMjYsIDg5LCAyNTAsIDE1MSwgMSwgMjI1LCAxNDYsIDI1MCwgMTUxLCAxLCAyNTIsIDE4OSwgMjUwLCAxNTEsIAorICAgIDEsIDI1MiwgMTcsIDI1MCwgMTUxLCAxLCAyMzEsIDIzNywgMjUwLCAxNTEsIDEsIDIxMCwgMTY3LCAyNTAsIDE1MSwgMSwgCisgICAgMjExLCAxMDMsIDI1MCwgMTUxLCAxLCAyMjMsIDE4NCwgMjUwLCAxNTEsIDEsIDIzMywgMTM0LCAyNTAsIDE1MSwgMSwgMjEyLCAKKyAgICA2NCwgMjUwLCAxNTEsIDEsIDIyMiwgMzEsIDI1MCwgMTUxLCAxLCAyNDIsIDQ2LCAyNTAsIDE1MSwgMjUsIDUsIDYxLCAyNTAsIAorICAgIDE1MSwgMjUsIDUsIDczLCAyNTAsIDE1MSwgMjUsIDUsIDIzNiwgMzMsIDI1MCwgMTUxLCAyNSwgNSwgNzAsIDI1MCwgMTUxLCAKKyAgICAyNSwgNSwgMjE0LCAxMTgsIDI1MCwgMTUxLCAyNSwgNSwgNzUsIDI1MCwgMTUxLCAyNSwgNSwgMjU0LCAyMDEsIDI1MCwgCisgICAgMTUxLCAyNSwgNSwgNzYsIDI1MCwgMTUxLCAyNSwgNSwgMjUzLCAxOTIsIDI1MCwgMTUxLCAyNSwgNSwgMjI2LCAyMTksIAorICAgIDI1MCwgMTUxLCAxNDQsIDc4LCAyNTAsIDE1MSwgMjUzLCAxOTMsIDc4LCAyNTAsIDE1MSwgMjEzLCAxNTIsIDI1MCwgMTUxLCAKKyAgICAyMzEsIDIzNSwgMjUwLCAxNTEsIDIxLCAyMTAsIDg2LCAyNTAsIDE1MSwgMjEsIDExMCwgMjUwLCAxNTEsIDIxLCAxMDUsIAorICAgIDI1MCwgMTUxLCAyMSwgMTU4LCAyNTAsIDE1MSwgMjEsIDE2MSwgMjUwLCAxNTEsIDIxLCAxODksIDI1MCwgMTUxLCAyMSwgCisgICAgMTk0LCAyNTAsIDE1MSwgMjEsIDE5OCwgMjUwLCAxNTEsIDIxLCAxOTUsIDI1MCwgMTUxLCAyMSwgMjAwLCAyNTAsIDE1MSwgCisgICAgMjIxLCAxNzMsIDc4LCAyNTAsIDE1MSwgMjQ4LCAxNzgsIDI1MCwgMTUxLCA1MiwgMjQ4LCAxNzgsIDI1MCwgMTUxLCAyMjQsIAorICAgIDEzLCA3OCwgMTc0LCA1LCAyNTAsIDI1NSwgMTc0LCA1LCAyNTQsIDc1LCAxNzQsIDUsIDIxMywgMTQ3LCAxNzQsIDEsIDYxLCAKKyAgICAxNzQsIDEsIDI1NSwgNzMsIDE3NCwgMSwgNzMsIDE3NCwgMSwgMjM2LCAzMywgMTc0LCAxLCA3MCwgMTc0LCAxLCAyMTQsIAorICAgIDExOCwgMTc0LCAxLCAxNDksIDE1MywgMTc0LCAxLCAxNDksIDIyMiwgMTgwLCAxNzQsIDEsIDE0OSwgMTU2LCAxNzQsIDEsIAorICAgIDE0OSwgMjMyLCAxODUsIDE3NCwgMSwgNzUsIDE3NCwgMSwgMjU0LCAyMDEsIDE3NCwgMSwgNzYsIDE3NCwgMSwgMjUzLCAKKyAgICAxOTIsIDE3NCwgMSwgMTc2LCAxNzQsIDEsIDIzNCwgMTMyLCAxNzQsIDEsIDI0MywgMTM1LCAxNzQsIDEsIDI0MiwgMjQ5LCAKKyAgICAxNzQsIDEsIDIyOSwgNzcsIDE3NCwgMSwgMjUxLCAzMywgMTc0LCAxLCAyNTAsIDE1NywgMTc0LCAxLCAyMzUsIDE0MSwgCisgICAgMTc0LCAxLCAyMzUsIDExNCwgMTc0LCAxLCAyMjcsIDE2NSwgMTc0LCAxLCAyMTUsIDE1NiwgMTc0LCAxLCAyMTUsIDE0NCwgCisgICAgMTc0LCAxLCAyNDgsIDEzNSwgMTc0LCAxLCAyNDgsIDExOSwgMTc0LCAxLCAyMjgsIDExMCwgMTc0LCAxLCAyMTcsIDEwNSwgCisgICAgMTc0LCAxLCAyMTYsIDIwOCwgMTc0LCAxLCAyNDgsIDIyMSwgMTc0LCAxLCAyNDgsIDI1LCAxNzQsIDEsIDE5NywgMTc0LCAxLCAKKyAgICAxOTAsIDE3NCwgMSwgMjI1LCAxNDcsIDE3NCwgMSwgMjUyLCAxOTEsIDE3NCwgMSwgMjUyLCAxOCwgMTc0LCAxLCAxODQsIAorICAgIDE3NCwgMSwgMTkxLCAxNzQsIDEsIDIwNSwgMTc0LCAxLCAyMzMsIDEzNSwgMTc0LCAxLCAyMzIsIDE4NCwgMTc0LCAxLCAKKyAgICAyMTQsIDI3LCAxNzQsIDEsIDIyMCwgMTAyLCAxNzQsIDEsIDIxOCwgMjIzLCAxNzQsIDEsIDIwNiwgMTc0LCAxLCAxNjIsIAorICAgIDE3NCwgMjUsIDUsIDI1NSwgNzMsIDE3NCwgMjUsIDUsIDczLCAxNzQsIDI1LCA1LCAyMzYsIDMzLCAxNzQsIDI1LCA1LCA3MCwgCisgICAgMTc0LCAyNSwgNSwgMjE0LCAxMTgsIDE3NCwgMjUsIDUsIDE0OSwgMTUzLCAxNzQsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAKKyAgICAxNzQsIDI1LCA1LCAxNDksIDE1NiwgMTc0LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTc0LCAyNSwgNSwgNzUsIDE3NCwgMjUsIAorICAgIDUsIDI1NCwgMjAxLCAxNzQsIDI1LCA1LCA3NiwgMTc0LCAyNSwgNSwgMjUzLCAxOTIsIDE3NCwgNSwgMjEzLCAxNTIsIDE3NCwgCisgICAgNSwgMjUzLCAxNzUsIDE3NCwgNSwgMjM1LCAxMDIsIDE3NCwgNSwgMjE0LCAxNjEsIDE3NCwgMjI2LCAyMDQsIDE3NCwgMjQ4LCAKKyAgICAxNzgsIDE3NCwgNTIsIDI0OCwgMTc4LCAxNzQsIDI1NSwgMjEsIDUwLCAxNzQsIDIyMCwgMTM3LCAxNzQsIDIxLCAyMTAsIAorICAgIDg2LCAxNzQsIDIxLCAxMTAsIDE3NCwgMjEsIDEwNSwgMTc0LCAyMSwgMTU4LCAxNzQsIDIxLCAxNjEsIDE3NCwgMjEsIDE4OSwgCisgICAgMTc0LCAyMSwgMTk0LCAxNzQsIDIxLCAxOTgsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMjAwLCAyMTcsIDY5LCAxLCA2MSwgCisgICAgMjE3LCA2OSwgMSwgMjU1LCA3MywgMjE3LCA2OSwgMSwgNzMsIDIxNywgNjksIDEsIDIzNiwgMzMsIDIxNywgNjksIDEsIDcwLCAKKyAgICAyMTcsIDY5LCAxLCAyMTQsIDExOCwgMjE3LCA2OSwgMSwgNzUsIDIxNywgNjksIDEsIDI1NCwgMjAxLCAyMTcsIDY5LCAxLCAKKyAgICA3NiwgMjE3LCA2OSwgMSwgMjUzLCAxOTIsIDIxNywgNjksIDEsIDE3NiwgMjE3LCA2OSwgMSwgMjM0LCAxMzIsIDIxNywgNjksIAorICAgIDEsIDI0MywgMTM1LCAyMTcsIDY5LCAxLCAyNDIsIDI0OSwgMjE3LCA2OSwgMSwgMjI5LCA3NywgMjE3LCA2OSwgMSwgMjUxLCAKKyAgICAzMywgMjE3LCA2OSwgMSwgMjUwLCAxNTcsIDIxNywgNjksIDEsIDIzNSwgMTQxLCAyMTcsIDY5LCAxLCAyMzUsIDExNCwgCisgICAgMjE3LCA2OSwgMSwgMjI3LCAxNjUsIDIxNywgNjksIDEsIDIxNSwgMTU2LCAyMTcsIDY5LCAxLCAyMTUsIDE0NCwgMjE3LCAKKyAgICA2OSwgMSwgMjQ4LCAxMzUsIDIxNywgNjksIDEsIDI0OCwgMTE5LCAyMTcsIDY5LCAxLCAyMjgsIDExMCwgMjE3LCA2OSwgMSwgCisgICAgMjE3LCAxMDUsIDIxNywgNjksIDEsIDIxNiwgMjA4LCAyMTcsIDY5LCAxLCAyNDgsIDIyMSwgMjE3LCA2OSwgMSwgMjQ4LCAKKyAgICAyNSwgMjE3LCA2OSwgMSwgMTk3LCAyMTcsIDY5LCAxLCAxOTAsIDIxNywgNjksIDEsIDIyNSwgMTQ3LCAyMTcsIDY5LCAxLCAKKyAgICAyNTIsIDE5MSwgMjE3LCA2OSwgMSwgMjUyLCAxOCwgMjE3LCA2OSwgMSwgMTg0LCAyMTcsIDY5LCAxLCAxOTEsIDIxNywgNjksIAorICAgIDEsIDIwNSwgMjE3LCA2OSwgMSwgMjMzLCAxMzUsIDIxNywgNjksIDEsIDIxNCwgMjcsIDIxNywgNjksIDEsIDIyMCwgMTAyLCAKKyAgICAyMTcsIDY5LCAxLCAyMDYsIDIxNywgNjksIDEsIDE2MiwgMjE3LCA2OSwgMSwgMjIyLCAxNzksIDIxNywgNjksIDUsIDI1NCwgCisgICAgNzUsIDIxNywgNjksIDUsIDIxMywgMTQ3LCAyMTcsIDY5LCAyNSwgNSwgMjU1LCA3MywgMjE3LCA2OSwgMjUsIDUsIDczLCAKKyAgICAyMTcsIDY5LCAyNSwgNSwgMjM2LCAzMywgMjE3LCA2OSwgMjUsIDUsIDcwLCAyMTcsIDY5LCAyNSwgNSwgMjE0LCAxMTgsIAorICAgIDIxNywgNjksIDI1LCA1LCA3NSwgMjE3LCA2OSwgMjUsIDUsIDI1NCwgMjAxLCAyMTcsIDY5LCAyNSwgNSwgNzYsIDIxNywgCisgICAgNjksIDI1LCA1LCAyNTMsIDE5MiwgMjE3LCA2OSwgNSwgMjEzLCAxNTIsIDIxNywgNjksIDUsIDIyNywgMjA1LCAyMTcsIDY5LCAKKyAgICAyMSwgMjEwLCA4NiwgMjE3LCA2OSwgMjEsIDExMCwgMjE3LCA2OSwgMjEsIDEwNSwgMjE3LCA2OSwgMjEsIDE1OCwgMjE3LCAKKyAgICA2OSwgMjEsIDE2MSwgMjE3LCA2OSwgMjEsIDE4OSwgMjE3LCA2OSwgMjEsIDE5NCwgMjE3LCA2OSwgMjEsIDE5OCwgMjE3LCAKKyAgICA2OSwgMjEsIDE5NSwgMjE3LCA2OSwgMjEsIDIwMCwgMTUsIDUsIDYxLCAxNSwgNSwgMTE1LCAzMCwgNjEsIDE1LCA1LCAxMTUsIAorICAgIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDExNSwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDExNSwgMzAsIDE2MiwgCisgICAgMTUsIDUsIDExNSwgMzAsIDIzNiwgMzUsIDE1LCA1LCAxMTUsIDMwLCAyMzMsIDExNiwgMjQyLCA5NCwgMTUsIDUsIDExNSwgCisgICAgMzAsIDIzMCwgNjEsIDE1LCA1LCAxMTUsIDMwLCAyMjIsIDIxLCAxNSwgNSwgMjU1LCA3NSwgMTUsIDUsIDI1NSwgMjUsIDE1LCAKKyAgICA1LCAyNTUsIDI2LCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI1NSwgMjYsIDMwLCAyNDMsIDExOCwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyNTUsIDI2LCAzMCwgMTYyLCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNTUsIDI2LCAKKyAgICAzMCwgMjM2LCA5LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIyMCwgNDgsIAorICAgIDE1LCA1LCAyNTUsIDI2LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyNTUsIDI2LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjU1LCAyMywgMTUsIDUsIDI1NSwgMjQsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIyMCwgCisgICAgMTAwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIxNywgNzIsIDE1LCA1LCAyNTQsIDI1NSwgMTUsIDUsIDI1NCwgMTg2LCAxNSwgCisgICAgNSwgMjU0LCAxODcsIDMwLCAyNDUsIDg3LCAxNSwgNSwgMjU0LCAxODcsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTAsIDE1LCAKKyAgICA1LCAyNTQsIDE3OCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI0NywgCisgICAgMjE2LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNDIsIDE5MCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMTYyLCAxNSwgNSwgMjU0LCAKKyAgICAxNzksIDMwLCAyMzQsIDI1NSwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgCisgICAgMjIwLCA2MywgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNTQsIDE3NSwgMTUsIDUsIDI1NCwgMTY4LCAKKyAgICAxNSwgNSwgMjU0LCAxMzIsIDE1LCA1LCAyNTQsIDEzMywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNTQsIDEyMywgMTUsIDUsIAorICAgIDI1NCwgMTI0LCAxMTcsIDI1NCwgMTIzLCAxNSwgNSwgMjU0LCAxMjQsIDEzNCwgMjE2LCA4NSwgMTUsIDUsIDI1NCwgMTI0LCAKKyAgICA5NiwgMjI5LCAyMTcsIDIyNiwgMTY0LCAyNTQsIDEyNCwgOTYsIDIyOSwgMjE2LCAxNSwgNSwgMjU0LCAxMjQsIDk2LCAyMjksIAorICAgIDIxNywgMjE4LCAyMzMsIDE1LCA1LCAyNTQsIDk0LCAxNSwgNSwgMjU0LCA2NywgMTUsIDUsIDI1NCwgMzUsIDE1LCA1LCAKKyAgICAyNTQsIDM2LCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyNTQsIDgsIDE1LCA1LCAyNTMsIDIzNiwgMTUsIDUsIDI1MywgMjMxLCAKKyAgICAxNSwgNSwgMjUzLCAyMzIsIDIxMCwgNDAsIDIxNiwgMjM5LCAxNSwgNSwgMjUzLCAyMzIsIDIzNSwgMywgMjE2LCAyMzksIAorICAgIDE1LCA1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMjE1LCAxMTQsIDExNywgMjE1LCAxMTQsIDIxNSwgMTE0LCAxMTcsIAorICAgIDIxNSwgMTE0LCAyMjYsIDIxLCAxNSwgNSwgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDExNywgMjUzLCAyMzEsIDE1LCA1LCAKKyAgICAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMjQ5LCAxMjUsIDI1MywgMjMyLCAxMTcsIDI1MywgCisgICAgMjMyLCAxMTcsIDI1MywgMjMxLCAxNSwgNSwgMjUzLCAyMjksIDE1LCA1LCAyNTMsIDIyNiwgMTUsIDUsIDI1MiwgMTkxLCAKKyAgICAxNSwgNSwgMjUyLCAxNzYsIDE1LCA1LCAyNTIsIDE3MSwgMTUsIDUsIDI1MiwgMTY3LCAxNSwgNSwgMjUyLCAxNjEsIDE1LCAKKyAgICA1LCAyNTIsIDE2MiwgMTE3LCAyNTIsIDE2MSwgMTUsIDUsIDI1MiwgMTYwLCAxNSwgNSwgMTMwLCAxNSwgNSwgMjUyLCAxNDAsIAorICAgIDE1LCA1LCAyNTIsIDYsIDE1LCA1LCAyNTIsIDcsIDMwLCA2MSwgMTUsIDUsIDI1MiwgNywgMzAsIDI0MywgOTYsIDE1LCA1LCAKKyAgICAyNTIsIDcsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjUxLCAxMjUsIDE1LCA1LCAyNTEsIDEyNiwgMTE3LCAyNTEsIAorICAgIDEyNiwgMjU1LCAyNSwgMTUsIDUsIDI1MSwgMTI2LCAxMTcsIDI1MSwgMTI2LCAyMTQsIDE5MCwgMTUsIDUsIDI1MSwgMTI2LCAKKyAgICAyNDksIDEyNSwgMjUxLCAxMjUsIDE1LCA1LCAyNTEsIDEwOSwgMTUsIDUsIDI1MSwgMTEwLCAxMTcsIDI1MSwgMTA5LCAxNSwgCisgICAgNSwgMjUxLCA5OCwgMTUsIDUsIDI1MSwgOTcsIDE1LCA1LCAyNDgsIDIyMSwgMTUsIDUsIDI0OCwgMjEyLCAxNSwgNSwgMjQ4LCAKKyAgICAyMTMsIDIzNCwgNjYsIDMwLCAxMTUsIDk2LCAyMzEsIDE0NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjU0LCAKKyAgICAxMzIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIAorICAgIDMwLCAyNTIsIDYsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgCisgICAgNjYsIDMwLCAyNDMsIDEzNiwgOTYsIDIzMSwgMTQ3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDIsIDIxNCwgCisgICAgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIAorICAgIDI0MiwgMTAzLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAxNjIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgCisgICAgMzAsIDIzNSwgMTc5LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzUsIDE4MCwgOTYsIDIzMiwgOTgsIDE1LCA1LCAKKyAgICAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzMsIDEzNSwgCisgICAgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCA5OCwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCAKKyAgICA5OSwgOTYsIDIzMSwgMTQ2LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIDg0LCAxNSwgNSwgMjQ4LCAyMTMsIAorICAgIDIzNCwgNjYsIDMwLCAyMjksIDEwNywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjI2LCAyMiwgOTYsIDIyNiwgCisgICAgMjEsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxOSwgMTkxLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAKKyAgICAyMTcsIDcyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTQsIDIzMSwgOTYsIDI0MiwgMTk3LCAxNSwgNSwgCisgICAgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDI0OCwgMTg3LCAxNSwgNSwgMjQ4LCAxNjYsIDE1LCA1LCAKKyAgICAyNDgsIDE2NSwgMTUsIDUsIDI0OCwgMTY0LCAxNSwgNSwgMjQ4LCAzLCAxNSwgNSwgMjQ3LCAyNDIsIDE1LCA1LCAyNDcsIAorICAgIDIxNywgMTUsIDUsIDI0NywgMjE4LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0NywgMjE2LCAxNSwgNSwgMjQ3LCAyMDYsIDE1LCAKKyAgICA1LCAyNDcsIDIwNywgMjM0LCAyMDgsIDEwNCwgMjQyLCA5NSwgMjQ3LCAxODcsIDE1LCA1LCAyNDcsIDE4NywgMTUsIDUsIAorICAgIDI0NiwgNzgsIDE1LCA1LCAyNDYsIDc5LCAxMTcsIDI0NiwgNzgsIDE1LCA1LCAyNDYsIDc5LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjQ2LCA3OSwgMjIwLCA0NSwgMTUsIDUsIDI0NiwgNzYsIDE1LCA1LCAyNDYsIDc3LCAzMCwgMjQ1LCA3MiwgMTUsIDUsIAorICAgIDI0NiwgNzUsIDE1LCA1LCAyNDYsIDc0LCAxNSwgNSwgMjQ2LCA3MywgMTUsIDUsIDI0NiwgNzIsIDE1LCA1LCAyNDYsIDY4LCAKKyAgICAxNSwgNSwgMjQ2LCA2NiwgMTUsIDUsIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAyNDYsIDY3LCAyNDIsIDk1LCAyNDIsIAorICAgIDk0LCAxNSwgNSwgMjQ2LCA2NSwgMTUsIDUsIDI0NiwgNTgsIDE1LCA1LCA3NSwgMTUsIDUsIDE2MCwgMzAsIDIyNiwgMjEsIAorICAgIDE1LCA1LCAxNjAsIDExNywgMTYwLCAyMjcsIDE5NSwgMTE3LCAyMjcsIDE5NCwgMTUsIDUsIDI0NSwgMjM0LCAxNSwgNSwgCisgICAgMjQ1LCAyMzUsIDMwLCAxMTUsIDk2LCAyNDIsIDQ5LCA5NiwgMjQ4LCAyMjEsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDI0MywgCisgICAgOTYsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyMjIsIDgsIDE1LCA1LCAKKyAgICAyNDUsIDIzNSwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDcwLCAxNSwgNSwgMjQ1LCAyMTEsIDE1LCA1LCAKKyAgICAyNDUsIDIwMCwgMTUsIDUsIDI0NSwgMTc0LCAxNSwgNSwgMjQ1LCAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDI0MywgCisgICAgMTA0LCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDIzMSwgCisgICAgOTEsIDE1LCA1LCAyNDUsIDE1MSwgMjQ5LCAxMjUsIDI0NSwgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDIyNiwgMTY0LCAyNDUsIAorICAgIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAyMTgsIDIzMywgMTUsIDUsIDI0NSwgODksIDE1LCA1LCAyNDUsIDg3LCAxNSwgNSwgCisgICAgMjQ1LCA3MiwgMTUsIDUsIDI0NSwgMTAsIDE1LCA1LCAyNDUsIDExLCAzMCwgNjEsIDE1LCA1LCAyNDUsIDExLCAzMCwgMTE1LCAKKyAgICA5NiwgMjMzLCAxMDQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMTE1LCA5NiwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIAorICAgIDI0NSwgMTEsIDMwLCAyNTQsIDEyMywgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI0NiwgNjcsIDI0MiwgOTUsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNDUsIDExLCAzMCwgMTYyLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI0MiwgNDksIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAKKyAgICAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzQsIDIwNywgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzQsIDIwOCwgMjE4LCAyMzMsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMzLCAyMTUsIDE1LCA1LCAyNDUsIDExLCAzMCwgCisgICAgMjMzLCAxMzUsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzIsIDI0MSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIxNCwgMjMwLCAxNSwgCisgICAgNSwgMjQ1LCAxMSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNiwgMjQyLCA5NCwgMTUsIAorICAgIDUsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxMTUsIDk2LCAyNDgsIDIyMiwgOTYsIDE2MiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMTE1LCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxMTUsIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNTUsIDI0LCAyMTYsIDI0MCwgOTYsIDIxNywgOTMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1NCwgMTIzLCAKKyAgICAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTMsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUzLCAyMzAsIDk2LCAyNDMsIAorICAgIDExOCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MiwgMTQxLCA5NiwgCisgICAgMjA1LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTEsIDk4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTEsIDk5LCA5NiwgMjA1LCAKKyAgICAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDgsIDIyMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ4LCAzLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDcsIDIxOCwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NiwgNzYsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0NSwgMTc0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDUsIDE3NSwgOTYsIDIzMywgMTM1LCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyNDUsIDE1MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ1LCAxNTEsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAyMTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMjEyLCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyNDIsIDIxMywgOTYsIDYxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDE5OCwgOTYsIDIxOCwgCisgICAgODMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgNDksIDk2LCAyMzIsIDk5LCA5NiwgMjQ1LCA3MiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQyLCAzMCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAzMSwgOTYsIDIzMywgMTM1LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDEsIDE4MSwgOTYsIDIzMiwgMjQxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDAsIDIxOCwgMTUsIDUsIAorICAgIDI0MywgMTM0LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM1LCAxNjYsIDk2LCAyNDAsIAorICAgIDIyMywgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCisgICAgMjM0LCAyMDcsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgODksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgOTAsIDk2LCAKKyAgICAyMzMsIDEwNCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjMzLCAyMTYsIDk2LCAyNTQsIDEyMywgMTUsIDUsIDI0MywgMTM0LCAKKyAgICAzMCwgMjMzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMjcsIDE5NSwgMTE3LCAyMjcsIDE5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTkwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMjIsIDgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMSwgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDYzLCAxNSwgCisgICAgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDY0LCA5NiwgMjE1LCA5OCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIwLCAzMCwgMTUsIAorICAgIDUsIDI0MywgMTM0LCAzMCwgMjE4LCA0MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDI0MywgMTM0LCAKKyAgICAzMCwgNzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTQsIDIyMCwgOTYsIAorICAgIDI0NiwgNzgsIDE1LCA1LCAyNDMsIDEzNCwgMTE3LCAyNDMsIDEzMywgMTUsIDUsIDI0MywgMTI4LCAxNSwgNSwgMjQzLCAKKyAgICAxMjksIDI0OSwgMTI1LCAyNDMsIDEyOCwgMTUsIDUsIDI0MywgMTI2LCAxNSwgNSwgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIAorICAgIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDI0MywgMTE4LCAxNSwgNSwgMjQzLCAxMTksIDI0MywgMTI3LCAxMTcsIAorICAgIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAyNDMsIDExNywgMTUsIDUsIDI0MywgMTE1LCAxNSwgNSwgCisgICAgMjQzLCAxMDYsIDE1LCA1LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MywgMTA1LCAKKyAgICAxMTcsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCAxMDUsIDI0OSwgMTI1LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgOTYsIDE1LCAKKyAgICA1LCAyNDMsIDk1LCAxNSwgNSwgMjQzLCA5MCwgMTUsIDUsIDI0MywgMzYsIDE1LCA1LCAyNDMsIDM3LCAzMCwgMjMzLCAxOTYsIAorICAgIDE1LCA1LCAyNDIsIDIxNCwgMTUsIDUsIDI0MiwgMjE1LCAzMCwgNzUsIDE1LCA1LCAyNDIsIDIxNSwgMzAsIDcwLCAxNSwgNSwgCisgICAgMjQyLCAyMTUsIDI0OSwgMTI1LCAyNDIsIDIxNCwgMTUsIDUsIDI0MiwgMjEyLCAxNSwgNSwgMjQyLCAyMTMsIDExNywgMjQyLCAKKyAgICAyMTIsIDE1LCA1LCAyNDIsIDIxMywgMjQ5LCAxMjUsIDI0MiwgMjEyLCAxNSwgNSwgMjQyLCAyMDksIDE1LCA1LCAyNDIsIAorICAgIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAxOTUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDExNSwgCisgICAgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MiwgMTk2LCAKKyAgICAzMCwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMjMyLCA5OSwgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgCisgICAgMzAsIDE5MCwgMTUsIDUsIDI0MiwgMTkyLCAxNSwgNSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMjQ5LCAxMjUsIAorICAgIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0MiwgMTkxLCAzMCwgMjE3LCA3MiwgCisgICAgMTUsIDUsIDI0MiwgMTkxLCAyMTYsIDIzOSwgMTUsIDUsIDI0MiwgMTEzLCAxNSwgNSwgMjQyLCAxMTQsIDI0OSwgMTI1LCAKKyAgICAyNDIsIDExMywgMTUsIDUsIDI0MiwgMTExLCAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0MiwgCisgICAgMTEyLCAzMCwgMjM0LCAyNDMsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMjcsIDE5NCwgCisgICAgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjIyLCA5LCA5NiwgMjE1LCAxMTMsIDE1LCA1LCAyNDIsIDExMiwgMjQyLCA5NCwgMTUsIAorICAgIDUsIDI0MiwgMTAzLCAxNSwgNSwgMjQyLCAxMDQsIDMwLCAxMTUsIDk2LCAyMzMsIDE5NiwgMTUsIDUsIDI0MiwgMTA0LCAzMCwgCisgICAgMjMzLCAxOTYsIDE1LCA1LCAyNDIsIDEwNCwgMTE3LCAyNDIsIDEwNCwgMjMyLCA5MSwgMTUsIDUsIDI0MiwgOTgsIDE1LCA1LCAKKyAgICAyNDIsIDk2LCAxNSwgNSwgMjQyLCA5NywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDIsIDg4LCAxNSwgNSwgMjQyLCA4NywgMTUsIAorICAgIDUsIDI0MiwgODQsIDE1LCA1LCAyNDIsIDgzLCAxNSwgNSwgMTYyLCAxNSwgNSwgMjQyLCA0OSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyNDIsIDQ5LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAzMCwgMTUsIDUsIDI0MSwgMTgwLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAKKyAgICAyNTMsIDIzMSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI1MiwgMTc2LCAKKyAgICAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNDcsIDE4NywgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjQzLCAxMjYsIDE1LCA1LCAyNDEsIAorICAgIDE4MSwgMzAsIDIzNCwgODEsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAKKyAgICAyMjAsIDYzLCAxNSwgNSwgMjQxLCAxODEsIDMwLCA3MCwgMTUsIDUsIDI0MCwgMjIyLCAxNSwgNSwgMjQwLCAyMTgsIDE1LCAKKyAgICA1LCAyNDAsIDIxOSwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjQwLCAyMTksIAorICAgIDMwLCAyMzQsIDIwNywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjMyLCAxOTcsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDIxNCwgCisgICAgMjE5LCAxNSwgNSwgMjQwLCAyMTUsIDE1LCA1LCA3MywgMTUsIDUsIDI0MCwgMTU0LCA2MSwgMTUsIDUsIDI0MCwgMTE1LCAKKyAgICAxNSwgNSwgMjM2LCA2MywgMTUsIDUsIDIzNiwgNjQsIDExNywgMjM2LCA2NCwgMjUxLCA5OCwgMTUsIDUsIDIzNiwgNjQsIAorICAgIDExNywgMjM2LCA2NCwgMjE4LCAyMzMsIDE1LCA1LCAyMzYsIDM4LCAxNSwgNSwgMjM2LCAzNSwgMTUsIDUsIDIzNiwgMzYsIAorICAgIDI0NywgMjQyLCAxNSwgNSwgMjM2LCAzNiwgMjIzLCAzNSwgMTUsIDUsIDIzNiwgMzYsIDExNywgMjM2LCAzNiwgMjIwLCAxNCwgCisgICAgMTE3LCAyMjAsIDE0LCAyMTQsIDIyMCwgMTE3LCAyMTQsIDIxOSwgMTUsIDUsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyMzYsIDI3LCAxNSwgNSwgMjM2LCAyOCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIzNiwgMjYsIDE1LCA1LCAKKyAgICAyMzYsIDE2LCAxNSwgNSwgMjM2LCAxNywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMzYsIDE3LCAyNDksIDEyNSwgMjM2LCAxNiwgCisgICAgMTUsIDUsIDIzNiwgMTcsIDIyNiwgMTY0LCAyMzYsIDE2LCAxNSwgNSwgMjM2LCAxNywgMjE4LCAyMzMsIDE1LCA1LCAyMzYsIAorICAgIDksIDE1LCA1LCAyMzUsIDI1NSwgMTUsIDUsIDIzNSwgMTc5LCAxNSwgNSwgMjM1LCAxNjUsIDE1LCA1LCAxNzYsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgNjEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjU0LCAyNTUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjU1LCAKKyAgICAwLCA5NiwgMjMzLCAyMTUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUyLCAKKyAgICAxNzYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMTMwLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDI1MiwgNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDUsIDg3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0NSwgNzIsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCAxMTgsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgOTYsIDE1LCA1LCAyMzUsIDEzLCAKKyAgICAzMCwgMjQzLCA5NywgOTYsIDIyMCwgMTAxLCA5NiwgNjEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAyMTQsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAxOTEsIDk2LCAyMjEsIDIzMSwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyNDIsIDE5MSwgMjQ5LCAxMjUsIDI0MiwgMTkwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMTEzLCAKKyAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgODcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIzNSwgMTMsIAorICAgIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgOTIsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCA4OSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzIsIDI0MSwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgOTEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCAKKyAgICA5MiwgOTYsIDI0NiwgNzgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCA5MiwgOTYsIDI0MiwgMjE0LCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMSwgOTIsIDk2LCAyMTcsIDIyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMCwgMjMxLCA5NiwgMjI3LCAxODksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjI1LCAxMDgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIyLCAKKyAgICAxNDAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjA2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMSwgMjMxLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIyMCwgMTAyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIwLCAKKyAgICAzMCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTksIDIyNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTksIDE4MiwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyMTgsIDUxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNywgNTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgCisgICAgNzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjE0LCAxOTMsIDMwLCAxOTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjEwLCA0NCwgMTUsIDUsIDIzNSwgMTEsIDE1LCA1LCAyMzUsIDEyLCAyNDksIDEyNSwgMjM1LCAxMSwgMTUsIAorICAgIDUsIDIzNSwgNCwgMTUsIDUsIDIzNSwgMSwgMTUsIDUsIDIzNCwgMjU1LCAxNSwgNSwgMjM0LCAyNTQsIDE1LCA1LCAyMzQsIAorICAgIDI1MiwgMTUsIDUsIDIzNCwgMjUzLCAxMTcsIDIzNCwgMjUyLCAxNSwgNSwgMjM0LCAyNDIsIDE1LCA1LCAyMzQsIDI0MywgCisgICAgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMzQsIDIzOCwgMTUsIDUsIDIzNCwgMjM5LCAzMCwgMjUyLCAxNzYsIDE1LCAKKyAgICA1LCAyMzQsIDIzOSwgMjQ5LCAxMjUsIDIzNCwgMjM4LCAxNSwgNSwgMjM0LCAyMzYsIDE1LCA1LCAyMzQsIDIzNSwgMTUsIDUsIAorICAgIDIzNCwgMjA3LCAxNSwgNSwgMjM0LCAyMDgsIDIzMywgMTE4LCAzMCwgMTA0LCAxMTcsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCAKKyAgICA1LCAyMzQsIDIwOCwgMTE3LCAyMzQsIDIwOCwgMjMzLCAxMTgsIDMwLCAxMDQsIDExNywgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIAorICAgIDUsIDIzNCwgMTU3LCAxNSwgNSwgMjM0LCA5MiwgMTUsIDUsIDIzNCwgOTMsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzNCwgCisgICAgOTMsIDMwLCA3MCwgMTUsIDUsIDIzNCwgOTMsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzNCwgODksIDE1LCA1LCAyMzQsIDgxLCAKKyAgICAxNSwgNSwgMjM0LCA2OCwgMTUsIDUsIDIzNCwgNjcsIDE1LCA1LCAyMzQsIDY1LCAxNSwgNSwgMjM0LCA2NiwgMTE3LCAyMzQsIAorICAgIDY1LCAxNSwgNSwgMjMzLCAyMTcsIDE1LCA1LCAyMzMsIDIxOCwgMTE3LCAyNDEsIDE4MSwgMzAsIDI1MywgMjMwLCAyMzMsIAorICAgIDIxOCwgMTE3LCAyNDEsIDE4MSwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDIxMywgMTUsIAorICAgIDUsIDIzMywgMjE0LCAyMTQsIDEyLCAxNywgMTUsIDUsIDIzMywgMjEyLCAxNSwgNSwgMjMzLCAyMDksIDE1LCA1LCAyMzMsIAorICAgIDIxMCwgMjQyLCA5NCwgMTUsIDUsIDIzMywgMjA4LCAxNSwgNSwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDE5NywgMjI2LCAKKyAgICAxNjQsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxOTEsIDE1LCA1LCAyMzMsIDE3MiwgMTUsIDUsIDIzMywgMTM1LCAxNSwgNSwgCisgICAgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMTUsIDk2LCAyNDgsIAorICAgIDIyMiwgOTYsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTE1LCA5NiwgMjQzLCA5NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMTE1LCA5NiwgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyNTQsIDEyMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjUzLCAyMzIsIDIxMCwgNDAsIDIxNiwgMjM5LCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDgsIAorICAgIDE2NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQ1LCAxNTAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MywgMTM1LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDIsIDEwMywgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjQyLCAxMDQsIDk2LCAyNDIsIDEwMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDEsIDE4MSwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMzYsIDE3LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzYsIDE3LCA5NiwgMjMyLCA5OCwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM0LCA4MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMjA5LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDIxMCwgCisgICAgOTYsIDI0MSwgMTgxLCA5NiwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyMzIsIDE5NywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMyLCA5OCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMyLCA4NiwgMTUsIAorICAgIDUsIDIzMywgMTE4LCAzMCwgMjMxLCA5MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMzAsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjIwLCA2NCwgOTYsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MSwgOTYsIAorICAgIDI0NSwgODcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMzAsIDIxOSwgMjIzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTksIDIyNCwgOTYsIDIxOSwgMjIzLCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTcsIDg0LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTcsIDIzLCA5NiwgMTE1LCA5NiwgMjE4LCA4NCwgOTYsIDE5NywgCisgICAgMTUsIDUsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIAorICAgIDIzMSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDIxOCwgMjMzLCAxNSwgNSwgMjMzLCAxMTUsIDE1LCA1LCAyMzMsIDExNiwgMzAsIDIyMCwgNjMsIDE1LCA1LCAKKyAgICAyMzMsIDExNiwgMzAsIDIyMCwgNjQsIDk2LCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTYsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIAorICAgIDExNiwgMjQyLCA5NSwgMTE3LCAyMzMsIDExNiwgMjQyLCA5NSwgMjIwLCA2MywgMTUsIDUsIDIzMywgMTExLCAxNSwgNSwgCisgICAgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMDIsIDE1LCA1LCAyMzMsIAorICAgIDEwMywgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxMDMsIDMwLCAyMzMsIDE5NywgOTYsIDIyMiwgMTQwLCAxNSwgNSwgCisgICAgMjMyLCAyNDEsIDE1LCA1LCAyMzIsIDIyNiwgMTUsIDUsIDIzMiwgMjE2LCAxNSwgNSwgMjMyLCAxOTcsIDE1LCA1LCAyMzIsIAorICAgIDk4LCAxNSwgNSwgMjMyLCA5OSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAKKyAgICAyNTQsIDE3OCwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDUsIDcyLCAxNSwgCisgICAgNSwgMjMyLCA5NywgMzAsIDI0NSwgNzMsIDIxNiwgMjM5LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDEsIDE4MSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNiwgCisgICAgMTYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM1LCAxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNCwgMjU1LCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIzNSwgMCwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjMzLCAxMzYsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjI3LCAyMzcsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjE5LCAxOTIsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMTksIDE3NCwgOTYsIDI1MSwgMTI1LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIxNSwgMTEzLCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMjE2LCAyMzksIDE1LCA1LCAyMzIsIDk3LCAyNDksIDEyNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIyNiwgCisgICAgMTY0LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMjE4LCAyMzMsIDE1LCA1LCAyMzIsIDk3LCAyMjAsIDQ1LCAxNSwgNSwgCisgICAgMjMyLCA5NSwgMTUsIDUsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAxMTcsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAKKyAgICAyMjYsIDE2NCwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIDIyMCwgNDUsIDE1LCA1LCAyMzIsIDg5LCAxNSwgNSwgMjMyLCAKKyAgICA4NiwgMTUsIDUsIDIzMiwgODQsIDE1LCA1LCAyMzIsIDg1LCAxMTcsIDIzMiwgODQsIDE1LCA1LCAyMzIsIDg1LCAxMTcsIAorICAgIDIzMiwgODUsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDE4NCwgMTUsIDUsIDIzMSwgMjM5LCAzMCwgMjE3LCA3MiwgCisgICAgMTUsIDUsIDIzMSwgMjM5LCAyNDIsIDk0LCAxNSwgNSwgMjMxLCAyMzgsIDE1LCA1LCAyMzEsIDIxMCwgMTUsIDUsIDIzMSwgCisgICAgMTY2LCAxNSwgNSwgMjMxLCAxNDcsIDE1LCA1LCAyMzEsIDE0NiwgMTUsIDUsIDIzMSwgOTEsIDE1LCA1LCAyMzEsIDQ3LCAKKyAgICAxNSwgNSwgMjMwLCAyMzAsIDE1LCA1LCAyMzAsIDE4OCwgMTUsIDUsIDIzMCwgMTAyLCAxNSwgNSwgMjMwLCAxMDMsIDExNywgCisgICAgMjMwLCAxMDIsIDE1LCA1LCAyMzAsIDkzLCAxNSwgNSwgMjMwLCA5NCwgMjQyLCA5NCwgMTUsIDUsIDIzMCwgNzgsIDE1LCA1LCAKKyAgICAyMzAsIDY0LCAxNSwgNSwgMjMwLCA2MSwgMTUsIDUsIDIzMCwgNjIsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjIsIDMwLCAyMzMsIAorICAgIDE5NiwgMTUsIDUsIDIzMCwgNjIsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIzMCwgNjIsIDExNywgMjMwLCA2MSwgMTUsIDUsIAorICAgIDIzMCwgNjIsIDExNywgMjMwLCA2MiwgMzAsIDExNSwgOTYsIDE5NywgMTUsIDUsIDIzMCwgNjIsIDI0OSwgMTI1LCAyMzAsIAorICAgIDYxLCAxNSwgNSwgMjMwLCA1OSwgMTUsIDUsIDIzMCwgNjAsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjAsIDMwLCAxMTUsIDk2LCAKKyAgICAyNDgsIDMsIDE1LCA1LCAyMzAsIDYwLCAzMCwgMjQ4LCAzLCAxNSwgNSwgMjMwLCA2MCwgMjQyLCA5NCwgMTUsIDUsIDE5NywgCisgICAgMTUsIDUsIDIyOSwgMjI3LCAxNSwgNSwgMjI5LCAyMTYsIDE1LCA1LCAyMjksIDIxNywgMjM1LCAxOTIsIDE1LCA1LCAyMjksIAorICAgIDIxNywgMzAsIDIxOSwgMjI2LCAyMTYsIDIzOSwgMTUsIDUsIDIyOSwgMjE3LCAyMjYsIDE2NCwgMjI5LCAyMTYsIDE1LCA1LCAKKyAgICAyMjksIDIxNSwgMTUsIDUsIDIyOSwgMjA4LCAyMjcsIDE4MCwgMTUsIDUsIDIyOSwgMjA3LCAxNSwgNSwgMjI5LCAyMDYsIAorICAgIDE1LCA1LCAyMjksIDEwNywgMTUsIDUsIDIyOSwgMTA4LCAzMCwgNjEsIDE1LCA1LCAyMjksIDEwOCwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjI5LCAxMDgsIDIyMCwgNDUsIDE1LCA1LCAyMjgsIDIzMywgMTUsIDUsIDIyOCwgMjM0LCAzMCwgNzUsIDE1LCAKKyAgICA1LCAyMjgsIDIzMiwgMTUsIDUsIDIyOCwgMjAzLCAxNSwgNSwgMjI4LCAyMDQsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIAorICAgIDE1LCA1LCAyMjgsIDIwNCwgMzAsIDI0MywgOTcsIDk2LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMjgsIDIwMSwgCisgICAgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAKKyAgICAyMDIsIDMwLCAyNTMsIDIzMiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNDIsIDEwMywgMTUsIDUsIAorICAgIDIyOCwgMjAyLCAzMCwgMjMxLCA5MiwgOTYsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjI5LCAKKyAgICAxMDcsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDYzLCAxNSwgNSwgCisgICAgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCA5NiwgMTE1LCAyNTQsIDEyMywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgCisgICAgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCA5NiwgMjUzLCAyMzIsIDk2LCAyNTMsIDIzMSwgCisgICAgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjE0LCAKKyAgICAxMjYsIDE1LCA1LCAyMjgsIDE5MCwgMTUsIDUsIDIyNywgMjM3LCAxNSwgNSwgMjI3LCAyMTAsIDE1LCA1LCAyMjcsIDE5NCwgCisgICAgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAKKyAgICAyMzEsIDE0NywgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyNywgMTk1LCAyMzMsIAorICAgIDExNiwgMzAsIDIyMiwgOSwgMTE3LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjcsIDE5NSwgCisgICAgMjMzLCAxMTYsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk1LCAyMTYsIDIzOSwgMTUsIDUsIDIyNywgMTk1LCAxMTcsIAorICAgIDIyNywgMTk0LCAxNSwgNSwgMjI3LCAxOTUsIDI0OSwgMTI1LCAyMjcsIDE5NCwgMTUsIDUsIDIyNywgMTk1LCAyNDksIDEyNSwgCisgICAgMjI3LCAxOTUsIDIzMywgMTE2LCAxMTcsIDIzMywgMTE1LCAxNSwgNSwgMjI3LCAxODksIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAKKyAgICAyNCwgMzAsIDI1MywgMjI2LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMjcsIDE5MCwgCisgICAgMjU1LCAyNCwgMzAsIDI0NiwgNzQsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMjI3LCAKKyAgICAxOTAsIDI1NSwgMjQsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMzQsIAorICAgIDI1NSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjMzLCAxMzUsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgCisgICAgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMTksIDE3MSwgMTUsIDUsIDIyNywgMTkwLCAKKyAgICAyNTUsIDI0LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjcsIDE5MCwgMjM0LCA2NiwgMzAsIDI1MiwgNiwgMTUsIDUsIDIyNywgCisgICAgMTkwLCAyMzQsIDY2LCAzMCwgMjUyLCA3LCA3MCwgMTUsIDUsIDE5MCwgMTUsIDUsIDIyNiwgODAsIDE1LCA1LCAyMjYsIDQ3LCAKKyAgICAxNSwgNSwgMjI2LCAyMSwgMTUsIDUsIDIyNSwgMTYxLCAxNSwgNSwgMjI1LCAxMDgsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNTUsIDI1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNTIsIDYsIDE1LCA1LCAKKyAgICAyMjUsIDEwOSwgMzAsIDI1MSwgMTI1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3NSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzMsIAorICAgIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI0MCwgMTE1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3MCwgMTUsIDUsIDIyNSwgMTA5LCAKKyAgICAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjUsIDEwOSwgMjQ5LCAxMjUsIDIyNSwgMTA4LCAxNSwgNSwgMjI1LCA1MywgMTUsIDUsIAorICAgIDIyNSwgNTQsIDMwLCAyMzQsIDIzOCwgMTUsIDUsIDIyNSwgNTQsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIyNSwgNTQsIDMwLCAKKyAgICAyMTAsIDExNiwgMTUsIDUsIDIyNSwgNTQsIDIyNiwgMTY0LCAyMjUsIDUzLCAxNSwgNSwgMjA1LCAxNSwgNSwgMjIzLCAxODIsIAorICAgIDE1LCA1LCAyMjMsIDM1LCAxNSwgNSwgMjIyLCAxNDAsIDE1LCA1LCAyMDYsIDE1LCA1LCAyMjIsIDIyLCAyMjcsIDE4MCwgCisgICAgMTUsIDUsIDIyMiwgMjEsIDE1LCA1LCAyMjIsIDIyLCAzMCwgNjEsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjQ2LCA3OCwgMTUsIAorICAgIDUsIDIyMiwgMjIsIDMwLCAyNDYsIDc2LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDE2MiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAKKyAgICAyMzQsIDI0MiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMzIsIDg0LCAxNSwgCisgICAgNSwgMjIyLCAyMiwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjIyLCAyMiwgCisgICAgMzAsIDIyMiwgOCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMjAsIDMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNywgOTMsIDE1LCAKKyAgICA1LCAyMjIsIDIyLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAyMjUsIDE1LCA1LCAyMjIsIDIyLCAKKyAgICAzMCwgMjE0LCAxOTcsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAxNTAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAxMjYsIAorICAgIDE1LCA1LCAyMjIsIDIyLCAxMTcsIDIyMiwgMjEsIDE1LCA1LCAyMjIsIDIyLCAyNDIsIDk0LCAxNSwgNSwgMjIyLCA4LCAxNSwgCisgICAgNSwgMjIyLCA5LCAyMzMsIDExOCwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjIxLCAyMzksIDE1LCA1LCAyMjEsIDIzMSwgMTUsIAorICAgIDUsIDIyMCwgMTAyLCAxNSwgNSwgMjIwLCAxMDAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAxMDEsIAorICAgIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjQyLCAxOTAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIyOSwgCisgICAgMTA3LCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMTksIDIyMywgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjE1LCA5OCwgMTUsIDUsIAorICAgIDIyMCwgMTAxLCAzMCwgNzAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjIwLCA5OSwgMTUsIAorICAgIDUsIDIyMCwgOTcsIDE1LCA1LCAyMjAsIDc4LCAxNSwgNSwgMjIwLCA2MywgMTUsIDUsIDIyMCwgNjQsIDI0MCwgMjIyLCAxNSwgCisgICAgNSwgMjIwLCA2NCwgMTE3LCAyMjAsIDY0LCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAKKyAgICAxNSwgNSwgMjIwLCA2NCwgMTE3LCAyMjAsIDY0LCAyMTcsIDk0LCAxMTcsIDIxNywgOTQsIDI0MywgOTcsIDExNywgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDIyMCwgNTYsIDE1LCA1LCAyMjAsIDUxLCAxNSwgNSwgMjIwLCA0OCwgMTUsIDUsIDIyMCwgNDcsIDE1LCAKKyAgICA1LCAyMjAsIDQ0LCAxNSwgNSwgMjIwLCAzMCwgMTUsIDUsIDIyMCwgMzEsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMzEsIDMwLCAKKyAgICAyMzYsIDE2LCAxNSwgNSwgMjIwLCAyNCwgMTUsIDUsIDIyMCwgMjUsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNTIsIAorICAgIDE2MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNTEsIDEwOSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNDcsIDIwNiwgMTUsIDUsIAorICAgIDIyMCwgMjUsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMjAsIDI1LCAzMCwgCisgICAgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzMsIDE5MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzIsIAorICAgIDg2LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMCwgOTMsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjIwLCAKKyAgICAxOCwgMTUsIDUsIDIyMCwgMTMsIDE1LCA1LCAyMjAsIDE0LCAyMTYsIDIzOSwgMTUsIDUsIDIyMCwgMTQsIDExNywgMjIwLCAKKyAgICAxNCwgMjUxLCA5OSwgMTE3LCAyNTEsIDk4LCAxNSwgNSwgMjIwLCA5LCAxNSwgNSwgMjE5LCAyMjUsIDE1LCA1LCAyMTksIAorICAgIDIyNiwgMTE3LCAyMzUsIDE5MywgMjE5LCAyMjUsIDE1LCA1LCAyMTksIDIyMywgMTUsIDUsIDIxOSwgMjIyLCAxNSwgNSwgCisgICAgMjE5LCAxOTEsIDE1LCA1LCAyMTksIDE5MiwgMjQyLCA5NCwgMTUsIDUsIDIxOSwgMTgyLCAxNSwgNSwgMjE5LCAxODAsIDE1LCAKKyAgICA1LCAyMTksIDE4MSwgMTE3LCAyMTksIDE4MSwgMjE5LCAyMjMsIDE1LCA1LCAyMTksIDE3MywgMTUsIDUsIDIxOSwgMTcxLCAKKyAgICAxNSwgNSwgMjE4LCA4MywgMTUsIDUsIDIxOCwgODQsIDExNywgMjE4LCA4MywgMTUsIDUsIDIxOCwgNTQsIDE1LCA1LCAyMTgsIAorICAgIDUzLCAxNSwgNSwgMjE4LCA1MSwgMTUsIDUsIDIxOCwgNDMsIDE1LCA1LCAyMTgsIDQyLCAxNSwgNSwgMjE4LCAxNywgMTUsIAorICAgIDUsIDIxOCwgMTYsIDE1LCA1LCAyMTcsIDEwNSwgMTUsIDUsIDIxNywgMTA2LCAyNTMsIDIxNiwgMTUsIDUsIDIxNywgMTA2LCAKKyAgICAzMCwgMjQxLCAxODAsIDE1LCA1LCAyMTcsIDEwNiwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjE3LCAxMDYsIDI0MiwgOTQsIAorICAgIDE1LCA1LCAyMTcsIDkzLCAxNSwgNSwgMjE3LCA5NCwgMTE3LCAyMTcsIDk0LCAyMjgsIDIzNCwgMTE3LCAyMjgsIDIzNCwgCisgICAgMjQ3LCAxODgsIDExNywgMjQ3LCAxODcsIDE1LCA1LCAyMTcsIDk0LCAyMTgsIDIzMywgMTUsIDUsIDIxNywgODQsIDE1LCA1LCAKKyAgICAxMjksIDMwLCAyNTIsIDYsIDE1LCA1LCAxMjksIDMwLCAyNDIsIDEwMywgMTUsIDUsIDEyOSwgMzAsIDIyMCwgNjMsIDE1LCAKKyAgICA1LCAxMjksIDMwLCAyMTksIDIyNSwgMTUsIDUsIDEyOSwgMzAsIDIxNSwgMTEzLCAxNSwgNSwgMTI5LCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMTcsIDcyLCAxNSwgNSwgMjE3LCA1MCwgMTUsIDUsIDIxNywgMjIsIDE1LCA1LCAyMTcsIDIzLCAyNDIsIDk0LCAKKyAgICAxNSwgNSwgMjE2LCAxMTcsIDE1LCA1LCAyMTYsIDExOCwgMjE2LCAyMzksIDE1LCA1LCAyMTYsIDkwLCAxNSwgNSwgMjE2LCAKKyAgICA3MiwgMTUsIDUsIDIxNiwgNzMsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjE2LCA3MywgMTE3LCAyMTYsIDcyLCAxNSwgNSwgCisgICAgMjE2LCA3MywgMTE3LCAyMTYsIDczLCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAKKyAgICAxNSwgNSwgMjE1LCAxMTgsIDE1LCA1LCAyMTUsIDExMywgMTUsIDUsIDIxNSwgMTExLCAxNSwgNSwgMjE1LCAxMDgsIDE1LCAKKyAgICA1LCAyMTUsIDk4LCAxNSwgNSwgMjE1LCA5OSwgMTE3LCAyMTUsIDk5LCAyMTAsIDExNywgMTE3LCAyMTAsIDExNiwgMTUsIDUsIAorICAgIDcwLCAxNSwgNSwgMTA0LCAyNDIsIDEwMywgMTUsIDUsIDEwNCwgMTA0LCA3MCwgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDIyNiwgCisgICAgOTAsIDExNywgMjI2LCA5MCwgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMjE4LCAxOCwgCisgICAgMTE3LCAyMTgsIDE3LCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMTA0LCAyMjMsIDQ5LCAxMTcsIDEwNCwgMjIzLCA0OCwgMTUsIAorICAgIDUsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAyMjUsIDE1LCA1LCAyMTQsIDIxOSwgMTUsIDUsIDIxNCwgMjIwLCAyMzMsIDE5MSwgCisgICAgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjE0LCAKKyAgICAyMjAsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgCisgICAgMTA0LCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAyMjAsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDIyMCwgMjIwLCA0NSwgMTUsIDUsIAorICAgIDIxNCwgMjIwLCAyMjAsIDQ2LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMTQsIDIxNSwgMTUsIDUsIDIxNCwgMTk3LCAxNSwgNSwgCisgICAgMjE0LCAxOTgsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIxNCwgMTk4LCAzMCwgMjMxLCA5MiwgOTYsIDI0OCwgMjIxLCAxNSwgCisgICAgNSwgMjE0LCAxOTgsIDMwLCAyMjAsIDEwMCwgMTUsIDUsIDIxNCwgMTk4LCAzMCwgNzAsIDE1LCA1LCAyMTQsIDE5NiwgMTUsIAorICAgIDUsIDIxNCwgMTkyLCAxNSwgNSwgMjE0LCAxOTMsIDMwLCAyMzQsIDIwNywgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMTkwLCAxNSwgCisgICAgNSwgMjE0LCAxOTAsIDE1LCA1LCAyMTQsIDE5MSwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMTUwLCAxNSwgNSwgMjE0LCAxNTEsIAorICAgIDI0OSwgMTI1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyMjAsIDQ1LCAxNSwgNSwgMjE0LCAxNDgsIDE1LCA1LCAKKyAgICAyMTQsIDE0OSwgMzAsIDExNSwgOTYsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTE1LCA5NiwgMTk3LCAxNSwgNSwgCisgICAgMjE0LCAxNDksIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTYyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAKKyAgICAyMjcsIDE5NCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCAKKyAgICA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCA5NiwgMjUyLCA2LCAxNSwgNSwgMjE0LCAxNDcsIAorICAgIDE1LCA1LCAyMTQsIDE0NCwgMTUsIDUsIDIxNCwgMTQzLCAxNSwgNSwgMjE0LCAxMzksIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNTMsIDIyNiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTMwLCAxNSwgNSwgMjE0LCAKKyAgICAxNDAsIDMwLCAyNDYsIDY4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjQzLCAxMTgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjQzLCA5NiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQyLCAxMTMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE2MiwgMTUsIDUsIAorICAgIDIxNCwgMTQwLCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM2LCAxNiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjM1LCAxNjUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzMiwgODQsIDE1LCAKKyAgICA1LCAyMTQsIDE0MCwgMzAsIDIzMCwgMTg4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxOTAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDIyMCwgNjMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxOSwgMTgwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTUsIDExOCwgCisgICAgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTA0LCA5NiwgMjQyLCAxMDMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzgsIDMwLCA3MCwgCisgICAgMTUsIDUsIDIxNCwgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMTcsIAorICAgIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjE0LCAKKyAgICAxMjIsIDE1LCA1LCAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgCisgICAgMTUsIDUsIDIxNCwgMTA5LCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgMjEwLCAxMTcsIDIxNiwgMjM5LCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMTAsIDExMywgCisgICAgMTUsIDUsIDIxMCwgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTcsIAorICAgIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgMywgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyMTAsIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgCisgICAgNSwgMjEwLCAxMiwgMzAsIDYxLCAxNSwgNSwgMjEwLCAxMCwgMTUsIDUsIDIxMCwgOSwgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIAorICAgIDIzMSwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUzLCAyMzEsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODEsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIyMCwgCisgICAgMTIyLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjUzLCAKKyAgICAyMzEsIDE1LCAxMzIsIDUsIDEzNCwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI0NywgMTg3LCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgxLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjAsIAorICAgIDEyMiwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI0NywgCisgICAgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCA3MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgNzAsIDE1LCAxMzIsIDUsIDIxOSwgCisgICAgMTI1LCA3MCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDcwLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgNzAsIDE1LCAxMzIsIDUsIAorICAgIDIyOCwgMjAwLCA3MCwgMTUsIDEzMiwgNSwgMTIzLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzgsIDE1LCAKKyAgICAxMzIsIDUsIDEzNCwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgCisgICAgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyNDMsIDM4LCAKKyAgICAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI0MywgMzgsIDE1LCAxMzIsIDUsIAorICAgIDEyMywgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTEzLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMzQsIDI0MywgMzUsIDE1LCAKKyAgICAxMzIsIDUsIDI0NCwgMTEsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDExMywgCisgICAgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzksIDIxNCwgMTIsIDE3LCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAKKyAgICAyMTksIDEyNSwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAKKyAgICAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTIzLCAyMjAsIDczLCAxNSwgCisgICAgMTMyLCA1LCAxMTMsIDIyMCwgNzMsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3MywgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc0LCAKKyAgICAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjIwLCA3MywgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjIwLCA3MywgCisgICAgMTUsIDEzMiwgNSwgMjIwLCA3OSwgMzAsIDI0MywgMTE5LCA5NiwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyMCwgNzksIDMwLCAKKyAgICAyNDMsIDExOSwgOTYsIDIzMCwgMTg4LCAxNSwgMTMyLCA1LCAxMjMsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDExMywgMjUxLCAKKyAgICA5NSwgMTUsIDEzMiwgNSwgMTM0LCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTYsIDIxNCwgMTIsIDE3LCAxNSwgCisgICAgMTMyLCA1LCAyNDQsIDExLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMzQsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDI0NSwgNzQsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjQ1LCA3MSwgCisgICAgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE1LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIAorICAgIDIxOCwgNjEsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE4LCAyNTMsIDE1OCwgMTUsIAorICAgIDEzMiwgNSwgMjE5LCAxMjUsIDIxNCwgMTIsIDI0NCwgMjAsIDI1MywgMjI4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAKKyAgICAxMiwgMjQ0LCAyMCwgMjM2LCA4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAxMCwgNjEsIAorICAgIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDEwLCAyNTMsIDE1OCwgMTUsIDEzMiwgNSwgCisgICAgMjQ1LCAxOTMsIDIxNCwgMTIsIDI0NCwgMjAsIDIxNCwgMTIxLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjE0LCAxMiwgMjQ0LCAKKyAgICAyMCwgMjE0LCAxMjAsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDI0LCAxNSwgMTMyLCAKKyAgICA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAyMywgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIAorICAgIDI0NCwgMjAsIDIzNiwgMjIsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDI1LCA2MSwgCisgICAgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDEzNCwgMjUzLCAyMzIsIDIxNiwgMjM5LCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MywgMjMyLCAKKyAgICAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMTIzLCAyNTIsIAorICAgIDE1MCwgMTUsIDEzMiwgNSwgMTEzLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMTM0LCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgCisgICAgMjQ0LCAxMSwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MiwgMTUxLCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MSwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MiwgMTUxLCAyMTQsIDEyLCAxNywgMTUsIAorICAgIDEzMiwgNSwgMjI4LCAyMTAsIDE1LCAxMzIsIDUsIDIyOCwgMjExLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgNzAsIDE1LCAKKyAgICAxMzIsIDUsIDExMywgMjQ1LCA3MCwgMTUsIDEzMiwgNSwgMTIzLCAyMTYsIDE2OSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIAorICAgIDExMywgMjE2LCAxNjcsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMTksIDExNCwgMjQ3LCAxODcsIDE1LCAKKyAgICAxMzIsIDUsIDEyMywgMjE2LCAxNjksIDIxNCwgMTIsIDI0NCwgMjAsIDYxLCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY3LCAKKyAgICAyMTQsIDEyLCAyNDQsIDIwLCA2MSwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDE4OSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIAorICAgIDEyMywgMjI0LCAyMiwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDU1LCAyNTMsIDIxOSwgMTIzLCAyMTksIDExNSwgMTUsIDEzMiwgCisgICAgNSwgNTUsIDI1MywgMjE5LCAxMjMsIDIyNCwgMjEsIDE1LCAyMjQsIDE0MSwgNSwgNTUsIDI1MywgMjE5LCAyMTEsIDIwOSwgCisgICAgMjQ3LCAxNzIsIDE1LCAyMjQsIDE0MSwgNSwgNjcsIDI0OSwgMjI2LCAxNSwgMjI0LCAxNDEsIDUsIDI0NywgMjU1LCAyNDksIAorICAgIDIyNiwgMTUsIDIyNCwgMTQxLCA1LCAyNDcsIDI1NSwgMjE1LCAyMjEsIDEyLCAxMywgMjU1LCAxNTUsIDEyLCAxMywgMjU1LCAKKyAgICAxNTQsIDEyLCAxMywgMjU1LCAxNTMsIDEyLCAxMywgMjU1LCAxNTIsIDEyLCAxMywgMjU1LCAxNTEsIDEyLCAxMywgMjU1LCAKKyAgICAxNTAsIDEyLCAxMywgMjU1LCAxNDksIDEyLCAxMywgMjU1LCAxNDgsIDEyLCAxMywgMjU1LCAxNDcsIDEyLCAxMywgMjU1LCAKKyAgICAxNDYsIDEyLCAxMywgMjU1LCAxNDUsIDEyLCAxMywgMjU1LCAxNDQsIDEyLCAxMywgMjU1LCAxNDMsIDEyLCAxMywgMjU1LCAKKyAgICAxNDIsIDEyLCAxMywgMjU1LCAxNDEsIDEyLCAxMywgMjU1LCAxNDAsIDEyLCAxMywgMjU1LCAxMzksIDEyLCAxMywgMjU1LCAKKyAgICAxMzgsIDEyLCAxMywgMjU1LCAxMzcsIDEyLCAxMywgMjU1LCAxMzYsIDEyLCAxMywgMjU1LCAxMzUsIDEyLCAxMywgMjU1LCAKKyAgICAxMzQsIDEyLCAxMywgMjU1LCAxMzMsIDEyLCAxMywgMjU1LCAxMzIsIDEyLCAxMywgMjU1LCAxMzEsIDEyLCAxMywgMjU1LCAKKyAgICAxMzAsIDEyLCAxMywgMjU1LCAxMjksIDEyLCAxMywgMjU1LCAxMjgsIDEyLCAxMywgMjU1LCAxMjcsIDEyLCAxMywgMjU1LCAKKyAgICAxMjYsIDEyLCAxMywgMjU1LCAxMjUsIDEyLCAxMywgMjU1LCAxMjQsIDEyLCAxMywgMjU1LCAxMjMsIDEyLCAxMywgMjU1LCAKKyAgICAxMjIsIDEyLCAxMywgMjU1LCAxMjEsIDEyLCAxMywgMjU1LCAxMjAsIDEyLCAxMywgMjU1LCAxMTksIDEyLCAxMywgMjU1LCAKKyAgICAxMTgsIDEyLCAxMywgMjU1LCAxMTcsIDEyLCAxMywgMjU1LCAxMTYsIDEyLCAxMywgMjU1LCAxMTUsIDEyLCAxMywgMjU1LCAKKyAgICAxMTQsIDEyLCAxMywgMjU1LCAxMTMsIDEyLCAxMywgMjU1LCAxMTIsIDEyLCAxMywgMjU1LCAxMTEsIDEyLCAxMywgMjU1LCAKKyAgICAxMTAsIDEyLCAxMywgMjU1LCAxMDksIDEyLCAxMywgMjU1LCAxMDgsIDEyLCAxMywgMjU1LCAxMDcsIDEyLCAxMywgMjU1LCAKKyAgICAxMDYsIDEyLCAxMywgMjU1LCAxMDUsIDEyLCAxMywgMjU1LCAxMDQsIDEyLCAxMywgMjU1LCAxMDMsIDEyLCAxMywgMjU1LCAKKyAgICAxMDIsIDEyLCAxMywgMjU1LCAxMDEsIDEyLCAxMywgMjU1LCAxMDAsIDEyLCAxMywgMjU1LCA5OSwgMTIsIDEzLCAyNTUsIAorICAgIDk4LCAxMiwgMTMsIDI1NSwgOTcsIDEyLCAxMywgMjU1LCA5NiwgMTIsIDEzLCAyNTUsIDk1LCAxMiwgMTMsIDI1NSwgOTQsIAorICAgIDEyLCAxMywgMjU1LCA5MywgMTIsIDEzLCAyNTUsIDkyLCAxMiwgMTMsIDI1NSwgOTEsIDEyLCAxMywgMjU1LCA5MCwgMTIsIAorICAgIDEzLCAyNTUsIDg5LCAxMiwgMTMsIDI1NSwgODgsIDEyLCAxMywgMjU1LCA4NywgMTIsIDEzLCAyNTUsIDg2LCAxMiwgMTMsIAorICAgIDI1NSwgODUsIDEyLCAxMywgMjU1LCA4NCwgMTIsIDEzLCAyNTUsIDgzLCAxMiwgMTMsIDI1NSwgODIsIDEyLCAxMywgMjU1LCAKKyAgICA4MSwgMTIsIDEzLCAyNTUsIDgwLCAxMiwgMTMsIDI1NSwgNzksIDEyLCAxMywgMjU1LCA3OCwgMTIsIDEzLCAyNTUsIDc3LCAKKyAgICAxMiwgMTMsIDI1NSwgNzYsIDEyLCAxMywgMjUzLCAxNTYsIDEyLCAxMywgMjUzLCAxNTQsIDEyLCAxMywgMjUzLCAxNTIsIAorICAgIDEyLCAxMywgMjUzLCAxNTAsIDEyLCAxMywgMjUzLCAxNDgsIDEyLCAxMywgMjUzLCAxNDcsIDEyLCAxMywgMjUzLCAxNDUsIAorICAgIDEyLCAxMywgMjUzLCAxNDMsIDEyLCAxMywgMjUzLCAxNDEsIDEyLCAxMywgMjUzLCAxMzksIDEyLCAxMywgMjUxLCA2MiwgCisgICAgMTIsIDEzLCAyNTEsIDYxLCAxMiwgMTMsIDI1MSwgNjAsIDEyLCAxMywgMjUxLCA1OSwgMTIsIDEzLCAyNTEsIDU4LCAxMiwgCisgICAgMTMsIDI1MSwgNTcsIDEyLCAxMywgMjUxLCA1NiwgMTIsIDEzLCAyNTEsIDU1LCAxMiwgMTMsIDI1MSwgNTQsIDEyLCAxMywgCisgICAgMjUxLCA1MywgMTIsIDEzLCAyNTEsIDUyLCAxMiwgMTMsIDI1MSwgNTEsIDEyLCAxMywgMjUxLCA1MCwgMTIsIDEzLCAyNTEsIAorICAgIDQ5LCAxMiwgMTMsIDI1MSwgNDgsIDEyLCAxMywgMjUxLCA0NywgMTIsIDEzLCAyNTEsIDQ2LCAxMiwgMTMsIDI1MSwgNDUsIAorICAgIDEyLCAxMywgMjUxLCA0NCwgMTIsIDEzLCAyNTEsIDQzLCAxMiwgMTMsIDI1MSwgNDIsIDEyLCAxMywgMjUxLCA0MSwgMTIsIAorICAgIDEzLCAyNTEsIDQwLCAxMiwgMTMsIDI1MSwgMzksIDEyLCAxMywgMjUxLCAzOCwgMTIsIDEzLCAyNTEsIDM3LCAxMiwgMTMsIAorICAgIDI1MSwgMzYsIDEyLCAxMywgMjUxLCAzNSwgMTIsIDEzLCAyNDksIDU5LCAxMiwgMTMsIDI0OSwgNTgsIDEyLCAxMywgMjQ5LCAKKyAgICA1NywgMTIsIDEzLCAyNDksIDU2LCAxMiwgMTMsIDI0OSwgNTUsIDEyLCAxMywgMjQ5LCA1NCwgMTIsIDEzLCAyNDksIDUzLCAKKyAgICAxMiwgMTMsIDI0OSwgNTIsIDEyLCAxMywgMjQ5LCA1MSwgMTIsIDEzLCAyNDksIDUwLCAxMiwgMTMsIDI0OSwgNDksIDEyLCAKKyAgICAxMywgMjQ5LCA0OCwgMTIsIDEzLCAyNDksIDQ3LCAxMiwgMTMsIDI0OSwgNDYsIDEyLCAxMywgMjQ5LCA0NSwgMTIsIDEzLCAKKyAgICAyNDksIDQ0LCAxMiwgMTMsIDI0OSwgNDMsIDEyLCAxMywgMjQ5LCA0MiwgMTIsIDEzLCAyNDksIDQxLCAxMiwgMTMsIDI0OSwgCisgICAgNDAsIDEyLCAxMywgMjQ5LCAzOSwgMTIsIDEzLCAyNDksIDM4LCAxMiwgMTMsIDI0OSwgMzcsIDEyLCAxMywgMjQ5LCAzNiwgCisgICAgMTIsIDEzLCAyNDksIDM1LCAxMiwgMTMsIDI0OSwgMzQsIDEyLCAxMywgMjQ5LCAzMywgMTIsIDEzLCAyNDksIDMyLCAxMiwgCisgICAgMTMsIDI0OSwgMzEsIDEyLCAxMywgMjQ5LCAzMCwgMTIsIDEzLCAyNDksIDI5LCAxMiwgMTMsIDI0OSwgMjgsIDEyLCAxMywgCisgICAgMjQ5LCAyNywgMTIsIDEzLCAyNDksIDI2LCAxMiwgMTMsIDI0OSwgMjUsIDEyLCAxMywgMjQ5LCAyNCwgMTIsIDEzLCAyNDksIAorICAgIDIzLCAxMiwgMTMsIDI0OSwgMjIsIDEyLCAxMywgMjQ5LCAyMSwgMTIsIDEzLCAyNDksIDIwLCAxMiwgMTMsIDI0OSwgMTksIAorICAgIDEyLCAxMywgMjQ5LCAxOCwgMTIsIDEzLCAyNDksIDE3LCAxMiwgMTMsIDI0OSwgMTYsIDEyLCAxMywgMjQ5LCAxNSwgMTIsIAorICAgIDEzLCAyNDksIDE0LCAxMiwgMTMsIDI0OSwgMTMsIDEyLCAxMywgMjQ5LCAxMiwgMTIsIDEzLCAyNDksIDExLCAxMiwgMTMsIAorICAgIDI0OSwgMTAsIDEyLCAxMywgMjQ5LCA5LCAxMiwgMTMsIDI0OSwgOCwgMTIsIDEzLCAyNDksIDcsIDEyLCAxMywgMjQ5LCA2LCAKKyAgICAxMiwgMTMsIDI0OSwgNSwgMTIsIDEzLCAyNDksIDQsIDEyLCAxMywgMjQ5LCAzLCAxMiwgMTMsIDI0OSwgMiwgMTIsIDEzLCAKKyAgICAyNDksIDEsIDEyLCAxMywgMjQ5LCAwLCAxMiwgMTMsIDI0OCwgMjU1LCAxMiwgMTMsIDI0OCwgMjU0LCAxMiwgMTMsIDI0OCwgCisgICAgMjUzLCAxMiwgMTMsIDI0OCwgMjUyLCAxMiwgMTMsIDI0OCwgMjUxLCAxMiwgMTMsIDI0OCwgMjUwLCAxMiwgMTMsIDI0OCwgCisgICAgMjQ5LCAxMiwgMTMsIDI0OCwgMjQ4LCAxMiwgMTMsIDI0OCwgMjQ3LCAxMiwgMTMsIDI0OCwgMjQ2LCAxMiwgMTMsIDI0OCwgCisgICAgMjQ1LCAxMiwgMTMsIDI0OCwgMjQ0LCAxMiwgMTMsIDI0OCwgMjQzLCAxMiwgMTMsIDI0OCwgMjQyLCAxMiwgMTMsIDI0OCwgCisgICAgMjQxLCAxMiwgMTMsIDI0OCwgMjQwLCAxMiwgMTMsIDI0OCwgMjM5LCAxMiwgMTMsIDI0OCwgMjM4LCAxMiwgMTMsIDI0OCwgCisgICAgMjM3LCAxMiwgMTMsIDI0OCwgMjM2LCAxMiwgMTMsIDI0OCwgMjM1LCAxMiwgMTMsIDI0OCwgMjM0LCAxMiwgMTMsIDI0OCwgCisgICAgMjMzLCAxMiwgMTMsIDI0OCwgMjMyLCAxMiwgMTMsIDI0OCwgMjMxLCAxMiwgMTMsIDI0OCwgMjMwLCAxMiwgMTMsIDI0OCwgCisgICAgMjI5LCAxMiwgMTMsIDI0OCwgMjI4LCAxMiwgMTMsIDI0OCwgMjI3LCAxMiwgMTMsIDI0OCwgMjI2LCAxMiwgMTMsIDI0OCwgCisgICAgMjI1LCAxMiwgMTMsIDI0OCwgMjI0LCAxMiwgMTMsIDI0NiwgMjMsIDEyLCAxMywgMjQ2LCAyMiwgMTIsIDEzLCAyNDYsIDIxLCAKKyAgICAxMiwgMTMsIDI0NiwgMjAsIDEyLCAxMywgMjQ2LCAxOSwgMTIsIDEzLCAyNDYsIDE4LCAxMiwgMTMsIDI0NiwgMTcsIDEyLCAKKyAgICAxMywgMjQ2LCAxNiwgMTIsIDEzLCAyNDYsIDE1LCAxMiwgMTMsIDI0NiwgMTQsIDEyLCAxMywgMjQ2LCAxMywgMTIsIDEzLCAKKyAgICAyNDYsIDEyLCAxMiwgMTMsIDI0NiwgMTEsIDEyLCAxMywgMjQ2LCAxMCwgMTIsIDEzLCAyNDYsIDksIDEyLCAxMywgMjQ2LCAKKyAgICA4LCAxMiwgMTMsIDI0NiwgNywgMTIsIDEzLCAyNDYsIDYsIDEyLCAxMywgMjQ2LCA1LCAxMiwgMTMsIDI0NiwgNCwgMTIsIAorICAgIDEzLCAyNDYsIDMsIDEyLCAxMywgMjQ2LCAyLCAxMiwgMTMsIDI0NiwgMSwgMTIsIDEzLCAyNDYsIDAsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTUsIDEyLCAxMywgMjQ1LCAyNTQsIDEyLCAxMywgMjQ1LCAyNTMsIDEyLCAxMywgMjQ1LCAyNTIsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTEsIDEyLCAxMywgMjQ1LCAyNTAsIDEyLCAxMywgMjQ1LCAyNDksIDEyLCAxMywgMjQ1LCAyNDgsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDcsIDEyLCAxMywgMjQ1LCAyNDYsIDEyLCAxMywgMjQ1LCAyNDUsIDEyLCAxMywgMjQ1LCAyNDQsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDMsIDEyLCAxMywgMjQ1LCAyNDIsIDEyLCAxMywgMjQ1LCAyNDEsIDEyLCAxMywgMjQ1LCAyNDAsIDEyLCAxMywgMjQ1LCAKKyAgICAyMzksIDEyLCAxMywgMjQ1LCAyMzgsIDEyLCAxMywgMjQ1LCAyMzcsIDEyLCAxMywgMjQ1LCAyMzYsIDEyLCAxMywgMjQ1LCAKKyAgICA1LCAxMiwgMTMsIDI0NSwgNCwgMTIsIDEzLCAyNDUsIDMsIDEyLCAxMywgMjQ1LCAyLCAxMiwgMTMsIDI0NSwgMSwgMTIsIAorICAgIDEzLCAyNDUsIDAsIDEyLCAxMywgMjQ0LCAyNTUsIDEyLCAxMywgMjQ0LCAyNTQsIDEyLCAxMywgMjQ0LCAyNTMsIDEyLCAxMywgCisgICAgMjQ0LCAyNTIsIDEyLCAxMywgMjQ0LCAyNTEsIDEyLCAxMywgMjQ0LCAyNTAsIDEyLCAxMywgMjQ0LCAyNDksIDEyLCAxMywgCisgICAgMjQ0LCAyNDgsIDEyLCAxMywgMjQ0LCAyNDcsIDEyLCAxMywgMjQ0LCAyNDYsIDEyLCAxMywgMjQ0LCAyNDUsIDEyLCAxMywgCisgICAgMjQ0LCAyNDQsIDEyLCAxMywgMjQ0LCAyNDMsIDEyLCAxMywgMjQ0LCAyNDIsIDEyLCAxMywgMjQ0LCAyNDEsIDEyLCAxMywgCisgICAgMjQ0LCAyNDAsIDEyLCAxMywgMjQ0LCAyMzksIDEyLCAxMywgMjQ0LCAyMzgsIDEyLCAxMywgMjQ0LCAyMzcsIDEyLCAxMywgCisgICAgMjQ0LCAyMzYsIDEyLCAxMywgMjQ0LCAyMzUsIDEyLCAxMywgMjQ0LCAyMzQsIDEyLCAxMywgMjQ0LCAyMzMsIDEyLCAxMywgCisgICAgMjQ0LCAyMzIsIDEyLCAxMywgMjQ0LCAyMzEsIDEyLCAxMywgMjQ0LCAyMzAsIDEyLCAxMywgMjQ0LCAyMjksIDEyLCAxMywgCisgICAgMjQ0LCAyMjgsIDEyLCAxMywgMjQ0LCAyMjcsIDEyLCAxMywgMjQ0LCAyMjYsIDEyLCAxMywgMjQ0LCAyMjUsIDEyLCAxMywgCisgICAgMjQ0LCAyMjQsIDEyLCAxMywgMjQ0LCAyMjMsIDEyLCAxMywgMjQ0LCAyMjIsIDEyLCAxMywgMjQ0LCAyMjEsIDEyLCAxMywgCisgICAgMjQ0LCAyMjAsIDEyLCAxMywgMjQ0LCAyMTksIDEyLCAxMywgMjQ0LCAyMTgsIDEyLCAxMywgMjQ0LCAyMTcsIDEyLCAxMywgCisgICAgMjQ0LCAyMTYsIDEyLCAxMywgMjQ0LCAyMTUsIDEyLCAxMywgMjQ0LCAyMTQsIDEyLCAxMywgMjQ0LCAyMTMsIDEyLCAxMywgCisgICAgMjQ0LCAyMTIsIDEyLCAxMywgMjQ0LCAyMTEsIDEyLCAxMywgMjQ0LCAyMTAsIDEyLCAxMywgMjQ0LCAyMDksIDEyLCAxMywgCisgICAgMjQ0LCAyMDgsIDEyLCAxMywgMjQ0LCAyMDcsIDEyLCAxMywgMjQ0LCAyMDYsIDEyLCAxMywgMjQ0LCAyMDUsIDEyLCAxMywgCisgICAgMjQ0LCAyMDQsIDEyLCAxMywgMjQ0LCAyMDMsIDEyLCAxMywgMjQ0LCAyMDIsIDEyLCAxMywgMjQ0LCAyMDEsIDEyLCAxMywgCisgICAgMjQ0LCAyMDAsIDEyLCAxMywgMjQ0LCAxOTksIDEyLCAxMywgMjQ0LCAxOTgsIDEyLCAxMywgMjQ0LCAxOTcsIDEyLCAxMywgCisgICAgMjQzLCAyMDEsIDEyLCAxMywgMjQzLCAyMDAsIDEyLCAxMywgMjQzLCAxOTksIDEyLCAxMywgMjQzLCAxOTgsIDEyLCAxMywgCisgICAgMjQzLCAxOTcsIDEyLCAxMywgMjQzLCAxOTYsIDEyLCAxMywgMjQzLCAxOTUsIDEyLCAxMywgMjQzLCAxOTQsIDEyLCAxMywgCisgICAgMjQzLCAxOTMsIDEyLCAxMywgMjQzLCAxOTIsIDEyLCAxMywgMjQzLCAxOTEsIDEyLCAxMywgMjQzLCAxOTAsIDEyLCAxMywgCisgICAgMjQzLCAxODksIDEyLCAxMywgMjQzLCAxODgsIDEyLCAxMywgMjQzLCAxODcsIDEyLCAxMywgMjQzLCAxODYsIDEyLCAxMywgCisgICAgMjQzLCAxODUsIDEyLCAxMywgMjQzLCAxODQsIDEyLCAxMywgMjQzLCAxODMsIDEyLCAxMywgMjQzLCAxODIsIDEyLCAxMywgCisgICAgMjQzLCAxODEsIDEyLCAxMywgMjQzLCAxODAsIDEyLCAxMywgMjQzLCAxNzksIDEyLCAxMywgMjQzLCAxNzgsIDEyLCAxMywgCisgICAgMjQzLCAxNzcsIDEyLCAxMywgMjQzLCAxNzYsIDEyLCAxMywgMjQzLCAxNzUsIDEyLCAxMywgMjQzLCAxNzQsIDEyLCAxMywgCisgICAgMjQzLCAxNzMsIDEyLCAxMywgMjQzLCAxNzIsIDEyLCAxMywgMjQzLCAxNzEsIDEyLCAxMywgMjQzLCAxNzAsIDEyLCAxMywgCisgICAgMjQzLCAxNjksIDEyLCAxMywgMjQzLCAxNjgsIDEyLCAxMywgMjQzLCAxNjcsIDEyLCAxMywgMjQzLCAxNjYsIDEyLCAxMywgCisgICAgMjQzLCAxNjUsIDEyLCAxMywgMjQzLCAxNjQsIDEyLCAxMywgMjQzLCAxNjMsIDEyLCAxMywgMjQzLCAxNjIsIDEyLCAxMywgCisgICAgMjQzLCAxNjEsIDEyLCAxMywgMjQzLCAxNjAsIDEyLCAxMywgMjQzLCAxNTksIDEyLCAxMywgMjQzLCAxNTgsIDEyLCAxMywgCisgICAgMjQzLCAxNTcsIDEyLCAxMywgMjQzLCAxNTYsIDEyLCAxMywgMjQzLCAxNTUsIDEyLCAxMywgMjQzLCAxNTQsIDEyLCAxMywgCisgICAgMjQzLCAxNTMsIDEyLCAxMywgMjQzLCAxNTIsIDEyLCAxMywgMjQzLCAxNTEsIDEyLCAxMywgMjQzLCAxNTAsIDEyLCAxMywgCisgICAgMjQzLCAxNDksIDEyLCAxMywgMjQzLCAxNDgsIDEyLCAxMywgMjQzLCAxNDcsIDEyLCAxMywgMjQzLCAxNDYsIDEyLCAxMywgCisgICAgMjQzLCAxNDUsIDEyLCAxMywgMjQzLCAxNDQsIDEyLCAxMywgMjQzLCAxNDMsIDEyLCAxMywgMjQzLCAxNDIsIDEyLCAxMywgCisgICAgMjQzLCAxNDEsIDEyLCAxMywgMjQzLCAxNDAsIDEyLCAxMywgMjQzLCAxMzksIDEyLCAxMywgMjQzLCAxMzgsIDEyLCAxMywgCisgICAgMjQyLCA1OCwgMTIsIDEzLCAyNDIsIDU3LCAxMiwgMTMsIDI0MiwgNTYsIDEyLCAxMywgMjQyLCA1NSwgMTIsIDEzLCAyNDIsIAorICAgIDU0LCAxMiwgMTMsIDI0MiwgNTMsIDEyLCAxMywgMjQyLCA1MiwgMTIsIDEzLCAyNDIsIDUxLCAxMiwgMTMsIDI0MiwgNTAsIAorICAgIDEyLCAxMywgMjQwLCAxMzgsIDEyLCAxMywgMjQwLCAxMzcsIDEyLCAxMywgMjQwLCAxMzYsIDEyLCAxMywgMjQwLCAxMzUsIAorICAgIDEyLCAxMywgMjQwLCAxMzQsIDEyLCAxMywgMjQwLCAxMzMsIDEyLCAxMywgMjQwLCAxMzIsIDEyLCAxMywgMjQwLCAxMzEsIAorICAgIDEyLCAxMywgMjQwLCAxMzAsIDEyLCAxMywgMjQwLCAxMjksIDEyLCAxMywgMjQwLCAxMjgsIDEyLCAxMywgMjQwLCAxMjcsIAorICAgIDEyLCAxMywgMjQwLCAxMjYsIDEyLCAxMywgMjQwLCAxMjUsIDEyLCAxMywgMjQwLCAxMjQsIDEyLCAxMywgMjQwLCAxMjMsIAorICAgIDEyLCAxMywgMjQwLCAxMjIsIDEyLCAxMywgMjQwLCAxMjEsIDEyLCAxMywgMjQwLCAxMjAsIDEyLCAxMywgMjM1LCAyMiwgCisgICAgMTIsIDEzLCAyMzUsIDIxLCAxMiwgMTMsIDIzNSwgMjAsIDEyLCAxMywgMjM1LCAxOSwgMTIsIDEzLCAyMzUsIDE4LCAxMiwgCisgICAgMTMsIDIzNSwgMTcsIDEyLCAxMywgMjM1LCAxNiwgMTIsIDEzLCAyMzUsIDE1LCAxMiwgMTMsIDIzMywgMTQ2LCAxMiwgMTMsIAorICAgIDIzMywgMTQ1LCAxMiwgMTMsIDIzMywgMTQ0LCAxMiwgMTMsIDIzMywgMTQzLCAxMiwgMTMsIDIzMywgMTQyLCAxMiwgMTMsIAorICAgIDIzMywgMTQxLCAxMiwgMTMsIDIzMywgMTQwLCAxMiwgMTMsIDIzMywgMTM5LCAxMiwgMTMsIDIzMywgMTM4LCAxMiwgMTMsIAorICAgIDIzMywgMTM3LCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCA0OCwgMTIsIDEzLCAyMzIsIDQ3LCAxMiwgMTMsIDIzMiwgCisgICAgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAxMiwgMTMsIDIzMiwgNDMsIDEyLCAxMywgMjMyLCA0MiwgCisgICAgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAxMywgMjMyLCAzOSwgMTIsIDEzLCAyMzIsIDM4LCAxMiwgCisgICAgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAyMzIsIDM1LCAxMiwgMTMsIDIzMiwgMzQsIDEyLCAxMywgCisgICAgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgMzEsIDEyLCAxMywgMjMyLCAzMCwgMTIsIDEzLCAyMzIsIAorICAgIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgMTIsIDEzLCAyMzIsIDI2LCAxMiwgMTMsIDIzMiwgMjUsIAorICAgIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgMTMsIDIzMiwgMjIsIDEyLCAxMywgMjMyLCAyMSwgMTIsIAorICAgIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgMjMyLCAxOCwgMTIsIDEzLCAyMzIsIDE3LCAxMiwgMTMsIAorICAgIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIDE0LCAxMiwgMTMsIDIzMiwgMTMsIDEyLCAxMywgMjMyLCAKKyAgICAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIDEyLCAxMywgMjMyLCA5LCAxMiwgMTMsIDIzMiwgOCwgMTIsIAorICAgIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIDIzMiwgNSwgMTIsIDEzLCAyMzIsIDQsIDEyLCAxMywgMjMyLCAKKyAgICAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIDEyLCAxMywgMjMyLCAwLCAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgCisgICAgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgMTMsIDIzMSwgMjUyLCAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgCisgICAgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgMTMsIDIzMSwgMjQ4LCAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgCisgICAgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgMTMsIDIzMSwgMjQ0LCAxMiwgMTMsIDIzMSwgMjQzLCAxMiwgCisgICAgMTMsIDIzMSwgMjQyLCAxMiwgMTMsIDIzMSwgMjQxLCAxMiwgMTMsIDIzMSwgMjQwLCAxMiwgMTMsIDIzMCwgMjIsIDEyLCAKKyAgICAxMywgMjMwLCAyMSwgMTIsIDEzLCAyMzAsIDIwLCAxMiwgMTMsIDIzMCwgMTksIDEyLCAxMywgMjMwLCAxOCwgMTIsIDEzLCAKKyAgICAyMzAsIDE3LCAxMiwgMTMsIDIzMCwgMTYsIDEyLCAxMywgMjMwLCAxNSwgMTIsIDEzLCAyMzAsIDE0LCAxMiwgMTMsIDIzMCwgCisgICAgMTMsIDEyLCAxMywgMjMwLCAxMiwgMTIsIDEzLCAyMzAsIDExLCAxMiwgMTMsIDIzMCwgMTAsIDEyLCAxMywgMjMwLCA5LCAKKyAgICAxMiwgMTMsIDIzMCwgOCwgMTIsIDEzLCAyMzAsIDcsIDEyLCAxMywgMjMwLCA2LCAxMiwgMTMsIDIzMCwgNSwgMTIsIDEzLCAKKyAgICAyMzAsIDQsIDEyLCAxMywgMjMwLCAzLCAxMiwgMTMsIDIzMCwgMiwgMTIsIDEzLCAyMzAsIDEsIDEyLCAxMywgMjMwLCAwLCAKKyAgICAxMiwgMTMsIDIyOSwgMjU1LCAxMiwgMTMsIDIyOSwgMjU0LCAxMiwgMTMsIDIyOSwgMjUzLCAxMiwgMTMsIDIyOSwgMjUyLCAKKyAgICAxMiwgMTMsIDIyOSwgMjUxLCAxMiwgMTMsIDIyOSwgMjUwLCAxMiwgMTMsIDIyOSwgMjQ5LCAxMiwgMTMsIDIyOSwgMjQ4LCAKKyAgICAxMiwgMTMsIDIyOSwgMjQ3LCAxMiwgMTMsIDIyOSwgMjQ2LCAxMiwgMTMsIDIyOSwgMjQ1LCAxMiwgMTMsIDIyOSwgMjQ0LCAKKyAgICAxMiwgMTMsIDIyOSwgMjQzLCAxMiwgMTMsIDIyOSwgMjQyLCAxMiwgMTMsIDIyOSwgMjQxLCAxMiwgMTMsIDIyOSwgMjQwLCAKKyAgICAxMiwgMTMsIDIyOSwgMjM5LCAxMiwgMTMsIDIyOSwgMjM4LCAxMiwgMTMsIDIyOSwgMjM3LCAxMiwgMTMsIDIyOSwgMjM2LCAKKyAgICAxMiwgMTMsIDIyOSwgMjM1LCAxMiwgMTMsIDIyOSwgMjM0LCAxMiwgMTMsIDIyOSwgMjMzLCAxMiwgMTMsIDIyOSwgMjMyLCAKKyAgICAxMiwgMTMsIDIyOSwgMjMxLCAxMiwgMTMsIDIyOSwgMjMwLCAxMiwgMTMsIDIyOCwgMTM0LCAxMiwgMTMsIDIyOCwgMTMzLCAKKyAgICAxMiwgMTMsIDIyOCwgMTMyLCAxMiwgMTMsIDIyOCwgMTMxLCAxMiwgMTMsIDIyOCwgMTMwLCAxMiwgMTMsIDIyOCwgMTI5LCAKKyAgICAxMiwgMTMsIDIyOCwgMTI4LCAxMiwgMTMsIDIyOCwgMTI3LCAxMiwgMTMsIDIyOCwgMTI2LCAxMiwgMTMsIDIyOCwgMTI1LCAKKyAgICAxMiwgMTMsIDIyOCwgMTI0LCAxMiwgMTMsIDIyOCwgMTIzLCAxMiwgMTMsIDIyOCwgMTIyLCAxMiwgMTMsIDIyOCwgMTIxLCAKKyAgICAxMiwgMTMsIDIyOCwgMTIwLCAxMiwgMTMsIDIyOCwgMTE5LCAxMiwgMTMsIDIyOCwgMTE4LCAxMiwgMTMsIDIyOCwgMTE3LCAKKyAgICAxMiwgMTMsIDIyOCwgMTE2LCAxMiwgMTMsIDIyOCwgMTE1LCAxMiwgMTMsIDIyOCwgMTE0LCAxMiwgMTMsIDIyOCwgMTEzLCAKKyAgICAxMiwgMTMsIDIyNywgMjM2LCAxMiwgMTMsIDIyNywgMjM1LCAxMiwgMTMsIDIyNywgMjM0LCAxMiwgMTMsIDIyNywgMjMzLCAKKyAgICAxMiwgMTMsIDIyNywgMjMyLCAxMiwgMTMsIDIyNywgMjMxLCAxMiwgMTMsIDIyNywgMjMwLCAxMiwgMTMsIDIyNywgMjI5LCAKKyAgICAxMiwgMTMsIDIyNywgMjI4LCAxMiwgMTMsIDIyNywgMjI3LCAxMiwgMTMsIDIyNywgMjI2LCAxMiwgMTMsIDIyNywgMjI1LCAKKyAgICAxMiwgMTMsIDIyNywgMjI0LCAxMiwgMTMsIDIyNywgMjIzLCAxMiwgMTMsIDIyNywgMjIyLCAxMiwgMTMsIDIyNywgMjIxLCAKKyAgICAxMiwgMTMsIDIyNywgMjIwLCAxMiwgMTMsIDIyNywgMjE5LCAxMiwgMTMsIDIyNywgMjE4LCAxMiwgMTMsIDIyNywgMjE3LCAKKyAgICAxMiwgMTMsIDIyNywgMjE2LCAxMiwgMTMsIDIyNywgMjE1LCAxMiwgMTMsIDIyNywgMjE0LCAxMiwgMTMsIDIyNywgMjEzLCAKKyAgICAxMiwgMTMsIDIyNywgMjEyLCAxMiwgMTMsIDIyNywgMjExLCAxMiwgMTMsIDIyNywgNzYsIDEyLCAxMywgMjI3LCA3NSwgMTIsIAorICAgIDEzLCAyMjcsIDc0LCAxMiwgMTMsIDIyNywgNzMsIDEyLCAxMywgMjI3LCA3MiwgMTIsIDEzLCAyMjcsIDcxLCAxMiwgMTMsIAorICAgIDIyNywgNzAsIDEyLCAxMywgMjI3LCA2OSwgMTIsIDEzLCAyMjcsIDY4LCAxMiwgMTMsIDIyNywgNjcsIDEyLCAxMywgMjI3LCAKKyAgICA2NiwgMTIsIDEzLCAyMjcsIDY1LCAxMiwgMTMsIDIyNywgNjQsIDEyLCAxMywgMjI3LCA2MywgMTIsIDEzLCAyMjcsIDYyLCAKKyAgICAxMiwgMTMsIDIyNywgNjEsIDEyLCAxMywgMjI3LCA2MCwgMTIsIDEzLCAyMjcsIDU5LCAxMiwgMTMsIDIyNywgNTgsIDEyLCAKKyAgICAxMywgMjI3LCA1NywgMTIsIDEzLCAyMjcsIDU2LCAxMiwgMTMsIDIyNywgNTUsIDEyLCAxMywgMjI3LCA1NCwgMTIsIDEzLCAKKyAgICAyMjcsIDUzLCAxMiwgMTMsIDIyNywgNTIsIDEyLCAxMywgMjI3LCA1MSwgMTIsIDEzLCAyMjcsIDUwLCAxMiwgMTMsIDIyNywgCisgICAgNDksIDEyLCAxMywgMjI3LCA0OCwgMTIsIDEzLCAyMjcsIDQ3LCAxMiwgMTMsIDIyNywgNDYsIDEyLCAxMywgMjI3LCA0NSwgCisgICAgMTIsIDEzLCAyMjcsIDQ0LCAxMiwgMTMsIDIyNywgNDMsIDEyLCAxMywgMjI3LCA0MiwgMTIsIDEzLCAyMjcsIDQxLCAxMiwgCisgICAgMTMsIDIyNywgNDAsIDEyLCAxMywgMjI3LCAzOSwgMTIsIDEzLCAyMjcsIDM4LCAxMiwgMTMsIDIyNywgMzcsIDEyLCAxMywgCisgICAgMjI3LCAzNiwgMTIsIDEzLCAyMjcsIDM1LCAxMiwgMTMsIDIyNywgMzQsIDEyLCAxMywgMjI3LCAzMywgMTIsIDEzLCAyMjcsIAorICAgIDMyLCAxMiwgMTMsIDIyNywgMzEsIDEyLCAxMywgMjI3LCAzMCwgMTIsIDEzLCAyMjcsIDI5LCAxMiwgMTMsIDIyNywgMjgsIAorICAgIDEyLCAxMywgMjI3LCAyNywgMTIsIDEzLCAyMjcsIDI2LCAxMiwgMTMsIDIyNywgMjUsIDEyLCAxMywgMjI3LCAyNCwgMTIsIAorICAgIDEzLCAyMjcsIDIzLCAxMiwgMTMsIDIyNywgMjIsIDEyLCAxMywgMjI3LCAyMSwgMTIsIDEzLCAyMjcsIDIwLCAxMiwgMTMsIAorICAgIDIyNywgMTksIDEyLCAxMywgMjI3LCAxOCwgMTIsIDEzLCAyMjcsIDE3LCAxMiwgMTMsIDIyNywgMTYsIDEyLCAxMywgMjI3LCAKKyAgICAxNSwgMTIsIDEzLCAyMjcsIDE0LCAxMiwgMTMsIDIyNywgMTMsIDEyLCAxMywgMjI3LCAxMiwgMTIsIDEzLCAyMjcsIDExLCAKKyAgICAxMiwgMTMsIDIyNywgMTAsIDEyLCAxMywgMjI3LCA5LCAxMiwgMTMsIDIyNywgOCwgMTIsIDEzLCAyMjcsIDcsIDEyLCAxMywgCisgICAgMjI3LCA2LCAxMiwgMTMsIDIyNywgNSwgMTIsIDEzLCAyMjcsIDQsIDEyLCAxMywgMjI3LCAzLCAxMiwgMTMsIDIyNywgMiwgCisgICAgMTIsIDEzLCAyMjYsIDEwNCwgMTIsIDEzLCAyMjYsIDEwMywgMTIsIDEzLCAyMjYsIDEwMiwgMTIsIDEzLCAyMjYsIDEwMSwgCisgICAgMTIsIDEzLCAyMjYsIDEwMCwgMTIsIDEzLCAyMjYsIDk5LCAxMiwgMTMsIDIyNiwgOTgsIDEyLCAxMywgMjI2LCA5NywgMTIsIAorICAgIDEzLCAyMjYsIDk2LCAxMiwgMTMsIDIyNiwgOTUsIDEyLCAxMywgMjI2LCA5NCwgMTIsIDEzLCAyMjYsIDkzLCAxMiwgMTMsIAorICAgIDIyNiwgOTIsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgOTMsIDEyLCAxMywgMjI0LCAKKyAgICA5MiwgMTIsIDEzLCAyMjQsIDkxLCAxMiwgMTMsIDIyNCwgOTAsIDEyLCAxMywgMjI0LCA4OSwgMTIsIDEzLCAyMjMsIDIyMiwgCisgICAgMTIsIDEzLCAyMjMsIDIyMSwgMTIsIDEzLCAyMjMsIDIyMCwgMTIsIDEzLCAyMjMsIDIxOSwgMTIsIDEzLCAyMjMsIDIxOCwgCisgICAgMTIsIDEzLCAyMjMsIDIxNywgMTIsIDEzLCAyMjMsIDIxNiwgMTIsIDEzLCAyMjMsIDIxNSwgMTIsIDEzLCAyMjMsIDIxNCwgCisgICAgMTIsIDEzLCAyMjMsIDIxMywgMTIsIDEzLCAyMjMsIDIxMiwgMTIsIDEzLCAyMjMsIDIxMSwgMTIsIDEzLCAyMjMsIDIxMCwgCisgICAgMTIsIDEzLCAyMjMsIDIwOSwgMTIsIDEzLCAyMjMsIDIwOCwgMTIsIDEzLCAyMjMsIDIwNywgMTIsIDEzLCAyMjMsIDIwNiwgCisgICAgMTIsIDEzLCAyMjMsIDIwNSwgMTIsIDEzLCAyMjMsIDIwNCwgMTIsIDEzLCAyMjMsIDIwMywgMTIsIDEzLCAyMjMsIDIwMiwgCisgICAgMTIsIDEzLCAyMjMsIDIwMSwgMTIsIDEzLCAyMjMsIDIwMCwgMTIsIDEzLCAyMjMsIDE5OSwgMTIsIDEzLCAyMjMsIDE5OCwgCisgICAgMTIsIDEzLCAyMjMsIDE5NywgMTIsIDEzLCAyMjMsIDE5NiwgMTIsIDEzLCAyMjMsIDE5NSwgMTIsIDEzLCAyMjMsIDE5NCwgCisgICAgMTIsIDEzLCAyMjMsIDE5MywgMTIsIDEzLCAyMjMsIDE5MiwgMTIsIDEzLCAyMjMsIDE5MSwgMTIsIDEzLCAyMjMsIDE5MCwgCisgICAgMTIsIDEzLCAyMjMsIDE4OSwgMTIsIDEzLCAyMjIsIDg4LCAxMiwgMTMsIDIyMiwgODcsIDEyLCAxMywgMjIyLCA4NiwgMTIsIAorICAgIDEzLCAyMjIsIDg1LCAxMiwgMTMsIDIyMiwgODQsIDEyLCAxMywgMjIyLCA4MywgMTIsIDEzLCAyMjIsIDgyLCAxMiwgMTMsIAorICAgIDIyMiwgODEsIDEyLCAxMywgMjIyLCA4MCwgMTIsIDEzLCAyMjIsIDc5LCAxMiwgMTMsIDIyMiwgNzgsIDEyLCAxMywgMjIyLCAKKyAgICA3NywgMTIsIDEzLCAyMjIsIDc2LCAxMiwgMTMsIDIyMiwgNzUsIDEyLCAxMywgMjIyLCA3NCwgMTIsIDEzLCAyMjIsIDczLCAKKyAgICAxMiwgMTMsIDIyMiwgNzIsIDEyLCAxMywgMjIyLCA3MSwgMTIsIDEzLCAyMjIsIDcwLCAxMiwgMTMsIDIyMiwgNjksIDEyLCAKKyAgICAxMywgMjIyLCA2OCwgMTIsIDEzLCAyMjIsIDY3LCAxMiwgMTMsIDIyMiwgNjYsIDEyLCAxMywgMjIyLCA2NSwgMTIsIDEzLCAKKyAgICAyMjIsIDY0LCAxMiwgMTMsIDIyMiwgNjMsIDEyLCAxMywgMjIyLCA2MiwgMTIsIDEzLCAyMjIsIDYxLCAxMiwgMTMsIDIyMiwgCisgICAgNjAsIDEyLCAxMywgMjIyLCA1OSwgMTIsIDEzLCAyMjIsIDU4LCAxMiwgMTMsIDIyMiwgNTcsIDEyLCAxMywgMjIyLCA1NiwgCisgICAgMTIsIDEzLCAyMjIsIDU1LCAxMiwgMTMsIDIyMiwgNTQsIDEyLCAxMywgMjIyLCA1MywgMTIsIDEzLCAyMjIsIDUyLCAxMiwgCisgICAgMTMsIDIyMiwgNTEsIDEyLCAxMywgMjIyLCA1MCwgMTIsIDEzLCAyMjIsIDQ5LCAxMiwgMTMsIDIyMiwgNDgsIDEyLCAxMywgCisgICAgMjIyLCA0NywgMTIsIDEzLCAyMjIsIDQ2LCAxMiwgMTMsIDIyMiwgNDUsIDEyLCAxMywgMjIyLCA0NCwgMTIsIDEzLCAyMjIsIAorICAgIDQzLCAxMiwgMTMsIDIyMiwgNDIsIDEyLCAxMywgMjIyLCA0MSwgMTIsIDEzLCAyMjIsIDQwLCAxMiwgMTMsIDIyMiwgMzksIAorICAgIDEyLCAxMywgMjIyLCAzOCwgMTIsIDEzLCAyMjIsIDM3LCAxMiwgMTMsIDIyMiwgMzYsIDEyLCAxMywgMjIyLCAzNSwgMTIsIAorICAgIDEzLCAyMTcsIDE1MCwgMTIsIDEzLCAyMTcsIDE0OSwgMTIsIDEzLCAyMTcsIDE0OCwgMTIsIDEzLCAyMTcsIDE0NywgMTIsIAorICAgIDEzLCAyMTcsIDE0NiwgMTIsIDEzLCAyMTcsIDE0NSwgMTIsIDEzLCAyMTcsIDE0NCwgMTIsIDEzLCAyMTcsIDE0MywgMTIsIAorICAgIDEzLCAyMTcsIDE0MiwgMTIsIDEzLCAyMTcsIDE0MSwgMTIsIDEzLCAyMTcsIDE0MCwgMTIsIDEzLCAyMTcsIDEzOSwgMTIsIAorICAgIDEzLCAyMTcsIDEzOCwgMTIsIDEzLCAyMTcsIDEzNywgMTIsIDEzLCAyMTcsIDEzNiwgMTIsIDEzLCAyMTcsIDEzNSwgMTIsIAorICAgIDEzLCAyMTcsIDEzNCwgMTIsIDEzLCAyMTcsIDEzMywgMTIsIDEzLCAyMTcsIDEzMiwgMTIsIDEzLCAyMTcsIDEzMSwgMTIsIAorICAgIDEzLCAyMTcsIDEzMCwgMTIsIDEzLCAyMTcsIDEyOSwgMTIsIDEzLCAyMTcsIDEyOCwgMTIsIDEzLCAyMTcsIDEyNywgMTIsIAorICAgIDEzLCAyMTcsIDEyNiwgMTIsIDEzLCAyMTcsIDEyNSwgMTIsIDEzLCAyMTcsIDEyNCwgMTIsIDEzLCAyMTcsIDEyMywgMTIsIAorICAgIDEzLCAyMTcsIDEyMiwgMTIsIDEzLCAyMTcsIDEyMSwgMTIsIDEzLCAyMTcsIDEyMCwgMTIsIDEzLCAyMTcsIDExOSwgMTIsIAorICAgIDEzLCAyMTcsIDExOCwgMTIsIDEzLCAyMTcsIDExNywgMTIsIDEzLCAyMTcsIDExNiwgMTIsIDEzLCAyMTcsIDExNSwgMTIsIAorICAgIDEzLCAyMTcsIDExNCwgMTIsIDEzLCAyMTcsIDExMywgMTIsIDEzLCAyMTcsIDExMiwgMTIsIDEzLCAyMTcsIDExMSwgMTIsIAorICAgIDEzLCAyMTcsIDExMCwgMTIsIDEzLCAyMTcsIDEwOSwgMTIsIDEzLCAyMTcsIDEwOCwgMTIsIDEzLCAyMTcsIDEwNywgMTIsIAorICAgIDEzLCAyMTUsIDIyLCAxMiwgMTMsIDIxNSwgMjEsIDEyLCAxMywgMjE1LCAyMCwgMTIsIDEzLCAyMTUsIDE5LCAxMiwgMTMsIAorICAgIDIxNSwgMTgsIDEyLCAxMywgMjE1LCAxNywgMTIsIDEzLCAyMTUsIDE2LCAxMiwgMTMsIDIxNSwgMTUsIDEyLCAxMywgMjE1LCAKKyAgICAxNCwgMTIsIDEzLCAyMTUsIDEzLCAxMiwgMTMsIDIxNSwgMTIsIDEyLCAxMywgMjE1LCAxMSwgMTIsIDEzLCAyMTUsIDEwLCAKKyAgICAxMiwgMTMsIDIxNSwgOSwgMTIsIDEzLCAyMTUsIDgsIDEyLCAxMywgMjE1LCA3LCAxMiwgMTMsIDIxNSwgNiwgMTIsIDEzLCAKKyAgICAyMTUsIDUsIDEyLCAxMywgMjE1LCA0LCAxMiwgMTMsIDIxNSwgMywgMTIsIDEzLCAyMTUsIDIsIDEyLCAxMywgMjE1LCAxLCAKKyAgICAxMiwgMTMsIDIxNSwgMCwgMTIsIDEzLCAyMTQsIDI1NSwgMTIsIDEzLCAyMTQsIDI1NCwgMTIsIDEzLCAyMTQsIDI1MywgMTIsIAorICAgIDEzLCAyMTQsIDI1MiwgMTIsIDEzLCAyMTQsIDI1MSwgMTIsIDEzLCAyMTQsIDI1MCwgMTIsIDEzLCAyMTQsIDI0OSwgMTIsIAorICAgIDEzLCAyMTQsIDI0OCwgMTIsIDEzLCAyMTQsIDI0NywgMTIsIDEzLCAyMTQsIDI0NiwgMTIsIDEzLCAyMTQsIDI0NSwgMTIsIAorICAgIDEzLCAyMTQsIDI0NCwgMTIsIDEzLCAyMTQsIDI0MywgMTIsIDEzLCAyMTQsIDI0MiwgMTIsIDEzLCAyMTQsIDI0MSwgMTIsIAorICAgIDEzLCAyMTQsIDI0MCwgMTIsIDEzLCAyMTQsIDIzOSwgMTIsIDEzLCAyMTQsIDIzOCwgMTIsIDEzLCAyMTQsIDIzNywgMTIsIAorICAgIDEzLCAyMTQsIDIzNiwgMTIsIDEzLCAyMTQsIDIzNSwgMTIsIDEzLCAyMTQsIDIzNCwgMTIsIDEzLCAyMTQsIDIzMywgMTIsIAorICAgIDEzLCAyMTQsIDIzMiwgMTIsIDEzLCAyMTQsIDEwNCwgMTIsIDEzLCAyMTQsIDEwMywgMTIsIDEzLCAyMTQsIDEwMiwgMTIsIAorICAgIDEzLCAyMTQsIDEwMSwgMTIsIDEzLCAyMTQsIDEwMCwgMTIsIDEzLCAyMTQsIDk5LCAxMiwgMTMsIDIxNCwgOTgsIDEyLCAxMywgCisgICAgMjE0LCA5NywgMTIsIDEzLCAyMTQsIDk2LCAxMiwgMTMsIDIxNCwgOTUsIDEyLCAxMywgMjE0LCA5NCwgMTIsIDEzLCAyMTQsIAorICAgIDkzLCAxMiwgMTMsIDIxNCwgOTIsIDEyLCAxMywgMjE0LCA5MSwgMTIsIDEzLCAyMTQsIDkwLCAxMiwgMTMsIDIxNCwgODksIAorICAgIDEyLCAxMywgMjE0LCA4OCwgMTIsIDEzLCAyMTQsIDg3LCAxMiwgMTMsIDIxNCwgODYsIDEyLCAxMywgMjE0LCA4NSwgMTIsIAorICAgIDEzLCAyMTQsIDg0LCAxMiwgMTMsIDIxNCwgODMsIDEyLCAxMywgMjE0LCA4MiwgMTIsIDEzLCAyMTQsIDgxLCAxMiwgMTMsIAorICAgIDIxNCwgODAsIDEyLCAxMywgMjE0LCA3OSwgMTIsIDEzLCAyMTQsIDc4LCAxMiwgMTMsIDIxNCwgNzcsIDEyLCAxMywgMjE0LCAKKyAgICA3NiwgMTIsIDEzLCAyMTQsIDc1LCAxMiwgMTMsIDIxNCwgNzQsIDEyLCAxMywgMjE0LCA3MywgMTIsIDEzLCAyMTQsIDcyLCAKKyAgICAxMiwgMTMsIDIxNCwgNzEsIDEyLCAxMywgMjE0LCA3MCwgMTIsIDEzLCAyMTQsIDY5LCAxMiwgMTMsIDIxNCwgNjgsIDEyLCAKKyAgICAxMywgMjE0LCA2NywgMTIsIDEzLCAyMTQsIDY2LCAxMiwgMTMsIDIxNCwgNjUsIDEyLCAxMywgMjE0LCA2NCwgMTIsIDEzLCAKKyAgICAyMTQsIDYzLCAxMiwgMTMsIDIxNCwgNjIsIDEyLCAxMywgMjE0LCA2MSwgMTIsIDEzLCAyMTQsIDYwLCAxMiwgMTMsIDIxNCwgCisgICAgNTksIDEyLCAxMywgMjE0LCA1OCwgMTIsIDEzLCAyMTQsIDU3LCAxMiwgMTMsIDIxNCwgNTYsIDEyLCAxMywgMjE0LCA1NSwgCisgICAgMTIsIDEzLCAyMTQsIDU0LCAxMiwgMTMsIDIxNCwgNTMsIDEyLCAxMywgMjE0LCA1MiwgMTIsIDEzLCAyMTQsIDUxLCAxMiwgCisgICAgMTMsIDIxNCwgNTAsIDEyLCAxMywgMjE0LCA0OSwgMTIsIDEzLCAyMTQsIDQ4LCAxMiwgMTMsIDIxNCwgNDcsIDEyLCAxMywgCisgICAgMjE0LCA0NiwgMTIsIDEzLCAyMTQsIDQ1LCAxMiwgMTMsIDIxNCwgNDQsIDEyLCAxMywgMjE0LCA0MywgMTIsIDEzLCAyMTQsIAorICAgIDQyLCAxMiwgMTMsIDIxNCwgNDEsIDEyLCAxMywgMjE0LCA0MCwgMTIsIDEzLCAyMTQsIDM5LCAxMiwgMTMsIDIxNCwgMzgsIAorICAgIDEyLCAxMywgMjE0LCAzNywgMTIsIDEzLCAyMTQsIDM2LCAxMiwgMTMsIDIxNCwgMzUsIDEyLCAxMywgMjE0LCAzNCwgMTIsIAorICAgIDEzLCAyMTQsIDMzLCAxMiwgMTMsIDIxNCwgMzIsIDEyLCAxMywgMjE0LCAzMSwgMTIsIDEzLCAyMTQsIDMwLCAxMiwgMTMsIAorICAgIDIxNCwgMjksIDEyLCAxMywgMjE0LCAyOCwgMTIsIDEzLCAyMTIsIDk3LCAxMiwgMTMsIDIxMiwgOTYsIDEyLCAxMywgMjEyLCAKKyAgICA5NSwgMTIsIDEzLCAyMTIsIDk0LCAxMiwgMTMsIDIxMiwgOTMsIDEyLCAxMywgMjEyLCA5MiwgMTIsIDEzLCAyMTIsIDkxLCAKKyAgICAxMiwgMTMsIDIxMiwgOTAsIDEyLCAxMywgMjEyLCA4OSwgMTIsIDEzLCAyMTIsIDg4LCAxMiwgMTMsIDIxMiwgODcsIDEyLCAKKyAgICAxMywgMjEyLCA4NiwgMTIsIDEzLCAyMTIsIDg1LCAxMiwgMTMsIDIxMiwgODQsIDEyLCAxMywgMjEyLCA4MywgMTIsIDEzLCAKKyAgICAyMTIsIDgyLCAxMiwgMTMsIDIxMiwgODEsIDEyLCAxMywgMjEyLCA4MCwgMTIsIDEzLCAyMTIsIDc5LCAxMiwgMTMsIDIxMiwgCisgICAgNzgsIDEyLCAxMywgMjEyLCA3NywgMTIsIDEzLCAyMTIsIDc2LCAxMiwgMTMsIDIxMiwgNzUsIDEyLCAxMywgMjEyLCA3NCwgCisgICAgMTIsIDEzLCAyMTIsIDczLCAxMiwgMTMsIDIxMiwgNzIsIDEyLCAxMywgMjEyLCA3MSwgMTIsIDEzLCAyMTIsIDcwLCAxMiwgCisgICAgMTMsIDIxMiwgNjksIDEyLCAxMywgMjEyLCA2OCwgMTIsIDEzLCAyMTIsIDY3LCAxMiwgMTMsIDIxMiwgNjYsIDEyLCAxMywgCisgICAgMjExLCAxNzcsIDEyLCAxMywgMjExLCAxNzYsIDEyLCAxMywgMjExLCAxNzUsIDEyLCAxMywgMjExLCAxNzQsIDEyLCAxMywgCisgICAgMjExLCAxNzMsIDEyLCAxMywgMjExLCAxNzIsIDEyLCAxMywgMjExLCAxNzEsIDEyLCAxMywgMjExLCAxNzAsIDEyLCAxMywgCisgICAgMjExLCAxNjksIDEyLCAxMywgMjExLCAxNjgsIDEyLCAxMywgMjExLCAxNjcsIDEyLCAxMywgMjExLCAxNjYsIDEyLCAxMywgCisgICAgMjExLCAxMTUsIDEyLCAxMywgMjExLCAxMTQsIDEyLCAxMywgMjExLCAxMTMsIDEyLCAxMywgMjExLCAxMTIsIDEyLCAxMywgCisgICAgMjExLCAxMTEsIDEyLCAxMywgMjExLCAxMTAsIDEyLCAxMywgMjExLCAxMDksIDEyLCAxMywgMjExLCAxMDgsIDEyLCAxMywgCisgICAgMjExLCAxMDcsIDEyLCAxMywgMjEwLCAxNTgsIDEyLCAxMywgMjEwLCAxNTcsIDEyLCAxMywgMjEwLCAxNTYsIDEyLCAxMywgCisgICAgMjEwLCAxNTUsIDEyLCAxMywgMjEwLCAxNTQsIDEyLCAxMywgMjEwLCAxNTMsIDEyLCAxMywgMjEwLCAxNTIsIDEyLCAxMywgCisgICAgMjEwLCAxNTEsIDEyLCAxMywgMjEwLCAxNTAsIDEyLCAxMywgMjEwLCAxNDksIDEyLCAxMywgMjEwLCAxNDgsIDEyLCAxMywgCisgICAgMjEwLCAxNDcsIDEyLCAxMywgMjEwLCAxNDYsIDEyLCAxMywgMjEwLCAxNDUsIDEyLCAxMywgMjEwLCAxNDQsIDEyLCAxMywgCisgICAgMjEwLCAxNDMsIDEyLCAxMywgMjEwLCAxNDIsIDEyLCAxMywgMjEwLCAxNDEsIDEyLCAxMywgMjEwLCAxNDAsIDEyLCAxMywgCisgICAgMjEwLCAxMzksIDEyLCAxMywgMjEwLCAxMzgsIDEyLCAxMywgMjEwLCAxMzcsIDEyLCAxMywgMjEwLCAxMzYsIDEyLCAxMywgCisgICAgMjEwLCAxMzUsIDEyLCAxMywgMjEwLCAxMzQsIDEyLCAxMywgMjEwLCAxMzMsIDEyLCAxMywgMjEwLCAxMzIsIDEyLCAxMywgCisgICAgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAxMywgMjEwLCAxMjgsIDEyLCAxMywgCisgICAgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAxMywgMjEwLCAxMjQsIDEyLCAxMywgCisgICAgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAxMywgMjEwLCAxMjAsIDEyLCAxMywgCisgICAgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIAorICAgIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCAKKyAgICA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAKKyAgICAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAKKyAgICAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAKKyAgICAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgCisgICAgNDksIDEyLCAxMywgMjU1LCA0OCwgMTIsIDEzLCAyNTUsIDQ3LCAxMiwgMTMsIDI1NSwgNDYsIDEyLCAxMywgMjU1LCA0NSwgCisgICAgMTIsIDEzLCAyNTUsIDQ0LCAxMiwgMTMsIDI1NSwgNDMsIDEyLCAxMywgMjU1LCA0MiwgMTIsIDEzLCAyNTUsIDQxLCAxMiwgCisgICAgMTMsIDI1NSwgNDAsIDEyLCAxMywgMjU1LCAzOSwgMjAsIDEsIDE2NywgMjI5LCAxMiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCisgICAgMjQzLCA3MCwgMjQ0LCAzNiwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIzMSwgMTcsIDIyNSwgNTcsIDIwLCAxLCAxNjcsIAorICAgIDIyNCwgMjUxLCAyMzEsIDE3LCAyMjUsIDU4LCAyMCwgMSwgMTY3LCAyMjksIDIyNiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCisgICAgMjE5LCAyMjEsIDIwLCAxLCAxNjcsIDIxNiwgNjYsIDIzMSwgMTYsIDIwLCAxLCAxNjcsIDIyNywgMTE4LCAyMzEsIDE2LCAKKyAgICAyMCwgMSwgMTY3LCAyMjAsIDE5LCAyMjYsIDkwLCAyMjgsIDE2OSwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIyNiwgOTAsIAorICAgIDIyOCwgMTcwLCAyMjUsIDU3LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjI2LCA5MCwgMjI4LCAxNzAsIDIyNSwgNTgsIDIwLCAKKyAgICAxLCAxNjcsIDIzMSwgMjE4LCAyMCwgMSwgMTY3LCAyMTUsIDExOSwgMjMxLCAyMTksIDIwLCAxLCAxNjcsIDIyOSwgNzEsIAorICAgIDIwLCAxLCAxNjcsIDIzMSwgMjE1LCAyMCwgMSwgMTY3LCAyMzEsIDE3NiwgMjAsIDEsIDE2NywgMjMwLCA0OCwgMjAsIDEsIAorICAgIDE2NywgMjIwLCAxMjQsIDIwLCAxLCAxNjcsIDIyNywgMjQxLCAyMCwgMSwgMTY3LCAyMzQsIDE0OSwgMjAsIDEsIDE2NywgCisgICAgMjI4LCAxMzgsIDIwLCAxLCAxNjcsIDIxOCwgNCwgMjAsIDEsIDE2NywgMjI5LCAxMSwgMjAsIDEsIDE2NywgMjMzLCA4NywgCisgICAgMjAsIDEsIDE2NywgMjMzLCAxMiwgMjMzLCAxODksIDIwLCAxLCAxNjcsIDIyNywgMjQ4LCAyMzEsIDI0LCAyMCwgMSwgMTY3LCAKKyAgICAyMzEsIDIyMiwgMjAsIDEsIDE2NywgMjI1LCAyNDYsIDIwLCAxLCAxNjcsIDI0MiwgMjMxLCAyMCwgMSwgMTY3LCAyMjYsIAorICAgIDUwLCAyMCwgMSwgMTY3LCAyMzAsIDE1MSwgMjI5LCA0NSwgMjAsIDEsIDE2NywgMjI3LCA5OSwgMjMxLCAyNywgMjAsIDEsIAorICAgIDE2NywgMTA0LCAyMTAsIDE4OCwgMjI5LCAyMjAsIDIwLCAxLCAxNjcsIDI0MiwgMjMyLCAyMCwgMSwgMTY3LCAyMjcsIDI0OCwgCisgICAgMjI3LCAyNDksIDIwLCAxLCAxNjcsIDIxOSwgMTI4LCAyMCwgMSwgMTY3LCAyMzEsIDksIDIwLCAxLCAxNjcsIDIzMSwgMzAsIAorICAgIDIwLCAxLCAxNjcsIDIzMCwgMTMwLCAyMCwgMSwgMTY3LCAyMzQsIDI0OSwgMjAsIDEsIDE2NywgMjI2LCA5MCwgMjMzLCA0NywgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxNDksIDIzMywgNDcsIDIwLCAxLCAxNjcsIDIyNSwgMTU4LCAyMCwgMSwgMTY3LCAyMzEsIAorICAgIDIxNiwgMjAsIDEsIDE2NywgMjI4LCAyMDcsIDIwLCAxLCAxNjcsIDIyNCwgMTM0LCAyMCwgMSwgMTY3LCAyMTUsIDExNiwgCisgICAgMjAsIDEsIDE2NywgMjMyLCA5NCwgMjAsIDEsIDE2NywgMjE5LCA0MSwgMjAsIDEsIDE2NywgMjE2LCAyMTYsIDIwLCAxLCAKKyAgICAxNjcsIDIzMSwgMjEzLCAyMCwgMSwgMTY3LCAyMzQsIDE1NiwgMjAsIDEsIDE2NywgMjI5LCAxNDUsIDIwLCAxLCAxNjcsIAorICAgIDIzMywgMjAxLCAyMCwgMSwgMTY3LCAyMzAsIDEzMSwgMjAsIDEsIDE2NywgMjE5LCAyMTgsIDIwLCAxLCAxNjcsIDIzMiwgCisgICAgMTM4LCAyMCwgMSwgMTY3LCAyNDQsIDkzLCAyMCwgMSwgMTY3LCAyMjIsIDE5OSwgMjAsIDEsIDE2NywgMjMzLCAyNDEsIDIwLCAKKyAgICAxLCAxNjcsIDIxOSwgMzcsIDIwLCAxLCAxNjcsIDIzMSwgMTczLCAyMjUsIDk5LCAyMCwgMSwgMTY3LCAyMjAsIDEyLCAyMCwgCisgICAgMSwgMTY3LCAyMjcsIDI0NywgMjAsIDEsIDE2NywgMjE5LCAyNTMsIDIyOCwgMiwgMjEwLCAxOTYsIDIwLCAxLCAxNjcsIAorICAgIDIyNywgMTM4LCAyMzAsIDE0OCwgMjAsIDEsIDE2NywgMjI2LCA4NSwgMjAsIDEsIDE2NywgMjI4LCAxMzksIDIwLCAxLCAKKyAgICAxNjcsIDIxNCwgMTcwLCAyMCwgMSwgMTY3LCAyMjksIDQ4LCAyMCwgMSwgMTY3LCAyMzEsIDIxMiwgMjAsIDEsIDE2NywgCisgICAgMjI4LCAxODEsIDIwLCAxLCAxNjcsIDIzMSwgMTE5LCAyMCwgMSwgMTY3LCAyMjcsIDE1MSwgMjAsIDEsIDE2NywgMjE2LCAKKyAgICAyMjAsIDIwLCAxLCAxNjcsIDIxOSwgMzQsIDIwLCAxLCAxNjcsIDIyNiwgODYsIDIwLCAxLCAxNjcsIDIyOCwgNiwgMjAsIDEsIAorICAgIDE2NywgMjMxLCAyMjAsIDIwLCAxLCAxNjcsIDIyNywgMTQ4LCAyMCwgMSwgMTY3LCAyMzQsIDIxNiwgMjAsIDEsIDE2NywgCisgICAgMjI4LCA5LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgMjMyLCA5OCwgMjAsIDEsIDE2NywgMjI5LCA5OCwgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxOTYsIDIwLCAxLCAxNjcsIDIzMSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgNCwgMjAsIAorICAgIDEsIDIyNSwgMTM4LCAyMTUsIDExOSwgMjMxLCAyMTcsIDIwLCAxLCAyMjUsIDEzOCwgMjE5LCAxODUsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjIwLCAxMjgsIDIxNSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMiwgMTQwLCAyMjcsIDI0NCwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMzEsIDEyNSwgMjMxLCAyMjEsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCA4NywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIAorICAgIDE1LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTIwLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMjM3LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIyNSwgMjA4LCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgODksIDIzMywgNDcsIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAKKyAgICAxMDMsIDIyOCwgMiwgMjI3LCAxNjAsIDIwLCAxLCAyMjUsIDEzOCwgMjI3LCAyNDIsIDIyMCwgMzgsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjI5LCAxMTYsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxMzgsIDI0MiwgMjI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyNSwgCisgICAgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjE1LCAxMTksIDIyOCwgMCwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDQzLCAyMjgsIAorICAgIDE3OSwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDM5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTcsIDIxNiwgMjE5LCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIzMSwgMTA3LCAyMzEsIDEyMSwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDE0OSwgMjI3LCAyNDQsIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjM0LCAxNDUsIDIwLCAxLCAyMjUsIDEzOCwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAxNDEsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAxMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI1LCAyNDksIDIwLCAxLCAyMjUsIDEzOCwgCisgICAgMjEzLCAxODIsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAxMywgMjMwLCA0NiwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDQ3LCAKKyAgICAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIDE5MywgMjAsIDEsIDIyNSwgMTM4LCAyMjIsIDExLCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIxNywgOTcsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDMyLCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMzMsIDIzMywgODQsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxOSwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMTgsIDUyLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTExLCAyMCwgMSwgMjI1LCAxMzgsIDIzMCwgMTMzLCAyMCwgCisgICAgMSwgMjI1LCAxMzgsIDIyNywgMTYzLCAyMCwgMSwgMjI1LCAxMzgsIDIyNCwgMTM4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgCisgICAgMjgsIDIyOSwgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjQ0LCAxMjYsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCA5OCwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyNDQsIDE0NywgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE1MywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDIzOSwgCisgICAgMjI4LCAxNzMsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyMzksIDIyOCwgMTQ5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMywgMTEsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCA1NSwgMjAsIDEsIDIyNSwgMTM4LCAyMjgsIDExLCAyMCwgMSwgMjI1LCAxMzgsIDE4NCwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDc0LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMSwgMjAsIDEsIDEzNywgMjI5LCAxMiwgCisgICAgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIyNywgMTE3LCAyMCwgMSwgMTM3LCAyMTAsIDE5NiwgMjAsIDEsIDEzNywgMjEyLCAKKyAgICA1MywgMjAsIDEsIDEzNywgMjI5LCA0OCwgMjAsIDEsIDEzNywgMjI5LCAxMzcsIDIwLCAxLCAxMzcsIDIyOSwgMTksIDIwLCAKKyAgICAxLCAxMzcsIDI0MiwgMjM5LCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjQzLCA3NywgMjAsIDEsIDEzNywgCisgICAgMjI3LCAxNDAsIDIzMCwgMTcwLCAyMzEsIDMxLCAyMCwgMSwgMTM3LCAyMjcsIDI0MCwgMjMxLCAxMDYsIDIwLCAxLCAxMzcsIAorICAgIDIzMSwgMTEyLCAyMCwgMSwgMTM3LCAyMjUsIDU1LCAyMCwgMSwgMTM3LCAyMjksIDEyMiwgMjAsIDEsIDEzNywgMjMxLCAKKyAgICAxMjMsIDI1MSwgMjksIDIwLCAxLCAxMzcsIDIzNCwgMTQzLCAyMCwgMSwgMTM3LCAyNDIsIDI0MCwgMjAsIDEsIDEzNywgCisgICAgMjM0LCAxNTAsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDc2LCAyMCwgMSwgMTM3LCAyMjcsIDExMSwgMjAsIDEsIAorICAgIDEzNywgMjMxLCAxMDAsIDIwLCAxLCAxMzcsIDIyOCwgMTAsIDIwLCAxLCAxMzcsIDIzMSwgMTA2LCAyMCwgMSwgMTM3LCAKKyAgICAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI0OSwgMjAsIDEsIDEzNywgMjM1LCAxMCwgMjAsIDEsIDEzNywgMjIwLCAxMjMsIAorICAgIDIwLCAxLCAxMzcsIDIyOSwgMTMxLCAyMCwgMSwgMTM3LCAyMTcsIDk1LCAyMCwgMSwgMTM3LCAyMjgsIDE1MywgMjAsIDEsIAorICAgIDEzNywgMjE2LCA2NiwgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgNzksIDIwLCAxLCAxMzcsIDIyOSwgMzksIDIyNywgCisgICAgMTYwLCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAxOTksIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAKKyAgICAyMzQsIDE1MiwgMjAsIDEsIDEzNywgMjI3LCAyNDksIDIwLCAxLCAxMzcsIDIyOSwgMzQsIDIwLCAxLCAxMzcsIDIzMywgODgsIAorICAgIDIwLCAxLCAxMzcsIDIzMSwgMTA4LCAyMCwgMSwgMTM3LCAyMzEsIDgsIDIwLCAxLCAxMzcsIDIyNywgMjQzLCAyMCwgMSwgCisgICAgMTM3LCAyMTYsIDIxNSwgMjAsIDEsIDEzNywgMjI5LCAzNiwgMjAsIDEsIDEzNywgMjQzLCAyMzMsIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMjgsIDEyLCAyMCwgMSwgMTM3LCAyMjgsIDgsIDIwLCAxLCAxMzcsIDI1MSwgMTA3LCAKKyAgICAyMCwgMSwgMTM3LCAyMTMsIDE4MywgMjAsIDEsIDEzNywgMjMxLCAxMTMsIDIwLCAxLCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgCisgICAgMTM3LCAyMjgsIDE4MywgMjAsIDEsIDEzNywgMjMzLCAxMDIsIDIwLCAxLCAxMzcsIDIxNiwgNjQsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMjUwLCAyMjksIDEsIDIwLCAxLCAxMzcsIDIyOCwgMTc1LCAyMCwgMSwgMTM3LCAyMzQsIDE1NiwgMjAsIDEsIDEzNywgCisgICAgMjI5LCA0MCwgMjAsIDEsIDEzNywgMjMxLCAyMTIsIDIwLCAxLCAxMzcsIDIzMSwgMTAxLCAyMCwgMSwgMTM3LCAyMzIsIDk4LCAKKyAgICAyMCwgMSwgMTM3LCAyMzMsIDE4OSwgMjAsIDEsIDEzNywgMjI4LCAxODEsIDIwLCAxLCAxMzcsIDIyOSwgMSwgMjAsIDEsIAorICAgIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgMzcsIDIwLCAxLCAxMzcsIDIyNywgMjUzLCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDI0NSwgMjAsIDEsIDEzNywgMjMzLCAyMDMsIDIyOCwgMTM5LCAyMCwgMSwgMTM3LCAyMjcsIDI1MSwgMjAsIDEsIAorICAgIDEzNywgMjI5LCAxNDQsIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAyMjgsIDAsIDIwLCAxLCAxMzcsIDIxMSwgMTAzLCAyMCwgMSwgCisgICAgMTM3LCAyMjksIDE0MywgMjAsIDEsIDEzNywgMjE5LCAyMjAsIDIwLCAxLCAxMzcsIDIyMCwgMTI2LCAyMCwgMSwgMTM3LCAKKyAgICAyMzEsIDEwOSwgMjAsIDEsIDEzNywgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIzMSwgMTE5LCAyMCwgMSwgMTM3LCAyMzQsIAorICAgIDE0NCwgMjAsIDEsIDEzNywgMjMxLCAxMTAsIDIwLCAxLCAxMzcsIDIzNCwgMTQ4LCAyMCwgMSwgMTM3LCAyMzEsIDEyMywgCisgICAgMjI1LCAxMDMsIDIwLCAxLCAxMzcsIDIxMCwgMTc5LCAyMCwgMSwgMTM3LCAyMjgsIDE3MSwgMjAsIDEsIDEzNywgMjMwLCAKKyAgICAyMjAsIDIwLCAxLCAxMzcsIDIzMCwgMTAwLCAyMCwgMSwgMTM3LCAyMjAsIDE1LCAyMCwgMSwgMTM3LCAyMzQsIDE2NiwgCisgICAgMjMzLCA3MCwgMjAsIDEsIDEzNywgMjM0LCAxNjYsIDI0NCwgMTYwLCAyMCwgMSwgMTM3LCAyMjksIDY5LCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDE5NiwgMjAsIDEsIDEzNywgMjMyLCAyMDAsIDIwLCAxLCAxMzcsIDIyNSwgNjUsIDIwLCAxLCAxMzcsIDIyNSwgCisgICAgMTk5LCAyMCwgMSwgMTM3LCAyMTYsIDIzMCwgMjAsIDEsIDEwNywgMjMxLCA5OSwgMjAsIDEsIDEwNywgMjEyLCA1MSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNjksIDIwLCAxLCAxMDcsIDIzMSwgMTYsIDIwLCAxLCAxMDcsIDIyOCwgMTY3LCAyMCwgMSwgMTA3LCAKKyAgICAyMzIsIDIzNSwgMjAsIDEsIDEwNywgMjI4LCAxNzIsIDIwLCAxLCAxMDcsIDIyOCwgNywgMjAsIDEsIDEwNywgMjI5LCA1NCwgCisgICAgMjAsIDEsIDEwNywgMjI3LCAxNjAsIDIwLCAxLCAxMDcsIDIxMSwgMTk0LCAyMCwgMSwgMTA3LCAyMjksIDksIDIwLCAxLCAKKyAgICAxMDcsIDIyMCwgNjEsIDIwLCAxLCAxMDcsIDIyOSwgMjAsIDIwLCAxLCAxMDcsIDIzNCwgMTUxLCAyMCwgMSwgMTA3LCAyMTYsIAorICAgIDIxNywgMjAsIDEsIDEwNywgMjIwLCA0MSwgMjAsIDEsIDEwNywgMjI4LCAxODAsIDIwLCAxLCAxMDcsIDIxOCwgNTIsIDIwLCAKKyAgICAxLCAxMDcsIDIzNCwgMTU2LCAyMCwgMSwgMTA3LCAyMTEsIDkxLCAyMCwgMSwgMTA3LCAyMzMsIDIwNCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOSwgMTM1LCAyMCwgMSwgMTA3LCAyMzEsIAorICAgIDE4OCwgMjAsIDEsIDEwNywgMjMxLCAyNywgMjAsIDEsIDEwNywgMjIwLCAxMjUsIDIwLCAxLCAxMDcsIDIxMSwgMzksIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTc0LCAyMCwgMSwgMTA3LCAyMzQsIDE0NywgMjMxLCAxMDIsIDIwLCAxLCAxMDcsIDIyOSwgMTYsIAorICAgIDIwLCAxLCAxMDcsIDIxNSwgMTE4LCAyMCwgMSwgMTA3LCAyNDIsIDI0OCwgMjAsIDEsIDEwNywgMjI5LCA2LCAyMCwgMSwgCisgICAgMTA3LCAyNDQsIDEyNywgMjAsIDEsIDEwNywgMjI5LCAxMzksIDIwLCAxLCAxMDcsIDIzMSwgMCwgMjAsIDEsIDEwNywgMjMzLCAKKyAgICA1LCAyMCwgMSwgMTA3LCAyMjksIDEyMSwgMjAsIDEsIDEwNywgMjMwLCAxNDcsIDIwLCAxLCAxMDcsIDIzMSwgNCwgMjAsIDEsIAorICAgIDEwNywgMjI0LCAxMTgsIDIwLCAxLCAxMDcsIDIzMSwgMiwgMjAsIDEsIDEwNywgMjMxLCAxOCwgMjAsIDEsIDEwNywgMjMyLCAKKyAgICA4NCwgMjAsIDEsIDEwNywgMjI3LCAyNTUsIDIwLCAxLCAxMDcsIDIzMSwgMTIyLCAyMCwgMSwgMTA3LCAyMzMsIDE4MCwgMjAsIAorICAgIDEsIDEwNywgMjI3LCAxNTEsIDIwLCAxLCAxMDcsIDIxNiwgMjIwLCAyMCwgMSwgMTA3LCAyMTksIDM0LCAyMCwgMSwgMTA3LCAKKyAgICAyMTAsIDE3OSwgMjAsIDEsIDEwNywgMjM0LCAxNDgsIDIwLCAxLCAxMDcsIDIyMywgMTcwLCAyMCwgMSwgMTA3LCAyMTcsIAorICAgIDEwLCAyMCwgMSwgMTA3LCAyMjksIDE3LCAyMCwgMSwgMTA3LCAyMzEsIDIzLCAyMCwgMSwgMTA3LCAyMjcsIDI1NCwgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNDYsIDIwLCAxLCAxMDcsIDIyNSwgNTksIDIwLCAxLCAxMDcsIDIyNSwgMTUyLCAyMCwgMSwgMTA3LCAKKyAgICAyMjcsIDEyNywgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCA1NSwgMjAsIDEsIDEwNywgMjMxLCAyMCwgCisgICAgMjAsIDEsIDEwNywgMjI5LCAyOSwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAxMDcsIDIyNiwgMjEsIDIwLCAxLCAKKyAgICAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0NCwgMjAsIDEsIDEwNywgMjI3LCAyNDQsIDIwLCAxLCAxMDcsIAorICAgIDIxOCwgODEsIDIwLCAxLCAxMDcsIDIzMywgMjA4LCAyMCwgMSwgMTA3LCAyMjksIDQ0LCAyMCwgMSwgMTA3LCAyMjksIDE0LCAKKyAgICAyMCwgMSwgMTA3LCAyMTUsIDEwMiwgMjAsIDEsIDEwNywgMjMxLCAzMSwgMjAsIDEsIDEwNywgMjMzLCAxOTgsIDIwLCAxLCAKKyAgICAxMDcsIDIyNywgMjUyLCAyMCwgMSwgMTA3LCAyMTYsIDIxOCwgMjAsIDEsIDEwNywgMjMxLCAyMTQsIDIwLCAxLCAxMDcsIAorICAgIDIyOSwgNTMsIDIwLCAxLCAxMDcsIDIzMywgNCwgMjAsIDEsIDEwNywgMjI5LCAzNSwgMjAsIDEsIDEwNywgMjI4LCAxLCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE1MywgMjAsIDEsIDEwNywgMjQyLCAyMzMsIDIwLCAxLCAxMDcsIDIzMywgMjE3LCAyMCwgMSwgMTA3LCAKKyAgICAyMjMsIDg0LCAyMjYsIDIwOSwgMjAsIDEsIDEwNywgMjE3LCA4NiwgMjAsIDEsIDEwNywgMjE2LCAxMCwgMjAsIDEsIDEwNywgCisgICAgMjI3LCAxNDgsIDIwLCAxLCAxMDcsIDIyMiwgMjM5LCAyMCwgMSwgMTA3LCAyMzMsIDQ5LCAyMCwgMSwgMTA3LCAyMzEsIDc5LCAKKyAgICAyMCwgMSwgMTA3LCAxOTMsIDIwLCAxLCAxMDcsIDIxOCwgNCwgMjAsIDEsIDEwNywgMjMwLCAxMDIsIDIwLCAxLCAxMDcsIAorICAgIDIyMCwgMjcsIDIwLCAxLCAxMDcsIDIyMCwgMzcsIDIwLCAxLCAxMDcsIDIzMywgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDIzNywgCisgICAgMjAsIDEsIDEwNywgMjE5LCAyMjUsIDIwLCAxLCAxMDcsIDIyNywgMjQ2LCAyMCwgMSwgMTA3LCAyMjUsIDIxMSwgMjAsIDEsIAorICAgIDEwNywgMjI4LCAyMzMsIDIwLCAxLCAxMDcsIDIxOSwgMjUyLCAyMCwgMSwgMTA3LCAyMjQsIDEzMywgMjAsIDEsIDEwNywgCisgICAgMjMwLCA0NiwgMjAsIDEsIDEwNywgMjMyLCAxMTksIDIwLCAxLCAxMDcsIDIyMywgODQsIDIzMCwgOTYsIDIwLCAxLCAxMDcsIAorICAgIDIxNiwgMTE3LCAyMCwgMSwgMTA3LCAyMjcsIDIzOCwgMjAsIDEsIDEwNywgMjMxLCAxMjMsIDE5OCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzIsIDIwLCAxLCAxMDcsIDI0NCwgMTk1LCAyMCwgMSwgODIsIDIyOSwgMTQzLCAyMCwgMSwgODIsIDIxNiwgMTYsIAorICAgIDIwLCAxLCA4MiwgMjMxLCAxMTIsIDIwLCAxLCA4MiwgMjMzLCA4OCwgMjAsIDEsIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAKKyAgICAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMjYsIDg5LCAyMCwgMSwgODIsIDIxOSwgNDUsIDIwLCAxLCA4MiwgMjIzLCAxNDUsIAorICAgIDIwLCAxLCA4MiwgMjI4LCAzLCAyMCwgMSwgODIsIDIyOSwgMTE0LCAyMCwgMSwgODIsIDIyNCwgMTQ3LCAyMCwgMSwgODIsIAorICAgIDIxNywgNjIsIDIwLCAxLCA4MiwgMjI5LCAyMiwgMjAsIDEsIDgyLCAyMzMsIDI0NSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgCisgICAgMjAsIDEsIDgyLCAyMjEsIDE3MCwgMjAsIDEsIDgyLCAyMjksIDQ1LCAyMCwgMSwgODIsIDIyNiwgODYsIDIwLCAxLCA4MiwgCisgICAgMjE2LCAxNywgMjAsIDEsIDgyLCAyMzMsIDIwMiwgMjAsIDEsIDgyLCAyMzIsIDEzOSwgMjAsIDEsIDgyLCAyMjgsIDYsIDIwLCAKKyAgICAxLCA4MiwgMjI4LCAyNTQsIDIwLCAxLCA4MiwgMjMxLCAyMjAsIDIwLCAxLCA4MiwgMjI5LCAxNSwgMjAsIDEsIDgyLCAyMjgsIAorICAgIDI1MywgMjAsIDEsIDgyLCAyMjgsIDUsIDIwLCAxLCA4MiwgMjIyLCAyMzcsIDIwLCAxLCA4MiwgMjI4LCAxNzEsIDIwLCAxLCAKKyAgICA4MiwgMjI1LCAyMTAsIDIwLCAxLCA4MiwgMjIyLCAzMSwgMjAsIDEsIDgyLCAyMjksIDMwLCAyMCwgMSwgODIsIDIzMSwgMTAsIAorICAgIDIwLCAxLCA4MiwgMjQyLCAyMjcsIDIwLCAxLCA4MiwgMjI5LCAxOCwgMjAsIDEsIDgyLCAyMjgsIDE4MiwgMjAsIDEsIDgyLCAKKyAgICAyMzEsIDE3MiwgMjAsIDEsIDgyLCAyMzIsIDEyMSwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgODIsIDIyOSwgMTI3LCAKKyAgICAyMCwgMSwgODIsIDIxNywgODUsIDIyNywgMjQ0LCAyMCwgMSwgODIsIDIyMCwgMTI3LCAyMCwgMSwgODIsIDIyNCwgMTQzLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMTQ3LCAyMTksIDUxLCAyMCwgMSwgODIsIDIyOSwgMzgsIDIyNywgMTYwLCAyMCwgMSwgODIsIAorICAgIDIxMSwgNCwgMjAsIDEsIDgyLCAyNDIsIDIyOCwgMjAsIDEsIDgyLCAyMTUsIDExNywgMjAsIDEsIDgyLCAyMTEsIDE5LCAyMCwgCisgICAgMSwgODIsIDIyNSwgMTYsIDIwLCAxLCA4MiwgMjE1LCAxMDcsIDIwLCAxLCA4MiwgMjM0LCAxNTQsIDIwLCAxLCA4MiwgMjE4LCAKKyAgICA4MCwgMjAsIDEsIDgyLCAyMTYsIDIxOSwgMjAsIDEsIDgyLCAyMTMsIDE4NCwgMjAsIDEsIDgyLCAyMTIsIDYsIDIwLCAxLCAKKyAgICA4MiwgMjMzLCAxMzIsIDIwLCAxLCA4MiwgMjI0LCAxNTAsIDIwLCAxLCA4MiwgMjE3LCA5NiwgMjAsIDEsIDgyLCAyNDIsIAorICAgIDI0NywgMjAsIDEsIDgyLCAyMjksIDU5LCAyMCwgMSwgODIsIDIyMCwgNDAsIDIwLCAxLCA4MiwgMjMxLCA1LCAyMCwgMSwgCisgICAgODIsIDIzMSwgMTE2LCAyMCwgMSwgODIsIDIyNywgMTE1LCAyMCwgMSwgODIsIDIyOCwgMTM2LCAyMCwgMSwgODIsIDI0MywgCisgICAgNzMsIDIwLCAxLCA4MiwgMjE1LCAxMDgsIDIwLCAxLCA4MiwgMjMzLCAyMTEsIDIwLCAxLCA4MiwgMjExLCA2NywgMjAsIDEsIAorICAgIDgyLCAyMjcsIDE0OSwgMjUwLCAxNiwgMjAsIDEsIDgyLCAyMTAsIDI1MCwgMjAsIDEsIDgyLCAyMzEsIDIyLCAyMCwgMSwgCisgICAgODIsIDIyOSwgMTMyLCAyMCwgMSwgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIxMCwgMTk3LCAyMCwgMSwgODIsIDIzMywgCisgICAgNiwgMjAsIDEsIDgyLCAyNDMsIDIzMywgMjAsIDEsIDgyLCAyNDMsIDcyLCAyMCwgMSwgODIsIDIyOSwgOCwgMjAsIDEsIDgyLCAKKyAgICAyMzQsIDE1NiwgMjAsIDEsIDgyLCAyMzEsIDIyMywgMjAsIDEsIDgyLCAyMjksIDIxLCAyMCwgMSwgODIsIDI0MiwgMjM0LCAKKyAgICAyMCwgMSwgODIsIDI0NCwgMTk2LCAyMCwgMSwgODIsIDIyNywgMjM5LCAyMCwgMSwgODIsIDIyNSwgMTUzLCAyMCwgMSwgODIsIAorICAgIDIxMSwgMTcsIDIwLCAxLCA4MiwgMjI5LCA0NiwgMjAsIDEsIDgyLCAyMjcsIDE0OSwgMjUyLCAyMywgMjAsIDEsIDgyLCAKKyAgICAyMjcsIDk1LCAyMCwgMSwgODIsIDIyNCwgMjQ3LCAyMCwgMSwgODIsIDIzMCwgMjIwLCAyMCwgMSwgODIsIDI0MywgMjMxLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMjIwLCAyMCwgMSwgODIsIDIzMCwgMTAwLCAyMCwgMSwgODIsIDI0MiwgMjMzLCAyMCwgMSwgODIsIAorICAgIDI0MywgMjM1LCA3MywgMjAsIDEsIDgyLCAyMzAsIDQ3LCAyMCwgMSwgODIsIDIyNCwgMTQ2LCAyMCwgMSwgODIsIDIyOSwgCisgICAgMTAsIDIwLCAxLCA4MiwgMjMzLCAxODksIDIwLCAxLCA4MiwgMjI1LCA5NywgMjAsIDEsIDgyLCAyMjcsIDI0NywgMjAsIDEsIAorICAgIDgyLCAyMTEsIDE4LCAyMCwgMSwgODIsIDIyOSwgMzEsIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAxODcsIDIwLCAxLCA4MiwgCisgICAgMjQzLCAyMzUsIDI1MSwgMTUsIDIwLCAxLCA4MiwgMjQ0LCAzNywgMjAsIDEsIDgyLCAyMjgsIDE3NiwgMjAsIDEsIDgyLCAKKyAgICA2MSwgMjAsIDEsIDgyLCAyMTYsIDEwLCAyMCwgMSwgODIsIDc2LCAyMCwgMSwgODIsIDczLCAyMCwgMSwgODIsIDIzMywgODYsIAorICAgIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAyMywgMjAsIDEsIDgyLCAyMTcsIDEwMSwgMjAsIDEsIDgyLCAyMTcsIDUxLCAyMCwgCisgICAgMSwgODIsIDIyOSwgMTQ3LCAyMzAsIDM0LCAyNDAsIDIzNCwgMjAsIDEsIDgyLCAyMjAsIDE1LCAyMCwgMSwgODIsIDIxMSwgCisgICAgMTQsIDIwLCAxLCA4MiwgMjI4LCAyNDcsIDIwLCAxLCA4MiwgMjEwLCAyMDIsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDIxNywgCisgICAgMjQwLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyNDksIDE0NywgMjAsIDEsIDgyLCAyMTAsIDE4NywgMjAsIDEsIDgyLCAyMTAsIAorICAgIDE5NSwgMjAsIDEsIDgyLCAyMzQsIDE0MiwgMjAsIDEsIDgyLCAyMjUsIDE1MSwgMjAsIDEsIDgyLCAyMjgsIDE3NywgMjQ1LCAKKyAgICAxMDIsIDIwLCAxLCA4MiwgMjI0LCAxNDQsIDIwLCAxLCA4MiwgMjExLCAxOTIsIDIwLCAxLCA4MiwgMjQ0LCAxNDcsIDIwLCAKKyAgICAxLCA4MiwgMjEzLCAyNTAsIDIwLCAxLCA4MiwgMjMyLCA5OCwgMjAsIDEsIDgyLCAyMzAsIDIzMCwgMjAsIDEsIDgyLCAyMjMsIAorICAgIDUxLCAyMCwgMSwgODIsIDIyMywgMTcxLCAyMCwgMSwgODIsIDIyOCwgMjQ2LCAyMCwgMSwgODIsIDIyOSwgNzcsIDIwLCAxLCAKKyAgICA4MiwgMjIwLCA3LCAyMCwgMSwgODIsIDIxOSwgMjUyLCAyMCwgMSwgODIsIDI0MywgMjM1LCAyMjMsIDg2LCAyMCwgMSwgODIsIAorICAgIDE5NywgMjAsIDEsIDgyLCAyMjUsIDEwOCwgMjAsIDEsIDgyLCAyMzIsIDExOSwgMjAsIDEsIDgyLCAyMzQsIDI4LCAyMCwgMSwgCisgICAgODIsIDIzMSwgNTgsIDIwLCAxLCA4MiwgMTg0LCAyMCwgMSwgODIsIDIzMSwgMTY5LCAyMCwgMSwgODIsIDIxNiwgMjIxLCAKKyAgICAyMCwgMSwgODIsIDIzNCwgOTIsIDIwLCAxLCA4MiwgMjMwLCAxNTAsIDIwLCAxLCA4MiwgMjE2LCAyNDcsIDIwLCAxLCA4MiwgCisgICAgMjQ0LCAxNjksIDIwLCAxLCA4MiwgMjQyLCAyMjMsIDIwLCAxLCAyMjUsIDEzNywgMTc2LCAyMCwgMSwgMjI1LCAxMzcsIDcwLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMywgMjE3LCAyMCwgMSwgMjI1LCAxMzcsIDI0NSwgMjA5LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyMywgMTA4LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgODYsIDIwLCAxLCAyMjUsIDEzNywgMjI3LCAxNDgsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjMzLCAxMzUsIDIwLCAxLCAyMjUsIDEzNywgMjIyLCAyMzksIDIwLCAxLCAyMjUsIDEzNywgMjIzLCAyOSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzEsIDc5LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgMTAxLCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyOSwgMTQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMTgzLCAyMCwgMSwgMjI1LCAxMzcsIDE5MywgMjAsIDEsIDIyNSwgCisgICAgMTM3LCAyMTgsIDQsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCAyNywgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDE5MSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyMjAsIDEyMywgMjAsIDEsIDIyNSwgMTM3LCAyMzMsIDE1NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDE1NiwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIwOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIzNywgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMjgsIDE1NCwgMjAsIDEsIDIyNSwgMTM3LCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDIyNSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAxOTEsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCA5LCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMTUxLCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDIyNywgMjQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMjExLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMjMzLCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyMywgNTEsIDIwLCAxLCAyMjUsIDEzNywgMjM0LCAxNjUsIDIwLCAxLCAyMjUsIDEzNywgMjI5LCA3LCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIyOSwgNTYsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCA3LCAyMCwgMSwgMjI1LCAxMzcsIDIyNCwgMTQ3LCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDI0NCwgMzcsIDIwLCAxLCAyMjUsIDEzNywgMjEyLCA2NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDI0MSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDExOSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDI4LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIzMSwgMTE0LCAyMCwgMSwgMjI1LCAxMzcsIDIyMywgODMsIDIwLCAxLCAyMjUsIDEzNywgMTg0LCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIzMCwgMTYxLCAyMCwgMSwgMjI1LCAxMzcsIDIzMSwgMTIyLCAyMCwgMSwgMjI1LCAxMzcsIDIxNiwgMjMwLCAyMCwgCisgICAgMSwgMjI1LCAxMzcsIDIzMywgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIyMSwgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIxMiwgCisgICAgMTE1LCA5NSwgMSwgMTkwLCA5NSwgMSwgMjUyLCAxOTEsIDk1LCAxLCA4LCAxOTAsIDk1LCAxLCAyMjUsIDQyLCA5NSwgMSwgCisgICAgMTg0LCA5NSwgMSwgMjMwLCAyMzMsIDk1LCAxLCAyNTQsIDIzLCAxODQsIDk1LCAxLCAyNDQsIDE5NiwgOTUsIDEsIDIxNCwgCisgICAgMjcsIDk1LCAxLCAyMTMsIDE3NywgOTUsIDEsIDIxNywgMTA1LCA5NSwgMSwgMjQ4LCAyMjEsIDk1LCAxLCA4LCAyMTUsIAorICAgIDE1NiwgOTUsIDEsIDgsIDIxNywgMTA1LCA5NSwgMSwgMjE1LCAxNTYsIDk1LCAxLCAyNDgsIDEzNSwgOTUsIDEsIDE5NywgCisgICAgOTUsIDEsIDIyOCwgMjM3LCA5NSwgMSwgOCwgMjI4LCAxMTAsIDk1LCAxLCAyNTQsIDIzLCAxOTcsIDk1LCAxLCAyMjgsIAorICAgIDExMCwgOTUsIDEsIDIyOCwgOTYsIDk1LCAxLCAyMzMsIDEzNSwgOTUsIDEsIDIzMiwgNjEsIDk1LCAxLCAyMzIsIDI1NCwgCisgICAgOTUsIDEsIDIzMiwgMjQzLCA5NSwgMSwgMjE2LCA1NiwgOTUsIDEsIDI0NywgMTUzLCA5NSwgMSwgMjE2LCA0OCwgOTUsIDEsIAorICAgIDI0NywgMTUyLCA5NSwgMSwgMTc2LCA5NSwgMSwgMjQzLCAxMzUsIDk1LCAxLCA4LCAxNzYsIDk1LCAxLCAyMjQsIDg4LCA5NSwgCisgICAgMSwgMjI0LCA2NiwgOTUsIDEsIDIyOSwgNzcsIDk1LCAxLCAyMjksIDI4LCA5NSwgMSwgMjU0LCAyMywgMjI5LCA3NywgOTUsIAorICAgIDEsIDE2MiwgOTUsIDEsIDIxMSwgMTY1LCA5NSwgMSwgMjQyLCAyNDksIDk1LCAxLCAyNDIsIDIyNiwgOTUsIDEsIDIxNSwgCisgICAgMTY1LCA5NSwgMSwgMjQ2LCAyNiwgOTUsIDEsIDIyNywgMTY1LCA5NSwgMSwgMjI3LCAxNTAsIDk1LCAxLCAyMTUsIDE3NSwgCisgICAgOTUsIDEsIDI0NiwgMzMsIDk1LCAxLCA4LCAyMTUsIDE3NSwgOTUsIDEsIDgsIDI0NiwgMzMsIDk1LCAxLCAyMjMsIDEwNiwgCisgICAgMjE1LCAxNzUsIDk1LCAxLCAyMjAsIDEwMiwgOTUsIDEsIDIxOCwgMjIzLCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgCisgICAgMTQsIDk1LCAxLCAyMTUsIDE4MywgOTUsIDEsIDI0NiwgMzgsIDk1LCAxLCA4LCAyMTUsIDE4MywgOTUsIDEsIDIwNiwgOTUsIAorICAgIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAKKyAgICAyNTQsIDIzLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgCisgICAgMSwgMjU0LCAyMDksIDk1LCAxLCAyNDEsIDE4OSwgOTUsIDEsIDIyOSwgMTkyLCA5NSwgNSwgMjUzLCAyMjIsIDk1LCA1LCAKKyAgICAyMjMsIDEwNiwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIDEwNiwgMjUzLCAyMjIsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgCisgICAgMjU1LCA3MywgOTUsIDI1LCA1LCAyNTQsIDIwNSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCAyNTQsIDExNSwgCisgICAgOTUsIDI1LCA1LCA3NiwgOTUsIDI1LCA1LCAyMjYsIDE4MywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIAorICAgIDk4LCA5NSwgMjUsIDUsIDc1LCA5NSwgMjUsIDUsIDI0NSwgMTUwLCA5NSwgMjUsIDUsIDI0NSwgMTM4LCA5NSwgMjUsIDUsIAorICAgIDIyNiwgMjMyLCA5NSwgMjUsIDUsIDczLCA5NSwgMjUsIDUsIDI0MCwgMTE5LCA5NSwgMjUsIDUsIDI0MCwgMTE4LCA5NSwgCisgICAgMjUsIDUsIDI0MCwgMTE3LCA5NSwgMjUsIDUsIDIzNSwgMTg5LCA5NSwgMjUsIDUsIDIzNiwgNjAsIDk1LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgOTUsIDI1LCA1LCAyMzUsIDE1NiwgOTUsIDI1LCA1LCAyMzUsIDIzMSwgOTUsIDI1LCA1LCA3MCwgOTUsIDI1LCA1LCAKKyAgICAyMTQsIDIyOSwgOTUsIDI1LCA1LCAyMTQsIDIyOCwgOTUsIDI1LCA1LCAyMTQsIDIyNywgOTUsIDI1LCA1LCAyMTQsIDExOCwgCisgICAgOTUsIDI1LCA1LCAyMTQsIDIxMSwgOTUsIDI1LCA1LCAyMTQsIDE3OCwgOTUsIDI1LCA1LCAyMTEsIDExNywgOTUsIDI1LCA1LCAKKyAgICAyMTEsIDgsIDk1LCAyNSwgNSwgMjU0LCAyNDMsIDk1LCAyNSwgNSwgMjU0LCAyMzksIDk1LCAyNSwgNSwgMjQ1LCA4NiwgOTUsIAorICAgIDI1LCA1LCAyMjIsIDE4MywgMjQ1LCA4NiwgOTUsIDI1LCA1LCAyNDUsIDkyLCA5NSwgMjUsIDUsIDIyMiwgMTgzLCAyNDUsIAorICAgIDkyLCA5NSwgMjUsIDUsIDI1NCwgMjAxLCA5NSwgMjUsIDUsIDI0NSwgMTk1LCA5NSwgMjUsIDUsIDI1MywgMTkyLCA5NSwgCisgICAgMjUsIDUsIDIyNiwgMTM0LCA5NSwgMjUsIDUsIDIzMCwgMjUsIDk1LCAyNSwgNSwgMjI5LCA3OSwgOTUsIDEzOCwgMjIyLCAKKyAgICAyNTEsIDk1LCAxMzgsIDIxNiwgMTQsIDIyMiwgMjUxLCA5NSwgMTM4LCA0OCwgOTUsIDEzOCwgNTEsIDk1LCAxLCAyMTYsIAorICAgIDI4LCA5NSwgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgMSwgMjE2LCAyNCwgOTUsIAorICAgIDEsIDIxNiwgMjMsIDk1LCAxLCAyMTYsIDIyLCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjksIDk1LCAxLCAyMjMsIDEwNiwgCisgICAgMjE2LCAyOCwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI2LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjUsIDk1LCAxLCAyMjMsIAorICAgIDEwNiwgMjE2LCAyNCwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDIyLCA1NiwgMSwgMjU0LCAyMywgNzUsIDE0MSwgMSwgMjU0LCAKKyAgICAyMywgMjExLCA0NywgNDksIDI4LCAxNiwgMjI0LCAxNTQsIDQ5LCAyOCwgMTYsIDI0OCwgMTU4LCA0OSwgMjgsIDE2LCAyMjUsIAorICAgIDE3NSwgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjQ3LCAyMDEsIDQ5LCAKKyAgICAyOCwgMTYsIDIxNCwgMTYsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAxOTcsIDQ5LCAyOCwgMTYsIDIxNywgMTY5LCA0OSwgMjgsIDE2LCAyMjYsIDksIDQ5LCAyOCwgMTYsIDIxMCwgMjE3LCAKKyAgICA0OSwgMjgsIDE2LCAyMTAsIDIxOCwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDIzMywgMjM0LCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDY4LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjQ1LCAyNiwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIxNywgMiwgNDksIDI4LCAKKyAgICAxNiwgMjM0LCAxNjEsIDQ5LCAyOCwgMTYsIDI1NCwgNTgsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDI0NywgMjAxLCA0OSwgMjgsIAorICAgIDE2LCAyMTcsIDE3NSwgNDksIDI4LCAxNiwgMjE2LCAxNTksIDQ5LCAyOCwgMTYsIDIyNiwgMjA2LCAyNTQsIDIxLCA0OSwgCisgICAgMjgsIDE2LCAyNDIsIDE1OSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjI0LCAxNTMsIDQ5LCAyOCwgMTYsIDI1MCwgMTQ5LCAKKyAgICA0OSwgMjgsIDE2LCAyMTQsIDYsIDQ5LCAyOCwgMTYsIDIzNSwgMTY0LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgCisgICAgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyMSwgMjEzLCA0OSwgMjgsIDE2LCAKKyAgICAyMjYsIDAsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ2LCAyNTQsIDYxLCA0OSwgMjgsIDE2LCAyMjYsIDExMiwgMjU0LCAyMSwgNDksIAorICAgIDI4LCAxNiwgMjE0LCAxNSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCA2MiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICA1NiwgNDksIDI4LCAxNiwgMjM0LCAzNywgNDksIDI4LCAxNiwgMjIzLCA0NiwgNDksIDI4LCAxNiwgMjI1LCAxMDYsIDI1NCwgCisgICAgMjEsIDQ5LCAyOCwgMTYsIDIxNiwgODMsIDQ5LCAyOCwgMTYsIDI1NCwgMTIxLCA0OSwgMjgsIDE2LCAyMjEsIDE1OSwgNDksIAorICAgIDI4LCAxNiwgMjE3LCAxNzgsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIxNywgMTc4LCAyMzEsIDQwLCAyMTgsIDE0NCwgNDksIAorICAgIDI4LCAxNiwgMjI2LCAxMDcsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIxNiwgMTkwLCA0OSwgMjgsIDE2LCAyMzMsIDI3LCA0OSwgCisgICAgMjgsIDE2LCAyNDYsIDQxLCA0OSwgMjgsIDE2LCAyMTUsIDIyNywgNDksIDI4LCAxNiwgMjE2LCAyMzIsIDQ5LCAyOCwgMTYsIAorICAgIDIzMywgMjM3LCA0OSwgMjgsIDE2LCAyNTQsIDY4LCAyNDUsIDI2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCisgICAgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM2LCAxMiwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMjAwLCAyMTUsIDE5OCwgNDksIDI4LCAxNiwgMjI1LCAyMDAsIDQ5LCAyOCwgMTYsIDIyNCwgMTU4LCA0OSwgMjgsIAorICAgIDE2LCAyMzQsIDExLCA0OSwgMjgsIDE2LCAyNTAsIDgwLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjMsIDE0NiwgNDksIDI4LCAKKyAgICAxNiwgMjI2LCAxMiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjI2LCAxMCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjQwLCAxMDksIAorICAgIDQ5LCAyOCwgMTYsIDIyOSwgMjAzLCA0OSwgMjgsIDE2LCAyMjUsIDE1NiwgNDksIDI4LCAxNiwgMjM0LCAxMiwgMjU0LCAKKyAgICAxNDksIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyNTQsIDE0OSwgNDksIDI4LCAxNiwgMjE4LCAxMjMsIDQ5LCAyOCwgMTYsIAorICAgIDI0MiwgMTIzLCA0OSwgMjgsIDE2LCAyMzUsIDE2NCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAyMDYsIDIyOSwgOTUsIAorICAgIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjUsIDE1NSwgNDksIDI4LCAxNiwgMjMzLCAKKyAgICAyNTQsIDQ5LCAyOCwgMTYsIDIyNSwgMTU0LCA0OSwgMjgsIDE2LCAyMzMsIDIzNiwgNDksIDI4LCAxNiwgMjI1LCAyMDEsIAorICAgIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgCisgICAgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjEwLCAyMTUsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDIyOSwgOTUsIDQ5LCAKKyAgICAyOCwgMTYsIDI1NCwgNjAsIDIxNywgMTc2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgNDksIDI4LCAxNiwgCisgICAgMjMzLCAyMzUsIDQ5LCAyOCwgMTYsIDI0NSwgMTczLCA0OSwgMjgsIDE2LCAyNTAsIDE1MCwgNDksIDI4LCAxNiwgMjMwLCAKKyAgICAxOTgsIDIzNSwgMTYzLCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjUsIDEwNiwgMjI5LCAKKyAgICA5NSwgNDksIDI4LCAxNiwgMjI0LCAxNTksIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgMjAzLCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDg0LCA0OSwgMjgsIDE2LCAyMzIsIDU4LCA0OSwgMjgsIDE2LCAyMjYsIDEwLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIAorICAgIDEyLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDYwLCAyMjYsIDExLCA0OSwgMjgsIDE2LCAyMzMsIDE1MywgNDksIDI4LCAKKyAgICAxNiwgMjU0LCA4NSwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgMTc2LCA0OSwgMjgsIAorICAgIDE2LCAyMTcsIDE3OCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDI1MCwgODAsIDIyOSwgCisgICAgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgMTA2LCA0OSwgMjgsIDE2LCAyMjEsIDE2MCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjExLCAKKyAgICAxNTEsIDIzNCwgMzcsIDQ5LCAyOCwgMTYsIDIxNSwgMTk2LCA0OSwgMjgsIDE2LCAyMjQsIDE2MCwgNDksIDI4LCAxNiwgCisgICAgMjE1LCAyMDAsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIDE1NywgNDksIDI4LCAxNiwgMjE1LCAKKyAgICAxOTUsIDQ5LCAyOCwgMTYsIDIyNCwgMTU2LCA0OSwgMjgsIDE2LCAyNDIsIDE1OCwgNDksIDI4LCAxNiwgMjU0LCAxNCwgNDksIAorICAgIDI4LCAxNiwgMjQ1LCA2MCwgMjU0LCAxNCwgNDksIDI4LCAxNiwgMjI2LCAxMDcsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxNiwgCisgICAgMTg5LCAyNDUsIDY5LCA0OSwgMjgsIDE2LCAyMTYsIDE4OSwgMjQ1LCAyNSwgNDksIDI4LCAxNiwgMjE2LCAxOTEsIDI1NCwgCisgICAgNjMsIDQ5LCAyOCwgMTYsIDIxNiwgMTg0LCAyMzQsIDI0NywgMjU0LCA1NSwgNDksIDI4LCAxNiwgMjM0LCAxOTksIDQ5LCAKKyAgICAyOCwgMTYsIDI0NSwgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDExLCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjExLCAxMSwgCisgICAgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjE4LCAxNDUsIDQ5LCAyOCwgMTYsIDIzNCwgMzgsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjAyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIAorICAgIDI1NCwgMTQ5LCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjU0LCA2MiwgMjI5LCA5NSwgCisgICAgNDksIDI4LCAxNiwgMjU0LCA2NCwgNDksIDI4LCAxNiwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMjEwLCA0OSwgMjgsIAorICAgIDE2LCAyMTYsIDIyNCwgNDksIDI4LCAxNiwgMjM0LCAyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyNDUsIDEzNCwgMjUwLCA3MSwgCisgICAgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjQ2LCA0MiwgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjE1LCAyMTIsIAorICAgIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDIxNiwgMjM0LCAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAKKyAgICAyMzYsIDcsIDI1MCwgNzEsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1OSwgMjI2LCAxLCAyNTQsIDEwLCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI2LCAxLCAyNDgsIDI5LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDIyNSwgNDksIDI4LCAxNiwgMjQ3LCAyMjYsIDIyNiwgMSwgMjU0LCAxMSwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjI2LCAyMjYsIDEsIDI1NCwgMTEsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDI0NywgMjI2LCAyMjYsIDEsIDI0OCwgCisgICAgMjksIDQ5LCAyOCwgMTYsIDIxNSwgMjE2LCA0OSwgMjgsIDE2LCAyNTQsIDE1LCA0OSwgMjgsIDE2LCAyMzYsIDE0LCA0OSwgCisgICAgMjgsIDE2LCAyNDcsIDI0NiwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIyNSwgMCwgMjU0LCAxNiwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICAyMTEsIDI1NCwgMTMsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyNTQsIDE2LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjMxLCAKKyAgICAzNCwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIzMSwgNDUsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyNDIsIDE2MCwgNDksIAorICAgIDI4LCAxNiwgMjU0LCAyMTEsIDI0MiwgMTU3LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjI1LCAwLCAyNDIsIDE2MCwgNDksIAorICAgIDI4LCAxNiwgMjMxLCAxNTEsIDIyNCwgMTY1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDI1NCwgMTUxLCAKKyAgICAyMjQsIDE2NSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyNDgsIDI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgCisgICAgMjMxLCAxNTEsIDI1NCwgMTUxLCAyNDgsIDI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNSwgMjA1LCAKKyAgICAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE2LCAyMjgsIAorICAgIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE2LCAyMjgsIDIzMywgMzUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzEsIDE1MSwgMjMzLCAzNSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMjUsIDM5LCAyNDAsIDEwNywgNDksIAorICAgIDI4LCAxNiwgMjM1LCAxNjksIDIxNiwgMjUxLCAyNDAsIDEwOCwgNDksIDI4LCAxNiwgMjU0LCA2MCwgMjE2LCAyNTEsIDI0MCwgCisgICAgMTA4LCA0OSwgMjgsIDE2LCAyNDQsIDE3MiwgMjE2LCAyMjUsIDQ5LCAyOCwgMTYsIDI0NCwgMTcyLCAyMzAsIDE0MywgNDksIAorICAgIDI4LCAxNiwgMjQ0LCAxNzIsIDI0NywgMjMwLCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE0LCAxMCwgMjQwLCAxMDcsIDQ5LCAKKyAgICAyOCwgMTYsIDIzMSwgMTUxLCAyMjQsIDE2NCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMjUsIDM5LCAyMTYsIAorICAgIDIyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDI0MiwgMTU1LCAyMzAsIDI2LCAyNTQsIDYzLCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1NSwgMjMwLCAyNiwgMjQ3LCAyMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTQ4LCAyMzQsIDI0NywgMjQzLCAyMzYsIDIxMywgCisgICAgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDEzLCA0OSwgMjgsIDE2LCAyMzYsIDExLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjU0LCAKKyAgICAyMiwgMjQ4LCAyNywgMjQwLCAxMDYsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMTkwLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOSwgMjAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjI5LCAxOTgsIDI0MCwgMTA3LCAKKyAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDI0OCwgMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAKKyAgICAyNDcsIDI0MywgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIzNCwgMTgyLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI4LCAyMzQsIAorICAgIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOCwgMjM0LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjMxLCAxOTEsIDI1MCwgNzMsIDI0NywgMjMwLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjMxLCAxOTEsIAorICAgIDI1MCwgNzMsIDIzMCwgMTQzLCA0OSwgMjgsIDE2LCAyNDQsIDEyMiwgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgNDksIAorICAgIDI4LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAyNTAsIDczLCAyMTcsIDE3OSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIyOSwgCisgICAgOTcsIDQ5LCAyOCwgMTYsIDI1MCwgNzQsIDIwOSwgMjQ5LCA0OSwgMjgsIDE2LCAyNTAsIDc0LCAyMzQsIDM2LCA0OSwgMjgsIAorICAgIDE2LCAyNTAsIDc0LCAyMTksIDksIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDAsIDE1NCwgMjExLCAxMCwgMjE2LCAyMjksIAorICAgIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDUsIDE0OSwgMjU0LCA4NiwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjE1LCAyMDYsIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTUsIDIwNiwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNiwgMjI5LCA0OSwgMjgsIAorICAgIDE2LCAyNDcsIDIzOCwgMjU0LCA2NSwgMjQ2LCA0MiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMzAsIDE0MSwgCisgICAgMjE2LCAyMzMsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjQ3LCAyMjIsIDI0NSwgMzYsIDI0NywgMTM5LCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE1LCAyMTQsIDIyNiwgMjExLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgCisgICAgMjU0LCA2NSwgMjQ2LCA0MiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIzMCwgMTQxLCAyMTYsIDIzMywgMjQ3LCAKKyAgICAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDI0NywgMjIyLCAyNDUsIDM2LCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAKKyAgICAxMCwgMjE1LCAyMTQsIDIyNiwgMjExLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQzLCA0OSwgMjQ3LCAyMzcsIDQ5LCAyOCwgCisgICAgMTYsIDI0MywgNDksIDIxMSwgOSwgNDksIDI4LCAxNiwgMjQ3LCAyNDUsIDI1NCwgNjUsIDIzMCwgMTk5LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDI0NSwgMjU0LCA2NSwgMjMxLCA3MywgNDksIDI4LCAxNiwgMjQ3LCAyNDUsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDI0NSwgMjE2LCAxODIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyMTYsIDE4MiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIAorICAgIDIxNiwgMTgzLCAyNDcsIDE4NiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDIxNiwgMTgzLCAyMTUsIDIwNywgNDksIDI4LCAxNiwgCisgICAgMjE5LCAxNjMsIDIxNiwgMTgzLCAyMTYsIDIyMiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ0LCA0OSwgMjgsIDE2LCAKKyAgICAyMTksIDE2MywgMjUzLCAyNDUsIDI0NywgMTg2LCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDUsIDIxNSwgMjA3LCAKKyAgICA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDUsIDIxNiwgMjIyLCA0OSwgMjgsIDE2LCAyNDcsIDIyMywgMjQzLCAzMCwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMjksIDIyNiwgMTM0LCA0OSwgMjgsIDE2LCAyMTgsIDEzNywgNDksIDI4LCAxNiwgMjU0LCA3LCAKKyAgICAxOTAsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjEzLCAxMjQsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjQzLCAxMzUsIDQ5LCAyOCwgCisgICAgMTYsIDI1NCwgNywgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIzNCwgMTgyLCA0OSwgMjgsIDE2LCAyNTQsIDcsIAorICAgIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjI4LCAyMzMsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyMjksIDk2LCAKKyAgICAyMzEsIDQ0LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NiwgMjMxLCA0NCwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIAorICAgIDIyOSwgOTYsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NiwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMzgsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI5LCA5NiwgMjM0LCAxOTYsIDI4LCAxNiwgMjE5LCAKKyAgICAxNTUsIDI1MiwgMTM1LCAyOCwgMTYsIDUyLCAyNTIsIDEzNSwgMjgsIDE2LCA0MCwgMjUyLCAxMzUsIDI4LCAxNiwgMjIzLCAKKyAgICA1MCwgNDAsIDI1MiwgMTM1LCAyOCwgMTYsIDI0OCwgMTU1LCAyNTIsIDEzNSwgMjgsIDE2LCAyMTksIDI1MSwgMjUyLCAxMzUsIAorICAgIDI4LCAxNiwgNDMsIDIyMywgNzcsIDUwLCAyOCwgMTYsIDQ0LCAyMjMsIDc3LCA1MCwgMjgsIDE2LCAyMjMsIDc3LCAyNDcsIAorICAgIDExOCwgMjgsIDE2LCAyNDgsIDE5NiwgMjIxLCAxNjMsIDI4LCAxNiwgMjQ4LCAyMjIsIDI1MCwgMjQ5LCAyOCwgMTYsIDIyMSwgCisgICAgMTYzLCAyOCwgMTYsIDI0OSwgMjM0LCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgMTExLCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgCisgICAgMTEwLCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgMTA5LCAyOCwgMTYsIDI0NCwgMTMxLCAyOCwgMTYsIDI0NCwgMTMyLCA1MSwgCisgICAgMjgsIDE2LCAyNTEsIDE0OCwgNzgsIDI4LCAxNiwgMjUxLCAyNCwgMjgsIDE2LCAyNTEsIDE1OSwgMjgsIDE2LCAxMjcsIDI4LCAKKyAgICAxNiwgMjI2LCAxOTMsIDIxOCwgMTYzLCAyOCwgMTYsIDIxNSwgNTcsIDIxOCwgMTYzLCAyOCwgMTYsIDIxNiwgMTQyLCAyMTgsIAorICAgIDE2MywgMjgsIDE2LCAyNDQsIDEwLCAyMTgsIDE2MywgMjgsIDE2LCAyNDQsIDgwLCAyMTgsIDE2MywgMjgsIDE2LCAyMTksIAorICAgIDEyNCwgMjE4LCAxNjMsIDI4LCAxNiwgMjE5LCAxMjIsIDI0MywgMjUwLCAyOCwgMTYsIDI0NCwgOCwgMjQzLCAyNTAsIDI4LCAKKyAgICAxNiwgMjQzLCAyMDMsIDI1MCwgMTQsIDI4LCAxNiwgMjQzLCAyMDMsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIAorICAgIDE2LCAyNDMsIDIwMywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgMTYsIDI1MSwgNjcsIDI1MCwgMTQsIDI4LCAKKyAgICAxNiwgMjQ1LCA3LCAyNTAsIDE0LCAyOCwgMTYsIDI0NSwgNywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgMTYsIAorICAgIDI0NSwgNywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgMTYsIDI0NiwgODMsIDI1MCwgMTMsIDI4LCAxNiwgCisgICAgMjQ2LCA4MywgMjUwLCAxMiwgMjgsIDE2LCAyMzAsIDg1LCAyMzEsIDkwLCAyMjMsIDYxLCAyOCwgMTYsIDUyLCAyMjAsIDc1LCAKKyAgICAyOCwgMTYsIDUyLCAyNDQsIDY1LCAyOCwgMTYsIDI0NCwgNjYsIDIxNCwgMTYzLCAyOCwgMTYsIDI0NCwgNjYsIDI0NiwgCisgICAgMTA2LCAyOCwgMTYsIDIyOSwgMTg4LCAyMTQsIDE2MywgMjgsIDE2LCAyMjksIDE4OCwgMjQ2LCAxMDYsIDI4LCAxNiwgMjIwLCAKKyAgICA3NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjIwLCA3NiwgMjQ2LCAxMDYsIDI4LCAxNiwgMjI0LCAyMiwgMTM4LCAyMjAsIDc1LCAKKyAgICAyOCwgMTYsIDIyNCwgMjIsIDEzOCwgMjQ0LCA2NSwgMjgsIDE2LCAyNDksIDIxNiwgMjE2LCA4NywgMjgsIDE2LCAyNDksIAorICAgIDg1LCAyMTYsIDg3LCAyOCwgMTYsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIDE2LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAKKyAgICAxNiwgMjI0LCA0LCAyNTQsIDE0MiwgMjgsIDE2LCAyMjQsIDQsIDI1MiwgMTIyLCAyOCwgMTYsIDIzMCwgODgsIDIyMywgNjEsIAorICAgIDI4LCAxNiwgMjExLCAyNTEsIDIyMywgNjEsIDI4LCAxNiwgMTYzLCAyMjMsIDYxLCAyOCwgMTYsIDIyNCwgMjIsIDIyMywgCisgICAgNjEsIDI4LCAxNiwgMjQ1LCAxODksIDIyMywgNjEsIDI4LCAxNiwgMjE5LCAxMTgsIDIyMywgNjEsIDI4LCAxNiwgMjE2LCAKKyAgICAxNjAsIDIyMywgNjEsIDI4LCAxNiwgMjE5LCAxMTAsIDIyMywgNjEsIDI4LCAxNiwgMTIzLCAyNDAsIDIxMSwgMjE1LCA3MSwgCisgICAgMjIzLCA2MSwgMjgsIDE2LCAyMTEsIDE3OSwgMjI4LCA0MywgMjgsIDE2LCA5NiwgMjI4LCA0MywgMjgsIDE2LCAyNTAsIDM2LCAKKyAgICAyMTEsIDE3OSwgMjI4LCA0MywgMjgsIDE2LCA0MiwgMjI4LCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgNDIsIDIyOCwgNDQsIAorICAgIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAKKyAgICAyMjgsIDQ0LCAxMjAsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0MywgMjExLCAyNTMsIDI4LCAxNiwgCisgICAgMjE1LCAyMjYsIDIyOCwgNDQsIDQzLCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDQsIDIxMSwgMjUzLCAKKyAgICAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyNCwgCisgICAgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyNCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIAorICAgIDIyOCwgNDQsIDEyMCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjAsIDQ0LCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMzAsIDEyOSwgMjI4LCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgMjMwLCAxMjksIDIyOCwgNDQsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIxNSwgMjIzLCAyMjgsIDQ0LCAxMjQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjIzLCAyMjgsIDQ0LCAxMjQsIAorICAgIDI1MSwgMjIxLCAyOCwgMTYsIDIyNiwgNCwgMjI4LCA0MywgMjgsIDE2LCAyMTMsIDEzMiwgMjI4LCA0MywgMjgsIDE2LCAKKyAgICAyMjgsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMjcsIDIwMywgMjI4LCA0MywgMjgsIDE2LCAyNDksIDI0MSwgMjI4LCA0NCwgCisgICAgMjExLCAyNTMsIDI4LCAxNiwgMjQ5LCAyNDEsIDIyOCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDI1MSwgMTQ2LCAyOCwgMTYsIAorICAgIDIxMSwgMjUxLCAyMjgsIDQ3LCAyOCwgMTYsIDE2MywgMjI4LCA0NywgMjgsIDE2LCAyMjQsIDIyLCAyMjgsIDQ3LCAyOCwgCisgICAgMTYsIDI0NSwgMTg5LCAyMjgsIDQ3LCAyOCwgMTYsIDIxOSwgMTE4LCAyMjgsIDQ3LCAyOCwgMTYsIDIxNiwgMTYwLCAyMjgsIAorICAgIDQ3LCAyOCwgMTYsIDIxOSwgMTEwLCAyMjgsIDQ3LCAyOCwgMTYsIDEyMywgMjQwLCAyMTEsIDIxNSwgNzEsIDIyOCwgNDcsIAorICAgIDI4LCAxNiwgMzgsIDIxOCwgMTM5LCAyOCwgMTYsIDM4LCAyMTgsIDI0MCwgMjE4LCAxMzksIDI4LCAxNiwgMzgsIDIxNSwgCisgICAgMjM0LCAyOCwgMTYsIDM4LCAyMTUsIDIzMywgMjgsIDE2LCAzOCwgMjE1LCAyMzIsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgCisgICAgMjM0LCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIDIzMywgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAyMzIsIDI4LCAxNiwgMzgsIAorICAgIDI1MywgMTg5LCAyNDcsIDEyMCwgMjgsIDE2LCAzOCwgMjQ0LCA3MiwgMjgsIDE2LCAzOCwgMjQ0LCA3MSwgMjgsIDE2LCAzOCwgCisgICAgMjQ0LCA3MCwgMjgsIDE2LCAzOCwgMjQ0LCA2OSwgMjgsIDE2LCAzOCwgMjQ0LCA2OCwgMjgsIDE2LCAyNTIsIDU4LCAyNTIsIAorICAgIDc0LCAyOCwgMTYsIDI0NSwgMTQzLCAyNTIsIDc0LCAyOCwgMTYsIDI1MiwgNTgsIDIxNiwgMTExLCAyOCwgMTYsIDI0NSwgCisgICAgMTQzLCAyMTYsIDExMSwgMjgsIDE2LCAyNTIsIDU4LCAyMTksIDgwLCAyOCwgMTYsIDI0NSwgMTQzLCAyMTksIDgwLCAyOCwgCisgICAgMTYsIDI1MiwgNTgsIDIyNSwgMTE1LCAyOCwgMTYsIDI0NSwgMTQzLCAyMjUsIDExNSwgMjgsIDE2LCAzOCwgMjU1LCAxNCwgCisgICAgMjgsIDE2LCAzOCwgMjE4LCAxNjUsIDI4LCAxNiwgMzgsIDIxNiwgMjM4LCAyOCwgMTYsIDM4LCAyMTgsIDE2NiwgMjgsIDE2LCAKKyAgICAzOCwgMjMxLCAxNjIsIDI4LCAxNiwgMzgsIDIzMSwgMTYxLCAyOCwgMTYsIDM4LCAyNTUsIDEzLCAyOCwgMTYsIDM4LCAyMzIsIAorICAgIDExMiwgMjgsIDE2LCAyNTMsIDI1NCwgMjE0LCAxNjMsIDI4LCAxNiwgMjUzLCAyNTQsIDI0NiwgMTA2LCAyOCwgMTYsIDM4LCAKKyAgICAyNDcsIDEzNSwgMjgsIDE2LCAzOCwgMjIyLCAyMzEsIDI4LCAxNiwgMzgsIDI0NCwgNTgsIDI4LCAxNiwgMzgsIDIxOSwgNzYsIAorICAgIDI4LCAxNiwgMzgsIDI1MiwgMzgsIDI4LCAxNiwgMzgsIDUyLCAyMTYsIDE5LCAyOCwgMTYsIDM4LCAyMTUsIDIxMSwgMjE2LCAKKyAgICAxOSwgMjgsIDE2LCAyMjIsIDIzNSwgMjgsIDE2LCAyMTgsIDc1LCAyOCwgMTYsIDIxMCwgMTU5LCAyOCwgMTYsIDIyNSwgCisgICAgMTA3LCAyOCwgMTYsIDIzMSwgMjUsIDI4LCAxNiwgMjQ0LCAxNywgMjgsIDE2LCAyNDksIDEzOCwgMjgsIDE2LCAyNDgsIDc4LCAKKyAgICAyOCwgMTYsIDI0MiwgMTUwLCAyMjgsIDQ4LCAyMTksIDk1LCAyOCwgMTYsIDI0MiwgMTUwLCAyMjgsIDQ4LCAyMjgsIDc1LCAKKyAgICAyMTksIDk1LCAyOCwgMTYsIDIxNiwgMCwgMjgsIDE2LCAyMTUsIDk1LCAyOCwgMTYsIDIzNSwgMTkzLCAyMTUsIDk1LCAyOCwgCisgICAgMTYsIDIxNSwgOTYsIDIxOSwgOTUsIDI4LCAxNiwgMjE1LCA5NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgCisgICAgMTAyLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk5LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk4LCAyOCwgMTYsIDIyNiwgCisgICAgMTQ4LCAyMTgsIDk3LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk2LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk1LCAyOCwgCisgICAgMTYsIDIyNiwgMTQ4LCAyMTgsIDk0LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDkzLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIAorICAgIDkyLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDEwMSwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAxMDAsIDI4LCAxNiwgMjQxLCAKKyAgICAyNDUsIDI4LCAxNiwgMjI5LCAxMDUsIDI4LCAxNiwgMjQ1LCAxNDMsIDY0LCAyMTgsIDEzMywgMjgsIDE2LCAyNDgsIDcxLCAKKyAgICAyMTksIDk1LCAyOCwgMTYsIDM4LCAxMjQsIDI1MSwgMTY5LCAyOCwgMTYsIDM4LCAxMjAsIDI1MSwgMTY5LCAyOCwgMTYsIAorICAgIDM4LCAyNDIsIDAsIDI4LCAxNiwgMzgsIDIxOSwgNjcsIDIyNSwgNDMsIDI4LCAxNiwgMjI1LCAyMTYsIDc4LCAyOCwgMTYsIAorICAgIDIyNSwgMjE2LCAxMjAsIDc4LCAyOCwgMTYsIDE2MywgMjI1LCAyMTYsIDc4LCAyOCwgMTYsIDI0MiwgMTgyLCAyMTQsIDE2MywgCisgICAgMjgsIDE2LCAyNDIsIDE4MiwgMjQ2LCAxMDYsIDI4LCAxNiwgMiwgMjQ0LCAxMDAsIDI4LCAxNiwgMjQ4LCAxODAsIDI4LCAKKyAgICAxNiwgMjQ4LCAxODEsIDI1NCwgMTU0LCAyOCwgMTYsIDIzMSwgMTMzLCAyOCwgMTYsIDIzMiwgMTI5LCAyOCwgMTYsIDI1MSwgCisgICAgMTQzLCAyOCwgMTYsIDIyMCwgMTU0LCAyMTEsIDI1MywgMjgsIDE2LCAyMjAsIDE1NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjMwLCAKKyAgICAxODQsIDI4LCAxNiwgMjMwLCAxODUsIDI1MSwgMjIxLCAyOCwgMTYsIDIyMCwgMTQ4LCAyMTEsIDI1MywgMjgsIDE2LCAyMjAsIAorICAgIDE0OCwgMjUxLCAyMjEsIDI4LCAxNiwgMjQzLCAyMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDI0MywgMjIwLCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMzIsIDEzMCwgMjI1LCAxODAsIDIyMywgNjEsIDI4LCAxNiwgMjMyLCAxMzAsIDIzNiwgNCwgMjIzLCA2MSwgCisgICAgMjgsIDE2LCAyNTEsIDE0NCwgMjIzLCA2MSwgMjgsIDE2LCAyMjAsIDE1NCwgMjIzLCA2MSwgMjgsIDE2LCAyMzAsIDE4NSwgCisgICAgMjIzLCA2MSwgMjgsIDE2LCAyMjAsIDE0OCwgMjIzLCA2MSwgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAKKyAgICAyMjQsIDE3NCwgMjI1LCAxNzksIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgCisgICAgMywgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjI1LCAxODAsIDI0NywgMjExLCAKKyAgICAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjI1LCAxNzksIDI4LCAxNiwgMjE2LCAyNDksIAorICAgIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIDMsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIAorICAgIDIyNCwgMTc0LCAyMzYsIDQsIDI0NywgMjExLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgCisgICAgMjM2LCA0LCAyNDcsIDIxMCwgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgNCwgCisgICAgMjQ3LCAyMDksIDI4LCAxNiwgMjQ5LCAxMzMsIDI4LCAxNiwgMjQyLCAxMjYsIDI1MSwgNjcsIDI1MCwgMTQsIDI4LCAxNiwgCisgICAgMjQyLCAxMjYsIDI0NSwgNywgMjUwLCAxNCwgMjgsIDE2LCA0MiwgMjUzLCAxNTgsIDI4LCAxNiwgMjEzLCAxNTEsIDI4LCAKKyAgICAxNiwgMjI1LCAxNCwgMjgsIDE2LCAyNTAsIDUsIDI4LCAxNiwgMjIxLCAyMDMsIDI4LCAxNiwgMjUwLCA5LCAyOCwgMTYsIAorICAgIDIxNiwgNywgMjgsIDE2LCAyMjQsIDI0MiwgMjgsIDE2LCAyMjQsIDI0MywgMjQ0LCA2MCwgMjgsIDE2LCAyMjEsIDIwNCwgCisgICAgMjQ0LCA2MCwgMjgsIDE2LCAyMTYsIDgsIDIyMywgNTgsIDI4LCAxNiwgMjI1LCAxNjMsIDIxOCwgNjYsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyOSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE4LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMDgsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIwMSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkzLCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAxODcsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4NiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMTg1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyOCwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjI3LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIyNSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjMsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyMiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjIxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMjAsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxOSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE3LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMTYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxNSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjE0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTMsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MiwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMTkxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTAsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDE4OSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjksIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIxOCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAxLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4NiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg1LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMjcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyNiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjI1LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyMSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjIwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIxNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTIsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIxMSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMDksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA2LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMDUsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjAzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDIsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMCwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMTk5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5NywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTUsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDE5NCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTkyLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5MCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg5LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAxODgsIDM4LCAyNiwgMjgsIDIxNSwgMjA4LCAzOCwgMjYsIDI4LCAyMTYsIDIyMywgMzgsIDI2LCAKKyAgICAyOCwgMjI1LCAxODgsIDI2LCAyOCwgMjMzLCAzMSwgMjMwLCAxNDIsIDMxLCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDEsIAorICAgIDIyMiwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQwLCAyMTQsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIyLCAKKyAgICAyNDEsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMiwgMjQwLCAyMTMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjMsIDE4MCwgCisgICAgMzEsIDI1MCwgMTc0LCAxODAsIDMxLCAyNDMsIDIyOSwgMjUwLCAzNSwgMTgwLCAzMSwgMjMwLCAxNzcsIDE4MCwgMzEsIAorICAgIDI1MiwgMTMwLCAxODAsIDMxLCAyMzQsIDE3OSwgMjE5LCA3OSwgMTgwLCAzMSwgMjQ5LCAxNzksIDE4MCwgMzEsIDI1MywgCisgICAgMjMzLCAxODAsIDMxLCAyMjYsIDE2MywgMTgwLCAzMSwgMjUxLCAxNTMsIDIyNiwgMTMwLCAxODAsIDMxLCAyNDgsIDczLCAKKyAgICAxNzcsIDI0NywgMTc5LCAxODAsIDMxLCAyNDcsIDE3NiwgMTgwLCAzMSwgMjEwLCAyMjIsIDE4MCwgMzEsIDIzNSwgMjQ3LCAKKyAgICAxODAsIDMxLCAyMjUsIDE5NywgMTgwLCAzMSwgMjIzLCAxMjcsIDE4MCwgMzEsIDI0OSwgMTg5LCAxODAsIDMxLCAyNDEsIAorICAgIDYwLCAyNTIsIDE4NCwgMTgwLCAzMSwgMjEyLCA1OSwgMTgwLCAzMSwgMjQ0LCAzOSwgMTgwLCAzMSwgMjU0LCAyNDYsIDE4MCwgCisgICAgMzEsIDIyMywgODksIDE4MCwgMzEsIDIyMywgNjUsIDE4MCwgMzEsIDI0NSwgMjIxLCAxODAsIDMxLCAyMzUsIDUzLCAxODAsIAorICAgIDMxLCAyNDksIDE4NCwgMTgwLCAzMSwgMjQ1LCAxNDIsIDE4MCwgMzEsIDI0NiwgNTIsIDE4MCwgMzEsIDI1MCwgMTQ1LCAKKyAgICAxODAsIDMxLCAyNDgsIDgyLCAxODAsIDMxLCAyMywgMjIzLCA2NCwgMTgwLCAzMSwgMjI2LCA4MSwgMTgwLCAzMSwgMjMzLCAKKyAgICAzNCwgMTgwLCAzMSwgMjQ5LCAyNTQsIDE4MCwgMzEsIDIzNCwgNzcsIDE4MCwgMzEsIDI0MywgODYsIDE4MCwgMzEsIDIxOCwgCisgICAgMTEyLCAxODAsIDMxLCAyMjQsIDEzMCwgMTgwLCAzMSwgMjQzLCAyMjgsIDE4MCwgMzEsIDIyMywgNjYsIDE4MCwgMzEsIAorICAgIDIzMywgNzEsIDE3NywgMjMwLCAxNTcsIDE4MCwgMzEsIDIyMywgNjIsIDE4MCwgMzEsIDI0MiwgMTY4LCAyMTYsIDQyLCAKKyAgICAyMzEsIDc2LCAxODAsIDMxLCAyNDUsIDE0NCwgMTgwLCAzMSwgMjE4LCAxMjQsIDE4MCwgMzEsIDI0MiwgMTI4LCAxODAsIAorICAgIDMxLCAyNDUsIDEzNiwgMTgwLCAzMSwgMjI1LCAyMzUsIDE4MCwgMzEsIDIyMiwgMjI1LCAxODAsIDMxLCAyNDQsIDU5LCAKKyAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAxOTMsIDE4MCwgMzEsIDIzMSwgODksIDE4MCwgCisgICAgMzEsIDI0NSwgNjEsIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIxMiwgMTgwLCAzMSwgMjUwLCAwLCAyMzAsIAorICAgIDExMCwgMTgwLCAzMSwgMjQyLCAxMDYsIDE4MCwgMzEsIDI0MywgODcsIDIzNSwgMjU1LCAxODAsIDMxLCAyMzEsIDE0MSwgCisgICAgMTgwLCAzMSwgMjU1LCAxMCwgMTgwLCAzMSwgMjQ1LCAxNTcsIDE4MCwgMzEsIDI0NiwgMTA5LCAxODAsIDMxLCAyMTIsIDQyLCAKKyAgICAxODAsIDMxLCAyMTksIDE1MCwgMTgwLCAzMSwgMjM1LCAyMjIsIDE4MCwgMzEsIDI0OCwgNDIsIDE4MCwgMzEsIDI0OCwgCisgICAgMTYwLCAxODAsIDMxLCAyNDcsIDIwOCwgMTgwLCAzMSwgMjQ1LCAyOSwgMTgwLCAzMSwgMjIwLCAxMTUsIDE4MCwgMzEsIAorICAgIDIxOCwgMTI4LCAxODAsIDMxLCAyNDIsIDIsIDE4MCwgMzEsIDI0OSwgMjEyLCAxODAsIDMxLCAyNDksIDI1MSwgMTgwLCAzMSwgCisgICAgMjQ0LCAxNzcsIDE4MCwgMzEsIDI1NCwgMjEyLCAxODAsIDMxLCAyNDksIDIxMSwgMTgwLCAzMSwgMjI2LCAxOTcsIDIxNiwgCisgICAgMTk2LCAyMTMsIDI0MiwgMTgwLCAzMSwgMjQ3LCAyMzIsIDE4MCwgMzEsIDIzMywgMTI0LCAxODAsIDMxLCAyNDQsIDEzLCAKKyAgICAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTEwLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgCisgICAgMTA1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTU4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAKKyAgICAyMSwgMTYxLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTg5LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgCisgICAgMTc0LCAyMSwgMTk0LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTk4LCAyNDksIDE0OSwgMjIyLCAyMDIsIAorICAgIDIxNCwgMTc0LCAyMSwgMTk1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMjAwLCAyNDksIDE0OSwgMjIyLCAKKyAgICAyMDIsIDIxNiwgMjQzLCAyMSwgMTEwLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTA1LCAyNDksIDE0OSwgCisgICAgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTU4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTYxLCAyNDksIAorICAgIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTg5LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTk0LCAKKyAgICAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTk4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgCisgICAgMTk1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMjAwLCAxMSwgMjMsIDYsIDYxLCAxMSwgMjMsIDYsIAorICAgIDI1MywgMTU4LCAxMSwgMjMsIDYsIDI1MSwgNjYsIDExLCAyMywgNiwgMjQ5LCA2MCwgMTEsIDIzLCA2LCA3NSwgMTEsIDIzLCAKKyAgICA2LCAyNDUsIDYsIDExLCAyMywgNiwgMjQzLCAyMDIsIDExLCAyMywgNiwgMjQyLCA2MCwgMTEsIDIzLCA2LCA3MywgMTEsIAorICAgIDIzLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCA2LCAyMzUsIDIzLCAxMSwgMjMsIDYsIDE1NiwgMTEsIDIzLCA2LCAxOTMsIDExLCAKKyAgICAyMywgNiwgMjMwLCAyNSwgMTEsIDIzLCA2LCA3NiwgMTEsIDIzLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCA2LCAyMjQsIDk2LCAKKyAgICAxMSwgMjMsIDYsIDE1MywgMTEsIDIzLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDYsIDcwLCAKKyAgICAxMSwgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDYsIDIxMiwgOTgsIDExLCAyMywgNiwgMjExLCAxNzgsIDExLCAyMywgNiwgCisgICAgMjExLCAxMTcsIDExLCAyMywgNiwgMjEwLCAxNTksIDExLCAyMywgNCwgNjEsIDExLCAyMywgNCwgMjUzLCAxNTgsIDExLCAKKyAgICAyMywgNCwgMjUxLCA2NiwgMTEsIDIzLCA0LCAyNDksIDYwLCAxMSwgMjMsIDQsIDc1LCAxMSwgMjMsIDQsIDI0NSwgNiwgMTEsIAorICAgIDIzLCA0LCAyNDMsIDIwMiwgMTEsIDIzLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDQsIDczLCAxMSwgMjMsIDQsIDIzNSwgMTQ0LCAKKyAgICAxMSwgMjMsIDQsIDIzNSwgMjMsIDExLCAyMywgNCwgMTU2LCAxMSwgMjMsIDQsIDE5MywgMTEsIDIzLCA0LCAyMzAsIDI1LCAKKyAgICAxMSwgMjMsIDQsIDc2LCAxMSwgMjMsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDQsIDIyNCwgOTYsIDExLCAyMywgNCwgMTUzLCAKKyAgICAxMSwgMjMsIDQsIDIyMiwgOTEsIDExLCAyMywgNCwgMjE3LCAxNTIsIDExLCAyMywgNCwgNzAsIDExLCAyMywgNCwgMjE0LCAKKyAgICAxMDUsIDExLCAyMywgNCwgMjEyLCA5OCwgMTEsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCA0LCAyMTEsIDExNywgMTEsIAorICAgIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDMyLCA2LCA2MSwgMTEsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDMyLCA2LCAyNTEsIDY2LCAKKyAgICAxMSwgMzIsIDYsIDI0OSwgNjAsIDExLCAzMiwgNiwgNzUsIDExLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMzIsIDYsIDI0MywgCisgICAgMjAyLCAxMSwgMzIsIDYsIDI0MiwgNjAsIDExLCAzMiwgNiwgNzMsIDExLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzMiwgNiwgCisgICAgMjM1LCAyMywgMTEsIDMyLCA2LCAxNTYsIDExLCAzMiwgNiwgMTkzLCAxMSwgMzIsIDYsIDIzMCwgMjUsIDExLCAzMiwgNiwgCisgICAgNzYsIDExLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDMyLCA2LCAxNTMsIDExLCAzMiwgNiwgCisgICAgMjIyLCA5MSwgMTEsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDMyLCA2LCA3MCwgMTEsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDMyLCAKKyAgICA2LCAyMTIsIDk4LCAxMSwgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMzIsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzIsIDQsIDYxLCAxMSwgMzIsIDQsIDI1MywgMTU4LCAxMSwgMzIsIDQsIDI1MSwgNjYsIDExLCAzMiwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDMyLCA0LCA3NSwgMTEsIDMyLCA0LCAyNDUsIDYsIDExLCAzMiwgNCwgMjQzLCAyMDIsIDExLCAzMiwgCisgICAgNCwgNzMsIDExLCAzMiwgNCwgMjM1LCAxNDQsIDExLCAzMiwgNCwgMjM1LCAyMywgMTEsIDMyLCA0LCAxNTYsIDExLCAzMiwgCisgICAgNCwgMTkzLCAxMSwgMzIsIDQsIDIzMCwgMjUsIDExLCAzMiwgNCwgNzYsIDExLCAzMiwgNCwgMjI2LCAxMDUsIDExLCAzMiwgCisgICAgNCwgMjI0LCA5NiwgMTEsIDMyLCA0LCAxNTMsIDExLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIAorICAgIDMyLCA0LCA3MCwgMTEsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzIsIDQsIDIxMSwgMTc4LCAKKyAgICAxMSwgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCA2LCA2MSwgMTEsIDIzLCAzMiwgCisgICAgNiwgMjUzLCAxNTgsIDExLCAyMywgMzIsIDYsIDI1MSwgNjYsIDExLCAyMywgMzIsIDYsIDI0OSwgNjAsIDExLCAyMywgMzIsIAorICAgIDYsIDc1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIDYsIDExLCAyMywgMzIsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyNDIsIDYwLCAxMSwgMjMsIDMyLCA2LCA3MywgMTEsIDIzLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAyMywgMzIsIDYsIDIzNSwgCisgICAgMjMsIDExLCAyMywgMzIsIDYsIDE1NiwgMTEsIDIzLCAzMiwgNiwgMTkzLCAxMSwgMjMsIDMyLCA2LCAyMzAsIDI1LCAxMSwgCisgICAgMjMsIDMyLCA2LCA3NiwgMTEsIDIzLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAyMywgMzIsIDYsIDIyNCwgOTYsIDExLCAyMywgCisgICAgMzIsIDYsIDE1MywgMTEsIDIzLCAzMiwgNiwgMjIyLCA5MSwgMTEsIDIzLCAzMiwgNiwgMjE3LCAxNTIsIDExLCAyMywgMzIsIAorICAgIDYsIDcwLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNiwgMjEyLCA5OCwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjExLCAxNzgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgCisgICAgNCwgNjEsIDExLCAyMywgMzIsIDQsIDI1MywgMTU4LCAxMSwgMjMsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMjMsIDMyLCA0LCA3NSwgMTEsIDIzLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMjMsIDMyLCA0LCAyNDMsIAorICAgIDIwMiwgMTEsIDIzLCAzMiwgNCwgMjQyLCA2MCwgMTEsIDIzLCAzMiwgNCwgNzMsIDExLCAyMywgMzIsIDQsIDIzNSwgMTQ0LCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDMyLCA0LCAxNTYsIDExLCAyMywgMzIsIDQsIDE5MywgMTEsIDIzLCAKKyAgICAzMiwgNCwgMjMwLCAyNSwgMTEsIDIzLCAzMiwgNCwgNzYsIDExLCAyMywgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDMyLCAKKyAgICA0LCAyMjQsIDk2LCAxMSwgMjMsIDMyLCA0LCAxNTMsIDExLCAyMywgMzIsIDQsIDIyMiwgOTEsIDExLCAyMywgMzIsIDQsIAorICAgIDIxNywgMTUyLCAxMSwgMjMsIDMyLCA0LCA3MCwgMTEsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDQsIDIxMiwgCisgICAgOTgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDMyLCA0LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAxMTksIDYsIDYxLCAxMSwgMTE5LCA2LCAyNTEsIDY2LCAxMSwgMTE5LCA2LCAyNDksIDYwLCAxMSwgMTE5LCAKKyAgICA2LCAyNDMsIDIwMiwgMTEsIDExOSwgNiwgMjM1LCAxNDQsIDExLCAxMTksIDYsIDIzNSwgMjMsIDExLCAxMTksIDYsIDIzMCwgCisgICAgMjUsIDExLCAxMTksIDYsIDc2LCAxMSwgMTE5LCA2LCAyMjYsIDEwNSwgMTEsIDExOSwgNiwgMjI0LCA5NiwgMTEsIDExOSwgCisgICAgNiwgMjIyLCA5MSwgMTEsIDExOSwgNiwgMjE3LCAxNTIsIDExLCAxMTksIDYsIDcwLCAxMSwgMTE5LCA2LCAyMTQsIDEwNSwgCisgICAgMTEsIDExOSwgNiwgMjEyLCA5OCwgMTEsIDExOSwgNiwgMjExLCAxNzgsIDExLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMTE5LCAKKyAgICA2LCAyMTAsIDE1OSwgMTEsIDExOSwgNCwgNjEsIDExLCAxMTksIDQsIDI1MywgMTU4LCAxMSwgMTE5LCA0LCAyNTEsIDY2LCAKKyAgICAxMSwgMTE5LCA0LCAyNDksIDYwLCAxMSwgMTE5LCA0LCAyNDUsIDYsIDExLCAxMTksIDQsIDI0MiwgNjAsIDExLCAxMTksIDQsIAorICAgIDczLCAxMSwgMTE5LCA0LCAyMzUsIDE0NCwgMTEsIDExOSwgNCwgMjM1LCAyMywgMTEsIDExOSwgNCwgMTU2LCAxMSwgMTE5LCAKKyAgICA0LCAxOTMsIDExLCAxMTksIDQsIDIzMCwgMjUsIDExLCAxMTksIDQsIDIyNiwgMTA1LCAxMSwgMTE5LCA0LCAyMjQsIDk2LCAKKyAgICAxMSwgMTE5LCA0LCAxNTMsIDExLCAxMTksIDQsIDIyMiwgOTEsIDExLCAxMTksIDQsIDIxNywgMTUyLCAxMSwgMTE5LCA0LCAKKyAgICA3MCwgMTEsIDExOSwgNCwgMjE0LCAxMDUsIDExLCAxMTksIDQsIDIxMiwgOTgsIDExLCAxMTksIDQsIDIxMSwgMTc4LCAxMSwgCisgICAgMTE5LCA0LCAyMTEsIDExNywgMTEsIDExOSwgNCwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA2LCA2MSwgMTEsIDIzLCAxMTksIAorICAgIDYsIDI1MywgMTU4LCAxMSwgMjMsIDExOSwgNiwgMjUxLCA2NiwgMTEsIDIzLCAxMTksIDYsIDI0OSwgNjAsIDExLCAyMywgCisgICAgMTE5LCA2LCA3NSwgMTEsIDIzLCAxMTksIDYsIDI0NSwgNiwgMTEsIDIzLCAxMTksIDYsIDI0MywgMjAyLCAxMSwgMjMsIAorICAgIDExOSwgNiwgMjQyLCA2MCwgMTEsIDIzLCAxMTksIDYsIDczLCAxMSwgMjMsIDExOSwgNiwgMjM1LCAxNDQsIDExLCAyMywgCisgICAgMTE5LCA2LCAyMzUsIDIzLCAxMSwgMjMsIDExOSwgNiwgMTU2LCAxMSwgMjMsIDExOSwgNiwgMTkzLCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjMwLCAyNSwgMTEsIDIzLCAxMTksIDYsIDc2LCAxMSwgMjMsIDExOSwgNiwgMjI2LCAxMDUsIDExLCAyMywgMTE5LCA2LCAKKyAgICAyMjQsIDk2LCAxMSwgMjMsIDExOSwgNiwgMTUzLCAxMSwgMjMsIDExOSwgNiwgMjIyLCA5MSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIxNywgMTUyLCAxMSwgMjMsIDExOSwgNiwgNzAsIDExLCAyMywgMTE5LCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIxMiwgOTgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDIzLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA0LCA2MSwgMTEsIDIzLCAxMTksIDQsIDI1MywgMTU4LCAxMSwgMjMsIDExOSwgCisgICAgNCwgMjUxLCA2NiwgMTEsIDIzLCAxMTksIDQsIDI0OSwgNjAsIDExLCAyMywgMTE5LCA0LCA3NSwgMTEsIDIzLCAxMTksIDQsIAorICAgIDI0NSwgNiwgMTEsIDIzLCAxMTksIDQsIDI0MywgMjAyLCAxMSwgMjMsIDExOSwgNCwgMjQyLCA2MCwgMTEsIDIzLCAxMTksIAorICAgIDQsIDczLCAxMSwgMjMsIDExOSwgNCwgMjM1LCAxNDQsIDExLCAyMywgMTE5LCA0LCAyMzUsIDIzLCAxMSwgMjMsIDExOSwgNCwgCisgICAgMTU2LCAxMSwgMjMsIDExOSwgNCwgMTkzLCAxMSwgMjMsIDExOSwgNCwgMjMwLCAyNSwgMTEsIDIzLCAxMTksIDQsIDc2LCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjI2LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMjQsIDk2LCAxMSwgMjMsIDExOSwgNCwgMTUzLCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjIyLCA5MSwgMTEsIDIzLCAxMTksIDQsIDIxNywgMTUyLCAxMSwgMjMsIDExOSwgNCwgNzAsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDQsIDIxMiwgOTgsIDExLCAyMywgMTE5LCA0LCAyMTEsIAorICAgIDE3OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgNCwgMjEwLCAxNTksIDExLCAxMzMsIDYsIDYxLCAKKyAgICAxMSwgMTMzLCA2LCAyNTMsIDE1OCwgMTEsIDEzMywgNiwgMjQ5LCA2MCwgMTEsIDEzMywgNiwgNzUsIDExLCAxMzMsIDYsIAorICAgIDI0NSwgNiwgMTEsIDEzMywgNiwgMjQzLCAyMDIsIDExLCAxMzMsIDYsIDIzNSwgMTQ0LCAxMSwgMTMzLCA2LCAyMzUsIDIzLCAKKyAgICAxMSwgMTMzLCA2LCAxNTYsIDExLCAxMzMsIDYsIDE5MywgMTEsIDEzMywgNiwgMjMwLCAyNSwgMTEsIDEzMywgNiwgNzYsIAorICAgIDExLCAxMzMsIDYsIDIyNiwgMTA1LCAxMSwgMTMzLCA2LCAyMjQsIDk2LCAxMSwgMTMzLCA2LCAyMjIsIDkxLCAxMSwgMTMzLCAKKyAgICA2LCAyMTcsIDE1MiwgMTEsIDEzMywgNiwgNzAsIDExLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMTMzLCA2LCAyMTIsIDk4LCAKKyAgICAxMSwgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDEzMywgNiwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDYxLCAxMSwgMTMzLCA0LCAKKyAgICAyNTMsIDE1OCwgMTEsIDEzMywgNCwgMjUxLCA2NiwgMTEsIDEzMywgNCwgMjQ5LCA2MCwgMTEsIDEzMywgNCwgNzUsIDExLCAKKyAgICAxMzMsIDQsIDI0NSwgNiwgMTEsIDEzMywgNCwgMjQzLCAyMDIsIDExLCAxMzMsIDQsIDI0MiwgNjAsIDExLCAxMzMsIDQsIAorICAgIDczLCAxMSwgMTMzLCA0LCAyMzUsIDE0NCwgMTEsIDEzMywgNCwgMjM1LCAyMywgMTEsIDEzMywgNCwgMTU2LCAxMSwgMTMzLCAKKyAgICA0LCAxOTMsIDExLCAxMzMsIDQsIDIzMCwgMjUsIDExLCAxMzMsIDQsIDc2LCAxMSwgMTMzLCA0LCAyMjYsIDEwNSwgMTEsIAorICAgIDEzMywgNCwgMjI0LCA5NiwgMTEsIDEzMywgNCwgMTUzLCAxMSwgMTMzLCA0LCAyMjIsIDkxLCAxMSwgMTMzLCA0LCAyMTcsIAorICAgIDE1MiwgMTEsIDEzMywgNCwgNzAsIDExLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMTMzLCAKKyAgICA0LCAyMTEsIDE3OCwgMTEsIDEzMywgNCwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMTM5LCA2LCA2MSwgCisgICAgMTEsIDEzOSwgNiwgMjUzLCAxNTgsIDExLCAxMzksIDYsIDI0OSwgNjAsIDExLCAxMzksIDYsIDc1LCAxMSwgMTM5LCA2LCAKKyAgICAyNDUsIDYsIDExLCAxMzksIDYsIDI0MywgMjAyLCAxMSwgMTM5LCA2LCA3MywgMTEsIDEzOSwgNiwgMjM1LCAxNDQsIDExLCAKKyAgICAxMzksIDYsIDIzNSwgMjMsIDExLCAxMzksIDYsIDE1NiwgMTEsIDEzOSwgNiwgMTkzLCAxMSwgMTM5LCA2LCA3NiwgMTEsIAorICAgIDEzOSwgNiwgMjIyLCA5MSwgMTEsIDEzOSwgNiwgMjE3LCAxNTIsIDExLCAxMzksIDYsIDcwLCAxMSwgMTM5LCA2LCAyMTQsIAorICAgIDEwNSwgMTEsIDEzOSwgNiwgMjEyLCA5OCwgMTEsIDEzOSwgNiwgMjExLCAxNzgsIDExLCAxMzksIDYsIDIxMSwgMTE3LCAxMSwgCisgICAgMTM5LCA0LCA2MSwgMTEsIDEzOSwgNCwgMjUzLCAxNTgsIDExLCAxMzksIDQsIDI1MSwgNjYsIDExLCAxMzksIDQsIDI0OSwgCisgICAgNjAsIDExLCAxMzksIDQsIDc1LCAxMSwgMTM5LCA0LCAyNDUsIDYsIDExLCAxMzksIDQsIDI0MywgMjAyLCAxMSwgMTM5LCA0LCAKKyAgICAyNDIsIDYwLCAxMSwgMTM5LCA0LCA3MywgMTEsIDEzOSwgNCwgMjM1LCAxNDQsIDExLCAxMzksIDQsIDIzNSwgMjMsIDExLCAKKyAgICAxMzksIDQsIDE1NiwgMTEsIDEzOSwgNCwgMTkzLCAxMSwgMTM5LCA0LCAyMzAsIDI1LCAxMSwgMTM5LCA0LCA3NiwgMTEsIAorICAgIDEzOSwgNCwgMjI2LCAxMDUsIDExLCAxMzksIDQsIDIyNCwgOTYsIDExLCAxMzksIDQsIDE1MywgMTEsIDEzOSwgNCwgMjIyLCAKKyAgICA5MSwgMTEsIDEzOSwgNCwgMjE3LCAxNTIsIDExLCAxMzksIDQsIDcwLCAxMSwgMTM5LCA0LCAyMTQsIDEwNSwgMTEsIDEzOSwgCisgICAgNCwgMjEyLCA5OCwgMTEsIDEzOSwgNCwgMjExLCAxNzgsIDExLCAxMzksIDQsIDIxMSwgMTE3LCAxMSwgMTM5LCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDIzLCAxMzMsIDYsIDYxLCAxMSwgMjMsIDEzMywgNiwgMjUzLCAxNTgsIDExLCAyMywgMTMzLCA2LCAyNTEsIAorICAgIDY2LCAxMSwgMjMsIDEzMywgNiwgMjQ5LCA2MCwgMTEsIDIzLCAxMzMsIDYsIDc1LCAxMSwgMjMsIDEzMywgNiwgMjQ1LCA2LCAKKyAgICAxMSwgMjMsIDEzMywgNiwgMjQzLCAyMDIsIDExLCAyMywgMTMzLCA2LCAyNDIsIDYwLCAxMSwgMjMsIDEzMywgNiwgNzMsIAorICAgIDExLCAyMywgMTMzLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAxMzMsIDYsIDIzNSwgMjMsIDExLCAyMywgMTMzLCA2LCAxNTYsIAorICAgIDExLCAyMywgMTMzLCA2LCAxOTMsIDExLCAyMywgMTMzLCA2LCAyMzAsIDI1LCAxMSwgMjMsIDEzMywgNiwgNzYsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIyNCwgOTYsIDExLCAyMywgMTMzLCA2LCAxNTMsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDEzMywgNiwgMjE3LCAxNTIsIDExLCAyMywgMTMzLCA2LCA3MCwgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDEzMywgNiwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgMTc4LCAxMSwgCisgICAgMjMsIDEzMywgNiwgMjExLCAxMTcsIDExLCAyMywgMTMzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDQsIDYxLCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjUzLCAxNTgsIDExLCAyMywgMTMzLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDEzMywgNCwgMjQ5LCA2MCwgCisgICAgMTEsIDIzLCAxMzMsIDQsIDc1LCAxMSwgMjMsIDEzMywgNCwgMjQ1LCA2LCAxMSwgMjMsIDEzMywgNCwgMjQzLCAyMDIsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDEzMywgNCwgNzMsIDExLCAyMywgMTMzLCA0LCAyMzUsIDE0NCwgMTEsIAorICAgIDIzLCAxMzMsIDQsIDIzNSwgMjMsIDExLCAyMywgMTMzLCA0LCAxNTYsIDExLCAyMywgMTMzLCA0LCAxOTMsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMzAsIDI1LCAxMSwgMjMsIDEzMywgNCwgNzYsIDExLCAyMywgMTMzLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIyNCwgOTYsIDExLCAyMywgMTMzLCA0LCAxNTMsIDExLCAyMywgMTMzLCA0LCAyMjIsIDkxLCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjE3LCAxNTIsIDExLCAyMywgMTMzLCA0LCA3MCwgMTEsIDIzLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxMTcsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCA2LCA2MSwgMTEsIDM1LCA2LCAyNTMsIDE1OCwgMTEsIDM1LCA2LCAyNTEsIAorICAgIDY2LCAxMSwgMzUsIDYsIDI0OSwgNjAsIDExLCAzNSwgNiwgNzUsIDExLCAzNSwgNiwgMjQ1LCA2LCAxMSwgMzUsIDYsIDI0MywgCisgICAgMjAyLCAxMSwgMzUsIDYsIDI0MiwgNjAsIDExLCAzNSwgNiwgNzMsIDExLCAzNSwgNiwgMjM1LCAxNDQsIDExLCAzNSwgNiwgCisgICAgMjM1LCAyMywgMTEsIDM1LCA2LCAxNTYsIDExLCAzNSwgNiwgMTkzLCAxMSwgMzUsIDYsIDIzMCwgMjUsIDExLCAzNSwgNiwgCisgICAgNzYsIDExLCAzNSwgNiwgMjI2LCAxMDUsIDExLCAzNSwgNiwgMjI0LCA5NiwgMTEsIDM1LCA2LCAxNTMsIDExLCAzNSwgNiwgCisgICAgMjIyLCA5MSwgMTEsIDM1LCA2LCAyMTcsIDE1MiwgMTEsIDM1LCA2LCA3MCwgMTEsIDM1LCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAKKyAgICA2LCAyMTIsIDk4LCAxMSwgMzUsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzUsIDQsIDYxLCAxMSwgMzUsIDQsIDI1MywgMTU4LCAxMSwgMzUsIDQsIDI1MSwgNjYsIDExLCAzNSwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDM1LCA0LCA3NSwgMTEsIDM1LCA0LCAyNDUsIDYsIDExLCAzNSwgNCwgMjQzLCAyMDIsIDExLCAzNSwgCisgICAgNCwgMjQyLCA2MCwgMTEsIDM1LCA0LCA3MywgMTEsIDM1LCA0LCAyMzUsIDE0NCwgMTEsIDM1LCA0LCAyMzUsIDIzLCAxMSwgCisgICAgMzUsIDQsIDE1NiwgMTEsIDM1LCA0LCAxOTMsIDExLCAzNSwgNCwgMjMwLCAyNSwgMTEsIDM1LCA0LCA3NiwgMTEsIDM1LCA0LCAKKyAgICAyMjYsIDEwNSwgMTEsIDM1LCA0LCAyMjQsIDk2LCAxMSwgMzUsIDQsIDE1MywgMTEsIDM1LCA0LCAyMjIsIDkxLCAxMSwgMzUsIAorICAgIDQsIDIxNywgMTUyLCAxMSwgMzUsIDQsIDcwLCAxMSwgMzUsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDQsIDIxMiwgOTgsIDExLCAKKyAgICAzNSwgNCwgMjExLCAxNzgsIDExLCAzNSwgNCwgMjExLCAxMTcsIDExLCAzNSwgNCwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDYsIAorICAgIDYxLCAxMSwgMzUsIDIzLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgNiwgMjUxLCA2NiwgMTEsIDM1LCAyMywgNiwgMjQ5LCAKKyAgICA2MCwgMTEsIDM1LCAyMywgNiwgNzUsIDExLCAzNSwgMjMsIDYsIDI0NSwgNiwgMTEsIDM1LCAyMywgNiwgMjQzLCAyMDIsIAorICAgIDExLCAzNSwgMjMsIDYsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDYsIDczLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDE0NCwgMTEsIAorICAgIDM1LCAyMywgNiwgMjM1LCAyMywgMTEsIDM1LCAyMywgNiwgMTU2LCAxMSwgMzUsIDIzLCA2LCAxOTMsIDExLCAzNSwgMjMsIAorICAgIDYsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDYsIDc2LCAxMSwgMzUsIDIzLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjI0LCA5NiwgMTEsIDM1LCAyMywgNiwgMTUzLCAxMSwgMzUsIDIzLCA2LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCA2LCAyMTcsIAorICAgIDE1MiwgMTEsIDM1LCAyMywgNiwgNzAsIDExLCAzNSwgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCA2LCAyMTIsIDk4LCAKKyAgICAxMSwgMzUsIDIzLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgNiwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzUsIDIzLCA0LCA2MSwgMTEsIDM1LCAyMywgNCwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDQsIDI1MSwgNjYsIAorICAgIDExLCAzNSwgMjMsIDQsIDI0OSwgNjAsIDExLCAzNSwgMjMsIDQsIDc1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDYsIDExLCAzNSwgCisgICAgMjMsIDQsIDI0MywgMjAyLCAxMSwgMzUsIDIzLCA0LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCA0LCA3MywgMTEsIDM1LCAyMywgCisgICAgNCwgMjM1LCAxNDQsIDExLCAzNSwgMjMsIDQsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDQsIDE1NiwgMTEsIDM1LCAyMywgNCwgCisgICAgMTkzLCAxMSwgMzUsIDIzLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCA0LCA3NiwgMTEsIDM1LCAyMywgNCwgMjI2LCAxMDUsIAorICAgIDExLCAzNSwgMjMsIDQsIDIyNCwgOTYsIDExLCAzNSwgMjMsIDQsIDE1MywgMTEsIDM1LCAyMywgNCwgMjIyLCA5MSwgMTEsIAorICAgIDM1LCAyMywgNCwgMjE3LCAxNTIsIDExLCAzNSwgMjMsIDQsIDcwLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAKKyAgICAyMywgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIAorICAgIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNiwgNjEsIDExLCAzNSwgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDMyLCAKKyAgICA2LCAyNTEsIDY2LCAxMSwgMzUsIDMyLCA2LCAyNDksIDYwLCAxMSwgMzUsIDMyLCA2LCA3NSwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjQ1LCA2LCAxMSwgMzUsIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDM1LCAzMiwgNiwgMjQyLCA2MCwgMTEsIDM1LCAzMiwgNiwgCisgICAgNzMsIDExLCAzNSwgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDMyLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDMyLCA2LCAxNTYsIAorICAgIDExLCAzNSwgMzIsIDYsIDE5MywgMTEsIDM1LCAzMiwgNiwgMjMwLCAyNSwgMTEsIDM1LCAzMiwgNiwgNzYsIDExLCAzNSwgCisgICAgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzUsIDMyLCA2LCAxNTMsIDExLCAzNSwgMzIsIAorICAgIDYsIDIyMiwgOTEsIDExLCAzNSwgMzIsIDYsIDIxNywgMTUyLCAxMSwgMzUsIDMyLCA2LCA3MCwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDYsIDIxMiwgOTgsIDExLCAzNSwgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyMTEsIDExNywgMTEsIDM1LCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMzIsIDQsIDYxLCAxMSwgMzUsIDMyLCA0LCAyNTMsIAorICAgIDE1OCwgMTEsIDM1LCAzMiwgNCwgMjUxLCA2NiwgMTEsIDM1LCAzMiwgNCwgMjQ5LCA2MCwgMTEsIDM1LCAzMiwgNCwgNzUsIAorICAgIDExLCAzNSwgMzIsIDQsIDI0NSwgNiwgMTEsIDM1LCAzMiwgNCwgMjQzLCAyMDIsIDExLCAzNSwgMzIsIDQsIDI0MiwgNjAsIAorICAgIDExLCAzNSwgMzIsIDQsIDczLCAxMSwgMzUsIDMyLCA0LCAyMzUsIDE0NCwgMTEsIDM1LCAzMiwgNCwgMjM1LCAyMywgMTEsIAorICAgIDM1LCAzMiwgNCwgMTU2LCAxMSwgMzUsIDMyLCA0LCAxOTMsIDExLCAzNSwgMzIsIDQsIDIzMCwgMjUsIDExLCAzNSwgMzIsIAorICAgIDQsIDc2LCAxMSwgMzUsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjI0LCA5NiwgMTEsIDM1LCAzMiwgNCwgCisgICAgMTUzLCAxMSwgMzUsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzUsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAzMiwgNCwgNzAsIAorICAgIDExLCAzNSwgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA0LCAyMTEsIDE3OCwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjExLCAxMTcsIDExLCAzNSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNiwgNjEsIAorICAgIDExLCAzNSwgMjMsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCAyNDksIDYwLCAxMSwgMzUsIDIzLCAzMiwgNiwgNzUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDMyLCA2LCA3MywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM1LCAyMywgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDE1NiwgMTEsIDM1LCAyMywgMzIsIDYsIDE5MywgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCA3NiwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDE1MiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDcwLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNCwgNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTMsIAorICAgIDE1OCwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDksIDYwLCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgNzUsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIAorICAgIDM1LCAyMywgMzIsIDQsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDMyLCA0LCA3MywgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgCisgICAgMTQ0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAyMywgMTEsIDM1LCAyMywgMzIsIDQsIDE1NiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDE5MywgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDMyLCA0LCA3NiwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCA5NiwgMTEsIDM1LCAyMywgMzIsIDQsIDE1MywgMTEsIAorICAgIDM1LCAyMywgMzIsIDQsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAyMywgMzIsIDQsIAorICAgIDcwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAyMywgMzIsIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMjMwLCAxMzgsIDYsIDYxLCAxMSwgMjMwLCAxMzgsIDYsIDI1MywgMTU4LCAxMSwgMjMwLCAxMzgsIDYsIAorICAgIDI1MSwgNjYsIDExLCAyMzAsIDEzOCwgNiwgMjQ5LCA2MCwgMTEsIDIzMCwgMTM4LCA2LCA3NSwgMTEsIDIzMCwgMTM4LCA2LCAKKyAgICAyNDUsIDYsIDExLCAyMzAsIDEzOCwgNiwgMjQzLCAyMDIsIDExLCAyMzAsIDEzOCwgNiwgMjQyLCA2MCwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCA3MywgMTEsIDIzMCwgMTM4LCA2LCAyMzUsIDE0NCwgMTEsIDIzMCwgMTM4LCA2LCAyMzUsIDIzLCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDE1NiwgMTEsIDIzMCwgMTM4LCA2LCAxOTMsIDExLCAyMzAsIDEzOCwgNiwgMjMwLCAyNSwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCA3NiwgMTEsIDIzMCwgMTM4LCA2LCAyMjYsIDEwNSwgMTEsIDIzMCwgMTM4LCA2LCAyMjQsIDk2LCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDE1MywgMTEsIDIzMCwgMTM4LCA2LCAyMjIsIDkxLCAxMSwgMjMwLCAxMzgsIDYsIDIxNywgMTUyLCAxMSwgCisgICAgMjMwLCAxMzgsIDYsIDcwLCAxMSwgMjMwLCAxMzgsIDYsIDIxNCwgMTA1LCAxMSwgMjMwLCAxMzgsIDYsIDIxMiwgOTgsIDExLCAKKyAgICAyMzAsIDEzOCwgNiwgMjExLCAxNzgsIDExLCAyMzAsIDEzOCwgNiwgMjExLCAxMTcsIDExLCAyMzAsIDEzOCwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAyMzAsIDEzOCwgNCwgNjEsIDExLCAyMzAsIDEzOCwgNCwgMjUzLCAxNTgsIDExLCAyMzAsIDEzOCwgNCwgCisgICAgMjUxLCA2NiwgMTEsIDIzMCwgMTM4LCA0LCAyNDksIDYwLCAxMSwgMjMwLCAxMzgsIDQsIDc1LCAxMSwgMjMwLCAxMzgsIDQsIAorICAgIDI0NSwgNiwgMTEsIDIzMCwgMTM4LCA0LCAyNDMsIDIwMiwgMTEsIDIzMCwgMTM4LCA0LCAyNDIsIDYwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDczLCAxMSwgMjMwLCAxMzgsIDQsIDIzNSwgMTQ0LCAxMSwgMjMwLCAxMzgsIDQsIDIzNSwgMjMsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgMTU2LCAxMSwgMjMwLCAxMzgsIDQsIDE5MywgMTEsIDIzMCwgMTM4LCA0LCAyMzAsIDI1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDc2LCAxMSwgMjMwLCAxMzgsIDQsIDIyNiwgMTA1LCAxMSwgMjMwLCAxMzgsIDQsIDIyNCwgOTYsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgMTUzLCAxMSwgMjMwLCAxMzgsIDQsIDIyMiwgOTEsIDExLCAyMzAsIDEzOCwgNCwgMjE3LCAxNTIsIDExLCAKKyAgICAyMzAsIDEzOCwgNCwgNzAsIDExLCAyMzAsIDEzOCwgNCwgMjE0LCAxMDUsIDExLCAyMzAsIDEzOCwgNCwgMjEyLCA5OCwgMTEsIAorICAgIDIzMCwgMTM4LCA0LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTM4LCA0LCAyMTEsIDExNywgMTEsIDIzMCwgMTM4LCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDMyLCA0LCAyNDcsIDExOSwgNzMsIDExLCAzMiwgNCwgMjQ3LCAxMTksIDIzNSwgMTQ0LCAxMSwgMjMsIDYsIAorICAgIDI1NCwgMTQzLCAxMSwgMjMsIDYsIDI1MiwgMjYsIDExLCAyMywgNiwgMjQzLCAxMDcsIDExLCAyMywgNiwgMjQ4LCA1NCwgCisgICAgMTEsIDIzLCA2LCAyNDUsIDEwMCwgMTEsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDYsIDI0NSwgNjMsIDExLCAyMywgNiwgCisgICAgMjE2LCAxNzksIDExLCAyMywgNiwgMjM1LCAxODUsIDExLCAyMywgNiwgMjM0LCAyMjIsIDExLCAyMywgNiwgMjMzLCA5OCwgCisgICAgMTEsIDIzLCA2LCAyMzAsIDEwMiwgMTEsIDIzLCA2LCAyMjcsIDIzNywgMTEsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDIzLCA2LCAKKyAgICAyMjYsIDE5OSwgMTEsIDIzLCA2LCAyMjUsIDEwOCwgMTEsIDIzLCA2LCAyMjMsIDM3LCAxMSwgMjMsIDYsIDIxNiwgMTgwLCAKKyAgICA4NywgMTEsIDIzLCA2LCAyMTksIDE3NywgMTEsIDIzLCA2LCAyMTcsIDQxLCAxMSwgMjMsIDYsIDIxNCwgMTU3LCAxMSwgMjMsIAorICAgIDYsIDIyNSwgMTMzLCAxMSwgMjMsIDYsIDI1MCwgMTEwLCAxMSwgMjMsIDYsIDIyNCwgMTYxLCAxMSwgMjMsIDYsIDIyNiwgCisgICAgMjAxLCAxMSwgMjMsIDIyOSwgMjIxLCAxMSwgMjMsIDQsIDI1NCwgMTQzLCAxMSwgMjMsIDQsIDI1MiwgMjYsIDExLCAyMywgCisgICAgNCwgMjQzLCAxMDcsIDExLCAyMywgNCwgMjQ4LCA1NCwgMTEsIDIzLCA0LCAyNDUsIDEwMCwgMTEsIDIzLCA0LCAyMTAsIDg1LCAKKyAgICAxMSwgMjMsIDQsIDI0NSwgNjMsIDExLCAyMywgNCwgMjE2LCAxNzksIDExLCAyMywgNCwgMjM1LCAxODUsIDExLCAyMywgNCwgCisgICAgMjM0LCAyMjIsIDExLCAyMywgNCwgMjMzLCA5OCwgMTEsIDIzLCA0LCAyMzAsIDEwMiwgMTEsIDIzLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDIzLCA0LCAyMTEsIDE1NywgMTEsIDIzLCA0LCAyMjYsIDE5OSwgMTEsIDIzLCA0LCAyMjUsIDEwOCwgMTEsIDIzLCA0LCAKKyAgICAyMjMsIDM3LCAxMSwgMjMsIDQsIDQwLCAyMTksIDE3NywgMTEsIDIzLCA0LCAyMTksIDE3NywgMTEsIDIzLCA0LCAyMTcsIAorICAgIDQxLCAxMSwgMjMsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIDQsIDIyNSwgMTMzLCAxMSwgMjMsIDQsIDI1MCwgMTEwLCAxMSwgCisgICAgMjMsIDQsIDIyNCwgMTYxLCAxMSwgMjMsIDQsIDIyNiwgMjAxLCAxMSwgMjMsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDIzLCAKKyAgICAyNDUsIDEwMSwgODcsIDExLCAyMywgMjE2LCAxODAsIDg3LCAxMSwgMjMsIDIzNCwgMjIzLCA4NywgMTEsIDIzLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAyMywgMjIzLCAzOCwgODcsIDExLCAyMywgMjI1LCAxMDksIDg3LCAxMSwgMzIsIDYsIDI1NCwgMTQzLCAKKyAgICAxMSwgMzIsIDYsIDI1MiwgMjYsIDExLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAzMiwgNiwgMjQ4LCA1NCwgMTEsIDMyLCA2LCAKKyAgICAyNDUsIDEwMCwgMTEsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzIsIDYsIDI0NSwgNjMsIDExLCAzMiwgNiwgMjE2LCAxNzksIAorICAgIDExLCAzMiwgNiwgMjM1LCAxODUsIDExLCAzMiwgNiwgMjM0LCAyMjIsIDExLCAzMiwgNiwgMjMzLCA5OCwgMTEsIDMyLCA2LCAKKyAgICAyMzAsIDEwMiwgMTEsIDMyLCA2LCAyMjcsIDIzNywgMTEsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDMyLCA2LCAyMjYsIDE5OSwgCisgICAgMTEsIDMyLCA2LCAyMjUsIDEwOCwgMTEsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDMyLCAKKyAgICA2LCAyMTksIDE3NywgMTEsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMzIsIDYsIDIyNSwgCisgICAgMTMzLCAxMSwgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMzIsIDYsIDIyNCwgMTYxLCAxMSwgMzIsIDYsIDIyNiwgMjAxLCAxMSwgCisgICAgMzIsIDIyOSwgMjIxLCAxMSwgMzIsIDQsIDI1NCwgMTQzLCAxMSwgMzIsIDQsIDI1MiwgMjYsIDExLCAzMiwgNCwgMjQzLCAKKyAgICAxMDcsIDExLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIDMyLCA0LCAyNDUsIDEwMCwgMTEsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzIsIAorICAgIDQsIDI0NSwgNjMsIDExLCAzMiwgNCwgMjE2LCAxNzksIDExLCAzMiwgNCwgMjM1LCAxODUsIDExLCAzMiwgNCwgMjM0LCAKKyAgICAyMjIsIDExLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDMyLCA0LCAyMjcsIDIzNywgMTEsIAorICAgIDMyLCA0LCAyMTEsIDE1NywgMTEsIDMyLCA0LCAyMjYsIDE5OSwgMTEsIDMyLCA0LCAyMjUsIDEwOCwgMTEsIDMyLCA0LCAKKyAgICAyMjMsIDM3LCAxMSwgMzIsIDQsIDQwLCAyMTksIDE3NywgMTEsIDMyLCA0LCAyMTksIDE3NywgMTEsIDMyLCA0LCAyMTcsIAorICAgIDQxLCAxMSwgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMzIsIDQsIDIyNSwgMTMzLCAxMSwgMzIsIDQsIDI1MCwgMTEwLCAxMSwgCisgICAgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMzIsIDQsIDIyNiwgMjAxLCAxMSwgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDMyLCAKKyAgICAyNDUsIDEwMSwgODcsIDExLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDMyLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAzMiwgMjIzLCAzOCwgODcsIDExLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgMjMsIDMyLCA2LCAyNTQsIAorICAgIDE0MywgMTEsIDIzLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDIzLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAyMywgMzIsIDYsIDI0OCwgCisgICAgNTQsIDExLCAyMywgMzIsIDYsIDI0NSwgMTAwLCAxMSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIAorICAgIDYzLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE3OSwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxODUsIDExLCAyMywgMzIsIDYsIDIzNCwgCisgICAgMjIyLCAxMSwgMjMsIDMyLCA2LCAyMzMsIDk4LCAxMSwgMjMsIDMyLCA2LCAyMzAsIDEwMiwgMTEsIDIzLCAzMiwgNiwgMjI3LCAKKyAgICAyMzcsIDExLCAyMywgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA2LCAyMjYsIDE5OSwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjI1LCAxMDgsIDExLCAyMywgMzIsIDYsIDIyMywgMzcsIDExLCAyMywgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAKKyAgICAzMiwgNiwgMjE5LCAxNzcsIDExLCAyMywgMzIsIDYsIDIxNywgNDEsIDExLCAyMywgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMjUsIDEzMywgMTEsIDIzLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAyMywgMzIsIDYsIDIyNCwgMTYxLCAxMSwgCisgICAgMjMsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIDIzLCAzMiwgMjI5LCAyMjEsIDExLCAyMywgMzIsIDQsIDI1NCwgMTQzLCAxMSwgCisgICAgMjMsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMjMsIDMyLCA0LCAyNDMsIDEwNywgMTEsIDIzLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIAorICAgIDIzLCAzMiwgNCwgMjQ1LCAxMDAsIDExLCAyMywgMzIsIDQsIDIxMCwgODUsIDExLCAyMywgMzIsIDQsIDI0NSwgNjMsIDExLCAKKyAgICAyMywgMzIsIDQsIDIxNiwgMTc5LCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDIzLCAzMiwgNCwgMjM0LCAyMjIsIAorICAgIDExLCAyMywgMzIsIDQsIDIzMywgOTgsIDExLCAyMywgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMjMsIDMyLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDIzLCAzMiwgNCwgMjExLCAxNTcsIDExLCAyMywgMzIsIDQsIDIyNiwgMTk5LCAxMSwgMjMsIDMyLCA0LCAyMjUsIAorICAgIDEwOCwgMTEsIDIzLCAzMiwgNCwgMjIzLCAzNywgMTEsIDIzLCAzMiwgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyMTksIDE3NywgMTEsIDIzLCAzMiwgNCwgMjE3LCA0MSwgMTEsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAyMywgMzIsIDQsIAorICAgIDIyNSwgMTMzLCAxMSwgMjMsIDMyLCA0LCAyNTAsIDExMCwgMTEsIDIzLCAzMiwgNCwgMjI0LCAxNjEsIDExLCAyMywgMzIsIAorICAgIDQsIDIyNiwgMjAxLCAxMSwgMjMsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAyMywgMzIsIDI0NSwgMTAxLCA4NywgCisgICAgMTEsIDIzLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMjMsIDMyLCAyMzQsIDIyMywgODcsIDExLCAyMywgMzIsIDIyNSwgMTM0LCAKKyAgICA4NywgMTEsIDIzLCAzMiwgMjIzLCAzOCwgODcsIDExLCAyMywgMzIsIDIyNSwgMTA5LCA4NywgMTEsIDM1LCAyMywgNiwgCisgICAgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDYsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDYsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNDgsIDU0LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjQ1LCA2MywgMTEsIDM1LCAyMywgNiwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDYsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMzQsIDIyMiwgMTEsIDM1LCAyMywgNiwgMjMzLCA5OCwgMTEsIDM1LCAyMywgNiwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDYsIAorICAgIDIyNywgMjM3LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNiwgMjI2LCAxOTksIDExLCAzNSwgMjMsIAorICAgIDYsIDIyNSwgMTA4LCAxMSwgMzUsIDIzLCA2LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzNSwgCisgICAgMjMsIDYsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA2LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDE1NywgMTEsIDM1LCAKKyAgICAyMywgNiwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDYsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCA2LCAyMjQsIDE2MSwgMTEsIAorICAgIDM1LCAyMywgNiwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDIyOSwgMjIxLCAxMSwgMzUsIDIzLCA0LCAyNTQsIDE0MywgMTEsIAorICAgIDM1LCAyMywgNCwgMjUyLCAyNiwgMTEsIDM1LCAyMywgNCwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDQsIDI0OCwgNTQsIDExLCAKKyAgICAzNSwgMjMsIDQsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDYzLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgNCwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDQsIDIzNCwgMjIyLCAKKyAgICAxMSwgMzUsIDIzLCA0LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCA0LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgNCwgMjI3LCAyMzcsIAorICAgIDExLCAzNSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCA0LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgNCwgMjI1LCAKKyAgICAxMDgsIDExLCAzNSwgMjMsIDQsIDIyMywgMzcsIDExLCAzNSwgMjMsIDQsIDQwLCAyMTksIDE3NywgMTEsIDM1LCAyMywgNCwgCisgICAgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDQsIDIxNywgNDEsIDExLCAzNSwgMjMsIDQsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAyMjUsIDEzMywgMTEsIDM1LCAyMywgNCwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDQsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAKKyAgICA0LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzUsIDIzLCAyNDUsIDEwMSwgODcsIAorICAgIDExLCAzNSwgMjMsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAyMywgMjM0LCAyMjMsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDEzNCwgCisgICAgODcsIDExLCAzNSwgMjMsIDIyMywgMzgsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDEwOSwgODcsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyNTQsIDE0MywgMTEsIDM1LCAyMywgMzIsIDYsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDEwNywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDI0OCwgNTQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDYzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxNzksIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNCwgMjIyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMzLCAKKyAgICA5OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI3LCAyMzcsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAKKyAgICAxMDgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE0LCAKKyAgICAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMzIsIDIyOSwgCisgICAgMjIxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDgsIDU0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCAxMDAsIAorICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA2MywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzQsIDIyMiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIzMywgOTgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIyNywgMjM3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDE5OSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIyNSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjIzLCAzNywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDQwLCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDQsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE3LCA0MSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAyMDEsIAorICAgIDExLCAzNSwgMjMsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzNSwgMjMsIDMyLCAyNDUsIDEwMSwgODcsIDExLCAzNSwgCisgICAgMjMsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMzQsIDIyMywgODcsIDExLCAzNSwgMjMsIDMyLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgMTA5LCA4NywgMTEsIAorICAgIDIzLCA2LCAyNDcsIDIyNywgMTEsIDIzLCA0LCAyNDcsIDIyNywgMTEsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDIzLCAyMSwgCisgICAgMTEwLCAxMSwgMjMsIDIxLCAxMDUsIDExLCAyMywgMjEsIDE1OCwgMTEsIDIzLCAyMSwgMTYxLCAxMSwgMjMsIDIxLCAxODksIAorICAgIDExLCAyMywgMjEsIDE5NCwgMTEsIDIzLCAyMSwgMTk4LCAxMSwgMjMsIDIxLCAxOTUsIDExLCAyMywgMjEsIDIwMCwgMTEsIAorICAgIDEzOSwgMjEsIDIxMCwgODYsIDExLCAxMzksIDIxLCAxMTAsIDExLCAxMzksIDIxLCAxMDUsIDExLCAxMzksIDIxLCAxNTgsIAorICAgIDExLCAxMzksIDIxLCAxNjEsIDExLCAxMzksIDIxLCAxODksIDExLCAxMzksIDIxLCAxOTQsIDExLCAxMzksIDIxLCAxOTgsIAorICAgIDExLCAxMzksIDIxLCAxOTUsIDExLCAxMzksIDIxLCAyMDAsIDExLCAzNSwgMjEsIDIxMCwgODYsIDExLCAzNSwgMjEsIDExMCwgCisgICAgMTEsIDM1LCAyMSwgMTA1LCAxMSwgMzUsIDIxLCAxNTgsIDExLCAzNSwgMjEsIDE2MSwgMTEsIDM1LCAyMSwgMTg5LCAxMSwgCisgICAgMzUsIDIxLCAxOTQsIDExLCAzNSwgMjEsIDE5OCwgMTEsIDM1LCAyMSwgMTk1LCAxMSwgMzUsIDIxLCAyMDAsIDExLCAzNSwgCisgICAgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIzLCAyMSwgMTEwLCAxMSwgMzUsIDIzLCAyMSwgMTA1LCAxMSwgMzUsIDIzLCAKKyAgICAyMSwgMTU4LCAxMSwgMzUsIDIzLCAyMSwgMTYxLCAxMSwgMzUsIDIzLCAyMSwgMTg5LCAxMSwgMzUsIDIzLCAyMSwgMTk0LCAKKyAgICAxMSwgMzUsIDIzLCAyMSwgMTk4LCAxMSwgMzUsIDIzLCAyMSwgMTk1LCAxMSwgMzUsIDIzLCAyMSwgMjAwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDIxLCAyMTAsIDg2LCAxMSwgMjMwLCAxMzgsIDIxLCAxMTAsIDExLCAyMzAsIDEzOCwgMjEsIDEwNSwgMTEsIDIzMCwgCisgICAgMTM4LCAyMSwgMTU4LCAxMSwgMjMwLCAxMzgsIDIxLCAxNjEsIDExLCAyMzAsIDEzOCwgMjEsIDE4OSwgMTEsIDIzMCwgMTM4LCAKKyAgICAyMSwgMTk0LCAxMSwgMjMwLCAxMzgsIDIxLCAxOTgsIDExLCAyMzAsIDEzOCwgMjEsIDE5NSwgMTEsIDIzMCwgMTM4LCAyMSwgCisgICAgMjAwLCAxMCwgMTEsIDI1NCwgMTcwLCAxMCwgMTEsIDI1MiwgNTQsIDEwLCAxMSwgMjM1LCAxMjMsIDEwLCAxMSwgMjQ4LCAKKyAgICAxOTUsIDEwLCAxMSwgMjEyLCAzMCwgMTAsIDExLCAyMTAsIDEwOCwgMTAsIDExLCAyNDIsIDM3LCAxMCwgMTEsIDIxNywgODAsIAorICAgIDEwLCAxMSwgMjExLCA0MywgMTAsIDExLCAyMzQsIDI1MCwgMTAsIDExLCAyMzMsIDEwMiwgMTAsIDExLCAyMzEsIDc4LCAxMCwgCisgICAgMTEsIDIyOCwgNjIsIDEwLCAxMSwgMjIxLCAxNjYsIDEwLCAxMSwgMjU0LCAxOTYsIDEwLCAxMSwgMjQ0LCAxNDIsIDEwLCAKKyAgICAxMSwgMjIyLCAyNiwgMTAsIDExLCAyMjQsIDgxLCAxMCwgMTEsIDIyMywgOTUsIDEwLCAxMSwgMjIwLCA1OSwgMTAsIDExLCAKKyAgICAyMTcsIDcsIDEwLCAxMSwgMjE2LCAxOTIsIDEwLCAxMSwgMjM0LCAxMjksIDEwLCAxMSwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMjQ4LCAyMTYsIDEwLCAxMSwgMjEwLCAxMTEsIDEwLCAxMSwgMjQyLCAyNDQsIDEwLCAxMSwgMjQ3LCAxMTksIDI1MiwgNTQsIAorICAgIDEwLCAxMSwgMjQ3LCAxMTksIDIyOCwgNjIsIDEwLCAxMSwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMTEsIDI0NywgMTE5LCAKKyAgICAyMjQsIDgxLCAxMCwgMTEsIDY1LCAyNTIsIDU0LCAxMCwgMTEsIDY1LCAyMzUsIDEyMywgMTAsIDExLCA2NSwgMjQxLCAyMTgsIAorICAgIDEwLCAxMSwgNjUsIDI0MiwgMzcsIDEwLCAxMSwgNjUsIDIxMSwgNDMsIDEwLCAxMSwgNjUsIDIzNCwgMjUwLCAxMCwgMTEsIAorICAgIDY1LCAyMzMsIDEwMiwgMTAsIDExLCA2NSwgMjMxLCA3OCwgMTAsIDExLCA2NSwgMjI4LCA2MiwgMTAsIDExLCA2NSwgMjIxLCAKKyAgICAxNjYsIDEwLCAxMSwgNjUsIDI1NCwgMTk2LCAxMCwgMTEsIDY1LCAyNDQsIDE0MiwgMTAsIDExLCA2NSwgMjIyLCAyNiwgMTAsIAorICAgIDExLCA2NSwgMjI0LCA4MSwgMTAsIDExLCA2NSwgMjIwLCA1OSwgMTAsIDExLCA2NSwgMjE3LCA3LCAxMCwgMTEsIDY1LCAKKyAgICAyMTYsIDE5MiwgMTAsIDExLCA2NSwgMjM0LCAxMjksIDEwLCAxMSwgNjUsIDI0OCwgMjE2LCAxMCwgMTEsIDY1LCAyNDIsIAorICAgIDI0NCwgMTAsIDExLCAyMTcsIDc2LCAyMzUsIDEyMywgMTAsIDExLCAyMTcsIDc2LCAyNDIsIDM3LCAxMCwgMTEsIDIxNywgCisgICAgNzYsIDIxMSwgNDMsIDEwLCAxMSwgMjE3LCA3NiwgMjMzLCAxMDIsIDEwLCAxMSwgMjE3LCA3NiwgMjI4LCA2MiwgMTAsIDExLCAKKyAgICAyMTcsIDc2LCAyMjEsIDE2NiwgMTAsIDExLCAyMTcsIDc2LCAyNTQsIDE5NiwgMTAsIDExLCAyMTcsIDc2LCAyMjIsIDI2LCAKKyAgICAxMCwgMTEsIDIxNywgNzYsIDIyNCwgODEsIDEwLCAxMSwgMjE3LCA3NiwgMjIwLCA1OSwgMTAsIDExLCAyMTcsIDc2LCAyMzQsIAorICAgIDEyOSwgMTAsIDExLCAyMTcsIDc2LCAyNDgsIDIxNiwgMTAsIDExLCAyMTcsIDc2LCAyNDIsIDI0NCwgMTAsIDExLCAyMTcsIAorICAgIDc2LCAyNDcsIDExOSwgMjI4LCA2MiwgMTAsIDExLCAyMTcsIDc2LCAyNDcsIDExOSwgMjI0LCA4MSwgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjUyLCA1NCwgMTAsIDExLCAyMTgsIDExMCwgMjM1LCAxMjMsIDEwLCAxMSwgMjE4LCAxMTAsIDI0MSwgMjE4LCAxMCwgCisgICAgMTEsIDIxOCwgMTEwLCAyNDIsIDM3LCAxMCwgMTEsIDIxOCwgMTEwLCAyMTcsIDgwLCAxMCwgMTEsIDIxOCwgMTEwLCAyMTEsIAorICAgIDQzLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzQsIDI1MCwgMTAsIDExLCAyMTgsIDExMCwgMjMxLCA3OCwgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjI4LCA2MiwgMTAsIDExLCAyMTgsIDExMCwgMjIxLCAxNjYsIDEwLCAxMSwgMjE4LCAxMTAsIDI1NCwgMTk2LCAxMCwgCisgICAgMTEsIDIxOCwgMTEwLCAyNDQsIDE0MiwgMTAsIDExLCAyMTgsIDExMCwgMjIyLCAyNiwgMTAsIDExLCAyMTgsIDExMCwgMjI0LCAKKyAgICA4MSwgMTAsIDExLCAyMTgsIDExMCwgMjIwLCA1OSwgMTAsIDExLCAyMTgsIDExMCwgMjE3LCA3LCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyMTYsIDE5MiwgMTAsIDExLCAyMTgsIDExMCwgMjM0LCAxMjksIDEwLCAxMSwgMjE4LCAxMTAsIDI0OCwgMjE2LCAKKyAgICAxMCwgMTEsIDIxOCwgMTEwLCAyMTAsIDExMSwgMTAsIDExLCAyMTgsIDExMCwgMjQyLCAyNDQsIDEwLCAxMSwgMjE4LCAxMTAsIAorICAgIDI0NywgMTE5LCAyNTIsIDU0LCAxMCwgMTEsIDIxOCwgMTEwLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMjMyLCAKKyAgICAxMjIsIDI1NCwgMTcwLCAxMCwgMTEsIDIzMiwgMTIyLCAyNTIsIDU0LCAxMCwgMTEsIDIzMiwgMTIyLCAyMzUsIDEyMywgMTAsIAorICAgIDExLCAyMzIsIDEyMiwgMjQ4LCAxOTUsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MSwgMjE4LCAxMCwgMTEsIDIzMiwgMTIyLCAKKyAgICAyMTIsIDMwLCAxMCwgMTEsIDIzMiwgMTIyLCAyMTAsIDEwOCwgMTAsIDExLCAyMzIsIDEyMiwgMjQyLCAzNywgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjE3LCA4MCwgMTAsIDExLCAyMzIsIDEyMiwgMjExLCA0MywgMTAsIDExLCAyMzIsIDEyMiwgMjMzLCAxMDIsIAorICAgIDEwLCAxMSwgMjMyLCAxMjIsIDIzMSwgNzgsIDEwLCAxMSwgMjMyLCAxMjIsIDIyOCwgNjIsIDEwLCAxMSwgMjMyLCAxMjIsIAorICAgIDIyMSwgMTY2LCAxMCwgMTEsIDIzMiwgMTIyLCAyNTQsIDE5NiwgMTAsIDExLCAyMzIsIDEyMiwgMjQ0LCAxNDIsIDEwLCAxMSwgCisgICAgMjMyLCAxMjIsIDIyMiwgMjYsIDEwLCAxMSwgMjMyLCAxMjIsIDIyNCwgODEsIDEwLCAxMSwgMjMyLCAxMjIsIDIyMywgOTUsIAorICAgIDEwLCAxMSwgMjMyLCAxMjIsIDIyMCwgNTksIDEwLCAxMSwgMjMyLCAxMjIsIDIxNywgNywgMTAsIDExLCAyMzIsIDEyMiwgCisgICAgMjE2LCAxOTIsIDEwLCAxMSwgMjMyLCAxMjIsIDIzNCwgMTI5LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjQ4LCAyMTYsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMCwgMTExLCAxMCwgMTEsIDIzMiwgMTIyLCAyNDIsIAorICAgIDI0NCwgMTAsIDExLCAxMzksIDI1MiwgNTQsIDEwLCAxMSwgMTM5LCAyMzUsIDEyMywgMTAsIDExLCAxMzksIDI0OCwgMTk1LCAKKyAgICAxMCwgMTEsIDEzOSwgMjEyLCAzMCwgMTAsIDExLCAxMzksIDIxMCwgMTA4LCAxMCwgMTEsIDEzOSwgMjQyLCAzNywgMTAsIAorICAgIDExLCAxMzksIDIxNywgODAsIDEwLCAxMSwgMTM5LCAyMTEsIDQzLCAxMCwgMTEsIDEzOSwgMjMzLCAxMDIsIDEwLCAxMSwgCisgICAgMTM5LCAyMzEsIDc4LCAxMCwgMTEsIDEzOSwgMjI4LCA2MiwgMTAsIDExLCAxMzksIDIyMSwgMTY2LCAxMCwgMTEsIDEzOSwgCisgICAgMjU0LCAxOTYsIDEwLCAxMSwgMTM5LCAyNDQsIDE0MiwgMTAsIDExLCAxMzksIDIyMiwgMjYsIDEwLCAxMSwgMTM5LCAyMjQsIAorICAgIDgxLCAxMCwgMTEsIDEzOSwgMjIzLCA5NSwgMTAsIDExLCAxMzksIDIyMCwgNTksIDEwLCAxMSwgMTM5LCAyMTcsIDcsIDEwLCAKKyAgICAxMSwgMTM5LCAyMTYsIDE5MiwgMTAsIDExLCAxMzksIDIzNCwgMTI5LCAxMCwgMTEsIDEzOSwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMTM5LCAyNDgsIDIxNiwgMTAsIDExLCAxMzksIDIxMCwgMTExLCAxMCwgMTEsIDEzOSwgMjQyLCAyNDQsIDEwLCAxMSwgMjI2LCAKKyAgICAxNjgsIDY2LCAyLCAxMjIsIDIsIDIxNywgNDMsIDEwLCAxMSwgMjI2LCAxNjgsIDEyMiwgMiwgMjQ4LCAxOTUsIDIzMSwgCisgICAgMjA1LCA4NiwgMjQ1LCAyMjAsIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIxOSwgMjgsIDIxMSwgMjM5LCAyMzEsIDIwNSwgCisgICAgODYsIDIxMiwgOSwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjI4LCA1NiwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjIzLCAKKyAgICAxMTEsIDI0NiwgOTYsIDIzMSwgMjA1LCA4NiwgMjQyLCAxMjcsIDI0NiwgOTYsIDIzMSwgMjA1LCA4NiwgNzEsIDI0NiwgOTYsIAorICAgIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUwLCAxNDEsIDIzMSwgCisgICAgMjA1LCA4NiwgMTM0LCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MCwgMTQxLCAyMzEsIAorICAgIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MCwgMTQxLCAKKyAgICAyMzEsIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTAsIAorICAgIDE0MSwgMjMxLCAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MiwgCisgICAgMTUzLCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDEzNCwgNjQsIDI1MiwgMTUzLCAKKyAgICAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUyLCAxNTMsIAorICAgIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MiwgCisgICAgMTUzLCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAKKyAgICAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MCwgMzQsIAorICAgIDIzMSwgMjA1LCA4NiwgMTM0LCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MCwgMzQsIDIzMSwgCisgICAgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjI1LCAyNSwgMjMxLCAyMDUsIDg2LCAyMjYsIAorICAgIDE1NiwgMjMxLCAyMDUsIDg2LCAyNTIsIDE1NCwgMjMxLCAyMDUsIDg2LCAyNTAsIDcwLCAyMzEsIDIwNSwgODYsIDIxOCwgCisgICAgMjM5LCAyMzEsIDIwNSwgODYsIDIxOCwgMzksIDIzMSwgMjA1LCA4NiwgMjUzLCAxNzksIDIzMSwgMjA1LCA4NiwgMjExLCAKKyAgICAyMzIsIDIzMSwgMjA1LCA4NiwgMjM1LCA2MiwgMjMxLCAyMDUsIDg2LCAyNTIsIDE4NCwgMTMxLCA4NiwgMjAzLCAyNTIsIAorICAgIDE4NCwgMTMxLCA4NiwgMjQxLCA0MywgMTMxLCA4NiwgMjQxLCA0MiwgMTMxLCA4NiwgMjQxLCA0MSwgMTMxLCA4NiwgMjQxLCAKKyAgICA0MCwgMTMxLCA4NiwgMjQxLCAzOSwgMTMxLCA4NiwgMjQxLCAzOCwgMTMxLCA4NiwgMjQxLCAzNywgMTMxLCA4NiwgMjQxLCAKKyAgICAzNiwgMTMxLCA4NiwgMjQxLCAzNSwgMTMxLCA4NiwgMjQxLCAzNCwgMTMxLCA4NiwgMjQxLCAzMywgMTMxLCA4NiwgMjQxLCAKKyAgICAzMiwgMTMxLCA4NiwgMjQxLCAzMSwgMTMxLCA4NiwgMjQxLCAzMCwgMTMxLCA4NiwgMjQxLCAyOSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyOCwgMTMxLCA4NiwgMjQxLCAyNywgMTMxLCA4NiwgMjQxLCAyNiwgMTMxLCA4NiwgMjQxLCAyNSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyNCwgMTMxLCA4NiwgMjQxLCAyMywgMTMxLCA4NiwgMjQxLCAyMiwgMTMxLCA4NiwgMjQxLCAyMSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyMCwgMTMxLCA4NiwgMjQxLCAxOSwgMTMxLCA4NiwgMjQxLCAxOCwgMTMxLCA4NiwgMjQxLCAxNywgMTMxLCA4NiwgMjQxLCAKKyAgICAxNiwgMTMxLCA4NiwgMjQxLCAxNSwgMTMxLCA4NiwgMjQxLCAxNCwgMTMxLCA4NiwgMjQxLCAxMywgMTMxLCA4NiwgMjQxLCAKKyAgICAxMiwgMTMxLCA4NiwgMjQxLCAxMSwgMTMxLCA4NiwgMjQxLCAxMCwgMTMxLCA4NiwgMjQxLCA5LCAxMzEsIDg2LCAyNDEsIDgsIAorICAgIDEzMSwgODYsIDI0MSwgNywgMTMxLCA4NiwgMjQxLCA2LCAxMzEsIDg2LCAyNDEsIDUsIDEzMSwgODYsIDI0MSwgNCwgMTMxLCAKKyAgICA4NiwgMjQxLCAzLCAxMzEsIDg2LCAyNDEsIDIsIDEzMSwgODYsIDI0MSwgMSwgMTMxLCA4NiwgMjQxLCAwLCAxMzEsIDg2LCAKKyAgICAyNDAsIDI1NSwgMTMxLCA4NiwgMjQwLCAyNTQsIDEzMSwgODYsIDI0MCwgMjUzLCAxMzEsIDg2LCAyNDAsIDI1MiwgMTMxLCAKKyAgICA4NiwgMjQwLCAyNTEsIDEzMSwgODYsIDY3LCAyNTIsIDE4NCwgMTMxLCA4NiwgMjEzLCAyMzgsIDEzMSwgODYsIDIxMywgCisgICAgMjM3LCAxMzEsIDg2LCAyMTMsIDIzNiwgMTMxLCA4NiwgMjEzLCAyMzUsIDEzMSwgODYsIDIxMywgMjM0LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIzMywgMTMxLCA4NiwgMjEzLCAyMzIsIDEzMSwgODYsIDIxMywgMjMxLCAxMzEsIDg2LCAyMTMsIDIzMCwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMjksIDEzMSwgODYsIDIxMywgMjI4LCAxMzEsIDg2LCAyMTMsIDIyNywgMTMxLCA4NiwgMjEzLCAyMjYsIAorICAgIDEzMSwgODYsIDIxMywgMjI1LCAxMzEsIDg2LCAyMTMsIDIyNCwgMTMxLCA4NiwgMjEzLCAyMjMsIDEzMSwgODYsIDIxMywgCisgICAgMjIyLCAxMzEsIDg2LCAyMTMsIDIyMSwgMTMxLCA4NiwgMjEzLCAyMjAsIDEzMSwgODYsIDIxMywgMjE5LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIxOCwgMTMxLCA4NiwgMjEzLCAyMTcsIDEzMSwgODYsIDIxMywgMjE2LCAxMzEsIDg2LCAyMTMsIDIxNSwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMTQsIDEzMSwgODYsIDIxMywgMjEzLCAxMzEsIDg2LCAyMTMsIDIxMiwgMTMxLCA4NiwgMjEzLCAyMTEsIAorICAgIDEzMSwgODYsIDIxMywgMjEwLCAxMzEsIDg2LCAyMTMsIDIwOSwgMTMxLCA4NiwgMjEzLCAyMDgsIDEzMSwgODYsIDIxMywgCisgICAgMjA3LCAxMzEsIDg2LCAyMTMsIDIwNiwgMTMxLCA4NiwgMjEzLCAyMDUsIDEzMSwgODYsIDIxMywgMjA0LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIwMywgMTMxLCA4NiwgMjEzLCAyMDIsIDEzMSwgODYsIDIxMywgMjAxLCAxMzEsIDg2LCAyMTMsIDIwMCwgMTMxLCAKKyAgICA4NiwgMjEzLCAxOTksIDEzMSwgODYsIDIxMywgMTk4LCAxMzEsIDg2LCAyMTMsIDE5NywgMTMxLCA4NiwgMjEzLCAxOTYsIAorICAgIDEzMSwgODYsIDIxMywgMTk1LCAxMzEsIDg2LCAyMTMsIDE5NCwgMTMxLCA4NiwgMjEzLCAxOTMsIDEzMSwgODYsIDIxMywgCisgICAgMTkyLCAxMzEsIDg2LCAyMTMsIDE5MSwgMTMxLCA4NiwgMjEzLCAxOTAsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTIsIDE4NCwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyMTksIAorICAgIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAKKyAgICAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTksIAorICAgIDEyNSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyNDUsIDE5MywgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIDIxOSwgMTUsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzUsIDEzOSwgCisgICAgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIyNCwgMTUsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIAorICAgIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDI0MSwgMjI1LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgCisgICAgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKKyAgICAyMTksIDEyNSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDEsIDIyNSwgMjI1LCAKKyAgICAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIAorICAgIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIzNSwgMTM5LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQxLCAyMjUsIDIyNSwgCisgICAgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjQxLCAKKyAgICAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIAorICAgIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIAorICAgIDExLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMTksIDEyNSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDcsIDI0NywgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgCisgICAgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIzNSwgMTM5LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQ3LCAyNDcsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgCisgICAgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCA4NSwgMjM1LCA2MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIAorICAgIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIAorICAgIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDI0NCwgODEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIxOSwgMTI1LCA2NCwgMjQ5LCAyNDIsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIAorICAgIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMTYsIDI0OCwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjM1LCAxMzksIDY0LCAyNDksIDI0MiwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAKKyAgICAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDcxLCAyMzUsIDYyLCAyMSwgMjEwLCA4NywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjEwLCA4NywgMjQ5LCAyMTksIDIxLCAKKyAgICAxMjMsIDI0OSwgMjE5LCAyMSwgMTEzLCAyNDksIDIxOSwgMjEsIDEzNCwgMjQ5LCAyMTksIDIxLCAyNDQsIDExLCAyNDksIAorICAgIDIxOSwgMjEsIDI0NCwgODEsIDI0OSwgMjE5LCAyMSwgMjE5LCAxMjUsIDI0OSwgMjE5LCAyMSwgMjIwLCAxMjIsIDI0OSwgCisgICAgMjE5LCAyMSwgMjQ1LCAxOTMsIDI0OSwgMjE5LCAyMSwgMjI4LCAyMDAsIDI0OSwgMjE5LCA4OCwgNywgNiwgMSwgNjEsIDg4LCAKKyAgICA3LCA2LCAxLCAyNTMsIDE1OCwgODgsIDcsIDYsIDEsIDI1MSwgNjYsIDg4LCA3LCA2LCAxLCAyNDksIDYwLCA4OCwgNywgNiwgCisgICAgMSwgNzUsIDg4LCA3LCA2LCAxLCAyNDUsIDYsIDg4LCA3LCA2LCAxLCAyNDMsIDIwMiwgODgsIDcsIDYsIDEsIDI0MiwgNjAsIAorICAgIDg4LCA3LCA2LCAxLCA3MywgODgsIDcsIDYsIDEsIDIzNSwgMTQ0LCA4OCwgNywgNiwgMSwgMjM1LCAyMywgODgsIDcsIDYsIAorICAgIDEsIDE1NiwgODgsIDcsIDYsIDEsIDE5MywgODgsIDcsIDYsIDEsIDIzMCwgMjUsIDg4LCA3LCA2LCAxLCA3NiwgODgsIDcsIAorICAgIDYsIDEsIDIyNiwgMTA1LCA4OCwgNywgNiwgMSwgMjI0LCA5NiwgODgsIDcsIDYsIDEsIDE1MywgODgsIDcsIDYsIDEsIDIyMiwgCisgICAgOTEsIDg4LCA3LCA2LCAxLCAyMTcsIDE1MiwgODgsIDcsIDYsIDEsIDcwLCA4OCwgNywgNiwgMSwgMjE0LCAxMDUsIDg4LCA3LCAKKyAgICA2LCAxLCAyMTIsIDk4LCA4OCwgNywgNiwgMSwgMjExLCAxNzgsIDg4LCA3LCA2LCAxLCAyMTEsIDExNywgODgsIDcsIDYsIDEsIAorICAgIDIxMCwgMTU5LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA3LCA2LCAxLCAyMjIsIDkxLCAzNywgMzIsIDcsIDYsIDEsIAorICAgIDI1MSwgNjYsIDM3LCAzMiwgNywgNiwgMSwgMTUzLCAzNywgMjUwLCAxOTEsIDM3LCAyMTEsIDE4MCwgOTIsIDcsIDYsIDEsIAorICAgIDYxLCA5MiwgNywgNiwgMSwgMjUzLCAxNTgsIDkyLCA3LCA2LCAxLCAyNTEsIDY2LCA5MiwgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgOTIsIDcsIDYsIDEsIDc1LCA5MiwgNywgNiwgMSwgMjQ1LCA2LCA5MiwgNywgNiwgMSwgMjQzLCAyMDIsIDkyLCA3LCA2LCAxLCAKKyAgICAyNDIsIDYwLCA5MiwgNywgNiwgMSwgNzMsIDkyLCA3LCA2LCAxLCAyMzUsIDE0NCwgOTIsIDcsIDYsIDEsIDIzNSwgMjMsIAorICAgIDkyLCA3LCA2LCAxLCAxNTYsIDkyLCA3LCA2LCAxLCAxOTMsIDkyLCA3LCA2LCAxLCAyMzAsIDI1LCA5MiwgNywgNiwgMSwgCisgICAgNzYsIDkyLCA3LCA2LCAxLCAyMjYsIDEwNSwgOTIsIDcsIDYsIDEsIDIyNCwgOTYsIDkyLCA3LCA2LCAxLCAxNTMsIDkyLCA3LCAKKyAgICA2LCAxLCAyMjIsIDkxLCA5MiwgNywgNiwgMSwgMjE3LCAxNTIsIDkyLCA3LCA2LCAxLCA3MCwgOTIsIDcsIDYsIDEsIDIxNCwgCisgICAgMTA1LCA5MiwgNywgNiwgMSwgMjEyLCA5OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIAorICAgIDkyLCA3LCA2LCAxLCAyMTAsIDE1OSwgOTIsIDI0MCwgMjAxLCA5MiwgMjMwLCA0OSwgOTIsIDIyMSwgMTgzLCA5MiwgMjE4LCAKKyAgICAyMjYsIDkyLCAyMjQsIDIxOCwgOTIsIDIxMiwgMjMsIDE1MiwgMzcsIDcsIDYsIDEsIDYxLCAxNTIsIDM3LCA3LCA2LCAxLCAKKyAgICAyNTMsIDE1OCwgMTUyLCAzNywgNywgNiwgMSwgMjUxLCA2NiwgMTUyLCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgMTUyLCAzNywgCisgICAgNywgNiwgMSwgNzUsIDE1MiwgMzcsIDcsIDYsIDEsIDI0NSwgNiwgMTUyLCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDE1MiwgCisgICAgMzcsIDcsIDYsIDEsIDI0MiwgNjAsIDE1MiwgMzcsIDcsIDYsIDEsIDczLCAxNTIsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgCisgICAgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAyMywgMTUyLCAzNywgNywgNiwgMSwgMTU2LCAxNTIsIDM3LCA3LCA2LCAxLCAxOTMsIAorICAgIDE1MiwgMzcsIDcsIDYsIDEsIDIzMCwgMjUsIDE1MiwgMzcsIDcsIDYsIDEsIDc2LCAxNTIsIDM3LCA3LCA2LCAxLCAyMjYsIAorICAgIDEwNSwgMTUyLCAzNywgNywgNiwgMSwgMjI0LCA5NiwgMTUyLCAzNywgNywgNiwgMSwgMTUzLCAxNTIsIDM3LCA3LCA2LCAxLCAKKyAgICAyMjIsIDkxLCAxNTIsIDM3LCA3LCA2LCAxLCAyMTcsIDE1MiwgMTUyLCAzNywgNywgNiwgMSwgNzAsIDE1MiwgMzcsIDcsIDYsIAorICAgIDEsIDIxNCwgMTA1LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCAKKyAgICAzNywgNywgNiwgMSwgMjExLCAxMTcsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMCwgMTU5LCAyMjMsIDE1NywgMjMxLCA5NywgNTAsIAorICAgIDIyMywgMTU3LCAyMzEsIDk0LCA1MCwgMTUyLCA5MiwgNywgNiwgMSwgNjEsIDE1MiwgOTIsIDcsIDYsIDEsIDI1MywgMTU4LCAKKyAgICAxNTIsIDkyLCA3LCA2LCAxLCAyNTEsIDY2LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDksIDYwLCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICA3NSwgMTUyLCA5MiwgNywgNiwgMSwgMjQ1LCA2LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDMsIDIwMiwgMTUyLCA5MiwgNywgNiwgCisgICAgMSwgMjQyLCA2MCwgMTUyLCA5MiwgNywgNiwgMSwgNzMsIDE1MiwgOTIsIDcsIDYsIDEsIDIzNSwgMTQ0LCAxNTIsIDkyLCA3LCAKKyAgICA2LCAxLCAyMzUsIDIzLCAxNTIsIDkyLCA3LCA2LCAxLCAxNTYsIDE1MiwgOTIsIDcsIDYsIDEsIDE5MywgMTUyLCA5MiwgNywgCisgICAgNiwgMSwgMjMwLCAyNSwgMTUyLCA5MiwgNywgNiwgMSwgNzYsIDE1MiwgOTIsIDcsIDYsIDEsIDIyNiwgMTA1LCAxNTIsIDkyLCAKKyAgICA3LCA2LCAxLCAyMjQsIDk2LCAxNTIsIDkyLCA3LCA2LCAxLCAxNTMsIDE1MiwgOTIsIDcsIDYsIDEsIDIyMiwgOTEsIDE1MiwgCisgICAgOTIsIDcsIDYsIDEsIDIxNywgMTUyLCAxNTIsIDkyLCA3LCA2LCAxLCA3MCwgMTUyLCA5MiwgNywgNiwgMSwgMjE0LCAxMDUsIAorICAgIDE1MiwgOTIsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICAyMTEsIDExNywgMTUyLCA5MiwgNywgNiwgMSwgMjEwLCAxNTksIDI0OSwgMTI4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIAorICAgIDEwNSwgMTUyLCA5MiwgMjQwLCAxMTMsIDE1MiwgOTIsIDE5MCwgMTUyLCA5MiwgMjA2LCAxNTIsIDkyLCAyNTUsIDI1LCAKKyAgICAxNTIsIDkyLCAyMTIsIDIzLCA0MiwgMjQ3LCAxNjQsIDkyLCAyNTAsIDIzLCA5MiwgMjQ5LCAxNzAsIDkyLCAyNDMsIDI1MiwgCisgICAgOTIsIDI0MCwgMTA1LCA5MiwgMjI5LCA4NiwgOTIsIDIyOSwgNzksIDkyLCAyMjYsIDIxNCwgOTIsIDIxOSwgMzUsIDkyLCAKKyAgICAxMjAsIDIsIDI0NSwgMzEsIDc4LCA5MiwgMjEzLCAxMTksIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDYxLCAyMjMsIAorICAgIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNTMsIDE1OCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjUxLCA2NiwgMjIzLCAKKyAgICAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjQ5LCA2MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzUsIDIyMywgMTAzLCAKKyAgICAyMzUsIDIzOSwgMTYsIDEsIDI0NSwgNiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjQzLCAyMDIsIDIyMywgMTAzLCAKKyAgICAyMzUsIDIzOSwgMTYsIDEsIDI0MiwgNjAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDczLCAyMjMsIDEwMywgMjM1LCAKKyAgICAyMzksIDE2LCAxLCAyMzUsIDE0NCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjM1LCAyMywgMjIzLCAxMDMsIDIzNSwgCisgICAgMjM5LCAxNiwgMSwgMTU2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAxOTMsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIAorICAgIDEsIDIzMCwgMjUsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDc2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAKKyAgICAyMjYsIDEwNSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjI0LCA5NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgCisgICAgMTUzLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMjIsIDkxLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTcsIAorICAgIDE1MiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxNCwgMTA1LCAKKyAgICAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTIsIDk4LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTEsIDE3OCwgCisgICAgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjExLCAxMTcsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMCwgMTU5LCAKKyAgICA0MiwgMTQxLCAyNDEsIDYzLCA5MiwgNTYsIDIzNCwgMTgsIDkyLCA1NiwgMjA2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTAsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYyLCA5MiwgNTYsIDI0OCwgOTAsIDkyLCAKKyAgICA5LCAyMTQsIDE3NywgMjM4LCA2OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjgsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgNDIsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzNSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ0LCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgNjUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY3LCA5MiwgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNDMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI5LCA5MiwgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyNywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU3LCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzNywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDQ4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA3MiwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDcxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MiwgOTIsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDcwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NywgOTIsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDI2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMSwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDMwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICAzOCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDEsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCAzMywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTgsIDIxNiwgNiwgMjIwLCAKKyAgICA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDM5LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNjksIDIxNiwgNiwgCisgICAgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDUzLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAzNiwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNDksIDIxNiwgCisgICAgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDMyLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCA2MywgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNDUsIDM3LCAKKyAgICAxNTQsIDI1NCwgMjQ1LCAzNywgMTU0LCAyNTUsIDEyLCAyNDksIDcxLCAyNDQsIDQyLCAyNTAsIDAsIDIxNCwgMTk0LCAyMjgsIAorICAgIDIxMywgMiwgMjE4LCAxNTMsIDIxOCwgMzMsIDExNywgMjMwLCAxMTQsIDIxOCwgMzIsIDI1MCwgMjYsIDI1MywgMjA3LCAKKyAgICAyNDYsIDU0LCAyMTgsIDMxLCAxMTcsIDI1MSwgMTE4LCAyMjMsIDE1OCwgMjUxLCAxNDAsIDI1MywgMjA3LCAyMjgsIDIxMiwgCisgICAgMjEyLCA0MSwgMjEyLCAzNSwgMjEzLCAxMzEsIDIzMCwgMTk1LCAyMTIsIDI1LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI0NSwgCisgICAgNDUsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjU0LCAxMjgsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjUzLCAyMjUsIDI0MiwgMTgxLCAKKyAgICAyLCAyMzEsIDUxLCAxNjYsIDIzMCwgMTI5LCA4NywgMjEyLCAyNywgMjQ5LCAxMzcsIDIzMCwgMTI5LCA4NywgMjQ0LCA5MiwgCisgICAgMjI0LCAyMiwgMjMwLCAxMjksIDg3LCAyMTIsIDI3LCAyNDIsIDIxMCwgMjMwLCAxMjksIDg3LCAyNDMsIDIyOSwgMjMwLCAKKyAgICAxMjksIDg3LCAyMTIsIDUyLCAyNDIsIDIxMCwgMjMwLCAxMjksIDg3LCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIDEyOSwgODcsIAorICAgIDIxMiwgNTIsIDI0OSwgMTM3LCAyMzAsIDEyOSwgODcsIDI0OSwgMTM3LCAyMzAsIDEyOCwgMTY2LCAyMzAsIDEyOSwgMiwgCisgICAgMjQ0LCAxOTAsIDI0NCwgOTIsIDIyNCwgMjIsIDIzMCwgMTI5LCAyLCAyNDQsIDE5MCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAKKyAgICAxMjksIDIsIDI0NCwgMTkwLCAyNDMsIDIyOSwgMjMwLCAxMjksIDIsIDI0NCwgMTkwLCAyMTgsIDM4LCAyLCAyNDQsIDE5MCwgCisgICAgMjQyLCAxNzksIDIxOCwgMTU2LCAyMTksIDI1NSwgMjE4LCAxNTYsIDI1MCwgMTE2LCAyMjEsIDE2OCwgMjQ1LCAzOSwgMjE1LCAKKyAgICAyMzUsIDI0OCwgODQsIDIxNSwgMjM1LCAyMjYsIDU5LCAyMTUsIDIzNSwgMjUxLCAyNywgMjE1LCAxMDksIDI1MCwgMTE4LCAKKyAgICAyNTEsIDIxMCwgMjIyLCAxOTEsIDI0MSwgMTc5LCAyMTgsIDM2LCAyNTEsIDIxMCwgMjQ1LCAyMjgsIDY0LCAyMzEsIDE5NCwgCisgICAgMjQ1LCAyMjgsIDY0LCAyMjMsIDMxLCAyNDEsIDIwNCwgMjQ0LCAxMSwgMjMzLCA1NCwgMjQ5LCAyNDYsIDIzMSwgMTcwLCAKKyAgICAyMzMsIDUzLCAyNDQsIDE3NiwgMjMzLCA1MywgMjMzLCA1NCwgMjQ0LCA0NywgMjM2LCAwLCAyMTEsIDIzOSwgMjMwLCA1OCwgCisgICAgMjE2LCAzNCwgMjUzLCAxOTEsIDI0MiwgMTQzLCAyMzEsIDY3LCAyMTIsIDM5LCAyMTcsIDU3LCAyMzMsIDI2LCAyNTIsIAorICAgIDE0OSwgMjI1LCA2MiwgMjIzLCAxMTEsIDI1NCwgNTQsIDI0MiwgMTI3LCAyNTQsIDU0LCAyMjUsIDIxNywgMjI1LCAyMTgsIAorICAgIDI1MCwgMTE5LCAyMTgsIDExNCwgMjQyLCAyMywgMjE5LCA5MCwgNjQsIDIyNSwgNDQsIDIzMSwgODcsIDIyNiwgMTk3LCAKKyAgICAyNTEsIDE5NCwgMjI0LCAyMjksIDIzMywgMzYsIDIyMywgMzIsIDI0OSwgMTQyLCAyMjMsIDMyLCAyNTIsIDE1OSwgMjQ5LCAKKyAgICAxNzMsIDIyMywgMzEsIDI0OSwgOTUsIDIyLCAyMjMsIDMxLCAyMTgsIDE0MSwgMjUxLCAxNjcsIDIxOSwgMTQsIDI1MSwgCisgICAgMTUxLCAyNDMsIDI1MSwgMjQzLCAyNDcsIDIyMiwgMjA3LCAyMTcsIDI0NiwgMjI0LCAyMzEsIDI0OCwgMTc1LCAyMjYsIAorICAgIDIzNiwgMjE4LCA3LCAyNDMsIDI0OCwgMjE5LCAyMzAsIDI0NCwgOTEsIDI1MSwgMjEsIDIsIDIxNywgMjM5LCAyNDgsIDM1LCAKKyAgICAyMTksIDUyLCAyNDAsIDExMiwgMjQ5LCAxNDEsIDIyMCwgNzAsIDI0MCwgMTExLCAyNDAsIDExMiwgMjQ5LCAxNDEsIDI0NiwgCisgICAgMTA4LCAyNDksIDE3MiwgMjUwLCA4NCwgMTMwLCAyNTAsIDI1NCwgMjMyLCAxNDEsIDI0OSwgODgsIDI0MSwgNTUsIDIyNCwgCisgICAgMjMzLCAyMTksIDI0MCwgMjUyLCAzNiwgMjUxLCAxNjMsIDIyNCwgMjM0LCA2NCwgMjQ0LCAzMywgMjQ5LCAxNzEsIDI0NCwgCisgICAgMjQsIDIyLCAyMzQsIDMyLCAyMTcsIDE5LCAyMTEsIDIzMCwgMjQyLCAxMywgMjIyLCAxMiwgMjUxLCAxNzcsIDIyLCAyNDksIAorICAgIDEwMiwgMjExLCAyMzcsIDI0MiwgMTg0LCAyNDksIDIzNSwgMjQyLCAxODQsIDIxNSwgMTkzLCAyNDYsIDkwLCAyNTIsIDYyLCAKKyAgICAyMzAsIDkzLCAyNTAsIDcsIDI1MiwgNjIsIDIzMCwgOTIsIDI1MiwgMTg3LCAyNTEsIDE3NiwgMjIzLCAzMywgMjExLCAyMDEsIAorICAgIDIyNCwgMTk1LCAyNTEsIDIzNSwgMjUxLCAyMCwgMjM1LCAxMzgsIDI1MCwgNzcsIDIxNSwgMjM1LCAyNDQsIDE2MiwgMjUwLCAKKyAgICA3NiwgMjQ0LCA5NCwgMjQ0LCA5NSwgMjE5LCAxMiwgMjUyLCAxNTgsIDIyNSwgMjUwLCAyMjQsIDI0NCwgMjQ5LCAyMDQsIAorICAgIDI1MiwgMTU5LCAyMTcsIDU5LCAyMTUsIDIzNSwgMjQ5LCAxMjgsIDI0NCwgNjcsIDIyNSwgNjMsIDI0OCwgODEsIDIzNSwgCisgICAgMTMxLCAyNDcsIDEzMSwgMjUwLCAyMzIsIDIxOCwgMTEzLCAyMTEsIDI0MCwgMjUwLCA5OCwgMjMwLCAxMjksIDIxMywgMTY0LCAKKyAgICAyNTAsIDE2MiwgMjIxLCAxOTksIDIyMSwgMjI0LCAyNDIsIDE0OCwgMjUwLCAyNTEsIDI1MCwgMjMzLCAyNDAsIDI0NSwgCisgICAgMjQ0LCAxMzAsIDIxMiwgMCwgMjIyLCAyMDAsIDI0OSwgMjM2LCAyNDQsIDg2LCAyMjUsIDIsIDIyLCAyNDQsIDkwLCAyMzAsIAorICAgIDIyNywgMjMwLCAxMDgsIDI1MSwgMTAsIDI1MCwgMzksIDI0MSwgMjMyLCAyNTMsIDI0MSwgMjI2LCA2MiwgMjE2LCAxNCwgCisgICAgMjQxLCAyNTEsIDI1MCwgMjksIDIxNiwgMjQyLCAyMTYsIDExMywgMjUwLCAyMCwgMjUxLCAyMDIsIDIyNSwgMTc3LCAyNTMsIAorICAgIDI0MCwgMjEzLCAxNzIsIDI0MywgMTEwLCAyNDcsIDE5NywgMjQxLCAxNTYsIDIxOSwgODQsIDIzMSwgMjM0LCAyNTEsIDI0NSwgCisgICAgMjQzLCAxMTEsIDI0NywgMjQwLCAyNTEsIDE2NiwgMjQ0LCA1MiwgMjI1LCAzMywgMjUwLCAyNDEsIDI4LCAyMjgsIDQ3LCAKKyAgICAyMzAsIDg1LCAyOCwgMjI4LCA0MiwgMjIxLCAyMTIsIDI0MiwgOTksIDI4LCAyMzQsIDEzNywgMjE1LCAxOTAsIDIxMywgCisgICAgMTU0LCAyOCwgMjIxLCAxOTIsIDIyMiwgMTI0LCAyMjAsIDExLCAyLCAyMjEsIDIyNywgMjE2LCAyNDQsIDIyMywgMTc4LCAKKyAgICAyMiwgMjUyLCAxNTksIDIxOSwgMTA1LCAyMiwgMjE5LCAxMDUsIDI1MSwgMTg3LCAyNTIsIDEyMywgMjIsIDI0MSwgNDksIAorICAgIDI1MCwgMTIwLCAyNDQsIDczLCAyMTksIDYzLCAyMjIsIDEyNSwgMjE4LCAxMiwgMjE1LCAxOTQsIDI0MCwgMjQ2LCAyMjMsIAorICAgIDE3OSwgMjU0LCAxMjksIDI0NCwgMzEsIDIyMiwgMTM2LCAyNDQsIDMxLCAyMTcsIDI0MSwgMjQwLCAyMzUsIDI1MSwgMTE5LCAKKyAgICAyNDAsIDIzNSwgMiwgMjQzLCA5NCwgMjI2LCAyMjksIDI1MSwgMTE5LCAyMzUsIDEzMSwgMjI0LCAyMzksIDIyNiwgMjI4LCAKKyAgICAyNDUsIDQ0LCAyMjQsIDIzOSwgMjI2LCAyMjgsIDI0MCwgMjQ0LCAyNTIsIDE0NSwgMjUzLCAxODEsIDIxNiwgMjUyLCAyMzEsIAorICAgIDIzNCwgMjQwLCAyNDAsIDIzMiwgMTExLCAyNDAsIDI0MCwgMjQ5LCAxNzYsIDIxOCwgMTI1LCAyMjEsIDE5OCwgMjQ4LCA0MywgCisgICAgMjE4LCAxMjUsIDI0NCwgMTgwLCAyMzUsIDE0OSwgMjMzLCA4OSwgMjM1LCAxMzEsIDI1MCwgMjI2LCAyNDUsIDQ0LCAyNTAsIAorICAgIDIyNiwgMjIzLCAxNDEsIDIzMCwgMTEyLCAyMjYsIDExNCwgMjEyLCA0MSwgMjUxLCAxMjMsIDI0OSwgMTQ1LCAyMTYsIDEwNiwgCisgICAgMjMzLCAxOCwgMjIzLCAxODAsIDI1MCwgMjI0LCAyNDYsIDk2LCAyNDksIDEzNSwgMjEyLCAzLCAyMTksIDcwLCAyMTksIDY4LCAKKyAgICAyNDAsIDI0NSwgMjIzLCAxNTMsIDI0MiwgMTcwLCAyMjAsIDU3LCAyMzAsIDE0NSwgMjIyLCAxOTQsIDI1MCwgMTA4LCAyNDcsIAorICAgIDEzNiwgMjI1LCA3MywgMjUxLCAyMDMsIDI0NSwgMTY5LCAyMjYsIDIzOCwgMjE4LCAyNTIsIDIyMCwgNTIsIDI1MSwgMTIyLCAKKyAgICAyNTQsIDkyLCAyNDEsIDU0LCAyMzMsIDEyMSwgMjUyLCA2MCwgMjQ0LCA5MCwgMjE1LCAxOTMsIDI0NCwgOTAsIDI1MSwgCisgICAgMjA5LCAyMTUsIDkxLCAyNDEsIDI0OSwgMjUwLCAxMDksIDI1MiwgMTg3LCAyNTAsIDEwOSwgMjQzLCAyNDIsIDI1MiwgMTg3LCAKKyAgICAyNTAsIDEwOSwgMjUxLCAyMzcsIDIyNSwgMTk1LCAyMzQsIDI2LCAyMjQsIDI0OCwgMjQ2LCA4NywgMjUxLCAxMSwgMjUyLCAKKyAgICAxNzcsIDI1MSwgMTEsIDI0NywgMTMwLCAyMzAsIDExMywgMjQ0LCAxOTAsIDI0OSwgMTQ2LCAyNDQsIDE5MCwgMjE2LCAxMDcsIAorICAgIDI0NCwgMTkwLCAyMjMsIDE4MSwgMjQ0LCAxOTAsIDI1MCwgMjI1LCAyNDQsIDE5MCwgMjQ2LCA5NywgMjQ0LCAxOTAsIDIxOCwgCisgICAgMjQxLCAyMTIsIDMsIDI0MCwgMjQ2LCAyNDQsIDE5MCwgMjMwLCAxNDYsIDI0NCwgMTkwLCAyNDcsIDEzNywgMjQ0LCAxOTAsIAorICAgIDIyNSwgNzQsIDI0NCwgMTkwLCAyNDMsIDI0NSwgMjQ0LCAxOTAsIDI0MiwgMjAsIDI0NCwgMTkwLCAyMTEsIDIyNCwgMjQ0LCAKKyAgICAxOTAsIDI1MiwgNzEsIDI0NCwgMTkwLCAyMjYsIDQ1LCAyNDQsIDE5MCwgMjI1LCA3NCwgMjI4LCA1MywgMjI1LCAyMzIsIAorICAgIDIyNCwgMTg2LCAyNDUsIDEzLCAyNDUsIDIyNywgMjI4LCA1MywgMjMwLCAxMTAsIDIxNiwgMTksIDcxLCAxMjAsIDIyNSwgNywgCisgICAgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgMTI0LCAyMjUsIDcsIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDQzLCAyMjUsIDcsIAorICAgIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDQ0LCAyMjUsIDcsIDI1MiwgMTgyLCAyMzUsIDI0MiwgMjQ0LCA4NCwgMjQyLCAxNiwgCisgICAgNTAsIDIxMiwgMzMsIDI0MiwgMTYsIDUwLCAyMjYsIDIxNSwgMjQyLCAxNiwgNTAsIDIxNiwgMTM1LCAxMjAsIDUwLCAyMTYsIAorICAgIDEzNSwgMTI0LCA1MCwgMjUwLCAxOSwgMjQyLCAxMSwgNTAsIDIwNCwgMjQyLCAxMSwgNTAsIDI0OSwgMTIzLCAyMTEsIDIyMCwgCisgICAgMjQxLCAyNTEsIDI0NSwgMTQsIDIyOSwgMTA0LCAyMTcsIDE1MSwgMjM1LCAxMjUsIDI0NiwgOTIsIDIzNCwgODIsIDI1MSwgCisgICAgMjQ3LCAyMTEsIDIyMCwgMjQ5LCAyNDksIDIyNCwgMTI3LCAyNDIsIDE0LCAyMjQsIDIzMCwgMjMxLCAxNzcsIDIyMCwgNCwgCisgICAgMjUzLCAyMDMsIDIyMCwgNCwgMjQxLCAxNjQsIDIyMCwgNCwgMjExLCAyMjAsIDIyMSwgMjQwLCAyMTEsIDIyMCwgMjUxLCAKKyAgICAxODYsIDI0NCwgMjksIDI1MSwgOTAsIDIzNiwgMCwgMjE5LCAxNjksIDI1MSwgODksIDIzNiwgMCwgMjE5LCAxNjksIDI1MSwgCisgICAgMTYyLCAyNDIsIDE5NCwgMjMxLCAxODUsIDIxMSwgMjIxLCAyNDQsIDE3NCwgMjMxLCAxODYsIDIyLCAyMTEsIDIyMiwgMjQxLCAKKyAgICA2MCwgMjQyLCAxMCwgMTEzLCAyMzEsIDU5LCAyNDEsIDYwLCAyNDIsIDEwLCAxMTMsIDIxMSwgMjE5LCAyNDEsIDYwLCAyNDIsIAorICAgIDEwLCAyMjQsIDI1NSwgMjI2LCAyMjcsIDIxMSwgMjIyLCAyLCAyNTEsIDEwNiwgMjQ1LCAyMjUsIDI1MSwgMTQxLCAyLCAKKyAgICAyMTMsIDI0NiwgMjI1LCAxNjgsIDIsIDI1MSwgMjEyLCAyNDIsIDM0LCAyMzEsIDE4NiwgMiwgMjQyLCAxMTAsIDIyNSwgCisgICAgMTA5LCAyMzEsIDE3NCwgMjMxLCAxODYsIDIsIDIxNSwgOTcsIDIyNiwgMjA4LCAyMzEsIDE4NSwgMjI2LCAyMDgsIDIxMSwgCisgICAgMjIxLCAyNTIsIDE4NiwgMjQ5LCAxOTAsIDIxMSwgMjA1LCAyMjQsIDE4OSwgMjM1LCAxMzEsIDIyNiwgMjIzLCAyMzUsIAorICAgIDEzMSwgMjQyLCAxNjksIDI0MiwgMjIyLCAyNTIsIDE4NywgMjU0LCAxMTMsIDI0NSwgMTgsIDI1NCwgMTYwLCAyNTQsIDE2MSwgCisgICAgMjMwLCAxMzYsIDIzNiwgNSwgMjE5LCAxMDAsIDIzNSwgMjMyLCAyNDgsIDM0LCAyMjUsIDE2NywgMjQyLCAxMDUsIDI0OCwgCisgICAgMTc5LCAyMzIsIDIwMSwgMjI5LCAyMTEsIDIyNCwgMjU0LCAyNDQsIDE5MSwgMjMxLCAxNDIsIDI0MiwgMzMsIDI1MiwgMTM4LCAKKyAgICAyMjUsIDEsIDIxNywgMTcxLCAyMjUsIDY2LCAyMzQsIDY0LCA3OCwgMjMyLCAxMTEsIDIzMywgMTAsIDIyMiwgMjMzLCAyNDMsIAorICAgIDU0LCAyMTgsIDEzMSwgMjM0LCA2MywgMjUxLCAxNzEsIDI0OSwgMTQ4LCAyLCAyNDEsIDIyNywgMjEyLCAxOSwgMjUyLCA2OSwgCisgICAgMjQxLCAyMjcsIDI1MSwgMTM1LCAyNDEsIDIyNywgMTEzLCAyNDEsIDIyNSwgMjE5LCAxMCwgMjQxLCAyMjcsIDI0MiwgMTIwLCAKKyAgICAyNDEsIDIyNywgMjQxLCAyMjgsIDIsIDc0LCAyNTEsIDIwOCwgMjQxLCAyMjcsIDI0MiwgMTI3LCAyNDEsIDIyNywgMjExLCAKKyAgICA0MiwgMjQxLCAyMjcsIDIyNCwgMTI4LCAyNDEsIDIyNywgMjQxLCAyMjgsIDIsIDIyMywgMzMsIDIyMywgNDQsIDI0MSwgCisgICAgMjI1LCAyNDEsIDIyOCwgMjQ4LCA4MSwgMjQ3LCAyNDksIDIyMCwgODIsIDIsIDExNSwgNTksIDIzNSwgMjE1LCAyNDUsIAorICAgIDE3MiwgMTkyLCAyNTEsIDExNiwgMjU0LCAxMTIsIDg3LCAyNTEsIDE5NSwgMjE5LCA5MiwgODcsIDI0OSwgMjI4LCA4NywgCisgICAgMjE4LCAyNDYsIDIxNywgMjQ4LCA4NywgMjQ2LCA4NSwgMjQ4LCAxNTcsIDg3LCAyMjUsIDY3LCA2NCwgMjI0LCAyNDksIAorICAgIDI0NCwgNjEsIDI1MiwgMywgMjQ3LCAxNjUsIDg3LCAyMTksIDMsIDI1MiwgMTU4LCAyMTYsIDE0OSwgMjUyLCAxNTgsIDcxLCAKKyAgICAyNDQsIDUxLCAyNDAsIDIxMSwgMjI1LCA1LCA4NywgMjMwLCAxNDksIDI1MiwgMTcyLCAyNDksIDk4LCAyNDUsIDMyLCAxMTQsIAorICAgIDI0NywgMTMyLCA1MCwgMjQ5LCAxMzksIDI1MCwgMjQyLCAyNTIsIDE0NCwgMiwgMjExLCA0MCwgNTAsIDI1MiwgMTQ0LCAyLCAKKyAgICAyNDcsIDEzMiwgNTAsIDI1MiwgMTQ0LCAyLCAyNDUsIDQ3LCA1MCwgMjUyLCAxNDQsIDIsIDIyNCwgMjI4LCA1MCwgMjMwLCAKKyAgICAxNDksIDIsIDIxMSwgMjM1LCAyNTAsIDEzOCwgMiwgMjE0LCAxNTMsIDIxNSwgMjMxLCAyMiwgMjExLCA0MCwgNTAsIDIyMSwgCisgICAgMTc4LCAyMjUsIDE2NiwgMjQ5LCAyMDgsIDI1MSwgMTM5LCAyMzAsIDE4NiwgMjQ0LCA1NiwgMjQ3LCAxODUsIDIyNiwgMTYxLCAKKyAgICAyNDcsIDE5MCwgMjQ2LCA0OSwgMjQ0LCAxMDcsIDI0NCwgNDAsIDIwNCwgMjQ0LCAxMDcsIDI0NCwgNDAsIDIyNiwgNzYsIDIsIAorICAgIDI0OSwgMTAwLCAyMjYsIDc2LCAyNDQsIDE4MywgMjE0LCAxNjMsIDI1MSwgMTYsIDIxNywgMTgsIDI1MSwgMTYsIDI1MCwgCisgICAgMjQzLCAyMzUsIDI0MiwgMjUwLCAxMzgsIDIsIDIxNCwgMTUzLCAyMTUsIDIzMCwgMjUwLCAxMzgsIDIsIDI0NiwgMTA0LCAKKyAgICAyMTUsIDIzMCwgMjUyLCAxNDEsIDI1MCwgMTM3LCAyNTAsIDYsIDIyNCwgMTIzLCAyMjIsIDE4NSwgMjI0LCAxMjMsIDIyNiwgCisgICAgMTksIDIxOCwgMTIxLCAyMjIsIDEzMSwgMjE1LCAyMjIsIDIyMiwgMTMxLCAyNTEsIDE5MSwgMjE3LCA5MSwgMjMzLCA1MSwgCisgICAgMjI4LCA0NSwgMjI4LCA0NiwgMiwgMjQ4LCA4MCwgMjQ5LCAxNDcsIDI1MCwgMCwgMjUxLCAxOTIsIDIwNCwgMjUxLCAxOTIsIAorICAgIDI0MiwgMTI3LCAyNTEsIDE5MiwgMjUxLCAyMDgsIDI1MSwgMTkyLCAyMjYsIDE1NywgMjUxLCAxOTIsIDI1MSwgMTg5LCAKKyAgICAyMjksIDIwNSwgMjUyLCAxNzUsIDIyMSwgMTg2LCAyMzEsIDYwLCAyMTcsIDEsIDIyMywgMTIzLCAyMjYsIDc0LCAyNDQsIAorICAgIDE1OSwgMjMxLCAyMzQsIDIyMSwgMjIzLCAyNTQsIDg5LCAyMjQsIDE0NSwgMjU0LCAyNTIsIDIzMiwgMTEzLCAyNTAsIDEyNywgCisgICAgMjMxLCA3MiwgMjI2LCAxMjksIDIxNSwgMjM4LCAyMzUsIDI1MiwgMjE1LCAyMzgsIDIyNiwgODIsIDI0NiwgMjQsIDg3LCAKKyAgICAyMzUsIDI0OSwgMjQ1LCAxMTksIDI0NSwgMTIwLCAyLCAyNDYsIDEwNCwgODAsIDQ4LCAyNTAsIDAsIDIzMSwgMjAwLCAyLCAKKyAgICAyMzIsIDEwNywgMjQ0LCA3MywgMjUwLCAwLCAyMzEsIDIwMCwgMiwgMjIzLCAxNTcsIDI0NCwgNzMsIDIwNCwgMjMxLCAyMDAsIAorICAgIDIsIDIyMywgMTU3LCAyNDQsIDczLCAyMDQsIDIzMSwgMjAwLCAyLCAyMzIsIDEwNywgMjQ0LCA3MywgMjI0LCAyMzYsIDIyNCwgCisgICAgMjM3LCAyNDAsIDI0OCwgMjI5LCA4NCwgMjMwLCAxNTksIDIyNSwgMTE3LCAyMzAsIDE1OSwgMjI1LCAxMTgsIDIsIDk3LCAKKyAgICA4MCwgMjUzLCAyMDcsIDIzMywgNDYsIDIxMywgMTc1LCAyMzAsIDE1OCwgMjMwLCAxNTksIDIyNSwgMTE4LCAyMjYsIDIzMCwgCisgICAgMjI4LCA3NSwgMjMwLCAxNTksIDIyNSwgMTE2LCAyNTQsIDkwLCAyLCAyNTIsIDEyOSwgMjUxLCAxMCwgMjEzLCAxNzIsIAorICAgIDI1MSwgMTAsIDIxNiwgMjU0LCAyMjMsIDE3MywgMjEzLCAxNzEsIDIxNSwgNjAsIDk3LCAyNTMsIDI0NywgMjUwLCAyLCA5NywgCisgICAgMjIsIDE0MCwgMjA0LCAyNTAsIDM2LCAyNTMsIDI0NywgMjUwLCAyLCA5NywgMjIsIDE0MCwgMjA0LCAyNTAsIDM2LCAyNTMsIAorICAgIDI0OCwgMiwgMzcsIDEyMywgMjI2LCAxMjAsIDI1MCwgMiwgMjQ2LCAxMDQsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDM2LCAKKyAgICAyNTMsIDI0NywgMjU0LCA4OCwgMjQ2LCAxMDQsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDM2LCAyNTMsIDI0NywgMTIxLCAKKyAgICAyNTEsIDEzOCwgODcsIDEyNSwgMjUxLCAxMzgsIDg3LCAyMTksIDcsIDIsIDI1MSwgNCwgOTEsIDIxOSwgNiwgMjE5LCA3LCAKKyAgICAyLCAxMjMsIDIxOSwgMzEsIDIxMiwgMzUsIDIxOSwgNywgMiwgMTM0LCAyMTksIDMxLCAyMTIsIDM0LCAyNTIsIDExNSwgCisgICAgMjQ1LCAxNzIsIDIyNSwgMjcsIDIzMywgNDIsIDIzMSwgMjExLCAyNDIsIDE4NCwgMjIyLCAyNDcsIDIzMSwgMjExLCAyNDIsIAorICAgIDE4NCwgMjMyLCAxNTIsIDIsIDIzNSwgMjI1LCAyMjUsIDE5OSwgMjUwLCAwLCAyMzIsIDE1MiwgMiwgMjM0LCAxMzgsIDIzNCwgCisgICAgMTM4LCAyMzIsIDE1MSwgMjA0LCAyMzIsIDE1MSwgMjUyLCA0NCwgMjUyLCA0NSwgMiwgMjUxLCA0LCA5MSwgMjUxLCAxOTAsIAorICAgIDIzMiwgMjA0LCA4NywgMjIzLCAxNzQsIDI1MSwgODYsIDI1MiwgMTg1LCAyLCAxNDAsIDgwLCA0OCwgMjQ1LCAxNDMsIDIsIAorICAgIDE0MCwgODAsIDQ4LCAyMjYsIDE5NywgMiwgMjQ1LCAzMSwgMTY0LCAyLCA0MywgNDQsIDgwLCA0OCwgMjE5LCAzOSwgMiwgCisgICAgOTcsIDgwLCA0OCwgMjE2LCAxNCwgMiwgMjE0LCAxNTMsIDgwLCA0OCwgMjI4LCA3NSwgMTIzLCAyMTQsIDE4NCwgMjQ1LCAKKyAgICAxOTEsIDg3LCAyMzQsIDEzNiwgMjE2LCAyNDcsIDIzNSwgMjE5LCAxNiwgMzEsIDcsIDYsIDIzMywgOSwgMjM1LCAyMTksIAorICAgIDE2LCAzMSwgNywgNCwgMjMzLCA5LCAyMzUsIDIxOSwgMTYsIDMxLCAyMjcsIDE5OSwgMjM1LCAyMTksIDE2LCAzMSwgMjE3LCAKKyAgICAxODMsIDIzNSwgMjE5LCAxNiwgMzEsIDcsIDIzMywgOSwgMjQ0LCA5NiwgMjQ1LCAxNzIsIDIxNiwgOSwgMjExLCAxOTksIAorICAgIDI0MiwgMjEsIDIyNywgMTgyLCAyMiwgMjUxLCAxOTcsIDI0MSwgNjYsIDIyNSwgNTAsIDIzMCwgMjI2LCAyMTYsIDI1NSwgCisgICAgMjQ5LCAxMTQsIDI1MiwgMTU5LCAyMTksIDEyNSwgMjI1LCA5LCAyMTgsIDE1NywgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCAKKyAgICAyMzUsIDEzMSwgMTYsIDMxLCAyNTIsIDU3LCAyMTUsIDIyMCwgMjQ1LCAxNTYsIDg1LCA0MiwgMjUxLCA4NiwgNzEsIDQyLCAKKyAgICAyNTEsIDg2LCAyMzMsIDg1LCAyMjMsIDExMSwgMjUwLCAzNSwgMjMzLCA4NSwgMjUxLCAyMDgsIDI1MCwgMzUsIDIzMywgODUsIAorICAgIDIyNiwgMTU3LCAyNDcsIDI0OCwgMjMzLCA4NSwgMjUxLCAyMDgsIDI0NywgMjQ4LCA0LCAyMjYsIDE1NywgMjQ3LCAyNDgsIAorICAgIDQsIDI1MSwgMjA4LCAyNDcsIDI0OCwgMjE0LCAxNjIsIDIyMywgMTExLCAyMTUsIDIyNSwgMjQ2LCAxMDUsIDIyMywgMTExLCAKKyAgICAyMTUsIDIyNSwgMjE0LCAxNjIsIDQsIDIyMywgMTExLCAyMTUsIDIyNSwgMjQ2LCAxMDUsIDQsIDIyMywgMTExLCAyMTUsIAorICAgIDIyNSwgMzcsIDI0OSwgMTMxLCAyMjQsIDI1MiwgMjQ5LCAxMzEsIDIyNCwgMjUzLCAyLCAyNDIsIDI2LCA1MSwgMjQ5LCAKKyAgICAxMzEsIDIyNCwgMjUyLCAyMjgsIDQ5LCA0MywgMjIwLCAxNTMsIDIsIDEzNCwgMjQ3LCAxMTgsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDEyMywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDExMywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDEzNCwgCisgICAgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgMTEsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDgxLCAKKyAgICAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE5LCAxMjUsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMjAsIAorICAgIDEyMiwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NSwgMTkzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMjI4LCAyMDAsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIDI0OCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAKKyAgICAxOTEsIDI0NSwgMTY4LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA3NywgMjI2LCAyNDIsIDI1MCwgNCwgCisgICAgMjQ0LCAxOTEsIDIyNiwgMTkyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDU2LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIAorICAgIDE0MCwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA3LCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDc5LCAyNTAsIDQsIDI0NCwgCisgICAgMTkxLCAyMTksIDEyMSwgMjUwLCA0LCAyNDQsIDE5MSwgMjIwLCAxMjEsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NSwgMTkyLCAKKyAgICAyNTAsIDQsIDI0NCwgMTkxLCAyMjgsIDE5OSwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAyNDYsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDI0NSwgMTY2LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDc1LCAyMzAsIDExNywgMjQzLCAyMzAsIDIxNiwgMzYsIDIxNiwgMiwgCisgICAgMjE4LCAxNDgsIDY0LCAyMzIsIDIzOSwgMjE5LCAxNzAsIDY0LCAyMzUsIDEzMiwgMjMwLCAxMDYsIDI0MiwgMTI0LCAyNDQsIAorICAgIDE5MCwgMjQyLCAxMjQsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNDQsIDE5MSwgMiwgMjE3LCAxNCwgNjQsIAorICAgIDIzNSwgNTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAKKyAgICAyMzAsIDExMSwgMjIsIDIxOSwgNzQsIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTExLCAyMiwgCisgICAgMjQ5LCAyMzAsIDIxNywgMjQ3LCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMSwgMjIsIDIxNiwgMTA0LCAKKyAgICAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQyLCAyNSwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MCwgMjQ3LCAKKyAgICAyMTEsIDIzMywgMjQ0LCAxOTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNDQsIDE5MSwgCisgICAgMjIxLCAyMTcsIDI0OCwgNjIsIDI0NCwgMzMsIDIyMywgODgsIDI0NCwgMTkwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQxLCAKKyAgICAyMjYsIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMTgsIDM0LCAyMTksIDczLCAyNDQsIDE5MCwgMjI5LCA4NywgCisgICAgMjQ0LCAxOTAsIDI0NSwgMjMsIDI0NCwgMTkwLCAyMTQsIDE4OCwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyNDksIDIzMCwgCisgICAgMjE3LCAyNDcsIDIyNSwgMTkyLCAyNDQsIDE5MCwgMjQ5LCAyMDEsIDI0NCwgMTkwLCAyNDksIDIwMiwgMjQ0LCAxOTAsIAorICAgIDIzNCwgNjIsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMjE2LCAxMzcsIDExNSwgMjM0LCA2MywgMjM0LCA2MiwgMjQ0LCAxOTEsIAorICAgIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDIzNCwgNjIsIDI0NCwgMTkxLCAyLCAyNTAsIDAsIDI0NSwgMTMsIDI0NCwgMTkxLCAyLCAKKyAgICAyMTgsIDg4LCAyMTYsIDE5LCAyNDQsIDE5MSwgMiwgMjE4LCA4OCwgMjE2LCAyMCwgMjIsIDIxMSwgMjMzLCAyNDUsIDE1LCAKKyAgICAyNDQsIDE5MSwgMiwgMjE4LCA4OCwgMjE2LCAyMCwgMjIsIDIxNiwgMTA0LCAyNDUsIDEzLCAyNDcsIDE5MiwgMjQ0LCAxOTAsIAorICAgIDIxMSwgMjA0LCAyNDQsIDE5MCwgMjU0LCAxMDgsIDI0NCwgMTkwLCAyMjQsIDIyNywgMjQ0LCAxOTAsIDI0OSwgMTE2LCAKKyAgICAyNDQsIDE5MCwgMjI1LCAxNzAsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjMyLCAxMjYsIDY0LCAyMTUsIDIwNCwgMjQ3LCAKKyAgICAxOTIsIDI1MSwgODgsIDIyMywgODgsIDI0NCwgMTkwLCAyNDMsIDIzOSwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIAorICAgIDI1NCwgMTA2LCAyNDQsIDE5MCwgMjQ0LCAxNTIsIDI0NCwgMTkwLCAyMTIsIDIwLCAyNDQsIDE5MCwgMjE5LCA5MSwgMjQ0LCAKKyAgICAxOTAsIDIxNiwgNzEsIDI0NCwgMTkwLCAyNDIsIDEyNSwgMjQ0LCAxOTAsIDIzMiwgMTE0LCAyNDksIDExNiwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyNDAsIDIwMywgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgCisgICAgMTExLCAyMiwgMjQ5LCAyMzAsIDIxNywgMjQ3LCAyNDQsIDE5MSwgMjIxLCAxOTAsIDIzNiwgMCwgMjQ0LCAxNTMsIDI1MywgCisgICAgMjEzLCAyNDQsIDE5MCwgMjQ0LCA0OSwgMjQ0LCAxOTAsIDIxOSwgOTIsIDI0NCwgMTkwLCAyNDcsIDE2NSwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyMTEsIDIzMCwgMjMwLCAxMTAsIDI0NCwgMTkxLCAyLCAyMzEsIDg0LCAyMzEsIDE0NCwgMjQyLCAxMjQsIAorICAgIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTcsIDE0LCAKKyAgICA2NCwgMjM1LCA1MywgMjE5LCA3NCwgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyMTksIDc0LCAyNTAsIAorICAgIDIyNSwgMjQ0LCAxOTEsIDIsIDI0MSwgMjI2LCAyNDUsIDEzLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxMSwgMTk2LCAKKyAgICAyMTksIDc1LCAyMzQsIDYyLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDI1MCwgMCwgMjQ1LCAxMywgMjI0LCAyMjcsIDI1MCwgCisgICAgMjI1LCAyNDQsIDE5MCwgMjQ5LCAxMTYsIDI1MCwgMjI1LCAyNDQsIDE5MCwgMjEyLCAyMCwgMjUwLCAyMjUsIDI0NCwgMTkwLCAKKyAgICAyNDQsIDE5MSwgMiwgMjI4LCA3NSwgMjQyLCAxNjMsIDI0MywgMzQsIDI0NCwgMTkxLCAyLCAyMjYsIDIxNSwgMjQzLCAzNCwgCisgICAgMjI1LCAxNjgsIDI1MSwgMTY4LCAyNDgsIDc1LCAyMjEsIDE2OSwgMjMwLCAxNDUsIDI0MSwgMjI5LCAyMzAsIDE0NSwgMjE5LCAKKyAgICA4LCAyMzAsIDE0NSwgMjQyLCA1LCAyMjUsIDE2OCwgMjIzLCAxNTYsIDEyMywgMjQyLCAxNSwgMjI1LCAxNjgsIDIyMywgCisgICAgMTU2LCAyNTEsIDE3OCwgMjQyLCAxMSwgMjM2LCAwLCAyNTAsIDE3OSwgMjI1LCAxNjgsIDI0MywgMjM4LCAyMjUsIDE2OCwgCisgICAgMiwgMjI0LCAyMjcsIDI0NCwgMTkwLCAyMjUsIDE2OCwgMiwgMjQ0LCA0MSwgMjQyLCAxMCwgMjIyLCAyMDMsIDI0MSwgMjE0LCAKKyAgICAyMTgsIDE0MywgMjMyLCAxNDksIDIyMywgMTYyLCAyNTAsIDI0NCwgMjQxLCAxNjIsIDIxNSwgMjQ4LCAyNDEsIDE2MiwgCisgICAgMjE1LCAyNDksIDIsIDI1MSwgMTE0LCAyMjgsIDUzLCAyMTUsIDI0OCwgMjMxLCAzMiwgMTkyLCAyMjMsIDE2MywgMjE4LCAKKyAgICAxNDksIDIxNSwgMjQ2LCAyMTUsIDI0NywgMjUwLCAyNDQsIDI1MSwgOTIsIDIyNiwgMTk0LCAyNTEsIDkyLCAyMTUsIDIwMSwgCisgICAgMjUxLCA5MywgMjE4LCAxMjksIDIzMCwgMTg3LCAyNTQsIDEzMCwgMjQ0LCA5NywgMjQ1LCAxMzcsIDIyNCwgMjU1LCAyNTAsIAorICAgIDI0NCwgMjI2LCAxOTQsIDIyNCwgMjU1LCAyNTAsIDI0NCwgMjE3LCAzMiwgMjI2LCAxOTQsIDIxNywgMzIsIDI1MywgMTgwLCAKKyAgICAyMjYsIDE5NCwgMjUzLCAxODAsIDIyMywgMTE4LCAyMTMsIDI0NywgMjQ4LCA1OCwgMjE1LCAxOTIsIDI1MywgMjQyLCAyMzIsIAorICAgIDExNywgMjE1LCAyNTQsIDIzMCwgMTM5LCAyMzAsIDExNiwgMjIzLCAxNjEsIDIxOCwgNiwgMjIzLCAxNjEsIDIzMCwgMTE2LCAKKyAgICAyNTEsIDI4LCAyNTQsIDIyOSwgMjE1LCAyNDUsIDIyMCwgMTYsIDIyMiwgMTgyLCAyMTksIDEsIDIwMywgMjE1LCAyNTIsIAorICAgIDIzMiwgMjMwLCA2NywgMjE1LCAyNTIsIDIzMiwgMjMwLCAyNDksIDE5MCwgNTAsIDIyNCwgMjU1LCAyNTAsIDIyOSwgMjIzLCAKKyAgICA0NCwgMjMyLCAyMzAsIDIxNSwgMjIyLCAyNDQsIDc0LCAyMjYsIDE5NywgMjI0LCAyMzgsIDI0NywgMTIzLCAyMjgsIDc1LCAKKyAgICAyNDUsIDEyNSwgNTAsIDIxOSwgNzIsIDg3LCAyMjgsIDc1LCAyMTksIDcyLCA4NywgMjI0LCAxMjIsIDIzMiwgMTkzLCAyMzYsIAorICAgIDAsIDIzNSwgMTU3LCAyMjUsIDQxLCA4NywgMjQ3LCAxNDYsIDIyOCwgNTIsIDIzMiwgMTkzLCA4NywgMjI0LCAyMzIsIDIxMiwgCisgICAgNDEsIDg3LCAyMjgsIDY2LCAyMTIsIDQxLCA4NywgMjUyLCAyLCAyMjgsIDc1LCAyNTIsIDEsIDI1MiwgMCwgMjMwLCAxMTYsIAorICAgIDI1MiwgMCwgMjI1LCAyMTMsIDIyOCwgNzUsIDIyNSwgMjEyLCAyNTAsIDEwMCwgMjQ5LCAxMjQsIDIzMSwgNTYsIDg3LCAKKyAgICAyMTEsIDIxOCwgODcsIDIyMywgNTksIDI1MiwgMTg3LCA4NywgMjE2LCAzNywgMjEyLCA0MSwgMjQ5LCAyNTMsIDIxOSwgCisgICAgMjM0LCAyNTIsIDExOCwgMjUyLCAxMTYsIDIyNSwgMjQyLCAyNDksIDE3NywgMjQ5LCA4NiwgMjUyLCAxNjksIDI1MCwgMjIsIAorICAgIDQzLCAyMzIsIDkwLCAxMDgsIDE2LCAzMSwgMjI0LCAzLCAxMDgsIDE2LCAzMSwgMjU0LCAxOTIsIDEwOCwgMTYsIDMxLCAKKyAgICAyNDQsIDk2LCAxMDgsIDE2LCAzMSwgMjQ1LCAyMjMsIDEwOCwgMTYsIDMxLCAyMTIsIDQwLCAxMDgsIDE2LCAzMSwgMjU0LCAKKyAgICA0MywgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIyMywgMTA1LCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjIzLCAxMDQsIDEwOCwgCisgICAgMTYsIDMxLCAyNTQsIDQ0LCAyMTMsIDE0MywgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIxMywgMTQyLCAxMDgsIDE2LCAzMSwgCisgICAgMjEzLCAxNTcsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NiwgMTA4LCAxNiwgMzEsIDIxMywgMTU1LCAxMDgsIDE2LCAzMSwgMjE4LCAKKyAgICA0NCwgMTA4LCAxNiwgMzEsIDIyNSwgMTI1LCAyMTgsIDQ0LCAxMDgsIDE2LCAzMSwgODUsIDIxOCwgNDQsIDEwOCwgMTYsIAorICAgIDMxLCAyMzEsIDU1LCAyMTgsIDcxLCAxMDgsIDE2LCAzMSwgMjMxLCA1NSwgMjE4LCA3MCwgMTA4LCAxNiwgMzEsIDIzMSwgCisgICAgNTUsIDIxOCwgNjksIDEwOCwgMTYsIDMxLCAyNTAsIDM4LCAxMDgsIDE2LCAzMSwgMjIyLCAxLCAxMDgsIDE2LCAzMSwgMjI4LCAKKyAgICAxODgsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MSwgMTA4LCAxNiwgMzEsIDIxMywgMTQwLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDQsIAorICAgIDIyMiwgMSwgMTA4LCAxNiwgMzEsIDIyMiwgMjA0LCAyMjIsIDAsIDEwOCwgMTYsIDMxLCAyNDIsIDE2NiwgMTA4LCAxNiwgCisgICAgMzEsIDIxOSwgMTY2LCAxMDgsIDE2LCAzMSwgMjM1LCAxNzcsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjM1LCAxNzcsIAorICAgIDIyNiwgMTUyLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyMzUsIDE3NiwgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgCisgICAgMjM1LCAxNzYsIDEwOCwgMTYsIDMxLCAyNDksIDE2OCwgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI2LCAKKyAgICAxNTMsIDEwOCwgMTYsIDMxLCAyMTgsIDcyLCA2NCwgMjQ5LCAxNjcsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDI0OSwgCisgICAgMTY3LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyNDksIDE2NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTY4LCAyNTQsIDgzLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIyLCAyLCA2NCwgMjQ5LCAxNjgsIDI1NCwgODMsIDEwOCwgMTYsIDMxLCAyMTgsIDcyLCA2NCwgCisgICAgMjIyLCAyLCA2NCwgMjQ5LCAxNjcsIDEwOCwgMTYsIDMxLCAyMTMsIDI0MywgMTA4LCAxNiwgMzEsIDIxNiwgODQsIDIyNiwgCisgICAgMTUzLCAxMDgsIDE2LCAzMSwgMjMzLCA1NywgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyNTQsIDgyLCAyMjYsIDE1MywgMTA4LCAKKyAgICAxNiwgMzEsIDIxOCwgNzIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjIyLCAyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgCisgICAgMzEsIDIxOCwgNzIsIDY0LCAyMjIsIDIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjEzLCAxNTgsIDY0LCAyNTQsIDgxLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAyNTQsIDgwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDAsIDEwOCwgMTYsIDMxLCAyMjMsIDk5LCAxMDgsIDE2LCAzMSwgMjIzLCA5OCwgMTA4LCAKKyAgICAxNiwgMzEsIDIyMywgOTcsIDEwOCwgMTYsIDMxLCAyNTQsIDE1NywgMTA4LCAxNiwgMzEsIDI1NCwgMTU2LCAxMDgsIDE2LCAKKyAgICAzMSwgMjMxLCAxNjMsIDEwOCwgMTYsIDMxLCAyMjIsIDcsIDEwOCwgMTYsIDMxLCAyNTMsIDI0NiwgMTA4LCAxNiwgMzEsIAorICAgIDIyMywgMTI1LCAxMDgsIDE2LCAzMSwgMjIzLCAxMjQsIDEwOCwgMTYsIDMxLCAyNTMsIDE4MywgMTA4LCAxNiwgMzEsIDI1MSwgCisgICAgMjI5LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIxNywgNDksIDEwOCwgMTYsIDMxLCAyMTcsIDQ4LCAxMDgsIDE2LCAzMSwgCisgICAgMjI0LCA4LCAyMzIsIDIyMiwgMTA4LCAxNiwgMzEsIDI1MSwgMTgzLCAxMDgsIDE2LCAzMSwgMjUxLCAxODIsIDEwOCwgMTYsIAorICAgIDMxLCAyNTEsIDE4MSwgMTA4LCAxNiwgMzEsIDI1NCwgMTM4LCAxMDgsIDE2LCAzMSwgMjI2LCAyMTgsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTgsIDI0OCwgMTA4LCAxNiwgMzEsIDIxNiwgODIsIDEwOCwgMTYsIDMxLCAyNDIsIDk2LCAxMDgsIDE2LCAzMSwgMjEyLCAKKyAgICAyOCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI2LCAxMDgsIDE2LCAzMSwgMjUxLCAxNCwgMTA4LCAxNiwgMzEsIDIxNSwgODYsIAorICAgIDEwOCwgMTYsIDMxLCAyNTAsIDI0NiwgMjMwLCAxMjIsIDEwOCwgMTYsIDMxLCAyMjEsIDIwMiwgNjQsIDIzNSwgNTUsIDEwOCwgCisgICAgMTYsIDMxLCAyNTEsIDI1LCAxMDgsIDE2LCAzMSwgMjE1LCAyMTksIDEwOCwgMTYsIDMxLCAyMTgsIDE1NCwgMjE1LCAyMTksIAorICAgIDEwOCwgMTYsIDMxLCAyMzIsIDE0OCwgMTA4LCAxNiwgMzEsIDIxOSwgNTYsIDEwOCwgMTYsIDMxLCAyMTQsIDE0MiwgMTA4LCAKKyAgICAxNiwgMzEsIDI0MCwgMjQ2LCAyNDYsIDY0LCAxMDgsIDE2LCAzMSwgMjUzLCAyMjcsIDEwOCwgMTYsIDMxLCAyMjQsIDIzNCwgCisgICAgMjUzLCAyMjcsIDEwOCwgMTYsIDMxLCAyNTEsIDE0MiwgMTA4LCAxNiwgMzEsIDIyNCwgMjI1LCAyNTEsIDE0MiwgMTA4LCAKKyAgICAxNiwgMzEsIDI1NCwgMTM1LCAxMDgsIDE2LCAzMSwgMjE4LCAxMTcsIDIxOCwgMjYsIDIxOCwgMTE2LCAxMDgsIDE2LCAzMSwgCisgICAgMjE4LCAxMTcsIDIxOCwgMjYsIDIxOCwgMTE1LCAxMDgsIDE2LCAzMSwgMjE4LCA2OCwgMTA4LCAxNiwgMzEsIDIyNCwgMjAwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjQ3LCAxODEsIDEwOCwgMTYsIDMxLCAyNDcsIDE4MywgMTA4LCAxNiwgMzEsIDI0NywgMTgyLCAxMDgsIAorICAgIDE2LCAzMSwgMjI0LCAxMzEsIDEwOCwgMTYsIDMxLCAyMjQsIDEyMCwgMTA4LCAxNiwgMzEsIDI0OSwgMTIyLCAxMDgsIDE2LCAKKyAgICAzMSwgMjQ5LCAxMjEsIDEwOCwgMTYsIDMxLCAyNDksIDEyMCwgMTA4LCAxNiwgMzEsIDI0OSwgMTE5LCAxMDgsIDE2LCAzMSwgCisgICAgMjQ5LCAxMTgsIDEwOCwgMTYsIDMxLCAyNTQsIDE2OSwgMTA4LCAxNiwgMzEsIDI1MiwgMTE5LCA2NCwgMjMxLCAxNDksIAorICAgIDEwOCwgMTYsIDMxLCAyNTIsIDExOSwgNjQsIDIxNCwgMTcsIDEwOCwgMTYsIDMxLCAyMjMsIDU3LCAxMDgsIDE2LCAzMSwgCisgICAgMjQwLCAyMzgsIDEwOCwgMTYsIDMxLCAyMjgsIDIxMiwgMTA4LCAxNiwgMzEsIDI0OCwgMTQ1LCAxMDgsIDE2LCAzMSwgMjMwLCAKKyAgICAxMzQsIDEwOCwgMTYsIDMxLCAxNjMsIDI0NiwgOTQsIDEwOCwgMTYsIDMxLCAxNjMsIDIyNiwgMTMyLCA5LCAxNCwgMjQwLCAKKyAgICAxMDIsIDksIDE0LCAyNDAsIDEwMSwgOSwgMTQsIDI0MCwgMTAwLCA5LCAxNCwgMjQwLCA5OSwgOSwgMTQsIDI0MCwgOTgsIDksIAorICAgIDE0LCAyNDAsIDk3LCA5LCAxNCwgMjQwLCA5NiwgOSwgMTQsIDI0MCwgOTUsIDksIDE0LCAyNDAsIDk0LCA5LCAxNCwgMjQwLCAKKyAgICA5MywgOSwgMTQsIDI0MCwgOTIsIDksIDE0LCAyNDAsIDkxLCA5LCAxNCwgMjQwLCA5MCwgOSwgMTQsIDI0MCwgODksIDksIAorICAgIDE0LCAyNDAsIDg4LCA5LCAxNCwgMjQwLCA4NywgOSwgMTQsIDI0MCwgODYsIDksIDE0LCAyNDAsIDg1LCA5LCAxNCwgMjQwLCAKKyAgICA4NCwgOSwgMTQsIDI0MCwgODMsIDksIDE0LCAyNDAsIDgyLCA5LCAxNCwgMjQwLCA4MSwgOSwgMTQsIDI0MCwgODAsIDksIAorICAgIDE0LCAyNDAsIDc5LCA5LCAxNCwgMjQwLCA3OCwgOSwgMTQsIDI0MCwgNzcsIDksIDE0LCAyNDAsIDc2LCA5LCAxNCwgMjQwLCAKKyAgICA3NSwgOSwgMTQsIDI0MCwgNzQsIDksIDE0LCAyNDAsIDczLCA5LCAxNCwgMjQwLCA3MiwgOSwgMTQsIDI0MCwgNzEsIDksIAorICAgIDE0LCAyNDAsIDcwLCA5LCAxNCwgMjQwLCA2OSwgOSwgMTQsIDI0MCwgNjgsIDksIDE0LCAyNDAsIDY3LCA5LCAxNCwgMjQwLCAKKyAgICA2NiwgOSwgMTQsIDI0MCwgNjUsIDksIDE0LCAyNDAsIDY0LCA5LCAxNCwgMjQwLCA2MywgOSwgMTQsIDI0MCwgNjIsIDksIAorICAgIDE0LCAyNDAsIDYxLCA5LCAxNCwgMjQwLCA2MCwgOSwgMTQsIDI0MCwgNTksIDksIDE0LCAyNDAsIDU4LCA5LCAxNCwgMjQwLCAKKyAgICA1NywgOSwgMTQsIDI0MCwgNTYsIDksIDE0LCAyNDAsIDU1LCA5LCAxNCwgMjQwLCA1NCwgOSwgMTQsIDI0MCwgNTMsIDksIAorICAgIDE0LCAyNDAsIDUyLCA5LCAxNCwgMjQwLCA1MSwgOSwgMTQsIDI0MCwgNTAsIDksIDE0LCAyNDAsIDQ5LCA5LCAxNCwgMjQwLCAKKyAgICA0OCwgOSwgMTQsIDI0MCwgNDcsIDksIDE0LCAyNDAsIDQ2LCA5LCAxNCwgMjQwLCA0NSwgOSwgMTQsIDI0MCwgNDQsIDksIAorICAgIDE0LCAyNDAsIDQzLCA5LCAxNCwgMjQwLCA0MiwgOSwgMTQsIDI0MCwgNDEsIDksIDE0LCAyNDAsIDQwLCA5LCAxNCwgMjQwLCAKKyAgICAzOSwgOSwgMTQsIDI0MCwgMzgsIDksIDE0LCAyNDAsIDM3LCA5LCAxNCwgMjQwLCAzNiwgOSwgMTQsIDI0MCwgMzUsIDksIAorICAgIDE0LCAyNDAsIDM0LCA5LCAxNCwgMjQwLCAzMywgOSwgMTQsIDI0MCwgMzIsIDksIDE0LCAyNDAsIDMxLCA5LCAxNCwgMjQwLCAKKyAgICAzMCwgOSwgMTQsIDI0MCwgMjksIDksIDE0LCAyNDAsIDI4LCA5LCAxNCwgMjQwLCAyNywgOSwgMTQsIDI0MCwgMjYsIDksIAorICAgIDE0LCAyNDAsIDI1LCA5LCAxNCwgMjQwLCAyNCwgOSwgMTQsIDI0MCwgMjMsIDksIDE0LCAyNDAsIDIyLCA5LCAxNCwgMjQwLCAKKyAgICAyMSwgOSwgMTQsIDI0MCwgMjAsIDksIDE0LCAyNDAsIDE5LCA5LCAxNCwgMjQwLCAxOCwgOSwgMTQsIDI0MCwgMTcsIDksIAorICAgIDE0LCAyNDAsIDE2LCA5LCAxNCwgMjQwLCAxNSwgOSwgMTQsIDI0MCwgMTQsIDksIDE0LCAyNDAsIDEzLCA5LCAxNCwgMjQwLCAKKyAgICAxMiwgOSwgMTQsIDI0MCwgMTEsIDksIDE0LCAyNDAsIDEwLCA5LCAxNCwgMjQwLCA5LCA5LCAxNCwgMjQwLCA4LCA5LCAxNCwgCisgICAgMjQwLCA3LCA5LCAxNCwgMjQwLCA2LCA5LCAxNCwgMjQwLCA1LCA5LCAxNCwgMjQwLCA0LCA5LCAxNCwgMjQwLCAzLCA5LCAKKyAgICAxNCwgMjQwLCAyLCA5LCAxNCwgMjQwLCAxLCA5LCAxNCwgMjQwLCAwLCA5LCAxNCwgMjM5LCAyNTUsIDksIDE0LCAyMzksIAorICAgIDI1NCwgOSwgMTQsIDIzOSwgMjUzLCA5LCAxNCwgMjM5LCAyNTIsIDksIDE0LCAyMzksIDI1MSwgOSwgMTQsIDIzOSwgMjUwLCAKKyAgICA5LCAxNCwgMjM5LCAyNDksIDksIDE0LCAyMzksIDI0OCwgOSwgMTQsIDIzOSwgMjQ3LCA5LCAxNCwgMjM5LCAyNDYsIDksIAorICAgIDE0LCAyMzksIDI0NSwgOSwgMTQsIDIzOSwgMjQ0LCA5LCAxNCwgMjM5LCAyNDMsIDksIDE0LCAyMzksIDI0MiwgOSwgMTQsIAorICAgIDIzOSwgMjQxLCA5LCAxNCwgMjM5LCAyNDAsIDksIDE0LCAyMzksIDIzOSwgOSwgMTQsIDIzOSwgMjM4LCA5LCAxNCwgMjM5LCAKKyAgICAyMzcsIDksIDE0LCAyMzksIDIzNiwgOSwgMTQsIDIzOSwgMjM1LCA5LCAxNCwgMjM5LCAyMzQsIDksIDE0LCAyMzksIDIzMywgCisgICAgOSwgMTQsIDIzOSwgMjMyLCA5LCAxNCwgMjM5LCAyMzEsIDksIDE0LCAyMzksIDIzMCwgOSwgMTQsIDIzOSwgMjI5LCA5LCAKKyAgICAxNCwgMjM5LCAyMjgsIDksIDE0LCAyMzksIDIyNywgOSwgMTQsIDIzOSwgMjI2LCA5LCAxNCwgMjM5LCAyMjUsIDksIDE0LCAKKyAgICAyMzksIDIyNCwgOSwgMTQsIDIzOSwgMjIzLCA5LCAxNCwgMjM5LCAyMjIsIDksIDE0LCAyMzksIDIyMSwgOSwgMTQsIDIzOSwgCisgICAgMjIwLCA5LCAxNCwgMjM5LCAyMTksIDksIDE0LCAyMzksIDIxOCwgOSwgMTQsIDIzOSwgMjE3LCA5LCAxNCwgMjM5LCAyMTYsIAorICAgIDksIDE0LCAyMzksIDIxNSwgOSwgMTQsIDIzOSwgMjE0LCA5LCAxNCwgMjM5LCAyMTMsIDksIDE0LCAyMzksIDIxMiwgOSwgCisgICAgMTQsIDIzOSwgMjExLCA5LCAxNCwgMjM5LCAyMTAsIDksIDE0LCAyMzksIDIwOSwgOSwgMTQsIDIzOSwgMjA4LCA5LCAxNCwgCisgICAgMjM5LCAyMDcsIDksIDE0LCAyMzksIDIwNiwgOSwgMTQsIDIzOSwgMjA1LCA5LCAxNCwgMjM5LCAyMDQsIDksIDE0LCAyMzksIAorICAgIDIwMywgOSwgMTQsIDIzOSwgMjAyLCA5LCAxNCwgMjM5LCAyMDEsIDksIDE0LCAyMzksIDIwMCwgOSwgMTQsIDIzOSwgMTk5LCAKKyAgICA5LCAxNCwgMjM5LCAxOTgsIDksIDE0LCAyMzksIDE5NywgOSwgMTQsIDIzOSwgMTk2LCA5LCAxNCwgMjM5LCAxOTUsIDksIAorICAgIDE0LCAyMzksIDE5NCwgOSwgMTQsIDIzOSwgMTkzLCA5LCAxNCwgMjM5LCAxOTIsIDksIDE0LCAyMzksIDE5MSwgOSwgMTQsIAorICAgIDIzOSwgMTkwLCA5LCAxNCwgMjM5LCAxODksIDksIDE0LCAyMzksIDE4OCwgOSwgMTQsIDIzOSwgMTg3LCA5LCAxNCwgMjM5LCAKKyAgICAxODYsIDksIDE0LCAyMzksIDE4NSwgOSwgMTQsIDIzOSwgMTg0LCA5LCAxNCwgMjM5LCAxODMsIDksIDE0LCAyMzksIDE4MiwgCisgICAgOSwgMTQsIDIzOSwgMTgxLCA5LCAxNCwgMjM5LCAxODAsIDksIDE0LCAyMzksIDE3OSwgOSwgMTQsIDIzOSwgMTc4LCA5LCAKKyAgICAxNCwgMjM5LCAxNzcsIDksIDE0LCAyMzksIDE3NiwgOSwgMTQsIDIzOSwgMTc1LCA5LCAxNCwgMjM5LCAxNzQsIDksIDE0LCAKKyAgICAyMzksIDE3MywgOSwgMTQsIDIzOSwgMTcyLCA5LCAxNCwgMjM5LCAxNzEsIDksIDE0LCAyMzksIDE3MCwgOSwgMTQsIDIzOSwgCisgICAgMTY5LCA5LCAxNCwgMjM5LCAxNjgsIDksIDE0LCAyMzksIDE2NywgOSwgMTQsIDIzOSwgMTY2LCA5LCAxNCwgMjM5LCAxNjUsIAorICAgIDksIDE0LCAyMzksIDE2NCwgOSwgMTQsIDIzOSwgMTYzLCA5LCAxNCwgMjM5LCAxNjIsIDksIDE0LCAyMzksIDE2MSwgOSwgCisgICAgMTQsIDIzOSwgMTYwLCA5LCAxNCwgMjM5LCAxNTksIDksIDE0LCAyMzksIDE1OCwgOSwgMTQsIDIzOSwgMTU3LCA5LCAxNCwgCisgICAgMjM5LCAxNTYsIDksIDE0LCAyMzksIDE1NSwgOSwgMTQsIDIzOSwgMTU0LCA5LCAxNCwgMjM5LCAxNTMsIDksIDE0LCAyMzksIAorICAgIDE1MiwgOSwgMTQsIDIzOSwgMTUxLCA5LCAxNCwgMjM5LCAxNTAsIDksIDE0LCAyMzksIDE0OSwgOSwgMTQsIDIzOSwgMTQ4LCAKKyAgICA5LCAxNCwgMjM5LCAxNDcsIDksIDE0LCAyMzksIDE0NiwgOSwgMTQsIDIzOSwgMTQ1LCA5LCAxNCwgMjM5LCAxNDQsIDksIAorICAgIDE0LCAyMzksIDE0MywgOSwgMTQsIDIzOSwgMTQyLCA5LCAxNCwgMjM5LCAxNDEsIDksIDE0LCAyMzksIDE0MCwgOSwgMTQsIAorICAgIDIzOSwgMTM5LCA5LCAxNCwgMjM5LCAxMzgsIDksIDE0LCAyMzksIDEzNywgOSwgMTQsIDIzOSwgMTM2LCA5LCAxNCwgMjM5LCAKKyAgICAxMzUsIDksIDE0LCAyMzksIDEzNCwgOSwgMTQsIDIzOSwgMTMzLCA5LCAxNCwgMjM5LCAxMzIsIDksIDE0LCAyMzksIDEzMSwgCisgICAgOSwgMTQsIDIzOSwgMTMwLCA5LCAxNCwgMjM5LCAxMjksIDksIDE0LCAyMzksIDEyOCwgOSwgMTQsIDIzOSwgMTI3LCA5LCAKKyAgICAxNCwgMjM5LCAxMjYsIDksIDE0LCAyMzksIDEyNSwgOSwgMTQsIDIzOSwgMTI0LCA5LCAxNCwgMjM5LCAxMjMsIDksIDE0LCAKKyAgICAyMzksIDEyMiwgOSwgMTQsIDIzOSwgMTIxLCA5LCAxNCwgMjM5LCAxMjAsIDksIDE0LCAyMzksIDExOSwgOSwgMTQsIDIzOSwgCisgICAgMTE4LCA5LCAxNCwgMjM5LCAxMTcsIDksIDE0LCAyMzksIDExNiwgOSwgMTQsIDIzOSwgMTE1LCA5LCAxNCwgMjM5LCAxMTQsIAorICAgIDksIDE0LCAyMzksIDExMywgOSwgMTQsIDIzOSwgMTEyLCA5LCAxNCwgMjM5LCAxMTEsIDksIDE0LCAyMzksIDExMCwgOSwgCisgICAgMTQsIDIzOSwgMTA5LCA5LCAxNCwgMjM5LCAxMDgsIDksIDE0LCAyMzksIDEwNywgOSwgMTQsIDIzOSwgMTA2LCA5LCAxNCwgCisgICAgMjM5LCAxMDUsIDksIDE0LCAyMzksIDEwNCwgOSwgMTQsIDIzOSwgMTAzLCA5LCAxNCwgMjM5LCAxMDIsIDksIDE0LCAyMzksIAorICAgIDEwMSwgOSwgMTQsIDIzOSwgMTAwLCA5LCAxNCwgMjM5LCA5OSwgOSwgMTQsIDIzOSwgOTgsIDksIDE0LCAyMzksIDk3LCA5LCAKKyAgICAxNCwgMjM5LCA5NiwgOSwgMTQsIDIzOSwgOTUsIDksIDE0LCAyMzksIDk0LCA5LCAxNCwgMjM5LCA5MywgOSwgMTQsIDIzOSwgCisgICAgOTIsIDksIDE0LCAyMzksIDkxLCA5LCAxNCwgMjM5LCA5MCwgOSwgMTQsIDIzOSwgODksIDksIDE0LCAyMzksIDg4LCA5LCAKKyAgICAxNCwgMjM5LCA4NywgOSwgMTQsIDIzOSwgODYsIDksIDE0LCAyMzksIDg1LCA5LCAxNCwgMjM5LCA4NCwgOSwgMTQsIDIzOSwgCisgICAgODMsIDksIDE0LCAyMzksIDgyLCA5LCAxNCwgMjM5LCA4MSwgOSwgMTQsIDIzOSwgODAsIDksIDE0LCAyMzksIDc5LCA5LCAKKyAgICAxNCwgMjM5LCA3OCwgOSwgMTQsIDIzOSwgNzcsIDksIDE0LCAyMzksIDc2LCA5LCAxNCwgMjM5LCA3NSwgOSwgMTQsIDIzOSwgCisgICAgNzQsIDksIDE0LCAyMzksIDczLCA5LCAxNCwgMjM5LCA3MiwgOSwgMTQsIDIzOSwgNzEsIDksIDE0LCAyMzksIDcwLCA5LCAKKyAgICAxNCwgMjM5LCA2OSwgOSwgMTQsIDIzOSwgNjgsIDksIDE0LCAyMzksIDY3LCA5LCAxNCwgMjM5LCA2NiwgOSwgMTQsIDIzOSwgCisgICAgNjUsIDksIDE0LCAyMzksIDY0LCA5LCAxNCwgMjM5LCA2MywgOSwgMTQsIDIzOSwgNjIsIDksIDE0LCAyMzksIDYxLCA5LCAKKyAgICAxNCwgMjM5LCA2MCwgOSwgMTQsIDIzOSwgNTksIDksIDE0LCAyMzksIDU4LCA5LCAxNCwgMjM5LCA1NywgOSwgMTQsIDIzOSwgCisgICAgNTYsIDksIDE0LCAyMzksIDU1LCA5LCAxNCwgMjM5LCA1NCwgOSwgMTQsIDIzOSwgNTMsIDksIDE0LCAyMzksIDUyLCA5LCAKKyAgICAxNCwgMjM5LCA1MSwgOSwgMTQsIDIzOSwgNTAsIDksIDE0LCAyMzksIDQ5LCA5LCAxNCwgMjM5LCA0OCwgOSwgMTQsIDIzOSwgCisgICAgNDcsIDksIDE0LCAyMzksIDQ2LCA5LCAxNCwgMjM5LCA0NSwgOSwgMTQsIDIzOSwgNDQsIDksIDE0LCAyMzksIDQzLCA5LCAKKyAgICAxNCwgMjM5LCA0MiwgOSwgMTQsIDIzOSwgNDEsIDksIDE0LCAyMzksIDQwLCA5LCAxNCwgMjM5LCAzOSwgOSwgMTQsIDIzOSwgCisgICAgMzgsIDksIDE0LCAyMzksIDM3LCA5LCAxNCwgMjM5LCAzNiwgOSwgMTQsIDIzOSwgMzUsIDksIDE0LCAyMzksIDM0LCA5LCAKKyAgICAxNCwgMjM5LCAzMywgOSwgMTQsIDIzOSwgMzIsIDksIDE0LCAyMzksIDMxLCA5LCAxNCwgMjM5LCAzMCwgOSwgMTQsIDIzOSwgCisgICAgMjksIDksIDE0LCAyMzksIDI4LCA5LCAxNCwgMjM5LCAyNywgOSwgMTQsIDIzOSwgMjYsIDksIDE0LCAyMzksIDI1LCA5LCAKKyAgICAxNCwgMjM5LCAyNCwgOSwgMTQsIDIzOSwgMjMsIDksIDE0LCAyMzksIDIyLCA5LCAxNCwgMjM5LCAyMSwgOSwgMTQsIDIzOSwgCisgICAgMjAsIDksIDE0LCAyMzksIDE5LCA5LCAxNCwgMjM5LCAxOCwgOSwgMTQsIDIzOSwgMTcsIDksIDE0LCAyMzksIDE2LCA5LCAKKyAgICAxNCwgMjM5LCAxNSwgOSwgMTQsIDIzOSwgMTQsIDksIDE0LCAyMzksIDEzLCA5LCAxNCwgMjM5LCAxMiwgOSwgMTQsIDIzOSwgCisgICAgMTEsIDksIDE0LCAyMzksIDEwLCA5LCAxNCwgMjM5LCA5LCA5LCAxNCwgMjM5LCA4LCA5LCAxNCwgMjM5LCA3LCA5LCAxNCwgCisgICAgMjM5LCA2LCA5LCAxNCwgMjM5LCA1LCA5LCAxNCwgMjM5LCA0LCA5LCAxNCwgMjM5LCAzLCA5LCAxNCwgMjM5LCAyLCA5LCAKKyAgICAxNCwgMjM5LCAxLCA5LCAxNCwgMjM5LCAwLCA5LCAxNCwgMjM4LCAyNTUsIDksIDE0LCAyMzgsIDI1NCwgOSwgMTQsIDIzOCwgCisgICAgMjUzLCA5LCAxNCwgMjM4LCAyNTIsIDksIDE0LCAyMzgsIDI1MSwgOSwgMTQsIDIzOCwgMjUwLCA5LCAxNCwgMjM4LCAyNDksIAorICAgIDksIDE0LCAyMzgsIDI0OCwgOSwgMTQsIDIzOCwgMjQ3LCA5LCAxNCwgMjM4LCAyNDYsIDksIDE0LCAyMzgsIDI0NSwgOSwgCisgICAgMTQsIDIzOCwgMjQ0LCA5LCAxNCwgMjM4LCAyNDMsIDksIDE0LCAyMzgsIDI0MiwgOSwgMTQsIDIzOCwgMjQxLCA5LCAxNCwgCisgICAgMjM4LCAyNDAsIDksIDE0LCAyMzgsIDIzOSwgOSwgMTQsIDIzOCwgMjM4LCA5LCAxNCwgMjM4LCAyMzcsIDksIDE0LCAyMzgsIAorICAgIDIzNiwgOSwgMTQsIDIzOCwgMjM1LCA5LCAxNCwgMjM4LCAyMzQsIDksIDE0LCAyMzgsIDIzMywgOSwgMTQsIDIzOCwgMjMyLCAKKyAgICA5LCAxNCwgMjM4LCAyMzEsIDksIDE0LCAyMzgsIDIzMCwgOSwgMTQsIDIzOCwgMjI5LCA5LCAxNCwgMjM4LCAyMjgsIDksIAorICAgIDE0LCAyMzgsIDIyNywgOSwgMTQsIDIzOCwgMjI2LCA5LCAxNCwgMjM4LCAyMjUsIDksIDE0LCAyMzgsIDIyNCwgOSwgMTQsIAorICAgIDIzOCwgMjIzLCA5LCAxNCwgMjM4LCAyMjIsIDksIDE0LCAyMzgsIDIyMSwgOSwgMTQsIDIzOCwgMjIwLCA5LCAxNCwgMjM4LCAKKyAgICAyMTksIDksIDE0LCAyMzgsIDIxOCwgOSwgMTQsIDIzOCwgMjE3LCA5LCAxNCwgMjM4LCAyMTYsIDksIDE0LCAyMzgsIDIxNSwgCisgICAgOSwgMTQsIDIzOCwgMjE0LCA5LCAxNCwgMjM4LCAyMTMsIDksIDE0LCAyMzgsIDIxMiwgOSwgMTQsIDIzOCwgMjExLCA5LCAKKyAgICAxNCwgMjM4LCAyMTAsIDksIDE0LCAyMzgsIDIwOSwgOSwgMTQsIDIzOCwgMjA4LCA5LCAxNCwgMjM4LCAyMDcsIDksIDE0LCAKKyAgICAyMzgsIDIwNiwgOSwgMTQsIDIzOCwgMjA1LCA5LCAxNCwgMjM4LCAyMDQsIDksIDE0LCAyMzgsIDIwMywgOSwgMTQsIDIzOCwgCisgICAgMjAyLCA5LCAxNCwgMjM4LCAyMDEsIDksIDE0LCAyMzgsIDIwMCwgOSwgMTQsIDIzOCwgMTk5LCA5LCAxNCwgMjM4LCAxOTgsIAorICAgIDksIDE0LCAyMzgsIDE5NywgOSwgMTQsIDIzOCwgMTk2LCA5LCAxNCwgMjM4LCAxOTUsIDksIDE0LCAyMzgsIDE5NCwgOSwgCisgICAgMTQsIDIzOCwgMTkzLCA5LCAxNCwgMjM4LCAxOTIsIDksIDE0LCAyMzgsIDE5MSwgOSwgMTQsIDIzOCwgMTkwLCA5LCAxNCwgCisgICAgMjM4LCAxODksIDksIDE0LCAyMzgsIDE4OCwgOSwgMTQsIDIzOCwgMTg3LCA5LCAxNCwgMjM4LCAxODYsIDksIDE0LCAyMzgsIAorICAgIDE4NSwgOSwgMTQsIDIzOCwgMTg0LCA5LCAxNCwgMjM4LCAxODMsIDksIDE0LCAyMzgsIDE4MiwgOSwgMTQsIDIzOCwgMTgxLCAKKyAgICA5LCAxNCwgMjM4LCAxODAsIDksIDE0LCAyMzgsIDE3OSwgOSwgMTQsIDIzOCwgMTc4LCA5LCAxNCwgMjM4LCAxNzcsIDksIAorICAgIDE0LCAyMzgsIDE3NiwgOSwgMTQsIDIzOCwgMTc1LCA5LCAxNCwgMjM4LCAxNzQsIDksIDE0LCAyMzgsIDE3MywgOSwgMTQsIAorICAgIDIzOCwgMTcyLCA5LCAxNCwgMjM4LCAxNzEsIDksIDE0LCAyMzgsIDE3MCwgOSwgMTQsIDIzOCwgMTY5LCA5LCAxNCwgMjM4LCAKKyAgICAxNjgsIDksIDE0LCAyMzgsIDE2NywgOSwgMTQsIDIzOCwgMTY2LCA5LCAxNCwgMjM4LCAxNjUsIDksIDE0LCAyMzgsIDE2NCwgCisgICAgOSwgMTQsIDIzOCwgMTYzLCA5LCAxNCwgMjM4LCAxNjIsIDksIDE0LCAyMzgsIDE2MSwgOSwgMTQsIDIzOCwgMTYwLCA5LCAKKyAgICAxNCwgMjM4LCAxNTksIDksIDE0LCAyMzgsIDE1OCwgOSwgMTQsIDIzOCwgMTU3LCA5LCAxNCwgMjM4LCAxNTYsIDksIDE0LCAKKyAgICAyMzgsIDE1NSwgOSwgMTQsIDIzOCwgMTU0LCA5LCAxNCwgMjM4LCAxNTMsIDksIDE0LCAyMzgsIDE1MiwgOSwgMTQsIDIzOCwgCisgICAgMTUxLCA5LCAxNCwgMjM4LCAxNTAsIDksIDE0LCAyMzgsIDE0OSwgOSwgMTQsIDIzOCwgMTQ4LCA5LCAxNCwgMjM4LCAxNDcsIAorICAgIDksIDE0LCAyMzgsIDE0NiwgOSwgMTQsIDIzOCwgMTQ1LCA5LCAxNCwgMjM4LCAxNDQsIDksIDE0LCAyMzgsIDE0MywgOSwgCisgICAgMTQsIDIzOCwgMTQyLCA5LCAxNCwgMjM4LCAxNDEsIDksIDE0LCAyMzgsIDE0MCwgOSwgMTQsIDIzOCwgMTM5LCA5LCAxNCwgCisgICAgMjM4LCAxMzgsIDksIDE0LCAyMzgsIDEzNywgOSwgMTQsIDIzOCwgMTM2LCA5LCAxNCwgMjM4LCAxMzUsIDksIDE0LCAyMzgsIAorICAgIDEzNCwgOSwgMTQsIDIzOCwgMTMzLCA5LCAxNCwgMjM4LCAxMzIsIDksIDE0LCAyMzgsIDEzMSwgOSwgMTQsIDIzOCwgMTMwLCAKKyAgICA5LCAxNCwgMjM4LCAxMjksIDksIDE0LCAyMzgsIDEyOCwgOSwgMTQsIDIzOCwgMTI3LCA5LCAxNCwgMjM4LCAxMjYsIDksIAorICAgIDE0LCAyMzgsIDEyNSwgOSwgMTQsIDIzOCwgMTI0LCA5LCAxNCwgMjM4LCAxMjMsIDksIDE0LCAyMzgsIDEyMiwgOSwgMTQsIAorICAgIDIzOCwgMTIxLCA5LCAxNCwgMjM4LCAxMjAsIDksIDE0LCAyMzgsIDExOSwgOSwgMTQsIDIzOCwgMTE4LCA5LCAxNCwgMjM4LCAKKyAgICAxMTcsIDksIDE0LCAyMzgsIDExNiwgOSwgMTQsIDIzOCwgMTE1LCA5LCAxNCwgMjM4LCAxMTQsIDksIDE0LCAyMzgsIDExMywgCisgICAgOSwgMTQsIDIzOCwgMTEyLCA5LCAxNCwgMjM4LCAxMTEsIDksIDE0LCAyMzgsIDExMCwgOSwgMTQsIDIzOCwgMTA5LCA5LCAKKyAgICAxNCwgMjM4LCAxMDgsIDksIDE0LCAyMzgsIDEwNywgOSwgMTQsIDIzOCwgMTA2LCA5LCAxNCwgMjM4LCAxMDUsIDksIDE0LCAKKyAgICAyMzgsIDEwNCwgOSwgMTQsIDIzOCwgMTAzLCA5LCAxNCwgMjM4LCAxMDIsIDksIDE0LCAyMzgsIDEwMSwgOSwgMTQsIDIzOCwgCisgICAgMTAwLCA5LCAxNCwgMjM4LCA5OSwgOSwgMTQsIDIzOCwgOTgsIDksIDE0LCAyMzgsIDk3LCA5LCAxNCwgMjM4LCA5NiwgOSwgCisgICAgMTQsIDIzOCwgOTUsIDksIDE0LCAyMzgsIDk0LCA5LCAxNCwgMjM4LCA5MywgOSwgMTQsIDIzOCwgOTIsIDksIDE0LCAyMzgsIAorICAgIDkxLCA5LCAxNCwgMjM4LCA5MCwgOSwgMTQsIDIzOCwgODksIDksIDE0LCAyMzgsIDg4LCA5LCAxNCwgMjM4LCA4NywgOSwgCisgICAgMTQsIDIzOCwgODYsIDksIDE0LCAyMzgsIDg1LCA5LCAxNCwgMjM4LCA4NCwgOSwgMTQsIDIzOCwgODMsIDksIDE0LCAyMzgsIAorICAgIDgyLCA5LCAxNCwgMjM4LCA4MSwgOSwgMTQsIDIzOCwgODAsIDksIDE0LCAyMzgsIDc5LCA5LCAxNCwgMjM4LCA3OCwgOSwgCisgICAgMTQsIDIzOCwgNzcsIDksIDE0LCAyMzgsIDc2LCA5LCAxNCwgMjM4LCA3NSwgOSwgMTQsIDIzOCwgNzQsIDksIDE0LCAyMzgsIAorICAgIDczLCAyMzMsIDkwLCAyMTcsIDg0LCAxMjksIDIxOSwgMTgsIDEyOSwgMjQ1LCAzMSwgNzgsIDEyOSwgMjIzLCAyNTQsIDc4LCAKKyAgICAxMjksIDU0LCA1MCwgMTI5LCAyNDcsIDEzMiwgNTAsIDEyOSwgMjI1LCAxODIsIDUwLCAxMjksIDI1NCwgMTI2LCAxMjksIAorICAgIDI1NCwgNTcsIDEyOSwgNDMsIDIyNiwgMywgMTI5LCA0NCwgMjI2LCAzLCAxMjksIDI1MywgMjE2LCAxMjksIDk2LCA1MCwgCisgICAgMTI5LCAyNDksIDIxOSwgMTI5LCAyNDAsIDE2NywgMTI5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDEyOSwgMjE5LCA0NiwgMTI5LCAKKyAgICAyMSwgMjEwLCA4NiwgMTI5LCAyMSwgMTEwLCAxMjksIDIxLCAxMDUsIDEyOSwgMjEsIDE1OCwgMTI5LCAyMSwgMTYxLCAxMjksIAorICAgIDIxLCAxODksIDEyOSwgMjEsIDE5NCwgMTI5LCAyMSwgMTk4LCAxMjksIDIxLCAxOTUsIDEyOSwgMjEsIDIwMCwgMTI5LCAKKyAgICAyNDksIDIyNiwgMTI5LCAyMjAsIDE1MCwgMTI5LCAyMzMsIDE1LCA1MCwgMTI5LCAyNDUsIDk4LCA1MCwgMTI5LCAyNDIsIAorICAgIDEzMCwgNTAsIDEyOSwgMjI0LCAxMywgNzgsIDEyOSwgMjQ5LCAyMTcsIDI1MywgMjA2LCAxMjksIDcsIDYsIDEsIDYxLCAKKyAgICAxMjksIDcsIDYsIDEsIDI1MywgMTU4LCAxMjksIDcsIDYsIDEsIDI1MSwgNjYsIDEyOSwgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgMTI5LCA3LCA2LCAxLCA3NSwgMTI5LCA3LCA2LCAxLCAyNDUsIDYsIDEyOSwgNywgNiwgMSwgMjQzLCAyMDIsIDEyOSwgNywgCisgICAgNiwgMSwgMjQyLCA2MCwgMTI5LCA3LCA2LCAxLCA3MywgMTI5LCA3LCA2LCAxLCAyMzUsIDE0NCwgMTI5LCA3LCA2LCAxLCAKKyAgICAyMzUsIDIzLCAxMjksIDcsIDYsIDEsIDE1NiwgMTI5LCA3LCA2LCAxLCAxOTMsIDEyOSwgNywgNiwgMSwgMjMwLCAyNSwgCisgICAgMTI5LCA3LCA2LCAxLCA3NiwgMTI5LCA3LCA2LCAxLCAyMjYsIDEwNSwgMTI5LCA3LCA2LCAxLCAyMjQsIDk2LCAxMjksIDcsIAorICAgIDYsIDEsIDE1MywgMTI5LCA3LCA2LCAxLCAyMjIsIDkxLCAxMjksIDcsIDYsIDEsIDIxNywgMTUyLCAxMjksIDcsIDYsIDEsIAorICAgIDcwLCAxMjksIDcsIDYsIDEsIDIxNCwgMTA1LCAxMjksIDcsIDYsIDEsIDIxMiwgOTgsIDEyOSwgNywgNiwgMSwgMjExLCAKKyAgICAxNzgsIDEyOSwgNywgNiwgMSwgMjExLCAxMTcsIDEyOSwgNywgNiwgMSwgMjEwLCAxNTksIDEyOSwgNDMsIDQyLCAxMjcsIAorICAgIDEyOSwgMjIzLCA1MCwgMjE5LCA0NiwgMTI5LCA0NCwgNDIsIDEyNywgMTI5LCAyNTAsIDMxLCAyNTUsIDE0LCAxMjksIDEyMSwgCisgICAgMjMyLCAyMTMsIDEyOSwgMjQyLCAxMzcsIDI1NSwgMTQsIDEyOSwgNywgNCwgMSwgNjEsIDEyOSwgNywgNCwgMSwgMjUzLCAKKyAgICAxNTgsIDEyOSwgNywgNCwgMSwgMjUxLCA2NiwgMTI5LCA3LCA0LCAxLCAyNDksIDYwLCAxMjksIDcsIDQsIDEsIDc1LCAxMjksIAorICAgIDcsIDQsIDEsIDI0NSwgNiwgMTI5LCA3LCA0LCAxLCAyNDMsIDIwMiwgMTI5LCA3LCA0LCAxLCAyNDIsIDYwLCAxMjksIDcsIAorICAgIDQsIDEsIDczLCAxMjksIDcsIDQsIDEsIDIzNSwgMTQ0LCAxMjksIDcsIDQsIDEsIDIzNSwgMjMsIDEyOSwgNywgNCwgMSwgCisgICAgMTU2LCAxMjksIDcsIDQsIDEsIDE5MywgMTI5LCA3LCA0LCAxLCAyMzAsIDI1LCAxMjksIDcsIDQsIDEsIDc2LCAxMjksIDcsIAorICAgIDQsIDEsIDIyNiwgMTA1LCAxMjksIDcsIDQsIDEsIDIyNCwgOTYsIDEyOSwgNywgNCwgMSwgMTUzLCAxMjksIDcsIDQsIDEsIAorICAgIDIyMiwgOTEsIDEyOSwgNywgNCwgMSwgMjE3LCAxNTIsIDEyOSwgNywgNCwgMSwgNzAsIDEyOSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDUsIDEyOSwgNywgNCwgMSwgMjEyLCA5OCwgMTI5LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI5LCA3LCA0LCAxLCAyMTEsIAorICAgIDExNywgMTI5LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjksIDY3LCAyMzIsIDIxMywgCisgICAgMTI5LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjksIDE4MiwgMjUxLCA2LCAyMTcsIDg0LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgCisgICAgNjcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA0NCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAxMSwgNDUsIAorICAgIDIyMSwgMCwgNDUsIDIyMCwgMjQ1LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgMjM1LCA0NSwgMjIwLCAKKyAgICAyMzQsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIDIyOSwgNDUsIDIyMCwgCisgICAgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAyMjQsIDQ1LCAyMjAsIAorICAgIDIyMywgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgMjE4LCA0NSwgMjIwLCAKKyAgICAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIDIxMywgNDUsIDIyMCwgCisgICAgMjEyLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAyMDcsIDQ1LCAyMjAsIAorICAgIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgMjAyLCA0NSwgMjIwLCAKKyAgICAyMDEsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIDE5NiwgNDUsIDIyMCwgCisgICAgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAxOTEsIDQ1LCAyMjAsIAorICAgIDE5MCwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgMTg1LCA0NSwgMjIwLCAKKyAgICAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIDE4MCwgNDUsIDIyMCwgCisgICAgMTc5LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAxNzQsIDQ1LCAyMjAsIAorICAgIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgMTY5LCA0NSwgMjIwLCAKKyAgICAxNjgsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIDE2MywgNDUsIDIyMCwgCisgICAgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIwLCAxNTgsIDQ1LCAyMjAsIAorICAgIDE1NywgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgMTUxLCA0NSwgMjIxLCAKKyAgICAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIDE0NiwgNDUsIDIyMSwgCisgICAgMTQ1LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAxNDAsIDQ1LCAyMjEsIAorICAgIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgMTM1LCA0NSwgMjIxLCAKKyAgICAxMzQsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIDEyOSwgNDUsIDIyMSwgCisgICAgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAxMjQsIDQ1LCAyMjEsIAorICAgIDEyMywgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgMTE4LCA0NSwgMjIxLCAKKyAgICAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIDExMywgNDUsIDIyMSwgCisgICAgMTEyLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAxMDcsIDQ1LCAyMjEsIAorICAgIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgMTAyLCA0NSwgMjIxLCAKKyAgICAxMDEsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCA0NSwgMjIxLCA5NSwgNDUsIAorICAgIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTEsIDQ1LCAyMjEsIDkwLCA0NSwgMjIxLCA4OCwgCisgICAgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAyMjEsIDgzLCA0NSwgMjIxLCAKKyAgICA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA3OSwgNDUsIDIyMSwgNzcsIDQ1LCAyMjEsIDc2LCA0NSwgCisgICAgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgNzEsIDQ1LCAyMjEsIDcwLCAKKyAgICA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNjgsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIDIyMSwgNjQsIDQ1LCAyMjEsIAorICAgIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgNDUsIDIyMSwgNTgsIDQ1LCAKKyAgICAyMjEsIDU3LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCA1MiwgNDUsIDIyMSwgNTEsIAorICAgIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ3LCA0NSwgMjIxLCA0NiwgNDUsIDIyMSwgCisgICAgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCA0NSwgMjIxLCAzOCwgNDUsIAorICAgIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMzQsIDQ1LCAyMjEsIDMyLCA0NSwgMjIxLCAzMSwgCisgICAgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAyMjEsIDI2LCA0NSwgMjIxLCAKKyAgICAyNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDIzLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIDQ1LCAyMjEsIDE5LCA0NSwgCisgICAgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgMTQsIDQ1LCAyMjEsIDEzLCAKKyAgICA0NSwgMjIxLCAxMiwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAyMjEsIDcsIDQ1LCAyMjEsIDYsIAorICAgIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDIsIDQ1LCAyMjEsIDEsIDQ1LCAyMjAsIDI1NSwgCisgICAgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAKKyAgICAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDcsIDQ1LCAyMjAsIDI0NiwgNDUsIDIyMCwgMjQ0LCA0NSwgCisgICAgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAyNDAsIDQ1LCAyMjAsIDIzOSwgNDUsIAorICAgIDIyMCwgMjM4LCAyMjcsIDIwMiwgMjI3LCAyMDQsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDIxOSwgNDgsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjE2LCAyMTIsIDIxOCwgODUsIDI0NSwgMTQzLCA2NCwgMjE2LCAyMTIsIDI0NSwgNTYsIDI0NSwgMTQzLCA2NCwgCisgICAgMjE1LCAyNDMsIDI0NSwgMTA5LCAyNDUsIDEzMiwgMjQ1LCAxMzMsIDI1NSwgNywgMjU1LCA4LCAyNTQsIDE2NywgMjUyLCAKKyAgICA0NywgMjUyLCAxNzksIDI1MSwgMTMxLCAxMzUsIDIxNywgODksIDIwMywgMjE3LCA4OSwgMjQwLCAyMjcsIDIxNywgOTMsIAorICAgIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTY2LCAyMzIsIDIxMywgMjQ1LCAxNDMsIDY0LCAyMzIsIDIxMywgMjMzLCAwLCAyMjgsIAorICAgIDEzNSwgMjQ1LCAxMTIsIDIzMiwgMjE0LCAyMTcsIDg5LCA2NywgMjE3LCA4OSwgMjEyLCAxMTgsIDI0NCwgMjAsIDI0NCwgCisgICAgMTQ1LCAyNDQsIDEyNSwgMjUwLCAyMzAsIDIyMywgNTMsIDI0OSwgMTQzLCAyMjAsIDI4LCAyMjYsIDEzMCwgMjMyLCAxNTAsIAorICAgIDExMCwgMjE5LCA1OCwgMjIwLCAyOCwgMjM1LCAyNTUsIDIzMiwgMTUwLCAyMTAsIDg2LCAyMTksIDE5MSwgMjQ4LCAxNTEsIAorICAgIDIzMiwgMjA0LCAyNDUsIDc3LCAyNDcsIDE1NSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDExMCwgMjQ4LCAxNDEsIDI0OCwgMzEsIAorICAgIDI0OSwgMTc4LCAxMDUsIDI0OCwgMTQwLCAyNDgsIDMxLCAyNDksIDE3OCwgMTU4LCAyNDgsIDEzOSwgMjQ4LCAzMSwgMjQ5LCAKKyAgICAxNzgsIDE2MSwgMjQ4LCAxMzgsIDE1MiwgMjU1LCA3LCAyMjksIDIwOSwgMjE3LCAxNzcsIDIzNiwgNjIsIDIxNywgMTgwLCAKKyAgICAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMjQ1LCA2MiwgMjUxLCA1LCAyNTEsIDcsIDI0NSwgMTQzLCA2NCwgCisgICAgMjMxLCA4MSwgMjQ1LCAxMTAsIDIxOCwgNjEsIDIxOCwgNzgsIDI0NSwgNzcsIDI0NSwgNzgsIDIzNSwgMjMyLCAyMjAsIAorICAgIDEzOCwgMTYxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDI0MywgMjM3LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDE1OCwgMjQyLCAKKyAgICAxMjEsIDIyMCwgMTM3LCAyNDIsIDExOCwgMjM1LCAyMzIsIDIyMCwgMTM4LCAxMDUsIDIyMywgMTIxLCAyMjAsIDEzNywgCisgICAgMjIyLCAxNDUsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTEwLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDIxNCwgMTMzLCAyMTksIDIxLCAKKyAgICAyNDgsIDYzLCAyNDgsIDY1LCAyMjYsIDc4LCAyNTAsIDE0MiwgMjI2LCA4MCwgMTI1LCAyMjYsIDI0MCwgMjI0LCAxOTMsIAorICAgIDI0MSwgNDcsIDI1MSwgMTUwLCAyMjUsIDE3MywgMjQxLCAyMDMsIDI1MSwgMTYxLCAyMjgsIDc1LCAyNTEsIDE1MCwgMjQxLCAKKyAgICAyMDMsIDIyOSwgMTc1LCAyMzUsIDI0MiwgMjM1LCAyNDQsIDIyOSwgODIsIDIzMiwgMjEzLCAyMjksIDk5LCAyMTgsIDE1MiwgCisgICAgNjQsIDIyMSwgMTU4LCAyNTQsIDE4LCAyMTgsIDIyMywgMjQ1LCAxNDMsIDY0LCAyMjEsIDE1OCwgMjU0LCAxOCwgMjQ1LCAKKyAgICA4MCwgMTM1LCAyMTcsIDkwLCAyMjAsIDEyNywgMjAzLCAyMTcsIDkwLCAyMjAsIDEyNywgMjQwLCAyMjQsIDEzNSwgMjE3LCAKKyAgICA5MCwgMiwgMjM1LCAzNSwgMjAzLCAyMTcsIDkwLCAyLCAyMzUsIDM1LCAyNDAsIDIyNSwgMjMyLCAyMTQsIDIxNywgOTAsIAorICAgIDIyMCwgMTI3LCA2NywgMjE3LCA5MCwgMjIwLCAxMjcsIDIxMiwgMTE3LCAyMjUsIDI1MywgMjMyLCAyMTQsIDI0NCwgMTQsIAorICAgIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjQ2LCAxMDYsIDIyNSwgMzIsIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjUyLCAxNzgsIDIyNSwgCisgICAgMjUzLCAyMzIsIDIxNCwgMjE0LCAxNjMsIDIyNSwgMjgsIDIyMywgNTAsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMjIzLCA1MCwgCisgICAgMjM1LCAyNDIsIDIyMywgMzUsIDIxOSwgMTU1LCAyMjAsIDI4LCAxMDUsIDIxOSwgMTUyLCAyMTgsIDIyNSwgMjE5LCAxNTUsIAorICAgIDIyMCwgMjgsIDE1OCwgMjE5LCAxNTEsIDIxOCwgMjI0LCAyNDgsIDMxLCAyNDksIDE3OCwgMjE4LCAxMDUsIDI0OCwgMTM3LCAKKyAgICAyMjQsIDE4MywgMjE0LCAxMzIsIDExMCwgMjI0LCAxODMsIDIxNCwgMTMwLCAyMjQsIDE0OSwgMjI0LCAxODMsIDIxNCwgCisgICAgMTMyLCAxMDUsIDIyNCwgMTgzLCAyMTQsIDEyOSwgMjI0LCAxNDgsIDIyMCwgMTI4LCAyMTUsIDI0MiwgMjE4LCAxNTEsIAorICAgIDIxOCwgODksIDI1MSwgNiwgMjUwLCAxNDIsIDI1MCwgMjA5LCAyMzEsIDQzLCAyMTIsIDU5LCAyMzAsIDQzLCAyMTgsIDE1MiwgCisgICAgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyMTgsIDE1MiwgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyMTksIDIwLCAyNDUsIAorICAgIDE0MywgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyNDUsIDE0MywgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyNDUsIDEwNywgCisgICAgMjE4LCAxNTIsIDY0LCAyMTgsIDEwNSwgMjE5LCAzNSwgMjE5LCAxNTUsIDI0MiwgMTQxLCAxMzUsIDIzNSwgMTk1LCAyMjAsIAorICAgIDEwNywgMjE5LCAxNTUsIDEzNSwgMjM1LCAxOTUsIDIyMSwgMTk0LCAyNDksIDE3OCwgMjIwLCAxMzUsIDIzNSwgMTk1LCAKKyAgICAyNDksIDExMywgMjE4LCAxMDYsIDIxNiwgMjM2LCAyMTgsIDE2OCwgMjI2LCAxNjksIDIxNywgMTY3LCAyNDksIDIxOCwgCisgICAgMjI2LCAxNDIsIDIyNCwgMTg0LCAyMzEsIDQyLCAyMjUsIDE5LCAyNTQsIDUzLCAyMjQsIDE3OCwgMjQ5LCAyMTgsIDI1NCwgCisgICAgNjksIDIyOSwgMTYzLCAyMTksIDIwMCwgNywgNiwgMSwgMjQyLCAyNDksIDcsIDQsIDEsIDI0MiwgMjQ5LCAyNTAsIDE1OSwgCisgICAgMTY1LCAxLCAyMzIsIDE3NSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDI0NCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAKKyAgICAyNDQsIDE1NywgMjA5LCAyMDksIDEsIDIyMiwgMjExLCAyMDksIDIwOSwgMSwgMjMyLCAxNTYsIDYzLCAxNjQsIDI1MSwgCisgICAgMjIzLCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIDI0OCwgMjIzLCA0MSwgMjQzLCAyMTYsIDI0MywgMjE1LCAyNDMsIDIxNCwgCisgICAgMjMwLCA0NSwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIDI1NCwgMjMyLCAxMDIsIDIyMiwgMjE5LCAyMzIsIDEwMywgMjIyLCAKKyAgICAyMjAsIDIyNSwgMjIzLCAyMzIsIDEwMSwgMjIyLCAyMTgsIDIyOCwgMTA2LCAyMzAsIDE2NSwgMjExLCAyMjksIDIxMiwgMTUsIAorICAgIDI0NSwgMTYyLCAyNDMsIDIyNiwgMjMwLCAyMjksIDIyNiwgMTk3LCAyMTQsIDEzNCwgODcsIDIzMCwgMjI5LCAyNDgsIDE1NywgCisgICAgODcsIDgsIDMsIDIzNSwgMTU4LCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyMzMsIDIwLCAxMjcsIAorICAgIDIxMywgMTE4LCAyMTMsIDcsIDIxMiwgMTk1LCAyMTIsIDE4NCwgMjEyLCAxNzMsIDIxMiwgMTYyLCAyMTIsIDE1MSwgMjEyLCAKKyAgICAxNDAsIDIxMiwgMTI5LCAyMTMsIDExNywgMjEzLCAxMDYsIDIxMywgOTUsIDIxMywgODQsIDIxMywgNzMsIDIxMywgNjIsIAorICAgIDIxMywgNTEsIDI1MSwgNzEsIDIyNiwgMTU1LCA3OCwgMjUxLCAxOTYsIDIwOSwgMjUzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCisgICAgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgMjEzLCA0MCwgMjEzLCAyOSwgMjEzLCAxOCwgMjEzLCA2LCAyMTIsIDI1MSwgCisgICAgMjEyLCAyNDAsIDIxMiwgMjI5LCAyMTIsIDIxOCwgMjEyLCAyMDcsIDIxMiwgMTk5LCAyMTIsIDE5OCwgMjEyLCAxOTcsIAorICAgIDIxMiwgMTk2LCAyMTIsIDE5NCwgMjEyLCAxOTMsIDIxMiwgMTkyLCAyMTIsIDE5MSwgMjEyLCAxOTAsIDIxMiwgMTg5LCAKKyAgICAyMTIsIDE4OCwgMjEyLCAxODcsIDIxMiwgMTg2LCAyMTIsIDE4NSwgMjEyLCAxODMsIDIxMiwgMTgyLCAyMTIsIDE4MSwgCisgICAgMjEyLCAxODAsIDIxMiwgMTc5LCAyMTIsIDE3OCwgMjEyLCAxNzcsIDIxMiwgMTc2LCAyMTIsIDE3NSwgMjEyLCAxNzQsIAorICAgIDIxMiwgMTcyLCAyMTIsIDE3MSwgMjEyLCAxNzAsIDIxMiwgMTY5LCAyMTIsIDE2OCwgMjEyLCAxNjcsIDIxMiwgMTY2LCAKKyAgICAyMTIsIDE2NSwgMjEyLCAxNjQsIDIxMiwgMTYzLCAyMTIsIDE2MSwgMjEyLCAxNjAsIDIxMiwgMTU5LCAyMTIsIDE1OCwgCisgICAgMjEyLCAxNTcsIDIxMiwgMTU2LCAyMTIsIDE1NSwgMjEyLCAxNTQsIDIxMiwgMTUzLCAyMTIsIDE1MiwgMjEyLCAxNTAsIAorICAgIDIxMiwgMTQ5LCAyMTIsIDE0OCwgMjEyLCAxNDcsIDIxMiwgMTQ2LCAyMTIsIDE0NSwgMjEyLCAxNDQsIDIxMiwgMTQzLCAKKyAgICAyMTIsIDE0MiwgMjEyLCAxNDEsIDIxMiwgMTM5LCAyMTIsIDEzOCwgMjEyLCAxMzcsIDIxMiwgMTM2LCAyMTIsIDEzNSwgCisgICAgMjEyLCAxMzQsIDIxMiwgMTMzLCAyMTIsIDEzMiwgMjEyLCAxMzEsIDIxMiwgMTMwLCAyMTIsIDEyOCwgMjEyLCAxMjcsIAorICAgIDIxMiwgMTI2LCAyMTIsIDEyNSwgMjEyLCAxMjQsIDIxMiwgMTIzLCAyMTIsIDEyMiwgMjEyLCAxMjEsIDIxMiwgMTIwLCAKKyAgICAyMTIsIDExOSwgMjEzLCAxMTYsIDIxMywgMTE1LCAyMTMsIDExNCwgMjEzLCAxMTMsIDIxMywgMTEyLCAyMTMsIDExMSwgCisgICAgMjEzLCAxMTAsIDIxMywgMTA5LCAyMTMsIDEwOCwgMjEzLCAxMDcsIDIxMywgMTA1LCAyMTMsIDEwNCwgMjEzLCAxMDMsIAorICAgIDIxMywgMTAyLCAyMTMsIDEwMSwgMjEzLCAxMDAsIDIxMywgOTksIDIxMywgOTgsIDIxMywgOTcsIDIxMywgOTYsIDIxMywgCisgICAgOTQsIDIxMywgOTMsIDIxMywgOTIsIDIxMywgOTEsIDIxMywgOTAsIDIxMywgODksIDIxMywgODgsIDIxMywgODcsIDIxMywgCisgICAgODYsIDIxMywgODUsIDIxMywgODMsIDIxMywgODIsIDIxMywgODEsIDIxMywgODAsIDIxMywgNzksIDIxMywgNzgsIDIxMywgCisgICAgNzcsIDIxMywgNzYsIDIxMywgNzUsIDIxMywgNzQsIDIxMywgNzIsIDIxMywgNzEsIDIxMywgNzAsIDIxMywgNjksIDIxMywgCisgICAgNjgsIDIxMywgNjcsIDIxMywgNjYsIDIxMywgNjUsIDIxMywgNjQsIDIxMywgNjMsIDIxMywgNjEsIDIxMywgNjAsIDIxMywgCisgICAgNTksIDIxMywgNTgsIDIxMywgNTcsIDIxMywgNTYsIDIxMywgNTUsIDIxMywgNTQsIDIxMywgNTMsIDIxMywgNTIsIDIxMywgCisgICAgNTAsIDIxMywgNDksIDIxMywgNDgsIDIxMywgNDcsIDIxMywgNDYsIDIxMywgNDUsIDIxMywgNDQsIDIxMywgNDMsIDIxMywgCisgICAgNDIsIDIxMywgNDEsIDIxMywgMzksIDIxMywgMzgsIDIxMywgMzcsIDIxMywgMzYsIDIxMywgMzUsIDIxMywgMzQsIDIxMywgCisgICAgMzMsIDIxMywgMzIsIDIxMywgMzEsIDIxMywgMzAsIDIxMywgMjgsIDIxMywgMjcsIDIxMywgMjYsIDIxMywgMjUsIDIxMywgCisgICAgMjQsIDIxMywgMjMsIDIxMywgMjIsIDIxMywgMjEsIDIxMywgMjAsIDIxMywgMTksIDIxMywgMTcsIDIxMywgMTYsIDIxMywgCisgICAgMTUsIDIxMywgMTQsIDIxMywgMTMsIDIxMywgMTIsIDIxMywgMTEsIDIxMywgMTAsIDIxMywgOSwgMjEzLCA4LCAyMTMsIDUsIAorICAgIDIxMywgNCwgMjEzLCAzLCAyMTMsIDIsIDIxMywgMSwgMjEzLCAwLCAyMTIsIDI1NSwgMjEyLCAyNTQsIDIxMiwgMjUzLCAKKyAgICAyMTIsIDI1MiwgMjEyLCAyNTAsIDIxMiwgMjQ5LCAyMTIsIDI0OCwgMjEyLCAyNDcsIDIxMiwgMjQ2LCAyMTIsIDI0NSwgCisgICAgMjEyLCAyNDQsIDIxMiwgMjQzLCAyMTIsIDI0MiwgMjEyLCAyNDEsIDIxMiwgMjM5LCAyMTIsIDIzOCwgMjEyLCAyMzcsIAorICAgIDIxMiwgMjM2LCAyMTIsIDIzNSwgMjEyLCAyMzQsIDIxMiwgMjMzLCAyMTIsIDIzMiwgMjEyLCAyMzEsIDIxMiwgMjMwLCAKKyAgICAyMTIsIDIyOCwgMjEyLCAyMjcsIDIxMiwgMjI2LCAyMTIsIDIyNSwgMjEyLCAyMjQsIDIxMiwgMjIzLCAyMTIsIDIyMiwgCisgICAgMjEyLCAyMjEsIDIxMiwgMjIwLCAyMTIsIDIxOSwgMjEyLCAyMTcsIDIxMiwgMjE2LCAyMTIsIDIxNSwgMjEyLCAyMTQsIAorICAgIDIxMiwgMjEzLCAyMTIsIDIxMiwgMjEyLCAyMTEsIDIxMiwgMjEwLCAyMTIsIDIwOSwgMjEyLCAyMDgsIDIxMiwgMjA2LCAKKyAgICAyMTIsIDIwNSwgMjEyLCAyMDQsIDIxMiwgMjAzLCAyMTIsIDIwMiwgMjEyLCAyMDEsIDIxMiwgMjAwLCA3LCA2LCAxLCAxMTUsIAorICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgCisgICAgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgCisgICAgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKKyAgICAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMjI5LCAKKyAgICA4MCwgMiwgMjE2LCA4OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICA2NywgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCAKKyAgICA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIAorICAgIDIyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDY3LCAKKyAgICAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAKKyAgICA1OSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIDIsIDU5LCAKKyAgICA3NywgMjIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDU5LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgCisgICAgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIAorICAgIDEsIDIzNSwgMTQ1LCAyLCAxODIsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIDEsIDIzMywgCisgICAgMTQ5LCAyLCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxODIsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE4MiwgNywgNCwgCisgICAgMSwgMjMyLCA1MCwgMiwgMTgyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgCisgICAgMjA0LCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTUsIAorICAgIDk0LCAyMTQsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMSwgMTk2LCAKKyAgICAyLCAxNDIsIDcsIDQsIDEsIDI0MSwgNTEsIDIyMSwgMTk2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQxLCA1MSwgMjIxLCAKKyAgICAxOTYsIDIsIDE0MiwgMTQ2LCAxLCAyMzQsIDEwOSwgMzYsIDExNiwgMjM1LCAyMywgMzYsIDExNiwgMjI5LCA3OSwgMzYsIAorICAgIDExNiwgMjUxLCA2NiwgMzYsIDExNiwgMjI3LCAxNjcsIDM2LCAxMTYsIDIxNSwgMTU5LCAzNiwgMTE2LCAyMjgsIDExMSwgCisgICAgMzYsIDExNiwgMjE3LCAxNTIsIDM2LCAxMTYsIDIzMCwgMjUsIDM2LCAxMTYsIDIyNiwgMTA1LCAzNiwgMTE2LCAxOTMsIDM2LCAKKyAgICAxMTYsIDIxMSwgMTE3LCAzNiwgMTE2LCAxNTMsIDM2LCAxMTYsIDE1NiwgMzYsIDExNiwgMjE0LCAxMDUsIDM2LCAxMTYsIAorICAgIDIzMiwgMTc2LCAzNiwgMTE2LCAyMzIsIDE4NSwgMzYsIDExNiwgMjIyLCAxODAsIDM2LCAxMTYsIDIyOCwgOTMsIDM2LCAKKyAgICAxMTYsIDIzNSwgMTQ0LCAzNiwgMTE2LCAyMjAsIDEwNCwgMzYsIDExNiwgMjE4LCAyMjYsIDM2LCAxMTYsIDIyMiwgOTEsIAorICAgIDM2LCAxMTYsIDI0MiwgNjAsIDM2LCAxMTYsIDIzMywgMjMyLCAzNiwgMywgMjM1LCAxMCwgMzYsIDMsIDIzNCwgOTIsIDM2LCAKKyAgICAzLCAyMzQsIDgzLCAzNiwgMywgMjMzLCAyMTcsIDM2LCAzLCAyMzMsIDE4OCwgMzYsIDMsIDIzNCwgMTgyLCAzNiwgMywgCisgICAgMjM0LCAxODEsIDM2LCAzLCAyMzQsIDI0NiwgMzYsIDMsIDIzNCwgMjgsIDM2LCAzLCAyMzQsIDEwLCAzNiwgMywgMjM0LCAKKyAgICAxOTUsIDM2LCAzLCAyMjksIDc2LCAzNiwgMywgMjI5LCAyNywgMzYsIDMsIDIyOSwgMjMsIDM2LCAzLCAyMjgsIDI0OCwgMzYsIAorICAgIDMsIDIyOCwgMjQxLCAzNiwgMywgMjI5LCA2NCwgMzYsIDMsIDIyOSwgNjIsIDM2LCAzLCAyMjksIDczLCAzNiwgMywgMjI5LCAKKyAgICA0LCAzNiwgMywgMjI4LCAyNTUsIDM2LCAzLCAyMjksIDY2LCAzNiwgMywgMjUxLCAzMiwgMzYsIDMsIDI1MCwgNTEsIDM2LCAKKyAgICAzLCAyNTAsIDQxLCAzNiwgMywgMjQ5LCAxMTIsIDM2LCAzLCAyNDksIDgzLCAzNiwgMywgMjUwLCAxOTAsIDM2LCAzLCAyNTAsIAorICAgIDE4MiwgMzYsIDMsIDI1MSwgMjIsIDM2LCAzLCAyNDksIDIzOCwgMzYsIDMsIDI0OSwgMTc0LCAzNiwgMywgMjUwLCAyMjIsIAorICAgIDM2LCAzLCAyMjcsIDE2NCwgMzYsIDMsIDIyNywgMTQ4LCAzNiwgMywgMjI3LCAxNDMsIDM2LCAzLCAyMjcsIDEyOCwgMzYsIAorICAgIDMsIDIyNywgMTIxLCAzNiwgMywgMjI3LCAxNTYsIDM2LCAzLCAyMjcsIDE1NSwgMzYsIDMsIDIyNywgMTYxLCAzNiwgMywgCisgICAgMjI3LCAxMzQsIDM2LCAzLCAyMjcsIDEzMiwgMzYsIDMsIDIyNywgMTU5LCAzNiwgMywgMjE1LCAxNTUsIDM2LCAzLCAyMTUsIAorICAgIDEzNSwgMzYsIDMsIDIxNSwgMTM0LCAzNiwgMywgMjE1LCAxMjMsIDM2LCAzLCAyMTUsIDEyMCwgMzYsIDMsIDIxNSwgMTUxLCAKKyAgICAzNiwgMywgMjE1LCAxNTAsIDM2LCAzLCAyMTUsIDE1NCwgMzYsIDMsIDIxNSwgMTMzLCAzNiwgMywgMjE1LCAxMzIsIDM2LCAKKyAgICAzLCAyMTUsIDE1MywgMzYsIDMsIDIyOCwgMTA5LCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIDIyOCwgOTQsIDM2LCAzLCAyMjgsIAorICAgIDc4LCAzNiwgMywgMjI4LCA3NywgMzYsIDMsIDIyOCwgMTA1LCAzNiwgMywgMjI4LCAxMDQsIDM2LCAzLCAyMjgsIDEwOCwgCisgICAgMzYsIDMsIDIyOCwgODAsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCAxMDcsIDM2LCAzLCAyMTcsIDEwMSwgMzYsIDMsIAorICAgIDIxNiwgMTE3LCAzNiwgMywgMjE2LCAxMDMsIDM2LCAzLCAyMTUsIDExOCwgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIAorICAgIDIyLCAzNiwgMywgMjE3LCAxMSwgMzYsIDMsIDIxNywgNzksIDM2LCAzLCAxMTEsIDM2LCAzLCAyMTYsIDE3LCAzNiwgMywgCisgICAgMjE3LCA0MSwgMzYsIDMsIDIyOSwgMjI1LCAzNiwgMywgMjI4LCAyMzMsIDM2LCAzLCAyMjgsIDIwOCwgMzYsIDMsIDIyNywgCisgICAgMjM3LCAzNiwgMywgMjI3LCAxNzksIDM2LCAzLCAyMjksIDEwNywgMzYsIDMsIDIyOSwgMTAzLCAzNiwgMywgMjI5LCAyMTIsIAorICAgIDM2LCAzLCAyMjgsIDc0LCAzNiwgMywgMjI4LCA2NCwgMzYsIDMsIDIyOSwgMTg3LCAzNiwgMywgMjI2LCA4OSwgMzYsIDMsIAorICAgIDIyNSwgMTA4LCAzNiwgMywgMjI1LCA3MSwgMzYsIDMsIDIyNCwgMTUwLCAzNiwgMywgMjI0LCAxMTksIDM2LCAzLCAyMjUsIAorICAgIDIyMSwgMzYsIDMsIDIyNSwgMjExLCAzNiwgMywgMjI2LCA3MSwgMzYsIDMsIDIyNSwgMTYsIDM2LCAzLCAyMjQsIDI0OSwgCisgICAgMzYsIDMsIDIyNSwgMjM0LCAzNiwgMywgMjMxLCAyMzcsIDM2LCAzLCAyMzAsIDIzMCwgMzYsIDMsIDIzMCwgMjAxLCAzNiwgCisgICAgMywgMjMwLCAxMDIsIDM2LCAzLCAyMzAsIDU0LCAzNiwgMywgMjMxLCA5MSwgMzYsIDMsIDIzMSwgODAsIDM2LCAzLCAyMzEsIAorICAgIDIwMywgMzYsIDMsIDIzMCwgMTYxLCAzNiwgMywgMjMwLCAxMzIsIDM2LCAzLCAyMzEsIDEzNSwgMzYsIDMsIDIxMSwgMTAzLCAKKyAgICAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgCisgICAgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIAorICAgIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NCwgMzYsIDMsIDIyMywgMzUsIDM2LCAzLCAyMjIsIDIzOSwgCisgICAgMzYsIDMsIDIyMiwgMTQwLCAzNiwgMywgMjIyLCAxMTIsIDM2LCAzLCAyMjMsIDEyOCwgMzYsIDMsIDIyMywgMTA4LCAzNiwgCisgICAgMywgMjIzLCAxNjYsIDM2LCAzLCAyMjIsIDIxMSwgMzYsIDMsIDIyMiwgMTk3LCAzNiwgMywgMjIzLCAxMzYsIDM2LCAzLCAKKyAgICAyMzMsIDEzNCwgMzYsIDMsIDIzMiwgMjQxLCAzNiwgMywgMjMyLCAyMjcsIDM2LCAzLCAyMzIsIDk4LCAzNiwgMywgMjMyLCAKKyAgICA3MywgMzYsIDMsIDIzMywgNTgsIDM2LCAzLCAyMzMsIDUwLCAzNiwgMywgMjMzLCAxMDksIDM2LCAzLCAyMzIsIDE1NiwgMzYsIAorICAgIDMsIDIzMiwgMTI3LCAzNiwgMywgMjMzLCA3NCwgMzYsIDMsIDIxNCwgMjYsIDM2LCAzLCAyMTMsIDE3NiwgMzYsIDMsIDIxMywgCisgICAgMTYyLCAzNiwgMywgMjEyLCAxMTYsIDM2LCAzLCAyMTIsIDEwOSwgMzYsIDMsIDIxMywgMjU1LCAzNiwgMywgMjEzLCAyNTAsIAorICAgIDM2LCAzLCAyMTQsIDIzLCAzNiwgMywgMjEzLCAxMzgsIDM2LCAzLCAyMTMsIDEyNywgMzYsIDMsIDIxNCwgNSwgMzYsIDMsIAorICAgIDIzMiwgMTc0LCAzNiwgMywgMjMyLCAxNjksIDM2LCAzLCAyMzIsIDE2OCwgMzYsIDMsIDIzMiwgMTY1LCAzNiwgMywgMjMyLCAKKyAgICAxNjQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE2NywgCisgICAgMzYsIDMsIDIzMiwgMTY2LCAzNiwgMywgMjMyLCAxNzIsIDM2LCAzLCAyMzIsIDE4MywgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCisgICAgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE2MSwgMzYsIDMsIDIzMiwgMTYwLCAzNiwgMywgMjMyLCAxODAsIDM2LCAzLCAKKyAgICAyMzIsIDE3OSwgMzYsIDMsIDIzMiwgMTgyLCAzNiwgMywgMjMyLCAxNjMsIDM2LCAzLCAyMzIsIDE2MiwgMzYsIDMsIDIzMiwgCisgICAgMTgxLCAzNiwgMywgMjIyLCAxNzgsIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgMjIyLCAxNjAsIAorICAgIDM2LCAzLCAyMjIsIDE1MywgMzYsIDMsIDIyMiwgMTc0LCAzNiwgMywgMjIyLCAxNzMsIDM2LCAzLCAyMjIsIDE3NywgMzYsIAorICAgIDMsIDIyMiwgMTY1LCAzNiwgMywgMjIyLCAxNjQsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIDMsIDIyOCwgOTEsIDM2LCAzLCAKKyAgICAyMjgsIDg2LCAzNiwgMywgMjI4LCA4NSwgMzYsIDMsIDIyOCwgODIsIDM2LCAzLCAyMjgsIDgxLCAzNiwgMywgMjI4LCA4OCwgCisgICAgMzYsIDMsIDIyOCwgODcsIDM2LCAzLCAyMjgsIDkwLCAzNiwgMywgMjI4LCA4NCwgMzYsIDMsIDIyOCwgODMsIDM2LCAzLCAKKyAgICAyMjgsIDg5LCAzNiwgMywgMjM1LCAxNDAsIDM2LCAzLCAyMzUsIDEwOCwgMzYsIDMsIDIzNSwgMTAxLCAzNiwgMywgMjM1LCAKKyAgICA1MSwgMzYsIDMsIDIzNSwgMzMsIDM2LCAzLCAyMzUsIDEyNiwgMzYsIDMsIDIzNSwgMTI0LCAzNiwgMywgMjM1LCAxMzUsIAorICAgIDM2LCAzLCAyMzUsIDY4LCAzNiwgMywgMjM1LCA1OSwgMzYsIDMsIDIzNSwgMTI5LCAzNiwgMywgMjIwLCA5OCwgMzYsIDMsIAorICAgIDIyMCwgMzIsIDM2LCAzLCAyMjAsIDI3LCAzNiwgMywgMjE5LCAyMjUsIDM2LCAzLCAyMTksIDIxMCwgMzYsIDMsIDIyMCwgCisgICAgNjMsIDM2LCAzLCAyMjAsIDYxLCAzNiwgMywgMjIwLCA5MCwgMzYsIDMsIDIyMCwgNywgMzYsIDMsIDIyMCwgMSwgMzYsIDMsIAorICAgIDIyMCwgNzEsIDM2LCAzLCAyMTgsIDIyMiwgMzYsIDMsIDIxOCwgMTkyLCAzNiwgMywgMjE4LCAxODgsIDM2LCAzLCAyMTgsIAorICAgIDE3OSwgMzYsIDMsIDIxOCwgMTc2LCAzNiwgMywgMjE4LCAxOTcsIDM2LCAzLCAyMTgsIDE5NiwgMzYsIDMsIDIxOCwgMjIxLCAKKyAgICAzNiwgMywgMjE4LCAxODQsIDM2LCAzLCAyMTgsIDE4MywgMzYsIDMsIDIxOCwgMTk5LCAzNiwgMywgMjIyLCAzMSwgMzYsIDMsIAorICAgIDIxOSwgMTkxLCAzNiwgMywgMjE5LCAxNzUsIDM2LCAzLCAyMTgsIDgzLCAzNiwgMywgMjE4LCA0LCAzNiwgMywgMjIxLCAKKyAgICAxODEsIDM2LCAzLCAyMjEsIDE3MCwgMzYsIDMsIDIyMiwgMTcsIDM2LCAzLCAyMTksIDU4LCAzNiwgMywgMjE5LCA0MCwgMzYsIAorICAgIDMsIDIyMSwgMjE5LCAzNiwgMywgMjQyLCA0NiwgMzYsIDMsIDI0MSwgMTgwLCAzNiwgMywgMjQxLCAxNjEsIDM2LCAzLCAKKyAgICAyNDAsIDIyMiwgMzYsIDMsIDI0MCwgMjAyLCAzNiwgMywgMjQxLCAyMzgsIDM2LCAzLCAyNDEsIDIyMCwgMzYsIDMsIDI0MiwgCisgICAgMzYsIDM2LCAzLCAyNDEsIDY4LCAzNiwgMywgMjQxLCA1MywgMzYsIDMsIDI0MSwgMjQ2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAKKyAgICAzLCAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI1LCAzNiwgMywgMjMzLCAyMjQsIDM2LCAzLCAyMzMsIDIyMSwgMzYsIDMsIAorICAgIDIzMywgMjIwLCAzNiwgMywgMjMzLCAyMjcsIDM2LCAzLCAyMzMsIDIyNiwgMzYsIDMsIDIzMywgMjI5LCAzNiwgMywgMjMzLCAKKyAgICAyMjMsIDM2LCAzLCAyMzMsIDIyMiwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjE5LCAyMzEsIDE3NSwgMTE2LCA1LCAyMTEsIAorICAgIDY4LCAxNzUsIDExNiwgNSwgMjIzLCAxNTUsIDE3NSwgMTE2LCA1LCAyMjMsIDc4LCA5OCwgMSwgMjE1LCAyOCwgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDE3NiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTMyLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgCisgICAgMjM0LCAyOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTA1LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI5LCA0LCAKKyAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUxLCAzMywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MCwgMTU3LCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMjQ5LCAyMzgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTAsIDg2LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjI3LCAxMzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNDgsIDIyMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNSwgCisgICAgMTQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjQ3LCAxNDUsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTUsIDEzOSwgNjksIAorICAgIDExNiwgNSwgMjQ5LCAyMzMsIDE5NywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNywgMTA1LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjE2LCAyMDgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxMTEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTYsIDE1NiwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyOCwgNzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTIsIDE5MSwgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDIyNSwgMTQ3LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI1LCAxNiwgNjksIDExNiwgNSwgMjQ5LCAKKyAgICAyMzMsIDIyNSwgMTIxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMwLCAxNjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTAsIAorICAgIDI0NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMiwgMjExLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMyLCAxNTYsIDY5LCAKKyAgICAxMTYsIDUsIDI0OSwgMjMzLCAyMTMsIDEzOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMCwgMTAyLCA2OSwgMTE2LCA1LCAKKyAgICAyNDksIDIzMywgMjE4LCAyMjMsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMDYsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxNjIsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzMsIDEzNSwgNjksIDI1LCA1LCAyNDksIDIzMywgMjI0LCA4OCwgNjksIDIzNSwgCisgICAgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAyMjIsIDEwMCwgCisgICAgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAKKyAgICAyMjQsIDY5LCA2OSwgMjUsIDUsIDIyNiwgMjA0LCA2OSwgMjUsIDUsIDI1NSwgMzQsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgCisgICAgNzcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgMjcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCAxNDEsIDEsIDI1MSwgCisgICAgMjU1LCAyMjksIDY0LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjksIDQsIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA3NywgNTYsIDEsIAorICAgIDI1MSwgMjU1LCAyMjksIDI3LCA1NiwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCA1NiwgMSwgMjUxLCAyNTUsIDIyOSwgNjQsIAorICAgIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA0LCA1NiwgMSwgMjU0LCAxOTQsIDI1MCwgMTkwLCA1NiwgMSwgMjU0LCAxOTQsIDIxNSwgCisgICAgMTE4LCA1NiwgMSwgMjU0LCAxOTQsIDExMSwgNTYsIDEsIDI1NCwgMTk0LCAyMjYsIDEwNSwgNTgsIDEsIDI0NSwgMjAsIAorICAgIDI0NSwgMTksIDI0OSwgMTgyLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NSwgMjAsIDI0OSwgMTgyLCAxMzgsIDEzMCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTEzMTI3LDQ4NyArMTM4MjQsNDg4IEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCiAgICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgCiAgICAgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgMTcsIDg3LCA4OCwgODksIDkwLCA5MSwgCi0gICAgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIAotICAgIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAKLSAgICAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTI4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjksIDEzMCwgCi0gICAgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAotICAgIDE0NSwgMTQ2LCAxNywgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE1MiwgMTcsIAotICAgIDE1MywgMTcsIDE1NCwgMTcsIDE1NSwgMTcsIDE1NiwgMTcsIDE3LCAxNywgMTU3LCAxNywgMTcsIDE3LCAxNTgsIDE1OSwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIAotICAgIDE2NSwgMTY2LCAxNywgMTY3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIAotICAgIDE3NCwgMTc1LCAxNzYsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNzcsIAotICAgIDE3OCwgMTc5LCAxODAsIDE4MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE4MiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE3LCAxODgsIAotICAgIDE3LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDE3LCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgCi0gICAgMjA3LCAyMDgsIDIwOSwgMjEwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyMTEsIDIxMiwgMjEzLCAKLSAgICAyMTQsIDIxNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjE2LCAxNywgMjE3LCAyMTgsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgCisgICAgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAKKyAgICAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgCisgICAgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDEyOSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTMwLCAxMzEsIAorICAgIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAKKyAgICAxNDYsIDE0NywgODcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNTMsIDg3LCAKKyAgICAxNTQsIDE1NSwgMTU2LCA4NywgMTU3LCA4NywgMTU4LCA4NywgODcsIDg3LCAxNTksIDg3LCA4NywgODcsIDE2MCwgMTYxLCAKKyAgICAxNjIsIDE2MywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTY0LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAorICAgIDE2OSwgMTcwLCAxNzEsIDg3LCAxNzIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCisgICAgMTc5LCAxODAsIDE4MSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4MiwgCisgICAgMTgzLCAxODQsIDE4NSwgMTg2LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxODcsIDE4OCwgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICAxODksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCA4NywgMTk1LCAKKyAgICA4NywgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgMjA0LCAyMDUsIDg3LCA4NywgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDg3LCAyMTEsIDIxMiwgMjEzLCAyMTQsIAorICAgIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjAsIDIyMSwgCisgICAgMjIyLCAyMjMsIDIyNCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMjI1LCA4NywgMjI2LCAyMjcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGhyYXNlYm9va19vZmZzZXQyW10gPSB7CkBAIC0xMzYxNSwyODAzICsxNDMxMywzMDE1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMywgNiwgOSwgMTEsIDE0LCAxNywgMTksIDIxLCAyNCwgMjcsIDI5LCAzMSwgCiAgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OCwgNjAsIDYyLCA2NCwgNjYsIDY5LCA3MiwgCiAgICAgNzUsIDc4LCA4MiwgODYsIDkxLCA5NiwgMTAxLCAxMDUsIDExMCwgMTE1LCAxMjAsIDEyNCwgMTI5LCAxMzQsIDEzOCwgMTQyLCAKLSAgICAxNDYsIDE1MCwgMTU1LCAxNjAsIDE2NCwgMTY4LCAxNzMsIDE3NywgMTgyLCAxODcsIDE5MiwgMTk3LCAyMDIsIDIwNSwgCi0gICAgMjA5LCAyMTIsIDIxNiwgMjE5LCAyMjMsIDIyNywgMjMyLCAyMzcsIDI0MiwgMjQ2LCAyNTEsIDI1NiwgMjYxLCAyNjUsIAotICAgIDI3MCwgMjc1LCAyNzksIDI4MywgMjg3LCAyOTEsIDI5NiwgMzAxLCAzMDUsIDMwOSwgMzE0LCAzMTgsIDMyMywgMzI4LCAKLSAgICAzMzMsIDMzOCwgMzQzLCAzNDcsIDM1MCwgMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM2MCwgMzY1LCAKLSAgICAzNjgsIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODUsIDM4OCwgMzk0LCA0MDIsIDQwNSwgNDA5LCA0MTIsIDQxNCwgCi0gICAgNDE3LCA0MjAsIDQyMywgNDI2LCA0MzAsIDQzMywgNDM2LCA0NDAsIDQ0MiwgNDQ1LCA0NTEsIDQ1OSwgNDY2LCA0NzMsIAotICAgIDQ4MCwgNDg1LCA0OTIsIDQ5OCwgNTA1LCA1MTIsIDUxOSwgNTI3LCA1MzIsIDU0MCwgNTQ3LCA1NTMsIDU2MCwgNTY3LCAKLSAgICA1NzUsIDU4MiwgNTkwLCA1OTgsIDYwMywgNjExLCA2MTgsIDYyNCwgNjMxLCA2MzgsIDY0NSwgNjQ4LCA2NTQsIDY2MSwgCi0gICAgNjY3LCA2NzQsIDY4MSwgNjg4LCA2OTMsIDY5OSwgNzA2LCA3MTIsIDcxOSwgNzI2LCA3MzMsIDc0MSwgNzQ2LCA3NTQsIAotICAgIDc2MSwgNzY3LCA3NzQsIDc4MSwgNzg5LCA3OTYsIDgwNCwgODEyLCA4MTcsIDgyNSwgODMyLCA4MzgsIDg0NSwgODUyLCAKLSAgICA4NTksIDg2MiwgODY4LCA4NzUsIDg4MSwgODg4LCA4OTUsIDkwMiwgOTA3LCA5MTUsIDkyMiwgOTI5LCA5MzYsIDk0MywgCi0gICAgOTUwLCA5NTcsIDk2NCwgOTcxLCA5NzksIDk4NywgOTk1LCAxMDAzLCAxMDExLCAxMDE5LCAxMDI3LCAxMDM1LCAxMDQyLCAKLSAgICAxMDQ5LCAxMDU2LCAxMDYzLCAxMDcwLCAxMDc3LCAxMDg0LCAxMDkxLCAxMDk4LCAxMTA1LCAxMTEyLCAxMTE5LCAxMTI3LCAKLSAgICAxMTM1LCAxMTQzLCAxMTUxLCAxMTU5LCAxMTY3LCAxMTc1LCAxMTgzLCAxMTkxLCAxMTk5LCAxMjA2LCAxMjEzLCAxMjIxLCAKLSAgICAxMjI5LCAxMjM3LCAxMjQ1LCAxMjUzLCAxMjYxLCAxMjY5LCAxMjc3LCAxMjg1LCAxMjkxLCAxMjk2LCAxMzAxLCAxMzA5LCAKLSAgICAxMzE3LCAxMzI1LCAxMzMzLCAxMzM4LCAxMzQ1LCAxMzUyLCAxMzYwLCAxMzY4LCAxMzc2LCAxMzg0LCAxMzk0LCAxNDA0LCAKLSAgICAxNDExLCAxNDE4LCAxNDI1LCAxNDMyLCAxNDQwLCAxNDQ4LCAxNDU2LCAxNDY0LCAxNDc1LCAxNDgwLCAxNDg1LCAxNDkyLCAKLSAgICAxNDk5LCAxNTA2LCAxNTEzLCAxNTIwLCAxNTI3LCAxNTMyLCAxNTM3LCAxNTQ0LCAxNTUxLCAxNTU5LCAxNTY3LCAxNTc1LCAKLSAgICAxNTgzLCAxNTkwLCAxNTk3LCAxNjA1LCAxNjEzLCAxNjIxLCAxNjI5LCAxNjM3LCAxNjQ1LCAxNjUzLCAxNjYxLCAxNjY5LCAKLSAgICAxNjc3LCAxNjg0LCAxNjkxLCAxNjk4LCAxNzA1LCAxNzEyLCAxNzE5LCAxNzI2LCAxNzMzLCAxNzQxLCAxNzQ5LCAxNzU2LCAKLSAgICAxNzYzLCAxNzcwLCAxNzc3LCAxNzg1LCAxNzkzLCAxODAxLCAxODA5LCAxODE3LCAxODI0LCAxODMxLCAxODM5LCAxODQ3LCAKLSAgICAxODU1LCAxODYzLCAxODY4LCAxODc0LCAxODgwLCAxODg3LCAxODk0LCAxODk5LCAxOTA0LCAxOTEwLCAxOTE3LCAxOTI0LCAKLSAgICAxOTMxLCAxOTM4LCAxOTQ2LCAxOTU0LCAxOTYxLCAxOTY3LCAxOTcyLCAxOTc4LCAxOTg1LCAxOTkyLCAxOTk5LCAyMDA0LCAKLSAgICAyMDA5LCAyMDE0LCAyMDIxLCAyMDI4LCAyMDM1LCAyMDQyLCAyMDQ5LCAyMDU1LCAyMDYzLCAyMDczLCAyMDgyLCAyMDg5LCAKLSAgICAyMDk2LCAyMTAxLCAyMTA2LCAyMTEzLCAyMTIwLCAyMTI0LCAyMTI5LCAyMTM0LCAyMTM5LCAyMTQ3LCAyMTU2LCAyMTYzLCAKLSAgICAyMTcwLCAyMTc5LCAyMTg2LCAyMTkzLCAyMTk4LCAyMjA1LCAyMjEyLCAyMjE5LCAyMjI2LCAyMjMzLCAyMjM4LCAyMjQ1LCAKLSAgICAyMjUyLCAyMjYwLCAyMjY1LCAyMjcwLCAyMjc1LCAyMjg1LCAyMjg5LCAyMjk1LCAyMzAxLCAyMzA3LCAyMzEzLCAyMzIxLCAKLSAgICAyMzM0LCAyMzQyLCAyMzQ3LCAyMzU3LCAyMzYyLCAyMzY3LCAyMzc3LCAyMzgyLCAyMzg5LCAyMzk2LCAyNDA0LCAyNDEyLCAKLSAgICAyNDE5LCAyNDI2LCAyNDMzLCAyNDQwLCAyNDUwLCAyNDYwLCAyNDY5LCAyNDc4LCAyNDg4LCAyNDk4LCAyNTA4LCAyNTE4LCAKLSAgICAyNTI0LCAyNTM0LCAyNTQ0LCAyNTU0LCAyNTY0LCAyNTcyLCAyNTgwLCAyNTg3LCAyNTk0LCAyNjAyLCAyNjEwLCAyNjE4LCAKLSAgICAyNjI2LCAyNjMzLCAyNjQwLCAyNjUwLCAyNjYwLCAyNjY4LCAyNjc2LCAyNjg0LCAyNjg5LCAyNjk5LCAyNzA0LCAyNzExLCAKLSAgICAyNzE4LCAyNzIzLCAyNzI4LCAyNzM2LCAyNzQ0LCAyNzU0LCAyNzY0LCAyNzcxLCAyNzc4LCAyNzg3LCAyNzk2LCAyODA0LCAKLSAgICAyODEyLCAyODIxLCAyODMwLCAyODM4LCAyODQ2LCAyODU1LCAyODY0LCAyODczLCAyODgyLCAyODkyLCAyOTAyLCAyOTEwLCAKLSAgICAyOTE4LCAyOTI3LCAyOTM2LCAyOTQ1LCAyOTU0LCAyOTY0LCAyOTc0LCAyOTgyLCAyOTkwLCAyOTk5LCAzMDA4LCAzMDE3LCAKLSAgICAzMDI2LCAzMDM1LCAzMDQ0LCAzMDQ5LCAzMDU0LCAzMDYyLCAzMDcwLCAzMDgwLCAzMDg4LCAzMDkzLCAzMDk4LCAzMTA1LCAKLSAgICAzMTEyLCAzMTE5LCAzMTI2LCAzMTMzLCAzMTQwLCAzMTUwLCAzMTYwLCAzMTcwLCAzMTgwLCAzMTg3LCAzMTk0LCAzMjA0LCAKLSAgICAzMjE0LCAzMjIyLCAzMjMwLCAzMjM4LCAzMjQ2LCAzMjU0LCAzMjYxLCAzMjY4LCAzMjc1LCAzMjgxLCAzMjg4LCAzMjk1LCAKLSAgICAzMzAyLCAzMzExLCAzMzIxLCAzMzMxLCAzMzM4LCAzMzQ1LCAzMzUxLCAzMzU2LCAzMzYzLCAzMzY5LCAzMzc1LCAzMzgyLCAKLSAgICAzMzg5LCAzNDAwLCAzNDEwLCAzNDE3LCAzNDI0LCAzNDMxLCAzNDM4LCAzNDQ0LCAzNDQ5LCAzNDU2LCAzNDYyLCAzNDY4LCAKLSAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE1LCAzNTIzLCAzNTMzLCAzNTQzLCAzNTUyLCAzNTU5LCAKLSAgICAzNTY1LCAzNTcxLCAzNTc2LCAzNTgzLCAzNTkwLCAzNTk3LCAzNjA0LCAzNjExLCAzNjE2LCAzNjIxLCAzNjMxLCAzNjM5LCAKLSAgICAzNjQ4LCAzNjUzLCAzNjU5LCAzNjcwLCAzNjc3LCAzNjg1LCAzNjk0LCAzNjk5LCAzNzA1LCAzNzExLCAzNzE4LCAzNzIzLCAKLSAgICAzNzI5LCAzNzQwLCAzNzQ5LCAzNzU4LCAzNzY2LCAzNzc0LCAzNzg0LCAzNzg5LCAzNzk2LCAzODAzLCAzODA4LCAzODIwLCAKLSAgICAzODI5LCAzODM3LCAzODQ0LCAzODUzLCAzODU4LCAzODYzLCAzODcwLCAzODc3LCAzODg0LCAzODkxLCAzODk3LCAzOTA2LCAKLSAgICAzOTE0LCAzOTE5LCAzOTI3LCAzOTMzLCAzOTQxLCAzOTQ5LCAzOTU1LCAzOTYxLCAzOTY3LCAzOTc1LCAzOTgzLCAzOTg5LCAKLSAgICAzOTk3LCA0MDA0LCA0MDA5LCA0MDE2LCA0MDI0LCA0MDM0LCA0MDQxLCA0MDQ4LCA0MDU4LCA0MDY1LCA0MDcyLCA0MDgyLCAKLSAgICA0MDg5LCA0MDk2LCA0MTAzLCA0MTA5LCA0MTE1LCA0MTI1LCA0MTM4LCA0MTQzLCA0MTUwLCA0MTU1LCA0MTU5LCA0MTY1LCAKLSAgICA0MTc0LCA0MTgxLCA0MTg2LCA0MTkxLCA0MTk1LCA0MjAwLCA0MjA2LCA0MjEwLCA0MjE2LCA0MjIyLCA0MjI4LCA0MjM0LCAKLSAgICA0MjQyLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY4LCA0MjcwLCA0Mjc1LCA0Mjc5LCA0Mjg1LCA0MjkxLCA0Mjk3LCAKLSAgICA0MzAyLCA0MzA5LCA0MzE2LCA0MzIyLCA0MzI5LCA0MzM3LCA0MzQ1LCA0MzUwLCA0MzU1LCA0MzU5LCA0MzY0LCA0MzY2LCAKLSAgICA0MzY4LCA0MzcxLCA0MzczLCA0Mzc2LCA0MzgxLCA0Mzg2LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA1LCA0NDEwLCA0NDE5LCAKLSAgICA0NDI1LCA0NDMwLCA0NDM2LCA0NDQxLCA0NDQ3LCA0NDU1LCA0NDYzLCA0NDY3LCA0NDcxLCA0NDc2LCA0NDgyLCA0NDg4LCAKLSAgICA0NDk0LCA0NTAwLCA0NTA1LCA0NTEzLCA0NTIyLCA0NTMxLCA0NTM2LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCA0NTcwLCAKLSAgICA0NTc0LCA0NTgwLCA0NTg1LCA0NTkwLCA0NTk1LCA0NjAwLCA0NjAzLCA0NjA2LCA0NjA5LCA0NjEyLCA0NjE1LCA0NjE4LCAKLSAgICA0NjIyLCA0NjI2LCA0NjMyLCA0NjM1LCA0NjQwLCA0NjQ2LCA0NjUyLCA0NjU1LCA0NjYwLCA0NjY2LCA0NjcwLCA0Njc2LCAKLSAgICA0NjgyLCA0Njg4LCA0Njk0LCA0Njk5LCA0NzA0LCA0NzA5LCA0NzEyLCA0NzE4LCA0NzIzLCA0NzI4LCA0NzMyLCA0NzM3LCAKLSAgICA0NzQzLCA0NzQ5LCA0NzUyLCA0NzU2LCA0NzYwLCA0NzY0LCA0NzY3LCA0NzcwLCA0Nzc1LCA0Nzc5LCA0Nzg2LCA0NzkwLCAKLSAgICA0Nzk2LCA0ODAwLCA0ODA2LCA0ODEwLCA0ODE0LCA0ODE4LCA0ODIzLCA0ODI4LCA0ODM1LCA0ODQxLCA0ODQ4LCA0ODU0LCAKLSAgICA0ODYwLCA0ODY2LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgxLCA0ODg1LCA0ODkwLCA0ODk1LCA0ODk5LCA0OTAzLCA0OTA5LCAKLSAgICA0OTEzLCA0OTE3LCA0OTIyLCA0OTI4LCA0OTMzLCA0OTM5LCA0OTQzLCA0OTUwLCA0OTU1LCA0OTYwLCA0OTY1LCA0OTcwLCAKLSAgICA0OTc2LCA0OTc5LCA0OTgzLCA0OTg4LCA0OTkzLCA1MDAyLCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCA1MDI2LCA1MDMxLCAKLSAgICA1MDM1LCA1MDM5LCA1MDQ0LCA1MDQ4LCA1MDU0LCA1MDU5LCA1MDY0LCA1MDY5LCA1MDc0LCA1MDc5LCA1MDg0LCA1MDkwLCAKLSAgICA1MDk2LCA1MTAyLCA1MTA3LCA1MTEyLCA1MTE4LCA1MTI0LCA1MTMwLCA1MTM1LCA1MTQwLCA1MTQ3LCA1MTU0LCA1MTU4LCAKLSAgICA1MTY0LCA1MTcxLCAwLCAwLCA1MTc4LCA1MTgxLCA1MTkwLCA1MTk5LCA1MjEwLCAwLCAwLCAwLCAwLCAwLCA1MjE0LCAKLSAgICA1MjE3LCA1MjIyLCA1MjMwLCA1MjM1LCA1MjQzLCA1MjUxLCAwLCA1MjU5LCAwLCA1MjY3LCA1Mjc1LCA1MjgzLCA1Mjk0LCAKLSAgICA1Mjk5LCA1MzA0LCA1MzA5LCA1MzE0LCA1MzE5LCA1MzI0LCA1MzI5LCA1MzM0LCA1MzM5LCA1MzQ0LCA1MzQ5LCA1MzU0LCAKLSAgICA1MzU5LCA1MzY0LCA1MzY5LCA1Mzc0LCAwLCA1Mzc5LCA1Mzg0LCA1Mzg5LCA1Mzk0LCA1Mzk5LCA1NDA0LCA1NDA5LCAKLSAgICA1NDE0LCA1NDIyLCA1NDMwLCA1NDM4LCA1NDQ2LCA1NDU0LCA1NDYyLCA1NDczLCA1NDc4LCA1NDgzLCA1NDg4LCA1NDkzLCAKLSAgICA1NDk4LCA1NTAzLCA1NTA4LCA1NTEzLCA1NTE4LCA1NTIzLCA1NTI4LCA1NTMzLCA1NTM4LCA1NTQzLCA1NTQ4LCA1NTUzLCAKLSAgICA1NTU4LCA1NTY0LCA1NTY5LCA1NTc0LCA1NTc5LCA1NTg0LCA1NTg5LCA1NTk0LCA1NTk5LCA1NjA3LCA1NjE1LCA1NjIzLCAKLSAgICA1NjMxLCA1NjM5LCA1NjQ0LCA1NjQ4LCA1NjUyLCA1NjU5LCA1NjY5LCA1Njc5LCA1NjgzLCA1Njg3LCA1NjkxLCA1Njk3LCAKLSAgICA1NzA0LCA1NzA4LCA1NzEzLCA1NzE3LCA1NzIyLCA1NzI2LCA1NzMxLCA1NzM1LCA1NzQwLCA1NzQ1LCA1NzUwLCA1NzU1LCAKLSAgICA1NzYwLCA1NzY1LCA1NzcwLCA1Nzc1LCA1NzgwLCA1Nzg1LCA1NzkwLCA1Nzk1LCA1ODAwLCA1ODA1LCA1ODEwLCA1ODE0LCAKLSAgICA1ODE4LCA1ODI0LCA1ODI4LCA1ODMzLCA1ODM5LCA1ODQ3LCA1ODUyLCA1ODU3LCA1ODY0LCA1ODY5LCA1ODc0LCA1ODgxLCAKLSAgICA1ODkwLCA1ODk5LCA1OTEwLCA1OTE4LCA1OTIzLCA1OTI4LCA1OTMzLCA1OTQwLCA1OTQ1LCA1OTUxLCA1OTU2LCA1OTYxLCAKLSAgICA1OTY2LCA1OTcxLCA1OTc2LCA1OTgxLCA1OTg5LCA1OTk1LCA2MDAwLCA2MDA0LCA2MDA5LCA2MDE0LCA2MDE5LCA2MDI0LCAKLSAgICA2MDI5LCA2MDM0LCA2MDM5LCA2MDQzLCA2MDQ5LCA2MDUzLCA2MDU4LCA2MDYzLCA2MDY4LCA2MDcyLCA2MDc3LCA2MDgyLCAKLSAgICA2MDg3LCA2MDkyLCA2MDk2LCA2MTAxLCA2MTA1LCA2MTEwLCA2MTE1LCA2MTIwLCA2MTI1LCA2MTMxLCA2MTM2LCA2MTQyLCAKLSAgICA2MTQ2LCA2MTUxLCA2MTU1LCA2MTU5LCA2MTY0LCA2MTY5LCA2MTc0LCA2MTc5LCA2MTg0LCA2MTg5LCA2MTk0LCA2MTk4LCAKLSAgICA2MjA0LCA2MjA4LCA2MjEzLCA2MjE4LCA2MjIzLCA2MjI3LCA2MjMyLCA2MjM3LCA2MjQyLCA2MjQ3LCA2MjUxLCA2MjU2LCAKLSAgICA2MjYwLCA2MjY1LCA2MjcwLCA2Mjc1LCA2MjgwLCA2Mjg2LCA2MjkxLCA2Mjk3LCA2MzAxLCA2MzA2LCA2MzEwLCA2MzE4LCAKLSAgICA2MzIzLCA2MzI4LCA2MzMzLCA2MzQwLCA2MzQ1LCA2MzUxLCA2MzU2LCA2MzYxLCA2MzY2LCA2MzcxLCA2Mzc2LCA2MzgxLCAKLSAgICA2Mzg5LCA2Mzk1LCA2NDAwLCA2NDA1LCA2NDEwLCA2NDE1LCA2NDIwLCA2NDI2LCA2NDMyLCA2NDM5LCA2NDQ2LCA2NDU1LCAKLSAgICA2NDY0LCA2NDcxLCA2NDc4LCA2NDg3LCA2NDk2LCA2NTAxLCA2NTA2LCA2NTExLCA2NTE2LCA2NTIxLCA2NTI2LCA2NTMxLCAKLSAgICA2NTM2LCA2NTQ3LCA2NTU4LCA2NTYzLCA2NTY4LCA2NTc1LCA2NTgyLCA2NTkwLCA2NTk4LCA2NjAzLCA2NjA4LCA2NjEzLCAKLSAgICA2NjE4LCA2NjIyLCA2NjI2LCA2NjMwLCA2NjM1LCA2NjQxLCA2NjQ1LCA2NjUyLCA2NjU3LCA2NjY3LCA2Njc3LCA2NjgzLCAKLSAgICA2Njg5LCA2Njk3LCA2NzA1LCA2NzEzLCA2NzIxLCA2NzI4LCA2NzM1LCA2NzQ0LCA2NzUzLCA2NzYxLCA2NzY5LCA2Nzc3LCAKLSAgICA2Nzg1LCA2NzkzLCA2ODAxLCA2ODA5LCA2ODE3LCA2ODI0LCA2ODMxLCA2ODM3LCA2ODQzLCA2ODUxLCA2ODU5LCA2ODY2LCAKLSAgICA2ODczLCA2ODgyLCA2ODkxLCA2ODk3LCA2OTAzLCA2OTExLCA2OTE5LCA2OTI3LCA2OTM1LCA2OTQxLCA2OTQ3LCA2OTU1LCAKLSAgICA2OTYzLCA2OTcxLCA2OTc5LCA2OTg2LCA2OTkzLCA3MDAxLCA3MDA5LCA3MDE3LCA3MDI1LCA3MDMwLCA3MDM1LCA3MDQyLCAKLSAgICA3MDQ5LCA3MDU5LCA3MDY5LCA3MDczLCA3MDgxLCA3MDg5LCA3MDk2LCA3MTAzLCA3MTExLCA3MTE5LCA3MTI2LCA3MTMzLCAKLSAgICA3MTQxLCA3MTQ5LCA3MTU2LCA3MTYzLCA3MTcxLCA3MTc5LCA3MTg0LCA3MTkxLCA3MTk4LCA3MjA1LCA3MjEyLCA3MjE4LCAKLSAgICA3MjI0LCA3MjMyLCA3MjQwLCA3MjQ1LCA3MjUwLCA3MjU4LCA3MjY2LCA3Mjc0LCA3MjgyLCA3MjkwLCA3Mjk4LCA3MzA1LCAKLSAgICA3MzEyLCA3MzIwLCA3MzI4LCA3MzM2LCA3MzQ0LCA3MzUxLCA3MzU4LCA3MzY0LCA3MzcwLCA3Mzc5LCA3Mzg4LCA3Mzk1LCAKLSAgICA3NDAyLCA3NDA5LCA3NDE2LCA3NDIzLCA3NDMwLCA3NDM3LCA3NDQ0LCA3NDUyLCA3NDYwLCA3NDY4LCA3NDc2LCA3NDg0LCAKLSAgICA3NDkyLCA3NTAyLCA3NTEyLCA3NTE5LCA3NTI2LCA3NTMzLCA3NTQwLCA3NTQ3LCA3NTU0LCA3NTYxLCA3NTY4LCA3NTc1LCAKLSAgICA3NTgyLCA3NTg5LCA3NTk2LCA3NjAzLCA3NjEwLCA3NjE3LCA3NjI0LCA3NjMxLCA3NjM4LCA3NjQ1LCA3NjUyLCA3NjU5LCAKLSAgICA3NjY2LCA3NjczLCA3NjgwLCA3Njg1LCA3NjkwLCA3Njk1LCA3NzAwLCA3NzA1LCA3NzEwLCA3NzE1LCA3NzIwLCA3NzI1LCAKLSAgICA3NzMwLCA3NzM2LCA3NzQyLCA3NzUxLCA3NzYwLCA3NzY5LCA3Nzc4LCA3Nzg2LCA3Nzk0LCA3ODAyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3ODEwLCA3ODE1LCA3ODIwLCA3ODI1LCA3ODMwLCA3ODM1LCA3ODQwLCA3ODQ1LCA3ODUwLCAKLSAgICA3ODU0LCA3ODU5LCA3ODY0LCA3ODY5LCA3ODc0LCA3ODc5LCA3ODg0LCA3ODg5LCA3ODk0LCA3ODk5LCA3OTA0LCA3OTA5LCAKLSAgICA3OTE0LCA3OTE5LCA3OTI0LCA3OTI5LCA3OTM0LCA3OTM5LCA3OTQ0LCA3OTQ4LCA3OTUzLCA3OTU4LCA3OTYzLCA3OTY4LCAKLSAgICA3OTczLCA3OTc4LCA3OTgzLCA3OTg4LCA3OTkzLCAwLCAwLCA3OTk4LCA4MDA1LCA4MDA4LCA4MDEyLCA4MDE2LCA4MDE5LCAKLSAgICA4MDIzLCAwLCA4MDI3LCA4MDMyLCA4MDM3LCA4MDQyLCA4MDQ3LCA4MDUyLCA4MDU3LCA4MDYyLCA4MDY3LCA4MDcxLCAKLSAgICA4MDc2LCA4MDgxLCA4MDg2LCA4MDkxLCA4MDk2LCA4MTAxLCA4MTA2LCA4MTExLCA4MTE2LCA4MTIxLCA4MTI2LCA4MTMxLCAKLSAgICA4MTM2LCA4MTQxLCA4MTQ2LCA4MTUxLCA4MTU2LCA4MTYxLCA4MTY1LCA4MTcwLCA4MTc1LCA4MTgwLCA4MTg1LCA4MTkwLCAKLSAgICA4MTk1LCA4MjAwLCA4MjA1LCA4MjEwLCA4MjE1LCAwLCA4MjIyLCA4MjI3LCAwLCAwLCAwLCAwLCAwLCAwLCA4MjMwLCAKLSAgICA4MjM1LCA4MjQwLCA4MjQ1LCA4MjUyLCA4MjU5LCA4MjY0LCA4MjY5LCA4Mjc0LCA4Mjc5LCA4Mjg0LCA4Mjg5LCA4Mjk0LCAKLSAgICA4MzAxLCA4MzA2LCA4MzEzLCA4MzIwLCA4MzI1LCA4MzMyLCA4MzM3LCA4MzQyLCA4MzQ3LCA4MzU0LCA4MzU5LCA4MzY0LCAKLSAgICA4MzcxLCA4MzgwLCA4Mzg1LCA4MzkwLCA4Mzk1LCA4NDAwLCA4NDA2LCA4NDExLCA4NDE4LCA4NDI1LCA4NDMyLCA4NDM3LCAKLSAgICA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDcyLCA4NDc3LCA4NDg1LCA4NDkwLCA4NDk1LCA4NTAwLCA4NTA1LCAKLSAgICA4NTEyLCA4NTE5LCA4NTI2LCA4NTMyLCA4NTM4LCA4NTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTUyLCA4NTU2LCAKLSAgICA4NTYwLCA4NTY0LCA4NTY4LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCA4NTg4LCA4NTkyLCA4NTk3LCA4NjAxLCA4NjA1LCAKLSAgICA4NjEwLCA4NjE0LCA4NjE5LCA4NjIzLCA4NjI3LCA4NjMxLCA4NjM2LCA4NjQwLCA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU3LCAKLSAgICA4NjYxLCAwLCAwLCAwLCAwLCAwLCA4NjY1LCA4NjcyLCA4NjgwLCA4Njg3LCA4NjkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4Njk3LCA4NzAwLCA4NzA0LCA4NzA5LCAwLCAwLCA4NzEzLCA4NzE5LCA4NzI1LCA4NzI4LCA4NzM1LCAKLSAgICA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzU1LCA4NzYxLCA4NzY1LCA4NzczLCA4Nzc5LCA4Nzg1LCA4NzkzLCA4Nzk3LCA4ODAyLCAKLSAgICA4ODEzLCA4ODE4LCA4ODIyLCA4ODI2LCA4ODMwLCAwLCAwLCA4ODMzLCA4ODQwLCA4ODQ0LCA4ODUwLCA4ODU0LCA4ODYxLCAKLSAgICA4ODY3LCA4ODc0LCA4ODgwLCA4ODg2LCA4ODkwLCA4ODk0LCA4OTAwLCA4OTA0LCA4OTA4LCA4OTEyLCA4OTE2LCA4OTIwLCAKLSAgICA4OTI0LCA4OTI4LCA4OTMyLCA4OTM2LCA4OTQwLCA4OTQ0LCA4OTQ4LCA4OTUyLCA4OTU2LCA4OTYwLCA4OTY0LCA4OTY4LCAKLSAgICA4OTc2LCA4OTg0LCA4OTk0LCA5MDAzLCA5MDEyLCA5MDE1LCA5MDE5LCA5MDIzLCA5MDI3LCA5MDMxLCA5MDM1LCA5MDM5LCAKLSAgICA5MDQzLCA5MDQ3LCA5MDUyLCA5MDU2LCA5MDU5LCA5MDYyLCA5MDY1LCA5MDY4LCA5MDcxLCA5MDc0LCA5MDc3LCA5MDgwLCAKLSAgICA5MDg0LCA5MDg3LCA5MDkwLCA5MDk1LCA5MTAwLCA5MTA2LCA5MTA5LCA5MTE2LCA5MTI1LCA5MTMwLCA5MTM1LCA5MTQyLCAKLSAgICA5MTQ3LCA5MTUyLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTcyLCA5MTc2LCA5MTgwLCA5MTg0LCA5MTg4LCA5MTkyLCAKLSAgICA5MTk3LCA5MjAyLCA5MjA5LCA5MjE1LCA5MjIxLCA5MjI3LCA5MjMyLCA5MjQwLCA5MjQ4LCA5MjUzLCA5MjU5LCA5MjY1LCAKLSAgICA5MjcxLCA5Mjc3LCA5MjgxLCA5Mjg1LCA5Mjg5LCA5Mjk2LCA5MzA2LCA5MzEwLCA5MzE0LCA5MzE4LCA5MzI0LCA5MzMyLCAKLSAgICA5MzM2LCA5MzQwLCA5MzQ3LCA5MzUxLCA5MzU1LCA5MzU5LCA5MzY2LCA5MzczLCA5Mzg1LCA5Mzg5LCA5MzkzLCA5Mzk3LCAKLSAgICA5NDA3LCA5NDE2LCA5NDIwLCA5NDI4LCA5NDM1LCA5NDQyLCA5NDUxLCA5NDYyLCA5NDcwLCA5NDc0LCA5NDgzLCA5NDk0LCAKLSAgICA5NTAyLCA5NTE1LCA5NTIzLCA5NTMxLCA5NTM5LCA5NTQ3LCA5NTUzLCA5NTYyLCA5NTY5LCA5NTczLCA5NTgxLCA5NTg1LCAKLSAgICA5NTkyLCA5NjAwLCA5NjA0LCA5NjEwLCA5NjE3LCA5NjI0LCA5NjI4LCA5NjM2LCA5NjQwLCA5NjQ3LCA5NjUxLCA5NjU5LCAKLSAgICA5NjYzLCA5NjcxLCA5Njc5LCA5Njg2LCA5Njk0LCA5NzAyLCA5NzA5LCA5NzE1LCA5NzE5LCA5NzI2LCA5NzM0LCA5NzQwLCAKLSAgICA5NzQ3LCA5NzU0LCA5NzYwLCA5NzY5LCA5Nzc3LCA5Nzg0LCA5NzkwLCA5Nzk0LCA5Nzk3LCA5ODAxLCA5ODA3LCA5ODE1LCAKLSAgICA5ODE5LCA5ODI1LCA5ODMxLCA5ODM4LCA5ODQ1LCA5ODQ4LCA5ODU1LCA5ODYwLCA5ODY4LCA5ODczLCA5ODc3LCA5ODkwLCAKLSAgICA5OTAzLCA5OTA5LCA5OTE2LCA5OTIxLCA5OTI3LCA5OTMyLCA5OTM4LCA5OTQ4LCA5OTU1LCA5OTY0LCA5OTc0LCA5OTgwLCAKLSAgICA5OTg1LCA5OTkwLCA5OTk0LCA5OTk4LCAxMDAwMywgMTAwMDgsIDEwMDE0LCAxMDAyMiwgMTAwMzAsIDEwMDQxLCAxMDA0NiwgCi0gICAgMTAwNTUsIDEwMDY0LCAxMDA3MSwgMTAwNzcsIDEwMDgzLCAxMDA4OSwgMTAwOTUsIDEwMTAxLCAxMDEwNywgMTAxMTMsIAotICAgIDEwMTE5LCAxMDEyNSwgMTAxMzIsIDEwMTM5LCAxMDE0NiwgMTAxNTIsIDEwMTYwLCAxMDE2OSwgMTAxNzUsIDEwMTgyLCAKLSAgICAxMDE4OSwgMTAxOTQsIDEwMTk5LCAxMDIwMywgMTAyMTAsIDEwMjE3LCAxMDIyNiwgMTAyMzUsIDEwMjM4LCAxMDI0MywgCi0gICAgMTAyNDgsIDAsIDEwMjUzLCAxMDI1NywgMTAyNjEsIDEwMjY3LCAxMDI3MSwgMTAyNzUsIDEwMjgxLCAxMDI4NSwgMTAyOTMsIAotICAgIDEwMjk3LCAxMDMwMSwgMTAzMDUsIDEwMzA5LCAxMDMxMywgMTAzMTksIDEwMzIzLCAxMDMyOSwgMTAzMzMsIDEwMzM3LCAKLSAgICAxMDM0MSwgMTAzNDUsIDEwMzQ5LCAxMDM1NCwgMTAzNTcsIDEwMzYxLCAxMDM2NywgMTAzNzEsIDEwMzc1LCAxMDM3OSwgCi0gICAgMTAzODMsIDEwMzg3LCAxMDM5MywgMTAzOTksIDEwNDA1LCAxMDQwOSwgMTA0MTMsIDEwNDE4LCAxMDQyMiwgMTA0MjYsIAotICAgIDEwNDMxLCAxMDQzNSwgMTA0MzksIDEwNDQ2LCAxMDQ1MywgMTA0NTcsIDEwNDYxLCAxMDQ2NiwgMTA0NzAsIDEwNDc0LCAKLSAgICAxMDQ3NywgMTA0ODIsIDEwNDg1LCAxMDQ4OCwgMTA0OTMsIDEwNDk4LCAxMDUwMiwgMTA1MDYsIDEwNTEyLCAxMDUxOCwgCi0gICAgMTA1MjEsIDAsIDAsIDEwNTI0LCAxMDUzMCwgMTA1MzYsIDEwNTQyLCAxMDU1MiwgMTA1NjQsIDEwNTc2LCAxMDU5MywgCi0gICAgMTA2MDUsIDEwNjE2LCAxMDYyNCwgMTA2MzEsIDEwNjQyLCAxMDY1NywgMTA2NjgsIDEwNjc0LCAxMDY4MywgMTA2OTEsIAotICAgIDEwNzAzLCAxMDcxMywgMTA3MjEsIDEwNzMzLCAxMDc0MCwgMTA3NDgsIDEwNzYwLCAxMDc2NiwgMTA3NzIsIDEwNzgwLCAKLSAgICAxMDc4OCwgMTA3OTYsIDEwODAyLCAxMDgxMiwgMTA4MTksIDEwODI5LCAxMDgzOSwgMTA4NTIsIDEwODY2LCAxMDg4MCwgCi0gICAgMTA4OTAsIDEwOTAxLCAxMDkxMiwgMTA5MjUsIDEwOTM4LCAxMDk1MiwgMTA5NjQsIDEwOTc2LCAxMDk4OSwgMTEwMDIsIAotICAgIDExMDE0LCAxMTAyNywgMTEwMzYsIDExMDQ0LCAxMTA0OSwgMTEwNTQsIDExMDU5LCAxMTA2NCwgMTEwNjksIDExMDc0LCAKLSAgICAxMTA3OSwgMTEwODQsIDExMDg5LCAxMTA5NCwgMTEwOTksIDExMTA0LCAxMTEwOSwgMTExMTQsIDExMTE5LCAxMTEyNCwgCi0gICAgMTExMjksIDExMTM0LCAxMTEzOSwgMTExNDQsIDExMTQ5LCAxMTE1NCwgMTExNTksIDExMTY0LCAxMTE2OSwgMTExNzQsIAotICAgIDExMTc5LCAxMTE4NCwgMTExODksIDExMTk0LCAxMTE5OSwgMTEyMDQsIDExMjA4LCAxMTIxMywgMTEyMTgsIDExMjIzLCAKLSAgICAxMTIyOCwgMTEyMzMsIDExMjM3LCAxMTI0MSwgMTEyNDUsIDExMjQ5LCAxMTI1MywgMTEyNTcsIDExMjYxLCAxMTI2NSwgCi0gICAgMTEyNjksIDExMjczLCAxMTI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyODIsIAotICAgIDExMjg3LCAxMTI5MSwgMTEyOTUsIDExMjk5LCAxMTMwMywgMTEzMDcsIDExMzExLCAxMTMxNSwgMTEzMTksIDExMzIzLCAKLSAgICAxMTMyNywgMTEzMzIsIDExMzM2LCAxMTM0MCwgMTEzNDQsIDExMzQ5LCAxMTM1MywgMTEzNTgsIDExMzYyLCAxMTM2NywgCi0gICAgMTEzNzEsIDExMzc2LCAxMTM4MSwgMTEzODYsIDExMzkxLCAxMTM5NSwgMTE0MDAsIDExNDA1LCAxMTQxMCwgMTE0MTUsIAotICAgIDExNDE5LCAxMTQyNCwgMTE0MzEsIDExNDM1LCAxMTQ0MCwgMTE0NDQsIDExNDQ4LCAxMTQ1MywgMTE0NTcsIDExNDY0LCAKLSAgICAxMTQ3MSwgMTE0NzgsIDExNDg0LCAxMTQ5MiwgMTE1MDAsIDExNTA5LCAxMTUxNywgMTE1MjQsIDExNTMxLCAxMTUzOSwgCi0gICAgMTE1NDUsIDExNTUxLCAxMTU1NywgMTE1NjMsIDExNTcwLCAxMTU3NSwgMTE1NzksIDExNTg0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTU4OCwgMTE1OTMsIDExNTk4LCAxMTYwMywgMTE2MDgsIDExNjEzLCAxMTYxOCwgMTE2MjMsIDExNjI4LCAxMTYzMywgCi0gICAgMTE2MzgsIDExNjQzLCAxMTY0OCwgMTE2NTMsIDExNjU4LCAxMTY2MywgMTE2NjgsIDExNjczLCAxMTY3OCwgMTE2ODMsIAotICAgIDExNjg4LCAxMTY5MywgMTE2OTgsIDExNzAzLCAxMTcwOCwgMTE3MTMsIDExNzE4LCAxMTcyNiwgMTE3MzMsIDExNzM5LCAKLSAgICAxMTc0NCwgMTE3NTIsIDExNzU5LCAxMTc2NSwgMTE3NzIsIDExNzc4LCAxMTc4MywgMTE3OTAsIDExNzk3LCAxMTgwMywgCi0gICAgMTE4MDgsIDExODEzLCAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNSwgMCwgMCwgMTE4NDAsIDExODQ2LCAxMTg1MiwgCi0gICAgMTE4NTgsIDExODY0LCAxMTg3MCwgMTE4NzYsIDExODgxLCAxMTg4OSwgMTE4OTUsIDExOTAxLCAxMTkwNywgMTE5MTMsIAotICAgIDExOTE5LCAxMTkyNywgMCwgMTE5MzMsIDExOTM4LCAxMTk0MywgMTE5NDgsIDExOTUzLCAxMTk1OCwgMTE5NjMsIDExOTY4LCAKLSAgICAxMTk3MywgMTE5NzgsIDExOTgzLCAxMTk4OCwgMTE5OTMsIDExOTk4LCAxMjAwMywgMTIwMDgsIDEyMDEzLCAxMjAxOCwgCi0gICAgMTIwMjMsIDEyMDI4LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA0OCwgMTIwNTMsIDEyMDU4LCAxMjA2MywgMTIwNjgsIDAsIAotICAgIDAsIDEyMDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA3NywgMTIwODMsIAotICAgIDEyMDg3LCAxMjA5MSwgMTIwOTUsIDEyMTAwLCAxMjEwMywgMTIxMDcsIDEyMTEwLCAxMjExNCwgMTIxMTcsIDEyMTIxLCAKLSAgICAxMjEyNSwgMTIxMjksIDEyMTM0LCAxMjEzOSwgMTIxNDIsIDEyMTQ2LCAxMjE1MSwgMTIxNTYsIDEyMTU5LCAxMjE2MywgCi0gICAgMTIxNjYsIDEyMTcwLCAxMjE3NCwgMTIxNzgsIDEyMTgyLCAxMjE4NiwgMTIxOTAsIDEyMTk0LCAxMjE5OCwgMTIyMDIsIAotICAgIDEyMjA2LCAxMjIxMCwgMTIyMTQsIDEyMjE4LCAxMjIyMiwgMTIyMjYsIDEyMjMwLCAxMjIzNCwgMTIyMzgsIDEyMjQxLCAKLSAgICAxMjI0NSwgMTIyNDgsIDEyMjUyLCAxMjI1NiwgMTIyNjAsIDEyMjYzLCAxMjI2NiwgMTIyNjksIDEyMjczLCAxMjI3NywgCi0gICAgMTIyODEsIDEyMjg1LCAxMjI4OSwgMTIyOTMsIDEyMjk3LCAxMjMwMSwgMTIzMDQsIDEyMzA5LCAxMjMxNCwgMTIzMTgsIAotICAgIDEyMzIyLCAxMjMyNywgMTIzMzEsIDEyMzM2LCAxMjM0MCwgMTIzNDUsIDEyMzUwLCAxMjM1NiwgMTIzNjIsIDEyMzY4LCAKLSAgICAxMjM3MiwgMTIzNzcsIDEyMzgzLCAxMjM4OSwgMTIzOTMsIDEyMzk4LCAxMjQwMiwgMTI0MDgsIDEyNDEzLCAxMjQxNiwgCi0gICAgMTI0MjIsIDEyNDI4LCAxMjQzMywgMTI0MzgsIDEyNDQ1LCAxMjQ1MCwgMTI0NTUsIDEyNDU5LCAxMjQ2MywgMTI0NjcsIAotICAgIDEyNDcxLCAxMjQ3NSwgMTI0NzksIDEyNDgzLCAxMjQ4NywgMTI0OTIsIDEyNDk3LCAxMjUwMiwgMTI1MDgsIDEyNTExLCAKLSAgICAxMjUxNSwgMTI1MTksIDEyNTIyLCAxMjUyNSwgMTI1MjgsIDEyNTMxLCAxMjUzNCwgMTI1MzcsIDEyNTQwLCAxMjU0MywgCi0gICAgMTI1NDYsIDEyNTUwLCAxMjU1NywgMTI1NjIsIDEyNTY2LCAxMjU3MCwgMTI1NzQsIDEyNTc4LCAwLCAxMjU4MiwgMTI1ODYsIAotICAgIDEyNTkwLCAxMjU5NCwgMTI1OTgsIDEyNjA0LCAxMjYwOCwgMCwgMTI2MTIsIDEyNjE2LCAxMjYyMCwgMCwgMTI2MjQsIAotICAgIDEyNjI3LCAxMjYzMSwgMTI2MzQsIDEyNjM4LCAxMjY0MSwgMTI2NDUsIDEyNjQ5LCAwLCAwLCAxMjY1MywgMTI2NTYsIDAsIAotICAgIDAsIDEyNjYwLCAxMjY2MywgMTI2NjcsIDEyNjcwLCAxMjY3NCwgMTI2NzgsIDEyNjgyLCAxMjY4NiwgMTI2OTAsIDEyNjk0LCAKLSAgICAxMjY5OCwgMTI3MDIsIDEyNzA2LCAxMjcxMCwgMTI3MTQsIDEyNzE4LCAxMjcyMiwgMTI3MjYsIDEyNzMwLCAxMjczNCwgCi0gICAgMTI3MzgsIDEyNzQyLCAwLCAxMjc0NSwgMTI3NDgsIDEyNzUyLCAxMjc1NiwgMTI3NjAsIDEyNzYzLCAxMjc2NiwgMCwgCi0gICAgMTI3NjksIDAsIDAsIDAsIDEyNzczLCAxMjc3NywgMTI3ODEsIDEyNzg1LCAwLCAwLCAxMjc4OCwgMTI3OTIsIDEyNzk2LCAKLSAgICAxMjgwMSwgMTI4MDUsIDEyODEwLCAxMjgxNCwgMTI4MTksIDEyODI0LCAwLCAwLCAxMjgzMCwgMTI4MzQsIDAsIDAsIAotICAgIDEyODM5LCAxMjg0MywgMTI4NDgsIDEyODUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjg1OCwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NjQsIDEyODY4LCAwLCAxMjg3MiwgMTI4NzYsIDEyODgxLCAxMjg4NiwgMTI4OTEsIDAsIDAsIDEyODk3LCAxMjkwMSwgCi0gICAgMTI5MDQsIDEyOTA3LCAxMjkxMCwgMTI5MTMsIDEyOTE2LCAxMjkxOSwgMTI5MjIsIDEyOTI1LCAxMjkyOCwgMTI5MzcsIAotICAgIDEyOTQ2LCAxMjk1MCwgMTI5NTQsIDEyOTYwLCAxMjk2NiwgMTI5NzIsIDEyOTc4LCAxMjk5MiwgMTI5OTksIDEzMDAyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzAwNiwgMTMwMTIsIDEzMDE2LCAwLCAxMzAyMCwgMTMwMjMsIDEzMDI3LCAxMzAzMCwgMTMwMzQsIAotICAgIDEzMDM3LCAwLCAwLCAwLCAwLCAxMzA0MSwgMTMwNDUsIDAsIDAsIDEzMDQ5LCAxMzA1MywgMTMwNTcsIDEzMDYwLCAxMzA2NCwgCi0gICAgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA4OCwgMTMwOTIsIDEzMDk2LCAxMzEwMCwgMTMxMDQsIAotICAgIDEzMTA4LCAxMzExMiwgMTMxMTYsIDEzMTIwLCAxMzEyNCwgMTMxMjgsIDEzMTMyLCAwLCAxMzEzNSwgMTMxMzgsIDEzMTQyLCAKLSAgICAxMzE0NiwgMTMxNTAsIDEzMTUzLCAxMzE1NiwgMCwgMTMxNTksIDEzMTYzLCAwLCAxMzE2NywgMTMxNzEsIDAsIDEzMTc1LCAKLSAgICAxMzE3OSwgMCwgMCwgMTMxODIsIDAsIDEzMTg2LCAxMzE5MSwgMTMxOTUsIDEzMjAwLCAxMzIwNCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyMDksIDEzMjE0LCAwLCAwLCAxMzIxOSwgMTMyMjQsIDEzMjI5LCAwLCAwLCAwLCAxMzIzMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTMyMzcsIDEzMjQxLCAxMzI0NSwgMTMyNDksIDAsIDEzMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI1NywgCi0gICAgMTMyNjEsIDEzMjY0LCAxMzI2NywgMTMyNzAsIDEzMjczLCAxMzI3NiwgMTMyNzksIDEzMjgyLCAxMzI4NSwgMTMyODgsIAotICAgIDEzMjkxLCAxMzI5NCwgMTMyOTcsIDEzMzAwLCAxMzMwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMzMDksIDEzMzEzLCAxMzMxNywgMCwgMTMzMjEsIDEzMzI0LCAxMzMyOCwgMTMzMzEsIDEzMzM1LCAxMzMzOCwgMTMzNDIsIAotICAgIDEzMzQ2LCAxMzM1MCwgMCwgMTMzNTUsIDEzMzU4LCAxMzM2MiwgMCwgMTMzNjcsIDEzMzcwLCAxMzM3NCwgMTMzNzcsIAotICAgIDEzMzgxLCAxMzM4NSwgMTMzODksIDEzMzkzLCAxMzM5NywgMTM0MDEsIDEzNDA1LCAxMzQwOSwgMTM0MTMsIDEzNDE3LCAKLSAgICAxMzQyMSwgMTM0MjUsIDEzNDI5LCAxMzQzMywgMTM0MzcsIDEzNDQxLCAxMzQ0NSwgMTM0NDksIDAsIDEzNDUyLCAxMzQ1NSwgCi0gICAgMTM0NTksIDEzNDYzLCAxMzQ2NywgMTM0NzAsIDEzNDczLCAwLCAxMzQ3NiwgMTM0ODAsIDAsIDEzNDg0LCAxMzQ4OCwgCi0gICAgMTM0OTIsIDEzNDk2LCAxMzUwMCwgMCwgMCwgMTM1MDMsIDEzNTA3LCAxMzUxMSwgMTM1MTYsIDEzNTIwLCAxMzUyNSwgCi0gICAgMTM1MjksIDEzNTM0LCAxMzUzOSwgMTM1NDUsIDAsIDEzNTUxLCAxMzU1NSwgMTM1NjAsIDAsIDEzNTY2LCAxMzU3MCwgCi0gICAgMTM1NzUsIDAsIDAsIDEzNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU4MiwgCi0gICAgMTM1ODcsIDEzNTkyLCAxMzU5NywgMCwgMCwgMTM2MDMsIDEzNjA3LCAxMzYxMCwgMTM2MTMsIDEzNjE2LCAxMzYxOSwgCi0gICAgMTM2MjIsIDEzNjI1LCAxMzYyOCwgMTM2MzEsIDAsIDEzNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzYzOCwgMTM2NDIsIDEzNjQ2LCAwLCAxMzY1MCwgMTM2NTMsIDEzNjU3LCAxMzY2MCwgMTM2NjQsIAotICAgIDEzNjY3LCAxMzY3MSwgMTM2NzUsIDAsIDAsIDEzNjc5LCAxMzY4MiwgMCwgMCwgMTM2ODYsIDEzNjg5LCAxMzY5MywgCi0gICAgMTM2OTYsIDEzNzAwLCAxMzcwNCwgMTM3MDgsIDEzNzEyLCAxMzcxNiwgMTM3MjAsIDEzNzI0LCAxMzcyOCwgMTM3MzIsIAotICAgIDEzNzM2LCAxMzc0MCwgMTM3NDQsIDEzNzQ4LCAxMzc1MiwgMTM3NTYsIDEzNzYwLCAxMzc2NCwgMTM3NjgsIDAsIDEzNzcxLCAKLSAgICAxMzc3NCwgMTM3NzgsIDEzNzgyLCAxMzc4NiwgMTM3ODksIDEzNzkyLCAwLCAxMzc5NSwgMTM3OTksIDAsIDEzODAzLCAKLSAgICAxMzgwNywgMTM4MTEsIDEzODE1LCAxMzgxOSwgMCwgMCwgMTM4MjIsIDEzODI2LCAxMzgzMCwgMTM4MzUsIDEzODM5LCAKLSAgICAxMzg0NCwgMTM4NDgsIDEzODUzLCAxMzg1OCwgMCwgMCwgMTM4NjQsIDEzODY4LCAwLCAwLCAxMzg3MywgMTM4NzcsIAotICAgIDEzODgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg4NiwgMTM4OTIsIDAsIDAsIDAsIDAsIDEzODk4LCAxMzkwMiwgMCwgCi0gICAgMTM5MDYsIDEzOTEwLCAxMzkxNSwgMTM5MjAsIDEzOTI1LCAwLCAwLCAxMzkzMSwgMTM5MzUsIDEzOTM4LCAxMzk0MSwgCi0gICAgMTM5NDQsIDEzOTQ3LCAxMzk1MCwgMTM5NTMsIDEzOTU2LCAxMzk1OSwgMTM5NjIsIDEzOTY1LCAxMzk2OSwgMTM5NzUsIAotICAgIDEzOTgxLCAxMzk4NywgMTM5OTMsIDEzOTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAwNSwgMTQwMDksIAotICAgIDAsIDE0MDEzLCAxNDAxNiwgMTQwMjAsIDE0MDIzLCAxNDAyNywgMTQwMzAsIDAsIDAsIDAsIDE0MDM0LCAxNDAzNywgCi0gICAgMTQwNDEsIDAsIDE0MDQ1LCAxNDA0OCwgMTQwNTIsIDE0MDU2LCAwLCAwLCAwLCAxNDA1OSwgMTQwNjMsIDAsIDE0MDY3LCAwLCAKLSAgICAxNDA3MSwgMTQwNzUsIDAsIDAsIDAsIDE0MDc5LCAxNDA4MywgMCwgMCwgMCwgMTQwODcsIDE0MDkwLCAxNDA5NCwgMCwgMCwgCi0gICAgMCwgMTQwOTcsIDE0MTAwLCAxNDEwMywgMTQxMDYsIDE0MTEwLCAxNDExNCwgMTQxMTgsIDE0MTIyLCAxNDEyNiwgMTQxMzAsIAotICAgIDE0MTM0LCAxNDEzOCwgMCwgMCwgMCwgMCwgMTQxNDEsIDE0MTQ2LCAxNDE1MCwgMTQxNTUsIDE0MTU5LCAwLCAwLCAwLCAKLSAgICAxNDE2NCwgMTQxNjgsIDE0MTczLCAwLCAxNDE3OCwgMTQxODIsIDE0MTg3LCAxNDE5MiwgMCwgMCwgMTQxOTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIwNSwgMTQyMDksIAotICAgIDE0MjEyLCAxNDIxNSwgMTQyMTgsIDE0MjIxLCAxNDIyNCwgMTQyMjcsIDE0MjMwLCAxNDIzMywgMTQyMzYsIDE0MjQwLCAKLSAgICAxNDI0NSwgMTQyNTAsIDE0MjU0LCAxNDI1OCwgMTQyNjIsIDE0MjY2LCAxNDI3MCwgMTQyNzUsIDE0Mjc5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDI4MiwgMTQyODYsIDE0MjkwLCAwLCAxNDI5NCwgMTQyOTcsIDE0MzAxLCAxNDMwNCwgMTQzMDgsIAotICAgIDE0MzExLCAxNDMxNSwgMTQzMTksIDAsIDE0MzIzLCAxNDMyNiwgMTQzMzAsIDAsIDE0MzM0LCAxNDMzNywgMTQzNDEsIAotICAgIDE0MzQ1LCAxNDM0OCwgMTQzNTIsIDE0MzU2LCAxNDM2MCwgMTQzNjQsIDE0MzY4LCAxNDM3MiwgMTQzNzYsIDE0MzgwLCAKLSAgICAxNDM4NCwgMTQzODgsIDE0MzkyLCAxNDM5NiwgMTQ0MDAsIDE0NDA0LCAxNDQwOCwgMTQ0MTIsIDE0NDE2LCAxNDQyMCwgMCwgCi0gICAgMTQ0MjMsIDE0NDI2LCAxNDQzMCwgMTQ0MzQsIDE0NDM4LCAxNDQ0MSwgMTQ0NDQsIDE0NDQ3LCAxNDQ1MSwgMTQ0NTUsIDAsIAotICAgIDE0NDU5LCAxNDQ2MywgMTQ0NjcsIDE0NDcxLCAxNDQ3NSwgMCwgMCwgMCwgMTQ0NzgsIDE0NDgyLCAxNDQ4NywgMTQ0OTEsIAotICAgIDE0NDk2LCAxNDUwMCwgMTQ1MDUsIDE0NTEwLCAwLCAxNDUxNiwgMTQ1MjAsIDE0NTI1LCAwLCAxNDUzMCwgMTQ1MzQsIAotICAgIDE0NTM5LCAxNDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1NDgsIDE0NTUyLCAwLCAxNDU1OCwgMTQ1NjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0NTY2LCAxNDU3MSwgMTQ1NzYsIDE0NTgxLCAwLCAwLCAxNDU4NywgMTQ1OTEsIDE0NTk0LCAxNDU5NywgCi0gICAgMTQ2MDAsIDE0NjAzLCAxNDYwNiwgMTQ2MDksIDE0NjEyLCAxNDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2MTgsIAotICAgIDE0NjMxLCAxNDY0MywgMTQ2NTUsIDE0NjY3LCAxNDY3OSwgMTQ2OTEsIDE0NzAzLCAwLCAwLCAxNDcwNywgMTQ3MTEsIDAsIAotICAgIDE0NzE1LCAxNDcxOCwgMTQ3MjIsIDE0NzI1LCAxNDcyOSwgMTQ3MzIsIDE0NzM2LCAxNDc0MCwgMCwgMTQ3NDQsIDE0NzQ3LCAKLSAgICAxNDc1MSwgMCwgMTQ3NTUsIDE0NzU4LCAxNDc2MiwgMTQ3NjYsIDE0NzY5LCAxNDc3MywgMTQ3NzcsIDE0NzgxLCAxNDc4NSwgCi0gICAgMTQ3ODksIDE0NzkzLCAxNDc5NywgMTQ4MDEsIDE0ODA1LCAxNDgwOSwgMTQ4MTMsIDE0ODE3LCAxNDgyMSwgMTQ4MjUsIAotICAgIDE0ODI5LCAxNDgzMywgMTQ4MzcsIDE0ODQxLCAwLCAxNDg0NCwgMTQ4NDcsIDE0ODUxLCAxNDg1NSwgMTQ4NTksIDE0ODYyLCAKLSAgICAxNDg2NSwgMTQ4NjgsIDE0ODcyLCAxNDg3NiwgMCwgMTQ4ODAsIDE0ODg0LCAxNDg4OCwgMTQ4OTIsIDE0ODk2LCAwLCAwLCAKLSAgICAxNDg5OSwgMTQ5MDMsIDE0OTA3LCAxNDkxMiwgMTQ5MTYsIDE0OTIxLCAxNDkyNSwgMTQ5MzAsIDE0OTM1LCAwLCAxNDk0MSwgCi0gICAgMTQ5NDUsIDE0OTUwLCAwLCAxNDk1NSwgMTQ5NTksIDE0OTY0LCAxNDk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5NzMsIAotICAgIDE0OTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDk4MywgMCwgMTQ5ODcsIDE0OTkyLCAxNDk5NywgMTUwMDIsIDAsIDAsIAotICAgIDE1MDA4LCAxNTAxMiwgMTUwMTUsIDE1MDE4LCAxNTAyMSwgMTUwMjQsIDE1MDI3LCAxNTAzMCwgMTUwMzMsIDE1MDM2LCAwLCAKLSAgICAxNTAzOSwgMTUwNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDQ3LCAxNTA1MSwgCi0gICAgMCwgMTUwNTUsIDE1MDU4LCAxNTA2MiwgMTUwNjUsIDE1MDY5LCAxNTA3MiwgMTUwNzYsIDE1MDgwLCAwLCAxNTA4NCwgCi0gICAgMTUwODcsIDE1MDkxLCAwLCAxNTA5NSwgMTUwOTgsIDE1MTAyLCAxNTEwNiwgMTUxMDksIDE1MTEzLCAxNTExNywgMTUxMjEsIAotICAgIDE1MTI1LCAxNTEyOSwgMTUxMzMsIDE1MTM3LCAxNTE0MSwgMTUxNDUsIDE1MTQ5LCAxNTE1MywgMTUxNTcsIDE1MTYxLCAKLSAgICAxNTE2NSwgMTUxNjksIDE1MTczLCAxNTE3NywgMTUxODEsIDE1MTg0LCAxNTE4OCwgMTUxOTEsIDE1MTk1LCAxNTE5OSwgCi0gICAgMTUyMDMsIDE1MjA2LCAxNTIwOSwgMTUyMTIsIDE1MjE2LCAxNTIyMCwgMTUyMjQsIDE1MjI4LCAxNTIzMiwgMTUyMzYsIAotICAgIDE1MjQwLCAxNTI0NCwgMTUyNDcsIDAsIDAsIDE1MjUxLCAxNTI1NSwgMTUyNjAsIDE1MjY0LCAxNTI2OSwgMTUyNzMsIAotICAgIDE1Mjc4LCAxNTI4MywgMCwgMTUyODksIDE1MjkzLCAxNTI5OCwgMCwgMTUzMDMsIDE1MzA3LCAxNTMxMiwgMTUzMTcsIAotICAgIDE1MzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzIsIAotICAgIDE1MzM3LCAxNTM0MiwgMTUzNDcsIDAsIDAsIDE1MzUzLCAxNTM1NywgMTUzNjAsIDE1MzYzLCAxNTM2NiwgMTUzNjksIAotICAgIDE1MzcyLCAxNTM3NSwgMTUzNzgsIDE1MzgxLCAxNTM4NCwgMTUzODgsIDE1MzkzLCAxNTM5OCwgMTU0MDQsIDE1NDEwLCAwLCAKLSAgICAwLCAwLCAxNTQxNiwgMTU0MjAsIDE1NDI2LCAxNTQzMSwgMTU0MzcsIDE1NDQyLCAxNTQ0OCwgMCwgMCwgMTU0NTQsIAotICAgIDE1NDU4LCAwLCAxNTQ2MiwgMTU0NjYsIDE1NDcwLCAxNTQ3NCwgMTU0NzgsIDE1NDgyLCAxNTQ4NiwgMTU0OTAsIDE1NDk0LCAKLSAgICAxNTQ5OCwgMTU1MDIsIDE1NTA2LCAxNTUxMCwgMTU1MTQsIDE1NTE4LCAxNTUyMiwgMTU1MjYsIDE1NTMwLCAwLCAwLCAwLCAKLSAgICAxNTUzNCwgMTU1NDAsIDE1NTQ2LCAxNTU1MiwgMTU1NTgsIDE1NTY0LCAxNTU3MCwgMTU1NzYsIDE1NTgyLCAxNTU4OCwgCi0gICAgMTU1OTQsIDE1NjAwLCAxNTYwOCwgMTU2MTQsIDE1NjIwLCAxNTYyNiwgMTU2MzIsIDE1NjM4LCAxNTY0NCwgMTU2NTAsIAotICAgIDE1NjU2LCAxNTY2MiwgMTU2NjgsIDE1Njc0LCAwLCAxNTY4MCwgMTU2ODYsIDE1NjkyLCAxNTY5OCwgMTU3MDQsIDE1NzEwLCAKLSAgICAxNTcxNCwgMTU3MjAsIDE1NzI0LCAwLCAxNTcyOCwgMCwgMCwgMTU3MzQsIDE1NzM4LCAxNTc0NCwgMTU3NTAsIDE1NzU2LCAKLSAgICAxNTc2MCwgMTU3NjYsIDAsIDAsIDAsIDE1NzcwLCAwLCAwLCAwLCAwLCAxNTc3NCwgMTU3NzksIDE1Nzg2LCAxNTc5MywgCi0gICAgMTU4MDAsIDE1ODA3LCAwLCAxNTgxNCwgMCwgMTU4MjEsIDE1ODI2LCAxNTgzMSwgMTU4MzgsIDE1ODQ1LCAxNTg1NCwgCi0gICAgMTU4NjUsIDE1ODc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNTg3OSwgMTU4ODYsIDE1ODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTg5OCwgMTU5MDQsIAotICAgIDE1OTEwLCAxNTkxNiwgMTU5MjIsIDE1OTI4LCAxNTkzNCwgMTU5NDAsIDE1OTQ2LCAxNTk1MiwgMTU5NTgsIDE1OTY0LCAKLSAgICAxNTk3MCwgMTU5NzYsIDE1OTgyLCAxNTk4OCwgMTU5OTQsIDE2MDAwLCAxNjAwNiwgMTYwMTIsIDE2MDE4LCAxNjAyNCwgCi0gICAgMTYwMzAsIDE2MDM2LCAxNjA0MiwgMTYwNDgsIDE2MDU0LCAxNjA2MCwgMTYwNjYsIDE2MDcyLCAxNjA3OCwgMTYwODQsIAotICAgIDE2MDkwLCAxNjA5NSwgMTYxMDEsIDE2MTA3LCAxNjExMSwgMTYxMTcsIDE2MTIxLCAxNjEyNywgMTYxMzMsIDE2MTM5LCAKLSAgICAxNjE0NSwgMTYxNTEsIDE2MTU3LCAxNjE2MiwgMTYxNjgsIDE2MTcyLCAxNjE3NywgMTYxODMsIDE2MTg5LCAxNjE5NSwgCi0gICAgMTYyMDAsIDE2MjA2LCAxNjIxMiwgMTYyMTgsIDE2MjIzLCAxNjIyOSwgMCwgMCwgMCwgMCwgMTYyMzMsIDE2MjM5LCAKLSAgICAxNjI0NCwgMTYyNTAsIDE2MjU1LCAxNjI2MywgMTYyNzEsIDE2Mjc1LCAxNjI3OSwgMTYyODMsIDE2Mjg5LCAxNjI5NSwgCi0gICAgMTYzMDEsIDE2MzA3LCAxNjMxMSwgMTYzMTUsIDE2MzE5LCAxNjMyMywgMTYzMjcsIDE2MzMwLCAxNjMzMywgMTYzMzYsIAotICAgIDE2MzM5LCAxNjM0MiwgMTYzNDUsIDE2MzQ4LCAxNjM1MSwgMTYzNTQsIDE2MzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNjM2MiwgMTYzNjcsIDAsIDE2Mzc0LCAwLCAwLCAxNjM4MSwgMTYzODYsIDAsIDE2MzkxLCAwLCAKLSAgICAwLCAxNjM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0MDMsIDE2NDA4LCAxNjQxMiwgMTY0MTksIDAsIDE2NDI2LCAxNjQzMSwgCi0gICAgMTY0MzYsIDE2NDQxLCAxNjQ0OCwgMTY0NTUsIDE2NDYyLCAwLCAxNjQ2OSwgMTY0NzQsIDE2NDc5LCAwLCAxNjQ4NiwgMCwgCi0gICAgMTY0OTMsIDAsIDAsIDE2NDk4LCAxNjUwNSwgMCwgMTY1MTIsIDE2NTE2LCAxNjUyMywgMTY1MjcsIDE2NTMyLCAxNjU0MCwgCi0gICAgMTY1NDYsIDE2NTUyLCAxNjU1NywgMTY1NjMsIDE2NTY5LCAxNjU3NSwgMTY1ODAsIDAsIDE2NTg2LCAxNjU5NCwgMTY2MDEsIAotICAgIDAsIDAsIDE2NjA4LCAxNjYxMywgMTY2MTksIDE2NjI0LCAxNjYzMCwgMCwgMTY2MzYsIDAsIDE2NjQyLCAxNjY0OSwgCi0gICAgMTY2NTYsIDE2NjYzLCAxNjY3MCwgMTY2NzUsIDAsIDAsIDE2Njc5LCAxNjY4NCwgMTY2ODgsIDE2NjkyLCAxNjY5NiwgCi0gICAgMTY3MDAsIDE2NzA0LCAxNjcwOCwgMTY3MTIsIDE2NzE2LCAwLCAwLCAxNjcyMCwgMTY3MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE2NzMyLCAxNjczNiwgMTY3NDcsIDE2NzYyLCAxNjc3NywgMTY3ODcsIDE2Nzk4LCAxNjgxMSwgCi0gICAgMTY4MjIsIDE2ODI4LCAxNjgzNiwgMTY4NDYsIDE2ODUyLCAxNjg2MCwgMTY4NjQsIDE2ODcwLCAxNjg3NiwgMTY4ODQsIAotICAgIDE2ODk0LCAxNjkwMiwgMTY5MTUsIDE2OTIxLCAxNjkyOSwgMTY5MzcsIDE2OTQ5LCAxNjk1NiwgMTY5NjQsIDE2OTcyLCAKLSAgICAxNjk4MCwgMTY5ODgsIDE2OTk2LCAxNzAwNCwgMTcwMTQsIDE3MDE4LCAxNzAyMSwgMTcwMjQsIDE3MDI3LCAxNzAzMCwgCi0gICAgMTcwMzMsIDE3MDM2LCAxNzAzOSwgMTcwNDIsIDE3MDQ1LCAxNzA0OSwgMTcwNTMsIDE3MDU3LCAxNzA2MSwgMTcwNjUsIAotICAgIDE3MDY5LCAxNzA3MywgMTcwNzcsIDE3MDgxLCAxNzA4NiwgMTcwOTIsIDE3MTAyLCAxNzExNiwgMTcxMjYsIDE3MTMyLCAKLSAgICAxNzEzOCwgMTcxNDYsIDE3MTU0LCAxNzE2MiwgMTcxNzAsIDE3MTc2LCAxNzE4MiwgMTcxODUsIDE3MTg5LCAxNzE5MywgCi0gICAgMTcxOTcsIDE3MjAxLCAxNzIwNSwgMTcyMDksIDAsIDE3MjEzLCAxNzIxNywgMTcyMjEsIDE3MjI1LCAxNzIyOSwgMTcyMzMsIAotICAgIDE3MjM3LCAxNzI0MSwgMTcyNDUsIDE3MjQ5LCAxNzI1MywgMTcyNTYsIDE3MjU5LCAxNzI2MywgMTcyNjcsIDE3MjcxLCAKLSAgICAxNzI3NCwgMTcyNzgsIDE3MjgyLCAxNzI4NiwgMTcyOTAsIDE3Mjk0LCAxNzI5OCwgMTczMDIsIDE3MzA2LCAxNzMwOSwgCi0gICAgMTczMTIsIDE3MzE2LCAxNzMyMCwgMTczMjQsIDE3MzI4LCAxNzMzMSwgMTczMzQsIDE3MzM4LCAxNzM0MywgMTczNDcsIDAsIAotICAgIDAsIDAsIDAsIDE3MzUxLCAxNzM1NiwgMTczNjAsIDE3MzY1LCAxNzM2OSwgMTczNzQsIDE3Mzc5LCAxNzM4NSwgMTczOTAsIAotICAgIDE3Mzk2LCAxNzQwMCwgMTc0MDUsIDE3NDA5LCAxNzQxNCwgMTc0MjQsIDE3NDMwLCAxNzQzNiwgMTc0NDMsIDE3NDUzLCAKLSAgICAxNzQ1OSwgMTc0NjMsIDE3NDY3LCAxNzQ3MywgMTc0NzksIDE3NDg3LCAxNzQ5MywgMTc1MDEsIDE3NTA5LCAxNzUxNywgCi0gICAgMTc1MjcsIDE3NTM1LCAxNzU0NSwgMTc1NTAsIDE3NTU2LCAxNzU2MiwgMTc1NjgsIDE3NTc0LCAxNzU4MCwgMTc1ODYsIDAsIAotICAgIDE3NTkyLCAxNzU5OCwgMTc2MDQsIDE3NjEwLCAxNzYxNiwgMTc2MjIsIDE3NjI4LCAxNzYzNCwgMTc2NDAsIDE3NjQ2LCAKLSAgICAxNzY1MiwgMTc2NTcsIDE3NjYyLCAxNzY2OCwgMTc2NzQsIDE3NjgwLCAxNzY4NSwgMTc2OTEsIDE3Njk3LCAxNzcwMywgCi0gICAgMTc3MDksIDE3NzE1LCAxNzcyMSwgMTc3MjcsIDE3NzMzLCAxNzczOCwgMTc3NDMsIDE3NzQ5LCAxNzc1NSwgMTc3NjEsIAotICAgIDE3NzY3LCAxNzc3MiwgMTc3NzcsIDE3NzgzLCAxNzc5MSwgMTc3OTgsIDAsIDE3ODA1LCAxNzgxMiwgMTc4MjUsIDE3ODMyLCAKLSAgICAxNzgzOSwgMTc4NDcsIDE3ODU1LCAxNzg2MSwgMTc4NjcsIDE3ODczLCAxNzg4MywgMTc4ODgsIDE3ODk0LCAxNzkwNCwgCi0gICAgMTc5MTQsIDAsIDE3OTI0LCAxNzkzNCwgMTc5NDIsIDE3OTU0LCAxNzk2NiwgMTc5NzIsIDE3OTg2LCAxODAwMSwgMTgwMDYsIAotICAgIDE4MDExLCAxODAxOSwgMTgwMjcsIDE4MDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODA0MywgCi0gICAgMTgwNDYsIDE4MDUwLCAxODA1NCwgMTgwNTgsIDE4MDYyLCAxODA2NiwgMTgwNzAsIDE4MDc0LCAxODA3OCwgMTgwODIsIAotICAgIDE4MDg2LCAxODA5MCwgMTgwOTQsIDE4MDk4LCAxODEwMiwgMTgxMDYsIDE4MTEwLCAxODExNCwgMTgxMTgsIDE4MTIyLCAKLSAgICAxODEyNSwgMTgxMjgsIDE4MTMyLCAxODEzNiwgMTgxNDAsIDE4MTQzLCAxODE0NiwgMTgxNDksIDE4MTUzLCAxODE1NywgCi0gICAgMTgxNjEsIDE4MTY0LCAxODE2OCwgMTgxNzEsIDE4MTc2LCAxODE3OSwgMTgxODMsIDE4MTg2LCAxODE5MCwgMTgxOTMsIAotICAgIDE4MTk4LCAxODIwMSwgMTgyMDUsIDE4MjEyLCAxODIxNywgMTgyMjEsIDE4MjI2LCAxODIzMCwgMTgyMzUsIDE4MjM5LCAKLSAgICAxODI0NCwgMTgyNTEsIDE4MjU3LCAxODI2MiwgMTgyNjYsIDE4MjcwLCAxODI3NCwgMTgyNzgsIDE4MjgyLCAxODI4OCwgCi0gICAgMTgyOTQsIDE4MzAxLCAxODMwNywgMTgzMTMsIDE4MzE3LCAxODMyMCwgMTgzMjMsIDE4MzI2LCAxODMyOSwgMTgzMzIsIAotICAgIDE4MzM1LCAxODMzOCwgMTgzNDEsIDE4MzQ0LCAxODM1MCwgMTgzNTQsIDE4MzU4LCAxODM2MiwgMTgzNjYsIDE4MzcwLCAKLSAgICAxODM3NCwgMTgzNzgsIDE4MzgyLCAxODM4NywgMTgzOTEsIDE4Mzk2LCAxODQwMSwgMTg0MDcsIDE4NDEyLCAxODQxOCwgCi0gICAgMTg0MjQsIDE4NDMwLCAxODQzNiwgMTg0NDIsIDE4NDUwLCAxODQ1OCwgMTg0NjcsIDE4NDc1LCAxODQ4NCwgMTg0OTMsIAotICAgIDE4NTA0LCAxODUxNCwgMTg1MjQsIDE4NTM1LCAxODU0NiwgMTg1NTYsIDE4NTY2LCAxODU3NiwgMTg1ODYsIDE4NTk2LCAKLSAgICAxODYwNiwgMTg2MTYsIDE4NjI2LCAxODYzNCwgMTg2NDEsIDE4NjQ3LCAxODY1NCwgMTg2NTksIDE4NjY1LCAxODY3MSwgCi0gICAgMTg2NzcsIDE4NjgzLCAxODY4OSwgMTg2OTUsIDE4NzAwLCAxODcwNiwgMTg3MTIsIDE4NzE4LCAxODcyNCwgMTg3MjksIAotICAgIDE4NzM4LCAxODc0NSwgMTg3NTEsIDE4NzU4LCAxODc2NiwgMTg3NzIsIDE4Nzc4LCAxODc4NCwgMTg3OTAsIDE4Nzk4LCAKLSAgICAxODgwNiwgMTg4MTYsIDE4ODI0LCAxODgzMiwgMTg4MzgsIDE4ODQzLCAxODg0OCwgMTg4NTMsIDE4ODU4LCAxODg2MywgCi0gICAgMTg4NjgsIDE4ODczLCAxODg3OCwgMTg4ODMsIDE4ODg5LCAxODg5NSwgMTg5MDEsIDE4OTA4LCAxODkxMywgMTg5MTksIAotICAgIDE4OTI0LCAxODkyOSwgMTg5MzQsIDE4OTM5LCAxODk0NCwgMTg5NDksIDE4OTU0LCAxODk1OSwgMTg5NjQsIDE4OTY5LCAKLSAgICAxODk3NCwgMTg5NzksIDE4OTg0LCAxODk4OSwgMTg5OTQsIDE4OTk5LCAxOTAwNCwgMTkwMDksIDE5MDE0LCAxOTAxOSwgCi0gICAgMTkwMjQsIDE5MDI5LCAxOTAzNCwgMTkwMzksIDE5MDQ0LCAxOTA0OSwgMTkwNTQsIDE5MDU5LCAxOTA2NCwgMTkwNjksIAotICAgIDE5MDc0LCAxOTA3OSwgMTkwODQsIDE5MDg5LCAxOTA5NCwgMTkwOTksIDE5MTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOTEwOSwgMTkxMTMsIDE5MTE3LCAxOTEyMSwgMTkxMjUsIDE5MTI5LCAxOTEzMywgMTkxMzcsIDE5MTQxLCAKLSAgICAxOTE0NSwgMTkxNDksIDE5MTUzLCAxOTE1NywgMTkxNjEsIDE5MTY1LCAxOTE2OSwgMTkxNzMsIDE5MTc3LCAxOTE4MSwgCi0gICAgMTkxODUsIDE5MTg5LCAxOTE5MywgMTkxOTcsIDE5MjAxLCAxOTIwNSwgMTkyMDksIDE5MjEzLCAxOTIxNywgMTkyMjEsIAotICAgIDE5MjI1LCAxOTIyOSwgMTkyMzMsIDE5MjM3LCAxOTI0MSwgMTkyNDUsIDE5MjQ5LCAxOTI1MywgMTkyNTcsIDE5MjYxLCAKLSAgICAxOTI2NSwgMTkyNjksIDE5MjczLCAxOTI3OSwgMTkyODMsIDE5Mjg4LCAwLCAwLCAwLCAxOTI5MywgMTkyOTcsIDE5MzAxLCAKLSAgICAxOTMwNSwgMTkzMDksIDE5MzEzLCAxOTMxNywgMTkzMjEsIDE5MzI1LCAxOTMyOSwgMTkzMzMsIDE5MzM3LCAxOTM0MSwgCi0gICAgMTkzNDUsIDE5MzQ5LCAxOTM1MywgMTkzNTcsIDE5MzYxLCAxOTM2NSwgMTkzNjksIDE5MzczLCAxOTM3NywgMTkzODEsIAotICAgIDE5Mzg1LCAxOTM4OSwgMTkzOTMsIDE5Mzk3LCAxOTQwMSwgMTk0MDUsIDE5NDA5LCAxOTQxMywgMTk0MTcsIDE5NDIxLCAKLSAgICAxOTQyNSwgMTk0MjksIDE5NDMzLCAxOTQzNywgMTk0NDEsIDE5NDQ1LCAxOTQ0OSwgMTk0NTMsIDE5NDU3LCAxOTQ2MSwgCi0gICAgMTk0NjUsIDE5NDY5LCAxOTQ3MywgMTk0NzcsIDE5NDgxLCAxOTQ4NSwgMTk0ODksIDE5NDkzLCAxOTQ5NywgMTk1MDEsIAotICAgIDE5NTA1LCAxOTUwOSwgMTk1MTMsIDE5NTE3LCAxOTUyMSwgMTk1MjUsIDE5NTI5LCAxOTUzMywgMTk1MzcsIDE5NTQxLCAKLSAgICAxOTU0NSwgMTk1NDksIDE5NTUzLCAxOTU1NywgMTk1NjEsIDE5NTY1LCAxOTU2OSwgMTk1NzMsIDE5NTc3LCAxOTU4MSwgCi0gICAgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAxOTYwNSwgMTk2MDksIDE5NjEzLCAxOTYxNywgMTk2MjEsIAotICAgIDE5NjI1LCAxOTYyOSwgMTk2MzMsIDE5NjM3LCAxOTY0MSwgMTk2NDUsIDE5NjQ5LCAxOTY1MywgMTk2NTcsIDE5NjYxLCAKLSAgICAxOTY2NSwgMTk2NjksIDE5NjczLCAxOTY3NywgMTk2ODEsIDE5Njg0LCAxOTY4OCwgMTk2OTEsIDE5Njk1LCAxOTY5OSwgCi0gICAgMTk3MDIsIDE5NzA2LCAxOTcxMCwgMTk3MTMsIDE5NzE3LCAxOTcyMSwgMTk3MjUsIDE5NzI5LCAxOTczMiwgMTk3MzYsIAotICAgIDE5NzQwLCAxOTc0NCwgMTk3NDgsIDE5NzUyLCAxOTc1NiwgMTk3NTksIDE5NzYzLCAxOTc2NywgMTk3NzEsIDE5Nzc1LCAKLSAgICAxOTc3OSwgMTk3ODMsIDE5Nzg3LCAxOTc5MSwgMTk3OTUsIDE5Nzk5LCAxOTgwMywgMTk4MDcsIDE5ODExLCAxOTgxNSwgCi0gICAgMTk4MTksIDE5ODIzLCAxOTgyNywgMTk4MzEsIDE5ODM1LCAxOTgzOSwgMTk4NDMsIDE5ODQ3LCAxOTg1MSwgMTk4NTUsIAotICAgIDE5ODU5LCAxOTg2MywgMTk4NjcsIDE5ODcxLCAxOTg3NSwgMTk4NzksIDE5ODgzLCAxOTg4NywgMTk4OTEsIDE5ODk1LCAKLSAgICAxOTg5OSwgMTk5MDMsIDE5OTA3LCAxOTkxMSwgMTk5MTUsIDE5OTE5LCAxOTkyMywgMTk5MjcsIDE5OTMxLCAxOTkzNSwgCi0gICAgMTk5MzksIDE5OTQzLCAxOTk0NywgMTk5NTEsIDE5OTU1LCAxOTk1OSwgMTk5NjMsIDE5OTY3LCAxOTk3MSwgMTk5NzUsIAotICAgIDE5OTc5LCAxOTk4MywgMTk5ODcsIDE5OTkxLCAxOTk5NSwgMTk5OTksIDIwMDAzLCAyMDAwNywgMjAwMTEsIDIwMDE1LCAKLSAgICAyMDAxOSwgMjAwMjMsIDIwMDI3LCAyMDAzMSwgMjAwMzUsIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAyMDA1NSwgCi0gICAgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgMjAwOTUsIAotICAgIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIDIwMTM1LCAKLSAgICAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAyMDE3NSwgCi0gICAgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAyMDE5OSwgMjAyMDMsIDIwMjA3LCAyMDIxMSwgMjAyMTUsIAotICAgIDIwMjE5LCAyMDIyMywgMjAyMjcsIDIwMjMxLCAyMDIzNSwgMjAyMzksIDIwMjQzLCAyMDI0NywgMjAyNTEsIDIwMjU1LCAKLSAgICAyMDI1OSwgMjAyNjMsIDIwMjY3LCAyMDI3MSwgMjAyNzUsIDIwMjc5LCAyMDI4MywgMjAyODcsIDIwMjkxLCAyMDI5NSwgCi0gICAgMjAyOTksIDIwMzAzLCAyMDMwNywgMjAzMTEsIDIwMzE0LCAyMDMxOCwgMjAzMjIsIDIwMzI2LCAyMDMzMCwgMjAzMzQsIAotICAgIDIwMzM4LCAyMDM0MiwgMjAzNDYsIDIwMzUwLCAyMDM1NCwgMjAzNTgsIDIwMzYyLCAyMDM2NiwgMjAzNzAsIDIwMzc0LCAKLSAgICAyMDM3OCwgMjAzODIsIDIwMzg2LCAyMDM5MCwgMjAzOTQsIDIwMzk4LCAyMDQwMiwgMjA0MDYsIDIwNDA5LCAyMDQxMywgCi0gICAgMjA0MTcsIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIAotICAgIDIwNDU3LCAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MiwgMjA0NzYsIDIwNDgwLCAyMDQ4NCwgMjA0ODgsIDIwNDkyLCAKLSAgICAyMDQ5NiwgMjA1MDAsIDIwNTA0LCAyMDUwOCwgMjA1MTIsIDIwNTE2LCAyMDUyMCwgMjA1MjQsIDIwNTI4LCAyMDUzMiwgCi0gICAgMjA1MzYsIDIwNTQwLCAyMDU0NCwgMjA1NDgsIDIwNTUyLCAyMDU1NiwgMjA1NjAsIDIwNTY0LCAyMDU2OCwgMjA1NzIsIAotICAgIDIwNTc2LCAyMDU4MCwgMjA1ODQsIDIwNTg4LCAyMDU5MiwgMjA1OTYsIDAsIDIwNjAwLCAyMDYwNCwgMjA2MDgsIDIwNjEyLCAKLSAgICAwLCAwLCAyMDYxNiwgMjA2MjAsIDIwNjI0LCAyMDYyOCwgMjA2MzIsIDIwNjM2LCAyMDY0MCwgMCwgMjA2NDQsIDAsIAotICAgIDIwNjQ4LCAyMDY1MiwgMjA2NTYsIDIwNjYwLCAwLCAwLCAyMDY2NCwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIAotICAgIDIwNjg0LCAyMDY4OCwgMjA2OTIsIDIwNjk2LCAyMDcwMCwgMjA3MDQsIDIwNzA4LCAyMDcxMiwgMjA3MTYsIDIwNzIwLCAKLSAgICAyMDcyNCwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAyMDc0OCwgMjA3NTIsIDIwNzU1LCAyMDc1OSwgCi0gICAgMjA3NjMsIDIwNzY3LCAyMDc3MSwgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAyMDc5NSwgMjA3OTksIAotICAgIDIwODAzLCAyMDgwNywgMjA4MTEsIDIwODE1LCAyMDgxOSwgMjA4MjMsIDAsIDIwODI3LCAyMDgzMSwgMjA4MzUsIDIwODM5LCAKLSAgICAwLCAwLCAyMDg0MywgMjA4NDYsIDIwODUwLCAyMDg1NCwgMjA4NTgsIDIwODYyLCAyMDg2NiwgMjA4NzAsIDIwODc0LCAKLSAgICAyMDg3OCwgMjA4ODIsIDIwODg2LCAyMDg5MCwgMjA4OTQsIDIwODk4LCAyMDkwMiwgMjA5MDYsIDIwOTExLCAyMDkxNiwgCi0gICAgMjA5MjEsIDIwOTI3LCAyMDkzMywgMjA5MzgsIDIwOTQzLCAyMDk0OSwgMjA5NTIsIDIwOTU2LCAyMDk2MCwgMjA5NjQsIAotICAgIDIwOTY4LCAyMDk3MiwgMjA5NzYsIDIwOTgwLCAwLCAyMDk4NCwgMjA5ODgsIDIwOTkyLCAyMDk5NiwgMCwgMCwgMjEwMDAsIAotICAgIDIxMDA0LCAyMTAwOCwgMjEwMTIsIDIxMDE2LCAyMTAyMCwgMjEwMjQsIDAsIDIxMDI4LCAwLCAyMTAzMiwgMjEwMzYsIAotICAgIDIxMDQwLCAyMTA0NCwgMCwgMCwgMjEwNDgsIDIxMDUyLCAyMTA1NiwgMjEwNjAsIDIxMDY0LCAyMTA2OCwgMjEwNzIsIAotICAgIDIxMDc2LCAyMTA4MCwgMjEwODUsIDIxMDkwLCAyMTA5NSwgMjExMDEsIDIxMTA3LCAyMTExMiwgMCwgMjExMTcsIDIxMTIxLCAKLSAgICAyMTEyNSwgMjExMjksIDIxMTMzLCAyMTEzNywgMjExNDEsIDIxMTQ1LCAyMTE0OSwgMjExNTMsIDIxMTU3LCAyMTE2MSwgCi0gICAgMjExNjUsIDIxMTY5LCAyMTE3MywgMjExNzcsIDIxMTgxLCAyMTE4NCwgMjExODgsIDIxMTkyLCAyMTE5NiwgMjEyMDAsIAotICAgIDIxMjA0LCAyMTIwOCwgMjEyMTIsIDIxMjE2LCAyMTIyMCwgMjEyMjQsIDIxMjI4LCAyMTIzMiwgMjEyMzYsIDIxMjQwLCAKLSAgICAyMTI0NCwgMjEyNDgsIDIxMjUyLCAyMTI1NiwgMjEyNjAsIDIxMjY0LCAyMTI2OCwgMjEyNzIsIDIxMjc2LCAyMTI4MCwgCi0gICAgMjEyODQsIDIxMjg4LCAyMTI5MiwgMjEyOTYsIDIxMzAwLCAyMTMwNCwgMjEzMDgsIDIxMzEyLCAyMTMxNiwgMjEzMjAsIAotICAgIDIxMzI0LCAyMTMyOCwgMjEzMzIsIDIxMzM2LCAyMTM0MCwgMCwgMjEzNDQsIDIxMzQ4LCAyMTM1MiwgMjEzNTYsIDAsIDAsIAotICAgIDIxMzYwLCAyMTM2NCwgMjEzNjgsIDIxMzcyLCAyMTM3NiwgMjEzODAsIDIxMzg0LCAyMTM4OCwgMjEzOTIsIDIxMzk2LCAKLSAgICAyMTQwMCwgMjE0MDQsIDIxNDA4LCAyMTQxMiwgMjE0MTYsIDIxNDIwLCAyMTQyNCwgMjE0MjgsIDIxNDMyLCAyMTQzNiwgCi0gICAgMjE0NDAsIDIxNDQ0LCAyMTQ0OCwgMjE0NTIsIDIxNDU2LCAyMTQ2MCwgMjE0NjQsIDIxNDY4LCAyMTQ3MiwgMjE0NzYsIAotICAgIDIxNDgwLCAyMTQ4NCwgMjE0ODgsIDIxNDkyLCAyMTQ5NiwgMjE1MDAsIDIxNTA0LCAyMTUwOCwgMjE1MTIsIDIxNTE2LCAKLSAgICAyMTUyMCwgMjE1MjQsIDIxNTI4LCAyMTUzMiwgMjE1MzYsIDIxNTQwLCAyMTU0NCwgMjE1NDgsIDIxNTUyLCAyMTU1NiwgCi0gICAgMjE1NjAsIDIxNTY0LCAyMTU2OCwgMjE1NzIsIDIxNTc2LCAyMTU4MCwgMjE1ODQsIDIxNTg3LCAyMTU5MSwgMjE1OTUsIAotICAgIDIxNTk5LCAyMTYwMywgMjE2MDcsIDIxNjExLCAyMTYxNSwgMjE2MTksIDIxNjIzLCAwLCAwLCAyMTYyNywgMjE2MzYsIAotICAgIDIxNjQyLCAyMTY0NywgMjE2NTEsIDIxNjU0LCAyMTY1OSwgMjE2NjIsIDIxNjY1LCAyMTY2OCwgMjE2NzMsIDIxNjc3LCAKLSAgICAyMTY4MiwgMjE2ODUsIDIxNjg4LCAyMTY5MSwgMjE2OTQsIDIxNjk3LCAyMTcwMCwgMjE3MDMsIDIxNzA2LCAyMTcwOSwgCi0gICAgMjE3MTMsIDIxNzE3LCAyMTcyMSwgMjE3MjUsIDIxNzI5LCAyMTczMywgMjE3MzcsIDIxNzQxLCAyMTc0NSwgMjE3NDksIDAsIAotICAgIDAsIDAsIDIxNzU1LCAyMTc2MSwgMjE3NjUsIDIxNzY5LCAyMTc3MywgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIAotICAgIDIxNzk3LCAyMTgwMSwgMjE4MDUsIDIxODA5LCAyMTgxNSwgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzMsIDIxODM5LCAKLSAgICAyMTg0NSwgMjE4NTMsIDIxODU5LCAyMTg2NSwgMjE4NzEsIDIxODc3LCAyMTg4MywgMCwgMCwgMCwgMCwgMCwgMCwgMjE4ODksIAotICAgIDIxODkyLCAyMTg5NSwgMjE4OTgsIDIxOTAxLCAyMTkwNCwgMjE5MDgsIDIxOTEyLCAyMTkxNSwgMjE5MTksIDIxOTIzLCAKLSAgICAyMTkyNywgMjE5MzEsIDIxOTM1LCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAyMTk2MiwgCi0gICAgMjE5NjYsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAyMTk4NSwgMjE5ODksIDIxOTkzLCAyMTk5NywgMjIwMDEsIAotICAgIDIyMDA0LCAyMjAwOCwgMjIwMTIsIDIyMDE2LCAyMjAyMCwgMjIwMjQsIDIyMDI4LCAyMjAzMiwgMjIwMzYsIDIyMDQwLCAKLSAgICAyMjA0NCwgMjIwNDgsIDIyMDUyLCAyMjA1NiwgMjIwNjAsIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCi0gICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAotICAgIDIyMTIzLCAyMjEyNywgMjIxMzEsIDIyMTM1LCAyMjEzOSwgMjIxNDMsIDIyMTQ3LCAyMjE1MSwgMjIxNTUsIDIyMTU5LCAKLSAgICAyMjE2MywgMjIxNjcsIDIyMTcxLCAyMjE3NSwgMjIxNzksIDIyMTgzLCAyMjE4NywgMjIxOTEsIDIyMTk1LCAyMjE5OCwgCi0gICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMjE4LCAKLSAgICAyMjIyMiwgMjIyMjUsIDIyMjI5LCAyMjIzMiwgMjIyMzYsIDIyMjM5LCAyMjI0MywgMjIyNDksIDIyMjU0LCAyMjI1OCwgCi0gICAgMjIyNjEsIDIyMjY1LCAyMjI2OSwgMjIyNzQsIDIyMjc4LCAyMjI4MywgMjIyODcsIDIyMjkyLCAyMjI5NiwgMjIzMDEsIAotICAgIDIyMzA1LCAyMjMxMCwgMjIzMTYsIDIyMzIwLCAyMjMyNSwgMjIzMjksIDIyMzM0LCAyMjM0MCwgMjIzNDQsIDIyMzUwLCAKLSAgICAyMjM1NiwgMjIzNjAsIDIyMzY1LCAyMjM3MywgMjIzODEsIDIyMzg4LCAyMjM5MywgMjIzOTgsIDIyNDA3LCAyMjQxNCwgCi0gICAgMjI0MjEsIDIyNDI2LCAyMjQzMiwgMjI0MzYsIDIyNDQwLCAyMjQ0NCwgMjI0NDgsIDIyNDUyLCAyMjQ1NiwgMjI0NjAsIAotICAgIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDIyNDc4LCAyMjQ4MywgMjI0ODgsIDIyNDkxLCAyMjQ5NSwgMjI0OTksIDIyNTA0LCAKLSAgICAyMjUwOCwgMjI1MTMsIDIyNTE3LCAyMjUyMiwgMjI1MjYsIDIyNTMxLCAyMjUzNSwgMjI1NDAsIDIyNTQ0LCAyMjU0OSwgCi0gICAgMjI1NTMsIDIyNTU4LCAyMjU2NCwgMjI1NjgsIDIyNTczLCAyMjU3OCwgMjI1ODIsIDIyNTg2LCAyMjU5MCwgMjI1OTQsIAotICAgIDIyNTk3LCAyMjYwMSwgMjI2MDcsIDIyNjEyLCAyMjYxNywgMjI2MjEsIDIyNjI1LCAyMjYyOSwgMjI2MzQsIDIyNjM4LCAKLSAgICAyMjY0MywgMjI2NDcsIDIyNjUyLCAyMjY1NSwgMjI2NTksIDIyNjYzLCAyMjY2OCwgMjI2NzIsIDIyNjc3LCAyMjY4MSwgCi0gICAgMjI2ODYsIDIyNjkyLCAyMjY5NiwgMjI3MDAsIDIyNzA0LCAyMjcwOCwgMjI3MTIsIDIyNzE2LCAyMjcyMCwgMjI3MjQsIAotICAgIDIyNzI4LCAyMjczMiwgMjI3MzYsIDIyNzQyLCAyMjc0NSwgMjI3NDksIDIyNzUzLCAyMjc1OCwgMjI3NjIsIDIyNzY3LCAKLSAgICAyMjc3MSwgMjI3NzYsIDIyNzgwLCAyMjc4NSwgMjI3ODksIDIyNzk0LCAyMjc5OCwgMjI4MDMsIDIyODA3LCAyMjgxMiwgCi0gICAgMjI4MTgsIDIyODIyLCAyMjgyNiwgMjI4MzIsIDIyODM4LCAyMjg0NCwgMjI4NTAsIDIyODU0LCAyMjg1OCwgMjI4NjIsIAotICAgIDIyODY2LCAyMjg3MCwgMjI4NzQsIDIyODgwLCAyMjg4NCwgMjI4ODgsIDIyODkyLCAyMjg5NywgMjI5MDEsIDIyOTA2LCAKLSAgICAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyNCwgMjI5MjgsIDIyOTMzLCAyMjkzNywgMjI5NDIsIDIyOTQ2LCAyMjk1MSwgCi0gICAgMjI5NTcsIDIyOTYxLCAyMjk2NywgMjI5NzEsIDIyOTc1LCAyMjk3OSwgMjI5ODMsIDIyOTg3LCAyMjk5MSwgMjI5OTcsIAotICAgIDIzMDAwLCAyMzAwNCwgMjMwMDgsIDIzMDEzLCAyMzAxNywgMjMwMjIsIDIzMDI2LCAyMzAzMSwgMjMwMzUsIDIzMDQwLCAKLSAgICAyMzA0NCwgMjMwNDksIDIzMDUzLCAyMzA1OCwgMjMwNjIsIDIzMDY3LCAyMzA3MywgMjMwNzYsIDIzMDgwLCAyMzA4NCwgCi0gICAgMjMwODksIDIzMDk0LCAyMzA5OCwgMjMxMDIsIDIzMTA2LCAyMzExMCwgMjMxMTQsIDIzMTE4LCAyMzEyNCwgMjMxMjcsIAotICAgIDIzMTMxLCAyMzEzNSwgMjMxNDAsIDIzMTQ0LCAyMzE0OSwgMjMxNTMsIDIzMTU4LCAyMzE2NCwgMjMxNjcsIDIzMTcyLCAKLSAgICAyMzE3NiwgMjMxODAsIDIzMTg0LCAyMzE4OCwgMjMxOTIsIDIzMTk2LCAyMzIwMCwgMjMyMDYsIDIzMjEwLCAyMzIxNCwgCi0gICAgMjMyMTgsIDIzMjIzLCAyMzIyNywgMjMyMzIsIDIzMjM2LCAyMzI0MSwgMjMyNDUsIDIzMjUwLCAyMzI1NCwgMjMyNTksIAotICAgIDIzMjYzLCAyMzI2OCwgMjMyNzIsIDIzMjc3LCAyMzI4MCwgMjMyODQsIDIzMjg4LCAyMzI5MiwgMjMyOTYsIDIzMzAwLCAKLSAgICAyMzMwNCwgMjMzMDgsIDIzMzEyLCAyMzMxOCwgMjMzMjIsIDIzMzI2LCAyMzMzMCwgMjMzMzUsIDIzMzM5LCAyMzM0NCwgCi0gICAgMjMzNDgsIDIzMzUzLCAyMzM1NywgMjMzNjIsIDIzMzY2LCAyMzM3MSwgMjMzNzUsIDIzMzgwLCAyMzM4NCwgMjMzODksIAotICAgIDIzMzk1LCAyMzM5OCwgMjM0MDMsIDIzNDA3LCAyMzQxMiwgMjM0MTgsIDIzNDI0LCAyMzQzMCwgMjM0MzYsIDIzNDQyLCAKLSAgICAyMzQ0OCwgMjM0NTQsIDIzNDU4LCAyMzQ2MiwgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgMjM0NzgsIDIzNDgyLCAyMzQ4NiwgCi0gICAgMjM0OTEsIDIzNDk1LCAyMzUwMCwgMjM1MDQsIDIzNTA5LCAyMzUxMywgMjM1MTgsIDIzNTIyLCAyMzUyNywgMjM1MzEsIAotICAgIDIzNTM2LCAyMzU0MCwgMjM1NDUsIDIzNTQ5LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTczLCAKLSAgICAyMzU3OSwgMjM1ODIsIDIzNTg2LCAyMzU5MCwgMjM1OTUsIDIzNTk5LCAyMzYwNCwgMjM2MDgsIDIzNjEzLCAyMzYxNywgCi0gICAgMjM2MjIsIDIzNjI2LCAyMzYzMSwgMjM2MzUsIDIzNjQwLCAyMzY0NCwgMjM2NDksIDIzNjU1LCAyMzY1OSwgMjM2NjUsIAotICAgIDIzNjcwLCAyMzY3NiwgMjM2ODAsIDIzNjg2LCAyMzY5MSwgMjM2OTUsIDIzNjk5LCAyMzcwMywgMjM3MDcsIDIzNzExLCAKLSAgICAyMzcxNiwgMjM3MTksIDIzNzIzLCAyMzcyOCwgMjM3MzIsIDIzNzM3LCAyMzc0MCwgMjM3NDQsIDIzNzQ4LCAyMzc1MiwgCi0gICAgMjM3NTYsIDIzNzYwLCAyMzc2NCwgMjM3NjgsIDIzNzcyLCAyMzc3NiwgMjM3ODAsIDIzNzg0LCAyMzc4OSwgMjM3OTMsIAotICAgIDIzNzk3LCAyMzgwMywgMjM4MDcsIDIzODEzLCAyMzgxNywgMjM4MjMsIDIzODI3LCAyMzgzMSwgMjM4MzUsIDIzODM5LCAKLSAgICAyMzg0MywgMjM4NDgsIDIzODUyLCAyMzg1NiwgMjM4NjAsIDIzODY0LCAyMzg2OCwgMjM4NzIsIDIzODc2LCAyMzg4MCwgCi0gICAgMjM4ODQsIDIzODg4LCAyMzg5NCwgMjM5MDAsIDIzOTA2LCAyMzkxMiwgMjM5MTgsIDIzOTIzLCAyMzkyOSwgMjM5MzUsIAotICAgIDIzOTQxLCAyMzk0NSwgMjM5NDksIDIzOTUzLCAyMzk1NywgMjM5NjEsIDIzOTY1LCAyMzk2OSwgMjM5NzMsIDIzOTc3LCAKLSAgICAyMzk4MSwgMjM5ODUsIDIzOTg5LCAyMzk5MywgMjM5OTgsIDI0MDAzLCAyNDAwOCwgMjQwMTIsIDI0MDE2LCAyNDAyMCwgCi0gICAgMjQwMjQsIDI0MDI4LCAyNDAzMiwgMjQwMzYsIDI0MDQwLCAyNDA0NCwgMjQwNDgsIDI0MDU0LCAyNDA2MCwgMjQwNjYsIAotICAgIDI0MDcyLCAyNDA3OCwgMjQwODQsIDI0MDkwLCAyNDA5NiwgMjQxMDIsIDI0MTA2LCAyNDExMCwgMjQxMTQsIDI0MTE4LCAKLSAgICAyNDEyMiwgMjQxMjYsIDI0MTMwLCAyNDEzNiwgMjQxNDIsIDI0MTQ4LCAyNDE1NCwgMjQxNjAsIDI0MTY2LCAyNDE3MiwgCi0gICAgMjQxNzgsIDI0MTg0LCAyNDE4OSwgMjQxOTQsIDI0MTk5LCAyNDIwNCwgMjQyMTAsIDI0MjE2LCAyNDIyMiwgMjQyMjgsIAotICAgIDI0MjM0LCAyNDI0MCwgMjQyNDYsIDI0MjUxLCAyNDI1NywgMjQyNjMsIDI0MjY5LCAyNDI3NCwgMjQyODAsIDI0Mjg2LCAKLSAgICAyNDI5MiwgMjQyOTcsIDI0MzAyLCAyNDMwNywgMjQzMTIsIDI0MzE3LCAyNDMyMiwgMjQzMjcsIDI0MzMyLCAyNDMzNywgCi0gICAgMjQzNDIsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NiwgMjQzNzEsIDI0Mzc2LCAyNDM4MSwgMjQzODYsIAotICAgIDI0MzkxLCAyNDM5NiwgMjQ0MDEsIDI0NDA2LCAyNDQxMSwgMjQ0MTYsIDI0NDIxLCAyNDQyNiwgMjQ0MzEsIDI0NDM2LCAKLSAgICAyNDQ0MSwgMjQ0NDYsIDI0NDUxLCAyNDQ1NiwgMjQ0NjEsIDI0NDY2LCAyNDQ3MSwgMjQ0NzYsIDI0NDgxLCAyNDQ4NiwgCi0gICAgMjQ0OTEsIDI0NDk2LCAyNDUwMSwgMjQ1MDUsIDI0NTEwLCAyNDUxNSwgMjQ1MjAsIDI0NTI1LCAyNDUzMCwgMjQ1MzUsIAotICAgIDI0NTQwLCAyNDU0NSwgMjQ1NTAsIDI0NTU1LCAyNDU2MCwgMjQ1NjUsIDI0NTcwLCAyNDU3NSwgMjQ1ODAsIDI0NTg1LCAKLSAgICAyNDU5MCwgMjQ1OTUsIDI0NjAwLCAyNDYwNSwgMjQ2MTAsIDI0NjE1LCAyNDYyMCwgMjQ2MjUsIDI0NjMwLCAyNDYzNCwgCi0gICAgMjQ2MzksIDI0NjQ0LCAyNDY0OSwgMjQ2NTQsIDI0NjU5LCAyNDY2MywgMjQ2NjgsIDI0NjczLCAyNDY3OCwgMjQ2ODMsIAotICAgIDI0Njg4LCAyNDY5MiwgMjQ2OTcsIDI0NzAzLCAyNDcwOCwgMjQ3MTMsIDI0NzE4LCAyNDcyMywgMjQ3MjksIDI0NzM0LCAKLSAgICAyNDczOSwgMjQ3NDQsIDI0NzQ5LCAyNDc1NCwgMjQ3NTksIDI0NzY0LCAyNDc2OSwgMjQ3NzQsIDI0Nzc5LCAyNDc4NCwgCi0gICAgMjQ3ODksIDI0Nzk0LCAyNDc5OSwgMjQ4MDQsIDI0ODA5LCAyNDgxNCwgMjQ4MTksIDI0ODI0LCAyNDgyOSwgMjQ4MzQsIAotICAgIDI0ODM5LCAyNDg0NCwgMjQ4NDksIDI0ODU0LCAyNDg1OSwgMjQ4NjQsIDI0ODY5LCAyNDg3NCwgMjQ4NzksIDI0ODg0LCAKLSAgICAyNDg4OSwgMjQ4OTQsIDI0ODk5LCAyNDkwNCwgMjQ5MDksIDI0OTE0LCAyNDkxOSwgMjQ5MjQsIDI0OTI5LCAyNDkzNCwgCi0gICAgMjQ5MzksIDI0OTQ0LCAyNDk0OSwgMjQ5NTUsIDI0OTYwLCAyNDk2NSwgMjQ5NzAsIDI0OTc1LCAyNDk4MCwgMjQ5ODUsIAotICAgIDI0OTkwLCAyNDk5NSwgMjUwMDAsIDI1MDA1LCAyNTAxMCwgMjUwMTUsIDI1MDIwLCAyNTAyNSwgMjUwMzAsIDI1MDM1LCAKLSAgICAyNTA0MCwgMjUwNDUsIDI1MDUwLCAyNTA1NSwgMjUwNjAsIDI1MDY1LCAyNTA3MCwgMjUwNzUsIDI1MDgwLCAyNTA4NSwgCi0gICAgMjUwOTAsIDI1MDk1LCAyNTEwMCwgMjUxMDUsIDI1MTEwLCAyNTExNSwgMjUxMjAsIDI1MTI1LCAyNTEzMCwgMjUxMzUsIAotICAgIDI1MTQwLCAyNTE0NSwgMjUxNTEsIDI1MTU1LCAyNTE1OSwgMjUxNjMsIDI1MTY3LCAyNTE3MSwgMjUxNzUsIDI1MTc5LCAKLSAgICAyNTE4MywgMjUxODksIDI1MTk1LCAyNTIwMSwgMjUyMDcsIDI1MjEzLCAyNTIxOSwgMjUyMjUsIDI1MjMyLCAyNTIzOCwgCi0gICAgMjUyNDMsIDI1MjQ4LCAyNTI1MywgMjUyNTgsIDI1MjYzLCAyNTI2OCwgMjUyNzMsIDI1Mjc4LCAyNTI4MywgMjUyODgsIAotICAgIDI1MjkzLCAyNTI5OCwgMjUzMDMsIDI1MzA4LCAyNTMxMywgMjUzMTgsIDI1MzIzLCAyNTMyOCwgMjUzMzMsIDI1MzM4LCAKLSAgICAyNTM0MywgMjUzNDgsIDI1MzUzLCAyNTM1OCwgMjUzNjMsIDI1MzY4LCAyNTM3MywgMjUzNzgsIDAsIDAsIDAsIDI1Mzg1LCAKLSAgICAyNTM5NSwgMjUzOTksIDI1NDA2LCAyNTQxMCwgMjU0MTQsIDI1NDE4LCAyNTQyNiwgMjU0MzAsIDI1NDM1LCAyNTQ0MCwgCi0gICAgMjU0NDUsIDI1NDQ5LCAyNTQ1NCwgMjU0NTksIDI1NDYyLCAyNTQ2NiwgMjU0NzAsIDI1NDc5LCAyNTQ4MywgMjU0ODcsIAotICAgIDI1NDkzLCAyNTQ5NywgMjU1MDEsIDI1NTA5LCAyNTUxMywgMjU1MjEsIDI1NTI3LCAyNTUzMywgMjU1MzksIDI1NTQ1LCAKLSAgICAyNTU1NCwgMjU1NTksIDI1NTYzLCAyNTU3MiwgMjU1NzUsIDI1NTgxLCAyNTU4NSwgMjU1OTEsIDI1NTk2LCAyNTYwMiwgCi0gICAgMjU2MTAsIDI1NjE2LCAyNTYyMSwgMjU2MjgsIDI1NjMzLCAyNTYzNywgMjU2NDEsIDI1NjUxLCAyNTY1NywgMjU2NjEsIAotICAgIDI1NjcxLCAyNTY3NywgMjU2ODEsIDI1Njg1LCAyNTY5MiwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTgsIDI1NzIyLCAKLSAgICAyNTcyNiwgMjU3MzAsIDI1NzM4LCAyNTc0NSwgMjU3NDksIDI1NzUzLCAyNTc1NywgMjU3NjEsIDI1NzY1LCAyNTc2OSwgCi0gICAgMjU3NzMsIDI1Nzc3LCAyNTc4MSwgMjU3ODUsIDI1Nzg5LCAyNTc5NCwgMjU3OTksIDI1ODA0LCAyNTgwOCwgMjU4MTIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1ODE2LCAyNTgyMCwgMjU4MjQsIDI1ODI4LCAKLSAgICAyNTgzMiwgMjU4MzcsIDI1ODQyLCAyNTg0NywgMjU4NTIsIDI1ODU2LCAyNTg2MCwgMjU4NjUsIDI1ODY5LCAwLCAyNTg3MywgCi0gICAgMjU4NzgsIDI1ODgzLCAyNTg4OCwgMjU4OTIsIDI1ODk3LCAyNTkwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjU5MDcsIDI1OTExLCAyNTkxNSwgMjU5MTksIDI1OTIzLCAyNTkyOCwgMjU5MzMsIDI1OTM4LCAyNTk0MywgMjU5NDcsIAotICAgIDI1OTUxLCAyNTk1NiwgMjU5NjAsIDI1OTY0LCAyNTk2OCwgMjU5NzMsIDI1OTc4LCAyNTk4MywgMjU5ODcsIDI1OTkyLCAKLSAgICAyNTk5NywgMjYwMDIsIDI2MDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjAxMywgMjYwMTcsIDI2MDIxLCAKLSAgICAyNjAyNSwgMjYwMjksIDI2MDM0LCAyNjAzOSwgMjYwNDQsIDI2MDQ5LCAyNjA1MywgMjYwNTcsIDI2MDYyLCAyNjA2NiwgCi0gICAgMjYwNzAsIDI2MDc0LCAyNjA3OSwgMjYwODQsIDI2MDg5LCAyNjA5MywgMjYwOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2MTAzLCAyNjEwNywgMjYxMTEsIDI2MTE1LCAyNjExOSwgMjYxMjQsIDI2MTI5LCAyNjEzNCwgCi0gICAgMjYxMzksIDI2MTQzLCAyNjE0NywgMjYxNTIsIDI2MTU2LCAwLCAyNjE2MCwgMjYxNjUsIDI2MTcwLCAwLCAyNjE3NSwgCi0gICAgMjYxODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MTg1LCAyNjE4OCwgMjYxOTIsIDI2MTk2LCAKLSAgICAyNjIwMCwgMjYyMDQsIDI2MjA4LCAyNjIxMiwgMjYyMTYsIDI2MjIwLCAyNjIyNCwgMjYyMjgsIDI2MjMyLCAyNjIzNiwgCi0gICAgMjYyNDAsIDI2MjQ0LCAyNjI0OCwgMjYyNTIsIDI2MjU1LCAyNjI1OSwgMjYyNjMsIDI2MjY3LCAyNjI3MSwgMjYyNzUsIAotICAgIDI2Mjc5LCAyNjI4MywgMjYyODcsIDI2MjkxLCAyNjI5NSwgMjYyOTksIDI2MzAzLCAyNjMwNywgMjYzMTEsIDI2MzE0LCAKLSAgICAyNjMxOCwgMjYzMjIsIDI2MzI4LCAyNjMzNCwgMjYzNDAsIDI2MzQ2LCAyNjM1MiwgMjYzNTgsIDI2MzY0LCAyNjM3MCwgCi0gICAgMjYzNzYsIDI2MzgyLCAyNjM4OCwgMjYzOTQsIDI2NDAwLCAyNjQwNiwgMjY0MTUsIDI2NDI0LCAyNjQzMCwgMjY0MzYsIAotICAgIDI2NDQyLCAyNjQ0NywgMjY0NTEsIDI2NDU2LCAyNjQ2MSwgMjY0NjYsIDI2NDcwLCAyNjQ3NSwgMjY0ODAsIDI2NDg1LCAKLSAgICAyNjQ4OSwgMjY0OTQsIDI2NDk4LCAyNjUwMywgMjY1MDgsIDI2NTEzLCAyNjUxOCwgMjY1MjIsIDI2NTI2LCAyNjUzMCwgCi0gICAgMjY1MzQsIDI2NTM4LCAyNjU0MiwgMjY1NDYsIDI2NTUwLCAyNjU1NCwgMjY1NTgsIDI2NTY0LCAyNjU2OCwgMjY1NzIsIAotICAgIDI2NTc2LCAyNjU4MCwgMjY1ODQsIDI2NTkyLCAyNjU5OCwgMjY2MDIsIDI2NjA4LCAyNjYxMiwgMjY2MTgsIDI2NjIyLCAwLCAKLSAgICAwLCAyNjYyNiwgMjY2MzAsIDI2NjMzLCAyNjYzNiwgMjY2MzksIDI2NjQyLCAyNjY0NSwgMjY2NDgsIDI2NjUxLCAyNjY1NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjY2NTcsIDI2NjY1LCAyNjY3MywgMjY2ODEsIDI2Njg5LCAyNjY5NywgMjY3MDUsIDI2NzEzLCAKLSAgICAyNjcyMSwgMjY3MjksIDAsIDAsIDAsIDAsIDAsIDAsIDI2NzM3LCAyNjc0MCwgMjY3NDMsIDI2NzQ2LCAyNjc1MSwgMjY3NTQsIAotICAgIDI2NzU5LCAyNjc2NiwgMjY3NzQsIDI2Nzc5LCAyNjc4NiwgMjY3ODksIDI2Nzk2LCAyNjgwMywgMjY4MTAsIDAsIDI2ODE0LCAKLSAgICAyNjgxOCwgMjY4MjEsIDI2ODI0LCAyNjgyNywgMjY4MzAsIDI2ODMzLCAyNjgzNiwgMjY4MzksIDI2ODQyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNjg0NSwgMjY4NDgsIDI2ODUxLCAyNjg1NCwgMjY4NTcsIDI2ODYwLCAyNjg2NCwgMjY4NjgsIDI2ODcyLCAKLSAgICAyNjg3NSwgMjY4NzksIDI2ODgzLCAyNjg4NiwgMjY4OTAsIDI2ODk0LCAyNjg5NywgMjY5MDEsIDI2OTA1LCAyNjkwOSwgCi0gICAgMjY5MTMsIDI2OTE3LCAyNjkyMSwgMjY5MjUsIDI2OTI4LCAyNjkzMSwgMjY5MzUsIDI2OTM5LCAyNjk0MiwgMjY5NDYsIAotICAgIDI2OTUwLCAyNjk1NCwgMjY5NTgsIDI2OTYyLCAyNjk2NiwgMjY5NzAsIDI2OTc0LCAyNjk4MSwgMjY5ODYsIDI2OTkxLCAKLSAgICAyNjk5NiwgMjcwMDEsIDI3MDA3LCAyNzAxMywgMjcwMTksIDI3MDI1LCAyNzAzMCwgMjcwMzYsIDI3MDQyLCAyNzA0NywgCi0gICAgMjcwNTMsIDI3MDU5LCAyNzA2NSwgMjcwNzEsIDI3MDc3LCAyNzA4MiwgMjcwODgsIDI3MDkzLCAyNzA5OSwgMjcxMDUsIAotICAgIDI3MTExLCAyNzExNywgMjcxMjMsIDI3MTI4LCAyNzEzMywgMjcxMzksIDI3MTQ1LCAyNzE1MCwgMjcxNTYsIDI3MTYxLCAKLSAgICAyNzE2NywgMjcxNzIsIDI3MTc3LCAyNzE4MywgMjcxODksIDI3MTk1LCAyNzIwMSwgMjcyMDcsIDI3MjEzLCAyNzIxOSwgCi0gICAgMjcyMjUsIDI3MjMxLCAyNzIzNywgMjcyNDMsIDI3MjQ5LCAyNzI1NCwgMjcyNTksIDI3MjY0LCAyNzI3MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjcyNzYsIDI3Mjg1LCAyNzI5NCwgMjczMDIsIDI3MzEwLCAyNzMyMCwgMjczMjgsIDI3MzM3LCAKLSAgICAyNzM0NCwgMjczNTEsIDI3MzU4LCAyNzM2NiwgMjczNzQsIDI3MzgyLCAyNzM5MCwgMjczOTgsIDI3NDA2LCAyNzQxNCwgCi0gICAgMjc0MjIsIDI3NDI5LCAyNzQzNywgMjc0NDUsIDI3NDUzLCAyNzQ2MSwgMjc0NjksIDI3NDc5LCAyNzQ4OSwgMjc0OTksIAotICAgIDI3NTA5LCAyNzUxOSwgMjc1MjksIDI3NTM5LCAyNzU0OSwgMjc1NTksIDI3NTY5LCAyNzU3OSwgMjc1ODksIDI3NTk5LCAKLSAgICAyNzYwOSwgMjc2MTcsIDI3NjI1LCAyNzYzNSwgMjc2NDMsIDAsIDAsIDAsIDAsIDAsIDI3NjUzLCAyNzY1NywgMjc2NjEsIAotICAgIDI3NjY1LCAyNzY2OSwgMjc2NzMsIDI3Njc3LCAyNzY4MSwgMjc2ODUsIDI3Njg5LCAyNzY5MywgMjc2OTcsIDI3NzAxLCAKLSAgICAyNzcwNSwgMjc3MDksIDI3NzEzLCAyNzcxNywgMjc3MjEsIDI3NzI1LCAyNzcyOSwgMjc3MzMsIDI3NzM3LCAyNzc0MSwgCi0gICAgMjc3NDUsIDI3NzUxLCAyNzc1NSwgMjc3NjEsIDI3NzY1LCAyNzc3MSwgMjc3NzUsIDI3NzgxLCAyNzc4NSwgMjc3ODksIAotICAgIDI3NzkzLCAyNzc5NywgMjc4MDEsIDI3ODA1LCAyNzgxMSwgMjc4MTcsIDI3ODIzLCAyNzgyOSwgMjc4MzQsIDI3ODM5LCAKLSAgICAyNzg0NCwgMjc4NTAsIDI3ODU2LCAyNzg2MiwgMjc4NjgsIDI3ODc1LCAyNzg4MSwgMjc4ODYsIDI3ODkxLCAyNzg5NSwgCi0gICAgMjc4OTksIDI3OTAzLCAyNzkwNywgMjc5MTEsIDI3OTE1LCAyNzkxOSwgMjc5MjUsIDI3OTMxLCAyNzkzNywgMjc5NDIsIAotICAgIDI3OTQ5LCAyNzk1NCwgMjc5NTksIDI3OTY1LCAyNzk3MCwgMjc5NzcsIDI3OTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNzk5MCwgMjc5OTUsIDI3OTk4LCAyODAwMiwgMjgwMDYsIDI4MDEwLCAyODAxNCwgMjgwMTgsIDI4MDIyLCAKLSAgICAyODAyNiwgMjgwMzAsIDI4MDM0LCAyODAzOCwgMjgwNDIsIDI4MDQ2LCAyODA1MCwgMjgwNTMsIDI4MDU2LCAyODA2MCwgCi0gICAgMjgwNjQsIDI4MDY4LCAyODA3MSwgMjgwNzQsIDI4MDc3LCAyODA4MSwgMjgwODUsIDI4MDg5LCAyODA5MywgMjgwOTcsIDAsIAotICAgIDAsIDAsIDI4MTAwLCAyODEwNCwgMjgxMDgsIDI4MTEyLCAyODExNywgMjgxMjIsIDI4MTI3LCAyODEzMiwgMjgxMzYsIAotICAgIDI4MTQwLCAyODE0NSwgMjgxNTAsIDAsIDAsIDAsIDAsIDI4MTU2LCAyODE2MCwgMjgxNjUsIDI4MTcwLCAyODE3NSwgCi0gICAgMjgxNzksIDI4MTgzLCAyODE4NywgMjgxOTEsIDI4MTk2LCAyODIwMCwgMjgyMDQsIDAsIDAsIDAsIDAsIDI4MjA4LCAwLCAwLCAKLSAgICAwLCAyODIxMiwgMjgyMTYsIDI4MjIwLCAyODIyNCwgMjgyMjcsIDI4MjMwLCAyODIzMywgMjgyMzYsIDI4MjM5LCAyODI0MiwgCi0gICAgMjgyNDUsIDI4MjQ4LCAyODI1MSwgMjgyNTYsIDI4MjYyLCAyODI2OCwgMjgyNzQsIDI4MjgwLCAyODI4NSwgMjgyOTEsIAotICAgIDI4Mjk3LCAyODMwMywgMjgzMDgsIDI4MzE0LCAyODMxOSwgMjgzMjUsIDI4MzMxLCAyODMzNiwgMjgzNDIsIDI4MzQ4LCAKLSAgICAyODM1NCwgMjgzNTksIDI4MzY0LCAyODM2OSwgMjgzNzUsIDI4MzgxLCAyODM4NiwgMjgzOTIsIDI4Mzk3LCAyODQwMywgCi0gICAgMjg0MDgsIDI4NDE0LCAwLCAwLCAyODQyMCwgMjg0MjYsIDI4NDMyLCAyODQzOCwgMjg0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4NDUwLCAyODQ1NywgMjg0NjQsIDI4NDcwLCAyODQ3NywgMjg0ODQsIDI4NDkwLCAyODQ5NywgCi0gICAgMjg1MDQsIDI4NTExLCAyODUxOCwgMjg1MjQsIDI4NTMxLCAyODUzOCwgMjg1NDQsIDI4NTUxLCAyODU1OCwgMjg1NjQsIAotICAgIDI4NTcxLCAyODU3OCwgMjg1ODQsIDI4NTkwLCAyODU5NywgMjg2MDMsIDI4NjA5LCAyODYxNiwgMjg2MjIsIDI4NjI5LCAKLSAgICAyODYzNiwgMjg2NDMsIDI4NjUwLCAyODY1NywgMjg2NjQsIDI4NjcwLCAyODY3NywgMjg2ODQsIDI4NjkwLCAyODY5NywgCi0gICAgMjg3MDQsIDI4NzExLCAyODcxOCwgMjg3MjUsIDI4NzMyLCAyODczOSwgMCwgMCwgMCwgMCwgMjg3NDYsIDI4NzU0LCAKLSAgICAyODc2MSwgMjg3NjgsIDI4Nzc0LCAyODc4MSwgMjg3ODcsIDI4Nzk0LCAyODgwMCwgMjg4MDcsIDI4ODE0LCAyODgyMSwgCi0gICAgMjg4MjgsIDI4ODM1LCAyODg0MiwgMjg4NDksIDI4ODU2LCAyODg2MywgMjg4NzAsIDI4ODc3LCAyODg4MywgMjg4ODksIAotICAgIDI4ODk2LCAyODkwMywgMjg5MTAsIDI4OTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODkyMiwgMjg5MjgsIDI4OTMzLCAyODkzOCwgCi0gICAgMjg5NDMsIDI4OTQ4LCAyODk1MywgMjg5NTgsIDI4OTYzLCAyODk2OCwgMjg5NzMsIDAsIDAsIDAsIDI4OTc5LCAyODk4NSwgCi0gICAgMjg5OTEsIDI4OTk1LCAyOTAwMSwgMjkwMDcsIDI5MDEzLCAyOTAxOSwgMjkwMjUsIDI5MDMxLCAyOTAzNywgMjkwNDMsIAotICAgIDI5MDQ5LCAyOTA1NSwgMjkwNjEsIDI5MDY3LCAyOTA3MywgMjkwNzksIDI5MDg1LCAyOTA4OSwgMjkwOTUsIDI5MTAxLCAKLSAgICAyOTEwNywgMjkxMTMsIDI5MTE5LCAyOTEyNSwgMjkxMzEsIDI5MTM3LCAyOTE0MywgMjkxNDksIDI5MTU1LCAyOTE2MSwgCi0gICAgMjkxNjcsIDI5MTczLCAyOTE3OSwgMjkxODMsIDI5MTg4LCAyOTE5MywgMjkxOTgsIDI5MjAyLCAyOTIwNywgMjkyMTEsIAotICAgIDI5MjE2LCAyOTIyMSwgMjkyMjYsIDI5MjMwLCAyOTIzNSwgMjkyNDAsIDI5MjQ1LCAyOTI1MCwgMjkyNTUsIDI5MjU5LCAKLSAgICAyOTI2MywgMjkyNjgsIDI5MjczLCAyOTI3OCwgMjkyODIsIDI5Mjg2LCAyOTI5MSwgMjkyOTYsIDI5MzAxLCAyOTMwNiwgMCwgCi0gICAgMCwgMjkzMTIsIDI5MzE2LCAyOTMyMywgMjkzMjgsIDI5MzM0LCAyOTM0MCwgMjkzNDUsIDI5MzUxLCAyOTM1NywgMjkzNjIsIAotICAgIDI5MzY4LCAyOTM3NCwgMjkzODAsIDI5Mzg2LCAyOTM5MiwgMjkzOTcsIDI5NDAyLCAyOTQwOCwgMjk0MTMsIDI5NDE5LCAKLSAgICAyOTQyNCwgMjk0MzAsIDI5NDM2LCAyOTQ0MiwgMjk0NDgsIDI5NDUyLCAyOTQ1NywgMjk0NjIsIDI5NDY4LCAyOTQ3NCwgCi0gICAgMjk0NzksIDI5NDg1LCAyOTQ5MSwgMjk0OTUsIDI5NTAwLCAyOTUwNSwgMjk1MDksIDI5NTE0LCAyOTUxOSwgMjk1MjQsIAotICAgIDI5NTI5LCAyOTUzNSwgMjk1NDEsIDI5NTQ3LCAyOTU1MiwgMjk1NTcsIDI5NTYxLCAyOTU2NiwgMjk1NzAsIDI5NTc1LCAKLSAgICAyOTU3OSwgMjk1ODQsIDI5NTg5LCAyOTU5NCwgMjk1OTksIDI5NjA2LCAyOTYxMywgMjk2MjEsIDI5NjMyLCAyOTY0MSwgCi0gICAgMjk2NDksIDI5NjU2LCAyOTY2NywgMjk2NzMsIDI5NjgwLCAwLCAyOTY4NywgMjk2OTIsIDI5Njk3LCAyOTcwNSwgMjk3MTEsIAotICAgIDI5NzE5LCAyOTcyNCwgMjk3MzAsIDI5NzM2LCAyOTc0MiwgMjk3NDcsIDI5NzUzLCAyOTc1OCwgMjk3NjUsIDI5NzcxLCAKLSAgICAyOTc3NiwgMjk3ODIsIDI5Nzg4LCAyOTc5NCwgMjk4MDEsIDI5ODA4LCAyOTgxNSwgMjk4MjAsIDI5ODI1LCAyOTgzMiwgCi0gICAgMjk4MzksIDI5ODQ2LCAyOTg1MywgMjk4NjAsIDAsIDAsIDI5ODY3LCAyOTg3NCwgMjk4ODEsIDI5ODg3LCAyOTg5MywgCi0gICAgMjk4OTksIDI5OTA1LCAyOTkxMSwgMjk5MTcsIDI5OTIzLCAyOTkyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMjk5MzUsIDI5OTQxLCAKLSAgICAyOTk0NiwgMjk5NTEsIDI5OTU2LCAyOTk2MSwgMjk5NjYsIDI5OTcxLCAyOTk3NiwgMjk5ODEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5OTg2LCAyOTk5MSwgMjk5OTYsIDMwMDAxLCAzMDAwNiwgMzAwMTEsIDMwMDE2LCAzMDAyNSwgMzAwMzIsIDMwMDM3LCAKLSAgICAzMDA0MiwgMzAwNDcsIDMwMDUyLCAzMDA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAwNjIsIDMwMDY4LCAKLSAgICAzMDA3NCwgMzAwNzgsIDMwMDgyLCAzMDA4NiwgMzAwOTAsIDMwMDk2LCAzMDEwMCwgMzAxMDYsIDMwMTEwLCAzMDExNiwgCi0gICAgMzAxMjIsIDMwMTMwLCAzMDEzNiwgMzAxNDQsIDMwMTQ4LCAzMDE1MiwgMzAxNTYsIDMwMTYyLCAzMDE2NSwgMzAxNzEsIAotICAgIDMwMTc1LCAzMDE4MSwgMzAxODUsIDMwMTg5LCAzMDE5NSwgMzAxOTksIDMwMjA1LCAzMDIwOSwgMzAyMTUsIDMwMjIzLCAKLSAgICAzMDIzMSwgMzAyMzksIDMwMjQ1LCAzMDI0OSwgMzAyNTUsIDMwMjU5LCAzMDI2NSwgMzAyNjgsIDMwMjcxLCAzMDI3NywgCi0gICAgMzAyODEsIDMwMjg3LCAzMDI5MCwgMzAyOTMsIDMwMjk2LCAzMDMwMCwgMzAzMDQsIDMwMzEwLCAzMDMxNiwgMzAzMjAsIAotICAgIDMwMzIzLCAzMDMyNywgMzAzMzIsIDMwMzM3LCAzMDM0NCwgMzAzNDksIDMwMzU2LCAzMDM2MywgMzAzNzIsIDMwMzc5LCAKLSAgICAzMDM4OCwgMzAzOTMsIDMwNDAwLCAzMDQwNywgMzA0MTYsIDMwNDIxLCAzMDQyOCwgMzA0MzMsIDMwNDM5LCAzMDQ0NSwgCi0gICAgMzA0NTEsIDMwNDU3LCAzMDQ2MywgMzA0NjksIDAsIDAsIDAsIDAsIDMwNDc1LCAzMDQ3OSwgMzA0ODIsIDMwNDg1LCAKLSAgICAzMDQ4OCwgMzA0OTEsIDMwNDk0LCAzMDQ5NywgMzA1MDAsIDMwNTAzLCAzMDUwNiwgMzA1MDksIDMwNTEyLCAzMDUxNSwgCi0gICAgMzA1MjAsIDMwNTI1LCAzMDUzMCwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU2MCwgMzA1NjUsIAotICAgIDMwNTcwLCAzMDU3NSwgMzA1ODAsIDMwNTg3LCAzMDU5MywgMzA1OTksIDMwNjA1LCAzMDYxMSwgMzA2MTcsIDMwNjI2LCAKLSAgICAzMDYzNSwgMzA2NDEsIDMwNjQ3LCAzMDY1NiwgMzA2NjUsIDMwNjc0LCAzMDY4MywgMzA2OTIsIDMwNzAxLCAzMDcxMCwgCi0gICAgMzA3MTksIDAsIDAsIDAsIDMwNzI4LCAzMDczMywgMzA3MzgsIDMwNzQzLCAzMDc0NywgMzA3NTEsIDMwNzU1LCAzMDc2MCwgCi0gICAgMzA3NjQsIDMwNzY4LCAzMDc3MywgMzA3NzcsIDMwNzgyLCAzMDc4NywgMzA3OTIsIDMwNzk3LCAzMDgwMiwgMzA4MDcsIAotICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI2LCAzMDgzMCwgMzA4MzUsIDMwODQwLCAzMDg0NSwgMzA4NDksIDMwODUzLCAKLSAgICAzMDg1NywgMzA4NjIsIDMwODY3LCAzMDg3MiwgMzA4NzcsIDMwODgxLCAzMDg4OCwgMzA4OTUsIDMwOTAyLCAzMDkwOCwgCi0gICAgMzA5MTQsIDMwOTIwLCAzMDkyNiwgMzA5MzIsIDMwOTM4LCAwLCAwLCAwLCAzMDk0MywgMzA5NDgsIDMwOTUzLCAzMDk1OCwgCi0gICAgMzA5NjIsIDMwOTY2LCAzMDk3MCwgMzA5NzQsIDMwOTc4LCAzMDk4MiwgMzA5ODYsIDMwOTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDk5NCwgMzA5OTgsIDMxMDA0LCAzMTAwOCwgMzEwMTQsIDMxMDIwLCAzMTAyNSwgMzEwMzIsIDMxMDM2LCAzMTA0MiwgCi0gICAgMzEwNDYsIDMxMDUyLCAzMTA1NywgMzEwNjQsIDMxMDcxLCAzMTA3NiwgMzEwODMsIDMxMDg4LCAzMTA5MywgMzEwOTcsIAotICAgIDMxMTAzLCAzMTEwNywgMzExMTMsIDMxMTIwLCAzMTEyNywgMzExMzIsIDMxMTM5LCAzMTE0NiwgMzExNTAsIDMxMTU2LCAKLSAgICAzMTE2MSwgMzExNjYsIDMxMTczLCAzMTE3OCwgMzExODMsIDMxMTg4LCAzMTE5MywgMzExOTcsIDMxMjAxLCAzMTIwNiwgCi0gICAgMzEyMTEsIDMxMjE4LCAzMTIyNCwgMzEyMjksIDMxMjM2LCAzMTI0MSwgMzEyNDgsIDMxMjUzLCAzMTI2MywgMzEyNzAsIAotICAgIDMxMjc3LCAzMTI4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyODUsIDMxMjk0LCAzMTMwMSwgMzEzMDgsIDMxMzE1LCAKLSAgICAzMTMxOCwgMzEzMjIsIDMxMzI2LCAzMTMzMCwgMzEzMzQsIDMxMzM4LCAzMTM0MiwgMzEzNDYsIDMxMzUwLCAzMTM1NCwgCi0gICAgMzEzNTgsIDMxMzYyLCAzMTM2NiwgMzEzNjksIDMxMzcyLCAzMTM3NiwgMzEzODAsIDMxMzg0LCAzMTM4OCwgMzEzOTIsIAotICAgIDMxMzk2LCAzMTM5OSwgMzE0MDMsIDMxNDA3LCAzMTQxMSwgMzE0MTUsIDMxNDE4LCAzMTQyMSwgMzE0MjUsIDMxNDI4LCAKLSAgICAzMTQzMiwgMzE0MzYsIDMxNDQwLCAzMTQ0NCwgMzE0NDgsIDMxNDUxLCAzMTQ1NiwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgCi0gICAgMzE0NzQsIDMxNDc5LCAzMTQ4MywgMzE0ODgsIDMxNDkyLCAzMTQ5OCwgMzE1MDMsIDMxNTA4LCAzMTUxMywgMzE1MTksIAotICAgIDMxNTI0LCAzMTUzMCwgMzE1MzYsIDMxNTQyLCAzMTU0NiwgMCwgMCwgMCwgMzE1NTAsIDMxNTU1LCAzMTU2NCwgMzE1NjksIAotICAgIDMxNTc2LCAzMTU4MSwgMzE1ODUsIDMxNTg4LCAzMTU5MSwgMzE1OTQsIDMxNTk3LCAzMTYwMCwgMzE2MDMsIDMxNjA2LCAKLSAgICAzMTYwOSwgMCwgMCwgMCwgMzE2MTIsIDMxNjE2LCAzMTYyMCwgMzE2MjQsIDMxNjMxLCAzMTYzNywgMzE2NDMsIDMxNjQ5LCAKLSAgICAzMTY1NSwgMzE2NjEsIDMxNjY3LCAzMTY3MywgMzE2NzksIDMxNjg1LCAzMTY5MiwgMzE2OTksIDMxNzA2LCAzMTcxMywgCi0gICAgMzE3MjAsIDMxNzI3LCAzMTczNCwgMzE3NDEsIDMxNzQ4LCAzMTc1NSwgMzE3NjIsIDMxNzY5LCAzMTc3NiwgMzE3ODMsIAotICAgIDMxNzkwLCAzMTc5NywgMzE4MDQsIDMxODExLCAzMTgxOCwgMzE4MjUsIDMxODMyLCAzMTgzOSwgMzE4NDYsIDMxODUzLCAKLSAgICAzMTg2MCwgMzE4NjcsIDMxODc0LCAzMTg4MSwgMzE4ODgsIDMxODk1LCAzMTkwMywgMzE5MTEsIDMxOTE5LCAzMTkyNSwgCi0gICAgMzE5MzEsIDMxOTM3LCAzMTk0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5NTQsIDMxOTU5LCAzMTk2NCwgMzE5NjksIAotICAgIDMxOTc0LCAzMTk4MywgMzE5OTQsIDMyMDAzLCAzMjAxNCwgMzIwMjAsIDMyMDMzLCAzMjAzOSwgMzIwNDYsIDMyMDUzLCAKLSAgICAzMjA1OCwgMzIwNjQsIDMyMDcwLCAzMjA4MSwgMzIwOTAsIDMyMDk3LCAzMjEwNCwgMzIxMTMsIDMyMTIwLCAzMjEyOSwgCi0gICAgMzIxMzksIDMyMTQ5LCAzMjE1NiwgMzIxNjMsIDMyMTcwLCAzMjE4MCwgMzIxODUsIDMyMTkzLCAzMjE5OSwgMzIyMDcsIAotICAgIDMyMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyMSwgMzIyMjYsIDMyMjMyLCAzMjIzOSwgCi0gICAgMzIyNDcsIDMyMjUzLCAzMjI1OSwgMzIyNjUsIDMyMjcwLCAzMjI3OCwgMzIyODQsIDMyMjkwLCAzMjI5NiwgMzIzMDQsIAotICAgIDMyMzA5LCAzMjMxNiwgMzIzMjEsIDMyMzI4LCAzMjMzNCwgMzIzNDIsIDMyMzUwLCAzMjM1NywgMzIzNjMsIDMyMzcwLCAKLSAgICAzMjM3NywgMzIzODMsIDMyMzkwLCAzMjM5NywgMzI0MDMsIDMyNDA4LCAzMjQxNCwgMzI0MjIsIDMyNDMwLCAzMjQzNiwgCi0gICAgMzI0NDIsIDMyNDQ4LCAzMjQ1NCwgMzI0NjIsIDMyNDY2LCAzMjQ3MiwgMzI0NzgsIDMyNDg0LCAzMjQ5MCwgMzI0OTYsIAotICAgIDMyNTAyLCAzMjUwNiwgMzI1MTEsIDMyNTE2LCAzMjUyMywgMzI1MjgsIDMyNTMyLCAzMjUzOCwgMzI1NDMsIDMyNTQ4LCAKLSAgICAzMjU1MiwgMzI1NTcsIDMyNTYyLCAzMjU2NiwgMzI1NzAsIDMyNTc0LCAzMjU4MCwgMzI1ODQsIDMyNTg5LCAzMjU5NCwgCi0gICAgMzI1OTgsIDMyNjAzLCAzMjYwNywgMzI2MTIsIDMyNjE2LCAzMjYyMiwgMzI2MjcsIDMyNjM0LCAzMjYzOSwgMzI2NDQsIAotICAgIDMyNjQ4LCAzMjY1MywgMzI2NTksIDMyNjY3LCAzMjY3MiwgMzI2NzgsIDMyNjgzLCAzMjY4NywgMzI2OTIsIDMyNjk2LCAKLSAgICAzMjcwMiwgMzI3MDksIDMyNzE2LCAzMjcyMSwgMzI3MjYsIDMyNzMwLCAzMjczNiwgMzI3NDIsIDMyNzQ3LCAzMjc1MiwgCi0gICAgMzI3NTcsIDMyNzYzLCAzMjc2OCwgMzI3NzQsIDMyNzc5LCAzMjc4NSwgMzI3OTEsIDMyNzk3LCAzMjgwNCwgMzI4MTEsIAotICAgIDMyODE4LCAzMjgyNSwgMzI4MzIsIDMyODM5LCAzMjg0NCwgMzI4NTMsIDMyODYzLCAzMjg3MywgMzI4ODMsIDMyODkzLCAKLSAgICAzMjkwMywgMzI5MTMsIDMyOTI2LCAzMjkzNiwgMzI5NDYsIDMyOTU2LCAzMjk2MywgMzI5NjgsIDMyOTc1LCAzMjk4MywgCi0gICAgMzI5OTEsIDMyOTk4LCAzMzAwNSwgMzMwMTIsIDMzMDE5LCAzMzAyNywgMzMwMzYsIDMzMDQ1LCAzMzA1NCwgMzMwNjMsIAotICAgIDMzMDcyLCAzMzA4MSwgMzMwOTAsIDMzMDk5LCAzMzEwOCwgMzMxMTcsIDMzMTI2LCAzMzEzNSwgMzMxNDQsIDMzMTUzLCAKLSAgICAzMzE2MSwgMzMxNzAsIDMzMTgxLCAzMzE4OSwgMzMxOTksIDMzMjExLCAzMzIyMCwgMzMyMjksIDMzMjM5LCAzMzI0OCwgCi0gICAgMzMyNTYsIDMzMjY1LCAzMzI3MiwgMzMyNzcsIDMzMjg1LCAzMzI5MCwgMzMyOTgsIDMzMzAzLCAzMzMxMiwgMzMzMTgsIAotICAgIDMzMzI1LCAzMzMzMiwgMzMzMzcsIDMzMzQyLCAzMzM1MCwgMzMzNTgsIDMzMzY3LCAzMzM3NiwgMzMzODEsIDMzMzg4LCAKLSAgICAzMzM5OSwgMzM0MDcsIDMzNDE2LCAzMzQyMSwgMzM0MjcsIDMzNDMyLCAzMzQzOSwgMzM0NDQsIDMzNDUzLCAzMzQ1OCwgCi0gICAgMzM0NjMsIDMzNDY4LCAzMzQ3NSwgMzM0ODIsIDMzNDg3LCAzMzQ5NiwgMzM1MDQsIDMzNTA5LCAzMzUxNCwgMzM1MjEsIAotICAgIDMzNTI4LCAzMzUzMiwgMzM1MzYsIDMzNTM5LCAzMzU0MiwgMzM1NDUsIDMzNTQ4LCAzMzU1MSwgMzM1NTQsIDMzNTYxLCAKLSAgICAzMzU2NCwgMzM1NjcsIDMzNTcyLCAzMzU3NiwgMzM1ODAsIDMzNTg0LCAzMzU4OCwgMzM1OTIsIDMzNjAyLCAzMzYwOCwgCi0gICAgMzM2MTQsIDMzNjIwLCAzMzYyOCwgMzM2MzYsIDMzNjQyLCAzMzY0OCwgMzM2NTUsIDMzNjYxLCAzMzY2NiwgMzM2NzIsIAotICAgIDMzNjc4LCAzMzY4MywgMzM2ODksIDMzNjk1LCAzMzcwMywgMzM3MDgsIDMzNzE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzcyMCwgMzM3MjcsIDMzNzM0LCAzMzczOSwgMzM3NDgsIAotICAgIDMzNzU2LCAzMzc2NCwgMzM3NzEsIDMzNzc4LCAzMzc4NSwgMzM3OTIsIDMzODAwLCAzMzgwOCwgMzM4MTgsIDMzODI4LCAKLSAgICAzMzgzNiwgMzM4NDQsIDMzODUyLCAzMzg2MCwgMzM4NjksIDMzODc4LCAzMzg4NiwgMzM4OTQsIDMzOTAzLCAzMzkxMiwgCi0gICAgMzM5MjIsIDMzOTMyLCAzMzk0MSwgMzM5NTAsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgyLCAzMzk5MiwgMzQwMDIsIAotICAgIDM0MDEwLCAzNDAxOCwgMzQwMjYsIDM0MDM0LCAzNDA0MiwgMzQwNTAsIDM0MDU4LCAzNDA2NiwgMzQwNzQsIDM0MDgyLCAKLSAgICAzNDA5MCwgMzQwOTgsIDM0MTA3LCAzNDExNiwgMzQxMjUsIDM0MTM0LCAzNDE0NCwgMzQxNTQsIDM0MTYxLCAzNDE2OCwgCi0gICAgMzQxNzYsIDM0MTg0LCAzNDE5MywgMzQyMDIsIDM0MjEwLCAzNDIxOCwgMzQyMzAsIDM0MjQyLCAzNDI1MSwgMzQyNjAsIAotICAgIDM0MjY5LCAzNDI3OCwgMzQyODUsIDM0MjkyLCAzNDMwMCwgMzQzMDgsIDM0MzE2LCAzNDMyNCwgMzQzMzIsIDM0MzQwLCAKLSAgICAzNDM0OCwgMzQzNTYsIDM0MzY1LCAzNDM3NCwgMzQzODMsIDM0MzkyLCAzNDQwMSwgMzQ0MTAsIDM0NDIwLCAzNDQzMCwgCi0gICAgMzQ0NDAsIDM0NDUwLCAzNDQ1OSwgMzQ0NjgsIDM0NDc1LCAzNDQ4MiwgMzQ0OTAsIDM0NDk4LCAzNDUwNiwgMzQ1MTQsIAotICAgIDM0NTIyLCAzNDUzMCwgMzQ1NDIsIDM0NTU0LCAzNDU2MywgMzQ1NzIsIDM0NTgwLCAzNDU4OCwgMzQ1OTYsIDM0NjA0LCAKLSAgICAzNDYxNSwgMzQ2MjYsIDM0NjM3LCAzNDY0OCwgMzQ2NjAsIDM0NjcyLCAzNDY4MCwgMzQ2ODgsIDM0Njk2LCAzNDcwNCwgCi0gICAgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ4LCAzNDc1NiwgMzQ3NjQsIDM0NzcyLCAzNDc4MCwgMzQ3ODgsIAotICAgIDM0Nzk3LCAzNDgwNiwgMzQ4MTYsIDM0ODI2LCAzNDgzNCwgMzQ4NDIsIDM0ODUwLCAzNDg1OCwgMzQ4NjYsIDM0ODc0LCAKLSAgICAzNDg4MSwgMzQ4ODgsIDM0ODk2LCAzNDkwNCwgMzQ5MTIsIDM0OTIwLCAzNDkyOCwgMzQ5MzYsIDM0OTQ0LCAzNDk1MiwgCi0gICAgMzQ5NjAsIDM0OTY4LCAzNDk3NiwgMzQ5ODQsIDM0OTkyLCAzNTAwMCwgMzUwMDgsIDM1MDE2LCAzNTAyNSwgMzUwMzQsIAotICAgIDM1MDQzLCAzNTA1MSwgMzUwNjAsIDM1MDY5LCAzNTA3OCwgMzUwODcsIDM1MDk3LCAzNTEwNiwgMzUxMTIsIDM1MTE3LCAKLSAgICAzNTEyNCwgMzUxMzEsIDM1MTM5LCAzNTE0NywgMzUxNTYsIDM1MTY1LCAzNTE3NSwgMzUxODUsIDM1MTk2LCAzNTIwNywgCi0gICAgMzUyMTcsIDM1MjI3LCAzNTIzNywgMzUyNDcsIDM1MjU2LCAzNTI2NSwgMzUyNzUsIDM1Mjg1LCAzNTI5NiwgMzUzMDcsIAotICAgIDM1MzE3LCAzNTMyNywgMzUzMzcsIDM1MzQ3LCAzNTM1NCwgMzUzNjEsIDM1MzY5LCAzNTM3NywgMzUzODQsIDM1MzkxLCAKLSAgICAzNTQwMCwgMzU0MDksIDM1NDE5LCAzNTQyOSwgMzU0NDAsIDM1NDUxLCAzNTQ2MSwgMzU0NzEsIDM1NDgxLCAzNTQ5MSwgCi0gICAgMzU1MDAsIDM1NTA5LCAzNTUxNywgMzU1MjUsIDM1NTMyLCAzNTUzOSwgMzU1NDcsIDM1NTU1LCAzNTU2NCwgMzU1NzMsIAotICAgIDM1NTgzLCAzNTU5MywgMzU2MDQsIDM1NjE1LCAzNTYyNSwgMzU2MzUsIDM1NjQ1LCAzNTY1NSwgMzU2NjQsIDM1NjczLCAKLSAgICAzNTY4MywgMzU2OTMsIDM1NzA0LCAzNTcxNSwgMzU3MjUsIDM1NzM1LCAzNTc0NSwgMzU3NTUsIDM1NzYyLCAzNTc2OSwgCi0gICAgMzU3NzcsIDM1Nzg1LCAzNTc5NCwgMzU4MDMsIDM1ODEzLCAzNTgyMywgMzU4MzQsIDM1ODQ1LCAzNTg1NSwgMzU4NjUsIAotICAgIDM1ODc1LCAzNTg4NSwgMzU4OTMsIDM1OTAxLCAzNTkwOSwgMzU5MTcsIDM1OTI2LCAzNTkzNSwgMzU5NDMsIDM1OTUxLCAKLSAgICAzNTk1OCwgMzU5NjUsIDM1OTcyLCAzNTk3OSwgMzU5ODcsIDM1OTk1LCAzNjAwMywgMzYwMTEsIDM2MDIyLCAzNjAzMiwgCi0gICAgMzYwNDMsIDM2MDUzLCAzNjA2NCwgMzYwNzQsIDM2MDgyLCAzNjA5MCwgMzYxMDEsIDM2MTExLCAzNjEyMiwgMzYxMzIsIAotICAgIDM2MTQzLCAzNjE1MywgMzYxNjEsIDM2MTY5LCAzNjE4MCwgMzYxOTAsIDM2MjAxLCAwLCAwLCAzNjIxMSwgMzYyMTksIAotICAgIDM2MjI3LCAzNjIzOCwgMzYyNDgsIDM2MjU5LCAwLCAwLCAzNjI2OSwgMzYyNzcsIDM2Mjg1LCAzNjI5NiwgMzYzMDYsIAotICAgIDM2MzE3LCAzNjMyNywgMzYzMzgsIDM2MzQ4LCAzNjM1NiwgMzYzNjQsIDM2Mzc1LCAzNjM4NSwgMzYzOTYsIDM2NDA2LCAKLSAgICAzNjQxNywgMzY0MjcsIDM2NDM1LCAzNjQ0MywgMzY0NTQsIDM2NDY0LCAzNjQ3NSwgMzY0ODUsIDM2NDk2LCAzNjUwNiwgCi0gICAgMzY1MTQsIDM2NTIyLCAzNjUzMywgMzY1NDMsIDM2NTU0LCAzNjU2NCwgMzY1NzUsIDM2NTg1LCAzNjU5MywgMzY2MDEsIAotICAgIDM2NjEyLCAzNjYyMiwgMzY2MzMsIDAsIDAsIDM2NjQzLCAzNjY1MSwgMzY2NTksIDM2NjcwLCAzNjY4MCwgMzY2OTEsIDAsIAotICAgIDAsIDM2NzAxLCAzNjcwOSwgMzY3MTcsIDM2NzI4LCAzNjczOCwgMzY3NDksIDM2NzU5LCAzNjc3MCwgMCwgMzY3ODAsIDAsIAotICAgIDM2Nzg4LCAwLCAzNjc5OCwgMCwgMzY4MDgsIDM2ODE4LCAzNjgyNiwgMzY4MzQsIDM2ODQ1LCAzNjg1NSwgMzY4NjYsIAotICAgIDM2ODc2LCAzNjg4NywgMzY4OTcsIDM2OTA1LCAzNjkxMywgMzY5MjQsIDM2OTM0LCAzNjk0NSwgMzY5NTUsIDM2OTY2LCAKLSAgICAzNjk3NiwgMzY5ODQsIDM2OTkyLCAzNzAwMCwgMzcwMDgsIDM3MDE2LCAzNzAyNCwgMzcwMzIsIDM3MDQwLCAzNzA0OCwgCi0gICAgMzcwNTYsIDM3MDY0LCAzNzA3MiwgMzcwODAsIDAsIDAsIDM3MDg4LCAzNzA5OSwgMzcxMDksIDM3MTIzLCAzNzEzNiwgCi0gICAgMzcxNTAsIDM3MTYzLCAzNzE3NywgMzcxOTAsIDM3MjAxLCAzNzIxMSwgMzcyMjUsIDM3MjM4LCAzNzI1MiwgMzcyNjUsIAotICAgIDM3Mjc5LCAzNzI5MiwgMzczMDMsIDM3MzEzLCAzNzMyNywgMzczNDAsIDM3MzU0LCAzNzM2NywgMzczODEsIDM3Mzk0LCAKLSAgICAzNzQwNSwgMzc0MTUsIDM3NDI5LCAzNzQ0MiwgMzc0NTYsIDM3NDY5LCAzNzQ4MywgMzc0OTYsIDM3NTA3LCAzNzUxNywgCi0gICAgMzc1MzEsIDM3NTQ0LCAzNzU1OCwgMzc1NzEsIDM3NTg1LCAzNzU5OCwgMzc2MDksIDM3NjE5LCAzNzYzMywgMzc2NDYsIAotICAgIDM3NjYwLCAzNzY3MywgMzc2ODcsIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI3LCAzNzczNSwgMCwgMzc3NDYsIDM3NzU0LCAKLSAgICAzNzc2NSwgMzc3NzMsIDM3NzgxLCAzNzc4OSwgMzc3OTcsIDM3ODA1LCAzNzgwOCwgMzc4MTEsIDM3ODE0LCAzNzgxNywgCi0gICAgMzc4MjMsIDM3ODM0LCAzNzg0MiwgMCwgMzc4NTMsIDM3ODYxLCAzNzg3MiwgMzc4ODAsIDM3ODg4LCAzNzg5NiwgMzc5MDQsIAotICAgIDM3OTEyLCAzNzkxOCwgMzc5MjQsIDM3OTMwLCAzNzkzOCwgMzc5NDYsIDM3OTU3LCAwLCAwLCAzNzk2OCwgMzc5NzYsIAotICAgIDM3OTg3LCAzNzk5NSwgMzgwMDMsIDM4MDExLCAwLCAzODAxOSwgMzgwMjQsIDM4MDI5LCAzODAzNCwgMzgwNDIsIDM4MDUwLCAKLSAgICAzODA2MSwgMzgwNzIsIDM4MDgwLCAzODA4OCwgMzgwOTYsIDM4MTA3LCAzODExNSwgMzgxMjMsIDM4MTMxLCAzODEzOSwgCi0gICAgMzgxNDcsIDM4MTUzLCAzODE1OSwgMCwgMCwgMzgxNjIsIDM4MTczLCAzODE4MSwgMCwgMzgxOTIsIDM4MjAwLCAzODIxMSwgCi0gICAgMzgyMTksIDM4MjI3LCAzODIzNSwgMzgyNDMsIDM4MjUxLCAzODI1NCwgMCwgMzgyNTcsIDM4MjYxLCAzODI2NSwgMzgyNjksIAotICAgIDM4MjczLCAzODI3NywgMzgyODEsIDM4Mjg1LCAzODI4OSwgMzgyOTMsIDM4Mjk3LCAzODMwMSwgMzgzMDcsIDM4MzEzLCAKLSAgICAzODMxOSwgMzgzMjIsIDM4MzI1LCAzODMyNywgMzgzMzEsIDM4MzM1LCAzODMzOSwgMzgzNDMsIDM4MzQ1LCAzODM0OSwgCi0gICAgMzgzNTMsIDM4MzU5LCAzODM2NSwgMzgzNzIsIDM4Mzc5LCAzODM4NCwgMzgzODksIDM4Mzk1LCAzODQwMSwgMzg0MDMsIAotICAgIDM4NDA2LCAzODQwOCwgMzg0MTIsIDM4NDE2LCAzODQyMCwgMzg0MjMsIDM4NDI3LCAzODQzMSwgMzg0MzUsIDM4NDM5LCAKLSAgICAzODQ0MywgMzg0NDksIDM4NDUzLCAzODQ1NywgMzg0NjMsIDM4NDY4LCAzODQ3NSwgMzg0NzcsIDM4NDgwLCAzODQ4NCwgCi0gICAgMzg0ODgsIDM4NDkzLCAzODQ5OSwgMzg1MDEsIDM4NTEwLCAzODUxOSwgMzg1MjIsIDM4NTI2LCAzODUyOCwgMzg1MzAsIAotICAgIDM4NTMyLCAzODUzNSwgMzg1NDEsIDM4NTQzLCAzODU0NywgMzg1NTEsIDM4NTU4LCAzODU2NSwgMzg1NjksIDM4NTc0LCAKLSAgICAzODU3OSwgMzg1ODQsIDM4NTg5LCAzODU5MywgMzg1OTcsIDM4NjAwLCAzODYwNCwgMzg2MDgsIDM4NjE1LCAzODYyMCwgCi0gICAgMzg2MjQsIDM4NjI4LCAzODYzMywgMzg2MzcsIDM4NjQxLCAzODY0NiwgMzg2NTEsIDM4NjU1LCAzODY1OSwgMzg2NjMsIAotICAgIDM4NjY1LCAzODY3MCwgMzg2NzUsIDM4Njc5LCAzODY4MywgMzg2ODcsIDM4NjkxLCAwLCAwLCAwLCAwLCAwLCAzODY5NSwgCi0gICAgMzg3MDEsIDM4NzA3LCAzODcxNCwgMzg3MjEsIDM4NzI2LCAzODczMSwgMzg3MzUsIDAsIDAsIDM4NzQxLCAzODc0NCwgCi0gICAgMzg3NDcsIDM4NzUwLCAzODc1MywgMzg3NTYsIDM4NzU5LCAzODc2MywgMzg3NjcsIDM4NzcyLCAzODc3NywgMzg3ODIsIAotICAgIDM4Nzg4LCAzODc5MiwgMzg3OTUsIDM4Nzk4LCAzODgwMSwgMzg4MDQsIDM4ODA3LCAzODgxMCwgMzg4MTMsIDM4ODE2LCAKLSAgICAzODgxOSwgMzg4MjMsIDM4ODI3LCAzODgzMiwgMzg4MzcsIDAsIDM4ODQyLCAzODg0OCwgMzg4NTQsIDM4ODYwLCAzODg2NywgCi0gICAgMzg4NzQsIDM4ODgxLCAzODg4OCwgMzg4OTQsIDM4OTAwLCAzODkwNiwgMzg5MTMsIDM4OTE5LCAwLCAwLCAwLCAzODkyNiwgCi0gICAgMzg5MjksIDM4OTMyLCAzODkzNSwgMzg5NDAsIDM4OTQzLCAzODk0NiwgMzg5NDksIDM4OTUyLCAzODk1NSwgMzg5NTgsIAotICAgIDM4OTYyLCAzODk2NSwgMzg5NjgsIDM4OTcxLCAzODk3NCwgMzg5NzcsIDM4OTgyLCAzODk4NSwgMzg5ODgsIDM4OTkxLCAKLSAgICAzODk5NCwgMzg5OTcsIDM5MDAyLCAzOTAwNSwgMzkwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MDEzLCAzOTAxOCwgMzkwMjMsIDM5MDMwLCAzOTAzOCwgMzkwNDMsIAotICAgIDM5MDQ4LCAzOTA1MiwgMzkwNTYsIDM5MDYxLCAzOTA2OCwgMzkwNzUsIDM5MDc5LCAzOTA4NCwgMzkwODksIDM5MDk0LCAKLSAgICAzOTA5OSwgMzkxMDYsIDM5MTExLCAzOTExNiwgMzkxMjEsIDM5MTMwLCAzOTEzNywgMzkxNDQsIDM5MTQ4LCAzOTE1MywgCi0gICAgMzkxNTksIDM5MTY0LCAzOTE3MSwgMzkxNzksIDM5MTg3LCAzOTE5MSwgMzkxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MTk5LCAzOTIwMywgMzkyMTEsIDM5MjE1LCAzOTIxOSwgMzkyMjQsIDM5MjI4LCAKLSAgICAzOTIzMiwgMzkyMzYsIDM5MjM4LCAzOTI0MiwgMzkyNDYsIDM5MjUwLCAzOTI1NSwgMzkyNTksIDM5MjYzLCAzOTI3MSwgCi0gICAgMzkyNzQsIDM5Mjc4LCAzOTI4MSwgMzkyODQsIDM5MjkwLCAzOTI5MywgMzkyOTYsIDM5MzAyLCAzOTMwNiwgMzkzMTAsIAotICAgIDM5MzE0LCAzOTMxNywgMzkzMjEsIDM5MzI0LCAzOTMyOCwgMzkzMzAsIDM5MzMzLCAzOTMzNiwgMzkzNDAsIDM5MzQyLCAKLSAgICAzOTM0NiwgMzkzNDksIDM5MzUyLCAzOTM1NywgMzkzNjIsIDM5MzY5LCAzOTM3MiwgMzkzNzUsIDM5Mzc5LCAzOTM4NCwgCi0gICAgMzkzODcsIDM5MzkwLCAzOTM5MywgMzkzOTcsIDM5NDAyLCAzOTQwNSwgMzk0MDgsIDM5NDEwLCAzOTQxMywgMzk0MTYsIAotICAgIDM5NDE5LCAzOTQyMywgMzk0MjgsIDM5NDMxLCAzOTQzNSwgMzk0MzksIDM5NDQzLCAzOTQ0NywgMzk0NTIsIDM5NDU4LCAKLSAgICAzOTQ2MywgMzk0NjgsIDM5NDc0LCAzOTQ3OSwgMzk0ODQsIDM5NDg4LCAzOTQ5MiwgMzk0OTcsIDM5NTAxLCAzOTUwNSwgCi0gICAgMzk1MDgsIDM5NTEwLCAzOTUxNSwgMzk1MjEsIDM5NTI4LCAzOTUzNSwgMzk1NDIsIDM5NTQ5LCAzOTU1NiwgMzk1NjMsIAotICAgIDM5NTcwLCAzOTU3NywgMzk1ODUsIDM5NTkyLCAzOTYwMCwgMzk2MDcsIDM5NjE0LCAzOTYyMiwgMzk2MzAsIDM5NjM1LCAKLSAgICAzOTY0MCwgMzk2NDUsIDM5NjUwLCAzOTY1NSwgMzk2NjAsIDM5NjY1LCAzOTY3MCwgMzk2NzUsIDM5NjgwLCAzOTY4NiwgCi0gICAgMzk2OTIsIDM5Njk4LCAzOTcwNCwgMzk3MTEsIDM5NzE5LCAzOTcyNiwgMzk3MzIsIDM5NzM4LCAzOTc0NCwgMzk3NTAsIAotICAgIDM5NzU2LCAzOTc2MiwgMzk3NjgsIDM5Nzc0LCAzOTc4MCwgMzk3ODcsIDM5Nzk0LCAzOTgwMSwgMzk4MDgsIDM5ODE2LCAKLSAgICAzOTgyNSwgMzk4MzMsIDM5ODQ0LCAzOTg1MiwgMzk4NjAsIDM5ODY5LCAzOTg3NiwgMzk4ODUsIDM5ODk0LCAzOTkwMiwgCi0gICAgMzk5MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OTE5LCAzOTkyMSwgMzk5MjQsIDM5OTI2LCAzOTkyOSwgMzk5MzIsIDM5OTM1LCAKLSAgICAzOTk0MCwgMzk5NDUsIDM5OTUwLCAzOTk1NSwgMzk5NTksIDM5OTYzLCAzOTk2NywgMzk5NzEsIDM5OTc2LCAzOTk4MiwgCi0gICAgMzk5ODcsIDM5OTkzLCAzOTk5OCwgNDAwMDMsIDQwMDA4LCA0MDAxNCwgNDAwMTksIDQwMDI1LCA0MDAzMSwgNDAwMzUsIAotICAgIDQwMDM5LCA0MDA0NCwgNDAwNDksIDQwMDU0LCA0MDA1OSwgNDAwNjQsIDQwMDcyLCA0MDA4MCwgNDAwODgsIDQwMDk2LCAKLSAgICA0MDEwMywgNDAxMTEsIDQwMTE4LCA0MDEyNSwgNDAxMzQsIDQwMTQ2LCA0MDE1MywgNDAxNjAsIDQwMTY3LCA0MDE3NCwgCi0gICAgNDAxODIsIDQwMTkwLCA0MDE5NywgNDAyMDQsIDQwMjEyLCA0MDIyMCwgNDAyMjUsIDQwMjMzLCA0MDIzOCwgNDAyNDMsIAotICAgIDQwMjQ5LCA0MDI1NCwgNDAyNjAsIDQwMjY3LCA0MDI3NCwgNDAyNzksIDQwMjg1LCA0MDI5MCwgNDAyOTMsIDQwMjk3LCAKLSAgICA0MDMwMCwgNDAzMDQsIDQwMzA4LCA0MDMxMiwgNDAzMTgsIDQwMzI0LCA0MDMzMCwgNDAzMzYsIDQwMzQwLCA0MDM0NCwgCi0gICAgNDAzNDgsIDQwMzUyLCA0MDM1OCwgNDAzNjQsIDQwMzY4LCA0MDM3MywgNDAzNzcsIDQwMzgyLCA0MDM4NywgNDAzOTIsIAotICAgIDQwMzk1LCA0MDM5OSwgNDA0MDIsIDQwNDA2LCA0MDQxMywgNDA0MjEsIDQwNDMyLCA0MDQ0MywgNDA0NDgsIDQwNDU3LCAKLSAgICA0MDQ2NCwgNDA0NzMsIDQwNDgyLCA0MDQ4NiwgNDA0OTIsIDQwNTAwLCA0MDUwNCwgNDA1MDksIDQwNTE0LCA0MDUyMCwgCi0gICAgNDA1MjYsIDQwNTMyLCA0MDUzOSwgNDA1NDMsIDQwNTQ3LCA0MDU1MiwgNDA1NTUsIDQwNTU3LCA0MDU2MSwgNDA1NjUsIAotICAgIDQwNTczLCA0MDU3NywgNDA1NzksIDQwNTgxLCA0MDU4NSwgNDA1OTMsIDQwNTk4LCA0MDYwNCwgNDA2MTQsIDQwNjIxLCAKLSAgICA0MDYyNiwgNDA2MzAsIDQwNjM0LCA0MDYzOCwgNDA2NDEsIDQwNjQ0LCA0MDY0NywgNDA2NTEsIDQwNjU1LCA0MDY1OSwgCi0gICAgNDA2NjMsIDQwNjY3LCA0MDY3MCwgNDA2NzQsIDQwNjc4LCA0MDY4MSwgNDA2ODMsIDQwNjg2LCA0MDY4OCwgNDA2OTIsIAotICAgIDQwNjk2LCA0MDY5OCwgNDA3MDQsIDQwNzA3LCA0MDcxMiwgNDA3MTYsIDQwNzIwLCA0MDcyMiwgNDA3MjQsIDQwNzI2LCAKLSAgICA0MDcyOSwgNDA3MzMsIDQwNzM3LCA0MDc0MSwgNDA3NDUsIDQwNzQ5LCA0MDc1NSwgNDA3NjEsIDQwNzYzLCA0MDc2NSwgCi0gICAgNDA3NjcsIDQwNzY5LCA0MDc3MiwgNDA3NzQsIDQwNzc4LCA0MDc4MCwgNDA3ODQsIDQwNzg4LCA0MDc5MywgNDA3OTcsIAotICAgIDQwODAxLCA0MDgwNSwgNDA4MDksIDQwODEzLCA0MDgxOSwgNDA4MjMsIDQwODMzLCA0MDg0MywgNDA4NDcsIDQwODUzLCAKLSAgICA0MDg1OSwgNDA4NjMsIDQwODY3LCA0MDg3MCwgNDA4NzUsIDQwODc5LCA0MDg4NSwgNDA4ODksIDQwOTAxLCA0MDkwOSwgCi0gICAgNDA5MTMsIDQwOTE3LCA0MDkyMywgNDA5MjcsIDQwOTMwLCA0MDkzMiwgNDA5MzUsIDQwOTM5LCA0MDk0MywgNDA5NTAsIAotICAgIDQwOTU0LCA0MDk1OCwgNDA5NjIsIDQwOTY1LCA0MDk3MCwgNDA5NzUsIDQwOTgwLCA0MDk4NSwgNDA5OTAsIDQwOTk1LCAKLSAgICA0MTAwMywgNDEwMTEsIDQxMDE1LCA0MTAxOSwgNDEwMjEsIDQxMDI2LCA0MTAzMCwgNDEwMzQsIDQxMDQyLCA0MTA1MCwgCi0gICAgNDEwNTYsIDQxMDYyLCA0MTA3MSwgNDEwODAsIDQxMDg1LCA0MTA5MCwgNDEwOTgsIDQxMTA2LCA0MTEwOCwgNDExMTAsIAotICAgIDQxMTE1LCA0MTEyMCwgNDExMjYsIDQxMTMyLCA0MTEzOCwgNDExNDQsIDQxMTQ4LCA0MTE1MiwgNDExNTksIDQxMTY2LCAKLSAgICA0MTE3MiwgNDExNzgsIDQxMTg4LCA0MTE5OCwgNDEyMDYsIDQxMjE0LCA0MTIxNiwgNDEyMjAsIDQxMjI0LCA0MTIyOSwgCi0gICAgNDEyMzQsIDQxMjQxLCA0MTI0OCwgNDEyNTEsIDQxMjU0LCA0MTI1NywgNDEyNjAsIDQxMjYzLCA0MTI2OCwgNDEyNzIsIAotICAgIDQxMjc3LCA0MTI4MiwgNDEyODUsIDQxMjg4LCA0MTI5MSwgNDEyOTQsIDQxMjk3LCA0MTMwMSwgNDEzMDQsIDQxMzA3LCAKLSAgICA0MTMxMCwgNDEzMTMsIDQxMzE1LCA0MTMxNywgNDEzMTksIDQxMzIxLCA0MTMyOSwgNDEzMzcsIDQxMzQzLCA0MTM0NywgCi0gICAgNDEzNTMsIDQxMzYzLCA0MTM2OSwgNDEzNzUsIDQxMzgxLCA0MTM4OSwgNDEzOTcsIDQxNDA4LCA0MTQxMiwgNDE0MTYsIAotICAgIDQxNDE4LCA0MTQyNCwgNDE0MjYsIDQxNDI4LCA0MTQzMCwgNDE0MzIsIDQxNDM4LCA0MTQ0MSwgNDE0NDcsIDQxNDUzLCAKLSAgICA0MTQ1NywgNDE0NjEsIDQxNDY1LCA0MTQ2OCwgNDE0NzIsIDQxNDc2LCA0MTQ3OCwgNDE0ODcsIDQxNDk2LCA0MTUwMSwgCi0gICAgNDE1MDYsIDQxNTEyLCA0MTUxOCwgNDE1MjQsIDQxNTI3LCA0MTUzMCwgNDE1MzMsIDQxNTM2LCA0MTUzOCwgNDE1NDMsIAotICAgIDQxNTQ4LCA0MTU1MywgNDE1NTksIDQxNTY1LCA0MTU3MywgNDE1ODEsIDQxNTg3LCA0MTU5MywgNDE1OTksIDQxNjA1LCAKLSAgICA0MTYxNCwgNDE2MjMsIDQxNjMyLCA0MTY0MSwgNDE2NTAsIDQxNjU5LCA0MTY2OCwgNDE2NzcsIDQxNjg2LCA0MTY5NSwgCi0gICAgNDE3MDMsIDQxNzE1LCA0MTcyNSwgNDE3NDAsIDQxNzQzLCA0MTc0OCwgNDE3NTQsIDQxNzYwLCA0MTc2NywgNDE3ODEsIAotICAgIDQxNzk2LCA0MTgwMiwgNDE4MDgsIDQxODE1LCA0MTgyMSwgNDE4MjksIDQxODM1LCA0MTg0OCwgNDE4NjIsIDQxODY3LCAKLSAgICA0MTg3MywgNDE4ODAsIDQxODgzLCA0MTg4NiwgNDE4ODgsIDQxODkxLCA0MTg5NCwgNDE4OTYsIDQxODk4LCA0MTkwMiwgCi0gICAgNDE5MDUsIDQxOTA4LCA0MTkxMSwgNDE5MTQsIDQxOTE5LCA0MTkyNCwgNDE5MjksIDQxOTM0LCA0MTkzOSwgNDE5NDIsIAotICAgIDQxOTQ0LCA0MTk0NiwgNDE5NDgsIDQxOTUyLCA0MTk1NiwgNDE5NjAsIDQxOTY2LCA0MTk3MSwgNDE5NzMsIDQxOTc1LCAKLSAgICA0MTk4MCwgNDE5ODUsIDQxOTkwLCA0MTk5NSwgNDIwMDAsIDQyMDA1LCA0MjAwNywgNDIwMDksIDQyMDE4LCA0MjAyMiwgCi0gICAgNDIwMzAsIDQyMDM5LCA0MjA0MSwgNDIwNDYsIDQyMDUxLCA0MjA1OSwgNDIwNjMsIDQyMDY1LCA0MjA2OSwgNDIwNzEsIAotICAgIDQyMDc1LCA0MjA3OSwgNDIwODMsIDQyMDg1LCA0MjA4NywgNDIwODksIDQyMDk0LCA0MjEwMSwgNDIxMDgsIDQyMTE1LCAKLSAgICA0MjEyMiwgNDIxMjksIDQyMTM2LCA0MjE0MywgNDIxNTAsIDQyMTU2LCA0MjE2MiwgNDIxNjksIDQyMTc2LCA0MjE4MywgCi0gICAgNDIxOTAsIDQyMTk2LCA0MjIwMiwgNDIyMDksIDQyMjE2LCA0MjIyMywgNDIyMzEsIDQyMjM4LCA0MjI0NiwgNDIyNTMsIAotICAgIDQyMjYxLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MSwgNDIyOTksIDQyMzA2LCA0MjMxNCwgNDIzMjEsIDQyMzI5LCAKLSAgICA0MjMzNiwgNDIzNDMsIDQyMzUwLCA0MjM1NywgNDIzNjQsIDQyMzcyLCA0MjM3OSwgNDIzODYsIDQyMzkzLCA0MjQwMSwgCi0gICAgNDI0MDgsIDQyNDE1LCA0MjQyMiwgNDI0MjksIDQyNDM3LCA0MjQ0NSwgNDI0NTIsIDQyNDU5LCA0MjQ2NSwgNDI0NzIsIAotICAgIDQyNDc3LCA0MjQ4NCwgNDI0OTEsIDQyNTAwLCA0MjUwNywgNDI1MTUsIDQyNTIzLCA0MjUyOCwgNDI1MzMsIDQyNTM4LCAKLSAgICA0MjU0NSwgNDI1NTIsIDQyNTU5LCA0MjU2NiwgNDI1NzEsIDQyNTc2LCA0MjU4NSwgNDI1OTEsIDQyNTk0LCA0MjYwMiwgCi0gICAgNDI2MDUsIDQyNjEwLCA0MjYxNSwgNDI2MTgsIDQyNjIxLCA0MjYyOSwgNDI2MzIsIDQyNjM3LCA0MjY0MCwgNDI2NDcsIAotICAgIDQyNjUyLCA0MjY2MCwgNDI2NjMsIDQyNjY2LCA0MjY2OSwgNDI2NzQsIDQyNjc5LCA0MjY4MiwgNDI2ODUsIDQyNjkzLCAKLSAgICA0MjY5NiwgNDI3MDEsIDQyNzA4LCA0MjcxMiwgNDI3MTYsIDQyNzIxLCA0MjcyNiwgNDI3MzIsIDQyNzM3LCA0Mjc0MywgCi0gICAgNDI3NDksIDQyNzU0LCA0Mjc2MCwgNDI3NjgsIDQyNzc0LCA0Mjc4MiwgNDI3OTAsIDQyNzk2LCA0MjgwNCwgNDI4MTIsIAotICAgIDQyODIxLCA0MjgyOSwgNDI4MzUsIDQyODQzLCA0Mjg1MiwgNDI4NjAsIDQyODY0LCA0Mjg2OSwgNDI4ODIsIDQyODk1LCAKLSAgICA0Mjg5OSwgNDI5MDMsIDQyOTA3LCA0MjkxMSwgNDI5MjEsIDQyOTI1LCA0MjkzMCwgNDI5MzUsIDQyOTQwLCA0Mjk0NSwgCi0gICAgNDI5NTAsIDQyOTU1LCA0Mjk2NSwgNDI5NzUsIDQyOTgzLCA0Mjk5MywgNDMwMDMsIDQzMDExLCA0MzAyMSwgNDMwMzEsIAotICAgIDQzMDM5LCA0MzA0OSwgNDMwNTksIDQzMDY3LCA0MzA3NSwgNDMwODUsIDQzMDk1LCA0MzA5OCwgNDMxMDEsIDQzMTA0LCAKLSAgICA0MzEwOSwgNDMxMTMsIDQzMTE5LCA0MzEyNiwgNDMxMzMsIDQzMTQxLCA0MzE0OCwgNDMxNTIsIDQzMTU2LCA0MzE2MCwgCi0gICAgNDMxNjQsIDQzMTY2LCA0MzE3MCwgNDMxNzQsIDQzMTc5LCA0MzE4NCwgNDMxOTEsIDQzMTk4LCA0MzIwMSwgNDMyMDgsIAotICAgIDQzMjEwLCA0MzIxMiwgNDMyMTYsIDQzMjIwLCA0MzIyNSwgNDMyMzEsIDQzMjM3LCA0MzI0MywgNDMyNDksIDQzMjU4LCAKLSAgICA0MzI2NywgNDMyNzYsIDQzMjgwLCA0MzI4MiwgNDMyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMjkzLCA0MzI5NywgNDMzMDQsIDQzMzExLCA0MzMxOCwgNDMzMjUsIDQzMzI5LCA0MzMzMywgNDMzMzcsIDQzMzQxLCAKLSAgICA0MzM0NiwgNDMzNTIsIDQzMzU3LCA0MzM2MywgNDMzNjksIDQzMzc1LCA0MzM4MSwgNDMzODksIDQzMzk2LCA0MzQwMywgCi0gICAgNDM0MTAsIDQzNDE3LCA0MzQyMiwgNDM0MjgsIDQzNDM3LCA0MzQ0MSwgNDM0NDgsIDQzNDUyLCA0MzQ1NiwgNDM0NjIsIAotICAgIDQzNDY4LCA0MzQ3NCwgNDM0ODAsIDQzNDg0LCA0MzQ4OCwgNDM0OTEsIDQzNDk1LCA0MzQ5OSwgNDM1MDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNTEzLCAKLSAgICA0MzUxNiwgNDM1MjAsIDQzNTI0LCA0MzUzMCwgNDM1MzYsIDQzNTQyLCA0MzU1MCwgNDM1NTcsIDQzNTYxLCA0MzU2OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1NzQsIDQzNTc3LCAKLSAgICA0MzU4MCwgNDM1ODMsIDQzNTg2LCA0MzU4OSwgNDM1OTIsIDQzNTk1LCA0MzU5OCwgNDM2MDEsIDQzNjA1LCA0MzYwOSwgCi0gICAgNDM2MTMsIDQzNjE3LCA0MzYyMSwgNDM2MjUsIDQzNjI5LCA0MzYzMywgNDM2MzcsIDQzNjQxLCA0MzY0NSwgNDM2NDgsIAotICAgIDQzNjUxLCA0MzY1NCwgNDM2NTcsIDQzNjYwLCA0MzY2MywgNDM2NjYsIDQzNjY5LCA0MzY3MiwgNDM2NzYsIDQzNjgwLCAKLSAgICA0MzY4NCwgNDM2ODgsIDQzNjkyLCA0MzY5NiwgNDM3MDAsIDQzNzA0LCA0MzcwOCwgNDM3MTIsIDQzNzE2LCA0MzcyMiwgCi0gICAgNDM3MjgsIDQzNzM0LCA0Mzc0MSwgNDM3NDgsIDQzNzU1LCA0Mzc2MiwgNDM3NjksIDQzNzc2LCA0Mzc4MywgNDM3OTAsIAotICAgIDQzNzk3LCA0MzgwNCwgNDM4MTEsIDQzODE4LCA0MzgyNSwgNDM4MzIsIDQzODM5LCA0Mzg0NiwgNDM4NTMsIDQzODU4LCAKLSAgICA0Mzg2NCwgNDM4NzAsIDQzODc2LCA0Mzg4MSwgNDM4ODcsIDQzODkzLCA0Mzg5OSwgNDM5MDQsIDQzOTEwLCA0MzkxNiwgCi0gICAgNDM5MjEsIDQzOTI2LCA0MzkzMSwgNDM5MzYsIDQzOTQyLCA0Mzk0OCwgNDM5NTMsIDQzOTU4LCA0Mzk2NCwgNDM5NjksIAotICAgIDQzOTc1LCA0Mzk4MSwgNDM5ODcsIDQzOTkzLCA0Mzk5OSwgNDQwMDQsIDQ0MDEwLCA0NDAxNiwgNDQwMjIsIDQ0MDI3LCAKLSAgICA0NDAzMywgNDQwMzksIDQ0MDQ1LCA0NDA1MCwgNDQwNTYsIDQ0MDYyLCA0NDA2NywgNDQwNzIsIDQ0MDc3LCA0NDA4MiwgCi0gICAgNDQwODgsIDQ0MDk0LCA0NDA5OSwgNDQxMDQsIDQ0MTEwLCA0NDExNSwgNDQxMjEsIDQ0MTI3LCA0NDEzMywgNDQxMzksIAotICAgIDQ0MTQ1LCA0NDE1MCwgNDQxNTYsIDQ0MTYyLCA0NDE2OCwgNDQxNzMsIDQ0MTc5LCA0NDE4NSwgNDQxOTEsIDQ0MTk2LCAKLSAgICA0NDIwMiwgNDQyMDgsIDQ0MjEzLCA0NDIxOCwgNDQyMjMsIDQ0MjI4LCA0NDIzNCwgNDQyNDAsIDQ0MjQ1LCA0NDI1MCwgCi0gICAgNDQyNTYsIDQ0MjYxLCA0NDI2NywgNDQyNzMsIDQ0Mjc5LCA0NDI4NSwgNDQyOTEsIDQ0Mjk1LCA0NDMwMCwgNDQzMDUsIAotICAgIDQ0MzEwLCA0NDMxNSwgNDQzMjAsIDQ0MzI1LCA0NDMzMCwgNDQzMzUsIDQ0MzQwLCA0NDM0NSwgNDQzNDksIDQ0MzUzLCAKLSAgICA0NDM1NywgNDQzNjEsIDQ0MzY1LCA0NDM2OSwgNDQzNzMsIDQ0Mzc3LCA0NDM4MSwgNDQzODYsIDQ0MzkxLCA0NDM5NiwgCi0gICAgNDQ0MDEsIDQ0NDA2LCA0NDQxMSwgNDQ0MjAsIDQ0NDI5LCA0NDQzOCwgNDQ0NDcsIDQ0NDU2LCA0NDQ2NSwgNDQ0NzQsIAotICAgIDQ0NDgzLCA0NDQ5MCwgNDQ0OTgsIDQ0NTA2LCA0NDUxMywgNDQ1MjAsIDQ0NTI4LCA0NDUzNiwgNDQ1NDMsIDQ0NTUwLCAKLSAgICA0NDU1OCwgNDQ1NjYsIDQ0NTczLCA0NDU4MCwgNDQ1ODgsIDQ0NTk2LCA0NDYwMywgNDQ2MTAsIDQ0NjE4LCA0NDYyNywgCi0gICAgNDQ2MzYsIDQ0NjQ0LCA0NDY1MywgNDQ2NjIsIDQ0NjY5LCA0NDY3NiwgNDQ2ODQsIDQ0NjkzLCA0NDcwMiwgNDQ3MTAsIAotICAgIDQ0NzE5LCA0NDcyOCwgNDQ3MzUsIDQ0NzQyLCA0NDc1MSwgNDQ3NjAsIDQ0NzY4LCA0NDc3NiwgNDQ3ODUsIDQ0Nzk0LCAKLSAgICA0NDgwMSwgNDQ4MDgsIDQ0ODE3LCA0NDgyNiwgNDQ4MzQsIDQ0ODQyLCA0NDg1MSwgNDQ4NjAsIDQ0ODY3LCA0NDg3NCwgCi0gICAgNDQ4ODMsIDQ0ODkyLCA0NDkwMCwgNDQ5MDksIDQ0OTE4LCA0NDkyNiwgNDQ5MzYsIDQ0OTQ2LCA0NDk1NiwgNDQ5NjYsIAotICAgIDQ0OTc1LCA0NDk4NCwgNDQ5OTMsIDQ1MDAyLCA0NTAwOSwgNDUwMTcsIDQ1MDI1LCA0NTAzMywgNDUwNDEsIDQ1MDQ2LCAKLSAgICA0NTA1MSwgNDUwNjAsIDQ1MDY4LCA0NTA3NSwgNDUwODQsIDQ1MDkyLCA0NTA5OSwgNDUxMDgsIDQ1MTE2LCA0NTEyMywgCi0gICAgNDUxMzIsIDQ1MTQwLCA0NTE0NywgNDUxNTYsIDQ1MTY0LCA0NTE3MSwgNDUxODAsIDQ1MTg4LCA0NTE5NSwgNDUyMDQsIAotICAgIDQ1MjEyLCA0NTIxOSwgNDUyMjgsIDQ1MjM2LCA0NTI0MywgNDUyNTIsIDQ1MjYwLCA0NTI2NywgNDUyNzYsIDQ1Mjg1LCAKLSAgICA0NTI5NCwgNDUzMDMsIDQ1MzE3LCA0NTMzMSwgNDUzMzgsIDQ1MzQzLCA0NTM0OCwgNDUzNTMsIDQ1MzU4LCA0NTM2MywgCi0gICAgNDUzNjgsIDQ1MzczLCA0NTM3OCwgNDUzODYsIDQ1Mzk0LCA0NTQwMiwgNDU0MTAsIDQ1NDE1LCA0NTQyMiwgNDU0MjksIAotICAgIDQ1NDM2LCA0NTQ0MSwgNDU0NDksIDQ1NDU2LCA0NTQ2NCwgNDU0NjgsIDQ1NDc1LCA0NTQ4MSwgNDU0ODgsIDQ1NDkyLCAKLSAgICA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCA0NTUxNCwgNDU1MTcsIDQ1NTIxLCA0NTUyNSwgNDU1MzIsIDQ1NTM4LCA0NTU0NCwgCi0gICAgNDU1NTAsIDQ1NTU2LCA0NTU3MCwgNDU1ODAsIDQ1NTk0LCA0NTYwOCwgNDU2MTQsIDQ1NjI0LCA0NTYzOCwgNDU2NDEsIAotICAgIDQ1NjQ0LCA0NTY1MSwgNDU2NTksIDQ1NjY0LCA0NTY2OSwgNDU2NzcsIDQ1Njg5LCA0NTcwMSwgNDU3MDksIDQ1NzEzLCAKLSAgICA0NTcxNywgNDU3MjAsIDQ1NzIzLCA0NTcyNywgNDU3MzEsIDQ1NzM0LCA0NTczNywgNDU3NDIsIDQ1NzQ3LCA0NTc1MywgCi0gICAgNDU3NTksIDQ1NzY0LCA0NTc2OSwgNDU3NzUsIDQ1NzgxLCA0NTc4NiwgNDU3OTEsIDQ1Nzk2LCA0NTgwMSwgNDU4MDcsIAotICAgIDQ1ODEzLCA0NTgxOCwgNDU4MjMsIDQ1ODI5LCA0NTgzNSwgNDU4NDAsIDQ1ODQ1LCA0NTg0OCwgNDU4NTEsIDQ1ODYwLCAKLSAgICA0NTg2MiwgNDU4NjQsIDQ1ODY3LCA0NTg3MSwgNDU4NzcsIDQ1ODc5LCA0NTg4MiwgNDU4ODksIDQ1ODk2LCA0NTkwNCwgCi0gICAgNDU5MTIsIDQ1OTIyLCA0NTkzNiwgNDU5NDEsIDQ1OTQ2LCA0NTk1MCwgNDU5NTUsIDQ1OTYzLCA0NTk3MSwgNDU5ODAsIAotICAgIDQ1OTg5LCA0NTk5OCwgNDYwMDcsIDQ2MDEyLCA0NjAxNywgNDYwMjMsIDQ2MDI5LCA0NjAzNSwgNDYwNDEsIDQ2MDQ0LCAKLSAgICA0NjA1MCwgNDYwNTYsIDQ2MDY2LCA0NjA3NiwgNDYwODQsIDQ2MDkyLCA0NjEwMSwgNDYxMTAsIDQ2MTE0LCA0NjEyMiwgCi0gICAgNDYxMzAsIDQ2MTM4LCA0NjE0NiwgNDYxNTUsIDQ2MTY0LCA0NjE3MywgNDYxODIsIDQ2MTg3LCA0NjE5MiwgNDYxOTcsIAotICAgIDQ2MjAyLCA0NjIwNywgNDYyMTMsIDQ2MjE5LCA0NjIyNCwgNDYyMzAsIDQ2MjMyLCA0NjIzNCwgNDYyMzYsIDQ2MjM4LCAKLSAgICA0NjI0MSwgNDYyNDQsIDQ2MjQ2LCA0NjI0OCwgNDYyNTAsIDQ2MjU0LCA0NjI1OCwgNDYyNjAsIDQ2MjYyLCA0NjI2NSwgCi0gICAgNDYyNjgsIDQ2MjcyLCA0NjI3OCwgNDYyODQsIDQ2Mjg2LCA0NjI5MywgNDYyOTcsIDQ2MzAyLCA0NjMwNywgNDYzMDksIAotICAgIDQ2MzE5LCA0NjMyNSwgNDYzMzEsIDQ2MzM3LCA0NjM0MywgNDYzNDksIDQ2MzU1LCA0NjM2MCwgNDYzNjMsIDQ2MzY2LCAKLSAgICA0NjM2OSwgNDYzNzEsIDQ2MzczLCA0NjM3NywgNDYzODEsIDQ2Mzg2LCA0NjM5MSwgNDYzOTYsIDQ2Mzk5LCA0NjQwMywgCi0gICAgNDY0MDgsIDQ2NDExLCA0NjQxNSwgNDY0MjAsIDQ2NDI1LCA0NjQzMCwgNDY0MzUsIDQ2NDQwLCA0NjQ0NSwgNDY0NTAsIAotICAgIDQ2NDU1LCA0NjQ2MCwgNDY0NjUsIDQ2NDcwLCA0NjQ3NSwgNDY0ODEsIDQ2NDg3LCA0NjQ5MywgNDY0OTUsIDQ2NDk4LCAKLSAgICA0NjUwMCwgNDY1MDMsIDQ2NTA1LCA0NjUwNywgNDY1MDksIDQ2NTExLCA0NjUxMywgNDY1MTUsIDQ2NTE3LCA0NjUxOSwgCi0gICAgNDY1MjEsIDQ2NTIzLCA0NjUyNSwgNDY1MjcsIDQ2NTI5LCA0NjUzMSwgNDY1MzMsIDQ2NTM1LCA0NjUzNywgNDY1NDIsIAotICAgIDQ2NTQ3LCA0NjU1MiwgNDY1NTcsIDQ2NTYyLCA0NjU2NywgNDY1NzIsIDQ2NTc3LCA0NjU4MiwgNDY1ODcsIDQ2NTkyLCAKLSAgICA0NjU5NywgNDY2MDIsIDQ2NjA3LCA0NjYxMiwgNDY2MTcsIDQ2NjIyLCA0NjYyNywgNDY2MzIsIDQ2NjM3LCA0NjY0MSwgCi0gICAgNDY2NDUsIDQ2NjQ5LCA0NjY1NSwgNDY2NjEsIDQ2NjY2LCA0NjY3MSwgNDY2NzYsIDQ2NjgxLCA0NjY4NiwgNDY2OTEsIAotICAgIDQ2Njk5LCA0NjcwNywgNDY3MTUsIDQ2NzIzLCA0NjczMSwgNDY3MzksIDQ2NzQ3LCA0Njc1NSwgNDY3NjEsIDQ2NzY2LCAKLSAgICA0Njc3MSwgNDY3NzYsIDQ2Nzc5LCA0Njc4MywgNDY3ODcsIDQ2NzkxLCA0Njc5NSwgNDY3OTksIDQ2ODAzLCA0NjgxMCwgCi0gICAgNDY4MTcsIDQ2ODI1LCA0NjgzMywgNDY4MzgsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIDQ2ODY0LCA0Njg3MSwgNDY4NzQsIAotICAgIDQ2ODc3LCA0Njg4MiwgNDY4ODQsIDQ2ODg4LCA0Njg5MywgNDY4OTUsIDQ2ODk3LCA0Njg5OSwgNDY5MDEsIDQ2OTA2LCAKLSAgICA0NjkwOSwgNDY5MTEsIDQ2OTE2LCA0NjkyMywgNDY5MzAsIDQ2OTMzLCA0NjkzNywgNDY5NDIsIDQ2OTQ3LCA0Njk1NSwgCi0gICAgNDY5NjEsIDQ2OTY3LCA0Njk3OSwgNDY5ODYsIDQ2OTkzLCA0Njk5OCwgNDcwMDMsIDQ3MDA5LCA0NzAxMiwgNDcwMTUsIAotICAgIDQ3MDIwLCA0NzAyMiwgNDcwMjYsIDQ3MDI4LCA0NzAzMCwgNDcwMzIsIDQ3MDM0LCA0NzAzNiwgNDcwMzgsIDQ3MDQzLCAKLSAgICA0NzA0NSwgNDcwNDcsIDQ3MDQ5LCA0NzA1MSwgNDcwNTUsIDQ3MDU3LCA0NzA2MCwgNDcwNjUsIDQ3MDcwLCA0NzA3NSwgCi0gICAgNDcwODAsIDQ3MDg2LCA0NzA5MiwgNDcwOTQsIDQ3MDk3LCA0NzEwNCwgNDcxMTEsIDQ3MTE4LCA0NzEyNSwgNDcxMjksIAotICAgIDQ3MTMzLCA0NzEzNSwgNDcxMzcsIDQ3MTQxLCA0NzE0NywgNDcxNTIsIDQ3MTU0LCA0NzE1OCwgNDcxNjcsIDQ3MTc1LCAKLSAgICA0NzE4MywgNDcxODksIDQ3MTk1LCA0NzIwMCwgNDcyMDYsIDQ3MjExLCA0NzIxNCwgNDcyMjgsIDQ3MjMxLCA0NzIzNiwgCi0gICAgNDcyNDEsIDQ3MjQ3LCA0NzI1NywgNDcyNTksIDQ3MjY1LCA0NzI3MSwgNDcyNzUsIDQ3MjgyLCA0NzI4NiwgNDcyODgsIAotICAgIDQ3MjkwLCA0NzI5NCwgNDczMDAsIDQ3MzA1LCA0NzMxMSwgNDczMTMsIDQ3MzE5LCA0NzMyMSwgNDczMjcsIDQ3MzI5LCAKLSAgICA0NzMzMSwgNDczMzYsIDQ3MzM4LCA0NzM0MiwgNDczNDcsIDQ3MzQ5LCA0NzM1NCwgNDczNTksIDQ3MzYzLCA0NzM3MCwgMCwgCi0gICAgNDczODAsIDQ3Mzg2LCA0NzM4OSwgNDczOTUsIDQ3Mzk4LCA0NzQwMywgNDc0MDgsIDQ3NDEyLCA0NzQxNCwgNDc0MTYsIAotICAgIDQ3NDIwLCA0NzQyNCwgNDc0MjgsIDQ3NDMyLCA0NzQzNywgNDc0MzksIDQ3NDQ0LCA0NzQ0NywgNDc0NTAsIDQ3NDUzLCAKLSAgICA0NzQ1NywgNDc0NjEsIDQ3NDY2LCA0NzQ3MCwgNDc0NzUsIDQ3NDgwLCA0NzQ4NCwgNDc0OTAsIDQ3NDk3LCA0NzUwMCwgCi0gICAgNDc1MDYsIDQ3NTExLCA0NzUxNSwgNDc1MjAsIDQ3NTI2LCA0NzUzMiwgNDc1MzksIDQ3NTQ1LCA0NzU1MiwgNDc1NTksIAotICAgIDQ3NTYxLCA0NzU2OCwgNDc1NzIsIDQ3NTc5LCA0NzU4NSwgNDc1OTAsIDQ3NTk2LCA0NzYwMCwgNDc2MDUsIDQ3NjA4LCAKLSAgICA0NzYxNCwgNDc2MjAsIDQ3NjI3LCA0NzYzNSwgNDc2NDIsIDQ3NjUxLCA0NzY2MSwgNDc2NjgsIDQ3Njc0LCA0NzY3OCwgCi0gICAgNDc2ODYsIDQ3NjkxLCA0NzcwMCwgNDc3MDMsIDQ3NzA2LCA0NzcxNSwgNDc3MjYsIDQ3NzMzLCA0NzczNSwgNDc3NDEsIAotICAgIDQ3NzQ2LCA0Nzc0OCwgNDc3NTEsIDQ3NzU1LCA0Nzc2MywgNDc3NzIsIDQ3Nzc1LCA0Nzc4MCwgNDc3ODUsIDQ3NzkzLCAKLSAgICA0NzgwMSwgNDc4MDksIDQ3ODE3LCA0NzgyMywgNDc4MjksIDQ3ODM1LCA0Nzg0MywgNDc4NDgsIDQ3ODUxLCA0Nzg1NSwgCi0gICAgNDc4NTgsIDQ3ODcwLCA0Nzg4MCwgNDc4OTEsIDQ3OTAwLCA0NzkxMSwgNDc5MjEsIDQ3OTMwLCA0NzkzNiwgNDc5NDQsIAotICAgIDQ3OTQ4LCA0Nzk1NiwgNDc5NjAsIDQ3OTY4LCA0Nzk3NSwgNDc5ODIsIDQ3OTkxLCA0ODAwMCwgNDgwMTAsIDQ4MDIwLCAKLSAgICA0ODAzMCwgNDgwNDAsIDQ4MDQ5LCA0ODA1OCwgNDgwNjgsIDQ4MDc4LCA0ODA4NywgNDgwOTYsIDQ4MTAyLCA0ODEwOCwgCi0gICAgNDgxMTQsIDQ4MTIwLCA0ODEyNiwgNDgxMzIsIDQ4MTM4LCA0ODE0NCwgNDgxNTAsIDQ4MTU3LCA0ODE2MywgNDgxNjksIAotICAgIDQ4MTc1LCA0ODE4MSwgNDgxODcsIDQ4MTkzLCA0ODE5OSwgNDgyMDUsIDQ4MjExLCA0ODIxOCwgNDgyMjUsIDQ4MjMyLCAKLSAgICA0ODIzOSwgNDgyNDYsIDQ4MjUzLCA0ODI2MCwgNDgyNjcsIDQ4Mjc0LCA0ODI4MSwgNDgyODksIDQ4Mjk0LCA0ODI5NywgCi0gICAgNDgzMDEsIDQ4MzA1LCA0ODMxMSwgNDgzMTQsIDQ4MzIwLCA0ODMyNiwgNDgzMzEsIDQ4MzM1LCA0ODM0MCwgNDgzNDYsIAotICAgIDQ4MzUzLCA0ODM1NiwgNDgzNjMsIDQ4MzcwLCA0ODM3NCwgNDgzODMsIDQ4MzkyLCA0ODM5NywgNDg0MDMsIDQ4NDA4LCAKLSAgICA0ODQxMywgNDg0MjAsIDQ4NDI3LCA0ODQzNSwgNDg0NDMsIDQ4NDUyLCA0ODQ1NiwgNDg0NjUsIDQ4NDcwLCA0ODQ3NCwgCi0gICAgNDg0ODEsIDQ4NDg1LCA0ODQ5MiwgNDg1MDAsIDQ4NTA1LCA0ODUxMywgNDg1MTcsIDQ4NTIyLCA0ODUyNiwgNDg1MzEsIAotICAgIDQ4NTM1LCA0ODU0MCwgNDg1NDUsIDQ4NTU0LCA0ODU1NiwgNDg1NjAsIDQ4NTY0LCA0ODU3MSwgNDg1NzgsIDQ4NTgzLCAKLSAgICA0ODU5MSwgNDg1OTcsIDAsIDQ4NjAzLCAwLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCA0ODYyNCwgNDg2MjgsIDQ4NjM1LCAKLSAgICA0ODY0MywgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjcsIDQ4NjcyLCA0ODY3NywgNDg2ODMsIDQ4Njg4LCA0ODY5MSwgCi0gICAgNDg2OTUsIDQ4Njk5LCA0ODcwNiwgNDg3MTUsIDQ4NzIwLCA0ODcyOSwgNDg3MzgsIDQ4NzQ0LCA0ODc1MCwgNDg3NTUsIAotICAgIDQ4NzYwLCA0ODc2NSwgNDg3NzAsIDQ4Nzc2LCA0ODc4MiwgNDg3OTAsIDQ4Nzk4LCA0ODgwNCwgNDg4MTAsIDQ4ODE1LCAKLSAgICA0ODgyMCwgNDg4MjcsIDQ4ODM0LCA0ODg0MCwgNDg4NDMsIDQ4ODQ2LCA0ODg1MCwgNDg4NTQsIDQ4ODU4LCA0ODg2MywgCi0gICAgNDg4NjksIDQ4ODc1LCA0ODg4MiwgNDg4ODksIDQ4ODk0LCA0ODg5OCwgNDg5MDIsIDQ4OTA2LCA0ODkxMCwgNDg5MTQsIAotICAgIDQ4OTE4LCA0ODkyMiwgNDg5MjYsIDQ4OTMwLCA0ODkzNCwgNDg5MzgsIDQ4OTQyLCA0ODk0NiwgNDg5NTAsIDQ4OTU0LCAKLSAgICA0ODk1OCwgNDg5NjIsIDQ4OTY2LCA0ODk3MCwgNDg5NzQsIDQ4OTc4LCA0ODk4MiwgNDg5ODYsIDQ4OTkwLCA0ODk5NCwgCi0gICAgNDg5OTgsIDQ5MDAyLCA0OTAwNiwgNDkwMTAsIDQ5MDE0LCA0OTAxOCwgNDkwMjIsIDQ5MDI2LCA0OTAzMCwgNDkwMzQsIAotICAgIDQ5MDM4LCA0OTA0MiwgNDkwNDYsIDQ5MDUwLCA0OTA1NCwgNDkwNTgsIDQ5MDYyLCA0OTA2NiwgNDkwNzAsIDQ5MDc0LCAKLSAgICA0OTA3OCwgNDkwODIsIDQ5MDg2LCA0OTA5MCwgNDkwOTQsIDQ5MDk4LCA0OTEwMiwgNDkxMDYsIDQ5MTEwLCA0OTExNCwgCi0gICAgNDkxMTgsIDQ5MTIyLCA0OTEyNiwgNDkxMzAsIDQ5MTM0LCA0OTEzOCwgNDkxNDIsIDQ5MTQ2LCA0OTE1MCwgNDkxNTQsIAotICAgIDQ5MTU4LCA0OTE2MiwgNDkxNjYsIDQ5MTcwLCA0OTE3NCwgNDkxNzgsIDQ5MTgyLCA0OTE4NiwgNDkxOTAsIDQ5MTk0LCAKLSAgICA0OTE5OCwgNDkyMDIsIDQ5MjA2LCA0OTIxMCwgNDkyMTQsIDQ5MjE4LCA0OTIyMiwgNDkyMjYsIDQ5MjMwLCA0OTIzNCwgCi0gICAgNDkyMzgsIDQ5MjQyLCA0OTI0NiwgNDkyNTAsIDQ5MjU0LCA0OTI1OCwgNDkyNjIsIDQ5MjY2LCA0OTI3MCwgNDkyNzQsIAotICAgIDQ5Mjc4LCA0OTI4MiwgNDkyODYsIDQ5MjkwLCA0OTI5NCwgNDkyOTgsIDQ5MzAyLCA0OTMwNiwgNDkzMTAsIDQ5MzE0LCAKLSAgICA0OTMxOCwgNDkzMjIsIDQ5MzI2LCA0OTMzMCwgNDkzMzQsIDQ5MzM4LCA0OTM0MiwgNDkzNDYsIDQ5MzUwLCA0OTM1NCwgCi0gICAgNDkzNTgsIDQ5MzYyLCA0OTM2NiwgNDkzNzAsIDQ5Mzc0LCA0OTM3OCwgNDkzODIsIDQ5Mzg2LCA0OTM5MCwgNDkzOTQsIAotICAgIDQ5Mzk4LCA0OTQwMiwgNDk0MDYsIDQ5NDEwLCA0OTQxNCwgNDk0MTgsIDQ5NDIyLCA0OTQyNiwgNDk0MzAsIDQ5NDM0LCAKLSAgICA0OTQzOCwgNDk0NDIsIDQ5NDQ2LCA0OTQ1MCwgNDk0NTQsIDQ5NDU4LCA0OTQ2MiwgNDk0NjYsIDQ5NDcwLCA0OTQ3NCwgCi0gICAgNDk0NzgsIDQ5NDgyLCA0OTQ4NiwgNDk0OTAsIDQ5NDk0LCA0OTQ5OCwgNDk1MDIsIDQ5NTA2LCA0OTUxMCwgNDk1MTQsIAotICAgIDQ5NTE4LCA0OTUyMiwgNDk1MjYsIDQ5NTMwLCA0OTUzNCwgNDk1MzgsIDQ5NTQyLCA0OTU0NiwgNDk1NTAsIDQ5NTU0LCAKLSAgICA0OTU1OCwgNDk1NjIsIDQ5NTY2LCA0OTU3MCwgNDk1NzQsIDQ5NTc4LCA0OTU4MiwgNDk1ODYsIDQ5NTkwLCA0OTU5NCwgCi0gICAgNDk1OTgsIDQ5NjAyLCA0OTYwNiwgNDk2MTAsIDQ5NjE0LCA0OTYxOCwgNDk2MjIsIDQ5NjI2LCA0OTYzMCwgNDk2MzQsIAotICAgIDQ5NjM4LCA0OTY0MiwgNDk2NDYsIDQ5NjUwLCA0OTY1NCwgNDk2NTgsIDQ5NjYyLCA0OTY2NiwgNDk2NzAsIDQ5Njc0LCAKLSAgICA0OTY3OCwgNDk2ODIsIDQ5Njg2LCA0OTY5MCwgNDk2OTQsIDQ5Njk4LCA0OTcwMiwgNDk3MDYsIDQ5NzEwLCA0OTcxNCwgCi0gICAgNDk3MTgsIDQ5NzIyLCA0OTcyNiwgNDk3MzAsIDQ5NzM0LCA0OTczOCwgNDk3NDIsIDQ5NzQ2LCA0OTc1MCwgNDk3NTQsIAotICAgIDQ5NzU4LCA0OTc2MiwgNDk3NjYsIDQ5NzcwLCA0OTc3NCwgNDk3NzgsIDQ5NzgyLCA0OTc4NiwgNDk3OTAsIDQ5Nzk0LCAKLSAgICA0OTc5OCwgNDk4MDIsIDQ5ODA2LCA0OTgxMCwgNDk4MTQsIDQ5ODE4LCA0OTgyMiwgNDk4MjYsIDQ5ODMwLCA0OTgzNCwgCi0gICAgNDk4MzgsIDQ5ODQyLCA0OTg0NiwgNDk4NTAsIDQ5ODU0LCA0OTg1OCwgNDk4NjIsIDQ5ODY2LCA0OTg3MCwgNDk4NzQsIAotICAgIDQ5ODc4LCA0OTg4MiwgNDk4ODYsIDQ5ODkwLCA0OTg5NCwgNDk4OTgsIDQ5OTAyLCA0OTkwNiwgNDk5MTAsIDQ5OTE0LCAKLSAgICA0OTkxOCwgNDk5MjUsIDQ5OTMzLCA0OTkzOSwgNDk5NDUsIDQ5OTUyLCA0OTk1OSwgNDk5NjUsIDQ5OTcxLCA0OTk3NywgCi0gICAgNDk5ODMsIDQ5OTg4LCA0OTk5MywgNDk5OTgsIDUwMDAzLCA1MDAwOSwgNTAwMTUsIDUwMDIzLCA1MDAzMCwgNTAwMzYsIAotICAgIDUwMDQyLCA1MDA1MCwgNTAwNTksIDUwMDY2LCA1MDA3NiwgNTAwODcsIDUwMDkwLCA1MDA5MywgNTAwOTcsIDUwMTAxLCAKLSAgICA1MDEwOCwgNTAxMTUsIDUwMTI2LCA1MDEzNywgNTAxNDcsIDUwMTU3LCA1MDE2NCwgNTAxNzEsIDUwMTc4LCA1MDE4NSwgCi0gICAgNTAxOTYsIDUwMjA3LCA1MDIxOCwgNTAyMjksIDUwMjM5LCA1MDI0OSwgNTAyNjEsIDUwMjczLCA1MDI4NCwgNTAyOTUsIAotICAgIDUwMzA3LCA1MDMxOSwgNTAzMjgsIDUwMzM4LCA1MDM0OCwgNTAzNTksIDUwMzcwLCA1MDM3NywgNTAzODQsIDUwMzkxLCAKLSAgICA1MDM5OCwgNTA0MDgsIDUwNDE4LCA1MDQyNiwgNTA0MzQsIDUwNDQxLCA1MDQ0OCwgNTA0NTUsIDUwNDYyLCA1MDQ2OSwgCi0gICAgNTA0NzQsIDUwNDc5LCA1MDQ4NSwgNTA0OTMsIDUwNTAzLCA1MDUxMSwgNTA1MTksIDUwNTI3LCA1MDUzNSwgNTA1NDMsIAotICAgIDUwNTUxLCA1MDU1OSwgNTA1NjcsIDUwNTc2LCA1MDU4NSwgNTA1OTUsIDUwNjA1LCA1MDYxNCwgNTA2MjMsIDUwNjMzLCAKLSAgICA1MDY0MywgNTA2NTIsIDUwNjYxLCA1MDY3MSwgNTA2ODEsIDUwNjkwLCA1MDY5OSwgNTA3MDksIDUwNzE5LCA1MDczMywgCi0gICAgNTA3NTAsIDUwNzY0LCA1MDc4MSwgNTA3OTUsIDUwODA5LCA1MDgyMywgNTA4MzcsIDUwODQ3LCA1MDg1OCwgNTA4NjgsIAotICAgIDUwODc5LCA1MDg5NiwgNTA5MTMsIDUwOTIxLCA1MDkyNywgNTA5MzQsIDUwOTQxLCA1MDk0OCwgNTA5NTUsIDUwOTYwLCAKLSAgICA1MDk2NiwgNTA5NzEsIDUwOTc2LCA1MDk4MiwgNTA5ODcsIDUwOTkyLCA1MDk5NywgNTEwMDIsIDUxMDA3LCA1MTAxNCwgCi0gICAgNTEwMTksIDUxMDI2LCA1MTAzMSwgNTEwMzYsIDUxMDQwLCA1MTA0NCwgNTEwNTEsIDUxMDU4LCA1MTA2NSwgNTEwNzIsIAotICAgIDUxMDc5LCA1MTA4NiwgNTEwOTksIDUxMTEyLCA1MTEyNSwgNTExMzgsIDUxMTQ2LCA1MTE1NCwgNTExNjAsIDUxMTY2LCAKLSAgICA1MTE3MywgNTExODAsIDUxMTg3LCA1MTE5NCwgNTExOTgsIDUxMjAzLCA1MTIxMSwgNTEyMTksIDUxMjI3LCA1MTIzNCwgCi0gICAgNTEyMzgsIDUxMjQ2LCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NywgNTEyNzQsIDUxMjgyLCA1MTI5MCwgNTEzMTAsIAotICAgIDUxMzMwLCA1MTM1MCwgNTEzNzAsIDUxMzkwLCA1MTQxMCwgNTE0MzAsIDUxNDUwLCA1MTQ1NiwgNTE0NjMsIDUxNDcyLCAKLSAgICA1MTQ4MCwgNTE0ODgsIDUxNDkzLCA1MTQ5NiwgNTE0OTksIDUxNTA0LCA1MTUwNywgNTE1MjYsIDUxNTMzLCA1MTUzOSwgCi0gICAgNTE1NDUsIDUxNTQ5LCA1MTU1MiwgNTE1NTUsIDUxNTU4LCA1MTU3MCwgNTE1ODMsIDUxNTkwLCA1MTU5NywgNTE2MDAsIAotICAgIDUxNjA0LCA1MTYwNywgNTE2MTIsIDUxNjE3LCA1MTYyMiwgNTE2MjgsIDUxNjM3LCA1MTY0NCwgNTE2NTEsIDUxNjU5LCAKLSAgICA1MTY2NiwgNTE2NzMsIDUxNjc2LCA1MTY4MiwgNTE2ODgsIDUxNjkxLCA1MTY5NCwgNTE2OTksIDUxNzA0LCA1MTcxMCwgCi0gICAgNTE3MTYsIDUxNzIwLCA1MTcyNSwgNTE3MzIsIDUxNzM2LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCA1MTc1OCwgNTE3NzAsIAotICAgIDUxNzc5LCA1MTc4MywgNTE3ODUsIDUxNzk0LCA1MTgwMywgNTE4MDksIDUxODEyLCA1MTgxOCwgNTE4MjQsIDUxODI5LCAKLSAgICA1MTgzNCwgNTE4MzksIDUxODQ0LCA1MTg0OSwgNTE4NTQsIDUxODU2LCA1MTg2MiwgNTE4NjcsIDUxODc0LCA1MTg3OCwgCi0gICAgNTE4ODQsIDUxODg3LCA1MTg5MSwgNTE4OTgsIDUxOTA1LCA1MTkwNywgNTE5MDksIDUxOTE1LCA1MTkyMSwgNTE5MjcsIAotICAgIDUxOTM2LCA1MTk0NSwgNTE5NTIsIDUxOTU5LCA1MTk2NSwgNTE5NzEsIDUxOTc2LCA1MTk4MSwgNTE5ODYsIDUxOTkyLCAKLSAgICA1MTk5OCwgNTIwMDMsIDUyMDEwLCA1MjAxNCwgNTIwMTgsIDUyMDMxLCA1MjA0NCwgNTIwNTYsIDUyMDY1LCA1MjA3MSwgCi0gICAgNTIwNzgsIDUyMDgzLCA1MjA4OCwgNTIwOTMsIDUyMDk4LCA1MjEwMywgNTIxMDUsIDUyMTEyLCA1MjExOSwgNTIxMjYsIAotICAgIDUyMTMzLCA1MjE0MCwgNTIxNDgsIDUyMTU0LCA1MjE1OSwgNTIxNjUsIDUyMTcxLCA1MjE3NywgNTIxODQsIDUyMTkwLCAKLSAgICA1MjE5OCwgNTIyMDYsIDUyMjE0LCA1MjIyMiwgNTIyMjksIDUyMjM1LCA1MjI0MSwgNTIyNTAsIDUyMjU0LCA1MjI2MywgCi0gICAgNTIyNzIsIDUyMjgxLCA1MjI4OSwgNTIyOTMsIDUyMjk5LCA1MjMwNiwgNTIzMTMsIDUyMzE3LCA1MjMyMywgNTIzMzAsIAotICAgIDUyMzM1LCA1MjM0MCwgNTIzNDYsIDUyMzUxLCA1MjM1NiwgNTIzNjMsIDUyMzcwLCA1MjM3NSwgNTIzODAsIDUyMzg4LCAKLSAgICA1MjM5NiwgNTI0MDYsIDUyNDE2LCA1MjQyMywgNTI0MzAsIDUyNDM0LCA1MjQzOCwgNTI0NTAsIDUyNDU2LCA1MjQ2MiwgCi0gICAgNTI0NjcsIDUyNDcyLCA1MjQ3OSwgNTI0ODYsIDUyNDkyLCA1MjQ5OCwgNTI1MDcsIDUyNTE1LCA1MjUyMywgNTI1MzAsIAotICAgIDUyNTM3LCA1MjU0NCwgNTI1NTAsIDUyNTU3LCA1MjU2MywgNTI1NzAsIDUyNTc3LCA1MjU4NCwgNTI1OTEsIDUyNTk3LCAKLSAgICA1MjYwMiwgNTI2MTEsIDUyNjIxLCA1MjYyOCwgNTI2MzcsIDUyNjQzLCA1MjY0OCwgNTI2NTMsIDUyNjYzLCA1MjY2OSwgCi0gICAgNTI2NzUsIDUyNjgxLCA1MjY4OSwgNTI2OTQsIDUyNzAxLCA1MjcwOCwgNTI3MTksIDUyNzI2LCA1MjczMywgNTI3NDAsIAotICAgIDUyNzQ3LCA1Mjc1NCwgNTI3NjEsIDUyNzY4LCA1Mjc4MCwgNTI3OTIsIDUyODAzLCA1MjgxNCwgNTI4MjcsIDUyODQwLCAKLSAgICA1Mjg0NSwgNTI4NTAsIDUyODU5LCA1Mjg2OCwgNTI4NzUsIDUyODgyLCA1Mjg5MSwgNTI5MDAsIDUyOTA4LCA1MjkxNiwgCi0gICAgNTI5MjQsIDUyOTMyLCA1Mjk0MiwgNTI5NTIsIDUyOTY2LCA1Mjk4MCwgNTI5ODgsIDUyOTk2LCA1MzAwOCwgNTMwMjAsIAotICAgIDUzMDI4LCA1MzAzNiwgNTMwNDYsIDUzMDU2LCA1MzA2MSwgNTMwNjYsIDUzMDc1LCA1MzA4NCwgNTMwODksIDUzMDk0LCAKLSAgICA1MzEwMiwgNTMxMDgsIDUzMTE0LCA1MzEyMiwgNTMxMzAsIDUzMTQzLCA1MzE1NiwgNTMxNjAsIDUzMTY0LCA1MzE3MSwgCi0gICAgNTMxNzgsIDUzMTg1LCA1MzE5MywgNTMyMDEsIDUzMjEwLCA1MzIxOSwgNTMyMjUsIDUzMjMxLCA1MzIzOCwgNTMyNDUsIAotICAgIDUzMjUyLCA1MzI1OSwgNTMyNjgsIDUzMjc3LCA1MzI4MCwgNTMyODMsIDUzMjg4LCA1MzI5MywgNTMyOTksIDUzMzA1LCAKLSAgICA1MzMxMiwgNTMzMTksIDUzMzI5LCA1MzMzOSwgNTMzNDYsIDUzMzUzLCA1MzM2MSwgNTMzNjksIDUzMzc3LCA1MzM4NSwgCi0gICAgNTMzOTMsIDUzNDAxLCA1MzQwOCwgNTM0MTUsIDUzNDE5LCA1MzQyMywgNTM0MzAsIDUzNDM3LCA1MzQ0MiwgNTM0NDcsIAotICAgIDUzNDUyLCA1MzQ1NywgNTM0NjMsIDUzNDc3LCA1MzQ4NCwgNTM0OTEsIDUzNDk1LCA1MzQ5NywgNTM0OTksIDUzNTA0LCAKLSAgICA1MzUwOSwgNTM1MTQsIDUzNTE4LCA1MzUyNiwgNTM1MzMsIDUzNTQwLCA1MzU0OCwgNTM1NjAsIDUzNTY4LCA1MzU3NiwgCi0gICAgNTM1ODcsIDUzNTkxLCA1MzU5NSwgNTM2MDEsIDUzNjA5LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzY0MywgNTM2NDgsIAotICAgIDUzNjU1LCA1MzY2NCwgNTM2NzIsIDUzNjc4LCA1MzY4NCwgNTM2OTAsIDUzNjk5LCA1MzcwOCwgNTM3MTYsIDUzNzI1LCAKLSAgICA1MzczMCwgNTM3MzMsIDUzNzM4LCA1Mzc0NCwgNTM3NTAsIDUzNzU2LCA1Mzc2MiwgNTM3NjYsIDUzNzY5LCA1Mzc3MywgCi0gICAgNTM3NzcsIDUzNzgzLCA1Mzc4OSwgNTM3OTUsIDUzODAxLCA1MzgwNSwgNTM4MDksIDUzODE2LCA1MzgyMywgNTM4MzAsIAotICAgIDUzODM3LCA1Mzg0NCwgNTM4NTEsIDUzODYxLCA1Mzg3MSwgNTM4NzgsIDUzODg1LCA1Mzg5MywgNTM5MDEsIDUzOTA1LCAKLSAgICA1MzkxMCwgNTM5MTUsIDUzOTIxLCA1MzkyNywgNTM5MzAsIDUzOTMzLCA1MzkzNiwgNTM5MzksIDUzOTQzLCA1Mzk0OCwgCi0gICAgNTM5NTMsIDUzOTU4LCA1Mzk2MywgNTM5NjgsIDUzOTcyLCA1Mzk3NiwgNTM5ODAsIDUzOTg0LCA1Mzk4OCwgNTM5OTIsIAotICAgIDUzOTk2LCA1NDAwMiwgNTQwMDYsIDU0MDEyLCA1NDAxNywgNTQwMjQsIDU0MDMyLCA1NDAzOSwgNTQwNDcsIDU0MDU0LCAKLSAgICA1NDA2MiwgNTQwNzEsIDU0MDc4LCA1NDA4OCwgNTQwOTksIDU0MTA1LCA1NDExNCwgNTQxMjAsIDU0MTI5LCA1NDEzOCwgCi0gICAgNTQxNDQsIDU0MTUwLCA1NDE1NCwgNTQxNTgsIDU0MTY3LCA1NDE3NiwgNTQxODMsIDU0MTkwLCA1NDE5OSwgMCwgMCwgMCwgCi0gICAgNTQyMDgsIDU0MjEzLCA1NDIxNywgNTQyMjEsIDU0MjI2LCA1NDIzMSwgNTQyMzYsIDU0MjQ0LCA1NDI1MiwgNTQyNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MjU5LCA1NDI2NCwgNTQyNjksIDU0Mjc0LCA1NDI3OSwgCi0gICAgNTQyODQsIDU0Mjg5LCA1NDI5NCwgNTQyOTksIDU0MzA0LCA1NDMwOSwgNTQzMTUsIDU0MzE5LCA1NDMyNCwgNTQzMjksIAotICAgIDU0MzM0LCA1NDMzOSwgNTQzNDQsIDU0MzQ5LCA1NDM1NCwgNTQzNTksIDU0MzY0LCA1NDM2OSwgNTQzNzQsIDU0Mzc5LCAKLSAgICA1NDM4NCwgNTQzODksIDU0Mzk0LCA1NDM5OSwgNTQ0MDQsIDU0NDA5LCA1NDQxNCwgNTQ0MTksIDU0NDI0LCA1NDQyOSwgCi0gICAgNTQ0MzUsIDU0NDQwLCA1NDQ0NiwgNTQ0NTUsIDU0NDYwLCA1NDQ2OCwgNTQ0NzUsIDU0NDg0LCA1NDQ4OSwgNTQ0OTQsIAotICAgIDU0NDk5LCA1NDUwNSwgMCwgNTQ1MTIsIDU0NTE3LCA1NDUyMiwgNTQ1MjcsIDU0NTMyLCA1NDUzNywgNTQ1NDIsIDU0NTQ3LCAKLSAgICA1NDU1MiwgNTQ1NTcsIDU0NTYyLCA1NDU2OCwgNTQ1NzIsIDU0NTc3LCA1NDU4MiwgNTQ1ODcsIDU0NTkyLCA1NDU5NywgCi0gICAgNTQ2MDIsIDU0NjA3LCA1NDYxMiwgNTQ2MTcsIDU0NjIyLCA1NDYyNywgNTQ2MzIsIDU0NjM3LCA1NDY0MiwgNTQ2NDcsIAotICAgIDU0NjUyLCA1NDY1NywgNTQ2NjIsIDU0NjY3LCA1NDY3MiwgNTQ2NzcsIDU0NjgyLCA1NDY4OCwgNTQ2OTMsIDU0Njk5LCAKLSAgICA1NDcwOCwgNTQ3MTMsIDU0NzIxLCA1NDcyOCwgNTQ3MzcsIDU0NzQyLCA1NDc0NywgNTQ3NTIsIDU0NzU4LCAwLCA1NDc2NSwgCi0gICAgNTQ3NzMsIDU0NzgxLCA1NDc5MSwgNTQ3OTgsIDU0ODA2LCA1NDgxMiwgNTQ4MjEsIDU0ODI5LCA1NDgzNywgNTQ4NDUsIAotICAgIDU0ODUzLCA1NDg2MSwgNTQ4NjksIDU0ODc0LCA1NDg4MSwgNTQ4ODcsIDU0ODk0LCA1NDkwMiwgNTQ5MDksIDU0OTE2LCAKLSAgICA1NDkyNCwgNTQ5MzAsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTYwLCA1NDk3MCwgNTQ5NzcsIDU0OTg0LCA1NDk4OSwgCi0gICAgNTQ5OTksIDU1MDA5LCA1NTAxNCwgNTUwMTksIDU1MDI0LCA1NTAyOSwgNTUwMzQsIDU1MDM5LCA1NTA0NCwgNTUwNDksIAotICAgIDU1MDU0LCA1NTA1OSwgNTUwNjQsIDU1MDY5LCA1NTA3NCwgNTUwNzksIDU1MDg0LCA1NTA4OSwgNTUwOTQsIDU1MDk5LCAKLSAgICA1NTEwNCwgNTUxMDksIDU1MTE0LCA1NTExOSwgNTUxMjQsIDU1MTI5LCA1NTEzNCwgNTUxMzksIDU1MTQ0LCA1NTE0OSwgCi0gICAgNTUxNTQsIDU1MTU5LCA1NTE2MywgNTUxNjcsIDU1MTcyLCA1NTE3NywgNTUxODIsIDU1MTg3LCA1NTE5MiwgNTUxOTcsIAotICAgIDU1MjAyLCA1NTIwNywgNTUyMTIsIDU1MjE3LCA1NTIyMiwgNTUyMjcsIDU1MjMyLCA1NTIzNywgNTUyNDIsIDU1MjQ3LCAKLSAgICA1NTI1MiwgNTUyNTcsIDU1MjY0LCA1NTI3MSwgNTUyNzgsIDU1Mjg1LCA1NTI5MiwgNTUyOTksIDU1MzA2LCA1NTMxMywgCi0gICAgNTUzMjAsIDU1MzI3LCA1NTMzNCwgNTUzNDEsIDU1MzQ4LCA1NTM1NSwgNTUzNjAsIDU1MzY1LCA1NTM3MiwgNTUzNzksIAotICAgIDU1Mzg2LCA1NTM5MywgNTU0MDAsIDU1NDA3LCA1NTQxNCwgNTU0MjEsIDU1NDI4LCA1NTQzNSwgNTU0NDIsIDU1NDQ5LCAKLSAgICA1NTQ1NSwgNTU0NjEsIDU1NDY3LCA1NTQ3MywgNTU0ODAsIDU1NDg3LCA1NTQ5NCwgNTU1MDEsIDU1NTA4LCA1NTUxNSwgCi0gICAgNTU1MjIsIDU1NTI5LCA1NTUzNiwgNTU1NDMsIDU1NTUxLCA1NTU1OSwgNTU1NjcsIDU1NTc1LCA1NTU4MywgNTU1OTEsIAotICAgIDU1NTk5LCA1NTYwNywgNTU2MTEsIDU1NjE3LCA1NTYyMywgNTU2MjcsIDU1NjMzLCA1NTYzOSwgNTU2NDUsIDU1NjUyLCAKLSAgICA1NTY1OSwgNTU2NjYsIDU1NjczLCA1NTY3OCwgNTU2ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NjkwLCA1NTY5OCwgCi0gICAgNTU3MDcsIDU1NzE2LCA1NTcyNCwgNTU3MzAsIDU1NzM1LCA1NTc0MCwgNTU3NDUsIDU1NzUwLCA1NTc1NSwgNTU3NjAsIAotICAgIDU1NzY1LCA1NTc3MCwgNTU3NzUsIDU1NzgwLCA1NTc4NSwgNTU3OTAsIDU1Nzk1LCA1NTgwMCwgNTU4MDUsIDU1ODEwLCAKLSAgICA1NTgxNSwgNTU4MjAsIDU1ODI1LCA1NTgzMCwgNTU4MzUsIDU1ODQwLCA1NTg0NSwgNTU4NTAsIDU1ODU1LCA1NTg2MCwgCi0gICAgNTU4NjUsIDU1ODcwLCA1NTg3NSwgNTU4ODAsIDU1ODg1LCA1NTg5MCwgNTU4OTUsIDU1OTAwLCA1NTkwNSwgNTU5MTAsIAotICAgIDU1OTE1LCA1NTkyMCwgNTU5MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OTMwLCA1NTkzNCwgNTU5MzksIAotICAgIDU1OTQ0LCA1NTk0OSwgNTU5NTQsIDU1OTYzLCA1NTk2OCwgNTU5NzMsIDU1OTc4LCA1NTk4MywgNTU5ODgsIDU1OTkzLCAKLSAgICA1NTk5OCwgNTYwMDMsIDU2MDEwLCA1NjAxNSwgNTYwMjAsIDU2MDI5LCA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgCi0gICAgNTYwNTgsIDU2MDYzLCA1NjA3MCwgNTYwNzUsIDU2MDgwLCA1NjA4NywgNTYwOTQsIDU2MDk5LCA1NjEwNCwgNTYxMDksIAotICAgIDU2MTE2LCA1NjEyMywgNTYxMjgsIDU2MTMzLCA1NjEzOCwgNTYxNDMsIDU2MTQ4LCA1NjE1NSwgNTYxNjIsIDU2MTY3LCAKLSAgICA1NjE3MiwgNTYxNzcsIDU2MTgyLCA1NjE4NywgNTYxOTIsIDU2MTk3LCA1NjIwMiwgNTYyMDcsIDU2MjEyLCA1NjIxNywgCi0gICAgNTYyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MjI5LCA1NjIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTYyNDEsIDU2MjQ3LCA1NjI1MSwgNTYyNTUsIDU2MjU5LCA1NjI2MywgNTYyNjcsIDU2MjcxLCAKLSAgICA1NjI3NSwgNTYyNzksIDU2MjgzLCA1NjI4NywgNTYyOTMsIDU2Mjk3LCA1NjMwMSwgNTYzMDUsIDU2MzA5LCA1NjMxMywgCi0gICAgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMjksIDU2MzMzLCA1NjMzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTYzNDEsIDU2MzQ1LCA1NjM0OSwgNTYzNTMsIDU2MzU3LCA1NjM2MSwgNTYzNjUsIDAsIDU2MzY5LCA1NjM3MywgNTYzNzcsIAotICAgIDU2MzgxLCA1NjM4NSwgNTYzODksIDU2MzkzLCAwLCA1NjM5NywgNTY0MDEsIDU2NDA1LCA1NjQwOSwgNTY0MTMsIDU2NDE3LCAKLSAgICA1NjQyMSwgMCwgNTY0MjUsIDU2NDI5LCA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NSwgNTY0NDksIDAsIDU2NDUzLCAKLSAgICA1NjQ1NywgNTY0NjEsIDU2NDY1LCA1NjQ2OSwgNTY0NzMsIDU2NDc3LCAwLCA1NjQ4MSwgNTY0ODUsIDU2NDg5LCA1NjQ5MywgCi0gICAgNTY0OTcsIDU2NTAxLCA1NjUwNSwgMCwgNTY1MDksIDU2NTEzLCA1NjUxNywgNTY1MjEsIDU2NTI1LCA1NjUyOSwgNTY1MzMsIAotICAgIDAsIDU2NTM3LCA1NjU0MSwgNTY1NDUsIDU2NTQ5LCA1NjU1MywgNTY1NTcsIDU2NTYxLCAwLCA1NjU2NSwgNTY1NzAsIAotICAgIDU2NTc1LCA1NjU4MCwgNTY1ODUsIDU2NTkwLCA1NjU5NSwgNTY1OTksIDU2NjA0LCA1NjYwOSwgNTY2MTQsIDU2NjE4LCAKLSAgICA1NjYyMywgNTY2MjgsIDU2NjMzLCA1NjYzOCwgNTY2NDIsIDU2NjQ3LCA1NjY1MiwgNTY2NTcsIDU2NjYyLCA1NjY2NywgCi0gICAgNTY2NzIsIDU2Njc2LCA1NjY4MSwgNTY2ODYsIDU2NjkzLCA1NjY5OCwgNTY3MDMsIDU2NzA5LCA1NjcxNiwgNTY3MjMsIAotICAgIDU2NzMyLCA1NjczOSwgNTY3NDgsIDU2NzUyLCA1Njc1NiwgNTY3NjIsIDU2NzY4LCA1Njc3NCwgNTY3ODIsIDU2Nzg4LCAKLSAgICA1Njc5MiwgNTY3OTYsIDU2ODAwLCA1NjgwNiwgNTY4MTIsIDU2ODE2LCA1NjgxOCwgNTY4MjIsIDU2ODI4LCA1NjgzMCwgCi0gICAgNTY4MzQsIDU2ODM4LCA1Njg0MiwgNTY4NDgsIDU2ODUzLCA1Njg1NywgNTY4NjEsIDU2ODY2LCA1Njg3MiwgNTY4NzcsIAotICAgIDU2ODgyLCA1Njg4NywgNTY4OTIsIDU2ODk5LCA1NjkwNiwgNTY5MTEsIDU2OTE2LCA1NjkyMSwgNTY5MjYsIDU2OTMxLCAKLSAgICA1NjkzNiwgNTY5NDAsIDU2OTQ0LCA1Njk1MSwgNTY5NTgsIDU2OTY0LCA1Njk2OCwgNTY5NzMsIDU2OTc2LCA1Njk4MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTY5ODgsIDU2OTkyLCA1Njk5NiwgNTcwMDEsIDU3MDA2LCA1NzAxMSwgNTcwMTUsIDU3MDE5LCAKLSAgICA1NzAyMywgNTcwMjgsIDU3MDMzLCA1NzAzNywgNTcwNDEsIDU3MDQ1LCA1NzA0OSwgNTcwNTQsIDU3MDU5LCA1NzA2NCwgCi0gICAgNTcwNjksIDU3MDczLCA1NzA3NywgNTcwODIsIDU3MDg3LCA1NzA5MiwgNTcwOTcsIDU3MTAxLCAwLCA1NzEwNSwgNTcxMDksIAotICAgIDU3MTEzLCA1NzExNywgNTcxMjEsIDU3MTI1LCA1NzEyOSwgNTcxMzQsIDU3MTM5LCA1NzE0MywgNTcxNDgsIDU3MTUzLCAKLSAgICA1NzE2MiwgNTcxNjYsIDU3MTcwLCA1NzE3NCwgNTcxODEsIDU3MTg1LCA1NzE5MCwgNTcxOTUsIDU3MTk5LCA1NzIwMywgCi0gICAgNTcyMDksIDU3MjE0LCA1NzIxOSwgNTcyMjQsIDU3MjI5LCA1NzIzMywgNTcyMzcsIDU3MjQxLCA1NzI0NSwgNTcyNDksIAotICAgIDU3MjU0LCA1NzI1OSwgNTcyNjMsIDU3MjY3LCA1NzI3MiwgNTcyNzcsIDU3MjgyLCA1NzI4NiwgNTcyOTAsIDU3Mjk1LCAKLSAgICA1NzMwMCwgNTczMDYsIDU3MzEyLCA1NzMxNiwgNTczMjIsIDU3MzI4LCA1NzMzMiwgNTczMzgsIDU3MzQ0LCA1NzM0OSwgCi0gICAgNTczNTQsIDU3MzU4LCA1NzM2NCwgNTczNjgsIDU3MzcyLCA1NzM3OCwgNTczODQsIDU3Mzg5LCA1NzM5NCwgNTczOTgsIAotICAgIDU3NDAyLCA1NzQxMCwgNTc0MTYsIDU3NDIyLCA1NzQyOCwgNTc0MzMsIDU3NDM4LCA1NzQ0MywgNTc0NDksIDU3NDUzLCAKLSAgICA1NzQ1OSwgNTc0NjMsIDU3NDY3LCA1NzQ3MywgNTc0NzksIDU3NDg1LCA1NzQ5MSwgNTc0OTcsIDU3NTAzLCA1NzUwOSwgCi0gICAgNTc1MTUsIDU3NTIxLCA1NzUyNywgNTc1MzMsIDU3NTM5LCA1NzU0MywgNTc1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU3NTU1LCA1NzU1OCwgNTc1NjIsIDU3NTY2LCA1NzU3MCwgNTc1NzQsIDU3NTc3LCA1NzU4MCwgCi0gICAgNTc1ODQsIDU3NTg4LCA1NzU5MiwgNTc1OTYsIDU3NTk5LCA1NzYwNCwgNTc2MDgsIDU3NjEyLCA1NzYxNiwgNTc2MjIsIAotICAgIDU3NjI2LCA1NzYzMCwgNTc2MzQsIDU3NjM4LCA1NzY0NSwgNTc2NTEsIDU3NjU1LCA1NzY1OSwgNTc2NjMsIDU3NjY3LCAKLSAgICA1NzY3MSwgNTc2NzUsIDU3Njc5LCA1NzY4MywgNTc2ODcsIDU3NjkxLCA1NzY5NSwgNTc3MDEsIDU3NzA1LCA1NzcwOSwgCi0gICAgNTc3MTMsIDU3NzE3LCA1NzcyMSwgNTc3MjUsIDU3NzI5LCA1NzczMywgNTc3MzcsIDU3NzQxLCA1Nzc0NSwgNTc3NDksIAotICAgIDU3NzUzLCA1Nzc1NywgNTc3NjEsIDU3NzY1LCA1Nzc3MSwgNTc3NzcsIDU3NzgyLCA1Nzc4NywgNTc3OTEsIDU3Nzk1LCAKLSAgICA1Nzc5OSwgNTc4MDMsIDU3ODA3LCA1NzgxMSwgNTc4MTUsIDU3ODE5LCA1NzgyMywgNTc4MjcsIDU3ODMxLCA1NzgzNSwgCi0gICAgNTc4MzksIDU3ODQzLCA1Nzg0NywgNTc4NTEsIDU3ODU1LCA1Nzg1OSwgNTc4NjMsIDU3ODY3LCA1Nzg3MSwgNTc4NzUsIAotICAgIDU3ODc5LCA1Nzg4MywgNTc4ODksIDU3ODkzLCA1Nzg5NywgNTc5MDEsIDU3OTA1LCA1NzkwOSwgNTc5MTMsIDU3OTE3LCAKLSAgICA1NzkyMSwgNTc5MjYsIDU3OTMzLCA1NzkzNywgNTc5NDEsIDU3OTQ1LCA1Nzk0OSwgNTc5NTMsIDU3OTU3LCA1Nzk2MSwgCi0gICAgNTc5NjUsIDU3OTY5LCA1Nzk3MywgNTc5NzcsIDU3OTgxLCA1Nzk4OCwgNTc5OTIsIDU3OTk4LCA1ODAwMiwgNTgwMDYsIAotICAgIDU4MDEwLCA1ODAxNCwgNTgwMTgsIDU4MDIxLCA1ODAyNSwgNTgwMjksIDU4MDMzLCA1ODAzNywgNTgwNDEsIDU4MDQ1LCAKLSAgICA1ODA0OSwgNTgwNTMsIDU4MDU3LCA1ODA2MSwgNTgwNjUsIDU4MDY5LCA1ODA3MywgNTgwNzcsIDU4MDgxLCA1ODA4NSwgCi0gICAgNTgwODksIDU4MDkzLCA1ODA5NywgNTgxMDEsIDU4MTA1LCA1ODEwOSwgNTgxMTMsIDU4MTE3LCA1ODEyMSwgNTgxMjUsIAotICAgIDU4MTI5LCA1ODEzMywgNTgxMzcsIDU4MTQxLCA1ODE0NSwgNTgxNDksIDU4MTU1LCA1ODE1OSwgNTgxNjMsIDU4MTY3LCAKLSAgICA1ODE3MSwgNTgxNzUsIDU4MTc5LCA1ODE4MywgNTgxODcsIDU4MTkxLCA1ODE5NSwgNTgxOTksIDU4MjAzLCA1ODIwNywgCi0gICAgNTgyMTEsIDU4MjE1LCA1ODIxOSwgNTgyMjMsIDU4MjI3LCA1ODIzMSwgNTgyMzUsIDU4MjM5LCA1ODI0MywgNTgyNDcsIAotICAgIDU4MjUxLCA1ODI1NSwgNTgyNTksIDU4MjYzLCA1ODI3MSwgNTgyNzUsIDU4Mjc5LCA1ODI4MywgNTgyODcsIDU4MjkxLCAKLSAgICA1ODI5NywgNTgzMDEsIDU4MzA1LCA1ODMwOSwgNTgzMTMsIDU4MzE3LCA1ODMyMSwgNTgzMjUsIDU4MzI5LCA1ODMzMywgCi0gICAgNTgzMzcsIDU4MzQxLCA1ODM0NSwgNTgzNDksIDU4MzU1LCA1ODM1OSwgNTgzNjMsIDU4MzY3LCA1ODM3MSwgNTgzNzUsIAotICAgIDU4Mzc5LCA1ODM4MywgNTgzODcsIDU4MzkxLCA1ODM5NSwgNTgzOTksIDU4NDAzLCA1ODQwNywgNTg0MTEsIDU4NDE1LCAKLSAgICA1ODQxOSwgNTg0MjMsIDU4NDI3LCA1ODQzMSwgNTg0MzUsIDU4NDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODQ0MywgNTg0NTIsIDU4NDYwLCAKLSAgICA1ODQ3MiwgNTg0ODMsIDU4NDkxLCA1ODUwMCwgNTg1MDksIDU4NTE5LCA1ODUzMSwgNTg1NDMsIDU4NTU1LCAwLCAwLCAwLCAKLSAgICAwLCA1ODU2MSwgNTg1NjQsIDU4NTY3LCA1ODU3MiwgNTg1NzUsIDU4NTgyLCA1ODU4NiwgNTg1OTAsIDU4NTk0LCA1ODU5OCwgCi0gICAgNTg2MDIsIDU4NjA3LCA1ODYxMiwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgNTg2MzAsIDU4NjM1LCA1ODY0MCwgNTg2NDMsIAotICAgIDU4NjQ2LCA1ODY1MiwgNTg2NTgsIDU4NjYzLCA1ODY2OCwgNTg2NzUsIDU4NjgyLCA1ODY4NiwgNTg2OTAsIDU4Njk0LCAKLSAgICA1ODcwMiwgNTg3MDgsIDU4NzE1LCA1ODcyMCwgNTg3MjUsIDU4NzMwLCA1ODczNSwgNTg3NDAsIDU4NzQ1LCA1ODc1MCwgCi0gICAgNTg3NTUsIDU4NzYwLCA1ODc2NSwgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkxLCA1ODc5NiwgNTg4MDAsIAotICAgIDU4ODA2LCA1ODgxNywgNTg4MjcsIDU4ODQyLCA1ODg1MiwgNTg4NTYsIDU4ODY1LCA1ODg3MSwgNTg4NzcsIDU4ODgzLCAKLSAgICA1ODg4OCwgNTg4OTEsIDU4ODk2LCA1ODkwMCwgMCwgNTg5MDYsIDU4OTEwLCA1ODkxMywgNTg5MTcsIDU4OTIwLCA1ODkyNCwgCi0gICAgNTg5MjcsIDU4OTMxLCA1ODkzNCwgNTg5MzgsIDU4OTQxLCA1ODk0NCwgNTg5NDgsIDU4OTUyLCA1ODk1NiwgNTg5NjAsIAotICAgIDU4OTY0LCA1ODk2OCwgNTg5NzIsIDU4OTc2LCA1ODk4MCwgNTg5ODQsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCAKLSAgICA1OTAwNCwgNTkwMDgsIDU5MDEyLCA1OTAxNiwgNTkwMjAsIDU5MDI0LCA1OTAyOCwgNTkwMzIsIDU5MDM2LCA1OTA0MSwgCi0gICAgNTkwNDUsIDU5MDQ5LCA1OTA1MywgNTkwNTcsIDU5MDYwLCA1OTA2NCwgNTkwNjcsIDU5MDcxLCA1OTA3NSwgNTkwNzksIAotICAgIDU5MDgzLCA1OTA4NiwgNTkwOTAsIDU5MDkzLCA1OTA5NywgNTkxMDEsIDU5MTA1LCA1OTEwOSwgNTkxMTMsIDU5MTE3LCAKLSAgICA1OTEyMSwgNTkxMjUsIDU5MTI5LCA1OTEzMywgNTkxMzcsIDU5MTQxLCA1OTE0NCwgNTkxNDgsIDU5MTUyLCA1OTE1NiwgCi0gICAgNTkxNjAsIDU5MTY0LCA1OTE2NywgNTkxNzIsIDU5MTc2LCA1OTE4MSwgNTkxODUsIDU5MTg4LCA1OTE5MiwgNTkxOTYsIAotICAgIDU5MjAwLCA1OTIwNCwgNTkyMDksIDU5MjEzLCA1OTIxNywgNTkyMjEsIDU5MjI1LCA1OTIyOCwgNTkyMzIsIDU5MjM2LCAwLCAKLSAgICAwLCA1OTI0MSwgNTkyNDksIDU5MjU3LCA1OTI2NCwgNTkyNzEsIDU5Mjc1LCA1OTI4MSwgNTkyODYsIDU5MjkxLCA1OTI5NSwgCi0gICAgNTkyOTgsIDU5MzAyLCA1OTMwNSwgNTkzMDksIDU5MzEyLCA1OTMxNiwgNTkzMTksIDU5MzIzLCA1OTMyNiwgNTkzMjksIAotICAgIDU5MzMzLCA1OTMzNywgNTkzNDEsIDU5MzQ1LCA1OTM0OSwgNTkzNTMsIDU5MzU3LCA1OTM2MSwgNTkzNjUsIDU5MzY5LCAKLSAgICA1OTM3MywgNTkzNzcsIDU5MzgxLCA1OTM4NSwgNTkzODksIDU5MzkzLCA1OTM5NywgNTk0MDEsIDU5NDA1LCA1OTQwOSwgCi0gICAgNTk0MTMsIDU5NDE3LCA1OTQyMSwgNTk0MjYsIDU5NDMwLCA1OTQzNCwgNTk0MzgsIDU5NDQyLCA1OTQ0NSwgNTk0NDksIAotICAgIDU5NDUyLCA1OTQ1NiwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzEsIDU5NDc1LCA1OTQ3OCwgNTk0ODIsIDU5NDg2LCAKLSAgICA1OTQ5MCwgNTk0OTQsIDU5NDk4LCA1OTUwMiwgNTk1MDYsIDU5NTEwLCA1OTUxNCwgNTk1MTgsIDU5NTIyLCA1OTUyNiwgCi0gICAgNTk1MjksIDU5NTMzLCA1OTUzNywgNTk1NDEsIDU5NTQ1LCA1OTU0OSwgNTk1NTIsIDU5NTU3LCA1OTU2MSwgNTk1NjYsIAotICAgIDU5NTcwLCA1OTU3MywgNTk1NzcsIDU5NTgxLCA1OTU4NSwgNTk1ODksIDU5NTk0LCA1OTU5OCwgNTk2MDIsIDU5NjA2LCAKLSAgICA1OTYxMCwgNTk2MTMsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMwLCA1OTYzNCwgNTk2MzgsIDU5NjQyLCA1OTY0NywgCi0gICAgNTk2NTQsIDU5NjU4LCA1OTY2NCwgMCwgMCwgMCwgMCwgMCwgNTk2NjksIDU5NjczLCA1OTY3NywgNTk2ODAsIDU5Njg0LCAKLSAgICA1OTY4OCwgNTk2OTIsIDU5Njk1LCA1OTY5OCwgNTk3MDIsIDU5NzA2LCA1OTcxMCwgNTk3MTQsIDU5NzE4LCA1OTcyMiwgCi0gICAgNTk3MjYsIDU5NzMwLCA1OTczNCwgNTk3MzcsIDU5NzQxLCA1OTc0NSwgNTk3NDgsIDU5NzUxLCA1OTc1NCwgNTk3NTcsIAotICAgIDU5NzYxLCA1OTc2NSwgNTk3NjksIDU5NzczLCA1OTc3NywgNTk3ODEsIDU5Nzg1LCA1OTc4OSwgNTk3OTMsIDU5Nzk3LCAKLSAgICA1OTgwMCwgNTk4MDMsIDU5ODA3LCA1OTgxMSwgNTk4MTUsIDU5ODE5LCAwLCAwLCAwLCA1OTgyMywgNTk4MjcsIDU5ODMxLCAKLSAgICA1OTgzNSwgNTk4MzksIDU5ODQzLCA1OTg0NywgNTk4NTEsIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY3LCA1OTg3MSwgCi0gICAgNTk4NzUsIDU5ODc5LCA1OTg4MywgNTk4ODcsIDU5ODkxLCA1OTg5NSwgNTk4OTksIDU5OTAzLCA1OTkwNywgNTk5MTEsIAotICAgIDU5OTE1LCA1OTkxOSwgNTk5MjMsIDU5OTI3LCA1OTkzMSwgNTk5MzUsIDU5OTM5LCA1OTk0MywgNTk5NDYsIDU5OTUwLCAKLSAgICA1OTk1MywgNTk5NTcsIDU5OTYxLCA1OTk2NCwgNTk5NjgsIDU5OTcyLCA1OTk3NSwgNTk5NzksIDU5OTgzLCA1OTk4NywgCi0gICAgNTk5OTEsIDU5OTk0LCA1OTk5OCwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTQsIDYwMDE4LCA2MDAyMSwgNjAwMjQsIAotICAgIDYwMDI4LCA2MDAzMiwgNjAwMzYsIDYwMDQwLCA2MDA0NCwgNjAwNDgsIDYwMDUyLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCAKLSAgICA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIDYwMDg4LCA2MDA5MiwgNjAwOTYsIDYwMTAwLCA2MDEwNCwgCi0gICAgNjAxMDgsIDYwMTEyLCA2MDExNiwgNjAxMjAsIDYwMTI0LCA2MDEyOCwgNjAxMzIsIDYwMTM2LCA2MDE0MCwgNjAxNDQsIAotICAgIDYwMTQ4LCA2MDE1MiwgNjAxNTYsIDYwMTYwLCA2MDE2NCwgNjAxNjgsIDYwMTcyLCA2MDE3NiwgNjAxODAsIDYwMTg0LCAKLSAgICA2MDE4OCwgMCwgNjAxOTIsIDYwMTk4LCA2MDIwNCwgNjAyMDksIDYwMjE0LCA2MDIxOSwgNjAyMjUsIDYwMjMxLCA2MDIzNywgCi0gICAgNjAyNDMsIDYwMjQ5LCA2MDI1NSwgNjAyNjEsIDYwMjY3LCA2MDI3MywgNjAyNzksIDYwMjg1LCA2MDI4OSwgNjAyOTMsIAotICAgIDYwMjk3LCA2MDMwMSwgNjAzMDUsIDYwMzA5LCA2MDMxMywgNjAzMTcsIDYwMzIxLCA2MDMyNSwgNjAzMjksIDYwMzMzLCAKLSAgICA2MDMzNywgNjAzNDEsIDYwMzQ1LCA2MDM0OSwgNjAzNTMsIDYwMzU3LCA2MDM2MSwgNjAzNjUsIDYwMzcwLCA2MDM3NSwgCi0gICAgNjAzODAsIDYwMzg1LCA2MDM4OSwgNjAzOTMsIDAsIDAsIDAsIDAsIDAsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDEyLCAKLSAgICA2MDQxNywgNjA0MjIsIDYwNDI3LCA2MDQzMiwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTIsIDYwNDU3LCA2MDQ2MiwgCi0gICAgNjA0NjcsIDYwNDcyLCA2MDQ3NiwgNjA0ODEsIDYwNDg1LCA2MDQ5MCwgNjA0OTUsIDYwNTAwLCA2MDUwNSwgNjA1MTAsIAotICAgIDYwNTE1LCA2MDUyMCwgNjA1MjUsIDYwNTMwLCA2MDUzNSwgNjA1NDAsIDYwNTQ1LCA2MDU1MCwgNjA1NTUsIDYwNTYwLCAKLSAgICA2MDU2NSwgNjA1NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNTc1LCA2MDU4MCwgNjA1ODUsIAotICAgIDYwNTkwLCA2MDU5NCwgNjA1OTksIDYwNjAzLCA2MDYwOCwgNjA2MTMsIDYwNjE4LCA2MDYyMywgNjA2MjgsIDYwNjMyLCAKLSAgICA2MDYzNywgNjA2NDIsIDYwNjQ3LCA2MDY1MiwgNjA2NTYsIDYwNjYwLCA2MDY2NCwgNjA2NjgsIDYwNjcyLCA2MDY3NiwgCi0gICAgNjA2ODAsIDYwNjg0LCA2MDY4OCwgNjA2OTIsIDYwNjk2LCA2MDcwMCwgNjA3MDQsIDYwNzA4LCA2MDcxMywgNjA3MTgsIAotICAgIDYwNzIzLCA2MDcyOCwgNjA3MzMsIDYwNzM4LCA2MDc0MywgNjA3NDgsIDYwNzUzLCA2MDc1OCwgNjA3NjMsIDYwNzY4LCAKLSAgICA2MDc3MywgNjA3NzgsIDYwNzgzLCA2MDc4OSwgMCwgNjA3OTYsIDYwNzk5LCA2MDgwMiwgNjA4MDUsIDYwODA4LCA2MDgxMSwgCi0gICAgNjA4MTQsIDYwODE3LCA2MDgyMCwgNjA4MjMsIDYwODI3LCA2MDgzMSwgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIAotICAgIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCA2MDg2NywgNjA4NzEsIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCAKLSAgICA2MDg5MSwgNjA4OTUsIDYwODk5LCA2MDkwMywgNjA5MDcsIDYwOTExLCA2MDkxNSwgNjA5MTksIDYwOTIzLCA2MDkyNywgCi0gICAgNjA5MzEsIDYwOTM1LCA2MDkzOSwgNjA5NDMsIDYwOTQ3LCA2MDk1NiwgNjA5NjUsIDYwOTc0LCA2MDk4MywgNjA5OTIsIAotICAgIDYxMDAxLCA2MTAxMCwgNjEwMTksIDYxMDIyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCAKLSAgICA2MTA1NywgNjEwNjIsIDYxMDY3LCA2MTA3MSwgNjEwNzYsIDYxMDgxLCA2MTA4NiwgNjEwOTEsIDYxMDk2LCA2MTEwMCwgCi0gICAgNjExMDQsIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIAotICAgIDYxMTQ0LCA2MTE0OCwgNjExNTIsIDYxMTU3LCA2MTE2MiwgNjExNjcsIDYxMTcyLCA2MTE3NywgNjExODIsIDYxMTg3LCAKLSAgICA2MTE5MiwgNjExOTcsIDYxMjAyLCA2MTIwNywgNjEyMTIsIDYxMjE3LCA2MTIyMiwgNjEyMjgsIDYxMjM0LCA2MTIzOSwgCi0gICAgNjEyNDQsIDYxMjQ3LCA2MTI1MCwgNjEyNTMsIDYxMjU2LCA2MTI1OSwgNjEyNjIsIDYxMjY1LCA2MTI2OCwgNjEyNzEsIAotICAgIDYxMjc1LCA2MTI3OSwgNjEyODMsIDYxMjg3LCA2MTI5MSwgNjEyOTUsIDYxMjk5LCA2MTMwMywgNjEzMDcsIDYxMzExLCAKLSAgICA2MTMxNSwgNjEzMTksIDYxMzIzLCA2MTMyNywgNjEzMzEsIDYxMzM1LCA2MTMzOSwgNjEzNDMsIDYxMzQ3LCA2MTM1MSwgCi0gICAgNjEzNTUsIDYxMzU5LCA2MTM2MywgNjEzNjcsIDYxMzcxLCA2MTM3NSwgNjEzNzksIDYxMzgzLCA2MTM4NywgNjEzOTEsIAotICAgIDYxMzk1LCA2MTM5OSwgNjE0MDMsIDYxNDA3LCA2MTQxMSwgNjE0MTUsIDYxNDE5LCA2MTQyMywgNjE0MjcsIDYxNDMxLCAKLSAgICA2MTQzNiwgNjE0NDEsIDYxNDQ2LCA2MTQ1MSwgNjE0NTUsIDYxNDYwLCA2MTQ2NSwgNjE0NzAsIDYxNDc1LCA2MTQ4MCwgCi0gICAgNjE0ODUsIDYxNDkwLCA2MTQ5NSwgNjE1MDAsIDYxNTA0LCA2MTUxMCwgNjE1MTYsIDYxNTIyLCA2MTUyOCwgNjE1MzQsIAotICAgIDYxNTQwLCA2MTU0NiwgNjE1NTIsIDYxNTU4LCA2MTU2NCwgNjE1NzAsIDYxNTc2LCA2MTU3OSwgNjE1ODIsIDYxNTg1LCAKLSAgICA2MTU5MCwgNjE1OTMsIDYxNTk2LCA2MTU5OSwgNjE2MDIsIDYxNjA1LCA2MTYwOCwgNjE2MTIsIDYxNjE2LCA2MTYyMCwgCi0gICAgNjE2MjQsIDYxNjI4LCA2MTYzMiwgNjE2MzYsIDYxNjQwLCA2MTY0NCwgNjE2NDgsIDYxNjUyLCA2MTY1NiwgNjE2NjAsIAotICAgIDYxNjYzLCA2MTY2NiwgNjE2NzAsIDYxNjc0LCA2MTY3OCwgNjE2ODIsIDYxNjg1LCA2MTY4OSwgNjE2OTMsIDYxNjk3LCAKLSAgICA2MTcwMSwgNjE3MDQsIDYxNzA4LCA2MTcxMiwgNjE3MTYsIDYxNzIwLCA2MTcyMywgNjE3MjcsIDYxNzMxLCA2MTczNCwgCi0gICAgNjE3MzgsIDYxNzQyLCA2MTc0NiwgNjE3NTAsIDYxNzU0LCA2MTc1OCwgNjE3NjIsIDAsIDYxNzY2LCA2MTc2OSwgNjE3NzIsIAotICAgIDYxNzc1LCA2MTc3OCwgNjE3ODEsIDYxNzg0LCA2MTc4NywgNjE3OTAsIDYxNzkzLCA2MTc5NiwgNjE3OTksIDYxODAyLCAKLSAgICA2MTgwNSwgNjE4MDgsIDYxODExLCA2MTgxNCwgNjE4MTcsIDYxODIwLCA2MTgyMywgNjE4MjYsIDYxODI5LCA2MTgzMiwgCi0gICAgNjE4MzUsIDYxODM4LCA2MTg0MSwgNjE4NDQsIDYxODQ3LCA2MTg1MCwgNjE4NTMsIDYxODU2LCA2MTg1OSwgNjE4NjIsIAotICAgIDYxODY1LCA2MTg2OCwgNjE4NzEsIDYxODc0LCA2MTg3NywgNjE4ODAsIDYxODgzLCA2MTg4NiwgNjE4ODksIDYxODkyLCAKLSAgICA2MTg5NSwgNjE4OTgsIDYxOTAxLCA2MTkwNCwgNjE5MDcsIDYxOTEwLCA2MTkxMywgNjE5MTYsIDYxOTE5LCA2MTkyMiwgCi0gICAgNjE5MjUsIDYxOTI4LCA2MTkzMSwgNjE5MzQsIDYxOTM3LCA2MTk0MCwgNjE5NDMsIDYxOTQ2LCA2MTk0OSwgNjE5NTIsIAotICAgIDYxOTU1LCA2MTk1OCwgNjE5NjEsIDYxOTY0LCA2MTk2NywgNjE5NzAsIDYxOTczLCA2MTk3NiwgNjE5NzksIDYxOTgyLCAKLSAgICA2MTk4NSwgNjE5ODgsIDYxOTkxLCA2MTk5NCwgNjE5OTcsIDYyMDAwLCA2MjAwMywgNjIwMDYsIDYyMDA5LCA2MjAxMiwgCi0gICAgNjIwMTUsIDYyMDE4LCA2MjAyMSwgNjIwMjQsIDYyMDI3LCA2MjAzMCwgNjIwMzgsIDYyMDQ1LCA2MjA1MiwgNjIwNTksIAotICAgIDYyMDY2LCA2MjA3MywgNjIwODAsIDYyMDg3LCA2MjA5NCwgNjIxMDEsIDYyMTA5LCA2MjExNywgNjIxMjUsIDYyMTMzLCAKLSAgICA2MjE0MSwgNjIxNDksIDYyMTU3LCA2MjE2NSwgNjIxNzMsIDYyMTgxLCA2MjE4OSwgNjIxOTcsIDYyMjA1LCA2MjIxMywgCi0gICAgNjIyMjEsIDYyMjI0LCA2MjIyNywgNjIyMzAsIDYyMjMyLCA2MjIzNSwgNjIyMzgsIDYyMjQxLCA2MjI0NiwgNjIyNTEsIAotICAgIDYyMjU0LCA2MjI2MSwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODUsIDYyMjkwLCA2MjI5MiwgNjIyOTYsIDYyMjk4LCAKLSAgICA2MjMwMCwgNjIzMDMsIDYyMzA2LCA2MjMwOSwgNjIzMTIsIDYyMzE1LCA2MjMxOCwgNjIzMjEsIDYyMzI2LCA2MjMzMSwgCi0gICAgNjIzMzQsIDYyMzM3LCA2MjM0MCwgNjIzNDMsIDYyMzQ2LCA2MjM0OSwgNjIzNTIsIDYyMzU2LCA2MjM1OSwgNjIzNjIsIAotICAgIDYyMzY1LCA2MjM2OCwgNjIzNzEsIDYyMzc1LCA2MjM3OCwgNjIzODEsIDYyMzg0LCA2MjM4OSwgNjIzOTQsIDYyMzk5LCAKLSAgICA2MjQwNCwgNjI0MDksIDYyNDE0LCA2MjQxOSwgNjI0MjQsIDYyNDI5LCA2MjQzNywgNjI0MzksIDYyNDQyLCA2MjQ0NSwgCi0gICAgNjI0NDgsIDYyNDUxLCA2MjQ1NiwgNjI0NjQsIDYyNDY3LCA2MjQ3MCwgNjI0NzQsIDYyNDc3LCA2MjQ4MCwgNjI0ODMsIAotICAgIDYyNDg4LCA2MjQ5MSwgNjI0OTQsIDYyNDk5LCA2MjUwMiwgNjI1MDUsIDYyNTEwLCA2MjUxMywgNjI1MTYsIDYyNTIxLCAKLSAgICA2MjUyNiwgNjI1MzEsIDYyNTM0LCA2MjUzNywgNjI1NDAsIDYyNTQzLCA2MjU0OSwgNjI1NTIsIDYyNTU1LCA2MjU1OCwgCi0gICAgNjI1NjAsIDYyNTYzLCA2MjU2NiwgNjI1NjksIDYyNTc0LCA2MjU3NywgNjI1ODAsIDYyNTgzLCA2MjU4NiwgNjI1ODksIAotICAgIDYyNTk0LCA2MjU5NywgNjI2MDAsIDYyNjAzLCA2MjYwNiwgNjI2MDksIDYyNjEyLCA2MjYxNSwgNjI2MTgsIDYyNjIxLCAKLSAgICA2MjYyNiwgNjI2MzAsIDYyNjM3LCA2MjY0NCwgNjI2NTEsIDYyNjU4LCA2MjY2NSwgNjI2NzIsIDYyNjc5LCA2MjY4NiwgCi0gICAgNjI2OTMsIDYyNzAxLCA2MjcwOSwgNjI3MTcsIDYyNzI1LCA2MjczMywgNjI3NDEsIDYyNzQ5LCA2Mjc1NywgNjI3NjUsIAotICAgIDYyNzczLCA2Mjc4MSwgNjI3ODksIDYyNzk3LCA2MjgwNSwgNjI4MTMsIDYyODIxLCA2MjgyOSwgNjI4MzcsIDYyODQ1LCAKLSAgICA2Mjg1MywgNjI4NjEsIDYyODY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDcsIDE1MSwgMTU2LCAxNjEsIDE2NSwgMTcwLCAxNzUsIDE3OSwgMTg0LCAxODksIDE5NCwgMTk5LCAyMDQsIDIwNywgCisgICAgMjExLCAyMTQsIDIxOCwgMjIxLCAyMjUsIDIyOSwgMjM0LCAyMzksIDI0NCwgMjQ4LCAyNTMsIDI1OCwgMjYzLCAyNjcsIAorICAgIDI3MiwgMjc3LCAyODEsIDI4NSwgMjkwLCAyOTQsIDI5OSwgMzA0LCAzMDgsIDMxMywgMzE4LCAzMjIsIDMyNywgMzMyLCAKKyAgICAzMzcsIDM0MiwgMzQ3LCAzNTEsIDM1NCwgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDM2MywgMzY4LCAKKyAgICAzNzEsIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODgsIDM5MSwgMzk3LCA0MDUsIDQwOCwgNDEyLCA0MTUsIDQxNywgCisgICAgNDIwLCA0MjMsIDQyNiwgNDI5LCA0MzMsIDQzNiwgNDM5LCA0NDMsIDQ0NSwgNDQ4LCA0NTQsIDQ2MiwgNDY5LCA0NzYsIAorICAgIDQ4MywgNDg4LCA0OTUsIDUwMSwgNTA4LCA1MTQsIDUyMSwgNTI5LCA1MzQsIDU0MiwgNTQ5LCA1NTUsIDU2MiwgNTY5LCAKKyAgICA1NzcsIDU4NCwgNTkyLCA2MDAsIDYwNSwgNjEyLCA2MTksIDYyNSwgNjMyLCA2MzgsIDY0NSwgNjQ4LCA2NTQsIDY2MSwgCisgICAgNjY3LCA2NzQsIDY4MSwgNjg4LCA2OTMsIDcwMCwgNzA3LCA3MTMsIDcyMCwgNzI2LCA3MzMsIDc0MSwgNzQ2LCA3NTQsIAorICAgIDc2MSwgNzY3LCA3NzQsIDc4MSwgNzg5LCA3OTYsIDgwNCwgODEyLCA4MTcsIDgyNCwgODMxLCA4MzcsIDg0NCwgODUwLCAKKyAgICA4NTcsIDg2MCwgODY2LCA4NzMsIDg3OSwgODg2LCA4OTMsIDkwMCwgOTA1LCA5MTMsIDkyMCwgOTI3LCA5MzQsIDk0MSwgCisgICAgOTQ4LCA5NTUsIDk2MiwgOTY5LCA5NzcsIDk4NSwgOTkzLCAxMDAxLCAxMDA5LCAxMDE3LCAxMDI1LCAxMDMzLCAxMDQwLCAKKyAgICAxMDQ3LCAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI1LCAKKyAgICAxMTMzLCAxMTQxLCAxMTQ5LCAxMTU3LCAxMTY1LCAxMTczLCAxMTgxLCAxMTg5LCAxMTk3LCAxMjA0LCAxMjExLCAxMjE4LCAKKyAgICAxMjI1LCAxMjMzLCAxMjQxLCAxMjQ5LCAxMjU3LCAxMjY1LCAxMjczLCAxMjgxLCAxMjg3LCAxMjkyLCAxMjk3LCAxMzA1LCAKKyAgICAxMzEzLCAxMzIxLCAxMzI5LCAxMzM0LCAxMzQxLCAxMzQ4LCAxMzU2LCAxMzY0LCAxMzcyLCAxMzgwLCAxMzkwLCAxNDAwLCAKKyAgICAxNDA3LCAxNDE0LCAxNDIxLCAxNDI4LCAxNDM2LCAxNDQ0LCAxNDUyLCAxNDYwLCAxNDcxLCAxNDc2LCAxNDgxLCAxNDg4LCAKKyAgICAxNDk1LCAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTI4LCAxNTMzLCAxNTQwLCAxNTQ3LCAxNTU1LCAxNTYzLCAxNTcxLCAKKyAgICAxNTc5LCAxNTg2LCAxNTkzLCAxNjAxLCAxNjA5LCAxNjE3LCAxNjI1LCAxNjMzLCAxNjQxLCAxNjQ5LCAxNjU3LCAxNjY1LCAKKyAgICAxNjczLCAxNjgwLCAxNjg3LCAxNjkzLCAxNjk5LCAxNzA2LCAxNzEzLCAxNzIwLCAxNzI3LCAxNzM1LCAxNzQzLCAxNzUwLCAKKyAgICAxNzU3LCAxNzY0LCAxNzcxLCAxNzc5LCAxNzg3LCAxNzk1LCAxODAzLCAxODExLCAxODE4LCAxODI1LCAxODMzLCAxODQxLCAKKyAgICAxODQ5LCAxODU3LCAxODYzLCAxODY5LCAxODc1LCAxODgyLCAxODg5LCAxODk0LCAxODk5LCAxOTA0LCAxOTExLCAxOTE4LCAKKyAgICAxOTI1LCAxOTMyLCAxOTQwLCAxOTQ4LCAxOTU1LCAxOTYxLCAxOTY2LCAxOTcxLCAxOTc4LCAxOTg1LCAxOTkyLCAxOTk3LCAKKyAgICAyMDAyLCAyMDA3LCAyMDE0LCAyMDIxLCAyMDI4LCAyMDM1LCAyMDQyLCAyMDQ4LCAyMDU2LCAyMDY2LCAyMDc0LCAyMDgxLCAKKyAgICAyMDg4LCAyMDkzLCAyMDk4LCAyMTA1LCAyMTEyLCAyMTE2LCAyMTIxLCAyMTI2LCAyMTMxLCAyMTM5LCAyMTQ4LCAyMTU1LCAKKyAgICAyMTYyLCAyMTcxLCAyMTc4LCAyMTg1LCAyMTkwLCAyMTk3LCAyMjA0LCAyMjExLCAyMjE4LCAyMjI1LCAyMjMwLCAyMjM3LCAKKyAgICAyMjQ0LCAyMjUyLCAyMjU3LCAyMjYyLCAyMjY3LCAyMjc3LCAyMjgxLCAyMjg3LCAyMjkzLCAyMjk5LCAyMzA1LCAyMzEzLCAKKyAgICAyMzI2LCAyMzM0LCAyMzM5LCAyMzQ5LCAyMzU0LCAyMzU5LCAyMzY5LCAyMzc0LCAyMzgxLCAyMzg4LCAyMzk2LCAyNDA0LCAKKyAgICAyNDExLCAyNDE4LCAyNDI1LCAyNDMyLCAyNDQyLCAyNDUyLCAyNDYxLCAyNDcwLCAyNDgwLCAyNDkwLCAyNTAwLCAyNTEwLCAKKyAgICAyNTE2LCAyNTI2LCAyNTM2LCAyNTQ2LCAyNTU2LCAyNTY0LCAyNTcyLCAyNTc5LCAyNTg2LCAyNTk0LCAyNjAyLCAyNjEwLCAKKyAgICAyNjE4LCAyNjI1LCAyNjMyLCAyNjQyLCAyNjUyLCAyNjYwLCAyNjY4LCAyNjc2LCAyNjgxLCAyNjkxLCAyNjk2LCAyNzAzLCAKKyAgICAyNzEwLCAyNzE1LCAyNzIwLCAyNzI4LCAyNzM2LCAyNzQ2LCAyNzU2LCAyNzYzLCAyNzcwLCAyNzc5LCAyNzg4LCAyNzk2LCAKKyAgICAyODA0LCAyODEzLCAyODIyLCAyODMwLCAyODM4LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODg0LCAyODk0LCAyOTAyLCAKKyAgICAyOTEwLCAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU2LCAyOTY2LCAyOTc0LCAyOTgyLCAyOTkxLCAzMDAwLCAzMDA5LCAKKyAgICAzMDE4LCAzMDI3LCAzMDM2LCAzMDQxLCAzMDQ2LCAzMDU0LCAzMDYyLCAzMDcyLCAzMDgwLCAzMDg1LCAzMDkwLCAzMDk3LCAKKyAgICAzMTA0LCAzMTExLCAzMTE4LCAzMTI1LCAzMTMyLCAzMTQyLCAzMTUyLCAzMTYyLCAzMTcyLCAzMTc5LCAzMTg2LCAzMTk2LCAKKyAgICAzMjA2LCAzMjE0LCAzMjIyLCAzMjMwLCAzMjM4LCAzMjQ2LCAzMjUzLCAzMjYwLCAzMjY3LCAzMjczLCAzMjgwLCAzMjg3LCAKKyAgICAzMjk0LCAzMzAzLCAzMzEzLCAzMzIzLCAzMzMwLCAzMzM3LCAzMzQzLCAzMzQ4LCAzMzU1LCAzMzYxLCAzMzY3LCAzMzc0LCAKKyAgICAzMzgxLCAzMzkyLCAzNDAyLCAzNDA5LCAzNDE2LCAzNDIzLCAzNDMwLCAzNDM2LCAzNDQxLCAzNDQ4LCAzNDU0LCAzNDU5LCAKKyAgICAzNDY3LCAzNDc1LCAzNDgyLCAzNDg4LCAzNDkzLCAzNTAwLCAzNTA1LCAzNTEyLCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ2LCAKKyAgICAzNTUyLCAzNTU4LCAzNTYzLCAzNTcwLCAzNTc3LCAzNTg0LCAzNTkxLCAzNTk4LCAzNjAzLCAzNjA4LCAzNjE3LCAzNjI1LCAKKyAgICAzNjM0LCAzNjM5LCAzNjQ1LCAzNjU2LCAzNjYzLCAzNjcxLCAzNjgwLCAzNjg2LCAzNjkyLCAzNjk4LCAzNzA1LCAzNzEwLCAKKyAgICAzNzE2LCAzNzI3LCAzNzM2LCAzNzQ1LCAzNzUzLCAzNzYxLCAzNzcxLCAzNzc2LCAzNzgzLCAzNzkwLCAzNzk1LCAzODA3LCAKKyAgICAzODE2LCAzODI0LCAzODMxLCAzODQwLCAzODQ1LCAzODUwLCAzODU3LCAzODY0LCAzODcxLCAzODc4LCAzODg0LCAzODkzLCAKKyAgICAzOTAxLCAzOTA2LCAzOTE0LCAzOTIwLCAzOTI4LCAzOTM2LCAzOTQyLCAzOTQ4LCAzOTU0LCAzOTYxLCAzOTY5LCAzOTc1LCAKKyAgICAzOTgzLCAzOTkwLCAzOTk1LCA0MDAyLCA0MDEwLCA0MDIwLCA0MDI3LCA0MDM0LCA0MDQ0LCA0MDUxLCA0MDU4LCA0MDY4LCAKKyAgICA0MDc1LCA0MDgyLCA0MDg5LCA0MDk1LCA0MTAxLCA0MTExLCA0MTI0LCA0MTI5LCA0MTM2LCA0MTQxLCA0MTQ1LCA0MTUxLCAKKyAgICA0MTYwLCA0MTY3LCA0MTcyLCA0MTc3LCA0MTgxLCA0MTg2LCA0MTkyLCA0MTk2LCA0MjAyLCA0MjA4LCA0MjE0LCA0MjIwLCAKKyAgICA0MjI4LCA0MjMzLCA0MjM4LCA0MjQzLCA0MjQ4LCA0MjU0LCA0MjU2LCA0MjYxLCA0MjY1LCA0MjcxLCA0Mjc3LCA0MjgzLCAKKyAgICA0Mjg4LCA0Mjk1LCA0MzAyLCA0MzA4LCA0MzE1LCA0MzIzLCA0MzMxLCA0MzM2LCA0MzQxLCA0MzQ1LCA0MzUwLCA0MzUyLCAKKyAgICA0MzU0LCA0MzU3LCA0MzU5LCA0MzYxLCA0MzY2LCA0MzcxLCA0Mzc3LCA0MzgyLCA0Mzg2LCA0MzkxLCA0Mzk2LCA0NDA1LCAKKyAgICA0NDExLCA0NDE2LCA0NDIyLCA0NDI3LCA0NDMzLCA0NDQxLCA0NDQ5LCA0NDUzLCA0NDU3LCA0NDYyLCA0NDY4LCA0NDc0LCAKKyAgICA0NDgwLCA0NDg2LCA0NDkxLCA0NDk5LCA0NTA4LCA0NTE3LCA0NTIxLCA0NTI3LCA0NTM0LCA0NTQxLCA0NTQ4LCA0NTU1LCAKKyAgICA0NTU5LCA0NTY0LCA0NTY5LCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg2LCA0NTg5LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCAKKyAgICA0NjA1LCA0NjA5LCA0NjE1LCA0NjE4LCA0NjIzLCA0NjI5LCA0NjM1LCA0NjM4LCA0NjQzLCA0NjQ5LCA0NjUzLCA0NjU5LCAKKyAgICA0NjY1LCA0NjcxLCA0Njc3LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk1LCA0NzAxLCA0NzA2LCA0NzExLCA0NzE1LCA0NzIwLCAKKyAgICA0NzI2LCA0NzMyLCA0NzM1LCA0NzM5LCA0NzQzLCA0NzQ3LCA0NzUwLCA0NzUzLCA0NzU4LCA0NzYyLCA0NzY5LCA0NzczLCAKKyAgICA0Nzc5LCA0NzgzLCA0Nzg5LCA0NzkzLCA0Nzk3LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE4LCA0ODI0LCA0ODMxLCA0ODM3LCAKKyAgICA0ODQzLCA0ODQ5LCA0ODUyLCA0ODU2LCA0ODYwLCA0ODYzLCA0ODY3LCA0ODcyLCA0ODc3LCA0ODgxLCA0ODg1LCA0ODkxLCAKKyAgICA0ODk1LCA0ODk5LCA0OTA0LCA0OTEwLCA0OTE1LCA0OTIxLCA0OTI1LCA0OTMyLCA0OTM3LCA0OTQyLCA0OTQ3LCA0OTUyLCAKKyAgICA0OTU4LCA0OTYxLCA0OTY1LCA0OTcwLCA0OTc1LCA0OTg0LCA0OTkwLCA0OTk1LCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCAKKyAgICA1MDE3LCA1MDIxLCA1MDI2LCA1MDI5LCA1MDM1LCA1MDQwLCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcxLCAKKyAgICA1MDc3LCA1MDgzLCA1MDg4LCA1MDkzLCA1MDk5LCA1MTA1LCA1MTExLCA1MTE2LCA1MTIxLCA1MTI4LCA1MTM1LCA1MTM5LCAKKyAgICA1MTQ1LCA1MTUyLCAwLCAwLCA1MTU5LCA1MTYyLCA1MTcxLCA1MTgwLCA1MTkxLCAwLCAwLCAwLCAwLCAwLCA1MTk1LCAKKyAgICA1MTk4LCA1MjAzLCA1MjExLCA1MjE2LCA1MjI0LCA1MjMyLCAwLCA1MjQwLCAwLCA1MjQ4LCA1MjU2LCA1MjY0LCA1Mjc1LCAKKyAgICA1MjgwLCA1Mjg1LCA1MjkwLCA1Mjk1LCA1MzAwLCA1MzA1LCA1MzEwLCA1MzE1LCA1MzIwLCA1MzI1LCA1MzMwLCA1MzM1LCAKKyAgICA1MzQwLCA1MzQ1LCA1MzUwLCA1MzU1LCAwLCA1MzYwLCA1MzY1LCA1MzcwLCA1Mzc1LCA1MzgwLCA1Mzg1LCA1MzkwLCAKKyAgICA1Mzk1LCA1NDAzLCA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDU0LCA1NDU5LCA1NDY0LCA1NDY5LCA1NDc0LCAKKyAgICA1NDc5LCA1NDg0LCA1NDg5LCA1NDk0LCA1NDk5LCA1NTA0LCA1NTA5LCA1NTE0LCA1NTE5LCA1NTI0LCA1NTI5LCA1NTM0LCAKKyAgICA1NTM5LCA1NTQ1LCA1NTUwLCA1NTU1LCA1NTYwLCA1NTY1LCA1NTcwLCA1NTc1LCA1NTgwLCA1NTg4LCA1NTk2LCA1NjA0LCAKKyAgICA1NjEyLCA1NjIwLCA1NjI1LCA1NjI5LCA1NjMzLCA1NjQwLCA1NjUwLCA1NjYwLCA1NjY0LCA1NjY4LCA1NjcyLCA1Njc4LCAKKyAgICA1Njg1LCA1Njg5LCA1Njk0LCA1Njk4LCA1NzAzLCA1NzA3LCA1NzEyLCA1NzE2LCA1NzIxLCA1NzI2LCA1NzMxLCA1NzM2LCAKKyAgICA1NzQxLCA1NzQ2LCA1NzUxLCA1NzU2LCA1NzYxLCA1NzY2LCA1NzcxLCA1Nzc2LCA1NzgxLCA1Nzg2LCA1NzkxLCA1Nzk1LCAKKyAgICA1Nzk5LCA1ODA1LCA1ODA5LCA1ODE0LCA1ODIwLCA1ODI4LCA1ODMzLCA1ODM4LCA1ODQ1LCA1ODUwLCA1ODU1LCA1ODYyLCAKKyAgICA1ODcxLCA1ODgwLCA1ODkxLCA1ODk5LCA1OTA0LCA1OTA5LCA1OTE0LCA1OTIxLCA1OTI2LCA1OTMyLCA1OTM3LCA1OTQyLCAKKyAgICA1OTQ3LCA1OTUyLCA1OTU3LCA1OTYyLCA1OTcwLCA1OTc2LCA1OTgxLCA1OTg1LCA1OTkwLCA1OTk1LCA2MDAwLCA2MDA1LCAKKyAgICA2MDEwLCA2MDE1LCA2MDIwLCA2MDI0LCA2MDMwLCA2MDM0LCA2MDM5LCA2MDQ0LCA2MDQ5LCA2MDUzLCA2MDU4LCA2MDYzLCAKKyAgICA2MDY4LCA2MDczLCA2MDc3LCA2MDgyLCA2MDg2LCA2MDkxLCA2MDk2LCA2MTAxLCA2MTA2LCA2MTEyLCA2MTE3LCA2MTIzLCAKKyAgICA2MTI3LCA2MTMyLCA2MTM2LCA2MTQwLCA2MTQ1LCA2MTUwLCA2MTU1LCA2MTYwLCA2MTY1LCA2MTcwLCA2MTc1LCA2MTc5LCAKKyAgICA2MTg1LCA2MTg5LCA2MTk0LCA2MTk5LCA2MjA0LCA2MjA4LCA2MjEzLCA2MjE4LCA2MjIzLCA2MjI4LCA2MjMyLCA2MjM3LCAKKyAgICA2MjQxLCA2MjQ2LCA2MjUxLCA2MjU2LCA2MjYxLCA2MjY3LCA2MjcyLCA2Mjc4LCA2MjgyLCA2Mjg3LCA2MjkxLCA2Mjk5LCAKKyAgICA2MzA0LCA2MzA5LCA2MzE0LCA2MzIxLCA2MzI2LCA2MzMyLCA2MzM3LCA2MzQyLCA2MzQ3LCA2MzUyLCA2MzU3LCA2MzYyLCAKKyAgICA2MzcwLCA2Mzc2LCA2MzgxLCA2Mzg2LCA2MzkxLCA2Mzk2LCA2NDAxLCA2NDA3LCA2NDEzLCA2NDIwLCA2NDI3LCA2NDM2LCAKKyAgICA2NDQ1LCA2NDUyLCA2NDU5LCA2NDY4LCA2NDc3LCA2NDgyLCA2NDg3LCA2NDkyLCA2NDk3LCA2NTAyLCA2NTA3LCA2NTEyLCAKKyAgICA2NTE3LCA2NTI4LCA2NTM5LCA2NTQ0LCA2NTQ5LCA2NTU2LCA2NTYzLCA2NTcxLCA2NTc5LCA2NTg0LCA2NTg5LCA2NTk0LCAKKyAgICA2NTk5LCA2NjAzLCA2NjA3LCA2NjExLCA2NjE3LCA2NjIzLCA2NjI3LCA2NjM0LCA2NjM5LCA2NjQ5LCA2NjU5LCA2NjY1LCAKKyAgICA2NjcxLCA2Njc5LCA2Njg3LCA2Njk1LCA2NzAzLCA2NzEwLCA2NzE3LCA2NzI2LCA2NzM1LCA2NzQzLCA2NzUxLCA2NzU5LCAKKyAgICA2NzY3LCA2Nzc1LCA2NzgzLCA2NzkxLCA2Nzk5LCA2ODA2LCA2ODEzLCA2ODE5LCA2ODI1LCA2ODMzLCA2ODQxLCA2ODQ4LCAKKyAgICA2ODU1LCA2ODY0LCA2ODczLCA2ODc5LCA2ODg1LCA2ODkzLCA2OTAxLCA2OTA5LCA2OTE3LCA2OTIzLCA2OTI5LCA2OTM3LCAKKyAgICA2OTQ1LCA2OTUzLCA2OTYxLCA2OTY4LCA2OTc1LCA2OTgzLCA2OTkxLCA2OTk5LCA3MDA3LCA3MDEyLCA3MDE3LCA3MDI0LCAKKyAgICA3MDMxLCA3MDQxLCA3MDUxLCA3MDU1LCA3MDYzLCA3MDcxLCA3MDc4LCA3MDg1LCA3MDkzLCA3MTAxLCA3MTA4LCA3MTE1LCAKKyAgICA3MTIzLCA3MTMxLCA3MTM4LCA3MTQ1LCA3MTUzLCA3MTYxLCA3MTY2LCA3MTczLCA3MTgwLCA3MTg3LCA3MTk0LCA3MjAwLCAKKyAgICA3MjA2LCA3MjE0LCA3MjIyLCA3MjI3LCA3MjMyLCA3MjQwLCA3MjQ4LCA3MjU2LCA3MjY0LCA3MjcyLCA3MjgwLCA3Mjg3LCAKKyAgICA3Mjk0LCA3MzAyLCA3MzEwLCA3MzE4LCA3MzI2LCA3MzMzLCA3MzQwLCA3MzQ2LCA3MzUyLCA3MzYxLCA3MzcwLCA3Mzc3LCAKKyAgICA3Mzg0LCA3MzkxLCA3Mzk4LCA3NDA1LCA3NDEyLCA3NDE5LCA3NDI2LCA3NDM0LCA3NDQyLCA3NDUwLCA3NDU4LCA3NDY2LCAKKyAgICA3NDc0LCA3NDg0LCA3NDk0LCA3NTAxLCA3NTA4LCA3NTE1LCA3NTIyLCA3NTI5LCA3NTM2LCA3NTQzLCA3NTUwLCA3NTU3LCAKKyAgICA3NTY0LCA3NTcxLCA3NTc4LCA3NTg1LCA3NTkyLCA3NTk5LCA3NjA2LCA3NjEzLCA3NjIwLCA3NjI3LCA3NjM0LCA3NjQxLCAKKyAgICA3NjQ4LCA3NjU1LCA3NjYyLCA3NjY3LCA3NjcyLCA3Njc3LCA3NjgyLCA3Njg3LCA3NjkyLCA3Njk3LCA3NzAyLCA3NzA3LCAKKyAgICA3NzEyLCA3NzE4LCA3NzI0LCA3NzMzLCA3NzQyLCA3NzUxLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NzkyLCA3Nzk3LCA3ODAyLCA3ODA3LCA3ODEyLCA3ODE3LCA3ODIyLCA3ODI3LCA3ODMyLCAKKyAgICA3ODM2LCA3ODQxLCA3ODQ2LCA3ODUxLCA3ODU2LCA3ODYxLCA3ODY2LCA3ODcxLCA3ODc2LCA3ODgxLCA3ODg2LCA3ODkxLCAKKyAgICA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMwLCA3OTM1LCA3OTQwLCA3OTQ1LCA3OTUwLCAKKyAgICA3OTU1LCA3OTYwLCA3OTY1LCA3OTcwLCA3OTc1LCAwLCAwLCA3OTgwLCA3OTg3LCA3OTkwLCA3OTk0LCA3OTk4LCA4MDAxLCAKKyAgICA4MDA1LCAwLCA4MDA5LCA4MDE0LCA4MDE5LCA4MDI0LCA4MDI5LCA4MDM0LCA4MDM5LCA4MDQ0LCA4MDQ5LCA4MDUzLCAKKyAgICA4MDU4LCA4MDYzLCA4MDY4LCA4MDczLCA4MDc4LCA4MDgzLCA4MDg4LCA4MDkzLCA4MDk4LCA4MTAzLCA4MTA4LCA4MTEzLCAKKyAgICA4MTE4LCA4MTIzLCA4MTI4LCA4MTMzLCA4MTM4LCA4MTQzLCA4MTQ3LCA4MTUyLCA4MTU3LCA4MTYyLCA4MTY3LCA4MTcyLCAKKyAgICA4MTc3LCA4MTgyLCA4MTg3LCA4MTkyLCA4MTk3LCAwLCA4MjA0LCA4MjA5LCAwLCAwLCAwLCAwLCA4MjEyLCAwLCA4MjE2LCAKKyAgICA4MjIxLCA4MjI2LCA4MjMxLCA4MjM4LCA4MjQ1LCA4MjUwLCA4MjU1LCA4MjYwLCA4MjY1LCA4MjcwLCA4Mjc1LCA4MjgwLCAKKyAgICA4Mjg3LCA4MjkyLCA4Mjk5LCA4MzA2LCA4MzExLCA4MzE4LCA4MzIzLCA4MzI4LCA4MzMzLCA4MzQwLCA4MzQ1LCA4MzUwLCAKKyAgICA4MzU3LCA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkyLCA4Mzk3LCA4NDA0LCA4NDExLCA4NDE4LCA4NDIzLCAKKyAgICA4NDI4LCA4NDMzLCA4NDM4LCA4NDQzLCA4NDQ4LCA4NDU4LCA4NDYzLCA4NDcxLCA4NDc2LCA4NDgxLCA4NDg2LCA4NDkxLCAKKyAgICA4NDk4LCA4NTA1LCA4NTEyLCA4NTE4LCA4NTI0LCA4NTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTM4LCA4NTQyLCAKKyAgICA4NTQ2LCA4NTUwLCA4NTU0LCA4NTU4LCA4NTYyLCA4NTY2LCA4NTcwLCA4NTc0LCA4NTc4LCA4NTgzLCA4NTg3LCA4NTkxLCAKKyAgICA4NTk2LCA4NjAwLCA4NjA1LCA4NjA5LCA4NjEzLCA4NjE3LCA4NjIyLCA4NjI2LCA4NjMxLCA4NjM1LCA4NjM5LCA4NjQzLCAKKyAgICA4NjQ3LCAwLCAwLCAwLCAwLCAwLCA4NjUxLCA4NjU4LCA4NjY2LCA4NjczLCA4Njc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4NjgzLCA4Njg2LCA4NjkwLCA4Njk1LCA4Njk5LCAwLCA4NzAzLCA4NzA5LCA4NzE1LCA4NzE4LCAKKyAgICA4NzI1LCA4NzM0LCA4NzM3LCA4NzQwLCA4NzQ1LCA4NzUxLCA4NzU1LCA4NzYzLCA4NzY5LCA4Nzc1LCA4NzgzLCA4Nzg3LCAKKyAgICA4NzkyLCA4ODAzLCA4ODA4LCA4ODEyLCA4ODE2LCA4ODIwLCAwLCAwLCA4ODIzLCA4ODMwLCA4ODM0LCA4ODQwLCA4ODQ0LCAKKyAgICA4ODUxLCA4ODU3LCA4ODY0LCA4ODcwLCA4ODc2LCA4ODgwLCA4ODg0LCA4ODkwLCA4ODk0LCA4ODk4LCA4OTAyLCA4OTA2LCAKKyAgICA4OTEwLCA4OTE0LCA4OTE4LCA4OTIyLCA4OTI2LCA4OTMwLCA4OTM0LCA4OTM4LCA4OTQyLCA4OTQ2LCA4OTUwLCA4OTU0LCAKKyAgICA4OTU4LCA4OTY2LCA4OTc0LCA4OTg0LCA4OTkzLCA5MDAyLCA5MDA1LCA5MDA5LCA5MDEzLCA5MDE3LCA5MDIxLCA5MDI1LCAKKyAgICA5MDI5LCA5MDMzLCA5MDM3LCA5MDQyLCA5MDQ2LCA5MDQ5LCA5MDUyLCA5MDU1LCA5MDU4LCA5MDYxLCA5MDY0LCA5MDY3LCAKKyAgICA5MDcwLCA5MDc0LCA5MDc3LCA5MDgwLCA5MDg1LCA5MDkwLCA5MDk2LCA5MDk5LCA5MTA2LCA5MTE1LCA5MTIwLCA5MTI1LCAKKyAgICA5MTMyLCA5MTM3LCA5MTQyLCA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCA5MTc4LCAKKyAgICA5MTgyLCA5MTg3LCA5MTkyLCA5MTk5LCA5MjA1LCA5MjExLCA5MjE3LCA5MjIyLCA5MjMwLCA5MjM4LCA5MjQzLCA5MjQ5LCAKKyAgICA5MjU1LCA5MjYxLCA5MjY3LCA5MjcxLCA5Mjc1LCA5Mjc5LCA5Mjg2LCA5Mjk2LCA5MzAwLCA5MzA0LCA5MzA4LCA5MzE0LCAKKyAgICA5MzIyLCA5MzI2LCA5MzMwLCA5MzM3LCA5MzQxLCA5MzQ1LCA5MzQ5LCA5MzU2LCA5MzYzLCA5Mzc1LCA5Mzc5LCA5MzgzLCAKKyAgICA5Mzg3LCA5Mzk3LCA5NDA2LCA5NDEwLCA5NDE4LCA5NDI1LCA5NDMyLCA5NDQxLCA5NDUyLCA5NDYwLCA5NDY0LCA5NDczLCAKKyAgICA5NDg0LCA5NDkyLCA5NTA1LCA5NTEzLCA5NTIxLCA5NTI5LCA5NTM3LCA5NTQzLCA5NTUyLCA5NTU5LCA5NTYzLCA5NTcxLCAKKyAgICA5NTc1LCA5NTgyLCA5NTkwLCA5NTk0LCA5NjAwLCA5NjA3LCA5NjE0LCA5NjE4LCA5NjI2LCA5NjMwLCA5NjM3LCA5NjQxLCAKKyAgICA5NjQ5LCA5NjUzLCA5NjYxLCA5NjY5LCA5Njc2LCA5Njg0LCA5NjkyLCA5Njk5LCA5NzA1LCA5NzA5LCA5NzE2LCA5NzI0LCAKKyAgICA5NzMwLCA5NzM3LCA5NzQ0LCA5NzUwLCA5NzU5LCA5NzY3LCA5Nzc0LCA5NzgwLCA5Nzg0LCA5Nzg3LCA5NzkxLCA5Nzk3LCAKKyAgICA5ODA1LCA5ODA5LCA5ODE1LCA5ODIxLCA5ODI4LCA5ODM1LCA5ODM4LCA5ODQ1LCA5ODUwLCA5ODU4LCA5ODYzLCA5ODY3LCAKKyAgICA5ODgwLCA5ODkzLCA5ODk5LCA5OTA2LCA5OTExLCA5OTE3LCA5OTIyLCA5OTI4LCA5OTM4LCA5OTQ1LCA5OTU0LCA5OTY0LCAKKyAgICA5OTcwLCA5OTc1LCA5OTgwLCA5OTg0LCA5OTg4LCA5OTkzLCA5OTk4LCAxMDAwNCwgMTAwMTIsIDEwMDIwLCAxMDAzMSwgCisgICAgMTAwMzYsIDEwMDQ1LCAxMDA1NCwgMTAwNjEsIDEwMDY3LCAxMDA3MywgMTAwNzksIDEwMDg1LCAxMDA5MSwgMTAwOTcsIAorICAgIDEwMTAzLCAxMDEwOSwgMTAxMTUsIDEwMTIyLCAxMDEyOSwgMTAxMzYsIDEwMTQyLCAxMDE1MCwgMTAxNTksIDEwMTY1LCAKKyAgICAxMDE3MiwgMTAxNzksIDEwMTg0LCAxMDE4OSwgMTAxOTMsIDEwMjAwLCAxMDIwNywgMTAyMTYsIDEwMjI1LCAxMDIyOCwgCisgICAgMTAyMzMsIDEwMjM4LCAwLCAxMDI0MywgMTAyNDcsIDEwMjUxLCAxMDI1NywgMTAyNjEsIDEwMjY1LCAxMDI3MSwgMTAyNzUsIAorICAgIDEwMjgzLCAxMDI4NywgMTAyOTEsIDEwMjk1LCAxMDI5OSwgMTAzMDMsIDEwMzA5LCAxMDMxMywgMTAzMTksIDEwMzIzLCAKKyAgICAxMDMyNywgMTAzMzEsIDEwMzM1LCAxMDMzOSwgMTAzNDQsIDEwMzQ3LCAxMDM1MSwgMTAzNTcsIDEwMzYxLCAxMDM2NSwgCisgICAgMTAzNjksIDEwMzczLCAxMDM3NywgMTAzODMsIDEwMzg5LCAxMDM5NSwgMTAzOTksIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAorICAgIDEwNDE2LCAxMDQyMSwgMTA0MjUsIDEwNDI5LCAxMDQzNiwgMTA0NDMsIDEwNDQ3LCAxMDQ1MSwgMTA0NTYsIDEwNDYwLCAKKyAgICAxMDQ2NCwgMTA0NjcsIDEwNDcyLCAxMDQ3NSwgMTA0NzgsIDEwNDgzLCAxMDQ4OCwgMTA0OTIsIDEwNDk2LCAxMDUwMiwgCisgICAgMTA1MDgsIDEwNTExLCAwLCAwLCAxMDUxNCwgMTA1MjAsIDEwNTI2LCAxMDUzMiwgMTA1NDIsIDEwNTU0LCAxMDU2NiwgCisgICAgMTA1ODMsIDEwNTk1LCAxMDYwNiwgMTA2MTQsIDEwNjIxLCAxMDYzMiwgMTA2NDcsIDEwNjU4LCAxMDY2NCwgMTA2NzMsIAorICAgIDEwNjgxLCAxMDY5MywgMTA3MDMsIDEwNzExLCAxMDcyMywgMTA3MzAsIDEwNzM4LCAxMDc1MCwgMTA3NTYsIDEwNzYyLCAKKyAgICAxMDc3MCwgMTA3NzgsIDEwNzg2LCAxMDc5MiwgMTA4MDIsIDEwODA5LCAxMDgxOSwgMTA4MjksIDEwODQyLCAxMDg1NiwgCisgICAgMTA4NzAsIDEwODgwLCAxMDg5MSwgMTA5MDIsIDEwOTE1LCAxMDkyOCwgMTA5NDIsIDEwOTU0LCAxMDk2NiwgMTA5NzksIAorICAgIDEwOTkyLCAxMTAwNCwgMTEwMTcsIDExMDI2LCAxMTAzNCwgMTEwMzksIDExMDQ0LCAxMTA0OSwgMTEwNTQsIDExMDU5LCAKKyAgICAxMTA2NCwgMTEwNjksIDExMDc0LCAxMTA3OSwgMTEwODQsIDExMDg5LCAxMTA5NCwgMTEwOTksIDExMTA0LCAxMTEwOSwgCisgICAgMTExMTQsIDExMTE5LCAxMTEyNCwgMTExMjksIDExMTM0LCAxMTEzOSwgMTExNDQsIDExMTQ5LCAxMTE1NCwgMTExNTksIAorICAgIDExMTY0LCAxMTE2OSwgMTExNzQsIDExMTc5LCAxMTE4NCwgMTExODksIDExMTk0LCAxMTE5OCwgMTEyMDMsIDExMjA4LCAKKyAgICAxMTIxMywgMTEyMTgsIDExMjIzLCAxMTIyNywgMTEyMzEsIDExMjM1LCAxMTIzOSwgMTEyNDMsIDExMjQ3LCAxMTI1MSwgCisgICAgMTEyNTUsIDExMjU5LCAxMTI2MywgMTEyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMjcyLCAxMTI3NywgMTEyODEsIDExMjg1LCAxMTI4OSwgMTEyOTMsIDExMjk3LCAxMTMwMSwgMTEzMDUsIDExMzA5LCAKKyAgICAxMTMxMywgMTEzMTcsIDExMzIyLCAxMTMyNiwgMTEzMzAsIDExMzM0LCAxMTMzOSwgMTEzNDMsIDExMzQ4LCAxMTM1MywgCisgICAgMTEzNTgsIDExMzYyLCAxMTM2NywgMTEzNzIsIDExMzc3LCAxMTM4MiwgMTEzODYsIDExMzkxLCAxMTM5NSwgMTE0MDAsIAorICAgIDExNDA1LCAxMTQwOSwgMTE0MTQsIDExNDIxLCAxMTQyNSwgMTE0MzAsIDExNDM0LCAxMTQzOCwgMTE0NDMsIDExNDQ3LCAKKyAgICAxMTQ1NCwgMTE0NjEsIDExNDY4LCAxMTQ3NCwgMTE0ODIsIDExNDkwLCAxMTQ5OSwgMTE1MDcsIDExNTE0LCAxMTUyMSwgCisgICAgMTE1MjksIDExNTM1LCAxMTU0MSwgMTE1NDcsIDExNTUzLCAxMTU2MCwgMTE1NjUsIDExNTY5LCAxMTU3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTE1NzgsIDExNTgzLCAxMTU4OCwgMTE1OTMsIDExNTk4LCAxMTYwMywgMTE2MDgsIDExNjEzLCAxMTYxOCwgCisgICAgMTE2MjMsIDExNjI4LCAxMTYzMywgMTE2MzgsIDExNjQzLCAxMTY0OCwgMTE2NTMsIDExNjU4LCAxMTY2MywgMTE2NjgsIAorICAgIDExNjczLCAxMTY3OCwgMTE2ODMsIDExNjg4LCAxMTY5MywgMTE2OTgsIDExNzAzLCAxMTcwOCwgMTE3MTYsIDExNzIzLCAKKyAgICAxMTcyOSwgMTE3MzQsIDExNzQyLCAxMTc0OSwgMTE3NTUsIDExNzYyLCAxMTc2OCwgMTE3NzMsIDExNzgwLCAxMTc4NywgCisgICAgMTE3OTMsIDExNzk4LCAxMTgwMywgMTE4MDksIDExODE0LCAxMTgxOSwgMTE4MjUsIDAsIDAsIDExODMwLCAxMTgzNiwgCisgICAgMTE4NDIsIDExODQ4LCAxMTg1NCwgMTE4NjAsIDExODY2LCAxMTg3MSwgMTE4NzksIDExODg1LCAxMTg5MSwgMTE4OTcsIAorICAgIDExOTAzLCAxMTkwOSwgMTE5MTcsIDAsIDExOTIzLCAxMTkyOCwgMTE5MzMsIDExOTM4LCAxMTk0MywgMTE5NDgsIDExOTUzLCAKKyAgICAxMTk1OCwgMTE5NjMsIDExOTY4LCAxMTk3MywgMTE5NzgsIDExOTgzLCAxMTk4OCwgMTE5OTMsIDExOTk4LCAxMjAwMywgCisgICAgMTIwMDgsIDEyMDEzLCAxMjAxOCwgMTIwMjMsIDEyMDI4LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA0OCwgMTIwNTMsIAorICAgIDEyMDU4LCAwLCAwLCAxMjA2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjI4NzIsIDYyODgxLCA2Mjg5MCwgNjI5MDEsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDYyOTI1LCA2MjkzMiwgNjI5MzgsIAotICAgIDYyOTQzLCA2Mjk0OCwgNjI5NTMsIDYyOTU4LCA2Mjk2NSwgNjI5NzAsIDYyOTc1LCA2Mjk4MCwgNjI5OTEsIDYyOTk2LCAKLSAgICA2MzAwMSwgNjMwMDgsIDYzMDEzLCA2MzAyMCwgNjMwMjUsIDYzMDMwLCA2MzAzNywgNjMwNDQsIDYzMDUxLCA2MzA2MCwgCi0gICAgNjMwNjksIDYzMDc0LCA2MzA3OSwgNjMwODQsIDYzMDkxLCA2MzA5NiwgNjMxMDYsIDYzMTEzLCA2MzExOCwgNjMxMjMsIAotICAgIDYzMTI4LCA2MzEzMywgNjMxMzgsIDYzMTQzLCA2MzE1MiwgNjMxNTksIDYzMTY2LCA2MzE3MSwgNjMxNzgsIDYzMTgzLCAKLSAgICA2MzE5MCwgNjMxOTksIDYzMjEwLCA2MzIxNSwgNjMyMjQsIDYzMjI5LCA2MzIzNiwgNjMyNDUsIDYzMjU0LCA2MzI1OSwgCi0gICAgNjMyNjQsIDYzMjcxLCA2MzI3NywgNjMyODQsIDYzMjkxLCA2MzI5NSwgNjMyOTksIDYzMzAyLCA2MzMwNiwgNjMzMTAsIAotICAgIDYzMzE0LCA2MzMxOCwgNjMzMjIsIDYzMzI2LCA2MzMzMCwgNjMzMzMsIDYzMzM3LCA2MzM0MSwgNjMzNDUsIDYzMzQ5LCAKLSAgICA2MzM1MywgNjMzNTcsIDYzMzYwLCA2MzM2NCwgNjMzNjgsIDYzMzcxLCA2MzM3NSwgNjMzNzksIDYzMzgzLCA2MzM4NywgCi0gICAgNjMzOTEsIDYzMzk1LCA2MzM5OSwgNjM0MDMsIDYzNDA3LCA2MzQxMSwgNjM0MTUsIDYzNDE5LCA2MzQyMywgNjM0MjcsIAotICAgIDYzNDMxLCA2MzQzNSwgNjM0MzksIDYzNDQzLCA2MzQ0NywgNjM0NTEsIDYzNDU1LCA2MzQ1OSwgNjM0NjMsIDYzNDY3LCAKLSAgICA2MzQ3MSwgNjM0NzUsIDYzNDc5LCA2MzQ4MywgNjM0ODcsIDYzNDkxLCA2MzQ5NSwgNjM0OTksIDYzNTAzLCA2MzUwNywgCi0gICAgNjM1MTEsIDYzNTE1LCA2MzUxOSwgNjM1MjMsIDYzNTI3LCA2MzUzMSwgNjM1MzUsIDYzNTM5LCA2MzU0MywgNjM1NDcsIAotICAgIDYzNTUwLCA2MzU1NCwgNjM1NTgsIDYzNTYyLCA2MzU2NiwgNjM1NzAsIDYzNTc0LCA2MzU3OCwgNjM1ODIsIDYzNTg2LCAKLSAgICA2MzU5MCwgNjM1OTQsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjEwLCA2MzYxNCwgNjM2MTgsIDYzNjIyLCA2MzYyNiwgCi0gICAgNjM2MzAsIDYzNjM0LCA2MzYzOCwgNjM2NDIsIDYzNjQ2LCA2MzY1MCwgNjM2NTQsIDYzNjU4LCA2MzY2MiwgNjM2NjYsIAotICAgIDYzNjcwLCA2MzY3NCwgNjM2NzgsIDYzNjgyLCA2MzY4NiwgNjM2OTAsIDYzNjk0LCA2MzY5OCwgNjM3MDIsIDYzNzA2LCAKLSAgICA2MzcxMCwgNjM3MTQsIDYzNzE4LCA2MzcyMiwgNjM3MjYsIDYzNzMwLCA2MzczNCwgNjM3MzgsIDYzNzQyLCA2Mzc0NiwgCi0gICAgNjM3NTAsIDYzNzU0LCA2Mzc1OCwgNjM3NjIsIDYzNzY2LCA2Mzc3MCwgNjM3NzQsIDYzNzc4LCA2Mzc4MiwgNjM3ODYsIAotICAgIDYzNzkwLCA2Mzc5NCwgNjM3OTgsIDYzODAyLCA2MzgwNiwgNjM4MTAsIDYzODE0LCA2MzgxOCwgNjM4MjIsIDYzODI2LCAKLSAgICA2MzgzMCwgNjM4MzQsIDYzODM4LCA2Mzg0MiwgNjM4NDYsIDYzODUwLCA2Mzg1NCwgNjM4NTgsIDYzODYyLCA2Mzg2NiwgCi0gICAgNjM4NzAsIDYzODc0LCA2Mzg3OCwgNjM4ODIsIDYzODg2LCA2Mzg5MCwgNjM4OTQsIDYzODk4LCA2MzkwMiwgNjM5MDYsIAotICAgIDYzOTEwLCA2MzkxNCwgNjM5MTgsIDYzOTIyLCA2MzkyNiwgNjM5MzAsIDYzOTM0LCA2MzkzOCwgNjM5NDIsIDYzOTQ2LCAKLSAgICA2Mzk1MCwgNjM5NTQsIDYzOTU4LCA2Mzk2MiwgNjM5NjYsIDYzOTcwLCA2Mzk3NCwgNjM5NzgsIDYzOTgyLCA2Mzk4NiwgCi0gICAgNjM5OTAsIDYzOTk0LCA2Mzk5OCwgNjQwMDIsIDY0MDA2LCA2NDAxMCwgNjQwMTQsIDY0MDE4LCA2NDAyMSwgNjQwMjUsIAotICAgIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgNjQwNjEsIDY0MDY1LCAKLSAgICA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4MSwgNjQwODUsIDY0MDg5LCA2NDA5MywgNjQwOTcsIDY0MTAxLCA2NDEwNSwgCi0gICAgNjQxMDksIDY0MTEzLCA2NDExNywgNjQxMjEsIDY0MTI1LCA2NDEyOSwgNjQxMzMsIDY0MTM3LCA2NDE0MSwgNjQxNDUsIAotICAgIDY0MTQ5LCA2NDE1MywgNjQxNTcsIDY0MTYxLCA2NDE2NSwgNjQxNjksIDY0MTczLCA2NDE3NywgNjQxODEsIDY0MTg1LCAKLSAgICA2NDE4OSwgNjQxOTMsIDY0MTk3LCA2NDIwMSwgNjQyMDUsIDY0MjA5LCA2NDIxMywgNjQyMTcsIDY0MjIxLCA2NDIyNSwgCi0gICAgNjQyMjksIDY0MjMzLCA2NDIzNywgNjQyNDEsIDY0MjQ1LCA2NDI0OSwgNjQyNTMsIDY0MjU3LCA2NDI2MSwgNjQyNjUsIAotICAgIDY0MjY5LCA2NDI3MywgNjQyNzcsIDY0MjgxLCA2NDI4NSwgNjQyODksIDY0MjkzLCA2NDI5NywgNjQzMDEsIDY0MzA1LCAKLSAgICA2NDMwOSwgNjQzMTMsIDY0MzE3LCA2NDMyMSwgNjQzMjUsIDY0MzI5LCA2NDMzMywgNjQzMzcsIDY0MzQxLCA2NDM0NSwgCi0gICAgNjQzNDksIDY0MzUzLCA2NDM1NywgNjQzNjEsIDY0MzY1LCA2NDM2OSwgNjQzNzMsIDY0Mzc3LCA2NDM4MSwgNjQzODUsIAotICAgIDY0Mzg5LCA2NDM5MywgNjQzOTcsIDY0NDAxLCA2NDQwNSwgNjQ0MDksIDY0NDEzLCA2NDQxNywgNjQ0MjEsIDY0NDI1LCAKLSAgICA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIDY0NDQ5LCA2NDQ1MywgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgCi0gICAgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg0LCA2NDQ4OCwgNjQ0OTIsIDY0NDk2LCA2NDUwMCwgNjQ1MDQsIAotICAgIDY0NTA4LCA2NDUxMiwgNjQ1MTYsIDY0NTIwLCA2NDUyNCwgNjQ1MjgsIDY0NTMyLCA2NDUzNiwgNjQ1NDAsIDY0NTQ0LCAKLSAgICA2NDU0OCwgNjQ1NTIsIDY0NTU2LCA2NDU2MCwgNjQ1NjQsIDY0NTY4LCA2NDU3MiwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgCi0gICAgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgNjQ2MDAsIDY0NjA0LCA2NDYwOCwgNjQ2MTIsIDY0NjE2LCA2NDYyMCwgNjQ2MjQsIAotICAgIDY0NjI4LCA2NDYzMiwgNjQ2MzYsIDY0NjQwLCA2NDY0NCwgNjQ2NDgsIDY0NjUyLCA2NDY1NiwgNjQ2NjAsIDY0NjY0LCAKLSAgICA2NDY2OCwgNjQ2NzIsIDY0Njc2LCA2NDY4MCwgNjQ2ODQsIDY0Njg4LCA2NDY5MiwgNjQ2OTYsIDY0NzAwLCA2NDcwNCwgCi0gICAgNjQ3MDgsIDY0NzEyLCA2NDcxNiwgNjQ3MjAsIDY0NzI0LCA2NDcyOCwgNjQ3MzIsIDY0NzM2LCA2NDc0MCwgNjQ3NDQsIAotICAgIDY0NzQ4LCA2NDc1MiwgNjQ3NTYsIDY0NzYwLCA2NDc2NCwgNjQ3NjgsIDY0NzcyLCA2NDc3NiwgNjQ3ODAsIDY0Nzg0LCAKLSAgICA2NDc4OCwgNjQ3OTIsIDY0Nzk2LCA2NDgwMCwgNjQ4MDQsIDY0ODA4LCA2NDgxMiwgNjQ4MTYsIDY0ODIwLCA2NDgyNCwgCi0gICAgNjQ4MjgsIDY0ODMyLCA2NDgzNiwgNjQ4NDAsIDY0ODQzLCA2NDg0NywgNjQ4NTEsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIAotICAgIDY0ODY3LCA2NDg3MSwgNjQ4NzUsIDY0ODc5LCA2NDg4MywgNjQ4ODcsIDY0ODkxLCA2NDg5NSwgNjQ4OTksIDY0OTAzLCAKLSAgICA2NDkwNywgNjQ5MTEsIDY0OTE1LCA2NDkxOSwgNjQ5MjMsIDY0OTI3LCA2NDkzMSwgNjQ5MzUsIDY0OTM5LCA2NDk0MywgCi0gICAgNjQ5NDcsIDY0OTUxLCA2NDk1NSwgNjQ5NTksIDY0OTYzLCA2NDk2NywgNjQ5NzEsIDY0OTc1LCA2NDk3OSwgNjQ5ODMsIAotICAgIDY0OTg3LCA2NDk5MSwgNjQ5OTUsIDY0OTk5LCA2NTAwMywgNjUwMDcsIDY1MDExLCA2NTAxNSwgNjUwMTksIDY1MDIzLCAKLSAgICA2NTAyNywgNjUwMzEsIDY1MDM1LCA2NTAzOSwgNjUwNDMsIDY1MDQ3LCA2NTA1MSwgNjUwNTUsIDY1MDU5LCA2NTA2MywgCi0gICAgNjUwNjcsIDY1MDcxLCA2NTA3NSwgNjUwNzksIDY1MDgzLCA2NTA4NywgNjUwOTEsIDY1MDk1LCA2NTA5OSwgNjUxMDMsIAotICAgIDY1MTA3LCA2NTExMSwgNjUxMTUsIDY1MTE5LCA2NTEyMywgNjUxMjcsIDY1MTMxLCA2NTEzNSwgNjUxMzksIDY1MTQzLCAKLSAgICA2NTE0NywgNjUxNTEsIDY1MTU1LCA2NTE1OSwgNjUxNjMsIDY1MTY3LCA2NTE3MSwgNjUxNzUsIDY1MTc5LCA2NTE4MywgCi0gICAgNjUxODcsIDY1MTkxLCA2NTE5NSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTEsIDY1MjE1LCA2NTIxOSwgNjUyMjMsIAotICAgIDY1MjI3LCA2NTIzMSwgNjUyMzUsIDY1MjM5LCA2NTI0MywgNjUyNDcsIDY1MjUxLCA2NTI1NSwgNjUyNTksIDY1MjYzLCAKLSAgICA2NTI2NywgNjUyNzEsIDY1Mjc1LCA2NTI3OSwgNjUyODMsIDY1Mjg3LCA2NTI5MSwgNjUyOTUsIDY1Mjk5LCA2NTMwMywgCi0gICAgNjUzMDcsIDY1MzExLCA2NTMxNSwgNjUzMTksIDY1MzIzLCA2NTMyNywgNjUzMzEsIDY1MzM1LCA2NTMzOCwgNjUzNDIsIAotICAgIDY1MzQ2LCA2NTM1MCwgNjUzNTQsIDY1MzU4LCA2NTM2MiwgNjUzNjYsIDY1MzcwLCA2NTM3NCwgNjUzNzgsIDY1MzgyLCAKLSAgICA2NTM4NiwgNjUzOTAsIDY1Mzk0LCA2NTM5OCwgNjU0MDIsIDY1NDA2LCA2NTQxMCwgNjU0MTQsIDY1NDE4LCA2NTQyMiwgCi0gICAgNjU0MjYsIDY1NDMwLCA2NTQzNCwgNjU0MzgsIDY1NDQyLCA2NTQ0NiwgNjU0NTAsIDY1NDU0LCA2NTQ1OCwgNjU0NjIsIAotICAgIDY1NDY2LCA2NTQ3MCwgNjU0NzQsIDY1NDc4LCA2NTQ4MiwgNjU0ODYsIDY1NDkwLCA2NTQ5NCwgNjU0OTgsIDY1NTAyLCAKLSAgICA2NTUwNiwgNjU1MTAsIDY1NTE0LCA2NTUxOCwgNjU1MjIsIDY1NTI2LCA2NTUzMCwgNjU1MzQsIDY1NTM4LCA2NTU0MiwgCi0gICAgNjU1NDYsIDY1NTUwLCA2NTU1NCwgNjU1NTgsIDY1NTYyLCA2NTU2NiwgNjU1NzAsIDY1NTc0LCA2NTU3OCwgNjU1ODIsIAotICAgIDY1NTg2LCA2NTU5MCwgNjU1OTQsIDY1NTk4LCA2NTYwMiwgNjU2MDYsIDY1NjEwLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCAKLSAgICA2NTYyNiwgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCA2NTY1MCwgNjU2NTQsIDY1NjU4LCA2NTY2MiwgCi0gICAgNjU2NjYsIDY1NjcwLCA2NTY3NCwgNjU2NzgsIDY1NjgyLCA2NTY4NiwgNjU2OTAsIDY1Njk0LCA2NTY5OCwgNjU3MDIsIAotICAgIDY1NzA2LCA2NTcxMCwgNjU3MTQsIDY1NzE4LCA2NTcyMiwgNjU3MjYsIDY1NzMwLCA2NTczNCwgNjU3MzgsIDY1NzQyLCAKLSAgICA2NTc0NiwgNjU3NTAsIDY1NzU0LCA2NTc1OCwgNjU3NjIsIDY1NzY2LCA2NTc3MCwgNjU3NzQsIDY1Nzc4LCA2NTc4MiwgCi0gICAgNjU3ODYsIDY1NzkwLCA2NTc5MywgNjU3OTcsIDY1ODAxLCA2NTgwNSwgNjU4MDksIDY1ODEzLCA2NTgxNywgNjU4MjEsIAotICAgIDY1ODI1LCA2NTgyOSwgNjU4MzMsIDY1ODM3LCA2NTg0MSwgNjU4NDUsIDY1ODQ5LCA2NTg1MywgNjU4NTcsIDY1ODYxLCAKLSAgICA2NTg2NSwgNjU4NjksIDY1ODczLCA2NTg3NywgNjU4ODEsIDY1ODg1LCA2NTg4OSwgNjU4OTMsIDY1ODk3LCA2NTkwMSwgCi0gICAgNjU5MDUsIDY1OTA5LCA2NTkxMywgNjU5MTcsIDY1OTIxLCA2NTkyNSwgNjU5MjksIDY1OTMzLCA2NTkzNywgNjU5NDEsIAotICAgIDY1OTQ1LCA2NTk0OSwgNjU5NTMsIDY1OTU3LCA2NTk2MSwgNjU5NjUsIDY1OTY5LCA2NTk3MywgNjU5NzcsIDY1OTgxLCAKLSAgICA2NTk4NSwgNjU5ODksIDY1OTkzLCA2NTk5NywgNjYwMDEsIDY2MDA1LCA2NjAwOSwgNjYwMTMsIDY2MDE3LCA2NjAyMSwgCi0gICAgNjYwMjUsIDY2MDI5LCA2NjAzMywgNjYwMzcsIDY2MDQxLCA2NjA0NSwgNjYwNDksIDY2MDUzLCA2NjA1NywgNjYwNjEsIAotICAgIDY2MDY1LCA2NjA2OSwgNjYwNzMsIDY2MDc3LCA2NjA4MSwgNjYwODUsIDY2MDg5LCA2NjA5MywgNjYwOTcsIDY2MTAxLCAKLSAgICA2NjEwNSwgNjYxMDksIDY2MTEzLCA2NjExNywgNjYxMjEsIDY2MTI1LCA2NjEyOSwgNjYxMzMsIDY2MTM3LCA2NjE0MSwgCi0gICAgNjYxNDUsIDY2MTQ5LCA2NjE1MywgNjYxNTcsIDY2MTYxLCA2NjE2NSwgNjYxNjksIDY2MTczLCA2NjE3NywgNjYxODEsIAotICAgIDY2MTg1LCA2NjE4OSwgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxMywgNjYyMTcsIDY2MjIxLCAKLSAgICA2NjIyNSwgNjYyMjksIDY2MjMzLCA2NjIzNywgNjYyNDEsIDY2MjQ1LCA2NjI0OSwgNjYyNTMsIDY2MjU3LCA2NjI2MSwgCi0gICAgNjYyNjUsIDY2MjY5LCA2NjI3MywgNjYyNzcsIDY2MjgxLCA2NjI4NSwgNjYyODksIDY2MjkzLCA2NjI5NywgNjYzMDEsIAotICAgIDY2MzA1LCA2NjMwOSwgNjYzMTMsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzI5LCA2NjMzMywgNjYzMzcsIDY2MzQxLCAKLSAgICA2NjM0NSwgNjYzNDksIDY2MzUzLCA2NjM1NywgNjYzNjEsIDY2MzY1LCA2NjM2OSwgNjYzNzMsIDY2Mzc3LCA2NjM4MSwgCi0gICAgNjYzODUsIDY2Mzg5LCA2NjM5MywgNjYzOTYsIDY2NDAwLCA2NjQwNCwgNjY0MDgsIDY2NDEyLCA2NjQxNiwgNjY0MjAsIAotICAgIDY2NDI0LCA2NjQyOCwgNjY0MzIsIDY2NDM2LCA2NjQ0MCwgNjY0NDQsIDY2NDQ4LCA2NjQ1MiwgNjY0NTYsIDY2NDYwLCAKLSAgICA2NjQ2NCwgNjY0NjgsIDY2NDcyLCA2NjQ3NiwgNjY0ODAsIDY2NDg0LCA2NjQ4OCwgNjY0OTIsIDY2NDk2LCA2NjUwMCwgCi0gICAgNjY1MDQsIDY2NTA4LCA2NjUxMiwgNjY1MTYsIDY2NTIwLCA2NjUyNCwgNjY1MjgsIDY2NTMyLCA2NjUzNiwgNjY1NDAsIAotICAgIDY2NTQ0LCA2NjU0OCwgNjY1NTIsIDY2NTU2LCA2NjU2MCwgNjY1NjQsIDY2NTY4LCA2NjU3MiwgNjY1NzYsIDY2NTgwLCAKLSAgICA2NjU4NCwgNjY1ODgsIDY2NTkyLCA2NjU5NiwgNjY2MDAsIDY2NjA0LCA2NjYwOCwgNjY2MTIsIDY2NjE2LCA2NjYyMCwgCi0gICAgNjY2MjQsIDY2NjI4LCA2NjYzMiwgNjY2MzYsIDY2NjQwLCA2NjY0NCwgNjY2NDgsIDY2NjUyLCA2NjY1NiwgNjY2NjAsIAotICAgIDY2NjY0LCA2NjY2OCwgNjY2NzIsIDY2Njc2LCA2NjY4MCwgNjY2ODQsIDY2Njg4LCA2NjY5MiwgNjY2OTYsIDY2NzAwLCAKLSAgICA2NjcwNCwgNjY3MDgsIDY2NzEyLCA2NjcxNiwgNjY3MjAsIDY2NzI0LCA2NjcyOCwgNjY3MzIsIDY2NzM2LCA2Njc0MCwgCi0gICAgNjY3NDQsIDY2NzQ4LCA2Njc1MiwgNjY3NTYsIDY2NzYwLCA2Njc2NCwgNjY3NjgsIDY2NzcyLCA2Njc3NiwgNjY3ODAsIAotICAgIDY2Nzg0LCA2Njc4OCwgNjY3OTIsIDY2Nzk2LCA2NjgwMCwgNjY4MDQsIDY2ODA4LCA2NjgxMiwgNjY4MTYsIDY2ODIwLCAKLSAgICA2NjgyNCwgNjY4MjgsIDY2ODMyLCA2NjgzNiwgNjY4NDAsIDY2ODQ0LCA2Njg0OCwgNjY4NTIsIDY2ODU2LCA2Njg2MCwgCi0gICAgNjY4NjQsIDY2ODY4LCA2Njg3MiwgNjY4NzYsIDY2ODgwLCA2Njg4NCwgNjY4ODgsIDY2ODkyLCA2Njg5NiwgNjY5MDAsIAotICAgIDY2OTA0LCA2NjkwOCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCA2NjkzMiwgNjY5MzYsIDY2OTQwLCAKLSAgICA2Njk0NCwgNjY5NDgsIDY2OTUyLCA2Njk1NiwgNjY5NjAsIDY2OTY0LCA2Njk2OCwgNjY5NzIsIDY2OTc2LCA2Njk4MCwgCi0gICAgNjY5ODQsIDY2OTg4LCA2Njk5MiwgNjY5OTYsIDY3MDAwLCA2NzAwNCwgNjcwMDgsIDY3MDEyLCA2NzAxNiwgNjcwMjAsIAotICAgIDY3MDI0LCA2NzAyOCwgNjcwMzIsIDY3MDM2LCA2NzA0MCwgNjcwNDQsIDY3MDQ4LCA2NzA1MiwgNjcwNTYsIDY3MDYwLCAKLSAgICA2NzA2NCwgNjcwNjgsIDY3MDcyLCA2NzA3NiwgNjcwODAsIDY3MDg0LCA2NzA4OCwgNjcwOTIsIDY3MDk2LCA2NzEwMCwgCi0gICAgNjcxMDQsIDY3MTA4LCA2NzExMiwgNjcxMTYsIDY3MTIwLCA2NzEyNCwgNjcxMjgsIDY3MTMyLCA2NzEzNiwgNjcxNDAsIAotICAgIDY3MTQ0LCA2NzE0OCwgNjcxNTIsIDY3MTU1LCA2NzE1OSwgNjcxNjMsIDY3MTY3LCA2NzE3MSwgNjcxNzUsIDY3MTc5LCAKLSAgICA2NzE4MywgNjcxODcsIDY3MTkxLCA2NzE5NSwgNjcxOTksIDY3MjAzLCA2NzIwNywgNjcyMTEsIDY3MjE1LCA2NzIxOSwgCi0gICAgNjcyMjMsIDY3MjI3LCA2NzIzMSwgNjcyMzUsIDY3MjM5LCA2NzI0MywgNjcyNDcsIDY3MjUxLCA2NzI1NSwgNjcyNTksIAotICAgIDY3MjYzLCA2NzI2NywgNjcyNzEsIDY3Mjc1LCA2NzI3OSwgNjcyODMsIDY3Mjg3LCA2NzI5MSwgNjcyOTUsIDY3Mjk5LCAKLSAgICA2NzMwMywgNjczMDcsIDY3MzExLCA2NzMxNSwgNjczMTksIDY3MzIzLCA2NzMyNywgNjczMzEsIDY3MzM1LCA2NzMzOSwgCi0gICAgNjczNDMsIDY3MzQ3LCA2NzM1MSwgNjczNTUsIDY3MzU5LCA2NzM2MywgNjczNjcsIDY3MzcxLCA2NzM3NSwgNjczNzksIAotICAgIDY3MzgzLCA2NzM4NywgNjczOTEsIDY3Mzk1LCA2NzM5OSwgNjc0MDMsIDY3NDA3LCA2NzQxMSwgNjc0MTUsIDY3NDE5LCAKLSAgICA2NzQyMywgNjc0MjcsIDY3NDMxLCA2NzQzNSwgNjc0MzksIDY3NDQzLCA2NzQ0NywgNjc0NTEsIDY3NDU1LCA2NzQ1OSwgCi0gICAgNjc0NjMsIDY3NDY3LCA2NzQ3MSwgNjc0NzUsIDY3NDc5LCA2NzQ4MywgNjc0ODcsIDY3NDkxLCA2NzQ5NSwgNjc0OTksIAotICAgIDY3NTAzLCA2NzUwNywgNjc1MTEsIDY3NTE1LCA2NzUxOSwgNjc1MjMsIDY3NTI3LCA2NzUzMSwgNjc1MzUsIDY3NTM5LCAKLSAgICA2NzU0MywgNjc1NDcsIDY3NTUxLCA2NzU1NSwgNjc1NTksIDY3NTYzLCA2NzU2NywgNjc1NzEsIDY3NTc1LCA2NzU3OSwgCi0gICAgNjc1ODMsIDY3NTg3LCA2NzU5MSwgNjc1OTUsIDY3NTk5LCA2NzYwMywgNjc2MDcsIDY3NjExLCA2NzYxNSwgNjc2MTksIAotICAgIDY3NjIzLCA2NzYyNywgNjc2MzEsIDY3NjM1LCA2NzYzOSwgNjc2NDMsIDY3NjQ3LCA2NzY1MSwgNjc2NTUsIDY3NjU5LCAKLSAgICA2NzY2MywgNjc2NjcsIDY3NjcxLCA2NzY3NSwgNjc2NzksIDY3NjgzLCA2NzY4NywgNjc2OTEsIDY3Njk1LCA2NzY5OSwgCi0gICAgNjc3MDMsIDY3NzA3LCA2NzcxMSwgNjc3MTUsIDY3NzE5LCA2NzcyMywgNjc3MjcsIDY3NzMxLCA2NzczNSwgNjc3MzksIAotICAgIDY3NzQzLCA2Nzc0NywgNjc3NTEsIDY3NzU1LCA2Nzc1OSwgNjc3NjMsIDY3NzY3LCA2Nzc3MSwgNjc3NzUsIDY3Nzc5LCAKLSAgICA2Nzc4MywgNjc3ODcsIDY3NzkxLCA2Nzc5NSwgNjc3OTksIDY3ODAzLCA2NzgwNywgNjc4MTEsIDY3ODE1LCA2NzgxOSwgCi0gICAgNjc4MjMsIDY3ODI3LCA2NzgzMSwgNjc4MzUsIDY3ODM5LCA2Nzg0MywgNjc4NDcsIDY3ODUxLCA2Nzg1NSwgNjc4NTksIAotICAgIDY3ODYzLCA2Nzg2NywgNjc4NzEsIDY3ODc1LCA2Nzg3OSwgNjc4ODMsIDY3ODg3LCA2Nzg5MSwgNjc4OTUsIDY3ODk5LCAKLSAgICA2NzkwMywgNjc5MDcsIDY3OTExLCA2NzkxNSwgNjc5MTksIDY3OTIzLCA2NzkyNywgNjc5MzEsIDY3OTM1LCAwLCAwLCAwLCAKLSAgICA2NzkzOSwgNjc5NDMsIDY3OTQ3LCA2Nzk1MSwgNjc5NTUsIDY3OTU5LCA2Nzk2MywgNjc5NjcsIDY3OTcxLCA2Nzk3NSwgCi0gICAgNjc5NzksIDY3OTgzLCA2Nzk4NywgNjc5OTEsIDY3OTk1LCA2Nzk5OSwgNjgwMDMsIDY4MDA3LCA2ODAxMSwgNjgwMTUsIAotICAgIDY4MDE5LCA2ODAyMywgNjgwMjcsIDY4MDMxLCA2ODAzNSwgNjgwMzksIDY4MDQzLCA2ODA0NywgNjgwNTEsIDY4MDU1LCAKLSAgICA2ODA1OSwgNjgwNjMsIDY4MDY3LCA2ODA3MSwgNjgwNzUsIDY4MDc5LCA2ODA4MywgNjgwODcsIDY4MDkxLCA2ODA5NSwgCi0gICAgNjgwOTksIDY4MTAzLCA2ODEwNywgNjgxMTEsIDY4MTE1LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMSwgNjgxMzUsIAotICAgIDY4MTM5LCA2ODE0MywgNjgxNDcsIDY4MTUxLCA2ODE1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjgxNTksIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzMsIDY4MTc4LCA2ODE4MywgNjgxODgsIDY4MTkzLCA2ODE5NywgNjgyMDIsIDY4MjA3LCAKLSAgICA2ODIxMiwgNjgyMTcsIDY4MjIyLCA2ODIyNywgNjgyMzIsIDY4MjM2LCA2ODI0MCwgNjgyNDUsIDY4MjUwLCA2ODI1NSwgCi0gICAgNjgyNjAsIDY4MjY1LCA2ODI2OSwgNjgyNzQsIDY4Mjc5LCA2ODI4NCwgNjgyODksIDY4Mjk0LCA2ODI5OCwgNjgzMDMsIAotICAgIDY4MzA3LCA2ODMxMiwgNjgzMTYsIDY4MzIxLCA2ODMyNSwgNjgzMjksIDY4MzMzLCA2ODMzOCwgNjgzNDMsIDY4MzQ4LCAKLSAgICA2ODM1NiwgNjgzNjQsIDY4MzcyLCA2ODM4MCwgNjgzODcsIDY4Mzk1LCA2ODQwMSwgNjg0MDksIDY4NDEzLCA2ODQxNywgCi0gICAgNjg0MjEsIDY4NDI1LCA2ODQyOSwgNjg0MzMsIDY4NDM3LCA2ODQ0MSwgNjg0NDUsIDY4NDQ5LCA2ODQ1MywgNjg0NTcsIAotICAgIDY4NDYxLCA2ODQ2NSwgNjg0NjksIDY4NDczLCA2ODQ3NywgNjg0ODEsIDY4NDg1LCA2ODQ4OSwgNjg0OTMsIDY4NDk3LCAKLSAgICA2ODUwMSwgNjg1MDUsIDY4NTA5LCA2ODUxMywgNjg1MTcsIDY4NTIxLCA2ODUyNSwgNjg1MjksIDY4NTMzLCA2ODUzNywgCi0gICAgNjg1NDEsIDY4NTQ1LCA2ODU0OSwgNjg1NTMsIDY4NTU2LCA2ODU2MCwgNjg1NjQsIDY4NTY4LCA2ODU3MiwgNjg1NzYsIAotICAgIDY4NTgwLCA2ODU4NCwgNjg1ODgsIDY4NTkyLCA2ODU5NiwgNjg2MDAsIDY4NjA0LCA2ODYwOCwgNjg2MTIsIDY4NjE2LCAKLSAgICA2ODYyMCwgNjg2MjQsIDY4NjI4LCA2ODYzMiwgNjg2MzYsIDY4NjQwLCA2ODY0NCwgNjg2NDgsIDY4NjUyLCA2ODY1NiwgCi0gICAgNjg2NjAsIDY4NjY0LCA2ODY2OCwgNjg2NzIsIDY4Njc2LCA2ODY4MCwgNjg2ODQsIDY4Njg4LCA2ODY5MiwgNjg2OTYsIAotICAgIDY4NzAwLCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNCwgNjg3MTgsIDY4NzIyLCA2ODcyNiwgNjg3MjksIDY4NzMzLCAKLSAgICA2ODczNywgNjg3NDEsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDY4NzU3LCA2ODc2MSwgNjg3NjUsIDY4NzY5LCA2ODc3MywgCi0gICAgNjg3NzcsIDY4NzgxLCA2ODc4NSwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgNjg4MDAsIDY4ODA0LCA2ODgwOCwgNjg4MTIsIAotICAgIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI3LCA2ODgzMCwgNjg4MzQsIDY4ODM4LCA2ODg0MiwgNjg4NDUsIDY4ODQ4LCAKLSAgICA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgNjg4ODAsIDY4ODg0LCA2ODg4OCwgCi0gICAgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIDY4OTIwLCA2ODkyNCwgNjg5MjgsIAotICAgIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCA2ODk2MCwgNjg5NjQsIDY4OTY4LCAKLSAgICA2ODk3MiwgNjg5NzYsIDY4OTgwLCA2ODk4NCwgNjg5ODgsIDY4OTkyLCA2ODk5NiwgNjg5OTksIDY5MDAzLCA2OTAwNywgCi0gICAgNjkwMTEsIDY5MDE1LCA2OTAxOSwgNjkwMjMsIDY5MDI3LCA2OTAzMSwgNjkwMzUsIDY5MDM5LCA2OTA0MywgNjkwNDcsIAotICAgIDY5MDUxLCA2OTA1NSwgNjkwNTksIDY5MDYzLCA2OTA2NywgNjkwNzEsIDY5MDc1LCA2OTA3OSwgNjkwODMsIDY5MDg3LCAKLSAgICA2OTA5MSwgNjkwOTUsIDY5MDk5LCA2OTEwMywgNjkxMDcsIDY5MTExLCA2OTExNSwgNjkxMTksIDY5MTIzLCA2OTEyNywgCi0gICAgNjkxMzEsIDY5MTM1LCA2OTEzOSwgNjkxNDMsIDY5MTQ2LCA2OTE1MCwgNjkxNTQsIDY5MTU4LCA2OTE2MiwgNjkxNjYsIAotICAgIDY5MTcwLCA2OTE3NCwgNjkxNzgsIDY5MTgyLCA2OTE4NiwgNjkxOTAsIDY5MTk0LCA2OTE5OCwgNjkyMDIsIDY5MjA2LCAKLSAgICA2OTIxMCwgNjkyMTMsIDY5MjE3LCA2OTIyMSwgNjkyMjUsIDY5MjI5LCA2OTIzMywgNjkyMzcsIDY5MjQxLCA2OTI0NSwgCi0gICAgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCA2OTI4MSwgNjkyODUsIAotICAgIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAwLCA2OTMwNCwgNjkzMDgsIDY5MzEyLCA2OTMxNiwgNjkzMjAsIDY5MzI0LCAKLSAgICA2OTMyOCwgNjkzMzIsIDY5MzM2LCA2OTM0MCwgNjkzNDQsIDY5MzQ4LCA2OTM1MiwgNjkzNTYsIDY5MzYwLCA2OTM2NCwgCi0gICAgNjkzNjgsIDY5MzcyLCA2OTM3NiwgNjkzODAsIDY5Mzg0LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCA2OTQwMCwgNjk0MDQsIAotICAgIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgNjk0NDAsIDY5NDQ0LCAKLSAgICA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzUsIDY5NDgwLCA2OTQ4NCwgCi0gICAgNjk0OTAsIDY5NDk1LCA2OTUwMSwgNjk1MDUsIDY5NTA5LCA2OTUxMywgNjk1MTcsIDY5NTIxLCA2OTUyNSwgNjk1MjksIAotICAgIDY5NTMzLCA2OTUzNywgNjk1NDEsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIDY5NTU3LCA2OTU2MCwgNjk1NjMsIDY5NTY2LCAKLSAgICA2OTU2OSwgNjk1NzIsIDY5NTc1LCA2OTU3OCwgNjk1ODEsIDY5NTg0LCA2OTU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjk1OTUsIDY5NjAwLCA2OTYwNSwgNjk2MTAsIDY5NjE1LCAKLSAgICA2OTYyMiwgNjk2MjksIDY5NjM0LCA2OTYzOSwgNjk2NDQsIDY5NjQ5LCA2OTY1NiwgNjk2NjMsIDY5NjcwLCA2OTY3NywgCi0gICAgNjk2ODQsIDY5NjkxLCA2OTcwMSwgNjk3MTEsIDY5NzE4LCA2OTcyNSwgNjk3MzIsIDY5NzM5LCA2OTc0NSwgNjk3NTEsIAotICAgIDY5NzYwLCA2OTc2OSwgNjk3NzYsIDY5NzgzLCA2OTc5NCwgNjk4MDUsIDY5ODEwLCA2OTgxNSwgNjk4MjIsIDY5ODI5LCAKLSAgICA2OTgzNiwgNjk4NDMsIDY5ODUwLCA2OTg1NywgNjk4NjQsIDY5ODcxLCA2OTg3NywgNjk4ODMsIDY5ODg5LCA2OTg5NSwgCi0gICAgNjk5MDIsIDY5OTA5LCA2OTkxNCwgNjk5MTgsIDY5OTI1LCA2OTkzMiwgNjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY5OTQzLCA2OTk0NywgNjk5NTEsIDY5OTU0LCA2OTk1NywgNjk5NjIsIDY5OTY3LCA2OTk3MiwgNjk5NzcsIDY5OTgyLCAKLSAgICA2OTk4NywgNjk5OTIsIDY5OTk3LCA3MDAwMiwgNzAwMDcsIDcwMDE2LCA3MDAyNSwgNzAwMzAsIDcwMDM1LCA3MDA0MCwgCi0gICAgNzAwNDUsIDcwMDUwLCA3MDA1NSwgNzAwNjAsIDcwMDY1LCA3MDA3MCwgNzAwNzUsIDcwMDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3MDA4NSwgNzAwODgsIDcwMDkxLCA3MDA5NCwgNzAwOTgsIDcwMTAyLCA3MDEwNiwgNzAxMTAsIDcwMTEzLCAKLSAgICA3MDExNywgNzAxMjAsIDcwMTI0LCA3MDEyNywgNzAxMzEsIDcwMTM1LCA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MSwgCi0gICAgNzAxNTUsIDcwMTU4LCA3MDE2MiwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxNzgsIDcwMTgyLCA3MDE4NiwgNzAxOTAsIAotICAgIDcwMTk0LCA3MDE5OCwgNzAyMDIsIDcwMjA2LCA3MDIxMCwgNzAyMTQsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCAKLSAgICA3MDIzMywgNzAyMzcsIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgCi0gICAgNzAyNzMsIDcwMjc3LCA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIAotICAgIDcwMzEzLCA3MDMxNiwgNzAzMjAsIDcwMzI0LCA3MDMyOCwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ3LCAKLSAgICA3MDM1MSwgNzAzNTUsIDcwMzU5LCA3MDM2MywgNzAzNjcsIDcwMzcxLCA3MDM3NSwgNzAzNzksIDcwMzgzLCA3MDM4NywgCi0gICAgNzAzOTEsIDcwMzk1LCA3MDQwMCwgNzA0MDUsIDcwNDA4LCA3MDQxMywgNzA0MTYsIDcwNDE5LCA3MDQyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzA0MjYsIDcwNDM1LCA3MDQ0NCwgNzA0NTMsIDcwNDYyLCA3MDQ3MSwgNzA0ODAsIDcwNDg5LCAKLSAgICA3MDQ5OCwgNzA1MDYsIDcwNTEzLCA3MDUyMSwgNzA1MjgsIDcwNTM2LCA3MDU0NiwgNzA1NTUsIDcwNTY1LCA3MDU3NCwgCi0gICAgNzA1ODQsIDcwNTkyLCA3MDU5OSwgNzA2MDcsIDcwNjE0LCA3MDYyMiwgNzA2MjcsIDcwNjMyLCA3MDYzNywgNzA2NDYsIAotICAgIDcwNjUyLCA3MDY1OCwgNzA2NjUsIDcwNjc0LCA3MDY4MiwgNzA2OTAsIDcwNjk4LCA3MDcwNSwgNzA3MTIsIDcwNzE5LCAKLSAgICA3MDcyNiwgNzA3MzEsIDcwNzM2LCA3MDc0MSwgNzA3NDYsIDcwNzUxLCA3MDc1NiwgNzA3NjEsIDcwNzY2LCA3MDc3NCwgCi0gICAgNzA3ODIsIDcwNzg4LCA3MDc5MywgNzA3OTgsIDcwODAzLCA3MDgwOCwgNzA4MTMsIDcwODE4LCA3MDgyMywgNzA4MjgsIAotICAgIDcwODMzLCA3MDg0MSwgNzA4NDksIDcwODU0LCA3MDg1OSwgNzA4NjksIDcwODc5LCA3MDg4NiwgNzA4OTMsIDcwOTAyLCAKLSAgICA3MDkxMSwgNzA5MjMsIDcwOTM1LCA3MDk0MSwgNzA5NDcsIDcwOTU1LCA3MDk2MywgNzA5NzMsIDcwOTgzLCA3MDk5MCwgCi0gICAgNzA5OTcsIDcxMDAyLCA3MTAwNywgNzEwMTksIDcxMDMxLCA3MTAzOSwgNzEwNDcsIDcxMDU3LCA3MTA2NywgNzEwNzksIAotICAgIDcxMDkxLCA3MTEwMCwgNzExMDksIDcxMTE2LCA3MTEyMywgNzExMzAsIDcxMTM3LCA3MTE0NiwgNzExNTUsIDcxMTYwLCAKLSAgICA3MTE2NSwgNzExNzIsIDcxMTc5LCA3MTE4NiwgNzExOTMsIDcxMjA1LCA3MTIxNywgNzEyMjIsIDcxMjI3LCA3MTIzMiwgCi0gICAgNzEyMzcsIDcxMjQyLCA3MTI0NywgNzEyNTIsIDcxMjU3LCA3MTI2MSwgNzEyNjYsIDcxMjcxLCA3MTI3NiwgNzEyODEsIAotICAgIDcxMjg2LCA3MTI5MiwgNzEyOTcsIDcxMzAyLCA3MTMwOSwgNzEzMTYsIDcxMzIzLCA3MTMzMCwgNzEzMzcsIDcxMzQ2LCAKLSAgICA3MTM1NSwgNzEzNjEsIDcxMzY3LCA3MTM3MywgNzEzNzksIDcxMzg1LCA3MTM5MSwgNzEzOTgsIDcxNDA1LCA3MTQxMiwgCi0gICAgNzE0MTYsIDcxNDIzLCA3MTQyOCwgNzE0MzMsIDcxNDQwLCAwLCA3MTQ1MywgNzE0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxNDY5LCA3MTQ3OCwgNzE0ODcsIDcxNDk2LCA3MTUwNSwgNzE1MTQsIDcxNTIzLCAKLSAgICA3MTUzMiwgNzE1NDEsIDcxNTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjA2NywgMCwgMTIwNzYsIDEyMDgzLCAxMjA5MSwgMTIxMDMsIDEyMTEwLCAxMjExNywgMTIxMjQsIDEyMTM1LCAxMjE0NiwgCisgICAgMTIxNTMsIDEyMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE2NywgMTIxNzIsIDEyMTc3LCAxMjE4MiwgMTIxODcsIAorICAgIDEyMTkyLCAxMjE5NywgMTIyMDIsIDEyMjA3LCAxMjIxMiwgMTIyMTcsIDEyMjIyLCAxMjIyNywgMTIyMzEsIDEyMjM1LCAKKyAgICAxMjIzOSwgMTIyNDQsIDEyMjUwLCAxMjI1NiwgMTIyNjIsIDEyMjY3LCAxMjI3MiwgMTIyNzcsIDEyMjgyLCAxMjI4OCwgCisgICAgMTIyOTcsIDEyMzA1LCAwLCAxMjMxMSwgMTIzMTcsIDEyMzIxLCAxMjMyNSwgMTIzMjksIDEyMzM0LCAxMjMzNywgMTIzNDEsIAorICAgIDEyMzQ0LCAxMjM0OCwgMTIzNTEsIDEyMzU1LCAxMjM1OSwgMTIzNjMsIDEyMzY4LCAxMjM3MywgMTIzNzYsIDEyMzgwLCAKKyAgICAxMjM4NSwgMTIzOTAsIDEyMzkzLCAxMjM5NywgMTI0MDAsIDEyNDA0LCAxMjQwOCwgMTI0MTIsIDEyNDE2LCAxMjQyMCwgCisgICAgMTI0MjQsIDEyNDI4LCAxMjQzMiwgMTI0MzYsIDEyNDQwLCAxMjQ0NCwgMTI0NDgsIDEyNDUyLCAxMjQ1NiwgMTI0NjAsIAorICAgIDEyNDY0LCAxMjQ2OCwgMTI0NzIsIDEyNDc1LCAxMjQ3OSwgMTI0ODIsIDEyNDg2LCAxMjQ5MCwgMTI0OTQsIDEyNDk3LCAKKyAgICAxMjUwMCwgMTI1MDMsIDEyNTA3LCAxMjUxMSwgMTI1MTUsIDEyNTE5LCAxMjUyMywgMTI1MjcsIDEyNTMxLCAxMjUzNCwgCisgICAgMTI1MzcsIDEyNTQyLCAxMjU0NywgMTI1NTEsIDEyNTU1LCAxMjU2MCwgMTI1NjQsIDEyNTY5LCAxMjU3MywgMTI1NzgsIAorICAgIDEyNTgzLCAxMjU4OSwgMTI1OTUsIDEyNjAxLCAxMjYwNSwgMTI2MTAsIDEyNjE2LCAxMjYyMiwgMTI2MjYsIDEyNjMxLCAKKyAgICAxMjYzNSwgMTI2NDEsIDEyNjQ2LCAxMjY0OSwgMTI2NTUsIDEyNjYxLCAxMjY2NiwgMTI2NzEsIDEyNjc4LCAxMjY4MywgCisgICAgMTI2ODgsIDEyNjkyLCAxMjY5NiwgMTI3MDAsIDEyNzA0LCAxMjcwOCwgMTI3MTIsIDEyNzE2LCAxMjcyMCwgMTI3MjUsIAorICAgIDEyNzMwLCAxMjczNSwgMTI3NDEsIDEyNzQ0LCAxMjc0OCwgMTI3NTIsIDEyNzU1LCAxMjc1OCwgMTI3NjEsIDEyNzY0LCAKKyAgICAxMjc2NywgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgzLCAxMjc5MCwgMTI3OTUsIDEyNzk5LCAxMjgwMywgCisgICAgMTI4MDcsIDEyODExLCAwLCAxMjgxNSwgMTI4MTksIDEyODIzLCAxMjgyNywgMTI4MzEsIDEyODM3LCAxMjg0MSwgMCwgCisgICAgMTI4NDUsIDEyODQ5LCAxMjg1MywgMCwgMTI4NTcsIDEyODYwLCAxMjg2NCwgMTI4NjcsIDEyODcxLCAxMjg3NCwgMTI4NzgsIAorICAgIDEyODgyLCAwLCAwLCAxMjg4NiwgMTI4ODksIDAsIDAsIDEyODkzLCAxMjg5NiwgMTI5MDAsIDEyOTAzLCAxMjkwNywgCisgICAgMTI5MTEsIDEyOTE1LCAxMjkxOSwgMTI5MjMsIDEyOTI3LCAxMjkzMSwgMTI5MzUsIDEyOTM5LCAxMjk0MywgMTI5NDcsIAorICAgIDEyOTUxLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAwLCAxMjk3OCwgMTI5ODEsIDEyOTg1LCAKKyAgICAxMjk4OSwgMTI5OTMsIDEyOTk2LCAxMjk5OSwgMCwgMTMwMDIsIDAsIDAsIDAsIDEzMDA2LCAxMzAxMCwgMTMwMTQsIAorICAgIDEzMDE3LCAwLCAwLCAxMzAyMCwgMTMwMjQsIDEzMDI4LCAxMzAzMywgMTMwMzcsIDEzMDQyLCAxMzA0NiwgMTMwNTEsIAorICAgIDEzMDU2LCAwLCAwLCAxMzA2MiwgMTMwNjYsIDAsIDAsIDEzMDcxLCAxMzA3NSwgMTMwODAsIDEzMDg0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzA5MCwgMCwgMCwgMCwgMCwgMTMwOTYsIDEzMTAwLCAwLCAxMzEwNCwgMTMxMDgsIDEzMTEzLCAKKyAgICAxMzExOCwgMTMxMjMsIDAsIDAsIDEzMTI5LCAxMzEzMywgMTMxMzYsIDEzMTM5LCAxMzE0MiwgMTMxNDUsIDEzMTQ4LCAKKyAgICAxMzE1MSwgMTMxNTQsIDEzMTU3LCAxMzE2MCwgMTMxNjksIDEzMTc4LCAxMzE4MiwgMTMxODYsIDEzMTkyLCAxMzE5OCwgCisgICAgMTMyMDQsIDEzMjEwLCAxMzIyNCwgMTMyMzEsIDEzMjM0LCAwLCAwLCAwLCAwLCAwLCAxMzIzOCwgMTMyNDQsIDEzMjQ4LCAwLCAKKyAgICAxMzI1MiwgMTMyNTUsIDEzMjU5LCAxMzI2MiwgMTMyNjYsIDEzMjY5LCAwLCAwLCAwLCAwLCAxMzI3MywgMTMyNzcsIDAsIDAsIAorICAgIDEzMjgxLCAxMzI4NSwgMTMyODksIDEzMjkyLCAxMzI5NiwgMTMzMDAsIDEzMzA0LCAxMzMwOCwgMTMzMTIsIDEzMzE2LCAKKyAgICAxMzMyMCwgMTMzMjQsIDEzMzI4LCAxMzMzMiwgMTMzMzYsIDEzMzQwLCAxMzM0NCwgMTMzNDgsIDEzMzUyLCAxMzM1NiwgCisgICAgMTMzNjAsIDEzMzY0LCAwLCAxMzM2NywgMTMzNzAsIDEzMzc0LCAxMzM3OCwgMTMzODIsIDEzMzg1LCAxMzM4OCwgMCwgCisgICAgMTMzOTEsIDEzMzk1LCAwLCAxMzM5OSwgMTM0MDMsIDAsIDEzNDA3LCAxMzQxMCwgMCwgMCwgMTM0MTMsIDAsIDEzNDE3LCAKKyAgICAxMzQyMiwgMTM0MjYsIDEzNDMxLCAxMzQzNSwgMCwgMCwgMCwgMCwgMTM0NDAsIDEzNDQ1LCAwLCAwLCAxMzQ1MCwgMTM0NTUsIAorICAgIDEzNDYwLCAwLCAwLCAwLCAxMzQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NjgsIDEzNDcyLCAxMzQ3NiwgMTM0ODAsIAorICAgIDAsIDEzNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ4OCwgMTM0OTIsIDEzNDk1LCAxMzQ5OCwgMTM1MDEsIDEzNTA0LCAKKyAgICAxMzUwNywgMTM1MTAsIDEzNTEzLCAxMzUxNiwgMTM1MTksIDEzNTIyLCAxMzUyNSwgMTM1MjgsIDEzNTMxLCAxMzUzNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NDAsIDEzNTQ0LCAxMzU0OCwgMCwgMTM1NTIsIDEzNTU1LCAKKyAgICAxMzU1OSwgMTM1NjIsIDEzNTY2LCAxMzU2OSwgMTM1NzMsIDEzNTc3LCAxMzU4MSwgMCwgMTM1ODYsIDEzNTg5LCAxMzU5MywgCisgICAgMCwgMTM1OTgsIDEzNjAxLCAxMzYwNSwgMTM2MDgsIDEzNjEyLCAxMzYxNiwgMTM2MjAsIDEzNjI0LCAxMzYyOCwgMTM2MzIsIAorICAgIDEzNjM2LCAxMzY0MCwgMTM2NDQsIDEzNjQ4LCAxMzY1MiwgMTM2NTYsIDEzNjYwLCAxMzY2NCwgMTM2NjgsIDEzNjcyLCAKKyAgICAxMzY3NiwgMTM2ODAsIDAsIDEzNjgzLCAxMzY4NiwgMTM2OTAsIDEzNjk0LCAxMzY5OCwgMTM3MDEsIDEzNzA0LCAwLCAKKyAgICAxMzcwNywgMTM3MTEsIDAsIDEzNzE1LCAxMzcxOSwgMTM3MjMsIDEzNzI3LCAxMzczMCwgMCwgMCwgMTM3MzMsIDEzNzM3LCAKKyAgICAxMzc0MSwgMTM3NDYsIDEzNzUwLCAxMzc1NSwgMTM3NTksIDEzNzY0LCAxMzc2OSwgMTM3NzUsIDAsIDEzNzgxLCAxMzc4NSwgCisgICAgMTM3OTAsIDAsIDEzNzk2LCAxMzgwMCwgMTM4MDUsIDAsIDAsIDEzODA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzgxMiwgMTM4MTcsIDEzODIyLCAxMzgyNywgMCwgMCwgMTM4MzMsIDEzODM3LCAxMzg0MCwgCisgICAgMTM4NDMsIDEzODQ2LCAxMzg0OSwgMTM4NTIsIDEzODU1LCAxMzg1OCwgMTM4NjEsIDEzODY0LCAxMzg2OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzIsIDEzODc2LCAxMzg4MCwgMCwgMTM4ODQsIDEzODg3LCAKKyAgICAxMzg5MSwgMTM4OTQsIDEzODk4LCAxMzkwMSwgMTM5MDUsIDEzOTA5LCAwLCAwLCAxMzkxMywgMTM5MTYsIDAsIDAsIAorICAgIDEzOTIwLCAxMzkyMywgMTM5MjcsIDEzOTMwLCAxMzkzNCwgMTM5MzgsIDEzOTQyLCAxMzk0NiwgMTM5NTAsIDEzOTU0LCAKKyAgICAxMzk1OCwgMTM5NjIsIDEzOTY2LCAxMzk3MCwgMTM5NzQsIDEzOTc4LCAxMzk4MiwgMTM5ODYsIDEzOTkwLCAxMzk5NCwgCisgICAgMTM5OTgsIDE0MDAyLCAwLCAxNDAwNSwgMTQwMDgsIDE0MDEyLCAxNDAxNiwgMTQwMjAsIDE0MDIzLCAxNDAyNiwgMCwgCisgICAgMTQwMjksIDE0MDMzLCAwLCAxNDAzNywgMTQwNDEsIDE0MDQ1LCAxNDA0OSwgMTQwNTIsIDAsIDAsIDE0MDU1LCAxNDA1OSwgCisgICAgMTQwNjMsIDE0MDY4LCAxNDA3MiwgMTQwNzcsIDE0MDgxLCAxNDA4NiwgMTQwOTEsIDAsIDAsIDE0MDk3LCAxNDEwMSwgMCwgCisgICAgMCwgMTQxMDYsIDE0MTEwLCAxNDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxMTksIDE0MTI1LCAwLCAwLCAwLCAwLCAKKyAgICAxNDEzMSwgMTQxMzUsIDAsIDE0MTM5LCAxNDE0MywgMTQxNDgsIDE0MTUzLCAxNDE1OCwgMCwgMCwgMTQxNjQsIDE0MTY4LCAKKyAgICAxNDE3MSwgMTQxNzQsIDE0MTc3LCAxNDE4MCwgMTQxODMsIDE0MTg2LCAxNDE4OSwgMTQxOTIsIDE0MTk1LCAxNDE5OCwgCisgICAgMTQyMDIsIDE0MjA4LCAxNDIxNCwgMTQyMjAsIDE0MjI2LCAxNDIzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQyMzgsIDE0MjQyLCAwLCAxNDI0NiwgMTQyNDksIDE0MjUzLCAxNDI1NiwgMTQyNjAsIDE0MjYzLCAwLCAwLCAwLCAKKyAgICAxNDI2NywgMTQyNzAsIDE0Mjc0LCAwLCAxNDI3OCwgMTQyODEsIDE0Mjg1LCAxNDI4OSwgMCwgMCwgMCwgMTQyOTIsIAorICAgIDE0Mjk2LCAwLCAxNDMwMCwgMCwgMTQzMDQsIDE0MzA4LCAwLCAwLCAwLCAxNDMxMiwgMTQzMTYsIDAsIDAsIDAsIDE0MzIwLCAKKyAgICAxNDMyMywgMTQzMjcsIDAsIDAsIDAsIDE0MzMwLCAxNDMzMywgMTQzMzYsIDE0MzM5LCAxNDM0MywgMTQzNDcsIDE0MzUxLCAKKyAgICAxNDM1NSwgMTQzNTksIDE0MzYzLCAxNDM2NywgMTQzNzAsIDAsIDAsIDAsIDAsIDE0MzczLCAxNDM3OCwgMTQzODIsIAorICAgIDE0Mzg3LCAxNDM5MSwgMCwgMCwgMCwgMTQzOTYsIDE0NDAwLCAxNDQwNSwgMCwgMTQ0MTAsIDE0NDE0LCAxNDQxOSwgCisgICAgMTQ0MjQsIDAsIDAsIDE0NDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQ0MzcsIDE0NDQxLCAxNDQ0NCwgMTQ0NDcsIDE0NDUwLCAxNDQ1MywgMTQ0NTYsIDE0NDU5LCAKKyAgICAxNDQ2MiwgMTQ0NjUsIDE0NDY4LCAxNDQ3MiwgMTQ0NzcsIDE0NDgyLCAxNDQ4NiwgMTQ0OTAsIDE0NDk0LCAxNDQ5OCwgCisgICAgMTQ1MDIsIDE0NTA3LCAxNDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1MTQsIDE0NTE4LCAxNDUyMiwgMCwgMTQ1MjYsIAorICAgIDE0NTI5LCAxNDUzMywgMTQ1MzYsIDE0NTQwLCAxNDU0MywgMTQ1NDcsIDE0NTUxLCAwLCAxNDU1NSwgMTQ1NTgsIDE0NTYyLCAKKyAgICAwLCAxNDU2NiwgMTQ1NjksIDE0NTczLCAxNDU3NywgMTQ1ODAsIDE0NTg0LCAxNDU4OCwgMTQ1OTIsIDE0NTk2LCAxNDYwMCwgCisgICAgMTQ2MDQsIDE0NjA4LCAxNDYxMiwgMTQ2MTYsIDE0NjIwLCAxNDYyNCwgMTQ2MjgsIDE0NjMyLCAxNDYzNiwgMTQ2NDAsIAorICAgIDE0NjQ0LCAxNDY0OCwgMTQ2NTIsIDAsIDE0NjU1LCAxNDY1OCwgMTQ2NjIsIDE0NjY2LCAxNDY3MCwgMTQ2NzMsIDE0Njc2LCAKKyAgICAxNDY3OSwgMTQ2ODMsIDE0Njg3LCAwLCAxNDY5MSwgMTQ2OTUsIDE0Njk5LCAxNDcwMywgMTQ3MDYsIDAsIDAsIDAsIAorICAgIDE0NzA5LCAxNDcxMywgMTQ3MTgsIDE0NzIyLCAxNDcyNywgMTQ3MzEsIDE0NzM2LCAxNDc0MSwgMCwgMTQ3NDcsIDE0NzUxLCAKKyAgICAxNDc1NiwgMCwgMTQ3NjEsIDE0NzY1LCAxNDc3MCwgMTQ3NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0Nzc5LCAxNDc4MywgCisgICAgMCwgMTQ3ODksIDE0NzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc5NywgMTQ4MDIsIDE0ODA3LCAxNDgxMiwgMCwgMCwgCisgICAgMTQ4MTgsIDE0ODIyLCAxNDgyNSwgMTQ4MjgsIDE0ODMxLCAxNDgzNCwgMTQ4MzcsIDE0ODQwLCAxNDg0MywgMTQ4NDYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODQ5LCAxNDg2MiwgMTQ4NzQsIDE0ODg2LCAxNDg5OCwgMTQ5MTAsIDE0OTIyLCAKKyAgICAxNDkzNCwgMCwgMCwgMTQ5MzgsIDE0OTQyLCAwLCAxNDk0NiwgMTQ5NDksIDE0OTUzLCAxNDk1NiwgMTQ5NjAsIDE0OTYzLCAKKyAgICAxNDk2NywgMTQ5NzEsIDAsIDE0OTc1LCAxNDk3OCwgMTQ5ODIsIDAsIDE0OTg2LCAxNDk4OSwgMTQ5OTMsIDE0OTk3LCAKKyAgICAxNTAwMCwgMTUwMDQsIDE1MDA4LCAxNTAxMiwgMTUwMTYsIDE1MDIwLCAxNTAyNCwgMTUwMjgsIDE1MDMyLCAxNTAzNiwgCisgICAgMTUwNDAsIDE1MDQ0LCAxNTA0OCwgMTUwNTIsIDE1MDU2LCAxNTA2MCwgMTUwNjQsIDE1MDY4LCAxNTA3MiwgMCwgMTUwNzUsIAorICAgIDE1MDc4LCAxNTA4MiwgMTUwODYsIDE1MDkwLCAxNTA5MywgMTUwOTYsIDE1MDk5LCAxNTEwMywgMTUxMDcsIDAsIDE1MTExLCAKKyAgICAxNTExNSwgMTUxMTksIDE1MTIzLCAxNTEyNiwgMCwgMCwgMTUxMjksIDE1MTMzLCAxNTEzNywgMTUxNDIsIDE1MTQ2LCAKKyAgICAxNTE1MSwgMTUxNTUsIDE1MTYwLCAxNTE2NSwgMCwgMTUxNzEsIDE1MTc1LCAxNTE4MCwgMCwgMTUxODUsIDE1MTg5LCAKKyAgICAxNTE5NCwgMTUxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjAzLCAxNTIwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUyMTMsIDAsIDE1MjE3LCAxNTIyMiwgMTUyMjcsIDE1MjMyLCAwLCAwLCAxNTIzOCwgMTUyNDIsIDE1MjQ1LCAxNTI0OCwgCisgICAgMTUyNTEsIDE1MjU0LCAxNTI1NywgMTUyNjAsIDE1MjYzLCAxNTI2NiwgMCwgMTUyNjksIDE1MjczLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI3NywgMTUyODEsIDAsIDE1Mjg1LCAxNTI4OCwgMTUyOTIsIAorICAgIDE1Mjk1LCAxNTI5OSwgMTUzMDIsIDE1MzA2LCAxNTMxMCwgMCwgMTUzMTQsIDE1MzE3LCAxNTMyMSwgMCwgMTUzMjUsIAorICAgIDE1MzI4LCAxNTMzMiwgMTUzMzYsIDE1MzM5LCAxNTM0MywgMTUzNDcsIDE1MzUxLCAxNTM1NSwgMTUzNTksIDE1MzYzLCAKKyAgICAxNTM2NywgMTUzNzEsIDE1Mzc1LCAxNTM3OSwgMTUzODMsIDE1Mzg3LCAxNTM5MSwgMTUzOTUsIDE1Mzk5LCAxNTQwMywgCisgICAgMTU0MDcsIDE1NDExLCAxNTQxNCwgMTU0MTgsIDE1NDIxLCAxNTQyNSwgMTU0MjksIDE1NDMzLCAxNTQzNiwgMTU0MzksIAorICAgIDE1NDQyLCAxNTQ0NiwgMTU0NTAsIDE1NDU0LCAxNTQ1OCwgMTU0NjIsIDE1NDY2LCAxNTQ3MCwgMTU0NzMsIDE1NDc2LCAwLCAKKyAgICAwLCAxNTQ4MCwgMTU0ODQsIDE1NDg5LCAxNTQ5MywgMTU0OTgsIDE1NTAyLCAxNTUwNywgMTU1MTIsIDAsIDE1NTE4LCAKKyAgICAxNTUyMiwgMTU1MjcsIDAsIDE1NTMyLCAxNTUzNiwgMTU1NDEsIDE1NTQ2LCAxNTU1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTU1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTYxLCAxNTU2NiwgMTU1NzEsIDE1NTc2LCAwLCAwLCAKKyAgICAxNTU4MiwgMTU1ODYsIDE1NTg5LCAxNTU5MiwgMTU1OTUsIDE1NTk4LCAxNTYwMSwgMTU2MDQsIDE1NjA3LCAxNTYxMCwgCisgICAgMTU2MTMsIDE1NjE3LCAxNTYyMiwgMTU2MjcsIDE1NjMzLCAxNTYzOSwgMCwgMCwgMCwgMTU2NDUsIDE1NjQ5LCAxNTY1NSwgCisgICAgMTU2NjEsIDE1NjY3LCAxNTY3MiwgMTU2NzgsIDAsIDAsIDE1Njg0LCAxNTY4OCwgMCwgMTU2OTIsIDE1Njk2LCAxNTcwMCwgCisgICAgMTU3MDQsIDE1NzA4LCAxNTcxMiwgMTU3MTYsIDE1NzIwLCAxNTcyNCwgMTU3MjgsIDE1NzMyLCAxNTczNiwgMTU3NDAsIAorICAgIDE1NzQ0LCAxNTc0OCwgMTU3NTIsIDE1NzU2LCAxNTc2MCwgMCwgMCwgMCwgMTU3NjQsIDE1NzcwLCAxNTc3NiwgMTU3ODIsIAorICAgIDE1Nzg4LCAxNTc5NCwgMTU4MDAsIDE1ODA2LCAxNTgxMiwgMTU4MTgsIDE1ODI0LCAxNTgzMCwgMTU4MzgsIDE1ODQ0LCAKKyAgICAxNTg1MCwgMTU4NTYsIDE1ODYyLCAxNTg2OCwgMTU4NzQsIDE1ODgwLCAxNTg4NiwgMTU4OTIsIDE1ODk4LCAxNTkwNCwgMCwgCisgICAgMTU5MTAsIDE1OTE2LCAxNTkyMiwgMTU5MjgsIDE1OTM0LCAxNTk0MCwgMTU5NDQsIDE1OTUwLCAxNTk1NCwgMCwgMTU5NTgsIAorICAgIDAsIDAsIDE1OTY0LCAxNTk2OCwgMTU5NzQsIDE1OTgwLCAxNTk4NiwgMTU5OTAsIDE1OTk2LCAwLCAwLCAwLCAxNjAwMCwgMCwgCisgICAgMCwgMCwgMCwgMTYwMDQsIDE2MDA5LCAxNjAxNiwgMTYwMjMsIDE2MDMwLCAxNjAzNywgMCwgMTYwNDQsIDAsIDE2MDUxLCAKKyAgICAxNjA1NiwgMTYwNjEsIDE2MDY4LCAxNjA3NSwgMTYwODQsIDE2MDk1LCAxNjEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxMDksIDE2MTE2LCAxNjEyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTYxMjgsIDE2MTM0LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAxNjE1OCwgMTYxNjQsIDE2MTcwLCAKKyAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5NCwgMTYyMDAsIDE2MjA2LCAxNjIxMiwgMTYyMTgsIDE2MjI0LCAxNjIzMCwgCisgICAgMTYyMzYsIDE2MjQyLCAxNjI0OCwgMTYyNTQsIDE2MjYwLCAxNjI2NiwgMTYyNzIsIDE2Mjc4LCAxNjI4NCwgMTYyOTAsIAorICAgIDE2Mjk2LCAxNjMwMiwgMTYzMDgsIDE2MzE0LCAxNjMyMCwgMTYzMjUsIDE2MzMxLCAxNjMzNywgMTYzNDEsIDE2MzQ3LCAKKyAgICAxNjM1MSwgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTIsIDE2Mzk4LCAxNjQwMiwgCisgICAgMTY0MDcsIDE2NDEzLCAxNjQxOSwgMTY0MjUsIDE2NDMwLCAxNjQzNiwgMTY0NDIsIDE2NDQ4LCAxNjQ1MywgMTY0NTksIDAsIAorICAgIDAsIDAsIDAsIDE2NDYzLCAxNjQ2OSwgMTY0NzQsIDE2NDgwLCAxNjQ4NSwgMTY0OTMsIDE2NTAxLCAxNjUwNSwgMTY1MDksIAorICAgIDE2NTEzLCAxNjUxOSwgMTY1MjUsIDE2NTMxLCAxNjUzNywgMTY1NDEsIDE2NTQ1LCAxNjU0OSwgMTY1NTMsIDE2NTU3LCAKKyAgICAxNjU2MCwgMTY1NjMsIDE2NTY2LCAxNjU2OSwgMTY1NzIsIDE2NTc1LCAxNjU3OCwgMTY1ODEsIDE2NTg0LCAxNjU4OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1OTIsIDE2NTk3LCAwLCAxNjYwNCwgMCwgMCwgMTY2MTEsIAorICAgIDE2NjE2LCAwLCAxNjYyMSwgMCwgMCwgMTY2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjMzLCAxNjYzOCwgMTY2NDIsIAorICAgIDE2NjQ5LCAwLCAxNjY1NiwgMTY2NjEsIDE2NjY2LCAxNjY3MSwgMTY2NzgsIDE2Njg1LCAxNjY5MiwgMCwgMTY2OTksIAorICAgIDE2NzA0LCAxNjcwOSwgMCwgMTY3MTYsIDAsIDE2NzIzLCAwLCAwLCAxNjcyOCwgMTY3MzUsIDAsIDE2NzQyLCAxNjc0NiwgCisgICAgMTY3NTMsIDE2NzU3LCAxNjc2MiwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODcsIDE2NzkzLCAxNjc5OSwgMTY4MDUsIAorICAgIDE2ODEwLCAwLCAxNjgxNiwgMTY4MjQsIDE2ODMxLCAwLCAwLCAxNjgzOCwgMTY4NDMsIDE2ODQ5LCAxNjg1NCwgMTY4NjAsIAorICAgIDAsIDE2ODY2LCAwLCAxNjg3MiwgMTY4NzksIDE2ODg2LCAxNjg5MywgMTY5MDAsIDE2OTA1LCAwLCAwLCAxNjkwOSwgCisgICAgMTY5MTQsIDE2OTE4LCAxNjkyMiwgMTY5MjYsIDE2OTMwLCAxNjkzNCwgMTY5MzgsIDE2OTQyLCAxNjk0NiwgMCwgMCwgCisgICAgMTY5NTAsIDE2OTU2LCAxNjk2MiwgMTY5NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OTc2LCAxNjk4MCwgMTY5OTEsIAorICAgIDE3MDA2LCAxNzAyMSwgMTcwMzEsIDE3MDQyLCAxNzA1NSwgMTcwNjYsIDE3MDcyLCAxNzA4MCwgMTcwOTAsIDE3MDk2LCAKKyAgICAxNzEwNCwgMTcxMDgsIDE3MTE0LCAxNzEyMCwgMTcxMjgsIDE3MTM4LCAxNzE0NiwgMTcxNTksIDE3MTY1LCAxNzE3MywgCisgICAgMTcxODEsIDE3MTkzLCAxNzIwMCwgMTcyMDgsIDE3MjE2LCAxNzIyNCwgMTcyMzIsIDE3MjQwLCAxNzI0OCwgMTcyNTgsIAorICAgIDE3MjYyLCAxNzI2NSwgMTcyNjgsIDE3MjcxLCAxNzI3NCwgMTcyNzcsIDE3MjgwLCAxNzI4MywgMTcyODYsIDE3Mjg5LCAKKyAgICAxNzI5MywgMTcyOTcsIDE3MzAxLCAxNzMwNSwgMTczMDksIDE3MzEzLCAxNzMxNywgMTczMjEsIDE3MzI1LCAxNzMzMCwgCisgICAgMTczMzYsIDE3MzQ2LCAxNzM2MCwgMTczNzAsIDE3Mzc2LCAxNzM4MiwgMTczOTAsIDE3Mzk4LCAxNzQwNiwgMTc0MTQsIAorICAgIDE3NDIwLCAxNzQyNiwgMTc0MjksIDE3NDMzLCAxNzQzNywgMTc0NDEsIDE3NDQ1LCAxNzQ0OSwgMTc0NTMsIDAsIDE3NDU3LCAKKyAgICAxNzQ2MSwgMTc0NjUsIDE3NDY5LCAxNzQ3MywgMTc0NzcsIDE3NDgxLCAxNzQ4NSwgMTc0ODksIDE3NDkzLCAxNzQ5NywgCisgICAgMTc1MDAsIDE3NTAzLCAxNzUwNywgMTc1MTEsIDE3NTE1LCAxNzUxOCwgMTc1MjIsIDE3NTI2LCAxNzUzMCwgMTc1MzQsIAorICAgIDE3NTM4LCAxNzU0MiwgMTc1NDYsIDE3NTUwLCAxNzU1MywgMTc1NTYsIDE3NTYwLCAxNzU2NCwgMTc1NjgsIDE3NTcxLCAKKyAgICAxNzU3NCwgMTc1NzcsIDE3NTgxLCAxNzU4NiwgMTc1OTAsIDAsIDAsIDAsIDAsIDE3NTk0LCAxNzU5OSwgMTc2MDMsIAorICAgIDE3NjA4LCAxNzYxMiwgMTc2MTcsIDE3NjIyLCAxNzYyOCwgMTc2MzMsIDE3NjM5LCAxNzY0MywgMTc2NDgsIDE3NjUyLCAKKyAgICAxNzY1NywgMTc2NjcsIDE3NjczLCAxNzY3OSwgMTc2ODYsIDE3Njk2LCAxNzcwMiwgMTc3MDYsIDE3NzEwLCAxNzcxNiwgCisgICAgMTc3MjIsIDE3NzMwLCAxNzczNiwgMTc3NDQsIDE3NzUyLCAxNzc2MCwgMTc3NzAsIDE3Nzc4LCAxNzc4OCwgMTc3OTMsIAorICAgIDE3Nzk5LCAxNzgwNSwgMTc4MTEsIDE3ODE3LCAxNzgyMywgMTc4MjksIDAsIDE3ODM1LCAxNzg0MSwgMTc4NDcsIDE3ODUzLCAKKyAgICAxNzg1OSwgMTc4NjUsIDE3ODcxLCAxNzg3NywgMTc4ODMsIDE3ODg5LCAxNzg5NSwgMTc5MDAsIDE3OTA1LCAxNzkxMSwgCisgICAgMTc5MTcsIDE3OTIzLCAxNzkyOCwgMTc5MzQsIDE3OTQwLCAxNzk0NiwgMTc5NTIsIDE3OTU4LCAxNzk2NCwgMTc5NzAsIAorICAgIDE3OTc2LCAxNzk4MSwgMTc5ODYsIDE3OTkyLCAxNzk5OCwgMTgwMDQsIDE4MDA5LCAxODAxNCwgMTgwMTksIDE4MDI1LCAKKyAgICAxODAzMywgMTgwNDAsIDAsIDE4MDQ3LCAxODA1NCwgMTgwNjcsIDE4MDc0LCAxODA4MSwgMTgwODksIDE4MDk3LCAxODEwMywgCisgICAgMTgxMDksIDE4MTE1LCAxODEyNSwgMTgxMzAsIDE4MTM2LCAxODE0NiwgMTgxNTYsIDAsIDE4MTY2LCAxODE3NiwgMTgxODQsIAorICAgIDE4MTk2LCAxODIwOCwgMTgyMTQsIDE4MjI4LCAxODI0MywgMTgyNDgsIDE4MjUzLCAxODI2MSwgMTgyNjksIDE4Mjc3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODI4NSwgMTgyODgsIDE4MjkyLCAxODI5NiwgMTgzMDAsIAorICAgIDE4MzA0LCAxODMwOCwgMTgzMTIsIDE4MzE2LCAxODMyMCwgMTgzMjQsIDE4MzI4LCAxODMzMiwgMTgzMzYsIDE4MzQwLCAKKyAgICAxODM0NCwgMTgzNDgsIDE4MzUyLCAxODM1NiwgMTgzNjAsIDE4MzY0LCAxODM2NywgMTgzNzAsIDE4Mzc0LCAxODM3OCwgCisgICAgMTgzODIsIDE4Mzg1LCAxODM4OCwgMTgzOTEsIDE4Mzk1LCAxODM5OSwgMTg0MDIsIDE4NDA1LCAxODQwOSwgMTg0MTIsIAorICAgIDE4NDE3LCAxODQyMCwgMTg0MjQsIDE4NDI3LCAxODQzMSwgMTg0MzQsIDE4NDM5LCAxODQ0MiwgMTg0NDYsIDE4NDUzLCAKKyAgICAxODQ1OCwgMTg0NjIsIDE4NDY3LCAxODQ3MSwgMTg0NzYsIDE4NDgwLCAxODQ4NSwgMTg0OTIsIDE4NDk4LCAxODUwMywgCisgICAgMTg1MDcsIDE4NTExLCAxODUxNSwgMTg1MTksIDE4NTIzLCAxODUyOCwgMTg1MzMsIDE4NTM5LCAxODU0NCwgMTg1NDksIAorICAgIDE4NTUzLCAxODU1NiwgMTg1NTksIDE4NTYyLCAxODU2NSwgMTg1NjgsIDE4NTcxLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAKKyAgICAxODU4NiwgMTg1OTAsIDE4NTk0LCAxODU5OCwgMTg2MDIsIDE4NjA2LCAxODYxMCwgMTg2MTQsIDE4NjE4LCAxODYyMywgCisgICAgMTg2MjcsIDE4NjMyLCAxODYzNywgMTg2NDMsIDE4NjQ4LCAxODY1NCwgMTg2NjAsIDE4NjY2LCAxODY3MiwgMTg2NzgsIAorICAgIDE4Njg1LCAxODY5MiwgMTg3MDAsIDE4NzA4LCAxODcxNywgMTg3MjYsIDE4NzM3LCAxODc0NywgMTg3NTcsIDE4NzY4LCAKKyAgICAxODc3OSwgMTg3ODksIDE4Nzk5LCAxODgwOSwgMTg4MTksIDE4ODI5LCAxODgzOSwgMTg4NDksIDE4ODU5LCAxODg2NywgCisgICAgMTg4NzQsIDE4ODgwLCAxODg4NywgMTg4OTIsIDE4ODk4LCAxODkwNCwgMTg5MTAsIDE4OTE2LCAxODkyMiwgMTg5MjgsIAorICAgIDE4OTMzLCAxODkzOSwgMTg5NDUsIDE4OTUxLCAxODk1NywgMTg5NjIsIDE4OTcwLCAxODk3NywgMTg5ODMsIDE4OTkwLCAKKyAgICAxODk5OCwgMTkwMDQsIDE5MDEwLCAxOTAxNiwgMTkwMjIsIDE5MDMwLCAxOTAzOCwgMTkwNDgsIDE5MDU2LCAxOTA2NCwgCisgICAgMTkwNzAsIDE5MDc1LCAxOTA4MCwgMTkwODUsIDE5MDkwLCAxOTA5NSwgMTkxMDAsIDE5MTA1LCAxOTExMCwgMTkxMTUsIAorICAgIDE5MTIxLCAxOTEyNywgMTkxMzMsIDE5MTQwLCAxOTE0NSwgMTkxNTEsIDE5MTU2LCAxOTE2MSwgMTkxNjYsIDE5MTcxLCAKKyAgICAxOTE3NiwgMTkxODEsIDE5MTg2LCAxOTE5MSwgMTkxOTYsIDE5MjAxLCAxOTIwNiwgMTkyMTEsIDE5MjE2LCAxOTIyMSwgCisgICAgMTkyMjYsIDE5MjMxLCAxOTIzNiwgMTkyNDEsIDE5MjQ2LCAxOTI1MSwgMTkyNTYsIDE5MjYxLCAxOTI2NiwgMTkyNzEsIAorICAgIDE5Mjc2LCAxOTI4MSwgMTkyODYsIDE5MjkxLCAxOTI5NiwgMTkzMDEsIDE5MzA2LCAxOTMxMSwgMTkzMTYsIDE5MzIxLCAKKyAgICAxOTMyNiwgMTkzMzEsIDE5MzM2LCAwLCAxOTM0MSwgMCwgMCwgMCwgMCwgMCwgMTkzNDYsIDAsIDAsIDE5MzUxLCAxOTM1NSwgCisgICAgMTkzNTksIDE5MzYzLCAxOTM2NywgMTkzNzEsIDE5Mzc1LCAxOTM3OSwgMTkzODMsIDE5Mzg3LCAxOTM5MSwgMTkzOTUsIAorICAgIDE5Mzk5LCAxOTQwMywgMTk0MDcsIDE5NDExLCAxOTQxNSwgMTk0MTksIDE5NDIzLCAxOTQyNywgMTk0MzEsIDE5NDM1LCAKKyAgICAxOTQzOSwgMTk0NDMsIDE5NDQ3LCAxOTQ1MSwgMTk0NTUsIDE5NDU5LCAxOTQ2MywgMTk0NjcsIDE5NDcxLCAxOTQ3NSwgCisgICAgMTk0NzksIDE5NDgzLCAxOTQ4NywgMTk0OTEsIDE5NDk1LCAxOTQ5OSwgMTk1MDMsIDE5NTA3LCAxOTUxMSwgMTk1MTUsIAorICAgIDE5NTIxLCAxOTUyNSwgMTk1MzAsIDE5NTM1LCAxOTUzOSwgMTk1NDQsIDE5NTQ5LCAxOTU1MywgMTk1NTcsIDE5NTYxLCAKKyAgICAxOTU2NSwgMTk1NjksIDE5NTczLCAxOTU3NywgMTk1ODEsIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgCisgICAgMTk2MDUsIDE5NjA5LCAxOTYxMywgMTk2MTcsIDE5NjIxLCAxOTYyNSwgMTk2MjksIDE5NjMzLCAxOTYzNywgMTk2NDEsIAorICAgIDE5NjQ1LCAxOTY0OSwgMTk2NTMsIDE5NjU3LCAxOTY2MSwgMTk2NjUsIDE5NjY5LCAxOTY3MywgMTk2NzcsIDE5NjgxLCAKKyAgICAxOTY4NSwgMTk2ODksIDE5NjkzLCAxOTY5NywgMTk3MDEsIDE5NzA1LCAxOTcwOSwgMTk3MTMsIDE5NzE3LCAxOTcyMSwgCisgICAgMTk3MjUsIDE5NzI5LCAxOTczMywgMTk3MzcsIDE5NzQxLCAxOTc0NSwgMTk3NDksIDE5NzUzLCAxOTc1NywgMTk3NjEsIAorICAgIDE5NzY1LCAxOTc2OSwgMTk3NzMsIDE5Nzc3LCAxOTc4MSwgMTk3ODUsIDE5Nzg5LCAxOTc5MywgMTk3OTcsIDE5ODAxLCAKKyAgICAxOTgwNSwgMTk4MDksIDE5ODEzLCAxOTgxNywgMTk4MjEsIDE5ODI1LCAxOTgyOSwgMTk4MzMsIDE5ODM3LCAxOTg0MSwgCisgICAgMTk4NDUsIDE5ODQ5LCAxOTg1MywgMTk4NTcsIDE5ODYxLCAxOTg2NSwgMTk4NjksIDE5ODczLCAxOTg3NywgMTk4ODEsIAorICAgIDE5ODg1LCAxOTg4OSwgMTk4OTMsIDE5ODk3LCAxOTkwMSwgMTk5MDUsIDE5OTA5LCAxOTkxMywgMTk5MTcsIDE5OTIxLCAKKyAgICAxOTkyNSwgMTk5MjksIDE5OTMzLCAxOTkzNywgMTk5NDAsIDE5OTQ0LCAxOTk0NywgMTk5NTEsIDE5OTU1LCAxOTk1OCwgCisgICAgMTk5NjIsIDE5OTY2LCAxOTk2OSwgMTk5NzMsIDE5OTc3LCAxOTk4MSwgMTk5ODUsIDE5OTg4LCAxOTk5MiwgMTk5OTYsIAorICAgIDIwMDAwLCAyMDAwNCwgMjAwMDgsIDIwMDEyLCAyMDAxNSwgMjAwMTksIDIwMDIzLCAyMDAyNywgMjAwMzEsIDIwMDM1LCAKKyAgICAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgMjAwNTUsIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgCisgICAgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIDIwMDk1LCAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIAorICAgIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAyMDEzNSwgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAKKyAgICAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgMjAxNzUsIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgCisgICAgMjAxOTksIDIwMjAzLCAyMDIwNywgMjAyMTEsIDIwMjE1LCAyMDIxOSwgMjAyMjMsIDIwMjI3LCAyMDIzMSwgMjAyMzUsIAorICAgIDIwMjM5LCAyMDI0MywgMjAyNDcsIDIwMjUxLCAyMDI1NSwgMjAyNTksIDIwMjYzLCAyMDI2NywgMjAyNzEsIDIwMjc1LCAKKyAgICAyMDI3OSwgMjAyODMsIDIwMjg3LCAyMDI5MSwgMjAyOTUsIDIwMjk5LCAyMDMwMywgMjAzMDcsIDIwMzExLCAyMDMxNSwgCisgICAgMjAzMTksIDIwMzIzLCAyMDMyNywgMjAzMzEsIDIwMzM1LCAyMDMzOSwgMjAzNDMsIDIwMzQ3LCAyMDM1MSwgMjAzNTUsIAorICAgIDIwMzU5LCAyMDM2MywgMjAzNjcsIDIwMzcxLCAyMDM3NSwgMjAzNzksIDIwMzgzLCAyMDM4NywgMjAzOTEsIDIwMzk1LCAKKyAgICAyMDM5OSwgMjA0MDMsIDIwNDA3LCAyMDQxMSwgMjA0MTUsIDIwNDE5LCAyMDQyMywgMjA0MjcsIDIwNDMxLCAyMDQzNSwgCisgICAgMjA0MzksIDIwNDQzLCAyMDQ0NywgMjA0NTEsIDIwNDU1LCAyMDQ1OSwgMjA0NjMsIDIwNDY3LCAyMDQ3MSwgMjA0NzUsIAorICAgIDIwNDc5LCAyMDQ4MywgMjA0ODcsIDIwNDkxLCAyMDQ5NSwgMjA0OTksIDIwNTAzLCAyMDUwNywgMjA1MTEsIDIwNTE1LCAKKyAgICAyMDUxOSwgMjA1MjMsIDIwNTI3LCAyMDUzMSwgMjA1MzUsIDIwNTM5LCAyMDU0MywgMjA1NDcsIDIwNTUxLCAyMDU1NSwgCisgICAgMjA1NTksIDIwNTYzLCAyMDU2NywgMjA1NzAsIDIwNTc0LCAyMDU3OCwgMjA1ODIsIDIwNTg2LCAyMDU5MCwgMjA1OTQsIAorICAgIDIwNTk4LCAyMDYwMiwgMjA2MDYsIDIwNjEwLCAyMDYxNCwgMjA2MTgsIDIwNjIyLCAyMDYyNiwgMjA2MzAsIDIwNjM0LCAKKyAgICAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY1MCwgMjA2NTQsIDIwNjU4LCAyMDY2MiwgMjA2NjUsIDIwNjY5LCAyMDY3MywgCisgICAgMjA2NzcsIDIwNjgxLCAyMDY4NSwgMjA2ODksIDIwNjkzLCAyMDY5NywgMjA3MDEsIDIwNzA1LCAyMDcwOSwgMjA3MTMsIAorICAgIDIwNzE3LCAyMDcyMSwgMjA3MjUsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgMjA3NDgsIDIwNzUyLCAKKyAgICAyMDc1NiwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgCisgICAgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIAorICAgIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgMCwgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDAsIDAsIAorICAgIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIDIwODk1LCAwLCAyMDg5OSwgMCwgMjA5MDMsIAorICAgIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDAsIDAsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAyMDkzNSwgMjA5MzksIAorICAgIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgMjA5NzUsIDIwOTc5LCAKKyAgICAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTAsIDIxMDE0LCAyMTAxOCwgCisgICAgMjEwMjIsIDIxMDI2LCAyMTAzMCwgMjEwMzQsIDIxMDM4LCAyMTA0MiwgMjEwNDYsIDIxMDUwLCAyMTA1NCwgMjEwNTgsIAorICAgIDIxMDYyLCAyMTA2NiwgMjEwNzAsIDIxMDc0LCAyMTA3OCwgMCwgMjEwODIsIDIxMDg2LCAyMTA5MCwgMjEwOTQsIDAsIDAsIAorICAgIDIxMDk4LCAyMTEwMSwgMjExMDUsIDIxMTA5LCAyMTExMywgMjExMTcsIDIxMTIxLCAyMTEyNSwgMjExMjksIDIxMTMzLCAKKyAgICAyMTEzNywgMjExNDEsIDIxMTQ1LCAyMTE0OSwgMjExNTMsIDIxMTU3LCAyMTE2MSwgMjExNjYsIDIxMTcxLCAyMTE3NiwgCisgICAgMjExODIsIDIxMTg4LCAyMTE5MywgMjExOTgsIDIxMjA0LCAyMTIwNywgMjEyMTEsIDIxMjE1LCAyMTIxOSwgMjEyMjMsIAorICAgIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDAsIDIxMjM5LCAyMTI0MywgMjEyNDcsIDIxMjUxLCAwLCAwLCAyMTI1NSwgMjEyNTksIAorICAgIDIxMjYzLCAyMTI2NywgMjEyNzEsIDIxMjc1LCAyMTI3OSwgMCwgMjEyODMsIDAsIDIxMjg3LCAyMTI5MSwgMjEyOTUsIAorICAgIDIxMjk5LCAwLCAwLCAyMTMwMywgMjEzMDcsIDIxMzExLCAyMTMxNSwgMjEzMTksIDIxMzIzLCAyMTMyNywgMjEzMzEsIAorICAgIDIxMzM1LCAyMTM0MCwgMjEzNDUsIDIxMzUwLCAyMTM1NiwgMjEzNjIsIDIxMzY3LCAwLCAyMTM3MiwgMjEzNzYsIDIxMzgwLCAKKyAgICAyMTM4NCwgMjEzODgsIDIxMzkyLCAyMTM5NiwgMjE0MDAsIDIxNDA0LCAyMTQwOCwgMjE0MTIsIDIxNDE2LCAyMTQyMCwgCisgICAgMjE0MjQsIDIxNDI4LCAyMTQzMiwgMjE0MzYsIDIxNDM5LCAyMTQ0MywgMjE0NDcsIDIxNDUxLCAyMTQ1NSwgMjE0NTksIAorICAgIDIxNDYzLCAyMTQ2NywgMjE0NzEsIDIxNDc1LCAyMTQ3OSwgMjE0ODMsIDIxNDg3LCAyMTQ5MSwgMjE0OTUsIDIxNDk5LCAKKyAgICAyMTUwMywgMjE1MDcsIDIxNTExLCAyMTUxNSwgMjE1MTksIDIxNTIzLCAyMTUyNywgMjE1MzEsIDIxNTM1LCAyMTUzOSwgCisgICAgMjE1NDMsIDIxNTQ3LCAyMTU1MSwgMjE1NTUsIDIxNTU5LCAyMTU2MywgMjE1NjcsIDIxNTcxLCAyMTU3NSwgMjE1NzksIAorICAgIDIxNTgzLCAyMTU4NywgMjE1OTEsIDIxNTk1LCAwLCAyMTU5OSwgMjE2MDMsIDIxNjA3LCAyMTYxMSwgMCwgMCwgMjE2MTUsIAorICAgIDIxNjE5LCAyMTYyMywgMjE2MjcsIDIxNjMxLCAyMTYzNSwgMjE2MzksIDIxNjQzLCAyMTY0NywgMjE2NTEsIDIxNjU1LCAKKyAgICAyMTY1OSwgMjE2NjMsIDIxNjY3LCAyMTY3MSwgMjE2NzUsIDIxNjc5LCAyMTY4MywgMjE2ODcsIDIxNjkxLCAyMTY5NSwgCisgICAgMjE2OTksIDIxNzAzLCAyMTcwNywgMjE3MTEsIDIxNzE1LCAyMTcxOSwgMjE3MjMsIDIxNzI3LCAyMTczMSwgMjE3MzUsIAorICAgIDIxNzM5LCAyMTc0MywgMjE3NDcsIDIxNzUxLCAyMTc1NSwgMjE3NTksIDIxNzYzLCAyMTc2NywgMjE3NzEsIDIxNzc1LCAKKyAgICAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgMjE3OTUsIDIxNzk5LCAyMTgwMywgMjE4MDcsIDIxODExLCAyMTgxNSwgCisgICAgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzEsIDIxODM1LCAyMTgzOSwgMjE4NDIsIDIxODQ2LCAyMTg1MCwgMjE4NTQsIAorICAgIDIxODU4LCAyMTg2MiwgMjE4NjYsIDIxODcwLCAyMTg3NCwgMjE4NzgsIDAsIDAsIDIxODgyLCAyMTg5MSwgMjE4OTcsIAorICAgIDIxOTAyLCAyMTkwNiwgMjE5MDksIDIxOTE0LCAyMTkxNywgMjE5MjAsIDIxOTIzLCAyMTkyOCwgMjE5MzIsIDIxOTM3LCAKKyAgICAyMTk0MCwgMjE5NDMsIDIxOTQ2LCAyMTk0OSwgMjE5NTIsIDIxOTU1LCAyMTk1OCwgMjE5NjEsIDIxOTY0LCAyMTk2OCwgCisgICAgMjE5NzIsIDIxOTc2LCAyMTk4MCwgMjE5ODQsIDIxOTg4LCAyMTk5MiwgMjE5OTYsIDIyMDAwLCAyMjAwNCwgMCwgMCwgMCwgCisgICAgMjIwMTAsIDIyMDE2LCAyMjAyMCwgMjIwMjQsIDIyMDI4LCAyMjAzNCwgMjIwMzgsIDIyMDQyLCAyMjA0NiwgMjIwNTIsIAorICAgIDIyMDU2LCAyMjA2MCwgMjIwNjQsIDIyMDcwLCAyMjA3NCwgMjIwNzgsIDIyMDgyLCAyMjA4OCwgMjIwOTQsIDIyMTAwLCAKKyAgICAyMjEwOCwgMjIxMTQsIDIyMTIwLCAyMjEyNiwgMjIxMzIsIDIyMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjE0NCwgMjIxNDcsIAorICAgIDIyMTUwLCAyMjE1MywgMjIxNTYsIDIyMTU5LCAyMjE2MywgMjIxNjcsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAKKyAgICAyMjE4NiwgMjIxOTAsIDIyMTkzLCAyMjE5NywgMjIyMDEsIDIyMjA1LCAyMjIwOSwgMjIyMTMsIDIyMjE3LCAyMjIyMSwgCisgICAgMjIyMjUsIDIyMjI5LCAyMjIzMywgMjIyMzcsIDIyMjQwLCAyMjI0NCwgMjIyNDgsIDIyMjUyLCAyMjI1NiwgMjIyNTksIAorICAgIDIyMjYzLCAyMjI2NywgMjIyNzEsIDIyMjc1LCAyMjI3OSwgMjIyODMsIDIyMjg3LCAyMjI5MSwgMjIyOTUsIDIyMjk5LCAKKyAgICAyMjMwMywgMjIzMDcsIDIyMzExLCAyMjMxNCwgMjIzMTgsIDIyMzIyLCAyMjMyNiwgMjIzMzAsIDIyMzM0LCAyMjMzOCwgCisgICAgMjIzNDIsIDIyMzQ2LCAyMjM1MCwgMjIzNTQsIDIyMzU4LCAyMjM2MiwgMjIzNjYsIDIyMzcwLCAyMjM3NCwgMjIzNzgsIAorICAgIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk0LCAyMjM5OCwgMjI0MDIsIDIyNDA2LCAyMjQxMCwgMjI0MTQsIDIyNDE4LCAKKyAgICAyMjQyMiwgMjI0MjYsIDIyNDMwLCAyMjQzNCwgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDUzLCAyMjQ1NywgCisgICAgMjI0NjEsIDIyNDY1LCAyMjQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI0NzMsIDIyNDc3LCAKKyAgICAyMjQ4MCwgMjI0ODQsIDIyNDg3LCAyMjQ5MSwgMjI0OTQsIDIyNDk4LCAyMjUwNCwgMjI1MDksIDIyNTEzLCAyMjUxNiwgCisgICAgMjI1MjAsIDIyNTI0LCAyMjUyOSwgMjI1MzMsIDIyNTM4LCAyMjU0MiwgMjI1NDcsIDIyNTUxLCAyMjU1NiwgMjI1NjAsIAorICAgIDIyNTY1LCAyMjU3MSwgMjI1NzUsIDIyNTgwLCAyMjU4NCwgMjI1ODksIDIyNTk1LCAyMjU5OSwgMjI2MDUsIDIyNjExLCAKKyAgICAyMjYxNSwgMjI2MjAsIDIyNjI4LCAyMjYzNiwgMjI2NDMsIDIyNjQ4LCAyMjY1MywgMjI2NjIsIDIyNjY5LCAyMjY3NiwgCisgICAgMjI2ODEsIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgMjI3MTksIAorICAgIDIyNzIzLCAyMjcyNywgMjI3MzMsIDIyNzM4LCAyMjc0MywgMjI3NDYsIDIyNzUwLCAyMjc1NCwgMjI3NTksIDIyNzYzLCAKKyAgICAyMjc2OCwgMjI3NzIsIDIyNzc3LCAyMjc4MSwgMjI3ODYsIDIyNzkwLCAyMjc5NSwgMjI3OTksIDIyODA0LCAyMjgwOCwgCisgICAgMjI4MTMsIDIyODE5LCAyMjgyMywgMjI4MjgsIDIyODMzLCAyMjgzNywgMjI4NDEsIDIyODQ1LCAyMjg0OSwgMjI4NTIsIAorICAgIDIyODU2LCAyMjg2MiwgMjI4NjcsIDIyODcyLCAyMjg3NiwgMjI4ODAsIDIyODg0LCAyMjg4OSwgMjI4OTMsIDIyODk4LCAKKyAgICAyMjkwMiwgMjI5MDcsIDIyOTEwLCAyMjkxNCwgMjI5MTgsIDIyOTIzLCAyMjkyNywgMjI5MzIsIDIyOTM2LCAyMjk0MSwgCisgICAgMjI5NDcsIDIyOTUxLCAyMjk1NSwgMjI5NTksIDIyOTYzLCAyMjk2NywgMjI5NzEsIDIyOTc1LCAyMjk3OSwgMjI5ODMsIAorICAgIDIyOTg3LCAyMjk5MSwgMjI5OTcsIDIzMDAwLCAyMzAwNCwgMjMwMDgsIDIzMDEzLCAyMzAxNywgMjMwMjIsIDIzMDI2LCAKKyAgICAyMzAzMSwgMjMwMzUsIDIzMDQwLCAyMzA0NCwgMjMwNDksIDIzMDUzLCAyMzA1OCwgMjMwNjIsIDIzMDY3LCAyMzA3MywgCisgICAgMjMwNzcsIDIzMDgxLCAyMzA4NywgMjMwOTMsIDIzMDk5LCAyMzEwNSwgMjMxMDksIDIzMTEzLCAyMzExNywgMjMxMjEsIAorICAgIDIzMTI1LCAyMzEyOSwgMjMxMzUsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUyLCAyMzE1NiwgMjMxNjEsIDIzMTY1LCAKKyAgICAyMzE3MCwgMjMxNzQsIDIzMTc5LCAyMzE4MywgMjMxODgsIDIzMTkyLCAyMzE5NywgMjMyMDEsIDIzMjA2LCAyMzIxMiwgCisgICAgMjMyMTYsIDIzMjIyLCAyMzIyNiwgMjMyMzAsIDIzMjM0LCAyMzIzOCwgMjMyNDIsIDIzMjQ2LCAyMzI1MiwgMjMyNTUsIAorICAgIDIzMjU5LCAyMzI2MywgMjMyNjgsIDIzMjcyLCAyMzI3NywgMjMyODEsIDIzMjg2LCAyMzI5MCwgMjMyOTUsIDIzMjk5LCAKKyAgICAyMzMwNCwgMjMzMDgsIDIzMzEzLCAyMzMxNywgMjMzMjIsIDIzMzI4LCAyMzMzMSwgMjMzMzUsIDIzMzM5LCAyMzM0NCwgCisgICAgMjMzNDksIDIzMzUzLCAyMzM1NywgMjMzNjEsIDIzMzY1LCAyMzM2OSwgMjMzNzMsIDIzMzc5LCAyMzM4MiwgMjMzODYsIAorICAgIDIzMzkwLCAyMzM5NSwgMjMzOTksIDIzNDA0LCAyMzQwOCwgMjM0MTMsIDIzNDE5LCAyMzQyMywgMjM0MjgsIDIzNDMyLCAKKyAgICAyMzQzNiwgMjM0NDAsIDIzNDQ0LCAyMzQ0OCwgMjM0NTIsIDIzNDU2LCAyMzQ2MiwgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgCisgICAgMjM0NzksIDIzNDgzLCAyMzQ4OCwgMjM0OTIsIDIzNDk3LCAyMzUwMSwgMjM1MDYsIDIzNTEwLCAyMzUxNSwgMjM1MTksIAorICAgIDIzNTI0LCAyMzUyOCwgMjM1MzMsIDIzNTM2LCAyMzU0MCwgMjM1NDQsIDIzNTQ4LCAyMzU1MiwgMjM1NTYsIDIzNTYwLCAKKyAgICAyMzU2NCwgMjM1NjgsIDIzNTc0LCAyMzU3NywgMjM1ODEsIDIzNTg1LCAyMzU5MCwgMjM1OTQsIDIzNTk5LCAyMzYwMywgCisgICAgMjM2MDgsIDIzNjEyLCAyMzYxNywgMjM2MjEsIDIzNjI2LCAyMzYzMCwgMjM2MzUsIDIzNjM5LCAyMzY0NCwgMjM2NTAsIAorICAgIDIzNjU0LCAyMzY2MCwgMjM2NjQsIDIzNjcwLCAyMzY3NiwgMjM2ODIsIDIzNjg4LCAyMzY5NCwgMjM3MDAsIDIzNzA2LCAKKyAgICAyMzcxMiwgMjM3MTYsIDIzNzIwLCAyMzcyNCwgMjM3MjgsIDIzNzMyLCAyMzczNiwgMjM3NDAsIDIzNzQ0LCAyMzc0OSwgCisgICAgMjM3NTMsIDIzNzU4LCAyMzc2MiwgMjM3NjcsIDIzNzcxLCAyMzc3NiwgMjM3ODAsIDIzNzg1LCAyMzc4OSwgMjM3OTQsIAorICAgIDIzNzk4LCAyMzgwMywgMjM4MDcsIDIzODExLCAyMzgxNSwgMjM4MTksIDIzODIzLCAyMzgyNywgMjM4MzEsIDIzODM3LCAKKyAgICAyMzg0MCwgMjM4NDQsIDIzODQ4LCAyMzg1MywgMjM4NTcsIDIzODYyLCAyMzg2NiwgMjM4NzEsIDIzODc1LCAyMzg4MCwgCisgICAgMjM4ODQsIDIzODg5LCAyMzg5MywgMjM4OTgsIDIzOTAyLCAyMzkwNywgMjM5MTMsIDIzOTE3LCAyMzkyMywgMjM5MjgsIAorICAgIDIzOTM0LCAyMzkzOCwgMjM5NDQsIDIzOTQ5LCAyMzk1MywgMjM5NTcsIDIzOTYxLCAyMzk2NSwgMjM5NjksIDIzOTc0LCAKKyAgICAyMzk3NywgMjM5ODEsIDIzOTg2LCAyMzk5MCwgMjM5OTUsIDIzOTk4LCAyNDAwMiwgMjQwMDYsIDI0MDEwLCAyNDAxNCwgCisgICAgMjQwMTgsIDI0MDIyLCAyNDAyNiwgMjQwMzAsIDI0MDM0LCAyNDAzOCwgMjQwNDIsIDI0MDQ3LCAyNDA1MSwgMjQwNTUsIAorICAgIDI0MDYxLCAyNDA2NSwgMjQwNzEsIDI0MDc1LCAyNDA4MSwgMjQwODUsIDI0MDg5LCAyNDA5MywgMjQwOTcsIDI0MTAxLCAKKyAgICAyNDEwNiwgMjQxMTAsIDI0MTE0LCAyNDExOCwgMjQxMjIsIDI0MTI2LCAyNDEzMCwgMjQxMzQsIDI0MTM4LCAyNDE0MiwgCisgICAgMjQxNDYsIDI0MTUyLCAyNDE1OCwgMjQxNjQsIDI0MTcwLCAyNDE3NiwgMjQxODEsIDI0MTg3LCAyNDE5MywgMjQxOTksIAorICAgIDI0MjAzLCAyNDIwNywgMjQyMTEsIDI0MjE1LCAyNDIxOSwgMjQyMjMsIDI0MjI3LCAyNDIzMSwgMjQyMzUsIDI0MjM5LCAKKyAgICAyNDI0MywgMjQyNDcsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY2LCAyNDI3MCwgMjQyNzQsIDI0Mjc4LCAyNDI4MiwgCisgICAgMjQyODYsIDI0MjkwLCAyNDI5NCwgMjQyOTgsIDI0MzAyLCAyNDMwNiwgMjQzMTIsIDI0MzE4LCAyNDMyNCwgMjQzMzAsIAorICAgIDI0MzM2LCAyNDM0MiwgMjQzNDgsIDI0MzU0LCAyNDM2MCwgMjQzNjQsIDI0MzY4LCAyNDM3MiwgMjQzNzYsIDI0MzgwLCAKKyAgICAyNDM4NCwgMjQzODgsIDI0Mzk0LCAyNDQwMCwgMjQ0MDYsIDI0NDEyLCAyNDQxOCwgMjQ0MjQsIDI0NDMwLCAyNDQzNiwgCisgICAgMjQ0NDIsIDI0NDQ3LCAyNDQ1MiwgMjQ0NTcsIDI0NDYyLCAyNDQ2OCwgMjQ0NzQsIDI0NDgwLCAyNDQ4NiwgMjQ0OTIsIAorICAgIDI0NDk4LCAyNDUwNCwgMjQ1MDksIDI0NTE1LCAyNDUyMSwgMjQ1MjcsIDI0NTMyLCAyNDUzOCwgMjQ1NDQsIDI0NTUwLCAKKyAgICAyNDU1NSwgMjQ1NjAsIDI0NTY1LCAyNDU3MCwgMjQ1NzUsIDI0NTgwLCAyNDU4NSwgMjQ1OTAsIDI0NTk1LCAyNDYwMCwgCisgICAgMjQ2MDUsIDI0NjEwLCAyNDYxNCwgMjQ2MTksIDI0NjI0LCAyNDYyOSwgMjQ2MzQsIDI0NjM5LCAyNDY0NCwgMjQ2NDksIAorICAgIDI0NjU0LCAyNDY1OSwgMjQ2NjQsIDI0NjY5LCAyNDY3NCwgMjQ2NzksIDI0Njg0LCAyNDY4OSwgMjQ2OTQsIDI0Njk5LCAKKyAgICAyNDcwNCwgMjQ3MDksIDI0NzE0LCAyNDcxOSwgMjQ3MjQsIDI0NzI5LCAyNDczNCwgMjQ3MzksIDI0NzQ0LCAyNDc0OSwgCisgICAgMjQ3NTQsIDI0NzU5LCAyNDc2MywgMjQ3NjgsIDI0NzczLCAyNDc3OCwgMjQ3ODMsIDI0Nzg4LCAyNDc5MywgMjQ3OTgsIAorICAgIDI0ODAzLCAyNDgwOCwgMjQ4MTMsIDI0ODE4LCAyNDgyMywgMjQ4MjgsIDI0ODMzLCAyNDgzOCwgMjQ4NDMsIDI0ODQ4LCAKKyAgICAyNDg1MywgMjQ4NTgsIDI0ODYzLCAyNDg2OCwgMjQ4NzMsIDI0ODc4LCAyNDg4MywgMjQ4ODgsIDI0ODkyLCAyNDg5NywgCisgICAgMjQ5MDIsIDI0OTA3LCAyNDkxMiwgMjQ5MTcsIDI0OTIxLCAyNDkyNiwgMjQ5MzEsIDI0OTM2LCAyNDk0MSwgMjQ5NDYsIAorICAgIDI0OTUwLCAyNDk1NSwgMjQ5NjEsIDI0OTY2LCAyNDk3MSwgMjQ5NzYsIDI0OTgxLCAyNDk4NywgMjQ5OTIsIDI0OTk3LCAKKyAgICAyNTAwMiwgMjUwMDcsIDI1MDEyLCAyNTAxNywgMjUwMjIsIDI1MDI3LCAyNTAzMiwgMjUwMzcsIDI1MDQyLCAyNTA0NywgCisgICAgMjUwNTIsIDI1MDU3LCAyNTA2MiwgMjUwNjcsIDI1MDcyLCAyNTA3NywgMjUwODIsIDI1MDg3LCAyNTA5MiwgMjUwOTcsIAorICAgIDI1MTAyLCAyNTEwNywgMjUxMTIsIDI1MTE3LCAyNTEyMiwgMjUxMjcsIDI1MTMyLCAyNTEzNywgMjUxNDIsIDI1MTQ3LCAKKyAgICAyNTE1MiwgMjUxNTcsIDI1MTYyLCAyNTE2NywgMjUxNzIsIDI1MTc3LCAyNTE4MiwgMjUxODcsIDI1MTkyLCAyNTE5NywgCisgICAgMjUyMDIsIDI1MjA3LCAyNTIxMywgMjUyMTgsIDI1MjIzLCAyNTIyOCwgMjUyMzMsIDI1MjM4LCAyNTI0MywgMjUyNDgsIAorICAgIDI1MjUzLCAyNTI1OCwgMjUyNjMsIDI1MjY4LCAyNTI3MiwgMjUyNzcsIDI1MjgyLCAyNTI4NywgMjUyOTIsIDI1Mjk3LCAKKyAgICAyNTMwMiwgMjUzMDcsIDI1MzEyLCAyNTMxNywgMjUzMjIsIDI1MzI3LCAyNTMzMiwgMjUzMzcsIDI1MzQyLCAyNTM0NywgCisgICAgMjUzNTIsIDI1MzU3LCAyNTM2MiwgMjUzNjcsIDI1MzcyLCAyNTM3NywgMjUzODIsIDI1Mzg3LCAyNTM5MiwgMjUzOTcsIAorICAgIDI1NDAyLCAyNTQwOCwgMjU0MTIsIDI1NDE2LCAyNTQyMCwgMjU0MjQsIDI1NDI4LCAyNTQzMiwgMjU0MzYsIDI1NDQwLCAKKyAgICAyNTQ0NiwgMjU0NTIsIDI1NDU4LCAyNTQ2NCwgMjU0NzAsIDI1NDc2LCAyNTQ4MiwgMjU0ODksIDI1NDk1LCAyNTUwMCwgCisgICAgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIAorICAgIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAKKyAgICAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAyNTYzNSwgMCwgMCwgMCwgMjU2NDIsIDI1NjUyLCAKKyAgICAyNTY1NiwgMjU2NjMsIDI1NjY3LCAyNTY3MSwgMjU2NzUsIDI1NjgzLCAyNTY4NywgMjU2OTIsIDI1Njk3LCAyNTcwMiwgCisgICAgMjU3MDYsIDI1NzExLCAyNTcxNiwgMjU3MTksIDI1NzIzLCAyNTcyNywgMjU3MzYsIDI1NzQwLCAyNTc0NCwgMjU3NTAsIAorICAgIDI1NzU0LCAyNTc1OCwgMjU3NjYsIDI1NzcwLCAyNTc3OCwgMjU3ODQsIDI1NzkwLCAyNTc5NiwgMjU4MDIsIDI1ODEyLCAKKyAgICAyNTgxOCwgMjU4MjIsIDI1ODMxLCAyNTgzNCwgMjU4NDAsIDI1ODQ0LCAyNTg1MCwgMjU4NTUsIDI1ODYxLCAyNTg2OSwgCisgICAgMjU4NzUsIDI1ODgxLCAyNTg4OSwgMjU4OTUsIDI1ODk5LCAyNTkwMywgMjU5MTMsIDI1OTE5LCAyNTkyMywgMjU5MzMsIAorICAgIDI1OTM5LCAyNTk0MywgMjU5NDcsIDI1OTU0LCAyNTk2MSwgMjU5NjYsIDI1OTcxLCAyNTk4MCwgMjU5ODQsIDI1OTg4LCAKKyAgICAyNTk5MiwgMjYwMDAsIDI2MDA3LCAyNjAxMSwgMjYwMTUsIDI2MDE5LCAyNjAyMywgMjYwMjcsIDI2MDMxLCAyNjAzNSwgCisgICAgMjYwMzksIDI2MDQzLCAyNjA0NywgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcwLCAyNjA3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwNzgsIDI2MDgyLCAyNjA4NiwgMjYwOTAsIDI2MDk0LCAKKyAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTgsIDI2MTIyLCAyNjEyNywgMjYxMzEsIDAsIDI2MTM1LCAyNjE0MCwgCisgICAgMjYxNDUsIDI2MTQ5LCAyNjE1MywgMjYxNTgsIDI2MTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjE2OCwgMjYxNzIsIDI2MTc2LCAyNjE4MCwgMjYxODQsIDI2MTg5LCAyNjE5NCwgMjYxOTksIDI2MjA0LCAyNjIwOCwgCisgICAgMjYyMTIsIDI2MjE3LCAyNjIyMSwgMjYyMjUsIDI2MjI5LCAyNjIzNCwgMjYyMzksIDI2MjQzLCAyNjI0NywgMjYyNTIsIAorICAgIDI2MjU3LCAyNjI2MiwgMjYyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MjczLCAyNjI3NywgMjYyODEsIAorICAgIDI2Mjg1LCAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzEzLCAyNjMxNywgMjYzMjIsIDI2MzI2LCAKKyAgICAyNjMzMCwgMjYzMzQsIDI2MzM5LCAyNjM0NCwgMjYzNDgsIDI2MzUyLCAyNjM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYzNjIsIDI2MzY2LCAyNjM3MCwgMjYzNzQsIDI2Mzc4LCAyNjM4MywgMjYzODgsIDI2MzkzLCAKKyAgICAyNjM5OCwgMjY0MDIsIDI2NDA2LCAyNjQxMSwgMjY0MTUsIDAsIDI2NDE5LCAyNjQyNCwgMjY0MjksIDAsIDI2NDMzLCAKKyAgICAyNjQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0NDMsIDI2NDQ2LCAyNjQ1MCwgMjY0NTQsIAorICAgIDI2NDU4LCAyNjQ2MiwgMjY0NjYsIDI2NDcwLCAyNjQ3NCwgMjY0NzgsIDI2NDgyLCAyNjQ4NiwgMjY0OTAsIDI2NDk0LCAKKyAgICAyNjQ5OCwgMjY1MDIsIDI2NTA2LCAyNjUxMCwgMjY1MTMsIDI2NTE3LCAyNjUyMSwgMjY1MjUsIDI2NTI5LCAyNjUzMywgCisgICAgMjY1MzcsIDI2NTQxLCAyNjU0NSwgMjY1NDksIDI2NTUzLCAyNjU1NywgMjY1NjEsIDI2NTY1LCAyNjU2OCwgMjY1NzEsIAorICAgIDI2NTc1LCAyNjU3OSwgMjY1ODUsIDI2NTkxLCAyNjU5NywgMjY2MDMsIDI2NjA5LCAyNjYxNSwgMjY2MjEsIDI2NjI3LCAKKyAgICAyNjYzMywgMjY2MzksIDI2NjQ1LCAyNjY1MSwgMjY2NTcsIDI2NjYzLCAyNjY3MiwgMjY2ODEsIDI2Njg3LCAyNjY5MywgCisgICAgMjY2OTksIDI2NzA0LCAyNjcwOCwgMjY3MTMsIDI2NzE4LCAyNjcyMywgMjY3MjcsIDI2NzMyLCAyNjczNywgMjY3NDIsIAorICAgIDI2NzQ2LCAyNjc1MSwgMjY3NTUsIDI2NzYwLCAyNjc2NSwgMjY3NzAsIDI2Nzc1LCAyNjc3OSwgMjY3ODMsIDI2Nzg3LCAKKyAgICAyNjc5MSwgMjY3OTUsIDI2Nzk5LCAyNjgwMywgMjY4MDcsIDI2ODExLCAyNjgxNSwgMjY4MjEsIDI2ODI1LCAyNjgyOSwgCisgICAgMjY4MzMsIDI2ODM3LCAyNjg0MSwgMjY4NDksIDI2ODU1LCAyNjg1OSwgMjY4NjUsIDI2ODY5LCAyNjg3NSwgMjY4NzksIDAsIAorICAgIDAsIDI2ODgzLCAyNjg4NywgMjY4OTAsIDI2ODkzLCAyNjg5NiwgMjY4OTksIDI2OTAyLCAyNjkwNSwgMjY5MDgsIDI2OTExLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjkxNCwgMjY5MjIsIDI2OTMwLCAyNjkzOCwgMjY5NDYsIDI2OTU0LCAyNjk2MiwgMjY5NzAsIAorICAgIDI2OTc4LCAyNjk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5OTQsIDI2OTk3LCAyNzAwMCwgMjcwMDMsIDI3MDA4LCAyNzAxMSwgCisgICAgMjcwMTYsIDI3MDIzLCAyNzAzMSwgMjcwMzYsIDI3MDQzLCAyNzA0NiwgMjcwNTMsIDI3MDYwLCAyNzA2NywgMCwgMjcwNzEsIAorICAgIDI3MDc1LCAyNzA3OCwgMjcwODEsIDI3MDg0LCAyNzA4NywgMjcwOTAsIDI3MDkzLCAyNzA5NiwgMjcwOTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI3MTAyLCAyNzEwNSwgMjcxMDgsIDI3MTExLCAyNzExNCwgMjcxMTcsIDI3MTIxLCAyNzEyNSwgMjcxMjksIAorICAgIDI3MTMyLCAyNzEzNiwgMjcxNDAsIDI3MTQzLCAyNzE0NywgMjcxNTEsIDI3MTU0LCAyNzE1OCwgMjcxNjEsIDI3MTY1LCAKKyAgICAyNzE2OSwgMjcxNzMsIDI3MTc3LCAyNzE4MSwgMjcxODQsIDI3MTg3LCAyNzE5MSwgMjcxOTUsIDI3MTk4LCAyNzIwMiwgCisgICAgMjcyMDYsIDI3MjEwLCAyNzIxNCwgMjcyMTgsIDI3MjIyLCAyNzIyNiwgMjcyMzAsIDI3MjM3LCAyNzI0MiwgMjcyNDcsIAorICAgIDI3MjUyLCAyNzI1NywgMjcyNjMsIDI3MjY5LCAyNzI3NSwgMjcyODEsIDI3Mjg2LCAyNzI5MiwgMjcyOTgsIDI3MzAzLCAKKyAgICAyNzMwOSwgMjczMTUsIDI3MzIxLCAyNzMyNywgMjczMzMsIDI3MzM4LCAyNzM0NCwgMjczNDksIDI3MzU1LCAyNzM2MSwgCisgICAgMjczNjcsIDI3MzczLCAyNzM3OSwgMjczODQsIDI3Mzg5LCAyNzM5NSwgMjc0MDEsIDI3NDA2LCAyNzQxMiwgMjc0MTcsIAorICAgIDI3NDIzLCAyNzQyOCwgMjc0MzMsIDI3NDM5LCAyNzQ0NSwgMjc0NTEsIDI3NDU3LCAyNzQ2MywgMjc0NjksIDI3NDc1LCAKKyAgICAyNzQ4MSwgMjc0ODcsIDI3NDkzLCAyNzQ5OSwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MjAsIDI3NTI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNzUzMiwgMjc1NDEsIDI3NTUwLCAyNzU1OCwgMjc1NjYsIDI3NTc2LCAyNzU4NCwgMjc1OTMsIAorICAgIDI3NjAwLCAyNzYwNywgMjc2MTQsIDI3NjIyLCAyNzYzMCwgMjc2MzgsIDI3NjQ2LCAyNzY1NCwgMjc2NjIsIDI3NjcwLCAKKyAgICAyNzY3OCwgMjc2ODUsIDI3NjkzLCAyNzcwMSwgMjc3MDksIDI3NzE3LCAyNzcyNSwgMjc3MzUsIDI3NzQ1LCAyNzc1NSwgCisgICAgMjc3NjUsIDI3Nzc1LCAyNzc4NSwgMjc3OTUsIDI3ODA1LCAyNzgxNSwgMjc4MjUsIDI3ODM1LCAyNzg0NSwgMjc4NTUsIAorICAgIDI3ODY1LCAyNzg3MywgMjc4ODEsIDI3ODkxLCAyNzg5OSwgMCwgMCwgMCwgMCwgMCwgMjc5MDksIDI3OTEzLCAyNzkxNywgCisgICAgMjc5MjEsIDI3OTI1LCAyNzkyOSwgMjc5MzMsIDI3OTM3LCAyNzk0MSwgMjc5NDUsIDI3OTQ5LCAyNzk1MywgMjc5NTcsIAorICAgIDI3OTYxLCAyNzk2NSwgMjc5NjksIDI3OTczLCAyNzk3NywgMjc5ODEsIDI3OTg1LCAyNzk4OSwgMjc5OTMsIDI3OTk3LCAKKyAgICAyODAwMSwgMjgwMDcsIDI4MDExLCAyODAxNywgMjgwMjEsIDI4MDI3LCAyODAzMSwgMjgwMzcsIDI4MDQxLCAyODA0NSwgCisgICAgMjgwNDksIDI4MDUzLCAyODA1NywgMjgwNjEsIDI4MDY3LCAyODA3MywgMjgwNzksIDI4MDg1LCAyODA5MCwgMjgwOTYsIAorICAgIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzMsIDI4MTM5LCAyODE0NCwgMjgxNDksIDI4MTUzLCAKKyAgICAyODE1NywgMjgxNjEsIDI4MTY1LCAyODE2OSwgMjgxNzMsIDI4MTc3LCAyODE4MywgMjgxODksIDI4MTk1LCAyODIwMCwgCisgICAgMjgyMDcsIDI4MjEyLCAyODIxNywgMjgyMjMsIDI4MjI4LCAyODIzNSwgMjgyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI4MjQ5LCAyODI1NSwgMjgyNTksIDI4MjY0LCAyODI2OSwgMjgyNzQsIDI4Mjc5LCAyODI4NCwgMjgyODksIAorICAgIDI4Mjk0LCAyODI5OSwgMjgzMDQsIDI4MzA5LCAyODMxNCwgMjgzMTksIDI4MzI0LCAyODMyOCwgMjgzMzIsIDI4MzM3LCAKKyAgICAyODM0MiwgMjgzNDcsIDI4MzUxLCAyODM1NSwgMjgzNTksIDI4MzY0LCAyODM2OSwgMjgzNzQsIDI4Mzc5LCAyODM4MywgMCwgCisgICAgMCwgMCwgMjgzODcsIDI4MzkyLCAyODM5NywgMjg0MDIsIDI4NDA4LCAyODQxNCwgMjg0MjAsIDI4NDI2LCAyODQzMSwgCisgICAgMjg0MzYsIDI4NDQyLCAyODQ0OCwgMCwgMCwgMCwgMCwgMjg0NTUsIDI4NDYwLCAyODQ2NiwgMjg0NzIsIDI4NDc4LCAKKyAgICAyODQ4MywgMjg0ODgsIDI4NDkzLCAyODQ5OCwgMjg1MDQsIDI4NTA5LCAyODUxNCwgMCwgMCwgMCwgMCwgMjg1MTksIDAsIDAsIAorICAgIDAsIDI4NTI0LCAyODUyOSwgMjg1MzQsIDI4NTM5LCAyODU0MywgMjg1NDcsIDI4NTUxLCAyODU1NSwgMjg1NTksIDI4NTYzLCAKKyAgICAyODU2NywgMjg1NzEsIDI4NTc1LCAyODU4MCwgMjg1ODYsIDI4NTkyLCAyODU5OCwgMjg2MDMsIDI4NjA4LCAyODYxNCwgCisgICAgMjg2MjAsIDI4NjI2LCAyODYzMSwgMjg2MzcsIDI4NjQyLCAyODY0OCwgMjg2NTQsIDI4NjU5LCAyODY2NSwgMjg2NzEsIAorICAgIDI4Njc3LCAyODY4MiwgMjg2ODcsIDI4NjkyLCAyODY5OCwgMjg3MDQsIDI4NzA5LCAyODcxNSwgMjg3MjAsIDI4NzI2LCAKKyAgICAyODczMSwgMjg3MzcsIDAsIDAsIDI4NzQzLCAyODc0OSwgMjg3NTUsIDI4NzYxLCAyODc2NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjg3NzMsIDI4NzgwLCAyODc4NywgMjg3OTMsIDI4ODAwLCAyODgwNywgMjg4MTMsIDI4ODIwLCAKKyAgICAyODgyNywgMjg4MzQsIDI4ODQwLCAyODg0NiwgMjg4NTMsIDI4ODU5LCAyODg2NSwgMjg4NzIsIDI4ODc5LCAyODg4NSwgCisgICAgMjg4OTIsIDI4ODk5LCAyODkwNSwgMjg5MTEsIDI4OTE4LCAyODkyNCwgMjg5MzAsIDI4OTM3LCAyODk0MywgMjg5NTAsIAorICAgIDI4OTU3LCAyODk2NCwgMjg5NzEsIDI4OTc4LCAyODk4NSwgMjg5OTEsIDI4OTk4LCAyOTAwNSwgMjkwMTEsIDI5MDE4LCAKKyAgICAyOTAyNSwgMjkwMzIsIDI5MDM5LCAyOTA0NiwgMjkwNTMsIDI5MDYwLCAwLCAwLCAwLCAwLCAyOTA2NywgMjkwNzUsIAorICAgIDI5MDgyLCAyOTA4OSwgMjkwOTUsIDI5MTAyLCAyOTEwOCwgMjkxMTUsIDI5MTIxLCAyOTEyOCwgMjkxMzUsIDI5MTQyLCAKKyAgICAyOTE0OSwgMjkxNTYsIDI5MTYzLCAyOTE3MCwgMjkxNzcsIDI5MTg0LCAyOTE5MSwgMjkxOTgsIDI5MjA1LCAyOTIxMSwgCisgICAgMjkyMTgsIDI5MjI1LCAyOTIzMiwgMjkyMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MjQ0LCAyOTI1MCwgMjkyNTUsIDI5MjYwLCAKKyAgICAyOTI2NSwgMjkyNzAsIDI5Mjc1LCAyOTI4MCwgMjkyODUsIDI5MjkwLCAyOTI5NSwgMCwgMCwgMCwgMjkzMDEsIDI5MzA3LCAKKyAgICAyOTMxMywgMjkzMTcsIDI5MzIzLCAyOTMyOSwgMjkzMzUsIDI5MzQxLCAyOTM0NywgMjkzNTMsIDI5MzU5LCAyOTM2NSwgCisgICAgMjkzNzEsIDI5Mzc3LCAyOTM4MywgMjkzODksIDI5Mzk1LCAyOTQwMSwgMjk0MDcsIDI5NDExLCAyOTQxNywgMjk0MjMsIAorICAgIDI5NDI5LCAyOTQzNSwgMjk0NDEsIDI5NDQ3LCAyOTQ1MywgMjk0NTksIDI5NDY1LCAyOTQ3MSwgMjk0NzcsIDI5NDgzLCAKKyAgICAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNSwgMjk1MTAsIDI5NTE1LCAyOTUyMCwgMjk1MjQsIDI5NTI5LCAyOTUzMywgCisgICAgMjk1MzgsIDI5NTQzLCAyOTU0OCwgMjk1NTIsIDI5NTU3LCAyOTU2MiwgMjk1NjcsIDI5NTcyLCAyOTU3NywgMjk1ODEsIAorICAgIDI5NTg1LCAyOTU5MCwgMjk1OTUsIDI5NTk5LCAyOTYwMywgMjk2MDcsIDI5NjEyLCAyOTYxNywgMjk2MjIsIDI5NjI3LCAwLCAKKyAgICAwLCAyOTYzMywgMjk2MzcsIDI5NjQ0LCAyOTY0OSwgMjk2NTUsIDI5NjYxLCAyOTY2NiwgMjk2NzIsIDI5Njc4LCAyOTY4MywgCisgICAgMjk2ODksIDI5Njk1LCAyOTcwMSwgMjk3MDYsIDI5NzEyLCAyOTcxNywgMjk3MjIsIDI5NzI4LCAyOTczMywgMjk3MzksIAorICAgIDI5NzQ0LCAyOTc1MCwgMjk3NTYsIDI5NzYyLCAyOTc2OCwgMjk3NzIsIDI5Nzc3LCAyOTc4MiwgMjk3ODgsIDI5Nzk0LCAKKyAgICAyOTc5OSwgMjk4MDUsIDI5ODExLCAyOTgxNSwgMjk4MjAsIDI5ODI1LCAyOTgyOSwgMjk4MzQsIDI5ODM5LCAyOTg0NCwgCisgICAgMjk4NDksIDI5ODU1LCAyOTg2MSwgMjk4NjYsIDI5ODcxLCAyOTg3NiwgMjk4ODAsIDI5ODg1LCAyOTg4OSwgMjk4OTQsIAorICAgIDI5ODk4LCAyOTkwMywgMjk5MDgsIDI5OTEzLCAyOTkxOCwgMjk5MjQsIDI5OTMwLCAyOTkzNywgMjk5NDcsIDI5OTU2LCAKKyAgICAyOTk2MywgMjk5NjksIDI5OTc5LCAyOTk4NCwgMjk5OTAsIDAsIDI5OTk1LCAzMDAwMCwgMzAwMDUsIDMwMDEzLCAzMDAxOSwgCisgICAgMzAwMjcsIDMwMDMyLCAzMDAzOCwgMzAwNDQsIDMwMDUwLCAzMDA1NSwgMzAwNjEsIDMwMDY2LCAzMDA3MywgMzAwNzksIAorICAgIDMwMDg0LCAzMDA5MCwgMzAwOTYsIDMwMTAyLCAzMDEwOSwgMzAxMTYsIDMwMTIzLCAzMDEyOCwgMzAxMzMsIDMwMTQwLCAKKyAgICAzMDE0NywgMzAxNTQsIDMwMTYxLCAzMDE2OCwgMCwgMCwgMzAxNzUsIDMwMTgyLCAzMDE4OSwgMzAxOTUsIDMwMjAxLCAKKyAgICAzMDIwNywgMzAyMTMsIDMwMjE5LCAzMDIyNSwgMzAyMzEsIDMwMjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDI0MywgMzAyNDksIAorICAgIDMwMjU0LCAzMDI1OSwgMzAyNjQsIDMwMjY5LCAzMDI3NCwgMzAyNzksIDMwMjg0LCAzMDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzAyOTQsIDMwMjk5LCAzMDMwNCwgMzAzMDksIDMwMzE0LCAzMDMxOSwgMzAzMjQsIDMwMzMzLCAzMDM0MCwgMzAzNDUsIAorICAgIDMwMzUwLCAzMDM1NSwgMzAzNjAsIDMwMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTU1OSwgNzE1NjYsIDcxNTc0LCA3MTU4MiwgCi0gICAgNzE1ODksIDcxNTk3LCA3MTYwNCwgNzE2MTAsIDcxNjE2LCA3MTYyMywgNzE2MjksIDcxNjM1LCA3MTY0MSwgNzE2NDgsIAotICAgIDcxNjU1LCA3MTY2MiwgNzE2NjksIDcxNjc2LCA3MTY4MywgNzE2OTAsIDcxNjk3LCA3MTcwNCwgNzE3MTEsIDcxNzE4LCAKLSAgICA3MTcyNSwgNzE3MzIsIDcxNzM5LCA3MTc0NSwgNzE3NTIsIDcxNzU5LCA3MTc2NiwgNzE3NzMsIDcxNzgwLCA3MTc4NywgCi0gICAgNzE3OTQsIDcxODAxLCA3MTgwOCwgNzE4MTUsIDcxODIyLCA3MTgyOSwgNzE4MzYsIDcxODQzLCA3MTg1MCwgNzE4NTcsIAotICAgIDcxODY0LCA3MTg3MSwgNzE4NzksIDcxODg3LCA3MTg5NSwgNzE5MDMsIDAsIDAsIDAsIDAsIDcxOTExLCA3MTkyMCwgCi0gICAgNzE5MjksIDcxOTM4LCA3MTk0NywgNzE5NTYsIDcxOTY1LCA3MTk3MiwgNzE5NzksIDcxOTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3MTk5MywgNzE5OTcsIDcyMDAyLCA3MjAwNywgNzIwMTIsIDcyMDE3LCA3MjAyMiwgNzIwMjcsIDcyMDMyLCA3MjAzNywgCi0gICAgNzIwNDIsIDcyMDQ3LCA3MjA1MSwgNzIwNTUsIDcyMDYwLCA3MjA2NSwgNzIwNjksIDcyMDc0LCA3MjA3OSwgNzIwODQsIAotICAgIDcyMDg5LCA3MjA5NCwgNzIwOTksIDcyMTA0LCA3MjEwOCwgNzIxMTIsIDcyMTE3LCA3MjEyMiwgNzIxMjcsIDcyMTMxLCAKLSAgICA3MjEzNSwgNzIxMzksIDcyMTQzLCA3MjE0NywgNzIxNTEsIDcyMTU2LCA3MjE2MSwgNzIxNjYsIDcyMTcxLCA3MjE3NiwgCi0gICAgNzIxODMsIDcyMTg5LCA3MjE5NCwgNzIxOTksIDcyMjA0LCA3MjIwOSwgNzIyMTUsIDcyMjIyLCA3MjIyOCwgNzIyMzUsIAotICAgIDcyMjQxLCA3MjI0NywgNzIyNTIsIDcyMjU5LCA3MjI2NSwgNzIyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMjc2LCAKLSAgICA3MjI4MCwgNzIyODQsIDcyMjg3LCA3MjI5MSwgNzIyOTQsIDcyMjk4LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCA3MjMxNCwgCi0gICAgNzIzMTgsIDcyMzIzLCA3MjMyNiwgNzIzMzAsIDcyMzM0LCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OCwgNzIzNTIsIAotICAgIDcyMzU2LCA3MjM2MCwgNzIzNjQsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIDcyMzkyLCAKLSAgICA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjMsIDcyNDI2LCA3MjQzMCwgCi0gICAgNzI0MzQsIDcyNDM4LCA3MjQ0MSwgNzI0NDQsIDcyNDQ3LCA3MjQ1MSwgNzI0NTUsIDcyNDU5LCA3MjQ2MywgNzI0NjcsIAotICAgIDcyNDcwLCA3MjQ3NCwgNzI0ODAsIDcyNDg1LCA3MjQ4OSwgNzI0OTQsIDcyNDk4LCA3MjUwMywgNzI1MDgsIDcyNTE0LCAKLSAgICA3MjUxOSwgNzI1MjUsIDcyNTI5LCA3MjUzNCwgNzI1MzksIDcyNTQzLCA3MjU0OCwgNzI1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcyNTU3LCA3MjU2MCwgNzI1NjQsIDcyNTY4LCA3MjU3MSwgNzI1NzQsIDcyNTc3LCA3MjU4MCwgNzI1ODMsIAotICAgIDcyNTg2LCA3MjU4OSwgNzI1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNTk1LCA3MjYwMCwgNzI2MDQsIDcyNjA4LCA3MjYxMiwgCi0gICAgNzI2MTYsIDcyNjIwLCA3MjYyNCwgNzI2MjgsIDcyNjMyLCA3MjYzNiwgNzI2NDAsIDcyNjQ0LCA3MjY0OCwgNzI2NTIsIAotICAgIDcyNjU2LCA3MjY2MCwgNzI2NjUsIDcyNjcwLCA3MjY3NiwgNzI2ODIsIDcyNjg5LCA3MjY5NCwgNzI2OTksIDcyNzA1LCAKLSAgICA3MjcwOSwgNzI3MTQsIDcyNzE3LCAwLCAwLCAwLCAwLCA3MjcyMCwgNzI3MjcsIDcyNzMzLCA3MjczOSwgNzI3NDUsIAotICAgIDcyNzUxLCA3Mjc1NywgNzI3NjMsIDcyNzY5LCA3Mjc3NSwgNzI3ODEsIDcyNzg3LCA3Mjc5NCwgNzI4MDEsIDcyODA4LCAKLSAgICA3MjgxNSwgNzI4MjIsIDcyODI5LCA3MjgzNiwgNzI4NDMsIDcyODUwLCA3Mjg1NiwgNzI4NjIsIDcyODY5LCA3Mjg3NSwgCi0gICAgNzI4ODIsIDcyODg5LCA3Mjg5NSwgNzI5MDEsIDcyOTA4LCA3MjkxNSwgNzI5MjIsIDcyOTI4LCA3MjkzNSwgNzI5NDIsIAotICAgIDcyOTQ4LCA3Mjk1NSwgNzI5NjEsIDcyOTY4LCA3Mjk3NSwgNzI5ODEsIDcyOTg3LCA3Mjk5NCwgNzMwMDAsIDczMDA3LCAKLSAgICA3MzAxNCwgNzMwMjMsIDczMDMwLCA3MzAzNywgNzMwNDEsIDczMDQ2LCA3MzA1MSwgNzMwNTYsIDczMDYxLCA3MzA2NSwgCi0gICAgNzMwNjksIDczMDc0LCA3MzA3OCwgNzMwODMsIDczMDg4LCA3MzA5MywgNzMwOTgsIDczMTAyLCA3MzEwNywgNzMxMTEsIAotICAgIDczMTE2LCA3MzEyMCwgNzMxMjUsIDczMTMwLCA3MzEzNSwgNzMxNDAsIDczMTQ0LCA3MzE0OSwgNzMxNTQsIDczMTU5LCAKLSAgICA3MzE2NSwgNzMxNzAsIDczMTc2LCA3MzE4MiwgNzMxODgsIDczMTk1LCA3MzIwMSwgNzMyMDcsIDczMjE0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzIxOCwgNzMyMjMsIDczMjI3LCA3MzIzMSwgNzMyMzUsIDczMjM5LCA3MzI0MywgCi0gICAgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIAotICAgIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCA3MzMwMywgNzMzMDcsIDczMzExLCA3MzMxNSwgNzMzMTksIDczMzIzLCAKLSAgICA3MzMyNywgNzMzMzEsIDczMzM1LCAwLCAwLCAwLCA3MzMzOSwgNzMzNDMsIDczMzQ3LCA3MzM1MSwgNzMzNTUsIDczMzU4LCAKLSAgICA3MzM2NCwgNzMzNjcsIDczMzcxLCA3MzM3NCwgNzMzODAsIDczMzg2LCA3MzM5NCwgNzMzOTcsIDczNDAxLCA3MzQwNCwgCi0gICAgNzM0MDcsIDczNDEzLCA3MzQxOSwgNzM0MjMsIDczNDI5LCA3MzQzMywgNzM0MzcsIDczNDQzLCA3MzQ0NywgNzM0NTMsIAotICAgIDczNDU5LCA3MzQ2MywgNzM0NjcsIDczNDczLCA3MzQ3NywgNzM0ODMsIDczNDg5LCA3MzQ5MywgNzM0OTksIDczNTAzLCAKLSAgICA3MzUwOSwgNzM1MTIsIDczNTE1LCA3MzUyMSwgNzM1MjUsIDczNTMxLCA3MzUzNCwgNzM1MzcsIDczNTQwLCA3MzU0NiwgCi0gICAgNzM1NTAsIDczNTU0LCA3MzU2MCwgNzM1NjYsIDczNTcwLCA3MzU3MywgNzM1NzksIDczNTg0LCA3MzU4OSwgNzM1OTQsIAotICAgIDczNjAxLCA3MzYwNiwgNzM2MTMsIDczNjE4LCA3MzYyNSwgNzM2MzAsIDczNjM2LCA3MzY0MiwgNzM2NDgsIDczNjUxLCAKLSAgICA3MzY1NSwgNzM2NTksIDczNjY0LCA3MzY2OSwgNzM2NzQsIDczNjc5LCA3MzY4NCwgNzM2ODksIDczNjk0LCA3MzY5OSwgCi0gICAgNzM3MDYsIDczNzExLCAwLCA3MzcxOCwgNzM3MjEsIDczNzI1LCA3MzcyOCwgNzM3MzEsIDczNzM0LCA3MzczNywgNzM3NDAsIAotICAgIDczNzQzLCA3Mzc0NiwgNzM3NDksIDAsIDAsIDAsIDAsIDczNzUyLCA3Mzc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzNzAsIDMwMzc2LCAKKyAgICAzMDM4MiwgMzAzODYsIDMwMzkwLCAzMDM5NCwgMzAzOTgsIDMwNDA0LCAzMDQwOCwgMzA0MTQsIDMwNDE4LCAzMDQyNCwgCisgICAgMzA0MzAsIDMwNDM4LCAzMDQ0NCwgMzA0NTIsIDMwNDU2LCAzMDQ2MCwgMzA0NjQsIDMwNDcwLCAzMDQ3MywgMzA0NzksIAorICAgIDMwNDgzLCAzMDQ4OSwgMzA0OTMsIDMwNDk3LCAzMDUwMywgMzA1MDcsIDMwNTEzLCAzMDUxNywgMzA1MjMsIDMwNTMxLCAKKyAgICAzMDUzOSwgMzA1NDcsIDMwNTUzLCAzMDU1NywgMzA1NjMsIDMwNTY3LCAzMDU3MywgMzA1NzYsIDMwNTc5LCAzMDU4NSwgCisgICAgMzA1ODksIDMwNTk1LCAzMDU5OCwgMzA2MDEsIDMwNjA0LCAzMDYwOCwgMzA2MTIsIDMwNjE4LCAzMDYyNCwgMzA2MjcsIAorICAgIDMwNjMwLCAzMDYzNCwgMzA2MzksIDMwNjQ0LCAzMDY1MSwgMzA2NTYsIDMwNjYzLCAzMDY3MCwgMzA2NzksIDMwNjg2LCAKKyAgICAzMDY5NSwgMzA3MDAsIDMwNzA3LCAzMDcxNCwgMzA3MjMsIDMwNzI4LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCisgICAgMzA3NTgsIDMwNzY0LCAzMDc3MCwgMzA3NzYsIDAsIDAsIDAsIDAsIDMwNzgyLCAzMDc4NiwgMzA3ODksIDMwNzkyLCAKKyAgICAzMDc5NSwgMzA3OTgsIDMwODAxLCAzMDgwNCwgMzA4MDcsIDMwODEwLCAzMDgxMywgMzA4MTYsIDMwODE5LCAzMDgyMiwgCisgICAgMzA4MjcsIDMwODMyLCAzMDgzNywgMzA4NDAsIDMwODQ1LCAzMDg1MCwgMzA4NTUsIDMwODYwLCAzMDg2NywgMzA4NzIsIAorICAgIDMwODc3LCAzMDg4MiwgMzA4ODcsIDMwODk0LCAzMDkwMCwgMzA5MDYsIDMwOTEyLCAzMDkxOCwgMzA5MjQsIDMwOTMzLCAKKyAgICAzMDk0MiwgMzA5NDgsIDMwOTU0LCAzMDk2MiwgMzA5NzAsIDMwOTc5LCAzMDk4OCwgMzA5OTYsIDMxMDA0LCAzMTAxMywgCisgICAgMzEwMjIsIDAsIDAsIDAsIDMxMDMwLCAzMTAzNCwgMzEwMzgsIDMxMDQyLCAzMTA0NSwgMzEwNDgsIDMxMDUxLCAzMTA1NSwgCisgICAgMzEwNTgsIDMxMDYxLCAzMTA2NSwgMzEwNjgsIDMxMDcyLCAzMTA3NiwgMzEwODAsIDMxMDg0LCAzMTA4OCwgMzEwOTIsIAorICAgIDMxMDk2LCAzMTEwMCwgMzExMDQsIDMxMTA3LCAzMTExMCwgMzExMTQsIDMxMTE4LCAzMTEyMiwgMzExMjUsIDMxMTI4LCAKKyAgICAzMTEzMSwgMzExMzUsIDMxMTM5LCAzMTE0MiwgMzExNDYsIDMxMTQ5LCAzMTE1NCwgMzExNTksIDMxMTY0LCAzMTE2OSwgCisgICAgMzExNzQsIDMxMTc5LCAzMTE4NCwgMzExODksIDMxMTk0LCAzMTE5OCwgMzEyMDIsIDMxMjA4LCAzMTIxNSwgMzEyMTksIAorICAgIDMxMjIzLCAzMTIyNywgMzEyMzAsIDMxMjMzLCAzMTIzNiwgMzEyMzksIDMxMjQyLCAzMTI0NSwgMzEyNDgsIDMxMjUxLCAKKyAgICAzMTI1NCwgMzEyNTcsIDMxMjYxLCAzMTI2NSwgMzEyNjksIDMxMjc0LCAzMTI3OCwgMzEyODIsIDMxMjg4LCAzMTI5MiwgCisgICAgMzEyOTgsIDMxMzA0LCAzMTMwOSwgMzEzMTYsIDMxMzIwLCAzMTMyNiwgMzEzMzAsIDMxMzM2LCAzMTM0MSwgMzEzNDgsIAorICAgIDMxMzU1LCAzMTM2MCwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg3LCAzMTM5MSwgMzEzOTcsIDMxNDA0LCAKKyAgICAzMTQxMSwgMzE0MTUsIDMxNDIxLCAzMTQyNywgMzE0MzEsIDMxNDM3LCAzMTQ0MiwgMzE0NDcsIDMxNDU0LCAzMTQ1OSwgCisgICAgMzE0NjQsIDMxNDY5LCAzMTQ3NCwgMzE0NzgsIDMxNDgyLCAzMTQ4NywgMzE0OTIsIDMxNDk5LCAzMTUwNSwgMzE1MTAsIAorICAgIDMxNTE3LCAzMTUyMiwgMzE1MjksIDMxNTM0LCAzMTU0MywgMzE1NDksIDMxNTU1LCAzMTU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzE1NjMsIDMxNTcyLCAzMTU3OSwgMzE1ODYsIDMxNTkzLCAzMTU5NiwgMzE2MDAsIDMxNjA0LCAzMTYwOCwgCisgICAgMzE2MTIsIDMxNjE2LCAzMTYyMCwgMzE2MjQsIDMxNjI4LCAzMTYzMiwgMzE2MzYsIDMxNjQwLCAzMTY0NCwgMzE2NDcsIAorICAgIDMxNjUwLCAzMTY1NCwgMzE2NTgsIDMxNjYyLCAzMTY2NiwgMzE2NzAsIDMxNjc0LCAzMTY3NywgMzE2ODEsIDMxNjg1LCAKKyAgICAzMTY4OSwgMzE2OTMsIDMxNjk2LCAzMTY5OSwgMzE3MDMsIDMxNzA2LCAzMTcxMCwgMzE3MTQsIDMxNzE3LCAzMTcyMSwgCisgICAgMzE3MjUsIDMxNzI4LCAzMTczMywgMzE3MzgsIDMxNzQzLCAzMTc0NywgMzE3NTEsIDMxNzU2LCAzMTc2MCwgMzE3NjUsIAorICAgIDMxNzY5LCAzMTc3NCwgMzE3NzgsIDMxNzgyLCAzMTc4NywgMzE3OTIsIDMxNzk2LCAzMTgwMSwgMzE4MDYsIDMxODExLCAKKyAgICAzMTgxNSwgMCwgMCwgMCwgMzE4MTksIDMxODI0LCAzMTgzMywgMzE4MzgsIDMxODQ1LCAzMTg1MCwgMzE4NTQsIDMxODU3LCAKKyAgICAzMTg2MCwgMzE4NjMsIDMxODY2LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMCwgMCwgMCwgMzE4ODEsIDMxODg1LCAKKyAgICAzMTg4OSwgMzE4OTMsIDMxOTAwLCAzMTkwNiwgMzE5MTIsIDMxOTE4LCAzMTkyNCwgMzE5MzAsIDMxOTM2LCAzMTk0MiwgCisgICAgMzE5NDgsIDMxOTU0LCAzMTk2MSwgMzE5NjgsIDMxOTc1LCAzMTk4MiwgMzE5ODksIDMxOTk2LCAzMjAwMywgMzIwMTAsIAorICAgIDMyMDE3LCAzMjAyNCwgMzIwMzEsIDMyMDM4LCAzMjA0NSwgMzIwNTIsIDMyMDU5LCAzMjA2NiwgMzIwNzMsIDMyMDgwLCAKKyAgICAzMjA4NywgMzIwOTQsIDMyMTAxLCAzMjEwOCwgMzIxMTUsIDMyMTIyLCAzMjEyOSwgMzIxMzYsIDMyMTQzLCAzMjE1MCwgCisgICAgMzIxNTcsIDMyMTY0LCAzMjE3MiwgMzIxODAsIDMyMTg4LCAzMjE5NCwgMzIyMDAsIDMyMjA2LCAzMjIxNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyMjMsIDMyMjMwLCAzMjIzNywgMzIyNDQsIDMyMjUxLCAKKyAgICAzMjI2MCwgMzIyNjksIDMyMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjI4NywgMzIyOTIsIDMyMjk3LCAzMjMwMiwgCisgICAgMzIzMDcsIDMyMzE2LCAzMjMyNywgMzIzMzYsIDMyMzQ3LCAzMjM1MywgMzIzNjYsIDMyMzcyLCAzMjM3OSwgMzIzODYsIAorICAgIDMyMzkxLCAzMjM5NywgMzI0MDMsIDMyNDE0LCAzMjQyMywgMzI0MzAsIDMyNDM3LCAzMjQ0NiwgMzI0NTMsIDMyNDYyLCAKKyAgICAzMjQ3MiwgMzI0ODIsIDMyNDg5LCAzMjQ5NiwgMzI1MDMsIDMyNTEzLCAzMjUxOCwgMzI1MjYsIDMyNTMyLCAzMjU0MCwgCisgICAgMzI1NDksIDMyNTU0LCAzMjU2MSwgMzI1NjcsIDMyNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjU3NywgCisgICAgMzI1ODIsIDMyNTg4LCAzMjU5NSwgMzI2MDMsIDMyNjA5LCAzMjYxNSwgMzI2MjEsIDMyNjI2LCAzMjYzMywgMzI2MzksIAorICAgIDMyNjQ1LCAzMjY1MSwgMzI2NTksIDMyNjY0LCAzMjY3MiwgMzI2NzcsIDMyNjgzLCAzMjY4OSwgMzI2OTYsIDMyNzA0LCAKKyAgICAzMjcxMSwgMzI3MTcsIDMyNzI0LCAzMjczMSwgMzI3MzcsIDMyNzQ0LCAzMjc1MSwgMzI3NTcsIDMyNzYyLCAzMjc2OCwgCisgICAgMzI3NzYsIDMyNzg0LCAzMjc5MCwgMzI3OTYsIDMyODAyLCAzMjgwOCwgMzI4MTYsIDMyODIwLCAzMjgyNiwgMzI4MzIsIAorICAgIDMyODM4LCAzMjg0NCwgMzI4NTAsIDMyODU2LCAzMjg2MCwgMzI4NjUsIDMyODcwLCAzMjg3NywgMzI4ODIsIDMyODg2LCAKKyAgICAzMjg5MiwgMzI4OTcsIDMyOTAyLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMCwgMzI5MjQsIDMyOTI5LCAzMjkzNiwgCisgICAgMzI5NDAsIDMyOTQ1LCAzMjk1MCwgMzI5NTQsIDMyOTU5LCAzMjk2MywgMzI5NjgsIDMyOTcyLCAzMjk3OCwgMzI5ODMsIAorICAgIDMyOTkwLCAzMjk5NSwgMzMwMDAsIDMzMDA0LCAzMzAwOSwgMzMwMTQsIDMzMDIxLCAzMzAyNiwgMzMwMzIsIDMzMDM3LCAKKyAgICAzMzA0MSwgMzMwNDYsIDMzMDUwLCAzMzA1NSwgMzMwNjIsIDMzMDY5LCAzMzA3NCwgMzMwNzksIDMzMDgzLCAzMzA4OSwgCisgICAgMzMwOTUsIDMzMTAwLCAzMzEwNSwgMzMxMTAsIDMzMTE2LCAzMzEyMSwgMzMxMjcsIDMzMTMyLCAzMzEzOCwgMzMxNDQsIAorICAgIDMzMTUwLCAzMzE1NywgMzMxNjQsIDMzMTcxLCAzMzE3OCwgMzMxODUsIDMzMTkyLCAzMzE5NywgMzMyMDUsIDMzMjE0LCAKKyAgICAzMzIyMywgMzMyMzIsIDMzMjQxLCAzMzI1MCwgMzMyNTksIDMzMjcxLCAzMzI4MCwgMzMyODksIDMzMjk4LCAzMzMwNSwgCisgICAgMzMzMTAsIDMzMzE3LCAzMzMyNSwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAzMzM2OSwgMzMzNzgsIAorICAgIDMzMzg3LCAzMzM5NiwgMzM0MDUsIDMzNDE0LCAzMzQyMywgMzM0MzIsIDMzNDQxLCAzMzQ1MCwgMzM0NTksIDMzNDY4LCAKKyAgICAzMzQ3NywgMzM0ODYsIDMzNDk1LCAzMzUwMywgMzM1MTIsIDMzNTIzLCAzMzUzMSwgMzM1NDAsIDMzNTUxLCAzMzU2MCwgCisgICAgMzM1NjksIDMzNTc4LCAzMzU4NywgMzM1OTUsIDMzNjA0LCAzMzYxMSwgMzM2MTYsIDMzNjI0LCAzMzYyOSwgMzM2MzYsIAorICAgIDMzNjQxLCAzMzY1MCwgMzM2NTYsIDMzNjYzLCAzMzY3MCwgMzM2NzUsIDMzNjgwLCAzMzY4OCwgMzM2OTYsIDMzNzA1LCAKKyAgICAzMzcxNCwgMzM3MTksIDMzNzI2LCAzMzczNywgMzM3NDUsIDMzNzU0LCAzMzc2MCwgMzM3NjYsIDMzNzcxLCAzMzc3OCwgCisgICAgMzM3ODMsIDMzNzkyLCAzMzc5NywgMzM4MDIsIDMzODA3LCAzMzgxNCwgMzM4MjEsIDMzODI2LCAzMzgzNSwgMzM4NDMsIAorICAgIDMzODQ4LCAzMzg1MywgMzM4NjAsIDMzODY3LCAzMzg3MSwgMzM4NzUsIDMzODc4LCAzMzg4MSwgMzM4ODQsIDMzODg3LCAKKyAgICAzMzg5MCwgMzM4OTMsIDMzOTAwLCAzMzkwMywgMzM5MDYsIDMzOTExLCAzMzkxNSwgMzM5MTksIDMzOTIzLCAzMzkyNywgCisgICAgMzM5MzEsIDMzOTQwLCAzMzk0NiwgMzM5NTIsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgwLCAzMzk4NiwgMzM5OTMsIAorICAgIDMzOTk5LCAzNDAwNCwgMzQwMTAsIDM0MDE2LCAzNDAyMiwgMzQwMjksIDM0MDM1LCAzNDA0MywgMzQwNDksIDM0MDU2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA2MiwgMzQwNjksIAorICAgIDM0MDc2LCAzNDA4MSwgMzQwOTAsIDM0MDk4LCAzNDEwNiwgMzQxMTMsIDM0MTIwLCAzNDEyNywgMzQxMzQsIDM0MTQyLCAKKyAgICAzNDE1MCwgMzQxNjAsIDM0MTcwLCAzNDE3OCwgMzQxODYsIDM0MTk0LCAzNDIwMiwgMzQyMTEsIDM0MjIwLCAzNDIyOCwgCisgICAgMzQyMzYsIDM0MjQ1LCAzNDI1NCwgMzQyNjQsIDM0Mjc0LCAzNDI4MywgMzQyOTIsIDM0MzAwLCAzNDMwOCwgMzQzMTYsIAorICAgIDM0MzI0LCAzNDMzNCwgMzQzNDQsIDM0MzUyLCAzNDM2MCwgMzQzNjgsIDM0Mzc2LCAzNDM4NCwgMzQzOTIsIDM0NDAwLCAKKyAgICAzNDQwOCwgMzQ0MTYsIDM0NDI0LCAzNDQzMiwgMzQ0NDAsIDM0NDQ5LCAzNDQ1OCwgMzQ0NjcsIDM0NDc2LCAzNDQ4NiwgCisgICAgMzQ0OTYsIDM0NTAzLCAzNDUxMCwgMzQ1MTgsIDM0NTI2LCAzNDUzNSwgMzQ1NDQsIDM0NTUyLCAzNDU2MCwgMzQ1NzIsIAorICAgIDM0NTg0LCAzNDU5MywgMzQ2MDIsIDM0NjExLCAzNDYyMCwgMzQ2MjcsIDM0NjM0LCAzNDY0MiwgMzQ2NTAsIDM0NjU4LCAKKyAgICAzNDY2NiwgMzQ2NzQsIDM0NjgyLCAzNDY5MCwgMzQ2OTgsIDM0NzA3LCAzNDcxNiwgMzQ3MjUsIDM0NzM0LCAzNDc0MywgCisgICAgMzQ3NTIsIDM0NzYyLCAzNDc3MiwgMzQ3ODIsIDM0NzkyLCAzNDgwMSwgMzQ4MTAsIDM0ODE3LCAzNDgyNCwgMzQ4MzIsIAorICAgIDM0ODQwLCAzNDg0OCwgMzQ4NTYsIDM0ODY0LCAzNDg3MiwgMzQ4ODQsIDM0ODk2LCAzNDkwNSwgMzQ5MTQsIDM0OTIyLCAKKyAgICAzNDkzMCwgMzQ5MzgsIDM0OTQ2LCAzNDk1NywgMzQ5NjgsIDM0OTc5LCAzNDk5MCwgMzUwMDIsIDM1MDE0LCAzNTAyMiwgCisgICAgMzUwMzAsIDM1MDM4LCAzNTA0NiwgMzUwNTUsIDM1MDY0LCAzNTA3MywgMzUwODIsIDM1MDkwLCAzNTA5OCwgMzUxMDYsIAorICAgIDM1MTE0LCAzNTEyMiwgMzUxMzAsIDM1MTM5LCAzNTE0OCwgMzUxNTgsIDM1MTY4LCAzNTE3NSwgMzUxODIsIDM1MTkwLCAKKyAgICAzNTE5OCwgMzUyMDYsIDM1MjE0LCAzNTIyMSwgMzUyMjgsIDM1MjM2LCAzNTI0NCwgMzUyNTIsIDM1MjYwLCAzNTI2OCwgCisgICAgMzUyNzYsIDM1Mjg0LCAzNTI5MiwgMzUzMDAsIDM1MzA4LCAzNTMxNiwgMzUzMjQsIDM1MzMyLCAzNTM0MCwgMzUzNDgsIAorICAgIDM1MzU2LCAzNTM2NSwgMzUzNzQsIDM1MzgzLCAzNTM5MSwgMzU0MDAsIDM1NDA5LCAzNTQxOCwgMzU0MjcsIDM1NDM3LCAKKyAgICAzNTQ0NiwgMzU0NTMsIDM1NDU4LCAzNTQ2NSwgMzU0NzIsIDM1NDgwLCAzNTQ4OCwgMzU0OTcsIDM1NTA2LCAzNTUxNiwgCisgICAgMzU1MjYsIDM1NTM3LCAzNTU0OCwgMzU1NTcsIDM1NTY2LCAzNTU3NiwgMzU1ODYsIDM1NTk1LCAzNTYwNCwgMzU2MTQsIAorICAgIDM1NjI0LCAzNTYzNSwgMzU2NDYsIDM1NjU1LCAzNTY2NCwgMzU2NzQsIDM1Njg0LCAzNTY5MSwgMzU2OTgsIDM1NzA2LCAKKyAgICAzNTcxNCwgMzU3MjAsIDM1NzI2LCAzNTczNSwgMzU3NDQsIDM1NzU0LCAzNTc2NCwgMzU3NzUsIDM1Nzg2LCAzNTc5NSwgCisgICAgMzU4MDQsIDM1ODE0LCAzNTgyNCwgMzU4MzMsIDM1ODQyLCAzNTg1MCwgMzU4NTgsIDM1ODY1LCAzNTg3MiwgMzU4ODAsIAorICAgIDM1ODg4LCAzNTg5NywgMzU5MDYsIDM1OTE2LCAzNTkyNiwgMzU5MzcsIDM1OTQ4LCAzNTk1NywgMzU5NjYsIDM1OTc2LCAKKyAgICAzNTk4NiwgMzU5OTUsIDM2MDA0LCAzNjAxNCwgMzYwMjQsIDM2MDM1LCAzNjA0NiwgMzYwNTUsIDM2MDY0LCAzNjA3NCwgCisgICAgMzYwODQsIDM2MDkxLCAzNjA5OCwgMzYxMDYsIDM2MTE0LCAzNjEyMywgMzYxMzIsIDM2MTQyLCAzNjE1MiwgMzYxNjMsIAorICAgIDM2MTc0LCAzNjE4MywgMzYxOTIsIDM2MjAyLCAzNjIxMiwgMzYyMjAsIDM2MjI4LCAzNjIzNiwgMzYyNDQsIDM2MjUzLCAKKyAgICAzNjI2MiwgMzYyNjksIDM2Mjc2LCAzNjI4MywgMzYyOTAsIDM2Mjk3LCAzNjMwNCwgMzYzMTIsIDM2MzIwLCAzNjMyOCwgCisgICAgMzYzMzYsIDM2MzQ3LCAzNjM1OCwgMzYzNjksIDM2MzgwLCAzNjM5MSwgMzY0MDIsIDM2NDEwLCAzNjQxOCwgMzY0MjksIAorICAgIDM2NDQwLCAzNjQ1MSwgMzY0NjIsIDM2NDczLCAzNjQ4NCwgMzY0OTIsIDM2NTAwLCAzNjUxMSwgMzY1MjIsIDM2NTMzLCAwLCAKKyAgICAwLCAzNjU0NCwgMzY1NTIsIDM2NTYwLCAzNjU3MSwgMzY1ODIsIDM2NTkzLCAwLCAwLCAzNjYwNCwgMzY2MTIsIDM2NjIwLCAKKyAgICAzNjYzMSwgMzY2NDIsIDM2NjUzLCAzNjY2NCwgMzY2NzUsIDM2Njg2LCAzNjY5NCwgMzY3MDIsIDM2NzEzLCAzNjcyNCwgCisgICAgMzY3MzUsIDM2NzQ2LCAzNjc1NywgMzY3NjgsIDM2Nzc2LCAzNjc4NCwgMzY3OTUsIDM2ODA2LCAzNjgxNywgMzY4MjgsIAorICAgIDM2ODM5LCAzNjg1MCwgMzY4NTgsIDM2ODY2LCAzNjg3NywgMzY4ODgsIDM2ODk5LCAzNjkxMCwgMzY5MjEsIDM2OTMyLCAKKyAgICAzNjk0MCwgMzY5NDgsIDM2OTU5LCAzNjk3MCwgMzY5ODEsIDAsIDAsIDM2OTkyLCAzNzAwMCwgMzcwMDgsIDM3MDE5LCAKKyAgICAzNzAzMCwgMzcwNDEsIDAsIDAsIDM3MDUyLCAzNzA2MCwgMzcwNjgsIDM3MDc5LCAzNzA5MCwgMzcxMDEsIDM3MTEyLCAKKyAgICAzNzEyMywgMCwgMzcxMzQsIDAsIDM3MTQyLCAwLCAzNzE1MywgMCwgMzcxNjQsIDM3MTc1LCAzNzE4MywgMzcxOTEsIAorICAgIDM3MjAyLCAzNzIxMywgMzcyMjQsIDM3MjM1LCAzNzI0NiwgMzcyNTcsIDM3MjY1LCAzNzI3MywgMzcyODQsIDM3Mjk1LCAKKyAgICAzNzMwNiwgMzczMTcsIDM3MzI4LCAzNzMzOSwgMzczNDcsIDM3MzU1LCAzNzM2MywgMzczNzEsIDM3Mzc5LCAzNzM4NywgCisgICAgMzczOTUsIDM3NDAzLCAzNzQxMSwgMzc0MTksIDM3NDI3LCAzNzQzNSwgMzc0NDMsIDAsIDAsIDM3NDUxLCAzNzQ2MiwgCisgICAgMzc0NzMsIDM3NDg3LCAzNzUwMSwgMzc1MTUsIDM3NTI5LCAzNzU0MywgMzc1NTcsIDM3NTY4LCAzNzU3OSwgMzc1OTMsIAorICAgIDM3NjA3LCAzNzYyMSwgMzc2MzUsIDM3NjQ5LCAzNzY2MywgMzc2NzQsIDM3Njg1LCAzNzY5OSwgMzc3MTMsIDM3NzI3LCAKKyAgICAzNzc0MSwgMzc3NTUsIDM3NzY5LCAzNzc4MCwgMzc3OTEsIDM3ODA1LCAzNzgxOSwgMzc4MzMsIDM3ODQ3LCAzNzg2MSwgCisgICAgMzc4NzUsIDM3ODg2LCAzNzg5NywgMzc5MTEsIDM3OTI1LCAzNzkzOSwgMzc5NTMsIDM3OTY3LCAzNzk4MSwgMzc5OTIsIAorICAgIDM4MDAzLCAzODAxNywgMzgwMzEsIDM4MDQ1LCAzODA1OSwgMzgwNzMsIDM4MDg3LCAzODA5NSwgMzgxMDMsIDM4MTE0LCAKKyAgICAzODEyMiwgMCwgMzgxMzMsIDM4MTQxLCAzODE1MiwgMzgxNjAsIDM4MTY4LCAzODE3NiwgMzgxODQsIDM4MTkyLCAzODE5NSwgCisgICAgMzgxOTgsIDM4MjAxLCAzODIwNCwgMzgyMTAsIDM4MjIxLCAzODIyOSwgMCwgMzgyNDAsIDM4MjQ4LCAzODI1OSwgMzgyNjcsIAorICAgIDM4Mjc1LCAzODI4MywgMzgyOTEsIDM4Mjk5LCAzODMwNSwgMzgzMTEsIDM4MzE3LCAzODMyNSwgMzgzMzMsIDM4MzQ0LCAwLCAKKyAgICAwLCAzODM1NSwgMzgzNjMsIDM4Mzc0LCAzODM4MiwgMzgzOTAsIDM4Mzk4LCAwLCAzODQwNiwgMzg0MTIsIDM4NDE4LCAKKyAgICAzODQyNCwgMzg0MzIsIDM4NDQwLCAzODQ1MSwgMzg0NjIsIDM4NDcwLCAzODQ3OCwgMzg0ODYsIDM4NDk3LCAzODUwNSwgCisgICAgMzg1MTMsIDM4NTIxLCAzODUyOSwgMzg1MzcsIDM4NTQzLCAzODU0OSwgMCwgMCwgMzg1NTIsIDM4NTYzLCAzODU3MSwgMCwgCisgICAgMzg1ODIsIDM4NTkwLCAzODYwMSwgMzg2MDksIDM4NjE3LCAzODYyNSwgMzg2MzMsIDM4NjQxLCAzODY0NCwgMCwgMzg2NDcsIAorICAgIDM4NjUxLCAzODY1NSwgMzg2NTksIDM4NjYzLCAzODY2NywgMzg2NzEsIDM4Njc1LCAzODY3OSwgMzg2ODMsIDM4Njg3LCAKKyAgICAzODY5MSwgMzg2OTcsIDM4NzAzLCAzODcwOSwgMzg3MTIsIDM4NzE1LCAzODcxNywgMzg3MjEsIDM4NzI1LCAzODcyOSwgCisgICAgMzg3MzMsIDM4NzM1LCAzODczOSwgMzg3NDMsIDM4NzQ5LCAzODc1NSwgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIAorICAgIDM4Nzg1LCAzODc5MSwgMzg3OTMsIDM4Nzk2LCAzODc5OCwgMzg4MDIsIDM4ODA2LCAzODgxMCwgMzg4MTMsIDM4ODE3LCAKKyAgICAzODgyMSwgMzg4MjUsIDM4ODI5LCAzODgzMywgMzg4MzksIDM4ODQzLCAzODg0NywgMzg4NTMsIDM4ODU4LCAzODg2NSwgCisgICAgMzg4NjcsIDM4ODcwLCAzODg3NCwgMzg4NzgsIDM4ODgzLCAzODg4OSwgMzg4OTEsIDM4OTAwLCAzODkwOSwgMzg5MTIsIAorICAgIDM4OTE2LCAzODkxOCwgMzg5MjAsIDM4OTIyLCAzODkyNSwgMzg5MzEsIDM4OTMzLCAzODkzNywgMzg5NDEsIDM4OTQ4LCAKKyAgICAzODk1NSwgMzg5NTksIDM4OTY0LCAzODk2OSwgMzg5NzQsIDM4OTc5LCAzODk4MywgMzg5ODcsIDM4OTkwLCAzODk5NCwgCisgICAgMzg5OTgsIDM5MDA1LCAzOTAxMCwgMzkwMTQsIDM5MDE4LCAzOTAyMywgMzkwMjcsIDM5MDMxLCAzOTAzNiwgMzkwNDEsIAorICAgIDM5MDQ1LCAzOTA0OSwgMzkwNTMsIDM5MDU1LCAzOTA2MCwgMzkwNjUsIDM5MDY5LCAzOTA3MywgMzkwNzcsIDM5MDgxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzOTA4NSwgMzkwOTEsIDM5MDk3LCAzOTEwNCwgMzkxMTEsIDM5MTE2LCAzOTEyMSwgMzkxMjUsIDAsIDAsIAorICAgIDM5MTMxLCAzOTEzNCwgMzkxMzcsIDM5MTQwLCAzOTE0MywgMzkxNDYsIDM5MTQ5LCAzOTE1MywgMzkxNTcsIDM5MTYyLCAKKyAgICAzOTE2NywgMzkxNzIsIDM5MTc5LCAzOTE4MywgMzkxODYsIDM5MTg5LCAzOTE5MiwgMzkxOTUsIDM5MTk4LCAzOTIwMSwgCisgICAgMzkyMDQsIDM5MjA3LCAzOTIxMCwgMzkyMTQsIDM5MjE4LCAzOTIyMywgMzkyMjgsIDAsIDM5MjMzLCAzOTIzOSwgMzkyNDUsIAorICAgIDM5MjUxLCAzOTI1OCwgMzkyNjUsIDM5MjcyLCAzOTI3OSwgMzkyODUsIDM5MjkxLCAzOTI5OCwgMzkzMDUsIDM5MzEyLCAwLCAKKyAgICAwLCAwLCAzOTMxOSwgMzkzMjIsIDM5MzI1LCAzOTMyOCwgMzkzMzMsIDM5MzM2LCAzOTMzOSwgMzkzNDIsIDM5MzQ1LCAKKyAgICAzOTM0OCwgMzkzNTEsIDM5MzU1LCAzOTM1OCwgMzkzNjEsIDM5MzY0LCAzOTM2NywgMzkzNzAsIDM5Mzc1LCAzOTM3OCwgCisgICAgMzkzODEsIDM5Mzg0LCAzOTM4NywgMzkzOTAsIDM5Mzk1LCAzOTM5OCwgMzk0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NDA2LCAzOTQxMSwgMzk0MTYsIDM5NDIzLCAKKyAgICAzOTQzMSwgMzk0MzYsIDM5NDQxLCAzOTQ0NSwgMzk0NDksIDM5NDU0LCAzOTQ2MSwgMzk0NjgsIDM5NDcyLCAzOTQ3NywgCisgICAgMzk0ODIsIDM5NDg3LCAzOTQ5MiwgMzk0OTksIDM5NTA0LCAzOTUwOSwgMzk1MTQsIDM5NTIzLCAzOTUzMCwgMzk1MzcsIAorICAgIDM5NTQxLCAzOTU0NiwgMzk1NTIsIDM5NTU3LCAzOTU2NCwgMzk1NzMsIDM5NTgyLCAzOTU4NiwgMzk1OTAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NTk0LCAzOTU5OCwgMzk2MDYsIDM5NjEwLCAzOTYxNCwgCisgICAgMzk2MTksIDM5NjIzLCAzOTYyNywgMzk2MzEsIDM5NjMzLCAzOTYzNywgMzk2NDEsIDM5NjQ1LCAzOTY1MCwgMzk2NTQsIAorICAgIDM5NjU4LCAzOTY2NiwgMzk2NjksIDM5NjczLCAzOTY3NiwgMzk2NzksIDM5Njg1LCAzOTY4OSwgMzk2OTIsIDM5Njk4LCAKKyAgICAzOTcwMiwgMzk3MDYsIDM5NzEwLCAzOTcxMywgMzk3MTcsIDM5NzIwLCAzOTcyNCwgMzk3MjYsIDM5NzI5LCAzOTczMiwgCisgICAgMzk3MzYsIDM5NzM4LCAzOTc0MiwgMzk3NDUsIDM5NzQ4LCAzOTc1MywgMzk3NTgsIDM5NzY1LCAzOTc2OCwgMzk3NzEsIAorICAgIDM5Nzc1LCAzOTc4MCwgMzk3ODMsIDM5Nzg2LCAzOTc4OSwgMzk3OTMsIDM5Nzk4LCAzOTgwMSwgMzk4MDQsIDM5ODA2LCAKKyAgICAzOTgwOSwgMzk4MTIsIDM5ODE1LCAzOTgxOSwgMzk4MjQsIDM5ODI3LCAzOTgzMSwgMzk4MzUsIDM5ODM5LCAzOTg0MywgCisgICAgMzk4NDgsIDM5ODU0LCAzOTg1OSwgMzk4NjQsIDM5ODcwLCAzOTg3NSwgMzk4ODAsIDM5ODg0LCAzOTg4OCwgMzk4OTMsIAorICAgIDM5ODk3LCAzOTkwMSwgMzk5MDQsIDM5OTA2LCAzOTkxMSwgMzk5MTcsIDM5OTI0LCAzOTkzMSwgMzk5MzgsIDM5OTQ1LCAKKyAgICAzOTk1MiwgMzk5NTksIDM5OTY2LCAzOTk3MywgMzk5ODEsIDM5OTg4LCAzOTk5NiwgNDAwMDMsIDQwMDEwLCA0MDAxOCwgCisgICAgNDAwMjYsIDQwMDMxLCA0MDAzNiwgNDAwNDEsIDQwMDQ2LCA0MDA1MSwgNDAwNTYsIDQwMDYxLCA0MDA2NiwgNDAwNzEsIAorICAgIDQwMDc2LCA0MDA4MiwgNDAwODgsIDQwMDk0LCA0MDEwMCwgNDAxMDcsIDQwMTE1LCA0MDEyMiwgNDAxMjgsIDQwMTM0LCAKKyAgICA0MDE0MCwgNDAxNDYsIDQwMTUyLCA0MDE1OCwgNDAxNjQsIDQwMTcwLCA0MDE3NiwgNDAxODMsIDQwMTkwLCA0MDE5NywgCisgICAgNDAyMDQsIDQwMjEyLCA0MDIyMSwgNDAyMjksIDQwMjQwLCA0MDI0OCwgNDAyNTYsIDQwMjY1LCA0MDI3MiwgNDAyODEsIAorICAgIDQwMjkwLCA0MDI5OCwgNDAzMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMzE1LCA0MDMxNywgNDAzMjAsIDQwMzIyLCA0MDMyNSwgCisgICAgNDAzMjgsIDQwMzMxLCA0MDMzNiwgNDAzNDEsIDQwMzQ2LCA0MDM1MSwgNDAzNTUsIDQwMzU5LCA0MDM2MywgNDAzNjcsIAorICAgIDQwMzcyLCA0MDM3OCwgNDAzODMsIDQwMzg5LCA0MDM5NCwgNDAzOTksIDQwNDA0LCA0MDQxMCwgNDA0MTUsIDQwNDIxLCAKKyAgICA0MDQyNywgNDA0MzEsIDQwNDM1LCA0MDQ0MCwgNDA0NDUsIDQwNDUwLCA0MDQ1NSwgNDA0NjAsIDQwNDY4LCA0MDQ3NiwgCisgICAgNDA0ODQsIDQwNDkyLCA0MDQ5OSwgNDA1MDcsIDQwNTE0LCA0MDUyMSwgNDA1MzAsIDQwNTQyLCA0MDU0OCwgNDA1NTQsIAorICAgIDQwNTYyLCA0MDU3MCwgNDA1NzksIDQwNTg4LCA0MDU5NiwgNDA2MDQsIDQwNjEzLCA0MDYyMiwgNDA2MjcsIDQwNjM1LCAKKyAgICA0MDY0MCwgNDA2NDUsIDQwNjUxLCA0MDY1NiwgNDA2NjIsIDQwNjY5LCA0MDY3NiwgNDA2ODEsIDQwNjg3LCA0MDY5MiwgCisgICAgNDA2OTUsIDQwNjk5LCA0MDcwMiwgNDA3MDYsIDQwNzEwLCA0MDcxNCwgNDA3MjAsIDQwNzI2LCA0MDczMiwgNDA3MzgsIAorICAgIDQwNzQyLCA0MDc0NiwgNDA3NTAsIDQwNzU0LCA0MDc2MCwgNDA3NjYsIDQwNzcwLCA0MDc3NSwgNDA3NzksIDQwNzg0LCAKKyAgICA0MDc4OSwgNDA3OTQsIDQwNzk3LCA0MDgwMSwgNDA4MDQsIDQwODA4LCA0MDgxNSwgNDA4MjMsIDQwODM0LCA0MDg0NSwgCisgICAgNDA4NTAsIDQwODU5LCA0MDg2NiwgNDA4NzUsIDQwODg0LCA0MDg4OCwgNDA4OTQsIDQwOTAyLCA0MDkwNiwgNDA5MTEsIAorICAgIDQwOTE2LCA0MDkyMiwgNDA5MjgsIDQwOTM0LCA0MDk0MSwgNDA5NDUsIDQwOTQ5LCA0MDk1NCwgNDA5NTcsIDQwOTU5LCAKKyAgICA0MDk2MywgNDA5NjcsIDQwOTc1LCA0MDk3OSwgNDA5ODEsIDQwOTgzLCA0MDk4NywgNDA5OTUsIDQxMDAwLCA0MTAwNiwgCisgICAgNDEwMTYsIDQxMDIzLCA0MTAyOCwgNDEwMzIsIDQxMDM2LCA0MTA0MCwgNDEwNDMsIDQxMDQ2LCA0MTA0OSwgNDEwNTMsIAorICAgIDQxMDU3LCA0MTA2MSwgNDEwNjUsIDQxMDY5LCA0MTA3MiwgNDEwNzYsIDQxMDgwLCA0MTA4MywgNDEwODUsIDQxMDg4LCAKKyAgICA0MTA5MCwgNDEwOTQsIDQxMDk4LCA0MTEwMCwgNDExMDYsIDQxMTA5LCA0MTExNCwgNDExMTgsIDQxMTIyLCA0MTEyNCwgCisgICAgNDExMjYsIDQxMTI4LCA0MTEzMSwgNDExMzUsIDQxMTM5LCA0MTE0MywgNDExNDcsIDQxMTUxLCA0MTE1NywgNDExNjMsIAorICAgIDQxMTY1LCA0MTE2NywgNDExNjksIDQxMTcxLCA0MTE3NCwgNDExNzYsIDQxMTgwLCA0MTE4MiwgNDExODYsIDQxMTg5LCAKKyAgICA0MTE5NSwgNDExOTksIDQxMjAzLCA0MTIwNiwgNDEyMDksIDQxMjEzLCA0MTIxOSwgNDEyMjMsIDQxMjMzLCA0MTI0MywgCisgICAgNDEyNDcsIDQxMjUzLCA0MTI1OSwgNDEyNjIsIDQxMjY2LCA0MTI2OSwgNDEyNzQsIDQxMjc4LCA0MTI4NCwgNDEyODgsIAorICAgIDQxMzAwLCA0MTMwOCwgNDEzMTIsIDQxMzE2LCA0MTMyMiwgNDEzMjYsIDQxMzI5LCA0MTMzMSwgNDEzMzQsIDQxMzM4LCAKKyAgICA0MTM0MiwgNDEzNDksIDQxMzUzLCA0MTM1NywgNDEzNjEsIDQxMzY0LCA0MTM2OSwgNDEzNzQsIDQxMzc5LCA0MTM4NCwgCisgICAgNDEzODksIDQxMzk0LCA0MTQwMiwgNDE0MTAsIDQxNDE0LCA0MTQxOCwgNDE0MjAsIDQxNDI1LCA0MTQyOSwgNDE0MzMsIAorICAgIDQxNDQxLCA0MTQ0OSwgNDE0NTUsIDQxNDYxLCA0MTQ3MCwgNDE0NzksIDQxNDg0LCA0MTQ4OSwgNDE0OTcsIDQxNTA1LCAKKyAgICA0MTUwNywgNDE1MDksIDQxNTE0LCA0MTUxOSwgNDE1MjUsIDQxNTMxLCA0MTUzNywgNDE1NDMsIDQxNTQ3LCA0MTU1MSwgCisgICAgNDE1NTgsIDQxNTY1LCA0MTU3MSwgNDE1NzcsIDQxNTg3LCA0MTU5NywgNDE2MDUsIDQxNjEzLCA0MTYxNSwgNDE2MTksIAorICAgIDQxNjIzLCA0MTYyOCwgNDE2MzMsIDQxNjQwLCA0MTY0NywgNDE2NTAsIDQxNjUzLCA0MTY1NiwgNDE2NTksIDQxNjYyLCAKKyAgICA0MTY2NywgNDE2NzEsIDQxNjc2LCA0MTY4MSwgNDE2ODQsIDQxNjg3LCA0MTY5MCwgNDE2OTMsIDQxNjk2LCA0MTcwMCwgCisgICAgNDE3MDMsIDQxNzA2LCA0MTcwOSwgNDE3MTIsIDQxNzE0LCA0MTcxNiwgNDE3MTgsIDQxNzIwLCA0MTcyOCwgNDE3MzYsIAorICAgIDQxNzQyLCA0MTc0NiwgNDE3NTIsIDQxNzYyLCA0MTc2OCwgNDE3NzQsIDQxNzgwLCA0MTc4OCwgNDE3OTYsIDQxODA3LCAKKyAgICA0MTgxMSwgNDE4MTUsIDQxODE3LCA0MTgyMywgNDE4MjUsIDQxODI3LCA0MTgyOSwgNDE4MzEsIDQxODM3LCA0MTg0MCwgCisgICAgNDE4NDYsIDQxODUyLCA0MTg1NiwgNDE4NjAsIDQxODY0LCA0MTg2NywgNDE4NzEsIDQxODc1LCA0MTg3NywgNDE4ODYsIAorICAgIDQxODk1LCA0MTkwMCwgNDE5MDUsIDQxOTExLCA0MTkxNywgNDE5MjMsIDQxOTI2LCA0MTkyOSwgNDE5MzIsIDQxOTM1LCAKKyAgICA0MTkzNywgNDE5NDIsIDQxOTQ3LCA0MTk1MiwgNDE5NTgsIDQxOTY0LCA0MTk3MiwgNDE5ODAsIDQxOTg2LCA0MTk5MiwgCisgICAgNDE5OTgsIDQyMDA0LCA0MjAxMywgNDIwMjIsIDQyMDMxLCA0MjA0MCwgNDIwNDksIDQyMDU4LCA0MjA2NywgNDIwNzYsIAorICAgIDQyMDg1LCA0MjA5NCwgNDIxMDIsIDQyMTE0LCA0MjEyNCwgNDIxMzksIDQyMTQyLCA0MjE0NywgNDIxNTMsIDQyMTU5LCAKKyAgICA0MjE2NiwgNDIxODAsIDQyMTk1LCA0MjIwMSwgNDIyMDcsIDQyMjE0LCA0MjIyMCwgNDIyMjgsIDQyMjM0LCA0MjI0NywgCisgICAgNDIyNjEsIDQyMjY2LCA0MjI3MiwgNDIyNzksIDQyMjgyLCA0MjI4NSwgNDIyODcsIDQyMjkwLCA0MjI5MywgNDIyOTUsIAorICAgIDQyMjk3LCA0MjMwMSwgNDIzMDQsIDQyMzA3LCA0MjMxMCwgNDIzMTMsIDQyMzE4LCA0MjMyMywgNDIzMjgsIDQyMzMzLCAKKyAgICA0MjMzOCwgNDIzNDEsIDQyMzQzLCA0MjM0NSwgNDIzNDcsIDQyMzUxLCA0MjM1NSwgNDIzNTksIDQyMzY1LCA0MjM3MCwgCisgICAgNDIzNzIsIDQyMzc0LCA0MjM3OSwgNDIzODQsIDQyMzg5LCA0MjM5NCwgNDIzOTksIDQyNDA0LCA0MjQwNiwgNDI0MDgsIAorICAgIDQyNDE3LCA0MjQyMSwgNDI0MjksIDQyNDM4LCA0MjQ0MCwgNDI0NDUsIDQyNDUwLCA0MjQ1OCwgNDI0NjIsIDQyNDY0LCAKKyAgICA0MjQ2OCwgNDI0NzAsIDQyNDc0LCA0MjQ3OCwgNDI0ODIsIDQyNDg0LCA0MjQ4NiwgNDI0ODgsIDQyNDk1LCA0MjUwNCwgCisgICAgNDI1MTMsIDQyNTIyLCA0MjUzMSwgNDI1NDAsIDQyNTQ5LCA0MjU1OCwgNDI1NjcsIDQyNTc1LCA0MjU4MywgNDI1OTIsIAorICAgIDQyNjAxLCA0MjYxMCwgNDI2MTksIDQyNjI3LCA0MjYzNSwgNDI2NDQsIDQyNjUzLCA0MjY2MiwgNDI2NzIsIDQyNjgxLCAKKyAgICA0MjY5MSwgNDI3MDAsIDQyNzEwLCA0MjcxOSwgNDI3MjksIDQyNzM5LCA0Mjc0OCwgNDI3NTgsIDQyNzY3LCA0Mjc3NywgCisgICAgNDI3ODYsIDQyNzk2LCA0MjgwNSwgNDI4MTQsIDQyODIzLCA0MjgzMiwgNDI4NDEsIDQyODUxLCA0Mjg2MCwgNDI4NjksIAorICAgIDQyODc4LCA0Mjg4OCwgNDI4OTcsIDQyOTA2LCA0MjkxNSwgNDI5MjQsIDQyOTM0LCA0Mjk0NCwgNDI5NTMsIDQyOTYyLCAKKyAgICA0Mjk3MCwgNDI5NzgsIDQyOTg1LCA0Mjk5MywgNDMwMDIsIDQzMDEzLCA0MzAyMiwgNDMwMzEsIDQzMDQwLCA0MzA0NywgCisgICAgNDMwNTQsIDQzMDYxLCA0MzA3MCwgNDMwNzksIDQzMDg4LCA0MzA5NywgNDMxMDQsIDQzMTA5LCA0MzExOCwgNDMxMjMsIAorICAgIDQzMTI2LCA0MzEzNCwgNDMxMzcsIDQzMTQyLCA0MzE0NywgNDMxNTAsIDQzMTUzLCA0MzE2MSwgNDMxNjQsIDQzMTY5LCAKKyAgICA0MzE3MiwgNDMxNzksIDQzMTg0LCA0MzE5MiwgNDMxOTUsIDQzMTk4LCA0MzIwMSwgNDMyMDYsIDQzMjExLCA0MzIxNCwgCisgICAgNDMyMTcsIDQzMjI1LCA0MzIyOCwgNDMyMzUsIDQzMjQyLCA0MzI0NiwgNDMyNTAsIDQzMjU1LCA0MzI2MCwgNDMyNjYsIAorICAgIDQzMjcxLCA0MzI3NywgNDMyODMsIDQzMjg4LCA0MzI5NCwgNDMzMDIsIDQzMzA4LCA0MzMxNiwgNDMzMjQsIDQzMzMwLCAKKyAgICA0MzMzOCwgNDMzNDYsIDQzMzU1LCA0MzM2MywgNDMzNjksIDQzMzc3LCA0MzM4NiwgNDMzOTQsIDQzMzk4LCA0MzQwMywgCisgICAgNDM0MTYsIDQzNDI5LCA0MzQzMywgNDM0MzcsIDQzNDQxLCA0MzQ0NSwgNDM0NTUsIDQzNDU5LCA0MzQ2NCwgNDM0NjksIAorICAgIDQzNDc0LCA0MzQ3OSwgNDM0ODQsIDQzNDg5LCA0MzQ5OSwgNDM1MDksIDQzNTE3LCA0MzUyNywgNDM1MzcsIDQzNTQ1LCAKKyAgICA0MzU1NSwgNDM1NjUsIDQzNTczLCA0MzU4MywgNDM1OTMsIDQzNjAxLCA0MzYwOSwgNDM2MTksIDQzNjI5LCA0MzYzMiwgCisgICAgNDM2MzUsIDQzNjM4LCA0MzY0MywgNDM2NDcsIDQzNjUzLCA0MzY2MCwgNDM2NjcsIDQzNjc1LCA0MzY4MiwgNDM2ODYsIAorICAgIDQzNjkwLCA0MzY5NCwgNDM2OTgsIDQzNzAwLCA0MzcwNCwgNDM3MDgsIDQzNzEzLCA0MzcxOCwgNDM3MjUsIDQzNzMyLCAKKyAgICA0MzczNSwgNDM3NDIsIDQzNzQ0LCA0Mzc0NiwgNDM3NTAsIDQzNzU0LCA0Mzc1OSwgNDM3NjUsIDQzNzcxLCA0Mzc3NywgCisgICAgNDM3ODMsIDQzNzkyLCA0MzgwMSwgNDM4MTAsIDQzODE0LCA0MzgxNiwgNDM4MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQzODI3LCA0MzgzMSwgNDM4MzgsIDQzODQ1LCA0Mzg1MiwgNDM4NTksIDQzODYzLCA0Mzg2NywgCisgICAgNDM4NzEsIDQzODc1LCA0Mzg4MCwgNDM4ODYsIDQzODkxLCA0Mzg5NywgNDM5MDMsIDQzOTA5LCA0MzkxNSwgNDM5MjMsIAorICAgIDQzOTMwLCA0MzkzNywgNDM5NDQsIDQzOTUxLCA0Mzk1NiwgNDM5NjIsIDQzOTcxLCA0Mzk3NSwgNDM5ODIsIDQzOTg2LCAKKyAgICA0Mzk5MCwgNDM5OTYsIDQ0MDAyLCA0NDAwOCwgNDQwMTQsIDQ0MDE4LCA0NDAyMiwgNDQwMjUsIDQ0MDI4LCA0NDAzMiwgCisgICAgNDQwMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ0MDQ2LCA0NDA0OSwgNDQwNTMsIDQ0MDU3LCA0NDA2MywgNDQwNjksIDQ0MDc1LCA0NDA4MywgNDQwOTAsIAorICAgIDQ0MDk0LCA0NDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDQxMDcsIDQ0MTEwLCA0NDExMywgNDQxMTYsIDQ0MTE5LCA0NDEyMiwgNDQxMjUsIDQ0MTI4LCA0NDEzMSwgNDQxMzQsIAorICAgIDQ0MTM4LCA0NDE0MiwgNDQxNDYsIDQ0MTUwLCA0NDE1NCwgNDQxNTgsIDQ0MTYyLCA0NDE2NiwgNDQxNzAsIDQ0MTc0LCAKKyAgICA0NDE3OCwgNDQxODEsIDQ0MTg0LCA0NDE4NywgNDQxOTAsIDQ0MTkzLCA0NDE5NiwgNDQxOTksIDQ0MjAyLCA0NDIwNSwgCisgICAgNDQyMDksIDQ0MjEzLCA0NDIxNywgNDQyMjEsIDQ0MjI1LCA0NDIyOSwgNDQyMzMsIDQ0MjM3LCA0NDI0MSwgNDQyNDUsIAorICAgIDQ0MjQ5LCA0NDI1NSwgNDQyNjEsIDQ0MjY3LCA0NDI3NCwgNDQyODEsIDQ0Mjg4LCA0NDI5NSwgNDQzMDIsIDQ0MzA5LCAKKyAgICA0NDMxNiwgNDQzMjMsIDQ0MzMwLCA0NDMzNywgNDQzNDQsIDQ0MzUxLCA0NDM1OCwgNDQzNjUsIDQ0MzcyLCA0NDM3OSwgCisgICAgNDQzODYsIDQ0MzkxLCA0NDM5NywgNDQ0MDMsIDQ0NDA5LCA0NDQxNCwgNDQ0MjAsIDQ0NDI2LCA0NDQzMiwgNDQ0MzcsIAorICAgIDQ0NDQzLCA0NDQ0OSwgNDQ0NTQsIDQ0NDU5LCA0NDQ2NSwgNDQ0NzAsIDQ0NDc2LCA0NDQ4MiwgNDQ0ODcsIDQ0NDkzLCAKKyAgICA0NDQ5OSwgNDQ1MDQsIDQ0NTEwLCA0NDUxNiwgNDQ1MjIsIDQ0NTI4LCA0NDUzNCwgNDQ1MzksIDQ0NTQ1LCA0NDU1MSwgCisgICAgNDQ1NTcsIDQ0NTYyLCA0NDU2OCwgNDQ1NzQsIDQ0NTgwLCA0NDU4NSwgNDQ1OTEsIDQ0NTk3LCA0NDYwMiwgNDQ2MDcsIAorICAgIDQ0NjEzLCA0NDYxOCwgNDQ2MjQsIDQ0NjMwLCA0NDYzNSwgNDQ2NDEsIDQ0NjQ3LCA0NDY1MiwgNDQ2NTgsIDQ0NjY0LCAKKyAgICA0NDY3MCwgNDQ2NzYsIDQ0NjgyLCA0NDY4NywgNDQ2OTMsIDQ0Njk5LCA0NDcwNSwgNDQ3MTAsIDQ0NzE2LCA0NDcyMiwgCisgICAgNDQ3MjgsIDQ0NzMzLCA0NDczOSwgNDQ3NDUsIDQ0NzUwLCA0NDc1NSwgNDQ3NjEsIDQ0NzY2LCA0NDc3MiwgNDQ3NzgsIAorICAgIDQ0NzgzLCA0NDc4OSwgNDQ3OTUsIDQ0ODAwLCA0NDgwNiwgNDQ4MTIsIDQ0ODE4LCA0NDgyNCwgNDQ4MzAsIDQ0ODM0LCAKKyAgICA0NDgzOSwgNDQ4NDQsIDQ0ODQ5LCA0NDg1NCwgNDQ4NTksIDQ0ODY0LCA0NDg2OSwgNDQ4NzQsIDQ0ODc5LCA0NDg4NCwgCisgICAgNDQ4ODgsIDQ0ODkyLCA0NDg5NiwgNDQ5MDAsIDQ0OTA0LCA0NDkwOCwgNDQ5MTIsIDQ0OTE2LCA0NDkyMCwgNDQ5MjUsIAorICAgIDQ0OTMwLCA0NDkzNSwgNDQ5NDAsIDQ0OTQ1LCA0NDk1MCwgNDQ5NTksIDQ0OTY4LCA0NDk3NywgNDQ5ODYsIDQ0OTk1LCAKKyAgICA0NTAwNCwgNDUwMTMsIDQ1MDIyLCA0NTAyOSwgNDUwMzcsIDQ1MDQ1LCA0NTA1MiwgNDUwNTksIDQ1MDY3LCA0NTA3NSwgCisgICAgNDUwODIsIDQ1MDg5LCA0NTA5NywgNDUxMDUsIDQ1MTEyLCA0NTExOSwgNDUxMjcsIDQ1MTM1LCA0NTE0MiwgNDUxNDksIAorICAgIDQ1MTU3LCA0NTE2NiwgNDUxNzUsIDQ1MTgzLCA0NTE5MiwgNDUyMDEsIDQ1MjA4LCA0NTIxNSwgNDUyMjMsIDQ1MjMyLCAKKyAgICA0NTI0MSwgNDUyNDksIDQ1MjU4LCA0NTI2NywgNDUyNzQsIDQ1MjgxLCA0NTI5MCwgNDUyOTksIDQ1MzA3LCA0NTMxNSwgCisgICAgNDUzMjQsIDQ1MzMzLCA0NTM0MCwgNDUzNDcsIDQ1MzU2LCA0NTM2NSwgNDUzNzMsIDQ1MzgxLCA0NTM5MCwgNDUzOTksIAorICAgIDQ1NDA2LCA0NTQxMywgNDU0MjIsIDQ1NDMxLCA0NTQzOSwgNDU0NDgsIDQ1NDU3LCA0NTQ2NSwgNDU0NzUsIDQ1NDg1LCAKKyAgICA0NTQ5NSwgNDU1MDUsIDQ1NTE0LCA0NTUyMywgNDU1MzIsIDQ1NTQxLCA0NTU0OCwgNDU1NTYsIDQ1NTY0LCA0NTU3MiwgCisgICAgNDU1ODAsIDQ1NTg1LCA0NTU5MCwgNDU1OTksIDQ1NjA3LCA0NTYxNCwgNDU2MjMsIDQ1NjMxLCA0NTYzOCwgNDU2NDcsIAorICAgIDQ1NjU1LCA0NTY2MiwgNDU2NzEsIDQ1Njc5LCA0NTY4NiwgNDU2OTUsIDQ1NzAzLCA0NTcxMCwgNDU3MTksIDQ1NzI3LCAKKyAgICA0NTczNCwgNDU3NDMsIDQ1NzUxLCA0NTc1OCwgNDU3NjcsIDQ1Nzc1LCA0NTc4MiwgNDU3OTEsIDQ1Nzk5LCA0NTgwNiwgCisgICAgNDU4MTUsIDQ1ODI0LCA0NTgzMywgNDU4NDIsIDQ1ODU2LCA0NTg3MCwgNDU4NzcsIDQ1ODgyLCA0NTg4NywgNDU4OTIsIAorICAgIDQ1ODk3LCA0NTkwMiwgNDU5MDcsIDQ1OTEyLCA0NTkxNywgNDU5MjUsIDQ1OTMzLCA0NTk0MSwgNDU5NDksIDQ1OTU0LCAKKyAgICA0NTk2MSwgNDU5NjgsIDQ1OTc1LCA0NTk4MCwgNDU5ODgsIDQ1OTk1LCA0NjAwMywgNDYwMDcsIDQ2MDE0LCA0NjAyMCwgCisgICAgNDYwMjcsIDQ2MDMxLCA0NjAzNywgNDYwNDMsIDQ2MDQ5LCA0NjA1MywgNDYwNTYsIDQ2MDYwLCA0NjA2NCwgNDYwNzEsIAorICAgIDQ2MDc3LCA0NjA4MywgNDYwODksIDQ2MDk1LCA0NjEwOSwgNDYxMTksIDQ2MTMzLCA0NjE0NywgNDYxNTMsIDQ2MTYzLCAKKyAgICA0NjE3NywgNDYxODAsIDQ2MTgzLCA0NjE5MCwgNDYxOTgsIDQ2MjAzLCA0NjIwOCwgNDYyMTYsIDQ2MjI4LCA0NjI0MCwgCisgICAgNDYyNDgsIDQ2MjUyLCA0NjI1NiwgNDYyNTksIDQ2MjYyLCA0NjI2NiwgNDYyNzAsIDQ2MjczLCA0NjI3NiwgNDYyODEsIAorICAgIDQ2Mjg2LCA0NjI5MiwgNDYyOTgsIDQ2MzAzLCA0NjMwOCwgNDYzMTQsIDQ2MzIwLCA0NjMyNSwgNDYzMzAsIDQ2MzM1LCAKKyAgICA0NjM0MCwgNDYzNDYsIDQ2MzUyLCA0NjM1NywgNDYzNjIsIDQ2MzY4LCA0NjM3NCwgNDYzNzksIDQ2Mzg0LCA0NjM4NywgCisgICAgNDYzOTAsIDQ2Mzk5LCA0NjQwMSwgNDY0MDMsIDQ2NDA2LCA0NjQxMCwgNDY0MTYsIDQ2NDE4LCA0NjQyMSwgNDY0MjgsIAorICAgIDQ2NDM1LCA0NjQ0MywgNDY0NTEsIDQ2NDYxLCA0NjQ3NSwgNDY0ODAsIDQ2NDg1LCA0NjQ4OSwgNDY0OTQsIDQ2NTAyLCAKKyAgICA0NjUxMCwgNDY1MTksIDQ2NTI4LCA0NjUzNywgNDY1NDYsIDQ2NTUxLCA0NjU1NiwgNDY1NjIsIDQ2NTY4LCA0NjU3NCwgCisgICAgNDY1ODAsIDQ2NTgzLCA0NjU4OSwgNDY1OTUsIDQ2NjA1LCA0NjYxNSwgNDY2MjMsIDQ2NjMxLCA0NjY0MCwgNDY2NDksIAorICAgIDQ2NjUzLCA0NjY2MSwgNDY2NjksIDQ2Njc3LCA0NjY4NSwgNDY2OTQsIDQ2NzAzLCA0NjcxMiwgNDY3MjEsIDQ2NzI2LCAKKyAgICA0NjczMSwgNDY3MzYsIDQ2NzQxLCA0Njc0NiwgNDY3NTIsIDQ2NzU4LCA0Njc2MywgNDY3NjksIDQ2NzcxLCA0Njc3MywgCisgICAgNDY3NzUsIDQ2Nzc3LCA0Njc4MCwgNDY3ODMsIDQ2Nzg1LCA0Njc4NywgNDY3ODksIDQ2NzkzLCA0Njc5NywgNDY3OTksIAorICAgIDQ2ODAxLCA0NjgwNCwgNDY4MDcsIDQ2ODExLCA0NjgxNywgNDY4MjMsIDQ2ODI1LCA0NjgzMiwgNDY4MzYsIDQ2ODQxLCAKKyAgICA0Njg0NiwgNDY4NDgsIDQ2ODU4LCA0Njg2NCwgNDY4NzAsIDQ2ODc2LCA0Njg4MiwgNDY4ODgsIDQ2ODk0LCA0Njg5OSwgCisgICAgNDY5MDIsIDQ2OTA1LCA0NjkwOCwgNDY5MTAsIDQ2OTEyLCA0NjkxNiwgNDY5MjAsIDQ2OTI1LCA0NjkzMCwgNDY5MzUsIAorICAgIDQ2OTM4LCA0Njk0MiwgNDY5NDcsIDQ2OTUwLCA0Njk1NCwgNDY5NTksIDQ2OTY0LCA0Njk2OSwgNDY5NzQsIDQ2OTc5LCAKKyAgICA0Njk4NCwgNDY5ODksIDQ2OTk0LCA0Njk5OSwgNDcwMDQsIDQ3MDA5LCA0NzAxNCwgNDcwMjAsIDQ3MDI2LCA0NzAzMiwgCisgICAgNDcwMzQsIDQ3MDM3LCA0NzAzOSwgNDcwNDIsIDQ3MDQ0LCA0NzA0NiwgNDcwNDgsIDQ3MDUwLCA0NzA1MiwgNDcwNTQsIAorICAgIDQ3MDU2LCA0NzA1OCwgNDcwNjAsIDQ3MDYyLCA0NzA2NCwgNDcwNjYsIDQ3MDY4LCA0NzA3MCwgNDcwNzIsIDQ3MDc0LCAKKyAgICA0NzA3NiwgNDcwODEsIDQ3MDg2LCA0NzA5MSwgNDcwOTYsIDQ3MTAxLCA0NzEwNiwgNDcxMTEsIDQ3MTE2LCA0NzEyMSwgCisgICAgNDcxMjYsIDQ3MTMxLCA0NzEzNiwgNDcxNDEsIDQ3MTQ2LCA0NzE1MSwgNDcxNTYsIDQ3MTYxLCA0NzE2NiwgNDcxNzEsIAorICAgIDQ3MTc2LCA0NzE4MCwgNDcxODQsIDQ3MTg4LCA0NzE5NCwgNDcyMDAsIDQ3MjA1LCA0NzIxMCwgNDcyMTUsIDQ3MjIwLCAKKyAgICA0NzIyNSwgNDcyMzAsIDQ3MjM4LCA0NzI0NiwgNDcyNTQsIDQ3MjYyLCA0NzI3MCwgNDcyNzgsIDQ3Mjg2LCA0NzI5NCwgCisgICAgNDczMDAsIDQ3MzA1LCA0NzMxMCwgNDczMTUsIDQ3MzE4LCA0NzMyMiwgNDczMjYsIDQ3MzMwLCA0NzMzNCwgNDczMzgsIAorICAgIDQ3MzQyLCA0NzM0OSwgNDczNTYsIDQ3MzY0LCA0NzM3MiwgNDczNzcsIDQ3MzgyLCA0NzM4OSwgNDczOTYsIDQ3NDAzLCAKKyAgICA0NzQxMCwgNDc0MTMsIDQ3NDE2LCA0NzQyMSwgNDc0MjMsIDQ3NDI3LCA0NzQzMiwgNDc0MzQsIDQ3NDM2LCA0NzQzOCwgCisgICAgNDc0NDAsIDQ3NDQ1LCA0NzQ0OCwgNDc0NTAsIDQ3NDU1LCA0NzQ2MiwgNDc0NjksIDQ3NDcyLCA0NzQ3NiwgNDc0ODEsIAorICAgIDQ3NDg2LCA0NzQ5NCwgNDc1MDAsIDQ3NTA2LCA0NzUxOCwgNDc1MjUsIDQ3NTMyLCA0NzUzNywgNDc1NDIsIDQ3NTQ4LCAKKyAgICA0NzU1MSwgNDc1NTQsIDQ3NTU5LCA0NzU2MSwgNDc1NjUsIDQ3NTY3LCA0NzU2OSwgNDc1NzEsIDQ3NTczLCA0NzU3NSwgCisgICAgNDc1NzcsIDQ3NTgyLCA0NzU4NCwgNDc1ODYsIDQ3NTg4LCA0NzU5MCwgNDc1OTQsIDQ3NTk2LCA0NzU5OSwgNDc2MDQsIAorICAgIDQ3NjA5LCA0NzYxNCwgNDc2MTksIDQ3NjI1LCA0NzYzMSwgNDc2MzMsIDQ3NjM2LCA0NzY0MywgNDc2NTAsIDQ3NjU3LCAKKyAgICA0NzY2NCwgNDc2NjgsIDQ3NjcyLCA0NzY3NCwgNDc2NzYsIDQ3NjgwLCA0NzY4NiwgNDc2OTEsIDQ3NjkzLCA0NzY5NywgCisgICAgNDc3MDYsIDQ3NzE0LCA0NzcyMiwgNDc3MjgsIDQ3NzM0LCA0NzczOSwgNDc3NDUsIDQ3NzUwLCA0Nzc1MywgNDc3NjcsIAorICAgIDQ3NzcwLCA0Nzc3NSwgNDc3ODAsIDQ3Nzg2LCA0Nzc5NiwgNDc3OTgsIDQ3ODA0LCA0NzgxMCwgNDc4MTQsIDQ3ODIxLCAKKyAgICA0NzgyNSwgNDc4MjcsIDQ3ODI5LCA0NzgzMywgNDc4MzksIDQ3ODQ0LCA0Nzg1MCwgNDc4NTIsIDQ3ODU4LCA0Nzg2MCwgCisgICAgNDc4NjYsIDQ3ODY4LCA0Nzg3MCwgNDc4NzUsIDQ3ODc3LCA0Nzg4MSwgNDc4ODYsIDQ3ODg4LCA0Nzg5MywgNDc4OTgsIAorICAgIDQ3OTAyLCA0NzkwOSwgMCwgNDc5MTksIDQ3OTI1LCA0NzkyOCwgNDc5MzQsIDQ3OTM3LCA0Nzk0MiwgNDc5NDcsIDQ3OTUxLCAKKyAgICA0Nzk1MywgNDc5NTUsIDQ3OTU5LCA0Nzk2MywgNDc5NjcsIDQ3OTcxLCA0Nzk3NiwgNDc5NzgsIDQ3OTgzLCA0Nzk4NiwgCisgICAgNDc5ODksIDQ3OTkyLCA0Nzk5NiwgNDgwMDAsIDQ4MDA1LCA0ODAwOSwgNDgwMTQsIDQ4MDE5LCA0ODAyMywgNDgwMjgsIAorICAgIDQ4MDM0LCA0ODAzNywgNDgwNDMsIDQ4MDQ4LCA0ODA1MiwgNDgwNTcsIDQ4MDYzLCA0ODA2OSwgNDgwNzYsIDQ4MDgyLCAKKyAgICA0ODA4OSwgNDgwOTYsIDQ4MDk4LCA0ODEwNSwgNDgxMDksIDQ4MTE1LCA0ODEyMSwgNDgxMjYsIDQ4MTMyLCA0ODEzNiwgCisgICAgNDgxNDEsIDQ4MTQ0LCA0ODE0OSwgNDgxNTUsIDQ4MTYyLCA0ODE3MCwgNDgxNzcsIDQ4MTg2LCA0ODE5NiwgNDgyMDMsIAorICAgIDQ4MjA5LCA0ODIxMywgNDgyMjAsIDQ4MjI1LCA0ODIzNCwgNDgyMzcsIDQ4MjQwLCA0ODI0OSwgNDgyNTksIDQ4MjY2LCAKKyAgICA0ODI2OCwgNDgyNzQsIDQ4Mjc5LCA0ODI4MSwgNDgyODQsIDQ4Mjg4LCA0ODI5NiwgNDgzMDUsIDQ4MzA4LCA0ODMxMywgCisgICAgNDgzMTgsIDQ4MzI2LCA0ODMzNCwgNDgzNDIsIDQ4MzUwLCA0ODM1NiwgNDgzNjIsIDQ4MzY4LCA0ODM3NiwgNDgzODEsIAorICAgIDQ4Mzg0LCA0ODM4OCwgNDgzOTEsIDQ4NDAzLCA0ODQxMywgNDg0MjQsIDQ4NDMzLCA0ODQ0NCwgNDg0NTQsIDQ4NDYzLCAKKyAgICA0ODQ2OSwgNDg0NzcsIDQ4NDgxLCA0ODQ4OSwgNDg0OTMsIDQ4NTAxLCA0ODUwOCwgNDg1MTUsIDQ4NTI0LCA0ODUzMywgCisgICAgNDg1NDMsIDQ4NTUzLCA0ODU2MywgNDg1NzMsIDQ4NTgyLCA0ODU5MSwgNDg2MDEsIDQ4NjExLCA0ODYyMCwgNDg2MjksIAorICAgIDQ4NjM1LCA0ODY0MSwgNDg2NDcsIDQ4NjUzLCA0ODY1OSwgNDg2NjUsIDQ4NjcxLCA0ODY3NywgNDg2ODMsIDQ4NjkwLCAKKyAgICA0ODY5NiwgNDg3MDIsIDQ4NzA4LCA0ODcxNCwgNDg3MjAsIDQ4NzI2LCA0ODczMiwgNDg3MzgsIDQ4NzQ0LCA0ODc1MSwgCisgICAgNDg3NTgsIDQ4NzY1LCA0ODc3MiwgNDg3NzksIDQ4Nzg2LCA0ODc5MywgNDg4MDAsIDQ4ODA3LCA0ODgxNCwgNDg4MjIsIAorICAgIDQ4ODI3LCA0ODgzMCwgNDg4MzQsIDQ4ODM4LCA0ODg0NCwgNDg4NDcsIDQ4ODUzLCA0ODg1OSwgNDg4NjQsIDQ4ODY4LCAKKyAgICA0ODg3MywgNDg4NzksIDQ4ODg2LCA0ODg4OSwgNDg4OTYsIDQ4OTAzLCA0ODkwNywgNDg5MTYsIDQ4OTI1LCA0ODkzMCwgCisgICAgNDg5MzYsIDQ4OTQxLCA0ODk0NiwgNDg5NTMsIDQ4OTYwLCA0ODk2OCwgNDg5NzYsIDQ4OTg1LCA0ODk4OSwgNDg5OTgsIAorICAgIDQ5MDAzLCA0OTAwNywgNDkwMTQsIDQ5MDE4LCA0OTAyNSwgNDkwMzMsIDQ5MDM4LCA0OTA0NiwgNDkwNTAsIDQ5MDU1LCAKKyAgICA0OTA1OSwgNDkwNjQsIDQ5MDY4LCA0OTA3MywgNDkwNzgsIDQ5MDg3LCA0OTA4OSwgNDkwOTIsIDQ5MDk1LCA0OTEwMiwgCisgICAgNDkxMDksIDQ5MTE0LCA0OTEyMiwgNDkxMjgsIDQ5MTM0LCA0OTEzOSwgNDkxNDIsIDQ5MTQ3LCA0OTE1MiwgNDkxNTcsIAorICAgIDQ5MTY1LCA0OTE2OSwgNDkxNzYsIDQ5MTg0LCA0OTE5MiwgNDkxOTcsIDQ5MjAyLCA0OTIwOCwgNDkyMTMsIDQ5MjE4LCAKKyAgICA0OTIyNCwgNDkyMjksIDQ5MjMyLCA0OTIzNiwgNDkyNDAsIDQ5MjQ3LCA0OTI1NiwgNDkyNjEsIDQ5MjcwLCA0OTI3OSwgCisgICAgNDkyODUsIDQ5MjkxLCA0OTI5NiwgNDkzMDEsIDQ5MzA2LCA0OTMxMSwgNDkzMTcsIDQ5MzIzLCA0OTMzMSwgNDkzMzksIAorICAgIDQ5MzQ1LCA0OTM1MSwgNDkzNTYsIDQ5MzYxLCA0OTM2OCwgNDkzNzUsIDQ5MzgxLCA0OTM4NCwgNDkzODcsIDQ5MzkxLCAKKyAgICA0OTM5NSwgNDkzOTksIDQ5NDA0LCA0OTQxMCwgNDk0MTYsIDQ5NDIzLCA0OTQzMCwgNDk0MzUsIDQ5NDM5LCA0OTQ0MywgCisgICAgNDk0NDcsIDQ5NDUxLCA0OTQ1NSwgNDk0NTksIDQ5NDYzLCA0OTQ2NywgNDk0NzEsIDQ5NDc1LCA0OTQ3OSwgNDk0ODMsIAorICAgIDQ5NDg3LCA0OTQ5MSwgNDk0OTUsIDQ5NDk5LCA0OTUwMywgNDk1MDcsIDQ5NTExLCA0OTUxNSwgNDk1MTksIDQ5NTIzLCAKKyAgICA0OTUyNywgNDk1MzEsIDQ5NTM1LCA0OTUzOSwgNDk1NDMsIDQ5NTQ3LCA0OTU1MSwgNDk1NTUsIDQ5NTU5LCA0OTU2MywgCisgICAgNDk1NjcsIDQ5NTcxLCA0OTU3NSwgNDk1NzksIDQ5NTgzLCA0OTU4NywgNDk1OTEsIDQ5NTk1LCA0OTU5OSwgNDk2MDMsIAorICAgIDQ5NjA3LCA0OTYxMSwgNDk2MTUsIDQ5NjE5LCA0OTYyMywgNDk2MjcsIDQ5NjMxLCA0OTYzNSwgNDk2MzksIDQ5NjQzLCAKKyAgICA0OTY0NywgNDk2NTEsIDQ5NjU1LCA0OTY1OSwgNDk2NjMsIDQ5NjY3LCA0OTY3MSwgNDk2NzUsIDQ5Njc5LCA0OTY4MywgCisgICAgNDk2ODcsIDQ5NjkxLCA0OTY5NSwgNDk2OTksIDQ5NzAzLCA0OTcwNywgNDk3MTEsIDQ5NzE1LCA0OTcxOSwgNDk3MjMsIAorICAgIDQ5NzI3LCA0OTczMSwgNDk3MzUsIDQ5NzM5LCA0OTc0MywgNDk3NDcsIDQ5NzUxLCA0OTc1NSwgNDk3NTksIDQ5NzYzLCAKKyAgICA0OTc2NywgNDk3NzEsIDQ5Nzc1LCA0OTc3OSwgNDk3ODMsIDQ5Nzg3LCA0OTc5MSwgNDk3OTUsIDQ5Nzk5LCA0OTgwMywgCisgICAgNDk4MDcsIDQ5ODExLCA0OTgxNSwgNDk4MTksIDQ5ODIzLCA0OTgyNywgNDk4MzEsIDQ5ODM1LCA0OTgzOSwgNDk4NDMsIAorICAgIDQ5ODQ3LCA0OTg1MSwgNDk4NTUsIDQ5ODU5LCA0OTg2MywgNDk4NjcsIDQ5ODcxLCA0OTg3NSwgNDk4NzksIDQ5ODgzLCAKKyAgICA0OTg4NywgNDk4OTEsIDQ5ODk1LCA0OTg5OSwgNDk5MDMsIDQ5OTA3LCA0OTkxMSwgNDk5MTUsIDQ5OTE5LCA0OTkyMywgCisgICAgNDk5MjcsIDQ5OTMxLCA0OTkzNSwgNDk5MzksIDQ5OTQzLCA0OTk0NywgNDk5NTEsIDQ5OTU1LCA0OTk1OSwgNDk5NjMsIAorICAgIDQ5OTY3LCA0OTk3MSwgNDk5NzUsIDQ5OTc5LCA0OTk4MywgNDk5ODcsIDQ5OTkxLCA0OTk5NSwgNDk5OTksIDUwMDAzLCAKKyAgICA1MDAwNywgNTAwMTEsIDUwMDE1LCA1MDAxOSwgNTAwMjMsIDUwMDI3LCA1MDAzMSwgNTAwMzUsIDUwMDM5LCA1MDA0MywgCisgICAgNTAwNDcsIDUwMDUxLCA1MDA1NSwgNTAwNTksIDUwMDYzLCA1MDA2NywgNTAwNzEsIDUwMDc1LCA1MDA3OSwgNTAwODMsIAorICAgIDUwMDg3LCA1MDA5MSwgNTAwOTUsIDUwMDk5LCA1MDEwMywgNTAxMDcsIDUwMTExLCA1MDExNSwgNTAxMTksIDUwMTIzLCAKKyAgICA1MDEyNywgNTAxMzEsIDUwMTM1LCA1MDEzOSwgNTAxNDMsIDUwMTQ3LCA1MDE1MSwgNTAxNTUsIDUwMTU5LCA1MDE2MywgCisgICAgNTAxNjcsIDUwMTcxLCA1MDE3NSwgNTAxNzksIDUwMTgzLCA1MDE4NywgNTAxOTEsIDUwMTk1LCA1MDE5OSwgNTAyMDMsIAorICAgIDUwMjA3LCA1MDIxMSwgNTAyMTUsIDUwMjE5LCA1MDIyMywgNTAyMjcsIDUwMjMxLCA1MDIzNSwgNTAyMzksIDUwMjQzLCAKKyAgICA1MDI0NywgNTAyNTEsIDUwMjU1LCA1MDI1OSwgNTAyNjMsIDUwMjY3LCA1MDI3MSwgNTAyNzUsIDUwMjc5LCA1MDI4MywgCisgICAgNTAyODcsIDUwMjkxLCA1MDI5NSwgNTAyOTksIDUwMzAzLCA1MDMwNywgNTAzMTEsIDUwMzE1LCA1MDMxOSwgNTAzMjMsIAorICAgIDUwMzI3LCA1MDMzMSwgNTAzMzUsIDUwMzM5LCA1MDM0MywgNTAzNDcsIDUwMzUxLCA1MDM1NSwgNTAzNTksIDUwMzYzLCAKKyAgICA1MDM2NywgNTAzNzEsIDUwMzc1LCA1MDM3OSwgNTAzODMsIDUwMzg3LCA1MDM5MSwgNTAzOTUsIDUwMzk5LCA1MDQwMywgCisgICAgNTA0MDcsIDUwNDExLCA1MDQxNSwgNTA0MTksIDUwNDIzLCA1MDQyNywgNTA0MzEsIDUwNDM1LCA1MDQzOSwgNTA0NDMsIAorICAgIDUwNDQ3LCA1MDQ1MSwgNTA0NTUsIDUwNDU5LCA1MDQ2NiwgNTA0NzQsIDUwNDgwLCA1MDQ4NiwgNTA0OTMsIDUwNTAwLCAKKyAgICA1MDUwNiwgNTA1MTIsIDUwNTE4LCA1MDUyNCwgNTA1MjksIDUwNTM0LCA1MDUzOSwgNTA1NDQsIDUwNTUwLCA1MDU1NiwgCisgICAgNTA1NjQsIDUwNTcxLCA1MDU3NywgNTA1ODMsIDUwNTkxLCA1MDYwMCwgNTA2MDcsIDUwNjE3LCA1MDYyOCwgNTA2MzEsIAorICAgIDUwNjM0LCA1MDYzOCwgNTA2NDIsIDUwNjQ5LCA1MDY1NiwgNTA2NjcsIDUwNjc4LCA1MDY4OCwgNTA2OTgsIDUwNzA1LCAKKyAgICA1MDcxMiwgNTA3MTksIDUwNzI2LCA1MDczNywgNTA3NDgsIDUwNzU5LCA1MDc3MCwgNTA3ODAsIDUwNzkwLCA1MDgwMiwgCisgICAgNTA4MTQsIDUwODI1LCA1MDgzNiwgNTA4NDgsIDUwODYwLCA1MDg2OSwgNTA4NzksIDUwODg5LCA1MDkwMCwgNTA5MTEsIAorICAgIDUwOTE4LCA1MDkyNSwgNTA5MzIsIDUwOTM5LCA1MDk0OSwgNTA5NTksIDUwOTY3LCA1MDk3NSwgNTA5ODIsIDUwOTg5LCAKKyAgICA1MDk5NiwgNTEwMDMsIDUxMDEwLCA1MTAxNSwgNTEwMjAsIDUxMDI2LCA1MTAzNCwgNTEwNDQsIDUxMDU0LCA1MTA2NCwgCisgICAgNTEwNzQsIDUxMDg0LCA1MTA5NCwgNTExMDQsIDUxMTE0LCA1MTEyNCwgNTExMzQsIDUxMTQ0LCA1MTE1NSwgNTExNjYsIAorICAgIDUxMTc2LCA1MTE4NiwgNTExOTcsIDUxMjA4LCA1MTIxOCwgNTEyMjgsIDUxMjM5LCA1MTI1MCwgNTEyNjAsIDUxMjcwLCAKKyAgICA1MTI4MSwgNTEyOTIsIDUxMzA4LCA1MTMyNywgNTEzNDMsIDUxMzYyLCA1MTM3OCwgNTEzOTQsIDUxNDEwLCA1MTQyNiwgCisgICAgNTE0MzcsIDUxNDQ5LCA1MTQ2MCwgNTE0NzIsIDUxNDkxLCA1MTUxMCwgNTE1MTgsIDUxNTI0LCA1MTUzMSwgNTE1MzgsIAorICAgIDUxNTQ1LCA1MTU1MiwgNTE1NTcsIDUxNTYzLCA1MTU2OCwgNTE1NzMsIDUxNTc5LCA1MTU4NCwgNTE1ODksIDUxNTk0LCAKKyAgICA1MTU5OSwgNTE2MDQsIDUxNjExLCA1MTYxNiwgNTE2MjMsIDUxNjI4LCA1MTYzMywgNTE2MzcsIDUxNjQxLCA1MTY0OCwgCisgICAgNTE2NTUsIDUxNjYyLCA1MTY2OSwgNTE2NzYsIDUxNjgzLCA1MTY5NiwgNTE3MDksIDUxNzIyLCA1MTczNSwgNTE3NDMsIAorICAgIDUxNzUxLCA1MTc1NywgNTE3NjMsIDUxNzcwLCA1MTc3NywgNTE3ODQsIDUxNzkxLCA1MTc5NSwgNTE4MDAsIDUxODA4LCAKKyAgICA1MTgxNiwgNTE4MjQsIDUxODMxLCA1MTgzNSwgNTE4NDMsIDUxODUxLCA1MTg1NSwgNTE4NTksIDUxODY0LCA1MTg3MSwgCisgICAgNTE4NzksIDUxODg3LCA1MTkwNiwgNTE5MjUsIDUxOTQ0LCA1MTk2MywgNTE5ODIsIDUyMDAxLCA1MjAyMCwgNTIwMzksIAorICAgIDUyMDQ1LCA1MjA1MiwgNTIwNjEsIDUyMDY5LCA1MjA3NywgNTIwODIsIDUyMDg1LCA1MjA4OCwgNTIwOTMsIDUyMDk2LCAKKyAgICA1MjExNSwgNTIxMjIsIDUyMTI4LCA1MjEzNCwgNTIxMzgsIDUyMTQxLCA1MjE0NCwgNTIxNDcsIDUyMTU5LCA1MjE3MiwgCisgICAgNTIxNzksIDUyMTg2LCA1MjE4OSwgNTIxOTMsIDUyMTk2LCA1MjIwMSwgNTIyMDYsIDUyMjExLCA1MjIxNywgNTIyMjYsIAorICAgIDUyMjMzLCA1MjI0MCwgNTIyNDgsIDUyMjU1LCA1MjI2MiwgNTIyNjUsIDUyMjcxLCA1MjI3NywgNTIyODAsIDUyMjgzLCAKKyAgICA1MjI4OCwgNTIyOTMsIDUyMjk5LCA1MjMwNSwgNTIzMDksIDUyMzE0LCA1MjMyMSwgNTIzMjUsIDUyMzMxLCA1MjMzNSwgCisgICAgNTIzMzksIDUyMzQ3LCA1MjM1OSwgNTIzNjgsIDUyMzcyLCA1MjM3NCwgNTIzODMsIDUyMzkyLCA1MjM5OCwgNTI0MDEsIAorICAgIDUyNDA3LCA1MjQxMywgNTI0MTgsIDUyNDIzLCA1MjQyOCwgNTI0MzMsIDUyNDM4LCA1MjQ0MywgNTI0NDUsIDUyNDUxLCAKKyAgICA1MjQ1NiwgNTI0NjMsIDUyNDY3LCA1MjQ3MywgNTI0NzYsIDUyNDgwLCA1MjQ4NywgNTI0OTQsIDUyNDk2LCA1MjQ5OCwgCisgICAgNTI1MDQsIDUyNTEwLCA1MjUxNiwgNTI1MjUsIDUyNTM0LCA1MjU0MSwgNTI1NDgsIDUyNTU0LCA1MjU2MCwgNTI1NjUsIAorICAgIDUyNTcwLCA1MjU3NSwgNTI1ODEsIDUyNTg3LCA1MjU5MiwgNTI1OTksIDUyNjAzLCA1MjYwNywgNTI2MjAsIDUyNjMzLCAKKyAgICA1MjY0NSwgNTI2NTQsIDUyNjYwLCA1MjY2NywgNTI2NzIsIDUyNjc3LCA1MjY4MiwgNTI2ODcsIDUyNjkyLCA1MjY5NCwgCisgICAgNTI3MDEsIDUyNzA4LCA1MjcxNSwgNTI3MjIsIDUyNzI5LCA1MjczNywgNTI3NDMsIDUyNzQ4LCA1Mjc1NCwgNTI3NjAsIAorICAgIDUyNzY2LCA1Mjc3MywgNTI3NzksIDUyNzg3LCA1Mjc5NSwgNTI4MDMsIDUyODExLCA1MjgxOCwgNTI4MjQsIDUyODMwLCAKKyAgICA1MjgzOSwgNTI4NDMsIDUyODUyLCA1Mjg2MSwgNTI4NzAsIDUyODc4LCA1Mjg4MiwgNTI4ODgsIDUyODk1LCA1MjkwMiwgCisgICAgNTI5MDYsIDUyOTEyLCA1MjkxOSwgNTI5MjQsIDUyOTI5LCA1MjkzNSwgNTI5NDAsIDUyOTQ1LCA1Mjk1MiwgNTI5NTksIAorICAgIDUyOTY0LCA1Mjk2OSwgNTI5NzcsIDUyOTg1LCA1Mjk5NSwgNTMwMDUsIDUzMDEyLCA1MzAxOSwgNTMwMjMsIDUzMDI3LCAKKyAgICA1MzAzOSwgNTMwNDUsIDUzMDUxLCA1MzA1NiwgNTMwNjEsIDUzMDY4LCA1MzA3NSwgNTMwODEsIDUzMDg3LCA1MzA5NiwgCisgICAgNTMxMDQsIDUzMTEyLCA1MzExOSwgNTMxMjYsIDUzMTMzLCA1MzEzOSwgNTMxNDYsIDUzMTUyLCA1MzE1OSwgNTMxNjYsIAorICAgIDUzMTczLCA1MzE4MCwgNTMxODYsIDUzMTkxLCA1MzIwMCwgNTMyMTAsIDUzMjE3LCA1MzIyNiwgNTMyMzIsIDUzMjM3LCAKKyAgICA1MzI0MiwgNTMyNTIsIDUzMjU4LCA1MzI2NCwgNTMyNzAsIDUzMjc4LCA1MzI4MywgNTMyOTAsIDUzMjk3LCA1MzMwOCwgCisgICAgNTMzMTUsIDUzMzIyLCA1MzMyOSwgNTMzMzYsIDUzMzQzLCA1MzM1MCwgNTMzNTcsIDUzMzY5LCA1MzM4MSwgNTMzOTIsIAorICAgIDUzNDAzLCA1MzQxNiwgNTM0MjksIDUzNDM0LCA1MzQzOSwgNTM0NDgsIDUzNDU3LCA1MzQ2NCwgNTM0NzEsIDUzNDgwLCAKKyAgICA1MzQ4OSwgNTM0OTcsIDUzNTA1LCA1MzUxMywgNTM1MjEsIDUzNTMxLCA1MzU0MSwgNTM1NTUsIDUzNTY5LCA1MzU3NywgCisgICAgNTM1ODUsIDUzNTk3LCA1MzYwOSwgNTM2MTcsIDUzNjI1LCA1MzYzNSwgNTM2NDUsIDUzNjUwLCA1MzY1NSwgNTM2NjQsIAorICAgIDUzNjczLCA1MzY3OCwgNTM2ODMsIDUzNjkxLCA1MzY5NywgNTM3MDMsIDUzNzExLCA1MzcxOSwgNTM3MzIsIDUzNzQ1LCAKKyAgICA1Mzc0OSwgNTM3NTMsIDUzNzYwLCA1Mzc2NywgNTM3NzQsIDUzNzgyLCA1Mzc5MCwgNTM3OTksIDUzODA4LCA1MzgxNCwgCisgICAgNTM4MjAsIDUzODI3LCA1MzgzNCwgNTM4NDEsIDUzODQ4LCA1Mzg1NywgNTM4NjYsIDUzODY5LCA1Mzg3MiwgNTM4NzcsIAorICAgIDUzODgyLCA1Mzg4OCwgNTM4OTQsIDUzOTAxLCA1MzkwOCwgNTM5MTgsIDUzOTI4LCA1MzkzNSwgNTM5NDIsIDUzOTUwLCAKKyAgICA1Mzk1OCwgNTM5NjYsIDUzOTc0LCA1Mzk4MiwgNTM5OTAsIDUzOTk2LCA1NDAwMiwgNTQwMDYsIDU0MDEwLCA1NDAxNywgCisgICAgNTQwMjQsIDU0MDI5LCA1NDAzNCwgNTQwMzksIDU0MDQ0LCA1NDA1MCwgNTQwNjQsIDU0MDcxLCA1NDA3OCwgNTQwODIsIAorICAgIDU0MDg0LCA1NDA4NiwgNTQwOTEsIDU0MDk2LCA1NDEwMSwgNTQxMDYsIDU0MTE0LCA1NDEyMSwgNTQxMjgsIDU0MTM2LCAKKyAgICA1NDE0OCwgNTQxNTYsIDU0MTY0LCA1NDE3NSwgNTQxNzksIDU0MTgzLCA1NDE4OSwgNTQxOTcsIDU0MjEwLCA1NDIxNywgCisgICAgNTQyMjQsIDU0MjMxLCA1NDIzNiwgNTQyNDMsIDU0MjUyLCA1NDI2MCwgNTQyNjYsIDU0MjcyLCA1NDI3OCwgNTQyODcsIAorICAgIDU0Mjk2LCA1NDMwNCwgNTQzMTMsIDU0MzE4LCA1NDMyMSwgNTQzMjYsIDU0MzMyLCA1NDMzOCwgNTQzNDQsIDU0MzUwLCAKKyAgICA1NDM1NCwgNTQzNTcsIDU0MzYxLCA1NDM2NSwgNTQzNzEsIDU0Mzc3LCA1NDM4MywgNTQzODksIDU0MzkzLCA1NDM5NywgCisgICAgNTQ0MDQsIDU0NDExLCA1NDQxOCwgNTQ0MjUsIDU0NDMyLCA1NDQzOSwgNTQ0NDksIDU0NDU5LCA1NDQ2NiwgNTQ0NzMsIAorICAgIDU0NDgxLCA1NDQ4OSwgNTQ0OTMsIDU0NDk4LCA1NDUwMywgNTQ1MDksIDU0NTE1LCA1NDUxOCwgNTQ1MjEsIDU0NTI0LCAKKyAgICA1NDUyNywgNTQ1MzEsIDU0NTM2LCA1NDU0MSwgNTQ1NDYsIDU0NTUxLCA1NDU1NiwgNTQ1NjAsIDU0NTY0LCA1NDU2OCwgCisgICAgNTQ1NzIsIDU0NTc2LCA1NDU4MCwgNTQ1ODQsIDU0NTkwLCA1NDU5NCwgNTQ2MDAsIDU0NjA1LCA1NDYxMiwgNTQ2MjAsIAorICAgIDU0NjI3LCA1NDYzNSwgNTQ2NDIsIDU0NjUwLCA1NDY1OSwgNTQ2NjYsIDU0Njc2LCA1NDY4NywgNTQ2OTMsIDU0NzAyLCAKKyAgICA1NDcwOCwgNTQ3MTcsIDU0NzI2LCA1NDczMiwgNTQ3MzgsIDU0NzQyLCA1NDc0NiwgNTQ3NTUsIDU0NzY0LCA1NDc3MSwgCisgICAgNTQ3NzgsIDU0Nzg3LCAwLCAwLCAwLCA1NDc5NiwgNTQ4MDEsIDU0ODA1LCA1NDgwOSwgNTQ4MTQsIDU0ODE5LCA1NDgyNCwgCisgICAgNTQ4MzIsIDU0ODQwLCA1NDg0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTQ4NDcsIDU0ODUyLCA1NDg1NywgNTQ4NjIsIDU0ODY3LCA1NDg3MiwgNTQ4NzcsIDU0ODgyLCAKKyAgICA1NDg4NywgNTQ4OTIsIDU0ODk3LCA1NDkwMywgNTQ5MDcsIDU0OTEyLCA1NDkxNywgNTQ5MjIsIDU0OTI3LCA1NDkzMiwgCisgICAgNTQ5MzcsIDU0OTQyLCA1NDk0NywgNTQ5NTIsIDU0OTU3LCA1NDk2MiwgNTQ5NjcsIDU0OTcyLCA1NDk3NywgNTQ5ODIsIAorICAgIDU0OTg3LCA1NDk5MiwgNTQ5OTcsIDU1MDAyLCA1NTAwNywgNTUwMTIsIDU1MDE3LCA1NTAyMywgNTUwMjgsIDU1MDM0LCAKKyAgICA1NTA0MywgNTUwNDgsIDU1MDU2LCA1NTA2MywgNTUwNzIsIDU1MDc3LCA1NTA4MiwgNTUwODcsIDU1MDkzLCAwLCA1NTEwMCwgCisgICAgNTUxMDUsIDU1MTEwLCA1NTExNSwgNTUxMjAsIDU1MTI1LCA1NTEzMCwgNTUxMzUsIDU1MTQwLCA1NTE0NSwgNTUxNTAsIAorICAgIDU1MTU2LCA1NTE2MCwgNTUxNjUsIDU1MTcwLCA1NTE3NSwgNTUxODAsIDU1MTg1LCA1NTE5MCwgNTUxOTUsIDU1MjAwLCAKKyAgICA1NTIwNSwgNTUyMTAsIDU1MjE1LCA1NTIyMCwgNTUyMjUsIDU1MjMwLCA1NTIzNSwgNTUyNDAsIDU1MjQ1LCA1NTI1MCwgCisgICAgNTUyNTUsIDU1MjYwLCA1NTI2NSwgNTUyNzAsIDU1Mjc2LCA1NTI4MSwgNTUyODcsIDU1Mjk2LCA1NTMwMSwgNTUzMDksIAorICAgIDU1MzE2LCA1NTMyNSwgNTUzMzAsIDU1MzM1LCA1NTM0MCwgNTUzNDYsIDAsIDU1MzUzLCA1NTM2MSwgNTUzNjksIDU1Mzc4LCAKKyAgICA1NTM4NSwgNTUzOTMsIDU1Mzk5LCA1NTQwOCwgNTU0MTYsIDU1NDI0LCA1NTQzMiwgNTU0NDAsIDU1NDQ4LCA1NTQ1NiwgCisgICAgNTU0NjEsIDU1NDY4LCA1NTQ3NCwgNTU0ODEsIDU1NDg5LCA1NTQ5NiwgNTU1MDMsIDU1NTExLCA1NTUxNywgNTU1MjMsIAorICAgIDU1NTMwLCA1NTUzNywgNTU1NDcsIDU1NTU3LCA1NTU2NCwgNTU1NzEsIDU1NTc2LCA1NTU4NiwgNTU1OTYsIDU1NjAxLCAKKyAgICA1NTYwNiwgNTU2MTEsIDU1NjE2LCA1NTYyMSwgNTU2MjYsIDU1NjMxLCA1NTYzNiwgNTU2NDEsIDU1NjQ2LCA1NTY1MSwgCisgICAgNTU2NTYsIDU1NjYxLCA1NTY2NiwgNTU2NzEsIDU1Njc2LCA1NTY4MSwgNTU2ODYsIDU1NjkxLCA1NTY5NiwgNTU3MDEsIAorICAgIDU1NzA2LCA1NTcxMSwgNTU3MTYsIDU1NzIxLCA1NTcyNiwgNTU3MzEsIDU1NzM2LCA1NTc0MSwgNTU3NDYsIDU1NzUwLCAKKyAgICA1NTc1NCwgNTU3NTksIDU1NzY0LCA1NTc2OSwgNTU3NzQsIDU1Nzc5LCA1NTc4NCwgNTU3ODksIDU1Nzk0LCA1NTc5OSwgCisgICAgNTU4MDQsIDU1ODA5LCA1NTgxNCwgNTU4MTksIDU1ODI0LCA1NTgyOSwgNTU4MzQsIDU1ODM5LCA1NTg0NCwgNTU4NTEsIAorICAgIDU1ODU4LCA1NTg2NSwgNTU4NzIsIDU1ODc5LCA1NTg4NiwgNTU4OTMsIDU1OTAwLCA1NTkwNywgNTU5MTQsIDU1OTIxLCAKKyAgICA1NTkyOCwgNTU5MzUsIDU1OTQyLCA1NTk0NywgNTU5NTIsIDU1OTU5LCA1NTk2NiwgNTU5NzMsIDU1OTgwLCA1NTk4NywgCisgICAgNTU5OTQsIDU2MDAxLCA1NjAwOCwgNTYwMTUsIDU2MDIyLCA1NjAyOSwgNTYwMzYsIDU2MDQyLCA1NjA0OCwgNTYwNTQsIAorICAgIDU2MDYwLCA1NjA2NywgNTYwNzQsIDU2MDgxLCA1NjA4OCwgNTYwOTUsIDU2MTAyLCA1NjEwOSwgNTYxMTYsIDU2MTIzLCAKKyAgICA1NjEzMCwgNTYxMzgsIDU2MTQ2LCA1NjE1NCwgNTYxNjIsIDU2MTcwLCA1NjE3OCwgNTYxODYsIDU2MTk0LCA1NjE5OCwgCisgICAgNTYyMDQsIDU2MjEwLCA1NjIxNCwgNTYyMjAsIDU2MjI2LCA1NjIzMiwgNTYyMzksIDU2MjQ2LCA1NjI1MywgNTYyNjAsIAorICAgIDU2MjY1LCA1NjI3MSwgNTYyNzcsIDU2Mjg0LCAwLCAwLCAwLCAwLCAwLCA1NjI5MSwgNTYyOTksIDU2MzA4LCA1NjMxNywgCisgICAgNTYzMjUsIDU2MzMxLCA1NjMzNiwgNTYzNDEsIDU2MzQ2LCA1NjM1MSwgNTYzNTYsIDU2MzYxLCA1NjM2NiwgNTYzNzEsIAorICAgIDU2Mzc2LCA1NjM4MSwgNTYzODYsIDU2MzkxLCA1NjM5NiwgNTY0MDEsIDU2NDA2LCA1NjQxMSwgNTY0MTYsIDU2NDIxLCAKKyAgICA1NjQyNiwgNTY0MzEsIDU2NDM2LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NiwgNTY0NjEsIDU2NDY2LCA1NjQ3MSwgCisgICAgNTY0NzYsIDU2NDgxLCA1NjQ4NiwgNTY0OTEsIDU2NDk2LCA1NjUwMSwgNTY1MDYsIDU2NTExLCA1NjUxNiwgNTY1MjEsIAorICAgIDU2NTI2LCAwLCA1NjUzMSwgMCwgMCwgMCwgMCwgMCwgNTY1MzYsIDAsIDAsIDU2NTQxLCA1NjU0NSwgNTY1NTAsIDU2NTU1LCAKKyAgICA1NjU2MCwgNTY1NjUsIDU2NTc0LCA1NjU3OSwgNTY1ODQsIDU2NTg5LCA1NjU5NCwgNTY1OTksIDU2NjA0LCA1NjYwOSwgCisgICAgNTY2MTQsIDU2NjIxLCA1NjYyNiwgNTY2MzEsIDU2NjQwLCA1NjY0NywgNTY2NTIsIDU2NjU3LCA1NjY2MiwgNTY2NjksIAorICAgIDU2Njc0LCA1NjY4MSwgNTY2ODYsIDU2NjkxLCA1NjY5OCwgNTY3MDUsIDU2NzEwLCA1NjcxNSwgNTY3MjAsIDU2NzI3LCAKKyAgICA1NjczNCwgNTY3MzksIDU2NzQ0LCA1Njc0OSwgNTY3NTQsIDU2NzU5LCA1Njc2NiwgNTY3NzMsIDU2Nzc4LCA1Njc4MywgCisgICAgNTY3ODgsIDU2NzkzLCA1Njc5OCwgNTY4MDMsIDU2ODA4LCA1NjgxMywgNTY4MTgsIDU2ODIzLCA1NjgyOCwgNTY4MzUsIAorICAgIDU2ODQwLCA1Njg0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4NTAsIDU2ODU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1Njg2MiwgNTY4NjcsIDU2ODcxLCA1Njg3NSwgNTY4NzksIDU2ODgzLCA1Njg4NywgNTY4OTEsIAorICAgIDU2ODk1LCA1Njg5OSwgNTY5MDMsIDU2OTA3LCA1NjkxMywgNTY5MTcsIDU2OTIxLCA1NjkyNSwgNTY5MjksIDU2OTMzLCAKKyAgICA1NjkzNywgNTY5NDEsIDU2OTQ1LCA1Njk0OSwgNTY5NTMsIDU2OTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1Njk2MSwgNTY5NjUsIDU2OTY5LCA1Njk3MywgNTY5NzcsIDU2OTgxLCA1Njk4NSwgMCwgNTY5ODksIDU2OTkzLCA1Njk5NywgCisgICAgNTcwMDEsIDU3MDA1LCA1NzAwOSwgNTcwMTMsIDAsIDU3MDE3LCA1NzAyMSwgNTcwMjUsIDU3MDI5LCA1NzAzMywgNTcwMzcsIAorICAgIDU3MDQxLCAwLCA1NzA0NSwgNTcwNDksIDU3MDUzLCA1NzA1NywgNTcwNjEsIDU3MDY1LCA1NzA2OSwgMCwgNTcwNzMsIAorICAgIDU3MDc3LCA1NzA4MSwgNTcwODUsIDU3MDg5LCA1NzA5MywgNTcwOTcsIDAsIDU3MTAxLCA1NzEwNSwgNTcxMDksIDU3MTEzLCAKKyAgICA1NzExNywgNTcxMjEsIDU3MTI1LCAwLCA1NzEyOSwgNTcxMzMsIDU3MTM3LCA1NzE0MSwgNTcxNDUsIDU3MTQ5LCA1NzE1MywgCisgICAgMCwgNTcxNTcsIDU3MTYxLCA1NzE2NSwgNTcxNjksIDU3MTczLCA1NzE3NywgNTcxODEsIDAsIDU3MTg1LCA1NzE5MCwgCisgICAgNTcxOTUsIDU3MjAwLCA1NzIwNSwgNTcyMTAsIDU3MjE1LCA1NzIxOSwgNTcyMjQsIDU3MjI5LCA1NzIzNCwgNTcyMzgsIAorICAgIDU3MjQzLCA1NzI0OCwgNTcyNTMsIDU3MjU4LCA1NzI2MiwgNTcyNjcsIDU3MjcyLCA1NzI3NywgNTcyODIsIDU3Mjg3LCAKKyAgICA1NzI5MiwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgNTczMTMsIDU3MzE4LCA1NzMyMywgNTczMjksIDU3MzM2LCA1NzM0MywgCisgICAgNTczNTIsIDU3MzU5LCA1NzM2OCwgNTczNzIsIDU3Mzc2LCA1NzM4MiwgNTczODgsIDU3Mzk0LCA1NzQwMiwgNTc0MDgsIAorICAgIDU3NDEyLCA1NzQxNiwgNTc0MjAsIDU3NDI2LCA1NzQzMiwgNTc0MzYsIDU3NDM4LCA1NzQ0MiwgNTc0NDgsIDU3NDUwLCAKKyAgICA1NzQ1NCwgNTc0NTgsIDU3NDYyLCA1NzQ2OCwgNTc0NzMsIDU3NDc3LCA1NzQ4MSwgNTc0ODYsIDU3NDkyLCA1NzQ5NywgCisgICAgNTc1MDIsIDU3NTA3LCA1NzUxMiwgNTc1MTksIDU3NTI2LCA1NzUzMSwgNTc1MzYsIDU3NTQxLCA1NzU0NiwgNTc1NTEsIAorICAgIDU3NTU2LCA1NzU2MCwgNTc1NjQsIDU3NTcxLCA1NzU3OCwgNTc1ODQsIDU3NTg4LCA1NzU5MywgNTc1OTUsIDU3NTk5LCAKKyAgICA1NzYwNywgNTc2MTEsIDU3NjE1LCA1NzYxOSwgNTc2MjMsIDU3NjI5LCA1NzYzNSwgNTc2MzksIDU3NjQ1LCA1NzY0OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2NTMsIDU3NjU3LCAKKyAgICA1NzY2MSwgNTc2NjYsIDU3NjcxLCA1NzY3NiwgNTc2ODAsIDU3Njg0LCA1NzY4OCwgNTc2OTMsIDU3Njk4LCA1NzcwMiwgCisgICAgNTc3MDYsIDU3NzEwLCA1NzcxNCwgNTc3MTksIDU3NzI0LCA1NzcyOSwgNTc3MzQsIDU3NzM4LCA1Nzc0MiwgNTc3NDcsIAorICAgIDU3NzUyLCA1Nzc1NywgNTc3NjIsIDU3NzY2LCAwLCA1Nzc3MCwgNTc3NzQsIDU3Nzc4LCA1Nzc4MiwgNTc3ODYsIDU3NzkwLCAKKyAgICA1Nzc5NCwgNTc3OTksIDU3ODA0LCA1NzgwOCwgNTc4MTMsIDU3ODE4LCA1NzgyNywgNTc4MzEsIDU3ODM1LCA1NzgzOSwgCisgICAgNTc4NDYsIDU3ODUwLCA1Nzg1NSwgNTc4NjAsIDU3ODY0LCA1Nzg2OCwgNTc4NzQsIDU3ODc5LCA1Nzg4NCwgNTc4ODksIAorICAgIDU3ODk0LCA1Nzg5OCwgNTc5MDIsIDU3OTA2LCA1NzkxMCwgNTc5MTQsIDU3OTE5LCA1NzkyNCwgNTc5MjgsIDU3OTMyLCAKKyAgICA1NzkzNywgNTc5NDIsIDU3OTQ3LCA1Nzk1MSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzEsIDU3OTc3LCA1Nzk4MSwgCisgICAgNTc5ODcsIDU3OTkzLCA1Nzk5NywgNTgwMDMsIDU4MDA5LCA1ODAxNCwgNTgwMTksIDU4MDIzLCA1ODAyOSwgNTgwMzMsIAorICAgIDU4MDM3LCA1ODA0MywgNTgwNDksIDU4MDU0LCA1ODA1OSwgNTgwNjMsIDU4MDY3LCA1ODA3NSwgNTgwODEsIDU4MDg3LCAKKyAgICA1ODA5MywgNTgwOTgsIDU4MTAzLCA1ODEwOCwgNTgxMTQsIDU4MTE4LCA1ODEyNCwgNTgxMjgsIDU4MTMyLCA1ODEzOCwgCisgICAgNTgxNDQsIDU4MTUwLCA1ODE1NiwgNTgxNjIsIDU4MTY4LCA1ODE3NCwgNTgxODAsIDU4MTg2LCA1ODE5MiwgNTgxOTgsIAorICAgIDU4MjA0LCA1ODIwOCwgNTgyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MjIwLCA1ODIyMywgCisgICAgNTgyMjcsIDU4MjMxLCA1ODIzNSwgNTgyMzksIDU4MjQyLCA1ODI0NSwgNTgyNDksIDU4MjUzLCA1ODI1NywgNTgyNjEsIAorICAgIDU4MjY0LCA1ODI2OSwgNTgyNzMsIDU4Mjc3LCA1ODI4MSwgNTgyODYsIDU4MjkwLCA1ODI5NCwgNTgyOTgsIDU4MzAyLCAKKyAgICA1ODMwOCwgNTgzMTQsIDU4MzE4LCA1ODMyMiwgNTgzMjYsIDU4MzMwLCA1ODMzNCwgNTgzMzgsIDU4MzQyLCA1ODM0NiwgCisgICAgNTgzNTAsIDU4MzU0LCA1ODM1OCwgNTgzNjQsIDU4MzY4LCA1ODM3MiwgNTgzNzYsIDU4MzgwLCA1ODM4NCwgNTgzODgsIAorICAgIDU4MzkyLCA1ODM5NiwgNTg0MDAsIDU4NDA0LCA1ODQwOCwgNTg0MTIsIDU4NDE2LCA1ODQyMCwgNTg0MjQsIDU4NDI4LCAKKyAgICA1ODQzNCwgNTg0NDAsIDU4NDQ1LCA1ODQ1MCwgNTg0NTQsIDU4NDU4LCA1ODQ2MiwgNTg0NjYsIDU4NDcwLCA1ODQ3NCwgCisgICAgNTg0NzgsIDU4NDgyLCA1ODQ4NiwgNTg0OTAsIDU4NDk0LCA1ODQ5OCwgNTg1MDIsIDU4NTA2LCA1ODUxMCwgNTg1MTQsIAorICAgIDU4NTE4LCA1ODUyMiwgNTg1MjYsIDU4NTMwLCA1ODUzNCwgNTg1MzgsIDU4NTQyLCA1ODU0NiwgNTg1NTIsIDU4NTU2LCAKKyAgICA1ODU2MCwgNTg1NjQsIDU4NTY4LCA1ODU3MiwgNTg1NzYsIDU4NTgwLCA1ODU4NCwgNTg1ODksIDU4NTk2LCA1ODYwMCwgCisgICAgNTg2MDQsIDU4NjA4LCA1ODYxMiwgNTg2MTYsIDU4NjIwLCA1ODYyNCwgNTg2MjgsIDU4NjMyLCA1ODYzNiwgNTg2NDAsIAorICAgIDU4NjQ0LCA1ODY1MSwgNTg2NTUsIDU4NjYxLCA1ODY2NSwgNTg2NjksIDU4NjczLCA1ODY3NywgNTg2ODEsIDU4Njg0LCAKKyAgICA1ODY4OCwgNTg2OTIsIDU4Njk2LCA1ODcwMCwgNTg3MDQsIDU4NzA4LCA1ODcxMiwgNTg3MTYsIDU4NzIwLCA1ODcyNCwgCisgICAgNTg3MjgsIDU4NzMyLCA1ODczNiwgNTg3NDAsIDU4NzQ0LCA1ODc0OCwgNTg3NTIsIDU4NzU2LCA1ODc2MCwgNTg3NjQsIAorICAgIDU4NzY4LCA1ODc3MiwgNTg3NzYsIDU4NzgwLCA1ODc4NCwgNTg3ODgsIDU4NzkyLCA1ODc5NiwgNTg4MDAsIDU4ODA0LCAKKyAgICA1ODgwOCwgNTg4MTIsIDU4ODE4LCA1ODgyMiwgNTg4MjYsIDU4ODMwLCA1ODgzNCwgNTg4MzgsIDU4ODQyLCA1ODg0NiwgCisgICAgNTg4NTAsIDU4ODU0LCA1ODg1OCwgNTg4NjIsIDU4ODY2LCA1ODg3MCwgNTg4NzQsIDU4ODc4LCA1ODg4MiwgNTg4ODYsIAorICAgIDU4ODkwLCA1ODg5NCwgNTg4OTgsIDU4OTAyLCA1ODkwNiwgNTg5MTAsIDU4OTE0LCA1ODkxOCwgNTg5MjIsIDU4OTI2LCAKKyAgICA1ODkzNCwgNTg5MzgsIDU4OTQyLCA1ODk0NiwgNTg5NTAsIDU4OTU0LCA1ODk2MCwgNTg5NjQsIDU4OTY4LCA1ODk3MiwgCisgICAgNTg5NzYsIDU4OTgwLCA1ODk4NCwgNTg5ODgsIDU4OTkyLCA1ODk5NiwgNTkwMDAsIDU5MDA0LCA1OTAwOCwgNTkwMTIsIAorICAgIDU5MDE4LCA1OTAyMiwgNTkwMjYsIDU5MDMwLCA1OTAzNCwgNTkwMzgsIDU5MDQyLCA1OTA0NiwgNTkwNTAsIDU5MDU0LCAKKyAgICA1OTA1OCwgNTkwNjIsIDU5MDY2LCA1OTA3MCwgNTkwNzQsIDU5MDc4LCA1OTA4MiwgNTkwODYsIDU5MDkwLCA1OTA5NCwgCisgICAgNTkwOTgsIDU5MTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1OTEwNiwgNTkxMTUsIDU5MTIzLCA1OTEzNSwgNTkxNDYsIDU5MTU0LCA1OTE2MywgNTkxNzIsIAorICAgIDU5MTgyLCA1OTE5NCwgNTkyMDYsIDU5MjE4LCAwLCAwLCAwLCAwLCA1OTIyNCwgNTkyMjcsIDU5MjMwLCA1OTIzNSwgCisgICAgNTkyMzgsIDU5MjQ1LCA1OTI0OSwgNTkyNTMsIDU5MjU3LCA1OTI2MSwgNTkyNjUsIDU5MjcwLCA1OTI3NSwgNTkyNzksIAorICAgIDU5MjgzLCA1OTI4OCwgNTkyOTMsIDU5Mjk4LCA1OTMwMywgNTkzMDYsIDU5MzA5LCA1OTMxNSwgNTkzMjEsIDU5MzI2LCAKKyAgICA1OTMzMSwgNTkzMzgsIDU5MzQ1LCA1OTM0OSwgNTkzNTMsIDU5MzU3LCA1OTM2NSwgNTkzNzEsIDU5Mzc4LCA1OTM4MywgCisgICAgNTkzODgsIDU5MzkzLCA1OTM5OCwgNTk0MDMsIDU5NDA4LCA1OTQxMywgNTk0MTgsIDU5NDIzLCA1OTQyOCwgNTk0MzMsIAorICAgIDU5NDM4LCA1OTQ0MywgNTk0NDgsIDU5NDU0LCA1OTQ1OSwgNTk0NjMsIDU5NDY5LCA1OTQ4MCwgNTk0OTAsIDU5NTA1LCAKKyAgICA1OTUxNSwgNTk1MTksIDU5NTI5LCA1OTUzNSwgNTk1NDEsIDU5NTQ3LCA1OTU1MiwgNTk1NTUsIDU5NTYwLCA1OTU2NCwgMCwgCisgICAgNTk1NzAsIDU5NTc0LCA1OTU3NywgNTk1ODEsIDU5NTg0LCA1OTU4OCwgNTk1OTEsIDU5NTk1LCA1OTU5OCwgNTk2MDIsIAorICAgIDU5NjA1LCA1OTYwOCwgNTk2MTIsIDU5NjE2LCA1OTYyMCwgNTk2MjQsIDU5NjI4LCA1OTYzMiwgNTk2MzYsIDU5NjQwLCAKKyAgICA1OTY0NCwgNTk2NDcsIDU5NjUxLCA1OTY1NSwgNTk2NTksIDU5NjYzLCA1OTY2NywgNTk2NzEsIDU5Njc1LCA1OTY3OSwgCisgICAgNTk2ODMsIDU5Njg3LCA1OTY5MSwgNTk2OTUsIDU5Njk5LCA1OTcwNCwgNTk3MDgsIDU5NzEyLCA1OTcxNiwgNTk3MjAsIAorICAgIDU5NzIzLCA1OTcyNywgNTk3MzAsIDU5NzM0LCA1OTczOCwgNTk3NDIsIDU5NzQ2LCA1OTc0OSwgNTk3NTMsIDU5NzU2LCAKKyAgICA1OTc2MCwgNTk3NjQsIDU5NzY4LCA1OTc3MiwgNTk3NzYsIDU5NzgwLCA1OTc4NCwgNTk3ODgsIDU5NzkyLCA1OTc5NiwgCisgICAgNTk4MDAsIDU5ODA0LCA1OTgwNywgNTk4MTEsIDU5ODE1LCA1OTgxOSwgNTk4MjMsIDU5ODI3LCA1OTgzMCwgNTk4MzUsIAorICAgIDU5ODM5LCA1OTg0NCwgNTk4NDgsIDU5ODUxLCA1OTg1NSwgNTk4NTksIDU5ODYzLCA1OTg2NywgNTk4NzIsIDU5ODc2LCAKKyAgICA1OTg4MCwgNTk4ODQsIDU5ODg4LCA1OTg5MiwgNTk4OTYsIDU5OTAwLCAwLCAwLCA1OTkwNSwgNTk5MTMsIDU5OTIxLCAKKyAgICA1OTkyOCwgNTk5MzUsIDU5OTM5LCA1OTk0NSwgNTk5NTAsIDU5OTU1LCA1OTk1OSwgNTk5NjIsIDU5OTY2LCA1OTk2OSwgCisgICAgNTk5NzMsIDU5OTc2LCA1OTk4MCwgNTk5ODMsIDU5OTg3LCA1OTk5MCwgNTk5OTMsIDU5OTk3LCA2MDAwMSwgNjAwMDUsIAorICAgIDYwMDA5LCA2MDAxMywgNjAwMTcsIDYwMDIxLCA2MDAyNSwgNjAwMjksIDYwMDMyLCA2MDAzNiwgNjAwNDAsIDYwMDQ0LCAKKyAgICA2MDA0OCwgNjAwNTIsIDYwMDU2LCA2MDA2MCwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgwLCA2MDA4NCwgCisgICAgNjAwODksIDYwMDkzLCA2MDA5NywgNjAxMDEsIDYwMTA1LCA2MDEwOCwgNjAxMTIsIDYwMTE1LCA2MDExOSwgNjAxMjMsIAorICAgIDYwMTI3LCA2MDEzMSwgNjAxMzQsIDYwMTM4LCA2MDE0MSwgNjAxNDUsIDYwMTQ5LCA2MDE1MywgNjAxNTcsIDYwMTYxLCAKKyAgICA2MDE2NSwgNjAxNjksIDYwMTczLCA2MDE3NywgNjAxODEsIDYwMTg1LCA2MDE4OSwgNjAxOTIsIDYwMTk2LCA2MDIwMCwgCisgICAgNjAyMDQsIDYwMjA4LCA2MDIxMiwgNjAyMTUsIDYwMjIwLCA2MDIyNCwgNjAyMjksIDYwMjMzLCA2MDIzNiwgNjAyNDAsIAorICAgIDYwMjQ0LCA2MDI0OCwgNjAyNTIsIDYwMjU3LCA2MDI2MSwgNjAyNjUsIDYwMjY5LCA2MDI3MywgNjAyNzcsIDYwMjgxLCAKKyAgICA2MDI4NSwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA2LCA2MDMxMSwgNjAzMTgsIDYwMzIyLCA2MDMyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjAzMzMsIDYwMzM4LCA2MDM0MywgNjAzNDcsIDYwMzUyLCA2MDM1NywgNjAzNjIsIDYwMzY3LCAKKyAgICA2MDM3MSwgNjAzNzYsIDYwMzgxLCA2MDM4NiwgNjAzOTEsIDYwMzk2LCA2MDQwMSwgNjA0MDYsIDYwNDExLCA2MDQxNiwgCisgICAgNjA0MjAsIDYwNDI1LCA2MDQzMCwgNjA0MzUsIDYwNDM5LCA2MDQ0MywgNjA0NDcsIDYwNDUyLCA2MDQ1NywgNjA0NjIsIAorICAgIDYwNDY3LCA2MDQ3MiwgNjA0NzcsIDYwNDgyLCA2MDQ4NywgNjA0OTIsIDYwNDk3LCA2MDUwMSwgNjA1MDUsIDYwNTEwLCAKKyAgICA2MDUxNSwgNjA1MjAsIDYwNTI1LCAwLCAwLCAwLCA2MDUzMCwgNjA1MzQsIDYwNTM4LCA2MDU0MiwgNjA1NDYsIDYwNTUwLCAKKyAgICA2MDU1NCwgNjA1NTgsIDYwNTYyLCA2MDU2NiwgNjA1NzAsIDYwNTc0LCA2MDU3OCwgNjA1ODIsIDYwNTg2LCA2MDU5MCwgCisgICAgNjA1OTQsIDYwNTk4LCA2MDYwMiwgNjA2MDYsIDYwNjEwLCA2MDYxNCwgNjA2MTgsIDYwNjIyLCA2MDYyNiwgNjA2MzAsIAorICAgIDYwNjM0LCA2MDYzOCwgNjA2NDIsIDYwNjQ2LCA2MDY1MCwgNjA2NTMsIDYwNjU3LCA2MDY2MCwgNjA2NjQsIDYwNjY4LCAKKyAgICA2MDY3MSwgNjA2NzUsIDYwNjc5LCA2MDY4MiwgNjA2ODYsIDYwNjkwLCA2MDY5NCwgNjA2OTgsIDYwNzAxLCA2MDcwNSwgCisgICAgNjA3MDksIDYwNzEzLCA2MDcxNywgNjA3MjEsIDYwNzI1LCA2MDcyOCwgNjA3MzEsIDYwNzM1LCA2MDczOSwgNjA3NDMsIAorICAgIDYwNzQ3LCA2MDc1MSwgNjA3NTUsIDYwNzU5LCA2MDc2MywgNjA3NjcsIDYwNzcxLCA2MDc3NSwgNjA3NzksIDYwNzgzLCAKKyAgICA2MDc4NywgNjA3OTEsIDYwNzk1LCA2MDc5OSwgNjA4MDMsIDYwODA3LCA2MDgxMSwgNjA4MTUsIDYwODE5LCA2MDgyMywgCisgICAgNjA4MjcsIDYwODMxLCA2MDgzNSwgNjA4MzksIDYwODQzLCA2MDg0NywgNjA4NTEsIDYwODU1LCA2MDg1OSwgNjA4NjMsIAorICAgIDYwODY3LCA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4MywgNjA4ODcsIDYwODkxLCA2MDg5NSwgMCwgNjA4OTksIDYwOTA1LCAKKyAgICA2MDkxMSwgNjA5MTYsIDYwOTIxLCA2MDkyNiwgNjA5MzIsIDYwOTM4LCA2MDk0NCwgNjA5NTAsIDYwOTU2LCA2MDk2MiwgCisgICAgNjA5NjgsIDYwOTc0LCA2MDk4MCwgNjA5ODYsIDYwOTkyLCA2MDk5NywgNjEwMDIsIDYxMDA3LCA2MTAxMiwgNjEwMTcsIAorICAgIDYxMDIyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCA2MTA1NywgNjEwNjIsIDYxMDY3LCAKKyAgICA2MTA3MiwgNjEwNzcsIDYxMDgyLCA2MTA4NywgNjEwOTIsIDYxMDk4LCA2MTEwNCwgNjExMTAsIDYxMTE2LCA2MTEyMSwgCisgICAgNjExMjYsIDAsIDAsIDAsIDAsIDAsIDYxMTMxLCA2MTEzNiwgNjExNDEsIDYxMTQ2LCA2MTE1MSwgNjExNTYsIDYxMTYxLCAKKyAgICA2MTE2NiwgNjExNzEsIDYxMTc2LCA2MTE4MSwgNjExODYsIDYxMTkxLCA2MTE5NiwgNjEyMDEsIDYxMjA2LCA2MTIxMSwgCisgICAgNjEyMTYsIDYxMjIxLCA2MTIyNiwgNjEyMzEsIDYxMjM2LCA2MTI0MSwgNjEyNDYsIDYxMjUxLCA2MTI1NiwgNjEyNjEsIAorICAgIDYxMjY2LCA2MTI3MSwgNjEyNzYsIDYxMjgxLCA2MTI4NiwgNjEyOTEsIDYxMjk2LCA2MTMwMSwgNjEzMDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMzExLCA2MTMxNiwgNjEzMjEsIDYxMzI2LCA2MTMzMCwgNjEzMzUsIAorICAgIDYxMzM5LCA2MTM0NCwgNjEzNDksIDYxMzU0LCA2MTM1OSwgNjEzNjQsIDYxMzY4LCA2MTM3MywgNjEzNzgsIDYxMzgzLCAKKyAgICA2MTM4OCwgNjEzOTIsIDYxMzk2LCA2MTQwMCwgNjE0MDQsIDYxNDA4LCA2MTQxMiwgNjE0MTYsIDYxNDIwLCA2MTQyNCwgCisgICAgNjE0MjgsIDYxNDMyLCA2MTQzNiwgNjE0NDAsIDYxNDQ0LCA2MTQ0OSwgNjE0NTQsIDYxNDU5LCA2MTQ2NCwgNjE0NjksIAorICAgIDYxNDc0LCA2MTQ3OSwgNjE0ODQsIDYxNDg5LCA2MTQ5NCwgNjE0OTksIDYxNTA0LCA2MTUwOSwgNjE1MTQsIDYxNTE5LCAKKyAgICA2MTUyNSwgMCwgNjE1MzIsIDYxNTM1LCA2MTUzOCwgNjE1NDEsIDYxNTQ0LCA2MTU0NywgNjE1NTAsIDYxNTUzLCA2MTU1NiwgCisgICAgNjE1NTksIDYxNTYzLCA2MTU2NywgNjE1NzEsIDYxNTc1LCA2MTU3OSwgNjE1ODMsIDYxNTg3LCA2MTU5MSwgNjE1OTUsIAorICAgIDYxNTk5LCA2MTYwMywgNjE2MDcsIDYxNjExLCA2MTYxNSwgNjE2MTksIDYxNjIzLCA2MTYyNywgNjE2MzEsIDYxNjM1LCAKKyAgICA2MTYzOSwgNjE2NDMsIDYxNjQ3LCA2MTY1MSwgNjE2NTUsIDYxNjU5LCA2MTY2MywgNjE2NjcsIDYxNjcxLCA2MTY3NSwgCisgICAgNjE2NzksIDYxNjgzLCA2MTY5MiwgNjE3MDEsIDYxNzEwLCA2MTcxOSwgNjE3MjgsIDYxNzM3LCA2MTc0NiwgNjE3NTUsIAorICAgIDYxNzU4LCA2MTc2MywgNjE3NjgsIDYxNzczLCA2MTc3OCwgNjE3ODMsIDYxNzg4LCA2MTc5MywgNjE3OTgsIDYxODAzLCAKKyAgICA2MTgwNywgNjE4MTIsIDYxODE3LCA2MTgyMiwgNjE4MjcsIDYxODMyLCA2MTgzNiwgNjE4NDAsIDYxODQ0LCA2MTg0OCwgCisgICAgNjE4NTIsIDYxODU2LCA2MTg2MCwgNjE4NjQsIDYxODY4LCA2MTg3MiwgNjE4NzYsIDYxODgwLCA2MTg4NCwgNjE4ODgsIAorICAgIDYxODkzLCA2MTg5OCwgNjE5MDMsIDYxOTA4LCA2MTkxMywgNjE5MTgsIDYxOTIzLCA2MTkyOCwgNjE5MzMsIDYxOTM4LCAKKyAgICA2MTk0MywgNjE5NDgsIDYxOTUzLCA2MTk1OCwgNjE5NjQsIDYxOTcwLCA2MTk3NSwgNjE5ODAsIDYxOTgzLCA2MTk4NiwgCisgICAgNjE5ODksIDYxOTkyLCA2MTk5NSwgNjE5OTgsIDYyMDAxLCA2MjAwNCwgNjIwMDcsIDYyMDExLCA2MjAxNSwgNjIwMTksIAorICAgIDYyMDIzLCA2MjAyNywgNjIwMzEsIDYyMDM1LCA2MjAzOSwgNjIwNDMsIDYyMDQ3LCA2MjA1MSwgNjIwNTUsIDYyMDU5LCAKKyAgICA2MjA2MywgNjIwNjcsIDYyMDcxLCA2MjA3NSwgNjIwNzksIDYyMDgzLCA2MjA4NywgNjIwOTEsIDYyMDk1LCA2MjA5OSwgCisgICAgNjIxMDMsIDYyMTA3LCA2MjExMSwgNjIxMTUsIDYyMTE5LCA2MjEyMywgNjIxMjcsIDYyMTMxLCA2MjEzNSwgNjIxMzksIAorICAgIDYyMTQzLCA2MjE0NywgNjIxNTEsIDYyMTU1LCA2MjE1OSwgNjIxNjMsIDYyMTY3LCA2MjE3MiwgNjIxNzcsIDYyMTgyLCAKKyAgICA2MjE4NywgNjIxOTEsIDYyMTk2LCA2MjIwMSwgNjIyMDYsIDYyMjExLCA2MjIxNiwgNjIyMjEsIDYyMjI2LCA2MjIzMSwgCisgICAgNjIyMzYsIDYyMjQwLCA2MjI0NywgNjIyNTQsIDYyMjYxLCA2MjI2OCwgNjIyNzUsIDYyMjgyLCA2MjI4OSwgNjIyOTYsIAorICAgIDYyMzAzLCA2MjMxMCwgNjIzMTcsIDYyMzI0LCA2MjMyNywgNjIzMzAsIDYyMzMzLCA2MjMzOCwgNjIzNDEsIDYyMzQ0LCAKKyAgICA2MjM0NywgNjIzNTAsIDYyMzUzLCA2MjM1NiwgNjIzNjAsIDYyMzY0LCA2MjM2OCwgNjIzNzIsIDYyMzc1LCA2MjM3OSwgCisgICAgNjIzODMsIDYyMzg3LCA2MjM5MSwgNjIzOTUsIDYyMzk5LCA2MjQwMywgNjI0MDcsIDYyNDEwLCA2MjQxMywgNjI0MTcsIAorICAgIDYyNDIxLCA2MjQyNSwgNjI0MjksIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTEsIDYyNDU1LCAKKyAgICA2MjQ1OSwgNjI0NjMsIDYyNDY3LCA2MjQ3MCwgNjI0NzQsIDYyNDc4LCA2MjQ4MSwgNjI0ODUsIDYyNDg5LCA2MjQ5MywgCisgICAgNjI0OTcsIDYyNTAxLCA2MjUwNSwgNjI1MDksIDAsIDYyNTEzLCA2MjUxNiwgNjI1MTksIDYyNTIyLCA2MjUyNSwgNjI1MjgsIAorICAgIDYyNTMxLCA2MjUzNCwgNjI1MzcsIDYyNTQwLCA2MjU0MywgNjI1NDYsIDYyNTQ5LCA2MjU1MiwgNjI1NTUsIDYyNTU4LCAKKyAgICA2MjU2MSwgNjI1NjQsIDYyNTY3LCA2MjU3MCwgNjI1NzMsIDYyNTc2LCA2MjU3OSwgNjI1ODIsIDYyNTg1LCA2MjU4OCwgCisgICAgNjI1OTEsIDYyNTk0LCA2MjU5NywgNjI2MDAsIDYyNjAzLCA2MjYwNiwgNjI2MDksIDYyNjEyLCA2MjYxNSwgNjI2MTgsIAorICAgIDYyNjIxLCA2MjYyNCwgNjI2MjcsIDYyNjMwLCA2MjYzMywgNjI2MzYsIDYyNjM5LCA2MjY0MiwgNjI2NDUsIDYyNjQ4LCAKKyAgICA2MjY1MSwgNjI2NTQsIDYyNjU3LCA2MjY2MCwgNjI2NjMsIDYyNjY2LCA2MjY2OSwgNjI2NzIsIDYyNjc1LCA2MjY3OCwgCisgICAgNjI2ODEsIDYyNjg0LCA2MjY4NywgNjI2OTAsIDYyNjkzLCA2MjY5NiwgNjI2OTksIDYyNzAyLCA2MjcwNSwgNjI3MDgsIAorICAgIDYyNzExLCA2MjcxNCwgNjI3MTcsIDYyNzIwLCA2MjcyMywgNjI3MjYsIDYyNzI5LCA2MjczMiwgNjI3MzUsIDYyNzM4LCAKKyAgICA2Mjc0MSwgNjI3NDQsIDYyNzQ3LCA2Mjc1MCwgNjI3NTMsIDYyNzU2LCA2Mjc1OSwgNjI3NjIsIDYyNzY1LCA2Mjc2OCwgCisgICAgNjI3NzEsIDYyNzc0LCA2Mjc3NywgNjI3ODYsIDYyNzk0LCA2MjgwMiwgNjI4MTAsIDYyODE4LCA2MjgyNiwgNjI4MzQsIAorICAgIDYyODQyLCA2Mjg1MCwgNjI4NTgsIDYyODY3LCA2Mjg3NiwgNjI4ODUsIDYyODk0LCA2MjkwMywgNjI5MTIsIDYyOTIxLCAKKyAgICA2MjkzMCwgNjI5MzksIDYyOTQ4LCA2Mjk1NywgNjI5NjYsIDYyOTc1LCA2Mjk4NCwgNjI5OTMsIDYyOTk2LCA2Mjk5OSwgCisgICAgNjMwMDIsIDYzMDA0LCA2MzAwNywgNjMwMTAsIDYzMDEzLCA2MzAxOCwgNjMwMjMsIDYzMDI2LCA2MzAzMywgNjMwNDAsIAorICAgIDYzMDQ3LCA2MzA1NCwgNjMwNTcsIDYzMDYyLCA2MzA2NCwgNjMwNjgsIDYzMDcwLCA2MzA3MiwgNjMwNzUsIDYzMDc4LCAKKyAgICA2MzA4MSwgNjMwODQsIDYzMDg3LCA2MzA5MCwgNjMwOTMsIDYzMDk4LCA2MzEwMywgNjMxMDYsIDYzMTA5LCA2MzExMiwgCisgICAgNjMxMTUsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIDYzMTI4LCA2MzEzMSwgNjMxMzQsIDYzMTM3LCA2MzE0MCwgNjMxNDMsIAorICAgIDYzMTQ3LCA2MzE1MCwgNjMxNTMsIDYzMTU2LCA2MzE2MSwgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCAKKyAgICA2MzE5MSwgNjMxOTYsIDYzMjAyLCA2MzIxMCwgNjMyMTIsIDYzMjE1LCA2MzIxOCwgNjMyMjEsIDYzMjI0LCA2MzIzMCwgCisgICAgNjMyMzgsIDYzMjQxLCA2MzI0NCwgNjMyNDksIDYzMjUyLCA2MzI1NSwgNjMyNTgsIDYzMjYzLCA2MzI2NiwgNjMyNjksIAorICAgIDYzMjc0LCA2MzI3NywgNjMyODAsIDYzMjg1LCA2MzI4OCwgNjMyOTEsIDYzMjk2LCA2MzMwMSwgNjMzMDYsIDYzMzA5LCAKKyAgICA2MzMxMiwgNjMzMTUsIDYzMzE4LCA2MzMyNCwgNjMzMjcsIDYzMzMwLCA2MzMzMywgNjMzMzUsIDYzMzM4LCA2MzM0MSwgCisgICAgNjMzNDQsIDYzMzQ5LCA2MzM1MiwgNjMzNTUsIDYzMzU4LCA2MzM2MSwgNjMzNjQsIDYzMzY5LCA2MzM3MiwgNjMzNzUsIAorICAgIDYzMzc4LCA2MzM4MSwgNjMzODQsIDYzMzg3LCA2MzM5MCwgNjMzOTMsIDYzMzk2LCA2MzQwMSwgNjM0MDUsIDYzNDEzLCAKKyAgICA2MzQyMSwgNjM0MjksIDYzNDM3LCA2MzQ0NSwgNjM0NTMsIDYzNDYxLCA2MzQ2OSwgNjM0NzcsIDYzNDg2LCA2MzQ5NSwgCisgICAgNjM1MDQsIDYzNTEzLCA2MzUyMiwgNjM1MzEsIDYzNTQwLCA2MzU0OSwgNjM1NTgsIDYzNTY3LCA2MzU3NiwgNjM1ODUsIAorICAgIDYzNTk0LCA2MzYwMywgNjM2MTIsIDYzNjIxLCA2MzYzMCwgNjM2MzksIDYzNjQ4LCA2MzY1NywgNjM2NjYsIDYzNjc1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzY3OCwgNjM2ODcsIDYzNjk2LCA2MzcwNywgCisgICAgNjM3MTQsIDYzNzE5LCA2MzcyNCwgNjM3MzEsIDYzNzM4LCA2Mzc0NCwgNjM3NDksIDYzNzU0LCA2Mzc1OSwgNjM3NjQsIAorICAgIDYzNzcxLCA2Mzc3NiwgNjM3ODEsIDYzNzg2LCA2Mzc5NywgNjM4MDIsIDYzODA3LCA2MzgxNCwgNjM4MTksIDYzODI2LCAKKyAgICA2MzgzMSwgNjM4MzYsIDYzODQzLCA2Mzg1MCwgNjM4NTcsIDYzODY2LCA2Mzg3NSwgNjM4ODAsIDYzODg1LCA2Mzg5MCwgCisgICAgNjM4OTcsIDYzOTAyLCA2MzkxMiwgNjM5MTksIDYzOTI0LCA2MzkyOSwgNjM5MzQsIDYzOTM5LCA2Mzk0NCwgNjM5NDksIAorICAgIDYzOTU4LCA2Mzk2NSwgNjM5NzIsIDYzOTc3LCA2Mzk4NCwgNjM5ODksIDYzOTk2LCA2NDAwNSwgNjQwMTYsIDY0MDIxLCAKKyAgICA2NDAzMCwgNjQwMzUsIDY0MDQyLCA2NDA1MSwgNjQwNjAsIDY0MDY1LCA2NDA3MCwgNjQwNzcsIDY0MDgzLCA2NDA5MCwgCisgICAgNjQwOTcsIDY0MTAxLCA2NDEwNSwgNjQxMDgsIDY0MTEyLCA2NDExNiwgNjQxMjAsIDY0MTI0LCA2NDEyOCwgNjQxMzIsIAorICAgIDY0MTM2LCA2NDEzOSwgNjQxNDMsIDY0MTQ3LCA2NDE1MSwgNjQxNTUsIDY0MTU5LCA2NDE2MywgNjQxNjYsIDY0MTcwLCAKKyAgICA2NDE3NCwgNjQxNzcsIDY0MTgxLCA2NDE4NSwgNjQxODksIDY0MTkzLCA2NDE5NywgNjQyMDEsIDY0MjA1LCA2NDIwOSwgCisgICAgNjQyMTMsIDY0MjE3LCA2NDIyMSwgNjQyMjUsIDY0MjI5LCA2NDIzMywgNjQyMzcsIDY0MjQxLCA2NDI0NSwgNjQyNDksIAorICAgIDY0MjUzLCA2NDI1NywgNjQyNjEsIDY0MjY1LCA2NDI2OSwgNjQyNzMsIDY0Mjc3LCA2NDI4MSwgNjQyODUsIDY0Mjg5LCAKKyAgICA2NDI5MywgNjQyOTcsIDY0MzAxLCA2NDMwNSwgNjQzMDksIDY0MzEzLCA2NDMxNywgNjQzMjEsIDY0MzI1LCA2NDMyOSwgCisgICAgNjQzMzMsIDY0MzM3LCA2NDM0MSwgNjQzNDUsIDY0MzQ5LCA2NDM1MywgNjQzNTYsIDY0MzYwLCA2NDM2NCwgNjQzNjgsIAorICAgIDY0MzcyLCA2NDM3NiwgNjQzODAsIDY0Mzg0LCA2NDM4OCwgNjQzOTIsIDY0Mzk2LCA2NDQwMCwgNjQ0MDQsIDY0NDA4LCAKKyAgICA2NDQxMiwgNjQ0MTYsIDY0NDIwLCA2NDQyNCwgNjQ0MjgsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgCisgICAgNjQ0NTIsIDY0NDU2LCA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIAorICAgIDY0NDkyLCA2NDQ5NiwgNjQ1MDAsIDY0NTA0LCA2NDUwOCwgNjQ1MTIsIDY0NTE2LCA2NDUyMCwgNjQ1MjQsIDY0NTI4LCAKKyAgICA2NDUzMiwgNjQ1MzYsIDY0NTQwLCA2NDU0NCwgNjQ1NDgsIDY0NTUyLCA2NDU1NiwgNjQ1NjAsIDY0NTY0LCA2NDU2OCwgCisgICAgNjQ1NzIsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIDY0NjAwLCA2NDYwNCwgNjQ2MDgsIAorICAgIDY0NjEyLCA2NDYxNiwgNjQ2MjAsIDY0NjI0LCA2NDYyOCwgNjQ2MzIsIDY0NjM2LCA2NDY0MCwgNjQ2NDQsIDY0NjQ4LCAKKyAgICA2NDY1MiwgNjQ2NTYsIDY0NjYwLCA2NDY2NCwgNjQ2NjgsIDY0NjcyLCA2NDY3NiwgNjQ2ODAsIDY0Njg0LCA2NDY4OCwgCisgICAgNjQ2OTIsIDY0Njk2LCA2NDcwMCwgNjQ3MDQsIDY0NzA4LCA2NDcxMiwgNjQ3MTYsIDY0NzIwLCA2NDcyNCwgNjQ3MjgsIAorICAgIDY0NzMyLCA2NDczNiwgNjQ3NDAsIDY0NzQ0LCA2NDc0OCwgNjQ3NTIsIDY0NzU2LCA2NDc2MCwgNjQ3NjQsIDY0NzY4LCAKKyAgICA2NDc3MiwgNjQ3NzYsIDY0NzgwLCA2NDc4NCwgNjQ3ODgsIDY0NzkyLCA2NDc5NiwgNjQ4MDAsIDY0ODA0LCA2NDgwOCwgCisgICAgNjQ4MTIsIDY0ODE2LCA2NDgyMCwgNjQ4MjQsIDY0ODI3LCA2NDgzMSwgNjQ4MzUsIDY0ODM5LCA2NDg0MywgNjQ4NDcsIAorICAgIDY0ODUxLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc1LCA2NDg3OSwgNjQ4ODMsIDY0ODg3LCAKKyAgICA2NDg5MSwgNjQ4OTUsIDY0ODk5LCA2NDkwMywgNjQ5MDcsIDY0OTExLCA2NDkxNSwgNjQ5MTksIDY0OTIzLCA2NDkyNywgCisgICAgNjQ5MzEsIDY0OTM1LCA2NDkzOSwgNjQ5NDMsIDY0OTQ3LCA2NDk1MSwgNjQ5NTUsIDY0OTU5LCA2NDk2MywgNjQ5NjcsIAorICAgIDY0OTcxLCA2NDk3NSwgNjQ5NzksIDY0OTgzLCA2NDk4NywgNjQ5OTEsIDY0OTk1LCA2NDk5OSwgNjUwMDMsIDY1MDA3LCAKKyAgICA2NTAxMSwgNjUwMTUsIDY1MDE5LCA2NTAyMywgNjUwMjcsIDY1MDMxLCA2NTAzNSwgNjUwMzksIDY1MDQzLCA2NTA0NywgCisgICAgNjUwNTEsIDY1MDU1LCA2NTA1OSwgNjUwNjMsIDY1MDY3LCA2NTA3MSwgNjUwNzUsIDY1MDc5LCA2NTA4MywgNjUwODcsIAorICAgIDY1MDkxLCA2NTA5NSwgNjUwOTksIDY1MTAzLCA2NTEwNywgNjUxMTEsIDY1MTE1LCA2NTExOSwgNjUxMjMsIDY1MTI3LCAKKyAgICA2NTEzMSwgNjUxMzUsIDY1MTM5LCA2NTE0MywgNjUxNDcsIDY1MTUxLCA2NTE1NSwgNjUxNTksIDY1MTYzLCA2NTE2NywgCisgICAgNjUxNzEsIDY1MTc1LCA2NTE3OSwgNjUxODMsIDY1MTg3LCA2NTE5MSwgNjUxOTUsIDY1MTk5LCA2NTIwMywgNjUyMDcsIAorICAgIDY1MjExLCA2NTIxNSwgNjUyMTksIDY1MjIzLCA2NTIyNywgNjUyMzEsIDY1MjM1LCA2NTIzOSwgNjUyNDMsIDY1MjQ3LCAKKyAgICA2NTI1MSwgNjUyNTUsIDY1MjU5LCA2NTI2MywgNjUyNjcsIDY1MjcxLCA2NTI3NSwgNjUyNzksIDY1MjgzLCA2NTI4NywgCisgICAgNjUyOTAsIDY1Mjk0LCA2NTI5OCwgNjUzMDIsIDY1MzA2LCA2NTMxMCwgNjUzMTQsIDY1MzE4LCA2NTMyMiwgNjUzMjYsIAorICAgIDY1MzMwLCA2NTMzNCwgNjUzMzgsIDY1MzQyLCA2NTM0NiwgNjUzNTAsIDY1MzU0LCA2NTM1OCwgNjUzNjIsIDY1MzY2LCAKKyAgICA2NTM3MCwgNjUzNzQsIDY1Mzc4LCA2NTM4MiwgNjUzODYsIDY1MzkwLCA2NTM5NCwgNjUzOTgsIDY1NDAyLCA2NTQwNiwgCisgICAgNjU0MTAsIDY1NDE0LCA2NTQxOCwgNjU0MjIsIDY1NDI2LCA2NTQzMCwgNjU0MzQsIDY1NDM4LCA2NTQ0MiwgNjU0NDYsIAorICAgIDY1NDUwLCA2NTQ1NCwgNjU0NTgsIDY1NDYyLCA2NTQ2NiwgNjU0NzAsIDY1NDc0LCA2NTQ3OCwgNjU0ODIsIDY1NDg2LCAKKyAgICA2NTQ5MCwgNjU0OTQsIDY1NDk4LCA2NTUwMiwgNjU1MDYsIDY1NTEwLCA2NTUxNCwgNjU1MTgsIDY1NTIyLCA2NTUyNiwgCisgICAgNjU1MzAsIDY1NTM0LCA2NTUzOCwgNjU1NDIsIDY1NTQ2LCA2NTU1MCwgNjU1NTQsIDY1NTU4LCA2NTU2MiwgNjU1NjYsIAorICAgIDY1NTcwLCA2NTU3NCwgNjU1NzgsIDY1NTgyLCA2NTU4NiwgNjU1OTAsIDY1NTk0LCA2NTU5OCwgNjU2MDIsIDY1NjA2LCAKKyAgICA2NTYxMCwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgNjU2MjYsIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgCisgICAgNjU2NDksIDY1NjUzLCA2NTY1NywgNjU2NjEsIDY1NjY1LCA2NTY2OSwgNjU2NzMsIDY1Njc3LCA2NTY4MSwgNjU2ODUsIAorICAgIDY1Njg5LCA2NTY5MywgNjU2OTcsIDY1NzAxLCA2NTcwNSwgNjU3MDksIDY1NzEzLCA2NTcxNywgNjU3MjEsIDY1NzI1LCAKKyAgICA2NTcyOSwgNjU3MzMsIDY1NzM3LCA2NTc0MSwgNjU3NDUsIDY1NzQ5LCA2NTc1MywgNjU3NTcsIDY1NzYxLCA2NTc2NSwgCisgICAgNjU3NjksIDY1NzczLCA2NTc3NywgNjU3ODEsIDY1Nzg1LCA2NTc4OSwgNjU3OTMsIDY1Nzk3LCA2NTgwMSwgNjU4MDUsIAorICAgIDY1ODA5LCA2NTgxMywgNjU4MTcsIDY1ODIxLCA2NTgyNSwgNjU4MjksIDY1ODMzLCA2NTgzNywgNjU4NDEsIDY1ODQ1LCAKKyAgICA2NTg0OSwgNjU4NTMsIDY1ODU3LCA2NTg2MSwgNjU4NjUsIDY1ODY5LCA2NTg3MywgNjU4NzcsIDY1ODgxLCA2NTg4NSwgCisgICAgNjU4ODksIDY1ODkzLCA2NTg5NywgNjU5MDEsIDY1OTA1LCA2NTkwOSwgNjU5MTMsIDY1OTE3LCA2NTkyMSwgNjU5MjUsIAorICAgIDY1OTI5LCA2NTkzMywgNjU5MzcsIDY1OTQxLCA2NTk0NSwgNjU5NDksIDY1OTUzLCA2NTk1NywgNjU5NjEsIDY1OTY1LCAKKyAgICA2NTk2OSwgNjU5NzMsIDY1OTc3LCA2NTk4MSwgNjU5ODUsIDY1OTg5LCA2NTk5MywgNjU5OTcsIDY2MDAxLCA2NjAwNSwgCisgICAgNjYwMDksIDY2MDEzLCA2NjAxNywgNjYwMjEsIDY2MDI1LCA2NjAyOSwgNjYwMzMsIDY2MDM3LCA2NjA0MSwgNjYwNDUsIAorICAgIDY2MDQ5LCA2NjA1MywgNjYwNTcsIDY2MDYxLCA2NjA2NSwgNjYwNjksIDY2MDczLCA2NjA3NywgNjYwODEsIDY2MDg1LCAKKyAgICA2NjA4OSwgNjYwOTMsIDY2MDk3LCA2NjEwMSwgNjYxMDUsIDY2MTA5LCA2NjExMywgNjYxMTcsIDY2MTIxLCA2NjEyNSwgCisgICAgNjYxMjksIDY2MTMzLCA2NjEzNywgNjYxNDEsIDY2MTQ0LCA2NjE0OCwgNjYxNTIsIDY2MTU2LCA2NjE2MCwgNjYxNjQsIAorICAgIDY2MTY4LCA2NjE3MiwgNjYxNzYsIDY2MTgwLCA2NjE4NCwgNjYxODgsIDY2MTkyLCA2NjE5NiwgNjYyMDAsIDY2MjA0LCAKKyAgICA2NjIwOCwgNjYyMTIsIDY2MjE2LCA2NjIyMCwgNjYyMjQsIDY2MjI4LCA2NjIzMiwgNjYyMzYsIDY2MjQwLCA2NjI0NCwgCisgICAgNjYyNDgsIDY2MjUyLCA2NjI1NiwgNjYyNjAsIDY2MjY0LCA2NjI2OCwgNjYyNzIsIDY2Mjc2LCA2NjI4MCwgNjYyODQsIAorICAgIDY2Mjg4LCA2NjI5MiwgNjYyOTYsIDY2MzAwLCA2NjMwNCwgNjYzMDgsIDY2MzEyLCA2NjMxNiwgNjYzMjAsIDY2MzI0LCAKKyAgICA2NjMyOCwgNjYzMzIsIDY2MzM2LCA2NjM0MCwgNjYzNDQsIDY2MzQ4LCA2NjM1MiwgNjYzNTYsIDY2MzYwLCA2NjM2NCwgCisgICAgNjYzNjgsIDY2MzcyLCA2NjM3NiwgNjYzODAsIDY2Mzg0LCA2NjM4OCwgNjYzOTIsIDY2Mzk2LCA2NjQwMCwgNjY0MDQsIAorICAgIDY2NDA4LCA2NjQxMiwgNjY0MTYsIDY2NDIwLCA2NjQyNCwgNjY0MjgsIDY2NDMyLCA2NjQzNiwgNjY0NDAsIDY2NDQ0LCAKKyAgICA2NjQ0OCwgNjY0NTIsIDY2NDU2LCA2NjQ2MCwgNjY0NjQsIDY2NDY4LCA2NjQ3MiwgNjY0NzYsIDY2NDgwLCA2NjQ4NCwgCisgICAgNjY0ODgsIDY2NDkyLCA2NjQ5NiwgNjY1MDAsIDY2NTA0LCA2NjUwOCwgNjY1MTIsIDY2NTE2LCA2NjUyMCwgNjY1MjQsIAorICAgIDY2NTI4LCA2NjUzMiwgNjY1MzYsIDY2NTQwLCA2NjU0NCwgNjY1NDgsIDY2NTUyLCA2NjU1NiwgNjY1NjAsIDY2NTY0LCAKKyAgICA2NjU2OCwgNjY1NzIsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg4LCA2NjU5MiwgNjY1OTYsIDY2NTk5LCA2NjYwMywgCisgICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAorICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKKyAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCisgICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAorICAgIDY2NzY3LCA2Njc3MSwgNjY3NzUsIDY2Nzc5LCA2Njc4MywgNjY3ODcsIDY2NzkxLCA2Njc5NSwgNjY3OTksIDY2ODAzLCAKKyAgICA2NjgwNywgNjY4MTEsIDY2ODE1LCA2NjgxOSwgNjY4MjMsIDY2ODI3LCA2NjgzMSwgNjY4MzUsIDY2ODM5LCA2Njg0MywgCisgICAgNjY4NDcsIDY2ODUxLCA2Njg1NSwgNjY4NTksIDY2ODYzLCA2Njg2NywgNjY4NzEsIDY2ODc1LCA2Njg3OSwgNjY4ODMsIAorICAgIDY2ODg3LCA2Njg5MSwgNjY4OTUsIDY2ODk5LCA2NjkwMywgNjY5MDcsIDY2OTExLCA2NjkxNSwgNjY5MTksIDY2OTIzLCAKKyAgICA2NjkyNywgNjY5MzEsIDY2OTM1LCA2NjkzOSwgNjY5NDMsIDY2OTQ3LCA2Njk1MSwgNjY5NTUsIDY2OTU5LCA2Njk2MywgCisgICAgNjY5NjcsIDY2OTcxLCA2Njk3NSwgNjY5NzksIDY2OTgzLCA2Njk4NywgNjY5OTEsIDY2OTk1LCA2Njk5OSwgNjcwMDMsIAorICAgIDY3MDA3LCA2NzAxMSwgNjcwMTUsIDY3MDE5LCA2NzAyMywgNjcwMjcsIDY3MDMxLCA2NzAzNSwgNjcwMzksIDY3MDQzLCAKKyAgICA2NzA0NywgNjcwNTEsIDY3MDU1LCA2NzA1OSwgNjcwNjMsIDY3MDY3LCA2NzA3MSwgNjcwNzUsIDY3MDc5LCA2NzA4MywgCisgICAgNjcwODcsIDY3MDkxLCA2NzA5NSwgNjcwOTksIDY3MTAzLCA2NzEwNywgNjcxMTEsIDY3MTE1LCA2NzExOSwgNjcxMjMsIAorICAgIDY3MTI3LCA2NzEzMSwgNjcxMzUsIDY3MTM5LCA2NzE0MywgNjcxNDcsIDY3MTUxLCA2NzE1NSwgNjcxNTksIDY3MTYzLCAKKyAgICA2NzE2NywgNjcxNzEsIDY3MTc1LCA2NzE3OSwgNjcxODMsIDY3MTg3LCA2NzE5MSwgNjcxOTUsIDY3MTk5LCA2NzIwMiwgCisgICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjMzLCA2NzIzNywgNjcyNDEsIAorICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKKyAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCisgICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAorICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKKyAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCisgICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAorICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKKyAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCisgICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAorICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKKyAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCisgICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAxLCA2NzcwNSwgNjc3MDksIDY3NzEzLCA2NzcxNywgNjc3MjEsIAorICAgIDY3NzI1LCA2NzcyOSwgNjc3MzMsIDY3NzM3LCA2Nzc0MSwgNjc3NDUsIDY3NzQ5LCA2Nzc1MywgNjc3NTcsIDY3NzYxLCAKKyAgICA2Nzc2NSwgNjc3NjksIDY3NzczLCA2Nzc3NywgNjc3ODEsIDY3Nzg1LCA2Nzc4OSwgNjc3OTMsIDY3Nzk3LCA2NzgwMSwgCisgICAgNjc4MDUsIDY3ODA5LCA2NzgxMywgNjc4MTcsIDY3ODIxLCA2NzgyNSwgNjc4MjksIDY3ODMzLCA2NzgzNywgNjc4NDEsIAorICAgIDY3ODQ1LCA2Nzg0OSwgNjc4NTMsIDY3ODU3LCA2Nzg2MSwgNjc4NjUsIDY3ODY5LCA2Nzg3MywgNjc4NzcsIDY3ODgxLCAKKyAgICA2Nzg4NSwgNjc4ODksIDY3ODkzLCA2Nzg5NywgNjc5MDEsIDY3OTA1LCA2NzkwOSwgNjc5MTMsIDY3OTE3LCA2NzkyMSwgCisgICAgNjc5MjUsIDY3OTI5LCA2NzkzMywgNjc5MzcsIDY3OTQxLCA2Nzk0NSwgNjc5NDksIDY3OTUzLCA2Nzk1NywgNjc5NjAsIAorICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKKyAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCisgICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAorICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKKyAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCisgICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAorICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKKyAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCisgICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAorICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKKyAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCisgICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAorICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKKyAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCisgICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NiwgNjg1NjAsIAorICAgIDY4NTY0LCA2ODU2OCwgNjg1NzIsIDY4NTc2LCA2ODU4MCwgNjg1ODQsIDY4NTg4LCA2ODU5MiwgNjg1OTYsIDY4NjAwLCAKKyAgICA2ODYwNCwgNjg2MDgsIDY4NjEyLCA2ODYxNiwgNjg2MjAsIDY4NjI0LCA2ODYyOCwgNjg2MzIsIDY4NjM2LCA2ODY0MCwgCisgICAgNjg2NDQsIDY4NjQ4LCA2ODY1MiwgNjg2NTYsIDY4NjYwLCA2ODY2NCwgNjg2NjgsIDY4NjcyLCA2ODY3NiwgNjg2ODAsIAorICAgIDY4Njg0LCA2ODY4OCwgNjg2OTIsIDY4Njk2LCA2ODcwMCwgNjg3MDQsIDY4NzA4LCA2ODcxMiwgNjg3MTYsIDY4NzIwLCAKKyAgICA2ODcyNCwgNjg3MjgsIDY4NzMyLCA2ODczNiwgNjg3NDAsIDAsIDAsIDAsIDY4NzQ0LCA2ODc0OCwgNjg3NTIsIDY4NzU2LCAKKyAgICA2ODc2MCwgNjg3NjQsIDY4NzY4LCA2ODc3MiwgNjg3NzYsIDY4NzgwLCA2ODc4NCwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgCisgICAgNjg4MDAsIDY4ODA0LCA2ODgwOCwgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI4LCA2ODgzMiwgNjg4MzYsIAorICAgIDY4ODQwLCA2ODg0NCwgNjg4NDgsIDY4ODUyLCA2ODg1NiwgNjg4NjAsIDY4ODY0LCA2ODg2OCwgNjg4NzIsIDY4ODc2LCAKKyAgICA2ODg4MCwgNjg4ODQsIDY4ODg4LCA2ODg5MiwgNjg4OTYsIDY4OTAwLCA2ODkwNCwgNjg5MDgsIDY4OTEyLCA2ODkxNiwgCisgICAgNjg5MjAsIDY4OTI0LCA2ODkyOCwgNjg5MzIsIDY4OTM2LCA2ODk0MCwgNjg5NDQsIDY4OTQ4LCA2ODk1MiwgNjg5NTYsIAorICAgIDY4OTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2ODk2NCwgNjg5NjksIDY4OTczLCA2ODk3OCwgNjg5ODMsIAorICAgIDY4OTg4LCA2ODk5MywgNjg5OTgsIDY5MDAyLCA2OTAwNywgNjkwMTIsIDY5MDE3LCA2OTAyMiwgNjkwMjcsIDY5MDMyLCAKKyAgICA2OTAzNywgNjkwNDEsIDY5MDQ1LCA2OTA1MCwgNjkwNTQsIDY5MDU5LCA2OTA2NCwgNjkwNjksIDY5MDczLCA2OTA3OCwgCisgICAgNjkwODMsIDY5MDg4LCA2OTA5MywgNjkwOTgsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY5MTE2LCA2OTEyMCwgNjkxMjUsIAorICAgIDY5MTI5LCA2OTEzMywgNjkxMzcsIDY5MTQyLCA2OTE0NywgNjkxNTIsIDY5MTYwLCA2OTE2OCwgNjkxNzYsIDY5MTg0LCAKKyAgICA2OTE5MSwgNjkxOTksIDY5MjA1LCA2OTIxMywgNjkyMTcsIDY5MjIxLCA2OTIyNSwgNjkyMjksIDY5MjMzLCA2OTIzNywgCisgICAgNjkyNDEsIDY5MjQ1LCA2OTI0OSwgNjkyNTMsIDY5MjU3LCA2OTI2MSwgNjkyNjUsIDY5MjY5LCA2OTI3MywgNjkyNzcsIAorICAgIDY5MjgxLCA2OTI4NSwgNjkyODksIDY5MjkzLCA2OTI5NywgNjkzMDEsIDY5MzA1LCA2OTMwOSwgNjkzMTMsIDY5MzE3LCAKKyAgICA2OTMyMSwgNjkzMjUsIDY5MzI5LCA2OTMzMywgNjkzMzcsIDY5MzQxLCA2OTM0NSwgNjkzNDksIDY5MzUzLCA2OTM1NywgCisgICAgNjkzNjAsIDY5MzY0LCA2OTM2OCwgNjkzNzIsIDY5Mzc2LCA2OTM4MCwgNjkzODQsIDY5Mzg4LCA2OTM5MiwgNjkzOTYsIAorICAgIDY5NDAwLCA2OTQwNCwgNjk0MDgsIDY5NDEyLCA2OTQxNiwgNjk0MjAsIDY5NDI0LCA2OTQyOCwgNjk0MzIsIDY5NDM2LCAKKyAgICA2OTQ0MCwgNjk0NDQsIDY5NDQ4LCA2OTQ1MiwgNjk0NTYsIDY5NDYwLCA2OTQ2NCwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgCisgICAgNjk0ODAsIDY5NDg0LCA2OTQ4OCwgNjk0OTIsIDY5NDk2LCA2OTUwMCwgNjk1MDQsIDY5NTA3LCA2OTUxMSwgNjk1MTUsIAorICAgIDY5NTE4LCA2OTUyMiwgNjk1MjYsIDY5NTMwLCA2OTUzMywgNjk1MzcsIDY5NTQxLCA2OTU0NSwgNjk1NDksIDY5NTUzLCAKKyAgICA2OTU1NywgNjk1NjEsIDY5NTY1LCA2OTU2OSwgNjk1NzMsIDY5NTc3LCA2OTU4MSwgNjk1ODUsIDY5NTg5LCA2OTU5MiwgCisgICAgNjk1OTYsIDY5NjAwLCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNSwgNjk2MTksIDY5NjIzLCA2OTYyNywgNjk2MzAsIAorICAgIDY5NjMzLCA2OTYzNywgNjk2NDEsIDY5NjQ1LCA2OTY0OCwgNjk2NTEsIDY5NjU1LCA2OTY1OSwgNjk2NjMsIDY5NjY3LCAKKyAgICA2OTY3MSwgNjk2NzUsIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIDY5NzAzLCA2OTcwNywgCisgICAgNjk3MTEsIDY5NzE1LCA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCA2OTc0MywgNjk3NDcsIAorICAgIDY5NzUxLCA2OTc1NSwgNjk3NTksIDY5NzYzLCA2OTc2NywgNjk3NzEsIDY5Nzc1LCA2OTc3OSwgNjk3ODMsIDY5Nzg3LCAKKyAgICA2OTc5MSwgNjk3OTUsIDY5Nzk5LCA2OTgwMiwgNjk4MDYsIDY5ODEwLCA2OTgxNCwgNjk4MTgsIDY5ODIyLCA2OTgyNiwgCisgICAgNjk4MzAsIDY5ODM0LCA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCA2OTg2MiwgNjk4NjYsIAorICAgIDY5ODcwLCA2OTg3NCwgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgNjk5MDIsIDY5OTA2LCAKKyAgICA2OTkxMCwgNjk5MTQsIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIDY5OTQyLCA2OTk0NiwgCisgICAgNjk5NDksIDY5OTUzLCA2OTk1NywgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIAorICAgIDY5OTg5LCA2OTk5MywgNjk5OTcsIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNiwgNzAwMjAsIDcwMDI0LCAKKyAgICA3MDAyOCwgNzAwMzIsIDcwMDM2LCA3MDA0MCwgNzAwNDQsIDcwMDQ4LCA3MDA1MiwgNzAwNTYsIDcwMDYwLCA3MDA2NCwgCisgICAgNzAwNjgsIDcwMDcyLCA3MDA3NiwgNzAwODAsIDcwMDg0LCA3MDA4OCwgNzAwOTIsIDcwMDk2LCA3MDEwMCwgNzAxMDMsIAorICAgIDcwMTA3LCA3MDExMSwgNzAxMTUsIDcwMTE5LCA3MDEyMywgNzAxMjcsIDcwMTMxLCA3MDEzNSwgNzAxMzksIDcwMTQzLCAKKyAgICA3MDE0NywgNzAxNTEsIDcwMTU1LCA3MDE1OSwgNzAxNjMsIDcwMTY3LCA3MDE3MSwgNzAxNzUsIDcwMTc5LCA3MDE4MywgCisgICAgNzAxODcsIDcwMTkxLCA3MDE5NSwgNzAxOTksIDcwMjAzLCA3MDIwNywgNzAyMTEsIDcwMjE1LCA3MDIxOSwgNzAyMjMsIAorICAgIDcwMjI3LCA3MDIzMSwgNzAyMzUsIDcwMjM5LCA3MDI0MywgNzAyNDcsIDcwMjUxLCA3MDI1NSwgNzAyNTksIDcwMjYzLCAKKyAgICA3MDI2NywgNzAyNzEsIDcwMjc1LCA3MDI3OCwgNzAyODMsIDcwMjg3LCA3MDI5MywgNzAyOTgsIDcwMzA0LCA3MDMwOCwgCisgICAgNzAzMTIsIDcwMzE2LCA3MDMyMCwgNzAzMjQsIDcwMzI4LCA3MDMzMiwgNzAzMzYsIDcwMzQwLCA3MDM0NCwgNzAzNDgsIAorICAgIDcwMzUyLCA3MDM1NiwgNzAzNjAsIDcwMzYzLCA3MDM2NiwgNzAzNjksIDcwMzcyLCA3MDM3NSwgNzAzNzgsIDcwMzgxLCAKKyAgICA3MDM4NCwgNzAzODcsIDcwMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MDM5OCwgNzA0MDMsIDcwNDA4LCA3MDQxMywgNzA0MTgsIDcwNDI1LCA3MDQzMiwgNzA0MzcsIDcwNDQyLCAKKyAgICA3MDQ0NywgNzA0NTIsIDcwNDU5LCA3MDQ2NiwgNzA0NzMsIDcwNDgwLCA3MDQ4NywgNzA0OTQsIDcwNTA0LCA3MDUxNCwgCisgICAgNzA1MjEsIDcwNTI4LCA3MDUzNSwgNzA1NDIsIDcwNTQ4LCA3MDU1NCwgNzA1NjMsIDcwNTcyLCA3MDU3OSwgNzA1ODYsIAorICAgIDcwNTk3LCA3MDYwOCwgNzA2MTMsIDcwNjE4LCA3MDYyNSwgNzA2MzIsIDcwNjM5LCA3MDY0NiwgNzA2NTMsIDcwNjYwLCAKKyAgICA3MDY2NywgNzA2NzQsIDcwNjgwLCA3MDY4NiwgNzA2OTIsIDcwNjk4LCA3MDcwNSwgNzA3MTIsIDcwNzE3LCA3MDcyMSwgCisgICAgNzA3MjgsIDcwNzM1LCA3MDc0MiwgNzA3NDYsIDcwNzUzLCA3MDc1NywgNzA3NjIsIDcwNzY2LCA3MDc3MiwgNzA3NzcsIAorICAgIDcwNzgzLCA3MDc4OCwgNzA3OTIsIDcwNzk2LCA3MDc5OSwgNzA4MDIsIDcwODA3LCA3MDgxMiwgNzA4MTcsIDcwODIyLCAKKyAgICA3MDgyNywgNzA4MzIsIDcwODM3LCA3MDg0MiwgNzA4NDcsIDcwODUyLCA3MDg2MSwgNzA4NzAsIDcwODc1LCA3MDg4MCwgCisgICAgNzA4ODUsIDcwODkwLCA3MDg5NSwgNzA5MDAsIDcwOTA1LCA3MDkxMCwgNzA5MTUsIDcwOTIwLCA3MDkyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzA5MzAsIDcwOTM2LCA3MDkzOSwgNzA5NDIsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCAKKyAgICA3MDk2MSwgNzA5NjQsIDcwOTY4LCA3MDk3MSwgNzA5NzUsIDcwOTc4LCA3MDk4MiwgNzA5ODYsIDcwOTkwLCA3MDk5NCwgCisgICAgNzA5OTgsIDcxMDAyLCA3MTAwNiwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIAorICAgIDcxMDM3LCA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjgsIDcxMDcyLCAKKyAgICA3MTA3NiwgNzEwODAsIDcxMDg0LCA3MTA4OCwgNzEwOTIsIDcxMDk2LCA3MTEwMCwgNzExMDQsIDcxMTA4LCA3MTExMiwgCisgICAgNzExMTYsIDcxMTIwLCA3MTEyNCwgNzExMjgsIDcxMTMyLCA3MTEzNiwgNzExNDAsIDcxMTQ0LCA3MTE0OCwgNzExNTIsIAorICAgIDcxMTU2LCA3MTE2MCwgNzExNjQsIDcxMTY3LCA3MTE3MSwgNzExNzUsIDcxMTc5LCA3MTE4MywgNzExODcsIDcxMTkxLCAKKyAgICA3MTE5NSwgNzExOTgsIDcxMjAyLCA3MTIwNiwgNzEyMTAsIDcxMjE0LCA3MTIxOCwgNzEyMjIsIDcxMjI2LCA3MTIzMCwgCisgICAgNzEyMzQsIDcxMjM4LCA3MTI0MiwgNzEyNDYsIDcxMjUxLCA3MTI1NiwgNzEyNTksIDcxMjY0LCA3MTI2NywgNzEyNzAsIAorICAgIDcxMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTI3NywgNzEyODYsIDcxMjk1LCA3MTMwNCwgNzEzMTMsIDcxMzIyLCAKKyAgICA3MTMzMSwgNzEzNDAsIDcxMzQ5LCA3MTM1NywgNzEzNjQsIDcxMzcyLCA3MTM3OSwgNzEzODcsIDcxMzk3LCA3MTQwNiwgCisgICAgNzE0MTYsIDcxNDI1LCA3MTQzNSwgNzE0NDMsIDcxNDUwLCA3MTQ1OCwgNzE0NjUsIDcxNDczLCA3MTQ3OCwgNzE0ODMsIAorICAgIDcxNDg4LCA3MTQ5NywgNzE1MDMsIDcxNTA5LCA3MTUxNiwgNzE1MjUsIDcxNTMzLCA3MTU0MSwgNzE1NDksIDcxNTU2LCAKKyAgICA3MTU2MywgNzE1NzAsIDcxNTc3LCA3MTU4MiwgNzE1ODcsIDcxNTkyLCA3MTU5NywgNzE2MDIsIDcxNjA3LCA3MTYxMiwgCisgICAgNzE2MTcsIDcxNjI1LCA3MTYzMywgNzE2MzksIDcxNjQ1LCA3MTY1MCwgNzE2NTUsIDcxNjYwLCA3MTY2NSwgNzE2NzAsIAorICAgIDcxNjc1LCA3MTY4MCwgNzE2ODUsIDcxNjkzLCA3MTcwMSwgNzE3MDYsIDcxNzExLCA3MTcyMSwgNzE3MzEsIDcxNzM4LCAKKyAgICA3MTc0NSwgNzE3NTQsIDcxNzYzLCA3MTc3NSwgNzE3ODcsIDcxNzkzLCA3MTc5OSwgNzE4MDcsIDcxODE1LCA3MTgyNSwgCisgICAgNzE4MzUsIDcxODQyLCA3MTg0OSwgNzE4NTQsIDcxODU5LCA3MTg3MSwgNzE4ODMsIDcxODkxLCA3MTg5OSwgNzE5MDksIAorICAgIDcxOTE5LCA3MTkzMSwgNzE5NDMsIDcxOTUyLCA3MTk2MSwgNzE5NjgsIDcxOTc1LCA3MTk4MiwgNzE5ODksIDcxOTk4LCAKKyAgICA3MjAwNywgNzIwMTIsIDcyMDE3LCA3MjAyNCwgNzIwMzEsIDcyMDM4LCA3MjA0NSwgNzIwNTcsIDcyMDY5LCA3MjA3NCwgCisgICAgNzIwNzksIDcyMDg0LCA3MjA4OSwgNzIwOTQsIDcyMDk5LCA3MjEwNCwgNzIxMDksIDcyMTEzLCA3MjExOCwgNzIxMjMsIAorICAgIDcyMTI4LCA3MjEzMywgNzIxMzgsIDcyMTQ0LCA3MjE0OSwgNzIxNTQsIDcyMTYxLCA3MjE2OCwgNzIxNzUsIDcyMTgyLCAKKyAgICA3MjE4OSwgNzIxOTgsIDcyMjA3LCA3MjIxMywgNzIyMTksIDcyMjI1LCA3MjIzMSwgNzIyMzgsIDcyMjQ1LCA3MjI1MiwgCisgICAgNzIyNTksIDcyMjY2LCA3MjI3MCwgNzIyNzcsIDcyMjgyLCA3MjI4NywgNzIyOTQsIDAsIDcyMzA3LCA3MjMxNSwgNzIzMjMsIAorICAgIDcyMzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjMzNywgNzIzNDYsIDcyMzU1LCA3MjM2NCwgCisgICAgNzIzNzMsIDcyMzgyLCA3MjM5MSwgNzI0MDAsIDcyNDA5LCA3MjQxOCwgNzI0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNDM0LCAKKyAgICA3MjQ0MSwgNzI0NDcsIDcyNDU0LCA3MjQ2MiwgNzI0NzAsIDcyNDc3LCA3MjQ4NSwgNzI0OTIsIDcyNDk4LCA3MjUwNCwgCisgICAgNzI1MTEsIDcyNTE3LCA3MjUyMywgNzI1MjksIDcyNTM2LCA3MjU0MywgNzI1NTAsIDcyNTU3LCA3MjU2NCwgNzI1NzEsIAorICAgIDcyNTc4LCA3MjU4NSwgNzI1OTIsIDcyNTk5LCA3MjYwNiwgNzI2MTMsIDcyNjIwLCA3MjYyNywgNzI2MzMsIDcyNjQwLCAKKyAgICA3MjY0NywgNzI2NTQsIDcyNjYxLCA3MjY2OCwgNzI2NzUsIDcyNjgyLCA3MjY4OSwgNzI2OTYsIDcyNzAzLCA3MjcxMCwgCisgICAgNzI3MTcsIDcyNzI0LCA3MjczMSwgNzI3MzgsIDcyNzQ1LCA3Mjc1MiwgNzI3NTksIDcyNzY3LCA3Mjc3NSwgNzI3ODMsIAorICAgIDcyNzkxLCAwLCAwLCAwLCAwLCA3Mjc5OSwgNzI4MDgsIDcyODE3LCA3MjgyNiwgNzI4MzUsIDcyODQ0LCA3Mjg1MywgCisgICAgNzI4NjAsIDcyODY3LCA3Mjg3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4ODEsIDcyODg1LCA3Mjg5MCwgNzI4OTUsIDcyOTAwLCAKKyAgICA3MjkwNSwgNzI5MTAsIDcyOTE1LCA3MjkyMCwgNzI5MjUsIDcyOTMwLCA3MjkzNSwgNzI5MzksIDcyOTQzLCA3Mjk0OCwgCisgICAgNzI5NTMsIDcyOTU3LCA3Mjk2MiwgNzI5NjcsIDcyOTcyLCA3Mjk3NywgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIAorICAgIDczMDAwLCA3MzAwNSwgNzMwMTAsIDczMDE0LCA3MzAxOCwgNzMwMjIsIDczMDI2LCA3MzAzMCwgNzMwMzQsIDczMDM4LCAKKyAgICA3MzA0MywgNzMwNDgsIDczMDUzLCA3MzA1OCwgNzMwNjMsIDczMDcwLCA3MzA3NiwgNzMwODEsIDczMDg2LCA3MzA5MSwgCisgICAgNzMwOTYsIDczMTAyLCA3MzEwOSwgNzMxMTUsIDczMTIyLCA3MzEyOCwgNzMxMzQsIDczMTM5LCA3MzE0NiwgNzMxNTIsIAorICAgIDczMTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzE2MywgNzMxNjcsIDczMTcxLCA3MzE3NCwgNzMxNzgsIDczMTgxLCAKKyAgICA3MzE4NSwgNzMxODgsIDczMTkyLCA3MzE5NiwgNzMyMDEsIDczMjA1LCA3MzIxMCwgNzMyMTMsIDczMjE3LCA3MzIyMSwgCisgICAgNzMyMjQsIDczMjI4LCA3MzIzMiwgNzMyMzUsIDczMjM5LCA3MzI0MywgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIAorICAgIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCAKKyAgICA3MzMwMywgNzMzMDcsIDczMzEwLCA3MzMxMywgNzMzMTcsIDczMzIxLCA3MzMyNSwgNzMzMjgsIDczMzMxLCA3MzMzNCwgCisgICAgNzMzMzgsIDczMzQyLCA3MzM0NiwgNzMzNTAsIDczMzUzLCA3MzM1NiwgNzMzNjAsIDczMzY1LCA3MzM3MCwgNzMzNzQsIAorICAgIDczMzc5LCA3MzM4MywgNzMzODgsIDczMzkzLCA3MzM5OSwgNzM0MDQsIDczNDEwLCA3MzQxNCwgNzM0MTksIDczNDI0LCAKKyAgICA3MzQyOCwgNzM0MzMsIDczNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzQ0MiwgNzM0NDUsIDczNDQ5LCAKKyAgICA3MzQ1MywgNzM0NTYsIDczNDU5LCA3MzQ2MiwgNzM0NjUsIDczNDY4LCA3MzQ3MSwgNzM0NzQsIDczNDc3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MzQ4MCwgNzM0ODUsIDczNDg5LCA3MzQ5MywgNzM0OTcsIDczNTAxLCA3MzUwNSwgNzM1MDksIDczNTEzLCAKKyAgICA3MzUxNywgNzM1MjEsIDczNTI1LCA3MzUyOSwgNzM1MzMsIDczNTM3LCA3MzU0MSwgNzM1NDUsIDczNTUwLCA3MzU1NSwgCisgICAgNzM1NjEsIDczNTY3LCA3MzU3NCwgNzM1NzksIDczNTg0LCA3MzU5MCwgNzM1OTQsIDczNTk5LCA3MzYwMiwgMCwgMCwgMCwgCisgICAgMCwgNzM2MDUsIDczNjEyLCA3MzYxOCwgNzM2MjQsIDczNjMwLCA3MzYzNiwgNzM2NDIsIDczNjQ4LCA3MzY1NCwgNzM2NjAsIAorICAgIDczNjY2LCA3MzY3MiwgNzM2NzksIDczNjg2LCA3MzY5MywgNzM2OTksIDczNzA2LCA3MzcxMywgNzM3MjAsIDczNzI3LCAKKyAgICA3MzczNCwgNzM3NDAsIDczNzQ2LCA3Mzc1MywgNzM3NTksIDczNzY2LCA3Mzc3MywgNzM3NzksIDczNzg1LCA3Mzc5MiwgCisgICAgNzM3OTksIDczODA2LCA3MzgxMiwgNzM4MTksIDczODI2LCA3MzgzMiwgNzM4MzksIDczODQ1LCA3Mzg1MiwgNzM4NTksIAorICAgIDczODY1LCA3Mzg3MSwgNzM4NzgsIDczODg0LCA3Mzg5MSwgNzM4OTgsIDczOTA3LCA3MzkxNCwgNzM5MjEsIDczOTI1LCAKKyAgICA3MzkzMCwgNzM5MzUsIDczOTQwLCA3Mzk0NSwgNzM5NDksIDczOTUzLCA3Mzk1OCwgNzM5NjIsIDczOTY3LCA3Mzk3MiwgCisgICAgNzM5NzcsIDczOTgxLCA3Mzk4NSwgNzM5OTAsIDczOTk0LCA3Mzk5OSwgNzQwMDMsIDc0MDA4LCA3NDAxMywgNzQwMTgsIAorICAgIDc0MDIzLCA3NDAyNywgNzQwMzIsIDc0MDM3LCA3NDA0MiwgNzQwNDgsIDc0MDUzLCA3NDA1OSwgNzQwNjUsIDc0MDcxLCAKKyAgICA3NDA3NywgNzQwODMsIDc0MDg4LCA3NDA5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQwOTgsIAorICAgIDc0MTAzLCA3NDEwNywgNzQxMTEsIDc0MTE1LCA3NDExOSwgNzQxMjMsIDc0MTI3LCA3NDEzMSwgNzQxMzUsIDc0MTM5LCAKKyAgICA3NDE0MywgNzQxNDcsIDc0MTUxLCA3NDE1NSwgNzQxNTksIDc0MTYzLCA3NDE2NywgNzQxNzEsIDc0MTc1LCA3NDE3OSwgCisgICAgNzQxODMsIDc0MTg3LCA3NDE5MSwgNzQxOTUsIDc0MTk5LCA3NDIwMywgNzQyMDcsIDc0MjExLCA3NDIxNSwgMCwgMCwgMCwgCisgICAgNzQyMTksIDc0MjIzLCA3NDIyNywgNzQyMzEsIDc0MjM1LCA3NDIzOCwgNzQyNDQsIDc0MjQ3LCA3NDI1MSwgNzQyNTQsIAorICAgIDc0MjYwLCA3NDI2NiwgNzQyNzQsIDc0Mjc3LCA3NDI4MSwgNzQyODQsIDc0Mjg3LCA3NDI5MywgNzQyOTksIDc0MzAzLCAKKyAgICA3NDMwOSwgNzQzMTMsIDc0MzE3LCA3NDMyMywgNzQzMjcsIDc0MzMzLCA3NDMzOSwgNzQzNDMsIDc0MzQ3LCA3NDM1MywgCisgICAgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzMsIDc0Mzc5LCA3NDM4MywgNzQzODksIDc0MzkyLCA3NDM5NSwgNzQ0MDEsIAorICAgIDc0NDA1LCA3NDQxMSwgNzQ0MTQsIDc0NDE3LCA3NDQyMCwgNzQ0MjYsIDc0NDMwLCA3NDQzNCwgNzQ0NDAsIDc0NDQ2LCAKKyAgICA3NDQ0OSwgNzQ0NTIsIDc0NDU4LCA3NDQ2MywgNzQ0NjgsIDc0NDczLCA3NDQ4MCwgNzQ0ODUsIDc0NDkyLCA3NDQ5NywgCisgICAgNzQ1MDQsIDc0NTA5LCA3NDUxNCwgNzQ1MTksIDc0NTI0LCA3NDUyNywgNzQ1MzEsIDc0NTM1LCA3NDU0MCwgNzQ1NDUsIAorICAgIDc0NTUwLCA3NDU1NSwgNzQ1NjAsIDc0NTY1LCA3NDU3MCwgNzQ1NzUsIDc0NTgyLCA3NDU4NywgMCwgNzQ1OTQsIDc0NTk3LCAKKyAgICA3NDYwMSwgNzQ2MDQsIDc0NjA3LCA3NDYxMCwgNzQ2MTMsIDc0NjE2LCA3NDYxOSwgNzQ2MjIsIDc0NjI1LCAwLCAwLCAwLCAKKyAgICAwLCA3NDYyOCwgNzQ2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjQwLCA3NDY0MywgNzQ2NDYsIDc0NjQ5LCA3NDY1MiwgCisgICAgNzQ2NTYsIDc0NjU5LCA3NDY2MiwgNzQ2NjYsIDc0NjcwLCA3NDY3NCwgNzQ2NzgsIDc0NjgyLCA3NDY4NiwgNzQ2OTAsIAorICAgIDc0Njk0LCA3NDY5OCwgNzQ3MDIsIDc0NzA2LCA3NDcxMCwgNzQ3MTQsIDc0NzE4LCA3NDcyMiwgNzQ3MjYsIDc0NzMwLCAKKyAgICA3NDczMywgNzQ3MzcsIDc0NzQwLCA3NDc0NCwgNzQ3NDgsIDc0NzUyLCA3NDc1NiwgNzQ3NjAsIDc0NzYzLCA3NDc2NywgCisgICAgNzQ3NzAsIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OCwgNzQ3OTEsIDc0Nzk2LCA3NDgwMCwgNzQ4MDUsIAorICAgIDc0ODEwLCA3NDgxNCwgNzQ4MTksIDc0ODIzLCA3NDgyOCwgNzQ4MzMsIDc0ODM4LCA3NDg0MiwgNzQ4NDYsIDc0ODUxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDg1NiwgNzQ4NjEsIDc0ODY2LCA3NDg3MSwgNzQ4NzcsIDc0ODgyLCA3NDg4NywgCisgICAgNzQ4OTIsIDc0ODk3LCA3NDkwMiwgNzQ5MDYsIDc0OTEwLCA3NDkxNSwgNzQ5MjAsIDAsIDAsIDc0OTI2LCA3NDkzMCwgCisgICAgNzQ5MzMsIDc0OTM2LCA3NDkzOSwgNzQ5NDIsIDc0OTQ1LCA3NDk0OCwgNzQ5NTEsIDc0OTU0LCAwLCAwLCA3NDk1NywgCisgICAgNzQ5NjIsIDc0OTY3LCA3NDk3MywgNzQ5ODAsIDc0OTg2LCA3NDk5MiwgNzQ5OTgsIDc1MDA0LCA3NTAxMCwgNzUwMTYsIAorICAgIDc1MDIyLCA3NTAyOCwgNzUwMzQsIDc1MDQwLCA3NTA0NiwgNzUwNTEsIDc1MDU2LCA3NTA2MSwgNzUwNjcsIDc1MDczLCAKKyAgICA3NTA4MCwgNzUwODYsIDc1MDkyLCA3NTA5NywgNzUxMDQsIDc1MTExLCA3NTExOCwgNzUxMjQsIDc1MTI5LCA3NTEzNCwgCisgICAgNzUxMzksIDAsIDAsIDAsIDAsIDc1MTQ3LCA3NTE1MywgNzUxNTksIDc1MTY1LCA3NTE3MSwgNzUxNzcsIDc1MTgzLCAKKyAgICA3NTE4OSwgNzUxOTUsIDc1MjAxLCA3NTIwNywgNzUyMTMsIDc1MjE5LCA3NTIyNSwgNzUyMzEsIDc1MjM3LCA3NTI0MywgCisgICAgNzUyNDksIDc1MjU1LCA3NTI2MSwgNzUyNjcsIDc1MjcyLCA3NTI3NywgNzUyODMsIDc1Mjg5LCA3NTI5NSwgNzUzMDEsIAorICAgIDc1MzA3LCA3NTMxMywgNzUzMTksIDc1MzI1LCA3NTMzMSwgNzUzMzcsIDc1MzQzLCA3NTM0OSwgNzUzNTUsIDc1MzYxLCAKKyAgICA3NTM2NywgNzUzNzMsIDc1Mzc5LCA3NTM4NSwgNzUzOTEsIDc1Mzk3LCA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgCisgICAgNzU0MjYsIDc1NDMxLCA3NTQzNywgNzU0NDIsIDc1NDQ2LCA3NTQ1MSwgNzU0NTUsIDc1NDU5LCA3NTQ2MywgNzU0NjksIAorICAgIDc1NDc0LCA3NTQ3OSwgNzU0ODQsIDc1NDg5LCA3NTQ5NCwgNzU0OTksIDc1NTA0LCA3NTUxMSwgNzU1MTgsIDc1NTI1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3Mzc2NCwgNzM3NjcsIDczNzcwLCA3Mzc3MywgNzM3NzYsIDczNzgwLCA3Mzc4MywgNzM3ODYsIDczNzkwLCA3Mzc5NCwgCi0gICAgNzM3OTgsIDczODAyLCA3MzgwNiwgNzM4MTAsIDczODE0LCA3MzgxOCwgNzM4MjIsIDczODI2LCA3MzgzMCwgNzM4MzQsIAotICAgIDczODM4LCA3Mzg0MiwgNzM4NDYsIDczODUwLCA3Mzg1NCwgNzM4NTcsIDczODYxLCA3Mzg2NCwgNzM4NjgsIDczODcyLCAKLSAgICA3Mzg3NiwgNzM4ODAsIDczODg0LCA3Mzg4NywgNzM4OTEsIDczODk0LCA3Mzg5NywgNzM5MDEsIDczOTA1LCA3MzkwOSwgCi0gICAgNzM5MTMsIDczOTE2LCA3MzkyMSwgNzM5MjUsIDczOTMwLCA3MzkzNSwgNzM5MzksIDczOTQ0LCA3Mzk0OCwgNzM5NTMsIAotICAgIDczOTU4LCA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM5ODUsIAotICAgIDczOTkwLCA3Mzk5NSwgNzQwMDAsIDc0MDA3LCA3NDAxMiwgNzQwMTcsIDc0MDIxLCA3NDAyNiwgNzQwMzEsIDc0MDM1LCAKLSAgICA3NDAzOSwgNzQwNDQsIDc0MDUwLCAwLCAwLCA3NDA1NywgNzQwNjEsIDc0MDY0LCA3NDA2NywgNzQwNzAsIDc0MDczLCAKLSAgICA3NDA3NiwgNzQwNzksIDc0MDgyLCA3NDA4NSwgMCwgMCwgNzQwODgsIDc0MDkzLCA3NDA5OCwgNzQxMDQsIDc0MTExLCAKLSAgICA3NDExNywgNzQxMjMsIDc0MTI5LCA3NDEzNSwgNzQxNDEsIDc0MTQ3LCA3NDE1MywgNzQxNTksIDc0MTY1LCA3NDE3MSwgCi0gICAgNzQxNzcsIDc0MTgyLCA3NDE4OCwgNzQxOTMsIDc0MTk5LCA3NDIwNSwgNzQyMTIsIDc0MjE4LCA3NDIyNCwgNzQyMjksIAotICAgIDc0MjM2LCA3NDI0MywgNzQyNTAsIDc0MjU2LCA3NDI2MSwgNzQyNjYsIDc0MjcxLCAwLCAwLCAwLCAwLCA3NDI3OSwgCi0gICAgNzQyODUsIDc0MjkxLCA3NDI5NywgNzQzMDMsIDc0MzA5LCA3NDMxNSwgNzQzMjEsIDc0MzI3LCA3NDMzMywgNzQzMzksIAotICAgIDc0MzQ1LCA3NDM1MSwgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzUsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk5LCAKLSAgICA3NDQwNCwgNzQ0MDksIDc0NDE1LCA3NDQyMSwgNzQ0MjcsIDc0NDMzLCA3NDQzOSwgNzQ0NDUsIDc0NDUxLCA3NDQ1NywgCi0gICAgNzQ0NjMsIDc0NDY5LCA3NDQ3NSwgNzQ0ODEsIDc0NDg3LCA3NDQ5MywgNzQ0OTksIDc0NTA1LCA3NDUxMSwgNzQ1MTcsIAotICAgIDc0NTIzLCA3NDUyOSwgNzQ1MzUsIDc0NTQxLCA3NDU0NywgNzQ1NTMsIDc0NTU4LCA3NDU2MywgNzQ1NjksIDc0NTc0LCAKLSAgICA3NDU3OCwgNzQ1ODMsIDc0NTg3LCA3NDU5MSwgNzQ1OTUsIDc0NjAxLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMSwgCi0gICAgNzQ2MjYsIDc0NjMxLCA3NDYzNiwgNzQ2NDMsIDc0NjUwLCA3NDY1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ2NjQsIDc0NjY5LCA3NDY3NCwgNzQ2NzksIAotICAgIDc0Njg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY5MywgNzQ2OTcsIDc0NzAxLCA3NDcwNSwgNzQ3MDksIAotICAgIDc0NzEzLCAwLCAwLCA3NDcxNywgNzQ3MjEsIDc0NzI1LCA3NDcyOSwgNzQ3MzMsIDc0NzM3LCAwLCAwLCA3NDc0MSwgCi0gICAgNzQ3NDUsIDc0NzQ5LCA3NDc1MywgNzQ3NTcsIDc0NzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDc2NSwgCi0gICAgNzQ3NjksIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OSwgMCwgNzQ3OTMsIDc0Nzk3LCA3NDgwMSwgNzQ4MDUsIAotICAgIDc0ODA5LCA3NDgxMywgNzQ4MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc1NTMyLCA3NTUzNywgNzU1NDIsIDc1NTQ3LCA3NTU1NCwgNzU1NjEsIDc1NTY1LCA3NTU2OSwgNzU1NzQsIDc1NTc5LCAKKyAgICA3NTU4NCwgNzU1ODksIDc1NTk0LCA3NTU5OSwgNzU2MDQsIDc1NjA5LCA3NTYxNCwgNzU2MjAsIDc1NjI2LCA3NTYzMiwgCisgICAgNzU2MzgsIDc1NjQ0LCA3NTY0OCwgNzU2NTQsIDc1NjU4LCA3NTY2NCwgNzU2NzEsIDc1Njc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3NTY4MSwgNzU2ODUsIDc1Njg5LCA3NTY5MywgNzU2OTcsIDc1NzAxLCAwLCAwLCA3NTcwNSwgNzU3MDksIAorICAgIDc1NzEzLCA3NTcxNywgNzU3MjEsIDc1NzI1LCAwLCAwLCA3NTcyOSwgNzU3MzMsIDc1NzM3LCA3NTc0MSwgNzU3NDUsIAorICAgIDc1NzQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTc1MywgNzU3NTcsIDc1NzYxLCA3NTc2NSwgNzU3NjksIAorICAgIDc1NzczLCA3NTc3NywgMCwgNzU3ODEsIDc1Nzg1LCA3NTc4OSwgNzU3OTMsIDc1Nzk3LCA3NTgwMSwgNzU4MDUsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTUsIDc0ODYxLCAKLSAgICA3NDg2OCwgNzQ4NzUsIDc0ODgyLCA3NDg4OSwgNzQ4OTYsIDc0OTAzLCA3NDkxMCwgNzQ5MTcsIDc0OTI0LCA3NDkzMCwgCi0gICAgNzQ5MzcsIDc0OTQ0LCA3NDk1MSwgNzQ5NTgsIDc0OTY1LCA3NDk3MiwgNzQ5NzksIDc0OTg2LCA3NDk5MywgNzUwMDAsIAotICAgIDc1MDA3LCA3NTAxNiwgNzUwMjUsIDc1MDM0LCA3NTA0MywgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzksIDc1MDg3LCAKLSAgICA3NTA5NSwgNzUxMDMsIDc1MTExLCA3NTExOSwgNzUxMjcsIDc1MTM1LCA3NTE0MywgNzUxNDksIDc1MTU3LCAwLCAwLCAKLSAgICA3NTE2NSwgNzUxNzIsIDc1MTc4LCA3NTE4NCwgNzUxOTAsIDc1MTk2LCA3NTIwMiwgNzUyMDgsIDc1MjE0LCA3NTIyMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU4MDksIDc1ODE0LCA3NTgxOSwgNzU4MjQsIDc1ODI5LCA3NTgzMywgNzU4MzcsIDc1ODQyLCA3NTg0NywgNzU4NTIsIAorICAgIDc1ODU3LCA3NTg2MiwgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODIsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIDc1OTAxLCAKKyAgICA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ4LCA3NTk1NSwgCisgICAgNzU5NjIsIDc1OTY5LCA3NTk3NiwgNzU5ODMsIDc1OTkwLCA3NTk5NywgNzYwMDMsIDc2MDA5LCA3NjAxNSwgNzYwMjEsIAorICAgIDc2MDI3LCA3NjAzMywgNzYwMzksIDc2MDQ1LCA3NjA0OSwgNzYwNTUsIDAsIDAsIDc2MDYxLCA3NjA2NiwgNzYwNzAsIAorICAgIDc2MDc0LCA3NjA3OCwgNzYwODIsIDc2MDg2LCA3NjA5MCwgNzYwOTQsIDc2MDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjEwMiwgCisgICAgNzYxMDYsIDc2MTEwLCA3NjExNCwgNzYxMTgsIDc2MTIyLCA3NjEyNiwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIAorICAgIDc2MTQ2LCA3NjE1MCwgNzYxNTQsIDc2MTU4LCA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCAKKyAgICA3NjE4NiwgNzYxOTAsIDAsIDAsIDAsIDAsIDc2MTk0LCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAorICAgIDc2MjE4LCA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCAKKyAgICA3NjI1OCwgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgCisgICAgNzYyOTgsIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIAorICAgIDc2MzM4LCA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCAKKyAgICA3NjM3OCwgNzYzODIsIDc2Mzg2LCAwLCAwLCAwLCAwLCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCA3NjQwMiwgNzY0MDYsIAorICAgIDc2NDEwLCA3NjQxNCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgNzY0NDIsIDc2NDQ2LCAKKyAgICA3NjQ1MCwgNzY0NTQsIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIDc2NDgyLCA3NjQ4NiwgCisgICAgNzY0OTAsIDc2NDk0LCA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCA3NjUyMiwgNzY1MjYsIAorICAgIDc2NTMwLCA3NjUzNCwgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgNzY1NjIsIDc2NTY2LCAKKyAgICA3NjU3MCwgNzY1NzQsIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIDc2NjAyLCA3NjYwNiwgCisgICAgNzY2MTAsIDc2NjE0LCA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCA3NjY0MiwgNzY2NDYsIAorICAgIDc2NjUwLCA3NjY1NCwgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgNzY2ODIsIDc2Njg2LCAKKyAgICA3NjY5MCwgNzY2OTQsIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDc2NzIyLCA3NjcyNiwgCisgICAgNzY3MzAsIDc2NzM0LCA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCA3Njc2MiwgNzY3NjYsIAorICAgIDc2NzcwLCA3Njc3NCwgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgNzY4MDIsIDc2ODA2LCAKKyAgICA3NjgxMCwgNzY4MTQsIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIDc2ODQyLCA3Njg0NiwgCisgICAgNzY4NTAsIDc2ODU0LCA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCA3Njg4MiwgNzY4ODYsIAorICAgIDc2ODkwLCA3Njg5NCwgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIDc2OTI2LCAKKyAgICA3NjkzMCwgNzY5MzQsIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIDc2OTYyLCA3Njk2NiwgCisgICAgNzY5NzAsIDc2OTc0LCA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIDc2OTk4LCA3NzAwMiwgNzcwMDYsIAorICAgIDc3MDEwLCA3NzAxNCwgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCA3NzAzOCwgNzcwNDIsIDc3MDQ2LCAKKyAgICA3NzA1MCwgNzcwNTQsIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgNzcwNzgsIDc3MDgyLCA3NzA4NiwgCisgICAgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIDc3MTE4LCA3NzEyMiwgNzcxMjYsIAorICAgIDc3MTMwLCA3NzEzNCwgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCA3NzE1OCwgNzcxNjIsIDc3MTY2LCAKKyAgICA3NzE3MCwgNzcxNzQsIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgNzcxOTgsIDc3MjAyLCA3NzIwNiwgCisgICAgNzcyMTAsIDc3MjE0LCA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIDc3MjM4LCA3NzI0MiwgNzcyNDYsIAorICAgIDc3MjUwLCA3NzI1NCwgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCA3NzI3OCwgNzcyODIsIDc3Mjg2LCAKKyAgICA3NzI5MCwgNzcyOTQsIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgNzczMTgsIDc3MzIyLCA3NzMyNiwgCisgICAgNzczMzAsIDc3MzM0LCA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIDc3MzU4LCA3NzM2MiwgNzczNjYsIAorICAgIDc3MzcwLCA3NzM3NCwgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDc3Mzk0LCA3NzM5OCwgNzc0MDIsIDc3NDA2LCAKKyAgICA3NzQxMCwgNzc0MTQsIDc3NDE4LCA3NzQyMiwgNzc0MjYsIDc3NDMwLCA3NzQzNCwgNzc0MzgsIDc3NDQyLCA3NzQ0NiwgCisgICAgNzc0NTAsIDc3NDU0LCA3NzQ1OCwgNzc0NjIsIDc3NDY2LCA3NzQ3MCwgNzc0NzQsIDc3NDc4LCA3NzQ4MiwgNzc0ODYsIAorICAgIDc3NDkwLCA3NzQ5NCwgNzc0OTgsIDc3NTAyLCA3NzUwNiwgNzc1MTAsIDc3NTE0LCA3NzUxOCwgNzc1MjIsIDc3NTI2LCAKKyAgICA3NzUzMCwgNzc1MzQsIDc3NTM4LCA3NzU0MiwgNzc1NDYsIDc3NTUwLCA3NzU1NCwgNzc1NTgsIDc3NTYyLCA3NzU2NiwgCisgICAgNzc1NzAsIDc3NTc0LCA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTQsIDc3NTk4LCA3NzYwMiwgNzc2MDYsIAorICAgIDc3NjEwLCA3NzYxNCwgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzAsIDc3NjM0LCA3NzYzOCwgNzc2NDIsIDc3NjQ2LCAKKyAgICA3NzY1MCwgNzc2NTQsIDc3NjU4LCA3NzY2MiwgNzc2NjYsIDc3NjcwLCA3NzY3NCwgNzc2NzgsIDc3NjgyLCA3NzY4NiwgCisgICAgNzc2OTAsIDc3Njk0LCA3NzY5OCwgNzc3MDIsIDc3NzA2LCA3NzcxMCwgNzc3MTQsIDc3NzE4LCA3NzcyMiwgNzc3MjYsIAorICAgIDc3NzMwLCA3NzczNCwgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY2LCAKKyAgICA3Nzc3MCwgNzc3NzQsIDc3Nzc4LCA3Nzc4MiwgNzc3ODYsIDc3NzkwLCA3Nzc5NCwgNzc3OTgsIDc3ODAyLCA3NzgwNiwgCisgICAgNzc4MTAsIDc3ODE0LCA3NzgxOCwgNzc4MjIsIDc3ODI2LCA3NzgzMCwgNzc4MzQsIDc3ODM4LCA3Nzg0MiwgNzc4NDYsIAorICAgIDc3ODUwLCAwLCAwLCA3Nzg1NCwgNzc4NTgsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc0LCA3Nzg3OCwgNzc4ODIsIAorICAgIDc3ODg2LCA3Nzg5MCwgNzc4OTQsIDc3ODk4LCA3NzkwMiwgNzc5MDYsIDc3OTEwLCA3NzkxNCwgNzc5MTgsIDc3OTIyLCAKKyAgICA3NzkyNiwgNzc5MzAsIDc3OTM0LCA3NzkzOCwgNzc5NDIsIDc3OTQ2LCA3Nzk1MCwgNzc5NTQsIDc3OTU4LCA3Nzk2MiwgCisgICAgNzc5NjYsIDc3OTcwLCA3Nzk3NCwgNzc5NzgsIDc3OTgyLCA3Nzk4NiwgNzc5OTAsIDc3OTk0LCA3Nzk5OCwgNzgwMDIsIAorICAgIDc4MDA2LCA3ODAxMCwgNzgwMTQsIDc4MDE4LCA3ODAyMiwgNzgwMjYsIDc4MDMwLCA3ODAzNCwgNzgwMzgsIDc4MDQyLCAKKyAgICA3ODA0NiwgNzgwNTAsIDc4MDU0LCA3ODA1OCwgNzgwNjIsIDc4MDY2LCA3ODA3MCwgNzgwNzQsIDc4MDc4LCA3ODA4MiwgCisgICAgNzgwODYsIDc4MDkwLCA3ODA5NCwgNzgwOTgsIDc4MTAyLCA3ODEwNiwgNzgxMTAsIDc4MTE0LCA3ODExOCwgNzgxMjIsIAorICAgIDc4MTI2LCA3ODEzMCwgNzgxMzQsIDc4MTM4LCA3ODE0MiwgNzgxNDYsIDc4MTUwLCA3ODE1NCwgNzgxNTgsIDc4MTYyLCAKKyAgICA3ODE2NiwgNzgxNzAsIDc4MTc0LCA3ODE3OCwgNzgxODIsIDc4MTg2LCA3ODE5MCwgNzgxOTQsIDc4MTk4LCA3ODIwMiwgCisgICAgNzgyMDYsIDc4MjEwLCA3ODIxNCwgNzgyMTgsIDc4MjIyLCA3ODIyNiwgNzgyMzAsIDc4MjM0LCA3ODIzOCwgNzgyNDIsIAorICAgIDc4MjQ2LCA3ODI1MCwgNzgyNTQsIDc4MjU4LCA3ODI2MiwgNzgyNjYsIDc4MjcwLCA3ODI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzUyMjYsIDc1MjMwLCA3NTIzNCwgNzUyMzgsIDc1MjQyLCA3NTI0NiwgNzUyNTAsIDc1MjU0LCAKLSAgICA3NTI1OCwgNzUyNjIsIDc1MjY2LCA3NTI3MCwgNzUyNzQsIDc1Mjc4LCA3NTI4MiwgNzUyODYsIDc1MjkwLCA3NTI5NCwgCi0gICAgNzUyOTgsIDc1MzAyLCA3NTMwNiwgNzUzMTAsIDc1MzE0LCAwLCAwLCAwLCAwLCA3NTMxOCwgNzUzMjIsIDc1MzI2LCAKLSAgICA3NTMzMCwgNzUzMzQsIDc1MzM4LCA3NTM0MiwgNzUzNDYsIDc1MzUwLCA3NTM1NCwgNzUzNTgsIDc1MzYyLCA3NTM2NiwgCi0gICAgNzUzNzAsIDc1Mzc0LCA3NTM3OCwgNzUzODIsIDc1Mzg2LCA3NTM5MCwgNzUzOTQsIDc1Mzk4LCA3NTQwMiwgNzU0MDYsIAotICAgIDc1NDEwLCA3NTQxNCwgNzU0MTgsIDc1NDIyLCA3NTQyNiwgNzU0MzAsIDc1NDM0LCA3NTQzOCwgNzU0NDIsIDc1NDQ2LCAKLSAgICA3NTQ1MCwgNzU0NTQsIDc1NDU4LCA3NTQ2MiwgNzU0NjYsIDc1NDcwLCA3NTQ3NCwgNzU0NzgsIDc1NDgyLCA3NTQ4NiwgCi0gICAgNzU0OTAsIDc1NDk0LCA3NTQ5OCwgNzU1MDIsIDc1NTA2LCA3NTUxMCwgMCwgMCwgMCwgMCwgNzU1MTQsIDc1NTE4LCAKLSAgICA3NTUyMiwgNzU1MjYsIDc1NTMwLCA3NTUzNCwgNzU1MzgsIDc1NTQyLCA3NTU0NiwgNzU1NTAsIDc1NTU0LCA3NTU1OCwgCi0gICAgNzU1NjIsIDc1NTY2LCA3NTU3MCwgNzU1NzQsIDc1NTc4LCA3NTU4MiwgNzU1ODYsIDc1NTkwLCA3NTU5NCwgNzU1OTgsIAotICAgIDc1NjAyLCA3NTYwNiwgNzU2MTAsIDc1NjE0LCA3NTYxOCwgNzU2MjIsIDc1NjI2LCA3NTYzMCwgNzU2MzQsIDc1NjM4LCAKLSAgICA3NTY0MiwgNzU2NDYsIDc1NjUwLCA3NTY1NCwgNzU2NTgsIDc1NjYyLCA3NTY2NiwgNzU2NzAsIDc1Njc0LCA3NTY3OCwgCi0gICAgNzU2ODIsIDc1Njg2LCA3NTY5MCwgNzU2OTQsIDc1Njk4LCA3NTcwMiwgNzU3MDYsIDc1NzEwLCA3NTcxNCwgNzU3MTgsIAotICAgIDc1NzIyLCA3NTcyNiwgNzU3MzAsIDc1NzM0LCA3NTczOCwgNzU3NDIsIDc1NzQ2LCA3NTc1MCwgNzU3NTQsIDc1NzU4LCAKLSAgICA3NTc2MiwgNzU3NjYsIDc1NzcwLCA3NTc3NCwgNzU3NzgsIDc1NzgyLCA3NTc4NiwgNzU3OTAsIDc1Nzk0LCA3NTc5OCwgCi0gICAgNzU4MDIsIDc1ODA2LCA3NTgxMCwgNzU4MTQsIDc1ODE4LCA3NTgyMiwgNzU4MjYsIDc1ODMwLCA3NTgzNCwgNzU4MzgsIAotICAgIDc1ODQyLCA3NTg0NiwgNzU4NTAsIDc1ODU0LCA3NTg1OCwgNzU4NjIsIDc1ODY2LCA3NTg3MCwgNzU4NzQsIDc1ODc4LCAKLSAgICA3NTg4MiwgNzU4ODYsIDc1ODkwLCA3NTg5NCwgNzU4OTgsIDc1OTAyLCA3NTkwNiwgNzU5MTAsIDc1OTE0LCA3NTkxOCwgCi0gICAgNzU5MjIsIDc1OTI2LCA3NTkzMCwgNzU5MzQsIDc1OTM4LCA3NTk0MiwgNzU5NDYsIDc1OTUwLCA3NTk1NCwgNzU5NTgsIAotICAgIDc1OTYyLCA3NTk2NiwgNzU5NzAsIDc1OTc0LCA3NTk3OCwgNzU5ODIsIDc1OTg2LCA3NTk5MCwgNzU5OTQsIDc1OTk4LCAKLSAgICA3NjAwMiwgNzYwMDYsIDc2MDEwLCA3NjAxNCwgNzYwMTgsIDc2MDIyLCA3NjAyNiwgNzYwMzAsIDc2MDM0LCA3NjAzOCwgCi0gICAgNzYwNDIsIDc2MDQ2LCA3NjA1MCwgNzYwNTQsIDc2MDU4LCA3NjA2MiwgNzYwNjYsIDc2MDcwLCA3NjA3NCwgNzYwNzgsIAotICAgIDc2MDgyLCA3NjA4NiwgNzYwOTAsIDc2MDk0LCA3NjA5OCwgNzYxMDIsIDc2MTA2LCA3NjExMCwgNzYxMTQsIDc2MTE4LCAKLSAgICA3NjEyMiwgNzYxMjYsIDc2MTMwLCA3NjEzNCwgNzYxMzgsIDc2MTQyLCA3NjE0NiwgNzYxNTAsIDc2MTU0LCA3NjE1OCwgCi0gICAgNzYxNjIsIDc2MTY2LCA3NjE3MCwgNzYxNzQsIDc2MTc4LCA3NjE4MiwgNzYxODYsIDc2MTkwLCA3NjE5NCwgNzYxOTgsIAotICAgIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCA3NjIxOCwgNzYyMjIsIDc2MjI2LCA3NjIzMCwgNzYyMzQsIDc2MjM4LCAKLSAgICA3NjI0MiwgNzYyNDYsIDc2MjUwLCA3NjI1NCwgNzYyNTgsIDc2MjYyLCA3NjI2NiwgNzYyNzAsIDc2Mjc0LCA3NjI3OCwgCi0gICAgNzYyODIsIDc2Mjg2LCA3NjI5MCwgNzYyOTQsIDc2Mjk4LCA3NjMwMiwgNzYzMDYsIDc2MzEwLCA3NjMxNCwgNzYzMTgsIAotICAgIDc2MzIyLCA3NjMyNiwgNzYzMzAsIDc2MzM0LCA3NjMzOCwgNzYzNDIsIDc2MzQ2LCA3NjM1MCwgNzYzNTQsIDc2MzU4LCAKLSAgICA3NjM2MiwgNzYzNjYsIDc2MzcwLCA3NjM3NCwgNzYzNzgsIDc2MzgyLCA3NjM4NiwgNzYzOTAsIDc2Mzk0LCA3NjM5OCwgCi0gICAgNzY0MDIsIDc2NDA2LCA3NjQxMCwgNzY0MTQsIDc2NDE4LCA3NjQyMiwgNzY0MjYsIDc2NDMwLCA3NjQzNCwgNzY0MzgsIAotICAgIDc2NDQyLCA3NjQ0NiwgNzY0NTAsIDc2NDU0LCA3NjQ1OCwgNzY0NjIsIDc2NDY2LCA3NjQ3MCwgNzY0NzQsIDc2NDc4LCAKLSAgICA3NjQ4MiwgNzY0ODYsIDc2NDkwLCA3NjQ5NCwgNzY0OTgsIDc2NTAyLCA3NjUwNiwgNzY1MTAsIDc2NTE0LCA3NjUxOCwgCi0gICAgNzY1MjIsIDc2NTI2LCA3NjUzMCwgNzY1MzQsIDc2NTM4LCA3NjU0MiwgNzY1NDYsIDc2NTUwLCA3NjU1NCwgNzY1NTgsIAotICAgIDc2NTYyLCA3NjU2NiwgNzY1NzAsIDc2NTc0LCA3NjU3OCwgNzY1ODIsIDc2NTg2LCA3NjU5MCwgNzY1OTQsIDc2NTk4LCAKLSAgICA3NjYwMiwgNzY2MDYsIDc2NjEwLCA3NjYxNCwgNzY2MTgsIDc2NjIyLCA3NjYyNiwgNzY2MzAsIDc2NjM0LCA3NjYzOCwgCi0gICAgNzY2NDIsIDc2NjQ2LCA3NjY1MCwgNzY2NTQsIDc2NjU4LCA3NjY2MiwgNzY2NjYsIDc2NjcwLCA3NjY3NCwgNzY2NzgsIAotICAgIDc2NjgyLCA3NjY4NiwgNzY2OTAsIDc2Njk0LCA3NjY5OCwgNzY3MDIsIDc2NzA2LCA3NjcxMCwgNzY3MTQsIDc2NzE4LCAwLCAKLSAgICAwLCA3NjcyMiwgNzY3MjYsIDc2NzMwLCA3NjczNCwgNzY3MzgsIDc2NzQyLCA3Njc0NiwgNzY3NTAsIDc2NzU0LCA3Njc1OCwgCi0gICAgNzY3NjIsIDc2NzY2LCA3Njc3MCwgNzY3NzQsIDc2Nzc4LCA3Njc4MiwgNzY3ODYsIDc2NzkwLCA3Njc5NCwgNzY3OTgsIAotICAgIDc2ODAyLCA3NjgwNiwgNzY4MTAsIDc2ODE0LCA3NjgxOCwgNzY4MjIsIDc2ODI2LCA3NjgzMCwgNzY4MzQsIDc2ODM4LCAKLSAgICA3Njg0MiwgNzY4NDYsIDc2ODUwLCA3Njg1NCwgNzY4NTgsIDc2ODYyLCA3Njg2NiwgNzY4NzAsIDc2ODc0LCA3Njg3OCwgCi0gICAgNzY4ODIsIDc2ODg2LCA3Njg5MCwgNzY4OTQsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIAotICAgIDc2OTIyLCA3NjkyNiwgNzY5MzAsIDc2OTM0LCA3NjkzOCwgNzY5NDIsIDc2OTQ2LCA3Njk1MCwgNzY5NTQsIDc2OTU4LCAKLSAgICA3Njk2MiwgNzY5NjYsIDAsIDAsIDc2OTcwLCA3Njk3NCwgNzY5NzgsIDc2OTgyLCA3Njk4NiwgNzY5OTAsIDc2OTk0LCAKLSAgICA3Njk5OCwgNzcwMDIsIDc3MDA2LCA3NzAxMCwgNzcwMTQsIDc3MDE4LCA3NzAyMiwgNzcwMjYsIDc3MDMwLCA3NzAzNCwgCi0gICAgNzcwMzgsIDc3MDQyLCA3NzA0NiwgNzcwNTAsIDc3MDU0LCA3NzA1OCwgNzcwNjIsIDc3MDY2LCA3NzA3MCwgNzcwNzQsIAotICAgIDc3MDc4LCA3NzA4MiwgNzcwODYsIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAyLCA3NzEwNiwgNzcxMTAsIDc3MTE0LCAKLSAgICA3NzExOCwgNzcxMjIsIDc3MTI2LCA3NzEzMCwgNzcxMzQsIDc3MTM4LCA3NzE0MiwgNzcxNDYsIDc3MTUwLCA3NzE1NCwgCi0gICAgNzcxNTgsIDc3MTYyLCA3NzE2NiwgNzcxNzAsIDc3MTc0LCA3NzE3OCwgNzcxODIsIDc3MTg2LCA3NzE5MCwgNzcxOTQsIAotICAgIDc3MTk4LCA3NzIwMiwgNzcyMDYsIDc3MjEwLCA3NzIxNCwgNzcyMTgsIDc3MjIyLCA3NzIyNiwgNzcyMzAsIDc3MjM0LCAKLSAgICA3NzIzOCwgNzcyNDIsIDc3MjQ2LCA3NzI1MCwgNzcyNTQsIDc3MjU4LCA3NzI2MiwgNzcyNjYsIDc3MjcwLCA3NzI3NCwgCi0gICAgNzcyNzgsIDc3MjgyLCA3NzI4NiwgNzcyOTAsIDc3Mjk0LCA3NzI5OCwgNzczMDIsIDc3MzA2LCA3NzMxMCwgNzczMTQsIAotICAgIDc3MzE4LCA3NzMyMiwgNzczMjYsIDc3MzMwLCA3NzMzNCwgNzczMzgsIDc3MzQyLCA3NzM0NiwgNzczNTAsIDc3MzU0LCAKLSAgICA3NzM1OCwgNzczNjIsIDc3MzY2LCA3NzM3MCwgNzczNzQsIDc3Mzc4LCA3NzM4MiwgNzczODYsIDc3MzkwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODI3OCwgNzgyODMsIDc4Mjg4LCA3ODI5MywgNzgyOTgsIDc4MzAzLCA3ODMxMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgzMTYsIDc4MzIzLCA3ODMzMCwgNzgzMzcsIDc4MzQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3ODM1MSwgNzgzNTgsIDc4MzY1LCA3ODM3NSwgNzgzODEsIDc4Mzg3LCA3ODM5MywgNzgzOTksIAorICAgIDc4NDA1LCA3ODQxMSwgNzg0MTgsIDc4NDI0LCA3ODQzMCwgNzg0MzYsIDc4NDQ1LCA3ODQ1NCwgNzg0NjYsIDc4NDc4LCAKKyAgICA3ODQ4NCwgNzg0OTAsIDc4NDk2LCA3ODUwMywgNzg1MTAsIDc4NTE3LCA3ODUyNCwgNzg1MzEsIDAsIDc4NTM4LCA3ODU0NSwgCisgICAgNzg1NTIsIDc4NTYwLCA3ODU2NywgMCwgNzg1NzQsIDAsIDc4NTgxLCA3ODU4OCwgMCwgNzg1OTUsIDc4NjAzLCAwLCAKKyAgICA3ODYxMCwgNzg2MTcsIDc4NjI0LCA3ODYzMSwgNzg2MzgsIDc4NjQ1LCA3ODY1MiwgNzg2NTksIDc4NjY2LCA3ODY3MywgCisgICAgNzg2NzgsIDc4Njg1LCA3ODY5MiwgNzg2OTgsIDc4NzA0LCA3ODcxMCwgNzg3MTYsIDc4NzIyLCA3ODcyOCwgNzg3MzQsIAorICAgIDc4NzQwLCA3ODc0NiwgNzg3NTIsIDc4NzU4LCA3ODc2NCwgNzg3NzAsIDc4Nzc2LCA3ODc4MiwgNzg3ODgsIDc4Nzk0LCAKKyAgICA3ODgwMCwgNzg4MDYsIDc4ODEyLCA3ODgxOCwgNzg4MjQsIDc4ODMwLCA3ODgzNiwgNzg4NDIsIDc4ODQ4LCA3ODg1NCwgCisgICAgNzg4NjAsIDc4ODY2LCA3ODg3MiwgNzg4NzgsIDc4ODg0LCA3ODg5MCwgNzg4OTYsIDc4OTAyLCA3ODkwOCwgNzg5MTQsIAorICAgIDc4OTIwLCA3ODkyNiwgNzg5MzIsIDc4OTM4LCA3ODk0NCwgNzg5NTAsIDc4OTU2LCA3ODk2MiwgNzg5NjgsIDc4OTc0LCAKKyAgICA3ODk4MCwgNzg5ODYsIDc4OTkyLCA3ODk5OCwgNzkwMDQsIDc5MDEwLCA3OTAxNiwgNzkwMjIsIDc5MDI4LCA3OTAzNCwgCisgICAgNzkwNDAsIDc5MDQ2LCA3OTA1MiwgNzkwNTgsIDc5MDY0LCA3OTA3MCwgNzkwNzYsIDc5MDgyLCA3OTA4OCwgNzkwOTQsIAorICAgIDc5MTAwLCA3OTEwNiwgNzkxMTIsIDc5MTE4LCA3OTEyNCwgNzkxMzAsIDc5MTM2LCA3OTE0MiwgNzkxNDgsIDc5MTU2LCAKKyAgICA3OTE2NCwgNzkxNzAsIDc5MTc2LCA3OTE4MiwgNzkxODgsIDc5MTk3LCA3OTIwNiwgNzkyMTQsIDc5MjIyLCA3OTIzMCwgCisgICAgNzkyMzgsIDc5MjQ2LCA3OTI1NCwgNzkyNjIsIDc5MjcwLCA3OTI3NywgNzkyODQsIDc5Mjk0LCA3OTMwNCwgNzkzMDgsIAorICAgIDc5MzEyLCA3OTMxNywgNzkzMjIsIDc5MzI3LCA3OTMzMiwgNzkzNDEsIDc5MzUwLCA3OTM1NiwgNzkzNjIsIDc5MzY5LCAKKyAgICA3OTM3NiwgNzkzODMsIDc5Mzg3LCA3OTM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzkzOTksIDc5NDA1LCA3OTQxMSwgNzk0MTcsIDc5NDIzLCA3OTQyOCwgNzk0MzMsIDc5NDM5LCA3OTQ0NSwgCisgICAgNzk0NTEsIDc5NDU3LCA3OTQ2NSwgNzk0NzEsIDc5NDc3LCA3OTQ4NSwgNzk0OTMsIDc5NTAxLCA3OTUwOSwgNzk1MTQsIAorICAgIDc5NTE5LCA3OTUyNCwgNzk1MjksIDc5NTQyLCA3OTU1NSwgNzk1NjUsIDc5NTc1LCA3OTU4NiwgNzk1OTcsIDc5NjA4LCAKKyAgICA3OTYxOSwgNzk2MjksIDc5NjM5LCA3OTY1MCwgNzk2NjEsIDc5NjcyLCA3OTY4MywgNzk2OTMsIDc5NzAzLCA3OTcxMywgCisgICAgNzk3MjksIDc5NzQ1LCA3OTc2MSwgNzk3NjgsIDc5Nzc1LCA3OTc4MiwgNzk3ODksIDc5Nzk5LCA3OTgwOSwgNzk4MTksIAorICAgIDc5ODMxLCA3OTg0MSwgNzk4NDksIDc5ODU3LCA3OTg2NiwgNzk4NzQsIDc5ODg0LCA3OTg5MiwgNzk5MDAsIDc5OTA4LCAKKyAgICA3OTkxNywgNzk5MjUsIDc5OTM1LCA3OTk0MywgNzk5NTEsIDc5OTU5LCA3OTk2OSwgNzk5NzcsIDc5OTg0LCA3OTk5MSwgCisgICAgNzk5OTgsIDgwMDA1LCA4MDAxMywgODAwMjEsIDgwMDI5LCA4MDAzNywgODAwNDUsIDgwMDU0LCA4MDA2MiwgODAwNzAsIAorICAgIDgwMDc4LCA4MDA4NiwgODAwOTQsIDgwMTAzLCA4MDExMSwgODAxMTksIDgwMTI3LCA4MDEzNSwgODAxNDMsIDgwMTUxLCAKKyAgICA4MDE1OSwgODAxNjcsIDgwMTc1LCA4MDE4MywgODAxOTIsIDgwMjAwLCA4MDIxMCwgODAyMTgsIDgwMjI2LCA4MDIzNCwgCisgICAgODAyNDQsIDgwMjUyLCA4MDI2MCwgODAyNjgsIDgwMjc2LCA4MDI4NSwgODAyOTQsIDgwMzAyLCA4MDMxMiwgODAzMjAsIAorICAgIDgwMzI4LCA4MDMzNiwgODAzNDUsIDgwMzUzLCA4MDM2MywgODAzNzEsIDgwMzc4LCA4MDM4NSwgODAzOTMsIDgwNDAwLCAKKyAgICA4MDQwOSwgODA0MTYsIDgwNDI0LCA4MDQzMiwgODA0NDEsIDgwNDQ5LCA4MDQ1OSwgODA0NjcsIDgwNDc1LCA4MDQ4MywgCisgICAgODA0OTMsIDgwNTAxLCA4MDUwOCwgODA1MTUsIDgwNTIzLCA4MDUzMCwgODA1MzksIDgwNTQ2LCA4MDU1NiwgODA1NjYsIAorICAgIDgwNTc3LCA4MDU4NiwgODA1OTUsIDgwNjA0LCA4MDYxMywgODA2MjIsIDgwNjMyLCA4MDY0MywgODA2NTQsIDgwNjY0LCAKKyAgICA4MDY3NSwgODA2ODcsIDgwNjk3LCA4MDcwNiwgODA3MTUsIDgwNzIzLCA4MDczMiwgODA3NDIsIDgwNzUwLCA4MDc1OSwgCisgICAgODA3NjgsIDgwNzc2LCA4MDc4NSwgODA3OTUsIDgwODAzLCA4MDgxMiwgODA4MjEsIDgwODI5LCA4MDgzOCwgODA4NDgsIAorICAgIDgwODU2LCA4MDg2NiwgODA4NzQsIDgwODg0LCA4MDg5MiwgODA5MDAsIDgwOTA5LCA4MDkxNywgODA5MjcsIDgwOTM1LCAKKyAgICA4MDk0MywgODA5NTMsIDgwOTYxLCA4MDk2OCwgODA5NzUsIDgwOTg0LCA4MDk5MywgODEwMDEsIDgxMDEwLCA4MTAyMCwgCisgICAgODEwMjgsIDgxMDM5LCA4MTA0NywgODEwNTUsIDgxMDYyLCA4MTA3MCwgODEwNzksIDgxMDg2LCA4MTA5NiwgODExMDYsIAorICAgIDgxMTE3LCA4MTEyNywgODExMzgsIDgxMTQ2LCA4MTE1NCwgODExNjMsIDgxMTcxLCA4MTE4MCwgODExODgsIDgxMTk2LCAKKyAgICA4MTIwNSwgODEyMTMsIDgxMjIyLCA4MTIzMCwgODEyMzcsIDgxMjQ0LCA4MTI1MSwgODEyNTgsIDgxMjY2LCA4MTI3NCwgCisgICAgODEyODIsIDgxMjkwLCA4MTI5OSwgODEzMDcsIDgxMzE1LCA4MTMyNCwgODEzMzIsIDgxMzQwLCA4MTM0OCwgODEzNTcsIAorICAgIDgxMzY1LCA4MTM3MywgODEzODEsIDgxMzg5LCA4MTM5NywgODE0MDUsIDgxNDEzLCA4MTQyMSwgODE0MjksIDgxNDM4LCAKKyAgICA4MTQ0NiwgODE0NTQsIDgxNDYyLCA4MTQ3MCwgODE0NzgsIDgxNDg3LCA4MTQ5NiwgODE1MDQsIDgxNTEyLCA4MTUyMCwgCisgICAgODE1MjksIDgxNTM3LCA4MTU0NiwgODE1NTMsIDgxNTYwLCA4MTU2OCwgODE1NzUsIDgxNTgzLCA4MTU5MSwgODE2MDAsIAorICAgIDgxNjA4LCA4MTYxNywgODE2MjUsIDgxNjMzLCA4MTY0MywgODE2NTAsIDgxNjU3LCA4MTY2NSwgODE2NzIsIDgxNjgwLCAKKyAgICA4MTY5MCwgODE3MDEsIDgxNzA5LCA4MTcxOCwgODE3MjYsIDgxNzM1LCA4MTc0MywgODE3NTIsIDgxNzYwLCA4MTc2OSwgCisgICAgODE3NzcsIDgxNzg2LCA4MTc5NSwgODE4MDMsIDgxODExLCA4MTgxOSwgODE4MjgsIDgxODM1LCA4MTg0MywgODE4NTIsIAorICAgIDgxODYxLCA4MTg3MCwgODE4ODAsIDgxODg4LCA4MTg5OCwgODE5MDYsIDgxOTE2LCA4MTkyNCwgODE5MzQsIDgxOTQyLCAKKyAgICA4MTk1MiwgODE5NjAsIDgxOTY5LCA4MTk3NiwgODE5ODUsIDgxOTkyLCA4MjAwMiwgODIwMTAsIDgyMDIwLCA4MjAyOCwgCisgICAgODIwMzgsIDgyMDQ2LCA4MjA1NCwgODIwNjIsIDgyMDcxLCA4MjA3OSwgODIwODgsIDgyMDk3LCA4MjEwNiwgODIxMTUsIAorICAgIDgyMTI1LCA4MjEzMywgODIxNDMsIDgyMTUxLCA4MjE2MSwgODIxNjksIDgyMTc5LCA4MjE4NywgODIxOTcsIDgyMjA1LCAKKyAgICA4MjIxNCwgODIyMjEsIDgyMjMwLCA4MjIzNywgODIyNDcsIDgyMjU1LCA4MjI2NSwgODIyNzMsIDgyMjgzLCA4MjI5MSwgCisgICAgODIyOTksIDgyMzA3LCA4MjMxNiwgODIzMjQsIDgyMzMzLCA4MjM0MiwgODIzNTEsIDgyMzYwLCA4MjM2OCwgODIzNzYsIAorICAgIDgyMzg1LCA4MjM5MywgODI0MDIsIDgyNDExLCA4MjQxOSwgODI0MjcsIDgyNDM1LCA4MjQ0NCwgODI0NTIsIDgyNDYwLCAKKyAgICA4MjQ2OSwgODI0NzcsIDgyNDg1LCA4MjQ5MywgODI1MDEsIDgyNTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MjUxMSwgODI1MjEsIDgyNTMxLCA4MjU0MSwgODI1NTEsIDgyNTYyLCA4MjU3MiwgODI1ODIsIAorICAgIDgyNTkzLCA4MjYwMiwgODI2MTEsIDgyNjIwLCA4MjYzMSwgODI2NDEsIDgyNjUxLCA4MjY2MywgODI2NzMsIDgyNjgzLCAKKyAgICA4MjY5MywgODI3MDMsIDgyNzEzLCA4MjcyMywgODI3MzMsIDgyNzQzLCA4Mjc1MywgODI3NjMsIDgyNzczLCA4Mjc4NCwgCisgICAgODI3OTUsIDgyODA1LCA4MjgxNSwgODI4MjcsIDgyODM4LCA4Mjg0OSwgODI4NTksIDgyODY5LCA4Mjg3OSwgODI4ODksIAorICAgIDgyODk5LCA4MjkwOSwgODI5MTksIDgyOTMxLCA4Mjk0MSwgODI5NTEsIDgyOTYzLCA4Mjk3NCwgODI5ODUsIDgyOTk1LCAKKyAgICA4MzAwNSwgODMwMTUsIDgzMDI1LCA4MzAzNywgODMwNDcsIDgzMDU3LCA4MzA2OCwgODMwNzksIDgzMDg5LCA4MzA5OSwgCisgICAgODMxMDgsIDgzMTE3LCA4MzEyNiwgODMxMzUsIDgzMTQ0LCA4MzE1NCwgMCwgMCwgODMxNjQsIDgzMTc0LCA4MzE4NCwgCisgICAgODMxOTQsIDgzMjA0LCA4MzIxNiwgODMyMjYsIDgzMjM2LCA4MzI0OCwgODMyNTgsIDgzMjcwLCA4MzI3OSwgODMyODgsIAorICAgIDgzMjk5LCA4MzMwOSwgODMzMjEsIDgzMzMyLCA4MzM0NSwgODMzNTUsIDgzMzY3LCA4MzM3NiwgODMzODcsIDgzMzk4LCAKKyAgICA4MzQxMSwgODM0MjEsIDgzNDMxLCA4MzQ0MSwgODM0NTEsIDgzNDYxLCA4MzQ3MCwgODM0NzksIDgzNDg4LCA4MzQ5NywgCisgICAgODM1MDcsIDgzNTE3LCA4MzUyNywgODM1MzcsIDgzNTQ3LCA4MzU1NywgODM1NjcsIDgzNTc3LCA4MzU4NywgODM1OTcsIAorICAgIDgzNjA3LCA4MzYxNywgODM2MjYsIDgzNjM1LCA4MzY0NCwgODM2NTQsIDgzNjY0LCA4MzY3NCwgODM2ODQsIDgzNjk0LCAKKyAgICA4MzcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODM3MTUsIDgzNzMwLCAKKyAgICA4Mzc0NSwgODM3NTEsIDgzNzU3LCA4Mzc2MywgODM3NjksIDgzNzc1LCA4Mzc4MSwgODM3ODcsIDgzNzkzLCA4MzgwMSwgCisgICAgODM4MDUsIDgzODA4LCAwLCAwLCA4MzgxNiwgODM4MTksIDgzODIyLCA4MzgyNSwgODM4MjgsIDgzODMxLCA4MzgzNCwgCisgICAgODM4MzcsIDgzODQwLCA4Mzg0MywgODM4NDYsIDgzODQ5LCA4Mzg1MiwgODM4NTUsIDgzODU4LCA4Mzg2MSwgODM4NjQsIAorICAgIDgzODcyLCA4Mzg4MSwgODM4OTIsIDgzOTAwLCA4MzkwOCwgODM5MTcsIDgzOTI2LCA4MzkzNywgODM5NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTc1LCA4Mzk4MiwgODM5ODgsIDgzOTk0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4Mzk5OSwgODQwMDksIDg0MDE5LCA4NDAyOSwgODQwMzgsIDg0MDQ5LCA4NDA1OCwgODQwNjcsIAorICAgIDg0MDc3LCA4NDA4NywgODQwOTksIDg0MTExLCA4NDEyMiwgODQxMzMsIDg0MTQ0LCA4NDE1NSwgODQxNjUsIDg0MTc1LCAKKyAgICA4NDE4NSwgODQxOTUsIDg0MjA2LCA4NDIxNywgODQyMjEsIDg0MjI2LCA4NDIzNSwgODQyNDQsIDg0MjQ4LCA4NDI1MiwgCisgICAgODQyNTYsIDg0MjYxLCA4NDI2NiwgODQyNzEsIDg0Mjc2LCA4NDI3OSwgODQyODMsIDAsIDg0Mjg4LCA4NDI5MSwgODQyOTQsIAorICAgIDg0Mjk4LCA4NDMwMiwgODQzMDcsIDg0MzExLCA4NDMxNSwgODQzMjAsIDg0MzI1LCA4NDMzMiwgODQzMzksIDg0MzQyLCAKKyAgICA4NDM0NSwgODQzNDgsIDg0MzUxLCA4NDM1NCwgODQzNTgsIDg0MzYyLCAwLCA4NDM2NiwgODQzNzEsIDg0Mzc1LCA4NDM3OSwgCisgICAgMCwgMCwgMCwgMCwgODQzODQsIDg0Mzg5LCA4NDM5NiwgODQ0MDEsIDg0NDA2LCAwLCA4NDQxMSwgODQ0MTYsIDg0NDIxLCAKKyAgICA4NDQyNiwgODQ0MzEsIDg0NDM2LCA4NDQ0MSwgODQ0NDYsIDg0NDUxLCA4NDQ1NiwgODQ0NjEsIDg0NDY2LCA4NDQ3NSwgCisgICAgODQ0ODQsIDg0NDkyLCA4NDUwMCwgODQ1MDksIDg0NTE4LCA4NDUyNywgODQ1MzYsIDg0NTQ0LCA4NDU1MiwgODQ1NjAsIAorICAgIDg0NTY4LCA4NDU3MywgODQ1NzgsIDg0NTg0LCA4NDU5MCwgODQ1OTYsIDg0NjAyLCA4NDYxMCwgODQ2MTgsIDg0NjI0LCAKKyAgICA4NDYzMCwgODQ2MzYsIDg0NjQyLCA4NDY0OCwgODQ2NTQsIDg0NjYwLCA4NDY2NiwgODQ2NzEsIDg0Njc2LCA4NDY4MSwgCisgICAgODQ2ODYsIDg0NjkxLCA4NDY5NiwgODQ3MDEsIDg0NzA2LCA4NDcxMiwgODQ3MTgsIDg0NzI0LCA4NDczMCwgODQ3MzYsIAorICAgIDg0NzQyLCA4NDc0OCwgODQ3NTQsIDg0NzYwLCA4NDc2NiwgODQ3NzIsIDg0Nzc4LCA4NDc4NCwgODQ3OTAsIDg0Nzk2LCAKKyAgICA4NDgwMiwgODQ4MDgsIDg0ODE0LCA4NDgyMCwgODQ4MjYsIDg0ODMyLCA4NDgzOCwgODQ4NDQsIDg0ODUwLCA4NDg1NiwgCisgICAgODQ4NjIsIDg0ODY4LCA4NDg3NCwgODQ4ODAsIDg0ODg2LCA4NDg5MiwgODQ4OTgsIDg0OTA0LCA4NDkxMCwgODQ5MTYsIAorICAgIDg0OTIyLCA4NDkyOCwgODQ5MzQsIDg0OTQwLCA4NDk0NiwgODQ5NTIsIDg0OTU4LCA4NDk2NCwgODQ5NzAsIDg0OTc2LCAKKyAgICA4NDk4MiwgODQ5ODgsIDg0OTk0LCA4NTAwMCwgODUwMDYsIDg1MDEyLCA4NTAxOCwgODUwMjQsIDg1MDMwLCA4NTAzNiwgCisgICAgODUwNDIsIDg1MDQ4LCA4NTA1NCwgODUwNjAsIDg1MDY2LCA4NTA3MSwgODUwNzYsIDg1MDgxLCA4NTA4NiwgODUwOTIsIAorICAgIDg1MDk4LCA4NTEwNCwgODUxMTAsIDg1MTE2LCA4NTEyMiwgODUxMjgsIDg1MTM0LCA4NTE0MCwgODUxNDYsIDg1MTUzLCAKKyAgICA4NTE2MCwgODUxNjUsIDg1MTcwLCA4NTE3NSwgODUxODAsIDg1MTkyLCA4NTIwNCwgODUyMTUsIDg1MjI2LCA4NTIzOCwgCisgICAgODUyNTAsIDg1MjU4LCAwLCAwLCA4NTI2NiwgMCwgODUyNzQsIDg1Mjc4LCA4NTI4MiwgODUyODUsIDg1Mjg5LCA4NTI5MywgCisgICAgODUyOTYsIDg1Mjk5LCA4NTMwMywgODUzMDcsIDg1MzEwLCA4NTMxMywgODUzMTYsIDg1MzE5LCA4NTMyNCwgODUzMjcsIAorICAgIDg1MzMxLCA4NTMzNCwgODUzMzcsIDg1MzQwLCA4NTM0MywgODUzNDYsIDg1MzQ5LCA4NTM1MiwgODUzNTUsIDg1MzU4LCAKKyAgICA4NTM2MSwgODUzNjQsIDg1MzY4LCA4NTM3MiwgODUzNzYsIDg1MzgwLCA4NTM4NSwgODUzOTAsIDg1Mzk2LCA4NTQwMiwgCisgICAgODU0MDgsIDg1NDEzLCA4NTQxOSwgODU0MjUsIDg1NDMxLCA4NTQzNiwgODU0NDIsIDg1NDQ4LCA4NTQ1MywgODU0NTgsIAorICAgIDg1NDY0LCA4NTQ2OSwgODU0NzUsIDg1NDgxLCA4NTQ4NiwgODU0OTIsIDg1NDk4LCA4NTUwMywgODU1MDksIDg1NTE1LCAKKyAgICA4NTUyMSwgODU1MjcsIDg1NTMzLCA4NTUzNywgODU1NDIsIDg1NTQ2LCA4NTU1MSwgODU1NTUsIDg1NTYwLCA4NTU2NSwgCisgICAgODU1NzEsIDg1NTc3LCA4NTU4MywgODU1ODgsIDg1NTk0LCA4NTYwMCwgODU2MDYsIDg1NjExLCA4NTYxNywgODU2MjMsIAorICAgIDg1NjI4LCA4NTYzMywgODU2MzksIDg1NjQ0LCA4NTY1MCwgODU2NTYsIDg1NjYxLCA4NTY2NywgODU2NzMsIDg1Njc4LCAKKyAgICA4NTY4NCwgODU2OTAsIDg1Njk2LCA4NTcwMiwgODU3MDgsIDg1NzEzLCA4NTcxNywgODU3MjIsIDg1NzI0LCA4NTcyOSwgCisgICAgODU3MzQsIDg1NzQwLCA4NTc0NSwgODU3NTAsIDg1NzU0LCA4NTc2MCwgODU3NjUsIDg1NzcwLCA4NTc3NSwgODU3ODAsIAorICAgIDg1Nzg1LCA4NTc5MCwgODU3OTUsIDg1ODAxLCA4NTgwNywgODU4MTMsIDg1ODIxLCA4NTgyNSwgODU4MjksIDg1ODMzLCAKKyAgICA4NTgzNywgODU4NDEsIDg1ODQ1LCA4NTg1MCwgODU4NTUsIDg1ODYwLCA4NTg2NSwgODU4NjksIDg1ODc0LCA4NTg3OSwgCisgICAgODU4ODQsIDg1ODg5LCA4NTg5NCwgODU4OTksIDg1OTA0LCA4NTkwOSwgODU5MTMsIDg1OTE3LCA4NTkyMiwgODU5MjcsIAorICAgIDg1OTMyLCA4NTkzNywgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NSwgODU5NzAsIDg1OTc1LCAKKyAgICA4NTk4MCwgODU5ODUsIDg1OTg5LCA4NTk5NCwgODU5OTksIDg2MDAzLCA4NjAwOCwgODYwMTMsIDg2MDE4LCA4NjAyMywgCisgICAgODYwMjgsIDg2MDMzLCA4NjA0MCwgODYwNDcsIDg2MDUxLCA4NjA1NiwgODYwNjEsIDg2MDY2LCA4NjA3MSwgODYwNzYsIAorICAgIDg2MDgxLCA4NjA4NiwgODYwOTEsIDg2MDk2LCA4NjEwMSwgODYxMDYsIDg2MTExLCA4NjExNiwgODYxMjEsIDg2MTI2LCAKKyAgICA4NjEzMSwgODYxMzYsIDg2MTQxLCA4NjE0NiwgODYxNTEsIDg2MTU2LCA4NjE2MSwgODYxNjYsIDg2MTcxLCA4NjE3NiwgCisgICAgODYxODEsIDg2MTg2LCA4NjE5MSwgODYxOTYsIDAsIDAsIDAsIDg2MjAxLCA4NjIwNSwgODYyMTAsIDg2MjE0LCA4NjIxOSwgCisgICAgODYyMjQsIDAsIDAsIDg2MjI4LCA4NjIzMywgODYyMzgsIDg2MjQyLCA4NjI0NywgODYyNTIsIDAsIDAsIDg2MjU3LCAKKyAgICA4NjI2MiwgODYyNjYsIDg2MjcxLCA4NjI3NiwgODYyODEsIDAsIDAsIDg2Mjg2LCA4NjI5MSwgODYyOTYsIDAsIDAsIDAsIAorICAgIDg2MzAwLCA4NjMwNCwgODYzMDgsIDg2MzEyLCA4NjMxNSwgODYzMTksIDg2MzIzLCAwLCA4NjMyNywgODYzMzMsIDg2MzM2LCAKKyAgICA4NjM0MCwgODYzNDMsIDg2MzQ3LCA4NjM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYzNTUsIDg2MzYxLCAKKyAgICA4NjM2NywgODYzNzMsIDg2Mzc5LCAwLCAwLCA4NjM4MywgODYzODksIDg2Mzk1LCA4NjQwMSwgODY0MDcsIDg2NDEzLCAKKyAgICA4NjQyMCwgODY0MjcsIDg2NDM0LCA4NjQ0MSwgODY0NDgsIDg2NDU1LCAwLCA4NjQ2MiwgODY0NjksIDg2NDc2LCA4NjQ4MiwgCisgICAgODY0ODksIDg2NDk2LCA4NjUwMywgODY1MTAsIDg2NTE2LCA4NjUyMywgODY1MzAsIDg2NTM3LCA4NjU0NCwgODY1NTAsIAorICAgIDg2NTU3LCA4NjU2NCwgODY1NzEsIDg2NTc4LCA4NjU4NCwgODY1OTEsIDg2NTk4LCA4NjYwNSwgODY2MTIsIDg2NjE5LCAKKyAgICA4NjYyNiwgODY2MzMsIDAsIDg2NjQwLCA4NjY0NiwgODY2NTMsIDg2NjYwLCA4NjY2NywgODY2NzQsIDg2NjgwLCA4NjY4NywgCisgICAgODY2OTQsIDg2NzAxLCA4NjcwOCwgODY3MTUsIDg2NzIyLCA4NjcyOSwgODY3MzUsIDg2NzQyLCA4Njc0OSwgODY3NTYsIAorICAgIDg2NzYzLCAwLCA4Njc3MCwgODY3NzcsIDAsIDg2Nzg0LCA4Njc5MSwgODY3OTgsIDg2ODA1LCA4NjgxMiwgODY4MTksIAorICAgIDg2ODI2LCA4NjgzMywgODY4NDAsIDg2ODQ3LCA4Njg1NCwgODY4NjEsIDg2ODY4LCA4Njg3NSwgODY4ODIsIDAsIDAsIAorICAgIDg2ODg4LCA4Njg5MywgODY4OTgsIDg2OTAzLCA4NjkwOCwgODY5MTMsIDg2OTE4LCA4NjkyMywgODY5MjgsIDg2OTMzLCAKKyAgICA4NjkzOCwgODY5NDMsIDg2OTQ4LCA4Njk1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODY5NTgsIDg2OTY1LCAKKyAgICA4Njk3MiwgODY5NzksIDg2OTg2LCA4Njk5MywgODcwMDAsIDg3MDA3LCA4NzAxNCwgODcwMjEsIDg3MDI4LCA4NzAzNSwgCisgICAgODcwNDIsIDg3MDQ5LCA4NzA1NiwgODcwNjMsIDg3MDcwLCA4NzA3NywgODcwODQsIDg3MDkxLCA4NzA5OSwgODcxMDcsIAorICAgIDg3MTE0LCA4NzEyMSwgODcxMjYsIDg3MTM0LCA4NzE0MiwgODcxNDksIDg3MTU2LCA4NzE2MSwgODcxNjgsIDg3MTczLCAKKyAgICA4NzE3OCwgODcxODUsIDg3MTkwLCA4NzE5NSwgODcyMDAsIDg3MjA4LCA4NzIxMywgODcyMTgsIDg3MjI1LCA4NzIzMCwgCisgICAgODcyMzUsIDg3MjQyLCA4NzI0OSwgODcyNTQsIDg3MjU5LCA4NzI2NCwgODcyNjksIDg3Mjc0LCA4NzI3OSwgODcyODQsIAorICAgIDg3Mjg5LCA4NzI5NCwgODczMDEsIDg3MzA2LCA4NzMxMywgODczMTgsIDg3MzIzLCA4NzMyOCwgODczMzMsIDg3MzM4LCAKKyAgICA4NzM0MywgODczNDgsIDg3MzUzLCA4NzM1OCwgODczNjMsIDg3MzY4LCA4NzM3NSwgODczODIsIDg3Mzg5LCA4NzM5NiwgCisgICAgODc0MDIsIDg3NDA3LCA4NzQxNCwgODc0MTksIDg3NDI0LCA4NzQzMywgODc0NDAsIDg3NDQ5LCA4NzQ1NiwgODc0NjEsIAorICAgIDg3NDY2LCA4NzQ3NCwgODc0NzksIDg3NDg0LCA4NzQ4OSwgODc0OTQsIDg3NDk5LCA4NzUwNiwgODc1MTEsIDg3NTE2LCAKKyAgICA4NzUyMSwgODc1MjYsIDg3NTMxLCA4NzUzOCwgODc1NDUsIDg3NTUyLCA4NzU1OSwgODc1NjYsIDg3NTczLCA4NzU4MCwgCisgICAgODc1ODcsIDg3NTk0LCA4NzYwMSwgODc2MDgsIDg3NjE1LCA4NzYyMiwgODc2MjksIDg3NjM2LCA4NzY0MywgODc2NTAsIAorICAgIDg3NjU3LCA4NzY2NCwgODc2NzEsIDg3Njc4LCA4NzY4NSwgODc2OTIsIDg3Njk5LCA4NzcwNiwgODc3MTMsIDg3NzIwLCAKKyAgICA4NzcyNywgMCwgMCwgMCwgMCwgMCwgODc3MzQsIDg3NzQyLCA4Nzc1MCwgMCwgMCwgMCwgMCwgODc3NTUsIDg3NzU5LCAKKyAgICA4Nzc2MywgODc3NjcsIDg3NzcxLCA4Nzc3NSwgODc3NzksIDg3NzgzLCA4Nzc4NywgODc3OTEsIDg3Nzk2LCA4NzgwMSwgCisgICAgODc4MDYsIDg3ODExLCA4NzgxNiwgODc4MjEsIDg3ODI2LCA4NzgzMSwgODc4MzYsIDg3ODQyLCA4Nzg0OCwgODc4NTQsIAorICAgIDg3ODYxLCA4Nzg2OCwgODc4NzUsIDg3ODgyLCA4Nzg4OSwgODc4OTYsIDg3OTAyLCA4NzkwOCwgODc5MTQsIDg3OTIxLCAKKyAgICA4NzkyOCwgODc5MzUsIDg3OTQyLCA4Nzk0OSwgODc5NTYsIDg3OTYzLCA4Nzk3MCwgODc5NzcsIDg3OTg0LCA4Nzk5MSwgCisgICAgODc5OTgsIDg4MDA1LCA4ODAxMiwgMCwgMCwgMCwgODgwMTksIDg4MDI3LCA4ODAzNSwgODgwNDMsIDg4MDUxLCA4ODA1OSwgCisgICAgODgwNjksIDg4MDc5LCA4ODA4NywgODgwOTUsIDg4MTAzLCA4ODExMSwgODgxMTksIDg4MTI1LCA4ODEzMiwgODgxNDEsIAorICAgIDg4MTUwLCA4ODE1OSwgODgxNjgsIDg4MTc3LCA4ODE4NiwgODgxOTYsIDg4MjA3LCA4ODIxNywgODgyMjgsIDg4MjM3LCAKKyAgICA4ODI0NiwgODgyNTUsIDg4MjY1LCA4ODI3NiwgODgyODYsIDg4Mjk3LCA4ODMwOCwgODgzMTcsIDg4MzI1LCA4ODMzMSwgCisgICAgODgzMzcsIDg4MzQzLCA4ODM0OSwgODgzNTcsIDg4MzY1LCA4ODM3MSwgODgzNzgsIDg4Mzg4LCA4ODM5NSwgODg0MDIsIAorICAgIDg4NDA5LCA4ODQxNiwgODg0MjMsIDg4NDMzLCA4ODQ0MCwgODg0NDcsIDg4NDU1LCA4ODQ2MywgODg0NzIsIDg4NDgxLCAKKyAgICA4ODQ5MCwgODg0OTksIDg4NTA4LCA4ODUxNiwgODg1MjUsIDg4NTM0LCA4ODU0MywgODg1NDcsIDg4NTU0LCA4ODU1OSwgCisgICAgODg1NjQsIDg4NTY4LCA4ODU3MiwgODg1NzYsIDg4NTgwLCA4ODU4NSwgODg1OTAsIDg4NTk2LCA4ODYwMiwgODg2MDYsIAorICAgIDg4NjEyLCA4ODYxNiwgODg2MjAsIDg4NjI0LCA4ODYyOCwgODg2MzIsIDg4NjM2LCA4ODY0MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MywgODg2NzgsIDg4NjgzLCA4ODY4OCwgODg2OTMsIAorICAgIDg4Njk4LCA4ODcwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzczOTQsIDc3Mzk5LCA3NzQwNCwgNzc0MDksIDc3NDE0LCAKLSAgICA3NzQxOSwgNzc0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NDMyLCA3NzQzOSwgNzc0NDYsIAotICAgIDc3NDUzLCA3NzQ2MCwgMCwgMCwgMCwgMCwgMCwgNzc0NjcsIDc3NDc0LCA3NzQ4MSwgNzc0OTEsIDc3NDk3LCA3NzUwMywgCi0gICAgNzc1MDksIDc3NTE1LCA3NzUyMSwgNzc1MjcsIDc3NTM0LCA3NzU0MCwgNzc1NDYsIDc3NTUyLCA3NzU2MSwgNzc1NzAsIAotICAgIDc3NTgyLCA3NzU5NCwgNzc2MDAsIDc3NjA2LCA3NzYxMiwgNzc2MTksIDc3NjI2LCA3NzYzMywgNzc2NDAsIDc3NjQ3LCAwLCAKLSAgICA3NzY1NCwgNzc2NjEsIDc3NjY4LCA3NzY3NiwgNzc2ODMsIDAsIDc3NjkwLCAwLCA3NzY5NywgNzc3MDQsIDAsIDc3NzExLCAKLSAgICA3NzcxOSwgMCwgNzc3MjYsIDc3NzMzLCA3Nzc0MCwgNzc3NDcsIDc3NzU0LCA3Nzc2MSwgNzc3NjgsIDc3Nzc1LCA3Nzc4MiwgCi0gICAgNzc3ODksIDc3Nzk0LCA3NzgwMSwgNzc4MDgsIDc3ODE0LCA3NzgyMCwgNzc4MjYsIDc3ODMyLCA3NzgzOCwgNzc4NDQsIAotICAgIDc3ODUwLCA3Nzg1NiwgNzc4NjIsIDc3ODY4LCA3Nzg3NCwgNzc4ODAsIDc3ODg2LCA3Nzg5MiwgNzc4OTgsIDc3OTA0LCAKLSAgICA3NzkxMCwgNzc5MTYsIDc3OTIyLCA3NzkyOCwgNzc5MzQsIDc3OTQwLCA3Nzk0NiwgNzc5NTIsIDc3OTU4LCA3Nzk2NCwgCi0gICAgNzc5NzAsIDc3OTc2LCA3Nzk4MiwgNzc5ODgsIDc3OTk0LCA3ODAwMCwgNzgwMDYsIDc4MDEyLCA3ODAxOCwgNzgwMjQsIAotICAgIDc4MDMwLCA3ODAzNiwgNzgwNDIsIDc4MDQ4LCA3ODA1NCwgNzgwNjAsIDc4MDY2LCA3ODA3MiwgNzgwNzgsIDc4MDg0LCAKLSAgICA3ODA5MCwgNzgwOTYsIDc4MTAyLCA3ODEwOCwgNzgxMTQsIDc4MTIwLCA3ODEyNiwgNzgxMzIsIDc4MTM4LCA3ODE0NCwgCi0gICAgNzgxNTAsIDc4MTU2LCA3ODE2MiwgNzgxNjgsIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTkyLCA3ODE5OCwgNzgyMDQsIAotICAgIDc4MjEwLCA3ODIxNiwgNzgyMjIsIDc4MjI4LCA3ODIzNCwgNzgyNDAsIDc4MjQ2LCA3ODI1MiwgNzgyNTgsIDc4MjY0LCAKLSAgICA3ODI3MiwgNzgyODAsIDc4Mjg2LCA3ODI5MiwgNzgyOTgsIDc4MzA0LCA3ODMxMywgNzgzMjIsIDc4MzMwLCA3ODMzOCwgCi0gICAgNzgzNDYsIDc4MzU0LCA3ODM2MiwgNzgzNzAsIDc4Mzc4LCA3ODM4NiwgNzgzOTMsIDc4NDAwLCA3ODQxMCwgNzg0MjAsIAotICAgIDc4NDI0LCA3ODQyOCwgNzg0MzMsIDc4NDM4LCA3ODQ0MywgNzg0NDgsIDc4NDU3LCA3ODQ2NiwgNzg0NzIsIDc4NDc4LCAKLSAgICA3ODQ4NSwgNzg0OTIsIDc4NDk5LCA3ODUwMywgNzg1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4NTE1LCA3ODUyMSwgNzg1MjcsIDc4NTMzLCA3ODUzOSwgNzg1NDQsIDc4NTQ5LCA3ODU1NSwgCi0gICAgNzg1NjEsIDc4NTY3LCA3ODU3MywgNzg1ODEsIDc4NTg3LCA3ODU5MywgNzg2MDEsIDc4NjA5LCA3ODYxNywgNzg2MjUsIAotICAgIDc4NjMwLCA3ODYzNSwgNzg2NDAsIDc4NjQ1LCA3ODY1NywgNzg2NjksIDc4Njc5LCA3ODY4OSwgNzg3MDAsIDc4NzExLCAKLSAgICA3ODcyMiwgNzg3MzMsIDc4NzQzLCA3ODc1MywgNzg3NjQsIDc4Nzc1LCA3ODc4NiwgNzg3OTcsIDc4ODA3LCA3ODgxNywgCi0gICAgNzg4MjcsIDc4ODQyLCA3ODg1NywgNzg4NzIsIDc4ODc5LCA3ODg4NiwgNzg4OTMsIDc4OTAwLCA3ODkxMCwgNzg5MjAsIAotICAgIDc4OTMwLCA3ODk0MSwgNzg5NTEsIDc4OTU5LCA3ODk2NywgNzg5NzYsIDc4OTg0LCA3ODk5MywgNzkwMDEsIDc5MDA5LCAKLSAgICA3OTAxNywgNzkwMjYsIDc5MDM0LCA3OTA0MywgNzkwNTEsIDc5MDU5LCA3OTA2NywgNzkwNzYsIDc5MDg0LCA3OTA5MSwgCi0gICAgNzkwOTgsIDc5MTA1LCA3OTExMiwgNzkxMjAsIDc5MTI4LCA3OTEzNiwgNzkxNDQsIDc5MTUyLCA3OTE2MSwgNzkxNjksIAotICAgIDc5MTc3LCA3OTE4NSwgNzkxOTMsIDc5MjAxLCA3OTIxMCwgNzkyMTgsIDc5MjI2LCA3OTIzNCwgNzkyNDIsIDc5MjUwLCAKLSAgICA3OTI1OCwgNzkyNjYsIDc5Mjc0LCA3OTI4MiwgNzkyOTAsIDc5Mjk5LCA3OTMwNywgNzkzMTYsIDc5MzI0LCA3OTMzMiwgCi0gICAgNzkzNDAsIDc5MzQ5LCA3OTM1NywgNzkzNjUsIDc5MzczLCA3OTM4MSwgNzkzOTAsIDc5Mzk5LCA3OTQwNywgNzk0MTYsIAotICAgIDc5NDI0LCA3OTQzMiwgNzk0NDAsIDc5NDQ5LCA3OTQ1NywgNzk0NjYsIDc5NDc0LCA3OTQ4MSwgNzk0ODgsIDc5NDk2LCAKLSAgICA3OTUwMywgNzk1MTEsIDc5NTE4LCA3OTUyNiwgNzk1MzQsIDc5NTQzLCA3OTU1MSwgNzk1NjAsIDc5NTY4LCA3OTU3NiwgCi0gICAgNzk1ODQsIDc5NTkzLCA3OTYwMSwgNzk2MDgsIDc5NjE1LCA3OTYyMywgNzk2MzAsIDc5NjM4LCA3OTY0NSwgNzk2NTUsIAotICAgIDc5NjY1LCA3OTY3NSwgNzk2ODQsIDc5NjkzLCA3OTcwMiwgNzk3MTEsIDc5NzIwLCA3OTczMCwgNzk3NDEsIDc5NzUyLCAKLSAgICA3OTc2MiwgNzk3NzMsIDc5Nzg0LCA3OTc5NCwgNzk4MDMsIDc5ODEyLCA3OTgyMCwgNzk4MjksIDc5ODM4LCA3OTg0NiwgCi0gICAgNzk4NTUsIDc5ODY0LCA3OTg3MiwgNzk4ODEsIDc5ODkwLCA3OTg5OCwgNzk5MDcsIDc5OTE2LCA3OTkyNCwgNzk5MzMsIAotICAgIDc5OTQyLCA3OTk1MCwgNzk5NTksIDc5OTY3LCA3OTk3NiwgNzk5ODQsIDc5OTkyLCA4MDAwMSwgODAwMDksIDgwMDE4LCAKLSAgICA4MDAyNiwgODAwMzQsIDgwMDQzLCA4MDA1MSwgODAwNTgsIDgwMDY1LCA4MDA3NCwgODAwODMsIDgwMDkxLCA4MDEwMCwgCi0gICAgODAxMDksIDgwMTE3LCA4MDEyNywgODAxMzUsIDgwMTQzLCA4MDE1MCwgODAxNTgsIDgwMTY2LCA4MDE3MywgODAxODMsIAotICAgIDgwMTkzLCA4MDIwNCwgODAyMTQsIDgwMjI1LCA4MDIzMywgODAyNDEsIDgwMjUwLCA4MDI1OCwgODAyNjcsIDgwMjc1LCAKLSAgICA4MDI4MywgODAyOTIsIDgwMzAwLCA4MDMwOSwgODAzMTcsIDgwMzI0LCA4MDMzMSwgODAzMzgsIDgwMzQ1LCA4MDM1MywgCi0gICAgODAzNjEsIDgwMzY5LCA4MDM3NywgODAzODYsIDgwMzk0LCA4MDQwMiwgODA0MTEsIDgwNDE5LCA4MDQyNywgODA0MzUsIAotICAgIDgwNDQ0LCA4MDQ1MiwgODA0NjAsIDgwNDY4LCA4MDQ3NiwgODA0ODQsIDgwNDkyLCA4MDUwMCwgODA1MDgsIDgwNTE2LCAKLSAgICA4MDUyNSwgODA1MzMsIDgwNTQxLCA4MDU0OSwgODA1NTcsIDgwNTY1LCA4MDU3NCwgODA1ODMsIDgwNTkxLCA4MDU5OSwgCi0gICAgODA2MDcsIDgwNjE2LCA4MDYyNCwgODA2MzMsIDgwNjQwLCA4MDY0NywgODA2NTUsIDgwNjYyLCA4MDY3MCwgODA2NzgsIAotICAgIDgwNjg3LCA4MDY5NSwgODA3MDQsIDgwNzEyLCA4MDcyMCwgODA3MzAsIDgwNzM3LCA4MDc0NCwgODA3NTIsIDgwNzU5LCAKLSAgICA4MDc2NywgODA3NzcsIDgwNzg4LCA4MDc5NiwgODA4MDUsIDgwODEzLCA4MDgyMiwgODA4MzAsIDgwODM5LCA4MDg0NywgCi0gICAgODA4NTYsIDgwODY0LCA4MDg3MywgODA4ODIsIDgwODkwLCA4MDg5OCwgODA5MDYsIDgwOTE1LCA4MDkyMiwgODA5MzAsIAotICAgIDgwOTM5LCA4MDk0OCwgODA5NTcsIDgwOTY2LCA4MDk3NCwgODA5ODMsIDgwOTkxLCA4MTAwMCwgODEwMDgsIDgxMDE3LCAKLSAgICA4MTAyNSwgODEwMzQsIDgxMDQyLCA4MTA1MCwgODEwNTcsIDgxMDY1LCA4MTA3MiwgODEwODEsIDgxMDg5LCA4MTA5OCwgCi0gICAgODExMDYsIDgxMTE1LCA4MTEyMywgODExMzEsIDgxMTM5LCA4MTE0OCwgODExNTYsIDgxMTY1LCA4MTE3NCwgODExODMsIAotICAgIDgxMTkyLCA4MTIwMSwgODEyMDksIDgxMjE4LCA4MTIyNiwgODEyMzUsIDgxMjQzLCA4MTI1MiwgODEyNjAsIDgxMjY5LCAKLSAgICA4MTI3NywgODEyODUsIDgxMjkyLCA4MTMwMCwgODEzMDcsIDgxMzE2LCA4MTMyNCwgODEzMzMsIDgxMzQxLCA4MTM1MCwgCi0gICAgODEzNTgsIDgxMzY2LCA4MTM3NCwgODEzODMsIDgxMzkxLCA4MTQwMCwgODE0MDksIDgxNDE4LCA4MTQyNywgODE0MzUsIAotICAgIDgxNDQzLCA4MTQ1MiwgODE0NjAsIDgxNDY5LCA4MTQ3OCwgODE0ODYsIDgxNDk0LCA4MTUwMiwgODE1MTEsIDgxNTE5LCAKLSAgICA4MTUyNywgODE1MzYsIDgxNTQ0LCA4MTU1MiwgODE1NjAsIDgxNTY4LCA4MTU3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODE1NzgsIDgxNTg4LCA4MTU5OCwgODE2MDgsIDgxNjE4LCA4MTYyOSwgODE2MzksIAotICAgIDgxNjQ5LCA4MTY2MCwgODE2NjksIDgxNjc4LCA4MTY4NywgODE2OTcsIDgxNzA3LCA4MTcxNywgODE3MjgsIDgxNzM4LCAKLSAgICA4MTc0OCwgODE3NTgsIDgxNzY4LCA4MTc3OCwgODE3ODgsIDgxNzk4LCA4MTgwOCwgODE4MTgsIDgxODI4LCA4MTgzOCwgCi0gICAgODE4NDksIDgxODYwLCA4MTg3MCwgODE4ODAsIDgxODkxLCA4MTkwMiwgODE5MTMsIDgxOTIzLCA4MTkzMywgODE5NDMsIAotICAgIDgxOTUzLCA4MTk2MywgODE5NzMsIDgxOTgzLCA4MTk5NCwgODIwMDQsIDgyMDE0LCA4MjAyNSwgODIwMzYsIDgyMDQ3LCAKLSAgICA4MjA1NywgODIwNjcsIDgyMDc3LCA4MjA4NywgODIwOTgsIDgyMTA4LCA4MjExOCwgODIxMjksIDgyMTQwLCA4MjE1MCwgCi0gICAgODIxNjAsIDgyMTY5LCA4MjE3OCwgODIxODcsIDgyMTk2LCA4MjIwNSwgODIyMTUsIDAsIDAsIDgyMjI1LCA4MjIzNSwgCi0gICAgODIyNDUsIDgyMjU1LCA4MjI2NSwgODIyNzYsIDgyMjg2LCA4MjI5NiwgODIzMDcsIDgyMzE3LCA4MjMyOCwgODIzMzcsIAotICAgIDgyMzQ2LCA4MjM1NywgODIzNjcsIDgyMzc4LCA4MjM4OSwgODI0MDEsIDgyNDExLCA4MjQyMiwgODI0MzEsIDgyNDQxLCAKLSAgICA4MjQ1MSwgODI0NjMsIDgyNDczLCA4MjQ4MywgODI0OTMsIDgyNTAzLCA4MjUxMywgODI1MjIsIDgyNTMxLCA4MjU0MCwgCi0gICAgODI1NDksIDgyNTU5LCA4MjU2OSwgODI1NzksIDgyNTg5LCA4MjU5OSwgODI2MDksIDgyNjE5LCA4MjYyOSwgODI2MzksIAotICAgIDgyNjQ5LCA4MjY1OSwgODI2NjksIDgyNjc4LCA4MjY4NywgODI2OTYsIDgyNzA2LCA4MjcxNiwgODI3MjYsIDgyNzM2LCAKLSAgICA4Mjc0NiwgODI3NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNzY3LCA4Mjc4MiwgCi0gICAgODI3OTcsIDgyODAzLCA4MjgwOSwgODI4MTUsIDgyODIxLCA4MjgyNywgODI4MzMsIDgyODM5LCA4Mjg0NSwgODI4NTMsIAotICAgIDgyODU3LCA4Mjg2MCwgMCwgMCwgODI4NjgsIDgyODcxLCA4Mjg3NCwgODI4NzcsIDgyODgwLCA4Mjg4MywgODI4ODYsIAotICAgIDgyODg5LCA4Mjg5MiwgODI4OTUsIDgyODk4LCA4MjkwMSwgODI5MDQsIDgyOTA3LCA4MjkxMCwgODI5MTMsIDgyOTE2LCAKLSAgICA4MjkyNCwgODI5MzMsIDgyOTQ0LCA4Mjk1MiwgODI5NjAsIDgyOTY5LCA4Mjk3OCwgODI5ODksIDgzMDAxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4MzAxMCwgODMwMTUsIDgzMDIwLCA4MzAyNywgODMwMzQsIDgzMDQwLCA4MzA0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODMwNTEsIDgzMDYxLCA4MzA3MSwgODMwODEsIDgzMDkwLCA4MzEwMSwgODMxMTAsIDgzMTE5LCAKLSAgICA4MzEyOSwgODMxMzksIDgzMTUxLCA4MzE2MywgODMxNzQsIDgzMTg1LCA4MzE5NiwgODMyMDcsIDgzMjE3LCA4MzIyNywgCi0gICAgODMyMzcsIDgzMjQ3LCA4MzI1OCwgODMyNjksIDgzMjczLCA4MzI3OCwgODMyODcsIDgzMjk2LCA4MzMwMCwgODMzMDQsIAotICAgIDgzMzA4LCA4MzMxMywgODMzMTgsIDgzMzIzLCA4MzMyOCwgODMzMzEsIDgzMzM1LCAwLCA4MzM0MCwgODMzNDMsIDgzMzQ2LCAKLSAgICA4MzM1MCwgODMzNTQsIDgzMzU5LCA4MzM2MywgODMzNjcsIDgzMzcyLCA4MzM3NywgODMzODQsIDgzMzkxLCA4MzM5NCwgCi0gICAgODMzOTcsIDgzNDAwLCA4MzQwMywgODM0MDYsIDgzNDEwLCA4MzQxNCwgMCwgODM0MTgsIDgzNDIzLCA4MzQyNywgODM0MzEsIAotICAgIDAsIDAsIDAsIDAsIDgzNDM2LCA4MzQ0MSwgODM0NDgsIDgzNDUzLCA4MzQ1OCwgMCwgODM0NjMsIDgzNDY4LCA4MzQ3MywgCi0gICAgODM0NzgsIDgzNDgzLCA4MzQ4OCwgODM0OTMsIDgzNDk4LCA4MzUwMywgODM1MDgsIDgzNTEzLCA4MzUxOCwgODM1MjcsIAotICAgIDgzNTM2LCA4MzU0NCwgODM1NTIsIDgzNTYxLCA4MzU3MCwgODM1NzksIDgzNTg4LCA4MzU5NiwgODM2MDQsIDgzNjEyLCAKLSAgICA4MzYyMCwgODM2MjUsIDgzNjMwLCA4MzYzNiwgODM2NDIsIDgzNjQ4LCA4MzY1NCwgODM2NjIsIDgzNjcwLCA4MzY3NiwgCi0gICAgODM2ODIsIDgzNjg4LCA4MzY5NCwgODM3MDAsIDgzNzA2LCA4MzcxMiwgODM3MTgsIDgzNzIzLCA4MzcyOCwgODM3MzMsIAotICAgIDgzNzM4LCA4Mzc0MywgODM3NDgsIDgzNzUzLCA4Mzc1OCwgODM3NjQsIDgzNzcwLCA4Mzc3NiwgODM3ODIsIDgzNzg4LCAKLSAgICA4Mzc5NCwgODM4MDAsIDgzODA2LCA4MzgxMiwgODM4MTgsIDgzODI0LCA4MzgzMCwgODM4MzYsIDgzODQyLCA4Mzg0OCwgCi0gICAgODM4NTQsIDgzODYwLCA4Mzg2NiwgODM4NzIsIDgzODc4LCA4Mzg4NCwgODM4OTAsIDgzODk2LCA4MzkwMiwgODM5MDgsIAotICAgIDgzOTE0LCA4MzkyMCwgODM5MjYsIDgzOTMyLCA4MzkzOCwgODM5NDQsIDgzOTUwLCA4Mzk1NiwgODM5NjIsIDgzOTY4LCAKLSAgICA4Mzk3NCwgODM5ODAsIDgzOTg2LCA4Mzk5MiwgODM5OTgsIDg0MDA0LCA4NDAxMCwgODQwMTYsIDg0MDIyLCA4NDAyOCwgCi0gICAgODQwMzQsIDg0MDQwLCA4NDA0NiwgODQwNTIsIDg0MDU4LCA4NDA2NCwgODQwNzAsIDg0MDc2LCA4NDA4MiwgODQwODgsIAotICAgIDg0MDk0LCA4NDEwMCwgODQxMDYsIDg0MTEyLCA4NDExOCwgODQxMjMsIDg0MTI4LCA4NDEzMywgODQxMzgsIDg0MTQ0LCAKLSAgICA4NDE1MCwgODQxNTYsIDg0MTYyLCA4NDE2OCwgODQxNzQsIDg0MTgwLCA4NDE4NiwgODQxOTIsIDg0MTk4LCA4NDIwNCwgCi0gICAgODQyMTAsIDg0MjE1LCA4NDIyMCwgODQyMjUsIDg0MjMwLCA4NDI0MiwgODQyNTQsIDg0MjY1LCA4NDI3NiwgODQyODgsIAotICAgIDg0MzAwLCA4NDMwOCwgMCwgMCwgODQzMTYsIDAsIDg0MzI0LCA4NDMyOCwgODQzMzIsIDg0MzM1LCA4NDMzOSwgODQzNDMsIAotICAgIDg0MzQ2LCA4NDM0OSwgODQzNTMsIDg0MzU3LCA4NDM2MCwgODQzNjMsIDg0MzY2LCA4NDM2OSwgODQzNzQsIDg0Mzc3LCAKLSAgICA4NDM4MSwgODQzODQsIDg0Mzg3LCA4NDM5MCwgODQzOTMsIDg0Mzk2LCA4NDM5OSwgODQ0MDIsIDg0NDA1LCA4NDQwOCwgCi0gICAgODQ0MTEsIDg0NDE0LCA4NDQxOCwgODQ0MjIsIDg0NDI2LCA4NDQzMCwgODQ0MzUsIDg0NDQwLCA4NDQ0NiwgODQ0NTIsIAotICAgIDg0NDU4LCA4NDQ2MywgODQ0NjksIDg0NDc1LCA4NDQ4MSwgODQ0ODYsIDg0NDkyLCA4NDQ5OCwgODQ1MDMsIDg0NTA4LCAKLSAgICA4NDUxMywgODQ1MTgsIDg0NTI0LCA4NDUzMCwgODQ1MzUsIDg0NTQwLCA4NDU0NiwgODQ1NTEsIDg0NTU3LCA4NDU2MywgCi0gICAgODQ1NjksIDg0NTc1LCA4NDU4MSwgODQ1ODUsIDg0NTkwLCA4NDU5NCwgODQ1OTksIDg0NjAzLCA4NDYwOCwgODQ2MTMsIAotICAgIDg0NjE5LCA4NDYyNSwgODQ2MzEsIDg0NjM2LCA4NDY0MiwgODQ2NDgsIDg0NjU0LCA4NDY1OSwgODQ2NjUsIDg0NjcxLCAKLSAgICA4NDY3NiwgODQ2ODEsIDg0Njg2LCA4NDY5MSwgODQ2OTcsIDg0NzAzLCA4NDcwOCwgODQ3MTMsIDg0NzE5LCA4NDcyNCwgCi0gICAgODQ3MzAsIDg0NzM2LCA4NDc0MiwgODQ3NDgsIDg0NzU0LCA4NDc1OSwgODQ3NjMsIDg0NzY4LCA4NDc3MSwgODQ3NzYsIAotICAgIDg0NzgxLCA4NDc4NywgODQ3OTIsIDg0Nzk3LCA4NDgwMSwgODQ4MDcsIDg0ODEyLCA4NDgxNywgODQ4MjIsIDg0ODI3LCAKLSAgICA4NDgzMiwgODQ4MzcsIDg0ODQyLCA4NDg0OCwgODQ4NTQsIDg0ODYwLCA4NDg2OCwgODQ4NzIsIDg0ODc2LCA4NDg4MCwgCi0gICAgODQ4ODQsIDg0ODg4LCA4NDg5MiwgODQ4OTcsIDg0OTAyLCA4NDkwNywgODQ5MTIsIDg0OTE3LCA4NDkyMiwgODQ5MjcsIAotICAgIDg0OTMyLCA4NDkzNywgODQ5NDIsIDg0OTQ3LCA4NDk1MiwgODQ5NTcsIDg0OTYxLCA4NDk2NSwgODQ5NzAsIDg0OTc1LCAKLSAgICA4NDk4MCwgODQ5ODUsIDg0OTg5LCA4NDk5NCwgODQ5OTksIDg1MDA0LCA4NTAwOSwgODUwMTMsIDg1MDE4LCA4NTAyMywgCi0gICAgODUwMjgsIDg1MDMzLCA4NTAzNywgODUwNDIsIDg1MDQ3LCA4NTA1MSwgODUwNTYsIDg1MDYxLCA4NTA2NiwgODUwNzEsIAotICAgIDg1MDc2LCA4NTA4MCwgODUwODcsIDg1MDk0LCA4NTA5OCwgODUxMDMsIDg1MTA4LCA4NTExMywgODUxMTgsIDg1MTIzLCAKLSAgICA4NTEyOCwgODUxMzMsIDg1MTM4LCA4NTE0MywgODUxNDgsIDg1MTUzLCA4NTE1OCwgODUxNjMsIDg1MTY4LCA4NTE3MywgCi0gICAgODUxNzgsIDg1MTgzLCA4NTE4OCwgODUxOTMsIDg1MTk4LCA4NTIwMywgODUyMDgsIDg1MjEzLCA4NTIxOCwgODUyMjMsIAotICAgIDg1MjI4LCA4NTIzMywgODUyMzgsIDg1MjQzLCAwLCAwLCAwLCA4NTI0OCwgODUyNTIsIDg1MjU3LCA4NTI2MSwgODUyNjYsIAotICAgIDg1MjcxLCAwLCAwLCA4NTI3NSwgODUyODAsIDg1Mjg1LCA4NTI4OSwgODUyOTQsIDg1Mjk5LCAwLCAwLCA4NTMwNCwgCi0gICAgODUzMDksIDg1MzEzLCA4NTMxOCwgODUzMjMsIDg1MzI4LCAwLCAwLCA4NTMzMywgODUzMzgsIDg1MzQzLCAwLCAwLCAwLCAKLSAgICA4NTM0NywgODUzNTEsIDg1MzU1LCA4NTM1OSwgODUzNjIsIDg1MzY2LCA4NTM3MCwgMCwgODUzNzQsIDg1MzgwLCA4NTM4MywgCi0gICAgODUzODcsIDg1MzkwLCA4NTM5NCwgODUzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1NDAyLCA4NTQwOCwgCi0gICAgODU0MTQsIDg1NDIwLCA4NTQyNiwgMCwgMCwgODU0MzAsIDg1NDM2LCA4NTQ0MiwgODU0NDgsIDg1NDU0LCA4NTQ2MCwgCi0gICAgODU0NjcsIDg1NDc0LCA4NTQ4MSwgODU0ODgsIDg1NDk1LCA4NTUwMiwgMCwgODU1MDksIDg1NTE2LCA4NTUyMywgODU1MjksIAotICAgIDg1NTM2LCA4NTU0MywgODU1NTAsIDg1NTU3LCA4NTU2MywgODU1NzAsIDg1NTc3LCA4NTU4NCwgODU1OTEsIDg1NTk3LCAKLSAgICA4NTYwNCwgODU2MTEsIDg1NjE4LCA4NTYyNSwgODU2MzEsIDg1NjM4LCA4NTY0NSwgODU2NTIsIDg1NjU5LCA4NTY2NiwgCi0gICAgODU2NzMsIDg1NjgwLCAwLCA4NTY4NywgODU2OTMsIDg1NzAwLCA4NTcwNywgODU3MTQsIDg1NzIxLCA4NTcyOCwgODU3MzUsIAotICAgIDg1NzQyLCA4NTc0OSwgODU3NTYsIDg1NzYzLCA4NTc3MCwgODU3NzcsIDg1NzgzLCA4NTc5MCwgODU3OTcsIDg1ODA0LCAKLSAgICA4NTgxMSwgMCwgODU4MTgsIDg1ODI1LCAwLCA4NTgzMiwgODU4MzksIDg1ODQ2LCA4NTg1MywgODU4NjAsIDg1ODY3LCAKLSAgICA4NTg3NCwgODU4ODEsIDg1ODg4LCA4NTg5NSwgODU5MDIsIDg1OTA5LCA4NTkxNiwgODU5MjMsIDg1OTMwLCAwLCAwLCAKLSAgICA4NTkzNiwgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NiwgODU5NzEsIDg1OTc2LCA4NTk4MSwgCi0gICAgODU5ODYsIDg1OTkxLCA4NTk5NiwgODYwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MDA2LCA4NjAxMywgCi0gICAgODYwMjAsIDg2MDI3LCA4NjAzNCwgODYwNDEsIDg2MDQ4LCA4NjA1NSwgODYwNjIsIDg2MDY5LCA4NjA3NiwgODYwODMsIAotICAgIDg2MDkwLCA4NjA5NywgODYxMDQsIDg2MTExLCA4NjExOCwgODYxMjUsIDg2MTMyLCA4NjEzOSwgODYxNDcsIDg2MTU1LCAKLSAgICA4NjE2MiwgODYxNjksIDg2MTc0LCA4NjE4MiwgODYxOTAsIDg2MTk3LCA4NjIwNCwgODYyMDksIDg2MjE2LCA4NjIyMSwgCi0gICAgODYyMjYsIDg2MjMzLCA4NjIzOCwgODYyNDMsIDg2MjQ4LCA4NjI1NiwgODYyNjEsIDg2MjY2LCA4NjI3MywgODYyNzgsIAotICAgIDg2MjgzLCA4NjI5MCwgODYyOTcsIDg2MzAyLCA4NjMwNywgODYzMTIsIDg2MzE3LCA4NjMyMiwgODYzMjcsIDg2MzMyLCAKLSAgICA4NjMzNywgODYzNDIsIDg2MzQ5LCA4NjM1NCwgODYzNjEsIDg2MzY2LCA4NjM3MSwgODYzNzYsIDg2MzgxLCA4NjM4NiwgCi0gICAgODYzOTEsIDg2Mzk2LCA4NjQwMSwgODY0MDYsIDg2NDExLCA4NjQxNiwgODY0MjMsIDg2NDMwLCA4NjQzNywgODY0NDQsIAotICAgIDg2NDUwLCA4NjQ1NSwgODY0NjIsIDg2NDY3LCA4NjQ3MiwgODY0ODEsIDg2NDg4LCA4NjQ5NywgODY1MDQsIDg2NTA5LCAKLSAgICA4NjUxNCwgODY1MjIsIDg2NTI3LCA4NjUzMiwgODY1MzcsIDg2NTQyLCA4NjU0NywgODY1NTQsIDg2NTU5LCA4NjU2NCwgCi0gICAgODY1NjksIDg2NTc0LCA4NjU3OSwgODY1ODYsIDg2NTkzLCA4NjYwMCwgODY2MDcsIDg2NjE0LCA4NjYyMSwgODY2MjgsIAotICAgIDg2NjM1LCA4NjY0MiwgODY2NDksIDg2NjU2LCA4NjY2MywgODY2NzAsIDg2Njc3LCA4NjY4NCwgODY2OTEsIDg2Njk4LCAKLSAgICA4NjcwNSwgODY3MTIsIDg2NzE5LCA4NjcyNiwgODY3MzMsIDg2NzQwLCA4Njc0NywgODY3NTQsIDg2NzYxLCA4Njc2OCwgCi0gICAgODY3NzUsIDAsIDAsIDAsIDAsIDAsIDg2NzgyLCA4Njc5MCwgODY3OTgsIDAsIDAsIDAsIDAsIDg2ODAzLCA4NjgwNywgCi0gICAgODY4MTEsIDg2ODE1LCA4NjgxOSwgODY4MjMsIDg2ODI3LCA4NjgzMSwgODY4MzUsIDg2ODM5LCA4Njg0NCwgODY4NDksIAotICAgIDg2ODU0LCA4Njg1OSwgODY4NjQsIDg2ODY5LCA4Njg3NCwgODY4NzksIDg2ODg0LCA4Njg5MCwgODY4OTYsIDg2OTAyLCAKLSAgICA4NjkwOSwgODY5MTYsIDg2OTIzLCA4NjkzMCwgODY5MzcsIDg2OTQ0LCA4Njk1MCwgODY5NTYsIDg2OTYyLCA4Njk2OSwgCi0gICAgODY5NzYsIDg2OTgzLCA4Njk5MCwgODY5OTcsIDg3MDA0LCA4NzAxMSwgODcwMTgsIDg3MDI1LCA4NzAzMiwgODcwMzksIAotICAgIDg3MDQ2LCA4NzA1MywgODcwNjAsIDAsIDAsIDAsIDg3MDY3LCA4NzA3NSwgODcwODMsIDg3MDkxLCA4NzA5OSwgODcxMDcsIAotICAgIDg3MTE3LCA4NzEyNywgODcxMzUsIDg3MTQzLCA4NzE1MSwgODcxNTksIDg3MTY3LCA4NzE3MywgODcxODAsIDg3MTg5LCAKLSAgICA4NzE5OCwgODcyMDcsIDg3MjE2LCA4NzIyNSwgODcyMzQsIDg3MjQ0LCA4NzI1NSwgODcyNjUsIDg3Mjc2LCA4NzI4NSwgCi0gICAgODcyOTQsIDg3MzAzLCA4NzMxMywgODczMjQsIDg3MzM0LCA4NzM0NSwgODczNTYsIDg3MzY1LCA4NzM3MywgODczNzksIAotICAgIDg3Mzg1LCA4NzM5MSwgODczOTcsIDg3NDA1LCA4NzQxMywgODc0MTksIDg3NDI2LCA4NzQzNiwgODc0NDMsIDg3NDUwLCAKLSAgICA4NzQ1NywgODc0NjQsIDg3NDcxLCA4NzQ4MSwgODc0ODgsIDg3NDk1LCA4NzUwMywgODc1MTEsIDg3NTIwLCA4NzUyOSwgCi0gICAgODc1MzgsIDg3NTQ3LCA4NzU1NiwgODc1NjQsIDg3NTczLCA4NzU4MiwgODc1OTEsIDg3NTk1LCA4NzYwMiwgODc2MDcsIAotICAgIDg3NjEyLCA4NzYxNiwgODc2MjAsIDg3NjI0LCA4NzYyOCwgODc2MzMsIDg3NjM4LCA4NzY0NCwgODc2NTAsIDg3NjU0LCAKLSAgICA4NzY2MCwgODc2NjQsIDg3NjY4LCA4NzY3MiwgODc2NzYsIDg3NjgwLCA4NzY4NCwgODc2OTAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDg3Njk0LCA4NzY5OSwgODc3MDQsIDg3NzA5LCA4NzcxNCwgODc3MjEsIDg3NzI2LCA4NzczMSwgODc3MzYsIDg3NzQxLCAKLSAgICA4Nzc0NiwgODc3NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzA4LCA4ODcxNSwgODg3MjQsIDg4NzMzLCA4ODc0MCwgODg3NDcsIDg4NzU0LCAKKyAgICA4ODc2MSwgODg3NjgsIDg4Nzc1LCA4ODc4MSwgODg3ODgsIDg4Nzk1LCA4ODgwMiwgODg4MDksIDg4ODE2LCA4ODgyMywgCisgICAgODg4MzAsIDg4ODM3LCA4ODg0NiwgODg4NTMsIDg4ODYwLCA4ODg2NywgODg4NzQsIDg4ODgxLCA4ODg4OCwgODg4OTUsIAorICAgIDg4OTAyLCA4ODkxMSwgODg5MTgsIDg4OTI1LCA4ODkzMiwgODg5MzksIDg4OTQ2LCA4ODk1MywgODg5NjIsIDg4OTY5LCAKKyAgICA4ODk3NiwgODg5ODMsIDg4OTkwLCA4ODk5OSwgODkwMDYsIDg5MDEzLCA4OTAyMCwgODkwMjgsIDg5MDM3LCAwLCAwLCAKKyAgICA4OTA0NiwgODkwNTAsIDg5MDU0LCA4OTA1OSwgODkwNjQsIDg5MDY5LCA4OTA3NCwgODkwNzgsIDg5MDgzLCA4OTA4OCwgCisgICAgODkwOTMsIDg5MDk4LCA4OTEwMywgODkxMDgsIDg5MTEyLCA4OTExNiwgODkxMjEsIDg5MTI2LCA4OTEzMSwgODkxMzUsIAorICAgIDg5MTQwLCA4OTE0NSwgODkxNDksIDg5MTU0LCA4OTE1OSwgODkxNjQsIDg5MTY5LCA4OTE3NCwgODkxNzksIDAsIDAsIDAsIAorICAgIDg5MTg0LCA4OTE4OCwgODkxOTMsIDg5MTk4LCA4OTIwMiwgODkyMDcsIDg5MjExLCA4OTIxNiwgODkyMjEsIDg5MjI2LCAKKyAgICA4OTIzMSwgODkyMzUsIDg5MjM5LCA4OTI0NCwgODkyNDksIDg5MjU0LCA4OTI1OSwgODkyNjQsIDg5MjY5LCA4OTI3MywgCisgICAgODkyNzgsIDg5MjgzLCA4OTI4OCwgODkyOTMsIDg5Mjk4LCA4OTMwMywgODkzMDcsIDg5MzExLCA4OTMxNiwgODkzMjEsIAorICAgIDg5MzI2LCA4OTMzMSwgODkzMzYsIDg5MzQxLCA4OTM0NiwgODkzNTEsIDg5MzU2LCA4OTM2MSwgODkzNjYsIDg5MzcxLCAKKyAgICA4OTM3NiwgODkzODEsIDg5Mzg2LCA4OTM5MSwgODkzOTYsIDg5NDAxLCA4OTQwNiwgODk0MTEsIDg5NDE2LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Nzc1NiwgODc3NjMsIDg3NzcyLCA4Nzc4MSwgODc3ODgsIDg3Nzk1LCA4NzgwMiwgCi0gICAgODc4MDksIDg3ODE2LCA4NzgyMywgODc4MjksIDg3ODM2LCA4Nzg0MywgODc4NTAsIDg3ODU3LCA4Nzg2NCwgODc4NzEsIAotICAgIDg3ODc4LCA4Nzg4NSwgODc4OTQsIDg3OTAxLCA4NzkwOCwgODc5MTUsIDg3OTIyLCA4NzkyOSwgODc5MzYsIDg3OTQzLCAKLSAgICA4Nzk1MCwgODc5NTksIDg3OTY2LCA4Nzk3MywgODc5ODAsIDg3OTg3LCA4Nzk5NCwgODgwMDEsIDg4MDEwLCA4ODAxNywgCi0gICAgODgwMjQsIDg4MDMxLCA4ODAzOCwgODgwNDcsIDg4MDU0LCA4ODA2MSwgODgwNjgsIDg4MDc2LCA4ODA4NSwgMCwgMCwgCi0gICAgODgwOTQsIDg4MDk4LCA4ODEwMiwgODgxMDcsIDg4MTEyLCA4ODExNywgODgxMjIsIDg4MTI2LCA4ODEzMSwgODgxMzYsIAotICAgIDg4MTQxLCA4ODE0NiwgODgxNTEsIDg4MTU2LCA4ODE2MCwgODgxNjQsIDg4MTY4LCA4ODE3MywgODgxNzgsIDg4MTgyLCAKLSAgICA4ODE4NywgODgxOTIsIDg4MTk2LCA4ODIwMCwgODgyMDUsIDg4MjEwLCA4ODIxNSwgODgyMjAsIDg4MjI1LCAwLCAwLCAwLCAKLSAgICA4ODIzMCwgODgyMzQsIDg4MjM5LCA4ODI0NCwgODgyNDgsIDg4MjUzLCA4ODI1NywgODgyNjIsIDg4MjY3LCA4ODI3MiwgCi0gICAgODgyNzcsIDg4MjgxLCA4ODI4NSwgODgyOTAsIDg4Mjk1LCA4ODMwMCwgODgzMDUsIDg4MzA5LCA4ODMxNCwgODgzMTgsIAotICAgIDg4MzIzLCA4ODMyOCwgODgzMzIsIDg4MzM3LCA4ODM0MiwgODgzNDcsIDg4MzUxLCA4ODM1NSwgODgzNjAsIDg4MzY1LCAKLSAgICA4ODM3MCwgODgzNzUsIDg4MzgwLCA4ODM4NSwgODgzOTAsIDg4Mzk1LCA4ODQwMCwgODg0MDUsIDg4NDEwLCA4ODQxNSwgCi0gICAgODg0MjAsIDg4NDI1LCA4ODQzMCwgODg0MzUsIDg4NDQwLCA4ODQ0NSwgODg0NTAsIDg4NDU1LCA4ODQ2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk0MjEsIDg5NDI1LCAKKyAgICA4OTQzMCwgODk0MzUsIDg5NDQwLCA4OTQ0NCwgODk0NDksIDg5NDU0LCA4OTQ1OSwgODk0NjQsIDg5NDY4LCA4OTQ3MiwgCisgICAgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIDg5NDk2LCA4OTUwMSwgODk1MDYsIDg5NTExLCA4OTUxNiwgODk1MjEsIAorICAgIDg5NTI2LCA4OTUzMCwgODk1MzUsIDg5NTQwLCA4OTU0NSwgODk1NTAsIDg5NTU1LCA4OTU2MCwgODk1NjUsIDAsIDg5NTcwLCAKKyAgICA4OTU3NSwgODk1ODAsIDg5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTU5MiwgODk1OTcsIAorICAgIDg5NjAyLCA4OTYwNywgODk2MTIsIDg5NjE3LCA4OTYyMiwgODk2MjcsIDg5NjMyLCA4OTYzNywgODk2NDIsIDg5NjQ3LCAKKyAgICA4OTY1MiwgODk2NTcsIDg5NjYyLCA4OTY2NywgODk2NzIsIDg5Njc3LCA4OTY4MiwgODk2ODcsIDg5NjkyLCA4OTY5NywgCisgICAgODk3MDIsIDg5NzA3LCA4OTcxMiwgODk3MTcsIDg5NzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODQ2NSwgODg0NjksIAotICAgIDg4NDc0LCA4ODQ3OSwgODg0ODQsIDg4NDg4LCA4ODQ5MywgODg0OTgsIDg4NTAzLCA4ODUwOCwgODg1MTIsIDg4NTE2LCAKLSAgICA4ODUyMSwgODg1MjYsIDg4NTMxLCA4ODUzNiwgODg1NDAsIDg4NTQ1LCA4ODU1MCwgODg1NTUsIDg4NTYwLCA4ODU2NSwgCi0gICAgODg1NzAsIDg4NTc0LCA4ODU3OSwgODg1ODQsIDg4NTg5LCA4ODU5NCwgODg1OTksIDg4NjA0LCA4ODYwOSwgMCwgODg2MTQsIAotICAgIDg4NjE5LCA4ODYyNCwgODg2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NjM2LCA4ODY0MSwgCi0gICAgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NiwgODg2OTEsIAotICAgIDg4Njk2LCA4ODcwMSwgODg3MDYsIDg4NzExLCA4ODcxNiwgODg3MjEsIDg4NzI2LCA4ODczMSwgODg3MzYsIDg4NzQxLCAKLSAgICA4ODc0NiwgODg3NTEsIDg4NzU2LCA4ODc2MSwgODg3NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NzI5LCA4OTczNCwgODk3MzksIAorICAgIDg5NzQ0LCA4OTc0OSwgODk3NTQsIDg5NzU5LCA4OTc2NCwgODk3NjksIDg5Nzc0LCA4OTc3OSwgODk3ODQsIDg5Nzg5LCAKKyAgICA4OTc5NCwgODk3OTksIDg5ODA0LCA4OTgwOSwgODk4MTQsIDg5ODE5LCA4OTgyNCwgODk4MjksIDg5ODM0LCA4OTgzOSwgCisgICAgODk4NDQsIDg5ODQ5LCA4OTg1NCwgODk4NTksIDg5ODYzLCA4OTg2NywgODk4NzEsIDAsIDg5ODc2LCA4OTg4MiwgODk4ODcsIAorICAgIDg5ODkyLCA4OTg5NywgODk5MDIsIDg5OTA4LCA4OTkxNCwgODk5MjAsIDg5OTI2LCA4OTkzMiwgODk5MzgsIDg5OTQ0LCAKKyAgICA4OTk1MCwgODk5NTYsIDg5OTYyLCA4OTk2OCwgODk5NzQsIDg5OTgwLCA4OTk4NSwgODk5OTEsIDg5OTk3LCA5MDAwMiwgCisgICAgOTAwMDgsIDkwMDEzLCA5MDAxOSwgOTAwMjUsIDkwMDMwLCA5MDAzNiwgOTAwNDIsIDkwMDQ3LCA5MDA1MywgOTAwNTksIAorICAgIDkwMDY0LCA5MDA3MCwgOTAwNzYsIDkwMDgyLCAwLCAwLCAwLCAwLCA5MDA4NywgOTAwOTMsIDkwMDk5LCA5MDEwNSwgCisgICAgOTAxMTEsIDkwMTE3LCA5MDEyMywgOTAxMjksIDkwMTM1LCA5MDE0MiwgOTAxNDcsIDkwMTUyLCA5MDE1OCwgOTAxNjQsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzczLCA4ODc3OCwgODg3ODMsIAotICAgIDg4Nzg4LCA4ODc5MywgODg3OTgsIDg4ODAzLCA4ODgwOCwgODg4MTMsIDg4ODE4LCA4ODgyMywgODg4MjgsIDg4ODMzLCAKLSAgICA4ODgzOCwgODg4NDMsIDg4ODQ4LCA4ODg1MywgODg4NTgsIDg4ODYzLCA4ODg2OCwgODg4NzMsIDg4ODc4LCA4ODg4MywgCi0gICAgODg4ODgsIDg4ODkzLCA4ODg5OCwgODg5MDMsIDg4OTA3LCA4ODkxMSwgODg5MTUsIDAsIDg4OTIwLCA4ODkyNiwgODg5MzEsIAotICAgIDg4OTM2LCA4ODk0MSwgODg5NDYsIDg4OTUyLCA4ODk1OCwgODg5NjQsIDg4OTcwLCA4ODk3NiwgODg5ODIsIDg4OTg4LCAKLSAgICA4ODk5NCwgODkwMDAsIDg5MDA2LCA4OTAxMiwgODkwMTgsIDg5MDI0LCA4OTAyOSwgODkwMzUsIDg5MDQxLCA4OTA0NiwgCi0gICAgODkwNTIsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc0LCA4OTA4MCwgODkwODYsIDg5MDkxLCA4OTA5NywgODkxMDMsIAotICAgIDg5MTA5LCA4OTExNSwgODkxMjEsIDg5MTI3LCAwLCAwLCAwLCAwLCA4OTEzMiwgODkxMzgsIDg5MTQ0LCA4OTE1MCwgCi0gICAgODkxNTYsIDg5MTYyLCA4OTE2OCwgODkxNzQsIDg5MTgwLCA4OTE4NywgODkxOTIsIDg5MTk3LCA4OTIwMywgODkyMDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5MjE1LCA4OTIyMCwgODkyMjUsIAotICAgIDg5MjMwLCA4OTIzNiwgODkyNDEsIDg5MjQ3LCA4OTI1MywgODkyNTksIDg5MjY1LCA4OTI3MiwgODkyNzgsIDg5Mjg1LCAKLSAgICA4OTI5MCwgODkyOTUsIDg5MzAwLCA4OTMwNSwgODkzMTAsIDg5MzE1LCA4OTMyMCwgODkzMjUsIDg5MzMwLCA4OTMzNSwgCi0gICAgODkzNDAsIDg5MzQ1LCA4OTM1MCwgODkzNTUsIDg5MzYwLCA4OTM2NSwgODkzNzAsIDg5Mzc1LCA4OTM4MCwgODkzODUsIAotICAgIDg5MzkwLCA4OTM5NSwgODk0MDAsIDg5NDA1LCA4OTQxMCwgODk0MTUsIDg5NDIwLCA4OTQyNSwgODk0MzAsIDg5NDM1LCAKLSAgICA4OTQ0MCwgODk0NDYsIDg5NDUxLCA4OTQ1NywgODk0NjMsIDg5NDY5LCA4OTQ3NSwgODk0ODIsIDg5NDg4LCA4OTQ5NSwgCi0gICAgODk1MDAsIDg5NTA1LCA4OTUxMCwgODk1MTUsIDg5NTIwLCA4OTUyNSwgODk1MzAsIDg5NTM1LCA4OTU0MCwgODk1NDUsIAotICAgIDg5NTUwLCA4OTU1NSwgODk1NjAsIDg5NTY1LCA4OTU3MCwgODk1NzUsIDg5NTgwLCA4OTU4NSwgODk1OTAsIDg5NTk1LCAKLSAgICA4OTYwMCwgODk2MDUsIDg5NjEwLCA4OTYxNSwgODk2MjAsIDg5NjI1LCA4OTYzMCwgODk2MzUsIDg5NjQwLCA4OTY0NSwgCi0gICAgODk2NTAsIDg5NjU1LCA4OTY2MCwgODk2NjUsIDg5NjcwLCA4OTY3NSwgODk2ODAsIDg5Njg1LCA4OTY5MCwgODk2OTUsIAotICAgIDg5NzAwLCA4OTcwNSwgODk3MTAsIDg5NzE1LCA4OTcyMCwgODk3MjUsIDg5NzMwLCA4OTczNSwgODk3NDAsIDg5NzQ1LCAKLSAgICA4OTc1MCwgODk3NTUsIDg5NzYwLCA4OTc2NSwgODk3NzAsIDg5Nzc1LCA4OTc4MCwgODk3ODUsIDg5NzkwLCA4OTc5NSwgCi0gICAgODk4MDAsIDg5ODA1LCA4OTgxMCwgODk4MTUsIDg5ODIwLCA4OTgyNSwgODk4MzAsIDg5ODM1LCA4OTg0MCwgODk4NDUsIAotICAgIDg5ODUwLCA4OTg1NSwgODk4NjAsIDg5ODY1LCA4OTg3MCwgODk4NzUsIDg5ODgwLCA4OTg4NSwgODk4OTAsIDg5ODk1LCAKLSAgICA4OTkwMCwgODk5MDUsIDg5OTEwLCA4OTkxNCwgODk5MTksIDg5OTI0LCA4OTkyOSwgODk5MzQsIDg5OTM5LCA4OTk0NCwgCi0gICAgODk5NDksIDg5OTU0LCA4OTk1OSwgODk5NjQsIDg5OTY5LCA4OTk3NCwgODk5NzgsIDg5OTgyLCA4OTk4NiwgODk5OTAsIAotICAgIDg5OTk0LCA4OTk5OCwgOTAwMDIsIDkwMDA3LCA5MDAxMiwgMCwgMCwgOTAwMTcsIDkwMDIyLCA5MDAyNiwgOTAwMzAsIAotICAgIDkwMDM0LCA5MDAzOCwgOTAwNDIsIDkwMDQ2LCA5MDA1MCwgOTAwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwMTcwLCA5MDE3NSwgOTAxODAsIAorICAgIDkwMTg1LCA5MDE5MSwgOTAxOTYsIDkwMjAyLCA5MDIwOCwgOTAyMTQsIDkwMjIwLCA5MDIyNywgOTAyMzMsIDkwMjQwLCAKKyAgICA5MDI0NSwgOTAyNTAsIDkwMjU1LCA5MDI2MCwgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgCisgICAgOTAyOTUsIDkwMzAwLCA5MDMwNSwgOTAzMTAsIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIAorICAgIDkwMzQ1LCA5MDM1MCwgOTAzNTUsIDkwMzYwLCA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCAKKyAgICA5MDM5NSwgOTA0MDEsIDkwNDA2LCA5MDQxMiwgOTA0MTgsIDkwNDI0LCA5MDQzMCwgOTA0MzcsIDkwNDQzLCA5MDQ1MCwgCisgICAgOTA0NTUsIDkwNDYwLCA5MDQ2NSwgOTA0NzAsIDkwNDc1LCA5MDQ4MCwgOTA0ODUsIDkwNDkwLCA5MDQ5NSwgOTA1MDAsIAorICAgIDkwNTA1LCA5MDUxMCwgOTA1MTUsIDkwNTIwLCA5MDUyNSwgOTA1MzAsIDkwNTM1LCA5MDU0MCwgOTA1NDUsIDkwNTUwLCAKKyAgICA5MDU1NSwgOTA1NjAsIDkwNTY1LCA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTAsIDkwNTk1LCA5MDYwMCwgCisgICAgOTA2MDUsIDkwNjEwLCA5MDYxNSwgOTA2MjAsIDkwNjI1LCA5MDYzMCwgOTA2MzUsIDkwNjQwLCA5MDY0NSwgOTA2NTAsIAorICAgIDkwNjU1LCA5MDY2MCwgOTA2NjUsIDkwNjcwLCA5MDY3NSwgOTA2ODAsIDkwNjg1LCA5MDY5MCwgOTA2OTUsIDkwNzAwLCAKKyAgICA5MDcwNSwgOTA3MTAsIDkwNzE1LCA5MDcyMCwgOTA3MjUsIDkwNzMwLCA5MDczNSwgOTA3NDAsIDkwNzQ1LCA5MDc1MCwgCisgICAgOTA3NTUsIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc1LCA5MDc4MCwgOTA3ODUsIDkwNzkwLCA5MDc5NSwgOTA4MDAsIAorICAgIDkwODA1LCA5MDgxMCwgOTA4MTUsIDkwODIwLCA5MDgyNSwgOTA4MzAsIDkwODM1LCA5MDg0MCwgOTA4NDUsIDkwODUwLCAKKyAgICA5MDg1NSwgOTA4NjAsIDkwODY1LCA5MDg2OSwgOTA4NzMsIDkwODc4LCA5MDg4MywgOTA4ODgsIDkwODkzLCA5MDg5OCwgCisgICAgOTA5MDMsIDkwOTA4LCA5MDkxMywgOTA5MTgsIDkwOTIzLCA5MDkyOCwgOTA5MzIsIDkwOTM2LCA5MDk0MCwgOTA5NDQsIAorICAgIDkwOTQ4LCA5MDk1MiwgOTA5NTYsIDkwOTYxLCA5MDk2NiwgMCwgMCwgOTA5NzEsIDkwOTc2LCA5MDk4MCwgOTA5ODQsIAorICAgIDkwOTg4LCA5MDk5MiwgOTA5OTYsIDkxMDAwLCA5MTAwNCwgOTEwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDkwMDU4LCA5MDA2MiwgOTAwNjYsIDkwMDcwLCA5MDA3NCwgOTAwNzgsIDAsIDAsIDkwMDgzLCAwLCAKLSAgICA5MDA4OCwgOTAwOTIsIDkwMDk3LCA5MDEwMiwgOTAxMDcsIDkwMTEyLCA5MDExNywgOTAxMjIsIDkwMTI3LCA5MDEzMiwgCi0gICAgOTAxMzcsIDkwMTQxLCA5MDE0NiwgOTAxNTEsIDkwMTU2LCA5MDE2MSwgOTAxNjUsIDkwMTcwLCA5MDE3NSwgOTAxODAsIAotICAgIDkwMTg1LCA5MDE4OSwgOTAxOTQsIDkwMTk5LCA5MDIwNCwgOTAyMDksIDkwMjEzLCA5MDIxOCwgOTAyMjMsIDkwMjI4LCAKLSAgICA5MDIzMywgOTAyMzgsIDkwMjQzLCA5MDI0OCwgOTAyNTMsIDkwMjU4LCA5MDI2MywgOTAyNjgsIDkwMjczLCA5MDI3NywgCi0gICAgOTAyODIsIDkwMjg3LCA5MDI5MiwgOTAyOTcsIDAsIDkwMzAyLCA5MDMwNywgMCwgMCwgMCwgOTAzMTIsIDAsIDAsIDkwMzE3LCAKLSAgICA5MDMyMiwgOTAzMjksIDkwMzM2LCA5MDM0MywgOTAzNTAsIDkwMzU3LCA5MDM2NCwgOTAzNzEsIDkwMzc4LCA5MDM4NSwgCi0gICAgOTAzOTIsIDkwMzk5LCA5MDQwNiwgOTA0MTMsIDkwNDIwLCA5MDQyNywgOTA0MzQsIDkwNDQxLCA5MDQ0OCwgOTA0NTUsIAotICAgIDkwNDYyLCA5MDQ2OSwgMCwgOTA0NzYsIDkwNDgzLCA5MDQ4OSwgOTA0OTUsIDkwNTAxLCA5MDUwOCwgOTA1MTUsIDkwNTIzLCAKLSAgICA5MDUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA1NDAsIDkwNTQ1LCA5MDU1MCwgOTA1NTUsIDkwNTYwLCA5MDU2NSwgCi0gICAgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkwLCA5MDU5NSwgOTA2MDAsIDkwNjA1LCA5MDYxMCwgOTA2MTUsIAotICAgIDkwNjIwLCA5MDYyNSwgOTA2MzAsIDkwNjM1LCA5MDY0MCwgOTA2NDUsIDkwNjUwLCA5MDY1NCwgOTA2NTksIDkwNjY0LCAKLSAgICA5MDY3MCwgOTA2NzQsIDAsIDAsIDAsIDkwNjc4LCA5MDY4NCwgOTA2ODgsIDkwNjkzLCA5MDY5OCwgOTA3MDMsIDkwNzA3LCAKLSAgICA5MDcxMiwgOTA3MTYsIDkwNzIxLCA5MDcyNiwgOTA3MzAsIDkwNzM0LCA5MDczOCwgOTA3NDIsIDkwNzQ2LCA5MDc1MSwgCi0gICAgOTA3NTYsIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc0LCA5MDc3OSwgOTA3ODQsIDkwNzg5LCA5MDc5NCwgOTA3OTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDkwODA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MTAxMiwgOTEwMTYsIDkxMDIwLCA5MTAyNCwgOTEwMjgsIDkxMDMyLCAwLCAwLCA5MTAzNywgMCwgCisgICAgOTEwNDIsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYxLCA5MTA2NiwgOTEwNzEsIDkxMDc2LCA5MTA4MSwgOTEwODYsIAorICAgIDkxMDkxLCA5MTA5NSwgOTExMDAsIDkxMTA1LCA5MTExMCwgOTExMTUsIDkxMTE5LCA5MTEyNCwgOTExMjksIDkxMTM0LCAKKyAgICA5MTEzOSwgOTExNDMsIDkxMTQ4LCA5MTE1MywgOTExNTgsIDkxMTYzLCA5MTE2NywgOTExNzIsIDkxMTc3LCA5MTE4MiwgCisgICAgOTExODcsIDkxMTkxLCA5MTE5NiwgOTEyMDEsIDkxMjA2LCA5MTIxMSwgOTEyMTYsIDkxMjIxLCA5MTIyNiwgOTEyMzAsIAorICAgIDkxMjM1LCA5MTI0MCwgOTEyNDUsIDkxMjUwLCAwLCA5MTI1NSwgOTEyNjAsIDAsIDAsIDAsIDkxMjY1LCAwLCAwLCA5MTI3MCwgCisgICAgOTEyNzUsIDkxMjgyLCA5MTI4OSwgOTEyOTYsIDkxMzAzLCA5MTMxMCwgOTEzMTcsIDkxMzI0LCA5MTMzMSwgOTEzMzgsIAorICAgIDkxMzQ1LCA5MTM1MiwgOTEzNTksIDkxMzY2LCA5MTM3MywgOTEzODAsIDkxMzg3LCA5MTM5NCwgOTE0MDEsIDkxNDA4LCAKKyAgICA5MTQxNSwgOTE0MjIsIDAsIDkxNDI5LCA5MTQzNiwgOTE0NDIsIDkxNDQ4LCA5MTQ1NCwgOTE0NjEsIDkxNDY4LCA5MTQ3NiwgCisgICAgOTE0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDkzLCA5MTQ5OCwgOTE1MDMsIDkxNTA4LCA5MTUxMywgOTE1MTgsIAorICAgIDkxNTIzLCA5MTUyOCwgOTE1MzMsIDkxNTM4LCA5MTU0MywgOTE1NDgsIDkxNTUzLCA5MTU1OCwgOTE1NjMsIDkxNTY4LCAKKyAgICA5MTU3MywgOTE1NzgsIDkxNTgzLCA5MTU4OCwgOTE1OTMsIDkxNTk4LCA5MTYwMywgOTE2MDcsIDkxNjEyLCA5MTYxNywgCisgICAgOTE2MjMsIDkxNjI3LCAwLCAwLCAwLCA5MTYzMSwgOTE2MzcsIDkxNjQxLCA5MTY0NiwgOTE2NTEsIDkxNjU2LCA5MTY2MCwgCisgICAgOTE2NjUsIDkxNjY5LCA5MTY3NCwgOTE2NzksIDkxNjgzLCA5MTY4NywgOTE2OTIsIDkxNjk2LCA5MTcwMCwgOTE3MDUsIAorICAgIDkxNzEwLCA5MTcxNCwgOTE3MTksIDkxNzI0LCA5MTcyOSwgOTE3MzQsIDkxNzM5LCA5MTc0NCwgOTE3NDksIDkxNzU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA4MDksIAotICAgIDkwODEzLCA5MDgxOCwgOTA4MjMsIDAsIDkwODI5LCA5MDgzNCwgMCwgMCwgMCwgMCwgMCwgOTA4MzksIDkwODQ1LCA5MDg1MiwgCi0gICAgOTA4NTcsIDkwODYyLCA5MDg2NiwgOTA4NzEsIDkwODc2LCAwLCA5MDg4MSwgOTA4ODYsIDkwODkxLCAwLCA5MDg5NiwgCi0gICAgOTA5MDEsIDkwOTA2LCA5MDkxMSwgOTA5MTYsIDkwOTIxLCA5MDkyNiwgOTA5MzEsIDkwOTM2LCA5MDk0MSwgOTA5NDYsIAotICAgIDkwOTUwLCA5MDk1NCwgOTA5NTksIDkwOTY0LCA5MDk2OSwgOTA5NzMsIDkwOTc3LCA5MDk4MSwgOTA5ODYsIDkwOTkxLCAKLSAgICA5MDk5NiwgOTEwMDEsIDkxMDA2LCA5MTAxMSwgOTEwMTUsIDkxMDIwLCAwLCAwLCAwLCAwLCA5MTAyNSwgOTEwMzEsIAotICAgIDkxMDM2LCAwLCAwLCAwLCAwLCA5MTA0MSwgOTEwNDUsIDkxMDQ5LCA5MTA1MywgOTEwNTcsIDkxMDYxLCA5MTA2NiwgCi0gICAgOTEwNzEsIDkxMDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTA4MywgOTEwODksIDkxMDk2LCA5MTEwMiwgOTExMDksIAotICAgIDkxMTE1LCA5MTEyMSwgOTExMjcsIDkxMTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTE0MCwgOTExNDgsIDkxMTU2LCAKLSAgICA5MTE2NCwgOTExNzIsIDkxMTgwLCA5MTE4OCwgOTExOTYsIDkxMjA0LCA5MTIxMiwgOTEyMjAsIDkxMjI4LCA5MTIzNiwgCi0gICAgOTEyNDQsIDkxMjUyLCA5MTI2MCwgOTEyNjgsIDkxMjc2LCA5MTI4NCwgOTEyOTIsIDkxMzAwLCA5MTMwOCwgOTEzMTYsIAotICAgIDkxMzI0LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCA5MTM1NiwgOTEzNjQsIDkxMzcyLCA5MTM3OSwgOTEzODcsIDkxMzk1LCAKLSAgICA5MTM5OSwgOTE0MDQsIDkxNDA5LCA5MTQxNCwgOTE0MTksIDkxNDI0LCA5MTQyOSwgOTE0MzQsIDkxNDM4LCA5MTQ0MywgCi0gICAgOTE0NDcsIDkxNDUyLCA5MTQ1NiwgOTE0NjEsIDkxNDY1LCA5MTQ3MCwgOTE0NzUsIDkxNDgwLCA5MTQ4NSwgOTE0OTAsIAotICAgIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCA5MTUzMCwgOTE1MzUsIDkxNTQwLCAKLSAgICA5MTU0NSwgOTE1NTAsIDkxNTU1LCA5MTU2MCwgOTE1NjUsIDkxNTcwLCA5MTU3NSwgOTE1ODAsIDkxNTg1LCA5MTU5MCwgCi0gICAgOTE1OTUsIDkxNjAwLCA5MTYwNSwgOTE2MTAsIDkxNjE1LCA5MTYyMCwgOTE2MjUsIDkxNjMwLCA5MTYzNSwgOTE2NDAsIAotICAgIDkxNjQ1LCA5MTY1MCwgOTE2NTUsIDAsIDAsIDAsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgyLCA5MTY5MSwgOTE3MDAsIAotICAgIDkxNzExLCA5MTcyMiwgOTE3MjksIDkxNzM2LCA5MTc0MywgOTE3NTAsIDkxNzU3LCA5MTc2NCwgOTE3NzEsIDkxNzc4LCAKLSAgICA5MTc4NSwgOTE3OTIsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIDkxODIwLCA5MTgyNywgOTE4MzQsIDkxODQxLCA5MTg0OCwgCi0gICAgOTE4NTUsIDkxODYyLCA5MTg2OSwgMCwgMCwgOTE4NzYsIDkxODgyLCA5MTg4OCwgOTE4OTQsIDkxOTAwLCA5MTkwNywgCi0gICAgOTE5MTQsIDkxOTIyLCA5MTkzMCwgOTE5MzcsIDkxOTQ0LCA5MTk1MSwgOTE5NTgsIDkxOTY1LCA5MTk3MiwgOTE5NzksIAotICAgIDkxOTg2LCA5MTk5MywgOTIwMDAsIDkyMDA3LCA5MjAxNCwgOTIwMjEsIDkyMDI4LCA5MjAzNSwgOTIwNDIsIDkyMDQ5LCAKLSAgICA5MjA1NiwgMCwgMCwgMCwgMCwgMCwgOTIwNjMsIDkyMDY5LCA5MjA3NSwgOTIwODEsIDkyMDg3LCA5MjA5NCwgOTIxMDEsIAotICAgIDkyMTA5LCA5MjExNywgOTIxMjMsIDkyMTI5LCA5MjEzNiwgOTIxNDIsIDkyMTQ4LCA5MjE1NCwgOTIxNjAsIDkyMTY3LCAKLSAgICA5MjE3NCwgOTIxODEsIDkyMTg4LCA5MjE5NSwgOTIyMDIsIDkyMjA5LCA5MjIxNiwgOTIyMjMsIDkyMjMwLCA5MjIzNywgCi0gICAgOTIyNDQsIDkyMjUxLCA5MjI1OCwgOTIyNjUsIDkyMjcyLCA5MjI3OSwgOTIyODYsIDkyMjkzLCA5MjMwMCwgOTIzMDcsIAotICAgIDkyMzE0LCA5MjMyMSwgOTIzMjgsIDkyMzM1LCA5MjM0MiwgOTIzNDksIDkyMzU2LCA5MjM2MywgOTIzNzAsIDkyMzc3LCAKLSAgICA5MjM4NCwgOTIzOTEsIDkyMzk4LCA5MjQwNSwgOTI0MTIsIDkyNDE5LCA5MjQyNiwgOTI0MzMsIDkyNDQwLCA5MjQ0NywgCi0gICAgOTI0NTQsIDkyNDYxLCA5MjQ2OCwgOTI0NzUsIDkyNDgyLCA5MjQ4OSwgOTI0OTYsIDkyNTAzLCA5MjUxMCwgOTI1MTcsIAotICAgIDkyNTI0LCA5MjUzMSwgOTI1MzgsIDkyNTQ1LCA5MjU1MiwgOTI1NTksIDkyNTY2LCA5MjU3MywgOTI1ODAsIDkyNTg3LCAKLSAgICA5MjU5NCwgOTI2MDEsIDkyNjA4LCA5MjYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3NjQsIAorICAgIDkxNzcwLCA5MTc3NiwgOTE3ODIsIDkxNzg4LCA5MTc5NCwgOTE4MDEsIDkxODA4LCA5MTgxNSwgOTE4MjEsIDkxODI3LCAKKyAgICA5MTgzMywgOTE4NDAsIDkxODQ3LCA5MTg1NCwgOTE4NjAsIDkxODY3LCA5MTg3NCwgOTE4ODEsIDkxODg4LCA5MTg5NCwgCisgICAgOTE5MDEsIDkxOTA4LCA5MTkxNCwgOTE5MjEsIDkxOTI4LCA5MTkzNSwgOTE5NDIsIDkxOTQ5LCA5MTk1NSwgOTE5NjIsIAorICAgIDkxOTY5LCA5MTk3NiwgOTE5ODIsIDkxOTg4LCA5MTk5NCwgOTIwMDAsIDkyMDA2LCA5MjAxMywgOTIwMjAsIDkyMDI2LCAKKyAgICA5MjAzMiwgOTIwMzgsIDkyMDQ1LCA5MjA1MSwgOTIwNTgsIDkyMDY1LCA5MjA3MiwgOTIwNzgsIDkyMDg2LCA5MjA5MywgCisgICAgOTIwOTksIDkyMTA2LCA5MjExMywgOTIxMjAsIDkyMTI2LCAwLCAwLCAwLCAwLCAwLCAwLCA5MjEzMywgOTIxNDEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMTQ5LCA5MjE1MywgOTIxNTgsIDkyMTYzLCAwLCAKKyAgICA5MjE2OSwgOTIxNzQsIDAsIDAsIDAsIDAsIDAsIDkyMTc5LCA5MjE4NSwgOTIxOTIsIDkyMTk3LCA5MjIwMiwgOTIyMDYsIAorICAgIDkyMjExLCA5MjIxNiwgMCwgOTIyMjEsIDkyMjI2LCA5MjIzMSwgMCwgOTIyMzYsIDkyMjQxLCA5MjI0NiwgOTIyNTEsIAorICAgIDkyMjU2LCA5MjI2MSwgOTIyNjYsIDkyMjcxLCA5MjI3NiwgOTIyODEsIDkyMjg2LCA5MjI5MCwgOTIyOTQsIDkyMjk5LCAKKyAgICA5MjMwNCwgOTIzMDksIDkyMzEzLCA5MjMxNywgOTIzMjEsIDkyMzI2LCA5MjMzMSwgOTIzMzYsIDkyMzQxLCA5MjM0NSwgCisgICAgOTIzNTAsIDkyMzU0LCA5MjM1OSwgMCwgMCwgMCwgMCwgOTIzNjQsIDkyMzcwLCA5MjM3NSwgMCwgMCwgMCwgMCwgOTIzODAsIAorICAgIDkyMzg0LCA5MjM4OCwgOTIzOTIsIDkyMzk2LCA5MjQwMCwgOTI0MDUsIDkyNDEwLCA5MjQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTI0MjIsIDkyNDI4LCA5MjQzNSwgOTI0NDEsIDkyNDQ4LCA5MjQ1NCwgOTI0NjAsIDkyNDY2LCA5MjQ3MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTI0NzksIDkyNDg3LCA5MjQ5NSwgOTI1MDMsIDkyNTExLCA5MjUxOSwgOTI1MjcsIDkyNTM1LCAKKyAgICA5MjU0MywgOTI1NTEsIDkyNTU5LCA5MjU2NywgOTI1NzUsIDkyNTgzLCA5MjU5MSwgOTI1OTksIDkyNjA3LCA5MjYxNSwgCisgICAgOTI2MjMsIDkyNjMxLCA5MjYzOSwgOTI2NDcsIDkyNjU1LCA5MjY2MywgOTI2NzEsIDkyNjc5LCA5MjY4NywgOTI2OTUsIAorICAgIDkyNzAzLCA5MjcxMSwgOTI3MTgsIDkyNzI2LCA5MjczNCwgOTI3MzgsIDkyNzQzLCA5Mjc0OCwgOTI3NTMsIDkyNzU4LCAKKyAgICA5Mjc2MywgOTI3NjgsIDkyNzczLCA5Mjc3NywgOTI3ODIsIDkyNzg2LCA5Mjc5MSwgOTI3OTUsIDkyODAwLCA5MjgwNCwgCisgICAgOTI4MDksIDkyODE0LCA5MjgxOSwgOTI4MjQsIDkyODI5LCA5MjgzNCwgOTI4MzksIDkyODQ0LCA5Mjg0OSwgOTI4NTQsIAorICAgIDkyODU5LCA5Mjg2NCwgOTI4NjksIDkyODc0LCA5Mjg3OSwgOTI4ODQsIDkyODg5LCA5Mjg5NCwgOTI4OTksIDkyOTA0LCAKKyAgICA5MjkwOSwgOTI5MTQsIDkyOTE5LCA5MjkyNCwgOTI5MjksIDkyOTM0LCA5MjkzOSwgOTI5NDQsIDkyOTQ5LCA5Mjk1NCwgCisgICAgOTI5NTksIDkyOTY0LCA5Mjk2OSwgOTI5NzQsIDkyOTc5LCA5Mjk4NCwgOTI5ODksIDkyOTk0LCAwLCAwLCAwLCA5Mjk5OSwgCisgICAgOTMwMDQsIDkzMDEzLCA5MzAyMSwgOTMwMzAsIDkzMDM5LCA5MzA1MCwgOTMwNjEsIDkzMDY4LCA5MzA3NSwgOTMwODIsIAorICAgIDkzMDg5LCA5MzA5NiwgOTMxMDMsIDkzMTEwLCA5MzExNywgOTMxMjQsIDkzMTMxLCA5MzEzOCwgOTMxNDUsIDkzMTUyLCAKKyAgICA5MzE1OSwgOTMxNjYsIDkzMTczLCA5MzE4MCwgOTMxODcsIDkzMTk0LCA5MzIwMSwgOTMyMDgsIDAsIDAsIDkzMjE1LCAKKyAgICA5MzIyMSwgOTMyMjcsIDkzMjMzLCA5MzIzOSwgOTMyNDYsIDkzMjUzLCA5MzI2MSwgOTMyNjksIDkzMjc2LCA5MzI4MywgCisgICAgOTMyOTAsIDkzMjk3LCA5MzMwNCwgOTMzMTEsIDkzMzE4LCA5MzMyNSwgOTMzMzIsIDkzMzM5LCA5MzM0NiwgOTMzNTMsIAorICAgIDkzMzYwLCA5MzM2NywgOTMzNzQsIDkzMzgxLCA5MzM4OCwgOTMzOTUsIDAsIDAsIDAsIDAsIDAsIDkzNDAyLCA5MzQwOCwgCisgICAgOTM0MTQsIDkzNDIwLCA5MzQyNiwgOTM0MzMsIDkzNDQwLCA5MzQ0OCwgOTM0NTYsIDkzNDYyLCA5MzQ2OCwgOTM0NzUsIAorICAgIDkzNDgxLCA5MzQ4NywgOTM0OTMsIDkzNDk5LCA5MzUwNiwgOTM1MTMsIDkzNTIwLCA5MzUyNywgOTM1MzQsIDkzNTQxLCAKKyAgICA5MzU0OCwgOTM1NTUsIDkzNTYyLCA5MzU2OSwgOTM1NzYsIDkzNTgzLCA5MzU5MCwgOTM1OTcsIDkzNjA0LCA5MzYxMSwgCisgICAgOTM2MTgsIDkzNjI1LCA5MzYzMiwgOTM2MzksIDkzNjQ2LCA5MzY1MywgOTM2NjAsIDkzNjY3LCA5MzY3NCwgOTM2ODEsIAorICAgIDkzNjg4LCA5MzY5NSwgOTM3MDIsIDkzNzA5LCA5MzcxNiwgOTM3MjMsIDkzNzMwLCA5MzczNywgOTM3NDQsIDkzNzUxLCAKKyAgICA5Mzc1OCwgOTM3NjUsIDkzNzcyLCA5Mzc3OSwgOTM3ODYsIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE0LCA5MzgyMSwgCisgICAgOTM4MjgsIDkzODM1LCA5Mzg0MiwgOTM4NDksIDkzODU2LCA5Mzg2MywgOTM4NzAsIDkzODc3LCA5Mzg4NCwgOTM4OTEsIAorICAgIDkzODk4LCA5MzkwNSwgOTM5MTIsIDkzOTE5LCA5MzkyNiwgOTM5MzMsIDkzOTQwLCA5Mzk0NywgOTM5NTQsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyNjIyLCA5MjYyNiwgOTI2MzAsIAotICAgIDkyNjM0LCA5MjYzOCwgOTI2NDIsIDkyNjQ2LCA5MjY1MCwgOTI2NTQsIDkyNjU4LCA5MjY2MywgOTI2NjgsIDkyNjczLCAKLSAgICA5MjY3OCwgOTI2ODMsIDkyNjg4LCA5MjY5MywgOTI2OTgsIDkyNzAzLCA5MjcwOSwgOTI3MTUsIDkyNzIxLCA5MjcyOCwgCi0gICAgOTI3MzUsIDkyNzQyLCA5Mjc0OSwgOTI3NTYsIDkyNzYzLCA5Mjc3MCwgOTI3NzcsIDkyNzg0LCAwLCA5Mjc5MSwgOTI3OTUsIAotICAgIDkyNzk5LCA5MjgwMywgOTI4MDcsIDkyODExLCA5MjgxNCwgOTI4MTgsIDkyODIxLCA5MjgyNSwgOTI4MjgsIDkyODMyLCAKLSAgICA5MjgzNiwgOTI4NDEsIDkyODQ1LCA5Mjg1MCwgOTI4NTMsIDkyODU3LCA5Mjg2MCwgOTI4NjQsIDkyODY3LCA5Mjg3MSwgCi0gICAgOTI4NzUsIDkyODc5LCA5Mjg4MywgOTI4ODcsIDkyODkxLCA5Mjg5NSwgOTI4OTksIDkyOTAzLCA5MjkwNywgOTI5MTEsIAotICAgIDkyOTE1LCA5MjkxOSwgOTI5MjMsIDkyOTI3LCA5MjkzMSwgOTI5MzUsIDkyOTM5LCA5Mjk0MiwgOTI5NDUsIDkyOTQ5LCAKLSAgICA5Mjk1MywgOTI5NTcsIDkyOTYwLCA5Mjk2MywgOTI5NjYsIDkyOTcwLCA5Mjk3NCwgOTI5NzgsIDkyOTgyLCA5Mjk4NiwgCi0gICAgOTI5ODksIDkyOTkzLCA5Mjk5OSwgOTMwMDUsIDkzMDExLCA5MzAxNiwgOTMwMjMsIDkzMDI3LCA5MzAzMiwgOTMwMzYsIAotICAgIDkzMDQxLCA5MzA0NiwgOTMwNTIsIDkzMDU3LCA5MzA2MywgOTMwNjcsIDkzMDcyLCA5MzA3NiwgOTMwODEsIDkzMDg0LCAKLSAgICA5MzA4NywgOTMwOTEsIDkzMDk2LCA5MzEwMiwgOTMxMDcsIDkzMTEzLCAwLCAwLCAwLCAwLCA5MzExOCwgOTMxMjEsIAotICAgIDkzMTI0LCA5MzEyNywgOTMxMzAsIDkzMTMzLCA5MzEzNiwgOTMxMzksIDkzMTQyLCA5MzE0NSwgOTMxNDksIDkzMTUzLCAKLSAgICA5MzE1NywgOTMxNjEsIDkzMTY1LCA5MzE2OSwgOTMxNzMsIDkzMTc3LCA5MzE4MSwgOTMxODYsIDkzMTkxLCA5MzE5NSwgCi0gICAgOTMxOTgsIDkzMjAxLCA5MzIwNCwgOTMyMDcsIDkzMjEwLCA5MzIxMywgOTMyMTYsIDkzMjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzIyMiwgOTMyMjYsIDkzMjMwLCA5MzIzNCwgOTMyMzcsIDkzMjQxLCAKLSAgICA5MzI0NCwgOTMyNDgsIDkzMjUxLCA5MzI1NSwgOTMyNTgsIDkzMjYyLCA5MzI2NSwgOTMyNjksIDkzMjcyLCA5MzI3NiwgCi0gICAgOTMyODAsIDkzMjg0LCA5MzI4OCwgOTMyOTIsIDkzMjk2LCA5MzMwMCwgOTMzMDQsIDkzMzA4LCA5MzMxMiwgOTMzMTYsIAotICAgIDkzMzIwLCA5MzMyNCwgOTMzMjgsIDkzMzMyLCA5MzMzNiwgOTMzNDAsIDkzMzQ0LCA5MzM0OCwgOTMzNTIsIDkzMzU1LCAKLSAgICA5MzM1OCwgOTMzNjIsIDkzMzY2LCA5MzM3MCwgOTMzNzMsIDkzMzc2LCA5MzM3OSwgOTMzODMsIDkzMzg3LCA5MzM5MSwgCi0gICAgOTMzOTUsIDkzMzk5LCA5MzQwMiwgOTM0MDcsIDkzNDExLCA5MzQxNiwgOTM0MjAsIDkzNDI1LCA5MzQyOSwgOTM0MzQsIAotICAgIDkzNDM4LCA5MzQ0MywgOTM0NDcsIDkzNDUxLCA5MzQ1NSwgOTM0NTksIDkzNDYyLCA5MzQ2NiwgOTM0NzEsIDkzNDc0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5Mzk2MSwgOTM5NjUsIDkzOTY5LCA5Mzk3MywgOTM5NzcsIDkzOTgxLCA5Mzk4NSwgOTM5ODksIAorICAgIDkzOTkzLCA5Mzk5NywgOTQwMDIsIDk0MDA3LCA5NDAxMiwgOTQwMTcsIDk0MDIyLCA5NDAyNywgOTQwMzIsIDk0MDM3LCAKKyAgICA5NDA0MiwgOTQwNDgsIDk0MDU0LCA5NDA2MCwgOTQwNjcsIDk0MDc0LCA5NDA4MSwgOTQwODgsIDk0MDk1LCA5NDEwMiwgCisgICAgOTQxMDksIDk0MTE2LCA5NDEyMywgMCwgOTQxMzAsIDk0MTM0LCA5NDEzOCwgOTQxNDIsIDk0MTQ2LCA5NDE1MCwgOTQxNTMsIAorICAgIDk0MTU3LCA5NDE2MCwgOTQxNjQsIDk0MTY3LCA5NDE3MSwgOTQxNzUsIDk0MTgwLCA5NDE4NCwgOTQxODksIDk0MTkyLCAKKyAgICA5NDE5NiwgOTQxOTksIDk0MjAzLCA5NDIwNiwgOTQyMTAsIDk0MjE0LCA5NDIxOCwgOTQyMjIsIDk0MjI2LCA5NDIzMCwgCisgICAgOTQyMzQsIDk0MjM4LCA5NDI0MiwgOTQyNDYsIDk0MjUwLCA5NDI1NCwgOTQyNTgsIDk0MjYyLCA5NDI2NiwgOTQyNzAsIAorICAgIDk0Mjc0LCA5NDI3OCwgOTQyODEsIDk0Mjg0LCA5NDI4OCwgOTQyOTIsIDk0Mjk2LCA5NDI5OSwgOTQzMDIsIDk0MzA1LCAKKyAgICA5NDMwOSwgOTQzMTMsIDk0MzE3LCA5NDMyMSwgOTQzMjQsIDk0MzI3LCA5NDMzMSwgOTQzMzcsIDk0MzQzLCA5NDM0OSwgCisgICAgOTQzNTQsIDk0MzYxLCA5NDM2NSwgOTQzNzAsIDk0Mzc0LCA5NDM3OSwgOTQzODQsIDk0MzkwLCA5NDM5NSwgOTQ0MDEsIAorICAgIDk0NDA1LCA5NDQxMCwgOTQ0MTQsIDk0NDE5LCA5NDQyMiwgOTQ0MjUsIDk0NDI5LCA5NDQzNCwgOTQ0NDAsIDk0NDQ1LCAKKyAgICA5NDQ1MSwgMCwgMCwgMCwgMCwgOTQ0NTYsIDk0NDU5LCA5NDQ2MiwgOTQ0NjUsIDk0NDY4LCA5NDQ3MSwgOTQ0NzQsIAorICAgIDk0NDc3LCA5NDQ4MCwgOTQ0ODMsIDk0NDg3LCA5NDQ5MSwgOTQ0OTUsIDk0NDk5LCA5NDUwMywgOTQ1MDcsIDk0NTExLCAKKyAgICA5NDUxNSwgOTQ1MTksIDk0NTI0LCA5NDUyOSwgOTQ1MzMsIDk0NTM2LCA5NDUzOSwgOTQ1NDIsIDk0NTQ1LCA5NDU0OCwgCisgICAgOTQ1NTEsIDk0NTU0LCA5NDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQ1NjAsIDk0NTY1LCA5NDU3MCwgOTQ1NzUsIDk0NTc5LCA5NDU4NCwgOTQ1ODgsIDk0NTkzLCA5NDU5NywgOTQ2MDIsIAorICAgIDk0NjA2LCA5NDYxMSwgOTQ2MTUsIDk0NjIwLCA5NDYyNCwgOTQ2MjksIDk0NjM0LCA5NDYzOSwgOTQ2NDQsIDk0NjQ5LCAKKyAgICA5NDY1NCwgOTQ2NTksIDk0NjY0LCA5NDY2OSwgOTQ2NzQsIDk0Njc5LCA5NDY4NCwgOTQ2ODksIDk0Njk0LCA5NDY5OSwgCisgICAgOTQ3MDQsIDk0NzA5LCA5NDcxNCwgOTQ3MTksIDk0NzI0LCA5NDcyOCwgOTQ3MzIsIDk0NzM3LCA5NDc0MiwgOTQ3NDcsIAorICAgIDk0NzUxLCA5NDc1NSwgOTQ3NTksIDk0NzY0LCA5NDc2OSwgOTQ3NzQsIDk0Nzc5LCA5NDc4MywgOTQ3ODcsIDk0NzkzLCAKKyAgICA5NDc5OCwgOTQ4MDQsIDk0ODA5LCA5NDgxNSwgOTQ4MjAsIDk0ODI2LCA5NDgzMSwgOTQ4MzcsIDk0ODQyLCA5NDg0NywgCisgICAgOTQ4NTIsIDk0ODU3LCA5NDg2MSwgOTQ4NjYsIDk0ODcyLCA5NDg3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTQ4ODEsIDk0ODg4LCA5NDg5NSwgOTQ5MDIsIDk0OTA5LCA5NDkxNiwgOTQ5MjMsIDk0OTMwLCAKKyAgICA5NDkzNywgOTQ5NDQsIDk0OTUxLCA5NDk1OCwgOTQ5NjUsIDk0OTcyLCA5NDk3OSwgOTQ5ODYsIDk0OTkzLCA5NTAwMCwgCisgICAgOTUwMDcsIDk1MDE0LCA5NTAyMSwgOTUwMjgsIDk1MDM1LCA5NTA0MiwgOTUwNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1MDU2LCA5NTA2MywgOTUwNjksIDk1MDc1LCA5NTA4MSwgOTUwODcsIDk1MDkzLCA5NTA5OSwgOTUxMDUsIDk1MTExLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5NTExNywgOTUxMjIsIDk1MTI3LCA5NTEzMiwgOTUxMzcsIDk1MTQxLCA5NTE0NSwgOTUxNDksIAorICAgIDk1MTU0LCA5NTE1OSwgOTUxNjQsIDk1MTY5LCA5NTE3NCwgOTUxNzksIDk1MTg0LCA5NTE4OSwgOTUxOTQsIDk1MTk5LCAKKyAgICA5NTIwNCwgOTUyMDksIDk1MjE0LCA5NTIxOSwgOTUyMjQsIDk1MjI5LCA5NTIzNCwgOTUyMzksIDk1MjQ0LCA5NTI0OSwgCisgICAgOTUyNTQsIDk1MjU5LCA5NTI2NCwgOTUyNjksIDk1Mjc0LCA5NTI3OSwgOTUyODQsIDk1Mjg5LCA5NTI5NCwgOTUyOTksIAorICAgIDk1MzA0LCA5NTMwOSwgOTUzMTQsIDk1MzE5LCA5NTMyNSwgOTUzMzAsIDk1MzM2LCA5NTM0MSwgOTUzNDcsIDk1MzUyLCAKKyAgICA5NTM1OCwgOTUzNjQsIDk1MzY4LCA5NTM3MywgOTUzNzcsIDAsIDk1MzgxLCA5NTM4NiwgOTUzOTAsIDk1Mzk0LCA5NTM5OCwgCisgICAgOTU0MDIsIDk1NDA2LCA5NTQxMCwgOTU0MTQsIDk1NDE4LCA5NTQyMiwgOTU0MjcsIDk1NDMxLCA5NTQzNiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM0NzgsIDkzNDgxLCA5MzQ4NiwgOTM0OTIsIDkzNTAwLCAKLSAgICA5MzUwNSwgOTM1MTEsIDkzNTE5LCA5MzUyNSwgOTM1MzEsIDkzNTM1LCA5MzUzOSwgOTM1NDYsIDkzNTU1LCA5MzU2MiwgCi0gICAgOTM1NzEsIDkzNTc3LCA5MzU4NiwgOTM1OTMsIDkzNjAwLCA5MzYwNywgOTM2MTcsIDkzNjIzLCA5MzYyNywgOTM2MzQsIAotICAgIDkzNjQzLCA5MzY1MywgOTM2NjAsIDkzNjY3LCA5MzY3MSwgOTM2NzUsIDkzNjgyLCA5MzY5MiwgOTM2OTYsIDkzNzAzLCAKLSAgICA5MzcxMCwgOTM3MTcsIDkzNzIzLCA5MzczMCwgOTM3MzcsIDkzNzQ0LCA5Mzc1MSwgOTM3NTUsIDkzNzU5LCA5Mzc2MywgCi0gICAgOTM3NzAsIDkzNzc0LCA5Mzc4MSwgOTM3ODgsIDkzODAyLCA5MzgxMSwgOTM4MTUsIDkzODE5LCA5MzgyMywgOTM4MzAsIAotICAgIDkzODM0LCA5MzgzOCwgOTM4NDIsIDkzODUwLCA5Mzg1OCwgOTM4NzcsIDkzODg3LCA5MzkwNywgOTM5MTEsIDkzOTE1LCAKLSAgICA5MzkxOSwgOTM5MjMsIDkzOTI3LCA5MzkzMSwgOTM5MzUsIDkzOTQyLCA5Mzk0NiwgOTM5NDksIDkzOTUzLCA5Mzk1NywgCi0gICAgOTM5NjMsIDkzOTcwLCA5Mzk3OSwgOTM5ODMsIDkzOTkyLCA5NDAwMSwgOTQwMDksIDk0MDEzLCA5NDAyMCwgOTQwMjQsIAotICAgIDk0MDI4LCA5NDAzMiwgOTQwMzYsIDk0MDQ3LCA5NDA1NiwgOTQwNjUsIDk0MDc0LCA5NDA4MywgOTQwOTUsIDk0MTA0LCAKLSAgICA5NDExMywgOTQxMjIsIDk0MTMwLCA5NDEzOSwgOTQxNTEsIDk0MTYwLCA5NDE2OSwgOTQxNzgsIDk0MTkwLCA5NDE5OSwgCi0gICAgOTQyMDgsIDk0MjIwLCA5NDIyOSwgOTQyMzgsIDk0MjUwLCA5NDI1OSwgOTQyNjMsIDk0MjY3LCA5NDI3MSwgOTQyNzUsIAotICAgIDk0Mjc5LCA5NDI4MywgOTQyODcsIDk0Mjk0LCA5NDI5OCwgOTQzMDIsIDk0MzEzLCA5NDMxNywgOTQzMjEsIDk0MzI4LCAKLSAgICA5NDMzNCwgOTQzNDAsIDk0MzQ0LCA5NDM1MSwgOTQzNTUsIDk0MzU5LCA5NDM2MywgOTQzNjcsIDk0MzcxLCA5NDM3NSwgCi0gICAgOTQzODEsIDk0Mzg5LCA5NDM5MywgOTQzOTcsIDk0NDAwLCA5NDQwNiwgOTQ0MTYsIDk0NDIwLCA5NDQzMiwgOTQ0MzksIAotICAgIDk0NDQ2LCA5NDQ1MywgOTQ0NjAsIDk0NDY2LCA5NDQ3MCwgOTQ0NzQsIDk0NDc4LCA5NDQ4MiwgOTQ0ODksIDk0NDk4LCAKLSAgICA5NDUwNSwgOTQ1MTMsIDk0NTIxLCA5NDUyNywgOTQ1MzEsIDk0NTM1LCA5NDUzOSwgOTQ1NDMsIDk0NTQ5LCA5NDU1OCwgCi0gICAgOTQ1NzAsIDk0NTc3LCA5NDU4NCwgOTQ1OTMsIDk0NjA0LCA5NDYxMCwgOTQ2MTksIDk0NjI4LCA5NDYzNSwgOTQ2NDQsIAotICAgIDk0NjUxLCA5NDY1OCwgOTQ2NjgsIDk0Njc1LCA5NDY4MiwgOTQ2ODksIDk0Njk2LCA5NDcwMCwgOTQ3MDYsIDk0NzEwLCAKLSAgICA5NDcyMSwgOTQ3MjksIDk0NzM4LCA5NDc1MCwgOTQ3NTcsIDk0NzY0LCA5NDc3NCwgOTQ3ODEsIDk0NzkwLCA5NDc5NywgCi0gICAgOTQ4MDYsIDk0ODEzLCA5NDgyMCwgOTQ4MzAsIDk0ODM3LCA5NDg0NCwgOTQ4NTQsIDk0ODYxLCA5NDg3MywgOTQ4ODIsIAotICAgIDk0ODg5LCA5NDg5NiwgOTQ5MDMsIDk0OTEyLCA5NDkyMiwgOTQ5MzUsIDk0OTQyLCA5NDk1MiwgOTQ5NjIsIDk0OTY5LCAKLSAgICA5NDk3OCwgOTQ5OTEsIDk0OTk4LCA5NTAwNSwgOTUwMTIsIDk1MDIyLCA5NTAzMiwgOTUwMzksIDk1MDQ5LCA5NTA1NiwgCi0gICAgOTUwNjMsIDk1MDczLCA5NTA3OSwgOTUwODYsIDk1MDkzLCA5NTEwMCwgOTUxMTAsIDk1MTE3LCA5NTEyNCwgOTUxMzEsIAotICAgIDk1MTM3LCA5NTE0NCwgOTUxNTQsIDk1MTYxLCA5NTE2NSwgOTUxNzMsIDk1MTc3LCA5NTE4OSwgOTUxOTMsIDk1MjA3LCAKLSAgICA5NTIxMSwgOTUyMTUsIDk1MjE5LCA5NTIyMywgOTUyMjksIDk1MjM2LCA5NTI0NCwgOTUyNDgsIDk1MjUyLCA5NTI1NiwgCi0gICAgOTUyNjAsIDk1MjY3LCA5NTI3MSwgOTUyNzcsIDk1MjgzLCA5NTI5MSwgOTUyOTUsIDk1MzAyLCA5NTMxMCwgOTUzMTQsIAotICAgIDk1MzE4LCA5NTMyNCwgOTUzMjgsIDk1MzM3LCA5NTM0NiwgOTUzNTMsIDk1MzYzLCA5NTM2OSwgOTUzNzMsIDk1Mzc3LCAKLSAgICA5NTM4NSwgOTUzOTIsIDk1Mzk5LCA5NTQwNSwgOTU0MDksIDk1NDE3LCA5NTQyMSwgOTU0MjgsIDk1NDQwLCA5NTQ0NywgCi0gICAgOTU0NTcsIDk1NDYzLCA5NTQ2NywgOTU0NzYsIDk1NDgzLCA5NTQ5MiwgOTU0OTYsIDk1NTAwLCA5NTUwNywgOTU1MTEsIAotICAgIDk1NTE1LCA5NTUxOSwgOTU1MjMsIDk1NTI2LCA5NTUzMiwgOTU1MzgsIDk1NTQyLCA5NTU0NiwgOTU1NTMsIDk1NTYwLCAKLSAgICA5NTU2NywgOTU1NzQsIDk1NTgxLCA5NTU4OCwgOTU1OTUsIDk1NjAyLCA5NTYwOCwgOTU2MTIsIDk1NjE2LCA5NTYyMywgCi0gICAgOTU2MzAsIDk1NjM3LCA5NTY0NCwgOTU2NTEsIDk1NjU1LCA5NTY1OCwgOTU2NjMsIDk1NjY3LCA5NTY3MSwgOTU2ODAsIAotICAgIDk1Njg5LCA5NTY5MywgOTU2OTcsIDk1NzAzLCA5NTcwOSwgOTU3MjYsIDk1NzMyLCA5NTczNiwgOTU3NDUsIDk1NzQ5LCAKLSAgICA5NTc1MywgOTU3NjAsIDk1NzY4LCA5NTc3NiwgOTU3ODIsIDk1Nzg2LCA5NTc5MCwgOTU3OTQsIDk1Nzk4LCA5NTgwMSwgCi0gICAgOTU4MDcsIDk1ODE0LCA5NTgyNCwgOTU4MzEsIDk1ODM4LCA5NTg0NSwgOTU4NTEsIDk1ODU4LCA5NTg2NSwgOTU4NzIsIAotICAgIDk1ODc5LCA5NTg4NiwgOTU4OTUsIDk1OTAyLCA5NTkxNCwgOTU5MjEsIDk1OTI4LCA5NTkzOCwgOTU5NDksIDk1OTU2LCAKLSAgICA5NTk2MywgOTU5NzAsIDk1OTc3LCA5NTk4NCwgOTU5OTEsIDk1OTk4LCA5NjAwNSwgOTYwMTIsIDk2MDE5LCA5NjAyOSwgCi0gICAgOTYwMzksIDk2MDQ5LCA5NjA1NiwgOTYwNjYsIDk2MDczLCA5NjA4MCwgOTYwODcsIDk2MDk0LCA5NjEwMSwgOTYxMDgsIAotICAgIDk2MTE1LCA5NjEyMiwgOTYxMjksIDk2MTM2LCA5NjE0MywgOTYxNTAsIDk2MTU3LCA5NjE2MywgOTYxNzAsIDk2MTc3LCAKLSAgICA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNCwgOTYyMTIsIDk2MjE2LCA5NjIyMCwgOTYyMjQsIDk2MjI4LCA5NjIzMiwgCi0gICAgOTYyMzksIDk2MjQzLCA5NjI1MiwgOTYyNTYsIDk2MjYzLCA5NjI3MSwgOTYyNzUsIDk2Mjc5LCA5NjI4MywgOTYyOTYsIAotICAgIDk2MzEyLCA5NjMxNiwgOTYzMjAsIDk2MzI3LCA5NjMzMywgOTYzNDAsIDk2MzQ0LCA5NjM0OCwgOTYzNTIsIDk2MzU2LCAKLSAgICA5NjM2MCwgOTYzNjcsIDk2MzcxLCA5NjM4OSwgOTYzOTMsIDk2Mzk3LCA5NjQwNCwgOTY0MDgsIDk2NDEyLCA5NjQxOCwgCi0gICAgOTY0MjIsIDk2NDI2LCA5NjQzNCwgOTY0MzgsIDk2NDQyLCA5NjQ0NiwgOTY0NTAsIDk2NDU2LCA5NjQ2NywgOTY0NzYsIAotICAgIDk2NDg1LCA5NjQ5MiwgOTY0OTksIDk2NTEwLCA5NjUxNywgOTY1MjQsIDk2NTMxLCA5NjUzOCwgOTY1NDUsIDk2NTUyLCAKLSAgICA5NjU1OSwgOTY1NjksIDk2NTc1LCA5NjU4MiwgOTY1OTIsIDk2NjAxLCA5NjYwOCwgOTY2MTcsIDk2NjI3LCA5NjYzNCwgCi0gICAgOTY2NDEsIDk2NjQ4LCA5NjY1NSwgOTY2NjcsIDk2Njc0LCA5NjY4MSwgOTY2ODgsIDk2Njk1LCA5NjcwMiwgOTY3MTIsIAotICAgIDk2NzE5LCA5NjcyNiwgOTY3MzYsIDk2NzQ5LCA5Njc2MSwgOTY3NjgsIDk2Nzc4LCA5Njc4NSwgOTY3OTIsIDk2Nzk5LCAKLSAgICA5NjgxMywgOTY4MTksIDk2ODI3LCA5NjgzNywgOTY4NDcsIDk2ODU0LCA5Njg2MSwgOTY4NjcsIDk2ODcxLCA5Njg3OCwgCi0gICAgOTY4ODgsIDk2ODk0LCA5NjkwNywgOTY5MTEsIDk2OTE1LCA5NjkyMiwgOTY5MjYsIDk2OTMzLCA5Njk0MywgOTY5NDcsIAotICAgIDk2OTUxLCA5Njk1NSwgOTY5NTksIDk2OTYzLCA5Njk3MCwgOTY5NzQsIDk2OTgxLCA5Njk4OCwgOTY5OTUsIDk3MDA0LCAKLSAgICA5NzAxMywgOTcwMjMsIDk3MDMwLCA5NzAzNywgOTcwNDQsIDk3MDU0LCA5NzA2MSwgOTcwNzEsIDk3MDc4LCA5NzA4OCwgCi0gICAgOTcwOTUsIDk3MTAyLCA5NzExMiwgOTcxMjIsIDk3MTI5LCA5NzEzNSwgOTcxNDMsIDk3MTUxLCA5NzE1NywgOTcxNjMsIAotICAgIDk3MTY3LCA5NzE3MSwgOTcxNzgsIDk3MTg2LCA5NzE5MiwgOTcxOTYsIDk3MjAwLCA5NzIwNCwgOTcyMTEsIDk3MjIzLCAKLSAgICA5NzIyNiwgOTcyMzMsIDk3MjM5LCA5NzI0MywgOTcyNDcsIDk3MjUxLCA5NzI1NSwgOTcyNTksIDk3MjYzLCA5NzI2NywgCi0gICAgOTcyNzEsIDk3Mjc1LCA5NzI3OSwgOTcyODYsIDk3MjkwLCA5NzI5NiwgOTczMDAsIDk3MzA0LCA5NzMwOCwgOTczMTQsIAotICAgIDk3MzIxLCA5NzMyOCwgOTczMzUsIDk3MzQ2LCA5NzM1NCwgOTczNTgsIDk3MzY0LCA5NzM3MywgOTczODAsIDk3Mzg2LCAKLSAgICA5NzM4OSwgOTczOTMsIDk3Mzk3LCA5NzQwMywgOTc0MTIsIDk3NDIwLCA5NzQyNCwgOTc0MzAsIDk3NDM0LCA5NzQzOCwgCi0gICAgOTc0NDIsIDk3NDQ4LCA5NzQ1NSwgOTc0NjEsIDk3NDY1LCA5NzQ3MSwgOTc0NzUsIDk3NDc5LCA5NzQ4OCwgOTc1MDAsIAotICAgIDk3NTA0LCA5NzUxMSwgOTc1MTgsIDk3NTI4LCA5NzUzNSwgOTc1NDcsIDk3NTU0LCA5NzU2MSwgOTc1NjgsIDk3NTc5LCAKLSAgICA5NzU4OSwgOTc2MDIsIDk3NjEyLCA5NzYxOSwgOTc2MjMsIDk3NjI3LCA5NzYzMSwgOTc2MzUsIDk3NjQ0LCA5NzY1MywgCi0gICAgOTc2NjIsIDk3Njc5LCA5NzY4OCwgOTc2OTQsIDk3NzAxLCA5NzcwOSwgOTc3MjIsIDk3NzI2LCA5NzczNSwgOTc3NDQsIAotICAgIDk3NzUzLCA5Nzc2MiwgOTc3NzMsIDk3NzgyLCA5Nzc5MSwgOTc4MDAsIDk3ODA5LCA5NzgxOCwgOTc4MjcsIDk3ODM3LCAKLSAgICA5Nzg0MCwgOTc4NDQsIDk3ODQ4LCA5Nzg1MiwgOTc4NTYsIDk3ODYwLCA5Nzg2NiwgOTc4NzMsIDk3ODgwLCA5Nzg4NywgCi0gICAgOTc4OTMsIDk3ODk5LCA5NzkwNiwgOTc5MTIsIDk3OTE5LCA5NzkyNywgOTc5MzEsIDk3OTM4LCA5Nzk0NSwgOTc5NTIsIAotICAgIDk3OTYwLCA5Nzk2MywgOTc5NjcsIDk3OTcxLCA5Nzk3NSwgOTc5NzksIDk3OTg1LCA5Nzk4OSwgOTc5OTUsIDk4MDAyLCAKLSAgICA5ODAwOSwgOTgwMTUsIDk4MDIyLCA5ODAyOSwgOTgwMzYsIDk4MDQzLCA5ODA1MCwgOTgwNTcsIDk4MDY0LCA5ODA3MSwgCi0gICAgOTgwNzgsIDk4MDg1LCA5ODA5MiwgOTgwOTksIDk4MTA2LCA5ODExMywgOTgxMTksIDk4MTIzLCA5ODEzMiwgOTgxMzYsIAotICAgIDk4MTQwLCA5ODE0NCwgOTgxNDgsIDk4MTU0LCA5ODE2MSwgOTgxNjgsIDk4MTc1LCA5ODE4MiwgOTgxODksIDk4MTk1LCAKLSAgICA5ODIwMywgOTgyMDcsIDk4MjExLCA5ODIxNSwgOTgyMTksIDk4MjI1LCA5ODI0MiwgOTgyNTksIDk4MjYzLCA5ODI2NywgCi0gICAgOTgyNzEsIDk4Mjc1LCA5ODI3OSwgOTgyODMsIDk4Mjg5LCA5ODI5NiwgOTgzMDAsIDk4MzA2LCA5ODMxMywgOTgzMjAsIAotICAgIDk4MzI3LCA5ODMzNCwgOTgzNDEsIDk4MzUwLCA5ODM1NywgOTgzNjQsIDk4MzcxLCA5ODM3OCwgOTgzODIsIDk4Mzg2LCAKLSAgICA5ODM5MiwgOTg0MDQsIDk4NDA4LCA5ODQxMiwgOTg0MjEsIDk4NDI1LCA5ODQyOSwgOTg0MzMsIDk4NDM5LCA5ODQ0MywgCi0gICAgOTg0NDcsIDk4NDU2LCA5ODQ2MCwgOTg0NjQsIDk4NDY4LCA5ODQ3NSwgOTg0NzksIDk4NDgzLCA5ODQ4NywgOTg0OTEsIAotICAgIDk4NDk1LCA5ODQ5OSwgOTg1MDMsIDk4NTA3LCA5ODUxMywgOTg1MjAsIDk4NTI3LCA5ODUzMywgOTg1MzcsIDk4NTU0LCAKLSAgICA5ODU2MCwgOTg1NjQsIDk4NTcwLCA5ODU3NiwgOTg1ODIsIDk4NTg4LCA5ODU5NCwgOTg2MDAsIDk4NjA0LCA5ODYwOCwgCi0gICAgOTg2MTIsIDk4NjE4LCA5ODYyMiwgOTg2MjgsIDk4NjMyLCA5ODYzNiwgOTg2NDMsIDk4NjUwLCA5ODY2NywgOTg2NzEsIAotICAgIDk4Njc1LCA5ODY3OSwgOTg2ODMsIDk4Njg3LCA5ODY5OSwgOTg3MDIsIDk4NzA3LCA5ODcxMiwgOTg3MjcsIDk4NzM3LCAKLSAgICA5ODc0OSwgOTg3NTMsIDk4NzU3LCA5ODc2MSwgOTg3NjcsIDk4Nzc0LCA5ODc4MSwgOTg3OTEsIDk4ODAzLCA5ODgwOSwgCi0gICAgOTg4MTUsIDk4ODI0LCA5ODgyOCwgOTg4MzIsIDk4ODM5LCA5ODg0OSwgOTg4NTYsIDk4ODYyLCA5ODg2NiwgOTg4NzAsIAotICAgIDk4ODc3LCA5ODg4MywgOTg4ODcsIDk4ODkzLCA5ODg5NywgOTg5MDUsIDk4OTExLCA5ODkxNSwgOTg5MjMsIDk4OTMxLCAKLSAgICA5ODkzOCwgOTg5NDQsIDk4OTUxLCA5ODk1OCwgOTg5NjgsIDk4OTc4LCA5ODk4MiwgOTg5ODYsIDk4OTkwLCA5ODk5NCwgCi0gICAgOTkwMDAsIDk5MDA3LCA5OTAxMywgOTkwMjAsIDk5MDI3LCA5OTAzNCwgOTkwNDMsIDk5MDUwLCA5OTA1NywgOTkwNjMsIAotICAgIDk5MDcwLCA5OTA3NywgOTkwODQsIDk5MDkxLCA5OTA5OCwgOTkxMDUsIDk5MTExLCA5OTExOCwgOTkxMjUsIDk5MTMyLCAKLSAgICA5OTE0MSwgOTkxNDgsIDk5MTU1LCA5OTE1OSwgOTkxNjUsIDk5MTY5LCA5OTE3NSwgOTkxODIsIDk5MTg5LCA5OTE5NiwgCi0gICAgOTkyMDAsIDk5MjA0LCA5OTIwOCwgOTkyMTIsIDk5MjE2LCA5OTIyMywgOTkyMjcsIDk5MjMxLCA5OTIzNywgOTkyNDUsIAotICAgIDk5MjQ5LCA5OTI1MywgOTkyNTcsIDk5MjYxLCA5OTI2OCwgOTkyNzIsIDk5Mjc2LCA5OTI4NCwgOTkyODgsIDk5MjkyLCAKLSAgICA5OTI5NiwgOTkzMDAsIDk5MzA2LCA5OTMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTkzMTQsIDk5MzIwLCA5OTMyNiwgOTkzMzMsIDk5MzQwLCA5OTM0NywgOTkzNTQsIDk5MzYxLCA5OTM2OCwgCi0gICAgOTkzNzQsIDk5MzgxLCA5OTM4OCwgOTkzOTUsIDk5NDAyLCA5OTQwOSwgOTk0MTYsIDk5NDIyLCA5OTQyOCwgOTk0MzQsIAotICAgIDk5NDQwLCA5OTQ0NiwgOTk0NTIsIDk5NDU4LCA5OTQ2NCwgOTk0NzAsIDk5NDc3LCA5OTQ4NCwgOTk0OTEsIDk5NDk4LCAKLSAgICA5OTUwNSwgOTk1MTIsIDk5NTE4LCA5OTUyNCwgOTk1MzAsIDk5NTM3LCA5OTU0NCwgOTk1NTAsIDk5NTU2LCA5OTU2NSwgCi0gICAgOTk1NzIsIDk5NTc5LCA5OTU4NiwgOTk1OTMsIDk5NjAwLCA5OTYwNywgOTk2MTMsIDk5NjE5LCA5OTYyNSwgOTk2MzQsIAotICAgIDk5NjQxLCA5OTY0OCwgOTk2NTksIDk5NjcwLCA5OTY3NiwgOTk2ODIsIDk5Njg4LCA5OTY5NywgOTk3MDQsIDk5NzExLCAKLSAgICA5OTcyMSwgOTk3MzEsIDk5NzQyLCA5OTc1MywgOTk3NjUsIDk5Nzc4LCA5OTc4OSwgOTk4MDAsIDk5ODEyLCA5OTgyNSwgCi0gICAgOTk4MzYsIDk5ODQ3LCA5OTg1OCwgOTk4NjksIDk5ODgwLCA5OTg5MiwgOTk5MDAsIDk5OTA4LCA5OTkxNywgOTk5MjYsIAotICAgIDk5OTM1LCA5OTk0MSwgOTk5NDcsIDk5OTUzLCA5OTk2MCwgOTk5NzAsIDk5OTc3LCA5OTk4NywgOTk5OTIsIDk5OTk3LCAKLSAgICAxMDAwMDMsIDEwMDAwOSwgMTAwMDE3LCAxMDAwMjUsIDEwMDAzNCwgMTAwMDQ1LCAxMDAwNTYsIDEwMDA2NCwgMTAwMDcyLCAKLSAgICAxMDAwODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDA5MCwgMTAwMTAxLCAxMDAxMDgsIAotICAgIDEwMDExNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMTI0LCAxMDAxMjgsIDEwMDEzMiwgCi0gICAgMTAwMTM2LCAxMDAxNDAsIDEwMDE0NCwgMTAwMTQ4LCAxMDAxNTIsIDEwMDE1NiwgMTAwMTYwLCAxMDAxNjQsIDEwMDE2OCwgCi0gICAgMTAwMTcyLCAxMDAxNzYsIDEwMDE4MCwgMTAwMTg0LCAxMDAxODgsIDEwMDE5MiwgMTAwMTk2LCAxMDAyMDAsIDEwMDIwNCwgCi0gICAgMTAwMjA4LCAxMDAyMTIsIDEwMDIxNiwgMTAwMjIwLCAxMDAyMjQsIDEwMDIyOCwgMTAwMjMyLCAxMDAyMzYsIDEwMDI0MCwgCi0gICAgMTAwMjQ0LCAxMDAyNDgsIDEwMDI1MiwgMTAwMjU2LCAxMDAyNjAsIDEwMDI2NCwgMTAwMjY4LCAxMDAyNzIsIDEwMDI3NiwgCi0gICAgMTAwMjgwLCAxMDAyODQsIDEwMDI4OCwgMTAwMjkyLCAxMDAyOTYsIDEwMDMwMCwgMTAwMzA0LCAxMDAzMDgsIDEwMDMxMiwgCi0gICAgMTAwMzE2LCAxMDAzMjAsIDEwMDMyNCwgMTAwMzI4LCAxMDAzMzIsIDEwMDMzNiwgMTAwMzQwLCAxMDAzNDQsIDEwMDM0OCwgCi0gICAgMTAwMzUyLCAxMDAzNTYsIDEwMDM2MCwgMTAwMzY0LCAxMDAzNjgsIDEwMDM3MiwgMTAwMzc2LCAxMDAzODAsIDEwMDM4NCwgCi0gICAgMTAwMzg4LCAxMDAzOTIsIDEwMDM5NiwgMTAwNDAwLCAxMDA0MDQsIDEwMDQwOCwgMTAwNDEyLCAxMDA0MTYsIDEwMDQyMCwgCi0gICAgMTAwNDI0LCAxMDA0MjgsIDEwMDQzMiwgMTAwNDM2LCAxMDA0NDAsIDEwMDQ0NCwgMTAwNDQ4LCAxMDA0NTIsIDEwMDQ1NiwgCi0gICAgMTAwNDYwLCAxMDA0NjQsIDEwMDQ2OCwgMTAwNDcyLCAxMDA0NzYsIDEwMDQ4MCwgMTAwNDg0LCAxMDA0ODgsIDEwMDQ5MiwgCi0gICAgMTAwNDk2LCAxMDA1MDAsIDEwMDUwNCwgMTAwNTA4LCAxMDA1MTIsIDEwMDUxNiwgMTAwNTIwLCAxMDA1MjQsIDEwMDUyOCwgCi0gICAgMTAwNTMyLCAxMDA1MzYsIDEwMDU0MCwgMTAwNTQ0LCAxMDA1NDgsIDEwMDU1MiwgMTAwNTU2LCAxMDA1NjAsIDEwMDU2NCwgCi0gICAgMTAwNTY4LCAxMDA1NzIsIDEwMDU3NiwgMTAwNTgwLCAxMDA1ODQsIDEwMDU4OCwgMTAwNTkyLCAxMDA1OTYsIDEwMDYwMCwgCi0gICAgMTAwNjA0LCAxMDA2MDgsIDEwMDYxMiwgMTAwNjE2LCAxMDA2MjAsIDEwMDYyNCwgMTAwNjI4LCAxMDA2MzIsIDEwMDYzNiwgCi0gICAgMTAwNjQwLCAxMDA2NDQsIDEwMDY0OCwgMTAwNjUyLCAxMDA2NTYsIDEwMDY2MCwgMTAwNjY0LCAxMDA2NjgsIDEwMDY3MiwgCi0gICAgMTAwNjc2LCAxMDA2ODAsIDEwMDY4NCwgMTAwNjg4LCAxMDA2OTIsIDEwMDY5NiwgMTAwNzAwLCAxMDA3MDQsIDEwMDcwOCwgCi0gICAgMTAwNzEyLCAxMDA3MTYsIDEwMDcyMCwgMTAwNzI0LCAxMDA3MjgsIDEwMDczMiwgMTAwNzM2LCAxMDA3NDAsIDEwMDc0NCwgCi0gICAgMTAwNzQ4LCAxMDA3NTIsIDEwMDc1NiwgMTAwNzYwLCAxMDA3NjQsIDEwMDc2OCwgMTAwNzcyLCAxMDA3NzYsIDEwMDc4MCwgCi0gICAgMTAwNzg0LCAxMDA3ODgsIDEwMDc5MiwgMTAwNzk2LCAxMDA4MDAsIDEwMDgwNCwgMTAwODA4LCAxMDA4MTIsIDEwMDgxNiwgCi0gICAgMTAwODIwLCAxMDA4MjQsIDEwMDgyOCwgMTAwODMyLCAxMDA4MzYsIDEwMDg0MCwgMTAwODQ0LCAxMDA4NDgsIDEwMDg1MiwgCi0gICAgMTAwODU2LCAxMDA4NjAsIDEwMDg2NCwgMTAwODY4LCAxMDA4NzIsIDEwMDg3NiwgMTAwODgwLCAxMDA4ODQsIDEwMDg4OCwgCi0gICAgMTAwODkyLCAxMDA4OTYsIDEwMDkwMCwgMTAwOTA0LCAxMDA5MDgsIDEwMDkxMiwgMTAwOTE2LCAxMDA5MjAsIDEwMDkyNCwgCi0gICAgMTAwOTI4LCAxMDA5MzIsIDEwMDkzNiwgMTAwOTQwLCAxMDA5NDQsIDEwMDk0OCwgMTAwOTUyLCAxMDA5NTYsIDEwMDk2MCwgCi0gICAgMTAwOTY0LCAxMDA5NjgsIDEwMDk3MiwgMTAwOTc2LCAxMDA5ODAsIDEwMDk4NCwgMTAwOTg4LCAxMDA5OTIsIDEwMDk5NiwgCi0gICAgMTAxMDAwLCAxMDEwMDQsIDEwMTAwOCwgMTAxMDEyLCAxMDEwMTYsIDEwMTAyMCwgMTAxMDI0LCAxMDEwMjgsIDEwMTAzMiwgCi0gICAgMTAxMDM2LCAxMDEwNDAsIDEwMTA0NCwgMTAxMDQ4LCAxMDEwNTIsIDEwMTA1NiwgMTAxMDYwLCAxMDEwNjQsIDEwMTA2OCwgCi0gICAgMTAxMDcyLCAxMDEwNzYsIDEwMTA4MCwgMTAxMDg0LCAxMDEwODgsIDEwMTA5MiwgMTAxMDk2LCAxMDExMDAsIDEwMTEwNCwgCi0gICAgMTAxMTA4LCAxMDExMTIsIDEwMTExNiwgMTAxMTIwLCAxMDExMjQsIDEwMTEyOCwgMTAxMTMyLCAxMDExMzYsIDEwMTE0MCwgCi0gICAgMTAxMTQ0LCAxMDExNDgsIDEwMTE1MiwgMTAxMTU2LCAxMDExNjAsIDEwMTE2NCwgMTAxMTY4LCAxMDExNzIsIDEwMTE3NiwgCi0gICAgMTAxMTgwLCAxMDExODQsIDEwMTE4OCwgMTAxMTkyLCAxMDExOTYsIDEwMTIwMCwgMTAxMjA0LCAxMDEyMDgsIDEwMTIxMiwgCi0gICAgMTAxMjE2LCAxMDEyMjAsIDEwMTIyNCwgMTAxMjI4LCAxMDEyMzIsIDEwMTIzNiwgMTAxMjQwLCAxMDEyNDQsIDEwMTI0OCwgCi0gICAgMTAxMjUyLCAxMDEyNTYsIDEwMTI2MCwgMTAxMjY0LCAxMDEyNjgsIDEwMTI3MiwgMTAxMjc2LCAxMDEyODAsIDEwMTI4NCwgCi0gICAgMTAxMjg4LCAxMDEyOTIsIDEwMTI5NiwgMTAxMzAwLCAxMDEzMDQsIDEwMTMwOCwgMTAxMzEyLCAxMDEzMTYsIDEwMTMyMCwgCi0gICAgMTAxMzI0LCAxMDEzMjgsIDEwMTMzMiwgMTAxMzM2LCAxMDEzNDAsIDEwMTM0NCwgMTAxMzQ4LCAxMDEzNTIsIDEwMTM1NiwgCi0gICAgMTAxMzYwLCAxMDEzNjQsIDEwMTM2OCwgMTAxMzcyLCAxMDEzNzYsIDEwMTM4MCwgMTAxMzg0LCAxMDEzODgsIDEwMTM5MiwgCi0gICAgMTAxMzk2LCAxMDE0MDAsIDEwMTQwNCwgMTAxNDA4LCAxMDE0MTIsIDEwMTQxNiwgMTAxNDIwLCAxMDE0MjQsIDEwMTQyOCwgCi0gICAgMTAxNDMyLCAxMDE0MzYsIDEwMTQ0MCwgMTAxNDQ0LCAxMDE0NDgsIDEwMTQ1MiwgMTAxNDU2LCAxMDE0NjAsIDEwMTQ2NCwgCi0gICAgMTAxNDY4LCAxMDE0NzIsIDEwMTQ3NiwgMTAxNDgwLCAxMDE0ODQsIDEwMTQ4OCwgMTAxNDkyLCAxMDE0OTYsIDEwMTUwMCwgCi0gICAgMTAxNTA0LCAxMDE1MDgsIDEwMTUxMiwgMTAxNTE2LCAxMDE1MjAsIDEwMTUyNCwgMTAxNTI4LCAxMDE1MzIsIDEwMTUzNiwgCi0gICAgMTAxNTQwLCAxMDE1NDQsIDEwMTU0OCwgMTAxNTUyLCAxMDE1NTYsIDEwMTU2MCwgMTAxNTY0LCAxMDE1NjgsIDEwMTU3MiwgCi0gICAgMTAxNTc2LCAxMDE1ODAsIDEwMTU4NCwgMTAxNTg4LCAxMDE1OTIsIDEwMTU5NiwgMTAxNjAwLCAxMDE2MDQsIDEwMTYwOCwgCi0gICAgMTAxNjEyLCAxMDE2MTYsIDEwMTYyMCwgMTAxNjI0LCAxMDE2MjgsIDEwMTYzMiwgMTAxNjM2LCAxMDE2NDAsIDEwMTY0NCwgCi0gICAgMTAxNjQ4LCAxMDE2NTIsIDEwMTY1NiwgMTAxNjYwLCAxMDE2NjQsIDEwMTY2OCwgMTAxNjcyLCAxMDE2NzYsIDEwMTY4MCwgCi0gICAgMTAxNjg0LCAxMDE2ODgsIDEwMTY5MiwgMTAxNjk2LCAxMDE3MDAsIDEwMTcwNCwgMTAxNzA4LCAxMDE3MTIsIDEwMTcxNiwgCi0gICAgMTAxNzIwLCAxMDE3MjQsIDEwMTcyOCwgMTAxNzMyLCAxMDE3MzYsIDEwMTc0MCwgMTAxNzQ0LCAxMDE3NDgsIDEwMTc1MiwgCi0gICAgMTAxNzU2LCAxMDE3NjAsIDEwMTc2NCwgMTAxNzY4LCAxMDE3NzIsIDEwMTc3NiwgMTAxNzgwLCAxMDE3ODQsIDEwMTc4OCwgCi0gICAgMTAxNzkyLCAxMDE3OTYsIDEwMTgwMCwgMTAxODA0LCAxMDE4MDgsIDEwMTgxMiwgMTAxODE2LCAxMDE4MjAsIDEwMTgyNCwgCi0gICAgMTAxODI4LCAxMDE4MzIsIDEwMTgzNiwgMTAxODQwLCAxMDE4NDQsIDEwMTg0OCwgMTAxODUyLCAxMDE4NTYsIDEwMTg2MCwgCi0gICAgMTAxODY0LCAxMDE4NjgsIDEwMTg3MiwgMTAxODc2LCAxMDE4ODAsIDEwMTg4NCwgMTAxODg4LCAxMDE4OTIsIDEwMTg5NiwgCi0gICAgMTAxOTAwLCAxMDE5MDQsIDEwMTkwOCwgMTAxOTEyLCAxMDE5MTYsIDEwMTkyMCwgMTAxOTI0LCAxMDE5MjgsIDEwMTkzMiwgCi0gICAgMTAxOTM2LCAxMDE5NDAsIDEwMTk0NCwgMTAxOTQ4LCAxMDE5NTIsIDEwMTk1NiwgMTAxOTYwLCAxMDE5NjQsIDEwMTk2OCwgCi0gICAgMTAxOTcyLCAxMDE5NzYsIDEwMTk4MCwgMTAxOTg0LCAxMDE5ODgsIDEwMTk5MiwgMTAxOTk2LCAxMDIwMDAsIDEwMjAwNCwgCi0gICAgMTAyMDA4LCAxMDIwMTIsIDEwMjAxNiwgMTAyMDIwLCAxMDIwMjQsIDEwMjAyOCwgMTAyMDMyLCAxMDIwMzYsIDEwMjA0MCwgCi0gICAgMTAyMDQ0LCAxMDIwNDgsIDEwMjA1MiwgMTAyMDU2LCAxMDIwNjAsIDEwMjA2NCwgMTAyMDY4LCAxMDIwNzIsIDEwMjA3NiwgCi0gICAgMTAyMDgwLCAxMDIwODQsIDEwMjA4OCwgMTAyMDkyLCAxMDIwOTYsIDEwMjEwMCwgMTAyMTA0LCAxMDIxMDgsIDEwMjExMiwgCi0gICAgMTAyMTE2LCAxMDIxMjAsIDEwMjEyNCwgMTAyMTI4LCAxMDIxMzIsIDEwMjEzNiwgMTAyMTQwLCAxMDIxNDQsIDEwMjE0OCwgCi0gICAgMTAyMTUyLCAxMDIxNTYsIDEwMjE2MCwgMTAyMTY0LCAxMDIxNjgsIDEwMjE3MiwgMTAyMTc2LCAxMDIxODAsIDEwMjE4NCwgCi0gICAgMTAyMTg4LCAxMDIxOTIsIDEwMjE5NiwgMTAyMjAwLCAxMDIyMDQsIDEwMjIwOCwgMTAyMjEyLCAxMDIyMTYsIDEwMjIyMCwgCi0gICAgMTAyMjI0LCAxMDIyMjgsIDEwMjIzMiwgMTAyMjM2LCAxMDIyNDAsIDEwMjI0NCwgMTAyMjQ4LCAxMDIyNTIsIDEwMjI1NiwgCi0gICAgMTAyMjYwLCAxMDIyNjQsIDEwMjI2OCwgMTAyMjcyLCAxMDIyNzYsIDEwMjI4MCwgMTAyMjg0LCAxMDIyODgsIDEwMjI5MiwgCi0gICAgMTAyMjk2LCAxMDIzMDAsIDEwMjMwNCwgMTAyMzA4LCAxMDIzMTIsIDEwMjMxNiwgMTAyMzIwLCAxMDIzMjQsIDEwMjMyOCwgCi0gICAgMTAyMzMyLCAxMDIzMzYsIDEwMjM0MCwgMTAyMzQ0LCAxMDIzNDgsIDEwMjM1MiwgMTAyMzU2LCAxMDIzNjAsIDEwMjM2NCwgCi0gICAgMTAyMzY4LCAxMDIzNzIsIDEwMjM3NiwgMTAyMzgwLCAxMDIzODQsIDEwMjM4OCwgMTAyMzkyLCAxMDIzOTYsIDEwMjQwMCwgCi0gICAgMTAyNDA0LCAxMDI0MDgsIDEwMjQxMiwgMTAyNDE2LCAxMDI0MjAsIDEwMjQyNCwgMTAyNDI4LCAxMDI0MzIsIDEwMjQzNiwgCi0gICAgMTAyNDQwLCAxMDI0NDQsIDEwMjQ0OCwgMTAyNDUyLCAxMDI0NTYsIDEwMjQ2MCwgMTAyNDY0LCAxMDI0NjgsIDEwMjQ3MiwgCi0gICAgMTAyNDc2LCAxMDI0ODAsIDEwMjQ4NCwgMTAyNDg4LCAxMDI0OTIsIDEwMjQ5NiwgMTAyNTAwLCAxMDI1MDQsIDEwMjUwOCwgCi0gICAgMTAyNTEyLCAxMDI1MTYsIDEwMjUyMCwgMTAyNTI0LCAxMDI1MjgsIDEwMjUzMiwgMTAyNTM2LCAxMDI1NDAsIDEwMjU0NCwgCi0gICAgMTAyNTQ4LCAxMDI1NTIsIDEwMjU1NiwgMTAyNTYwLCAxMDI1NjQsIDEwMjU2OCwgMTAyNTcyLCAxMDI1NzYsIDEwMjU4MCwgCi0gICAgMTAyNTg0LCAxMDI1ODgsIDEwMjU5MiwgMTAyNTk2LCAxMDI2MDAsIDEwMjYwNCwgMTAyNjA4LCAxMDI2MTIsIDEwMjYxNiwgCi0gICAgMTAyNjIwLCAxMDI2MjQsIDEwMjYyOCwgMTAyNjMyLCAxMDI2MzYsIDEwMjY0MCwgMTAyNjQ0LCAxMDI2NDgsIDEwMjY1MiwgCi0gICAgMTAyNjU2LCAxMDI2NjAsIDEwMjY2NCwgMTAyNjY4LCAxMDI2NzIsIDEwMjY3NiwgMTAyNjgwLCAxMDI2ODQsIDEwMjY4OCwgCi0gICAgMTAyNjkyLCAxMDI2OTYsIDEwMjcwMCwgMTAyNzA0LCAxMDI3MDgsIDEwMjcxMiwgMTAyNzE2LCAxMDI3MjAsIDEwMjcyNCwgCi0gICAgMTAyNzI4LCAxMDI3MzIsIDEwMjczNiwgMTAyNzQwLCAxMDI3NDQsIDEwMjc0OCwgMTAyNzUyLCAxMDI3NTYsIDEwMjc2MCwgCi0gICAgMTAyNzY0LCAxMDI3NjgsIDEwMjc3MiwgMTAyNzc2LCAxMDI3ODAsIDEwMjc4NCwgMTAyNzg4LCAxMDI3OTIsIDEwMjc5NiwgCi0gICAgMTAyODAwLCAxMDI4MDQsIDEwMjgwOCwgMTAyODEyLCAxMDI4MTYsIDEwMjgyMCwgMTAyODI0LCAxMDI4MjgsIDEwMjgzMiwgCi0gICAgMTAyODM2LCAxMDI4NDAsIDEwMjg0NCwgMTAyODQ4LCAxMDI4NTIsIDEwMjg1NiwgMTAyODYwLCAxMDI4NjQsIDEwMjg2OCwgCi0gICAgMTAyODcyLCAxMDI4NzYsIDEwMjg4MCwgMTAyODg0LCAxMDI4ODgsIDEwMjg5MiwgMTAyODk2LCAxMDI5MDAsIDEwMjkwNCwgCi0gICAgMTAyOTA4LCAxMDI5MTIsIDEwMjkxNiwgMTAyOTIwLCAxMDI5MjQsIDEwMjkyOCwgMTAyOTMyLCAxMDI5MzYsIDEwMjk0MCwgCi0gICAgMTAyOTQ0LCAxMDI5NDgsIDEwMjk1MiwgMTAyOTU2LCAxMDI5NjAsIDEwMjk2NCwgMTAyOTY4LCAxMDI5NzIsIDEwMjk3NiwgCi0gICAgMTAyOTgwLCAxMDI5ODQsIDEwMjk4OCwgMTAyOTkyLCAxMDI5OTYsIDEwMzAwMCwgMTAzMDA0LCAxMDMwMDgsIDEwMzAxMiwgCi0gICAgMTAzMDE2LCAxMDMwMjAsIDEwMzAyNCwgMTAzMDI4LCAxMDMwMzIsIDEwMzAzNiwgMTAzMDQwLCAxMDMwNDQsIDEwMzA0OCwgCi0gICAgMTAzMDUyLCAxMDMwNTYsIDEwMzA2MCwgMTAzMDY0LCAxMDMwNjgsIDEwMzA3MiwgMTAzMDc2LCAxMDMwODAsIDEwMzA4NCwgCi0gICAgMTAzMDg4LCAxMDMwOTIsIDEwMzA5NiwgMTAzMTAwLCAxMDMxMDQsIDEwMzEwOCwgMTAzMTEyLCAxMDMxMTYsIDEwMzEyMCwgCi0gICAgMTAzMTI0LCAxMDMxMjgsIDEwMzEzMiwgMTAzMTM2LCAxMDMxNDAsIDEwMzE0NCwgMTAzMTQ4LCAxMDMxNTIsIDEwMzE1NiwgCi0gICAgMTAzMTYwLCAxMDMxNjQsIDEwMzE2OCwgMTAzMTcyLCAxMDMxNzYsIDEwMzE4MCwgMTAzMTg0LCAxMDMxODgsIDEwMzE5MiwgCi0gICAgMTAzMTk2LCAxMDMyMDAsIDEwMzIwNCwgMTAzMjA4LCAxMDMyMTIsIDEwMzIxNiwgMTAzMjIwLCAxMDMyMjQsIDEwMzIyOCwgCi0gICAgMTAzMjMyLCAxMDMyMzYsIDEwMzI0MCwgMTAzMjQ0LCAxMDMyNDgsIDEwMzI1MiwgMTAzMjU2LCAxMDMyNjAsIDEwMzI2NCwgCi0gICAgMTAzMjY4LCAxMDMyNzIsIDEwMzI3NiwgMTAzMjgwLCAxMDMyODQsIDEwMzI4OCwgMTAzMjkyLCAxMDMyOTYsIDEwMzMwMCwgCi0gICAgMTAzMzA0LCAxMDMzMDgsIDEwMzMxMiwgMTAzMzE2LCAxMDMzMjAsIDEwMzMyNCwgMTAzMzI4LCAxMDMzMzIsIDEwMzMzNiwgCi0gICAgMTAzMzQwLCAxMDMzNDQsIDEwMzM0OCwgMTAzMzUyLCAxMDMzNTYsIDEwMzM2MCwgMTAzMzY0LCAxMDMzNjgsIDEwMzM3MiwgCi0gICAgMTAzMzc2LCAxMDMzODAsIDEwMzM4NCwgMTAzMzg4LCAxMDMzOTIsIDEwMzM5NiwgMTAzNDAwLCAxMDM0MDQsIDEwMzQwOCwgCi0gICAgMTAzNDEyLCAxMDM0MTYsIDEwMzQyMCwgMTAzNDI0LCAxMDM0MjgsIDEwMzQzMiwgMTAzNDM2LCAxMDM0NDAsIDEwMzQ0NCwgCi0gICAgMTAzNDQ4LCAxMDM0NTIsIDEwMzQ1NiwgMTAzNDYwLCAxMDM0NjQsIDEwMzQ2OCwgMTAzNDcyLCAxMDM0NzYsIDEwMzQ4MCwgCi0gICAgMTAzNDg0LCAxMDM0ODgsIDEwMzQ5MiwgMTAzNDk2LCAxMDM1MDAsIDEwMzUwNCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgCi0gICAgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMyLCAxMDM1MzYsIDEwMzU0MCwgMTAzNTQ0LCAxMDM1NDgsIDEwMzU1MiwgCi0gICAgMTAzNTU2LCAxMDM1NjAsIDEwMzU2NCwgMTAzNTY4LCAxMDM1NzIsIDEwMzU3NiwgMTAzNTgwLCAxMDM1ODQsIDEwMzU4OCwgCi0gICAgMTAzNTkyLCAxMDM1OTYsIDEwMzYwMCwgMTAzNjA0LCAxMDM2MDgsIDEwMzYxMiwgMTAzNjE2LCAxMDM2MjAsIDEwMzYyNCwgCi0gICAgMTAzNjI4LCAxMDM2MzIsIDEwMzYzNiwgMTAzNjQwLCAxMDM2NDQsIDEwMzY0OCwgMTAzNjUyLCAxMDM2NTYsIDEwMzY2MCwgCi0gICAgMTAzNjY0LCAxMDM2NjgsIDEwMzY3MiwgMTAzNjc2LCAxMDM2ODAsIDEwMzY4NCwgMTAzNjg4LCAxMDM2OTIsIDEwMzY5NiwgCi0gICAgMTAzNzAwLCAxMDM3MDQsIDEwMzcwOCwgMTAzNzEyLCAxMDM3MTYsIDEwMzcyMCwgMTAzNzI0LCAxMDM3MjgsIDEwMzczMiwgCi0gICAgMTAzNzM2LCAxMDM3NDAsIDEwMzc0NCwgMTAzNzQ4LCAxMDM3NTIsIDEwMzc1NiwgMTAzNzYwLCAxMDM3NjQsIDEwMzc2OCwgCi0gICAgMTAzNzcyLCAxMDM3NzYsIDEwMzc4MCwgMTAzNzg0LCAxMDM3ODgsIDEwMzc5MiwgMTAzNzk2LCAxMDM4MDAsIDEwMzgwNCwgCi0gICAgMTAzODA4LCAxMDM4MTIsIDEwMzgxNiwgMTAzODIwLCAxMDM4MjQsIDEwMzgyOCwgMTAzODMyLCAxMDM4MzYsIDEwMzg0MCwgCi0gICAgMTAzODQ0LCAxMDM4NDgsIDEwMzg1MiwgMTAzODU2LCAxMDM4NjAsIDEwMzg2NCwgMTAzODY4LCAxMDM4NzIsIDEwMzg3NiwgCi0gICAgMTAzODgwLCAxMDM4ODQsIDEwMzg4OCwgMTAzODkyLCAxMDM4OTYsIDEwMzkwMCwgMTAzOTA0LCAxMDM5MDgsIDEwMzkxMiwgCi0gICAgMTAzOTE2LCAxMDM5MjAsIDEwMzkyNCwgMTAzOTI4LCAxMDM5MzIsIDEwMzkzNiwgMTAzOTQwLCAxMDM5NDQsIDEwMzk0OCwgCi0gICAgMTAzOTUyLCAxMDM5NTYsIDEwMzk2MCwgMTAzOTY0LCAxMDM5NjgsIDEwMzk3MiwgMTAzOTc2LCAxMDM5ODAsIDEwMzk4NCwgCi0gICAgMTAzOTg4LCAxMDM5OTIsIDEwMzk5NiwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOCwgMTA0MDEyLCAxMDQwMTYsIDEwNDAyMCwgCi0gICAgMTA0MDI0LCAxMDQwMjgsIDEwNDAzMiwgMTA0MDM2LCAxMDQwNDAsIDEwNDA0NCwgMTA0MDQ4LCAxMDQwNTIsIDEwNDA1NiwgCi0gICAgMTA0MDYwLCAxMDQwNjQsIDEwNDA2OCwgMTA0MDcyLCAxMDQwNzYsIDEwNDA4MCwgMTA0MDg0LCAxMDQwODgsIDEwNDA5MiwgCi0gICAgMTA0MDk2LCAxMDQxMDAsIDEwNDEwNCwgMTA0MTA4LCAxMDQxMTIsIDEwNDExNiwgMTA0MTIwLCAxMDQxMjQsIDEwNDEyOCwgCi0gICAgMTA0MTMyLCAxMDQxMzYsIDEwNDE0MCwgMTA0MTQ0LCAxMDQxNDgsIDEwNDE1MiwgMTA0MTU2LCAxMDQxNjAsIDEwNDE2NCwgCi0gICAgMTA0MTY4LCAxMDQxNzIsIDEwNDE3NiwgMTA0MTgwLCAxMDQxODQsIDEwNDE4OCwgMTA0MTkyLCAxMDQxOTYsIDEwNDIwMCwgCi0gICAgMTA0MjA0LCAxMDQyMDgsIDEwNDIxMiwgMTA0MjE2LCAxMDQyMjAsIDEwNDIyNCwgMTA0MjI4LCAxMDQyMzIsIDEwNDIzNiwgCi0gICAgMTA0MjQwLCAxMDQyNDQsIDEwNDI0OCwgMTA0MjUyLCAxMDQyNTYsIDEwNDI2MCwgMTA0MjY0LCAxMDQyNjgsIDEwNDI3MiwgCi0gICAgMTA0Mjc2LCAxMDQyODAsIDEwNDI4NCwgMTA0Mjg4LCAxMDQyOTIsIDEwNDI5NiwgMTA0MzAwLCAxMDQzMDQsIDEwNDMwOCwgCi0gICAgMTA0MzEyLCAxMDQzMTYsIDEwNDMyMCwgMTA0MzI0LCAxMDQzMjgsIDEwNDMzMiwgMTA0MzM2LCAxMDQzNDAsIDEwNDM0NCwgCi0gICAgMTA0MzQ4LCAxMDQzNTIsIDEwNDM1NiwgMTA0MzYwLCAxMDQzNjQsIDEwNDM2OCwgMTA0MzcyLCAxMDQzNzYsIDEwNDM4MCwgCi0gICAgMTA0Mzg0LCAxMDQzODgsIDEwNDM5MiwgMTA0Mzk2LCAxMDQ0MDAsIDEwNDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU0NDEsIDk1NDQ1LCA5NTQ0OSwgOTU0NTMsIDk1NDU2LCA5NTQ2MCwgCisgICAgOTU0NjMsIDk1NDY3LCA5NTQ3MCwgOTU0NzQsIDk1NDc4LCA5NTQ4MywgOTU0ODcsIDk1NDkyLCA5NTQ5NSwgOTU0OTksIAorICAgIDk1NTAyLCA5NTUwNiwgOTU1MDksIDk1NTEzLCA5NTUxNywgOTU1MjEsIDk1NTI1LCA5NTUyOSwgOTU1MzMsIDk1NTM3LCAKKyAgICA5NTU0MSwgOTU1NDUsIDk1NTQ5LCA5NTU1MywgOTU1NTcsIDk1NTYxLCA5NTU2NSwgOTU1NjksIDk1NTczLCA5NTU3NywgCisgICAgOTU1ODEsIDk1NTg0LCA5NTU4NywgOTU1OTEsIDk1NTk1LCA5NTU5OSwgOTU2MDIsIDk1NjA1LCA5NTYwOCwgOTU2MTIsIAorICAgIDk1NjE2LCA5NTYyMCwgOTU2MjQsIDk1NjI4LCA5NTYzMSwgOTU2MzQsIDk1NjM5LCA5NTY0MywgOTU2NDgsIDk1NjUyLCAKKyAgICA5NTY1NywgOTU2NjIsIDk1NjY4LCA5NTY3MywgOTU2NzksIDk1NjgzLCA5NTY4OCwgOTU2OTIsIDk1Njk3LCA5NTcwMSwgCisgICAgOTU3MDUsIDk1NzA5LCA5NTcxMywgOTU3MTYsIDk1NzE5LCA5NTcyMywgOTU3MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1NzMwLCA5NTczNCwgOTU3MzcsIDk1NzQwLCA5NTc0MywgOTU3NDYsIDk1NzQ5LCA5NTc1MiwgOTU3NTUsIDk1NzU4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc2MSwgOTU3NjUsIDk1NzcwLCA5NTc3NCwgOTU3NzksIAorICAgIDk1NzgzLCA5NTc4OCwgOTU3OTIsIDk1Nzk3LCA5NTgwMSwgOTU4MDYsIDk1ODEwLCA5NTgxNSwgOTU4MjAsIDk1ODI1LCAKKyAgICA5NTgzMCwgOTU4MzUsIDk1ODQwLCA5NTg0NSwgOTU4NTAsIDk1ODU1LCA5NTg2MCwgOTU4NjUsIDk1ODcwLCA5NTg3NSwgCisgICAgOTU4ODAsIDk1ODg1LCA5NTg5MCwgOTU4OTUsIDk1OTAwLCA5NTkwNCwgOTU5MDgsIDk1OTEzLCA5NTkxOCwgOTU5MjMsIAorICAgIDk1OTI3LCA5NTkzMSwgOTU5MzUsIDk1OTQwLCA5NTk0NSwgOTU5NTAsIDk1OTU0LCA5NTk1OCwgOTU5NjMsIDk1OTY4LCAKKyAgICA5NTk3MywgOTU5NzksIDk1OTg0LCA5NTk5MCwgOTU5OTUsIDk2MDAxLCA5NjAwNiwgOTYwMTIsIDk2MDE3LCA5NjAyMywgCisgICAgOTYwMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2MDMzLCA5NjAzOCwgOTYwNDIsIDk2MDQ2LCA5NjA1MCwgOTYwNTQsIAorICAgIDk2MDU4LCA5NjA2MiwgOTYwNjYsIDk2MDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjA3NCwgOTYwNzcsIDk2MDgyLCA5NjA4OCwgCisgICAgOTYwOTYsIDk2MTAxLCA5NjEwNywgOTYxMTUsIDk2MTIxLCA5NjEyNywgOTYxMzEsIDk2MTM1LCA5NjE0MiwgOTYxNTEsIAorICAgIDk2MTU4LCA5NjE2NywgOTYxNzMsIDk2MTgyLCA5NjE4OSwgOTYxOTYsIDk2MjAzLCA5NjIxMywgOTYyMTksIDk2MjIzLCAKKyAgICA5NjIzMCwgOTYyMzksIDk2MjQ5LCA5NjI1NiwgOTYyNjMsIDk2MjY3LCA5NjI3MSwgOTYyNzgsIDk2Mjg4LCA5NjI5MiwgCisgICAgOTYyOTksIDk2MzA2LCA5NjMxMywgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCA5NjM1MSwgOTYzNTUsIAorICAgIDk2MzU5LCA5NjM2NiwgOTYzNzAsIDk2Mzc3LCA5NjM4NCwgOTYzOTgsIDk2NDA3LCA5NjQxMSwgOTY0MTUsIDk2NDE5LCAKKyAgICA5NjQyNiwgOTY0MzAsIDk2NDM0LCA5NjQzOCwgOTY0NDYsIDk2NDU0LCA5NjQ3MywgOTY0ODMsIDk2NTAzLCA5NjUwNywgCisgICAgOTY1MTEsIDk2NTE1LCA5NjUxOSwgOTY1MjMsIDk2NTI3LCA5NjUzMSwgOTY1MzgsIDk2NTQyLCA5NjU0NSwgOTY1NDksIAorICAgIDk2NTUzLCA5NjU1OSwgOTY1NjYsIDk2NTc1LCA5NjU3OSwgOTY1ODgsIDk2NTk3LCA5NjYwNSwgOTY2MDksIDk2NjE2LCAKKyAgICA5NjYyMCwgOTY2MjQsIDk2NjI4LCA5NjYzMiwgOTY2NDMsIDk2NjUyLCA5NjY2MSwgOTY2NzAsIDk2Njc5LCA5NjY5MSwgCisgICAgOTY3MDAsIDk2NzA5LCA5NjcxOCwgOTY3MjYsIDk2NzM1LCA5Njc0NywgOTY3NTYsIDk2NzY1LCA5Njc3NCwgOTY3ODYsIAorICAgIDk2Nzk1LCA5NjgwNCwgOTY4MTYsIDk2ODI1LCA5NjgzNCwgOTY4NDYsIDk2ODU1LCA5Njg1OSwgOTY4NjMsIDk2ODY3LCAKKyAgICA5Njg3MSwgOTY4NzUsIDk2ODc5LCA5Njg4MywgOTY4OTAsIDk2ODk0LCA5Njg5OCwgOTY5MDksIDk2OTEzLCA5NjkxNywgCisgICAgOTY5MjQsIDk2OTMwLCA5NjkzNiwgOTY5NDAsIDk2OTQ3LCA5Njk1MSwgOTY5NTUsIDk2OTU5LCA5Njk2MywgOTY5NjcsIAorICAgIDk2OTcxLCA5Njk3NywgOTY5ODUsIDk2OTg5LCA5Njk5MywgOTY5OTYsIDk3MDAyLCA5NzAxMiwgOTcwMTYsIDk3MDI4LCAKKyAgICA5NzAzNSwgOTcwNDIsIDk3MDQ5LCA5NzA1NiwgOTcwNjIsIDk3MDY2LCA5NzA3MCwgOTcwNzQsIDk3MDc4LCA5NzA4NSwgCisgICAgOTcwOTQsIDk3MTAxLCA5NzEwOSwgOTcxMTcsIDk3MTIzLCA5NzEyNywgOTcxMzEsIDk3MTM1LCA5NzEzOSwgOTcxNDUsIAorICAgIDk3MTU0LCA5NzE2NiwgOTcxNzMsIDk3MTgwLCA5NzE4OSwgOTcyMDAsIDk3MjA2LCA5NzIxNSwgOTcyMjQsIDk3MjMxLCAKKyAgICA5NzI0MCwgOTcyNDcsIDk3MjU0LCA5NzI2NCwgOTcyNzEsIDk3Mjc4LCA5NzI4NSwgOTcyOTIsIDk3Mjk2LCA5NzMwMiwgCisgICAgOTczMDYsIDk3MzE3LCA5NzMyNSwgOTczMzQsIDk3MzQ2LCA5NzM1MywgOTczNjAsIDk3MzcwLCA5NzM3NywgOTczODYsIAorICAgIDk3MzkzLCA5NzQwMiwgOTc0MDksIDk3NDE2LCA5NzQyNiwgOTc0MzMsIDk3NDQwLCA5NzQ1MCwgOTc0NTcsIDk3NDY5LCAKKyAgICA5NzQ3OCwgOTc0ODUsIDk3NDkyLCA5NzQ5OSwgOTc1MDgsIDk3NTE4LCA5NzUzMSwgOTc1MzgsIDk3NTQ4LCA5NzU1OCwgCisgICAgOTc1NjUsIDk3NTc0LCA5NzU4NywgOTc1OTQsIDk3NjAxLCA5NzYwOCwgOTc2MTgsIDk3NjI4LCA5NzYzNSwgOTc2NDUsIAorICAgIDk3NjUyLCA5NzY1OSwgOTc2NjksIDk3Njc1LCA5NzY4MiwgOTc2ODksIDk3Njk2LCA5NzcwNiwgOTc3MTMsIDk3NzIwLCAKKyAgICA5NzcyNywgOTc3MzMsIDk3NzQwLCA5Nzc1MCwgOTc3NTcsIDk3NzYxLCA5Nzc2OSwgOTc3NzMsIDk3Nzg1LCA5Nzc4OSwgCisgICAgOTc4MDMsIDk3ODA3LCA5NzgxMSwgOTc4MTUsIDk3ODE5LCA5NzgyNSwgOTc4MzIsIDk3ODQwLCA5Nzg0NCwgOTc4NDgsIAorICAgIDk3ODUyLCA5Nzg1NiwgOTc4NjMsIDk3ODY3LCA5Nzg3MywgOTc4NzksIDk3ODg3LCA5Nzg5MSwgOTc4OTgsIDk3OTA2LCAKKyAgICA5NzkxMCwgOTc5MTQsIDk3OTIwLCA5NzkyNCwgOTc5MzMsIDk3OTQyLCA5Nzk0OSwgOTc5NTksIDk3OTY1LCA5Nzk2OSwgCisgICAgOTc5NzMsIDk3OTgxLCA5Nzk4OCwgOTc5OTUsIDk4MDAxLCA5ODAwNSwgOTgwMTMsIDk4MDE3LCA5ODAyNCwgOTgwMzYsIAorICAgIDk4MDQzLCA5ODA1MywgOTgwNTksIDk4MDYzLCA5ODA3MiwgOTgwNzksIDk4MDg4LCA5ODA5MiwgOTgwOTYsIDk4MTAzLCAKKyAgICA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjIsIDk4MTI4LCA5ODEzNCwgOTgxMzgsIDk4MTQyLCA5ODE0OSwgCisgICAgOTgxNTYsIDk4MTYzLCA5ODE3MCwgOTgxNzcsIDk4MTg0LCA5ODE5MSwgOTgxOTgsIDk4MjA0LCA5ODIwOCwgOTgyMTIsIAorICAgIDk4MjE5LCA5ODIyNiwgOTgyMzMsIDk4MjQwLCA5ODI0NywgOTgyNTEsIDk4MjU0LCA5ODI1OSwgOTgyNjMsIDk4MjY3LCAKKyAgICA5ODI3NiwgOTgyODUsIDk4Mjg5LCA5ODI5MywgOTgyOTksIDk4MzA1LCA5ODMyMiwgOTgzMjgsIDk4MzMyLCA5ODM0MSwgCisgICAgOTgzNDUsIDk4MzQ5LCA5ODM1NiwgOTgzNjQsIDk4MzcyLCA5ODM3OCwgOTgzODIsIDk4Mzg2LCA5ODM5MCwgOTgzOTQsIAorICAgIDk4Mzk3LCA5ODQwMywgOTg0MTAsIDk4NDIwLCA5ODQyNywgOTg0MzQsIDk4NDQxLCA5ODQ0NywgOTg0NTQsIDk4NDYxLCAKKyAgICA5ODQ2OCwgOTg0NzUsIDk4NDgyLCA5ODQ5MSwgOTg0OTgsIDk4NTEwLCA5ODUxNywgOTg1MjQsIDk4NTM0LCA5ODU0NSwgCisgICAgOTg1NTIsIDk4NTU5LCA5ODU2NiwgOTg1NzMsIDk4NTgwLCA5ODU4NywgOTg1OTQsIDk4NjAxLCA5ODYwOCwgOTg2MTUsIAorICAgIDk4NjI1LCA5ODYzNSwgOTg2NDUsIDk4NjUyLCA5ODY2MiwgOTg2NjksIDk4Njc2LCA5ODY4MywgOTg2OTAsIDk4Njk2LCAKKyAgICA5ODcwMywgOTg3MTAsIDk4NzE3LCA5ODcyNCwgOTg3MzEsIDk4NzM4LCA5ODc0NSwgOTg3NTIsIDk4NzU4LCA5ODc2NSwgCisgICAgOTg3NzIsIDk4NzgxLCA5ODc4OCwgOTg3OTUsIDk4Nzk5LCA5ODgwNywgOTg4MTEsIDk4ODE1LCA5ODgxOSwgOTg4MjMsIAorICAgIDk4ODI3LCA5ODgzNCwgOTg4MzgsIDk4ODQ3LCA5ODg1MSwgOTg4NTgsIDk4ODY2LCA5ODg3MCwgOTg4NzQsIDk4ODc4LCAKKyAgICA5ODg5MSwgOTg5MDcsIDk4OTExLCA5ODkxNSwgOTg5MjIsIDk4OTI4LCA5ODkzNSwgOTg5MzksIDk4OTQzLCA5ODk0NywgCisgICAgOTg5NTEsIDk4OTU1LCA5ODk2MiwgOTg5NjYsIDk4OTg0LCA5ODk4OCwgOTg5OTIsIDk4OTk5LCA5OTAwMywgOTkwMDcsIAorICAgIDk5MDEzLCA5OTAxNywgOTkwMjEsIDk5MDI5LCA5OTAzMywgOTkwMzcsIDk5MDQxLCA5OTA0NSwgOTkwNTEsIDk5MDYyLCAKKyAgICA5OTA3MSwgOTkwODAsIDk5MDg3LCA5OTA5NCwgOTkxMDUsIDk5MTEyLCA5OTExOSwgOTkxMjYsIDk5MTMzLCA5OTE0MCwgCisgICAgOTkxNDcsIDk5MTU0LCA5OTE2NCwgOTkxNzAsIDk5MTc3LCA5OTE4NywgOTkxOTYsIDk5MjAzLCA5OTIxMiwgOTkyMjIsIAorICAgIDk5MjI5LCA5OTIzNiwgOTkyNDMsIDk5MjUwLCA5OTI2MiwgOTkyNjksIDk5Mjc2LCA5OTI4MywgOTkyOTAsIDk5Mjk3LCAKKyAgICA5OTMwNywgOTkzMTQsIDk5MzIxLCA5OTMzMSwgOTkzNDQsIDk5MzU2LCA5OTM2MywgOTkzNzMsIDk5MzgwLCA5OTM4NywgCisgICAgOTkzOTQsIDk5NDA4LCA5OTQxNCwgOTk0MjIsIDk5NDMyLCA5OTQ0MiwgOTk0NDksIDk5NDU2LCA5OTQ2MiwgOTk0NjYsIAorICAgIDk5NDczLCA5OTQ4MywgOTk0ODksIDk5NTAyLCA5OTUwNiwgOTk1MTAsIDk5NTE3LCA5OTUyMSwgOTk1MjgsIDk5NTM4LCAKKyAgICA5OTU0MiwgOTk1NDYsIDk5NTUwLCA5OTU1NCwgOTk1NTgsIDk5NTY1LCA5OTU2OSwgOTk1NzYsIDk5NTgzLCA5OTU5MCwgCisgICAgOTk1OTksIDk5NjA4LCA5OTYxOCwgOTk2MjUsIDk5NjMyLCA5OTYzOSwgOTk2NDksIDk5NjU2LCA5OTY2NiwgOTk2NzMsIAorICAgIDk5NjgzLCA5OTY5MCwgOTk2OTcsIDk5NzA3LCA5OTcxNywgOTk3MjQsIDk5NzMwLCA5OTczOCwgOTk3NDYsIDk5NzUyLCAKKyAgICA5OTc1OCwgOTk3NjIsIDk5NzY2LCA5OTc3MywgOTk3ODEsIDk5Nzg3LCA5OTc5MSwgOTk3OTUsIDk5Nzk5LCA5OTgwNiwgCisgICAgOTk4MTgsIDk5ODIxLCA5OTgyOCwgOTk4MzQsIDk5ODM4LCA5OTg0MiwgOTk4NDYsIDk5ODUwLCA5OTg1NCwgOTk4NTgsIAorICAgIDk5ODYyLCA5OTg2NiwgOTk4NzAsIDk5ODc0LCA5OTg4MSwgOTk4ODUsIDk5ODkxLCA5OTg5NSwgOTk4OTksIDk5OTAzLCAKKyAgICA5OTkwOSwgOTk5MTYsIDk5OTIzLCA5OTkzMCwgOTk5NDEsIDk5OTQ5LCA5OTk1MywgOTk5NTksIDk5OTY4LCA5OTk3NSwgCisgICAgOTk5ODEsIDk5OTg0LCA5OTk4OCwgOTk5OTIsIDk5OTk4LCAxMDAwMDcsIDEwMDAxNSwgMTAwMDE5LCAxMDAwMjUsIAorICAgIDEwMDAyOSwgMTAwMDMzLCAxMDAwMzcsIDEwMDA0MywgMTAwMDUwLCAxMDAwNTYsIDEwMDA2MCwgMTAwMDY2LCAxMDAwNzAsIAorICAgIDEwMDA3NCwgMTAwMDgzLCAxMDAwOTUsIDEwMDA5OSwgMTAwMTA2LCAxMDAxMTMsIDEwMDEyMywgMTAwMTMwLCAxMDAxNDIsIAorICAgIDEwMDE0OSwgMTAwMTU2LCAxMDAxNjMsIDEwMDE3NCwgMTAwMTg0LCAxMDAxOTcsIDEwMDIwNywgMTAwMjE0LCAxMDAyMTgsIAorICAgIDEwMDIyMiwgMTAwMjI2LCAxMDAyMzAsIDEwMDIzOSwgMTAwMjQ4LCAxMDAyNTcsIDEwMDI3NCwgMTAwMjgzLCAxMDAyODksIAorICAgIDEwMDI5NiwgMTAwMzA0LCAxMDAzMTcsIDEwMDMyMSwgMTAwMzMwLCAxMDAzMzksIDEwMDM0OCwgMTAwMzU3LCAxMDAzNjgsIAorICAgIDEwMDM3NywgMTAwMzg2LCAxMDAzOTUsIDEwMDQwNCwgMTAwNDEzLCAxMDA0MjIsIDEwMDQzMiwgMTAwNDM1LCAxMDA0MzksIAorICAgIDEwMDQ0MywgMTAwNDQ3LCAxMDA0NTEsIDEwMDQ1NSwgMTAwNDYxLCAxMDA0NjgsIDEwMDQ3NSwgMTAwNDgyLCAxMDA0ODgsIAorICAgIDEwMDQ5NCwgMTAwNTAxLCAxMDA1MDcsIDEwMDUxNCwgMTAwNTIyLCAxMDA1MjYsIDEwMDUzMywgMTAwNTQwLCAxMDA1NDcsIAorICAgIDEwMDU1NSwgMTAwNTU4LCAxMDA1NjIsIDEwMDU2NiwgMTAwNTcwLCAxMDA1NzMsIDEwMDU3OSwgMTAwNTgzLCAxMDA1ODksIAorICAgIDEwMDU5NiwgMTAwNjAzLCAxMDA2MDksIDEwMDYxNiwgMTAwNjIzLCAxMDA2MzAsIDEwMDYzNywgMTAwNjQ0LCAxMDA2NTEsIAorICAgIDEwMDY1OCwgMTAwNjY1LCAxMDA2NzIsIDEwMDY3OSwgMTAwNjg2LCAxMDA2OTMsIDEwMDcwMCwgMTAwNzA3LCAxMDA3MTMsIAorICAgIDEwMDcxNywgMTAwNzI2LCAxMDA3MzAsIDEwMDczNCwgMTAwNzM4LCAxMDA3NDIsIDEwMDc0OCwgMTAwNzU1LCAxMDA3NjIsIAorICAgIDEwMDc2OSwgMTAwNzc2LCAxMDA3ODMsIDEwMDc4OSwgMTAwNzk3LCAxMDA4MDEsIDEwMDgwNSwgMTAwODA5LCAxMDA4MTMsIAorICAgIDEwMDgxOSwgMTAwODM2LCAxMDA4NTMsIDEwMDg1NywgMTAwODYxLCAxMDA4NjUsIDEwMDg2OSwgMTAwODczLCAxMDA4NzcsIAorICAgIDEwMDg4MywgMTAwODkwLCAxMDA4OTQsIDEwMDkwMCwgMTAwOTA3LCAxMDA5MTQsIDEwMDkyMSwgMTAwOTI4LCAxMDA5MzUsIAorICAgIDEwMDk0NCwgMTAwOTUxLCAxMDA5NTgsIDEwMDk2NSwgMTAwOTcyLCAxMDA5NzYsIDEwMDk4MCwgMTAwOTg2LCAxMDA5OTgsIAorICAgIDEwMTAwMiwgMTAxMDA2LCAxMDEwMTUsIDEwMTAxOSwgMTAxMDIzLCAxMDEwMjcsIDEwMTAzMywgMTAxMDM3LCAxMDEwNDEsIAorICAgIDEwMTA1MCwgMTAxMDU0LCAxMDEwNTgsIDEwMTA2MiwgMTAxMDY5LCAxMDEwNzMsIDEwMTA3NywgMTAxMDgxLCAxMDEwODUsIAorICAgIDEwMTA4OSwgMTAxMDkzLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA3LCAxMDExMTQsIDEwMTEyMSwgMTAxMTI3LCAxMDExMzEsIAorICAgIDEwMTE0OCwgMTAxMTU0LCAxMDExNTgsIDEwMTE2NCwgMTAxMTcwLCAxMDExNzYsIDEwMTE4MiwgMTAxMTg4LCAxMDExOTQsIAorICAgIDEwMTE5OCwgMTAxMjAyLCAxMDEyMDYsIDEwMTIxMiwgMTAxMjE2LCAxMDEyMjIsIDEwMTIyNiwgMTAxMjMwLCAxMDEyMzcsIAorICAgIDEwMTI0NCwgMTAxMjYxLCAxMDEyNjUsIDEwMTI2OSwgMTAxMjczLCAxMDEyNzcsIDEwMTI4MSwgMTAxMjkzLCAxMDEyOTYsIAorICAgIDEwMTMwMSwgMTAxMzA2LCAxMDEzMjEsIDEwMTMzMSwgMTAxMzQzLCAxMDEzNDcsIDEwMTM1MSwgMTAxMzU1LCAxMDEzNjEsIAorICAgIDEwMTM2OCwgMTAxMzc1LCAxMDEzODUsIDEwMTM5NywgMTAxNDAzLCAxMDE0MDksIDEwMTQxOCwgMTAxNDIyLCAxMDE0MjYsIAorICAgIDEwMTQzMywgMTAxNDQzLCAxMDE0NTAsIDEwMTQ1NiwgMTAxNDYwLCAxMDE0NjQsIDEwMTQ3MSwgMTAxNDc3LCAxMDE0ODEsIAorICAgIDEwMTQ4NywgMTAxNDkxLCAxMDE0OTksIDEwMTUwNSwgMTAxNTA5LCAxMDE1MTcsIDEwMTUyNSwgMTAxNTMyLCAxMDE1MzgsIAorICAgIDEwMTU0NSwgMTAxNTUyLCAxMDE1NjIsIDEwMTU3MiwgMTAxNTc2LCAxMDE1ODAsIDEwMTU4NCwgMTAxNTg4LCAxMDE1OTQsIAorICAgIDEwMTYwMSwgMTAxNjA3LCAxMDE2MTQsIDEwMTYyMSwgMTAxNjI4LCAxMDE2MzcsIDEwMTY0NCwgMTAxNjUxLCAxMDE2NTcsIAorICAgIDEwMTY2NCwgMTAxNjcxLCAxMDE2NzgsIDEwMTY4NSwgMTAxNjkyLCAxMDE2OTksIDEwMTcwNSwgMTAxNzEyLCAxMDE3MTksIAorICAgIDEwMTcyNiwgMTAxNzM1LCAxMDE3NDIsIDEwMTc0OSwgMTAxNzUzLCAxMDE3NTksIDEwMTc2MywgMTAxNzY5LCAxMDE3NzYsIAorICAgIDEwMTc4MywgMTAxNzkwLCAxMDE3OTQsIDEwMTc5OCwgMTAxODAyLCAxMDE4MDYsIDEwMTgxMCwgMTAxODE3LCAxMDE4MjEsIAorICAgIDEwMTgyNSwgMTAxODMxLCAxMDE4MzksIDEwMTg0MywgMTAxODQ3LCAxMDE4NTEsIDEwMTg1NSwgMTAxODYyLCAxMDE4NjYsIAorICAgIDEwMTg3MCwgMTAxODc4LCAxMDE4ODIsIDEwMTg4NiwgMTAxODkwLCAxMDE4OTQsIDEwMTkwMCwgMTAxOTA0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE5MDgsIDEwMTkxNCwgMTAxOTIwLCAxMDE5MjcsIAorICAgIDEwMTkzNCwgMTAxOTQxLCAxMDE5NDgsIDEwMTk1NSwgMTAxOTYyLCAxMDE5NjgsIDEwMTk3NSwgMTAxOTgyLCAxMDE5ODksIAorICAgIDEwMTk5NiwgMTAyMDAzLCAxMDIwMTAsIDEwMjAxNiwgMTAyMDIyLCAxMDIwMjgsIDEwMjAzNCwgMTAyMDQwLCAxMDIwNDYsIAorICAgIDEwMjA1MiwgMTAyMDU4LCAxMDIwNjQsIDEwMjA3MSwgMTAyMDc4LCAxMDIwODUsIDEwMjA5MiwgMTAyMDk5LCAxMDIxMDYsIAorICAgIDEwMjExMiwgMTAyMTE4LCAxMDIxMjQsIDEwMjEzMSwgMTAyMTM4LCAxMDIxNDQsIDEwMjE1MCwgMTAyMTU5LCAxMDIxNjYsIAorICAgIDEwMjE3MywgMTAyMTgwLCAxMDIxODcsIDEwMjE5NCwgMTAyMjAxLCAxMDIyMDcsIDEwMjIxMywgMTAyMjE5LCAxMDIyMjgsIAorICAgIDEwMjIzNSwgMTAyMjQyLCAxMDIyNTMsIDEwMjI2NCwgMTAyMjcwLCAxMDIyNzYsIDEwMjI4MiwgMTAyMjkxLCAxMDIyOTgsIAorICAgIDEwMjMwNSwgMTAyMzE1LCAxMDIzMjUsIDEwMjMzNiwgMTAyMzQ3LCAxMDIzNTksIDEwMjM3MiwgMTAyMzgzLCAxMDIzOTQsIAorICAgIDEwMjQwNiwgMTAyNDE5LCAxMDI0MzAsIDEwMjQ0MSwgMTAyNDUyLCAxMDI0NjMsIDEwMjQ3NCwgMTAyNDg2LCAxMDI0OTQsIAorICAgIDEwMjUwMiwgMTAyNTExLCAxMDI1MjAsIDEwMjUyOSwgMTAyNTM1LCAxMDI1NDEsIDEwMjU0NywgMTAyNTU0LCAxMDI1NjQsIAorICAgIDEwMjU3MSwgMTAyNTgxLCAxMDI1ODYsIDEwMjU5MSwgMTAyNTk3LCAxMDI2MDMsIDEwMjYxMSwgMTAyNjE5LCAxMDI2MjgsIAorICAgIDEwMjYzOSwgMTAyNjUwLCAxMDI2NTgsIDEwMjY2NiwgMTAyNjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDI2ODQsIDEwMjY5NSwgMTAyNzAyLCAxMDI3MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMjcxOCwgMTAyNzIyLCAxMDI3MjYsIDEwMjczMCwgMTAyNzM0LCAxMDI3MzgsIDEwMjc0MiwgMTAyNzQ2LCAxMDI3NTAsIAorICAgIDEwMjc1NCwgMTAyNzU4LCAxMDI3NjIsIDEwMjc2NiwgMTAyNzcwLCAxMDI3NzQsIDEwMjc3OCwgMTAyNzgyLCAxMDI3ODYsIAorICAgIDEwMjc5MCwgMTAyNzk0LCAxMDI3OTgsIDEwMjgwMiwgMTAyODA2LCAxMDI4MTAsIDEwMjgxNCwgMTAyODE4LCAxMDI4MjIsIAorICAgIDEwMjgyNiwgMTAyODMwLCAxMDI4MzQsIDEwMjgzOCwgMTAyODQyLCAxMDI4NDYsIDEwMjg1MCwgMTAyODU0LCAxMDI4NTgsIAorICAgIDEwMjg2MiwgMTAyODY2LCAxMDI4NzAsIDEwMjg3NCwgMTAyODc4LCAxMDI4ODIsIDEwMjg4NiwgMTAyODkwLCAxMDI4OTQsIAorICAgIDEwMjg5OCwgMTAyOTAyLCAxMDI5MDYsIDEwMjkxMCwgMTAyOTE0LCAxMDI5MTgsIDEwMjkyMiwgMTAyOTI2LCAxMDI5MzAsIAorICAgIDEwMjkzNCwgMTAyOTM4LCAxMDI5NDIsIDEwMjk0NiwgMTAyOTUwLCAxMDI5NTQsIDEwMjk1OCwgMTAyOTYyLCAxMDI5NjYsIAorICAgIDEwMjk3MCwgMTAyOTc0LCAxMDI5NzgsIDEwMjk4MiwgMTAyOTg2LCAxMDI5OTAsIDEwMjk5NCwgMTAyOTk4LCAxMDMwMDIsIAorICAgIDEwMzAwNiwgMTAzMDEwLCAxMDMwMTQsIDEwMzAxOCwgMTAzMDIyLCAxMDMwMjYsIDEwMzAzMCwgMTAzMDM0LCAxMDMwMzgsIAorICAgIDEwMzA0MiwgMTAzMDQ2LCAxMDMwNTAsIDEwMzA1NCwgMTAzMDU4LCAxMDMwNjIsIDEwMzA2NiwgMTAzMDcwLCAxMDMwNzQsIAorICAgIDEwMzA3OCwgMTAzMDgyLCAxMDMwODYsIDEwMzA5MCwgMTAzMDk0LCAxMDMwOTgsIDEwMzEwMiwgMTAzMTA2LCAxMDMxMTAsIAorICAgIDEwMzExNCwgMTAzMTE4LCAxMDMxMjIsIDEwMzEyNiwgMTAzMTMwLCAxMDMxMzQsIDEwMzEzOCwgMTAzMTQyLCAxMDMxNDYsIAorICAgIDEwMzE1MCwgMTAzMTU0LCAxMDMxNTgsIDEwMzE2MiwgMTAzMTY2LCAxMDMxNzAsIDEwMzE3NCwgMTAzMTc4LCAxMDMxODIsIAorICAgIDEwMzE4NiwgMTAzMTkwLCAxMDMxOTQsIDEwMzE5OCwgMTAzMjAyLCAxMDMyMDYsIDEwMzIxMCwgMTAzMjE0LCAxMDMyMTgsIAorICAgIDEwMzIyMiwgMTAzMjI2LCAxMDMyMzAsIDEwMzIzNCwgMTAzMjM4LCAxMDMyNDIsIDEwMzI0NiwgMTAzMjUwLCAxMDMyNTQsIAorICAgIDEwMzI1OCwgMTAzMjYyLCAxMDMyNjYsIDEwMzI3MCwgMTAzMjc0LCAxMDMyNzgsIDEwMzI4MiwgMTAzMjg2LCAxMDMyOTAsIAorICAgIDEwMzI5NCwgMTAzMjk4LCAxMDMzMDIsIDEwMzMwNiwgMTAzMzEwLCAxMDMzMTQsIDEwMzMxOCwgMTAzMzIyLCAxMDMzMjYsIAorICAgIDEwMzMzMCwgMTAzMzM0LCAxMDMzMzgsIDEwMzM0MiwgMTAzMzQ2LCAxMDMzNTAsIDEwMzM1NCwgMTAzMzU4LCAxMDMzNjIsIAorICAgIDEwMzM2NiwgMTAzMzcwLCAxMDMzNzQsIDEwMzM3OCwgMTAzMzgyLCAxMDMzODYsIDEwMzM5MCwgMTAzMzk0LCAxMDMzOTgsIAorICAgIDEwMzQwMiwgMTAzNDA2LCAxMDM0MTAsIDEwMzQxNCwgMTAzNDE4LCAxMDM0MjIsIDEwMzQyNiwgMTAzNDMwLCAxMDM0MzQsIAorICAgIDEwMzQzOCwgMTAzNDQyLCAxMDM0NDYsIDEwMzQ1MCwgMTAzNDU0LCAxMDM0NTgsIDEwMzQ2MiwgMTAzNDY2LCAxMDM0NzAsIAorICAgIDEwMzQ3NCwgMTAzNDc4LCAxMDM0ODIsIDEwMzQ4NiwgMTAzNDkwLCAxMDM0OTQsIDEwMzQ5OCwgMTAzNTAyLCAxMDM1MDYsIAorICAgIDEwMzUxMCwgMTAzNTE0LCAxMDM1MTgsIDEwMzUyMiwgMTAzNTI2LCAxMDM1MzAsIDEwMzUzNCwgMTAzNTM4LCAxMDM1NDIsIAorICAgIDEwMzU0NiwgMTAzNTUwLCAxMDM1NTQsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjYsIDEwMzU3MCwgMTAzNTc0LCAxMDM1NzgsIAorICAgIDEwMzU4MiwgMTAzNTg2LCAxMDM1OTAsIDEwMzU5NCwgMTAzNTk4LCAxMDM2MDIsIDEwMzYwNiwgMTAzNjEwLCAxMDM2MTQsIAorICAgIDEwMzYxOCwgMTAzNjIyLCAxMDM2MjYsIDEwMzYzMCwgMTAzNjM0LCAxMDM2MzgsIDEwMzY0MiwgMTAzNjQ2LCAxMDM2NTAsIAorICAgIDEwMzY1NCwgMTAzNjU4LCAxMDM2NjIsIDEwMzY2NiwgMTAzNjcwLCAxMDM2NzQsIDEwMzY3OCwgMTAzNjgyLCAxMDM2ODYsIAorICAgIDEwMzY5MCwgMTAzNjk0LCAxMDM2OTgsIDEwMzcwMiwgMTAzNzA2LCAxMDM3MTAsIDEwMzcxNCwgMTAzNzE4LCAxMDM3MjIsIAorICAgIDEwMzcyNiwgMTAzNzMwLCAxMDM3MzQsIDEwMzczOCwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MCwgMTAzNzU0LCAxMDM3NTgsIAorICAgIDEwMzc2MiwgMTAzNzY2LCAxMDM3NzAsIDEwMzc3NCwgMTAzNzc4LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkwLCAxMDM3OTQsIAorICAgIDEwMzc5OCwgMTAzODAyLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE0LCAxMDM4MTgsIDEwMzgyMiwgMTAzODI2LCAxMDM4MzAsIAorICAgIDEwMzgzNCwgMTAzODM4LCAxMDM4NDIsIDEwMzg0NiwgMTAzODUwLCAxMDM4NTQsIDEwMzg1OCwgMTAzODYyLCAxMDM4NjYsIAorICAgIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAxMDM5MDIsIAorICAgIDEwMzkwNiwgMTAzOTEwLCAxMDM5MTQsIDEwMzkxOCwgMTAzOTIyLCAxMDM5MjYsIDEwMzkzMCwgMTAzOTM0LCAxMDM5MzgsIAorICAgIDEwMzk0MiwgMTAzOTQ2LCAxMDM5NTAsIDEwMzk1NCwgMTAzOTU4LCAxMDM5NjIsIDEwMzk2NiwgMTAzOTcwLCAxMDM5NzQsIAorICAgIDEwMzk3OCwgMTAzOTgyLCAxMDM5ODYsIDEwMzk5MCwgMTAzOTk0LCAxMDM5OTgsIDEwNDAwMiwgMTA0MDA2LCAxMDQwMTAsIAorICAgIDEwNDAxNCwgMTA0MDE4LCAxMDQwMjIsIDEwNDAyNiwgMTA0MDMwLCAxMDQwMzQsIDEwNDAzOCwgMTA0MDQyLCAxMDQwNDYsIAorICAgIDEwNDA1MCwgMTA0MDU0LCAxMDQwNTgsIDEwNDA2MiwgMTA0MDY2LCAxMDQwNzAsIDEwNDA3NCwgMTA0MDc4LCAxMDQwODIsIAorICAgIDEwNDA4NiwgMTA0MDkwLCAxMDQwOTQsIDEwNDA5OCwgMTA0MTAyLCAxMDQxMDYsIDEwNDExMCwgMTA0MTE0LCAxMDQxMTgsIAorICAgIDEwNDEyMiwgMTA0MTI2LCAxMDQxMzAsIDEwNDEzNCwgMTA0MTM4LCAxMDQxNDIsIDEwNDE0NiwgMTA0MTUwLCAxMDQxNTQsIAorICAgIDEwNDE1OCwgMTA0MTYyLCAxMDQxNjYsIDEwNDE3MCwgMTA0MTc0LCAxMDQxNzgsIDEwNDE4MiwgMTA0MTg2LCAxMDQxOTAsIAorICAgIDEwNDE5NCwgMTA0MTk4LCAxMDQyMDIsIDEwNDIwNiwgMTA0MjEwLCAxMDQyMTQsIDEwNDIxOCwgMTA0MjIyLCAxMDQyMjYsIAorICAgIDEwNDIzMCwgMTA0MjM0LCAxMDQyMzgsIDEwNDI0MiwgMTA0MjQ2LCAxMDQyNTAsIDEwNDI1NCwgMTA0MjU4LCAxMDQyNjIsIAorICAgIDEwNDI2NiwgMTA0MjcwLCAxMDQyNzQsIDEwNDI3OCwgMTA0MjgyLCAxMDQyODYsIDEwNDI5MCwgMTA0Mjk0LCAxMDQyOTgsIAorICAgIDEwNDMwMiwgMTA0MzA2LCAxMDQzMTAsIDEwNDMxNCwgMTA0MzE4LCAxMDQzMjIsIDEwNDMyNiwgMTA0MzMwLCAxMDQzMzQsIAorICAgIDEwNDMzOCwgMTA0MzQyLCAxMDQzNDYsIDEwNDM1MCwgMTA0MzU0LCAxMDQzNTgsIDEwNDM2MiwgMTA0MzY2LCAxMDQzNzAsIAorICAgIDEwNDM3NCwgMTA0Mzc4LCAxMDQzODIsIDEwNDM4NiwgMTA0MzkwLCAxMDQzOTQsIDEwNDM5OCwgMTA0NDAyLCAxMDQ0MDYsIAorICAgIDEwNDQxMCwgMTA0NDE0LCAxMDQ0MTgsIDEwNDQyMiwgMTA0NDI2LCAxMDQ0MzAsIDEwNDQzNCwgMTA0NDM4LCAxMDQ0NDIsIAorICAgIDEwNDQ0NiwgMTA0NDUwLCAxMDQ0NTQsIDEwNDQ1OCwgMTA0NDYyLCAxMDQ0NjYsIDEwNDQ3MCwgMTA0NDc0LCAxMDQ0NzgsIAorICAgIDEwNDQ4MiwgMTA0NDg2LCAxMDQ0OTAsIDEwNDQ5NCwgMTA0NDk4LCAxMDQ1MDIsIDEwNDUwNiwgMTA0NTEwLCAxMDQ1MTQsIAorICAgIDEwNDUxOCwgMTA0NTIyLCAxMDQ1MjYsIDEwNDUzMCwgMTA0NTM0LCAxMDQ1MzgsIDEwNDU0MiwgMTA0NTQ2LCAxMDQ1NTAsIAorICAgIDEwNDU1NCwgMTA0NTU4LCAxMDQ1NjIsIDEwNDU2NiwgMTA0NTcwLCAxMDQ1NzQsIDEwNDU3OCwgMTA0NTgyLCAxMDQ1ODYsIAorICAgIDEwNDU5MCwgMTA0NTk0LCAxMDQ1OTgsIDEwNDYwMiwgMTA0NjA2LCAxMDQ2MTAsIDEwNDYxNCwgMTA0NjE4LCAxMDQ2MjIsIAorICAgIDEwNDYyNiwgMTA0NjMwLCAxMDQ2MzQsIDEwNDYzOCwgMTA0NjQyLCAxMDQ2NDYsIDEwNDY1MCwgMTA0NjU0LCAxMDQ2NTgsIAorICAgIDEwNDY2MiwgMTA0NjY2LCAxMDQ2NzAsIDEwNDY3NCwgMTA0Njc4LCAxMDQ2ODIsIDEwNDY4NiwgMTA0NjkwLCAxMDQ2OTQsIAorICAgIDEwNDY5OCwgMTA0NzAyLCAxMDQ3MDYsIDEwNDcxMCwgMTA0NzE0LCAxMDQ3MTgsIDEwNDcyMiwgMTA0NzI2LCAxMDQ3MzAsIAorICAgIDEwNDczNCwgMTA0NzM4LCAxMDQ3NDIsIDEwNDc0NiwgMTA0NzUwLCAxMDQ3NTQsIDEwNDc1OCwgMTA0NzYyLCAxMDQ3NjYsIAorICAgIDEwNDc3MCwgMTA0Nzc0LCAxMDQ3NzgsIDEwNDc4MiwgMTA0Nzg2LCAxMDQ3OTAsIDEwNDc5NCwgMTA0Nzk4LCAxMDQ4MDIsIAorICAgIDEwNDgwNiwgMTA0ODEwLCAxMDQ4MTQsIDEwNDgxOCwgMTA0ODIyLCAxMDQ4MjYsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIAorICAgIDEwNDg0MiwgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1NCwgMTA0ODU4LCAxMDQ4NjIsIDEwNDg2NiwgMTA0ODcwLCAxMDQ4NzQsIAorICAgIDEwNDg3OCwgMTA0ODgyLCAxMDQ4ODYsIDEwNDg5MCwgMTA0ODk0LCAxMDQ4OTgsIDEwNDkwMiwgMTA0OTA2LCAxMDQ5MTAsIAorICAgIDEwNDkxNCwgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIAorICAgIDEwNDk1MCwgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODIsIAorICAgIDEwNDk4NiwgMTA0OTkwLCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAyLCAxMDUwMDYsIDEwNTAxMCwgMTA1MDE0LCAxMDUwMTgsIAorICAgIDEwNTAyMiwgMTA1MDI2LCAxMDUwMzAsIDEwNTAzNCwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NiwgMTA1MDUwLCAxMDUwNTQsIAorICAgIDEwNTA1OCwgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MCwgMTA1MDc0LCAxMDUwNzgsIDEwNTA4MiwgMTA1MDg2LCAxMDUwOTAsIAorICAgIDEwNTA5NCwgMTA1MDk4LCAxMDUxMDIsIDEwNTEwNiwgMTA1MTEwLCAxMDUxMTQsIDEwNTExOCwgMTA1MTIyLCAxMDUxMjYsIAorICAgIDEwNTEzMCwgMTA1MTM0LCAxMDUxMzgsIDEwNTE0MiwgMTA1MTQ2LCAxMDUxNTAsIDEwNTE1NCwgMTA1MTU4LCAxMDUxNjIsIAorICAgIDEwNTE2NiwgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIAorICAgIDEwNTIwMiwgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNiwgMTA1MjMwLCAxMDUyMzQsIAorICAgIDEwNTIzOCwgMTA1MjQyLCAxMDUyNDYsIDEwNTI1MCwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MiwgMTA1MjY2LCAxMDUyNzAsIAorICAgIDEwNTI3NCwgMTA1Mjc4LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAyLCAxMDUzMDYsIAorICAgIDEwNTMxMCwgMTA1MzE0LCAxMDUzMTgsIDEwNTMyMiwgMTA1MzI2LCAxMDUzMzAsIDEwNTMzNCwgMTA1MzM4LCAxMDUzNDIsIAorICAgIDEwNTM0NiwgMTA1MzUwLCAxMDUzNTQsIDEwNTM1OCwgMTA1MzYyLCAxMDUzNjYsIDEwNTM3MCwgMTA1Mzc0LCAxMDUzNzgsIAorICAgIDEwNTM4MiwgMTA1Mzg2LCAxMDUzOTAsIDEwNTM5NCwgMTA1Mzk4LCAxMDU0MDIsIDEwNTQwNiwgMTA1NDEwLCAxMDU0MTQsIAorICAgIDEwNTQxOCwgMTA1NDIyLCAxMDU0MjYsIDEwNTQzMCwgMTA1NDM0LCAxMDU0MzgsIDEwNTQ0MiwgMTA1NDQ2LCAxMDU0NTAsIAorICAgIDEwNTQ1NCwgMTA1NDU4LCAxMDU0NjIsIDEwNTQ2NiwgMTA1NDcwLCAxMDU0NzQsIDEwNTQ3OCwgMTA1NDgyLCAxMDU0ODYsIAorICAgIDEwNTQ5MCwgMTA1NDk0LCAxMDU0OTgsIDEwNTUwMiwgMTA1NTA2LCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE4LCAxMDU1MjIsIAorICAgIDEwNTUyNiwgMTA1NTMwLCAxMDU1MzQsIDEwNTUzOCwgMTA1NTQyLCAxMDU1NDYsIDEwNTU1MCwgMTA1NTU0LCAxMDU1NTgsIAorICAgIDEwNTU2MiwgMTA1NTY2LCAxMDU1NzAsIDEwNTU3NCwgMTA1NTc4LCAxMDU1ODIsIDEwNTU4NiwgMTA1NTkwLCAxMDU1OTQsIAorICAgIDEwNTU5OCwgMTA1NjAyLCAxMDU2MDYsIDEwNTYxMCwgMTA1NjE0LCAxMDU2MTgsIDEwNTYyMiwgMTA1NjI2LCAxMDU2MzAsIAorICAgIDEwNTYzNCwgMTA1NjM4LCAxMDU2NDIsIDEwNTY0NiwgMTA1NjUwLCAxMDU2NTQsIDEwNTY1OCwgMTA1NjYyLCAxMDU2NjYsIAorICAgIDEwNTY3MCwgMTA1Njc0LCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTAsIDEwNTY5NCwgMTA1Njk4LCAxMDU3MDIsIAorICAgIDEwNTcwNiwgMTA1NzEwLCAxMDU3MTQsIDEwNTcxOCwgMTA1NzIyLCAxMDU3MjYsIDEwNTczMCwgMTA1NzM0LCAxMDU3MzgsIAorICAgIDEwNTc0MiwgMTA1NzQ2LCAxMDU3NTAsIDEwNTc1NCwgMTA1NzU4LCAxMDU3NjIsIDEwNTc2NiwgMTA1NzcwLCAxMDU3NzQsIAorICAgIDEwNTc3OCwgMTA1NzgyLCAxMDU3ODYsIDEwNTc5MCwgMTA1Nzk0LCAxMDU3OTgsIDEwNTgwMiwgMTA1ODA2LCAxMDU4MTAsIAorICAgIDEwNTgxNCwgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzQsIDEwNTgzOCwgMTA1ODQyLCAxMDU4NDYsIAorICAgIDEwNTg1MCwgMTA1ODU0LCAxMDU4NTgsIDEwNTg2MiwgMTA1ODY2LCAxMDU4NzAsIDEwNTg3NCwgMTA1ODc4LCAxMDU4ODIsIAorICAgIDEwNTg4NiwgMTA1ODkwLCAxMDU4OTQsIDEwNTg5OCwgMTA1OTAyLCAxMDU5MDYsIDEwNTkxMCwgMTA1OTE0LCAxMDU5MTgsIAorICAgIDEwNTkyMiwgMTA1OTI2LCAxMDU5MzAsIDEwNTkzNCwgMTA1OTM4LCAxMDU5NDIsIDEwNTk0NiwgMTA1OTUwLCAxMDU5NTQsIAorICAgIDEwNTk1OCwgMTA1OTYyLCAxMDU5NjYsIDEwNTk3MCwgMTA1OTc0LCAxMDU5NzgsIDEwNTk4MiwgMTA1OTg2LCAxMDU5OTAsIAorICAgIDEwNTk5NCwgMTA1OTk4LCAxMDYwMDIsIDEwNjAwNiwgMTA2MDEwLCAxMDYwMTQsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjYsIAorICAgIDEwNjAzMCwgMTA2MDM0LCAxMDYwMzgsIDEwNjA0MiwgMTA2MDQ2LCAxMDYwNTAsIDEwNjA1NCwgMTA2MDU4LCAxMDYwNjIsIAorICAgIDEwNjA2NiwgMTA2MDcwLCAxMDYwNzQsIDEwNjA3OCwgMTA2MDgyLCAxMDYwODYsIDEwNjA5MCwgMTA2MDk0LCAxMDYwOTgsIAorICAgIDEwNjEwMiwgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNiwgMTA2MTMwLCAxMDYxMzQsIAorICAgIDEwNjEzOCwgMTA2MTQyLCAxMDYxNDYsIDEwNjE1MCwgMTA2MTU0LCAxMDYxNTgsIDEwNjE2MiwgMTA2MTY2LCAxMDYxNzAsIAorICAgIDEwNjE3NCwgMTA2MTc4LCAxMDYxODIsIDEwNjE4NiwgMTA2MTkwLCAxMDYxOTQsIDEwNjE5OCwgMTA2MjAyLCAxMDYyMDYsIAorICAgIDEwNjIxMCwgMTA2MjE0LCAxMDYyMTgsIDEwNjIyMiwgMTA2MjI2LCAxMDYyMzAsIDEwNjIzNCwgMTA2MjM4LCAxMDYyNDIsIAorICAgIDEwNjI0NiwgMTA2MjUwLCAxMDYyNTQsIDEwNjI1OCwgMTA2MjYyLCAxMDYyNjYsIDEwNjI3MCwgMTA2Mjc0LCAxMDYyNzgsIAorICAgIDEwNjI4MiwgMTA2Mjg2LCAxMDYyOTAsIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTQsIAorICAgIDEwNjMxOCwgMTA2MzIyLCAxMDYzMjYsIDEwNjMzMCwgMTA2MzM0LCAxMDYzMzgsIDEwNjM0MiwgMTA2MzQ2LCAxMDYzNTAsIAorICAgIDEwNjM1NCwgMTA2MzU4LCAxMDYzNjIsIDEwNjM2NiwgMTA2MzcwLCAxMDYzNzQsIDEwNjM3OCwgMTA2MzgyLCAxMDYzODYsIAorICAgIDEwNjM5MCwgMTA2Mzk0LCAxMDYzOTgsIDEwNjQwMiwgMTA2NDA2LCAxMDY0MTAsIDEwNjQxNCwgMTA2NDE4LCAxMDY0MjIsIAorICAgIDEwNjQyNiwgMTA2NDMwLCAxMDY0MzQsIDEwNjQzOCwgMTA2NDQyLCAxMDY0NDYsIDEwNjQ1MCwgMTA2NDU0LCAxMDY0NTgsIAorICAgIDEwNjQ2MiwgMTA2NDY2LCAxMDY0NzAsIDEwNjQ3NCwgMTA2NDc4LCAxMDY0ODIsIDEwNjQ4NiwgMTA2NDkwLCAxMDY0OTQsIAorICAgIDEwNjQ5OCwgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMCwgMTA2NTE0LCAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIAorICAgIDEwNjUzNCwgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NiwgMTA2NTUwLCAxMDY1NTQsIDEwNjU1OCwgMTA2NTYyLCAxMDY1NjYsIAorICAgIDEwNjU3MCwgMTA2NTc0LCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg2LCAxMDY1OTAsIDEwNjU5NCwgMTA2NTk4LCAxMDY2MDIsIAorICAgIDEwNjYwNiwgMTA2NjEwLCAxMDY2MTQsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYzMCwgMTA2NjM0LCAxMDY2MzgsIAorICAgIDEwNjY0MiwgMTA2NjQ2LCAxMDY2NTAsIDEwNjY1NCwgMTA2NjU4LCAxMDY2NjIsIDEwNjY2NiwgMTA2NjcwLCAxMDY2NzQsIAorICAgIDEwNjY3OCwgMTA2NjgyLCAxMDY2ODYsIDEwNjY5MCwgMTA2Njk0LCAxMDY2OTgsIDEwNjcwMiwgMTA2NzA2LCAxMDY3MTAsIAorICAgIDEwNjcxNCwgMTA2NzE4LCAxMDY3MjIsIDEwNjcyNiwgMTA2NzMwLCAxMDY3MzQsIDEwNjczOCwgMTA2NzQyLCAxMDY3NDYsIAorICAgIDEwNjc1MCwgMTA2NzU0LCAxMDY3NTgsIDEwNjc2MiwgMTA2NzY2LCAxMDY3NzAsIDEwNjc3NCwgMTA2Nzc4LCAxMDY3ODIsIAorICAgIDEwNjc4NiwgMTA2NzkwLCAxMDY3OTQsIDEwNjc5OCwgMTA2ODAyLCAxMDY4MDYsIDEwNjgxMCwgMTA2ODE0LCAxMDY4MTgsIAorICAgIDEwNjgyMiwgMTA2ODI2LCAxMDY4MzAsIDEwNjgzNCwgMTA2ODM4LCAxMDY4NDIsIDEwNjg0NiwgMTA2ODUwLCAxMDY4NTQsIAorICAgIDEwNjg1OCwgMTA2ODYyLCAxMDY4NjYsIDEwNjg3MCwgMTA2ODc0LCAxMDY4NzgsIDEwNjg4MiwgMTA2ODg2LCAxMDY4OTAsIAorICAgIDEwNjg5NCwgMTA2ODk4LCAxMDY5MDIsIDEwNjkwNiwgMTA2OTEwLCAxMDY5MTQsIDEwNjkxOCwgMTA2OTIyLCAxMDY5MjYsIAorICAgIDEwNjkzMCwgMTA2OTM0LCAxMDY5MzgsIDEwNjk0MiwgMTA2OTQ2LCAxMDY5NTAsIDEwNjk1NCwgMTA2OTU4LCAxMDY5NjIsIAorICAgIDEwNjk2NiwgMTA2OTcwLCAxMDY5NzQsIDEwNjk3OCwgMTA2OTgyLCAxMDY5ODYsIDEwNjk5MCwgMTA2OTk0LCAxMDY5OTgsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNDQwOCwgMTA0NDE1LCAxMDQ0MjIsIDEwNDQzMSwgMTA0NDQwLCAxMDQ0NDcsIDEwNDQ1MiwgMTA0NDU5LCAKLSAgICAxMDQ0NjYsIDEwNDQ3NSwgMTA0NDg2LCAxMDQ0OTcsIDEwNDUwMiwgMTA0NTA5LCAxMDQ1MTQsIDEwNDUxOSwgMTA0NTI0LCAKLSAgICAxMDQ1MjksIDEwNDUzNCwgMTA0NTM5LCAxMDQ1NDQsIDEwNDU0OSwgMTA0NTU0LCAxMDQ1NTksIDEwNDU2NCwgMTA0NTcxLCAKLSAgICAxMDQ1NzgsIDEwNDU4MywgMTA0NTg4LCAxMDQ1OTMsIDEwNDU5OCwgMTA0NjA1LCAxMDQ2MTIsIDEwNDYyMCwgMTA0NjI1LCAKLSAgICAxMDQ2MzIsIDEwNDYzNywgMTA0NjQyLCAxMDQ2NDcsIDEwNDY1MiwgMTA0NjU3LCAxMDQ2NjQsIDEwNDY3MSwgMTA0Njc2LCAKLSAgICAxMDQ2ODEsIDEwNDY4NiwgMTA0NjkxLCAxMDQ2OTYsIDEwNDcwMSwgMTA0NzA2LCAxMDQ3MTEsIDEwNDcxNiwgMTA0NzIxLCAKLSAgICAxMDQ3MjYsIDEwNDczMSwgMTA0NzM2LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUxLCAxMDQ3NTYsIDEwNDc2MSwgMTA0NzY2LCAKLSAgICAxMDQ3NzMsIDEwNDc3OCwgMTA0NzgzLCAxMDQ3OTIsIDEwNDc5OSwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxNCwgMTA0ODE5LCAKLSAgICAxMDQ4MjQsIDEwNDgyOSwgMTA0ODM0LCAxMDQ4MzksIDEwNDg0NCwgMTA0ODQ5LCAxMDQ4NTQsIDEwNDg1OSwgMTA0ODY0LCAKLSAgICAxMDQ4NjksIDEwNDg3NCwgMTA0ODc5LCAxMDQ4ODQsIDEwNDg4OSwgMTA0ODk0LCAxMDQ4OTksIDEwNDkwNCwgMTA0OTEwLCAKLSAgICAxMDQ5MTgsIDEwNDkyNCwgMTA0OTMyLCAxMDQ5NDAsIDEwNDk0OCwgMTA0OTU0LCAxMDQ5NjAsIDEwNDk2NiwgMTA0OTcyLCAKLSAgICAxMDQ5NzgsIDEwNDk4NiwgMTA0OTk2LCAxMDUwMDQsIDEwNTAxMiwgMTA1MDE4LCAxMDUwMjQsIDEwNTAzMiwgMTA1MDQwLCAKLSAgICAxMDUwNDYsIDEwNTA1NCwgMTA1MDYyLCAxMDUwNzAsIDEwNTA3NiwgMTA1MDgyLCAxMDUwODgsIDEwNTA5NCwgMTA1MTAwLCAKLSAgICAxMDUxMDYsIDEwNTExNCwgMTA1MTIyLCAxMDUxMjgsIDEwNTEzNCwgMTA1MTQwLCAxMDUxNDYsIDEwNTE1MiwgMTA1MTYwLCAKLSAgICAxMDUxNjYsIDEwNTE3MiwgMTA1MTc4LCAxMDUxODQsIDEwNTE5MCwgMTA1MTk2LCAxMDUyMDQsIDEwNTIxMCwgMTA1MjE2LCAKLSAgICAxMDUyMjIsIDEwNTIyOCwgMTA1MjM2LCAxMDUyNDQsIDEwNTI1MCwgMTA1MjU2LCAxMDUyNjIsIDEwNTI2NywgMTA1MjczLCAKLSAgICAxMDUyNzksIDEwNTI4NiwgMTA1MjkxLCAxMDUyOTYsIDEwNTMwMSwgMTA1MzA2LCAxMDUzMTEsIDEwNTMxNiwgMTA1MzIxLCAKLSAgICAxMDUzMjYsIDEwNTMzMSwgMTA1MzQwLCAxMDUzNDcsIDEwNTM1MiwgMTA1MzU3LCAxMDUzNjIsIDEwNTM2OSwgMTA1Mzc0LCAKLSAgICAxMDUzNzksIDEwNTM4NCwgMTA1MzkxLCAxMDUzOTYsIDEwNTQwMSwgMTA1NDA2LCAxMDU0MTEsIDEwNTQxNiwgMTA1NDIxLCAKLSAgICAxMDU0MjYsIDEwNTQzMSwgMTA1NDM2LCAxMDU0NDEsIDEwNTQ0NiwgMTA1NDUzLCAxMDU0NTgsIDEwNTQ2NSwgMTA1NDcwLCAKLSAgICAxMDU0NzUsIDEwNTQ4MiwgMTA1NDg3LCAxMDU0OTIsIDEwNTQ5NywgMTA1NTAyLCAxMDU1MDcsIDEwNTUxMiwgMTA1NTE3LCAKLSAgICAxMDU1MjIsIDEwNTUyNywgMTA1NTMyLCAxMDU1MzcsIDEwNTU0MiwgMTA1NTQ3LCAxMDU1NTIsIDEwNTU1NywgMTA1NTYyLCAKLSAgICAxMDU1NjcsIDEwNTU3MiwgMTA1NTc3LCAxMDU1ODQsIDEwNTU4OSwgMTA1NTk0LCAxMDU1OTksIDEwNTYwNCwgMTA1NjA5LCAKLSAgICAxMDU2MTQsIDEwNTYxOSwgMTA1NjI0LCAxMDU2MjksIDEwNTYzNCwgMTA1NjM5LCAxMDU2NDQsIDEwNTY0OSwgMTA1NjU2LCAKLSAgICAxMDU2NjEsIDEwNTY2NiwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MywgMTA1Njg4LCAxMDU2OTMsIDEwNTY5OCwgMTA1NzAzLCAKLSAgICAxMDU3MDgsIDEwNTcxMywgMTA1NzE4LCAxMDU3MjMsIDEwNTczMCwgMTA1NzM1LCAxMDU3NDAsIDEwNTc0NSwgMTA1NzUwLCAKLSAgICAxMDU3NTUsIDEwNTc2MiwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1Nzg0LCAxMDU3ODksIDEwNTc5NCwgMTA1Nzk5LCAKLSAgICAxMDU4MDQsIDEwNTgwOSwgMTA1ODE0LCAxMDU4MTksIDEwNTgyNCwgMTA1ODI5LCAxMDU4MzQsIDEwNTgzOSwgMTA1ODQ0LCAKLSAgICAxMDU4NDksIDEwNTg1NCwgMTA1ODU5LCAxMDU4NjQsIDEwNTg2OSwgMTA1ODc0LCAxMDU4NzksIDEwNTg4NCwgMTA1ODg5LCAKLSAgICAxMDU4OTQsIDEwNTg5OSwgMTA1OTA0LCAxMDU5MDksIDEwNTkxNCwgMTA1OTE5LCAxMDU5MjQsIDEwNTkyOSwgMTA1OTM0LCAKLSAgICAxMDU5MzksIDEwNTk0NCwgMTA1OTQ5LCAxMDU5NTYsIDEwNTk2MSwgMTA1OTY2LCAxMDU5NzEsIDEwNTk3NiwgMTA1OTgxLCAKLSAgICAxMDU5ODYsIDEwNTk5MSwgMTA1OTk2LCAxMDYwMDEsIDEwNjAwNiwgMTA2MDExLCAxMDYwMTYsIDEwNjAyMSwgMTA2MDI2LCAKLSAgICAxMDYwMzEsIDEwNjAzNiwgMTA2MDQxLCAxMDYwNDYsIDEwNjA1MSwgMTA2MDU2LCAxMDYwNjEsIDEwNjA2NiwgMTA2MDcxLCAKLSAgICAxMDYwNzYsIDEwNjA4MSwgMTA2MDg2LCAxMDYwOTEsIDEwNjA5NiwgMTA2MTAxLCAxMDYxMDYsIDEwNjExMSwgMTA2MTE2LCAKLSAgICAxMDYxMjEsIDEwNjEyNiwgMTA2MTMxLCAxMDYxMzYsIDEwNjE0MSwgMTA2MTQ2LCAxMDYxNTEsIDEwNjE1NiwgMTA2MTYxLCAKLSAgICAxMDYxNjYsIDEwNjE3MSwgMTA2MTc2LCAxMDYxODEsIDEwNjE4NiwgMTA2MTkxLCAxMDYxOTYsIDEwNjIwMSwgMTA2MjA2LCAKLSAgICAxMDYyMTEsIDEwNjIxNiwgMTA2MjIxLCAxMDYyMjYsIDEwNjIzMSwgMTA2MjM2LCAxMDYyNDEsIDEwNjI0NiwgMTA2MjUzLCAKLSAgICAxMDYyNTgsIDEwNjI2MywgMTA2MjY4LCAxMDYyNzMsIDEwNjI3OCwgMTA2MjgzLCAxMDYyODcsIDEwNjI5MiwgMTA2Mjk3LCAKLSAgICAxMDYzMDIsIDEwNjMwNywgMTA2MzEyLCAxMDYzMTcsIDEwNjMyMiwgMTA2MzI3LCAxMDYzMzIsIDEwNjMzNywgMTA2MzQyLCAKLSAgICAxMDYzNDcsIDEwNjM1MiwgMTA2MzU3LCAxMDYzNjQsIDEwNjM2OSwgMTA2Mzc0LCAxMDYzODAsIDEwNjM4NSwgMTA2MzkwLCAKLSAgICAxMDYzOTUsIDEwNjQwMCwgMTA2NDA1LCAxMDY0MTAsIDEwNjQxNSwgMTA2NDIwLCAxMDY0MjUsIDEwNjQzMCwgMTA2NDM1LCAKLSAgICAxMDY0NDAsIDEwNjQ0NSwgMTA2NDUwLCAxMDY0NTUsIDEwNjQ2MCwgMTA2NDY1LCAxMDY0NzAsIDEwNjQ3NSwgMTA2NDgwLCAKLSAgICAxMDY0ODUsIDEwNjQ5MCwgMTA2NDk1LCAxMDY1MDAsIDEwNjUwNSwgMTA2NTEwLCAxMDY1MTUsIDEwNjUyMCwgMTA2NTI1LCAKLSAgICAxMDY1MzAsIDEwNjUzNSwgMTA2NTQwLCAxMDY1NDUsIDEwNjU1MCwgMTA2NTU1LCAxMDY1NjAsIDEwNjU2NSwgMTA2NTcwLCAKLSAgICAxMDY1NzUsIDEwNjU4MCwgMTA2NTg1LCAxMDY1OTAsIDEwNjU5NSwgMTA2NjAyLCAxMDY2MDcsIDEwNjYxMiwgMTA2NjE5LCAKLSAgICAxMDY2MjYsIDEwNjYzMSwgMTA2NjM2LCAxMDY2NDEsIDEwNjY0NiwgMTA2NjUxLCAxMDY2NTYsIDEwNjY2MSwgMTA2NjY2LCAKLSAgICAxMDY2NzEsIDEwNjY3NiwgMTA2NjgxLCAxMDY2ODYsIDEwNjY5MSwgMTA2Njk2LCAxMDY3MDEsIDEwNjcwNiwgMTA2NzExLCAKLSAgICAxMDY3MTYsIDEwNjcyMSwgMTA2NzI2LCAxMDY3MzEsIDEwNjczNiwgMTA2NzQxLCAxMDY3NDYsIDEwNjc1MSwgMTA2NzU4LCAKLSAgICAxMDY3NjMsIDEwNjc2OCwgMTA2NzczLCAxMDY3NzgsIDEwNjc4MywgMTA2Nzg4LCAxMDY3OTMsIDEwNjc5OCwgMTA2ODAzLCAKLSAgICAxMDY4MDgsIDEwNjgxMywgMTA2ODE4LCAxMDY4MjMsIDEwNjgyOCwgMTA2ODMzLCAxMDY4MzgsIDEwNjg0MywgMTA2ODQ4LCAKLSAgICAxMDY4NTUsIDEwNjg2MCwgMTA2ODY1LCAxMDY4NzAsIDEwNjg3NSwgMTA2ODgwLCAxMDY4ODUsIDEwNjg5MCwgMTA2ODk2LCAKLSAgICAxMDY5MDEsIDEwNjkwNiwgMTA2OTExLCAxMDY5MTYsIDEwNjkyMSwgMTA2OTI2LCAxMDY5MzEsIDEwNjkzNiwgMTA2OTQzLCAKLSAgICAxMDY5NTAsIDEwNjk1NSwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTczLCAxMDY5NzcsIDEwNjk4MiwgMTA2OTg5LCAKLSAgICAxMDY5OTQsIDEwNjk5OSwgMTA3MDA4LCAxMDcwMTMsIDEwNzAxOCwgMTA3MDIzLCAxMDcwMjgsIDEwNzAzNSwgMTA3MDQyLCAKLSAgICAxMDcwNDcsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjIsIDEwNzA2OSwgMTA3MDc0LCAxMDcwNzksIDEwNzA4NCwgMTA3MDg5LCAKLSAgICAxMDcwOTQsIDEwNzA5OSwgMTA3MTA0LCAxMDcxMDksIDEwNzExNCwgMTA3MTE5LCAxMDcxMjQsIDEwNzEyOSwgMTA3MTM2LCAKLSAgICAxMDcxNDAsIDEwNzE0NSwgMTA3MTUwLCAxMDcxNTUsIDEwNzE2MCwgMTA3MTY0LCAxMDcxNjksIDEwNzE3NCwgMTA3MTc5LCAKLSAgICAxMDcxODQsIDEwNzE4OSwgMTA3MTk0LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA5LCAxMDcyMTUsIDEwNzIyMSwgMTA3MjI3LCAKLSAgICAxMDcyMzMsIDEwNzIzOSwgMTA3MjQ1LCAxMDcyNTEsIDEwNzI1NywgMTA3MjYzLCAxMDcyNjksIDEwNzI3NSwgMTA3MjgxLCAKLSAgICAxMDcyODYsIDEwNzI5MiwgMTA3Mjk4LCAxMDczMDQsIDEwNzMxMCwgMTA3MzE2LCAxMDczMjIsIDEwNzMyOCwgMTA3MzM0LCAKLSAgICAxMDczNDAsIDEwNzM0NiwgMTA3MzUyLCAxMDczNTcsIDEwNzM2MywgMTA3MzY5LCAxMDczNzUsIDEwNzM4MSwgMTA3Mzg3LCAKLSAgICAxMDczOTMsIDEwNzM5OSwgMTA3NDA1LCAxMDc0MTEsIDEwNzQxNywgMTA3NDIzLCAxMDc0MjksIDEwNzQzNSwgMTA3NDQxLCAKLSAgICAxMDc0NDcsIDEwNzQ1MywgMTA3NDU5LCAxMDc0NjUsIDEwNzQ3MSwgMTA3NDc3LCAxMDc0ODIsIDEwNzQ4OCwgMTA3NDk0LCAKLSAgICAxMDc1MDAsIDEwNzUwNiwgMTA3NTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcwMDIsIDEwNzAwOSwgMTA3MDE2LCAxMDcwMjUsIDEwNzAzNCwgCisgICAgMTA3MDQxLCAxMDcwNDYsIDEwNzA1MywgMTA3MDYwLCAxMDcwNjksIDEwNzA4MCwgMTA3MDkxLCAxMDcwOTYsIDEwNzEwMywgCisgICAgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIzLCAxMDcxMjgsIDEwNzEzMywgMTA3MTM4LCAxMDcxNDMsIDEwNzE0OCwgCisgICAgMTA3MTUzLCAxMDcxNTgsIDEwNzE2NSwgMTA3MTcyLCAxMDcxNzcsIDEwNzE4MiwgMTA3MTg3LCAxMDcxOTIsIDEwNzE5OSwgCisgICAgMTA3MjA2LCAxMDcyMTQsIDEwNzIxOSwgMTA3MjI2LCAxMDcyMzEsIDEwNzIzNiwgMTA3MjQxLCAxMDcyNDYsIDEwNzI1MSwgCisgICAgMTA3MjU4LCAxMDcyNjUsIDEwNzI3MCwgMTA3Mjc1LCAxMDcyODAsIDEwNzI4NSwgMTA3MjkwLCAxMDcyOTUsIDEwNzMwMCwgCisgICAgMTA3MzA1LCAxMDczMTAsIDEwNzMxNSwgMTA3MzIwLCAxMDczMjUsIDEwNzMzMCwgMTA3MzM1LCAxMDczNDAsIDEwNzM0NSwgCisgICAgMTA3MzUwLCAxMDczNTUsIDEwNzM2MCwgMTA3MzY3LCAxMDczNzIsIDEwNzM3NywgMTA3Mzg2LCAxMDczOTMsIDEwNzM5OCwgCisgICAgMTA3NDAzLCAxMDc0MDgsIDEwNzQxMywgMTA3NDE4LCAxMDc0MjMsIDEwNzQyOCwgMTA3NDMzLCAxMDc0MzgsIDEwNzQ0MywgCisgICAgMTA3NDQ4LCAxMDc0NTMsIDEwNzQ1OCwgMTA3NDYzLCAxMDc0NjgsIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgCisgICAgMTA3NDkzLCAxMDc0OTgsIDEwNzUwNCwgMTA3NTEyLCAxMDc1MTgsIDEwNzUyNiwgMTA3NTM0LCAxMDc1NDIsIDEwNzU0OCwgCisgICAgMTA3NTU0LCAxMDc1NjAsIDEwNzU2NiwgMTA3NTcyLCAxMDc1ODAsIDEwNzU5MCwgMTA3NTk4LCAxMDc2MDYsIDEwNzYxMiwgCisgICAgMTA3NjE4LCAxMDc2MjYsIDEwNzYzNCwgMTA3NjQwLCAxMDc2NDgsIDEwNzY1NiwgMTA3NjY0LCAxMDc2NzAsIDEwNzY3NiwgCisgICAgMTA3NjgyLCAxMDc2ODgsIDEwNzY5NCwgMTA3NzAwLCAxMDc3MDgsIDEwNzcxNiwgMTA3NzIyLCAxMDc3MjgsIDEwNzczNCwgCisgICAgMTA3NzQwLCAxMDc3NDYsIDEwNzc1NCwgMTA3NzYwLCAxMDc3NjYsIDEwNzc3MiwgMTA3Nzc4LCAxMDc3ODQsIDEwNzc5MCwgCisgICAgMTA3Nzk4LCAxMDc4MDQsIDEwNzgxMCwgMTA3ODE2LCAxMDc4MjIsIDEwNzgzMCwgMTA3ODM4LCAxMDc4NDQsIDEwNzg1MCwgCisgICAgMTA3ODU2LCAxMDc4NjEsIDEwNzg2NywgMTA3ODczLCAxMDc4ODAsIDEwNzg4NSwgMTA3ODkwLCAxMDc4OTUsIDEwNzkwMCwgCisgICAgMTA3OTA1LCAxMDc5MTAsIDEwNzkxNSwgMTA3OTIwLCAxMDc5MjUsIDEwNzkzNCwgMTA3OTQxLCAxMDc5NDYsIDEwNzk1MSwgCisgICAgMTA3OTU2LCAxMDc5NjMsIDEwNzk2OCwgMTA3OTczLCAxMDc5NzgsIDEwNzk4NSwgMTA3OTkwLCAxMDc5OTUsIDEwODAwMCwgCisgICAgMTA4MDA1LCAxMDgwMTAsIDEwODAxNSwgMTA4MDIwLCAxMDgwMjUsIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NywgCisgICAgMTA4MDUyLCAxMDgwNTksIDEwODA2NCwgMTA4MDY5LCAxMDgwNzYsIDEwODA4MSwgMTA4MDg2LCAxMDgwOTEsIDEwODA5NiwgCisgICAgMTA4MTAxLCAxMDgxMDYsIDEwODExMSwgMTA4MTE2LCAxMDgxMjEsIDEwODEyNiwgMTA4MTMxLCAxMDgxMzYsIDEwODE0MSwgCisgICAgMTA4MTQ2LCAxMDgxNTEsIDEwODE1NiwgMTA4MTYxLCAxMDgxNjYsIDEwODE3MSwgMTA4MTc4LCAxMDgxODMsIDEwODE4OCwgCisgICAgMTA4MTkzLCAxMDgxOTgsIDEwODIwMywgMTA4MjA4LCAxMDgyMTMsIDEwODIxOCwgMTA4MjIzLCAxMDgyMjgsIDEwODIzMywgCisgICAgMTA4MjM4LCAxMDgyNDMsIDEwODI1MCwgMTA4MjU1LCAxMDgyNjAsIDEwODI2NywgMTA4MjcyLCAxMDgyNzcsIDEwODI4MiwgCisgICAgMTA4Mjg3LCAxMDgyOTIsIDEwODI5NywgMTA4MzAyLCAxMDgzMDcsIDEwODMxMiwgMTA4MzE3LCAxMDgzMjQsIDEwODMyOSwgCisgICAgMTA4MzM0LCAxMDgzMzksIDEwODM0NCwgMTA4MzQ5LCAxMDgzNTYsIDEwODM2MywgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgCisgICAgMTA4MzgzLCAxMDgzODgsIDEwODM5MywgMTA4Mzk4LCAxMDg0MDMsIDEwODQwOCwgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgCisgICAgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MywgMTA4NDU4LCAxMDg0NjMsIDEwODQ2OCwgCisgICAgMTA4NDczLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAxMDg0OTMsIDEwODQ5OCwgMTA4NTAzLCAxMDg1MDgsIDEwODUxMywgCisgICAgMTA4NTE4LCAxMDg1MjMsIDEwODUyOCwgMTA4NTMzLCAxMDg1MzgsIDEwODU0MywgMTA4NTUwLCAxMDg1NTUsIDEwODU2MCwgCisgICAgMTA4NTY1LCAxMDg1NzAsIDEwODU3NSwgMTA4NTgwLCAxMDg1ODUsIDEwODU5MCwgMTA4NTk1LCAxMDg2MDAsIDEwODYwNSwgCisgICAgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MzAsIDEwODYzNSwgMTA4NjQwLCAxMDg2NDUsIDEwODY1MCwgCisgICAgMTA4NjU1LCAxMDg2NjAsIDEwODY2NSwgMTA4NjcwLCAxMDg2NzUsIDEwODY4MCwgMTA4Njg1LCAxMDg2OTAsIDEwODY5NSwgCisgICAgMTA4NzAwLCAxMDg3MDUsIDEwODcxMCwgMTA4NzE1LCAxMDg3MjAsIDEwODcyNSwgMTA4NzMwLCAxMDg3MzUsIDEwODc0MCwgCisgICAgMTA4NzQ1LCAxMDg3NTAsIDEwODc1NSwgMTA4NzYwLCAxMDg3NjUsIDEwODc3MCwgMTA4Nzc1LCAxMDg3ODAsIDEwODc4NSwgCisgICAgMTA4NzkwLCAxMDg3OTUsIDEwODgwMCwgMTA4ODA1LCAxMDg4MTAsIDEwODgxNSwgMTA4ODIwLCAxMDg4MjUsIDEwODgzMCwgCisgICAgMTA4ODM1LCAxMDg4NDAsIDEwODg0NywgMTA4ODUyLCAxMDg4NTcsIDEwODg2MiwgMTA4ODY3LCAxMDg4NzIsIDEwODg3NywgCisgICAgMTA4ODgxLCAxMDg4ODYsIDEwODg5MSwgMTA4ODk2LCAxMDg5MDEsIDEwODkwNiwgMTA4OTExLCAxMDg5MTYsIDEwODkyMSwgCisgICAgMTA4OTI2LCAxMDg5MzEsIDEwODkzNiwgMTA4OTQxLCAxMDg5NDYsIDEwODk1MSwgMTA4OTU4LCAxMDg5NjMsIDEwODk2OCwgCisgICAgMTA4OTc0LCAxMDg5NzksIDEwODk4NCwgMTA4OTg5LCAxMDg5OTQsIDEwODk5OSwgMTA5MDA0LCAxMDkwMDksIDEwOTAxNCwgCisgICAgMTA5MDE5LCAxMDkwMjQsIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzksIDEwOTA0NCwgMTA5MDQ5LCAxMDkwNTQsIDEwOTA1OSwgCisgICAgMTA5MDY0LCAxMDkwNjksIDEwOTA3NCwgMTA5MDc5LCAxMDkwODQsIDEwOTA4OSwgMTA5MDk0LCAxMDkwOTksIDEwOTEwNCwgCisgICAgMTA5MTA5LCAxMDkxMTQsIDEwOTExOSwgMTA5MTI0LCAxMDkxMjksIDEwOTEzNCwgMTA5MTM5LCAxMDkxNDQsIDEwOTE0OSwgCisgICAgMTA5MTU0LCAxMDkxNTksIDEwOTE2NCwgMTA5MTY5LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg0LCAxMDkxODksIDEwOTE5NiwgCisgICAgMTA5MjAxLCAxMDkyMDYsIDEwOTIxMywgMTA5MjIwLCAxMDkyMjUsIDEwOTIzMCwgMTA5MjM1LCAxMDkyNDAsIDEwOTI0NSwgCisgICAgMTA5MjUwLCAxMDkyNTUsIDEwOTI2MCwgMTA5MjY1LCAxMDkyNzAsIDEwOTI3NSwgMTA5MjgwLCAxMDkyODUsIDEwOTI5MCwgCisgICAgMTA5Mjk1LCAxMDkzMDAsIDEwOTMwNSwgMTA5MzEwLCAxMDkzMTUsIDEwOTMyMCwgMTA5MzI1LCAxMDkzMzAsIDEwOTMzNSwgCisgICAgMTA5MzQwLCAxMDkzNDUsIDEwOTM1MiwgMTA5MzU3LCAxMDkzNjIsIDEwOTM2NywgMTA5MzcyLCAxMDkzNzcsIDEwOTM4MiwgCisgICAgMTA5Mzg3LCAxMDkzOTIsIDEwOTM5NywgMTA5NDAyLCAxMDk0MDcsIDEwOTQxMiwgMTA5NDE3LCAxMDk0MjIsIDEwOTQyNywgCisgICAgMTA5NDMyLCAxMDk0MzcsIDEwOTQ0MiwgMTA5NDQ5LCAxMDk0NTQsIDEwOTQ1OSwgMTA5NDY0LCAxMDk0NjksIDEwOTQ3NCwgCisgICAgMTA5NDc5LCAxMDk0ODQsIDEwOTQ5MCwgMTA5NDk1LCAxMDk1MDAsIDEwOTUwNSwgMTA5NTEwLCAxMDk1MTUsIDEwOTUyMCwgCisgICAgMTA5NTI1LCAxMDk1MzAsIDEwOTUzNywgMTA5NTQ0LCAxMDk1NDksIDEwOTU1NCwgMTA5NTU4LCAxMDk1NjMsIDEwOTU2NywgCisgICAgMTA5NTcxLCAxMDk1NzYsIDEwOTU4MywgMTA5NTg4LCAxMDk1OTMsIDEwOTYwMiwgMTA5NjA3LCAxMDk2MTIsIDEwOTYxNywgCisgICAgMTA5NjIyLCAxMDk2MjksIDEwOTYzNiwgMTA5NjQxLCAxMDk2NDYsIDEwOTY1MSwgMTA5NjU2LCAxMDk2NjMsIDEwOTY2OCwgCisgICAgMTA5NjczLCAxMDk2NzgsIDEwOTY4MywgMTA5Njg4LCAxMDk2OTMsIDEwOTY5OCwgMTA5NzAzLCAxMDk3MDgsIDEwOTcxMywgCisgICAgMTA5NzE4LCAxMDk3MjMsIDEwOTczMCwgMTA5NzM0LCAxMDk3MzksIDEwOTc0NCwgMTA5NzQ5LCAxMDk3NTQsIDEwOTc1OCwgCisgICAgMTA5NzYzLCAxMDk3NjgsIDEwOTc3MywgMTA5Nzc4LCAxMDk3ODMsIDEwOTc4OCwgMTA5NzkzLCAxMDk3OTgsIDEwOTgwMywgCisgICAgMTA5ODA5LCAxMDk4MTUsIDEwOTgyMSwgMTA5ODI3LCAxMDk4MzMsIDEwOTgzOSwgMTA5ODQ1LCAxMDk4NTEsIDEwOTg1NywgCisgICAgMTA5ODYzLCAxMDk4NjksIDEwOTg3NSwgMTA5ODgwLCAxMDk4ODYsIDEwOTg5MiwgMTA5ODk4LCAxMDk5MDQsIDEwOTkxMCwgCisgICAgMTA5OTE2LCAxMDk5MjIsIDEwOTkyOCwgMTA5OTM0LCAxMDk5NDAsIDEwOTk0NiwgMTA5OTUxLCAxMDk5NTcsIDEwOTk2MywgCisgICAgMTA5OTY5LCAxMDk5NzUsIDEwOTk4MSwgMTA5OTg3LCAxMDk5OTMsIDEwOTk5OSwgMTEwMDA1LCAxMTAwMTEsIDExMDAxNywgCisgICAgMTEwMDIzLCAxMTAwMjksIDExMDAzNSwgMTEwMDQxLCAxMTAwNDcsIDExMDA1MywgMTEwMDU5LCAxMTAwNjUsIDExMDA3MSwgCisgICAgMTEwMDc2LCAxMTAwODIsIDExMDA4OCwgMTEwMDk0LCAxMTAxMDAsIDExMDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NTE4LCAxMDc1MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDExMiwgMTEwMTE1LCAxMTAxMTksIAorICAgIDExMDEyMywgMTEwMTI3LCAxMTAxMzAsIDExMDEzNCwgMTEwMTM5LCAxMTAxNDMsIDExMDE0NywgMTEwMTUxLCAxMTAxNTUsIAorICAgIDExMDE1OSwgMTEwMTY0LCAxMTAxNjksIDExMDE3MywgMTEwMTc3LCAxMTAxODAsIDExMDE4NCwgMTEwMTg5LCAxMTAxOTQsIAorICAgIDExMDE5OCwgMTEwMjAyLCAxMTAyMDYsIDExMDIxMCwgMTEwMjE0LCAxMTAyMTgsIDExMDIyMiwgMTEwMjI2LCAxMTAyMzAsIAorICAgIDExMDIzNCwgMTEwMjM3LCAxMTAyNDEsIDExMDI0NSwgMTEwMjQ5LCAxMTAyNTMsIDExMDI1NywgMTEwMjYxLCAxMTAyNjcsIAorICAgIDExMDI3MCwgMTEwMjc0LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIAorICAgIDExMDMwNiwgMTEwMzExLCAxMTAzMTYsIDExMDMyMiwgMTEwMzI2LCAxMTAzMzAsIDExMDMzNCwgMTEwMzM4LCAxMTAzNDIsIAorICAgIDExMDM0NiwgMTEwMzUxLCAxMTAzNTQsIDExMDM1OCwgMTEwMzYyLCAxMTAzNjYsIDExMDM3MCwgMTEwMzc2LCAxMTAzODAsIAorICAgIDExMDM4NCwgMTEwMzg4LCAxMTAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDM5NiwgMTEwNDAwLCAKKyAgICAxMTA0MDQsIDExMDQxMCwgMTEwNDE2LCAxMTA0MjAsIDExMDQyNSwgMTEwNDMwLCAxMTA0MzUsIDExMDQ0MCwgMTEwNDQ0LCAKKyAgICAxMTA0NDksIDExMDQ1NCwgMTEwNDU5LCAxMTA0NjMsIDExMDQ2OCwgMTEwNDczLCAxMTA0NzgsIDExMDQ4MiwgMTEwNDg3LCAKKyAgICAxMTA0OTIsIDExMDQ5NywgMTEwNTAyLCAxMTA1MDcsIDExMDUxMiwgMTEwNTE3LCAxMTA1MjIsIDExMDUyNiwgMTEwNTMxLCAKKyAgICAxMTA1MzYsIDExMDU0MSwgMTEwNTQ2LCAxMTA1NTEsIDExMDU1NiwgMTEwNTYxLCAxMTA1NjYsIDExMDU3MSwgMTEwNTc2LCAKKyAgICAxMTA1ODEsIDExMDU4OCwgMTEwNTkzLCAxMTA2MDAsIDExMDYwNSwgMTEwNjEwLCAxMTA2MTUsIDExMDYyMCwgMTEwNjI1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2MzAsIDExMDYzNCwgMTEwNjQwLCAKKyAgICAxMTA2NDMsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjYyLCAxMTA2NjYsIDExMDY3MCwgMTEwNjc0LCAKKyAgICAxMTA2ODAsIDExMDY4NiwgMTEwNjkyLCAxMTA2OTgsIDExMDcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NTI5LCAxMDc1MzQsIAotICAgIDEwNzUzOSwgMTA3NTQ0LCAxMDc1NTEsIDEwNzU1OCwgMTA3NTY1LCAxMDc1NzIsIDEwNzU3NywgMTA3NTgyLCAxMDc1ODcsIAotICAgIDEwNzU5MiwgMTA3NTk5LCAxMDc2MDQsIDEwNzYxMSwgMTA3NjE4LCAxMDc2MjMsIDEwNzYyOCwgMTA3NjMzLCAxMDc2NDAsIAotICAgIDEwNzY0NSwgMTA3NjUwLCAxMDc2NTcsIDEwNzY2NCwgMTA3NjY5LCAxMDc2NzQsIDEwNzY3OSwgMTA3Njg2LCAxMDc2OTMsIAotICAgIDEwNzcwMCwgMTA3NzA1LCAxMDc3MTAsIDEwNzcxNywgMTA3NzI0LCAxMDc3MzEsIDEwNzczOCwgMTA3NzQzLCAxMDc3NDgsIAotICAgIDEwNzc1MywgMTA3NzYwLCAxMDc3NjUsIDEwNzc3MCwgMTA3Nzc1LCAxMDc3ODIsIDEwNzc5MSwgMTA3Nzk4LCAxMDc4MDMsIAotICAgIDEwNzgwOCwgMTA3ODEzLCAxMDc4MTgsIDEwNzgyMywgMTA3ODI4LCAxMDc4MzcsIDEwNzg0NCwgMTA3ODQ5LCAxMDc4NTYsIAotICAgIDEwNzg2MywgMTA3ODY4LCAxMDc4NzMsIDEwNzg3OCwgMTA3ODg1LCAxMDc4OTAsIDEwNzg5NywgMTA3OTA0LCAxMDc5MDksIAotICAgIDEwNzkxNCwgMTA3OTE5LCAxMDc5MjYsIDEwNzkzMywgMTA3OTM4LCAxMDc5NDMsIDEwNzk1MCwgMTA3OTU3LCAxMDc5NjQsIAotICAgIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTkxLCAxMDgwMDAsIDEwODAwOSwgMTA4MDE0LCAxMDgwMjEsIAotICAgIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NSwgMTA4MDUwLCAxMDgwNTcsIDEwODA2NCwgMTA4MDcxLCAxMDgwNzgsIAotICAgIDEwODA4MywgMTA4MDg4LCAxMDgwOTMsIDEwODEwMCwgMTA4MTA3LCAxMDgxMTQsIDEwODExOSwgMTA4MTI0LCAxMDgxMzEsIAotICAgIDEwODEzNiwgMTA4MTQzLCAxMDgxNDgsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjcsIDEwODE3NCwgMTA4MTc5LCAxMDgxODQsIAotICAgIDEwODE4OSwgMTA4MTk0LCAxMDgxOTksIDEwODIwNCwgMTA4MjA5LCAxMDgyMTQsIDEwODIxOSwgMTA4MjI2LCAxMDgyMzMsIAotICAgIDEwODI0MCwgMTA4MjQ3LCAxMDgyNTQsIDEwODI2MywgMTA4MjY4LCAxMDgyNzMsIDEwODI4MCwgMTA4Mjg3LCAxMDgyOTIsIAotICAgIDEwODI5OSwgMTA4MzA2LCAxMDgzMTMsIDEwODMyMCwgMTA4MzI3LCAxMDgzMzQsIDEwODMzOSwgMTA4MzQ0LCAxMDgzNDksIAotICAgIDEwODM1NCwgMTA4MzU5LCAxMDgzNjgsIDEwODM3NywgMTA4Mzg2LCAxMDgzOTUsIDEwODQwNCwgMTA4NDEzLCAxMDg0MjIsIAotICAgIDEwODQzMSwgMTA4NDM2LCAxMDg0NDcsIDEwODQ1OCwgMTA4NDY3LCAxMDg0NzIsIDEwODQ3NywgMTA4NDgyLCAxMDg0ODcsIAotICAgIDEwODQ5NiwgMTA4NTAzLCAxMDg1MTAsIDEwODUxNywgMTA4NTI0LCAxMDg1MzEsIDEwODUzOCwgMTA4NTQ3LCAxMDg1NTYsIAotICAgIDEwODU2NywgMTA4NTc2LCAxMDg1ODcsIDEwODU5NiwgMTA4NjAzLCAxMDg2MTIsIDEwODYyMywgMTA4NjMyLCAxMDg2NDEsIAotICAgIDEwODY1MCwgMTA4NjU5LCAxMDg2NjYsIDEwODY3MywgMTA4NjgwLCAxMDg2ODksIDEwODY5OCwgMTA4NzA5LCAxMDg3MTgsIAotICAgIDEwODcyNywgMTA4NzM4LCAxMDg3NDMsIDEwODc0OCwgMTA4NzU5LCAxMDg3NjcsIDEwODc3NiwgMTA4Nzg1LCAxMDg3OTQsIAotICAgIDEwODgwNSwgMTA4ODE0LCAxMDg4MjMsIDEwODgzNCwgMTA4ODQ1LCAxMDg4NTYsIDEwODg2NywgMTA4ODc4LCAxMDg4ODksIAotICAgIDEwODg5NiwgMTA4OTAzLCAxMDg5MTAsIDEwODkxNywgMTA4OTI4LCAxMDg5MzcsIDEwODk0NCwgMTA4OTUxLCAxMDg5NTgsIAotICAgIDEwODk2OSwgMTA4OTgwLCAxMDg5OTEsIDEwOTAwMiwgMTA5MDEzLCAxMDkwMjQsIDEwOTAzNSwgMTA5MDQ2LCAxMDkwNTMsIAotICAgIDEwOTA2MCwgMTA5MDY5LCAxMDkwNzgsIDEwOTA4NSwgMTA5MDkyLCAxMDkwOTksIDEwOTEwOCwgMTA5MTE3LCAxMDkxMjYsIAotICAgIDEwOTEzMywgMTA5MTQyLCAxMDkxNTEsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTIsIAotICAgIDEwOTE5OSwgMTA5MjA2LCAxMDkyMTMsIDEwOTIyMCwgMTA5MjI3LCAxMDkyMzYsIDEwOTI0NSwgMTA5MjU0LCAxMDkyNjMsIAotICAgIDEwOTI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5Mjc5LCAxMDkyODUsIDEwOTI5MCwgMTA5Mjk1LCAKLSAgICAxMDkzMDIsIDEwOTMwOCwgMTA5MzE0LCAxMDkzMjAsIDEwOTMyNiwgMTA5MzMyLCAxMDkzMzgsIDEwOTM0NCwgMTA5MzQ4LCAKLSAgICAxMDkzNTIsIDEwOTM1OCwgMTA5MzY0LCAxMDkzNzAsIDEwOTM3NCwgMTA5Mzc5LCAxMDkzODQsIDEwOTM4OCwgMTA5MzkyLCAKLSAgICAxMDkzOTUsIDEwOTQwMSwgMTA5NDA3LCAxMDk0MTMsIDEwOTQxOSwgMTA5NDI1LCAxMDk0MzEsIDEwOTQzNywgMTA5NDQzLCAKLSAgICAxMDk0NDksIDEwOTQ1OSwgMTA5NDY5LCAxMDk0NzUsIDEwOTQ4MSwgMTA5NDkxLCAxMDk1MDEsIDEwOTUwNywgMCwgMCwgCi0gICAgMTA5NTEzLCAxMDk1MjEsIDEwOTUyNiwgMTA5NTMxLCAxMDk1MzcsIDEwOTU0MywgMTA5NTQ5LCAxMDk1NTUsIDEwOTU2MSwgCi0gICAgMTA5NTY3LCAxMDk1NzQsIDEwOTU4MSwgMTA5NTg3LCAxMDk1OTMsIDEwOTU5OSwgMTA5NjA1LCAxMDk2MTEsIDEwOTYxNywgCi0gICAgMTA5NjIzLCAxMDk2MjksIDEwOTYzNCwgMTA5NjQwLCAxMDk2NDYsIDEwOTY1MiwgMTA5NjU4LCAxMDk2NjQsIDEwOTY3MywgCi0gICAgMTA5Njc5LCAxMDk2ODQsIDEwOTY5MiwgMTA5Njk5LCAxMDk3MDYsIDEwOTcxNSwgMTA5NzI0LCAxMDk3MzMsIDEwOTc0MiwgCi0gICAgMTA5NzUxLCAxMDk3NjAsIDEwOTc2OSwgMTA5Nzc4LCAxMDk3ODgsIDEwOTc5OCwgMTA5ODA2LCAxMDk4MTQsIDEwOTgyMywgCi0gICAgMTA5ODMyLCAxMDk4MzgsIDEwOTg0NCwgMTA5ODUwLCAxMDk4NTYsIDEwOTg2NCwgMTA5ODcyLCAxMDk4NzYsIDEwOTg4MiwgCi0gICAgMTA5ODg3LCAxMDk4OTMsIDEwOTg5OSwgMTA5OTA1LCAxMDk5MTEsIDEwOTkxNywgMTA5OTI2LCAxMDk5MzEsIDEwOTkzOCwgCi0gICAgMTA5OTQzLCAxMDk5NDgsIDEwOTk1MywgMTA5OTU5LCAxMDk5NjUsIDEwOTk3MSwgMTA5OTc4LCAxMDk5ODMsIDEwOTk4OCwgCi0gICAgMTA5OTkzLCAxMDk5OTgsIDExMDAwMywgMTEwMDA5LCAxMTAwMTUsIDExMDAyMSwgMTEwMDI3LCAxMTAwMzMsIDExMDAzOSwgCi0gICAgMTEwMDQ1LCAxMTAwNTEsIDExMDA1NiwgMTEwMDYxLCAxMTAwNjYsIDExMDA3MSwgMTEwMDc2LCAxMTAwODEsIDExMDA4NiwgCi0gICAgMTEwMDkxLCAxMTAwOTcsIDExMDEwMywgMTEwMTA4LCAxMTAxMTMsIDExMDExOCwgMTEwMTIzLCAxMTAxMjgsIDExMDEzNCwgCi0gICAgMTEwMTQxLCAxMTAxNDUsIDExMDE0OSwgMTEwMTUzLCAxMTAxNTcsIDExMDE2MSwgMTEwMTY1LCAxMTAxNjksIDExMDE3MywgCi0gICAgMTEwMTgxLCAxMTAxOTEsIDExMDE5NSwgMTEwMTk5LCAxMTAyMDUsIDExMDIxMSwgMTEwMjE3LCAxMTAyMjMsIDExMDIyOSwgCi0gICAgMTEwMjM1LCAxMTAyNDEsIDExMDI0NywgMTEwMjUzLCAxMTAyNTksIDExMDI2NSwgMTEwMjcxLCAxMTAyNzcsIDExMDI4MywgCi0gICAgMTEwMjg3LCAxMTAyOTEsIDExMDI5OCwgMTEwMzA0LCAxMTAzMTAsIDExMDMxNiwgMTEwMzIxLCAxMTAzMjgsIDExMDMzMywgCi0gICAgMTEwMzM5LCAxMTAzNDUsIDExMDM1MSwgMTEwMzU3LCAxMTAzNjIsIDExMDM2NiwgMTEwMzcyLCAxMTAzNzYsIDExMDM4MCwgCi0gICAgMTEwMzg0LCAxMTAzOTAsIDExMDM5NiwgMTEwNDAwLCAxMTA0MDYsIDExMDQxMiwgMTEwNDE4LCAxMTA0MjQsIDExMDQzMCwgCi0gICAgMTEwNDM4LCAxMTA0NDYsIDExMDQ1MiwgMTEwNDU4LCAxMTA0NjQsIDExMDQ3MCwgMTEwNDgyLCAxMTA0OTQsIDExMDUwOCwgCi0gICAgMTEwNTIwLCAxMTA1MzIsIDExMDU0NiwgMTEwNTYwLCAxMTA1NzQsIDExMDU3OCwgMTEwNTg2LCAxMTA1OTQsIDExMDU5OSwgCi0gICAgMTEwNjAzLCAxMTA2MDcsIDExMDYxMSwgMTEwNjE1LCAxMTA2MTksIDExMDYyMywgMTEwNjI3LCAxMTA2MzMsIDExMDYzOSwgCi0gICAgMTEwNjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2NTEsIDExMDY1NywgMTEwNjYzLCAxMTA2NjksIAotICAgIDExMDY3NSwgMTEwNjgxLCAxMTA2ODcsIDExMDY5MywgMTEwNjk5LCAxMTA3MDUsIDExMDcxMSwgMTEwNzE3LCAxMTA3MjMsIAotICAgIDExMDcyOSwgMTEwNzM1LCAxMTA3NDEsIDExMDc0NywgMTEwNzUzLCAxMTA3NTksIDExMDc2NSwgMTEwNzcxLCAxMTA3NzcsIAotICAgIDExMDc4MywgMTEwNzg5LCAxMTA3OTUsIDExMDgwMSwgMTEwODA3LCAxMTA4MTMsIDExMDgxOSwgMTEwODI1LCAxMTA4MzEsIAotICAgIDExMDgzNywgMTEwODQzLCAxMTA4NDksIDExMDg1NSwgMTEwODYxLCAxMTA4NjcsIDExMDg3MywgMTEwODc5LCAxMTA4ODUsIAotICAgIDExMDg5MSwgMTEwODk3LCAxMTA5MDMsIDExMDkwOSwgMTEwOTE1LCAxMTA5MjEsIDExMDkyNywgMTEwOTMzLCAxMTA5MzksIAotICAgIDExMDk0NSwgMTEwOTUxLCAxMTA5NTcsIDExMDk2MywgMTEwOTY5LCAxMTA5NzUsIDExMDk4MSwgMTEwOTg3LCAxMTA5OTMsIAotICAgIDExMDk5OSwgMTExMDA1LCAxMTEwMTEsIDExMTAxNywgMTExMDIzLCAxMTEwMjksIDExMTAzNSwgMTExMDQxLCAxMTEwNDcsIAotICAgIDExMTA1MiwgMTExMDU3LCAxMTEwNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTA2NiwgMTExMDcxLCAKLSAgICAxMTEwNzgsIDExMTA4NSwgMTExMDkyLCAxMTEwOTksIDExMTEwNCwgMTExMTA4LCAxMTExMTQsIDExMTExOCwgMTExMTIyLCAKLSAgICAxMTExMjgsIDExMTEzMiwgMTExMTM2LCAxMTExNDAsIDExMTE0NiwgMTExMTUzLCAxMTExNTcsIDExMTE2MSwgMTExMTY1LCAKLSAgICAxMTExNjksIDExMTE3MywgMTExMTc3LCAxMTExODMsIDExMTE4NywgMTExMTkxLCAxMTExOTUsIDExMTE5OSwgMTExMjAzLCAKLSAgICAxMTEyMDcsIDExMTIxMSwgMTExMjE1LCAxMTEyMTksIDExMTIyMywgMTExMjI3LCAxMTEyMzEsIDExMTIzNiwgMTExMjQwLCAKLSAgICAxMTEyNDQsIDExMTI0OCwgMTExMjUyLCAxMTEyNTYsIDExMTI2MCwgMTExMjY0LCAxMTEyNjgsIDExMTI3MiwgMTExMjc5LCAKLSAgICAxMTEyODMsIDExMTI5MSwgMTExMjk1LCAxMTEyOTksIDExMTMwMywgMTExMzA3LCAxMTEzMTEsIDExMTMxNSwgMTExMzE5LCAKLSAgICAxMTEzMjYsIDExMTMzMCwgMTExMzM0LCAxMTEzMzgsIDExMTM0MiwgMTExMzQ2LCAxMTEzNTIsIDExMTM1NiwgMTExMzYyLCAKLSAgICAxMTEzNjYsIDExMTM3MCwgMTExMzc0LCAxMTEzNzgsIDExMTM4MiwgMTExMzg2LCAxMTEzOTAsIDExMTM5NCwgMTExMzk4LCAKLSAgICAxMTE0MDIsIDExMTQwNiwgMTExNDEwLCAxMTE0MTQsIDExMTQxOCwgMTExNDIyLCAxMTE0MjYsIDExMTQzMCwgMTExNDM0LCAKLSAgICAxMTE0MzgsIDExMTQ0NiwgMTExNDUwLCAxMTE0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTQ1OCwgCi0gICAgMTExNDY2LCAxMTE0NzQsIDExMTQ4MiwgMTExNDkwLCAxMTE0OTgsIDExMTUwNiwgMTExNTE0LCAxMTE1MjIsIDExMTUzMCwgCi0gICAgMTExNTM4LCAxMTE1NDYsIDExMTU1NCwgMTExNTYyLCAxMTE1NzAsIDExMTU3OCwgMTExNTg2LCAxMTE1OTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTYwMiwgMTExNjA2LCAxMTE2MTEsIDExMTYxNiwgMTExNjIxLCAKLSAgICAxMTE2MjUsIDExMTYzMCwgMTExNjM1LCAxMTE2NDAsIDExMTY0NCwgMTExNjQ5LCAxMTE2NTQsIDExMTY1OCwgMTExNjYyLCAKLSAgICAxMTE2NjYsIDExMTY3MCwgMTExNjc1LCAxMTE2ODAsIDExMTY4NCwgMTExNjg4LCAxMTE2OTMsIDExMTY5NywgMTExNzAyLCAKLSAgICAxMTE3MDcsIDExMTcxMiwgMTExNzE3LCAxMTE3MjIsIDExMTcyNiwgMTExNzMxLCAxMTE3MzYsIDExMTc0MSwgMTExNzQ1LCAKLSAgICAxMTE3NTAsIDExMTc1NSwgMTExNzYwLCAxMTE3NjQsIDExMTc2OSwgMTExNzc0LCAxMTE3NzgsIDExMTc4MiwgMTExNzg2LCAKLSAgICAxMTE3OTAsIDExMTc5NSwgMTExODAwLCAxMTE4MDQsIDExMTgwOCwgMTExODEzLCAxMTE4MTcsIDExMTgyMiwgMTExODI3LCAKLSAgICAxMTE4MzIsIDExMTgzNywgMTExODQyLCAxMTE4NDYsIDExMTg1MSwgMTExODU2LCAxMTE4NjEsIDExMTg2NSwgMTExODcwLCAKLSAgICAxMTE4NzUsIDExMTg4MCwgMTExODg0LCAxMTE4ODksIDExMTg5NCwgMTExODk4LCAxMTE5MDIsIDExMTkwNiwgMTExOTEwLCAKLSAgICAxMTE5MTUsIDExMTkyMCwgMTExOTI0LCAxMTE5MjgsIDExMTkzMywgMTExOTM3LCAxMTE5NDIsIDExMTk0NywgMTExOTUyLCAKLSAgICAxMTE5NTcsIDExMTk2MiwgMTExOTY2LCAxMTE5NzEsIDExMTk3NiwgMTExOTgxLCAxMTE5ODUsIDExMTk5MCwgMCwgCi0gICAgMTExOTk1LCAxMTE5OTksIDExMjAwNCwgMTEyMDA5LCAxMTIwMTMsIDExMjAxNywgMTEyMDIxLCAxMTIwMjUsIDExMjAzMCwgCi0gICAgMTEyMDM1LCAxMTIwMzksIDExMjA0MywgMTEyMDQ4LCAxMTIwNTIsIDExMjA1NywgMTEyMDYyLCAxMTIwNjcsIDExMjA3MiwgCi0gICAgMTEyMDc3LCAxMTIwODIsIDExMjA4OCwgMTEyMDk0LCAxMTIxMDAsIDExMjEwNSwgMTEyMTExLCAxMTIxMTcsIDExMjEyMywgCi0gICAgMTEyMTI4LCAxMTIxMzQsIDExMjE0MCwgMTEyMTQ1LCAxMTIxNTAsIDExMjE1NSwgMTEyMTYwLCAxMTIxNjYsIDExMjE3MiwgCi0gICAgMTEyMTc3LCAxMTIxODIsIDExMjE4OCwgMTEyMTkzLCAxMTIxOTksIDExMjIwNSwgMTEyMjExLCAxMTIyMTcsIDExMjIyMywgCi0gICAgMTEyMjI4LCAxMTIyMzQsIDExMjI0MCwgMTEyMjQ2LCAxMTIyNTEsIDExMjI1NywgMTEyMjYzLCAxMTIyNjksIDExMjI3NCwgCi0gICAgMTEyMjgwLCAxMTIyODYsIDExMjI5MSwgMTEyMjk2LCAxMTIzMDEsIDExMjMwNiwgMTEyMzEyLCAxMTIzMTgsIDExMjMyMywgCi0gICAgMTEyMzI4LCAxMTIzMzQsIDExMjMzOSwgMTEyMzQ1LCAxMTIzNTEsIDExMjM1NywgMTEyMzYzLCAxMTIzNjksIDAsIAotICAgIDExMjM3MywgMTEyMzc4LCAwLCAwLCAxMTIzODMsIDAsIDAsIDExMjM4OCwgMTEyMzkzLCAwLCAwLCAxMTIzOTgsIDExMjQwMiwgCi0gICAgMTEyNDA2LCAxMTI0MTEsIDAsIDExMjQxNiwgMTEyNDIwLCAxMTI0MjUsIDExMjQyOSwgMTEyNDM0LCAxMTI0MzksIAotICAgIDExMjQ0NCwgMTEyNDQ5LCAxMTI0NTQsIDExMjQ1OCwgMTEyNDYzLCAxMTI0NjgsIDAsIDExMjQ3MywgMCwgMTEyNDc4LCAKLSAgICAxMTI0ODMsIDExMjQ4NywgMTEyNDkyLCAxMTI0OTcsIDExMjUwMSwgMTEyNTA1LCAwLCAxMTI1MDksIDExMjUxNCwgCi0gICAgMTEyNTE5LCAxMTI1MjMsIDExMjUyNywgMTEyNTMyLCAxMTI1MzYsIDExMjU0MSwgMTEyNTQ2LCAxMTI1NTEsIDExMjU1NiwgCi0gICAgMTEyNTYxLCAxMTI1NjYsIDExMjU3MiwgMTEyNTc4LCAxMTI1ODQsIDExMjU4OSwgMTEyNTk1LCAxMTI2MDEsIDExMjYwNywgCi0gICAgMTEyNjEyLCAxMTI2MTgsIDExMjYyNCwgMTEyNjI5LCAxMTI2MzQsIDExMjYzOSwgMTEyNjQ0LCAxMTI2NTAsIDExMjY1NiwgCi0gICAgMTEyNjYxLCAxMTI2NjYsIDExMjY3MiwgMTEyNjc3LCAxMTI2ODMsIDExMjY4OSwgMTEyNjk1LCAxMTI3MDEsIDExMjcwNywgCi0gICAgMTEyNzEyLCAxMTI3MTgsIDExMjcyNCwgMTEyNzMwLCAxMTI3MzUsIDExMjc0MSwgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OCwgCi0gICAgMTEyNzY0LCAxMTI3NzAsIDExMjc3NSwgMTEyNzgwLCAxMTI3ODUsIDExMjc5MCwgMTEyNzk2LCAxMTI4MDIsIDExMjgwNywgCi0gICAgMTEyODEyLCAxMTI4MTgsIDExMjgyMywgMTEyODI5LCAxMTI4MzUsIDExMjg0MSwgMTEyODQ3LCAxMTI4NTMsIDExMjg1NywgCi0gICAgMCwgMTEyODYyLCAxMTI4NjcsIDExMjg3MSwgMTEyODc2LCAwLCAwLCAxMTI4ODEsIDExMjg4NiwgMTEyODkxLCAxMTI4OTUsIAotICAgIDExMjg5OSwgMTEyOTAzLCAxMTI5MDcsIDExMjkxMiwgMCwgMTEyOTE3LCAxMTI5MjEsIDExMjkyNiwgMTEyOTMwLCAKLSAgICAxMTI5MzUsIDExMjk0MCwgMTEyOTQ1LCAwLCAxMTI5NTAsIDExMjk1NCwgMTEyOTU5LCAxMTI5NjQsIDExMjk2OSwgCi0gICAgMTEyOTczLCAxMTI5NzgsIDExMjk4MywgMTEyOTg4LCAxMTI5OTIsIDExMjk5NywgMTEzMDAyLCAxMTMwMDYsIDExMzAxMCwgCi0gICAgMTEzMDE0LCAxMTMwMTgsIDExMzAyMywgMTEzMDI4LCAxMTMwMzIsIDExMzAzNiwgMTEzMDQxLCAxMTMwNDUsIDExMzA1MCwgCi0gICAgMTEzMDU1LCAxMTMwNjAsIDExMzA2NSwgMTEzMDcwLCAxMTMwNzQsIDAsIDExMzA3OSwgMTEzMDg0LCAxMTMwODgsIAotICAgIDExMzA5MywgMCwgMTEzMDk4LCAxMTMxMDIsIDExMzEwNywgMTEzMTEyLCAxMTMxMTYsIDAsIDExMzEyMCwgMCwgMCwgMCwgCi0gICAgMTEzMTI0LCAxMTMxMjgsIDExMzEzMywgMTEzMTM3LCAxMTMxNDIsIDExMzE0NywgMTEzMTUyLCAwLCAxMTMxNTcsIAotICAgIDExMzE2MSwgMTEzMTY2LCAxMTMxNzEsIDExMzE3NiwgMTEzMTgwLCAxMTMxODUsIDExMzE5MCwgMTEzMTk1LCAxMTMxOTksIAotICAgIDExMzIwNCwgMTEzMjA5LCAxMTMyMTMsIDExMzIxNywgMTEzMjIxLCAxMTMyMjUsIDExMzIzMCwgMTEzMjM1LCAxMTMyMzksIAotICAgIDExMzI0MywgMTEzMjQ4LCAxMTMyNTIsIDExMzI1NywgMTEzMjYyLCAxMTMyNjcsIDExMzI3MiwgMTEzMjc3LCAxMTMyODIsIAotICAgIDExMzI4OCwgMTEzMjk0LCAxMTMzMDAsIDExMzMwNSwgMTEzMzExLCAxMTMzMTcsIDExMzMyMywgMTEzMzI4LCAxMTMzMzQsIAotICAgIDExMzM0MCwgMTEzMzQ1LCAxMTMzNTAsIDExMzM1NSwgMTEzMzYwLCAxMTMzNjYsIDExMzM3MiwgMTEzMzc3LCAxMTMzODIsIAotICAgIDExMzM4OCwgMTEzMzkzLCAxMTMzOTksIDExMzQwNSwgMTEzNDExLCAxMTM0MTcsIDExMzQyMywgMTEzNDI4LCAxMTM0MzQsIAotICAgIDExMzQ0MCwgMTEzNDQ2LCAxMTM0NTEsIDExMzQ1NywgMTEzNDYzLCAxMTM0NjksIDExMzQ3NCwgMTEzNDgwLCAxMTM0ODYsIAotICAgIDExMzQ5MSwgMTEzNDk2LCAxMTM1MDEsIDExMzUwNiwgMTEzNTEyLCAxMTM1MTgsIDExMzUyMywgMTEzNTI4LCAxMTM1MzQsIAotICAgIDExMzUzOSwgMTEzNTQ1LCAxMTM1NTEsIDExMzU1NywgMTEzNTYzLCAxMTM1NjksIDExMzU3MywgMTEzNTc4LCAxMTM1ODMsIAotICAgIDExMzU4OCwgMTEzNTkyLCAxMTM1OTcsIDExMzYwMiwgMTEzNjA3LCAxMTM2MTEsIDExMzYxNiwgMTEzNjIxLCAxMTM2MjUsIAotICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MiwgMTEzNjQ3LCAxMTM2NTEsIDExMzY1NSwgMTEzNjYwLCAxMTM2NjQsIAotICAgIDExMzY2OSwgMTEzNjc0LCAxMTM2NzksIDExMzY4NCwgMTEzNjg5LCAxMTM2OTMsIDExMzY5OCwgMTEzNzAzLCAxMTM3MDgsIAotICAgIDExMzcxMiwgMTEzNzE3LCAxMTM3MjIsIDExMzcyNywgMTEzNzMxLCAxMTM3MzYsIDExMzc0MSwgMTEzNzQ1LCAxMTM3NDksIAotICAgIDExMzc1MywgMTEzNzU3LCAxMTM3NjIsIDExMzc2NywgMTEzNzcxLCAxMTM3NzUsIDExMzc4MCwgMTEzNzg0LCAxMTM3ODksIAotICAgIDExMzc5NCwgMTEzNzk5LCAxMTM4MDQsIDExMzgwOSwgMTEzODE0LCAxMTM4MjAsIDExMzgyNiwgMTEzODMyLCAxMTM4MzcsIAotICAgIDExMzg0MywgMTEzODQ5LCAxMTM4NTUsIDExMzg2MCwgMTEzODY2LCAxMTM4NzIsIDExMzg3NywgMTEzODgyLCAxMTM4ODcsIAotICAgIDExMzg5MiwgMTEzODk4LCAxMTM5MDQsIDExMzkwOSwgMTEzOTE0LCAxMTM5MjAsIDExMzkyNSwgMTEzOTMxLCAxMTM5MzcsIAotICAgIDExMzk0MywgMTEzOTQ5LCAxMTM5NTUsIDExMzk2MCwgMTEzOTY2LCAxMTM5NzIsIDExMzk3OCwgMTEzOTgzLCAxMTM5ODksIAotICAgIDExMzk5NSwgMTE0MDAxLCAxMTQwMDYsIDExNDAxMiwgMTE0MDE4LCAxMTQwMjMsIDExNDAyOCwgMTE0MDMzLCAxMTQwMzgsIAotICAgIDExNDA0NCwgMTE0MDUwLCAxMTQwNTUsIDExNDA2MCwgMTE0MDY2LCAxMTQwNzEsIDExNDA3NywgMTE0MDgzLCAxMTQwODksIAotICAgIDExNDA5NSwgMTE0MTAxLCAxMTQxMDYsIDExNDExMiwgMTE0MTE4LCAxMTQxMjQsIDExNDEyOSwgMTE0MTM1LCAxMTQxNDEsIAotICAgIDExNDE0NywgMTE0MTUyLCAxMTQxNTgsIDExNDE2NCwgMTE0MTY5LCAxMTQxNzQsIDExNDE3OSwgMTE0MTg0LCAxMTQxOTAsIAotICAgIDExNDE5NiwgMTE0MjAxLCAxMTQyMDYsIDExNDIxMiwgMTE0MjE3LCAxMTQyMjMsIDExNDIyOSwgMTE0MjM1LCAxMTQyNDEsIAotICAgIDExNDI0NywgMTE0MjUyLCAxMTQyNTgsIDExNDI2NCwgMTE0MjcwLCAxMTQyNzUsIDExNDI4MSwgMTE0Mjg3LCAxMTQyOTMsIAotICAgIDExNDI5OCwgMTE0MzA0LCAxMTQzMTAsIDExNDMxNSwgMTE0MzIwLCAxMTQzMjUsIDExNDMzMCwgMTE0MzM2LCAxMTQzNDIsIAotICAgIDExNDM0NywgMTE0MzUyLCAxMTQzNTgsIDExNDM2MywgMTE0MzY5LCAxMTQzNzUsIDExNDM4MSwgMTE0Mzg3LCAxMTQzOTMsIAotICAgIDExNDM5OSwgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI2LCAxMTQ0MzMsIDExNDQ0MCwgMTE0NDQ3LCAxMTQ0NTMsIAotICAgIDExNDQ2MCwgMTE0NDY3LCAxMTQ0NzMsIDExNDQ3OSwgMTE0NDg1LCAxMTQ0OTEsIDExNDQ5OCwgMTE0NTA1LCAxMTQ1MTEsIAotICAgIDExNDUxNywgMTE0NTI0LCAxMTQ1MzAsIDExNDUzNywgMTE0NTQ0LCAxMTQ1NTEsIDExNDU1OCwgMTE0NTY1LCAxMTQ1NzEsIAotICAgIDExNDU3OCwgMTE0NTg1LCAxMTQ1OTIsIDExNDU5OCwgMTE0NjA1LCAxMTQ2MTIsIDExNDYxOSwgMTE0NjI1LCAxMTQ2MzIsIAotICAgIDExNDYzOSwgMTE0NjQ1LCAxMTQ2NTEsIDExNDY1NywgMTE0NjYzLCAxMTQ2NzAsIDExNDY3NywgMTE0NjgzLCAxMTQ2ODksIAotICAgIDExNDY5NiwgMTE0NzAyLCAxMTQ3MDksIDExNDcxNiwgMTE0NzIzLCAxMTQ3MzAsIDExNDczNywgMTE0NzQyLCAxMTQ3NDgsIAotICAgIDExNDc1NCwgMTE0NzYwLCAxMTQ3NjUsIDExNDc3MSwgMTE0Nzc3LCAxMTQ3ODMsIDExNDc4OCwgMTE0Nzk0LCAxMTQ4MDAsIAotICAgIDExNDgwNSwgMTE0ODEwLCAxMTQ4MTUsIDExNDgyMCwgMTE0ODI2LCAxMTQ4MzIsIDExNDgzNywgMTE0ODQyLCAxMTQ4NDgsIAotICAgIDExNDg1MywgMTE0ODU5LCAxMTQ4NjUsIDExNDg3MSwgMTE0ODc3LCAxMTQ4ODMsIDExNDg4OCwgMTE0ODk0LCAxMTQ5MDAsIAotICAgIDExNDkwNiwgMTE0OTExLCAxMTQ5MTcsIDExNDkyMywgMTE0OTI5LCAxMTQ5MzQsIDExNDk0MCwgMTE0OTQ2LCAxMTQ5NTEsIAotICAgIDExNDk1NiwgMTE0OTYxLCAxMTQ5NjYsIDExNDk3MiwgMTE0OTc4LCAxMTQ5ODMsIDExNDk4OCwgMTE0OTk0LCAxMTQ5OTksIAotICAgIDExNTAwNSwgMTE1MDExLCAxMTUwMTcsIDExNTAyMywgMTE1MDI5LCAxMTUwMzUsIDAsIDAsIDExNTA0MiwgMTE1MDQ3LCAKLSAgICAxMTUwNTIsIDExNTA1NywgMTE1MDYyLCAxMTUwNjcsIDExNTA3MiwgMTE1MDc3LCAxMTUwODIsIDExNTA4NywgMTE1MDkyLCAKLSAgICAxMTUwOTcsIDExNTEwMiwgMTE1MTA3LCAxMTUxMTIsIDExNTExNywgMTE1MTIyLCAxMTUxMjcsIDExNTEzMywgMTE1MTM4LCAKLSAgICAxMTUxNDMsIDExNTE0OCwgMTE1MTUzLCAxMTUxNTgsIDExNTE2MywgMTE1MTY4LCAxMTUxNzIsIDExNTE3NywgMTE1MTgyLCAKLSAgICAxMTUxODcsIDExNTE5MiwgMTE1MTk3LCAxMTUyMDIsIDExNTIwNywgMTE1MjEyLCAxMTUyMTcsIDExNTIyMiwgMTE1MjI3LCAKLSAgICAxMTUyMzIsIDExNTIzNywgMTE1MjQyLCAxMTUyNDcsIDExNTI1MiwgMTE1MjU3LCAxMTUyNjMsIDExNTI2OCwgMTE1MjczLCAKLSAgICAxMTUyNzgsIDExNTI4MywgMTE1Mjg4LCAxMTUyOTMsIDExNTI5OCwgMTE1MzA0LCAxMTUzMDksIDExNTMxNCwgMTE1MzE5LCAKLSAgICAxMTUzMjQsIDExNTMyOSwgMTE1MzM0LCAxMTUzMzksIDExNTM0NCwgMTE1MzQ5LCAxMTUzNTQsIDExNTM1OSwgMTE1MzY0LCAKLSAgICAxMTUzNjksIDExNTM3NCwgMTE1Mzc5LCAxMTUzODQsIDExNTM4OSwgMTE1Mzk0LCAxMTUzOTksIDExNTQwNCwgMTE1NDA5LCAKLSAgICAxMTU0MTQsIDExNTQxOSwgMTE1NDI1LCAxMTU0MzAsIDExNTQzNSwgMTE1NDQwLCAxMTU0NDUsIDExNTQ1MCwgMTE1NDU1LCAKLSAgICAxMTU0NjAsIDExNTQ2NCwgMTE1NDY5LCAxMTU0NzQsIDExNTQ3OSwgMTE1NDg0LCAxMTU0ODksIDExNTQ5NCwgMTE1NDk5LCAKLSAgICAxMTU1MDQsIDExNTUwOSwgMTE1NTE0LCAxMTU1MTksIDExNTUyNCwgMTE1NTI5LCAxMTU1MzQsIDExNTUzOSwgMTE1NTQ0LCAKLSAgICAxMTU1NDksIDExNTU1NSwgMTE1NTYwLCAxMTU1NjUsIDExNTU3MCwgMTE1NTc1LCAxMTU1ODAsIDExNTU4NSwgMTE1NTkwLCAKLSAgICAxMTU1OTYsIDExNTYwMSwgMTE1NjA2LCAxMTU2MTEsIDExNTYxNiwgMTE1NjIxLCAxMTU2MjYsIDExNTYzMiwgMTE1NjM4LCAKLSAgICAxMTU2NDQsIDExNTY1MCwgMTE1NjU2LCAxMTU2NjIsIDExNTY2OCwgMTE1Njc0LCAxMTU2ODAsIDExNTY4NiwgMTE1NjkyLCAKLSAgICAxMTU2OTgsIDExNTcwNCwgMTE1NzEwLCAxMTU3MTYsIDExNTcyMiwgMTE1NzI4LCAxMTU3MzUsIDExNTc0MSwgMTE1NzQ3LCAKLSAgICAxMTU3NTMsIDExNTc1OSwgMTE1NzY1LCAxMTU3NzEsIDExNTc3NywgMTE1NzgyLCAxMTU3ODgsIDExNTc5NCwgMTE1ODAwLCAKLSAgICAxMTU4MDYsIDExNTgxMiwgMTE1ODE4LCAxMTU4MjQsIDExNTgzMCwgMTE1ODM2LCAxMTU4NDIsIDExNTg0OCwgMTE1ODU0LCAKLSAgICAxMTU4NjAsIDExNTg2NiwgMTE1ODcyLCAxMTU4NzgsIDExNTg4NCwgMTE1ODkxLCAxMTU4OTcsIDExNTkwMywgMTE1OTA5LCAKLSAgICAxMTU5MTUsIDExNTkyMSwgMTE1OTI3LCAxMTU5MzMsIDExNTk0MCwgMTE1OTQ2LCAxMTU5NTIsIDExNTk1OCwgMTE1OTY0LCAKLSAgICAxMTU5NzAsIDExNTk3NiwgMTE1OTgyLCAxMTU5ODgsIDExNTk5NCwgMTE2MDAwLCAxMTYwMDYsIDExNjAxMiwgMTE2MDE4LCAKLSAgICAxMTYwMjQsIDExNjAzMCwgMTE2MDM2LCAxMTYwNDIsIDExNjA0OCwgMTE2MDU0LCAxMTYwNjAsIDExNjA2NiwgMTE2MDcyLCAKLSAgICAxMTYwNzgsIDExNjA4NSwgMTE2MDkxLCAxMTYwOTcsIDExNjEwMywgMTE2MTA5LCAxMTYxMTUsIDExNjEyMSwgMTE2MTI3LCAKLSAgICAxMTYxMzIsIDExNjEzOCwgMTE2MTQ0LCAxMTYxNTAsIDExNjE1NiwgMTE2MTYyLCAxMTYxNjgsIDExNjE3NCwgMTE2MTgwLCAKLSAgICAxMTYxODYsIDExNjE5MiwgMTE2MTk4LCAxMTYyMDQsIDExNjIxMCwgMTE2MjE2LCAxMTYyMjIsIDExNjIyOCwgMTE2MjM0LCAKLSAgICAxMTYyNDEsIDExNjI0NywgMTE2MjUzLCAxMTYyNTksIDExNjI2NSwgMTE2MjcxLCAxMTYyNzcsIDExNjI4MywgMTE2MjkwLCAKLSAgICAxMTYyOTYsIDExNjMwMiwgMTE2MzA4LCAxMTYzMTQsIDExNjMyMCwgMTE2MzI2LCAxMTYzMzMsIDExNjM0MCwgMTE2MzQ3LCAKLSAgICAxMTYzNTQsIDExNjM2MSwgMTE2MzY4LCAxMTYzNzUsIDExNjM4MiwgMTE2Mzg5LCAxMTYzOTYsIDExNjQwMywgMTE2NDEwLCAKLSAgICAxMTY0MTcsIDExNjQyNCwgMTE2NDMxLCAxMTY0MzgsIDExNjQ0NSwgMTE2NDUzLCAxMTY0NjAsIDExNjQ2NywgMTE2NDc0LCAKLSAgICAxMTY0ODEsIDExNjQ4OCwgMTE2NDk1LCAxMTY1MDIsIDExNjUwOCwgMTE2NTE1LCAxMTY1MjIsIDExNjUyOSwgMTE2NTM2LCAKLSAgICAxMTY1NDMsIDExNjU1MCwgMTE2NTU3LCAxMTY1NjQsIDExNjU3MSwgMTE2NTc4LCAxMTY1ODUsIDExNjU5MiwgMTE2NTk5LCAKLSAgICAxMTY2MDYsIDExNjYxMywgMTE2NjIwLCAxMTY2MjcsIDExNjYzNSwgMTE2NjQyLCAxMTY2NDksIDExNjY1NiwgMTE2NjYzLCAKLSAgICAxMTY2NzAsIDExNjY3NywgMTE2Njg0LCAxMTY2OTIsIDExNjY5OSwgMTE2NzA2LCAxMTY3MTMsIDExNjcyMCwgMTE2NzI3LCAKLSAgICAxMTY3MzQsIDExNjczOSwgMCwgMCwgMTE2NzQ0LCAxMTY3NDksIDExNjc1MywgMTE2NzU3LCAxMTY3NjEsIDExNjc2NSwgCi0gICAgMTE2NzY5LCAxMTY3NzMsIDExNjc3NywgMTE2NzgxLCAxMTY3ODUsIDExNjc5MCwgMTE2Nzk0LCAxMTY3OTgsIDExNjgwMiwgCi0gICAgMTE2ODA2LCAxMTY4MTAsIDExNjgxNCwgMTE2ODE4LCAxMTY4MjIsIDExNjgyNiwgMTE2ODMxLCAxMTY4MzUsIDExNjgzOSwgCi0gICAgMTE2ODQzLCAxMTY4NDcsIDExNjg1MSwgMTE2ODU1LCAxMTY4NTksIDExNjg2MywgMTE2ODY3LCAxMTY4NzMsIDExNjg3OCwgCi0gICAgMTE2ODgzLCAxMTY4ODgsIDExNjg5MywgMTE2ODk4LCAxMTY5MDMsIDExNjkwOCwgMTE2OTEzLCAxMTY5MTgsIDExNjkyNCwgCi0gICAgMTE2OTI5LCAxMTY5MzQsIDExNjkzOSwgMTE2OTQ0LCAxMTY5NDksIDExNjk1NCwgMTE2OTU5LCAxMTY5NjQsIDExNjk2OSwgCi0gICAgMTE2OTc2LCAxMTY5ODMsIDExNjk5MCwgMTE2OTk3LCAxMTcwMDQsIDExNzAxMSwgMTE3MDE3LCAxMTcwMjQsIDExNzAzMSwgCi0gICAgMTE3MDM4LCAxMTcwNDYsIDExNzA1NCwgMTE3MDYyLCAxMTcwNzAsIDExNzA3OCwgMTE3MDg2LCAxMTcwOTMsIDExNzEwMCwgCi0gICAgMTE3MTA3LCAxMTcxMTUsIDExNzEyMywgMTE3MTMxLCAxMTcxMzksIDExNzE0NywgMTE3MTU1LCAxMTcxNjIsIDExNzE2OSwgCi0gICAgMTE3MTc2LCAxMTcxODQsIDExNzE5MiwgMTE3MjAwLCAxMTcyMDgsIDExNzIxNiwgMTE3MjI0LCAxMTcyMjksIDExNzIzNCwgCi0gICAgMTE3MjM5LCAxMTcyNDQsIDExNzI0OSwgMTE3MjU0LCAxMTcyNTksIDExNzI2NCwgMTE3MjY5LCAwLCAwLCAwLCAwLCAKLSAgICAxMTcyNzQsIDExNzI3OSwgMTE3MjgzLCAxMTcyODcsIDExNzI5MSwgMTE3Mjk1LCAxMTcyOTksIDExNzMwMywgMTE3MzA3LCAKLSAgICAxMTczMTEsIDExNzMxNSwgMTE3MzE5LCAxMTczMjMsIDExNzMyNywgMTE3MzMxLCAxMTczMzUsIDExNzMzOSwgMTE3MzQzLCAKLSAgICAxMTczNDcsIDExNzM1MSwgMTE3MzU1LCAxMTczNTksIDExNzM2MywgMTE3MzY3LCAxMTczNzEsIDExNzM3NSwgMTE3Mzc5LCAKLSAgICAxMTczODMsIDExNzM4NywgMTE3MzkxLCAxMTczOTUsIDExNzM5OSwgMTE3NDAzLCAxMTc0MDcsIDExNzQxMSwgMTE3NDE1LCAKLSAgICAxMTc0MTksIDExNzQyMywgMTE3NDI3LCAxMTc0MzEsIDExNzQzNSwgMTE3NDM5LCAxMTc0NDMsIDExNzQ0NywgMTE3NDUxLCAKLSAgICAxMTc0NTUsIDExNzQ1OSwgMTE3NDYzLCAxMTc0NjcsIDExNzQ3MSwgMTE3NDc1LCAxMTc0ODAsIDExNzQ4NCwgMTE3NDg4LCAKLSAgICAxMTc0OTIsIDExNzQ5NiwgMTE3NTAwLCAxMTc1MDQsIDExNzUwOCwgMTE3NTEyLCAxMTc1MTYsIDExNzUyMCwgMTE3NTI0LCAKLSAgICAxMTc1MjgsIDExNzUzMiwgMTE3NTM2LCAxMTc1NDAsIDExNzU0NCwgMTE3NTQ4LCAxMTc1NTIsIDExNzU1NiwgMTE3NTYwLCAKLSAgICAxMTc1NjQsIDExNzU2OCwgMTE3NTcyLCAxMTc1NzYsIDExNzU4MCwgMTE3NTg0LCAxMTc1ODgsIDExNzU5MiwgMTE3NTk2LCAKLSAgICAxMTc2MDAsIDExNzYwNCwgMTE3NjA4LCAxMTc2MTIsIDExNzYxNiwgMTE3NjIwLCAxMTc2MjQsIDExNzYyOCwgMTE3NjMyLCAKLSAgICAxMTc2MzYsIDExNzY0MCwgMTE3NjQ0LCAxMTc2NDgsIDExNzY1MiwgMTE3NjU2LCAxMTc2NjAsIDExNzY2NCwgMTE3NjY4LCAKLSAgICAxMTc2NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNzY3NiwgMTE3NjgyLCAxMTc2OTEsIAotICAgIDExNzY5OSwgMTE3NzA3LCAxMTc3MTYsIDExNzcyNSwgMTE3NzM0LCAxMTc3NDMsIDExNzc1MiwgMTE3NzYxLCAxMTc3NzAsIAotICAgIDExNzc3OSwgMTE3Nzg4LCAxMTc3OTcsIDAsIDAsIDExNzgwNiwgMTE3ODE1LCAxMTc4MjMsIDExNzgzMSwgMTE3ODQwLCAKLSAgICAxMTc4NDksIDExNzg1OCwgMTE3ODY3LCAxMTc4NzYsIDExNzg4NSwgMTE3ODk0LCAxMTc5MDMsIDExNzkxMiwgMTE3OTIxLCAKLSAgICAwLCAwLCAxMTc5MzAsIDExNzkzOSwgMTE3OTQ3LCAxMTc5NTUsIDExNzk2NCwgMTE3OTczLCAxMTc5ODIsIDExNzk5MSwgCi0gICAgMTE4MDAwLCAxMTgwMDksIDExODAxOCwgMTE4MDI3LCAxMTgwMzYsIDExODA0NSwgMTE4MDU0LCAwLCAxMTgwNjEsIAotICAgIDExODA3MCwgMTE4MDc4LCAxMTgwODYsIDExODA5NSwgMTE4MTA0LCAxMTgxMTMsIDExODEyMiwgMTE4MTMxLCAxMTgxNDAsIAotICAgIDExODE0OSwgMTE4MTU4LCAxMTgxNjcsIDExODE3NiwgMTE4MTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgxOTIsIAotICAgIDExODE5OSwgMTE4MjA0LCAxMTgyMDgsIDExODIxMiwgMTE4MjE2LCAxMTgyMjEsIDExODIyNiwgMTE4MjMxLCAxMTgyMzYsIAotICAgIDExODI0MSwgMCwgMCwgMCwgMCwgMCwgMTE4MjQ2LCAxMTgyNTEsIDExODI1NywgMTE4MjYzLCAxMTgyNjksIDExODI3NCwgCi0gICAgMTE4MjgwLCAxMTgyODYsIDExODI5MiwgMTE4Mjk3LCAxMTgzMDMsIDExODMwOSwgMTE4MzE0LCAxMTgzMTksIDExODMyNCwgCi0gICAgMTE4MzI5LCAxMTgzMzUsIDExODM0MSwgMTE4MzQ2LCAxMTgzNTEsIDExODM1NywgMTE4MzYyLCAxMTgzNjgsIDExODM3NCwgCi0gICAgMTE4MzgwLCAxMTgzODYsIDExODM5MiwgMTE4NDAyLCAxMTg0MDksIDExODQxNSwgMTE4NDE4LCAwLCAxMTg0MjEsIAotICAgIDExODQyNiwgMTE4NDMyLCAxMTg0MzgsIDExODQ0NCwgMTE4NDQ5LCAxMTg0NTUsIDExODQ2MSwgMTE4NDY3LCAxMTg0NzIsIAotICAgIDExODQ3OCwgMTE4NDg0LCAxMTg0ODksIDExODQ5NCwgMTE4NDk5LCAxMTg1MDQsIDExODUxMCwgMTE4NTE2LCAxMTg1MjEsIAotICAgIDExODUyNiwgMTE4NTMyLCAxMTg1MzcsIDExODU0MywgMTE4NTQ5LCAxMTg1NTUsIDExODU2MSwgMTE4NTY3LCAxMTg1NzAsIAotICAgIDExODU3MywgMTE4NTc2LCAxMTg1NzksIDExODU4MiwgMTE4NTg1LCAxMTg1OTEsIDExODU5OCwgMTE4NjA1LCAxMTg2MTIsIAotICAgIDExODYxOCwgMTE4NjI1LCAxMTg2MzIsIDExODYzOSwgMTE4NjQ1LCAxMTg2NTIsIDExODY1OSwgMTE4NjY1LCAxMTg2NzEsIAotICAgIDExODY3NywgMTE4NjgzLCAxMTg2OTAsIDExODY5NywgMTE4NzAzLCAxMTg3MDksIDExODcxNiwgMTE4NzIyLCAxMTg3MjksIAotICAgIDExODczNiwgMTE4NzQzLCAxMTg3NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODc1NywgMTE4NzYzLCAxMTg3NzAsIDExODc3NywgCi0gICAgMTE4Nzg0LCAxMTg3OTAsIDExODc5NywgMTE4ODA0LCAxMTg4MTEsIDExODgxNywgMTE4ODI0LCAxMTg4MzEsIDExODgzNywgCi0gICAgMTE4ODQzLCAxMTg4NDksIDExODg1NSwgMTE4ODYyLCAxMTg4NjksIDExODg3NSwgMTE4ODgxLCAxMTg4ODgsIDExODg5NCwgCi0gICAgMTE4OTAxLCAxMTg5MDgsIDExODkxNSwgMTE4OTIyLCAxMTg5MjksIDExODkzOCwgMTE4OTQyLCAxMTg5NDUsIDExODk0OSwgCi0gICAgMTE4OTUzLCAxMTg5NTcsIDExODk2MCwgMTE4OTYzLCAxMTg5NjYsIDExODk2OSwgMTE4OTcyLCAxMTg5NzUsIDExODk3OCwgCi0gICAgMTE4OTgxLCAxMTg5ODQsIDExODk5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4OTkzLCAxMTkwMDAsIDExOTAwOCwgMTE5MDE2LCAxMTkwMjQsIAotICAgIDExOTAzMSwgMTE5MDM5LCAxMTkwNDcsIDExOTA1NSwgMTE5MDYyLCAxMTkwNzAsIDExOTA3OCwgMTE5MDg1LCAxMTkwOTIsIAotICAgIDExOTA5OSwgMTE5MTA2LCAxMTkxMTQsIDExOTEyMiwgMTE5MTI5LCAxMTkxMzYsIDExOTE0NCwgMTE5MTUxLCAxMTkxNTksIAotICAgIDExOTE2NywgMTE5MTc1LCAxMTkxODMsIDExOTE5MSwgMTE5MTk1LCAxMTkxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDExOTIwMywgMTE5MjA5LCAxMTkyMTUsIDExOTIyMSwgMTE5MjI1LCAxMTkyMzEsIDExOTIzNywgCi0gICAgMTE5MjQzLCAxMTkyNDksIDExOTI1NSwgMTE5MjYxLCAxMTkyNjcsIDExOTI3MywgMTE5Mjc5LCAxMTkyODUsIDExOTI5MSwgCi0gICAgMTE5Mjk3LCAxMTkzMDMsIDExOTMwOSwgMTE5MzE1LCAxMTkzMjEsIDExOTMyNywgMTE5MzMzLCAxMTkzMzksIDExOTM0NSwgCi0gICAgMTE5MzUxLCAxMTkzNTcsIDExOTM2MywgMTE5MzY5LCAxMTkzNzUsIDExOTM4MSwgMTE5Mzg3LCAxMTkzOTMsIDExOTM5OSwgCi0gICAgMTE5NDA1LCAxMTk0MTEsIDExOTQxNywgMTE5NDIzLCAxMTk0MjksIDExOTQzNSwgMTE5NDQxLCAxMTk0NDcsIDExOTQ1MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTE5NDU5LCAxMTk0NzAsIDExOTQ4MSwgMTE5NDkyLCAxMTk1MDMsIDExOTUxNCwgMTE5NTI1LCAKLSAgICAxMTk1MzYsIDExOTU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5NTU4LCAxMTk1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTU2NiwgMTE5NTY4LCAxMTk1NzAsIAotICAgIDExOTU3NCwgMTE5NTc5LCAxMTk1ODQsIDExOTU4NiwgMTE5NTkyLCAxMTk1OTcsIDExOTU5OSwgMTE5NjA1LCAxMTk2MDksIAotICAgIDExOTYxMSwgMTE5NjE1LCAxMTk2MjEsIDExOTYyNywgMTE5NjMzLCAxMTk2MzgsIDExOTY0MiwgMTE5NjQ5LCAxMTk2NTYsIAotICAgIDExOTY2MywgMTE5NjY4LCAxMTk2NzUsIDExOTY4MiwgMTE5Njg5LCAxMTk2OTMsIDExOTY5OSwgMTE5NzA4LCAxMTk3MTcsIAotICAgIDExOTcyNCwgMTE5NzI5LCAxMTk3MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExOTczNywgMTE5NzM5LCAxMTk3NDEsIDExOTc0NSwgMTE5NzQ5LCAxMTk3NTMsIDAsIDExOTc1NSwgMTE5NzU3LCAKLSAgICAxMTk3NjEsIDExOTc2MywgMTE5NzY1LCAxMTk3NjcsIDExOTc2OSwgMTE5Nzc0LCAxMTk3NzksIDExOTc4MSwgMTE5Nzg3LCAKLSAgICAxMTk3OTEsIDExOTc5NSwgMTE5ODAzLCAxMTk4MDUsIDExOTgwNywgMTE5ODA5LCAxMTk4MTEsIDExOTgxMywgMTE5ODE1LCAKLSAgICAxMTk4MTcsIDExOTgxOSwgMTE5ODIxLCAxMTk4MjMsIDExOTgyNywgMTE5ODMxLCAxMTk4MzMsIDExOTgzNSwgMTE5ODM3LCAKLSAgICAxMTk4MzksIDExOTg0MSwgMTE5ODQ2LCAxMTk4NTIsIDExOTg1NiwgMTE5ODYwLCAxMTk4NjQsIDExOTg2OCwgMTE5ODczLCAKLSAgICAxMTk4NzcsIDExOTg3OSwgMTE5ODgxLCAxMTk4ODUsIDExOTg5MSwgMTE5ODkzLCAxMTk4OTUsIDExOTg5NywgMTE5OTAxLCAKLSAgICAxMTk5MTAsIDExOTkxNiwgMTE5OTIwLCAxMTk5MjQsIDExOTkyNiwgMTE5OTI4LCAxMTk5MzEsIDExOTkzMywgMTE5OTM1LCAKLSAgICAxMTk5MzcsIDExOTk0MSwgMTE5OTQzLCAxMTk5NDcsIDExOTk1MiwgMTE5OTU0LCAxMTk5NTksIDExOTk2NSwgMTE5OTcyLCAKLSAgICAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5NCwgMCwgMCwgMCwgMTE5OTk4LCAxMjAwMDAsIDEyMDAwNCwgCi0gICAgMTIwMDA4LCAxMjAwMTAsIDEyMDAxNCwgMTIwMDE4LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI2LCAxMjAwMzAsIDEyMDAzNCwgCi0gICAgMTIwMDM4LCAxMjAwNDIsIDEyMDA0NiwgMTIwMDUwLCAxMjAwNTQsIDEyMDA1OCwgMTIwMDY0LCAxMjAwNjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDA3MiwgMTIwMDc2LCAxMjAwODAsIDEyMDA4NCwgMTIwMDkxLCAKLSAgICAxMjAwOTMsIDEyMDA5NywgMTIwMDk5LCAxMjAxMDEsIDEyMDEwNSwgMTIwMTA5LCAxMjAxMTMsIDEyMDExNSwgMTIwMTE5LCAKLSAgICAxMjAxMjMsIDEyMDEyNywgMTIwMTMxLCAxMjAxMzUsIDEyMDEzNywgMTIwMTQxLCAxMjAxNDMsIDEyMDE0OSwgMTIwMTUyLCAKLSAgICAxMjAxNTcsIDEyMDE1OSwgMTIwMTYxLCAxMjAxNjQsIDEyMDE2NiwgMTIwMTY4LCAxMjAxNzEsIDEyMDE3OCwgMTIwMTg1LCAKLSAgICAxMjAxOTIsIDEyMDE5NywgMTIwMjAxLCAxMjAyMDMsIDEyMDIwNSwgMCwgMTIwMjA3LCAxMjAyMDksIDEyMDIxMywgCi0gICAgMTIwMjE3LCAxMjAyMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyMDIyMywgMTIwMjI3LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQyLCAxMjAyNDgsIDEyMDI1MCwgMTIwMjUyLCAKLSAgICAxMjAyNTgsIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MCwgMTIwMjc0LCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAyODgsIDEyMDI5MCwgMTIwMjkyLCAKLSAgICAxMjAyOTQsIDEyMDI5OCwgMTIwMzAwLCAxMjAzMDIsIDEyMDMwNCwgMTIwMzA2LCAxMjAzMDgsIDEyMDMxMCwgMTIwMzEyLCAKLSAgICAxMjAzMTQsIDEyMDMxNiwgMTIwMzE4LCAxMjAzMjAsIDEyMDMyMiwgMTIwMzI0LCAxMjAzMjYsIDEyMDMyOCwgMTIwMzMwLCAKLSAgICAxMjAzMzIsIDEyMDMzNCwgMTIwMzM2LCAxMjAzMzgsIDEyMDM0MCwgMTIwMzQyLCAxMjAzNDYsIDEyMDM0OCwgMTIwMzUwLCAKLSAgICAxMjAzNTIsIDEyMDM1NiwgMTIwMzU4LCAxMjAzNjIsIDEyMDM2NCwgMTIwMzY2LCAxMjAzNzAsIDEyMDM3NCwgMTIwMzgwLCAKLSAgICAxMjAzODIsIDEyMDM4NCwgMTIwMzg2LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjAzOTgsIDEyMDQwMiwgMTIwNDA2LCAKLSAgICAxMjA0MTAsIDEyMDQxNCwgMTIwNDE4LCAxMjA0MjIsIDEyMDQyNiwgMTIwNDMwLCAxMjA0MzQsIDEyMDQzOCwgMTIwNDQyLCAKLSAgICAxMjA0NDYsIDEyMDQ1MCwgMTIwNDU0LCAxMjA0NTgsIDEyMDQ2MiwgMTIwNDY2LCAwLCAxMjA0NzAsIDAsIDEyMDQ3MiwgCi0gICAgMTIwNDc0LCAxMjA0NzYsIDEyMDQ3OCwgMTIwNDgwLCAxMjA0ODgsIDEyMDQ5NiwgMTIwNTA0LCAxMjA1MTIsIDEyMDUxNywgCi0gICAgMTIwNTIyLCAxMjA1MjcsIDEyMDUzMSwgMTIwNTM1LCAxMjA1NDAsIDEyMDU0NSwgMTIwNTQ3LCAxMjA1NTEsIDEyMDU1MywgCi0gICAgMTIwNTU1LCAxMjA1NTcsIDEyMDU1OSwgMTIwNTYxLCAxMjA1NjMsIDEyMDU2NSwgMTIwNTY5LCAxMjA1NzEsIDEyMDU3MywgCi0gICAgMTIwNTc1LCAxMjA1NzksIDEyMDU4MywgMTIwNTg3LCAxMjA1OTEsIDEyMDU5NSwgMTIwNTk3LCAxMjA2MDMsIDEyMDYwOSwgCi0gICAgMTIwNjExLCAxMjA2MTMsIDEyMDYxNSwgMTIwNjE3LCAxMjA2MTksIDEyMDYyOCwgMTIwNjM1LCAxMjA2NDIsIDEyMDY0NiwgCi0gICAgMTIwNjUzLCAxMjA2NTgsIDEyMDY2NSwgMTIwNjc0LCAxMjA2NzksIDEyMDY4MywgMTIwNjg3LCAxMjA2ODksIDEyMDY5MywgCi0gICAgMTIwNjk1LCAxMjA2OTksIDEyMDcwMywgMTIwNzA1LCAxMjA3MDksIDEyMDcxMywgMTIwNzE3LCAxMjA3MTksIDEyMDcyMSwgCi0gICAgMTIwNzI3LCAxMjA3MjksIDEyMDczMSwgMTIwNzMzLCAxMjA3MzcsIDEyMDc0MSwgMTIwNzQzLCAxMjA3NDcsIDEyMDc0OSwgCi0gICAgMTIwNzUxLCAxMjA3NTQsIDEyMDc1OCwgMTIwNzYwLCAxMjA3NjQsIDEyMDc2NiwgMTIwNzY4LCAxMjA3NzMsIDEyMDc3NSwgCi0gICAgMTIwNzc5LCAxMjA3ODMsIDEyMDc4NiwgMTIwNzkwLCAxMjA3OTQsIDEyMDc5OCwgMTIwODAyLCAxMjA4MDYsIDEyMDgxMCwgCi0gICAgMTIwODE0LCAxMjA4MTksIDEyMDgyMywgMTIwODI3LCAxMjA4MzYsIDEyMDg0MSwgMTIwODQ0LCAxMjA4NDYsIDEyMDg0OSwgCi0gICAgMTIwODUyLCAxMjA4NTcsIDEyMDg1OSwgMTIwODYyLCAxMjA4NjcsIDEyMDg3MSwgMTIwODc0LCAxMjA4NzgsIDEyMDg4MiwgCi0gICAgMTIwODg1LCAxMjA4OTAsIDEyMDg5NCwgMTIwODk4LCAxMjA5MDIsIDEyMDkwNiwgMTIwOTEyLCAxMjA5MTgsIDEyMDkyNCwgCi0gICAgMTIwOTMwLCAxMjA5MzUsIDEyMDk0NiwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NCwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgCi0gICAgMTIwOTY2LCAxMjA5NzAsIDEyMDk3NiwgMTIwOTgxLCAxMjA5ODcsIDEyMDk4OSwgMTIwOTkzLCAxMjA5OTcsIDEyMTAwNCwgCi0gICAgMTIxMDExLCAxMjEwMTUsIDEyMTAxNywgMTIxMDE5LCAxMjEwMjMsIDEyMTAyNSwgMTIxMDI5LCAxMjEwMzMsIDEyMTAzNywgCi0gICAgMTIxMDM5LCAxMjEwNDEsIDEyMTA0OCwgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MCwgCi0gICAgMTIxMDc0LCAxMjEwNzYsIDEyMTA3OCwgMTIxMDgyLCAxMjEwODQsIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTgsIDEyMTEwMiwgCi0gICAgMTIxMTA2LCAxMjExMTAsIDEyMTExMiwgMTIxMTE1LCAxMjExMTksIDEyMTEyNiwgMTIxMTM1LCAxMjExNDQsIDEyMTE1MywgCi0gICAgMTIxMTYyLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcwLCAxMjExNzQsIDEyMTE4NSwgMTIxMTg5LCAxMjExOTUsIDEyMTIwMSwgCi0gICAgMTIxMjA2LCAwLCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE0LCAxMjEyMTYsIDAsIDAsIDAsIDEyMTIxOCwgMTIxMjIzLCAKLSAgICAxMjEyMzQsIDEyMTI1MCwgMTIxMjYzLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyOTAsIDEyMTI5MiwgMTIxMzAwLCAKLSAgICAxMjEzMDgsIDEyMTMxMCwgMTIxMzE0LCAxMjEzMjAsIDEyMTMyNiwgMTIxMzMzLCAxMjEzNDAsIDEyMTM0MiwgMTIxMzQ0LCAKLSAgICAxMjEzNDgsIDEyMTM1MCwgMTIxMzU2LCAxMjEzNTgsIDEyMTM2MSwgMTIxMzY1LCAxMjEzNzEsIDEyMTM3NywgMTIxMzg4LCAKLSAgICAxMjEzOTQsIDEyMTQwMSwgMTIxNDA5LCAxMjE0MTMsIDEyMTQyMSwgMTIxNDI5LCAxMjE0MzUsIDEyMTQ0MSwgMTIxNDQ4LCAKLSAgICAxMjE0NTAsIDEyMTQ1NCwgMTIxNDU2LCAxMjE0NTgsIDEyMTQ2MywgMTIxNDY1LCAxMjE0NjcsIDEyMTQ2OSwgMTIxNDcxLCAKLSAgICAxMjE0NzUsIDEyMTQ4NiwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MTAsIDEyMTUxNiwgMTIxNTIyLCAKLSAgICAxMjE1MjgsIDEyMTUzMywgMTIxNTM4LCAxMjE1NDQsIDEyMTU1MCwgMTIxNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE1NjQsIDEyMTU3MSwgMTIxNTc4LCAxMjE1ODUsIDEyMTU5MywgCi0gICAgMTIxNjAxLCAxMjE2MDksIDEyMTYxNywgMTIxNjI1LCAxMjE2MzMsIDEyMTY0MSwgMTIxNjQ5LCAxMjE2NTcsIDEyMTY2MywgCi0gICAgMTIxNjY5LCAxMjE2NzUsIDEyMTY4MSwgMTIxNjg3LCAxMjE2OTMsIDEyMTY5OSwgMTIxNzA1LCAxMjE3MTEsIDEyMTcxNywgCi0gICAgMTIxNzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA3MTAsIDExMDcxNSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTIxNzI5LCAxMjE3MzMsIDEyMTczNywgMTIxNzQyLCAxMjE3NDcsIDAsIDEyMTc0OSwgMTIxNzU4LCAKLSAgICAxMjE3NjYsIDEyMTc3NSwgMTIxNzg5LCAxMjE4MDMsIDEyMTgxNywgMTIxODI0LCAxMjE4MzEsIDEyMTgzNSwgMTIxODQ0LCAKLSAgICAxMjE4NTIsIDEyMTg1NiwgMTIxODY1LCAxMjE4NzIsIDEyMTg3NiwgMCwgMTIxODgwLCAxMjE4ODQsIDEyMTg5MSwgMCwgCi0gICAgMTIxODk1LCAwLCAxMjE4OTksIDAsIDEyMTkwNiwgMCwgMTIxOTE1LCAxMjE5MjcsIDEyMTkzOSwgMCwgMTIxOTQzLCAKLSAgICAxMjE5NDcsIDEyMTk1MSwgMTIxOTU1LCAxMjE5NTksIDEyMTk2NywgMCwgMCwgMTIxOTc1LCAxMjE5NzksIDEyMTk4MywgCi0gICAgMTIxOTg3LCAwLCAxMjE5OTEsIDAsIDAsIDEyMTk5NywgMTIyMDA5LCAxMjIwMTcsIDEyMjAyMSwgMCwgMTIyMDI1LCAKLSAgICAxMjIwMjksIDEyMjAzNSwgMTIyMDQyLCAxMjIwNTMsIDEyMjA2MywgMTIyMDc0LCAxMjIwODUsIDEyMjA5NCwgMTIyMTA1LCAKLSAgICAxMjIxMTEsIDEyMjExNywgMCwgMCwgMCwgMCwgMTIyMTIzLCAxMjIxMzIsIDEyMjEzOSwgMTIyMTQ1LCAxMjIxNDksIAotICAgIDEyMjE1MywgMTIyMTU3LCAxMjIxNjYsIDEyMjE3OCwgMTIyMTgyLCAxMjIxODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMDcyMSwgMTEwNzI2LCAxMTA3MzEsIDExMDczNiwgMTEwNzQzLCAxMTA3NTAsIDExMDc1NywgMTEwNzY0LCAxMTA3NjksIAorICAgIDExMDc3NCwgMTEwNzc5LCAxMTA3ODQsIDExMDc5MSwgMTEwNzk2LCAxMTA4MDMsIDExMDgxMCwgMTEwODE1LCAxMTA4MjAsIAorICAgIDExMDgyNSwgMTEwODMyLCAxMTA4MzcsIDExMDg0MiwgMTEwODQ5LCAxMTA4NTYsIDExMDg2MSwgMTEwODY2LCAxMTA4NzEsIAorICAgIDExMDg3OCwgMTEwODg1LCAxMTA4OTIsIDExMDg5NywgMTEwOTAyLCAxMTA5MDksIDExMDkxNiwgMTEwOTIzLCAxMTA5MzAsIAorICAgIDExMDkzNSwgMTEwOTQwLCAxMTA5NDUsIDExMDk1MiwgMTEwOTU3LCAxMTA5NjIsIDExMDk2NywgMTEwOTc0LCAxMTA5ODMsIAorICAgIDExMDk5MCwgMTEwOTk1LCAxMTEwMDAsIDExMTAwNSwgMTExMDEwLCAxMTEwMTUsIDExMTAyMCwgMTExMDI5LCAxMTEwMzYsIAorICAgIDExMTA0MSwgMTExMDQ4LCAxMTEwNTUsIDExMTA2MCwgMTExMDY1LCAxMTEwNzAsIDExMTA3NywgMTExMDgyLCAxMTEwODksIAorICAgIDExMTA5NiwgMTExMTAxLCAxMTExMDYsIDExMTExMSwgMTExMTE4LCAxMTExMjUsIDExMTEzMCwgMTExMTM1LCAxMTExNDIsIAorICAgIDExMTE0OSwgMTExMTU2LCAxMTExNjEsIDExMTE2NiwgMTExMTcxLCAxMTExNzYsIDExMTE4MywgMTExMTkyLCAxMTEyMDEsIAorICAgIDExMTIwNiwgMTExMjEzLCAxMTEyMjIsIDExMTIyNywgMTExMjMyLCAxMTEyMzcsIDExMTI0MiwgMTExMjQ5LCAxMTEyNTYsIAorICAgIDExMTI2MywgMTExMjcwLCAxMTEyNzUsIDExMTI4MCwgMTExMjg1LCAxMTEyOTIsIDExMTI5OSwgMTExMzA2LCAxMTEzMTEsIAorICAgIDExMTMxNiwgMTExMzIzLCAxMTEzMjgsIDExMTMzNSwgMTExMzQwLCAxMTEzNDcsIDExMTM1MiwgMTExMzU5LCAxMTEzNjYsIAorICAgIDExMTM3MSwgMTExMzc2LCAxMTEzODEsIDExMTM4NiwgMTExMzkxLCAxMTEzOTYsIDExMTQwMSwgMTExNDA2LCAxMTE0MTEsIAorICAgIDExMTQxOCwgMTExNDI1LCAxMTE0MzIsIDExMTQzOSwgMTExNDQ2LCAxMTE0NTUsIDExMTQ2MCwgMTExNDY1LCAxMTE0NzIsIAorICAgIDExMTQ3OSwgMTExNDg0LCAxMTE0OTEsIDExMTQ5OCwgMTExNTA1LCAxMTE1MTIsIDExMTUxOSwgMTExNTI2LCAxMTE1MzEsIAorICAgIDExMTUzNiwgMTExNTQxLCAxMTE1NDYsIDExMTU1MSwgMTExNTYwLCAxMTE1NjksIDExMTU3OCwgMTExNTg3LCAxMTE1OTYsIAorICAgIDExMTYwNSwgMTExNjE0LCAxMTE2MjMsIDExMTYyOCwgMTExNjM5LCAxMTE2NTAsIDExMTY1OSwgMTExNjY0LCAxMTE2NjksIAorICAgIDExMTY3NCwgMTExNjc5LCAxMTE2ODgsIDExMTY5NSwgMTExNzAyLCAxMTE3MDksIDExMTcxNiwgMTExNzIzLCAxMTE3MzAsIAorICAgIDExMTczOSwgMTExNzQ4LCAxMTE3NTksIDExMTc2OCwgMTExNzc5LCAxMTE3ODgsIDExMTc5NSwgMTExODA0LCAxMTE4MTUsIAorICAgIDExMTgyNCwgMTExODMzLCAxMTE4NDIsIDExMTg1MSwgMTExODU4LCAxMTE4NjUsIDExMTg3MiwgMTExODgxLCAxMTE4OTAsIAorICAgIDExMTkwMSwgMTExOTEwLCAxMTE5MTksIDExMTkzMCwgMTExOTM1LCAxMTE5NDAsIDExMTk1MSwgMTExOTU5LCAxMTE5NjgsIAorICAgIDExMTk3NywgMTExOTg2LCAxMTE5OTcsIDExMjAwNiwgMTEyMDE1LCAxMTIwMjYsIDExMjAzNywgMTEyMDQ4LCAxMTIwNTksIAorICAgIDExMjA3MCwgMTEyMDgxLCAxMTIwODgsIDExMjA5NSwgMTEyMTAyLCAxMTIxMDksIDExMjEyMCwgMTEyMTI5LCAxMTIxMzYsIAorICAgIDExMjE0MywgMTEyMTUwLCAxMTIxNjEsIDExMjE3MiwgMTEyMTgzLCAxMTIxOTQsIDExMjIwNSwgMTEyMjE2LCAxMTIyMjcsIAorICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI2MSwgMTEyMjcwLCAxMTIyNzcsIDExMjI4NCwgMTEyMjkxLCAxMTIzMDAsIAorICAgIDExMjMwOSwgMTEyMzE4LCAxMTIzMjUsIDExMjMzNCwgMTEyMzQzLCAxMTIzNTIsIDExMjM1OSwgMTEyMzY2LCAxMTIzNzEsIAorICAgIDExMjM3NywgMTEyMzg0LCAxMTIzOTEsIDExMjM5OCwgMTEyNDA1LCAxMTI0MTIsIDExMjQxOSwgMTEyNDI4LCAxMTI0MzcsIAorICAgIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjQ3MSwgMTEyNDc3LCAKKyAgICAxMTI0ODIsIDExMjQ4NywgMTEyNDk0LCAxMTI1MDAsIDExMjUwNiwgMTEyNTEyLCAxMTI1MTgsIDExMjUyNCwgMTEyNTMwLCAKKyAgICAxMTI1MzYsIDExMjU0MCwgMTEyNTQ0LCAxMTI1NTAsIDExMjU1NiwgMTEyNTYyLCAxMTI1NjYsIDExMjU3MSwgMTEyNTc2LCAKKyAgICAxMTI1ODAsIDExMjU4NCwgMTEyNTg3LCAxMTI1OTMsIDExMjU5OSwgMTEyNjA1LCAxMTI2MTEsIDExMjYxNywgMTEyNjIzLCAKKyAgICAxMTI2MjksIDExMjYzNSwgMTEyNjQxLCAxMTI2NTEsIDExMjY2MSwgMTEyNjY3LCAxMTI2NzMsIDExMjY4MywgMTEyNjkzLCAKKyAgICAxMTI2OTksIDAsIDAsIDExMjcwNSwgMTEyNzEzLCAxMTI3MTgsIDExMjcyMywgMTEyNzI5LCAxMTI3MzUsIDExMjc0MSwgCisgICAgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OSwgMTEyNzY2LCAxMTI3NzMsIDExMjc3OSwgMTEyNzg1LCAxMTI3OTEsIDExMjc5NywgCisgICAgMTEyODAzLCAxMTI4MDksIDExMjgxNSwgMTEyODIxLCAxMTI4MjYsIDExMjgzMiwgMTEyODM4LCAxMTI4NDQsIDExMjg1MCwgCisgICAgMTEyODU2LCAxMTI4NjUsIDExMjg3MSwgMTEyODc2LCAxMTI4ODQsIDExMjg5MSwgMTEyODk4LCAxMTI5MDcsIDExMjkxNiwgCisgICAgMTEyOTI1LCAxMTI5MzQsIDExMjk0MywgMTEyOTUyLCAxMTI5NjEsIDExMjk3MCwgMTEyOTgwLCAxMTI5OTAsIDExMjk5OCwgCisgICAgMTEzMDA2LCAxMTMwMTUsIDExMzAyNCwgMTEzMDMwLCAxMTMwMzYsIDExMzA0MiwgMTEzMDQ4LCAxMTMwNTYsIDExMzA2NCwgCisgICAgMTEzMDY4LCAxMTMwNzQsIDExMzA3OSwgMTEzMDg1LCAxMTMwOTEsIDExMzA5NywgMTEzMTAzLCAxMTMxMDksIDExMzExOCwgCisgICAgMTEzMTIzLCAxMTMxMzAsIDExMzEzNSwgMTEzMTQwLCAxMTMxNDUsIDExMzE1MSwgMTEzMTU3LCAxMTMxNjMsIDExMzE3MCwgCisgICAgMTEzMTc1LCAxMTMxODAsIDExMzE4NSwgMTEzMTkwLCAxMTMxOTUsIDExMzIwMSwgMTEzMjA3LCAxMTMyMTMsIDExMzIxOSwgCisgICAgMTEzMjI1LCAxMTMyMzEsIDExMzIzNywgMTEzMjQzLCAxMTMyNDgsIDExMzI1MywgMTEzMjU4LCAxMTMyNjMsIDExMzI2OCwgCisgICAgMTEzMjczLCAxMTMyNzgsIDExMzI4MywgMTEzMjg5LCAxMTMyOTUsIDExMzMwMCwgMTEzMzA1LCAxMTMzMTAsIDExMzMxNSwgCisgICAgMTEzMzIwLCAxMTMzMjYsIDExMzMzMywgMTEzMzM3LCAxMTMzNDEsIDExMzM0NSwgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgCisgICAgMTEzMzYxLCAxMTMzNjUsIDExMzM3MywgMTEzMzgzLCAxMTMzODcsIDExMzM5MSwgMTEzMzk3LCAxMTM0MDMsIDExMzQwOSwgCisgICAgMTEzNDE1LCAxMTM0MjEsIDExMzQyNywgMTEzNDMzLCAxMTM0MzksIDExMzQ0NSwgMTEzNDUxLCAxMTM0NTcsIDExMzQ2MywgCisgICAgMTEzNDY5LCAxMTM0NzUsIDExMzQ3OSwgMTEzNDgzLCAxMTM0OTAsIDExMzQ5NiwgMTEzNTAyLCAxMTM1MDgsIDExMzUxMywgCisgICAgMTEzNTIwLCAxMTM1MjUsIDExMzUzMSwgMTEzNTM3LCAxMTM1NDMsIDExMzU0OSwgMTEzNTU0LCAxMTM1NTgsIDExMzU2NCwgCisgICAgMTEzNTY4LCAxMTM1NzIsIDExMzU3NiwgMTEzNTgyLCAxMTM1ODgsIDExMzU5MiwgMTEzNTk4LCAxMTM2MDQsIDExMzYxMCwgCisgICAgMTEzNjE2LCAxMTM2MjIsIDExMzYzMCwgMTEzNjM4LCAxMTM2NDQsIDExMzY1MCwgMTEzNjU2LCAxMTM2NjIsIDExMzY3NCwgCisgICAgMTEzNjg2LCAxMTM3MDAsIDExMzcxMiwgMTEzNzI0LCAxMTM3MzgsIDExMzc1MiwgMTEzNzY2LCAxMTM3NzAsIDExMzc3OCwgCisgICAgMTEzNzg2LCAxMTM3OTEsIDExMzc5NSwgMTEzNzk5LCAxMTM4MDMsIDExMzgwNywgMTEzODExLCAxMTM4MTUsIDExMzgxOSwgCisgICAgMTEzODI1LCAxMTM4MzEsIDExMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzODQzLCAxMTM4NDksIAorICAgIDExMzg1NSwgMTEzODYxLCAxMTM4NjcsIDExMzg3MywgMTEzODc5LCAxMTM4ODUsIDExMzg5MSwgMTEzODk3LCAxMTM5MDMsIAorICAgIDExMzkwOSwgMTEzOTE1LCAxMTM5MjEsIDExMzkyNywgMTEzOTMzLCAxMTM5MzksIDExMzk0NSwgMTEzOTUxLCAxMTM5NTcsIAorICAgIDExMzk2MywgMTEzOTY5LCAxMTM5NzUsIDExMzk4MSwgMTEzOTg3LCAxMTM5OTMsIDExMzk5OSwgMTE0MDA1LCAxMTQwMTEsIAorICAgIDExNDAxNywgMTE0MDIzLCAxMTQwMjksIDExNDAzNSwgMTE0MDQxLCAxMTQwNDcsIDExNDA1MywgMTE0MDU5LCAxMTQwNjUsIAorICAgIDExNDA3MSwgMTE0MDc3LCAxMTQwODMsIDExNDA4OSwgMTE0MDk1LCAxMTQxMDEsIDExNDEwNywgMTE0MTEzLCAxMTQxMTksIAorICAgIDExNDEyNSwgMTE0MTMxLCAxMTQxMzcsIDExNDE0MywgMTE0MTQ5LCAxMTQxNTUsIDExNDE2MSwgMTE0MTY3LCAxMTQxNzMsIAorICAgIDExNDE3OSwgMTE0MTg1LCAxMTQxOTEsIDExNDE5NywgMTE0MjAzLCAxMTQyMDksIDExNDIxNSwgMTE0MjIxLCAxMTQyMjcsIAorICAgIDExNDIzMywgMTE0MjM5LCAxMTQyNDQsIDExNDI0OSwgMTE0MjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjIxOTYsIDEyMjE5OCwgMTIyMjAwLCAKLSAgICAxMjIyMDQsIDEyMjIwOCwgMTIyMjEyLCAxMjIyMjEsIDEyMjIyMywgMTIyMjI1LCAxMjIyMjgsIDEyMjIzMCwgMTIyMjMyLCAKLSAgICAxMjIyMzYsIDEyMjIzOCwgMTIyMjQyLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUwLCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAKLSAgICAxMjIyNjYsIDEyMjI2OCwgMTIyMjcyLCAxMjIyNzQsIDEyMjI3OCwgMTIyMjgyLCAxMjIyODYsIDEyMjI5MCwgMTIyMjkyLCAKLSAgICAxMjIyOTQsIDEyMjI5OCwgMTIyMzAyLCAxMjIzMDYsIDEyMjMxMCwgMTIyMzEyLCAxMjIzMTQsIDEyMjMxNiwgMTIyMzIxLCAKLSAgICAxMjIzMjYsIDEyMjMyOSwgMTIyMzM3LCAxMjIzNDUsIDEyMjM0NywgMTIyMzUyLCAxMjIzNTUsIDEyMjM2MCwgMTIyMzcxLCAKLSAgICAxMjIzNzgsIDEyMjM4MywgMTIyMzg4LCAxMjIzOTAsIDEyMjM5NCwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwMiwgMTIyNDA2LCAKLSAgICAxMjI0MTAsIDEyMjQxMywgMTIyNDE2LCAxMjI0MTgsIDEyMjQyMSwgMTIyNDIzLCAxMjI0MjcsIDEyMjQyOSwgMTIyNDMxLCAKLSAgICAxMjI0MzMsIDEyMjQzNywgMTIyNDM5LCAxMjI0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExNDI1OCwgMTE0MjYzLCAxMTQyNzAsIDExNDI3NywgMTE0Mjg0LCAxMTQyOTEsIDExNDI5NiwgMTE0MzAwLCAxMTQzMDYsIAorICAgIDExNDMxMCwgMTE0MzE0LCAxMTQzMjAsIDExNDMyNCwgMTE0MzI4LCAxMTQzMzIsIDExNDMzOCwgMTE0MzQ1LCAxMTQzNDksIAorICAgIDExNDM1MywgMTE0MzU3LCAxMTQzNjEsIDExNDM2NSwgMTE0MzY5LCAxMTQzNzUsIDExNDM3OSwgMTE0MzgzLCAxMTQzODcsIAorICAgIDExNDM5MSwgMTE0Mzk1LCAxMTQzOTksIDExNDQwMywgMTE0NDA3LCAxMTQ0MTEsIDExNDQxNSwgMTE0NDE5LCAxMTQ0MjMsIAorICAgIDExNDQyOCwgMTE0NDMyLCAxMTQ0MzYsIDExNDQ0MCwgMTE0NDQ0LCAxMTQ0NDgsIDExNDQ1MiwgMTE0NDU2LCAxMTQ0NjAsIAorICAgIDExNDQ2NCwgMTE0NDcxLCAxMTQ0NzUsIDExNDQ4MywgMTE0NDg3LCAxMTQ0OTEsIDExNDQ5NSwgMTE0NDk5LCAxMTQ1MDMsIAorICAgIDExNDUwNywgMTE0NTExLCAxMTQ1MTgsIDExNDUyMiwgMTE0NTI2LCAxMTQ1MzAsIDExNDUzNCwgMTE0NTM4LCAxMTQ1NDQsIAorICAgIDExNDU0OCwgMTE0NTU0LCAxMTQ1NTgsIDExNDU2MiwgMTE0NTY2LCAxMTQ1NzAsIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODIsIAorICAgIDExNDU4NiwgMTE0NTkwLCAxMTQ1OTQsIDExNDU5OCwgMTE0NjAyLCAxMTQ2MDYsIDExNDYxMCwgMTE0NjE0LCAxMTQ2MTgsIAorICAgIDExNDYyMiwgMTE0NjI2LCAxMTQ2MzAsIDExNDYzOCwgMTE0NjQyLCAxMTQ2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDExNDY1MCwgMTE0NjU4LCAxMTQ2NjYsIDExNDY3NCwgMTE0NjgyLCAxMTQ2OTAsIDExNDY5OCwgMTE0NzA2LCAKKyAgICAxMTQ3MTQsIDExNDcyMiwgMTE0NzMwLCAxMTQ3MzgsIDExNDc0NiwgMTE0NzU0LCAxMTQ3NjIsIDExNDc3MCwgMTE0Nzc4LCAKKyAgICAxMTQ3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDc5NCwgMTE0Nzk4LCAxMTQ4MDMsIAorICAgIDExNDgwOCwgMTE0ODEzLCAxMTQ4MTcsIDExNDgyMiwgMTE0ODI3LCAxMTQ4MzIsIDExNDgzNiwgMTE0ODQxLCAxMTQ4NDYsIAorICAgIDExNDg1MCwgMTE0ODU0LCAxMTQ4NTksIDExNDg2MywgMTE0ODY4LCAxMTQ4NzMsIDExNDg3NywgMTE0ODgyLCAxMTQ4ODcsIAorICAgIDExNDg5MSwgMTE0ODk2LCAxMTQ5MDEsIDExNDkwNiwgMTE0OTExLCAxMTQ5MTYsIDExNDkyMCwgMTE0OTI1LCAxMTQ5MzAsIAorICAgIDExNDkzNSwgMTE0OTM5LCAxMTQ5NDQsIDExNDk0OSwgMTE0OTU0LCAxMTQ5NTgsIDExNDk2MywgMTE0OTY4LCAxMTQ5NzIsIAorICAgIDExNDk3NiwgMTE0OTgxLCAxMTQ5ODUsIDExNDk5MCwgMTE0OTk1LCAxMTQ5OTksIDExNTAwNCwgMTE1MDA5LCAxMTUwMTMsIAorICAgIDExNTAxOCwgMTE1MDIzLCAxMTUwMjgsIDExNTAzMywgMTE1MDM4LCAxMTUwNDIsIDExNTA0NywgMTE1MDUyLCAxMTUwNTcsIAorICAgIDExNTA2MSwgMTE1MDY2LCAxMTUwNzEsIDExNTA3NiwgMTE1MDgwLCAxMTUwODUsIDExNTA5MCwgMTE1MDk0LCAxMTUwOTgsIAorICAgIDExNTEwMywgMTE1MTA3LCAxMTUxMTIsIDExNTExNywgMTE1MTIxLCAxMTUxMjYsIDExNTEzMSwgMTE1MTM1LCAxMTUxNDAsIAorICAgIDExNTE0NSwgMTE1MTUwLCAxMTUxNTUsIDExNTE2MCwgMTE1MTY0LCAxMTUxNjksIDExNTE3NCwgMTE1MTc5LCAxMTUxODMsIAorICAgIDExNTE4OCwgMCwgMTE1MTkzLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTEsIDExNTIxNSwgMTE1MjIwLCAKKyAgICAxMTUyMjQsIDExNTIyOSwgMTE1MjM0LCAxMTUyMzgsIDExNTI0MywgMTE1MjQ4LCAxMTUyNTIsIDExNTI1NywgMTE1MjYyLCAKKyAgICAxMTUyNjcsIDExNTI3MiwgMTE1Mjc3LCAxMTUyODIsIDExNTI4OCwgMTE1Mjk0LCAxMTUzMDAsIDExNTMwNSwgMTE1MzExLCAKKyAgICAxMTUzMTcsIDExNTMyMywgMTE1MzI4LCAxMTUzMzQsIDExNTM0MCwgMTE1MzQ1LCAxMTUzNTAsIDExNTM1NiwgMTE1MzYxLCAKKyAgICAxMTUzNjcsIDExNTM3MywgMTE1Mzc4LCAxMTUzODQsIDExNTM5MCwgMTE1Mzk1LCAxMTU0MDEsIDExNTQwNywgMTE1NDEzLCAKKyAgICAxMTU0MTksIDExNTQyNSwgMTE1NDMwLCAxMTU0MzYsIDExNTQ0MiwgMTE1NDQ4LCAxMTU0NTMsIDExNTQ1OSwgMTE1NDY1LCAKKyAgICAxMTU0NzEsIDExNTQ3NiwgMTE1NDgyLCAxMTU0ODgsIDExNTQ5MywgMTE1NDk4LCAxMTU1MDQsIDExNTUwOSwgMTE1NTE1LCAKKyAgICAxMTU1MjEsIDExNTUyNiwgMTE1NTMyLCAxMTU1MzgsIDExNTU0MywgMTE1NTQ5LCAxMTU1NTUsIDExNTU2MSwgMTE1NTY3LCAKKyAgICAxMTU1NzMsIDAsIDExNTU3NywgMTE1NTgyLCAwLCAwLCAxMTU1ODcsIDAsIDAsIDExNTU5MiwgMTE1NTk3LCAwLCAwLCAKKyAgICAxMTU2MDIsIDExNTYwNywgMTE1NjExLCAxMTU2MTYsIDAsIDExNTYyMSwgMTE1NjI2LCAxMTU2MzEsIDExNTYzNSwgCisgICAgMTE1NjQwLCAxMTU2NDUsIDExNTY1MCwgMTE1NjU1LCAxMTU2NjAsIDExNTY2NCwgMTE1NjY5LCAxMTU2NzQsIDAsIAorICAgIDExNTY3OSwgMCwgMTE1Njg0LCAxMTU2ODksIDExNTY5MywgMTE1Njk4LCAxMTU3MDMsIDExNTcwNywgMTE1NzExLCAwLCAKKyAgICAxMTU3MTYsIDExNTcyMSwgMTE1NzI2LCAxMTU3MzAsIDExNTczNSwgMTE1NzQwLCAxMTU3NDQsIDExNTc0OSwgMTE1NzU0LCAKKyAgICAxMTU3NTksIDExNTc2NCwgMTE1NzY5LCAxMTU3NzQsIDExNTc4MCwgMTE1Nzg2LCAxMTU3OTIsIDExNTc5NywgMTE1ODAzLCAKKyAgICAxMTU4MDksIDExNTgxNSwgMTE1ODIwLCAxMTU4MjYsIDExNTgzMiwgMTE1ODM3LCAxMTU4NDIsIDExNTg0OCwgMTE1ODUzLCAKKyAgICAxMTU4NTksIDExNTg2NSwgMTE1ODcwLCAxMTU4NzYsIDExNTg4MiwgMTE1ODg3LCAxMTU4OTMsIDExNTg5OSwgMTE1OTA1LCAKKyAgICAxMTU5MTEsIDExNTkxNywgMTE1OTIyLCAxMTU5MjgsIDExNTkzNCwgMTE1OTQwLCAxMTU5NDUsIDExNTk1MSwgMTE1OTU3LCAKKyAgICAxMTU5NjMsIDExNTk2OCwgMTE1OTc0LCAxMTU5ODAsIDExNTk4NSwgMTE1OTkwLCAxMTU5OTYsIDExNjAwMSwgMTE2MDA3LCAKKyAgICAxMTYwMTMsIDExNjAxOCwgMTE2MDI0LCAxMTYwMzAsIDExNjAzNSwgMTE2MDQxLCAxMTYwNDcsIDExNjA1MywgMTE2MDU5LCAKKyAgICAxMTYwNjUsIDExNjA2OSwgMCwgMTE2MDc0LCAxMTYwNzksIDExNjA4MywgMTE2MDg4LCAwLCAwLCAxMTYwOTMsIDExNjA5OCwgCisgICAgMTE2MTAzLCAxMTYxMDcsIDExNjExMSwgMTE2MTE2LCAxMTYxMjAsIDExNjEyNSwgMCwgMTE2MTMwLCAxMTYxMzUsIAorICAgIDExNjE0MCwgMTE2MTQ0LCAxMTYxNDksIDExNjE1NCwgMTE2MTU5LCAwLCAxMTYxNjQsIDExNjE2OCwgMTE2MTczLCAKKyAgICAxMTYxNzgsIDExNjE4MywgMTE2MTg3LCAxMTYxOTIsIDExNjE5NywgMTE2MjAyLCAxMTYyMDYsIDExNjIxMSwgMTE2MjE2LCAKKyAgICAxMTYyMjAsIDExNjIyNCwgMTE2MjI5LCAxMTYyMzMsIDExNjIzOCwgMTE2MjQzLCAxMTYyNDcsIDExNjI1MiwgMTE2MjU3LCAKKyAgICAxMTYyNjEsIDExNjI2NiwgMTE2MjcxLCAxMTYyNzYsIDExNjI4MSwgMTE2Mjg2LCAxMTYyOTAsIDAsIDExNjI5NSwgCisgICAgMTE2MzAwLCAxMTYzMDQsIDExNjMwOSwgMCwgMTE2MzE0LCAxMTYzMTgsIDExNjMyMywgMTE2MzI4LCAxMTYzMzIsIDAsIAorICAgIDExNjMzNiwgMCwgMCwgMCwgMTE2MzQwLCAxMTYzNDUsIDExNjM1MCwgMTE2MzU0LCAxMTYzNTksIDExNjM2NCwgMTE2MzY5LCAKKyAgICAwLCAxMTYzNzQsIDExNjM3OCwgMTE2MzgzLCAxMTYzODgsIDExNjM5MywgMTE2Mzk3LCAxMTY0MDIsIDExNjQwNywgCisgICAgMTE2NDEyLCAxMTY0MTYsIDExNjQyMSwgMTE2NDI2LCAxMTY0MzAsIDExNjQzNCwgMTE2NDM5LCAxMTY0NDMsIDExNjQ0OCwgCisgICAgMTE2NDUzLCAxMTY0NTcsIDExNjQ2MiwgMTE2NDY3LCAxMTY0NzEsIDExNjQ3NiwgMTE2NDgxLCAxMTY0ODYsIDExNjQ5MSwgCisgICAgMTE2NDk2LCAxMTY1MDEsIDExNjUwNywgMTE2NTEzLCAxMTY1MTksIDExNjUyNCwgMTE2NTMwLCAxMTY1MzYsIDExNjU0MiwgCisgICAgMTE2NTQ3LCAxMTY1NTMsIDExNjU1OSwgMTE2NTY0LCAxMTY1NjksIDExNjU3NSwgMTE2NTgwLCAxMTY1ODYsIDExNjU5MiwgCisgICAgMTE2NTk3LCAxMTY2MDMsIDExNjYwOSwgMTE2NjE0LCAxMTY2MjAsIDExNjYyNiwgMTE2NjMyLCAxMTY2MzgsIDExNjY0NCwgCisgICAgMTE2NjQ5LCAxMTY2NTUsIDExNjY2MSwgMTE2NjY3LCAxMTY2NzIsIDExNjY3OCwgMTE2Njg0LCAxMTY2OTAsIDExNjY5NSwgCisgICAgMTE2NzAxLCAxMTY3MDcsIDExNjcxMiwgMTE2NzE3LCAxMTY3MjMsIDExNjcyOCwgMTE2NzM0LCAxMTY3NDAsIDExNjc0NSwgCisgICAgMTE2NzUxLCAxMTY3NTcsIDExNjc2MiwgMTE2NzY4LCAxMTY3NzQsIDExNjc4MCwgMTE2Nzg2LCAxMTY3OTIsIDExNjc5NiwgCisgICAgMTE2ODAxLCAxMTY4MDYsIDExNjgxMSwgMTE2ODE1LCAxMTY4MjAsIDExNjgyNSwgMTE2ODMwLCAxMTY4MzQsIDExNjgzOSwgCisgICAgMTE2ODQ0LCAxMTY4NDgsIDExNjg1MiwgMTE2ODU3LCAxMTY4NjEsIDExNjg2NiwgMTE2ODcxLCAxMTY4NzUsIDExNjg4MCwgCisgICAgMTE2ODg1LCAxMTY4ODksIDExNjg5NCwgMTE2ODk5LCAxMTY5MDQsIDExNjkwOSwgMTE2OTE0LCAxMTY5MTgsIDExNjkyMywgCisgICAgMTE2OTI4LCAxMTY5MzMsIDExNjkzNywgMTE2OTQyLCAxMTY5NDcsIDExNjk1MiwgMTE2OTU2LCAxMTY5NjEsIDExNjk2NiwgCisgICAgMTE2OTcwLCAxMTY5NzQsIDExNjk3OSwgMTE2OTgzLCAxMTY5ODgsIDExNjk5MywgMTE2OTk3LCAxMTcwMDIsIDExNzAwNywgCisgICAgMTE3MDExLCAxMTcwMTYsIDExNzAyMSwgMTE3MDI2LCAxMTcwMzEsIDExNzAzNiwgMTE3MDQxLCAxMTcwNDcsIDExNzA1MywgCisgICAgMTE3MDU5LCAxMTcwNjQsIDExNzA3MCwgMTE3MDc2LCAxMTcwODIsIDExNzA4NywgMTE3MDkzLCAxMTcwOTksIDExNzEwNCwgCisgICAgMTE3MTA5LCAxMTcxMTUsIDExNzEyMCwgMTE3MTI2LCAxMTcxMzIsIDExNzEzNywgMTE3MTQzLCAxMTcxNDksIDExNzE1NCwgCisgICAgMTE3MTYwLCAxMTcxNjYsIDExNzE3MiwgMTE3MTc4LCAxMTcxODQsIDExNzE4OSwgMTE3MTk1LCAxMTcyMDEsIDExNzIwNywgCisgICAgMTE3MjEyLCAxMTcyMTgsIDExNzIyNCwgMTE3MjMwLCAxMTcyMzUsIDExNzI0MSwgMTE3MjQ3LCAxMTcyNTIsIDExNzI1NywgCisgICAgMTE3MjYzLCAxMTcyNjgsIDExNzI3NCwgMTE3MjgwLCAxMTcyODUsIDExNzI5MSwgMTE3Mjk3LCAxMTczMDIsIDExNzMwOCwgCisgICAgMTE3MzE0LCAxMTczMjAsIDExNzMyNiwgMTE3MzMyLCAxMTczMzcsIDExNzM0MywgMTE3MzQ5LCAxMTczNTUsIDExNzM2MCwgCisgICAgMTE3MzY2LCAxMTczNzIsIDExNzM3OCwgMTE3MzgzLCAxMTczODksIDExNzM5NSwgMTE3NDAwLCAxMTc0MDUsIDExNzQxMSwgCisgICAgMTE3NDE2LCAxMTc0MjIsIDExNzQyOCwgMTE3NDMzLCAxMTc0MzksIDExNzQ0NSwgMTE3NDUwLCAxMTc0NTYsIDExNzQ2MiwgCisgICAgMTE3NDY4LCAxMTc0NzQsIDExNzQ4MCwgMTE3NDg1LCAxMTc0OTEsIDExNzQ5NywgMTE3NTAzLCAxMTc1MDgsIDExNzUxNCwgCisgICAgMTE3NTIwLCAxMTc1MjYsIDExNzUzMSwgMTE3NTM3LCAxMTc1NDMsIDExNzU0OCwgMTE3NTUzLCAxMTc1NTksIDExNzU2NCwgCisgICAgMTE3NTcwLCAxMTc1NzYsIDExNzU4MSwgMTE3NTg3LCAxMTc1OTMsIDExNzU5OCwgMTE3NjA0LCAxMTc2MTAsIDExNzYxNiwgCisgICAgMTE3NjIyLCAxMTc2MjgsIDExNzYzNCwgMTE3NjQxLCAxMTc2NDgsIDExNzY1NSwgMTE3NjYxLCAxMTc2NjgsIDExNzY3NSwgCisgICAgMTE3NjgyLCAxMTc2ODgsIDExNzY5NSwgMTE3NzAyLCAxMTc3MDgsIDExNzcxNCwgMTE3NzIxLCAxMTc3MjcsIDExNzczNCwgCisgICAgMTE3NzQxLCAxMTc3NDcsIDExNzc1NCwgMTE3NzYxLCAxMTc3NjcsIDExNzc3NCwgMTE3NzgxLCAxMTc3ODgsIDExNzc5NSwgCisgICAgMTE3ODAyLCAxMTc4MDgsIDExNzgxNSwgMTE3ODIyLCAxMTc4MjksIDExNzgzNSwgMTE3ODQyLCAxMTc4NDksIDExNzg1NiwgCisgICAgMTE3ODYyLCAxMTc4NjksIDExNzg3NiwgMTE3ODgyLCAxMTc4ODgsIDExNzg5NSwgMTE3OTAxLCAxMTc5MDgsIDExNzkxNSwgCisgICAgMTE3OTIxLCAxMTc5MjgsIDExNzkzNSwgMTE3OTQxLCAxMTc5NDgsIDExNzk1NSwgMTE3OTYyLCAxMTc5NjksIDExNzk3NiwgCisgICAgMTE3OTgxLCAxMTc5ODcsIDExNzk5MywgMTE3OTk5LCAxMTgwMDQsIDExODAxMCwgMTE4MDE2LCAxMTgwMjIsIDExODAyNywgCisgICAgMTE4MDMzLCAxMTgwMzksIDExODA0NCwgMTE4MDQ5LCAxMTgwNTUsIDExODA2MCwgMTE4MDY2LCAxMTgwNzIsIDExODA3NywgCisgICAgMTE4MDgzLCAxMTgwODksIDExODA5NCwgMTE4MTAwLCAxMTgxMDYsIDExODExMiwgMTE4MTE4LCAxMTgxMjQsIDExODEyOSwgCisgICAgMTE4MTM1LCAxMTgxNDEsIDExODE0NywgMTE4MTUyLCAxMTgxNTgsIDExODE2NCwgMTE4MTcwLCAxMTgxNzUsIDExODE4MSwgCisgICAgMTE4MTg3LCAxMTgxOTIsIDExODE5NywgMTE4MjAzLCAxMTgyMDgsIDExODIxNCwgMTE4MjIwLCAxMTgyMjUsIDExODIzMSwgCisgICAgMTE4MjM3LCAxMTgyNDIsIDExODI0OCwgMTE4MjU0LCAxMTgyNjAsIDExODI2NiwgMTE4MjcyLCAxMTgyNzgsIDAsIDAsIAorICAgIDExODI4NSwgMTE4MjkwLCAxMTgyOTUsIDExODMwMCwgMTE4MzA1LCAxMTgzMTAsIDExODMxNSwgMTE4MzIwLCAxMTgzMjUsIAorICAgIDExODMzMCwgMTE4MzM1LCAxMTgzNDAsIDExODM0NSwgMTE4MzUwLCAxMTgzNTUsIDExODM2MCwgMTE4MzY1LCAxMTgzNzAsIAorICAgIDExODM3NiwgMTE4MzgxLCAxMTgzODYsIDExODM5MSwgMTE4Mzk2LCAxMTg0MDEsIDExODQwNiwgMTE4NDExLCAxMTg0MTUsIAorICAgIDExODQyMCwgMTE4NDI1LCAxMTg0MzAsIDExODQzNSwgMTE4NDQwLCAxMTg0NDUsIDExODQ1MCwgMTE4NDU1LCAxMTg0NjAsIAorICAgIDExODQ2NSwgMTE4NDcwLCAxMTg0NzUsIDExODQ4MCwgMTE4NDg1LCAxMTg0OTAsIDExODQ5NSwgMTE4NTAwLCAxMTg1MDYsIAorICAgIDExODUxMSwgMTE4NTE2LCAxMTg1MjEsIDExODUyNiwgMTE4NTMxLCAxMTg1MzYsIDExODU0MSwgMTE4NTQ3LCAxMTg1NTIsIAorICAgIDExODU1NywgMTE4NTYyLCAxMTg1NjcsIDExODU3MiwgMTE4NTc3LCAxMTg1ODIsIDExODU4NywgMTE4NTkyLCAxMTg1OTcsIAorICAgIDExODYwMiwgMTE4NjA3LCAxMTg2MTIsIDExODYxNywgMTE4NjIyLCAxMTg2MjcsIDExODYzMiwgMTE4NjM3LCAxMTg2NDIsIAorICAgIDExODY0NywgMTE4NjUyLCAxMTg2NTcsIDExODY2MiwgMTE4NjY4LCAxMTg2NzMsIDExODY3OCwgMTE4NjgzLCAxMTg2ODgsIAorICAgIDExODY5MywgMTE4Njk4LCAxMTg3MDMsIDExODcwNywgMTE4NzEyLCAxMTg3MTcsIDExODcyMiwgMTE4NzI3LCAxMTg3MzIsIAorICAgIDExODczNywgMTE4NzQyLCAxMTg3NDcsIDExODc1MiwgMTE4NzU3LCAxMTg3NjIsIDExODc2NywgMTE4NzcyLCAxMTg3NzcsIAorICAgIDExODc4MiwgMTE4Nzg3LCAxMTg3OTIsIDExODc5OCwgMTE4ODAzLCAxMTg4MDgsIDExODgxMywgMTE4ODE4LCAxMTg4MjMsIAorICAgIDExODgyOCwgMTE4ODMzLCAxMTg4MzksIDExODg0NCwgMTE4ODQ5LCAxMTg4NTQsIDExODg1OSwgMTE4ODY0LCAxMTg4NjksIAorICAgIDExODg3NSwgMTE4ODgxLCAxMTg4ODcsIDExODg5MywgMTE4ODk5LCAxMTg5MDUsIDExODkxMSwgMTE4OTE3LCAxMTg5MjMsIAorICAgIDExODkyOSwgMTE4OTM1LCAxMTg5NDEsIDExODk0NywgMTE4OTUzLCAxMTg5NTksIDExODk2NSwgMTE4OTcxLCAxMTg5NzgsIAorICAgIDExODk4NCwgMTE4OTkwLCAxMTg5OTYsIDExOTAwMiwgMTE5MDA4LCAxMTkwMTQsIDExOTAyMCwgMTE5MDI1LCAxMTkwMzEsIAorICAgIDExOTAzNywgMTE5MDQzLCAxMTkwNDksIDExOTA1NSwgMTE5MDYxLCAxMTkwNjcsIDExOTA3MywgMTE5MDc5LCAxMTkwODUsIAorICAgIDExOTA5MSwgMTE5MDk3LCAxMTkxMDMsIDExOTEwOSwgMTE5MTE1LCAxMTkxMjEsIDExOTEyNywgMTE5MTM0LCAxMTkxNDAsIAorICAgIDExOTE0NiwgMTE5MTUyLCAxMTkxNTgsIDExOTE2NCwgMTE5MTcwLCAxMTkxNzYsIDExOTE4MywgMTE5MTg5LCAxMTkxOTUsIAorICAgIDExOTIwMSwgMTE5MjA3LCAxMTkyMTMsIDExOTIxOSwgMTE5MjI1LCAxMTkyMzEsIDExOTIzNywgMTE5MjQzLCAxMTkyNDksIAorICAgIDExOTI1NSwgMTE5MjYxLCAxMTkyNjcsIDExOTI3MywgMTE5Mjc5LCAxMTkyODUsIDExOTI5MSwgMTE5Mjk3LCAxMTkzMDMsIAorICAgIDExOTMwOSwgMTE5MzE1LCAxMTkzMjEsIDExOTMyOCwgMTE5MzM0LCAxMTkzNDAsIDExOTM0NiwgMTE5MzUyLCAxMTkzNTgsIAorICAgIDExOTM2NCwgMTE5MzcwLCAxMTkzNzUsIDExOTM4MSwgMTE5Mzg3LCAxMTkzOTMsIDExOTM5OSwgMTE5NDA1LCAxMTk0MTEsIAorICAgIDExOTQxNywgMTE5NDIzLCAxMTk0MjksIDExOTQzNSwgMTE5NDQxLCAxMTk0NDcsIDExOTQ1MywgMTE5NDU5LCAxMTk0NjUsIAorICAgIDExOTQ3MSwgMTE5NDc3LCAxMTk0ODQsIDExOTQ5MCwgMTE5NDk2LCAxMTk1MDIsIDExOTUwOCwgMTE5NTE0LCAxMTk1MjAsIAorICAgIDExOTUyNiwgMTE5NTMzLCAxMTk1MzksIDExOTU0NSwgMTE5NTUxLCAxMTk1NTcsIDExOTU2MywgMTE5NTY5LCAxMTk1NzYsIAorICAgIDExOTU4MywgMTE5NTkwLCAxMTk1OTcsIDExOTYwNCwgMTE5NjExLCAxMTk2MTgsIDExOTYyNSwgMTE5NjMyLCAxMTk2MzksIAorICAgIDExOTY0NiwgMTE5NjUzLCAxMTk2NjAsIDExOTY2NywgMTE5Njc0LCAxMTk2ODEsIDExOTY4OCwgMTE5Njk2LCAxMTk3MDMsIAorICAgIDExOTcxMCwgMTE5NzE3LCAxMTk3MjQsIDExOTczMSwgMTE5NzM4LCAxMTk3NDUsIDExOTc1MSwgMTE5NzU4LCAxMTk3NjUsIAorICAgIDExOTc3MiwgMTE5Nzc5LCAxMTk3ODYsIDExOTc5MywgMTE5ODAwLCAxMTk4MDcsIDExOTgxNCwgMTE5ODIxLCAxMTk4MjgsIAorICAgIDExOTgzNSwgMTE5ODQyLCAxMTk4NDksIDExOTg1NiwgMTE5ODYzLCAxMTk4NzAsIDExOTg3OCwgMTE5ODg1LCAxMTk4OTIsIAorICAgIDExOTg5OSwgMTE5OTA2LCAxMTk5MTMsIDExOTkyMCwgMTE5OTI3LCAxMTk5MzUsIDExOTk0MiwgMTE5OTQ5LCAxMTk5NTYsIAorICAgIDExOTk2MywgMTE5OTcwLCAxMTk5NzcsIDExOTk4MiwgMCwgMCwgMTE5OTg3LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAKKyAgICAxMjAwMDQsIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMywgMTIwMDM3LCAKKyAgICAxMjAwNDEsIDEyMDA0NSwgMTIwMDQ5LCAxMjAwNTMsIDEyMDA1NywgMTIwMDYxLCAxMjAwNjUsIDEyMDA2OSwgMTIwMDc0LCAKKyAgICAxMjAwNzgsIDEyMDA4MiwgMTIwMDg2LCAxMjAwOTAsIDEyMDA5NCwgMTIwMDk4LCAxMjAxMDIsIDEyMDEwNiwgMTIwMTEwLCAKKyAgICAxMjAxMTYsIDEyMDEyMSwgMTIwMTI2LCAxMjAxMzEsIDEyMDEzNiwgMTIwMTQxLCAxMjAxNDYsIDEyMDE1MSwgMTIwMTU2LCAKKyAgICAxMjAxNjEsIDEyMDE2NywgMTIwMTcyLCAxMjAxNzcsIDEyMDE4MiwgMTIwMTg3LCAxMjAxOTIsIDEyMDE5NywgMTIwMjAyLCAKKyAgICAxMjAyMDcsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIDEyMDIyNCwgMCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgCisgICAgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgCisgICAgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgCisgICAgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI2LCAxMjAzMzIsIDEyMDMzOCwgMCwgMTIwMzQ0LCAxMjAzNDksIDAsIAorICAgIDEyMDM1NCwgMCwgMCwgMTIwMzU5LCAwLCAxMjAzNjQsIDEyMDM2OSwgMTIwMzc0LCAxMjAzNzksIDEyMDM4NCwgMTIwMzg5LCAKKyAgICAxMjAzOTQsIDEyMDM5OSwgMTIwNDA0LCAxMjA0MDksIDAsIDEyMDQxNCwgMTIwNDE5LCAxMjA0MjQsIDEyMDQyOSwgMCwgCisgICAgMTIwNDM0LCAwLCAxMjA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDQ0NCwgMCwgMCwgMCwgMCwgMTIwNDUwLCAwLCAKKyAgICAxMjA0NTYsIDAsIDEyMDQ2MiwgMCwgMTIwNDY4LCAxMjA0NzQsIDEyMDQ4MCwgMCwgMTIwNDg2LCAxMjA0OTIsIDAsIAorICAgIDEyMDQ5OCwgMCwgMCwgMTIwNTA0LCAwLCAxMjA1MTAsIDAsIDEyMDUxNiwgMCwgMTIwNTIyLCAwLCAxMjA1MzAsIDAsIAorICAgIDEyMDUzOCwgMTIwNTQ0LCAwLCAxMjA1NTAsIDAsIDAsIDEyMDU1NiwgMTIwNTYyLCAxMjA1NjgsIDEyMDU3NCwgMCwgCisgICAgMTIwNTgwLCAxMjA1ODYsIDEyMDU5MiwgMTIwNTk4LCAxMjA2MDQsIDEyMDYxMCwgMTIwNjE2LCAwLCAxMjA2MjIsIAorICAgIDEyMDYyOCwgMTIwNjM0LCAxMjA2NDAsIDAsIDEyMDY0NiwgMTIwNjUyLCAxMjA2NTgsIDEyMDY2NCwgMCwgMTIwNjcyLCAwLCAKKyAgICAxMjA2ODAsIDEyMDY4NiwgMTIwNjkyLCAxMjA2OTgsIDEyMDcwNCwgMTIwNzEwLCAxMjA3MTYsIDEyMDcyMiwgMTIwNzI4LCAKKyAgICAxMjA3MzQsIDAsIDEyMDc0MCwgMTIwNzQ2LCAxMjA3NTIsIDEyMDc1OCwgMTIwNzY0LCAxMjA3NzAsIDEyMDc3NiwgCisgICAgMTIwNzgyLCAxMjA3ODgsIDEyMDc5NCwgMTIwODAwLCAxMjA4MDYsIDEyMDgxMiwgMTIwODE4LCAxMjA4MjQsIDEyMDgzMCwgCisgICAgMTIwODM2LCAwLCAwLCAwLCAwLCAwLCAxMjA4NDIsIDEyMDg0NywgMTIwODUyLCAwLCAxMjA4NTcsIDEyMDg2MiwgMTIwODY3LCAKKyAgICAxMjA4NzIsIDEyMDg3NywgMCwgMTIwODgyLCAxMjA4ODcsIDEyMDg5MiwgMTIwODk3LCAxMjA5MDIsIDEyMDkwNywgCisgICAgMTIwOTEyLCAxMjA5MTcsIDEyMDkyMiwgMTIwOTI3LCAxMjA5MzIsIDEyMDkzNywgMTIwOTQyLCAxMjA5NDcsIDEyMDk1MiwgCisgICAgMTIwOTU3LCAxMjA5NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjQ0NiwgCi0gICAgMTIyNDUxLCAxMjI0NTYsIDEyMjQ2MSwgMTIyNDY2LCAxMjI0NzEsIDEyMjQ3NiwgMTIyNDgzLCAxMjI0OTAsIDEyMjQ5NywgCi0gICAgMTIyNTA0LCAxMjI1MDksIDEyMjUxNCwgMTIyNTE5LCAxMjI1MjQsIDEyMjUzMSwgMTIyNTM3LCAxMjI1NDQsIDEyMjU1MSwgCi0gICAgMTIyNTU4LCAxMjI1NjMsIDEyMjU2OCwgMTIyNTczLCAxMjI1NzgsIDEyMjU4MywgMTIyNTkwLCAxMjI1OTcsIDEyMjYwMiwgCi0gICAgMTIyNjA3LCAxMjI2MTQsIDEyMjYyMSwgMTIyNjI5LCAxMjI2MzcsIDEyMjY0NCwgMTIyNjUxLCAxMjI2NTksIDEyMjY2NywgCi0gICAgMTIyNjc1LCAxMjI2ODIsIDEyMjY5MiwgMTIyNzAzLCAxMjI3MDgsIDEyMjcxNSwgMTIyNzIyLCAxMjI3MjksIDEyMjczNywgCi0gICAgMTIyNzQ1LCAxMjI3NTYsIDEyMjc2NCwgMTIyNzcyLCAxMjI3ODAsIDEyMjc4NSwgMTIyNzkwLCAxMjI3OTUsIDEyMjgwMCwgCi0gICAgMTIyODA1LCAxMjI4MTAsIDEyMjgxNSwgMTIyODIwLCAxMjI4MjUsIDEyMjgzMCwgMTIyODM1LCAxMjI4NDAsIDEyMjg0NywgCi0gICAgMTIyODUyLCAxMjI4NTcsIDEyMjg2NCwgMTIyODY5LCAxMjI4NzQsIDEyMjg3OSwgMTIyODg0LCAxMjI4ODksIDEyMjg5NCwgCi0gICAgMTIyODk5LCAxMjI5MDQsIDEyMjkwOSwgMTIyOTE0LCAxMjI5MTksIDEyMjkyNCwgMTIyOTMxLCAxMjI5MzksIDEyMjk0NCwgCi0gICAgMTIyOTQ5LCAxMjI5NTYsIDEyMjk2MSwgMTIyOTY2LCAxMjI5NzEsIDEyMjk3OCwgMTIyOTgzLCAxMjI5OTAsIDEyMjk5NSwgCi0gICAgMTIzMDAyLCAxMjMwMDcsIDEyMzAxNiwgMTIzMDI1LCAxMjMwMzAsIDEyMzAzNSwgMTIzMDQwLCAxMjMwNDUsIDEyMzA1MCwgCi0gICAgMTIzMDU1LCAxMjMwNjAsIDEyMzA2NSwgMTIzMDcwLCAxMjMwNzUsIDEyMzA4MCwgMTIzMDg1LCAxMjMwOTAsIDEyMzA5OCwgCi0gICAgMTIzMTA2LCAxMjMxMTEsIDEyMzExNiwgMTIzMTIxLCAxMjMxMjYsIDEyMzEzMSwgMTIzMTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjMxNDMsIDEyMzE0NywgMTIzMTUxLCAxMjMxNTUsIDEyMzE1OSwgMTIzMTYzLCAxMjMxNjcsIAotICAgIDEyMzE3MSwgMTIzMTc1LCAxMjMxNzksIDEyMzE4MywgMTIzMTg3LCAxMjMxOTEsIDEyMzE5NSwgMTIzMTk5LCAxMjMyMDMsIAotICAgIDEyMzIwNywgMTIzMjExLCAxMjMyMTUsIDEyMzIxOSwgMTIzMjIzLCAxMjMyMjcsIDEyMzIzMSwgMTIzMjM1LCAxMjMyMzksIAotICAgIDEyMzI0MywgMTIzMjQ3LCAxMjMyNTEsIDEyMzI1NSwgMTIzMjU5LCAxMjMyNjMsIDEyMzI2NywgMTIzMjcxLCAxMjMyNzUsIAotICAgIDEyMzI3OSwgMTIzMjgzLCAxMjMyODcsIDEyMzI5MSwgMTIzMjk1LCAxMjMyOTksIDEyMzMwMywgMTIzMzA3LCAxMjMzMTEsIAotICAgIDEyMzMxNSwgMTIzMzE5LCAxMjMzMjMsIDEyMzMyNywgMTIzMzMxLCAxMjMzMzUsIDEyMzMzOSwgMTIzMzQzLCAxMjMzNDcsIAotICAgIDEyMzM1MSwgMTIzMzU1LCAxMjMzNTksIDEyMzM2MywgMTIzMzY3LCAxMjMzNzEsIDEyMzM3NSwgMTIzMzc5LCAxMjMzODMsIAotICAgIDEyMzM4NywgMTIzMzkxLCAxMjMzOTUsIDEyMzM5OSwgMTIzNDAzLCAxMjM0MDcsIDEyMzQxMSwgMTIzNDE1LCAxMjM0MTksIAotICAgIDEyMzQyMywgMTIzNDI3LCAxMjM0MzEsIDEyMzQzNSwgMTIzNDM5LCAxMjM0NDMsIDEyMzQ0NywgMTIzNDUxLCAxMjM0NTUsIAotICAgIDEyMzQ1OSwgMTIzNDYzLCAxMjM0NjcsIDEyMzQ3MSwgMTIzNDc1LCAxMjM0NzksIDEyMzQ4MywgMTIzNDg3LCAxMjM0OTEsIAotICAgIDEyMzQ5NSwgMTIzNDk5LCAxMjM1MDMsIDEyMzUwNywgMTIzNTExLCAxMjM1MTUsIDEyMzUxOSwgMTIzNTIzLCAxMjM1MjcsIAotICAgIDEyMzUzMSwgMTIzNTM1LCAxMjM1MzksIDEyMzU0MywgMTIzNTQ3LCAxMjM1NTEsIDEyMzU1NSwgMTIzNTU5LCAxMjM1NjMsIAotICAgIDEyMzU2NywgMTIzNTcxLCAxMjM1NzUsIDEyMzU3OSwgMTIzNTgzLCAxMjM1ODcsIDEyMzU5MSwgMTIzNTk1LCAxMjM1OTksIAotICAgIDEyMzYwMywgMTIzNjA3LCAxMjM2MTEsIDEyMzYxNSwgMTIzNjE5LCAxMjM2MjMsIDEyMzYyNywgMTIzNjMxLCAxMjM2MzUsIAotICAgIDEyMzYzOSwgMTIzNjQzLCAxMjM2NDcsIDEyMzY1MSwgMTIzNjU1LCAxMjM2NTksIDEyMzY2MywgMTIzNjY3LCAxMjM2NzEsIAotICAgIDEyMzY3NSwgMTIzNjc5LCAxMjM2ODMsIDEyMzY4NywgMTIzNjkxLCAxMjM2OTUsIDEyMzY5OSwgMTIzNzAzLCAxMjM3MDcsIAotICAgIDEyMzcxMSwgMTIzNzE1LCAxMjM3MTksIDEyMzcyMywgMTIzNzI3LCAxMjM3MzEsIDEyMzczNSwgMTIzNzM5LCAxMjM3NDMsIAotICAgIDEyMzc0NywgMTIzNzUxLCAxMjM3NTUsIDEyMzc1OSwgMTIzNzYzLCAxMjM3NjcsIDEyMzc3MSwgMTIzNzc1LCAxMjM3NzksIAotICAgIDEyMzc4MywgMTIzNzg3LCAxMjM3OTEsIDEyMzc5NSwgMTIzNzk5LCAxMjM4MDMsIDEyMzgwNywgMTIzODExLCAxMjM4MTUsIAotICAgIDEyMzgxOSwgMTIzODIzLCAxMjM4MjcsIDEyMzgzMSwgMTIzODM1LCAxMjM4MzksIDEyMzg0MywgMTIzODQ3LCAxMjM4NTEsIAotICAgIDEyMzg1NSwgMTIzODU5LCAxMjM4NjMsIDEyMzg2NywgMTIzODcxLCAxMjM4NzUsIDEyMzg3OSwgMTIzODgzLCAxMjM4ODcsIAotICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA3LCAxMjM5MTEsIDEyMzkxNSwgMTIzOTE5LCAxMjM5MjMsIAotICAgIDEyMzkyNywgMTIzOTMxLCAxMjM5MzUsIDEyMzkzOSwgMTIzOTQzLCAxMjM5NDcsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAotICAgIDEyMzk2MywgMTIzOTY3LCAxMjM5NzEsIDEyMzk3NSwgMTIzOTc5LCAxMjM5ODMsIDEyMzk4NywgMTIzOTkxLCAxMjM5OTUsIAotICAgIDEyMzk5OSwgMTI0MDAzLCAxMjQwMDcsIDEyNDAxMSwgMTI0MDE1LCAxMjQwMTksIDEyNDAyMywgMTI0MDI3LCAxMjQwMzEsIAotICAgIDEyNDAzNSwgMTI0MDM5LCAxMjQwNDMsIDEyNDA0NywgMTI0MDUxLCAxMjQwNTUsIDEyNDA1OSwgMTI0MDYzLCAxMjQwNjcsIAotICAgIDEyNDA3MSwgMTI0MDc1LCAxMjQwNzksIDEyNDA4MywgMTI0MDg3LCAxMjQwOTEsIDEyNDA5NSwgMTI0MDk5LCAxMjQxMDMsIAotICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTIzLCAxMjQxMjcsIDEyNDEzMSwgMTI0MTM1LCAxMjQxMzksIAotICAgIDEyNDE0MywgMTI0MTQ3LCAxMjQxNTEsIDEyNDE1NSwgMTI0MTU5LCAxMjQxNjMsIDEyNDE2NywgMTI0MTcxLCAxMjQxNzUsIAotICAgIDEyNDE3OSwgMTI0MTgzLCAxMjQxODcsIDEyNDE5MSwgMTI0MTk1LCAxMjQxOTksIDEyNDIwMywgMTI0MjA3LCAxMjQyMTEsIAotICAgIDEyNDIxNSwgMTI0MjE5LCAxMjQyMjMsIDEyNDIyNywgMTI0MjMxLCAxMjQyMzUsIDEyNDIzOSwgMTI0MjQzLCAxMjQyNDcsIAotICAgIDEyNDI1MSwgMTI0MjU1LCAxMjQyNTksIDEyNDI2MywgMTI0MjY3LCAxMjQyNzEsIDEyNDI3NSwgMTI0Mjc5LCAxMjQyODMsIAotICAgIDEyNDI4NywgMTI0MjkxLCAxMjQyOTUsIDEyNDI5OSwgMTI0MzAzLCAxMjQzMDcsIDEyNDMxMSwgMTI0MzE1LCAxMjQzMTksIAotICAgIDEyNDMyMywgMTI0MzI3LCAxMjQzMzEsIDEyNDMzNSwgMTI0MzM5LCAxMjQzNDMsIDEyNDM0NywgMTI0MzUxLCAxMjQzNTUsIAotICAgIDEyNDM1OSwgMTI0MzYzLCAxMjQzNjcsIDEyNDM3MSwgMTI0Mzc1LCAxMjQzNzksIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIAotICAgIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIAotICAgIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0MywgMTI0NDQ3LCAxMjQ0NTEsIDEyNDQ1NSwgMTI0NDU5LCAxMjQ0NjMsIAotICAgIDEyNDQ2NywgMTI0NDcxLCAxMjQ0NzUsIDEyNDQ3OSwgMTI0NDgzLCAxMjQ0ODcsIDEyNDQ5MSwgMTI0NDk1LCAxMjQ0OTksIAotICAgIDEyNDUwMywgMTI0NTA3LCAxMjQ1MTEsIDEyNDUxNSwgMTI0NTE5LCAxMjQ1MjMsIDEyNDUyNywgMTI0NTMxLCAxMjQ1MzUsIAotICAgIDEyNDUzOSwgMTI0NTQzLCAxMjQ1NDcsIDEyNDU1MSwgMTI0NTU1LCAxMjQ1NTksIDEyNDU2MywgMTI0NTY3LCAxMjQ1NzEsIAotICAgIDEyNDU3NSwgMTI0NTc5LCAxMjQ1ODMsIDEyNDU4NywgMTI0NTkxLCAxMjQ1OTUsIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDcsIAotICAgIDEyNDYxMSwgMTI0NjE1LCAxMjQ2MTksIDEyNDYyMywgMTI0NjI3LCAxMjQ2MzEsIDEyNDYzNSwgMTI0NjM5LCAxMjQ2NDMsIAotICAgIDEyNDY0NywgMTI0NjUxLCAxMjQ2NTUsIDEyNDY1OSwgMTI0NjYzLCAxMjQ2NjcsIDEyNDY3MSwgMTI0Njc1LCAxMjQ2NzksIAotICAgIDEyNDY4MywgMTI0Njg3LCAxMjQ2OTEsIDEyNDY5NSwgMTI0Njk5LCAxMjQ3MDMsIDEyNDcwNywgMTI0NzExLCAxMjQ3MTUsIAotICAgIDEyNDcxOSwgMTI0NzIzLCAxMjQ3MjcsIDEyNDczMSwgMTI0NzM1LCAxMjQ3MzksIDEyNDc0MywgMTI0NzQ3LCAxMjQ3NTEsIAotICAgIDEyNDc1NSwgMTI0NzU5LCAxMjQ3NjMsIDEyNDc2NywgMTI0NzcxLCAxMjQ3NzUsIDEyNDc3OSwgMTI0NzgzLCAxMjQ3ODcsIAotICAgIDEyNDc5MSwgMTI0Nzk1LCAxMjQ3OTksIDEyNDgwMywgMTI0ODA3LCAxMjQ4MTEsIDEyNDgxNSwgMTI0ODE5LCAxMjQ4MjMsIAotICAgIDEyNDgyNywgMTI0ODMxLCAxMjQ4MzUsIDEyNDgzOSwgMTI0ODQzLCAxMjQ4NDcsIDEyNDg1MSwgMTI0ODU1LCAxMjQ4NTksIAotICAgIDEyNDg2MywgMTI0ODY3LCAxMjQ4NzEsIDEyNDg3NSwgMTI0ODc5LCAxMjQ4ODMsIDEyNDg4NywgMTI0ODkxLCAxMjQ4OTUsIAotICAgIDEyNDg5OSwgMTI0OTAzLCAxMjQ5MDcsIDEyNDkxMSwgMTI0OTE1LCAxMjQ5MTksIDEyNDkyMywgMTI0OTI3LCAxMjQ5MzEsIAotICAgIDEyNDkzNSwgMTI0OTM5LCAxMjQ5NDMsIDEyNDk0NywgMTI0OTUxLCAxMjQ5NTUsIDEyNDk1OSwgMTI0OTYzLCAxMjQ5NjcsIAotICAgIDEyNDk3MSwgMTI0OTc1LCAxMjQ5NzksIDEyNDk4MywgMTI0OTg3LCAxMjQ5OTEsIDEyNDk5NSwgMTI0OTk5LCAxMjUwMDMsIAotICAgIDEyNTAwNywgMTI1MDExLCAxMjUwMTUsIDEyNTAxOSwgMTI1MDIzLCAxMjUwMjcsIDEyNTAzMSwgMTI1MDM1LCAxMjUwMzksIAotICAgIDEyNTA0MywgMTI1MDQ3LCAxMjUwNTEsIDEyNTA1NSwgMTI1MDU5LCAxMjUwNjMsIDEyNTA2NywgMTI1MDcxLCAxMjUwNzUsIAotICAgIDEyNTA3OSwgMTI1MDgzLCAxMjUwODcsIDEyNTA5MSwgMTI1MDk1LCAxMjUwOTksIDEyNTEwMywgMTI1MTA3LCAxMjUxMTEsIAotICAgIDEyNTExNSwgMTI1MTE5LCAxMjUxMjMsIDEyNTEyNywgMTI1MTMxLCAxMjUxMzUsIDEyNTEzOSwgMTI1MTQzLCAxMjUxNDcsIAotICAgIDEyNTE1MSwgMTI1MTU1LCAxMjUxNTksIDEyNTE2MywgMTI1MTY3LCAxMjUxNzEsIDEyNTE3NSwgMTI1MTc5LCAxMjUxODMsIAotICAgIDEyNTE4NywgMTI1MTkxLCAxMjUxOTUsIDEyNTE5OSwgMTI1MjAzLCAxMjUyMDcsIDEyNTIxMSwgMTI1MjE1LCAxMjUyMTksIAotICAgIDEyNTIyMywgMTI1MjI3LCAxMjUyMzEsIDEyNTIzNSwgMTI1MjM5LCAxMjUyNDMsIDEyNTI0NywgMTI1MjUxLCAxMjUyNTUsIAotICAgIDEyNTI1OSwgMTI1MjYzLCAxMjUyNjcsIDEyNTI3MSwgMTI1Mjc1LCAxMjUyNzksIDEyNTI4MywgMTI1Mjg3LCAxMjUyOTEsIAotICAgIDEyNTI5NSwgMTI1Mjk5LCAxMjUzMDMsIDEyNTMwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwOTY3LCAxMjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMDk4NSwgMTIwOTkyLCAxMjA5OTksIDEyMTAwNiwgMTIxMDEzLCAxMjEwMjAsIDEyMTAyNywgCisgICAgMTIxMDMzLCAxMjEwNDAsIDEyMTA0NywgMTIxMDU0LCAxMjEwNjIsIDEyMTA3MCwgMTIxMDc4LCAxMjEwODYsIDEyMTA5NCwgCisgICAgMTIxMTAyLCAxMjExMDksIDEyMTExNiwgMTIxMTIzLCAxMjExMzEsIDEyMTEzOSwgMTIxMTQ3LCAxMjExNTUsIDEyMTE2MywgCisgICAgMTIxMTcxLCAxMjExNzgsIDEyMTE4NSwgMTIxMTkyLCAxMjEyMDAsIDEyMTIwOCwgMTIxMjE2LCAxMjEyMjQsIDEyMTIzMiwgCisgICAgMTIxMjQwLCAxMjEyNDUsIDEyMTI1MCwgMTIxMjU1LCAxMjEyNjAsIDEyMTI2NSwgMTIxMjcwLCAxMjEyNzUsIDEyMTI4MCwgCisgICAgMTIxMjg1LCAwLCAwLCAwLCAwLCAxMjEyOTAsIDEyMTI5NSwgMTIxMjk5LCAxMjEzMDMsIDEyMTMwNywgMTIxMzExLCAKKyAgICAxMjEzMTUsIDEyMTMxOSwgMTIxMzIzLCAxMjEzMjcsIDEyMTMzMSwgMTIxMzM1LCAxMjEzMzksIDEyMTM0MywgMTIxMzQ3LCAKKyAgICAxMjEzNTEsIDEyMTM1NSwgMTIxMzU5LCAxMjEzNjMsIDEyMTM2NywgMTIxMzcxLCAxMjEzNzUsIDEyMTM3OSwgMTIxMzgzLCAKKyAgICAxMjEzODcsIDEyMTM5MSwgMTIxMzk1LCAxMjEzOTksIDEyMTQwMywgMTIxNDA3LCAxMjE0MTEsIDEyMTQxNSwgMTIxNDE5LCAKKyAgICAxMjE0MjMsIDEyMTQyNywgMTIxNDMxLCAxMjE0MzUsIDEyMTQzOSwgMTIxNDQzLCAxMjE0NDcsIDEyMTQ1MSwgMTIxNDU1LCAKKyAgICAxMjE0NTksIDEyMTQ2MywgMTIxNDY3LCAxMjE0NzEsIDEyMTQ3NSwgMTIxNDc5LCAxMjE0ODMsIDEyMTQ4NywgMTIxNDkxLCAKKyAgICAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAKKyAgICAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAKKyAgICAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAKKyAgICAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAKKyAgICAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAKKyAgICAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyMTY5MiwgMTIxNjk4LCAxMjE3MDcsIDEyMTcxNSwgMTIxNzIzLCAxMjE3MzIsIDEyMTc0MSwgMTIxNzUwLCAxMjE3NTksIAorICAgIDEyMTc2OCwgMTIxNzc3LCAxMjE3ODYsIDEyMTc5NSwgMTIxODA0LCAxMjE4MTMsIDAsIDAsIDEyMTgyMiwgMTIxODMxLCAKKyAgICAxMjE4MzksIDEyMTg0NywgMTIxODU2LCAxMjE4NjUsIDEyMTg3NCwgMTIxODgzLCAxMjE4OTIsIDEyMTkwMSwgMTIxOTEwLCAKKyAgICAxMjE5MTksIDEyMTkyOCwgMTIxOTM3LCAwLCAwLCAxMjE5NDYsIDEyMTk1NSwgMTIxOTYzLCAxMjE5NzEsIDEyMTk4MCwgCisgICAgMTIxOTg5LCAxMjE5OTgsIDEyMjAwNywgMTIyMDE2LCAxMjIwMjUsIDEyMjAzNCwgMTIyMDQzLCAxMjIwNTIsIDEyMjA2MSwgCisgICAgMTIyMDcwLCAwLCAxMjIwNzcsIDEyMjA4NiwgMTIyMDk0LCAxMjIxMDIsIDEyMjExMSwgMTIyMTIwLCAxMjIxMjksIAorICAgIDEyMjEzOCwgMTIyMTQ3LCAxMjIxNTYsIDEyMjE2NSwgMTIyMTc0LCAxMjIxODMsIDEyMjE5MiwgMTIyMjAxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjIyMDgsIDEyMjIxNSwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzcsIAorICAgIDEyMjI0MiwgMTIyMjQ3LCAxMjIyNTIsIDEyMjI1NywgMCwgMCwgMCwgMCwgMCwgMTIyMjYyLCAxMjIyNjcsIDEyMjI3MywgCisgICAgMTIyMjc5LCAxMjIyODUsIDEyMjI5MCwgMTIyMjk2LCAxMjIzMDIsIDEyMjMwOCwgMTIyMzEzLCAxMjIzMTksIDEyMjMyNSwgCisgICAgMTIyMzMwLCAxMjIzMzUsIDEyMjM0MSwgMTIyMzQ2LCAxMjIzNTIsIDEyMjM1OCwgMTIyMzYzLCAxMjIzNjksIDEyMjM3NSwgCisgICAgMTIyMzgwLCAxMjIzODYsIDEyMjM5MiwgMTIyMzk4LCAxMjI0MDQsIDEyMjQxMCwgMTIyNDIxLCAxMjI0MjgsIDEyMjQzNCwgCisgICAgMTIyNDM3LCAwLCAxMjI0NDAsIDEyMjQ0NSwgMTIyNDUxLCAxMjI0NTcsIDEyMjQ2MywgMTIyNDY4LCAxMjI0NzQsIAorICAgIDEyMjQ4MCwgMTIyNDg2LCAxMjI0OTEsIDEyMjQ5NywgMTIyNTAzLCAxMjI1MDgsIDEyMjUxMywgMTIyNTE5LCAxMjI1MjQsIAorICAgIDEyMjUzMCwgMTIyNTM2LCAxMjI1NDEsIDEyMjU0NywgMTIyNTUzLCAxMjI1NTgsIDEyMjU2NCwgMTIyNTcwLCAxMjI1NzYsIAorICAgIDEyMjU4MiwgMTIyNTg4LCAxMjI1OTEsIDEyMjU5NCwgMTIyNTk3LCAxMjI2MDAsIDEyMjYwMywgMTIyNjA2LCAxMjI2MTIsIAorICAgIDEyMjYxOSwgMTIyNjI2LCAxMjI2MzMsIDEyMjYzOSwgMTIyNjQ2LCAxMjI2NTMsIDEyMjY2MCwgMTIyNjY2LCAxMjI2NzMsIAorICAgIDEyMjY4MCwgMTIyNjg2LCAxMjI2OTIsIDEyMjY5OSwgMTIyNzA1LCAxMjI3MTIsIDEyMjcxOSwgMTIyNzI1LCAxMjI3MzIsIAorICAgIDEyMjczOSwgMTIyNzQ1LCAxMjI3NTIsIDEyMjc1OSwgMTIyNzY2LCAxMjI3NzMsIDEyMjc4MCwgMTIyNzg1LCAwLCAwLCAwLCAKKyAgICAwLCAxMjI3OTAsIDEyMjc5NiwgMTIyODAzLCAxMjI4MTAsIDEyMjgxNywgMTIyODIzLCAxMjI4MzAsIDEyMjgzNywgCisgICAgMTIyODQ0LCAxMjI4NTAsIDEyMjg1NywgMTIyODY0LCAxMjI4NzAsIDEyMjg3NiwgMTIyODgzLCAxMjI4ODksIDEyMjg5NiwgCisgICAgMTIyOTAzLCAxMjI5MDksIDEyMjkxNiwgMTIyOTIzLCAxMjI5MjksIDEyMjkzNiwgMTIyOTQzLCAxMjI5NTAsIDEyMjk1NywgCisgICAgMTIyOTY0LCAxMjI5NzMsIDEyMjk3NywgMTIyOTgwLCAxMjI5ODMsIDEyMjk4NywgMTIyOTkxLCAxMjI5OTQsIDEyMjk5NywgCisgICAgMTIzMDAwLCAxMjMwMDMsIDEyMzAwNiwgMTIzMDA5LCAxMjMwMTIsIDEyMzAxNSwgMTIzMDE4LCAxMjMwMjQsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTMxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MzE1LCAKLSAgICAxMjUzMTgsIDEyNTMyMiwgMTI1MzI2LCAxMjUzMjksIDEyNTMzMywgMTI1MzM3LCAxMjUzNDAsIDEyNTM0MywgMTI1MzQ3LCAKLSAgICAxMjUzNTEsIDEyNTM1NCwgMTI1MzU3LCAxMjUzNjAsIDEyNTM2MywgMTI1MzY4LCAxMjUzNzEsIDEyNTM3NSwgMTI1Mzc4LCAKLSAgICAxMjUzODEsIDEyNTM4NCwgMTI1Mzg3LCAxMjUzOTAsIDEyNTM5MywgMTI1Mzk2LCAxMjUzOTksIDEyNTQwMiwgMTI1NDA1LCAKLSAgICAxMjU0MDgsIDEyNTQxMiwgMTI1NDE2LCAxMjU0MjAsIDEyNTQyNCwgMTI1NDI5LCAxMjU0MzQsIDEyNTQ0MCwgMTI1NDQ2LCAKLSAgICAxMjU0NTIsIDEyNTQ1NywgMTI1NDYzLCAxMjU0NjksIDEyNTQ3NSwgMTI1NDgwLCAxMjU0ODYsIDEyNTQ5MiwgMTI1NDk3LCAKLSAgICAxMjU1MDIsIDEyNTUwNywgMTI1NTEyLCAxMjU1MTgsIDEyNTUyNCwgMTI1NTI5LCAxMjU1MzQsIDEyNTU0MCwgMTI1NTQ1LCAKLSAgICAxMjU1NTEsIDEyNTU1NywgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgMTI1NTc5LCAxMjU1ODQsIDEyNTU4OCwgMTI1NTkzLCAKLSAgICAxMjU1OTcsIDEyNTYwMiwgMTI1NjA3LCAxMjU2MTMsIDEyNTYxOSwgMTI1NjI1LCAxMjU2MzAsIDEyNTYzNiwgMTI1NjQyLCAKLSAgICAxMjU2NDgsIDEyNTY1MywgMTI1NjU5LCAxMjU2NjUsIDEyNTY3MCwgMTI1Njc1LCAxMjU2ODAsIDEyNTY4NSwgMTI1NjkxLCAKLSAgICAxMjU2OTcsIDEyNTcwMiwgMTI1NzA3LCAxMjU3MTMsIDEyNTcxOCwgMTI1NzI0LCAxMjU3MzAsIDEyNTczNiwgMTI1NzQyLCAKLSAgICAxMjU3NDgsIDEyNTc1MywgMTI1NzU3LCAxMjU3NjIsIDEyNTc2NSwgMTI1NzY5LCAxMjU3NzIsIDEyNTc3NSwgMTI1Nzc4LCAKLSAgICAxMjU3ODEsIDEyNTc4NCwgMTI1Nzg3LCAxMjU3OTAsIDEyNTc5MywgMTI1Nzk2LCAxMjU3OTksIDEyNTgwMiwgMTI1ODA1LCAKLSAgICAxMjU4MDgsIDEyNTgxMSwgMTI1ODE0LCAxMjU4MTcsIDEyNTgyMCwgMTI1ODIzLCAxMjU4MjYsIDEyNTgyOSwgMTI1ODMyLCAKLSAgICAxMjU4MzUsIDEyNTgzOCwgMTI1ODQxLCAxMjU4NDQsIDEyNTg0NywgMTI1ODUwLCAxMjU4NTMsIDEyNTg1NiwgMTI1ODU5LCAKLSAgICAxMjU4NjIsIDEyNTg2NSwgMTI1ODY4LCAxMjU4NzEsIDEyNTg3NCwgMTI1ODc3LCAxMjU4ODAsIDEyNTg4MywgMTI1ODg2LCAKLSAgICAxMjU4ODksIDEyNTg5MiwgMTI1ODk1LCAxMjU4OTgsIDEyNTkwMSwgMTI1OTA0LCAxMjU5MDcsIDEyNTkxMCwgMTI1OTEzLCAKLSAgICAxMjU5MTYsIDEyNTkxOSwgMTI1OTIyLCAxMjU5MjUsIDEyNTkyOCwgMTI1OTMxLCAxMjU5MzQsIDEyNTkzNywgMTI1OTQwLCAKLSAgICAxMjU5NDMsIDEyNTk0NiwgMTI1OTQ5LCAxMjU5NTIsIDEyNTk1NSwgMTI1OTU4LCAxMjU5NjEsIDEyNTk2NCwgMTI1OTY3LCAKLSAgICAxMjU5NzAsIDEyNTk3MywgMTI1OTc2LCAxMjU5NzksIDEyNTk4MiwgMTI1OTg1LCAxMjU5ODgsIDEyNTk5MSwgMTI1OTk0LCAKLSAgICAxMjU5OTcsIDEyNjAwMCwgMTI2MDAzLCAxMjYwMDYsIDEyNjAwOSwgMTI2MDEyLCAxMjYwMTUsIDEyNjAxOCwgMTI2MDIxLCAKLSAgICAxMjYwMjQsIDEyNjAyNywgMTI2MDMwLCAxMjYwMzMsIDEyNjAzNiwgMTI2MDM5LCAxMjYwNDIsIDEyNjA0NSwgMTI2MDQ4LCAKLSAgICAxMjYwNTEsIDEyNjA1NCwgMTI2MDU3LCAxMjYwNjAsIDEyNjA2MywgMTI2MDY2LCAxMjYwNjksIDEyNjA3MiwgMTI2MDc1LCAKLSAgICAxMjYwNzgsIDEyNjA4MSwgMTI2MDg0LCAxMjYwODcsIDEyNjA5MCwgMTI2MDkzLCAxMjYwOTYsIDEyNjA5OSwgMTI2MTAyLCAKLSAgICAxMjYxMDUsIDEyNjEwOCwgMTI2MTExLCAxMjYxMTQsIDEyNjExNywgMTI2MTIwLCAxMjYxMjMsIDEyNjEyNiwgMTI2MTI5LCAKLSAgICAxMjYxMzIsIDEyNjEzNSwgMTI2MTM4LCAxMjYxNDEsIDEyNjE0NCwgMTI2MTQ3LCAxMjYxNTAsIDEyNjE1MywgMTI2MTU2LCAKLSAgICAxMjYxNTksIDEyNjE2MiwgMTI2MTY1LCAxMjYxNjgsIDEyNjE3MSwgMTI2MTc0LCAxMjYxNzcsIDEyNjE4MCwgMTI2MTgzLCAKLSAgICAxMjYxODYsIDEyNjE4OSwgMTI2MTkyLCAxMjYxOTUsIDEyNjE5OCwgMTI2MjAxLCAxMjYyMDQsIDEyNjIwNywgMTI2MjEwLCAKLSAgICAxMjYyMTMsIDEyNjIxNiwgMTI2MjE5LCAxMjYyMjIsIDEyNjIyNSwgMTI2MjI4LCAxMjYyMzEsIDEyNjIzNCwgMTI2MjM3LCAKLSAgICAxMjYyNDAsIDEyNjI0MywgMTI2MjQ2LCAxMjYyNDksIDEyNjI1MiwgMTI2MjU1LCAxMjYyNTgsIDEyNjI2MSwgMTI2MjY0LCAKLSAgICAxMjYyNjcsIDEyNjI3MCwgMTI2MjczLCAxMjYyNzYsIDEyNjI3OSwgMTI2MjgyLCAxMjYyODUsIDEyNjI4OCwgMTI2MjkxLCAKLSAgICAxMjYyOTQsIDEyNjI5NywgMTI2MzAwLCAxMjYzMDMsIDEyNjMwNiwgMTI2MzA5LCAxMjYzMTIsIDEyNjMxNSwgMTI2MzE4LCAKLSAgICAxMjYzMjEsIDEyNjMyNCwgMTI2MzI3LCAxMjYzMzAsIDEyNjMzMywgMTI2MzM2LCAxMjYzMzksIDEyNjM0MiwgMTI2MzQ1LCAKLSAgICAxMjYzNDgsIDEyNjM1MSwgMTI2MzU0LCAxMjYzNTcsIDEyNjM2MCwgMTI2MzYzLCAxMjYzNjYsIDEyNjM2OSwgMTI2MzcyLCAKLSAgICAxMjYzNzUsIDEyNjM3OCwgMTI2MzgxLCAxMjYzODQsIDEyNjM4NywgMTI2MzkwLCAxMjYzOTMsIDEyNjM5NiwgMTI2Mzk5LCAKLSAgICAxMjY0MDIsIDEyNjQwNSwgMTI2NDA4LCAxMjY0MTEsIDEyNjQxNCwgMTI2NDE3LCAxMjY0MjAsIDEyNjQyMywgMTI2NDI2LCAKLSAgICAxMjY0MjksIDEyNjQzMiwgMTI2NDM1LCAxMjY0MzgsIDEyNjQ0MSwgMTI2NDQ0LCAxMjY0NDcsIDEyNjQ1MCwgMTI2NDUzLCAKLSAgICAxMjY0NTYsIDEyNjQ1OSwgMTI2NDYyLCAxMjY0NjUsIDEyNjQ2OCwgMTI2NDcxLCAxMjY0NzQsIDEyNjQ3NywgMTI2NDgwLCAKLSAgICAxMjY0ODMsIDEyNjQ4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIzMDI3LCAxMjMwMzQsIDEyMzA0MiwgMTIzMDUwLCAxMjMwNTgsIDEyMzA2NSwgMTIzMDczLCAxMjMwODEsIDEyMzA4OSwgCisgICAgMTIzMDk2LCAxMjMxMDQsIDEyMzExMiwgMTIzMTE5LCAxMjMxMjYsIDEyMzEzNCwgMTIzMTQxLCAxMjMxNDksIDEyMzE1NywgCisgICAgMTIzMTY0LCAxMjMxNzIsIDEyMzE4MCwgMTIzMTg3LCAxMjMxOTUsIDEyMzIwMywgMTIzMjExLCAxMjMyMTksIDEyMzIyNywgCisgICAgMTIzMjMxLCAxMjMyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzIzOCwgMTIzMjQ0LCAKKyAgICAxMjMyNTAsIDEyMzI1NiwgMTIzMjYwLCAxMjMyNjYsIDEyMzI3MiwgMTIzMjc4LCAxMjMyODQsIDEyMzI5MCwgMTIzMjk2LCAKKyAgICAxMjMzMDIsIDEyMzMwOCwgMTIzMzE0LCAxMjMzMjAsIDEyMzMyNiwgMTIzMzMyLCAxMjMzMzgsIDEyMzM0NCwgMTIzMzUwLCAKKyAgICAxMjMzNTYsIDEyMzM2MiwgMTIzMzY4LCAxMjMzNzQsIDEyMzM4MCwgMTIzMzg2LCAxMjMzOTIsIDEyMzM5OCwgMTIzNDA0LCAKKyAgICAxMjM0MTAsIDEyMzQxNiwgMTIzNDIyLCAxMjM0MjgsIDEyMzQzNCwgMTIzNDQwLCAxMjM0NDYsIDEyMzQ1MiwgMTIzNDU4LCAKKyAgICAxMjM0NjQsIDEyMzQ3MCwgMTIzNDc2LCAxMjM0ODIsIDEyMzQ4OCwgMCwgMCwgMCwgMCwgMCwgMTIzNDk0LCAxMjM1MDUsIAorICAgIDEyMzUxNiwgMTIzNTI3LCAxMjM1MzgsIDEyMzU0OSwgMTIzNTYwLCAxMjM1NzEsIDEyMzU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTIzNTkzLCAxMjM1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMzYwMSwgMTIzNjAzLCAxMjM2MDUsIDEyMzYwOSwgMTIzNjE0LCAxMjM2MTksIDEyMzYyMSwgCisgICAgMTIzNjI3LCAxMjM2MzIsIDEyMzYzNCwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0NiwgMTIzNjUwLCAxMjM2NTYsIDEyMzY2MiwgCisgICAgMTIzNjY4LCAxMjM2NzMsIDEyMzY3NywgMTIzNjg0LCAxMjM2OTEsIDEyMzY5OCwgMTIzNzAzLCAxMjM3MTAsIDEyMzcxNywgCisgICAgMTIzNzI0LCAxMjM3MjgsIDEyMzczNCwgMTIzNzQzLCAxMjM3NTIsIDEyMzc1OSwgMTIzNzY0LCAxMjM3NjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzc3MiwgMTIzNzc0LCAxMjM3NzYsIDEyMzc4MCwgCisgICAgMTIzNzg0LCAxMjM3ODgsIDAsIDEyMzc5MCwgMTIzNzkyLCAxMjM3OTYsIDEyMzc5OCwgMTIzODAwLCAxMjM4MDIsIAorICAgIDEyMzgwNCwgMTIzODA5LCAxMjM4MTQsIDEyMzgxNiwgMTIzODIyLCAxMjM4MjYsIDEyMzgzMCwgMTIzODM4LCAxMjM4NDAsIAorICAgIDEyMzg0MiwgMTIzODQ0LCAxMjM4NDYsIDEyMzg0OCwgMTIzODUwLCAxMjM4NTIsIDEyMzg1NCwgMTIzODU2LCAxMjM4NTgsIAorICAgIDEyMzg2MiwgMTIzODY2LCAxMjM4NjgsIDEyMzg3MCwgMTIzODcyLCAxMjM4NzQsIDEyMzg3NiwgMTIzODgxLCAxMjM4ODcsIAorICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNCwgMTIzOTE2LCAxMjM5MjAsIAorICAgIDEyMzkyNiwgMTIzOTI4LCAxMjM5MzAsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDUsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAorICAgIDEyMzk2MSwgMTIzOTYzLCAxMjM5NjYsIDEyMzk2OCwgMTIzOTcwLCAxMjM5NzIsIDEyMzk3NiwgMTIzOTc4LCAxMjM5ODIsIAorICAgIDEyMzk4NywgMTIzOTg5LCAxMjM5OTQsIDEyNDAwMCwgMTI0MDA3LCAxMjQwMTEsIDEyNDAxNSwgMTI0MDE5LCAxMjQwMjMsIAorICAgIDEyNDAyOSwgMCwgMCwgMCwgMTI0MDMzLCAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDUsIDEyNDA0OSwgMTI0MDUzLCAKKyAgICAxMjQwNTUsIDEyNDA1OSwgMTI0MDYxLCAxMjQwNjUsIDEyNDA2OSwgMTI0MDczLCAxMjQwNzcsIDEyNDA4MSwgMTI0MDg1LCAKKyAgICAxMjQwODksIDEyNDA5MywgMTI0MDk5LCAxMjQxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTI2LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM0LCAxMjQxMzYsIAorICAgIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MCwgMTI0MTU0LCAxMjQxNTgsIDEyNDE2MiwgMTI0MTY2LCAxMjQxNzAsIAorICAgIDEyNDE3MiwgMTI0MTc2LCAxMjQxNzgsIDEyNDE4NCwgMTI0MTg3LCAxMjQxOTIsIDEyNDE5NCwgMTI0MTk2LCAxMjQxOTksIAorICAgIDEyNDIwMSwgMTI0MjAzLCAxMjQyMDYsIDEyNDIxMywgMTI0MjIwLCAxMjQyMjcsIDEyNDIzMiwgMTI0MjM2LCAxMjQyMzgsIAorICAgIDEyNDI0MCwgMCwgMTI0MjQyLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDI1OCwgMTI0MjYyLCAxMjQyNjcsIDEyNDI3MSwgCisgICAgMTI0Mjc3LCAxMjQyODMsIDEyNDI4NSwgMTI0Mjg3LCAxMjQyOTMsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDMsIDEyNDMwNSwgCisgICAgMTI0MzA5LCAxMjQzMTEsIDEyNDMxNSwgMTI0MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjQzMjMsIDEyNDMyNSwgMTI0MzI3LCAxMjQzMjksIDEyNDMzMywgMTI0MzM1LCAxMjQzMzcsIDEyNDMzOSwgCisgICAgMTI0MzQxLCAxMjQzNDMsIDEyNDM0NSwgMTI0MzQ3LCAxMjQzNDksIDEyNDM1MSwgMTI0MzUzLCAxMjQzNTUsIDEyNDM1NywgCisgICAgMTI0MzU5LCAxMjQzNjEsIDEyNDM2MywgMTI0MzY1LCAxMjQzNjcsIDEyNDM2OSwgMTI0MzcxLCAxMjQzNzMsIDEyNDM3NSwgCisgICAgMTI0Mzc3LCAxMjQzODEsIDEyNDM4MywgMTI0Mzg1LCAxMjQzODcsIDEyNDM5MSwgMTI0MzkzLCAxMjQzOTcsIDEyNDM5OSwgCisgICAgMTI0NDAxLCAxMjQ0MDUsIDEyNDQwOSwgMTI0NDE1LCAxMjQ0MTcsIDEyNDQxOSwgMTI0NDIxLCAxMjQ0MjMsIDEyNDQyNywgCisgICAgMTI0NDMxLCAxMjQ0MzMsIDEyNDQzNywgMTI0NDQxLCAxMjQ0NDUsIDEyNDQ0OSwgMTI0NDUzLCAxMjQ0NTcsIDEyNDQ2MSwgCisgICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCisgICAgMTI0NTAxLCAwLCAxMjQ1MDUsIDAsIDEyNDUwNywgMTI0NTA5LCAxMjQ1MTEsIDEyNDUxMywgMTI0NTE1LCAxMjQ1MjMsIAorICAgIDEyNDUzMSwgMTI0NTM5LCAxMjQ1NDcsIDEyNDU1MiwgMTI0NTU3LCAxMjQ1NjIsIDEyNDU2NiwgMTI0NTcwLCAxMjQ1NzUsIAorICAgIDEyNDU3OSwgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4NywgMTI0NTg5LCAxMjQ1OTEsIDEyNDU5MywgMTI0NTk1LCAxMjQ1OTcsIAorICAgIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDUsIDEyNDYwNywgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIAorICAgIDEyNDYyOSwgMTI0NjMxLCAxMjQ2MzcsIDEyNDY0MywgMTI0NjQ1LCAxMjQ2NDcsIDEyNDY0OSwgMTI0NjUxLCAxMjQ2NTMsIAorICAgIDEyNDY2MiwgMTI0NjY5LCAxMjQ2NzYsIDEyNDY4MCwgMTI0Njg3LCAxMjQ2OTIsIDEyNDY5OSwgMTI0NzA4LCAxMjQ3MTMsIAorICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjMsIDEyNDcyNywgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzM5LCAxMjQ3NDMsIAorICAgIDEyNDc0NywgMTI0NzUxLCAxMjQ3NTMsIDEyNDc1NSwgMTI0NzYxLCAxMjQ3NjMsIDEyNDc2NSwgMTI0NzY3LCAxMjQ3NzEsIAorICAgIDEyNDc3NSwgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4MywgMTI0Nzg1LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk0LCAxMjQ3OTgsIAorICAgIDEyNDgwMCwgMTI0ODAyLCAxMjQ4MDcsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIAorICAgIDEyNDgzMiwgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTMsIDEyNDg1NywgMTI0ODYxLCAxMjQ4NzAsIAorICAgIDEyNDg3NSwgMTI0ODc4LCAxMjQ4ODAsIDEyNDg4MywgMTI0ODg2LCAxMjQ4OTEsIDEyNDg5MywgMTI0ODk2LCAxMjQ5MDEsIAorICAgIDEyNDkwNSwgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTE5LCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIAorICAgIDEyNDk0MCwgMTI0OTQ2LCAxMjQ5NTIsIDEyNDk1OCwgMTI0OTY0LCAxMjQ5NjksIDEyNDk4MCwgMTI0OTgyLCAxMjQ5ODYsIAorICAgIDEyNDk4OCwgMTI0OTkwLCAxMjQ5OTQsIDEyNDk5OCwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOSwgMTI1MDE0LCAxMjUwMjAsIAorICAgIDEyNTAyMiwgMTI1MDI2LCAxMjUwMzAsIDEyNTAzNywgMTI1MDQ0LCAxMjUwNDgsIDEyNTA1MCwgMTI1MDUyLCAxMjUwNTYsIAorICAgIDEyNTA1OCwgMTI1MDYyLCAxMjUwNjYsIDEyNTA3MCwgMTI1MDcyLCAxMjUwNzQsIDEyNTA4MSwgMTI1MDg1LCAxMjUwODgsIAorICAgIDEyNTA5MiwgMTI1MDk2LCAxMjUxMDAsIDEyNTEwMiwgMTI1MTA2LCAxMjUxMDgsIDEyNTExMCwgMTI1MTE0LCAxMjUxMTYsIAorICAgIDEyNTEyMCwgMTI1MTI0LCAxMjUxMzAsIDEyNTEzNCwgMTI1MTM4LCAxMjUxNDIsIDEyNTE0NCwgMTI1MTQ3LCAxMjUxNTEsIAorICAgIDEyNTE1OCwgMTI1MTY3LCAxMjUxNzYsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTQsIDEyNTE5OCwgMTI1MjAwLCAxMjUyMDQsIAorICAgIDEyNTIxNSwgMTI1MjE5LCAxMjUyMjUsIDEyNTIzMSwgMTI1MjM2LCAwLCAxMjUyMzgsIDEyNTI0MiwgMTI1MjQ0LCAKKyAgICAxMjUyNDYsIDAsIDAsIDAsIDEyNTI0OCwgMTI1MjUzLCAxMjUyNjMsIDEyNTI3OCwgMTI1MjkwLCAxMjUzMDIsIDEyNTMwNiwgCisgICAgMTI1MzEwLCAxMjUzMTYsIDEyNTMxOCwgMTI1MzI2LCAxMjUzMzQsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgCisgICAgMTI1MzU5LCAxMjUzNjYsIDEyNTM2OCwgMTI1MzcwLCAxMjUzNzMsIDEyNTM3NSwgMTI1MzgxLCAxMjUzODMsIDEyNTM4NiwgCisgICAgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDEzLCAxMjU0MTksIDEyNTQyNiwgMTI1NDM0LCAxMjU0MzgsIDEyNTQ0NiwgCisgICAgMTI1NDU0LCAxMjU0NjAsIDEyNTQ2NiwgMTI1NDczLCAxMjU0NzUsIDEyNTQ3OSwgMTI1NDgxLCAxMjU0ODMsIDEyNTQ4OCwgCisgICAgMTI1NDkwLCAxMjU0OTIsIDEyNTQ5NCwgMTI1NDk2LCAxMjU1MDAsIDEyNTUxMSwgMTI1NTE3LCAxMjU1MjEsIDEyNTUyNSwgCisgICAgMTI1NTI5LCAxMjU1MzUsIDEyNTU0MSwgMTI1NTQ3LCAxMjU1NTMsIDEyNTU1OCwgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgCisgICAgMTI1NTgyLCAwLCAwLCAxMjU1ODksIDEyNTU5NCwgMTI1NjAyLCAxMjU2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyNTYxNSwgMTI1NjIyLCAxMjU2MjksIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY2MCwgMTI1NjY4LCAKKyAgICAxMjU2NzYsIDEyNTY4NCwgMTI1NjkyLCAxMjU3MDAsIDEyNTcwOCwgMTI1NzE0LCAxMjU3MjAsIDEyNTcyNiwgMTI1NzMyLCAKKyAgICAxMjU3MzgsIDEyNTc0NCwgMTI1NzUwLCAxMjU3NTYsIDEyNTc2MiwgMTI1NzY4LCAxMjU3NzQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTc4MCwgCisgICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MywgMTI1Nzk4LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODEzLCAxMjU4MjEsIDEyNTgyOSwgCisgICAgMTI1ODQyLCAxMjU4NTUsIDEyNTg2OCwgMTI1ODc1LCAxMjU4ODIsIDEyNTg4NiwgMTI1ODk1LCAxMjU5MDMsIDEyNTkwNywgCisgICAgMTI1OTE2LCAxMjU5MjMsIDEyNTkyNywgMTI1OTMxLCAxMjU5MzUsIDEyNTkzOSwgMTI1OTQ2LCAxMjU5NTAsIDEyNTk1NCwgCisgICAgMTI1OTU4LCAxMjU5NjIsIDEyNTk2OSwgMTI1OTc4LCAxMjU5ODcsIDEyNTk5NCwgMTI2MDA2LCAxMjYwMTgsIDEyNjAyMiwgCisgICAgMTI2MDI2LCAxMjYwMzAsIDEyNjAzNCwgMTI2MDM4LCAxMjYwNDIsIDEyNjA1MCwgMTI2MDU4LCAxMjYwNjYsIDEyNjA3MCwgCisgICAgMTI2MDc0LCAxMjYwNzgsIDEyNjA4MiwgMTI2MDg2LCAxMjYwOTAsIDEyNjA5NiwgMTI2MTAyLCAxMjYxMDYsIDEyNjExNywgCisgICAgMTI2MTI1LCAxMjYxMjksIDEyNjEzMywgMTI2MTM3LCAxMjYxNDEsIDEyNjE0NywgMTI2MTU0LCAxMjYxNjUsIDEyNjE3NSwgCisgICAgMTI2MTg1LCAxMjYxOTYsIDEyNjIwNSwgMTI2MjE2LCAxMjYyMjIsIDEyNjIyOCwgMCwgMCwgMCwgMCwgMTI2MjM0LCAKKyAgICAxMjYyNDMsIDEyNjI1MCwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzcsIDEyNjI4OSwgMTI2MjkzLCAKKyAgICAxMjYzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyNjMwNywgMTI2MzA5LCAxMjYzMTEsIDEyNjMxNSwgMTI2MzE5LCAxMjYzMjMsIDEyNjMzMiwgMTI2MzM0LCAKKyAgICAxMjYzMzYsIDEyNjMzOSwgMTI2MzQxLCAxMjYzNDMsIDEyNjM0NywgMTI2MzQ5LCAxMjYzNTMsIDEyNjM1NSwgMTI2MzU5LCAKKyAgICAxMjYzNjEsIDEyNjM2MywgMTI2MzY3LCAxMjYzNzEsIDEyNjM3NywgMTI2Mzc5LCAxMjYzODMsIDEyNjM4NSwgMTI2Mzg5LCAKKyAgICAxMjYzOTMsIDEyNjM5NywgMTI2NDAxLCAxMjY0MDMsIDEyNjQwNSwgMTI2NDA5LCAxMjY0MTMsIDEyNjQxNywgMTI2NDIxLCAKKyAgICAxMjY0MjMsIDEyNjQyNSwgMTI2NDI3LCAxMjY0MzIsIDEyNjQzNywgMTI2NDQwLCAxMjY0NDgsIDEyNjQ1NiwgMTI2NDU4LCAKKyAgICAxMjY0NjMsIDEyNjQ2NiwgMTI2NDcxLCAxMjY0ODIsIDEyNjQ4OSwgMTI2NDk0LCAxMjY0OTksIDEyNjUwMSwgMTI2NTA1LCAKKyAgICAxMjY1MDcsIDEyNjUxMSwgMTI2NTEzLCAxMjY1MTcsIDEyNjUyMSwgMTI2NTI0LCAxMjY1MjcsIDEyNjUyOSwgMTI2NTMyLCAKKyAgICAxMjY1MzQsIDEyNjUzOCwgMTI2NTQwLCAxMjY1NDIsIDEyNjU0NCwgMTI2NTQ4LCAxMjY1NTAsIDEyNjU1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2NTU3LCAxMjY1NjIsIDEyNjU2NywgMTI2NTcyLCAxMjY1NzcsIDEyNjU4MiwgCisgICAgMTI2NTg3LCAxMjY1OTQsIDEyNjYwMSwgMTI2NjA4LCAxMjY2MTUsIDEyNjYyMCwgMTI2NjI1LCAxMjY2MzAsIDEyNjYzNSwgCisgICAgMTI2NjQyLCAxMjY2NDgsIDEyNjY1NSwgMTI2NjYyLCAxMjY2NjksIDEyNjY3NCwgMTI2Njc5LCAxMjY2ODQsIDEyNjY4OSwgCisgICAgMTI2Njk0LCAxMjY3MDEsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyNSwgMTI2NzMyLCAxMjY3NDAsIDEyNjc0OCwgCisgICAgMTI2NzU1LCAxMjY3NjIsIDEyNjc3MCwgMTI2Nzc4LCAxMjY3ODYsIDEyNjc5MywgMTI2ODAzLCAxMjY4MTQsIDEyNjgxOSwgCisgICAgMTI2ODI2LCAxMjY4MzMsIDEyNjg0MCwgMTI2ODQ4LCAxMjY4NTYsIDEyNjg2NywgMTI2ODc1LCAxMjY4ODMsIDEyNjg5MSwgCisgICAgMTI2ODk2LCAxMjY5MDEsIDEyNjkwNiwgMTI2OTExLCAxMjY5MTYsIDEyNjkyMSwgMTI2OTI2LCAxMjY5MzEsIDEyNjkzNiwgCisgICAgMTI2OTQxLCAxMjY5NDYsIDEyNjk1MSwgMTI2OTU4LCAxMjY5NjMsIDEyNjk2OCwgMTI2OTc1LCAxMjY5ODAsIDEyNjk4NSwgCisgICAgMTI2OTkwLCAxMjY5OTUsIDEyNzAwMCwgMTI3MDA1LCAxMjcwMTAsIDEyNzAxNSwgMTI3MDIwLCAxMjcwMjUsIDEyNzAzMCwgCisgICAgMTI3MDM1LCAxMjcwNDIsIDEyNzA1MCwgMTI3MDU1LCAxMjcwNjAsIDEyNzA2NywgMTI3MDcyLCAxMjcwNzcsIDEyNzA4MiwgCisgICAgMTI3MDg5LCAxMjcwOTQsIDEyNzEwMSwgMTI3MTA2LCAxMjcxMTMsIDEyNzExOCwgMTI3MTI3LCAxMjcxMzYsIDEyNzE0MSwgCisgICAgMTI3MTQ2LCAxMjcxNTEsIDEyNzE1NiwgMTI3MTYxLCAxMjcxNjYsIDEyNzE3MSwgMTI3MTc2LCAxMjcxODEsIDEyNzE4NiwgCisgICAgMTI3MTkxLCAxMjcxOTYsIDEyNzIwMSwgMTI3MjA5LCAxMjcyMTcsIDEyNzIyMiwgMTI3MjI3LCAxMjcyMzIsIDEyNzIzNywgCisgICAgMTI3MjQyLCAxMjcyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI1NCwgMTI3MjU4LCAKKyAgICAxMjcyNjIsIDEyNzI2NiwgMTI3MjcwLCAxMjcyNzQsIDEyNzI3OCwgMTI3MjgyLCAxMjcyODYsIDEyNzI5MCwgMTI3Mjk0LCAKKyAgICAxMjcyOTgsIDEyNzMwMiwgMTI3MzA2LCAxMjczMTAsIDEyNzMxNCwgMTI3MzE4LCAxMjczMjIsIDEyNzMyNiwgMTI3MzMwLCAKKyAgICAxMjczMzQsIDEyNzMzOCwgMTI3MzQyLCAxMjczNDYsIDEyNzM1MCwgMTI3MzU0LCAxMjczNTgsIDEyNzM2MiwgMTI3MzY2LCAKKyAgICAxMjczNzAsIDEyNzM3NCwgMTI3Mzc4LCAxMjczODIsIDEyNzM4NiwgMTI3MzkwLCAxMjczOTQsIDEyNzM5OCwgMTI3NDAyLCAKKyAgICAxMjc0MDYsIDEyNzQxMCwgMTI3NDE0LCAxMjc0MTgsIDEyNzQyMiwgMTI3NDI2LCAxMjc0MzAsIDEyNzQzNCwgMTI3NDM4LCAKKyAgICAxMjc0NDIsIDEyNzQ0NiwgMTI3NDUwLCAxMjc0NTQsIDEyNzQ1OCwgMTI3NDYyLCAxMjc0NjYsIDEyNzQ3MCwgMTI3NDc0LCAKKyAgICAxMjc0NzgsIDEyNzQ4MiwgMTI3NDg2LCAxMjc0OTAsIDEyNzQ5NCwgMTI3NDk4LCAxMjc1MDIsIDEyNzUwNiwgMTI3NTEwLCAKKyAgICAxMjc1MTQsIDEyNzUxOCwgMTI3NTIyLCAxMjc1MjYsIDEyNzUzMCwgMTI3NTM0LCAxMjc1MzgsIDEyNzU0MiwgMTI3NTQ2LCAKKyAgICAxMjc1NTAsIDEyNzU1NCwgMTI3NTU4LCAxMjc1NjIsIDEyNzU2NiwgMTI3NTcwLCAxMjc1NzQsIDEyNzU3OCwgMTI3NTgyLCAKKyAgICAxMjc1ODYsIDEyNzU5MCwgMTI3NTk0LCAxMjc1OTgsIDEyNzYwMiwgMTI3NjA2LCAxMjc2MTAsIDEyNzYxNCwgMTI3NjE4LCAKKyAgICAxMjc2MjIsIDEyNzYyNiwgMTI3NjMwLCAxMjc2MzQsIDEyNzYzOCwgMTI3NjQyLCAxMjc2NDYsIDEyNzY1MCwgMTI3NjU0LCAKKyAgICAxMjc2NTgsIDEyNzY2MiwgMTI3NjY2LCAxMjc2NzAsIDEyNzY3NCwgMTI3Njc4LCAxMjc2ODIsIDEyNzY4NiwgMTI3NjkwLCAKKyAgICAxMjc2OTQsIDEyNzY5OCwgMTI3NzAyLCAxMjc3MDYsIDEyNzcxMCwgMTI3NzE0LCAxMjc3MTgsIDEyNzcyMiwgMTI3NzI2LCAKKyAgICAxMjc3MzAsIDEyNzczNCwgMTI3NzM4LCAxMjc3NDIsIDEyNzc0NiwgMTI3NzUwLCAxMjc3NTQsIDEyNzc1OCwgMTI3NzYyLCAKKyAgICAxMjc3NjYsIDEyNzc3MCwgMTI3Nzc0LCAxMjc3NzgsIDEyNzc4MiwgMTI3Nzg2LCAxMjc3OTAsIDEyNzc5NCwgMTI3Nzk4LCAKKyAgICAxMjc4MDIsIDEyNzgwNiwgMTI3ODEwLCAxMjc4MTQsIDEyNzgxOCwgMTI3ODIyLCAxMjc4MjYsIDEyNzgzMCwgMTI3ODM0LCAKKyAgICAxMjc4MzgsIDEyNzg0MiwgMTI3ODQ2LCAxMjc4NTAsIDEyNzg1NCwgMTI3ODU4LCAxMjc4NjIsIDEyNzg2NiwgMTI3ODcwLCAKKyAgICAxMjc4NzQsIDEyNzg3OCwgMTI3ODgyLCAxMjc4ODYsIDEyNzg5MCwgMTI3ODk0LCAxMjc4OTgsIDEyNzkwMiwgMTI3OTA2LCAKKyAgICAxMjc5MTAsIDEyNzkxNCwgMTI3OTE4LCAxMjc5MjIsIDEyNzkyNiwgMTI3OTMwLCAxMjc5MzQsIDEyNzkzOCwgMTI3OTQyLCAKKyAgICAxMjc5NDYsIDEyNzk1MCwgMTI3OTU0LCAxMjc5NTgsIDEyNzk2MiwgMTI3OTY2LCAxMjc5NzAsIDEyNzk3NCwgMTI3OTc4LCAKKyAgICAxMjc5ODIsIDEyNzk4NiwgMTI3OTkwLCAxMjc5OTQsIDEyNzk5OCwgMTI4MDAyLCAxMjgwMDYsIDEyODAxMCwgMTI4MDE0LCAKKyAgICAxMjgwMTgsIDEyODAyMiwgMTI4MDI2LCAxMjgwMzAsIDEyODAzNCwgMTI4MDM4LCAxMjgwNDIsIDEyODA0NiwgMTI4MDUwLCAKKyAgICAxMjgwNTQsIDEyODA1OCwgMTI4MDYyLCAxMjgwNjYsIDEyODA3MCwgMTI4MDc0LCAxMjgwNzgsIDEyODA4MiwgMTI4MDg2LCAKKyAgICAxMjgwOTAsIDEyODA5NCwgMTI4MDk4LCAxMjgxMDIsIDEyODEwNiwgMTI4MTEwLCAxMjgxMTQsIDEyODExOCwgMTI4MTIyLCAKKyAgICAxMjgxMjYsIDEyODEzMCwgMTI4MTM0LCAxMjgxMzgsIDEyODE0MiwgMTI4MTQ2LCAxMjgxNTAsIDEyODE1NCwgMTI4MTU4LCAKKyAgICAxMjgxNjIsIDEyODE2NiwgMTI4MTcwLCAxMjgxNzQsIDEyODE3OCwgMTI4MTgyLCAxMjgxODYsIDEyODE5MCwgMTI4MTk0LCAKKyAgICAxMjgxOTgsIDEyODIwMiwgMTI4MjA2LCAxMjgyMTAsIDEyODIxNCwgMTI4MjE4LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMwLCAKKyAgICAxMjgyMzQsIDEyODIzOCwgMTI4MjQyLCAxMjgyNDYsIDEyODI1MCwgMTI4MjU0LCAxMjgyNTgsIDEyODI2MiwgMTI4MjY2LCAKKyAgICAxMjgyNzAsIDEyODI3NCwgMTI4Mjc4LCAxMjgyODIsIDEyODI4NiwgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAKKyAgICAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTgsIDEyODMyMiwgMTI4MzI2LCAxMjgzMzAsIDEyODMzNCwgMTI4MzM4LCAKKyAgICAxMjgzNDIsIDEyODM0NiwgMTI4MzUwLCAxMjgzNTQsIDEyODM1OCwgMTI4MzYyLCAxMjgzNjYsIDEyODM3MCwgMTI4Mzc0LCAKKyAgICAxMjgzNzgsIDEyODM4MiwgMTI4Mzg2LCAxMjgzOTAsIDEyODM5NCwgMTI4Mzk4LCAxMjg0MDIsIDEyODQwNiwgMTI4NDEwLCAKKyAgICAxMjg0MTQsIDEyODQxOCwgMTI4NDIyLCAxMjg0MjYsIDEyODQzMCwgMTI4NDM0LCAxMjg0MzgsIDEyODQ0MiwgMTI4NDQ2LCAKKyAgICAxMjg0NTAsIDEyODQ1NCwgMTI4NDU4LCAxMjg0NjIsIDEyODQ2NiwgMTI4NDcwLCAxMjg0NzQsIDEyODQ3OCwgMTI4NDgyLCAKKyAgICAxMjg0ODYsIDEyODQ5MCwgMTI4NDk0LCAxMjg0OTgsIDEyODUwMiwgMTI4NTA2LCAxMjg1MTAsIDEyODUxNCwgMTI4NTE4LCAKKyAgICAxMjg1MjIsIDEyODUyNiwgMTI4NTMwLCAxMjg1MzQsIDEyODUzOCwgMTI4NTQyLCAxMjg1NDYsIDEyODU1MCwgMTI4NTU0LCAKKyAgICAxMjg1NTgsIDEyODU2MiwgMTI4NTY2LCAxMjg1NzAsIDEyODU3NCwgMTI4NTc4LCAxMjg1ODIsIDEyODU4NiwgMTI4NTkwLCAKKyAgICAxMjg1OTQsIDEyODU5OCwgMTI4NjAyLCAxMjg2MDYsIDEyODYxMCwgMTI4NjE0LCAxMjg2MTgsIDEyODYyMiwgMTI4NjI2LCAKKyAgICAxMjg2MzAsIDEyODYzNCwgMTI4NjM4LCAxMjg2NDIsIDEyODY0NiwgMTI4NjUwLCAxMjg2NTQsIDEyODY1OCwgMTI4NjYyLCAKKyAgICAxMjg2NjYsIDEyODY3MCwgMTI4Njc0LCAxMjg2NzgsIDEyODY4MiwgMTI4Njg2LCAxMjg2OTAsIDEyODY5NCwgMTI4Njk4LCAKKyAgICAxMjg3MDIsIDEyODcwNiwgMTI4NzEwLCAxMjg3MTQsIDEyODcxOCwgMTI4NzIyLCAxMjg3MjYsIDEyODczMCwgMTI4NzM0LCAKKyAgICAxMjg3MzgsIDEyODc0MiwgMTI4NzQ2LCAxMjg3NTAsIDEyODc1NCwgMTI4NzU4LCAxMjg3NjIsIDEyODc2NiwgMTI4NzcwLCAKKyAgICAxMjg3NzQsIDEyODc3OCwgMTI4NzgyLCAxMjg3ODYsIDEyODc5MCwgMTI4Nzk0LCAxMjg3OTgsIDEyODgwMiwgMTI4ODA2LCAKKyAgICAxMjg4MTAsIDEyODgxNCwgMTI4ODE4LCAxMjg4MjIsIDEyODgyNiwgMTI4ODMwLCAxMjg4MzQsIDEyODgzOCwgMTI4ODQyLCAKKyAgICAxMjg4NDYsIDEyODg1MCwgMTI4ODU0LCAxMjg4NTgsIDEyODg2MiwgMTI4ODY2LCAxMjg4NzAsIDEyODg3NCwgMTI4ODc4LCAKKyAgICAxMjg4ODIsIDEyODg4NiwgMTI4ODkwLCAxMjg4OTQsIDEyODg5OCwgMTI4OTAyLCAxMjg5MDYsIDEyODkxMCwgMTI4OTE0LCAKKyAgICAxMjg5MTgsIDEyODkyMiwgMTI4OTI2LCAxMjg5MzAsIDEyODkzNCwgMTI4OTM4LCAxMjg5NDIsIDEyODk0NiwgMTI4OTUwLCAKKyAgICAxMjg5NTQsIDEyODk1OCwgMTI4OTYyLCAxMjg5NjYsIDEyODk3MCwgMTI4OTc0LCAxMjg5NzgsIDEyODk4MiwgMTI4OTg2LCAKKyAgICAxMjg5OTAsIDEyODk5NCwgMTI4OTk4LCAxMjkwMDIsIDEyOTAwNiwgMTI5MDEwLCAxMjkwMTQsIDEyOTAxOCwgMTI5MDIyLCAKKyAgICAxMjkwMjYsIDEyOTAzMCwgMTI5MDM0LCAxMjkwMzgsIDEyOTA0MiwgMTI5MDQ2LCAxMjkwNTAsIDEyOTA1NCwgMTI5MDU4LCAKKyAgICAxMjkwNjIsIDEyOTA2NiwgMTI5MDcwLCAxMjkwNzQsIDEyOTA3OCwgMTI5MDgyLCAxMjkwODYsIDEyOTA5MCwgMTI5MDk0LCAKKyAgICAxMjkwOTgsIDEyOTEwMiwgMTI5MTA2LCAxMjkxMTAsIDEyOTExNCwgMTI5MTE4LCAxMjkxMjIsIDEyOTEyNiwgMTI5MTMwLCAKKyAgICAxMjkxMzQsIDEyOTEzOCwgMTI5MTQyLCAxMjkxNDYsIDEyOTE1MCwgMTI5MTU0LCAxMjkxNTgsIDEyOTE2MiwgMTI5MTY2LCAKKyAgICAxMjkxNzAsIDEyOTE3NCwgMTI5MTc4LCAxMjkxODIsIDEyOTE4NiwgMTI5MTkwLCAxMjkxOTQsIDEyOTE5OCwgMTI5MjAyLCAKKyAgICAxMjkyMDYsIDEyOTIxMCwgMTI5MjE0LCAxMjkyMTgsIDEyOTIyMiwgMTI5MjI2LCAxMjkyMzAsIDEyOTIzNCwgMTI5MjM4LCAKKyAgICAxMjkyNDIsIDEyOTI0NiwgMTI5MjUwLCAxMjkyNTQsIDEyOTI1OCwgMTI5MjYyLCAxMjkyNjYsIDEyOTI3MCwgMTI5Mjc0LCAKKyAgICAxMjkyNzgsIDEyOTI4MiwgMTI5Mjg2LCAxMjkyOTAsIDEyOTI5NCwgMTI5Mjk4LCAxMjkzMDIsIDEyOTMwNiwgMTI5MzEwLCAKKyAgICAxMjkzMTQsIDEyOTMxOCwgMTI5MzIyLCAxMjkzMjYsIDEyOTMzMCwgMTI5MzM0LCAxMjkzMzgsIDEyOTM0MiwgMTI5MzQ2LCAKKyAgICAxMjkzNTAsIDEyOTM1NCwgMTI5MzU4LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcwLCAxMjkzNzQsIDEyOTM3OCwgMTI5MzgyLCAKKyAgICAxMjkzODYsIDEyOTM5MCwgMTI5Mzk0LCAxMjkzOTgsIDEyOTQwMiwgMTI5NDA2LCAxMjk0MTAsIDEyOTQxNCwgMTI5NDE4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMjk0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQyNiwgMTI5NDI5LCAxMjk0MzMsIDEyOTQzNywgMTI5NDQwLCAKKyAgICAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUxLCAxMjk0NTQsIDEyOTQ1OCwgMTI5NDYyLCAxMjk0NjUsIDEyOTQ2OCwgMTI5NDcxLCAKKyAgICAxMjk0NzQsIDEyOTQ3OSwgMTI5NDgyLCAxMjk0ODYsIDEyOTQ4OSwgMTI5NDkyLCAxMjk0OTUsIDEyOTQ5OCwgMTI5NTAxLCAKKyAgICAxMjk1MDQsIDEyOTUwNywgMTI5NTEwLCAxMjk1MTMsIDEyOTUxNiwgMTI5NTE5LCAxMjk1MjMsIDEyOTUyNywgMTI5NTMxLCAKKyAgICAxMjk1MzUsIDEyOTU0MCwgMTI5NTQ1LCAxMjk1NTEsIDEyOTU1NywgMTI5NTYzLCAxMjk1NjgsIDEyOTU3NCwgMTI5NTgwLCAKKyAgICAxMjk1ODYsIDEyOTU5MSwgMTI5NTk3LCAxMjk2MDMsIDEyOTYwOCwgMTI5NjEzLCAxMjk2MTksIDEyOTYyNCwgMTI5NjMwLCAKKyAgICAxMjk2MzYsIDEyOTY0MSwgMTI5NjQ3LCAxMjk2NTMsIDEyOTY1OCwgMTI5NjY0LCAxMjk2NzAsIDEyOTY3NiwgMTI5NjgyLCAKKyAgICAxMjk2ODgsIDEyOTY5MiwgMTI5Njk3LCAxMjk3MDEsIDEyOTcwNiwgMTI5NzEwLCAxMjk3MTUsIDEyOTcyMCwgMTI5NzI2LCAKKyAgICAxMjk3MzIsIDEyOTczOCwgMTI5NzQzLCAxMjk3NDksIDEyOTc1NSwgMTI5NzYxLCAxMjk3NjYsIDEyOTc3MiwgMTI5Nzc4LCAKKyAgICAxMjk3ODMsIDEyOTc4OCwgMTI5Nzk0LCAxMjk3OTksIDEyOTgwNSwgMTI5ODExLCAxMjk4MTYsIDEyOTgyMiwgMTI5ODI4LCAKKyAgICAxMjk4MzMsIDEyOTgzOSwgMTI5ODQ1LCAxMjk4NTEsIDEyOTg1NywgMTI5ODYzLCAxMjk4NjgsIDEyOTg3MiwgMTI5ODc3LCAKKyAgICAxMjk4NzksIDEyOTg4MywgMTI5ODg2LCAxMjk4ODksIDEyOTg5MiwgMTI5ODk1LCAxMjk4OTgsIDEyOTkwMSwgMTI5OTA0LCAKKyAgICAxMjk5MDcsIDEyOTkxMCwgMTI5OTEzLCAxMjk5MTYsIDEyOTkxOSwgMTI5OTIyLCAxMjk5MjUsIDEyOTkyOCwgMTI5OTMxLCAKKyAgICAxMjk5MzQsIDEyOTkzNywgMTI5OTQwLCAxMjk5NDMsIDEyOTk0NiwgMTI5OTQ5LCAxMjk5NTIsIDEyOTk1NSwgMTI5OTU4LCAKKyAgICAxMjk5NjEsIDEyOTk2NCwgMTI5OTY3LCAxMjk5NzAsIDEyOTk3MywgMTI5OTc2LCAxMjk5NzksIDEyOTk4MiwgMTI5OTg1LCAKKyAgICAxMjk5ODgsIDEyOTk5MSwgMTI5OTk0LCAxMjk5OTcsIDEzMDAwMCwgMTMwMDAzLCAxMzAwMDYsIDEzMDAwOSwgMTMwMDEyLCAKKyAgICAxMzAwMTUsIDEzMDAxOCwgMTMwMDIxLCAxMzAwMjQsIDEzMDAyNywgMTMwMDMwLCAxMzAwMzMsIDEzMDAzNiwgMTMwMDM5LCAKKyAgICAxMzAwNDIsIDEzMDA0NSwgMTMwMDQ4LCAxMzAwNTEsIDEzMDA1NCwgMTMwMDU3LCAxMzAwNjAsIDEzMDA2MywgMTMwMDY2LCAKKyAgICAxMzAwNjksIDEzMDA3MiwgMTMwMDc1LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg0LCAxMzAwODcsIDEzMDA5MCwgMTMwMDkzLCAKKyAgICAxMzAwOTYsIDEzMDA5OSwgMTMwMTAyLCAxMzAxMDUsIDEzMDEwOCwgMTMwMTExLCAxMzAxMTQsIDEzMDExNywgMTMwMTIwLCAKKyAgICAxMzAxMjMsIDEzMDEyNiwgMTMwMTI5LCAxMzAxMzIsIDEzMDEzNSwgMTMwMTM4LCAxMzAxNDEsIDEzMDE0NCwgMTMwMTQ3LCAKKyAgICAxMzAxNTAsIDEzMDE1MywgMTMwMTU2LCAxMzAxNTksIDEzMDE2MiwgMTMwMTY1LCAxMzAxNjgsIDEzMDE3MSwgMTMwMTc0LCAKKyAgICAxMzAxNzcsIDEzMDE4MCwgMTMwMTgzLCAxMzAxODYsIDEzMDE4OSwgMTMwMTkyLCAxMzAxOTUsIDEzMDE5OCwgMTMwMjAxLCAKKyAgICAxMzAyMDQsIDEzMDIwNywgMTMwMjEwLCAxMzAyMTMsIDEzMDIxNiwgMTMwMjE5LCAxMzAyMjIsIDEzMDIyNSwgMTMwMjI4LCAKKyAgICAxMzAyMzEsIDEzMDIzNCwgMTMwMjM3LCAxMzAyNDAsIDEzMDI0MywgMTMwMjQ2LCAxMzAyNDksIDEzMDI1MiwgMTMwMjU1LCAKKyAgICAxMzAyNTgsIDEzMDI2MSwgMTMwMjY0LCAxMzAyNjcsIDEzMDI3MCwgMTMwMjczLCAxMzAyNzYsIDEzMDI3OSwgMTMwMjgyLCAKKyAgICAxMzAyODUsIDEzMDI4OCwgMTMwMjkxLCAxMzAyOTQsIDEzMDI5NywgMTMwMzAwLCAxMzAzMDMsIDEzMDMwNiwgMTMwMzA5LCAKKyAgICAxMzAzMTIsIDEzMDMxNSwgMTMwMzE4LCAxMzAzMjEsIDEzMDMyNCwgMTMwMzI3LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAKKyAgICAxMzAzMzksIDEzMDM0MiwgMTMwMzQ1LCAxMzAzNDgsIDEzMDM1MSwgMTMwMzU0LCAxMzAzNTcsIDEzMDM2MCwgMTMwMzYzLCAKKyAgICAxMzAzNjYsIDEzMDM2OSwgMTMwMzcyLCAxMzAzNzUsIDEzMDM3OCwgMTMwMzgxLCAxMzAzODQsIDEzMDM4NywgMTMwMzkwLCAKKyAgICAxMzAzOTMsIDEzMDM5NiwgMTMwMzk5LCAxMzA0MDIsIDEzMDQwNSwgMTMwNDA4LCAxMzA0MTEsIDEzMDQxNCwgMTMwNDE3LCAKKyAgICAxMzA0MjAsIDEzMDQyMywgMTMwNDI2LCAxMzA0MjksIDEzMDQzMiwgMTMwNDM1LCAxMzA0MzgsIDEzMDQ0MSwgMTMwNDQ0LCAKKyAgICAxMzA0NDcsIDEzMDQ1MCwgMTMwNDUzLCAxMzA0NTYsIDEzMDQ1OSwgMTMwNDYyLCAxMzA0NjUsIDEzMDQ2OCwgMTMwNDcxLCAKKyAgICAxMzA0NzQsIDEzMDQ3NywgMTMwNDgwLCAxMzA0ODMsIDEzMDQ4NiwgMTMwNDg5LCAxMzA0OTIsIDEzMDQ5NSwgMTMwNDk4LCAKKyAgICAxMzA1MDEsIDEzMDUwNCwgMTMwNTA3LCAxMzA1MTAsIDEzMDUxMywgMTMwNTE2LCAxMzA1MTksIDEzMDUyMiwgMTMwNTI1LCAKKyAgICAxMzA1MjgsIDEzMDUzMSwgMTMwNTM0LCAxMzA1MzcsIDEzMDU0MCwgMTMwNTQzLCAxMzA1NDYsIDEzMDU0OSwgMTMwNTUyLCAKKyAgICAxMzA1NTUsIDEzMDU1OCwgMTMwNTYxLCAxMzA1NjQsIDEzMDU2NywgMTMwNTcwLCAxMzA1NzMsIDEzMDU3NiwgMTMwNTc5LCAKKyAgICAxMzA1ODIsIDEzMDU4NSwgMTMwNTg4LCAxMzA1OTEsIDEzMDU5NCwgMTMwNTk3LCAxMzA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDYwMywgMTMwNjA1LCAxMzA2MDcsIDEzMDYxMiwgMTMwNjE0LCAKKyAgICAxMzA2MTksIDEzMDYyMSwgMTMwNjI2LCAxMzA2MjgsIDEzMDYzMywgMTMwNjM1LCAxMzA2MzcsIDEzMDYzOSwgMTMwNjQxLCAKKyAgICAxMzA2NDMsIDEzMDY0NSwgMTMwNjQ3LCAxMzA2NDksIDEzMDY1MSwgMTMwNjU0LCAxMzA2NTcsIDEzMDY1OSwgMTMwNjYxLCAKKyAgICAxMzA2NjUsIDEzMDY2OCwgMTMwNjczLCAxMzA2NzUsIDEzMDY3NywgMTMwNjc5LCAxMzA2ODMsIDEzMDY4NiwgMTMwNjg4LCAKKyAgICAxMzA2OTIsIDEzMDY5NCwgMTMwNjk4LCAxMzA3MDAsIDEzMDcwNCwgMTMwNzA3LCAxMzA3MDksIDEzMDcxMywgMTMwNzE3LCAKKyAgICAxMzA3MTksIDEzMDcyNSwgMTMwNzI3LCAxMzA3MzIsIDEzMDczNCwgMTMwNzM5LCAxMzA3NDEsIDEzMDc0NiwgMTMwNzQ4LCAKKyAgICAxMzA3NTMsIDEzMDc1NSwgMTMwNzU4LCAxMzA3NjAsIDEzMDc2NCwgMTMwNzY2LCAxMzA3NzMsIDEzMDc3NSwgMTMwNzc3LCAKKyAgICAxMzA3NzksIDEzMDc4NCwgMTMwNzg2LCAxMzA3ODgsIDEzMDc5MCwgMTMwNzkyLCAxMzA3OTQsIDEzMDc5OSwgMTMwODAzLCAKKyAgICAxMzA4MDUsIDEzMDgxMCwgMTMwODE0LCAxMzA4MTYsIDEzMDgyMSwgMTMwODI1LCAxMzA4MjcsIDEzMDgzMiwgMTMwODM2LCAKKyAgICAxMzA4MzgsIDEzMDg0MCwgMTMwODQyLCAxMzA4NDQsIDEzMDg0OCwgMTMwODUwLCAxMzA4NTUsIDEzMDg1NywgMTMwODYzLCAKKyAgICAxMzA4NjUsIDEzMDg3MSwgMTMwODczLCAxMzA4NzUsIDEzMDg3NywgMTMwODgxLCAxMzA4ODMsIDEzMDg5MCwgMTMwODkyLCAKKyAgICAxMzA4OTksIDEzMDkwMSwgMTMwOTA2LCAxMzA5MTEsIDEzMDkxMywgMTMwOTE5LCAxMzA5MjUsIDEzMDkyNywgMTMwOTMzLCAKKyAgICAxMzA5MzgsIDEzMDk0MCwgMTMwOTQ2LCAxMzA5NTIsIDEzMDk1NCwgMTMwOTYwLCAxMzA5NjYsIDEzMDk2OCwgMTMwOTc0LCAKKyAgICAxMzA5NzgsIDEzMDk4MCwgMTMwOTg1LCAxMzA5ODcsIDEzMDk4OSwgMTMwOTk0LCAxMzA5OTYsIDEzMDk5OCwgMTMxMDA0LCAKKyAgICAxMzEwMDYsIDEzMTAxMSwgMTMxMDE1LCAxMzEwMTcsIDEzMTAyMiwgMTMxMDI2LCAxMzEwMjgsIDEzMTAzNCwgMTMxMDM2LCAKKyAgICAxMzEwNDAsIDEzMTA0MiwgMTMxMDQ2LCAxMzEwNDgsIDEzMTA1NSwgMTMxMDYyLCAxMzEwNjQsIDEzMTA3MSwgMTMxMDc4LCAKKyAgICAxMzEwODAsIDEzMTA4NSwgMTMxMDg3LCAxMzEwOTQsIDEzMTA5NiwgMTMxMTAxLCAxMzExMDMsIDEzMTEwOSwgMTMxMTExLCAKKyAgICAxMzExMTUsIDEzMTExNywgMTMxMTIzLCAxMzExMjUsIDEzMTEyOSwgMTMxMTMxLCAxMzExMzcsIDEzMTEzOSwgMTMxMTQxLCAKKyAgICAxMzExNDMsIDEzMTE0OCwgMTMxMTUzLCAxMzExNTUsIDEzMTE1OSwgMTMxMTY2LCAxMzExNzMsIDEzMTE3OCwgMTMxMTgzLCAKKyAgICAxMzExOTUsIDEzMTE5NywgMTMxMTk5LCAxMzEyMDEsIDEzMTIwMywgMTMxMjA1LCAxMzEyMDcsIDEzMTIwOSwgMTMxMjExLCAKKyAgICAxMzEyMTMsIDEzMTIxNSwgMTMxMjE3LCAxMzEyMTksIDEzMTIyMSwgMTMxMjIzLCAxMzEyMjUsIDEzMTIyNywgMTMxMjI5LCAKKyAgICAxMzEyMzUsIDEzMTI0MiwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI2MywgMTMxMjY1LCAxMzEyNjcsIDEzMTI2OSwgMTMxMjcxLCAKKyAgICAxMzEyNzMsIDEzMTI3NSwgMTMxMjc3LCAxMzEyNzksIDEzMTI4MSwgMTMxMjgzLCAxMzEyODUsIDEzMTI4NywgMTMxMjg5LCAKKyAgICAxMzEyOTEsIDEzMTI5MywgMTMxMjk1LCAxMzEzMDAsIDEzMTMwMiwgMTMxMzA0LCAxMzEzMTUsIDEzMTMxNywgMTMxMzE5LCAKKyAgICAxMzEzMjEsIDEzMTMyMywgMTMxMzI1LCAxMzEzMjcsIDEzMTMyOSwgMTMxMzMxLCAxMzEzMzMsIDEzMTMzNSwgMTMxMzM3LCAKKyAgICAxMzEzMzksIDEzMTM0MSwgMTMxMzQzLCAxMzEzNDUsIDEzMTM0NywgMTMxMzQ5LCAxMzEzNTEsIDEzMTM1MywgMTMxMzU1LCAKKyAgICAxMzEzNTcsIDEzMTM1OSwgMTMxMzYxLCAxMzEzNjMsIDEzMTM2NSwgMTMxMzY3LCAxMzEzNjksIDEzMTM3MSwgMTMxMzczLCAKKyAgICAxMzEzNzUsIDEzMTM3NywgMTMxMzc5LCAxMzEzODEsIDEzMTM4MywgMTMxMzg1LCAxMzEzODcsIDEzMTM4OSwgMTMxMzkxLCAKKyAgICAxMzEzOTMsIDEzMTM5NSwgMTMxMzk3LCAxMzEzOTksIDEzMTQwMSwgMTMxNDAzLCAxMzE0MDUsIDEzMTQwNywgMTMxNDA5LCAKKyAgICAxMzE0MTEsIDEzMTQxMywgMTMxNDE1LCAxMzE0MTcsIDEzMTQxOSwgMTMxNDIxLCAxMzE0MjMsIDEzMTQyNSwgMTMxNDI3LCAKKyAgICAxMzE0MjksIDEzMTQzMSwgMTMxNDMzLCAxMzE0MzUsIDEzMTQzNywgMTMxNDM5LCAxMzE0NDEsIDEzMTQ0MywgMTMxNDQ1LCAKKyAgICAxMzE0NDcsIDEzMTQ0OSwgMTMxNDUxLCAxMzE0NTMsIDEzMTQ1NSwgMTMxNDU3LCAxMzE0NTksIDEzMTQ2MSwgMTMxNDYzLCAKKyAgICAxMzE0NjUsIDEzMTQ2NywgMTMxNDY5LCAxMzE0NzEsIDEzMTQ3MywgMTMxNDc1LCAxMzE0NzcsIDEzMTQ3OSwgMTMxNDgxLCAKKyAgICAxMzE0ODMsIDEzMTQ4NSwgMTMxNDg3LCAxMzE0ODksIDEzMTQ5MSwgMTMxNDkzLCAxMzE0OTUsIDEzMTQ5NywgMTMxNDk5LCAKKyAgICAxMzE1MDEsIDEzMTUwMywgMTMxNTA1LCAxMzE1MDcsIDEzMTUwOSwgMTMxNTExLCAxMzE1MTMsIDEzMTUxNSwgMTMxNTE3LCAKKyAgICAxMzE1MTksIDEzMTUyMSwgMTMxNTIzLCAxMzE1MjUsIDEzMTUyNywgMTMxNTI5LCAxMzE1MzEsIDEzMTUzMywgMTMxNTM1LCAKKyAgICAxMzE1MzcsIDEzMTUzOSwgMTMxNTQxLCAxMzE1NDMsIDEzMTU0NSwgMTMxNTQ3LCAxMzE1NDksIDEzMTU1MSwgMTMxNTUzLCAKKyAgICAxMzE1NTUsIDEzMTU1NywgMTMxNTU5LCAxMzE1NjEsIDEzMTU2MywgMTMxNTY1LCAxMzE1NjcsIDEzMTU2OSwgMTMxNTcxLCAKKyAgICAxMzE1NzMsIDEzMTU3NSwgMTMxNTc3LCAxMzE1NzksIDEzMTU4MSwgMTMxNTgzLCAxMzE1ODUsIDEzMTU4NywgMTMxNTg5LCAKKyAgICAxMzE1OTEsIDEzMTU5MywgMTMxNTk1LCAxMzE1OTcsIDEzMTU5OSwgMTMxNjAxLCAxMzE2MDMsIDEzMTYwNSwgMTMxNjA3LCAKKyAgICAxMzE2MDksIDEzMTYxMSwgMTMxNjEzLCAxMzE2MTUsIDEzMTYxNywgMTMxNjE5LCAxMzE2MjEsIDEzMTYyMywgMTMxNjI1LCAKKyAgICAxMzE2MjcsIDEzMTYyOSwgMTMxNjMxLCAxMzE2MzMsIDEzMTYzNSwgMTMxNjM3LCAxMzE2MzksIDEzMTY0MSwgMTMxNjQzLCAKKyAgICAxMzE2NDUsIDEzMTY0NywgMTMxNjQ5LCAxMzE2NTEsIDEzMTY1MywgMTMxNjU1LCAxMzE2NTcsIDEzMTY1OSwgMTMxNjYxLCAKKyAgICAxMzE2NjMsIDEzMTY2NSwgMTMxNjY3LCAxMzE2NjksIDEzMTY3MSwgMTMxNjczLCAxMzE2NzUsIDEzMTY3NywgMTMxNjc5LCAKKyAgICAxMzE2ODEsIDEzMTY4MywgMTMxNjg1LCAxMzE2ODcsIDEzMTY4OSwgMTMxNjkxLCAxMzE2OTMsIDEzMTY5NSwgMTMxNjk3LCAKKyAgICAxMzE2OTksIDEzMTcwMSwgMTMxNzAzLCAxMzE3MDUsIDEzMTcwNywgMTMxNzA5LCAxMzE3MTEsIDEzMTcxMywgMTMxNzE1LCAKKyAgICAxMzE3MTcsIDEzMTcxOSwgMTMxNzIxLCAxMzE3MjMsIDEzMTcyNSwgMTMxNzI3LCAxMzE3MjksIDEzMTczMSwgMTMxNzMzLCAKKyAgICAxMzE3MzUsIDEzMTczNywgMTMxNzM5LCAxMzE3NDEsIDEzMTc0MywgMTMxNzQ1LCAxMzE3NDcsIDEzMTc0OSwgMTMxNzUxLCAKKyAgICAxMzE3NTMsIDEzMTc1NSwgMTMxNzU3LCAxMzE3NTksIDEzMTc2MSwgMTMxNzYzLCAxMzE3NjUsIDEzMTc2NywgMTMxNzY5LCAKKyAgICAxMzE3NzEsIDEzMTc3MywgMTMxNzc1LCAxMzE3NzcsIDEzMTc3OSwgMTMxNzgxLCAxMzE3ODMsIDEzMTc4NSwgMTMxNzg3LCAKKyAgICAxMzE3ODksIDEzMTc5MSwgMTMxNzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzE3OTUsIDEzMTgwNSwgMTMxODE1LCAxMzE4MjQsIDEzMTgzMywgMTMxODQ2LCAxMzE4NTksIDEzMTg3MSwgMTMxODgzLCAKKyAgICAxMzE4OTMsIDEzMTkwMywgMTMxOTEzLCAxMzE5MjMsIDEzMTkzNCwgMTMxOTQ1LCAxMzE5NTUsIDEzMTk2NCwgMTMxOTczLCAKKyAgICAxMzE5ODIsIDEzMTk5NSwgMTMyMDA4LCAxMzIwMjAsIDEzMjAzMiwgMTMyMDQyLCAxMzIwNTIsIDEzMjA2MiwgMTMyMDcyLCAKKyAgICAxMzIwODEsIDEzMjA5MCwgMTMyMDk5LCAxMzIxMDgsIDEzMjExNywgMTMyMTI2LCAxMzIxMzUsIDEzMjE0NCwgMTMyMTUzLCAKKyAgICAxMzIxNjIsIDEzMjE3MSwgMTMyMTgwLCAxMzIxOTEsIDEzMjIwMSwgMTMyMjExLCAxMzIyMjQsIDEzMjIzNCwgMTMyMjQ3LCAKKyAgICAxMzIyNTQsIDEzMjI2NCwgMTMyMjcxLCAxMzIyNzgsIDEzMjI4NSwgMTMyMjkyLCAxMzIyOTksIDEzMjMwNiwgMTMyMzE1LCAKKyAgICAxMzIzMjQsIDEzMjMzMywgMTMyMzQyLCAxMzIzNTEsIDEzMjM2MCwgMTMyMzY5LCAxMzIzNzgsIDEzMjM4NiwgMTMyMzk0LCAKKyAgICAxMzI0MDEsIDEzMjQxMSwgMTMyNDIwLCAxMzI0MjgsIDEzMjQzNSwgMTMyNDQ1LCAxMzI0NTQsIDEzMjQ1OCwgMTMyNDYyLCAKKyAgICAxMzI0NjYsIDEzMjQ3MCwgMTMyNDc0LCAxMzI0NzgsIDEzMjQ4MiwgMTMyNDg2LCAxMzI0OTAsIDEzMjQ5NCwgMTMyNDk3LCAKKyAgICAxMzI1MDEsIDEzMjUwNCwgMTMyNTA3LCAxMzI1MTEsIDEzMjUxNSwgMTMyNTE5LCAxMzI1MjMsIDEzMjUyNywgMTMyNTMxLCAKKyAgICAxMzI1MzUsIDEzMjUzOSwgMTMyNTQzLCAxMzI1NDcsIDEzMjU1MSwgMTMyNTU1LCAxMzI1NTksIDEzMjU2MywgMTMyNTY3LCAKKyAgICAxMzI1NzEsIDEzMjU3NSwgMTMyNTc5LCAxMzI1ODMsIDEzMjU4NywgMTMyNTkxLCAxMzI1OTUsIDEzMjU5OSwgMTMyNjAzLCAKKyAgICAxMzI2MDcsIDEzMjYxMSwgMTMyNjE1LCAxMzI2MTksIDEzMjYyMywgMTMyNjI3LCAxMzI2MzEsIDEzMjYzNSwgMTMyNjM5LCAKKyAgICAxMzI2NDMsIDEzMjY0NywgMTMyNjUxLCAxMzI2NTUsIDEzMjY1OSwgMTMyNjYzLCAxMzI2NjcsIDEzMjY3MSwgMTMyNjc1LCAKKyAgICAxMzI2NzksIDEzMjY4MywgMTMyNjg3LCAxMzI2OTEsIDEzMjY5NSwgMTMyNjk5LCAxMzI3MDMsIDEzMjcwNywgMTMyNzExLCAKKyAgICAxMzI3MTUsIDEzMjcxOSwgMTMyNzIzLCAxMzI3MjcsIDEzMjczMSwgMTMyNzM1LCAxMzI3MzksIDEzMjc0MywgMTMyNzQ3LCAKKyAgICAxMzI3NTEsIDEzMjc1NSwgMTMyNzU5LCAxMzI3NjMsIDEzMjc2NywgMTMyNzcxLCAxMzI3NzUsIDEzMjc3OSwgMTMyNzgzLCAKKyAgICAxMzI3ODcsIDEzMjc5MSwgMTMyNzk1LCAxMzI3OTksIDEzMjgwMywgMTMyODA3LCAxMzI4MTEsIDEzMjgxNSwgMTMyODE5LCAKKyAgICAxMzI4MjMsIDEzMjgyNywgMTMyODMxLCAxMzI4MzUsIDEzMjgzOSwgMTMyODQzLCAxMzI4NDcsIDEzMjg1MCwgMTMyODU0LCAKKyAgICAxMzI4NTgsIDEzMjg2MiwgMTMyODY2LCAxMzI4NzAsIDEzMjg3NCwgMTMyODc4LCAxMzI4ODIsIDEzMjg4NiwgMTMyODkwLCAKKyAgICAxMzI4OTQsIDEzMjg5OCwgMTMyOTAyLCAxMzI5MDYsIDEzMjkxMCwgMTMyOTE0LCAxMzI5MTgsIDEzMjkyMiwgMTMyOTI2LCAKKyAgICAxMzI5MzAsIDEzMjkzNCwgMTMyOTM4LCAxMzI5NDIsIDEzMjk0NiwgMTMyOTUwLCAxMzI5NTQsIDEzMjk1OCwgMTMyOTYyLCAKKyAgICAxMzI5NjYsIDEzMjk3MCwgMTMyOTc0LCAxMzI5NzgsIDEzMjk4MiwgMTMyOTg2LCAxMzI5OTAsIDEzMjk5NCwgMTMyOTk4LCAKKyAgICAxMzMwMDIsIDEzMzAwNiwgMTMzMDEwLCAxMzMwMTQsIDEzMzAxOCwgMTMzMDIyLCAxMzMwMjYsIDEzMzAzMCwgMTMzMDM0LCAKKyAgICAxMzMwMzgsIDEzMzA0MiwgMTMzMDQ2LCAxMzMwNTAsIDEzMzA1NCwgMTMzMDU4LCAxMzMwNjIsIDEzMzA2NiwgMTMzMDcwLCAKKyAgICAxMzMwNzQsIDEzMzA3OCwgMTMzMDgyLCAxMzMwODYsIDEzMzA5MCwgMTMzMDk0LCAxMzMwOTgsIDEzMzEwMiwgMTMzMTA2LCAKKyAgICAxMzMxMTAsIDEzMzExNCwgMTMzMTE4LCAxMzMxMjIsIDEzMzEyNiwgMTMzMTMwLCAxMzMxMzQsIDEzMzEzOCwgMTMzMTQyLCAKKyAgICAxMzMxNDYsIDEzMzE1MCwgMTMzMTU0LCAxMzMxNTgsIDEzMzE2MiwgMTMzMTY2LCAxMzMxNzAsIDEzMzE3NCwgMTMzMTc4LCAKKyAgICAxMzMxODIsIDEzMzE4NiwgMTMzMTkwLCAxMzMxOTQsIDEzMzE5OCwgMTMzMjAyLCAxMzMyMDYsIDEzMzIxMCwgMTMzMjE0LCAKKyAgICAxMzMyMTgsIDEzMzIyMiwgMTMzMjI2LCAxMzMyMzAsIDEzMzIzNCwgMTMzMjM4LCAxMzMyNDIsIDEzMzI0NiwgMTMzMjUwLCAKKyAgICAxMzMyNTQsIDEzMzI1OCwgMTMzMjYyLCAxMzMyNjYsIDEzMzI3MCwgMTMzMjc0LCAxMzMyNzgsIDEzMzI4MiwgMTMzMjg2LCAKKyAgICAxMzMyOTAsIDEzMzI5NCwgMTMzMjk4LCAxMzMzMDIsIDEzMzMwNiwgMTMzMzEwLCAxMzMzMTQsIDEzMzMxOCwgMTMzMzIyLCAKKyAgICAxMzMzMjYsIDEzMzMzMCwgMTMzMzM0LCAxMzMzMzgsIDEzMzM0MiwgMTMzMzQ2LCAxMzMzNTAsIDEzMzM1NCwgMTMzMzU4LCAKKyAgICAxMzMzNjIsIDEzMzM2NiwgMTMzMzcwLCAxMzMzNzQsIDEzMzM3OCwgMTMzMzgyLCAxMzMzODYsIDEzMzM5MCwgMTMzMzk0LCAKKyAgICAxMzMzOTgsIDEzMzQwMiwgMTMzNDA2LCAxMzM0MTAsIDEzMzQxNCwgMTMzNDE4LCAxMzM0MjIsIDEzMzQyNiwgMTMzNDMwLCAKKyAgICAxMzM0MzQsIDEzMzQzOCwgMTMzNDQyLCAxMzM0NDYsIDEzMzQ1MCwgMTMzNDU0LCAxMzM0NTgsIDEzMzQ2MiwgMTMzNDY2LCAKKyAgICAxMzM0NzAsIDEzMzQ3NCwgMTMzNDc4LCAxMzM0ODIsIDEzMzQ4NiwgMTMzNDkwLCAxMzM0OTQsIDEzMzQ5OCwgMTMzNTAyLCAKKyAgICAxMzM1MDYsIDEzMzUxMCwgMTMzNTE0LCAxMzM1MTgsIDEzMzUyMiwgMTMzNTI2LCAxMzM1MzAsIDEzMzUzNCwgMTMzNTM4LCAKKyAgICAxMzM1NDIsIDEzMzU0NiwgMTMzNTUwLCAxMzM1NTQsIDEzMzU1OCwgMTMzNTYyLCAxMzM1NjYsIDEzMzU3MCwgMTMzNTc0LCAKKyAgICAxMzM1NzgsIDEzMzU4MiwgMTMzNTg2LCAxMzM1OTAsIDEzMzU5NCwgMTMzNTk4LCAxMzM2MDIsIDEzMzYwNiwgMTMzNjEwLCAKKyAgICAxMzM2MTQsIDEzMzYxOSwgMTMzNjI0LCAxMzM2MjksIDEzMzYzMywgMTMzNjM5LCAxMzM2NDYsIDEzMzY1MywgMTMzNjYwLCAKKyAgICAxMzM2NjcsIDEzMzY3NCwgMTMzNjgxLCAxMzM2ODgsIDEzMzY5NSwgMTMzNzAyLCAxMzM3MDksIDEzMzcxNiwgMTMzNzIzLCAKKyAgICAxMzM3MzAsIDEzMzczNiwgMTMzNzQzLCAxMzM3NTAsIDEzMzc1NiwgMTMzNzYzLCAxMzM3NzAsIDEzMzc3NywgMTMzNzg0LCAKKyAgICAxMzM3OTEsIDEzMzc5OCwgMTMzODA1LCAxMzM4MTIsIDEzMzgxOSwgMTMzODI2LCAxMzM4MzMsIDEzMzg0MCwgMTMzODQ3LCAKKyAgICAxMzM4NTMsIDEzMzg1OSwgMTMzODY2LCAxMzM4NzMsIDEzMzg4MiwgMTMzODkxLCAxMzM5MDAsIDEzMzkwOSwgMTMzOTE0LCAKKyAgICAxMzM5MTksIDEzMzkyNSwgMTMzOTMxLCAxMzM5MzcsIDEzMzk0MywgMTMzOTQ5LCAxMzM5NTUsIDEzMzk2MSwgMTMzOTY3LCAKKyAgICAxMzM5NzMsIDEzMzk3OSwgMTMzOTg1LCAxMzM5OTEsIDEzMzk5NiwgMTM0MDAyLCAxMzQwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvZGVfaGFzaFtdID0gewogICAgIDc0MjI0LCA0ODUxLCAwLCA3ODE1NiwgNzg0OTksIDEyODY4NSwgNzkyOSwgMCwgMTk0NjgyLCAxMjc3NjYsIDc4NTAwLCAKLSAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCAwLCAxMjgxMDMsIDEzMTkyLCA4NjUxLCAwLCAwLCAKKyAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCA5ODM4MTIsIDY5ODUwLCAxMzE5MiwgODY1MSwgMCwgMCwgCiAgICAgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDAsIDAsIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCAKICAgICA0MjMzLCA0MjM0LCA0MjMyLCA5MTc4MzYsIDc0NDE1LCAxMjAyMTAsIDYzODQsIDkxNzg0MCwgNzgxMDgsIDg4NTEsIDAsIAotICAgIDEyODU1MywgMCwgNDE2MDEsIDg4NzQsIDAsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIAotICAgIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKLSAgICAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgMCwgMTI3NzY0LCA2NTg1OSwgCi0gICAgMCwgNzQwNCwgMCwgMCwgMCwgMCwgNjU5MDgsIDk4MzQsIDMwNTUsIDk4NTIsIDAsIDY1Mjg4LCAwLCAxMTM5OCwgMCwgCi0gICAgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgMzM1MCwgMTIwODE3LCAKLSAgICA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIDc4NTczLCAwLCAKLSAgICAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCAKLSAgICA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgMCwgMCwgMTE5NjYsIDY0MTI4LCAxMjg1ODcsIDAsIDAsIAotICAgIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCAwLCA0MzM3NCwgOTc3OSwgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCAKLSAgICA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgMTI4NzcxLCA2NTI4MiwgMjg0MywgNTM1NSwgMTI3OTI4LCAwLCAwLCAKLSAgICA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMCwgMCwgMCwgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIAotICAgIDc0MzUwLCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCAKLSAgICA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCAKLSAgICA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCAKLSAgICA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCAKLSAgICA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDAsIDEyMjEzLCAxOTQ2NzgsIDI3NjAsIDAsIDAsIDAsIDE5NDc5NCwgNjQxNTYsIAotICAgIDY0MTU1LCA0MjQ5NiwgMCwgNjQxNTEsIDY0MTUwLCAxMjY3OSwgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAKLSAgICAwLCAwLCA0ODM5LCAwLCAwLCAxODc0LCAxMTkwMTYsIDAsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgCi0gICAgOTI1MzQsIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA5MjU1MCwgNjQxMjIsIDc0NDIyLCA2NjYwOSwgMCwgNjQxMTcsIAotICAgIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgCi0gICAgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDEyNzMwNiwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgCi0gICAgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDAsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIAotICAgIDQ0MDE3LCAxMTQyOSwgMCwgMCwgMCwgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgCi0gICAgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCAKLSAgICA2NjM5LCA2NDA2NCwgMCwgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCAwLCAwLCAKLSAgICAxMjA1MTksIDY2Mzc2LCA2NjI0MiwgMTE0MTUsIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMCwgMCwgCi0gICAgNzcxNCwgNjYyMjIsIDAsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCAwLCAwLCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCAwLCAwLCAwLCA2NDYxNSwgNDE5MTUsIDAsIAotICAgIDEyMDc1LCA5MjIxMSwgMCwgNTE3NCwgMCwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCA4NDA4LCA2NDcwNCwgCi0gICAgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDAsIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgCi0gICAgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgMCwgMTIwNTk1LCAKLSAgICA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAwLCAxMTQzNCwgNjQwODMsIAotICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgOTkyNywgNDEzMzUsIAotICAgIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIDAsIDQyNjI3LCAwLCAKLSAgICAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDAsIDQyODcxLCAwLCAxOTkyMywgNzQzMzUsIDAsIAotICAgIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIDAsIDY1NzU4LCAxMjc1MCwgNDE4MSwgCi0gICAgODU0NCwgMCwgMTIwMTk5LCA5MTc4OTcsIDEyMDE5OCwgNjk4MDksIDYxODEsIDY1MDE0LCAwLCAwLCAwLCAzNjM5LCAKLSAgICAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgCi0gICAgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgMCwgMTAyMDcsIDg3ODksIDAsIDAsIDAsIDAsIDkyMzQsIDAsIDYxODIsIDAsIAotICAgIDY1MDU4LCAwLCAwLCAwLCAwLCA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgMTE4OTA3LCAKLSAgICAwLCA2NjIzOCwgMTI4NDQsIDAsIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgCi0gICAgNjQ0MDUsIDQxMzM3LCAwLCA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCAKLSAgICA2NTc5LCAwLCA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCAKLSAgICA1MDU4LCA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIAotICAgIDc4NjA2LCAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDAsIDAsIAotICAgIDAsIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAotICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDAsIDEyNzUyNCwgMCwgMCwgMCwgMCwgCi0gICAgMTk1MDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzQxLCAxMTk1OTYsIDIzNzksIDExMzI1LCAwLCA2NDY2OCwgNjc4NTQsIAotICAgIDgxMjUsIDEyMDU0NSwgNjc0MywgMTE5MTc1LCA5MTc5NDAsIDIzNjksIDAsIDAsIDAsIDExOTIzNSwgNzQwOTIsIDczOTM2LCAKLSAgICA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCAwLCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgCi0gICAgMTg0NCwgMTE5MDg0LCAwLCA2MDE5LCAwLCAwLCA2OTYxLCAwLCAxMTg4MzksIDAsIDg4MDAsIDAsIDQyODYyLCA0NDYzLCAKLSAgICA2NTU4MSwgNjE5MiwgMTk0Njc2LCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDExODc5NywgMTIwODAwLCAwLCAKLSAgICAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIDAsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgCi0gICAgMTE4OTgxLCA3NDQ5MywgMCwgNTA3MiwgMTI4MDcxLCA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAKLSAgICAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIAotICAgIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgMCwgNzQ0MTgsIDEyODE5LCAKLSAgICAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgCi0gICAgNzg2NDksIDAsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgCi0gICAgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIAotICAgIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCAKLSAgICA5MjE3NSwgMTIwMjc1LCA0OTMzLCAwLCAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDAsIDcyMiwgCi0gICAgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgMTE5ODU1LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCAxMjc0NzQsIAotICAgIDEyNzQ3NywgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDkyMzEwLCAxMjc0NjYsIDc4NTU1LCAxMjc0NjgsIAotICAgIDczODYzLCAxMjc0NzAsIDEyNzQ3MywgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDEyMDExMywgCi0gICAgMTI3NDYyLCA3MDA1LCA0MTYwOSwgOTU4MCwgMCwgNDAxLCAwLCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCAKLSAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCi0gICAgMCwgNTA3NiwgMCwgMTk0NjA5LCAwLCAxMjAwOTcsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAKLSAgICAxMjAxMDIsIDcxMzgsIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIAotICAgIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCAwLCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgCisgICAgMTI4NTUzLCAwLCA0MTYwMSwgODg3NCwgOTgzNzc0LCA3NzQ4LCAwLCAwLCAwLCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCAKKyAgICA5MTg4LCA0MTYwMCwgMCwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDAsIDAsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgCisgICAgMzQwNCwgMCwgMCwgMCwgMTc1OSwgMCwgNDEwNzYsIDY4MzgzLCAxMjA1NzIsIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAKKyAgICAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCAwLCAwLCA2NTkwOCwgOTgzNCwgMzA1NSwgOTg1MiwgOTgzODUxLCAKKyAgICA2NTI4OCwgMCwgMTEzOTgsIDAsIDkyNDE3LCAxMTkyNTUsIDAsIDAsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCAwLCA5MTc4MjQsIAorICAgIDMzNTAsIDEyMDgxNywgNjQzMTgsIDkxNzgyOCwgMTI3MDg5LCAzMzkwLCA3NDQ4MywgNDMyNjUsIDEyMDU5OSwgOTE3ODMwLCAKKyAgICA3ODU3MywgMCwgMTkxOSwgMzQwMCwgMTIwNjUxLCAxMjc5NDQsIDExNjQ3LCA5MTc1NDAsIDY2NDQ2LCA2NDE0MSwgODU2MiwgCisgICAgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDk4MzY3OSwgOTgzMTUyLCAxMTk2NiwgCisgICAgNjQxMjgsIDEyODU4NywgMCwgMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDk4MzgzNSwgNDMzNzQsIDk3NzksIAorICAgIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgMCwgNjYwMjEsIDAsIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgCisgICAgMjg0MywgNTM1NSwgMTI3OTI4LCA5ODM5NTYsIDAsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAwLCA5ODM2MjAsIDAsIAorICAgIDAsIDEyNzAyNywgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCAKKyAgICA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIAorICAgIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIAorICAgIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIAorICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDk4Mzk0MCwgMTIyMTMsIDE5NDY3OCwgCisgICAgMjc2MCwgMCwgMCwgMCwgMTk0Nzk0LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAKKyAgICAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDAsIDAsIDQ4MzksIDAsIDAsIDE4NzQsIDExOTAxNiwgMCwgCisgICAgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIAorICAgIDkyNTUwLCA2NDEyMiwgNzQ0MjIsIDY2NjA5LCAwLCA2NDExNywgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgCisgICAgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgMTI3MzA2LCAKKyAgICA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCAKKyAgICA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NjcxLCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIAorICAgIDkxNzk5MCwgNzM4NDEsIDAsIDAsIDkwNTYsIDY0MzEzLCA2MTg4LCAxMjAwMTksIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgCisgICAgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIDkyMjEyLCAwLCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc2NiwgCisgICAgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCA5ODM4MjIsIDAsIDEyMDUxOSwgNjYzNzYsIAorICAgIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCA3NzE0LCA2NjIyMiwgCisgICAgNjk5MDIsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCA5ODM0MTMsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDEyNjU3MCwgMCwgNjQ2MTUsIDQxOTE1LCAKKyAgICAwLCAxMjA3NSwgNzAwNjIsIDAsIDUxNzQsIDk4MzIxNSwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCAKKyAgICA4NDA4LCA2NDcwNCwgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCA0MzA0OSwgCisgICAgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIAorICAgIDkzMjIsIDAsIDEyMDU5NSwgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgMCwgCisgICAgMCwgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCAxOTQ4MTcsIAorICAgIDk5MjcsIDQxMzM1LCA0MTE4LCAxNzk3LCAwLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCAxMjc4ODEsIDI5OCwgMCwgMTI4MTE0LCAKKyAgICAwLCA0MjYyNywgMCwgMzIsIDYxODcsIDExOTA1MiwgMTE0OTUsIDExNDU5LCAzNjY1LCA5ODM2MDAsIDQyODcxLCAwLCAKKyAgICAxOTkyMywgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIAorICAgIDk4MzQ1OCwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCisgICAgNjUwMTQsIDAsIDAsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAwLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgCisgICAgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDk4MzExOCwgMTAyMDcsIDg3ODksIAorICAgIDk4MzIyMywgMCwgMCwgOTgzNDY0LCA5MjM0LCAwLCA2MTgyLCA5ODM0NjYsIDY1MDU4LCAwLCA5ODM0NzAsIDk4MzQ2NywgMCwgCisgICAgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDAsIAorICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgNjQ0MDUsIDQxMzM3LCAwLCAKKyAgICA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAwLCA2NDYxOCwgCisgICAgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCA1MDU4LCA0MTAxMCwgCisgICAgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCAKKyAgICA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMCwgMTI4NTI5LCAKKyAgICAxMjExMywgNDIzNiwgNDcyNywgMCwgMCwgNzY5MywgMTA3NDksIDAsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAwLCAKKyAgICA0MTYxOSwgMTAyMzksIDY4NjExLCAwLCA2NjIwOSwgMCwgMTI4NzAwLCA5NzQ4LCA5ODM5NDcsIDEyNzUyNCwgMCwgMCwgMCwgCisgICAgMCwgMTk1MDgzLCAwLCA5ODM4MzQsIDAsIDAsIDAsIDAsIDAsIDkzNDEsIDExOTU5NiwgMjM3OSwgMTEzMjUsIDAsIDY0NjY4LCAKKyAgICA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCAxMTkxNzUsIDkxNzk0MCwgMjM2OSwgMCwgOTgzOTYzLCA5ODM5NjQsIAorICAgIDExOTIzNSwgNzQwOTIsIDczOTM2LCA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCA5ODM4NDgsIDI2NCwgCisgICAgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDAsIDYwMTksIDAsIDAsIDY5NjEsIDAsIDExODgzOSwgCisgICAgMCwgODgwMCwgMCwgNDI4NjIsIDQ0NjMsIDY1NTgxLCA2MTkyLCAxOTQ2NzYsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCAKKyAgICA2NTA0MiwgMTE4Nzk3LCAxMjA4MDAsIDk4MzA0MCwgMTI4OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI2MSwgMTIwNzA3LCAKKyAgICA5ODMxMjgsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgMTE4OTgxLCA3NDQ5MywgOTgzNTYxLCA1MDcyLCA5Mzk3NywgCisgICAgNjE5OCwgMTE2MTQsIDAsIDE5NiwgMCwgMCwgMCwgNDkyOSwgMTIwMzQyLCAwLCAwLCAwLCAwLCA0Mjg0NywgMCwgMCwgMCwgCisgICAgNDkzNCwgMCwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCAxMjc5MTcsIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgCisgICAgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNzQ0MTgsIDEyODE5LCAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAKKyAgICAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIAorICAgIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAKKyAgICAxOTQ2MTksIDAsIDAsIDY0NzA5LCAwLCAxOTQ2MjAsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAwLCAKKyAgICAwLCA5NTI2LCA0OTIwLCAwLCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMCwgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTIwMjExLCAKKyAgICAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgCisgICAgMTI3NDg1LCAxMTk4NTUsIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDEyNzQ3NCwgMTI3NDc3LCAxNjcyLCA2MjA1LCAKKyAgICAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDEyNzQ2NiwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIDEyNjU3NywgCisgICAgMTI2NTAzLCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgMTIwMTEzLCAxMjc0NjIsIDcwMDUsIDQxNjA5LCAKKyAgICA5NTgwLCAwLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCA4MTQzLCAxMjcxMTUsIAorICAgIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMCwgNTA3NiwgMCwgCisgICAgMTk0NjA5LCAwLCAxMjAwOTcsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAxMjAxMDIsIAorICAgIDcxMzgsIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIDY0Nzc1LCAKKyAgICA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NDcsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCAKICAgICA0NDMyLCAxMjcyNzEsIDUwMzMsIDEyNzI3MywgMTI3MjcyLCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAKICAgICAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDEyNzI1MSwgNjc1ODgsIDExOTAwMCwgMTI3MjUyLCAxMjcyNTUsIDg4NTgsIDY0MDksIAogICAgIDEyNzI1NiwgMTIwMjUyLCAxMjgxMDAsIDAsIDAsIDY2MzIxLCAwLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgCi0gICAgNjA5NCwgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgMCwgNTAzMCwgMCwgMCwgCi0gICAgMCwgNzM4NjksIDk2MjIsIDAsIDAsIDY3ODcsIDAsIDAsIDAsIDAsIDEwNTQ0LCAxMjkxOSwgMCwgOTIyMTgsIDAsIDAsIDAsIAotICAgIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgMTE5OTM1LCA3NjEzLCA5MjU2MiwgCi0gICAgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDAsIDQzNTY3LCAKLSAgICA3NDA1NiwgOTE3OTEwLCAxMTg5NjMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgNDM5NSwgCi0gICAgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgNzIxNSwgMCwgNzQxNDEsIDg4ODAsIAotICAgIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCAxMTk2MTgsIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIAotICAgIDM2MzAsIDEyMDE3NiwgODE3OSwgNzQyNjQsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIAotICAgIDY3NjUyLCAxMjczMjksIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIAotICAgIDkyMjc5LCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjczMTgsIDEyNzMxNSwgMTIyODMsIDE2MTYsIDM3OTUsIDAsIAotICAgIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDAsIDAsIDMyMzksIDEyNzMxMSwgMCwgMCwgODQzMSwgCi0gICAgMCwgNDIxNjQsIDAsIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDExOTA3MywgNTA0MCwgMCwgMCwgMCwgNzg0MjAsIDAsIAotICAgIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgNzQyOTMsIDAsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgCi0gICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCAKLSAgICA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgCi0gICAgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIAotICAgIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIAotICAgIDY1NzgxLCA2NDczNCwgMCwgMjQ0MCwgNjU3ODAsIDc3OTEzLCA4NDQ5LCAwLCA1MDA4LCAwLCAyMTE4LCAwLCAxMjEyMSwgCi0gICAgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgCi0gICAgMjExNiwgMjQ1NSwgMCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMCwgODcxNCwgMCwgMjExMywgMCwgMjExNSwgMTI4MTc3LCAKLSAgICAxMjc5MDcsIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgCi0gICAgNDI2NDcsIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCAKLSAgICA5MTE3LCAwLCAxMjAwMywgNTUxMywgNjY2NiwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgCisgICAgNjA5NCwgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgOTgzMTc3LCA1MDMwLCAwLCAKKyAgICAwLCAwLCA3Mzg2OSwgOTYyMiwgMCwgNjk5NDQsIDY3ODcsIDAsIDAsIDAsIDk4MzU4MywgMTA1NDQsIDEyOTE5LCAwLCAKKyAgICA5MjIxOCwgMCwgMCwgNjk5MDYsIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgCisgICAgMTE5OTM1LCA3NjEzLCA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAKKyAgICAxMjAyNjgsIDAsIDQzNTY3LCA3NDA1NiwgOTE3OTEwLCAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCAKKyAgICA3MjE4LCA3ODk1LCA0Mzk1LCA0MzUzOCwgMTE5OTI2LCAxMTk5MjksIDExOTkyOCwgNzIxMywgMTE5OTIyLCA3MjE0LCAKKyAgICA3MjE1LCA5ODM4MjcsIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgMTE5NjE4LCA2MjUsIDgxODcsIAorICAgIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDc0MjY0LCA2Nzg4NiwgOTMxNiwgMTA5ODAsIAorICAgIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCA2NzY1MiwgMTI3MzI5LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgCisgICAgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCA5MjI3OSwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTI3MzE4LCAxMjczMTUsIAorICAgIDEyMjgzLCAxNjE2LCAzNzk1LCAwLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAwLCAwLCAKKyAgICAzMjM5LCAxMjczMTEsIDAsIDAsIDg0MzEsIDAsIDQyMTY0LCAwLCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCAxMTkwNzMsIAorICAgIDUwNDAsIDAsIDAsIDk4MzQzNSwgNzg0MjAsIDAsIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgCisgICAgNzQyOTMsIDAsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgCisgICAgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgCisgICAgMCwgNDI1ODksIDU2OSwgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgCisgICAgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCAKKyAgICA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIDY1NzgxLCA2NDczNCwgNzAwNzMsIDI0NDAsIAorICAgIDY1NzgwLCA3NzkxMywgODQ0OSwgMCwgNTAwOCwgOTgzNTcyLCAyMTE4LCAwLCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIAorICAgIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgMjExNiwgMjQ1NSwgMCwgMjEyMiwgCisgICAgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCA4NzE0LCA5ODM4MTEsIDIxMTMsIDAsIDIxMTUsIDEyODE3NywgMTI3OTA3LCAKKyAgICA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIDQyNjQ3LCAKKyAgICA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgOTExNywgCisgICAgOTgzMTgxLCAxMjAwMywgNTUxMywgNjY2NiwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgCiAgICAgNzg0MzcsIDAsIDE5MjUsIDAsIDkyMjM3LCA3NDgwNywgMCwgNTA0OCwgNTA0NywgMCwgMCwgMCwgOTIzMTMsIDAsIDc0NDk3LCAKLSAgICA5MjM5NSwgODA4OSwgNjkyOSwgNjM5LCAwLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgCi0gICAgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgMCwgMCwgMzUzMCwgCi0gICAgOTc1MCwgMTI4MzE3LCAwLCA2NjU2LCA5MjM2NywgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCAKLSAgICAwLCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAwLCA3ODUzLCA3NDA2OCwgNzQwMDQsIAotICAgIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgMCwgMTE5MDcwLCA5MTc2MDAsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIAotICAgIDAsIDAsIDExOTYwNiwgMCwgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAwLCAKLSAgICA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAwLCAxOTQ1OTEsIDAsIAotICAgIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCAxMjA0MzksIDQ4OSwgMCwgNDI1MCwgMTIwNDQxLCAxMjA0NTIsIDQzMTUxLCAwLCAKLSAgICAxOTQ4NTEsIDY2MjAwLCAwLCAwLCAwLCA3ODQyMywgMCwgMCwgODcxMSwgNjE4MywgMCwgMCwgMCwgMTIwNDQ4LCA3NjIzLCAKLSAgICAxMTg5MjUsIDE5NDg1MywgOTIzNSwgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgCi0gICAgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgMCwgMCwgMTIwNDM1LCAwLCA3NzI2LCAwLCAxOTkyMiwgMjY3LCAzMzkzLCAKLSAgICA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgCi0gICAgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDAsIDAsIDMzOTEsIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAKLSAgICAwLCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDEyNzUzNywgMTMwMTQsIDEzMDEzLCAwLCA2NjczLCAwLCAKLSAgICAwLCAwLCAxMjQzOCwgMCwgMCwgMCwgMCwgMCwgOTA1MywgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCAwLCAKLSAgICA2NjYwLCA3ODc1OCwgOTE3NzYwLCA5MTc3OTMsIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgMCwgCi0gICAgMTI3OTQwLCAwLCA3NDU0NywgMCwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxOTUwMDIsIDExOTIzOCwgMTk1MDA0LCAKLSAgICA3ODA5OSwgMTI3MDg1LCAwLCAwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCAwLCA3ODQ1OCwgNjY3MjgsIDE4MTYsIDAsIAotICAgIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgMCwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAwLCA3OTEsIAotICAgIDkxNjIsIDY5NzcsIDAsIDExOTI5OCwgNzQ1NjEsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgMTE5MzAzLCAwLCA3NTU3LCAKLSAgICAxMTkzMzksIDExOTMwMSwgODIzNCwgNzI0MSwgMCwgMTk0OTk0LCAxMTkxNjcsIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAKLSAgICAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIDEyODI3NiwgNzQ1OTksIDc4NDQ5LCAKLSAgICA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAyNDUyLCA3ODA4MywgMTk0ODY0LCAKLSAgICA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgOTE3OTE3LCA3ODY5MiwgNDQwOCwgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIAotICAgIDE5NDk5MCwgMTI3ODMzLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAKLSAgICAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgMCwgMCwgNDE5NTIsIDAsIAotICAgIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIAotICAgIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAwLCAxMTg4NzMsIDEyNzEsIDAsIDAsIDY2MDI0LCAKLSAgICA0MTQ4MiwgMzg2NCwgNzQ1MzksIDAsIDM4NzksIDAsIDEyOTc4LCA0MTY2LCA0NTc0LCAwLCA3NTY3LCA3NDU5LCAwLCAKLSAgICA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgMCwgMCwgNDEzODgsIDkyMzYyLCA0MTM5MiwgNjQyODgsIAotICAgIDQxMzg3LCAwLCA4NzA2LCA1NTUyLCAwLCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDc4MTEwLCA2NjU5NiwgCi0gICAgMCwgMCwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDAsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCAKLSAgICA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIAotICAgIDY2NjgsIDE5NTA2NywgMTk1MDY2LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgNjQ2MjQsIDAsIDAsIDAsIAotICAgIDAsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCA5MjI3MywgNjY1ODAsIDExODg5NSwgCi0gICAgNjY2ODMsIDEwNTU0LCA5MTc3NzgsIDExOTEyMSwgMCwgNTA5OCwgOTE3NzcwLCAwLCAxMTkwOTksIDUwOTcsIDQ5MzUsIAotICAgIDk4NDgsIDEwMzgxLCAwLCAxMjg4NzAsIDAsIDM2NTEsIDAsIDE5NDYxMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgCi0gICAgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCAKLSAgICA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgCi0gICAgMTIwNzkwLCAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDAsIDAsIDI2NzYsIAotICAgIDc3NTAsIDAsIDczODEyLCA2MTkwLCA4NTk5LCAxOTUwNTMsIDAsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIAorICAgIDkyMzk1LCA4MDg5LCA2OTI5LCA2MzksIDk4MzU2MywgNjgxNzksIDY0NDQyLCAwLCA5MjM0OCwgNDU5OSwgNDE0MDIsIAorICAgIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIDY5NTEsIDk0MDE3LCAKKyAgICA5ODM5NjcsIDM1MzAsIDk3NTAsIDEyODMxNywgMCwgNjY1NiwgNDI2MTgsIDAsIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgCisgICAgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDAsIAorICAgIDc4NTMsIDc0MDY4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAwLCAxMTkwNzAsIDkxNzYwMCwgNDE3NTAsIAorICAgIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMCwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIAorICAgIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAwLCA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIAorICAgIDExMjYsIDczODk1LCAwLCAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCAxMjA0MzksIDQ4OSwgMCwgNDI1MCwgCisgICAgMTIwNDQxLCAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDE5NDg1MSwgNjYyMDAsIDAsIDAsIDAsIDc4NDIzLCAwLCAwLCA4NzExLCAKKyAgICA2MTgzLCAwLCAwLCAwLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgMTE4ODg5LCA5MjM1LCAxMjc2MCwgNzQxNzYsIDY5NjYyLCAKKyAgICA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAwLCAxMjY1OTcsIDEyMDQzNSwgMCwgCisgICAgNzcyNiwgMCwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIAorICAgIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCA5MDUwLCAzMzk4LCAwLCA5ODMzNDAsIDAsIDMzOTEsIAorICAgIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAwLCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIAorICAgIDEyNzUzNywgMTMwMTQsIDEzMDEzLCAwLCA2NjczLCAwLCAwLCAwLCAxMjQzOCwgMCwgOTgzMzM0LCAwLCA5ODM4NzEsIAorICAgIDEyNjYzOCwgOTA1MywgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA5ODM4MTksIDY2NjAsIDc4NzU4LCAKKyAgICA5MTc3NjAsIDkxNzc5MywgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCAwLCAxMjc5NDAsIDk4MzMzMywgCisgICAgNzQ1NDcsIDEyNjU4NSwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxOTUwMDIsIDExOTIzOCwgMTk1MDA0LCAKKyAgICA3ODA5OSwgMTI3MDg1LCAwLCAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDAsIDc4NDU4LCA2NjcyOCwgMTgxNiwgCisgICAgMCwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA5ODMxNDEsIDAsIDQ5MDEsIDE4MjEsIDAsIDU3OCwgMzY1MywgCisgICAgMCwgNzkxLCA5MTYyLCA2OTc3LCAwLCA3ODg4OSwgNzQ1NjEsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgMTE5MzAzLCAKKyAgICA5ODM0NDEsIDc1NTcsIDExOTMzOSwgMTE5MzAxLCA4MjM0LCA3MjQxLCAwLCAxMjA2NzEsIDExOTE2NywgMTk0OTk2LCAKKyAgICAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgMTI4Mjc2LCAKKyAgICA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIDI0NTIsIAorICAgIDc4MDgzLCAxMjg4MjQsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCA5MTc5MTcsIDcxMzAyLCA0NDA4LCA0MTIyLCA2NzcyLCAKKyAgICAxMTAzOSwgODcyMywgMTk0OTkwLCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgOTIyODYsIDI0MzgsIDY0ODU1LCAKKyAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIDAsIAorICAgIDAsIDAsIDQxOTUyLCAwLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIAorICAgIDE5OTE1LCA1Mjc3LCAxMjk2MywgMTI3ODY0LCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAxMTg4NzMsIAorICAgIDEyNzEsIDk4MzYzMSwgMCwgNjYwMjQsIDQxNDgyLCAzODY0LCA3NDUzOSwgMCwgMzg3OSwgMCwgMTI5NzgsIDQxNjYsIAorICAgIDQ1NzQsIDAsIDc1NjcsIDc0NTksIDk4MzE2MCwgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgOTI1NDgsIDU3NTksIAorICAgIDk4MzkwMywgMCwgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCAwLCA4NzA2LCA1NTUyLCA5ODMxODcsIDcwMCwgCisgICAgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCA3NDA2NiwgMCwgMTAyNjMsIDU1NTQsIDAsIAorICAgIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDkyNjI2LCAwLCA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCAKKyAgICA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCAxOTUwNjcsIAorICAgIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgNjQ2MjQsIDAsIDAsIDAsIDk4MzY0MCwgNDI2OSwgCisgICAgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIDkyMjczLCA2NjU4MCwgMTE4ODk1LCA2NjY4MywgMTA1NTQsIAorICAgIDkxNzc3OCwgMTE5MTIxLCAwLCA1MDk4LCA5MTc3NzAsIDAsIDExOTA5OSwgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIAorICAgIDEyODg3MCwgOTgzNjkyLCAzNjUxLCAwLCAxMjA3MzAsIDEyNzU1NiwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCAKKyAgICA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDE5NTA2NCwgNTA5OSwgNzgzNzMsIDE0NDEsIAorICAgIDQyMDg3LCAzMDYzLCA2NTAsIDAsIDc4MzgsIDAsIDE5NTA0MSwgMTk1MDQwLCAxMTkxNDIsIDkwMzEsIDEyMDc5MCwgCisgICAgMTI4NTgyLCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAwLCA5MTU0LCA5MTE4LCAxMjY1NDMsIDAsIDI2NzYsIDIyNzcsIAorICAgIDAsIDczODEyLCA2MTkwLCA4NTk5LCAxOTUwNTMsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCAKICAgICA5MjYyMCwgMTIxMjksIDAsIDg0ODEsIDAsIDYyMDIsIDE5NTAzNSwgMTA5MjAsIDEyODIzNywgNTIwMywgMTk1MDM5LCAKICAgICAxOTUwMzgsIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgOTc2MiwgMCwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCAKLSAgICA2NjU3LCAyMDcsIDEyODgwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCAwLCAwLCA1MTAzLCAxMjc4NjEsIAotICAgIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDAsIDEwMTU3LCAwLCA0MzAzNCwgMTE0MzgsIDAsIDAsIAotICAgIDkyNjk0LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDE5NTAzMCwgCi0gICAgNjk3MjAsIDY0NzYsIDUxMDQsIDAsIDMwNCwgMzE3NiwgMCwgMCwgOTMyLCAxMjg2NjMsIDY1NjcsIDIzOCwgNjk2NTYsIAotICAgIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgCi0gICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIAotICAgIDY2MjIsIDgxNTEsIDEwODU4LCAxOTQ1OTYsIDY3NjM2LCAwLCAxMjU2OCwgMCwgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgCi0gICAgOTcxMiwgNjg2ODAsIDQzOTcwLCAwLCA2NTE2NSwgOTI3MjUsIDAsIDY2NDY2LCAwLCAwLCAwLCA2NjcyNSwgNjE5MSwgCi0gICAgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDAsIDAsIDQxNzU0LCA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0OTc1LCAKLSAgICA2ODQ2MiwgODIzMiwgMTE4ODE3LCAwLCAzMjIyLCAwLCAwLCAwLCA2NjY2MywgMCwgMCwgMTA4MzQsIDAsIDAsIDY1NzMyLCAKLSAgICAwLCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgMTIwNzcsIAotICAgIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAxMjA3MjgsIAotICAgIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIDY1MjI5LCAKLSAgICAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIDQyMzIxLCAKLSAgICA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIDE5NDk1MiwgMTk0OTUxLCAwLCAxOTQ5NTMsIDQyMDgwLCAKLSAgICAyNTI5LCAwLCAwLCAwLCA0MjA4MywgMTIwNjc4LCA2ODM5OCwgMTk0OTU3LCA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgCi0gICAgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCAwLCA2NTI2NCwgMCwgMCwgOTI1NDUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCAKLSAgICA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjg4MjEsIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIAotICAgIDQxOTg0LCA5MjE3LCAwLCAwLCAwLCA5MTg2LCAyMDY3LCA0MDE2LCAwLCAwLCAzODEsIDAsIDAsIDQyMDc3LCAwLCAKLSAgICAxMjc0ODMsIDUxODQsIDQyMDc4LCAxOTQ5NDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMCwgCi0gICAgMCwgODEyLCAzNjE1LCAwLCA1MTc4LCA0NDAwMCwgMTIwNTQ4LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKLSAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDAsIDY3NjMxLCAwLCAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgCi0gICAgNjc2MzIsIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgMCwgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMCwgMCwgMTI3MzczLCAKLSAgICA0MjI4OCwgMTI3NTEsIDAsIDg1NDIsIDEzMTQ1LCAxOTQ5NjMsIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgCi0gICAgNjQzODgsIDQyNDc5LCAwLCA0MTExNywgMCwgOTI1ODAsIDAsIDAsIDY3NjI0LCAwLCAxMjkwLCAwLCA2NTU4NSwgMjcxNSwgCi0gICAgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDAsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCAKLSAgICAwLCAxMjc1NiwgNjUyNTksIDAsIDAsIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgNzM5MTIsIDk3OTksIDAsIAotICAgIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDAsIDEyMTEsIDAsIAotICAgIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIDAsIDAsIDEwNjIyLCAwLCAwLCA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAKLSAgICAwLCA2NDg2NCwgMCwgNzg2NjAsIDAsIDgyODQsIDEzMDgxLCAwLCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgOTIyMzYsIAotICAgIDQyNjUsIDY2NDIsIDM5NzcsIDc0MTg2LCA0MTc3OCwgODM2LCAxMTkyMTYsIDI0ODgsIDAsIDQ1ODIsIDAsIDAsIDQxNzc3LCAKLSAgICAxMjkyNiwgMCwgNzUyOCwgMTA1NTAsIDAsIDkyNzA2LCAwLCAxMTQzOSwgMCwgMTM3NCwgNjQ4NzgsIDExOTAxNCwgMCwgCi0gICAgNDIzODksIDQxMzc0LCAwLCAwLCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMCwgNDAwLCAxMjU5NywgMTIwNTg2LCAwLCAwLCAKLSAgICA2NjYxLCAwLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMCwgNzQ3NTUsIDAsIDM0NzMsIDc3MTgsIDAsIDAsIDAsIDU1Mjg1LCAKLSAgICAwLCAwLCAwLCAxMTk2OSwgMCwgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCAwLCA4MDgwLCA3MDA2LCAwLCAwLCA2NzU3LCAKLSAgICA2NDM1MSwgMTU0NCwgMCwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgMCwgNjE0NiwgMCwgNzcxLCAwLCAwLCAxMjgxMiwgMTMxNjgsIAotICAgIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAxMTQ5MSwgOTcyNCwgCi0gICAgMTAzNDEsIDAsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAwLCA3NDg3LCAwLCA0NzEsIDc0ODQsIDc0ODIsIAotICAgIDY3NTMsIDc0ODAsIDc0NzksIDc0NzgsIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIDI0NzQsIDc0NzAsIAotICAgIDc0NjgsIDEwMjMyLCAxMDYxNSwgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCA3ODg4NCwgMzU0NCwgMCwgNjAxNywgCi0gICAgNjUzMTEsIDEyNzQ4MSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAwLCAxMjA1NDQsIDAsIDAsIAotICAgIDkyNjYwLCAwLCAwLCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAwLCAyMTM5LCA0MjU2LCAxMjA3NzYsIDc0MzgwLCAKLSAgICAwLCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAwLCAwLCA2NTEzOCwgMTE5MzU1LCA2Nzg2MiwgMCwgNjU2NzEsIDEyMDAwMCwgCi0gICAgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgCi0gICAgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgMCwgMTIwMjE1LCAwLCAzOTAyLCAwLCAxNzcwLCAwLCAxMjg4NjYsIAotICAgIDE1NjAsIDEyMDIwOSwgMTk0OTcyLCA0NTg0LCA3Mzg0MywgMCwgMTE3MTIsIDEwODY2LCAxMTg5MjgsIDExMTgsIDkyMjA5LCAKLSAgICAwLCAwLCAxMDgxLCA3NDM2LCA2ODQyMCwgNzI1MiwgMCwgNTk5NiwgMCwgNDkwMywgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgCi0gICAgMTMzMCwgMCwgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgNjQ3NzcsIAotICAgIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDAsIDEyNzE1LCAxMjgzNDksIDAsIDAsIDIwMTgsIDY2NjcyLCA0MTk3OSwgCi0gICAgNjY2ODUsIDExOTE1NywgMCwgOTI0NjQsIDAsIDEyNjk4NCwgMCwgOTMzNCwgOTI3MDUsIDkyMzE1LCAwLCA3OTc1LCAwLCAKLSAgICA3Nzk1NywgMCwgNjY2MjEsIDQ4ODQsIDY2NTk3LCA2OTczMiwgMCwgMCwgNjMxMywgNjU1MTMsIDAsIDAsIDAsIDAsIDIzNDUsIAotICAgIDQzNjk3LCA0NjMsIDAsIDAsIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgMCwgMCwgNDIyNzksIDE5NDU3NywgMCwgCi0gICAgNzg0MTUsIDAsIDE5NTAwOCwgMCwgMTMyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NjMsIDAsIDAsIDAsIDAsIDI0ODIsIAotICAgIDE0NzEsIDAsIDAsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAxMjM3NCwgMCwgMCwgMCwgMCwgMjQ2MCwgMCwgCi0gICAgMTE5NDQsIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAwLCAyMDI0LCAKLSAgICAxMjcxODAsIDAsIDAsIDUzOSwgMCwgMTI3NzY1LCAwLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgCi0gICAgOTIzMjQsIDAsIDg2NTksIDAsIDEyNDc0LCA5MjU3OSwgOTUwMywgMTk0OTY5LCAyNDc4LCAwLCA0MTYyLCAwLCA0MjYwLCAKLSAgICAxMjk1MywgNjk2MzMsIDEyMDA4OSwgMTI0NzAsIDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIAotICAgIDUwMDAsIDAsIDAsIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgMCwgNjcwOSwgMCwgNzg4ODUsIDAsIAotICAgIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgMCwgNzM3OTEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgMCwgMCwgMTIyMTAsIDcyMjEsIAotICAgIDQyMTQ3LCAwLCA3NDU1MCwgNzQ0NjUsIDY0NzQ3LCAxMTg4NDEsIDAsIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIAotICAgIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAzNTkxLCA0MTk2OSwgMCwgMjQ1MywgMTI4NTQ5LCAKLSAgICA5MjY2NiwgNjQ3MDUsIDAsIDAsIDEwMzQ5LCAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMCwgODMxNiwgMCwgCi0gICAgMCwgMCwgNjg3LCAwLCAwLCAwLCAxODQwLCAwLCA2ODY3MSwgMTE5ODA5LCA0ODgzLCAyODUsIDQ3MjMsIDc3OTI3LCAKLSAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCAwLCA5NzQzLCAKLSAgICAxMjAyMzIsIDEzMTM0LCAwLCAwLCAwLCAwLCAwLCA0MjYzNCwgMCwgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIAotICAgIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgMTE5MDIzLCAxNzI5LCAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgCi0gICAgNDMzMzQsIDY0ODUyLCAwLCAxMjAyMzUsIDY2MjAxLCAwLCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCAKLSAgICA4ODQsIDY2NzAwLCA2Mzg3OSwgNDk0MywgNTE1MCwgNzM4ODksIDc0MTgyLCAxMjc5MTUsIDY0MywgMzA4NiwgMCwgNDI0NDgsIAotICAgIDQyMjk5LCA1OCwgMCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCAwLCA0NTMwLCA0MjQwOSwgNzEyNiwgCi0gICAgMTk0NTc1LCAyNzIxLCAxMjAwNzQsIDExOTA5NiwgMTk5MjksIDAsIDE5NDU3NCwgMCwgNDI0MiwgNDI2NCwgMTIwMDc3LCAKLSAgICAxMjgxMzIsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIDAsIDk3NTQsIDExOTEwMiwgCi0gICAgNDQzNywgNzM5NDgsIDEyODY5MiwgMCwgNTUyODAsIDQyMTc0LCAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIAotICAgIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAxMjczMDksIDAsIDAsIDQyMjAwLCA0MjU2NiwgMCwgMCwgCi0gICAgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIAotICAgIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAwLCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIAotICAgIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDAsIAotICAgIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMCwgMCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAKLSAgICAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAxMjA4MTgsIAotICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDc4NTQ5LCA0MTIyMCwgCi0gICAgMTMwMzIsIDAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgMCwgMTMwMDAsIDEzNTEsIDI5MzUsIDg2OTgsIDEyNjY1LCAwLCAKLSAgICAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCAwLCAxMzAzMSwgMCwgNjM5MDEsIDAsIDM2NTcsIDEyODU3MiwgNjUyMDIsIAorICAgIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDc4Nzg2LCA1MTAzLCAKKyAgICAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMCwgNDMwMzQsIAorICAgIDExNDM4LCA2NDY3NCwgMCwgOTI2OTQsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCAKKyAgICA0MTM2NywgNTEwNSwgMTI3NTA5LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQwLCAzMDQsIDMxNzYsIDExOTAxMCwgMCwgCisgICAgOTMyLCAxMjA2MzMsIDY1NjcsIDIzOCwgNjk2NTYsIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIAorICAgIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAKKyAgICAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAKKyAgICAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDk4MzE5OCwgNjUxNjUsIDkyNzI1LCAwLCAKKyAgICA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIAorICAgIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAKKyAgICAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIDk0MDk1LCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCAKKyAgICA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgMTIwNzcsIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgCisgICAgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgCisgICAgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgCisgICAgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIDQyMzIxLCA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIAorICAgIDE5NDk1MiwgMTk0OTUxLCAxMjY2NDksIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIAorICAgIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIAorICAgIDQyOTUsIDY1MjY0LCA2ODAwNiwgMCwgOTI1NDUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIAorICAgIDY0MzgzLCAxMjAyNjUsIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIDQxOTg0LCA5MjE3LCAwLCAwLCAKKyAgICAwLCA5MTg2LCAyMDY3LCA0MDE2LCA5ODM3OTQsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCAwLCA2OTg4MCwgNTE4NCwgCisgICAgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAwLCA4MTIsIDM2MTUsIAorICAgIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCAKKyAgICA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgNjc2MzIsIAorICAgIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDY5ODcyLCAKKyAgICAxMjczNzMsIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAKKyAgICAzODgzLCA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAKKyAgICAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgMTI2NTc4LCAwLCAwLCA2NjMyNSwgMzQ2NSwgCisgICAgMjQwNSwgOTI0MCwgMCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3NzIsIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgCisgICAgNzM5MTIsIDk3OTksIDAsIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAKKyAgICAxOTQ1ODcsIDAsIDEyMTEsIDAsIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIDAsIDY4MDA1LCAxMDYyMiwgOTgzNzcwLCAwLCAKKyAgICA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIAorICAgIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIAorICAgIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCA5ODMzNjksIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgCisgICAgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAKKyAgICAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgCisgICAgMCwgNzEzMDEsIDk4Mzg1MywgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzODIsIAorICAgIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzYyLCA4MDgwLCA3MDA2LCAwLCA5ODMzNjMsIDY3NTcsIDY0MzUxLCAKKyAgICAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNjQsIDYxNDYsIDAsIDc3MSwgOTgzMzY1LCAwLCAxMjgxMiwgCisgICAgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAKKyAgICAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc2NCwgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIAorICAgIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgCisgICAgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAKKyAgICAzNTQ0LCAwLCA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIAorICAgIDEyMDU0NCwgMCwgMCwgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIAorICAgIDEyMDc3NiwgNzQzODAsIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCAKKyAgICA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCAKKyAgICA0NDUsIDEyMDU2NiwgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgOTgzMTUwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIAorICAgIDE3NzAsIDAsIDEyODg2NiwgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIAorICAgIDExODkyOCwgMTExOCwgNzEzMzQsIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCA3MjUyLCAwLCA1OTk2LCA2OTkyMSwgNDkwMywgCisgICAgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgMCwgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCAKKyAgICA2MzI0LCA0MTk3NSwgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4MzczMiwgMTI3MTUsIDY4MDAyLCAKKyAgICA5ODM0NzEsIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIAorICAgIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgCisgICAgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIAorICAgIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzc5LCAwLCA0MjI3OSwgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCAKKyAgICA5ODMzNzYsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCAKKyAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIDk4MzY4NSwgMjQ2MCwgMCwgMTE5NDQsIAorICAgIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAwLCAyMDI0LCAxMjcxODAsIDAsIAorICAgIDAsIDUzOSwgMCwgMTI3NzY1LCA5NDA1MiwgMzg1MywgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCAKKyAgICA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIAorICAgIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAKKyAgICAwLCA5ODM1NzksIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDAsIDc4ODg1LCAKKyAgICA5ODM2OTksIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgMCwgNzM3OTEsIDAsIDAsIAorICAgIDAsIDAsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCA5ODMyNTYsIDAsIAorICAgIDEyMjEwLCA3MjIxLCA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAxMjUxNiwgNDQ0NCwgMCwgCisgICAgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgMzU5MSwgNDE5NjksIDAsIAorICAgIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgCisgICAgNzQzNTMsIDAsIDgzMTYsIDAsIDAsIDk0MDYwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAxMTk4MDksIDQ4ODMsIAorICAgIDI4NSwgNDcyMywgNzAwOTksIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgCisgICAgNDIzMjMsIDAsIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDEyNjUzNSwgMCwgMCwgMCwgMCwgNDI2MzQsIDk4MzMzNSwgNDM0MzcsIAorICAgIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgMTE5MDIzLCAxNzI5LCAKKyAgICAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAwLCA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCAKKyAgICA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzQxODIsIAorICAgIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIAorICAgIDAsIDAsIDAsIDQ1MzAsIDQyNDA5LCA3MTI2LCAxOTQ1NzUsIDI3MjEsIDEyMDA3NCwgMTE5MDk2LCAxOTkyOSwgMCwgCisgICAgMTk0NTc0LCAwLCA0MjQyLCA0MjY0LCAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAKKyAgICAxMDc0MCwgMzA5NCwgMCwgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCA5ODMyMzIsIDU1MjgwLCA0MjE3NCwgCisgICAgMTk0OTI1LCA0MjQzMCwgMCwgMCwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCAwLCA2NjY2NywgCisgICAgMTI3MzA5LCAwLCAxMjY1MjEsIDQyMjAwLCA0MjU2NiwgMCwgMCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIAorICAgIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAKKyAgICAwLCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgCisgICAgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDAsIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAKKyAgICAxMjM3NywgOTgzODIzLCA5ODM4MjUsIDY4NDQ5LCA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCA3Mzc4NiwgMTI2ODMsIAorICAgIDEwNjYyLCAwLCA4MTEyLCAwLCA2NTg1MiwgMCwgMTIzNzksIDE5NDg3NywgMTIwODE4LCA0MTk2NCwgNDIyMDgsIDYzODQzLCAKKyAgICAyMDg0LCA0MTk2NSwgMCwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA3ODU0OSwgNDEyMjAsIDEzMDMyLCAwLCA1ODQsIAorICAgIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIAorICAgIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIDM2NTcsIDEyODU3MiwgNjUyMDIsIAogICAgIDYwMDAsIDExOTIwNiwgMTI0MjYsIDEyNzE4MSwgMCwgNDE3NDAsIDEyNDI4LCA0MTI4MywgNDE5MTYsIDExOTIxMCwgMCwgMCwgCiAgICAgMTI0MjksIDY3MjcsIDAsIDc1NjIsIDAsIDUxNzAsIDAsIDQxNzU1LCA2NzYsIDAsIDY2NzA0LCA2NjY2NCwgOTk3OCwgCiAgICAgNjY0OTEsIDM1MzYsIDAsIDk3NTIsIDkyMzk3LCA2MTYyLCAwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgCkBAIC0xNjQyMSw3MDYgKzE3MzMxLDczMSBAQAogICAgIDAsIDYzODY3LCA0MTMzLCAxMTM3MSwgMjEwLCA0NjAwLCAwLCA3NDU2MCwgNDEzNywgODA4MiwgNzg1MDYsIDExOTA2MiwgCiAgICAgNzg1MDQsIDY3MDQsIDQ1OTEsIDEyODAyOSwgMCwgMCwgOTY4MCwgMCwgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIDc4NTA4LCAKICAgICA0MTUwMSwgMCwgNDIwMzEsIDU3MTksIDcxNzIsIDQyNjg3LCA4MzY4LCAwLCA0MTQ5OSwgMCwgMCwgNDIyNDIsIDQxNDk4LCAKLSAgICA5MTc3OTQsIDQyMDI1LCA3ODU2NywgNjU4MDUsIDQyNDYzLCAwLCAyOTI0LCAwLCAxMjA1MTAsIDAsIDAsIDExOTIxMywgCisgICAgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgMCwgMjkyNCwgMCwgMTIwNTEwLCAwLCAwLCAxMTkyMTMsIAogICAgIDczOTQxLCAwLCA0MjMzMCwgOTE3Nzg0LCAzOTY5LCAwLCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgCi0gICAgNDIwODYsIDkxNzc5MCwgOTE3Nzg5LCAwLCAwLCAxMjg4MDEsIDAsIDAsIDMyNywgMCwgOTA0MiwgOTE3Nzc3LCA5MTc3NzYsIAotICAgIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgMTI0MzEsIDg2NjgsIDEyNDM0LCAwLCA5MTc3ODIsIAotICAgIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMjgwMTQsIAotICAgIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIDkyNywgMCwgMCwgMTI0MzYsIDAsIDQyMDIxLCAwLCAKLSAgICAwLCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDAsIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIAotICAgIDAsIDAsIDE5OTE0LCAxMjE3OSwgMCwgOTY0OCwgMTk0OTIzLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAKLSAgICAyNTk0LCAzNDQ0LCA2MzgxNywgNjQ2NTEsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgCi0gICAgNTY2NCwgMzk3MiwgMCwgMCwgMCwgMTI4NTA4LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAotICAgIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCAKLSAgICA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTk0NzgyLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIAotICAgIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAKLSAgICAxMTcyNCwgMCwgMCwgMTI3MTA0LCAxMjg1MjYsIDAsIDAsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIAotICAgIDc0MTk3LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgMTIwMTkwLCAxOTQ3NzMsIAotICAgIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMCwgMCwgCi0gICAgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCAKLSAgICA1MDgyLCAxMTk4NTksIDEyMDE4NCwgODUxOSwgMCwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMCwgMTIwMTgzLCAKLSAgICA3ODIxOSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgNzg0NDQsIDEyMDE4NSwgMTIzNzEsIDAsIDg0MDcsIDAsIAotICAgIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCAwLCAwLCAxMjM2NywgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIAotICAgIDEyMDM3LCA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgCi0gICAgMTA2NDksIDAsIDUwNzcsIDEyNzEwOCwgMTA4ODAsIDYzOTI3LCA1MDc1LCA5MTc4ODEsIDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgMCwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCA1MjcyLCAKLSAgICAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIDk4MDMsIDAsIAotICAgIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgNTE3NywgCi0gICAgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgCi0gICAgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIDAsIDAsIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgNTk5OCwgMCwgCi0gICAgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgMCwgNzg1NzEsIDAsIDAsIDE5NDU2MiwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgCi0gICAgMTE5MjA3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAKLSAgICAyNjcwLCA0MTY3LCAwLCAxMTcyMywgMCwgNzQxMjAsIDAsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIAotICAgIDAsIDAsIDAsIDExNzQyLCAyNDE5LCAwLCAxMTQ5MywgMTIzMzQsIDE5NDkxMywgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAKLSAgICAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCAKLSAgICA0MjAwMiwgMTI0MDQsIDAsIDAsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMCwgODYxLCAwLCAwLCAKLSAgICAwLCAwLCA2NTU3NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCA2NjMxLCAwLCAxMjgxNiwgNzQ1ODMsIAorICAgIDQyMDg2LCAxMjY2MTUsIDIyMTksIDAsIDAsIDEyODgwMSwgMTk0ODM3LCAwLCAzMjcsIDAsIDkwNDIsIDkxNzc3NywgCisgICAgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIDEyNDMxLCA4NjY4LCAxMjQzNCwgOTgzODI2LCAKKyAgICA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAKKyAgICAxMjgwMTQsIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIDkyNywgMCwgMCwgMTI0MzYsIAorICAgIDk4MzIzOSwgNDIwMjEsIDAsIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMCwgNzgxOTcsIAorICAgIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDk4MzgwMywgMjI5NiwgMTk0OTIzLCAKKyAgICA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgNjQ2NTEsIDAsIDQxNTAzLCAKKyAgICAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgNTY2NCwgMzk3MiwgMCwgMCwgMCwgMTI4NTA4LCAxMjQxNiwgCisgICAgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAzODgyLCA4NTMyLCA5MTc3NzEsIAorICAgIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgCisgICAgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIAorICAgIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAxMTcyNCwgMCwgMCwgMTI3MTA0LCAxMjY2MTksIDAsIDAsIDgwMjcsIDEwOTk3LCAKKyAgICA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgCisgICAgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCAKKyAgICA2ODY1MSwgMCwgOTgzODg2LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIAorICAgIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCA5ODMyMzUsIDMwMTQsIDUwODEsIDY1ODUzLCAKKyAgICAxMjA3MTUsIDAsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgCisgICAgMTIzNzEsIDAsIDg0MDcsIDAsIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCA3MTMwMywgOTgzOTI0LCAxMjM2NywgCisgICAgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIDEyMDM3LCA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIAorICAgIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgCisgICAgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIDk4MzY5NiwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgCisgICAgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIAorICAgIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIDk4MDMsIDAsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIAorICAgIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCAKKyAgICA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIAorICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIAorICAgIDk0MTA0LCA3ODU3MSwgMCwgNzEzMjgsIDE5NDU2MiwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgMTE5MjA3LCAwLCA4NTc4LCAKKyAgICA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIAorICAgIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgMCwgMCwgCisgICAgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAKKyAgICAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIDQyMDAyLCAKKyAgICAxMjQwNCwgOTgzNTUzLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgODYxLCAwLCAKKyAgICAwLCAwLCAwLCA0Mzc1NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCA2NjMxLCAwLCAxMjgxNiwgNDM3NTksIAogICAgIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgCi0gICAgMCwgMCwgODUzLCA0MjY5MywgMTk1MDE0LCAwLCAwLCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIAotICAgIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDEyMDc5NywgOTkwMCwgMCwgMCwgMTk0OTE5LCAwLCAKLSAgICAxMjc4MzAsIDAsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIDAsIDAsIDAsIDc3ODI0LCAwLCA0OTAwLCAKLSAgICAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNzg1OTQsIAotICAgIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAwLCAKLSAgICAxMzA1NCwgMTIzOTQsIDAsIDAsIDAsIDEzMDUzLCAwLCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIAotICAgIDc4NTkwLCA3ODU4MywgMCwgMCwgMCwgMTk0OTE1LCA3MjY3LCAwLCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAwLCAKLSAgICAxMjcwNiwgNzc4NDAsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCAwLCA2Mzk5NywgNjM5MTAsIAotICAgIDYzOTk2LCAzMDc3LCAwLCAwLCAxNTEyLCAwLCAxMjU4OSwgNDE0NzksIDEyODMxMywgMCwgNDMzMzksIDAsIDk4MzYsIAotICAgIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgCi0gICAgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgCi0gICAgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDYzOTkyLCAKLSAgICA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDAsIDQ5MzksIAotICAgIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgMTk0Njg4LCAwLCAwLCAxMjY0OSwgMCwgMCwgODI0NywgNTA3LCAKLSAgICA5MSwgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTk0Njg5LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgCi0gICAgMTE5ODMxLCAwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDAsIDExOTYwMCwgMCwgCi0gICAgMCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCi0gICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKLSAgICAxMjIxOSwgMCwgMTI3NTI4LCA0MjgxMCwgMTA0OTIsIDAsIDAsIDAsIDQzMTE5LCAwLCAxMjA3NTMsIDEyNDAzLCAyNTAwLCAKLSAgICAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCA3NDExMywgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgCi0gICAgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDAsIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCAwLCAKLSAgICAwLCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIAotICAgIDEyMDY0NSwgNTE0NywgMCwgMCwgNzQ1MjQsIDAsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCi0gICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgCi0gICAgODg5NywgMCwgMCwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDAsIDExMjMsIAotICAgIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCAKLSAgICA3OTQ1LCAwLCA0NDAyLCA5OTcwLCAxMjQwMiwgMCwgNDIzOTIsIDEzMDUsIDEyNDA4LCAwLCA0NDAwNywgMCwgMCwgNDE0NjQsIAotICAgIDEyNDExLCAxMjk2OSwgMTIwODI0LCA0MTQ2NSwgMCwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgMCwgOTA5MywgMCwgOTE0NywgMCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA3Mzc3NiwgNjc1MCwgCi0gICAgMTk1MDE4LCAwLCA5NTk0LCAwLCAwLCA0MzUyNywgMCwgNzI3LCAxOTQ3MDMsIDAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAKLSAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDEyMzY0LCAwLCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDAsIDkyMzQzLCAKLSAgICAwLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCAKLSAgICA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgMCwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIAorICAgIDAsIDk4Mzg3NSwgODUzLCA0MjY5MywgMTk1MDE0LCAwLCA5ODM2MzgsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIAorICAgIDk0OTEsIDkxNzkxMywgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgMTIwNzk3LCA5OTAwLCAKKyAgICA3NzUwLCAwLCAxOTQ5MTksIDAsIDEyNzgzMCwgMCwgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgMCwgMCwgCisgICAgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCA3NDc2OCwgODk3MSwgNzg1OTMsIAorICAgIDQzMTEzLCA5NzAyLCA3ODU5NCwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCA3NDE4NSwgOTI0ODEsIDkyNzEwLCAKKyAgICAxMjM5NywgNzc4MjcsIDAsIDEzMDU0LCAxMjM5NCwgMCwgMCwgMCwgMTMwNTMsIDAsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCAKKyAgICA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCAwLCAwLCAwLCAxOTQ5MTUsIDcyNjcsIDAsIDc0ODMzLCAxMjgxODEsIAorICAgIDU5OTMsIDI4MTksIDAsIDEyNzA2LCA3Nzg0MCwgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDAsIAorICAgIDYzOTk3LCA2MzkxMCwgNjM5OTYsIDMwNzcsIDAsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgMCwgCisgICAgNDMzMzksIDAsIDk4MzYsIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgCisgICAgMTY2NCwgMTg1MCwgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIAorICAgIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIAorICAgIDExNDcsIDYzOTkyLCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIAorICAgIDAsIDQ5MzksIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgMTk0Njg4LCA5ODMxOTAsIDAsIDEyNjQ5LCAwLCAKKyAgICAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIAorICAgIDExOTgxMywgNzc0LCAxMTk4MjksIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgCisgICAgOTgzMTA1LCAxMTk2MDAsIDAsIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCAKKyAgICA0MTA3MywgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCAKKyAgICA0MjM3OSwgMCwgNzUzNCwgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCA5ODM2NTIsIDAsIDQzMTE5LCAwLCAKKyAgICAxMjA3NTMsIDEyNDAzLCAyNTAwLCAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCA3NDExMywgMjM0MywgNDEwMywgCisgICAgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDcwMDg3LCAxMjAxNDgsIDY2MzY5LCA1ODYxLCAKKyAgICAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgOTgzODMwLCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgCisgICAgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgNTE0NywgMCwgMCwgNzQ1MjQsIDAsIDE5MjgsIDAsIAorICAgIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgCisgICAgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgODg5NywgMTIwMjM0LCAwLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIAorICAgIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAorICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDAsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKKyAgICA5ODMxMzYsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAxMjQxMSwgMTI5NjksIDEyMDgyNCwgCisgICAgNDE0NjUsIDk4MzU2NSwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgMCwgOTA5MywgCisgICAgMCwgOTE0NywgMTI4Nzg3LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDczNzc2LCA2NzUwLCAxOTUwMTgsIDAsIAorICAgIDk1OTQsIDAsIDAsIDQzNTI3LCAwLCA3MjcsIDE5NDcwMywgMTk1MDIzLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgCisgICAgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAwLCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDAsIDkyMzQzLCAwLCAKKyAgICAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAKKyAgICAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgOTgzMzA1LCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgCiAgICAgNjM5NjUsIDAsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIAogICAgIDg3ODgsIDEzNTcsIDY0ODUxLCA2NTc0MywgMCwgODc3NCwgMCwgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDAsIDE5MzMsIAogICAgIDY5NjU1LCA5NTY0LCAwLCA5MjQzNSwgNzM4NjYsIDAsIDAsIDI0ODcsIDY3NjE0LCAzMTIxLCAxODA0LCAzMzExLCA2NzYxNSwgCi0gICAgMCwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAKLSAgICAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCA2NDY2MywgMCwgMCwgNDU2MSwgMjEwMSwgCi0gICAgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAwLCAwLCAKLSAgICA2OTY3LCAwLCAwLCA5Nzk2LCAwLCAzMzMsIDAsIDAsIDgxNDQsIDIxMTcsIDAsIDAsIDEyNDA2LCAwLCAxOTkzMSwgCi0gICAgMTE5MDg5LCA2Njc4LCA3NzY5LCAwLCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgNDMxMDEsIDk5ODEsIDAsIAotICAgIDQwOTg2LCA0MTI3LCA2NjQ4NywgMCwgNDIyMDIsIDEyNzU0LCAxOTUwMjIsIDAsIDAsIDAsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgCi0gICAgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMjk4NSwgNDUzMywgMTk1MDIxLCA3NDAwMywgNjQ5MCwgMCwgCi0gICAgMTIwMzgsIDAsIDAsIDEyMDcwNCwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAxOTQ4LCAxMTkwMDcsIDAsIDk1MiwgMTI4MjM1LCAKLSAgICAwLCAwLCAxMjA4MDIsIDY0NDksIDk0OTQsIDEyMDMxMywgMCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCAKLSAgICA2NDE3MCwgMCwgMCwgMzQzNiwgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDY2NzA4LCAwLCAwLCAKLSAgICA2NzU5OCwgMCwgMCwgMCwgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMCwgMCwgMCwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCi0gICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMCwgNjc2MDYsIDExOTA4MywgMCwgNDIyMTcsIAotICAgIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgMCwgMCwgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgCi0gICAgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgMTEyODEsIDAsIDY0MjEzLCAxNDY5LCAKLSAgICA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCAKLSAgICA4NDUzLCA0MTM0LCAwLCA3NDg0NywgNjY1NzYsIDEyNzkxNiwgMCwgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgCi0gICAgMTI4NDYsIDEyNzI5MSwgMTI3MjkyLCAxMTkxOSwgNjQ5NjIsIDEyNzI4NywgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgCi0gICAgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgCi0gICAgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgMTE5NTg1LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCAKLSAgICA2NjQ5OCwgOTgyMSwgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAKLSAgICAxMjAwNjIsIDkyNjY5LCAwLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgCi0gICAgNTI2MCwgNDMxNDMsIDAsIDMyNiwgMTIwMTMxLCA2ODQyMywgMCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTk0OTI0LCAKLSAgICA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgNDI3MjAsIDEyMTQwLCAKLSAgICA5NTcyLCAwLCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCi0gICAgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCAKLSAgICA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDAsIDEwNDY0LCAwLCAwLCAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIAotICAgIDEyODA3MiwgNjc5LCA2NDAxMywgMCwgNTg1MCwgNzU4LCA3NTM2LCAwLCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgMCwgCi0gICAgNjQwMDUsIDQwNTgsIDExOTAxOSwgMCwgNjQ2NjAsIDAsIDExOTA1MCwgMCwgMCwgMTEzOSwgNDMyOTgsIDY0MDI3LCAKLSAgICA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMCwgMTA3NzQsIDEyODAyMCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDAsIDE4NTIsIAotICAgIDMwNTcsIDEyODExMywgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgMCwgOTIzMjIsIDc2NDUsIDEyODU0LCA3NDMzOCwgCi0gICAgMzQ5NiwgMCwgMCwgMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIDEzMzA5LCAKLSAgICAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTk0OTA5LCAxOTQ4OTcsIDE2ODIsIAotICAgIDE5NDg5NiwgMTk0OTExLCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCAwLCAwLCA3MzgxNCwgMTE0MTIsIDY3NjgsIDEwNzI4LCAKLSAgICAxOTQ4MzAsIDExOTAxMCwgMTE4ODYzLCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAwLCA0MzA0MCwgMTgzMywgMTE1NzYsIDAsIAotICAgIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDE5NDg0OCwgNzUzNSwgODA4NSwgNDI1MjUsIDEyMDM4NywgCisgICAgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDEyMDU5OCwgMTI3NDc1LCAwLCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCAKKyAgICA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIDUxMCwgNjQ2NjMsIDAsIDAsIDQ1NjEsIAorICAgIDIxMDEsIDEzOTgsIDAsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIDAsIDg0MCwgMCwgCisgICAgMTI2NTE4LCA3MTAxLCA2OTY3LCAwLCAxOTQ4OTgsIDk3OTYsIDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIAorICAgIDk4MzU5NSwgMTI0MDYsIDAsIDE5OTMxLCAxMTkwODksIDY2NzgsIDc3NjksIDAsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCAKKyAgICA0NzY0LCA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCAwLCA0MjIwMiwgMTI3NTQsIDE5NTAyMiwgMCwgMCwgCisgICAgOTQwOTcsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMjk4NSwgCisgICAgNDUzMywgMTk1MDIxLCA3NDAwMywgNjQ5MCwgMCwgMTIwMzgsIDAsIDAsIDEyMDcwNCwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAKKyAgICAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDAsIDAsIDEyMDgwMiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAwLCA0MzA5OCwgCisgICAgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCAwLCAwLCAzNDM2LCAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgCisgICAgNjY3NiwgMzkzMCwgNDI2MTUsIDAsIDAsIDY3NTk4LCAwLCAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAwLCAwLCAKKyAgICAwLCA4NTAwLCA0MjIyMiwgMTIwMTQyLCA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAwLCAKKyAgICA2NzYwNiwgMTE5MDgzLCAwLCA0MjIxNywgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCAwLCA5ODM3MzgsIDYzODQxLCAKKyAgICA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAxMDIyOCwgCisgICAgNjQ5NTcsIDExMjgxLCAwLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgCisgICAgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCAwLCA3NDg0NywgNjY1NzYsIDEyNzkxNiwgMCwgCisgICAgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgMTI4NDYsIDEyNzI5MSwgMTI3MjkyLCAxMTkxOSwgNjQ5NjIsIAorICAgIDEyNzI4NywgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAorICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCisgICAgMTE5NTg1LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCAKKyAgICA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAxMjAwNjIsIDkyNjY5LCA3MTMzMiwgMTI3MDUyLCA0MjU4NywgNDIyMTQsIAorICAgIDQxMzk0LCAwLCA0NzYzLCA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAKKyAgICAwLCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxOTQ5MjQsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgCisgICAgNDUzLCA0MTM5NiwgMTIwNTI0LCA0MjcyMCwgMTIxNDAsIDk1NzIsIDAsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIAorICAgIDEyNjQ5MCwgMTk0ODg1LCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIDk5NzcsIDAsIDAsIDY1NzU5LCAxMDc2NSwgCisgICAgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgOTU4OSwgNjQ3NTUsIDAsIDY0MDIwLCAKKyAgICAxMjY2MDQsIDEwNDY0LCAwLCAwLCAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgMCwgCisgICAgNTg1MCwgNzU4LCA3NTM2LCAwLCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgOTgzNTY3LCA2NDAwNSwgNDA1OCwgCisgICAgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAwLCAxMTkwNTAsIDAsIDk4MzA2OSwgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgCisgICAgODk3MCwgMCwgOTkzNCwgOTgzMDk0LCAxMDc3NCwgMTI4MDIwLCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMCwgMTg1MiwgCisgICAgMzA1NywgNjQwNDYsIDczNzQ0LCA2NDAzNCwgNjQwMzksIDAsIDAsIDAsIDE5NDg5OSwgOTIzMjIsIDc2NDUsIDEyODU0LCAKKyAgICA3NDMzOCwgMzQ5NiwgMCwgMCwgMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAorICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTk0OTA5LCAxOTQ4OTcsIAorICAgIDE2ODIsIDE5NDg5NiwgMTk0OTExLCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCAwLCAwLCA3MzgxNCwgMTE0MTIsIDY3NjgsIAorICAgIDEwNzI4LCAxOTQ4MzAsIDcxMzE2LCAxMTg4NjMsIDQzMzExLCA2NDk2NiwgMTE1NzcsIDAsIDQzMDQwLCAxODMzLCAxMTU3NiwgCisgICAgMCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTk0ODQ4LCA3NTM1LCA4MDg1LCA0MjUyNSwgMTIwMzg3LCAKICAgICA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxOTQ3MTEsIDY0NDgzLCA2NTY5MywgMCwgMCwgCi0gICAgMCwgNjk2OTUsIDQyMjQwLCAwLCAwLCA0Mjg2NCwgMCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAKLSAgICAxMjc1MzUsIDY3ODQwLCAwLCAwLCAxMjg3OTMsIDAsIDEwOTg2LCA2NDY4MywgMCwgMCwgMTk0NzA5LCAwLCAwLCA5ODc5LCAKLSAgICAwLCAwLCA0MTU4LCAxMjgwNTAsIDY4MTY2LCAwLCAwLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDAsIDUxNDIsIDI0MDcsIAotICAgIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCAwLCA1NTIxNywgMCwgNjM4NzAsIDQzMTYzLCAwLCAwLCA5MjM5MCwgCi0gICAgNDI4NjcsIDE4MzQsIDAsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCAxMTkwNDAsIDg2NjIsIDAsIDAsIDI2NTIsIAotICAgIDEyMDUyNywgNzE2NCwgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDkyMjMzLCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgCisgICAgMCwgNjk2OTUsIDQyMjQwLCAwLCAxMjY2NTEsIDQyODY0LCAxMjY0OTgsIDY0NjY3LCA0MTg2OCwgMTE4NCwgMCwgODE1LCAKKyAgICAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjQyLCAwLCA2NjE5NywgMCwgMTA5ODYsIDY0NjgzLCA5ODM3NzYsIDAsIDM0NTUsIAorICAgIDAsIDAsIDk4NzksIDAsIDAsIDQxNTgsIDEyODA1MCwgNjgxNjYsIDAsIDAsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgMCwgCisgICAgNTE0MiwgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDAsIDU1MjE3LCAwLCA2Mzg3MCwgNDMxNjMsIDAsIAorICAgIDAsIDkyMzkwLCA0Mjg2NywgMTgzNCwgMCwgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDExOTA0MCwgODY2MiwgMCwgMCwgCisgICAgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgOTIyMzMsIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCAKICAgICA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAzMjcsIDc4NjIwLCA4NTMxLCAxMjQ5OSwgNjI4MCwgMTIzMjQsIDExODg1NCwgCiAgICAgNjUyMzgsIDY4Mzc0LCA0ODMyLCA2NTU3MywgMCwgNjI3OSwgMTI1MDgsIDEyOTA0LCAxMjUwMiwgOTE2MSwgMCwgMTYyMCwgCi0gICAgNjQ0MzYsIDM2MDEsIDE5NTA5NCwgMTI4MDczLCAwLCA2MDksIDExNTU1LCAwLCAxMjQ5NiwgMTI3ODM5LCA3NDE4MSwgCi0gICAgNDM0MywgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgMCwgCi0gICAgNDM1NjUsIDEyNzA4MiwgMCwgMTI2OTYsIDEyODI1NiwgMCwgMTk0Nzk2LCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCAwLCAKLSAgICA0MjgxOCwgMTI4Njg4LCAwLCAxMjA0OTAsIDAsIDExOTEzNywgMTUwNiwgNDM1NjIsIDAsIDAsIDAsIDEyNjUxLCAwLCAKLSAgICA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgOTE3ODM4LCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAwLCAKLSAgICAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDAsIDAsIDEyMDMzLCA0MjE3OCwgMCwgNjk3NjAsIAotICAgIDQyNTcxLCA5MjYzNSwgMCwgMCwgMCwgMCwgMCwgMTI3MTc2LCAzMTc4LCAwLCAwLCA5MjcwNCwgMCwgOTA4MCwgMTI3MDAwLCAKLSAgICAxMjAzNTIsIDAsIDY4MjA5LCAwLCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgCi0gICAgMCwgMCwgMCwgMCwgMTI4MjA4LCAwLCA1MjY1LCA2OTIzNSwgMCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgMCwgNDMwNDUsIDAsIAotICAgIDAsIDQzMzQ1LCAwLCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIDAsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgCi0gICAgNzk1LCAwLCAwLCAxMjQ2MiwgMTA5MzAsIDEwODMxLCAwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgMCwgMTIwODExLCAwLCAKLSAgICAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKLSAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIDY0NTk1LCAxMjcyOTQsIDAsIAotICAgIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIDAsIDAsIDExOTA2MCwgCi0gICAgNjQ5NTMsIDU0MDYsIDE5OTIwLCA5MjIxNiwgNjY1MTAsIDM1OTAsIDAsIDExMzAsIDAsIDAsIDQyMDE2LCAxMTgyMywgCi0gICAgNDMwMjMsIDAsIDExODg5NiwgNzc0MiwgMCwgMTMyODAsIDAsIDkzMjYsIDczODI2LCA1MzEwLCA3NDgxMiwgNzg1ODQsIAotICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIDEyMDgwMywgMCwgCi0gICAgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMCwgMTIwNjMxLCAwLCA0MzA2MywgNzQ1MTksIDEyNzE4MiwgMCwgMCwgMCwgCi0gICAgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgMTE1OTQsIDEyODI0NywgMCwgMTE4OTkwLCAKLSAgICAxMDQ5MSwgMCwgNjQ0MTIsIDAsIDAsIDU1ODcsIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIAotICAgIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgMCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgMCwgCi0gICAgNDI3NjYsIDAsIDY2NTY2LCA5OTgzLCAwLCAxMTkxMDUsIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgCi0gICAgMTQ2MSwgOTEwLCAxMTkxMzMsIDAsIDY3NDksIDM2NTgsIDAsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMCwgCi0gICAgNjc2NjgsIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMCwgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKLSAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKLSAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDAsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAKLSAgICAwLCA2NDcsIDAsIDYzMywgMTIwNzQ0LCAwLCAwLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCAKLSAgICA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAzMTk1LCA1NTUwLCAwLCA3ODk3LCAwLCAxMjAzLCA3NDM5NiwgMTgxMywgCi0gICAgNjQ1NDQsIDQxMzExLCAxMjA5MCwgMCwgMjg3NywgMCwgMCwgMTY3NSwgMCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAKLSAgICAxMTkwNzcsIDAsIDAsIDAsIDAsIDAsIDQzMjQ0LCAwLCAwLCAwLCAxMTk1NjEsIDAsIDAsIDE5NDkyMSwgMTI4MTYwLCAKLSAgICA5OTM5LCAwLCAwLCA3Nzg2MCwgMCwgMCwgMjcwLCAwLCAxMDcxNCwgMCwgMCwgMCwgMCwgMCwgNjUzNzIsIDAsIDc0MDM4LCAKLSAgICAxMTk1NTgsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDE5NDkwOCwgMCwgMCwgNzA3LCAwLCAwLCA5MjgyLCA2NjQ4OSwgCi0gICAgMjI0LCAwLCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCAwLCAzODQxLCA2ODYzNCwgMCwgMTA3MzIsIAotICAgIDY4NjQwLCA4NTAsIDQ5NzIsIDAsIDY0Njk5LCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCAwLCAxMTU0NCwgMTAyMDMsIAotICAgIDk2MDgsIDAsIDAsIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgNzc3LCAxMjAxODcsIAotICAgIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDAsIDk0NTQsIDYzNzc4LCA4NjU4LCAKLSAgICA0MjUyOCwgNzgwMDAsIDI3MDUsIDkxNzk3NSwgNDE1MjAsIDAsIDAsIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgMCwgCi0gICAgMjcwMSwgMCwgMCwgNTc2NywgMCwgMCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgMCwgNjM3NDUsIDE3NDgsIAotICAgIDYzNzcwLCAwLCAwLCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAwLCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIAotICAgIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgMCwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCAKLSAgICA2Mzg2LCA2Mzc4MywgMCwgMCwgMTI3MTczLCAwLCAwLCAwLCA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIAotICAgIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIAotICAgIDAsIDAsIDM4OTQsIDY1NTQzLCAwLCAxOTQ4NDIsIDAsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIAotICAgIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgMCwgMTI3MDM5LCAxMjQ5MywgCi0gICAgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCAwLCAwLCAxMTYxMSwgCi0gICAgMTE2MzIsIDEyNzA0MSwgNjYyMTMsIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCAKLSAgICA4NTA3LCA2NjIzNiwgNjYyMTEsIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgMCwgNzkwOSwgCi0gICAgNjYyMzQsIDExNjA1LCA2Mzc1OSwgMCwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAKLSAgICAxMjQ5NCwgNzM3NjEsIDEyNDkyLCAxMjY2OSwgMCwgMCwgNzQxNTMsIDAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCi0gICAgMCwgODYxMiwgNDg4NSwgNzQwNTMsIDAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAwLCA2Mzc5NywgCi0gICAgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCA3ODA0MCwgNDcwLCAKLSAgICA3ODAzOCwgNzgwMzUsIDc4MDM2LCAwLCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCAwLCAKLSAgICA3NDU3OSwgNzIzOSwgNzAwMSwgODYyMywgMCwgMTI4MDUyLCAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgCi0gICAgMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgMTI3MzA3LCAxMjcwNjcsIDgzMTEsIDEyNTEwLCA0MTgwMywgMTMwMzksIAotICAgIDEyNzA3MiwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgMCwgMCwgMCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIAotICAgIDEyNDc3LCA3NzkxNiwgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIDIzMDksIDEzMTIsIDgxNzMsIAotICAgIDEyODg3MSwgMTI0NjksIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgMTE1MjQsIDkzOTUsIAotICAgIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIAotICAgIDkzODQsIDY3NDAsIDAsIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIDEyODE2NywgCi0gICAgNzk0OCwgOTIzNiwgMCwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgMCwgMCwgMTE5OTgsIDEyMDgyLCAKLSAgICAxMDkyNCwgMzE0NywgMCwgMTIwNjg0LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgCi0gICAgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgMCwgOTM3MiwgMTI0NDQsIDAsIDAsIDEzMDE2LCAKLSAgICA4MjEwLCAwLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgMCwgNDE1NSwgMCwgMCwgCi0gICAgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTI3ODA1LCAxMjcyNDAsIDAsIDk5MjIsIDQzMzA5LCAwLCAKLSAgICAxMjUyNSwgMCwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDAsIDAsIDExMDMwLCAwLCAKLSAgICA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxOTQ2NjgsIDAsIDEyNTA2LCAwLCAKLSAgICAxMjIzMSwgMCwgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgNDEwNDcsIAotICAgIDEyMDMyMSwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMjAzMjAsIDExMDcsIDAsIAotICAgIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgCi0gICAgMTI4ODE3LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAwLCA0OTgsIDY0NDcxLCAxMjAzMjQsIAorICAgIDY0NDM2LCAzNjAxLCAxOTUwOTQsIDEyODA3MywgOTgzNTYyLCA2MDksIDExNTU1LCA5ODMwOTksIDEyNDk2LCAxMjc4MzksIAorICAgIDc0MTgxLCA0MzQzLCAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAKKyAgICAwLCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgMTI2OTYsIDEyODI1NiwgMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIAorICAgIDk4MzIwNCwgNDI4MTgsIDEyNjYzMiwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCA5MjQ5MSwgMCwgCisgICAgMTI2NTEsIDAsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKKyAgICAxMTg4NDQsIDAsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAKKyAgICAwLCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCAKKyAgICA5MDgwLCAxMjcwMDAsIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCAKKyAgICA2NTE2NiwgMTE5MTEyLCAwLCAwLCAwLCAwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIAorICAgIDAsIDQzMDQ1LCAwLCAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAwLCA3NDM0OCwgMCwgCisgICAgNDMzNDYsIDgxMTYsIDc5NSwgMCwgMCwgMTI0NjIsIDEwOTMwLCAxMDgzMSwgMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIAorICAgIDk4MzYwMiwgMTIwODExLCAwLCAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgCisgICAgNTUyNTcsIDczNzcxLCAxNzY2LCAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIAorICAgIDY0NTk1LCAxMjcyOTQsIDAsIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIAorICAgIDAsIDAsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDg2NCwgMTEzMCwgMCwgMCwgCisgICAgNDIwMTYsIDExODIzLCA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCAKKyAgICA3NDgxMiwgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIAorICAgIDEyMDgwMywgOTgzODM5LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgCisgICAgMTI3MTgyLCAwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgCisgICAgMTE1OTQsIDEyODI0NywgMCwgMTE4OTkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAwLCA1NTg3LCA0Mjg2NSwgNjQ0MDQsIAorICAgIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIDAsIDY2NjEwLCAKKyAgICAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDAsIDQyNzY2LCA5ODM4NTcsIDIyMTAsIDk5ODMsIDAsIDk0MDA5LCAwLCAwLCAwLCAKKyAgICA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgCisgICAgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAxMzE0MywgMCwgOTE5MywgMTEwOTcsIAorICAgIDU3MDMsIDAsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIAorICAgIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIAorICAgIDQzNDQ5LCAwLCAwLCA4MjI1LCAwLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgCisgICAgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAKKyAgICAzMTk1LCA1NTUwLCA5ODM1NTQsIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAKKyAgICAyODc3LCAwLCAwLCAxNjc1LCA2OTg0MCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgCisgICAgOTgzNjExLCAwLCAwLCAwLCA0MzI0NCwgMCwgMCwgOTgzOTA3LCAxMTk1NjEsIDk4MzA3OCwgMCwgMTk0OTIxLCAxMjgxNjAsIAorICAgIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDAsIDAsIDI3MCwgMCwgMTA3MTQsIDAsIDAsIDAsIDAsIDAsIDY1MzcyLCAwLCAKKyAgICA3NDAzOCwgMTE5NTU4LCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCAxOTQ5MDgsIDAsIDAsIDcwNywgMCwgMCwgOTI4MiwgCisgICAgNjY0ODksIDIyNCwgMCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAwLCA2ODY0NCwgMCwgMzg0MSwgNjg2MzQsIDAsIAorICAgIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAwLCAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCA2ODYyNywgOTgzNzA5LCAKKyAgICAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDAsIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgCisgICAgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDk4MzIzMCwgCisgICAgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIAorICAgIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgMCwgMTI3MDAyLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgCisgICAgNjY3MDEsIDYzNzcyLCA5ODM4MDUsIDYzNzQ1LCAxNzQ4LCA2Mzc3MCwgMCwgMCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgCisgICAgMzA2MSwgMCwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAorICAgIDAsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDAsIDAsIDkyNTM1LCAwLCAwLCAwLCAKKyAgICA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgCisgICAgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDAsIAorICAgIDE5NDg0MiwgOTgzNTg4LCA0OTMsIDAsIDQzMTk3LCAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAKKyAgICAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIDAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAKKyAgICAxMjQ5MSwgMCwgNjQ5MTEsIDkyNjE1LCAyMDk2LCA2NTEyMCwgMCwgNzgyMTksIDk4MzA4MSwgMTE2MTEsIDExNjMyLCAKKyAgICAxMjcwNDEsIDY2MjEzLCA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgCisgICAgNjYyMzYsIDY2MjExLCA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgCisgICAgNjYyMzQsIDExNjA1LCA2Mzc1OSwgOTgzNjQ1LCA2NjIwOCwgNzM5OTksIDYzNzk5LCA2MzgwMywgMjQ0LCAxMTU0MiwgCisgICAgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgMTI0OTIsIDEyNjY5LCAwLCAwLCA3NDE1MywgMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIAorICAgIDEzMDQwLCAwLCA4NjEyLCA0ODg1LCA3NDA1MywgMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDAsIAorICAgIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIDc4MDQwLCAKKyAgICA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIAorICAgIDEyNTE0LCAwLCA3NDU3OSwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyODA1MiwgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgCisgICAgMTE2MTUsIDYxMDQsIDAsIDAsIDY1OSwgNjA5OCwgMCwgMTIyMzQsIDEyNzMwNywgMTI3MDY3LCA4MzExLCAxMjUxMCwgCisgICAgNDE4MDMsIDEzMDM5LCAxMjcwNzIsIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDk4MzkxMSwgMCwgMCwgMjMyMywgCisgICAgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIAorICAgIDIzMDksIDEzMTIsIDgxNzMsIDEyODg3MSwgMTI0NjksIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgCisgICAgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIAorICAgIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDAsIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIAorICAgIDIzMTMsIDEyODE2NywgNzk0OCwgOTIzNiwgOTI1NzEsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDAsIDAsIAorICAgIDExOTk4LCAxMjA4MiwgMTA5MjQsIDMxNDcsIDAsIDEyMDY4NCwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIAorICAgIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc2OSwgOTM3MiwgCisgICAgMTI0NDQsIDAsIDAsIDEzMDE2LCA4MjEwLCA5ODM5NDksIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgCisgICAgODc0NCwgNzI2LCAwLCA5ODM4MjgsIDQxNTUsIDAsIDAsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIAorICAgIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgOTgzODMyLCAxMjUyNSwgOTgzNDYzLCAxMjAxNiwgNjU3NzAsIAorICAgIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIAorICAgIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgMCwgMTI1MDYsIDAsIDEyMjMxLCAwLCAxMjUwMCwgCisgICAgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCA0MTA0NywgMTIwMzIxLCA3ODM5NSwgCisgICAgNzgzOTQsIDc0MDY5LCA3Nzk5NSwgNzgzOTEsIDM2MDgsIDgyODEsIDEyMDMyMCwgMTEwNywgMCwgOTA3NiwgODg2MiwgCisgICAgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCAxMjY1MTQsIAorICAgIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDk4MzkzOCwgNDk4LCA2NDQ3MSwgMTIwMzI0LCAKICAgICAxMjg1NjcsIDEyNTI5LCA4MDQyLCAwLCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgMCwgNjk3MTksIDMyMzEsIDAsIDY0MjIsIAogICAgIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgNzg3MzgsIAogICAgIDQxNDMzLCA0NzE5LCA0NjksIDAsIDQzNjMsIDMzMTMsIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCAKICAgICA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgMCwgOTkyMCwgMTIyMTUsIDAsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIAogICAgIDk2MDcsIDAsIDk2NjMsIDAsIDExOTYzNCwgNjUwMywgNDExMTAsIDAsIDE0OTEsIDAsIDAsIDEyNzMwNCwgNDEwNjEsIDAsIAotICAgIDAsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCA5NzM4LCAKLSAgICA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgMTI3Nzc2LCAKLSAgICA5OTQwLCAxMjcyOTksIDc2OTIsIDAsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA0MTEzMywgOTgxNiwgCi0gICAgMTI4MDc0LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAwLCAxMjcyOTgsIDY0MTM5LCAKKyAgICAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCAKKyAgICA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgCisgICAgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgyNCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDQxMTMzLCAKKyAgICA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDAsIDEyNzI5OCwgNjQxMzksIAogICAgIDc4MjMxLCA2NDExLCAxMjkxMCwgNzg1NTQsIDY2NjQ0LCAxMzAyOCwgNjczNywgMTI1MzcsIDAsIDAsIDY0MTM2LCAxMjUzNiwgCi0gICAgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCAwLCAxMzAzMCwgNjcwMiwgNDUyNywgMCwgMTI1MzgsIDEyODgxMCwgMCwgNjU1OTksIAotICAgIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgMCwgNjExNywgCi0gICAgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAwLCAxMDE0OSwgNzQxMTgsIDAsIDEyNzI4NiwgCi0gICAgMTI0ODEsIDAsIDEyNDg4LCAwLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgMTI4NTcxLCA3Mzc2NiwgMCwgCi0gICAgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAwLCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgCi0gICAgNzg1NTcsIDc4NTU4LCAwLCA3ODU1NiwgODQ4LCA5ODY4LCAwLCA2NDI0LCA3ODU2OCwgMTE5MzM4LCA3ODU2NSwgNzQwMzEsIAotICAgIDc4NTYzLCA3ODU2NCwgMjM1MiwgNzg1NzIsIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAwLCAwLCAxMzAyNiwgNjc2MiwgCi0gICAgNzg1NzksIDc4NTgwLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIDEzNDMsIDAsIDAsIAotICAgIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCAwLCAwLCAxMTc0MSwgMCwgMCwgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgCi0gICAgMCwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgCi0gICAgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgMTk0NzY3LCAKLSAgICA3NDM0MCwgNjk2ODEsIDAsIDY0OTQ1LCA4MDI5LCAwLCAwLCAwLCAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIDE5NDc0OCwgCi0gICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAotICAgIDQxNTYsIDAsIDAsIDY0MjEsIDc4NTkxLCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIDMzMzcsIAotICAgIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgMCwgMTMwNDYsIDg4MzgsIAotICAgIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgMCwgMCwgNjgxOSwgMTMwNDksIDY0OTksIAotICAgIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDczOTQ0LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIDAsIDEyODA2OSwgCi0gICAgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgMTk0NzIxLCAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIAotICAgIDc3NTEsIDE5NDcyNywgODM3MSwgMTk0NzI5LCAzOTk3LCAxMjgwNiwgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAKLSAgICAxOTQ3MzAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgNDEwNTcsIDAsIDAsIDAsIDAsIDAsIDkyMjEwLCA5MjQxMSwgMCwgCi0gICAgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCAKLSAgICA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAKLSAgICAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgMzYwMywgNDExMDksIDIzOTgsIAotICAgIDM1NDgsIDAsIDAsIDExOTkzMywgMCwgMzExNSwgOTkxOCwgMCwgMTEzMjEsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIAotICAgIDY1ODA0LCAwLCAwLCA0MzQ2OCwgMCwgNDE1NTgsIDQxNDcxLCA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgCi0gICAgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIDQxNTU5LCAxODk2LCA2NjI1NiwgMTMwNTIsIDE5NDY4MCwgCi0gICAgNTY2NSwgMCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIAotICAgIDU2NjIsIDQyMzgyLCAxOTQ2ODYsIDczOTI0LCAxMTIxLCAxOTQ2NjUsIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgCi0gICAgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIAotICAgIDQyMDI0LCA2NDIwLCA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCAKLSAgICA5MTc4MDgsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIAotICAgIDkxNzgxMCwgNDIwMjYsIDYxMzcsIDAsIDc1MjQsIDAsIDkxNzgwOSwgODM0NiwgMCwgODMzOCwgMTI4MzE1LCA2NTA0MywgMCwgCi0gICAgODIyLCAxMjc5ODQsIDk5MDMsIDY0NzIxLCA0MjcyMiwgMTk0NjU2LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCAKLSAgICA3ODY2MiwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgCi0gICAgMTk0NjQwLCAwLCAxMjk0NiwgMTk0NjQxLCAxMTkzNDEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIAotICAgIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAwLCAwLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCAxOTQ2NTIsIAotICAgIDE5NDYyOSwgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgMCwgMCwgMjM0MiwgMCwgCi0gICAgMTk0NjM0LCA2NTIwNiwgNDg5NCwgMTk0NjM1LCA0ODkwLCAxOTQ2MzcsIDkxNzgwNCwgNTgxLCA0ODkzLCAwLCA2NTcxLCAKLSAgICA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgCi0gICAgNjk3MDIsIDAsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIAotICAgIDAsIDAsIDAsIDAsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAKLSAgICAxMjAzODEsIDEyMDM4OSwgMTE4ODg4LCA5MzQ0LCA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgCi0gICAgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgMCwgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAKLSAgICAzNDQ5LCAwLCAwLCA3ODQxNCwgNzg0MTMsIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgCi0gICAgMTA3MzQsIDEyNzAxNCwgMCwgMTI3OTE0LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCi0gICAgMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCAKLSAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIAotICAgIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCAwLCA0MDk4MCwgMCwgMTMyMDIsIDAsIDEyNTgyLCA3ODI4MiwgMCwgCi0gICAgMCwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIAotICAgIDc0MDQ1LCAxMjAxNjUsIDAsIDAsIDQ5MTMsIDAsIDAsIDAsIDQyMzI2LCAxMjgxOTQsIDEyNzI4LCA5MjY4NSwgNDI0NzgsIAotICAgIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCAxOTQ3MDgsIAotICAgIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzQwNzUsIDE5NDcxMywgNjUxLCAxMjY0MSwgMCwgMCwgMCwgMCwgCi0gICAgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCA3ODQ2MSwgMTk0Njk3LCA3NDM1NiwgCi0gICAgOTI2MjYsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAotICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCAwLCAxMDEwMSwgMCwgMCwgODQ3OSwgNDE1MSwgNDE5MzMsIDAsIDAsIAotICAgIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCA3NDA1MCwgOTI3MDEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIDAsIDI2OTksIDAsIDczODQ1LCAyOTg1LCAKLSAgICA5MjU2OCwgMCwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIDk4MjcsIDExOTMxMCwgMTE5MzExLCAxMTkzMDgsIAotICAgIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDc4NDgxLCA3ODQ4MiwgNjY2OTQsIDY4NDc5LCAKLSAgICA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNzg0ODMsIAotICAgIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIAotICAgIDc5MzAsIDAsIDQzMzAzLCA2ODIxNiwgMCwgOTE3ODI2LCA1MjQ0LCA0MTg5LCAxMjcwOTgsIDY3NTk2LCAxMjc1MDQsIAotICAgIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDAsIDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAwLCAKLSAgICAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgMCwgNDEyMjcsIDAsIAotICAgIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAxMTg4NTAsIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgCi0gICAgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCA5MjMyMywgNzQ3NjEsIDY0MzIzLCAwLCAwLCAwLCAKLSAgICAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgOTIxOTAsIDAsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgCi0gICAgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMCwgMCwgCi0gICAgMCwgNDE5MzQsIDc0NjUsIDAsIDEyODE2OCwgMCwgNDcxNSwgNjEwMSwgMCwgNDE5MzYsIDAsIDQ4NzksIDAsIDY1NDQ2LCAwLCAKLSAgICAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMCwgMTI4MDU5LCAwLCAwLCAwLCAwLCAwLCA2NTU2NywgMTIwNjE0LCAxOTI5LCAKLSAgICAwLCAxMjE0MiwgMCwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDE5NDYyMywgNTM3OCwgNzg3OTEsIAotICAgIDEyODY3OSwgNDE0MjEsIDAsIDQ0NjIsIDAsIDAsIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIDAsIAotICAgIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAKLSAgICAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgCi0gICAgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjU2MjYsIDc4NDYyLCAxODEwLCAKLSAgICAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIAotICAgIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIAotICAgIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgCi0gICAgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgODA0NywgMCwgNzg4MjcsIDEyNjM0LCAKLSAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIDAsIDE1ODQsIDY2NjQ1LCA2MDQ1LCAKLSAgICA2NzI5LCAxMjA2NDAsIDY1MjE4LCA3ODc3NywgMCwgNzgwNjIsIDc1MzcsIDAsIDExMzcwLCAwLCAxMDMzMCwgMCwgMTAzOTQsIAotICAgIDAsIDc0MTk0LCAwLCAxMjc5MjksIDk3ODAsIDAsIDEzMDkyLCAxOTQ1NzYsIDExOTYwNSwgMTk0NTc4LCA3MDc0LCA5MjY0OCwgCi0gICAgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAwLCAwLCA0MjExLCAxMjU5LCA3NTE3LCAwLCAwLCAKLSAgICAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCAxOTQ1NjcsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAwLCAKLSAgICA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgMTk0NTczLCAKLSAgICA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgMCwgNjQyNjIsIDY3NjcsIDQxNDA3LCAwLCAwLCA2NzU1LCAKLSAgICAxMTg4NjQsIDkwNDYsIDEyNzkzNCwgMCwgMCwgMCwgMCwgMCwgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAyNTYzLCAxMzAzMywgCi0gICAgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCAwLCAxMTI3MCwgMCwgMCwgMTE5MzMsIDAsIDAsIDQxOTAzLCA0MzQ0NywgCi0gICAgMTEwMDEsIDAsIDQyMjU1LCAwLCA5MjY2MSwgNjk4MjEsIDQxOTA1LCAwLCAwLCAxMDc3NSwgOTc5MywgNTAwOSwgMCwgCi0gICAgNDIyNjksIDY0NTg3LCAwLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIAotICAgIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDAsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCAKLSAgICA0NzQ3LCAxMjgwNTgsIDAsIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCA0MjYwMCwgMCwgNDMyMDMsIDAsIDAsIDQzMjg2LCAKLSAgICAwLCAxMjgyMTEsIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgCi0gICAgMCwgMCwgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAwLCAKLSAgICAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNjM4ODUsIDAsIDExODIyLCAwLCA0MzE4OSwgMCwgMCwgMTc4OCwgMTU3OSwgCi0gICAgMTIwNDgyLCA5MTc4MTcsIDAsIDAsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDAsIDAsIDEyODUsIDY0ODgyLCA0MTI0MiwgCi0gICAgMCwgMCwgMTI2NDAsIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgOTIyNTQsIDM5NDAsIDQxNTk3LCA1NTI2MCwgCi0gICAgMzM5NiwgMTI2NDIsIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAxMjA1MTYsIAotICAgIDEyMDUyMywgMCwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgMjE0MiwgCi0gICAgNjg0NTQsIDQyNDg1LCAxMTg4MzcsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgCisgICAgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCA5ODMxMDMsIDEzMDMwLCA2NzAyLCA0NTI3LCAwLCAxMjUzOCwgMTI4ODEwLCAKKyAgICA5ODM2MzYsIDY1NTk5LCA2NTcxNywgOTk2NiwgMCwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyODE0OSwgMTI2MjMsIDAsIDYyMDcsIAorICAgIDAsIDYxMTcsIDY1OTMwLCA4NDEyLCAwLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTI2NjI1LCAxMDE0OSwgNzQxMTgsIAorICAgIDAsIDEyNzI4NiwgMTI0ODEsIDAsIDEyNDg4LCA2NjcxMywgMCwgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCAKKyAgICA3Mzc2NiwgMCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCA5ODMxNjYsIDExOTI3LCA2NjU4NCwgCisgICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzg1NTgsIDAsIDc4NTU2LCA4NDgsIDk4NjgsIDAsIDY0MjQsIDc4NTY4LCAxMTkzMzgsIAorICAgIDY5OTIyLCA3NDAzMSwgNzg1NjMsIDc4NTY0LCAyMzUyLCA3ODU3MiwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCAKKyAgICAwLCAxMzAyNiwgNjc2MiwgNzg1NzksIDc4NTgwLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIAorICAgIDEzNDMsIDk4MzgxNCwgMCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDk4MzkyNSwgMCwgMTE3NDEsIDAsIDAsIAorICAgIDkyMTYsIDgyNjMsIDExMjc5LCAxOTQ3NTIsIDk4MzgxNiwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgCisgICAgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAKKyAgICAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc3MSwgCisgICAgMzMzNSwgMCwgMCwgOTc3NiwgMTIwNTI2LCAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAKKyAgICAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIAorICAgIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCAKKyAgICA0MjE0LCA3Mzc5MCwgMTE5NDUsIDAsIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgCisgICAgMTMwNDcsIDAsIDAsIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA3Mzk0NCwgMTMwNTAsIDk5MjQsIAorICAgIDE5NDc0NSwgNjUwNywgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAKKyAgICAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIAorICAgIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCAKKyAgICA0MTA1NywgMCwgMCwgMCwgMCwgOTgzNzgyLCA5MjIxMCwgOTI0MTEsIDAsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAxMTkxMSwgCisgICAgMCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIAorICAgIDEzMDQzLCA4MDU2LCA5MjQ5NCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgMCwgMCwgMTA2OTksIDY0MDgsIAorICAgIDkyMjI3LCA3ODI1LCA1NjYxLCAwLCAxMjA2MzAsIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCAxMjY1OTYsIDAsIDExOTkzMywgCisgICAgMCwgMzExNSwgOTkxOCwgMCwgMTEzMjEsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgCisgICAgOTgzMjY2LCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIAorICAgIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCAwLCAxMTkwNzEsIAorICAgIDcwMjUsIDYzOTc0LCAwLCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgNTY2MiwgNDIzODIsIAorICAgIDE5NDY4NiwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIDY0NzUyLCA0NzMyLCAKKyAgICAxOTQ2NjYsIDExNTk2LCAxMTk5MzEsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgCisgICAgNDIwMjgsIDAsIDEwNTA5LCAyNzk1LCA0OTEwLCAxOTQ3MjgsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgCisgICAgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIDkxNzgxMCwgNzA4NSwgCisgICAgNjEzNywgMCwgNzUyNCwgMCwgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCA4MjIsIDEyNzk4NCwgCisgICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgMTk0NjU5LCA3ODY1NSwgNzg2NjEsIDE5NDY2MCwgNzg2NjIsIDQxMjY1LCAKKyAgICA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDc4MDU1LCAxMTI3OCwgNzg2MzIsIDE5NDY0MCwgMCwgMTI5NDYsIAorICAgIDE5NDY0MSwgMTE5MzQxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDE5NDY0OCwgMTk0NjQ3LCA2NTAxOSwgMTk0NjQ5LCA3Mzk5MCwgCisgICAgMCwgOTgzOTUxLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAxMDU1NiwgCisgICAgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAKKyAgICAxOTQ2MzUsIDQ4OTAsIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDk4MzYxNiwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIAorICAgIDc4MDQ4LCA3ODA0OSwgNzgwNDYsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIDY5NzAyLCAwLCAwLCAxMTM3NSwgCisgICAgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA2NDkzMiwgNDI4ODAsIDQzNTg3LCAwLCAwLCAwLCAwLCA2NTE5NywgCisgICAgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgMTIwMzgxLCAxMjAzODksIAorICAgIDExODg4OCwgOTM0NCwgODgyNiwgMTIwMzg2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIAorICAgIDAsIDMxMzQsIDAsIDY1Njk2LCA5MjMzMSwgMCwgNjYyMTcsIDAsIDgzMzQsIDExOTM0NCwgMCwgMzQ0OSwgMCwgMCwgCisgICAgNzg0MTQsIDc4NDEzLCAxMTg5NTAsIDc0MDExLCAwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAKKyAgICAxMjcwMTQsIDAsIDEyNzkxNCwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDAsIAorICAgIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDExODg5MywgMjM2MSwgNzk3MSwgCisgICAgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDAsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgCisgICAgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgOTgzNjA4LCA0MDk4MCwgOTgzOTU1LCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCAKKyAgICA5ODMwNDgsIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgCisgICAgNzY5OCwgNTY1OCwgNzQwNDUsIDcwMDM5LCAwLCAwLCA0OTEzLCAwLCA5ODM5NTAsIDcxMzMzLCA0MjMyNiwgMTI4MTk0LCAKKyAgICAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAwLCAxMjU4OCwgODgyMSwgCisgICAgNjE1MywgMjg2NywgMTk0NzA4LCA2NjMxMiwgNjk4LCAxMjgwMDcsIDE5NDYwNiwgMTAzNTYsIDcwMDE3LCAxOTQ3MTMsIAorICAgIDY1MSwgMTI2NDEsIDAsIDAsIDAsIDAsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzg0NjQsIDEyODg1MSwgCisgICAgNzg0NjEsIDE5NDY5NywgNzQzNTYsIDY0OTQ1LCA0NzE2LCA0MzI3NywgMCwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDAsIAorICAgIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDkxNzYyOSwgOTgzNDg3LCAxMDEwMSwgMCwgCisgICAgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAwLCAwLCA2NjI1NCwgMTIwODIxLCAwLCAwLCAxMjg2NTQsIDAsIDExOTE5NCwgCisgICAgNzQwNTAsIDkyNzAxLCAwLCAwLCAwLCAwLCAwLCAxMjI3OCwgMCwgMCwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCAwLCAKKyAgICAwLCAyNjk5LCAwLCA3Mzg0NSwgMjk4NSwgOTI1NjgsIDEyNjQ3NSwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIAorICAgIDk4MjcsIDExOTMxMCwgMTE5MzExLCAxMTkzMDgsIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgCisgICAgMzUsIDc4NDgxLCA3ODQ4MiwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgCisgICAgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgCisgICAgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIAorICAgIDQxODksIDk0MTA4LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAwLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAKKyAgICAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgMCwgMCwgNzQ0OTAsIDEyNzA5OSwgNDM2NTcsIDAsIDAsIDAsIDQyNjgyLCAKKyAgICAxMjU3OCwgMTI3MjAsIDAsIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgMCwgMCwgNzI1MSwgMCwgMCwgCisgICAgMTE4ODUwLCAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDAsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgCisgICAgOTYzMiwgOTIzMjMsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAwLCAwLCAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgCisgICAgNzEzMjUsIDAsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIAorICAgIDEyNzMwLCA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMTIwMTYxLCAwLCAwLCA0MTkzNCwgNzQ2NSwgMCwgCisgICAgMTI4MTY4LCA5ODMyNjAsIDQ3MTUsIDYxMDEsIDk0MTA2LCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIDMwNywgCisgICAgMTI3MTQ3LCA5NTg1LCA1Mzc0LCA5ODMyNTksIDEyODA1OSwgMCwgMCwgMTI2NjE4LCAxMjAzOTAsIDAsIDY1NTY3LCAKKyAgICAxMjA2MTQsIDE5MjksIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCAKKyAgICA1Mzc4LCA3ODc5MSwgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgCisgICAgNTgwMCwgMTIwMTU3LCA5ODMxMTUsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgCisgICAgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAKKyAgICAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIAorICAgIDg2MiwgNjU2MjYsIDc4NDYyLCAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCAKKyAgICA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIAorICAgIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCAKKyAgICA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCAKKyAgICA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgCisgICAgODA0NywgMCwgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIAorICAgIDk4Mzc1NCwgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAwLCA3ODA2MiwgNzUzNywgMCwgCisgICAgMTEzNzAsIDAsIDEwMzMwLCAwLCAxMDM5NCwgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgCisgICAgNzc5NTAsIDE5NDU3OCwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAxMTQxNCwgMTI4ODY4LCAyNTMxLCAxMzAzNCwgCisgICAgMCwgMCwgNDIxMSwgMTI1OSwgNzUxNywgMCwgMCwgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgCisgICAgOTQwMzQsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAwLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIAorICAgIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgMTk0NTczLCA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgOTgzNDQ0LCAKKyAgICA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIDAsIDY3NTUsIDExODg2NCwgOTA0NiwgMTI3OTM0LCAxMjY2MDgsIDAsIDAsIDAsIDAsIAorICAgIDY3Njc1LCAwLCAwLCAwLCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgNDY1MSwgNjk4OTUsIAorICAgIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgMCwgNDE5MDMsIDQzNDQ3LCAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgCisgICAgNDE5MDUsIDAsIDAsIDEwNzc1LCA5NzkzLCA1MDA5LCAwLCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCAKKyAgICA2NDUyOSwgNDE0MDgsIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA5ODM3NjcsIAorICAgIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCAxMjgwNTgsIDY5ODQ0LCAKKyAgICA0MzIwMCwgNTgzMiwgMCwgMCwgNTE0MSwgNDI2MDAsIDAsIDQzMjAzLCAwLCA5ODM3OTAsIDQzMjg2LCAwLCAxMjgyMTEsIAorICAgIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgMCwgMCwgNjA1OSwgCisgICAgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgCisgICAgNDIyMzMsIDY0MTQwLCA5OTQ2LCA2Mzg4NSwgMTk0NzkyLCAxMTgyMiwgMCwgNDMxODksIDk4Mzg4OSwgMCwgMTc4OCwgCisgICAgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgOTQwNTUsIDAsIDEyODUsIDY0ODgyLCAKKyAgICA0MTI0MiwgNzAwODYsIDAsIDEyNjQwLCAwLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgCisgICAgNDM3NTQsIDMzOTYsIDEyNjQyLCA4NjY1LCAwLCAwLCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCisgICAgMTIwNTE2LCAxMTg5ODksIDAsIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTE5MzE3LCAxMTkzMTgsIAorICAgIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgCiAgICAgMTIwMzIsIDAsIDk3MjUsIDAsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCAKLSAgICA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAwLCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgCisgICAgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMjIwOCwgMCwgNDM3MDEsIDQzMTk4LCA3MTg0LCAxMjA2NzMsIAogICAgIDE5NDc5NywgOTE3ODE5LCAxMDA4NSwgMTE5OTkyLCAwLCAxMTk5OTMsIDY2MzQsIDkyMzczLCAwLCAxMTkzMjMsIDgwNzIsIAogICAgIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MiwgMTIzOTgsIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAKLSAgICAxMjY5NzcsIDEyMDU2NSwgOTkxNCwgMTI3MDExLCA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIAorICAgIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAyMjE3LCA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIAogICAgIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDAsIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgCiAgICAgMTIwNDIyLCAwLCAxNzEwLCAwLCAwLCA2NTYwNywgMCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgCiAgICAgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCAxMjgyMjUsIDEzMjEzLCAKLSAgICA0MjQ1MiwgNzgzMzEsIDAsIDc4NDQ1LCAwLCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIAotICAgIDY1Njc1LCAxMDgwLCAxMjAwMDIsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCAwLCAxMjYzMiwgCi0gICAgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAKLSAgICAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAwLCAwLCAxNDk0LCAwLCAwLCAwLCAxMTY5MywgMCwgMTA0OTQsIAotICAgIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAwLCAwLCAwLCAwLCA2NDU4MiwgMCwgNzM3OTQsIDAsIDgwMjIsIDAsIAotICAgIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCAxOTQ4MjksIDkxNzk5NCwgMCwgOTE3OTk1LCA1NTcwLCAxODgxLCA3MjEwLCAwLCAKLSAgICAxMDEyLCA2NjYzMCwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgMCwgNDIzMzksIDAsIDYwNjMsIDAsIDAsIAotICAgIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIAotICAgIDExODgxMCwgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgCi0gICAgOTIyMDQsIDAsIDAsIDEyMDExOSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDEyMDEwMCwgNjUwODcsIDU1NzEsIAotICAgIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDEyMDEwNywgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCi0gICAgMTIwMTAxLCA1ODksIDcwNTAsIDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDAsIDc0MDk5LCAKLSAgICA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAwLCA1ODQ3LCA2OTI4LCAwLCAwLCAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIAotICAgIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAwLCAwLCA4MTIwLCAxMjA3MDEsIDAsIDAsIDEyODAxMiwgCi0gICAgNDEwNjMsIDAsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIDAsIDAsIDk2NzMsIDY2MzM0LCAKLSAgICA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDAsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgCi0gICAgMTk1MDI1LCA3NDA5NCwgMCwgMCwgNzc5NzAsIDAsIDAsIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCAKLSAgICA2Nzg5MywgNTQ5MiwgNjkyMywgMTI4MDk5LCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgCi0gICAgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCA5MTc5NTksIDU4NTMsIDEzMDYzLCAKLSAgICAxMDM2MywgMCwgMTI5NTYsIDEyODE2OSwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMCwgNzgzOTIsIDEyODI2LCAKLSAgICA2MzI5LCAwLCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgCi0gICAgNDM0MjAsIDc4Mzk2LCAxMjcwNTcsIDI2OTUsIDQyMTcxLCAwLCAwLCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKLSAgICAxMjEyNSwgMTI3NjYsIDAsIDExNjQsIDAsIDAsIDQxOTE4LCAwLCAxMjc1NDIsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgCi0gICAgMTI4MDAxLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgMTIwNTM4LCA2NDI3LCA0Mjg4NCwgNDExMjMsIDAsIDAsIDQyODczLCAKLSAgICA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDAsIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgCi0gICAgNDI4NDMsIDY1OTEsIDkzNDAsIDAsIDE1ODksIDAsIDI5NiwgNzQ0MzgsIDc4ODUyLCAwLCA2Nzg0MSwgNzQzNzAsIDAsIAotICAgIDg5MjIsIDEyODA2OCwgNzQ2MDAsIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAKLSAgICAxMzI2MiwgNjU1OTAsIDUyOTksIDAsIDExNDczLCA1NDQ5LCAxMjUyLCAwLCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgCi0gICAgNTI5NSwgOTE3NTY5LCA3NDExNCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIAotICAgIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAxMjcwMjksIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgCi0gICAgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMCwgMCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMCwgMCwgMCwgNDk4NiwgMTIxODksIAotICAgIDAsIDY3NjQ4LCAxMjA0OTksIDkxNzU1MywgNDI1NywgMTIxMDQsIDc3OTQyLCA2MjIwLCA5MDA0LCA2NTU2MSwgMCwgCi0gICAgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCAwLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgCi0gICAgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDAsIDExODkwMCwgOTE3ODk0LCAwLCA5NjM1LCAxMjYwMCwgODg3MSwgMCwgCi0gICAgMCwgMCwgNjQ2OSwgNzQyMjcsIDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjkxNiwgMCwgMCwgMCwgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCAxMjcxMzgsIDEyODA4MiwgMzQ5NCwgCi0gICAgNzQ2MDYsIDY1NTUsIDAsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgMCwgNjU4OTgsIDAsIDY1MzEyLCA1NDQ3LCAwLCAKKyAgICA0MjQ1MiwgNzgzMzEsIDEyMDY2NCwgNzg0NDUsIDAsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCAKKyAgICA0MTEzMiwgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIAorICAgIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIAorICAgIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDAsIDAsIDE0OTQsIDk4MzE0NiwgMTI2NjEzLCAwLCAKKyAgICAxMTY5MywgMTI2NTEzLCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCAKKyAgICA3Mzc5NCwgMCwgODAyMiwgMCwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDk0MDY5LCA5MTc5OTQsIDkxNzk5MywgOTE3OTk1LCAKKyAgICA1NTcwLCAxODgxLCA3MjEwLCAwLCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgOTgzMjM2LCAKKyAgICA0MjMzOSwgMCwgNjA2MywgMCwgNzgzODMsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgCisgICAgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIDExODgxMCwgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCAKKyAgICA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAKKyAgICAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAKKyAgICAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMjAxMDEsIDU4OSwgNzA1MCwgOTgzNzkxLCA0MzI4MSwgCisgICAgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAKKyAgICAwLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIAorICAgIDQyNTYxLCAxMjA2MjYsIDk4MzI0NSwgMCwgODEyMCwgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgCisgICAgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAwLCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIAorICAgIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA5ODM2NjIsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgCisgICAgMCwgNzc5NzAsIDk4MzU2MCwgMCwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCAKKyAgICA2OTIzLCA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgCisgICAgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgOTE3OTU5LCA1ODUzLCAxMzA2MywgMTAzNjMsIDAsIDEyOTU2LCAKKyAgICAxMjgxNjksIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDAsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgMTA1MTQsIAorICAgIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgCisgICAgMTI3MDU3LCAyNjk1LCA0MjE3MSwgMCwgMCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAwLCAKKyAgICAxMTY0LCAxMjg4MTcsIDAsIDQxOTE4LCA5ODMxNjgsIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAxMjgwMDEsIAorICAgIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIDQxMTI2LCAKKyAgICA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgCisgICAgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgODkyMiwgCisgICAgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCAKKyAgICA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKKyAgICA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAorICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKKyAgICA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgMCwgCisgICAgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3Nzk0MiwgNjIyMCwgOTAwNCwgNjU1NjEsIDAsIDc3OTQ5LCAwLCAKKyAgICA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgMCwgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgCisgICAgNzM4OTgsIDExOTc5LCA3MDA1MSwgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAwLCAwLCA2NDY5LCAKKyAgICA3NDIyNywgMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIDAsIDAsIAorICAgIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCA3NDYwNiwgCisgICAgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyMzgsIDY1MzEyLCA1NDQ3LCAwLCAKICAgICAxMjg5NSwgNjU1OTMsIDQwMTAsIDAsIDQxMTA2LCAwLCA2NDQ0OCwgMCwgNDExMDUsIDAsIDY1ODIwLCA2MjMyLCAwLCAKICAgICAxMjgyODAsIDAsIDQzNjA4LCAxMTkwOTEsIDAsIDY1MzgsIDQzMzUsIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIAotICAgIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDAsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIDY1ODMyLCAKLSAgICAwLCAwLCAwLCA3Nzk3NSwgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAwLCAwLCAKLSAgICA1MTMzLCAwLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgOTM1NCwgMCwgMCwgMCwgMjQ5NiwgMTE1MTYsIDk0NCwgCi0gICAgMTE4ODUxLCAzODkwLCAxMjE2OCwgMTQzOCwgMCwgMCwgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgMTI4NTU1LCAwLCAwLCAKLSAgICAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgMCwgMCwgNzgxMjAsIAotICAgIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIAotICAgIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgMTE1MzIsIDc0MDczLCAwLCAKLSAgICAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA5MTc4OTUsIDY0Mjg3LCAwLCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDAsIAotICAgIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgOTI0OTEsIDAsIDYxMjksIDAsIDAsIDEyODI2OCwgCi0gICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgNzQyNzgsIDYzODg2LCAxMTg4ODEsIDk2MDUsIDczODkyLCAKLSAgICAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIDAsIDAsIDAsIDUyNDAsIDk4MTEsIDEwMDEyLCAzMDk2LCAKLSAgICAwLCAwLCAwLCA2NjY3NiwgNjU4NzMsIDAsIDAsIDAsIDk1MDEsIDAsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIAotICAgIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgMCwgOTE3ODEyLCAwLCAxMTg4OTksIDEyMTkzLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAwLCAwLCAwLCA1Mjc1LCAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgCi0gICAgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDAsIAotICAgIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgCi0gICAgMTE2NjcsIDQyNjg2LCA3Nzk3MywgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgCi0gICAgNjgyMTUsIDAsIDg1NDEsIDc4Mjk4LCAwLCA0MTg2NiwgMCwgMCwgMCwgMCwgMCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCAKLSAgICA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAKLSAgICAwLCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgMCwgNDQ5NCwgMCwgNDAxMiwgCi0gICAgMTAzOTUsIDAsIDQzNjMzLCA2NTQ0NywgMCwgMCwgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIDAsIDQyNzU1LCAKLSAgICA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgOTIyODEsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIAotICAgIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCA5MTc5MTEsIDAsIDAsIDM5ODUsIDkxNzkxMiwgCi0gICAgNjU4NjAsIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAKLSAgICAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgNDE5NTgsIDExOTE3NiwgCi0gICAgOTE3OTA4LCAwLCAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCAwLCAxMTcxNywgCi0gICAgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAKLSAgICAwLCAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDAsIDAsIDQzNTYxLCAwLCAwLCA3NDE0NiwgMTg2MCwgNzQ5NSwgCi0gICAgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDAsIDEyMDM0NywgNzcyNywgMCwgODQ5OCwgNjk4MTgsIAotICAgIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAwLCAxMjUzMywgMCwgCi0gICAgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAwLCAwLCAxMTk4MCwgMTI4NjUwLCAwLCA2Mzg5NCwgMTIwNzYwLCAKLSAgICAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIAotICAgIDEyNzkxLCAwLCAwLCAwLCA0NDQ3LCA3MzczMiwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgCi0gICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKLSAgICA0MTMxMCwgMCwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAxMjY5MCwgMCwgMCwgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIAotICAgIDkwMTAsIDExMzE1LCAwLCAyNzgsIDAsIDQxNDA1LCAxMTkyNTQsIDAsIDEwMDc3LCA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAKLSAgICAwLCA2MDAyLCAwLCA0MzU1MywgMCwgNjc5MDMsIDAsIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDAsIDAsIDAsIDg2NDYsIAotICAgIDAsIDc3ODI5LCAwLCAwLCA2NDEzLCA2NTUwLCAwLCAxOTQwLCAwLCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAKLSAgICAxMDA0NCwgMCwgMCwgMCwgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAKKyAgICA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NjUsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIAorICAgIDY1ODMyLCAwLCAwLCAwLCA3Nzk3NSwgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAKKyAgICAwLCAwLCA1MTMzLCAwLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCAwLCAwLCAyNDk2LCAKKyAgICAxMTUxNiwgOTQ0LCAxMTg4NTEsIDM4OTAsIDEyMTY4LCAxNDM4LCAwLCA5ODMxMTcsIDAsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIAorICAgIDEyODU1NSwgMCwgMCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIAorICAgIDk4MzkzNSwgMCwgNzgxMjAsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCAKKyAgICA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgCisgICAgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIDAsIDc4MTE1LCAKKyAgICAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDAsIDc3MDMsIDg4NDAsIDgwMzUsIDAsIDAsIAorICAgIDkyMjMwLCAwLCA2MTI5LCAwLCAxMjg1MjgsIDEyODI2OCwgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgCisgICAgNzAxMDIsIDYzODg2LCAxMTg4ODEsIDk2MDUsIDcxMzA4LCAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIAorICAgIDAsIDAsIDAsIDUyNDAsIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA5ODMzNDMsIDY2Njc2LCA2NTg3MywgMCwgMCwgMCwgCisgICAgOTUwMSwgMCwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCAKKyAgICAwLCA5MTc4MTIsIDAsIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIDk4MzM0NSwgMTk5MzUsIDAsIDkyMTYyLCA2OTY3NiwgCisgICAgMCwgMCwgMCwgNTI3NSwgMCwgMCwgODYzNywgMCwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCAKKyAgICA2NjMzMiwgNjY2MDMsIDEyODEzOCwgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MDIsIDk1MzcsIDM5NjEsIDEyMTE1LCAKKyAgICA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgMTE2NjcsIDQyNjg2LCA3Nzk3MywgCisgICAgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgNjgyMTUsIDkxNzkwNCwgODU0MSwgCisgICAgNzgyOTgsIDcwMDM0LCA0MTg2NiwgMCwgMCwgMCwgMCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIAorICAgIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMCwgCisgICAgNDE2OTksIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDAsIDAsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDAsIDQwMTIsIAorICAgIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgMTI2NTExLCAwLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgMCwgCisgICAgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIDc1MTUsIDM4NjgsIAorICAgIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDkxNzkxMSwgMCwgMTI4Njg4LCAzOTg1LCAKKyAgICA5MTc5MTIsIDY1ODYwLCA2MzkyMSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDkxNzgwNSwgMTI4MDksIDY0MDYsIDQ2ODUsIAorICAgIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAwLCA5MTc5MDcsIDAsIAorICAgIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMCwgMCwgNDI2NTcsIDkyNDY4LCA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCAKKyAgICA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIAorICAgIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAwLCAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDk4MzEzNSwgMCwgCisgICAgNDM1NjEsIDAsIDAsIDc0MTQ2LCAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgCisgICAgMCwgMTIwMzQ3LCA3NzI3LCAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAKKyAgICAxMjUzNCwgMTIxMjQsIDc2OTAsIDAsIDEyNTMzLCA5ODM4NzAsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAwLCA3NDgwMCwgCisgICAgMCwgNjc5NzQsIDExOTgwLCAxMjg2NTAsIDk4Mzc5MiwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCAwLCA3NDU5MiwgCisgICAgODg1MCwgNzQyNzUsIDkyMzgsIDEwNjE3LCA5MTc1NDUsIDAsIDkyNjI1LCAwLCAxMjc5MSwgMCwgMCwgMTI3ODQzLCA0NDQ3LCAKKyAgICA3MzczMiwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIAorICAgIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCA0MTMxMCwgOTgzODYwLCA0MTM5OSwgMCwgCisgICAgMCwgNTUyNTgsIDAsIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDAsIAorICAgIDI3OCwgMCwgNDE0MDUsIDExOTI1NCwgMCwgMTAwNzcsIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDAsIAorICAgIDQzNTUzLCAwLCA2NzkwMywgMCwgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMCwgMCwgMCwgODY0NiwgOTgzMTg2LCAKKyAgICA3NzgyOSwgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDAsIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIAorICAgIDEwMDQ0LCAxMjgzMjIsIDAsIDAsIDY4NjU5LCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMCwgMCwgCiAgICAgMTAyOTcsIDAsIDM3NDIsIDAsIDM5NTksIDAsIDAsIDAsIDI0NjcsIDAsIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCAwLCAKLSAgICA2Mzg0NSwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgCi0gICAgMTE1NDAsIDQzNTQ2LCA2NjkyLCAwLCA0MTA2MCwgMCwgMCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCAKLSAgICAxMjAyNjAsIDAsIDY1MjU2LCAwLCA3NDA3MCwgMCwgMCwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIAorICAgIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAKKyAgICAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIDQxMDYwLCAwLCA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIAorICAgIDk2NzcsIDEyMDI2MCwgMCwgNjUyNTYsIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgCiAgICAgMTI4MjM2LCAwLCAxMjA0NzIsIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA3MzgyNywgNTQ0LCAxMjA0NSwgCi0gICAgNjI3OCwgMCwgNTUxNSwgMCwgMCwgMCwgNjUzMzksIDQzMjIxLCA2NTE5NCwgMCwgNTUxNywgMCwgMCwgNzQ4NDEsIDY3ODg0LCAKLSAgICAwLCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAwLCAwLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCAKLSAgICA2Nzg4NywgOTYzOCwgMTI5NzYsIDAsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgMTI4ODE5LCA2NjY3LCAKLSAgICA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgNjc4ODksIDAsIDEzMTEsIDkxNzk2NiwgCi0gICAgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEyODg4MCwgNjkxNywgNzgxNTUsIDAsIDk0OSwgNzgxNjIsIDAsIAotICAgIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgMCwgMCwgNDI3MTUsIDAsIDAsIDAsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgCi0gICAgNjUzMCwgMCwgNjUwNTcsIDAsIDUxNDQsIDEyMjIxLCA0MjcxNiwgMCwgNDQzMSwgNDMzMSwgMCwgMTI4Njc1LCA0MTgzNCwgCi0gICAgNTI3OSwgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCA2NjAzNiwgMCwgMCwgNjQyOCwgCi0gICAgNDIyNzAsIDAsIDAsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMCwgOTQ5MywgMCwgNDEwMTQsIAotICAgIDExNzkzLCAwLCAwLCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgMCwgMTE5NjMyLCAwLCA2NTYwLCA3MDE2LCA3NDI3NCwgCi0gICAgMCwgNDM1NTYsIDM5MjksIDczOTAwLCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAKLSAgICAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCi0gICAgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgMTk0NzUwLCA3MzkyLCAKLSAgICA4MjMwLCA5MzY1LCAwLCAwLCAwLCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgMTE5ODg1LCAKLSAgICAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIAotICAgIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgCi0gICAgMTA0NzAsIDAsIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDAsIDAsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIAotICAgIDEyMzMsIDAsIDQ0MDA5LCA3ODI4NCwgNjYzMzgsIDAsIDAsIDE4MzksIDExODc5OSwgMCwgMTA5MjcsIDE3MDEsIDAsIAorICAgIDYyNzgsIDAsIDU1MTUsIDAsIDAsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCAwLCAwLCA3NDg0MSwgCisgICAgNjc4ODQsIDAsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDAsIDAsIDY3ODc5LCAxMjcxODgsIAorICAgIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCA0MjcyNiwgNDE3NjUsIAorICAgIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCA2Nzg4OSwgMCwgMTMxMSwgCisgICAgOTE3OTY2LCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMCwgOTQ5LCAKKyAgICA3ODE2MiwgMCwgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCAwLCAwLCA0MjcxNSwgMCwgMCwgMCwgNjM4NzEsIDAsIAorICAgIDQxNzk2LCAxMjY5LCA2NTMwLCAwLCA2NTA1NywgMCwgNTE0NCwgMTIyMjEsIDQyNzE2LCAwLCA0NDMxLCA0MzMxLCAKKyAgICA5ODM3MjAsIDEyODY3NSwgNDE4MzQsIDUyNzksIDAsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgMTI4ODI1LCAwLCA3ODE2NSwgCisgICAgNjYwMzYsIDAsIDAsIDY0MjgsIDQyMjcwLCAwLCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAKKyAgICAxMjEzMSwgOTgzNzEzLCA5NDkzLCA5ODM5NTksIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAwLCA3NDM5NCwgNDM0NjAsIAorICAgIDEwNjUzLCA0MjcyMywgOTgzODQ1LCAxMTk2MzIsIDAsIDY1NjAsIDcwMTYsIDc0Mjc0LCA5ODM2MTUsIDQzNTU2LCAzOTI5LCAKKyAgICA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCAKKyAgICA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIDEyNzc1MywgNzQzMTUsIDc0MzYxLCAKKyAgICA4MjUzLCA4ODE3LCAxMTM2LCAwLCA0MzU2MywgOTIyMzIsIDAsIDE5NDc1MCwgNzM5MiwgODIzMCwgOTM2NSwgMCwgMCwgCisgICAgOTgzNjA3LCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgMTE5ODg1LCAxMTk4ODQsIDQ0MDA0LCAKKyAgICA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgCisgICAgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgMTA0NzAsIDAsIAorICAgIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgCisgICAgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgMTE4Nzk5LCA5ODMyMTcsIDEwOTI3LCAxNzAxLCA5ODM2NTUsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA0MTc1OCwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCAKLSAgICA5MjQ5MywgNzg2NzcsIDAsIDkyNDI5LCA3ODE3NCwgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDAsIDAsIDY1ODEyLCAKLSAgICA5MTc4MzEsIDAsIDQxODI0LCAwLCAxMjAyMDMsIDE5NDgwMCwgMTk0ODAzLCA0MjcwMCwgMTk0ODA1LCAxMjc5ODAsIAorICAgIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAwLCA2NTgxMiwgCisgICAgOTE3ODMxLCAwLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgCiAgICAgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMCwgMCwgNDQ5MywgNDMzNiwgMCwgMjMxNCwgNDM2MDIsIDc4ODI2LCAKLSAgICAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDE5NDc5MSwgMCwgMTk0NzkzLCAKLSAgICAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAwLCA4ODY3LCAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDc4ODIxLCAKLSAgICAxNDEwLCA5MjY3MSwgMCwgMTE4ODc4LCAwLCAwLCA5OTE5LCAwLCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgNzgxODgsIAotICAgIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIDIwNzksIAotICAgIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDAsIDM2NjgsIDY1NzU0LCA0MzU2MCwgCi0gICAgMTIyMjYsIDAsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIDY1NzQ3LCAKLSAgICAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCA0MjcxNCwgOTk1MSwgCi0gICAgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgNDE4MjAsIDQzMDM4LCAKLSAgICAyMzk1LCAwLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCA0MjgwOSwgNDI4MDcsIDAsIAotICAgIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgMCwgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIAotICAgIDAsIDEyNzgxOCwgMCwgMCwgMjQxOCwgMCwgMjQxMSwgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIAotICAgIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAxMDI2MCwgMTE4OTgwLCA1NTI4NCwgOTIyMDMsIDAsIDEwMzg0LCAwLCAwLCAKLSAgICAwLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgMCwgMCwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDAsIDQzNTQ5LCAKLSAgICA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgNjUwNDUsIAotICAgIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDAsIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgOTE4NCwgMTAzNzYsIAotICAgIDcwMTMsIDQ0NjcsIDAsIDAsIDAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCAKLSAgICA5MjE3OCwgMCwgOTA2NSwgMTI5NjEsIDAsIDAsIDkyMjUzLCAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAKLSAgICAxMjA1MTQsIDkxNzk3OCwgNDY5MywgMCwgNDI3MjQsIDAsIDQ2ODgsIDEyMDQ1NCwgMCwgMCwgMTE5NjI5LCA4MjM4LCAKLSAgICAzMTEwLCAxMjAxNjIsIDAsIDEyMDE2MywgNjUyOCwgMTI3NTUzLCA0MzAzNSwgMTIwMTYxLCAyMTgsIDAsIDE1MjAsIDAsIAotICAgIDQ3ODYsIDAsIDQzMjI1LCA0NjAyLCAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAotICAgIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIDAsIDAsIDk5NzUsIDAsIDExOTkwMiwgNDY4OSwgCi0gICAgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA2NSwgCi0gICAgODIwNywgMCwgOTI2MTMsIDEyODAxMSwgMCwgNjYyLCAwLCA5MjQ0LCAxOTQ4NjMsIDAsIDExOTI2MSwgMCwgMCwgMCwgMCwgCi0gICAgNDE5MjksIDAsIDAsIDY2Njc0LCA0MTkyNiwgMTIwNDA4LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCAwLCA1MiwgCi0gICAgMTMxMTgsIDY0NzUsIDAsIDEyMDM0MSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMCwgMCwgNzQwODUsIDAsIDM5NzgsIAotICAgIDAsIDkxNzk0NSwgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDAsIDY5NzgyLCAKKyAgICAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDcxMzMxLCAwLCAxOTQ3OTMsIDE5MTIsIAorICAgIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIDE0MTAsIAorICAgIDkyNjcxLCA5ODMyNDQsIDExODg3OCwgMCwgMCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgCisgICAgNzgxODgsIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIAorICAgIDIwNzksIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDEyNjU3MywgMzY2OCwgCisgICAgNjU3NTQsIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgCisgICAgNDM2MTgsIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCAKKyAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyODU2MywgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDEyMDA1OCwgNjgyMjAsIDEyODE0MywgCisgICAgNDI4MDksIDQyODA3LCAwLCAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgCisgICAgMjM2MCwgNDE3OTQsIDkxNzk0MiwgNzEzMTQsIDEyNzgxOCwgMCwgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCAKKyAgICA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIAorICAgIDU1Mjg0LCA5MjIwMywgMCwgMTAzODQsIDk4MzIxOCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCAKKyAgICA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIAorICAgIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgCisgICAgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIAorICAgIDQ4NjIsIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgMTI5NjEsIDAsIDAsIAorICAgIDkyMjUzLCAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIAorICAgIDQyNzI0LCAwLCA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDk4Mzg5OSwgMTIwMTYzLCAKKyAgICA2NTI4LCAxMjc1NTMsIDQzMDM1LCA2OTg5OCwgMjE4LCAwLCAxNTIwLCAwLCA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgCisgICAgNzgxNjcsIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgCisgICAgNzM5MDIsIDY5NzQwLCAwLCAwLCA5OTc1LCAxMjgwMzksIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgCisgICAgNzQ0NDEsIDc4ODEwLCAwLCAwLCA2Nzk4NywgMCwgMCwgMCwgNjc5ODksIDAsIDEwMDY1LCA4MjA3LCAwLCA5MjYxMywgCisgICAgMTI4MDExLCAwLCA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCA5ODM0MjAsIDAsIDAsIDAsIDQxOTI5LCAwLCAwLCAKKyAgICA2NjY3NCwgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgCisgICAgNjQ3NSwgMCwgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDAsIAorICAgIDkxNzk0NSwgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgCiAgICAgMTI4NTU3LCAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIAogICAgIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIAotICAgIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDkxNzkzMywgCisgICAgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDkyMjY2LCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzQxOTEsIAogICAgIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgCiAgICAgNjU1MTQsIDAsIDYzOTQwLCAxMjg3MDYsIDY0NTMzLCAxMjAxMjksIDAsIDY3ODQyLCAxMTk5MCwgOTI0MzAsIDYzOTM5LCAKLSAgICA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAwLCAKLSAgICA3NDI5NCwgMCwgNjkyMzksIDAsIDExOTAyNywgMTI5OTIsIDI3NTMsIDE5MzYsIDc0NDkxLCA5MjU3NCwgMjc1MSwgMTI2NjIsIAotICAgIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgMCwgMCwgMCwgNjM5MjAsIDc0MTI4LCAKLSAgICAyODU2LCAxMTk5MTAsIDQ3LCAxMTk5MTEsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIDg0MTcsIDQzNzk4LCAKLSAgICA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAxMjMyMCwgMCwgMCwgMCwgCi0gICAgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgMCwgMCwgOTUzMSwgMTMxNTUsIAotICAgIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAxMjA0MzIsIDAsIDAsIDAsIAotICAgIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDAsIDE5NDk0OCwgMCwgMCwgCi0gICAgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgMTI2MjQsIDAsIDE2NzMsIAotICAgIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIDk4MjAsIDAsIAotICAgIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgMCwgMCwgMCwgMCwgMCwgNzQ4MjYsIDY0NzMzLCAwLCAwLCAKLSAgICAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDAsIDAsIAotICAgIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIAotICAgIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDAsIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIAotICAgIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCA1MjUzLCAwLCA1NDU4LCAwLCAyODY2LCAwLCAKLSAgICAxMjc4NjAsIDY1MTExLCA2ODQzMywgNjcwMCwgMTIwNDg0LCAwLCAwLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIAotICAgIDcwNTksIDAsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCA2MzgyNiwgNzg3MDYsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgMCwgCi0gICAgMjg0NCwgMCwgNDE5NzQsIDAsIDEyMTM5LCAwLCAwLCAwLCAzMzU4LCA2NTI5NSwgMCwgMzEwNCwgMTk0NzM0LCAwLCAKLSAgICAxOTQ3NjUsIDAsIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCAwLCAwLCAzMjY4LCA2NjU5MSwgMCwgCi0gICAgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIAotICAgIDY1OTAzLCAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIAotICAgIDY1MjcwLCAwLCAwLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDkxNzgzNywgNDMzMjMsIDEyMDUxMywgCi0gICAgMTE5ODk3LCA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgCi0gICAgMTE5ODk5LCA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgMCwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgCi0gICAgMCwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAotICAgIDQzMTkzLCAxMDczNywgMzQ2MywgMCwgMCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAxMjM0NSwgNzA0OSwgMCwgCi0gICAgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgNjU2MSwgMTk5MzksIAotICAgIDAsIDAsIDAsIDExOTkwNiwgMCwgMCwgMCwgMCwgMCwgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDAsIAotICAgIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCAKLSAgICA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgCi0gICAgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIAotICAgIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgCi0gICAgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIDAsIDAsIDQyNTAzLCAwLCAxMTY1MiwgMCwgMCwgMTE5MjQxLCA5MjY0OSwgMCwgCi0gICAgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgCi0gICAgMTA4MzIsIDUwOTMsIDAsIDAsIDAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgMTc2LCAwLCA5MTUzLCA0MTA0LCAKLSAgICA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIDAsIDEyNzM3MSwgNDI4ODEsIDAsIAorICAgIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCA5ODM5MDEsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgCisgICAgOTgzMzUzLCA3NDI5NCwgOTgzOTA1LCA2OTIzOSwgMCwgMTE5MDI3LCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDkyNTc0LCAKKyAgICAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCAwLCAwLCAwLCAKKyAgICA2MzkyMCwgNzQxMjgsIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCAxMjY5ODYsIDY1ODU4LCAwLCAwLCAwLCA3ODk5LCAwLCAKKyAgICA4NDE3LCA0Mzc5OCwgNzA3MiwgMCwgMCwgNDAzMywgMTI4MTY0LCA0Mzk5MiwgMCwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCisgICAgMTIzMjAsIDAsIDAsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgCisgICAgMCwgMCwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAKKyAgICAxMjA0MzIsIDAsIDAsIDAsIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIAorICAgIDAsIDE5NDk0OCwgMCwgMCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgCisgICAgMTI2MjQsIDAsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAKKyAgICAxMTk1OTgsIDk4MjAsIDAsIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDAsIDAsIDAsIDAsIAorICAgIDc0ODI2LCA2NDczMywgMCwgMCwgMzQ5MSwgMCwgMCwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgMCwgNzQ5MiwgMCwgNzQ2MDUsIAorICAgIDkyNDgzLCA3NTE0LCA5ODMzNTksIDAsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAKKyAgICAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDkzOTkxLCAKKyAgICAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCAwLCA5MjMwMSwgMCwgODg5NSwgCisgICAgNTI1MywgNzAwMjUsIDU0NTgsIDAsIDI4NjYsIDAsIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIAorICAgIDEyMDU4MywgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NjgsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCAKKyAgICA2MzgyNiwgNjc5NzAsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgOTgzNjc4LCAyODQ0LCA5ODM5MzIsIDQxOTc0LCAwLCAKKyAgICAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIDE5NDc2NSwgOTgzMjI3LCAKKyAgICA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgOTgzMDcwLCAwLCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgCisgICAgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIDY1OTAzLCAKKyAgICAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIDY1MjcwLCAwLCAKKyAgICA3NzkzMiwgMCwgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgMTE5ODk4LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgCisgICAgOTA3MSwgMTI3MzMzLCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAwLCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDExOTg5OSwgCisgICAgNjY1ODcsIDE5NTA5OCwgMCwgOTI0MDEsIDk4Mzg4NSwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgMCwgCisgICAgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAorICAgIDQzMTkzLCAxMDczNywgMzQ2MywgOTgzMDY1LCAwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIDEyMzQ1LCAKKyAgICA3MDQ5LCAxMTk5MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDAsIDAsIDAsIDEyODA0MSwgMCwgOTIzODUsIDEyNjIsIDAsIAorICAgIDY1NjEsIDE5OTM5LCAwLCAwLCAxMjg1MzUsIDExOTkwNiwgMCwgMCwgOTgzMDk3LCAwLCA5ODM2NTgsIDExOTkwNywgCisgICAgNjQ2MTIsIDExOTkxLCAwLCAwLCAwLCAxNTAyLCA5MTc1NjgsIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIAorICAgIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCAKKyAgICA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgCisgICAgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgCisgICAgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIAorICAgIDEyNjU1NSwgMCwgNDI1MDMsIDAsIDExNjUyLCAwLCAwLCAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIAorICAgIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDExOTYzOCwgMCwgMTMxNTYsIDAsIDEwODMyLCA1MDkzLCAKKyAgICAwLCA2OTg1MiwgMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCAKKyAgICA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDEyNzM3MSwgNDI4ODEsIDAsIAogICAgIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIDAsIDAsIDE5NDc4OSwgMCwgOTA3NCwgNDM0OCwgCi0gICAgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDAsIDAsIDAsIDc0NDIzLCAwLCA1ODYsIAotICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMCwgNjU0NjgsIDAsIDY1NzMxLCAwLCAxMjcxNzksIDM2MjEsIDEyMDQ3MywgNjY2NjYsIAotICAgIDY0MjExLCAwLCA2NTYyLCAxMjkyOCwgMCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAwLCAwLCAxNzE0LCA3NDQwNiwgCi0gICAgMTI3ODMxLCAwLCAwLCAwLCA2NjIyNSwgMCwgMCwgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAwLCAxMDI5MSwgCi0gICAgMTAzMjMsIDI4MjYsIDAsIDAsIDAsIDQyMDA4LCA5NzA4LCA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIAotICAgIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAwLCAwLCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDAsIDAsIDY1NTg4LCAKLSAgICAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIAotICAgIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMCwgMCwgCi0gICAgMCwgMCwgNzg3NTcsIDAsIDAsIDAsIDAsIDk5OTQsIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCAKLSAgICA0MTY3NSwgMCwgMjc2NSwgMCwgMCwgMCwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIAotICAgIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCAwLCA3Nzk4NiwgCi0gICAgMCwgNjkzMSwgNjk3MjIsIDY0MzU1LCA3MTc3LCAxMjA1MzAsIDAsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIAotICAgIDAsIDY4MDYsIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgMCwgNzUwLCAwLCAwLCAxMDE2MywgNjM5MTMsIDc0MDY2LCA3MDMyLCAKLSAgICA1OTU0LCA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIAotICAgIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCAKLSAgICA5MjIyMiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgCi0gICAgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgMCwgMCwgNjQ4MDEsIDAsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCAKLSAgICA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgNTk1MiwgMTI4MSwgMCwgMCwgMCwgMTA2NzcsIDYwNCwgNDEwOTcsIAotICAgIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAwLCAwLCAKLSAgICA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIDkxNzk1NiwgCi0gICAgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCAwLCA3Mzc1MiwgMCwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAwLCAKLSAgICAxMjcwOCwgMCwgNTA5MCwgNTA4OSwgMCwgMCwgMTE5MTA5LCAwLCAxMjg2ODEsIDMxOSwgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgCi0gICAgMCwgMCwgNTA4NywgOTIzMjUsIDc2NDAsIDk2LCA1MDg2LCAwLCA5MjM3OSwgMCwgNTA4NSwgNjQyODYsIDkyNjY1LCAwLCAKLSAgICA0MTQyMiwgMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMCwgMCwgNTAxMSwgMCwgMCwgMCwgMCwgMTI3MTY1LCAxMjcyNDEsIAotICAgIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIDExODkyMywgNzM3MzQsIDAsIDEwOTM5LCAKLSAgICA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgMTE5OTAzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCAwLCA2NTU3NCwgMCwgOTIyNCwgCi0gICAgMCwgMzY3MSwgODk3NiwgMCwgMCwgNDEyNzUsIDYzNzIsIDEyODA4NCwgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgMCwgCi0gICAgNDEyNzMsIDAsIDAsIDY3MjgsIDAsIDk3MTUsIDAsIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgMTE4OTE5LCA0MiwgCi0gICAgMCwgNDM2ODgsIDAsIDAsIDc0NTgsIDAsIDAsIDY1Mzg1LCAxMTk5MDAsIDAsIDExOTU4LCAwLCA5MTc4MjIsIDAsIDYyNTQsIAotICAgIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDAsIDAsIDAsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCAKLSAgICA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCAKLSAgICA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCAKLSAgICAxMTk5MDksIDc0MjQzLCAwLCAzODA1LCAwLCAxOTQ1NjUsIDQ0MDAxLCA0MTAwOCwgMCwgNjMwNywgMTk5NDksIDAsIDc1NDQsIAotICAgIDAsIDQzNDY5LCAwLCAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgCi0gICAgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIAotICAgIDk2MzAsIDkyNjMzLCAwLCAwLCA1NTA2LCAwLCAxOTExLCA2NjY1MiwgMCwgOTk2MSwgODg0NSwgNjY2OTgsIDAsIDEwNzkyLCAKLSAgICA4ODg5LCAwLCAyMDk4LCAwLCA2NDc1MSwgMCwgNjY2MjIsIDAsIDAsIDc0MzY0LCAwLCAwLCAwLCA3NDM2NSwgNzU1MiwgMCwgCi0gICAgMCwgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCi0gICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCAwLCAwLCAwLCAKLSAgICA0MzU3LCAwLCAxMTk4MzcsIDAsIDc0MjMzLCA5OTY3LCAxMTk4NTIsIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgCi0gICAgNjk2MiwgMCwgMCwgMTE5MzI0LCAwLCAxMTAxNCwgMTI3OTcyLCA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIAotICAgIDExOTc0LCA5MjIxMywgNDI3NzIsIDEyNzUxOCwgMTE2NTAsIDUwMTMsIDkyNjYzLCAxMjg2NzcsIDY2MjEwLCAxMTg5MTQsIAotICAgIDY2MTMsIDkyNDc2LCAwLCA0MzgxOSwgMCwgMCwgNjQ3MTQsIDAsIDAsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDAsIDExMDI0LCAKLSAgICA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgCi0gICAgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIAotICAgIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgCi0gICAgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgCi0gICAgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCAKLSAgICA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIAotICAgIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAKLSAgICAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIAotICAgIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIAotICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCAwLCA3NDQzOSwgMjAzOSwgCi0gICAgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIDEyMDYyMCwgMCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAKLSAgICAwLCA2OTY3MSwgNDIxMTUsIDAsIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgCi0gICAgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgMCwgMCwgODc5NCwgNDEyNzgsIAotICAgIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIAotICAgIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIAotICAgIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCAwLCAxMjgyOTUsIDAsIDc0MDUsIDEwMTA1LCAKLSAgICA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCAwLCA0MTYyMiwgMCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgCi0gICAgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDAsIDAsIDM2MTIsIDAsIDY0Mzc2LCAwLCA1Mzg5LCA5MjU5NywgCi0gICAgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCAKLSAgICA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIAotICAgIDc1OTgsIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgCi0gICAgNjM5NTIsIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAKLSAgICAxMDI4NywgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgCi0gICAgMCwgNzg4ODksIDAsIDAsIDEyODgwOSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCAwLCAwLCA4NjQ4LCAwLCA2NzQxLCAKLSAgICA0MzA0NywgMCwgMTMxODAsIDEyODUxNywgNDE4LCA5MTc5NzIsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgCi0gICAgNzQzMzksIDg2NDEsIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCA0MTc1MSwgCi0gICAgNjk3NzYsIDg5NDEsIDAsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgMTE0MzcsIDQzNzQxLCAKLSAgICA5MjE2MywgMTIwNzAwLCA2Mzk2NywgMCwgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAwLCAxMTY4MCwgCi0gICAgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMCwgOTIxODMsIDY0NTIzLCAxMDM0MywgCi0gICAgMTA0MDcsIDAsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgMCwgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCAKLSAgICA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgCi0gICAgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgNDI1NjQsIDAsIDE1ODIsIDAsIDU1MDgsIDAsIAotICAgIDAsIDAsIDEwODAxLCAwLCA5MjM1NCwgMCwgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCAKLSAgICA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCAKLSAgICA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgOTE3OTc2LCA5OTY0LCAwLCA0MTYxMSwgNDY0MiwgNjY1NzQsIAotICAgIDExNTU2LCA5MTc5ODIsIDAsIDc4ODU3LCA0MjA4OSwgNzg4NTUsIDkwMDgsIDAsIDAsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgCi0gICAgNzc5MjQsIDQyNTEzLCAwLCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAxMTg5NzQsIDEyNzAwMywgMCwgMCwgMCwgMCwgMTEzMzUsIAotICAgIDY0MDY5LCA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDAsIDY0Mzg0LCA5MjE2NywgMTE5MTU4LCAKLSAgICAzMDIxLCA0MjAwNCwgMCwgMCwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAwLCAwLCAwLCAxMjgxOTMsIDY1MjA0LCAwLCAKLSAgICA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgMTI3ODgwLCA2ODM5OSwgCi0gICAgNDM5OTgsIDExMzYwLCAwLCAwLCAwLCAxMTg4MjYsIDQyMTQ5LCAwLCAwLCAwLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgCi0gICAgMTI4MDc3LCAwLCA1NTI0NywgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCAxMTkxMTAsIDAsIDY2NzAzLCA3NzkyMSwgCi0gICAgODYxNywgNDE5ODIsIDYwMjUsIDY5MjQyLCAwLCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDAsIDEwMTE3LCAwLCAKKyAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDcxMzQ1LCA1ODYsIAorICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCAKKyAgICA2NjY2NiwgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIAorICAgIDc0NDA2LCAxMjc4MzEsIDAsIDk4MzkxMiwgMCwgNjYyMjUsIDAsIDAsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCisgICAgMCwgMTAyOTEsIDEwMzIzLCAyODI2LCAwLCAwLCAwLCA0MjAwOCwgOTcwOCwgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgCisgICAgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgMCwgOTgzOTYwLCA2NTgzMywgNzc4NDgsIDAsIAorICAgIDE3NjUsIDAsIDAsIDY1NTg4LCAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgCisgICAgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKKyAgICAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAwLCAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIAorICAgIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCAwLCA0MzM4MiwgMCwgMTIwNzE5LCAKKyAgICAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIAorICAgIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCA5ODM3MzMsIDc3OTg2LCAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIAorICAgIDcxNzcsIDcwMTA1LCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIAorICAgIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzA3LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKKyAgICA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIDEzMTY1LCAKKyAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCisgICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIAorICAgIDQxNDcwLCA2NDgwNSwgMCwgMCwgMTI4MjE1LCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAorICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMCwgMTA2NzcsIDYwNCwgCisgICAgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAKKyAgICAwLCAwLCA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIAorICAgIDkxNzk1NiwgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODM3MTQsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIAorICAgIDEzMzEsIDAsIDAsIDAsIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDAsIDExOTEwOSwgMCwgMTI4NjgxLCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDkyMzI1LCA3NjQwLCA5NiwgNTA4NiwgMCwgOTIzNzksIDAsIAorICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMCwgNDE0MjIsIDAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDAsIDAsIDUwMTEsIDAsIDAsIAorICAgIDEyNjU4NywgMCwgMTI3MTY1LCAxMjcyNDEsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIAorICAgIDExODkyMywgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAKKyAgICAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCA2OTg1MywgMzY3MSwgODk3NiwgMTI2NDc0LCAwLCA0MTI3NSwgNjM3MiwgCisgICAgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCA0MTI3MywgOTgzNzIxLCAwLCA2NzI4LCAwLCA5NzE1LCAwLCAKKyAgICA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIDExODkxOSwgNDIsIDAsIDQzNjg4LCAwLCAwLCA3NDU4LCAwLCAwLCAKKyAgICA2NTM4NSwgMTE5OTAwLCAwLCAxMTk1OCwgMCwgOTE3ODIyLCAwLCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAKKyAgICAwLCAwLCA5ODM1OTcsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCisgICAgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIAorICAgIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDAsIDM4MDUsIAorICAgIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgOTgzNzgxLCA3NTQ0LCA5ODMwNDUsIDQzNDY5LCAwLCAKKyAgICAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCAKKyAgICA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDkyNjMzLCAwLCAKKyAgICA5Mzk5OCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgODg4OSwgMCwgCisgICAgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgOTgzNzk2LCA3NDM2NSwgNzU1MiwgMCwgMCwgCisgICAgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCisgICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCA5ODMyODUsIAorICAgIDk4Mzc4MywgMCwgNDM1NywgMCwgMTE5ODM3LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgNDI4NjAsIDExOTgzOCwgCisgICAgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgCisgICAgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyNjU4MywgCisgICAgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDQzODE5LCA5ODM3NjEsIDAsIDY0NzE0LCAwLCAwLCAxMjE2MiwgCisgICAgMTIxMjAsIDQzNDc2LCA5ODM3NTcsIDExMDI0LCA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAKKyAgICAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCAKKyAgICA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAKKyAgICAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgCisgICAgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCAKKyAgICA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKKyAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCAKKyAgICA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIAorICAgIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCAKKyAgICA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCAKKyAgICA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCA5ODMwNDMsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIAorICAgIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgOTgzMTMzLCAKKyAgICAxMjI4OCwgNzgwNTcsIDAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgCisgICAgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDAsIDk4MzQyMywgMCwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCAKKyAgICA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIAorICAgIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIAorICAgIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCA5ODM1OTIsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgCisgICAgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgCisgICAgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIAorICAgIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCA0NDAzLCAKKyAgICAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIAorICAgIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgNjM5NTIsIAorICAgIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgCisgICAgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgMCwgCisgICAgNzgyNDksIDAsIDEyODU1MSwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDExOTEzMSwgMCwgODY0OCwgMCwgCisgICAgNjc0MSwgNDMwNDcsIDAsIDEzMTgwLCAxMjg1MTcsIDQxOCwgOTE3OTcyLCA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgCisgICAgNDE3NTIsIDc0MzM5LCA4NjQxLCA0MTQ0OSwgMCwgNzQxMDAsIDAsIDEwOTExLCA2OTQyLCAwLCAxMDI0LCA0Mjg0OSwgCisgICAgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgCisgICAgMTE0MzcsIDQzNzQxLCA5MjE2MywgMTIwNzAwLCA2Mzk2NywgOTgzNDc1LCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgCisgICAgNDMxNjYsIDAsIDExNjgwLCA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCAKKyAgICA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgCisgICAgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIAorICAgIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgCisgICAgNDI1NjQsIDAsIDE1ODIsIDk4MzcwNiwgNTUwOCwgMCwgMCwgMCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMCwgNzE3MywgNDk2LCAKKyAgICAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIAorICAgIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgCisgICAgOTE3OTc2LCA5OTY0LCA3NDQwOSwgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgOTE3OTgyLCAwLCA3ODg1NywgNDIwODksIAorICAgIDc4ODU1LCA5MDA4LCAwLCAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgNzc5MjQsIDQyNTEzLCA3NzkyNywgCisgICAgNDI4NDIsIDczOTg1LCA2NTI4NSwgMTE4OTc0LCAxMjcwMDMsIDk4MzY5MywgMCwgMCwgMCwgMTEzMzUsIDY0MDY5LCAKKyAgICA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDk4MzcyMywgNjQzODQsIDkyMTY3LCA5Mzk4NCwgMzAyMSwgCisgICAgNDIwMDQsIDAsIDAsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMCwgMCwgMCwgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIAorICAgIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIDQzOTk4LCAKKyAgICAxMTM2MCwgMCwgMCwgMCwgMTE4ODI2LCA0MjE0OSwgMCwgMCwgMCwgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgMCwgCisgICAgNTUyNDcsIDQxMTAsIDY2MDA1LCA2OTU5LCAxMDkyOSwgMTE5MTEwLCAwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCAKKyAgICA2MDI1LCA2OTI0MiwgOTgzMTc2LCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM2OCwgMTAxMTcsIDk4MzE2OSwgCiAgICAgOTIyOTcsIDQxNjM2LCAwLCAwLCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMCwgNjU2NjksIDEyODMzOSwgNDk2MywgMCwgCi0gICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNjU3ODUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAotICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgCi0gICAgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgCi0gICAgNzg4OCwgMCwgMzk4MCwgMCwgNDI2NTYsIDQxNTA3LCA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIAotICAgIDY5MjE4LCA2MjM2LCAwLCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIDMxMDMsIDAsIAotICAgIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCAKLSAgICA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNzQzNjAsIDI2OTEsIDAsIAotICAgIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAwLCAKLSAgICAwLCAzOTc5LCAwLCAwLCA3NDgxMywgMCwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCAwLCAxMjg4MzYsIDEwNTg1LCAKLSAgICA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCAwLCA0MjgyMiwgMCwgCi0gICAgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCAwLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgCi0gICAgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIDAsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgCi0gICAgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgCi0gICAgNDMyMTksIDEyODcwOSwgMCwgMTIxODUsIDEyODg3OSwgMCwgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgMCwgCi0gICAgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAKLSAgICAwLCAwLCA1Njc4LCAxMTgyMSwgMCwgNjcxMSwgNDYwLCAwLCAwLCAwLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIAotICAgIDAsIDAsIDAsIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAKLSAgICAxMjgwNzksIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgMCwgMCwgNzgxMTksIDE1NDksIDAsIAotICAgIDAsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDkxNzU2OCwgMTAwMDEsIDAsIDY5NzY4LCAxNDQ5LCAKLSAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCAwLCA1NTY3LCAKLSAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAwLCAxMjgwMjYsIDAsIDY1NzA4LCA2NTcwOSwgCi0gICAgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAorICAgIDEyNzUxNywgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAorICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMTE5MTE0LCA2NTg4MiwgNzg4NDksIAorICAgIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIAorICAgIDczODM1LCA3ODg4LCAwLCAzOTgwLCAwLCA0MjY1NiwgNDE1MDcsIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgCisgICAgNzg2NywgNjkyMTgsIDYyMzYsIDk4MzEzNCwgMCwgMTA1MDUsIDAsIDEyODUxLCAxMTg5NDgsIDM0OCwgNTQ3NCwgMTI4ODQzLCAKKyAgICAzMTAzLCAwLCA0MTc1MywgMTI4NTQwLCAwLCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCAKKyAgICA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAKKyAgICAyNjkxLCAwLCA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCAKKyAgICA0MTI1MSwgMCwgMCwgMzk3OSwgMCwgMCwgNzQ4MTMsIDk4MzczMCwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCA2NjU2NiwgCisgICAgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCA5NTc0LCAyNjY2LCAwLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAKKyAgICAxMDcxNiwgMCwgNDI4MjIsIDAsIDY0MzQsIDAsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCAKKyAgICA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgCisgICAgMTI2NTM3LCA0NDk3LCAzNzU0LCAxMjcwNTYsIDEyMDQyNCwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIDE1OTUsIDQxNjE1LCAKKyAgICAwLCAwLCA3NDI2MCwgMCwgNDI4NTQsIDQzMjE5LCAxMjg3MDksIDk4MzQ1MiwgMTIxODUsIDEyODg3OSwgNzAwNzIsIAorICAgIDY4MzU1LCA2ODM1NywgMCwgNDI4NTYsIDg2MzQsIDAsIDk4MzM4OSwgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIAorICAgIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAwLCA5ODM0NTYsIDU2NzgsIDExODIxLCAwLCAKKyAgICA2NzExLCA0NjAsIDAsIDAsIDk4MzQ1MywgMCwgMTIwNzQ3LCAwLCAwLCA3ODA1MCwgMTE5MDIyLCAwLCA5ODM0NTQsIDAsIAorICAgIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjgwNzksIAorICAgIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgOTgzMzg0LCAwLCA3ODExOSwgMTU0OSwgMCwgMCwgCisgICAgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCAxMjg1MTIsIDY5NzY4LCAxNDQ5LCAKKyAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMjcxNywgMCwgMCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTgzMjQ4LCAxMjgwMjYsIDAsIDY1NzA4LCAKKyAgICA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAogICAgIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAwLCA2NjU5OCwgMCwgNjQ2NjQsIDEwNjQ3LCAKLSAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDAsIDg4MDIsIDc4NzEwLCAKKyAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDExOTkwMywgODgwMiwgNzg3MTAsIAogICAgIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgCiAgICAgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIDc4NzI1LCA3ODcyMiwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMCwgCi0gICAgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgMCwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAxNjY3LCAKLSAgICA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIDAsIAotICAgIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIDEwODc1LCAKLSAgICAxMjg2NjIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA5MTc5NTQsIDAsIDM4NzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAxMTk1NzAsIDQyMjM5LCA4NTM2LCAKLSAgICA3ODc0MCwgMCwgNzg3MjYsIDc0NDMyLCA3MjQsIDAsIDE0NTUsIDc4NzQ5LCA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCAKLSAgICA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDAsIDQzNTIwLCA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzg3NjMsIAotICAgIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgMTkwLCAwLCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIAotICAgIDAsIDQ0MTcsIDAsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgMCwgMCwgCi0gICAgNzQzODIsIDczNzgxLCA3OTE4LCA3Mzk4OCwgMCwgMCwgOTE3ODg0LCAxNzI4LCAwLCAxMjA3MTAsIDE3OCwgMTI5NzIsIAotICAgIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCAwLCAwLCA3ODMyNywgMTIwNDA1LCA2NTY5MCwgMCwgMCwgMTE5MDU0LCAwLCAKLSAgICA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAwLCAwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDAsIDExNzYzLCAwLCAKLSAgICAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIAotICAgIDkyMzIwLCA3NDA4MCwgMCwgMCwgMTE5MTAsIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAKLSAgICAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAotICAgIDEyNzQ3LCA4MzAwLCAwLCAwLCA3NDkxLCA4ODU2LCAxMjgwNjQsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIAotICAgIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgCi0gICAgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAKLSAgICAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCAKLSAgICA0MTkyOCwgNDA5ODEsIDc4NDAzLCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgCi0gICAgNDMyNTksIDAsIDYxMDcsIDAsIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgCi0gICAgNDM4LCA0NTEwLCA1NzY1LCA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIAotICAgIDgwOTYsIDEwMjg0LCAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCAwLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgCi0gICAgNzQ4MzEsIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgCi0gICAgMCwgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIAotICAgIDE5NTMsIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCAwLCA0MTI1NywgNDE5MDAsIDg2NzUsIAotICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAwLCA5MzMzLCA4MjAyLCAxMjc3NTAsIDAsIDAsIDAsIDAsIDczODgyLCA0OTksIDAsIAotICAgIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCAwLCAwLCAxMTk2NywgMTc3NSwgMCwgMCwgMCwgCi0gICAgMCwgMTI4MDA5LCA5NDU4LCAwLCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAwLCAwLCA0Mjc4MiwgMCwgMCwgMCwgCi0gICAgMTI4MzA5LCA3NDc3NywgMTIwNjY5LCA5NDE0LCAxMjAzODIsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAKLSAgICAyNjYyLCA0MjI5MiwgMCwgODI1NCwgMCwgMTA5NzUsIDAsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIAotICAgIDc0MjQ3LCAwLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCAwLCA0MzE0OSwgMCwgNjUwMzEsIDc5NjEsIDE2MzYsIDAsIAotICAgIDY1MDI5LCA2NTAyNCwgMCwgMTI0NzMsIDY1MzQsIDAsIDk5LCA5OCwgOTcsIDEyMDU3MSwgNjc1ODQsIDQwNDksIDc0MTYzLCAKLSAgICAxMjcwNjUsIDcwOTAsIDAsIDc4OTIsIDkxNzk2OSwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCA2NjU5OSwgNjY3MjIsIAotICAgIDAsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMCwgMCwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIDU1OTMsIAotICAgIDExOTE0OCwgMTIwNzExLCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIDEyOTk4LCAKLSAgICAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIDEwMSwgCi0gICAgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA3NzkzMSwgMTUzNiwgNjQwOTMsIAotICAgIDczOTcwLCA3NzkzMCwgMTI3MTU3LCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIDEzMjY2LCAKLSAgICAxMjc4MTMsIDEyNzExMSwgMCwgNzM5MjYsIDAsIDEwNjQ1LCAxMjEyLCA2NTQzLCAwLCA4MTM0LCAxMjgwMjgsIDI5MTMsIAotICAgIDczODcwLCAxMjcxMTMsIDE4NjYsIDAsIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIDY2NTg1LCA3ODc4NiwgMzE5NiwgCi0gICAgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAKLSAgICAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIDEyODc4MSwgNDExNjksIDg5MzksIAotICAgIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgMCwgCi0gICAgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgMCwgNjQ1LCAwLCA3NjA5LCA0MDk3MywgMCwgNzM4MzMsIDc4MjQ5LCAKLSAgICA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgCi0gICAgMCwgMTI4MTQwLCA2ODQxNSwgMCwgNDUzOCwgMTIwNDA2LCA0MzE0MSwgMCwgMCwgNzQyMTQsIDczODg2LCAwLCAwLCAKLSAgICAxMTg5MDIsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgMCwgMCwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAKLSAgICAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgCi0gICAgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIAotICAgIDExNTc1LCAwLCAxMTk1NjYsIDAsIDEyODA4LCAxMjE4MywgNjE0NSwgMTE4OTU1LCA2NDkyOSwgOTI0MzMsIDAsIDAsIAotICAgIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgMCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIAotICAgIDkxNzk1NywgNjY2ODAsIDEyMDA5MCwgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDAsIDAsIDEyMDA4MiwgCi0gICAgMTIwMDgxLCAxMjAwODQsIDQxMDI3LCAxMjAwODYsIDAsIDEyMDA4OCwgMTIwMDg3LCA3MDE5LCAxMjAwNzMsIDAsIDExNzUxLCAKLSAgICAxMjAwNzgsIDc4Mjk0LCA2NDY1NywgODY1NywgMTIwMDQ4LCA4NTk0LCAxMjAwNjgsIDAsIDAsIDEyMDA2OSwgMTIwMDcyLCAKLSAgICAxMjAwNzEsIDAsIDAsIDQzMTU0LCA0MTAyOSwgMCwgMTEzMzIsIDY1MzgwLCA3NzI4LCAwLCAxMTI5NCwgMCwgNjY2NjUsIAotICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCAwLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDAsIAotICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgMCwgMTI5MjQsIDEyODIyNywgNDIzNjksIDAsIAotICAgIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMCwgMTEyOTYsIDAsIDAsIDAsIDY1ODI1LCA5NTc3LCAKLSAgICA2ODE5OSwgMCwgNjQ2NzAsIDAsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgCi0gICAgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMjA4MDgsIDI1OSwgCi0gICAgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDAsIDAsIDY1MTI1LCA0MTI0NCwgMCwgMTMyNzEsIDkxMDMsIDQxMTgwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIAotICAgIDAsIDExODk4OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIDEyNzg4OSwgMCwgMTg5MCwgMTIwMDU2LCAwLCAwLCAwLCAKLSAgICA3MjkzLCA3OTkxLCAwLCAxMDU3OCwgMCwgNzgwNzYsIDE5NDczOCwgNzgwNzcsIDAsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIAotICAgIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgNzY3NiwgMTE2NjQsIDAsIDAsIDY5NzA3LCAwLCAxMTg4MTIsIAotICAgIDAsIDAsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAwLCA2NDU0NSwgMTM5NiwgMCwgNzU0NiwgMzg0NywgMCwgCi0gICAgMTI3ODM1LCA0OTg1LCAxMzI4OCwgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCAwLCAxMjgxMjYsIDAsIDc0MDQzLCAKLSAgICA2NTA3MiwgMTU3NywgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAKLSAgICAxMjg1ODQsIDEyNjIyLCAwLCAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIAotICAgIDEyNjk4MywgNDI3MzEsIDkyMjA1LCAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCAKLSAgICA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgMCwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgCi0gICAgMzUwNSwgODcwNywgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCAKLSAgICA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCAwLCA5MjY5NiwgMCwgMCwgMCwgMTI4NTIzLCAzMjI1LCAKKyAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAKKyAgICAxNjY3LCA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIAorICAgIDM2MTAsIDk4MzE5OSwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgCisgICAgMTA4NzUsIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgCisgICAgMzg3NCwgMCwgMCwgOTgzNjE5LCAxMjAzMzEsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKKyAgICAxMTk1NzAsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgCisgICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgCisgICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAorICAgIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCA5ODMyMTEsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCAKKyAgICA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDAsIDc0MzgyLCA3Mzc4MSwgNzkxOCwgNzM5ODgsIDAsIAorICAgIDAsIDkxNzg4NCwgMTcyOCwgMCwgNDM3NjQsIDE3OCwgMTI5NzIsIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCA5ODMzNzMsIAorICAgIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIAorICAgIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKKyAgICAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzA3LCA2OTkxMSwgMTE5MTAsIAorICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKKyAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NDEsIDAsIDc0OTEsIAorICAgIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIAorICAgIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIDEyMDIzOSwgNjU1MTYsIDEyMzIxLCAKKyAgICAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIDEyMDI0OCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgCisgICAgNjU4MDEsIDEyODgwOCwgMCwgNjY1NzIsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCA3ODQwMywgCisgICAgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIDQzMjU5LCAwLCA2MTA3LCAwLCAKKyAgICAxMTkxNzcsIDAsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgCisgICAgODcyMSwgMTIwMjMzLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgCisgICAgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgOTgzMDcyLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgNzQ4MzEsIAorICAgIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgMCwgCisgICAgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIAorICAgIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA5ODMxMDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCisgICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgOTgzMTk3LCAwLCAwLCA3Mzg4MiwgNDk5LCAKKyAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDQsIDAsIDExOTY3LCAKKyAgICAxNzc1LCAwLCAwLCAwLCAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIAorICAgIDQyNzgyLCAwLCAwLCAwLCAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIAorICAgIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgCisgICAgNDEwOCwgMzg4MCwgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgCisgICAgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgCisgICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIAorICAgIDY2NTk5LCA2NjcyMiwgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCAKKyAgICA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIAorICAgIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIAorICAgIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCAKKyAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCisgICAgMTMyNjYsIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDk4MzI5OSwgODEzNCwgCisgICAgMTI4MDI4LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCAwLCAxOTUwOTUsIDAsIDg5MjMsIDE2NDUsIDEyMDU5LCAKKyAgICA2NjU4NSwgNzEyOTcsIDMxOTYsIDAsIDAsIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgCisgICAgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAwLCAKKyAgICAxMjg3ODEsIDQxMTY5LCA4OTM5LCA0MTI0NSwgMCwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMCwgMCwgMCwgCisgICAgNDExNzIsIDc4NTUsIDAsIDAsIDEwNDgwLCAwLCAwLCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMwMCwgNjQ1LCAxMjY2MTYsIAorICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCisgICAgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgMCwgMTI4MTQwLCA2ODQxNSwgOTgzMDkzLCA0NTM4LCAxMjA0MDYsIAorICAgIDQzMTQxLCAwLCA5ODMyMDgsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAorICAgIDk4MzE1OSwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAKKyAgICAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCAKKyAgICA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCA5ODM0ODIsIDExOTU2NiwgMCwgMTI4MDgsIAorICAgIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgOTgzMTkzLCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAorICAgIDkxODcsIDk4MzYxNCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIDcxMzY2LCA2NjY4MCwgCisgICAgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgOTgzMjg5LCAwLCAxMjAwODIsIDEyMDA4MSwgMTIwMDg0LCAKKyAgICA0MTAyNywgMTIwMDg2LCAwLCAxMjAwODgsIDczNjYsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAorICAgIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgMCwgCisgICAgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIDc4NTEsIDAsIAorICAgIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgMTI4MDk1LCA5ODM4NTUsIAorICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgOTgzMDQ3LCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgCisgICAgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgOTgzMjc1LCAwLCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDAsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIAorICAgIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIAorICAgIDc4MDY5LCAxMjA4MDgsIDI1OSwgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMCwgNjUxMjUsIAorICAgIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgMjI3OCwgMCwgMCwgMCwgMCwgMTAyMTksIDAsIDAsIDAsIDAsIDQzMTc4LCAKKyAgICAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIAorICAgIDY5OTI3LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCAKKyAgICA3ODA3NywgNjk5MjgsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgCisgICAgNzY3NiwgMTE2NjQsIDAsIDk4MzY0OSwgNjk3MDcsIDAsIDExODgxMiwgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgCisgICAgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAxMjcxNzcsIDEyNzgzNSwgNDk4NSwgMTMyODgsIAorICAgIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgOTgzMDk2LCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAorICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgMTI4NTg0LCAxMjYyMiwgMCwgCisgICAgMCwgMCwgMTk0NzE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCAxMjY5ODMsIDQyNzMxLCA2Nzk3MiwgCisgICAgMCwgMCwgMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDAsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgCisgICAgOTUxMCwgNjYyMzcsIDk4MzI5NCwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgMzUwNSwgODcwNywgCisgICAgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCA2Njg2LCAKKyAgICAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCA5ODMyOTgsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAogICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgMCwgMTA5MjYsIDExNzU2LCAxMTc1NywgCiAgICAgNjQ4NzksIDkxNzk0OSwgOTE3OTUwLCAxMjc4NDgsIDEzMjI3LCAwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTE3OTUzLCAKICAgICA0MTQxOCwgMCwgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDkxNzk2MSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgCi0gICAgMTE5MjU3LCA0Mjc0LCAwLCA0MTQ4MywgMCwgNDEyNTAsIDAsIDQyMTc5LCAwLCA1OTMxLCAxMTc0NCwgNjkyMzIsIDAsIAotICAgIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgMCwgMCwgNDM5NywgCisgICAgMTE5MjU3LCA0Mjc0LCA5ODMyOTIsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgCisgICAgMCwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKICAgICAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjgwNDksIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgCiAgICAgMTA0MDAsIDAsIDEyODgxOCwgNzYwLCAwLCAxMjA4OCwgNTc4NiwgMCwgNDIyNTYsIDExOTg2OSwgMTE5ODYwLCA0MTcsIAotICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCAxMTk4NjcsIDY2NTgzLCAxMTkyMzEsIDY0ODc3LCAwLCA2NDQ4MSwgCisgICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDIyODQsIDY0NDgxLCAKICAgICA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgMTI2OTk1LCAwLCAwLCAwLCA0MjI3MywgNTgxOSwgMCwgOTE3NTU2LCAwLCAKLSAgICAwLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAwLCAxMjM3LCAxMDI3NCwgNDU1MiwgMTE5NTc2LCAwLCAwLCAKLSAgICAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA3NDE5MiwgMTIwNzk0LCA3ODQwLCAKLSAgICAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgMTA3NjksIDk2NzYsIAotICAgIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAxMDI5OSwgMCwgMCwgCi0gICAgMTIwNjA4LCA2NjMyNiwgMCwgMCwgMCwgNDM4MTEsIDkzMzAsIDAsIDcyMjIsIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIAotICAgIDAsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCAKLSAgICA2NDgwNiwgNDMxODAsIDc3OTI4LCA2ODA5NiwgNzc5MjksIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgCi0gICAgMTYwMiwgMCwgMCwgODUyLCAwLCAxMjE2MCwgMCwgMTAyMTIsIDY1NDM1LCAwLCAxMjA3MSwgOTYwOSwgMTIxNTYsIAotICAgIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgCi0gICAgMTAzNzUsIDkxNzk5MywgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgNzc5MzcsIDQzNjM5LCA0MzM0MywgMCwgOTE3OTk4LCAKLSAgICAxMTUwMSwgNDExNzcsIDEyODY4OSwgMCwgOTE3NzkyLCAwLCA5MjQxMywgODcxNSwgMCwgNDExNzksIDAsIDQzMzEzLCAwLCAKLSAgICA0MTE3NiwgMCwgOTk0LCAwLCA4NDUyLCAxMjcxMDMsIDczOTY2LCAwLCAwLCA1OTIxLCAwLCAyNTk3LCAwLCA1OTIyLCAKLSAgICAxMTg5MDMsIDc3OTQzLCA0MTg2LCA5MjUzMSwgMTI3MTA2LCAxMjcxMDUsIDY3MTgsIDAsIDQ0MDYsIDc0NjAxLCA4NDgwLCAKLSAgICA5MTkyLCA5NzQ3LCAxMjg2OTksIDQ0MTMsIDkyMTk2LCA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIAotICAgIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCA0MzE2OSwgMTAxNzYsIDAsIDc0MiwgMCwgMjg5MywgMTA3NzIsIAotICAgIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgMTI4NTkwLCAxMjg2NDYsIDgzNjMsIDAsIDI5OTMsIAotICAgIDc3NzIsIDM5MTYsIDAsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIDgxNTksIDcxOCwgNzU3MiwgOTczLCAwLCAxMjA3MTgsIAotICAgIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIAotICAgIDY1MzkwLCAxMDA2NywgMCwgMTIwMiwgMCwgMCwgNjU4NjMsIDAsIDAsIDAsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIAotICAgIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgCi0gICAgMCwgNjY1NjUsIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCAKLSAgICA0NTQ0LCAwLCAwLCAwLCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIAotICAgIDAsIDEwMTQxLCAwLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCAKLSAgICA3ODEwMywgNzgxMDQsIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgCi0gICAgMzkzMSwgMTIwMjk1LCA3NDE0MywgMCwgMCwgMCwgMCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAKLSAgICAwLCA0MTczNSwgMCwgNzE3LCAxMDc1NCwgMCwgMCwgMTI3OTc5LCAwLCA2Mzc2NywgMCwgMTc4MCwgNjkzNiwgMCwgMCwgCi0gICAgODE5LCAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKKyAgICAxMjY2NDMsIDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAxMDI3NCwgNDU1MiwgCisgICAgMTE5NTc2LCAwLCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgCisgICAgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgCisgICAgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAKKyAgICAxMDI5OSwgMCwgMCwgMTIwNjA4LCA2NjMyNiwgOTgzNDM5LCAxMjc3OTQsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDk4Mzc3MywgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIDAsIAorICAgIDc4MzQ3LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzc5MjgsIDc0MTQsIDc3OTI5LCA0Mzk4MiwgCisgICAgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDAsIDg1MiwgMCwgMTIxNjAsIDAsIDEwMjEyLCAKKyAgICA2NTQzNSwgMCwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIDExMDM1LCAxMDQxMSwgCisgICAgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA3MzkwMCwgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgCisgICAgNzc5MzcsIDQzNjM5LCA0MzM0MywgNzg3NzcsIDkxNzk5OCwgMTE1MDEsIDQxMTc3LCAxMjg2ODksIDAsIDkxNzc5MiwgMCwgCisgICAgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCAwLCA0MzMxMywgMCwgNDExNzYsIDAsIDk5NCwgMCwgODQ1MiwgMTI3MTAzLCAKKyAgICA3Mzk2NiwgMCwgMCwgNTkyMSwgMCwgMjU5NywgMCwgNTkyMiwgMTE4OTAzLCA3Nzk0MywgNDE4NiwgOTI1MzEsIDEyNzEwNiwgCisgICAgMTI3MTA1LCA2NzE4LCAwLCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTI2NTMwLCA0NDEzLCA5MjE5NiwgCisgICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCisgICAgNDMxNjksIDEwMTc2LCAwLCA3NDIsIDAsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIAorICAgIDY3NTYsIDEyODU5MCwgMTI4NjQ2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIAorICAgIDQyNDA3LCA4MTU5LCA3MTgsIDc1NzIsIDk3MywgMCwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgCisgICAgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDAsIDEyMDIsIDAsIDAsIAorICAgIDY1ODYzLCAwLCAwLCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCAKKyAgICA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDAsIDAsIDU1MjM3LCAxNDMxLCAwLCA2NjU2NSwgMTA4MjEsIDAsIAorICAgIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDAsIDAsIDAsIAorICAgIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgMCwgMTAxNDEsIDAsIAorICAgIDYzNzYxLCA4Nzg1LCA0NDc2LCA3ODEwOSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA3ODEwNSwgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCisgICAgMCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAwLCAxMjcxNjAsIDAsIDQxNTczLCAwLCAzOTMxLCAxMjAyOTUsIAorICAgIDc0MTQzLCAwLCAwLCAwLCA3ODQ2MCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAwLCA0MTczNSwgCisgICAgOTQwMTksIDcxNywgMTA3NTQsIDAsIDAsIDEyNzk3OSwgMCwgNjM3NjcsIDAsIDE3ODAsIDY5MzYsIDAsIDkyMjU0LCA4MTksIAorICAgIDEwNjExLCA5Njk0LCAxMjY5NzgsIDAsIDAsIDAsIDAsIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIAogICAgIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MzM4LCA1NzUsIDI2OCwgCiAgICAgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgCiAgICAgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgMTIwNzIxLCA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCAxMjAzNDYsIDAsIApAQCAtMTcxMjgsMTY4NiArMTgwNjMsMjY0MiBAQAogICAgIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDAsIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIAogICAgIDEyODM1MCwgODU5NSwgMCwgOTE3OTQ3LCA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDAsIDEyMzgxLCAKICAgICAzNDg4LCA1OTMzLCAxMDAzMywgNzM3MzgsIDY2MjQxLCA2NTU3MCwgMCwgMTIyOTcsIDExOTE1MywgMTk1NSwgMCwgNTM0OSwgCi0gICAgNDI1MzgsIDAsIDAsIDY1MzA4LCA5NDYyLCA5MTc1NTQsIDAsIDAsIDAsIDQyNzM2LCAwLCA1NzU2LCAwLCA3NjM4LCAKLSAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCAxMjA2MDAsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCi0gICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAwLCAyOTEsIDAsIDAsIDIwMjcsIDY2MjMwLCAKLSAgICAxMDA4MCwgNzgxMzYsIDEwNDAzLCAwLCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgNDI1MTIsIDEyMDQzMSwgCisgICAgNDI1MzgsIDAsIDAsIDc0MTEsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDk4MzIxOSwgNzYzOCwgCisgICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgNzQwMzcsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCisgICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgMCwgMjAyNywgCisgICAgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKICAgICAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAxMjcxNDgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAKICAgICAwLCA0MTI3NCwgNTc3OCwgNjMwMiwgMCwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNzc4ODksIDE5NDkxNCwgOTQ1MiwgMCwgCi0gICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDAsIDY1MzkxLCAwLCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgNzg2NTgsIAotICAgIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIDEyMDQxMiwgCi0gICAgNDEyNjcsIDQ2NDYsIDEyMDQyNSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgNzgyNzAsIAotICAgIDEyNzk4MiwgMCwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgMTk1MDg5LCA2MDY5LCAKLSAgICA5MjE5LCAxOTUwOTAsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAxMTkxNDMsIDAsIDAsIDAsIAotICAgIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgMTk1MTAxLCA5MjU2MSwgNDE0NjIsIAotICAgIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDAsIDAsIDAsIDEwMjI5LCAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgCi0gICAgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgMCwgMTgwOCwgNzg0OCwgMCwgODEwMCwgNzgyMjcsIDc4NjY5LCAKLSAgICA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgNzg4NzIsIDAsIDExMDAzLCA5OTA0LCAwLCAwLCAxMjA2OTAsIAotICAgIDkxNDQsIDEwOTIxLCAwLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3Nzg0MSwgMTAzMTMsIDAsIDAsIDY0MzIwLCAKLSAgICAxMDI2NSwgNzg2ODYsIDEwOTYyLCA3ODY4NCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAwLCA0MSwgMTk1MDcyLCAxNzkyLCAKLSAgICAxMjA1MTUsIDE5NTA3MywgODY1NSwgMTk1MDc1LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCAwLCAzODUsIDQxNTIsIDI1ODUsIAotICAgIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCAwLCA3NDEzNiwgMTA5NTcsIDAsIDQzMjU4LCAwLCAxMjc4NzMsIDEzMTU3LCAwLCAwLCAKLSAgICAzNTcwLCAwLCA3NDQzLCAwLCA0NDAwNiwgNjk5NywgMCwgMCwgNzg3OSwgODczOSwgMTEwNzUsIDAsIDY1MjE2LCAwLCAKLSAgICA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgOTE3ODYyLCA3ODM5LCAxMTk5MTMsIDc4ODA2LCAxMTk5MTIsIDk2OTEsIDQ0MTEsIAotICAgIDc4ODAyLCAwLCAwLCA0MzQ0MiwgNzg3OTksIDY1MjU0LCAxMDA2NiwgMCwgMCwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKLSAgICAxOTkzMiwgNjQ4MzEsIDAsIDExOTkyMywgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDAsIDExMDU2LCAwLCAxMTk5MjUsIAotICAgIDAsIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKLSAgICA5MTc1NDQsIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKLSAgICAwLCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCAwLCAwLCAwLCA1MjA5LCAyOTcsIAotICAgIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIAotICAgIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgMCwgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIDEyNzUwNSwgCi0gICAgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzg4NzMsIDU4NDQsIDc4ODc0LCAxMTg4MzgsIDAsIAotICAgIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCAwLCAwLCAwLCA4ODkyLCAwLCAKLSAgICA5MjMzOSwgMCwgMCwgNTc4MiwgNDIwLCAwLCAwLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAwLCA2NDgxNCwgNjM3OTYsIAotICAgIDc3OTY1LCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMCwgMCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgMCwgNDM2NzYsIDAsIAotICAgIDY5NjczLCAwLCAwLCAwLCAzMjksIDc3OTY4LCA5MjcwNywgOTE3NTQ4LCA3Mzk5LCAwLCA0MTE4OCwgMTMyNDQsIDEyMDQ2NiwgCi0gICAgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgNDMxMjYsIDc3OTcyLCAwLCAKLSAgICA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgMCwgMTE3MiwgNjk3OTksIDY3ODYsIAotICAgIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIAotICAgIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDAsIDczODY4LCAxMTg5NDQsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMCwgNTM0MywgCi0gICAgNzg0MjIsIDAsIDQ1NTUsIDUzNDEsIDAsIDAsIDEyODY3MCwgNTM1MSwgMCwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCAKLSAgICA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCA5MTc4ODgsIDE5NDg5MiwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIAotICAgIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIAotICAgIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgCi0gICAgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIDAsIDI0MjMsIDc3OTU4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAwLCAKLSAgICAwLCAwLCAwLCA2NDYwNSwgMCwgMCwgMCwgNDkxNiwgMCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgCi0gICAgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgOTE3ODk2LCAwLCAKLSAgICA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAwLCAwLCAwLCAwLCA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAwLCAKLSAgICAwLCA4ODQ3LCAwLCA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDAsIDkyNjA5LCAwLCAwLCAzMTI3LCAyNTk1LCA2NTcxMywgCi0gICAgNDIwMTMsIDAsIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDAsIDc0MjAwLCA0OTcwLCA4NzY0LCAKKyAgICA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIAorICAgIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAKKyAgICAxMjA0MTIsIDQxMjY3LCA0NjQ2LCAxMjA0MjUsIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAorICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgCisgICAgMTk1MDg5LCA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKKyAgICAxMTkxNDMsIDAsIDAsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIAorICAgIDE5NTEwMSwgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCAwLCAwLCAwLCAxMDIyOSwgCisgICAgMTA2MzUsIDgyNiwgMTI4MDgxLCAxOTUwODIsIDE5NTA4NSwgMTk1MDg0LCAxOTUwODcsIDY0ODMsIDkyMjExLCAxODA4LCAKKyAgICA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgCisgICAgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIAorICAgIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgCisgICAgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgCisgICAgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgOTgzNjk0LCAKKyAgICA0MzI1OCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCAwLCA5MTc1NDQsIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAKKyAgICA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKKyAgICA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgNzg4MDIsIDAsIDAsIDQzNDQyLCAKKyAgICA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODAsIDAsIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAKKyAgICAwLCAxMTk5MjMsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCAwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDAsIAorICAgIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKKyAgICAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKKyAgICAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIAorICAgIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCAKKyAgICA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgCisgICAgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNjgwMzEsIAorICAgIDExODgzOCwgMCwgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIAorICAgIDg4OTIsIDAsIDkyMzM5LCAwLCA5ODMwNzMsIDU3ODIsIDQyMCwgMCwgMCwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMCwgCisgICAgNjQ4MTQsIDYzNzk2LCA3Nzk2NSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDAsIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIAorICAgIDAsIDQzNjc2LCAwLCA2OTY3MywgMCwgMCwgMCwgMzI5LCA3Nzk2OCwgOTI3MDcsIDkxNzU0OCwgNzM5OSwgMCwgNDExODgsIAorICAgIDEzMjQ0LCAxMjA0NjYsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIAorICAgIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDEyODU0MywgCisgICAgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIAorICAgIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDk4MzYyMywgNzM4NjgsIDExODk0NCwgCisgICAgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCAwLCA3MDA3MSwgMTI4NjcwLCAKKyAgICA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCAKKyAgICA5MTc4ODgsIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIAorICAgIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAKKyAgICAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAorICAgIDEyNjYzNSwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAKKyAgICAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCAKKyAgICA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIDc5NDYsIDEyNTQxLCA4MTgyLCAKKyAgICA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIDY4MDExLCA4ODQ3LCAwLCAKKyAgICA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDk4MzIwNiwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgCisgICAgOTgzODQ5LCA1NjA3LCA0MTA4OSwgMCwgMCwgNzQyNTYsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIAogICAgIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCAwLCA2NTAxMSwgNDEwOTAsIDAsIDAsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgMCwgMzU3MiwgMTAwMjMsIDQ5NTksIAotICAgIDEzMDc5LCAwLCAwLCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgCi0gICAgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCAwLCA5NzIsIDQxNDUzLCAwLCAwLCAKLSAgICA3Mzg4MywgOTI0MDgsIDczOTQ1LCAwLCAzNDU1LCAxOTk1NSwgOTUzOCwgMCwgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCAKLSAgICAwLCAxMTAxOSwgMCwgMCwgMCwgMTIwNTA3LCA0MTA3OCwgMCwgMjYxLCA1OTI3LCA3NzkxLCAwLCA2NDQ0NiwgMCwgMTA2OTYsIAotICAgIDAsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgMTI4NTYzLCAyODIsIDAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIAotICAgIDk4MDEsIDAsIDAsIDAsIDAsIDM0NzQsIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCAxMjc4NDMsIDc0MDc2LCA3ODg3OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODc1MSwgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCAKLSAgICA5MjYwOCwgMTIwMjcyLCAwLCA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIAotICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCAKLSAgICA5MTc4NzUsIDg2NjQsIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCAKLSAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCi0gICAgOTIzODEsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY2NjA0LCAxMjAyNjIsIAotICAgIDEyMDI2MywgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgCi0gICAgMTIwNjEzLCAxMjg3MDQsIDAsIDExOTE5NiwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIAotICAgIDE2NDEsIDAsIDAsIDg5NjYsIDAsIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNzQxOTEsIDc0ODQzLCAwLCAKLSAgICAwLCA2MzA2LCAxMDE2OSwgMCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgCi0gICAgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAKLSAgICAxMTQ0NywgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIAotICAgIDQxNDM1LCA0MzUyLCAwLCAyNDM1LCAxMjA4MDksIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgCi0gICAgNDIwNCwgMTIwNDQ3LCAzNzY4LCA2ODE0MiwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAKLSAgICAxMjk0NywgNDU2NCwgMCwgMCwgNzQyNzEsIDczNzUzLCA4Mzc0LCAwLCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgCi0gICAgMCwgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCAwLCAxMjcyMzYsIDEyODAxOSwgMCwgNTM1MywgCi0gICAgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCAwLCA2OTUyLCAwLCAxMjA3NTIsIAotICAgIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgCi0gICAgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIDU2MjcsIDEyMDAxNywgCi0gICAgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDEwOTYxLCAwLCAyMDMsIDAsIDAsIDAsIDAsIDc4MzUwLCAwLCAKLSAgICA2NDM3OCwgNDIwNTQsIDAsIDAsIDU1NCwgMTE5NjQ5LCAxMTM1OCwgMCwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI3ODc4LCAKLSAgICA3Mzg5MSwgMCwgMCwgNTY5NCwgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDAsIDAsIAotICAgIDY5NzY0LCAwLCAwLCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgMCwgNjk3NzAsIDQzNjUxLCAwLCA2ODExOCwgMTI4MDI0LCAKLSAgICAxMTI5LCAwLCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIDAsIDM4NDUsIDQ0OTAsIAotICAgIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCA3NzU2LCAxMjM0MiwgCi0gICAgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDkxNzg2MywgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCA5MjUxLCAKLSAgICA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIDAsIDQxNDk0LCAKLSAgICA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIAotICAgIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCA0MTQ1NywgMCwgCi0gICAgMTE5NTg5LCAxOTY5LCAyMzg0LCA4MDk3LCA5MTc4NjQsIDAsIDEyNzM4MCwgNzgwMjksIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAKLSAgICAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIDkxNzg2OCwgMCwgODQyOSwgMCwgCi0gICAgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgMCwgMCwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIAotICAgIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgCi0gICAgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgCi0gICAgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCAKLSAgICA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCAKLSAgICA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgMCwgMCwgMCwgNjU1MDcsIDI0NDcsIDAsIDAsIAotICAgIDEyODA0MiwgMCwgMCwgMCwgNjMzNCwgMCwgMCwgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCAKLSAgICA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgCi0gICAgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDAsIAotICAgIDExNzg1LCAwLCA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3Nzc1LCAKLSAgICAxMjgyOTMsIDAsIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgCi0gICAgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgMCwgMTI4Nzg3LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIAotICAgIDQyNjEsIDAsIDAsIDAsIDAsIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCAKLSAgICA0MjM1MiwgMTc1MiwgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCAwLCA2NTkxOSwgMCwgNjY5NSwgCi0gICAgNzIwLCAzMjQsIDAsIDAsIDQzNDA2LCAwLCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCAKLSAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMCwgMCwgCi0gICAgMCwgNTIwNCwgNzQ3NzQsIDQzNDA0LCA0MzM5NiwgMCwgMzk5NSwgNjgzNjAsIDY1NjA4LCAzNzE0LCAwLCAwLCAwLCAKKyAgICAxMTAwLCAwLCAxMjgzMDEsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjk3OTIsIDAsIDY4MDE5LCAzNTcyLCAxMDAyMywgNDk1OSwgCisgICAgMTMwNzksIDAsIDk4MzI2OCwgOTcyOSwgMCwgMCwgMCwgNDMzNjEsIDAsIDAsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgCisgICAgMTMzMDQsIDEyODI5MCwgMTI3MjYwLCA0MTQ1MSwgMCwgMTEwOTUsIDgyNzMsIDEyNzUzMywgMzQ1MSwgOTgzMzAxLCA5NzIsIAorICAgIDQxNDUzLCA5ODM0MzQsIDAsIDczODgzLCA2ODAyMiwgNzM5NDUsIDk4MzcyNiwgMjI4OCwgMTk5NTUsIDk1MzgsIDAsIAorICAgIDY5ODA3LCAwLCAwLCAwLCAwLCAxMTM5NiwgOTgzNDMyLCAxMTAxOSwgMCwgMCwgMCwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgCisgICAgMjYxLCA1OTI3LCA3NzkxLCAwLCA3MzYyLCAwLCAxMDY5NiwgMCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAKKyAgICA5Mzk5NSwgMjgyLCAxMjY1MTAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIDk4MDEsIDAsIDc0MTc3LCAwLCAwLCAzNDc0LCAKKyAgICAxMTg3ODcsIDAsIDEyMDY1NSwgNjA4MSwgMCwgNzg4NzQsIDc0MDc2LCA3ODg3OSwgMCwgMCwgMCwgMCwgMCwgODc1MSwgCisgICAgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA5MjYwOCwgMTIwMjcyLCA2ODAxNywgCisgICAgOTY0MiwgMTA5MTIsIDk1OCwgMCwgMTEzODcsIDc4ODc4LCA0NjY2LCAwLCA0OTE1LCAwLCA0NjY5LCAwLCA2ODA5OSwgCisgICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDAsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgMCwgOTE3ODc1LCA4NjY0LCAKKyAgICA5Njk3LCAzNjA2LCA5MTc4NzMsIDAsIDAsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIDEyMDI1MSwgOTc3MiwgNzI1NSwgODg4NiwgCisgICAgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIDkyMzgxLCAxMjAyNTUsIAorICAgIDEyMDI1NiwgMTIzMDEsIDEyMDI2NiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAxMjAyNjMsIDEyMDI2NCwgMTAxNywgCisgICAgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgMCwgMCwgODYwOCwgNDI3ODksIDEyMDYxMywgMTI4NzA0LCAwLCAKKyAgICA3Mzg1NSwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIDE2NDEsIDAsIDAsIDg5NjYsIDAsIAorICAgIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNjk4NjEsIDc0ODQzLCA5MTc5MzMsIDAsIDYzMDYsIDEwMTY5LCAKKyAgICA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIAorICAgIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgCisgICAgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIDQxNDM1LCA0MzUyLCAKKyAgICA5ODM2MTAsIDI0MzUsIDEyMDgwOSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKKyAgICAxMjA0NDcsIDM3NjgsIDY4MTQyLCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKKyAgICA0NTY0LCAwLCAwLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDk4MzE1NiwgMCwgNjgyOSwgNTIyNSwgMTI4ODA3LCAxMjczODUsIDAsIAorICAgIDAsIDExOTYxNSwgMCwgNzQ3OTMsIDU2MjYsIDczODA3LCAxMTc3MSwgNzQwNzUsIDEyNzIzNiwgMTI4MDE5LCA0MjYxNCwgCisgICAgNTM1MywgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCA2OTk0MiwgNjk1MiwgCisgICAgOTgzMjY0LCAxMjA3NTIsIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAKKyAgICAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIAorICAgIDU2MjcsIDEyMDAxNywgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDAsIDIwMywgMCwgMCwgMCwgMCwgCisgICAgNzgzNTAsIDAsIDY0Mzc4LCA0MjA1NCwgMCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCAwLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAKKyAgICAxMjY0NjQsIDczODkxLCAwLCAwLCA1Njk0LCA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMCwgCisgICAgMCwgNjk3NjQsIDAsIDAsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCAwLCA2OTc3MCwgNDM2NTEsIDAsIDY4MTE4LCAKKyAgICAxMjgwMjQsIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA5MTc3NzIsIDY1MjU1LCAKKyAgICAwLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0NDAwLCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgCisgICAgNzc1NiwgMTIzNDIsIDEyODU2OCwgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAKKyAgICAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAorICAgIDAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgCisgICAgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCAKKyAgICA0MTQ1NywgOTgzOTYxLCAxMTk1ODksIDE5NjksIDIzODQsIDgwOTcsIDkxNzg2NCwgNzQxMywgNjgwMTIsIDc4MDI5LCAKKyAgICA4NzY2LCAwLCA3ODA3OSwgNTg1NCwgMTI3OTc0LCAxMDU4MywgMCwgMTE5OTg5LCAwLCAxMDQxNiwgOTE3ODY5LCAzODcyLCAKKyAgICA5MTc4NjgsIDAsIDg0MjksIDAsIDExODgwNiwgMjgzOCwgMTI4ODAyLCAwLCA5MTc4NjYsIDAsIDAsIDAsIDk4Mzk1OCwgCisgICAgOTQwMDUsIDExMDk2LCAxMjA4MTMsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgMCwgCisgICAgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCAKKyAgICA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgCisgICAgODU1NiwgMCwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDAsIDc4MTg1LCAwLCAwLCAKKyAgICA5MjcxMywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgOTE3OTc5LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIAorICAgIDAsIDY4MDA5LCAwLCA2NTUwNywgMjQ0NywgMCwgMCwgMTI4MDQyLCAxMjY1NDUsIDk4MzEzNywgMCwgNjMzNCwgMCwgMCwgCisgICAgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIAorICAgIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgCisgICAgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgCisgICAgNjQ2NzEsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCAKKyAgICA3NDU4OCwgMTIwNzQ4LCAzMTQwLCAxMjg4NTQsIDc5NjAsIDQzMjcxLCAwLCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgCisgICAgMTI0NzIsIDAsIDY5ODY0LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIDQyNjEsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCA0MjM1MiwgMTc1MiwgCisgICAgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAKKyAgICAwLCA0MzQwNiwgOTgzNzI3LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCA2NDA0MSwgCisgICAgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMTE5MTM0LCAwLCAwLCAKKyAgICA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAwLCAzOTk1LCA2ODM2MCwgNjU2MDgsIDM3MTQsIDkyMTkwLCAwLCAwLCAKICAgICAxMDk5OSwgMTE3NTAsIDAsIDQzMjUxLCA2ODY2MCwgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIAotICAgIDExOTY0LCAwLCAwLCAwLCAwLCA2ODQ1NSwgNDI4NjMsIDczODM5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjgsIDYxMiwgMCwgCi0gICAgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgMCwgMTIyODAsIDAsIDU0MCwgNzQ1NjQsIDExOTAxNywgCi0gICAgMCwgODQzMiwgMCwgMTEwNzMsIDAsIDY0MzE2LCAwLCAwLCA4MjAsIDQxNzQxLCAwLCAxMjA2NjcsIDAsIDY0Njg0LCAKLSAgICAxMjY5OTIsIDMzNTksIDc4MDAsIDEyODY0NCwgNjUxNzcsIDYyMjYsIDM1MywgMTIzOTYsIDAsIDExOTYxMiwgNjQ3NDIsIAotICAgIDEyODY4MiwgMTIwMjgyLCAwLCAwLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIDk0ODEsIDQyNDE4LCAKLSAgICAwLCA0MTE1NywgMCwgMTE5NSwgNjQ4OTgsIDc5MjQsIDAsIDQxMTUxLCAyMDEwLCAwLCA0MTMyOCwgNDIzNDQsIDAsIAotICAgIDEyNDA5LCAwLCA0MzYwLCAxMjcwMDksIDk3MzksIDAsIDc0MzkyLCA3MzkyMSwgMCwgNDI1MjEsIDg1MzksIDAsIDAsIAotICAgIDExODk4NiwgMCwgNDc4OCwgMCwgMCwgNjU3MzQsIDAsIDQzNzkwLCAwLCAxMzA3NSwgNzQ0MjksIDAsIDY0NTY5LCA0MzUzMiwgCi0gICAgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIAotICAgIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDAsIAotICAgIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgOTIzNjQsIDAsIDAsIDQxMzQ5LCAxMTkxMjMsIAotICAgIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAwLCAxMDI3OCwgMTAyNjIsIDc3OTUwLCA0MTM0NiwgMCwgCi0gICAgNjA3LCAwLCAxMTk4NTMsIDEyODg0NiwgMTI5MjMsIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCAKLSAgICA4MjY1LCAwLCAxMTk4MzQsIDQwOTc1LCA1ODQwLCA0MjgzOCwgMCwgNDA5NzgsIDAsIDExOTg0MCwgMCwgMCwgMCwgNjY0NDQsIAotICAgIDEwNTM4LCAwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgCi0gICAgNjU4MjIsIDAsIDE5NDg4MiwgNzQ1NSwgMCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAwLCAKLSAgICAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAKLSAgICAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCAxMjgwNjAsIDEzMzgsIAotICAgIDEyMDU4MSwgMCwgMTI3MzksIDQ2MDMsIDMwODQsIDAsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgCi0gICAgMTAyOTAsIDAsIDMwODMsIDEwMzIyLCAwLCAwLCAwLCA0MTAzNiwgMCwgMCwgNDMzMjEsIDY1NjA2LCAwLCA0MTAzMiwgCi0gICAgNDIzODgsIDAsIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDE5NDg5MywgMCwgNDA5NjAsIDAsIDE5NDg5MSwgMCwgCi0gICAgNDA5NjMsIDY0OTUyLCAxMDQwMiwgMCwgMCwgOTIzMDQsIDEwNjAzLCAwLCAwLCAwLCAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKLSAgICAxOTQ4OTUsIDc4MzY3LCAxMjczNzcsIDAsIDAsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCA0Nzg3LCAwLCAKLSAgICA3NDgyOSwgMCwgNjU0MjMsIDAsIDEyODExOCwgOTU3MCwgMCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCi0gICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMywgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCisgICAgMTE5NjQsIDAsIDk4MzE4NSwgMCwgMCwgNjg0NTUsIDQyODYzLCA3MzgzOSwgMCwgMCwgMCwgMCwgMTI2NjI5LCAwLCA0NjgsIAorICAgIDYxMiwgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgOTgzMTYzLCAxMjI4MCwgMCwgNTQwLCAKKyAgICA3NDU2NCwgMTE5MDE3LCAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgCisgICAgMCwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCA2MjI2LCAzNTMsIDEyMzk2LCAwLCAxMTk2MTIsIAorICAgIDY0NzQyLCAxMjg2ODIsIDEyMDI4MiwgMCwgOTgzNDQyLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIAorICAgIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMCwgCisgICAgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgNDM2MCwgMTI3MDA5LCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgMCwgCisgICAgNDI1MjEsIDg1MzksIDk4MzcxNiwgMCwgMTE4OTg2LCAwLCA0Nzg4LCAwLCA2ODAyMywgNjU3MzQsIDk4MzQ0NywgNDM3OTAsIAorICAgIDAsIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgCisgICAgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCAKKyAgICA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDkxNzgzNywgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAorICAgIDEyNzA5LCA2OTg2LCA5MjM2NCwgNjgwMTUsIDAsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgCisgICAgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAwLCA2MDcsIDAsIDExOTg1MiwgMTI4ODQ2LCAxMjkyMywgCisgICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIAorICAgIDQyODM4LCAwLCA0MDk3OCwgOTgzODg4LCAxMTk4NDAsIDAsIDk4MzA3MSwgMCwgNjY0NDQsIDEwNTM4LCAwLCAyNTUwLCAKKyAgICAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgNjU4MjIsIDEyNjU2NywgCisgICAgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIDEyMDU1MSwgNDIzODAsIAorICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIAorICAgIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCAKKyAgICA0NjAzLCAzMDg0LCA5ODMxNTUsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzY5NSwgCisgICAgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCA0MjM4OCwgMCwgCisgICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCA0MDk2MywgCisgICAgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDk4MzExMywgMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCisgICAgMTk0ODk1LCA3ODM2NywgMTI3Mzc3LCAwLCA5Mzk2MywgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIAorICAgIDAsIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCisgICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMiwgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCiAgICAgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCA5MTc2MTcsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgCiAgICAgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIDExOTE1OSwgMTI4MTgzLCAxOTQ4NzQsIDY0NjgsIAotICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMCwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIDEyMTgwLCAKLSAgICA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIAotICAgIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIDM2MzgsIAotICAgIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgMCwgMTE5MTgyLCA2OTI0NCwgMCwgMCwgMTE3NTksIAotICAgIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDAsIDQxNDIzLCA4MDc4LCAxMDUwNCwgMCwgNDE2OTgsIDQyMjM3LCAwLCA3MDAyLCAwLCAKLSAgICA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIAotICAgIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIAotICAgIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCi0gICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAotICAgIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgCi0gICAgMCwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAwLCAKLSAgICAzOTE3LCAwLCAxMTczMiwgMCwgMCwgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIAotICAgIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIAotICAgIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgCi0gICAgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCAwLCAyOTExLCAwLCAKLSAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgCi0gICAgMjQwNiwgNzc1LCAwLCA2NTU4NCwgMCwgNjA3NCwgOTYxOCwgMTI4NjY4LCAwLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgCi0gICAgMzY1NiwgMCwgMTk0ODk5LCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAKLSAgICAxMjU5OCwgMCwgMTIwNzM0LCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCAwLCAKKyAgICA0MTk3NiwgOTcyMCwgOTE3NjA2LCAxMTc2NywgNDE5NzAsIDE5NDU5NiwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIAorICAgIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgCisgICAgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIAorICAgIDM2MzgsIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgOTgzNzM2LCAxMTkxODIsIDY5MjQ0LCAwLCAKKyAgICAwLCAxMTc1OSwgMTk0OTAzLCA2MzY4LCA3NDgyMywgMCwgNDE0MjMsIDgwNzgsIDEwNTA0LCAxMjc1NTgsIDQxNjk4LCAKKyAgICA0MjIzNywgMCwgNzAwMiwgOTgzNjY5LCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAKKyAgICAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIAorICAgIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIAorICAgIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgCisgICAgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCAKKyAgICA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgOTgzMTQwLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAKKyAgICAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDAsIDM5MTcsIDAsIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCAKKyAgICA0MTQ2MSwgMTI4ODIzLCAwLCAxMjc5MTIsIDAsIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIAorICAgIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDAsIDAsIDkwOTQsIDAsIDExNzU4LCA2ODQyNSwgMCwgMTA2NCwgNDI0NjcsIAorICAgIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMCwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIAorICAgIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgOTgzMjYxLCAyOTExLCAwLCA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIAorICAgIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgMjQwNiwgNzc1LCAwLCA2NTU4NCwgCisgICAgNjk5MjMsIDYwNzQsIDk2MTgsIDEyODY2OCwgOTgzOTQzLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgMCwgCisgICAgMTIwNjAwLCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAxMjU5OCwgCisgICAgOTgzMTkxLCAxMjA3MzQsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDcwMDI5LCAKICAgICA5OTA1LCAwLCA2NTczMCwgMCwgMTIwMzc0LCA4NDI3LCAxMjAzNzUsIDU1MjQ2LCAxMjAzNzYsIDAsIDExNDk3LCA2NDY4NywgCiAgICAgNzQwMDgsIDQyNTkyLCAzODcxLCAwLCAxMjgzMDUsIDkxMTEsIDU3NDEsIDAsIDE5NDg0NiwgMTIwMzY2LCAxMTkxMTEsIAogICAgIDEyMDc0NSwgMCwgMTIwMzY4LCAwLCAxMTY0OCwgMCwgMTk0ODczLCAxMjAzNjQsIDQxNTg3LCAxMjAzNjUsIDAsIDc0MzIyLCAKICAgICA0MjExMywgMCwgMTI3MTU1LCAxMjE3MiwgMCwgNzQ1MzAsIDY1Mjk4LCA2NTcyMywgMTk0ODQwLCA3Mzg3MSwgNjU3MjQsIAotICAgIDc5MjgsIDEyMDM1NCwgMCwgNDE1OTUsIDczNzMwLCAwLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgMCwgNzg3NSwgMCwgCi0gICAgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIDY1MTczLCA2NTI4NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgMCwgMCwgNzgxOTQsIDY0MzI2LCAKLSAgICA0MDk2OSwgMTA1MjYsIDc4NzUzLCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAwLCA2NTQ2MCwgMTIyNDIsIAotICAgIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCAwLCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIDAsIDEwNzEwLCAwLCAKLSAgICAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCAxOTUwOTEsIDAsIDExOTYzNiwgNjc4NTcsIDEyMDY4NywgMCwgMCwgCi0gICAgMTE3NTUsIDY2MzA1LCAwLCAwLCAxMDkxNywgMTIwNzY3LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIAotICAgIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgMTk4NCwgMTk0NjIxLCAKLSAgICAwLCA5MjI5MywgNDA5ODQsIDEyODMwNiwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDAsIDQxNjYzLCAwLCAwLCAwLCA5MjM3LCAKLSAgICA5Mzg1LCA0MTY0OCwgMCwgMCwgMCwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCA0MTI4NywgOTI2MTAsIDAsIDAsIAotICAgIDQyMjE5LCAxMjgyNTcsIDAsIDQxOTg3LCA0MTY3NiwgMCwgMTIwODIzLCAwLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIAotICAgIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDAsIDExNDUxLCAwLCAxMjg4MjIsIDQyNjMxLCAyMzU5LCAwLCA2Nzg0NCwgCi0gICAgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIDAsIDEyODc5NSwgMCwgMzk3LCA0MzYyMiwgNDIxMzksIAotICAgIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMCwgNDI4LCA5NjIwLCAKLSAgICAxNDY2LCA3ODExMiwgMTA5ODIsIDExODgzMSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAwLCAwLCAKLSAgICAwLCA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDAsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMCwgMCwgNzgxMzcsIDE4ODMsIAotICAgIDEwOTUyLCA4MDQ4LCA3ODE0MiwgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMCwgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgCi0gICAgMTE5MDc0LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIAotICAgIDE5NDgyNCwgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIAotICAgIDEyMDUwMCwgMCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIAotICAgIDg3MDksIDEyODI4MywgMCwgMTIwNjM3LCA0MjQxOSwgNjQ3OTksIDQyMDQ3LCAwLCAwLCA4NDcwLCAxMTgwNywgNjU4OTcsIAotICAgIDU3NywgMCwgMCwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIAotICAgIDQyNjQzLCA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgCi0gICAgOTE3NjEyLCA2NjMxNSwgMjEwNiwgMTIwMjIyLCAxMTI3MywgMCwgNDMwMDQsIDc1NDEsIDAsIDAsIDk2MSwgNjQzMDcsIAotICAgIDY2MzI0LCA2NDkwNiwgMTI4NTkxLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAKLSAgICAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMCwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMCwgMjMyMiwgCi0gICAgMTIwMzcxLCAwLCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDAsIDAsIDAsIDAsIDQzMjE2LCA2MDg5LCAKLSAgICA3ODY4MiwgMCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCAwLCAKLSAgICAwLCAwLCA2NTgyMywgMTI3ODI2LCAwLCAzNTUxLCAwLCAwLCA0NjIzLCA1NTI2OCwgMCwgNDU5OCwgMCwgNjUxMzYsIAotICAgIDEyNzEzNiwgMCwgMCwgMTA4NTEsIDAsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgMTIwNzc4LCA3ODY0OCwgCi0gICAgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDAsIDAsIDYxNzcsIAotICAgIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDc1MTgsIDg3NTQsIDAsIAotICAgIDEyMDIzNywgMjEzNywgNDMwODEsIDAsIDAsIDkxMzYsIDEyMDI0MCwgNDQwMSwgNDEyODAsIDAsIDg5NzQsIDIzMDgsIDAsIAotICAgIDc0MTQ5LCAwLCAyMzE4LCAwLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNjUyNjYsIDEyMDgyNywgCi0gICAgNzQzMDcsIDAsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAwLCAwLCAKLSAgICAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTI4MDgzLCAwLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCA0MjA1MiwgMCwgMCwgCi0gICAgNjc2NTEsIDAsIDk2NjUsIDkyMzAwLCAwLCAxMzE4MSwgMCwgMCwgMCwgMCwgNzQxNDgsIDAsIDAsIDEyMDIyNSwgMTIwMjI5LCAKLSAgICAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgMCwgMCwgMCwgNDExNDgsIDg2ODMsIDc1OTQsIDEyNzUxOSwgMCwgMTE5MDkwLCAKLSAgICAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDAsIDM1MTIsIDExOTYzMywgMCwgODEwMywgMCwgMCwgNjUxODQsIAotICAgIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAKLSAgICAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAwLCAwLCAwLCAzODA0LCAxMzA3MCwgCi0gICAgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAwLCAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIAotICAgIDY2Njk3LCAwLCAxMTY4NCwgMCwgOTI0ODYsIDAsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgCi0gICAgNDAzNiwgMCwgMCwgMTI4MjEzLCAxOTQ4NjEsIDAsIDExOTU0LCAwLCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIAotICAgIDkyNzIyLCAwLCAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIAotICAgIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgCi0gICAgMCwgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAwLCA3NzU1LCAwLCAKLSAgICAwLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDAsIDEyNzAwNCwgMCwgMTIxODgsIDAsIDE2MTcsIDgwNTAsIAotICAgIDAsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDE5NDg3MSwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgCi0gICAgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDAsIDkyMzM1LCAwLCAwLCAwLCAwLCAxMjcxOTUsIDc5NTcsIDg2ODksIAotICAgIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDE5NDgxMywgMCwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgMCwgCi0gICAgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAwLCAwLCAwLCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAKLSAgICAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCAwLCA3MDMsIDAsIDMyNzIsIAotICAgIDg3ODEsIDEyODk0LCAwLCAxMTcwOSwgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgCi0gICAgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAKLSAgICAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAwLCAwLCAwLCAKLSAgICAwLCAxMDAzOSwgMCwgMCwgNTYyMywgNTcxNywgNTc3NiwgMCwgMCwgMCwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIAotICAgIDAsIDAsIDY3ODQ4LCAwLCAwLCAwLCA4ODg3LCAwLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKLSAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCAwLCA4ODEwLCA3NDQ5OSwgNjg2LCAwLCAKLSAgICAwLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgNjUxMTgsIDAsIAotICAgIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgMCwgMCwgNjU0NTUsIDAsIDkyMjQ2LCAwLCAKLSAgICAxMTkxMjksIDAsIDEyODg2LCAxMjc5MjAsIDY2NjI0LCAwLCA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzQxMzUsIDAsIAotICAgIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgNDE0NzUsIDEyODY3MiwgMCwgMCwgCi0gICAgMTE0NzksIDAsIDAsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIAotICAgIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgCi0gICAgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDAsIDAsIDY5MjIxLCAxMDI1LCAwLCA0MjYyNSwgOTE3NjI3LCAKLSAgICA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMCwgMCwgNDE0NDUsIDc4MjM2LCAwLCA4NTY3LCAKLSAgICA0MTQ0MiwgMzk4OCwgMCwgNzgyMzcsIDExODkxMCwgMCwgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAwLCAKLSAgICAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIDAsIDU3OSwgNTUyMTgsIDEwMjA2LCAwLCA2Mzc1LCAyNjczLCAwLCAxMTgxNCwgCi0gICAgMCwgNDQ4OCwgMCwgMTI3MzM2LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCAKLSAgICA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMCwgNjE0LCA3ODE5MSwgCi0gICAgMTI3MzI1LCAxMjA2MTUsIDAsIDc4MjYyLCAxMjg2NjksIDEyNzMyMywgMCwgNDMxMjEsIDAsIDAsIDkyNTEzLCAxMDUwLCAKLSAgICA3NTQ5LCAwLCAwLCA5MzE0LCAwLCAwLCAxMjA2MTYsIDAsIDEwMDU3LCAwLCAxMjczMTMsIDAsIDY2NTA0LCAwLCAwLCAKLSAgICAyMzA3LCAwLCA2NDMzMywgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCAwLCAwLCAxMjc5NzMsIDEyODcwOCwgMCwgMTAzNjAsIAotICAgIDY3NDYsIDAsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMCwgNjY0NDcsIDgwNDYsIAotICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDAsIDEwNDg3LCAwLCAKLSAgICAxMjUyNywgMCwgNzk3MCwgMCwgMTI4NjYwLCAwLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIDAsIDAsIDUyMzcsIAotICAgIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgNTc2NCwgMCwgMCwgMzAwOCwgNDg5NiwgMCwgCi0gICAgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIDkyNzE3LCAwLCA0NzcwLCAwLCA5MTc1NjcsIAotICAgIDg3MzEsIDY1Mzc4LCAxMjczNjIsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgCi0gICAgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAKLSAgICAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIAotICAgIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAKLSAgICAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIAotICAgIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgCi0gICAgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAKLSAgICAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIAotICAgIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIAotICAgIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCAKLSAgICA0MTQ5MCwgMCwgMTQyNiwgNjgyMTcsIDAsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDE5NDk5MSwgNzgwNjcsIDAsIAotICAgIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCA2NDcxMiwgCi0gICAgMTA3NDQsIDAsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCAwLCAKLSAgICAzOTQ1LCA5MjU4OSwgMCwgMCwgMCwgMCwgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDAsIDc4NzMxLCA1NjQ4LCAKLSAgICA2NDc0OCwgMTk0OTEwLCAwLCAxMDIwNSwgMzU0NSwgMCwgNjk4NCwgMCwgNzQwNTEsIDAsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIAotICAgIDAsIDAsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDAsIDExODgzNiwgMCwgNzg0MjcsIAotICAgIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMCwgMCwgOTE3OTY1LCAxODE1LCAxOTkxMCwgODkwLCAwLCAKLSAgICAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDAsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgMCwgCisgICAgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgMCwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIAorICAgIDk4MzExMCwgNzg3NSwgMCwgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIAorICAgIDY1MTczLCA2NTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgOTE3ODE3LCAKKyAgICAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIAorICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgCisgICAgMTA3MTAsIDAsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAKKyAgICAwLCA5ODMwNjYsIDExNzU1LCA2NjMwNSwgMCwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIAorICAgIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgCisgICAgMTk4NCwgMTE4MzAsIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIAorICAgIDAsIDAsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxOTQ1ODAsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCisgICAgNDEyODcsIDkyNjEwLCAwLCAwLCA0MjIxOSwgMTI4MjU3LCAwLCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgMTIwODIzLCAKKyAgICA5ODMxNDQsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCAKKyAgICA5ODMxMTEsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCAKKyAgICA2NDM2OCwgOTgzMjMzLCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAorICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKKyAgICAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIAorICAgIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzgxNDIsIAorICAgIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDk4MzY2NywgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgMTE5MDc0LCAxOTQ4MjEsIAorICAgIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIDE5NDgyNCwgNTUyNzMsIAorICAgIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEyMDUwMCwgMTE5MTU4LCAKKyAgICA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAKKyAgICAxMjY0NzcsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIAorICAgIDk4Mzc1MSwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCAKKyAgICA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgNjk5NDUsIAorICAgIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgNjYzMjQsIAorICAgIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAKKyAgICAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAxMjAzNzEsIAorICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5MCwgNDMyMTYsIAorICAgIDYwODksIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCAKKyAgICA3NDQsIDAsIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCA5ODMxNjIsIAorICAgIDY1MTM2LCAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgCisgICAgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCAwLCAwLCAKKyAgICA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCAKKyAgICA4NzU0LCAwLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAKKyAgICAyMzA4LCAwLCA3NDE0OSwgMCwgMjMxOCwgOTgzMTgzLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgCisgICAgNjUyNjYsIDEyMDgyNywgNzQzMDcsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIAorICAgIDEyNjk4OSwgNjM4NSwgMCwgMCwgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAKKyAgICAxMTA4MywgNDIwNTIsIDAsIDAsIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgOTgzNjU3LCAxMzE4MSwgMCwgMCwgMCwgNzAwODgsIAorICAgIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDk0MDk2LCA5ODM5MzcsIAorICAgIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAKKyAgICAwLCAzNTEyLCAxMTk2MzMsIDk4MzcwMCwgODEwMywgMCwgMCwgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIAorICAgIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgCisgICAgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgMCwgMCwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgCisgICAgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIAorICAgIDkyNDg2LCA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgNDAzNiwgMTI2NDgxLCAwLCAKKyAgICAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDkzOTc4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAwLCAKKyAgICAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIDQxMTkwLCAKKyAgICAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgMCwgCisgICAgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIAorICAgIDAsIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgOTgzNjU5LCAKKyAgICAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgCisgICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCisgICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKKyAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4MzkzOSwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKKyAgICA5ODMyNTIsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKKyAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNDYsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCisgICAgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCAKKyAgICA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIAorICAgIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA5ODMxMjIsIDAsIDAsIDAsIDEwMDM5LCAwLCAKKyAgICA5ODM5MzYsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCAKKyAgICA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKKyAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCA5ODM3MDIsIDg4MTAsIDc0NDk5LCA2ODYsIAorICAgIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCisgICAgNjUxMTgsIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjM5LCAwLCA2NTQ1NSwgCisgICAgMCwgOTIyNDYsIDAsIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIAorICAgIDEwMzk2LCA3NDEzNSwgOTgzNDQ1LCAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIAorICAgIDQxNDc1LCAxMjg2NzIsIDkzOTc1LCAwLCAxMTQ3OSwgMCwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAKKyAgICAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIAorICAgIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKKyAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAKKyAgICAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgCisgICAgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIDAsIDQzNDQ2LCAwLCA2NjUxMywgCisgICAgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDk4MzA3NSwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIDAsIDQ0ODgsIDAsIAorICAgIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCAKKyAgICA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIDEyNzMyNSwgMTIwNjE1LCAKKyAgICAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgNzU0OSwgMCwgMCwgOTMxNCwgCisgICAgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAwLCA2NDMzMywgCisgICAgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCA2NzQ2LCAwLCAKKyAgICA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDEyODI4NSwgNjY0NDcsIDgwNDYsIAorICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgCisgICAgNjk4NzgsIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCisgICAgOTgzMjI5LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAorICAgIDk4MzIzMSwgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAorICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCisgICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCisgICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIAorICAgIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgCisgICAgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAKKyAgICAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgCisgICAgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCAKKyAgICA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgCisgICAgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCAKKyAgICA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIAorICAgIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgOTgzMTUzLCAxNDI2LCA2ODIxNywgMCwgCisgICAgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIAorICAgIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKKyAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDk4MzkyMSwgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIAorICAgIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgNjQ3NDgsIDE5NDkxMCwgNzg3MzMsIDEwMjA1LCAKKyAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDAsIDc0MDUxLCA5ODM2NDYsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDAsIDAsIDAsIDk5MTEsIAorICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY1MywgMTE4ODM2LCA5ODM3MzksIDc4NDI3LCAxMTQwLCAKKyAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgMzI2NywgCisgICAgOTIyOTEsIDAsIDEwMTIzLCAwLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDAsIAogICAgIDEyODM0NywgMCwgMCwgMCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDAsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCAKLSAgICAwLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDAsIDEyODIxNSwgMCwgMCwgMCwgNDEzODIsIDAsIDEyODY1MywgNTE3MywgNjUzNDgsIAorICAgIDAsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgMCwgNjk4OTksIDAsIDAsIDAsIDQxMzgyLCAwLCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKICAgICA1MjcsIDAsIDAsIDkyNjEyLCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAyMzI5LCAKLSAgICA0MjI1MCwgMCwgMTI4ODY0LCA2OTY2NywgMTIyNDUsIDE1NjgsIDAsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIDkyNzA4LCAKLSAgICA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIAotICAgIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgMCwgMCwgMCwgCi0gICAgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAwLCAxMDQ0LCAKLSAgICA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDkxNzg0NywgCi0gICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAwLCAwLCAwLCAwLCAxMDU3LCA1NjYsIAotICAgIDQyNjk2LCAwLCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA5MjUxMCwgMzAwNiwgCi0gICAgNDYyMCwgMTI3MjM3LCAwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgMCwgMCwgCi0gICAgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDAsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgCi0gICAgMCwgMCwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIAotICAgIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIAotICAgIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCAwLCAwLCAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIAotICAgIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAKLSAgICAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAwLCAxMjA0MTMsIDAsIDEyNzI1NywgNjU4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDAsIDAsIDAsIDU1NzgsIAotICAgIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgCi0gICAgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDU1ODIsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCAKLSAgICA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAKLSAgICAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCAwLCAxMjg4MzAsIDgxNzIsIAotICAgIDQyMDE3LCAwLCAxMDg0NCwgMCwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMCwgMCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCi0gICAgMTE5OTk5LCAwLCA3Mzk1LCAwLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDAsIDMwMTUsIDEyODAyMywgCi0gICAgOTE3NzYzLCA1MjExLCAwLCA2NDAwLCAwLCAxOTQ5ODMsIDAsIDgxODksIDExMjc2LCAwLCAwLCAzNzIsIDEyODgyOSwgMCwgCi0gICAgMTE4ODc0LCA0MjEwMiwgNDE1ODUsIDEyODIwMiwgMCwgNDIxMDEsIDI3NiwgNzg0MDIsIDAsIDMzLCA3NDIyNiwgMTI3MzAzLCAKLSAgICA5MDA3LCAxMTg3OTYsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgMTE4ODE5LCAwLCAxMjc4ODQsIDAsIDEwMzEsIDYyNTcsIAotICAgIDAsIDQyMTA0LCAwLCAwLCAyMzI4LCA5MjQwOSwgMTA3MSwgMCwgMCwgNzQ4NDgsIDAsIDAsIDAsIDEwNDcsIDAsIDAsIAotICAgIDY0NzkwLCAwLCA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgCi0gICAgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgCi0gICAgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgCi0gICAgMCwgODY0MywgNzM3NjgsIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgCi0gICAgMCwgMCwgMCwgNzg2MDcsIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgCi0gICAgMCwgODcwMSwgNjgxMzAsIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCAKLSAgICA2NDk0NiwgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgMTIwNjYxLCAxMzI0OSwgNjU2NzksIDczODA4LCAwLCAKLSAgICA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDE5NDk5NywgMTIwMDA1LCAwLCAKLSAgICAwLCA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgCi0gICAgOTIxOCwgMTczMSwgMCwgMCwgMCwgMTk1MDEwLCAwLCAwLCAwLCAxMjAwMDEsIDEyNzAxOCwgOTI0OTIsIDUxNTUsIDAsIAotICAgIDUzNTgsIDAsIDAsIDkxNzc2NywgNjQ0MjQsIDAsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMCwgMCwgNjg0MzAsIDExOTExNiwgCi0gICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgMTE1ODAsIDAsIDY0NjAxLCAKLSAgICAxMjIwNSwgMCwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgMCwgNzQ4NDIsIDAsIDAsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAKLSAgICAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIAotICAgIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIDAsIDAsIDAsIDAsIDAsIDkwMTMsIDQwNTQsIDAsIDAsIDAsIAotICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDAsIDAsIDU1ODQsIDgzNTgsIDAsIDc0NDExLCA5MjIxOSwgCi0gICAgMTA5MTksIDAsIDc5ODAsIDAsIDAsIDAsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAKLSAgICAxMTM1NiwgMCwgMCwgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA5MjUzNSwgODEzNSwgCi0gICAgNjQ1MCwgMTAwNTUsIDc3OTk2LCAwLCAwLCAwLCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCAKLSAgICA5MjU3MywgMTIwNzk5LCAwLCAwLCA1NjUyLCAxMDk0NSwgMCwgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIAotICAgIDc0NTA5LCAwLCA1NjU5LCAwLCAxMjc1MTAsIDY2NzI5LCA1NjU1LCAwLCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAKLSAgICAxMjc3OTIsIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIAotICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCAwLCA2NDg3MCwgMCwgMzQ2NywgMCwgMCwgCi0gICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgMCwgNjk2OTYsIAotICAgIDY5NzY5LCA2NDY1NiwgMCwgMCwgMTk0ODM3LCAwLCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIDAsIDkwOTEsIDEwNzk4LCAKLSAgICAwLCAxMjgxNjYsIDEwMTg2LCAwLCA3NzMyLCAwLCA2NDU1NiwgMCwgMCwgNTY2OCwgNzQ0NDUsIDAsIDAsIDU2NzAsIDAsIAotICAgIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDAsIDEyNzQ5LCA3NDU1MSwgMCwgMCwgCi0gICAgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMCwgMCwgMCwgMCwgMzU3MSwgMTMyNDcsIDAsIDc5NzMsIAotICAgIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgMCwgNzgyNjUsIDU1MywgMTIwNjUzLCAwLCAxMjg1NTQsIAotICAgIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMCwgMTI3NDYsIDAsIDAsIDExOTkyNCwgNTYzMywgMTE5OTI3LCAwLCAwLCAKLSAgICAwLCA2NDkwNSwgMCwgOTUxMiwgMTIwNjcxLCAxMjc0MiwgNjQ0MywgMCwgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAKLSAgICAxMjg4MzIsIDAsIDAsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAwLCAKLSAgICAxMjcyNzAsIDAsIDExODg4MCwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDAsIDAsIAotICAgIDY5ODE1LCA1NjM2LCAwLCA1MzI5LCAwLCA1NjM4LCAxMTk5MTgsIDc5NDAsIDY0OTM4LCA0MzIyMywgMCwgNTYzNSwgMzM3MywgCi0gICAgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA3ODI5MSwgNjIwMywgNDI0NywgMCwgMTE5MjAsIDgyNzQsIDAsIDAsIDE2NTcsIAotICAgIDQxNTYxLCA3ODI5OSwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCAwLCA3ODMwMCwgNDIyMjcsIDAsIAotICAgIDAsIDQxNjM3LCA2Nzg3MiwgMCwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIAotICAgIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgMCwgMCwgNTY0MSwgODI1OSwgMCwgMTA1OCwgMCwgNjc2MzAsIDAsIAotICAgIDAsIDExNDQsIDc4NzUwLCAwLCA0MjIyOCwgMCwgNzM4OTAsIDExODk3MiwgMCwgNjUzMjIsIDAsIDU2NDUsIDY0OTY0LCAKLSAgICA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgNjc2MjEsIDExOTkzNCwgOTAwMCwgCi0gICAgMCwgMCwgOTI2NzMsIDE4NjUsIDAsIDU2MTMsIDc0MjY3LCAwLCAwLCA1NjEwLCAwLCAwLCA2NTgyNiwgMjA2OSwgMCwgCi0gICAgMTA3ODcsIDQzOTk5LCAyOTk3LCAwLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNjUzNzYsIDI0MTIsIDAsIAotICAgIDgxODYsIDk4MDcsIDc0MjY5LCAwLCAxMzEzMCwgNjU4NzQsIDAsIDU4MDcsIDAsIDEwMDMwLCA1MzA2LCAxMjkzNiwgMCwgMCwgCi0gICAgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMCwgMCwgMCwgMTE3MDYsIDk3MTAsIDAsIDAsIDAsIDQxMywgNjU2MjMsIAotICAgIDcxMTgsIDAsIDkxMzMsIDc0MjYyLCAwLCAxMDQyLCAwLCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIAotICAgIDQ5ODQsIDAsIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgMCwgMTMwOCwgMCwgMjUzNCwgODEwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCAwLCAxMDAyNywgCi0gICAgMCwgMTI4MTU0LCAxMjMzNywgMTIwNzIyLCAxMjczNjgsIDAsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MTgyLCAKLSAgICA2MzYzLCAyNzQ4LCAwLCAwLCA2NTA0MSwgMCwgNDQwMTEsIDg3MzAsIDAsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgCi0gICAgMCwgNzI3NSwgNzgzMDQsIDkzNSwgMCwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCi0gICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCAwLCAKLSAgICAxOTQ5OTgsIDAsIDEwNjczLCAxMTkyMTcsIDcyNDgsIDAsIDEyODM0NiwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIDE2NDksIDAsIAotICAgIDk2NCwgMCwgMTI3ODc2LCA3ODIyNiwgMTI4Nzc1LCAxMjc1MTIsIDAsIDAsIDAsIDAsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCAKLSAgICA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA3NDAzNywgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAKLSAgICAwLCA3OTQ5LCAwLCAwLCAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgOTI3MjQsIAotICAgIDY0NzgsIDk4OTgsIDQzNjczLCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgMCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgCi0gICAgNDQwOSwgMCwgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDEyMDUyOCwgNjIzNywgNDg3NCwgMCwgOTE3NiwgMCwgMCwgNjUyMzEsIAorICAgIDQyMjUwLCAwLCAxMjg4NjQsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIAorICAgIDkyNzA4LCA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgCisgICAgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgCisgICAgNzM3MzQsIDAsIDAsIDAsIDY2NDQ5LCAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAwLCAwLCA5MjI5NCwgCisgICAgMCwgMTA0NCwgNDEyNzYsIDAsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMCwgMCwgMCwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAKKyAgICAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCA5ODM0NDYsIDcwOTgsIDAsIAorICAgIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIAorICAgIDkyNTEwLCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzU3OCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIAorICAgIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgCisgICAgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCAxMjY1ODYsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCAwLCAKKyAgICAwLCAwLCAwLCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDAsIDEyMTMwLCAKKyAgICAwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCAwLCAwLCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzU5LCAwLCAKKyAgICAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIAorICAgIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCA5ODM3OTksIDEyMDQxMywgMCwgCisgICAgMTI3MjU3LCA2NTg5NCwgMCwgMCwgMCwgOTgzOTE0LCAwLCAwLCAxMTkxODcsIDIxMzUsIDc4ODY4LCAwLCAwLCA3ODg2OSwgCisgICAgNDIzMTMsIDU1NzksIDkyNDEyLCAwLCA5ODMwODIsIDk0MDAyLCAwLCA1NTc4LCA0MTc3NCwgMTI4MTE1LCA0MjAyMywgCisgICAgNjIzNCwgNTY2OSwgOTIyNzUsIDAsIDAsIDAsIDEyNzUwNiwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCAKKyAgICA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDExOTAwNiwgNjU3MDIsIAorICAgIDAsIDEyMDgwMSwgNjUyNTEsIDAsIDY1NzEwLCAwLCAwLCA2NzY3MiwgMCwgNTM3MCwgMCwgMjkzMSwgMTYzOCwgMTA5NjYsIAorICAgIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDEyODgzMCwgODE3MiwgNDIwMTcsIDAsIDEwODQ0LCAwLCAKKyAgICAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAwLCAwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIDAsIDczOTUsIDAsIDEwNzAsIAorICAgIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMCwgMzAxNSwgMTI4MDIzLCAxMjY0NjUsIDUyMTEsIDk4MzA4MywgNjQwMCwgMCwgCisgICAgMTk0OTgzLCA3MDA1NCwgODE4OSwgMTEyNzYsIDAsIDAsIDM3MiwgMTI4ODI5LCAwLCAxMTg4NzQsIDQyMTAyLCA0MTU4NSwgCisgICAgMTI4MjAyLCAwLCA0MjEwMSwgMjc2LCA3ODQwMiwgMCwgMzMsIDc0MjI2LCAxMjczMDMsIDkwMDcsIDExODc5NiwgNDE1ODgsIAorICAgIDY2MDMzLCA0MjcsIDEwNzYzLCAxMTg4MTksIDAsIDEyNzg4NCwgMCwgMTAzMSwgNjI1NywgMCwgNDIxMDQsIDAsIDk4Mzk3MSwgCisgICAgMjMyOCwgOTI0MDksIDEwNzEsIDQyODk5LCAwLCA3NDg0OCwgMCwgOTgzNTgwLCAwLCAxMDQ3LCAwLCAwLCA2NDc5MCwgMCwgCisgICAgNjk3MjMsIDEwNjUxLCAwLCAwLCAwLCAwLCA5MjIwNiwgMTE5MTgxLCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAKKyAgICAwLCA1NzEwLCAwLCA2NzkwLCA2NTE2OCwgMTMyMTYsIDAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIAorICAgIDU3MTUsIDY5NjU0LCAwLCAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDczNzY4LCAKKyAgICAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA3NDQ5OCwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDAsIDc4NjA3LCAKKyAgICA5MTk2LCA2OTY3MCwgMCwgMCwgMCwgMCwgMTE4OTExLCAwLCAwLCAwLCAwLCAwLCAxMjAwMTAsIDAsIDg3MDEsIDY4MTMwLCAKKyAgICAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCA2NDk0NiwgCisgICAgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA2NTY3OSwgNzM4MDgsIDAsIDY1NDU3LCAKKyAgICA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgMTk0OTk3LCAxMjAwMDUsIDAsIDk4Mzk1NywgCisgICAgNTA4NCwgMCwgMCwgMTE4ODYxLCAwLCA3MzMsIDkxNzg3NiwgNzgwMTQsIDc4NDM2LCA3ODQzNSwgNDE2NzcsIDAsIDkyMTgsIAorICAgIDE3MzEsIDAsIDk4MzczNywgMCwgNjc5OTAsIDAsIDAsIDAsIDEyMDAwMSwgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCAKKyAgICA1MzU4LCA5ODM3MzUsIDAsIDkxNzc2NywgNjQ0MjQsIDk4MzIyNSwgMzg0MCwgNjQzMTQsIDQxNDMyLCAwLCA3ODMxNSwgCisgICAgNjg0MzAsIDY3OTgwLCA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAKKyAgICAxMTU4MCwgMCwgNjQ2MDEsIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI3NiwgCisgICAgOTgzNzEyLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMCwgMjU0NCwgNjUwNzQsIAorICAgIDExOTIxMSwgMCwgMCwgNzgwMTEsIDM1MSwgMTE5MTQ5LCAwLCAwLCA1NTIyOSwgMCwgNzQyNjgsIDAsIDAsIDAsIDQyMzc3LCAKKyAgICAwLCAwLCAwLCA5ODM5MTUsIDAsIDkwMTMsIDQwNTQsIDAsIDk4MzU3MCwgMCwgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAKKyAgICAyNTQ5LCA3NDQ2OSwgMCwgMCwgNTU4NCwgODM1OCwgMCwgNjQyMTUsIDkyMjE5LCAxMDkxOSwgMCwgNzk4MCwgMTI2NjAxLCAKKyAgICA5ODM3NzUsIDIyMTgsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMCwgMCwgCisgICAgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA3NDM5MiwgODEzNSwgNjQ1MCwgMTAwNTUsIAorICAgIDc3OTk2LCAwLCAwLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDAsIDc3OTk0LCAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAKKyAgICAxMjA3OTksIDAsIDAsIDU2NTIsIDEwOTQ1LCAwLCA2NjQ4NiwgMCwgMzY2MSwgNzg2MywgMCwgMCwgMCwgNzQ1MDksIAorICAgIDk4Mzg0MywgNTY1OSwgMCwgNzg2OTIsIDY2NzI5LCA1NjU1LCAwLCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAxMjc3OTIsIAorICAgIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIDEwMzA0LCAKKyAgICAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA5ODM4NzgsIDY0ODcwLCAwLCAzNDY3LCA5ODM4ODIsIDAsIAorICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKKyAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5ODM3MTcsIDAsIDk0MDIwLCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKKyAgICAwLCA5MDkxLCAxMDc5OCwgMCwgMTI4MTY2LCAxMDE4NiwgMCwgNzczMiwgOTgzNzE1LCA2NDU1NiwgMCwgMCwgNTY2OCwgCisgICAgNzQ0NDUsIDAsIDEyODY2MywgNTY3MCwgMTI2NjEwLCAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgCisgICAgMTIwODA3LCAwLCAxMjc0OSwgNzQ1NTEsIDAsIDAsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIAorICAgIDEyODI4NiwgOTQwMDQsIDAsIDAsIDM1NzEsIDEzMjQ3LCAwLCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgCisgICAgNDMxOTIsIDAsIDc4MjY1LCA1NTMsIDEyMDY1MywgMCwgMTI4NTU0LCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDAsIAorICAgIDEyNzQ2LCAwLCAwLCAxMTk5MjQsIDU2MzMsIDExOTkyNywgOTQxMDEsIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIDk0MTA1LCAKKyAgICA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4Mzc5NywgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAxMjg4MzIsIAorICAgIDk4Mzg0MiwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIDEyNzI3MCwgCisgICAgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgOTgzODAwLCAKKyAgICA2OTgxNSwgNTYzNiwgMCwgNTMyOSwgMCwgNTYzOCwgMTE5OTE4LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAKKyAgICAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgMCwgMCwgCisgICAgMTY1NywgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY3NiwgNzgzMDAsIAorICAgIDQyMjI3LCAwLCAwLCA0MTYzNywgNjc4NzIsIDAsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIDExNzA1LCAKKyAgICA1NjQyLCAwLCA1NDg2LCAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAwLCAxMDU4LCAKKyAgICAwLCA2NzYzMCwgMCwgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCAyODAwLCAwLCAKKyAgICA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAwLCA1NjA4LCA2NTg5MCwgNDM4MDgsIDAsIDY3NjIxLCAKKyAgICAxMTk5MzQsIDkwMDAsIDAsIDAsIDkyNjczLCAxODY1LCAwLCA1NjEzLCA2OTk1MCwgMCwgMCwgNTYxMCwgMCwgMCwgNjU4MjYsIAorICAgIDIwNjksIDAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDY1Mzc2LCAKKyAgICAyNDEyLCAwLCA4MTg2LCA5ODA3LCA3NDI2OSwgOTI1NDcsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgMTAwMzAsIDUzMDYsIAorICAgIDEyMzY0LCAxMjgwNjQsIDAsIDExNzA0LCAwLCA5MjU4MywgMTAyMTEsIDAsIDAsIDAsIDAsIDExNzA2LCA5NzEwLCAwLCAwLCAKKyAgICAwLCA0MTMsIDY1NjIzLCA3MTE4LCAwLCA5MTMzLCA3NDI2MiwgMCwgMTA0MiwgMCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIAorICAgIDYxODUsIDY0Nzc2LCA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDk4Mzg5MCwgMTMwOCwgMCwgMjUzNCwgCisgICAgODEwLCAwLCAwLCAwLCAwLCAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCA3NDQ3MCwgNjY2MTgsIAorICAgIDY1NjgwLCAxMjA3NzksIDEwMDI3LCAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCAKKyAgICA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgCisgICAgODczMCwgOTgzMDY3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDAsIDcyNzUsIDc4MzA0LCA5MzUsIDAsIDY1ODQwLCAKKyAgICAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgCisgICAgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgMCwgMTk0OTk4LCAwLCAxMDY3MywgMTE5MjE3LCA3MjQ4LCAwLCAKKyAgICAxMjgzNDYsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCAwLCA5NjQsIDAsIDEyNzg3NiwgNzgyMjYsIDEyODc3NSwgCisgICAgMTI3NTEyLCAwLCAwLCAwLCAwLCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgCisgICAgNjk5MDksIDQzNTQ3LCAwLCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIDk4MzkwOSwgCisgICAgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDkyNzI0LCA2NDc4LCA5ODk4LCAKKyAgICA0MzY3MywgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDk4Mzc4NiwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgCisgICAgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAxMjY1NTMsIDY1MjMxLCAKICAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDAsIDAsIDU2ODUsIAogICAgIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAwLCA2ODE2MywgNTM0MCwgMCwgMTI3ODIwLCA0MzYzNSwgCi0gICAgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMCwgMCwgMTA5MzgsIDAsIAorICAgIDczOTI4LCAxMjc1MjksIDAsIDAsIDAsIDEyODUxMCwgNjU0ODIsIDAsIDkxNDIsIDAsIDEyNjQ3MCwgMCwgMTA5MzgsIDAsIAogICAgIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMCwgMTI4MTc2LCA1MjksIDg1ODAsIDAsIDAsIDEwNTg2LCAxMDc5MCwgCi0gICAgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCAwLCAxMTM3NiwgCisgICAgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCA5ODM5MjksIDExMzc2LCAKICAgICA3NDM3OSwgMTA3MjEsIDY3NjY0LCAzNDM4LCA0MjA5NywgMTI3MjY3LCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIAotICAgIDAsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIDQxODcxLCA0MTMzOCwgCi0gICAgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgMCwgNDA5NjUsIDEyNzkzNywgMCwgNTE2MSwgMTA1NzIsIAotICAgIDAsIDAsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTI3NTUyLCAwLCAwLCAxMTk0OCwgNjkyMjAsIDEyMzU5LCA0MzQyOSwgCi0gICAgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAwLCA5ODcwLCA2ODY0NSwgCi0gICAgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAwLCA0MzY3NywgNDE1ODMsIDAsIAotICAgIDY1Nzk5LCA5MjYyMywgMCwgMCwgMCwgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgMCwgODMyLCAxMjA2OTMsIAotICAgIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDAsIDAsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIAotICAgIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMCwgMCwgMTI4NjQ1LCA2MzQ4LCAyNDMsIDEzMjAwLCAwLCAKLSAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDAsIDQyODUsIDY2MTk1LCAKLSAgICAwLCA0MjMwLCAwLCAxMzMwNywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgNjg0NDIsIDEyMDUxMiwgMCwgMCwgCi0gICAgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjAyMiwgMCwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAwLCA2NjQ1MywgMTAxNiwgNDExMDcsIDAsIAotICAgIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgMCwgMjA3NCwgMCwgNzgyODMsIDAsIDEyNDUzLCAKLSAgICAxMjgxMjgsIDAsIDc0MjQxLCAwLCA2NzkxLCAxMjQ1NywgNzgyNjgsIDAsIDAsIDAsIDc4Mjc5LCAwLCAwLCA5MjM1OCwgCi0gICAgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgMCwgMCwgODc1MiwgMzE5NywgNDcyMCwgCi0gICAgMTAxNjUsIDAsIDExOTI0OSwgMCwgMTE1OTUsIDY0ODkzLCAwLCA0MzQzNSwgMCwgMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIAotICAgIDE5NDYsIDc0MSwgMCwgNTQ5NCwgNDYzOSwgMCwgMTk5MCwgNjY1ODksIDQ0OTgsIDc4NjY0LCAxMTkxODMsIDAsIDAsIAotICAgIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgMTI3MDU5LCAwLCAyOTUwLCAxMTk1NzksIAotICAgIDYyMTAsIDY1NzUzLCAzNzAsIDAsIDAsIDAsIDQ5NTMsIDAsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgMCwgNTA2MywgCi0gICAgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgCi0gICAgNjYwMTYsIDc4MjUzLCAwLCAwLCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgCi0gICAgMCwgNjU4ODMsIDAsIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCAwLCAwLCAxMjkxMiwgMTE5MDEyLCAzODUwLCAKLSAgICAxMjgxOTEsIDAsIDAsIDAsIDAsIDkwOCwgMCwgODYxMSwgMCwgMCwgMTI3NTU1LCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIAotICAgIDEyMDU0MCwgMTE5MTM1LCA0MTU4NiwgMTA1MjcsIDAsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDE5NDkzNywgMTI3NTM2LCAKLSAgICA2NTI0MSwgNTMzNiwgMCwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgMCwgMTI3MTYzLCA2ODE5MywgCi0gICAgMzQ3LCAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKKyAgICAxMjAxODMsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIDQxODcxLCAKKyAgICA0MTMzOCwgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDAsIAorICAgIDUxNjEsIDEwNTcyLCAwLCAwLCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyNzU1MiwgMCwgMTI2NjA1LCAxMTk0OCwgCisgICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAKKyAgICAwLCA5ODcwLCA2ODY0NSwgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAwLCAKKyAgICA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgMCwgMCwgOTgzOTI3LCA3ODE2OSwgNjYxOTksIDAsIDM2MDksIAorICAgIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgMCwgMCwgNDI3MzIsIAorICAgIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIAorICAgIDYzNDgsIDI0MywgMTMyMDAsIDk4MzgwNCwgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIAorICAgIDQzNjg3LCAwLCAwLCA0Mjg1LCA2NjE5NSwgMCwgNDIzMCwgMCwgNzM2NywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgCisgICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgCisgICAgNjU1ODksIDEyODI3NywgMjYwMywgMCwgMCwgMCwgNzAwNDcsIDAsIDYwMjIsIDAsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgCisgICAgMCwgNjY0NTMsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDAsIAorICAgIDIwNzQsIDAsIDc4MjgzLCAwLCAxMjQ1MywgMTI4MTI4LCA5ODM4MTcsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCAKKyAgICA3ODI2OCwgMCwgMCwgMCwgNzgyNzksIDAsIDAsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAKKyAgICAxMjQ0OSwgMTI4NTUyLCAwLCAwLCA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMCwgMTE5MjQ5LCAwLCAxMTU5NSwgNjQ4OTMsIAorICAgIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCA5ODMxNDcsIAorICAgIDE5OTAsIDY2NTg5LCA0NDk4LCA3ODY2NCwgMTE5MTgzLCAwLCAwLCA2OTczNCwgMjk2MCwgNzM3NzksIDAsIDg5NjksIAorICAgIDEyODExNywgNDM0MjQsIDEyNzA1OSwgMCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAwLCAwLCAwLCA0OTUzLCAKKyAgICA5ODM2NzMsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgOTgzMjQwLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgCisgICAgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIAorICAgIDcxMzE3LCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIAorICAgIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCA3MDA2OCwgMCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAwLCAwLCAKKyAgICAwLCAwLCA5MDgsIDAsIDg2MTEsIDAsIDAsIDEyNzU1NSwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCisgICAgNDE1ODYsIDEwNTI3LCAwLCA5MTc4NDgsIDM4NDgsIDc4NzM5LCAxOTQ5MzcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAorICAgIDk4MzI1MSwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjQ5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIAorICAgIDAsIDAsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA3ODc2OSwgMTIxNDMsIAogICAgIDY5NjU3LCA3ODUxMiwgMCwgNDM0NDEsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAKLSAgICAwLCAwLCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgNjYwOSwgCi0gICAgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCAwLCAwLCA3Mzg0NywgNzg3NjEsIDY1MTcyLCAKLSAgICA0MTcyOCwgNDE3MjEsIDAsIDAsIDAsIDQxMjAzLCAwLCAxMzExMCwgNDE3MjYsIDAsIDAsIDEwMDAsIDY5NjUxLCAwLCAKLSAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIDAsIDY4MjEzLCAwLCAKLSAgICAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgNzg3ODcsIDY2MzE0LCAKLSAgICA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCA2NDM5OCwgMCwgCi0gICAgMTE5OTcwLCAxMjMxMSwgMCwgNzg3OTYsIDc4Nzk4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDAsIDAsIAotICAgIDEyMjkwLCAxMjAxNjksIDAsIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDAsIDk2MjcsIDc4NTM2LCAKLSAgICA3ODU0MiwgNzg1MzUsIDAsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIAotICAgIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIAotICAgIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIAotICAgIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIAotICAgIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAxMjA0MSwgMTQxOCwgMTA4ODUsIAotICAgIDEyNjczLCAwLCAwLCA5NjYwLCAwLCAxMzAxMiwgNDU3MSwgMCwgMCwgMCwgMTIwNzgsIDI5NzAsIDAsIDEwOTMzLCAwLCAKLSAgICA3Nzg3MCwgMCwgMCwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgCi0gICAgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIDg0NjAsIDEyNzA1MywgODQ3NiwgMCwgMCwgMCwgMCwgNjU2NzMsIAotICAgIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIDAsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCAKLSAgICA3Mzg2NCwgMCwgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgCi0gICAgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAKLSAgICAxMjcyODQsIDAsIDczOTYzLCA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIAotICAgIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgNzM5NDIsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDAsIAotICAgIDAsIDAsIDAsIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDAsIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgCi0gICAgOTIyMjMsIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCAKLSAgICA3Mzk3MiwgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgMCwgNjY3LCAxMjMzMiwgCi0gICAgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCAwLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCAKLSAgICA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIAotICAgIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDAsIDAsIDQyMzQ4LCAwLCAKKyAgICAwLCA5ODM2ODYsIDczOTM4LCAwLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIDc4NTM0LCA5NTE4LCAKKyAgICA2NjA5LCAxMDQzNCwgMCwgMTEzMTksIDEwOTcsIDAsIDkxNzg1MCwgNDE3MzAsIDk4MzIxMiwgMCwgNzM4NDcsIDc4NzYxLCAKKyAgICA2NTE3MiwgNDE3MjgsIDQxNzIxLCAwLCAwLCAwLCA0MTIwMywgOTE3NjEyLCAxMzExMCwgNDE3MjYsIDk4Mzg0NiwgMCwgCisgICAgMTAwMCwgNjk2NTEsIDAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMCwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgCisgICAgMCwgNjgyMTMsIDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKKyAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIDAsIDAsIAorICAgIDY0Mzk4LCAwLCAxMTk5NzAsIDEyMzExLCA5ODM3MTgsIDc4Nzk2LCA3ODc5OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgCisgICAgNzg3OTMsIDY2NjcwLCAwLCAwLCAxMjI5MCwgMTIwMTY5LCAwLCAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAKKyAgICAwLCA5NjI3LCA3ODUzNiwgNzg1NDIsIDc4NTM1LCA5ODMyMTAsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgCisgICAgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIAorICAgIDQwMzEsIDQyNzk0LCAxMjAwMDMsIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAKKyAgICAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgCisgICAgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAKKyAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAwLCAwLCA5NjYwLCA5ODMyNzIsIDEzMDEyLCA0NTcxLCAwLCAwLCAxMjAxNjQsIAorICAgIDEyMDc4LCAyOTcwLCAwLCAxMDkzMywgMCwgNzc4NzAsIDAsIDEyNzAxNSwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgCisgICAgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIAorICAgIDg0NjAsIDEyNzA1MywgODQ3NiwgOTgzOTY2LCAwLCAwLCAwLCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAKKyAgICAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDAsIDczODY0LCA5ODMyMDEsIDQxNzM0LCAKKyAgICA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCA5MjU0NiwgCisgICAgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAwLCA3Mzk2MywgCisgICAgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgCisgICAgNzM5MzIsIDU0OTgsIDczOTQyLCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAwLCAwLCAwLCAwLCAKKyAgICA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCA5ODM2OTAsIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgOTIyMjMsIAorICAgIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCA3MDA2MywgMjk1MiwgCisgICAgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgOTQwNDMsIDY2NywgMTIzMzIsIDYzODg3LCA2MDg2LCAKKyAgICA0MTcyMiwgMCwgNTE3MiwgMCwgMCwgNDE1OSwgMCwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIAorICAgIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDAsIDQyNDIxLCAwLCA0MTcyMywgCisgICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCAxMjY2MzYsIDAsIDQyMzQ4LCA3Mzg5MiwgCiAgICAgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTA2LCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAwLCA2Mzg0NiwgMjk3MiwgMTI5MzIsIAogICAgIDcyNjIsIDAsIDYzODQ5LCA2Mzg0OCwgNjM4NDcsIDEyODA3MCwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIAogICAgIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAwLCAxMTg5ODMsIDExMDUsIDQxODAsIDAsIDEyMDk0LCAKICAgICA5NDk3LCAwLCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgMTE4OTMyLCAxNjc4LCAxMzI3NCwgCiAgICAgNTUyLCAxMjA2NTQsIDQ0MDEwLCAxMDc4NSwgMCwgMTE5MTcwLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCAKICAgICA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCAKLSAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgMCwgMCwgNDI3NzMsIDAsIAotICAgIDAsIDAsIDExOTIyMCwgMCwgMzY2MywgMCwgMTExMiwgMTE5MTIyLCA4Njg2LCAwLCA1MzM0LCA2NTA4MSwgNDMyNDksIAotICAgIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAwLCA2NTA5LCAwLCA1MzI3LCAwLCAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIAotICAgIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDAsIDczNzQ4LCA2Mzg2NiwgMCwgMTkxNSwgNDg0NiwgMCwgCi0gICAgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAKLSAgICAxMTg5ODcsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAwLCA3ODI0MCwgMTIyMjUsIAotICAgIDYzODM4LCA2MzgzNywgMCwgMCwgNjM4MzMsIDYwNDIsIDY2MzYwLCA4MDgzLCAwLCAwLCA2MzgyMSwgNjM4MjAsIDYzODE5LCAKLSAgICA2MzgxOCwgMCwgNTIyNywgOTA0NywgNjM4MjIsIDEyNzE2MiwgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgCi0gICAgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIDYzODEwLCA2MzgwOSwgNTU0MiwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgCi0gICAgMTU5NywgMTIwMTQzLCA3ODAsIDIwNiwgNzc5MjUsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgCi0gICAgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAxMjgxNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIAotICAgIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAKLSAgICA0MzQzMSwgMTMxNjksIDUyOTAsIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgCi0gICAgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAwLCA2Mzk3MCwgMTI4MzU4LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCAKLSAgICA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgMCwgNzQwOCwgMTE4MDksIDAsIDAsIDAsIDI5NjUsIDcyNTgsIDg4MDgsIDAsIDEwODksIAotICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgMTI0NjMsIAotICAgIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIDc0MzQzLCAwLCAwLCA2NjAsIAotICAgIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAKLSAgICAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgMTI0NjUsIDAsIDAsIDEyODc4MiwgCi0gICAgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCAKLSAgICA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDAsIDc3NzYsIDAsIDAsIDEyNzc3MywgMTIwNDQ0LCA2OTczMCwgCi0gICAgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAKLSAgICAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgCi0gICAgMjUzOSwgMCwgNDM5ODAsIDU0ODUsIDAsIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgMCwgMjUzLCAwLCAKLSAgICA2ODIwOCwgMCwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA5MjU0MiwgNjg2NjgsIDAsIDEyODgxNiwgMCwgMTA0NzQsIAotICAgIDQzNDI2LCAxMzI1NywgNDIzNTQsIDAsIDAsIDAsIDE5NTA2NSwgMCwgODQxMywgMCwgMCwgNTY5MywgNzI3MiwgMCwgCi0gICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzg0NjAsIDE5NTA2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MTMzLCAxMjc3NjcsIAotICAgIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDkyMTg3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgCi0gICAgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCAKLSAgICA2MzkwNCwgMCwgMCwgNDE3MjksIDQ0MjMsIDEzMDcsIDAsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAwLCA2MjE4LCAwLCAKLSAgICAxNDMwLCAwLCAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCAKLSAgICA0MTc0MywgNzM5MzcsIDY4MDEsIDAsIDQ1MTgsIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMCwgMjcxMCwgMCwgCi0gICAgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgNDE2OTAsIDEyNDc5LCAwLCAwLCAwLCAwLCAxMTk2NTksIDE2MjgsIDEyNzE0OSwgCi0gICAgMCwgMCwgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDEyMDY4MywgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIAotICAgIDEzMDA0LCAwLCA0NDU3LCAwLCAwLCAwLCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIDY4NDY0LCAKLSAgICAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIDc0MjUxLCAwLCAKLSAgICAxMjA2NDcsIDAsIDUwLCAxMDU1OCwgOTg3MSwgMCwgNDM2NTUsIDAsIDAsIDAsIDY2NDY4LCAwLCAxMzI1OSwgNDQ0OCwgMCwgCi0gICAgMCwgMCwgMCwgNjc4NTMsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMCwgOTE3NjA3LCAxMjc1NDQsIDEyNzA3OSwgMTk1MDUwLCAKLSAgICAxMjc4NTIsIDAsIDAsIDAsIDEyNTAxLCA2NDYwNCwgMCwgMTE1MjcsIDExODg3MCwgODgxMiwgMCwgMTE1MzgsIDg2NzMsIAotICAgIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMCwgMCwgMCwgNDYzNiwgCi0gICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDAsIDEyMDQ5NSwgMCwgMTI4Mjg0LCAxMjI3NywgMTk0NjI3LCAKLSAgICAxMTk5NSwgOTI1NTMsIDAsIDEyMTU4LCAwLCA4NzQxLCAxMDE5NywgMCwgOTI0MjYsIDAsIDY1MzEsIDAsIDEyNzg0NiwgCi0gICAgNDczLCA0MzQxNSwgMCwgMCwgMTg3MywgMTA4NywgMCwgMCwgMCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgMCwgMTk0NzE2LCAKLSAgICA3MjM3LCAxMjUwNCwgNzQyODIsIDAsIDAsIDAsIDk0ODksIDAsIDAsIDQzODQsIDc0MjIwLCAxOTUwNTUsIDIwNTgsIAotICAgIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgCi0gICAgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgMCwgNDE3MTIsIDc5ODMsIDAsIDEyMDc3OSwgMCwgCi0gICAgNjM0NywgMCwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgCi0gICAgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgNDk5OSwgMTk0NjQyLCAwLCAwLCA0NzExLCAxMjA3NjksIDAsIDI3MzksIDAsIAotICAgIDgwNDQsIDc0ODM0LCAxOTQ2NDMsIDQxNzg5LCAxMjgxNDIsIDEwODA5LCAwLCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCAKLSAgICA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDAsIDkyMTg2LCAxMzIyOSwgMCwgMTA1NzUsIAotICAgIDQzMzk5LCAwLCAwLCA0MTc5MSwgMTEwNCwgMCwgMCwgMTA2NTUsIDAsIDAsIDAsIDAsIDEwODIsIDE5NTA0OSwgODQyOCwgCi0gICAgNjU2OSwgMCwgMCwgMCwgMCwgNjc4MywgMCwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgMCwgMTI4ODgyLCAKLSAgICA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAwLCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgCi0gICAgNjMyMiwgMTA0ODMsIDAsIDQxNTQ1LCAwLCA5MjQ0OSwgMCwgMCwgMCwgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCAKLSAgICA4NTAzLCA1MTIyLCA0MTUyNywgMCwgNjYzMjAsIDAsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIAotICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCAxOTQ2NjMsIDE2ODYsIDAsIDc4NDA2LCAxMTQ2NywgMzY2NCwgNjU5MjEsIAotICAgIDY0Mjk5LCAxOTQ2NjQsIDAsIDAsIDQzMjQsIDEyNiwgNDIyNDYsIDExOTE1MiwgMCwgNzQzNzgsIDY1OTI2LCA3NzQ0LCAKLSAgICAxOTQ2MzYsIDc0Mjc3LCA3NDMwMiwgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIAotICAgIDAsIDQ3NjIsIDExMDMsIDAsIDAsIDQ3NjUsIDAsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAKLSAgICAxMTAyLCAwLCA0MjIzNiwgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIAotICAgIDExMTEsIDAsIDkyMTYxLCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgCi0gICAgMTMwMTAsIDAsIDgzMDQsIDkxNzU2MSwgMCwgMTE5NTc1LCAwLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCAKLSAgICA0Mzg1LCAwLCAxMzAxMSwgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgNDE3OTMsIDY1NzYzLCAKLSAgICA3NDIyMSwgMTIwMTQxLCA0MTc5MiwgNDI3NzAsIDAsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAwLCAxMjcxNzcsIAotICAgIDQzODE2LCAwLCAwLCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIAotICAgIDQwMDUsIDAsIDEwMjM3LCAxMDk5MSwgMCwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIAotICAgIDkxNzU3NywgNDI2MDUsIDEyMDc2NSwgOTE3NTcwLCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgNzQ4NjcsIDE5NDY1NCwgCi0gICAgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1OTAsIDkxNzU5MywgMzM0MCwgOTE3NTg3LCA5MTc1ODYsIAotICAgIDkxNzU4OSwgOTE3NTg4LCAxMjA1NDEsIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIAotICAgIDg2NCwgMCwgMTE4OTI2LCA4OTcyLCAwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCAKLSAgICAwLCAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCAxMjAxNjQsIAotICAgIDAsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgCi0gICAgNjM3NzksIDE1ODMsIDAsIDEzMjYwLCA0NTUwLCAwLCA2NDIwNSwgMCwgMCwgNDE1MjIsIDAsIDkyMTY4LCAwLCA5MTc4NTgsIAotICAgIDExMzU0LCAwLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCAKLSAgICAwLCA0NDc5LCAxMTc4LCA2NTU4NiwgMTIwNjYzLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAwLCAwLCAwLCAwLCAxOTQ2NTgsIAotICAgIDAsIDY4MDksIDYzNzg2LCA2MDMxLCAwLCA2Mzc5MSwgNjM3OTAsIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIAotICAgIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDAsIDAsIDEwNzQ3LCAxMjUsIDAsIDY0ODkwLCAwLCAwLCAKLSAgICAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCAKLSAgICA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIAotICAgIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCAKLSAgICA2Mzc5OCwgNjI2MCwgMCwgMCwgMTE5MjI1LCA2Mzc5MywgMTE5ODgsIDM4OTgsIDEyODI0MSwgMTAyMDEsIDEyMjM4LCAKLSAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKLSAgICAwLCA0MjIwMywgNzk1MCwgMTA4MDQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTIyMjQsIDY5NzMsIDI3OTMsIDEyNDc1LCAwLCAKLSAgICAwLCA2Mzc2OSwgOTUzMCwgMCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgCi0gICAgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKLSAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgNzQxMzMsIAotICAgIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIAotICAgIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAKLSAgICAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDAsIDAsIDkyNDU1LCAKLSAgICA3Mzg2LCAwLCA2NDQ0NCwgMCwgMTE5ODYzLCA0MzYwMywgMCwgNjUzOTcsIDI4OCwgMCwgMCwgMCwgMTAwMjUsIDkxNzkxNiwgCi0gICAgMjkxOCwgMCwgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCAwLCAxMjc4MjksIDY1MzkzLCAKLSAgICAwLCA3NDEzOCwgMCwgMCwgMCwgNzQxMzksIDkyNzEyLCA2NTM5NCwgMTE1NDgsIDUyNzAsIDAsIDY1Mzk2LCAwLCA2NTgxMywgCi0gICAgMTMyNTYsIDEyODIsIDEyMDc3MSwgMCwgMCwgMTA4ODgsIDAsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NDI1OSwgMzMwNCwgNDI3NTMsIDAsIDAsIDAsIDE2MjcsIDAsIDAsIDAsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIAotICAgIDAsIDQzMDk0LCAwLCA0MzY1MCwgMCwgMCwgOTAzNSwgMCwgMCwgMTI4MDA1LCAwLCA5MjIwNywgNjgxMjUsIDAsIDE2NCwgMCwgCi0gICAgMCwgMCwgNjk1OCwgMCwgNDMxMTYsIDAsIDAsIDEzMjQ1LCAwLCAwLCAxMjczNzYsIDAsIDczODkzLCAxMjc3NTYsIDEyNjY2LCAKLSAgICAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDAsIDc0NDksIAotICAgIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMCwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDAsIDAsIDY1MTk1LCAxMDE2NCwgCi0gICAgOTIyNTIsIDc0NDI4LCAwLCA3ODE0NiwgOTI2MTEsIDAsIDAsIDAsIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDEyODE2MSwgCi0gICAgMTEwNTcsIDAsIDEzMjc2LCAwLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAwLCAwLCAwLCAxMjIyOSwgNDE1MjMsIDAsIAotICAgIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDAsIDAsIDEwNDc2LCAzODU4LCAwLCAzOTMyLCA2NDk1OCwgMCwgMCwgNzM5ODksIAotICAgIDY4MTkyLCAwLCAwLCAzNjksIDAsIDQxNzg0LCAwLCA2NDE2MywgMCwgMCwgMCwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAwLCAKLSAgICA2NTQ3OSwgMCwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDAsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIAotICAgIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDAsIDc0NiwgMTIwNzg0LCAwLCAKLSAgICAwLCAxMjAxOCwgNjUyOTQsIDAsIDAsIDAsIDAsIDQ0MjIsIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDAsIDc0NDMwLCAKLSAgICAwLCAxMTcwMCwgNDM3NCwgMCwgMTI4MTc5LCAxMzY0LCAwLCA4MDM4LCAwLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgMCwgCi0gICAgNjczNSwgNzM5NzksIDEzMTc0LCA3Mzk2OCwgMTMyMjUsIDAsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgMCwgCi0gICAgNDI4NTUsIDExODg1NiwgNDI4NjYsIDAsIDAsIDAsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgCi0gICAgMTE5MzU0LCAwLCAwLCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAKLSAgICAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgMCwgMTI2OTk0LCA0MTM3MywgCi0gICAgNzgwMzksIDEyMzAzLCAwLCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIAotICAgIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCAxMjgwMTgsIDEwOTYsIDAsIDAsIDQyNjg4LCAxMjQ0MSwgCi0gICAgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgMCwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMCwgCi0gICAgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDAsIDAsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCAwLCAKLSAgICAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCAwLCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIAotICAgIDQxNTMzLCA2NjMzNywgMCwgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDczODQ5LCAwLCA0MzYzOCwgNzg1MzcsIAotICAgIDEyODI4NywgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgCi0gICAgMTI4ODI4LCAwLCAyOTI1LCA3MzgwOSwgMTMwNTYsIDEyNzU1OSwgMTMyMTIsIDQzMjM4LCAwLCAxMzE5MCwgMTMxODcsIAotICAgIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAwLCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCAwLCA2NzcwLCA0MzMzMSwgCi0gICAgMCwgNjU2MjAsIDAsIDQzNTQ0LCAwLCAwLCA0MTQ0NCwgNjU2MjEsIDEyMDMyNSwgOTE5NywgNTI0NiwgMTE5MTA2LCAKLSAgICAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIAotICAgIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgMCwgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDEyNzI0OSwgMTMyMzUsIAotICAgIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIDc5NjksIDEyNzI2NiwgNzIxOSwgMTI3MjUwLCAwLCAKLSAgICAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIAotICAgIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgCi0gICAgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMjgwMjUsIDAsIDQyODQxLCAxMzI2NywgMCwgCi0gICAgMCwgNDE3NzUsIDAsIDcxMzAsIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgCi0gICAgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIAotICAgIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAxMjg1MjQsIDExOTY1LCAwLCA2ODM1OCwgMCwgCi0gICAgNjk3ODksIDAsIDkyMjYwLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgCi0gICAgMTE4ODU4LCA5NzU2LCA2OTg1LCAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgMTE4OTk3LCA4MDEyLCA1Njc0LCAKLSAgICAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIAotICAgIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgCi0gICAgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgNzQwOTAsIDU4MjYsIAotICAgIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCi0gICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKLSAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCAKLSAgICA5NTI5LCAwLCA2NjY1NywgNjk4MCwgMCwgMTIwMDM1LCA3ODQ4NCwgMCwgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgCi0gICAgMTIwMDM5LCA0MjY4MywgMCwgMCwgNzExNCwgMCwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIAotICAgIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCAwLCAxOTk2MywgNTY5OCwgMCwgMCwgMCwgMCwgNTY0NCwgMTAyOTIsIDY1NTQ2LCAKLSAgICA2OTcyNywgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDAsIDQxMDEzLCAKLSAgICAxMDU2OCwgMCwgMCwgMjg2OSwgMCwgNDEwMTUsIDE5NDY5MiwgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAwLCAKKyAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDk4MzU3NywgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCAKKyAgICA0Mjc3MywgMCwgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCAKKyAgICA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgCisgICAgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIDE5MTUsIAorICAgIDQ4NDYsIDAsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAxMjA3MCwgCisgICAgODc2MCwgMTExNywgMTE4OTg3LCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgMCwgNzgyNDAsIAorICAgIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg0NCwgOTgzNzk1LCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIAorICAgIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM4OTUsIDUyMjcsIDkwNDcsIDYzODIyLCAxMjcxNjIsIDYwOTEsIDAsIAorICAgIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCAKKyAgICA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAyMDYsIDc3OTI1LCA0OTM2LCA2NTE0NywgODE2OCwgCisgICAgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgMTI4MTUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgCisgICAgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAKKyAgICAwLCA0NjE4LCA0MjIwOSwgNDM0MzEsIDEzMTY5LCA1MjkwLCAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIAorICAgIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgMCwgNjM5NzAsIDEyODM1OCwgMTA5MiwgNDc1NCwgNzI3MywgCisgICAgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIDAsIDc0MDgsIDExODA5LCA5MTc2MTgsIDAsIDAsIDI5NjUsIDcyNTgsIAorICAgIDg4MDgsIDAsIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCAKKyAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAorICAgIDc0MzQzLCAwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIAorICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgCisgICAgMTI0NjUsIDAsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgCisgICAgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAKKyAgICAwLCAxMjc3NzMsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCAKKyAgICA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIAorICAgIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDAsIDQzOTgwLCA1NDg1LCAwLCA0MjY5NywgOTA2MSwgNTUzNCwgCisgICAgMTA2NzIsIDQ1MDIsIDAsIDI1MywgMCwgNjgyMDgsIDAsIDkyMDMsIDc0MjMxLCAwLCAxMTUzMCwgOTI1NDIsIDY4NjY4LCAwLCAKKyAgICAxMTg5MDcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDk4MzY4OSwgNzAwNDQsIDE5NTA2NSwgMCwgCisgICAgODQxMywgOTgzODA3LCAwLCA1NjkzLCA3MjcyLCAwLCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAKKyAgICAwLCAxMjY2MzksIDAsIDAsIDk0MDc4LCAxMjgxMzMsIDEyNzc2NywgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgCisgICAgOTIxODcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgCisgICAgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIDYzOTA0LCAwLCAwLCA0MTcyOSwgNDQyMywgMTMwNywgCisgICAgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIAorICAgIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjI0LCA0NTE4LCAKKyAgICAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDEyMDE1OCwgMjcxMCwgMCwgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgCisgICAgNDE2OTAsIDEyNDc5LCA5ODM2MjYsIDAsIDAsIDk4MzgwOSwgNzAwNDYsIDE2MjgsIDEyNzE0OSwgOTgzNDc5LCA5ODM3MjIsIAorICAgIDY1MjYyLCA2MzMzLCAxMDc4MywgNDIzMTUsIDAsIDYzODU1LCA5NDA1NiwgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIDEzMDA0LCAKKyAgICAwLCA0NDU3LCAwLCAwLCAwLCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIDY4NDY0LCAxMjYzMywgCisgICAgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIDc0MjUxLCAwLCAxMjA2NDcsIAorICAgIDAsIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCAwLCAwLCAwLCA2NjQ2OCwgMCwgMTMyNTksIDQ0NDgsIDAsIAorICAgIDk4MzgzNiwgMCwgNzAwNDMsIDY3ODUzLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDAsIDkxNzYwNywgMTI3NTQ0LCAKKyAgICAxMjcwNzksIDE5NTA1MCwgMTI3ODUyLCAwLCAwLCAwLCAxMjUwMSwgNjQ2MDQsIDAsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDAsIAorICAgIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAyMTA1LCA4MDg3LCA3ODE2MywgNjk2MzIsIDk4OTQsIDAsIAorICAgIDAsIDAsIDQ2MzYsIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCAwLCAxMjA0OTUsIDAsIDEyODI4NCwgCisgICAgMTIyNzcsIDE5NDYyNywgMTE5OTUsIDkyNTUzLCAwLCAxMjE1OCwgMCwgODc0MSwgMTAxOTcsIDAsIDkyNDI2LCAwLCA2NTMxLCAKKyAgICAwLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDAsIDk4MzY0MSwgMTg3MywgMTA4NywgMCwgMCwgMCwgNzg1MjcsIDY2NDM5LCAKKyAgICA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgOTgzNTcxLCAwLCA5NDg5LCAwLCAwLCAKKyAgICA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIDExNTQsIDM4NTcsIAorICAgIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgCisgICAgMTE5MDA3LCA0MTcxMiwgNzk4MywgMCwgOTM5OTcsIDAsIDYzNDcsIDEyMDE2NSwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIAorICAgIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgNDk5OSwgCisgICAgMTk0NjQyLCAwLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgODA0NCwgNzQ4MzQsIDE5NDY0MywgNDE3ODksIAorICAgIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgCisgICAgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgNDMzOTksIDAsIDAsIDQxNzkxLCAxMTA0LCAwLCAwLCAKKyAgICAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCA2NTY5LCAwLCAwLCAwLCA2OTg0OSwgNjc4MywgMCwgCisgICAgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgOTgzNzk4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCAKKyAgICA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgOTgzNjAzLCAKKyAgICA0MTU0NSwgMCwgOTI0NDksIDAsIDAsIDAsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDAsIDY2MzIwLCA5ODM4MDIsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIDczODU3LCAxMDAwMywgCisgICAgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3ODQwNiwgMTE0NjcsIDM2NjQsIDY1OTIxLCA2NDI5OSwgMTk0NjY0LCAwLCAKKyAgICAwLCA0MzI0LCAxMjYsIDQyMjQ2LCAxMTkxNTIsIDAsIDc0Mzc4LCA2NTkyNiwgNzc0NCwgMTk0NjM2LCA3NDI3NywgNzQzMDIsIAorICAgIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAxNjMzLCAwLCAwLCA0NzYyLCAxMTAzLCAwLCAwLCAKKyAgICA0NzY1LCA5ODM0ODQsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgCisgICAgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDkyMTYxLCAKKyAgICA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDAsIDgzMDQsIAorICAgIDkxNzU2MSwgMCwgMTE5NTc1LCAyMjkzLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCA0Mzg1LCAwLCAxMzAxMSwgCisgICAgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgMTIwMTQxLCAKKyAgICA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMCwgOTQwNTMsIDQzODE2LCAwLCAwLCAKKyAgICAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIDAsIDEwMjM3LCAKKyAgICAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgOTE3NTc3LCA0MjYwNSwgCisgICAgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCA3NDg2NywgMTk0NjU0LCAxMjcwNzgsIDMzMzksIAorICAgIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCA5MTc1ODcsIDkxNzU4NiwgOTE3NTg5LCAKKyAgICA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCAwLCAKKyAgICAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKKyAgICAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgMCwgCisgICAgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCAKKyAgICA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCA0MTUyMiwgOTgzOTA2LCA5MjE2OCwgCisgICAgOTgzNzYzLCA5MTc4NTgsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIAorICAgIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIAorICAgIDQ2MDEsIDAsIDAsIDk4Mzc1NiwgMCwgMCwgMTk0NjU4LCAwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgMCwgNjM3OTEsIDYzNzkwLCAKKyAgICAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAKKyAgICAwLCAwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgOTgzMTMxLCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIAorICAgIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgCisgICAgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCisgICAgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMCwgOTQwNzQsIDYzNzkzLCAKKyAgICAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgCisgICAgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMyMSwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgCisgICAgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgMCwgMCwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIAorICAgIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAKKyAgICAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCAKKyAgICA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCAKKyAgICA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgCisgICAgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAKKyAgICAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDk0MDM5LCAwLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDAsIAorICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCAwLCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDAsIDY1MzAwLCAKKyAgICAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgMCwgMTI3ODI5LCA2NTM5MywgMCwgNzQxMzgsIDAsIDAsIAorICAgIDAsIDc0MTM5LCA5MjcxMiwgNjUzOTQsIDExNTQ4LCA1MjcwLCAwLCA2NTM5NiwgMCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAKKyAgICAxMjA3NzEsIDAsIDAsIDEwODg4LCA5ODM2MDQsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCA5ODM5NjUsIDAsIDAsIDc0MjU5LCAKKyAgICAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgCisgICAgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDAsIDkwMzUsIDAsIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAwLCAKKyAgICAxNjQsIDAsIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDAsIDcwMDE5LCAxMzI0NSwgMCwgMCwgMTI3Mzc2LCAwLCAKKyAgICA3MDAzMSwgMTI3NzU2LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIAorICAgIDY1NTA5LCAwLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIDAsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCAwLCAwLCAKKyAgICA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgMCwgNzgxNDYsIDkyNjExLCAwLCAwLCAwLCAxMDA0NSwgMTI4ODIsIAorICAgIDEzMjc1LCAxMjgxNjEsIDExMDU3LCAwLCAxMzI3NiwgMCwgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMCwgMCwgMCwgCisgICAgMTIyMjksIDQxNTIzLCAwLCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAwLCAwLCAxMDQ3NiwgMzg1OCwgMCwgMzkzMiwgCisgICAgNjQ5NTgsIDAsIDAsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCAKKyAgICA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDAsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCAKKyAgICAwLCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAKKyAgICAwLCA0Mzg4LCAwLCA3NDYsIDEyMDc4NCwgMCwgMCwgMTIwMTgsIDY1Mjk0LCAwLCAwLCAwLCAwLCA0NDIyLCA0NzA4LCAKKyAgICAzNzk5LCA3NDI5MiwgMTE5MzU3LCAwLCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDAsIDEyODE3OSwgMTM2NCwgMCwgODAzOCwgCisgICAgMCwgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDAsIDY3MzUsIDczOTc5LCAxMzE3NCwgNzM5NjgsIDEzMjI1LCAwLCA2OTgwOCwgCisgICAgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDAsIDQyODU1LCAxMTg4NTYsIDQyODY2LCAwLCAwLCAwLCA2NjQzOCwgNDE3ODUsIAorICAgIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgMCwgOTgzNTY4LCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgCisgICAgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCAKKyAgICA0MTc4NywgOTgzMjM3LCAxMjY5OTQsIDQxMzczLCA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCAKKyAgICA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgCisgICAgMCwgMCwgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgCisgICAgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMCwgNjQ4ODQsIDExOTg3MiwgMTE5MzQ1LCA4NTk3LCAwLCAwLCA5ODY0LCAKKyAgICAwLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIAorICAgIDExOTg3OSwgNjY1OTAsIDEyODEyMywgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgCisgICAgNzM4NDksIDAsIDQzNjM4LCA3ODUzNywgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIAorICAgIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgCisgICAgNDMyMzgsIDAsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIAorICAgIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcxOSwgNDM1NDQsIDEyNjQ2NiwgMCwgCisgICAgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgCisgICAgMTI4NTM3LCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgMTI3MjQ5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIAorICAgIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCAxMjcyNTAsIDEyODI1MSwgMTIwNTA5LCAwLCA2NjIyNCwgNzM0LCAKKyAgICAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgCisgICAgMTIwMzEwLCA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIAorICAgIDc0ODMyLCAxMjAzMTUsIDEyMDMxNCwgMTE1MDYsIDAsIDQyODQxLCAxMzI2NywgMCwgMCwgNDE3NzUsIDAsIDcxMzAsIAorICAgIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgCisgICAgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIDEyOTY3LCA2NjA0MSwgNTYxMiwgCisgICAgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAwLCA2ODM1OCwgMCwgNjk3ODksIDAsIDkyMjYwLCAKKyAgICA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgMTE4ODU4LCA5NzU2LCA2OTg1LCAKKyAgICAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIAorICAgIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCAKKyAgICA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCAKKyAgICA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIAorICAgIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCAKKyAgICA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgCisgICAgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCA5NTI5LCAwLCA2NjY1NywgNjk4MCwgCisgICAgNzg0ODMsIDEyMDAzNSwgNzg0ODQsIDk4MzQ4MywgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgMCwgCisgICAgOTgzMDU1LCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgCisgICAgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKKyAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAKKyAgICAxMDU2OCwgMCwgOTgzNjE4LCAyODY5LCAwLCA0MTAxNSwgMTk0NjkyLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIDAsIAogICAgIDQyNjA4LCA3ODQ2OSwgOTg4NCwgNDc1OSwgMCwgMCwgMTAyNjYsIDQxMzU5LCAxMTcwLCA0MzM2NSwgNjk4MTAsIDczOTA4LCAKICAgICAxNjA5LCA5MDIsIDAsIDYzOTM2LCAxMjg4NzUsIDExNjYxLCA4MTIyLCA1ODE4LCAwLCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgCi0gICAgMjU1NCwgNTE1OCwgNTcxNCwgMTI3MDE1LCAwLCAwLCA4MDcsIDQzMDc5LCAwLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgCi0gICAgMCwgNDIxNTUsIDAsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCAwLCAwLCA4Njc2LCAwLCAwLCAxMTA2NiwgNDUxLCA2Mzk0MSwgCi0gICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMCwgMCwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgMTI4ODUzLCAKLSAgICAxMjAwMTYsIDc0MjgzLCAxMTAwNSwgMCwgNjY2NTYsIDY2MDQ0LCAwLCAxOTQ2OTgsIDAsIDAsIDQzMzkzLCAxMDA5NCwgMCwgCi0gICAgMTE1MjksIDEwODU3LCAxMjA2NDMsIDY2NDM2LCA2NTQ2LCA5MywgODEwMiwgMCwgNjg0MDUsIDAsIDAsIDgxNzEsIDAsIAotICAgIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIDM4MywgNzE1NCwgNDE2NTYsIDkyNjM0LCAwLCAwLCA1MTg3LCAwLCAxMjcyNzcsIAotICAgIDExMjg2LCA2ODYyMCwgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgMCwgODI5MiwgMTk1MDc0LCAKLSAgICA0OTgwLCA4ODYwLCA3Mzk0NywgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCAwLCAwLCAxMDYzMSwgNjYwMzEsIAotICAgIDc5NzIsIDAsIDc4Nzg1LCAwLCA3OTAwLCAwLCAxMTMwOSwgNzgzMTksIDQxOTgsIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgCi0gICAgOTI1NTIsIDAsIDEyOTMxLCAwLCA0MjY4NCwgNzQyODUsIDIwODgsIDAsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIAotICAgIDc0NzcxLCAwLCAwLCAxMjgzNiwgMCwgMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMCwgMCwgNzQ2NCwgMCwgCi0gICAgNjU4NjUsIDAsIDE5NDY1MCwgMTI3MTQ0LCAwLCA5MzQyLCAxMjA0NjQsIDAsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIAotICAgIDQxMDA3LCA3NDM3NSwgMCwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgMTE5MTM2LCAwLCAwLCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAKLSAgICAxMjcxNTMsIDY4NjUzLCA0MzU1OCwgNTUyMiwgMCwgNjEsIDAsIDc0MTA1LCAzNjMzLCAwLCA2NTE2MiwgNDEyMzQsIAotICAgIDEyMDg5LCA3ODI4MSwgOTc3MSwgMCwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIAotICAgIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgCi0gICAgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDAsIAotICAgIDg5MzAsIDY2Njc4LCA3NDI0OSwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgCi0gICAgMCwgNzc5MDQsIDkyNjQwLCA3NzkwNSwgOTAzNCwgNjAzOSwgMCwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIAotICAgIDY2NDY5LCAwLCAwLCAwLCA0MjgxNSwgMCwgNDE5NjYsIDAsIDAsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgCi0gICAgMCwgMCwgMTIwMzM5LCA2NTE1OSwgNjQzOTAsIDAsIDAsIDU1MjAsIDExNjYyLCAwLCA2NTMzMCwgNDI4MTIsIDAsIDAsIAotICAgIDEyMzI2LCAwLCAwLCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3NTg0LCA0MzcwMiwgCi0gICAgMCwgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDEyMDA3OSwgODY0NCwgMCwgMCwgMCwgNzQyOTYsIDQxOTA5LCAwLCAKLSAgICAxMjAzMzIsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgMCwgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCAKLSAgICA1NzQ4LCAwLCAxMDc3MywgMCwgMCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCAxMjcxODUsIAotICAgIDYzOTMxLCAwLCA2NTkwMiwgMjg4MiwgMCwgMCwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDAsIDAsIDAsIDczODYwLCAKLSAgICAwLCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgCi0gICAgMCwgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAKLSAgICAxOTQ5MzUsIDAsIDAsIDAsIDE5NDcyMCwgNjUwNTYsIDM2MjAsIDAsIDY4Mzc4LCA0NTU2LCAwLCAwLCAxOTQ5MzMsIAotICAgIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIDAsIDk4MzksIAotICAgIDAsIDEyODkxLCAwLCAwLCA2Mzk5OSwgMjAxNiwgNDE5MTcsIDk3ODgsIDYzOTI4LCAwLCAxODYyLCA2NTgwMCwgOTE1NSwgCi0gICAgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgCi0gICAgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCA3NDI3NiwgMTIwMDgwLCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDAsIAotICAgIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMCwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIAotICAgIDE5NDkyOSwgNjQ1MDksIDc4MTUyLCAwLCAwLCAxMTA1MSwgMCwgMCwgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAKLSAgICAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDAsIDQwNDAsIDEyMDU3MCwgNjE2NywgCi0gICAgMCwgNjM5MjIsIDY1OTQsIDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCAKLSAgICA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCAwLCA2ODAzLCAwLCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCAKLSAgICA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCAKLSAgICA0Mjc0MiwgOTUxNywgMTE1MTgsIDAsIDc4NzkwLCAwLCAxOTQ3NzcsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCAKLSAgICA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIAotICAgIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIAotICAgIDAsIDAsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDAsIDYzOTYxLCAKLSAgICA0NDcyLCAwLCAwLCA3ODE1OSwgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIAotICAgIDEwMzMxLCA2MzgzMCwgMTE5NjI1LCAxOTQ5NDUsIDQyMTAzLCA4NjI4LCA5ODEzLCAwLCA0MjQ1MywgMTYwNCwgOTU2NSwgCi0gICAgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAwLCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgCi0gICAgMCwgMCwgNjM5ODAsIDExODAxLCAzNjIyLCAwLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAotICAgIDE5NjYsIDQzNjI4LCAwLCAwLCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAotICAgIDQwMiwgMCwgMTMxNDcsIDAsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDAsIAotICAgIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgMCwgMTk0NjcwLCAwLCA5MjM1MSwgMCwgNzQ0MjUsIDExMjk5LCAxNTYxLCAwLCAKLSAgICA5MjM1OSwgNjQ5NDIsIDAsIDE5NDczMywgMCwgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIDY5Nzg0LCA3NDA2MCwgCi0gICAgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDE5NDY2OSwgNzQwMiwgCi0gICAgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2ODQyMSwgMCwgMCwgNTQwNSwgMTI3ODc1LCAKLSAgICA2NDg2NiwgMCwgMTE5NTgzLCAxMjgzNDUsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgNjQ2OTAsIDMyNTQsIDAsIDAsIAotICAgIDAsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAwLCA2NTA3NywgMCwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgCi0gICAgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAwLCA0MjY5MSwgOTE3ODg2LCAxMjcxOTgsIAotICAgIDc0NzY3LCAwLCAxMjcwNzUsIDEzNzksIDI0NiwgMCwgMCwgMzc4OCwgMCwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgCi0gICAgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCAKLSAgICA5MjIxNywgMTMxNjMsIDAsIDEyMDgzMSwgNzQ1OTcsIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIAotICAgIDc0MjQ0LCAwLCAxMTQ0MywgMCwgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCAKLSAgICA3NDUxMCwgMCwgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgMCwgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCAxMjgwMDYsIAotICAgIDAsIDk4MjgsIDAsIDAsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAotICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCAxMTg5NDYsIDAsIDAsIDc0MDQxLCAwLCAxMjA2MzMsIDQzNTM5LCA1NDExLCAKLSAgICA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgMCwgNDIzOTMsIDEzMDg2LCAxMzEwLCAxOTQ2ODcsIDkzMzcsIDEyMDUyLCAxMDY0MywgCi0gICAgNTUyNzEsIDAsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgCisgICAgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgMCwgMCwgODA3LCA0MzA3OSwgMCwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDAsIAorICAgIDQyMTU1LCAwLCA0MTM1NiwgNzQxMTAsIDExODgwMSwgMTI2NjE0LCAwLCA4Njc2LCA5ODMyODMsIDAsIDU1ODIsIDQ1MSwgCisgICAgNjM5NDEsIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDAsIDAsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAorICAgIDEyODg1MywgMTIwMDE2LCA3NDI4MywgMTEwMDUsIDAsIDY2NjU2LCA2NjA0NCwgMCwgMTk0Njk4LCAwLCAwLCA0MzM5MywgCisgICAgMTAwOTQsIDAsIDExNTI5LCAxMDg1NywgMTIwNjQzLCA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDAsIDY4NDA1LCAwLCAwLCAKKyAgICA4MTcxLCAwLCAxMTkwOTcsIDEyNzA2NCwgOTE3NTQzLCAzODMsIDcxNTQsIDQxNjU2LCA5MjYzNCwgOTQwNDAsIDAsIDUxODcsIAorICAgIDcxMjk2LCAxMjcyNzcsIDExMjg2LCA2ODYyMCwgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgCisgICAgOTgzODE4LCA4MjkyLCAxOTUwNzQsIDQ5ODAsIDg4NjAsIDczOTQ3LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAKKyAgICAxOTQ3MDUsIDAsIDAsIDEwNjMxLCA2NjAzMSwgNzk3MiwgMCwgNzg3ODUsIDAsIDc5MDAsIDAsIDExMzA5LCAzODA2LCAKKyAgICA0MTk4LCA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKKyAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDAsIDAsIDEyODM2LCAwLCAwLCA3NDM0MiwgODU5MywgCisgICAgMCwgMCwgNjg0NDUsIDEzMjU1LCAwLCAwLCA3NDY0LCAwLCA2NTg2NSwgMCwgMTk0NjUwLCAxMjcxNDQsIDAsIDkzNDIsIAorICAgIDEyMDQ2NCwgMCwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAKKyAgICAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDEyNzE1MywgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMCwgCisgICAgNzQxMDUsIDM2MzMsIDk4Mzg5MSwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDk4Mzg5NiwgMTMyNTEsIAorICAgIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCAKKyAgICA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgCisgICAgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDk4MzY1MCwgODkzMCwgNjY2NzgsIDc0MjQ5LCAxMTkzLCAKKyAgICAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAwLCAwLCA3NzQzLCAwLCAwLCA3NzkwNCwgOTI2NDAsIDc3OTA1LCAKKyAgICA5MDM0LCA2MDM5LCAwLCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIDAsIDAsIDAsIDQyODE1LCAwLCAKKyAgICA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIDAsIDAsIDEyMDMzOSwgNjUxNTksIAorICAgIDY0MzkwLCAwLCAwLCA1NTIwLCAxMTY2MiwgMCwgNjUzMzAsIDQyODEyLCAwLCAwLCAxMjMyNiwgOTgzODQ3LCAwLCA0MjgwOCwgCisgICAgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODUyLCAwLCAwLCAwLCAwLCAwLCA5MTc1ODQsIDQzNzAyLCA5ODM1NzYsIDU4NTcsIAorICAgIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAxMjAwNzksIDg2NDQsIDAsIDAsIDAsIDc0Mjk2LCA0MTkwOSwgMCwgMTIwMzMyLCAKKyAgICAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDAsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgMCwgCisgICAgMTA3NzMsIDAsIDAsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgMTI3MTg1LCA2MzkzMSwgMCwgCisgICAgNjU5MDIsIDI4ODIsIDAsIDAsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NTEsIDAsIDczODYwLCAwLCAwLCAKKyAgICA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgMCwgCisgICAgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAKKyAgICAxOTQ5MzUsIDAsIDAsIDk4MzA2NCwgMTk0NzIwLCA2NTA1NiwgMzYyMCwgNDExODAsIDY4Mzc4LCA0NTU2LCAwLCAwLCAKKyAgICAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIAorICAgIDkzOTU4LCA5ODM5LCAwLCAxMjg5MSwgOTgzNzQ2LCA5ODM2MjcsIDYzOTk5LCAyMDE2LCA0MTkxNywgOTc4OCwgNjM5MjgsIAorICAgIDAsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgCisgICAgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIDc0Mjc2LCAxMjAwODAsIDY3ODQsIAorICAgIDc4Nzg4LCA2ODE4MSwgMCwgMCwgMCwgMTI3NTM0LCAxMjE0NywgOTAyNCwgNjYzNzgsIDY2NDcyLCA5ODM5MjAsIDY0Mjg5LCAKKyAgICA2NTI4OSwgNzgxNTEsIDY2NjU4LCAxOTQ5MjksIDY0NTA5LCA3ODE1MiwgMCwgMTI2NTA1LCAxMTA1MSwgOTgzMjg4LCAwLCAKKyAgICAxMTM1NSwgNjU4ODUsIDAsIDEyODMxMCwgNDEyMTQsIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCAKKyAgICA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDAsIDYzOTIyLCA2NTk0LCA5ODM3MzEsIDAsIDAsIAorICAgIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCAKKyAgICA2NTYwNSwgNjgwMywgMCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgCisgICAgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIDExNTE4LCAwLCA3ODc5MCwgCisgICAgMCwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAKKyAgICAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAKKyAgICAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIAorICAgIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDAsIDEyNjQ3OSwgNDE1LCA2Mzk2NCwgNjM5NjMsIAorICAgIDQyMzQ1LCA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDAsIDYzOTYxLCA0NDcyLCAwLCAwLCA3ODE1OSwgCisgICAgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgCisgICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAorICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCA2Mzk4MCwgCisgICAgMTE4MDEsIDM2MjIsIDk4MzEyNCwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCAKKyAgICA0MzYyOCwgMCwgOTgzMjg0LCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAorICAgIDQwMiwgMCwgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgCisgICAgMCwgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIDkyMzUxLCAwLCA3NDQyNSwgMTEyOTksIDE1NjEsIDAsIAorICAgIDkyMzU5LCA2NDk0MiwgOTgzNTU5LCAxOTQ3MzMsIDk4MzY3NywgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIAorICAgIDY5Nzg0LCA3NDA2MCwgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIAorICAgIDE5NDY2OSwgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2ODQyMSwgOTgzOTEwLCAwLCAKKyAgICA1NDA1LCAxMjc4NzUsIDY0ODY2LCAwLCAxMTk1ODMsIDEyODM0NSwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCAKKyAgICA2NDY5MCwgMzI1NCwgMCwgMCwgMTI4MjA3LCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgOTgzOTAwLCA2NTA3NywgMCwgNjM4OCwgCisgICAgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAKKyAgICA5ODM3NTMsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgNzQ3NjcsIDAsIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCA5ODM3NTIsIAorICAgIDM3ODgsIDk4MzEwNiwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTgzNjg4LCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjAyLCAxMjA4MzEsIAorICAgIDc0NTk3LCAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NjIxLCAxMTQ0MywgMCwgCisgICAgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMCwgNzQ0ODUsIAorICAgIDQyNDQyLCA2NTQ3MCwgOTgzODk4LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDEyODAwNiwgMCwgOTgyOCwgMCwgCisgICAgMCwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAKKyAgICAxMTAwMiwgNDI0NzAsIDAsIDExODk0NiwgMCwgMCwgNzQwNDEsIDAsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIDAsIDAsIAorICAgIDAsIDkxNTAsIDAsIDQyMzkzLCAxMzA4NiwgMTMxMCwgMTk0Njg3LCA5MzM3LCAxMjA1MiwgMTA2NDMsIDU1MjcxLCAKKyAgICA5ODMxNzksIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgCiAgICAgNjU1NCwgMCwgMTE5MTQsIDU0NTIsIDAsIDAsIDAsIDAsIDAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDAsIDk2NTAsIDQzMzMwLCAKICAgICAwLCAxOTQ2NzUsIDE0MDYsIDAsIDAsIDkyNjU5LCAwLCA2ODIyMywgNDE0MywgMTk0Njc3LCAwLCA2NTc0OCwgNDE0MSwgCiAgICAgOTY4MiwgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCAKICAgICA0MTQ1LCA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDAsIDQzNDAzLCAwLCAKLSAgICAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgMCwgMTI5NTUsIDEwNTk2LCAyODg4LCAwLCAwLCAwLCA5NjU3LCAKLSAgICA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAwLCAKLSAgICAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAwLCAxMDYzMiwgCi0gICAgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAwLCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCAwLCAKLSAgICA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgMCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCAwLCA4ODU0LCAKLSAgICA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAKLSAgICAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIDAsIDY4MjgsIDE2MjUsIDkyMzAyLCAwLCAKLSAgICAxMzQyLCA2ODQ0MCwgNjQxNzEsIDAsIDEwOTAzLCAwLCAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCAwLCAKLSAgICAwLCA2NDM4MSwgMCwgMCwgMCwgNDIyNDUsIDAsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMCwgCi0gICAgNzgwMjUsIDAsIDExMzQ5LCA0MDk5MSwgMCwgMCwgMTE5NTk5LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgCi0gICAgMTk0OTcwLCAwLCAwLCA0MDk5MCwgMCwgMCwgMzQ5MiwgMCwgMTI3OTQyLCAwLCAwLCAwLCAxMjgzOCwgMCwgMTk5NDgsIDAsIAotICAgIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCAwLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMCwgMCwgODE1MiwgMCwgNjQ0MjgsIAotICAgIDEyMjI3LCAwLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIAotICAgIDkyNjgwLCAwLCA2ODE1NCwgMCwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCAwLCAwLCA5NjA2LCAwLCAwLCA2NDQzOSwgMCwgCi0gICAgMCwgOTI2ODYsIDAsIDAsIDE5NDk2NywgMCwgMCwgMzM5NSwgOTM2MiwgMTA4NzgsIDAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgCi0gICAgMCwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCAwLCAKLSAgICA3NDgxOCwgNTM5NiwgMCwgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDAsIDExODg5MiwgMCwgOTQ3MiwgMCwgCi0gICAgMTE5MjksIDAsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCAxOTQ3NDEsIDAsIDE5NDc0MCwgCi0gICAgMTI4NjkxLCA5MjE4NSwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM3LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCAKLSAgICA2ODQxNCwgMCwgNDM2MTksIDQzMzgyLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCAxMjcxNTgsIAotICAgIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDAsIDAsIDAsIDY1MzY1LCA3Mzg3NywgNjU2MjgsIAotICAgIDc4MDE5LCAwLCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDczOTE3LCAxMDA2MSwgCi0gICAgNDMyMzcsIDAsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgCi0gICAgMTA4OTksIDY1NDY5LCAwLCAwLCAwLCAyNDEwLCA5OTMsIDAsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgCi0gICAgMCwgMTE5MjUzLCAwLCA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDAsIAotICAgIDQyMjQsIDEzMzYsIDQxNTE4LCAwLCAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIAotICAgIDAsIDAsIDI3MiwgNDI2MywgODc5MywgMCwgMCwgNDE1MDIsIDAsIDk4MywgMTI1NDksIDAsIDAsIDExOTAsIDQxMDksIAotICAgIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMCwgMCwgMjA5OSwgNTEyMCwgMjQwOSwgCi0gICAgNzc5OSwgMCwgNzQ0MjQsIDAsIDAsIDQ3MzEsIDAsIDY2NjI5LCAwLCAwLCAxMjU1LCA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAKLSAgICAwLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgCi0gICAgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgMCwgODE4MCwgMCwgCi0gICAgMCwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgMCwgMCwgMTI4ODU4LCAwLCAwLCAxMDY5NSwgMCwgCi0gICAgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgMCwgMCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIAotICAgIDgzNTksIDAsIDEyNjg5LCAwLCAxOTQ1OTQsIDAsIDAsIDAsIDY4MTgzLCAwLCAwLCAxMjg3LCA1NDM2LCAwLCAwLCA3NDE0MiwgCi0gICAgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDM2NTIsIDEwNTM3LCAwLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDAsIDAsIDE0ODksIDAsIDAsIDAsIAotICAgIDM4OTksIDEwMDcsIDQyMTI0LCAwLCA0MjEyMiwgOTIzMzcsIDAsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMCwgMCwgODk1NiwgCi0gICAgNDMwODMsIDExOTgzMCwgNDIxMzgsIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIAotICAgIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMCwgMCwgMCwgNzg2MjIsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgCi0gICAgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgNDE1NTAsIDAsIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAKLSAgICAyNzk5LCA5MjU5NCwgNDE5NDQsIDEyMDI3NiwgOTkzMywgMCwgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgCi0gICAgMTE5ODI3LCAxMTk4MTcsIDExOTgyOCwgNzg2MzMsIDEwODk2LCAwLCAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAKLSAgICAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCAwLCAwLCAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIAotICAgIDAsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAwLCAwLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgMCwgCi0gICAgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDAsIAotICAgIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgCi0gICAgNDEyMDgsIDAsIDQxMTY4LCA4MTc4LCAwLCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzg2MzQsIAotICAgIDE5NDcsIDAsIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMCwgCi0gICAgODAxNywgMCwgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgMTIwNjk2LCA0OTA0LCAwLCAKKyAgICAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjAzLCAxMjk1NSwgMTA1OTYsIDI4ODgsIDE5NDY0NSwgMCwgCisgICAgMCwgOTY1NywgOTAxOSwgMTk0NzY2LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDAsIDY4Njc5LCA0MzU1MiwgNzUwMSwgCisgICAgNjMyOCwgMCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMCwgODk4NiwgCisgICAgMTI2NTQyLCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAxMjY2NDcsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgCisgICAgOTI4OCwgNjQ4MjIsIDI4OTIsIDAsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgCisgICAgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAKKyAgICAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIAorICAgIDkxNzU1MywgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIDEzNDIsIDY4NDQwLCA2NDE3MSwgMTI2NzA0LCAxMDkwMywgOTgzNDg2LCAKKyAgICAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCA5ODMxMTIsIDAsIDY0MzgxLCAwLCAwLCAxOTUwOTAsIAorICAgIDQyMjQ1LCAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCisgICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDExOTU5OSwgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDE5NDk3MCwgCisgICAgMCwgMCwgNDA5OTAsIDQzNzY1LCAwLCAzNDkyLCAwLCAxMjc5NDIsIDAsIDAsIDAsIDEyODM4LCA5ODM5NjksIDE5OTQ4LCAwLCAKKyAgICAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgMCwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDAsIDAsIDgxNTIsIDAsIDQxNTUwLCAKKyAgICAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIAorICAgIDkyNjgwLCA5ODM3ODAsIDY4MTU0LCAwLCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgMCwgCisgICAgNjQ0MzksIDAsIDAsIDkyNjg2LCAwLCAwLCAxOTQ5NjcsIDAsIDAsIDMzOTUsIDkzNjIsIDEwODc4LCAwLCAwLCA3ODM2MiwgCisgICAgNjQ4MzAsIDAsIDEyNjU1NywgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgCisgICAgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MTUsIDc0ODE4LCAxNDIzLCAwLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgCisgICAgMCwgMTE4ODkyLCAwLCA5NDcyLCAwLCAxMTkyOSwgMCwgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIAorICAgIDc4NzEzLCAwLCAxOTQ3NDAsIDEyODY5MSwgOTIxODUsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNywgCisgICAgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDAsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAKKyAgICAxMTc3NiwgNzU1OCwgMTI3MTU4LCA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCAwLCAwLCAwLCAKKyAgICA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTIwMzE5LCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgCisgICAgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDAsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIAorICAgIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgMTA4OTksIDY1NDY5LCA5MjM2MiwgMCwgMCwgMjQxMCwgOTkzLCAwLCAKKyAgICAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMCwgNzExMCwgNzQ0NjIsIDIwNjYsIAorICAgIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCAwLCA0MjI0LCAxMzM2LCA0MTUxOCwgMCwgMCwgMCwgMCwgCisgICAgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAwLCAwLCAyNzIsIDQyNjMsIDg3OTMsIDAsIDAsIAorICAgIDQxNTAyLCAwLCA5ODMsIDEyNTQ5LCAwLCAwLCAxMTkwLCA0MTA5LCAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgCisgICAgOTU0NCwgNDM0ODEsIDAsIDE5NDgwNiwgNzAwMjcsIDIwOTksIDUxMjAsIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAwLCAKKyAgICA0NzMxLCAwLCA2NjYyOSwgMCwgMCwgMTI1NSwgNDE0OSwgOTI0NywgMCwgOTkxMywgMCwgMCwgNjQ5MTQsIDkxNzc4NywgCisgICAgNjUxMDEsIDAsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIAorICAgIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDAsIDgxODAsIDAsIDAsIDk5NzIsIDczODY1LCA0NTE5LCAKKyAgICA2MTE0LCAxMDg5OCwgNDMwNzIsIDAsIDAsIDkzOTYwLCA5ODMzMTQsIDEyNjU4MSwgMTA2OTUsIDAsIDc1NDAsIDAsIDg4MSwgCisgICAgNzg1NywgNjA2NywgNjUxNjQsIDAsIDAsIDAsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCA4MzU5LCAwLCAxMjY4OSwgCisgICAgMCwgMTk0NTk0LCAwLCA5ODMzMDQsIDk4Mzg3MiwgNjgxODMsIDAsIDk4MzMwNiwgMTI4NywgNTQzNiwgMCwgOTgzMzA5LCAKKyAgICA3NDE0MiwgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDk4MzMxNSwgMCwgCisgICAgMTI3MjQyLCAwLCAwLCAzNjUyLCAxMDUzNywgMCwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAwLCAwLCAKKyAgICAxNDg5LCAwLCAwLCAwLCAzODk5LCAxMDA3LCA0MjEyNCwgOTgzNTU3LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgCisgICAgMTM0NSwgNzg2MDAsIDAsIDAsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIAorICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMCwgOTgzNzUwLCAwLCAKKyAgICA3ODYyMiwgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCAyMjk3LCAwLCA3MzgzNywgCisgICAgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCAxMjAyNzYsIDk5MzMsIDAsIDY2NTE1LCAKKyAgICA3NjcsIDU1MjQsIDcwMjgsIDAsIDAsIDExOTgyNywgMTE5ODE3LCAxMTk4MjgsIDc4NjMzLCAxMDg5NiwgMCwgMTc5OSwgCisgICAgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgOTQwMTgsIDAsIAorICAgIDEyMDU3OSwgMCwgNDYzMSwgMCwgMCwgNjQwNywgMCwgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIAorICAgIDAsIDkzOTgzLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIAorICAgIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgCisgICAgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCA0MTIwOCwgOTgzNzA0LCA0MTE2OCwgCisgICAgODE3OCwgMCwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDc4NjM0LCAxOTQ3LCAwLCAwLCAKKyAgICA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgNjUzNTksIDAsIDgwMTcsIDExOTgzMSwgCisgICAgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgMTIwNjk2LCA0OTA0LCA5ODMzMjUsIAogICAgIDY5NjUwLCAxMzY1LCA5MjUzLCA0Mjc1NywgNDM0MzYsIDc0NjIsIDAsIDAsIDAsIDAsIDExOTU4NywgNjQ0MTUsIDAsIDAsIAotICAgIDUzOTgsIDAsIDEyNzM4NiwgMCwgMCwgMCwgMTE5MDE1LCAwLCAwLCA5NDc2LCAwLCAwLCAxMjc2MywgMCwgMzYyOSwgMCwgCi0gICAgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIAotICAgIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgCi0gICAgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgCi0gICAgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgOTIyOTAsIDAsIDEyMjc2LCAwLCAKLSAgICA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgMCwgMTA0NjcsIDAsIDI0NDMsIDEwOTE4LCA3ODIxNywgMTE5ODI1LCAKLSAgICAxMDAxLCA5MjQxLCAxOTI3LCAwLCAwLCA3Mzk4NywgMTI3ODg1LCAwLCAwLCAxMTg4MjgsIDEyMDI3MSwgNjU2NzgsIAotICAgIDEyODY3LCAwLCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIDY1ODU3LCAwLCAxMjg2NzQsIAotICAgIDEzMjA0LCA0Mzg3LCA4NTcsIDAsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIDEyMDU5MiwgMCwgMCwgMCwgMCwgNTEzNiwgCi0gICAgMTk2OCwgMCwgMTk1MDIzLCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAwLCAKLSAgICA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgCi0gICAgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgCi0gICAgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgCi0gICAgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCAKLSAgICA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgMCwgMTI3Mjc1LCAKLSAgICA3Mzk4MywgMjkxNSwgMTE1MDIsIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzgzMjAsIDAsIDY5NzUsIDAsIDU0MTUsIAotICAgIDEyMTc2LCAwLCA3NDE5MywgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzM3ODQsIDAsIDAsIDk3NTksIDAsIDc4MzI0LCAKLSAgICAxMjcyNTQsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgMTE4OTU2LCAwLCA0MDUxLCAKLSAgICAxMDQ2MCwgNDMzNjQsIDExODkxNywgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgCi0gICAgNDMxNTIsIDQyNDg5LCA0MjExMiwgMCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIAotICAgIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDAsIAotICAgIDAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIDczNzU5LCAKLSAgICA0MzEwMCwgNzQ0NDksIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIDY1MTc4LCAKLSAgICA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAwLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAxMDg3MCwgODU1NywgCi0gICAgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIDYwMzUsIDAsIAotICAgIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgMCwgOTE3OTg3LCAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgMCwgMTAzOTIsIAotICAgIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCAwLCA5ODAwLCA4OTc5LCAwLCAxMTkxMzEsIDQxMDAwLCAwLCAxMTkyMzksIAotICAgIDY0ODcsIDMzODYsIDAsIDEwMzQ0LCAwLCA2NTI5OSwgNTM5NCwgNDMyNDYsIDc4MjQzLCAxMDIyMCwgNjY1MDUsIDQxMjAwLCAKLSAgICAxMjg1ODMsIDQ0MjUsIDAsIDAsIDAsIDQzMDc0LCA3Mzc5OSwgMCwgNzgxNDcsIDAsIDEyMTczLCA3ODU0NSwgMCwgMCwgCi0gICAgNjUzMzgsIDAsIDAsIDExOTU4MiwgNDQ3NCwgMCwgNDMwOTMsIDAsIDE1ODcsIDAsIDEyNzM3MiwgNjQ0NzUsIDEyODA5OCwgCi0gICAgMTM2OSwgMCwgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIAotICAgIDQ1MTQsIDY2NDM0LCAwLCA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCAwLCAxMjU0MiwgMCwgNjUzNDEsIAotICAgIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAwLCA2NTI3OSwgCi0gICAgMTI3MTAyLCA2ODIwNywgMTI3MTAwLCA2NTYwNSwgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgMTI4ODI0LCAwLCAKLSAgICA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDAsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMCwgMCwgNzc0NiwgMTQ5MiwgNzg1NTEsIAotICAgIDEwODg0LCA3Nzk4MiwgMCwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCAKLSAgICA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDAsIDAsIAotICAgIDYzMjMsIDE5NDY4NCwgODIyNCwgMCwgODkzOCwgNjA0MywgMTI3MzgsIDAsIDAsIDUzMjEsIDAsIDE5NDc5OCwgMCwgMjU4OSwgCi0gICAgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgMTIwMjk2LCAxMTkwNSwgMCwgMCwgMTI4NTE2LCAKLSAgICAxMjgxNjMsIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgMCwgMTUwMywgMCwgMCwgMCwgNTczMSwgCi0gICAgMTM4MSwgMjM4NywgMCwgMCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgCi0gICAgOTc2NiwgMCwgNTcyOSwgOTE3ODMzLCA3NDQxMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgMCwgCi0gICAgMzUyNiwgNjI5OCwgMCwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDAsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDc3ODk1LCAKKyAgICA1Mzk4LCAwLCAxMjczODYsIDkzOTUzLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIDk4Mzc2OCwgMTI3NjMsIAorICAgIDEyNjYwMywgMzYyOSwgMCwgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgCisgICAgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAwLCA0MjU4MywgCisgICAgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIAorICAgIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgCisgICAgOTIyOTAsIDAsIDEyMjc2LCAwLCA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgOTgzMjI0LCAxMDQ2NywgMCwgMjQ0MywgCisgICAgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIAorICAgIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIAorICAgIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCisgICAgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAxOTY4LCA5ODMwNDEsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIAorICAgIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIAorICAgIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgCisgICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIAorICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAorICAgIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgCisgICAgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNzI3NSwgNzM5ODMsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAxMjE3NiwgMCwgNzQxOTMsIAorICAgIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3MDA1NywgMTI3MjU0LCA4MTE0LCAKKyAgICA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgMTA0NjAsIDQzMzY0LCAKKyAgICAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgCisgICAgNDIxMTIsIDEyNzk3OCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCAKKyAgICA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI2OSwgCisgICAgMTE5ODMwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCAKKyAgICA3Mzc1OSwgNDMxMDAsIDY5ODg4LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAKKyAgICAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIAorICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjg3LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKKyAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCisgICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKKyAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKKyAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKKyAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY2MywgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIAorICAgIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgCisgICAgMCwgODg5MywgOTgzMjkzLCAxMjU0MiwgMCwgNjUzNDEsIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAKKyAgICAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAxMjcxMDIsIDY4MjA3LCAxMjcxMDAsIDcwOTksIAorICAgIDYwNDAsIDEyNzA5NywgMTAwNzEsIDAsIDkzMzYsIDQzNzUwLCAwLCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCAKKyAgICA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgMCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3Nzk4MiwgMCwgNTEyNywgCisgICAgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgCisgICAgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDAsIDAsIDYzMjMsIDE5NDY4NCwgODIyNCwgMCwgCisgICAgODkzOCwgNjA0MywgMTI3MzgsIDAsIDk4MzA3NiwgNTMyMSwgMCwgMTk0Nzk4LCAwLCAyNTg5LCA3NDMzMiwgMTY4OSwgCisgICAgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCAxMjAyOTYsIDExOTA1LCAwLCAwLCAxMjg1MTYsIDEyODE2MywgNzQ1MTMsIAorICAgIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAwLCAxNTAzLCAwLCAwLCA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgCisgICAgMCwgMCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgCisgICAgNTcyOSwgOTE3ODMzLCA3NDQxMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgMCwgMzUyNiwgCisgICAgNjI5OCwgMCwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDAsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDc3ODk1LCAKICAgICA0MzE1NSwgMCwgMTE5ODQ5LCAzMTQ2LCAxMDk1OSwgOTQ4MywgMCwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgCi0gICAgMCwgMTA2MjMsIDQwOCwgMTE5MDU4LCAxMjc1MDcsIDEzMjk4LCAwLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDAsIDc2MDcsIAotICAgIDEwNjM5LCA2NjcxMywgMCwgMCwgNDE2NDMsIDc0MTM0LCAwLCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjcxMiwgCi0gICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCAwLCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAwLCAwLCAwLCAwLCAzMjQ3LCAxMTk4NTQsIAotICAgIDY1MDE3LCAwLCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCA0MTU2NywgMCwgMCwgMCwgMTk0NjI0LCAwLCAKLSAgICAwLCAwLCA4Mjg1LCAwLCA0NTA5LCAwLCA2NjQ3MSwgMTIyMTYsIDAsIDQwOTg4LCA5MjU5MiwgMCwgNDE3MjcsIDAsIAotICAgIDQyODQ4LCAyMzk2LCA5MTc3NjYsIDAsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCA0MjQ1NywgCi0gICAgMTE5MDA4LCAwLCA5OTYsIDY4MTIzLCA5MTc1NzEsIDQyNDksIDAsIDkxNzU5NCwgMTE3MDcsIDgyMjIsIDAsIDc5MzksIAotICAgIDkyNDU0LCA5MjQ2MCwgMTI3ODAxLCA5MTc1OTIsIDEyODM1OSwgODUzNCwgMTI3MTU0LCA0MDk4MywgMCwgMCwgMCwgNzIwMSwgCi0gICAgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIAotICAgIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAwLCAwLCAwLCAxMjc4NzIsIDAsIDU4MDMsIDc3OTcsIDYwNzAsIAotICAgIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCA2NTAwOSwgMCwgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIAotICAgIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMDg1LCA2MDU3LCA1MDgsIDEyODU4NSwgMTI4MDE1LCAxMjAyNjUsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIAotICAgIDExOTA3MiwgMCwgMCwgMjMwNSwgNzgzNDgsIDAsIDAsIDYwNTYsIDY2NTksIDAsIDAsIDYwODUsIDAsIDAsIDM5MTUsIAotICAgIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAwLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDkyNjkwLCAzMjQ5LCAKLSAgICAxNzY4LCAwLCAxMjMyOCwgNTAxLCAxMjcwNzQsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgMTE5MzUwLCAKLSAgICA2NTA1LCA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMjA4MTAsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCA3Mzc2NCwgMCwgCi0gICAgOTIzNzYsIDEyNzQ1LCA5Njc4LCAwLCAxMjA1ODcsIDk4NjksIDEyODgxNSwgMTc3MSwgMCwgODkzNiwgMCwgMCwgNDIwOCwgCi0gICAgNzgzNDEsIDExOTExNSwgNzgzNDIsIDAsIDAsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCAxMjg3ODgsIAotICAgIDY2NDc1LCAwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAwLCA1MDY5LCA3Mzg2MiwgNTAyOCwgOTg5NywgMCwgNzM3MzksIAotICAgIDUwMjYsIDAsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIDc0NzkwLCA3ODEzOCwgCi0gICAgMTE5MzYxLCAwLCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIDM0NDAsIAotICAgIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCAwLCAxMDYwMCwgOTE3ODY3LCA2MjAsIDQxMDAxLCAKLSAgICA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIDEyODI2OSwgMCwgMCwgCi0gICAgMTE5MzI4LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDAsIDExNTk5LCAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIAotICAgIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgCi0gICAgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCA3ODcxNywgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgCi0gICAgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDAsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCAwLCAKLSAgICAxMjgyMTcsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKLSAgICA0MzYwNiwgMCwgNjgzOTcsIDY2MzcwLCA3NDUwNiwgNDIzMzUsIDAsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIAotICAgIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAKLSAgICAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgCi0gICAgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIAotICAgIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAKLSAgICAwLCA0MTY2MiwgMCwgMCwgMCwgMCwgMCwgNDU3OCwgNjQ1MTMsIDQxNjY0LCAwLCA0MjU3OCwgMTI4Nzk0LCA0MTY2MSwgCi0gICAgNzg3MTUsIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgMCwgMCwgNjQ3MDcsIDAsIDQyNDc2LCA3NzMwLCAwLCAKLSAgICAxMjg1MjIsIDQyNDgzLCAwLCAwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgMCwgNjY0MSwgNTI1LCA0MTYyNywgCi0gICAgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCAKLSAgICA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMCwgMTIwMjM0LCAwLCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgCi0gICAgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAwLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIAotICAgIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgCi0gICAgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIAotICAgIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAKLSAgICAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIAotICAgIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgOTE3NTYzLCA0MTg4MSwgMCwgCi0gICAgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCAKLSAgICA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIDE2MDMsIDAsIDExOTAwMywgMCwgCi0gICAgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCA3ODEwMSwgMTE2MDAsIDc3OTYxLCAKLSAgICAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAKLSAgICAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIAotICAgIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgCi0gICAgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIDIwOTMsIDc3OTgzLCAxMDMwMiwgCi0gICAgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCAKLSAgICA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNzc5NzksIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIAotICAgIDkyNDQ3LCAwLCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIDQzNjgyLCAwLCA3NzkxMCwgMTIwMDI2LCA3ODcwOCwgMCwgCi0gICAgNzc5MTEsIDAsIDQxOTkxLCAwLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMCwgMTE3NCwgNzc5ODEsIDQyNzMzLCAKLSAgICA3Nzk3OCwgNzc5ODAsIDY2NDg1LCA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNjU2NjcsIDEyNzAzNywgMTIzMzAsIAotICAgIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDc3OTg0LCA3NDQ0MywgMCwgCi0gICAgMTAyMDksIDgzMTMsIDQxOTUsIDc0NDM1LCAxMzE2LCA2NjY5MCwgMTIwMDMyLCA2MzMyLCA2NDg5NCwgMCwgNjU4NzEsIAotICAgIDc4MDYwLCAxNzM2LCAwLCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4ODQxLCA2OTMsIAotICAgIDkxMzAsIDMxNCwgNjQxNDksIDQyNDIwLCAxMTk0OSwgMCwgMTIwMTUyLCAxMTAyNiwgMCwgNTMzMiwgNjk0MCwgNjQxNTQsIAotICAgIDEyNjM1LCAxMjcwMDcsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCAwLCAxMjgyNCwgMCwgCi0gICAgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIAotICAgIDAsIDAsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCAwLCAKLSAgICA3NDA5NSwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDAsIDQwNDQsIDkyNjQ2LCAwLCAxMjIzMywgMCwgMTAyMywgCi0gICAgNDc0LCAwLCAxMTk4MTgsIDAsIDAsIDQyNDg3LCA2NTU1NiwgMCwgMCwgNDIyOTUsIDAsIDAsIDAsIDkyNTE4LCA5ODM1LCAKLSAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAxMDExOCwgMzEzMywgCi0gICAgMTI4MDA4LCA3Mzc5NSwgMCwgOTYxMCwgODA2OCwgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgMCwgOTI2OTUsIAotICAgIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIDY1NTgzLCA2NTgwMiwgMCwgCi0gICAgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDkyMTk3LCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCAwLCAwLCA0MTgzNSwgCi0gICAgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAwLCAwLCAxMTAxNywgMCwgMCwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCAKLSAgICA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgMCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgCi0gICAgMTk0MSwgMzkwMCwgMCwgMTcxMywgNzc5NjksIDAsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIAotICAgIDY0MTA1LCAxMjgwODAsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAwLCA2NDEwMywgOTY5LCAwLCA5MzUyLCAKLSAgICAwLCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMCwgODkxNCwgMCwgMCwgMzE4MywgCi0gICAgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCA2Nzg0OSwgNTc0NiwgNzM3NDksIDAsIDY0NDE2LCAKLSAgICA0MjQyMiwgMCwgMCwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIAotICAgIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCAwLCAwLCA2NTg0OCwgMCwgMCwgMCwgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAKLSAgICAwLCAxMDkyNSwgMCwgMCwgMCwgMCwgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDAsIDEwMzA1LCA0MjQ2MSwgMCwgCi0gICAgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIAotICAgIDkxNzg1NywgNzc5NCwgMCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCAwLCA2OTY1OCwgCi0gICAgMCwgNjU0MDIsIDExOTU4MSwgMCwgMCwgNjQ5MzMsIDAsIDQxOTYwLCA2Njk5LCAwLCAwLCAxMjgzNTQsIDY4MjMsIDQyMzkxLCAKLSAgICAxNTg4LCA2NTQwMCwgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCAwLCA5MTc5MzksIDEyNzc0NCwgNjExNSwgCi0gICAgMjA3OCwgNDE2NTQsIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgCi0gICAgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgCi0gICAgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIAotICAgIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgCi0gICAgMTEwMjksIDY2NjUxLCAwLCAwLCAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCA3MzgwMywgMCwgMTI3MzQ4LCAxMjAwOTYsIAotICAgIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIAotICAgIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMCwgNjU0MjQsIDEyNjA3LCAwLCA5NzM0LCA2NTQyNSwgMCwgMCwgMTI3MzU3LCAKLSAgICA3ODgzNSwgOTI0MTAsIDEwMTEyLCAxMDgyNywgMCwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAwLCA4NjI1LCA2NDM0NiwgMTEyOTAsIAotICAgIDEwNDc3LCAwLCA4NjM2LCAwLCA4MzE1LCA2NTQ0NCwgMCwgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyODI1MSwgCisgICAgOTgzNjA2LCAxMDYyMywgNDA4LCAxMTkwNTgsIDEyNzUwNywgMTMyOTgsIDAsIDc0MjYsIDQxNjQxLCAxMjcxNywgMCwgCisgICAgNzYwNywgMTA2MzksIDQzMzk2LCAwLCAwLCA0MTY0MywgNzQxMzQsIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCAKKyAgICA0MTY0NSwgNjY3MTIsIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgOTM5OTQsIDc3OTAxLCAzNDcyLCA4Njk3LCAKKyAgICAwLCAwLCA5ODM4MDYsIDAsIDAsIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDc0NTcyLCAwLCA0MjEzNiwgMCwgMCwgCisgICAgMCwgMCwgMzI0NywgMTE5ODU0LCA2NTAxNywgOTgzOTQ0LCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCAKKyAgICA0MTU2NywgMCwgMCwgMCwgMTk0NjI0LCAxMTk4NTMsIDAsIDAsIDgyODUsIDAsIDQ1MDksIDAsIDY2NDcxLCAxMjIxNiwgMCwgCisgICAgNDA5ODgsIDkyNTkyLCA3NDgwOSwgNDE3MjcsIDAsIDQyODQ4LCAyMzk2LCA5MTc3NjYsIDAsIDc0MDE4LCA5MTc1MzgsIAorICAgIDY0OTQwLCA3MDI3LCAzODg2LCAwLCA0MjQ1NywgMTE5MDA4LCAwLCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgMCwgCisgICAgOTE3NTk0LCAxMTcwNywgODIyMiwgMCwgNzkzOSwgOTI0NTQsIDkyNDYwLCAxMjc4MDEsIDkxNzU5MiwgMTI4MzU5LCA4NTM0LCAKKyAgICAxMjcxNTQsIDQwOTgzLCAwLCA5ODMyMzQsIDAsIDcyMDEsIDEyNTYxLCAwLCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgCisgICAgMTAwNTIsIDQwOTgyLCAwLCAwLCAxNDg4LCAwLCAwLCAwLCA5MTc1NTksIDAsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCisgICAgOTgzOTMxLCAwLCAwLCAxMjc4NzIsIDcxMzYzLCA1ODAzLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMCwgMjkyMiwgNjA4MiwgMCwgCisgICAgNjUwMDksIDk4MzkzMywgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCAKKyAgICA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDAsIDAsIDAsIDAsIDAsIDQzMDg1LCA2MDU3LCA1MDgsIAorICAgIDkzOTY4LCAxMjgwMTUsIDY3OTY4LCAwLCA5MjQwNSwgMCwgMCwgNjM4LCA2MDgzLCAxMTkwNzIsIDAsIDAsIDIzMDUsIAorICAgIDc4MzQ4LCA2ODA5NiwgMCwgNjA1NiwgNjY1OSwgNjc5NjksIDAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgCisgICAgNjM5MTIsIDExOTQxLCAwLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAzMjQ5LCAxNzY4LCA5Mzk4MiwgCisgICAgMTIzMjgsIDUwMSwgOTM5ODUsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgMTE5MzUwLCA2NTA1LCAKKyAgICA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMjA4MTAsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCA3Mzc2NCwgMCwgOTIzNzYsIAorICAgIDEyNzQ1LCA5Njc4LCAwLCAxMjA1ODcsIDk4NjksIDEyODgxNSwgMTc3MSwgMCwgODkzNiwgMCwgMCwgNDIwOCwgNzgzNDEsIAorICAgIDc4NTY3LCA3ODM0MiwgMCwgOTgzNDQ4LCA3NDEwMSwgMCwgMTE3NjIsIDAsIDkyNDIyLCA3Nzk5NywgNjgwMTAsIDY2NDc1LCAKKyAgICAwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAwLCA1MDY5LCA3Mzg2MiwgNTAyOCwgOTg5NywgMCwgNzM3MzksIDUwMjYsIAorICAgIDk4MzI0NywgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKKyAgICAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAwLCAKKyAgICAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgOTgzNjcwLCAxMDYwMCwgOTE3ODY3LCAKKyAgICA2MjAsIDQxMDAxLCA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIAorICAgIDY5ODkyLCA5ODMyMDcsIDAsIDExODg4NSwgMCwgNjU1NTcsIDAsIDc0NTQxLCA5ODM1ODcsIDExNTk5LCAxMjgyMDksIAorICAgIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgCisgICAgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgCisgICAgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgCisgICAgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgMCwgMTI2NDgyLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIAorICAgIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgNDM2MDYsIDAsIDY4Mzk3LCA2NjM3MCwgNzQ1MDYsIDQyMzM1LCAKKyAgICA5ODMxODgsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIAorICAgIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgCisgICAgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIAorICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgCisgICAgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDAsIAorICAgIDAsIDAsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzcyNSwgNDI1NzgsIDEyODc5NCwgNDE2NjEsIDc4NzE1LCAKKyAgICA0MzI2NywgOTM1NiwgMCwgMCwgMCwgMTI4NiwgMTAxNjYsIDAsIDAsIDY0NzA3LCA5ODMxMjcsIDQyNDc2LCA3NzMwLCAKKyAgICA5ODM4NTAsIDEyODUyMiwgNDI0ODMsIDAsIDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCAwLCA2NjQxLCA1MjUsIAorICAgIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgCisgICAgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAwLCA3NDM2MCwgMCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgCisgICAgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgOTgzMDkyLCAxMTM3NCwgNzgwNDMsIDEwODg5LCAKKyAgICA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIAorICAgIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgCisgICAgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIAorICAgIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIAorICAgIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgCisgICAgOTE3NTYzLCA0MTg4MSwgMCwgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIAorICAgIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIAorICAgIDE2MDMsIDAsIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCAKKyAgICA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIAorICAgIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIAorICAgIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgCisgICAgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgCisgICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIAorICAgIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIAorICAgIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIDkyNDQ3LCA5ODM4MTAsIDk1NDksIDAsIDEwNTQ5LCA1NTI4MiwgOTY2MSwgCisgICAgNDM2ODIsIDAsIDc3OTEwLCAxMjAwMjYsIDc4NzA4LCAwLCA3NzkxMSwgMCwgNDE5OTEsIDk4Mzg4NCwgMCwgNzYzMCwgCisgICAgOTg0NiwgNzY4NCwgMTAzNTAsIDAsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIAorICAgIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDY1NjY3LCAxMjcwMzcsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAwLCAxMDIwOSwgODMxMywgNDE5NSwgNzQ0MzUsIAorICAgIDEzMTYsIDY2NjkwLCAxMjAwMzIsIDYzMzIsIDY0ODk0LCAwLCA2NTg3MSwgNzgwNjAsIDE3MzYsIDk4MzY3NSwgMzkwMSwgCisgICAgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODg0MSwgNjkzLCA5MTMwLCAzMTQsIDY0MTQ5LCA0MjQyMCwgCisgICAgMTE5NDksIDk4MzY2MCwgMTIwMTUyLCAxMTAyNiwgMTI4Nzg4LCA1MzMyLCA2OTQwLCA2NDE1NCwgMTI2MzUsIDEyNzAwNywgCisgICAgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDEyMDc2MywgNzg4NDAsIDcxMzY4LCAxMjgyNCwgMCwgNDUyOCwgCisgICAgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIDAsIDAsIAorICAgIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NTksIAorICAgIDc0MDk1LCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgMCwgNDA0NCwgOTI2NDYsIDAsIDEyMjMzLCA5ODM4NjIsIAorICAgIDEwMjMsIDQ3NCwgMCwgMTE5ODE4LCAwLCAwLCA0MjQ4NywgNjU1NTYsIDAsIDEyNzg2NiwgNDIyOTUsIDAsIDAsIDcxMzIyLCAKKyAgICA5MjUxOCwgOTgzNSwgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCAwLCAwLCA1NTI1MSwgCisgICAgMTAxMTgsIDMxMzMsIDEyODAwOCwgNzM3OTUsIDAsIDk2MTAsIDgwNjgsIDgxOTcsIDAsIDY5OSwgMCwgNDE2NjUsIDU4NjgsIAorICAgIDAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCA2NTU4MywgCisgICAgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDExOTE4NCwgOTIxOTcsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIDE5MzcsIAorICAgIDk4Mzc0MiwgMCwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgMCwgMCwgMTEwMTcsIDEyMDYwMSwgMCwgMjkzLCAKKyAgICA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgNzEzNTAsIDY1NDEzLCAKKyAgICA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIDAsIDE3MTMsIDc3OTY5LCAwLCA3Mzk1NywgMTE0MDcsIAorICAgIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTI4MDgwLCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCAKKyAgICA0MjI4OSwgMCwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgMCwgNjE2NSwgNjQxMDAsIDAsIDY2MzIsIDczODYxLCA0MjQwMiwgCisgICAgNzQzMjcsIDc4MDYsIDAsIDg5MTQsIDAsIDAsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCisgICAgNjc4NDksIDU3NDYsIDczNzQ5LCAwLCA2NDQxNiwgNDI0MjIsIDAsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgCisgICAgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAorICAgIDAsIDY1ODQ4LCAwLCAwLCA2OTg2MywgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAwLCAxMDkyNSwgMCwgMCwgMCwgOTgzNTg2LCAKKyAgICA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgMCwgMTAzMDUsIDQyNDYxLCAwLCA0MjM0OSwgODgzMiwgNzgwNTEsIAorICAgIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDAsIDQyNDI5LCAKKyAgICA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAKKyAgICAwLCAwLCA2NDkzMywgMCwgNDE5NjAsIDY2OTksIDAsIDAsIDEyODM1NCwgNjgyMywgNDIzOTEsIDE1ODgsIDY1NDAwLCAKKyAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCA5MTc5MzksIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAorICAgIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgNDE2NTcsIDEwNzc4LCAKKyAgICAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgMCwgMCwgNDE1NTQsIDAsIAorICAgIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgCisgICAgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgMTEwMjksIDY2NjUxLCA5ODMwNjgsIAorICAgIDAsIDExODkzMCwgNjQ1MjcsIDAsIDc4NzcsIDczODAzLCA5ODM3ODksIDEyNzM0OCwgMTIwMDk2LCA3NDYwMiwgOTk1NSwgCisgICAgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCAwLCA3ODYzMSwgCisgICAgOTUwMiwgNjU0MjcsIDAsIDY1NDI0LCAxMjYwNywgMCwgOTczNCwgNjU0MjUsIDAsIDAsIDEyNzM1NywgNzg4MzUsIDkyNDEwLCAKKyAgICAxMDExMiwgMTA4MjcsIDAsIDk4NjYsIDc0NTI3LCA2NjY3NSwgMCwgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgMCwgCisgICAgODYzNiwgOTgzOTE4LCA4MzE1LCA2NTQ0NCwgOTgzNzg0LCAwLCA3NDU5NSwgNjE1MiwgMCwgMCwgNjYyOSwgMTI3MTA4LCAKICAgICAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMCwgNjk3OTAsIDY0NDM1LCAwLCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCiAgICAgNDQ4NSwgMTI3MTA3LCAwLCA2NDkyNiwgMCwgMCwgMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAKICAgICAxMjgyNSwgMCwgMCwgMTI3MjUsIDAsIDAsIDc4NjQyLCAyMjMsIDAsIDY5Njc1LCAxMjAxNjYsIDQyNDQ0LCAwLCA2NDQ5OSwgCiAgICAgNjUyNDUsIDAsIDExNzEsIDAsIDY5NzE3LCAwLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIDc4NjE5LCAKICAgICAxMjAxMTEsIDIzMzgsIDAsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCA2NTIzNiwgNjc2NDQsIDY4MTI2LCAxMjEzLCAKLSAgICAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMCwgNjQzODcsIDQxMTUsIDAsIDUwMDUsIDY0MDcwLCA2NDA3MywgCi0gICAgMTA2NzksIDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCAwLCAwLCA4MjUxLCAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIAotICAgIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgMTIwMTU4LCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAKLSAgICAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCAwLCA5MjIyLCAKLSAgICAwLCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCAwLCAwLCAKLSAgICAxMjkzLCA3OTQ3LCAyMTMyLCAwLCA3NDU5MywgMTIwMzA4LCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCAwLCAwLCAKLSAgICA2NTg4OCwgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgMCwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDAsIDg4MjIsIDAsIAotICAgIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCAxMjAzMTksIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgCi0gICAgMCwgNjkyMTYsIDAsIDY1NDMwLCA3NDAxMywgNjA3OSwgNjgxNywgMTA3NjQsIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAKLSAgICAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgMTk5MSwgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIAotICAgIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIAotICAgIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAwLCA2NjM3MywgMCwgMCwgNjQ5MDgsIDkyNjkxLCA2MzExLCAKLSAgICAwLCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgMCwgNDE3MDUsIDkyMTg4LCA2NTk4LCAwLCA2NTk5LCAKLSAgICAxMjAzMzQsIDAsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAwLCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDAsIDAsIAotICAgIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgMCwgMTIwMjQzLCAyMzM2LCAwLCAwLCA3ODg3MSwgMTIwNDQyLCAKLSAgICAwLCAxOTIxLCAxMDk0NywgMTk5MjcsIDAsIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgCi0gICAgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgCi0gICAgNjU0MDMsIDAsIDE4NTQsIDEwNzk0LCAwLCA2NzY2MCwgMCwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCAKLSAgICA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIAotICAgIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgCi0gICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMCwgMCwgODQyMSwgMTI3NDcyLCA2OTY4MiwgCi0gICAgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIDExOTA1NiwgMCwgMTIwNDMsIDEzMDMsIDMxNiwgOTI0NjIsIDIwMjksIDIxMzYsIAotICAgIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDE5NDY0NSwgMTI3ODc3LCA0MjQ4OCwgMCwgOTU4MywgCi0gICAgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCAKLSAgICA3Nzk4OSwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCAKLSAgICA2NTQ1MiwgMCwgMTEzMDEsIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgCi0gICAgMCwgMCwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIAotICAgIDkyNzA5LCAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIAotICAgIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgCi0gICAgOTIzNjMsIDk5OTYsIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIAotICAgIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgMCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDAsIAotICAgIDAsIDkxMTksIDI3ODcsIDc5MjAsIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCAwLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgMCwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgCi0gICAgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzgxNDEsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgCi0gICAgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIAotICAgIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCAwLCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDkxNzkyMCwgMjkyNiwgOTE3OTE5LCAKLSAgICA0NTY5LCA3NDEzMCwgMCwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIAotICAgIDE5NDg1OCwgMCwgMCwgMTI3NTQ1LCAxMjA1NDMsIDAsIDAsIDYyOTEsIDAsIDc4NjM5LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAKLSAgICAwLCAwLCA3NDA1NCwgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgMCwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDAsIDQ4NTksIAotICAgIDY0NDY3LCAwLCAwLCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIDAsIAotICAgIDEyNzkzNiwgODA0LCAwLCAwLCAxMjI5OCwgMCwgNjY2NTMsIDAsIDY0OTI0LCAxMDA5MSwgNzM5MzEsIDk0NjgsIDc0MjQ1LCAKLSAgICAwLCAwLCA3NDI0NiwgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDAsIDEyNzksIDE0MjUsIDYyMjQsIDExOTIyOSwgCi0gICAgMTEwNDksIDAsIDkyNjk3LCA0MzIzOSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIDY5Njc3LCAxMTk0MCwgNjc4ODgsIDY2NCwgCi0gICAgMTIwNDM3LCA1MDM0LCAwLCAwLCAxMjc1MjUsIDQyNzAyLCA3Mzg4OCwgMCwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgCi0gICAgMCwgOTExNSwgNzQzMCwgMTIwMzc3LCAwLCAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCAKLSAgICA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIAotICAgIDQxMTY0LCA2NDc0NCwgOTUyOCwgMTE4ODY3LCAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDAsIDE5NDYzOCwgCi0gICAgMCwgMTY2MywgMTA0MTksIDc0MDI1LCA0MjYzNiwgMCwgNjk3MjUsIDAsIDEyMDY1NiwgMCwgNjc4NzYsIDAsIDAsIDAsIAotICAgIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAwLCAwLCAxMDg1NSwgNTQ0NSwgCi0gICAgOTM1NSwgMCwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCAKLSAgICA4ODU1LCAwLCAwLCA2NDQ2OSwgMTIwNDI2LCAxMDU1NSwgMCwgNDMzMzMsIDkyMjk5LCAwLCAxMjA0MjcsIDEwNDUxLCAwLCAKLSAgICA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCAwLCAxMjAxNDYsIAotICAgIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDAsIDAsIDExMDEwLCAxMjcyMywgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCAwLCAKLSAgICA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNTk1LCAwLCA3NDQwMiwgMTE4ODYwLCAwLCAKLSAgICAxMjA0MTksIDkyNDk3LCA3NDA1MiwgMCwgMCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAxMjA0MTgsIDAsIDY0NzY1LCAKLSAgICA3MzkyMywgMTIwNDE3LCAxMjA2NjIsIDEyMDczMCwgMTk0NzAyLCA2MjE2LCAwLCAxMDc1NSwgOTQ1NSwgMCwgODEyNCwgCi0gICAgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAwLCAwLCAwLCAKLSAgICA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMCwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgCi0gICAgNzgzMywgMTIwNjkxLCAwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCAxMjA0MDksIDEyNzA0NCwgMCwgODUzNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDExOTksIDEwMTIxLCAyMDI4LCAwLCAwLCA2OTcxNSwgMCwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAwLCAKLSAgICA2NjQ0MCwgNzU0NSwgOTcwMCwgMTI1ODAsIDAsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgMCwgNzQwNzEsIDAsIDAsIAotICAgIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgCi0gICAgNTQyLCAwLCAxMTg3ODYsIDAsIDAsIDEyMzAsIDAsIDAsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAotICAgIDEyNzkzOCwgODM1MiwgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgCi0gICAgMCwgNzQyODQsIDEyODI4NSwgMCwgODY2MCwgMCwgMCwgMCwgNzg3NzMsIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgCi0gICAgOTkwOSwgNjA4MCwgMCwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAwLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCAKLSAgICA0NDgwLCAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCAwLCAwLCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgMCwgNzQ3ODUsIAotICAgIDEyMDM1NiwgMCwgMCwgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIDEwODc3LCAKLSAgICAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgMCwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAwLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAotICAgIDAsIDkyMjMxLCA1MDM3LCAwLCAxNzc2LCA4NDIyLCAwLCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCA0MzMyOCwgMCwgCi0gICAgNDI2OTgsIDEyOTUsIDAsIDQ2MjUsIDAsIDQ2MzAsIDEzMTE3LCAwLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgCi0gICAgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgNDI1MiwgNTA0OSwgNDI2NTksIAotICAgIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgMCwgNjU0MTksIDAsIDAsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCAwLCAKLSAgICAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgNjU0MjIsIDEyNzgwMywgMTE4MywgMCwgNzAxNywgNDI4NTIsIDAsIAotICAgIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgMCwgNzQwMzUsIDAsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMCwgODkyMCwgMCwgCi0gICAgMCwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAwLCAwLCAxMDE3NywgNzM3NzcsIDE4NTcsIDAsIAotICAgIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAwLCAwLCAKLSAgICA3ODA1LCAwLCAwLCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIAotICAgIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDAsIDAsIDc4MzM2LCA3ODMzOSwgOTU0MywgNzgzMzUsIDc4MzMyLCA3NzgzMiwgCi0gICAgNjU4NDksIDc3ODMxLCAwLCAwLCAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgNTI5OCwgMCwgNTI5NCwgMCwgMCwgMCwgCi0gICAgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIAotICAgIDEyMDYxNywgNzQzOTcsIDQxNDY4LCAwLCAwLCA1MjkyLCA1NTI3MiwgMCwgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAKLSAgICAxMjQ1NSwgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgCi0gICAgMCwgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCAwLCAwLCA1NTAwLCA4ODEzLCAwLCAwLCA3NDU2NiwgNTMyMiwgMCwgCi0gICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDQzMzI0LCAKLSAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAwLCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCAKLSAgICA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgCi0gICAgNDE4MTUsIDQxMTUwLCAwLCAxMDU3MSwgMTAwOTYsIDAsIDAsIDc4MDc0LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCAKLSAgICA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNzQ0NjYsIDAsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIAotICAgIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCAKLSAgICAxMjczODMsIDMxNSwgMTI4MTMsIDAsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCAwLCAwLCAwLCAxMzc4LCAKLSAgICA5NTA5LCAwLCAwLCA3NDQ3NSwgMzA2NiwgOTIyMjAsIDY3ODQ3LCAwLCA5MjM1NSwgMCwgNzgzNjUsIDg3ODcsIDEyMDM3OSwgCi0gICAgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTk0NjE0LCAwLCA2NDY1MiwgMCwgMTk0NjEyLCAwLCA3ODM2NiwgCi0gICAgNDIwODgsIDAsIDE5NTA2MSwgNzE3NiwgMTI4ODMzLCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3NDUzNCwgODExOSwgCi0gICAgNjQ4NzQsIDkxNzgxNiwgMTI3MTk5LCAxOTQ5MzksIDAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgMTM5NCwgNzQ1MTQsIDAsIAotICAgIDc0NTE1LCAwLCAxMTg4MDQsIDI5OTgsIDk1MjcsIDEyMDY1OSwgNjUxOTAsIDEyOTc3LCA0MjA5MCwgMTE5MTY1LCAwLCAKLSAgICAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgNTg0OCwgMCwgMCwgMzY3MCwgMTI4NjU3LCAKLSAgICAxOTQ2MDAsIDAsIDAsIDc4OTAsIDAsIDExMjk4LCA0MzMxNSwgMCwgNjIyOSwgMTU5MywgMCwgMCwgNjE5LCA0NjM1LCAKLSAgICA2NTA4MCwgMCwgMTI4MDAyLCA0MTIwLCA2NTMzNywgNjUzMzYsIDAsIDExODA4LCAxMTkyMTQsIDc0MTE1LCA5MzY2LCAKLSAgICA0Mjc5MCwgNDIwMDYsIDAsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCAKLSAgICA2NTMzNSwgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCAKLSAgICAxMTg4ODUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKLSAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAwLCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCA0MzUzMywgCi0gICAgNzg0NTksIDcxODksIDAsIDAsIDAsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDAsIDQ2MTUsIDEyNjk1LCAKLSAgICAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMCwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIAotICAgIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDAsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAKLSAgICAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAxMjcxOTEsIDAsIDAsIAotICAgIDEyNjA2LCA3ODQzMywgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgMCwgMCwgMTIwNTkzLCAKLSAgICAxMzA3MSwgMCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgCi0gICAgNjQ3MDMsIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgMTY2OCwgMCwgMCwgMCwgMTE4NywgCi0gICAgMCwgNDI2MjgsIDc4NTc1LCAwLCAxMjg3NzcsIDAsIDMyNDAsIDEyODUxOCwgMTIxOTQsIDAsIDExNTkxLCA0MTA2NSwgCi0gICAgNTMyMywgODE2NiwgMCwgMCwgMCwgNzQ1MzUsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgCi0gICAgMTI3Mjk1LCA4OTE2LCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgMCwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgMTI3MzAwLCAKLSAgICA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCAwLCA3ODgxLCA3MDEsIDY1OTM2LCAzNDg5LCAwLCAwLCAxMjA3NTEsIAotICAgIDExNDAzLCAwLCAwLCAxMjcxNDYsIDM3OTYsIDY4MDAsIDAsIDM5OTQsIDExNDIxLCAwLCAxOTUwNzYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCAxMjczNjksIDY0Mzg3LCA0MTE1LCAwLCA1MDA1LCA2NDA3MCwgCisgICAgNjQwNzMsIDEwNjc5LCAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgMCwgMCwgODI1MSwgMTAxMzYsIDY1NDM2LCAwLCAKKyAgICAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDc0MTkyLCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAxMjg1OCwgCisgICAgMTIwMTU5LCAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCAwLCAKKyAgICA5MjIyLCA5ODM3MjksIDAsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIAorICAgIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc1OCwgNzQ1OTMsIDEyMDMwOCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgCisgICAgMCwgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDAsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCAKKyAgICA5ODMxMTQsIDg4MjIsIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCA2OTg0OCwgODIzNSwgMTIwMzE2LCAKKyAgICA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAwLCA2OTIxNiwgMCwgNjU0MzAsIDcxMzIxLCA2MDc5LCA2ODE3LCAxMDc2NCwgCisgICAgMTI3OTEwLCA2NDI5MSwgMTI4MDUxLCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAwLCAxOTkxLCAKKyAgICA3ODgyLCA0MjI1NCwgMCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAorICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgMTE5MzM0LCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgCisgICAgNjYzNzMsIDAsIDAsIDY0OTA4LCA5MjY5MSwgNjMxMSwgMCwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIAorICAgIDAsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMCwgNjU5OSwgMTIwMzM0LCAwLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMCwgNjU5NywgCisgICAgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMCwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAKKyAgICAwLCAxMjAyNDMsIDIzMzYsIDk4Mzg5NCwgMCwgNzg4NzEsIDEyMDQ0MiwgOTgzNzYwLCAxOTIxLCAxMDk0NywgMTk5MjcsIDAsIAorICAgIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgCisgICAgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgNjU0MDMsIDk4MzA4OSwgMTg1NCwgMTA3OTQsIAorICAgIDAsIDY3NjYwLCA2OTg0NiwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCA2NTQzMywgNjA3NiwgNjQ3OTMsIAorICAgIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIAorICAgIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgCisgICAgMTI3NDYzLCA2OTc5NywgMTk0NjUyLCAxMjc0NzMsIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDAsIDY1NDMxLCAKKyAgICAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgCisgICAgNDM0ODAsIDkyNjM5LCA0ODYwLCAxMjY2NDgsIDEyNzg3NywgNDI0ODgsIDAsIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgCisgICAgNzM4NTYsIDAsIDAsIDAsIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzc5ODksIDYzNzUxLCAxMjEzNywgCisgICAgNTU0OCwgNzc5ODUsIDAsIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAKKyAgICA3ODAxMywgNzgwMDgsIDc4MDEwLCA5ODc0LCA3ODAwNywgMCwgMTMxOSwgMzA1MCwgNjU0MTAsIDAsIDAsIDc4MDE2LCAKKyAgICA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgMTI4MTM3LCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA5MjcwOSwgCisgICAgMTI4MjIyLCAwLCA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgCisgICAgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAxMTk2MTEsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCAKKyAgICA4NTA4LCAwLCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDAsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIAorICAgIDQxMzc5LCAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMCwgMCwgOTExOSwgCisgICAgMjc4NywgNzkyMCwgMTE4ODIzLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDAsIDAsIDc4MDIxLCA3ODAyMiwgNDEwLCAKKyAgICA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCAwLCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIAorICAgIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3ODE0MSwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAKKyAgICAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIDM2MSwgCisgICAgMTIwMzU3LCA4NDUsIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA5MTc5MTksIDQ1NjksIDc0MTMwLCAwLCAKKyAgICA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCA2NTYyOSwgMCwgMTk0ODU4LCAwLCAwLCAxMjc1NDUsIAorICAgIDEyMDU0MywgMCwgMCwgNjI5MSwgMCwgNzg2MzksIDQxNjY5LCA3MDk0LCA5MTc5MjEsIDAsIDk4MzU4MSwgNzQwNTQsIAorICAgIDEyNzc1NCwgMTk1MDI5LCAwLCA4MzksIDk4MzMxMSwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDE5NDY2MywgNDg1OSwgCisgICAgNjQ0NjcsIDAsIDk4Mzk1NCwgMTE4OTk4LCA3MjA2LCAwLCA2NjQ3LCA0Mzk4NiwgMCwgNjk3NjYsIDAsIDY0NzY0LCA0MjEwLCAKKyAgICA5ODM4NTQsIDEyNzkzNiwgODA0LCAwLCAwLCAxMjI5OCwgMCwgNjY2NTMsIDAsIDY0OTI0LCAxMDA5MSwgNzM5MzEsIDk0NjgsIAorICAgIDc0MjQ1LCAwLCAwLCA3NDI0NiwgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDAsIDEyNzksIDE0MjUsIDYyMjQsIAorICAgIDExOTIyOSwgMTEwNDksIDAsIDkyNjk3LCA0MzIzOSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIDY5Njc3LCAxMTk0MCwgCisgICAgNjc4ODgsIDY2NCwgMTIwNDM3LCA1MDM0LCAwLCAwLCAxMjc1MjUsIDQyNzAyLCA3Mzg4OCwgOTgzMTQ5LCAxMzI5NCwgCisgICAgNjc4NzMsIDY0ODY5LCA2MDMyLCAwLCA5MTE1LCA3NDMwLCAxMjAzNzcsIDAsIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgCisgICAgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgMTIwMTYwLCA2NDUyOCwgMTE2OSwgNDM0LCAKKyAgICA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCAxMTg4NjcsIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgCisgICAgNzg4LCA3NDAyNywgMCwgMTk0NjM4LCAwLCAxNjYzLCAxMDQxOSwgNzQwMjUsIDQyNjM2LCAwLCA2OTcyNSwgMCwgMTIwNjU2LCAKKyAgICAwLCA2Nzg3NiwgMCwgMCwgMCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDAsIAorICAgIDAsIDEwODU1LCA1NDQ1LCA5MzU1LCAwLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgMCwgMCwgODAxMCwgNzE5MSwgCisgICAgNDk2MiwgNjk3NzIsIDg4NTUsIDAsIDAsIDY0NDY5LCAxMjA0MjYsIDEwNTU1LCAwLCA0MzMzMywgOTIyOTksIDAsIAorICAgIDEyMDQyNywgMTA0NTEsIDAsIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIAorICAgIDgzNjcsIDAsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgMCwgMCwgMTEwMTAsIDEyNzIzLCA3NDA1OSwgNzQwNjIsIAorICAgIDYyMTcsIDU4OTYsIDAsIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1OTUsIDAsIAorICAgIDc0NDAyLCAxMTg4NjAsIDAsIDEyMDQxOSwgOTI0OTcsIDc0MDUyLCAwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAKKyAgICAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgMTIwNDE3LCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDAsIDEwNzU1LCAKKyAgICA5NDU1LCAwLCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyNzU0MCwgMCwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIAorICAgIDAsIDAsIDAsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAwLCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIAorICAgIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDEyMDQwOSwgMTI3MDQ0LCAwLCA4NTM3LCAwLCAKKyAgICAwLCA5MzU0LCA5ODMxNjQsIDEyODgzMywgNDExOTksIDEwMTIxLCAyMDI4LCAwLCA5ODMxOTQsIDY5NzE1LCAwLCAzMDYyLCAKKyAgICAwLCA3NDQ0NywgMTI2MDgsIDAsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMjU4MCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCAKKyAgICA0MTE1NSwgMCwgNzQwNzEsIDAsIDk4MzQ0OSwgMTI3MTMsIDAsIDAsIDAsIDc4NzcyLCAwLCAxNzM0LCAwLCAwLCAxMjcwNDAsIAorICAgIDY0NTk0LCAyNDU2LCAyMzEsIDAsIDc0MTY3LCA1NDIsIDAsIDExODc4NiwgMCwgOTgzOTcwLCAxMjMwLCAwLCAwLCAzNTk3LCAKKyAgICA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCAxMjc5MzgsIDgzNTIsIDAsIDU2ODcsIDAsIDY0NTE1LCAwLCAKKyAgICAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDAsIDAsIDcwMDgwLCA3MTMzOCwgMCwgODY2MCwgMTI2NDk1LCAKKyAgICAwLCAwLCA3ODc3MywgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAwLCAxMjAzNTgsIDE3NDYsIDEzMTUsIAorICAgIDg2NjcsIDAsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIDQ0ODAsIDExMjY2LCAxMjgxNTIsIDEyMjYsIDY5MzAsIAorICAgIDY3OTc5LCA5ODM2ODEsIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCAwLCA3NDc4NSwgNjk4NzUsIDAsIDAsIDQxNTAwLCAwLCAKKyAgICAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDc0MjgwLCAxMDg3NywgMTE4ODY4LCA2NDg4NSwgNzQyNzIsIDAsIDAsIAorICAgIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAwLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIDAsIDkyMjMxLCA1MDM3LCAwLCAKKyAgICAxNzc2LCA4NDIyLCAwLCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgCisgICAgNDYyNSwgMCwgNDYzMCwgMTMxMTcsIDAsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIAorICAgIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIAorICAgIDc3NTQsIDEwODU0LCA4NzM4LCAwLCA2NTQxOSwgMCwgMCwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDAsIDEyNjcwLCAxMDEzLCAKKyAgICAwLCA2NDkxOSwgNzA1LCAwLCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCAwLCA4MTU3LCAKKyAgICA5NzM2LCA2NDUwMywgNjU0MTgsIDAsIDk4Mzg2OSwgNzQwMzUsIDAsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMCwgODkyMCwgCisgICAgMTE5Mjk4LCAwLCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDAsIDAsIDEwMTc3LCA3Mzc3NywgCisgICAgMTg1NywgMTk0NjU3LCA0NjI2LCA4NDY0LCA4NDcyLCAwLCA0NjI5LCA4NDk5LCA3ODMyMSwgNzgzMjIsIDQ2MjQsIDc4MTgsIAorICAgIDExOTE3MywgMCwgMCwgNzgwNSwgMCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgCisgICAgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgMCwgMCwgNzgzMzYsIDc4MzM5LCA5NTQzLCAKKyAgICA3ODMzNSwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgNzc4MzEsIDk4Mzk1MiwgMCwgMTI0NTEsIDAsIDg2ODQsIDAsIDYxMDIsIDAsIAorICAgIDUyOTgsIDAsIDUyOTQsIDAsIDAsIDk4MzQ1MSwgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAxMTkyMTUsIDAsIAorICAgIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCA5ODM3NDgsIDAsIDUyOTIsIDU1MjcyLCAKKyAgICA5ODM4NzQsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3OSwgMTI0NTUsIDE3OTMsIDAsIDAsIDAsIDY2NDMsIDkyNDc3LCAKKyAgICA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDAsIDEzMjE5LCA5NTY5LCAwLCA3NDM4MywgMCwgNzQxOTcsIAorICAgIDAsIDU1MDAsIDg4MTMsIDAsIDAsIDc0NTY2LCA1MzIyLCAwLCA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCAKKyAgICA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgNDMzMjQsIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIAorICAgIDk5MjYsIDcxOTcsIDAsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCAKKyAgICA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCA0MTgxNSwgNDExNTAsIDAsIDEwNTcxLCAxMDA5NiwgCisgICAgMCwgMCwgNzgwNzQsIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCAKKyAgICA3NDQ2NiwgOTM5NjYsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIAorICAgIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCisgICAgOTgzNDUwLCA3ODQzMiwgNzgyNTYsIDc4MzUxLCA3ODM1MiwgMCwgOTgzNjQ4LCAwLCAwLCAxMzc4LCA5NTA5LCAwLCAwLCAKKyAgICA3NDQ3NSwgMzA2NiwgOTIyMjAsIDY3ODQ3LCAwLCA5MjM1NSwgMCwgNzgzNjUsIDg3ODcsIDEyMDM3OSwgMTk0NjE2LCAKKyAgICA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTk0NjE0LCAwLCA2NDY1MiwgMCwgMTk0NjEyLCAwLCA3ODM2NiwgNDIwODgsIDAsIAorICAgIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDc0NTM0LCA4MTE5LCA2NDg3NCwgCisgICAgOTE3ODE2LCAxMjcxOTksIDE5NDkzOSwgMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAxMzk0LCA3NDUxNCwgMCwgNzQ1MTUsIDAsIAorICAgIDExODgwNCwgMjk5OCwgOTUyNywgMTIwNjU5LCA2NTE5MCwgMTI5NzcsIDQyMDkwLCAxMTkxNjUsIDAsIDExOTEwMCwgCisgICAgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCA1ODQ4LCAwLCAwLCAzNjcwLCAxMjg2NTcsIDE5NDYwMCwgMCwgCisgICAgMCwgNzg5MCwgMCwgMTEyOTgsIDQzMzE1LCAwLCA2MjI5LCAxNTkzLCAwLCAwLCA2MTksIDQ2MzUsIDY1MDgwLCAwLCAKKyAgICAxMjgwMDIsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMCwgMTE4MDgsIDExOTIxNCwgNzQxMTUsIDkzNjYsIDQyNzkwLCA0MjAwNiwgCisgICAgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgNjUzMzUsIAorICAgIDY1MzM0LCA2NTMzMywgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgOTQwNDUsIAorICAgIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODIxLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIDY1MzE0LCAKKyAgICA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDAsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIDQzNTMzLCA3ODQ1OSwgCisgICAgNzE4OSwgMCwgMCwgMCwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgMCwgNDYxNSwgMTI2OTUsIDEyNzc1MiwgCisgICAgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAwLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAKKyAgICAzMjE5LCA2ODY1NCwgOTgzNzc4LCAwLCAxMDM3LCAwLCAyMDI1LCAxMjgyNjMsIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIAorICAgIDU0OSwgMTU3MCwgMCwgMjgzNSwgMCwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgMTI3MTkxLCAwLCAwLCAxMjYwNiwgNzg0MzMsIAorICAgIDI4MjUsIDAsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDk4Mzc0NCwgMTIwNTkzLCAxMzA3MSwgMCwgCisgICAgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgNjQ3MDMsIAorICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgMTY2OCwgMCwgMCwgMCwgMTE4NywgOTgzMzc3LCAKKyAgICA0MjYyOCwgNzg1NzUsIDAsIDEyODc3NywgMCwgMzI0MCwgMTI4NTE4LCAxMjE5NCwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCAKKyAgICA4MTY2LCAwLCAwLCAwLCA3NDUzNSwgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcyOTUsIAorICAgIDg5MTYsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCAwLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCAxMjczMDAsIDkyMjk2LCAKKyAgICA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDAsIDc4ODEsIDcwMSwgNjU5MzYsIDM0ODksIDAsIDAsIDEyMDc1MSwgMTE0MDMsIAorICAgIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgMCwgMzk5NCwgMTE0MjEsIDAsIDE5NTA3NiwgMCwgOTgzOTEzLCAwLCAwLCAKICAgICA2NDg1NywgMTI4MTA1LCAyODU1LCAxMjc4MjgsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIDEyNzI4MywgMTI3ODE3LCAxMDY1NCwgCiAgICAgMCwgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCA3MTgyLCAwLCAxMzAyNCwgMTk0ODIyLCAKLSAgICA3NDI3MCwgMTI4Mjg5LCAwLCAwLCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDEyNzkwNSwgODQ2NiwgMCwgCi0gICAgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDAsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMCwgNjQ2MzQsIAotICAgIDEyODI3OSwgMCwgMTE2MTIsIDAsIDY3NjAwLCAyMzc0LCAwLCA4NDc1LCAxMTYwOSwgNjYzMTMsIDAsIDAsIDUyODYsIAotICAgIDExOTI5NywgMCwgMCwgNjQ5MjUsIDEyMDI4MywgMTk0NTg0LCAxMTg5ODIsIDE5NDU4MywgNzcwNSwgMTE5NDIsIDExMzA1LCAKLSAgICAxOTQ1ODEsIDMzMDksIDAsIDAsIDAsIDAsIDY4MDIsIDAsIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgMCwgCi0gICAgNjY2MTUsIDQyNTY1LCA0MTY1MSwgMCwgMCwgMCwgNDE2NTAsIDY2NTA3LCA2NjQ3MCwgMCwgMTI5MTQsIDQxNDkxLCAKLSAgICA2NjAxMCwgMTE5NTUyLCA2MDc4LCA5OTU0LCAwLCAxNDc1LCAwLCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgCi0gICAgMCwgMCwgMzI1NiwgMTI4NjQwLCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAwLCAKLSAgICAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCAwLCAwLCAzNjM1LCAKLSAgICA2NDMzNywgMCwgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgNjU2MTMsIAotICAgIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgMCwgCi0gICAgMjAzNCwgOTI1NTEsIDEyMDgwNSwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg4NjAsIDc4NTk2LCAwLCAzNjQ5LCAKLSAgICAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDExODkyNywgNjc2NzcsIDEyMDEyNCwgNzg2NiwgMCwgMTE0MDIsIAotICAgIDQyMTQ2LCAxMjAxMzQsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIAotICAgIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCA0MTY4MCwgMCwgCi0gICAgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgMCwgMTI5ODksIDY2NDc0LCAKLSAgICA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDE5NDU2MywgMTA4MTgsIDEyODIwNywgOTk1MywgMCwgNzg0MjEsIDExOTQsIAotICAgIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCAKLSAgICA0Mjc1MiwgMTE5MDI1LCAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTk0NzY4LCAwLCA2ODM2NCwgMCwgNDg5MSwgCi0gICAgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDAsIDE5NDYzMywgNzE5OSwgNjQ5NTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQyNjg1LCA0MjY3OSwgMTkzLCAwLCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgOTIzMTgsIDkyNTE3LCAxMTg4ODIsIAotICAgIDEzNjIsIDEzMjk3LCAwLCAxMjgwOTQsIDAsIDAsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgMCwgOTIzMTksIAotICAgIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCAwLCAyNDE2LCAzMzEwLCA0MjcwMywgMCwgMzc5LCAwLCAxMjc5NzcsIDAsIDAsIAotICAgIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDAsIDAsIDAsIDEyNzc2MywgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgCi0gICAgODUxNSwgODY4OCwgMTI4NjYsIDAsIDMyOTQsIDAsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCAKLSAgICA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgCi0gICAgMzIxNSwgMCwgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIAotICAgIDY2MzU0LCAxNTAxLCAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCAKLSAgICA3NDc2LCA3NDM5OSwgMCwgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgCi0gICAgOTI1NzEsIDAsIDAsIDEwNDE0LCAxMzAwMSwgODE0MSwgMCwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIAotICAgIDY4MDUsIDg2MzEsIDI1NDUsIDEyMDY3MiwgMTI3MTY2LCAwLCA3NDE5MCwgMCwgMCwgMCwgNDI3NjIsIDAsIDQyOTE0LCAKLSAgICAxNjUwLCAyNjIsIDE2MzcsIDAsIDc5MDEsIDMyMzgsIDEyODE3MywgNDE4NjEsIDAsIDAsIDY1MTU4LCAxMDg2MCwgMCwgCi0gICAgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDAsIDAsIDExOTgxMCwgNzE5NCwgNTI5MSwgCi0gICAgMCwgNDM2NjYsIDEzMTI5LCAwLCA5MDg0LCAwLCA4NzM3LCAwLCAxMjg4MSwgMCwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIAotICAgIDAsIDAsIDAsIDAsIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAwLCAxMTg5OTYsIDExOTAwOSwgCi0gICAgMjg1MCwgODA4NCwgMCwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgMTE5ODQxLCA0MjA3MiwgCi0gICAgMTE5ODQzLCAxMTk4NDIsIDEwMzk4LCAwLCAwLCA4Mzc3LCAxMjcxMTYsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgCi0gICAgNDM1NDIsIDAsIDY0NTc4LCAwLCAzMjI4LCA2OTYzNiwgODc4MywgMCwgMTE5NjE0LCAyNzMxLCAwLCAwLCA3ODU4NSwgCi0gICAgNDEwMiwgNzY5NiwgNzM4NzgsIDAsIDAsIDc4NTg2LCA0MzMxNiwgNDE3NywgMTEyODMsIDkwODksIDAsIDczOTk2LCAwLCAKLSAgICA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAwLCAwLCA2Mzc5LCAwLCAwLCAwLCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDAsIAotICAgIDAsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDAsIDAsIDIwMzMsIDc4NTc3LCA3ODU3NiwgMTk1MDI2LCA1NTI1NCwgNzc0MCwgCi0gICAgMCwgMCwgMCwgNzM5NjQsIDAsIDAsIDY3NjEyLCA2NTY3NCwgMCwgMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgCi0gICAgMTE3OTAsIDc0MDE5LCAwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMCwgNTMyNiwgMCwgMTIwNjA1LCA3MjMwLCAKLSAgICA4MjU3LCAwLCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDAsIDc2MjgsIDY1MDkyLCA3MzkwMywgCi0gICAgNjY3MjEsIDExMzQyLCAxMjg1NjEsIDAsIDAsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIAotICAgIDAsIDAsIDExOTQ2LCAwLCAzMjU3LCAwLCAxMjMwNywgMTg0NSwgMCwgNDM1MjYsIDAsIDAsIDE4ODYsIDQyMzQyLCAxMDA4OSwgCi0gICAgODcwLCA3NjQ4LCAzNDk5LCA4NjA5LCA3NjUyLCA4NzYsIDg3MSwgODc3LCAwLCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCAKLSAgICA0NTYzLCAwLCAwLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDAsIDg2OCwgODczLCA3NjQyLCAwLCA4NjksIDg3NCwgCi0gICAgNzY0NCwgMCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDAsIDU0MjksIDAsIDY2MTgwLCAwLCA2NjE4MSwgCi0gICAgNjg0NTIsIDAsIDAsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgMTk0NjIyLCAxNTQ3LCA2NjE3NiwgNDIwMTIsIAotICAgIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgMCwgNjc2MzcsIDAsIDk2NzksIDc0MTIyLCAwLCAKLSAgICAwLCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMCwgMTg1MSwgMCwgMTI3MTg5LCAKLSAgICAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAwLCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgCi0gICAgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCAxMTk5NzQsIDAsIDAsIDEyMDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQyNywgCi0gICAgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAwLCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCAwLCAwLCA3OTMsIAotICAgIDc0NDA0LCAwLCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgMTI4NTE5LCA4MjA4LCAwLCA0MTY5NSwgMTY0NywgMTE4ODc3LCAwLCAKLSAgICA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgOTE3NjIyLCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDkxNzYxOCwgMTIwNTk0LCAKLSAgICA3NDA4NiwgOTE3NjE1LCA5MTc2MTQsIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgCi0gICAgMTI1NCwgOTE3NjA1LCA5MTc2MDQsIDkxNzYwMywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIDAsIDAsIDI4NDAsIDAsIAotICAgIDExOTk4MiwgMCwgMCwgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAwLCAwLCAxMjk5MSwgMCwgMjY1MSwgMTI4NTI4LCAwLCAKLSAgICA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIAotICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAKLSAgICAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKLSAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgCi0gICAgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIDAsIDQzMzcyLCA2NTk0NSwgMTI4ODM4LCAwLCAKLSAgICAxMTk1OTAsIDAsIDAsIDAsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgMCwgCi0gICAgMTI4Mjk3LCAwLCAwLCAwLCAwLCAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIAotICAgIDQ2MjcsIDAsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDUyMTgsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCAKLSAgICA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNzQwMzMsIDEwNTE2LCA3NzkwLCA1NTI4LCAwLCA0MjE0MCwgCi0gICAgMTIwMjgxLCAwLCAwLCA0MzU0NSwgOTg4NywgMCwgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAotICAgIDc4ODQsIDAsIDEyODU2NiwgOTE3OTg5LCAxMjg2NjYsIDIxMSwgMjUwOSwgMCwgMTIwNTczLCA2ODY3MiwgMzIyMCwgCi0gICAgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCA1ODUyLCAwLCAKLSAgICAwLCAxMjcyNTksIDE3MDgsIDAsIDAsIDI2MjMsIDExOTQzLCAwLCA2OTIyNiwgMCwgNDY5OCwgNjY1MDksIDEwNjYsIAotICAgIDExOTkyMSwgNDcwMSwgMCwgMTIwMjg1LCA3NDIyNSwgMTE5MTE0LCA4MjY3LCAwLCAxMjcyNjUsIDAsIDc1MTYsIDAsIAotICAgIDI2MjUsIDAsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCAwLCAwLCA0MzM4NCwgCi0gICAgMTI2NjAsIDAsIDAsIDAsIDc0ODUwLCA0MTA2OSwgMCwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgCi0gICAgNzk5MCwgMCwgMzk5MCwgMCwgMCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgCi0gICAgMCwgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIAotICAgIDk0LCAxODgwLCA3NDc2NiwgMCwgODkwOCwgMCwgMTI4NzA3LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgMCwgMCwgCi0gICAgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMCwgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIAotICAgIDEyODA1NSwgMCwgMTI3ODgzLCAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgCi0gICAgOTM2LCAxMzI4OSwgMTI3NTIxLCA0MzE3MSwgMTQ1OSwgMCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMCwgMTUwNCwgMTE5MTA4LCAKLSAgICAwLCAxMjkxMywgNzQyMDYsIDc1MjksIDAsIDAsIDAsIDEyMDc4MiwgNDExMywgMCwgMjM3MiwgMzM2LCAwLCA3NTA5LCAKLSAgICAxMjE1MiwgMCwgNjgyLCA2NjQ1OCwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgMCwgMCwgODAzMywgMCwgMCwgCi0gICAgOTgxMCwgMTI3MjY5LCAwLCAxMjk3MCwgMCwgNDIzNTEsIDEwMTA5LCAwLCAwLCAxOTQ2OTMsIDAsIDExOTI0NywgMCwgMCwgCi0gICAgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAwLCAKLSAgICAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDAsIAotICAgIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCAKLSAgICA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgMCwgMCwgMTI4MTM1LCA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCAKLSAgICA0MTAzOSwgMCwgMCwgNjgwLCA2Mjc0LCAxMjgyMDAsIDExODEsIDcwNTYsIDMxNzQsIDAsIDAsIDkyNjY4LCA2NTY2NSwgCi0gICAgMTI3Mzc1LCAwLCA2OTIwLCAwLCA5MjI5NSwgMCwgMTE4OTY1LCAwLCA2NDY0NCwgMTI2OTgxLCAwLCAwLCA0MTAyOCwgMCwgCi0gICAgNjIzMSwgMjYxMywgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCAwLCAwLCA0MDk4NywgNDY2NywgMCwgCi0gICAgMCwgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIAotICAgIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCAKLSAgICA1MzEzLCA5NTEsIDAsIDAsIDAsIDc2MDQsIDAsIDQwMDksIDEyNzgxNiwgMCwgMTIwNTYyLCAwLCAwLCA2NDg2MCwgCi0gICAgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgMCwgMCwgMTIwNTk2LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAKLSAgICAxMjA3MDUsIDAsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAKLSAgICAyOTc1LCA3NDQ0MiwgOTgyMiwgMCwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDAsIDMzOTksIAotICAgIDk4NTEsIDAsIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzc3LCA5MTUxLCAKLSAgICAxMTM3LCA2OTc2NywgNzQ5LCA0MjM2NiwgMCwgNTM4NSwgMTI4NTc0LCAxMjgyMTgsIDAsIDAsIDU5ODksIDAsIDAsIAotICAgIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgMCwgNTE5LCAwLCAxMTc0MCwgNTc2NiwgMCwgMCwgCi0gICAgMjYwMCwgODg0OCwgMTIwMTM4LCA0MTI5NywgMCwgMzY2NiwgNzQ0NzMsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCAKLSAgICA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDAsIDAsIDY5NzY1LCAxMjA3NTAsIDI1MiwgMCwgNDEzMDIsIDAsIDAsIDAsIAotICAgIDY5NzYzLCAwLCAxMTcyOSwgODcxOSwgOTA2MCwgMCwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgMCwgCi0gICAgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCA3NzY0LCAwLCAKLSAgICAxMTA5NCwgMTIwODI1LCAwLCAwLCA0MjgyLCA4Mjk4LCAwLCAwLCAwLCAwLCAwLCA2NDQ0OSwgMCwgMTI3NTA5LCA2Mzg1NCwgCi0gICAgODQ1NiwgMCwgNzQ3ODMsIDY1NjcwLCAwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDAsIDAsIDAsIDAsIAotICAgIDEyMDc2NCwgMCwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCAwLCAwLCAzNjQ3LCAwLCAyNjAyLCAxMjgzNDEsIDAsIAotICAgIDE5NDcwNywgNDExMzUsIDAsIDAsIDAsIDY0NjMxLCAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgCi0gICAgMCwgOTIxOTMsIDc1OTcsIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIAotICAgIDkwNjIsIDExOTI1MiwgMCwgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgCi0gICAgMTI2MywgMzcyMCwgMTIwNDgsIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAKLSAgICAxMjczNDUsIDI5OSwgMCwgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIAotICAgIDY3ODY3LCAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgCi0gICAgNjUxMTQsIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAwLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCAKLSAgICA3MjA0LCAwLCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIAorICAgIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCAKKyAgICA5ODM1NzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCAwLCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDAsIAorICAgIDY0NjM0LCAxMjgyNzksIDAsIDExNjEyLCAwLCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgCisgICAgNTI4NiwgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgCisgICAgMTEzMDUsIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAKKyAgICAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIAorICAgIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCisgICAgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAKKyAgICAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMCwgCisgICAgMzYzNSwgNjQzMzcsIDk4MzI3MywgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgCisgICAgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgCisgICAgNDE3NiwgNzAwNTAsIDIwMzQsIDkyNTUxLCAxMjA4MDUsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCAKKyAgICA3ODU5NiwgMCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIAorICAgIDc4NjYsIDAsIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgCisgICAgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCAKKyAgICA0MTY4MCwgMCwgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgCisgICAgMTk0NTY3LCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCAxMjY2NDQsIAorICAgIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAKKyAgICAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgCisgICAgMCwgNjgzNjQsIDk4MzIyMiwgNDg5MSwgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgCisgICAgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgMCwgMCwgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCAKKyAgICA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgMTM2MiwgMTMyOTcsIDAsIDEyODA5NCwgMCwgOTgzMzIzLCA3Mzc4OSwgMCwgCisgICAgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDk4MzgzMywgOTIzMTksIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCA5ODMzMjIsIAorICAgIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIDQzNzU1LCAwLCAwLCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKKyAgICA0NTQ5LCAwLCAwLCA5ODMxNTQsIDEyNzc2MywgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgODUxNSwgODY4OCwgMTI4NjYsIAorICAgIDY1MzA4LCAzMjk0LCA5ODMzMjQsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCA5MjQ1OCwgCisgICAgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgMzIxNSwgMCwgCisgICAgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIDY2MzU0LCAxNTAxLCAKKyAgICAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgCisgICAgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgNzc5NzksIDAsIDEyNjUwNywgCisgICAgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgCisgICAgMjU0NSwgNzAwNTIsIDEyNzE2NiwgMCwgNzQxOTAsIDAsIDAsIDk4Mzc3NywgNDI3NjIsIDAsIDQyOTE0LCAxNjUwLCAyNjIsIAorICAgIDE2MzcsIDAsIDc5MDEsIDMyMzgsIDEyODE3MywgNDE4NjEsIDAsIDEyODU4NSwgNjUxNTgsIDEwODYwLCA5NDA1OSwgCisgICAgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAwLCAxMTk4MTAsIDcxOTQsIAorICAgIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMCwgOTA4NCwgMCwgODczNywgMCwgMTI4ODEsIDAsIDEyOTA2LCA5NjM5LCA3OTEyLCAKKyAgICAyNjIwLCAwLCAwLCAwLCA5ODM4NjYsIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCA5ODM4ODEsIAorICAgIDExODk5NiwgMTE5MDA5LCAyODUwLCA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgCisgICAgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIDExOTg0MywgMTE5ODQyLCAxMDM5OCwgOTgzMDU2LCAwLCA4Mzc3LCAxMjcxMTYsIAorICAgIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIAorICAgIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgCisgICAgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgNDM1NDIsIDAsIDY0NTc4LCA5ODM2NjYsIDMyMjgsIDY5NjM2LCA4NzgzLCAKKyAgICAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCAKKyAgICA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIDk4MzE3MywgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgCisgICAgNjM3OSwgMCwgMCwgMCwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMjczODAsIDk4MzkyMiwgOTIzODksIDc0MDcyLCA1NTI2OSwgCisgICAgMCwgMCwgOTgzNjc0LCAyMDMzLCA3ODU3NywgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIDAsIDAsIDAsIDczOTY0LCAwLCAKKyAgICA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAxMjgyNDQsIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgCisgICAgNzQwMTksIDAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDAsIAorICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCA2NjcyMSwgCisgICAgMTEzNDIsIDEyODU2MSwgMCwgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgOTgzOTQyLCAKKyAgICAxMjY0NjksIDExOTQ2LCAwLCAzMjU3LCAwLCAxMjMwNywgMTg0NSwgOTgzMTU3LCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIAorICAgIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgCisgICAgNDM2OTIsIDQ1NjMsIDAsIDAsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMTI2NjA3LCA4NjgsIDg3MywgNzY0MiwgCisgICAgMCwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDk4MzI1MCwgCisgICAgNTQyOSwgMTk1MDU1LCA2NjE4MCwgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI4MSwgOTgzMjQyLCA0MjA2NywgMCwgCisgICAgNTQzMywgMTA2NTcsIDc5MTEsIDE5NDYyMiwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIAorICAgIDUzMTcsIDU0MjMsIDQ2MTEsIDAsIDY3NjM3LCAwLCA5Njc5LCA3NDEyMiwgMCwgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKKyAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDAsIDE4NTEsIDAsIDEyNzE4OSwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgCisgICAgOTgzMjcwLCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCAKKyAgICA2OTg4MSwgMCwgOTgzMTQyLCAxMjA2MDQsIDk4MzA1MiwgOTgzODczLCAwLCA5ODMyNjIsIDAsIDAsIDc0MjcsIDk5NTgsIAorICAgIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTk0OTY4LCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCA5ODM4NzYsIDAsIAorICAgIDc5MywgNzQ0MDQsIDAsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAKKyAgICAxMTg4NzcsIDAsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgCisgICAgMTI2NTc2LCAxMjA1OTQsIDc0MDg2LCA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIAorICAgIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDkxNzYwNCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAKKyAgICAxMjY2MTIsIDAsIDI4NDAsIDAsIDExOTk4MiwgOTgzOTMwLCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIAorICAgIDEyOTkxLCAwLCAyNjUxLCA2ODAxNiwgOTgzMjU3LCA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgCisgICAgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIAorICAgIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIAorICAgIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIAorICAgIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIAorICAgIDk4MzE5MiwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgCisgICAgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIAorICAgIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgOTgzODgzLCA1MjA4LCAwLCAxMjg4NDIsIDEwMzMyLCA1MjE4LCAKKyAgICA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNzM4OTQsIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIAorICAgIDc0MDMzLCAxMDUxNiwgNzc5MCwgNTUyOCwgMCwgNDIxNDAsIDEyMDI4MSwgMCwgMCwgNDM1NDUsIDk4ODcsIDAsIDQwMDAsIAorICAgIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDkxNzk4OSwgMTI4NjY2LCAKKyAgICAyMTEsIDI1MDksIDEyODg1OCwgMTIwNTczLCA2ODY3MiwgMzIyMCwgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCAKKyAgICA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCA1ODUyLCAwLCAwLCAxMjcyNTksIDE3MDgsIDAsIDk4MzE2NSwgCisgICAgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NjcsIAorICAgIDEyMDI4NSwgNzQyMjUsIDk0MTExLCA4MjY3LCAwLCAxMjcyNjUsIDAsIDc1MTYsIDAsIDI2MjUsIDk4Mzk2OCwgODAzNCwgCisgICAgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAxMjY2MCwgMCwgMCwgCisgICAgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCAwLCAzOTkwLCAKKyAgICAwLCA5ODMyNTQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgMTE5MTQ0LCAxMDMwLCAxMTg4MDAsIDk4MzEyMCwgCisgICAgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIDk0LCAKKyAgICAxODgwLCA3NDc2NiwgOTgzODI5LCA4OTA4LCAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAKKyAgICAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzgsIDAsIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzNSwgNjQ3ODUsIDczOTQsIAorICAgIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgCisgICAgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAKKyAgICAxNTA0LCA3MDA2NCwgMCwgMTI5MTMsIDc0MjA2LCA3NTI5LCAwLCAxMjg2OTksIDk4Mzk0OCwgMTIwNzgyLCA0MTEzLCAwLCAKKyAgICAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAwLCA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKKyAgICAwLCA5ODM5NDYsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIAorICAgIDkxNzYyMywgMCwgMTk0NjkzLCAwLCA5MjY5MCwgMCwgMCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgCisgICAgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAwLCAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgCisgICAgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDAsIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCAKKyAgICA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgOTgzNzEwLCAKKyAgICAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDQxMDM5LCAxMjc0ODMsIDAsIDY4MCwgMjMwMiwgCisgICAgMTI4MjAwLCAxMTgxLCA3MDU2LCAzMTc0LCAxMjY1MTYsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMjY1MDYsIDY5MjAsIAorICAgIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCAwLCA0MTAyOCwgMCwgNjIzMSwgMjYxMywgCisgICAgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCA5ODM1NjYsIDAsIDQwOTg3LCA0NjY3LCAwLCA5ODM5MjMsIAorICAgIDg4MjgsIDAsIDAsIDEyNDYsIDQ3NDYsIDAsIDAsIDExMDIxLCA0NzQ5LCA5MjY3NSwgMCwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgCisgICAgMjQyLCAwLCAxNTY2LCA4MjE3LCAwLCA2NDY1MywgNzgzODYsIDEyODEyMSwgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgCisgICAgOTUxLCAwLCAwLCA5ODM4NTgsIDc2MDQsIDk4MzI4MiwgNDAwOSwgMTI3ODE2LCA5ODM3MDEsIDEyMDU2MiwgMCwgOTgzNzExLCAKKyAgICA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCAwLCA3MDAyNCwgMTY0NiwgNzc4OTAsIAorICAgIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAwLCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIAorICAgIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkyNiwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCAKKyAgICA5MTc1NjIsIDE5NDYxMCwgMzM5OSwgOTg1MSwgOTgzNzA4LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMCwgMCwgCisgICAgMCwgNzEzNjcsIDAsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIAorICAgIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAKKyAgICA5ODMyMTQsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIAorICAgIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgCisgICAgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAwLCA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgCisgICAgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIDk4MzIyMSwgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCAKKyAgICA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCA3NzY0LCA5ODM3MDUsIDExMDk0LCAxMjA4MjUsIDAsIDAsIDQyODIsIAorICAgIDgyOTgsIDAsIDAsIDAsIDAsIDAsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCAwLCA3NDc4MywgNjU2NzAsIDAsIAorICAgIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMCwgMCwgMCwgMCwgMTIwNzY0LCAwLCAxMDAxOSwgNzQ3NjIsIDAsIAorICAgIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MDMsIDM2NDcsIDAsIDI2MDIsIDEyODM0MSwgMCwgMTk0NzA3LCA0MTEzNSwgMCwgMCwgCisgICAgMCwgNjQ2MzEsIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDkyMTkzLCA3NTk3LCAKKyAgICAxMDUyOCwgMCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgMCwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIDAsIAorICAgIDAsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgMCwgMCwgMTk0NzEyLCAxMDkwMCwgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCAKKyAgICAwLCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIAorICAgIDkxNzk1NywgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIDY3ODY3LCAKKyAgICAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgNjUxMTQsIAorICAgIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAwLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCA3MjA0LCAKKyAgICA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCAKICAgICA3Mzc3NCwgMTA5MTMsIDAsIDAsIDg2NjYsIDY3NSwgNDI0OTMsIDAsIDQzNTcxLCAwLCA2MjE5LCAwLCA5OTgwLCA0MTIzMiwgCi0gICAgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCAxMjczNjksIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgCi0gICAgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgMCwgMCwgMCwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgCi0gICAgMCwgMCwgNjQ2NzQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgMCwgCi0gICAgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIDExOTMyLCAKLSAgICA3MzcyOCwgMzIxNCwgMTIwNDYxLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCAKLSAgICAxMjczMjYsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgMCwgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDc4NzMzLCA2NTQ1OSwgCi0gICAgMjYwNiwgNzg3MzAsIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgMCwgMCwgMCwgMTIwNzM3LCAwLCAKLSAgICAwLCAwLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAwLCA2NTY5NSwgMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgMTIwNDc5LCAKLSAgICAzMjA5LCAxMjA0NzcsIDAsIDEwNjM4LCA5NzY4LCAxMjA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NTEwLCAwLCAwLCAKLSAgICA1MjMzLCAwLCA2NDc5MiwgMCwgMCwgMCwgMCwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIDczOTcxLCAKLSAgICAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgMCwgMCwgMCwgMzI0MywgOTAxNCwgCi0gICAgNTYwNiwgMCwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgNzQzOTEsIDY1NDcsIDAsIDgyMDMsIDc4NDg4LCAwLCA4NDU4LCAKLSAgICA2NTIxMSwgODQ5NSwgMTE5OTA0LCAwLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCAwLCA4MTkzLCA1NTI3OSwgCi0gICAgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCAKLSAgICA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCA2ODY1MCwgMCwgMTgzMiwgNTYwNCwgCi0gICAgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgMCwgMTE3ODcsIDM3NDUsIDAsIDAsIDQyODg4LCA2NTcxMiwgMCwgMzg2OSwgCi0gICAgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgCi0gICAgNTcyNywgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAKLSAgICAxMjA3NDksIDExNDIzLCAwLCAxMTk4NjEsIDAsIDQzNDY1LCAwLCAxMjgyNjcsIDY1NTksIDY0NTU3LCAwLCAwLCAxMjA2NDgsIAotICAgIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDAsIDAsIDQzMzc3LCA5MjI4MiwgMCwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIAotICAgIDY0NzQwLCAwLCA3NzM5LCA3NDU0MywgMCwgMCwgMCwgNjEzMiwgMCwgNjM3NjUsIDAsIDAsIDQxMTQ0LCAwLCA5MjQzOCwgCi0gICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDAsIDAsIDg4MjAsIDM5NDcsIDAsIDAsIDExNTE1LCA1MjYsIDAsIAotICAgIDQxMjk1LCAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCAKLSAgICAwLCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIAotICAgIDExNzk0LCA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIDkzMzUsIDEyODUwLCAxMTk4NzAsIAotICAgIDY1NTMsIDcwNTUsIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAxMjk5MCwgMTE2MCwgNDIwODQsIAotICAgIDExOTY1MCwgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDAsIAotICAgIDQxMjE2LCA3ODQ0LCAyNjE2LCAxMTkxOTAsIDY4NDYxLCA2NTIzNCwgMCwgMTMwNzYsIDMxMzUsIDAsIDc4MTQzLCAKLSAgICAxMTkxMzksIDMxNDIsIDkyNDUxLCAwLCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgNzM5NjcsIDAsIAotICAgIDYyMjcsIDAsIDAsIDY5NzQxLCAwLCA2MTYzLCAwLCAwLCAxMjczMTQsIDAsIDAsIDg2MDMsIDAsIDExOTg2NiwgMzMwNiwgCi0gICAgMTA4NzYsIDQzMzkyLCAxMTk1NzMsIDEyNzkzMSwgNTc1MSwgMCwgNjIyMiwgMCwgMCwgMTIwODYsIDc0MDMsIDE2MDAsIAotICAgIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMCwgMCwgMjU3MCwgNzAyMSwgMCwgMCwgCi0gICAgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDAsIDAsIDAsIDUwMDIsIDAsIDQxMjg2LCAwLCAxMjcwMTksIDAsIDQzNTg1LCAKLSAgICAwLCA2NTUxLCAwLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIAotICAgIDEyODY2MSwgMCwgMCwgNDEyNzksIDAsIDAsIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgMCwgMTI3MjcsIDAsIDAsIAotICAgIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCAwLCAxOTQ1NzEsIDAsIAotICAgIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAyNTk2LCA0MzU4NCwgMCwgMTMxMTMsIAotICAgIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCA0MTU3NCwgNzgzMzcsIDAsIDc0MDU4LCA2Mzc2LCAKLSAgICAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCAwLCAxMjgyMjAsIDAsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIAotICAgIDY1MjksIDcwNjMsIDAsIDM3NTEsIDkxMjAsIDAsIDAsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIAotICAgIDEyNDMwLCA4MTM3LCAwLCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgMCwgNjEzNiwgCi0gICAgOTE3NjA5LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMCwgNDMyLCAzNTk1LCAwLCA2NTQzNywgCi0gICAgMCwgNzQ0NTUsIDQyMzk5LCAwLCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMCwgMCwgMCwgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIAotICAgIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgMCwgNjQ2NDAsIDAsIDExOTEwNCwgMCwgCi0gICAgNzQxMzcsIDAsIDEwMDYzLCAxMjY1MiwgMTIxOTksIDkyNDgwLCAwLCAyNTY2LCAxMTk3MSwgMCwgMCwgMTA2NSwgMCwgMCwgCi0gICAgNDM0MDAsIDI1NzYsIDY2Njk2LCAwLCAwLCA0MzYwNCwgMCwgMCwgNzQwODIsIDUxNCwgNzQ1MDIsIDAsIDI5MjEsIDQzMjE1LCAKLSAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDAsIDE5NDk0NCwgNzQ1ODAsIDQzMzk4LCAyNTgwLCAwLCA0MTM0MSwgNDEyMjMsIDY1NjQsIAotICAgIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCAwLCAwLCAzNzMzLCAxMTM0NiwgMCwgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMCwgCi0gICAgMTMwOTEsIDAsIDAsIDAsIDkxNzkxNSwgMCwgMTI3MDI1LCAwLCA3NDgyMSwgMCwgMCwgMTE5MDQyLCAwLCAxMjc4NjUsIAotICAgIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgCi0gICAgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMCwgMCwgMCwgMCwgNjQ0OTYsIDc0MTA5LCAwLCA5OTE1LCAwLCAwLCAKLSAgICA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgMCwgNzA2NywgCi0gICAgNjgyMjEsIDAsIDAsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCAKLSAgICA3NDc5MiwgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAotICAgIDc4MTE2LCA2NTIzMywgMCwgNDEyMjQsIDQxMDE3LCAwLCAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDAsIAotICAgIDEyMTA3LCA0NDAwMiwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAKLSAgICAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAKLSAgICAwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCAxMjgwMzksIAotICAgIDcxMjMsIDAsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgCi0gICAgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgMTkxLCA3NDExOSwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIAorICAgIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgCisgICAgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgOTgzMzcxLCAwLCA5ODMyMjAsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgCisgICAgNzIzNCwgNzQwNDcsIDk4MzA4OCwgMCwgNDM3NDQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIAorICAgIDQzOTgzLCA3NDUwNywgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCAKKyAgICA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCAKKyAgICA3ODcyOSwgMTkwMSwgNzg3MjcsIDEyNzMyNiwgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCAKKyAgICA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIAorICAgIDExOTY2MSwgMCwgMCwgOTgzMzEzLCAxMjA3MzcsIDAsIDk4Mzk2MiwgOTgzMzEyLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAKKyAgICA5ODMzMTcsIDY1Njk1LCAxMjY1NTksIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDEyMDQ3OSwgMzIwOSwgMTIwNDc3LCAwLCAKKyAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgOTgzMzkxLCAwLCAwLCAwLCAwLCA2NTUxMCwgMCwgMCwgNTIzMywgCisgICAgOTgzMzI3LCA2NDc5MiwgOTgzMzI2LCAwLCAxMjY2MzMsIDAsIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCAKKyAgICA3Mzk3MSwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIAorICAgIDkwMTQsIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCA2NTQ3LCAxMjgxMzIsIDgyMDMsIDc4NDg4LCAKKyAgICA5ODMwOTAsIDg0NTgsIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIAorICAgIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIAorICAgIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCAKKyAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAKKyAgICAwLCA0Mjg4OCwgNjU3MTIsIDk4MzI5NiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIAorICAgIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgNTcyNywgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgCisgICAgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCAwLCAxMTk4NjEsIDcxMzQ0LCA0MzQ2NSwgMCwgCisgICAgMTI4MjY3LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAwLCAKKyAgICA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAKKyAgICAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgNzAwNTgsIDQxMTQ0LCAwLCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCAKKyAgICA0MzY5LCA5MTc3OTEsIDAsIDk4MzE0OCwgODgyMCwgMzk0NywgMCwgMCwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgCisgICAgMTk0NjAzLCA5MTc3ODUsIDE5NDkzMiwgMCwgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgMCwgMCwgOTgzMzc0LCAKKyAgICAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIDExNzk0LCAKKyAgICA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIDkzMzUsIDEyODUwLCAxMTk4NzAsIDY1NTMsIDcwNTUsIAorICAgIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAxMjk5MCwgMTE2MCwgNDIwODQsIDExOTY1MCwgCisgICAgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgCisgICAgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCA5ODMyODYsIDEzMDc2LCAzMTM1LCA5ODMyNzksIAorICAgIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDAsIDI2MDgsIDE0NzAsIAorICAgIDczOTY3LCA5NDAwOCwgNjIyNywgMCwgMTI3MTczLCA2OTc0MSwgOTgzNTgyLCA2MTYzLCA5ODM1NTgsIDAsIDEyNzMxNCwgMCwgCisgICAgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDExOTU3MywgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAKKyAgICAwLCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAKKyAgICAwLCAyNTcwLCA3MDIxLCAwLCAwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgMCwgMCwgOTgzMjA5LCA1MDAyLCAwLCAKKyAgICA0MTI4NiwgNjk5NDYsIDEyNzAxOSwgMCwgNDM1ODUsIDAsIDY1NTEsIDk4Mzk1MywgMTI4MjI5LCAwLCA0MTI4OSwgMCwgCisgICAgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAxMjg2NjEsIDAsIDk4MzM2NywgNDEyNzksIDAsIDAsIAorICAgIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAKKyAgICAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyMCwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIAorICAgIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIDAsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIAorICAgIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCA3NDA1OCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgCisgICAgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxODIsIAorICAgIDM3NTEsIDkxMjAsIDk4MzQ3NywgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIAorICAgIDgxMzcsIDk0MDk4LCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIAorICAgIDYxMzYsIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAKKyAgICAxOTQ5NDUsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgCisgICAgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgCisgICAgMCwgOTQxMDksIDAsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCAKKyAgICA5ODM3MjgsIDAsIDEwNjUsIDAsIDAsIDQzNDAwLCAyNTc2LCA2NjY5NiwgOTM5OTksIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgCisgICAgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDc0NTgwLCAKKyAgICA0MzM5OCwgMjU4MCwgOTgzODAxLCA0MTM0MSwgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMCwgCisgICAgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDAsIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIAorICAgIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDk4MzcyNCwgMTE5MDQyLCAwLCAxMjc4NjUsIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgCisgICAgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCAKKyAgICA0MjQzMiwgMCwgMCwgMTk0NzgyLCAwLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCAwLCA5ODMyMTYsIDcwNjEsIAorICAgIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCA2ODIyMSwgMCwgCisgICAgMTI3MzgzLCAxMjcxNzEsIDAsIDAsIDEyNzc5NywgOTAyOSwgNDM1NDMsIDExOTMxNSwgMjM1MywgNjMwOCwgMCwgNzQ3OTIsIAorICAgIDI2MTEsIDExOTE4NiwgMCwgMCwgMCwgNDM2NjQsIDkyMzk5LCA2NjYyNywgMCwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgCisgICAgNjUyMzMsIDAsIDQxMjI0LCA0MTAxNywgMCwgMzc0NywgMTA1MjIsIDAsIDAsIDE2OTEsIDQxMjI2LCAwLCAxMjEwNywgCisgICAgNzEwMCwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAxMzEyMSwgCisgICAgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAwLCAKKyAgICAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgCisgICAgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgCisgICAgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIAogICAgIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDAsIDQxNTc3LCAwLCAxMDAwMiwgMCwgNjUzMywgNzM4MDIsIDQxNTcwLCAwLCA2ODMsIAogICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCAwLCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgMCwgCi0gICAgNDc0MywgMCwgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDkyNTE0LCAKLSAgICAwLCAzOTY0LCA2NTkyLCAwLCAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDAsIDE3NzgsIDM5NTYsIDAsIAotICAgIDQyMDcwLCA2NTYzLCA0MzA3NSwgOTAxOCwgMCwgMCwgMTIwNjcsIDQxMzEyLCAwLCA1NTQ3LCA3NDUzMSwgMTI3OTY5LCAwLCAKLSAgICA4MTc1LCAwLCAyODQsIDgxMDgsIDkzNCwgMCwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAxMTg4MjIsIDE3NTAsIAotICAgIDAsIDQzOTQsIDY4MzY4LCAxODA3LCAwLCA5MjI5OCwgMCwgNTg4OSwgMCwgNzE4MCwgMCwgMTE5MTQ1LCAwLCA5MTc1NTgsIAotICAgIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAKLSAgICAxMjgxMDksIDAsIDAsIDM4NTUsIDAsIDAsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgMzk3NSwgMCwgNzQwODcsIDAsIAotICAgIDEyNjcyLCAzNzk4LCAyNzAzLCAwLCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCA0MTA5NSwgMzk2MiwgMCwgMjkzMiwgCi0gICAgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMCwgMCwgNDE4NTEsIDEyODIzMCwgCi0gICAgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIDEyODAzMiwgMCwgNDI1MzEsIDAsIAotICAgIDE1MTAsIDAsIDgyNTYsIDAsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCAwLCAwLCA3ODM3NywgMTkxMCwgCi0gICAgODY3MSwgNzgzNzQsIDQyODMsIDAsIDEyNzExNywgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDcsIDAsIDAsIDAsIAotICAgIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgMCwgMCwgCi0gICAgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgNzM5NiwgNzExNiwgMCwgCi0gICAgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDAsIDAsIDkyMzQ3LCAwLCA0MTM1MCwgOTEyOSwgMCwgMCwgMCwgMCwgOTI0ODksIDAsIAotICAgIDEwNDgxLCAwLCAxMjc0ODYsIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDAsIDAsIDAsIDkyMjAwLCAwLCAwLCA2NzY0LCAKLSAgICAxMjc0ODcsIDAsIDAsIDAsIDAsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDAsIDMyMTAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNzk3MCwgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI4MjQ0LCAKLSAgICAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgCi0gICAgMTIwNTM1LCAwLCA4NjMwLCAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCAwLCAwLCAKLSAgICAwLCAwLCA2NDI5MywgNjgwOTgsIDI2MzUsIDAsIDAsIDAsIDAsIDAsIDc4MzUsIDAsIDAsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCAwLCAwLCAwLCAwLCA0MDExLCA5MTc2MTYsIAotICAgIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgMCwgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgNTU5OCwgMTIwNywgCi0gICAgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAxOTQ3ODAsIDAsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCAKLSAgICA5MzIxLCAwLCAwLCAwLCAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDEyNzQ3OSwgOTE3NjEwLCAKLSAgICAwLCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgCi0gICAgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgCi0gICAgOTg3NSwgNzU5MywgMTk0NzkyLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgCi0gICAgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAKLSAgICAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjcwMDIsIAotICAgIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCAwLCA5MjUxNSwgNjg0NzUsIDAsIDAsIDAsIDc4NjM3LCAxMjY0NywgCi0gICAgMCwgMTI4MDQzLCAwLCAxMDM2LCAwLCA5MjQxOSwgMTcyMywgMTI4MDU2LCAwLCAwLCA0MTU3OSwgMjQ0NCwgMCwgMTA3MDUsIAotICAgIDczODc2LCAwLCA3NDQ4NiwgMCwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgCi0gICAgNjg0MzcsIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIAotICAgIDExOTA3LCAxOTUwMDAsIDU2OTAsIDkyMjU1LCAwLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIAotICAgIDk1MDYsIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIAotICAgIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCi0gICAgMTI2MDIsIDAsIDAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgCisgICAgNDc0MywgMCwgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDcxMzQ5LCAKKyAgICAwLCAzOTY0LCA2NTkyLCAwLCAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMCwgCisgICAgNDIwNzAsIDY1NjMsIDQzMDc1LCA5MDE4LCA5NDAwNiwgOTgzMzg4LCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAKKyAgICAxMjc5NjksIDAsIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAorICAgIDExODgyMiwgMTc1MCwgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg3OSwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIAorICAgIDExOTE0NSwgMCwgOTE3NTU4LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgCisgICAgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCAwLCAzODU1LCAwLCAwLCAwLCAwLCA3NDI5NSwgMCwgMCwgOTI0MTYsIAorICAgIDM5NzUsIDAsIDc0MDg3LCAwLCAxMjY3MiwgMzc5OCwgMjcwMywgOTgzNTk5LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCAKKyAgICA0MTA5NSwgMzk2MiwgMCwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgCisgICAgMCwgMCwgNDE4NTEsIDEyODIzMCwgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIAorICAgIDEyODAzMiwgMCwgNDI1MzEsIDExOTEwOCwgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgCisgICAgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgCisgICAgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgCisgICAgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgCisgICAgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgCisgICAgOTIzNDcsIDk4MzA4NywgNDEzNTAsIDkxMjksIDAsIDAsIDIyOTQsIDAsIDkyNDg5LCAwLCAxMDQ4MSwgMCwgNzAwMjIsIAorICAgIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDkzOTcyLCAwLCAwLCA5MjIwMCwgMCwgMCwgNjc2NCwgMTI3NDg3LCAwLCAwLCAwLCAwLCAKKyAgICA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAwLCAzMjEwLCAwLCAwLCAxMTg3OTUsIDAsIDAsIDEyNzk3MCwgCisgICAgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI2NjQyLCAzNjc1LCA1MjA3LCAKKyAgICA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAKKyAgICAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCA3MTMzNiwgMCwgMCwgMCwgNjQyOTMsIAorICAgIDY4MDk4LCAyNjM1LCAwLCAwLCA5ODM4MzcsIDAsIDk4MzYzMiwgNzgzNSwgNzAwNDAsIDAsIDE5NDk4OCwgOTIyODUsIAorICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCA5ODMxMDIsIDAsIDAsIDcwMDMzLCA0MDExLCAKKyAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDg4LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKKyAgICA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgCisgICAgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ3NiwgOTgzNDczLCA5ODM0NzQsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgCisgICAgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIDk4MzQ4MCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCAKKyAgICA1NDkxLCAwLCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIAorICAgIDYzMDAsIDAsIDcxMjIsIDAsIDQzOTAsIDQ1NCwgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgCisgICAgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIDAsIDM3NDYsIDExMDE2LCA2NTc1MiwgMTIwMDM3LCAwLCA0MzQyMywgCisgICAgMTI4NjgzLCAxMTk4OSwgMCwgMCwgMCwgMCwgMCwgODI0OSwgMTI4MTcyLCAwLCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAorICAgIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgMTIwNzEwLCA2NTAwOCwgMCwgMTk0Nzg0LCAxOTQ5ODksIDE5NDc5NSwgOTgzNDY1LCAKKyAgICA5MjUxNSwgNjg0NzUsIDkzOTczLCAwLCAwLCA3ODYzNywgMTI2NDcsIDAsIDEyODA0MywgNjk4OTMsIDEwMzYsIDk4MzQ2OSwgCisgICAgOTI0MTksIDE3MjMsIDEyODA1NiwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgNzM4NzYsIDk4MzQ2MSwgCisgICAgNzQ0ODYsIDk4MzQ1OSwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNjg0MzcsIAorICAgIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIDExOTA3LCAKKyAgICAxOTUwMDAsIDU2OTAsIDkyMjU1LCA5Mzk5MiwgMCwgNDMxODEsIDEzMDk1LCAwLCAxMjc4NTcsIDY0NDk4LCAwLCA5NTA2LCAKKyAgICA2OTc4LCAxOTQ5OTMsIDc3OTkyLCAwLCAwLCAxOTQ5OTIsIDAsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCAwLCAwLCAwLCAKKyAgICAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCA3ODM3OCwgMTIwMTI2LCA1MjIzLCAxMzA0LCAwLCAxMTk1NjQsIDUyMjYsIAorICAgIDEyNjAyLCA5NDA0NCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKICAgICA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgMCwgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIAotICAgIDEyNzQ5MCwgMCwgNDI4MTYsIDAsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgMCwgCi0gICAgMCwgMCwgNTI5NiwgMCwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgMCwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgCi0gICAgNjUxMiwgMCwgNzg1NiwgODY5MCwgMCwgMCwgMTIxMjIsIDExOTYwMiwgNDM5NzYsIDAsIDE3ODUsIDkyNTA3LCA2ODYyMiwgCi0gICAgNjUxNTMsIDE5NDgxMCwgNTEzOCwgMCwgMCwgMCwgMCwgNDU0MCwgNDExODEsIDAsIDYyMDAsIDAsIDUxMzQsIDAsIDMyMiwgCi0gICAgNDY0MywgNTEzMiwgMCwgNjM4OSwgMCwgNTE0MywgMCwgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIAotICAgIDEyMDYwMSwgMCwgNDIwNjAsIDAsIDAsIDE5NDgwNCwgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgCi0gICAgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgCi0gICAgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIAotICAgIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIAotICAgIDE3NDksIDc4ODkwLCAxMjcwNzEsIDAsIDMyMCwgMCwgODY0NywgMCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCAKLSAgICA5OTI1LCAxMjczNTYsIDEyNzM1NSwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCAKLSAgICA1NDE4LCAxMjczNTAsIDMzNTEsIDEyNzAwNiwgMTI3MzUxLCAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgCi0gICAgMTI3MzQ0LCA5NTU0LCAwLCAxMjc3OTQsIDEyNzEwOSwgNjY1MywgMTI4ODExLCAwLCA2NDUxMCwgNjIxMywgMTI4ODUsIDAsIAotICAgIDExOTA0NSwgNjQ3MjAsIDAsIDEyMDc1OSwgNzM3NDEsIDEyNjAzLCA3MTMxLCAxMTQzMCwgNDU2NiwgNzg0MywgOTMxNywgCi0gICAgMzgwMSwgMTAzNDIsIDEwNDA2LCAwLCAxMTkyNTksIDQyNTc2LCAwLCA1MjAwLCAwLCA5MTc5NDgsIDAsIDkxODMsIAotICAgIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIDUxOTgsIDg3ODYsIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIAotICAgIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCAKLSAgICA0MzUsIDAsIDEyMDE0LCAxMDM3NywgODA5MywgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMCwgNjQ0MzAsIDUzODMsIAotICAgIDEwMjk0LCAxMDMyNiwgMTI4MTc4LCA1NzM4LCAwLCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDAsIDY4MTEyLCAKLSAgICA3ODcyLCA4NTgxLCAwLCAxMjYwLCAzMTQ5LCA1MzU5LCAwLCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCAKLSAgICA1MzY0LCAwLCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIAotICAgIDQyOTE3LCAxMjA3OTMsIDAsIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgNzgzODMsIDc4MzgyLCAKLSAgICA3ODM4MSwgNzgzODAsIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIAotICAgIDEyMDYzMiwgMCwgMCwgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIAotICAgIDczODE5LCAxMjA1ODgsIDUwMTIsIDc3OTEyLCA0MTM2MiwgMCwgNzgyOTYsIDExOTIxLCAwLCAxMTc2OSwgMCwgNjg2MDksIAotICAgIDQxMzY0LCAwLCA3NDIyOCwgNDEzNTIsIDQxMzYxLCAwLCA0MTM2NiwgMCwgMzM1NiwgMCwgOTE3LCA2ODQyMiwgMTE5OTE1LCAKLSAgICA3MTM0LCA4MTk5LCA3ODM4OSwgMTE5OTE3LCA2NzcsIDExOTkxNiwgMCwgMTE5OTMyLCAxMjcxNjksIDAsIDAsIDAsIDMzNDksIAotICAgIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCAwLCA1ODAyLCAwLCA4NjE1LCAwLCAwLCA0OTEsIDAsIDEwMTkwLCAxMjA2OTgsIAotICAgIDY1ODM3LCAxMjg4MjAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIDEwODUyLCAwLCAKLSAgICAwLCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAwLCAwLCA1ODE1LCA1MTcxLCAKLSAgICA2NTUzOSwgNjg2MTIsIDY5MzIsIDc4MzE1LCA0MjM5NCwgNDE4NzgsIDc0ODQ5LCAxMjA2MjEsIDAsIDUxNjksIDExOTM1LCAKLSAgICAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDAsIDk4MzMsIAotICAgIDAsIDAsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAKLSAgICAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCAKLSAgICA0MTM4NSwgMCwgNDEzODksIDkxNzkzOCwgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgMzUwNywgCi0gICAgOTQwNiwgNzYyOSwgMCwgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgMTA2MjcsIDQxMTMwLCAKLSAgICA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIAotICAgIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgNTc0LCA5MTc5MjIsIAotICAgIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIDQxOTAsIDc3ODM0LCAKLSAgICA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAxMDg1OSwgNjU4NjcsIAotICAgIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAyMDYwLCAwLCA3MTExLCAKLSAgICAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIDExOTA3NiwgMCwgOTg2MiwgCi0gICAgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgODAyMSwgMCwgNzEyNSwgCi0gICAgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAKLSAgICAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIDQyODc0LCA4NTUwLCA0Mjg3NiwgCi0gICAgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDAsIDQzNjcsIDAsIDAsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIAotICAgIDc0MTUwLCA3MjkxLCA1NTkwLCA3Nzg0OSwgMTMwNjcsIDExODkwOSwgMTIwMzcyLCAwLCA5NzMxLCA2OTczMSwgNjQ2MzMsIAotICAgIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIAotICAgIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCAKLSAgICA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCAwLCAxNDQyLCAwLCA1ODk0LCAKLSAgICAwLCAwLCA0MTE3MSwgOTI1MTEsIDc0MzEzLCAwLCAxMzE2MiwgMCwgMzMzNCwgMCwgMTE4ODAzLCA3Nzg4MSwgNjYwMjIsIDAsIAotICAgIDAsIDE2NTEsIDAsIDg4NjEsIDAsIDAsIDExNDIsIDAsIDgyNzEsIDAsIDAsIDAsIDEyOTAzLCAwLCA0MDAyLCA0MzYyNiwgCi0gICAgMTA0NDIsIDEwNjc2LCAzMzQ0LCAwLCAwLCAxMjkyMCwgMTk0NTYwLCAwLCAwLCA2NjY0MiwgMTI3NywgMCwgNzg3MSwgMCwgCi0gICAgMCwgNzg4NTMsIDAsIDc4ODU0LCAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAKLSAgICAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCAKLSAgICA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAKLSAgICAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIAotICAgIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3NDIxNywgMzM1NCwgCi0gICAgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCAxMjc5ODMsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAKLSAgICAwLCAwLCAwLCAwLCAxMTYwMywgMCwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDAsIDAsIDAsIDQyNTcyLCAKLSAgICAxMjgyNjQsIDEwNjMwLCA3NDgyNywgMTk2MywgMTE4ODg5LCAxMjc5NzgsIDExNjU0LCAwLCA3NTUwLCAxMDY4NiwgNTkwMywgCi0gICAgMCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgMCwgMCwgMTEwMTMsIDEyNzkyNywgCi0gICAgMTI4MzAwLCAwLCA3ODYyMSwgMTk0NjcyLCA2OTI1LCAwLCAwLCA5MTc5MjksIDAsIDExNTY4LCAwLCA0MzM2NywgNjQ1NzksIAorICAgIDEyNzQ5MCwgOTgzNDMzLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCAKKyAgICA0MTE3NSwgOTgzNDQwLCA5ODM0MzcsIDk4MzQzOCwgNTI5NiwgOTgzNDM2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAKKyAgICAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCAKKyAgICA0Mzk3NiwgMCwgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAxMTg4NjksIDAsIDQ1NDAsIAorICAgIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIDQ2NDMsIDUxMzIsIDAsIDYzODksIDEyODUzMywgNTE0MywgMCwgCisgICAgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIDY5OTE2LCAwLCA0MjA2MCwgNzEzMjYsIDk2NDgsIDE5NDgwNCwgCisgICAgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgCisgICAgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCAKKyAgICA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAKKyAgICAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAxMjcwNzEsIDk4MzY2MSwgMzIwLCAwLCAKKyAgICA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgCisgICAgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIAorICAgIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAxMjczNDQsIDk1NTQsIDAsIDk0MDQ4LCAxMjcxMDksIAorICAgIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAKKyAgICAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCAKKyAgICA0MjU3NiwgMCwgNTIwMCwgMTI2NjExLCA5MTc5NDgsIDAsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIAorICAgIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgCisgICAgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDAsIDEyMDE0LCAxMDM3NywgODA5MywgOTA3OSwgCisgICAgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMCwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgMTI4MTc4LCA1NzM4LCAKKyAgICA5ODMyMTMsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgNjgxMTIsIDc4NzIsIDg1ODEsIDAsIDEyNjAsIAorICAgIDMxNDksIDUzNTksIDEyMDEzNCwgMCwgNzkxNCwgNTM1NywgOTIxNzAsIDEyODY1OSwgMjYyNCwgNTM2NCwgMCwgMTE0MzEsIAorICAgIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCAwLCA3ODI5MywgNDIyNzEsIDc4Mjg5LCA0MjkxNywgMTIwNzkzLCAwLCAKKyAgICA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODM4NSwgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCAKKyAgICA3ODM3OSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIDc0NTgxLCAxMjA2MzIsIDAsIDAsIAorICAgIDQxODg5LCA5MjQ1MywgMCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAwLCAwLCA3MzgxOSwgMTIwNTg4LCAKKyAgICA1MDEyLCA3NzkxMiwgNDEzNjIsIDY5ODYyLCA3ODI5NiwgMTE5MjEsIDAsIDExNzY5LCAwLCA2ODYwOSwgNDEzNjQsIDAsIAorICAgIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAwLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCisgICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMTI4ODE5LCAxMDE5MCwgCisgICAgMTIwNjk4LCA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKKyAgICAxMDg1MiwgMCwgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgCisgICAgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCAKKyAgICA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIAorICAgIDc4Mjg3LCAwLCA5ODMzLCAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgCisgICAgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgCisgICAgNTE2NSwgNTEyNiwgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIAorICAgIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgCisgICAgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCisgICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgCisgICAgNTc0LCA5MTc5MjIsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIAorICAgIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAKKyAgICAxMDg1OSwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKKyAgICAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIAorICAgIDExOTA3NiwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgCisgICAgODAyMSwgMCwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCAKKyAgICA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIAorICAgIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCAwLCAwLCAKKyAgICA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgCisgICAgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIAorICAgIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgCisgICAgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIAorICAgIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMCwgNTg5NCwgNzAwNjksIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAKKyAgICAzMzM0LCAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAwLCAxNjUxLCAxMjg3NzEsIDg4NjEsIDAsIDAsIDExNDIsIAorICAgIDAsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgCisgICAgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIDAsIDc4ODUzLCAwLCA3ODg1NCwgCisgICAgMTIwMzYwLCAwLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDY2MzY2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgMCwgNzg4NTYsIAorICAgIDkyNDAwLCA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgMCwgCisgICAgNDMxMTgsIDAsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgCisgICAgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCA3NDUyNiwgNzEyMSwgNzQxNjYsIDAsIDEyMDM1NSwgCisgICAgOTI1MzcsIDAsIDAsIDE5NTAzNCwgMCwgMCwgMCwgNzAwODMsIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgMTE4OTk5LCAKKyAgICA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAwLCA5ODMwOTEsIDAsIDAsIDExNjAzLCAKKyAgICA5ODM5NDUsIDAsIDY1ODksIDEyODU4OCwgMTk0Njc5LCAwLCAwLCA5ODM2OTEsIDAsIDAsIDQyNTcyLCAxMjgyNjQsIAorICAgIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDEyNzA5OCwgMTE2NTQsIDAsIDc1NTAsIDEwNjg2LCA1OTAzLCAwLCA3ODAwOSwgCisgICAgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCAwLCA1NTQyLCAxMTAxMywgMTI3OTI3LCAxMjgzMDAsIAorICAgIDAsIDc4NjIxLCAxOTQ2NzIsIDY5MjUsIDAsIDAsIDkxNzkyOSwgMCwgMTE1NjgsIDk4MzY2NCwgNDMzNjcsIDY0NTc5LCAKICAgICA5MTc5MzAsIDc4NTIsIDAsIDAsIDY3NTQsIDYzMTIsIDAsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIAotICAgIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMCwgMCwgOTUzMiwgCi0gICAgNjYzNTUsIDAsIDAsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDAsIDE5NTA1NywgMTE0NDUsIAotICAgIDAsIDIxMTIsIDE5NTA1NiwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgNzQ1NDQsIDgwMjMsIAotICAgIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAwLCAxMjA0OTMsIDMzNDMsIDQ0MjQsIAotICAgIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg2MjYsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIDQzOTEsIDY4MTM5LCAwLCAKLSAgICAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgMCwgNjQ3NTcsIDAsIDM5MTMsIDAsIDAsIAotICAgIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDAsIDAsIDgyMjEsIAotICAgIDc4MzA3LCA0MTg2NCwgMCwgMCwgMCwgMCwgMTY3LCAwLCA3ODMwMSwgMCwgNzQyMTEsIDQxODk3LCA2ODQ3NywgMCwgCi0gICAgOTE3NTgzLCAwLCAwLCAyNDkzLCAwLCAxMTg4MTEsIDAsIDAsIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIAotICAgIDAsIDkyNDUwLCAwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIDkxNzU3OSwgNjQ5MzYsIDE5NDY5NSwgMCwgCi0gICAgMTIwNjI5LCAxMDU2MSwgMCwgODM2NSwgMTIwNTM5LCAwLCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDAsIAotICAgIDkxNzU3NSwgNzgzNCwgNzQxNTksIDAsIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU5NiwgMTYzOSwgMCwgMCwgCi0gICAgNzQxNTcsIDYzMjcsIDY3MjQsIDAsIDEyODA4NiwgOTI1NjYsIDAsIDQ4MTcsIDc4NDQ2LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCAKLSAgICA5NjAwLCAxMTAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIDE5NDc2MSwgCi0gICAgMTIzNDMsIDY1NywgMTk1MDU0LCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDAsIDAsIAotICAgIDAsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCAwLCA5MTc1OTUsIDY1NTUwLCAyNjAsIDQ4MTYsIAotICAgIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgMTk1MDQzLCA0ODE4LCAxOTUwNDgsIDQxNDAzLCAxMTk5NzcsIDAsIAotICAgIDAsIDQxNDA2LCA0MzI3MywgNzQxNjAsIDExOTk4MywgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIAotICAgIDExNjUsIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDczODU1LCA2NTE1NSwgNDMwMTQsIDU0MzksIAotICAgIDkzNjMsIDEyNzU1OCwgMzM3NSwgMTI4ODY5LCA1OTAwLCAwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMCwgMCwgMTI4Nzc0LCAwLCAKLSAgICAwLCAwLCAxMjc4MTAsIDExNDAxLCAwLCAwLCA2ODQ1OSwgMCwgMCwgMCwgMCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgMCwgCi0gICAgMTI3MzgxLCA0ODY4LCAxMTk5NjcsIDExOTk2NiwgMTE4Nzk4LCAwLCAwLCA0MzE2MSwgMCwgOTIzNjAsIDAsIDUxODIsIDAsIAotICAgIDEyMDU0MiwgMCwgMCwgNDIyNiwgMTIwNzk4LCAxMjEzNSwgNTczMiwgNDQ2NCwgMCwgMCwgOTc3LCA0NDU4LCAwLCAwLCAKLSAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIDc4NiwgMCwgNDMxNzQsIAotICAgIDY0MzQwLCAwLCAwLCAxMjA3MjMsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAxMjc4MDksIDAsIDEzOTksIDAsIDY1MjE3LCAKLSAgICAwLCA4ODUyLCAwLCAyNDEsIDEyODc4MCwgNDkwNywgMCwgMCwgNzkzMiwgOTcyNywgMTI4ODczLCA3NDI1NSwgODc0OCwgMCwgCi0gICAgMCwgMCwgMCwgNDI3ODAsIDAsIDAsIDAsIDQyMTcsIDAsIDg2NTAsIDAsIDAsIDAsIDAsIDExODg3MiwgNDMwOTksIDM5NjUsIAotICAgIDExOTExOSwgNjcxOSwgMCwgMTMzMDAsIDc4NDM5LCAxMjgyNjEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAwLCAwLCA3MzgxNSwgCi0gICAgNDQyMCwgMCwgNjQxMCwgNzc2MCwgMCwgMCwgMCwgMCwgMCwgNzI5NCwgMCwgMCwgMCwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAKLSAgICAyNjI2LCA3NzYyLCAwLCAwLCAwLCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgCi0gICAgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAwLCAwLCAwLCAwLCAKLSAgICA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAwLCA0MzYyNCwgMCwgNzc3OSwgMCwgMTAxOTUsIDk0NzksIDYwMjksIDAsIAotICAgIDkyMjY4LCA5Njg5LCAwLCAwLCA4OTkzLCA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgCi0gICAgNjk3ODcsIDIwMzAsIDAsIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCAwLCAwLCAwLCAwLCAyNzM1LCA0MjgzMSwgCi0gICAgNzc5MzUsIDEyNzEyMCwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgMCwgNzM5NDYsIDAsIDAsIDAsIDY4MTQwLCAwLCA5NTc2LCAKLSAgICAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCA3NzA5LCA0MTExMiwgCi0gICAgMCwgNjY1NjAsIDQyMDQxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDAsIDY3NTgsIDAsIDE2MTUsIDU4NTUsIDgwOSwgMCwgCi0gICAgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCAwLCAwLCAwLCA3MjYwLCAwLCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCAKLSAgICA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIAotICAgIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCAwLCAwLCAxMjA2MDksIDAsIDMzNzAsIAotICAgIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAwLCAwLCAwLCAwLCA2NTQ5NSwgNjQ3MDYsIAotICAgIDAsIDQzMzQ0LCAwLCA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgMCwgMCwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCi0gICAgMTI3MTc4LCA0MzI2NCwgMCwgMCwgMCwgMCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIDUxODYsIDEyODkwLCAKLSAgICAxMjc4MzcsIDAsIDEyMTA4LCAwLCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIAotICAgIDQyNTYyLCAwLCAwLCAwLCAxMjg1MjAsIDExNDg1LCA2MTAzLCAxMjcxMjMsIDAsIDExNzE4LCAwLCAxMjg4OSwgOTI2NTcsIAotICAgIDEyNzEzNywgMCwgMCwgMCwgNTUyNDUsIDAsIDE2MzAsIDEyODIzMiwgNjU0ODMsIDAsIDEyNTY1LCAwLCA2NTQ3NiwgCi0gICAgMTIwMDEzLCAwLCAxMTk1NTQsIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIDMzNzYsIAotICAgIDY4MjEwLCAwLCAwLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCAKLSAgICA4OTI2LCAwLCAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIDEyMDY4NiwgMTE3MTMsIAotICAgIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCAwLCA5ODEyLCAwLCA0NDYwLCAwLCAwLCAwLCAxMjgwMzgsIAotICAgIDAsIDAsIDEyNzE3NCwgNjQyNzgsIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgCi0gICAgMTE5MDI5LCAwLCA3MzgyMywgMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCAKLSAgICAwLCAwLCAxMjg1NzAsIDEyMTA2LCAwLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCi0gICAgOTUyMiwgNzQwNzksIDc4MjY2LCAxMjA2NzQsIDAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgNzc4OTksIAorICAgIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMCwgOTgzNjA1LCAKKyAgICA5NTMyLCA2NjM1NSwgMCwgOTgzMjI4LCA5MTc5MjUsIDY0MzQzLCAxOTUwMzIsIDEyODI4MSwgMTk1MDMxLCAwLCAxOTUwMzAsIAorICAgIDE5NTA1NywgMTE0NDUsIDAsIDIxMTIsIDE5NTA1NiwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgCisgICAgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAwLCAxMjA0OTMsIAorICAgIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIAorICAgIDQzOTEsIDY4MTM5LCA5ODMwNjIsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAwLCA2NDc1NywgCisgICAgMCwgMzkxMywgMCwgMCwgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAKKyAgICAxMTc5MSwgMCwgMCwgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCAwLCAwLCAxNjcsIDk4Mzg5NywgNzgzMDEsIDk4MzY0NCwgCisgICAgNzQyMTEsIDQxODk3LCA2ODQ3NywgMCwgOTE3NTgzLCA5ODM2MjUsIDk0MDY1LCAyNDkzLCAwLCAxMTg4MTEsIDAsIDAsIAorICAgIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIDAsIDkyNDUwLCAwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgCisgICAgMTIxMTQsIDAsIDkxNzU3OSwgNjQ5MzYsIDE5NDY5NSwgMCwgMTIwNjI5LCAxMDU2MSwgMCwgODM2NSwgMTIwNTM5LCAKKyAgICA5ODM3NjUsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMCwgOTE3NTc1LCA3ODM0LCA3NDE1OSwgMCwgCisgICAgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTk2LCAxNjM5LCAwLCAwLCA3NDE1NywgNjMyNywgNjcyNCwgMCwgCisgICAgMTI4MDg2LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDc4NDQ2LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCA5NjAwLCAxMTAyMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIDE5NDc2MSwgMTIzNDMsIDY1NywgCisgICAgMTk1MDU0LCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDAsIDAsIDAsIDQ0NTYsIAorICAgIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCAwLCA5MTc1OTUsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAKKyAgICAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgMTk1MDQzLCA0ODE4LCAxOTUwNDgsIDQxNDAzLCAxMTk5NzcsIDAsIDAsIAorICAgIDQxNDA2LCA0MzI3MywgNzQxNjAsIDExOTk4MywgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIAorICAgIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIAorICAgIDcwMDcwLCAzMzc1LCAxMjg4NjksIDU5MDAsIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMCwgMCwgMTI4Nzc0LCAwLCAKKyAgICAyMjgyLCAwLCAxMjc4MTAsIDExNDAxLCA5ODM4MTMsIDAsIDY4NDU5LCAwLCAwLCAwLCAwLCA2NTQzOCwgMCwgNzI4MCwgCisgICAgMTI3ODg3LCAwLCAxMjczODEsIDQ4NjgsIDExOTk2NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgCisgICAgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMTkyNDMsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCA3MTMzMCwgOTc3LCAKKyAgICA0NDU4LCAwLCAwLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIAorICAgIDc4NiwgMCwgNDMxNzQsIDY0MzQwLCAwLCAxOTQ3NjcsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCisgICAgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCAwLCA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAKKyAgICAxMjc4MDksIDk4MzYzNSwgMTM5OSwgOTgzNjQzLCA2NTIxNywgMCwgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgCisgICAgMCwgOTgzNjMwLCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAwLCA5ODM2MzQsIDAsIDQyNzgwLCAwLCAwLCAKKyAgICAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAwLCAKKyAgICAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIDQ0MjAsIDAsIDY0MTAsIAorICAgIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgMCwgCisgICAgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIAorICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKKyAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAorICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCisgICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzMSwgOTgzMzMwLCA5ODMzMjksIDk4MzMyOCwgMjczNSwgCisgICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCisgICAgOTgzOTE5LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKKyAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzQ5LCA2NzU4LCAKKyAgICA5ODM5MTcsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjAsIDcwMTAwLCAKKyAgICA5ODMzMTgsIDcyNjAsIDk4MzMxNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAorICAgIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgCisgICAgNTMyLCA3ODY2MywgMCwgOTgzNzg3LCAxMjA2MDksIDAsIDMzNzAsIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgCisgICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MDgsIDY1NDk1LCA2NDcwNiwgOTgzMzEwLCA0MzM0NCwgOTgzMzA4LCAKKyAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzAzLCA5ODMzMDIsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAorICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAorICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKKyAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMyOTcsIAorICAgIDExNzE4LCA5ODMyOTUsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKKyAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKKyAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKKyAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjkxLCA5ODMyOTAsIDEyODI3MywgMTA3NDUsIAorICAgIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAKKyAgICAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDcxMzA3LCAxMjgwMzgsIDAsIDAsIDEyNzE3NCwgNjQyNzgsIAorICAgIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgMTE5MDI5LCAwLCA3MzgyMywgMCwgCisgICAgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA5ODMyNzgsIDk4MzI3NywgCisgICAgMTI4NTcwLCAxMjEwNiwgOTgzMjc0LCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCisgICAgOTUyMiwgNzQwNzksIDc4MjY2LCA2NjYwNCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCiAgICAgNzc5MDAsIDg0NTEsIDAsIDAsIDAsIDY5NzM5LCAwLCAwLCAwLCAwLCAyOTA4LCAwLCA0MzM4NiwgNjQ5MDIsIDQyNDMsIDAsIAotICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCAwLCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMCwgNDExLCAwLCA5MTk5LCAwLCA0MDU2LCAKLSAgICAxMTg5OTIsIDQxODkwLCAwLCAyNzMwLCA0MTYwNCwgMCwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgNjQ0MzcsIAotICAgIDEyNzkzNSwgMTE4ODE2LCAxOTQ3NDIsIDk2ODQsIDIxNiwgMCwgMTQwMSwgMTI4MDUzLCA0NDAxMiwgMCwgMCwgOTI1ODUsIAotICAgIDkxNTgsIDc3ODQyLCAxMjA2NjQsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCA2NTg5NSwgMCwgMCwgMzMzOCwgCi0gICAgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDAsIDEyODY4MCwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCAKLSAgICA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMCwgMCwgCi0gICAgMCwgMzQzMCwgMCwgMCwgMCwgMCwgOTgxLCAwLCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMCwgNzAzNCwgCi0gICAgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIDAsIDI5NDYsIAotICAgIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIAotICAgIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgCi0gICAgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCAKLSAgICA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCAwLCAwLCAxMTczOSwgMCwgCi0gICAgNDE5ODEsIDAsIDU5MzgsIDAsIDAsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgCi0gICAgMTI2OTc2LCAwLCAxMDAwOSwgMCwgNDE3MDMsIDAsIDEyMTY1LCAwLCAwLCA5ODg1LCAwLCA4MDc3LCAwLCAxMjc5MDgsIDAsIAotICAgIDAsIDAsIDkyNDU3LCAwLCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgMCwgMTI4MzQwLCAwLCAKLSAgICAwLCAwLCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgMCwgMTk5NDQsIDAsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgCi0gICAgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIDAsIDAsIDEyMzEzLCAxMTA1OTIsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIAotICAgIDc4Mjg2LCAxMTk5NDMsIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCAKLSAgICA5MTQxLCAwLCA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxODQsIDg2MDYsIAotICAgIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgCi0gICAgMCwgMCwgMjc0NCwgMCwgNDQ3NywgMTE4OTY0LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIAotICAgIDY2MTk4LCA0MTg4MCwgNjYxODgsIDY2MTk3LCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCAKLSAgICA3Mzc4OCwgNzc4OCwgNDg0NywgMCwgMTI3NzU5LCAwLCAwLCAwLCAxNTgxLCA2NTM1LCA3ODE2MSwgMTI5NTQsIDQzMCwgCi0gICAgNzgxNjAsIDU1MjU5LCA3ODE1OCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgMCwgNjg2MjUsIDAsIDcyNjksIAotICAgIDAsIDU5NjQsIDEyOTA4LCAwLCAwLCA3NDc2NCwgNzQ0NzcsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCAwLCA0NDMsIDAsIAotICAgIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgMTk0OTMxLCAKLSAgICAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgCi0gICAgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgCi0gICAgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgMTE5ODI5LCAxMTk4MzIsIDQ2NzcsIAotICAgIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCAKLSAgICA0Njc0LCA0NTQ4LCA0NDAwNSwgMTE5OTQ5LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCAwLCAKLSAgICA2ODY2OSwgMCwgOTI0NDUsIDEyNzU1NCwgMCwgMCwgMTE5NjUyLCAyNzQ1LCAxMTc5NywgMCwgMTI4MTU5LCA5MjAyLCAKLSAgICA0NjU0LCAwLCAwLCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCA2NTIwOSwgMCwgMCwgNDY0OCwgNDMwODAsIDAsIDAsIDAsIAotICAgIDYyNDYsIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIAotICAgIDQzMTg3LCA4NjY5LCAwLCA2ODIxLCA2NTA5MywgMCwgNzg4ODEsIDI3MTYsIDAsIDAsIDAsIDAsIDY4MzY5LCAxMjAwNTQsIAorICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCA5ODMyNzEsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCA5ODMyNjcsIDQxMSwgOTgzMjY1LCAKKyAgICA5MTk5LCA5ODMyNjMsIDQwNTYsIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCA5ODM5MjgsIDU0MjgsIDE5NDc0MywgCisgICAgMzM2NCwgNDIyNjUsIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgCisgICAgNDQwMTIsIDAsIDAsIDkyNTg1LCA5MTU4LCA3Nzg0MiwgNjk5MDUsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKKyAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI1NSwgOTM5NjIsIDI3OTQsIAorICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAorICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKKyAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAorICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQzLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCisgICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgCisgICAgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCAKKyAgICA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIAorICAgIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTgzNDA1LCAwLCAxMTczOSwgOTgzNDE4LCA0MTk4MSwgMCwgNTkzOCwgMCwgNDM3NjYsIAorICAgIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgCisgICAgNDE3MDMsIDk4MzYyOSwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgMCwgMCwgOTI0NTcsIDAsIAorICAgIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIDAsIDAsIDEwOTcwLCAKKyAgICAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgCisgICAgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCisgICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAKKyAgICAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIAorICAgIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAKKyAgICAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgNjYxOTgsIDQxODgwLCAKKyAgICA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIDczNzg4LCA3Nzg4LCAKKyAgICA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIAorICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzAsIDY4NjI1LCA5ODM0MjgsIDcyNjksIDAsIAorICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyMSwgNDQzLCAKKyAgICA5ODM0MTksIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgCisgICAgMTk0OTMxLCAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIAorICAgIDgyNCwgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIAorICAgIDExOTgxOSwgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDExOTgzMiwgCisgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCisgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCAxMTk5NDksIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAorICAgIDE4NTUsIDk4MzQwNCwgNjg2NjksIDk4MzQwMiwgOTI0NDUsIDEyNzU1NCwgMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIAorICAgIDExNzk3LCA5ODM0MTAsIDEyODE1OSwgOTIwMiwgNDY1NCwgOTgzNDA2LCA5ODM0MDgsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAorICAgIDQ2NDksIDY1MjA5LCA5ODM0MDksIDAsIDQ2NDgsIDQzMDgwLCA5ODMzOTgsIDk4MzM5OSwgOTgzMzk2LCA2MjQ2LCA2NDk1MCwgCisgICAgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzgwMDUsIDkyMzg0LCA0MzE4NywgODY2OSwgCisgICAgOTgzNDA3LCA2ODIxLCA2NTA5MywgMCwgNzg4ODEsIDI3MTYsIDAsIDk4MzA2MCwgOTgzNDExLCAwLCA2ODM2OSwgMTIwMDU0LCAKICAgICAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNzk5MiwgMCwgMCwgNDY2MiwgNzgwMzMsIDc4MDMyLCAKICAgICA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgMTk0OTYyLCA0NjU2LCAxMDEzMCwgNjg0NTAsIDc4MTEsIAotICAgIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCAwLCAwLCAwLCAKLSAgICA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgCi0gICAgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgMCwgMCwgMCwgMCwgMCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCAKLSAgICA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCA3ODg4MywgMCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDAsIAotICAgIDU5NTgsIDAsIDAsIDQyMTUsIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgMCwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgCi0gICAgNjU4MDMsIDAsIDUzNjYsIDEyMjAxLCA1MzcyLCAwLCAwLCAwLCA3NzIwLCA3MzkwLCAyNjk2LCAwLCAwLCA0NjM4LCAwLCAKLSAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTk0OTY4LCA1Mzc2LCAxODM1LCA1MzM1LCAxOTQ5NjYsIAorICAgIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCA5ODM0MDMsIAorICAgIDAsIDAsIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIDQ4NjcsIDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgCisgICAgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCA5ODMzODcsIDk0MDcwLCA5ODMzODUsIDk4MzM4NiwgCisgICAgOTgzMzgzLCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDc4ODg3LCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDc4ODgzLCAKKyAgICA5ODMzNzgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCA5ODMzNzIsIDU5NTgsIDAsIDk4MzQyNSwgNDIxNSwgCisgICAgOTc4OSwgOTE3OTQxLCA0MzIxLCA0NjIxLCA5ODMzODEsIDQxMzEzLCA1MjIsIDUzNjgsIDAsIDY1ODAzLCAwLCA1MzY2LCAKKyAgICAxMjIwMSwgNTM3MiwgMCwgOTgzNDAxLCAwLCA3NzIwLCA3MzkwLCAyNjk2LCA5ODMzOTIsIDAsIDQ2MzgsIDk4MzM5NywgCisgICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDEyNzgzMywgNTM3NiwgMTgzNSwgNTMzNSwgMTk0OTY2LCAKICAgICAxMjgwODksIDQ2MzMsIDAsIDY4MTE5LCAxMTgwLCA0NjMyLCAxMjgwOTMsIDUzODcsIDUzMzMsIDAsIDAsIDQyMDk0LCAKLSAgICA1MzMxLCA0NjM0LCAxMTkyOCwgMCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgNjUwOTcsIAotICAgIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAwLCAKLSAgICAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgMCwgCi0gICAgNjgzNzcsIDYyNDgsIDAsIDAsIDAsIDQyMzE4LCA5MjU4MiwgNTIyOSwgNDc1NywgMCwgMCwgMjcyOCwgNDc1MiwgNjQ1NjMsIAotICAgIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDAsIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCAxMjczMDIsIDAsIDAsIAotICAgIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgOTIyMzAsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgCi0gICAgNTU3NywgMCwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIAotICAgIDAsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDAsIDAsIDE5NDkwNywgNDQwMDMsIDAsIDAsIDAsIDEyMDQ5OCwgCi0gICAgMTI3ODUxLCAxOTUwMDksIDAsIDc0MDIyLCAwLCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgMCwgNTcyMSwgMCwgNTUxOSwgCi0gICAgODYzMiwgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDAsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAotICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDAsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgCi0gICAgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDAsIDAsIDkyMjc2LCA0NjA4LCA2NDI2MCwgNDExMjQsIDUxOTAsIAotICAgIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgMTE5MjQzLCA2NzYyMCwgMCwgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgCi0gICAgMCwgNjc2MjUsIDU5NjAsIDAsIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCAKLSAgICA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCAxMTk5NTYsIAotICAgIDQxMjU2LCAwLCA2ODEzNCwgMCwgNzQyMDksIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAKLSAgICAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2ODEzNywgMCwgCi0gICAgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCAwLCA0ODY5LCAxMjA1NjMsIDAsIDQyMjMsIDEyODIwMSwgNjY1MCwgMCwgCi0gICAgMCwgMCwgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIDY4MzgyLCA2ODY3NiwgCi0gICAgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDAsIDYyNDUsIDY4NjUyLCAyNzMyLCA0MjczNCwgNzQ1LCAKLSAgICAwLCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAwLCA2ODYzMSwgNDI3NzUsIDAsIDE5NDk1NCwgMCwgMzA5NywgMCwgCi0gICAgNTk2NiwgMCwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIDY0NDA3LCAwLCAwLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCAKLSAgICA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgCi0gICAgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIAotICAgIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDAsIDU5NjMsIDkxNzkyNiwgMCwgMCwgCi0gICAgNDg1MCwgMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIDEyNzkxOCwgNTE2NCwgMCwgMTM1MCwgNTEyNCwgCi0gICAgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAwLCA0MTI2OCwgCi0gICAgNDg0OCwgMjUzMCwgOTE3OTA5LCAyMDY4LCAxOTY0LCAwLCA3Mzc2MiwgMTA0NTgsIDAsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCAKLSAgICA0Nzk0LCAwLCA2ODIxMSwgODMyMiwgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCAKLSAgICAwLCAzMDMsIDAsIDkyNjIyLCAwLCAyNDM3LCAwLCA0MjIxLCA0ODQ0LCAxMTg4NjksIDAsIDAsIDAsIDAsIDAsIDQzMjkyLCAKLSAgICAwLCAyNDQxLCAxMDczOSwgNjUwOTAsIDAsIDExOTMyNywgMCwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCisgICAgNTMzMSwgNDYzNCwgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgCisgICAgNjUwOTcsIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKKyAgICA5ODMzNjYsIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAorICAgIDc0Mzg0LCA5ODMzNzAsIDY4Mzc3LCA2MjQ4LCA5ODMzNTQsIDk4MzM1NSwgOTgzMzUyLCA0MjMxOCwgOTI1ODIsIDUyMjksIAorICAgIDQ3NTcsIDAsIDAsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAwLCAxMDcxMywgNzE2NiwgMCwgCisgICAgMjYyMiwgNzQ2MCwgMTI3MzAyLCAwLCAwLCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgCisgICAgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDAsIDAsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCAKKyAgICA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMCwgNTUyNSwgNTMzMCwgNTMxOSwgOTgzNDEyLCAKKyAgICA5ODM4NjMsIDE5NDkwNywgNDQwMDMsIDAsIDk4MzQ3MiwgOTgzNDE1LCAxMjA0OTgsIDEyNzg1MSwgMTk1MDA5LCA5ODM4NTYsIAorICAgIDc0MDIyLCA5ODM0MTQsIDY0NjA5LCA2ODY0MywgMTIwNjM0LCA5ODM0ODEsIDU3MjEsIDk4MzM5MywgNTUxOSwgODYzMiwgCisgICAgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDk4MzM0NCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCisgICAgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMzQ3LCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgCisgICAgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCA5ODMzNDEsIDk4MzMzOCwgNzc4NDksIDQ2MDgsIDY0MjYwLCAKKyAgICA0MTEyNCwgNTE5MCwgNjc2MjgsIDAsIDY4MTQ1LCA3MDg2LCAwLCA2Nzk5OCwgNjc2MjAsIDAsIDI3MzQsIDExMDc0LCAwLCAKKyAgICA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCAwLCA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIAorICAgIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgCisgICAgNjIzOSwgMTE5OTU2LCA0MTI1NiwgMCwgNjgxMzQsIDAsIDc0MjA5LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgCisgICAgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgCisgICAgNzE5MywgNjgxMzcsIDAsIDU3MzksIDQxMDI0LCA0ODY2LCAwLCA3MzkwNCwgOTgzODMxLCA0ODY5LCAxMjA1NjMsIDAsIAorICAgIDQyMjMsIDEyODIwMSwgNjY1MCwgMTI2NTA5LCAwLCA5ODM0NTUsIDEyNzg5MCwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgCisgICAgNzgxNzYsIDY4NjY3LCA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCAwLCAKKyAgICA2MjQ1LCA2ODY1MiwgMjczMiwgNDI3MzQsIDc0NSwgMCwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMCwgNjg2MzEsIAorICAgIDQyNzc1LCAwLCAxOTQ5NTQsIDAsIDMwOTcsIDAsIDU5NjYsIDk4MzQ3OCwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIAorICAgIDY0NDA3LCAwLCAxMjgzMjMsIDg1NzcsIDEyODU2MiwgNjgxOTYsIDQzMjg1LCAxMDIxNiwgNDc4MiwgMCwgMCwgMTIwNzU3LCAKKyAgICA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDAsIDEzMTc2LCAKKyAgICA2ODM2MywgMTA0MjYsIDAsIDkxNzU5OSwgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIAorICAgIDQzMjc4LCA0MjYzNSwgMCwgMCwgNTk2MywgOTE3OTI2LCAwLCAwLCA0ODUwLCAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgCisgICAgNDg1NCwgMTI3OTE4LCA1MTY0LCA5ODM4NjEsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCAKKyAgICA5MjQ3MSwgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMCwgNDEyNjgsIDQ4NDgsIDI1MzAsIDkxNzkwOSwgMjA2OCwgMTk2NCwgCisgICAgMCwgNzM3NjIsIDEwNDU4LCAwLCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMCwgNjgyMTEsIDgzMjIsIDQ3OTcsIAorICAgIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDE2LCAzMDMsIDk4MzEwMSwgOTI2MjIsIAorICAgIDk4MzQxNywgMjQzNywgMCwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCAwLCA0MzI5MiwgMCwgMjQ0MSwgCisgICAgMTA3MzksIDY1MDkwLCAwLCAxMTkzMjcsIDEyNjU0MSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCiAgICAgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMCwgMCwgCiAgICAgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDAsIDE4MSwgCi0gICAgMCwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAwLCAwLCA0OTY0LCAKLSAgICA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIAotICAgIDQxMjMxLCAxODIyLCA0MjUyNiwgMTI4NTgxLCAxMjc1OCwgMzg2NSwgMCwgMCwgMTA1MDAsIDAsIDAsIDc4MDI4LCAwLCAKLSAgICA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAwLCAzMTI1LCA5NTY3LCAwLCAKLSAgICA0ODc4LCA1NDU5LCA0NjA0LCA5MTc5MzEsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAxMTQ5NCwgMCwgOTU2MywgMTA4NjUsIAotICAgIDc0NTcwLCA0MzI3OSwgNjQxODYsIDAsIDc4NzE0LCA2NDE5MSwgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgCi0gICAgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIAotICAgIDMwODIsIDAsIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCA3MDc5LCA1ODU2LCAxMjcwNDMsIDUxNjMsIDc4ODA5LCAKLSAgICAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMCwgMTA1NjQsIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIAotICAgIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgMCwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIAotICAgIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMCwgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIAotICAgIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIAotICAgIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIAotICAgIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIAotICAgIDEwMjQ3LCA0Mjc2OCwgNzE1LCA2NDE2MSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAxMjAzNzgsIDAsIDExMzUyLCAKLSAgICA1NTAsIDk5MTAsIDAsIDAsIDY2NTc5LCAxMTU1MSwgMCwgMTk1MDgwLCA5NTA0LCA3MTg3LCAwLCAxMDM3MywgMCwgCi0gICAgMTIwNzkxLCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCAKLSAgICA3ODE4MCwgMCwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCAKLSAgICA3ODE5NiwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCAKLSAgICA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMCwgOTc4NSwgNjQ3MTYsIDAsIDM5MzMsIDc0NTU5LCAKLSAgICA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgMCwgNDIxMzAsIDAsIDUxNTEsIAotICAgIDkxNzgyOSwgOTE3ODIzLCAwLCAwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgODM1NSwgNzg1NCwgMCwgOTU0LCAKLSAgICA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgCi0gICAgMTIwNTg0LCAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgCi0gICAgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIAotICAgIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgMCwgMCwgOTkxNiwgMTE3MDEsIDc4MzYsIAotICAgIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIDkyNDMxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCAwLCA3NDM1OCwgCi0gICAgODYxOCwgMCwgOTkwOCwgMCwgMCwgMCwgMzkzNywgMTIzMTIsIDAsIDAsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIAotICAgIDExOTk2MywgNzQ1MzIsIDAsIDYyNDQsIDAsIDE5NDU4MCwgMzkzNSwgMTIwNjY1LCAwLCAwLCAxMTk1MCwgNTM5MiwgCi0gICAgNDIyNDgsIDY1MTI5LCA2ODY1NiwgNTM5NywgMCwgMTIwNDYsIDEyNTk5LCAwLCAwLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIAotICAgIDY4NjE1LCAxMTk5NDgsIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgCi0gICAgMCwgMCwgMTI4ODc0LCAwLCAwLCA0MzI5NywgMCwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCAKLSAgICA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAKLSAgICAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCAKLSAgICA5MjI4NywgMTI4MjI0LCAwLCAwLCA3NDA0NiwgMTIwNTgzLCA0OTExLCA5ODgsIDkxNzgwNywgMCwgMCwgNDMwNjEsIDcwNTQsIAorICAgIDk4MzQyMiwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAKKyAgICA5ODM2MDEsIDAsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCAKKyAgICA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgCisgICAgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIAorICAgIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAorICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA5ODM0MzEsIDc4NzE0LCA2NDE5MSwgCisgICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIAorICAgIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzQyOSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIAorICAgIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgCisgICAgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCAKKyAgICA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAorICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAorICAgIDEzMjgyLCA2NDE3NSwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgMCwgMCwgMCwgMCwgMjU0MywgCisgICAgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCAKKyAgICA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAKKyAgICAxMjAzNzgsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNjcwNSwgMCwgNjY1NzksIDExNTUxLCAwLCAxOTUwODAsIDk1MDQsIAorICAgIDcxODcsIDAsIDEwMzczLCAwLCAxMjA3OTEsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgCisgICAgNjUyMjIsIDY5OTgsIDc4MTgwLCAwLCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIAorICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgCisgICAgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAKKyAgICAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMCwgNDI2MDksIDAsIDc0MTc1LCAwLCAxMjcwMTYsIDAsIDk4Mzg2NCwgCisgICAgNDIxMzAsIDAsIDUxNTEsIDkxNzgyOSwgOTE3ODIzLCAwLCA5Mzk4MCwgMCwgNzYyMCwgMzgwMCwgNjUxMjIsIDAsIDAsIAorICAgIDgzNTUsIDc4NTQsIDAsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIAorICAgIDEwNzExLCA0NTkzLCAxMjc3NDUsIDEyMDU4NCwgOTgzNDAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCAKKyAgICA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgCisgICAgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgCisgICAgMCwgOTgzNDQzLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIAorICAgIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCA4NjE4LCA5ODMzOTQsIDk5MDgsIDk4Mzk3MiwgMCwgMCwgMzkzNywgCisgICAgMTIzMTIsIDAsIDk4MzM5NSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIAorICAgIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCA5ODM0NjgsIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCAKKyAgICA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgMzU0LCA2ODYxNSwgMTE5OTQ4LCAKKyAgICA3ODUwMywgMCwgMCwgNDIwMzksIDAsIDAsIDY0MTQyLCA2MjYsIDAsIDU4OTUsIDAsIDAsIDU3ODAsIDAsIDAsIDEyODg3NCwgCisgICAgMCwgMCwgNDMyOTcsIDk4MzA3OSwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCA2NjQ1MiwgCisgICAgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIAorICAgIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCA5MjI4NywgCisgICAgMTI4MjI0LCAwLCAwLCA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCA5ODM0NjAsIDQzMDYxLCA3MDU0LCAKICAgICA2NDE0NywgMCwgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCAxMjAwMDYsIDExOTgxLCAxMjIwMiwgMCwgCiAgICAgMTEwMzIsIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2ODY2MiwgNjU4NDMsIDE3MCwgMCwgMCwgNDE2OSwgMCwgNDE4NTksIAogICAgIDYwNTgsIDEyMDQwMSwgMTMyMDMsIDEyMDY1NywgMCwgMCwgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgNDIxMDYsIAogICAgIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgOTE3ODY1LCA0NzM3LCAxMTc3OSwgNDc0MiwgMTIwNTY0LCA5MjM5MSwgCi0gICAgNzM3MzYsIDAsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgMCwgOTI1MjUsIDAsIDUzMDAsIDQ3NDEsIDQyMTA4LCAKLSAgICAwLCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIDAsIDEyNzMzMSwgCi0gICAgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDAsIDc4NzYsIDY4MTMyLCA5MTc4NzIsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIAotICAgIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAwLCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgCi0gICAgMTQ5MCwgMCwgMTE5NTkxLCAwLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCi0gICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgOTE3ODUyLCAKLSAgICA2ODY1NSwgMCwgMCwgMCwgMCwgNjg2MjgsIDAsIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIAotICAgIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCAKLSAgICA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAwLCA2NDEwMSwgMCwgMCwgNDgyNCwgMTA2MTQsIDEyMDM5MCwgMCwgMTg4OCwgCi0gICAgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCAKLSAgICA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIAotICAgIDAsIDAsIDAsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAwLCA0MDE3LCAxMjgyNywgNTI0MSwgCi0gICAgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCAKLSAgICA5MTc1NjQsIDAsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAwLCA2NjIwMiwgODk1NywgNDEzOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI3NDAsIDEyODcwMiwgNDcyMiwgNjgxNiwgMTI3NzkzLCAxMjc1OSwgNDcyNSwgMCwgNDcyNiwgCi0gICAgMCwgMCwgMCwgOTE3OTA0LCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAwLCAKLSAgICAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA2NDIxNSwgNjQyMTQsIDE2NTYsIDQxODMxLCAwLCAKKyAgICA3MzczNiwgOTgzMzU2LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKKyAgICA0MjEwOCwgOTgzMzQ2LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAorICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzU4LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKKyAgICAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgCisgICAgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDAsIDExOTU5MSwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIAorICAgIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCAKKyAgICA0ODI1LCA2OTI0MCwgOTE3ODUyLCA2ODY1NSwgMCwgOTgzMzgwLCAwLCAwLCA2ODYyOCwgOTgzMzM5LCA5ODUwLCAxMTg5MzcsIAorICAgIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAwLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgCisgICAgMTEwMjMsIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgMCwgMTI2NjI2LCA2NDEwMSwgMCwgMCwgCisgICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMCwgMTg4OCwgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCAKKyAgICA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIAorICAgIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCAwLCAwLCAxMTkwNTMsIDAsIDEyNzY1LCAKKyAgICA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgCisgICAgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCA5MTc1NjQsIDAsIDExMzYzLCAKKyAgICAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAxMjY2NDEsIDY2MjAyLCA4OTU3LCA0MTM5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCA5ODMzNzUsIDQ3MjYsIDAsIAorICAgIDE5NDg5MiwgMCwgMTI4MzIxLCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAwLCAKKyAgICAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAwLCAKICAgICAwLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDAsIDY0MDY3LCAxMjczMjgsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCiAgICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDAsIDAsIAotICAgIDc5MzUsIDI0MjAsIDAsIDExMTQsIDkyNTk5LCA2NzU4NSwgNzg2NzUsIDEyMDA1MywgOTIzNTAsIDEyMDA1MSwgMzkzOCwgCisgICAgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3MDEwNCwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKICAgICAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCAxMjAwNjEsIDY1NDE1LCAxMjAwNTksIDYyOTIsIDY1MzAzLCA3OTU1LCAKICAgICA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDkxNzg5MCwgOTE3ODkxLCA2NTE1MiwgNzE5LCAxMjAwNDQsIAogICAgIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCAKICAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgOTE3OTAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgMCwgCi0gICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMCwgNjY0MzcsIAotICAgIDY2MDI1LCA3ODY5OSwgMCwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgOTE3ODc0LCA3ODY5NCwgOTE3ODgwLCAKKyAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDAsIDAsIDAsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAxMjY2MDYsIAorICAgIDY2NDM3LCA2NjAyNSwgNzg2OTksIDAsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDkxNzg3NCwgNzg2OTQsIDkxNzg4MCwgCiAgICAgOTE3ODc3LCA5MTc4NzgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDkxNzg4MiwgNTM2NSwgNDU0NSwgODkwMSwgOTI0MjEsIAogICAgIDExOTU1NSwgNDgxMywgMTI4MjYyLCAwLCA1OTI1LCA0ODA4LCA2NDMzMCwgMCwgNjU0NzUsIDExODk0MCwgMTk1MDI4LCAKLSAgICA0ODE0LCAwLCA0ODEwLCAwLCAwLCA2NDkyOCwgMTA1NDMsIDAsIDM1MjIsIDAsIDQxNCwgNjU0MDQsIDAsIDE5NTAyNywgCisgICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKICAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAogICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDAsIDY0MDgwLCAwLCA2NDA5MCwgMCwgMCwgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAxMjc4ODgsIAotICAgIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCAwLCAwLCAwLCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIAotICAgIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgCi0gICAgNjk2OTIsIDAsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIDAsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCAwLCAKLSAgICAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAwLCA0MTkzLCA5MjI1MCwgNDI0MSwgMCwgNzk5OCwgMCwgMCwgMCwgMCwgCi0gICAgMjMxNiwgMTE4ODIxLCAwLCAwLCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgMCwgMzc2MiwgCi0gICAgMTAwMTUsIDEyNzMzNSwgMTE5MjMyLCAwLCA0MTU5MCwgMCwgOTIzNzgsIDM3ODAsIDc0ODUsIDU3NzksIDAsIDQyMDM3LCAwLCAKLSAgICAzOTA2LCAxMjM0OSwgMCwgODMyNiwgMCwgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIDAsIDQzNjEzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyODAsIDc0NTU4LCAxMjczMzIsIDY4MTM4LCAxMzA3MiwgMTg5NCwgMCwgMCwgNjU0NzgsIAotICAgIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgMCwgMCwgMCwgMCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDAsIDExOTIzNywgCi0gICAgMCwgMTI4ODA1LCA0NDcwLCAxMTk2MTMsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAKLSAgICAxMjcxNDMsIDAsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCAwLCA2OTY4NSwgMCwgMCwgMCwgNDQwMjAsIAotICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCA0NjY4LCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKKyAgICAxMjcyMzMsIDY0MDkyLCA5ODM0NjIsIDY0MDgwLCAwLCA2NDA5MCwgMCwgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMCwgODQ1NCwgCisgICAgMTI3ODg4LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIAorICAgIDc4MTE2LCAwLCA5ODMxMzksIDAsIDk4MzA3NCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA5ODM4NjUsIAorICAgIDAsIDk4MzQyNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAwLCA0NTI5LCAKKyAgICAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCA5ODM0MjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIAorICAgIDIyOTEsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIAorICAgIDAsIDQxOTMsIDkyMjUwLCA0MjQxLCA5ODMwNTcsIDc5OTgsIDAsIDAsIDAsIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCAwLCAKKyAgICAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgOTgzODc3LCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKKyAgICAxMTkyMzIsIDAsIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgMCwgNDIwMzcsIDAsIDM5MDYsIDEyMzQ5LCAKKyAgICAwLCA4MzI2LCAwLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgMCwgNDM2MTMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI4MCwgNzQ1NTgsIDEyNzMzMiwgNjgxMzgsIDEzMDcyLCAxODk0LCAwLCAwLCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIAorICAgIDExNzczLCAwLCAwLCAwLCAwLCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzQzLCAxMTkyMzcsIDAsIDEyODgwNSwgCisgICAgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAxMjcxNDMsIDAsIAorICAgIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA5ODMzNDgsIDY5Njg1LCA5ODM3NDcsIDAsIDAsIDQ0MDIwLCAKKyAgICA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgMjI5MCwgMCwgMTE5NjI0LCAxNDY1LCAxMDg1MCwgCiAgICAgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDAsIDAsIDUzNTIsIDAsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCAKICAgICA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgNjk2MzcsIDkyMjQxLCA0MzYwNywgMCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDAsIAogICAgIDc0NDE3LCA0MDE4LCA3MTUwLCA2ODEyNywgMCwgMCwgMCwgMCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCiAgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDAsIDc4NzUxLCA3MTQ2LCAwLCA2NTE1MCwgCi0gICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDAsIDY5NjQxLCAxMDc1MywgCisgICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDk4MzQyNywgNjk2NDEsIDEwNzUzLCAKICAgICAxMDgzMCwgMCwgNjE1LCA2NDQ5MCwgNzU3NCwgOTI2MTcsIDc3OTIyLCAwLCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIAotICAgIDAsIDAsIDAsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDAsIDQxNjkxLCAwLCAwLCA3NDMyOSwgMCwgCi0gICAgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAwLCAKLSAgICAxMjgxOTgsIDAsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAwLCAKLSAgICA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAwLCA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIDkzNjcsIAotICAgIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDAsIDY0NDA5LCAzNTk2LCAwLCAwLCA5NzYzLCAKKyAgICAwLCAwLCA2Nzk5NiwgMjAyMCwgMCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgMCwgNzQzMjksIAorICAgIDAsIDY0NjIyLCA5MDcwLCAwLCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMCwgNzAwMCwgMzkwNCwgCisgICAgMCwgMTI4MTk4LCAwLCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCisgICAgMCwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMCwgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCAKKyAgICA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAwLCA2NDQwOSwgMzU5NiwgMCwgMCwgOTc2MywgCiAgICAgMTIwMjgwLCA5MjE5MiwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMCwgMCwgMTA4MjAsIAotICAgIDQzOTg3LCAwLCAwLCAxNzY5LCA0MTcxNSwgMjQ2MywgNzg0ODksIDAsIDEyNzcwLCAwLCAxNTM4LCAwLCA0MzEyNCwgMCwgCi0gICAgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKKyAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMTI2NTAwLCAxNTM4LCAwLCA0MzEyNCwgCisgICAgMCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKICAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKICAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAwLCAKICAgICA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgNDEwMTksIDAsIAogICAgIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDc4MjA4LCAxMTg4NzksIAotICAgIDU1MjIzLCAwLCAwLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDEyMDM0MCwgMCwgNzczMywgMCwgNDk5OCwgCi0gICAgMCwgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCAwLCA0MDEzLCAwLCAxMDg4MSwgMCwgMCwgMCwgNzQ3ODgsIDIwMTQsIAotICAgIDAsIDAsIDk3NjUsIDAsIDAsIDAsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAwLCAwLCAyMDE1LCAKLSAgICAwLCAwLCAwLCA2NjMxOCwgNDMyMzMsIDAsIDQyNTE3LCAwLCAwLCAwLCAxMjY5OCwgODA5NCwgMTAxMzUsIDY1OTA5LCAKLSAgICA2NDc0LCA3OTQsIDAsIDEyNjU2LCAxMjgxMjIsIDExOTM1MywgMTI4MjcwLCAxNjY1LCAwLCA0ODMzLCAwLCAxMTkzNTEsIAotICAgIDEyNzM2NywgMCwgMTg5LCAxMjYxMSwgMCwgMCwgMjg1OSwgNDgzOCwgMCwgNDgzNCwgNjUwNzgsIDAsIDAsIDQ4MzcsIAotICAgIDEyNzA2MSwgNzcwLCAwLCA4MTEsIDAsIDQxMDQyLCA5MTc1NTEsIDQxMzE4LCA2NDQyNywgMCwgMCwgNzg4NDgsIDM4OTUsIAotICAgIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgCi0gICAgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIAotICAgIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIAotICAgIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAKLSAgICAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIAotICAgIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAwLCAwLCAwLCAKLSAgICA0MjIzMSwgODI0NiwgMCwgMCwgMCwgNDE4NDAsIDAsIDIzNzcsIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAKLSAgICAxMjU1OSwgMTI1NzAsIDg0ODgsIDEwMDMsIDIzNzMsIDk0NDYsIDc0ODEsIDk0NDgsIDQ4LCAwLCA5NDgwLCA0ODEsIDAsIAotICAgIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIAotICAgIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDAsIDAsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAKLSAgICAyMzYyLCA5NjU1LCAwLCAyMDA0LCA5MDk2LCA5NzgyLCAxMjg4NDgsIDkxNzIsIDEyODU0NSwgMTk5NjUsIDAsIDU5NTUsIAotICAgIDY3NjY2LCAxMTA4LCAwLCA3NDc3MywgMCwgMCwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIAotICAgIDEzOTIsIDAsIDAsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDExODgwNSwgMTAzNTMsIDEwNDE3LCAwLCAwLCA2NDUyNCwgCi0gICAgOTI0MTgsIDQwMTksIDAsIDAsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgMCwgMCwgMCwgMCwgNDI0MTAsIDc0NDQ4LCAKLSAgICAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDAsIAotICAgIDY4Njc4LCAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIAotICAgIDY0NzYwLCAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgCi0gICAgMzYsIDAsIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDAsIDIwMDksIDAsIDAsIDEyNzE0MiwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCAxMjA2OTUsIDg2MjEsIDAsIDEyODUyLCAzMDMxLCAwLCA2NDM2MSwgMCwgMTgyLCAxOTQ3MTgsIAotICAgIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCAwLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAxMDg0OCwgNDU3MCwgCi0gICAgNjUzMDEsIDQ0MDEzLCA0MjU1LCAwLCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCAKLSAgICA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIAotICAgIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAKLSAgICAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgCi0gICAgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIAotICAgIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgCi0gICAgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgCi0gICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgMCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAwLCAKLSAgICA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgOTI0NjcsIDAsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCAKLSAgICA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDAsIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgCi0gICAgMjg3MCwgMCwgNzgyMTgsIDAsIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgMCwgMTIwNDIwLCA5MjQ5MCwgCi0gICAgMTIwMzMxLCA4MTA5LCA0MzEwNSwgMCwgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCAKLSAgICA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgCi0gICAgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIAotICAgIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgCi0gICAgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgMCwgNTk1OSwgMCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIAotICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIAotICAgIDM3MTksIDQwMDYsIDAsIDE5OTU3LCAxMjg3NzMsIDIwMjEsIDExOTMzMiwgMTIwNjk5LCAxMTkxNTAsIDQzMDI4LCA2NTQ5MywgCi0gICAgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIDc3ODcsIDc4MjM0LCAKLSAgICA2NTQ5NCwgNjgxNTMsIDAsIDAsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAwLCAwLCA2NjMxNiwgNjU0NjcsIAotICAgIDU3NzEsIDQxMjk4LCAwLCA5NzQyLCA1MjEsIDAsIDEwODAwLCAwLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgCi0gICAgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCAwLCA2NTc4MiwgOTg0MSwgCi0gICAgODg0MywgMTIxNDUsIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDAsIDk1NzMsIDAsIDY1MjkwLCAKLSAgICA4ODQ5LCAwLCA2NTg1NSwgNjUxMTIsIDE3OTYsIDEyMDUwNSwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCAwLCAKLSAgICA3Mzg4LCAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDAsIDEyMDQ1NywgMTI2NjEsIDc2MDgsIAotICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKLSAgICAxMzkwLCAwLCAwLCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIAotICAgIDEyMDEyMSwgNjYwMzUsIDAsIDAsIDY1ODUxLCA0MjYwNywgMTI4MTkwLCA5MjQwMywgMzE2OCwgMCwgNDIxMzQsIDAsIAotICAgIDIzNzAsIDI4NDYsIDkyNjA1LCAwLCAwLCAxMjAxMzIsIDAsIDE4MzYsIDAsIDAsIDkyNTU4LCAzNzQwLCA5MjU0NywgNjI5MCwgCisgICAgNTUyMjMsIDAsIDEyODA3MSwgNDE4MjYsIDg4NjUsIDY0MDIsIDAsIDEzMjc5LCA3OTE3LCA3NDc1NSwgMCwgNzczMywgMCwgCisgICAgNDk5OCwgOTgzODg3LCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDAsIDAsIDcwMDYxLCA0MDEzLCAwLCAxMDg4MSwgMCwgMCwgCisgICAgMCwgNzQ3ODgsIDIwMTQsIDAsIDAsIDk3NjUsIDAsIDAsIDAsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAKKyAgICAwLCAwLCAwLCAyMDE1LCAwLCAwLCAwLCA2NjMxOCwgNDMyMzMsIDAsIDQyNTE3LCAwLCAwLCAwLCAxMjY5OCwgODA5NCwgCisgICAgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDAsIDEyNjU2LCAxMjgxMjIsIDExOTM1MywgMTI4MjcwLCAxNjY1LCAwLCA0ODMzLCAKKyAgICA5ODMwNTMsIDExOTM1MSwgMTI3MzY3LCAwLCAxODksIDEyNjExLCAwLCAwLCAyODU5LCA0ODM4LCAwLCA0ODM0LCA2NTA3OCwgCisgICAgMCwgMCwgNDgzNywgMTI3MDYxLCA3NzAsIDAsIDgxMSwgMCwgNDEwNDIsIDkxNzU1MSwgNDEzMTgsIDY0NDI3LCAwLCAKKyAgICAxMjgyMDgsIDc4ODQ4LCAzODk1LCAwLCA3NDM0MSwgMzk3NiwgMCwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MzY4NiwgNzg4NDYsIDQxODc3LCAwLCAyODcxLCA2NDYxNCwgMTI4Nzg1LCA5OTksIDAsIDYzNDUsIAorICAgIDQxODc2LCAyNjYzLCAyMDE3LCAwLCAwLCAxMTA0MCwgMTAxNTAsIDAsIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAKKyAgICAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgCisgICAgMTI1NjYsIDEyNTY5LCAxMjU1NCwgMCwgMTA4MTIsIDc4ODUxLCAwLCAwLCAzMDc4LCAxNDAyLCAwLCAxMjgyNzUsIDAsIDAsIAorICAgIDExOTI0OCwgMzk0LCAzMDg4LCAwLCA5MjE3MiwgMCwgMzk5MSwgNjQzOTEsIDAsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgCisgICAgNjk2NTksIDczOTE0LCAwLCAwLCAwLCAwLCA0MjIzMSwgODI0NiwgMCwgMCwgMCwgNDE4NDAsIDk4MzYwOSwgMjM3NywgCisgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCisgICAgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCisgICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgCisgICAgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIAorICAgIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgCisgICAgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgCisgICAgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgOTgzMjgwLCA0MzI4MCwgODIxOSwgCisgICAgNjg0MDIsIDE4MTIsIDExOTk2MywgOTgzNjgzLCAwLCAxMjY0ODgsIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAKKyAgICAxMDY5NywgMzE2OSwgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMCwgMTI4MTM5LCA5ODMyNTMsIDY4Njc4LCAKKyAgICAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKKyAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAorICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDk4MzEzMCwgMjAwOSwgMCwgMCwgMTI3MTQyLCAKKyAgICA5NjQwLCAxMTk5NTEsIDAsIDEyMDY5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMCwgCisgICAgMTgyLCAxOTQ3MTgsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAKKyAgICAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIAorICAgIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIAorICAgIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCAKKyAgICA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCAKKyAgICA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIAorICAgIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCAKKyAgICA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIAorICAgIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgCisgICAgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgCisgICAgOTI0NjcsIDEwMTg3LCAxNzAwLCAxMTkyMjMsIDAsIDAsIDEyODExOSwgNDAwNCwgMCwgMTA5NjgsIDQzMjk2LCA5ODM2MzMsIAorICAgIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgCisgICAgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCAwLCAxMjA0MjAsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIDk4MzE3NCwgCisgICAgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCAKKyAgICA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAKKyAgICAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAKKyAgICAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgCisgICAgMCwgNTk1OSwgNjc5ODQsIDczOTc2LCAxMjAzMDUsIDQzMzcxLCA2OTQxLCAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgCisgICAgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgMTIwMzAyLCA0Nzc5LCAwLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCAKKyAgICAxMjg3NzMsIDIwMjEsIDExOTMzMiwgMTIwNjk5LCAxMTkxNTAsIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIAorICAgIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIDc3ODcsIDc4MjM0LCA2NTQ5NCwgNjgxNTMsIDAsIDAsIAorICAgIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAwLCAwLCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3ODUsIAorICAgIDk3NDIsIDUyMSwgMCwgMTA4MDAsIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgCisgICAgMCwgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCAKKyAgICA5MjQ3MCwgMTAwNzQsIDc4NTQ4LCAwLCAzNzY5LCAwLCAwLCAwLCA5ODMxMDcsIDk1NzMsIDAsIDY1MjkwLCA4ODQ5LCAwLCAKKyAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDEyMDUwNSwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCAwLCA3Mzg4LCAxMDYyMSwgCisgICAgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDAsIDEyMDQ1NywgMTI2NjEsIDc2MDgsIDEwMzU0LCAxMDQxOCwgCisgICAgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAxMzkwLCAwLCAwLCA0MjEsIAorICAgIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIDEyMDEyMSwgNjYwMzUsIAorICAgIDk4MzkwNCwgMCwgNjU4NTEsIDQyNjA3LCAxMjgxOTAsIDkyNDAzLCAzMTY4LCAwLCA0MjEzNCwgMTE4MzEsIDIzNzAsIAorICAgIDI4NDYsIDkyNjA1LCAwLCAwLCAxMjAxMzIsIDAsIDE4MzYsIDAsIDAsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgCiAgICAgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIDEyMDQzNCwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgCi0gICAgMTIwNDQ2LCAwLCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgMCwgMCwgMTA2MTgsIDI1ODQsIDAsIDAsIDAsIDk5OTgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3NDgwOSwgMTIwMTMwLCA0MjY3LCAKLSAgICAxNjMxLCA0MjIwNiwgMTI3ODY2LCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIDAsIDAsIDEyNTg2LCAKLSAgICAwLCA5MjQyLCAxMjc5MjIsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAwLCA3NzkzLCA3ODI3NSwgOTMyOCwgMCwgCi0gICAgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCA2NzY1MCwgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgCi0gICAgMCwgMCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAxMTQ5OCwgMCwgMCwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCAKLSAgICA0MTA0MSwgNzQ0MTMsIDAsIDAsIDAsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDAsIAotICAgIDAsIDE2MDYsIDEyMDM0OCwgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgMCwgMTIwNjQ5LCAwLCAwLCA0MzEyLCA3NDA5MSwgCi0gICAgMTIwMzM3LCAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDEyMDMzNSwgNDgyNywgMTA4OTQsIDEyODEwLCAKLSAgICA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCAwLCAwLCAwLCAxMTk3MywgCisgICAgMTIwNDQ2LCAwLCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgOTgzNzM0LCAwLCAxMDYxOCwgMjU4NCwgMCwgMCwgMCwgCisgICAgOTk5OCwgMTI4NTY0LCAwLCAwLCAwLCAwLCA2MjA0LCAwLCAwLCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAorICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIAorICAgIDAsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyNzkyMiwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc4OCwgCisgICAgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCAyMjg1LCA5MjM0NCwgMzk4NiwgCisgICAgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCAwLCA5ODMzNTAsIDk1NDEsIDc4Mjc2LCAwLCAxMTI3NSwgODU0MCwgCisgICAgMTE0OTgsIDAsIDk4MzM0OSwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgMCwgCisgICAgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTgzMzQyLCAwLCAxNjA2LCAxMjAzNDgsIAorICAgIDEyMDM1MSwgMzA5MywgNjg0MzYsIDAsIDk4MzA2MSwgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCAKKyAgICAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAKKyAgICAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDAsIDAsIDExODgzNywgMTE5NzMsIAogICAgIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAwLCAKLSAgICAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIDAsIDEwMzg5LCAwLCAwLCA0ODk1LCAKLSAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCAxOTQ5MjAsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKLSAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCAwLCAyMzc2LCAwLCAxMTkzMjAsIDAsIAotICAgIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzQxODgsIDEyMDI0MSwgMCwgMCwgMTIwMDQ3LCAxMjg1NzUsIDAsIDAsIDEyMDA0OSwgMCwgCi0gICAgMTg0NywgMCwgMTAzMzksIDAsIDQyMzg0LCAwLCA0MjI3LCA3NDE1OCwgMCwgOTI1MDEsIDQzMDMyLCAwLCA0MjM2NSwgMCwgCi0gICAgMTI2NzEsIDExMzg0LCAwLCAwLCAwLCA2NDc5NywgMCwgNTgyMCwgMCwgMTIwMDUyLCAxMjAwNjUsIDAsIDEyMDA2NCwgCi0gICAgMTIwNjUwLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMCwgNzM3NywgMTI3ODY3LCA0MTc5OSwgNjU1MzAsIAotICAgIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgMCwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCAwLCA3NDE4NCwgMCwgCi0gICAgMTIwMDU1LCAwLCA0MzE3NSwgMCwgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgCi0gICAgMCwgNTIwLCA0MjAwLCAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgMCwgODM2MCwgMCwgNzgwNDQsIAotICAgIDMyMSwgNDIyOSwgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCAKLSAgICA5MjM4NiwgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIAotICAgIDgyMDksIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCisgICAgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAwLCAxMDM4OSwgMTI2NDg1LCAwLCA0ODk1LCAKKyAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDAsIDAsIAorICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDkzOTk2LCAyMzc2LCAwLCAxMTkzMjAsIAorICAgIDAsIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgCisgICAgMCwgMCwgOTgzMDg0LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDk4MzA4NiwgOTgzNTczLCAxMjAwNDcsIDEyODU3NSwgMCwgCisgICAgMCwgMTIwMDQ5LCAwLCAxODQ3LCAwLCAxMDMzOSwgOTgzMzU3LCA0MjM4NCwgMCwgNDIyNywgNzQxNTgsIDAsIDkyNTAxLCAKKyAgICA0MzAzMiwgMCwgNDIzNjUsIDAsIDEyNjcxLCAxMTM4NCwgMCwgOTgzNDU3LCAwLCA2NDc5NywgOTgzMzM3LCA1ODIwLCAKKyAgICA5ODMzMzYsIDEyMDA1MiwgMTIwMDY1LCAwLCAxMjAwNjQsIDEyMDY1MCwgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAKKyAgICAxMjAwNjMsIDAsIDczNzcsIDEyNzg2NywgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIAorICAgIDk4MzMzMiwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCA5ODMzNjEsIDc0MTg0LCA5ODMzNjAsIDEyMDA1NSwgMCwgNDMxNzUsIAorICAgIDAsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKKyAgICAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgOTgzNjcyLCA4MzYwLCAwLCA3ODA0NCwgMzIxLCA0MjI5LCAKKyAgICA2NDU0MywgOTE3OTQ2LCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDAsIDkxOTUsIDkyMzg2LCAKKyAgICAxODYxLCAwLCA3MzczMywgMCwgMCwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgCisgICAgMCwgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMCwgNzQzLCA0NDE0LCAKICAgICAxMjA3NjYsIDAsIDQyNjMyLCA5MTc5NzMsIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCAKICAgICA0MzM0MSwgMCwgMTk5MTksIDAsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDAsIDAsIDM1MTMsIDAsIDExODg4MywgNDMzNDIsIAogICAgIDExOTA2NCwgNjU1MjksIDY1MzY0LCAxMjgxOTcsIDAsIDY0ODUsIDEzOTcsIDAsIDQxOTg2LCA5MjY3OCwgMCwgMCwgCi0gICAgNzQwOTcsIDAsIDc0NzEsIDEyMDc5LCAwLCAxMjY4MiwgNDMyODcsIDkyMzE3LCAwLCAwLCAwLCAwLCAwLCAxMDk5LCAKLSAgICAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgCi0gICAgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIAotICAgIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgMCwgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCAKLSAgICA0MjY0MiwgMTIwMjMwLCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDAsIDAsIDI2NSwgNDE3OTUsIDY0NjY2LCAwLCA0MzUzMCwgCi0gICAgMjc1MiwgMCwgMCwgMCwgNTksIDAsIDAsIDAsIDkyMzcxLCA3Nzg3MywgNDE4MTAsIDAsIDcwMTAsIDAsIDQxODA5LCAKLSAgICA0MTQ5NSwgMTE5MzY0LCAwLCA0MjI1MiwgNDIyMTMsIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA2NjI1NSwgCi0gICAgMTMxMjcsIDEyMDA2NywgMCwgMCwgMCwgOTE3OTc3LCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCAxOTQ4NzAsIDIxMDMsIAotICAgIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAxMzE1OSwgMCwgNjQ4MSwgNDEyMTMsIDAsIDAsIDAsIDAsIDQxOTgzLCAKLSAgICA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCAwLCA0NjIsIDY4MTEwLCAxMDQ5MywgMCwgODEyOSwgMCwgMCwgNzQ0NzEsIAotICAgIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAxMTkwMTMsIDQzMzQwLCAKLSAgICAwLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDAsIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCAKLSAgICA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIDAsIDQxODQxLCA0MzMzOCwgMCwgMCwgNTcyNiwgNjQ5MTUsIAotICAgIDQyMTc1LCAwLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIDAsIDAsIDQzNzMsIDc4MDU4LCAwLCAKLSAgICA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAwLCA5MjM2NSwgMCwgNjQ5MjIsIDAsIDgxOTAsIAotICAgIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDAsIDExOTEyNSwgMzQzOSwgMTgyNSwgCi0gICAgMTE5MiwgMTIwMTA2LCA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDAsIDg5OTAsIDI4NDgsIDAsIDEyODIyMywgCi0gICAgOTI1MjgsIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAwLCAwLCA4ODgzLCA5MTc4MDIsIDcyOCwgNjgxNzgsIDk5NSwgMCwgMCwgCi0gICAgNjQ4MjYsIDAsIDkxNzc5OCwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgMTk0ODE0LCAwLCAKLSAgICAxMjExMiwgMCwgMCwgMCwgNzQ0MTksIDEyMzM1LCAxMjAxMDQsIDkxNzc5NSwgMzQ0MywgMzEyOSwgMCwgMjEwMiwgNjU0NDUsIAotICAgIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDc4MjU1LCAwLCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAwLCAKLSAgICA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI4Njc4LCAzNTQwLCAxMjg2NDksIDgzNSwgMCwgNjk4MTYsIAorICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDk4MzE0MywgOTgzNjk4LCAwLCAKKyAgICAwLCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCAKKyAgICA3ODIyMiwgMTM0NiwgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgCisgICAgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzODkzLCAKKyAgICA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCAKKyAgICA0MTc5NSwgNjQ2NjYsIDEyNjUwOCwgNDM1MzAsIDI3NTIsIDAsIDAsIDk4MzQ4NSwgNTksIDAsIDk4MzU5MywgMCwgOTIzNzEsIAorICAgIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgCisgICAgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAxMzEyNywgMTIwMDY3LCAwLCA3NDM5NywgMTIwMjM1LCA5MTc5NzcsIAorICAgIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIAorICAgIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIAorICAgIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCisgICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgCisgICAgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgCisgICAgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAKKyAgICAyODUxLCA0MzAxNywgOTgzNTg5LCAwLCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAKKyAgICAwLCA2NTM2MCwgMCwgOTIzNjUsIDkxNzc4OSwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgCisgICAgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDk4MzgzOCwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIAorICAgIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAKKyAgICAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCA2NDgyNiwgMCwgOTE3Nzk4LCAKKyAgICAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDk4Mzg0MSwgMTIxMTIsIDY5OTEyLCAwLCAKKyAgICAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgNzgyNTgsIAorICAgIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIDQxODk0LCAwLCAKKyAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCA3MTM0MCwgNjk4MTYsIAogICAgIDExOTg2OCwgNzQ0MDgsIDAsIDczOTU5LCA1NDI2LCA0MjU4LCAwLCAwLCA1NDI0LCAxMjgxMjcsIDgyODMsIDAsIDU0MzQsIAotICAgIDAsIDAsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjgzMDcsIDM0NjQsIDY0ODYsIAotICAgIDQ4MTksIDEyODIzMywgMCwgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAwLCA0MzEsIDAsIDAsIAotICAgIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgMCwgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgCi0gICAgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgCi0gICAgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMCwgNzg3MTgsIAotICAgIDkyNzIzLCAzNTQ5LCAwLCA5MTEwLCAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxOTQ4MTIsIDkwOTcsIDAsIDQzMDE1LCAKLSAgICA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAwLCAwLCAwLCAwLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIAotICAgIDExODgxOCwgMCwgNTg3MiwgNjQ5NSwgMCwgMCwgMCwgOTI1NDMsIDAsIDEyMDczMywgMTI4NDksIDM5NTMsIDE4OTcsIDAsIAotICAgIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMCwgNjg0NzMsIDc0MTA0LCA1MjI4LCAKLSAgICAxMjg4MDQsIDc4NjgsIDQzMTg0LCAwLCAwLCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAwLCAxMTYyLCAwLCAyNjcxLCAwLCAKLSAgICAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgMCwgMCwgMTk5MjEsIDc0MzMxLCAKLSAgICAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgMCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDAsIAotICAgIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgMCwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIAotICAgIDExMzMxLCA2MTQ3LCAxOTQ5NDEsIDQzMjgyLCA4ODMzLCAwLCAwLCA2NTA0LCA3ODQwOCwgMTI2OTc5LCAxMDcxOSwgMCwgCi0gICAgMTg5OCwgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDAsIDE5NDY3MSwgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKLSAgICA5MTY5LCA4MzgsIDEyNzA5MiwgMTIwNjk3LCA4NDQsIDUwMTQsIDAsIDI1NiwgMCwgOTk5MCwgMCwgNDI3MzksIDkxNzg1MSwgCi0gICAgNzU0MiwgNjU0NjQsIDk3MjYsIDAsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIAotICAgIDExNzYxLCAxOTQ2NTUsIDAsIDQxMDk0LCAwLCAwLCAwLCAwLCA5MjY4OSwgNjE5NiwgNjk0NSwgMTk0NjI4LCAxOTQ4OTAsIAotICAgIDEyODE4NCwgMTIwNDkxLCAxMTgxNiwgMTk0OTQzLCA1NzMzLCAyOTMwLCAwLCAwLCA0MTA5OCwgMCwgNDEwOTMsIDAsIAotICAgIDY2NjI2LCA1ODgsIDk3NjAsIDAsIDE5NDcxNywgMTIzOCwgMjAwLCAwLCAxNjYwLCA3MzkxNiwgMCwgMTE4OTA1LCA3NDM2MiwgCi0gICAgMCwgOTI0ODUsIDE5NDY1MSwgMCwgMCwgMzM5NCwgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIAotICAgIDEyNzE4MywgNDMyODQsIDE5NDY1NywgNzgxNywgMTg0MSwgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIAotICAgIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgCi0gICAgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDc4NzEzLCA2NTMyOCwgCi0gICAgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgMCwgMTIwMDksIDEyMzk5LCAwLCA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCAKLSAgICA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDkyNTI3LCA2NTMxNywgNzc4ODAsIDAsIDAsIDAsIAotICAgIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgMCwgMCwgMCwgMTE5NjIxLCA5MjUyOSwgNzQ1MzYsIDEyNDQ3LCAKLSAgICA2NDQ4NiwgMTI3Mzc0LCAwLCAwLCAwLCAwLCAwLCA0Mjc2NywgMTA5MTUsIDAsIDEyMDA3LCA0MzY5NSwgMTIwNTIwLCAKLSAgICAxMTk3NSwgMTk0ODc4LCAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMCwgNDMxNjgsIDQxODcyLCA0MzcwNiwgNDQ5NiwgCi0gICAgMTk0ODc5LCAxMjgxNDgsIDAsIDAsIDAsIDAsIDAsIDY0NzMwLCAwLCA2NjcxNCwgNjgyMjIsIDAsIDAsIDY1NTk2LCAKLSAgICA5MjMwNiwgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgMTI3MjQyLCA2Nzg3MSwgNzQzODYsIAotICAgIDAsIDgyMzMsIDEyODIwLCAwLCA2NjgzLCAxOTQ4NzYsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMCwgMTQ3MywgCi0gICAgNDI4MjAsIDY0MzI5LCAxMjc4MzIsIDAsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCAwLCA0MTEwNCwgMCwgCi0gICAgMzQwNiwgMTA1NCwgMTE5MDY1LCAxMDQwLCA2NTQ1MCwgMCwgNDQzNCwgMTA2OSwgMCwgMTE4ODYyLCA2NTczNywgOTE3NzY1LCAKLSAgICAxMjg3MDUsIDAsIDAsIDk2OTMsIDQxOTQzLCAwLCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAxMDU5LCA5NzkwLCAKLSAgICA4OTk1LCAxMjgyODYsIDAsIDY1OTM3LCAwLCA0MTc2NCwgMTA2NDYsIDAsIDExODgzMywgOTIzNzIsIDAsIDc0ODMwLCAKLSAgICA3ODU2OSwgMTI3NDMsIDAsIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDExOTYxOSwgNjMzNSwgCi0gICAgNjY2MDIsIDExMzEyLCA2NDgwNywgMCwgMCwgNDE3NjcsIDAsIDAsIDQzMDIwLCAxMjgyNzEsIDM5NTUsIDc0MjU0LCAwLCAwLCAKLSAgICA5MTc4NjEsIDAsIDc3OTI2LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMCwgMCwgMCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgCi0gICAgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDAsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgCi0gICAgMTI4MDYxLCA3ODU3NCwgMCwgMCwgMCwgNTc0NywgNzg4MjUsIDAsIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIAotICAgIDQzODEyLCA0MjE0NCwgNjUwMTUsIDAsIDU2MywgMCwgMCwgMTI3OTgsIDExMjcxLCA1NywgMCwgMCwgOTE3ODYwLCAKLSAgICAxMTkwNDMsIDAsIDExOTEzNCwgNDMxMzcsIDY5NCwgMCwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIAotICAgIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAwLCAxNTc0LCA3MzgxLCAKLSAgICAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCAKLSAgICA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMCwgNzQwMTUsIDkwNTUsIDQxODUzLCA0ODU4LCA5MTc3ODAsIDAsIDQzNiwgCi0gICAgNDc3MSwgMCwgMjc4NiwgMCwgNDg1NiwgODA1MSwgMCwgMTE5NjA5LCAwLCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIAotICAgIDEyMDczMiwgNjY3MTAsIDExODgzNCwgMCwgNzM5MDYsIDAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCAKLSAgICA0MjE1NywgMCwgMzE1NywgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAotICAgIDEwMjI2LCA2NTE0MiwgMCwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCAwLCAwLCAzODYsIDAsIDg4MzQsIDAsIAotICAgIDEyODE1LCA0MzU3NCwgMCwgNzM5MDcsIDAsIDc0MTk2LCA3MjIwLCA3NDUwNCwgMCwgNzQzMTYsIDAsIDc3OTMyLCA0MzA0LCAKLSAgICA3NDUwMywgODE2MCwgNzg3MDcsIDE5NDc1MywgMCwgMCwgMCwgMTM0OCwgOTIzNDksIDc4NTk3LCAwLCAxMzMwMywgMCwgCi0gICAgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKLSAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgMTk0NzYyLCAKLSAgICAyNjcyLCAzNzM1LCAxMjc0NzEsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCAxMTkwMjQsIDAsIDQzNzQyLCAKLSAgICAwLCA5NDg3LCAxMTk5NTksIDExOTExNywgMzg0MiwgMTI4NzY4LCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIDEyNzk3NiwgCi0gICAgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA3ODQ2OCwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAxOTQ4NTUsIAotICAgIDE5NDY5MCwgMTk0ODU3LCAzNjA0LCAwLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgMTk2MiwgCi0gICAgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDAsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgNzQxNzQsIAotICAgIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMCwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgMTk0Njk5LCAxOTQ4NDcsIAotICAgIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDgwLCAxOTUwNzAsIDY0NzIsIDY1ODE0LCAKLSAgICA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDAsIDAsIDE5NTAyNCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIAotICAgIDAsIDY2ODAsIDE5NTA0MiwgMCwgMTk1MDUxLCA2Njc5LCA3NDQxMiwgOTIyNTEsIDE5NDg2NiwgNzQ0MjEsIDExMzgyLCAwLCAKLSAgICAwLCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIAotICAgIDE5NDgzOCwgMTI4MjUyLCA3ODE5NSwgNjU0NDIsIDExOTYxMCwgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAKLSAgICAwLCAxOTQ4MTgsIDEyODg0NSwgMTk0ODIwLCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCAxOTQ4MjUsIAotICAgIDczOTI3LCA5MjQ0NCwgMTk0NzM2LCA2NTc0NiwgMTI3NDc2LCA3NDQwOSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIAotICAgIDE5NDgzMSwgMTY3NywgMCwgMCwgMTk0ODA2LCA5MTc4NTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAKLSAgICAxMDE2MCwgMCwgMCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDkyMTc0LCA3NDE3NywgNzUwNSwgNTQzLCA2NDkxNiwgCi0gICAgNjQ3MzYsIDAsIDAsIDY0NjU1LCAwLCAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAwLCA2NTI2NSwgMTk0NjM5LCAwLCAKLSAgICAxMjcxNzAsIDAsIDAsIDAsIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDAsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgMCwgCi0gICAgMCwgMCwgNTA2LCA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDAsIDg4NDEsIDAsIAotICAgIDUxNiwgMCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKLSAgICA3NDUyMCwgNzQzMDgsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCAxMjAxNzQsIDY1ODQsIDc3NDksIAotICAgIDExMDM3LCAwLCAxNzU4LCAwLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAorICAgIDk4MzU5MCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgCisgICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgCisgICAgNDMxLCAwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY1NCwgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIAorICAgIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIAorICAgIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAxOTUwNjYsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIAorICAgIDY2MDM5LCAwLCA3ODcxOCwgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgCisgICAgOTA5NywgMCwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDEyNjQ5NCwgMCwgMCwgNDI2OTQsIAorICAgIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIAorICAgIDEyODQ5LCAzOTUzLCAxODk3LCAwLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIAorICAgIDY4NDczLCA3NDEwNCwgNTIyOCwgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgCisgICAgMTE2MiwgOTE3ODQ3LCAyNjcxLCAwLCAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgCisgICAgMCwgMCwgMTk5MjEsIDc0MzMxLCAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgOTgzNzc5LCA1NTI0OSwgNDgyMCwgCisgICAgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIAorICAgIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgCisgICAgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIAorICAgIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgODM4LCAxMjAwODcsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAKKyAgICAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIAorICAgIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMTk0ODkzLCAwLCAKKyAgICA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDE5NDg5MCwgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIAorICAgIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIAorICAgIDk4MzIwNSwgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzY5NywgMzM5NCwgCisgICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCisgICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCisgICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCisgICAgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAKKyAgICAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgCisgICAgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAKKyAgICAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIDEyNjU2MiwgOTgzMTI5LCAwLCAKKyAgICAwLCA5ODM3OTMsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIDExOTc1LCAxOTQ4NzgsIDAsIAorICAgIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgMTI4MTQ4LCAKKyAgICAxMjAyNDEsIDAsIDAsIDAsIDAsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDkyMzA2LCAKKyAgICAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjY0NzMsIDY3ODcxLCA3NDM4NiwgMCwgCisgICAgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgCisgICAgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCA5NDAwMywgMzQwNiwgCisgICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAorICAgIDEyODcwNSwgMCwgOTgzNjg0LCA5NjkzLCA0MTk0MywgMTI2NTY0LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAKKyAgICAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDk4MzY4NywgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCAKKyAgICA5MjM3MiwgMCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjgwLCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIAorICAgIDEyMjA3LCAxMTk2MTksIDYzMzUsIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAxMTk2MjksIDk4Mzc1NSwgCisgICAgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDk4Mzc0NSwgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgCisgICAgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgCisgICAgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIDc0Mjg0LCAwLCA1NzQ3LCAKKyAgICA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAKKyAgICA5ODM2ODIsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgNDMxMzcsIDY5NCwgMCwgCisgICAgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAKKyAgICAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAxMjY0NzgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIAorICAgIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAKKyAgICAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCAKKyAgICA4MDUxLCAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDExODgzNCwgCisgICAgOTgzMzUxLCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAorICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAorICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NTYsIDAsIDM4NiwgMCwgODgzNCwgMCwgCisgICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIAorICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAKKyAgICAxMzMwMywgMCwgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIAorICAgIDc4NTk4LCA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgCisgICAgMTk0NzYyLCAyNjcyLCAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMCwgCisgICAgNDM3NDIsIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCisgICAgMTI3OTc2LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAorICAgIDE5NDg1NSwgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgCisgICAgNDI1MDcsIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIAorICAgIDU0MzcsIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIAorICAgIDE5NDY5OSwgMTk0ODQ3LCAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCAKKyAgICA2NDcyLCA2NTgxNCwgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MDgsIDk4MzI0MSwgCisgICAgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCAKKyAgICA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDk4MzYyMiwgOTgzNjI4LCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAKKyAgICAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgCisgICAgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDE5NDgxOCwgMTI4ODQ1LCAxOTQ4MjAsIAorICAgIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDE5NDgyNSwgNzM5MjcsIDkyNDQ0LCAxOTQ3MzYsIAorICAgIDY1NzQ2LCAxMjc0NzYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTk0ODMxLCAxNjc3LCAwLCAwLCAKKyAgICAxMjY1OTAsIDkxNzg1NSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIDEwMTYwLCAwLCAwLCA3NTg1LCAKKyAgICA2NTE2OSwgMjA1MiwgNDMwOCwgOTIxNzQsIDQzMDAwLCA3NTA1LCA1NDMsIDY0OTE2LCA2NDczNiwgMCwgMCwgNjQ2NTUsIDAsIAorICAgIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIDAsIDY1MjY1LCAxOTQ2MzksIDAsIDEyNzE3MCwgMCwgMCwgMCwgMCwgCisgICAgMTI5OTQsIDkyNzI4LCAxMDgyOCwgOTgzOTM0LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDAsIDAsIDAsIDUwNiwgCisgICAgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCA5ODM2NzEsIDg4NDEsIDAsIDUxNiwgCisgICAgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCisgICAgMTE4MjcsIDc0MzA4LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAorICAgIDExMDM3LCAwLCAxNzU4LCAxMjcwOTIsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgCiAgICAgMTIwMTk2LCAxMjAxOTUsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgNjQ3MDIsIDEyNjQzLCA4MjUsIAogICAgIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCA3ODgyOSwgCiAgICAgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMCwgMTEzMTMsIDAsIDM0MDMsIDAsIDAsIDY0MzY0LCA5MjI2OSwgCi0gICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCAwLCAwLCAxOTQ4OTgsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIAotICAgIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIAotICAgIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgCi0gICAgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgNTczLCAKLSAgICAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIDY3NjA3LCAKLSAgICAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIDc4ODM3LCAKLSAgICAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIDQyNzg4LCAKLSAgICA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAwLCAKLSAgICA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAotICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCAwLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCisgICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCA5ODM4NDAsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgCisgICAgMzQzMywgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgNjkxNCwgNjc2MDMsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCAKKyAgICA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIAorICAgIDQxMzkzLCAxMjY2OCwgMTk0OTA0LCAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDE5NDg4MCwgMTI3MjM1LCAKKyAgICA1NzMsIDEyNzI4MiwgMTk0ODg0LCAxMTQxNywgMTk0ODg2LCAxMTk4MTQsIDE5NDg4OCwgNjc1OTksIDAsIDE5NDg4OSwgCisgICAgNjc2MDcsIDExNDgyLCAwLCAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg4NDIsIDc4ODM5LCA2ODQxOSwgCisgICAgNzg4MzcsIDExNTg5LCA0MjE5NSwgMTk0ODcyLCAxOTQ1OTksIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgCisgICAgNDI3ODgsIDY4NDE2LCA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY4NDc2LCA5NzE3LCAwLCAwLCA5OTcsIDAsIAorICAgIDAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgCisgICAgNzM3OTYsIDAsIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCiAgICAgMTA4NzMsIDEyMTk3LCAwLCAwLCA5MjI2NSwgNjk3MDYsIDAsIDc4MjEwLCAwLCAxMjgxMTAsIDE5NDg2NSwgMTI2OTgyLCAKICAgICA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIAotICAgIDMyNzQsIDEyNzM2NSwgMCwgMCwgMCwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIDY1NjcyLCAwLCAKLSAgICAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgMTk0NjA1LCAwLCAwLCAKLSAgICAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKLSAgICAxMjgwMCwgMCwgNzQyMDMsIDY0NzE4LCAwLCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAKLSAgICAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgCi0gICAgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDEyMDIxMSwgMTIwMjEyLCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIAotICAgIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDAsIDAsIDkyNTI2LCA0NTExLCAwLCAwLCA2NDY3OCwgCi0gICAgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIDAsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCAKLSAgICA4Njk0LCA5NTQ2LCAwLCAwLCAxMjA0NzgsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKLSAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDAsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgCi0gICAgMTA1NjcsIDAsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDY2NDY0LCAxMDc1NiwgMCwgCi0gICAgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgMTAzNCwgMzM5MiwgCi0gICAgMTI3NzcxLCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNjQwMzgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIAotICAgIDE5NDkyOCwgNjQwMTUsIDY0MDE0LCA2NDY4MSwgMTk0OTMwLCAwLCA3ODE0NSwgMCwgNDMwOTAsIDAsIDM0NzYsIDg5NzMsIAotICAgIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgCi0gICAgMjA0LCAwLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCAwLCAKLSAgICAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIAotICAgIDQxMzQwLCAxMTg5NzUsIDE5NDgzNSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgMCwgODQ4OSwgMTk0MiwgMCwgMTk0ODM0LCAKLSAgICA0MjUyMCwgMTI4MjQ5LCAwLCAwLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDAsIDY0MDI1LCAKLSAgICA5MTY3LCA0MjE1MSwgNzgyNDQsIDAsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgCi0gICAgNzgyNTIsIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgCi0gICAgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAKLSAgICAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIAotICAgIDI5NCwgNDE4NzQsIDAsIDEyNjk5MSwgNjU5MjksIDAsIDAsIDAsIDAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIAotICAgIDE5NDg0NCwgMCwgMTE4Nzk1LCA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAKLSAgICAxMTk4ODksIDExNDMzLCAxMTk4OTUsIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAKLSAgICAzMjk3LCA5Njk5LCAxOTQ5NTUsIDExMzUsIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgMCwgMCwgMjU1MiwgNDE1NDYsIAotICAgIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIDc4NDk2LCAwLCAwLCA2NjgyLCAwLCA3ODY3OSwgNjQ3MTAsIDQxNTQ3LCAwLCAKLSAgICAyMDEzLCAxMjgyOTEsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIAotICAgIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIAotICAgIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgMCwgMCwgMCwgMzA1OSwgNDQwMjQsIAotICAgIDEyMDIwNCwgMTE5OTUzLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgMCwgMCwgMzU5MiwgCi0gICAgMTAwNzgsIDAsIDAsIDAsIDg1OTIsIDY1ODcwLCA2ODE2NCwgMTI4NzkyLCAxMDc0MiwgMCwgNDI5MTgsIDE5OTQsIDkyODEsIAotICAgIDMyOTYsIDEyODY1LCAxOTk3LCAxODk1LCAKKyAgICAzMjc0LCAxMjczNjUsIDEyNjUyMywgOTQwNDIsIDk4Mzk0MSwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIAorICAgIDY1NjcyLCAwLCAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgCisgICAgMTk0NjA1LCAwLCAwLCAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgCisgICAgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzODkyLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAKKyAgICAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgCisgICAgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCAxMjAyMTIsIAorICAgIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgCisgICAgOTgzNzYyLCA5MjUyNiwgNDUxMSwgMCwgOTgzODY4LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIAorICAgIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAKKyAgICAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIAorICAgIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAKKyAgICAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCAKKyAgICA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAxMjc3NzEsIDQzMDkxLCA2NDAzMywgCisgICAgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIAorICAgIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgCisgICAgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIAorICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI1OCwgMCwgNDc2NywgOTM0MywgCisgICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKKyAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCisgICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKKyAgICA5ODMyMjYsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKKyAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAorICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCisgICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDAsIAorICAgIDEyNjk5MSwgNjU5MjksIDAsIDAsIDAsIDAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgCisgICAgNjM0MywgNDMyNDcsIDExOTg4OCwgMCwgMTE5ODg2LCAxMTk4OTEsIDExOTg5MiwgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAKKyAgICAxMTk4OTYsIDAsIDc4MDEsIDY1NTc4LCAxOTQ4MzksIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgMTk0OTU1LCAxMTM1LCAKKyAgICAwLCAwLCAxMjg1MjUsIDE5OTUsIDY3MjIsIDk4MzkxNiwgMCwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAorICAgIDc4NDk2LCA5ODMzMTksIDAsIDY2ODIsIDAsIDc4Njc5LCA2NDcxMCwgNDE1NDcsIDk4MzYyMSwgMjAxMywgMTI4MjkxLCAKKyAgICA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAxMTk5MDgsIDkxMzcsIAorICAgIDcxNTUsIDg5OTksIDAsIDc4NTMzLCAzNDY2LCAwLCAwLCAxOTk2LCAwLCAzNDUzLCA2MjgyLCAwLCAyMDAyLCAyMDAwLCAKKyAgICAxMjAxNzUsIDUzNywgMCwgNDE3OSwgNjUxMTksIDE5OTgsIDAsIDE4NDIsIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIAorICAgIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCAwLCAwLCAxMjAyMDEsIDk4MzYzNywgMCwgMCwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgCisgICAgMTE5OTUzLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgMCwgMCwgMzU5MiwgMTAwNzgsIDAsIAorICAgIDAsIDAsIDg1OTIsIDY1ODcwLCA2ODE2NCwgMTI4NzkyLCAxMDc0MiwgMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAorICAgIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwogI2RlZmluZSBjb2RlX3NpemUgMzI3NjgKICNkZWZpbmUgY29kZV9wb2x5IDMyNzcxCisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19zdGFydCA9IDB4ZjAwMDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gMHhmMDFjMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7CisgICAgMHgwMDAwLAorICAgIDB4MDAwMCwKKyAgICAweDAwMDEsCisgICAgMHgwMDAxLAorICAgIDB4MDAwMiwKKyAgICAweDAwMDIsCisgICAgMHgwMDAzLAorICAgIDB4MDAwMywKKyAgICAweDAwMDQsCisgICAgMHgwMDA0LAorICAgIDB4MDAwNSwKKyAgICAweDAwMDUsCisgICAgMHgwMDA2LAorICAgIDB4MDAwNiwKKyAgICAweDAwMDcsCisgICAgMHgwMDA3LAorICAgIDB4MDAwOCwKKyAgICAweDAwMDgsCisgICAgMHgwMDA5LAorICAgIDB4MDAwOSwKKyAgICAweDAwMDksCisgICAgMHgwMDA5LAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQiwKKyAgICAweDAwMEIsCisgICAgMHgwMDBCLAorICAgIDB4MDAwQywKKyAgICAweDAwMEMsCisgICAgMHgwMDBELAorICAgIDB4MDAwRCwKKyAgICAweDAwMEUsCisgICAgMHgwMDBFLAorICAgIDB4MDAwRSwKKyAgICAweDAwMEYsCisgICAgMHgwMDBGLAorICAgIDB4MDAwRiwKKyAgICAweDAwMTAsCisgICAgMHgwMDEwLAorICAgIDB4MDAxMSwKKyAgICAweDAwMTEsCisgICAgMHgwMDEyLAorICAgIDB4MDAxMiwKKyAgICAweDAwMTMsCisgICAgMHgwMDEzLAorICAgIDB4MDAxNCwKKyAgICAweDAwMTQsCisgICAgMHgwMDE1LAorICAgIDB4MDAxNSwKKyAgICAweDAwMTYsCisgICAgMHgwMDE2LAorICAgIDB4MDAxNywKKyAgICAweDAwMTcsCisgICAgMHgwMDE4LAorICAgIDB4MDAxOCwKKyAgICAweDAwMTksCisgICAgMHgwMDE5LAorICAgIDB4MDAxQSwKKyAgICAweDAwMUEsCisgICAgMHgwMDFCLAorICAgIDB4MDAxQiwKKyAgICAweDAwMUMsCisgICAgMHgwMDFDLAorICAgIDB4MDAxQywKKyAgICAweDAwMUQsCisgICAgMHgwMDFELAorICAgIDB4MDAxRCwKKyAgICAweDAwMUUsCisgICAgMHgwMDFFLAorICAgIDB4MDAxRSwKKyAgICAweDAwMUYsCisgICAgMHgwMDFGLAorICAgIDB4MDAxRiwKKyAgICAweDAwMjAsCisgICAgMHgwMDdGLAorICAgIDB4MDA3RiwKKyAgICAweDAwODAsCisgICAgMHgwMDgwLAorICAgIDB4MDA4MSwKKyAgICAweDAwODEsCisgICAgMHgwMDgyLAorICAgIDB4MDA4MiwKKyAgICAweDAwODMsCisgICAgMHgwMDgzLAorICAgIDB4MDA4NCwKKyAgICAweDAwODQsCisgICAgMHgwMDg1LAorICAgIDB4MDA4NSwKKyAgICAweDAwODYsCisgICAgMHgwMDg2LAorICAgIDB4MDA4NywKKyAgICAweDAwODcsCisgICAgMHgwMDg4LAorICAgIDB4MDA4OCwKKyAgICAweDAwODgsCisgICAgMHgwMDg5LAorICAgIDB4MDA4OSwKKyAgICAweDAwODksCisgICAgMHgwMDhBLAorICAgIDB4MDA4QSwKKyAgICAweDAwOEEsCisgICAgMHgwMDhCLAorICAgIDB4MDA4QiwKKyAgICAweDAwOEIsCisgICAgMHgwMDhDLAorICAgIDB4MDA4QywKKyAgICAweDAwOEMsCisgICAgMHgwMDhELAorICAgIDB4MDA4RCwKKyAgICAweDAwOEQsCisgICAgMHgwMDhFLAorICAgIDB4MDA4RSwKKyAgICAweDAwOEUsCisgICAgMHgwMDhGLAorICAgIDB4MDA4RiwKKyAgICAweDAwOEYsCisgICAgMHgwMDkwLAorICAgIDB4MDA5MCwKKyAgICAweDAwOTEsCisgICAgMHgwMDkxLAorICAgIDB4MDA5MSwKKyAgICAweDAwOTIsCisgICAgMHgwMDkyLAorICAgIDB4MDA5MiwKKyAgICAweDAwOTMsCisgICAgMHgwMDkzLAorICAgIDB4MDA5NCwKKyAgICAweDAwOTQsCisgICAgMHgwMDk1LAorICAgIDB4MDA5NSwKKyAgICAweDAwOTYsCisgICAgMHgwMDk2LAorICAgIDB4MDA5NiwKKyAgICAweDAwOTcsCisgICAgMHgwMDk3LAorICAgIDB4MDA5NywKKyAgICAweDAwOTgsCisgICAgMHgwMDk4LAorICAgIDB4MDA5OSwKKyAgICAweDAwOTksCisgICAgMHgwMDlBLAorICAgIDB4MDA5QSwKKyAgICAweDAwOUIsCisgICAgMHgwMDlCLAorICAgIDB4MDA5QywKKyAgICAweDAwOUMsCisgICAgMHgwMDlELAorICAgIDB4MDA5RCwKKyAgICAweDAwOUUsCisgICAgMHgwMDlFLAorICAgIDB4MDA5RiwKKyAgICAweDAwOUYsCisgICAgMHgwMEEwLAorICAgIDB4MDBBRCwKKyAgICAweDAxQTIsCisgICAgMHgwMUEzLAorICAgIDB4MDM0RiwKKyAgICAweDBDREUsCisgICAgMHgwRTlELAorICAgIDB4MEU5RiwKKyAgICAweDBFQTMsCisgICAgMHgwRUE1LAorICAgIDB4MEZEMCwKKyAgICAweDE4MEIsCisgICAgMHgxODBDLAorICAgIDB4MTgwRCwKKyAgICAweDE4MEUsCisgICAgMHgyMDBCLAorICAgIDB4MjAwQywKKyAgICAweDIwMEQsCisgICAgMHgyMDBFLAorICAgIDB4MjAwRiwKKyAgICAweDIwMkEsCisgICAgMHgyMDJCLAorICAgIDB4MjAyQywKKyAgICAweDIwMkQsCisgICAgMHgyMDJFLAorICAgIDB4MjAyRiwKKyAgICAweDIwNUYsCisgICAgMHgyMDYwLAorICAgIDB4MjExOCwKKyAgICAweDI0NDgsCisgICAgMHgyNDQ5LAorICAgIDB4QTAxNSwKKyAgICAweEZFMTgsCisgICAgMHhGRTAwLAorICAgIDB4RkUwMSwKKyAgICAweEZFMDIsCisgICAgMHhGRTAzLAorICAgIDB4RkUwNCwKKyAgICAweEZFMDUsCisgICAgMHhGRTA2LAorICAgIDB4RkUwNywKKyAgICAweEZFMDgsCisgICAgMHhGRTA5LAorICAgIDB4RkUwQSwKKyAgICAweEZFMEIsCisgICAgMHhGRTBDLAorICAgIDB4RkUwRCwKKyAgICAweEZFMEUsCisgICAgMHhGRTBGLAorICAgIDB4RkVGRiwKKyAgICAweEZFRkYsCisgICAgMHhGRUZGLAorICAgIDB4MUQwQzUsCisgICAgMHhFMDEwMCwKKyAgICAweEUwMTAxLAorICAgIDB4RTAxMDIsCisgICAgMHhFMDEwMywKKyAgICAweEUwMTA0LAorICAgIDB4RTAxMDUsCisgICAgMHhFMDEwNiwKKyAgICAweEUwMTA3LAorICAgIDB4RTAxMDgsCisgICAgMHhFMDEwOSwKKyAgICAweEUwMTBBLAorICAgIDB4RTAxMEIsCisgICAgMHhFMDEwQywKKyAgICAweEUwMTBELAorICAgIDB4RTAxMEUsCisgICAgMHhFMDEwRiwKKyAgICAweEUwMTEwLAorICAgIDB4RTAxMTEsCisgICAgMHhFMDExMiwKKyAgICAweEUwMTEzLAorICAgIDB4RTAxMTQsCisgICAgMHhFMDExNSwKKyAgICAweEUwMTE2LAorICAgIDB4RTAxMTcsCisgICAgMHhFMDExOCwKKyAgICAweEUwMTE5LAorICAgIDB4RTAxMUEsCisgICAgMHhFMDExQiwKKyAgICAweEUwMTFDLAorICAgIDB4RTAxMUQsCisgICAgMHhFMDExRSwKKyAgICAweEUwMTFGLAorICAgIDB4RTAxMjAsCisgICAgMHhFMDEyMSwKKyAgICAweEUwMTIyLAorICAgIDB4RTAxMjMsCisgICAgMHhFMDEyNCwKKyAgICAweEUwMTI1LAorICAgIDB4RTAxMjYsCisgICAgMHhFMDEyNywKKyAgICAweEUwMTI4LAorICAgIDB4RTAxMjksCisgICAgMHhFMDEyQSwKKyAgICAweEUwMTJCLAorICAgIDB4RTAxMkMsCisgICAgMHhFMDEyRCwKKyAgICAweEUwMTJFLAorICAgIDB4RTAxMkYsCisgICAgMHhFMDEzMCwKKyAgICAweEUwMTMxLAorICAgIDB4RTAxMzIsCisgICAgMHhFMDEzMywKKyAgICAweEUwMTM0LAorICAgIDB4RTAxMzUsCisgICAgMHhFMDEzNiwKKyAgICAweEUwMTM3LAorICAgIDB4RTAxMzgsCisgICAgMHhFMDEzOSwKKyAgICAweEUwMTNBLAorICAgIDB4RTAxM0IsCisgICAgMHhFMDEzQywKKyAgICAweEUwMTNELAorICAgIDB4RTAxM0UsCisgICAgMHhFMDEzRiwKKyAgICAweEUwMTQwLAorICAgIDB4RTAxNDEsCisgICAgMHhFMDE0MiwKKyAgICAweEUwMTQzLAorICAgIDB4RTAxNDQsCisgICAgMHhFMDE0NSwKKyAgICAweEUwMTQ2LAorICAgIDB4RTAxNDcsCisgICAgMHhFMDE0OCwKKyAgICAweEUwMTQ5LAorICAgIDB4RTAxNEEsCisgICAgMHhFMDE0QiwKKyAgICAweEUwMTRDLAorICAgIDB4RTAxNEQsCisgICAgMHhFMDE0RSwKKyAgICAweEUwMTRGLAorICAgIDB4RTAxNTAsCisgICAgMHhFMDE1MSwKKyAgICAweEUwMTUyLAorICAgIDB4RTAxNTMsCisgICAgMHhFMDE1NCwKKyAgICAweEUwMTU1LAorICAgIDB4RTAxNTYsCisgICAgMHhFMDE1NywKKyAgICAweEUwMTU4LAorICAgIDB4RTAxNTksCisgICAgMHhFMDE1QSwKKyAgICAweEUwMTVCLAorICAgIDB4RTAxNUMsCisgICAgMHhFMDE1RCwKKyAgICAweEUwMTVFLAorICAgIDB4RTAxNUYsCisgICAgMHhFMDE2MCwKKyAgICAweEUwMTYxLAorICAgIDB4RTAxNjIsCisgICAgMHhFMDE2MywKKyAgICAweEUwMTY0LAorICAgIDB4RTAxNjUsCisgICAgMHhFMDE2NiwKKyAgICAweEUwMTY3LAorICAgIDB4RTAxNjgsCisgICAgMHhFMDE2OSwKKyAgICAweEUwMTZBLAorICAgIDB4RTAxNkIsCisgICAgMHhFMDE2QywKKyAgICAweEUwMTZELAorICAgIDB4RTAxNkUsCisgICAgMHhFMDE2RiwKKyAgICAweEUwMTcwLAorICAgIDB4RTAxNzEsCisgICAgMHhFMDE3MiwKKyAgICAweEUwMTczLAorICAgIDB4RTAxNzQsCisgICAgMHhFMDE3NSwKKyAgICAweEUwMTc2LAorICAgIDB4RTAxNzcsCisgICAgMHhFMDE3OCwKKyAgICAweEUwMTc5LAorICAgIDB4RTAxN0EsCisgICAgMHhFMDE3QiwKKyAgICAweEUwMTdDLAorICAgIDB4RTAxN0QsCisgICAgMHhFMDE3RSwKKyAgICAweEUwMTdGLAorICAgIDB4RTAxODAsCisgICAgMHhFMDE4MSwKKyAgICAweEUwMTgyLAorICAgIDB4RTAxODMsCisgICAgMHhFMDE4NCwKKyAgICAweEUwMTg1LAorICAgIDB4RTAxODYsCisgICAgMHhFMDE4NywKKyAgICAweEUwMTg4LAorICAgIDB4RTAxODksCisgICAgMHhFMDE4QSwKKyAgICAweEUwMThCLAorICAgIDB4RTAxOEMsCisgICAgMHhFMDE4RCwKKyAgICAweEUwMThFLAorICAgIDB4RTAxOEYsCisgICAgMHhFMDE5MCwKKyAgICAweEUwMTkxLAorICAgIDB4RTAxOTIsCisgICAgMHhFMDE5MywKKyAgICAweEUwMTk0LAorICAgIDB4RTAxOTUsCisgICAgMHhFMDE5NiwKKyAgICAweEUwMTk3LAorICAgIDB4RTAxOTgsCisgICAgMHhFMDE5OSwKKyAgICAweEUwMTlBLAorICAgIDB4RTAxOUIsCisgICAgMHhFMDE5QywKKyAgICAweEUwMTlELAorICAgIDB4RTAxOUUsCisgICAgMHhFMDE5RiwKKyAgICAweEUwMUEwLAorICAgIDB4RTAxQTEsCisgICAgMHhFMDFBMiwKKyAgICAweEUwMUEzLAorICAgIDB4RTAxQTQsCisgICAgMHhFMDFBNSwKKyAgICAweEUwMUE2LAorICAgIDB4RTAxQTcsCisgICAgMHhFMDFBOCwKKyAgICAweEUwMUE5LAorICAgIDB4RTAxQUEsCisgICAgMHhFMDFBQiwKKyAgICAweEUwMUFDLAorICAgIDB4RTAxQUQsCisgICAgMHhFMDFBRSwKKyAgICAweEUwMUFGLAorICAgIDB4RTAxQjAsCisgICAgMHhFMDFCMSwKKyAgICAweEUwMUIyLAorICAgIDB4RTAxQjMsCisgICAgMHhFMDFCNCwKKyAgICAweEUwMUI1LAorICAgIDB4RTAxQjYsCisgICAgMHhFMDFCNywKKyAgICAweEUwMUI4LAorICAgIDB4RTAxQjksCisgICAgMHhFMDFCQSwKKyAgICAweEUwMUJCLAorICAgIDB4RTAxQkMsCisgICAgMHhFMDFCRCwKKyAgICAweEUwMUJFLAorICAgIDB4RTAxQkYsCisgICAgMHhFMDFDMCwKKyAgICAweEUwMUMxLAorICAgIDB4RTAxQzIsCisgICAgMHhFMDFDMywKKyAgICAweEUwMUM0LAorICAgIDB4RTAxQzUsCisgICAgMHhFMDFDNiwKKyAgICAweEUwMUM3LAorICAgIDB4RTAxQzgsCisgICAgMHhFMDFDOSwKKyAgICAweEUwMUNBLAorICAgIDB4RTAxQ0IsCisgICAgMHhFMDFDQywKKyAgICAweEUwMUNELAorICAgIDB4RTAxQ0UsCisgICAgMHhFMDFDRiwKKyAgICAweEUwMUQwLAorICAgIDB4RTAxRDEsCisgICAgMHhFMDFEMiwKKyAgICAweEUwMUQzLAorICAgIDB4RTAxRDQsCisgICAgMHhFMDFENSwKKyAgICAweEUwMUQ2LAorICAgIDB4RTAxRDcsCisgICAgMHhFMDFEOCwKKyAgICAweEUwMUQ5LAorICAgIDB4RTAxREEsCisgICAgMHhFMDFEQiwKKyAgICAweEUwMURDLAorICAgIDB4RTAxREQsCisgICAgMHhFMDFERSwKKyAgICAweEUwMURGLAorICAgIDB4RTAxRTAsCisgICAgMHhFMDFFMSwKKyAgICAweEUwMUUyLAorICAgIDB4RTAxRTMsCisgICAgMHhFMDFFNCwKKyAgICAweEUwMUU1LAorICAgIDB4RTAxRTYsCisgICAgMHhFMDFFNywKKyAgICAweEUwMUU4LAorICAgIDB4RTAxRTksCisgICAgMHhFMDFFQSwKKyAgICAweEUwMUVCLAorICAgIDB4RTAxRUMsCisgICAgMHhFMDFFRCwKKyAgICAweEUwMUVFLAorICAgIDB4RTAxRUYsCit9OworCit0eXBlZGVmIHN0cnVjdCBOYW1lZFNlcXVlbmNlIHsKKyAgICBpbnQgc2VxbGVuOworICAgIFB5X1VDUzIgc2VxWzRdOworfSBuYW1lZF9zZXF1ZW5jZTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQgPSAweGYwMjAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfZW5kID0gMHhmMDNhNTsKK3N0YXRpYyBjb25zdCBuYW1lZF9zZXF1ZW5jZSBuYW1lZF9zZXF1ZW5jZXNbXSA9IHsKKyAgICB7MiwgezB4MDEwMCwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMDEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMDQ1LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA2NSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwQzgsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEU4LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBDOSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRTksIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMENBLCAweDAzMDR9fSwKKyAgICB7MiwgezB4MDBFQSwgMHgwMzA0fX0sCisgICAgezIsIHsweDAwQ0EsIDB4MDMwQ319LAorICAgIHsyLCB7MHgwMEVBLCAweDAzMEN9fSwKKyAgICB7MiwgezB4MDEyQSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMkIsIDB4MDMwMH19LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwMX19LAorICAgIHszLCB7MHgwMDZFLCAweDAzNjAsIDB4MDA2N319LAorICAgIHsyLCB7MHgwMDRGLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA2RiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRDIsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEYyLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBEMywgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRjMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDUzLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA3MywgMHgwMzI5fX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEwNCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMDUsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTA0LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDEwNSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTgsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE5LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExOCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTksIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE2LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExNywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTYsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE3LCAweDAzMDN9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDB9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDEyRSwgMHgwMzAxfX0sCisgICAgezMsIHsweDAxMkYsIDB4MDMwNywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMkUsIDB4MDMwM319LAorICAgIHszLCB7MHgwMTJGLCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRBLCAweDAzMDN9fSwKKyAgICB7MywgezB4MDA2QSwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA0QywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNkMsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRELCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA2RCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNTIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDcyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE3MiwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNzMsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTcyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE3MywgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMEU2LCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1NCwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNTQsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMjhDLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI4QywgMHgwMzAxfX0sCisgICAgezIsIHsweDAyNTksIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjU5LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDI1QSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNUEsIDB4MDMwMX19LAorICAgIHszLCB7MHgwOTk1LCAweDA5Q0QsIDB4MDlCN319LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNEfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNDfX0sCisgICAgezMsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQkV9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJCRn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkMwfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzF9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDMn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkM2fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzd9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDOH19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNBfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0J9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDQ319LAorICAgIHs0LCB7MHgwQkI2LCAweDBCQ0QsIDB4MEJCMCwgMHgwQkMwfX0sCisgICAgezMsIHsweDBEQ0EsIDB4MjAwRCwgMHgwREJBfX0sCisgICAgezMsIHsweDBEQ0EsIDB4MjAwRCwgMHgwREJCfX0sCisgICAgezMsIHsweDBEQkIsIDB4MERDQSwgMHgyMDBEfX0sCisgICAgezIsIHsweDEwRTMsIDB4MDMwMn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODB9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgxfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Mn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg0fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4NX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4OH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODl9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhBfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Qn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhEfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4RX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkwfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5MX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkzfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5NH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk2fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5N319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTh9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk5fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5QX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5RH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlGfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBMH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0EyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBN319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QUJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0FDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBRn19LAorICAgIHsyLCB7MHgxN0JCLCAweDE3QzZ9fSwKKyAgICB7MiwgezB4MTdCNiwgMHgxN0M2fX0sCisgICAgezIsIHsweDMwNEIsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDRELCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA0RiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNTEsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDUzLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBBQiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQUQsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEFGLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBCMSwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQjMsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEJCLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBDNCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQzgsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMUY3LCAweDMwOUF9fSwKKyAgICB7MiwgezB4MDJFNSwgMHgwMkU5fX0sCisgICAgezIsIHsweDAyRTksIDB4MDJFNX19LAorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IGVjOTI0ZjIuLjY2MWI2ZTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtMTg3LDggKzE4Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbnVsbF9yaWNoY29tcGFyZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlUeXBlX1Nsb3QgTnVsbF9UeXBlX3Nsb3RzW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bW9kdWxlLmMgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKaW5kZXggYThhOTM2MC4uMGZlZmY2NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eG1vZHVsZS5jCisrKyBiL01vZHVsZXMveHhtb2R1bGUuYwpAQCAtMTAyLDQyICsxMDIsNDIgQEAKICAgICBzaXplb2YoWHhvT2JqZWN0KSwgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpWHhvX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgKGRlc3RydWN0b3IpWHhvX2RlYWxsb2MsICAgIC8qdHBfZGVhbGxvYyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIChnZXRhdHRyZnVuYykwLCAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgKHNldGF0dHJmdW5jKVh4b19zZXRhdHRyLCAvKnRwX3NldGF0dHIqLworICAgIChnZXRhdHRyZnVuYykwLCAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIChzZXRhdHRyZnVuYylYeG9fc2V0YXR0ciwgICAvKnRwX3NldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwogICAgIChnZXRhdHRyb2Z1bmMpWHhvX2dldGF0dHJvLCAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgWHhvX21ldGhvZHMsICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICBYeG9fbWV0aG9kcywgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pbml0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmV3Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9mcmVlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCiB9OwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvemlwaW1wb3J0LmMgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCmluZGV4IDdhZTRmMGEuLjJmZWIyYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemlwaW1wb3J0LmMKKysrIGIvTW9kdWxlcy96aXBpbXBvcnQuYwpAQCAtNDksNyArNDksNyBAQAogLyogZm9yd2FyZCBkZWNscyAqLwogc3RhdGljIFB5T2JqZWN0ICpyZWFkX2RpcmVjdG9yeShQeU9iamVjdCAqYXJjaGl2ZSk7CiBzdGF0aWMgUHlPYmplY3QgKmdldF9kYXRhKFB5T2JqZWN0ICphcmNoaXZlLCBQeU9iamVjdCAqdG9jX2VudHJ5KTsKLXN0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBQeU9iamVjdCAqKnBfbW9kcGF0aCk7CiAKIApAQCAtNjMsMTA5ICs2MywxMDkgQEAKIHN0YXRpYyBpbnQKIHppcGltcG9ydGVyX2luaXQoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqcGF0aG9iaiwgKmZpbGVzOwotICAgIFB5X1VOSUNPREUgKnBhdGgsICpwLCAqcHJlZml4LCBidWZbTUFYUEFUSExFTisyXTsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZpbGVzLCAqdG1wOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4sIGZsZW47CisjaWZkZWYgQUxUU0VQCisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisjZW5kaWYKIAogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoInppcGltcG9ydGVyKCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp6aXBpbXBvcnRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZwYXRob2JqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjb3B5IHBhdGggdG8gYnVmICovCi0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOwogICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJhcmNoaXZlIHBhdGggaXMgZW1wdHkiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZlIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkoYnVmLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKSk7CiAKICNpZmRlZiBBTFRTRVAKLSAgICBmb3IgKHAgPSBidWY7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKCpwID09IEFMVFNFUCkKLSAgICAgICAgICAgICpwID0gU0VQOwotICAgIH0KKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBhdGgsICZQeUlkX3JlcGxhY2UsICJDQyIsIEFMVFNFUCwgU0VQKTsKKyAgICBpZiAoIXRtcCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgcGF0aCA9IHRtcDsKICNlbmRpZgogCi0gICAgcGF0aCA9IE5VTEw7Ci0gICAgcHJlZml4ID0gTlVMTDsKKyAgICBmaWxlbmFtZSA9IHBhdGg7CisgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICBmbGVuID0gbGVuOwogICAgIGZvciAoOzspIHsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKICAgICAgICAgaW50IHJ2OwogCi0gICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYnVmLCBsZW4pOwotICAgICAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHJ2ID0gX1B5X3N0YXQocGF0aG9iaiwgJnN0YXRidWYpOworICAgICAgICBydiA9IF9QeV9zdGF0KGZpbGVuYW1lLCAmc3RhdGJ1Zik7CisgICAgICAgIGlmIChydiA9PSAtMikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIGlmIChTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCi0gICAgICAgICAgICAgICAgLyogaXQncyBhIGZpbGUgKi8KLSAgICAgICAgICAgICAgICBwYXRoID0gYnVmOworICAgICAgICAgICAgaWYgKCFTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCisgICAgICAgICAgICAgICAgLyogaXQncyBhIG5vdCBmaWxlICovCisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZmlsZW5hbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X0NMRUFSKGZpbGVuYW1lKTsKICAgICAgICAgLyogYmFjayB1cCBvbmUgcGF0aCBlbGVtZW50ICovCi0gICAgICAgIHAgPSBQeV9VTklDT0RFX3N0cnJjaHIoYnVmLCBTRVApOwotICAgICAgICBpZiAocHJlZml4ICE9IE5VTEwpCi0gICAgICAgICAgICAqcHJlZml4ID0gU0VQOwotICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBmbGVuID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhdGgsIFNFUCwgMCwgZmxlbiwgLTEpOworICAgICAgICBpZiAoZmxlbiA9PSAtMSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgIGxlbiA9IHAgLSBidWY7Ci0gICAgICAgIHByZWZpeCA9IHA7Ci0gICAgICAgIFB5X0NMRUFSKHBhdGhvYmopOworICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgMCwgZmxlbik7CiAgICAgfQotICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZSIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGZpbGVzID0gUHlEaWN0X0dldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgcGF0aG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmaWxlbmFtZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZmlsZXMgPSBQeURpY3RfR2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVzID09IE5VTEwpIHsKLSAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShwYXRob2JqKTsKKyAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAgIGlmIChmaWxlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIHBhdGhvYmosIGZpbGVzKSAhPSAwKQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgZmlsZW5hbWUsIGZpbGVzKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoZmlsZXMpOwogICAgIHNlbGYtPmZpbGVzID0gZmlsZXM7CiAKLSAgICBzZWxmLT5hcmNoaXZlID0gcGF0aG9iajsKLSAgICBwYXRob2JqID0gTlVMTDsKKyAgICAvKiBUcmFuc2ZlciByZWZlcmVuY2UgKi8KKyAgICBzZWxmLT5hcmNoaXZlID0gZmlsZW5hbWU7CisgICAgZmlsZW5hbWUgPSBOVUxMOwogCi0gICAgaWYgKHByZWZpeCAhPSBOVUxMKSB7Ci0gICAgICAgIHByZWZpeCsrOwotICAgICAgICBsZW4gPSBQeV9VTklDT0RFX3N0cmxlbihwcmVmaXgpOwotICAgICAgICBpZiAocHJlZml4W2xlbi0xXSAhPSBTRVApIHsKKyAgICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHByZWZpeCBkaXJlY3RvcnkgZm9sbG93aW5nIHRoZSBmaWxlbmFtZS4gKi8KKyAgICBpZiAoZmxlbiAhPSBsZW4pIHsKKyAgICAgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYXRoLCBmbGVuKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzZWxmLT5wcmVmaXggPSB0bXA7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHBhdGgsIGxlbi0xKSAhPSBTRVApIHsKICAgICAgICAgICAgIC8qIGFkZCB0cmFpbGluZyBTRVAgKi8KLSAgICAgICAgICAgIHByZWZpeFtsZW5dID0gU0VQOwotICAgICAgICAgICAgcHJlZml4W2xlbiArIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIGxlbisrOworICAgICAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMiLCBzZWxmLT5wcmVmaXgsIFNFUCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5wcmVmaXgpOworICAgICAgICAgICAgc2VsZi0+cHJlZml4ID0gdG1wOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgbGVuID0gMDsKLSAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocHJlZml4LCBsZW4pOwotICAgIGlmIChzZWxmLT5wcmVmaXggPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQorICAgICAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihwYXRob2JqKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgUHlfWERFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xOTMsNyArMTkzLDcgQEAKIHsKICAgICBpZiAoc2VsZi0+YXJjaGl2ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjx6aXBpbXBvcnRlciBvYmplY3QgXCI/Pz9cIj4iKTsKLSAgICBlbHNlIGlmIChzZWxmLT5wcmVmaXggIT0gTlVMTCAmJiBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+cHJlZml4KSAhPSAwKQorICAgIGVsc2UgaWYgKHNlbGYtPnByZWZpeCAhPSBOVUxMICYmIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPnByZWZpeCkgIT0gMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8emlwaW1wb3J0ZXIgb2JqZWN0IFwiJVUlYyVVXCI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwgc2VsZi0+cHJlZml4KTsKICAgICBlbHNlCkBAIC0yMDIsNDkgKzIwMiw1OCBAQAogfQogCiAvKiByZXR1cm4gZnVsbG5hbWUuc3BsaXQoIi4iKVstMV0gKi8KLXN0YXRpYyBjaGFyICoKLWdldF9zdWJuYW1lKGNoYXIgKmZ1bGxuYW1lKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zdWJuYW1lKFB5T2JqZWN0ICpmdWxsbmFtZSkKIHsKLSAgICBjaGFyICpzdWJuYW1lID0gc3RycmNocihmdWxsbmFtZSwgJy4nKTsKLSAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQotICAgICAgICBzdWJuYW1lID0gZnVsbG5hbWU7Ci0gICAgZWxzZQotICAgICAgICBzdWJuYW1lKys7Ci0gICAgcmV0dXJuIHN1Ym5hbWU7CisgICAgUHlfc3NpemVfdCBsZW4sIGRvdDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZ1bGxuYW1lKTsKKyAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIoZnVsbG5hbWUsICcuJywgMCwgbGVuLCAtMSk7CisgICAgaWYgKGRvdCA9PSAtMSkgeworICAgICAgICBQeV9JTkNSRUYoZnVsbG5hbWUpOworICAgICAgICByZXR1cm4gZnVsbG5hbWU7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKGZ1bGxuYW1lLCBkb3QrMSwgbGVuKTsKIH0KIAogLyogR2l2ZW4gYSAoc3ViKW1vZHVsZW5hbWUsIHdyaXRlIHRoZSBwb3RlbnRpYWwgZmlsZSBwYXRoIGluIHRoZQogICAgYXJjaGl2ZSAod2l0aG91dCBleHRlbnNpb24pIHRvIHRoZSBwYXRoIGJ1ZmZlci4gUmV0dXJuIHRoZQotICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLiAqLwotc3RhdGljIGludAotbWFrZV9maWxlbmFtZShQeU9iamVjdCAqcHJlZml4X29iaiwgY2hhciAqbmFtZSwgY2hhciAqcGF0aCwgc2l6ZV90IHBhdGhzaXplKQorICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLgorCisgICByZXR1cm4gc2VsZi5wcmVmaXggKyBuYW1lLnJlcGxhY2UoJy4nLCBvcy5zZXApICovCitzdGF0aWMgUHlPYmplY3QqCittYWtlX2ZpbGVuYW1lKFB5T2JqZWN0ICpwcmVmaXgsIFB5T2JqZWN0ICpuYW1lKQogewotICAgIHNpemVfdCBsZW47Ci0gICAgY2hhciAqcDsKLSAgICBQeU9iamVjdCAqcHJlZml4OworICAgIFB5T2JqZWN0ICpwYXRob2JqOworICAgIFB5X1VDUzQgKnAsICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICBwcmVmaXggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHByZWZpeF9vYmopOwotICAgIGlmIChwcmVmaXggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocHJlZml4KTsKLQotICAgIC8qIHNlbGYucHJlZml4ICsgbmFtZSBbKyBTRVAgKyAiX19pbml0X18iXSArICIucHlbY29dIiAqLwotICAgIGlmIChsZW4gKyBzdHJsZW4obmFtZSkgKyAxMyA+PSBwYXRoc2l6ZSAtIDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYocHJlZml4KTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByZWZpeCkgKyBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSArIDE7CisgICAgcCA9IGJ1ZiA9IFB5TWVtX01hbGxvYyhzaXplb2YoUHlfVUNTNCkgKiBsZW4pOworICAgIGlmIChidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBzdHJjcHkocGF0aCwgUHlCeXRlc19BU19TVFJJTkcocHJlZml4KSk7Ci0gICAgUHlfREVDUkVGKHByZWZpeCk7Ci0gICAgc3RyY3B5KHBhdGggKyBsZW4sIG5hbWUpOwotICAgIGZvciAocCA9IHBhdGggKyBsZW47ICpwOyBwKyspIHsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQocHJlZml4LCBwLCBsZW4sIDApKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBsZW4gLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQobmFtZSwgcCwgbGVuLCAxKSkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKDsgKnA7IHArKykgewogICAgICAgICBpZiAoKnAgPT0gJy4nKQogICAgICAgICAgICAgKnAgPSBTRVA7CiAgICAgfQotICAgIGxlbiArPSBzdHJsZW4obmFtZSk7Ci0gICAgYXNzZXJ0KGxlbiA8IElOVF9NQVgpOwotICAgIHJldHVybiAoaW50KWxlbjsKKyAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIHAtYnVmKTsKKyAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgcmV0dXJuIHBhdGhvYmo7CiB9CiAKIGVudW0gemlfbW9kdWxlX2luZm8gewpAQCAtMjU0LDMyICsyNjMsMTEzIEBACiAgICAgTUlfUEFDS0FHRQogfTsKIAorLyogRG9lcyB0aGlzIHBhdGggcmVwcmVzZW50IGEgZGlyZWN0b3J5PworICAgb24gZXJyb3IsIHJldHVybiA8IDAKKyAgIGlmIG5vdCBhIGRpciwgcmV0dXJuIDAKKyAgIGlmIGEgZGlyLCByZXR1cm4gMQorKi8KK3N0YXRpYyBpbnQKK2NoZWNrX2lzX2RpcmVjdG9yeShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QqIHByZWZpeCwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgUHlPYmplY3QgKmRpcnBhdGg7CisgICAgaW50IHJlczsKKworICAgIC8qIFNlZSBpZiB0aGlzIGlzIGEgImRpcmVjdG9yeSIuIElmIHNvLCBpdCdzIGVsaWdpYmxlIHRvIGJlIHBhcnQKKyAgICAgICBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiBXZSB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgbmFtZSwgd2l0aCBhbgorICAgICAgIGFwcGVuZGVkIHBhdGggc2VwYXJhdG9yLCBleGlzdHMuICovCisgICAgZGlycGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVVJWMiLCBwcmVmaXgsIHBhdGgsIFNFUCk7CisgICAgaWYgKGRpcnBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIElmIGRpcnBhdGggaXMgcHJlc2VudCBpbiBzZWxmLT5maWxlcywgd2UgaGF2ZSBhIGRpcmVjdG9yeS4gKi8KKyAgICByZXMgPSBQeURpY3RfQ29udGFpbnMoc2VsZi0+ZmlsZXMsIGRpcnBhdGgpOworICAgIFB5X0RFQ1JFRihkaXJwYXRoKTsKKyAgICByZXR1cm4gcmVzOworfQorCiAvKiBSZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhIG1vZHVsZS4gKi8KIHN0YXRpYyBlbnVtIHppX21vZHVsZV9pbmZvCi1nZXRfbW9kdWxlX2luZm8oWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKmZ1bGxuYW1lKQorZ2V0X21vZHVsZV9pbmZvKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUpCiB7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqc3VibmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZ1bGxwYXRoLCAqaXRlbTsKICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyICp6c287CiAKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOworICAgIGlmIChzdWJuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIHBhdGggPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgUHlfREVDUkVGKHN1Ym5hbWUpOworICAgIGlmIChwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCB6c28tPnN1ZmZpeCk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCkgIT0gTlVMTCkgeworICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVzIiwgcGF0aCwgenNvLT5zdWZmaXgpOworICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE1JX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGl0ZW0gPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOworICAgICAgICBQeV9ERUNSRUYoZnVsbHBhdGgpOworICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICBpZiAoenNvLT50eXBlICYgSVNfUEFDS0FHRSkKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfUEFDS0FHRTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfTU9EVUxFOwogICAgICAgICB9CiAgICAgfQorICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gTUlfTk9UX0ZPVU5EOwogfQogCit0eXBlZGVmIGVudW0geworICAgIEZMX0VSUk9SLAorICAgIEZMX05PVF9GT1VORCwKKyAgICBGTF9NT0RVTEVfRk9VTkQsCisgICAgRkxfTlNfRk9VTkQKK30gZmluZF9sb2FkZXJfcmVzdWx0OworCisvKiBUaGUgZ3V0cyBvZiAiZmluZF9sb2FkZXIiIGFuZCAiZmluZF9tb2R1bGUiLiBSZXR1cm4gdmFsdWVzOgorICAgLTE6IGVycm9yCisgICAgMDogbm8gbG9hZGVyIG9yIG5hbWVzcGFjZSBwb3J0aW9ucyBmb3VuZAorICAgIDE6IG1vZHVsZS9wYWNrYWdlIGZvdW5kCisgICAgMjogbmFtZXNwYWNlIHBvcnRpb24gZm91bmQ6ICpuYW1lc3BhY2VfcG9ydGlvbiB3aWxsIHBvaW50IHRvIHRoZSBuYW1lCisqLworc3RhdGljIGZpbmRfbG9hZGVyX3Jlc3VsdAorZmluZF9sb2FkZXIoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwgUHlPYmplY3QgKipuYW1lc3BhY2VfcG9ydGlvbikKK3sKKyAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOworCisgICAgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKworICAgIG1pID0gZ2V0X21vZHVsZV9pbmZvKHNlbGYsIGZ1bGxuYW1lKTsKKyAgICBpZiAobWkgPT0gTUlfRVJST1IpCisgICAgICAgIHJldHVybiBGTF9FUlJPUjsKKyAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7CisgICAgICAgIC8qIE5vdCBhIG1vZHVsZSBvciByZWd1bGFyIHBhY2thZ2UuIFNlZSBpZiB0aGlzIGlzIGEgZGlyZWN0b3J5LCBhbmQKKyAgICAgICAgICAgdGhlcmVmb3JlIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiAqLworICAgICAgICBpbnQgaXNfZGlyID0gY2hlY2tfaXNfZGlyZWN0b3J5KHNlbGYsIHNlbGYtPnByZWZpeCwgZnVsbG5hbWUpOworICAgICAgICBpZiAoaXNfZGlyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGlzX2RpcikgeworICAgICAgICAgICAgLyogVGhpcyBpcyBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgICAgICAgICAgICAgIHBhY2thZ2UuIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBpdHMgcGF0aCwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgYSB0cmFpbGluZyBzZXBhcmF0b3IuICovCisgICAgICAgICAgICAqbmFtZXNwYWNlX3BvcnRpb24gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgU0VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBmdWxsbmFtZSk7CisgICAgICAgICAgICBpZiAoKm5hbWVzcGFjZV9wb3J0aW9uID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZMX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIEZMX05TX0ZPVU5EOworICAgICAgICB9CisgICAgICAgIHJldHVybiBGTF9OT1RfRk9VTkQ7CisgICAgfQorICAgIC8qIFRoaXMgaXMgYSBtb2R1bGUgb3IgcGFja2FnZS4gKi8KKyAgICByZXR1cm4gRkxfTU9EVUxFX0ZPVU5EOworfQorCisKIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIHNhdGlzZnkgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5CiAgICAnZnVsbG5hbWUnLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4sIE5vbmUgaWYgd2UgY2FuJ3QuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg3LDIyICszNzcsNjQgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgY2hhciAqZnVsbG5hbWU7Ci0gICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xPOnppcGltcG9ydGVyLmZpbmRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfE86emlwaW1wb3J0ZXIuZmluZF9tb2R1bGUiLCAmZnVsbG5hbWUsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7Ci0gICAgaWYgKG1pID09IE1JX0VSUk9SKQorICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgY2FzZSBGTF9OU19GT1VORDoKKyAgICAgICAgLyogQSBuYW1lc3BhY2UgcG9ydGlvbiBpcyBub3QgYWxsb3dlZCB2aWEgZmluZF9tb2R1bGUsIHNvIHJldHVybiBOb25lLiAqLworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKyAgICBjYXNlIEZMX05PVF9GT1VORDoKKyAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGTF9NT0RVTEVfRk9VTkQ6CisgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQorICAgJ2Z1bGxuYW1lJywgb3Igd2hldGhlciBpdCBjb3VsZCBiZSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgIHBhY2thZ2UuIFJldHVybiBzZWxmIGlmIHdlIGNhbiBsb2FkIGl0LCBhIHN0cmluZyBjb250YWluaW5nIHRoZQorICAgZnVsbCBwYXRoIGlmIGl0J3MgYSBwb3NzaWJsZSBuYW1lc3BhY2UgcG9ydGlvbiwgTm9uZSBpZiB3ZQorICAgY2FuJ3QgbG9hZCBpdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit6aXBpbXBvcnRlcl9maW5kX2xvYWRlcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Tzp6aXBpbXBvcnRlci5maW5kX21vZHVsZSIsICZmdWxsbmFtZSwgJnBhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjYXNlIEZMX05PVF9GT1VORDogICAgICAgIC8qIE5vdCBmb3VuZCwgcmV0dXJuIChOb25lLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgUHlfTm9uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTU9EVUxFX0ZPVU5EOiAgICAgLyogUmV0dXJuIChzZWxmLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgc2VsZik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTlNfRk9VTkQ6ICAgICAgICAgLyogUmV0dXJuIChOb25lLCBbbmFtZXNwYWNlX3BvcnRpb25dKSAqLworICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPW09dIiwgUHlfTm9uZSwgbmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBMb2FkIGFuZCByZXR1cm4gdGhlIG1vZHVsZSBuYW1lZCBieSAnZnVsbG5hbWUnLiAqLwpAQCAtMzExLDE5ICs0NDMsMjEgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICptb2QsICpkaWN0OwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTCwgKm1vZHBhdGhfYnl0ZXM7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTDsKICAgICBpbnQgaXNwYWNrYWdlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmxvYWRfbW9kdWxlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIubG9hZF9tb2R1bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjb2RlID0gZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lLCAmaXNwYWNrYWdlLCAmbW9kcGF0aCk7CiAgICAgaWYgKGNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShmdWxsbmFtZSk7CisgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KGZ1bGxuYW1lKTsKICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKQEAgLTMzNiwxNyArNDcwLDE3IEBACiAgICAgICAgIC8qIGFkZCBfX3BhdGhfXyB0byB0aGUgbW9kdWxlICpiZWZvcmUqIHRoZSBjb2RlIGdldHMKICAgICAgICAgICAgZXhlY3V0ZWQgKi8KICAgICAgICAgUHlPYmplY3QgKnBrZ3BhdGgsICpmdWxscGF0aDsKLSAgICAgICAgY2hhciAqc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKnN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CiAgICAgICAgIGludCBlcnI7CiAKLSAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJXMiLAorICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjJVUlVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHN1Ym5hbWUpOwogICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZ1bGxwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKKyAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltOXSIsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHBrZ3BhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX3BhdGhfXyIsIHBrZ3BhdGgpOwpAQCAtMzU0LDE4ICs0ODgsMTMgQEAKICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgbW9kcGF0aF9ieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQobW9kcGF0aCk7Ci0gICAgaWYgKG1vZHBhdGhfYnl0ZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KGZ1bGxuYW1lLCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aF9ieXRlcykpOwotICAgIFB5X0RFQ1JFRihtb2RwYXRoX2J5dGVzKTsKKyAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChmdWxsbmFtZSwgY29kZSwgbW9kcGF0aCwgTlVMTCk7CiAgICAgUHlfQ0xFQVIoY29kZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlcyAjIGxvYWRlZCBmcm9tIFppcCAlVVxuIiwKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJVUgIyBsb2FkZWQgZnJvbSBaaXAgJVVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgbW9kcGF0aCk7CiAgICAgUHlfREVDUkVGKG1vZHBhdGgpOwogICAgIHJldHVybiBtb2Q7CkBAIC0zODAsMTIgKzUwOSwxMCBAQAogemlwaW1wb3J0ZXJfZ2V0X2ZpbGVuYW1lKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIFB5T2JqZWN0ICpjb2RlOwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZSwgKmNvZGUsICptb2RwYXRoOwogICAgIGludCBpc3BhY2thZ2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQwNCwxMCArNTMxLDEwIEBACiB6aXBpbXBvcnRlcl9pc19wYWNrYWdlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIGNoYXIgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmlzX3BhY2thZ2UiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5pc19wYWNrYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQxNSw3MSArNTQyLDcwIEBACiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhtaSA9PSBNSV9QQUNLQUdFKTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2RhdGEoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgUHlPYmplY3QgKnBhdGhvYmosICprZXk7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcGF0aDsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmtleTsKICNpZmRlZiBBTFRTRVAKLSAgICBQeV9VTklDT0RFICpwLCBidWZbTUFYUEFUSExFTiArIDFdOworICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOwogI2VuZGlmCi0gICAgUHlfVU5JQ09ERSAqYXJjaGl2ZTsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIFB5X3NzaXplX3QgcGF0aF9sZW4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IHBhdGhfc3RhcnQsIHBhdGhfbGVuLCBsZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2RhdGEiLCAmcGF0aG9iaikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9kYXRhIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBhdGhfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKTsKICNpZmRlZiBBTFRTRVAKLSAgICBpZiAocGF0aF9sZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJwYXRoIHRvbyBsb25nIik7CisgICAgcGF0aCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocGF0aCwgJlB5SWRfcmVwbGFjZSwgIkNDIiwgQUxUU0VQLCBTRVApOworICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZiwgcGF0aCk7Ci0gICAgZm9yIChwID0gYnVmOyAqcDsgcCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSBBTFRTRVApCi0gICAgICAgICAgICAqcCA9IFNFUDsKLSAgICB9Ci0gICAgcGF0aCA9IGJ1ZjsKKyNlbHNlCisgICAgUHlfSU5DUkVGKHBhdGgpOwogI2VuZGlmCi0gICAgYXJjaGl2ZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmFyY2hpdmUpOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5hcmNoaXZlKTsKLSAgICBpZiAoKHNpemVfdClsZW4gPCBQeV9VTklDT0RFX3N0cmxlbihwYXRoKSAmJgotICAgICAgICBQeV9VTklDT0RFX3N0cm5jbXAocGF0aCwgYXJjaGl2ZSwgbGVuKSA9PSAwICYmCi0gICAgICAgIHBhdGhbbGVuXSA9PSBTRVApIHsKLSAgICAgICAgcGF0aCArPSBsZW4gKyAxOwotICAgICAgICBwYXRoX2xlbiAtPSBsZW4gKyAxOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBwYXRoX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+YXJjaGl2ZSk7CisgICAgcGF0aF9zdGFydCA9IDA7CisgICAgaWYgKFB5VW5pY29kZV9UYWlsbWF0Y2gocGF0aCwgc2VsZi0+YXJjaGl2ZSwgMCwgbGVuLCAtMSkKKyAgICAgICAgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihwYXRoLCBsZW4pID09IFNFUCkgeworICAgICAgICBwYXRoX3N0YXJ0ID0gbGVuICsgMTsKICAgICB9CiAKLSAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocGF0aCwgcGF0aF9sZW4pOworICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgcGF0aF9zdGFydCwgcGF0aF9sZW4pOwogICAgIGlmIChrZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGtleSk7CiAgICAgaWYgKHRvY19lbnRyeSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19JT0Vycm9yLCBrZXkpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihrZXkpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2NvZGUoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgY2hhciAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9jb2RlIiwgJmZ1bGxuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2NvZGUiLCAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBnZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUsIE5VTEwsIE5VTEwpOwpAQCAtNDkwLDM0ICs2MTYsMzkgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIGNoYXIgKmZ1bGxuYW1lLCAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lLCAqc3VibmFtZSwgKnBhdGgsICpmdWxscGF0aDsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9zb3VyY2UiLCAmZnVsbG5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5nZXRfc291cmNlIiwgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7CiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOwotCi0gICAgbGVuID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKGxlbiA8IDApCisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkgewotICAgICAgICBwYXRoW2xlbl0gPSBTRVA7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuICsgMSwgIl9faW5pdF9fLnB5Iik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sICIucHkiKTsKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlY19faW5pdF9fLnB5IiwgcGF0aCwgU0VQKTsKKyAgICBlbHNlCisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLnB5IiwgcGF0aCk7CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIGlmIChmdWxscGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBmdWxscGF0aCk7CisgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKICAgICBpZiAodG9jX2VudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcywgKmJ5dGVzOwogICAgICAgICBieXRlcyA9IGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CkBAIC01NDMsNiArNjc0LDE2IEBACiBUaGUgb3B0aW9uYWwgJ3BhdGgnIGFyZ3VtZW50IGlzIGlnbm9yZWQgLS0gaXQncyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eVxuXAogd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuIik7CiAKK1B5RG9jX1NUUlZBUihkb2NfZmluZF9sb2FkZXIsCisiZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGg9Tm9uZSkgLT4gc2VsZiwgc3RyIG9yIE5vbmUuXG5cCitcblwKK1NlYXJjaCBmb3IgYSBtb2R1bGUgc3BlY2lmaWVkIGJ5ICdmdWxsbmFtZScuICdmdWxsbmFtZScgbXVzdCBiZSB0aGVcblwKK2Z1bGx5IHF1YWxpZmllZCAoZG90dGVkKSBtb2R1bGUgbmFtZS4gSXQgcmV0dXJucyB0aGUgemlwaW1wb3J0ZXJcblwKK2luc3RhbmNlIGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGVcblwKK2Z1bGwgcGF0aCBuYW1lIGlmIGl0J3MgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UsXG5cCitvciBOb25lIG90aGVyd2lzZS4gVGhlIG9wdGlvbmFsICdwYXRoJyBhcmd1bWVudCBpcyBpZ25vcmVkIC0tIGl0J3NcblwKKyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBpbXBvcnRlciBwcm90b2NvbC4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19sb2FkX21vZHVsZSwKICJsb2FkX21vZHVsZShmdWxsbmFtZSkgLT4gbW9kdWxlLlxuXAogXG5cCkBAIC01ODQsNiArNzI1LDggQEAKIHN0YXRpYyBQeU1ldGhvZERlZiB6aXBpbXBvcnRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJmaW5kX21vZHVsZSIsIHppcGltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19maW5kX21vZHVsZX0sCisgICAgeyJmaW5kX2xvYWRlciIsIHppcGltcG9ydGVyX2ZpbmRfbG9hZGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgIGRvY19maW5kX2xvYWRlcn0sCiAgICAgeyJsb2FkX21vZHVsZSIsIHppcGltcG9ydGVyX2xvYWRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19sb2FkX21vZHVsZX0sCiAgICAgeyJnZXRfZGF0YSIsIHppcGltcG9ydGVyX2dldF9kYXRhLCBNRVRIX1ZBUkFSR1MsCkBAIC03MDgsNTUgKzg1MSw0NiBAQAogICAgZGF0YV9zaXplIGFuZCBmaWxlX29mZnNldCBhcmUgMC4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmVfb2JqKQorcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmUpCiB7Ci0gICAgLyogRklYTUU6IHdvcmsgb24gUHlfVU5JQ09ERSogaW5zdGVhZCBvZiBjaGFyKiAqLwogICAgIFB5T2JqZWN0ICpmaWxlcyA9IE5VTEw7CiAgICAgRklMRSAqZnA7CiAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiAgICAgc2hvcnQgY29tcHJlc3MsIHRpbWUsIGRhdGUsIG5hbWVfc2l6ZTsKICAgICBsb25nIGNyYywgZGF0YV9zaXplLCBmaWxlX3NpemUsIGhlYWRlcl9zaXplOwogICAgIFB5X3NzaXplX3QgZmlsZV9vZmZzZXQsIGhlYWRlcl9wb3NpdGlvbiwgaGVhZGVyX29mZnNldDsKLSAgICBsb25nIGksIGwsIGNvdW50OwotICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSBwYXRoW01BWFBBVEhMRU4gKyA1XTsKKyAgICBsb25nIGwsIGNvdW50OworICAgIFB5X3NzaXplX3QgaTsKICAgICBjaGFyIG5hbWVbTUFYUEFUSExFTiArIDVdOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqID0gTlVMTDsKICAgICBjaGFyICpwLCBlbmRvZl9jZW50cmFsX2RpclsyMl07CiAgICAgUHlfc3NpemVfdCBhcmNfb2Zmc2V0OyAgLyogQWJzb2x1dGUgb2Zmc2V0IHRvIHN0YXJ0IG9mIHRoZSB6aXAtYXJjaGl2ZS4gKi8KLSAgICBQeU9iamVjdCAqcGF0aG9iajsKKyAgICBQeU9iamVjdCAqcGF0aDsKICAgICBjb25zdCBjaGFyICpjaGFyc2V0OwogICAgIGludCBib290c3RyYXA7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGFyY2hpdmVfb2JqKSA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiWmlwIHBhdGggbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkocGF0aCwgUHlVbmljb2RlX0FTX1VOSUNPREUoYXJjaGl2ZV9vYmopKTsKLQotICAgIGZwID0gX1B5X2ZvcGVuKGFyY2hpdmVfb2JqLCAicmIiKTsKKyAgICBmcCA9IF9QeV9mb3BlbihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBvcGVuIFppcCBmaWxlOiAnJVUnIiwgYXJjaGl2ZV9vYmopOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGZzZWVrKGZwLCAtMjIsIFNFRUtfRU5EKSA9PSAtMSkgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGhlYWRlcl9wb3NpdGlvbiA9IGZ0ZWxsKGZwKTsKICAgICBpZiAoZnJlYWQoZW5kb2ZfY2VudHJhbF9kaXIsIDEsIDIyLCBmcCkgIT0gMjIpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChnZXRfbG9uZygodW5zaWduZWQgY2hhciAqKWVuZG9mX2NlbnRyYWxfZGlyKSAhPSAweDA2MDU0QjUwKSB7CiAgICAgICAgIC8qIEJhZDogRW5kIG9mIENlbnRyYWwgRGlyIHNpZ25hdHVyZSAqLwogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAibm90IGEgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzY5LDkgKzkwMyw2IEBACiAgICAgaWYgKGZpbGVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBsZW5ndGggPSBQeV9VTklDT0RFX3N0cmxlbihwYXRoKTsKLSAgICBwYXRoW2xlbmd0aF0gPSBTRVA7Ci0KICAgICAvKiBTdGFydCBvZiBDZW50cmFsIERpcmVjdG9yeSAqLwogICAgIGNvdW50ID0gMDsKICAgICBmb3IgKDs7KSB7CkBAIC04MDMsNyArOTM0LDcgQEAKICAgICAgICAgICAgIG5hbWVfc2l6ZSA9IE1BWFBBVEhMRU47CiAKICAgICAgICAgcCA9IG5hbWU7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lX3NpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKFB5X3NzaXplX3QpbmFtZV9zaXplOyBpKyspIHsKICAgICAgICAgICAgICpwID0gKGNoYXIpZ2V0YyhmcCk7CiAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nKQogICAgICAgICAgICAgICAgICpwID0gU0VQOwpAQCAtODM2LDEyICs5NjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfc3RybmNweShwYXRoICsgbGVuZ3RoICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaiksIE1BWFBBVEhMRU4gLSBsZW5ndGggLSAxKTsKLQotICAgICAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHBhdGgsIFB5X1VOSUNPREVfc3RybGVuKHBhdGgpKTsKLSAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lb2JqKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHQgPSBQeV9CdWlsZFZhbHVlKCJOaGxsbmhobCIsIHBhdGhvYmosIGNvbXByZXNzLCBkYXRhX3NpemUsCisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVIiwgYXJjaGl2ZSwgU0VQLCBuYW1lb2JqKTsKKyAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHQgPSBQeV9CdWlsZFZhbHVlKCJOaGxsbmhobCIsIHBhdGgsIGNvbXByZXNzLCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSwgZmlsZV9vZmZzZXQsIHRpbWUsIGRhdGUsIGNyYyk7CiAgICAgICAgIGlmICh0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtODU0LDE0ICs5ODUsMTQgQEAKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlVVxuIiwKLSAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlUlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlKTsKICAgICByZXR1cm4gZmlsZXM7CiBmc2Vla19lcnJvcjoKICAgICBmY2xvc2UoZnApOwogICAgIFB5X1hERUNSRUYoZmlsZXMpOwogICAgIFB5X1hERUNSRUYobmFtZW9iaik7Ci0gICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVUiLCBhcmNoaXZlX29iaik7CisgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICByZXR1cm4gTlVMTDsKIGVycm9yOgogICAgIGZjbG9zZShmcCk7CkBAIC04NzksNiArMTAxMCw3IEBACiAgICAgc3RhdGljIGludCBpbXBvcnRpbmdfemxpYiA9IDA7CiAgICAgUHlPYmplY3QgKnpsaWI7CiAgICAgUHlPYmplY3QgKmRlY29tcHJlc3M7CisgICAgX1B5X0lERU5USUZJRVIoZGVjb21wcmVzcyk7CiAKICAgICBpZiAoaW1wb3J0aW5nX3psaWIgIT0gMCkKICAgICAgICAgLyogU29tZW9uZSBoYXMgYSB6bGliLnB5W2NvXSBpbiB0aGVpciBaaXAgZmlsZTsKQEAgLTg4OCw4ICsxMDIwLDggQEAKICAgICB6bGliID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiemxpYiIpOwogICAgIGltcG9ydGluZ196bGliID0gMDsKICAgICBpZiAoemxpYiAhPSBOVUxMKSB7Ci0gICAgICAgIGRlY29tcHJlc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHpsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzIik7CisgICAgICAgIGRlY29tcHJlc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHpsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2RlY29tcHJlc3MpOwogICAgICAgICBQeV9ERUNSRUYoemxpYik7CiAgICAgfQogICAgIGVsc2UgewpAQCAtOTM0LDcgKzEwNjYsNyBAQAogICAgIC8qIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgbG9jYWwgZmlsZSBoZWFkZXIgaXMgY29ycmVjdCAqLwogICAgIGlmIChmc2VlayhmcCwgZmlsZV9vZmZzZXQsIDApID09IC0xKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTQ5LDcgKzEwODEsNyBAQAogICAgIH0KICAgICBpZiAoZnNlZWsoZnAsIGZpbGVfb2Zmc2V0ICsgMjYsIDApID09IC0xKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTczLDcgKzExMDUsNyBAQAogICAgICAgICBieXRlc19yZWFkID0gZnJlYWQoYnVmLCAxLCBkYXRhX3NpemUsIGZwKTsKICAgICB9IGVsc2UgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKQEAgLTEwMzAsNyArMTE2Miw3IEBACiAgICB0byAucHkgaWYgYXZhaWxhYmxlIGFuZCB3ZSBkb24ndCB3YW50IHRvIG1hc2sgb3RoZXIgZXJyb3JzKS4KICAgIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXVubWFyc2hhbF9jb2RlKGNoYXIgKnBhdGhuYW1lLCBQeU9iamVjdCAqZGF0YSwgdGltZV90IG10aW1lKQordW5tYXJzaGFsX2NvZGUoUHlPYmplY3QgKnBhdGhuYW1lLCBQeU9iamVjdCAqZGF0YSwgdGltZV90IG10aW1lKQogewogICAgIFB5T2JqZWN0ICpjb2RlOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcoZGF0YSk7CkBAIC0xMDQ0LDggKzExNzYsOCBAQAogCiAgICAgaWYgKGdldF9sb25nKCh1bnNpZ25lZCBjaGFyICopYnVmKSAhPSBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpKSB7CiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbWFnaWNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgJVIgaGFzIGJhZCBtYWdpY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7ICAvKiBzaWduYWwgY2FsbGVyIHRvIHRyeSBhbHRlcm5hdGl2ZSAqLwogICAgIH0KQEAgLTEwNTMsMTkgKzExODUsMjEgQEAKICAgICBpZiAobXRpbWUgIT0gMCAmJiAhZXFfbXRpbWUoZ2V0X2xvbmcoKHVuc2lnbmVkIGNoYXIgKilidWYgKyA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRpbWUpKSB7CiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbXRpbWVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgJVIgaGFzIGJhZCBtdGltZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7ICAvKiBzaWduYWwgY2FsbGVyIHRvIHRyeSBhbHRlcm5hdGl2ZSAqLwogICAgIH0KIAotICAgIGNvZGUgPSBQeU1hcnNoYWxfUmVhZE9iamVjdEZyb21TdHJpbmcoYnVmICsgOCwgc2l6ZSAtIDgpOworICAgIC8qIFhYWCB0aGUgcHljJ3Mgc2l6ZSBmaWVsZCBpcyBpZ25vcmVkOyB0aW1lc3RhbXAgY29sbGlzaW9ucyBhcmUgcHJvYmFibHkKKyAgICAgICB1bmltcG9ydGFudCB3aXRoIHppcCBmaWxlcy4gKi8KKyAgICBjb2RlID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKGJ1ZiArIDEyLCBzaXplIC0gMTIpOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAiY29tcGlsZWQgbW9kdWxlICVzIGlzIG5vdCBhIGNvZGUgb2JqZWN0IiwKKyAgICAgICAgICAgICAiY29tcGlsZWQgbW9kdWxlICVSIGlzIG5vdCBhIGNvZGUgb2JqZWN0IiwKICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNzksMTEgKzEyMTMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBub3JtYWxpemVfbGluZV9lbmRpbmdzKFB5T2JqZWN0ICpzb3VyY2UpCiB7Ci0gICAgY2hhciAqYnVmLCAqcSwgKnAgPSBQeUJ5dGVzX0FzU3RyaW5nKHNvdXJjZSk7CisgICAgY2hhciAqYnVmLCAqcSwgKnA7CiAgICAgUHlPYmplY3QgKmZpeGVkX3NvdXJjZTsKICAgICBpbnQgbGVuID0gMDsKIAotICAgIGlmICghcCkgeworICAgIHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHNvdXJjZSk7CisgICAgaWYgKHAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiXG5cMCIsIDIpOwogICAgIH0KIApAQCAtMTExNiwxNiArMTI1MSwyNCBAQAogLyogR2l2ZW4gYSBzdHJpbmcgYnVmZmVyIGNvbnRhaW5pbmcgUHl0aG9uIHNvdXJjZSBjb2RlLCBjb21waWxlIGl0CiAgICByZXR1cm4gYW5kIHJldHVybiBhIGNvZGUgb2JqZWN0IGFzIGEgbmV3IHJlZmVyZW5jZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1jb21waWxlX3NvdXJjZShjaGFyICpwYXRobmFtZSwgUHlPYmplY3QgKnNvdXJjZSkKK2NvbXBpbGVfc291cmNlKFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKnNvdXJjZSkKIHsKLSAgICBQeU9iamVjdCAqY29kZSwgKmZpeGVkX3NvdXJjZTsKKyAgICBQeU9iamVjdCAqY29kZSwgKmZpeGVkX3NvdXJjZSwgKnBhdGhieXRlczsKIAotICAgIGZpeGVkX3NvdXJjZSA9IG5vcm1hbGl6ZV9saW5lX2VuZGluZ3Moc291cmNlKTsKLSAgICBpZiAoZml4ZWRfc291cmNlID09IE5VTEwpCisgICAgcGF0aGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRobmFtZSk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nKFB5Qnl0ZXNfQXNTdHJpbmcoZml4ZWRfc291cmNlKSwgcGF0aG5hbWUsCisgICAgZml4ZWRfc291cmNlID0gbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhzb3VyY2UpOworICAgIGlmIChmaXhlZF9zb3VyY2UgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmcoUHlCeXRlc19Bc1N0cmluZyhmaXhlZF9zb3VyY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcocGF0aGJ5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0KTsKKyAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKICAgICBQeV9ERUNSRUYoZml4ZWRfc291cmNlKTsKICAgICByZXR1cm4gY29kZTsKIH0KQEAgLTExNTQsMTQgKzEyOTcsMjIgQEAKICAgIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBtYXRjaGluZyAucHkgZmlsZSwgb3IgMCBpZiBubyBzb3VyY2UKICAgIGlzIGF2YWlsYWJsZS4gKi8KIHN0YXRpYyB0aW1lX3QKLWdldF9tdGltZV9vZl9zb3VyY2UoWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKnBhdGgpCitnZXRfbXRpbWVfb2Zfc291cmNlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIHRpbWVfdCBtdGltZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBsYXN0Y2hhciA9IHN0cmxlbihwYXRoKSAtIDE7Ci0gICAgY2hhciBzYXZlY2hhciA9IHBhdGhbbGFzdGNoYXJdOwotICAgIHBhdGhbbGFzdGNoYXJdID0gJ1wwJzsgIC8qIHN0cmlwICdjJyBvciAnbycgZnJvbSAqLnB5W2NvXSAqLwotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBQeU9iamVjdCAqdG9jX2VudHJ5LCAqc3RyaXBwZWQ7CisgICAgdGltZV90IG10aW1lOworCisgICAgLyogc3RyaXAgJ2MnIG9yICdvJyBmcm9tICoucHlbY29dICovCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYXRoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuICh0aW1lX3QpLTE7CisgICAgc3RyaXBwZWQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV9LSU5EKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkgLSAxKTsKKyAgICBpZiAoc3RyaXBwZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICh0aW1lX3QpLTE7CisKKyAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgc3RyaXBwZWQpOworICAgIFB5X0RFQ1JFRihzdHJpcHBlZCk7CiAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2sodG9jX2VudHJ5KSAmJgogICAgICAgICBQeVR1cGxlX1NpemUodG9jX2VudHJ5KSA9PSA4KSB7CiAgICAgICAgIC8qIGZldGNoIHRoZSB0aW1lIHN0YW1wIG9mIHRoZSAucHkgZmlsZSBmb3IgY29tcGFyaXNvbgpAQCAtMTE3MCw4ICsxMzIxLDggQEAKICAgICAgICAgdGltZSA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgNSkpOwogICAgICAgICBkYXRlID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCA2KSk7CiAgICAgICAgIG10aW1lID0gcGFyc2VfZG9zdGltZSh0aW1lLCBkYXRlKTsKLSAgICB9Ci0gICAgcGF0aFtsYXN0Y2hhcl0gPSBzYXZlY2hhcjsKKyAgICB9IGVsc2UKKyAgICAgICAgbXRpbWUgPSAwOwogICAgIHJldHVybiBtdGltZTsKIH0KIApAQCAtMTE4MSwyNCArMTMzMiwxNyBAQAogZ2V0X2NvZGVfZnJvbV9kYXRhKFppcEltcG9ydGVyICpzZWxmLCBpbnQgaXNwYWNrYWdlLCBpbnQgaXNieXRlY29kZSwKICAgICAgICAgICAgICAgICAgICB0aW1lX3QgbXRpbWUsIFB5T2JqZWN0ICp0b2NfZW50cnkpCiB7Ci0gICAgUHlPYmplY3QgKmRhdGEsICpjb2RlOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpkYXRhLCAqbW9kcGF0aCwgKmNvZGU7CiAKICAgICBkYXRhID0gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1vZHBhdGggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApKTsKLSAgICBpZiAobW9kcGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgbW9kcGF0aCA9IFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApOwogICAgIGlmIChpc2J5dGVjb2RlKQotICAgICAgICBjb2RlID0gdW5tYXJzaGFsX2NvZGUoUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aCksIGRhdGEsIG10aW1lKTsKKyAgICAgICAgY29kZSA9IHVubWFyc2hhbF9jb2RlKG1vZHBhdGgsIGRhdGEsIG10aW1lKTsKICAgICBlbHNlCi0gICAgICAgIGNvZGUgPSBjb21waWxlX3NvdXJjZShQeUJ5dGVzX0FTX1NUUklORyhtb2RwYXRoKSwgZGF0YSk7Ci0gICAgUHlfREVDUkVGKG1vZHBhdGgpOworICAgICAgICBjb2RlID0gY29tcGlsZV9zb3VyY2UobW9kcGF0aCwgZGF0YSk7CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiBjb2RlOwogfQpAQCAtMTIwNiwzNSArMTM1MCw0NSBAQAogLyogR2V0IHRoZSBjb2RlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIG1vZHVsZSBzcGVjaWZpZWQgYnkKICAgICdmdWxsbmFtZScuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK2dldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmZ1bGxuYW1lLAogICAgICAgICAgICAgICAgIGludCAqcF9pc3BhY2thZ2UsIFB5T2JqZWN0ICoqcF9tb2RwYXRoKQogewotICAgIFB5T2JqZWN0ICp0b2NfZW50cnk7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICp0b2NfZW50cnksICpzdWJuYW1lOworICAgIFB5T2JqZWN0ICpwYXRoLCAqZnVsbHBhdGggPSBOVUxMOwogICAgIHN0cnVjdCBzdF96aXBfc2VhcmNob3JkZXIgKnpzbzsKIAogICAgIHN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBsZW4gPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAobGVuIDwgMCkKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpjb2RlID0gTlVMTDsKKyAgICAgICAgY29kZSA9IE5VTEw7CiAKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sIHpzby0+c3VmZml4KTsKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlcyIsIHBhdGgsIHpzby0+c3VmZml4KTsKKyAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB0cnlpbmcgJVUlYyVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIChpbnQpU0VQLCBwYXRoKTsKLSAgICAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoc2VsZi0+ZmlsZXMsIHBhdGgpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIHRyeWluZyAlVSVjJVVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgKGludClTRVAsIGZ1bGxwYXRoKTsKKyAgICAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0aW1lX3QgbXRpbWUgPSAwOwogICAgICAgICAgICAgaW50IGlzcGFja2FnZSA9IHpzby0+dHlwZSAmIElTX1BBQ0tBR0U7CiAgICAgICAgICAgICBpbnQgaXNieXRlY29kZSA9IHpzby0+dHlwZSAmIElTX0JZVEVDT0RFOwogCi0gICAgICAgICAgICBpZiAoaXNieXRlY29kZSkKLSAgICAgICAgICAgICAgICBtdGltZSA9IGdldF9tdGltZV9vZl9zb3VyY2Uoc2VsZiwgcGF0aCk7CisgICAgICAgICAgICBpZiAoaXNieXRlY29kZSkgeworICAgICAgICAgICAgICAgIG10aW1lID0gZ2V0X210aW1lX29mX3NvdXJjZShzZWxmLCBmdWxscGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKG10aW1lID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIoZnVsbHBhdGgpOwogICAgICAgICAgICAgaWYgKHBfaXNwYWNrYWdlICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgKnBfaXNwYWNrYWdlID0gaXNwYWNrYWdlOwogICAgICAgICAgICAgY29kZSA9IGdldF9jb2RlX2Zyb21fZGF0YShzZWxmLCBpc3BhY2thZ2UsCkBAIC0xMjUwLDExICsxNDA0LDE2IEBACiAgICAgICAgICAgICAgICAgKnBfbW9kcGF0aCA9IFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRigqcF9tb2RwYXRoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb2RlOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0NMRUFSKGZ1bGxwYXRoKTsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgZmluZCBtb2R1bGUgJyVzJyIsIGZ1bGxuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKK2V4aXQ6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIFB5X1hERUNSRUYoZnVsbHBhdGgpOworICAgIHJldHVybiBjb2RlOwogfQogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggYmI0NTNhZS4uZTcxODc5NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTQzLDcgKzQzLDkgQEAKICAgICB6X3N0cmVhbSB6c3Q7CiAgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOwogICAgIFB5T2JqZWN0ICp1bmNvbnN1bWVkX3RhaWw7CisgICAgY2hhciBlb2Y7CiAgICAgaW50IGlzX2luaXRpYWxpc2VkOworICAgIFB5T2JqZWN0ICp6ZGljdDsKICAgICAjaWZkZWYgV0lUSF9USFJFQUQKICAgICAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CiAgICAgI2VuZGlmCkBAIC03OSwxNCArODEsMzQgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGNvbXByZXNzb2JqX19kb2NfXywKLSJjb21wcmVzc29iaihbbGV2ZWxdKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKKyJjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtbGV2ZWw9OCxcbiIKKyIgICAgICAgICAgICBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pXG4iCisiIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogIlxuIgotIk9wdGlvbmFsIGFyZyBsZXZlbCBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4iKTsKKyJsZXZlbCBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwgKGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOTsgZGVmYXVsdCBpcyA2KS5cbiIKKyJIaWdoZXIgY29tcHJlc3Npb24gbGV2ZWxzIGFyZSBzbG93ZXIsIGJ1dCBwcm9kdWNlIHNtYWxsZXIgcmVzdWx0cy5cbiIKKyJcbiIKKyJtZXRob2QgaXMgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gSWYgZ2l2ZW4sIHRoaXMgbXVzdCBiZSBERUZMQVRFRC5cbiIKKyJcbiIKKyJ3Yml0cyBpcyB0aGUgYmFzZSB0d28gbG9nYXJpdGhtIG9mIHRoZSB3aW5kb3cgc2l6ZSAocmFuZ2U6IDguLjE1KS5cbiIKKyJcbiIKKyJtZW1sZXZlbCBjb250cm9scyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS5cbiIKKyJWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSAxIHRvIDkuIEhpZ2hlciB2YWx1ZXMgcmVzdWx0IGluIGhpZ2hlciBtZW1vcnkgdXNhZ2UsXG4iCisiZmFzdGVyIGNvbXByZXNzaW9uLCBhbmQgc21hbGxlciBvdXRwdXQuXG4iCisiXG4iCisic3RyYXRlZ3kgaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIFBvc3NpYmxlIHZhbHVlcyBhcmVcbiIKKyJaX0RFRkFVTFRfU1RSQVRFR1ksIFpfRklMVEVSRUQsIGFuZCBaX0hVRkZNQU5fT05MWS5cbiIKKyJcbiIKKyJ6ZGljdCBpcyB0aGUgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IC0gYSBzZXF1ZW5jZSBvZiBieXRlc1xuIgorImNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4iKTsKIAogUHlEb2NfU1RSVkFSKGRlY29tcHJlc3NvYmpfX2RvY19fLAotImRlY29tcHJlc3NvYmooW3diaXRzXSkgLS0gUmV0dXJuIGEgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKKyJkZWNvbXByZXNzb2JqKFt3Yml0c1ssIHpkaWN0XV0pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCi0iT3B0aW9uYWwgYXJnIHdiaXRzIGlzIHRoZSB3aW5kb3cgYnVmZmVyIHNpemUuIik7CisiT3B0aW9uYWwgYXJnIHdiaXRzIGlzIHRoZSB3aW5kb3cgYnVmZmVyIHNpemUuXG4iCisiXG4iCisiT3B0aW9uYWwgYXJnIHpkaWN0IGlzIHRoZSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIFRoaXMgbXVzdCBiZVxuIgorInRoZSBzYW1lIGRpY3Rpb25hcnkgYXMgdXNlZCBieSB0aGUgY29tcHJlc3NvciB0aGF0IHByb2R1Y2VkIHRoZSBpbnB1dCBkYXRhLiIpOwogCiBzdGF0aWMgY29tcG9iamVjdCAqCiBuZXdjb21wb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKQEAgLTk1LDcgKzExNyw5IEBACiAgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhjb21wb2JqZWN0LCB0eXBlKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5lb2YgPSAwOwogICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMDsKKyAgICBzZWxmLT56ZGljdCA9IE5VTEw7CiAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKICAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CkBAIC0yOTcsNyArMzIxLDcgQEAKIAogICAgIGVyciA9IGluZmxhdGVFbmQoJnpzdCk7CiAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgIHpsaWJfZXJyb3IoenN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGF0YSBkZWNvbXByZXNzaW9uIik7CisgICAgICAgIHpsaWJfZXJyb3IoenN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGVjb21wcmVzc2lvbiIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMzE0LDE5ICszMzgsMjQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5WmxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitQeVpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKnNlbGZwdHIsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGNvbXBvYmplY3QgKnNlbGY7CiAgICAgaW50IGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgbWV0aG9kPURFRkxBVEVEOwogICAgIGludCB3Yml0cz1NQVhfV0JJVFMsIG1lbUxldmVsPURFRl9NRU1fTEVWRUwsIHN0cmF0ZWd5PTAsIGVycjsKKyAgICBQeV9idWZmZXIgemRpY3Q7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGlpaWlpOmNvbXByZXNzb2JqIiwgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1MZXZlbCwgJnN0cmF0ZWd5KSkKKyAgICB6ZGljdC5idWYgPSBOVUxMOyAvKiBTZW50aW5lbCwgc28gd2UgY2FuIHRlbGwgd2hldGhlciB6ZGljdCB3YXMgc3VwcGxpZWQuICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IG5ld2NvbXBvYmplY3QoJkNvbXB0eXBlKTsKICAgICBpZiAoc2VsZj09TlVMTCkKLSAgICAgICAgcmV0dXJuKE5VTEwpOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHNlbGYtPnpzdC56YWxsb2MgPSAoYWxsb2NfZnVuYylOVUxMOwogICAgIHNlbGYtPnpzdC56ZnJlZSA9IChmcmVlX2Z1bmMpWl9OVUxMOwogICAgIHNlbGYtPnpzdC5uZXh0X2luID0gTlVMTDsKQEAgLTMzNSwzMCArMzY0LDU4IEBACiAgICAgc3dpdGNoKGVycikgewogICAgIGNhc2UgKFpfT0spOgogICAgICAgICBzZWxmLT5pc19pbml0aWFsaXNlZCA9IDE7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CisgICAgICAgIGlmICh6ZGljdC5idWYgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBzdWNjZXNzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJyID0gZGVmbGF0ZVNldERpY3Rpb25hcnkoJnNlbGYtPnpzdCwgemRpY3QuYnVmLCB6ZGljdC5sZW4pOworICAgICAgICAgICAgc3dpdGNoIChlcnIpIHsKKyAgICAgICAgICAgIGNhc2UgKFpfT0spOgorICAgICAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKKyAgICAgICAgICAgIGNhc2UgKFpfU1RSRUFNX0VSUk9SKToKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGVmbGF0ZVNldERpY3Rpb25hcnkoKSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgfQogICAgIGNhc2UgKFpfTUVNX0VSUk9SKToKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21wcmVzc2lvbiBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgY2FzZShaX1NUUkVBTV9FUlJPUik6Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGluaXRpYWxpemF0aW9uIG9wdGlvbiIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBkZWZhdWx0OgogICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgY3JlYXRpbmcgY29tcHJlc3Npb24gb2JqZWN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCisgZXJyb3I6CisgICAgUHlfWERFQ1JFRihzZWxmKTsKKyAgICBzZWxmID0gTlVMTDsKKyBzdWNjZXNzOgorICAgIGlmICh6ZGljdC5idWYgIT0gTlVMTCkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3QpOworICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitQeVpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OwogICAgIGludCB3Yml0cz1ERUZfV0JJVFMsIGVycjsKICAgICBjb21wb2JqZWN0ICpzZWxmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZGVjb21wcmVzc29iaiIsICZ3Yml0cykpCisgICAgUHlPYmplY3QgKnpkaWN0PU5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmd2JpdHMsICZ6ZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh6ZGljdCAhPSBOVUxMICYmICFQeU9iamVjdF9DaGVja0J1ZmZlcih6ZGljdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ6ZGljdCBhcmd1bWVudCBtdXN0IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBzZWxmID0gbmV3Y29tcG9iamVjdCgmRGVjb21wdHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKQEAgLTM2Nyw2ICs0MjQsMTAgQEAKICAgICBzZWxmLT56c3QuemZyZWUgPSAoZnJlZV9mdW5jKVpfTlVMTDsKICAgICBzZWxmLT56c3QubmV4dF9pbiA9IE5VTEw7CiAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKKyAgICBpZiAoemRpY3QgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoemRpY3QpOworICAgICAgICBzZWxmLT56ZGljdCA9IHpkaWN0OworICAgIH0KICAgICBlcnIgPSBpbmZsYXRlSW5pdDIoJnNlbGYtPnpzdCwgd2JpdHMpOwogICAgIHN3aXRjaChlcnIpIHsKICAgICBjYXNlIChaX09LKToKQEAgLTM5Niw2ICs0NTcsNyBAQAogI2VuZGlmCiAgICAgUHlfWERFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hERUNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKIH0KIApAQCAtNDgyLDcgKzU0NCw3IEBACiAgICAgKi8KIAogICAgIGlmIChlcnIgIT0gWl9PSyAmJiBlcnIgIT0gWl9CVUZfRVJST1IpIHsKLSAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGNvbXByZXNzaW5nIik7CisgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBjb21wcmVzc2luZyBkYXRhIik7CiAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNTk4LDYgKzY2MCwyNyBAQAogICAgIGVyciA9IGluZmxhdGUoJihzZWxmLT56c3QpLCBaX1NZTkNfRkxVU0gpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKKyAgICBpZiAoZXJyID09IFpfTkVFRF9ESUNUICYmIHNlbGYtPnpkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfYnVmZmVyIHpkaWN0X2J1ZjsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZWxmLT56ZGljdCwgJnpkaWN0X2J1ZiwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CisgICAgICAgICAgICBSZXRWYWwgPSBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlcnIgPSBpbmZsYXRlU2V0RGljdGlvbmFyeSgmKHNlbGYtPnpzdCksIHpkaWN0X2J1Zi5idWYsIHpkaWN0X2J1Zi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ6ZGljdF9idWYpOworICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOworICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgLyogUmVwZWF0IHRoZSBjYWxsIHRvIGluZmxhdGUuICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJyID0gaW5mbGF0ZSgmKHNlbGYtPnpzdCksIFpfU1lOQ19GTFVTSCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCiAgICAgLyogV2hpbGUgWl9PSyBhbmQgdGhlIG91dHB1dCBidWZmZXIgaXMgZnVsbCwgdGhlcmUgbWlnaHQgYmUgbW9yZSBvdXRwdXQuCiAgICAgICAgU28gZXh0ZW5kIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0cnkgYWdhaW4uCiAgICAgKi8KQEAgLTYzNCwxNSArNzE3LDE2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgLyogVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBjYWxsIGluZmxhdGVFbmQsIGJ1dCB0aGUgb2xkIGJlaGF2aW91ciBvZgotICAgICAgIG9ubHkgY2FsbGluZyBpdCBvbiBmbHVzaCgpIGlzIHByZXNlcnZlZC4gKi8KLQotICAgIGlmIChlcnIgIT0gWl9TVFJFQU1fRU5EICYmIGVyciAhPSBaX09LICYmIGVyciAhPSBaX0JVRl9FUlJPUikgeworICAgIGlmIChlcnIgPT0gWl9TVFJFQU1fRU5EKSB7CisgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2FsbCBpbmZsYXRlRW5kLCBidXQgdGhlIG9sZCBiZWhhdmlvdXIKKyAgICAgICAgICAgb2Ygb25seSBjYWxsaW5nIGl0IG9uIGZsdXNoKCkgaXMgcHJlc2VydmVkLiAqLworICAgICAgICBzZWxmLT5lb2YgPSAxOworICAgIH0gZWxzZSBpZiAoZXJyICE9IFpfT0sgJiYgZXJyICE9IFpfQlVGX0VSUk9SKSB7CiAgICAgICAgIC8qIFdlIHdpbGwgb25seSBnZXQgWl9CVUZfRVJST1IgaWYgdGhlIG91dHB1dCBidWZmZXIgd2FzIGZ1bGwKICAgICAgICAgICAgYnV0IHRoZXJlIHdhc24ndCBtb3JlIG91dHB1dCB3aGVuIHdlIHRyaWVkIGFnYWluLCBzbyBpdCBpcwogICAgICAgICAgICBub3QgYW4gZXJyb3IgY29uZGl0aW9uLgogICAgICAgICAqLwotICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyIpOworICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIik7CiAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNzIzLDcgKzgwNyw3IEBACiAgICAgaWYgKGVyciA9PSBaX1NUUkVBTV9FTkQgJiYgZmx1c2htb2RlID09IFpfRklOSVNIKSB7CiAgICAgICAgIGVyciA9IGRlZmxhdGVFbmQoJihzZWxmLT56c3QpKTsKICAgICAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAiZnJvbSBkZWZsYXRlRW5kKCkiKTsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgY29tcHJlc3Npb24iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC03ODcsMTAgKzg3MSwxNCBAQAogICAgIH0KICAgICBQeV9JTkNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwogICAgIFB5X0lOQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hJTkNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5X1hERUNSRUYocmV0dmFsLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWERFQ1JFRihyZXR2YWwtPnpkaWN0KTsKICAgICByZXR2YWwtPnVudXNlZF9kYXRhID0gc2VsZi0+dW51c2VkX2RhdGE7CiAgICAgcmV0dmFsLT51bmNvbnN1bWVkX3RhaWwgPSBzZWxmLT51bmNvbnN1bWVkX3RhaWw7CisgICAgcmV0dmFsLT56ZGljdCA9IHNlbGYtPnpkaWN0OworICAgIHJldHZhbC0+ZW9mID0gc2VsZi0+ZW9mOwogCiAgICAgLyogTWFyayBpdCBhcyBiZWluZyBpbml0aWFsaXplZCAqLwogICAgIHJldHZhbC0+aXNfaW5pdGlhbGlzZWQgPSAxOwpAQCAtODM4LDEwICs5MjYsMTQgQEAKIAogICAgIFB5X0lOQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfSU5DUkVGKHNlbGYtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWElOQ1JFRihzZWxmLT56ZGljdCk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVudXNlZF9kYXRhKTsKICAgICBQeV9YREVDUkVGKHJldHZhbC0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YREVDUkVGKHJldHZhbC0+emRpY3QpOwogICAgIHJldHZhbC0+dW51c2VkX2RhdGEgPSBzZWxmLT51bnVzZWRfZGF0YTsKICAgICByZXR2YWwtPnVuY29uc3VtZWRfdGFpbCA9IHNlbGYtPnVuY29uc3VtZWRfdGFpbDsKKyAgICByZXR2YWwtPnpkaWN0ID0gc2VsZi0+emRpY3Q7CisgICAgcmV0dmFsLT5lb2YgPSBzZWxmLT5lb2Y7CiAKICAgICAvKiBNYXJrIGl0IGFzIGJlaW5nIGluaXRpYWxpemVkICovCiAgICAgcmV0dmFsLT5pc19pbml0aWFsaXNlZCA9IDE7CkBAIC05MTUsMTQgKzEwMDcsMTMgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBJZiBmbHVzaG1vZGUgaXMgWl9GSU5JU0gsIHdlIGFsc28gaGF2ZSB0byBjYWxsIGRlZmxhdGVFbmQoKSB0byBmcmVlCi0gICAgICAgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMuIE5vdGUgd2Ugc2hvdWxkIG9ubHkgZ2V0IFpfU1RSRUFNX0VORCB3aGVuCi0gICAgICAgZmx1c2htb2RlIGlzIFpfRklOSVNIICovCisgICAgLyogSWYgYXQgZW5kIG9mIHN0cmVhbSwgY2xlYW4gdXAgYW55IG1lbW9yeSBhbGxvY2F0ZWQgYnkgemxpYi4gKi8KICAgICBpZiAoZXJyID09IFpfU1RSRUFNX0VORCkgewotICAgICAgICBlcnIgPSBpbmZsYXRlRW5kKCYoc2VsZi0+enN0KSk7CisgICAgICAgIHNlbGYtPmVvZiA9IDE7CiAgICAgICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMDsKKyAgICAgICAgZXJyID0gaW5mbGF0ZUVuZCgmKHNlbGYtPnpzdCkpOwogICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKLSAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJmcm9tIGluZmxhdGVFbmQoKSIpOworICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGZpbmlzaGluZyBkZWNvbXByZXNzaW9uIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtOTcxLDYgKzEwNjIsNyBAQAogc3RhdGljIFB5TWVtYmVyRGVmIERlY29tcF9tZW1iZXJzW10gPSB7CiAgICAgeyJ1bnVzZWRfZGF0YSIsICAgICBUX09CSkVDVCwgQ09NUF9PRkYodW51c2VkX2RhdGEpLCBSRUFET05MWX0sCiAgICAgeyJ1bmNvbnN1bWVkX3RhaWwiLCBUX09CSkVDVCwgQ09NUF9PRkYodW5jb25zdW1lZF90YWlsKSwgUkVBRE9OTFl9LAorICAgIHsiZW9mIiwgICAgICAgICAgICAgVF9CT09MLCAgIENPTVBfT0ZGKGVvZiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0sCiB9OwogCkBAIC0xMDU2LDEzICsxMTQ4LDEzIEBACiAgICAgICAgICAgICAgICAgYWRsZXIzMl9fZG9jX199LAogICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzLCAgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICBjb21wcmVzc19fZG9jX199LAotICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1MsCisgICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29ial9fZG9jX199LAogICAgIHsiY3JjMzIiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NyYzMyLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgIGNyYzMyX19kb2NfX30sCiAgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc19fZG9jX199LAotICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTLAorICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc29ial9fZG9jX199LAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTExMzYsMTAgKzEyMjgsMTAgQEAKICJcbiIKICJhZGxlcjMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhbiBBZGxlci0zMiBjaGVja3N1bS5cbiIKICJjb21wcmVzcyhzdHJpbmdbLCBsZXZlbF0pIC0tIENvbXByZXNzIHN0cmluZywgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCBpbiAwLTkuXG4iCi0iY29tcHJlc3NvYmooW2xldmVsXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCisiY29tcHJlc3NvYmooW2xldmVsWywgLi4uXV0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogImNyYzMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhIENSQy0zMiBjaGVja3N1bS5cbiIKICJkZWNvbXByZXNzKHN0cmluZyxbd2JpdHNdLFtidWZzaXplXSkgLS0gRGVjb21wcmVzc2VzIGEgY29tcHJlc3NlZCBzdHJpbmcuXG4iCi0iZGVjb21wcmVzc29iaihbd2JpdHNdKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorImRlY29tcHJlc3NvYmooW3diaXRzWywgemRpY3RdXV0pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCiAiJ3diaXRzJyBpcyB3aW5kb3cgYnVmZmVyIHNpemUuXG4iCiAiQ29tcHJlc3NvciBvYmplY3RzIHN1cHBvcnQgY29tcHJlc3MoKSBhbmQgZmx1c2goKSBtZXRob2RzOyBkZWNvbXByZXNzb3JcbiIKQEAgLTExOTMsNiArMTI4NSwxMCBAQAogICAgIGlmICh2ZXIgIT0gTlVMTCkKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJaTElCX1ZFUlNJT04iLCB2ZXIpOwogCisgICAgdmVyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoemxpYlZlcnNpb24oKSk7CisgICAgaWYgKHZlciAhPSBOVUxMKQorICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlpMSUJfUlVOVElNRV9WRVJTSU9OIiwgdmVyKTsKKwogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICIxLjAiKTsKIAogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDc3MDVkMDUuLmEyNzM3ZGQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTc0LDcgKzc0LDcgQEAKIFB5X3NzaXplX3QKIF9QeU9iamVjdF9MZW5ndGhIaW50KFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGRlZmF1bHR2YWx1ZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmhpbnRzdHJvYmogPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuZ3RoX2hpbnRfXyk7CiAgICAgUHlPYmplY3QgKnJvLCAqaGludG1ldGg7CiAgICAgUHlfc3NpemVfdCBydjsKIApAQCAtODksNyArODksNyBAQAogICAgIH0KIAogICAgIC8qIHRyeSBvLl9fbGVuZ3RoX2hpbnRfXygpICovCi0gICAgaGludG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAiX19sZW5ndGhfaGludF9fIiwgJmhpbnRzdHJvYmopOworICAgIGhpbnRtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19sZW5ndGhfaGludF9fKTsKICAgICBpZiAoaGludG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIzNyw3ICsyMzcsOCBAQAogICAgIHBiID0gb2JqLT5vYl90eXBlLT50cF9hc19idWZmZXI7CiAgICAgaWYgKHBiID09IE5VTEwgfHwgcGItPmJmX2dldGJ1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gb2JqZWN0IHdpdGggdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBieXRlcywgYnl0ZWFycmF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvciBidWZmZXIgY29tcGF0aWJsZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoKCpwYi0+YmZfZ2V0YnVmZmVyKShvYmosICZ2aWV3LCBQeUJVRl9TSU1QTEUpKSByZXR1cm4gLTE7CkBAIC0zMzEsNyArMzMyLDcgQEAKIHsKICAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKG9iaikpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJTEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzOSw3ICszNDAsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fSXNGb3J0cmFuQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcpCitfSXNGb3J0cmFuQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwpAQCAtMzYwLDcgKzM2MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9Jc0NDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldykKK19Jc0NDb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CkBAIC0zODEsMTYgKzM4MiwxNiBAQAogfQogCiBpbnQKLVB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCkKK1B5QnVmZmVyX0lzQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgb3JkZXIpCiB7CiAKICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cyAhPSBOVUxMKSByZXR1cm4gMDsKIAotICAgIGlmIChmb3J0ID09ICdDJykKKyAgICBpZiAob3JkZXIgPT0gJ0MnKQogICAgICAgICByZXR1cm4gX0lzQ0NvbnRpZ3VvdXModmlldyk7Ci0gICAgZWxzZSBpZiAoZm9ydCA9PSAnRicpCisgICAgZWxzZSBpZiAob3JkZXIgPT0gJ0YnKQogICAgICAgICByZXR1cm4gX0lzRm9ydHJhbkNvbnRpZ3VvdXModmlldyk7Ci0gICAgZWxzZSBpZiAoZm9ydCA9PSAnQScpCisgICAgZWxzZSBpZiAob3JkZXIgPT0gJ0EnKQogICAgICAgICByZXR1cm4gKF9Jc0NDb250aWd1b3VzKHZpZXcpIHx8IF9Jc0ZvcnRyYW5Db250aWd1b3VzKHZpZXcpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ0NCw2MiArNDQ1LDYgQEAKICAgICB9CiB9CiAKLSAgLyogdmlldyBpcyBub3QgY2hlY2tlZCBmb3IgY29uc2lzdGVuY3kgaW4gZWl0aGVyIG9mIHRoZXNlLiAgSXQgaXMKLSAgICAgYXNzdW1lZCB0aGF0IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXMgdmlldy0+bGVuIGluCi0gICAgIHZpZXctPmxlbiAvIHZpZXctPml0ZW1zaXplIGVsZW1lbnRzLgotICAqLwotCi1pbnQKLVB5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCkKLXsKLSAgICBpbnQgazsKLSAgICB2b2lkICgqYWRkb25lKShpbnQsIFB5X3NzaXplX3QgKiwgY29uc3QgUHlfc3NpemVfdCAqKTsKLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzLCBlbGVtZW50czsKLSAgICBjaGFyICpkZXN0LCAqcHRyOwotCi0gICAgaWYgKGxlbiA+IHZpZXctPmxlbikgewotICAgICAgICBsZW4gPSB2aWV3LT5sZW47Ci0gICAgfQotCi0gICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBmb3J0KSkgewotICAgICAgICAvKiBzaW1wbGVzdCBjb3B5IGlzIGFsbCB0aGF0IGlzIG5lZWRlZCAqLwotICAgICAgICBtZW1jcHkoYnVmLCB2aWV3LT5idWYsIGxlbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSBhIG1vcmUgZWxhYm9yYXRlIHNjaGVtZSBpcyBuZWVkZWQgKi8KLQotICAgIC8qIFhYWChubm9yd2l0eik6IG5lZWQgdG8gY2hlY2sgZm9yIG92ZXJmbG93ISAqLwotICAgIGluZGljZXMgPSAoUHlfc3NpemVfdCAqKVB5TWVtX01hbGxvYyhzaXplb2YoUHlfc3NpemVfdCkqKHZpZXctPm5kaW0pKTsKLSAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZm9yIChrPTA7IGs8dmlldy0+bmRpbTtrKyspIHsKLSAgICAgICAgaW5kaWNlc1trXSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKGZvcnQgPT0gJ0YnKSB7Ci0gICAgICAgIGFkZG9uZSA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0Y7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBhZGRvbmUgPSBfUHlfYWRkX29uZV90b19pbmRleF9DOwotICAgIH0KLSAgICBkZXN0ID0gYnVmOwotICAgIC8qIFhYWCA6IFRoaXMgaXMgbm90IGdvaW5nIHRvIGJlIHRoZSBmYXN0ZXN0IGNvZGUgaW4gdGhlIHdvcmxkCi0gICAgICAgICAgICAgc2V2ZXJhbCBvcHRpbWl6YXRpb25zIGFyZSBwb3NzaWJsZS4KLSAgICAgKi8KLSAgICBlbGVtZW50cyA9IGxlbiAvIHZpZXctPml0ZW1zaXplOwotICAgIHdoaWxlIChlbGVtZW50cy0tKSB7Ci0gICAgICAgIGFkZG9uZSh2aWV3LT5uZGltLCBpbmRpY2VzLCB2aWV3LT5zaGFwZSk7Ci0gICAgICAgIHB0ciA9IFB5QnVmZmVyX0dldFBvaW50ZXIodmlldywgaW5kaWNlcyk7Ci0gICAgICAgIG1lbWNweShkZXN0LCBwdHIsIHZpZXctPml0ZW1zaXplKTsKLSAgICAgICAgZGVzdCArPSB2aWV3LT5pdGVtc2l6ZTsKLSAgICB9Ci0gICAgUHlNZW1fRnJlZShpbmRpY2VzKTsKLSAgICByZXR1cm4gMDsKLX0KLQogaW50CiBQeUJ1ZmZlcl9Gcm9tQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCkKIHsKQEAgLTY0OCw5ICs1OTMsOSBAQAogCiBpbnQKIFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKm9iaiwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgaW50IHJlYWRvbmx5LCBpbnQgZmxhZ3MpCisgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsKKyAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsgLyogWFhYIHdoeSBub3QgLTE/ICovCiAgICAgaWYgKCgoZmxhZ3MgJiBQeUJVRl9XUklUQUJMRSkgPT0gUHlCVUZfV1JJVEFCTEUpICYmCiAgICAgICAgIChyZWFkb25seSA9PSAxKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCkBAIC02OTYsMTYgKzY0MSwxNiBAQAogICAgIFB5T2JqZWN0ICptZXRoOwogICAgIFB5T2JqZWN0ICplbXB0eSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXRfY2FjaGUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZm9ybWF0X18pOwogCiAgICAgLyogSWYgbm8gZm9ybWF0X3NwZWMgaXMgcHJvdmlkZWQsIHVzZSBhbiBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCkgewotICAgICAgICBlbXB0eSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICBmb3JtYXRfc3BlYyA9IGVtcHR5OwogICAgIH0KIAogICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKGEgYm9ycm93ZWQgcmVmZXJlbmNlKSAqLwotICAgIG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICJfX2Zvcm1hdF9fIiwgJmZvcm1hdF9jYWNoZSk7CisgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtNzkyLDggKzczNyw3IEBACiAgICAgICAgICAgICByZXR1cm4geDsKICAgICAgICAgUHlfREVDUkVGKHgpOyAvKiBjYW4ndCBkbyBpdCAqLwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjY4LDM3ICsxMjEyLDMxIEBACiB9CiAKIAotUHlPYmplY3QgKgotX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KFB5T2JqZWN0ICppbnRlZ3JhbCwgY29uc3QgY2hhciogZXJyb3JfZm9ybWF0KQorLyoKKyAgUmV0dXJucyB0aGUgSW50ZWdyYWwgaW5zdGFuY2UgY29udmVydGVkIHRvIGFuIGludC4gVGhlIGluc3RhbmNlIGlzIGV4cGVjdGVkCisgIHRvIGJlIGFuIGludCBvciBoYXZlIGFuIF9faW50X18gbWV0aG9kLiBTdGVhbHMgaW50ZWdyYWwncworICByZWZlcmVuY2UuIGVycm9yX2Zvcm1hdCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBUeXBlRXJyb3IgaWYgaW50ZWdyYWwKKyAgaXNuJ3QgYWN0dWFsbHkgYW4gSW50ZWdyYWwgaW5zdGFuY2UuIGVycm9yX2Zvcm1hdCBzaG91bGQgYmUgYSBmb3JtYXQgc3RyaW5nCisgIHRoYXQgY2FuIGFjY2VwdCBhIGNoYXIqIG5hbWluZyBpbnRlZ3JhbCdzIHR5cGUuIAorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb252ZXJ0X2ludGVncmFsX3RvX2ludChQeU9iamVjdCAqaW50ZWdyYWwsIGNvbnN0IGNoYXIgKmVycm9yX2Zvcm1hdCkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmludF9uYW1lID0gTlVMTDsKLSAgICBpZiAoaW50X25hbWUgPT0gTlVMTCkgewotICAgICAgICBpbnRfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2ludF9fIik7Ci0gICAgICAgIGlmIChpbnRfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgIC8qIERvbid0IGdvIHRocm91Z2ggdHBfYXNfbnVtYmVyLT5uYl9pbnQgdG8gYXZvaWQKLSAgICAgICAgICAgaGl0dGluZyB0aGUgY2xhc3NpYyBjbGFzcyBmYWxsYmFjayB0byBfX3RydW5jX18uICovCi0gICAgICAgIFB5T2JqZWN0ICppbnRfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIoaW50ZWdyYWwsIGludF9uYW1lKTsKLSAgICAgICAgaWYgKGludF9mdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIFJhaXNlIGEgZGlmZmVyZW50IGVycm9yLiAqLwotICAgICAgICAgICAgZ290byBub25faW50ZWdyYWxfZXJyb3I7CisgICAgUHlOdW1iZXJNZXRob2RzICpuYjsKKyAgICBpZiAoUHlMb25nX0NoZWNrKGludGVncmFsKSkKKyAgICAgICAgcmV0dXJuIGludGVncmFsOworICAgIG5iID0gUHlfVFlQRShpbnRlZ3JhbCktPnRwX2FzX251bWJlcjsKKyAgICBpZiAobmItPm5iX2ludCkgeworICAgICAgICBQeU9iamVjdCAqYXNfaW50ID0gbmItPm5iX2ludChpbnRlZ3JhbCk7CisgICAgICAgIGlmICghYXNfaW50IHx8IFB5TG9uZ19DaGVjayhhc19pbnQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOworICAgICAgICAgICAgcmV0dXJuIGFzX2ludDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOwotICAgICAgICBpbnRlZ3JhbCA9IFB5RXZhbF9DYWxsT2JqZWN0KGludF9mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGludF9mdW5jKTsKLSAgICAgICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgICAgICBnb3RvIG5vbl9pbnRlZ3JhbF9lcnJvcjsKLSAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYXNfaW50KTsKICAgICB9Ci0gICAgcmV0dXJuIGludGVncmFsOwotCi1ub25faW50ZWdyYWxfZXJyb3I6CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgZXJyb3JfZm9ybWF0LCBQeV9UWVBFKGludGVncmFsKS0+dHBfbmFtZSk7CiAgICAgUHlfREVDUkVGKGludGVncmFsKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsgICAgCiB9CiAKIApAQCAtMTMyNSwxNiArMTI2MywxMCBAQAogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07Ci0gICAgc3RhdGljIFB5T2JqZWN0ICp0cnVuY19uYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBjb25zdCBjaGFyICpidWZmZXI7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfbGVuOwotCi0gICAgaWYgKHRydW5jX25hbWUgPT0gTlVMTCkgewotICAgICAgICB0cnVuY19uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fdHJ1bmNfXyIpOwotICAgICAgICBpZiAodHJ1bmNfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwpAQCAtMTM1NiwzMiArMTI4OCwzMCBAQAogICAgIH0KICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSAvKiBBbiBpbnQgc3ViY2xhc3Mgd2l0aG91dCBuYl9pbnQgKi8KICAgICAgICAgcmV0dXJuIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopbyk7Ci0gICAgdHJ1bmNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIobywgdHJ1bmNfbmFtZSk7CisgICAgdHJ1bmNfZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jX2Z1bmMpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwogICAgICAgICBQeU9iamVjdCAqaW50X2luc3RhbmNlOwogICAgICAgICBQeV9ERUNSRUYodHJ1bmNfZnVuYyk7CiAgICAgICAgIC8qIF9fdHJ1bmNfXyBpcyBzcGVjaWZpZWQgdG8gcmV0dXJuIGFuIEludGVncmFsIHR5cGUsCi0gICAgICAgICAgIGJ1dCBsb25nKCkgbmVlZHMgdG8gcmV0dXJuIGEgbG9uZy4gKi8KLSAgICAgICAgaW50X2luc3RhbmNlID0gX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KAotICAgICAgICAgICAgdHJ1bmNhdGVkLAorICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGEgaW50LiAqLworICAgICAgICBpbnRfaW5zdGFuY2UgPSBjb252ZXJ0X2ludGVncmFsX3RvX2ludCh0cnVuY2F0ZWQsCiAgICAgICAgICAgICAiX190cnVuY19fIHJldHVybmVkIG5vbi1JbnRlZ3JhbCAodHlwZSAlLjIwMHMpIik7CiAgICAgICAgIHJldHVybiBpbnRfaW5zdGFuY2U7CiAgICAgfQotICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBJdCdzIG5vdCBhbiBlcnJvciBpZiAgby5fX3RydW5jX18gZG9lc24ndCBleGlzdC4gKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvKSkKICAgICAgICAgLyogbmVlZCB0byBkbyBleHRyYSBlcnJvciBjaGVja2luZyB0aGF0IFB5TG9uZ19Gcm9tU3RyaW5nKCkKLSAgICAgICAgICogZG9lc24ndCBkby4gIEluIHBhcnRpY3VsYXIgbG9uZygnOS41JykgbXVzdCByYWlzZSBhbgorICAgICAgICAgKiBkb2Vzbid0IGRvLiAgSW4gcGFydGljdWxhciBpbnQoJzkuNScpIG11c3QgcmFpc2UgYW4KICAgICAgICAgICogZXhjZXB0aW9uLCBub3QgdHJ1bmNhdGUgdGhlIGZsb2F0LgogICAgICAgICAgKi8KICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUobykpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobykpCiAgICAgICAgIC8qIFRoZSBhYm92ZSBjaGVjayBpcyBkb25lIGluIFB5TG9uZ19Gcm9tVW5pY29kZSgpLiAqLwotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKG8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QobywgMTApOwogICAgIGlmICghUHlPYmplY3RfQXNDaGFyQnVmZmVyKG8sICZidWZmZXIsICZidWZmZXJfbGVuKSkKICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoYnVmZmVyLCBidWZmZXJfbGVuKTsKIApAQCAtMTk4Niw3ICsxOTE2LDcgQEAKIGludAogUHlNYXBwaW5nX0NoZWNrKFB5T2JqZWN0ICpvKQogewotICAgIHJldHVybiAgICAgIG8gJiYgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZyAmJgorICAgIHJldHVybiBvICYmIG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmcgJiYKICAgICAgICAgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0OwogfQogCkBAIC0yMDg0LDEwICsyMDE0LDExIEBACiB7CiAgICAgUHlPYmplY3QgKmtleXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfS2V5cyhvKTsKLSAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAia2V5cyIsIE5VTEwpOworICAgIGtleXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX2tleXMsIE5VTEwpOwogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3Qoa2V5cywgIm8ua2V5cygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMDAsMTAgKzIwMzEsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG8pKQogICAgICAgICByZXR1cm4gUHlEaWN0X0l0ZW1zKG8pOwotICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiaXRlbXMiLCBOVUxMKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfaXRlbXMsIE5VTEwpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGl0ZW1zLCAiby5pdGVtcygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMTYsMTAgKzIwNDgsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqdmFsdWVzOwogICAgIFB5T2JqZWN0ICpmYXN0OworICAgIF9QeV9JREVOVElGSUVSKHZhbHVlcyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfVmFsdWVzKG8pOwotICAgIHZhbHVlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgInZhbHVlcyIsIE5VTEwpOworICAgIHZhbHVlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfdmFsdWVzLCBOVUxMKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QodmFsdWVzLCAiby52YWx1ZXMoKSBhcmUgbm90IGl0ZXJhYmxlIik7CkBAIC0yMjI1LDIyICsyMTU4LDExIEBACiAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQorc3RhdGljIFB5T2JqZWN0KgorY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBQeU9iamVjdCAqYXJnczsKIAogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKQEAgLTIyNDgsOSArMjE3MCwxMCBAQAogICAgIH0KIAogICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGlzX3NpemVfdCkKKyAgICAgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKQEAgLTIyNjUsNDQgKzIxODgsODYgQEAKIH0KIAogUHlPYmplY3QgKgorUHlPYmplY3RfQ2FsbE1ldGhvZChQeU9iamVjdCAqbywgY2hhciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKworICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKICAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIHR5cGVfZXJyb3IoImF0dHJpYnV0ZSBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBjYWxsYWJsZSIsIGZ1bmMpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0KLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7Ci0KLSAgZXhpdDoKLSAgICAvKiBhcmdzIGdldHMgY29uc3VtZWQgaW4gY2FsbF9mdW5jdGlvbl90YWlsICovCi0gICAgUHlfWERFQ1JFRihmdW5jKTsKLQorICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CisgICAgdmFfZW5kKHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmphcmdzX21rdHVwbGUodmFfbGlzdCB2YSkKQEAgLTIzNTUsNiArMjMyMCwzNSBAQAogfQogCiBQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCisgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQoreworICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIHZhX2xpc3QgdmFyZ3M7CisKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisKKyAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOworICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvdW50IHRoZSBhcmdzICovCisgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOworICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisKKyAgICByZXR1cm4gdG1wOworfQorCitQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewogICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOwpAQCAtMjM3OCwxMCArMjM3Miw4IEBACiAKIC8qIGlzaW5zdGFuY2UoKSwgaXNzdWJjbGFzcygpICovCiAKLS8qIGFic3RyYWN0X2dldF9iYXNlcygpIGhhcyBsb2dpY2FsbHkgNCByZXR1cm4gc3RhdGVzLCB3aXRoIGEgc29ydCBvZiAwdGgKLSAqIHN0YXRlIHRoYXQgd2lsbCBhbG1vc3QgbmV2ZXIgaGFwcGVuLgorLyogYWJzdHJhY3RfZ2V0X2Jhc2VzKCkgaGFzIGxvZ2ljYWxseSA0IHJldHVybiBzdGF0ZXM6CiAgKgotICogMC4gY3JlYXRpbmcgdGhlIF9fYmFzZXNfXyBzdGF0aWMgc3RyaW5nIGNvdWxkIGdldCBhIE1lbW9yeUVycm9yCiAgKiAxLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yCiAgKiAyLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIHNvbWUgb3RoZXIgZXhjZXB0aW9uCiAgKiAzLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJldHVybiBhIHR1cGxlCkBAIC0yNDA3LDE2ICsyMzk5LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWJzdHJhY3RfZ2V0X2Jhc2VzKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2Jhc2VzX18gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYmFzZXNfXyk7CiAgICAgUHlPYmplY3QgKmJhc2VzOwogCi0gICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fYmFzZXNfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2Jhc2VzX18iKTsKLSAgICAgICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0cihjbHMsIF9fYmFzZXNfXyk7CisgICAgYmFzZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19iYXNlc19fKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCiAgICAgaWYgKGJhc2VzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMjQ4NiwxOSArMjQ3MywxMyBAQAogcmVjdXJzaXZlX2lzaW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmljbHM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2NsYXNzX18gPSBOVUxMOwogICAgIGludCByZXR2YWwgPSAwOwotCi0gICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fY2xhc3NfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOwogCiAgICAgaWYgKFB5VHlwZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X1R5cGVDaGVjayhpbnN0LCAoUHlUeXBlT2JqZWN0ICopY2xzKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IFB5T2JqZWN0X0dldEF0dHIoaW5zdCwgX19jbGFzc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTksNyArMjUwMCw3IEBACiAgICAgICAgIGlmICghY2hlY2tfY2xhc3MoY2xzLAogICAgICAgICAgICAgImlzaW5zdGFuY2UoKSBhcmcgMiBtdXN0IGJlIGEgdHlwZSBvciB0dXBsZSBvZiB0eXBlcyIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpY2xzID0gUHlPYmplY3RfR2V0QXR0cihpbnN0LCBfX2NsYXNzX18pOworICAgICAgICBpY2xzID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoaWNscyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MzgsNyArMjUxOSw3IEBACiBpbnQKIFB5T2JqZWN0X0lzSW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2luc3RhbmNlY2hlY2tfXyk7CiAgICAgUHlPYmplY3QgKmNoZWNrZXI7CiAKICAgICAvKiBRdWljayB0ZXN0IGZvciBhbiBleGFjdCBtYXRjaCAqLwpAQCAtMjU2NCw3ICsyNTQ1LDcgQEAKICAgICAgICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgY2hlY2tlciA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKGNscywgIl9faW5zdGFuY2VjaGVja19fIiwgJm5hbWUpOworICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICZQeUlkX19faW5zdGFuY2VjaGVja19fKTsKICAgICBpZiAoY2hlY2tlciAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIGludCBvayA9IC0xOwpAQCAtMjYwNyw3ICsyNTg4LDcgQEAKIGludAogUHlPYmplY3RfSXNTdWJjbGFzcyhQeU9iamVjdCAqZGVyaXZlZCwgUHlPYmplY3QgKmNscykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fc3ViY2xhc3NjaGVja19fKTsKICAgICBQeU9iamVjdCAqY2hlY2tlcjsKIAogICAgIGlmIChQeVR1cGxlX0NoZWNrKGNscykpIHsKQEAgLTI2MjksNyArMjYxMCw3IEBACiAgICAgICAgIHJldHVybiByOwogICAgIH0KIAotICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICJfX3N1YmNsYXNzY2hlY2tfXyIsICZuYW1lKTsKKyAgICBjaGVja2VyID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoY2xzLCAmUHlJZF9fX3N1YmNsYXNzY2hlY2tfXyk7CiAgICAgaWYgKGNoZWNrZXIgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwogICAgICAgICBpbnQgb2sgPSAtMTsKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDdkNWRiZDAuLjlmMWNmMGEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhbGxvYyA9IHNpemUgKyAxOwotICAgICAgICBuZXctPm9iX2J5dGVzID0gUHlNZW1fTWFsbG9jKGFsbG9jKTsKKyAgICAgICAgbmV3LT5vYl9ieXRlcyA9IFB5T2JqZWN0X01hbGxvYyhhbGxvYyk7CiAgICAgICAgIGlmIChuZXctPm9iX2J5dGVzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0yMDksNyArMjA5LDcgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBzdmFsID0gUHlNZW1fUmVhbGxvYygoKFB5Qnl0ZUFycmF5T2JqZWN0ICopc2VsZiktPm9iX2J5dGVzLCBhbGxvYyk7CisgICAgc3ZhbCA9IFB5T2JqZWN0X1JlYWxsb2MoKChQeUJ5dGVBcnJheU9iamVjdCAqKXNlbGYpLT5vYl9ieXRlcywgYWxsb2MpOwogICAgIGlmIChzdmFsID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzk1LDcgKzc5NSw3IEBACiAgICAgICAgIHNpemUgPSB2aWV3LmxlbjsKICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBzaXplKSA8IDApIGdvdG8gZmFpbDsKICAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cyhzZWxmLT5vYl9ieXRlcywgJnZpZXcsIHNpemUsICdDJykgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIGZhaWw6CkBAIC04NTYsODcgKzg1Niw4MiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXByKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgY29uc3QgY2hhciAqcXVvdGVfcHJlZml4ID0gImJ5dGVhcnJheShiIjsKICAgICBjb25zdCBjaGFyICpxdW90ZV9wb3N0Zml4ID0gIikiOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gUHlfU0laRShzZWxmKTsKLSAgICAvKiAxNCA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKi8KKyAgICAvKiAxNSA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKyAxICovCiAgICAgc2l6ZV90IG5ld3NpemU7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAtIDE0KSAvIDQpIHsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgY2hhciBjOworICAgIHJlZ2lzdGVyIGNoYXIgKnA7CisgICAgaW50IHF1b3RlOworICAgIGNoYXIgKnRlc3QsICpzdGFydDsKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC0gMTUpIC8gNCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJieXRlYXJyYXkgb2JqZWN0IGlzIHRvbyBsYXJnZSB0byBtYWtlIHJlcHIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ld3NpemUgPSAxNCArIDQgKiBsZW5ndGg7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuZXdzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKSB7CisKKyAgICBuZXdzaXplID0gMTUgKyBsZW5ndGggKiA0OworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYyhuZXdzaXplKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgYzsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgaW50IHF1b3RlOwogCi0gICAgICAgIC8qIEZpZ3VyZSBvdXQgd2hpY2ggcXVvdGUgdG8gdXNlOyBzaW5nbGUgaXMgcHJlZmVycmVkICovCi0gICAgICAgIHF1b3RlID0gJ1wnJzsKLSAgICAgICAgewotICAgICAgICAgICAgY2hhciAqdGVzdCwgKnN0YXJ0OwotICAgICAgICAgICAgc3RhcnQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgICAgICAgICBmb3IgKHRlc3QgPSBzdGFydDsgdGVzdCA8IHN0YXJ0K2xlbmd0aDsgKyt0ZXN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCp0ZXN0ID09ICciJykgewotICAgICAgICAgICAgICAgICAgICBxdW90ZSA9ICdcJyc7IC8qIGJhY2sgdG8gc2luZ2xlICovCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZGVjaWRlZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoKnRlc3QgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSAnIic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZGVjaWRlZDoKLSAgICAgICAgICAgIDsKKyAgICAvKiBGaWd1cmUgb3V0IHdoaWNoIHF1b3RlIHRvIHVzZTsgc2luZ2xlIGlzIHByZWZlcnJlZCAqLworICAgIHF1b3RlID0gJ1wnJzsKKyAgICBzdGFydCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBmb3IgKHRlc3QgPSBzdGFydDsgdGVzdCA8IHN0YXJ0K2xlbmd0aDsgKyt0ZXN0KSB7CisgICAgICAgIGlmICgqdGVzdCA9PSAnIicpIHsKKyAgICAgICAgICAgIHF1b3RlID0gJ1wnJzsgLyogYmFjayB0byBzaW5nbGUgKi8KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICB3aGlsZSAoKnF1b3RlX3ByZWZpeCkKLSAgICAgICAgICAgICpwKysgPSAqcXVvdGVfcHJlZml4Kys7Ci0gICAgICAgICpwKysgPSBxdW90ZTsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQotICAgICAgICAgICAgICAgYW5kIGEgY2xvc2luZyBxdW90ZS4gKi8KLSAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gNSk7Ci0gICAgICAgICAgICBjID0gc2VsZi0+b2JfYnl0ZXNbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJ1xcJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9IGM7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcbicpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAnbic7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdccicpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAncic7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09IDApCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAneCcsICpwKysgPSAnMCcsICpwKysgPSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbYyAmIDB4Zl07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KG5ld3NpemUgLSAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA+PSAxKTsKLSAgICAgICAgKnArKyA9IHF1b3RlOwotICAgICAgICB3aGlsZSAoKnF1b3RlX3Bvc3RmaXgpIHsKLSAgICAgICAgICAgKnArKyA9ICpxdW90ZV9wb3N0Zml4Kys7Ci0gICAgICAgIH0KLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZWxzZSBpZiAoKnRlc3QgPT0gJ1wnJykKKyAgICAgICAgICAgIHF1b3RlID0gJyInOwogICAgIH0KKworICAgIHAgPSBidWZmZXI7CisgICAgd2hpbGUgKCpxdW90ZV9wcmVmaXgpCisgICAgICAgICpwKysgPSAqcXVvdGVfcHJlZml4Kys7CisgICAgKnArKyA9IHF1b3RlOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQorICAgICAgICAgICBhbmQgYSBjbG9zaW5nIHF1b3RlLiAqLworICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gYnVmZmVyKSA+PSA1KTsKKyAgICAgICAgYyA9IHNlbGYtPm9iX2J5dGVzW2ldOworICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJ1xcJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xuJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOworICAgICAgICBlbHNlIGlmIChjID09ICdccicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICdyJzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAwKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAneCcsICpwKysgPSAnMCcsICpwKysgPSAnMCc7CisgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOworICAgIH0KKyAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gYnVmZmVyKSA+PSAxKTsKKyAgICAqcCsrID0gcXVvdGU7CisgICAgd2hpbGUgKCpxdW90ZV9wb3N0Zml4KSB7CisgICAgICAgKnArKyA9ICpxdW90ZV9wb3N0Zml4Kys7CisgICAgfQorCisgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShidWZmZXIsIHAgLSBidWZmZXIsIE5VTEwpOworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKyAgICByZXR1cm4gdjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk3MCwyMyArOTY1LDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBzZWxmX3NpemUgPSBfZ2V0YnVmZmVyKHNlbGYsICZzZWxmX2J5dGVzKTsKICAgICBpZiAoc2VsZl9zaXplIDwgMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBvdGhlcl9zaXplID0gX2dldGJ1ZmZlcihvdGhlciwgJm90aGVyX2J5dGVzKTsKICAgICBpZiAob3RoZXJfc2l6ZSA8IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZl9ieXRlcyk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChzZWxmX3NpemUgIT0gb3RoZXJfc2l6ZSAmJiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpKSB7CkBAIC0xMDM0LDcgKzEwMjYsNyBAQAogICAgICAgICBQeUVycl9QcmludCgpOwogICAgIH0KICAgICBpZiAoc2VsZi0+b2JfYnl0ZXMgIT0gMCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm9iX2J5dGVzKTsKKyAgICAgICAgUHlPYmplY3RfRnJlZShzZWxmLT5vYl9ieXRlcyk7CiAgICAgfQogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CkBAIC0xMDQzLDYgKzEwMzUsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIE1ldGhvZHMgKi8KIAorI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKICNkZWZpbmUgU1RSSU5HTElCX0NIQVIgY2hhcgogI2RlZmluZSBTVFJJTkdMSUJfTEVOIFB5Qnl0ZUFycmF5X0dFVF9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgUHlCeXRlQXJyYXlfQVNfU1RSSU5HCkBAIC0xMDgzLDI0ICsxMDc3LDQxIEBACiBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiAtMjsKLSAgICBpZiAoX2dldGJ1ZmZlcihzdWJvYmosICZzdWJidWYpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0yOworCisgICAgaWYgKHN1Ym9iaikgeworICAgICAgICBpZiAoX2dldGJ1ZmZlcihzdWJvYmosICZzdWJidWYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMjsKKworICAgICAgICBzdWIgPSBzdWJidWYuYnVmOworICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKICAgICBpZiAoZGlyID4gMCkKICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCiAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViYnVmLmJ1Ziwgc3ViYnVmLmxlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1YmJ1Zi5idWYsIHN1YmJ1Zi5sZW4sIHN0YXJ0LCBlbmQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTExMzMsMjYgKzExNDQsNjYgQEAKIGJ5dGVhcnJheV9jb3VudChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOworICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKwogICAgIFB5X2J1ZmZlciB2c3ViOwogICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmc3RhcnQsICZlbmQpKQorICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQogCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwogCiAgICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCB2c3ViLmJ1ZiwgdnN1Yi5sZW4sIFBZX1NTSVpFX1RfTUFYKQorICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQogICAgICAgICApOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCisgICAgaWYgKHN1Yl9vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCiAgICAgcmV0dXJuIGNvdW50X29iajsKIH0KIAorUHlEb2NfU1RSVkFSKGNsZWFyX19kb2NfXywKKyJCLmNsZWFyKCkgLT4gTm9uZVxuXAorXG5cCitSZW1vdmUgYWxsIGl0ZW1zIGZyb20gQi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihjb3B5X19kb2NfXywKKyJCLmNvcHkoKSAtPiBieXRlYXJyYXlcblwKK1xuXAorUmV0dXJuIGEgY29weSBvZiBCLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2NvcHkoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORygoUHlPYmplY3QgKilzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOworfQogCiBQeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAogIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCkBAIC0xOTk0LDcgKzIwNDUsNyBAQAogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAorIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCiBJZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXApAQCAtMjAwMiwxNSArMjA1MywxNyBAQAogSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMjA4Niw3ICsyMTM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwWywgbWF4c3BsaXRdKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKKyJCLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAogXG5cCiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlcixcblwKIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQiBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuXG5cCkBAIC0yMDk1LDE1ICsyMTQ4LDE3IEBACiBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2c3ViOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246cnNwbGl0IiwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMjQ1NCw3ICsyNTA5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGFyZ3NpemU7CisgICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBhcmdzaXplOwogICAgIHZvaWQgKm15cHRyLCAqYXJncHRyOwogICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2YXJnOwpAQCAtMjQ3MiwxMSArMjUyNywxMCBAQAogICAgIH0KICAgICBteXB0ciA9IHNlbGYtPm9iX2J5dGVzOwogICAgIG15c2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgbGVmdCA9IDA7CiAgICAgcmlnaHQgPSByc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CiAgICAgaWYgKGFyZyAhPSBQeV9Ob25lKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+b2JfYnl0ZXMgKyBsZWZ0LCByaWdodCAtIGxlZnQpOworICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5vYl9ieXRlcywgcmlnaHQpOwogfQogCiBQeURvY19TVFJWQVIoZGVjb2RlX2RvYywKQEAgLTI1OTgsMTEgKzI2NTIsMTMgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKQEAgLTI2MTksNyArMjY3NSw3IEBACiBFeGFtcGxlOiBieXRlYXJyYXkuZnJvbWhleCgnQjkgMDFFRicpIC0+IGJ5dGVhcnJheShiJ1xceGI5XFx4MDFcXHhlZicpLiIpOwogCiBzdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VOSUNPREUgYykKK2hleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewogICAgIGlmIChjID49IDEyOCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjYzOSwxNSArMjY5NSwyMCBAQAogewogICAgIFB5T2JqZWN0ICpuZXdieXRlcywgKmhleG9iajsKICAgICBjaGFyICpidWY7Ci0gICAgUHlfVU5JQ09ERSAqaGV4OwogICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKICAgICBpbnQgdG9wLCBib3Q7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpmcm9taGV4IiwgJmhleG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soaGV4b2JqKSk7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGhleG9iaik7Ci0gICAgaGV4ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaGV4b2JqKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOworICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisKICAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwogICAgIG5ld2J5dGVzID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwogICAgIGlmICghbmV3Ynl0ZXMpCkBAIC0yNjU1LDEyICsyNzE2LDEyIEBACiAgICAgYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG5ld2J5dGVzKTsKICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CiAgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChoZXhbaV0gPT0gJyAnKQorICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQogICAgICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChoZXhbaV0pOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpKzFdKTsKKyAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7CiAgICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCkBAIC0yNjc4LDI2ICsyNzM5LDU5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZWR1Y2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitfY29tbW9uX3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQogewotICAgIFB5T2JqZWN0ICpsYXRpbjEsICpkaWN0OwotICAgIGlmIChzZWxmLT5vYl9ieXRlcykKLSAgICAgICAgbGF0aW4xID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShzZWxmLT5vYl9ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilzZWxmLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBkaWN0ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwogICAgIH0KIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTyhOcylOKSIsIFB5X1RZUEUoc2VsZiksIGxhdGluMSwgImxhdGluLTEiLCBkaWN0KTsKKyAgICBpZiAocHJvdG8gPCAzKSB7CisgICAgICAgIC8qIHVzZSBzdHIgYmFzZWQgcmVkdWN0aW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAyLnggKi8KKyAgICAgICAgUHlPYmplY3QgKmxhdGluMTsKKyAgICAgICAgaWYgKHNlbGYtPm9iX2J5dGVzKQorICAgICAgICAgICAgbGF0aW4xID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShzZWxmLT5vYl9ieXRlcywgUHlfU0laRShzZWxmKSwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKE5zKU4pIiwgUHlfVFlQRShzZWxmKSwgbGF0aW4xLCAibGF0aW4tMSIsIGRpY3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogdXNlIG1vcmUgZWZmaWNpZW50IGJ5dGUgYmFzZWQgcmVkdWN0aW9uICovCisgICAgICAgIGlmIChzZWxmLT5vYl9ieXRlcykgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKHkjKU4pIiwgUHlfVFlQRShzZWxmKSwgc2VsZi0+b2JfYnl0ZXMsIFB5X1NJWkUoc2VsZiksIGRpY3QpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKClOKSIsIFB5X1RZUEUoc2VsZiksIGRpY3QpOworICAgICAgICB9CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCAyKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9leF9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZV9leChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHByb3RvID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsICZwcm90bykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIHByb3RvKTsKIH0KIAogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCkBAIC0yNzQxLDExICsyODM1LDE0IEBACiBieXRlYXJyYXlfbWV0aG9kc1tdID0gewogICAgIHsiX19hbGxvY19fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hbGxvYywgTUVUSF9OT0FSR1MsIGFsbG9jX2RvY30sCiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLCByZWR1Y2VfZXhfZG9jfSwKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NpemVvZiwgTUVUSF9OT0FSR1MsIHNpemVvZl9kb2N9LAogICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hcHBlbmQsIE1FVEhfTywgYXBwZW5kX19kb2NfX30sCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NsZWFyLCBNRVRIX05PQVJHUywgY2xlYXJfX2RvY19ffSwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvcHksIE1FVEhfTk9BUkdTLCBjb3B5X19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKICAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkZWNvZGVfZG9jfSwKICAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LApAQCAtMjc4NiwxMSArMjg4MywxMSBAQAogICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JwYXJ0aXRpb24sIE1FVEhfTywgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLAotICAgICBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdGxpbmVzX19kb2NfX30sCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCiAgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKQEAgLTI5MTIsNyArMzAwOSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2FycmF5aXRlcl9sZW5ndGhfaGludChieXRlc2l0ZXJvYmplY3QgKml0KQorYnl0ZWFycmF5aXRlcl9sZW5ndGhfaGludChieXRlc2l0ZXJvYmplY3QgKml0KQogewogICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICBpZiAoaXQtPml0X3NlcSkKQEAgLTI5MjMsOSArMzAyMCw0MSBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlpdGVyX3JlZHVjZShieXRlc2l0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheWl0ZXJfc2V0c3RhdGUoYnl0ZXNpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgYnl0ZWFycmF5aXRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pYnl0ZXNhcnJheWl0ZXJfbGVuZ3RoX2hpbnQsIE1FVEhfTk9BUkdTLAorICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfbGVuZ3RoX2hpbnQsIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggNzIzM2NlYS4uZWYzYzJmNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTI0OCwxMiArMjQ4LDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeV9NRU1DUFkocmVzdWx0LCBjcHRyLCBsZW4pOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGludCBjID0gUHlfQ0hBUk1BU0socmVzdWx0W2ldKTsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoYykpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSBQeV9UT0xPV0VSKGMpOworICAgICAgICByZXN1bHRbaV0gPSBQeV9UT0xPV0VSKCh1bnNpZ25lZCBjaGFyKSBjcHRyW2ldKTsKICAgICB9CiB9CiAKQEAgLTI2OCwxMiArMjY0LDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeV9NRU1DUFkocmVzdWx0LCBjcHRyLCBsZW4pOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGludCBjID0gUHlfQ0hBUk1BU0socmVzdWx0W2ldKTsKLSAgICAgICAgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSBQeV9UT1VQUEVSKGMpOworICAgICAgICByZXN1bHRbaV0gPSBQeV9UT1VQUEVSKCh1bnNpZ25lZCBjaGFyKSBjcHRyW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNvYmplY3QuYyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwppbmRleCBlZjNhNWExLi41MmRiMTVkIDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCkBAIC00MSwxMCArNDEsNiBAQAogI2RlZmluZSBQeUJ5dGVzT2JqZWN0X1NJWkUgKG9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSkKIAogLyoKLSAgIEZvciBib3RoIFB5Qnl0ZXNfRnJvbVN0cmluZygpIGFuZCBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCksIHRoZQotICAgcGFyYW1ldGVyIGBzaXplJyBkZW5vdGVzIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGFsbG9jYXRlLCBub3QgY291bnRpbmcgYW55Ci0gICBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLQogICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpLCB0aGUgcGFyYW1ldGVyIGBzdHInIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZAogICAgc3RyaW5nIGNvbnRhaW5pbmcgZXhhY3RseSBgc2l6ZScgYnl0ZXMuCiAKQEAgLTYxLDggKzU3LDggQEAKIAogICAgVGhlIFB5T2JqZWN0IG1lbWJlciBgb3AtPm9iX3NpemUnLCB3aGljaCBkZW5vdGVzIHRoZSBudW1iZXIgb2YgImV4dHJhCiAgICBpdGVtcyIgaW4gYSB2YXJpYWJsZS1zaXplIG9iamVjdCwgd2lsbCBjb250YWluIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgIGFsbG9jYXRlZCBmb3Igc3RyaW5nIGRhdGEsIG5vdCBjb3VudGluZyB0aGUgbnVsbCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuICBJdAotICAgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBlcXVhbCB0byB0aGUgYHNpemUnIHBhcmFtZXRlciAoZm9yCisgICBhbGxvY2F0ZWQgZm9yIHN0cmluZyBkYXRhLCBub3QgY291bnRpbmcgdGhlIG51bGwgdGVybWluYXRpbmcgY2hhcmFjdGVyLgorICAgSXQgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBgc2l6ZScgcGFyYW1ldGVyIChmb3IKICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSkgb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIHRoZSBgc3RyJwogICAgcGFyYW1ldGVyIChmb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCkpLgogKi8KQEAgLTU2OCw3NiArNTY0LDcwIEBACiBQeU9iamVjdCAqCiBQeUJ5dGVzX1JlcHIoUHlPYmplY3QgKm9iaiwgaW50IHNtYXJ0cXVvdGVzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgcmVnaXN0ZXIgUHlCeXRlc09iamVjdCogb3AgPSAoUHlCeXRlc09iamVjdCopIG9iajsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IFB5X1NJWkUob3ApOwotICAgIHNpemVfdCBuZXdzaXplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoID0gUHlfU0laRShvcCk7CisgICAgc2l6ZV90IG5ld3NpemUsIHNxdW90ZXMsIGRxdW90ZXM7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAtIDMpIC8gNCkgeworICAgIHVuc2lnbmVkIGNoYXIgcXVvdGUsICpzLCAqcDsKKworICAgIC8qIENvbXB1dGUgc2l6ZSBvZiBvdXRwdXQgc3RyaW5nICovCisgICAgc3F1b3RlcyA9IGRxdW90ZXMgPSAwOworICAgIG5ld3NpemUgPSAzOyAvKiBiJycgKi8KKyAgICBzID0gKHVuc2lnbmVkIGNoYXIqKW9wLT5vYl9zdmFsOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBzd2l0Y2goc1tpXSkgeworICAgICAgICBjYXNlICdcJyc6IHNxdW90ZXMrKzsgbmV3c2l6ZSsrOyBicmVhazsKKyAgICAgICAgY2FzZSAnIic6ICBkcXVvdGVzKys7IG5ld3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXHQnOiBjYXNlICdcbic6IGNhc2UgJ1xyJzoKKyAgICAgICAgICAgIG5ld3NpemUgKz0gMjsgYnJlYWs7IC8qIFxDICovCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoc1tpXSA8ICcgJyB8fCBzW2ldID49IDB4N2YpCisgICAgICAgICAgICAgICAgbmV3c2l6ZSArPSA0OyAvKiBceEhIICovCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3c2l6ZSsrOworICAgICAgICB9CisgICAgfQorICAgIHF1b3RlID0gJ1wnJzsKKyAgICBpZiAoc21hcnRxdW90ZXMgJiYgc3F1b3RlcyAmJiAhZHF1b3RlcykKKyAgICAgICAgcXVvdGUgPSAnIic7CisgICAgaWYgKHNxdW90ZXMgJiYgcXVvdGUgPT0gJ1wnJykKKyAgICAgICAgbmV3c2l6ZSArPSBzcXVvdGVzOworCisgICAgaWYgKG5ld3NpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlVbmljb2RlT2JqZWN0KSAtIDEpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgImJ5dGVzIG9iamVjdCBpcyB0b28gbGFyZ2UgdG8gbWFrZSByZXByIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdzaXplID0gMyArIDQgKiBsZW5ndGg7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuZXdzaXplKTsKKworICAgIHYgPSBQeVVuaWNvZGVfTmV3KG5ld3NpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSBjOwotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7Ci0gICAgICAgIGludCBxdW90ZTsKKyAgICBwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodik7CiAKLSAgICAgICAgLyogRmlndXJlIG91dCB3aGljaCBxdW90ZSB0byB1c2U7IHNpbmdsZSBpcyBwcmVmZXJyZWQgKi8KLSAgICAgICAgcXVvdGUgPSAnXCcnOwotICAgICAgICBpZiAoc21hcnRxdW90ZXMpIHsKLSAgICAgICAgICAgIGNoYXIgKnRlc3QsICpzdGFydDsKLSAgICAgICAgICAgIHN0YXJ0ID0gUHlCeXRlc19BU19TVFJJTkcob3ApOwotICAgICAgICAgICAgZm9yICh0ZXN0ID0gc3RhcnQ7IHRlc3QgPCBzdGFydCtsZW5ndGg7ICsrdGVzdCkgewotICAgICAgICAgICAgICAgIGlmICgqdGVzdCA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSAnXCcnOyAvKiBiYWNrIHRvIHNpbmdsZSAqLwotICAgICAgICAgICAgICAgICAgICBnb3RvIGRlY2lkZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCp0ZXN0ID09ICdcJycpCi0gICAgICAgICAgICAgICAgICAgIHF1b3RlID0gJyInOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVjaWRlZDoKLSAgICAgICAgICAgIDsKKyAgICAqcCsrID0gJ2InLCAqcCsrID0gcXVvdGU7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IG9wLT5vYl9zdmFsW2ldOworICAgICAgICBpZiAoYyA9PSBxdW90ZSB8fCBjID09ICdcXCcpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9IGM7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3QnOworICAgICAgICBlbHNlIGlmIChjID09ICdcbicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICduJzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHInKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAncic7CisgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOwogICAgICAgICB9Ci0KLSAgICAgICAgKnArKyA9ICdiJywgKnArKyA9IHF1b3RlOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQotICAgICAgICAgICAgICAgYW5kIGEgY2xvc2luZyBxdW90ZS4gKi8KLSAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gNSk7Ci0gICAgICAgICAgICBjID0gb3AtPm9iX3N2YWxbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSB8fCBjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSBjOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3QnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXG4nKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHInKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3InOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA8ICcgJyB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2MgJiAweGZdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICB9Ci0gICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gMSk7Ci0gICAgICAgICpwKysgPSBxdW90ZTsKLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgfQorICAgICpwKysgPSBxdW90ZTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICByZXR1cm4gdjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg3MSwzNSArODYxLDExIEBACiBzdGF0aWMgUHlfaGFzaF90CiBieXRlc19oYXNoKFB5Qnl0ZXNPYmplY3QgKmEpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBsZW47Ci0gICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqcDsKLSAgICByZWdpc3RlciBQeV91aGFzaF90IHg7ICAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvci4gKi8KLQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKLSNlbmRpZgotICAgIGlmIChhLT5vYl9zaGFzaCAhPSAtMSkKLSAgICAgICAgcmV0dXJuIGEtPm9iX3NoYXNoOwotICAgIGxlbiA9IFB5X1NJWkUoYSk7Ci0gICAgLyoKLSAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZwotICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKLSAgICAqLwotICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICBhLT5vYl9zaGFzaCA9IDA7Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChhLT5vYl9zaGFzaCA9PSAtMSkgeworICAgICAgICAvKiBDYW4ndCBmYWlsICovCisgICAgICAgIGEtPm9iX3NoYXNoID0gX1B5X0hhc2hCeXRlcygodW5zaWduZWQgY2hhciAqKSBhLT5vYl9zdmFsLCBQeV9TSVpFKGEpKTsKICAgICB9Ci0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIGEtPm9iX3N2YWw7Ci0gICAgeCA9IF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKLSAgICB4IF49ICpwIDw8IDc7Ci0gICAgd2hpbGUgKC0tbGVuID49IDApCi0gICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSKngpIF4gKnArKzsKLSAgICB4IF49IFB5X1NJWkUoYSk7Ci0gICAgeCBePSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7Ci0gICAgaWYgKHggPT0gLTEpCi0gICAgICAgIHggPSAtMjsKLSAgICBhLT5vYl9zaGFzaCA9IHg7Ci0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIGEtPm9iX3NoYXNoOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0xMDA3LDcgKzk3Myw3IEBACiAjZGVmaW5lIFNUUklQTkFNRShpKSAoc3RyaXBmb3JtYXRbaV0rMykKIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKLSJCLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCisiQi5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCiBJZiBzZXAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2VcblwKQEAgLTEwMTUsMTUgKzk4MSwxNyBAQAogSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9idWZmZXIgdnN1YjsKICAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMTA5NSw3ICsxMDYzLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2YgYnl0ZXNcblwKKyJCLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIsXG5cCiBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LlxuXApAQCAtMTEwNSwxNSArMTA3MywxNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246cnNwbGl0IiwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMTI1NCwzMSArMTIyNCw0MiBAQAogYnl0ZXNfZmluZF9pbnRlcm5hbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9idWZmZXIgc3ViYnVmOwogICAgIGNvbnN0IGNoYXIgKnN1YjsKICAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CiAgICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7CisgICAgUHlfc3NpemVfdCByZXM7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQorICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIC0yOwogCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJvYmopOwotICAgICAgICBzdWJfbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJvYmopOworICAgIGlmIChzdWJvYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3Vib2JqLCAmc3ViYnVmKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTI7CisKKyAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcihzdWJvYmosICZzdWIsICZzdWJfbGVuKSkKLSAgICAgICAgLyogWFhYIC0gdGhlICJleHBlY3RlZCBhIGNoYXJhY3RlciBidWZmZXIgb2JqZWN0IiBpcyBwcmV0dHkKLSAgICAgICAgICAgY29uZnVzaW5nIGZvciBhIG5vbi1leHBlcnQuICByZW1hcCB0byBzb21ldGhpbmcgZWxzZSA/ICovCi0gICAgICAgIHJldHVybiAtMjsKKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KIAogICAgIGlmIChkaXIgPiAwKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCiAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCiAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKworICAgIHJldHVybiByZXM7CiB9CiAKIApAQCAtMTUwNCwyMyArMTQ4NSwzOCBAQAogICAgIFB5T2JqZWN0ICpzdWJfb2JqOwogICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwogICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBjaGFyIGJ5dGU7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBQeV9idWZmZXIgdnN1YjsKKyAgICBQeU9iamVjdCAqY291bnRfb2JqOworCisgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlCeXRlc19DaGVjayhzdWJfb2JqKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJfb2JqKTsKLSAgICAgICAgc3ViX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3ViX29iaik7CisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcihzdWJfb2JqLCAmc3ViLCAmc3ViX2xlbikpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQogCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlc19HRVRfU0laRShzZWxmKSk7CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KAorICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKICAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKICAgICAgICAgKTsKKworICAgIGlmIChzdWJfb2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKworICAgIHJldHVybiBjb3VudF9vYmo7CiB9CiAKIApAQCAtMjMyOSwxMSArMjMyNSwxMyBAQAogaXMgZ2l2ZW4gYW5kIHRydWUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLWJ5dGVzX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKQEAgLTIzNTEsNyArMjM0OSw3IEBACiBFeGFtcGxlOiBieXRlcy5mcm9taGV4KCdCOSAwMUVGJykgLT4gYidcXHhiOVxceDAxXFx4ZWYnLiIpOwogCiBzdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VOSUNPREUgYykKK2hleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewogICAgIGlmIChjID49IDEyOCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjM3MSwxNSArMjM2OSwyMCBAQAogewogICAgIFB5T2JqZWN0ICpuZXdzdHJpbmcsICpoZXhvYmo7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X1VOSUNPREUgKmhleDsKICAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7CiAgICAgaW50IHRvcCwgYm90OworICAgIHZvaWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6ZnJvbWhleCIsICZoZXhvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGhleG9iaikpOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShoZXhvYmopOwotICAgIGhleCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGhleG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShoZXhvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaGV4b2JqKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaGV4b2JqKTsKKyAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChoZXhvYmopOworCiAgICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KICAgICBuZXdzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKICAgICBpZiAoIW5ld3N0cmluZykKQEAgLTIzODcsMTIgKzIzOTAsMTIgQEAKICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHJpbmcpOwogICAgIGZvciAoaSA9IGogPSAwOyBpIDwgaGV4bGVuOyBpICs9IDIpIHsKICAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKGhleFtpXSA9PSAnICcpCisgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA9PSAnICcpCiAgICAgICAgICAgICBpKys7CiAgICAgICAgIGlmIChpID49IGhleGxlbikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpXSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoaGV4W2krMV0pOworICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKKyAgICAgICAgYm90ID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpKTsKICAgICAgICAgaWYgKHRvcCA9PSAtMSB8fCBib3QgPT0gLTEpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKQEAgLTI0NzIsMTAgKzI0NzUsMTAgQEAKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAogICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19ycGFydGl0aW9uLCBNRVRIX08sCiAgICAgIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCByc3BsaXRfX2RvY19ffSwKICAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19yc3RyaXAsIE1FVEhfVkFSQVJHUywgcnN0cmlwX19kb2NfX30sCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MsCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgc3BsaXRsaW5lc19fZG9jX199LAogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MsCiAgICAgIHN0YXJ0c3dpdGhfX2RvY19ffSwKQEAgLTI1MDIsOCArMjUwNSwxMCBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNvdXJjZSIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKKyAgICBfUHlfSURFTlRJRklFUihfX2J5dGVzX18pOwogCiAgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZXNfVHlwZSkKICAgICAgICAgcmV0dXJuIHN0cl9zdWJ0eXBlX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKQEAgLTI1MzMsNiArMjUzOCwyOCBAQAogICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhuZXcpKTsKICAgICAgICAgcmV0dXJuIG5ldzsKICAgICB9CisKKyAgICAvKiBXZSdkIGxpa2UgdG8gY2FsbCBQeU9iamVjdF9CeXRlcyBoZXJlLCBidXQgd2UgbmVlZCB0byBjaGVjayBmb3IgYW4KKyAgICAgICBpbnRlZ2VyIGFyZ3VtZW50IGJlZm9yZSBkZWZlcnJpbmcgdG8gUHlCeXRlc19Gcm9tT2JqZWN0LCBzb21ldGhpbmcKKyAgICAgICBQeU9iamVjdF9CeXRlcyBkb2Vzbid0IGRvLiAqLworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCh4LCAmUHlJZF9fX2J5dGVzX18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgbmV3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBpZiAobmV3ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG5ldykpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnl0ZXNfXyByZXR1cm5lZCBub24tYnl0ZXMgKHR5cGUgJS4yMDBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXcpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldzsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBJcyBpdCBhbiBpbnRlZ2VyPyAqLwogICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CiAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMjU0NiwxMiArMjU3MywxMCBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChuZXcgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzaXplID4gMCkgeworICAgICAgICBpZiAoc2l6ZSA+IDApCiAgICAgICAgICAgICBtZW1zZXQoKChQeUJ5dGVzT2JqZWN0KiluZXcpLT5vYl9zdmFsLCAwLCBzaXplKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3OwogICAgIH0KIApAQCAtMjU2MSw3ICsyNTg2LDggQEAKICAgICAgICAgICAgICJlbmNvZGluZyBvciBlcnJvcnMgd2l0aG91dCBhIHN0cmluZyBhcmd1bWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0J5dGVzKHgpOworCisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbU9iamVjdCh4KTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMjU3NCw2ICsyNjAwLDEyIEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7CisgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCiAgICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLwogICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkgewogICAgICAgICBQeV9idWZmZXIgdmlldzsKQEAgLTI1ODIsNyArMjYxNCw2IEBACiAgICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOwogICAgICAgICBpZiAoIW5ldykKICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgLyogWFhYKGJyZXR0LmNhbm5vbik6IEJldHRlciB3YXkgdG8gZ2V0IHRvIGludGVybmFsIGJ1ZmZlcj8gKi8KICAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCiAgICAgICAgICAgICBnb3RvIGZhaWw7CkBAIC0yODU3LDE0OSArMjg4OCw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIF9QeUJ5dGVzX0Zvcm1hdExvbmcgZW11bGF0ZXMgdGhlIGZvcm1hdCBjb2RlcyBkLCB1LCBvLCB4IGFuZCBYLCBhbmQKLSAqIHRoZSBGX0FMVCBmbGFnLCBmb3IgUHl0aG9uJ3MgbG9uZyAodW5ib3VuZGVkKSBpbnRzLiAgSXQncyBub3QgdXNlZCBmb3IKLSAqIFB5dGhvbidzIHJlZ3VsYXIgaW50cy4KLSAqIFJldHVybiB2YWx1ZTogIGEgbmV3IFB5Qnl0ZXMqLCBvciBOVUxMIGlmIGVycm9yLgotICogIC4gICpwYnVmIGlzIHNldCB0byBwb2ludCBpbnRvIGl0LAotICogICAgICpwbGVuIHNldCB0byB0aGUgIyBvZiBjaGFycyBmb2xsb3dpbmcgdGhhdC4KLSAqICAgICBDYWxsZXIgbXVzdCBkZWNyZWYgaXQgd2hlbiBkb25lIHVzaW5nIHBidWYuCi0gKiAgICAgVGhlIHN0cmluZyBzdGFydGluZyBhdCAqcGJ1ZiBpcyBvZiB0aGUgZm9ybQotICogICAgICAgICAiLSI/ICgiMHgiIHwgIjBYIik/IGRpZ2l0KwotICogICAgICIweCIvIjBYIiBhcmUgcHJlc2VudCBvbmx5IGZvciB4IGFuZCBYIGNvbnZlcnNpb25zLCB3aXRoIEZfQUxUCi0gKiAgICAgICAgIHNldCBpbiBmbGFncy4gIFRoZSBjYXNlIG9mIGhleCBkaWdpdHMgd2lsbCBiZSBjb3JyZWN0LAotICogICAgIFRoZXJlIHdpbGwgYmUgYXQgbGVhc3QgcHJlYyBkaWdpdHMsIHplcm8tZmlsbGVkIG9uIHRoZSBsZWZ0IGlmCi0gKiAgICAgICAgIG5lY2Vzc2FyeSB0byBnZXQgdGhhdCBtYW55LgotICogdmFsICAgICAgICAgIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQKLSAqIGZsYWdzICAgICAgICBiaXRtYXNrIG9mIGZvcm1hdCBmbGFnczsgb25seSBGX0FMVCBpcyBsb29rZWQgYXQKLSAqIHByZWMgICAgICAgICBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHM7IDAtZmlsbCBvbiBsZWZ0IGlmIG5lZWRlZAotICogdHlwZSAgICAgICAgIGEgY2hhcmFjdGVyIGluIFtkdW94WF07IHUgYWN0cyB0aGUgc2FtZSBhcyBkCi0gKgotICogQ0FVVElPTjogIG8sIHggYW5kIFggY29udmVyc2lvbnMgb24gcmVndWxhciBpbnRzIGNhbiBuZXZlcgotICogcHJvZHVjZSBhICctJyBzaWduLCBidXQgY2FuIGZvciBQeXRob24ncyB1bmJvdW5kZWQgaW50cy4KLSAqLwotUHlPYmplY3QqCi1fUHlCeXRlc19Gb3JtYXRMb25nKFB5T2JqZWN0ICp2YWwsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnBidWYsIGludCAqcGxlbikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIGludCBzaWduOyAgICAgICAgICAgLyogMSBpZiAnLScsIGVsc2UgMCAqLwotICAgIGludCBsZW47ICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgKi8KLSAgICBQeV9zc2l6ZV90IGxsZW47Ci0gICAgaW50IG51bWRpZ2l0czsgICAgICAvKiBsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzICovCi0gICAgaW50IG51bW5vbmRpZ2l0cyA9IDA7Ci0KLSAgICAvKiBBdm9pZCBleGNlZWRpbmcgU1NJWkVfVF9NQVggKi8KLSAgICBpZiAocHJlYyA+IElOVF9NQVgtMykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjaXNpb24gdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgJ2QnOgotICAgIGNhc2UgJ3UnOgotICAgICAgICAvKiBTcGVjaWFsLWNhc2UgYm9vbGVhbjogd2Ugd2FudCAwLzEgKi8KLSAgICAgICAgaWYgKFB5Qm9vbF9DaGVjayh2YWwpKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9UWVBFKHZhbCktPnRwX3N0cih2YWwpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICdvJzoKLSAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKLSAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgOCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ3gnOgotICAgIGNhc2UgJ1gnOgotICAgICAgICBudW1ub25kaWdpdHMgPSAyOwotICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCAxNik7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGFzc2VydCghIid0eXBlJyBub3QgaW4gW2R1b3hYXSIpOwotICAgIH0KLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBidWYgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHJlc3VsdCk7Ci0gICAgaWYgKCFidWYpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIC8qIFRvIG1vZGlmeSB0aGUgc3RyaW5nIGluLXBsYWNlLCB0aGVyZSBjYW4gb25seSBiZSBvbmUgcmVmZXJlbmNlLiAqLwotICAgIGlmIChQeV9SRUZDTlQocmVzdWx0KSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKHJlc3VsdCk7Ci0gICAgaWYgKGxsZW4gPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbGFyZ2UgaW4gX1B5Qnl0ZXNfRm9ybWF0TG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbGVuID0gKGludClsbGVuOwotICAgIGlmIChidWZbbGVuLTFdID09ICdMJykgewotICAgICAgICAtLWxlbjsKLSAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgIH0KLSAgICBzaWduID0gYnVmWzBdID09ICctJzsKLSAgICBudW1ub25kaWdpdHMgKz0gc2lnbjsKLSAgICBudW1kaWdpdHMgPSBsZW4gLSBudW1ub25kaWdpdHM7Ci0gICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOwotCi0gICAgLyogR2V0IHJpZCBvZiBiYXNlIG1hcmtlciB1bmxlc3MgRl9BTFQgKi8KLSAgICBpZiAoKChmbGFncyAmIEZfQUxUKSA9PSAwICYmCi0gICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykpKSB7Ci0gICAgICAgIGFzc2VydChidWZbc2lnbl0gPT0gJzAnKTsKLSAgICAgICAgYXNzZXJ0KGJ1ZltzaWduKzFdID09ICd4JyB8fCBidWZbc2lnbisxXSA9PSAnWCcgfHwKLSAgICAgICAgICAgICAgIGJ1ZltzaWduKzFdID09ICdvJyk7Ci0gICAgICAgIG51bW5vbmRpZ2l0cyAtPSAyOwotICAgICAgICBidWYgKz0gMjsKLSAgICAgICAgbGVuIC09IDI7Ci0gICAgICAgIGlmIChzaWduKQotICAgICAgICAgICAgYnVmWzBdID0gJy0nOwotICAgICAgICBhc3NlcnQobGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyk7Ci0gICAgICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKLSAgICB9Ci0KLSAgICAvKiBGaWxsIHdpdGggbGVhZGluZyB6ZXJvZXMgdG8gbWVldCBtaW5pbXVtIHdpZHRoLiAqLwotICAgIGlmIChwcmVjID4gbnVtZGlnaXRzKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyMSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtbm9uZGlnaXRzICsgcHJlYyk7Ci0gICAgICAgIGNoYXIgKmIxOwotICAgICAgICBpZiAoIXIxKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGIxID0gUHlCeXRlc19BU19TVFJJTkcocjEpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtbm9uZGlnaXRzOyArK2kpCi0gICAgICAgICAgICAqYjErKyA9ICpidWYrKzsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWMgLSBudW1kaWdpdHM7IGkrKykKLSAgICAgICAgICAgICpiMSsrID0gJzAnOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZGlnaXRzOyBpKyspCi0gICAgICAgICAgICAqYjErKyA9ICpidWYrKzsKLSAgICAgICAgKmIxID0gJ1wwJzsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IHIxOwotICAgICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgICAgICBsZW4gPSBudW1ub25kaWdpdHMgKyBwcmVjOwotICAgIH0KLQotICAgIC8qIEZpeCB1cCBjYXNlIGZvciBoZXggY29udmVyc2lvbnMuICovCi0gICAgaWYgKHR5cGUgPT0gJ1gnKSB7Ci0gICAgICAgIC8qIE5lZWQgdG8gY29udmVydCBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzIHRvIHVwcGVyIGNhc2UuCi0gICAgICAgICAgIGFuZCBuZWVkIHRvIGNvbnZlcnQgMHggdG8gMFggKGFuZCAtMHggdG8gLTBYKS4gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgaWYgKGJ1ZltpXSA+PSAnYScgJiYgYnVmW2ldIDw9ICd4JykKLSAgICAgICAgICAgICAgICBidWZbaV0gLT0gJ2EnLSdBJzsKLSAgICB9Ci0gICAgKnBidWYgPSBidWY7Ci0gICAgKnBsZW4gPSBsZW47Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZAogUHlCeXRlc19GaW5pKHZvaWQpCiB7CkBAIC0zMDcyLDkgKzI5NjAsNDMgQEAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsCiAgICAgICAgICAgICAgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaXRlcl9yZWR1Y2Uoc3RyaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp1ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgdSk7CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpdGVyX3NldHN0YXRlKHN0cml0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzdHJpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilzdHJpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pc3RyaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilzdHJpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvY2xhc3NvYmplY3QuYyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwppbmRleCBmOTU2ODUyLi5jZGM5YjFjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCkBAIC0xNCw2ICsxNCw4IEBACiAjZGVmaW5lIFB5TWV0aG9kX01BWEZSRUVMSVNUIDI1NgogI2VuZGlmCiAKK19QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKwogUHlPYmplY3QgKgogUHlNZXRob2RfRnVuY3Rpb24oUHlPYmplY3QgKmltKQogewpAQCAtMTkwLDggKzE5Miw3IEBACiAgICAgICAgICFQeU1ldGhvZF9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlNZXRob2RfQ2hlY2sob3RoZXIpKQogICAgIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGEgPSAoUHlNZXRob2RPYmplY3QgKilzZWxmOwogICAgIGIgPSAoUHlNZXRob2RPYmplY3QgKilvdGhlcjsKQEAgLTIyOCw3ICsyMjksNyBAQAogICAgIH0KICAgICBrbGFzcyA9IChQeU9iamVjdCopUHlfVFlQRShzZWxmKTsKIAotICAgIGZ1bmNuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmdW5jLCAiX19uYW1lX18iKTsKKyAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChmdW5jbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0Miw3ICsyNDMsNyBAQAogICAgIGlmIChrbGFzcyA9PSBOVUxMKQogICAgICAgICBrbGFzc25hbWUgPSBOVUxMOwogICAgIGVsc2UgewotICAgICAgICBrbGFzc25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGtsYXNzLCAiX19uYW1lX18iKTsKKyAgICAgICAga2xhc3NuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChrbGFzcywgJlB5SWRfX19uYW1lX18pOwogICAgICAgICBpZiAoa2xhc3NuYW1lID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZ1bmNuYW1lKTsKQEAgLTQwMiw2ICs0MDMsMTUgQEAKICAgICAodm9pZClQeU1ldGhvZF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeU1ldGhvZF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5TWV0aG9kT2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeU1ldGhvZE9iamVjdCkpOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIGluc3RhbmNlIG1ldGhvZAogICovCkBAIC01MTksOCArNTI5LDcgQEAKICAgICAgICAgIVB5SW5zdGFuY2VNZXRob2RfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5SW5zdGFuY2VNZXRob2RfQ2hlY2sob3RoZXIpKQogICAgIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGEgPSAoUHlJbnN0YW5jZU1ldGhvZE9iamVjdCAqKXNlbGY7CiAgICAgYiA9IChQeUluc3RhbmNlTWV0aG9kT2JqZWN0ICopb3RoZXI7CkBAIC01NDcsNyArNTU2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZnVuY25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZ1bmMsICJfX25hbWVfXyIpOworICAgIGZ1bmNuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChmdW5jLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKGZ1bmNuYW1lID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMgYi9PYmplY3RzL2NvZGVvYmplY3QuYwppbmRleCBiYjkzOGVhLi45NzEzZjYxIDEwMDY0NAotLS0gYS9PYmplY3RzL2NvZGVvYmplY3QuYworKysgYi9PYmplY3RzL2NvZGVvYmplY3QuYwpAQCAtOCwxOSArOCwyNCBAQAogLyogYWxsX25hbWVfY2hhcnMocyk6IHRydWUgaWZmIGFsbCBjaGFycyBpbiBzIGFyZSB2YWxpZCBOQU1FX0NIQVJTICovCiAKIHN0YXRpYyBpbnQKLWFsbF9uYW1lX2NoYXJzKFB5X1VOSUNPREUgKnMpCithbGxfbmFtZV9jaGFycyhQeU9iamVjdCAqbykKIHsKICAgICBzdGF0aWMgY2hhciBva19uYW1lX2NoYXJbMjU2XTsKICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciAqbmFtZV9jaGFycyA9ICh1bnNpZ25lZCBjaGFyICopTkFNRV9DSEFSUzsKKyAgICBQeVVuaWNvZGVPYmplY3QgKnUgPSAoUHlVbmljb2RlT2JqZWN0ICopbzsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobykgfHwgUHlVbmljb2RlX1JFQURZKHUpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KSA+PSAxMjgpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKG9rX25hbWVfY2hhclsqbmFtZV9jaGFyc10gPT0gMCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyICpwOwogICAgICAgICBmb3IgKHAgPSBuYW1lX2NoYXJzOyAqcDsgcCsrKQogICAgICAgICAgICAgb2tfbmFtZV9jaGFyWypwXSA9IDE7CiAgICAgfQorICAgIHMgPSBQeVVuaWNvZGVfMUJZVEVfREFUQSh1KTsKICAgICB3aGlsZSAoKnMpIHsKLSAgICAgICAgaWYgKCpzID49IDEyOCkKLSAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAob2tfbmFtZV9jaGFyWypzKytdID09IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC01MSw3ICs1Niw4IEBACiAgICAgICAgICAgIFB5T2JqZWN0ICpsbm90YWIpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKLSAgICBQeV9zc2l6ZV90IGk7CisgICAgdW5zaWduZWQgY2hhciAqY2VsbDJhcmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaSwgbl9jZWxsdmFyczsKIAogICAgIC8qIENoZWNrIGFyZ3VtZW50IHR5cGVzICovCiAgICAgaWYgKGFyZ2NvdW50IDwgMCB8fCBrd29ubHlhcmdjb3VudCA8IDAgfHwgbmxvY2FscyA8IDAgfHwKQEAgLTY4LDQ4ICs3NCw3OSBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG5fY2VsbHZhcnMgPSBQeVR1cGxlX0dFVF9TSVpFKGNlbGx2YXJzKTsKICAgICBpbnRlcm5fc3RyaW5ncyhuYW1lcyk7CiAgICAgaW50ZXJuX3N0cmluZ3ModmFybmFtZXMpOwogICAgIGludGVybl9zdHJpbmdzKGZyZWV2YXJzKTsKICAgICBpbnRlcm5fc3RyaW5ncyhjZWxsdmFycyk7CiAgICAgLyogSW50ZXJuIHNlbGVjdGVkIHN0cmluZyBjb25zdGFudHMgKi8KLSAgICBmb3IgKGkgPSBQeVR1cGxlX1NpemUoY29uc3RzKTsgLS1pID49IDA7ICkgeworICAgIGZvciAoaSA9IFB5VHVwbGVfR0VUX1NJWkUoY29uc3RzKTsgLS1pID49IDA7ICkgewogICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR2V0SXRlbShjb25zdHMsIGkpOwotICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWFsbF9uYW1lX2NoYXJzKFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSkKKyAgICAgICAgaWYgKCFhbGxfbmFtZV9jaGFycyh2KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmUHlUdXBsZV9HRVRfSVRFTShjb25zdHMsIGkpKTsKICAgICB9Ci0gICAgY28gPSBQeU9iamVjdF9ORVcoUHlDb2RlT2JqZWN0LCAmUHlDb2RlX1R5cGUpOwotICAgIGlmIChjbyAhPSBOVUxMKSB7Ci0gICAgICAgIGNvLT5jb19hcmdjb3VudCA9IGFyZ2NvdW50OwotICAgICAgICBjby0+Y29fa3dvbmx5YXJnY291bnQgPSBrd29ubHlhcmdjb3VudDsKLSAgICAgICAgY28tPmNvX25sb2NhbHMgPSBubG9jYWxzOwotICAgICAgICBjby0+Y29fc3RhY2tzaXplID0gc3RhY2tzaXplOwotICAgICAgICBjby0+Y29fZmxhZ3MgPSBmbGFnczsKLSAgICAgICAgUHlfSU5DUkVGKGNvZGUpOwotICAgICAgICBjby0+Y29fY29kZSA9IGNvZGU7Ci0gICAgICAgIFB5X0lOQ1JFRihjb25zdHMpOwotICAgICAgICBjby0+Y29fY29uc3RzID0gY29uc3RzOwotICAgICAgICBQeV9JTkNSRUYobmFtZXMpOwotICAgICAgICBjby0+Y29fbmFtZXMgPSBuYW1lczsKLSAgICAgICAgUHlfSU5DUkVGKHZhcm5hbWVzKTsKLSAgICAgICAgY28tPmNvX3Zhcm5hbWVzID0gdmFybmFtZXM7Ci0gICAgICAgIFB5X0lOQ1JFRihmcmVldmFycyk7Ci0gICAgICAgIGNvLT5jb19mcmVldmFycyA9IGZyZWV2YXJzOwotICAgICAgICBQeV9JTkNSRUYoY2VsbHZhcnMpOwotICAgICAgICBjby0+Y29fY2VsbHZhcnMgPSBjZWxsdmFyczsKLSAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKLSAgICAgICAgY28tPmNvX2ZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKLSAgICAgICAgY28tPmNvX25hbWUgPSBuYW1lOwotICAgICAgICBjby0+Y29fZmlyc3RsaW5lbm8gPSBmaXJzdGxpbmVubzsKLSAgICAgICAgUHlfSU5DUkVGKGxub3RhYik7Ci0gICAgICAgIGNvLT5jb19sbm90YWIgPSBsbm90YWI7Ci0gICAgICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7Ci0gICAgICAgIGNvLT5jb193ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgLyogQ3JlYXRlIG1hcHBpbmcgYmV0d2VlbiBjZWxscyBhbmQgYXJndW1lbnRzIGlmIG5lZWRlZC4gKi8KKyAgICBpZiAobl9jZWxsdmFycykgeworICAgICAgICBQeV9zc2l6ZV90IHRvdGFsX2FyZ3MgPSBhcmdjb3VudCArIGt3b25seWFyZ2NvdW50ICsKKyAgICAgICAgICAgICgoZmxhZ3MgJiBDT19WQVJBUkdTKSAhPSAwKSArICgoZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykgIT0gMCk7CisgICAgICAgIFB5X3NzaXplX3QgYWxsb2Nfc2l6ZSA9IHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIG5fY2VsbHZhcnM7CisgICAgICAgIGludCB1c2VkX2NlbGwyYXJnID0gMDsKKyAgICAgICAgY2VsbDJhcmcgPSBQeU1lbV9NQUxMT0MoYWxsb2Nfc2l6ZSk7CisgICAgICAgIGlmIChjZWxsMmFyZyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1lbXNldChjZWxsMmFyZywgQ09fQ0VMTF9OT1RfQU5fQVJHLCBhbGxvY19zaXplKTsKKyAgICAgICAgLyogRmluZCBjZWxscyB3aGljaCBhcmUgYWxzbyBhcmd1bWVudHMuICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX2NlbGx2YXJzOyBpKyspIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgajsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsID0gUHlUdXBsZV9HRVRfSVRFTShjZWxsdmFycywgaSk7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFB5VHVwbGVfR0VUX0lURU0odmFybmFtZXMsIGopOworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUoY2VsbCwgYXJnKSkgeworICAgICAgICAgICAgICAgICAgICBjZWxsMmFyZ1tpXSA9IGo7CisgICAgICAgICAgICAgICAgICAgIHVzZWRfY2VsbDJhcmcgPSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF1c2VkX2NlbGwyYXJnKSB7CisgICAgICAgICAgICBQeU1lbV9GUkVFKGNlbGwyYXJnKTsKKyAgICAgICAgICAgIGNlbGwyYXJnID0gTlVMTDsKKyAgICAgICAgfQogICAgIH0KKyAgICBjbyA9IFB5T2JqZWN0X05FVyhQeUNvZGVPYmplY3QsICZQeUNvZGVfVHlwZSk7CisgICAgaWYgKGNvID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGNlbGwyYXJnKQorICAgICAgICAgICAgUHlNZW1fRlJFRShjZWxsMmFyZyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBjby0+Y29fYXJnY291bnQgPSBhcmdjb3VudDsKKyAgICBjby0+Y29fa3dvbmx5YXJnY291bnQgPSBrd29ubHlhcmdjb3VudDsKKyAgICBjby0+Y29fbmxvY2FscyA9IG5sb2NhbHM7CisgICAgY28tPmNvX3N0YWNrc2l6ZSA9IHN0YWNrc2l6ZTsKKyAgICBjby0+Y29fZmxhZ3MgPSBmbGFnczsKKyAgICBQeV9JTkNSRUYoY29kZSk7CisgICAgY28tPmNvX2NvZGUgPSBjb2RlOworICAgIFB5X0lOQ1JFRihjb25zdHMpOworICAgIGNvLT5jb19jb25zdHMgPSBjb25zdHM7CisgICAgUHlfSU5DUkVGKG5hbWVzKTsKKyAgICBjby0+Y29fbmFtZXMgPSBuYW1lczsKKyAgICBQeV9JTkNSRUYodmFybmFtZXMpOworICAgIGNvLT5jb192YXJuYW1lcyA9IHZhcm5hbWVzOworICAgIFB5X0lOQ1JFRihmcmVldmFycyk7CisgICAgY28tPmNvX2ZyZWV2YXJzID0gZnJlZXZhcnM7CisgICAgUHlfSU5DUkVGKGNlbGx2YXJzKTsKKyAgICBjby0+Y29fY2VsbHZhcnMgPSBjZWxsdmFyczsKKyAgICBjby0+Y29fY2VsbDJhcmcgPSBjZWxsMmFyZzsKKyAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOworICAgIGNvLT5jb19maWxlbmFtZSA9IGZpbGVuYW1lOworICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICBjby0+Y29fbmFtZSA9IG5hbWU7CisgICAgY28tPmNvX2ZpcnN0bGluZW5vID0gZmlyc3RsaW5lbm87CisgICAgUHlfSU5DUkVGKGxub3RhYik7CisgICAgY28tPmNvX2xub3RhYiA9IGxub3RhYjsKKyAgICBjby0+Y29fem9tYmllZnJhbWUgPSBOVUxMOworICAgIGNvLT5jb193ZWFrcmVmbGlzdCA9IE5VTEw7CiAgICAgcmV0dXJuIGNvOwogfQogCkBAIC0yMTIsOSArMjQ5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKSwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSkpOworICAgICAgICAgICAgaXRlbSA9IF9QeVVuaWNvZGVfQ29weShpdGVtKTsKICAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3dHVwbGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzMwLDYgKzM2NSw4IEBACiAgICAgUHlfWERFQ1JFRihjby0+Y29fZmlsZW5hbWUpOwogICAgIFB5X1hERUNSRUYoY28tPmNvX25hbWUpOwogICAgIFB5X1hERUNSRUYoY28tPmNvX2xub3RhYik7CisgICAgaWYgKGNvLT5jb19jZWxsMmFyZyAhPSBOVUxMKQorICAgICAgICBQeU1lbV9GUkVFKGNvLT5jb19jZWxsMmFyZyk7CiAgICAgaWYgKGNvLT5jb196b21iaWVmcmFtZSAhPSBOVUxMKQogICAgICAgICBQeU9iamVjdF9HQ19EZWwoY28tPmNvX3pvbWJpZWZyYW1lKTsKICAgICBpZiAoY28tPmNvX3dlYWtyZWZsaXN0ICE9IE5VTEwpCkBAIC0zMzgsNiArMzc1LDE3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitjb2RlX3NpemVvZihQeUNvZGVPYmplY3QgKmNvLCB2b2lkICp1bnVzZWQpCit7CisgICAgUHlfc3NpemVfdCByZXM7CisKKyAgICByZXMgPSBzaXplb2YoUHlDb2RlT2JqZWN0KTsKKyAgICBpZiAoY28tPmNvX2NlbGwyYXJnICE9IE5VTEwgJiYgY28tPmNvX2NlbGx2YXJzICE9IE5VTEwpCisgICAgICAgIHJlcyArPSBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKiBzaXplb2YodW5zaWduZWQgY2hhcik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29kZV9yZXByKFB5Q29kZU9iamVjdCAqY28pCiB7CiAgICAgaW50IGxpbmVubzsKQEAgLTM2Niw4ICs0MTQsNyBAQAogICAgIGlmICgob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpIHx8CiAgICAgICAgICFQeUNvZGVfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5Q29kZV9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgY28gPSAoUHlDb2RlT2JqZWN0ICopc2VsZjsKQEAgLTQ0NCw2ICs0OTEsMTEgQEAKIAogLyogWFhYIGNvZGUgb2JqZWN0cyBuZWVkIHRvIHBhcnRpY2lwYXRlIGluIEdDPyAqLwogCitzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIGNvZGVfbWV0aG9kc1tdID0geworICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbiljb2RlX3NpemVvZiwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlUeXBlT2JqZWN0IFB5Q29kZV9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImNvZGUiLApAQCAtNDcyLDcgKzUyNCw3IEBACiAgICAgb2Zmc2V0b2YoUHlDb2RlT2JqZWN0LCBjb193ZWFrcmVmbGlzdCksICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjb2RlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgY29kZV9tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29tcGxleG9iamVjdC5jIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKaW5kZXggZTI0N2JhOS4uNDAzYzYwYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKQEAgLTI2NSw5ICsyNjUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRyeV9jb21wbGV4X3NwZWNpYWxfbWV0aG9kKFB5T2JqZWN0ICpvcCkgewogICAgIFB5T2JqZWN0ICpmOwotICAgIHN0YXRpYyBQeU9iamVjdCAqY29tcGxleHN0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2NvbXBsZXhfXyk7CiAKLSAgICBmID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob3AsICJfX2NvbXBsZXhfXyIsICZjb21wbGV4c3RyKTsKKyAgICBmID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob3AsICZQeUlkX19fY29tcGxleF9fKTsKICAgICBpZiAoZikgewogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGYpOwpAQCAtMzMwLDEyICszMzAsMTAgQEAKICAgICBpbnQgcHJlY2lzaW9uID0gMDsKICAgICBjaGFyIGZvcm1hdF9jb2RlID0gJ3InOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgLyogSWYgdGhlc2UgYXJlIG5vbi1OVUxMLCB0aGV5J2xsIG5lZWQgdG8gYmUgZnJlZWQuICovCiAgICAgY2hhciAqcHJlID0gTlVMTDsKICAgICBjaGFyICppbSA9IE5VTEw7Ci0gICAgY2hhciAqYnVmID0gTlVMTDsKIAogICAgIC8qIFRoZXNlIGRvIG5vdCBuZWVkIHRvIGJlIGZyZWVkLiByZSBpcyBlaXRoZXIgYW4gYWxpYXMKICAgICAgICBmb3IgcHJlIG9yIGEgcG9pbnRlciB0byBhIGNvbnN0YW50LiAgbGVhZCBhbmQgdGFpbApAQCAtMzc0LDIwICszNzIsMTAgQEAKICAgICAgICAgbGVhZCA9ICIoIjsKICAgICAgICAgdGFpbCA9ICIpIjsKICAgICB9Ci0gICAgLyogQWxsb2MgdGhlIGZpbmFsIGJ1ZmZlci4gQWRkIG9uZSBmb3IgdGhlICJqIiBpbiB0aGUgZm9ybWF0IHN0cmluZywKLSAgICAgICBhbmQgb25lIGZvciB0aGUgdHJhaWxpbmcgemVybyBieXRlLiAqLwotICAgIGxlbiA9IHN0cmxlbihsZWFkKSArIHN0cmxlbihyZSkgKyBzdHJsZW4oaW0pICsgc3RybGVuKHRhaWwpICsgMjsKLSAgICBidWYgPSBQeU1lbV9NYWxsb2MobGVuKTsKLSAgICBpZiAoIWJ1ZikgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBsZW4sICIlcyVzJXNqJXMiLCBsZWFkLCByZSwgaW0sIHRhaWwpOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzJXMlc2olcyIsIGxlYWQsIHJlLCBpbSwgdGFpbCk7CiAgIGRvbmU6CiAgICAgUHlNZW1fRnJlZShpbSk7CiAgICAgUHlNZW1fRnJlZShwcmUpOwotICAgIFB5TWVtX0ZyZWUoYnVmKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02NjIsOCArNjUwLDcgQEAKICAgICByZXR1cm4gcmVzOwogCiBVbmltcGxlbWVudGVkOgotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTcxMiwxMiArNjk5LDIyIEBACiBjb21wbGV4X19mb3JtYXRfXyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCi0gICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGZvcm1hdF9zcGVjKSk7CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgICAgICZ3cml0ZXIsCisgICAgICAgIHNlbGYsCisgICAgICAgIGZvcm1hdF9zcGVjLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiAjaWYgMApAQCAtNzY4LDIwICs3NjUsMTAgQEAKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpLCBidWZsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodik7Ci0gICAgICAgIFB5X1VOSUNPREUgKmJ1ZnB0cjsKLSAgICAgICAgc19idWZmZXIgPSBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSwgYnVmbGVuKTsKKyAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7CiAgICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qIFJlcGxhY2Ugbm9uLUFTQ0lJIHdoaXRlc3BhY2Ugd2l0aCAnICcgKi8KLSAgICAgICAgYnVmcHRyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc19idWZmZXIpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnVmbGVuOyBpKyspIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSBidWZwdHJbaV07Ci0gICAgICAgICAgICBpZiAoY2ggPiAxMjcgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKLSAgICAgICAgICAgICAgICBidWZwdHJbaV0gPSAnICc7Ci0gICAgICAgIH0KLSAgICAgICAgcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHNfYnVmZmVyLCAmbGVuKTsKKyAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHNfYnVmZmVyLCAmbGVuKTsKICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCmluZGV4IDk5MzRmMjMuLmFiY2MwMDIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGVzY3JvYmplY3QuYworKysgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKQEAgLTksNiArOSw3IEBACiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZGVzY3IpOwogICAgIFB5X1hERUNSRUYoZGVzY3ItPmRfdHlwZSk7CiAgICAgUHlfWERFQ1JFRihkZXNjci0+ZF9uYW1lKTsKKyAgICBQeV9YREVDUkVGKGRlc2NyLT5kX3F1YWxuYW1lKTsKICAgICBQeU9iamVjdF9HQ19EZWwoZGVzY3IpOwogfQogCkBAIC0zNTksNiArMzYwLDQ0IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGRlc2NyLT5kX21ldGhvZC0+bWxfZG9jKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NhbGN1bGF0ZV9xdWFsbmFtZShQeURlc2NyT2JqZWN0ICpkZXNjcikKK3sKKyAgICBQeU9iamVjdCAqdHlwZV9xdWFsbmFtZSwgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOworCisgICAgaWYgKGRlc2NyLT5kX25hbWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGRlc2NyLT5kX25hbWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiPGRlc2NyaXB0b3I+Ll9fbmFtZV9fIGlzIG5vdCBhIHVuaWNvZGUgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHR5cGVfcXVhbG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKWRlc2NyLT5kX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19xdWFsbmFtZV9fKTsKKyAgICBpZiAodHlwZV9xdWFsbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHR5cGVfcXVhbG5hbWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICI8ZGVzY3JpcHRvcj4uX19vYmpjbGFzc19fLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QiKTsKKyAgICAgICAgUHlfWERFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTLiVTIiwgdHlwZV9xdWFsbmFtZSwgZGVzY3ItPmRfbmFtZSk7CisgICAgUHlfREVDUkVGKHR5cGVfcXVhbG5hbWUpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXNjcl9nZXRfcXVhbG5hbWUoUHlEZXNjck9iamVjdCAqZGVzY3IpCit7CisgICAgaWYgKGRlc2NyLT5kX3F1YWxuYW1lID09IE5VTEwpCisgICAgICAgIGRlc2NyLT5kX3F1YWxuYW1lID0gY2FsY3VsYXRlX3F1YWxuYW1lKGRlc2NyKTsKKyAgICBQeV9YSU5DUkVGKGRlc2NyLT5kX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gZGVzY3ItPmRfcXVhbG5hbWU7Cit9CisKIHN0YXRpYyBQeU1lbWJlckRlZiBkZXNjcl9tZW1iZXJzW10gPSB7CiAgICAgeyJfX29iamNsYXNzX18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlEZXNjck9iamVjdCwgZF90eXBlKSwgUkVBRE9OTFl9LAogICAgIHsiX19uYW1lX18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlEZXNjck9iamVjdCwgZF9uYW1lKSwgUkVBRE9OTFl9LApAQCAtMzY3LDYgKzQwNiw3IEBACiAKIHN0YXRpYyBQeUdldFNldERlZiBtZXRob2RfZ2V0c2V0W10gPSB7CiAgICAgeyJfX2RvY19fIiwgKGdldHRlciltZXRob2RfZ2V0X2RvY30sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWRlc2NyX2dldF9xdWFsbmFtZX0sCiAgICAgezB9CiB9OwogCkBAIC0zODIsNiArNDIyLDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIG1lbWJlcl9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKW1lbWJlcl9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTM5Nyw2ICs0MzgsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgZ2V0c2V0X2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpZ2V0c2V0X2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtNDEyLDYgKzQ1NCw3IEBACiAKIHN0YXRpYyBQeUdldFNldERlZiB3cmFwcGVyZGVzY3JfZ2V0c2V0W10gPSB7CiAgICAgeyJfX2RvY19fIiwgKGdldHRlcil3cmFwcGVyZGVzY3JfZ2V0X2RvY30sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWRlc2NyX2dldF9xdWFsbmFtZX0sCiAgICAgezB9CiB9OwogCkBAIC02MjMsNiArNjY2LDkgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihkZXNjcik7CiAgICAgICAgICAgICBkZXNjciA9IE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZXNjci0+ZF9xdWFsbmFtZSA9IE5VTEw7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGRlc2NyOwogfQpAQCAtNjkwLDQxICs3MzYsNDQgQEAKIH0KIAogCi0vKiAtLS0gUmVhZG9ubHkgcHJveHkgZm9yIGRpY3Rpb25hcmllcyAoYWN0dWFsbHkgYW55IG1hcHBpbmcpIC0tLSAqLworLyogLS0tIG1hcHBpbmdwcm94eTogcmVhZC1vbmx5IHByb3h5IGZvciBtYXBwaW5ncyAtLS0gKi8KIAogLyogVGhpcyBoYXMgbm8gcmVhc29uIHRvIGJlIGluIHRoaXMgZmlsZSBleGNlcHQgdGhhdCBhZGRpbmcgbmV3IGZpbGVzIGlzIGEKICAgIGJpdCBvZiBhIHBhaW4gKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqZGljdDsKLX0gcHJveHlvYmplY3Q7CisgICAgUHlPYmplY3QgKm1hcHBpbmc7Cit9IG1hcHBpbmdwcm94eW9iamVjdDsKIAogc3RhdGljIFB5X3NzaXplX3QKLXByb3h5X2xlbihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfbGVuKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1NpemUocHAtPmRpY3QpOworICAgIHJldHVybiBQeU9iamVjdF9TaXplKHBwLT5tYXBwaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2dldGl0ZW0ocHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQorbWFwcGluZ3Byb3h5X2dldGl0ZW0obWFwcGluZ3Byb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlbShwcC0+ZGljdCwga2V5KTsKKyAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlbShwcC0+bWFwcGluZywga2V5KTsKIH0KIAotc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgcHJveHlfYXNfbWFwcGluZyA9IHsKLSAgICAobGVuZnVuYylwcm94eV9sZW4sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLwotICAgIChiaW5hcnlmdW5jKXByb3h5X2dldGl0ZW0sICAgICAgICAgICAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtYXBwaW5ncHJveHlfYXNfbWFwcGluZyA9IHsKKyAgICAobGVuZnVuYyltYXBwaW5ncHJveHlfbGVuLCAgICAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLworICAgIChiaW5hcnlmdW5jKW1hcHBpbmdwcm94eV9nZXRpdGVtLCAgICAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCiB9OwogCiBzdGF0aWMgaW50Ci1wcm94eV9jb250YWlucyhwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCittYXBwaW5ncHJveHlfY29udGFpbnMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICByZXR1cm4gUHlEaWN0X0NvbnRhaW5zKHBwLT5kaWN0LCBrZXkpOworICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChwcC0+bWFwcGluZykpCisgICAgICAgIHJldHVybiBQeURpY3RfQ29udGFpbnMocHAtPm1hcHBpbmcsIGtleSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlTZXF1ZW5jZV9Db250YWlucyhwcC0+bWFwcGluZywga2V5KTsKIH0KIAotc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIHByb3h5X2FzX3NlcXVlbmNlID0geworc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1hcHBpbmdwcm94eV9hc19zZXF1ZW5jZSA9IHsKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2xlbmd0aCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KQEAgLTczMiwxNDcgKzc4MSwxOTkgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3NsaWNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9hc3NfaXRlbSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfYXNzX3NsaWNlICovCi0gICAgKG9iam9ianByb2MpcHJveHlfY29udGFpbnMsICAgICAgICAgICAgICAgICAvKiBzcV9jb250YWlucyAqLworICAgIChvYmpvYmpwcm9jKW1hcHBpbmdwcm94eV9jb250YWlucywgICAgICAgICAgICAgICAgIC8qIHNxX2NvbnRhaW5zICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9pbnBsYWNlX2NvbmNhdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfaW5wbGFjZV9yZXBlYXQgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9nZXQocHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqYXJncykKK21hcHBpbmdwcm94eV9nZXQobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKmRlZiA9IFB5X05vbmU7CisgICAgX1B5X0lERU5USUZJRVIoZ2V0KTsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZrZXksICZkZWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgImdldCIsICIoT08pIiwga2V5LCBkZWYpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBwLT5tYXBwaW5nLCAmUHlJZF9nZXQsICIoT08pIiwga2V5LCBkZWYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfa2V5cyhwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfa2V5cyhtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAia2V5cyIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKGtleXMpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBwLT5tYXBwaW5nLCAmUHlJZF9rZXlzLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X3ZhbHVlcyhwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfdmFsdWVzKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJ2YWx1ZXMiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUih2YWx1ZXMpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBwLT5tYXBwaW5nLCAmUHlJZF92YWx1ZXMsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfaXRlbXMocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2l0ZW1zKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJpdGVtcyIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfaXRlbXMsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfY29weShwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfY29weShtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAiY29weSIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKGNvcHkpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBwLT5tYXBwaW5nLCAmUHlJZF9jb3B5LCBOVUxMKTsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHByb3h5X21ldGhvZHNbXSA9IHsKLSAgICB7ImdldCIsICAgICAgIChQeUNGdW5jdGlvbilwcm94eV9nZXQsICAgICAgICBNRVRIX1ZBUkFSR1MsCisvKiBXQVJOSU5HOiBtYXBwaW5ncHJveHkgbWV0aG9kcyBtdXN0IG5vdCBnaXZlIGFjY2VzcworICAgICAgICAgICAgdG8gdGhlIHVuZGVybHlpbmcgbWFwcGluZyAqLworCitzdGF0aWMgUHlNZXRob2REZWYgbWFwcGluZ3Byb3h5X21ldGhvZHNbXSA9IHsKKyAgICB7ImdldCIsICAgICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfZ2V0LCAgICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIkQuZ2V0KGtbLGRdKSAtPiBEW2tdIGlmIGsgaW4gRCwgZWxzZSBkLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGQgZGVmYXVsdHMgdG8gTm9uZS4iKX0sCi0gICAgeyJrZXlzIiwgICAgICAoUHlDRnVuY3Rpb24pcHJveHlfa2V5cywgICAgICAgTUVUSF9OT0FSR1MsCisgICAgICAgICAgICAgICAiICBkIGRlZmF1bHRzIHRvIE5vbmUuIil9LAorICAgIHsia2V5cyIsICAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9rZXlzLCAgICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJELmtleXMoKSAtPiBsaXN0IG9mIEQncyBrZXlzIil9LAotICAgIHsidmFsdWVzIiwgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X3ZhbHVlcywgICAgIE1FVEhfTk9BUkdTLAorICAgIHsidmFsdWVzIiwgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV92YWx1ZXMsICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJELnZhbHVlcygpIC0+IGxpc3Qgb2YgRCdzIHZhbHVlcyIpfSwKLSAgICB7Iml0ZW1zIiwgICAgIChQeUNGdW5jdGlvbilwcm94eV9pdGVtcywgICAgICBNRVRIX05PQVJHUywKKyAgICB7Iml0ZW1zIiwgICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfaXRlbXMsICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5pdGVtcygpIC0+IGxpc3Qgb2YgRCdzIChrZXksIHZhbHVlKSBwYWlycywgYXMgMi10dXBsZXMiKX0sCi0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pcHJveHlfY29weSwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2NvcHksICAgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQuY29weSgpIC0+IGEgc2hhbGxvdyBjb3B5IG9mIEQiKX0sCiAgICAgezB9CiB9OwogCiBzdGF0aWMgdm9pZAotcHJveHlfZGVhbGxvYyhwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfZGVhbGxvYyhtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHBwKTsKLSAgICBQeV9ERUNSRUYocHAtPmRpY3QpOworICAgIFB5X0RFQ1JFRihwcC0+bWFwcGluZyk7CiAgICAgUHlPYmplY3RfR0NfRGVsKHBwKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2dldGl0ZXIocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2dldGl0ZXIobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlcihwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZXIocHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfc3RyKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9zdHIobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfU3RyKHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlPYmplY3RfU3RyKHBwLT5tYXBwaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X3JlcHIocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X3JlcHIobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImRpY3RfcHJveHkoJVIpIiwgcHAtPmRpY3QpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgibWFwcGluZ3Byb3h5KCVSKSIsIHBwLT5tYXBwaW5nKTsKIH0KIAogc3RhdGljIGludAotcHJveHlfdHJhdmVyc2UoUHlPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQorbWFwcGluZ3Byb3h5X3RyYXZlcnNlKFB5T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBwcm94eW9iamVjdCAqcHAgPSAocHJveHlvYmplY3QgKilzZWxmOwotICAgIFB5X1ZJU0lUKHBwLT5kaWN0KTsKKyAgICBtYXBwaW5ncHJveHlvYmplY3QgKnBwID0gKG1hcHBpbmdwcm94eW9iamVjdCAqKXNlbGY7CisgICAgUHlfVklTSVQocHAtPm1hcHBpbmcpOwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfcmljaGNvbXBhcmUocHJveHlvYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCittYXBwaW5ncHJveHlfcmljaGNvbXBhcmUobWFwcGluZ3Byb3h5b2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQogewotICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZSh2LT5kaWN0LCB3LCBvcCk7CisgICAgcmV0dXJuIFB5T2JqZWN0X1JpY2hDb21wYXJlKHYtPm1hcHBpbmcsIHcsIG9wKTsKK30KKworc3RhdGljIGludAorbWFwcGluZ3Byb3h5X2NoZWNrX21hcHBpbmcoUHlPYmplY3QgKm1hcHBpbmcpCit7CisgICAgaWYgKCFQeU1hcHBpbmdfQ2hlY2sobWFwcGluZykKKyAgICAgICAgfHwgUHlMaXN0X0NoZWNrKG1hcHBpbmcpCisgICAgICAgIHx8IFB5VHVwbGVfQ2hlY2sobWFwcGluZykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIm1hcHBpbmdwcm94eSgpIGFyZ3VtZW50IG11c3QgYmUgYSBtYXBwaW5nLCBub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG1hcHBpbmcpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0KgorbWFwcGluZ3Byb3h5X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im1hcHBpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqbWFwcGluZzsKKyAgICBtYXBwaW5ncHJveHlvYmplY3QgKm1hcHBpbmdwcm94eTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOm1hcHBpbmdwcm94eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbWFwcGluZykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKG1hcHBpbmdwcm94eV9jaGVja19tYXBwaW5nKG1hcHBpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG1hcHBpbmdwcm94eSA9IFB5T2JqZWN0X0dDX05ldyhtYXBwaW5ncHJveHlvYmplY3QsICZQeURpY3RQcm94eV9UeXBlKTsKKyAgICBpZiAobWFwcGluZ3Byb3h5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihtYXBwaW5nKTsKKyAgICBtYXBwaW5ncHJveHktPm1hcHBpbmcgPSBtYXBwaW5nOworICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtYXBwaW5ncHJveHkpOworICAgIHJldHVybiAoUHlPYmplY3QgKiltYXBwaW5ncHJveHk7CiB9CiAKIFB5VHlwZU9iamVjdCBQeURpY3RQcm94eV9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCi0gICAgImRpY3RfcHJveHkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6ZW9mKHByb3h5b2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAibWFwcGluZ3Byb3h5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YobWFwcGluZ3Byb3h5b2JqZWN0KSwgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpcHJveHlfZGVhbGxvYywgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpbWFwcGluZ3Byb3h5X2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpcHJveHlfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAocmVwcmZ1bmMpbWFwcGluZ3Byb3h5X3JlcHIsICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgICZwcm94eV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAmcHJveHlfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAmbWFwcGluZ3Byb3h5X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJm1hcHBpbmdwcm94eV9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgKHJlcHJmdW5jKXByb3h5X3N0ciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAocmVwcmZ1bmMpbWFwcGluZ3Byb3h5X3N0ciwgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICBwcm94eV90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgbWFwcGluZ3Byb3h5X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAocmljaGNtcGZ1bmMpcHJveHlfcmljaGNvbXBhcmUsICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgKHJpY2hjbXBmdW5jKW1hcHBpbmdwcm94eV9yaWNoY29tcGFyZSwgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAoZ2V0aXRlcmZ1bmMpcHJveHlfZ2V0aXRlciwgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpbWFwcGluZ3Byb3h5X2dldGl0ZXIsICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgcHJveHlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbWFwcGluZ3Byb3h5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIG1hcHBpbmdwcm94eV9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiB9OwogCiBQeU9iamVjdCAqCi1QeURpY3RQcm94eV9OZXcoUHlPYmplY3QgKmRpY3QpCitQeURpY3RQcm94eV9OZXcoUHlPYmplY3QgKm1hcHBpbmcpCiB7Ci0gICAgcHJveHlvYmplY3QgKnBwOworICAgIG1hcHBpbmdwcm94eW9iamVjdCAqcHA7CiAKLSAgICBwcCA9IFB5T2JqZWN0X0dDX05ldyhwcm94eW9iamVjdCwgJlB5RGljdFByb3h5X1R5cGUpOworICAgIGlmIChtYXBwaW5ncHJveHlfY2hlY2tfbWFwcGluZyhtYXBwaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBwcCA9IFB5T2JqZWN0X0dDX05ldyhtYXBwaW5ncHJveHlvYmplY3QsICZQeURpY3RQcm94eV9UeXBlKTsKICAgICBpZiAocHAgIT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYoZGljdCk7Ci0gICAgICAgIHBwLT5kaWN0ID0gZGljdDsKKyAgICAgICAgUHlfSU5DUkVGKG1hcHBpbmcpOworICAgICAgICBwcC0+bWFwcGluZyA9IG1hcHBpbmc7CiAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhwcCk7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilwcDsKQEAgLTEwMjAsOSArMTEyMSwxNiBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3dyYXBwZXJfcXVhbG5hbWUod3JhcHBlcm9iamVjdCAqd3ApCit7CisgICAgcmV0dXJuIGRlc2NyX2dldF9xdWFsbmFtZSgoUHlEZXNjck9iamVjdCAqKXdwLT5kZXNjcik7Cit9CisKIHN0YXRpYyBQeUdldFNldERlZiB3cmFwcGVyX2dldHNldHNbXSA9IHsKICAgICB7Il9fb2JqY2xhc3NfXyIsIChnZXR0ZXIpd3JhcHBlcl9vYmpjbGFzc30sCiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpd3JhcHBlcl9uYW1lfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpd3JhcHBlcl9xdWFsbmFtZX0sCiAgICAgeyJfX2RvY19fIiwgKGdldHRlcil3cmFwcGVyX2RvY30sCiAgICAgezB9CiB9OwpAQCAtMTMzMiw3ICsxNDQwLDggQEAKIAogICAgIC8qIGlmIG5vIGRvY3N0cmluZyBnaXZlbiBhbmQgdGhlIGdldHRlciBoYXMgb25lLCB1c2UgdGhhdCBvbmUgKi8KICAgICBpZiAoKGRvYyA9PSBOVUxMIHx8IGRvYyA9PSBQeV9Ob25lKSAmJiBnZXQgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqZ2V0X2RvYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZ2V0LCAiX19kb2NfXyIpOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2RvY19fKTsKKyAgICAgICAgUHlPYmplY3QgKmdldF9kb2MgPSBfUHlPYmplY3RfR2V0QXR0cklkKGdldCwgJlB5SWRfX19kb2NfXyk7CiAgICAgICAgIGlmIChnZXRfZG9jKSB7CiAgICAgICAgICAgICBpZiAoUHlfVFlQRShzZWxmKSA9PSAmUHlQcm9wZXJ0eV9UeXBlKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihwcm9wLT5wcm9wX2RvYyk7CkBAIC0xMzQzLDcgKzE0NTIsNyBAQAogICAgICAgICAgICAgICAgIGluIGRpY3Qgb2YgdGhlIHN1YmNsYXNzIGluc3RhbmNlIGluc3RlYWQsCiAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlIGl0IGdldHMgc2hhZG93ZWQgYnkgX19kb2NfXyBpbiB0aGUKICAgICAgICAgICAgICAgICBjbGFzcydzIGRpY3QuICovCi0gICAgICAgICAgICAgICAgaW50IGVyciA9IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoc2VsZiwgIl9fZG9jX18iLCBnZXRfZG9jKTsKKyAgICAgICAgICAgICAgICBpbnQgZXJyID0gX1B5T2JqZWN0X1NldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RvY19fLCBnZXRfZG9jKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZ2V0X2RvYyk7CiAgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTEzNjEsNiArMTQ3MCw0MyBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorcHJvcGVydHlfZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fKHByb3BlcnR5b2JqZWN0ICpwcm9wLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChwcm9wLT5wcm9wX2dldCk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKworICAgIHJlcyA9IF9QeU9iamVjdF9Jc0Fic3RyYWN0KHByb3AtPnByb3Bfc2V0KTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorCisgICAgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QocHJvcC0+cHJvcF9kZWwpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgUHlfUkVUVVJOX0ZBTFNFOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgcHJvcGVydHlfZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19pc2Fic3RyYWN0bWV0aG9kX18iLAorICAgICAoZ2V0dGVyKXByb3BlcnR5X2dldF9fX2lzYWJzdHJhY3RtZXRob2RfXywgTlVMTCwKKyAgICAgTlVMTCwKKyAgICAgTlVMTH0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIocHJvcGVydHlfZG9jLAogInByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKSAtPiBwcm9wZXJ0eSBhdHRyaWJ1dGVcbiIKICJcbiIKQEAgLTE0MjYsNyArMTU3Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIHByb3BlcnR5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIHByb3BlcnR5X21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgcHJvcGVydHlfZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICBwcm9wZXJ0eV9kZXNjcl9nZXQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0bm90ZXMudHh0IGIvT2JqZWN0cy9kaWN0bm90ZXMudHh0CmluZGV4IGQzYWE3NzQuLmY4OTcyMGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG5vdGVzLnR4dAorKysgYi9PYmplY3RzL2RpY3Rub3Rlcy50eHQKQEAgLTEsNyArMSw2IEBACi1OT1RFUyBPTiBPUFRJTUlaSU5HIERJQ1RJT05BUklFUworTk9URVMgT04gRElDVElPTkFSSUVTCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0KIFByaW5jaXBhbCBVc2UgQ2FzZXMgZm9yIERpY3Rpb25hcmllcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTIxLDcgKzIwLDcgQEAKIAogQnVpbHRpbnMKICAgICBGcmVxdWVudCByZWFkcy4gIEFsbW9zdCBuZXZlciB3cml0dGVuLgotICAgIFNpemUgMTI2IGludGVybmVkIHN0cmluZ3MgKGFzIG9mIFB5Mi4zYjEpLgorICAgIEFib3V0IDE1MCBpbnRlcm5lZCBzdHJpbmdzIChhcyBvZiBQeTMuMykuCiAgICAgQSBmZXcga2V5cyBhcmUgYWNjZXNzZWQgbXVjaCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvdGhlcnMuCiAKIFVuaXF1aWZpY2F0aW9uCkBAIC01OSw1NSArNTgsMjAgQEAKICAgICBDaGFyYWN0ZXJpemVkIGJ5IGRlbGV0aW9ucyBpbnRlcnNwZXJzZWQgd2l0aCBhZGRzIGFuZCByZXBsYWNlbWVudHMuCiAgICAgUGVyZm9ybWFuY2UgYmVuZWZpdHMgZ3JlYXRseSBmcm9tIHRoZSByZS11c2Ugb2YgZHVtbXkgZW50cmllcy4KIAorRGF0YSBMYXlvdXQKKy0tLS0tLS0tLS0tCiAKLURhdGEgTGF5b3V0IChhc3N1bWluZyBhIDMyLWJpdCBib3ggd2l0aCA2NCBieXRlcyBwZXIgY2FjaGUgbGluZSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU21hbGxkaWN0cyAoOCBlbnRyaWVzKSBhcmUgYXR0YWNoZWQgdG8gdGhlIGRpY3RvYmplY3Qgc3RydWN0dXJlCi1hbmQgdGhlIHdob2xlIGdyb3VwIG5lYXJseSBmaWxscyB0d28gY29uc2VjdXRpdmUgY2FjaGUgbGluZXMuCi0KLUxhcmdlciBkaWN0cyB1c2UgdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGRpY3RvYmplY3Qgc3RydWN0dXJlIChvbmUgY2FjaGUKLWxpbmUpIGFuZCBhIHNlcGFyYXRlLCBjb250aW51b3VzIGJsb2NrIG9mIGVudHJpZXMgKGF0IDEyIGJ5dGVzIGVhY2gKLWZvciBhIHRvdGFsIG9mIDUuMzMzIGVudHJpZXMgcGVyIGNhY2hlIGxpbmUpLgorRGljdGlvbmFyaWVzIGFyZSBjb21wb3NlZCBvZiAzIGNvbXBvbmVudHM6CitUaGUgZGljdG9iamVjdCBzdHJ1Y3QgaXRzZWxmCitBIGRpY3Qta2V5cyBvYmplY3QgKGtleXMgJiBoYXNoZXMpCitBIHZhbHVlcyBhcnJheQogCiAKIFR1bmFibGUgRGljdGlvbmFyeSBQYXJhbWV0ZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0qIFB5RGljdF9NSU5TSVpFLiAgQ3VycmVudGx5IHNldCB0byA4LgotICAgIE11c3QgYmUgYSBwb3dlciBvZiB0d28uICBOZXcgZGljdHMgaGF2ZSB0byB6ZXJvLW91dCBldmVyeSBjZWxsLgotICAgIEVhY2ggYWRkaXRpb25hbCA4IGNvbnN1bWVzIDEuNSBjYWNoZSBsaW5lcy4gIEluY3JlYXNpbmcgaW1wcm92ZXMKLSAgICB0aGUgc3BhcnNlbmVzcyBvZiBzbWFsbCBkaWN0aW9uYXJpZXMgYnV0IGNvc3RzIHRpbWUgdG8gcmVhZCBpbgotICAgIHRoZSBhZGRpdGlvbmFsIGNhY2hlIGxpbmVzIGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IGluIGNhY2hlLgotICAgIFRoYXQgY2FzZSBpcyBjb21tb24gd2hlbiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkLgotCi0qIE1heGltdW0gZGljdGlvbmFyeSBsb2FkIGluIFB5RGljdF9TZXRJdGVtLiAgQ3VycmVudGx5IHNldCB0byAyLzMuCi0gICAgSW5jcmVhc2luZyB0aGlzIHJhdGlvIG1ha2VzIGRpY3Rpb25hcmllcyBtb3JlIGRlbnNlIHJlc3VsdGluZwotICAgIGluIG1vcmUgY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcyBhdCB0aGUKLSAgICBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCi0gICAgY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCi0KLSAgICBUaGUgbG9hZCB0ZXN0IG9jY3VycyBpbiBoaWdobHkgdGltZSBzZW5zaXRpdmUgY29kZS4gIEVmZm9ydHMKLSAgICB0byBtYWtlIHRoZSB0ZXN0IG1vcmUgY29tcGxleCAoZm9yIGV4YW1wbGUsIHZhcnlpbmcgdGhlIGxvYWQKLSAgICBmb3IgZGlmZmVyZW50IHNpemVzKSBoYXZlIGRlZ3JhZGVkIHBlcmZvcm1hbmNlLgotCi0qIEdyb3d0aCByYXRlIHVwb24gaGl0dGluZyBtYXhpbXVtIGxvYWQuICBDdXJyZW50bHkgc2V0IHRvICoyLgotICAgIFJhaXNpbmcgdGhpcyB0byAqNCByZXN1bHRzIGluIGhhbGYgdGhlIG51bWJlciBvZiByZXNpemVzLAotICAgIGxlc3MgZWZmb3J0IHRvIHJlc2l6ZSwgYmV0dGVyIHNwYXJzZW5lc3MgZm9yIHNvbWUgKGJ1dCBub3QKLSAgICBhbGwgZGljdCBzaXplcyksIGFuZCBwb3RlbnRpYWxseSBkb3VibGVzIG1lbW9yeSBjb25zdW1wdGlvbgotICAgIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgZGljdGlvbmFyeS4gIFNldHRpbmcgdG8gKjQKLSAgICBlbGltaW5hdGVzIGV2ZXJ5IG90aGVyIHJlc2l6ZSBzdGVwLgotCi0qIE1heGltdW0gc3BhcnNlbmVzcyAobWluaW11bSBkaWN0aW9uYXJ5IGxvYWQpLiAgV2hhdCBwZXJjZW50YWdlCi0gICAgb2YgZW50cmllcyBjYW4gYmUgdW51c2VkIGJlZm9yZSB0aGUgZGljdGlvbmFyeSBzaHJpbmtzIHRvCi0gICAgZnJlZSB1cCBtZW1vcnkgYW5kIHNwZWVkIHVwIGl0ZXJhdGlvbj8gIChUaGUgY3VycmVudCBDUHl0aG9uCi0gICAgY29kZSBkb2VzIG5vdCByZXByZXNlbnQgdGhpcyBwYXJhbWV0ZXIgZGlyZWN0bHkuKQotCi0qIFNocmlua2FnZSByYXRlIHVwb24gZXhjZWVkaW5nIG1heGltdW0gc3BhcnNlbmVzcy4gIFRoZSBjdXJyZW50Ci0gICAgQ1B5dGhvbiBjb2RlIG5ldmVyIGV2ZW4gY2hlY2tzIHNwYXJzZW5lc3Mgd2hlbiBkZWxldGluZyBhCi0gICAga2V5LiAgV2hlbiBhIG5ldyBrZXkgaXMgYWRkZWQsIGl0IHJlc2l6ZXMgYmFzZWQgb24gdGhlIG51bWJlcgotICAgIG9mIGFjdGl2ZSBrZXlzLCBzbyB0aGF0IHRoZSBhZGRpdGlvbiBtYXkgdHJpZ2dlciBzaHJpbmthZ2UKLSAgICByYXRoZXIgdGhhbiBncm93dGguCitTZWUgY29tbWVudHMgZm9yIFB5RGljdF9NSU5TSVpFX1NQTElULCBQeURpY3RfTUlOU0laRV9DT01CSU5FRCwKK1VTQUJMRV9GUkFDVElPTiBhbmQgR1JPV1RIX1JBVEUgaW4gZGljdG9iamVjdC5jCiAKIFR1bmUtdXBzIHNob3VsZCBiZSBtZWFzdXJlZCBhY3Jvc3MgYSBicm9hZCByYW5nZSBvZiBhcHBsaWNhdGlvbnMgYW5kCiB1c2UgY2FzZXMuICBBIGNoYW5nZSB0byBhbnkgcGFyYW1ldGVyIHdpbGwgaGVscCBpbiBzb21lIHNpdHVhdGlvbnMgYW5kCkBAIC0xMjYsOCArOTAsOCBAQAogQWxzbywgZXZlcnkgZGljdGlvbmFyeSBpdGVyYXRlcyBhdCBsZWFzdCB0d2ljZSwgb25jZSBmb3IgdGhlIG1lbXNldCgpCiB3aGVuIGl0IGlzIGNyZWF0ZWQgYW5kIG9uY2UgYnkgZGVhbGxvYygpLgogCi1EaWN0aW9uYXJ5IG9wZXJhdGlvbnMgaW52b2x2aW5nIG9ubHkgYSBzaW5nbGUga2V5IGNhbiBiZSBPKDEpIHVubGVzcyAKLXJlc2l6aW5nIGlzIHBvc3NpYmxlLiAgQnkgY2hlY2tpbmcgZm9yIGEgcmVzaXplIG9ubHkgd2hlbiB0aGUgCitEaWN0aW9uYXJ5IG9wZXJhdGlvbnMgaW52b2x2aW5nIG9ubHkgYSBzaW5nbGUga2V5IGNhbiBiZSBPKDEpIHVubGVzcworcmVzaXppbmcgaXMgcG9zc2libGUuICBCeSBjaGVja2luZyBmb3IgYSByZXNpemUgb25seSB3aGVuIHRoZQogZGljdGlvbmFyeSBjYW4gZ3JvdyAoYW5kIG1heSAqcmVxdWlyZSogcmVzaXppbmcpLCBvdGhlciBvcGVyYXRpb25zCiByZW1haW4gTygxKSwgYW5kIHRoZSBvZGRzIG9mIHJlc2l6ZSB0aHJhc2hpbmcgb3IgbWVtb3J5IGZyYWdtZW50YXRpb24KIGFyZSByZWR1Y2VkLiBJbiBwYXJ0aWN1bGFyLCBhbiBhbGdvcml0aG0gdGhhdCBlbXB0aWVzIGEgZGljdGlvbmFyeQpAQCAtMTM1LDEzNiArOTksNTEgQEAKIG5vdCBiZSBuZWNlc3NhcnkgYXQgYWxsIGJlY2F1c2UgdGhlIGRpY3Rpb25hcnkgaXMgZXZlbnR1YWxseQogZGlzY2FyZGVkIGVudGlyZWx5LgogCitUaGUga2V5IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBhbmQgZWFybGllciB2ZXJzaW9ucyBhcmU6CisgICAgMS4gVGhlIHRhYmxlIGNhbiBiZSBzcGxpdCBpbnRvIHR3byBwYXJ0cywgdGhlIGtleXMgYW5kIHRoZSB2YWx1ZXMuCisKKyAgICAyLiBUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIGtleS12YWx1ZSBjb21iaW5hdGlvbjogKGtleSwgTlVMTCkuCisgICAgICAgVW5saWtlICg8ZHVtbXk+LCBOVUxMKSB3aGljaCByZXByZXNlbnRzIGEgZGVsZXRlZCB2YWx1ZSwgKGtleSwgTlVMTCkKKyAgICAgICByZXByZXNlbnRlZCBhIHlldCB0byBiZSBpbnNlcnRlZCB2YWx1ZS4gVGhpcyBjb21iaW5hdGlvbiBjYW4gb25seSBvY2N1cgorICAgICAgIHdoZW4gdGhlIHRhYmxlIGlzIHNwbGl0LgorCisgICAgMy4gTm8gc21hbGwgdGFibGUgZW1iZWRkZWQgaW4gdGhlIGRpY3QsCisgICAgICAgYXMgdGhpcyB3b3VsZCBtYWtlIHNoYXJpbmcgb2Yga2V5LXRhYmxlcyBpbXBvc3NpYmxlLgorCisKK1RoZXNlIGNoYW5nZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGNvbnNlcXVlbmNlcy4KKyAgIDEuIEdlbmVyYWwgZGljdGlvbmFyaWVzIGFyZSBzbGlnaHRseSBsYXJnZXIuCisKKyAgIDIuIEFsbCBvYmplY3QgZGljdGlvbmFyaWVzIG9mIGEgc2luZ2xlIGNsYXNzIGNhbiBzaGFyZSBhIHNpbmdsZSBrZXktdGFibGUsCisgICAgICBzYXZpbmcgYWJvdXQgNjAlIG1lbW9yeSBmb3Igc3VjaCBjYXNlcy4KIAogUmVzdWx0cyBvZiBDYWNoZSBMb2NhbGl0eSBFeHBlcmltZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiBhbiBlbnRyeSBpcyByZXRyaWV2ZWQgZnJvbSBtZW1vcnksIDQuMzMzIGFkamFjZW50IGVudHJpZXMgYXJlIGFsc28KLXJldHJpZXZlZCBpbnRvIGEgY2FjaGUgbGluZS4gIFNpbmNlIGFjY2Vzc2luZyBpdGVtcyBpbiBjYWNoZSBpcyAqbXVjaCoKLWNoZWFwZXIgdGhhbiBhIGNhY2hlIG1pc3MsIGFuIGVudGljaW5nIGlkZWEgaXMgdG8gcHJvYmUgdGhlIGFkamFjZW50Ci1lbnRyaWVzIGFzIGEgZmlyc3Qgc3RlcCBpbiBjb2xsaXNpb24gcmVzb2x1dGlvbi4gIFVuZm9ydHVuYXRlbHksIHRoZQotaW50cm9kdWN0aW9uIG9mIGFueSByZWd1bGFyaXR5IGludG8gY29sbGlzaW9uIHNlYXJjaGVzIHJlc3VsdHMgaW4gbW9yZQotY29sbGlzaW9ucyB0aGFuIHRoZSBjdXJyZW50IHJhbmRvbSBjaGFpbmluZyBhcHByb2FjaC4KK0V4cGVyaW1lbnRzIG9uIGFuIGVhcmxpZXIgZGVzaWduIG9mIGRpY3Rpb25hcnksIGluIHdoaWNoIGFsbCB0YWJsZXMgd2VyZQorY29tYmluZWQsIHNob3dlZCB0aGUgZm9sbG93aW5nOgogCi1FeHBsb2l0aW5nIGNhY2hlIGxvY2FsaXR5IGF0IHRoZSBleHBlbnNlIG9mIGFkZGl0aW9uYWwgY29sbGlzaW9ucyBmYWlscwotdG8gcGF5b2ZmIHdoZW4gdGhlIGVudHJpZXMgYXJlIGFscmVhZHkgbG9hZGVkIGluIGNhY2hlICh0aGUgZXhwZW5zZQotaXMgcGFpZCB3aXRoIG5vIGNvbXBlbnNhdGluZyBiZW5lZml0KS4gIFRoaXMgb2NjdXJzIGluIHNtYWxsIGRpY3Rpb25hcmllcwotd2hlcmUgdGhlIHdob2xlIGRpY3Rpb25hcnkgZml0cyBpbnRvIGEgcGFpciBvZiBjYWNoZSBsaW5lcy4gIEl0IGFsc28KLW9jY3VycyBmcmVxdWVudGx5IGluIGxhcmdlIGRpY3Rpb25hcmllcyB3aGljaCBoYXZlIGEgY29tbW9uIGFjY2VzcyBwYXR0ZXJuCi13aGVyZSBzb21lIGtleXMgYXJlIGFjY2Vzc2VkIG11Y2ggbW9yZSBmcmVxdWVudGx5IHRoYW4gb3RoZXJzLiAgVGhlCi1tb3JlIHBvcHVsYXIgZW50cmllcyAqYW5kKiB0aGVpciBjb2xsaXNpb24gY2hhaW5zIHRlbmQgdG8gcmVtYWluIGluIGNhY2hlLgorICBXaGVuIGFuIGVudHJ5IGlzIHJldHJpZXZlZCBmcm9tIG1lbW9yeSwgc2V2ZXJhbCBhZGphY2VudCBlbnRyaWVzIGFyZSBhbHNvCisgIHJldHJpZXZlZCBpbnRvIGEgY2FjaGUgbGluZS4gIFNpbmNlIGFjY2Vzc2luZyBpdGVtcyBpbiBjYWNoZSBpcyAqbXVjaCoKKyAgY2hlYXBlciB0aGFuIGEgY2FjaGUgbWlzcywgYW4gZW50aWNpbmcgaWRlYSBpcyB0byBwcm9iZSB0aGUgYWRqYWNlbnQKKyAgZW50cmllcyBhcyBhIGZpcnN0IHN0ZXAgaW4gY29sbGlzaW9uIHJlc29sdXRpb24uICBVbmZvcnR1bmF0ZWx5LCB0aGUKKyAgaW50cm9kdWN0aW9uIG9mIGFueSByZWd1bGFyaXR5IGludG8gY29sbGlzaW9uIHNlYXJjaGVzIHJlc3VsdHMgaW4gbW9yZQorICBjb2xsaXNpb25zIHRoYW4gdGhlIGN1cnJlbnQgcmFuZG9tIGNoYWluaW5nIGFwcHJvYWNoLgogCi1UbyBleHBsb2l0IGNhY2hlIGxvY2FsaXR5LCBjaGFuZ2UgdGhlIGNvbGxpc2lvbiByZXNvbHV0aW9uIHNlY3Rpb24KLWluIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpLiAgU2V0IGlePTEgYXQgdGhlIHRvcCBvZiB0aGUKLWxvb3AgYW5kIG1vdmUgdGhlICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEgdG8gYW4gdW5yb2xsZWQKLXZlcnNpb24gb2YgdGhlIGxvb3AuCisgIEV4cGxvaXRpbmcgY2FjaGUgbG9jYWxpdHkgYXQgdGhlIGV4cGVuc2Ugb2YgYWRkaXRpb25hbCBjb2xsaXNpb25zIGZhaWxzCisgIHRvIHBheW9mZiB3aGVuIHRoZSBlbnRyaWVzIGFyZSBhbHJlYWR5IGxvYWRlZCBpbiBjYWNoZSAodGhlIGV4cGVuc2UKKyAgaXMgcGFpZCB3aXRoIG5vIGNvbXBlbnNhdGluZyBiZW5lZml0KS4gIFRoaXMgb2NjdXJzIGluIHNtYWxsIGRpY3Rpb25hcmllcworICB3aGVyZSB0aGUgd2hvbGUgZGljdGlvbmFyeSBmaXRzIGludG8gYSBwYWlyIG9mIGNhY2hlIGxpbmVzLiAgSXQgYWxzbworICBvY2N1cnMgZnJlcXVlbnRseSBpbiBsYXJnZSBkaWN0aW9uYXJpZXMgd2hpY2ggaGF2ZSBhIGNvbW1vbiBhY2Nlc3MgcGF0dGVybgorICB3aGVyZSBzb21lIGtleXMgYXJlIGFjY2Vzc2VkIG11Y2ggbW9yZSBmcmVxdWVudGx5IHRoYW4gb3RoZXJzLiAgVGhlCisgIG1vcmUgcG9wdWxhciBlbnRyaWVzICphbmQqIHRoZWlyIGNvbGxpc2lvbiBjaGFpbnMgdGVuZCB0byByZW1haW4gaW4gY2FjaGUuCiAKLVRoaXMgb3B0aW1pemF0aW9uIHN0cmF0ZWd5IGNhbiBiZSBsZXZlcmFnZWQgaW4gc2V2ZXJhbCB3YXlzOgorICBUbyBleHBsb2l0IGNhY2hlIGxvY2FsaXR5LCBjaGFuZ2UgdGhlIGNvbGxpc2lvbiByZXNvbHV0aW9uIHNlY3Rpb24KKyAgaW4gbG9va2RpY3QoKSBhbmQgbG9va2RpY3Rfc3RyaW5nKCkuICBTZXQgaV49MSBhdCB0aGUgdG9wIG9mIHRoZQorICBsb29wIGFuZCBtb3ZlIHRoZSAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxIHRvIGFuIHVucm9sbGVkCisgIHZlcnNpb24gb2YgdGhlIGxvb3AuCiAKLSogSWYgdGhlIGRpY3Rpb25hcnkgaXMga2VwdCBzcGFyc2UgKHRocm91Z2ggdGhlIHR1bmFibGUgcGFyYW1ldGVycyksCi10aGVuIHRoZSBvY2N1cnJlbmNlIG9mIGFkZGl0aW9uYWwgY29sbGlzaW9ucyBpcyBsZXNzZW5lZC4KLQotKiBJZiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKSBhcmUgc3BlY2lhbGl6ZWQgZm9yIHNtYWxsIGRpY3RzCi1hbmQgZm9yIGxhcmdlZGljdHMsIHRoZW4gdGhlIHZlcnNpb25zIGZvciBsYXJnZV9kaWN0cyBjYW4gYmUgZ2l2ZW4KLWFuIGFsdGVybmF0ZSBzZWFyY2ggc3RyYXRlZ3kgd2l0aG91dCBpbmNyZWFzaW5nIGNvbGxpc2lvbnMgaW4gc21hbGwgZGljdHMKLXdoaWNoIGFscmVhZHkgaGF2ZSB0aGUgbWF4aW11bSBiZW5lZml0IG9mIGNhY2hlIGxvY2FsaXR5LgotCi0qIElmIHRoZSB1c2UgY2FzZSBmb3IgYSBkaWN0aW9uYXJ5IGlzIGtub3duIHRvIGhhdmUgYSByYW5kb20ga2V5Ci1hY2Nlc3MgcGF0dGVybiAoYXMgb3Bwb3NlZCB0byBhIG1vcmUgY29tbW9uIHBhdHRlcm4gd2l0aCBhIFppcGYncyBsYXcKLWRpc3RyaWJ1dGlvbiksIHRoZW4gdGhlcmUgd2lsbCBiZSBtb3JlIGJlbmVmaXQgZm9yIGxhcmdlIGRpY3Rpb25hcmllcwotYmVjYXVzZSBhbnkgZ2l2ZW4ga2V5IGlzIG5vIG1vcmUgbGlrZWx5IHRoYW4gYW5vdGhlciB0byBhbHJlYWR5IGJlCi1pbiBjYWNoZS4KLQotKiBJbiB1c2UgY2FzZXMgd2l0aCBwYWlyZWQgYWNjZXNzZXMgdG8gdGhlIHNhbWUga2V5LCB0aGUgc2Vjb25kIGFjY2VzcwotaXMgYWx3YXlzIGluIGNhY2hlIGFuZCBnZXRzIG5vIGJlbmVmaXQgZnJvbSBlZmZvcnRzIHRvIGZ1cnRoZXIgaW1wcm92ZQotY2FjaGUgbG9jYWxpdHkuCi0KLU9wdGltaXppbmcgdGhlIFNlYXJjaCBvZiBTbWFsbCBEaWN0aW9uYXJpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSWYgbG9va2RpY3QoKSBhbmQgbG9va2RpY3Rfc3RyaW5nKCkgYXJlIHNwZWNpYWxpemVkIGZvciBzbWFsbGVyIGRpY3Rpb25hcmllcywKLXRoZW4gYSBjdXN0b20gc2VhcmNoIGFwcHJvYWNoIGNhbiBiZSBpbXBsZW1lbnRlZCB0aGF0IGV4cGxvaXRzIHRoZSBzbWFsbAotc2VhcmNoIHNwYWNlIGFuZCBjYWNoZSBsb2NhbGl0eS4KLQotKiBUaGUgc2ltcGxlc3QgZXhhbXBsZSBpcyBhIGxpbmVhciBzZWFyY2ggb2YgY29udGlndW91cyBlbnRyaWVzLiAgVGhpcyBpcwotICBzaW1wbGUgdG8gaW1wbGVtZW50LCBndWFyYW50ZWVkIHRvIHRlcm1pbmF0ZSByYXBpZGx5LCBuZXZlciBzZWFyY2hlcwotICB0aGUgc2FtZSBlbnRyeSB0d2ljZSwgYW5kIHByZWNsdWRlcyB0aGUgbmVlZCB0byBjaGVjayBmb3IgZHVtbXkgZW50cmllcy4KLQotKiBBIG1vcmUgYWR2YW5jZWQgZXhhbXBsZSBpcyBhIHNlbGYtb3JnYW5pemluZyBzZWFyY2ggc28gdGhhdCB0aGUgbW9zdAotICBmcmVxdWVudGx5IGFjY2Vzc2VkIGVudHJpZXMgZ2V0IHByb2JlZCBmaXJzdC4gIFRoZSBvcmdhbml6YXRpb24KLSAgYWRhcHRzIGlmIHRoZSBhY2Nlc3MgcGF0dGVybiBjaGFuZ2VzIG92ZXIgdGltZS4gIFRyZWFwcyBhcmUgaWRlYWxseQotICBzdWl0ZWQgZm9yIHNlbGYtb3JnYW5pemF0aW9uIHdpdGggdGhlIG1vc3QgY29tbW9uIGVudHJpZXMgYXQgdGhlCi0gIHRvcCBvZiB0aGUgaGVhcCBhbmQgYSByYXBpZCBiaW5hcnkgc2VhcmNoIHBhdHRlcm4uICBNb3N0IHByb2JlcyBhbmQKLSAgcmVzdWx0cyBhcmUgYWxsIGxvY2F0ZWQgYXQgdGhlIHRvcCBvZiB0aGUgdHJlZSBhbGxvd2luZyB0aGVtIGFsbCB0bwotICBiZSBsb2NhdGVkIGluIG9uZSBvciB0d28gY2FjaGUgbGluZXMuCi0KLSogQWxzbywgc21hbGwgZGljdGlvbmFyaWVzIG1heSBiZSBtYWRlIG1vcmUgZGVuc2UsIHBlcmhhcHMgZmlsbGluZyBhbGwKLSAgZWlnaHQgY2VsbHMgdG8gdGFrZSB0aGUgbWF4aW11bSBhZHZhbnRhZ2Ugb2YgdHdvIGNhY2hlIGxpbmVzLgorRm9yIHNwbGl0IHRhYmxlcywgdGhlIGFib3ZlIHdpbGwgYXBwbHkgdG8gdGhlIGtleXMsIGJ1dCB0aGUgdmFsdWUgd2lsbAorYWx3YXlzIGJlIGluIGEgZGlmZmVyZW50IGNhY2hlIGxpbmUgZnJvbSB0aGUga2V5LgogCiAKLVN0cmF0ZWd5IFBhdHRlcm4KLS0tLS0tLS0tLS0tLS0tLS0KLQotQ29uc2lkZXIgYWxsb3dpbmcgdGhlIHVzZXIgdG8gc2V0IHRoZSB0dW5hYmxlIHBhcmFtZXRlcnMgb3IgdG8gc2VsZWN0IGEKLXBhcnRpY3VsYXIgc2VhcmNoIG1ldGhvZC4gIFNpbmNlIHNvbWUgZGljdGlvbmFyeSB1c2UgY2FzZXMgaGF2ZSBrbm93bgotc2l6ZXMgYW5kIGFjY2VzcyBwYXR0ZXJucywgdGhlIHVzZXIgbWF5IGJlIGFibGUgdG8gcHJvdmlkZSB1c2VmdWwgaGludHMuCi0KLTEpIEZvciBleGFtcGxlLCBpZiBtZW1iZXJzaGlwIHRlc3Rpbmcgb3IgbG9va3VwcyBkb21pbmF0ZSBydW50aW1lIGFuZCBtZW1vcnkKLSAgIGlzIG5vdCBhdCBhIHByZW1pdW0sIHRoZSB1c2VyIG1heSBiZW5lZml0IGZyb20gc2V0dGluZyB0aGUgbWF4aW11bSBsb2FkCi0gICByYXRpbyBhdCA1JSBvciAxMCUgaW5zdGVhZCBvZiB0aGUgdXN1YWwgNjYuNyUuICBUaGlzIHdpbGwgc2hhcnBseQotICAgY3VydGFpbCB0aGUgbnVtYmVyIG9mIGNvbGxpc2lvbnMgYnV0IHdpbGwgaW5jcmVhc2UgaXRlcmF0aW9uIHRpbWUuCi0gICBUaGUgYnVpbHRpbiBuYW1lc3BhY2UgaXMgYSBwcmltZSBleGFtcGxlIG9mIGEgZGljdGlvbmFyeSB0aGF0IGNhbgotICAgYmVuZWZpdCBmcm9tIGJlaW5nIGhpZ2hseSBzcGFyc2UuCi0KLTIpIERpY3Rpb25hcnkgY3JlYXRpb24gdGltZSBjYW4gYmUgc2hvcnRlbmVkIGluIGNhc2VzIHdoZXJlIHRoZSB1bHRpbWF0ZQotICAgc2l6ZSBvZiB0aGUgZGljdGlvbmFyeSBpcyBrbm93biBpbiBhZHZhbmNlLiAgVGhlIGRpY3Rpb25hcnkgY2FuIGJlCi0gICBwcmUtc2l6ZWQgc28gdGhhdCBubyByZXNpemUgb3BlcmF0aW9ucyBhcmUgcmVxdWlyZWQgZHVyaW5nIGNyZWF0aW9uLgotICAgTm90IG9ubHkgZG9lcyB0aGlzIHNhdmUgcmVzaXplcywgYnV0IHRoZSBrZXkgaW5zZXJ0aW9uIHdpbGwgZ28KLSAgIG1vcmUgcXVpY2tseSBiZWNhdXNlIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBrZXlzIHdpbGwgYmUgaW5zZXJ0ZWQgaW50bwotICAgYSBtb3JlIHNwYXJzZSBlbnZpcm9ubWVudCB0aGFuIGJlZm9yZS4gIFRoZSBwcmVjb25kaXRpb25zIGZvciB0aGlzCi0gICBzdHJhdGVneSBhcmlzZSB3aGVuZXZlciBhIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCBmcm9tIGEga2V5IG9yIGl0ZW0KLSAgIHNlcXVlbmNlIGFuZCB0aGUgbnVtYmVyIG9mICp1bmlxdWUqIGtleXMgaXMga25vd24uCi0KLTMpIElmIHRoZSBrZXkgc3BhY2UgaXMgbGFyZ2UgYW5kIHRoZSBhY2Nlc3MgcGF0dGVybiBpcyBrbm93biB0byBiZSByYW5kb20sCi0gICB0aGVuIHNlYXJjaCBzdHJhdGVnaWVzIGV4cGxvaXRpbmcgY2FjaGUgbG9jYWxpdHkgY2FuIGJlIGZydWl0ZnVsLgotICAgVGhlIHByZWNvbmRpdGlvbnMgZm9yIHRoaXMgc3RyYXRlZ3kgYXJpc2UgaW4gc2ltdWxhdGlvbnMgYW5kCi0gICBudW1lcmljYWwgYW5hbHlzaXMuCi0KLTQpIElmIHRoZSBrZXlzIGFyZSBmaXhlZCBhbmQgdGhlIGFjY2VzcyBwYXR0ZXJuIHN0cm9uZ2x5IGZhdm9ycyBzb21lIG9mCi0gICB0aGUga2V5cywgdGhlbiB0aGUgZW50cmllcyBjYW4gYmUgc3RvcmVkIGNvbnRpZ3VvdXNseSBhbmQgYWNjZXNzZWQKLSAgIHdpdGggYSBsaW5lYXIgc2VhcmNoIG9yIHRyZWFwLiAgVGhpcyBleHBsb2l0cyBrbm93bGVkZ2Ugb2YgdGhlIGRhdGEsCi0gICBjYWNoZSBsb2NhbGl0eSwgYW5kIGEgc2ltcGxpZmllZCBzZWFyY2ggcm91dGluZS4gIEl0IGFsc28gZWxpbWluYXRlcwotICAgdGhlIG5lZWQgdG8gdGVzdCBmb3IgZHVtbXkgZW50cmllcyBvbiBlYWNoIHByb2JlLiAgVGhlIHByZWNvbmRpdGlvbnMKLSAgIGZvciB0aGlzIHN0cmF0ZWd5IGFyaXNlIGluIHN5bWJvbCB0YWJsZXMgYW5kIGluIHRoZSBidWlsdGluIGRpY3Rpb25hcnkuCi0KLQotUmVhZG9ubHkgRGljdGlvbmFyaWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVNvbWUgZGljdGlvbmFyeSB1c2UgY2FzZXMgcGFzcyB0aHJvdWdoIGEgYnVpbGQgc3RhZ2UgYW5kIHRoZW4gbW92ZSB0byBhCi1tb3JlIGhlYXZpbHkgZXhlcmNpc2VkIGxvb2t1cCBzdGFnZSB3aXRoIG5vIGZ1cnRoZXIgY2hhbmdlcyB0byB0aGUKLWRpY3Rpb25hcnkuCi0KLUFuIGlkZWEgdGhhdCBlbWVyZ2VkIG9uIHB5dGhvbi1kZXYgaXMgdG8gYmUgYWJsZSB0byBjb252ZXJ0IGEgZGljdGlvbmFyeQotdG8gYSByZWFkLW9ubHkgc3RhdGUuICBUaGlzIGNhbiBoZWxwIHByZXZlbnQgcHJvZ3JhbW1pbmcgZXJyb3JzIGFuZCBhbHNvCi1wcm92aWRlIGtub3dsZWRnZSB0aGF0IGNhbiBiZSBleHBsb2l0ZWQgZm9yIGxvb2t1cCBvcHRpbWl6YXRpb24uCi0KLVRoZSBkaWN0aW9uYXJ5IGNhbiBiZSBpbW1lZGlhdGVseSByZWJ1aWx0IChlbGltaW5hdGluZyBkdW1teSBlbnRyaWVzKSwKLXJlc2l6ZWQgKHRvIGFuIGFwcHJvcHJpYXRlIGxldmVsIG9mIHNwYXJzZW5lc3MpLCBhbmQgdGhlIGtleXMgY2FuIGJlCi1qb3N0bGVkICh0byBtaW5pbWl6ZSBjb2xsaXNpb25zKS4gIFRoZSBsb29rZGljdCgpIHJvdXRpbmUgY2FuIHRoZW4KLWVsaW1pbmF0ZSB0aGUgdGVzdCBmb3IgZHVtbXkgZW50cmllcyAoc2F2aW5nIGFib3V0IDEvNCBvZiB0aGUgdGltZQotc3BlbnQgaW4gdGhlIGNvbGxpc2lvbiByZXNvbHV0aW9uIGxvb3ApLgotCi1BbiBhZGRpdGlvbmFsIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCBsaW5rcyBpbnRvIHRoZSBlbXB0eSBzcGFjZXMKLXNvIHRoYXQgZGljdGlvbmFyeSBpdGVyYXRpb24gY2FuIHByb2NlZWQgaW4gbGVuKGQpIHN0ZXBzIGluc3RlYWQgb2YKLShtcC0+bWFzayArIDEpIHN0ZXBzLiAgQWx0ZXJuYXRpdmVseSwgYSBzZXBhcmF0ZSB0dXBsZSBvZiBrZXlzIGNhbiBiZQota2VwdCBqdXN0IGZvciBpdGVyYXRpb24uCi0KLQotQ2FjaGluZyBMb29rdXBzCi0tLS0tLS0tLS0tLS0tLS0KLVRoZSBpZGVhIGlzIHRvIGV4cGxvaXQga2V5IGFjY2VzcyBwYXR0ZXJucyBieSBhbnRpY2lwYXRpbmcgZnV0dXJlIGxvb2t1cHMKLWJhc2VkIG9uIHByZXZpb3VzIGxvb2t1cHMuCi0KLVRoZSBzaW1wbGVzdCBpbmNhcm5hdGlvbiBpcyB0byBzYXZlIHRoZSBtb3N0IHJlY2VudGx5IGFjY2Vzc2VkIGVudHJ5LgotVGhpcyBnaXZlcyBvcHRpbWFsIHBlcmZvcm1hbmNlIGZvciB1c2UgY2FzZXMgd2hlcmUgZXZlcnkgZ2V0IGlzIGZvbGxvd2VkCi1ieSBhIHNldCBvciBkZWwgdG8gdGhlIHNhbWUga2V5LgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBjMTBiZmNjLi5mNGFkM2RjIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtNyw5ICs3LDkzIEBACiAgICB0dW5pbmcgZGljdGlvbmFyaWVzLCBhbmQgc2V2ZXJhbCBpZGVhcyBmb3IgcG9zc2libGUgb3B0aW1pemF0aW9ucy4KICovCiAKKworLyoKK1RoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIHNsb3RzIGluIHRoZSB0YWJsZToKKworMS4gVW51c2VkLiAgbWVfa2V5ID09IG1lX3ZhbHVlID09IE5VTEwKKyAgIERvZXMgbm90IGhvbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyIG5vdyBhbmQgbmV2ZXIgZGlkLiAgVW51c2VkIGNhbgorICAgdHJhbnNpdGlvbiB0byBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoCisgICBtZV9rZXkgaXMgTlVMTCwgYW5kIGlzIGVhY2ggc2xvdCdzIGluaXRpYWwgc3RhdGUuCisKKzIuIEFjdGl2ZS4gIG1lX2tleSAhPSBOVUxMIGFuZCBtZV9rZXkgIT0gZHVtbXkgYW5kIG1lX3ZhbHVlICE9IE5VTEwKKyAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSBvcgorICAgUGVuZGluZyB1cG9uIGtleSBkZWxldGlvbiAoZm9yIGNvbWJpbmVkIGFuZCBzcGxpdCB0YWJsZXMgcmVzcGVjdGl2ZWx5KS4KKyAgIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgorCiszLiBEdW1teS4gIG1lX2tleSA9PSBkdW1teSBhbmQgbWVfdmFsdWUgPT0gTlVMTAorICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCisgICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCisgICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCisgICAoY2Fubm90IGhhdmUgbWVfa2V5IHNldCB0byBOVUxMKSwgZWxzZSB0aGUgcHJvYmUgc2VxdWVuY2UgaW4gY2FzZSBvZgorICAgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cgdGhleSB3ZXJlIG9uY2UgYWN0aXZlLgorCis0LiBQZW5kaW5nLiBOb3QgeWV0IGluc2VydGVkIG9yIGRlbGV0ZWQgZnJvbSBhIHNwbGl0LXRhYmxlLgorICAga2V5ICE9IE5VTEwsIGtleSAhPSBkdW1teSBhbmQgdmFsdWUgPT0gTlVMTAorCitUaGUgRGljdE9iamVjdCBjYW4gYmUgaW4gb25lIG9mIHR3byBmb3Jtcy4KK0VpdGhlcjoKKyAgQSBjb21iaW5lZCB0YWJsZToKKyAgICBtYV92YWx1ZXMgPT0gTlVMTCwgZGtfcmVmY250ID09IDEuCisgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1lX3ZhbHVlIGZpZWxkIG9mIHRoZSBQeURpY3RLZXlzT2JqZWN0LgorICAgIFNsb3Qga2luZCA0IGlzIG5vdCBhbGxvd2VkIGkuZS4KKyAgICAgICAga2V5ICE9IE5VTEwsIGtleSAhPSBkdW1teSBhbmQgdmFsdWUgPT0gTlVMTCBpcyBpbGxlZ2FsLgorT3I6CisgIEEgc3BsaXQgdGFibGU6CisgICAgbWFfdmFsdWVzICE9IE5VTEwsIGRrX3JlZmNudCA+PSAxCisgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1hX3ZhbHVlcyBhcnJheS4KKyAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZCwgbm8gPGR1bW15PiBrZXlzIGFyZSBwcmVzZW50LgorCitOb3RlOiAucG9waXRlbSgpIGFidXNlcyB0aGUgbWVfaGFzaCBmaWVsZCBvZiBhbiBVbnVzZWQgb3IgRHVtbXkgc2xvdCB0bworaG9sZCBhIHNlYXJjaCBmaW5nZXIuICBUaGUgbWVfaGFzaCBmaWVsZCBvZiBVbnVzZWQgb3IgRHVtbXkgc2xvdHMgaGFzIG5vCittZWFuaW5nIG90aGVyd2lzZS4gQXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzIHBvcGl0ZW0gYWx3YXlzIGNvbnZlcnRzIHRoZSBkaWN0Cit0byB0aGUgY29tYmluZWQtdGFibGUgZm9ybS4KKyovCisKKy8qIFB5RGljdF9NSU5TSVpFX1NQTElUIGlzIHRoZSBtaW5pbXVtIHNpemUgb2YgYSBzcGxpdCBkaWN0aW9uYXJ5LgorICogSXQgbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGFuZCBhdCBsZWFzdCA0LgorICogUmVzaXppbmcgb2Ygc3BsaXQgZGljdGlvbmFyaWVzIGlzIHZlcnkgcmFyZSwgc28gdGhlIHNhdmluZyBtZW1vcnkgaXMgbW9yZQorICogaW1wb3J0YW50IHRoYW4gdGhlIGNvc3Qgb2YgcmVzaXppbmcuCisgKi8KKyNkZWZpbmUgUHlEaWN0X01JTlNJWkVfU1BMSVQgNAorCisvKiBQeURpY3RfTUlOU0laRV9DT01CSU5FRCBpcyB0aGUgc3RhcnRpbmcgc2l6ZSBmb3IgYW55IG5ldywgbm9uLXNwbGl0IGRpY3QuCisgKiA4IGFsbG93cyBkaWN0cyB3aXRoIG5vIG1vcmUgdGhhbiA1IGFjdGl2ZSBlbnRyaWVzOyBleHBlcmltZW50cyBzdWdnZXN0ZWQKKyAqIHRoaXMgc3VmZmljZXMgZm9yIHRoZSBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbAorICogZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KKyAqIE1ha2luZyB0aGlzIDgsIHJhdGhlciB0aGFuIDQgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMgZm9yIG1vc3QKKyAqIGRpY3Rpb25hcmllcywgd2l0aG91dCBhbnkgc2lnbmlmaWNhbnQgZXh0cmEgbWVtb3J5IHVzZS4KKyAqLworI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgbWVfa2V5LiAqLworICAgIFB5X2hhc2hfdCBtZV9oYXNoOworICAgIFB5T2JqZWN0ICptZV9rZXk7CisgICAgUHlPYmplY3QgKm1lX3ZhbHVlOyAvKiBUaGlzIGZpZWxkIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgY29tYmluZWQgdGFibGVzICovCit9IFB5RGljdEtleUVudHJ5OworCit0eXBlZGVmIFB5RGljdEtleUVudHJ5ICooKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworCitzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKKyAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKyAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisgICAgZGljdF9sb29rdXBfZnVuYyBka19sb29rdXA7CisgICAgUHlfc3NpemVfdCBka191c2FibGU7CisgICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKK307CisKKworLyoKK1RvIGVuc3VyZSB0aGUgbG9va3VwIGFsZ29yaXRobSB0ZXJtaW5hdGVzLCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBVbnVzZWQKK3Nsb3QgKE5VTEwga2V5KSBpbiB0aGUgdGFibGUuCitUbyBhdm9pZCBzbG93aW5nIGRvd24gbG9va3VwcyBvbiBhIG5lYXItZnVsbCB0YWJsZSwgd2UgcmVzaXplIHRoZSB0YWJsZSB3aGVuCitpdCdzIFVTQUJMRV9GUkFDVElPTiAoY3VycmVudGx5IHR3by10aGlyZHMpIGZ1bGwuCisqLwogCiAvKiBTZXQgYSBrZXkgZXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50LCB3cmFwcGluZyBpdCBpbiBhCiAgKiB0dXBsZSBhdXRvbWF0aWNhbGx5IHNvIHRoYXQgdHVwbGUga2V5cyBhcmUgbm90IHVucGFja2VkIGFzIHRoZQpAQCAtMjUsMTAgKzEwOSw2IEBACiAgICAgUHlfREVDUkVGKHR1cCk7CiB9CiAKLS8qIERlZmluZSB0aGlzIG91dCBpZiB5b3UgZG9uJ3Qgd2FudCBjb252ZXJzaW9uIHN0YXRpc3RpY3Mgb24gZXhpdC4gKi8KLSN1bmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0KLS8qIFNlZSBsYXJnZSBjb21tZW50IGJsb2NrIGJlbG93LiAgVGhpcyBtdXN0IGJlID49IDEuICovCiAjZGVmaW5lIFBFUlRVUkJfU0hJRlQgNQogCiAvKgpAQCAtMTI2LDggKzIwNiwxMyBAQAogCiAqLwogCi0vKiBPYmplY3QgdXNlZCBhcyBkdW1teSBrZXkgdG8gZmlsbCBkZWxldGVkIGVudHJpZXMgKi8KLXN0YXRpYyBQeU9iamVjdCAqZHVtbXkgPSBOVUxMOyAvKiBJbml0aWFsaXplZCBieSBmaXJzdCBjYWxsIHRvIG5ld1B5RGljdE9iamVjdCgpICovCisvKiBPYmplY3QgdXNlZCBhcyBkdW1teSBrZXkgdG8gZmlsbCBkZWxldGVkIGVudHJpZXMKKyAqIFRoaXMgY291bGQgYmUgYW55IHVuaXF1ZSBvYmplY3QsCisgKiB1c2UgYSBjdXN0b20gdHlwZSBpbiBvcmRlciB0byBtaW5pbWlzZSBjb3VwbGluZy4KKyovCitzdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdDsKKworI2RlZmluZSBkdW1teSAoJl9kdW1teV9zdHJ1Y3QpCiAKICNpZmRlZiBQeV9SRUZfREVCVUcKIFB5T2JqZWN0ICoKQEAgLTEzOCw3NyArMjIzLDE3IEBACiAjZW5kaWYKIAogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLXN0YXRpYyBQeURpY3RFbnRyeSAqCi1sb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKTsKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwogCi0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotc3RhdGljIGxvbmcgY3JlYXRlZCA9IDBMOwotc3RhdGljIGxvbmcgY29udmVydGVkID0gMEw7Ci0KLXN0YXRpYyB2b2lkCi1zaG93X2NvdW50cyh2b2lkKQotewotICAgIGZwcmludGYoc3RkZXJyLCAiY3JlYXRlZCAlbGQgc3RyaW5nIGRpY3RzXG4iLCBjcmVhdGVkKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNvbnZlcnRlZCAlbGQgdG8gbm9ybWFsIGRpY3RzXG4iLCBjb252ZXJ0ZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiJS4yZiUlIGNvbnZlcnNpb24gcmF0ZVxuIiwgKDEwMC4wKmNvbnZlcnRlZCkvY3JlYXRlZCk7Ci19Ci0jZW5kaWYKLQotLyogRGVidWcgc3RhdGlzdGljIHRvIGNvbXBhcmUgYWxsb2NhdGlvbnMgd2l0aCByZXVzZSB0aHJvdWdoIHRoZSBmcmVlIGxpc3QgKi8KLSN1bmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0jaWZkZWYgU0hPV19BTExPQ19DT1VOVAotc3RhdGljIHNpemVfdCBjb3VudF9hbGxvYyA9IDA7Ci1zdGF0aWMgc2l6ZV90IGNvdW50X3JldXNlID0gMDsKLQotc3RhdGljIHZvaWQKLXNob3dfYWxsb2Modm9pZCkKLXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRpY3QgYWxsb2NhdGlvbnM6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCi0gICAgICAgIGNvdW50X2FsbG9jKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRpY3QgcmV1c2UgdGhyb3VnaCBmcmVlbGlzdDogJSIgUFlfRk9STUFUX1NJWkVfVAotICAgICAgICAiZFxuIiwgY291bnRfcmV1c2UpOwotICAgIGZwcmludGYoc3RkZXJyLCAiJS4yZiUlIHJldXNlIHJhdGVcblxuIiwKLSAgICAgICAgKDEwMC4wKmNvdW50X3JldXNlLyhjb3VudF9hbGxvYytjb3VudF9yZXVzZSkpKTsKLX0KLSNlbmRpZgotCi0vKiBEZWJ1ZyBzdGF0aXN0aWMgdG8gY291bnQgR0MgdHJhY2tpbmcgb2YgZGljdHMgKi8KLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi1zdGF0aWMgUHlfc3NpemVfdCBjb3VudF91bnRyYWNrZWQgPSAwOwotc3RhdGljIFB5X3NzaXplX3QgY291bnRfdHJhY2tlZCA9IDA7Ci0KLXN0YXRpYyB2b2lkCi1zaG93X3RyYWNrKHZvaWQpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0cyBjcmVhdGVkOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLAotICAgICAgICBjb3VudF90cmFja2VkICsgY291bnRfdW50cmFja2VkKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRpY3RzIHRyYWNrZWQgYnkgdGhlIEdDOiAlIiBQWV9GT1JNQVRfU0laRV9UCi0gICAgICAgICJkXG4iLCBjb3VudF90cmFja2VkKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiUuMmYlJSBkaWN0IHRyYWNraW5nIHJhdGVcblxuIiwKLSAgICAgICAgKDEwMC4wKmNvdW50X3RyYWNrZWQvKGNvdW50X3VudHJhY2tlZCtjb3VudF90cmFja2VkKSkpOwotfQotI2VuZGlmCi0KLQotLyogSW5pdGlhbGl6YXRpb24gbWFjcm9zLgotICAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGNyZWF0ZSBhIGRpY3Q6ICBQeURpY3RfTmV3KCkgaXMgdGhlIG1haW4gQyBBUEkKLSAgIGZ1bmN0aW9uLCBhbmQgdGhlIHRwX25ldyBzbG90IG1hcHMgdG8gZGljdF9uZXcoKS4gIEluIHRoZSBsYXR0ZXIgY2FzZSB3ZQotICAgY2FuIHNhdmUgYSBsaXR0bGUgdGltZSBvdmVyIHdoYXQgUHlEaWN0X05ldyBkb2VzIGJlY2F1c2UgaXQncyBndWFyYW50ZWVkCi0gICB0aGF0IHRoZSBQeURpY3RPYmplY3Qgc3RydWN0IGlzIGFscmVhZHkgemVyb2VkIG91dC4KLSAgIEV2ZXJ5b25lIGV4Y2VwdCBkaWN0X25ldygpIHNob3VsZCB1c2UgRU1QVFlfVE9fTUlOU0laRSAodW5sZXNzIHRoZXkgaGF2ZQotICAgYW4gZXhjZWxsZW50IHJlYXNvbiBub3QgdG8pLgotKi8KLQotI2RlZmluZSBJTklUX05PTlpFUk9fRElDVF9TTE9UUyhtcCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChtcCktPm1hX3RhYmxlID0gKG1wKS0+bWFfc21hbGx0YWJsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChtcCktPm1hX21hc2sgPSBQeURpY3RfTUlOU0laRSAtIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQotI2RlZmluZSBFTVBUWV9UT19NSU5TSVpFKG1wKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG1lbXNldCgobXApLT5tYV9zbWFsbHRhYmxlLCAwLCBzaXplb2YoKG1wKS0+bWFfc21hbGx0YWJsZSkpOyAgICAgICAgXAotICAgIChtcCktPm1hX3VzZWQgPSAobXApLT5tYV9maWxsID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIElOSVRfTk9OWkVST19ESUNUX1NMT1RTKG1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKK3N0YXRpYyBpbnQgZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpOwogCiAvKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYywgZnJlZSwgYW5kIG1lbXNldCAqLwogI2lmbmRlZiBQeURpY3RfTUFYRlJFRUxJU1QKQEAgLTIxNyw3MyArMjQyLDE5NCBAQAogc3RhdGljIFB5RGljdE9iamVjdCAqZnJlZV9saXN0W1B5RGljdF9NQVhGUkVFTElTVF07CiBzdGF0aWMgaW50IG51bWZyZWUgPSAwOwogCi12b2lkCi1QeURpY3RfRmluaSh2b2lkKQoraW50CitQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKQogewogICAgIFB5RGljdE9iamVjdCAqb3A7Ci0KKyAgICBpbnQgcmV0ID0gbnVtZnJlZTsKICAgICB3aGlsZSAobnVtZnJlZSkgewogICAgICAgICBvcCA9IGZyZWVfbGlzdFstLW51bWZyZWVdOwogICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3Qob3ApKTsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKG9wKTsKICAgICB9CisgICAgcmV0dXJuIHJldDsKIH0KIAotUHlPYmplY3QgKgotUHlEaWN0X05ldyh2b2lkKQorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5RGljdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKIHsKLSAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wOwotICAgIGlmIChkdW1teSA9PSBOVUxMKSB7IC8qIEF1dG8taW5pdGlhbGl6ZSBkdW1teSAqLwotICAgICAgICBkdW1teSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOwotICAgICAgICBpZiAoZHVtbXkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLSAgICAgICAgUHlfQXRFeGl0KHNob3dfY291bnRzKTsKLSNlbmRpZgotI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKLSAgICAgICAgUHlfQXRFeGl0KHNob3dfYWxsb2MpOwotI2VuZGlmCi0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotICAgICAgICBQeV9BdEV4aXQoc2hvd190cmFjayk7Ci0jZW5kaWYKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5RGljdE9iamVjdCIsIG51bWZyZWUsIHNpemVvZihQeURpY3RPYmplY3QpKTsKK30KKworCit2b2lkCitQeURpY3RfRmluaSh2b2lkKQoreworICAgIFB5RGljdF9DbGVhckZyZWVMaXN0KCk7Cit9CisKKyNkZWZpbmUgREtfREVCVUdfSU5DUkVGIF9QeV9JTkNfUkVGVE9UQUwgX1B5X1JFRl9ERUJVR19DT01NQQorI2RlZmluZSBES19ERUJVR19ERUNSRUYgX1B5X0RFQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCisKKyNkZWZpbmUgREtfSU5DUkVGKGRrKSAoREtfREVCVUdfSU5DUkVGICsrKGRrKS0+ZGtfcmVmY250KQorI2RlZmluZSBES19ERUNSRUYoZGspIGlmIChES19ERUJVR19ERUNSRUYgKC0tKGRrKS0+ZGtfcmVmY250KSA9PSAwKSBmcmVlX2tleXNfb2JqZWN0KGRrKQorI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKKyNkZWZpbmUgREtfTUFTSyhkaykgKCgoZGspLT5ka19zaXplKS0xKQorI2RlZmluZSBJU19QT1dFUl9PRl8yKHgpICgoKHgpICYgKHgtMSkpID09IDApCisKKy8qIFVTQUJMRV9GUkFDVElPTiBpcyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQuCisgKiBDdXJyZW50bHkgc2V0IHRvICgybisxKS8zLiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUKKyAqIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MKKyAqIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCisgKiBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KKyAqCisgKiBVU0FCTEVfRlJBQ1RJT04gbXVzdCBvYmV5IHRoZSBmb2xsb3dpbmc6CisgKiAgICAgKDAgPCBVU0FCTEVfRlJBQ1RJT04obikgPCBuKSBmb3IgYWxsIG4gPj0gMgorICoKKyAqIFVTQUJMRV9GUkFDVElPTiBzaG91bGQgYmUgdmVyeSBxdWljayB0byBjYWxjdWxhdGUuCisgKiBGcmFjdGlvbnMgYXJvdW5kIDUvOCB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCisgKi8KKworLyogVXNlICgybisxKS8zIHJhdGhlciB0aGFuIDJuKzMgYmVjYXVzZTogaXQgbWFrZXMgbm8gZGlmZmVyZW5jZSBmb3IKKyAqIGNvbWJpbmVkIHRhYmxlcyAodGhlIHR3byBmcmFjdGlvbnMgcm91bmQgdG8gdGhlIHNhbWUgbnVtYmVyIG4gPCApLAorICogYnV0IDIqNC8zIGlzIDIgd2hlcmVhcyAoMio0KzEpLzMgaXMgMyB3aGljaCBwb3RlbnRpYWxseSBzYXZlcyBxdWl0ZQorICogYSBsb3Qgb2Ygc3BhY2UgZm9yIHNtYWxsLCBzcGxpdCB0YWJsZXMgKi8KKyNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKChuKSA8PCAxKSsxKS8zKQorCisvKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gKDJuKzEpLzMgdG8gbWFrZQorICogbGl0dGxlIGRpZmZlcmVuY2UuIDggKiAyLzMgPT0gOCAqIDUvOCA9PSA1LiAxNiAqIDIvMyA9PSAxNiAqIDUvOCA9PSAxMC4KKyAqIDMyICogMi8zID0gMjEsIDMyICogNS84ID0gMjAuCisgKiBJdHMgYWR2YW50YWdlIGlzIHRoYXQgaXQgaXMgZmFzdGVyIHRvIGNvbXB1dGUgb24gbWFjaGluZXMgd2l0aCBzbG93IGRpdmlzaW9uLgorICogI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgobikgPj4gMSkgKyAoKG4pID4+IDIpIC0gKChuKSA+PiAzKSkKKyovCisKKy8qIEdST1dUSF9SQVRFLiBHcm93dGggcmF0ZSB1cG9uIGhpdHRpbmcgbWF4aW11bSBsb2FkLiAgQ3VycmVudGx5IHNldCB0byAqMi4KKyAqIFJhaXNpbmcgdGhpcyB0byAqNCBkb3VibGVzIG1lbW9yeSBjb25zdW1wdGlvbiBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YKKyAqIHRoZSBkaWN0aW9uYXJ5LCBidXQgcmVzdWx0cyBpbiBoYWxmIHRoZSBudW1iZXIgb2YgcmVzaXplcywgbGVzcyBlZmZvcnQgdG8KKyAqIHJlc2l6ZSBhbmQgYmV0dGVyIHNwYXJzZW5lc3MgZm9yIHNvbWUgKGJ1dCBub3QgYWxsIGRpY3Qgc2l6ZXMpLgorICogU2V0dGluZyB0byAqNCBlbGltaW5hdGVzIGV2ZXJ5IG90aGVyIHJlc2l6ZSBzdGVwLgorICogR1JPV1RIX1JBVEUgd2FzIHNldCB0byAqNCB1cCB0byB2ZXJzaW9uIDMuMi4KKyAqLworI2RlZmluZSBHUk9XVEhfUkFURSh4KSAoKHgpICogMikKKworI2RlZmluZSBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhkKSBcCisgICAgaWYgKChkKS0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSkgeyBcCisgICAgICAgIChkKS0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3RfdW5pY29kZTsgXAogICAgIH0KKworLyogVGhpcyBpbW11dGFibGUsIGVtcHR5IFB5RGljdEtleXNPYmplY3QgaXMgdXNlZCBmb3IgUHlEaWN0X0NsZWFyKCkKKyAqICh3aGljaCBjYW5ub3QgZmFpbCBhbmQgdGh1cyBjYW4gZG8gbm8gYWxsb2NhdGlvbikuCisgKi8KK3N0YXRpYyBQeURpY3RLZXlzT2JqZWN0IGVtcHR5X2tleXNfc3RydWN0ID0geworICAgICAgICAyLCAvKiBka19yZWZjbnQgMSBmb3IgdGhpcyBzdHJ1Y3QsIDEgZm9yIGR1bW15X3N0cnVjdCAqLworICAgICAgICAxLCAvKiBka19zaXplICovCisgICAgICAgIGxvb2tkaWN0X3NwbGl0LCAvKiBka19sb29rdXAgKi8KKyAgICAgICAgMCwgLyogZGtfdXNhYmxlIChpbW11dGFibGUpICovCisgICAgICAgIHsKKyAgICAgICAgICAgIHsgMCwgMCwgMCB9IC8qIGRrX2VudHJpZXMgKGVtcHR5KSAqLworICAgICAgICB9Cit9OworCitzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3ZhbHVlc1sxXSA9IHsgTlVMTCB9OworCisjZGVmaW5lIFB5X0VNUFRZX0tFWVMgJmVtcHR5X2tleXNfc3RydWN0CisKK3N0YXRpYyBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5c19vYmplY3QoUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5RGljdEtleXNPYmplY3QgKmRrOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwOworCisgICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkVfU1BMSVQpOworICAgIGFzc2VydChJU19QT1dFUl9PRl8yKHNpemUpKTsKKyAgICBkayA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKworICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiAoc2l6ZS0xKSk7CisgICAgaWYgKGRrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIERLX0RFQlVHX0lOQ1JFRiBkay0+ZGtfcmVmY250ID0gMTsKKyAgICBkay0+ZGtfc2l6ZSA9IHNpemU7CisgICAgZGstPmRrX3VzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKKyAgICBlcDAgPSAmZGstPmRrX2VudHJpZXNbMF07CisgICAgLyogSGFzaCB2YWx1ZSBvZiBzbG90IDAgaXMgdXNlZCBieSBwb3BpdGVtLCBzbyBpdCBtdXN0IGJlIGluaXRpYWxpemVkICovCisgICAgZXAwLT5tZV9oYXNoID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGVwMFtpXS5tZV9rZXkgPSBOVUxMOworICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOworICAgIH0KKyAgICBkay0+ZGtfbG9va3VwID0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15OworICAgIHJldHVybiBkazsKK30KKworc3RhdGljIHZvaWQKK2ZyZWVfa2V5c19vYmplY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKK3sKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9ICZrZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShrZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfa2V5KTsKKyAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICB9CisgICAgUHlNZW1fRlJFRShrZXlzKTsKK30KKworI2RlZmluZSBuZXdfdmFsdWVzKHNpemUpIFB5TWVtX05FVyhQeU9iamVjdCAqLCBzaXplKQorCisjZGVmaW5lIGZyZWVfdmFsdWVzKHZhbHVlcykgUHlNZW1fRlJFRSh2YWx1ZXMpCisKKy8qIENvbnN1bWVzIGEgcmVmZXJlbmNlIHRvIHRoZSBrZXlzIG9iamVjdCAqLworc3RhdGljIFB5T2JqZWN0ICoKK25ld19kaWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5T2JqZWN0ICoqdmFsdWVzKQoreworICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgaWYgKG51bWZyZWUpIHsKICAgICAgICAgbXAgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0IChtcCAhPSBOVUxMKTsKICAgICAgICAgYXNzZXJ0IChQeV9UWVBFKG1wKSA9PSAmUHlEaWN0X1R5cGUpOwogICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW1wKTsKLSAgICAgICAgaWYgKG1wLT5tYV9maWxsKSB7Ci0gICAgICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIEF0IGxlYXN0IHNldCBtYV90YWJsZSBhbmQgbWFfbWFzazsgdGhlc2UgYXJlIHdyb25nCi0gICAgICAgICAgICAgICBpZiBhbiBlbXB0eSBidXQgcHJlc2l6ZWQgZGljdCBpcyBhZGRlZCB0byBmcmVlbGlzdCAqLwotICAgICAgICAgICAgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMobXApOwotICAgICAgICB9Ci0gICAgICAgIGFzc2VydCAobXAtPm1hX3VzZWQgPT0gMCk7Ci0gICAgICAgIGFzc2VydCAobXAtPm1hX3RhYmxlID09IG1wLT5tYV9zbWFsbHRhYmxlKTsKLSAgICAgICAgYXNzZXJ0IChtcC0+bWFfbWFzayA9PSBQeURpY3RfTUlOU0laRSAtIDEpOwotI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKLSAgICAgICAgY291bnRfcmV1c2UrKzsKLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1wID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKLSAgICAgICAgaWYgKG1wID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgRU1QVFlfVE9fTUlOU0laRShtcCk7Ci0jaWZkZWYgU0hPV19BTExPQ19DT1VOVAotICAgICAgICBjb3VudF9hbGxvYysrOwotI2VuZGlmCiAgICAgfQotICAgIG1wLT5tYV9sb29rdXAgPSBsb29rZGljdF91bmljb2RlOwotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSAgICBjb3VudF91bnRyYWNrZWQrKzsKLSNlbmRpZgotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLSAgICArK2NyZWF0ZWQ7Ci0jZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgbXAgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOworICAgICAgICBpZiAobXAgPT0gTlVMTCkgeworICAgICAgICAgICAgREtfREVDUkVGKGtleXMpOworICAgICAgICAgICAgZnJlZV92YWx1ZXModmFsdWVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIG1wLT5tYV9rZXlzID0ga2V5czsKKyAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOworICAgIG1wLT5tYV91c2VkID0gMDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbXA7CiB9CiAKKy8qIENvbnN1bWVzIGEgcmVmZXJlbmNlIHRvIHRoZSBrZXlzIG9iamVjdCAqLworc3RhdGljIFB5T2JqZWN0ICoKK25ld19kaWN0X3dpdGhfc2hhcmVkX2tleXMoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKK3sKKyAgICBQeU9iamVjdCAqKnZhbHVlczsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisKKyAgICBzaXplID0gREtfU0laRShrZXlzKTsKKyAgICB2YWx1ZXMgPSBuZXdfdmFsdWVzKHNpemUpOworICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgeworICAgICAgICBES19ERUNSRUYoa2V5cyk7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIHZhbHVlc1tpXSA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBuZXdfZGljdChrZXlzLCB2YWx1ZXMpOworfQorCitQeU9iamVjdCAqCitQeURpY3RfTmV3KHZvaWQpCit7CisgICAgcmV0dXJuIG5ld19kaWN0KG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCksIE5VTEwpOworfQorCiAvKgogVGhlIGJhc2ljIGxvb2t1cCBmdW5jdGlvbiB1c2VkIGJ5IGFsbCBvcGVyYXRpb25zLgogVGhpcyBpcyBiYXNlZCBvbiBBbGdvcml0aG0gRCBmcm9tIEtudXRoIFZvbC4gMywgU2VjLiA2LjQuCkBAIC0zMDIsMjkgKzQ0OCwzNSBAQAogbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIE5VTEwgaWYgKGFuZCBvbmx5IGlmKSBhCiBjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24gKHRoaXMgd2FzIG5ldyBpbiBQeXRob24gMi41KS4KIGxvb2tkaWN0X3VuaWNvZGUoKSBiZWxvdyBpcyBzcGVjaWFsaXplZCB0byBzdHJpbmcga2V5cywgY29tcGFyaXNvbiBvZiB3aGljaCBjYW4KLW5ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuIE5VTEwuICBGb3IgYm90aCwgd2hlbgotdGhlIGtleSBpc24ndCBmb3VuZCBhIFB5RGljdEVudHJ5KiBpcyByZXR1cm5lZCBmb3Igd2hpY2ggdGhlIG1lX3ZhbHVlIGZpZWxkIGlzCi1OVUxMOyB0aGlzIGlzIHRoZSBzbG90IGluIHRoZSBkaWN0IGF0IHdoaWNoIHRoZSBrZXkgd291bGQgaGF2ZSBiZWVuIGZvdW5kLCBhbmQKLXRoZSBjYWxsZXIgY2FuIChpZiBpdCB3aXNoZXMpIGFkZCB0aGUgPGtleSwgdmFsdWU+IHBhaXIgdG8gdGhlIHJldHVybmVkCi1QeURpY3RFbnRyeSouCituZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLgorbG9va2RpY3RfdW5pY29kZV9ub2R1bW15IGlzIGZ1cnRoZXIgc3BlY2lhbGl6ZWQgZm9yIHN0cmluZyBrZXlzIHRoYXQgY2Fubm90IGJlCit0aGUgPGR1bW15PiB2YWx1ZS4KK0ZvciBib3RoLCB3aGVuIHRoZSBrZXkgaXNuJ3QgZm91bmQgYSBQeURpY3RFbnRyeSogaXMgcmV0dXJuZWQKK3doZXJlIHRoZSBrZXkgd291bGQgaGF2ZSBiZWVuIGZvdW5kLCAqdmFsdWVfYWRkciBwb2ludHMgdG8gdGhlIG1hdGNoaW5nIHZhbHVlCitzbG90LgogKi8KLXN0YXRpYyBQeURpY3RFbnRyeSAqCi1sb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCByZWdpc3RlciBQeV9oYXNoX3QgaGFzaCkKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCiB7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmZyZWVzbG90OwotICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gKHNpemVfdCltcC0+bWFfbWFzazsKLSAgICBQeURpY3RFbnRyeSAqZXAwID0gbXAtPm1hX3RhYmxlOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CisgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2s7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgcmVnaXN0ZXIgaW50IGNtcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKK3RvcDoKKyAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KQorICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICByZXR1cm4gZXA7Ci0KKyAgICB9CiAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpCiAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgZWxzZSB7CkBAIC0zMzUsMTcgKzQ4NywxNSBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfdGFibGUgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewotICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogVGhlIGNvbXBhcmUgZGlkIG1ham9yIG5hc3R5IHN0dWZmIHRvIHRoZQotICAgICAgICAgICAgICAgICAqIGRpY3Q6ICBzdGFydCBvdmVyLgotICAgICAgICAgICAgICAgICAqIFhYWCBBIGNsZXZlciBhZHZlcnNhcnkgY291bGQgcHJldmVudCB0aGlzCi0gICAgICAgICAgICAgICAgICogWFhYIGZyb20gdGVybWluYXRpbmcuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gpOworICAgICAgICAgICAgICAgIC8qIFRoZSBkaWN0IHdhcyBtdXRhdGVkLCByZXN0YXJ0ICovCisgICAgICAgICAgICAgICAgZ290byB0b3A7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZnJlZXNsb3QgPSBOVUxMOwpAQCAtMzU2LDI4ICs1MDYsMzcgQEAKICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwogICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlcCA6IGZyZWVzbG90OwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpCisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZnJlZXNsb3QtPm1lX3ZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQogICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KSB7CiAgICAgICAgICAgICBzdGFydGtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7CisgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfdGFibGUgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewotICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogVGhlIGNvbXBhcmUgZGlkIG1ham9yIG5hc3R5IHN0dWZmIHRvIHRoZQotICAgICAgICAgICAgICAgICAqIGRpY3Q6ICBzdGFydCBvdmVyLgotICAgICAgICAgICAgICAgICAqIFhYWCBBIGNsZXZlciBhZHZlcnNhcnkgY291bGQgcHJldmVudCB0aGlzCi0gICAgICAgICAgICAgICAgICogWFhYIGZyb20gdGVybWluYXRpbmcuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gpOworICAgICAgICAgICAgICAgIC8qIFRoZSBkaWN0IHdhcyBtdXRhdGVkLCByZXN0YXJ0ICovCisgICAgICAgICAgICAgICAgZ290byB0b3A7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQpAQCAtMzg3LDQ2ICs1NDYsMzkgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyoKLSAqIEhhY2tlZCB1cCB2ZXJzaW9uIG9mIGxvb2tkaWN0IHdoaWNoIGNhbiBhc3N1bWUga2V5cyBhcmUgYWx3YXlzCi0gKiB1bmljb2RlczsgdGhpcyBhc3N1bXB0aW9uIGFsbG93cyB0ZXN0aW5nIGZvciBlcnJvcnMgZHVyaW5nCi0gKiBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woKSB0byBiZSBkcm9wcGVkOyB1bmljb2RlLXVuaWNvZGUKLSAqIGNvbXBhcmlzb25zIG5ldmVyIHJhaXNlIGV4Y2VwdGlvbnMuICBUaGlzIGFsc28gbWVhbnMgd2UgZG9uJ3QgbmVlZAotICogdG8gZ28gdGhyb3VnaCBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woKTsgd2UgY2FuIGFsd2F5cyB1c2UKLSAqIHVuaWNvZGVfZXEoKSBkaXJlY3RseS4KLSAqCi0gKiBUaGlzIGlzIHZhbHVhYmxlIGJlY2F1c2UgZGljdHMgd2l0aCBvbmx5IHVuaWNvZGUga2V5cyBhcmUgdmVyeSBjb21tb24uCi0gKi8KLXN0YXRpYyBQeURpY3RFbnRyeSAqCi1sb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoKQorLyogU3BlY2lhbGl6ZWQgdmVyc2lvbiBmb3Igc3RyaW5nLW9ubHkga2V5cyAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCiB7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmZyZWVzbG90OwotICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gKHNpemVfdCltcC0+bWFfbWFzazsKLSAgICBQeURpY3RFbnRyeSAqZXAwID0gbXAtPm1hX3RhYmxlOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CisgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICplcDsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7Ci0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotICAgICAgICArK2NvbnZlcnRlZDsKLSNlbmRpZgotICAgICAgICBtcC0+bWFfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CiAgICAgfQotICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlcCA9ICZlcDBbaV07Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgcmV0dXJuIGVwOworICAgIH0KICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKQorICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQogICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CiAgICAgfQogCkBAIC00MzUsMTMgKzU4NywyMiBAQAogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewogICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CiAgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gZnJlZXNsb3QgPT0gTlVMTCA/IGVwIDogZnJlZXNsb3Q7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZnJlZXNsb3QtPm1lX3ZhbHVlOworICAgICAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKICAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCiAgICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKQorICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KQEAgLTQ0OSw2ICs2MTAsOTIgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyogRmFzdGVyIHZlcnNpb24gb2YgbG9va2RpY3RfdW5pY29kZSB3aGVuIGl0IGlzIGtub3duIHRoYXQgbm8gPGR1bW15PiBrZXlzCisgKiB3aWxsIGJlIHByZXNlbnQuICovCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCit7CisgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7CisgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICplcDsKKworICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKKyAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKKyAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KKyAgICAgICB0aGF0IGhlcmUuICovCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgIH0KKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBlcCA9ICZlcDBbaV07CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGVwOworICAgIH0KKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOworICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyogVmVyc2lvbiBvZiBsb29rZGljdCBmb3Igc3BsaXQgdGFibGVzLgorICogQWxsIHNwbGl0IHRhYmxlcyBhbmQgb25seSBzcGxpdCB0YWJsZXMgdXNlIHRoaXMgbG9va3VwIGZ1bmN0aW9uLgorICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCisgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgorICovCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQoreworICAgIHJlZ2lzdGVyIHNpemVfdCBpOworICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZXA7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLworICAgICAgICBpID0gZXAgLSBlcDA7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHJldHVybiBlcDsKKyAgICB9CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisgICAgZXAgPSAmZXAwW2ldOworICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICByZXR1cm4gZXA7CisgICAgfQorICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CisgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2kgJiBtYXNrXTsKKyAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCisgICAgcmV0dXJuIDA7Cit9CisKIGludAogX1B5RGljdF9IYXNPbmx5U3RyaW5nS2V5cyhQeU9iamVjdCAqZGljdCkKIHsKQEAgLTQ1Niw3ICs3MDMsNyBAQAogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrKGRpY3QpKTsKICAgICAvKiBTaG9ydGN1dCAqLwotICAgIGlmICgoKFB5RGljdE9iamVjdCAqKWRpY3QpLT5tYV9sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZSkKKyAgICBpZiAoKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0KQogICAgICAgICByZXR1cm4gMTsKICAgICB3aGlsZSAoUHlEaWN0X05leHQoZGljdCwgJnBvcywgJmtleSwgJnZhbHVlKSkKICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkKQEAgLTQ2NCwyMyArNzExLDEyIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi0jZGVmaW5lIElOQ1JFQVNFX1RSQUNLX0NPVU5UIFwKLSAgICAoY291bnRfdHJhY2tlZCsrLCBjb3VudF91bnRyYWNrZWQtLSk7Ci0jZGVmaW5lIERFQ1JFQVNFX1RSQUNLX0NPVU5UIFwKLSAgICAoY291bnRfdHJhY2tlZC0tLCBjb3VudF91bnRyYWNrZWQrKyk7Ci0jZWxzZQotI2RlZmluZSBJTkNSRUFTRV9UUkFDS19DT1VOVAotI2RlZmluZSBERUNSRUFTRV9UUkFDS19DT1VOVAotI2VuZGlmCi0KICNkZWZpbmUgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpIFwKICAgICBkbyB7IFwKICAgICAgICAgaWYgKCFfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChtcCkpIHsgXAogICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRChrZXkpIHx8IFwKICAgICAgICAgICAgICAgICBfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7IFwKICAgICAgICAgICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0sobXApOyBcCi0gICAgICAgICAgICAgICAgSU5DUkVBU0VfVFJBQ0tfQ09VTlQgXAogICAgICAgICAgICAgfSBcCiAgICAgICAgIH0gXAogICAgIH0gd2hpbGUoMCkKQEAgLTQ5MCw3OCArNzI2LDEzNiBAQAogewogICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgbWFzaywgaTsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChvcCkgfHwgIV9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG9wKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopIG9wOwotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwOyBpIDw9IG1hc2s7IGkrKykgewotICAgICAgICBpZiAoKHZhbHVlID0gZXBbaV0ubWVfdmFsdWUpID09IE5VTEwpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkgfHwKLSAgICAgICAgICAgIF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRChlcFtpXS5tZV9rZXkpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoKHZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoCisgICAgICAgICAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICBERUNSRUFTRV9UUkFDS19DT1VOVAorICAgIGVsc2UgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoKHZhbHVlID0gZXAwW2ldLm1lX3ZhbHVlKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkgfHwKKyAgICAgICAgICAgICAgICBfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoZXAwW2ldLm1lX2tleSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKG9wKTsKIH0KIAotLyoKLUludGVybmFsIHJvdXRpbmUgdG8gaW5zZXJ0IGEgbmV3IGl0ZW0gaW50byB0aGUgdGFibGUgd2hlbiB5b3UgaGF2ZSBlbnRyeSBvYmplY3QuCi1Vc2VkIGJ5IGluc2VydGRpY3QuCi0qLwotc3RhdGljIGludAotaW5zZXJ0ZGljdF9ieV9lbnRyeShyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgUHlEaWN0RW50cnkgKmVwLCBQeU9iamVjdCAqdmFsdWUpCisvKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBmaW5kIHNsb3QgZm9yIGFuIGl0ZW0gZnJvbSBpdHMgaGFzaAorICogd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCisgKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitmaW5kX2VtcHR5X3Nsb3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKIHsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOworICAgIHNpemVfdCBpOworICAgIHNpemVfdCBwZXJ0dXJiOworICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAKLSAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyICovCi0gICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKQorICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGVwID0gJmVwMFtpXTsKKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlcC0+bWVfa2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOworICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIG1wLT5tYV9maWxsKys7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gZHVtbXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgfQotICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OwotICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7Ci0gICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwotICAgICAgICBtcC0+bWFfdXNlZCsrOwotICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKQorICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2kgJiBtYXNrXTsKKyAgICBlbHNlCisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICByZXR1cm4gZXA7CiB9CiAKK3N0YXRpYyBpbnQKK2luc2VydGlvbl9yZXNpemUoUHlEaWN0T2JqZWN0ICptcCkKK3sKKyAgICByZXR1cm4gZGljdHJlc2l6ZShtcCwgR1JPV1RIX1JBVEUobXAtPm1hX3VzZWQpKTsKK30KIAogLyoKIEludGVybmFsIHJvdXRpbmUgdG8gaW5zZXJ0IGEgbmV3IGl0ZW0gaW50byB0aGUgdGFibGUuCiBVc2VkIGJvdGggYnkgdGhlIGludGVybmFsIHJlc2l6ZSByb3V0aW5lIGFuZCBieSB0aGUgcHVibGljIGluc2VydCByb3V0aW5lLgotRWF0cyBhIHJlZmVyZW5jZSB0byBrZXkgYW5kIG9uZSB0byB2YWx1ZS4KIFJldHVybnMgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQsIG9yIDAgb24gc3VjY2Vzcy4KICovCiBzdGF0aWMgaW50Ci1pbnNlcnRkaWN0KHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqdmFsdWUpCitpbnNlcnRkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKIAotICAgIGFzc2VydChtcC0+bWFfbG9va3VwICE9IE5VTEwpOwotICAgIGVwID0gbXAtPm1hX2xvb2t1cChtcCwga2V5LCBoYXNoKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gaW5zZXJ0ZGljdF9ieV9lbnRyeShtcCwga2V5LCBoYXNoLCBlcCwgdmFsdWUpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOworICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICAgICAgLyogTmVlZCB0byByZXNpemUuICovCisgICAgICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKKyAgICAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CisgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CisgICAgICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgIH0KKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOworICAgIHJldHVybiAwOwogfQogCiAvKgpAQCAtNTcxLDE4ICs4NjUsMjUgQEAKIHVzaW5nIGluc2VydGRpY3QoKSBpbiBkaWN0cmVzaXplKCkgaXMgZGFuZ2Vyb3VzIChTRiBidWcgIzE0NTYyMDkpLgogTm90ZSB0aGF0IG5vIHJlZmNvdW50cyBhcmUgY2hhbmdlZCBieSB0aGlzIHJvdXRpbmU7IGlmIG5lZWRlZCwgdGhlIGNhbGxlcgogaXMgcmVzcG9uc2libGUgZm9yIGluY3JlZidpbmcgYGtleWAgYW5kIGB2YWx1ZWAuCitOZWl0aGVyIG1wLT5tYV91c2VkIG5vciBrLT5ka191c2FibGUgYXJlIG1vZGlmaWVkIGJ5IHRoaXMgcm91dGluZTsgdGhlIGNhbGxlcgorbXVzdCBzZXQgdGhlbSBjb3JyZWN0bHkKICovCiBzdGF0aWMgdm9pZAotaW5zZXJ0ZGljdF9jbGVhbihyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKK2luc2VydGRpY3RfY2xlYW4oUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBzaXplX3QgaTsKLSAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKLSAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IChzaXplX3QpbXAtPm1hX21hc2s7Ci0gICAgUHlEaWN0RW50cnkgKmVwMCA9IG1wLT5tYV90YWJsZTsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IHBlcnR1cmI7CisgICAgUHlEaWN0S2V5c09iamVjdCAqayA9IG1wLT5tYV9rZXlzOworICAgIHNpemVfdCBtYXNrID0gKHNpemVfdClES19TSVpFKGspLTE7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZrLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKIAotICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKKyAgICBhc3NlcnQoay0+ZGtfbG9va3VwICE9IE5VTEwpOworICAgIGFzc2VydCh2YWx1ZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IGstPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CiAgICAgaSA9IGhhc2ggJiBtYXNrOwogICAgIGVwID0gJmVwMFtpXTsKICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlcC0+bWVfa2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKQEAgLTU5MCwzMSArODkxLDMxIEBACiAgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CiAgICAgfQogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX2ZpbGwrKzsKICAgICBlcC0+bWVfa2V5ID0ga2V5OwogICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKLSAgICBtcC0+bWFfdXNlZCsrOwogfQogCiAvKgogUmVzdHJ1Y3R1cmUgdGhlIHRhYmxlIGJ5IGFsbG9jYXRpbmcgYSBuZXcgdGFibGUgYW5kIHJlaW5zZXJ0aW5nIGFsbAogaXRlbXMgYWdhaW4uICBXaGVuIGVudHJpZXMgaGF2ZSBiZWVuIGRlbGV0ZWQsIHRoZSBuZXcgdGFibGUgbWF5CiBhY3R1YWxseSBiZSBzbWFsbGVyIHRoYW4gdGhlIG9sZCBvbmUuCitJZiBhIHRhYmxlIGlzIHNwbGl0IChpdHMga2V5cyBhbmQgaGFzaGVzIGFyZSBzaGFyZWQsIGl0cyB2YWx1ZXMgYXJlIG5vdCksCit0aGVuIHRoZSB2YWx1ZXMgYXJlIHRlbXBvcmFyaWx5IGNvcGllZCBpbnRvIHRoZSB0YWJsZSwgaXQgaXMgcmVzaXplZCBhcworYSBjb21iaW5lZCB0YWJsZSwgdGhlbiB0aGUgbWVfdmFsdWUgc2xvdHMgaW4gdGhlIG9sZCB0YWJsZSBhcmUgTlVMTGVkIG91dC4KK0FmdGVyIHJlc2l6aW5nIGEgdGFibGUgaXMgYWx3YXlzIGNvbWJpbmVkLAorYnV0IGNhbiBiZSByZXNwbGl0IGJ5IG1ha2Vfa2V5c19zaGFyZWQoKS4KICovCiBzdGF0aWMgaW50CiBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCkKIHsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7Ci0gICAgUHlEaWN0RW50cnkgKm9sZHRhYmxlLCAqbmV3dGFibGUsICplcDsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgaW50IGlzX29sZHRhYmxlX21hbGxvY2VkOwotICAgIFB5RGljdEVudHJ5IHNtYWxsX2NvcHlbUHlEaWN0X01JTlNJWkVdOworICAgIFB5RGljdEtleXNPYmplY3QgKm9sZGtleXM7CisgICAgUHlPYmplY3QgKipvbGR2YWx1ZXM7CisgICAgUHlfc3NpemVfdCBpLCBvbGRzaXplOwogCi0gICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7Ci0KLSAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KLSAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRTsKKy8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLworICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEOwogICAgICAgICAgbmV3c2l6ZSA8PSBtaW51c2VkICYmIG5ld3NpemUgPiAwOwogICAgICAgICAgbmV3c2l6ZSA8PD0gMSkKICAgICAgICAgOwpAQCAtNjIyLDgzICs5MjMsMTI1IEBACiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0KLSAgICAvKiBHZXQgc3BhY2UgZm9yIGEgbmV3IHRhYmxlLiAqLwotICAgIG9sZHRhYmxlID0gbXAtPm1hX3RhYmxlOwotICAgIGFzc2VydChvbGR0YWJsZSAhPSBOVUxMKTsKLSAgICBpc19vbGR0YWJsZV9tYWxsb2NlZCA9IG9sZHRhYmxlICE9IG1wLT5tYV9zbWFsbHRhYmxlOwotCi0gICAgaWYgKG5ld3NpemUgPT0gUHlEaWN0X01JTlNJWkUpIHsKLSAgICAgICAgLyogQSBsYXJnZSB0YWJsZSBpcyBzaHJpbmtpbmcsIG9yIHdlIGNhbid0IGdldCBhbnkgc21hbGxlci4gKi8KLSAgICAgICAgbmV3dGFibGUgPSBtcC0+bWFfc21hbGx0YWJsZTsKLSAgICAgICAgaWYgKG5ld3RhYmxlID09IG9sZHRhYmxlKSB7Ci0gICAgICAgICAgICBpZiAobXAtPm1hX2ZpbGwgPT0gbXAtPm1hX3VzZWQpIHsKLSAgICAgICAgICAgICAgICAvKiBObyBkdW1taWVzLCBzbyBubyBwb2ludCBkb2luZyBhbnl0aGluZy4gKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICBvbGRrZXlzID0gbXAtPm1hX2tleXM7CisgICAgb2xkdmFsdWVzID0gbXAtPm1hX3ZhbHVlczsKKyAgICAvKiBBbGxvY2F0ZSBhIG5ldyB0YWJsZS4gKi8KKyAgICBtcC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChuZXdzaXplKTsKKyAgICBpZiAobXAtPm1hX2tleXMgPT0gTlVMTCkgeworICAgICAgICBtcC0+bWFfa2V5cyA9IG9sZGtleXM7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OworICAgIG9sZHNpemUgPSBES19TSVpFKG9sZGtleXMpOworICAgIG1wLT5tYV92YWx1ZXMgPSBOVUxMOworICAgIC8qIElmIGVtcHR5IHRoZW4gbm90aGluZyB0byBjb3B5IHNvIGp1c3QgcmV0dXJuICovCisgICAgaWYgKG9sZHNpemUgPT0gMSkgeworICAgICAgICBhc3NlcnQob2xka2V5cyA9PSBQeV9FTVBUWV9LRVlTKTsKKyAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLyogTWFpbiBsb29wIGJlbG93IGFzc3VtZXMgd2UgY2FuIHRyYW5zZmVyIHJlZmNvdW50IHRvIG5ldyBrZXlzCisgICAgICogYW5kIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIG1lX3ZhbHVlLgorICAgICAqIEluY3JlbWVudCByZWYtY291bnRzIGFuZCBjb3B5IHZhbHVlcyBoZXJlIHRvIGNvbXBlbnNhdGUKKyAgICAgKiBUaGlzIChyZXNpemluZyBhIHNwbGl0IHRhYmxlKSBzaG91bGQgYmUgcmVsYXRpdmVseSByYXJlICovCisgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChvbGR2YWx1ZXNbaV0gIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFdlJ3JlIG5vdCBnb2luZyB0byByZXNpemUgaXQsIGJ1dCByZWJ1aWxkIHRoZQotICAgICAgICAgICAgICAgdGFibGUgYW55d2F5IHRvIHB1cmdlIG9sZCBkdW1teSBlbnRyaWVzLgotICAgICAgICAgICAgICAgU3VidGxlOiAgVGhpcyBpcyAqbmVjZXNzYXJ5KiBpZiBmaWxsPT1zaXplLAotICAgICAgICAgICAgICAgYXMgbG9va2RpY3QgbmVlZHMgYXQgbGVhc3Qgb25lIHZpcmdpbiBzbG90IHRvCi0gICAgICAgICAgICAgICB0ZXJtaW5hdGUgZmFpbGluZyBzZWFyY2hlcy4gIElmIGZpbGwgPCBzaXplLCBpdCdzCi0gICAgICAgICAgICAgICBtZXJlbHkgZGVzaXJhYmxlLCBhcyBkdW1taWVzIHNsb3cgc2VhcmNoZXMuICovCi0gICAgICAgICAgICBhc3NlcnQobXAtPm1hX2ZpbGwgPiBtcC0+bWFfdXNlZCk7Ci0gICAgICAgICAgICBtZW1jcHkoc21hbGxfY29weSwgb2xkdGFibGUsIHNpemVvZihzbWFsbF9jb3B5KSk7Ci0gICAgICAgICAgICBvbGR0YWJsZSA9IHNtYWxsX2NvcHk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG5ld3RhYmxlID0gUHlNZW1fTkVXKFB5RGljdEVudHJ5LCBuZXdzaXplKTsKLSAgICAgICAgaWYgKG5ld3RhYmxlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBNYWtlIHRoZSBkaWN0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwotICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7Ci0gICAgbXAtPm1hX3RhYmxlID0gbmV3dGFibGU7Ci0gICAgbXAtPm1hX21hc2sgPSBuZXdzaXplIC0gMTsKLSAgICBtZW1zZXQobmV3dGFibGUsIDAsIHNpemVvZihQeURpY3RFbnRyeSkgKiBuZXdzaXplKTsKLSAgICBtcC0+bWFfdXNlZCA9IDA7Ci0gICAgaSA9IG1wLT5tYV9maWxsOwotICAgIG1wLT5tYV9maWxsID0gMDsKLQotICAgIC8qIENvcHkgdGhlIGRhdGEgb3ZlcjsgdGhpcyBpcyByZWZjb3VudC1uZXV0cmFsIGZvciBhY3RpdmUgZW50cmllczsKLSAgICAgICBkdW1teSBlbnRyaWVzIGFyZW4ndCBjb3BpZWQgb3Zlciwgb2YgY291cnNlICovCi0gICAgZm9yIChlcCA9IG9sZHRhYmxlOyBpID4gMDsgZXArKykgewotICAgICAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsgICAgICAgICAgICAgLyogYWN0aXZlIGVudHJ5ICovCi0gICAgICAgICAgICAtLWk7CisgICAgLyogTWFpbiBsb29wICovCisgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBkdW1teSk7CiAgICAgICAgICAgICBpbnNlcnRkaWN0X2NsZWFuKG1wLCBlcC0+bWVfa2V5LCBlcC0+bWVfaGFzaCwgZXAtPm1lX3ZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ICE9IE5VTEwpIHsgICAgICAgICAgLyogZHVtbXkgZW50cnkgKi8KLSAgICAgICAgICAgIC0taTsKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IGR1bW15KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlcC0+bWVfa2V5KTsKLSAgICAgICAgfQotICAgICAgICAvKiBlbHNlIGtleSA9PSB2YWx1ZSA9PSBOVUxMOiAgbm90aGluZyB0byBkbyAqLwogICAgIH0KLQotICAgIGlmIChpc19vbGR0YWJsZV9tYWxsb2NlZCkKLSAgICAgICAgUHlNZW1fREVMKG9sZHRhYmxlKTsKKyAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIC09IG1wLT5tYV91c2VkOworICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICAvKiBOVUxMIG91dCBtZV92YWx1ZSBzbG90IGluIG9sZGtleXMsIGluIGNhc2UgaXQgd2FzIHNoYXJlZCAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKQorICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IE5VTEw7CisgICAgICAgIGFzc2VydChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKTsKKyAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF9zcGxpdCk7CisgICAgICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KSB7CisgICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbMF07CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGVwMFtpXS5tZV9rZXkgPT0gZHVtbXkpCisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICAgICAgREtfREVCVUdfREVDUkVGIFB5TWVtX0ZSRUUob2xka2V5cyk7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCi0vKiBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSBwcmUtc2l6ZWQgdG8gaG9sZCBhbiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGVsZW1lbnRzLgotICAgVW5kZXJlc3RpbWF0ZXMgYXJlIG9rYXkgYmVjYXVzZSB0aGUgZGljdGlvbmFyeSB3aWxsIHJlc2l6ZSBhcyBuZWNlc3NhcnkuCi0gICBPdmVyZXN0aW1hdGVzIGp1c3QgbWVhbiB0aGUgZGljdGlvbmFyeSB3aWxsIGJlIG1vcmUgc3BhcnNlIHRoYW4gdXN1YWwuCi0qLworLyogUmV0dXJucyBOVUxMIGlmIHVuYWJsZSB0byBzcGxpdCB0YWJsZS4KKyAqIEEgTlVMTCByZXR1cm4gZG9lcyBub3QgbmVjZXNzYXJpbHkgaW5kaWNhdGUgYW4gZXJyb3IgKi8KK3N0YXRpYyBQeURpY3RLZXlzT2JqZWN0ICoKK21ha2Vfa2V5c19zaGFyZWQoUHlPYmplY3QgKm9wKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKKworICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qob3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZXM7CisgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlKSB7CisgICAgICAgICAgICAvKiBSZW1vdmUgZHVtbXkga2V5cyAqLworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpOworICAgICAgICAvKiBDb3B5IHZhbHVlcyBpbnRvIGEgbmV3IGFycmF5ICovCisgICAgICAgIGVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgICAgICB2YWx1ZXMgPSBuZXdfdmFsdWVzKHNpemUpOworICAgICAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKKyAgICAgICAgICAgICAgICAiTm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgbmV3IHZhbHVlcyBhcnJheSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgdmFsdWVzW2ldID0gZXAwW2ldLm1lX3ZhbHVlOworICAgICAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Rfc3BsaXQ7CisgICAgICAgIG1wLT5tYV92YWx1ZXMgPSB2YWx1ZXM7CisgICAgfQorICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7CisgICAgcmV0dXJuIG1wLT5tYV9rZXlzOworfQogCiBQeU9iamVjdCAqCiBfUHlEaWN0X05ld1ByZXNpemVkKFB5X3NzaXplX3QgbWludXNlZCkKIHsKLSAgICBQeU9iamVjdCAqb3AgPSBQeURpY3RfTmV3KCk7Ci0KLSAgICBpZiAobWludXNlZD41ICYmIG9wICE9IE5VTEwgJiYgZGljdHJlc2l6ZSgoUHlEaWN0T2JqZWN0ICopb3AsIG1pbnVzZWQpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcCk7CisgICAgUHlfc3NpemVfdCBuZXdzaXplOworICAgIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzOworICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEOworICAgICAgICAgbmV3c2l6ZSA8PSBtaW51c2VkICYmIG5ld3NpemUgPiAwOworICAgICAgICAgbmV3c2l6ZSA8PD0gMSkKKyAgICAgICAgOworICAgIG5ld19rZXlzID0gbmV3X2tleXNfb2JqZWN0KG5ld3NpemUpOworICAgIGlmIChuZXdfa2V5cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIG9wOworICAgIHJldHVybiBuZXdfZGljdChuZXdfa2V5cywgTlVMTCk7CiB9CiAKIC8qIE5vdGUgdGhhdCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgUHlEaWN0X0dldEl0ZW0oKSBzdXBwcmVzc2VzIGFsbCBlcnJvcnMKQEAgLTcxNiwxMiArMTA1OSwxNCBAQAogewogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCiAgICAgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewpAQCAtNzQxLDIwICsxMDg2LDIwIEBACiAgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KICAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOwogICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOwotICAgICAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCiAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKICAgICAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGVwLT5tZV92YWx1ZTsKKyAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CiAKIC8qIFZhcmlhbnQgb2YgUHlEaWN0X0dldEl0ZW0oKSB0aGF0IGRvZXNuJ3Qgc3VwcHJlc3MgZXhjZXB0aW9ucy4KQEAgLTc2NiwxNCArMTExMSwxNSBAQAogewogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKICAgICB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKSB7CkBAIC03ODEsNDkgKzExMjcsNTUgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIGVwLT5tZV92YWx1ZTsKKyAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CiAKLXN0YXRpYyBpbnQKLWRpY3Rfc2V0X2l0ZW1fYnlfaGFzaF9vcl9lbnRyeShyZWdpc3RlciBQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5RGljdEVudHJ5ICplcCwgUHlPYmplY3QgKnZhbHVlKQorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSkKIHsKLSAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3Qgbl91c2VkOworICAgIFB5T2JqZWN0ICprdjsKKyAgICBrdiA9IF9QeVVuaWNvZGVfRnJvbUlkKGtleSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKGt2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihkcCwga3YpOworfQogCi0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgYXNzZXJ0KG1wLT5tYV9maWxsIDw9IG1wLT5tYV9tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCi0gICAgbl91c2VkID0gbXAtPm1hX3VzZWQ7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICBpZiAoZXAgPT0gTlVMTCkgewotICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKy8qIEZhc3QgdmVyc2lvbiBvZiBnbG9iYWwgdmFsdWUgbG9va3VwLgorICogTG9va3VwIGluIGdsb2JhbHMsIHRoZW4gYnVpbHRpbnMuCisgKi8KK1B5T2JqZWN0ICoKK19QeURpY3RfTG9hZEdsb2JhbChQeURpY3RPYmplY3QgKmdsb2JhbHMsIFB5RGljdE9iamVjdCAqYnVpbHRpbnMsIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlPYmplY3QgKng7CisgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7CisgICAgICAgIGlmIChoYXNoICE9IC0xKSB7CisgICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZTsKKyAgICAgICAgICAgIGUgPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7CisgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICAgICAgZSA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChpbnNlcnRkaWN0X2J5X2VudHJ5KG1wLCBrZXksIGhhc2gsIGVwLCB2YWx1ZSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogSWYgd2UgYWRkZWQgYSBrZXksIHdlIGNhbiBzYWZlbHkgcmVzaXplLiAgT3RoZXJ3aXNlIGp1c3QgcmV0dXJuIQotICAgICAqIElmIGZpbGwgPj0gMi8zIHNpemUsIGFkanVzdCBzaXplLiAgTm9ybWFsbHksIHRoaXMgZG91YmxlcyBvcgotICAgICAqIHF1YWR1cGxlcyB0aGUgc2l6ZSwgYnV0IGl0J3MgYWxzbyBwb3NzaWJsZSBmb3IgdGhlIGRpY3QgdG8gc2hyaW5rCi0gICAgICogKGlmIG1hX2ZpbGwgaXMgbXVjaCBsYXJnZXIgdGhhbiBtYV91c2VkLCBtZWFuaW5nIGEgbG90IG9mIGRpY3QKLSAgICAgKiBrZXlzIGhhdmUgYmVlbiAqIGRlbGV0ZWQpLgotICAgICAqCi0gICAgICogUXVhZHJ1cGxpbmcgdGhlIHNpemUgaW1wcm92ZXMgYXZlcmFnZSBkaWN0aW9uYXJ5IHNwYXJzZW5lc3MKLSAgICAgKiAocmVkdWNpbmcgY29sbGlzaW9ucykgYXQgdGhlIGNvc3Qgb2Ygc29tZSBtZW1vcnkgYW5kIGl0ZXJhdGlvbgotICAgICAqIHNwZWVkICh3aGljaCBsb29wcyBvdmVyIGV2ZXJ5IHBvc3NpYmxlIGVudHJ5KS4gIEl0IGFsc28gaGFsdmVzCi0gICAgICogdGhlIG51bWJlciBvZiBleHBlbnNpdmUgcmVzaXplIG9wZXJhdGlvbnMgaW4gYSBncm93aW5nIGRpY3Rpb25hcnkuCi0gICAgICoKLSAgICAgKiBWZXJ5IGxhcmdlIGRpY3Rpb25hcmllcyAob3ZlciA1MEsgaXRlbXMpIHVzZSBkb3VibGluZyBpbnN0ZWFkLgotICAgICAqIFRoaXMgbWF5IGhlbHAgYXBwbGljYXRpb25zIHdpdGggc2V2ZXJlIG1lbW9yeSBjb25zdHJhaW50cy4KLSAgICAgKi8KLSAgICBpZiAoIShtcC0+bWFfdXNlZCA+IG5fdXNlZCAmJiBtcC0+bWFfZmlsbCozID49IChtcC0+bWFfbWFzaysxKSoyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCA+IDUwMDAwID8gMiA6IDQpICogbXAtPm1hX3VzZWQpOworICAgIHggPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilnbG9iYWxzLCBrZXkpOworICAgIGlmICh4ICE9IE5VTEwpCisgICAgICAgIHJldHVybiB4OworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopYnVpbHRpbnMsIGtleSk7CiB9CiAKIC8qIENBVVRJT046IFB5RGljdF9TZXRJdGVtKCkgbXVzdCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCByZXNpemUgdGhlCkBAIC04MzMsMzYgKzExODUsMzcgQEAKICAqIHJlbW92ZSB0aGVtLgogICovCiBpbnQKLVB5RGljdF9TZXRJdGVtKHJlZ2lzdGVyIFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQorUHlEaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2g7Ci0KKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBhc3NlcnQoa2V5KTsKICAgICBhc3NlcnQodmFsdWUpOwotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7Ci0gICAgICAgIGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0gICAgfQotICAgIGVsc2UgeworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gZGljdF9zZXRfaXRlbV9ieV9oYXNoX29yX2VudHJ5KG9wLCBrZXksIGhhc2gsIE5VTEwsIHZhbHVlKTsKKworICAgIC8qIGluc2VydGRpY3QoKSBoYW5kbGVzIGFueSByZXNpemluZyB0aGF0IG1pZ2h0IGJlIG5lY2Vzc2FyeSAqLworICAgIHJldHVybiBpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKTsKIH0KIAogaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcDsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgaGFzaDsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7Ci0gICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwpAQCAtODcwLDI3ICsxMjIzLDMwIEBACiAgICAgfQogICAgIGFzc2VydChrZXkpOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoZXAtPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBzZXRfa2V5X2Vycm9yKGtleSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgb2xkX3ZhbHVlID0gZXAtPm1lX3ZhbHVlOwotICAgIGVwLT5tZV92YWx1ZSA9IE5VTEw7CisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07CisgICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgICAgIFB5X0lOQ1JFRihkdW1teSk7CisgICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOworICAgIH0KICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKLSAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg5OCw2OSArMTI1NCw3MCBAQAogUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwotICAgIFB5RGljdEVudHJ5ICplcCwgKnRhYmxlOwotICAgIGludCB0YWJsZV9pc19tYWxsb2NlZDsKLSAgICBQeV9zc2l6ZV90IGZpbGw7Ci0gICAgUHlEaWN0RW50cnkgc21hbGxfY29weVtQeURpY3RfTUlOU0laRV07Ci0jaWZkZWYgUHlfREVCVUcKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpvbGRrZXlzOworICAgIFB5T2JqZWN0ICoqb2xkdmFsdWVzOwogICAgIFB5X3NzaXplX3QgaSwgbjsKLSNlbmRpZgogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQogICAgICAgICByZXR1cm47CisgICAgbXAgPSAoKFB5RGljdE9iamVjdCAqKW9wKTsKKyAgICBvbGRrZXlzID0gbXAtPm1hX2tleXM7CisgICAgb2xkdmFsdWVzID0gbXAtPm1hX3ZhbHVlczsKKyAgICBpZiAob2xkdmFsdWVzID09IGVtcHR5X3ZhbHVlcykKKyAgICAgICAgcmV0dXJuOworICAgIC8qIEVtcHR5IHRoZSBkaWN0Li4uICovCisgICAgREtfSU5DUkVGKFB5X0VNUFRZX0tFWVMpOworICAgIG1wLT5tYV9rZXlzID0gUHlfRU1QVFlfS0VZUzsKKyAgICBtcC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOworICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICAvKiAuLi50aGVuIGNsZWFyIHRoZSBrZXlzIGFuZCB2YWx1ZXMgKi8KKyAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgbiA9IERLX1NJWkUob2xka2V5cyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICBQeV9DTEVBUihvbGR2YWx1ZXNbaV0pOworICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgIH0KK30KKworLyogUmV0dXJucyAtMSBpZiBubyBtb3JlIGl0ZW1zIChvciBvcCBpcyBub3QgYSBkaWN0KSwKKyAqIGluZGV4IG9mIGl0ZW0gb3RoZXJ3aXNlLiBTdG9yZXMgdmFsdWUgaW4gcHZhbHVlCisgKi8KK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorZGljdF9uZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqKnB2YWx1ZSkKK3sKKyAgICBQeV9zc2l6ZV90IG1hc2ssIG9mZnNldDsKKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOworCisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCisgICAgICAgIHJldHVybiAtMTsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSNpZmRlZiBQeV9ERUJVRwotICAgIG4gPSBtcC0+bWFfbWFzayArIDE7Ci0gICAgaSA9IDA7Ci0jZW5kaWYKLQotICAgIHRhYmxlID0gbXAtPm1hX3RhYmxlOwotICAgIGFzc2VydCh0YWJsZSAhPSBOVUxMKTsKLSAgICB0YWJsZV9pc19tYWxsb2NlZCA9IHRhYmxlICE9IG1wLT5tYV9zbWFsbHRhYmxlOwotCi0gICAgLyogVGhpcyBpcyBkZWxpY2F0ZS4gIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyB0aGUgZGljdCwKLSAgICAgKiBkZWNyZWZzIGNhbiBjYXVzZSB0aGUgZGljdCB0byBtdXRhdGUuICBUbyBhdm9pZCBmYXRhbCBjb25mdXNpb24KLSAgICAgKiAodm9pY2Ugb2YgZXhwZXJpZW5jZSksIHdlIGhhdmUgdG8gbWFrZSB0aGUgZGljdCBlbXB0eSBiZWZvcmUKLSAgICAgKiBjbGVhcmluZyB0aGUgc2xvdHMsIGFuZCBuZXZlciByZWZlciB0byBhbnl0aGluZyB2aWEgbXAtPnh4eCB3aGlsZQotICAgICAqIGNsZWFyaW5nLgotICAgICAqLwotICAgIGZpbGwgPSBtcC0+bWFfZmlsbDsKLSAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCi0gICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOwotCi0gICAgZWxzZSBpZiAoZmlsbCA+IDApIHsKLSAgICAgICAgLyogSXQncyBhIHNtYWxsIHRhYmxlIHdpdGggc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY2xlYXJlZC4KLSAgICAgICAgICogQWZyYWlkIHRoZSBvbmx5IHNhZmUgd2F5IGlzIHRvIGNvcHkgdGhlIGRpY3QgZW50cmllcyBpbnRvCi0gICAgICAgICAqIGFub3RoZXIgc21hbGwgdGFibGUgZmlyc3QuCi0gICAgICAgICAqLwotICAgICAgICBtZW1jcHkoc21hbGxfY29weSwgdGFibGUsIHNpemVvZihzbWFsbF9jb3B5KSk7Ci0gICAgICAgIHRhYmxlID0gc21hbGxfY29weTsKLSAgICAgICAgRU1QVFlfVE9fTUlOU0laRShtcCk7CisgICAgaWYgKGkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9Ci0gICAgLyogZWxzZSBpdCdzIGEgc21hbGwgdGFibGUgdGhhdCdzIGFscmVhZHkgZW1wdHkgKi8KLQotICAgIC8qIE5vdyB3ZSBjYW4gZmluYWxseSBjbGVhciB0aGluZ3MuICBJZiBDIGhhZCByZWZjb3VudHMsIHdlIGNvdWxkCi0gICAgICogYXNzZXJ0IHRoYXQgdGhlIHJlZmNvdW50IG9uIHRhYmxlIGlzIDEgbm93LCBpLmUuIHRoYXQgdGhpcyBmdW5jdGlvbgotICAgICAqIGhhcyB1bmlxdWUgYWNjZXNzIHRvIGl0LCBzbyBkZWNyZWYgc2lkZS1lZmZlY3RzIGNhbid0IGFsdGVyIGl0LgotICAgICAqLwotICAgIGZvciAoZXAgPSB0YWJsZTsgZmlsbCA+IDA7ICsrZXApIHsKLSNpZmRlZiBQeV9ERUJVRwotICAgICAgICBhc3NlcnQoaSA8IG4pOwotICAgICAgICArK2k7Ci0jZW5kaWYKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkpIHsKLSAgICAgICAgICAgIC0tZmlsbDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlcC0+bWVfa2V5KTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoZXAtPm1lX3ZhbHVlKTsKLSAgICAgICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0jZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KLQotICAgIGlmICh0YWJsZV9pc19tYWxsb2NlZCkKLSAgICAgICAgUHlNZW1fREVMKHRhYmxlKTsKKyAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICBpZiAoaSA+IG1hc2spCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAocHZhbHVlKQorICAgICAgICAqcHZhbHVlID0gKnZhbHVlX3B0cjsKKyAgICByZXR1cm4gaTsKIH0KIAogLyoKQEAgLTk4MSw3NSArMTMzOCw1OSBAQAogaW50CiBQeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwgUHlPYmplY3QgKipwdmFsdWUpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7Ci0KLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGkgPSAqcHBvczsKKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5X3NzaXplX3QgaSA9IGRpY3RfbmV4dChvcCwgKnBwb3MsIHB2YWx1ZSk7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICByZXR1cm4gMDsKLSAgICBlcCA9ICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV90YWJsZTsKLSAgICBtYXNrID0gKChQeURpY3RPYmplY3QgKilvcCktPm1hX21hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiBlcFtpXS5tZV92YWx1ZSA9PSBOVUxMKQotICAgICAgICBpKys7CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CiAgICAgKnBwb3MgPSBpKzE7Ci0gICAgaWYgKGkgPiBtYXNrKQotICAgICAgICByZXR1cm4gMDsKICAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBlcFtpXS5tZV9rZXk7Ci0gICAgaWYgKHB2YWx1ZSkKLSAgICAgICAgKnB2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlOworICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICByZXR1cm4gMTsKIH0KIAotLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfTmV4dCB0aGF0IHJldHVybnMgYSBoYXNoIHZhbHVlIGluIGFkZGl0aW9uIHRvIHRoZSBrZXkgYW5kIHZhbHVlLiovCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24KKyAqIHRvIHRoZSBrZXkgYW5kIHZhbHVlLgorICovCiBpbnQKLV9QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCitfUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksCisgICAgICAgICAgICAgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCiB7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7Ci0KLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGkgPSAqcHBvczsKKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5X3NzaXplX3QgaSA9IGRpY3RfbmV4dChvcCwgKnBwb3MsIHB2YWx1ZSk7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICByZXR1cm4gMDsKLSAgICBlcCA9ICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV90YWJsZTsKLSAgICBtYXNrID0gKChQeURpY3RPYmplY3QgKilvcCktPm1hX21hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiBlcFtpXS5tZV92YWx1ZSA9PSBOVUxMKQotICAgICAgICBpKys7CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CiAgICAgKnBwb3MgPSBpKzE7Ci0gICAgaWYgKGkgPiBtYXNrKQotICAgICAgICByZXR1cm4gMDsKLSAgICAqcGhhc2ggPSBlcFtpXS5tZV9oYXNoOworICAgICpwaGFzaCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2hhc2g7CiAgICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gZXBbaV0ubWVfa2V5OwotICAgIGlmIChwdmFsdWUpCi0gICAgICAgICpwdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgcmV0dXJuIDE7CiB9CiAKIC8qIE1ldGhvZHMgKi8KIAogc3RhdGljIHZvaWQKLWRpY3RfZGVhbGxvYyhyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wKQorZGljdF9kZWFsbG9jKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5X3NzaXplX3QgZmlsbCA9IG1wLT5tYV9maWxsOworICAgIFB5T2JqZWN0ICoqdmFsdWVzID0gbXAtPm1hX3ZhbHVlczsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobXApOwogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4obXApCi0gICAgZm9yIChlcCA9IG1wLT5tYV90YWJsZTsgZmlsbCA+IDA7IGVwKyspIHsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkpIHsKLSAgICAgICAgICAgIC0tZmlsbDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlcC0+bWVfa2V5KTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoZXAtPm1lX3ZhbHVlKTsKKyAgICBpZiAodmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKHZhbHVlcyk7CiAgICAgICAgIH0KKyAgICAgICAgREtfREVDUkVGKGtleXMpOwogICAgIH0KLSAgICBpZiAobXAtPm1hX3RhYmxlICE9IG1wLT5tYV9zbWFsbHRhYmxlKQotICAgICAgICBQeU1lbV9ERUwobXAtPm1hX3RhYmxlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICAgICAgREtfREVDUkVGKGtleXMpOworICAgIH0KICAgICBpZiAobnVtZnJlZSA8IFB5RGljdF9NQVhGUkVFTElTVCAmJiBQeV9UWVBFKG1wKSA9PSAmUHlEaWN0X1R5cGUpCiAgICAgICAgIGZyZWVfbGlzdFtudW1mcmVlKytdID0gbXA7CiAgICAgZWxzZQpAQCAtMTA1Nyw2ICsxMzk4LDcgQEAKICAgICBQeV9UUkFTSENBTl9TQUZFX0VORChtcCkKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9yZXByKFB5RGljdE9iamVjdCAqbXApCiB7CkBAIC0xMDg4LDExICsxNDMwLDEzIEBACiAgICAgaSA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KChQeU9iamVjdCAqKW1wLCAmaSwgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBpbnQgc3RhdHVzOwotICAgICAgICAvKiBQcmV2ZW50IHJlcHIgZnJvbSBkZWxldGluZyB2YWx1ZSBkdXJpbmcga2V5IGZvcm1hdC4gKi8KKyAgICAgICAgLyogUHJldmVudCByZXByIGZyb20gZGVsZXRpbmcga2V5IG9yIHZhbHVlIGR1cmluZyBrZXkgZm9ybWF0LiAqLworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgcyA9IFB5T2JqZWN0X1JlcHIoa2V5KTsKICAgICAgICAgUHlVbmljb2RlX0FwcGVuZCgmcywgY29sb24pOwogICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZzLCBQeU9iamVjdF9SZXByKHZhbHVlKSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBEb25lOwpAQCAtMTE0NywyNiArMTQ5MSwyNSBAQAogewogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEVudHJ5ICplcDsKLSAgICBhc3NlcnQobXAtPm1hX3RhYmxlICE9IE5VTEwpOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBlcC0+bWVfdmFsdWU7CisgICAgdiA9ICp2YWx1ZV9hZGRyOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChtcCkpIHsKICAgICAgICAgICAgIC8qIExvb2sgdXAgX19taXNzaW5nX18gbWV0aG9kIGlmIHdlJ3JlIGEgc3ViY2xhc3MuICovCiAgICAgICAgICAgICBQeU9iamVjdCAqbWlzc2luZywgKnJlczsKLSAgICAgICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbWlzc2luZ19zdHIgPSBOVUxMOwotICAgICAgICAgICAgbWlzc2luZyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKChQeU9iamVjdCAqKW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX21pc3NpbmdfXyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pc3Npbmdfc3RyKTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbWlzc2luZ19fKTsKKyAgICAgICAgICAgIG1pc3NpbmcgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCgoUHlPYmplY3QgKiltcCwgJlB5SWRfX19taXNzaW5nX18pOwogICAgICAgICAgICAgaWYgKG1pc3NpbmcgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobWlzc2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgTlVMTCk7CkBAIC0xMjA0LDggKzE1NDcsOSBAQAogewogICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICp2OwogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgajsKLSAgICBQeURpY3RFbnRyeSAqZXA7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBuOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IHNpemUsIG4sIG9mZnNldDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICBhZ2FpbjoKICAgICBuID0gbXAtPm1hX3VzZWQ7CkBAIC0xMjE5LDE1ICsxNTYzLDI0IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgZXAgPSBtcC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IG1wLT5tYV9tYXNrOwotICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDw9IG1hc2s7IGkrKykgewotICAgICAgICBpZiAoZXBbaV0ubWVfdmFsdWUgIT0gTlVMTCkgeworICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZXBbMF0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmICgqdmFsdWVfcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBlcFtpXS5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2LCBqLCBrZXkpOwogICAgICAgICAgICAgaisrOwogICAgICAgICB9CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgfQogICAgIGFzc2VydChqID09IG4pOwogICAgIHJldHVybiB2OwpAQCAtMTIzOCw4ICsxNTkxLDggQEAKIHsKICAgICByZWdpc3RlciBQeU9iamVjdCAqdjsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIGo7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5X3NzaXplX3QgbWFzaywgbjsKKyAgICBQeV9zc2l6ZV90IHNpemUsIG4sIG9mZnNldDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICBhZ2FpbjoKICAgICBuID0gbXAtPm1hX3VzZWQ7CkBAIC0xMjUzLDExICsxNjA2LDE5IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgZXAgPSBtcC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IG1wLT5tYV9tYXNrOwotICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDw9IG1hc2s7IGkrKykgewotICAgICAgICBpZiAoZXBbaV0ubWVfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gZXBbaV0ubWVfdmFsdWU7CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlX3B0cjsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKKyAgICAgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0odiwgaiwgdmFsdWUpOwogICAgICAgICAgICAgaisrOwpAQCAtMTI3Miw5ICsxNjMzLDEwIEBACiB7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnY7CiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBqLCBuOwotICAgIFB5X3NzaXplX3QgbWFzazsKLSAgICBQeU9iamVjdCAqaXRlbSwgKmtleSwgKnZhbHVlOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IHNpemUsIG9mZnNldDsKKyAgICBQeU9iamVjdCAqaXRlbSwgKmtleTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICAvKiBQcmVhbGxvY2F0ZSB0aGUgbGlzdCBvZiB0dXBsZXMsIHRvIGF2b2lkIGFsbG9jYXRpb25zIGR1cmluZwogICAgICAqIHRoZSBsb29wIG92ZXIgdGhlIGl0ZW1zLCB3aGljaCBjb3VsZCB0cmlnZ2VyIEdDLCB3aGljaApAQCAtMTMwMSwxMCArMTY2MywyMCBAQAogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KICAgICAvKiBOb3RoaW5nIHdlIGRvIGJlbG93IG1ha2VzIGFueSBmdW5jdGlvbiBjYWxscy4gKi8KLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmICgodmFsdWU9ZXBbaV0ubWVfdmFsdWUpICE9IE5VTEwpIHsKKyAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzOworICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZXBbMF0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9ICp2YWx1ZV9wdHI7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBrZXkgPSBlcFtpXS5tZV9rZXk7CiAgICAgICAgICAgICBpdGVtID0gUHlMaXN0X0dFVF9JVEVNKHYsIGopOwogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CkBAIC0xMzQ5LDggKzE3MjEsNiBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KHNlcSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM3MCw4ICsxNzQwLDYgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2hpbGUgKF9QeVNldF9OZXh0RW50cnkoc2VxLCAmcG9zLCAma2V5LCAmaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQyNCw3ICsxNzkyLDggQEAKICAgICAgICAgcmVzdWx0ID0gLTE7CiAKICAgICBlbHNlIGlmIChhcmcgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhhcmcsICJrZXlzIikpCisgICAgICAgIF9QeV9JREVOVElGSUVSKGtleXMpOworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChhcmcsICZQeUlkX2tleXMpKQogICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X01lcmdlKHNlbGYsIGFyZywgMSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9NZXJnZUZyb21TZXEyKHNlbGYsIGFyZywgMSk7CkBAIC0xNTM2LDggKzE5MDUsOCBAQAogUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsICpvdGhlcjsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0RW50cnkgKmVudHJ5OworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CiAKICAgICAvKiBXZSBhY2NlcHQgZm9yIHRoZSBhcmd1bWVudCBlaXRoZXIgYSBjb25jcmV0ZSBkaWN0aW9uYXJ5IG9iamVjdCwKICAgICAgKiBvciBhbiBhYnN0cmFjdCAibWFwcGluZyIgb2JqZWN0LiAgRm9yIHRoZSBmb3JtZXIsIHdlIGNhbiBkbwpAQCAtMTU2NCwyMCArMTkzMywyMyBAQAogICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcgaXRlbXMuICBFeHBlY3QKICAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKG1wLT5tYV9maWxsICsgb3RoZXItPm1hX3VzZWQpKjMgPj0gKG1wLT5tYV9tYXNrKzEpKjIpIHsKLSAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSoyKSAhPSAwKQorICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSAqIDMgPCBvdGhlci0+bWFfdXNlZCAqIDIpCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFfbWFzazsgaSsrKSB7Ci0gICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfdGFibGVbaV07Ci0gICAgICAgICAgICBpZiAoZW50cnktPm1lX3ZhbHVlICE9IE5VTEwgJiYKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUob3RoZXItPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgICAgIGlmIChvdGhlci0+bWFfdmFsdWVzKQorICAgICAgICAgICAgICAgIHZhbHVlID0gb3RoZXItPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGVudHJ5LT5tZV92YWx1ZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICE9IE5VTEwgJiYKICAgICAgICAgICAgICAgICAob3ZlcnJpZGUgfHwKICAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0oYSwgZW50cnktPm1lX2tleSkgPT0gTlVMTCkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZW50cnktPm1lX2tleSk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVudHJ5LT5tZV92YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGVudHJ5LT5tZV9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1lX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1lX3ZhbHVlKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE2MzksMTEgKzIwMTEsMzcgQEAKIFB5RGljdF9Db3B5KFB5T2JqZWN0ICpvKQogewogICAgIFB5T2JqZWN0ICpjb3B5OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogCiAgICAgaWYgKG8gPT0gTlVMTCB8fCAhUHlEaWN0X0NoZWNrKG8pKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopbzsKKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBQeURpY3RPYmplY3QgKnNwbGl0X2NvcHk7CisgICAgICAgIFB5T2JqZWN0ICoqbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhES19TSVpFKG1wLT5tYV9rZXlzKSk7CisgICAgICAgIGlmIChuZXd2YWx1ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBzcGxpdF9jb3B5ID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKKyAgICAgICAgaWYgKHNwbGl0X2NvcHkgPT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZV92YWx1ZXMobmV3dmFsdWVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlcyA9IG5ld3ZhbHVlczsKKyAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOworICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CisgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7CisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOworICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG1wKSkKKyAgICAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhzcGxpdF9jb3B5KTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNwbGl0X2NvcHk7CisgICAgfQogICAgIGNvcHkgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKGNvcHkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNzA1LDE0ICsyMTAzLDE4IEBACiAgICAgaWYgKGEtPm1hX3VzZWQgIT0gYi0+bWFfdXNlZCkKICAgICAgICAgLyogY2FuJ3QgYmUgZXF1YWwgaWYgIyBvZiBlbnRyaWVzIGRpZmZlciAqLwogICAgICAgICByZXR1cm4gMDsKLQogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPD0gYS0+bWFfbWFzazsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphdmFsID0gYS0+bWFfdGFibGVbaV0ubWVfdmFsdWU7CisgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUoYS0+bWFfa2V5cyk7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmYS0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmF2YWw7CisgICAgICAgIGlmIChhLT5tYV92YWx1ZXMpCisgICAgICAgICAgICBhdmFsID0gYS0+bWFfdmFsdWVzW2ldOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhdmFsID0gZXAtPm1lX3ZhbHVlOwogICAgICAgICBpZiAoYXZhbCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpbnQgY21wOwogICAgICAgICAgICAgUHlPYmplY3QgKmJ2YWw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gYS0+bWFfdGFibGVbaV0ubWVfa2V5OworICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICAvKiB0ZW1wb3JhcmlseSBidW1wIGF2YWwncyByZWZjb3VudCB0byBlbnN1cmUgaXQgc3RheXMKICAgICAgICAgICAgICAgIGFsaXZlIHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBpdCAqLwogICAgICAgICAgICAgUHlfSU5DUkVGKGF2YWwpOwpAQCAtMTczMyw3ICsyMTM1LDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMTsKLSB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQpAQCAtMTc1NCwyNCArMjE1NiwyNSBAQAogICAgICAgICByZXMgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKICAgICBQeV9JTkNSRUYocmVzKTsKICAgICByZXR1cm4gcmVzOwotIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfY29udGFpbnMocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3ODEsMjggKzIxODQsMjggQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSBlcC0+bWVfdmFsdWU7CisgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICAgICB2YWwgPSBmYWlsb2JqOwogICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CiAKLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3Rfc2V0ZGVmYXVsdChyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE4MTAsMjcgKzIyMTMsNDAgQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwgMSwgMiwgJmtleSwgJmZhaWxvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gZXAtPm1lX3ZhbHVlOworICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwogICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGljdF9zZXRfaXRlbV9ieV9oYXNoX29yX2VudHJ5KChQeU9iamVjdCopbXAsIGtleSwgaGFzaCwgZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG9iaikgPT0gMCkKLSAgICAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgICAgIFB5X0lOQ1JFRihmYWlsb2JqKTsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgfQorICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBmYWlsb2JqKTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICAqdmFsdWVfYWRkciA9IGZhaWxvYmo7CisgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgbXAtPm1hX3VzZWQrKzsKICAgICB9Ci0gICAgUHlfWElOQ1JFRih2YWwpOworICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTE4NDYsOSArMjI2MiwxMCBAQAogZGljdF9wb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogICAgIFB5T2JqZWN0ICprZXksICpkZWZsdCA9IE5VTEw7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9wIiwgMSwgMiwgJmtleSwgJmRlZmx0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODYxLDE1ICsyMjc4LDE2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CiAgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CkBAIC0xODc3LDEzICsyMjk1LDE1IEBACiAgICAgICAgIHNldF9rZXlfZXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQogICAgIHJldHVybiBvbGRfdmFsdWU7CiB9CiAKQEAgLTE4OTEsOSArMjMxMSwxMCBAQAogZGljdF9wb3BpdGVtKFB5RGljdE9iamVjdCAqbXApCiB7CiAgICAgUHlfaGFzaF90IGkgPSAwOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAorCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0xOTEyLDI1ICsyMzMzLDM0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAicG9waXRlbSgpOiBkaWN0aW9uYXJ5IGlzIGVtcHR5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBDb252ZXJ0IHNwbGl0IHRhYmxlIHRvIGNvbWJpbmVkIHRhYmxlICovCisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3Rfc3BsaXQpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CiAgICAgLyogU2V0IGVwIHRvICJ0aGUgZmlyc3QiIGRpY3QgZW50cnkgd2l0aCBhIHZhbHVlLiAgV2UgYWJ1c2UgdGhlIGhhc2gKICAgICAgKiBmaWVsZCBvZiBzbG90IDAgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXI6CiAgICAgICogSWYgc2xvdCAwIGhhcyBhIHZhbHVlLCB1c2Ugc2xvdCAwLgogICAgICAqIEVsc2Ugc2xvdCAwIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXIsCiAgICAgICogYW5kIHdlIHVzZSBpdHMgaGFzaCB2YWx1ZSBhcyB0aGUgZmlyc3QgaW5kZXggdG8gbG9vay4KICAgICAgKi8KLSAgICBlcCA9ICZtcC0+bWFfdGFibGVbMF07CisgICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CiAgICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwogICAgICAgICBpID0gZXAtPm1lX2hhc2g7CiAgICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKICAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKICAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCiAgICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1wLT5tYV9tYXNrIHx8IGkgPCAxKQorICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCiAgICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX3RhYmxlW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGkgPiBtcC0+bWFfbWFzaykKKyAgICAgICAgICAgIGlmIChpID4gbWFzaykKICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5NDAsMjEgKzIzNzAsMzQgQEAKICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CiAgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGFzc2VydChtcC0+bWFfdGFibGVbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX3RhYmxlWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7CisgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgIFB5T2JqZWN0ICpwazsKLSAgICBQeU9iamVjdCAqcHY7Ci0KLSAgICB3aGlsZSAoUHlEaWN0X05leHQob3AsICZpLCAmcGssICZwdikpIHsKLSAgICAgICAgUHlfVklTSVQocGspOwotICAgICAgICBQeV9WSVNJVChwdik7CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUobXAtPm1hX2tleXMpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTE5NzEsMTQgKzI0MTQsMjUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3NpemVvZihQeURpY3RPYmplY3QgKm1wKQogewotICAgIFB5X3NzaXplX3QgcmVzOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgcmVzOwogCisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOwogICAgIHJlcyA9IHNpemVvZihQeURpY3RPYmplY3QpOwotICAgIGlmIChtcC0+bWFfdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGUpCi0gICAgICAgIHJlcyA9IHJlcyArIChtcC0+bWFfbWFzayArIDEpICogc2l6ZW9mKFB5RGljdEVudHJ5KTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykKKyAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCisgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLworICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCisgICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCitQeV9zc2l6ZV90CitfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgcmV0dXJuIHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChES19TSVpFKGtleXMpLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKK30KKwogUHlEb2NfU1RSVkFSKGNvbnRhaW5zX19kb2NfXywKICJELl9fY29udGFpbnNfXyhrKSAtPiBUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UiKTsKIApAQCAtMjA2NywxNiArMjUyMSwxNyBAQAogewogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7Ci0gICAgcmV0dXJuIGVwID09IE5VTEwgPyAtMSA6IChlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTIwODQsMTAgKzI1MzksMTEgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7Ci0gICAgcmV0dXJuIGVwID09IE5VTEwgPyAtMSA6IChlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSGFjayB0byBpbXBsZW1lbnQgImtleSBpbiBkaWN0IiAqLwpAQCAtMjExMywyMiArMjU2OSwxNyBAQAogICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIFB5RGljdE9iamVjdCAqZCA9IChQeURpY3RPYmplY3QgKilzZWxmOwotICAgICAgICAvKiBJdCdzIGd1YXJhbnRlZWQgdGhhdCB0cC0+YWxsb2MgemVyb2VkIG91dCB0aGUgc3RydWN0LiAqLwotICAgICAgICBhc3NlcnQoZC0+bWFfdGFibGUgPT0gTlVMTCAmJiBkLT5tYV9maWxsID09IDAgJiYgZC0+bWFfdXNlZCA9PSAwKTsKLSAgICAgICAgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMoZCk7Ci0gICAgICAgIGQtPm1hX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7CisgICAgICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpOworICAgICAgICAvKiBYWFggLSBTaG91bGQgd2UgcmFpc2UgYSBuby1tZW1vcnkgZXJyb3I/ICovCisgICAgICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgIERLX0lOQ1JFRihQeV9FTVBUWV9LRVlTKTsKKyAgICAgICAgICAgIGQtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOworICAgICAgICAgICAgZC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOworICAgICAgICB9CisgICAgICAgIGQtPm1hX3VzZWQgPSAwOwogICAgICAgICAvKiBUaGUgb2JqZWN0IGhhcyBiZWVuIGltcGxpY2l0bHkgdHJhY2tlZCBieSB0cF9hbGxvYyAqLwogICAgICAgICBpZiAodHlwZSA9PSAmUHlEaWN0X1R5cGUpCiAgICAgICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkKTsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgICsrY3JlYXRlZDsKLSNlbmRpZgotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKGQpKQotICAgICAgICAgICAgY291bnRfdHJhY2tlZCsrOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb3VudF91bnRyYWNrZWQrKzsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTIxOTksNiArMjY1MCwxNiBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSkKK3sKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW0oZHAsIGt2KTsKK30KKwogLyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGljdGlvbmFyeSBpbnRlcmZhY2UgKi8KIAogUHlPYmplY3QgKgpAQCAtMjIxNCw2ICsyNjc1LDE2IEBACiB9CiAKIGludAorX1B5RGljdF9TZXRJdGVtSWQoUHlPYmplY3QgKnYsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtKHYsIGt2LCBpdGVtKTsKK30KKworaW50CiBQeURpY3RfU2V0SXRlbVN0cmluZyhQeU9iamVjdCAqdiwgY29uc3QgY2hhciAqa2V5LCBQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqa3Y7CkBAIC0yMzA0LDE4ICsyNzc1LDI2IEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX3JlZHVjZShkaWN0aXRlcm9iamVjdCAqZGkpOworCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBkaWN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pZGljdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMzMSwxNSArMjgxMCwyNSBAQAogICAgIGkgPSBkaS0+ZGlfcG9zOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IGQtPm1hX21hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiBlcFtpXS5tZV92YWx1ZSA9PSBOVUxMKQorICAgIGsgPSBkLT5tYV9rZXlzOworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIG1hc2sgPSBES19TSVpFKGspLTE7CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOworICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBlcFtpXS5tZV9rZXk7CisgICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMjM4NSw5ICsyODc0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0MDEsMTcgKzI4OTAsMjYgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKKyAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwogICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgd2hpbGUgKCh2YWx1ZT1lcFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkgeworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGRpLT5sZW4tLTsKKyAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTI0NTcsOSArMjk1NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0aXRlbShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDc1LDEwICsyOTczLDE5IEBACiAgICAgaSA9IGRpLT5kaV9wb3M7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgZXAgPSBkLT5tYV90YWJsZTsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCisgICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBpZiAoZC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7CisgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICBnb3RvIGZhaWw7CkBAIC0yNDkzLDggKzMwMDAsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBlcFtpXS5tZV9rZXk7Ci0gICAgdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKKyAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsKQEAgLTI1NDEsNiArMzA0OCw1MiBAQAogfTsKIAogCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfcmVkdWNlKGRpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBkaWN0aXRlcm9iamVjdCB0bXA7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogY29weSB0aGUgaXRlcnRvciBzdGF0ZSAqLworICAgIHRtcCA9ICpkaTsKKyAgICBQeV9YSU5DUkVGKHRtcC5kaV9kaWN0KTsKKworICAgIC8qIGl0ZXJhdGUgdGhlIHRlbXBvcmFyeSBpbnRvIGEgbGlzdCAqLworICAgIGZvcig7OykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IDA7CisgICAgICAgIGlmIChQeV9UWVBFKGRpKSA9PSAmUHlEaWN0SXRlckl0ZW1fVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dGl0ZW0oJnRtcCk7CisgICAgICAgIGVsc2UgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVyS2V5X1R5cGUpCisgICAgICAgICAgICBlbGVtZW50ID0gZGljdGl0ZXJfaXRlcm5leHRrZXkoJnRtcCk7CisgICAgICAgIGVsc2UgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVyVmFsdWVfVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dHZhbHVlKCZ0bXApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXAuZGlfZGljdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X1hERUNSRUYodG1wLmRpX2RpY3QpOworICAgIC8qIGNoZWNrIGZvciBlcnJvciAqLworICAgIGlmICh0bXAuZGlfZGljdCAhPSBOVUxMKSB7CisgICAgICAgIC8qIHdlIGhhdmUgYW4gZXJyb3IgKi8KKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCBsaXN0KTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVmlldyBvYmplY3RzIGZvciBrZXlzKCksIGl0ZW1zKCksIHZhbHVlcygpLiAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjY0NSwxMCArMzE5OCw4IEBACiAgICAgYXNzZXJ0KFB5RGljdFZpZXdTZXRfQ2hlY2soc2VsZikpOwogICAgIGFzc2VydChvdGhlciAhPSBOVUxMKTsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICYmICFQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICYmICFQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgbGVuX3NlbGYgPSBQeU9iamVjdF9TaXplKHNlbGYpOwogICAgIGlmIChsZW5fc2VsZiA8IDApCkBAIC0yNzQ2LDEwICszMjk3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKGRpZmZlcmVuY2VfdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImRpZmZlcmVuY2VfdXBkYXRlIiwgIk8iLCBvdGhlcik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX2RpZmZlcmVuY2VfdXBkYXRlLCAiTyIsIG90aGVyKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjc2NCwxMCArMzMxNywxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVNldF9OZXcoc2VsZik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihpbnRlcnNlY3Rpb25fdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImludGVyc2VjdGlvbl91cGRhdGUiLCAiTyIsIG90aGVyKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfaW50ZXJzZWN0aW9uX3VwZGF0ZSwgIk8iLCBvdGhlcik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3ODIsMTAgKzMzMzcsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIodXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgInVwZGF0ZSIsICJPIiwgb3RoZXIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF91cGRhdGUsICJPIiwgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yODAwLDEwICszMzU3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKHN5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSk7CisKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUiLCAiTyIsCisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX3N5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSwgIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTMwODIsMyArMzY0MSwxNTEgQEAKIHsKICAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CiB9CisKKy8qIFJldHVybnMgTlVMTCBpZiBjYW5ub3QgYWxsb2NhdGUgYSBuZXcgUHlEaWN0S2V5c09iamVjdCwKKyAgIGJ1dCBkb2VzIG5vdCBzZXQgYW4gZXJyb3IgKi8KK1B5RGljdEtleXNPYmplY3QgKgorX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBpZiAoa2V5cyA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAga2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Rfc3BsaXQ7CisgICAgcmV0dXJuIGtleXM7Cit9CisKKyNkZWZpbmUgQ0FDSEVEX0tFWVModHApICgoKFB5SGVhcFR5cGVPYmplY3QqKXRwKS0+aHRfY2FjaGVkX2tleXMpCisKK1B5T2JqZWN0ICoKK1B5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CisgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkaWN0ID0gKmRpY3RwdHI7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShvYmopOworICAgICAgICBpZiAoKHRwLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpICYmIENBQ0hFRF9LRVlTKHRwKSkgeworICAgICAgICAgICAgREtfSU5DUkVGKENBQ0hFRF9LRVlTKHRwKSk7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBuZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKENBQ0hFRF9LRVlTKHRwKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWElOQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gZGljdDsKK30KKworaW50CitfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlUeXBlT2JqZWN0ICp0cCwgUHlPYmplY3QgKipkaWN0cHRyLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIGludCByZXM7CisgICAgUHlEaWN0S2V5c09iamVjdCAqY2FjaGVkOworCisgICAgYXNzZXJ0KGRpY3RwdHIgIT0gTlVMTCk7CisgICAgaWYgKCh0cC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSAmJiAoY2FjaGVkID0gQ0FDSEVEX0tFWVModHApKSkgeworICAgICAgICBhc3NlcnQoZGljdHB0ciAhPSBOVUxMKTsKKyAgICAgICAgZGljdCA9ICpkaWN0cHRyOworICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBES19JTkNSRUYoY2FjaGVkKTsKKyAgICAgICAgICAgIGRpY3QgPSBuZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKGNhY2hlZCk7CisgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwga2V5KTsKKyAgICAgICAgICAgIGlmIChjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CisgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIC8qIEVpdGhlciB1cGRhdGUgdHAtPmh0X2NhY2hlZF9rZXlzIG9yIGRlbGV0ZSBpdCAqLworICAgICAgICAgICAgICAgIGlmIChjYWNoZWQtPmRrX3JlZmNudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IG1ha2Vfa2V5c19zaGFyZWQoZGljdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CisgICAgICAgICAgICAgICAgaWYgKENBQ0hFRF9LRVlTKHRwKSA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0OworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBrZXkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwga2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZAorX1B5RGljdEtleXNfRGVjUmVmKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgREtfREVDUkVGKGtleXMpOworfQorCisKKy8qIEFSR1NVU0VEICovCitzdGF0aWMgUHlPYmplY3QgKgorZHVtbXlfcmVwcihQeU9iamVjdCAqb3ApCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOworfQorCisvKiBBUkdVU0VEICovCitzdGF0aWMgdm9pZAorZHVtbXlfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQoreworICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgorICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgZHVtbXkta2V5IG91dCBvZiBleGlzdGVuY2UuCisgICAgICovCisgICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIDxkdW1teSBrZXk+Iik7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEaWN0RHVtbXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICI8ZHVtbXkga2V5PiB0eXBlIiwKKyAgICAwLAorICAgIDAsCisgICAgZHVtbXlfZGVhbGxvYywgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgZHVtbXlfcmVwciwgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLworfTsKKworc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3QgPSB7CisgIF9QeU9iamVjdF9FWFRSQV9JTklUCisgIDIsICZQeURpY3REdW1teV9UeXBlCit9OworCmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IDAwYTMzNDYuLmM0NThjZmUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0xNTgsNiArMTU4LDIyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VudW1fcmVkdWNlKGVudW1vYmplY3QgKmVuKQoreworICAgIGlmIChlbi0+ZW5fbG9uZ2luZGV4ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUoZW4pLCBlbi0+ZW5fc2l0LCBlbi0+ZW5fbG9uZ2luZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoZW4pLCBlbi0+ZW5fc2l0LCBlbi0+ZW5faW5kZXgpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBlbnVtX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZW51bV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGVudW1fZG9jLAogImVudW1lcmF0ZShpdGVyYWJsZVssIHN0YXJ0XSkgLT4gaXRlcmF0b3IgZm9yIGluZGV4LCB2YWx1ZSBvZiBpdGVyYWJsZVxuIgogIlxuIgpAQCAtMTk3LDcgKzIxMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWVudW1fbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZW51bV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIyNCw4ICsyNDAsOCBAQAogewogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeU9iamVjdCAqc2VxLCAqcmV2ZXJzZWRfbWV0aDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJldmVyc2VkX2NhY2hlID0gTlVMTDsKICAgICByZXZlcnNlZG9iamVjdCAqcm87CisgICAgX1B5X0lERU5USUZJRVIoX19yZXZlcnNlZF9fKTsKIAogICAgIGlmICh0eXBlID09ICZQeVJldmVyc2VkX1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJyZXZlcnNlZCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMzLDcgKzI0OSw3IEBACiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmV2ZXJzZWQiLCAxLCAxLCAmc2VxKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgIl9fcmV2ZXJzZWRfXyIsICZyZXZlcnNlZF9jYWNoZSk7CisgICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgJlB5SWRfX19yZXZlcnNlZF9fKTsKICAgICBpZiAocmV2ZXJzZWRfbWV0aCAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHJldmVyc2VkX21ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CkBAIC0zMTksOCArMzM1LDQwIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JldmVyc2VkX3JlZHVjZShyZXZlcnNlZG9iamVjdCAqcm8pCit7CisgICAgaWYgKHJvLT5zZXEpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pbiIsIFB5X1RZUEUocm8pLCByby0+c2VxLCByby0+aW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCkpIiwgUHlfVFlQRShybykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmV2ZXJzZWRfc2V0c3RhdGUocmV2ZXJzZWRvYmplY3QgKnJvLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocm8tPnNlcSAhPSAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5U2VxdWVuY2VfU2l6ZShyby0+c2VxKTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgcm8tPmluZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgcmV2ZXJzZWRpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDlkYWExMmEuLjZiMDQ3MDAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC0xMCw2ICsxMCwyMCBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogCiAKKy8qIENvbXBhdGliaWxpdHkgYWxpYXNlcyAqLworUHlPYmplY3QgKlB5RXhjX0Vudmlyb25tZW50RXJyb3IgPSBOVUxMOworUHlPYmplY3QgKlB5RXhjX0lPRXJyb3IgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKK1B5T2JqZWN0ICpQeUV4Y19XaW5kb3dzRXJyb3IgPSBOVUxMOworI2VuZGlmCisjaWZkZWYgX19WTVMKK1B5T2JqZWN0ICpQeUV4Y19WTVNFcnJvciA9IE5VTEw7CisjZW5kaWYKKworLyogVGhlIGRpY3QgbWFwIGZyb20gZXJybm8gY29kZXMgdG8gT1NFcnJvciBzdWJjbGFzc2VzICovCitzdGF0aWMgUHlPYmplY3QgKmVycm5vbWFwID0gTlVMTDsKKworCiAvKiBOT1RFOiBJZiB0aGUgZXhjZXB0aW9uIGNsYXNzIGhpZXJhcmNoeSBjaGFuZ2VzLCBkb24ndCBmb3JnZXQgdG8gdXBkYXRlCiAgKiBMaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAogICovCkBAIC0yOCw2ICs0MiwxMyBAQAogICAgIC8qIHRoZSBkaWN0IGlzIGNyZWF0ZWQgb24gdGhlIGZseSBpbiBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciAqLwogICAgIHNlbGYtPmRpY3QgPSBOVUxMOwogICAgIHNlbGYtPnRyYWNlYmFjayA9IHNlbGYtPmNhdXNlID0gc2VsZi0+Y29udGV4dCA9IE5VTEw7CisgICAgc2VsZi0+c3VwcHJlc3NfY29udGV4dCA9IDA7CisKKyAgICBpZiAoYXJncykgeworICAgICAgICBzZWxmLT5hcmdzID0gYXJnczsKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICB9CiAKICAgICBzZWxmLT5hcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgaWYgKCFzZWxmLT5hcmdzKSB7CkBAIC00MSwxMiArNjIsMTUgQEAKIHN0YXRpYyBpbnQKIEJhc2VFeGNlcHRpb25faW5pdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBQeU9iamVjdCAqdG1wOworCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgUHlfREVDUkVGKHNlbGYtPmFyZ3MpOworICAgIHRtcCA9IHNlbGYtPmFyZ3M7CiAgICAgc2VsZi0+YXJncyA9IGFyZ3M7CiAgICAgUHlfSU5DUkVGKHNlbGYtPmFyZ3MpOworICAgIFB5X1hERUNSRUYodG1wKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMTYzLDM2ICsxODcsNiBAQAogICAge05VTEwsIE5VTEwsIDAsIE5VTEx9LAogfTsKIAotCi1zdGF0aWMgUHlPYmplY3QgKgotQmFzZUV4Y2VwdGlvbl9nZXRfZGljdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmRpY3QgPT0gTlVMTCkgewotICAgICAgICBzZWxmLT5kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIXNlbGYtPmRpY3QpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHNlbGYtPmRpY3QpOwotICAgIHJldHVybiBzZWxmLT5kaWN0OwotfQotCi1zdGF0aWMgaW50Ci1CYXNlRXhjZXB0aW9uX3NldF9kaWN0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbCkKLXsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fZGljdF9fIG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fZGljdF9fIG11c3QgYmUgYSBkaWN0aW9uYXJ5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7Ci0gICAgUHlfSU5DUkVGKHZhbCk7Ci0gICAgc2VsZi0+ZGljdCA9IHZhbDsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIEJhc2VFeGNlcHRpb25fZ2V0X2FyZ3MoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmKQogewpAQCAtMzA2LDcgKzMwMCw3IEBACiAKIAogc3RhdGljIFB5R2V0U2V0RGVmIEJhc2VFeGNlcHRpb25fZ2V0c2V0W10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfZGljdCwgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF9kaWN0fSwKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKICAgICB7ImFyZ3MiLCAoZ2V0dGVyKUJhc2VFeGNlcHRpb25fZ2V0X2FyZ3MsIChzZXR0ZXIpQmFzZUV4Y2VwdGlvbl9zZXRfYXJnc30sCiAgICAgeyJfX3RyYWNlYmFja19fIiwgKGdldHRlcilCYXNlRXhjZXB0aW9uX2dldF90YiwgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF90Yn0sCiAgICAgeyJfX2NvbnRleHRfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfY29udGV4dCwKQEAgLTM0Miw2ICszMzYsNyBAQAogUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkgewogICAgIFB5T2JqZWN0ICpvbGRfY2F1c2UgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZTsKICAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSA9IGNhdXNlOworICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPnN1cHByZXNzX2NvbnRleHQgPSAxOwogICAgIFB5X1hERUNSRUYob2xkX2NhdXNlKTsKIH0KIApAQCAtMzYxLDYgKzM1NiwxMyBAQAogfQogCiAKK3N0YXRpYyBzdHJ1Y3QgUHlNZW1iZXJEZWYgQmFzZUV4Y2VwdGlvbl9tZW1iZXJzW10gPSB7CisgICAgeyJfX3N1cHByZXNzX2NvbnRleHRfXyIsIFRfQk9PTCwKKyAgICAgb2Zmc2V0b2YoUHlCYXNlRXhjZXB0aW9uT2JqZWN0LCBzdXBwcmVzc19jb250ZXh0KX0sCisgICAge05VTEx9Cit9OworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX0Jhc2VFeGNlcHRpb24gPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIkJhc2VFeGNlcHRpb24iLCAvKnRwX25hbWUqLwpAQCAtMzkxLDcgKzM5Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBCYXNlRXhjZXB0aW9uX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQmFzZUV4Y2VwdGlvbl9tZW1iZXJzLCAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICBCYXNlRXhjZXB0aW9uX2dldHNldCwgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtNDM2LDExICs0MzgsMTMgQEAKICAgICBQeURvY19TVFIoRVhDRE9DKSwgKHRyYXZlcnNlcHJvYylFWENTVE9SRSAjIyBfdHJhdmVyc2UsIFwKICAgICAoaW5xdWlyeSlFWENTVE9SRSAjIyBfY2xlYXIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICZfICMjIEVYQ0JBU0UsIFwKICAgICAwLCAwLCAwLCBvZmZzZXRvZihQeSAjIyBFWENTVE9SRSAjIyBPYmplY3QsIGRpY3QpLCBcCi0gICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCBCYXNlRXhjZXB0aW9uX25ldyxcCisgICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCAwLCBcCiB9OyBcCiBQeU9iamVjdCAqUHlFeGNfICMjIEVYQ05BTUUgPSAoUHlPYmplY3QgKikmX1B5RXhjXyAjIyBFWENOQU1FCiAKLSNkZWZpbmUgQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oRVhDQkFTRSwgRVhDTkFNRSwgRVhDU1RPUkUsIEVYQ0RFQUxMT0MsIEVYQ01FVEhPRFMsIEVYQ01FTUJFUlMsIEVYQ1NUUiwgRVhDRE9DKSBcCisjZGVmaW5lIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKEVYQ0JBU0UsIEVYQ05BTUUsIEVYQ1NUT1JFLCBFWENORVcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDTUVUSE9EUywgRVhDTUVNQkVSUywgRVhDR0VUU0VULCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ1NUUiwgRVhDRE9DKSBcCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y18gIyMgRVhDTkFNRSA9IHsgXAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCiAgICAgIyBFWENOQU1FLCBcCkBAIC00NTAsOSArNDU0LDkgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCBcCiAgICAgUHlEb2NfU1RSKEVYQ0RPQyksICh0cmF2ZXJzZXByb2MpRVhDU1RPUkUgIyMgX3RyYXZlcnNlLCBcCiAgICAgKGlucXVpcnkpRVhDU1RPUkUgIyMgX2NsZWFyLCAwLCAwLCAwLCAwLCBFWENNRVRIT0RTLCBcCi0gICAgRVhDTUVNQkVSUywgMCwgJl8gIyMgRVhDQkFTRSwgXAorICAgIEVYQ01FTUJFUlMsIEVYQ0dFVFNFVCwgJl8gIyMgRVhDQkFTRSwgXAogICAgIDAsIDAsIDAsIG9mZnNldG9mKFB5ICMjIEVYQ1NUT1JFICMjIE9iamVjdCwgZGljdCksIFwKLSAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEJhc2VFeGNlcHRpb25fbmV3LFwKKyAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEVYQ05FVyxcCiB9OyBcCiBQeU9iamVjdCAqUHlFeGNfICMjIEVYQ05BTUUgPSAoUHlPYmplY3QgKikmX1B5RXhjXyAjIyBFWENOQU1FCiAKQEAgLTQ3NCw4ICs0NzgsNjQgQEAKIC8qCiAgKiAgICBTdG9wSXRlcmF0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KLVNpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBTdG9wSXRlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX25leHRfXygpLiIpOworCitzdGF0aWMgUHlNZW1iZXJEZWYgU3RvcEl0ZXJhdGlvbl9tZW1iZXJzW10gPSB7CisgICAgeyJ2YWx1ZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVN0b3BJdGVyYXRpb25PYmplY3QsIHZhbHVlKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJnZW5lcmF0b3IgcmV0dXJuIHZhbHVlIil9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBpbnQKK1N0b3BJdGVyYXRpb25faW5pdChQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfQ0xFQVIoc2VsZi0+dmFsdWUpOworICAgIGlmIChzaXplID4gMCkKKyAgICAgICAgdmFsdWUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgc2VsZi0+dmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorU3RvcEl0ZXJhdGlvbl9jbGVhcihQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+dmFsdWUpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIHZvaWQKK1N0b3BJdGVyYXRpb25fZGVhbGxvYyhQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgU3RvcEl0ZXJhdGlvbl9jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgaW50CitTdG9wSXRlcmF0aW9uX3RyYXZlcnNlKFB5U3RvcEl0ZXJhdGlvbk9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+dmFsdWUpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKK30KKworQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oCisgICAgUHlFeGNfRXhjZXB0aW9uLCAgICAgICAvKiBiYXNlICovCisgICAgU3RvcEl0ZXJhdGlvbiwgICAgICAgICAvKiBuYW1lICovCisgICAgU3RvcEl0ZXJhdGlvbiwgICAgICAgICAvKiBwcmVmaXggZm9yICpfaW5pdCwgZXRjICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBuZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIG1ldGhvZHMgKi8KKyAgICBTdG9wSXRlcmF0aW9uX21lbWJlcnMsIC8qIG1lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGdldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogc3RyICovCisgICAgIlNpZ25hbCB0aGUgZW5kIGZyb20gaXRlcmF0b3IuX19uZXh0X18oKS4iCispOwogCiAKIC8qCkBAIC01MDIsNyArNTYyLDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5jb2RlKTsKICAgICBpZiAoc2l6ZSA9PSAxKQogICAgICAgICBzZWxmLT5jb2RlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKLSAgICBlbHNlIGlmIChzaXplID4gMSkKKyAgICBlbHNlIC8qIHNpemUgPiAxICovCiAgICAgICAgIHNlbGYtPmNvZGUgPSBhcmdzOwogICAgIFB5X0lOQ1JFRihzZWxmLT5jb2RlKTsKICAgICByZXR1cm4gMDsKQEAgLTUzNyw3ICs1OTcsNyBAQAogfTsKIAogQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfQmFzZUV4Y2VwdGlvbiwgU3lzdGVtRXhpdCwgU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbUV4aXRfZGVhbGxvYywgMCwgU3lzdGVtRXhpdF9tZW1iZXJzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU3lzdGVtRXhpdF9tZW1iZXJzLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3QgdG8gZXhpdCBmcm9tIHRoZSBpbnRlcnByZXRlci4iKTsKIAogLyoKQEAgLTU1MCwxMjkgKzYxMCw0NDEgQEAKIC8qCiAgKiAgICBJbXBvcnRFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCi1TaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgSW1wb3J0RXJyb3IsCi0gICAgICAgICAgIkltcG9ydCBjYW4ndCBmaW5kIG1vZHVsZSwgb3IgY2FuJ3QgZmluZCBuYW1lIGluIG1vZHVsZS4iKTsKIAorc3RhdGljIGludAorSW1wb3J0RXJyb3JfaW5pdChQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm1zZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKworLyogTWFjcm8gcmVwbGFjZW1lbnQgZG9lc24ndCBhbGxvdyAjIyB0byBzdGFydCB0aGUgZmlyc3QgbGluZSBvZiBhIG1hY3JvLAorICAgc28gd2UgbW92ZSB0aGUgYXNzaWdubWVudCBhbmQgTlVMTCBjaGVjayBpbnRvIHRoZSBpZi1zdGF0ZW1lbnQuICovCisjZGVmaW5lIEdFVF9LV0Qoa3dkKSB7IFwKKyAgICBrd2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrd2RzLCAja3dkKTsgXAorICAgIGlmIChrd2QpIHsgXAorICAgICAgICBQeV9DTEVBUihzZWxmLT5rd2QpOyBcCisgICAgICAgIHNlbGYtPmt3ZCA9IGt3ZDsgICBcCisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5rd2QpO1wKKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtU3RyaW5nKGt3ZHMsICNrd2QpKSBcCisgICAgICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9IFwKKyAgICB9CisKKyAgICBpZiAoa3dkcykgeworICAgICAgICBHRVRfS1dEKG5hbWUpOworICAgICAgICBHRVRfS1dEKHBhdGgpOworICAgIH0KKworICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiSW1wb3J0RXJyb3IiLCAxLCAxLCAmbXNnKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsgICAgICAgICAgLyogcmVwbGFjaW5nICovCisgICAgc2VsZi0+bXNnID0gbXNnOworICAgIFB5X0lOQ1JFRihzZWxmLT5tc2cpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0ltcG9ydEVycm9yX2NsZWFyKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsKKyAgICBQeV9DTEVBUihzZWxmLT5uYW1lKTsKKyAgICBQeV9DTEVBUihzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9jbGVhcigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyB2b2lkCitJbXBvcnRFcnJvcl9kZWFsbG9jKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgSW1wb3J0RXJyb3JfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIGludAorSW1wb3J0RXJyb3JfdHJhdmVyc2UoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+bXNnKTsKKyAgICBQeV9WSVNJVChzZWxmLT5uYW1lKTsKKyAgICBQeV9WSVNJVChzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl90cmF2ZXJzZSgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgdmlzaXQsIGFyZyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitJbXBvcnRFcnJvcl9zdHIoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+bXNnICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYtPm1zZykpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPm1zZyk7CisgICAgICAgIHJldHVybiBzZWxmLT5tc2c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOworICAgIH0KK30KKworc3RhdGljIFB5TWVtYmVyRGVmIEltcG9ydEVycm9yX21lbWJlcnNbXSA9IHsKKyAgICB7Im1zZyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBtc2cpLCAwLAorICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBtZXNzYWdlIil9LAorICAgIHsibmFtZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBuYW1lKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJtb2R1bGUgbmFtZSIpfSwKKyAgICB7InBhdGgiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlJbXBvcnRFcnJvck9iamVjdCwgcGF0aCksIDAsCisgICAgICAgIFB5RG9jX1NUUigibW9kdWxlIHBhdGgiKX0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIEltcG9ydEVycm9yX21ldGhvZHNbXSA9IHsKKyAgICB7TlVMTH0KK307CisKK0NvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvciwgMCAvKiBuZXcgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvcl9tZXRob2RzLCBJbXBvcnRFcnJvcl9tZW1iZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBnZXRzZXQgKi8sIEltcG9ydEVycm9yX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbXBvcnQgY2FuJ3QgZmluZCBtb2R1bGUsIG9yIGNhbid0IGZpbmQgbmFtZSBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLiIpOwogCiAvKgotICogICAgRW52aXJvbm1lbnRFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgorICogICAgT1NFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSAiZXJybWFwLmgiCisjZW5kaWYKKwogLyogV2hlcmUgYSBmdW5jdGlvbiBoYXMgYSBzaW5nbGUgZmlsZW5hbWUsIHN1Y2ggYXMgb3BlbigpIG9yIHNvbWUKICAqIG9mIHRoZSBvcyBtb2R1bGUgZnVuY3Rpb25zLCBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoKSBpcwogICogY2FsbGVkLCBnaXZpbmcgYSB0aGlyZCBhcmd1bWVudCB3aGljaCBpcyB0aGUgZmlsZW5hbWUuICBCdXQsIHNvCiAgKiB0aGF0IG9sZCBjb2RlIHVzaW5nIGluLXBsYWNlIHVucGFja2luZyBkb2Vzbid0IGJyZWFrLCBlLmcuOgogICoKLSAqIGV4Y2VwdCBJT0Vycm9yLCAoZXJybm8sIHN0cmVycm9yKToKKyAqIGV4Y2VwdCBPU0Vycm9yLCAoZXJybm8sIHN0cmVycm9yKToKICAqCiAgKiB3ZSBoYWNrIGFyZ3Mgc28gdGhhdCBpdCBvbmx5IGNvbnRhaW5zIHR3byBpdGVtcy4gIFRoaXMgYWxzbwogICogbWVhbnMgd2UgbmVlZCBvdXIgb3duIF9fc3RyX18oKSB3aGljaCBwcmludHMgb3V0IHRoZSBmaWxlbmFtZQogICogd2hlbiBpdCB3YXMgc3VwcGxpZWQuCiAgKi8KKworLyogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNsZWFudXAgb24gZXJyb3IsIHRoZSBjYWxsZXIgc2hvdWxkICovCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX2luaXQoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICBQeU9iamVjdCAqa3dkcykKK29zZXJyb3JfcGFyc2VfYXJncyhQeU9iamVjdCAqKnBfYXJncywKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm15ZXJybm8sIFB5T2JqZWN0ICoqc3RyZXJyb3IsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAsIFB5T2JqZWN0ICoqd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgKQogewotICAgIFB5T2JqZWN0ICpteWVycm5vID0gTlVMTCwgKnN0cmVycm9yID0gTlVMTCwgKmZpbGVuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc3Vic2xpY2UgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MgPSAqcF9hcmdzOwogCi0gICAgaWYgKEJhc2VFeGNlcHRpb25faW5pdCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA8PSAxIHx8IFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPiAzKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIkVudmlyb25tZW50RXJyb3IiLCAyLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOyAgICAgICAvKiByZXBsYWNpbmcgKi8KLSAgICBzZWxmLT5teWVycm5vID0gbXllcnJubzsKLSAgICBQeV9JTkNSRUYoc2VsZi0+bXllcnJubyk7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT5zdHJlcnJvcik7ICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgc2VsZi0+c3RyZXJyb3IgPSBzdHJlcnJvcjsKLSAgICBQeV9JTkNSRUYoc2VsZi0+c3RyZXJyb3IpOwotCi0gICAgLyogc2VsZi0+ZmlsZW5hbWUgd2lsbCByZW1haW4gUHlfTm9uZSBvdGhlcndpc2UgKi8KLSAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7ICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgICAgIHNlbGYtPmZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT5maWxlbmFtZSk7Ci0KLSAgICAgICAgc3Vic2xpY2UgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDAsIDIpOwotICAgICAgICBpZiAoIXN1YnNsaWNlKQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAobmFyZ3MgPj0gMiAmJiBuYXJncyA8PSA0KSB7CisgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIk9TRXJyb3IiLCAyLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ZXJybm8sIHN0cmVycm9yLCBmaWxlbmFtZSwgd2luZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoKndpbmVycm9yICYmIFB5TG9uZ19DaGVjaygqd2luZXJyb3IpKSB7CisgICAgICAgICAgICBsb25nIGVycmNvZGUsIHdpbmVycmNvZGU7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKIAotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+YXJncyk7ICAvKiByZXBsYWNpbmcgYXJncyAqLwotICAgICAgICBzZWxmLT5hcmdzID0gc3Vic2xpY2U7CisgICAgICAgICAgICB3aW5lcnJjb2RlID0gUHlMb25nX0FzTG9uZygqd2luZXJyb3IpOworICAgICAgICAgICAgaWYgKHdpbmVycmNvZGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAvKiBTZXQgZXJybm8gdG8gdGhlIGNvcnJlc3BvbmRpbmcgUE9TSVggZXJybm8gKG92ZXJyaWRpbmcKKyAgICAgICAgICAgICAgIGZpcnN0IGFyZ3VtZW50KS4gIFdpbmRvd3MgU29ja2V0IGVycm9yIGNvZGVzICg+PSAxMDAwMCkKKyAgICAgICAgICAgICAgIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlaXIgUE9TSVggY291bnRlcnBhcnRzLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICh3aW5lcnJjb2RlIDwgMTAwMDApCisgICAgICAgICAgICAgICAgZXJyY29kZSA9IHdpbmVycm9yX3RvX2Vycm5vKHdpbmVycmNvZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVycmNvZGUgPSB3aW5lcnJjb2RlOworICAgICAgICAgICAgKm15ZXJybm8gPSBQeUxvbmdfRnJvbUxvbmcoZXJyY29kZSk7CisgICAgICAgICAgICBpZiAoISpteWVycm5vKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuYXJncyk7CisgICAgICAgICAgICBpZiAoIW5ld2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAqbXllcnJubyk7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSwgdmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGFyZ3MgPSAqcF9hcmdzID0gbmV3YXJnczsKKyAgICAgICAgfQogICAgIH0KKyNlbHNlCisgICAgaWYgKG5hcmdzID49IDIgJiYgbmFyZ3MgPD0gMykgeworICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJPU0Vycm9yIiwgMiwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLUVudmlyb25tZW50RXJyb3JfY2xlYXIoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmKQorb3NlcnJvcl9pbml0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKipwX2FyZ3MsCisgICAgICAgICAgICAgUHlPYmplY3QgKm15ZXJybm8sIFB5T2JqZWN0ICpzdHJlcnJvciwKKyAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgLCBQeU9iamVjdCAqd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgICkKK3sKKyAgICBQeU9iamVjdCAqYXJncyA9ICpwX2FyZ3M7CisgICAgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisKKyAgICAvKiBzZWxmLT5maWxlbmFtZSB3aWxsIHJlbWFpbiBQeV9Ob25lIG90aGVyd2lzZSAqLworICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZSAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeV9UWVBFKHNlbGYpID09IChQeVR5cGVPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yICYmCisgICAgICAgICAgICBQeU51bWJlcl9DaGVjayhmaWxlbmFtZSkpIHsKKyAgICAgICAgICAgIC8qIEJsb2NraW5nSU9FcnJvcidzIDNyZCBhcmd1bWVudCBjYW4gYmUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICogY2hhcmFjdGVycyB3cml0dGVuLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzZWxmLT53cml0dGVuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGZpbGVuYW1lLCBQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgICAgIGlmIChzZWxmLT53cml0dGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lID0gZmlsZW5hbWU7CisKKyAgICAgICAgICAgIGlmIChuYXJncyA+PSAyICYmIG5hcmdzIDw9IDMpIHsKKyAgICAgICAgICAgICAgICAvKiBmaWxlbmFtZSBpcyByZW1vdmVkIGZyb20gdGhlIGFyZ3MgdHVwbGUgKGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgcHVycG9zZXMsIHNlZSB0ZXN0X2V4Y2VwdGlvbnMucHkpICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnNsaWNlID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAwLCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN1YnNsaWNlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7ICAvKiByZXBsYWNpbmcgYXJncyAqLworICAgICAgICAgICAgICAgICpwX2FyZ3MgPSBhcmdzID0gc3Vic2xpY2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWElOQ1JFRihteWVycm5vKTsKKyAgICBzZWxmLT5teWVycm5vID0gbXllcnJubzsKKworICAgIFB5X1hJTkNSRUYoc3RyZXJyb3IpOworICAgIHNlbGYtPnN0cmVycm9yID0gc3RyZXJyb3I7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfWElOQ1JFRih3aW5lcnJvcik7CisgICAgc2VsZi0+d2luZXJyb3IgPSB3aW5lcnJvcjsKKyNlbmRpZgorCisgICAgLyogU3RlYWxzIHRoZSByZWZlcmVuY2UgdG8gYXJncyAqLworICAgIFB5X0NMRUFSKHNlbGYtPmFyZ3MpOworICAgIHNlbGYtPmFyZ3MgPSBhcmdzOworICAgIGFyZ3MgPSBOVUxMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CitzdGF0aWMgaW50CitPU0Vycm9yX2luaXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCitzdGF0aWMgaW50Citvc2Vycm9yX3VzZV9pbml0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICAvKiBXaGVuIF9faW5pdF9fIGlzIGRlZmluZWQgaW4gYSBPU0Vycm9yIHN1YmNsYXNzLCB3ZSB3YW50IGFueQorICAgICAgIGV4dHJhbmVvdXMgYXJndW1lbnQgdG8gX19uZXdfXyB0byBiZSBpZ25vcmVkLiAgVGhlIG9ubHkgcmVhc29uYWJsZQorICAgICAgIHNvbHV0aW9uLCBnaXZlbiBfX25ld19fIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cywKKyAgICAgICBpcyB0byBkZWZlciBhcmcgcGFyc2luZyBhbmQgaW5pdGlhbGl6YXRpb24gdG8gX19pbml0X18uCisKKyAgICAgICBCdXQgd2hlbiBfX25ld19fIGlzIG92ZXJyaWRlbiBhcyB3ZWxsLCBpdCBzaG91bGQgY2FsbCBvdXIgX19uZXdfXworICAgICAgIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4KKworICAgICAgIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEyNTU1I21zZzE0ODgyOSApCisgICAgKi8KKyAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSAoaW5pdHByb2MpIE9TRXJyb3JfaW5pdCAmJgorICAgICAgICB0eXBlLT50cF9uZXcgPT0gKG5ld2Z1bmMpIE9TRXJyb3JfbmV3KSB7CisgICAgICAgIGFzc2VydCgoUHlPYmplY3QgKikgdHlwZSAhPSBQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorT1NFcnJvcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPU0Vycm9yT2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvciA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdCh0eXBlKSkgeworICAgICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKHR5cGUtPnRwX25hbWUsIGt3ZHMpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICBpZiAob3NlcnJvcl9wYXJzZV9hcmdzKCZhcmdzLCAmbXllcnJubywgJnN0cmVycm9yLCAmZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKG15ZXJybm8gJiYgUHlMb25nX0NoZWNrKG15ZXJybm8pICYmCisgICAgICAgICAgICBlcnJub21hcCAmJiAoUHlPYmplY3QgKikgdHlwZSA9PSBQeUV4Y19PU0Vycm9yKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3dHlwZTsKKyAgICAgICAgICAgIG5ld3R5cGUgPSBQeURpY3RfR2V0SXRlbShlcnJub21hcCwgbXllcnJubyk7CisgICAgICAgICAgICBpZiAobmV3dHlwZSkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR5cGVfQ2hlY2sobmV3dHlwZSkpOworICAgICAgICAgICAgICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIG5ld3R5cGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZWxmID0gKFB5T1NFcnJvck9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzZWxmLT5kaWN0ID0gTlVMTDsKKyAgICBzZWxmLT50cmFjZWJhY2sgPSBzZWxmLT5jYXVzZSA9IHNlbGYtPmNvbnRleHQgPSBOVUxMOworICAgIHNlbGYtPndyaXR0ZW4gPSAtMTsKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdCh0eXBlKSkgeworICAgICAgICBpZiAob3NlcnJvcl9pbml0KHNlbGYsICZhcmdzLCBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgLCB3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYtPmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgaWYgKHNlbGYtPmFyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X1hERUNSRUYoc2VsZik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK09TRXJyb3JfaW5pdChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvciA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdChQeV9UWVBFKHNlbGYpKSkKKyAgICAgICAgLyogRXZlcnl0aGluZyBhbHJlYWR5IGRvbmUgaW4gT1NFcnJvcl9uZXcgKi8KKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgaWYgKG9zZXJyb3JfcGFyc2VfYXJncygmYXJncywgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmd2luZXJyb3IKKyNlbmRpZgorICAgICAgICApKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKG9zZXJyb3JfaW5pdChzZWxmLCAmYXJncywgbXllcnJubywgc3RyZXJyb3IsIGZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgLCB3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKK09TRXJyb3JfY2xlYXIoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0cmVycm9yKTsKICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0NMRUFSKHNlbGYtPndpbmVycm9yKTsKKyNlbmRpZgogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKIH0KIAogc3RhdGljIHZvaWQKLUVudmlyb25tZW50RXJyb3JfZGVhbGxvYyhQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX2RlYWxsb2MoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwotICAgIEVudmlyb25tZW50RXJyb3JfY2xlYXIoc2VsZik7CisgICAgT1NFcnJvcl9jbGVhcihzZWxmKTsKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwogfQogCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX3RyYXZlcnNlKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LAorT1NFcnJvcl90cmF2ZXJzZShQeU9TRXJyb3JPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwKICAgICAgICAgdm9pZCAqYXJnKQogewogICAgIFB5X1ZJU0lUKHNlbGYtPm15ZXJybm8pOwogICAgIFB5X1ZJU0lUKHNlbGYtPnN0cmVycm9yKTsKICAgICBQeV9WSVNJVChzZWxmLT5maWxlbmFtZSk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X1ZJU0lUKHNlbGYtPndpbmVycm9yKTsKKyNlbmRpZgogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLUVudmlyb25tZW50RXJyb3Jfc3RyKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZikKK09TRXJyb3Jfc3RyKFB5T1NFcnJvck9iamVjdCAqc2VsZikKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogSWYgYXZhaWxhYmxlLCB3aW5lcnJvciBoYXMgdGhlIHByaW9yaXR5IG92ZXIgbXllcnJubyAqLworICAgIGlmIChzZWxmLT53aW5lcnJvciAmJiBzZWxmLT5maWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbV2luRXJyb3IgJVNdICVTOiAlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lKTsKKyAgICBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+c3RyZXJyb3IpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW1dpbkVycm9yICVTXSAlUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7CisjZW5kaWYKICAgICBpZiAoc2VsZi0+ZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUzogJVIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmlsZW5hbWUpOwotICAgIGVsc2UgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCisgICAgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCi1zdGF0aWMgUHlNZW1iZXJEZWYgRW52aXJvbm1lbnRFcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUVudmlyb25tZW50RXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBlcnJubyIpfSwKLSAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgc3RyZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBzdHJlcnJvciIpfSwKLSAgICB7ImZpbGVuYW1lIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgZmlsZW5hbWUpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBmaWxlbmFtZSIpfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1FbnZpcm9ubWVudEVycm9yX3JlZHVjZShQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX3JlZHVjZShQeU9TRXJyb3JPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmFyZ3MgPSBzZWxmLT5hcmdzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMLCAqdG1wOwogCiAgICAgLyogc2VsZi0+YXJncyBpcyBvbmx5IHRoZSBmaXJzdCB0d28gcmVhbCBhcmd1bWVudHMgaWYgdGhlcmUgd2FzIGEKLSAgICAgKiBmaWxlIG5hbWUgZ2l2ZW4gdG8gRW52aXJvbm1lbnRFcnJvci4gKi8KKyAgICAgKiBmaWxlIG5hbWUgZ2l2ZW4gdG8gT1NFcnJvci4gKi8KICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAyICYmIHNlbGYtPmZpbGVuYW1lKSB7CiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygzKTsKICAgICAgICAgaWYgKCFhcmdzKQpAQCAtNjk5LDE0NCArMTA3MSw5MyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX3dyaXR0ZW5fZ2V0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoc2VsZi0+d3JpdHRlbiA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJjaGFyYWN0ZXJzX3dyaXR0ZW4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+d3JpdHRlbik7Cit9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBFbnZpcm9ubWVudEVycm9yX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pRW52aXJvbm1lbnRFcnJvcl9yZWR1Y2UsIE1FVEhfTk9BUkdTfSwKK3N0YXRpYyBpbnQKK09TRXJyb3Jfd3JpdHRlbl9zZXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgaWYgKG4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHNlbGYtPndyaXR0ZW4gPSBuOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYgT1NFcnJvcl9tZW1iZXJzW10gPSB7CisgICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9TRXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAorICAgICAgICBQeURvY19TVFIoIlBPU0lYIGV4Y2VwdGlvbiBjb2RlIil9LAorICAgIHsic3RyZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAorICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBmaWxlbmFtZSksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIGZpbGVuYW1lIil9LAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7IndpbmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T1NFcnJvck9iamVjdCwgd2luZXJyb3IpLCAwLAorICAgICAgICBQeURvY19TVFIoIldpbjMyIGV4Y2VwdGlvbiBjb2RlIil9LAorI2VuZGlmCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIE9TRXJyb3JfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilPU0Vycm9yX3JlZHVjZSwgTUVUSF9OT0FSR1N9LAogICAgIHtOVUxMfQogfTsKIAotQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBFbnZpcm9ubWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgRW52aXJvbm1lbnRFcnJvcl9kZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvcl9tZXRob2RzLCBFbnZpcm9ubWVudEVycm9yX21lbWJlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yX3N0ciwKK3N0YXRpYyBQeUdldFNldERlZiBPU0Vycm9yX2dldHNldFtdID0geworICAgIHsiY2hhcmFjdGVyc193cml0dGVuIiwgKGdldHRlcikgT1NFcnJvcl93cml0dGVuX2dldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpIE9TRXJyb3Jfd3JpdHRlbl9zZXQsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yLCBPU0Vycm9yX25ldywKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3JfbWV0aG9kcywgT1NFcnJvcl9tZW1iZXJzLCBPU0Vycm9yX2dldHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3Jfc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgIkJhc2UgY2xhc3MgZm9yIEkvTyByZWxhdGVkIGVycm9ycy4iKTsKIAogCiAvKgotICogICAgSU9FcnJvciBleHRlbmRzIEVudmlyb25tZW50RXJyb3IKKyAqICAgIFZhcmlvdXMgT1NFcnJvciBzdWJjbGFzc2VzCiAgKi8KLU1pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FbnZpcm9ubWVudEVycm9yLCBJT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3IsICJJL08gb3BlcmF0aW9uIGZhaWxlZC4iKTsKLQotCi0vKgotICogICAgT1NFcnJvciBleHRlbmRzIEVudmlyb25tZW50RXJyb3IKLSAqLwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Vudmlyb25tZW50RXJyb3IsIE9TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgIk9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLQotCi0vKgotICogICAgV2luZG93c0Vycm9yIGV4dGVuZHMgT1NFcnJvcgotICovCi0jaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgImVycm1hcC5oIgotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfY2xlYXIoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfQ0xFQVIoc2VsZi0+bXllcnJubyk7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+c3RyZXJyb3IpOwotICAgIFB5X0NMRUFSKHNlbGYtPmZpbGVuYW1lKTsKLSAgICBQeV9DTEVBUihzZWxmLT53aW5lcnJvcik7Ci0gICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fY2xlYXIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgdm9pZAotV2luZG93c0Vycm9yX2RlYWxsb2MoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7Ci0gICAgV2luZG93c0Vycm9yX2NsZWFyKHNlbGYpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLXN0YXRpYyBpbnQKLVdpbmRvd3NFcnJvcl90cmF2ZXJzZShQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCi17Ci0gICAgUHlfVklTSVQoc2VsZi0+bXllcnJubyk7Ci0gICAgUHlfVklTSVQoc2VsZi0+c3RyZXJyb3IpOwotICAgIFB5X1ZJU0lUKHNlbGYtPmZpbGVuYW1lKTsKLSAgICBQeV9WSVNJVChzZWxmLT53aW5lcnJvcik7Ci0gICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fdHJhdmVyc2UoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIHZpc2l0LCBhcmcpOwotfQotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfaW5pdChQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIFB5T2JqZWN0ICpvX2VycmNvZGUgPSBOVUxMOwotICAgIGxvbmcgZXJyY29kZTsKLSAgICBsb25nIHBvc2l4X2Vycm5vOwotCi0gICAgaWYgKEVudmlyb25tZW50RXJyb3JfaW5pdCgoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykKLSAgICAgICAgICAgID09IC0xKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoc2VsZi0+bXllcnJubyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIFNldCBlcnJubyB0byB0aGUgUE9TSVggZXJybm8sIGFuZCB3aW5lcnJvciB0byB0aGUgV2luMzIKLSAgICAgICBlcnJvciBjb2RlLiAqLwotICAgIGVycmNvZGUgPSBQeUxvbmdfQXNMb25nKHNlbGYtPm15ZXJybm8pOwotICAgIGlmIChlcnJjb2RlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBwb3NpeF9lcnJubyA9IHdpbmVycm9yX3RvX2Vycm5vKGVycmNvZGUpOwotCi0gICAgUHlfQ0xFQVIoc2VsZi0+d2luZXJyb3IpOwotICAgIHNlbGYtPndpbmVycm9yID0gc2VsZi0+bXllcnJubzsKLQotICAgIG9fZXJyY29kZSA9IFB5TG9uZ19Gcm9tTG9uZyhwb3NpeF9lcnJubyk7Ci0gICAgaWYgKCFvX2VycmNvZGUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHNlbGYtPm15ZXJybm8gPSBvX2VycmNvZGU7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotCi1zdGF0aWMgUHlPYmplY3QgKgotV2luZG93c0Vycm9yX3N0cihQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+ZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUzogJVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+d2luZXJyb3IgPyBzZWxmLT53aW5lcnJvcjogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWxlbmFtZSk7Ci0gICAgZWxzZSBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+c3RyZXJyb3IpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gRW52aXJvbm1lbnRFcnJvcl9zdHIoKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgUHlNZW1iZXJEZWYgV2luZG93c0Vycm9yX21lbWJlcnNbXSA9IHsKLSAgICB7ImVycm5vIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBteWVycm5vKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJQT1NJWCBleGNlcHRpb24gY29kZSIpfSwKLSAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAotICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlXaW5kb3dzRXJyb3JPYmplY3QsIGZpbGVuYW1lKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gZmlsZW5hbWUiKX0sCi0gICAgeyJ3aW5lcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVdpbmRvd3NFcnJvck9iamVjdCwgd2luZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoIldpbjMyIGV4Y2VwdGlvbiBjb2RlIil9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLUNvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFdpbmRvd3NFcnJvciwgV2luZG93c0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93c0Vycm9yX2RlYWxsb2MsIDAsIFdpbmRvd3NFcnJvcl9tZW1iZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93c0Vycm9yX3N0ciwgIk1TLVdpbmRvd3MgT1Mgc3lzdGVtIGNhbGwgZmFpbGVkLiIpOwotCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi0KLS8qCi0gKiAgICBWTVNFcnJvciBleHRlbmRzIE9TRXJyb3IgKEkgdGhpbmspCi0gKi8KLSNpZmRlZiBfX1ZNUwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFZNU0Vycm9yLCBFbnZpcm9ubWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuVk1TIE9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLSNlbmRpZgotCitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgQmxvY2tpbmdJT0Vycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIHdvdWxkIGJsb2NrLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIENvbm5lY3Rpb25FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiBlcnJvci4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBDaGlsZFByb2Nlc3NFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbGQgcHJvY2VzcyBlcnJvci4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Db25uZWN0aW9uRXJyb3IsIEJyb2tlblBpcGVFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQnJva2VuIHBpcGUuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uQWJvcnRlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIGFib3J0ZWQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHJlZnVzZWQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiByZXNldC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBGaWxlRXhpc3RzRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgYWxyZWFkeSBleGlzdHMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgRmlsZU5vdEZvdW5kRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgbm90IGZvdW5kLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIElzQURpcmVjdG9yeUVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVyYXRpb24gZG9lc24ndCB3b3JrIG9uIGRpcmVjdG9yaWVzLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIE5vdEFEaXJlY3RvcnlFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlcmF0aW9uIG9ubHkgd29ya3Mgb24gZGlyZWN0b3JpZXMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgSW50ZXJydXB0ZWRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJydXB0ZWQgYnkgc2lnbmFsLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGVub3VnaCBwZXJtaXNzaW9ucy4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBQcm9jZXNzTG9va3VwRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2Nlc3Mgbm90IGZvdW5kLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFRpbWVvdXRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCBleHBpcmVkLiIpOwogCiAvKgogICogICAgRU9GRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KQEAgLTk2NywyMSArMTI4OCwyMyBAQAogc3RhdGljIFB5T2JqZWN0KgogbXlfYmFzZW5hbWUoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgUHlfVU5JQ09ERSAqdW5pY29kZTsKICAgICBQeV9zc2l6ZV90IGksIHNpemUsIG9mZnNldDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG5hbWUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShuYW1lKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSk7CiAgICAgb2Zmc2V0ID0gMDsKICAgICBmb3IoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGlmICh1bmljb2RlW2ldID09IFNFUCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09IFNFUCkKICAgICAgICAgICAgIG9mZnNldCA9IGkgKyAxOwogICAgIH0KLSAgICBpZiAob2Zmc2V0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpICsgb2Zmc2V0LAotICAgICAgICAgICAgc2l6ZSAtIG9mZnNldCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAob2Zmc2V0ICE9IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIG9mZnNldCwgc2l6ZSk7CisgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfQpAQCAtMTA0OSw3ICsxMzcyLDcgQEAKIH07CiAKIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3ludGF4RXJyb3IsIFN5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4RXJyb3JfZGVhbGxvYywgMCwgU3ludGF4RXJyb3JfbWVtYmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFN5bnRheEVycm9yX21lbWJlcnMsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhFcnJvcl9zdHIsICJJbnZhbGlkIHN5bnRheC4iKTsKIAogCkBAIC0xMTAzLDcgKzE0MjYsNyBAQAogfQogCiBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Mb29rdXBFcnJvciwgS2V5RXJyb3IsIEJhc2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCBLZXlFcnJvcl9zdHIsICJNYXBwaW5nIGtleSBub3QgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBLZXlFcnJvcl9zdHIsICJNYXBwaW5nIGtleSBub3QgZm91bmQuIik7CiAKIAogLyoKQEAgLTEyMDIsNyArMTUyNSw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqc3RhcnQgPSAoKFB5VW5pY29kZUVycm9yT2JqZWN0ICopZXhjKS0+c3RhcnQ7Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGlmICgqc3RhcnQ8MCkKICAgICAgICAgKnN0YXJ0ID0gMDsgLypYWFggY2hlY2sgZm9yIHZhbHVlcyA8MCovCiAgICAgaWYgKCpzdGFydD49c2l6ZSkKQEAgLTEyNzAsNyArMTU5Myw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqZW5kID0gKChQeVVuaWNvZGVFcnJvck9iamVjdCAqKWV4YyktPmVuZDsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgaWYgKCplbmQ8MSkKICAgICAgICAgKmVuZCA9IDE7CiAgICAgaWYgKCplbmQ+c2l6ZSkKQEAgLTE0NDIsNiArMTc2NSwxMSBAQAogICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGVyci0+b2JqZWN0KSA8IC0xKSB7CisgICAgICAgIGVyci0+ZW5jb2RpbmcgPSBOVUxMOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKGVyci0+ZW5jb2RpbmcpOwogICAgIFB5X0lOQ1JFRihlcnItPm9iamVjdCk7CiAgICAgUHlfSU5DUkVGKGVyci0+cmVhc29uKTsKQEAgLTE0NjYsOCArMTc5NCw4IEBACiAgICAgaWYgKGVuY29kaW5nX3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9TSVpFKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKLSAgICAgICAgaW50IGJhZGNoYXIgPSAoaW50KVB5VW5pY29kZV9BU19VTklDT0RFKHVzZWxmLT5vYmplY3QpW3VzZWxmLT5zdGFydF07CisgICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKKyAgICAgICAgUHlfVUNTNCBiYWRjaGFyID0gUHlVbmljb2RlX1JlYWRDaGFyKHVzZWxmLT5vYmplY3QsIHVzZWxmLT5zdGFydCk7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICAgICAgaWYgKGJhZGNoYXIgPD0gMHhmZikKICAgICAgICAgICAgIGZtdCA9ICInJVUnIGNvZGVjIGNhbid0IGVuY29kZSBjaGFyYWN0ZXIgJ1xceCUwMngnIGluIHBvc2l0aW9uICV6ZDogJVUiOwpAQCAtMTQ3OCw3ICsxODA2LDcgQEAKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCiAgICAgICAgICAgICBmbXQsCiAgICAgICAgICAgICBlbmNvZGluZ19zdHIsCi0gICAgICAgICAgICBiYWRjaGFyLAorICAgICAgICAgICAgKGludCliYWRjaGFyLAogICAgICAgICAgICAgdXNlbGYtPnN0YXJ0LAogICAgICAgICAgICAgcmVhc29uX3N0cik7CiAgICAgfQpAQCAtMTY3NSw4ICsyMDAzLDggQEAKICAgICBpZiAocmVhc29uX3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9TSVpFKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKLSAgICAgICAgaW50IGJhZGNoYXIgPSAoaW50KVB5VW5pY29kZV9BU19VTklDT0RFKHVzZWxmLT5vYmplY3QpW3VzZWxmLT5zdGFydF07CisgICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKKyAgICAgICAgUHlfVUNTNCBiYWRjaGFyID0gUHlVbmljb2RlX1JlYWRDaGFyKHVzZWxmLT5vYmplY3QsIHVzZWxmLT5zdGFydCk7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICAgICAgaWYgKGJhZGNoYXIgPD0gMHhmZikKICAgICAgICAgICAgIGZtdCA9ICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHglMDJ4JyBpbiBwb3NpdGlvbiAlemQ6ICVVIjsKQEAgLTE2ODYsNyArMjAxNCw3IEBACiAgICAgICAgICAgICBmbXQgPSAiY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlciAnXFxVJTA4eCcgaW4gcG9zaXRpb24gJXpkOiAlVSI7CiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAogICAgICAgICAgICAgZm10LAotICAgICAgICAgICAgYmFkY2hhciwKKyAgICAgICAgICAgIChpbnQpYmFkY2hhciwKICAgICAgICAgICAgIHVzZWxmLT5zdGFydCwKICAgICAgICAgICAgIHJlYXNvbl9zdHIKICAgICAgICAgKTsKQEAgLTE3MTcsNiArMjA0NSw3IEBACiB9OwogUHlPYmplY3QgKlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciA9IChQeU9iamVjdCAqKSZfUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yOwogCisvKiBEZXByZWNhdGVkLiAqLwogUHlPYmplY3QgKgogUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKm9iamVjdCwgUHlfc3NpemVfdCBsZW5ndGgsCkBAIC0xNzI2LDYgKzIwNTUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCwgbGVuZ3RoLCBzdGFydCwgZW5kLCByZWFzb24pOwogfQogCitQeU9iamVjdCAqCitfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgIFB5T2JqZWN0ICpvYmplY3QsCisgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGNvbnN0IGNoYXIgKnJlYXNvbikKK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciwgIk9ucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QsIHN0YXJ0LCBlbmQsIHJlYXNvbik7Cit9CiAKIC8qCiAgKiAgICBBc3NlcnRpb25FcnJvciBleHRlbmRzIEV4Y2VwdGlvbgpAQCAtMTk3NSwxMSArMjMxMiw4MCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhiZGljdCwgIyBUWVBFLCBQeUV4Y18gIyMgVFlQRSkpIFwKICAgICAgICAgUHlfRmF0YWxFcnJvcigiTW9kdWxlIGRpY3Rpb25hcnkgaW5zZXJ0aW9uIHByb2JsZW0uIik7CiAKKyNkZWZpbmUgSU5JVF9BTElBUyhOQU1FLCBUWVBFKSBQeV9JTkNSRUYoUHlFeGNfICMjIFRZUEUpOyBcCisgICAgUHlfWERFQ1JFRihQeUV4Y18gIyMgTkFNRSk7IFwKKyAgICBQeUV4Y18gIyMgTkFNRSA9IFB5RXhjXyAjIyBUWVBFOyBcCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGJkaWN0LCAjIE5BTUUsIFB5RXhjXyAjIyBOQU1FKSkgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJNb2R1bGUgZGljdGlvbmFyeSBpbnNlcnRpb24gcHJvYmxlbS4iKTsKKworI2RlZmluZSBBRERfRVJSTk8oVFlQRSwgQ09ERSkgeyBcCisgICAgUHlPYmplY3QgKl9jb2RlID0gUHlMb25nX0Zyb21Mb25nKENPREUpOyBcCisgICAgYXNzZXJ0KF9QeU9iamVjdF9SZWFsSXNTdWJjbGFzcyhQeUV4Y18gIyMgVFlQRSwgUHlFeGNfT1NFcnJvcikpOyBcCisgICAgaWYgKCFfY29kZSB8fCBQeURpY3RfU2V0SXRlbShlcnJub21hcCwgX2NvZGUsIFB5RXhjXyAjIyBUWVBFKSkgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJlcnJtYXAgaW5zZXJ0aW9uIHByb2JsZW0uIik7IFwKKyAgICBQeV9ERUNSRUYoX2NvZGUpOyBcCisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPFdpbnNvY2syLmg+CisvKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3ZXJlIGFkZGVkIHRvIGVycm5vLmggaW4gVlMyMDEwIGJ1dCBoYXZlCisgICBwcmVmZXJyZWQgV1NBIGVxdWl2YWxlbnRzLiAqLworI3VuZGVmIEVBRERSSU5VU0UKKyN1bmRlZiBFQUREUk5PVEFWQUlMCisjdW5kZWYgRUFGTk9TVVBQT1JUCisjdW5kZWYgRUFMUkVBRFkKKyN1bmRlZiBFQ09OTkFCT1JURUQKKyN1bmRlZiBFQ09OTlJFRlVTRUQKKyN1bmRlZiBFQ09OTlJFU0VUCisjdW5kZWYgRURFU1RBRERSUkVRCisjdW5kZWYgRUhPU1RVTlJFQUNICisjdW5kZWYgRUlOUFJPR1JFU1MKKyN1bmRlZiBFSVNDT05OCisjdW5kZWYgRUxPT1AKKyN1bmRlZiBFTVNHU0laRQorI3VuZGVmIEVORVRET1dOCisjdW5kZWYgRU5FVFJFU0VUCisjdW5kZWYgRU5FVFVOUkVBQ0gKKyN1bmRlZiBFTk9CVUZTCisjdW5kZWYgRU5PUFJPVE9PUFQKKyN1bmRlZiBFTk9UQ09OTgorI3VuZGVmIEVOT1RTT0NLCisjdW5kZWYgRU9QTk9UU1VQUAorI3VuZGVmIEVQUk9UT05PU1VQUE9SVAorI3VuZGVmIEVQUk9UT1RZUEUKKyN1bmRlZiBFVElNRURPVVQKKyN1bmRlZiBFV09VTERCTE9DSworCisjaWYgZGVmaW5lZChXU0FFQUxSRUFEWSkgJiYgIWRlZmluZWQoRUFMUkVBRFkpCisjZGVmaW5lIEVBTFJFQURZIFdTQUVBTFJFQURZCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OQUJPUlRFRCkgJiYgIWRlZmluZWQoRUNPTk5BQk9SVEVEKQorI2RlZmluZSBFQ09OTkFCT1JURUQgV1NBRUNPTk5BQk9SVEVECisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OUkVGVVNFRCkgJiYgIWRlZmluZWQoRUNPTk5SRUZVU0VEKQorI2RlZmluZSBFQ09OTlJFRlVTRUQgV1NBRUNPTk5SRUZVU0VECisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OUkVTRVQpICYmICFkZWZpbmVkKEVDT05OUkVTRVQpCisjZGVmaW5lIEVDT05OUkVTRVQgV1NBRUNPTk5SRVNFVAorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFSU5QUk9HUkVTUykgJiYgIWRlZmluZWQoRUlOUFJPR1JFU1MpCisjZGVmaW5lIEVJTlBST0dSRVNTIFdTQUVJTlBST0dSRVNTCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVTSFVURE9XTikgJiYgIWRlZmluZWQoRVNIVVRET1dOKQorI2RlZmluZSBFU0hVVERPV04gV1NBRVNIVVRET1dOCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVUSU1FRE9VVCkgJiYgIWRlZmluZWQoRVRJTUVET1VUKQorI2RlZmluZSBFVElNRURPVVQgV1NBRVRJTUVET1VUCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVXT1VMREJMT0NLKSAmJiAhZGVmaW5lZChFV09VTERCTE9DSykKKyNkZWZpbmUgRVdPVUxEQkxPQ0sgV1NBRVdPVUxEQkxPQ0sKKyNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogdm9pZAotX1B5RXhjX0luaXQodm9pZCkKK19QeUV4Y19Jbml0KFB5T2JqZWN0ICpibHRpbm1vZCkKIHsKLSAgICBQeU9iamVjdCAqYmx0aW5tb2QsICpiZGljdDsKKyAgICBQeU9iamVjdCAqYmRpY3Q7CiAKICAgICBQUkVfSU5JVChCYXNlRXhjZXB0aW9uKQogICAgIFBSRV9JTklUKEV4Y2VwdGlvbikKQEAgLTE5ODksMTUgKzIzOTUsNyBAQAogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCiAgICAgUFJFX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUFJFX0lOSVQoSW1wb3J0RXJyb3IpCi0gICAgUFJFX0lOSVQoRW52aXJvbm1lbnRFcnJvcikKLSAgICBQUkVfSU5JVChJT0Vycm9yKQogICAgIFBSRV9JTklUKE9TRXJyb3IpCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFBSRV9JTklUKFdpbmRvd3NFcnJvcikKLSNlbmRpZgotI2lmZGVmIF9fVk1TCi0gICAgUFJFX0lOSVQoVk1TRXJyb3IpCi0jZW5kaWYKICAgICBQUkVfSU5JVChFT0ZFcnJvcikKICAgICBQUkVfSU5JVChSdW50aW1lRXJyb3IpCiAgICAgUFJFX0lOSVQoTm90SW1wbGVtZW50ZWRFcnJvcikKQEAgLTIwMzcsOSArMjQzNSwyNCBAQAogICAgIFBSRV9JTklUKEJ5dGVzV2FybmluZykKICAgICBQUkVfSU5JVChSZXNvdXJjZVdhcm5pbmcpCiAKLSAgICBibHRpbm1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICBpZiAoYmx0aW5tb2QgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiZXhjZXB0aW9ucyBib290c3RyYXBwaW5nIGVycm9yLiIpOworICAgIC8qIE9TRXJyb3Igc3ViY2xhc3NlcyAqLworICAgIFBSRV9JTklUKENvbm5lY3Rpb25FcnJvcik7CisKKyAgICBQUkVfSU5JVChCbG9ja2luZ0lPRXJyb3IpOworICAgIFBSRV9JTklUKEJyb2tlblBpcGVFcnJvcik7CisgICAgUFJFX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25SZXNldEVycm9yKTsKKyAgICBQUkVfSU5JVChGaWxlRXhpc3RzRXJyb3IpOworICAgIFBSRV9JTklUKEZpbGVOb3RGb3VuZEVycm9yKTsKKyAgICBQUkVfSU5JVChJc0FEaXJlY3RvcnlFcnJvcik7CisgICAgUFJFX0lOSVQoTm90QURpcmVjdG9yeUVycm9yKTsKKyAgICBQUkVfSU5JVChJbnRlcnJ1cHRlZEVycm9yKTsKKyAgICBQUkVfSU5JVChQZXJtaXNzaW9uRXJyb3IpOworICAgIFBSRV9JTklUKFByb2Nlc3NMb29rdXBFcnJvcik7CisgICAgUFJFX0lOSVQoVGltZW91dEVycm9yKTsKKwogICAgIGJkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChibHRpbm1vZCk7CiAgICAgaWYgKGJkaWN0ID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImV4Y2VwdGlvbnMgYm9vdHN0cmFwcGluZyBlcnJvci4iKTsKQEAgLTIwNTIsMTQgKzI0NjUsMTQgQEAKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQT1NUX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUE9TVF9JTklUKEltcG9ydEVycm9yKQotICAgIFBPU1RfSU5JVChFbnZpcm9ubWVudEVycm9yKQotICAgIFBPU1RfSU5JVChJT0Vycm9yKQogICAgIFBPU1RfSU5JVChPU0Vycm9yKQorICAgIElOSVRfQUxJQVMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKKyAgICBJTklUX0FMSUFTKElPRXJyb3IsIE9TRXJyb3IpCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFBPU1RfSU5JVChXaW5kb3dzRXJyb3IpCisgICAgSU5JVF9BTElBUyhXaW5kb3dzRXJyb3IsIE9TRXJyb3IpCiAjZW5kaWYKICNpZmRlZiBfX1ZNUwotICAgIFBPU1RfSU5JVChWTVNFcnJvcikKKyAgICBJTklUX0FMSUFTKFZNU0Vycm9yLCBPU0Vycm9yKQogI2VuZGlmCiAgICAgUE9TVF9JTklUKEVPRkVycm9yKQogICAgIFBPU1RfSU5JVChSdW50aW1lRXJyb3IpCkBAIC0yMTAwLDYgKzI1MTMsNDkgQEAKICAgICBQT1NUX0lOSVQoQnl0ZXNXYXJuaW5nKQogICAgIFBPU1RfSU5JVChSZXNvdXJjZVdhcm5pbmcpCiAKKyAgICBpZiAoIWVycm5vbWFwKSB7CisgICAgICAgIGVycm5vbWFwID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWVycm5vbWFwKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGFsbG9jYXRlIG1hcCBmcm9tIGVycm5vcyB0byBPU0Vycm9yIHN1YmNsYXNzZXMiKTsKKyAgICB9CisKKyAgICAvKiBPU0Vycm9yIHN1YmNsYXNzZXMgKi8KKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkVycm9yKTsKKworICAgIFBPU1RfSU5JVChCbG9ja2luZ0lPRXJyb3IpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVBR0FJTik7CisgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRUFMUkVBRFkpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVJTlBST0dSRVNTKTsKKyAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFV09VTERCTE9DSyk7CisgICAgUE9TVF9JTklUKEJyb2tlblBpcGVFcnJvcik7CisgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVBJUEUpOworICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVTSFVURE9XTik7CisgICAgUE9TVF9JTklUKENoaWxkUHJvY2Vzc0Vycm9yKTsKKyAgICBBRERfRVJSTk8oQ2hpbGRQcm9jZXNzRXJyb3IsIEVDSElMRCk7CisgICAgUE9TVF9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uQWJvcnRlZEVycm9yLCBFQ09OTkFCT1JURUQpOworICAgIFBPU1RfSU5JVChDb25uZWN0aW9uUmVmdXNlZEVycm9yKTsKKyAgICBBRERfRVJSTk8oQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgRUNPTk5SRUZVU0VEKTsKKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvblJlc2V0RXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uUmVzZXRFcnJvciwgRUNPTk5SRVNFVCk7CisgICAgUE9TVF9JTklUKEZpbGVFeGlzdHNFcnJvcik7CisgICAgQUREX0VSUk5PKEZpbGVFeGlzdHNFcnJvciwgRUVYSVNUKTsKKyAgICBQT1NUX0lOSVQoRmlsZU5vdEZvdW5kRXJyb3IpOworICAgIEFERF9FUlJOTyhGaWxlTm90Rm91bmRFcnJvciwgRU5PRU5UKTsKKyAgICBQT1NUX0lOSVQoSXNBRGlyZWN0b3J5RXJyb3IpOworICAgIEFERF9FUlJOTyhJc0FEaXJlY3RvcnlFcnJvciwgRUlTRElSKTsKKyAgICBQT1NUX0lOSVQoTm90QURpcmVjdG9yeUVycm9yKTsKKyAgICBBRERfRVJSTk8oTm90QURpcmVjdG9yeUVycm9yLCBFTk9URElSKTsKKyAgICBQT1NUX0lOSVQoSW50ZXJydXB0ZWRFcnJvcik7CisgICAgQUREX0VSUk5PKEludGVycnVwdGVkRXJyb3IsIEVJTlRSKTsKKyAgICBQT1NUX0lOSVQoUGVybWlzc2lvbkVycm9yKTsKKyAgICBBRERfRVJSTk8oUGVybWlzc2lvbkVycm9yLCBFQUNDRVMpOworICAgIEFERF9FUlJOTyhQZXJtaXNzaW9uRXJyb3IsIEVQRVJNKTsKKyAgICBQT1NUX0lOSVQoUHJvY2Vzc0xvb2t1cEVycm9yKTsKKyAgICBBRERfRVJSTk8oUHJvY2Vzc0xvb2t1cEVycm9yLCBFU1JDSCk7CisgICAgUE9TVF9JTklUKFRpbWVvdXRFcnJvcik7CisgICAgQUREX0VSUk5PKFRpbWVvdXRFcnJvciwgRVRJTUVET1VUKTsKKwogICAgIHByZWFsbG9jYXRlX21lbWVycm9ycygpOwogCiAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpIHsKQEAgLTIxMjYsNyArMjU4Miw2IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnc190dXBsZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfREVDUkVGKGJsdGlubW9kKTsKIH0KIAogdm9pZApAQCAtMjEzNCw0ICsyNTg5LDUgQEAKIHsKICAgICBQeV9DTEVBUihQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpOwogICAgIGZyZWVfcHJlYWxsb2NhdGVkX21lbWVycm9ycygpOworICAgIFB5X0NMRUFSKGVycm5vbWFwKTsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggNTAwODgzZS4uM2EzMTMxNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTMwLDExICszMCwxMiBAQAogICAgICAgICAgICAgICBjaGFyICplcnJvcnMsIGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkKQogewogICAgIFB5T2JqZWN0ICppbywgKnN0cmVhbTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKIAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpOwogICAgIGlmIChpbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJlYW0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lzc3NpIiwgZmQsIG1vZGUsCisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaXNzc2kiLCBmZCwgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGNsb3NlZmQpOwogICAgIFB5X0RFQ1JFRihpbyk7CkBAIC01OCw4ICs1OSw5IEBACiAgICAgewogICAgICAgICBQeU9iamVjdCAqcmVhZGVyOwogICAgICAgICBQeU9iamVjdCAqYXJnczsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOwogCi0gICAgICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgInJlYWRsaW5lIik7CisgICAgICAgIHJlYWRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZGxpbmUpOwogICAgICAgICBpZiAocmVhZGVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKG4gPD0gMCkKQEAgLTEwMywyMyArMTA1LDE4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG4gPCAwICYmIHJlc3VsdCAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhyZXN1bHQpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAgICAgICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFT0Ygd2hlbiByZWFkaW5nIGEgbGluZSIpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNbbGVuLTFdID09ICdcbicpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKQotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgbGVuLTEpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBsZW4tMSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihyZXN1bHQsIGxlbi0xKSA9PSAnXG4nKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHJlc3VsdCwgMCwgbGVuLTEpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSB2OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzEsMTEgKzEyOCwxMyBAQAogUHlGaWxlX1dyaXRlT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZiwgaW50IGZsYWdzKQogewogICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKmFyZ3MsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgaWYgKGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAid3JpdGVvYmplY3Qgd2l0aCBOVUxMIGZpbGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB3cml0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGYsICJ3cml0ZSIpOworICAgIHdyaXRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfd3JpdGUpOwogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChmbGFncyAmIFB5X1BSSU5UX1JBVykgewpAQCAtMTk4LDExICsxOTcsMTIgQEAKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlPYmplY3QgKm1ldGg7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2sobykpIHsKICAgICAgICAgZmQgPSBfUHlMb25nX0FzSW50KG8pOwogICAgIH0KLSAgICBlbHNlIGlmICgobWV0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgImZpbGVubyIpKSAhPSBOVUxMKQorICAgIGVsc2UgaWYgKChtZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCAmUHlJZF9maWxlbm8pKSAhPSBOVUxMKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZubyA9IFB5RXZhbF9DYWxsT2JqZWN0KG1ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYobWV0aCk7CkBAIC0yOTcsOCArMjk3LDggQEAKICAgICAgICAgKnArKyA9IGM7CiAgICAgICAgIGlmIChjID09ICdcbicpIGJyZWFrOwogICAgIH0KLSAgICBpZiAoIGMgPT0gRU9GICYmIHNraXBuZXh0bGYgKQotICAgICAgICBuZXdsaW5ldHlwZXMgfD0gTkVXTElORV9DUjsKKyAgICAvKiBpZiAoIGMgPT0gRU9GICYmIHNraXBuZXh0bGYgKQorICAgICAgICBuZXdsaW5ldHlwZXMgfD0gTkVXTElORV9DUjsgKi8KICAgICBGVU5MT0NLRklMRShzdHJlYW0pOwogICAgICpwID0gJ1wwJzsKICAgICBpZiAoIHNraXBuZXh0bGYgKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggZTE0NmE0Zi4uYTQyYmU3MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTUsNTkgKzE1LDE3IEBACiAjZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8gKHgpIDogKHkpKQogCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoaXMgYXZhaWxhYmxlIHdpdGggWE9QRU5fU09VUkNFX0VYVEVOREVEIGRlZmluZWQgKi8KLWV4dGVybiBpbnQgZmluaXRlKGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogU3BlY2lhbCBmcmVlIGxpc3QKLQotICAgU2luY2Ugc29tZSBQeXRob24gcHJvZ3JhbXMgY2FuIHNwZW5kIG11Y2ggb2YgdGhlaXIgdGltZSBhbGxvY2F0aW5nCi0gICBhbmQgZGVhbGxvY2F0aW5nIGZsb2F0cywgdGhlc2Ugb3BlcmF0aW9ucyBzaG91bGQgYmUgdmVyeSBmYXN0LgotICAgVGhlcmVmb3JlIHdlIHVzZSBhIGRlZGljYXRlZCBhbGxvY2F0aW9uIHNjaGVtZSB3aXRoIGEgbXVjaCBsb3dlcgotICAgb3ZlcmhlYWQgKGluIHNwYWNlIGFuZCB0aW1lKSB0aGFuIHN0cmFpZ2h0IG1hbGxvYygpOiBhIHNpbXBsZQotICAgZGVkaWNhdGVkIGZyZWUgbGlzdCwgZmlsbGVkIHdoZW4gbmVjZXNzYXJ5IHdpdGggbWVtb3J5IGZyb20gbWFsbG9jKCkuCi0KLSAgIGJsb2NrX2xpc3QgaXMgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgYWxsIFB5RmxvYXRCbG9ja3MgZXZlciBhbGxvY2F0ZWQsCi0gICBsaW5rZWQgdmlhIHRoZWlyIG5leHQgbWVtYmVycy4gIFB5RmxvYXRCbG9ja3MgYXJlIG5ldmVyIHJldHVybmVkIHRvIHRoZQotICAgc3lzdGVtIGJlZm9yZSBzaHV0ZG93biAoUHlGbG9hdF9GaW5pKS4KLQogICAgZnJlZV9saXN0IGlzIGEgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIGF2YWlsYWJsZSBQeUZsb2F0T2JqZWN0cywgbGlua2VkCiAgICB2aWEgYWJ1c2Ugb2YgdGhlaXIgb2JfdHlwZSBtZW1iZXJzLgogKi8KIAotI2RlZmluZSBCTE9DS19TSVpFICAgICAgMTAwMCAgICAvKiAxSyBsZXNzIHR5cGljYWwgbWFsbG9jIG92ZXJoZWFkICovCi0jZGVmaW5lIEJIRUFEX1NJWkUgICAgICA4ICAgICAgIC8qIEVub3VnaCBmb3IgYSA2NC1iaXQgcG9pbnRlciAqLwotI2RlZmluZSBOX0ZMT0FUT0JKRUNUUyAgKChCTE9DS19TSVpFIC0gQkhFQURfU0laRSkgLyBzaXplb2YoUHlGbG9hdE9iamVjdCkpCi0KLXN0cnVjdCBfZmxvYXRibG9jayB7Ci0gICAgc3RydWN0IF9mbG9hdGJsb2NrICpuZXh0OwotICAgIFB5RmxvYXRPYmplY3Qgb2JqZWN0c1tOX0ZMT0FUT0JKRUNUU107Ci19OwotCi10eXBlZGVmIHN0cnVjdCBfZmxvYXRibG9jayBQeUZsb2F0QmxvY2s7Ci0KLXN0YXRpYyBQeUZsb2F0QmxvY2sgKmJsb2NrX2xpc3QgPSBOVUxMOworI2lmbmRlZiBQeUZsb2F0X01BWEZSRUVMSVNUCisjZGVmaW5lIFB5RmxvYXRfTUFYRlJFRUxJU1QgICAgMTAwCisjZW5kaWYKK3N0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiBzdGF0aWMgUHlGbG9hdE9iamVjdCAqZnJlZV9saXN0ID0gTlVMTDsKIAotc3RhdGljIFB5RmxvYXRPYmplY3QgKgotZmlsbF9mcmVlX2xpc3Qodm9pZCkKLXsKLSAgICBQeUZsb2F0T2JqZWN0ICpwLCAqcTsKLSAgICAvKiBYWFggRmxvYXQgYmxvY2tzIGVzY2FwZSB0aGUgb2JqZWN0IGhlYXAuIFVzZSBQeU9iamVjdF9NQUxMT0MgPz8/ICovCi0gICAgcCA9IChQeUZsb2F0T2JqZWN0ICopIFB5TWVtX01BTExPQyhzaXplb2YoUHlGbG9hdEJsb2NrKSk7Ci0gICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeUZsb2F0T2JqZWN0ICopIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgKChQeUZsb2F0QmxvY2sgKilwKS0+bmV4dCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IChQeUZsb2F0QmxvY2sgKilwOwotICAgIHAgPSAmKChQeUZsb2F0QmxvY2sgKilwKS0+b2JqZWN0c1swXTsKLSAgICBxID0gcCArIE5fRkxPQVRPQkpFQ1RTOwotICAgIHdoaWxlICgtLXEgPiBwKQotICAgICAgICBQeV9UWVBFKHEpID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKShxLTEpOwotICAgIFB5X1RZUEUocSkgPSBOVUxMOwotICAgIHJldHVybiBwICsgTl9GTE9BVE9CSkVDVFMgLSAxOwotfQotCiBkb3VibGUKIFB5RmxvYXRfR2V0TWF4KHZvaWQpCiB7CkBAIC0xNTYsMTQgKzExNCwxNiBAQAogUHlPYmplY3QgKgogUHlGbG9hdF9Gcm9tRG91YmxlKGRvdWJsZSBmdmFsKQogewotICAgIHJlZ2lzdGVyIFB5RmxvYXRPYmplY3QgKm9wOwotICAgIGlmIChmcmVlX2xpc3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoKGZyZWVfbGlzdCA9IGZpbGxfZnJlZV9saXN0KCkpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZWdpc3RlciBQeUZsb2F0T2JqZWN0ICpvcCA9IGZyZWVfbGlzdDsKKyAgICBpZiAob3AgIT0gTlVMTCkgeworICAgICAgICBmcmVlX2xpc3QgPSAoUHlGbG9hdE9iamVjdCAqKSBQeV9UWVBFKG9wKTsKKyAgICAgICAgbnVtZnJlZS0tOworICAgIH0gZWxzZSB7CisgICAgICAgIG9wID0gKFB5RmxvYXRPYmplY3QqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5RmxvYXRPYmplY3QpKTsKKyAgICAgICAgaWYgKCFvcCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICAvKiBJbmxpbmUgUHlPYmplY3RfTmV3ICovCi0gICAgb3AgPSBmcmVlX2xpc3Q7Ci0gICAgZnJlZV9saXN0ID0gKFB5RmxvYXRPYmplY3QgKilQeV9UWVBFKG9wKTsKICAgICBQeU9iamVjdF9JTklUKG9wLCAmUHlGbG9hdF9UeXBlKTsKICAgICBvcC0+b2JfZnZhbCA9IGZ2YWw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTE3OSwyNSArMTM5LDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHYpOwotICAgICAgICBQeV9VTklDT0RFICpidWZwdHI7Ci0gICAgICAgIHNfYnVmZmVyID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodiksIGJ1Zmxlbik7CisgICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwogICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiBSZXBsYWNlIG5vbi1BU0NJSSB3aGl0ZXNwYWNlIHdpdGggJyAnICovCi0gICAgICAgIGJ1ZnB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNfYnVmZmVyKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ1ZmxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gYnVmcHRyW2ldOwotICAgICAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgYnVmcHRyW2ldID0gJyAnOwotICAgICAgICB9Ci0gICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBsYXN0ID0gcyArIGxlbjsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfQXNDaGFyQnVmZmVyKHYsICZzLCAmbGVuKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMjMzLDYgKzE4MiwxMSBAQAogZmxvYXRfZGVhbGxvYyhQeUZsb2F0T2JqZWN0ICpvcCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KG9wKSkgeworICAgICAgICBpZiAobnVtZnJlZSA+PSBQeUZsb2F0X01BWEZSRUVMSVNUKSAgeworICAgICAgICAgICAgUHlPYmplY3RfRlJFRShvcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbnVtZnJlZSsrOwogICAgICAgICBQeV9UWVBFKG9wKSA9IChzdHJ1Y3QgX3R5cGVvYmplY3QgKilmcmVlX2xpc3Q7CiAgICAgICAgIGZyZWVfbGlzdCA9IG9wOwogICAgIH0KQEAgLTMxMywxMyArMjY3LDE1IEBACiBmbG9hdF9yZXByKFB5RmxvYXRPYmplY3QgKnYpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBjaGFyICpidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoUHlGbG9hdF9BU19ET1VCTEUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyJywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRFRTRl9BRERfRE9UXzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGNoYXIgKmJ1ZjsKKworICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhQeUZsb2F0X0FTX0RPVUJMRSh2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3InLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9EVFNGX0FERF9ET1RfMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgaWYgKCFidWYpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBzdHJsZW4oYnVmKSk7CiAgICAgUHlNZW1fRnJlZShidWYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MjMsOCArNDc5LDcgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIpOwogCiAgVW5pbXBsZW1lbnRlZDoKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeV9oYXNoX3QKQEAgLTEwODAsNyArMTAzNSw3IEBACiBjaGFyX2Zyb21faGV4KGludCB4KQogewogICAgIGFzc2VydCgwIDw9IHggJiYgeCA8IDE2KTsKLSAgICByZXR1cm4gIjAxMjM0NTY3ODlhYmNkZWYiW3hdOworICAgIHJldHVybiBQeV9oZXhkaWdpdHNbeF07CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE3NTAsMTIgKzE3MDUsMjIgQEAKIGZsb2F0X19mb3JtYXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKGZsb2F0X19mb3JtYXRfX2RvYywKQEAgLTE5NTAsOTggKzE5MTUsMzQgQEAKIGludAogUHlGbG9hdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgUHlGbG9hdE9iamVjdCAqcDsKLSAgICBQeUZsb2F0QmxvY2sgKmxpc3QsICpuZXh0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiByZW1haW5pbmcgdW5mcmVlZCBmbG9hdHMgcGVyIGJsb2NrICovCi0gICAgaW50IGZyZWVsaXN0X3NpemUgPSAwOwotCi0gICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IE5VTEw7Ci0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgIHUgPSAwOwotICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KHApICYmIFB5X1JFRkNOVChwKSAhPSAwKQotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBuZXh0ID0gbGlzdC0+bmV4dDsKLSAgICAgICAgaWYgKHUpIHsKLSAgICAgICAgICAgIGxpc3QtPm5leHQgPSBibG9ja19saXN0OwotICAgICAgICAgICAgYmxvY2tfbGlzdCA9IGxpc3Q7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgICAgIGkgPCBOX0ZMT0FUT0JKRUNUUzsKLSAgICAgICAgICAgICAgICAgaSsrLCBwKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChwKSB8fAotICAgICAgICAgICAgICAgICAgICBQeV9SRUZDTlQocCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHApID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9saXN0OwotICAgICAgICAgICAgICAgICAgICBmcmVlX2xpc3QgPSBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZWxpc3Rfc2l6ZSArPSB1OwotICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICBQeUZsb2F0T2JqZWN0ICpmID0gZnJlZV9saXN0LCAqbmV4dDsKKyAgICBpbnQgaSA9IG51bWZyZWU7CisgICAgd2hpbGUgKGYpIHsKKyAgICAgICAgbmV4dCA9IChQeUZsb2F0T2JqZWN0KikgUHlfVFlQRShmKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShmKTsKKyAgICAgICAgZiA9IG5leHQ7CiAgICAgfQotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIGZyZWVfbGlzdCA9IE5VTEw7CisgICAgbnVtZnJlZSA9IDA7CisgICAgcmV0dXJuIGk7CiB9CiAKIHZvaWQKIFB5RmxvYXRfRmluaSh2b2lkKQogewotICAgIFB5RmxvYXRPYmplY3QgKnA7Ci0gICAgUHlGbG9hdEJsb2NrICpsaXN0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiB0b3RhbCB1bmZyZWVkIGZsb2F0cyBwZXIgYmxvY2sgKi8KLQotICAgIHUgPSBQeUZsb2F0X0NsZWFyRnJlZUxpc3QoKTsKLQotICAgIGlmICghUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiMgY2xlYW51cCBmbG9hdHMiKTsKLSAgICBpZiAoIXUpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiOiAlZCB1bmZyZWVkIGZsb2F0JXNcbiIsCi0gICAgICAgICAgICB1LCB1ID09IDEgPyAiIiA6ICJzIik7Ci0gICAgfQotICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKLSAgICAgICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKLSAgICAgICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgICAgICBpKyssIHArKykgewotICAgICAgICAgICAgICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QocCkgJiYKLSAgICAgICAgICAgICAgICAgICAgUHlfUkVGQ05UKHApICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlGbG9hdF9BU19ET1VCTEUocCksICdyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYnVmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFgodHdvdXRlcnMpIGNhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmNvdW50IHRvIGxvbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsICV6ZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAiIyAgIDxmbG9hdCBhdCAlcCwgcmVmY250PSVsZCwgdmFsPSVzPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIChsb25nKVB5X1JFRkNOVChwKSwgYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7Ci0gICAgICAgIH0KLSAgICB9CisgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGbG9hdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGbG9hdE9iamVjdCkpOworfQorCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXs0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCiAgKi8KQEAgLTIyNTEsNyArMjE1Miw3IEBACiAKICAgICAgICAgLyogRWlnaHRoIGJ5dGUgKi8KICAgICAgICAgKnAgPSBmbG8gJiAweEZGOwotICAgICAgICBwICs9IGluY3I7CisgICAgICAgIC8qIHAgKz0gaW5jcjsgKi8KIAogICAgICAgICAvKiBEb25lICovCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IGFkY2U0MmIuLjgwOGU1OTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTE1LDExICsxNSwxMSBAQAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlGcmFtZU9iamVjdCwgeCkKIAogc3RhdGljIFB5TWVtYmVyRGVmIGZyYW1lX21lbWJlcmxpc3RbXSA9IHsKLSAgICB7ImZfYmFjayIsICAgICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9iYWNrKSwgICAgUkVBRE9OTFl9LAotICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICBSRUFET05MWX0sCi0gICAgeyJmX2J1aWx0aW5zIiwgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYnVpbHRpbnMpLFJFQURPTkxZfSwKLSAgICB7ImZfZ2xvYmFscyIsICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9nbG9iYWxzKSwgUkVBRE9OTFl9LAotICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICBSRUFET05MWX0sCisgICAgeyJmX2JhY2siLCAgICAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYmFjayksICAgICAgUkVBRE9OTFl9LAorICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICAgIFJFQURPTkxZfSwKKyAgICB7ImZfYnVpbHRpbnMiLCAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9idWlsdGlucyksICBSRUFET05MWX0sCisgICAgeyJmX2dsb2JhbHMiLCAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfZ2xvYmFscyksICAgUkVBRE9OTFl9LAorICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICAgIFJFQURPTkxZfSwKICAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNjE0LDEwICs2MTQsOCBAQAogICAgICAgICBpZiAoYnVpbHRpbnMpIHsKICAgICAgICAgICAgIGlmIChQeU1vZHVsZV9DaGVjayhidWlsdGlucykpIHsKICAgICAgICAgICAgICAgICBidWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYnVpbHRpbnMpOwotICAgICAgICAgICAgICAgIGFzc2VydCghYnVpbHRpbnMgfHwgUHlEaWN0X0NoZWNrKGJ1aWx0aW5zKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhidWlsdGlucykpCi0gICAgICAgICAgICAgICAgYnVpbHRpbnMgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBObyBidWlsdGlucyEgICAgICAgICAgICAgIE1ha2UgdXAgYSBtaW5pbWFsIG9uZQpAQCAtNjM2LDcgKzYzNCw3IEBACiAgICAgICAgIC8qIElmIHdlIHNoYXJlIHRoZSBnbG9iYWxzLCB3ZSBzaGFyZSB0aGUgYnVpbHRpbnMuCiAgICAgICAgICAgIFNhdmUgYSBsb29rdXAgYW5kIGEgY2FsbC4gKi8KICAgICAgICAgYnVpbHRpbnMgPSBiYWNrLT5mX2J1aWx0aW5zOwotICAgICAgICBhc3NlcnQoYnVpbHRpbnMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soYnVpbHRpbnMpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICBQeV9JTkNSRUYoYnVpbHRpbnMpOwogICAgIH0KICAgICBpZiAoY29kZS0+Y29fem9tYmllZnJhbWUgIT0gTlVMTCkgewpAQCAtNjY1LDExICs2NjMsMTMgQEAKICAgICAgICAgICAgIGYgPSBmcmVlX2xpc3Q7CiAgICAgICAgICAgICBmcmVlX2xpc3QgPSBmcmVlX2xpc3QtPmZfYmFjazsKICAgICAgICAgICAgIGlmIChQeV9TSVpFKGYpIDwgZXh0cmFzKSB7Ci0gICAgICAgICAgICAgICAgZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOwotICAgICAgICAgICAgICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpuZXdfZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOworICAgICAgICAgICAgICAgIGlmIChuZXdfZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChmKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1aWx0aW5zKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGYgPSBuZXdfZjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopZik7CiAgICAgICAgIH0KQEAgLTk1NSwzICs5NTUsMTMgQEAKICAgICBQeV9YREVDUkVGKGJ1aWx0aW5fb2JqZWN0KTsKICAgICBidWlsdGluX29iamVjdCA9IE5VTEw7CiB9CisKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGcmFtZU9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGcmFtZU9iamVjdCkpOworfQorCmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IDIyOTJhOWUuLjQ5NDE1YjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC02LDcgKzYsNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiBQeU9iamVjdCAqCi1QeUZ1bmN0aW9uX05ldyhQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMpCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpvcCA9IFB5T2JqZWN0X0dDX05ldyhQeUZ1bmN0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUZ1bmN0aW9uX1R5cGUpOwpAQCAtNTQsNiArNTQsMTEgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2R1bGUpOwogICAgICAgICAgICAgb3AtPmZ1bmNfbW9kdWxlID0gbW9kdWxlOwogICAgICAgICB9CisgICAgICAgIGlmIChxdWFsbmFtZSkKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gcXVhbG5hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gb3AtPmZ1bmNfbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYyLDYgKzY3LDEyIEBACiB9CiAKIFB5T2JqZWN0ICoKK1B5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICByZXR1cm4gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoY29kZSwgZ2xvYmFscywgTlVMTCk7Cit9CisKK1B5T2JqZWN0ICoKIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqb3ApCiB7CiAgICAgaWYgKCFQeUZ1bmN0aW9uX0NoZWNrKG9wKSkgewpAQCAtMjM0LDQyICsyNDUsNiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWZ1bmNfZ2V0X2RpY3QoUHlGdW5jdGlvbk9iamVjdCAqb3ApCi17Ci0gICAgaWYgKG9wLT5mdW5jX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBvcC0+ZnVuY19kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAob3AtPmZ1bmNfZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19kaWN0KTsKLSAgICByZXR1cm4gb3AtPmZ1bmNfZGljdDsKLX0KLQotc3RhdGljIGludAotZnVuY19zZXRfZGljdChQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCBmLmZ1bmNfZGljdCAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24ncyBkaWN0aW9uYXJ5IG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIENhbiBvbmx5IHNldCBmdW5jX2RpY3QgdG8gYSBkaWN0aW9uYXJ5ICovCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBmdW5jdGlvbidzIGRpY3Rpb25hcnkgdG8gYSBub24tZGljdCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2RpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19kaWN0ID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogZnVuY19nZXRfY29kZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfY29kZSk7CkBAIC0zMzQsNiArMzA5LDMyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitmdW5jX2dldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKK3sKKyAgICBQeV9JTkNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOworICAgIHJldHVybiBvcC0+ZnVuY19xdWFsbmFtZTsKK30KKworc3RhdGljIGludAorZnVuY19zZXRfcXVhbG5hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworCisgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKKyAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+ZnVuY19xdWFsbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBmdW5jX2dldF9kZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBpZiAob3AtPmZ1bmNfZGVmYXVsdHMgPT0gTlVMTCkgewpAQCAtNDM5LDggKzQ0MCw5IEBACiAgICAgIChzZXR0ZXIpZnVuY19zZXRfa3dkZWZhdWx0c30sCiAgICAgeyJfX2Fubm90YXRpb25zX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X2Fubm90YXRpb25zLAogICAgICAoc2V0dGVyKWZ1bmNfc2V0X2Fubm90YXRpb25zfSwKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilmdW5jX2dldF9kaWN0LCAoc2V0dGVyKWZ1bmNfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X25hbWUsIChzZXR0ZXIpZnVuY19zZXRfbmFtZX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWZ1bmNfc2V0X3F1YWxuYW1lfSwKICAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTU2MSw2ICs1NjMsNyBAQAogICAgIFB5X1hERUNSRUYob3AtPmZ1bmNfZGljdCk7CiAgICAgUHlfWERFQ1JFRihvcC0+ZnVuY19jbG9zdXJlKTsKICAgICBQeV9YREVDUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zKTsKKyAgICBQeV9YREVDUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogfQogCkBAIC01NjgsNyArNTcxLDcgQEAKIGZ1bmNfcmVwcihQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxmdW5jdGlvbiAlVSBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5mdW5jX25hbWUsIG9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZnVuY19xdWFsbmFtZSwgb3ApOwogfQogCiBzdGF0aWMgaW50CkBAIC01ODQsNiArNTg3LDcgQEAKICAgICBQeV9WSVNJVChmLT5mdW5jX2RpY3QpOwogICAgIFB5X1ZJU0lUKGYtPmZ1bmNfY2xvc3VyZSk7CiAgICAgUHlfVklTSVQoZi0+ZnVuY19hbm5vdGF0aW9ucyk7CisgICAgUHlfVklTSVQoZi0+ZnVuY19xdWFsbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY2Nyw4ICs2NzEsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIGZ1bmN0aW9uX2NhbGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCiAgICAgZnVuY19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KQEAgLTcxNCw2ICs3MTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqY21fY2FsbGFibGU7CisgICAgUHlPYmplY3QgKmNtX2RpY3Q7CiB9IGNsYXNzbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtNzIxLDYgKzcyNiw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopY20pOwogICAgIFB5X1hERUNSRUYoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKGNtLT5jbV9kaWN0KTsKICAgICBQeV9UWVBFKGNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKiljbSk7CiB9CiAKQEAgLTcyOCw2ICs3MzQsNyBAQAogY21fdHJhdmVyc2UoY2xhc3NtZXRob2QgKmNtLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChjbS0+Y21fY2FsbGFibGUpOworICAgIFB5X1ZJU0lUKGNtLT5jbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzM1LDYgKzc0Miw3IEBACiBjbV9jbGVhcihjbGFzc21ldGhvZCAqY20pCiB7CiAgICAgUHlfQ0xFQVIoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9DTEVBUihjbS0+Y21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTc3NCw2ICs3ODIsMjggQEAKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlPYmplY3QgKgorY21fZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fKGNsYXNzbWV0aG9kICpjbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIGNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlciljbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNsYXNzbWV0aG9kX2RvYywKICJjbGFzc21ldGhvZChmdW5jdGlvbikgLT4gbWV0aG9kXG5cCiBcblwKQEAgLTgxMiw3ICs4NDIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtODI1LDEyICs4NTUsMTIgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgY21fbWVtYmVybGlzdCwgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGNtX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgY21fZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKGNsYXNzbWV0aG9kLCBjbV9kaWN0KSwgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIGNtX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwpAQCAtODY5LDYgKzg5OSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpzbV9jYWxsYWJsZTsKKyAgICBQeU9iamVjdCAqc21fZGljdDsKIH0gc3RhdGljbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtODc2LDYgKzkwNyw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopc20pOwogICAgIFB5X1hERUNSRUYoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKHNtLT5zbV9kaWN0KTsKICAgICBQeV9UWVBFKHNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzbSk7CiB9CiAKQEAgLTg4Myw2ICs5MTUsNyBAQAogc21fdHJhdmVyc2Uoc3RhdGljbWV0aG9kICpzbSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9WSVNJVChzbS0+c21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg5MCw2ICs5MjMsNyBAQAogc21fY2xlYXIoc3RhdGljbWV0aG9kICpzbSkKIHsKICAgICBQeV9DTEVBUihzbS0+c21fY2FsbGFibGUpOworICAgIFB5X0NMRUFSKHNtLT5zbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtOTI3LDYgKzk2MSwyOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18oc3RhdGljbWV0aG9kICpzbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3Qoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlcilzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHN0YXRpY21ldGhvZF9kb2MsCiAic3RhdGljbWV0aG9kKGZ1bmN0aW9uKSAtPiBtZXRob2RcblwKIFxuXApAQCAtOTYyLDcgKzEwMTgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtOTc1LDEyICsxMDMxLDEyIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIHNtX21lbWJlcmxpc3QsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBzbV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIHNtX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihzdGF0aWNtZXRob2QsIHNtX2RpY3QpLCAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICBzbV9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDZlMjVmMTMuLjU5N2FlZDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw2ICs1LDggQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAorc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpOworCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CkBAIC01MSw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZj09TlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBPbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpICovCiAgICAgICAgIGlmIChhcmcgJiYgIWV4YykKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CkBAIC05MCwxMiArOTIsMTkgQEAKIAogICAgIC8qIElmIHRoZSBnZW5lcmF0b3IganVzdCByZXR1cm5lZCAoYXMgb3Bwb3NlZCB0byB5aWVsZGluZyksIHNpZ25hbAogICAgICAqIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBleGhhdXN0ZWQuICovCi0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICAgICAgLyogU2V0IGV4Y2VwdGlvbiBpZiBub3QgY2FsbGVkIGJ5IGdlbl9pdGVybmV4dCgpICovCi0gICAgICAgIGlmIChhcmcpCisgICAgaWYgKHJlc3VsdCAmJiBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAvKiBEZWxheSBleGNlcHRpb24gaW5zdGFudGlhdGlvbiBpZiB3ZSBjYW4gKi8KICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzdWx0LCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CkBAIC0xMTEsOCArMTIwLDggQEAKICAgICAgICAgUHlfWERFQ1JFRih0KTsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICAgICAgZ2VuLT5naV9mcmFtZSA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTIyLDggKzEzMSw4IEBACiAic2VuZChhcmcpIC0+IHNlbmQgJ2FyZycgaW50byBnZW5lcmF0b3IsXG5cCiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1nZW5fc2VuZChQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJnKQorUHlPYmplY3QgKgorX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZykKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBhcmcsIDApOwogfQpAQCAtMTMxLDExICsxNDAsNzIgQEAKIFB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCiAiY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CiAKKy8qCisgKiAgIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHVzZWQgYnkgZ2VuX2Nsb3NlIGFuZCBnZW5fdGhyb3cgdG8KKyAqICAgY2xvc2UgYSBzdWJpdGVyYXRvciBiZWluZyBkZWxlZ2F0ZWQgdG8gYnkgeWllbGQtZnJvbS4KKyAqLworCitzdGF0aWMgaW50CitnZW5fY2xvc2VfaXRlcihQeU9iamVjdCAqeWYpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKKyAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CisgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIFB5X1hERUNSRUYocmV0dmFsKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dlbl95ZihQeUdlbk9iamVjdCAqZ2VuKQoreworICAgIFB5T2JqZWN0ICp5ZiA9IE5VTEw7CisgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CisKKyAgICBpZiAoZikgeworICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKKworICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOworICAgICAgICBQeV9JTkNSRUYoeWYpOworICAgIH0KKworICAgIHJldHVybiB5ZjsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CisgICAgUHlPYmplY3QgKnlmID0gZ2VuX3lmKGdlbik7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBpZiAoeWYpIHsKKyAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOworICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgIH0KKyAgICBpZiAoZXJyID09IDApCisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwpAQCAtMTQ0LDggKzIxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKQotICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpKQotICAgIHsKKyAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KSkgewogICAgICAgICBQeUVycl9DbGVhcigpOyAgICAgICAgICAvKiBpZ25vcmUgdGhlc2UgZXJyb3JzICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0xOTYsNyArMjY1LDcgQEAKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZShzZWxmKTsKICAgICAgICAgc2VsZi0+b2JfcmVmY250ID0gcmVmY250OwogICAgIH0KLSAgICBhc3NlcnQoUHlUeXBlX0lTX0dDKHNlbGYtPm9iX3R5cGUpICYmCisgICAgYXNzZXJ0KFB5VHlwZV9JU19HQyhQeV9UWVBFKHNlbGYpKSAmJgogICAgICAgICAgICBfUHlfQVNfR0Moc2VsZiktPmdjLmdjX3JlZnMgIT0gX1B5R0NfUkVGU19VTlRSQUNLRUQpOwogCiAgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCkBAIC0yMDksOCArMjc4LDggQEAKICAgICAgKiB1bmRvbmUuCiAgICAgICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgLS1zZWxmLT5vYl90eXBlLT50cF9mcmVlczsKLSAgICAtLXNlbGYtPm9iX3R5cGUtPnRwX2FsbG9jczsKKyAgICAtLShQeV9UWVBFKHNlbGYpLT50cF9mcmVlcyk7CisgICAgLS0oUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzKTsKICNlbmRpZgogfQogCkBAIC0yMjYsMTAgKzI5NSw2NCBAQAogICAgIFB5T2JqZWN0ICp0eXA7CiAgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoZ2VuKTsKKyAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKHlmKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgICAgIGludCBlcnI7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSk7CisgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX3Rocm93KTsKKyAgICAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsOworICAgICAgICAgICAgLyogUG9wIHN1Yml0ZXJhdG9yIGZyb20gc3RhY2sgKi8KKyAgICAgICAgICAgIHJldCA9ICooLS1nZW4tPmdpX2ZyYW1lLT5mX3N0YWNrdG9wKTsKKyAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOworICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGlmIChfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwordGhyb3dfaGVyZToKICAgICAvKiBGaXJzdCwgY2hlY2sgdGhlIHRyYWNlYmFjayBhcmd1bWVudCwgcmVwbGFjaW5nIE5vbmUgd2l0aAogICAgICAgIE5VTEwuICovCiAgICAgaWYgKHRiID09IFB5X05vbmUpIHsKQEAgLTI3Miw3ICszOTUsNyBAQAogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIG9yIGluc3RhbmNlcyAiCiAgICAgICAgICAgICAgICAgICAgICAiZGVyaXZpbmcgZnJvbSBCYXNlRXhjZXB0aW9uLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgdHlwLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodHlwKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZF90aHJvdzsKICAgICB9CiAKQEAgLTI5MSw5ICs0MTQsNDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKLSAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwKTsKKyAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAorLyoKKyAqICAgSWYgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gaXMgc2V0LCBmZXRjaGVzIGl0cyAndmFsdWUnCisgKiAgIGF0dHJpYnV0ZSBpZiBhbnksIG90aGVyd2lzZSBzZXRzIHB2YWx1ZSB0byBOb25lLgorICoKKyAqICAgUmV0dXJucyAwIGlmIG5vIGV4Y2VwdGlvbiBvciBTdG9wSXRlcmF0aW9uIGlzIHNldC4KKyAqICAgSWYgYW55IG90aGVyIGV4Y2VwdGlvbiBpcyBzZXQsIHJldHVybnMgLTEgYW5kIGxlYXZlcworICogICBwdmFsdWUgdW5jaGFuZ2VkLgorICovCisKK2ludAorX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqcHZhbHVlKSB7CisgICAgUHlPYmplY3QgKmV0LCAqZXYsICp0YjsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgaWYgKGV2KSB7CisgICAgICAgICAgICB2YWx1ZSA9ICgoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICopZXYpLT52YWx1ZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXYpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIH0KKyAgICAqcHZhbHVlID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5fcmVwcihQeUdlbk9iamVjdCAqZ2VuKQpAQCAtMzI0LDEzICs0ODQsMTMgQEAKIAogc3RhdGljIFB5TWVtYmVyRGVmIGdlbl9tZW1iZXJsaXN0W10gPSB7CiAgICAgeyJnaV9mcmFtZSIsICAgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgICBSRUFET05MWX0sCi0gICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0lOVCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCisgICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0JPT0wsICAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgICAgUkVBRE9OTFl9LAogICAgIHsiZ2lfY29kZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2NvZGUpLCAgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgZ2VuX21ldGhvZHNbXSA9IHsKLSAgICB7InNlbmQiLChQeUNGdW5jdGlvbilnZW5fc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJzZW5kIiwoUHlDRnVuY3Rpb24pX1B5R2VuX1NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAogICAgIHsidGhyb3ciLChQeUNGdW5jdGlvbilnZW5fdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKICAgICB7ImNsb3NlIiwoUHlDRnVuY3Rpb24pZ2VuX2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCkBAIC00MTAsMTUgKzU3MCwxMyBAQAogICAgIGludCBpOwogICAgIFB5RnJhbWVPYmplY3QgKmYgPSBnZW4tPmdpX2ZyYW1lOwogCi0gICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwgZi0+Zl9pYmxvY2sgPD0gMCkKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vIGZyYW1lIG9yIGVtcHR5IGJsb2Nrc3RhY2sgPT0gbm8gZmluYWxpemF0aW9uICovCiAKICAgICAvKiBBbnkgYmxvY2sgdHlwZSBiZXNpZGVzIGEgbG9vcCByZXF1aXJlcyBjbGVhbnVwLiAqLwotICAgIGkgPSBmLT5mX2libG9jazsKLSAgICB3aGlsZSAoLS1pID49IDApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZi0+Zl9pYmxvY2s7IGkrKykKICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgIT0gU0VUVVBfTE9PUCkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0KIAogICAgIC8qIE5vIGJsb2NrcyBleGNlcHQgbG9vcHMsIGl0J3Mgc2FmZSB0byBza2lwIGZpbmFsaXphdGlvbi4gKi8KICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL09iamVjdHMvaXRlcm9iamVjdC5jIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKaW5kZXggOTFhOTNmNS4uM2NmYmVhZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKQEAgLTg4LDggKzg4LDM4IEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2l0ZXJfcmVkdWNlKHNlcWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgoraXRlcl9zZXRzdGF0ZShzZXFpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzZXFpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24paXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xOTUsNiArMjI1LDIxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjYWxsaXRlcl9yZWR1Y2UoY2FsbGl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfY2FsbGFibGUgIT0gTlVMTCAmJiBpdC0+aXRfc2VudGluZWwgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oT08pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X2NhbGxhYmxlLCBpdC0+aXRfc2VudGluZWwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjYWxsaXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWNhbGxpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QgUHlDYWxsSXRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImNhbGxhYmxlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yMjQsNyArMjY5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljYWxsaXRlcl9pdGVybmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNhbGxpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IGI5ZWYwZDAuLjZlMGQwOTQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC05OCwxNiArOTgsMzIgQEAKIHN0YXRpYyBQeUxpc3RPYmplY3QgKmZyZWVfbGlzdFtQeUxpc3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAotdm9pZAotUHlMaXN0X0Zpbmkodm9pZCkKK2ludAorUHlMaXN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotCisgICAgaW50IHJldCA9IG51bWZyZWU7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5TGlzdF9GaW5pKHZvaWQpCit7CisgICAgUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKK30KKworLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5TGlzdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlMaXN0T2JqZWN0KSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTczNyw2ICs3NTMsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RjbGVhcihQeUxpc3RPYmplY3QgKnNlbGYpCit7CisgICAgbGlzdF9jbGVhcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3Rjb3B5KFB5TGlzdE9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gbGlzdF9zbGljZShzZWxmLCAwLCBQeV9TSVpFKHNlbGYpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGxpc3RhcHBlbmQoUHlMaXN0T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoYXBwMShzZWxmLCB2KSA9PSAwKQpAQCAtMjEwOSw4ICsyMTM4LDcgQEAKIGxpc3RpbmRleChQeUxpc3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKHNlbGYpOwotICAgIFB5T2JqZWN0ICp2LCAqZm9ybWF0X3R1cGxlLCAqZXJyX3N0cmluZzsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmVycl9mb3JtYXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCkBAIC0yMTMzLDIwICsyMTYxLDcgQEAKICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZXJyX2Zvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGVycl9mb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXIgaXMgbm90IGluIGxpc3QiKTsKLSAgICAgICAgaWYgKGVycl9mb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmb3JtYXRfdHVwbGUgPSBQeVR1cGxlX1BhY2soMSwgdik7Ci0gICAgaWYgKGZvcm1hdF90dXBsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJfc3RyaW5nID0gUHlVbmljb2RlX0Zvcm1hdChlcnJfZm9ybWF0LCBmb3JtYXRfdHVwbGUpOwotICAgIFB5X0RFQ1JFRihmb3JtYXRfdHVwbGUpOwotICAgIGlmIChlcnJfc3RyaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19WYWx1ZUVycm9yLCBlcnJfc3RyaW5nKTsKLSAgICBQeV9ERUNSRUYoZXJyX3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICIlUiBpcyBub3QgaW4gbGlzdCIsIHYpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yMjAyLDEwICsyMjE3LDggQEAKICAgICBQeUxpc3RPYmplY3QgKnZsLCAqd2w7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgaWYgKCFQeUxpc3RfQ2hlY2sodikgfHwgIVB5TGlzdF9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpIHx8ICFQeUxpc3RfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZsID0gKFB5TGlzdE9iamVjdCAqKXY7CiAgICAgd2wgPSAoUHlMaXN0T2JqZWN0ICopdzsKQEAgLTIzMTQsMTcgKzIzMjcsMjEgQEAKICJMLl9fcmV2ZXJzZWRfXygpIC0tIHJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgbGlzdCIpOwogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCiAiTC5fX3NpemVvZl9fKCkgLS0gc2l6ZSBvZiBMIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKK1B5RG9jX1NUUlZBUihjbGVhcl9kb2MsCisiTC5jbGVhcigpIC0+IE5vbmUgLS0gcmVtb3ZlIGFsbCBpdGVtcyBmcm9tIEwiKTsKK1B5RG9jX1NUUlZBUihjb3B5X2RvYywKKyJMLmNvcHkoKSAtPiBsaXN0IC0tIGEgc2hhbGxvdyBjb3B5IG9mIEwiKTsKIFB5RG9jX1NUUlZBUihhcHBlbmRfZG9jLAotIkwuYXBwZW5kKG9iamVjdCkgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKKyJMLmFwcGVuZChvYmplY3QpIC0+IE5vbmUgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKIFB5RG9jX1NUUlZBUihleHRlbmRfZG9jLAotIkwuZXh0ZW5kKGl0ZXJhYmxlKSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKKyJMLmV4dGVuZChpdGVyYWJsZSkgLT4gTm9uZSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKIFB5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAogIkwuaW5zZXJ0KGluZGV4LCBvYmplY3QpIC0tIGluc2VydCBvYmplY3QgYmVmb3JlIGluZGV4Iik7CiBQeURvY19TVFJWQVIocG9wX2RvYywKICJMLnBvcChbaW5kZXhdKSAtPiBpdGVtIC0tIHJlbW92ZSBhbmQgcmV0dXJuIGl0ZW0gYXQgaW5kZXggKGRlZmF1bHQgbGFzdCkuXG4iCiAiUmFpc2VzIEluZGV4RXJyb3IgaWYgbGlzdCBpcyBlbXB0eSBvciBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuIik7CiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKLSJMLnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCisiTC5yZW1vdmUodmFsdWUpIC0+IE5vbmUgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCiAiUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LiIpOwogUHlEb2NfU1RSVkFSKGluZGV4X2RvYywKICJMLmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLlxuIgpAQCAtMjMzNCw3ICsyMzUxLDcgQEAKIFB5RG9jX1NUUlZBUihyZXZlcnNlX2RvYywKICJMLnJldmVyc2UoKSAtLSByZXZlcnNlICpJTiBQTEFDRSoiKTsKIFB5RG9jX1NUUlZBUihzb3J0X2RvYywKLSJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0tIHN0YWJsZSBzb3J0ICpJTiBQTEFDRSoiKTsKKyJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0+IE5vbmUgLS0gc3RhYmxlIHNvcnQgKklOIFBMQUNFKiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKmxpc3Rfc3Vic2NyaXB0KFB5TGlzdE9iamVjdCosIFB5T2JqZWN0Kik7CiAKQEAgLTIzNDIsOSArMjM1OSwxMSBAQAogICAgIHsiX19nZXRpdGVtX18iLCAoUHlDRnVuY3Rpb24pbGlzdF9zdWJzY3JpcHQsIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGdldGl0ZW1fZG9jfSwKICAgICB7Il9fcmV2ZXJzZWRfXyIsKFB5Q0Z1bmN0aW9uKWxpc3RfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCByZXZlcnNlZF9kb2N9LAogICAgIHsiX19zaXplb2ZfXyIsICAoUHlDRnVuY3Rpb24pbGlzdF9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKKyAgICB7ImNsZWFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0Y2xlYXIsICAgTUVUSF9OT0FSR1MsIGNsZWFyX2RvY30sCisgICAgeyJjb3B5IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdGNvcHksICAgTUVUSF9OT0FSR1MsIGNvcHlfZG9jfSwKICAgICB7ImFwcGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0YXBwZW5kLCAgTUVUSF9PLCBhcHBlbmRfZG9jfSwKICAgICB7Imluc2VydCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0aW5zZXJ0LCAgTUVUSF9WQVJBUkdTLCBpbnNlcnRfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAorICAgIHsiZXh0ZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3Rwb3AsICAgICBNRVRIX1ZBUkFSR1MsIHBvcF9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RyZW1vdmUsICBNRVRIX08sIHJlbW92ZV9kb2N9LAogICAgIHsiaW5kZXgiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RpbmRleCwgICBNRVRIX1ZBUkFSR1MsIGluZGV4X2RvY30sCkBAIC0yNDA3LDcgKzI0MjYsNyBAQAogICAgICAgICAgICAgc3JjID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIGRlc3QgPSAoKFB5TGlzdE9iamVjdCAqKXJlc3VsdCktPm9iX2l0ZW07CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGl0ID0gc3JjW2N1cl07CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0KTsKICAgICAgICAgICAgICAgICBkZXN0W2ldID0gaXQ7CkBAIC0yNDk4LDcgKzI1MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgY3VyICsgMSwKICAgICAgICAgICAgICAgICAgICAgbGltICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgc2xpY2VsZW5ndGgqc3RlcDsKKyAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClQeV9TSVpFKHNlbGYpKSB7CiAgICAgICAgICAgICAgICAgbWVtbW92ZShzZWxmLT5vYl9pdGVtICsgY3VyIC0gc2xpY2VsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyBjdXIsCkBAIC0yNTYyLDcgKzI1ODEsNyBAQAogICAgICAgICAgICAgc2VsZml0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIHNlcWl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKHNlcSk7CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGdhcmJhZ2VbaV0gPSBzZWxmaXRlbXNbY3VyXTsKICAgICAgICAgICAgICAgICBpbnMgPSBzZXFpdGVtc1tpXTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaW5zKTsKQEAgLTI2NTAsMTEgKzI2NjksMTggQEAKIHN0YXRpYyBpbnQgbGlzdGl0ZXJfdHJhdmVyc2UobGlzdGl0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9uZXh0KGxpc3RpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9sZW4obGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3JlZHVjZV9nZW5lcmFsKHZvaWQgKl9pdCwgaW50IGZvcndhcmQpOworc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3NldHN0YXRlKGxpc3RpdGVyb2JqZWN0ICosIFB5T2JqZWN0ICpzdGF0ZSk7CiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjc2MSw2ICsyNzg3LDI3IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiB9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbChpdCwgMSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9zZXRzdGF0ZShsaXN0aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKiogTGlzdCBSZXZlcnNlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNzc0LDkgKzI4MjEsMTMgQEAKIHN0YXRpYyBpbnQgbGlzdHJldml0ZXJfdHJhdmVyc2UobGlzdHJldml0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9uZXh0KGxpc3RyZXZpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9sZW4obGlzdHJldml0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RyZXZpdGVyX3JlZHVjZShsaXN0cmV2aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0cmV2aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjg3MywzICsyOTI0LDUxIEBACiAgICAgICAgIGxlbiA9IDA7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfcmVkdWNlKGxpc3RyZXZpdGVyb2JqZWN0ICppdCkKK3sKKyAgICByZXR1cm4gbGlzdGl0ZXJfcmVkdWNlX2dlbmVyYWwoaXQsIDApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxKQorICAgICAgICAgICAgaW5kZXggPSBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIGNvbW1vbiBwaWNrbGluZyBzdXBwb3J0ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbCh2b2lkICpfaXQsIGludCBmb3J3YXJkKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworCisgICAgLyogdGhlIG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSwgaW5kZXggaXMgb2YgZGlmZmVyZW50IHR5cGVzISAqLworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGxpc3RpdGVyb2JqZWN0ICppdCA9IChsaXN0aXRlcm9iamVjdCAqKV9pdDsKKyAgICAgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0cmV2aXRlcm9iamVjdCAqaXQgPSAobGlzdHJldml0ZXJvYmplY3QgKilfaXQ7CisgICAgICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oInJldmVyc2VkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0KKyAgICAvKiBlbXB0eSBpdGVyYXRvciwgY3JlYXRlIGFuIGVtcHR5IGxpc3QgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCA5Y2E3YjY1Li4zMmNjZGMzIDEwMDY0NAotLS0gYS9PYmplY3RzL2xvbmdvYmplY3QuYworKysgYi9PYmplY3RzL2xvbmdvYmplY3QuYwpAQCAtMzIwLDggKzMyMCwxNSBAQAogI2RlZmluZSBQWV9BQlNfTE9OR19NSU4gICAgICAgICAoMC0odW5zaWduZWQgbG9uZylMT05HX01JTikKICNkZWZpbmUgUFlfQUJTX1NTSVpFX1RfTUlOICAgICAgKDAtKHNpemVfdClQWV9TU0laRV9UX01JTikKIAotLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4gX19pbnRfXworICAgbWV0aG9kLgorCisgICBPbiBvdmVyZmxvdywgcmV0dXJuIC0xIGFuZCBzZXQgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzaWduIG9mCisgICB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorCisgICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCBUeXBlRXJyb3IpLCByZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBjb25kaXRpb24uCisgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KKyovCiAKIGxvbmcKIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCkBAIC00MTAsNiArNDE3LDkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbiBfX2ludF9fCisgICBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisKIGxvbmcKIFB5TG9uZ19Bc0xvbmcoUHlPYmplY3QgKm9iaikKIHsKQEAgLTY3NiwxMCArNjg2LDkgQEAKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwotCi0gICAgICAgIHJlc3VsdCA9IChuZGlnaXRzIC0gMSkgKiBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgIGlmIChyZXN1bHQgLyBQeUxvbmdfU0hJRlQgIT0gKHNpemVfdCkobmRpZ2l0cyAtIDEpKQorICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gUFlfU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgIHJlc3VsdCA9IChzaXplX3QpKG5kaWdpdHMgLSAxKSAqIChzaXplX3QpUHlMb25nX1NISUZUOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK3Jlc3VsdDsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gMCkKQEAgLTkzOSw3ICs5NDgsNyBAQAogCiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBsb25nIChvciBpbnQpIG9iamVjdCBmcm9tIGEgQyBwb2ludGVyICovCisvKiBDcmVhdGUgYSBuZXcgbG9uZyBpbnQgb2JqZWN0IGZyb20gYSBDIHBvaW50ZXIgKi8KIAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCkBAIC05NjUsMTUgKzk3NCwxMSBAQAogCiB9CiAKLS8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBvYmplY3QgKG9yIGFuIGludCBvYmplY3QgaW4gc29tZSBjYXNlcykgKi8KKy8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LiAqLwogCiB2b2lkICoKIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKnZ2KQogewotICAgIC8qIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvdyBpbnQgb3IgbG9uZyBvYmplY3RzLiBJZiB2diBpcyBuZWl0aGVyLAotICAgICAgIHRoZW4gdGhlIFB5TG9uZ19Bc0xvbmcqKCkgZnVuY3Rpb25zIHdpbGwgcmFpc2UgdGhlIGV4Y2VwdGlvbjoKLSAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBhcmd1bWVudCB0byBpbnRlcm5hbCBmdW5jdGlvbiIKLSAgICAqLwogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICBsb25nIHg7CiAKQEAgLTExNTQsOCArMTE1OSw4IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CiB9CiAKLS8qIEdldCBhIEMgUFlfTE9OR19MT05HIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgorICAgX19pbnRfXyBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKIFBZX0xPTkdfTE9ORwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQpAQCAtMTIxNywxMCArMTIyMiwxNCBAQAogICAgIGludCBvbmUgPSAxOwogICAgIGludCByZXM7CiAKLSAgICBpZiAodnYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHZ2KSkgeworICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKICAgICBzd2l0Y2goUHlfU0laRSh2KSkgewpAQCAtMTMwNywxMiArMTMxNiwxNCBAQAogfQogI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAotLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBQeXRob24gbG9uZyBvciBQeXRob24gaW50IG9iamVjdC4KLSAgIE9uIG92ZXJmbG93LCByZXR1cm5zIC0xIGFuZCBzZXRzICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZwotICAgb24gdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKy8qIEdldCBhIEMgbG9uZyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KKyAgIF9faW50X18gbWV0aG9kLgogCi0gICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCB0eXBlIGVycm9yKSwgcmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvcgotICAgY29uZGl0aW9uLgorICAgT24gb3ZlcmZsb3csIHJldHVybiAtMSBhbmQgc2V0ICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZyBvbiB0aGUgc2lnbiBvZgorICAgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKworICAgRm9yIG90aGVyIGVycm9ycyAoZS5nLiwgVHlwZUVycm9yKSwgcmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgY29uZGl0aW9uLgorICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCiBQWV9MT05HX0xPTkcKQEAgLTE0MDYsMTAgKzE0MTcsOCBAQAogCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSB7ICAgICBcCi0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpICAgICAgIFwKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAogLyogYml0c19pbl9kaWdpdChkKSByZXR1cm5zIHRoZSB1bmlxdWUgaW50ZWdlciBrIHN1Y2ggdGhhdCAyKiooay0xKSA8PSBkIDwKQEAgLTE1NjYsMjAgKzE1NzUsMjIgQEAKICAgIHN0cmluZy4gIChSZXR1cm4gdmFsdWUgaXMgbm9uLXNoYXJlZCBzbyB0aGF0IGNhbGxlcnMgY2FuIG1vZGlmeSB0aGUKICAgIHJldHVybmVkIHZhbHVlIGlmIG5lY2Vzc2FyeS4pICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb25nX3RvX2RlY2ltYWxfc3RyaW5nKFB5T2JqZWN0ICphYSkKK3N0YXRpYyBpbnQKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKmFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgaW50IG5lZ2F0aXZlOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKIAogICAgIGEgPSAoUHlMb25nT2JqZWN0ICopYWE7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKQEAgLTE1OTYsMTMgKzE2MDcsMTMgQEAKICAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyBpcyB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIHRoZSBleHByZXNzaW9uIHNpemVfYSAqIFB5TG9uZ19TSElGVCBpcyBub3cgc2FmZSBmcm9tIG92ZXJmbG93ICovCiAgICAgc2l6ZSA9IDEgKyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvKiBjb252ZXJ0IGFycmF5IG9mIGJhc2UgX1B5TG9uZ19CQVNFIGRpZ2l0cyBpbiBwaW4gdG8gYW4gYXJyYXkgb2YKICAgICAgICBiYXNlIF9QeUxvbmdfREVDSU1BTF9CQVNFIGRpZ2l0cyBpbiBwb3V0LCBmb2xsb3dpbmcgS251dGggKFRBT0NQLApAQCAtMTYyNSw3ICsxNjM2LDcgQEAKICAgICAgICAgLyogY2hlY2sgZm9yIGtleWJvYXJkIGludGVycnVwdCAqLwogICAgICAgICBTSUdDSEVDSyh7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAvKiBwb3V0IHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSBkaWdpdCwgc28gdGhhdCB0aGUgY2FzZSB3aGVuIGEgPSAwCkBAIC0xNjQxLDY0ICsxNjUyLDExOCBAQAogICAgICAgICB0ZW5wb3cgKj0gMTA7CiAgICAgICAgIHN0cmxlbisrOwogICAgIH0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3RybGVuKTsKLSAgICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHJsZW4sICc5JykgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICBzdHIgPSBOVUxMOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIH0KKworI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAqcCA9ICdcMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCisgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLyBcCisgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChyZW0gIT0gMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSk7ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICAvKiBmaWxsIHRoZSBzdHJpbmcgcmlnaHQtdG8tbGVmdCAqLwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3RybGVuOwotICAgICpwID0gJ1wwJzsKLSAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseQotICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLwotICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgewotICAgICAgICByZW0gPSBwb3V0W2ldOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsKLSAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsKLSAgICAgICAgICAgIHJlbSAvPSAxMDsKLSAgICAgICAgfQorICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9Ci0gICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLwotICAgIHJlbSA9IHBvdXRbaV07Ci0gICAgZG8gewotICAgICAgICAqLS1wID0gJzAnICsgcmVtICUgMTA7Ci0gICAgICAgIHJlbSAvPSAxMDsKLSAgICB9IHdoaWxlIChyZW0gIT0gMCk7CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpwOworICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgfQorI3VuZGVmIFdSSVRFX0RJR0lUUwogCi0gICAgLyogYW5kIHNpZ24gKi8KLSAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLwotICAgIGFzc2VydChwID09IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopc3RyOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3RybGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB2OwogfQogCiAvKiBDb252ZXJ0IGEgbG9uZyBpbnQgb2JqZWN0IHRvIGEgc3RyaW5nLCB1c2luZyBhIGdpdmVuIGNvbnZlcnNpb24gYmFzZSwKLSAgIHdoaWNoIHNob3VsZCBiZSBvbmUgb2YgMiwgOCwgMTAgb3IgMTYuICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgotICAgSWYgYmFzZSBpcyAyLCA4IG9yIDE2LCBhZGQgdGhlIHByb3BlciBwcmVmaXggJzBiJywgJzBvJyBvciAnMHgnLiAqLworICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiAyLCA4IG9yIDE2LiAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgIElmIGJhc2UgaXMgMiwgOCBvciAxNiwgYWRkIHRoZSBwcm9wZXIgcHJlZml4ICcwYicsICcwbycgb3IgJzB4JworICAgaWYgYWx0ZXJuYXRlIGlzIG5vbnplcm8uICovCiAKLVB5T2JqZWN0ICoKLV9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zvcm1hdF9iaW5hcnkoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgcmVnaXN0ZXIgUHlMb25nT2JqZWN0ICphID0gKFB5TG9uZ09iamVjdCAqKWFhOwotICAgIFB5T2JqZWN0ICpzdHI7Ci0gICAgUHlfc3NpemVfdCBpLCBzejsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IHN6OwogICAgIFB5X3NzaXplX3Qgc2l6ZV9hOwotICAgIFB5X1VOSUNPREUgKnAsIHNpZ24gPSAnXDAnOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBpbnQgbmVnYXRpdmU7CiAgICAgaW50IGJpdHM7CiAKLSAgICBhc3NlcnQoYmFzZSA9PSAyIHx8IGJhc2UgPT0gOCB8fCBiYXNlID09IDEwIHx8IGJhc2UgPT0gMTYpOwotICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZygoUHlPYmplY3QgKilhKTsKLQorICAgIGFzc2VydChiYXNlID09IDIgfHwgYmFzZSA9PSA4IHx8IGJhc2UgPT0gMTYpOwogICAgIGlmIChhID09IE5VTEwgfHwgIVB5TG9uZ19DaGVjayhhKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIG5lZ2F0aXZlID0gUHlfU0laRShhKSA8IDA7CiAKICAgICAvKiBDb21wdXRlIGEgcm91Z2ggdXBwZXIgYm91bmQgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAqLwogICAgIHN3aXRjaCAoYmFzZSkgewpAQCAtMTcxNSw3MCArMTc4MCwxMzcgQEAKICAgICAgICAgYXNzZXJ0KDApOyAvKiBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwogICAgICAgICBiaXRzID0gMDsgLyogdG8gc2lsZW5jZSBnY2Mgd2FybmluZyAqLwogICAgIH0KLSAgICAvKiBjb21wdXRlIGxlbmd0aCBvZiBvdXRwdXQgc3RyaW5nOiBhbGxvdyAyIGNoYXJhY3RlcnMgZm9yIHByZWZpeCBhbmQKLSAgICAgICAxIGZvciBwb3NzaWJsZSAnLScgc2lnbi4gKi8KLSAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIC8qIG5vdyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgKyAzIDw9IFBZX1NTSVpFX1RfTUFYLCBzbyB0aGUgUkhTIGJlbG93Ci0gICAgICAgaXMgc2FmZSBmcm9tIG92ZXJmbG93ICovCi0gICAgc3ogPSAzICsgKHNpemVfYSAqIFB5TG9uZ19TSElGVCArIChiaXRzIC0gMSkpIC8gYml0czsKLSAgICBhc3NlcnQoc3ogPj0gMCk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHN6KTsKLSAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3o7Ci0gICAgKnAgPSAnXDAnOwotICAgIGlmIChQeV9TSVpFKGEpIDwgMCkKLSAgICAgICAgc2lnbiA9ICctJzsKIAotICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKLSAgICAgICAgKi0tcCA9ICcwJzsKKyAgICAvKiBDb21wdXRlIGV4YWN0IGxlbmd0aCAnc3onIG9mIG91dHB1dCBzdHJpbmcuICovCisgICAgaWYgKHNpemVfYSA9PSAwKSB7CisgICAgICAgIHN6ID0gMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovCi0gICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7Ci0gICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgICAgICAgICAgICAgLyogIyBvZiBiaXRzIGluIGFjY3VtICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgewotICAgICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylhLT5vYl9kaWdpdFtpXSA8PCBhY2N1bWJpdHM7Ci0gICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOwotICAgICAgICAgICAgYXNzZXJ0KGFjY3VtYml0cyA+PSBiaXRzKTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNkaWdpdDsKLSAgICAgICAgICAgICAgICBjZGlnaXQgPSAoUHlfVU5JQ09ERSkoYWNjdW0gJiAoYmFzZSAtIDEpKTsKLSAgICAgICAgICAgICAgICBjZGlnaXQgKz0gKGNkaWdpdCA8IDEwKSA/ICcwJyA6ICdhJy0xMDsKLSAgICAgICAgICAgICAgICBhc3NlcnQocCA+IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwotICAgICAgICAgICAgICAgICotLXAgPSBjZGlnaXQ7Ci0gICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7Ci0gICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7Ci0gICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV9hX2luX2JpdHM7CisgICAgICAgIC8qIEVuc3VyZSBvdmVyZmxvdyBkb2Vzbid0IG9jY3VyIGR1cmluZyBjb21wdXRhdGlvbiBvZiBzei4gKi8KKyAgICAgICAgaWYgKHNpemVfYSA+IChQWV9TU0laRV9UX01BWCAtIDMpIC8gUHlMb25nX1NISUZUKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBzaXplX2FfaW5fYml0cyA9IChzaXplX2EgLSAxKSAqIFB5TG9uZ19TSElGVCArCisgICAgICAgICAgICAgICAgICAgICAgICAgYml0c19pbl9kaWdpdChhLT5vYl9kaWdpdFtzaXplX2EgLSAxXSk7CisgICAgICAgIC8qIEFsbG93IDEgY2hhcmFjdGVyIGZvciBhICctJyBzaWduLiAqLworICAgICAgICBzeiA9IG5lZ2F0aXZlICsgKHNpemVfYV9pbl9iaXRzICsgKGJpdHMgLSAxKSkgLyBiaXRzOworICAgIH0KKyAgICBpZiAoYWx0ZXJuYXRlKSB7CisgICAgICAgIC8qIDIgY2hhcmFjdGVycyBmb3IgcHJlZml4ICAqLworICAgICAgICBzeiArPSAyOwogICAgIH0KIAotICAgIGlmIChiYXNlID09IDE2KQotICAgICAgICAqLS1wID0gJ3gnOwotICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkKLSAgICAgICAgKi0tcCA9ICdvJzsKLSAgICBlbHNlIC8qIChiYXNlID09IDIpICovCi0gICAgICAgICotLXAgPSAnYic7Ci0gICAgKi0tcCA9ICcwJzsKLSAgICBpZiAoc2lnbikKLSAgICAgICAgKi0tcCA9IHNpZ247Ci0gICAgaWYgKHAgIT0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSkgewotICAgICAgICBQeV9VTklDT0RFICpxID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKTsKLSAgICAgICAgYXNzZXJ0KHAgPiBxKTsKLSAgICAgICAgZG8gewotICAgICAgICB9IHdoaWxlICgoKnErKyA9ICpwKyspICE9ICdcMCcpOwotICAgICAgICBxLS07Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZzdHIsKFB5X3NzaXplX3QpIChxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpKSkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKKyAgICAgICAgdiA9IE5VTEw7CiAgICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilzdHI7CisgICAgZWxzZSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOworICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgfQorCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3o7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikgKyBzejsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNpemVfYSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgIC8qICMgb2YgYml0cyBpbiBhY2N1bSAqLyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W2ldIDw8IGFjY3VtYml0czsgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoYWNjdW1iaXRzID49IGJpdHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjZGlnaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ID0gKGNoYXIpKGFjY3VtICYgKGJhc2UgLSAxKSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ICs9IChjZGlnaXQgPCAxMCkgPyAnMCcgOiAnYSctMTA7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgKi0tcCA9IGNkaWdpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7IFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGFsdGVybmF0ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmIChiYXNlID09IDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ3gnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ28nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgLyogKGJhc2UgPT0gMikgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ2InOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMSk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqcDsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqcDsKKyAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgIH0KKyN1bmRlZiBXUklURV9ESUdJVFMKKworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gdjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICpvYmosIGludCBiYXNlKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCk7CisgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHN0cjsKK30KKworaW50CitfUHlMb25nX0Zvcm1hdFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIHdyaXRlcik7CiB9CiAKIC8qIFRhYmxlIG9mIGRpZ2l0IHZhbHVlcyBmb3IgOC1iaXQgc3RyaW5nIC0+IGludGVnZXIgY29udmVyc2lvbi4KQEAgLTIxNTYsMjMgKzIyODgsMjYgQEAKIFB5T2JqZWN0ICoKIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFICp1LCBQeV9zc2l6ZV90IGxlbmd0aCwgaW50IGJhc2UpCiB7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh1bmljb2RlLCBiYXNlKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCit7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqYXNjaWlkaWc7CiAgICAgY2hhciAqYnVmZmVyLCAqZW5kOwotICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuOwotICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGJ1ZmxlbjsKIAotICAgIGFzY2lpZGlnID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKHUsIGxlbmd0aCk7CisgICAgYXNjaWlkaWcgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodSk7CiAgICAgaWYgKGFzY2lpZGlnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIFJlcGxhY2Ugbm9uLUFTQ0lJIHdoaXRlc3BhY2Ugd2l0aCAnICcgKi8KLSAgICBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhc2NpaWRpZyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBwdHJbaV07Ci0gICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgcHRyW2ldID0gJyAnOwotICAgIH0KLSAgICBidWZmZXIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShhc2NpaWRpZywgJmJ1Zmxlbik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXNjaWlkaWcsICZidWZsZW4pOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXNjaWlkaWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NjksOCArMjYwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICB9Ci0gICAgYXNzZXJ0KDEgPD0geF9zaXplICYmCi0gICAgICAgICAgIHhfc2l6ZSA8PSAoUHlfc3NpemVfdCkoc2l6ZW9mKHhfZGlnaXRzKS9zaXplb2YoZGlnaXQpKSk7CisgICAgYXNzZXJ0KDEgPD0geF9zaXplICYmIHhfc2l6ZSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoeF9kaWdpdHMpKTsKIAogICAgIC8qIFJvdW5kLCBhbmQgY29udmVydCB0byBkb3VibGUuICovCiAgICAgeF9kaWdpdHNbMF0gKz0gaGFsZl9ldmVuX2NvcnJlY3Rpb25beF9kaWdpdHNbMF0gJiA3XTsKQEAgLTI1MDcsMTAgKzI2NDEsMTQgQEAKICAgICBQeV9zc2l6ZV90IGV4cG9uZW50OwogICAgIGRvdWJsZSB4OwogCi0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHYpKSB7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CiAgICAgfQorICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMzYzNSw4ICszNzczLDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlfREVDUkVGKGEpOwogICAgICAgICBQeV9ERUNSRUYoYik7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgeyAgLyogaWYgZXhwb25lbnQgaXMgbmVnYXRpdmUgKi8KQEAgLTQxNjksOSArNDMwNiw3IEBACiAgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCliYXNlKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh4LCAoaW50KWJhc2UpOwogICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHgpIHx8IFB5Qnl0ZXNfQ2hlY2soeCkpIHsKICAgICAgICAgLyogU2luY2UgUHlMb25nX0Zyb21TdHJpbmcgZG9lc24ndCBoYXZlIGEgbGVuZ3RoIHBhcmFtZXRlciwKICAgICAgICAgICogY2hlY2sgaGVyZSBmb3IgcG9zc2libGUgTlVMcyBpbiB0aGUgc3RyaW5nLiAqLwpAQCAtNDI1MCwxMiArNDM4NSwyMiBAQAogbG9uZ19fZm9ybWF0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogLyogUmV0dXJuIGEgcGFpciAocSwgcikgc3VjaCB0aGF0IGEgPSBiICogcSArIHIsIGFuZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggNDAzYWE2OC4uZGQ2ZmU4MiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC0xLDEyNiArMSw5NTQgQEAKLQogLyogTWVtb3J5dmlldyBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jZGVmaW5lIElTX1JFTEVBU0VEKG1lbW9iaikgXAotICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBtZW1vYmopLT52aWV3LmJ1ZiA9PSBOVUxMKQogCi0jZGVmaW5lIENIRUNLX1JFTEVBU0VEKG1lbW9iaikgXAotICAgIGlmIChJU19SRUxFQVNFRChtZW1vYmopKSB7IFwKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7IFwKLSAgICAgICAgcmV0dXJuIE5VTEw7IFwKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VkQnVmZmVyIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIE1hbmFnZWRCdWZmZXIgT2JqZWN0OgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBvYmplY3QgaXMgdG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2hhaW5lZAorICAgICBtZW1vcnl2aWV3cyB0aGF0IGhhdmUgdGhlIHNhbWUgdW5kZXJseWluZyBleHBvcnRpbmcgb2JqZWN0LiBQRVAtMzExOAorICAgICBhbGxvd3MgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRvIGNoYW5nZSB3aGlsZSBhIHZpZXcgaXMgZXhwb3J0ZWQuIFRoaXMKKyAgICAgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBjb25zdHJ1Y3RpbmcgYSBuZXcgbWVtb3J5dmlldworICAgICBmcm9tIGFuIGV4aXN0aW5nIG1lbW9yeXZpZXcuCisKKyAgICAgUmF0aGVyIHRoYW4gcmVwZWF0ZWRseSByZWRpcmVjdGluZyBidWZmZXIgcmVxdWVzdHMgdG8gdGhlIG9yaWdpbmFsIGJhc2UKKyAgICAgb2JqZWN0LCBhbGwgY2hhaW5lZCBtZW1vcnl2aWV3cyB1c2UgYSBzaW5nbGUgYnVmZmVyIHNuYXBzaG90LiBUaGlzCisgICAgIHNuYXBzaG90IGlzIGdlbmVyYXRlZCBieSB0aGUgY29uc3RydWN0b3IgX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KCkuCisKKyAgIE93bmVyc2hpcCBydWxlczoKKyAgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgICBUaGUgbWFzdGVyIGJ1ZmZlciBpbnNpZGUgYSBtYW5hZ2VkIGJ1ZmZlciBpcyBmaWxsZWQgaW4gYnkgdGhlIG9yaWdpbmFsCisgICAgIGJhc2Ugb2JqZWN0LiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyBhbmQgZm9ybWF0IGFyZSByZWFkLW9ubHkgZm9yCisgICAgIGFsbCBjb25zdW1lcnMuCisKKyAgICAgQSBtZW1vcnl2aWV3J3MgYnVmZmVyIGlzIGEgcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIGJ1ZmZlci4gc2hhcGUsCisgICAgIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgYmVsb25nIHRvIHRoZSBtZW1vcnl2aWV3IGFuZCBhcmUgdGh1cyB3cml0YWJsZS4KKworICAgICBJZiBhIG1lbW9yeXZpZXcgaXRzZWxmIGV4cG9ydHMgc2V2ZXJhbCBidWZmZXJzIHZpYSBtZW1vcnlfZ2V0YnVmKCksIGFsbAorICAgICBidWZmZXIgY29waWVzIHNoYXJlIHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgICBhcnJheXMgYXJlIE5PVCB3cml0YWJsZS4KKworICAgUmVmZXJlbmNlIGNvdW50IGFzc3VtcHRpb25zOgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgIFRoZSAnb2JqJyBtZW1iZXIgb2YgYSBQeV9idWZmZXIgbXVzdCBlaXRoZXIgYmUgTlVMTCBvciByZWZlciB0byB0aGUKKyAgICAgZXhwb3J0aW5nIGJhc2Ugb2JqZWN0LiBJbiB0aGUgUHl0aG9uIGNvZGViYXNlLCBhbGwgZ2V0YnVmZmVycHJvY3MKKyAgICAgcmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB2aWV3Lm9iaiAoZXhhbXBsZTogYnl0ZXNfYnVmZmVyX2dldGJ1ZmZlcigpKS4KKworICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyB2aWV3Lm9iaiAoaWYgbm9uLU5VTEwpLCBzbyB0aGUKKyAgICAgcmVsZWFzZWJ1ZmZlcnByb2NzIG11c3QgTk9UIGRlY3JlbWVudCB2aWV3Lm9iai4KKyovCisKKworI2RlZmluZSBYU1RSSU5HSVpFKHYpICN2CisjZGVmaW5lIFNUUklOR0laRSh2KSBYU1RSSU5HSVpFKHYpCisKKyNkZWZpbmUgQ0hFQ0tfTUJVRl9SRUxFQVNFRChtYnVmKSBcCisgICAgaWYgKCgoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKW1idWYpLT5mbGFncyZfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotI2RlZmluZSBDSEVDS19SRUxFQVNFRF9JTlQobWVtb2JqKSBcCi0gICAgaWYgKElTX1JFTEVBU0VEKG1lbW9iaikpIHsgXAotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAotICAgICAgICByZXR1cm4gLTE7IFwKLSAgICB9CiAKLXN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfc2hhcGUwKFB5X2J1ZmZlciAqYnVmKQorUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK21idWZfYWxsb2Modm9pZCkKIHsKLSAgICBpZiAoYnVmLT5zaGFwZSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gYnVmLT5zaGFwZVswXTsKLSAgICBpZiAoYnVmLT5uZGltID09IDApCi0gICAgICAgIHJldHVybiAxOwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJleHBvcnRlZCBidWZmZXIgZG9lcyBub3QgaGF2ZSBhbnkgc2hhcGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCAiCi0gICAgICAgICJ0byBpdCIpOwotICAgIHJldHVybiAtMTsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworCisgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCisgICAgICAgIFB5T2JqZWN0X0dDX05ldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0LCAmX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYnVmLT5mbGFncyA9IDA7CisgICAgbWJ1Zi0+ZXhwb3J0cyA9IDA7CisgICAgbWJ1Zi0+bWFzdGVyLm9iaiA9IE5VTEw7CisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1idWYpOworCisgICAgcmV0dXJuIG1idWY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpCit7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UsICZtYnVmLT5tYXN0ZXIsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBtYnVmLT5tYXN0ZXIub2JqID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKG1idWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbWJ1ZjsKIH0KIAogc3RhdGljIHZvaWQKLWR1cF9idWZmZXIoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK21idWZfcmVsZWFzZShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQogewotICAgICpkZXN0ID0gKnNyYzsKLSAgICBpZiAoc3JjLT5uZGltID09IDEgJiYgc3JjLT5zaGFwZSAhPSBOVUxMKSB7Ci0gICAgICAgIGRlc3QtPnNoYXBlID0gJihkZXN0LT5zbWFsbHRhYmxlWzBdKTsKLSAgICAgICAgZGVzdC0+c2hhcGVbMF0gPSBnZXRfc2hhcGUwKHNyYyk7Ci0gICAgfQotICAgIGlmIChzcmMtPm5kaW0gPT0gMSAmJiBzcmMtPnN0cmlkZXMgIT0gTlVMTCkgewotICAgICAgICBkZXN0LT5zdHJpZGVzID0gJihkZXN0LT5zbWFsbHRhYmxlWzFdKTsKLSAgICAgICAgZGVzdC0+c3RyaWRlc1swXSA9IHNyYy0+c3RyaWRlc1swXTsKLSAgICB9CisgICAgaWYgKHNlbGYtPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogTk9URTogYXQgdGhpcyBwb2ludCBzZWxmLT5leHBvcnRzIGNhbiBzdGlsbCBiZSA+IDAgaWYgdGhpcyBmdW5jdGlvbgorICAgICAgIGlzIGNhbGxlZCBmcm9tIG1idWZfY2xlYXIoKSB0byBicmVhayB1cCBhIHJlZmVyZW5jZSBjeWNsZS4gKi8KKyAgICBzZWxmLT5mbGFncyB8PSBfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQ7CisKKyAgICAvKiBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyBtYXN0ZXItPm9iaiBhbmQgc2V0cyBpdCB0byBOVUxMLiAqLworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPm1hc3Rlcik7Cit9CisKK3N0YXRpYyB2b2lkCittYnVmX2RlYWxsb2MoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqc2VsZikKK3sKKyAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA9PSAwKTsKKyAgICBtYnVmX3JlbGVhc2Uoc2VsZik7CisgICAgaWYgKHNlbGYtPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVCkKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5tYXN0ZXIuZm9ybWF0KTsKKyAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7CiB9CiAKIHN0YXRpYyBpbnQKLW1lbW9yeV9nZXRidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK21idWZfdHJhdmVyc2UoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOwotICAgIGlmIChzZWxmLT52aWV3Lm9iaiAhPSBOVUxMKQotICAgICAgICByZXMgPSBQeU9iamVjdF9HZXRCdWZmZXIoc2VsZi0+dmlldy5vYmosIHZpZXcsIGZsYWdzKTsKLSAgICBpZiAodmlldykKLSAgICAgICAgZHVwX2J1ZmZlcih2aWV3LCAmc2VsZi0+dmlldyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBQeV9WSVNJVChzZWxmLT5tYXN0ZXIub2JqKTsKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLW1lbW9yeV9yZWxlYXNlYnVmKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3KQorc3RhdGljIGludAorbWJ1Zl9jbGVhcihfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQogewotICAgIFB5QnVmZmVyX1JlbGVhc2Uodmlldyk7CisgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPj0gMCk7CisgICAgbWJ1Zl9yZWxlYXNlKHNlbGYpOworICAgIHJldHVybiAwOwogfQogCitQeVR5cGVPYmplY3QgX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm1hbmFnZWRidWZmZXIiLAorICAgIHNpemVvZihfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0KSwKKyAgICAwLAorICAgIChkZXN0cnVjdG9yKW1idWZfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyltYnVmX3RyYXZlcnNlLCAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KW1idWZfY2xlYXIgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5VmlldyBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbiB0aGUgcHJvY2VzcyBvZiBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzIG1idWZfcmVsZWFzZSgpIGNhbiBiZQorICAgY2FsbGVkIGJlZm9yZSBtZW1vcnlfcmVsZWFzZSgpLiAqLworI2RlZmluZSBCQVNFX0lOQUNDRVNTSUJMRShtdikgXAorICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+ZmxhZ3MmX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQgfHwgXAorICAgICAoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+bWJ1Zi0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEKQorCisjZGVmaW5lIENIRUNLX1JFTEVBU0VEKG12KSBcCisgICAgaWYgKEJBU0VfSU5BQ0NFU1NJQkxFKG12KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAib3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1JFTEVBU0VEX0lOVChtdikgXAorICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRShtdikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAorICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDSEVDS19MSVNUX09SX1RVUExFKHYpIFwKKyAgICBpZiAoIVB5TGlzdF9DaGVjayh2KSAmJiAhUHlUdXBsZV9DaGVjayh2KSkgeyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgICAgICAgXAorICAgICAgICAgICAgI3YgIiBtdXN0IGJlIGEgbGlzdCBvciBhIHR1cGxlIik7ICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIFZJRVdfQUREUihtdikgKCYoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+dmlldykKKworLyogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBzdWJvZmZzZXRzIGluIHRoZSBmaXJzdCBkaW1lbnNpb24uICovCisjZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMpIChzdWJvZmZzZXRzICYmIHN1Ym9mZnNldHNbMF0gPj0gMCkKKy8qIEFkanVzdCBwdHIgaWYgc3Vib2Zmc2V0cyBhcmUgcHJlc2VudC4gKi8KKyNkZWZpbmUgQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpIFwKKyAgICAoSEFWRV9QVFIoc3Vib2Zmc2V0cykgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbMF0gOiBwdHIpCisKKy8qIE1lbW9yeXZpZXcgYnVmZmVyIHByb3BlcnRpZXMgKi8KKyNkZWZpbmUgTVZfQ19DT05USUdVT1VTKGZsYWdzKSAoZmxhZ3MmKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DKSkKKyNkZWZpbmUgTVZfRl9DT05USUdVT1VTKGZsYWdzKSBcCisgICAgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfRk9SVFJBTikpCisjZGVmaW5lIE1WX0FOWV9DT05USUdVT1VTKGZsYWdzKSBcCisgICAgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfQ3xfUHlfTUVNT1JZVklFV19GT1JUUkFOKSkKKworLyogRmFzdCBjb250aWd1aXR5IHRlc3QuIENhbGxlciBtdXN0IGVuc3VyZSBzdWJvZmZzZXRzPT1OVUxMIGFuZCBuZGltPT0xLiAqLworI2RlZmluZSBNVl9DT05USUdVT1VTX05ESU0xKHZpZXcpIFwKKyAgICAoKHZpZXcpLT5zaGFwZVswXSA9PSAxIHx8ICh2aWV3KS0+c3RyaWRlc1swXSA9PSAodmlldyktPml0ZW1zaXplKQorCisvKiBnZXRidWZmZXIoKSByZXF1ZXN0cyAqLworI2RlZmluZSBSRVFfSU5ESVJFQ1QoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfSU5ESVJFQ1QpID09IFB5QlVGX0lORElSRUNUKQorI2RlZmluZSBSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0NfQ09OVElHVU9VUykgPT0gUHlCVUZfQ19DT05USUdVT1VTKQorI2RlZmluZSBSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0ZfQ09OVElHVU9VUykgPT0gUHlCVUZfRl9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfQU5ZX0NPTlRJR1VPVVMpID09IFB5QlVGX0FOWV9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfU1RSSURFUyhmbGFncykgKChmbGFncyZQeUJVRl9TVFJJREVTKSA9PSBQeUJVRl9TVFJJREVTKQorI2RlZmluZSBSRVFfU0hBUEUoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfTkQpID09IFB5QlVGX05EKQorI2RlZmluZSBSRVFfV1JJVEFCTEUoZmxhZ3MpIChmbGFncyZQeUJVRl9XUklUQUJMRSkKKyNkZWZpbmUgUkVRX0ZPUk1BVChmbGFncykgKGZsYWdzJlB5QlVGX0ZPUk1BVCkKKworCiBQeURvY19TVFJWQVIobWVtb3J5X2RvYywKICJtZW1vcnl2aWV3KG9iamVjdClcblwKIFxuXAogQ3JlYXRlIGEgbmV3IG1lbW9yeXZpZXcgb2JqZWN0IHdoaWNoIHJlZmVyZW5jZXMgdGhlIGdpdmVuIG9iamVjdC4iKTsKIAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgQ29weSBtZW1vcnl2aWV3IGJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIHRha2UgYSBzb3VyY2UgYW5kIGEgZGVzdGluYXRpb24gYnVmZmVyCisgICB3aXRoIHRoZSBzYW1lIGxvZ2ljYWwgc3RydWN0dXJlOiBmb3JtYXQsIGl0ZW1zaXplLCBuZGltIGFuZCBzaGFwZQorICAgYXJlIGlkZW50aWNhbCwgd2l0aCBuZGltID4gMC4KKworICAgTk9URTogQWxsIGJ1ZmZlcnMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBQeUJVRl9GVUxMIGluZm9ybWF0aW9uLCB3aGljaAorICAgaXMgdGhlIGNhc2UgZm9yIG1lbW9yeXZpZXdzISAqLworCisKKy8qIEFzc3VtcHRpb25zOiBuZGltID49IDEuIFRoZSBtYWNybyB0ZXN0cyBmb3IgYSBjb3JuZXIgY2FzZSB0aGF0IHNob3VsZAorICAgcGVyaGFwcyBiZSBleHBsaWNpdGx5IGZvcmJpZGRlbiBpbiB0aGUgUEVQLiAqLworI2RlZmluZSBIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0odmlldykgXAorICAgICh2aWV3LT5zdWJvZmZzZXRzICYmIHZpZXctPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorbGFzdF9kaW1faXNfY29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGFzc2VydChkZXN0LT5uZGltID4gMCAmJiBzcmMtPm5kaW0gPiAwKTsKKyAgICByZXR1cm4gKCFIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0oZGVzdCkgJiYKKyAgICAgICAgICAgICFIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0oc3JjKSAmJgorICAgICAgICAgICAgZGVzdC0+c3RyaWRlc1tkZXN0LT5uZGltLTFdID09IGRlc3QtPml0ZW1zaXplICYmCisgICAgICAgICAgICBzcmMtPnN0cmlkZXNbc3JjLT5uZGltLTFdID09IHNyYy0+aXRlbXNpemUpOworfQorCisvKiBUaGlzIGlzIG5vdCBhIGdlbmVyYWwgZnVuY3Rpb24gZm9yIGRldGVybWluaW5nIGZvcm1hdCBlcXVpdmFsZW5jZS4KKyAgIEl0IGlzIHVzZWQgaW4gY29weV9zaW5nbGUoKSBhbmQgY29weV9idWZmZXIoKSB0byB3ZWVkIG91dCBub24tbWF0Y2hpbmcKKyAgIGZvcm1hdHMuIFNraXBwaW5nIHRoZSAnQCcgY2hhcmFjdGVyIGlzIHNwZWNpZmljYWxseSB1c2VkIGluIHNsaWNlCisgICBhc3NpZ25tZW50cywgd2hlcmUgdGhlIGx2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGhhdmUgYSBzaW5nbGUgY2hhcmFjdGVyCisgICBmb3JtYXQuIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRoYXQgY291bGQgYmUgcmV3cml0dGVuIChpZiBwcm9wZXJseQorICAgYmVuY2htYXJrZWQpLiAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK2VxdWl2X2Zvcm1hdChjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNvbnN0IGNoYXIgKmRmbXQsICpzZm10OworCisgICAgYXNzZXJ0KGRlc3QtPmZvcm1hdCAmJiBzcmMtPmZvcm1hdCk7CisgICAgZGZtdCA9IGRlc3QtPmZvcm1hdFswXSA9PSAnQCcgPyBkZXN0LT5mb3JtYXQrMSA6IGRlc3QtPmZvcm1hdDsKKyAgICBzZm10ID0gc3JjLT5mb3JtYXRbMF0gPT0gJ0AnID8gc3JjLT5mb3JtYXQrMSA6IHNyYy0+Zm9ybWF0OworCisgICAgaWYgKHN0cmNtcChkZm10LCBzZm10KSAhPSAwIHx8CisgICAgICAgIGRlc3QtPml0ZW1zaXplICE9IHNyYy0+aXRlbXNpemUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFR3byBzaGFwZXMgYXJlIGVxdWl2YWxlbnQgaWYgdGhleSBhcmUgZWl0aGVyIGVxdWFsIG9yIGlkZW50aWNhbCB1cAorICAgdG8gYSB6ZXJvIGVsZW1lbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24uIEZvciBleGFtcGxlLCBpbiBOdW1QeSBhcnJheXMKKyAgIHRoZSBzaGFwZXMgWzEsIDAsIDVdIGFuZCBbMSwgMCwgN10gYXJlIGVxdWl2YWxlbnQuICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorZXF1aXZfc2hhcGUoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBpbnQgaTsKKworICAgIGlmIChkZXN0LT5uZGltICE9IHNyYy0+bmRpbSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZGVzdC0+bmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSAhPSBzcmMtPnNoYXBlW2ldKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIENoZWNrIHRoYXQgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlIGJ1ZmZlcnMKKyAgIGlzIGlkZW50aWNhbC4gKi8KK3N0YXRpYyBpbnQKK2VxdWl2X3N0cnVjdHVyZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGlmICghZXF1aXZfZm9ybWF0KGRlc3QsIHNyYykgfHwKKyAgICAgICAgIWVxdWl2X3NoYXBlKGRlc3QsIHNyYykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBCYXNlIGNhc2UgZm9yIHJlY3Vyc2l2ZSBtdWx0aS1kaW1lbnNpb25hbCBjb3B5aW5nLiBDb250aWd1b3VzIGFycmF5cyBhcmUKKyAgIGNvcGllZCB3aXRoIHZlcnkgbGl0dGxlIG92ZXJoZWFkLiBBc3N1bXB0aW9uczogbmRpbSA9PSAxLCBtZW0gPT0gTlVMTCBvcgorICAgc2l6ZW9mKG1lbSkgPT0gc2hhcGVbMF0gKiBpdGVtc2l6ZS4gKi8KK3N0YXRpYyB2b2lkCitjb3B5X2Jhc2UoY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgaXRlbXNpemUsCisgICAgICAgICAgY2hhciAqZHB0ciwgY29uc3QgUHlfc3NpemVfdCAqZHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKmRzdWJvZmZzZXRzLAorICAgICAgICAgIGNoYXIgKnNwdHIsIGNvbnN0IFB5X3NzaXplX3QgKnNzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzc3Vib2Zmc2V0cywKKyAgICAgICAgICBjaGFyICptZW0pCit7CisgICAgaWYgKG1lbSA9PSBOVUxMKSB7IC8qIGNvbnRpZ3VvdXMgKi8KKyAgICAgICAgUHlfc3NpemVfdCBzaXplID0gc2hhcGVbMF0gKiBpdGVtc2l6ZTsKKyAgICAgICAgaWYgKGRwdHIgKyBzaXplIDwgc3B0ciB8fCBzcHRyICsgc2l6ZSA8IGRwdHIpCisgICAgICAgICAgICBtZW1jcHkoZHB0ciwgc3B0ciwgc2l6ZSk7IC8qIG5vIG92ZXJsYXBwaW5nICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbW1vdmUoZHB0ciwgc3B0ciwgc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjaGFyICpwOworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIG1lbWNweShwLCB4c3B0ciwgaXRlbXNpemUpOworICAgICAgICB9CisgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgZHB0cis9ZHN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIG1lbWNweSh4ZHB0ciwgcCwgaXRlbXNpemUpOworICAgICAgICB9CisgICAgfQorCit9CisKKy8qIFJlY3Vyc2l2ZWx5IGNvcHkgYSBzb3VyY2UgYnVmZmVyIHRvIGEgZGVzdGluYXRpb24gYnVmZmVyLiBUaGUgdHdvIGJ1ZmZlcnMKKyAgIGhhdmUgdGhlIHNhbWUgbmRpbSwgc2hhcGUgYW5kIGl0ZW1zaXplLiAqLworc3RhdGljIHZvaWQKK2NvcHlfcmVjKGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90IG5kaW0sIFB5X3NzaXplX3QgaXRlbXNpemUsCisgICAgICAgICBjaGFyICpkcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpkc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqZHN1Ym9mZnNldHMsCisgICAgICAgICBjaGFyICpzcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpzc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqc3N1Ym9mZnNldHMsCisgICAgICAgICBjaGFyICptZW0pCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMSk7CisKKyAgICBpZiAobmRpbSA9PSAxKSB7CisgICAgICAgIGNvcHlfYmFzZShzaGFwZSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgICBkcHRyLCBkc3RyaWRlcywgZHN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICBzcHRyLCBzc3RyaWRlcywgc3N1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICBtZW0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBkcHRyKz1kc3RyaWRlc1swXSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworCisgICAgICAgIGNvcHlfcmVjKHNoYXBlKzEsIG5kaW0tMSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgIHhkcHRyLCBkc3RyaWRlcysxLCBkc3Vib2Zmc2V0cyA/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICB4c3B0ciwgc3N0cmlkZXMrMSwgc3N1Ym9mZnNldHMgPyBzc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICB9Cit9CisKKy8qIEZhc3RlciBjb3B5aW5nIG9mIG9uZS1kaW1lbnNpb25hbCBhcnJheXMuICovCitzdGF0aWMgaW50Citjb3B5X3NpbmdsZShQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNoYXIgKm1lbSA9IE5VTEw7CisKKyAgICBhc3NlcnQoZGVzdC0+bmRpbSA9PSAxKTsKKworICAgIGlmICghZXF1aXZfc3RydWN0dXJlKGRlc3QsIHNyYykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICghbGFzdF9kaW1faXNfY29udGlndW91cyhkZXN0LCBzcmMpKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVswXSAqIGRlc3QtPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY29weV9iYXNlKGRlc3QtPnNoYXBlLCBkZXN0LT5pdGVtc2l6ZSwKKyAgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICBzcmMtPmJ1Ziwgc3JjLT5zdHJpZGVzLCBzcmMtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgIG1lbSk7CisKKyAgICBpZiAobWVtKQorICAgICAgICBQeU1lbV9GcmVlKG1lbSk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogUmVjdXJzaXZlbHkgY29weSBzcmMgdG8gZGVzdC4gQm90aCBidWZmZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBiYXNpYworICAgc3RydWN0dXJlLiBDb3B5aW5nIGlzIGF0b21pYywgdGhlIGZ1bmN0aW9uIG5ldmVyIGZhaWxzIHdpdGggYSBwYXJ0aWFsCisgICBjb3B5LiAqLworc3RhdGljIGludAorY29weV9idWZmZXIoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBjaGFyICptZW0gPSBOVUxMOworCisgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwKTsKKworICAgIGlmICghZXF1aXZfc3RydWN0dXJlKGRlc3QsIHNyYykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICghbGFzdF9kaW1faXNfY29udGlndW91cyhkZXN0LCBzcmMpKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVtkZXN0LT5uZGltLTFdICogZGVzdC0+aXRlbXNpemUpOworICAgICAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb3B5X3JlYyhkZXN0LT5zaGFwZSwgZGVzdC0+bmRpbSwgZGVzdC0+aXRlbXNpemUsCisgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIHNyYy0+YnVmLCBzcmMtPnN0cmlkZXMsIHNyYy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBtZW0pOworCisgICAgaWYgKG1lbSkKKyAgICAgICAgUHlNZW1fRnJlZShtZW0pOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBDLWNvbnRpZ3VvdXMgYXJyYXkuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA+IDApOworCisgICAgdmlldy0+c3RyaWRlc1t2aWV3LT5uZGltLTFdID0gdmlldy0+aXRlbXNpemU7CisgICAgZm9yIChpID0gdmlldy0+bmRpbS0yOyBpID49IDA7IGktLSkKKyAgICAgICAgdmlldy0+c3RyaWRlc1tpXSA9IHZpZXctPnN0cmlkZXNbaSsxXSAqIHZpZXctPnNoYXBlW2krMV07Cit9CisKKy8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBGb3J0cmFuLWNvbnRpZ3VvdXMgYXJyYXkuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydCh2aWV3LT5uZGltID4gMCk7CisKKyAgICB2aWV3LT5zdHJpZGVzWzBdID0gdmlldy0+aXRlbXNpemU7CisgICAgZm9yIChpID0gMTsgaSA8IHZpZXctPm5kaW07IGkrKykKKyAgICAgICAgdmlldy0+c3RyaWRlc1tpXSA9IHZpZXctPnN0cmlkZXNbaS0xXSAqIHZpZXctPnNoYXBlW2ktMV07Cit9CisKKy8qIENvcHkgc3JjIHRvIGEgY29udGlndW91cyByZXByZXNlbnRhdGlvbi4gb3JkZXIgaXMgb25lIG9mICdDJywgJ0YnIChGb3J0cmFuKQorICAgb3IgJ0EnIChBbnkpLiBBc3N1bXB0aW9uczogc3JjIGhhcyBQeUJVRl9GVUxMIGluZm9ybWF0aW9uLCBzcmMtPm5kaW0gPj0gMSwKKyAgIGxlbihtZW0pID09IHNyYy0+bGVuLiAqLworc3RhdGljIGludAorYnVmZmVyX3RvX2NvbnRpZ3VvdXMoY2hhciAqbWVtLCBQeV9idWZmZXIgKnNyYywgY2hhciBvcmRlcikKK3sKKyAgICBQeV9idWZmZXIgZGVzdDsKKyAgICBQeV9zc2l6ZV90ICpzdHJpZGVzOworICAgIGludCByZXQ7CisKKyAgICBhc3NlcnQoc3JjLT5uZGltID49IDEpOworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzcmMtPnN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBzdHJpZGVzID0gUHlNZW1fTWFsbG9jKHNyYy0+bmRpbSAqIChzaXplb2YgKnNyYy0+c3RyaWRlcykpOworICAgIGlmIChzdHJpZGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIGluaXRpYWxpemUgZGVzdCAqLworICAgIGRlc3QgPSAqc3JjOworICAgIGRlc3QuYnVmID0gbWVtOworICAgIC8qIHNoYXBlIGlzIGNvbnN0YW50IGFuZCBzaGFyZWQ6IHRoZSBsb2dpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgIGFycmF5IGlzIHVuYWx0ZXJlZC4gKi8KKworICAgIC8qIFRoZSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBkZXRlcm1pbmVkIGJ5IHN0cmlkZXMgKGFuZCBwb3NzaWJseQorICAgICAgIHN1Ym9mZnNldHMpIG1heSBjaGFuZ2UuICovCisgICAgZGVzdC5zdHJpZGVzID0gc3RyaWRlczsKKyAgICBpZiAob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdBJykgeworICAgICAgICBpbml0X3N0cmlkZXNfZnJvbV9zaGFwZSgmZGVzdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKCZkZXN0KTsKKyAgICB9CisKKyAgICBkZXN0LnN1Ym9mZnNldHMgPSBOVUxMOworCisgICAgcmV0ID0gY29weV9idWZmZXIoJmRlc3QsIHNyYyk7CisKKyAgICBQeU1lbV9GcmVlKHN0cmlkZXMpOworICAgIHJldHVybiByZXQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdHJ1Y3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbml0aWFsaXplIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUgbWFuYWdlZCBidWZmZXIuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfc2hhcmVkX3ZhbHVlcyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGRlc3QtPm9iaiA9IHNyYy0+b2JqOworICAgIGRlc3QtPmJ1ZiA9IHNyYy0+YnVmOworICAgIGRlc3QtPmxlbiA9IHNyYy0+bGVuOworICAgIGRlc3QtPml0ZW1zaXplID0gc3JjLT5pdGVtc2l6ZTsKKyAgICBkZXN0LT5yZWFkb25seSA9IHNyYy0+cmVhZG9ubHk7CisgICAgZGVzdC0+Zm9ybWF0ID0gc3JjLT5mb3JtYXQgPyBzcmMtPmZvcm1hdCA6ICJCIjsKKyAgICBkZXN0LT5pbnRlcm5hbCA9IHNyYy0+aW50ZXJuYWw7Cit9CisKKy8qIENvcHkgc2hhcGUgYW5kIHN0cmlkZXMuIFJlY29uc3RydWN0IG1pc3NpbmcgdmFsdWVzLiAqLworc3RhdGljIHZvaWQKK2luaXRfc2hhcGVfc3RyaWRlcyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChzcmMtPm5kaW0gPT0gMCkgeworICAgICAgICBkZXN0LT5zaGFwZSA9IE5VTEw7CisgICAgICAgIGRlc3QtPnN0cmlkZXMgPSBOVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzcmMtPm5kaW0gPT0gMSkgeworICAgICAgICBkZXN0LT5zaGFwZVswXSA9IHNyYy0+c2hhcGUgPyBzcmMtPnNoYXBlWzBdIDogc3JjLT5sZW4gLyBzcmMtPml0ZW1zaXplOworICAgICAgICBkZXN0LT5zdHJpZGVzWzBdID0gc3JjLT5zdHJpZGVzID8gc3JjLT5zdHJpZGVzWzBdIDogc3JjLT5pdGVtc2l6ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzcmMtPm5kaW07IGkrKykKKyAgICAgICAgZGVzdC0+c2hhcGVbaV0gPSBzcmMtPnNoYXBlW2ldOworICAgIGlmIChzcmMtPnN0cmlkZXMpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKQorICAgICAgICAgICAgZGVzdC0+c3RyaWRlc1tpXSA9IHNyYy0+c3RyaWRlc1tpXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKGRlc3QpOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitpbml0X3N1Ym9mZnNldHMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoc3JjLT5zdWJvZmZzZXRzID09IE5VTEwpIHsKKyAgICAgICAgZGVzdC0+c3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKQorICAgICAgICBkZXN0LT5zdWJvZmZzZXRzW2ldID0gc3JjLT5zdWJvZmZzZXRzW2ldOworfQorCisvKiBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfbGVuKFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKKworICAgIGxlbiA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IHZpZXctPm5kaW07IGkrKykKKyAgICAgICAgbGVuICo9IHZpZXctPnNoYXBlW2ldOworICAgIGxlbiAqPSB2aWV3LT5pdGVtc2l6ZTsKKworICAgIHZpZXctPmxlbiA9IGxlbjsKK30KKworLyogSW5pdGlhbGl6ZSBtZW1vcnl2aWV3IGJ1ZmZlciBwcm9wZXJ0aWVzLiAqLworc3RhdGljIHZvaWQKK2luaXRfZmxhZ3MoUHlNZW1vcnlWaWV3T2JqZWN0ICptdikKK3sKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIHN3aXRjaCAodmlldy0+bmRpbSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgZmxhZ3MgfD0gKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DfAorICAgICAgICAgICAgICAgICAgX1B5X01FTU9SWVZJRVdfRk9SVFJBTik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKE1WX0NPTlRJR1VPVVNfTkRJTTEodmlldykpCisgICAgICAgICAgICBmbGFncyB8PSAoX1B5X01FTU9SWVZJRVdfQ3xfUHlfTUVNT1JZVklFV19GT1JUUkFOKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnQycpKQorICAgICAgICAgICAgZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfQzsKKyAgICAgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnRicpKQorICAgICAgICAgICAgZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfRk9SVFJBTjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHZpZXctPnN1Ym9mZnNldHMpIHsKKyAgICAgICAgZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfUElMOworICAgICAgICBmbGFncyAmPSB+KF9QeV9NRU1PUllWSUVXX0N8X1B5X01FTU9SWVZJRVdfRk9SVFJBTik7CisgICAgfQorCisgICAgbXYtPmZsYWdzID0gZmxhZ3M7Cit9CisKKy8qIEFsbG9jYXRlIGEgbmV3IG1lbW9yeXZpZXcgYW5kIHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24uIE5ldyBtZW1vcnl2aWV3cworICAgYXJlIGV4Y2x1c2l2ZWx5IGNyZWF0ZWQgdGhyb3VnaCB0aGUgbWJ1Zl9hZGQgZnVuY3Rpb25zLiAqLworUHlfTE9DQUxfSU5MSU5FKFB5TWVtb3J5Vmlld09iamVjdCAqKQorbWVtb3J5X2FsbG9jKGludCBuZGltKQoreworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CisKKyAgICBtdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKikKKyAgICAgICAgUHlPYmplY3RfR0NfTmV3VmFyKFB5TWVtb3J5Vmlld09iamVjdCwgJlB5TWVtb3J5Vmlld19UeXBlLCAzKm5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG12LT5tYnVmID0gTlVMTDsKKyAgICBtdi0+aGFzaCA9IC0xOworICAgIG12LT5mbGFncyA9IDA7CisgICAgbXYtPmV4cG9ydHMgPSAwOworICAgIG12LT52aWV3Lm5kaW0gPSBuZGltOworICAgIG12LT52aWV3LnNoYXBlID0gbXYtPm9iX2FycmF5OworICAgIG12LT52aWV3LnN0cmlkZXMgPSBtdi0+b2JfYXJyYXkgKyBuZGltOworICAgIG12LT52aWV3LnN1Ym9mZnNldHMgPSBtdi0+b2JfYXJyYXkgKyAyICogbmRpbTsKKyAgICBtdi0+d2Vha3JlZmxpc3QgPSBOVUxMOworCisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG12KTsKKyAgICByZXR1cm4gbXY7Cit9CisKKy8qCisgICBSZXR1cm4gYSBuZXcgbWVtb3J5dmlldyB0aGF0IGlzIHJlZ2lzdGVyZWQgd2l0aCBtYnVmLiBJZiBzcmMgaXMgTlVMTCwKKyAgIHVzZSBtYnVmLT5tYXN0ZXIgYXMgdGhlIHVuZGVybHlpbmcgYnVmZmVyLiBPdGhlcndpc2UsIHVzZSBzcmMuCisKKyAgIFRoZSBuZXcgbWVtb3J5dmlldyBoYXMgZnVsbCBidWZmZXIgaW5mb3JtYXRpb246IHNoYXBlIGFuZCBzdHJpZGVzCisgICBhcmUgYWx3YXlzIHByZXNlbnQsIHN1Ym9mZnNldHMgYXMgbmVlZGVkLiBBcnJheXMgYXJlIGNvcGllZCB0bworICAgdGhlIG1lbW9yeXZpZXcncyBvYl9hcnJheSBmaWVsZC4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK21idWZfYWRkX3ZpZXcoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZiwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKyAgICBQeV9idWZmZXIgKmRlc3Q7CisKKyAgICBpZiAoc3JjID09IE5VTEwpCisgICAgICAgIHNyYyA9ICZtYnVmLT5tYXN0ZXI7CisKKyAgICBpZiAoc3JjLT5uZGltID4gUHlCVUZfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogbnVtYmVyIG9mIGRpbWVuc2lvbnMgbXVzdCBub3QgZXhjZWVkICIKKyAgICAgICAgICAgIFNUUklOR0laRShQeUJVRl9NQVhfTkRJTSkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtdiA9IG1lbW9yeV9hbGxvYyhzcmMtPm5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlc3QgPSAmbXYtPnZpZXc7CisgICAgaW5pdF9zaGFyZWRfdmFsdWVzKGRlc3QsIHNyYyk7CisgICAgaW5pdF9zaGFwZV9zdHJpZGVzKGRlc3QsIHNyYyk7CisgICAgaW5pdF9zdWJvZmZzZXRzKGRlc3QsIHNyYyk7CisgICAgaW5pdF9mbGFncyhtdik7CisKKyAgICBtdi0+bWJ1ZiA9IG1idWY7CisgICAgUHlfSU5DUkVGKG1idWYpOworICAgIG1idWYtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKK30KKworLyogUmVnaXN0ZXIgYW4gaW5jb21wbGV0ZSB2aWV3OiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyBhbmQgZmxhZ3Mgc3RpbGwKKyAgIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFVzZSAnbmRpbScgaW5zdGVhZCBvZiBzcmMtPm5kaW0gdG8gZGV0ZXJtaW5lIHRoZQorICAgc2l6ZSBvZiB0aGUgbWVtb3J5dmlldydzIG9iX2FycmF5LgorCisgICBBc3N1bXB0aW9uOiBuZGltIDw9IFB5QlVGX01BWF9ORElNLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK21idWZfYWRkX2luY29tcGxldGVfdmlldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmLCBjb25zdCBQeV9idWZmZXIgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmRpbSkKK3sKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworICAgIFB5X2J1ZmZlciAqZGVzdDsKKworICAgIGlmIChzcmMgPT0gTlVMTCkKKyAgICAgICAgc3JjID0gJm1idWYtPm1hc3RlcjsKKworICAgIGFzc2VydChuZGltIDw9IFB5QlVGX01BWF9ORElNKTsKKworICAgIG12ID0gbWVtb3J5X2FsbG9jKG5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlc3QgPSAmbXYtPnZpZXc7CisgICAgaW5pdF9zaGFyZWRfdmFsdWVzKGRlc3QsIHNyYyk7CisKKyAgICBtdi0+bWJ1ZiA9IG1idWY7CisgICAgUHlfSU5DUkVGKG1idWYpOworICAgIG1idWYtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKK30KKworLyogRXhwb3NlIGEgcmF3IG1lbW9yeSBhcmVhIGFzIGEgdmlldyBvZiBjb250aWd1b3VzIGJ5dGVzLiBmbGFncyBjYW4gYmUKKyAgIFB5QlVGX1JFQUQgb3IgUHlCVUZfV1JJVEUuIHZpZXctPmZvcm1hdCBpcyBzZXQgdG8gIkIiICh1bnNpZ25lZCBieXRlcykuCisgICBUaGUgbWVtb3J5dmlldyBoYXMgY29tcGxldGUgYnVmZmVyIGluZm9ybWF0aW9uLiAqLworUHlPYmplY3QgKgorUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKK3sKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworICAgIFB5T2JqZWN0ICptdjsKKyAgICBpbnQgcmVhZG9ubHk7CisKKyAgICBhc3NlcnQobWVtICE9IE5VTEwpOworICAgIGFzc2VydChmbGFncyA9PSBQeUJVRl9SRUFEIHx8IGZsYWdzID09IFB5QlVGX1dSSVRFKTsKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZWFkb25seSA9IChmbGFncyA9PSBQeUJVRl9XUklURSkgPyAwIDogMTsKKyAgICAodm9pZClQeUJ1ZmZlcl9GaWxsSW5mbygmbWJ1Zi0+bWFzdGVyLCBOVUxMLCBtZW0sIHNpemUsIHJlYWRvbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX0ZVTExfUk8pOworCisgICAgbXYgPSBtYnVmX2FkZF92aWV3KG1idWYsIE5VTEwpOworICAgIFB5X0RFQ1JFRihtYnVmKTsKKworICAgIHJldHVybiBtdjsKK30KKworLyogQ3JlYXRlIGEgbWVtb3J5dmlldyBmcm9tIGEgZ2l2ZW4gUHlfYnVmZmVyLiBGb3Igc2ltcGxlIGJ5dGUgdmlld3MsCisgICBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeSgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGVudHJ5IHBvaW50IHRoYXQgY2FuIGNyZWF0ZSBhIG1hc3RlciBidWZmZXIKKyAgIHdpdGhvdXQgZnVsbCBpbmZvcm1hdGlvbi4gQmVjYXVzZSBvZiB0aGlzIGZhY3QgaW5pdF9zaGFwZV9zdHJpZGVzKCkKKyAgIG11c3QgYmUgYWJsZSB0byByZWNvbnN0cnVjdCBtaXNzaW5nIHZhbHVlcy4gICovCiBQeU9iamVjdCAqCiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKmluZm8pCiB7Ci0gICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdmlldzsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworICAgIFB5T2JqZWN0ICptdjsKIAogICAgIGlmIChpbmZvLT5idWYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbWFrZSBtZW1vcnkgdmlldyBmcm9tIGEgYnVmZmVyIHdpdGggYSBOVUxMIGRhdGEgcG9pbnRlciIpOworICAgICAgICAgICAgIlB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IGluZm8tPmJ1ZiBtdXN0IG5vdCBiZSBOVUxMIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtdmlldyA9IChQeU1lbW9yeVZpZXdPYmplY3QgKikKLSAgICAgICAgUHlPYmplY3RfR0NfTmV3KFB5TWVtb3J5Vmlld09iamVjdCwgJlB5TWVtb3J5Vmlld19UeXBlKTsKLSAgICBpZiAobXZpZXcgPT0gTlVMTCkKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZHVwX2J1ZmZlcigmbXZpZXctPnZpZXcsIGluZm8pOwotICAgIC8qIE5PVEU6IG12aWV3LT52aWV3Lm9iaiBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gaW5jcmVmJ2VkIGFzCi0gICAgICAgcGFydCBvZiBQeUJ1ZmZlcl9GaWxsSW5mbygpLiAqLwotICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtdmlldyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKW12aWV3OworCisgICAgLyogaW5mby0+b2JqIGlzIGVpdGhlciBOVUxMIG9yIGEgYm9ycm93ZWQgcmVmZXJlbmNlLiBUaGlzIHJlZmVyZW5jZQorICAgICAgIHNob3VsZCBub3QgYmUgZGVjcmVtZW50ZWQgaW4gUHlCdWZmZXJfUmVsZWFzZSgpLiAqLworICAgIG1idWYtPm1hc3RlciA9ICppbmZvOworICAgIG1idWYtPm1hc3Rlci5vYmogPSBOVUxMOworCisgICAgbXYgPSBtYnVmX2FkZF92aWV3KG1idWYsIE5VTEwpOworICAgIFB5X0RFQ1JFRihtYnVmKTsKKworICAgIHJldHVybiBtdjsKIH0KIAorLyogQ3JlYXRlIGEgbWVtb3J5dmlldyBmcm9tIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGJ1ZmZlciBwcm90b2NvbC4KKyAgIElmIHRoZSBvYmplY3QgaXMgYSBtZW1vcnl2aWV3LCB0aGUgbmV3IG1lbW9yeXZpZXcgbXVzdCBiZSByZWdpc3RlcmVkCisgICB3aXRoIHRoZSBzYW1lIG1hbmFnZWQgYnVmZmVyLiBPdGhlcndpc2UsIGEgbmV3IG1hbmFnZWQgYnVmZmVyIGlzIGNyZWF0ZWQuICovCiBQeU9iamVjdCAqCi1QeU1lbW9yeVZpZXdfRnJvbU9iamVjdChQeU9iamVjdCAqYmFzZSkKK1B5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp2KQogewotICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXZpZXc7Ci0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKIAotICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIoYmFzZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbWFrZSBtZW1vcnkgdmlldyBiZWNhdXNlIG9iamVjdCBkb2VzICIKLSAgICAgICAgICAgICJub3QgaGF2ZSB0aGUgYnVmZmVyIGludGVyZmFjZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNZW1vcnlWaWV3X0NoZWNrKHYpKSB7CisgICAgICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopdjsKKyAgICAgICAgQ0hFQ0tfUkVMRUFTRUQobXYpOworICAgICAgICByZXR1cm4gbWJ1Zl9hZGRfdmlldyhtdi0+bWJ1ZiwgJm12LT52aWV3KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIodikpIHsKKyAgICAgICAgUHlPYmplY3QgKnJldDsKKyAgICAgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KHYpOworICAgICAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldCA9IG1idWZfYWRkX3ZpZXcobWJ1ZiwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihtYnVmKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbXZpZXcgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJnZpZXcpOwotICAgIGlmIChtdmlldyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbXZpZXc7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6ICUuMjAwcyBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgYnVmZmVyIGludGVyZmFjZSIsCisgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCisvKiBDb3B5IHRoZSBmb3JtYXQgc3RyaW5nIGZyb20gYSBiYXNlIG9iamVjdCB0aGF0IG1pZ2h0IHZhbmlzaC4gKi8KK3N0YXRpYyBpbnQKK21idWZfY29weV9mb3JtYXQoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZiwgY29uc3QgY2hhciAqZm10KQoreworICAgIGlmIChmbXQgIT0gTlVMTCkgeworICAgICAgICBjaGFyICpjcCA9IFB5TWVtX01hbGxvYyhzdHJsZW4oZm10KSsxKTsKKyAgICAgICAgaWYgKGNwID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWJ1Zi0+bWFzdGVyLmZvcm1hdCA9IHN0cmNweShjcCwgZm10KTsKKyAgICAgICAgbWJ1Zi0+ZmxhZ3MgfD0gX1B5X01BTkFHRURfQlVGRkVSX0ZSRUVfRk9STUFUOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICAgUmV0dXJuIGEgbWVtb3J5dmlldyB0aGF0IGlzIGJhc2VkIG9uIGEgY29udGlndW91cyBjb3B5IG9mIHNyYy4KKyAgIEFzc3VtcHRpb25zOiBzcmMgaGFzIFB5QlVGX0ZVTExfUk8gaW5mb3JtYXRpb24sIHNyYy0+bmRpbSA+IDAuCisKKyAgIE93bmVyc2hpcCBydWxlczoKKyAgICAgMSkgQXMgdXN1YWwsIHRoZSByZXR1cm5lZCBtZW1vcnl2aWV3IGhhcyBhIHByaXZhdGUgY29weQorICAgICAgICBvZiBzcmMtPnNoYXBlLCBzcmMtPnN0cmlkZXMgYW5kIHNyYy0+c3Vib2Zmc2V0cy4KKyAgICAgMikgc3JjLT5mb3JtYXQgaXMgY29waWVkIHRvIHRoZSBtYXN0ZXIgYnVmZmVyIGFuZCByZWxlYXNlZAorICAgICAgICBpbiBtYnVmX2RlYWxsb2MoKS4gVGhlIHJlbGVhc2VidWZmZXJwcm9jIG9mIHRoZSBieXRlcworICAgICAgICBvYmplY3QgaXMgTlVMTCwgc28gaXQgZG9lcyBub3QgbWF0dGVyIHRoYXQgbWJ1Zl9yZWxlYXNlKCkKKyAgICAgICAgcGFzc2VzIHRoZSBhbHRlcmVkIGZvcm1hdCBwb2ludGVyIHRvIFB5QnVmZmVyX1JlbGVhc2UoKS4KKyovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Zyb21fY29udGlndW91c19jb3B5KFB5X2J1ZmZlciAqc3JjLCBjaGFyIG9yZGVyKQoreworICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfYnVmZmVyICpkZXN0OworICAgIGludCBpOworCisgICAgYXNzZXJ0KHNyYy0+bmRpbSA+IDApOworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNyYy0+bGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtYnVmID0gKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKilfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3QoYnl0ZXMpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWJ1Zl9jb3B5X2Zvcm1hdChtYnVmLCBzcmMtPmZvcm1hdCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihtYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopbWJ1Zl9hZGRfaW5jb21wbGV0ZV92aWV3KG1idWYsIE5VTEwsIHNyYy0+bmRpbSk7CisgICAgUHlfREVDUkVGKG1idWYpOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlc3QgPSAmbXYtPnZpZXc7CisKKyAgICAvKiBzaGFyZWQgdmFsdWVzIGFyZSBpbml0aWFsaXplZCBjb3JyZWN0bHkgZXhjZXB0IGZvciBpdGVtc2l6ZSAqLworICAgIGRlc3QtPml0ZW1zaXplID0gc3JjLT5pdGVtc2l6ZTsKKworICAgIC8qIHNoYXBlIGFuZCBzdHJpZGVzICovCisgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKSB7CisgICAgICAgIGRlc3QtPnNoYXBlW2ldID0gc3JjLT5zaGFwZVtpXTsKKyAgICB9CisgICAgaWYgKG9yZGVyID09ICdDJyB8fCBvcmRlciA9PSAnQScpIHsKKyAgICAgICAgaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoZGVzdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKGRlc3QpOworICAgIH0KKyAgICAvKiBzdWJvZmZzZXRzICovCisgICAgZGVzdC0+c3Vib2Zmc2V0cyA9IE5VTEw7CisKKyAgICAvKiBmbGFncyAqLworICAgIGluaXRfZmxhZ3MobXYpOworCisgICAgaWYgKGNvcHlfYnVmZmVyKGRlc3QsIHNyYykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihtdik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKK30KKworLyoKKyAgIFJldHVybiBhIG5ldyBtZW1vcnl2aWV3IG9iamVjdCBiYXNlZCBvbiBhIGNvbnRpZ3VvdXMgZXhwb3J0ZXIgd2l0aAorICAgYnVmZmVydHlwZT17UHlCVUZfUkVBRCwgUHlCVUZfV1JJVEV9IGFuZCBvcmRlcj17J0MnLCAnRidvcnRyYW4sIG9yICdBJ255fS4KKyAgIFRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGlzIHRoZSBzYW1lCisgICAoaS5lLiB0b2xpc3QoaW5wdXQpID09IHRvbGlzdChvdXRwdXQpKSwgYnV0IHRoZSBwaHlzaWNhbCBsYXlvdXQgaW4KKyAgIG1lbW9yeSBjYW4gYmUgZXhwbGljaXRseSBjaG9zZW4uCisgCisgICBBcyB1c3VhbCwgaWYgYnVmZmVydHlwZT1QeUJVRl9XUklURSwgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyIG11c3QgYmUgd3JpdGFibGUsCisgICBvdGhlcndpc2UgaXQgbWF5IGJlIHdyaXRhYmxlIG9yIHJlYWQtb25seS4KKworICAgSWYgdGhlIGV4cG9ydGVyIGlzIGFscmVhZHkgY29udGlndW91cyB3aXRoIHRoZSBkZXNpcmVkIHRhcmdldCBvcmRlciwKKyAgIHRoZSBtZW1vcnl2aWV3IHdpbGwgYmUgZGlyZWN0bHkgYmFzZWQgb24gdGhlIGV4cG9ydGVyLgorCisgICBPdGhlcndpc2UsIGlmIHRoZSBidWZmZXJ0eXBlIGlzIFB5QlVGX1JFQUQsIHRoZSBtZW1vcnl2aWV3IHdpbGwgYmUKKyAgIGJhc2VkIG9uIGEgbmV3IGJ5dGVzIG9iamVjdC4gSWYgb3JkZXI9eydDJywgJ0Enbnl9LCB1c2UgJ0MnIG9yZGVyLAorICAgJ0Ynb3J0cmFuIG9yZGVyIG90aGVyd2lzZS4KKyovCitQeU9iamVjdCAqCitQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqb2JqLCBpbnQgYnVmZmVydHlwZSwgY2hhciBvcmRlcikKK3sKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgUHlfYnVmZmVyICp2aWV3OworCisgICAgYXNzZXJ0KGJ1ZmZlcnR5cGUgPT0gUHlCVUZfUkVBRCB8fCBidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFKTsKKyAgICBhc3NlcnQob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdGJyB8fCBvcmRlciA9PSAnQScpOworCisgICAgbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Qob2JqKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB2aWV3ID0gJm12LT52aWV3OworICAgIGlmIChidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFICYmIHZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJ1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgUHlfREVDUkVGKG12KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBvcmRlcikpCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKKworICAgIGlmIChidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJ3cml0YWJsZSBjb250aWd1b3VzIGJ1ZmZlciByZXF1ZXN0ZWQgIgorICAgICAgICAgICAgImZvciBhIG5vbi1jb250aWd1b3VzIG9iamVjdC4iKTsKKyAgICAgICAgUHlfREVDUkVGKG12KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gbWVtb3J5X2Zyb21fY29udGlndW91c19jb3B5KHZpZXcsIG9yZGVyKTsKKyAgICBQeV9ERUNSRUYobXYpOworICAgIHJldHVybiByZXQ7Cit9CisKKwogc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9uZXcoUHlUeXBlT2JqZWN0ICpzdWJ0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKm9iajsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im9iamVjdCIsIDB9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqZWN0IiwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzptZW1vcnl2aWV3Iiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmopKSB7CkBAIC0xMzEsMjAzICs5NTksMTg0NiBAQAogfQogCiAKLXN0YXRpYyB2b2lkCi1fc3RyaWRlZF9jb3B5X25kKGNoYXIgKmRlc3QsIGNoYXIgKnNyYywgaW50IG5kLCBQeV9zc2l6ZV90ICpzaGFwZSwKLSAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RyaWRlcywgUHlfc3NpemVfdCBpdGVtc2l6ZSwgY2hhciBmb3J0KQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBQcmV2aW91c2x5IGluIGFic3RyYWN0LmMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfc3NpemVfdCBhcnJheVsxXTsKK30gUHlfYnVmZmVyX2Z1bGw7CisKK2ludAorUHlCdWZmZXJfVG9Db250aWd1b3VzKHZvaWQgKmJ1ZiwgUHlfYnVmZmVyICpzcmMsIFB5X3NzaXplX3QgbGVuLCBjaGFyIG9yZGVyKQogewotICAgIGludCBrOwotICAgIFB5X3NzaXplX3Qgb3V0c3RyaWRlOworICAgIFB5X2J1ZmZlcl9mdWxsICpmYiA9IE5VTEw7CisgICAgaW50IHJldDsKIAotICAgIGlmIChuZD09MCkgewotICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBpdGVtc2l6ZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5kID09IDEpIHsKLSAgICAgICAgZm9yIChrID0gMDsgazxzaGFwZVswXTsgaysrKSB7Ci0gICAgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBpdGVtc2l6ZSk7Ci0gICAgICAgICAgICBkZXN0ICs9IGl0ZW1zaXplOwotICAgICAgICAgICAgc3JjICs9IHN0cmlkZXNbMF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChmb3J0ID09ICdGJykgewotICAgICAgICAgICAgLyogQ29weSBmaXJzdCBkaW1lbnNpb24gZmlyc3QsCi0gICAgICAgICAgICAgICBzZWNvbmQgZGltZW5zaW9uIHNlY29uZCwgZXRjLi4uCi0gICAgICAgICAgICAgICBTZXQgdXAgdGhlIHJlY3Vyc2l2ZSBsb29wIGJhY2t3YXJkcyBzbyB0aGF0IGZpbmFsCi0gICAgICAgICAgICAgICBkaW1lbnNpb24gaXMgYWN0dWFsbHkgY29waWVkIGxhc3QuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgb3V0c3RyaWRlID0gaXRlbXNpemU7Ci0gICAgICAgICAgICBmb3IgKGs9MTsgazxuZC0xO2srKykgewotICAgICAgICAgICAgICAgIG91dHN0cmlkZSAqPSBzaGFwZVtrXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoaz0wOyBrPHNoYXBlW25kLTFdOyBrKyspIHsKLSAgICAgICAgICAgICAgICBfc3RyaWRlZF9jb3B5X25kKGRlc3QsIHNyYywgbmQtMSwgc2hhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzLCBpdGVtc2l6ZSwgZm9ydCk7Ci0gICAgICAgICAgICAgICAgZGVzdCArPSBvdXRzdHJpZGU7Ci0gICAgICAgICAgICAgICAgc3JjICs9IHN0cmlkZXNbbmQtMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBhc3NlcnQob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdGJyB8fCBvcmRlciA9PSAnQScpOwogCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogQ29weSBsYXN0IGRpbWVuc2lvbiBmaXJzdCwKLSAgICAgICAgICAgICAgIHNlY29uZC10by1sYXN0IGRpbWVuc2lvbiBzZWNvbmQsIGV0Yy4KLSAgICAgICAgICAgICAgIFNldCB1cCB0aGUgcmVjdXJzaW9uIHNvIHRoYXQgdGhlCi0gICAgICAgICAgICAgICBmaXJzdCBkaW1lbnNpb24gaXMgY29waWVkIGxhc3QKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBvdXRzdHJpZGUgPSBpdGVtc2l6ZTsKLSAgICAgICAgICAgIGZvciAoaz0xOyBrIDwgbmQ7IGsrKykgewotICAgICAgICAgICAgICAgIG91dHN0cmlkZSAqPSBzaGFwZVtrXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoaz0wOyBrPHNoYXBlWzBdOyBrKyspIHsKLSAgICAgICAgICAgICAgICBfc3RyaWRlZF9jb3B5X25kKGRlc3QsIHNyYywgbmQtMSwgc2hhcGUrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMrMSwgaXRlbXNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J0KTsKLSAgICAgICAgICAgICAgICBkZXN0ICs9IG91dHN0cmlkZTsKLSAgICAgICAgICAgICAgICBzcmMgKz0gc3RyaWRlc1swXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmIChsZW4gIT0gc3JjLT5sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiUHlCdWZmZXJfVG9Db250aWd1b3VzOiBsZW4gIT0gdmlldy0+bGVuIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuOworCisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyhzcmMsIG9yZGVyKSkgeworICAgICAgICBtZW1jcHkoKGNoYXIgKilidWYsIHNyYy0+YnVmLCBsZW4pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBidWZmZXJfdG9fY29udGlndW91cygpIGFzc3VtZXMgUHlCVUZfRlVMTCAqLworICAgIGZiID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqZmIgKyAzICogc3JjLT5uZGltICogKHNpemVvZiAqZmItPmFycmF5KSk7CisgICAgaWYgKGZiID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmYi0+dmlldy5uZGltID0gc3JjLT5uZGltOworICAgIGZiLT52aWV3LnNoYXBlID0gZmItPmFycmF5OworICAgIGZiLT52aWV3LnN0cmlkZXMgPSBmYi0+YXJyYXkgKyBzcmMtPm5kaW07CisgICAgZmItPnZpZXcuc3Vib2Zmc2V0cyA9IGZiLT5hcnJheSArIDIgKiBzcmMtPm5kaW07CisKKyAgICBpbml0X3NoYXJlZF92YWx1ZXMoJmZiLT52aWV3LCBzcmMpOworICAgIGluaXRfc2hhcGVfc3RyaWRlcygmZmItPnZpZXcsIHNyYyk7CisgICAgaW5pdF9zdWJvZmZzZXRzKCZmYi0+dmlldywgc3JjKTsKKworICAgIHNyYyA9ICZmYi0+dmlldzsKKworICAgIHJldCA9IGJ1ZmZlcl90b19jb250aWd1b3VzKGJ1Ziwgc3JjLCBvcmRlcik7CisgICAgUHlNZW1fRnJlZShmYik7CisgICAgcmV0dXJuIHJldDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZS9HQyBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEluZm9ybSB0aGUgbWFuYWdlZCBidWZmZXIgdGhhdCB0aGlzIHBhcnRpY3VsYXIgbWVtb3J5dmlldyB3aWxsIG5vdCBhY2Nlc3MKKyAgIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBhZ2Fpbi4gSWYgbm8gb3RoZXIgbWVtb3J5dmlld3MgYXJlIHJlZ2lzdGVyZWQgd2l0aAorICAgdGhlIG1hbmFnZWQgYnVmZmVyLCB0aGUgdW5kZXJseWluZyBidWZmZXIgaXMgcmVsZWFzZWQgaW5zdGFudGx5IGFuZAorICAgbWFya2VkIGFzIGluYWNjZXNzaWJsZSBmb3IgYm90aCB0aGUgbWVtb3J5dmlldyBhbmQgdGhlIG1hbmFnZWQgYnVmZmVyLgorCisgICBUaGlzIGZ1bmN0aW9uIGZhaWxzIGlmIHRoZSBtZW1vcnl2aWV3IGl0c2VsZiBoYXMgZXhwb3J0ZWQgYnVmZmVycy4gKi8KK3N0YXRpYyBpbnQKK19tZW1vcnlfcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmZsYWdzICYgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHNlbGYtPmV4cG9ydHMgPT0gMCkgeworICAgICAgICBzZWxmLT5mbGFncyB8PSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRDsKKyAgICAgICAgYXNzZXJ0KHNlbGYtPm1idWYtPmV4cG9ydHMgPiAwKTsKKyAgICAgICAgaWYgKC0tc2VsZi0+bWJ1Zi0+ZXhwb3J0cyA9PSAwKQorICAgICAgICAgICAgbWJ1Zl9yZWxlYXNlKHNlbGYtPm1idWYpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHNlbGYtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3IGhhcyAlemQgZXhwb3J0ZWQgYnVmZmVyJXMiLCBzZWxmLT5leHBvcnRzLAorICAgICAgICAgICAgc2VsZi0+ZXhwb3J0cz09MSA/ICIiIDogInMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0ZhdGFsRXJyb3IoIl9tZW1vcnlfcmVsZWFzZSgpOiBuZWdhdGl2ZSBleHBvcnQgY291bnQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgaWYgKF9tZW1vcnlfcmVsZWFzZShzZWxmKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgdm9pZAorbWVtb3J5X2RlYWxsb2MoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgICh2b2lkKV9tZW1vcnlfcmVsZWFzZShzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYnVmKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisgICAgUHlPYmplY3RfR0NfRGVsKHNlbGYpOwogfQogCiBzdGF0aWMgaW50Ci1faW5kaXJlY3RfY29weV9uZChjaGFyICpkZXN0LCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCkKK21lbW9yeV90cmF2ZXJzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgKmluZGljZXM7Ci0gICAgaW50IGs7Ci0gICAgUHlfc3NpemVfdCBlbGVtZW50czsKLSAgICBjaGFyICpwdHI7Ci0gICAgdm9pZCAoKmZ1bmMpKGludCwgUHlfc3NpemVfdCAqLCBjb25zdCBQeV9zc2l6ZV90ICopOworICAgIFB5X1ZJU0lUKHNlbGYtPm1idWYpOworICAgIHJldHVybiAwOworfQogCi0gICAgaWYgKHZpZXctPm5kaW0gPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9zc2l6ZV90KSkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7CitzdGF0aWMgaW50CittZW1vcnlfY2xlYXIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgICh2b2lkKV9tZW1vcnlfcmVsZWFzZShzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYnVmKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBtZW1vcnlfcmVsZWFzZSgoUHlNZW1vcnlWaWV3T2JqZWN0ICopc2VsZiwgTlVMTCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDYXN0aW5nIGZvcm1hdCBhbmQgc2hhcGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIElTX0JZVEVfRk9STUFUKGYpIChmID09ICdiJyB8fCBmID09ICdCJyB8fCBmID09ICdjJykKKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitnZXRfbmF0aXZlX2ZtdGNoYXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoZm10WzBdID09ICdAJykgZm10Kys7CisKKyAgICBzd2l0Y2ggKGZtdFswXSkgeworICAgIGNhc2UgJ2MnOiBjYXNlICdiJzogY2FzZSAnQic6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOworICAgIGNhc2UgJ2gnOiBjYXNlICdIJzogc2l6ZSA9IHNpemVvZihzaG9ydCk7IGJyZWFrOworICAgIGNhc2UgJ2knOiBjYXNlICdJJzogc2l6ZSA9IHNpemVvZihpbnQpOyBicmVhazsKKyAgICBjYXNlICdsJzogY2FzZSAnTCc6IHNpemUgPSBzaXplb2YobG9uZyk7IGJyZWFrOworICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogc2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOyBicmVhazsKKyAgICAjZW5kaWYKKyAgICBjYXNlICduJzogY2FzZSAnTic6IHNpemUgPSBzaXplb2YoUHlfc3NpemVfdCk7IGJyZWFrOworICAgIGNhc2UgJ2YnOiBzaXplID0gc2l6ZW9mKGZsb2F0KTsgYnJlYWs7CisgICAgY2FzZSAnZCc6IHNpemUgPSBzaXplb2YoZG91YmxlKTsgYnJlYWs7CisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihfQm9vbCk7IGJyZWFrOworICAgICNlbHNlCisgICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOworICAgICNlbmRpZgorICAgIGNhc2UgJ1AnOiBzaXplID0gc2l6ZW9mKHZvaWQgKik7IGJyZWFrOwogICAgIH0KIAotICAgIGluZGljZXMgPSAoUHlfc3NpemVfdCAqKVB5TWVtX01hbGxvYyhzaXplb2YoUHlfc3NpemVfdCkqdmlldy0+bmRpbSk7Ci0gICAgaWYgKGluZGljZXMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGZvciAoaz0wOyBrPHZpZXctPm5kaW07aysrKSB7Ci0gICAgICAgIGluZGljZXNba10gPSAwOworICAgIGlmIChzaXplID4gMCAmJiBmbXRbMV0gPT0gJ1wwJykgeworICAgICAgICAqcmVzdWx0ID0gZm10WzBdOworICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9CiAKLSAgICBlbGVtZW50cyA9IDE7Ci0gICAgZm9yIChrPTA7IGs8dmlldy0+bmRpbTsgaysrKSB7Ci0gICAgICAgIGVsZW1lbnRzICo9IHZpZXctPnNoYXBlW2tdOworICAgIHJldHVybiAtMTsKK30KKworLyogQ2FzdCBhIG1lbW9yeXZpZXcncyBkYXRhIHR5cGUgdG8gJ2Zvcm1hdCcuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlCisgICBDLWNvbnRpZ3VvdXMuIEF0IGxlYXN0IG9uZSBvZiBpbnB1dC1mb3JtYXQsIG91dHB1dC1mb3JtYXQgbXVzdCBoYXZlCisgICBieXRlIHNpemUuIFRoZSBvdXRwdXQgYXJyYXkgaXMgMS1ELCB3aXRoIHRoZSBzYW1lIGJ5dGUgbGVuZ3RoIGFzIHRoZQorICAgaW5wdXQgYXJyYXkuIFRodXMsIHZpZXctPmxlbiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIG5ldyBpdGVtc2l6ZS4gKi8KK3N0YXRpYyBpbnQKK2Nhc3RfdG9fMUQoUHlNZW1vcnlWaWV3T2JqZWN0ICptdiwgUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgUHlPYmplY3QgKmFzY2lpZm10OworICAgIGNoYXIgc3JjY2hhciwgZGVzdGNoYXI7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA+PSAxKTsKKyAgICBhc3NlcnQoUHlfU0laRShtdikgPT0gMyp2aWV3LT5uZGltKTsKKyAgICBhc3NlcnQodmlldy0+c2hhcGUgPT0gbXYtPm9iX2FycmF5KTsKKyAgICBhc3NlcnQodmlldy0+c3RyaWRlcyA9PSBtdi0+b2JfYXJyYXkgKyB2aWV3LT5uZGltKTsKKyAgICBhc3NlcnQodmlldy0+c3Vib2Zmc2V0cyA9PSBtdi0+b2JfYXJyYXkgKyAyKnZpZXctPm5kaW0pOworCisgICAgaWYgKGdldF9uYXRpdmVfZm10Y2hhcigmc3JjY2hhciwgdmlldy0+Zm9ybWF0KSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogc291cmNlIGZvcm1hdCBtdXN0IGJlIGEgbmF0aXZlIHNpbmdsZSBjaGFyYWN0ZXIgIgorICAgICAgICAgICAgImZvcm1hdCBwcmVmaXhlZCB3aXRoIGFuIG9wdGlvbmFsICdAJyIpOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KLSAgICBpZiAoZm9ydCA9PSAnRicpIHsKLSAgICAgICAgZnVuYyA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0Y7CisKKyAgICBhc2NpaWZtdCA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKGZvcm1hdCk7CisgICAgaWYgKGFzY2lpZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBpdGVtc2l6ZSA9IGdldF9uYXRpdmVfZm10Y2hhcigmZGVzdGNoYXIsIFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSk7CisgICAgaWYgKGl0ZW1zaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBkZXN0aW5hdGlvbiBmb3JtYXQgbXVzdCBiZSBhIG5hdGl2ZSBzaW5nbGUgIgorICAgICAgICAgICAgImNoYXJhY3RlciBmb3JtYXQgcHJlZml4ZWQgd2l0aCBhbiBvcHRpb25hbCAnQCciKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKCFJU19CWVRFX0ZPUk1BVChzcmNjaGFyKSAmJiAhSVNfQllURV9GT1JNQVQoZGVzdGNoYXIpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogY2Fubm90IGNhc3QgYmV0d2VlbiB0d28gbm9uLWJ5dGUgZm9ybWF0cyIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKHZpZXctPmxlbiAlIGl0ZW1zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogbGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIGl0ZW1zaXplIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHN0cm5jcHkobXYtPmZvcm1hdCwgUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpLAorICAgICAgICAgICAgX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVCk7CisgICAgbXYtPmZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFULTFdID0gJ1wwJzsKKyAgICB2aWV3LT5mb3JtYXQgPSBtdi0+Zm9ybWF0OworICAgIHZpZXctPml0ZW1zaXplID0gaXRlbXNpemU7CisKKyAgICB2aWV3LT5uZGltID0gMTsKKyAgICB2aWV3LT5zaGFwZVswXSA9IHZpZXctPmxlbiAvIHZpZXctPml0ZW1zaXplOworICAgIHZpZXctPnN0cmlkZXNbMF0gPSB2aWV3LT5pdGVtc2l6ZTsKKyAgICB2aWV3LT5zdWJvZmZzZXRzID0gTlVMTDsKKworICAgIGluaXRfZmxhZ3MobXYpOworIAorICAgIHJldCA9IDA7CisKK291dDoKKyAgICBQeV9ERUNSRUYoYXNjaWlmbXQpOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIFRoZSBtZW1vcnl2aWV3IG11c3QgaGF2ZSBzcGFjZSBmb3IgMypsZW4oc2VxKSBlbGVtZW50cy4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citjb3B5X3NoYXBlKFB5X3NzaXplX3QgKnNoYXBlLCBjb25zdCBQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IG5kaW0sCisgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlfc3NpemVfdCB4LCBpOworICAgIFB5X3NzaXplX3QgbGVuID0gaXRlbXNpemU7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldy5jYXN0KCk6IGVsZW1lbnRzIG9mIHNoYXBlIG11c3QgYmUgaW50ZWdlcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHggPD0gMCkgeworICAgICAgICAgICAgLyogSW4gZ2VuZXJhbCBlbGVtZW50cyBvZiBzaGFwZSBtYXkgYmUgMCwgYnV0IG5vdCBmb3IgY2FzdGluZy4gKi8KKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3LmNhc3QoKTogZWxlbWVudHMgb2Ygc2hhcGUgbXVzdCBiZSBpbnRlZ2VycyA+IDAiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeCA+IFBZX1NTSVpFX1RfTUFYIC8gbGVuKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldy5jYXN0KCk6IHByb2R1Y3Qoc2hhcGUpID4gU1NJWkVfTUFYIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbGVuICo9IHg7CisgICAgICAgIHNoYXBlW2ldID0geDsKKyAgICB9CisKKyAgICByZXR1cm4gbGVuOworfQorCisvKiBDYXN0IGEgMS1EIGFycmF5IHRvIGEgbmV3IHNoYXBlLiBUaGUgcmVzdWx0IGFycmF5IHdpbGwgYmUgQy1jb250aWd1b3VzLgorICAgSWYgdGhlIHJlc3VsdCBhcnJheSBkb2VzIG5vdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgYnl0ZSBsZW5ndGggYXMgdGhlCisgICBpbnB1dCBhcnJheSwgcmFpc2UgVmFsdWVFcnJvci4gKi8KK3N0YXRpYyBpbnQKK2Nhc3RfdG9fTkQoUHlNZW1vcnlWaWV3T2JqZWN0ICptdiwgY29uc3QgUHlPYmplY3QgKnNoYXBlLCBpbnQgbmRpbSkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA9PSAxKTsgLyogbmRpbSBmcm9tIGNhc3RfdG9fMUQoKSAqLworICAgIGFzc2VydChQeV9TSVpFKG12KSA9PSAzKihuZGltPT0wPzE6bmRpbSkpOyAvKiBuZGltIG9mIHJlc3VsdCBhcnJheSAqLworICAgIGFzc2VydCh2aWV3LT5zaGFwZSA9PSBtdi0+b2JfYXJyYXkpOworICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzID09IG12LT5vYl9hcnJheSArIChuZGltPT0wPzE6bmRpbSkpOworICAgIGFzc2VydCh2aWV3LT5zdWJvZmZzZXRzID09IE5VTEwpOworCisgICAgdmlldy0+bmRpbSA9IG5kaW07CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CisgICAgICAgIHZpZXctPnN0cmlkZXMgPSBOVUxMOworICAgICAgICBsZW4gPSB2aWV3LT5pdGVtc2l6ZTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGZ1bmMgPSBfUHlfYWRkX29uZV90b19pbmRleF9DOwotICAgIH0KLSAgICB3aGlsZSAoZWxlbWVudHMtLSkgewotICAgICAgICBmdW5jKHZpZXctPm5kaW0sIGluZGljZXMsIHZpZXctPnNoYXBlKTsKLSAgICAgICAgcHRyID0gUHlCdWZmZXJfR2V0UG9pbnRlcih2aWV3LCBpbmRpY2VzKTsKLSAgICAgICAgbWVtY3B5KGRlc3QsIHB0ciwgdmlldy0+aXRlbXNpemUpOwotICAgICAgICBkZXN0ICs9IHZpZXctPml0ZW1zaXplOworICAgICAgICBsZW4gPSBjb3B5X3NoYXBlKHZpZXctPnNoYXBlLCBzaGFwZSwgbmRpbSwgdmlldy0+aXRlbXNpemUpOworICAgICAgICBpZiAobGVuIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUodmlldyk7CiAgICAgfQogCi0gICAgUHlNZW1fRnJlZShpbmRpY2VzKTsKKyAgICBpZiAodmlldy0+bGVuICE9IGxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgIT0gYnVmZmVyIHNpemUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGluaXRfZmxhZ3MobXYpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3plcm9faW5fc2hhcGUoUHlNZW1vcnlWaWV3T2JqZWN0ICptdikKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IHZpZXctPm5kaW07IGkrKykKKyAgICAgICAgaWYgKHZpZXctPnNoYXBlW2ldID09IDApCisgICAgICAgICAgICByZXR1cm4gMTsKKwogICAgIHJldHVybiAwOwogfQogCiAvKgotICAgR2V0IGEgdGhlIGRhdGEgZnJvbSBhbiBvYmplY3QgYXMgYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSAoaW4KLSAgIGVpdGhlciAnQycgb3IgJ0Ynb3J0cmFuIG9yZGVyKSBldmVuIGlmIGl0IG1lYW5zIGNvcHlpbmcgaXQgaW50byBhCi0gICBzZXBhcmF0ZSBtZW1vcnkgYXJlYS4KKyAgIENhc3QgYSBjb3B5IG9mICdzZWxmJyB0byBhIGRpZmZlcmVudCB2aWV3LiBUaGUgaW5wdXQgdmlldyBtdXN0CisgICBiZSBDLWNvbnRpZ3VvdXMuIFRoZSBmdW5jdGlvbiBhbHdheXMgY2FzdHMgdGhlIGlucHV0IHZpZXcgdG8gYQorICAgMS1EIG91dHB1dCBhY2NvcmRpbmcgdG8gJ2Zvcm1hdCcuIEF0IGxlYXN0IG9uZSBvZiBpbnB1dC1mb3JtYXQsCisgICBvdXRwdXQtZm9ybWF0IG11c3QgaGF2ZSBieXRlIHNpemUuCiAKLSAgIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgTWVtb3J5IHZpZXcgb2JqZWN0LiAgSWYgbm8gY29weSBpcyBuZWVkZWQsCi0gICB0aGUgbWVtb3J5IHZpZXcgb2JqZWN0IHBvaW50cyB0byB0aGUgb3JpZ2luYWwgbWVtb3J5IGFuZCBob2xkcyBhCi0gICBsb2NrIG9uIHRoZSBvcmlnaW5hbC4gIElmIGEgY29weSBpcyBuZWVkZWQsIHRoZW4gdGhlIG1lbW9yeSB2aWV3IG9iamVjdAotICAgcG9pbnRzIHRvIGEgYnJhbmQtbmV3IEJ5dGVzIG9iamVjdCAoYW5kIGhvbGRzIGEgbWVtb3J5IGxvY2sgb24gaXQpLgorICAgSWYgJ3NoYXBlJyBpcyBnaXZlbiwgdGhlIDEtRCB2aWV3IGZyb20gdGhlIHByZXZpb3VzIHN0ZXAgd2lsbAorICAgYmUgY2FzdCB0byBhIEMtY29udGlndW91cyB2aWV3IHdpdGggbmV3IHNoYXBlIGFuZCBzdHJpZGVzLgogCi0gICBidWZmZXJ0eXBlCi0KLSAgIFB5QlVGX1JFQUQgIGJ1ZmZlciBvbmx5IG5lZWRzIHRvIGJlIHJlYWQtb25seQotICAgUHlCVUZfV1JJVEUgYnVmZmVyIG5lZWRzIHRvIGJlIHdyaXRhYmxlIChnaXZlIGVycm9yIGlmIG5vdCBjb250aWd1b3VzKQotICAgUHlCVUZfU0hBRE9XIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0YWJsZSBzbyBzaGFkb3cgaXQgd2l0aAotICAgICAgICAgICAgICAgIGEgY29udGlndW91cyBidWZmZXIgaWYgaXQgaXMgbm90LiBUaGUgdmlldyB3aWxsIHBvaW50IHRvCi0gICAgICAgICAgICAgICAgdGhlIHNoYWRvdyBidWZmZXIgd2hpY2ggY2FuIGJlIHdyaXR0ZW4gdG8gYW5kIHRoZW4KLSAgICAgICAgICAgICAgICB3aWxsIGJlIGNvcGllZCBiYWNrIGludG8gdGhlIG90aGVyIGJ1ZmZlciB3aGVuIHRoZSBtZW1vcnkKLSAgICAgICAgICAgICAgICB2aWV3IGlzIGRlLWFsbG9jYXRlZC4gIFdoaWxlIHRoZSBzaGFkb3cgYnVmZmVyIGlzCi0gICAgICAgICAgICAgICAgYmVpbmcgdXNlZCwgaXQgd2lsbCBoYXZlIGFuIGV4Y2x1c2l2ZSB3cml0ZSBsb2NrIG9uCi0gICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIGJ1ZmZlci4KLSAqLwotCi1QeU9iamVjdCAqCi1QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqb2JqLCBpbnQgYnVmZmVydHlwZSwgY2hhciBmb3J0KQorICAgQWxsIGNhc3RzIG11c3QgcmVzdWx0IGluIHZpZXdzIHRoYXQgd2lsbCBoYXZlIHRoZSBleGFjdCBieXRlCisgICBzaXplIG9mIHRoZSBvcmlnaW5hbCBpbnB1dC4gT3RoZXJ3aXNlLCBhbiBlcnJvciBpcyByYWlzZWQuCisqLworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9jYXN0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbWVtOwotICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBQeV9idWZmZXIgKnZpZXc7Ci0gICAgaW50IGZsYWdzOwotICAgIGNoYXIgKmRlc3Q7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmb3JtYXQiLCAic2hhcGUiLCBOVUxMfTsKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgUHlfc3NpemVfdCBuZGltID0gMTsKIAotICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIob2JqKSkgeworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAmc2hhcGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmb3JtYXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBmb3JtYXQgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBtZW0gPSBQeU9iamVjdF9HQ19OZXcoUHlNZW1vcnlWaWV3T2JqZWN0LCAmUHlNZW1vcnlWaWV3X1R5cGUpOwotICAgIGlmIChtZW0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB2aWV3ID0gJm1lbS0+dmlldzsKLSAgICBmbGFncyA9IFB5QlVGX0ZVTExfUk87Ci0gICAgc3dpdGNoKGJ1ZmZlcnR5cGUpIHsKLSAgICBjYXNlIFB5QlVGX1dSSVRFOgotICAgICAgICBmbGFncyA9IFB5QlVGX0ZVTEw7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCB2aWV3LCBmbGFncykgIT0gMCkgewotICAgICAgICBQeV9ERUNSRUYobWVtKTsKKyAgICBpZiAoIU1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYXN0cyBhcmUgcmVzdHJpY3RlZCB0byBDLWNvbnRpZ3VvdXMgdmlld3MiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBmb3J0KSkgewotICAgICAgICAvKiBubyBjb3B5IG5lZWRlZCAqLwotICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0sobWVtKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lbTsKLSAgICB9Ci0gICAgLyogb3RoZXJ3aXNlIGEgY29weSBpcyBuZWVkZWQgKi8KLSAgICBpZiAoYnVmZmVydHlwZSA9PSBQeUJVRl9XUklURSkgewotICAgICAgICBQeV9ERUNSRUYobWVtKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRhYmxlIGNvbnRpZ3VvdXMgYnVmZmVyIHJlcXVlc3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGEgbm9uLWNvbnRpZ3VvdXNvYmplY3QuIik7CisgICAgaWYgKHplcm9faW5fc2hhcGUoc2VsZikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCB2aWV3IHdpdGggemVyb3MgaW4gc2hhcGUgb3Igc3RyaWRlcyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXctPmxlbik7Ci0gICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG1lbSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBkZXN0ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotICAgIC8qIGRpZmZlcmVudCBjb3B5aW5nIHN0cmF0ZWd5IGRlcGVuZGluZyBvbiB3aGV0aGVyCi0gICAgICAgb3Igbm90IGFueSBwb2ludGVyIGRlLXJlZmVyZW5jaW5nIGlzIG5lZWRlZAotICAgICovCi0gICAgLyogc3RyaWRlZCBvciBpbi1kaXJlY3QgY29weSAqLwotICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzPT1OVUxMKSB7Ci0gICAgICAgIF9zdHJpZGVkX2NvcHlfbmQoZGVzdCwgdmlldy0+YnVmLCB2aWV3LT5uZGltLCB2aWV3LT5zaGFwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LT5zdHJpZGVzLCB2aWV3LT5pdGVtc2l6ZSwgZm9ydCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoX2luZGlyZWN0X2NvcHlfbmQoZGVzdCwgdmlldywgZm9ydCkgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1lbSk7CisgICAgaWYgKHNoYXBlKSB7CisgICAgICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc2hhcGUpCisgICAgICAgIG5kaW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc2hhcGUpOworICAgICAgICBpZiAobmRpbSA+IFB5QlVGX01BWF9ORElNKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldzogbnVtYmVyIG9mIGRpbWVuc2lvbnMgbXVzdCBub3QgZXhjZWVkICIKKyAgICAgICAgICAgICAgICBTVFJJTkdJWkUoUHlCVUZfTUFYX05ESU0pKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2Uodmlldyk7ICAvKiBYWFggPyAqLworICAgICAgICBpZiAoc2VsZi0+dmlldy5uZGltICE9IDEgJiYgbmRpbSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYXN0IG11c3QgYmUgMUQgLT4gTkQgb3IgTkQgLT4gMUQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQotICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtZW0pOwotICAgIHJldHVybiAoUHlPYmplY3QgKiltZW07CisKKyAgICBtdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKikKKyAgICAgICAgbWJ1Zl9hZGRfaW5jb21wbGV0ZV92aWV3KHNlbGYtPm1idWYsICZzZWxmLT52aWV3LCBuZGltPT0wID8gMSA6IChpbnQpbmRpbSk7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGNhc3RfdG9fMUQobXYsIGZvcm1hdCkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChzaGFwZSAmJiBjYXN0X3RvX05EKG12LCBzaGFwZSwgKGludCluZGltKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbXY7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihtdik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50CittZW1vcnlfZ2V0YnVmKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPnZpZXc7CisgICAgaW50IGJhc2VmbGFncyA9IHNlbGYtPmZsYWdzOworCisgICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOworCisgICAgLyogc3RhcnQgd2l0aCBjb21wbGV0ZSBpbmZvcm1hdGlvbiAqLworICAgICp2aWV3ID0gKmJhc2U7CisgICAgdmlldy0+b2JqID0gTlVMTDsKKworICAgIGlmIChSRVFfV1JJVEFCTEUoZmxhZ3MpICYmIGJhc2UtPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9GT1JNQVQoZmxhZ3MpKSB7CisgICAgICAgIC8qIE5VTEwgaW5kaWNhdGVzIHRoYXQgdGhlIGJ1ZmZlcidzIGRhdGEgdHlwZSBoYXMgYmVlbiBjYXN0IHRvICdCJy4KKyAgICAgICAgICAgdmlldy0+aXRlbXNpemUgaXMgdGhlIF9wcmV2aW91c18gaXRlbXNpemUuIElmIHNoYXBlIGlzIHByZXNlbnQsCisgICAgICAgICAgIHRoZSBlcXVhbGl0eSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIHN0aWxsIGhvbGRzIGF0IHRoaXMKKyAgICAgICAgICAgcG9pbnQuIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkCisgICAgICAgICAgIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUkVRX0NfQ09OVElHVU9VUyhmbGFncykgJiYgIU1WX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgQy1jb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFJFUV9GX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFNVl9GX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IEZvcnRyYW4gY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFNVl9BTllfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0lORElSRUNUKGZsYWdzKSAmJiAoYmFzZWZsYWdzICYgX1B5X01FTU9SWVZJRVdfUElMKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgcmVxdWlyZXMgc3Vib2Zmc2V0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX1NUUklERVMoZmxhZ3MpKSB7CisgICAgICAgIGlmICghTVZfQ19DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHZpZXctPnN0cmlkZXMgPSBOVUxMOworICAgIH0KKyAgICBpZiAoIVJFUV9TSEFQRShmbGFncykpIHsKKyAgICAgICAgLyogUHlCVUZfU0lNUExFIG9yIFB5QlVGX1dSSVRBQkxFOiBhdCB0aGlzIHBvaW50IGJ1ZiBpcyBDLWNvbnRpZ3VvdXMsCisgICAgICAgICAgIHNvIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhLiAqLworICAgICAgICBpZiAodmlldy0+Zm9ybWF0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFB5QlVGX1NJTVBMRXxQeUJVRl9GT1JNQVQgYW5kIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVCBkbworICAgICAgICAgICAgICAgbm90IG1ha2Ugc2Vuc2UuICovCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kYXJyYXk6IGNhbm5vdCBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzIGlmIHRoZSBmb3JtYXQgZmxhZyAiCisgICAgICAgICAgICAgICAgImlzIHByZXNlbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIGFuZCBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUKKyAgICAgICAgICAgZG8gX25vdF8gaG9sZCBmcm9tIGhlcmUgb24hICovCisgICAgICAgIHZpZXctPm5kaW0gPSAxOworICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CisgICAgfQorCisKKyAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKilzZWxmOworICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIHNlbGYtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorbWVtb3J5X3JlbGVhc2VidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcpCit7CisgICAgc2VsZi0+ZXhwb3J0cy0tOworICAgIHJldHVybjsKKyAgICAvKiBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyB2aWV3LT5vYmogYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAqLworfQorCisvKiBCdWZmZXIgbWV0aG9kcyAqLworc3RhdGljIFB5QnVmZmVyUHJvY3MgbWVtb3J5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYyltZW1vcnlfZ2V0YnVmLCAgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIChyZWxlYXNlYnVmZmVycHJvYyltZW1vcnlfcmVsZWFzZWJ1ZiwgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICBPcHRpbWl6ZWQgcGFjay91bnBhY2sgZm9yIGFsbCBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgIEZpeCBleGNlcHRpb25zOgorICAgICAxKSBJbmNsdWRlIGZvcm1hdCBzdHJpbmcgaW4gdGhlIGVycm9yIG1lc3NhZ2UuCisgICAgIDIpIE92ZXJmbG93RXJyb3IgLT4gVmFsdWVFcnJvci4KKyAgICAgMykgVGhlIGVycm9yIG1lc3NhZ2UgZnJvbSBQeU51bWJlcl9JbmRleCgpIGlzIG5vdCBpZGVhbC4KKyovCitzdGF0aWMgaW50Cit0eXBlX2Vycm9yX2ludChjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGludmFsaWQgdHlwZSBmb3IgZm9ybWF0ICclcyciLCBmbXQpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAordmFsdWVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGludmFsaWQgdmFsdWUgZm9yIGZvcm1hdCAnJXMnIiwgZm10KTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKK2ZpeF9lcnJvcl9pbnQoY29uc3QgY2hhciAqZm10KQoreworICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX2ludChmbXQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpIHx8CisgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19WYWx1ZUVycm9yKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KGZtdCk7CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvKiBBY2NlcHQgaW50ZWdlciBvYmplY3RzIG9yIG9iamVjdHMgd2l0aCBhbiBfX2luZGV4X18oKSBtZXRob2QuICovCitzdGF0aWMgbG9uZworcHlsb25nX2FzX2xkKFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgbG9uZyBsZDsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbGQgPSBQeUxvbmdfQXNMb25nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIGxkOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworcHlsb25nX2FzX2x1KFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgdW5zaWduZWQgbG9uZyBsdTsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKS0xOworCisgICAgbHUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbHU7Cit9CisKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworc3RhdGljIFBZX0xPTkdfTE9ORworcHlsb25nX2FzX2xsZChQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxsZCA9IFB5TG9uZ19Bc0xvbmdMb25nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIGxsZDsKK30KKworc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworcHlsb25nX2FzX2xsdShQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworCisgICAgbGx1ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBsbHU7Cit9CisjZW5kaWYKKworc3RhdGljIFB5X3NzaXplX3QKK3B5bG9uZ19hc196ZChQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5X3NzaXplX3QgemQ7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHpkID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiB6ZDsKK30KKworc3RhdGljIHNpemVfdAorcHlsb25nX2FzX3p1KFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgc2l6ZV90IHp1OworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKHNpemVfdCktMTsKKworICAgIHp1ID0gUHlMb25nX0FzU2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHp1OworfQorCisvKiBUaW1pbmdzIHdpdGggdGhlIG5kYXJyYXkgZnJvbSBfdGVzdGJ1ZmZlci5jIGluZGljYXRlIHRoYXQgdXNpbmcgdGhlCisgICBzdHJ1Y3QgbW9kdWxlIGlzIGFyb3VuZCAxNXggc2xvd2VyIHRoYW4gdGhlIHR3byBmdW5jdGlvbnMgYmVsb3cuICovCisKKyNkZWZpbmUgVU5QQUNLX1NJTkdMRShkZXN0LCBwdHIsIHR5cGUpIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHR5cGUgeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcHRyLCBzaXplb2YgeCk7IFwKKyAgICAgICAgZGVzdCA9IHg7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworLyogVW5wYWNrIGEgc2luZ2xlIGl0ZW0uICdmbXQnIGNhbiBiZSBhbnkgbmF0aXZlIGZvcm1hdCBjaGFyYWN0ZXIgaW4gc3RydWN0CisgICBtb2R1bGUgc3ludGF4LiBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgc2Vuc2l0aXZlIHRvIHNtYWxsIGNoYW5nZXMuIFdpdGggdGhpcworICAgbGF5b3V0IGdjYyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBhIGZhc3QganVtcCB0YWJsZS4gKi8KK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQordW5wYWNrX3NpbmdsZShjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbHU7CisgICAgc2l6ZV90IHp1OworICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsZDsKKyAgICBQeV9zc2l6ZV90IHpkOworICAgIGRvdWJsZSBkOworICAgIHVuc2lnbmVkIGNoYXIgdWM7CisgICAgdm9pZCAqcDsKKworICAgIHN3aXRjaCAoZm10WzBdKSB7CisKKyAgICAvKiBzaWduZWQgaW50ZWdlcnMgYW5kIGZhc3QgcGF0aCBmb3IgJ0InICovCisgICAgY2FzZSAnQic6IHVjID0gKigodW5zaWduZWQgY2hhciAqKXB0cik7IGdvdG8gY29udmVydF91YzsKKyAgICBjYXNlICdiJzogbGQgPSAgICooKHNpZ25lZCBjaGFyICopcHRyKTsgZ290byBjb252ZXJ0X2xkOworICAgIGNhc2UgJ2gnOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIHNob3J0KTsgZ290byBjb252ZXJ0X2xkOworICAgIGNhc2UgJ2knOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGludCk7IGdvdG8gY29udmVydF9sZDsKKyAgICBjYXNlICdsJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBsb25nKTsgZ290byBjb252ZXJ0X2xkOworCisgICAgLyogYm9vbGVhbiAqLworICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCisgICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgX0Jvb2wpOyBnb3RvIGNvbnZlcnRfYm9vbDsKKyAgICAjZWxzZQorICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGNoYXIpOyBnb3RvIGNvbnZlcnRfYm9vbDsKKyAgICAjZW5kaWYKKworICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCisgICAgY2FzZSAnSCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgc2hvcnQpOyBnb3RvIGNvbnZlcnRfbHU7CisgICAgY2FzZSAnSSc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgaW50KTsgZ290byBjb252ZXJ0X2x1OworICAgIGNhc2UgJ0wnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcpOyBnb3RvIGNvbnZlcnRfbHU7CisKKyAgICAvKiBuYXRpdmUgNjQtYml0ICovCisgICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbGQ7CisgICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbHU7CisgICAgI2VuZGlmCisKKyAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KKyAgICBjYXNlICduJzogVU5QQUNLX1NJTkdMRSh6ZCwgcHRyLCBQeV9zc2l6ZV90KTsgZ290byBjb252ZXJ0X3pkOworICAgIGNhc2UgJ04nOiBVTlBBQ0tfU0lOR0xFKHp1LCBwdHIsIHNpemVfdCk7IGdvdG8gY29udmVydF96dTsKKworICAgIC8qIGZsb2F0cyAqLworICAgIGNhc2UgJ2YnOiBVTlBBQ0tfU0lOR0xFKGQsIHB0ciwgZmxvYXQpOyBnb3RvIGNvbnZlcnRfZG91YmxlOworICAgIGNhc2UgJ2QnOiBVTlBBQ0tfU0lOR0xFKGQsIHB0ciwgZG91YmxlKTsgZ290byBjb252ZXJ0X2RvdWJsZTsKKworICAgIC8qIGJ5dGVzIG9iamVjdCAqLworICAgIGNhc2UgJ2MnOiBnb3RvIGNvbnZlcnRfYnl0ZXM7CisKKyAgICAvKiBwb2ludGVyICovCisgICAgY2FzZSAnUCc6IFVOUEFDS19TSU5HTEUocCwgcHRyLCB2b2lkICopOyBnb3RvIGNvbnZlcnRfcG9pbnRlcjsKKworICAgIC8qIGRlZmF1bHQgKi8KKyAgICBkZWZhdWx0OiBnb3RvIGVycl9mb3JtYXQ7CisgICAgfQorCitjb252ZXJ0X3VjOgorICAgIC8qIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCkgaXMgc2xvd2VyICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh1Yyk7Citjb252ZXJ0X2xkOgorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobGQpOworY29udmVydF9sdToKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcobHUpOworY29udmVydF9sbGQ6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcobGxkKTsKK2NvbnZlcnRfbGx1OgorICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcobGx1KTsKK2NvbnZlcnRfemQ6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCh6ZCk7Citjb252ZXJ0X3p1OgorICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdCh6dSk7Citjb252ZXJ0X2RvdWJsZToKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOworY29udmVydF9ib29sOgorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcobGQpOworY29udmVydF9ieXRlczoKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwdHIsIDEpOworY29udmVydF9wb2ludGVyOgorICAgIHJldHVybiBQeUxvbmdfRnJvbVZvaWRQdHIocCk7CitlcnJfZm9ybWF0OgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogZm9ybWF0ICVzIG5vdCBzdXBwb3J0ZWQiLCBmbXQpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIFBBQ0tfU0lOR0xFKHB0ciwgc3JjLCB0eXBlKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHR5cGUgeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHggPSAodHlwZSlzcmM7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1lbWNweShwdHIsIChjaGFyICopJngsIHNpemVvZiB4KTsgICBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUGFjayBhIHNpbmdsZSBpdGVtLiAnZm10JyBjYW4gYmUgYW55IG5hdGl2ZSBmb3JtYXQgY2hhcmFjdGVyIGluCisgICBzdHJ1Y3QgbW9kdWxlIHN5bnRheC4gKi8KK3N0YXRpYyBpbnQKK3BhY2tfc2luZ2xlKGNoYXIgKnB0ciwgUHlPYmplY3QgKml0ZW0sIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbHU7CisgICAgc2l6ZV90IHp1OworICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsZDsKKyAgICBQeV9zc2l6ZV90IHpkOworICAgIGRvdWJsZSBkOworICAgIHZvaWQgKnA7CisKKyAgICBzd2l0Y2ggKGZtdFswXSkgeworICAgIC8qIHNpZ25lZCBpbnRlZ2VycyAqLworICAgIGNhc2UgJ2InOiBjYXNlICdoJzogY2FzZSAnaSc6IGNhc2UgJ2wnOgorICAgICAgICBsZCA9IHB5bG9uZ19hc19sZChpdGVtKTsKKyAgICAgICAgaWYgKGxkID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgc3dpdGNoIChmbXRbMF0pIHsKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICBpZiAobGQgPCBTQ0hBUl9NSU4gfHwgbGQgPiBTQ0hBUl9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgKigoc2lnbmVkIGNoYXIgKilwdHIpID0gKHNpZ25lZCBjaGFyKWxkOyBicmVhazsKKyAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICBpZiAobGQgPCBTSFJUX01JTiB8fCBsZCA+IFNIUlRfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIHNob3J0KTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgaWYgKGxkIDwgSU5UX01JTiB8fCBsZCA+IElOVF9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgaW50KTsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IC8qICdsJyAqLworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgbG9uZyk7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KKyAgICBjYXNlICdCJzogY2FzZSAnSCc6IGNhc2UgJ0knOiBjYXNlICdMJzoKKyAgICAgICAgbHUgPSBweWxvbmdfYXNfbHUoaXRlbSk7CisgICAgICAgIGlmIChsdSA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIHN3aXRjaCAoZm10WzBdKSB7CisgICAgICAgIGNhc2UgJ0InOgorICAgICAgICAgICAgaWYgKGx1ID4gVUNIQVJfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgICooKHVuc2lnbmVkIGNoYXIgKilwdHIpID0gKHVuc2lnbmVkIGNoYXIpbHU7IGJyZWFrOworICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgICAgIGlmIChsdSA+IFVTSFJUX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGx1LCB1bnNpZ25lZCBzaG9ydCk7IGJyZWFrOworICAgICAgICBjYXNlICdJJzoKKyAgICAgICAgICAgIGlmIChsdSA+IFVJTlRfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbHUsIHVuc2lnbmVkIGludCk7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiAvKiAnTCcgKi8KKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbHUsIHVuc2lnbmVkIGxvbmcpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KKyAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzoKKyAgICAgICAgbGxkID0gcHlsb25nX2FzX2xsZChpdGVtKTsKKyAgICAgICAgaWYgKGxsZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGxkLCBQWV9MT05HX0xPTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdRJzoKKyAgICAgICAgbGx1ID0gcHlsb25nX2FzX2xsdShpdGVtKTsKKyAgICAgICAgaWYgKGxsdSA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGJyZWFrOworICAgICNlbmRpZgorCisgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCisgICAgY2FzZSAnbic6CisgICAgICAgIHpkID0gcHlsb25nX2FzX3pkKGl0ZW0pOworICAgICAgICBpZiAoemQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIHpkLCBQeV9zc2l6ZV90KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnTic6CisgICAgICAgIHp1ID0gcHlsb25nX2FzX3p1KGl0ZW0pOworICAgICAgICBpZiAoenUgPT0gKHNpemVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgenUsIHNpemVfdCk7CisgICAgICAgIGJyZWFrOworCisgICAgLyogZmxvYXRzICovCisgICAgY2FzZSAnZic6IGNhc2UgJ2QnOgorICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShpdGVtKTsKKyAgICAgICAgaWYgKGQgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIGlmIChmbXRbMF0gPT0gJ2YnKSB7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGQsIGZsb2F0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgZCwgZG91YmxlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIC8qIGJvb2wgKi8KKyAgICBjYXNlICc/JzoKKyAgICAgICAgbGQgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CisgICAgICAgIGlmIChsZCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHByZXNlcnZlIG9yaWdpbmFsIGVycm9yICovCisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgX0Jvb2wpOworICAgICNlbHNlCisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGNoYXIpOworICAgICNlbmRpZgorICAgICAgICAgYnJlYWs7CisKKyAgICAvKiBieXRlcyBvYmplY3QgKi8KKyAgICBjYXNlICdjJzoKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KGZtdCk7CisgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGl0ZW0pICE9IDEpCisgICAgICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KGZtdCk7CisgICAgICAgICpwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtKVswXTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiBwb2ludGVyICovCisgICAgY2FzZSAnUCc6CisgICAgICAgIHAgPSBQeUxvbmdfQXNWb2lkUHRyKGl0ZW0pOworICAgICAgICBpZiAocCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBwLCB2b2lkICopOworICAgICAgICBicmVhazsKKworICAgIC8qIGRlZmF1bHQgKi8KKyAgICBkZWZhdWx0OiBnb3RvIGVycl9mb3JtYXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisKK2Vycl9vY2N1cnJlZDoKKyAgICByZXR1cm4gZml4X2Vycm9yX2ludChmbXQpOworZXJyX3JhbmdlOgorICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoZm10KTsKK2Vycl9mb3JtYXQ6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBmb3JtYXQgJXMgbm90IHN1cHBvcnRlZCIsIGZtdCk7CisgICAgcmV0dXJuIC0xOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIHVucGFjayB1c2luZyB0aGUgc3RydWN0IG1vZHVsZSAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRm9yIHJlYXNvbmFibGUgcGVyZm9ybWFuY2UgaXQgaXMgbmVjZXNzYXJ5IHRvIGNhY2hlIGFsbCBvYmplY3RzIHJlcXVpcmVkCisgICBmb3IgdW5wYWNraW5nLiBBbiB1bnBhY2tlciBjYW4gaGFuZGxlIHRoZSBmb3JtYXQgcGFzc2VkIHRvIHVucGFja19mcm9tKCkuCisgICBJbnZhcmlhbnQ6IEFsbCBwb2ludGVyIGZpZWxkcyBvZiB0aGUgc3RydWN0IHNob3VsZCBlaXRoZXIgYmUgTlVMTCBvciB2YWxpZAorICAgcG9pbnRlcnMuICovCitzdHJ1Y3QgdW5wYWNrZXIgeworICAgIFB5T2JqZWN0ICp1bnBhY2tfZnJvbTsgLyogU3RydWN0LnVucGFja19mcm9tKGZvcm1hdCkgKi8KKyAgICBQeU9iamVjdCAqbXZpZXc7ICAgICAgIC8qIGNhY2hlZCBtZW1vcnl2aWV3ICovCisgICAgY2hhciAqaXRlbTsgICAgICAgICAgICAvKiBidWZmZXIgZm9yIG12aWV3ICovCisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsgICAvKiBsZW4oaXRlbSkgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgdW5wYWNrZXIgKgordW5wYWNrZXJfbmV3KHZvaWQpCit7CisgICAgc3RydWN0IHVucGFja2VyICp4ID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqeCk7CisKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHgtPnVucGFja19mcm9tID0gTlVMTDsKKyAgICB4LT5tdmlldyA9IE5VTEw7CisgICAgeC0+aXRlbSA9IE5VTEw7CisgICAgeC0+aXRlbXNpemUgPSAwOworCisgICAgcmV0dXJuIHg7Cit9CisKK3N0YXRpYyB2b2lkCit1bnBhY2tlcl9mcmVlKHN0cnVjdCB1bnBhY2tlciAqeCkKK3sKKyAgICBpZiAoeCkgeworICAgICAgICBQeV9YREVDUkVGKHgtPnVucGFja19mcm9tKTsKKyAgICAgICAgUHlfWERFQ1JFRih4LT5tdmlldyk7CisgICAgICAgIFB5TWVtX0ZyZWUoeC0+aXRlbSk7CisgICAgICAgIFB5TWVtX0ZyZWUoeCk7CisgICAgfQorfQorCisvKiBSZXR1cm4gYSBuZXcgdW5wYWNrZXIgZm9yIHRoZSBnaXZlbiBmb3JtYXQuICovCitzdGF0aWMgc3RydWN0IHVucGFja2VyICoKK3N0cnVjdF9nZXRfdW5wYWNrZXIoY29uc3QgY2hhciAqZm10LCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICpzdHJ1Y3Rtb2R1bGU7ICAgICAvKiBYWFggY2FjaGUgdGhlc2UgdHdvICovCisgICAgUHlPYmplY3QgKlN0cnVjdCA9IE5VTEw7ICAgIC8qIFhYWCBpbiBnbG9iYWxzPyAgICAgKi8KKyAgICBQeU9iamVjdCAqc3RydWN0b2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgdW5wYWNrZXIgKnggPSBOVUxMOworCisgICAgc3RydWN0bW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzdHJ1Y3QiKTsKKyAgICBpZiAoc3RydWN0bW9kdWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgU3RydWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJTdHJ1Y3QiKTsKKyAgICBQeV9ERUNSRUYoc3RydWN0bW9kdWxlKTsKKyAgICBpZiAoU3RydWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgeCA9IHVucGFja2VyX25ldygpOworICAgIGlmICh4ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBmb3JtYXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB4LT51bnBhY2tfZnJvbSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAidW5wYWNrX2Zyb20iKTsKKyAgICBpZiAoeC0+dW5wYWNrX2Zyb20gPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHgtPml0ZW0gPSBQeU1lbV9NYWxsb2MoaXRlbXNpemUpOworICAgIGlmICh4LT5pdGVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgeC0+aXRlbXNpemUgPSBpdGVtc2l6ZTsKKworICAgIHgtPm12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoeC0+aXRlbSwgaXRlbXNpemUsIFB5QlVGX1dSSVRFKTsKKyAgICBpZiAoeC0+bXZpZXcgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworCitvdXQ6CisgICAgUHlfWERFQ1JFRihTdHJ1Y3QpOworICAgIFB5X1hERUNSRUYoZm9ybWF0KTsKKyAgICBQeV9YREVDUkVGKHN0cnVjdG9iaik7CisgICAgcmV0dXJuIHg7CisKK2Vycm9yOgorICAgIHVucGFja2VyX2ZyZWUoeCk7CisgICAgeCA9IE5VTEw7CisgICAgZ290byBvdXQ7Cit9CisKKy8qIHVucGFjayBhIHNpbmdsZSBpdGVtICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RydWN0X3VucGFja19zaW5nbGUoY29uc3QgY2hhciAqcHRyLCBzdHJ1Y3QgdW5wYWNrZXIgKngpCit7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBtZW1jcHkoeC0+aXRlbSwgcHRyLCB4LT5pdGVtc2l6ZSk7CisgICAgdiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoeC0+dW5wYWNrX2Zyb20sIHgtPm12aWV3LCBOVUxMKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHYpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0odiwgMCk7CisgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgfQorCisgICAgcmV0dXJuIHY7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcHJlc2VudGF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBhbGxvdyBleHBsaWNpdCBmb3JtIG9mIG5hdGl2ZSBmb3JtYXQgKi8KK1B5X0xPQ0FMX0lOTElORShjb25zdCBjaGFyICopCithZGp1c3RfZm10KGNvbnN0IFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBjb25zdCBjaGFyICpmbXQ7CisKKyAgICBmbXQgPSAodmlldy0+Zm9ybWF0WzBdID09ICdAJykgPyB2aWV3LT5mb3JtYXQrMSA6IHZpZXctPmZvcm1hdDsKKyAgICBpZiAoZm10WzBdICYmIGZtdFsxXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZm10OworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiB1bnN1cHBvcnRlZCBmb3JtYXQgJXMiLCB2aWV3LT5mb3JtYXQpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBCYXNlIGNhc2UgZm9yIG11bHRpLWRpbWVuc2lvbmFsIHVucGFja2luZy4gQXNzdW1wdGlvbjogbmRpbSA9PSAxLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3RvbGlzdF9iYXNlKGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLAorICAgICAgICAgICAgY29uc3QgY2hhciAqZm10KQoreworICAgIFB5T2JqZWN0ICpsc3QsICppdGVtOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGxzdCA9IFB5TGlzdF9OZXcoc2hhcGVbMF0pOworICAgIGlmIChsc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisgICAgICAgIGl0ZW0gPSB1bnBhY2tfc2luZ2xlKHhwdHIsIGZtdCk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxzdCwgaSwgaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIGxzdDsKK30KKworLyogVW5wYWNrIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkgaW50byBhIG5lc3RlZCBsaXN0LgorICAgQXNzdW1wdGlvbjogbmRpbSA+PSAxLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3RvbGlzdF9yZWMoY29uc3QgY2hhciAqcHRyLCBQeV9zc2l6ZV90IG5kaW0sIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLAorICAgICAgICAgICBjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlPYmplY3QgKmxzdCwgKml0ZW07CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMSk7CisgICAgYXNzZXJ0KHNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzdHJpZGVzICE9IE5VTEwpOworCisgICAgaWYgKG5kaW0gPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvbGlzdF9iYXNlKHB0ciwgc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMsIGZtdCk7CisKKyAgICBsc3QgPSBQeUxpc3RfTmV3KHNoYXBlWzBdKTsKKyAgICBpZiAobHN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwdHIrPXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cHRyID0gQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpOworICAgICAgICBpdGVtID0gdG9saXN0X3JlYyh4cHRyLCBuZGltLTEsIHNoYXBlKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMrMSwgc3Vib2Zmc2V0cyA/IHN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxzdCwgaSwgaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIGxzdDsKK30KKworLyogUmV0dXJuIGEgbGlzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVtb3J5dmlldy4gQ3VycmVudGx5IG9ubHkgYnVmZmVycworICAgd2l0aCBuYXRpdmUgZm9ybWF0IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfdG9saXN0KFB5TWVtb3J5Vmlld09iamVjdCAqbXYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgY29uc3QgUHlfYnVmZmVyICp2aWV3ID0gJihtdi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworCisgICAgQ0hFQ0tfUkVMRUFTRUQobXYpOworCisgICAgZm10ID0gYWRqdXN0X2ZtdCh2aWV3KTsKKyAgICBpZiAoZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKKyAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUodmlldy0+YnVmLCBmbXQpOworICAgIH0KKyAgICBlbHNlIGlmICh2aWV3LT5uZGltID09IDEpIHsKKyAgICAgICAgcmV0dXJuIHRvbGlzdF9iYXNlKHZpZXctPmJ1Ziwgdmlldy0+c2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LT5zdHJpZGVzLCB2aWV3LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB0b2xpc3RfcmVjKHZpZXctPmJ1Ziwgdmlldy0+bmRpbSwgdmlldy0+c2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXctPnN0cmlkZXMsIHZpZXctPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3RvYnl0ZXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgUHlfYnVmZmVyICpzcmMgPSBWSUVXX0FERFIoc2VsZik7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKE1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3JjLT5idWYsIHNyYy0+bGVuKTsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc3JjLT5sZW4pOworICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChidWZmZXJfdG9fY29udGlndW91cyhQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIHNyYywgJ0MnKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3JlcHIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5mbGFncyAmIF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxyZWxlYXNlZCBtZW1vcnkgYXQgJXA+Iiwgc2VsZik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtZW1vcnkgYXQgJXA+Iiwgc2VsZik7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4aW5nIGFuZCBzbGljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZW0gYXQgaW5kZXguICovCitzdGF0aWMgY2hhciAqCitwdHJfZnJvbV9pbmRleChQeV9idWZmZXIgKnZpZXcsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgY2hhciAqcHRyOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uICovCisKKyAgICBhc3NlcnQodmlldy0+c2hhcGUpOworICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzKTsKKworICAgIG5pdGVtcyA9IHZpZXctPnNoYXBlWzBdOworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggKz0gbml0ZW1zOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG5pdGVtcykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gKGNoYXIgKil2aWV3LT5idWY7CisgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbMF0gKiBpbmRleDsKKworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCB2aWV3LT5zdWJvZmZzZXRzKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKKy8qIFJldHVybiB0aGUgaXRlbSBhdCBpbmRleC4gSW4gYSBvbmUtZGltZW5zaW9uYWwgdmlldywgdGhpcyBpcyBhbiBvYmplY3QKKyAgIHdpdGggdGhlIHR5cGUgc3BlY2lmaWVkIGJ5IHZpZXctPmZvcm1hdC4gT3RoZXJ3aXNlLCB0aGUgaXRlbSBpcyBhIHN1Yi12aWV3LgorICAgVGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gbWVtb3J5X3N1YnNjcmlwdCgpIGFuZCBtZW1vcnlfYXNfc2VxdWVuY2UuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2l0ZW0oUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMSkgeworICAgICAgICBjaGFyICpwdHIgPSBwdHJfZnJvbV9pbmRleCh2aWV3LCBpbmRleCk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShwdHIsIGZtdCk7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtdWx0aS1kaW1lbnNpb25hbCBzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQoraW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CisKKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBiYXNlLT5zaGFwZVtkaW1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCB8fCBkaW0gPT0gMCkgeworICAgIGFkanVzdF9idWY6CisgICAgICAgIGJhc2UtPmJ1ZiA9IChjaGFyICopYmFzZS0+YnVmICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4gPSBkaW0tMTsKKyAgICAgICAgd2hpbGUgKG4gPj0gMCAmJiBiYXNlLT5zdWJvZmZzZXRzW25dIDwgMCkKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgZ290byBhZGp1c3RfYnVmOyAvKiBhbGwgc3Vib2Zmc2V0cyBhcmUgbmVnYXRpdmUgKi8KKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IGJhc2UtPnN1Ym9mZnNldHNbbl0gKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgYmFzZS0+c2hhcGVbZGltXSA9IHNsaWNlbGVuZ3RoOworICAgIGJhc2UtPnN0cmlkZXNbZGltXSA9IGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0ZXA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoraXNfbXVsdGlzbGljZShQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhrZXkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShrZXkpOworICAgIGlmIChzaXplID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqeCA9IFB5VHVwbGVfR0VUX0lURU0oa2V5LCBpKTsKKyAgICAgICAgaWYgKCFQeVNsaWNlX0NoZWNrKHgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCisvKiBtdltvYmpdIHJldHVybnMgYW4gb2JqZWN0IGhvbGRpbmcgdGhlIGRhdGEgZm9yIG9uZSBlbGVtZW50IGlmIG9iagorICAgZnVsbHkgaW5kZXhlcyB0aGUgbWVtb3J5dmlldyBvciBhbm90aGVyIG1lbW9yeXZpZXcgb2JqZWN0IGlmIGl0CisgICBkb2VzIG5vdC4KKworICAgMC1kIG1lbW9yeXZpZXcgb2JqZWN0cyBjYW4gYmUgcmVmZXJlbmNlZCB1c2luZyBtdlsuLi5dIG9yIG12WygpXQorICAgYnV0IG5vdCB3aXRoIGFueXRoaW5nIGVsc2UuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3N1YnNjcmlwdChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfYnVmZmVyICp2aWV3OworICAgIHZpZXcgPSAmKHNlbGYtPnZpZXcpOworICAgIAorICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA9PSAwKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgICAgICAgICAgaWYgKGZtdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUodmlldy0+YnVmLCBmbXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSBQeV9FbGxpcHNpcykgeworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgICAgIGluZGV4ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgUHlFeGNfSW5kZXhFcnJvcik7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBtZW1vcnlfaXRlbShzZWxmLCBpbmRleCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgeworICAgICAgICBQeU1lbW9yeVZpZXdPYmplY3QgKnNsaWNlZDsKKworICAgICAgICBzbGljZWQgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopbWJ1Zl9hZGRfdmlldyhzZWxmLT5tYnVmLCB2aWV3KTsKKyAgICAgICAgaWYgKHNsaWNlZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKGluaXRfc2xpY2UoJnNsaWNlZC0+dmlldywga2V5LCAwKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzbGljZWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaW5pdF9sZW4oJnNsaWNlZC0+dmlldyk7CisgICAgICAgIGluaXRfZmxhZ3Moc2xpY2VkKTsKKworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2xpY2VkOworICAgIH0KKyAgICBlbHNlIGlmIChpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc2xpY2luZyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1lbW9yeXZpZXc6IGludmFsaWQgc2xpY2Uga2V5Iik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK21lbW9yeV9hc3Nfc3ViKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgUHlfYnVmZmVyIHNyYzsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisgICAgY2hhciAqcHRyOworCisgICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOworCisgICAgZm10ID0gYWRqdXN0X2ZtdCh2aWV3KTsKKyAgICBpZiAoZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICh2aWV3LT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY2Fubm90IG1vZGlmeSByZWFkLW9ubHkgbWVtb3J5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImNhbm5vdCBkZWxldGUgbWVtb3J5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8CisgICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KT09MCkpIHsKKyAgICAgICAgICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgICAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldyBhc3NpZ25tZW50cyBhcmUgY3VycmVudGx5IHJlc3RyaWN0ZWQgdG8gbmRpbSA9IDEiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBmbXQpOworICAgIH0KKyAgICAvKiBvbmUtZGltZW5zaW9uYWw6IGZhc3QgcGF0aCAqLworICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgJiYgdmlldy0+bmRpbSA9PSAxKSB7CisgICAgICAgIFB5X2J1ZmZlciBkZXN0OyAvKiBzbGljZWQgdmlldyAqLworICAgICAgICBQeV9zc2l6ZV90IGFycmF5c1szXTsKKyAgICAgICAgaW50IHJldCA9IC0xOworCisgICAgICAgIC8qIHJ2YWx1ZSBtdXN0IGJlIGFuIGV4cG9ydGVyICovCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmFsdWUsICZzcmMsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgZGVzdCA9ICp2aWV3OworICAgICAgICBkZXN0LnNoYXBlID0gJmFycmF5c1swXTsgZGVzdC5zaGFwZVswXSA9IHZpZXctPnNoYXBlWzBdOworICAgICAgICBkZXN0LnN0cmlkZXMgPSAmYXJyYXlzWzFdOyBkZXN0LnN0cmlkZXNbMF0gPSB2aWV3LT5zdHJpZGVzWzBdOworICAgICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cykgeworICAgICAgICAgICAgZGVzdC5zdWJvZmZzZXRzID0gJmFycmF5c1syXTsgZGVzdC5zdWJvZmZzZXRzWzBdID0gdmlldy0+c3Vib2Zmc2V0c1swXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbml0X3NsaWNlKCZkZXN0LCBrZXksIDApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZW5kX2Jsb2NrOworICAgICAgICBkZXN0LmxlbiA9IGRlc3Quc2hhcGVbMF0gKiBkZXN0Lml0ZW1zaXplOworCisgICAgICAgIHJldCA9IGNvcHlfc2luZ2xlKCZkZXN0LCAmc3JjKTsKKworICAgIGVuZF9ibG9jazoKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3JjKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhrZXkpIHx8IGlzX211bHRpc2xpY2Uoa2V5KSkgeworICAgICAgICAvKiBDYWxsIG1lbW9yeV9zdWJzY3JpcHQoKSB0byBwcm9kdWNlIGEgc2xpY2VkIGx2YWx1ZSwgdGhlbiBjb3B5CisgICAgICAgICAgIHJ2YWx1ZSBpbnRvIGx2YWx1ZS4gVGhpcyBpcyBhbHJlYWR5IGltcGxlbWVudGVkIGluIF90ZXN0YnVmZmVyLmMuICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXcgc2xpY2UgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkICIKKyAgICAgICAgICAgICJ0byBuZGltID0gMSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1lbW9yeXZpZXc6IGludmFsaWQgc2xpY2Uga2V5Iik7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorbWVtb3J5X2xlbmd0aChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOworICAgIHJldHVybiBzZWxmLT52aWV3Lm5kaW0gPT0gMCA/IDEgOiBzZWxmLT52aWV3LnNoYXBlWzBdOworfQorCisvKiBBcyBtYXBwaW5nICovCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtZW1vcnlfYXNfbWFwcGluZyA9IHsKKyAgICAobGVuZnVuYyltZW1vcnlfbGVuZ3RoLCAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLworICAgIChiaW5hcnlmdW5jKW1lbW9yeV9zdWJzY3JpcHQsICAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCisgICAgKG9iam9iamFyZ3Byb2MpbWVtb3J5X2Fzc19zdWIsICAgICAgICAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCit9OworCisvKiBBcyBzZXF1ZW5jZSAqLworc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1lbW9yeV9hc19zZXF1ZW5jZSA9IHsKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2xlbmd0aCAqLworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KKyAgICAgICAgKHNzaXplYXJnZnVuYyltZW1vcnlfaXRlbSwgICAgICAgIC8qIHNxX2l0ZW0gKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmlzb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIE1WX0NPTVBBUkVfRVggLTEgICAgICAgLyogZXhjZXB0aW9uICovCisjZGVmaW5lIE1WX0NPTVBBUkVfTk9UX0lNUEwgLTIgLyogbm90IGltcGxlbWVudGVkICovCisKKy8qIFRyYW5zbGF0ZSBhIFN0cnVjdEVycm9yIHRvICJub3QgZXF1YWwiLiBQcmVzZXJ2ZSBvdGhlciBleGNlcHRpb25zLiAqLworc3RhdGljIGludAorZml4X3N0cnVjdF9lcnJvcl9pbnQodm9pZCkKK3sKKyAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgLyogWFhYIENhbm5vdCBnZXQgYXQgU3RydWN0RXJyb3IgZGlyZWN0bHk/ICovCisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW1wb3J0RXJyb3IpIHx8CisgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfTWVtb3J5RXJyb3IpKSB7CisgICAgICAgIHJldHVybiBNVl9DT01QQVJFX0VYOworICAgIH0KKyAgICAvKiBTdHJ1Y3RFcnJvcjogaW52YWxpZCBvciB1bmtub3duIGZvcm1hdCAtPiBub3QgZXF1YWwgKi8KKyAgICBQeUVycl9DbGVhcigpOworICAgIHJldHVybiAwOworfQorCisvKiBVbnBhY2sgYW5kIGNvbXBhcmUgc2luZ2xlIGl0ZW1zIG9mIHAgYW5kIHEgdXNpbmcgdGhlIHN0cnVjdCBtb2R1bGUuICovCitzdGF0aWMgaW50CitzdHJ1Y3RfdW5wYWNrX2NtcChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgaW50IHJldDsKKworICAgIC8qIEF0IHRoaXMgcG9pbnQgYW55IGV4Y2VwdGlvbiBmcm9tIHRoZSBzdHJ1Y3QgbW9kdWxlIHNob3VsZCBub3QgYmUKKyAgICAgICBTdHJ1Y3RFcnJvciwgc2luY2UgYm90aCBmb3JtYXRzIGhhdmUgYmVlbiBhY2NlcHRlZCBhbHJlYWR5LiAqLworICAgIHYgPSBzdHJ1Y3RfdW5wYWNrX3NpbmdsZShwLCB1bnBhY2tfcCk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE1WX0NPTVBBUkVfRVg7CisKKyAgICB3ID0gc3RydWN0X3VucGFja19zaW5nbGUocSwgdW5wYWNrX3EpOworICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICByZXR1cm4gTVZfQ09NUEFSRV9FWDsKKyAgICB9CisKKyAgICAvKiBNVl9DT01QQVJFX0VYID09IC0xOiBleGNlcHRpb25zIGFyZSBwcmVzZXJ2ZWQgKi8KKyAgICByZXQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodiwgdywgUHlfRVEpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBQeV9ERUNSRUYodyk7CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBVbnBhY2sgYW5kIGNvbXBhcmUgc2luZ2xlIGl0ZW1zIG9mIHAgYW5kIHEuIElmIGJvdGggcCBhbmQgcSBoYXZlIHRoZSBzYW1lCisgICBzaW5nbGUgZWxlbWVudCBuYXRpdmUgZm9ybWF0LCB0aGUgY29tcGFyaXNvbiB1c2VzIGEgZmFzdCBwYXRoIChnY2MgY3JlYXRlcworICAgYSBqdW1wIHRhYmxlIGFuZCBjb252ZXJ0cyBtZW1jcHkgaW50byBzaW1wbGUgYXNzaWdubWVudHMgb24geDg2L3g2NCkuCisKKyAgIE90aGVyd2lzZSwgdGhlIGNvbXBhcmlzb24gaXMgZGVsZWdhdGVkIHRvIHRoZSBzdHJ1Y3QgbW9kdWxlLCB3aGljaCBpcworICAgMzAtNjB4IHNsb3dlci4gKi8KKyNkZWZpbmUgQ01QX1NJTkdMRShwLCBxLCB0eXBlKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0eXBlIHk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7IFwKKyAgICAgICAgbWVtY3B5KChjaGFyICopJnksIHEsIHNpemVvZiB5KTsgXAorICAgICAgICBlcXVhbCA9ICh4ID09IHkpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK3VucGFja19jbXAoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY2hhciBmbXQsCisgICAgICAgICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCit7CisgICAgaW50IGVxdWFsOworCisgICAgc3dpdGNoIChmbXQpIHsKKworICAgIC8qIHNpZ25lZCBpbnRlZ2VycyBhbmQgZmFzdCBwYXRoIGZvciAnQicgKi8KKyAgICBjYXNlICdCJzogcmV0dXJuICooKHVuc2lnbmVkIGNoYXIgKilwKSA9PSAqKCh1bnNpZ25lZCBjaGFyICopcSk7CisgICAgY2FzZSAnYic6IHJldHVybiAqKChzaWduZWQgY2hhciAqKXApID09ICooKHNpZ25lZCBjaGFyICopcSk7CisgICAgY2FzZSAnaCc6IENNUF9TSU5HTEUocCwgcSwgc2hvcnQpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnaSc6IENNUF9TSU5HTEUocCwgcSwgaW50KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ2wnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcpOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiBib29sZWFuICovCisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBfQm9vbCk7IHJldHVybiBlcXVhbDsKKyAgICAjZWxzZQorICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIGNoYXIpOyByZXR1cm4gZXF1YWw7CisgICAgI2VuZGlmCisKKyAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLworICAgIGNhc2UgJ0gnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIHNob3J0KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ0knOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGludCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdMJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBsb25nKTsgcmV0dXJuIGVxdWFsOworCisgICAgLyogbmF0aXZlIDY0LWJpdCAqLworICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOiBDTVBfU0lOR0xFKHAsIHEsIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdRJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7CisgICAgI2VuZGlmCisKKyAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KKyAgICBjYXNlICduJzogQ01QX1NJTkdMRShwLCBxLCBQeV9zc2l6ZV90KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ04nOiBDTVBfU0lOR0xFKHAsIHEsIHNpemVfdCk7IHJldHVybiBlcXVhbDsKKworICAgIC8qIGZsb2F0cyAqLworICAgIC8qIFhYWCBEQkxfRVBTSUxPTj8gKi8KKyAgICBjYXNlICdmJzogQ01QX1NJTkdMRShwLCBxLCBmbG9hdCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdkJzogQ01QX1NJTkdMRShwLCBxLCBkb3VibGUpOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiBieXRlcyBvYmplY3QgKi8KKyAgICBjYXNlICdjJzogcmV0dXJuICpwID09ICpxOworCisgICAgLyogcG9pbnRlciAqLworICAgIGNhc2UgJ1AnOiBDTVBfU0lOR0xFKHAsIHEsIHZvaWQgKik7IHJldHVybiBlcXVhbDsKKworICAgIC8qIHVzZSB0aGUgc3RydWN0IG1vZHVsZSAqLworICAgIGNhc2UgJ18nOgorICAgICAgICBhc3NlcnQodW5wYWNrX3ApOworICAgICAgICBhc3NlcnQodW5wYWNrX3EpOworICAgICAgICByZXR1cm4gc3RydWN0X3VucGFja19jbXAocCwgcSwgdW5wYWNrX3AsIHVucGFja19xKTsKKyAgICB9CisKKyAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBpbnRlcm5hbCBlcnJvciBpbiByaWNoY29tcGFyZSIpOworICAgIHJldHVybiBNVl9DT01QQVJFX0VYOworfQorCisvKiBCYXNlIGNhc2UgZm9yIHJlY3Vyc2l2ZSBhcnJheSBjb21wYXJpc29ucy4gQXNzdW1wdGlvbjogbmRpbSA9PSAxLiAqLworc3RhdGljIGludAorY21wX2Jhc2UoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpwc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcHN1Ym9mZnNldHMsCisgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpxc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcXN1Ym9mZnNldHMsCisgICAgICAgICBjaGFyIGZtdCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGVxdWFsOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBlcXVhbCA9IHVucGFja19jbXAoeHAsIHhxLCBmbXQsIHVucGFja19wLCB1bnBhY2tfcSk7CisgICAgICAgIGlmIChlcXVhbCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBSZWN1cnNpdmVseSBjb21wYXJlIHR3byBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgdGhhdCBoYXZlIHRoZSBzYW1lCisgICBsb2dpY2FsIHN0cnVjdHVyZS4gQXNzdW1wdGlvbjogbmRpbSA+PSAxLiAqLworc3RhdGljIGludAorY21wX3JlYyhjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLAorICAgICAgICBQeV9zc2l6ZV90IG5kaW0sIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpwc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcHN1Ym9mZnNldHMsCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnFzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpxc3Vib2Zmc2V0cywKKyAgICAgICAgY2hhciBmbXQsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBlcXVhbDsKKworICAgIGFzc2VydChuZGltID49IDEpOworICAgIGFzc2VydChzaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQocHN0cmlkZXMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHFzdHJpZGVzICE9IE5VTEwpOworCisgICAgaWYgKG5kaW0gPT0gMSkgeworICAgICAgICByZXR1cm4gY21wX2Jhc2UocCwgcSwgc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcywgcHN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICBxc3RyaWRlcywgcXN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmbXQsIHVucGFja19wLCB1bnBhY2tfcSk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBlcXVhbCA9IGNtcF9yZWMoeHAsIHhxLCBuZGltLTEsIHNoYXBlKzEsCisgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcysxLCBwc3Vib2Zmc2V0cyA/IHBzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMrMSwgcXN1Ym9mZnNldHMgPyBxc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCwgdW5wYWNrX3AsIHVucGFja19xKTsKKyAgICAgICAgaWYgKGVxdWFsIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZXF1YWw7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9idWZmZXIgd2J1ZiwgKnZ2OworICAgIFB5X2J1ZmZlciAqd3cgPSBOVUxMOworICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3YgPSBOVUxMOworICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3cgPSBOVUxMOworICAgIGNoYXIgdmZtdCwgd2ZtdDsKKyAgICBpbnQgZXF1YWwgPSBNVl9DT01QQVJFX05PVF9JTVBMOworCisgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQorICAgICAgICBnb3RvIHJlc3VsdDsgLyogUHlfTm90SW1wbGVtZW50ZWQgKi8KKworICAgIGFzc2VydChQeU1lbW9yeVZpZXdfQ2hlY2sodikpOworICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRSh2KSkgeworICAgICAgICBlcXVhbCA9ICh2ID09IHcpOworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisgICAgdnYgPSBWSUVXX0FERFIodik7CisKKyAgICBpZiAoUHlNZW1vcnlWaWV3X0NoZWNrKHcpKSB7CisgICAgICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRSh3KSkgeworICAgICAgICAgICAgZXF1YWwgPSAodiA9PSB3KTsKKyAgICAgICAgICAgIGdvdG8gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHd3ID0gVklFV19BRERSKHcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih3LCAmd2J1ZiwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgZ290byByZXN1bHQ7IC8qIFB5X05vdEltcGxlbWVudGVkICovCisgICAgICAgIH0KKyAgICAgICAgd3cgPSAmd2J1ZjsKKyAgICB9CisKKyAgICBpZiAoIWVxdWl2X3NoYXBlKHZ2LCB3dykpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZXF1YWwgPSAwOworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBVc2UgZmFzdCB1bnBhY2tpbmcgZm9yIGlkZW50aWNhbCBwcmltaXRpdmUgQyB0eXBlIGZvcm1hdHMuICovCisgICAgaWYgKGdldF9uYXRpdmVfZm10Y2hhcigmdmZtdCwgdnYtPmZvcm1hdCkgPCAwKQorICAgICAgICB2Zm10ID0gJ18nOworICAgIGlmIChnZXRfbmF0aXZlX2ZtdGNoYXIoJndmbXQsIHd3LT5mb3JtYXQpIDwgMCkKKyAgICAgICAgd2ZtdCA9ICdfJzsKKyAgICBpZiAodmZtdCA9PSAnXycgfHwgd2ZtdCA9PSAnXycgfHwgdmZtdCAhPSB3Zm10KSB7CisgICAgICAgIC8qIFVzZSBzdHJ1Y3QgbW9kdWxlIHVucGFja2luZy4gTk9URTogRXZlbiBmb3IgZXF1YWwgZm9ybWF0IHN0cmluZ3MsCisgICAgICAgICAgIG1lbWNtcCgpIGNhbm5vdCBiZSB1c2VkIGZvciBpdGVtIGNvbXBhcmlzb24gc2luY2UgaXQgd291bGQgZ2l2ZQorICAgICAgICAgICBpbmNvcnJlY3QgcmVzdWx0cyBpbiB0aGUgY2FzZSBvZiBOYU5zIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZworICAgICAgICAgICBieXRlcy4gKi8KKyAgICAgICAgdmZtdCA9ICdfJzsKKyAgICAgICAgdW5wYWNrX3YgPSBzdHJ1Y3RfZ2V0X3VucGFja2VyKHZ2LT5mb3JtYXQsIHZ2LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmICh1bnBhY2tfdiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcXVhbCA9IGZpeF9zdHJ1Y3RfZXJyb3JfaW50KCk7CisgICAgICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnBhY2tfdyA9IHN0cnVjdF9nZXRfdW5wYWNrZXIod3ctPmZvcm1hdCwgd3ctPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKHVucGFja193ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVxdWFsID0gZml4X3N0cnVjdF9lcnJvcl9pbnQoKTsKKyAgICAgICAgICAgIGdvdG8gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHZ2LT5uZGltID09IDApIHsKKyAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHZ2LT5idWYsIHd3LT5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2Zm10LCB1bnBhY2tfdiwgdW5wYWNrX3cpOworICAgIH0KKyAgICBlbHNlIGlmICh2di0+bmRpbSA9PSAxKSB7CisgICAgICAgIGVxdWFsID0gY21wX2Jhc2UodnYtPmJ1Ziwgd3ctPmJ1ZiwgdnYtPnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZ2LT5zdHJpZGVzLCB2di0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICB3dy0+c3RyaWRlcywgd3ctPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmZtdCwgdW5wYWNrX3YsIHVucGFja193KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVxdWFsID0gY21wX3JlYyh2di0+YnVmLCB3dy0+YnVmLCB2di0+bmRpbSwgdnYtPnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgdnYtPnN0cmlkZXMsIHZ2LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgd3ctPnN0cmlkZXMsIHd3LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgdmZtdCwgdW5wYWNrX3YsIHVucGFja193KTsKKyAgICB9CisKK3Jlc3VsdDoKKyAgICBpZiAoZXF1YWwgPCAwKSB7CisgICAgICAgIGlmIChlcXVhbCA9PSBNVl9DT01QQVJFX05PVF9JTVBMKQorICAgICAgICAgICAgcmVzID0gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIGVsc2UgLyogZXhjZXB0aW9uICovCisgICAgICAgICAgICByZXMgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmICgoZXF1YWwgJiYgb3AgPT0gUHlfRVEpIHx8ICghZXF1YWwgJiYgb3AgPT0gUHlfTkUpKQorICAgICAgICByZXMgPSBQeV9UcnVlOworICAgIGVsc2UKKyAgICAgICAgcmVzID0gUHlfRmFsc2U7CisKKyAgICBpZiAod3cgPT0gJndidWYpCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2Uod3cpOworCisgICAgdW5wYWNrZXJfZnJlZSh1bnBhY2tfdik7CisgICAgdW5wYWNrZXJfZnJlZSh1bnBhY2tfdyk7CisKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlfaGFzaF90CittZW1vcnlfaGFzaChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhc2ggPT0gLTEpIHsKKyAgICAgICAgUHlfYnVmZmVyICp2aWV3ID0gJnNlbGYtPnZpZXc7CisgICAgICAgIGNoYXIgKm1lbSA9IHZpZXctPmJ1ZjsKKyAgICAgICAgUHlfc3NpemVfdCByZXQ7CisgICAgICAgIGNoYXIgZm10OworCisgICAgICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKKworICAgICAgICBpZiAoIXZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGhhc2ggd3JpdGFibGUgbWVtb3J5dmlldyBvYmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXQgPSBnZXRfbmF0aXZlX2ZtdGNoYXIoJmZtdCwgdmlldy0+Zm9ybWF0KTsKKyAgICAgICAgaWYgKHJldCA8IDAgfHwgIUlTX0JZVEVfRk9STUFUKGZtdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBoYXNoaW5nIGlzIHJlc3RyaWN0ZWQgdG8gZm9ybWF0cyAnQicsICdiJyBvciAnYyciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlldy0+b2JqICE9IE5VTEwgJiYgUHlPYmplY3RfSGFzaCh2aWV3LT5vYmopID09IC0xKSB7CisgICAgICAgICAgICAvKiBLZWVwIHRoZSBvcmlnaW5hbCBlcnJvciBtZXNzYWdlICovCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIU1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyh2aWV3LT5sZW4pOworICAgICAgICAgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmZmVyX3RvX2NvbnRpZ3VvdXMobWVtLCB2aWV3LCAnQycpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUobWVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBDYW4ndCBmYWlsICovCisgICAgICAgIHNlbGYtPmhhc2ggPSBfUHlfSGFzaEJ5dGVzKCh1bnNpZ25lZCBjaGFyICopbWVtLCB2aWV3LT5sZW4pOworCisgICAgICAgIGlmIChtZW0gIT0gdmlldy0+YnVmKQorICAgICAgICAgICAgUHlNZW1fRnJlZShtZW0pOworICAgIH0KKworICAgIHJldHVybiBzZWxmLT5oYXNoOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19JbnRUdXBsZUZyb21Tc2l6ZXQoaW50IGxlbiwgUHlfc3NpemVfdCAqdmFscykKK3sKKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqbzsKKyAgICBQeU9iamVjdCAqaW50VHVwbGU7CisKKyAgICBpZiAodmFscyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlUdXBsZV9OZXcoMCk7CisKKyAgICBpbnRUdXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7CisgICAgaWYgKCFpbnRUdXBsZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgbyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWxzW2ldKTsKKyAgICAgICAgaWYgKCFvKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW50VHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbnRUdXBsZSwgaSwgbyk7CisgICAgfQorICAgIHJldHVybiBpbnRUdXBsZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9vYmpfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmc2VsZi0+dmlldzsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIGlmICh2aWV3LT5vYmogPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgcmV0dXJuIHZpZXctPm9iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9uYnl0ZXNfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnZpZXcubGVuKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9mb3JtYXRfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKIHsKQEAgLTM0MywzMSArMjgxNCw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fSW50VHVwbGVGcm9tU3NpemV0KGludCBsZW4sIFB5X3NzaXplX3QgKnZhbHMpCi17Ci0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QgKm87Ci0gICAgUHlPYmplY3QgKmludFR1cGxlOwotCi0gICAgaWYgKHZhbHMgPT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICBpbnRUdXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7Ci0gICAgaWYgKCFpbnRUdXBsZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKLSAgICAgICAgbyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh2YWxzW2ldKTsKLSAgICAgICAgaWYgKCFvKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaW50VHVwbGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbnRUdXBsZSwgaSwgbyk7Ci0gICAgfQotICAgIHJldHVybiBpbnRUdXBsZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9zaGFwZV9nZXQoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQogewogICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwpAQCAtNDAyLDExICsyODQ4LDQyIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT52aWV3Lm5kaW0pOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2NfY29udGlndW91cyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKE1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2ZfY29udGlndW91cyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKE1WX0ZfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9BTllfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpOworfQorCitQeURvY19TVFJWQVIobWVtb3J5X29ial9kb2MsCisgICAgICAgICAgICAgIlRoZSB1bmRlcmx5aW5nIG9iamVjdCBvZiB0aGUgbWVtb3J5dmlldy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfbmJ5dGVzX2RvYywKKyAgICAgICAgICAgICAiVGhlIGFtb3VudCBvZiBzcGFjZSBpbiBieXRlcyB0aGF0IHRoZSBhcnJheSB3b3VsZCB1c2UgaW5cbiIKKyAgICAgICAgICAgICAiIGEgY29udGlndW91cyByZXByZXNlbnRhdGlvbi4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfcmVhZG9ubHlfZG9jLAorICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9pdGVtc2l6ZV9kb2MsCisgICAgICAgICAgICAgIlRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldy4iKTsKIFB5RG9jX1NUUlZBUihtZW1vcnlfZm9ybWF0X2RvYywKICAgICAgICAgICAgICAiQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0IChpbiBzdHJ1Y3QgbW9kdWxlIHN0eWxlKVxuIgogICAgICAgICAgICAgICIgZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgdmlldy4iKTsKLVB5RG9jX1NUUlZBUihtZW1vcnlfaXRlbXNpemVfZG9jLAotICAgICAgICAgICAgICJUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXcuIik7CitQeURvY19TVFJWQVIobWVtb3J5X25kaW1fZG9jLAorICAgICAgICAgICAgICJBbiBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgZGltZW5zaW9ucyBvZiBhIG11bHRpLWRpbWVuc2lvbmFsXG4iCisgICAgICAgICAgICAgIiBhcnJheSB0aGUgbWVtb3J5IHJlcHJlc2VudHMuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3NoYXBlX2RvYywKICAgICAgICAgICAgICAiQSB0dXBsZSBvZiBuZGltIGludGVnZXJzIGdpdmluZyB0aGUgc2hhcGUgb2YgdGhlIG1lbW9yeVxuIgogICAgICAgICAgICAgICIgYXMgYW4gTi1kaW1lbnNpb25hbCBhcnJheS4iKTsKQEAgLTQxNSw5NSArMjg5MiwyOSBAQAogICAgICAgICAgICAgICIgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3N1Ym9mZnNldHNfZG9jLAogICAgICAgICAgICAgICJBIHR1cGxlIG9mIGludGVnZXJzIHVzZWQgaW50ZXJuYWxseSBmb3IgUElMLXN0eWxlIGFycmF5cy4iKTsKLVB5RG9jX1NUUlZBUihtZW1vcnlfcmVhZG9ubHlfZG9jLAotICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LiIpOwotUHlEb2NfU1RSVkFSKG1lbW9yeV9uZGltX2RvYywKLSAgICAgICAgICAgICAiQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbFxuIgotICAgICAgICAgICAgICIgYXJyYXkgdGhlIG1lbW9yeSByZXByZXNlbnRzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9jX2NvbnRpZ3VvdXNfZG9jLAorICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgQyBjb250aWd1b3VzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9mX2NvbnRpZ3VvdXNfZG9jLAorICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiBjb250aWd1b3VzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9jb250aWd1b3VzX2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIGNvbnRpZ3VvdXMuIik7CiAKIHN0YXRpYyBQeUdldFNldERlZiBtZW1vcnlfZ2V0c2V0bGlzdFtdID0gewotICAgIHsiZm9ybWF0IiwgICAgICAgICAgKGdldHRlciltZW1vcnlfZm9ybWF0X2dldCwgICAgICBOVUxMLCBtZW1vcnlfZm9ybWF0X2RvY30sCi0gICAgeyJpdGVtc2l6ZSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9pdGVtc2l6ZV9nZXQsICAgIE5VTEwsIG1lbW9yeV9pdGVtc2l6ZV9kb2N9LAotICAgIHsic2hhcGUiLCAgICAgICAgICAgKGdldHRlciltZW1vcnlfc2hhcGVfZ2V0LCAgICAgICBOVUxMLCBtZW1vcnlfc2hhcGVfZG9jfSwKLSAgICB7InN0cmlkZXMiLCAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3N0cmlkZXNfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X3N0cmlkZXNfZG9jfSwKLSAgICB7InN1Ym9mZnNldHMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X3N1Ym9mZnNldHNfZ2V0LCAgTlVMTCwgbWVtb3J5X3N1Ym9mZnNldHNfZG9jfSwKLSAgICB7InJlYWRvbmx5IiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X3JlYWRvbmx5X2dldCwgICAgTlVMTCwgbWVtb3J5X3JlYWRvbmx5X2RvY30sCi0gICAgeyJuZGltIiwgICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uZGltX2dldCwgICAgICAgIE5VTEwsIG1lbW9yeV9uZGltX2RvY30sCisgICAgeyJvYmoiLCAgICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9vYmpfZ2V0LCAgICAgICAgTlVMTCwgbWVtb3J5X29ial9kb2N9LAorICAgIHsibmJ5dGVzIiwgICAgICAgICAgKGdldHRlciltZW1vcnlfbmJ5dGVzX2dldCwgICAgIE5VTEwsIG1lbW9yeV9uYnl0ZXNfZG9jfSwKKyAgICB7InJlYWRvbmx5IiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X3JlYWRvbmx5X2dldCwgICBOVUxMLCBtZW1vcnlfcmVhZG9ubHlfZG9jfSwKKyAgICB7Iml0ZW1zaXplIiwgICAgICAgIChnZXR0ZXIpbWVtb3J5X2l0ZW1zaXplX2dldCwgICBOVUxMLCBtZW1vcnlfaXRlbXNpemVfZG9jfSwKKyAgICB7ImZvcm1hdCIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X2Zvcm1hdF9nZXQsICAgICBOVUxMLCBtZW1vcnlfZm9ybWF0X2RvY30sCisgICAgeyJuZGltIiwgICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uZGltX2dldCwgICAgICAgTlVMTCwgbWVtb3J5X25kaW1fZG9jfSwKKyAgICB7InNoYXBlIiwgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3NoYXBlX2dldCwgICAgICBOVUxMLCBtZW1vcnlfc2hhcGVfZG9jfSwKKyAgICB7InN0cmlkZXMiLCAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3N0cmlkZXNfZ2V0LCAgICBOVUxMLCBtZW1vcnlfc3RyaWRlc19kb2N9LAorICAgIHsic3Vib2Zmc2V0cyIsICAgICAgKGdldHRlciltZW1vcnlfc3Vib2Zmc2V0c19nZXQsIE5VTEwsIG1lbW9yeV9zdWJvZmZzZXRzX2RvY30sCisgICAgeyJjX2NvbnRpZ3VvdXMiLCAgICAoZ2V0dGVyKW1lbW9yeV9jX2NvbnRpZ3VvdXMsICAgTlVMTCwgbWVtb3J5X2NfY29udGlndW91c19kb2N9LAorICAgIHsiZl9jb250aWd1b3VzIiwgICAgKGdldHRlciltZW1vcnlfZl9jb250aWd1b3VzLCAgIE5VTEwsIG1lbW9yeV9mX2NvbnRpZ3VvdXNfZG9jfSwKKyAgICB7ImNvbnRpZ3VvdXMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X2NvbnRpZ3VvdXMsICAgICBOVUxMLCBtZW1vcnlfY29udGlndW91c19kb2N9LAogICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwKIH07CiAKLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV90b2J5dGVzKFB5TWVtb3J5Vmlld09iamVjdCAqbWVtLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIENIRUNLX1JFTEVBU0VEKG1lbSk7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCi0gICAgICAgICAgICAoUHlPYmplY3QgKikgJlB5Qnl0ZXNfVHlwZSwgbWVtLCBOVUxMKTsKLX0KLQotLyogVE9ETzogcmV3cml0ZSB0aGlzIGZ1bmN0aW9uIHVzaW5nIHRoZSBzdHJ1Y3QgbW9kdWxlIHRvIHVucGFjawotICAgZWFjaCBidWZmZXIgaXRlbSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3RvbGlzdChQeU1lbW9yeVZpZXdPYmplY3QgKm1lbSwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBQeV9idWZmZXIgKnZpZXcgPSAmKG1lbS0+dmlldyk7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5T2JqZWN0ICpyZXMsICppdGVtOwotICAgIGNoYXIgKmJ1ZjsKLQotICAgIENIRUNLX1JFTEVBU0VEKG1lbSk7Ci0gICAgaWYgKHN0cmNtcCh2aWV3LT5mb3JtYXQsICJCIikgfHwgdmlldy0+aXRlbXNpemUgIT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwgCi0gICAgICAgICAgICAgICAgInRvbGlzdCgpIG9ubHkgc3VwcG9ydHMgYnl0ZSB2aWV3cyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHZpZXctPm5kaW0gIT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwgCi0gICAgICAgICAgICAgICAgInRvbGlzdCgpIG9ubHkgc3VwcG9ydHMgb25lLWRpbWVuc2lvbmFsIG9iamVjdHMiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlcyA9IFB5TGlzdF9OZXcodmlldy0+bGVuKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IHZpZXctPmJ1ZjsKLSAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy0+bGVuOyBpKyspIHsKLSAgICAgICAgaXRlbSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBjaGFyKSAqYnVmKTsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeUxpc3RfU0VUX0lURU0ocmVzLCBpLCBpdGVtKTsKLSAgICAgICAgYnVmKys7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1kb19yZWxlYXNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+dmlldy5vYmogIT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCYoc2VsZi0+dmlldykpOwotICAgIH0KLSAgICBzZWxmLT52aWV3Lm9iaiA9IE5VTEw7Ci0gICAgc2VsZi0+dmlldy5idWYgPSBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfZXhpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgZG9fcmVsZWFzZSgoUHlNZW1vcnlWaWV3T2JqZWN0ICopIHNlbGYpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCiBQeURvY19TVFJWQVIobWVtb3J5X3JlbGVhc2VfZG9jLAogIk0ucmVsZWFzZSgpIC0+IE5vbmVcblwKIFxuXApAQCAtNTE2LDM0MyArMjkyNywyNyBAQAogIk0udG9saXN0KCkgLT4gbGlzdFxuXAogXG5cCiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIik7CitQeURvY19TVFJWQVIobWVtb3J5X2Nhc3RfZG9jLAorIk0uY2FzdChmb3JtYXRbLCBzaGFwZV0pIC0+IG1lbW9yeXZpZXdcblwKK1xuXAorQ2FzdCBhIG1lbW9yeXZpZXcgdG8gYSBuZXcgZm9ybWF0IG9yIHNoYXBlLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgbWVtb3J5X21ldGhvZHNbXSA9IHsKLSAgICB7InJlbGVhc2UiLCBtZW1vcnlfZXhpdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCi0gICAgeyJ0b2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKW1lbW9yeV90b2J5dGVzLCBNRVRIX05PQVJHUywgbWVtb3J5X3RvYnl0ZXNfZG9jfSwKLSAgICB7InRvbGlzdCIsIChQeUNGdW5jdGlvbiltZW1vcnlfdG9saXN0LCBNRVRIX05PQVJHUywgbWVtb3J5X3RvbGlzdF9kb2N9LAotICAgIHsiX19lbnRlcl9fIiwgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHU30sCi0gICAgeyJfX2V4aXRfXyIsIG1lbW9yeV9leGl0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHtOVUxMLCAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotc3RhdGljIHZvaWQKLW1lbW9yeV9kZWFsbG9jKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKLSAgICBkb19yZWxlYXNlKHNlbGYpOwotICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9yZXByKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoSVNfUkVMRUFTRUQoc2VsZikpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHJlbGVhc2VkIG1lbW9yeSBhdCAlcD4iLCBzZWxmKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1lbW9yeSBhdCAlcD4iLCBzZWxmKTsKLX0KLQotLyogU2VxdWVuY2UgbWV0aG9kcyAqLwotc3RhdGljIFB5X3NzaXplX3QKLW1lbW9yeV9sZW5ndGgoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQotewotICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKLSAgICByZXR1cm4gZ2V0X3NoYXBlMCgmc2VsZi0+dmlldyk7Ci19Ci0KLS8qIEFsdGVybmF0ZSB2ZXJzaW9uIG9mIG1lbW9yeV9zdWJjcmlwdCB0aGF0IG9ubHkgYWNjZXB0cyBpbmRpY2VzLgotICAgVXNlZCBieSBQeVNlcUl0ZXJfTmV3KCkuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9pdGVtKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfc3NpemVfdCByZXN1bHQpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihzZWxmLT52aWV3KTsKLQotICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwotICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltID09IDEpIHsKLSAgICAgICAgLyogUmV0dXJuIGEgYnl0ZXMgb2JqZWN0ICovCi0gICAgICAgIGNoYXIgKnB0cjsKLSAgICAgICAgcHRyID0gKGNoYXIgKil2aWV3LT5idWY7Ci0gICAgICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gZ2V0X3NoYXBlMCh2aWV3KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHJlc3VsdCA8IDApIHx8IChyZXN1bHQgPj0gZ2V0X3NoYXBlMCh2aWV3KSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIHB0ciArPSB2aWV3LT5pdGVtc2l6ZSAqIHJlc3VsdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbMF0gKiByZXN1bHQ7Ci0gICAgICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzICE9IE5VTEwgJiYKLSAgICAgICAgICAgIHZpZXctPnN1Ym9mZnNldHNbMF0gPj0gMCkgewotICAgICAgICAgICAgcHRyID0gKigoY2hhciAqKilwdHIpICsgdmlldy0+c3Vib2Zmc2V0c1swXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwdHIsIHZpZXctPml0ZW1zaXplKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBSZXR1cm4gYSBuZXcgbWVtb3J5LXZpZXcgb2JqZWN0ICovCi0gICAgICAgIFB5X2J1ZmZlciBuZXd2aWV3OwotICAgICAgICBtZW1zZXQoJm5ld3ZpZXcsIDAsIHNpemVvZihuZXd2aWV3KSk7Ci0gICAgICAgIC8qIFhYWDogIFRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgc28gaXQgYWN0dWFsbHkgcmV0dXJucyBhIHN1Yi12aWV3ICovCi0gICAgICAgIHJldHVybiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmbmV3dmlldyk7Ci0gICAgfQotfQotCi0vKgotICBtZW1bb2JqXSByZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGRhdGEgZm9yIG9uZSBlbGVtZW50IGlmCi0gICAgICAgICAgIG9iaiBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnkgdmlldyBvciBhbm90aGVyIG1lbW9yeS12aWV3IG9iamVjdAotICAgICAgICAgICBpZiBpdCBkb2VzIG5vdC4KLQotICAgICAgICAgICAwLWQgbWVtb3J5LXZpZXcgb2JqZWN0cyBjYW4gYmUgcmVmZXJlbmNlZCB1c2luZyAuLi4gb3IgKCkgYnV0Ci0gICAgICAgICAgIG5vdCB3aXRoIGFueXRoaW5nIGVsc2UuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfc3Vic2NyaXB0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKLXsKLSAgICBQeV9idWZmZXIgKnZpZXc7Ci0gICAgdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgCi0gICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7Ci0gICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgewotICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8Ci0gICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KT09MCkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewotICAgICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgTlVMTCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIG1lbW9yeV9pdGVtKHNlbGYsIHJlc3VsdCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgewotICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKLQotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBnZXRfc2hhcGUwKHZpZXcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIAotICAgICAgICBpZiAoc3RlcCA9PSAxICYmIHZpZXctPm5kaW0gPT0gMSkgewotICAgICAgICAgICAgUHlfYnVmZmVyIG5ld3ZpZXc7Ci0gICAgICAgICAgICB2b2lkICpuZXdidWYgPSAoY2hhciAqKSB2aWV3LT5idWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RhcnQgKiB2aWV3LT5pdGVtc2l6ZTsKLSAgICAgICAgICAgIGludCBuZXdmbGFncyA9IHZpZXctPnJlYWRvbmx5Ci0gICAgICAgICAgICAgICAgICAgID8gUHlCVUZfQ09OVElHX1JPIDogUHlCVUZfQ09OVElHOwotICAgIAotICAgICAgICAgICAgLyogWFhYIFRoZXJlIHNob3VsZCBiZSBhbiBBUEkgdG8gY3JlYXRlIGEgc3ViYnVmZmVyICovCi0gICAgICAgICAgICBpZiAodmlldy0+b2JqICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHZpZXctPm9iaiwgJm5ld3ZpZXcsIG5ld2ZsYWdzKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXd2aWV3ID0gKnZpZXc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuZXd2aWV3LmJ1ZiA9IG5ld2J1ZjsKLSAgICAgICAgICAgIG5ld3ZpZXcubGVuID0gc2xpY2VsZW5ndGggKiBuZXd2aWV3Lml0ZW1zaXplOwotICAgICAgICAgICAgbmV3dmlldy5mb3JtYXQgPSB2aWV3LT5mb3JtYXQ7Ci0gICAgICAgICAgICBuZXd2aWV3LnNoYXBlID0gJihuZXd2aWV3LnNtYWxsdGFibGVbMF0pOwotICAgICAgICAgICAgbmV3dmlldy5zaGFwZVswXSA9IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgbmV3dmlldy5zdHJpZGVzID0gJihuZXd2aWV3Lml0ZW1zaXplKTsKLSAgICAgICAgICAgIHJldHVybiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmbmV3dmlldyk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLCAKLSAgICAgICAga2V5LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotCi0vKiBOZWVkIHRvIHN1cHBvcnQgYXNzaWduaW5nIG1lbW9yeSBpZiB3ZSBjYW4gKi8KLXN0YXRpYyBpbnQKLW1lbW9yeV9hc3Nfc3ViKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5X3NzaXplX3Qgc3RhcnQsIGxlbiwgYnl0ZWxlbjsKLSAgICBQeV9idWZmZXIgc3JjdmlldzsKLSAgICBQeV9idWZmZXIgKnZpZXcgPSAmKHNlbGYtPnZpZXcpOwotICAgIGNoYXIgKnNyY2J1ZiwgKmRlc3RidWY7Ci0KLSAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7Ci0gICAgaWYgKHZpZXctPnJlYWRvbmx5KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY2Fubm90IG1vZGlmeSByZWFkLW9ubHkgbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZGVsZXRlIG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIHN0YXJ0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgTlVMTCk7Ci0gICAgICAgIGlmIChzdGFydCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoc3RhcnQgPCAwKSB7Ci0gICAgICAgICAgICBzdGFydCArPSBnZXRfc2hhcGUwKHZpZXcpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoc3RhcnQgPCAwKSB8fCAoc3RhcnQgPj0gZ2V0X3NoYXBlMCh2aWV3KSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgbGVuID0gMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3Qgc3RvcCwgc3RlcDsKLQotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBnZXRfc2hhcGUwKHZpZXcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmbGVuKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RlcCAhPSAxKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBpbmRleCBtZW1vcnkgdXNpbmcgXCIlLjIwMHNcIiIsIAotICAgICAgICAgICAga2V5LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHZhbHVlLCAmc3JjdmlldywgUHlCVUZfQ09OVElHX1JPKSA9PSAtMSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIFhYWCBzaG91bGQgd2UgYWxsb3cgYXNzaWdubWVudCBvZiBkaWZmZXJlbnQgaXRlbSBzaXplcwotICAgICAgIGFzIGxvbmcgYXMgdGhlIGJ5dGUgbGVuZ3RoIGlzIHRoZSBzYW1lPwotICAgICAgIChlLmcuIGFzc2lnbiAyIHNob3J0cyB0byBhIDQtYnl0ZSBzbGljZSkgKi8KLSAgICBpZiAoc3Jjdmlldy5pdGVtc2l6ZSAhPSB2aWV3LT5pdGVtc2l6ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIm1pc21hdGNoaW5nIGl0ZW0gc2l6ZXMgZm9yIFwiJS4yMDBzXCIgYW5kIFwiJS4yMDBzXCIiLCAKLSAgICAgICAgICAgIHZpZXctPm9iai0+b2JfdHlwZS0+dHBfbmFtZSwgc3Jjdmlldy5vYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0gICAgYnl0ZWxlbiA9IGxlbiAqIHZpZXctPml0ZW1zaXplOwotICAgIGlmIChieXRlbGVuICE9IHNyY3ZpZXcubGVuKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBtb2RpZnkgc2l6ZSBvZiBtZW1vcnl2aWV3IG9iamVjdCIpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0gICAgLyogRG8gdGhlIGFjdHVhbCBjb3B5ICovCi0gICAgZGVzdGJ1ZiA9IChjaGFyICopIHZpZXctPmJ1ZiArIHN0YXJ0ICogdmlldy0+aXRlbXNpemU7Ci0gICAgc3JjYnVmID0gKGNoYXIgKikgc3Jjdmlldy5idWY7Ci0gICAgaWYgKGRlc3RidWYgKyBieXRlbGVuIDwgc3JjYnVmIHx8IHNyY2J1ZiArIGJ5dGVsZW4gPCBkZXN0YnVmKQotICAgICAgICAvKiBObyBvdmVybGFwcGluZyAqLwotICAgICAgICBtZW1jcHkoZGVzdGJ1Ziwgc3JjYnVmLCBieXRlbGVuKTsKLSAgICBlbHNlCi0gICAgICAgIG1lbW1vdmUoZGVzdGJ1Ziwgc3JjYnVmLCBieXRlbGVuKTsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyY3ZpZXcpOwotICAgIHJldHVybiAwOwotCi1fZXJyb3I6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3Jjdmlldyk7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQotewotICAgIFB5X2J1ZmZlciB2diwgd3c7Ci0gICAgaW50IGVxdWFsID0gMDsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgdnYub2JqID0gTlVMTDsKLSAgICB3dy5vYmogPSBOVUxMOwotICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkKLSAgICAgICAgZ290byBfbm90aW1wbDsKLSAgICBpZiAoKFB5TWVtb3J5Vmlld19DaGVjayh2KSAmJiBJU19SRUxFQVNFRCh2KSkgfHwKLSAgICAgICAgKFB5TWVtb3J5Vmlld19DaGVjayh3KSAmJiBJU19SRUxFQVNFRCh3KSkpIHsKLSAgICAgICAgZXF1YWwgPSAodiA9PSB3KTsKLSAgICAgICAgZ290byBfZW5kOwotICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHYsICZ2diwgUHlCVUZfQ09OVElHX1JPKSA9PSAtMSkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIF9ub3RpbXBsOwotICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHcsICZ3dywgUHlCVUZfQ09OVElHX1JPKSA9PSAtMSkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIF9ub3RpbXBsOwotICAgIH0KLQotICAgIGlmICh2di5pdGVtc2l6ZSAhPSB3dy5pdGVtc2l6ZSB8fCB2di5sZW4gIT0gd3cubGVuKQotICAgICAgICBnb3RvIF9lbmQ7Ci0KLSAgICBlcXVhbCA9ICFtZW1jbXAodnYuYnVmLCB3dy5idWYsIHZ2Lmxlbik7Ci0KLV9lbmQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdnYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnd3KTsKLSAgICBpZiAoKGVxdWFsICYmIG9wID09IFB5X0VRKSB8fCAoIWVxdWFsICYmIG9wID09IFB5X05FKSkKLSAgICAgICAgcmVzID0gUHlfVHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IFB5X0ZhbHNlOwotICAgIFB5X0lOQ1JFRihyZXMpOwotICAgIHJldHVybiByZXM7Ci0KLV9ub3RpbXBsOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZ2KTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3dyk7Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci19Ci0KLQotc3RhdGljIGludAotbWVtb3J5X3RyYXZlcnNlKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCi17Ci0gICAgaWYgKHNlbGYtPnZpZXcub2JqICE9IE5VTEwpCi0gICAgICAgIFB5X1ZJU0lUKHNlbGYtPnZpZXcub2JqKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotbWVtb3J5X2NsZWFyKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZWxmLT52aWV3KTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi0vKiBBcyBtYXBwaW5nICovCi1zdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtZW1vcnlfYXNfbWFwcGluZyA9IHsKLSAgICAobGVuZnVuYyltZW1vcnlfbGVuZ3RoLCAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLwotICAgIChiaW5hcnlmdW5jKW1lbW9yeV9zdWJzY3JpcHQsICAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCi0gICAgKG9iam9iamFyZ3Byb2MpbWVtb3J5X2Fzc19zdWIsICAgICAgICAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCi19OwotCi1zdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbWVtb3J5X2FzX3NlcXVlbmNlID0gewotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLwotICAgICAgICAoc3NpemVhcmdmdW5jKW1lbW9yeV9pdGVtLCAgICAgICAgICAvKiBzcV9pdGVtICovCi19OwotCi0vKiBCdWZmZXIgbWV0aG9kcyAqLwotCi1zdGF0aWMgUHlCdWZmZXJQcm9jcyBtZW1vcnlfYXNfYnVmZmVyID0gewotICAgIChnZXRidWZmZXJwcm9jKW1lbW9yeV9nZXRidWYsICAgICAgICAgLyogYmZfZ2V0YnVmZmVyICovCi0gICAgKHJlbGVhc2VidWZmZXJwcm9jKW1lbW9yeV9yZWxlYXNlYnVmLCAvKiBiZl9yZWxlYXNlYnVmZmVyICovCisgICAgeyJyZWxlYXNlIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfcmVsZWFzZSwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCisgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCisgICAgeyJ0b2xpc3QiLCAgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9saXN0LCBNRVRIX05PQVJHUywgbWVtb3J5X3RvbGlzdF9kb2N9LAorICAgIHsiY2FzdCIsICAgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X2Nhc3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBtZW1vcnlfY2FzdF9kb2N9LAorICAgIHsiX19lbnRlcl9fIiwgICBtZW1vcnlfZW50ZXIsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7Il9fZXhpdF9fIiwgICAgbWVtb3J5X2V4aXQsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgIE5VTEx9CiB9OwogCiAKIFB5VHlwZU9iamVjdCBQeU1lbW9yeVZpZXdfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICJtZW1vcnl2aWV3IiwKLSAgICBzaXplb2YoUHlNZW1vcnlWaWV3T2JqZWN0KSwKLSAgICAwLAorICAgICJtZW1vcnl2aWV3IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBvZmZzZXRvZihQeU1lbW9yeVZpZXdPYmplY3QsIG9iX2FycmF5KSwgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICBzaXplb2YoUHlfc3NpemVfdCksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIChkZXN0cnVjdG9yKW1lbW9yeV9kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KQEAgLTg2Miw3ICsyOTU3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAmbWVtb3J5X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICZtZW1vcnlfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgKGhhc2hmdW5jKW1lbW9yeV9oYXNoLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwpAQCAtODczLDcgKzI5NjgsNyBAQAogICAgICh0cmF2ZXJzZXByb2MpbWVtb3J5X3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpbWVtb3J5X2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICBtZW1vcnlfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlNZW1vcnlWaWV3T2JqZWN0LCB3ZWFrcmVmbGlzdCksLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBtZW1vcnlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCBmMWE5ZjRiLi42MGRmMzAyIDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX21sIC0+IG1sX21ldGg7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihvcCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX3NlbGY7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKG9wKTsKIH0KIAogaW50CkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopb3ApIC0+IG1fbWwgLT4gbWxfZmxhZ3M7CisgICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhvcCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTE1MSw2ICsxNTEsNDEgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcobS0+bV9tbC0+bWxfbmFtZSk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittZXRoX2dldF9fcXVhbG5hbWVfXyhQeUNGdW5jdGlvbk9iamVjdCAqbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICAvKiBJZiBfX3NlbGZfXyBpcyBhIG1vZHVsZSBvciBOVUxMLCByZXR1cm4gbS5fX25hbWVfXworICAgICAgIChlLmcuIGxlbi5fX3F1YWxuYW1lX18gPT0gJ2xlbicpCisKKyAgICAgICBJZiBfX3NlbGZfXyBpcyBhIHR5cGUsIHJldHVybiBtLl9fc2VsZl9fLl9fcXVhbG5hbWVfXyArICcuJyArIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBkaWN0LmZyb21rZXlzLl9fcXVhbG5hbWVfXyA9PSAnZGljdC5mcm9ta2V5cycpCisKKyAgICAgICBPdGhlcndpc2UgcmV0dXJuIHR5cGUobS5fX3NlbGZfXykuX19xdWFsbmFtZV9fICsgJy4nICsgbS5fX25hbWVfXworICAgICAgIChlLmcuIFtdLmFwcGVuZC5fX3F1YWxuYW1lX18gPT0gJ2xpc3QuYXBwZW5kJykgKi8KKyAgICBQeU9iamVjdCAqdHlwZSwgKnR5cGVfcXVhbG5hbWUsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKKworICAgIGlmIChtLT5tX3NlbGYgPT0gTlVMTCB8fCBQeU1vZHVsZV9DaGVjayhtLT5tX3NlbGYpKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcobS0+bV9tbC0+bWxfbmFtZSk7CisKKyAgICB0eXBlID0gUHlUeXBlX0NoZWNrKG0tPm1fc2VsZikgPyBtLT5tX3NlbGYgOiAoUHlPYmplY3QqKVB5X1RZUEUobS0+bV9zZWxmKTsKKworICAgIHR5cGVfcXVhbG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHR5cGUsICZQeUlkX19fcXVhbG5hbWVfXyk7CisgICAgaWYgKHR5cGVfcXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0eXBlX3F1YWxuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiPG1ldGhvZD4uX19jbGFzc19fLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QiKTsKKyAgICAgICAgUHlfWERFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTLiVzIiwgdHlwZV9xdWFsbmFtZSwgbS0+bV9tbC0+bWxfbmFtZSk7CisgICAgUHlfREVDUkVGKHR5cGVfcXVhbG5hbWUpOworICAgIHJldHVybiByZXM7Cit9CisKIHN0YXRpYyBpbnQKIG1ldGhfdHJhdmVyc2UoUHlDRnVuY3Rpb25PYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewpAQCAtMTY0LDcgKzE5OSw3IEBACiB7CiAgICAgUHlPYmplY3QgKnNlbGY7CiAKLSAgICBzZWxmID0gbS0+bV9zZWxmOworICAgIHNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihtKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICBzZWxmID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoc2VsZik7CkBAIC0xNzQsNiArMjA5LDcgQEAKIHN0YXRpYyBQeUdldFNldERlZiBtZXRoX2dldHNldHMgW10gPSB7CiAgICAgeyJfX2RvY19fIiwgIChnZXR0ZXIpbWV0aF9nZXRfX2RvY19fLCAgTlVMTCwgTlVMTH0sCiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpbWV0aF9nZXRfX25hbWVfXywgTlVMTCwgTlVMTH0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKW1ldGhfZ2V0X19xdWFsbmFtZV9fLCBOVUxMLCBOVUxMfSwKICAgICB7Il9fc2VsZl9fIiwgKGdldHRlciltZXRoX2dldF9fc2VsZl9fLCBOVUxMLCBOVUxMfSwKICAgICB7MH0KIH07CkBAIC0yMDgsOCArMjQ0LDcgQEAKICAgICAgICAgIVB5Q0Z1bmN0aW9uX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeUNGdW5jdGlvbl9DaGVjayhvdGhlcikpCiAgICAgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYSA9IChQeUNGdW5jdGlvbk9iamVjdCAqKXNlbGY7CiAgICAgYiA9IChQeUNGdW5jdGlvbk9iamVjdCAqKW90aGVyOwpAQCAtMzAzLDYgKzMzOCwxNSBAQAogICAgICh2b2lkKVB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5Q0Z1bmN0aW9uX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlDRnVuY3Rpb25PYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUNGdW5jdGlvbk9iamVjdCkpOworfQorCiAvKiBQeUNGdW5jdGlvbl9OZXcoKSBpcyBub3cganVzdCBhIG1hY3JvIHRoYXQgY2FsbHMgUHlDRnVuY3Rpb25fTmV3RXgoKSwKICAgIGJ1dCBpdCdzIHBhcnQgb2YgdGhlIEFQSSBzbyB3ZSBuZWVkIHRvIGtlZXAgYSBmdW5jdGlvbiBhcm91bmQgdGhhdAogICAgZXhpc3RpbmcgQyBleHRlbnNpb25zIGNhbiBjYWxsLgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKaW5kZXggNTMzZGI0Ni4uMmYyYmQzNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYworKysgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCkBAIC0yNywzNiArMjcsNDUgQEAKIAogCiBQeU9iamVjdCAqCi1QeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKK1B5TW9kdWxlX05ld09iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU1vZHVsZU9iamVjdCAqbTsKLSAgICBQeU9iamVjdCAqbmFtZW9iajsKICAgICBtID0gUHlPYmplY3RfR0NfTmV3KFB5TW9kdWxlT2JqZWN0LCAmUHlNb2R1bGVfVHlwZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbS0+bWRfZGVmID0gTlVMTDsKICAgICBtLT5tZF9zdGF0ZSA9IE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIG0tPm1kX2RpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKG0tPm1kX2RpY3QgPT0gTlVMTCB8fCBuYW1lb2JqID09IE5VTEwpCisgICAgaWYgKG0tPm1kX2RpY3QgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lb2JqKSAhPSAwKQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX2RvY19fIiwgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgZ290byBmYWlsOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19wYWNrYWdlX18iLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIFB5T2JqZWN0X0dDX1RyYWNrKG0pOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltOwogCiAgZmFpbDoKLSAgICBQeV9YREVDUkVGKG5hbWVvYmopOwogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgorUHlNb2R1bGVfTmV3KGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICptb2R1bGU7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1vZHVsZSA9IFB5TW9kdWxlX05ld09iamVjdChuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG1vZHVsZTsKK30KKworCitQeU9iamVjdCAqCiBQeU1vZHVsZV9DcmVhdGUyKHN0cnVjdCBQeU1vZHVsZURlZiogbW9kdWxlLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQogewogICAgIFB5T2JqZWN0ICpkLCAqdiwgKm47CkBAIC0xNzUsMjQgKzE4NCwzNSBAQAogICAgIHJldHVybiBkOwogfQogCi1jb25zdCBjaGFyICoKLVB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKm0pCitQeU9iamVjdCoKK1B5TW9kdWxlX0dldE5hbWVPYmplY3QoUHlPYmplY3QgKm0pCiB7CiAgICAgUHlPYmplY3QgKmQ7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKS0+bWRfZGljdDsKICAgICBpZiAoZCA9PSBOVUxMIHx8Ci0gICAgICAgIChuYW1lb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbmFtZV9fIikpID09IE5VTEwgfHwKLSAgICAgICAgIVB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKKyAgICAgICAgKG5hbWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19uYW1lX18iKSkgPT0gTlVMTCB8fAorICAgICAgICAhUHlVbmljb2RlX0NoZWNrKG5hbWUpKQogICAgIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAibmFtZWxlc3MgbW9kdWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IGNoYXIgKgorUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QobSk7CisgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKG5hbWUpOyAgIC8qIG1vZHVsZSBkaWN0IGhhcyBzdGlsbCBhIHJlZmVyZW5jZSAqLworICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwogfQogCiBQeU9iamVjdCoKQEAgLTIyNSw3ICsyNDUsNyBAQAogICAgIGlmIChmaWxlb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHV0ZjggPSBfUHlVbmljb2RlX0FzU3RyaW5nKGZpbGVvYmopOwotICAgIFB5X0RFQ1JFRihmaWxlb2JqKTsKKyAgICBQeV9ERUNSRUYoZmlsZW9iaik7ICAgLyogbW9kdWxlIGRpY3QgaGFzIHN0aWxsIGEgcmVmZXJlbmNlICovCiAgICAgcmV0dXJuIHV0Zjg7CiB9CiAKQEAgLTI3MSw4ICsyOTEsOCBAQAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGQsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpOwotICAgICAgICAgICAgaWYgKHVbMF0gPT0gJ18nICYmIHVbMV0gIT0gJ18nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDApID09ICdfJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoa2V5LCAxKSAhPSAnXycpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzICE9IE5VTEwpCkBAIC0yODksOSArMzA5LDggQEAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChkLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmIFB5VW5pY29kZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KTsKLSAgICAgICAgICAgIGlmICh1WzBdICE9ICdfJwotICAgICAgICAgICAgICAgIHx8IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgIl9fYnVpbHRpbnNfXyIpICE9IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDApICE9ICdfJyB8fAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgIl9fYnVpbHRpbnNfXyIpICE9IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwpAQCAtMzUzLDIxICszNzIsNTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtb2R1bGVfcmVwcihQeU1vZHVsZU9iamVjdCAqbSkKIHsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgKnJlcHI7CisgICAgUHlPYmplY3QgKm5hbWUsICpmaWxlbmFtZSwgKnJlcHIsICpsb2FkZXIgPSBOVUxMOwogCi0gICAgbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUoKFB5T2JqZWN0ICopbSk7CisgICAgLyogU2VlIGlmIHRoZSBtb2R1bGUgaGFzIGFuIF9fbG9hZGVyX18uICBJZiBpdCBkb2VzLCBnaXZlIHRoZSBsb2FkZXIgdGhlCisgICAgICogZmlyc3Qgc2hvdCBhdCBwcm9kdWNpbmcgYSByZXByIGZvciB0aGUgbW9kdWxlLgorICAgICAqLworICAgIGlmIChtLT5tZF9kaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fbG9hZGVyX18iKTsKKyAgICB9CisgICAgaWYgKGxvYWRlciAhPSBOVUxMKSB7CisgICAgICAgIHJlcHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxvYWRlciwgIm1vZHVsZV9yZXByIiwgIihPKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKW0sIE5VTEwpOworICAgICAgICBpZiAocmVwciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogX19sb2FkZXJfXy5tb2R1bGVfcmVwcihtKSBkaWQgbm90IHByb3ZpZGUgdXMgd2l0aCBhIHJlcHIuICBOZXh0LCBzZWUgaWYKKyAgICAgKiB0aGUgbW9kdWxlIGhhcyBhbiBfX2ZpbGVfXy4gIElmIGl0IGRvZXNuJ3QgdGhlbiB1c2UgcmVwcihfX2xvYWRlcl9fKSBpZgorICAgICAqIGl0IGV4aXN0cywgb3RoZXJ3aXNlLCBqdXN0IHVzZSBtb2R1bGUuX19uYW1lX18uCisgICAgICovCisgICAgbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QoKFB5T2JqZWN0ICopbSk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBuYW1lID0gIj8iOworICAgICAgICBuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCI/IiwgMSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmlsZW5hbWUgPSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgoUHlPYmplY3QgKiltKTsKICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJyVzJyAoYnVpbHQtaW4pPiIsIG5hbWUpOworICAgICAgICAvKiBUaGVyZSdzIG5vIG0uX19maWxlX18sIHNvIGlmIHRoZXJlIHdhcyBhbiBfX2xvYWRlcl9fLCB1c2UgdGhhdCBpbgorICAgICAgICAgKiB0aGUgcmVwciwgb3RoZXJ3aXNlLCB0aGUgb25seSB0aGluZyB5b3UgY2FuIHVzZSBpcyBtLl9fbmFtZV9fCisgICAgICAgICAqLworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUj4iLCBuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiAoJVIpPiIsIG5hbWUsIGxvYWRlcik7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICclcycgZnJvbSAnJVUnPiIsIG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIC8qIEZpbmFsbHksIHVzZSBtLl9fZmlsZV9fICovCisgICAgZWxzZSB7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiBmcm9tICVSPiIsIG5hbWUsIGZpbGVuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICB9CisgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXByOwogfQogCkBAIC0zOTUsNiArNDQ3LDM1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittb2R1bGVfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKKworICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVjayhkaWN0KSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKHNlbGYpOworICAgICAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiX19kaXJfXyIsIG1vZHVsZV9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5zcGVjaWFsaXplZCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKKyAgICB7MH0KK307CisKIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAibW9kdWxlKG5hbWVbLCBkb2NdKVxuXApAQCAtNDMxLDcgKzUxMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtb2R1bGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBtb2R1bGVfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyNzhkMwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKm5zX2RpY3Q7Cit9IF9QeU5hbWVzcGFjZU9iamVjdDsKKworCitzdGF0aWMgUHlNZW1iZXJEZWYgbmFtZXNwYWNlX21lbWJlcnNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKF9QeU5hbWVzcGFjZU9iamVjdCwgbnNfZGljdCksIFJFQURPTkxZfSwKKyAgICB7TlVMTH0KK307CisKKworLyogTWV0aG9kcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorbmFtZXNwYWNlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqc2VsZjsKKworICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CisgICAgc2VsZiA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgX1B5TmFtZXNwYWNlT2JqZWN0ICpucyA9IChfUHlOYW1lc3BhY2VPYmplY3QgKilzZWxmOworICAgICAgICBucy0+bnNfZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKG5zLT5uc19kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihucyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworCitzdGF0aWMgaW50CituYW1lc3BhY2VfaW5pdChfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgLyogaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5ICovCisgICAgaWYgKGFyZ3MgIT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlPYmplY3RfU2l6ZShhcmdzKTsKKyAgICAgICAgaWYgKGFyZ2NvdW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBhcmdjb3VudDsKKyAgICAgICAgZWxzZSBpZiAoYXJnY291bnQgPiAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAibm8gcG9zaXRpb25hbCBhcmd1bWVudHMgZXhwZWN0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoa3dkcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gUHlEaWN0X1VwZGF0ZShucy0+bnNfZGljdCwga3dkcyk7Cit9CisKKworc3RhdGljIHZvaWQKK25hbWVzcGFjZV9kZWFsbG9jKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMpCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhucyk7CisgICAgUHlfQ0xFQVIobnMtPm5zX2RpY3QpOworICAgIFB5X1RZUEUobnMpLT50cF9mcmVlKChQeU9iamVjdCAqKW5zKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbmFtZXNwYWNlX3JlcHIoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBpbnQgaSwgbG9vcF9lcnJvciA9IDA7CisgICAgUHlPYmplY3QgKnBhaXJzID0gTlVMTCwgKmQgPSBOVUxMLCAqa2V5cyA9IE5VTEwsICprZXlzX2l0ZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwgKnBhaXJzcmVwciwgKnJlcHIgPSBOVUxMOworCisgICAgaSA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilucyk7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgICByZXR1cm4gaSA+IDAgPyBQeVVuaWNvZGVfRnJvbVN0cmluZygibmFtZXNwYWNlKC4uLikiKSA6IE5VTEw7CisgICAgfQorCisgICAgcGFpcnMgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChwYWlycyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZCA9ICgoX1B5TmFtZXNwYWNlT2JqZWN0ICopbnMpLT5uc19kaWN0OworICAgIGFzc2VydChkICE9IE5VTEwpOworICAgIFB5X0lOQ1JFRihkKTsKKworICAgIGtleXMgPSBQeURpY3RfS2V5cyhkKTsKKyAgICBpZiAoa2V5cyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeUxpc3RfU29ydChrZXlzKSAhPSAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAga2V5c19pdGVyID0gUHlPYmplY3RfR2V0SXRlcihrZXlzKTsKKyAgICBpZiAoa2V5c19pdGVyID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGtleXNfaXRlcikpICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5VW5pY29kZV9HRVRfU0laRShrZXkpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlLCAqaXRlbTsKKworICAgICAgICAgICAgdmFsdWUgPSBQeURpY3RfR2V0SXRlbShkLCBrZXkpOworICAgICAgICAgICAgYXNzZXJ0KHZhbHVlICE9IE5VTEwpOworCisgICAgICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTPSVSIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbG9vcF9lcnJvciA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb29wX2Vycm9yID0gUHlMaXN0X0FwcGVuZChwYWlycywgaXRlbSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmIChsb29wX2Vycm9yKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBzZXBhcmF0b3IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLCAiKTsKKyAgICBpZiAoc2VwYXJhdG9yID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBwYWlyc3JlcHIgPSBQeVVuaWNvZGVfSm9pbihzZXBhcmF0b3IsIHBhaXJzKTsKKyAgICBQeV9ERUNSRUYoc2VwYXJhdG9yKTsKKyAgICBpZiAocGFpcnNyZXByID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVTKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlPYmplY3QgKilucyktPm9iX3R5cGUtPnRwX25hbWUsIHBhaXJzcmVwcik7CisgICAgUHlfREVDUkVGKHBhaXJzcmVwcik7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocGFpcnMpOworICAgIFB5X1hERUNSRUYoZCk7CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICBQeV9YREVDUkVGKGtleXNfaXRlcik7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW5zKTsKKworICAgIHJldHVybiByZXByOworfQorCisKK3N0YXRpYyBpbnQKK25hbWVzcGFjZV90cmF2ZXJzZShfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChucy0+bnNfZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludAorbmFtZXNwYWNlX2NsZWFyKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMpCit7CisgICAgUHlfQ0xFQVIobnMtPm5zX2RpY3QpOworICAgIHJldHVybiAwOworfQorCisKK1B5RG9jX1NUUlZBUihuYW1lc3BhY2VfZG9jLAorIkEgc2ltcGxlIGF0dHJpYnV0ZS1iYXNlZCBuYW1lc3BhY2UuXG5cCitcblwKK25hbWVzcGFjZSgqKmt3YXJncykiKTsKKworUHlUeXBlT2JqZWN0IF9QeU5hbWVzcGFjZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm5hbWVzcGFjZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKF9QeU5hbWVzcGFjZU9iamVjdCksICAgICAgICAgICAgICAgICAvKiB0cF9zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKW5hbWVzcGFjZV9kZWFsbG9jLCAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKW5hbWVzcGFjZV9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbmFtZXNwYWNlX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW5hbWVzcGFjZV90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpbmFtZXNwYWNlX2NsZWFyLCAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG5hbWVzcGFjZV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKF9QeU5hbWVzcGFjZU9iamVjdCwgbnNfZGljdCksICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyluYW1lc3BhY2VfaW5pdCwgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAobmV3ZnVuYyluYW1lc3BhY2VfbmV3LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCitQeU9iamVjdCAqCitfUHlOYW1lc3BhY2VfTmV3KFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpucyA9IG5hbWVzcGFjZV9uZXcoJl9QeU5hbWVzcGFjZV9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAobnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoa3dkcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnM7CisgICAgaWYgKFB5RGljdF9VcGRhdGUoKChfUHlOYW1lc3BhY2VPYmplY3QgKilucyktPm5zX2RpY3QsIGt3ZHMpICE9IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5zOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggMjhiYjljMS4uOTQ5ZTdkYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0xLDUgKzEsNSBAQAogCi0vKiBHZW5lcmljIG9iamVjdCBvcGVyYXRpb25zOyBhbmQgaW1wbGVtZW50YXRpb24gb2YgTm9uZSAoTm9PYmplY3QpICovCisvKiBHZW5lcmljIG9iamVjdCBvcGVyYXRpb25zOyBhbmQgaW1wbGVtZW50YXRpb24gb2YgTm9uZSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKQEAgLTI5LDggKzI5LDYgQEAKIH0KICNlbmRpZiAvKiBQeV9SRUZfREVCVUcgKi8KIAotaW50IFB5X0RpdmlzaW9uV2FybmluZ0ZsYWc7Ci0KIC8qIE9iamVjdCBhbGxvY2F0aW9uIHJvdXRpbmVzIHVzZWQgYnkgTkVXT0JKIGFuZCBORVdWQVJPQkogbWFjcm9zLgogICAgVGhlc2UgYXJlIHVzZWQgYnkgdGhlIGluZGl2aWR1YWwgcm91dGluZXMgZm9yIG9iamVjdCBjcmVhdGlvbi4KICAgIERvIG5vdCBjYWxsIHRoZW0gb3RoZXJ3aXNlLCB0aGV5IGRvIG5vdCBpbml0aWFsaXplIHRoZSBvYmplY3QhICovCkBAIC0yOTcsOSArMjk1LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzKSkgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0OwotICAgICAgICAgICAgICAgIHQgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERShzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3NsYXNocmVwbGFjZSIpOworICAgICAgICAgICAgICAgIHQgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHMsICJ1dGYtOCIsICJiYWNrc2xhc2hyZXBsYWNlIik7CiAgICAgICAgICAgICAgICAgaWYgKHQgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0ID0gMDsKICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTM4MiwxMyArMzc4LDE5IEBACiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzIG9iamVjdCBhdCAlcD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwgdik7CiAgICAgcmVzID0gKCp2LT5vYl90eXBlLT50cF9yZXByKSh2KTsKLSAgICBpZiAocmVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVjayhyZXMpKSB7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXMpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiX19yZXByX18gcmV0dXJuZWQgbm9uLXN0cmluZyAodHlwZSAlLjIwMHMpIiwKICAgICAgICAgICAgICAgICAgICAgIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZuZGVmIFB5X0RFQlVHCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXMpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC00MDcsNiArNDA5LDEwIEBACiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8TlVMTD4iKTsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikpIHsKKyNpZm5kZWYgUHlfREVCVUcKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh2KSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgogICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTQyOCw2ICs0MzQsMTEgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUHlfREVCVUcKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNDQxLDExICs0NTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIHJlcHIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIFB5VW5pY29kZSBvYmplY3QgYnkgUHlPYmplY3RfUmVwciAqLwotICAgIGFzY2lpID0gUHlVbmljb2RlX0VuY29kZUFTQ0lJKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKSwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpLAotICAgICAgICAiYmFja3NsYXNocmVwbGFjZSIpOwotCisgICAgYXNjaWkgPSBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcocmVwciwgImJhY2tzbGFzaHJlcGxhY2UiKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgaWYgKGFzY2lpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDYzLDcgKzQ3MCw3IEBACiBQeU9iamVjdF9CeXRlcyhQeU9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqZnVuYzsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmJ5dGVzc3RyaW5nID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2J5dGVzX18pOwogCiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygiPE5VTEw+Iik7CkBAIC00NzMsNyArNDgwLDcgQEAKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQogCi0gICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICJfX2J5dGVzX18iLCAmYnl0ZXNzdHJpbmcpOworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCh2LCAmUHlJZF9fX2J5dGVzX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNzQ3LDYgKzc1NCwzMyBAQAogfQogCiBQeV9oYXNoX3QKK19QeV9IYXNoQnl0ZXModW5zaWduZWQgY2hhciAqcCwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgUHlfdWhhc2hfdCB4OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIC8qCisgICAgICBXZSBtYWtlIHRoZSBoYXNoIG9mIHRoZSBlbXB0eSBzdHJpbmcgYmUgMCwgcmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgIChwcmVmaXggXiBzdWZmaXgpLCBzaW5jZSB0aGlzIHNsaWdodGx5IG9iZnVzY2F0ZXMgdGhlIGhhc2ggc2VjcmV0CisgICAgKi8KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7CisjZW5kaWYKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHggPSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQucHJlZml4OworICAgIHggXj0gKFB5X3VoYXNoX3QpICpwIDw8IDc7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUiAqIHgpIF4gKFB5X3VoYXNoX3QpICpwKys7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgbGVuOworICAgIHggXj0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKKyAgICBpZiAoeCA9PSAtMSkKKyAgICAgICAgeCA9IC0yOworICAgIHJldHVybiB4OworfQorCitQeV9oYXNoX3QKIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZChQeU9iamVjdCAqdikKIHsKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAidW5oYXNoYWJsZSB0eXBlOiAnJS4yMDBzJyIsCkBAIC03ODgsNyArODIyLDcgQEAKICAgICBpZiAodyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBQeU9iamVjdF9HZXRBdHRyKHYsIHcpOwotICAgIFB5X1hERUNSRUYodyk7CisgICAgUHlfREVDUkVGKHcpOwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTgyMCw2ICs4NTQsNjIgQEAKICAgICByZXR1cm4gcmVzOwogfQogCitpbnQKK19QeU9iamVjdF9Jc0Fic3RyYWN0KFB5T2JqZWN0ICpvYmopCit7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCogaXNhYnN0cmFjdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2lzYWJzdHJhY3RtZXRob2RfXyk7CisKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgaXNhYnN0cmFjdCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2lzYWJzdHJhY3RtZXRob2RfXyk7CisgICAgaWYgKGlzYWJzdHJhY3QgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJlcyA9IFB5T2JqZWN0X0lzVHJ1ZShpc2Fic3RyYWN0KTsKKyAgICBQeV9ERUNSRUYoaXNhYnN0cmFjdCk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9HZXRBdHRyKHYsIG9uYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQKK19QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKnYsIF9QeV9JZGVudGlmaWVyICpuYW1lKQoreworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKm9uYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQobmFtZSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFvbmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0hhc0F0dHIodiwgb25hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUsIFB5T2JqZWN0ICp3KQoreworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKm9uYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQobmFtZSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFvbmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X1NldEF0dHIodiwgb25hbWUsIHcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0dldEF0dHIoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpuYW1lKQogewpAQCAtOTM4LDYgKzEwMjgsMTkgQEAKICAgICByZXR1cm4gb2JqOwogfQogCisvKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgYSBidWlsdGluIGZyb20gaXRzIG5hbWUgKi8KK1B5T2JqZWN0ICoKK19QeU9iamVjdF9HZXRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm1vZCwgKmF0dHI7CisgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOworICAgIGlmIChtb2QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYobW9kKTsKKyAgICByZXR1cm4gYXR0cjsKK30KKwogLyogSGVscGVyIHVzZWQgd2hlbiB0aGUgX19uZXh0X18gbWV0aG9kIGlzIHJlbW92ZWQgZnJvbSBhIHR5cGU6CiAgICB0cF9pdGVybmV4dCBpcyBuZXZlciBOVUxMIGFuZCBjYW4gYmUgc2FmZWx5IGNhbGxlZCB3aXRob3V0IGNoZWNraW5nCiAgICBvbiBldmVyeSBpdGVyYXRpb24uCkBAIC05ODYsNyArMTA4OSw2IEBACiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3JfZ2V0OwogICAgICAgICBpZiAoZiAhPSBOVUxMICYmIFB5RGVzY3JfSXNEYXRhKGRlc2NyKSkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilvYmotPm9iX3R5cGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogICAgIH0KQEAgLTEwMTcsNyArMTExOSw2IEBACiAgICAgICAgIHJlcyA9IFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KQEAgLTEwMjYsMTMgKzExMjcsMTIgQEAKIAogICAgIGlmIChmICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilQeV9UWVBFKG9iaikpOwotICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gZGVzY3I7Ci0gICAgICAgIC8qIGRlc2NyIHdhcyBhbHJlYWR5IGluY3JlZmVkIGFib3ZlICovCisgICAgICAgIGRlc2NyID0gTlVMTDsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KIApAQCAtMTA0MCw2ICsxMTQwLDcgQEAKICAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCiAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKICAgZG9uZToKKyAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTEwNjYsMTUgKzExNjcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwogCi0gICAgaWYgKHRwLT50cF9kaWN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSh0cCkgPCAwKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgIH0KKyAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCAmJiBQeVR5cGVfUmVhZHkodHApIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7CisgICAgUHlfWElOQ1JFRihkZXNjcik7CisKICAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgewogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX3NldDsKQEAgLTEwODcsMTMgKzExODgsMTAgQEAKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwogICAgICAgICBpZiAoZGljdHB0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBkaWN0ID0gKmRpY3RwdHI7Ci0gICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMICYmIHZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3Q7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlfVFlQRShvYmopLCBkaWN0cHRyLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOworICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKQEAgLTExMDIsOSArMTIwMCw5IEBACiAgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBuYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwgbmFtZSwgdmFsdWUpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCkBAIC0xMTI0LDYgKzEyMjIsNyBAQAogICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgorICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTEzNCw2ICsxMjMzLDMyIEBACiAgICAgcmV0dXJuIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KG9iaiwgbmFtZSwgdmFsdWUsIE5VTEwpOwogfQogCitpbnQKK1B5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY2Fubm90IGRlbGV0ZSBfX2RpY3RfXyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIl9fZGljdF9fIG11c3QgYmUgc2V0IHRvIGEgZGljdGlvbmFyeSwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICBQeV9YSU5DUkVGKHZhbHVlKTsKKyAgICAqZGljdHB0ciA9IHZhbHVlOworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKIAogLyogVGVzdCBhIHZhbHVlIHVzZWQgYXMgY29uZGl0aW9uLCBlLmcuLCBpbiBhIGZvciBvciBpZiBzdGF0ZW1lbnQuCiAgICBSZXR1cm4gLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKi8KQEAgLTExODYsNjYgKzEzMTEsNiBAQAogICAgIHJldHVybiB4LT5vYl90eXBlLT50cF9jYWxsICE9IE5VTEw7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHlPYmplY3RfRGlyKCkgaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyLgotICAgTWVyZ2UgdGhlIF9fZGljdF9fIG9mIGFjbGFzcyBpbnRvIGRpY3QsIGFuZCByZWN1cnNpdmVseSBhbHNvIGFsbAotICAgdGhlIF9fZGljdF9fcyBvZiBhY2xhc3MncyBiYXNlIGNsYXNzZXMuICBUaGUgb3JkZXIgb2YgbWVyZ2luZyBpc24ndAotICAgZGVmaW5lZCwgYXMgaXQncyBleHBlY3RlZCB0aGF0IG9ubHkgdGhlIGZpbmFsIHNldCBvZiBkaWN0IGtleXMgaXMKLSAgIGludGVyZXN0aW5nLgotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuCi0qLwotCi1zdGF0aWMgaW50Ci1tZXJnZV9jbGFzc19kaWN0KFB5T2JqZWN0KiBkaWN0LCBQeU9iamVjdCogYWNsYXNzKQotewotICAgIFB5T2JqZWN0ICpjbGFzc2RpY3Q7Ci0gICAgUHlPYmplY3QgKmJhc2VzOwotCi0gICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7Ci0gICAgYXNzZXJ0KGFjbGFzcyk7Ci0KLSAgICAvKiBNZXJnZSBpbiB0aGUgdHlwZSdzIGRpY3QgKGlmIGFueSkuICovCi0gICAgY2xhc3NkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhhY2xhc3MsICJfX2RpY3RfXyIpOwotICAgIGlmIChjbGFzc2RpY3QgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaW50IHN0YXR1cyA9IFB5RGljdF9VcGRhdGUoZGljdCwgY2xhc3NkaWN0KTsKLSAgICAgICAgUHlfREVDUkVGKGNsYXNzZGljdCk7Ci0gICAgICAgIGlmIChzdGF0dXMgPCAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIC8qIFJlY3Vyc2l2ZWx5IG1lcmdlIGluIHRoZSBiYXNlIHR5cGVzJyAoaWYgYW55KSBkaWN0cy4gKi8KLSAgICBiYXNlcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYWNsYXNzLCAiX19iYXNlc19fIik7Ci0gICAgaWYgKGJhc2VzID09IE5VTEwpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgYmFzZXMgaXMgYSByZWFsIHR1cGxlICovCi0gICAgICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICAgICAgbiA9IFB5U2VxdWVuY2VfU2l6ZShiYXNlcyk7IC8qIFRoaXMgYmV0dGVyIGJlIHJpZ2h0ICovCi0gICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIGludCBzdGF0dXM7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYmFzZXMsIGkpOwotICAgICAgICAgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGJhc2UpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQogCiAvKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciB3aXRob3V0IGFyZ3VtZW50czogcmV0dXJucyB0aGUgbG9jYWwgc2NvcGUuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI2OSwxNDAgKzEzMzQsNDMgQEAKICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeUxpc3RfU29ydChuYW1lcykpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIC8qIHRoZSBsb2NhbHMgZG9uJ3QgbmVlZCB0byBiZSBERUNSRUYnZCAqLwogICAgIHJldHVybiBuYW1lczsKIH0KIAotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgb2YgdHlwZSBvYmplY3RzOiByZXR1cm5zIF9fZGljdF9fIGFuZCBfX2Jhc2VzX18uCi0gICBXZSBkZWxpYmVyYXRlbHkgZG9uJ3Qgc3VjayB1cCBpdHMgX19jbGFzc19fLCBhcyBtZXRob2RzIGJlbG9uZ2luZyB0byB0aGUKLSAgIG1ldGFjbGFzcyB3b3VsZCBwcm9iYWJseSBiZSBtb3JlIGNvbmZ1c2luZyB0aGFuIGhlbHBmdWwuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLV9zcGVjaWFsaXplZF9kaXJfdHlwZShQeU9iamVjdCAqb2JqKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlEaWN0X05ldygpOwotCi0gICAgaWYgKGRpY3QgIT0gTlVMTCAmJiBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIG9iaikgPT0gMCkKLSAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7Ci0KLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIG9mIG1vZHVsZSBvYmplY3RzOiByZXR1cm5zIHRoZSBtb2R1bGUncyBfX2RpY3RfXy4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1fc3BlY2lhbGl6ZWRfZGlyX21vZHVsZShQeU9iamVjdCAqb2JqKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2RpY3RfXyIpOwotCi0gICAgaWYgKGRpY3QgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlEaWN0X0NoZWNrKGRpY3QpKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUob2JqKTsKLSAgICAgICAgICAgIGlmIChuYW1lKQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMuX19kaWN0X18gaXMgbm90IGEgZGljdGlvbmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciBvZiBnZW5lcmljIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18sIF9fY2xhc3NfXywKLSAgIGFuZCByZWN1cnNpdmVseSB1cCB0aGUgX19jbGFzc19fLl9fYmFzZXNfXyBjaGFpbi4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotX2dlbmVyaWNfZGlyKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICppdHNjbGFzcyA9IE5VTEw7Ci0KLSAgICAvKiBHZXQgX19kaWN0X18gKHdoaWNoIG1heSBvciBtYXkgbm90IGJlIGEgcmVhbCBkaWN0Li4uKSAqLwotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIH0KLSAgICBlbHNlIGlmICghUHlEaWN0X0NoZWNrKGRpY3QpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIENvcHkgX19kaWN0X18gdG8gYXZvaWQgbXV0YXRpbmcgaXQuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlEaWN0X0NvcHkoZGljdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICAgICAgZGljdCA9IHRlbXA7Ci0gICAgfQotCi0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIC8qIE1lcmdlIGluIGF0dHJzIHJlYWNoYWJsZSBmcm9tIGl0cyBjbGFzcy4gKi8KLSAgICBpdHNjbGFzcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19jbGFzc19fIik7Ci0gICAgaWYgKGl0c2NsYXNzID09IE5VTEwpCi0gICAgICAgIC8qIFhYWCh0b21lcik6IFBlcmhhcHMgZmFsbCBiYWNrIHRvIG9iai0+b2JfdHlwZSBpZiBubwotICAgICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18gZXhpc3RzPyAqLwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobWVyZ2VfY2xhc3NfZGljdChkaWN0LCBpdHNjbGFzcykgIT0gMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7Ci0gICAgLyogZmFsbCB0aHJvdWdoICovCi1lcnJvcjoKLSAgICBQeV9YREVDUkVGKGl0c2NsYXNzKTsKLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyOiBvYmplY3QgaW50cm9zcGVjdGlvbi4KLSAgIFRoaXMgY2FsbHMgb25lIG9mIHRoZSBhYm92ZSBzcGVjaWFsaXplZCB2ZXJzaW9ucyBpZiBubyBfX2Rpcl9fIG1ldGhvZAotICAgZXhpc3RzLiAqLworLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXI6IG9iamVjdCBpbnRyb3NwZWN0aW9uLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKIF9kaXJfb2JqZWN0KFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkaXJfc3RyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGlyZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgIl9fZGlyX18iLCAmZGlyX3N0cik7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKnNvcnRlZDsKKyAgICBfUHlfSURFTlRJRklFUihfX2Rpcl9fKTsKKyAgICBQeU9iamVjdCAqZGlyZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19kaXJfXyk7CiAKICAgICBhc3NlcnQob2JqKTsKICAgICBpZiAoZGlyZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qIHVzZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICovCi0gICAgICAgIGlmIChQeU1vZHVsZV9DaGVjayhvYmopKQotICAgICAgICAgICAgcmVzdWx0ID0gX3NwZWNpYWxpemVkX2Rpcl9tb2R1bGUob2JqKTsKLSAgICAgICAgZWxzZSBpZiAoUHlUeXBlX0NoZWNrKG9iaikpCi0gICAgICAgICAgICByZXN1bHQgPSBfc3BlY2lhbGl6ZWRfZGlyX3R5cGUob2JqKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gX2dlbmVyaWNfZGlyKG9iaik7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QgZG9lcyBub3QgcHJvdmlkZSBfX2Rpcl9fIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogdXNlIF9fZGlyX18gKi8KLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhkaXJmdW5jLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGRpcmZ1bmMpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAvKiByZXN1bHQgbXVzdCBiZSBhIGxpc3QgKi8KLSAgICAgICAgLyogWFhYKGdicmFuZGwpOiBjb3VsZCBhbHNvIGNoZWNrIGlmIGFsbCBpdGVtcyBhcmUgc3RyaW5ncyAqLwotICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayhyZXN1bHQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Rpcl9fKCkgbXVzdCByZXR1cm4gYSBsaXN0LCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgICAgICB9CisgICAgLyogdXNlIF9fZGlyX18gKi8KKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGRpcmZ1bmMsIE5VTEwpOworICAgIFB5X0RFQ1JFRihkaXJmdW5jKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJldHVybiBzb3J0ZWQocmVzdWx0KSAqLworICAgIHNvcnRlZCA9IFB5U2VxdWVuY2VfTGlzdChyZXN1bHQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChzb3J0ZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TGlzdF9Tb3J0KHNvcnRlZCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNvcnRlZCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNvcnRlZDsKIH0KIAogLyogSW1wbGVtZW50YXRpb24gb2YgZGlyKCkgLS0gaWYgb2JqIGlzIE5VTEwsIHJldHVybnMgdGhlIG5hbWVzIGluIHRoZSBjdXJyZW50CkBAIC0xNDEyLDMxICsxMzgwLDEzIEBACiBQeU9iamVjdCAqCiBQeU9iamVjdF9EaXIoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqIHJlc3VsdDsKLQotICAgIGlmIChvYmogPT0gTlVMTCkKLSAgICAgICAgLyogbm8gb2JqZWN0IC0tIGludHJvc3BlY3QgdGhlIGxvY2FscyAqLwotICAgICAgICByZXN1bHQgPSBfZGlyX2xvY2FscygpOwotICAgIGVsc2UKLSAgICAgICAgLyogb2JqZWN0IC0tIGludHJvc3BlY3QgdGhlIG9iamVjdCAqLwotICAgICAgICByZXN1bHQgPSBfZGlyX29iamVjdChvYmopOwotCi0gICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMIHx8IFB5TGlzdF9DaGVjayhyZXN1bHQpKTsKLQotICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBQeUxpc3RfU29ydChyZXN1bHQpICE9IDApIHsKLSAgICAgICAgLyogc29ydGluZyB0aGUgbGlzdCBmYWlsZWQgKi8KLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gKG9iaiA9PSBOVUxMKSA/IF9kaXJfbG9jYWxzKCkgOiBfZGlyX29iamVjdChvYmopOwogfQogCiAvKgotTm9PYmplY3QgaXMgdXNhYmxlIGFzIGEgbm9uLU5VTEwgdW5kZWZpbmVkIHZhbHVlLCB1c2VkIGJ5IHRoZSBtYWNybyBOb25lLgorTm9uZSBpcyBhIG5vbi1OVUxMIHVuZGVmaW5lZCB2YWx1ZS4KIFRoZXJlIGlzIChhbmQgc2hvdWxkIGJlISkgbm8gd2F5IHRvIGNyZWF0ZSBvdGhlciBvYmplY3RzIG9mIHRoaXMgdHlwZSwKIHNvIHRoZXJlIGlzIGV4YWN0bHkgb25lICh3aGljaCBpcyBpbmRlc3RydWN0aWJsZSwgYnkgdGhlIHdheSkuCi0oWFhYIFRoaXMgdHlwZSBhbmQgdGhlIHR5cGUgb2YgTm90SW1wbGVtZW50ZWQgYmVsb3cgc2hvdWxkIGJlIHVuaWZpZWQuKQogKi8KIAogLyogQVJHU1VTRUQgKi8KQEAgLTE0NTYsNiArMTQwNiw1OCBAQAogICAgIFB5X0ZhdGFsRXJyb3IoImRlYWxsb2NhdGluZyBOb25lIik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitub25lX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIHx8IChrd2FyZ3MgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIk5vbmVUeXBlIHRha2VzIG5vIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK25vbmVfYm9vbChQeU9iamVjdCAqdikKK3sKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBub25lX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG9zaXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWJzb2x1dGUgKi8KKyAgICAoaW5xdWlyeSlub25lX2Jvb2wsICAgICAgICAgLyogbmJfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnZlcnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9hdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yZW1haW5kZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2luZGV4ICovCit9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5Tm9uZV9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCkBAIC0xNDY4LDEwICsxNDcwLDM0IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCiAgICAgbm9uZV9yZXByLCAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgICZub25lX2FzX251bWJlciwgICAgLyp0cF9hc19udW1iZXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyAqLworICAgIG5vbmVfbmV3LCAgICAgICAgICAgLyp0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0IF9QeV9Ob25lU3RydWN0ID0gewpAQCAtMTQ4OCw2ICsxNTE0LDE2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJOb3RJbXBsZW1lbnRlZCIpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbm90aW1wbGVtZW50ZWRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgfHwgKGt3YXJncyAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiTm90SW1wbGVtZW50ZWRUeXBlIHRha2VzIG5vIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworfQorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5Tm90SW1wbGVtZW50ZWRfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJOb3RJbXBsZW1lbnRlZFR5cGUiLApAQCAtMTUwMyw2ICsxNTM5LDMwIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jICovCisgICAgbm90aW1wbGVtZW50ZWRfbmV3LCAvKnRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X05vdEltcGxlbWVudGVkU3RydWN0ID0gewpAQCAtMTU4NSw2ICsxNjQ1LDkgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVByb3BlcnR5X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBwcm9wZXJ0eSB0eXBlIik7CiAKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZfUHlNYW5hZ2VkQnVmZmVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBtYW5hZ2VkIGJ1ZmZlciB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeU1lbW9yeVZpZXdfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1lbW9yeXZpZXcgdHlwZSIpOwogCkBAIC0xNjQ1LDYgKzE3MDgsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5WmlwX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSB6aXAgdHlwZSIpOwogCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmX1B5TmFtZXNwYWNlX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBuYW1lc3BhY2UgdHlwZSIpOworCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlDYXBzdWxlX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBjYXBzdWxlIHR5cGUiKTsKIApAQCAtMTgxMCw2ICsxODc2LDE4IEBACiAgICAgUHlNZW1fRlJFRShwKTsKIH0KIAordm9pZAorX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlDRnVuY3Rpb25fRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlGcmFtZV9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5TWV0aG9kX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeVR1cGxlX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKK30KIAogLyogVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0byBjb250cm9sIGluZmluaXRlIHJlY3Vyc2lvbiBpbiByZXByLCBzdHIsIHByaW50LAogICAgZXRjLiAgQ29udGFpbmVyIG9iamVjdHMgdGhhdCBtYXkgcmVjdXJzaXZlbHkgY29udGFpbiB0aGVtc2VsdmVzLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDM5MTYyNjIuLjYyMjVlYmIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTIsNiArMiwxMyBAQAogCiAjaWZkZWYgV0lUSF9QWU1BTExPQwogCisjaWZkZWYgSEFWRV9NTUFQCisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2lmZGVmIE1BUF9BTk9OWU1PVVMKKyAgI2RlZmluZSBBUkVOQVNfVVNFX01NQVAKKyAjZW5kaWYKKyNlbmRpZgorCiAjaWZkZWYgV0lUSF9WQUxHUklORAogI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CiAKQEAgLTc1LDcgKzgyLDggQEAKICAqIEFsbG9jYXRpb24gc3RyYXRlZ3kgYWJzdHJhY3Q6CiAgKgogICogRm9yIHNtYWxsIHJlcXVlc3RzLCB0aGUgYWxsb2NhdG9yIHN1Yi1hbGxvY2F0ZXMgPEJpZz4gYmxvY2tzIG9mIG1lbW9yeS4KLSAqIFJlcXVlc3RzIGdyZWF0ZXIgdGhhbiAyNTYgYnl0ZXMgYXJlIHJvdXRlZCB0byB0aGUgc3lzdGVtJ3MgYWxsb2NhdG9yLgorICogUmVxdWVzdHMgZ3JlYXRlciB0aGFuIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIGJ5dGVzIGFyZSByb3V0ZWQgdG8gdGhlCisgKiBzeXN0ZW0ncyBhbGxvY2F0b3IuCiAgKgogICogU21hbGwgcmVxdWVzdHMgYXJlIGdyb3VwZWQgaW4gc2l6ZSBjbGFzc2VzIHNwYWNlZCA4IGJ5dGVzIGFwYXJ0LCBkdWUKICAqIHRvIHRoZSByZXF1aXJlZCB2YWxpZCBhbGlnbm1lbnQgb2YgdGhlIHJldHVybmVkIGFkZHJlc3MuIFJlcXVlc3RzIG9mCkBAIC0xMDcsMTAgKzExNSwxMSBAQAogICogICAgICAgNTctNjQgICAgICAgICAgICAgICAgICAgNjQgICAgICAgICAgICAgICAgICAgICAgIDcKICAqICAgICAgIDY1LTcyICAgICAgICAgICAgICAgICAgIDcyICAgICAgICAgICAgICAgICAgICAgICA4CiAgKiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIC4uLgotICogICAgICAyNDEtMjQ4ICAgICAgICAgICAgICAgICAyNDggICAgICAgICAgICAgICAgICAgICAgMzAKLSAqICAgICAgMjQ5LTI1NiAgICAgICAgICAgICAgICAgMjU2ICAgICAgICAgICAgICAgICAgICAgIDMxCisgKiAgICAgIDQ5Ny01MDQgICAgICAgICAgICAgICAgIDUwNCAgICAgICAgICAgICAgICAgICAgICA2MgorICogICAgICA1MDUtNTEyICAgICAgICAgICAgICAgICA1MTIgICAgICAgICAgICAgICAgICAgICAgNjMKICAqCi0gKiAgICAgIDAsIDI1NyBhbmQgdXA6IHJvdXRlZCB0byB0aGUgdW5kZXJseWluZyBhbGxvY2F0b3IuCisgKiAgICAgIDAsIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEICsgMSBhbmQgdXA6IHJvdXRlZCB0byB0aGUgdW5kZXJseWluZworICogICAgICBhbGxvY2F0b3IuCiAgKi8KIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCkBAIC0xMjksNyArMTM4LDYgQEAKICAqLwogI2RlZmluZSBBTElHTk1FTlQgICAgICAgICAgICAgICA4ICAgICAgICAgICAgICAgLyogbXVzdCBiZSAyXk4gKi8KICNkZWZpbmUgQUxJR05NRU5UX1NISUZUICAgICAgICAgMwotI2RlZmluZSBBTElHTk1FTlRfTUFTSyAgICAgICAgICAoQUxJR05NRU5UIC0gMSkKIAogLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gc2l6ZSBjbGFzcyBJLCBhcyBhIHVpbnQuICovCiAjZGVmaW5lIElOREVYMlNJWkUoSSkgKCgodWludCkoSSkgKyAxKSA8PCBBTElHTk1FTlRfU0hJRlQpCkBAIC0xMzksMTQgKzE0NywxNyBAQAogICogc21hbGwgZW5vdWdoIGluIG9yZGVyIHRvIHVzZSBwcmVhbGxvY2F0ZWQgbWVtb3J5IHBvb2xzLiBZb3UgY2FuIHR1bmUKICAqIHRoaXMgdmFsdWUgYWNjb3JkaW5nIHRvIHlvdXIgYXBwbGljYXRpb24gYmVoYXZpb3VyIGFuZCBtZW1vcnkgbmVlZHMuCiAgKgorICogTm90ZTogYSBzaXplIHRocmVzaG9sZCBvZiA1MTIgZ3VhcmFudGVlcyB0aGF0IG5ld2x5IGNyZWF0ZWQgZGljdGlvbmFyaWVzCisgKiB3aWxsIGJlIGFsbG9jYXRlZCBmcm9tIHByZWFsbG9jYXRlZCBtZW1vcnkgcG9vbHMgb24gNjQtYml0LgorICoKICAqIFRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQ6Ci0gKiAgICAgIDEpIEFMSUdOTUVOVCA8PSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA8PSAyNTYKKyAqICAgICAgMSkgQUxJR05NRU5UIDw9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDw9IDUxMgogICogICAgICAyKSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCBpcyBldmVubHkgZGl2aXNpYmxlIGJ5IEFMSUdOTUVOVAogICoKICAqIEFsdGhvdWdoIG5vdCByZXF1aXJlZCwgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgc3BhY2UgZWZmaWNpZW5jeSwKICAqIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgaXMgc2V0IHRvIGEgcG93ZXIgb2YgMi4KICAqLwotI2RlZmluZSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCAyNTYKKyNkZWZpbmUgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgNTEyCiAjZGVmaW5lIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyAgIChTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCAvIEFMSUdOTUVOVCkKIAogLyoKQEAgLTE3NCwxNSArMTg1LDE1IEBACiAvKgogICogVGhlIGFsbG9jYXRvciBzdWItYWxsb2NhdGVzIDxCaWc+IGJsb2NrcyBvZiBtZW1vcnkgKGNhbGxlZCBhcmVuYXMpIGFsaWduZWQKICAqIG9uIGEgcGFnZSBib3VuZGFyeS4gVGhpcyBpcyBhIHJlc2VydmVkIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBmb3IgdGhlCi0gKiBjdXJyZW50IHByb2Nlc3MgKG9idGFpbmVkIHRocm91Z2ggYSBtYWxsb2MgY2FsbCkuIEluIG5vIHdheSB0aGlzIG1lYW5zCi0gKiB0aGF0IHRoZSBtZW1vcnkgYXJlbmFzIHdpbGwgYmUgdXNlZCBlbnRpcmVseS4gQSBtYWxsb2MoPEJpZz4pIGlzIHVzdWFsbHkKLSAqIGFuIGFkZHJlc3MgcmFuZ2UgcmVzZXJ2YXRpb24gZm9yIDxCaWc+IGJ5dGVzLCB1bmxlc3MgYWxsIHBhZ2VzIHdpdGhpbiB0aGlzCi0gKiBzcGFjZSBhcmUgcmVmZXJlbmNlZCBzdWJzZXF1ZW50bHkuIFNvIG1hbGxvYydpbmcgYmlnIGJsb2NrcyBhbmQgbm90IHVzaW5nCi0gKiB0aGVtIGRvZXMgbm90IG1lYW4gIndhc3RpbmcgbWVtb3J5Ii4gSXQncyBhbiBhZGRyZXNzYWJsZSByYW5nZSB3YXN0YWdlLi4uCisgKiBjdXJyZW50IHByb2Nlc3MgKG9idGFpbmVkIHRocm91Z2ggYSBtYWxsb2MoKS9tbWFwKCkgY2FsbCkuIEluIG5vIHdheSB0aGlzCisgKiBtZWFucyB0aGF0IHRoZSBtZW1vcnkgYXJlbmFzIHdpbGwgYmUgdXNlZCBlbnRpcmVseS4gQSBtYWxsb2MoPEJpZz4pIGlzCisgKiB1c3VhbGx5IGFuIGFkZHJlc3MgcmFuZ2UgcmVzZXJ2YXRpb24gZm9yIDxCaWc+IGJ5dGVzLCB1bmxlc3MgYWxsIHBhZ2VzIHdpdGhpbgorICogdGhpcyBzcGFjZSBhcmUgcmVmZXJlbmNlZCBzdWJzZXF1ZW50bHkuIFNvIG1hbGxvYydpbmcgYmlnIGJsb2NrcyBhbmQgbm90CisgKiB1c2luZyB0aGVtIGRvZXMgbm90IG1lYW4gIndhc3RpbmcgbWVtb3J5Ii4gSXQncyBhbiBhZGRyZXNzYWJsZSByYW5nZQorICogd2FzdGFnZS4uLgogICoKLSAqIFRoZXJlZm9yZSwgYWxsb2NhdGluZyBhcmVuYXMgd2l0aCBtYWxsb2MgaXMgbm90IG9wdGltYWwsIGJlY2F1c2UgdGhlcmUgaXMKLSAqIHNvbWUgYWRkcmVzcyBzcGFjZSB3YXN0YWdlLCBidXQgdGhpcyBpcyB0aGUgbW9zdCBwb3J0YWJsZSB3YXkgdG8gcmVxdWVzdAotICogbWVtb3J5IGZyb20gdGhlIHN5c3RlbSBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMuCisgKiBBcmVuYXMgYXJlIGFsbG9jYXRlZCB3aXRoIG1tYXAoKSBvbiBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeQorICogbWFwcGluZ3MgdG8gcmVkdWNlIGhlYXAgZnJhZ21lbnRhdGlvbi4KICAqLwogI2RlZmluZSBBUkVOQV9TSVpFICAgICAgICAgICAgICAoMjU2IDw8IDEwKSAgICAgLyogMjU2S0IgKi8KIApAQCAtMzAyLDE0ICszMTMsMTIgQEAKICAgICBzdHJ1Y3QgYXJlbmFfb2JqZWN0KiBwcmV2YXJlbmE7CiB9OwogCi0jdW5kZWYgIFJPVU5EVVAKLSNkZWZpbmUgUk9VTkRVUCh4KSAgICAgICAgICAgICAgKCgoeCkgKyBBTElHTk1FTlRfTUFTSykgJiB+QUxJR05NRU5UX01BU0spCi0jZGVmaW5lIFBPT0xfT1ZFUkhFQUQgICAgICAgICAgIFJPVU5EVVAoc2l6ZW9mKHN0cnVjdCBwb29sX2hlYWRlcikpCisjZGVmaW5lIFBPT0xfT1ZFUkhFQUQgICBfUHlfU0laRV9ST1VORF9VUChzaXplb2Yoc3RydWN0IHBvb2xfaGVhZGVyKSwgQUxJR05NRU5UKQogCiAjZGVmaW5lIERVTU1ZX1NJWkVfSURYICAgICAgICAgIDB4ZmZmZiAgLyogc2l6ZSBjbGFzcyBvZiBuZXdseSBjYWNoZWQgcG9vbHMgKi8KIAogLyogUm91bmQgcG9pbnRlciBQIGRvd24gdG8gdGhlIGNsb3Nlc3QgcG9vbC1hbGlnbmVkIGFkZHJlc3MgPD0gUCwgYXMgYSBwb29scCAqLwotI2RlZmluZSBQT09MX0FERFIoUCkgKChwb29scCkoKHVwdHIpKFApICYgfih1cHRyKVBPT0xfU0laRV9NQVNLKSkKKyNkZWZpbmUgUE9PTF9BRERSKFApICgocG9vbHApX1B5X0FMSUdOX0RPV04oKFApLCBQT09MX1NJWkUpKQogCiAvKiBSZXR1cm4gdG90YWwgbnVtYmVyIG9mIGJsb2NrcyBpbiBwb29sIG9mIHNpemUgaW5kZXggSSwgYXMgYSB1aW50LiAqLwogI2RlZmluZSBOVU1CTE9DS1MoSSkgKCh1aW50KShQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAvIElOREVYMlNJWkUoSSkpCkBAIC00NDAsNiArNDQ5LDkgQEAKICAgICAsIFBUKDQ4KSwgUFQoNDkpLCBQVCg1MCksIFBUKDUxKSwgUFQoNTIpLCBQVCg1MyksIFBUKDU0KSwgUFQoNTUpCiAjaWYgTkJfU01BTExfU0laRV9DTEFTU0VTID4gNTYKICAgICAsIFBUKDU2KSwgUFQoNTcpLCBQVCg1OCksIFBUKDU5KSwgUFQoNjApLCBQVCg2MSksIFBUKDYyKSwgUFQoNjMpCisjaWYgTkJfU01BTExfU0laRV9DTEFTU0VTID4gNjQKKyNlcnJvciAiTkJfU01BTExfU0laRV9DTEFTU0VTIHNob3VsZCBiZSBsZXNzIHRoYW4gNjQiCisjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNjQgKi8KICNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA1NiAqLwogI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDQ4ICovCiAjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNDAgKi8KQEAgLTUwOCwxMiArNTIwLDEwIEBACiAvKiBOdW1iZXIgb2YgYXJlbmFzIGFsbG9jYXRlZCB0aGF0IGhhdmVuJ3QgYmVlbiBmcmVlKCknZC4gKi8KIHN0YXRpYyBzaXplX3QgbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkID0gMDsKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAvKiBUb3RhbCBudW1iZXIgb2YgdGltZXMgbWFsbG9jKCkgY2FsbGVkIHRvIGFsbG9jYXRlIGFuIGFyZW5hLiAqLwogc3RhdGljIHNpemVfdCBudGltZXNfYXJlbmFfYWxsb2NhdGVkID0gMDsKIC8qIEhpZ2ggd2F0ZXIgbWFyayAobWF4IHZhbHVlIGV2ZXIgc2VlbikgZm9yIG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZC4gKi8KIHN0YXRpYyBzaXplX3QgbmFyZW5hc19oaWdod2F0ZXIgPSAwOwotI2VuZGlmCiAKIC8qIEFsbG9jYXRlIGEgbmV3IGFyZW5hLiAgSWYgd2UgcnVuIG91dCBvZiBtZW1vcnksIHJldHVybiBOVUxMLiAgRWxzZQogICogYWxsb2NhdGUgYSBuZXcgYXJlbmEsIGFuZCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgYW4gYXJlbmFfb2JqZWN0CkBAIC01MjUsMTAgKzUzNSwxMiBAQAogewogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCisgICAgdm9pZCAqYWRkcmVzczsKKyAgICBpbnQgZXJyOwogCiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cygpOworICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgaWYgKHVudXNlZF9hcmVuYV9vYmplY3RzID09IE5VTEwpIHsKICAgICAgICAgdWludCBpOwpAQCAtNTc3LDggKzU4OSwxNSBAQAogICAgIGFyZW5hb2JqID0gdW51c2VkX2FyZW5hX29iamVjdHM7CiAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhcmVuYW9iai0+bmV4dGFyZW5hOwogICAgIGFzc2VydChhcmVuYW9iai0+YWRkcmVzcyA9PSAwKTsKLSAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKW1hbGxvYyhBUkVOQV9TSVpFKTsKLSAgICBpZiAoYXJlbmFvYmotPmFkZHJlc3MgPT0gMCkgeworI2lmZGVmIEFSRU5BU19VU0VfTU1BUAorICAgIGFkZHJlc3MgPSBtbWFwKE5VTEwsIEFSRU5BX1NJWkUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCk7CisgICAgZXJyID0gKGFkZHJlc3MgPT0gTUFQX0ZBSUxFRCk7CisjZWxzZQorICAgIGFkZHJlc3MgPSBtYWxsb2MoQVJFTkFfU0laRSk7CisgICAgZXJyID0gKGFkZHJlc3MgPT0gMCk7CisjZW5kaWYKKyAgICBpZiAoZXJyKSB7CiAgICAgICAgIC8qIFRoZSBhbGxvY2F0aW9uIGZhaWxlZDogcmV0dXJuIE5VTEwgYWZ0ZXIgcHV0dGluZyB0aGUKICAgICAgICAgICogYXJlbmFvYmogYmFjay4KICAgICAgICAgICovCkBAIC01ODYsMTMgKzYwNSwxMiBAQAogICAgICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodXB0cilhZGRyZXNzOwogCiAgICAgKytuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICArK250aW1lc19hcmVuYV9hbGxvY2F0ZWQ7CiAgICAgaWYgKG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCA+IG5hcmVuYXNfaGlnaHdhdGVyKQogICAgICAgICBuYXJlbmFzX2hpZ2h3YXRlciA9IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKLSNlbmRpZgogICAgIGFyZW5hb2JqLT5mcmVlcG9vbHMgPSBOVUxMOwogICAgIC8qIHBvb2xfYWRkcmVzcyA8LSBmaXJzdCBwb29sLWFsaWduZWQgYWRkcmVzcyBpbiB0aGUgYXJlbmEKICAgICAgICBuZnJlZXBvb2xzIDwtIG51bWJlciBvZiB3aG9sZSBwb29scyB0aGF0IGZpdCBhZnRlciBhbGlnbm1lbnQgKi8KQEAgLTEwNTQsNyArMTA3MiwxMSBAQAogICAgICAgICAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYW87CiAKICAgICAgICAgICAgICAgICAvKiBGcmVlIHRoZSBlbnRpcmUgYXJlbmEuICovCisjaWZkZWYgQVJFTkFTX1VTRV9NTUFQCisgICAgICAgICAgICAgICAgbXVubWFwKCh2b2lkICopYW8tPmFkZHJlc3MsIEFSRU5BX1NJWkUpOworI2Vsc2UKICAgICAgICAgICAgICAgICBmcmVlKCh2b2lkICopYW8tPmFkZHJlc3MpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgYW8tPmFkZHJlc3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hcmsgdW5hc3NvY2lhdGVkICovCiAgICAgICAgICAgICAgICAgLS1uYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7CiAKQEAgLTE2OTQsMTcgKzE3MTYsMTkgQEAKICAgICB9CiB9CiAKKyNlbmRpZiAgLyogUFlNQUxMT0NfREVCVUcgKi8KKwogc3RhdGljIHNpemVfdAotcHJpbnRvbmUoY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCitwcmludG9uZShGSUxFICpvdXQsIGNvbnN0IGNoYXIqIG1zZywgc2l6ZV90IHZhbHVlKQogewogICAgIGludCBpLCBrOwogICAgIGNoYXIgYnVmWzEwMF07CiAgICAgc2l6ZV90IG9yaWd2YWx1ZSA9IHZhbHVlOwogCi0gICAgZnB1dHMobXNnLCBzdGRlcnIpOworICAgIGZwdXRzKG1zZywgb3V0KTsKICAgICBmb3IgKGkgPSAoaW50KXN0cmxlbihtc2cpOyBpIDwgMzU7ICsraSkKLSAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOwotICAgIGZwdXRjKCc9Jywgc3RkZXJyKTsKKyAgICAgICAgZnB1dGMoJyAnLCBvdXQpOworICAgIGZwdXRjKCc9Jywgb3V0KTsKIAogICAgIC8qIFdyaXRlIHRoZSB2YWx1ZSB3aXRoIGNvbW1hcy4gKi8KICAgICBpID0gMjI7CkBAIC0xNzI1LDE3ICsxNzQ5LDMzIEBACiAKICAgICB3aGlsZSAoaSA+PSAwKQogICAgICAgICBidWZbaS0tXSA9ICcgJzsKLSAgICBmcHV0cyhidWYsIHN0ZGVycik7CisgICAgZnB1dHMoYnVmLCBvdXQpOwogCiAgICAgcmV0dXJuIG9yaWd2YWx1ZTsKIH0KIAotLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgordm9pZAorX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhGSUxFICpvdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJsb2NrX25hbWUsIGludCBudW1fYmxvY2tzLCBzaXplX3Qgc2l6ZW9mX2Jsb2NrKQoreworICAgIGNoYXIgYnVmMVsxMjhdOworICAgIGNoYXIgYnVmMlsxMjhdOworICAgIFB5T1Nfc25wcmludGYoYnVmMSwgc2l6ZW9mKGJ1ZjEpLAorICAgICAgICAgICAgICAgICAgIiVkICVzcyAqICV6ZCBieXRlcyBlYWNoIiwKKyAgICAgICAgICAgICAgICAgIG51bV9ibG9ja3MsIGJsb2NrX25hbWUsIHNpemVvZl9ibG9jayk7CisgICAgUHlPU19zbnByaW50ZihidWYyLCBzaXplb2YoYnVmMiksCisgICAgICAgICAgICAgICAgICAiJTQ4cyAiLCBidWYxKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZjIsIG51bV9ibG9ja3MgKiBzaXplb2ZfYmxvY2spOworfQorCisjaWZkZWYgV0lUSF9QWU1BTExPQworCisvKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gIm91dCIgYWJvdXQgdGhlIHN0YXRlIG9mIHB5bWFsbG9jJ3Mgc3RydWN0dXJlcy4KICAqIEluIFB5X0RFQlVHIG1vZGUsIGFsc28gcGVyZm9ybSBzb21lIGV4cGVuc2l2ZSBpbnRlcm5hbCBjb25zaXN0ZW5jeQogICogY2hlY2tzLgogICovCiB2b2lkCi1fUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyh2b2lkKQorX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQogewogICAgIHVpbnQgaTsKICAgICBjb25zdCB1aW50IG51bWNsYXNzZXMgPSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA+PiBBTElHTk1FTlRfU0hJRlQ7CkBAIC0xNzY0LDcgKzE4MDQsNyBAQAogICAgIHNpemVfdCB0b3RhbDsKICAgICBjaGFyIGJ1ZlsxMjhdOwogCi0gICAgZnByaW50ZihzdGRlcnIsICJTbWFsbCBibG9jayB0aHJlc2hvbGQgPSAlZCwgaW4gJXUgc2l6ZSBjbGFzc2VzLlxuIiwKKyAgICBmcHJpbnRmKG91dCwgIlNtYWxsIGJsb2NrIHRocmVzaG9sZCA9ICVkLCBpbiAldSBzaXplIGNsYXNzZXMuXG4iLAogICAgICAgICAgICAgU01BTExfUkVRVUVTVF9USFJFU0hPTEQsIG51bWNsYXNzZXMpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWNsYXNzZXM7ICsraSkKQEAgLTE3NzUsNyArMTgxNSw2IEBACiAgICAgICogd2lsbCBiZSBsaXZpbmcgaW4gZnVsbCBwb29scyAtLSB3b3VsZCBiZSBhIHNoYW1lIHRvIG1pc3MgdGhlbS4KICAgICAgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4YXJlbmFzOyArK2kpIHsKLSAgICAgICAgdWludCBwb29sc2luYXJlbmE7CiAgICAgICAgIHVpbnQgajsKICAgICAgICAgdXB0ciBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CiAKQEAgLTE3ODQsNyArMTgyMyw2IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmFyZW5hcyArPSAxOwogCi0gICAgICAgIHBvb2xzaW5hcmVuYSA9IGFyZW5hc1tpXS5udG90YWxwb29sczsKICAgICAgICAgbnVtZnJlZXBvb2xzICs9IGFyZW5hc1tpXS5uZnJlZXBvb2xzOwogCiAgICAgICAgIC8qIHJvdW5kIHVwIHRvIHBvb2wgYWxpZ25tZW50ICovCkBAIC0xODIwLDEwICsxODU4LDEwIEBACiAgICAgfQogICAgIGFzc2VydChuYXJlbmFzID09IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCk7CiAKLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGZwdXRjKCdcbicsIG91dCk7CiAgICAgZnB1dHMoImNsYXNzICAgc2l6ZSAgIG51bSBwb29scyAgIGJsb2NrcyBpbiB1c2UgIGF2YWlsIGJsb2Nrc1xuIgogICAgICAgICAgICItLS0tLSAgIC0tLS0gICAtLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS1cbiIsCi0gICAgICAgICAgc3RkZXJyKTsKKyAgICAgICAgICBvdXQpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWNsYXNzZXM7ICsraSkgewogICAgICAgICBzaXplX3QgcCA9IG51bXBvb2xzW2ldOwpAQCAtMTgzNCw3ICsxODcyLDcgQEAKICAgICAgICAgICAgIGFzc2VydChiID09IDAgJiYgZiA9PSAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJTV1ICU2dSAiCisgICAgICAgIGZwcmludGYob3V0LCAiJTV1ICU2dSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiJTExIiBQWV9GT1JNQVRfU0laRV9UICJ1ICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlMTUiIFBZX0ZPUk1BVF9TSVpFX1QgInUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIiUxMyIgUFlfRk9STUFUX1NJWkVfVCAidVxuIiwKQEAgLTE4NDQsMzUgKzE4ODIsMzYgQEAKICAgICAgICAgcG9vbF9oZWFkZXJfYnl0ZXMgKz0gcCAqIFBPT0xfT1ZFUkhFQUQ7CiAgICAgICAgIHF1YW50aXphdGlvbiArPSBwICogKChQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAlIHNpemUpOwogICAgIH0KLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwotICAgICh2b2lkKXByaW50b25lKCIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwotCi0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGFsbG9jYXRlZCB0b3RhbCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyBhbGxvY2F0ZWQgY3VycmVudCIsIG5hcmVuYXMpOworICAgIGZwdXRjKCdcbicsIG91dCk7CisjaWZkZWYgUFlNQUxMT0NfREVCVUcKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOworI2VuZGlmCisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGFsbG9jYXRlZCBjdXJyZW50IiwgbmFyZW5hcyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IGFyZW5hcyAqICVkIGJ5dGVzL2FyZW5hIiwKICAgICAgICAgbmFyZW5hcywgQVJFTkFfU0laRSk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoYnVmLCBuYXJlbmFzICogQVJFTkFfU0laRSk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCBidWYsIG5hcmVuYXMgKiBBUkVOQV9TSVpFKTsKIAotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKIAotICAgIHRvdGFsID0gcHJpbnRvbmUoIiMgYnl0ZXMgaW4gYWxsb2NhdGVkIGJsb2NrcyIsIGFsbG9jYXRlZF9ieXRlcyk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgaW4gYXZhaWxhYmxlIGJsb2NrcyIsIGF2YWlsYWJsZV9ieXRlcyk7CisgICAgdG90YWwgPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGluIGFsbG9jYXRlZCBibG9ja3MiLCBhbGxvY2F0ZWRfYnl0ZXMpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgaW4gYXZhaWxhYmxlIGJsb2NrcyIsIGF2YWlsYWJsZV9ieXRlcyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICIldSB1bnVzZWQgcG9vbHMgKiAlZCBieXRlcyIsIG51bWZyZWVwb29scywgUE9PTF9TSVpFKTsKLSAgICB0b3RhbCArPSBwcmludG9uZShidWYsIChzaXplX3QpbnVtZnJlZXBvb2xzICogUE9PTF9TSVpFKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsIGJ1ZiwgKHNpemVfdCludW1mcmVlcG9vbHMgKiBQT09MX1NJWkUpOwogCi0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBwb29sIGhlYWRlcnMiLCBwb29sX2hlYWRlcl9ieXRlcyk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBxdWFudGl6YXRpb24iLCBxdWFudGl6YXRpb24pOwotICAgIHRvdGFsICs9IHByaW50b25lKCIjIGJ5dGVzIGxvc3QgdG8gYXJlbmEgYWxpZ25tZW50IiwgYXJlbmFfYWxpZ25tZW50KTsKLSAgICAodm9pZClwcmludG9uZSgiVG90YWwiLCB0b3RhbCk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBsb3N0IHRvIHBvb2wgaGVhZGVycyIsIHBvb2xfaGVhZGVyX2J5dGVzKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gcXVhbnRpemF0aW9uIiwgcXVhbnRpemF0aW9uKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gYXJlbmEgYWxpZ25tZW50IiwgYXJlbmFfYWxpZ25tZW50KTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICJUb3RhbCIsIHRvdGFsKTsKIH0KIAotI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLworI2VuZGlmIC8qICNpZmRlZiBXSVRIX1BZTUFMTE9DICovCiAKICNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKIC8qIE1ha2UgdGhpcyBmdW5jdGlvbiBsYXN0IHNvIGdjYyB3b24ndCBpbmxpbmUgaXQgc2luY2UgdGhlIGRlZmluaXRpb24gaXMKZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCBjZWJjY2ZmLi4yMTRiNDU1IDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC0xLDYgKzEsNyBAQAogLyogUmFuZ2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogLyogU3VwcG9ydCBvYmplY3RzIHdob3NlIGxlbmd0aCBpcyA+IFBZX1NTSVpFX1RfTUFYLgogCkBAIC02MTAsNiArNjExLDEzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfSVRFUlNFQVJDSF9DT05UQUlOUyk7CiB9CiAKKy8qIENvbXBhcmUgdHdvIHJhbmdlIG9iamVjdHMuICBSZXR1cm4gMSBmb3IgZXF1YWwsIDAgZm9yIG5vdCBlcXVhbAorICAgYW5kIC0xIG9uIGVycm9yLiAgVGhlIGFsZ29yaXRobSBpcyByb3VnaGx5IHRoZSBDIGVxdWl2YWxlbnQgb2YKKworICAgaWYgcjAgaXMgcjE6CisgICAgICAgcmV0dXJuIFRydWUKKyAgIGlmIGxlbihyMCkgIT0gbGVuKHIxKToKKyAgICAgICByZXR1cm4gRmFsc2UKKyAgIGlmIG5vdCBsZW4ocjApOgorICAgICAgIHJldHVybiBUcnVlCisgICBpZiByMC5zdGFydCAhPSByMS5zdGFydDoKKyAgICAgICByZXR1cm4gRmFsc2UKKyAgIGlmIGxlbihyMCkgPT0gMToKKyAgICAgICByZXR1cm4gVHJ1ZQorICAgcmV0dXJuIHIwLnN0ZXAgPT0gcjEuc3RlcAorKi8KK3N0YXRpYyBpbnQKK3JhbmdlX2VxdWFscyhyYW5nZW9iamVjdCAqcjAsIHJhbmdlb2JqZWN0ICpyMSkKK3sKKyAgICBpbnQgY21wX3Jlc3VsdDsKKyAgICBQeU9iamVjdCAqb25lOworCisgICAgaWYgKHIwID09IHIxKQorICAgICAgICByZXR1cm4gMTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5sZW5ndGgsIHIxLT5sZW5ndGgsIFB5X0VRKTsKKyAgICAvKiBSZXR1cm4gRmFsc2Ugb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAxKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfTm90KHIwLT5sZW5ndGgpOworICAgIC8qIFJldHVybiBUcnVlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+c3RhcnQsIHIxLT5zdGFydCwgUHlfRVEpOworICAgIC8qIFJldHVybiBGYWxzZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDEpCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoIW9uZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPmxlbmd0aCwgb25lLCBQeV9FUSk7CisgICAgUHlfREVDUkVGKG9uZSk7CisgICAgLyogUmV0dXJuIFRydWUgb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5zdGVwLCByMS0+c3RlcCwgUHlfRVEpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmFuZ2VfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIVB5UmFuZ2VfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgUHlfTkU6CisgICAgY2FzZSBQeV9FUToKKyAgICAgICAgcmVzdWx0ID0gcmFuZ2VfZXF1YWxzKChyYW5nZW9iamVjdCopc2VsZiwgKHJhbmdlb2JqZWN0KilvdGhlcik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG9wID09IFB5X05FKQorICAgICAgICAgICAgcmVzdWx0ID0gIXJlc3VsdDsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgY2FzZSBQeV9MRToKKyAgICBjYXNlIFB5X0dFOgorICAgIGNhc2UgUHlfTFQ6CisgICAgY2FzZSBQeV9HVDoKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogSGFzaCBmdW5jdGlvbiBmb3IgcmFuZ2Ugb2JqZWN0cy4gIFJvdWdoIEMgZXF1aXZhbGVudCBvZgorCisgICBpZiBub3QgbGVuKHIpOgorICAgICAgIHJldHVybiBoYXNoKChsZW4ociksIE5vbmUsIE5vbmUpKQorICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgcmV0dXJuIGhhc2goKGxlbihyKSwgci5zdGFydCwgTm9uZSkpCisgICByZXR1cm4gaGFzaCgobGVuKHIpLCByLnN0YXJ0LCByLnN0ZXApKQorKi8KK3N0YXRpYyBQeV9oYXNoX3QKK3JhbmdlX2hhc2gocmFuZ2VvYmplY3QgKnIpCit7CisgICAgUHlPYmplY3QgKnQ7CisgICAgUHlfaGFzaF90IHJlc3VsdCA9IC0xOworICAgIGludCBjbXBfcmVzdWx0OworCisgICAgdCA9IFB5VHVwbGVfTmV3KDMpOworICAgIGlmICghdCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0lOQ1JFRihyLT5sZW5ndGgpOworICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMCwgci0+bGVuZ3RoKTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfTm90KHItPmxlbmd0aCk7CisgICAgaWYgKGNtcF9yZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZW5kOworICAgIGlmIChjbXBfcmVzdWx0ID09IDEpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMSwgUHlfTm9uZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMiwgUHlfTm9uZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqb25lOworICAgICAgICBQeV9JTkNSRUYoci0+c3RhcnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDEsIHItPnN0YXJ0KTsKKyAgICAgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgICAgICBpZiAoIW9uZSkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHItPmxlbmd0aCwgb25lLCBQeV9FUSk7CisgICAgICAgIFB5X0RFQ1JFRihvbmUpOworICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDIsIFB5X05vbmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHItPnN0ZXApOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAyLCByLT5zdGVwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQgPSBQeU9iamVjdF9IYXNoKHQpOworICBlbmQ6CisgICAgUHlfREVDUkVGKHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiByYW5nZV9jb3VudChyYW5nZW9iamVjdCAqciwgUHlPYmplY3QgKm9iKQogewpAQCAtNzUwLDYgKzg4MiwxMyBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlNZW1iZXJEZWYgcmFuZ2VfbWVtYmVyc1tdID0geworICAgIHsic3RhcnQiLCAgIFRfT0JKRUNUX0VYLCAgICBvZmZzZXRvZihyYW5nZW9iamVjdCwgc3RhcnQpLCAgIFJFQURPTkxZfSwKKyAgICB7InN0b3AiLCAgICBUX09CSkVDVF9FWCwgICAgb2Zmc2V0b2YocmFuZ2VvYmplY3QsIHN0b3ApLCAgICBSRUFET05MWX0sCisgICAgeyJzdGVwIiwgICAgVF9PQkpFQ1RfRVgsICAgIG9mZnNldG9mKHJhbmdlb2JqZWN0LCBzdGVwKSwgICAgUkVBRE9OTFl9LAorICAgIHswfQorfTsKKwogUHlUeXBlT2JqZWN0IFB5UmFuZ2VfVHlwZSA9IHsKICAgICAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAgICAgInJhbmdlIiwgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KQEAgLTc2NCw3ICs5MDMsNyBAQAogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAgICAgJnJhbmdlX2FzX3NlcXVlbmNlLCAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAgICAgJnJhbmdlX2FzX21hcHBpbmcsICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgICAgIChoYXNoZnVuYylyYW5nZV9oYXNoLCAgIC8qIHRwX2hhc2ggKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAvKiB0cF9nZXRhdHRybyAqLwpAQCAtNzc0LDEyICs5MTMsMTIgQEAKICAgICAgICAgcmFuZ2VfZG9jLCAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgICAgIHJhbmdlX3JpY2hjb21wYXJlLCAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgICAgIHJhbmdlX2l0ZXIsICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICAgICAgcmFuZ2VfbWV0aG9kcywgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgICAgIHJhbmdlX21lbWJlcnMsICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtODI2LDkgKzk2NSw1OSBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAgICAgICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZWl0ZXJfcmVkdWNlKHJhbmdlaXRlcm9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqc3RhcnQ9TlVMTCwgKnN0b3A9TlVMTCwgKnN0ZXA9TlVMTDsKKyAgICBQeU9iamVjdCAqcmFuZ2U7CisKKyAgICAvKiBjcmVhdGUgYSByYW5nZSBvYmplY3QgZm9yIHBpY2tsaW5nICovCisgICAgc3RhcnQgPSBQeUxvbmdfRnJvbUxvbmcoci0+c3RhcnQpOworICAgIGlmIChzdGFydCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICBzdG9wID0gUHlMb25nX0Zyb21Mb25nKHItPnN0YXJ0ICsgci0+bGVuICogci0+c3RlcCk7CisgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgc3RlcCA9IFB5TG9uZ19Gcm9tTG9uZyhyLT5zdGVwKTsKKyAgICBpZiAoc3RlcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICByYW5nZSA9IChQeU9iamVjdCopbWFrZV9yYW5nZV9vYmplY3QoJlB5UmFuZ2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgc3RvcCwgc3RlcCk7CisgICAgaWYgKHJhbmdlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIC8qIHJldHVybiB0aGUgcmVzdWx0ICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTilpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgcmFuZ2UsIHItPmluZGV4KTsKK2VycjoKKyAgICBQeV9YREVDUkVGKHN0YXJ0KTsKKyAgICBQeV9YREVDUkVGKHN0b3ApOworICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZWl0ZXJfc2V0c3RhdGUocmFuZ2VpdGVyb2JqZWN0ICpyLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgbG9uZyBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHItPmxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgci0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHJhbmdlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pcmFuZ2VpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXJhbmdlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilyYW5nZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtOTU3LDkgKzExNDYsNTEgQEAKICAgICByZXR1cm4gUHlOdW1iZXJfU3VidHJhY3Qoci0+bGVuLCByLT5pbmRleCk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb25ncmFuZ2VpdGVyX3JlZHVjZShsb25ncmFuZ2VpdGVyb2JqZWN0ICpyKQoreworICAgIFB5T2JqZWN0ICpwcm9kdWN0LCAqc3RvcD1OVUxMOworICAgIFB5T2JqZWN0ICpyYW5nZTsKKworICAgIC8qIGNyZWF0ZSBhIHJhbmdlIG9iamVjdCBmb3IgcGlja2xpbmcuICBNdXN0IGNhbGN1bGF0ZSB0aGUgInN0b3AiIHZhbHVlICovCisgICAgcHJvZHVjdCA9IFB5TnVtYmVyX011bHRpcGx5KHItPmxlbiwgci0+c3RlcCk7CisgICAgaWYgKHByb2R1Y3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RvcCA9IFB5TnVtYmVyX0FkZChyLT5zdGFydCwgcHJvZHVjdCk7CisgICAgUHlfREVDUkVGKHByb2R1Y3QpOworICAgIGlmIChzdG9wID09ICBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoci0+c3RhcnQpOworICAgIFB5X0lOQ1JFRihyLT5zdGVwKTsKKyAgICByYW5nZSA9ICAoUHlPYmplY3QqKW1ha2VfcmFuZ2Vfb2JqZWN0KCZQeVJhbmdlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+c3RhcnQsIHN0b3AsIHItPnN0ZXApOworICAgIGlmIChyYW5nZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihyLT5zdGFydCk7CisgICAgICAgIFB5X0RFQ1JFRihzdG9wKTsKKyAgICAgICAgUHlfREVDUkVGKHItPnN0ZXApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiByZXR1cm4gdGhlIHJlc3VsdCAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pTyIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHJhbmdlLCByLT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsb25ncmFuZ2VpdGVyX3NldHN0YXRlKGxvbmdyYW5nZWl0ZXJvYmplY3QgKnIsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9DTEVBUihyLT5pbmRleCk7CisgICAgci0+aW5kZXggPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYoci0+aW5kZXgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgbG9uZ3JhbmdlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbG9uZ3JhbmdlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilsb25ncmFuZ2VpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zZXRvYmplY3QuYyBiL09iamVjdHMvc2V0b2JqZWN0LmMKaW5kZXggZDg0MDFmNC4uYzQ4NGRjZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zZXRvYmplY3QuYworKysgYi9PYmplY3RzL3NldG9iamVjdC5jCkBAIC04Niw3ICs4Niw3IEBACiAgICAgcmVnaXN0ZXIgaW50IGNtcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGtleSkKICAgICAgICAgcmV0dXJuIGVudHJ5OwpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgICAgIHNvLT5sb29rdXAgPSBzZXRfbG9va2tleTsKICAgICAgICAgcmV0dXJuIHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwogICAgIH0KLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGtleSkKICAgICAgICAgcmV0dXJuIGVudHJ5OwpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwogICAgIHJlZ2lzdGVyIHNldGVudHJ5ICplbnRyeTsKIAotICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlbnRyeS0+a2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwpAQCAtMzg2LDcgKzM4Niw3IEBACiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBuX3VzZWQ7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTc5LDExICs1NzksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9yZXByKFB5U2V0T2JqZWN0ICpzbykKIHsKLSAgICBQeU9iamVjdCAqa2V5cywgKnJlc3VsdD1OVUxMOwotICAgIFB5X1VOSUNPREUgKnU7CisgICAgUHlPYmplY3QgKnJlc3VsdD1OVUxMLCAqa2V5cywgKmxpc3RyZXByLCAqdG1wOwogICAgIGludCBzdGF0dXMgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0Kilzbyk7Ci0gICAgUHlPYmplY3QgKmxpc3RyZXByOwotICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKIAogICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICBpZiAoc3RhdHVzIDwgMCkKQEAgLTYwMSwyOSArNTk4LDI0IEBACiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCisgICAgLyogcmVwcihrZXlzKVsxOi0xXSAqLwogICAgIGxpc3RyZXByID0gUHlPYmplY3RfUmVwcihrZXlzKTsKICAgICBQeV9ERUNSRUYoa2V5cyk7CiAgICAgaWYgKGxpc3RyZXByID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBuZXdzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKGxpc3RyZXByKTsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbmV3c2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAgICAgKnUrKyA9ICd7JzsKLSAgICAgICAgLyogT21pdCB0aGUgYnJhY2tldHMgZnJvbSB0aGUgbGlzdHJlcHIgKi8KLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUsIFB5VW5pY29kZV9BU19VTklDT0RFKGxpc3RyZXByKSsxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGxpc3RyZXByKS0yKTsKLSAgICAgICAgdSArPSBuZXdzaXplLTI7Ci0gICAgICAgICp1KysgPSAnfSc7Ci0gICAgfQorICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGlzdHJlcHIsIDEsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpc3RyZXByKS0xKTsKICAgICBQeV9ERUNSRUYobGlzdHJlcHIpOwotICAgIGlmIChQeV9UWVBFKHNvKSAhPSAmUHlTZXRfVHlwZSkgewotICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVVKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNvKS0+dHBfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSB0bXA7Ci0gICAgfQorICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGxpc3RyZXByID0gdG1wOworCisgICAgaWYgKFB5X1RZUEUoc28pICE9ICZQeVNldF9UeXBlKQorICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoeyVVfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNvKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdHJlcHIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoInslVX0iLCBsaXN0cmVwcik7CisgICAgUHlfREVDUkVGKGxpc3RyZXByKTsKIGRvbmU6CiAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCopc28pOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02ODIsNyArNjc0LDcgQEAKICAgICBzZXRlbnRyeSAqZW50cnk7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTc3NSw3ICs3NjcsNyBAQAogICAgIGlmIChzby0+aGFzaCAhPSAtMSkKICAgICAgICAgcmV0dXJuIHNvLT5oYXNoOwogCi0gICAgaGFzaCAqPSBQeVNldF9HRVRfU0laRShzZWxmKSArIDE7CisgICAgaGFzaCAqPSAoUHlfdWhhc2hfdClQeVNldF9HRVRfU0laRShzZWxmKSArIDE7CiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7CiAgICAgICAgIC8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoCiAgICAgICAgICAgIHZhbHVlcy4gIFRoZSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHVzZSBjYXNlcyBoYXZlIG1hbnkKQEAgLTc4NSw3ICs3NzcsNyBAQAogICAgICAgICBoID0gZW50cnktPmhhc2g7CiAgICAgICAgIGhhc2ggXj0gKGggXiAoaCA8PCAxNikgXiA4OTg2OTc0N1VMKSAgKiAzNjQ0Nzk4MTY3VUw7CiAgICAgfQotICAgIGhhc2ggPSBoYXNoICogNjkwNjlVTCArIDkwNzEzMzkyM1VMOworICAgIGhhc2ggPSBoYXNoICogNjkwNjlVICsgOTA3MTMzOTIzVUw7CiAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgIGhhc2ggPSA1OTA5MjM3MTNVTDsKICAgICBzby0+aGFzaCA9IGhhc2g7CkBAIC04MjcsOCArODE5LDUxIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICpzZXRpdGVyX2l0ZXJuZXh0KHNldGl0ZXJvYmplY3QgKnNpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NldGl0ZXJfcmVkdWNlKHNldGl0ZXJvYmplY3QgKnNpKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIHNldGl0ZXJvYmplY3QgdG1wOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvcHkgdGhlIGl0ZXJhdG9yIHN0YXRlICovCisgICAgdG1wID0gKnNpOworICAgIFB5X1hJTkNSRUYodG1wLnNpX3NldCk7CisKKyAgICAvKiBpdGVyYXRlIHRoZSB0ZW1wb3JhcnkgaW50byBhIGxpc3QgKi8KKyAgICBmb3IoOzspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBzZXRpdGVyX2l0ZXJuZXh0KCZ0bXApOworICAgICAgICBpZiAoZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wLnNpX3NldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X1hERUNSRUYodG1wLnNpX3NldCk7CisgICAgLyogY2hlY2sgZm9yIGVycm9yICovCisgICAgaWYgKHRtcC5zaV9zZXQgIT0gTlVMTCkgeworICAgICAgICAvKiB3ZSBoYXZlIGFuIGVycm9yICovCisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgbGlzdCk7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHNldGl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXNldGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pc2V0aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTA3Niw5ICsxMTExLDEwIEBACiAgICAgcmV0dXJuIGVtcHR5ZnJvemVuc2V0OwogfQogCi12b2lkCi1QeVNldF9GaW5pKHZvaWQpCitpbnQKK1B5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKKyAgICBpbnQgZnJlZWxpc3Rfc2l6ZSA9IG51bWZyZWU7CiAgICAgUHlTZXRPYmplY3QgKnNvOwogCiAgICAgd2hpbGUgKG51bWZyZWUpIHsKQEAgLTEwODYsMTAgKzExMjIsMjcgQEAKICAgICAgICAgc28gPSBmcmVlX2xpc3RbbnVtZnJlZV07CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChzbyk7CiAgICAgfQorICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworfQorCit2b2lkCitQeVNldF9GaW5pKHZvaWQpCit7CisgICAgUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogICAgIFB5X0NMRUFSKGR1bW15KTsKICAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5U2V0T2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeVNldE9iamVjdCkpOworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTIxMCwxMCArMTI2Myw4IEBACiB7CiAgICAgUHlTZXRPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICByZXN1bHQgPSAoUHlTZXRPYmplY3QgKilzZXRfY29weShzbyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTIzMCwxMCArMTI4MSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2lvcihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc28pOwpAQCAtMTM4MywxMCArMTQzMyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2FuZChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBzZXRfaW50ZXJzZWN0aW9uKHNvLCBvdGhlcik7CiB9CiAKQEAgLTEzOTUsMTAgKzE0NDMsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmVzdWx0ID0gc2V0X2ludGVyc2VjdGlvbl91cGRhdGUoc28sIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTYyNSwyMCArMTY3MSwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9zdWIoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gc2V0X2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9pc3ViKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzbyk7CkBAIC0xNzM2LDEwICsxNzc4LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfeG9yKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZShzbywgb3RoZXIpOwogfQogCkBAIC0xNzQ4LDEwICsxNzg4LDggQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJlc3VsdCA9IHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUoc28sIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTgxMywxMCArMTg1MSw5IEBACiB7CiAgICAgUHlPYmplY3QgKnIxLCAqcjI7CiAKLSAgICBpZighUHlBbnlTZXRfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZighUHlBbnlTZXRfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFB5X0VROgogICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUodikgIT0gUHlTZXRfR0VUX1NJWkUodykpCkBAIC0xODQ2LDggKzE4ODMsNyBAQAogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgICAgICByZXR1cm4gc2V0X2lzc3VwZXJzZXQodiwgdyk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5NTksNiArMTk5NSw3IEBACiBzZXRfcmVkdWNlKFB5U2V0T2JqZWN0ICpzbykKIHsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqYXJncz1OVUxMLCAqcmVzdWx0PU5VTEwsICpkaWN0PU5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAga2V5cyA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilzbyk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKQEAgLTE5NjYsNyArMjAwMyw3IEBACiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBrZXlzKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc28sICJfX2RpY3RfXyIpOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNvLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBkaWN0ID0gUHlfTm9uZTsKQEAgLTE5ODAsOCArMjAxNyw2IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3NpemVvZihQeVNldE9iamVjdCAqc28pCiB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NsaWNlb2JqZWN0LmMgYi9PYmplY3RzL3NsaWNlb2JqZWN0LmMKaW5kZXggMGY0YjY0Ny4uMTU5MzMzNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zbGljZW9iamVjdC5jCisrKyBiL09iamVjdHMvc2xpY2VvYmplY3QuYwpAQCAtMTcsNiArMTcsMTcgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogc3RhdGljIFB5T2JqZWN0ICoKK2VsbGlwc2lzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIHx8IChrd2FyZ3MgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkVsbGlwc2lzVHlwZSB0YWtlcyBubyBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihQeV9FbGxpcHNpcyk7CisgICAgcmV0dXJuIFB5X0VsbGlwc2lzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZWxsaXBzaXNfcmVwcihQeU9iamVjdCAqb3ApCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFbGxpcHNpcyIpOwpAQCAtNDMsNiArNTQsMjQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGVsbGlwc2lzX25ldywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X0VsbGlwc2lzT2JqZWN0ID0gewpAQCAtNTEsMTkgKzgwLDM4IEBACiB9OwogCiAKLS8qIFNsaWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbgorLyogU2xpY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKLSAgIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhcmUgcHl0aG9uIG9iamVjdHMgd2l0aCBOb25lIGluZGljYXRpbmcgbm8KKy8qIFVzaW5nIGEgY2FjaGUgaXMgdmVyeSBlZmZlY3RpdmUgc2luY2UgdHlwaWNhbGx5IG9ubHkgYSBzaW5nbGUgc2xpY2UgaXMKKyAqIGNyZWF0ZWQgYW5kIHRoZW4gZGVsZXRlZCBhZ2FpbgorICovCitzdGF0aWMgUHlTbGljZU9iamVjdCAqc2xpY2VfY2FjaGUgPSBOVUxMOwordm9pZCBQeVNsaWNlX0Zpbmkodm9pZCkKK3sKKyAgICBQeVNsaWNlT2JqZWN0ICpvYmogPSBzbGljZV9jYWNoZTsKKyAgICBpZiAob2JqICE9IE5VTEwpIHsKKyAgICAgICAgc2xpY2VfY2FjaGUgPSBOVUxMOworICAgICAgICBQeU9iamVjdF9EZWwob2JqKTsKKyAgICB9Cit9CisKKy8qIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhcmUgcHl0aG9uIG9iamVjdHMgd2l0aCBOb25lIGluZGljYXRpbmcgbm8KICAgIGluZGV4IGlzIHByZXNlbnQuCiAqLwogCiBQeU9iamVjdCAqCiBQeVNsaWNlX05ldyhQeU9iamVjdCAqc3RhcnQsIFB5T2JqZWN0ICpzdG9wLCBQeU9iamVjdCAqc3RlcCkKIHsKLSAgICBQeVNsaWNlT2JqZWN0ICpvYmogPSBQeU9iamVjdF9OZXcoUHlTbGljZU9iamVjdCwgJlB5U2xpY2VfVHlwZSk7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5U2xpY2VPYmplY3QgKm9iajsKKyAgICBpZiAoc2xpY2VfY2FjaGUgIT0gTlVMTCkgeworICAgICAgICBvYmogPSBzbGljZV9jYWNoZTsKKyAgICAgICAgc2xpY2VfY2FjaGUgPSBOVUxMOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW9iaik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2JqID0gUHlPYmplY3RfTmV3KFB5U2xpY2VPYmplY3QsICZQeVNsaWNlX1R5cGUpOworICAgICAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAoc3RlcCA9PSBOVUxMKSBzdGVwID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoc3RlcCk7CkBAIC0yMzIsNyArMjgwLDEwIEBACiAgICAgUHlfREVDUkVGKHItPnN0ZXApOwogICAgIFB5X0RFQ1JFRihyLT5zdGFydCk7CiAgICAgUHlfREVDUkVGKHItPnN0b3ApOwotICAgIFB5T2JqZWN0X0RlbChyKTsKKyAgICBpZiAoc2xpY2VfY2FjaGUgPT0gTlVMTCkKKyAgICAgICAgc2xpY2VfY2FjaGUgPSByOworICAgIGVsc2UKKyAgICAgICAgUHlPYmplY3RfRGVsKHIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjk4LDEwICszNDksOCBAQAogICAgIFB5T2JqZWN0ICp0MjsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFQeVNsaWNlX0NoZWNrKHYpIHx8ICFQeVNsaWNlX0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVNsaWNlX0NoZWNrKHYpIHx8ICFQeVNsaWNlX0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICBpZiAodiA9PSB3KSB7CiAgICAgICAgIC8qIFhYWCBEbyB3ZSByZWFsbHkgbmVlZCB0aGlzIHNob3J0Y3V0PwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyODEzZAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBhc2NpaWxpYl9mYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBhc2NpaWxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHg3RnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyhTVFIsTEVOKSAgIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKChjaGFyKikoU1RSKSwoTEVOKSkKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX2FzY2lpX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1MzM2NwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCkBAIC0wLDAgKzEsNjYxIEBACisvKiBzdHJpbmdsaWI6IGNvZGVjIGltcGxlbWVudGF0aW9ucyAqLworCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKworLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLworI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKKyNlbHNlCisjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCisjZW5kaWYKKworLyogMTB4eHh4eHggKi8KKyNkZWZpbmUgSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gpICgoY2gpID49IDB4ODAgJiYgKGNoKSA8IDB4QzApCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKHV0ZjhfZGVjb2RlKShjb25zdCBjaGFyICoqaW5wdHIsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm91dHBvcykKK3sKKyAgICBQeV9VQ1M0IGNoOworICAgIGNvbnN0IGNoYXIgKnMgPSAqaW5wdHI7CisgICAgY29uc3QgY2hhciAqYWxpZ25lZF9lbmQgPSAoY29uc3QgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlbmQsIFNJWkVPRl9MT05HKTsKKyAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRlc3QgKyAqb3V0cG9zOworCisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKworICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2YgQVNDSUkgY2hhcmFjdGVycy4gR2l2ZW4gdGhhdCBjb21tb24gVVRGLTgKKyAgICAgICAgICAgICAgIGlucHV0IHdpbGwgY29uc2lzdCBvZiBhbiBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgQVNDSUkKKyAgICAgICAgICAgICAgIGNoYXJhY3RlcnMsIHdlIHRyeSB0byBvcHRpbWl6ZSBmb3IgdGhpcyBjYXNlIGJ5IGNoZWNraW5nCisgICAgICAgICAgICAgICBhcyBtYW55IGNoYXJhY3RlcnMgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbi4KKyAgICAgICAgICAgICAgIEZpcnN0LCBjaGVjayBpZiB3ZSBjYW4gZG8gYW4gYWxpZ25lZCByZWFkLCBhcyBtb3N0IENQVXMgaGF2ZQorICAgICAgICAgICAgICAgYSBwZW5hbHR5IGZvciB1bmFsaWduZWQgcmVhZHMuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHMsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9zID0gczsKKyAgICAgICAgICAgICAgICByZWdpc3RlciBTVFJJTkdMSUJfQ0hBUiAqX3AgPSBwOworICAgICAgICAgICAgICAgIHdoaWxlIChfcyA8IGFsaWduZWRfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgYSB3aG9sZSBsb25nIGF0IGEgdGltZSAoZWl0aGVyIDQgb3IgOCBieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkbyBhIGZhc3QgdW5yb2xsZWQgY29weSBpZiBpdCBvbmx5IGNvbnRhaW5zIEFTQ0lJCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICovCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3M7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisgICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKFNUUklOR0xJQl9DSEFSKSh2YWx1ZSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAxNikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMjQpICYgMHhGRnUpOworIyBpZiBTSVpFT0ZfTE9ORyA9PSA4CisgICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMzIpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs1XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDQwKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0OCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzddID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNTYpICYgMHhGRnUpOworIyBlbmRpZgorI2Vsc2UKKyMgaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgICAgICBfcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDU2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0OCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDApICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFszXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDMyKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAyNCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzVdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs2XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs3XSA9IChTVFJJTkdMSUJfQ0hBUikodmFsdWUgJiAweEZGdSk7CisjIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAyNCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFszXSA9IChTVFJJTkdMSUJfQ0hBUikodmFsdWUgJiAweEZGdSk7CisjIGVuZGlmCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgX3MgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzID0gX3M7CisgICAgICAgICAgICAgICAgcCA9IF9wOworICAgICAgICAgICAgICAgIGlmIChzID09IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA8IDB4ODApIHsKKyAgICAgICAgICAgICAgICBzKys7CisgICAgICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoIDwgMHhFMCkgeworICAgICAgICAgICAgLyogXHhDMlx4ODAtXHhERlx4QkYgLS0gMDA4MC0wN0ZGICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoMjsKKyAgICAgICAgICAgIGlmIChjaCA8IDB4QzIpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgXHg4MC1ceEJGIC0tIGNvbnRpbnVhdGlvbiBieXRlCisgICAgICAgICAgICAgICAgXHhDMC1ceEMxIC0tIGZha2UgMDAwMC0wMDdGICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkU3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDIpIHsKKyAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhOiB0aGUgY2FsbGVyIHdpbGwgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICBpdCdzIGFuIGVycm9yIG9yIG5vdCAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gyKSkKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIGNoID0gKGNoIDw8IDYpICsgY2gyIC0KKyAgICAgICAgICAgICAgICAgKCgweEMwIDw8IDYpICsgMHg4MCk7CisgICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOworICAgICAgICAgICAgcyArPSAyOworICAgICAgICAgICAgaWYgKFNUUklOR0xJQl9NQVhfQ0hBUiA8PSAweDAwN0YgfHwKKyAgICAgICAgICAgICAgICAoU1RSSU5HTElCX01BWF9DSEFSIDwgMHgwN0ZGICYmIGNoID4gU1RSSU5HTElCX01BWF9DSEFSKSkKKyAgICAgICAgICAgICAgICAvKiBPdXQtb2YtcmFuZ2UgKi8KKyAgICAgICAgICAgICAgICBnb3RvIFJldHVybjsKKyAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoIDwgMHhGMCkgeworICAgICAgICAgICAgLyogXHhFMFx4QTBceDgwLVx4RUZceEJGXHhCRiAtLSAwODAwLUZGRkYgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2gyLCBjaDM7CisgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDMpIHsKKyAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhOiB0aGUgY2FsbGVyIHdpbGwgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICBpdCdzIGFuIGVycm9yIG9yIG5vdCAqLworICAgICAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgMikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGNoMiA8IDB4QTAgPyBjaCA9PSAweEUwIDogY2ggPT0gMHhFRCkpCisgICAgICAgICAgICAgICAgICAgIC8qIGZvciBjbGFyaWZpY2F0aW9uIHNlZSBjb21tZW50cyBiZWxvdyAqLworICAgICAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24xOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgIGNoMyA9ICh1bnNpZ25lZCBjaGFyKXNbMl07CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAweEUwKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoMiA8IDB4QTApCisgICAgICAgICAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgXHhFMFx4ODBceDgwLVx4RTBceDlGXHhCRiAtLSBmYWtlIDAwMDAtMDgwMCAqLworICAgICAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24xOworICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAweEVEICYmIGNoMiA+PSAweEEwKSB7CisgICAgICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4RURceEEwXHg4MC1ceEVEXHhCRlx4QkYKKyAgICAgICAgICAgICAgICAgICB3aWxsIHJlc3VsdCBpbiBzdXJyb2dhdGVzIGluIHJhbmdlIEQ4MDAtREZGRi4gU3Vycm9nYXRlcyBhcmUKKyAgICAgICAgICAgICAgICAgICBub3QgdmFsaWQgVVRGLTggc28gdGhleSBhcmUgcmVqZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCisgICAgICAgICAgICAgICAgICAgKHRhYmxlIDMtNykgYW5kIGh0dHA6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzM2MjkudHh0ICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gzKSkgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2ggPSAoY2ggPDwgMTIpICsgKGNoMiA8PCA2KSArIGNoMyAtCisgICAgICAgICAgICAgICAgICgoMHhFMCA8PCAxMikgKyAoMHg4MCA8PCA2KSArIDB4ODApOworICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKKyAgICAgICAgICAgIHMgKz0gMzsKKyAgICAgICAgICAgIGlmIChTVFJJTkdMSUJfTUFYX0NIQVIgPD0gMHgwN0ZGIHx8CisgICAgICAgICAgICAgICAgKFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4RkZGRiAmJiBjaCA+IFNUUklOR0xJQl9NQVhfQ0hBUikpCisgICAgICAgICAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgICAgICAgICAgZ290byBSZXR1cm47CisgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4RjUpIHsKKyAgICAgICAgICAgIC8qIFx4RjBceDkwXHg4MFx4ODAtXHhGNFx4OEZceEJGXHhCRiAtLSAxMDAwMC0xMEZGRkYgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2gyLCBjaDMsIGNoNDsKKyAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgNCkgeworICAgICAgICAgICAgICAgIC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGRhdGE6IHRoZSBjYWxsZXIgd2lsbCBkZWNpZGUgd2hldGhlcgorICAgICAgICAgICAgICAgICAgIGl0J3MgYW4gZXJyb3Igb3Igbm90ICovCisgICAgICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCAyKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjaDIgPSAodW5zaWduZWQgY2hhcilzWzFdOworICAgICAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gyKSB8fAorICAgICAgICAgICAgICAgICAgICAoY2gyIDwgMHg5MCA/IGNoID09IDB4RjAgOiBjaCA9PSAweEY0KSkKKyAgICAgICAgICAgICAgICAgICAgLyogZm9yIGNsYXJpZmljYXRpb24gc2VlIGNvbW1lbnRzIGJlbG93ICovCisgICAgICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjE7CisgICAgICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCAzKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjaDMgPSAodW5zaWduZWQgY2hhcilzWzJdOworICAgICAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gzKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICBjaDMgPSAodW5zaWduZWQgY2hhcilzWzJdOworICAgICAgICAgICAgY2g0ID0gKHVuc2lnbmVkIGNoYXIpc1szXTsKKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gyKSkgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID09IDB4RjApIHsKKyAgICAgICAgICAgICAgICBpZiAoY2gyIDwgMHg5MCkKKyAgICAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBzZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgICAgICBceEYwXHg4MFx4ODBceDgwLVx4RjBceDhGXHhCRlx4QkYgLS0gZmFrZSAwMDAwLUZGRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gMHhGNCAmJiBjaDIgPj0gMHg5MCkgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICBceEY0XHg5MFx4ODBcODAtIC0tIDExMDAwMC0gb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDMpKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoNCkpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gKGNoIDw8IDE4KSArIChjaDIgPDwgMTIpICsgKGNoMyA8PCA2KSArIGNoNCAtCisgICAgICAgICAgICAgICAgICgoMHhGMCA8PCAxOCkgKyAoMHg4MCA8PCAxMikgKyAoMHg4MCA8PCA2KSArIDB4ODApOworICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwRkZGRikpOworICAgICAgICAgICAgcyArPSA0OworICAgICAgICAgICAgaWYgKFNUUklOR0xJQl9NQVhfQ0hBUiA8PSAweEZGRkYgfHwKKyAgICAgICAgICAgICAgICAoU1RSSU5HTElCX01BWF9DSEFSIDwgMHgxMEZGRkYgJiYgY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpKQorICAgICAgICAgICAgICAgIC8qIE91dC1vZi1yYW5nZSAqLworICAgICAgICAgICAgICAgIGdvdG8gUmV0dXJuOworICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZ290byBJbnZhbGlkU3RhcnQ7CisgICAgfQorICAgIGNoID0gMDsKK1JldHVybjoKKyAgICAqaW5wdHIgPSBzOworICAgICpvdXRwb3MgPSBwIC0gZGVzdDsKKyAgICByZXR1cm4gY2g7CitJbnZhbGlkU3RhcnQ6CisgICAgY2ggPSAxOworICAgIGdvdG8gUmV0dXJuOworSW52YWxpZENvbnRpbnVhdGlvbjE6CisgICAgY2ggPSAyOworICAgIGdvdG8gUmV0dXJuOworSW52YWxpZENvbnRpbnVhdGlvbjI6CisgICAgY2ggPSAzOworICAgIGdvdG8gUmV0dXJuOworSW52YWxpZENvbnRpbnVhdGlvbjM6CisgICAgY2ggPSA0OworICAgIGdvdG8gUmV0dXJuOworfQorCisjdW5kZWYgQVNDSUlfQ0hBUl9NQVNLCisKKworLyogVVRGLTggZW5jb2RlciBzcGVjaWFsaXplZCBmb3IgYSBVbmljb2RlIGtpbmQgdG8gYXZvaWQgdGhlIHNsb3cKKyAgIFB5VW5pY29kZV9SRUFEKCkgbWFjcm8uIERlbGV0ZSBzb21lIHBhcnRzIG9mIHRoZSBjb2RlIGRlcGVuZGluZyBvbiB0aGUga2luZDoKKyAgIFVDUy0xIHN0cmluZ3MgZG9uJ3QgbmVlZCB0byBoYW5kbGUgc3Vycm9nYXRlcyBmb3IgZXhhbXBsZS4gKi8KK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorU1RSSU5HTElCKHV0ZjhfZW5jb2RlcikoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLworCisgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLworICAgIGNoYXIgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBmcmVlIGJ5dGUgaW4gb3V0cHV0IGJ1ZmZlciAqLworICAgIFB5X3NzaXplX3QgbmFsbG9jYXRlZDsgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIGFsbG9jYXRlZCAqLworICAgIFB5X3NzaXplX3Qgbm5lZWRlZDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIG5lZWRlZCAqLworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyNlbmRpZgorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMjsKKyAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDJdOworI2VsaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDIKKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAzOworICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogM107CisjZWxzZSAvKiAgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDQgKi8KKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSA0OworICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogNF07CisjZW5kaWYKKworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPD0gTUFYX1NIT1JUX1VOSUNIQVJTKSB7CisgICAgICAgIC8qIFdyaXRlIGludG8gdGhlIHN0YWNrIGJ1ZmZlcjsgbmFsbG9jYXRlZCBjYW4ndCBvdmVyZmxvdy4KKyAgICAgICAgICogQXQgdGhlIGVuZCwgd2UnbGwgYWxsb2NhdGUgZXhhY3RseSBhcyBtdWNoIGhlYXAgc3BhY2UgYXMgaXQKKyAgICAgICAgICogdHVybnMgb3V0IHdlIG5lZWQuCisgICAgICAgICAqLworICAgICAgICBuYWxsb2NhdGVkID0gUHlfU0FGRV9ET1dOQ0FTVChzaXplb2Yoc3RhY2tidWYpLCBzaXplX3QsIGludCk7CisgICAgICAgIHJlc3VsdCA9IE5VTEw7ICAgLyogd2lsbCBhbGxvY2F0ZSBhZnRlciB3ZSdyZSBkb25lICovCisgICAgICAgIHAgPSBzdGFja2J1ZjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgfQorICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLworICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIG1heF9jaGFyX3NpemU7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IGRhdGFbaSsrXTsKKworICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAvKiBFbmNvZGUgQVNDSUkgKi8KKyAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICBpZiAoY2ggPCAweDA4MDApCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgLyogRW5jb2RlIExhdGluLTEgKi8KKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhjMCB8IChjaCA+PiA2KSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgIH0KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGssIHN0YXJ0cG9zOworICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7CisgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAorICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsICZuZXdwb3MpOworICAgICAgICAgICAgaWYgKCFyZXApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworCisgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisKKyAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuYWxsb2NhdGVkICs9IHJlcHNpemUgLSBtYXhfY2hhcl9zaXplOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOworICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwcmVwKys7CisgICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8geworICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmVwa2luZDsKKyAgICAgICAgICAgICAgICB2b2lkICpyZXBkYXRhOworCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICByZXBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKKyAgICAgICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwKTsKKworICAgICAgICAgICAgICAgIGZvcihrPTA7IGs8cmVwc2l6ZTsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKHJlcGtpbmQsIHJlcGRhdGEsIGspOworICAgICAgICAgICAgICAgICAgICBpZiAoMHg4MCA8PSBjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktMSwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKWM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMgorICAgICAgICBpZiAoY2ggPCAweDEwMDAwKQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhlMCB8IChjaCA+PiAxMikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgfQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIKKyAgICAgICAgZWxzZSAvKiBjaCA+PSAweDEwMDAwICovCisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gMTIpICYgMHgzZikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgfQorI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIgKi8KKyNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxICovCisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KKyAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKKyAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCisgICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7CisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKKyAgICB9CisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXhjKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXApOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyN1bmRlZiBNQVhfU0hPUlRfVU5JQ0hBUlMKK30KKworLyogVGhlIHBhdHRlcm4gZm9yIGNvbnN0cnVjdGluZyBVQ1MyLXJlcGVhdGVkIG1hc2tzLiAqLworI2lmIFNJWkVPRl9MT05HID09IDgKKyMgZGVmaW5lIFVDUzJfUkVQRUFUX01BU0sgMHgwMDAxMDAwMTAwMDEwMDAxdWwKKyNlbGlmIFNJWkVPRl9MT05HID09IDQKKyMgZGVmaW5lIFVDUzJfUkVQRUFUX01BU0sgMHgwMDAxMDAwMXVsCisjZWxzZQorIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQorI2VuZGlmCisKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGNoZWNraW5nLiAqLworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisvKiBUaGUgbWFzayBmb3IgZmFzdCBjaGVja2luZyBvZiB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQorICAgbm9uLUFTQ0lJIG9yIG5vbi1MYXRpbjEgVVRGMTYtZW5jb2RlZCBjaGFyYWN0ZXJzLiAqLworIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAoVUNTMl9SRVBFQVRfTUFTSyAqICgweEZGRkZ1ICYgflNUUklOR0xJQl9NQVhfQ0hBUikpCisjZWxzZQorLyogVGhlIG1hc2sgZm9yIGZhc3QgY2hlY2tpbmcgb2Ygd2hldGhlciBhIEMgJ2xvbmcnIG1heSBjb250YWluCisgICBVVEYxNi1lbmNvZGVkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzLiBUaGlzIGlzIGFuIGVmZmljaWVudCBoZXVyaXN0aWMsCisgICBhc3N1bWluZyB0aGF0IG5vbi1zdXJyb2dhdGUgY2hhcmFjdGVycyB3aXRoIGEgY29kZSBwb2ludCA+PSAweDgwMDAgYXJlCisgICByYXJlIGluIG1vc3QgaW5wdXQuCisqLworIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAoVUNTMl9SRVBFQVRfTUFTSyAqIDB4ODAwMHUpCisjZW5kaWYKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGJ5dGUtc3dhcHBpbmcuICovCisjZGVmaW5lIFNUUklQUEVEX01BU0sgICAgICAgICAgIChVQ1MyX1JFUEVBVF9NQVNLICogMHgwMEZGdSkKKy8qIFN3YXAgYnl0ZXMuICovCisjZGVmaW5lIFNXQUIodmFsdWUpICAgICAgICAgICAgICgoKCh2YWx1ZSkgPj4gOCkgJiBTVFJJUFBFRF9NQVNLKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHZhbHVlKSAmIFNUUklQUEVEX01BU0spIDw8IDgpKQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK1NUUklOR0xJQih1dGYxNl9kZWNvZGUpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbnB0ciwgY29uc3QgdW5zaWduZWQgY2hhciAqZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkZXN0LCBQeV9zc2l6ZV90ICpvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmF0aXZlX29yZGVyaW5nKQoreworICAgIFB5X1VDUzQgY2g7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYWxpZ25lZF9lbmQgPQorICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgX1B5X0FMSUdOX0RPV04oZSwgU0laRU9GX0xPTkcpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEgPSAqaW5wdHI7CisgICAgU1RSSU5HTElCX0NIQVIgKnAgPSBkZXN0ICsgKm91dHBvczsKKyAgICAvKiBPZmZzZXRzIGZyb20gcSBmb3IgcmV0cmlldmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KKyNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorICAgIGludCBpaGkgPSAhIW5hdGl2ZV9vcmRlcmluZywgaWxvID0gIW5hdGl2ZV9vcmRlcmluZzsKKyNlbHNlCisgICAgaW50IGloaSA9ICFuYXRpdmVfb3JkZXJpbmcsIGlsbyA9ICEhbmF0aXZlX29yZGVyaW5nOworI2VuZGlmCisgICAgLS1lOworCisgICAgd2hpbGUgKHEgPCBlKSB7CisgICAgICAgIFB5X1VDUzQgY2gyOworICAgICAgICAvKiBGaXJzdCBjaGVjayBmb3IgcG9zc2libGUgYWxpZ25lZCByZWFkIG9mIGEgQyAnbG9uZycuIFVuYWxpZ25lZAorICAgICAgICAgICByZWFkcyBhcmUgbW9yZSBleHBlbnNpdmUsIGJldHRlciB0byBkZWZlciB0byBhbm90aGVyIGl0ZXJhdGlvbi4gKi8KKyAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHEsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBydW5zIG9mIGluLXJhbmdlIG5vbi1zdXJyb2dhdGUgY2hhcnMuICovCisgICAgICAgICAgICByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpfcSA9IHE7CisgICAgICAgICAgICB3aGlsZSAoX3EgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2sgPSAqICh1bnNpZ25lZCBsb25nICopIF9xOworICAgICAgICAgICAgICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogQ2FuIHVzZSBidWZmZXIgZGlyZWN0bHkgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrICYgRkFTVF9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gYnl0ZS1zd2FwICovCisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jayAmIFNXQUIoRkFTVF9DSEFSX01BU0spKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPj49IDg7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBibG9jayA9IFNXQUIoYmxvY2spOworI2VuZGlmCisgICAgICAgICAgICAgICAgfQorI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisjIGlmIFNJWkVPRl9MT05HID09IDQKKyAgICAgICAgICAgICAgICBwWzBdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbMV0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrID4+IDE2KTsKKyMgZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKSgoYmxvY2sgPj4gMTYpICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDMyKSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbM10gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrID4+IDQ4KTsKKyMgZW5kaWYKKyNlbHNlCisjIGlmIFNJWkVPRl9MT05HID09IDQKKyAgICAgICAgICAgICAgICBwWzBdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiAxNik7CisgICAgICAgICAgICAgICAgcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKKyMgZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgPj4gNDgpOworICAgICAgICAgICAgICAgIHBbMV0gPSAoU1RSSU5HTElCX0NIQVIpKChibG9jayA+PiAzMikgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzJdID0gKFNUUklOR0xJQl9DSEFSKSgoYmxvY2sgPj4gMTYpICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFszXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKKyMgZW5kaWYKKyNlbmRpZgorICAgICAgICAgICAgICAgIF9xICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgICAgIHAgKz0gU0laRU9GX0xPTkcgLyAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcSA9IF9xOworICAgICAgICAgICAgaWYgKHEgPj0gZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNoID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKKyAgICAgICAgcSArPSAyOworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA8IDIKKyAgICAgICAgICAgIGlmIChjaCA+IFNUUklOR0xJQl9NQVhfQ0hBUikKKyAgICAgICAgICAgICAgICAvKiBPdXQtb2YtcmFuZ2UgKi8KKyAgICAgICAgICAgICAgICBnb3RvIFJldHVybjsKKyNlbmRpZgorICAgICAgICAgICAgKnArKyA9IChTVFJJTkdMSUJfQ0hBUiljaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyogVVRGLTE2IGNvZGUgcGFpcjogKi8KKyAgICAgICAgaWYgKHEgPj0gZSkKKyAgICAgICAgICAgIGdvdG8gVW5leHBlY3RlZEVuZDsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSkKKyAgICAgICAgICAgIGdvdG8gSWxsZWdhbEVuY29kaW5nOworICAgICAgICBjaDIgPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOworICAgICAgICBxICs9IDI7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoMikpCisgICAgICAgICAgICBnb3RvIElsbGVnYWxTdXJyb2dhdGU7CisgICAgICAgIGNoID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoY2gsIGNoMik7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSIDwgNAorICAgICAgICAvKiBPdXQtb2YtcmFuZ2UgKi8KKyAgICAgICAgZ290byBSZXR1cm47CisjZWxzZQorICAgICAgICAqcCsrID0gKFNUUklOR0xJQl9DSEFSKWNoOworI2VuZGlmCisgICAgfQorICAgIGNoID0gMDsKK1JldHVybjoKKyAgICAqaW5wdHIgPSBxOworICAgICpvdXRwb3MgPSBwIC0gZGVzdDsKKyAgICByZXR1cm4gY2g7CitVbmV4cGVjdGVkRW5kOgorICAgIGNoID0gMTsKKyAgICBnb3RvIFJldHVybjsKK0lsbGVnYWxFbmNvZGluZzoKKyAgICBjaCA9IDI7CisgICAgZ290byBSZXR1cm47CitJbGxlZ2FsU3Vycm9nYXRlOgorICAgIGNoID0gMzsKKyAgICBnb3RvIFJldHVybjsKK30KKyN1bmRlZiBVQ1MyX1JFUEVBVF9NQVNLCisjdW5kZWYgRkFTVF9DSEFSX01BU0sKKyN1bmRlZiBTVFJJUFBFRF9NQVNLCisjdW5kZWYgU1dBQgorCisKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorU1RSSU5HTElCKHV0ZjE2X2VuY29kZSkodW5zaWduZWQgc2hvcnQgKm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICppbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hdGl2ZV9vcmRlcmluZykKK3sKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gaW4gKyBsZW47CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyMgZGVmaW5lIFNXQUIyKENIKSAgKChDSCkgPDwgOCkKKyNlbHNlCisjIGRlZmluZSBTV0FCMihDSCkgICgoKENIKSA8PCA4KSB8ICgoQ0gpID4+IDgpKQorI2VuZGlmCisjaWYgU1RSSU5HTElCX01BWF9DSEFSIDwgMHgxMDAwMAorICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKKyMgaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDIKKyAgICAgICAgUHlfTUVNQ1BZKG91dCwgaW4sIDIgKiBsZW4pOworIyBlbHNlCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhTVFJJTkdMSUJfQ0hBUiwgdW5zaWduZWQgc2hvcnQsIGluLCBlbmQsIG91dCk7CisjIGVuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnVucm9sbGVkX2VuZCA9IGluICsgX1B5X1NJWkVfUk9VTkRfRE9XTihsZW4sIDQpOworICAgICAgICB3aGlsZSAoaW4gPCB1bnJvbGxlZF9lbmQpIHsKKyAgICAgICAgICAgIG91dFswXSA9IFNXQUIyKGluWzBdKTsKKyAgICAgICAgICAgIG91dFsxXSA9IFNXQUIyKGluWzFdKTsKKyAgICAgICAgICAgIG91dFsyXSA9IFNXQUIyKGluWzJdKTsKKyAgICAgICAgICAgIG91dFszXSA9IFNXQUIyKGluWzNdKTsKKyAgICAgICAgICAgIGluICs9IDQ7IG91dCArPSA0OworICAgICAgICB9CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgKm91dCsrID0gU1dBQjIoKmluKTsKKyAgICAgICAgICAgICsraW47CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gKmluKys7CisgICAgICAgICAgICBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgICAgICpvdXQrKyA9IGNoOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9ICppbisrOworICAgICAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkKKyAgICAgICAgICAgICAgICAqb3V0KysgPSBTV0FCMigoUHlfVUNTMiljaCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1MyIGNoMSA9IFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIFB5X1VDUzIgY2gyID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBTV0FCMihjaDEpOworICAgICAgICAgICAgICAgIG91dFsxXSA9IFNXQUIyKGNoMik7CisgICAgICAgICAgICAgICAgb3V0ICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyN1bmRlZiBTV0FCMgorfQorI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaAppbmRleCBkZTM0Zjk2Li5mNDg1MDBiIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmgKQEAgLTEsMTQgKzEsMTEgQEAKIC8qIHN0cmluZ2xpYjogY291bnQgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfQ09VTlRfSAotI2RlZmluZSBTVFJJTkdMSUJfQ09VTlRfSAotCiAjaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNlcnJvciBtdXN0IGluY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBtb2R1bGUKICNlbmRpZgogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9jb3VudChjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIoY291bnQpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKQEAgLTE5LDcgKzE2LDcgQEAKICAgICBpZiAoc3ViX2xlbiA9PSAwKQogICAgICAgICByZXR1cm4gKHN0cl9sZW4gPCBtYXhjb3VudCkgPyBzdHJfbGVuICsgMSA6IG1heGNvdW50OwogCi0gICAgY291bnQgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCBtYXhjb3VudCwgRkFTVF9DT1VOVCk7CisgICAgY291bnQgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCBtYXhjb3VudCwgRkFTVF9DT1VOVCk7CiAKICAgICBpZiAoY291bnQgPCAwKQogICAgICAgICByZXR1cm4gMDsgLyogbm8gbWF0Y2ggKi8KQEAgLTI3LDQgKzI0LDQgQEAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLSNlbmRpZgorCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAppbmRleCAzZTdmNWU4Li44ZTc5YTQzIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2VxLmgKQEAgLTksMTMgKzksMjYgQEAKICAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKmEgPSAoUHlVbmljb2RlT2JqZWN0ICopYWE7CiAgICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICpiID0gKFB5VW5pY29kZU9iamVjdCAqKWJiOwogCi0gICAgaWYgKGEtPmxlbmd0aCAhPSBiLT5sZW5ndGgpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoYikgPT0gLTEpIHsKKyAgICAgICAgYXNzZXJ0KDAgJiYgInVuaWNvZGVfZXEgcmVhZHkgZmFpbCIpOwogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYS0+bGVuZ3RoID09IDApCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmIChhLT5zdHJbMF0gIT0gYi0+c3RyWzBdKQorICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChiKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGEtPmxlbmd0aCA9PSAxKQorICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSA9PSAwKQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gbWVtY21wKGEtPnN0ciwgYi0+c3RyLCBhLT5sZW5ndGggKiBzaXplb2YoUHlfVU5JQ09ERSkpID09IDA7CisgICAgaWYgKFB5VW5pY29kZV9LSU5EKGEpICE9IFB5VW5pY29kZV9LSU5EKGIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAvKiBKdXN0IGNvbXBhcmluZyB0aGUgZmlyc3QgYnl0ZSBpcyBlbm91Z2ggdG8gc2VlIGlmIGEgYW5kIGIgZGlmZmVyLgorICAgICAqIElmIHRoZXkgYXJlIDIgYnl0ZSBvciA0IGJ5dGUgY2hhcmFjdGVyIG1vc3QgZGlmZmVyZW5jZXMgd2lsbCBoYXBwZW4gaW4KKyAgICAgKiB0aGUgbG93ZXIgYnl0ZXMgYW55d2F5cy4KKyAgICAgKi8KKyAgICBpZiAoUHlVbmljb2RlXzFCWVRFX0RBVEEoYSlbMF0gIT0gUHlVbmljb2RlXzFCWVRFX0RBVEEoYilbMF0pCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChQeVVuaWNvZGVfS0lORChhKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCAmJgorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSA9PSAxKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gbWVtY21wKFB5VW5pY29kZV8xQllURV9EQVRBKGEpLCBQeVVuaWNvZGVfMUJZVEVfREFUQShiKSwKKyAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpICogUHlVbmljb2RlX0tJTkQoYSkpID09IDA7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKaW5kZXggZTIzMWM1OC4uNTVhYzc3ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaApAQCAtMSw2ICsxLDUgQEAKIC8qIHN0cmluZ2xpYjogZmFzdHNlYXJjaCBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNkZWZpbmUgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogCiAvKiBmYXN0IHNlYXJjaC9jb3VudCBpbXBsZW1lbnRhdGlvbiwgYmFzZWQgb24gYSBtaXggYmV0d2VlbiBib3llci0KQEAgLTMzLDggKzMyLDU2IEBACiAjZGVmaW5lIFNUUklOR0xJQl9CTE9PTShtYXNrLCBjaCkgICAgIFwKICAgICAoKG1hc2sgJiAgKDFVTCA8PCAoKGNoKSAmIChTVFJJTkdMSUJfQkxPT01fV0lEVEggLTEpKSkpKQogCisKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotZmFzdHNlYXJjaChjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAorU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBjaCwgdW5zaWduZWQgY2hhciBuZWVkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQsIGludCBtb2RlKQoreworICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwdHIgPSBzOworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZSA9IHMgKyBuOworICAgICAgICB3aGlsZSAocHRyIDwgZSkgeworICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtY2hyKChjb25zdCB2b2lkICopIHB0ciwgbmVlZGxlLCAoZSAtIHB0cikgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBwdHIgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKnB0ciA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHB0ciAtIHMpOworICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgICAgIHB0cisrOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgSEFWRV9NRU1SQ0hSCisgICAgLyogbWVtcmNocigpIGlzIGEgR05VIGV4dGVuc2lvbiwgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMS45MS4KKyAgICAgICBpdCBkb2Vzbid0IHNlZW0gYXMgb3B0aW1pemVkIGFzIG1lbWNocigpLCBidXQgaXMgc3RpbGwgcXVpdGUKKyAgICAgICBmYXN0ZXIgdGhhbiBvdXIgaGFuZC13cml0dGVuIGxvb3AgaW4gRkFTVFNFQVJDSCBiZWxvdyAqLworICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKSB7CisgICAgICAgIHdoaWxlIChuID4gMCkgeworICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmZvdW5kOworICAgICAgICAgICAgdm9pZCAqY2FuZGlkYXRlID0gbWVtcmNocigoY29uc3Qgdm9pZCAqKSBzLCBuZWVkbGUsIG4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBmb3VuZCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgbiA9IGZvdW5kIC0gczsKKyAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKmZvdW5kID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCgwKTsgLyogU2hvdWxkIG5ldmVyIGdldCBoZXJlICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI3VuZGVmIERPX01FTUNIUgorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK0ZBU1RTRUFSQ0goY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHAsIFB5X3NzaXplX3QgbSwKICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCwgaW50IG1vZGUpCiB7CkBAIC01Miw2ICs5OSwyNCBAQAogICAgICAgICBpZiAobSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAvKiB1c2Ugc3BlY2lhbCBjYXNlIGZvciAxLWNoYXJhY3RlciBzdHJpbmdzICovCisgICAgICAgIGlmIChuID4gMTAgJiYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gKKyNpZmRlZiBIQVZFX01FTVJDSFIKKyAgICAgICAgICAgICAgICAgICAgfHwgbW9kZSA9PSBGQVNUX1JTRUFSQ0gKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICApKSB7CisgICAgICAgICAgICAvKiB1c2UgbWVtY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKKyAgICAgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGU7CisgICAgICAgICAgICBuZWVkbGUgPSBwWzBdICYgMHhmZjsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbworICAgICAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCisgICAgICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCisgICAgICAgICAgICBpZiAobmVlZGxlICE9IDApCisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtYXhjb3VudCwgbW9kZSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9DT1VOVCkgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKSB7CkBAIC0xNTcsNCArMjIyLDMgQEAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IGNlNjE1ZGMuLjUxOGUwMTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTEsMTQgKzEsMTEgQEAKIC8qIHN0cmluZ2xpYjogZmluZC9pbmRleCBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9GSU5EX0gKLSNkZWZpbmUgU1RSSU5HTElCX0ZJTkRfSAotCiAjaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNlcnJvciBtdXN0IGluY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBtb2R1bGUKICNlbmRpZgogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9maW5kKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihmaW5kKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCkKIHsKQEAgLTE5LDcgKzE2LDcgQEAKICAgICBpZiAoc3ViX2xlbiA9PSAwKQogICAgICAgICByZXR1cm4gb2Zmc2V0OwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKKyAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOwogCiAgICAgaWYgKHBvcyA+PSAwKQogICAgICAgICBwb3MgKz0gb2Zmc2V0OwpAQCAtMjgsNyArMjUsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9yZmluZChjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIocmZpbmQpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQpCiB7CkBAIC0zOSw3ICszNiw3IEBACiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIHN0cl9sZW4gKyBvZmZzZXQ7CiAKLSAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKKyAgICBwb3MgPSBGQVNUU0VBUkNIKHN0ciwgc3RyX2xlbiwgc3ViLCBzdWJfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPj0gMCkKICAgICAgICAgcG9zICs9IG9mZnNldDsKQEAgLTYzLDI5ICs2MCwyOSBAQAogICAgIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfZmluZF9zbGljZShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIoZmluZF9zbGljZSkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9maW5kKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CisgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLXN0cmluZ2xpYl9yZmluZF9zbGljZShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIocmZpbmRfc2xpY2UpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3ViLCBQeV9zc2l6ZV90IHN1Yl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9yZmluZChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOworICAgIHJldHVybiBTVFJJTkdMSUIocmZpbmQpKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CiB9CiAKICNpZmRlZiBTVFJJTkdMSUJfV0FOVF9DT05UQUlOU19PQkoKIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLXN0cmluZ2xpYl9jb250YWluc19vYmooUHlPYmplY3QqIHN0ciwgUHlPYmplY3QqIHN1YikKK1NUUklOR0xJQihjb250YWluc19vYmopKFB5T2JqZWN0KiBzdHIsIFB5T2JqZWN0KiBzdWIpCiB7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9maW5kKAorICAgIHJldHVybiBTVFJJTkdMSUIoZmluZCkoCiAgICAgICAgIFNUUklOR0xJQl9TVFIoc3RyKSwgU1RSSU5HTElCX0xFTihzdHIpLAogICAgICAgICBTVFJJTkdMSUJfU1RSKHN1YiksIFNUUklOR0xJQl9MRU4oc3ViKSwgMAogICAgICAgICApICE9IC0xOwpAQCAtOTgsMTQgKzk1LDE0IEBACiByaW5kZXgpIGFuZCBmb3IgY291bnQsIHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoLCBiZWNhdXNlIHRoZXkgYWxsIGhhdmUKIHRoZSBzYW1lIGJlaGF2aW91ciBmb3IgdGhlIGFyZ3VtZW50cy4KIAotSXQgZG9lcyBub3QgdG91Y2ggdGhlIHZhcmlhYmxlcyByZWNlaXZlZCB1bnRpbCBpdCBrbm93cyBldmVyeXRoaW5nIAorSXQgZG9lcyBub3QgdG91Y2ggdGhlIHZhcmlhYmxlcyByZWNlaXZlZCB1bnRpbCBpdCBrbm93cyBldmVyeXRoaW5nCiBpcyBvay4KICovCiAKICNkZWZpbmUgRk9STUFUX0JVRkZFUl9TSVpFIDUwCiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1zdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCitTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQogewpAQCAtMTQ4LDI4ICsxNDUsNzYgQEAKIAogTm90ZSB0aGF0IHdlIHJlY2VpdmUgYSBwb2ludGVyIHRvIHRoZSBwb2ludGVyIG9mIHRoZSBzdWJzdHJpbmcgb2JqZWN0LAogc28gd2hlbiB3ZSBjcmVhdGUgdGhhdCBvYmplY3QgaW4gdGhpcyBmdW5jdGlvbiB3ZSBkb24ndCBERUNSRUYgaXQsCi1iZWNhdXNlIGl0IGNvbnRpbnVlcyBsaXZpbmcgaW4gdGhlIGNhbGxlciBmdW5jdGlvbnMgKHRob3NlIGZ1bmN0aW9ucywgCitiZWNhdXNlIGl0IGNvbnRpbnVlcyBsaXZpbmcgaW4gdGhlIGNhbGxlciBmdW5jdGlvbnMgKHRob3NlIGZ1bmN0aW9ucywKIGFmdGVyIGZpbmlzaGluZyB1c2luZyB0aGUgc3Vic3RyaW5nLCBtdXN0IERFQ1JFRiBpdCkuCiAqLwogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqKnN1YnN0cmluZywKK1NUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUpKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCiB7CiAgICAgUHlPYmplY3QgKnRtcF9zdWJzdHJpbmc7CiAKLSAgICBpZihzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1YnN0cmluZywKKyAgICBpZihTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKICAgICAgICAgdG1wX3N1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHRtcF9zdWJzdHJpbmcpOwogICAgICAgICBpZiAoIXRtcF9zdWJzdHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgKnN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKil0bXBfc3Vic3RyaW5nOworICAgICAgICAqc3Vic3RyaW5nID0gdG1wX3N1YnN0cmluZzsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KKyNlbHNlIC8qICFTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwogCi0jZW5kaWYgLyogU1RSSU5HTElCX0ZJTkRfSCAqLworLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KKworSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgorYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCithbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgorc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KKyovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc19ieXRlKShjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKKyAgICBQeV9zc2l6ZV90IGl2YWw7CisgICAgUHlPYmplY3QgKmVycjsKKworICAgIGlmKCFTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHRtcF9zdWJvYmopKSB7CisgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KHRtcF9zdWJvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgIGlmIChpdmFsID09IC0xKSB7CisgICAgICAgIGVyciA9IFB5RXJyX09jY3VycmVkKCk7CisgICAgICAgIGlmIChlcnIgJiYgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhlcnIsIFB5RXhjX092ZXJmbG93RXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKnN1Ym9iaiA9IE5VTEw7CisgICAgKmJ5dGUgPSAoY2hhcilpdmFsOworICAgIHJldHVybiAxOworfQorCisjZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjU1OWM4Ci0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKiBGaW5kaW5nIHRoZSBvcHRpbWFsIHdpZHRoIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpbiBhIGJ1ZmZlciAqLworCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKworLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLworI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQorIyBkZWZpbmUgVUNTMV9BU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MDgwODA4MDgwVUwKKyNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQorIyBkZWZpbmUgVUNTMV9BU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MFVMCisjZWxzZQorIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQorI2VuZGlmCisKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK1NUUklOR0xJQihmaW5kX21heF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiAqYmVnaW4sIGNvbnN0IFNUUklOR0xJQl9DSEFSICplbmQpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIGJlZ2luOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFsaWduZWRfZW5kID0KKyAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGVuZCwgU0laRU9GX0xPTkcpOworCisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHAsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgICAgICByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpfcCA9IHA7CisgICAgICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYgVUNTMV9BU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyNTU7CisgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwID0gX3A7CisgICAgICAgICAgICBpZiAocCA9PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpwKysgJiAweDgwKQorICAgICAgICAgICAgcmV0dXJuIDI1NTsKKyAgICB9CisgICAgcmV0dXJuIDEyNzsKK30KKworI3VuZGVmIEFTQ0lJX0NIQVJfTUFTSworCisjZWxzZSAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMSAqLworCisjZGVmaW5lIE1BU0tfQVNDSUkgMHhGRkZGRkY4MAorI2RlZmluZSBNQVNLX1VDUzEgMHhGRkZGRkYwMAorI2RlZmluZSBNQVNLX1VDUzIgMHhGRkZGMDAwMAorCisjZGVmaW5lIE1BWF9DSEFSX0FTQ0lJIDB4N2YKKyNkZWZpbmUgTUFYX0NIQVJfVUNTMSAgMHhmZgorI2RlZmluZSBNQVhfQ0hBUl9VQ1MyICAweGZmZmYKKyNkZWZpbmUgTUFYX0NIQVJfVUNTNCAgMHgxMGZmZmYKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIoZmluZF9tYXhfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIgKmJlZ2luLCBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kKQoreworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisgICAgY29uc3QgUHlfVUNTNCBtYXNrX2xpbWl0ID0gTUFTS19VQ1MxOworICAgIGNvbnN0IFB5X1VDUzQgbWF4X2NoYXJfbGltaXQgPSBNQVhfQ0hBUl9VQ1MyOworI2VsaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDQKKyAgICBjb25zdCBQeV9VQ1M0IG1hc2tfbGltaXQgPSBNQVNLX1VDUzI7CisgICAgY29uc3QgUHlfVUNTNCBtYXhfY2hhcl9saW1pdCA9IE1BWF9DSEFSX1VDUzQ7CisjZWxzZQorI2Vycm9yIEludmFsaWQgU1RSSU5HTElCX1NJWkVPRl9DSEFSIChtdXN0IGJlIDEsIDIgb3IgNCkKKyNlbmRpZgorICAgIHJlZ2lzdGVyIFB5X1VDUzQgbWFzazsKKyAgICBQeV9zc2l6ZV90IG4gPSBlbmQgLSBiZWdpbjsKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcCA9IGJlZ2luOworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICp1bnJvbGxlZF9lbmQgPSBiZWdpbiArIF9QeV9TSVpFX1JPVU5EX0RPV04obiwgNCk7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKworICAgIG1heF9jaGFyID0gTUFYX0NIQVJfQVNDSUk7CisgICAgbWFzayA9IE1BU0tfQVNDSUk7CisgICAgd2hpbGUgKHAgPCB1bnJvbGxlZF9lbmQpIHsKKyAgICAgICAgU1RSSU5HTElCX0NIQVIgYml0cyA9IHBbMF0gfCBwWzFdIHwgcFsyXSB8IHBbM107CisgICAgICAgIGlmIChiaXRzICYgbWFzaykgeworICAgICAgICAgICAgaWYgKG1hc2sgPT0gbWFza19saW1pdCkgeworICAgICAgICAgICAgICAgIC8qIExpbWl0IHJlYWNoZWQgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gbWF4X2NoYXJfbGltaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWFzayA9PSBNQVNLX0FTQ0lJKSB7CisgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9VQ1MxOworICAgICAgICAgICAgICAgIG1hc2sgPSBNQVNLX1VDUzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtYXNrIGNhbid0IGJlIE1BU0tfVUNTMiBiZWNhdXNlIG9mIG1hc2tfbGltaXQgYWJvdmUgKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQobWFzayA9PSBNQVNLX1VDUzEpOworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMjsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UgY2hlY2sgdGhlIG5ldyBtYXNrIG9uIHRoZSBzYW1lIGNoYXJzIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgcCArPSA0OworICAgIH0KKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICBpZiAocFswXSAmIG1hc2spIHsKKyAgICAgICAgICAgIGlmIChtYXNrID09IG1hc2tfbGltaXQpIHsKKyAgICAgICAgICAgICAgICAvKiBMaW1pdCByZWFjaGVkICovCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heF9jaGFyX2xpbWl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hc2sgPT0gTUFTS19BU0NJSSkgeworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMTsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbWFzayBjYW4ndCBiZSBNQVNLX1VDUzIgYmVjYXVzZSBvZiBtYXNrX2xpbWl0IGFib3ZlICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KG1hc2sgPT0gTUFTS19VQ1MxKTsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzI7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlIGNoZWNrIHRoZSBuZXcgbWFzayBvbiB0aGUgc2FtZSBjaGFycyBpbiB0aGUgbmV4dCBpdGVyYXRpb24gKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHArKzsKKyAgICB9CisgICAgcmV0dXJuIG1heF9jaGFyOworfQorCisjdW5kZWYgTUFTS19BU0NJSQorI3VuZGVmIE1BU0tfVUNTMQorI3VuZGVmIE1BU0tfVUNTMgorI3VuZGVmIE1BWF9DSEFSX0FTQ0lJCisjdW5kZWYgTUFYX0NIQVJfVUNTMQorI3VuZGVmIE1BWF9DSEFSX1VDUzIKKyN1bmRlZiBNQVhfQ0hBUl9VQ1M0CisKKyNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMSAqLworI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzOWI1NmMuLjAwMDAwMDAKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTE2ICswLDAgQEAKLS8qIGltcGxlbWVudHMgdGhlIHN0cmluZywgbG9uZywgYW5kIGZsb2F0IGZvcm1hdHRlcnMuICB0aGF0IGlzLAotICAgc3RyaW5nLl9fZm9ybWF0X18sIGV0Yy4gKi8KLQotI2luY2x1ZGUgPGxvY2FsZS5oPgotCi0vKiBCZWZvcmUgaW5jbHVkaW5nIHRoaXMsIHlvdSBtdXN0IGluY2x1ZGUgZWl0aGVyOgotICAgc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKLSAgIHN0cmluZ2xpYi9zdHJpbmdkZWZzLmgKLQotICAgQWxzbywgeW91IHNob3VsZCBkZWZpbmUgdGhlIG5hbWVzOgotICAgRk9STUFUX1NUUklORwotICAgRk9STUFUX0xPTkcKLSAgIEZPUk1BVF9GTE9BVAotICAgRk9STUFUX0NPTVBMRVgKLSAgIHRvIGJlIHdoYXRldmVyIHlvdSB3YW50IHRoZSBwdWJsaWMgbmFtZXMgb2YgdGhlc2UgZnVuY3Rpb25zIHRvCi0gICBiZS4gIFRoZXNlIGFyZSB0aGUgb25seSBub24tc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIGhlcmUuCi0qLwotCi0vKiBSYWlzZXMgYW4gZXhjZXB0aW9uIGFib3V0IGFuIHVua25vd24gcHJlc2VudGF0aW9uIHR5cGUgZm9yIHRoaXMKLSAqIHR5cGUuICovCi0KLXN0YXRpYyB2b2lkCi11bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKFNUUklOR0xJQl9DSEFSIHByZXNlbnRhdGlvbl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX25hbWUpCi17Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICAvKiBJZiBTVFJJTkdMSUJfQ0hBUiBpcyBQeV9VTklDT0RFLCAlYyBtaWdodCBiZSBvdXQtb2YtcmFuZ2UsCi0gICAgICAgaGVuY2UgdGhlIHR3byBjYXNlcy4gSWYgaXQgaXMgY2hhciwgZ2NjIGNvbXBsYWlucyB0aGF0IHRoZQotICAgICAgIGNvbmRpdGlvbiBiZWxvdyBpcyBhbHdheXMgdHJ1ZSwgaGVuY2UgdGhlIGlmZGVmLiAqLwotICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQotI2VuZGlmCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJyVjJyAiCi0gICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKLSAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlLAotICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnXFx4JXgnICIKLSAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAotICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQKLWludmFsaWRfY29tbWFfdHlwZShTVFJJTkdMSUJfQ0hBUiBwcmVzZW50YXRpb25fdHlwZSkKLXsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIC8qIFNlZSBjb21tZW50IGluIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUgKi8KLSAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKLSNlbmRpZgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnJWMnLiIsCi0gICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSk7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKLSAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOwotI2VuZGlmCi19Ci0KLS8qCi0gICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCi0gICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQotICAgIGludGVnZXIsIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIGNvbnN1bWVkLgotCi0gICAgcmV0dXJucyAtMSBvbiBlcnJvci4KLSovCi1zdGF0aWMgaW50Ci1nZXRfaW50ZWdlcihTVFJJTkdMSUJfQ0hBUiAqKnB0ciwgU1RSSU5HTElCX0NIQVIgKmVuZCwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKLXsKLSAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbDsKLSAgICBpbnQgbnVtZGlnaXRzOwotICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKLSAgICBmb3IgKDs7KCpwdHIpKyssIG51bWRpZ2l0cysrKSB7Ci0gICAgICAgIGlmICgqcHRyID49IGVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkaWdpdHZhbCA9IFNUUklOR0xJQl9UT0RFQ0lNQUwoKipwdHIpOwotICAgICAgICBpZiAoZGlnaXR2YWwgPCAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qCi0gICAgICAgICAgIERldGVjdCBwb3NzaWJsZSBvdmVyZmxvdyBiZWZvcmUgaXQgaGFwcGVuczoKLQotICAgICAgICAgICAgICBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWwgPiBQWV9TU0laRV9UX01BWCBpZiBhbmQgb25seSBpZgotICAgICAgICAgICAgICBhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwLgotICAgICAgICAqLwotICAgICAgICBpZiAoYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmciKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbDsKLSAgICB9Ci0gICAgKnJlc3VsdCA9IGFjY3VtdWxhdG9yOwotICAgIHJldHVybiBudW1kaWdpdHM7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciBwYXJzaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogcmV0dXJucyB0cnVlIGlmIHRoaXMgY2hhcmFjdGVyIGlzIGEgc3BlY2lmaWVyIGFsaWdubWVudCB0b2tlbiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKLWlzX2FsaWdubWVudF90b2tlbihTVFJJTkdMSUJfQ0hBUiBjKQotewotICAgIHN3aXRjaCAoYykgewotICAgIGNhc2UgJzwnOiBjYXNlICc+JzogY2FzZSAnPSc6IGNhc2UgJ14nOgotICAgICAgICByZXR1cm4gMTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLS8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNpZ24gZWxlbWVudCAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKLWlzX3NpZ25fZWxlbWVudChTVFJJTkdMSUJfQ0hBUiBjKQotewotICAgIHN3aXRjaCAoYykgewotICAgIGNhc2UgJyAnOiBjYXNlICcrJzogY2FzZSAnLSc6Ci0gICAgICAgIHJldHVybiAxOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgZmlsbF9jaGFyOwotICAgIFNUUklOR0xJQl9DSEFSIGFsaWduOwotICAgIGludCBhbHRlcm5hdGU7Ci0gICAgU1RSSU5HTElCX0NIQVIgc2lnbjsKLSAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIGludCB0aG91c2FuZHNfc2VwYXJhdG9yczsKLSAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKLSAgICBTVFJJTkdMSUJfQ0hBUiB0eXBlOwotfSBJbnRlcm5hbEZvcm1hdFNwZWM7Ci0KLQotI2lmIDAKLS8qIE9jY2Fzc2lvbmFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFNob3VsZCBub3JtYWxseSBiZSBjb21tZW50ZWQgb3V0LiAqLwotc3RhdGljIHZvaWQKLURFQlVHX1BSSU5UX0ZPUk1BVF9TUEVDKEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGZpbGxfY2hhciAlZFxuIiwgZm9ybWF0LT5maWxsX2NoYXIpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsaWduICVkXG4iLCBmb3JtYXQtPmFsaWduKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbHRlcm5hdGUgJWRcbiIsIGZvcm1hdC0+YWx0ZXJuYXRlKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBzaWduICVkXG4iLCBmb3JtYXQtPnNpZ24pOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHdpZHRoICV6ZFxuIiwgZm9ybWF0LT53aWR0aCk7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdGhvdXNhbmRzX3NlcGFyYXRvcnMgJWRcbiIsCi0gICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHByZWNpc2lvbiAlemRcbiIsIGZvcm1hdC0+cHJlY2lzaW9uKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0eXBlICVjXG4iLCBmb3JtYXQtPnR5cGUpOwotICAgIHByaW50ZigiXG4iKTsKLX0KLSNlbmRpZgotCi0KLS8qCi0gIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmb3JtYXRfc3BlYywgZW5kIHBvaW50cyBqdXN0IHBhc3QgaXRzIGVuZC4KLSAgZmlsbHMgaW4gZm9ybWF0IHdpdGggdGhlIHBhcnNlZCBpbmZvcm1hdGlvbi4KLSAgcmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KLSAgaWYgZmFpbHVyZSwgc2V0cyB0aGUgZXhjZXB0aW9uCi0qLwotc3RhdGljIGludAotcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCi17Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0ciA9IGZvcm1hdF9zcGVjOwotICAgIFNUUklOR0xJQl9DSEFSICplbmQgPSBmb3JtYXRfc3BlYyArIGZvcm1hdF9zcGVjX2xlbjsKLQotICAgIC8qIGVuZC1wdHIgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKLSAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCi0KLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOwotCi0gICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnXDAnOwotICAgIGZvcm1hdC0+YWxpZ24gPSBkZWZhdWx0X2FsaWduOwotICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMDsKLSAgICBmb3JtYXQtPnNpZ24gPSAnXDAnOwotICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKLSAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMDsKLSAgICBmb3JtYXQtPnByZWNpc2lvbiA9IC0xOwotICAgIGZvcm1hdC0+dHlwZSA9IGRlZmF1bHRfdHlwZTsKLQotICAgIC8qIElmIHRoZSBzZWNvbmQgY2hhciBpcyBhbiBhbGlnbm1lbnQgdG9rZW4sCi0gICAgICAgdGhlbiBwYXJzZSB0aGUgZmlsbCBjaGFyICovCi0gICAgaWYgKGVuZC1wdHIgPj0gMiAmJiBpc19hbGlnbm1lbnRfdG9rZW4ocHRyWzFdKSkgewotICAgICAgICBmb3JtYXQtPmFsaWduID0gcHRyWzFdOwotICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9IHB0clswXTsKLSAgICAgICAgYWxpZ25fc3BlY2lmaWVkID0gMTsKLSAgICAgICAgcHRyICs9IDI7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVuZC1wdHIgPj0gMSAmJiBpc19hbGlnbm1lbnRfdG9rZW4ocHRyWzBdKSkgewotICAgICAgICBmb3JtYXQtPmFsaWduID0gcHRyWzBdOwotICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBQYXJzZSB0aGUgdmFyaW91cyBzaWduIG9wdGlvbnMgKi8KLSAgICBpZiAoZW5kLXB0ciA+PSAxICYmIGlzX3NpZ25fZWxlbWVudChwdHJbMF0pKSB7Ci0gICAgICAgIGZvcm1hdC0+c2lnbiA9IHB0clswXTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogSWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzICMsIHdlJ3JlIGluIGFsdGVybmF0ZSBtb2RlLiAgVGhpcyBvbmx5Ci0gICAgICAgYXBwbGllcyB0byBpbnRlZ2Vycy4gKi8KLSAgICBpZiAoZW5kLXB0ciA+PSAxICYmIHB0clswXSA9PSAnIycpIHsKLSAgICAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAxOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBUaGUgc3BlY2lhbCBjYXNlIGZvciAwLXBhZGRpbmcgKGJhY2t3YXJkcyBjb21wYXQpICovCi0gICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgJiYgZW5kLXB0ciA+PSAxICYmIHB0clswXSA9PSAnMCcpIHsKLSAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnMCc7Ci0gICAgICAgIGlmICghYWxpZ25fc3BlY2lmaWVkKSB7Ci0gICAgICAgICAgICBmb3JtYXQtPmFsaWduID0gJz0nOwotICAgICAgICB9Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoJnB0ciwgZW5kLCAmZm9ybWF0LT53aWR0aCk7Ci0gICAgaWYgKGNvbnN1bWVkID09IC0xKQotICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLwotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIElmIGNvbnN1bWVkIGlzIDAsIHdlIGRpZG4ndCBjb25zdW1lIGFueSBjaGFyYWN0ZXJzIGZvciB0aGUKLSAgICAgICB3aWR0aC4gSW4gdGhhdCBjYXNlLCByZXNldCB0aGUgd2lkdGggdG8gLTEsIGJlY2F1c2UKLSAgICAgICBnZXRfaW50ZWdlcigpIHdpbGwgaGF2ZSBzZXQgaXQgdG8gemVyby4gLTEgaXMgaG93IHdlIHJlY29yZAotICAgICAgIHRoYXQgdGhlIHdpZHRoIHdhc24ndCBzcGVjaWZpZWQuICovCi0gICAgaWYgKGNvbnN1bWVkID09IDApCi0gICAgICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKLQotICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KLSAgICBpZiAoZW5kLXB0ciAmJiBwdHJbMF0gPT0gJywnKSB7Ci0gICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAxOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBQYXJzZSBmaWVsZCBwcmVjaXNpb24gKi8KLSAgICBpZiAoZW5kLXB0ciAmJiBwdHJbMF0gPT0gJy4nKSB7Ci0gICAgICAgICsrcHRyOwotCi0gICAgICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoJnB0ciwgZW5kLCAmZm9ybWF0LT5wcmVjaXNpb24pOwotICAgICAgICBpZiAoY29uc3VtZWQgPT0gLTEpCi0gICAgICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgLyogTm90IGhhdmluZyBhIHByZWNpc2lvbiBhZnRlciBhIGRvdCBpcyBhbiBlcnJvci4gKi8KLSAgICAgICAgaWYgKGNvbnN1bWVkID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG1pc3NpbmcgcHJlY2lzaW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgfQotCi0gICAgLyogRmluYWxseSwgcGFyc2UgdGhlIHR5cGUgZmllbGQuICovCi0KLSAgICBpZiAoZW5kLXB0ciA+IDEpIHsKLSAgICAgICAgLyogTW9yZSB0aGFuIG9uZSBjaGFyIHJlbWFpbiwgaW52YWxpZCBjb252ZXJzaW9uIHNwZWMuICovCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBjb252ZXJzaW9uIHNwZWNpZmljYXRpb24iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKGVuZC1wdHIgPT0gMSkgewotICAgICAgICBmb3JtYXQtPnR5cGUgPSBwdHJbMF07Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIERvIGFzIG11Y2ggdmFsaWRhdGluZyBhcyB3ZSBjYW4sIGp1c3QgYnkgbG9va2luZyBhdCB0aGUgZm9ybWF0Ci0gICAgICAgc3BlY2lmaWVyLiAgRG8gbm90IHRha2UgaW50byBhY2NvdW50IHdoYXQgdHlwZSBvZiBmb3JtYXR0aW5nCi0gICAgICAgd2UncmUgZG9pbmcgKGludCwgZmxvYXQsIHN0cmluZykuICovCi0KLSAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycykgewotICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgewotICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgIGNhc2UgJ2YnOgotICAgICAgICBjYXNlICdnJzoKLSAgICAgICAgY2FzZSAnRSc6Ci0gICAgICAgIGNhc2UgJ0cnOgotICAgICAgICBjYXNlICclJzoKLSAgICAgICAgY2FzZSAnRic6Ci0gICAgICAgIGNhc2UgJ1wwJzoKLSAgICAgICAgICAgIC8qIFRoZXNlIGFyZSBhbGxvd2VkLiBTZWUgUEVQIDM3OC4qLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpbnZhbGlkX2NvbW1hX3R5cGUoZm9ybWF0LT50eXBlKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIENhbGN1bGF0ZSB0aGUgcGFkZGluZyBuZWVkZWQuICovCi1zdGF0aWMgdm9pZAotY2FsY19wYWRkaW5nKFB5X3NzaXplX3QgbmNoYXJzLCBQeV9zc2l6ZV90IHdpZHRoLCBTVFJJTkdMSUJfQ0hBUiBhbGlnbiwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX2xwYWRkaW5nLCBQeV9zc2l6ZV90ICpuX3JwYWRkaW5nLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fdG90YWwpCi17Ci0gICAgaWYgKHdpZHRoID49IDApIHsKLSAgICAgICAgaWYgKG5jaGFycyA+IHdpZHRoKQotICAgICAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpuX3RvdGFsID0gd2lkdGg7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBub3Qgc3BlY2lmaWVkLCB1c2UgYWxsIG9mIHRoZSBjaGFycyBhbmQgbm8gbW9yZSAqLwotICAgICAgICAqbl90b3RhbCA9IG5jaGFyczsKLSAgICB9Ci0KLSAgICAvKiBGaWd1cmUgb3V0IGhvdyBtdWNoIGxlYWRpbmcgc3BhY2Ugd2UgbmVlZCwgYmFzZWQgb24gdGhlCi0gICAgICAgYWxpZ25pbmcgKi8KLSAgICBpZiAoYWxpZ24gPT0gJz4nKQotICAgICAgICAqbl9scGFkZGluZyA9ICpuX3RvdGFsIC0gbmNoYXJzOwotICAgIGVsc2UgaWYgKGFsaWduID09ICdeJykKLSAgICAgICAgKm5fbHBhZGRpbmcgPSAoKm5fdG90YWwgLSBuY2hhcnMpIC8gMjsKLSAgICBlbHNlIGlmIChhbGlnbiA9PSAnPCcgfHwgYWxpZ24gPT0gJz0nKQotICAgICAgICAqbl9scGFkZGluZyA9IDA7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIFdlIHNob3VsZCBuZXZlciBoYXZlIGFuIHVuc3BlY2lmaWVkIGFsaWdubWVudC4gKi8KLSAgICAgICAgKm5fbHBhZGRpbmcgPSAwOwotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgfQotCi0gICAgKm5fcnBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFycyAtICpuX2xwYWRkaW5nOwotfQotCi0vKiBEbyB0aGUgcGFkZGluZywgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGNhbGxlci1zdXBwbGllZAotICAgY29udGVudCBnb2VzLiAqLwotc3RhdGljIFNUUklOR0xJQl9DSEFSICoKLWZpbGxfcGFkZGluZyhTVFJJTkdMSUJfQ0hBUiAqcCwgUHlfc3NpemVfdCBuY2hhcnMsIFNUUklOR0xJQl9DSEFSIGZpbGxfY2hhciwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fbHBhZGRpbmcsIFB5X3NzaXplX3Qgbl9ycGFkZGluZykKLXsKLSAgICAvKiBQYWQgb24gbGVmdC4gKi8KLSAgICBpZiAobl9scGFkZGluZykKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwocCwgZmlsbF9jaGFyLCBuX2xwYWRkaW5nKTsKLQotICAgIC8qIFBhZCBvbiByaWdodC4gKi8KLSAgICBpZiAobl9ycGFkZGluZykKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwocCArIG5jaGFycyArIG5fbHBhZGRpbmcsIGZpbGxfY2hhciwgbl9ycGFkZGluZyk7Ci0KLSAgICAvKiBQb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRlbnQuICovCi0gICAgcmV0dXJuIHAgKyBuX2xwYWRkaW5nOwotfQotCi0jaWYgZGVmaW5lZCBGT1JNQVRfRkxPQVQgfHwgZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9DT01QTEVYCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGNvbW1vbiByb3V0aW5lcyBmb3IgbnVtZXJpYyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIExvY2FsZSB0eXBlIGNvZGVzLiAqLwotI2RlZmluZSBMVF9DVVJSRU5UX0xPQ0FMRSAwCi0jZGVmaW5lIExUX0RFRkFVTFRfTE9DQUxFIDEKLSNkZWZpbmUgTFRfTk9fTE9DQUxFIDIKLQotLyogTG9jYWxlIGluZm8gbmVlZGVkIGZvciBmb3JtYXR0aW5nIGludGVnZXJzIGFuZCB0aGUgcGFydCBvZiBmbG9hdHMKLSAgIGJlZm9yZSBhbmQgaW5jbHVkaW5nIHRoZSBkZWNpbWFsLiBOb3RlIHRoYXQgbG9jYWxlcyBvbmx5IHN1cHBvcnQKLSAgIDgtYml0IGNoYXJzLCBub3QgdW5pY29kZS4gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBjaGFyICpkZWNpbWFsX3BvaW50OwotICAgIGNoYXIgKnRob3VzYW5kc19zZXA7Ci0gICAgY2hhciAqZ3JvdXBpbmc7Ci19IExvY2FsZUluZm87Ci0KLS8qIGRlc2NyaWJlcyB0aGUgbGF5b3V0IGZvciBhbiBpbnRlZ2VyLCBzZWUgdGhlIGNvbW1lbnQgaW4KLSAgIGNhbGNfbnVtYmVyX3dpZHRocygpIGZvciBkZXRhaWxzICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlfc3NpemVfdCBuX2xwYWRkaW5nOwotICAgIFB5X3NzaXplX3Qgbl9wcmVmaXg7Ci0gICAgUHlfc3NpemVfdCBuX3NwYWRkaW5nOwotICAgIFB5X3NzaXplX3Qgbl9ycGFkZGluZzsKLSAgICBjaGFyIHNpZ247Ci0gICAgUHlfc3NpemVfdCBuX3NpZ247ICAgICAgLyogbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgZm9yIHNpZ24gKDAvMSkgKi8KLSAgICBQeV9zc2l6ZV90IG5fZ3JvdXBlZF9kaWdpdHM7IC8qIFNwYWNlIHRha2VuIHVwIGJ5IHRoZSBkaWdpdHMsIGluY2x1ZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGdyb3VwaW5nIGNoYXJzLiAqLwotICAgIFB5X3NzaXplX3Qgbl9kZWNpbWFsOyAgIC8qIDAgaWYgb25seSBhbiBpbnRlZ2VyICovCi0gICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsgLyogRGlnaXRzIGluIGRlY2ltYWwgYW5kL29yIGV4cG9uZW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkaW5nIHRoZSBkZWNpbWFsIGl0c2VsZiwgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50LiAqLwotCi0gICAgLyogVGhlc2UgMiBhcmUgbm90IHRoZSB3aWR0aHMgb2YgZmllbGRzLCBidXQgYXJlIG5lZWRlZCBieQotICAgICAgIFNUUklOR0xJQl9HUk9VUElORy4gKi8KLSAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAvKiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBiZWZvcmUgYSBkZWNpbWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZXhwb25lbnQuICovCi0gICAgUHlfc3NpemVfdCBuX21pbl93aWR0aDsgLyogVGhlIG1pbl93aWR0aCB3ZSB1c2VkIHdoZW4gd2UgY29tcHV0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbl9ncm91cGVkX2RpZ2l0cyB3aWR0aC4gKi8KLX0gTnVtYmVyRmllbGRXaWR0aHM7Ci0KLQotLyogR2l2ZW4gYSBudW1iZXIgb2YgdGhlIGZvcm06Ci0gICBkaWdpdHNbcmVtYWluZGVyXQotICAgd2hlcmUgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgdG8gdGhlIGVuZCwgZmluZCB3aGVyZQotICAgIHRoZSBpbnRlZ2VyIHBhcnQgZW5kcy4gVGhpcyBjb3VsZCBiZSBhIGRlY2ltYWwsIGFuIGV4cG9uZW50LCBib3RoLAotICAgIG9yIG5laXRoZXIuCi0gICBJZiBhIGRlY2ltYWwgcG9pbnQgaXMgcHJlc2VudCwgc2V0ICpoYXNfZGVjaW1hbCBhbmQgaW5jcmVtZW50Ci0gICAgcmVtYWluZGVyIGJleW9uZCBpdC4KLSAgIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCAoYnV0IHNob3VsZG4ndCBjcmFzaCkgZm9yIGltcHJvcGVybHkKLSAgICBmb3JtYXR0ZWQgc3RyaW5ncy4KLSovCi1zdGF0aWMgdm9pZAotcGFyc2VfbnVtYmVyKFNUUklOR0xJQl9DSEFSICpwdHIsIFB5X3NzaXplX3QgbGVuLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fcmVtYWluZGVyLCBpbnQgKmhhc19kZWNpbWFsKQotewotICAgIFNUUklOR0xJQl9DSEFSICplbmQgPSBwdHIgKyBsZW47Ci0gICAgU1RSSU5HTElCX0NIQVIgKnJlbWFpbmRlcjsKLQotICAgIHdoaWxlIChwdHI8ZW5kICYmIGlzZGlnaXQoKnB0cikpCi0gICAgICAgICsrcHRyOwotICAgIHJlbWFpbmRlciA9IHB0cjsKLQotICAgIC8qIERvZXMgcmVtYWluZGVyIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50PyAqLwotICAgICpoYXNfZGVjaW1hbCA9IHB0cjxlbmQgJiYgKnJlbWFpbmRlciA9PSAnLic7Ci0KLSAgICAvKiBTa2lwIHRoZSBkZWNpbWFsIHBvaW50LiAqLwotICAgIGlmICgqaGFzX2RlY2ltYWwpCi0gICAgICAgIHJlbWFpbmRlcisrOwotCi0gICAgKm5fcmVtYWluZGVyID0gZW5kIC0gcmVtYWluZGVyOwotfQotCi0vKiBub3QgYWxsIGZpZWxkcyBvZiBmb3JtYXQgYXJlIHVzZWQuICBmb3IgZXhhbXBsZSwgcHJlY2lzaW9uIGlzCi0gICB1bnVzZWQuICBzaG91bGQgdGhpcyB0YWtlIGRpc2NyZXRlIHBhcmFtcyBpbiBvcmRlciB0byBiZSBtb3JlIGNsZWFyCi0gICBhYm91dCB3aGF0IGl0IGRvZXM/ICBvciBpcyBwYXNzaW5nIGEgc2luZ2xlIGZvcm1hdCBwYXJhbWV0ZXIgZWFzaWVyCi0gICBhbmQgbW9yZSBlZmZpY2llbnQgZW5vdWdoIHRvIGp1c3RpZnkgYSBsaXR0bGUgb2JmdXNjYXRpb24/ICovCi1zdGF0aWMgUHlfc3NpemVfdAotY2FsY19udW1iZXJfd2lkdGhzKE51bWJlckZpZWxkV2lkdGhzICpzcGVjLCBQeV9zc2l6ZV90IG5fcHJlZml4LAotICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIHNpZ25fY2hhciwgU1RSSU5HTElCX0NIQVIgKm51bWJlciwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fbnVtYmVyLCBQeV9zc2l6ZV90IG5fcmVtYWluZGVyLAotICAgICAgICAgICAgICAgICAgIGludCBoYXNfZGVjaW1hbCwgY29uc3QgTG9jYWxlSW5mbyAqbG9jYWxlLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIFB5X3NzaXplX3Qgbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7Ci0gICAgUHlfc3NpemVfdCBuX3BhZGRpbmc7Ci0KLSAgICBzcGVjLT5uX2RpZ2l0cyA9IG5fbnVtYmVyIC0gbl9yZW1haW5kZXIgLSAoaGFzX2RlY2ltYWw/MTowKTsKLSAgICBzcGVjLT5uX2xwYWRkaW5nID0gMDsKLSAgICBzcGVjLT5uX3ByZWZpeCA9IG5fcHJlZml4OwotICAgIHNwZWMtPm5fZGVjaW1hbCA9IGhhc19kZWNpbWFsID8gc3RybGVuKGxvY2FsZS0+ZGVjaW1hbF9wb2ludCkgOiAwOwotICAgIHNwZWMtPm5fcmVtYWluZGVyID0gbl9yZW1haW5kZXI7Ci0gICAgc3BlYy0+bl9zcGFkZGluZyA9IDA7Ci0gICAgc3BlYy0+bl9ycGFkZGluZyA9IDA7Ci0gICAgc3BlYy0+c2lnbiA9ICdcMCc7Ci0gICAgc3BlYy0+bl9zaWduID0gMDsKLQotICAgIC8qIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2U6Ci0gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgIHwgPGxwYWRkaW5nPiA8c2lnbj4gPHByZWZpeD4gPHNwYWRkaW5nPiA8Z3JvdXBlZF9kaWdpdHM+IDxkZWNpbWFsPiA8cmVtYWluZGVyPiA8cnBhZGRpbmc+IHwKLSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSAgICAgICBzaWduIGlzIGNvbXB1dGVkIGZyb20gZm9ybWF0LT5zaWduIGFuZCB0aGUgYWN0dWFsCi0gICAgICAgc2lnbiBvZiB0aGUgbnVtYmVyCi0KLSAgICAgICBwcmVmaXggaXMgZ2l2ZW4gKGl0J3MgZm9yIHRoZSAnMHgnIHByZWZpeCkKLQotICAgICAgIGRpZ2l0cyBpcyBhbHJlYWR5IGtub3duCi0KLSAgICAgICB0aGUgdG90YWwgd2lkdGggaXMgZWl0aGVyIGdpdmVuLCBvciBjb21wdXRlZCBmcm9tIHRoZQotICAgICAgIGFjdHVhbCBkaWdpdHMKLQotICAgICAgIG9ubHkgb25lIG9mIGxwYWRkaW5nLCBzcGFkZGluZywgYW5kIHJwYWRkaW5nIGNhbiBiZSBub24temVybywKLSAgICAgICBhbmQgaXQncyBjYWxjdWxhdGVkIGZyb20gdGhlIHdpZHRoIGFuZCBvdGhlciBmaWVsZHMKLSAgICAqLwotCi0gICAgLyogY29tcHV0ZSB0aGUgdmFyaW91cyBwYXJ0cyB3ZSdyZSBnb2luZyB0byB3cml0ZSAqLwotICAgIHN3aXRjaCAoZm9ybWF0LT5zaWduKSB7Ci0gICAgY2FzZSAnKyc6Ci0gICAgICAgIC8qIGFsd2F5cyBwdXQgYSArIG9yIC0gKi8KLSAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKLSAgICAgICAgc3BlYy0+c2lnbiA9IChzaWduX2NoYXIgPT0gJy0nID8gJy0nIDogJysnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnICc6Ci0gICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7Ci0gICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcgJyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIE5vdCBzcGVjaWZpZWQsIG9yIHRoZSBkZWZhdWx0ICgtKSAqLwotICAgICAgICBpZiAoc2lnbl9jaGFyID09ICctJykgewotICAgICAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKLSAgICAgICAgICAgIHNwZWMtPnNpZ24gPSAnLSc7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBUaGUgbnVtYmVyIG9mIGNoYXJzIHVzZWQgZm9yIG5vbi1kaWdpdHMgYW5kIG5vbi1wYWRkaW5nLiAqLwotICAgIG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nID0gc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKyBzcGVjLT5uX2RlY2ltYWwgKwotICAgICAgICBzcGVjLT5uX3JlbWFpbmRlcjsKLQotICAgIC8qIG1pbl93aWR0aCBjYW4gZ28gbmVnYXRpdmUsIHRoYXQncyBva2F5LiBmb3JtYXQtPndpZHRoID09IC0xIG1lYW5zCi0gICAgICAgd2UgZG9uJ3QgY2FyZS4gKi8KLSAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnICYmIGZvcm1hdC0+YWxpZ24gPT0gJz0nKQotICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IGZvcm1hdC0+d2lkdGggLSBuX25vbl9kaWdpdF9ub25fcGFkZGluZzsKLSAgICBlbHNlCi0gICAgICAgIHNwZWMtPm5fbWluX3dpZHRoID0gMDsKLQotICAgIGlmIChzcGVjLT5uX2RpZ2l0cyA9PSAwKQotICAgICAgICAvKiBUaGlzIGNhc2Ugb25seSBvY2N1cnMgd2hlbiB1c2luZyAnYycgZm9ybWF0dGluZywgd2UgbmVlZAotICAgICAgICAgICB0byBzcGVjaWFsIGNhc2UgaXQgYmVjYXVzZSB0aGUgZ3JvdXBpbmcgY29kZSBhbHdheXMgd2FudHMKLSAgICAgICAgICAgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLiAqLwotICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gMDsKLSAgICBlbHNlCi0gICAgICAgIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgPSBTVFJJTkdMSUJfR1JPVVBJTkcoTlVMTCwgMCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX21pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCk7Ci0KLSAgICAvKiBHaXZlbiB0aGUgZGVzaXJlZCB3aWR0aCBhbmQgdGhlIHRvdGFsIG9mIGRpZ2l0IGFuZCBub24tZGlnaXQKLSAgICAgICBzcGFjZSB3ZSBjb25zdW1lLCBzZWUgaWYgd2UgbmVlZCBhbnkgcGFkZGluZy4gZm9ybWF0LT53aWR0aCBjYW4KLSAgICAgICBiZSBuZWdhdGl2ZSAobWVhbmluZyBubyBwYWRkaW5nKSwgYnV0IHRoaXMgY29kZSBzdGlsbCB3b3JrcyBpbgotICAgICAgIHRoYXQgY2FzZS4gKi8KLSAgICBuX3BhZGRpbmcgPSBmb3JtYXQtPndpZHRoIC0KLSAgICAgICAgICAgICAgICAgICAgICAgIChuX25vbl9kaWdpdF9ub25fcGFkZGluZyArIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOwotICAgIGlmIChuX3BhZGRpbmcgPiAwKSB7Ci0gICAgICAgIC8qIFNvbWUgcGFkZGluZyBpcyBuZWVkZWQuIERldGVybWluZSBpZiBpdCdzIGxlZnQsIHNwYWNlLCBvciByaWdodC4gKi8KLSAgICAgICAgc3dpdGNoIChmb3JtYXQtPmFsaWduKSB7Ci0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdeJzoKLSAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmcgLyAyOwotICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZyAtIHNwZWMtPm5fbHBhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPSc6Ci0gICAgICAgICAgICBzcGVjLT5uX3NwYWRkaW5nID0gbl9wYWRkaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz4nOgotICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLyogU2hvdWxkbid0IGdldCBoZXJlLCBidXQgdHJlYXQgaXQgYXMgJz4nICovCi0gICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nOwotICAgICAgICAgICAgYXNzZXJ0KDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNwZWMtPm5fbHBhZGRpbmcgKyBzcGVjLT5uX3NpZ24gKyBzcGVjLT5uX3ByZWZpeCArCi0gICAgICAgIHNwZWMtPm5fc3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzICsgc3BlYy0+bl9kZWNpbWFsICsKLSAgICAgICAgc3BlYy0+bl9yZW1haW5kZXIgKyBzcGVjLT5uX3JwYWRkaW5nOwotfQotCi0vKiBGaWxsIGluIHRoZSBkaWdpdCBwYXJ0cyBvZiBhIG51bWJlcnMncyBzdHJpbmcgcmVwcmVzZW50YXRpb24sCi0gICBhcyBkZXRlcm1pbmVkIGluIGNhbGNfbnVtYmVyX3dpZHRocygpLgotICAgTm8gZXJyb3IgY2hlY2tpbmcsIHNpbmNlIHdlIGtub3cgdGhlIGJ1ZmZlciBpcyB0aGUgY29ycmVjdCBzaXplLiAqLwotc3RhdGljIHZvaWQKLWZpbGxfbnVtYmVyKFNUUklOR0xJQl9DSEFSICpidWYsIGNvbnN0IE51bWJlckZpZWxkV2lkdGhzICpzcGVjLAotICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0cywgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpwcmVmaXgsIFNUUklOR0xJQl9DSEFSIGZpbGxfY2hhciwKLSAgICAgICAgICAgIExvY2FsZUluZm8gKmxvY2FsZSwgaW50IHRvdXBwZXIpCi17Ci0gICAgLyogVXNlZCB0byBrZWVwIHRyYWNrIG9mIGRpZ2l0cywgZGVjaW1hbCwgYW5kIHJlbWFpbmRlci4gKi8KLSAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRpZ2l0czsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBQeV9zc2l6ZV90IHI7Ci0jZW5kaWYKLQotICAgIGlmIChzcGVjLT5uX2xwYWRkaW5nKSB7Ci0gICAgICAgIFNUUklOR0xJQl9GSUxMKGJ1ZiwgZmlsbF9jaGFyLCBzcGVjLT5uX2xwYWRkaW5nKTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fbHBhZGRpbmc7Ci0gICAgfQotICAgIGlmIChzcGVjLT5uX3NpZ24gPT0gMSkgewotICAgICAgICAqYnVmKysgPSBzcGVjLT5zaWduOwotICAgIH0KLSAgICBpZiAoc3BlYy0+bl9wcmVmaXgpIHsKLSAgICAgICAgbWVtbW92ZShidWYsCi0gICAgICAgICAgICAgICAgcHJlZml4LAotICAgICAgICAgICAgICAgIHNwZWMtPm5fcHJlZml4ICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgIGlmICh0b3VwcGVyKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHQ7Ci0gICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9wcmVmaXg7ICsrdCkKLSAgICAgICAgICAgICAgICBidWZbdF0gPSBTVFJJTkdMSUJfVE9VUFBFUihidWZbdF0pOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3ByZWZpeDsKLSAgICB9Ci0gICAgaWYgKHNwZWMtPm5fc3BhZGRpbmcpIHsKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwoYnVmLCBmaWxsX2NoYXIsIHNwZWMtPm5fc3BhZGRpbmcpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9zcGFkZGluZzsKLSAgICB9Ci0KLSAgICAvKiBPbmx5IGZvciB0eXBlICdjJyBzcGVjaWFsIGNhc2UsIGl0IGhhcyBubyBkaWdpdHMuICovCi0gICAgaWYgKHNwZWMtPm5fZGlnaXRzICE9IDApIHsKLSAgICAgICAgLyogRmlsbCB0aGUgZGlnaXRzIHdpdGggSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcuICovCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICByID0KLSNlbmRpZgotICAgICAgICAgICAgU1RSSU5HTElCX0dST1VQSU5HKGJ1Ziwgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cywgZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLCBzcGVjLT5uX21pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLCBsb2NhbGUtPnRob3VzYW5kc19zZXApOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYXNzZXJ0KHIgPT0gc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyk7Ci0jZW5kaWYKLSAgICAgICAgcCArPSBzcGVjLT5uX2RpZ2l0czsKLSAgICB9Ci0gICAgaWYgKHRvdXBwZXIpIHsKLSAgICAgICAgUHlfc3NpemVfdCB0OwotICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9ncm91cGVkX2RpZ2l0czsgKyt0KQotICAgICAgICAgICAgYnVmW3RdID0gU1RSSU5HTElCX1RPVVBQRVIoYnVmW3RdKTsKLSAgICB9Ci0gICAgYnVmICs9IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7Ci0KLSAgICBpZiAoc3BlYy0+bl9kZWNpbWFsKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgdDsKLSAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fZGVjaW1hbDsgKyt0KQotICAgICAgICAgICAgYnVmW3RdID0gbG9jYWxlLT5kZWNpbWFsX3BvaW50W3RdOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9kZWNpbWFsOwotICAgICAgICBwICs9IDE7Ci0gICAgfQotCi0gICAgaWYgKHNwZWMtPm5fcmVtYWluZGVyKSB7Ci0gICAgICAgIG1lbWNweShidWYsIHAsIHNwZWMtPm5fcmVtYWluZGVyICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3JlbWFpbmRlcjsKLSAgICAgICAgcCArPSBzcGVjLT5uX3JlbWFpbmRlcjsKLSAgICB9Ci0KLSAgICBpZiAoc3BlYy0+bl9ycGFkZGluZykgewotICAgICAgICBTVFJJTkdMSUJfRklMTChidWYsIGZpbGxfY2hhciwgc3BlYy0+bl9ycGFkZGluZyk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3JwYWRkaW5nOwotICAgIH0KLX0KLQotc3RhdGljIGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9OwotCi0vKiBGaW5kIHRoZSBkZWNpbWFsIHBvaW50IGNoYXJhY3RlcihzPyksIHRob3VzYW5kc19zZXBhcmF0b3Iocz8pLCBhbmQKLSAgIGdyb3VwaW5nIGRlc2NyaXB0aW9uLCBlaXRoZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSBpZiB0eXBlIGlzCi0gICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSwgb3IKLSAgIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLwotc3RhdGljIHZvaWQKLWdldF9sb2NhbGVfaW5mbyhpbnQgdHlwZSwgTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBMVF9DVVJSRU5UX0xPQ0FMRTogewotICAgICAgICBzdHJ1Y3QgbGNvbnYgKmxvY2FsZV9kYXRhID0gbG9jYWxlY29udigpOwotICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IGxvY2FsZV9kYXRhLT5kZWNpbWFsX3BvaW50OwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IGxvY2FsZV9kYXRhLT50aG91c2FuZHNfc2VwOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBsb2NhbGVfZGF0YS0+Z3JvdXBpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIExUX0RFRkFVTFRfTE9DQUxFOgotICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9ICIuIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSAiLCI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGljaXQpIHRyYWlsaW5nIDAgbWVhbnMgcmVwZWF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmluaXRlbHkuICovCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTFRfTk9fTE9DQUxFOgotICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9ICIuIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSAiIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gbm9fZ3JvdXBpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGFzc2VydCgwKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvKiBGT1JNQVRfRkxPQVQgfHwgRk9STUFUX0xPTkcgfHwgRk9STUFUX0NPTVBMRVggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBzdHJpbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIFB5X3NzaXplX3QgbHBhZDsKLSAgICBQeV9zc2l6ZV90IHJwYWQ7Ci0gICAgUHlfc3NpemVfdCB0b3RhbDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcDsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFNUUklOR0xJQl9MRU4odmFsdWUpOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgLyogc2lnbiBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCi0gICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ24gbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIGFsdGVybmF0ZSBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCi0gICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qICc9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLwotICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogaWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgb3V0cHV0IG5vIG1vcmUgdGhhdCBmb3JtYXQucHJlY2lzaW9uCi0gICAgICAgY2hhcmFjdGVycyAqLwotICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiA+PSAwICYmIGxlbiA+PSBmb3JtYXQtPnByZWNpc2lvbikgewotICAgICAgICBsZW4gPSBmb3JtYXQtPnByZWNpc2lvbjsKLSAgICB9Ci0KLSAgICBjYWxjX3BhZGRpbmcobGVuLCBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7Ci0KLSAgICAvKiBhbGxvY2F0ZSB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLwotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgdG90YWwpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogV3JpdGUgaW50byB0aGF0IHNwYWNlLiBGaXJzdCB0aGUgcGFkZGluZy4gKi8KLSAgICBwID0gZmlsbF9wYWRkaW5nKFNUUklOR0xJQl9TVFIocmVzdWx0KSwgbGVuLAotICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXI9PSdcMCc/JyAnOmZvcm1hdC0+ZmlsbF9jaGFyLAotICAgICAgICAgICAgICAgICAgICAgbHBhZCwgcnBhZCk7Ci0KLSAgICAvKiBUaGVuIHRoZSBzb3VyY2Ugc3RyaW5nLiAqLwotICAgIG1lbWNweShwLCBTVFJJTkdMSUJfU1RSKHZhbHVlKSwgbGVuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0KLWRvbmU6Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGxvbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVAotdHlwZWRlZiBQeU9iamVjdCoKLSgqSW50T3JMb25nVG9TdHJpbmcpKFB5T2JqZWN0ICp2YWx1ZSwgaW50IGJhc2UpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X2ludF9vcl9sb25nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50T3JMb25nVG9TdHJpbmcgdG9zdHJpbmcpCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnBudW1lcmljX2NoYXJzOwotICAgIFNUUklOR0xJQl9DSEFSIG51bWVyaWNfY2hhcjsKLSAgICBTVFJJTkdMSUJfQ0hBUiBzaWduX2NoYXIgPSAnXDAnOwotICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7ICAgICAgIC8qIGNvdW50IG9mIGRpZ2l0cyBuZWVkIGZyb20gdGhlIGNvbXB1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICovCi0gICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlciA9IDA7IC8qIFVzZWQgb25seSBmb3IgJ2MnIGZvcm1hdHRpbmcsIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIG5vbi1kaWdpdHMgKi8KLSAgICBQeV9zc2l6ZV90IG5fcHJlZml4ID0gMDsgICAvKiBDb3VudCBvZiBwcmVmaXggY2hhcnMsIChlLmcuLCAnMHgnKSAqLwotICAgIFB5X3NzaXplX3Qgbl90b3RhbDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcHJlZml4ID0gTlVMTDsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyBzcGVjOwotICAgIGxvbmcgeDsKLQotICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKLSAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KLSAgICBMb2NhbGVJbmZvIGxvY2FsZTsKLQotICAgIC8qIG5vIHByZWNpc2lvbiBhbGxvd2VkIG9uIGludGVnZXJzICovCi0gICAgaWYgKGZvcm1hdC0+cHJlY2lzaW9uICE9IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlByZWNpc2lvbiBub3QgYWxsb3dlZCBpbiBpbnRlZ2VyIGZvcm1hdCBzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgY2hhcmFjdGVyIGZvcm1hdHRpbmcgKi8KLSAgICBpZiAoZm9ybWF0LT50eXBlID09ICdjJykgewotICAgICAgICAvKiBlcnJvciB0byBzcGVjaWZ5IGEgc2lnbiAqLwotICAgICAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIHdpdGggaW50ZWdlciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCBzcGVjaWZpZXIgJ2MnIik7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiB0YWtlbiBmcm9tIHVuaWNvZGVvYmplY3QuYyBmb3JtYXRjaGFyKCkgKi8KLSAgICAgICAgLyogSW50ZWdlciBpbnB1dCB0cnVuY2F0ZWQgdG8gYSBjaGFyYWN0ZXIgKi8KLS8qIFhYWDogd29uJ3Qgd29yayBmb3IgaW50ICovCi0gICAgICAgIHggPSBQeUxvbmdfQXNMb25nKHZhbHVlKTsKLSAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweDEwZmZmZikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHdpZGUgUHl0aG9uIGJ1aWxkKSIpOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4ZmZmZikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMDAwMCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIobmFycm93IFB5dGhvbiBidWlsZCkiKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIG51bWVyaWNfY2hhciA9IChTVFJJTkdMSUJfQ0hBUil4OwotICAgICAgICBwbnVtZXJpY19jaGFycyA9ICZudW1lcmljX2NoYXI7Ci0gICAgICAgIG5fZGlnaXRzID0gMTsKLQotICAgICAgICAvKiBBcyBhIHNvcnQtb2YgaGFjaywgd2UgdGVsbCBjYWxjX251bWJlcl93aWR0aHMgdGhhdCB3ZSBvbmx5Ci0gICAgICAgICAgIGhhdmUgInJlbWFpbmRlciIgY2hhcmFjdGVycy4gY2FsY19udW1iZXJfd2lkdGhzIHRoaW5rcwotICAgICAgICAgICB0aGVzZSBhcmUgY2hhcmFjdGVycyB0aGF0IGRvbid0IGdldCBmb3JtYXR0ZWQsIG9ubHkgY29waWVkCi0gICAgICAgICAgIGludG8gdGhlIG91dHB1dCBzdHJpbmcuIFdlIGRvIHRoaXMgZm9yICdjJyBmb3JtYXR0aW5nLAotICAgICAgICAgICBiZWNhdXNlIHRoZSBjaGFyYWN0ZXJzIGFyZSBsaWtlbHkgdG8gYmUgbm9uLWRpZ2l0cy4gKi8KLSAgICAgICAgbl9yZW1haW5kZXIgPSAxOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaW50IGJhc2U7Ci0gICAgICAgIGludCBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAwOyAgLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgYWRkZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgdGhhdCB3ZSB3YW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyLiAqLwotCi0gICAgICAgIC8qIENvbXB1dGUgdGhlIGJhc2UgYW5kIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSBhZGRlZCBieQotICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgKi8KLSAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSAnYic6Ci0gICAgICAgICAgICBiYXNlID0gMjsKLSAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBiICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBvICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgIGNhc2UgJ1gnOgotICAgICAgICAgICAgYmFzZSA9IDE2OwotICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMHggKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAgLyogc2hvdWxkbid0IGJlIG5lZWRlZCwgYnV0IHN0b3BzIGEgY29tcGlsZXIgd2FybmluZyAqLwotICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICBiYXNlID0gMTA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFRoZSBudW1iZXIgb2YgcHJlZml4IGNoYXJzIGlzIHRoZSBzYW1lIGFzIHRoZSBsZWFkaW5nCi0gICAgICAgICAgIGNoYXJzIHRvIHNraXAgKi8KLSAgICAgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQotICAgICAgICAgICAgbl9wcmVmaXggPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0KLSAgICAgICAgLyogRG8gdGhlIGhhcmQgcGFydCwgY29udmVydGluZyB0byBhIHN0cmluZyBpbiBhIGdpdmVuIGJhc2UgKi8KLSAgICAgICAgdG1wID0gdG9zdHJpbmcodmFsdWUsIGJhc2UpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAgICAgcG51bWVyaWNfY2hhcnMgPSBTVFJJTkdMSUJfU1RSKHRtcCk7Ci0gICAgICAgIG5fZGlnaXRzID0gU1RSSU5HTElCX0xFTih0bXApOwotCi0gICAgICAgIHByZWZpeCA9IHBudW1lcmljX2NoYXJzOwotCi0gICAgICAgIC8qIFJlbWVtYmVyIG5vdCB0byBtb2RpZnkgd2hhdCBwbnVtZXJpY19jaGFycyBwb2ludHMgdG8uICBpdAotICAgICAgICAgICBtaWdodCBiZSBpbnRlcm5lZC4gIE9ubHkgbW9kaWZ5IGl0IGFmdGVyIHdlIGNvcHkgaXQgaW50byBhCi0gICAgICAgICAgIG5ld2x5IGFsbG9jYXRlZCBvdXRwdXQgYnVmZmVyLiAqLwotCi0gICAgICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0Ci0gICAgICAgICAgIGFuZCBza2lwIGl0ICovCi0gICAgICAgIGlmIChwbnVtZXJpY19jaGFyc1swXSA9PSAnLScpIHsKLSAgICAgICAgICAgIHNpZ25fY2hhciA9IHBudW1lcmljX2NoYXJzWzBdOwotICAgICAgICAgICAgKytwcmVmaXg7Ci0gICAgICAgICAgICArK2xlYWRpbmdfY2hhcnNfdG9fc2tpcDsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNraXAgb3ZlciB0aGUgbGVhZGluZyBjaGFycyAoMHgsIDBiLCBldGMuKSAqLwotICAgICAgICBuX2RpZ2l0cyAtPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0gICAgICAgIHBudW1lcmljX2NoYXJzICs9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKLSAgICB9Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCi0gICAgZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCi0gICAgICAgICAgICAgICAgICAgICZsb2NhbGUpOwotCi0gICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLwotICAgIG5fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnNwZWMsIG5fcHJlZml4LCBzaWduX2NoYXIsIHBudW1lcmljX2NoYXJzLAotICAgICAgICAgICAgICAgICAgICAgICBuX2RpZ2l0cywgbl9yZW1haW5kZXIsIDAsICZsb2NhbGUsIGZvcm1hdCk7Ci0KLSAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLwotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgbl90b3RhbCk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuICovCi0gICAgZmlsbF9udW1iZXIoU1RSSU5HTElCX1NUUihyZXN1bHQpLCAmc3BlYywgcG51bWVyaWNfY2hhcnMsIG5fZGlnaXRzLAotICAgICAgICAgICAgICAgIHByZWZpeCwgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAotICAgICAgICAgICAgICAgICZsb2NhbGUsIGZvcm1hdC0+dHlwZSA9PSAnWCcpOwotCi1kb25lOgotICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIGRlZmluZWQgRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfSU5UICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogZmxvYXQgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIEZPUk1BVF9GTE9BVAotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi1zdGF0aWMgdm9pZAotc3RydG91bmljb2RlKFB5X1VOSUNPREUgKmJ1ZmZlciwgY29uc3QgY2hhciAqY2hhcmJ1ZmZlciwgUHlfc3NpemVfdCBsZW4pCi17Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKLSAgICAgICAgYnVmZmVyW2ldID0gKFB5X1VOSUNPREUpY2hhcmJ1ZmZlcltpXTsKLX0KLSNlbmRpZgotCi0vKiBtdWNoIG9mIHRoaXMgaXMgdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRfZmxvYXRfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIGNoYXIgKmJ1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLwotICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7Ci0gICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsKLSAgICBQeV9zc2l6ZV90IG5fdG90YWw7Ci0gICAgaW50IGhhc19kZWNpbWFsOwotICAgIGRvdWJsZSB2YWw7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKLSAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKLSAgICBTVFJJTkdMSUJfQ0hBUiB0eXBlID0gZm9ybWF0LT50eXBlOwotICAgIGludCBhZGRfcGN0ID0gMDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcDsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyBzcGVjOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIgc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBpbnQgZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLwotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeV9VTklDT0RFICp1bmljb2RlX3RtcCA9IE5VTEw7Ci0jZW5kaWYKLQotICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKLSAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KLSAgICBMb2NhbGVJbmZvIGxvY2FsZTsKLQotICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKLSAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BTFQ7Ci0KLSAgICBpZiAodHlwZSA9PSAnXDAnKSB7Ci0gICAgICAgIC8qIE9taXR0ZWQgdHlwZSBzcGVjaWZpZXIuICBCZWhhdmVzIGluIHRoZSBzYW1lIHdheSBhcyByZXByKHgpCi0gICAgICAgICAgIGFuZCBzdHIoeCkgaWYgbm8gcHJlY2lzaW9uIGlzIGdpdmVuLCBlbHNlIGxpa2UgJ2cnLCBidXQgd2l0aAotICAgICAgICAgICBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICovCi0gICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUREX0RPVF8wOwotICAgICAgICB0eXBlID0gJ3InOwotICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHR5cGUgPT0gJ24nKQotICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bwotICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICB2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHZhbHVlKTsKLSAgICBpZiAodmFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgaWYgKHR5cGUgPT0gJyUnKSB7Ci0gICAgICAgIHR5cGUgPSAnZic7Ci0gICAgICAgIHZhbCAqPSAxMDA7Ci0gICAgICAgIGFkZF9wY3QgPSAxOwotICAgIH0KLQotICAgIGlmIChwcmVjaXNpb24gPCAwKQotICAgICAgICBwcmVjaXNpb24gPSBkZWZhdWx0X3ByZWNpc2lvbjsKLSAgICBlbHNlIGlmICh0eXBlID09ICdyJykKLSAgICAgICAgdHlwZSA9ICdnJzsKLQotICAgIC8qIENhc3QgInR5cGUiLCBiZWNhdXNlIGlmIHdlJ3JlIGluIHVuaWNvZGUgd2UgbmVlZCB0byBwYXNzIGEKLSAgICAgICA4LWJpdCBjaGFyLiBUaGlzIGlzIHNhZmUsIGJlY2F1c2Ugd2UndmUgcmVzdHJpY3RlZCB3aGF0ICJ0eXBlIgotICAgICAgIGNhbiBiZS4gKi8KLSAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcodmFsLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxvYXRfdHlwZSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgbl9kaWdpdHMgPSBzdHJsZW4oYnVmKTsKLQotICAgIGlmIChhZGRfcGN0KSB7Ci0gICAgICAgIC8qIFdlIGtub3cgdGhhdCBidWYgaGFzIGEgdHJhaWxpbmcgemVybyAoc2luY2Ugd2UganVzdCBjYWxsZWQKLSAgICAgICAgICAgc3RybGVuKCkgb24gaXQpLCBhbmQgd2UgZG9uJ3QgdXNlIHRoYXQgZmFjdCBhbnkgbW9yZS4gU28gd2UKLSAgICAgICAgICAgY2FuIGp1c3Qgd3JpdGUgb3ZlciB0aGUgdHJhaWxpbmcgemVyby4gKi8KLSAgICAgICAgYnVmW25fZGlnaXRzXSA9ICclJzsKLSAgICAgICAgbl9kaWdpdHMgKz0gMTsKLSAgICB9Ci0KLSAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAotICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIHVuaWNvZGVfdG1wID0gKFB5X1VOSUNPREUqKVB5TWVtX01hbGxvYygobl9kaWdpdHMpKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgaWYgKHVuaWNvZGVfdG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBzdHJ0b3VuaWNvZGUodW5pY29kZV90bXAsIGJ1Ziwgbl9kaWdpdHMpOwotICAgIHAgPSB1bmljb2RlX3RtcDsKLSNlbHNlCi0gICAgcCA9IGJ1ZjsKLSNlbmRpZgotCi0gICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKLSAgICAgICBhbmQgc2tpcCBpdCAqLwotICAgIGlmICgqcCA9PSAnLScpIHsKLSAgICAgICAgc2lnbl9jaGFyID0gKnA7Ci0gICAgICAgICsrcDsKLSAgICAgICAgLS1uX2RpZ2l0czsKLSAgICB9Ci0KLSAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKLSAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLwotICAgIHBhcnNlX251bWJlcihwLCBuX2RpZ2l0cywgJm5fcmVtYWluZGVyLCAmaGFzX2RlY2ltYWwpOwotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwotICAgIGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAotICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKTsKLQotICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KLSAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCAwLCBzaWduX2NoYXIsIHAsIG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZW1haW5kZXIsIGhhc19kZWNpbWFsLCAmbG9jYWxlLCBmb3JtYXQpOwotCi0gICAgLyogQWxsb2NhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIG5fdG90YWwpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICBmaWxsX251bWJlcihTVFJJTkdMSUJfU1RSKHJlc3VsdCksICZzcGVjLCBwLCBuX2RpZ2l0cywgTlVMTCwKLSAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsICZsb2NhbGUsCi0gICAgICAgICAgICAgICAgMCk7Ci0KLWRvbmU6Ci0gICAgUHlNZW1fRnJlZShidWYpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlNZW1fRnJlZSh1bmljb2RlX3RtcCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9GTE9BVCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGNvbXBsZXggZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBGT1JNQVRfQ09NUExFWAotCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCi17Ci0gICAgZG91YmxlIHJlOwotICAgIGRvdWJsZSBpbTsKLSAgICBjaGFyICpyZV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KLSAgICBjaGFyICppbV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KLQotICAgIEludGVybmFsRm9ybWF0U3BlYyB0bXBfZm9ybWF0ID0gKmZvcm1hdDsKLSAgICBQeV9zc2l6ZV90IG5fcmVfZGlnaXRzOwotICAgIFB5X3NzaXplX3Qgbl9pbV9kaWdpdHM7Ci0gICAgUHlfc3NpemVfdCBuX3JlX3JlbWFpbmRlcjsKLSAgICBQeV9zc2l6ZV90IG5faW1fcmVtYWluZGVyOwotICAgIFB5X3NzaXplX3Qgbl9yZV90b3RhbDsKLSAgICBQeV9zc2l6ZV90IG5faW1fdG90YWw7Ci0gICAgaW50IHJlX2hhc19kZWNpbWFsOwotICAgIGludCBpbV9oYXNfZGVjaW1hbDsKLSAgICBQeV9zc2l6ZV90IHByZWNpc2lvbiA9IGZvcm1hdC0+cHJlY2lzaW9uOwotICAgIFB5X3NzaXplX3QgZGVmYXVsdF9wcmVjaXNpb24gPSA2OwotICAgIFNUUklOR0xJQl9DSEFSIHR5cGUgPSBmb3JtYXQtPnR5cGU7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnBfcmU7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnBfaW07Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgcmVfc3BlYzsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyBpbV9zcGVjOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7Ci0gICAgU1RSSU5HTElCX0NIQVIgcmVfc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBTVFJJTkdMSUJfQ0hBUiBpbV9zaWduX2NoYXIgPSAnXDAnOwotICAgIGludCByZV9mbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCi0gICAgaW50IGltX2Zsb2F0X3R5cGU7Ci0gICAgaW50IGFkZF9wYXJlbnMgPSAwOwotICAgIGludCBza2lwX3JlID0gMDsKLSAgICBQeV9zc2l6ZV90IGxwYWQ7Ci0gICAgUHlfc3NpemVfdCBycGFkOwotICAgIFB5X3NzaXplX3QgdG90YWw7Ci0KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIFB5X1VOSUNPREUgKnJlX3VuaWNvZGVfdG1wID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICppbV91bmljb2RlX3RtcCA9IE5VTEw7Ci0jZW5kaWYKLQotICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKLSAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KLSAgICBMb2NhbGVJbmZvIGxvY2FsZTsKLQotICAgIC8qIFplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZC4gKi8KLSAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBOZWl0aGVyIGlzICc9JyBhbGlnbm1lbnQgLiAqLwotICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IGZsYWcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgcmUgPSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlKHZhbHVlKTsKLSAgICBpZiAocmUgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaW0gPSBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlKHZhbHVlKTsKLSAgICBpZiAoaW0gPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCi0gICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOwotCi0gICAgaWYgKHR5cGUgPT0gJ1wwJykgewotICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiBTaG91bGQgYmUgbGlrZSBzdHIoc2VsZikuICovCi0gICAgICAgIHR5cGUgPSAncic7Ci0gICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKLSAgICAgICAgaWYgKHJlID09IDAuMCAmJiBjb3B5c2lnbigxLjAsIHJlKSA9PSAxLjApCi0gICAgICAgICAgICBza2lwX3JlID0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkX3BhcmVucyA9IDE7Ci0gICAgfQotCi0gICAgaWYgKHR5cGUgPT0gJ24nKQotICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bwotICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICBpZiAocHJlY2lzaW9uIDwgMCkKLSAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247Ci0gICAgZWxzZSBpZiAodHlwZSA9PSAncicpCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCi0gICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKLSAgICAgICBjYW4gYmUuICovCi0gICAgcmVfYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHJlLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVfZmxvYXRfdHlwZSk7Ci0gICAgaWYgKHJlX2J1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaW1fYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKGltLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1fZmxvYXRfdHlwZSk7Ci0gICAgaWYgKGltX2J1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBuX3JlX2RpZ2l0cyA9IHN0cmxlbihyZV9idWYpOwotICAgIG5faW1fZGlnaXRzID0gc3RybGVuKGltX2J1Zik7Ci0KLSAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAotICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIHJlX3VuaWNvZGVfdG1wID0gKFB5X1VOSUNPREUqKVB5TWVtX01hbGxvYygobl9yZV9kaWdpdHMpKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgaWYgKHJlX3VuaWNvZGVfdG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBzdHJ0b3VuaWNvZGUocmVfdW5pY29kZV90bXAsIHJlX2J1Ziwgbl9yZV9kaWdpdHMpOwotICAgIHBfcmUgPSByZV91bmljb2RlX3RtcDsKLQotICAgIGltX3VuaWNvZGVfdG1wID0gKFB5X1VOSUNPREUqKVB5TWVtX01hbGxvYygobl9pbV9kaWdpdHMpKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgaWYgKGltX3VuaWNvZGVfdG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBzdHJ0b3VuaWNvZGUoaW1fdW5pY29kZV90bXAsIGltX2J1Ziwgbl9pbV9kaWdpdHMpOwotICAgIHBfaW0gPSBpbV91bmljb2RlX3RtcDsKLSNlbHNlCi0gICAgcF9yZSA9IHJlX2J1ZjsKLSAgICBwX2ltID0gaW1fYnVmOwotI2VuZGlmCi0KLSAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAotICAgICAgIGFuZCBza2lwIGl0ICovCi0gICAgaWYgKCpwX3JlID09ICctJykgewotICAgICAgICByZV9zaWduX2NoYXIgPSAqcF9yZTsKLSAgICAgICAgKytwX3JlOwotICAgICAgICAtLW5fcmVfZGlnaXRzOwotICAgIH0KLSAgICBpZiAoKnBfaW0gPT0gJy0nKSB7Ci0gICAgICAgIGltX3NpZ25fY2hhciA9ICpwX2ltOwotICAgICAgICArK3BfaW07Ci0gICAgICAgIC0tbl9pbV9kaWdpdHM7Ci0gICAgfQotCi0gICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCi0gICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KLSAgICBwYXJzZV9udW1iZXIocF9yZSwgbl9yZV9kaWdpdHMsICZuX3JlX3JlbWFpbmRlciwgJnJlX2hhc19kZWNpbWFsKTsKLSAgICBwYXJzZV9udW1iZXIocF9pbSwgbl9pbV9kaWdpdHMsICZuX2ltX3JlbWFpbmRlciwgJmltX2hhc19kZWNpbWFsKTsKLQotICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KLSAgICBnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKLSAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSk7Ci0KLSAgICAvKiBUdXJuIG9mZiBhbnkgcGFkZGluZy4gV2UnbGwgZG8gaXQgbGF0ZXIgYWZ0ZXIgd2UndmUgY29tcG9zZWQKLSAgICAgICB0aGUgbnVtYmVycyB3aXRob3V0IHBhZGRpbmcuICovCi0gICAgdG1wX2Zvcm1hdC5maWxsX2NoYXIgPSAnXDAnOwotICAgIHRtcF9mb3JtYXQuYWxpZ24gPSAnPCc7Ci0gICAgdG1wX2Zvcm1hdC53aWR0aCA9IC0xOwotCi0gICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLwotICAgIG5fcmVfdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnJlX3NwZWMsIDAsIHJlX3NpZ25fY2hhciwgcF9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVfZGlnaXRzLCBuX3JlX3JlbWFpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCk7Ci0KLSAgICAvKiBTYW1lIGZvcm1hdHRpbmcsIGJ1dCBhbHdheXMgaW5jbHVkZSBhIHNpZ24sIHVubGVzcyB0aGUgcmVhbCBwYXJ0IGlzCi0gICAgICogZ29pbmcgdG8gYmUgb21pdHRlZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2Ugd2hhdGV2ZXIgc2lnbiBjb252ZW50aW9uIHdhcwotICAgICAqIHJlcXVlc3RlZCBieSB0aGUgb3JpZ2luYWwgZm9ybWF0LiAqLwotICAgIGlmICghc2tpcF9yZSkKLSAgICAgICAgdG1wX2Zvcm1hdC5zaWduID0gJysnOwotICAgIG5faW1fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJmltX3NwZWMsIDAsIGltX3NpZ25fY2hhciwgcF9pbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5faW1fZGlnaXRzLCBuX2ltX3JlbWFpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCk7Ci0KLSAgICBpZiAoc2tpcF9yZSkKLSAgICAgICAgbl9yZV90b3RhbCA9IDA7Ci0KLSAgICAvKiBBZGQgMSBmb3IgdGhlICdqJywgYW5kIG9wdGlvbmFsbHkgMiBmb3IgcGFyZW5zLiAqLwotICAgIGNhbGNfcGFkZGluZyhuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKLSAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOwotCi0gICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCB0b3RhbCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiBGaXJzdCwgdGhlIHBhZGRpbmcuICovCi0gICAgcCA9IGZpbGxfcGFkZGluZyhTVFJJTkdMSUJfU1RSKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICBuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKLSAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCi0gICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKLQotICAgIGlmIChhZGRfcGFyZW5zKQotICAgICAgICAqcCsrID0gJygnOwotCi0gICAgaWYgKCFza2lwX3JlKSB7Ci0gICAgICAgIGZpbGxfbnVtYmVyKHAsICZyZV9zcGVjLCBwX3JlLCBuX3JlX2RpZ2l0cywgTlVMTCwgMCwgJmxvY2FsZSwgMCk7Ci0gICAgICAgIHAgKz0gbl9yZV90b3RhbDsKLSAgICB9Ci0gICAgZmlsbF9udW1iZXIocCwgJmltX3NwZWMsIHBfaW0sIG5faW1fZGlnaXRzLCBOVUxMLCAwLCAmbG9jYWxlLCAwKTsKLSAgICBwICs9IG5faW1fdG90YWw7Ci0gICAgKnArKyA9ICdqJzsKLQotICAgIGlmIChhZGRfcGFyZW5zKQotICAgICAgICAqcCsrID0gJyknOwotCi1kb25lOgotICAgIFB5TWVtX0ZyZWUocmVfYnVmKTsKLSAgICBQeU1lbV9GcmVlKGltX2J1Zik7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeU1lbV9GcmVlKHJlX3VuaWNvZGVfdG1wKTsKLSAgICBQeU1lbV9GcmVlKGltX3VuaWNvZGVfdG1wKTsKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0NPTVBMRVggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBidWlsdCBpbiBmb3JtYXR0ZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotUHlPYmplY3QgKgotRk9STUFUX1NUUklORyhQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdzJywgJzwnKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdzJzoKLSAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhIHN0cmluZy4gIGRvIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVAotc3RhdGljIFB5T2JqZWN0KgotZm9ybWF0X2ludF9vcl9sb25nKFB5T2JqZWN0KiBvYmosCi0gICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgIEludE9yTG9uZ1RvU3RyaW5nIHRvc3RyaW5nKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOwotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ2QnLCAnPicpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCi0gICAgc3dpdGNoIChmb3JtYXQudHlwZSkgewotICAgIGNhc2UgJ2InOgotICAgIGNhc2UgJ2MnOgotICAgIGNhc2UgJ2QnOgotICAgIGNhc2UgJ28nOgotICAgIGNhc2UgJ3gnOgotICAgIGNhc2UgJ1gnOgotICAgIGNhc2UgJ24nOgotICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGFuIGludCAob3IgbG9uZykuICBkbwotICAgICAgICAgICB0aGUgZm9ybWF0dGluZyAqLwotICAgICAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2ludF9vcl9sb25nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgdG9zdHJpbmcpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgJ2UnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgotICAgIGNhc2UgJ2cnOgotICAgIGNhc2UgJ0cnOgotICAgIGNhc2UgJyUnOgotICAgICAgICAvKiBjb252ZXJ0IHRvIGZsb2F0ICovCi0gICAgICAgIHRtcCA9IFB5TnVtYmVyX0Zsb2F0KG9iaik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2Zsb2F0X2ludGVybmFsKHRtcCwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVCAqLwotCi0jaWZkZWYgRk9STUFUX0xPTkcKLS8qIE5lZWQgdG8gZGVmaW5lIGxvbmdfZm9ybWF0IGFzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGNvbnZlcnQgYSBsb25nCi0gICB0byBhIHN0cmluZy4gIEluIDMuMCwgX1B5TG9uZ19Gb3JtYXQgaGFzIHRoZSBjb3JyZWN0IHNpZ25hdHVyZS4gIEluCi0gICAyLngsIHdlIG5lZWQgdG8gZnVkZ2UgYSBmZXcgcGFyYW1ldGVycyAqLwotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKLSNkZWZpbmUgbG9uZ19mb3JtYXQgX1B5TG9uZ19Gb3JtYXQKLSNlbHNlCi1zdGF0aWMgUHlPYmplY3QqCi1sb25nX2Zvcm1hdChQeU9iamVjdCogdmFsdWUsIGludCBiYXNlKQotewotICAgIC8qIENvbnZlcnQgdG8gYmFzZSwgZG9uJ3QgYWRkIHRyYWlsaW5nICdMJywgYW5kIHVzZSB0aGUgbmV3IG9jdGFsCi0gICAgICAgZm9ybWF0LiBXZSBhbHJlYWR5IGtub3cgdGhpcyBpcyBhIGxvbmcgb2JqZWN0ICovCi0gICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2YWx1ZSkpOwotICAgIC8qIGNvbnZlcnQgdG8gYmFzZSwgZG9uJ3QgYWRkICdMJywgYW5kIHVzZSB0aGUgbmV3IG9jdGFsIGZvcm1hdCAqLwotICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdCh2YWx1ZSwgYmFzZSwgMCwgMSk7Ci19Ci0jZW5kaWYKLQotUHlPYmplY3QgKgotRk9STUFUX0xPTkcoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIHJldHVybiBmb3JtYXRfaW50X29yX2xvbmcob2JqLCBmb3JtYXRfc3BlYywgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19mb3JtYXQpOwotfQotI2VuZGlmIC8qIEZPUk1BVF9MT05HICovCi0KLSNpZmRlZiBGT1JNQVRfSU5UCi0vKiB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgMi54LCBub3QgMy4wICovCi1zdGF0aWMgUHlPYmplY3QqCi1pbnRfZm9ybWF0KFB5T2JqZWN0KiB2YWx1ZSwgaW50IGJhc2UpCi17Ci0gICAgLyogQ29udmVydCB0byBiYXNlLCBhbmQgdXNlIHRoZSBuZXcgb2N0YWwgZm9ybWF0LiBXZSBhbHJlYWR5Ci0gICAgICAga25vdyB0aGlzIGlzIGFuIGludCBvYmplY3QgKi8KLSAgICBhc3NlcnQoUHlJbnRfQ2hlY2sodmFsdWUpKTsKLSAgICByZXR1cm4gX1B5SW50X0Zvcm1hdCgoUHlJbnRPYmplY3QqKXZhbHVlLCBiYXNlLCAxKTsKLX0KLQotUHlPYmplY3QgKgotRk9STUFUX0lOVChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIHJldHVybiBmb3JtYXRfaW50X29yX2xvbmcob2JqLCBmb3JtYXRfc3BlYywgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X2Zvcm1hdCk7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0lOVCAqLwotCi0jaWZkZWYgRk9STUFUX0ZMT0FUCi1QeU9iamVjdCAqCi1GT1JNQVRfRkxPQVQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKLQotICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCi0gICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLwotICAgIGlmIChmb3JtYXRfc3BlY19sZW4gPT0gMCkgewotICAgICAgICByZXN1bHQgPSBTVFJJTkdMSUJfVE9TVFIob2JqKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLwotICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnXDAnLCAnPicpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCi0gICAgc3dpdGNoIChmb3JtYXQudHlwZSkgewotICAgIGNhc2UgJ1wwJzogLyogTm8gZm9ybWF0IGNvZGU6IGxpa2UgJ2cnLCBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbC4gKi8KLSAgICBjYXNlICdlJzoKLSAgICBjYXNlICdFJzoKLSAgICBjYXNlICdmJzoKLSAgICBjYXNlICdGJzoKLSAgICBjYXNlICdnJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICduJzoKLSAgICBjYXNlICclJzoKLSAgICAgICAgLyogbm8gY29udmVyc2lvbiwgYWxyZWFkeSBhIGZsb2F0LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2Zsb2F0X2ludGVybmFsKG9iaiwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0ZMT0FUICovCi0KLSNpZmRlZiBGT1JNQVRfQ09NUExFWAotUHlPYmplY3QgKgotRk9STUFUX0NPTVBMRVgoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCi0gICAgY2FzZSAnZSc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2FzZSAnRic6Ci0gICAgY2FzZSAnZyc6Ci0gICAgY2FzZSAnRyc6Ci0gICAgY2FzZSAnbic6Ci0gICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBjb21wbGV4LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwob2JqLCAmZm9ybWF0KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duICovCi0gICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLWRvbmU6Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfQ09NUExFWCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCmluZGV4IGY1NDgxMzMuLjZlMmYwNzMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKQEAgLTEsMjEgKzEsMTkgQEAKIC8qIHN0cmluZ2xpYjogbG9jYWxlIHJlbGF0ZWQgaGVscGVycyBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9MT0NBTEVVVElMX0gKLSNkZWZpbmUgU1RSSU5HTElCX0xPQ0FMRVVUSUxfSAotCiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKLSNkZWZpbmUgTUFYKHgsIHkpICgoeCkgPCAoeSkgPyAoeSkgOiAoeCkpCi0jZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8gKHgpIDogKHkpKQorI2lmbmRlZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyAgIGVycm9yICJsb2NhbGV1dGlsIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nOwogICAgIGNoYXIgcHJldmlvdXM7CiAgICAgUHlfc3NpemVfdCBpOyAvKiBXaGVyZSB3ZSdyZSBjdXJyZW50bHkgcG9pbnRpbmcgaW4gZ3JvdXBpbmcuICovCi19IEdyb3VwR2VuZXJhdG9yOworfSBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpOwogCiBzdGF0aWMgdm9pZAotX0dyb3VwR2VuZXJhdG9yX2luaXQoR3JvdXBHZW5lcmF0b3IgKnNlbGYsIGNvbnN0IGNoYXIgKmdyb3VwaW5nKQorU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX2luaXQpKFNUUklOR0xJQihHcm91cEdlbmVyYXRvcikgKnNlbGYsIGNvbnN0IGNoYXIgKmdyb3VwaW5nKQogewogICAgIHNlbGYtPmdyb3VwaW5nID0gZ3JvdXBpbmc7CiAgICAgc2VsZi0+aSA9IDA7CkBAIC0yNCw3ICsyMiw3IEBACiAKIC8qIFJldHVybnMgdGhlIG5leHQgZ3JvdXBpbmcsIG9yIDAgdG8gc2lnbmlmeSBlbmQuICovCiBzdGF0aWMgUHlfc3NpemVfdAotX0dyb3VwR2VuZXJhdG9yX25leHQoR3JvdXBHZW5lcmF0b3IgKnNlbGYpCitTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3JfbmV4dCkoU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKSAqc2VsZikKIHsKICAgICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVhbGx5IGRvIG11Y2ggZXJyb3IgY2hlY2tpbmcgaGVyZS4gSWYgYQogICAgICAgIGdyb3VwaW5nIHN0cmluZyBjb250YWlucyBqdXN0IENIQVJfTUFYLCBmb3IgZXhhbXBsZSwgdGhlbiBqdXN0CkBAIC00OCwyNyArNDYsMTggQEAKIC8qIEZpbGwgaW4gc29tZSBkaWdpdHMsIGxlYWRpbmcgemVyb3MsIGFuZCB0aG91c2FuZHMgc2VwYXJhdG9yLiBBbGwKICAgIGFyZSBvcHRpb25hbCwgZGVwZW5kaW5nIG9uIHdoZW4gd2UncmUgY2FsbGVkLiAqLwogc3RhdGljIHZvaWQKLWZpbGwoU1RSSU5HTElCX0NIQVIgKipkaWdpdHNfZW5kLCBTVFJJTkdMSUJfQ0hBUiAqKmJ1ZmZlcl9lbmQsCi0gICAgIFB5X3NzaXplX3Qgbl9jaGFycywgUHlfc3NpemVfdCBuX3plcm9zLCBjb25zdCBjaGFyKiB0aG91c2FuZHNfc2VwLAorU1RSSU5HTElCKGZpbGwpKFNUUklOR0xJQl9DSEFSICoqZGlnaXRzX2VuZCwgU1RSSU5HTElCX0NIQVIgKipidWZmZXJfZW5kLAorICAgICBQeV9zc2l6ZV90IG5fY2hhcnMsIFB5X3NzaXplX3Qgbl96ZXJvcywgU1RSSU5HTElCX0NIQVIqIHRob3VzYW5kc19zZXAsCiAgICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW4pCiB7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKICAgICBQeV9zc2l6ZV90IGk7Ci0jZW5kaWYKIAogICAgIGlmICh0aG91c2FuZHNfc2VwKSB7CiAgICAgICAgICpidWZmZXJfZW5kIC09IHRob3VzYW5kc19zZXBfbGVuOwogCiAgICAgICAgIC8qIENvcHkgdGhlIHRob3VzYW5kc19zZXAgY2hhcnMgaW50byB0aGUgYnVmZmVyLiAqLwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgICAgIC8qIENvbnZlcnQgZnJvbSB0aGUgY2hhcidzIG9mIHRoZSB0aG91c2FuZHNfc2VwIGZyb20KLSAgICAgICAgICAgdGhlIGxvY2FsZSBpbnRvIHVuaWNvZGUuICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aG91c2FuZHNfc2VwX2xlbjsgKytpKQotICAgICAgICAgICAgKCpidWZmZXJfZW5kKVtpXSA9IHRob3VzYW5kc19zZXBbaV07Ci0jZWxzZQotICAgICAgICAvKiBObyBjb252ZXJzaW9uLCBqdXN0IG1lbWNweSB0aGUgdGhvdXNhbmRzX3NlcC4gKi8KLSAgICAgICAgbWVtY3B5KCpidWZmZXJfZW5kLCB0aG91c2FuZHNfc2VwLCB0aG91c2FuZHNfc2VwX2xlbik7Ci0jZW5kaWYKKyAgICAgICAgbWVtY3B5KCpidWZmZXJfZW5kLCB0aG91c2FuZHNfc2VwLAorICAgICAgICAgICAgICAgdGhvdXNhbmRzX3NlcF9sZW4gKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIpOwogICAgIH0KIAogICAgICpidWZmZXJfZW5kIC09IG5fY2hhcnM7CkBAIC03NiwxMSArNjUsMTIgQEAKICAgICBtZW1jcHkoKmJ1ZmZlcl9lbmQsICpkaWdpdHNfZW5kLCBuX2NoYXJzICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CiAKICAgICAqYnVmZmVyX2VuZCAtPSBuX3plcm9zOwotICAgIFNUUklOR0xJQl9GSUxMKCpidWZmZXJfZW5kLCAnMCcsIG5femVyb3MpOworICAgIGZvciAoaSA9IDA7IGkgPCBuX3plcm9zOyBpKyspCisgICAgICAgICgqYnVmZmVyX2VuZClbaV0gPSAnMCc7CiB9CiAKIC8qKgotICogX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nOgorICogSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmc6CiAgKiBAYnVmZmVyOiBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLgogICogQG5fYnVmZmVyOiBOdW1iZXIgb2YgY2hhcmFjdGVycyBpbiBAYnVmZmVyLgogICogQGRpZ2l0czogQSBwb2ludGVyIHRvIHRoZSBkaWdpdHMgd2UncmUgcmVhZGluZyBmcm9tLiBJZiBjb3VudApAQCAtMTA5LDE0ICs5OSwxNiBAQAogICogQXMgY2xvc2VseSBhcyBwb3NzaWJsZSwgdGhpcyBjb2RlIG1pbWljcyB0aGUgbG9naWMgaW4gZGVjaW1hbC5weSdzCiAgICAgX2luc2VydF90aG91c2FuZHNfc2VwKCkuCiAgKiovCi1QeV9zc2l6ZV90Ci1fUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoU1RSSU5HTElCX0NIQVIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwKQorc3RhdGljIFB5X3NzaXplX3QKK1NUUklOR0xJQihJbnNlcnRUaG91c2FuZHNHcm91cGluZykoCisgICAgU1RSSU5HTElCX0NIQVIgKmJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAorICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKKyAgICBjb25zdCBjaGFyICpncm91cGluZywKKyAgICBTVFJJTkdMSUJfQ0hBUiAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuKQogewogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogICAgIFB5X3NzaXplX3Qgbl96ZXJvczsKQEAgLTEyOCwyMyArMTIwLDIyIEBACiAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0c19lbmQgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbDsKICAgICBQeV9zc2l6ZV90IG5fY2hhcnM7Ci0gICAgUHlfc3NpemVfdCB0aG91c2FuZHNfc2VwX2xlbiA9IHN0cmxlbih0aG91c2FuZHNfc2VwKTsKICAgICBQeV9zc2l6ZV90IHJlbWFpbmluZyA9IG5fZGlnaXRzOyAvKiBOdW1iZXIgb2YgY2hhcnMgcmVtYWluaW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbG9va2VkIGF0ICovCiAgICAgLyogQSBnZW5lcmF0b3IgdGhhdCByZXR1cm5zIGFsbCBvZiB0aGUgZ3JvdXBpbmcgd2lkdGhzLCB1bnRpbCBpdAogICAgICAgIHJldHVybnMgMC4gKi8KLSAgICBHcm91cEdlbmVyYXRvciBncm91cGdlbjsKLSAgICBfR3JvdXBHZW5lcmF0b3JfaW5pdCgmZ3JvdXBnZW4sIGdyb3VwaW5nKTsKKyAgICBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpIGdyb3VwZ2VuOworICAgIFNUUklOR0xJQihHcm91cEdlbmVyYXRvcl9pbml0KSgmZ3JvdXBnZW4sIGdyb3VwaW5nKTsKIAogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgYnVmZmVyX2VuZCA9IGJ1ZmZlciArIG5fYnVmZmVyOwogICAgICAgICBkaWdpdHNfZW5kID0gZGlnaXRzICsgbl9kaWdpdHM7CiAgICAgfQogCi0gICAgd2hpbGUgKChsID0gX0dyb3VwR2VuZXJhdG9yX25leHQoJmdyb3VwZ2VuKSkgPiAwKSB7Ci0gICAgICAgIGwgPSBNSU4obCwgTUFYKE1BWChyZW1haW5pbmcsIG1pbl93aWR0aCksIDEpKTsKLSAgICAgICAgbl96ZXJvcyA9IE1BWCgwLCBsIC0gcmVtYWluaW5nKTsKLSAgICAgICAgbl9jaGFycyA9IE1BWCgwLCBNSU4ocmVtYWluaW5nLCBsKSk7CisgICAgd2hpbGUgKChsID0gU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX25leHQpKCZncm91cGdlbikpID4gMCkgeworICAgICAgICBsID0gUHlfTUlOKGwsIFB5X01BWChQeV9NQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKSk7CisgICAgICAgIG5femVyb3MgPSBQeV9NQVgoMCwgbCAtIHJlbWFpbmluZyk7CisgICAgICAgIG5fY2hhcnMgPSBQeV9NQVgoMCwgUHlfTUlOKHJlbWFpbmluZywgbCkpOwogCiAgICAgICAgIC8qIFVzZSBuX3plcm8gemVybydzIGFuZCBuX2NoYXJzIGNoYXJzICovCiAKQEAgLTE1Myw3ICsxNDQsNyBAQAogCiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIC8qIENvcHkgaW50byB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgIGZpbGwoJmRpZ2l0c19lbmQsICZidWZmZXJfZW5kLCBuX2NoYXJzLCBuX3plcm9zLAorICAgICAgICAgICAgU1RSSU5HTElCKGZpbGwpKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKICAgICAgICAgICAgICAgICAgdXNlX3NlcGFyYXRvciA/IHRob3VzYW5kc19zZXAgOiBOVUxMLCB0aG91c2FuZHNfc2VwX2xlbik7CiAgICAgICAgIH0KIApAQCAtMTcyLDQxICsxNjMsMTggQEAKICAgICBpZiAoIWxvb3BfYnJva2VuKSB7CiAgICAgICAgIC8qIFdlIGxlZnQgdGhlIGxvb3Agd2l0aG91dCB1c2luZyBhIGJyZWFrIHN0YXRlbWVudC4gKi8KIAotICAgICAgICBsID0gTUFYKE1BWChyZW1haW5pbmcsIG1pbl93aWR0aCksIDEpOwotICAgICAgICBuX3plcm9zID0gTUFYKDAsIGwgLSByZW1haW5pbmcpOwotICAgICAgICBuX2NoYXJzID0gTUFYKDAsIE1JTihyZW1haW5pbmcsIGwpKTsKKyAgICAgICAgbCA9IFB5X01BWChQeV9NQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKTsKKyAgICAgICAgbl96ZXJvcyA9IFB5X01BWCgwLCBsIC0gcmVtYWluaW5nKTsKKyAgICAgICAgbl9jaGFycyA9IFB5X01BWCgwLCBQeV9NSU4ocmVtYWluaW5nLCBsKSk7CiAKICAgICAgICAgLyogVXNlIG5femVybyB6ZXJvJ3MgYW5kIG5fY2hhcnMgY2hhcnMgKi8KICAgICAgICAgY291bnQgKz0gKHVzZV9zZXBhcmF0b3IgPyB0aG91c2FuZHNfc2VwX2xlbiA6IDApICsgbl96ZXJvcyArIG5fY2hhcnM7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIC8qIENvcHkgaW50byB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgIGZpbGwoJmRpZ2l0c19lbmQsICZidWZmZXJfZW5kLCBuX2NoYXJzLCBuX3plcm9zLAorICAgICAgICAgICAgU1RSSU5HTElCKGZpbGwpKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKICAgICAgICAgICAgICAgICAgdXNlX3NlcGFyYXRvciA/IHRob3VzYW5kc19zZXAgOiBOVUxMLCB0aG91c2FuZHNfc2VwX2xlbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGNvdW50OwogfQogCi0vKioKLSAqIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZToKLSAqIEBidWZmZXI6IEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuCi0gKiBAbl9kaWdpdHM6IFRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBzdHJpbmcsIGluIHdoaWNoIHdlIHdhbnQKLSAqICAgICAgICAgICAgdG8gcHV0IHRoZSBncm91cGluZyBjaGFycy4KLSAqCi0gKiBSZWFkcyB0aGVlIGN1cnJlbnQgbG9jYWxlIGFuZCBjYWxscyBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoKS4KLSAqKi8KLVB5X3NzaXplX3QKLV9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZShTVFJJTkdMSUJfQ0hBUiAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWluX3dpZHRoKQotewotICAgICAgICBzdHJ1Y3QgbGNvbnYgKmxvY2FsZV9kYXRhID0gbG9jYWxlY29udigpOwotICAgICAgICBjb25zdCBjaGFyICpncm91cGluZyA9IGxvY2FsZV9kYXRhLT5ncm91cGluZzsKLSAgICAgICAgY29uc3QgY2hhciAqdGhvdXNhbmRzX3NlcCA9IGxvY2FsZV9kYXRhLT50aG91c2FuZHNfc2VwOwotCi0gICAgICAgIHJldHVybiBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoYnVmZmVyLCBuX2J1ZmZlciwgZGlnaXRzLCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLCB0aG91c2FuZHNfc2VwKTsKLX0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfTE9DQUxFVVRJTF9IICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaCBiL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oCmluZGV4IDAxNzBiZGQuLjQwY2I1MTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oCkBAIC0xLDE0ICsxLDExIEBACiAvKiBzdHJpbmdsaWI6IHBhcnRpdGlvbiBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9QQVJUSVRJT05fSAotI2RlZmluZSBTVFJJTkdMSUJfUEFSVElUSU9OX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0KikKLXN0cmluZ2xpYl9wYXJ0aXRpb24oUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocGFydGl0aW9uKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogc2VwX29iaiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuKQpAQCAtMjUsNyArMjIsNyBAQAogICAgIGlmICghb3V0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPCAwKSB7CiAjaWYgU1RSSU5HTElCX01VVEFCTEUKQEAgLTU4LDcgKzU1LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0KikKLXN0cmluZ2xpYl9ycGFydGl0aW9uKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJwYXJ0aXRpb24pKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIHNlcF9vYmosCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc2VwLCBQeV9zc2l6ZV90IHNlcF9sZW4pCkBAIC03NSw3ICs3Miw3IEBACiAgICAgaWYgKCFvdXQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CiAKICAgICBpZiAocG9zIDwgMCkgewogI2lmIFNUUklOR0xJQl9NVVRBQkxFCkBAIC0xMDcsNCArMTA0LDMgQEAKICAgICByZXR1cm4gb3V0OwogfQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmggYi9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oCmluZGV4IDYwZTc3NjcuLjk0N2RkMjggMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaApAQCAtMSw4ICsxLDUgQEAKIC8qIHN0cmluZ2xpYjogc3BsaXQgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfU1BMSVRfSAotI2RlZmluZSBTVFJJTkdMSUJfU1BMSVRfSAotCiAjaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNlcnJvciBtdXN0IGluY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBtb2R1bGUKICNlbmRpZgpAQCAtNTQsNyArNTEsNyBAQAogI2RlZmluZSBGSVhfUFJFQUxMT0NfU0laRShsaXN0KSBQeV9TSVpFKGxpc3QpID0gY291bnQKIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZShQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdF93aGl0ZXNwYWNlKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CkBAIC0xMDIsNyArOTksNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdF9jaGFyKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0X2NoYXIpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgY2gsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMTQ1LDcgKzE0Miw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0KFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0KShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuLAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0xNTgsNyArMTU1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKHNlcF9sZW4gPT0gMSkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF9jaGFyKHN0cl9vYmosIHN0ciwgc3RyX2xlbiwgc2VwWzBdLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBTVFJJTkdMSUIoc3BsaXRfY2hhcikoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KFBSRUFMTE9DX1NJWkUobWF4Y291bnQpKTsKICAgICBpZiAobGlzdCA9PSBOVUxMKQpAQCAtMTY2LDcgKzE2Myw3IEBACiAKICAgICBpID0gaiA9IDA7CiAgICAgd2hpbGUgKG1heGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyK2ksIHN0cl9sZW4taSwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOworICAgICAgICBwb3MgPSBGQVNUU0VBUkNIKHN0citpLCBzdHJfbGVuLWksIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKICAgICAgICAgaWYgKHBvcyA8IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaiA9IGkgKyBwb3M7CkBAIC0xOTMsNyArMTkwLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocnNwbGl0X3doaXRlc3BhY2UpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewpAQCAtMjQzLDcgKzI0MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3JzcGxpdF9jaGFyKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJzcGxpdF9jaGFyKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgY2gsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKQEAgLTI4Nyw3ICsyODQsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9yc3BsaXQoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocnNwbGl0KShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc2VwLCBQeV9zc2l6ZV90IHNlcF9sZW4sCiAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0zMDAsNyArMjk3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKHNlcF9sZW4gPT0gMSkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfY2hhcihzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gU1RSSU5HTElCKHJzcGxpdF9jaGFyKShzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOwogCiAgICAgbGlzdCA9IFB5TGlzdF9OZXcoUFJFQUxMT0NfU0laRShtYXhjb3VudCkpOwogICAgIGlmIChsaXN0ID09IE5VTEwpCkBAIC0zMDgsNyArMzA1LDcgQEAKIAogICAgIGogPSBzdHJfbGVuOwogICAgIHdoaWxlIChtYXhjb3VudC0tID4gMCkgewotICAgICAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgaiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKKyAgICAgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIGosIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CiAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFNQTElUX0FERChzdHIsIHBvcyArIHNlcF9sZW4sIGopOwpAQCAtMzM2LDcgKzMzMyw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0bGluZXMoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIoc3BsaXRsaW5lcykoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQga2VlcGVuZHMpCiB7CkBAIC0zOTEsNCArMzg4LDMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmgKaW5kZXggMWM0OTQyNi4uN2JiOTFhNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaApAQCAtNiw3ICs2LDEwIEBACiAgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLwogI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMAogCisjZGVmaW5lIEZBU1RTRUFSQ0ggZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgc3RyaW5nbGliXyMjRgogI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlCeXRlc09iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgY2hhcgogI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInN0cmluZyIKICNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJTIgpAQCAtMTUsOSArMTgsNiBAQAogI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsoeCkgKCh4ID09ICdcbicpIHx8ICh4ID09ICdccicpKQogI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMKHgpICAgKCh4ID49ICcwJykgJiYgKHggPD0gJzknKSkKICNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCh4KSAgIChTVFJJTkdMSUJfSVNERUNJTUFMKHgpID8gKHggLSAnMCcpIDogLTEpCi0jZGVmaW5lIFNUUklOR0xJQl9UT1VQUEVSICAgICAgICBQeV9UT1VQUEVSCi0jZGVmaW5lIFNUUklOR0xJQl9UT0xPV0VSICAgICAgICBQeV9UT0xPV0VSCi0jZGVmaW5lIFNUUklOR0xJQl9GSUxMICAgICAgICAgICBtZW1zZXQKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCkBAIC0yNSw3ICsyNSw1IEBACiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeUJ5dGVzX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeUJ5dGVzX0NoZWNrRXhhY3QKICNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkcgICAgICAgX1B5Qnl0ZXNfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKLSNkZWZpbmUgU1RSSU5HTElCX0dST1VQSU5HX0xPQ0FMRSBfUHlCeXRlc19JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZQogI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfUmVwcgogI2VuZGlmIC8qICFTVFJJTkdMSUJfU1RSSU5HREVGU19IICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjNmZjYgotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaApAQCAtMCwwICsxLDMxIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIHVjczFsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgdWNzMWxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHhGRnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIF9QeVVuaWNvZGVfRnJvbVVDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX3VjczFfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlNTcyOQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaApAQCAtMCwwICsxLDMwIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIHVjczJsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgdWNzMmxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMgorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHhGRkZGdQorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVUNTMgorI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCisjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKKyNkZWZpbmUgU1RSSU5HTElCX0VNUFRZICAgICAgICAgIHVuaWNvZGVfZW1wdHkKKyNkZWZpbmUgU1RSSU5HTElCX0lTU1BBQ0UgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRQorI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCisjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBCisjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAorI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgX1B5VW5pY29kZV9Gcm9tVUNTMgorI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAorI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAorCisjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKKyNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X0FTQ0lJCisKKyNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfdWNzMl9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3YTI3ZQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaApAQCAtMCwwICsxLDMwIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIHVjczRsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgdWNzNGxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgNAorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHgxMEZGRkZ1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1M0CisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBfUHlVbmljb2RlX0Zyb21VQ1M0CisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV91Y3M0X0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuZGVmLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMTE3ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCkBAIC0wLDAgKzEsMTIgQEAKKyN1bmRlZiAgRkFTVFNFQVJDSAorI3VuZGVmICBTVFJJTkdMSUIKKyN1bmRlZiAgU1RSSU5HTElCX1NJWkVPRl9DSEFSCisjdW5kZWYgIFNUUklOR0xJQl9NQVhfQ0hBUgorI3VuZGVmICBTVFJJTkdMSUJfQ0hBUgorI3VuZGVmICBTVFJJTkdMSUJfU1RSCisjdW5kZWYgIFNUUklOR0xJQl9MRU4KKyN1bmRlZiAgU1RSSU5HTElCX05FVworI3VuZGVmICBTVFJJTkdMSUJfUkVTSVpFCisjdW5kZWYgIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZworI3VuZGVmIFNUUklOR0xJQl9JU19VTklDT0RFCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1lIGZyb20gT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oCnJlbmFtZSB0byBPYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCmluZGV4IGM0NmJkYzIuLmJlNTgwYzYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCkBAIC0xLDE2ICsxLDcgQEAKIC8qCi0gICAgc3RyaW5nX2Zvcm1hdC5oIC0tIGltcGxlbWVudGF0aW9uIG9mIHN0cmluZy5mb3JtYXQoKS4KLQotICAgIEl0IHVzZXMgdGhlIE9iamVjdHMvc3RyaW5nbGliIGNvbnZlbnRpb25zLCBzbyB0aGF0IGl0IGNhbiBiZQotICAgIGNvbXBpbGVkIGZvciBib3RoIHVuaWNvZGUgYW5kIHN0cmluZyBvYmplY3RzLgorICAgIHVuaWNvZGVfZm9ybWF0LmggLS0gaW1wbGVtZW50YXRpb24gb2Ygc3RyLmZvcm1hdCgpLgogKi8KIAotCi0vKiBEZWZpbmVzIGZvciBQeXRob24gMi42IGNvbXBhdGliaWxpdHkgKi8KLSNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwMDAwMDAKLSNkZWZpbmUgUHlMb25nX0Zyb21Tc2l6ZV90IF9QeUxvbmdfRnJvbVNzaXplX3QKLSNlbmRpZgotCiAvKiBEZWZpbmVzIGZvciBtb3JlIGVmZmljaWVudGx5IHJlYWxsb2NhdGluZyB0aGUgc3RyaW5nIGJ1ZmZlciAqLwogI2RlZmluZSBJTklUSUFMX1NJWkVfSU5DUkVNRU5UIDEwMAogI2RlZmluZSBTSVpFX01VTFRJUExJRVIgMgpAQCAtMjYsOCArMTcsOCBAQAogICAgdW5pY29kZSBwb2ludGVycy4KICovCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kOworICAgIFB5T2JqZWN0ICpzdHI7IC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZDsKIH0gU3ViU3RyaW5nOwogCiAKQEAgLTY0LDM0ICs1NSwzMiBAQAogCiAvKiBmaWxsIGluIGEgU3ViU3RyaW5nIGZyb20gYSBwb2ludGVyIGFuZCBsZW5ndGggKi8KIFB5X0xPQ0FMX0lOTElORSh2b2lkKQotU3ViU3RyaW5nX2luaXQoU3ViU3RyaW5nICpzdHIsIFNUUklOR0xJQl9DSEFSICpwLCBQeV9zc2l6ZV90IGxlbikKK1N1YlN0cmluZ19pbml0KFN1YlN0cmluZyAqc3RyLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgc3RyLT5wdHIgPSBwOwotICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHN0ci0+ZW5kID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHN0ci0+ZW5kID0gc3RyLT5wdHIgKyBsZW47CisgICAgc3RyLT5zdHIgPSBzOworICAgIHN0ci0+c3RhcnQgPSBzdGFydDsKKyAgICBzdHItPmVuZCA9IGVuZDsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+cHRyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3QoU3ViU3RyaW5nICpzdHIpCiB7Ci0gICAgaWYgKHN0ci0+cHRyID09IE5VTEwpIHsKKyAgICBpZiAoc3RyLT5zdHIgPT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICByZXR1cm4gU1RSSU5HTElCX05FVyhzdHItPnB0ciwgc3RyLT5lbmQgLSBzdHItPnB0cik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc3RyLT5zdHIsIHN0ci0+c3RhcnQsIHN0ci0+ZW5kKTsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+cHRyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3Rfb3JfZW1wdHkoU3ViU3RyaW5nICpzdHIpCiB7Ci0gICAgaWYgKHN0ci0+cHRyID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoTlVMTCwgMCk7CisgICAgaWYgKHN0ci0+c3RyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgfQotICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKHN0ci0+cHRyLCBzdHItPmVuZCAtIHN0ci0+cHRyKTsKKyAgICByZXR1cm4gU3ViU3RyaW5nX25ld19vYmplY3Qoc3RyKTsKIH0KIAogLyogUmV0dXJuIDEgaWYgYW4gZXJyb3IgaGFzIGJlZW4gZGV0ZWN0ZWQgc3dpdGNoaW5nIGJldHdlZW4gYXV0b21hdGljCkBAIC0xMjEsNzQgKzExMCw2IEBACiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiAgICBPdXRwdXQgc3RyaW5nIG1hbmFnZW1lbnQgZnVuY3Rpb25zICAgICAgICoqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kOwotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgUHlfc3NpemVfdCBzaXplX2luY3JlbWVudDsKLX0gT3V0cHV0U3RyaW5nOwotCi0vKiBpbml0aWFsaXplIGFuIE91dHB1dFN0cmluZyBvYmplY3QsIHJlc2VydmluZyBzaXplIGNoYXJhY3RlcnMgKi8KLXN0YXRpYyBpbnQKLW91dHB1dF9pbml0aWFsaXplKE91dHB1dFN0cmluZyAqb3V0cHV0LCBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgb3V0cHV0LT5vYmogPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNpemUpOwotICAgIGlmIChvdXRwdXQtPm9iaiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG91dHB1dC0+cHRyID0gU1RSSU5HTElCX1NUUihvdXRwdXQtPm9iaik7Ci0gICAgb3V0cHV0LT5lbmQgPSBTVFJJTkdMSUJfTEVOKG91dHB1dC0+b2JqKSArIG91dHB1dC0+cHRyOwotICAgIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQgPSBJTklUSUFMX1NJWkVfSU5DUkVNRU5UOwotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qCi0gICAgb3V0cHV0X2V4dGVuZCByZWFsbG9jYXRlcyB0aGUgb3V0cHV0IHN0cmluZyBidWZmZXIuCi0gICAgSXQgcmV0dXJucyBhIHN0YXR1czogIDAgZm9yIGEgZmFpbGVkIHJlYWxsb2NhdGlvbiwKLSAgICAxIGZvciBzdWNjZXNzLgotKi8KLQotc3RhdGljIGludAotb3V0cHV0X2V4dGVuZChPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlfc3NpemVfdCBjb3VudCkKLXsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqc3RhcnRwdHIgPSBTVFJJTkdMSUJfU1RSKG91dHB1dC0+b2JqKTsKLSAgICBQeV9zc2l6ZV90IGN1cmxlbiA9IG91dHB1dC0+cHRyIC0gc3RhcnRwdHI7Ci0gICAgUHlfc3NpemVfdCBtYXhsZW4gPSBjdXJsZW4gKyBjb3VudCArIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQ7Ci0KLSAgICBpZiAoU1RSSU5HTElCX1JFU0laRSgmb3V0cHV0LT5vYmosIG1heGxlbikgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzdGFydHB0ciA9IFNUUklOR0xJQl9TVFIob3V0cHV0LT5vYmopOwotICAgIG91dHB1dC0+cHRyID0gc3RhcnRwdHIgKyBjdXJsZW47Ci0gICAgb3V0cHV0LT5lbmQgPSBzdGFydHB0ciArIG1heGxlbjsKLSAgICBpZiAob3V0cHV0LT5zaXplX2luY3JlbWVudCA8IE1BWF9TSVpFX0lOQ1JFTUVOVCkKLSAgICAgICAgb3V0cHV0LT5zaXplX2luY3JlbWVudCAqPSBTSVpFX01VTFRJUExJRVI7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qCi0gICAgb3V0cHV0X2RhdGEgZHVtcHMgY2hhcmFjdGVycyBpbnRvIG91ciBvdXRwdXQgc3RyaW5nCi0gICAgYnVmZmVyLgotCi0gICAgSW4gc29tZSBjYXNlcywgaXQgaGFzIHRvIHJlYWxsb2NhdGUgdGhlIHN0cmluZy4KLQotICAgIEl0IHJldHVybnMgYSBzdGF0dXM6ICAwIGZvciBhIGZhaWxlZCByZWFsbG9jYXRpb24sCi0gICAgMSBmb3Igc3VjY2Vzcy4KLSovCi1zdGF0aWMgaW50Ci1vdXRwdXRfZGF0YShPdXRwdXRTdHJpbmcgKm91dHB1dCwgY29uc3QgU1RSSU5HTElCX0NIQVIgKnMsIFB5X3NzaXplX3QgY291bnQpCi17Ci0gICAgaWYgKChjb3VudCA+IG91dHB1dC0+ZW5kIC0gb3V0cHV0LT5wdHIpICYmICFvdXRwdXRfZXh0ZW5kKG91dHB1dCwgY291bnQpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtZW1jcHkob3V0cHV0LT5wdHIsIHMsIGNvdW50ICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgb3V0cHV0LT5wdHIgKz0gY291bnQ7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKiogIEZvcm1hdCBzdHJpbmcgcGFyc2luZyAtLSBpbnRlZ2VycyBhbmQgaWRlbnRpZmllcnMgKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMTk3LDE0ICsxMTgsMTQgQEAKIHsKICAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yID0gMDsKICAgICBQeV9zc2l6ZV90IGRpZ2l0dmFsOwotICAgIFNUUklOR0xJQl9DSEFSICpwOworICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGVtcHR5IHN0cmluZyBpcyBhbiBlcnJvciAqLwotICAgIGlmIChzdHItPnB0ciA+PSBzdHItPmVuZCkKKyAgICBpZiAoc3RyLT5zdGFydCA+PSBzdHItPmVuZCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgZm9yIChwID0gc3RyLT5wdHI7IHAgPCBzdHItPmVuZDsgcCsrKSB7Ci0gICAgICAgIGRpZ2l0dmFsID0gU1RSSU5HTElCX1RPREVDSU1BTCgqcCk7CisgICAgZm9yIChpID0gc3RyLT5zdGFydDsgaSA8IHN0ci0+ZW5kOyBpKyspIHsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ci0+c3RyLCBpKSk7CiAgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIC8qCkBAIC0yNzksMzQgKzIwMCwzNiBAQAogICAgICAgIGxpZmV0aW1lIG9mIHRoZSBpdGVyYXRvci4gIGNhbiBiZSBlbXB0eSAqLwogICAgIFN1YlN0cmluZyBzdHI7CiAKLSAgICAvKiBwb2ludGVyIHRvIHdoZXJlIHdlIGFyZSBpbnNpZGUgZmllbGRfbmFtZSAqLwotICAgIFNUUklOR0xJQl9DSEFSICpwdHI7CisgICAgLyogaW5kZXggdG8gd2hlcmUgd2UgYXJlIGluc2lkZSBmaWVsZF9uYW1lICovCisgICAgUHlfc3NpemVfdCBpbmRleDsKIH0gRmllbGROYW1lSXRlcmF0b3I7CiAKIAogc3RhdGljIGludAotRmllbGROYW1lSXRlcmF0b3JfaW5pdChGaWVsZE5hbWVJdGVyYXRvciAqc2VsZiwgU1RSSU5HTElCX0NIQVIgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4pCitGaWVsZE5hbWVJdGVyYXRvcl9pbml0KEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcHRyLCBsZW4pOwotICAgIHNlbGYtPnB0ciA9IHNlbGYtPnN0ci5wdHI7CisgICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcywgc3RhcnQsIGVuZCk7CisgICAgc2VsZi0+aW5kZXggPSBzdGFydDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAogX0ZpZWxkTmFtZUl0ZXJhdG9yX2F0dHIoRmllbGROYW1lSXRlcmF0b3IgKnNlbGYsIFN1YlN0cmluZyAqbmFtZSkKIHsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjOworICAgIFB5X1VDUzQgYzsKIAotICAgIG5hbWUtPnB0ciA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIG5hbWUtPnN0YXJ0ID0gc2VsZi0+aW5kZXg7CiAKICAgICAvKiByZXR1cm4gZXZlcnl0aGluZyB1bnRpbCAnLicgb3IgJ1snICovCi0gICAgd2hpbGUgKHNlbGYtPnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnNlbGYtPnB0cisrKSB7CisgICAgd2hpbGUgKHNlbGYtPmluZGV4IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKTsKKyAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgIC8qIGJhY2t1cCBzbyB0aGF0IHdlIHRoaXMgY2hhcmFjdGVyIHdpbGwgYmUgc2VlbiBuZXh0IHRpbWUgKi8KLSAgICAgICAgICAgIHNlbGYtPnB0ci0tOworICAgICAgICAgICAgc2VsZi0+aW5kZXgtLTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGludWU7CkBAIC0zMTQsNyArMjM3LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIC8qIGVuZCBvZiBzdHJpbmcgaXMgb2theSAqLwotICAgIG5hbWUtPmVuZCA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5lbmQgPSBzZWxmLT5pbmRleDsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMzIyLDEzICsyNDUsMTUgQEAKIF9GaWVsZE5hbWVJdGVyYXRvcl9pdGVtKEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKm5hbWUpCiB7CiAgICAgaW50IGJyYWNrZXRfc2VlbiA9IDA7Ci0gICAgU1RSSU5HTElCX0NIQVIgYzsKKyAgICBQeV9VQ1M0IGM7CiAKLSAgICBuYW1lLT5wdHIgPSBzZWxmLT5wdHI7CisgICAgbmFtZS0+c3RyID0gc2VsZi0+c3RyLnN0cjsKKyAgICBuYW1lLT5zdGFydCA9IHNlbGYtPmluZGV4OwogCiAgICAgLyogcmV0dXJuIGV2ZXJ5dGhpbmcgdW50aWwgJ10nICovCi0gICAgd2hpbGUgKHNlbGYtPnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnNlbGYtPnB0cisrKSB7CisgICAgd2hpbGUgKHNlbGYtPmluZGV4IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKTsKKyAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJ10nOgogICAgICAgICAgICAgYnJhY2tldF9zZWVuID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQ1LDcgKzI3MCw3IEBACiAKICAgICAvKiBlbmQgb2Ygc3RyaW5nIGlzIG9rYXkgKi8KICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSAnXScgKi8KLSAgICBuYW1lLT5lbmQgPSBzZWxmLT5wdHItMTsKKyAgICBuYW1lLT5lbmQgPSBzZWxmLT5pbmRleC0xOwogICAgIHJldHVybiAxOwogfQogCkBAIC0zNTUsMTAgKzI4MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuYW1lX2lkeCwgU3ViU3RyaW5nICpuYW1lKQogewogICAgIC8qIGNoZWNrIGF0IGVuZCBvZiBpbnB1dCAqLwotICAgIGlmIChzZWxmLT5wdHIgPj0gc2VsZi0+c3RyLmVuZCkKKyAgICBpZiAoc2VsZi0+aW5kZXggPj0gc2VsZi0+c3RyLmVuZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBzd2l0Y2ggKCpzZWxmLT5wdHIrKykgeworICAgIHN3aXRjaCAoUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKSkgewogICAgIGNhc2UgJy4nOgogICAgICAgICAqaXNfYXR0cmlidXRlID0gMTsKICAgICAgICAgaWYgKF9GaWVsZE5hbWVJdGVyYXRvcl9hdHRyKHNlbGYsIG5hbWUpID09IDApCkBAIC0zODEsNyArMzA2LDcgQEAKICAgICB9CiAKICAgICAvKiBlbXB0eSBzdHJpbmcgaXMgYW4gZXJyb3IgKi8KLSAgICBpZiAobmFtZS0+cHRyID09IG5hbWUtPmVuZCkgeworICAgIGlmIChuYW1lLT5zdGFydCA9PSBuYW1lLT5lbmQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBhdHRyaWJ1dGUgaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zOTcsMjQgKzMyMiwyMyBAQAogICAgICAgICAgICAncmVzdCcgaXMgYW4gaXRlcmF0b3IgdG8gcmV0dXJuIHRoZSByZXN0CiAqLwogc3RhdGljIGludAotZmllbGRfbmFtZV9zcGxpdChTVFJJTkdMSUJfQ0hBUiAqcHRyLCBQeV9zc2l6ZV90IGxlbiwgU3ViU3RyaW5nICpmaXJzdCwKK2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIFN1YlN0cmluZyAqZmlyc3QsCiAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmZpcnN0X2lkeCwgRmllbGROYW1lSXRlcmF0b3IgKnJlc3QsCiAgICAgICAgICAgICAgICAgIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQogewotICAgIFNUUklOR0xJQl9DSEFSIGM7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnAgPSBwdHI7Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZCA9IHB0ciArIGxlbjsKKyAgICBQeV9VQ1M0IGM7CisgICAgUHlfc3NpemVfdCBpID0gc3RhcnQ7CiAgICAgaW50IGZpZWxkX25hbWVfaXNfZW1wdHk7CiAgICAgaW50IHVzaW5nX251bWVyaWNfaW5kZXg7CiAKICAgICAvKiBmaW5kIHRoZSBwYXJ0IHVwIHVudGlsIHRoZSBmaXJzdCAnLicgb3IgJ1snICovCi0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnArKykgeworICAgIHdoaWxlIChpIDwgZW5kKSB7CisgICAgICAgIHN3aXRjaCAoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCBpKyspKSB7CiAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgIC8qIGJhY2t1cCBzbyB0aGF0IHdlIHRoaXMgY2hhcmFjdGVyIGlzIGF2YWlsYWJsZSB0byB0aGUKICAgICAgICAgICAgICAgICJyZXN0IiBpdGVyYXRvciAqLwotICAgICAgICAgICAgcC0tOworICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQyMywxNSArMzQ3LDE1IEBACiAgICAgfQogCiAgICAgLyogc2V0IHVwIHRoZSByZXR1cm4gdmFsdWVzICovCi0gICAgU3ViU3RyaW5nX2luaXQoZmlyc3QsIHB0ciwgcCAtIHB0cik7Ci0gICAgRmllbGROYW1lSXRlcmF0b3JfaW5pdChyZXN0LCBwLCBlbmQgLSBwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmaXJzdCwgc3RyLCBzdGFydCwgaSk7CisgICAgRmllbGROYW1lSXRlcmF0b3JfaW5pdChyZXN0LCBzdHIsIGksIGVuZCk7CiAKICAgICAvKiBzZWUgaWYgImZpcnN0IiBpcyBhbiBpbnRlZ2VyLCBpbiB3aGljaCBjYXNlIGl0J3MgdXNlZCBhcyBhbiBpbmRleCAqLwogICAgICpmaXJzdF9pZHggPSBnZXRfaW50ZWdlcihmaXJzdCk7CiAgICAgaWYgKCpmaXJzdF9pZHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmaWVsZF9uYW1lX2lzX2VtcHR5ID0gZmlyc3QtPnB0ciA+PSBmaXJzdC0+ZW5kOworICAgIGZpZWxkX25hbWVfaXNfZW1wdHkgPSBmaXJzdC0+c3RhcnQgPj0gZmlyc3QtPmVuZDsKIAogICAgIC8qIElmIHRoZSBmaWVsZCBuYW1lIGlzIG9taXR0ZWQgb3IgaWYgd2UgaGF2ZSBhIG51bWVyaWMgaW5kZXgKICAgICAgICBzcGVjaWZpZWQsIHRoZW4gd2UncmUgZG9pbmcgbnVtZXJpYyBpbmRleGluZyBpbnRvIGFyZ3MuICovCkBAIC00ODYsNyArNDEwLDcgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIEZpZWxkTmFtZUl0ZXJhdG9yIHJlc3Q7CiAKLSAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoaW5wdXQtPnB0ciwgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIsICZmaXJzdCwKKyAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoaW5wdXQtPnN0ciwgaW5wdXQtPnN0YXJ0LCBpbnB1dC0+ZW5kLCAmZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmRleCwgJnJlc3QsIGF1dG9fbnVtYmVyKSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTU3MCwzOSArNDk0LDQxIEBACiAgICAgYXBwZW5kcyB0byB0aGUgb3V0cHV0LgogKi8KIHN0YXRpYyBpbnQKLXJlbmRlcl9maWVsZChQeU9iamVjdCAqZmllbGRvYmosIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsIE91dHB1dFN0cmluZyAqb3V0cHV0KQorcmVuZGVyX2ZpZWxkKFB5T2JqZWN0ICpmaWVsZG9iaiwgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIGludCBvayA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjX29iamVjdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKigqZm9ybWF0dGVyKShQeU9iamVjdCAqLCBTVFJJTkdMSUJfQ0hBUiAqLCBQeV9zc2l6ZV90KSA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIqIGZvcm1hdF9zcGVjX3N0YXJ0ID0gZm9ybWF0X3NwZWMtPnB0ciA/Ci0gICAgICAgICAgICBmb3JtYXRfc3BlYy0+cHRyIDogTlVMTDsKLSAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiA9IGZvcm1hdF9zcGVjLT5wdHIgPwotICAgICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCAtIGZvcm1hdF9zcGVjLT5wdHIgOiAwOworICAgIGludCAoKmZvcm1hdHRlcikgKF9QeVVuaWNvZGVXcml0ZXIqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90KSA9IE5VTEw7CisgICAgaW50IGVycjsKIAogICAgIC8qIElmIHdlIGtub3cgdGhlIHR5cGUgZXhhY3RseSwgc2tpcCB0aGUgbG9va3VwIG9mIF9fZm9ybWF0X18gYW5kIGp1c3QKICAgICAgICBjYWxsIHRoZSBmb3JtYXR0ZXIgZGlyZWN0bHkuICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGZpZWxkb2JqKSkKLSAgICAgICAgZm9ybWF0dGVyID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZDsKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChmaWVsZG9iaikpCi0gICAgICAgIGZvcm1hdHRlciA9X1B5TG9uZ19Gb3JtYXRBZHZhbmNlZDsKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKICAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QoZmllbGRvYmopKQotICAgICAgICBmb3JtYXR0ZXIgPSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZDsKLQotICAgIC8qIFhYWDogZm9yIDIuNiwgY29udmVydCBmb3JtYXRfc3BlYyB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQotICAgICAgICh1bmljb2RlLCBzdHIpICovCisgICAgICAgIGZvcm1hdHRlciA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyOworICAgIGVsc2UgaWYgKFB5Q29tcGxleF9DaGVja0V4YWN0KGZpZWxkb2JqKSkKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKIAogICAgIGlmIChmb3JtYXR0ZXIpIHsKICAgICAgICAgLyogd2Uga25vdyBleGFjdGx5IHdoaWNoIGZvcm1hdHRlciB3aWxsIGJlIGNhbGxlZCB3aGVuIF9fZm9ybWF0X18gaXMKICAgICAgICAgICAgbG9va2VkIHVwLCBzbyBjYWxsIGl0IGRpcmVjdGx5LCBpbnN0ZWFkLiAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXR0ZXIoZmllbGRvYmosIGZvcm1hdF9zcGVjX3N0YXJ0LCBmb3JtYXRfc3BlY19sZW4pOworICAgICAgICBlcnIgPSBmb3JtYXR0ZXIod3JpdGVyLCBmaWVsZG9iaiwgZm9ybWF0X3NwZWMtPnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5zdGFydCwgZm9ybWF0X3NwZWMtPmVuZCk7CisgICAgICAgIHJldHVybiAoZXJyID09IDApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogV2UgbmVlZCB0byBjcmVhdGUgYW4gb2JqZWN0IG91dCBvZiB0aGUgcG9pbnRlcnMgd2UgaGF2ZSwgYmVjYXVzZQogICAgICAgICAgICBfX2Zvcm1hdF9fIHRha2VzIGEgc3RyaW5nL3VuaWNvZGUgb2JqZWN0IGZvciBmb3JtYXRfc3BlYy4gKi8KLSAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gU1RSSU5HTElCX05FVyhmb3JtYXRfc3BlY19zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4pOworICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnN0cikKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjX29iamVjdCA9IFB5VW5pY29kZV9TdWJzdHJpbmcoZm9ybWF0X3NwZWMtPnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYy0+ZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgaWYgKGZvcm1hdF9zcGVjX29iamVjdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBkb25lOwogCkBAIC02MTEsMjQgKzUzNywxMCBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSk7Ci0jZWxzZQotICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHJlc3VsdCkgfHwgUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIG9rID0gMTsKIAotICAgIC8qIENvbnZlcnQgcmVzdWx0IHRvIG91ciB0eXBlLiAgV2UgY291bGQgYmUgc3RyLCBhbmQgcmVzdWx0IGNvdWxkCi0gICAgICAgYmUgdW5pY29kZSAqLwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9IFNUUklOR0xJQl9UT1NUUihyZXN1bHQpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSB0bXA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBvayA9IG91dHB1dF9kYXRhKG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIocmVzdWx0KSwgU1RSSU5HTElCX0xFTihyZXN1bHQpKTsKIGRvbmU6CiAgICAgUHlfWERFQ1JFRihmb3JtYXRfc3BlY19vYmplY3QpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKQEAgLTYzNywyMyArNTQ5LDI0IEBACiAKIHN0YXRpYyBpbnQKIHBhcnNlX2ZpZWxkKFN1YlN0cmluZyAqc3RyLCBTdWJTdHJpbmcgKmZpZWxkX25hbWUsIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqY29udmVyc2lvbikKKyAgICAgICAgICAgIFB5X1VDUzQgKmNvbnZlcnNpb24pCiB7CiAgICAgLyogTm90ZSB0aGlzIGZ1bmN0aW9uIHdvcmtzIGlmIHRoZSBmaWVsZCBuYW1lIGlzIHplcm8gbGVuZ3RoLAogICAgICAgIHdoaWNoIGlzIGdvb2QuICBaZXJvIGxlbmd0aCBmaWVsZCBuYW1lcyBhcmUgaGFuZGxlZCBsYXRlciwgaW4KICAgICAgICBmaWVsZF9uYW1lX3NwbGl0LiAqLwogCi0gICAgU1RSSU5HTElCX0NIQVIgYyA9IDA7CisgICAgUHlfVUNTNCBjID0gMDsKIAogICAgIC8qIGluaXRpYWxpemUgdGhlc2UsIGFzIHRoZXkgbWF5IGJlIGVtcHR5ICovCiAgICAgKmNvbnZlcnNpb24gPSAnXDAnOwotICAgIFN1YlN0cmluZ19pbml0KGZvcm1hdF9zcGVjLCBOVUxMLCAwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCwgMCk7CiAKICAgICAvKiBTZWFyY2ggZm9yIHRoZSBmaWVsZCBuYW1lLiAgaXQncyB0ZXJtaW5hdGVkIGJ5IHRoZSBlbmQgb2YKICAgICAgICB0aGUgc3RyaW5nLCBvciBhICc6JyBvciAnIScgKi8KLSAgICBmaWVsZF9uYW1lLT5wdHIgPSBzdHItPnB0cjsKLSAgICB3aGlsZSAoc3RyLT5wdHIgPCBzdHItPmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHN0ci0+cHRyKyspKSB7CisgICAgZmllbGRfbmFtZS0+c3RyID0gc3RyLT5zdHI7CisgICAgZmllbGRfbmFtZS0+c3RhcnQgPSBzdHItPnN0YXJ0OworICAgIHdoaWxlIChzdHItPnN0YXJ0IDwgc3RyLT5lbmQpIHsKKyAgICAgICAgc3dpdGNoICgoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLT5zdHIsIHN0ci0+c3RhcnQrKykpKSB7CiAgICAgICAgIGNhc2UgJzonOgogICAgICAgICBjYXNlICchJzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjY2LDI2ICs1NzksMjcgQEAKICAgICBpZiAoYyA9PSAnIScgfHwgYyA9PSAnOicpIHsKICAgICAgICAgLyogd2UgaGF2ZSBhIGZvcm1hdCBzcGVjaWZpZXIgYW5kL29yIGEgY29udmVyc2lvbiAqLwogICAgICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSBsYXN0IGNoYXJhY3RlciAqLwotICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnB0ci0xOworICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnN0YXJ0LTE7CiAKICAgICAgICAgLyogdGhlIGZvcm1hdCBzcGVjaWZpZXIgaXMgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAqLwotICAgICAgICBmb3JtYXRfc3BlYy0+cHRyID0gc3RyLT5wdHI7CisgICAgICAgIGZvcm1hdF9zcGVjLT5zdHIgPSBzdHItPnN0cjsKKyAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0ID0gc3RyLT5zdGFydDsKICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCA9IHN0ci0+ZW5kOwogCiAgICAgICAgIC8qIHNlZSBpZiB0aGVyZSdzIGEgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KICAgICAgICAgaWYgKGMgPT0gJyEnKSB7CiAgICAgICAgICAgICAvKiB0aGVyZSBtdXN0IGJlIGFub3RoZXIgY2hhcmFjdGVyIHByZXNlbnQgKi8KLSAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+cHRyID49IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+c3RhcnQgPj0gZm9ybWF0X3NwZWMtPmVuZCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kIG9mIGZvcm1hdCB3aGlsZSBsb29raW5nIGZvciBjb252ZXJzaW9uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKmNvbnZlcnNpb24gPSAqKGZvcm1hdF9zcGVjLT5wdHIrKyk7CisgICAgICAgICAgICAqY29udmVyc2lvbiA9IFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMtPnN0ciwgZm9ybWF0X3NwZWMtPnN0YXJ0KyspOwogCiAgICAgICAgICAgICAvKiBpZiB0aGVyZSBpcyBhbm90aGVyIGNoYXJhY3RlciwgaXQgbXVzdCBiZSBhIGNvbG9uICovCi0gICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnB0ciA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKLSAgICAgICAgICAgICAgICBjID0gKihmb3JtYXRfc3BlYy0+cHRyKyspOworICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5zdGFydCA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYy0+c3RyLCBmb3JtYXRfc3BlYy0+c3RhcnQrKyk7CiAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICc6JyBhZnRlciBmb3JtYXQgc3BlY2lmaWVyIik7CkBAIC02OTYsNyArNjEwLDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgICAgICAvKiBlbmQgb2Ygc3RyaW5nLCB0aGVyZSdzIG5vIGZvcm1hdF9zcGVjIG9yIGNvbnZlcnNpb24gKi8KLSAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5wdHI7CisgICAgICAgIGZpZWxkX25hbWUtPmVuZCA9IHN0ci0+c3RhcnQ7CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTcxNSw5ICs2MjksMTAgQEAKIH0gTWFya3VwSXRlcmF0b3I7CiAKIHN0YXRpYyBpbnQKLU1hcmt1cEl0ZXJhdG9yX2luaXQoTWFya3VwSXRlcmF0b3IgKnNlbGYsIFNUUklOR0xJQl9DSEFSICpwdHIsIFB5X3NzaXplX3QgbGVuKQorTWFya3VwSXRlcmF0b3JfaW5pdChNYXJrdXBJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcHRyLCBsZW4pOworICAgIFN1YlN0cmluZ19pbml0KCZzZWxmLT5zdHIsIHN0ciwgc3RhcnQsIGVuZCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTcyNiwzMCArNjQxLDMwIEBACiBzdGF0aWMgaW50CiBNYXJrdXBJdGVyYXRvcl9uZXh0KE1hcmt1cEl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKmxpdGVyYWwsCiAgICAgICAgICAgICAgICAgICAgIGludCAqZmllbGRfcHJlc2VudCwgU3ViU3RyaW5nICpmaWVsZF9uYW1lLAotICAgICAgICAgICAgICAgICAgICBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLCBTVFJJTkdMSUJfQ0hBUiAqY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgUHlfVUNTNCAqY29udmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgaW50ICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpCiB7CiAgICAgaW50IGF0X2VuZDsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjID0gMDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqc3RhcnQ7CisgICAgUHlfVUNTNCBjID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIGludCBjb3VudDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgbWFya3VwX2ZvbGxvd3MgPSAwOwogCiAgICAgLyogaW5pdGlhbGl6ZSBhbGwgb2YgdGhlIG91dHB1dCB2YXJpYWJsZXMgKi8KLSAgICBTdWJTdHJpbmdfaW5pdChsaXRlcmFsLCBOVUxMLCAwKTsKLSAgICBTdWJTdHJpbmdfaW5pdChmaWVsZF9uYW1lLCBOVUxMLCAwKTsKLSAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQobGl0ZXJhbCwgTlVMTCwgMCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZmllbGRfbmFtZSwgTlVMTCwgMCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZm9ybWF0X3NwZWMsIE5VTEwsIDAsIDApOwogICAgICpjb252ZXJzaW9uID0gJ1wwJzsKICAgICAqZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nID0gMDsKICAgICAqZmllbGRfcHJlc2VudCA9IDA7CiAKICAgICAvKiBObyBtb3JlIGlucHV0LCBlbmQgb2YgaXRlcmF0b3IuICBUaGlzIGlzIHRoZSBub3JtYWwgZXhpdAogICAgICAgIHBhdGguICovCi0gICAgaWYgKHNlbGYtPnN0ci5wdHIgPj0gc2VsZi0+c3RyLmVuZCkKKyAgICBpZiAoc2VsZi0+c3RyLnN0YXJ0ID49IHNlbGYtPnN0ci5lbmQpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgc3RhcnQgPSBzZWxmLT5zdHIucHRyOworICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwogCiAgICAgLyogRmlyc3QgcmVhZCBhbnkgbGl0ZXJhbCB0ZXh0LiBSZWFkIHVudGlsIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbgogICAgICAgIGVzY2FwZWQgJ3snIG9yICd9Jywgb3IgYW4gdW5lc2NhcGVkICd7Jy4gIEluIG9yZGVyIHRvIG5ldmVyCkBAIC03NTgsOCArNjczLDggQEAKICAgICAgICBpbmNsdWRpbmcgdGhlIGJyYWNlLCBidXQgbm8gZm9ybWF0IG9iamVjdC4gIFRoZSBuZXh0IHRpbWUKICAgICAgICB0aHJvdWdoLCB3ZSdsbCByZXR1cm4gdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwsIHNraXBwaW5nIHBhc3QKICAgICAgICB0aGUgc2Vjb25kIGNvbnNlY3V0aXZlIGJyYWNlLiAqLwotICAgIHdoaWxlIChzZWxmLT5zdHIucHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHNlbGYtPnN0ci5wdHIrKykpIHsKKyAgICB3aGlsZSAoc2VsZi0+c3RyLnN0YXJ0IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCsrKSkgewogICAgICAgICBjYXNlICd7JzoKICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICBtYXJrdXBfZm9sbG93cyA9IDE7CkBAIC03NzAsMTAgKzY4NSwxMiBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBhdF9lbmQgPSBzZWxmLT5zdHIucHRyID49IHNlbGYtPnN0ci5lbmQ7Ci0gICAgbGVuID0gc2VsZi0+c3RyLnB0ciAtIHN0YXJ0OworICAgIGF0X2VuZCA9IHNlbGYtPnN0ci5zdGFydCA+PSBzZWxmLT5zdHIuZW5kOworICAgIGxlbiA9IHNlbGYtPnN0ci5zdGFydCAtIHN0YXJ0OwogCi0gICAgaWYgKChjID09ICd9JykgJiYgKGF0X2VuZCB8fCAoYyAhPSAqc2VsZi0+c3RyLnB0cikpKSB7CisgICAgaWYgKChjID09ICd9JykgJiYgKGF0X2VuZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAoYyAhPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyLnN0YXJ0KSkpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiU2luZ2xlICd9JyBlbmNvdW50ZXJlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTc4NCwxMCArNzAxLDEwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIWF0X2VuZCkgewotICAgICAgICBpZiAoYyA9PSAqc2VsZi0+c3RyLnB0cikgeworICAgICAgICBpZiAoYyA9PSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCkpIHsKICAgICAgICAgICAgIC8qIGVzY2FwZWQgfSBvciB7LCBza2lwIGl0IGluIHRoZSBpbnB1dC4gIHRoZXJlIGlzIG5vCiAgICAgICAgICAgICAgICBtYXJrdXAgb2JqZWN0IGZvbGxvd2luZyB1cywganVzdCB0aGlzIGxpdGVyYWwgdGV4dCAqLwotICAgICAgICAgICAgc2VsZi0+c3RyLnB0cisrOworICAgICAgICAgICAgc2VsZi0+c3RyLnN0YXJ0Kys7CiAgICAgICAgICAgICBtYXJrdXBfZm9sbG93cyA9IDA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtNzk1LDcgKzcxMiw4IEBACiAgICAgfQogCiAgICAgLyogcmVjb3JkIHRoZSBsaXRlcmFsIHRleHQgKi8KLSAgICBsaXRlcmFsLT5wdHIgPSBzdGFydDsKKyAgICBsaXRlcmFsLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIGxpdGVyYWwtPnN0YXJ0ID0gc3RhcnQ7CiAgICAgbGl0ZXJhbC0+ZW5kID0gc3RhcnQgKyBsZW47CiAKICAgICBpZiAoIW1hcmt1cF9mb2xsb3dzKQpAQCAtODA3LDEyICs3MjUsMTIgQEAKICAgICAqZmllbGRfcHJlc2VudCA9IDE7CiAgICAgY291bnQgPSAxOwogCi0gICAgc3RhcnQgPSBzZWxmLT5zdHIucHRyOworICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwogCiAgICAgLyogd2Uga25vdyB3ZSBjYW4ndCBoYXZlIGEgemVybyBsZW5ndGggc3RyaW5nLCBzbyBkb24ndCB3b3JyeQogICAgICAgIGFib3V0IHRoYXQgY2FzZSAqLwotICAgIHdoaWxlIChzZWxmLT5zdHIucHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHNlbGYtPnN0ci5wdHIrKykpIHsKKyAgICB3aGlsZSAoc2VsZi0+c3RyLnN0YXJ0IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCsrKSkgewogICAgICAgICBjYXNlICd7JzoKICAgICAgICAgICAgIC8qIHRoZSBmb3JtYXQgc3BlYyBuZWVkcyB0byBiZSByZWN1cnNpdmVseSBleHBhbmRlZC4KICAgICAgICAgICAgICAgIHRoaXMgaXMgYW4gb3B0aW1pemF0aW9uLCBhbmQgbm90IHN0cmljdGx5IG5lZWRlZCAqLwpAQCAtODI1LDcgKzc0Myw3IEBACiAgICAgICAgICAgICAgICAgLyogd2UncmUgZG9uZS4gIHBhcnNlIGFuZCBnZXQgb3V0ICovCiAgICAgICAgICAgICAgICAgU3ViU3RyaW5nIHM7CiAKLSAgICAgICAgICAgICAgICBTdWJTdHJpbmdfaW5pdCgmcywgc3RhcnQsIHNlbGYtPnN0ci5wdHIgLSAxIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIFN1YlN0cmluZ19pbml0KCZzLCBzZWxmLT5zdHIuc3RyLCBzdGFydCwgc2VsZi0+c3RyLnN0YXJ0IC0gMSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlX2ZpZWxkKCZzLCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTg0NCw3ICs3NjIsNyBAQAogCiAvKiBkbyB0aGUgIXIgb3IgIXMgY29udmVyc2lvbiBvbiBvYmogKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kb19jb252ZXJzaW9uKFB5T2JqZWN0ICpvYmosIFNUUklOR0xJQl9DSEFSIGNvbnZlcnNpb24pCitkb19jb252ZXJzaW9uKFB5T2JqZWN0ICpvYmosIFB5X1VDUzQgY29udmVyc2lvbikKIHsKICAgICAvKiBYWFggaW4gcHJlLTMuMCwgZG8gd2UgbmVlZCB0byBjb252ZXJ0IHRoaXMgdG8gdW5pY29kZSwgc2luY2UgaXQKICAgICAgICBtaWdodCBoYXZlIHJldHVybmVkIGEgc3RyaW5nPyAqLwpAQCAtODUyLDExICs3NzAsOSBAQAogICAgIGNhc2UgJ3InOgogICAgICAgICByZXR1cm4gUHlPYmplY3RfUmVwcihvYmopOwogICAgIGNhc2UgJ3MnOgotICAgICAgICByZXR1cm4gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAorICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgY2FzZSAnYSc6Ci0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfVE9BU0NJSShvYmopOwotI2VuZGlmCisgICAgICAgIHJldHVybiBQeU9iamVjdF9BU0NJSShvYmopOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmIChjb252ZXJzaW9uID4gMzIgJiYgY29udmVyc2lvbiA8IDEyNykgewogICAgICAgICAgICAgICAgIC8qIEl0J3MgdGhlIEFTQ0lJIHN1YnJhbmdlOyBjYXN0aW5nIHRvIGNoYXIgaXMgc2FmZQpAQCAtODg4LDggKzgwNCw4IEBACiAKIHN0YXRpYyBpbnQKIG91dHB1dF9tYXJrdXAoU3ViU3RyaW5nICpmaWVsZF9uYW1lLCBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICBpbnQgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uLAotICAgICAgICAgICAgICBPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgICAgICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIFB5X1VDUzQgY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7CiAgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CkBAIC05MDUsNyArODIxLDcgQEAKIAogICAgIGlmIChjb252ZXJzaW9uICE9ICdcMCcpIHsKICAgICAgICAgdG1wID0gZG9fY29udmVyc2lvbihmaWVsZG9iaiwgY29udmVyc2lvbik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWSh0bXApID09IC0xKQogICAgICAgICAgICAgZ290byBkb25lOwogCiAgICAgICAgIC8qIGRvIHRoZSBhc3NpZ25tZW50LCB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwOiBmaWVsZG9iaiA9IHRtcCAqLwpAQCAtOTE4LDIwICs4MzQsMTkgQEAKICAgICBpZiAoZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKSB7CiAgICAgICAgIHRtcCA9IGJ1aWxkX3N0cmluZyhmb3JtYXRfc3BlYywgYXJncywga3dhcmdzLCByZWN1cnNpb25fZGVwdGgtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9fbnVtYmVyKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICBpZiAodG1wID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHRtcCkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKICAgICAgICAgLyogbm90ZSB0aGF0IGluIHRoZSBjYXNlIHdlJ3JlIGV4cGFuZGluZyB0aGUgZm9ybWF0IHN0cmluZywKICAgICAgICAgICAgdG1wIG11c3QgYmUga2VwdCBhcm91bmQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8KICAgICAgICAgICAgcmVuZGVyX2ZpZWxkLiAqLwotICAgICAgICBTdWJTdHJpbmdfaW5pdCgmZXhwYW5kZWRfZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIodG1wKSwgU1RSSU5HTElCX0xFTih0bXApKTsKKyAgICAgICAgU3ViU3RyaW5nX2luaXQoJmV4cGFuZGVkX2Zvcm1hdF9zcGVjLCB0bXAsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRtcCkpOwogICAgICAgICBhY3R1YWxfZm9ybWF0X3NwZWMgPSAmZXhwYW5kZWRfZm9ybWF0X3NwZWM7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgYWN0dWFsX2Zvcm1hdF9zcGVjID0gZm9ybWF0X3NwZWM7CiAKLSAgICBpZiAocmVuZGVyX2ZpZWxkKGZpZWxkb2JqLCBhY3R1YWxfZm9ybWF0X3NwZWMsIG91dHB1dCkgPT0gMCkKKyAgICBpZiAocmVuZGVyX2ZpZWxkKGZpZWxkb2JqLCBhY3R1YWxfZm9ybWF0X3NwZWMsIHdyaXRlcikgPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCiAgICAgcmVzdWx0ID0gMTsKQEAgLTk1MSw3ICs4NjYsNyBAQAogKi8KIHN0YXRpYyBpbnQKIGRvX21hcmt1cChTdWJTdHJpbmcgKmlucHV0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKLSAgICAgICAgICBPdXRwdXRTdHJpbmcgKm91dHB1dCwgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCisgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKICAgICBNYXJrdXBJdGVyYXRvciBpdGVyOwogICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmc7CkBAIC05NjAsMjAgKzg3NSwzNSBAQAogICAgIFN1YlN0cmluZyBsaXRlcmFsOwogICAgIFN1YlN0cmluZyBmaWVsZF9uYW1lOwogICAgIFN1YlN0cmluZyBmb3JtYXRfc3BlYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uOworICAgIFB5X1VDUzQgY29udmVyc2lvbiwgbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IHN1YmxlbjsKKyAgICBpbnQgZXJyOwogCi0gICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXRlciwgaW5wdXQtPnB0ciwgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIpOworICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0ZXIsIGlucHV0LT5zdHIsIGlucHV0LT5zdGFydCwgaW5wdXQtPmVuZCk7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBNYXJrdXBJdGVyYXRvcl9uZXh0KCZpdGVyLCAmbGl0ZXJhbCwgJmZpZWxkX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWVsZF9uYW1lLCAmZm9ybWF0X3NwZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb252ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKSkgPT0gMikgewotICAgICAgICBpZiAoIW91dHB1dF9kYXRhKG91dHB1dCwgbGl0ZXJhbC5wdHIsIGxpdGVyYWwuZW5kIC0gbGl0ZXJhbC5wdHIpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChmaWVsZF9wcmVzZW50KQorICAgICAgICBzdWJsZW4gPSBsaXRlcmFsLmVuZCAtIGxpdGVyYWwuc3RhcnQ7CisgICAgICAgIGlmIChzdWJsZW4pIHsKKyAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKGxpdGVyYWwuc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbC5zdGFydCwgbGl0ZXJhbC5lbmQpOworICAgICAgICAgICAgZXJyID0gX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3VibGVuLCBtYXhjaGFyKTsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsLnN0ciwgbGl0ZXJhbC5zdGFydCwgc3VibGVuKTsKKyAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IHN1YmxlbjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaWVsZF9wcmVzZW50KSB7CisgICAgICAgICAgICBpZiAoaXRlci5zdHIuc3RhcnQgPT0gaXRlci5zdHIuZW5kKQorICAgICAgICAgICAgICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gMDsKICAgICAgICAgICAgIGlmICghb3V0cHV0X21hcmt1cCgmZmllbGRfbmFtZSwgJmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgY29udmVyc2lvbiwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgY29udmVyc2lvbiwgd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLCBhdXRvX251bWJlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk4Nyw0MyArOTE3LDI2IEBACiBidWlsZF9zdHJpbmcoU3ViU3RyaW5nICppbnB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7Ci0gICAgT3V0cHV0U3RyaW5nIG91dHB1dDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotCi0gICAgb3V0cHV0Lm9iaiA9IE5VTEw7IC8qIG5lZWRlZCBzbyBjbGVhbnVwIGNvZGUgYWx3YXlzIHdvcmtzICovCisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgUHlfc3NpemVfdCBtaW5sZW47CiAKICAgICAvKiBjaGVjayB0aGUgcmVjdXJzaW9uIGxldmVsICovCiAgICAgaWYgKHJlY3Vyc2lvbl9kZXB0aCA8PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIk1heCBzdHJpbmcgcmVjdXJzaW9uIGV4Y2VlZGVkIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogaW5pdGlhbCBzaXplIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZvcm1hdCBzdHJpbmcsIHBsdXMgdGhlIHNpemUKLSAgICAgICBpbmNyZW1lbnQuICBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBkZWZhdWx0ICovCi0gICAgaWYgKCFvdXRwdXRfaW5pdGlhbGl6ZSgmb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5JVElBTF9TSVpFX0lOQ1JFTUVOVCkpCi0gICAgICAgIGdvdG8gZG9uZTsKKyAgICBtaW5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dC0+c3RyKSArIDEwMDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgbWlubGVuKTsKIAotICAgIGlmICghZG9fbWFya3VwKGlucHV0LCBhcmdzLCBrd2FyZ3MsICZvdXRwdXQsIHJlY3Vyc2lvbl9kZXB0aCwKKyAgICBpZiAoIWRvX21hcmt1cChpbnB1dCwgYXJncywga3dhcmdzLCAmd3JpdGVyLCByZWN1cnNpb25fZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgYXV0b19udW1iZXIpKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBjb3VudCA9IG91dHB1dC5wdHIgLSBTVFJJTkdMSUJfU1RSKG91dHB1dC5vYmopOwotICAgIGlmIChTVFJJTkdMSUJfUkVTSVpFKCZvdXRwdXQub2JqLCBjb3VudCkgPCAwKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0ICovCi0gICAgcmVzdWx0ID0gb3V0cHV0Lm9iajsKLSAgICBvdXRwdXQub2JqID0gTlVMTDsKLQotZG9uZToKLSAgICBQeV9YREVDUkVGKG91dHB1dC5vYmopOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTA0NCw4ICs5NTcsMTEgQEAKIAogICAgIEF1dG9OdW1iZXIgYXV0b19udW1iZXI7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIEF1dG9OdW1iZXJfSW5pdCgmYXV0b19udW1iZXIpOwotICAgIFN1YlN0cmluZ19pbml0KCZpbnB1dCwgU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7CisgICAgU3ViU3RyaW5nX2luaXQoJmlucHV0LCBzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CiAgICAgcmV0dXJuIGJ1aWxkX3N0cmluZygmaW5wdXQsIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLCAmYXV0b19udW1iZXIpOwogfQogCkBAIC0xMDY3LDkgKzk4Myw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0KLSAgICBTVFJJTkdMSUJfT0JKRUNUICpzdHI7Ci0KKyAgICBQeU9iamVjdCAqc3RyOwogICAgIE1hcmt1cEl0ZXJhdG9yIGl0X21hcmt1cDsKIH0gZm9ybWF0dGVyaXRlcm9iamVjdDsKIApAQCAtMTA5NCw3ICsxMDA4LDcgQEAKICAgICBTdWJTdHJpbmcgbGl0ZXJhbDsKICAgICBTdWJTdHJpbmcgZmllbGRfbmFtZTsKICAgICBTdWJTdHJpbmcgZm9ybWF0X3NwZWM7Ci0gICAgU1RSSU5HTElCX0NIQVIgY29udmVyc2lvbjsKKyAgICBQeV9VQ1M0IGNvbnZlcnNpb247CiAgICAgaW50IGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZzsKICAgICBpbnQgZmllbGRfcHJlc2VudDsKICAgICBpbnQgcmVzdWx0ID0gTWFya3VwSXRlcmF0b3JfbmV4dCgmaXQtPml0X21hcmt1cCwgJmxpdGVyYWwsICZmaWVsZF9wcmVzZW50LApAQCAtMTEzOCw3ICsxMDUyLDggQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihjb252ZXJzaW9uX3N0cik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udmVyc2lvbl9zdHIgPSBTVFJJTkdMSUJfTkVXKCZjb252ZXJzaW9uLCAxKTsKKyAgICAgICAgICAgIGNvbnZlcnNpb25fc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udmVyc2lvbiwgMSk7CiAgICAgICAgIGlmIChjb252ZXJzaW9uX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMTk1LDcgKzExMTAsNyBAQAogICAgZGVzY3JpYmluZyB0aGUgcGFyc2VkIGVsZW1lbnRzLiAgSXQncyBhIHdyYXBwZXIgYXJvdW5kCiAgICBzdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oJ3MgTWFya3VwSXRlcmF0b3IgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXR0ZXJfcGFyc2VyKFB5T2JqZWN0ICppZ25vcmVkLCBTVFJJTkdMSUJfT0JKRUNUICpzZWxmKQorZm9ybWF0dGVyX3BhcnNlcihQeU9iamVjdCAqaWdub3JlZCwgUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgZm9ybWF0dGVyaXRlcm9iamVjdCAqaXQ7CiAKQEAgLTEyMDQsNiArMTExOSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaXQgPSBQeU9iamVjdF9OZXcoZm9ybWF0dGVyaXRlcm9iamVjdCwgJlB5Rm9ybWF0dGVySXRlcl9UeXBlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjEzLDEwICsxMTMxLDcgQEAKICAgICBpdC0+c3RyID0gc2VsZjsKIAogICAgIC8qIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lZCBNYXJrdXBJdGVyYXRvciAqLwotICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0LT5pdF9tYXJrdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0KKyAgICBNYXJrdXBJdGVyYXRvcl9pbml0KCZpdC0+aXRfbWFya3VwLCAoUHlPYmplY3QqKXNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CiAKQEAgLTEyMzIsOSArMTE0Nyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0KLSAgICBTVFJJTkdMSUJfT0JKRUNUICpzdHI7Ci0KKyAgICBQeU9iamVjdCAqc3RyOwogICAgIEZpZWxkTmFtZUl0ZXJhdG9yIGl0X2ZpZWxkOwogfSBmaWVsZG5hbWVpdGVyb2JqZWN0OwogCkBAIC0xMzM1LDcgKzEyNDgsNyBAQAogICAgZmllbGRfbmFtZV9zcGxpdC4gIFRoZSBpdGVyYXRvciBpdCByZXR1cm5zIGlzIGEKICAgIEZpZWxkTmFtZUl0ZXJhdG9yICovCiBzdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKmlnbm9yZWQsIFNUUklOR0xJQl9PQkpFQ1QgKnNlbGYpCitmb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdChQeU9iamVjdCAqaWdub3JlZCwgUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgU3ViU3RyaW5nIGZpcnN0OwogICAgIFB5X3NzaXplX3QgZmlyc3RfaWR4OwpAQCAtMTM0OSw2ICsxMjYyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpdCA9IFB5T2JqZWN0X05ldyhmaWVsZG5hbWVpdGVyb2JqZWN0LCAmUHlGaWVsZE5hbWVJdGVyX1R5cGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNjAsOCArMTI3Niw3IEBACiAKICAgICAvKiBQYXNzIGluIGF1dG9fbnVtYmVyID0gTlVMTC4gV2UnbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IKICAgICAgICBmaXJzdF9vYmogaW4gdGhhdCBjYXNlLiAqLwotICAgIGlmICghZmllbGRfbmFtZV9zcGxpdChTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpLAorICAgIGlmICghZmllbGRfbmFtZV9zcGxpdCgoUHlPYmplY3QqKXNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZmaXJzdF9pZHgsICZpdC0+aXRfZmllbGQsIE5VTEwpKQogICAgICAgICBnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCmluZGV4IDA5ZGFlNmQuLmYxNmYyMWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaApAQCAtNiw3ICs2LDEwIEBACiAgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLwogI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQogCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBzdHJpbmdsaWJfIyNGCiAjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIFB5X1VOSUNPREVfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVU5JQ09ERQogI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCiAjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKQEAgLTE1LDE3ICsxOCwxMiBAQAogI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCiAjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAogI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKLSNkZWZpbmUgU1RSSU5HTElCX1RPVVBQRVIgICAgICAgIFB5X1VOSUNPREVfVE9VUFBFUgotI2RlZmluZSBTVFJJTkdMSUJfVE9MT1dFUiAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSCi0jZGVmaW5lIFNUUklOR0xJQl9GSUxMICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZQogI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZQogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkcgICAgICAgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkdfTE9DQUxFIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKIAogI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMzAwMDAwMAogI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfVW5pY29kZQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IDllOTE0Y2IuLmVjM2Y5MWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTQ1LDYgKzQ1LDIyIEBACiB9CiAjZW5kaWYKIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisjaWYgUHlUdXBsZV9NQVhTQVZFU0laRSA+IDAKKyAgICBpbnQgaTsKKyAgICBjaGFyIGJ1ZlsxMjhdOworICAgIGZvciAoaSA9IDE7IGkgPCBQeVR1cGxlX01BWFNBVkVTSVpFOyBpKyspIHsKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAorICAgICAgICAgICAgICAgICAgICAgICJmcmVlICVkLXNpemVkIFB5VHVwbGVPYmplY3QiLCBpKTsKKyAgICAgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWVbaV0sIF9QeU9iamVjdF9WQVJfU0laRSgmUHlUdXBsZV9UeXBlLCBpKSk7CisgICAgfQorI2VuZGlmCit9CiAKIFB5T2JqZWN0ICoKIFB5VHVwbGVfTmV3KHJlZ2lzdGVyIFB5X3NzaXplX3Qgc2l6ZSkKQEAgLTgwLDE1ICs5NiwxMSBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgUHlfc3NpemVfdCBuYnl0ZXMgPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAgICAgaWYgKG5ieXRlcyAvIHNpemVvZihQeU9iamVjdCAqKSAhPSAoc2l6ZV90KXNpemUgfHwKLSAgICAgICAgICAgIChuYnl0ZXMgPiBQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeVR1cGxlT2JqZWN0KSAtIHNpemVvZihQeU9iamVjdCAqKSkpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQorICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKikpIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBuYnl0ZXMgKz0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0gc2l6ZW9mKFB5T2JqZWN0ICopOwotCiAgICAgICAgIG9wID0gUHlPYmplY3RfR0NfTmV3VmFyKFB5VHVwbGVPYmplY3QsICZQeVR1cGxlX1R5cGUsIHNpemUpOwogICAgICAgICBpZiAob3AgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzI4LDEwICszNDAsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgeCA9ICh4IF4geSkgKiBtdWx0OwogICAgICAgICAvKiB0aGUgY2FzdCBtaWdodCB0cnVuY2F0ZSBsZW47IHRoYXQgZG9lc24ndCBjaGFuZ2UgaGFzaCBzdGFiaWxpdHkgKi8KLSAgICAgICAgbXVsdCArPSAoUHlfdWhhc2hfdCkoODI1MjBVTCArIGxlbiArIGxlbik7CisgICAgICAgIG11bHQgKz0gKFB5X2hhc2hfdCkoODI1MjBVTCArIGxlbiArIGxlbik7CiAgICAgfQogICAgIHggKz0gOTc1MzFVTDsKLSAgICBpZiAoeCA9PSAtMSkKKyAgICBpZiAoeCA9PSAoUHlfdWhhc2hfdCktMSkKICAgICAgICAgeCA9IC0yOwogICAgIHJldHVybiB4OwogfQpAQCAtNDY1LDkgKzQ3Nyw5IEBACiAgICAgICAgIGlmIChQeV9TSVpFKGEpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlUdXBsZV9OZXcoMCk7CiAgICAgfQotICAgIHNpemUgPSBQeV9TSVpFKGEpICogbjsKLSAgICBpZiAoc2l6ZS9QeV9TSVpFKGEpICE9IG4pCisgICAgaWYgKG4gPiBQWV9TU0laRV9UX01BWCAvIFB5X1NJWkUoYSkpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICogbjsKICAgICBucCA9IChQeVR1cGxlT2JqZWN0ICopIFB5VHVwbGVfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU0NywxMCArNTU5LDggQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCB2bGVuLCB3bGVuOwogCi0gICAgaWYgKCFQeVR1cGxlX0NoZWNrKHYpIHx8ICFQeVR1cGxlX0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHYpIHx8ICFQeVR1cGxlX0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICB2dCA9IChQeVR1cGxlT2JqZWN0ICopdjsKICAgICB3dCA9IChQeVR1cGxlT2JqZWN0ICopdzsKQEAgLTk3MSw4ICs5ODEsMzkgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgordHVwbGVpdGVyX3JlZHVjZSh0dXBsZWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0dXBsZWl0ZXJfc2V0c3RhdGUodHVwbGVpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGxvbmcgaW5kZXggPSBQeUxvbmdfQXNMb25nKHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpdC0+aXRfc2VxICE9IE5VTEwgJiYgaW5kZXggPiBQeVR1cGxlX0dFVF9TSVpFKGl0LT5pdF9zZXEpKQorICAgICAgICAgICAgaW5kZXggPSBQeVR1cGxlX0dFVF9TSVpFKGl0LT5pdF9zZXEpOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiB0dXBsZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXR1cGxlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbil0dXBsZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pdHVwbGVpdGVyX3NldHN0YXRlLCBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggZmQyYWU2Ny4uNDEzYzdkYSAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTE0LDE2ICsxNCwxNyBAQAogICAgTUNBQ0hFX01BWF9BVFRSX1NJWkUsIHNpbmNlIGl0IG1pZ2h0IGJlIGEgcHJvYmxlbSBpZiB2ZXJ5IGxhcmdlCiAgICBzdHJpbmdzIGFyZSB1c2VkIGFzIGF0dHJpYnV0ZSBuYW1lcy4gKi8KICNkZWZpbmUgTUNBQ0hFX01BWF9BVFRSX1NJWkUgICAgMTAwCi0jZGVmaW5lIE1DQUNIRV9TSVpFX0VYUCAgICAgICAgIDEwCisjZGVmaW5lIE1DQUNIRV9TSVpFX0VYUCAgICAgICAgIDkKICNkZWZpbmUgTUNBQ0hFX0hBU0godmVyc2lvbiwgbmFtZV9oYXNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgKCgodW5zaWduZWQgaW50KSh2ZXJzaW9uKSAqICh1bnNpZ25lZCBpbnQpKG5hbWVfaGFzaCkpICAgICAgICAgIFwKICAgICAgICAgID4+ICg4KnNpemVvZih1bnNpZ25lZCBpbnQpIC0gTUNBQ0hFX1NJWkVfRVhQKSkKICNkZWZpbmUgTUNBQ0hFX0hBU0hfTUVUSE9EKHR5cGUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTUNBQ0hFX0hBU0goKHR5cGUpLT50cF92ZXJzaW9uX3RhZywgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICgoUHlVbmljb2RlT2JqZWN0ICopKG5hbWUpKS0+aGFzaCkKKyAgICAgICAgICAgICAgICAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG5hbWUpKS0+aGFzaCkKICNkZWZpbmUgTUNBQ0hFX0NBQ0hFQUJMRV9OQU1FKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QobmFtZSkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSkgPD0gTUNBQ0hFX01BWF9BVFRSX1NJWkUKKyAgICAgICAgUHlVbmljb2RlX1JFQURZKG5hbWUpICE9IC0xICYmICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPD0gTUNBQ0hFX01BWF9BVFRSX1NJWkUKIAogc3RydWN0IG1ldGhvZF9jYWNoZV9lbnRyeSB7CiAgICAgdW5zaWduZWQgaW50IHZlcnNpb247CkBAIC0zNCw2ICszNSwyMiBAQAogc3RhdGljIHN0cnVjdCBtZXRob2RfY2FjaGVfZW50cnkgbWV0aG9kX2NhY2hlWzEgPDwgTUNBQ0hFX1NJWkVfRVhQXTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmV4dF92ZXJzaW9uX3RhZyA9IDA7CiAKK19QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CitfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CitfUHlfSURFTlRJRklFUihfX2RvY19fKTsKK19QeV9JREVOVElGSUVSKF9fZ2V0aXRlbV9fKTsKK19QeV9JREVOVElGSUVSKF9fZ2V0YXR0cmlidXRlX18pOworX1B5X0lERU5USUZJRVIoX19oYXNoX18pOworX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CitfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CitfUHlfSURFTlRJRklFUihfX25ld19fKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19QeVR5cGVfTG9va3VwSWQoUHlUeXBlT2JqZWN0ICp0eXBlLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCiB1bnNpZ25lZCBpbnQKIFB5VHlwZV9DbGVhckNhY2hlKHZvaWQpCiB7CkBAIC05NiwxNSArMTEzLDEzIEBACiBzdGF0aWMgdm9pZAogdHlwZV9tcm9fbW9kaWZpZWQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYmFzZXMpIHsKICAgICAvKgotICAgICAgIENoZWNrIHRoYXQgYWxsIGJhc2UgY2xhc3NlcyBvciBlbGVtZW50cyBvZiB0aGUgbXJvIG9mIHR5cGUgYXJlCisgICAgICAgQ2hlY2sgdGhhdCBhbGwgYmFzZSBjbGFzc2VzIG9yIGVsZW1lbnRzIG9mIHRoZSBNUk8gb2YgdHlwZSBhcmUKICAgICAgICBhYmxlIHRvIGJlIGNhY2hlZC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBiYXNlCiAgICAgICAgY2xhc3NlcyBvciBtcm8gb2YgdGhlIHR5cGUgYXJlIGFsdGVyZWQuCiAKICAgICAgICBVbnNldCBIQVZFX1ZFUlNJT05fVEFHIGFuZCBWQUxJRF9WRVJTSU9OX1RBRyBpZiB0aGUgdHlwZQotICAgICAgIGluaGVyaXRzIGZyb20gYW4gb2xkLXN0eWxlIGNsYXNzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaWYgaXQKLSAgICAgICBhcHBlYXJzIGluIHRoZSBNUk8gb2YgYSBuZXctc3R5bGUgY2xhc3MuICBObyBzdXBwb3J0IGVpdGhlciBmb3IKLSAgICAgICBjdXN0b20gTVJPcyB0aGF0IGluY2x1ZGUgdHlwZXMgdGhhdCBhcmUgbm90IG9mZmljaWFsbHkgc3VwZXIKLSAgICAgICB0eXBlcy4KKyAgICAgICBoYXMgYSBjdXN0b20gTVJPIHRoYXQgaW5jbHVkZXMgYSB0eXBlIHdoaWNoIGlzIG5vdCBvZmZpY2lhbGx5CisgICAgICAgc3VwZXIgdHlwZS4KIAogICAgICAgIENhbGxlZCBmcm9tIG1yb19pbnRlcm5hbCwgd2hpY2ggd2lsbCBzdWJzZXF1ZW50bHkgYmUgY2FsbGVkIG9uCiAgICAgICAgZWFjaCBzdWJjbGFzcyB3aGVuIHRoZWlyIG1ybyBpcyByZWN1cnNpdmVseSB1cGRhdGVkLgpAQCAtMTIwLDExICsxMzUsNyBAQAogICAgICAgICBQeU9iamVjdCAqYiA9IFB5VHVwbGVfR0VUX0lURU0oYmFzZXMsIGkpOwogICAgICAgICBQeVR5cGVPYmplY3QgKmNsczsKIAotICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhiKSApIHsKLSAgICAgICAgICAgIGNsZWFyID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KKyAgICAgICAgYXNzZXJ0KFB5VHlwZV9DaGVjayhiKSk7CiAgICAgICAgIGNscyA9IChQeVR5cGVPYmplY3QgKiliOwogCiAgICAgICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUoY2xzLCBQeV9UUEZMQUdTX0hBVkVfVkVSU0lPTl9UQUcpIHx8CkBAIC0yMDEsNiArMjEyLDIyIEBACiAgICAgezB9CiB9OwogCitzdGF0aWMgaW50CitjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNldCAlcy4lcyIsIHR5cGUtPnRwX25hbWUsIG5hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy4lcyIsIHR5cGUtPnRwX25hbWUsIG5hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX25hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewpAQCAtMjIyLDYgKzI0OSwxOSBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3R5cGVfcXVhbG5hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQoreworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKKyAgICAgICAgUHlIZWFwVHlwZU9iamVjdCogZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICAgICAgUHlfSU5DUkVGKGV0LT5odF9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBldC0+aHRfcXVhbG5hbWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gdHlwZV9uYW1lKHR5cGUsIGNvbnRleHQpOworICAgIH0KK30KKwogc3RhdGljIGludAogdHlwZV9zZXRfbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKQEAgLTIyOSwxNiArMjY5LDggQEAKICAgICBjaGFyICp0cF9uYW1lOwogICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fbmFtZV9fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX25hbWVfXyIpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBkZWxldGUgJXMuX19uYW1lX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJjYW4gb25seSBhc3NpZ24gc3RyaW5nIHRvICVzLl9fbmFtZV9fLCBub3QgJyVzJyIsCkBAIC0yNzQsNiArMzA2LDI3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3R5cGVfc2V0X3F1YWxuYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5SGVhcFR5cGVPYmplY3QqIGV0OworCisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX3F1YWxuYW1lX18iKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBzdHJpbmcgdG8gJXMuX19xdWFsbmFtZV9fLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CisgICAgZXQtPmh0X3F1YWxuYW1lID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yODEsNyArMzM0LDcgQEAKICAgICBjaGFyICpzOwogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgewotICAgICAgICBtb2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIl9fbW9kdWxlX18iKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzAxLDIwICszNTQsMTIgQEAKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbW9kdWxlX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAogICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKIAotICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIsIHZhbHVlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgdmFsdWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM1LDE2ICs0ODAsOCBAQAogICAgIFB5VHlwZU9iamVjdCAqbmV3X2Jhc2UsICpvbGRfYmFzZTsKICAgICBQeU9iamVjdCAqb2xkX2Jhc2VzLCAqb2xkX21ybzsKIAotICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuX19iYXNlc19fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX2Jhc2VzX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fYmFzZXNfXyIsIHR5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmICghUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAiY2FuIG9ubHkgYXNzaWduIHR1cGxlIHRvICVzLl9fYmFzZXNfXywgbm90ICVzIiwKQEAgLTQ2MSw4ICs0OTgsNyBAQAogICAgICAgICBvYiA9IFB5VHVwbGVfR0VUX0lURU0odmFsdWUsIGkpOwogICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhvYikpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVzLl9fYmFzZXNfXyBtdXN0IGJlIHR1cGxlIG9mIG9sZC0gb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJuZXctc3R5bGUgY2xhc3Nlcywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2Jhc2VzX18gbXVzdCBiZSB0dXBsZSBvZiBjbGFzc2VzLCBub3QgJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgUHlfVFlQRShvYiktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC01ODAsNyArNjE2LDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgJiYgdHlwZS0+dHBfZG9jICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwotICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIik7CisgICAgcmVzdWx0ID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwpAQCAtNTk1LDYgKzYzMSwxNSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3R5cGVfc2V0X2RvYyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fZG9jX18iKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXywgdmFsdWUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9fX2luc3RhbmNlY2hlY2tfXyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmluc3QpCiB7CkBAIC02MjUsMTIgKzY3MCwxMyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgdHlwZV9nZXRzZXRzW10gPSB7CiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpdHlwZV9uYW1lLCAoc2V0dGVyKXR5cGVfc2V0X25hbWUsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcil0eXBlX3F1YWxuYW1lLCAoc2V0dGVyKXR5cGVfc2V0X3F1YWxuYW1lLCBOVUxMfSwKICAgICB7Il9fYmFzZXNfXyIsIChnZXR0ZXIpdHlwZV9nZXRfYmFzZXMsIChzZXR0ZXIpdHlwZV9zZXRfYmFzZXMsIE5VTEx9LAogICAgIHsiX19tb2R1bGVfXyIsIChnZXR0ZXIpdHlwZV9tb2R1bGUsIChzZXR0ZXIpdHlwZV9zZXRfbW9kdWxlLCBOVUxMfSwKICAgICB7Il9fYWJzdHJhY3RtZXRob2RzX18iLCAoZ2V0dGVyKXR5cGVfYWJzdHJhY3RtZXRob2RzLAogICAgICAoc2V0dGVyKXR5cGVfc2V0X2Fic3RyYWN0bWV0aG9kcywgTlVMTH0sCiAgICAgeyJfX2RpY3RfXyIsICAoZ2V0dGVyKXR5cGVfZGljdCwgIE5VTEwsIE5VTEx9LAotICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpdHlwZV9nZXRfZG9jLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2RvYywgKHNldHRlcil0eXBlX3NldF9kb2MsIE5VTEx9LAogICAgIHswfQogfTsKIApAQCAtNjQ2LDcgKzY5Miw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KLSAgICBuYW1lID0gdHlwZV9uYW1lKHR5cGUsIE5VTEwpOworICAgIG5hbWUgPSB0eXBlX3F1YWxuYW1lKHR5cGUsIE5VTEwpOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlfWERFQ1JFRihtb2QpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxMSw3ICs5NTcsNyBAQAogCiAgICAgLyogRmluZCB0aGUgbmVhcmVzdCBiYXNlIHdpdGggYSBkaWZmZXJlbnQgdHBfZGVhbGxvYyAqLwogICAgIGJhc2UgPSB0eXBlOwotICAgIHdoaWxlICgoYmFzZWRlYWxsb2MgPSBiYXNlLT50cF9kZWFsbG9jKSA9PSBzdWJ0eXBlX2RlYWxsb2MpIHsKKyAgICB3aGlsZSAoKC8qYmFzZWRlYWxsb2MgPSovIGJhc2UtPnRwX2RlYWxsb2MpID09IHN1YnR5cGVfZGVhbGxvYykgewogICAgICAgICBiYXNlID0gYmFzZS0+dHBfYmFzZTsKICAgICAgICAgYXNzZXJ0KGJhc2UpOwogICAgIH0KQEAgLTExMzYsMTYgKzExODIsMTEgQEAKICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb29rdXBfbWF5YmUoUHlPYmplY3QgKnNlbGYsIGNoYXIgKmF0dHJzdHIsIFB5T2JqZWN0ICoqYXR0cm9iaikKK2xvb2t1cF9tYXliZShQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCphdHRyb2JqID09IE5VTEwpIHsKLSAgICAgICAgKmF0dHJvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhhdHRyc3RyKTsKLSAgICAgICAgaWYgKCphdHRyb2JqID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgKmF0dHJvYmopOworICAgIHJlcyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgYXR0cmlkKTsKICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgZGVzY3JnZXRmdW5jIGY7CiAgICAgICAgIGlmICgoZiA9IFB5X1RZUEUocmVzKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQpAQCAtMTE1NywxOCArMTE5OCwxOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKLSAgICBQeU9iamVjdCAqcmVzID0gbG9va3VwX21heWJlKHNlbGYsIGF0dHJzdHIsIGF0dHJvYmopOworICAgIFB5T2JqZWN0ICpyZXMgPSBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cmlkKTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKmF0dHJvYmopOworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGF0dHJpZC0+b2JqZWN0KTsKICAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCi1fUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKnNlbGYsIF9QeV9JZGVudGlmaWVyICphdHRyaWQpCiB7Ci0gICAgcmV0dXJuIGxvb2t1cF9tYXliZShzZWxmLCBhdHRyc3RyLCBhdHRyb2JqKTsKKyAgICByZXR1cm4gbG9va3VwX21heWJlKHNlbGYsIGF0dHJpZCk7CiB9CiAKIC8qIEEgdmFyaWF0aW9uIG9mIFB5T2JqZWN0X0NhbGxNZXRob2QgdGhhdCB1c2VzIGxvb2t1cF9tZXRob2QoKQpAQCAtMTE3NiwxNyArMTIxNywxNyBAQAogICAgYXMgbG9va3VwX21ldGhvZCB0byBjYWNoZSB0aGUgaW50ZXJuZWQgbmFtZSBzdHJpbmcgb2JqZWN0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKICAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1lLCBuYW1lb2JqKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICpuYW1lb2JqKTsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZWlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTEyMTIsMTkgKzEyNTMsMTcgQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7CiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWUsIG5hbWVvYmopOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHZhX2VuZCh2YSk7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICAgICAgfQorICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI5MCw3ICsxMzI5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjbGFzc19uYW1lKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNscywgIl9fbmFtZV9fIik7CisgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKQEAgLTE1NDUsOSArMTU4NCw5IEBACiAgICAgICAgIHJlc3VsdCA9IG1yb19pbXBsZW1lbnRhdGlvbih0eXBlKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbXJvX3N0cjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIobXJvKTsKICAgICAgICAgY2hlY2tpdCA9IDE7Ci0gICAgICAgIG1ybyA9IGxvb2t1cF9tZXRob2QoKFB5T2JqZWN0ICopdHlwZSwgIm1ybyIsICZtcm9fc3RyKTsKKyAgICAgICAgbXJvID0gbG9va3VwX21ldGhvZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9tcm8pOwogICAgICAgICBpZiAobXJvID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobXJvLCBOVUxMKTsKQEAgLTE1OTEsNyArMTYzMCw3IEBACiAgICAgdHlwZS0+dHBfbXJvID0gdHVwbGU7CiAKICAgICB0eXBlX21yb19tb2RpZmllZCh0eXBlLCB0eXBlLT50cF9tcm8pOwotICAgIC8qIGNvcm5lciBjYXNlOiB0aGUgb2xkLXN0eWxlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KKyAgICAvKiBjb3JuZXIgY2FzZTogdGhlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KICAgICAgICBmcm9tIHRoZSBjdXN0b20gTVJPICovCiAgICAgdHlwZV9tcm9fbW9kaWZpZWQodHlwZSwgdHlwZS0+dHBfYmFzZXMpOwogCkBAIC0xNjQ4LDkgKzE2ODcsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJhIG5ldy1zdHlsZSBjbGFzcyBjYW4ndCBoYXZlIG9ubHkgY2xhc3NpYyBiYXNlcyIpOworICAgIGFzc2VydCAoYmFzZSAhPSBOVUxMKTsKKwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNzE4LDE1ICsxNzU2LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfZGljdF9kZXNjcmlwdG9yKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpY3Rfc3RyOwogICAgIFB5T2JqZWN0ICpkZXNjcjsKIAotICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRpY3Rfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHlwZSwgZGljdF9zdHIpOworICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXBJZCh0eXBlLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRlc2NyID09IE5VTEwgfHwgIVB5RGVzY3JfSXNEYXRhKGRlc2NyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDQsOCArMTc3Niw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3VidHlwZV9kaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyOwotICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMTc2MywyNSArMTc5MywxMyBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmdW5jKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKShQeV9UWVBFKG9iaikpKTsKICAgICB9Ci0KLSAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKLSAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgUHlfWElOQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gZGljdDsKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldERpY3Qob2JqLCBjb250ZXh0KTsKIH0KIAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHI7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTE3OTksNyArMTgxNyw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZ1bmMoZGVzY3IsIG9iaiwgdmFsdWUpOwogICAgIH0KLQorICAgIC8qIEFsbW9zdCBsaWtlIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0LCBidXQgYWxsb3cgX19kaWN0X18gdG8gYmUgZGVsZXRlZC4gKi8KICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKQEAgLTE5NjAsMTQgKzE5NzgsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX25ldyhQeVR5cGVPYmplY3QgKm1ldGF0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcywgKmRpY3Q7CisgICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcyA9IE5VTEwsICpvcmlnX2RpY3QsICpkaWN0ID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiYmFzZXMiLCAiZGljdCIsIDB9OwotICAgIFB5T2JqZWN0ICpzbG90cywgKnRtcCwgKm5ld3Nsb3RzOwotICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CiAgICAgUHlfc3NpemVfdCBpLCBuYmFzZXMsIG5zbG90cywgc2xvdG9mZnNldCwgYWRkX2RpY3QsIGFkZF93ZWFrOwogICAgIGludCBqLCBtYXlfYWRkX2RpY3QsIG1heV9hZGRfd2VhazsKKyAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKQEAgLTE5OTcsNyArMjAxNyw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgbWV0YXR5cGUgdG8gZGVhbCB3aXRoIHRoaXM6ICovCkBAIC0yMDE3LDMwICsyMDM3LDMwIEBACiAgICAgaWYgKG5iYXNlcyA9PSAwKSB7CiAgICAgICAgIGJhc2VzID0gUHlUdXBsZV9QYWNrKDEsICZQeUJhc2VPYmplY3RfVHlwZSk7CiAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBuYmFzZXMgPSAxOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihiYXNlcyk7CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgYWxsb2NhdGVkLCAicmV0dXJuIE5VTEwiIGxlYWtzIGJhc2VzISAqLwotCiAgICAgLyogQ2FsY3VsYXRlIGJlc3QgYmFzZSwgYW5kIGNoZWNrIHRoYXQgYWxsIGJhc2VzIGFyZSB0eXBlIG9iamVjdHMgKi8KICAgICBiYXNlID0gYmVzdF9iYXNlKGJhc2VzKTsKICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGJhc2UsIFB5X1RQRkxBR1NfQkFTRVRZUEUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBiYXNlIHR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgYmFzZS0+dHBfbmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAorICAgIGRpY3QgPSBQeURpY3RfQ29weShvcmlnX2RpY3QpOworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAvKiBDaGVjayBmb3IgYSBfX3Nsb3RzX18gc2VxdWVuY2UgdmFyaWFibGUgaW4gZGljdCwgYW5kIGNvdW50IGl0ICovCi0gICAgc2xvdHMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19zbG90c19fIik7CisgICAgc2xvdHMgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3Nsb3RzX18pOwogICAgIG5zbG90cyA9IDA7CiAgICAgYWRkX2RpY3QgPSAwOwogICAgIGFkZF93ZWFrID0gMDsKQEAgLTIwNjIsMTAgKzIwODIsOCBAQAogICAgICAgICAgICAgc2xvdHMgPSBQeVR1cGxlX1BhY2soMSwgc2xvdHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzbG90cyA9IFB5U2VxdWVuY2VfVHVwbGUoc2xvdHMpOwotICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soc2xvdHMpKTsKIAogICAgICAgICAvKiBBcmUgc2xvdHMgYWxsb3dlZD8gKi8KQEAgLTIwNzUsMjQgKzIwOTMsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uZW1wdHkgX19zbG90c19fICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHN1cHBvcnRlZCBmb3Igc3VidHlwZSBvZiAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKLSAgICAgICAgICBiYWRfc2xvdHM6Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENoZWNrIGZvciB2YWxpZCBzbG90IG5hbWVzIGFuZCB0d28gc3BlY2lhbCBjYXNlcyAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICghdmFsaWRfaWRlbnRpZmllcih0bXApKQotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRtcCkpOwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIl9fZGljdF9fIikgPT0gMCkgewogICAgICAgICAgICAgICAgIGlmICghbWF5X2FkZF9kaWN0IHx8IGFkZF9kaWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gc2xvdCBkaXNhbGxvd2VkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAid2UgYWxyZWFkeSBnb3Qgb25lIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRfZGljdCsrOwogICAgICAgICAgICAgfQpAQCAtMjEwMiw3ICsyMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3dlYWtyZWZfXyBzbG90IGRpc2FsbG93ZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgd2UgYWxyZWFkeSBnb3Qgb25lLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgX19pdGVtc2l6ZV9fICE9IDAiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZF93ZWFrKys7CiAgICAgICAgICAgICB9CkBAIC0yMTE0LDcgKzIxMjksNyBAQAogICAgICAgICAqLwogICAgICAgICBuZXdzbG90cyA9IFB5TGlzdF9OZXcobnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIGlmIChuZXdzbG90cyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IG5zbG90czsgaSsrKSB7CiAgICAgICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICgoYWRkX2RpY3QgJiYKQEAgLTIxMjUsMjUgKzIxNDAsMjkgQEAKICAgICAgICAgICAgIHRtcCA9X1B5X01hbmdsZShuYW1lLCB0bXApOwogICAgICAgICAgICAgaWYgKCF0bXApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOwotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obmV3c2xvdHMsIGosIHRtcCk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oZGljdCwgdG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBqKys7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGogPT0gbnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIG5zbG90cyA9IGo7Ci0gICAgICAgIFB5X0RFQ1JFRihzbG90cyk7CisgICAgICAgIFB5X0NMRUFSKHNsb3RzKTsKICAgICAgICAgaWYgKFB5TGlzdF9Tb3J0KG5ld3Nsb3RzKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgc2xvdHMgPSBQeUxpc3RfQXNUdXBsZShuZXdzbG90cyk7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgIGlmIChzbG90cyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIC8qIFNlY29uZGFyeSBiYXNlcyBtYXkgcHJvdmlkZSB3ZWFrcmVmcyBvciBkaWN0ICovCiAgICAgICAgIGlmIChuYmFzZXMgPiAxICYmCkBAIC0yMTcxLDIyICsyMTkwLDE3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgc2FmZWx5IGFsbG9jYXRlZCwKLSAgICAgICAicmV0dXJuIE5VTEwiIG1heSBsZWFrIHNsb3RzISAqLwotCiAgICAgLyogQWxsb2NhdGUgdGhlIHR5cGUgb2JqZWN0ICovCiAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKiltZXRhdHlwZS0+dHBfYWxsb2MobWV0YXR5cGUsIG5zbG90cyk7Ci0gICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHNsb3RzKTsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICh0eXBlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBLZWVwIG5hbWUgYW5kIHNsb3RzIGFsaXZlIGluIHRoZSBleHRlbmRlZCB0eXBlIG9iamVjdCAqLwogICAgIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlOwogICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICBldC0+aHRfbmFtZSA9IG5hbWU7CiAgICAgZXQtPmh0X3Nsb3RzID0gc2xvdHM7CisgICAgc2xvdHMgPSBOVUxMOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9mbGFncyAqLwogICAgIHR5cGUtPnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IRUFQVFlQRSB8CkBAIC0yMjAwLDU5ICsyMjE0LDY4IEBACiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZldC0+YXNfbWFwcGluZzsKICAgICB0eXBlLT50cF9hc19idWZmZXIgPSAmZXQtPmFzX2J1ZmZlcjsKICAgICB0eXBlLT50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAoIXR5cGUtPnRwX25hbWUpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2Jhc2UgYW5kIHRwX2Jhc2VzICovCiAgICAgdHlwZS0+dHBfYmFzZXMgPSBiYXNlczsKKyAgICBiYXNlcyA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKGJhc2UpOwogICAgIHR5cGUtPnRwX2Jhc2UgPSBiYXNlOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9kaWN0IGZyb20gcGFzc2VkLWluIGRpY3QgKi8KLSAgICB0eXBlLT50cF9kaWN0ID0gZGljdCA9IFB5RGljdF9Db3B5KGRpY3QpOwotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgUHlfSU5DUkVGKGRpY3QpOworICAgIHR5cGUtPnRwX2RpY3QgPSBkaWN0OwogCiAgICAgLyogU2V0IF9fbW9kdWxlX18gaW4gdGhlIGRpY3QgKi8KLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iKSA9PSBOVUxMKSB7CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18pID09IE5VTEwpIHsKICAgICAgICAgdG1wID0gUHlFdmFsX0dldEdsb2JhbHMoKTsKICAgICAgICAgaWYgKHRtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICB0bXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0bXAsICJfX25hbWVfXyIpOworICAgICAgICAgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQodG1wLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgICAgICBpZiAodG1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgLyogU2V0IGh0X3F1YWxuYW1lIHRvIGRpY3RbJ19fcXVhbG5hbWVfXyddIGlmIGF2YWlsYWJsZSwgZWxzZSB0bworICAgICAgIF9fbmFtZV9fLiAgVGhlIF9fcXVhbG5hbWVfXyBhY2Nlc3NvciB3aWxsIGxvb2sgZm9yIGh0X3F1YWxuYW1lLgorICAgICovCisgICAgcXVhbG5hbWUgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHF1YWxuYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0ciwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHF1YWxuYW1lKS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGV0LT5odF9xdWFsbmFtZSA9IHF1YWxuYW1lID8gcXVhbG5hbWUgOiBldC0+aHRfbmFtZTsKKyAgICBQeV9JTkNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKKyAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCAmJiBQeURpY3RfRGVsSXRlbShkaWN0LCBQeUlkX19fcXVhbG5hbWVfXy5vYmplY3QpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIC8qIFNldCB0cF9kb2MgdG8gYSBjb3B5IG9mIGRpY3RbJ19fZG9jX18nXSwgaWYgdGhlIGxhdHRlciBpcyB0aGVyZQogICAgICAgIGFuZCBpcyBhIHN0cmluZy4gIFRoZSBfX2RvY19fIGFjY2Vzc29yIHdpbGwgZmlyc3QgbG9vayBmb3IgdHBfZG9jOwogICAgICAgIGlmIHRoYXQgZmFpbHMsIGl0IHdpbGwgc3RpbGwgbG9vayBpbnRvIF9fZGljdF9fLgogICAgICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqZG9jID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fZG9jX18iKTsKKyAgICAgICAgUHlPYmplY3QgKmRvYyA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fZG9jX18pOwogICAgICAgICBpZiAoZG9jICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRvYykpIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgY2hhciAqZG9jX3N0cjsKICAgICAgICAgICAgIGNoYXIgKnRwX2RvYzsKIAogICAgICAgICAgICAgZG9jX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZG9jKTsKLSAgICAgICAgICAgIGlmIChkb2Nfc3RyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9jX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAvKiBTaWxlbnRseSB0cnVuY2F0ZSB0aGUgZG9jc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG51bGwgYnl0ZXMuICovCiAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oZG9jX3N0cik7CiAgICAgICAgICAgICB0cF9kb2MgPSAoY2hhciAqKVB5T2JqZWN0X01BTExPQyhsZW4gKyAxKTsKLSAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgZG9jX3N0ciwgbGVuICsgMSk7CiAgICAgICAgICAgICB0eXBlLT50cF9kb2MgPSB0cF9kb2M7CiAgICAgICAgIH0KQEAgLTIyNjAsMjggKzIyODMsMjUgQEAKIAogICAgIC8qIFNwZWNpYWwtY2FzZSBfX25ld19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCiAgICAgICAgbWFrZSBpdCBhIHN0YXRpYyBmdW5jdGlvbiAqLwotICAgIHRtcCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICJfX25ld19fIik7CisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19uZXdfXyk7CiAgICAgaWYgKHRtcCAhPSBOVUxMICYmIFB5RnVuY3Rpb25fQ2hlY2sodG1wKSkgewogICAgICAgICB0bXAgPSBQeVN0YXRpY01ldGhvZF9OZXcodG1wKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19uZXdfXyIsIHRtcCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX25ld19fLCB0bXApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7Ci0gICAgaWYgKHNsb3RzICE9IE5VTEwpIHsKKyAgICBpZiAoZXQtPmh0X3Nsb3RzICE9IE5VTEwpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zbG90czsgaSsrLCBtcCsrKSB7CiAgICAgICAgICAgICBtcC0+bmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzbG90cywgaSkpOwotICAgICAgICAgICAgaWYgKG1wLT5uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShldC0+aHRfc2xvdHMsIGkpKTsKKyAgICAgICAgICAgIGlmIChtcC0+bmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBtcC0+dHlwZSA9IFRfT0JKRUNUX0VYOwogICAgICAgICAgICAgbXAtPm9mZnNldCA9IHNsb3RvZmZzZXQ7CiAKQEAgLTIyOTksNiArMjMxOSw5IEBACiAgICAgICAgICAgICB0eXBlLT50cF9kaWN0b2Zmc2V0ID0gc2xvdG9mZnNldDsKICAgICAgICAgc2xvdG9mZnNldCArPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQorICAgIGlmICh0eXBlLT50cF9kaWN0b2Zmc2V0KSB7CisgICAgICAgIGV0LT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CisgICAgfQogICAgIGlmIChhZGRfd2VhaykgewogICAgICAgICBhc3NlcnQoIWJhc2UtPnRwX2l0ZW1zaXplKTsKICAgICAgICAgdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQgPSBzbG90b2Zmc2V0OwpAQCAtMjM0MiwxNSArMjM2NSwyMSBAQAogICAgICAgICB0eXBlLT50cF9mcmVlID0gUHlPYmplY3RfRGVsOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgcmVzdCAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogUHV0IHRoZSBwcm9wZXIgc2xvdHMgaW4gcGxhY2UgKi8KICAgICBmaXh1cF9zbG90X2Rpc3BhdGNoZXJzKHR5cGUpOwogCisgICAgUHlfREVDUkVGKGRpY3QpOwogICAgIHJldHVybiAoUHlPYmplY3QgKil0eXBlOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X1hERUNSRUYoYmFzZXMpOworICAgIFB5X1hERUNSRUYoc2xvdHMpOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBzaG9ydCBzbG90b2Zmc2V0c1tdID0gewpAQCAtMjM1OSwzMCArMjM4OCw4OSBAQAogfTsKIAogUHlPYmplY3QgKgotUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQorUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzKFB5VHlwZV9TcGVjICpzcGVjLCBQeU9iamVjdCAqYmFzZXMpCiB7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqcmVzID0gKFB5SGVhcFR5cGVPYmplY3QqKVB5VHlwZV9HZW5lcmljQWxsb2MoJlB5VHlwZV9UeXBlLCAwKTsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUsICpiYXNlOworICAgIGNoYXIgKnM7CiAgICAgY2hhciAqcmVzX3N0YXJ0ID0gKGNoYXIqKXJlczsKICAgICBQeVR5cGVfU2xvdCAqc2xvdDsKKyAgICAKKyAgICAvKiBTZXQgdGhlIHR5cGUgbmFtZSBhbmQgcXVhbG5hbWUgKi8KKyAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHMgPSAoY2hhciopc3BlYy0+bmFtZTsKKyAgICBlbHNlCisgICAgICAgIHMrKzsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcy0+aHRfbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNwZWMtPm5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0eXBlID0gJnJlcy0+aHRfdHlwZTsKKyAgICAvKiBUaGUgZmxhZ3MgbXVzdCBiZSBpbml0aWFsaXplZCBlYXJseSwgYmVmb3JlIHRoZSBHQyB0cmF2ZXJzZXMgdXMgKi8KKyAgICB0eXBlLT50cF9mbGFncyA9IHNwZWMtPmZsYWdzIHwgUHlfVFBGTEFHU19IRUFQVFlQRTsKKyAgICByZXMtPmh0X25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzKTsKICAgICBpZiAoIXJlcy0+aHRfbmFtZSkKICAgICAgICAgZ290byBmYWlsOwotICAgIHJlcy0+aHRfdHlwZS50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhyZXMtPmh0X25hbWUpOwotICAgIGlmICghcmVzLT5odF90eXBlLnRwX25hbWUpCisgICAgcmVzLT5odF9xdWFsbmFtZSA9IHJlcy0+aHRfbmFtZTsKKyAgICBQeV9JTkNSRUYocmVzLT5odF9xdWFsbmFtZSk7CisgICAgdHlwZS0+dHBfbmFtZSA9IHNwZWMtPm5hbWU7CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQogICAgICAgICBnb3RvIGZhaWw7CisgICAgCisgICAgLyogQWRqdXN0IGZvciBlbXB0eSB0dXBsZSBiYXNlcyAqLworICAgIGlmICghYmFzZXMpIHsKKyAgICAgICAgYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICAgICAgLyogU2VlIHdoZXRoZXIgUHlfdHBfYmFzZShzKSB3YXMgc3BlY2lmaWVkICovCisgICAgICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKKyAgICAgICAgICAgIGlmIChzbG90LT5zbG90ID09IFB5X3RwX2Jhc2UpCisgICAgICAgICAgICAgICAgYmFzZSA9IHNsb3QtPnBmdW5jOworICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlcykgeworICAgICAgICAgICAgICAgIGJhc2VzID0gc2xvdC0+cGZ1bmM7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWJhc2VzKQorICAgICAgICAgICAgYmFzZXMgPSBQeVR1cGxlX1BhY2soMSwgYmFzZSk7CisgICAgICAgIGlmICghYmFzZXMpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKIAotICAgIHJlcy0+aHRfdHlwZS50cF9iYXNpY3NpemUgPSBzcGVjLT5iYXNpY3NpemU7Ci0gICAgcmVzLT5odF90eXBlLnRwX2l0ZW1zaXplID0gc3BlYy0+aXRlbXNpemU7Ci0gICAgcmVzLT5odF90eXBlLnRwX2ZsYWdzID0gc3BlYy0+ZmxhZ3MgfCBQeV9UUEZMQUdTX0hFQVBUWVBFOworICAgIC8qIENhbGN1bGF0ZSBiZXN0IGJhc2UsIGFuZCBjaGVjayB0aGF0IGFsbCBiYXNlcyBhcmUgdHlwZSBvYmplY3RzICovCisgICAgYmFzZSA9IGJlc3RfYmFzZShiYXNlcyk7CisgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUoYmFzZSwgUHlfVFBGTEFHU19CQVNFVFlQRSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIGJhc2UgdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgZXNzZW50aWFsIGZpZWxkcyAqLworICAgIHR5cGUtPnRwX2FzX251bWJlciA9ICZyZXMtPmFzX251bWJlcjsKKyAgICB0eXBlLT50cF9hc19zZXF1ZW5jZSA9ICZyZXMtPmFzX3NlcXVlbmNlOworICAgIHR5cGUtPnRwX2FzX21hcHBpbmcgPSAmcmVzLT5hc19tYXBwaW5nOworICAgIHR5cGUtPnRwX2FzX2J1ZmZlciA9ICZyZXMtPmFzX2J1ZmZlcjsKKyAgICAvKiBTZXQgdHBfYmFzZSBhbmQgdHBfYmFzZXMgKi8KKyAgICB0eXBlLT50cF9iYXNlcyA9IGJhc2VzOworICAgIGJhc2VzID0gTlVMTDsKKyAgICBQeV9JTkNSRUYoYmFzZSk7CisgICAgdHlwZS0+dHBfYmFzZSA9IGJhc2U7CisKKyAgICB0eXBlLT50cF9iYXNpY3NpemUgPSBzcGVjLT5iYXNpY3NpemU7CisgICAgdHlwZS0+dHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKIAogICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKLSAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gc2l6ZW9mKHNsb3RvZmZzZXRzKS9zaXplb2Yoc2xvdG9mZnNldHNbMF0pKSB7CisgICAgICAgIGlmIChzbG90LT5zbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnZhbGlkIHNsb3Qgb2Zmc2V0Iik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZSB8fCBzbG90LT5zbG90ID09IFB5X3RwX2Jhc2VzKQorICAgICAgICAgICAgLyogUHJvY2Vzc2VkIGFib3ZlICovCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgKih2b2lkKiopKHJlc19zdGFydCArIHNsb3RvZmZzZXRzW3Nsb3QtPnNsb3RdKSA9IHNsb3QtPnBmdW5jOwogCiAgICAgICAgIC8qIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGRvY3N0cmluZyBzbG90LCB3aGljaCB1c3VhbGx5CkBAIC0yMzkzLDE5ICsyNDgxLDI5IEBACiAgICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgc2xvdC0+cGZ1bmMsIGxlbik7Ci0gICAgICAgICAgICByZXMtPmh0X3R5cGUudHBfZG9jID0gdHBfZG9jOworICAgICAgICAgICAgdHlwZS0+dHBfZG9jID0gdHBfZG9jOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChyZXMtPmh0X3R5cGUudHBfZGVhbGxvYyA9PSBOVUxMKSB7CisgICAgaWYgKHR5cGUtPnRwX2RpY3RvZmZzZXQpIHsKKyAgICAgICAgcmVzLT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CisgICAgfQorICAgIGlmICh0eXBlLT50cF9kZWFsbG9jID09IE5VTEwpIHsKICAgICAgICAgLyogSXQncyBhIGhlYXAgdHlwZSwgc28gbmVlZHMgdGhlIGhlYXAgdHlwZXMnIGRlYWxsb2MuCiAgICAgICAgICAgIHN1YnR5cGVfZGVhbGxvYyB3aWxsIGNhbGwgdGhlIGJhc2UgdHlwZSdzIHRwX2RlYWxsb2MsIGlmCiAgICAgICAgICAgIG5lY2Vzc2FyeS4gKi8KLSAgICAgICAgcmVzLT5odF90eXBlLnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CisgICAgICAgIHR5cGUtPnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CiAgICAgfQogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmcmVzLT5odF90eXBlKSA8IDApCisgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKIAorICAgIC8qIFNldCB0eXBlLl9fbW9kdWxlX18gKi8KKyAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOworICAgIGlmIChzICE9IE5VTEwpCisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIAorICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpKTsKKwogICAgIHJldHVybiAoUHlPYmplY3QqKXJlczsKIAogIGZhaWw6CkBAIC0yNDEzLDYgKzI1MTEsMTIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlPYmplY3QgKgorUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQoreworICAgIHJldHVybiBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoc3BlYywgTlVMTCk7Cit9CisKIAogLyogSW50ZXJuYWwgQVBJIHRvIGxvb2sgZm9yIGEgbmFtZSB0aHJvdWdoIHRoZSBNUk8uCiAgICBUaGlzIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UsIGFuZCBkb2Vzbid0IHNldCBhbiBleGNlcHRpb24hICovCkBAIC0yNDQyLDYgKzI1NDYsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IE5VTEw7CisgICAgLyoga2VlcCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gbXJvIGJlY2F1c2UgdHlwZS0+dHBfbXJvIGNhbiBiZSByZXBsYWNlZAorICAgICAgIGR1cmluZyBQeURpY3RfR2V0SXRlbShkaWN0LCBuYW1lKSAgKi8KKyAgICBQeV9JTkNSRUYobXJvKTsKICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhtcm8pKTsKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShtcm8pOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKQEAgLTI0NTMsNiArMjU2MCw3IEBACiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBQeV9ERUNSRUYobXJvKTsKIAogICAgIGlmIChNQ0FDSEVfQ0FDSEVBQkxFX05BTUUobmFtZSkgJiYgYXNzaWduX3ZlcnNpb25fdGFnKHR5cGUpKSB7CiAgICAgICAgIGggPSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSk7CkBAIC0yNDY1LDYgKzI1NzMsMTYgQEAKICAgICByZXR1cm4gcmVzOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VHlwZV9Mb29rdXBJZChQeVR5cGVPYmplY3QgKnR5cGUsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqb25hbWU7CisgICAgb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgICAvKiBib3Jyb3dlZCAqLworICAgIGlmIChvbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5VHlwZV9Mb29rdXAodHlwZSwgb25hbWUpOworfQorCiAvKiBUaGlzIGlzIHNpbWlsYXIgdG8gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKSwKICAgIGJ1dCB1c2VzIF9QeVR5cGVfTG9va3VwKCkgaW5zdGVhZCBvZiBqdXN0IGxvb2tpbmcgaW4gdHlwZS0+dHBfZGljdC4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNTY0LDYgKzI2ODIsOSBAQAogICAgIHJldHVybiB1cGRhdGVfc2xvdCh0eXBlLCBuYW1lKTsKIH0KIAorZXh0ZXJuIHZvaWQKK19QeURpY3RLZXlzX0RlY1JlZihQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKKwogc3RhdGljIHZvaWQKIHR5cGVfZGVhbGxvYyhQeVR5cGVPYmplY3QgKnR5cGUpCiB7CkBAIC0yNTg1LDcgKzI3MDYsMTAgQEAKICAgICAgKi8KICAgICBQeU9iamVjdF9GcmVlKChjaGFyICopdHlwZS0+dHBfZG9jKTsKICAgICBQeV9YREVDUkVGKGV0LT5odF9uYW1lKTsKKyAgICBQeV9YREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CiAgICAgUHlfWERFQ1JFRihldC0+aHRfc2xvdHMpOworICAgIGlmIChldC0+aHRfY2FjaGVkX2tleXMpCisgICAgICAgIF9QeURpY3RLZXlzX0RlY1JlZihldC0+aHRfY2FjaGVkX2tleXMpOwogICAgIFB5X1RZUEUodHlwZSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopdHlwZSk7CiB9CiAKQEAgLTI2MjMsNiArMjc0Nyw5OSBAQAogICAgIHJldHVybiBQeURpY3RfTmV3KCk7CiB9CiAKKy8qCisgICBNZXJnZSB0aGUgX19kaWN0X18gb2YgYWNsYXNzIGludG8gZGljdCwgYW5kIHJlY3Vyc2l2ZWx5IGFsc28gYWxsCisgICB0aGUgX19kaWN0X19zIG9mIGFjbGFzcydzIGJhc2UgY2xhc3Nlcy4gIFRoZSBvcmRlciBvZiBtZXJnaW5nIGlzbid0CisgICBkZWZpbmVkLCBhcyBpdCdzIGV4cGVjdGVkIHRoYXQgb25seSB0aGUgZmluYWwgc2V0IG9mIGRpY3Qga2V5cyBpcworICAgaW50ZXJlc3RpbmcuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4KKyovCisKK3N0YXRpYyBpbnQKK21lcmdlX2NsYXNzX2RpY3QoUHlPYmplY3QgKmRpY3QsIFB5T2JqZWN0ICphY2xhc3MpCit7CisgICAgUHlPYmplY3QgKmNsYXNzZGljdDsKKyAgICBQeU9iamVjdCAqYmFzZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19iYXNlc19fKTsKKworICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOworICAgIGFzc2VydChhY2xhc3MpOworCisgICAgLyogTWVyZ2UgaW4gdGhlIHR5cGUncyBkaWN0IChpZiBhbnkpLiAqLworICAgIGNsYXNzZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoYWNsYXNzLCAmUHlJZF9fX2RpY3RfXyk7CisgICAgaWYgKGNsYXNzZGljdCA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgeworICAgICAgICBpbnQgc3RhdHVzID0gUHlEaWN0X1VwZGF0ZShkaWN0LCBjbGFzc2RpY3QpOworICAgICAgICBQeV9ERUNSRUYoY2xhc3NkaWN0KTsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogUmVjdXJzaXZlbHkgbWVyZ2UgaW4gdGhlIGJhc2UgdHlwZXMnIChpZiBhbnkpIGRpY3RzLiAqLworICAgIGJhc2VzID0gX1B5T2JqZWN0X0dldEF0dHJJZChhY2xhc3MsICZQeUlkX19fYmFzZXNfXyk7CisgICAgaWYgKGJhc2VzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgYmFzZXMgaXMgYSByZWFsIHR1cGxlICovCisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICAgICAgbiA9IFB5U2VxdWVuY2VfU2l6ZShiYXNlcyk7IC8qIFRoaXMgYmV0dGVyIGJlIHJpZ2h0ICovCisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIGludCBzdGF0dXM7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYmFzZXMsIGkpOworICAgICAgICAgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGJhc2UpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBfX2Rpcl9fIGZvciB0eXBlIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18gYW5kIF9fYmFzZXNfXy4KKyAgIFdlIGRlbGliZXJhdGVseSBkb24ndCBzdWNrIHVwIGl0cyBfX2NsYXNzX18sIGFzIG1ldGhvZHMgYmVsb25naW5nIHRvIHRoZQorICAgbWV0YWNsYXNzIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgY29uZnVzaW5nIHRoYW4gaGVscGZ1bC4KKyovCitzdGF0aWMgUHlPYmplY3QgKgordHlwZV9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlEaWN0X05ldygpOworCisgICAgaWYgKGRpY3QgIT0gTlVMTCAmJiBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIHNlbGYpID09IDApCisgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworCisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QqCit0eXBlX3NpemVvZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3NfdW51c2VkKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSAoUHlUeXBlT2JqZWN0KilzZWxmOworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKKyAgICAgICAgUHlIZWFwVHlwZU9iamVjdCogZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUhlYXBUeXBlT2JqZWN0KTsKKyAgICAgICAgaWYgKGV0LT5odF9jYWNoZWRfa2V5cykKKyAgICAgICAgICAgIHNpemUgKz0gX1B5RGljdF9LZXlzU2l6ZShldC0+aHRfY2FjaGVkX2tleXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlUeXBlT2JqZWN0KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgdHlwZV9tZXRob2RzW10gPSB7CiAgICAgeyJtcm8iLCAoUHlDRnVuY3Rpb24pbXJvX2V4dGVybmFsLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJtcm8oKSAtPiBsaXN0XG5yZXR1cm4gYSB0eXBlJ3MgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIiKX0sCkBAIC0yNjM2LDYgKzI4NTMsMTAgQEAKICAgICAgUHlEb2NfU1RSKCJfX2luc3RhbmNlY2hlY2tfXygpIC0+IGJvb2xcbmNoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSIpfSwKICAgICB7Il9fc3ViY2xhc3NjaGVja19fIiwgdHlwZV9fX3N1YmNsYXNzY2hlY2tfXywgTUVUSF9PLAogICAgICBQeURvY19TVFIoIl9fc3ViY2xhc3NjaGVja19fKCkgLT4gYm9vbFxuY2hlY2sgaWYgYSBjbGFzcyBpcyBhIHN1YmNsYXNzIil9LAorICAgIHsiX19kaXJfXyIsIHR5cGVfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuc3BlY2lhbGl6ZWQgX19kaXJfXyBpbXBsZW1lbnRhdGlvbiBmb3IgdHlwZXMiKX0sCisgICAgeyJfX3NpemVvZl9fIiwgICAgICB0eXBlX3NpemVvZiwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgICJfX3NpemVvZl9fKCkgLT4gaW50XG5yZXR1cm4gbWVtb3J5IGNvbnN1bXB0aW9uIG9mIHRoZSB0eXBlIG9iamVjdCJ9LAogICAgIHswfQogfTsKIApAQCAtMjY0OCw3ICsyODY5LDEyIEBACiB7CiAgICAgLyogQmVjYXVzZSBvZiB0eXBlX2lzX2djKCksIHRoZSBjb2xsZWN0b3Igb25seSBjYWxscyB0aGlzCiAgICAgICAgZm9yIGhlYXB0eXBlcy4gKi8KLSAgICBhc3NlcnQodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKTsKKyAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgICAgIGNoYXIgbXNnWzIwMF07CisgICAgICAgIHNwcmludGYobXNnLCAidHlwZV90cmF2ZXJzZSgpIGNhbGxlZCBmb3Igbm9uLWhlYXAgdHlwZSAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IobXNnKTsKKyAgICB9CiAKICAgICBQeV9WSVNJVCh0eXBlLT50cF9kaWN0KTsKICAgICBQeV9WSVNJVCh0eXBlLT50cF9jYWNoZSk7CkBAIC0yNjY3LDYgKzI4OTMsNyBAQAogc3RhdGljIGludAogdHlwZV9jbGVhcihQeVR5cGVPYmplY3QgKnR5cGUpCiB7CisgICAgUHlEaWN0S2V5c09iamVjdCAqY2FjaGVkX2tleXM7CiAgICAgLyogQmVjYXVzZSBvZiB0eXBlX2lzX2djKCksIHRoZSBjb2xsZWN0b3Igb25seSBjYWxscyB0aGlzCiAgICAgICAgZm9yIGhlYXB0eXBlcy4gKi8KICAgICBhc3NlcnQodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKTsKQEAgLTI2OTgsNiArMjkyNSwxMSBAQAogICAgICovCiAKICAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CisgICAgY2FjaGVkX2tleXMgPSAoKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlKS0+aHRfY2FjaGVkX2tleXM7CisgICAgaWYgKGNhY2hlZF9rZXlzICE9IE5VTEwpIHsKKyAgICAgICAgKChQeUhlYXBUeXBlT2JqZWN0ICopdHlwZSktPmh0X2NhY2hlZF9rZXlzID0gTlVMTDsKKyAgICAgICAgX1B5RGljdEtleXNfRGVjUmVmKGNhY2hlZF9rZXlzKTsKKyAgICB9CiAgICAgaWYgKHR5cGUtPnRwX2RpY3QpCiAgICAgICAgIFB5RGljdF9DbGVhcih0eXBlLT50cF9kaWN0KTsKICAgICBQeV9DTEVBUih0eXBlLT50cF9tcm8pOwpAQCAtMjgxMywyMiArMzA0NSwxMSBAQAogb2JqZWN0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgZXJyID0gMDsKLSAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykpIHsKLSAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKLSAgICAgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQgJiYKLSAgICAgICAgICAgIHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9faW5pdF9fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIDEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmV3ID09IG9iamVjdF9uZXcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIm9iamVjdC5fX2luaXRfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKKyAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykgJiYKKyAgICAgICAgKHR5cGUtPnRwX25ldyA9PSBvYmplY3RfbmV3IHx8IHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QuX19pbml0X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGVyciA9IC0xOwogICAgIH0KICAgICByZXR1cm4gZXJyOwogfQpAQCAtMjgzNiwzMyArMzA1NywyMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9iamVjdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaW50IGVyciA9IDA7Ci0gICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpKSB7Ci0gICAgICAgIGlmICh0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldyAmJgotICAgICAgICAgICAgdHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCkKLSAgICAgICAgewotICAgICAgICAgICAgZXJyID0gUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdC5fX25ld19fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIDEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3IHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUtPnRwX2luaXQgPT0gb2JqZWN0X2luaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIm9iamVjdC5fX25ld19fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIpOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGVyciA8IDApCisgICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpICYmCisgICAgICAgICh0eXBlLT50cF9pbml0ID09IG9iamVjdF9pbml0IHx8IHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAib2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSVNfQUJTVFJBQ1QpIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpjb21tYSA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICphYnN0cmFjdF9tZXRob2RzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmJ1aWx0aW5zOwogICAgICAgICBQeU9iamVjdCAqc29ydGVkOwogICAgICAgICBQeU9iamVjdCAqc29ydGVkX21ldGhvZHMgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqam9pbmVkID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmNvbW1hOworICAgICAgICBfUHlfc3RhdGljX3N0cmluZyhjb21tYV9pZCwgIiwgIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNvcnRlZCk7CiAKICAgICAgICAgLyogQ29tcHV0ZSAiLCAiLmpvaW4oc29ydGVkKHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXykpCiAgICAgICAgICAgIGludG8gam9pbmVkLiAqLwpAQCAtMjg3Miw3ICszMDgxLDcgQEAKICAgICAgICAgYnVpbHRpbnMgPSBQeUV2YWxfR2V0QnVpbHRpbnMoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBzb3J0ZWQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhidWlsdGlucywgInNvcnRlZCIpOworICAgICAgICBzb3J0ZWQgPSBfUHlEaWN0X0dldEl0ZW1JZChidWlsdGlucywgJlB5SWRfc29ydGVkKTsKICAgICAgICAgaWYgKHNvcnRlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgc29ydGVkX21ldGhvZHMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNvcnRlZCwKQEAgLTI4ODAsMTMgKzMwODksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBpZiAoc29ydGVkX21ldGhvZHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChjb21tYSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjb21tYSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCIsICIpOwotICAgICAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBqb2luZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNvbW1hLCAiam9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk8iLCAgc29ydGVkX21ldGhvZHMpOworICAgICAgICBjb21tYSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZjb21tYV9pZCk7CisgICAgICAgIGlmIChjb21tYSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgam9pbmVkID0gUHlVbmljb2RlX0pvaW4oY29tbWEsIHNvcnRlZF9tZXRob2RzKTsKICAgICAgICAgaWYgKGpvaW5lZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjkyNCw3ICszMTMwLDcgQEAKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQotICAgIG5hbWUgPSB0eXBlX25hbWUodHlwZSwgTlVMTCk7CisgICAgbmFtZSA9IHR5cGVfcXVhbG5hbWUodHlwZSwgTlVMTCk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzA4OSw3ICszMjk1LDcgQEAKICAgICB9CiAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBuZXctc3R5bGUgY2xhc3MsIG5vdCAnJXMnIG9iamVjdCIsCisgICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBhIGNsYXNzLCBub3QgJyVzJyBvYmplY3QiLAogICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMzAsMTQgKzMzMzYsMTkgQEAKIGltcG9ydF9jb3B5cmVnKHZvaWQpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjb3B5cmVnX3N0cjsKKyAgICBzdGF0aWMgUHlPYmplY3QgKm1vZF9jb3B5cmVnID0gTlVMTDsKIAogICAgIGlmICghY29weXJlZ19zdHIpIHsKICAgICAgICAgY29weXJlZ19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiY29weXJlZyIpOwogICAgICAgICBpZiAoY29weXJlZ19zdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoIW1vZF9jb3B5cmVnKSB7CisgICAgICAgIG1vZF9jb3B5cmVnID0gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICBQeV9YSU5DUkVGKG1vZF9jb3B5cmVnKTsKKyAgICByZXR1cm4gbW9kX2NvcHlyZWc7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMTQ2LDE0ICszMzU3LDExIEBACiAgICAgUHlPYmplY3QgKmNsc2RpY3Q7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CiAgICAgUHlPYmplY3QgKnNsb3RuYW1lczsKLQotICAgIGlmICghUHlUeXBlX0NoZWNrKGNscykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9CisgICAgX1B5X0lERU5USUZJRVIoX19zbG90bmFtZXNfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX3Nsb3RuYW1lcyk7CiAKICAgICBjbHNkaWN0ID0gKChQeVR5cGVPYmplY3QgKiljbHMpLT50cF9kaWN0OwotICAgIHNsb3RuYW1lcyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGNsc2RpY3QsICJfX3Nsb3RuYW1lc19fIik7CisgICAgc2xvdG5hbWVzID0gX1B5RGljdF9HZXRJdGVtSWQoY2xzZGljdCwgJlB5SWRfX19zbG90bmFtZXNfXyk7CiAgICAgaWYgKHNsb3RuYW1lcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVjayhzbG90bmFtZXMpKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzbG90bmFtZXMpOwogICAgICAgICByZXR1cm4gc2xvdG5hbWVzOwpAQCAtMzE2Myw3ICszMzcxLDcgQEAKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNsb3RuYW1lcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29weXJlZywgIl9zbG90bmFtZXMiLCAiTyIsIGNscyk7CisgICAgc2xvdG5hbWVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjb3B5cmVnLCAmUHlJZF9fc2xvdG5hbWVzLCAiTyIsIGNscyk7CiAgICAgUHlfREVDUkVGKGNvcHlyZWcpOwogICAgIGlmIChzbG90bmFtZXMgIT0gTlVMTCAmJgogICAgICAgICBzbG90bmFtZXMgIT0gUHlfTm9uZSAmJgpAQCAtMzE4NywxMiArMzM5NSwxMyBAQAogICAgIFB5T2JqZWN0ICpzbG90cyA9IE5VTEwsICpsaXN0aXRlbXMgPSBOVUxMLCAqZGljdGl0ZW1zID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEwsICpuZXdvYmogPSBOVUxMLCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRuZXdhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAKLSAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgIGlmIChjbHMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY2xzID0gKFB5T2JqZWN0ICopIFB5X1RZUEUob2JqKTsKIAotICAgIGdldG5ld2FyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZ2V0bmV3YXJnc19fIik7CisgICAgZ2V0bmV3YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldG5ld2FyZ3NfXyk7CiAgICAgaWYgKGdldG5ld2FyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRuZXdhcmdzLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGdldG5ld2FyZ3MpOwpAQCAtMzIxMCw3ICszNDE5LDcgQEAKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIAotICAgIGdldHN0YXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2dldHN0YXRlX18iKTsKKyAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CkBAIC0zMjE4LDE3ICszNDI3LDE4IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICoqZGljdDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICAgICAgaWYgKGRpY3QgJiYgKmRpY3QpCisgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0OworICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZSA9IFB5X05vbmU7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc3RhdGUpOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgICAgIG5hbWVzID0gc2xvdG5hbWVzKGNscyk7CiAgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lICYmIFB5TGlzdF9HRVRfU0laRShuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKG5hbWVzKSk7CiAgICAgICAgICAgICBzbG90cyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQpAQCAtMzI3NSw3ICszNDg1LDggQEAKICAgICAgICAgUHlfSU5DUkVGKGRpY3RpdGVtcyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG9iaiwgIml0ZW1zIiwgIiIpOworICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIiIpOwogICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBkaWN0aXRlbXMgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTMyODcsNyArMzQ5OCw3IEBACiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkKICAgICAgICAgZ290byBlbmQ7Ci0gICAgbmV3b2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb3B5cmVnLCAiX19uZXdvYmpfXyIpOworICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfXyk7CiAgICAgaWYgKG5ld29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIApAQCAtMzI5NSw4ICszNTA2LDggQEAKICAgICBhcmdzMiA9IFB5VHVwbGVfTmV3KG4rMSk7CiAgICAgaWYgKGFyZ3MyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOworICAgIFB5X0lOQ1JFRihjbHMpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIDAsIGNscyk7Ci0gICAgY2xzID0gTlVMTDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMzMwNiw3ICszNTE3LDYgQEAKICAgICByZXMgPSBQeVR1cGxlX1BhY2soNSwgbmV3b2JqLCBhcmdzMiwgc3RhdGUsIGxpc3RpdGVtcywgZGljdGl0ZW1zKTsKIAogICBlbmQ6Ci0gICAgUHlfWERFQ1JFRihjbHMpOwogICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgUHlfWERFQ1JFRihhcmdzMik7CiAgICAgUHlfWERFQ1JFRihzbG90cyk7CkBAIC0zMzY2LDMxICszNTc2LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3JlZHVjZV9leChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgc3RhdGljIFB5T2JqZWN0ICpvYmpyZWR1Y2U7CiAgICAgUHlPYmplY3QgKnJlZHVjZSwgKnJlczsKICAgICBpbnQgcHJvdG8gPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVkdWNlX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZWR1Y2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX3JlZHVjZV9fIik7CisgICAgaWYgKG9ianJlZHVjZSA9PSBOVUxMKSB7CisgICAgICAgIG9ianJlZHVjZSA9IF9QeURpY3RfR2V0SXRlbUlkKFB5QmFzZU9iamVjdF9UeXBlLnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fcmVkdWNlX18pOworICAgICAgICBpZiAob2JqcmVkdWNlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZWR1Y2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fcmVkdWNlX18pOwogICAgIGlmIChyZWR1Y2UgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZSwgKm9ianJlZHVjZTsKKyAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZTsKICAgICAgICAgaW50IG92ZXJyaWRlOwotICAgICAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKGNscyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVkdWNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNsc3JlZHVjZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2xzLCAiX19yZWR1Y2VfXyIpOwotICAgICAgICBQeV9ERUNSRUYoY2xzKTsKKworICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShzZWxmKTsKKyAgICAgICAgY2xzcmVkdWNlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICBpZiAoY2xzcmVkdWNlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2UpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgb2JqcmVkdWNlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlCYXNlT2JqZWN0X1R5cGUudHBfZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fcmVkdWNlX18iKTsKICAgICAgICAgb3ZlcnJpZGUgPSAoY2xzcmVkdWNlICE9IG9ianJlZHVjZSk7CiAgICAgICAgIFB5X0RFQ1JFRihjbHNyZWR1Y2UpOwogICAgICAgICBpZiAob3ZlcnJpZGUpIHsKQEAgLTM0MDgsOCArMzYyMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3N1YmNsYXNzaG9vayhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIFB5RG9jX1NUUlZBUihvYmplY3Rfc3ViY2xhc3Nob29rX2RvYywKQEAgLTM0NDAsMjEgKzM2NTIsMjEgQEAKICAgICBzZWxmX2FzX3N0ciA9IFB5T2JqZWN0X1N0cihzZWxmKTsKICAgICBpZiAoc2VsZl9hc19zdHIgIT0gTlVMTCkgewogICAgICAgICAvKiBJc3N1ZSA3OTk0OiBJZiB3ZSdyZSBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nLCB3ZQotCSAgIHNob3VsZCByZWplY3QgZm9ybWF0IHNwZWNpZmljYXRpb25zICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpID4gMCkgewotCSAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCi0JCQkgICAgICJvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAiCi0JCQkgICAgICJzdHJpbmcgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkgewotCSAgICAgIGdvdG8gZG9uZTsKLQkgICAgfQotCSAgICAvKiBFdmVudHVhbGx5IHRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3I6Ci0JICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0JICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKLQkgICAgICAgZ290byBkb25lOwotCSAgICAqLwotCX0KKyAgICAgICAgICAgc2hvdWxkIHJlamVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSA+IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogRXZlbnR1YWxseSB0aGlzIHdpbGwgYmVjb21lIGFuIGVycm9yOgorICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKKyAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICovCisgICAgICAgIH0KIAotCXJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Gb3JtYXQoc2VsZl9hc19zdHIsIGZvcm1hdF9zcGVjKTsKICAgICB9CiAKIGRvbmU6CkBAIC0zNDc3LDYgKzM2ODksNTMgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKKy8qIF9fZGlyX18gZm9yIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAorICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitvYmplY3RfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKKworICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhkaWN0KSkgeworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDb3B5IF9fZGljdF9fIHRvIGF2b2lkIG11dGF0aW5nIGl0LiAqLworICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5RGljdF9Db3B5KGRpY3QpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSB0ZW1wOworICAgIH0KKworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBNZXJnZSBpbiBhdHRycyByZWFjaGFibGUgZnJvbSBpdHMgY2xhc3MuICovCisgICAgaXRzY2xhc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fY2xhc3NfXyk7CisgICAgaWYgKGl0c2NsYXNzID09IE5VTEwpCisgICAgICAgIC8qIFhYWCh0b21lcik6IFBlcmhhcHMgZmFsbCBiYWNrIHRvIG9iai0+b2JfdHlwZSBpZiBubworICAgICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18gZXhpc3RzPyAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgaWYgKG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgaXRzY2xhc3MpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKKyAgICAvKiBmYWxsIHRocm91Z2ggKi8KK2Vycm9yOgorICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIG9iamVjdF9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9leF9fIiwgb2JqZWN0X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImhlbHBlciBmb3IgcGlja2xlIil9LApAQCAtMzQ4OCw2ICszNzQ3LDggQEAKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX19zaXplb2ZfXygpIC0+IGludFxuc2l6ZSBvZiBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcyIpfSwKKyAgICB7Il9fZGlyX18iLCBvYmplY3RfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuZGVmYXVsdCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKICAgICB7MH0KIH07CiAKQEAgLTM1NTcsNyArMzgxOCw3IEBACiAgICAgICAgICAgICBkZXNjciA9IFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QodHlwZSwgbWV0aCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWV0aC0+bWxfZmxhZ3MgJiBNRVRIX1NUQVRJQykgewotICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIE5VTEwpOworICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIChQeU9iamVjdCopdHlwZSk7CiAgICAgICAgICAgICBpZiAoY2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBkZXNjciA9IFB5U3RhdGljTWV0aG9kX05ldyhjZnVuYyk7CkBAIC0zNjM4LDggKzM4OTksOCBAQAogICAgICAgICAgICB0aGF0IHRoZSBleHRlbnNpb24gdHlwZSdzIG93biBmYWN0b3J5IGZ1bmN0aW9uIGVuc3VyZXMpLgogICAgICAgICAgICBIZWFwIHR5cGVzLCBvZiBjb3Vyc2UsIGFyZSB1bmRlciBvdXIgY29udHJvbCwgc28gdGhleSBkbwogICAgICAgICAgICBpbmhlcml0IHRwX25ldzsgc3RhdGljIGV4dGVuc2lvbiB0eXBlcyB0aGF0IHNwZWNpZnkgc29tZQotICAgICAgICAgICBvdGhlciBidWlsdC1pbiB0eXBlIGFzIHRoZSBkZWZhdWx0IGFyZSBjb25zaWRlcmVkCi0gICAgICAgICAgIG5ldy1zdHlsZS1hd2FyZSBzbyB0aGV5IGFsc28gaW5oZXJpdCBvYmplY3QuX19uZXdfXy4gKi8KKyAgICAgICAgICAgb3RoZXIgYnVpbHQtaW4gdHlwZSBhcyB0aGUgZGVmYXVsdCBhbHNvCisgICAgICAgICAgIGluaGVyaXQgb2JqZWN0Ll9fbmV3X18uICovCiAgICAgICAgIGlmIChiYXNlICE9ICZQeUJhc2VPYmplY3RfVHlwZSB8fAogICAgICAgICAgICAgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKICAgICAgICAgICAgIGlmICh0eXBlLT50cF9uZXcgPT0gTlVMTCkKQEAgLTM2NzgsMjMgKzM5MzksMTcgQEAKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTOwogfQogCi1zdGF0aWMgY2hhciAqaGFzaF9uYW1lX29wW10gPSB7Ci0gICAgIl9fZXFfXyIsCi0gICAgIl9faGFzaF9fIiwKLSAgICBOVUxMCi19OwotCiBzdGF0aWMgaW50CiBvdmVycmlkZXNfaGFzaChQeVR5cGVPYmplY3QgKnR5cGUpCiB7Ci0gICAgY2hhciAqKnA7CiAgICAgUHlPYmplY3QgKmRpY3QgPSB0eXBlLT50cF9kaWN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZXFfXyk7CiAKICAgICBhc3NlcnQoZGljdCAhPSBOVUxMKTsKLSAgICBmb3IgKHAgPSBoYXNoX25hbWVfb3A7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICpwKSAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2VxX18pICE9IE5VTEwpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2hhc2hfXykgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM5ODAsMTYgKzQyMzUsMTYgQEAKICAgICAvKiBpZiB0aGUgdHlwZSBkaWN0aW9uYXJ5IGRvZXNuJ3QgY29udGFpbiBhIF9fZG9jX18sIHNldCBpdCBmcm9tCiAgICAgICAgdGhlIHRwX2RvYyBzbG90LgogICAgICAqLwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIpID09IE5VTEwpIHsKKyAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXykgPT0gTlVMTCkgewogICAgICAgICBpZiAodHlwZS0+dHBfZG9jICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwogICAgICAgICAgICAgaWYgKGRvYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIsIGRvYyk7CisgICAgICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fLCBkb2MpOwogICAgICAgICAgICAgUHlfREVDUkVGKGRvYyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fZG9jX18iLCBQeV9Ob25lKTsKKyAgICAgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2RvY19fLCBQeV9Ob25lKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDAwMCw4ICs0MjU1LDggQEAKICAgICAgICBUaGlzIHNpZ25hbHMgdGhhdCBfX2hhc2hfXyBpcyBub3QgaW5oZXJpdGVkLgogICAgICAqLwogICAgIGlmICh0eXBlLT50cF9oYXNoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2hhc2hfXyIpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19oYXNoX18iLCBQeV9Ob25lKSA8IDApCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2hhc2hfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19faGFzaF9fLCBQeV9Ob25lKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIHR5cGUtPnRwX2hhc2ggPSBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KQEAgLTQ1OTgsNyArNDg1Myw3IEBACiAgICAgICAgb2JqZWN0Ll9fbmV3X18oZGljdCkuICBUbyBkbyB0aGlzLCB3ZSBjaGVjayB0aGF0IHRoZQogICAgICAgIG1vc3QgZGVyaXZlZCBiYXNlIHRoYXQncyBub3QgYSBoZWFwIHR5cGUgaXMgdGhpcyB0eXBlLiAqLwogICAgIHN0YXRpY2Jhc2UgPSBzdWJ0eXBlOwotICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKQorICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9uZXcgPT0gc2xvdF90cF9uZXcpKQogICAgICAgICBzdGF0aWNiYXNlID0gc3RhdGljYmFzZS0+dHBfYmFzZTsKICAgICAvKiBJZiBzdGF0aWNiYXNlIGlzIE5VTEwgbm93LCBpdCBpcyBhIHJlYWxseSB3ZWlyZCB0eXBlLgogICAgICAgIEluIHRoZSBzcGlyaXQgb2YgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKD8pLCBqdXN0IHNodXQgdXAuICovCkBAIC00NjMxLDEyICs0ODg2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iKSAhPSBOVUxMKQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3KHRwX25ld19tZXRob2RkZWYsIChQeU9iamVjdCAqKXR5cGUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iLCBmdW5jKSkgeworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fLCBmdW5jKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NjUxLDM0ICs0OTA2LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZikgXAogeyBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsICIoKSIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsIE9QU1RSKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsICIoKSIpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmLCBBUkcxVFlQRSBhcmcxKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsgXAotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCBPUFNUUiwgJmNhY2hlX3N0ciwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKIH0KIAogLyogQm9vbGVhbiBoZWxwZXIgZm9yIFNMT1QxQklORlVMTCgpLgogICAgcmlnaHQuX19jbGFzc19fIGlzIGEgbm9udHJpdmlhbCBzdWJjbGFzcyBvZiBsZWZ0Ll9fY2xhc3NfXy4gKi8KIHN0YXRpYyBpbnQKLW1ldGhvZF9pc19vdmVybG9hZGVkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGNoYXIgKm5hbWUpCittZXRob2RfaXNfb3ZlcmxvYWRlZChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmEsICpiOwogICAgIGludCBvazsKIAotICAgIGIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOworICAgIGIgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgLyogSWYgcmlnaHQgZG9lc24ndCBoYXZlIGl0LCBpdCdzIG5vdCBvdmVybG9hZGVkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKGxlZnQpKSwgbmFtZSk7CisgICAgYSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopKFB5X1RZUEUobGVmdCkpLCBuYW1lKTsKICAgICBpZiAoYSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5X0RFQ1JFRihiKTsKQEAgLTQ3MDIsNyArNDk1Nyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0ciwgKnJjYWNoZV9zdHI7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhvcF9pZCwgT1BTVFIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcocm9wX2lkLCBST1BTVFIpOyBcCiAgICAgaW50IGRvX290aGVyID0gUHlfVFlQRShzZWxmKSAhPSBQeV9UWVBFKG90aGVyKSAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXIgIT0gTlVMTCAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXItPlNMT1ROQU1FID09IFRFU1RGVU5DOyBcCkBAIC00NzExLDI3ICs0OTY3LDIzIEBACiAgICAgICAgIFB5T2JqZWN0ICpyOyBcCiAgICAgICAgIGlmIChkb19vdGhlciAmJiBcCiAgICAgICAgICAgICBQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob3RoZXIpLCBQeV9UWVBFKHNlbGYpKSAmJiBcCi0gICAgICAgICAgICBtZXRob2RfaXNfb3ZlcmxvYWRlZChzZWxmLCBvdGhlciwgUk9QU1RSKSkgeyBcCi0gICAgICAgICAgICByID0gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgICAgIG90aGVyLCBST1BTVFIsICZyY2FjaGVfc3RyLCAiKE8pIiwgc2VsZik7IFwKKyAgICAgICAgICAgIG1ldGhvZF9pc19vdmVybG9hZGVkKHNlbGYsIG90aGVyLCAmcm9wX2lkKSkgeyBcCisgICAgICAgICAgICByID0gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCkgXAogICAgICAgICAgICAgICAgIHJldHVybiByOyBcCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICAgICAgICAgIGRvX290aGVyID0gMDsgXAogICAgICAgICB9IFwKLSAgICAgICAgciA9IGNhbGxfbWF5YmUoIFwKLSAgICAgICAgICAgIHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCAiKE8pIiwgb3RoZXIpOyBcCisgICAgICAgIHIgPSBjYWxsX21heWJlKHNlbGYsICZvcF9pZCwgIihPKSIsIG90aGVyKTsgXAogICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCB8fCBcCiAgICAgICAgICAgICBQeV9UWVBFKG90aGVyKSA9PSBQeV9UWVBFKHNlbGYpKSBcCiAgICAgICAgICAgICByZXR1cm4gcjsgXAogICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICB9IFwKICAgICBpZiAoZG9fb3RoZXIpIHsgXAotICAgICAgICByZXR1cm4gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgb3RoZXIsIFJPUFNUUiwgJnJjYWNoZV9zdHIsICIoTykiLCBzZWxmKTsgXAorICAgICAgICByZXR1cm4gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgfSBcCi0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsgXAotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgXAorICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgXAogfQogCiAjZGVmaW5lIFNMT1QxQklOKEZVTkNOQU1FLCBTTE9UTkFNRSwgT1BTVFIsIFJPUFNUUikgXApAQCAtNDc0MSwxNiArNDk5MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICogXAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYsIEFSRzFUWVBFIGFyZzEsIEFSRzJUWVBFIGFyZzIpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICIoIiBBUkdDT0RFUyAiKSIsIGFyZzEsIGFyZzIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsICNPUFNUUik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxLCBhcmcyKTsgXAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpsZW5fc3RyOwotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgIigpIik7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC00NzcxLDE2ICs1MDIyLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRpdGVtX3N0cjsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCi0gICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0aXRlbV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRpdGVtX18iKTsKLSAgICAgICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwKFB5X1RZUEUoc2VsZiksIGdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gX1B5VHlwZV9Mb29rdXBJZChQeV9UWVBFKHNlbGYpLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBpZiAoKGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQpID09IE5VTEwpCiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CkBAIC00ODAzLDYgKzUwNDgsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOwogICAgIH0KICAgICBQeV9YREVDUkVGKGFyZ3MpOwpAQCAtNDgxNSwxNCArNTA2MSwxMyBAQAogc2xvdF9zcV9hc3NfaXRlbShQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKG4pIiwgaW5kZXgpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGl0ZW1fXywgIihuKSIsIGluZGV4KTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGl0ZW1fXyIsICZzZXRpdGVtX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihuTykiLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldGl0ZW1fXywgIihuTykiLCBpbmRleCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNDgzNCwxMCArNTA3OSw5IEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXMsICphcmdzOwogICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NvbnRhaW5zX18pOwogCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjb250YWluc19zdHI7Ci0KLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2NvbnRhaW5zX18iLCAmY29udGFpbnNfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTQ4NjgsMTQgKzUxMTIsMTQgQEAKIHNsb3RfbXBfYXNzX3N1YnNjcmlwdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwga2V5KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxpdGVtX18sICIoTykiLCBrZXkpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0aXRlbV9fIiwgJnNldGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICIoT08pIiwga2V5LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0aXRlbV9fLCAiKE9PKSIsIGtleSwgdmFsdWUpOworCiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC00ODk2LDcgKzUxNDAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfcG93ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgUHlPYmplY3QgKm1vZHVsdXMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwb3dfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcG93X18pOwogCiAgICAgaWYgKG1vZHVsdXMgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNsb3RfbmJfcG93ZXJfYmluYXJ5KHNlbGYsIG90aGVyKTsKQEAgLTQ5MDUsMTEgKzUxNDksOSBAQAogICAgICAgIHNsb3RfbmJfcG93ZXIsIHNvIGNoZWNrIGJlZm9yZSBjYWxsaW5nIHNlbGYuX19wb3dfXy4gKi8KICAgICBpZiAoUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyICE9IE5VTEwgJiYKICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyLT5uYl9wb3dlciA9PSBzbG90X25iX3Bvd2VyKSB7Ci0gICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19wb3dfXyIsICZwb3dfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBvdGhlciwgbW9kdWx1cyk7CisgICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3Bvd19fLCAiKE9PKSIsIG90aGVyLCBtb2R1bHVzKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBTTE9UMChzbG90X25iX25lZ2F0aXZlLCAiX19uZWdfXyIpCkBAIC00OTIwLDE1ICs1MTYyLDE2IEBACiBzbG90X25iX2Jvb2woUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICphcmdzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYm9vbF9zdHIsICpsZW5fc3RyOwogICAgIGludCByZXN1bHQgPSAtMTsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2Jvb2xfXyIsICZib29sX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2Jvb2xfXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyKTsKKyAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOwogICAgICAgICB1c2luZ19sZW4gPSAxOwpAQCAtNDk2Myw4ICs1MjA2LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5kZXhfc3RyOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pbmRleF9fIiwgJmluZGV4X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbmRleF9fKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pbmRleF9fLCAiKCkiKTsKIH0KIAogCkBAIC00OTg1LDggKzUyMjgsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfaW5wbGFjZV9wb3dlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiBhcmcxLCBQeU9iamVjdCAqYXJnMikKIHsKLSAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7Ci0gIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pcG93X18iLCAmY2FjaGVfc3RyLCAiKCIgIk8iICIpIiwgYXJnMSk7CisgICAgX1B5X0lERU5USUZJRVIoX19pcG93X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2lwb3dfXywgIigiICJPIiAiKSIsIGFyZzEpOwogfQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX2xzaGlmdCwgIl9faWxzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3JzaGlmdCwgIl9faXJzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQpAQCAtNTAwMyw5ICs1MjQ2LDkgQEAKIHNsb3RfdHBfcmVwcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJlcHJfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVwcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3JlcHJfXyIsICZyZXByX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19yZXByX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKQEAgLTUwMjAsMjMgKzUyNjMsMzAgQEAKIHNsb3RfdHBfc3RyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX3N0cl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3N0cl9fIiwgJnN0cl9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fc3RyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXNzOworICAgICAgICAvKiBQeU9iamVjdCAqcmVzczsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmVzID0gc2xvdF90cF9yZXByKHNlbGYpOwogICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXNzID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHJlcywgTlVMTCk7CisgICAgICAgIC8qIFhYWCB0aGlzIGlzIG5vbi1zZW5zaWNhbC4gV2h5IHNob3VsZCB3ZSByZXR1cm4KKyAgICAgICAgICAgYSBieXRlcyBvYmplY3QgZnJvbSBfX3N0cl9fLiBJcyB0aGlzIGNvZGUgZXZlbgorICAgICAgICAgICB1c2VkPyAtIG12bCAqLworICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIC8qCisgICAgICAgIHJlc3MgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocmVzKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiByZXNzOworICAgICAgICAqLwogICAgIH0KIH0KIApAQCAtNTA0NCwxMCArNTI5NCw5IEBACiBzbG90X3RwX2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpoYXNoX3N0cjsKICAgICBQeV9zc2l6ZV90IGg7CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19oYXNoX18iLCAmaGFzaF9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19faGFzaF9fKTsKIAogICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNTA5MSw4ICs1MzQwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2NhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhbGxfc3RyOwotICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19jYWxsX18iLCAmY2FsbF9zdHIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2FsbF9fKTsKKyAgICBQeU9iamVjdCAqbWV0aCA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19jYWxsX18pOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKICAgICBpZiAobWV0aCA9PSBOVUxMKQpAQCAtNTExOCw5ICs1MzY3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2dldGF0dHJvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19nZXRhdHRyaWJ1dGVfXyIsICZnZXRhdHRyaWJ1dGVfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgbmFtZSk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0YXR0cmlidXRlX18sICIoTykiLCBuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUxNDYsMjYgKzUzOTMsMTQgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0YXR0ciwgKmdldGF0dHJpYnV0ZSwgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0YXR0cl9fKTsKIAotICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldGF0dHJfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZ2V0YXR0cl9fIik7Ci0gICAgICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChnZXRhdHRyaWJ1dGVfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0YXR0cmlidXRlX3N0ciA9Ci0gICAgICAgICAgICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRhdHRyaWJ1dGVfXyIpOwotICAgICAgICBpZiAoZ2V0YXR0cmlidXRlX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIC8qIHNwZWVkIGhhY2s6IHdlIGNvdWxkIHVzZSBsb29rdXBfbWF5YmUsIGJ1dCB0aGF0IHdvdWxkIHJlc29sdmUgdGhlCiAgICAgICAgbWV0aG9kIGZ1bGx5IGZvciBlYWNoIGF0dHJpYnV0ZSBsb29rdXAgZm9yIGNsYXNzZXMgd2l0aAogICAgICAgIF9fZ2V0YXR0cl9fLCBldmVuIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBTbyB3ZSB1c2UKICAgICAgICBfUHlUeXBlX0xvb2t1cCBhbmQgY3JlYXRlIHRoZSBtZXRob2Qgb25seSB3aGVuIG5lZWRlZCwgd2l0aAogICAgICAgIGNhbGxfYXR0cmlidXRlLiAqLwotICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cl9zdHIpOworICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldGF0dHJfXyk7CiAgICAgaWYgKGdldGF0dHIgPT0gTlVMTCkgewogICAgICAgICAvKiBObyBfX2dldGF0dHJfXyBob29rOiB1c2UgYSBzaW1wbGVyIGRpc3BhdGNoZXIgKi8KICAgICAgICAgdHAtPnRwX2dldGF0dHJvID0gc2xvdF90cF9nZXRhdHRybzsKQEAgLTUxNzcsNyArNTQxMiw3IEBACiAgICAgICAgX19nZXRhdHRyX18sIGV2ZW4gd2hlbiBzZWxmIGhhcyB0aGUgZGVmYXVsdCBfX2dldGF0dHJpYnV0ZV9fCiAgICAgICAgbWV0aG9kLiBTbyB3ZSB1c2UgX1B5VHlwZV9Mb29rdXAgYW5kIGNyZWF0ZSB0aGUgbWV0aG9kIG9ubHkgd2hlbgogICAgICAgIG5lZWRlZCwgd2l0aCBjYWxsX2F0dHJpYnV0ZS4gKi8KLSAgICBnZXRhdHRyaWJ1dGUgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cmlidXRlX3N0cik7CisgICAgZ2V0YXR0cmlidXRlID0gX1B5VHlwZV9Mb29rdXBJZCh0cCwgJlB5SWRfX19nZXRhdHRyaWJ1dGVfXyk7CiAgICAgaWYgKGdldGF0dHJpYnV0ZSA9PSBOVUxMIHx8CiAgICAgICAgIChQeV9UWVBFKGdldGF0dHJpYnV0ZSkgPT0gJlB5V3JhcHBlckRlc2NyX1R5cGUgJiYKICAgICAgICAgICgoUHlXcmFwcGVyRGVzY3JPYmplY3QgKilnZXRhdHRyaWJ1dGUpLT5kX3dyYXBwZWQgPT0KQEAgLTUyMDAsNDAgKzU0MzUsMzcgQEAKIHNsb3RfdHBfc2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGF0dHJfc3RyLCAqc2V0YXR0cl9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxhdHRyX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0YXR0cl9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxhdHRyX18iLCAmZGVsYXR0cl9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBuYW1lKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxhdHRyX18sICIoTykiLCBuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGF0dHJfXyIsICZzZXRhdHRyX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0YXR0cl9fLCAiKE9PKSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgKm5hbWVfb3BbXSA9IHsKLSAgICAiX19sdF9fIiwKLSAgICAiX19sZV9fIiwKLSAgICAiX19lcV9fIiwKLSAgICAiX19uZV9fIiwKLSAgICAiX19ndF9fIiwKLSAgICAiX19nZV9fIiwKK3N0YXRpYyBfUHlfSWRlbnRpZmllciBuYW1lX29wW10gPSB7CisgICAgezAsICJfX2x0X18iLCAwfSwKKyAgICB7MCwgIl9fbGVfXyIsIDB9LAorICAgIHswLCAiX19lcV9fIiwgMH0sCisgICAgezAsICJfX25lX18iLCAwfSwKKyAgICB7MCwgIl9fZ3RfXyIsIDB9LAorICAgIHswLCAiX19nZV9fIiwgMH0KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpvcF9zdHJbNl07CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCBuYW1lX29wW29wXSwgJm9wX3N0cltvcF0pOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBvdGhlcik7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTUyNTAsOSArNTQ4Miw5IEBACiBzbG90X3RwX2l0ZXIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppdGVyX3N0ciwgKmdldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9faXRlcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2l0ZXJfXyIsICZpdGVyX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKQEAgLTUyNjQsNyArNTQ5Niw3IEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fZ2V0aXRlbV9fIiwgJmdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLApAQCAtNTI3OCw4ICs1NTEwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2l0ZXJuZXh0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqbmV4dF9zdHI7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX25leHRfXyIsICZuZXh0X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01Mjg3LDE0ICs1NTE5LDkgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0OwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0X3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRfXyk7CiAKLSAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldF9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRfXyIpOwotICAgICAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGdldCA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRfc3RyKTsKKyAgICBnZXQgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldF9fKTsKICAgICBpZiAoZ2V0ID09IE5VTEwpIHsKICAgICAgICAgLyogQXZvaWQgZnVydGhlciBzbG93ZG93bnMgKi8KICAgICAgICAgaWYgKHRwLT50cF9kZXNjcl9nZXQgPT0gc2xvdF90cF9kZXNjcl9nZXQpCkBAIC01MzEzLDE0ICs1NTQwLDEzIEBACiBzbG90X3RwX2Rlc2NyX3NldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyLCAqc2V0X3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbGV0ZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldF9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxldGVfXyIsICZkZWxfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgdGFyZ2V0KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxldGVfXywgIihPKSIsIHRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19zZXRfXyIsICZzZXRfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldF9fLCAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNTMzMCw4ICs1NTU2LDggQEAKIHN0YXRpYyBpbnQKIHNsb3RfdHBfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5pdF9zdHI7Ci0gICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2luaXRfXyIsICZpbml0X3N0cik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0X18pOworICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2luaXRfXyk7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChtZXRoID09IE5VTEwpCkBAIC01MzU0LDE3ICs1NTgwLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuZXdfc3RyOwogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CiAKLSAgICBpZiAobmV3X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIG5ld19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uZXdfXyIpOwotICAgICAgICBpZiAobmV3X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyKChQeU9iamVjdCAqKXR5cGUsIG5ld19zdHIpOworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXR5cGUsICZQeUlkX19fbmV3X18pOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTUzODgsNyArNTYwOSw3IEBACiBzdGF0aWMgdm9pZAogc2xvdF90cF9kZWwoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbF9fKTsKICAgICBQeU9iamVjdCAqZGVsLCAqcmVzOwogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAKQEAgLTU0MDAsNyArNTYyMSw3IEBACiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKICAgICAvKiBFeGVjdXRlIF9fZGVsX18gbWV0aG9kLCBpZiBhbnkuICovCi0gICAgZGVsID0gbG9va3VwX21heWJlKHNlbGYsICJfX2RlbF9fIiwgJmRlbF9zdHIpOworICAgIGRlbCA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2RlbF9fKTsKICAgICBpZiAoZGVsICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZGVsLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQpAQCAtNjExNSw3ICs2MzM2LDcgQEAKICAgICAgICAgLyogV2Ugd2FudCBfX2NsYXNzX18gdG8gcmV0dXJuIHRoZSBjbGFzcyBvZiB0aGUgc3VwZXIgb2JqZWN0CiAgICAgICAgICAgIChpLmUuIHN1cGVyLCBvciBhIHN1YmNsYXNzKSwgbm90IHRoZSBjbGFzcyBvZiBzdS0+b2JqLiAqLwogICAgICAgICBza2lwID0gKFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpID09IDkgJiYKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDkgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2NsYXNzX18iKSA9PSAwKTsKICAgICB9CiAKQEAgLTYxNDAsNiArNjM2MSw5IEBACiAgICAgICAgIH0KICAgICAgICAgaSsrOwogICAgICAgICByZXMgPSBOVUxMOworICAgICAgICAvKiBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBtcm8gYmVjYXVzZSBzdGFydHR5cGUtPnRwX21ybyBjYW4gYmUKKyAgICAgICAgICAgcmVwbGFjZWQgZHVyaW5nIFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpICAqLworICAgICAgICBQeV9JTkNSRUYobXJvKTsKICAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0obXJvLCBpKTsKICAgICAgICAgICAgIGlmIChQeVR5cGVfQ2hlY2sodG1wKSkKQEAgLTYxNjQsOSArNjM4OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgICAgICAgICAgcmVzID0gdG1wOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobXJvKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihtcm8pOwogICAgIH0KICAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoc2VsZiwgbmFtZSk7CiB9CkBAIC02MTc2LDcgKzY0MDIsNyBAQAogewogICAgIC8qIENoZWNrIHRoYXQgYSBzdXBlcigpIGNhbGwgbWFrZXMgc2Vuc2UuICBSZXR1cm4gYSB0eXBlIG9iamVjdC4KIAotICAgICAgIG9iaiBjYW4gYmUgYSBuZXctc3R5bGUgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKKyAgICAgICBvYmogY2FuIGJlIGEgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKIAogICAgICAgIC0gSWYgaXQgaXMgYSBjbGFzcywgaXQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mICd0eXBlJy4gICAgICBUaGlzIGNhc2UgaXMKICAgICAgICAgIHVzZWQgZm9yIGNsYXNzIG1ldGhvZHM7IHRoZSByZXR1cm4gdmFsdWUgaXMgb2JqLgpAQCAtNjIwMiwxNyArNjQyOCw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBUcnkgdGhlIHNsb3cgd2F5ICovCi0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqY2xhc3Nfc3RyID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmNsYXNzX2F0dHI7CiAKLSAgICAgICAgaWYgKGNsYXNzX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjbGFzc19zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiX19jbGFzc19fIik7Ci0gICAgICAgICAgICBpZiAoY2xhc3Nfc3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBjbGFzc19hdHRyID0gUHlPYmplY3RfR2V0QXR0cihvYmosIGNsYXNzX3N0cik7Ci0KKyAgICAgICAgY2xhc3NfYXR0ciA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoY2xhc3NfYXR0ciAhPSBOVUxMICYmCiAgICAgICAgICAgICBQeVR5cGVfQ2hlY2soY2xhc3NfYXR0cikgJiYKICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKiljbGFzc19hdHRyICE9IFB5X1RZUEUob2JqKSkKQEAgLTYyODksMTggKzY1MDcsMTggQEAKICAgICAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IGYtPmZfY29kZTsKICAgICAgICAgUHlfc3NpemVfdCBpLCBuOwogICAgICAgICBpZiAoY28gPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogbm8gY29kZSBvYmplY3QiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoY28tPmNvX2FyZ2NvdW50ID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IG5vIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIG9iaiA9IGYtPmZfbG9jYWxzcGx1c1swXTsKICAgICAgICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBhcmdbMF0gZGVsZXRlZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC02MzE5LDE4ICs2NTM3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGk7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNlbGwgPSBmLT5mX2xvY2Fsc3BsdXNbaW5kZXhdOwogICAgICAgICAgICAgICAgIGlmIChjZWxsID09IE5VTEwgfHwgIVB5Q2VsbF9DaGVjayhjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGJhZCBfX2NsYXNzX18gY2VsbCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIFB5Q2VsbF9HRVQoY2VsbCk7CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGVtcHR5IF9fY2xhc3NfXyBjZWxsIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBfX2NsYXNzX18gaXMgbm90IGEgdHlwZSAoJXMpIiwKICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHR5cGUpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjMzOSw3ICs2NTU3LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAodHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBfX2NsYXNzX18gY2VsbCBub3QgZm91bmQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jIGIvT2JqZWN0cy90eXBlc2xvdHMuaW5jCmluZGV4IDUxODZkY2YuLmNhYTFlMDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZXNsb3RzLmluYworKysgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKQEAgLTEsNCArMSw0IEBACi0vKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICRSZXZpc2lvbiQgKi8KKy8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgKi8KIDAsCiAwLAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfbWFwcGluZy5tcF9hc3Nfc3Vic2NyaXB0KSwKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLnB5IGIvT2JqZWN0cy90eXBlc2xvdHMucHkKaW5kZXggMmUwMGM4MC4uYjI0YzdmNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMucHkKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTMsNyArMyw3IEBACiAKIGltcG9ydCBzeXMsIHJlCiAKLXByaW50KCIvKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICRSZXZpc2lvbiQgKi8iKQorcHJpbnQoIi8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgKi8iKQogcmVzID0ge30KIGZvciBsaW5lIGluIHN5cy5zdGRpbjoKICAgICBtID0gcmUubWF0Y2goIiNkZWZpbmUgUHlfKFthLXpfXSspIChbMC05XSspIiwgbGluZSkKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCmluZGV4IDlmNmFjODkuLmE1NzJjMTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMKKysrIGIvT2JqZWN0cy91bmljb2RlY3R5cGUuYwpAQCAtMjEsMTMgKzIxLDIwIEBACiAjZGVmaW5lIFhJRF9TVEFSVF9NQVNLIDB4MTAwCiAjZGVmaW5lIFhJRF9DT05USU5VRV9NQVNLIDB4MjAwCiAjZGVmaW5lIFBSSU5UQUJMRV9NQVNLIDB4NDAwCi0jZGVmaW5lIE5PREVMVEFfTUFTSyAweDgwMAotI2RlZmluZSBOVU1FUklDX01BU0sgMHgxMDAwCisjZGVmaW5lIE5VTUVSSUNfTUFTSyAweDgwMAorI2RlZmluZSBDQVNFX0lHTk9SQUJMRV9NQVNLIDB4MTAwMAorI2RlZmluZSBDQVNFRF9NQVNLIDB4MjAwMAorI2RlZmluZSBFWFRFTkRFRF9DQVNFX01BU0sgMHg0MDAwCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBQeV9VQ1M0IHVwcGVyOwotICAgIGNvbnN0IFB5X1VDUzQgbG93ZXI7Ci0gICAgY29uc3QgUHlfVUNTNCB0aXRsZTsKKyAgICAvKiAKKyAgICAgICBUaGVzZSBhcmUgZWl0aGVyIGRlbHRhcyB0byB0aGUgY2hhcmFjdGVyIG9yIG9mZnNldHMgaW4KKyAgICAgICBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZS4KKyAgICAqLworICAgIGNvbnN0IGludCB1cHBlcjsKKyAgICBjb25zdCBpbnQgbG93ZXI7CisgICAgY29uc3QgaW50IHRpdGxlOworICAgIC8qIE5vdGUgaWYgbW9yZSBmbGFnIHNwYWNlIGlzIG5lZWRlZCwgZGVjaW1hbCBhbmQgZGlnaXQgY291bGQgYmUgdW5pZmllZC4gKi8KICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRlY2ltYWw7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkaWdpdDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBmbGFnczsKQEAgLTU3LDE1ICs2NCwxMCBAQAogUHlfVUNTNCBfUHlVbmljb2RlX1RvVGl0bGVjYXNlKHJlZ2lzdGVyIFB5X1VDUzQgY2gpCiB7CiAgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOwotICAgIGludCBkZWx0YSA9IGN0eXBlLT50aXRsZTsKIAotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLQotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotCi0gICAgcmV0dXJuIGNoICsgZGVsdGE7CisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT50aXRsZSAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPnRpdGxlOwogfQogCiAvKiBSZXR1cm5zIDEgZm9yIFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIGNhdGVnb3J5ICdMdCcsIDAKQEAgLTE4OCwxMiArMTkwLDEwIEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9VcHBlcmNhc2UoUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPnVwcGVyOwotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+dXBwZXIgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT51cHBlcjsKIH0KIAogLyogUmV0dXJucyB0aGUgbG93ZXJjYXNlIFVuaWNvZGUgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nIHRvIGNoIG9yIGp1c3QKQEAgLTIwMiwxMiArMjAyLDg3IEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9Mb3dlcmNhc2UoUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPmxvd2VyOwotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+bG93ZXIgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT5sb3dlcjsKK30KKworaW50IF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spIHsKKyAgICAgICAgaW50IGluZGV4ID0gY3R5cGUtPmxvd2VyICYgMHhGRkZGOworICAgICAgICBpbnQgbiA9IGN0eXBlLT5sb3dlciA+PiAyNDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmVzWzBdID0gY2ggKyBjdHlwZS0+bG93ZXI7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvVGl0bGVGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKSB7CisgICAgICAgIGludCBpbmRleCA9IGN0eXBlLT50aXRsZSAmIDB4RkZGRjsKKyAgICAgICAgaW50IG4gPSBjdHlwZS0+dGl0bGUgPj4gMjQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJlc1swXSA9IGNoICsgY3R5cGUtPnRpdGxlOworICAgIHJldHVybiAxOworfQorCitpbnQgX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykgeworICAgICAgICBpbnQgaW5kZXggPSBjdHlwZS0+dXBwZXIgJiAweEZGRkY7CisgICAgICAgIGludCBuID0gY3R5cGUtPnVwcGVyID4+IDI0OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXNbMF0gPSBjaCArIGN0eXBlLT51cHBlcjsKKyAgICByZXR1cm4gMTsKK30KKworaW50IF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLICYmIChjdHlwZS0+bG93ZXIgPj4gMjApICYgNykgeworICAgICAgICBpbnQgaW5kZXggPSAoY3R5cGUtPmxvd2VyICYgMHhGRkZGKSArIChjdHlwZS0+bG93ZXIgPj4gMjQpOworICAgICAgICBpbnQgbiA9IChjdHlwZS0+bG93ZXIgPj4gMjApICYgNzsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoY2gsIHJlcyk7Cit9CisKK2ludCBfUHlVbmljb2RlX0lzQ2FzZWQoUHlfVUNTNCBjaCkKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICByZXR1cm4gKGN0eXBlLT5mbGFncyAmIENBU0VEX01BU0spICE9IDA7Cit9CisKK2ludCBfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZShQeV9VQ1M0IGNoKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIHJldHVybiAoY3R5cGUtPmZsYWdzICYgQ0FTRV9JR05PUkFCTEVfTUFTSykgIT0gMDsKIH0KIAogLyogUmV0dXJucyAxIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgaGF2aW5nIHRoZSBjYXRlZ29yeSAnTGwnLCAnTHUnLCAnTHQnLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCBkZGQ4ZDUzLi5jMzAyNDVkIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtMSw4ICsxLDcgQEAKIC8qCiAKIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gb3JpZ2luYWwgY29kZSBieSBGcmVkcmlrIEx1bmRoLAotbW9kaWZpZWQgYnkgTWFyYy1BbmRyZSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+IGFjY29yZGluZyB0byB0aGUKLVVuaWNvZGUgSW50ZWdyYXRpb24gUHJvcG9zYWwgKHNlZSBmaWxlIE1pc2MvdW5pY29kZS50eHQpLgorbW9kaWZpZWQgYnkgTWFyYy1BbmRyZSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+LgogCiBNYWpvciBzcGVlZCB1cGdyYWRlcyB0byB0aGUgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBhdCB0aGUgUmV5a2phdmlrCiBOZWVkRm9yU3BlZWQgc3ByaW50LCBieSBGcmVkcmlrIEx1bmRoIGFuZCBBbmRyZXcgRGFsa2UuCkBAIC00MiwzNCArNDEsMTIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInVjbmhhc2guaCIKKyNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLS8qIExpbWl0IGZvciB0aGUgVW5pY29kZSBvYmplY3QgZnJlZSBsaXN0ICovCi0KLSNkZWZpbmUgUHlVbmljb2RlX01BWEZSRUVMSVNUICAgICAgIDEwMjQKLQotLyogTGltaXQgZm9yIHRoZSBVbmljb2RlIG9iamVjdCBmcmVlIGxpc3Qgc3RheSBhbGl2ZSBvcHRpbWl6YXRpb24uCi0KLSAgIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGtlZXAgYWxsb2NhdGVkIFVuaWNvZGUgbWVtb3J5IGludGFjdCBmb3IKLSAgIGFsbCBvYmplY3RzIG9uIHRoZSBmcmVlIGxpc3QgaGF2aW5nIGEgc2l6ZSBsZXNzIHRoYW4gdGhpcwotICAgbGltaXQuIFRoaXMgcmVkdWNlcyBtYWxsb2MoKSBvdmVyaGVhZCBmb3Igc21hbGwgVW5pY29kZSBvYmplY3RzLgotCi0gICBBdCB3b3JzdCB0aGlzIHdpbGwgcmVzdWx0IGluIFB5VW5pY29kZV9NQVhGUkVFTElTVCAqCi0gICAoc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgKyBLRUVQQUxJVkVfU0laRV9MSU1JVCArCi0gICBtYWxsb2MoKS1vdmVyaGVhZCkgYnl0ZXMgb2YgdW51c2VkIGdhcmJhZ2UuCi0KLSAgIFNldHRpbmcgdGhlIGxpbWl0IHRvIDAgZWZmZWN0aXZlbHkgdHVybnMgdGhlIGZlYXR1cmUgb2ZmLgotCi0gICBOb3RlOiBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlICEgSWYgeW91IGdldCBjb3JlIGR1bXBzIHdoZW4KLSAgIHVzaW5nIFVuaWNvZGUgb2JqZWN0cywgdHVybiB0aGlzIGZlYXR1cmUgb2ZmLgotCi0qLwotCi0jZGVmaW5lIEtFRVBBTElWRV9TSVpFX0xJTUlUICAgICAgIDkKLQogLyogRW5kaWFubmVzcyBzd2l0Y2hlczsgZGVmYXVsdHMgdG8gbGl0dGxlIGVuZGlhbiAqLwogCiAjaWZkZWYgV09SRFNfQklHRU5ESUFOCkBAIC05MCw2ICs2NywxMTAgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIE1heGltdW0gY29kZSBwb2ludCBvZiBVbmljb2RlIDYuMDogMHgxMGZmZmYgKDEsMTE0LDExMSkgKi8KKyNkZWZpbmUgTUFYX1VOSUNPREUgMHgxMGZmZmYKKworI2lmZGVmIFB5X0RFQlVHCisjICBkZWZpbmUgX1B5VW5pY29kZV9DSEVDSyhvcCkgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KG9wLCAwKQorI2Vsc2UKKyMgIGRlZmluZSBfUHlVbmljb2RlX0NIRUNLKG9wKSBQeVVuaWNvZGVfQ2hlY2sob3ApCisjZW5kaWYKKworI2RlZmluZSBfUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPnV0ZjgpCisjZGVmaW5lIFB5VW5pY29kZV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgICAgICAgICBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICgoY2hhciopKChQeUFTQ0lJT2JqZWN0Kikob3ApICsgMSkpIDogICAgICAgICAgXAorICAgICAgICAgX1B5VW5pY29kZV9VVEY4KG9wKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKShvcCkpLT51dGY4X2xlbmd0aCkKKyNkZWZpbmUgUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgKChQeUFTQ0lJT2JqZWN0Kikob3ApKS0+bGVuZ3RoIDogICAgICAgICAgICAgICBcCisgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9XU1RSKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKShvcCkpLT53c3RyKQorI2RlZmluZSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPndzdHJfbGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfU1RBVEUob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlKQorI2RlZmluZSBfUHlVbmljb2RlX0hBU0gob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5oYXNoKQorI2RlZmluZSBfUHlVbmljb2RlX0tJTkQob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmtpbmQpCisjZGVmaW5lIF9QeVVuaWNvZGVfR0VUX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+bGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX0RBVEFfQU5ZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpCisKKy8qIE9wdGltaXplZCB2ZXJzaW9uIG9mIFB5X01BWCgpIHRvIGNvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyOgorICAgdXNlIGl0IHdoZW4geW91ciBhcmUgY29tcHV0aW5nIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgUHlVbmljb2RlX05ldygpICovCisjZGVmaW5lIE1BWF9NQVhDSEFSKG1heGNoYXIxLCBtYXhjaGFyMikgICAgICAgICAgICAgICAgIFwKKyAgICAoKG1heGNoYXIxKSB8IChtYXhjaGFyMikpCisKKyN1bmRlZiBQeVVuaWNvZGVfUkVBRFkKKyNkZWZpbmUgUHlVbmljb2RlX1JFQURZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfUkVBRFkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX1B5VW5pY29kZV9SZWFkeShvcCkpKQorCisjZGVmaW5lIF9QeVVuaWNvZGVfU0hBUkVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSksICAgICAgICAgICBcCisgICAgIChfUHlVbmljb2RlX1VURjgob3ApID09IFB5VW5pY29kZV9EQVRBKG9wKSkpCisjZGVmaW5lIF9QeVVuaWNvZGVfU0hBUkVfV1NUUihvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IFB5VW5pY29kZV9EQVRBKG9wKSkpCisKKy8qIHRydWUgaWYgdGhlIFVuaWNvZGUgb2JqZWN0IGhhcyBhbiBhbGxvY2F0ZWQgVVRGLTggbWVtb3J5IGJsb2NrCisgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiBfUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICYmIF9QeVVuaWNvZGVfVVRGOChvcCkgIT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKworLyogdHJ1ZSBpZiB0aGUgVW5pY29kZSBvYmplY3QgaGFzIGFuIGFsbG9jYXRlZCB3c3RyIG1lbW9yeSBibG9jaworICAgKG5vdCBzaGFyZWQgd2l0aCBvdGhlciBkYXRhKSAqLworI2RlZmluZSBfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWShvcCkgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKF9QeVVuaWNvZGVfV1NUUihvcCkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKCFQeVVuaWNvZGVfSVNfUkVBRFkob3ApIHx8ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgX1B5VW5pY29kZV9XU1RSKG9wKSAhPSBQeVVuaWNvZGVfREFUQShvcCkpKSkKKworLyogR2VuZXJpYyBoZWxwZXIgbWFjcm8gdG8gY29udmVydCBjaGFyYWN0ZXJzIG9mIGRpZmZlcmVudCB0eXBlcy4KKyAgIGZyb21fdHlwZSBhbmQgdG9fdHlwZSBoYXZlIHRvIGJlIHZhbGlkIHR5cGUgbmFtZXMsIGJlZ2luIGFuZCBlbmQKKyAgIGFyZSBwb2ludGVycyB0byB0aGUgc291cmNlIGNoYXJhY3RlcnMgd2hpY2ggc2hvdWxkIGJlIG9mIHR5cGUKKyAgICJmcm9tX3R5cGUgKiIuICB0byBpcyBhIHBvaW50ZXIgb2YgdHlwZSAidG9fdHlwZSAqIiBhbmQgcG9pbnRzIHRvIHRoZQorICAgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgY2hhcmFjdGVycyBhcmUgd3JpdHRlbiB0by4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKGZyb21fdHlwZSwgdG9fdHlwZSwgYmVnaW4sIGVuZCwgdG8pIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0b190eXBlICpfdG8gPSAodG9fdHlwZSAqKSB0bzsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX2l0ZXIgPSAoYmVnaW4pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfZW5kID0gKGVuZCk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IG4gPSAoX2VuZCkgLSAoX2l0ZXIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX3Vucm9sbGVkX2VuZCA9ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pdGVyICsgX1B5X1NJWkVfUk9VTkRfRE9XTihuLCA0KTsgICAgICAgICAgXAorICAgICAgICB3aGlsZSAoX2l0ZXIgPCAoX3Vucm9sbGVkX2VuZCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bMF0gPSAodG9fdHlwZSkgX2l0ZXJbMF07ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1sxXSA9ICh0b190eXBlKSBfaXRlclsxXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzJdID0gKHRvX3R5cGUpIF9pdGVyWzJdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bM10gPSAodG9fdHlwZSkgX2l0ZXJbM107ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pdGVyICs9IDQ7IF90byArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHdoaWxlIChfaXRlciA8IChfZW5kKSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xMDAsMTYgKzE4MSwxNSBAQAogKi8KIHN0YXRpYyBQeU9iamVjdCAqaW50ZXJuZWQ7CiAKLS8qIEZyZWUgbGlzdCBmb3IgVW5pY29kZSBvYmplY3RzICovCi1zdGF0aWMgUHlVbmljb2RlT2JqZWN0ICpmcmVlX2xpc3Q7Ci1zdGF0aWMgaW50IG51bWZyZWU7Ci0KIC8qIFRoZSBlbXB0eSBVbmljb2RlIG9iamVjdCBpcyBzaGFyZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4gKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGVfZW1wdHk7CitzdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfZW1wdHk7CisKKy8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCitzdGF0aWMgX1B5X0lkZW50aWZpZXIgKnN0YXRpY19zdHJpbmdzOwogCiAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgc3RyaW5ncyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUgYmVpbmcKICAgIHNoYXJlZCBhcyB3ZWxsLiAqLwotc3RhdGljIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZV9sYXRpbjFbMjU2XTsKK3N0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9sYXRpbjFbMjU2XTsKIAogLyogRmFzdCBkZXRlY3Rpb24gb2YgdGhlIG1vc3QgZnJlcXVlbnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9hc2NpaV93aGl0ZXNwYWNlW10gPSB7CkBAIC0xNDIsMTYgKzIyMiwzMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorLyogZm9yd2FyZCAqLworc3RhdGljIFB5VW5pY29kZU9iamVjdCAqX1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBsZW5ndGgpOworc3RhdGljIFB5T2JqZWN0KiBnZXRfbGF0aW4xX2NoYXIodW5zaWduZWQgY2hhciBjaCk7CitzdGF0aWMgaW50IHVuaWNvZGVfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSk7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbVVDUzEoY29uc3QgdW5zaWduZWQgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21VQ1MyKGNvbnN0IFB5X1VDUzIgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tVUNTNChjb25zdCBQeV9VQ1M0ICpzLCBQeV9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCiAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsIFB5X3NzaXplX3QgKm5ld3Bvcyk7CiAKLXN0YXRpYyB2b2lkIHJhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pOworc3RhdGljIHZvaWQKK3JhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAKIC8qIFNhbWUgZm9yIGxpbmVicmVha3MgKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGFzY2lpX2xpbmVicmVha1tdID0gewpAQCAtMTgxLDcgKzI3Niw4IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogfTsKIAotCisvKiBUaGUgbWF4IHVuaWNvZGUgdmFsdWUgaXMgYWx3YXlzIDB4MTBGRkZGIHdoaWxlIHVzaW5nIHRoZSBQRVAtMzkzIEFQSS4KKyAgIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgQVBJLiAqLwogUHlfVU5JQ09ERQogUHlVbmljb2RlX0dldE1heCh2b2lkKQogewpAQCAtMTk0LDYgKzI5MCwyMjQgQEAKICNlbmRpZgogfQogCisjaWZkZWYgUHlfREVCVUcKK2ludAorX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KFB5T2JqZWN0ICpvcCwgaW50IGNoZWNrX2NvbnRlbnQpCit7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWk7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSk7CisKKyAgICBhc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopb3A7CisgICAga2luZCA9IGFzY2lpLT5zdGF0ZS5raW5kOworCisgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAxICYmIGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDEpIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCAqY29tcGFjdCA9IChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopb3A7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDEpIHsKKyAgICAgICAgICAgIGRhdGEgPSBjb21wYWN0ICsgMTsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwKTsKKyAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMSk7CisgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjggIT0gZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb3A7CisKKyAgICAgICAgICAgIGRhdGEgPSB1bmljb2RlLT5kYXRhLmFueTsKKyAgICAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5sZW5ndGggPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5oYXNoID09IC0xKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuaW50ZXJuZWQgPT0gU1NUQVRFX05PVF9JTlRFUk5FRCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT53c3RyICE9IE5VTEwpOworICAgICAgICAgICAgICAgIGFzc2VydChkYXRhID09IE5VTEwpOworICAgICAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT51dGY4ID09IE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOCA9PSBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4X2xlbmd0aCA9PSBhc2NpaS0+bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjggIT0gZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgICAgIGlmICgKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgICAgICAgICAga2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorI2Vsc2UKKyAgICAgICAgICAgICAgICBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5ECisjZW5kaWYKKyAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPndzdHIgPT0gZGF0YSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPndzdHJfbGVuZ3RoID09IGFzY2lpLT5sZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT53c3RyICE9IGRhdGEpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbXBhY3QtPnV0ZjggPT0gTlVMTCkKKyAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT51dGY4X2xlbmd0aCA9PSAwKTsKKyAgICAgICAgaWYgKGFzY2lpLT53c3RyID09IE5VTEwpCisgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+d3N0cl9sZW5ndGggPT0gMCk7CisgICAgfQorICAgIC8qIGNoZWNrIHRoYXQgdGhlIGJlc3Qga2luZCBpcyB1c2VkICovCisgICAgaWYgKGNoZWNrX2NvbnRlbnQgJiYga2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKKyAgICB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgUHlfVUNTNCBtYXhjaGFyID0gMDsKKyAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgUHlfVUNTNCBjaDsKKworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoYXNjaWkpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGFzY2lpLT5sZW5ndGg7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgIGlmIChjaCA+IG1heGNoYXIpCisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IGNoOworICAgICAgICB9CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpID09IDApIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA+PSAxMjgpOworICAgICAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDw9IDI1NSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPCAxMjgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyID49IDB4MTAwKTsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDw9IDB4RkZGRik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA+PSAweDEwMDAwKTsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgYXNjaWktPmxlbmd0aCkgPT0gMCk7CisgICAgfQorICAgIHJldHVybiAxOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0X3djaGFyKFB5T2JqZWN0ICp1bmljb2RlKQoreworI2lmbmRlZiBQeV9ERUJVRworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgYXNzZXJ0KFB5X1JFRkNOVCh1bmljb2RlKSA9PSAxKTsKKworICAgIGxlbiA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDEpIHsKKyAgICAgICAgd2NoYXJfdCBjaCA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbGF0aW4xX2NoYXIgPSBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpY2gpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIGxhdGluMV9jaGFyOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKF9QeVVuaWNvZGVfUmVhZHkodW5pY29kZSkgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgLyogZG9uJ3QgbWFrZSB0aGUgcmVzdWx0IHJlYWR5IGluIGRlYnVnIG1vZGUgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxlcgorICAgICAgIG1ha2VzIHRoZSBzdHJpbmcgcmVhZHkgYmVmb3JlIHVzaW5nIGl0ICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisjZW5kaWYKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHRfcmVhZHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgaWYgKHVuaWNvZGUgIT0gdW5pY29kZV9lbXB0eSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCAwKTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbGF0aW4xX2NoYXIgPSB1bmljb2RlX2xhdGluMVtjaF07CisgICAgICAgICAgICBpZiAobGF0aW4xX2NoYXIgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICh1bmljb2RlICE9IGxhdGluMV9jaGFyKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihsYXRpbjFfY2hhcik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhdGluMV9jaGFyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xW2NoXSA9IHVuaWNvZGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHQoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeSh1bmljb2RlKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF93Y2hhcih1bmljb2RlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLyogU3VidHlwZSAtLSByZXR1cm4gZ2VudWluZSB1bmljb2RlIHN0cmluZyB3aXRoIHRoZSBzYW1lIHZhbHVlLiAqLworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOworfQorCisjaWZkZWYgSEFWRV9NQkNTCitzdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKKyNlbmRpZgorCiAvKiAtLS0gQmxvb20gRmlsdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBzdHVmZiB0byBpbXBsZW1lbnQgc2ltcGxlICJibG9vbSBmaWx0ZXJzIiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpAQCAtMjIzLDcgKzUzNyw4IEBACiAgICAgKChjaCkgPCAxMjhVID8gYXNjaWlfbGluZWJyZWFrWyhjaCldIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChCTE9PTShibG9vbV9saW5lYnJlYWssIChjaCkpICYmIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoY2gpKSkKIAotUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spIG1ha2VfYmxvb21fbWFzayhQeV9VTklDT0RFKiBwdHIsIFB5X3NzaXplX3QgbGVuKQorUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spCittYWtlX2Jsb29tX21hc2soaW50IGtpbmQsIHZvaWQqIHB0ciwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgLyogY2FsY3VsYXRlIHNpbXBsZSBibG9vbS1zdHlsZSBiaXRtYXNrIGZvciBhIGdpdmVuIHVuaWNvZGUgc3RyaW5nICovCiAKQEAgLTIzMiw3NiArNTQ3LDI1MyBAQAogCiAgICAgbWFzayA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICBCTE9PTV9BREQobWFzaywgcHRyW2ldKTsKKyAgICAgICAgQkxPT01fQUREKG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIHB0ciwgaSkpOwogCiAgICAgcmV0dXJuIG1hc2s7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShpbnQpIHVuaWNvZGVfbWVtYmVyKFB5X1VOSUNPREUgY2hyLCBQeV9VTklDT0RFKiBzZXQsIFB5X3NzaXplX3Qgc2V0bGVuKQotewotICAgIFB5X3NzaXplX3QgaTsKKyNkZWZpbmUgQkxPT01fTUVNQkVSKG1hc2ssIGNociwgc3RyKSBcCisgICAgKEJMT09NKG1hc2ssIGNocikgXAorICAgICAmJiAoUHlVbmljb2RlX0ZpbmRDaGFyKHN0ciwgY2hyLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpLCAxKSA+PSAwKSkKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzZXRsZW47IGkrKykKLSAgICAgICAgaWYgKHNldFtpXSA9PSBjaHIpCi0gICAgICAgICAgICByZXR1cm4gMTsKKy8qIENvbXBpbGF0aW9uIG9mIHRlbXBsYXRlZCByb3V0aW5lcyAqLwogCi0gICAgcmV0dXJuIDA7Ci19CisjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCiAKLSNkZWZpbmUgQkxPT01fTUVNQkVSKG1hc2ssIGNociwgc2V0LCBzZXRsZW4pICAgICAgICAgICAgICAgICAgICBcCi0gICAgQkxPT00obWFzaywgY2hyKSAmJiB1bmljb2RlX21lbWJlcihjaHIsIHNldCwgc2V0bGVuKQorI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MxbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMmxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczRsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlZGVmcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKIAogLyogLS0tIFVuaWNvZGUgT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYwotaW50IHVuaWNvZGVfcmVzaXplKHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBQeU9iamVjdCAqCitmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKHZvaWQgKnMsIGludCBraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIHZvaWQgKm9sZHN0cjsKKyAgICBpbnQgbW9kZSA9IChkaXJlY3Rpb24gPT0gMSkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKIAotICAgIC8qIFNob3J0Y3V0IGlmIHRoZXJlJ3Mgbm90aGluZyBtdWNoIHRvIGRvLiAqLwotICAgIGlmICh1bmljb2RlLT5sZW5ndGggPT0gbGVuZ3RoKQotICAgICAgICBnb3RvIHJlc2V0OwotCi0gICAgLyogUmVzaXppbmcgc2hhcmVkIG9iamVjdCAodW5pY29kZV9lbXB0eSBvciBzaW5nbGUgY2hhcmFjdGVyCi0gICAgICAgb2JqZWN0cykgaW4tcGxhY2UgaXMgbm90IGFsbG93ZWQuIFVzZSBQeVVuaWNvZGVfUmVzaXplKCkKLSAgICAgICBpbnN0ZWFkICEgKi8KLQotICAgIGlmICh1bmljb2RlID09IHVuaWNvZGVfZW1wdHkgfHwKLSAgICAgICAgKHVuaWNvZGUtPmxlbmd0aCA9PSAxICYmCi0gICAgICAgICB1bmljb2RlLT5zdHJbMF0gPCAyNTZVICYmCi0gICAgICAgICB1bmljb2RlX2xhdGluMVt1bmljb2RlLT5zdHJbMF1dID09IHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXNpemUgc2hhcmVkIHN0ciBvYmplY3RzIik7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVUNTMSBjaDEgPSAoUHlfVUNTMSkgY2g7CisgICAgICAgICAgICBpZiAoY2gxID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2Zhc3RzZWFyY2goKFB5X1VDUzEgKikgcywgc2l6ZSwgJmNoMSwgMSwgMCwgbW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSAoUHlfVUNTMikgY2g7CisgICAgICAgICAgICBpZiAoY2gyID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2Zhc3RzZWFyY2goKFB5X1VDUzIgKikgcywgc2l6ZSwgJmNoMiwgMSwgMCwgbW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfZmFzdHNlYXJjaCgoUHlfVUNTNCAqKSBzLCBzaXplLCAmY2gsIDEsIDAsIG1vZGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KK30KIAotICAgIC8qIFdlIGFsbG9jYXRlIG9uZSBtb3JlIGJ5dGUgdG8gbWFrZSBzdXJlIHRoZSBzdHJpbmcgaXMgVXgwMDAwIHRlcm1pbmF0ZWQuCi0gICAgICAgVGhlIG92ZXJhbGxvY2F0aW9uIGlzIGFsc28gdXNlZCBieSBmYXN0c2VhcmNoLCB3aGljaCBhc3N1bWVzIHRoYXQgaXQncwotICAgICAgIHNhZmUgdG8gbG9vayBhdCBzdHJbbGVuZ3RoXSAod2l0aG91dCBtYWtpbmcgYW55IGFzc3VtcHRpb25zIGFib3V0IHdoYXQKLSAgICAgICBpdCBjb250YWlucykuICovCitzdGF0aWMgUHlPYmplY3QqCityZXNpemVfY29tcGFjdChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlfc3NpemVfdCBjaGFyX3NpemU7CisgICAgUHlfc3NpemVfdCBzdHJ1Y3Rfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG5ld19zaXplOworICAgIGludCBzaGFyZV93c3RyOworICAgIFB5T2JqZWN0ICpuZXdfdW5pY29kZTsKKyAgICBhc3NlcnQodW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpOwogCi0gICAgb2xkc3RyID0gdW5pY29kZS0+c3RyOwotICAgIHVuaWNvZGUtPnN0ciA9IFB5T2JqZWN0X1JFQUxMT0ModW5pY29kZS0+c3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpICogKGxlbmd0aCArIDEpKTsKLSAgICBpZiAoIXVuaWNvZGUtPnN0cikgewotICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSAqKW9sZHN0cjsKKyAgICBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUFTQ0lJT2JqZWN0KTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QpOworICAgIHNoYXJlX3dzdHIgPSBfUHlVbmljb2RlX1NIQVJFX1dTVFIodW5pY29kZSk7CisKKyAgICBpZiAobGVuZ3RoID4gKChQWV9TU0laRV9UX01BWCAtIHN0cnVjdF9zaXplKSAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZXdfc2l6ZSA9IChzdHJ1Y3Rfc2l6ZSArIChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZSk7CisKKyAgICBfUHlfREVDX1JFRlRPVEFMOworICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UodW5pY29kZSk7CisKKyAgICBuZXdfdW5pY29kZSA9IChQeU9iamVjdCAqKVB5T2JqZWN0X1JFQUxMT0MoKGNoYXIgKil1bmljb2RlLCBuZXdfc2l6ZSk7CisgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSh1bmljb2RlKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHVuaWNvZGUgPSBuZXdfdW5pY29kZTsKKyAgICBfUHlfTmV3UmVmZXJlbmNlKHVuaWNvZGUpOworCisgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgaWYgKHNoYXJlX3dzdHIpIHsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICB9CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCAwKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDApKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIGludAorcmVzaXplX2lucGxhY2UoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoreworICAgIHdjaGFyX3QgKndzdHI7CisgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKKyAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoUHlfUkVGQ05UKHVuaWNvZGUpID09IDEpOworCisgICAgaWYgKFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkgeworICAgICAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICAgICAgaW50IHNoYXJlX3dzdHIsIHNoYXJlX3V0Zjg7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgZGF0YSA9IF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSk7CisgICAgICAgIGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICBzaGFyZV93c3RyID0gX1B5VW5pY29kZV9TSEFSRV9XU1RSKHVuaWNvZGUpOworICAgICAgICBzaGFyZV91dGY4ID0gX1B5VW5pY29kZV9TSEFSRV9VVEY4KHVuaWNvZGUpOworCisgICAgICAgIGlmIChsZW5ndGggPiAoUFlfU1NJWkVfVF9NQVggLyBjaGFyX3NpemUgLSAxKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBuZXdfc2l6ZSA9IChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZTsKKworICAgICAgICBpZiAoIXNoYXJlX3V0ZjggJiYgX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodW5pY29kZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1VURjgodW5pY29kZSkpOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB9CisKKyAgICAgICAgZGF0YSA9IChQeU9iamVjdCAqKVB5T2JqZWN0X1JFQUxMT0MoZGF0YSwgbmV3X3NpemUpOworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBkYXRhOworICAgICAgICBpZiAoc2hhcmVfd3N0cikgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gZGF0YTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNoYXJlX3V0ZjgpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IGRhdGE7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIGRhdGEsIGxlbmd0aCwgMCk7CisgICAgICAgIGlmIChzaGFyZV93c3RyIHx8IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDApKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CisKKyAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLworICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSAtIDEpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB1bmljb2RlLT5zdHJbbGVuZ3RoXSA9IDA7Ci0gICAgdW5pY29kZS0+bGVuZ3RoID0gbGVuZ3RoOwotCi0gIHJlc2V0OgotICAgIC8qIFJlc2V0IHRoZSBvYmplY3QgY2FjaGVzICovCi0gICAgaWYgKHVuaWNvZGUtPmRlZmVuYykgewotICAgICAgICBQeV9DTEVBUih1bmljb2RlLT5kZWZlbmMpOworICAgIG5ld19zaXplID0gc2l6ZW9mKHdjaGFyX3QpICogKGxlbmd0aCArIDEpOworICAgIHdzdHIgPSAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgIHdzdHIgPSBQeU9iamVjdF9SRUFMTE9DKHdzdHIsIG5ld19zaXplKTsKKyAgICBpZiAoIXdzdHIpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB1bmljb2RlLT5oYXNoID0gLTE7Ci0KKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSB3c3RyOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVtsZW5ndGhdID0gMDsKKyAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOwogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QqCityZXNpemVfY29weShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlfc3NpemVfdCBjb3B5X2xlbmd0aDsKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIFB5T2JqZWN0ICpjb3B5OworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBjb3B5ID0gUHlVbmljb2RlX05ldyhsZW5ndGgsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSk7CisgICAgICAgIGlmIChjb3B5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihsZW5ndGgsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoY29weSwgMCwgdW5pY29kZSwgMCwgY29weV9sZW5ndGgpOworICAgICAgICByZXR1cm4gY29weTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp3OworCisgICAgICAgIHcgPSAoUHlPYmplY3QqKV9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7CisgICAgICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29weV9sZW5ndGggPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihjb3B5X2xlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgUHlfVU5JQ09ERV9DT1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9sZW5ndGgpOworICAgICAgICByZXR1cm4gdzsKKyAgICB9Cit9CisKIC8qIFdlIGFsbG9jYXRlIG9uZSBtb3JlIGJ5dGUgdG8gbWFrZSBzdXJlIHRoZSBzdHJpbmcgaXMKICAgIFV4MDAwMCB0ZXJtaW5hdGVkOyBzb21lIGNvZGUgKGUuZy4gbmV3X2lkZW50aWZpZXIpCiAgICByZWxpZXMgb24gdGhhdC4KQEAgLTMxMSw1NSArODAzLDM5IEBACiAKICovCiAKLXN0YXRpYwotUHlVbmljb2RlT2JqZWN0ICpfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBQeVVuaWNvZGVPYmplY3QgKgorX1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBsZW5ndGgpCiB7CiAgICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIHNpemVfdCBuZXdfc2l6ZTsKIAogICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLwogICAgIGlmIChsZW5ndGggPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVPYmplY3QqKXVuaWNvZGVfZW1wdHk7CiAgICAgfQogCiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwogICAgIGlmIChsZW5ndGggPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIHJldHVybiAoUHlVbmljb2RlT2JqZWN0ICopUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9Ci0KLSAgICAvKiBVbmljb2RlIGZyZWVsaXN0ICYgbWVtb3J5IGFsbG9jYXRpb24gKi8KLSAgICBpZiAoZnJlZV9saXN0KSB7Ci0gICAgICAgIHVuaWNvZGUgPSBmcmVlX2xpc3Q7Ci0gICAgICAgIGZyZWVfbGlzdCA9ICooUHlVbmljb2RlT2JqZWN0ICoqKXVuaWNvZGU7Ci0gICAgICAgIG51bWZyZWUtLTsKLSAgICAgICAgaWYgKHVuaWNvZGUtPnN0cikgewotICAgICAgICAgICAgLyogS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb246IHdlIG9ubHkgdXBzaXplIHRoZSBidWZmZXIsCi0gICAgICAgICAgICAgICBuZXZlciBkb3duc2l6ZSBpdC4gKi8KLSAgICAgICAgICAgIGlmICgodW5pY29kZS0+bGVuZ3RoIDwgbGVuZ3RoKSAmJgotICAgICAgICAgICAgICAgIHVuaWNvZGVfcmVzaXplKHVuaWNvZGUsIGxlbmd0aCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgICAgICAgICAgdW5pY29kZS0+c3RyID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNpemVfdCBuZXdfc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKSAqICgoc2l6ZV90KWxlbmd0aCArIDEpOwotICAgICAgICAgICAgdW5pY29kZS0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0MobmV3X3NpemUpOwotICAgICAgICB9Ci0gICAgICAgIFB5T2JqZWN0X0lOSVQodW5pY29kZSwgJlB5VW5pY29kZV9UeXBlKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNpemVfdCBuZXdfc2l6ZTsKLSAgICAgICAgdW5pY29kZSA9IFB5T2JqZWN0X05ldyhQeVVuaWNvZGVPYmplY3QsICZQeVVuaWNvZGVfVHlwZSk7Ci0gICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbmV3X3NpemUgPSBzaXplb2YoUHlfVU5JQ09ERSkgKiAoKHNpemVfdClsZW5ndGggKyAxKTsKLSAgICAgICAgdW5pY29kZS0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0MobmV3X3NpemUpOworICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBfUHlVbmljb2RlX05ldyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIXVuaWNvZGUtPnN0cikgeworICAgIHVuaWNvZGUgPSBQeU9iamVjdF9OZXcoUHlVbmljb2RlT2JqZWN0LCAmUHlVbmljb2RlX1R5cGUpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG5ld19zaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpICogKChzaXplX3QpbGVuZ3RoICsgMSk7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0MobmV3X3NpemUpOworICAgIGlmICghX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBlbGVtZW50IHRvIGd1YXJkIGFnYWluc3QgY2FzZXMgd2hlcmUKICAgICAgKiB0aGUgY2FsbGVyIGZhaWxzIGJlZm9yZSBpbml0aWFsaXppbmcgc3RyIC0tIHVuaWNvZGVfcmVzaXplKCkKICAgICAgKiByZWFkcyBzdHJbMF0sIGFuZCB0aGUgS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb24gY2FuIGtlZXAgbWVtb3J5CkBAIC0zNjcsMjQgKzg0Myw2NTggQEAKICAgICAgKiBXZSBkb24ndCB3YW50IHVuaWNvZGVfcmVzaXplIHRvIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4KICAgICAgKiB0aGF0IGNhc2UuCiAgICAgICovCi0gICAgdW5pY29kZS0+c3RyWzBdID0gMDsKLSAgICB1bmljb2RlLT5zdHJbbGVuZ3RoXSA9IDA7Ci0gICAgdW5pY29kZS0+bGVuZ3RoID0gbGVuZ3RoOwotICAgIHVuaWNvZGUtPmhhc2ggPSAtMTsKLSAgICB1bmljb2RlLT5zdGF0ZSA9IDA7Ci0gICAgdW5pY29kZS0+ZGVmZW5jID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSlbMF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVtsZW5ndGhdID0gMDsKKyAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSA9IC0xOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5jb21wYWN0ID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gMDsKKyAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KChQeU9iamVjdCAqKXVuaWNvZGUsIDApKTsKICAgICByZXR1cm4gdW5pY29kZTsKLQotICBvbkVycm9yOgotICAgIC8qIFhYWCBVTlJFRi9ORVdSRUYgaW50ZXJmYWNlIHNob3VsZCBiZSBtb3JlIHN5bW1ldHJpY2FsICovCi0gICAgX1B5X0RFQ19SRUZUT1RBTDsKLSAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKChQeU9iamVjdCAqKXVuaWNvZGUpOwotICAgIFB5T2JqZWN0X0RlbCh1bmljb2RlKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljCi12b2lkIHVuaWNvZGVfZGVhbGxvYyhyZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUpCitzdGF0aWMgY29uc3QgY2hhcioKK3VuaWNvZGVfa2luZF9uYW1lKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIC8qIGRvbid0IGNoZWNrIGNvbnNpc3RlbmN5OiB1bmljb2RlX2tpbmRfbmFtZSgpIGlzIGNhbGxlZCBmcm9tCisgICAgICAgX1B5VW5pY29kZV9EdW1wKCkgKi8KKyAgICBpZiAoIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKQorICAgIHsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpCisgICAgICAgICAgICByZXR1cm4gIndzdHIiOworICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKQorICAgICAgICB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiAibGVnYWN5IGFzY2lpIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBsYXRpbjEiOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgVUNTMiI7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBVQ1M0IjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAiPGxlZ2FjeSBpbnZhbGlkIGtpbmQ+IjsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiAiYXNjaWkiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gImxhdGluMSI7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuICJVQ1MyIjsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gIlVDUzQiOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAiPGludmFsaWQgY29tcGFjdCBraW5kPiI7CisgICAgfQorfQorCisjaWZkZWYgUHlfREVCVUcKKy8qIEZ1bmN0aW9ucyB3cmFwcGluZyBtYWNyb3MgZm9yIHVzZSBpbiBkZWJ1Z2dlciAqLworY2hhciAqX1B5VW5pY29kZV91dGY4KHZvaWQgKnVuaWNvZGUpeworICAgIHJldHVybiBQeVVuaWNvZGVfVVRGOCh1bmljb2RlKTsKK30KKwordm9pZCAqX1B5VW5pY29kZV9jb21wYWN0X2RhdGEodm9pZCAqdW5pY29kZSkgeworICAgIHJldHVybiBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQSh1bmljb2RlKTsKK30KK3ZvaWQgKl9QeVVuaWNvZGVfZGF0YSh2b2lkICp1bmljb2RlKXsKKyAgICBwcmludGYoIm9iaiAlcFxuIiwgdW5pY29kZSk7CisgICAgcHJpbnRmKCJjb21wYWN0ICVkXG4iLCBQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSk7CisgICAgcHJpbnRmKCJjb21wYWN0IGFzY2lpICVkXG4iLCBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7CisgICAgcHJpbnRmKCJhc2NpaSBvcCAlcFxuIiwgKCh2b2lkKikoKFB5QVNDSUlPYmplY3QqKSh1bmljb2RlKSArIDEpKSk7CisgICAgcHJpbnRmKCJjb21wYWN0IG9wICVwXG4iLCAoKHZvaWQqKSgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKHVuaWNvZGUpICsgMSkpKTsKKyAgICBwcmludGYoImNvbXBhY3QgZGF0YSAlcFxuIiwgX1B5VW5pY29kZV9DT01QQUNUX0RBVEEodW5pY29kZSkpOworICAgIHJldHVybiBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKK30KKwordm9pZAorX1B5VW5pY29kZV9EdW1wKFB5T2JqZWN0ICpvcCkKK3sKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopb3A7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCAqY29tcGFjdCA9IChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopb3A7CisgICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlID0gKFB5VW5pY29kZU9iamVjdCAqKW9wOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpCisgICAgeworICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQorICAgICAgICAgICAgZGF0YSA9IChhc2NpaSArIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhID0gKGNvbXBhY3QgKyAxKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBkYXRhID0gdW5pY29kZS0+ZGF0YS5hbnk7CisgICAgcHJpbnRmKCIlczogbGVuPSV6dSwgIix1bmljb2RlX2tpbmRfbmFtZShvcCksIGFzY2lpLT5sZW5ndGgpOworCisgICAgaWYgKGFzY2lpLT53c3RyID09IGRhdGEpCisgICAgICAgIHByaW50Zigic2hhcmVkICIpOworICAgIHByaW50Zigid3N0cj0lcCIsIGFzY2lpLT53c3RyKTsKKworICAgIGlmICghKGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAxICYmIGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDEpKSB7CisgICAgICAgIHByaW50ZigiICglenUpLCAiLCBjb21wYWN0LT53c3RyX2xlbmd0aCk7CisgICAgICAgIGlmICghYXNjaWktPnN0YXRlLmNvbXBhY3QgJiYgY29tcGFjdC0+dXRmOCA9PSB1bmljb2RlLT5kYXRhLmFueSkKKyAgICAgICAgICAgIHByaW50Zigic2hhcmVkICIpOworICAgICAgICBwcmludGYoInV0Zjg9JXAgKCV6dSkiLCBjb21wYWN0LT51dGY4LCBjb21wYWN0LT51dGY4X2xlbmd0aCk7CisgICAgfQorICAgIHByaW50ZigiLCBkYXRhPSVwXG4iLCBkYXRhKTsKK30KKyNlbmRpZgorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfTmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBtYXhjaGFyKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCAqdW5pY29kZTsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBpbnQgaXNfc2hhcmluZywgaXNfYXNjaWk7CisgICAgUHlfc3NpemVfdCBjaGFyX3NpemU7CisgICAgUHlfc3NpemVfdCBzdHJ1Y3Rfc2l6ZTsKKworICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLworICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorCisgICAgaXNfYXNjaWkgPSAwOworICAgIGlzX3NoYXJpbmcgPSAwOworICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QpOworICAgIGlmIChtYXhjaGFyIDwgMTI4KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICAgICAgaXNfYXNjaWkgPSAxOworICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUFTQ0lJT2JqZWN0KTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDI1NikgeworICAgICAgICBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKG1heGNoYXIgPCA2NTUzNikgeworICAgICAgICBraW5kID0gUHlVbmljb2RlXzJCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDI7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gMikKKyAgICAgICAgICAgIGlzX3NoYXJpbmcgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1heGNoYXIgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1heGltdW0gY2hhcmFjdGVyIHBhc3NlZCB0byBQeVVuaWNvZGVfTmV3Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBraW5kID0gUHlVbmljb2RlXzRCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDQ7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gNCkKKyAgICAgICAgICAgIGlzX3NoYXJpbmcgPSAxOworICAgIH0KKworICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIFB5VW5pY29kZV9OZXciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzaXplID4gKChQWV9TU0laRV9UX01BWCAtIHN0cnVjdF9zaXplKSAvIGNoYXJfc2l6ZSAtIDEpKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIC8qIER1cGxpY2F0ZWQgYWxsb2NhdGlvbiBjb2RlIGZyb20gX1B5T2JqZWN0X05ldygpIGluc3RlYWQgb2YgYSBjYWxsIHRvCisgICAgICogUHlPYmplY3RfTmV3KCkgc28gd2UgYXJlIGFibGUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBvYmplY3QgYW5kCisgICAgICogaXQncyBkYXRhIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBvYmogPSAoUHlPYmplY3QgKikgUHlPYmplY3RfTUFMTE9DKHN0cnVjdF9zaXplICsgKHNpemUgKyAxKSAqIGNoYXJfc2l6ZSk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBvYmogPSBQeU9iamVjdF9JTklUKG9iaiwgJlB5VW5pY29kZV9UeXBlKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdW5pY29kZSA9IChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopb2JqOworICAgIGlmIChpc19hc2NpaSkKKyAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopb2JqKSArIDE7CisgICAgZWxzZQorICAgICAgICBkYXRhID0gdW5pY29kZSArIDE7CisgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBzaXplOworICAgIF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSA9IC0xOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IGtpbmQ7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5jb21wYWN0ID0gMTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gaXNfYXNjaWk7CisgICAgaWYgKGlzX2FzY2lpKSB7CisgICAgICAgICgoY2hhciopZGF0YSlbc2l6ZV0gPSAwOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICgoY2hhciopZGF0YSlbc2l6ZV0gPSAwOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgdW5pY29kZS0+dXRmOCA9IE5VTEw7CisgICAgICAgIHVuaWNvZGUtPnV0ZjhfbGVuZ3RoID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHVuaWNvZGUtPnV0ZjggPSBOVUxMOworICAgICAgICB1bmljb2RlLT51dGY4X2xlbmd0aCA9IDA7CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKQorICAgICAgICAgICAgKChQeV9VQ1MyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIGVsc2UgLyoga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCAqLworICAgICAgICAgICAgKChQeV9VQ1M0KilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIGlmIChpc19zaGFyaW5nKSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gc2l6ZTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9ICh3Y2hhcl90ICopZGF0YTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIEZpbGwgdGhlIGRhdGEgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMgdG8gZGV0ZWN0IGJ1Z3MgZWFybGllci4KKyAgICAgICBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSBkZXRlY3RzIGludmFsaWQgY2hhcmFjdGVycywKKyAgICAgICBhdCBsZWFzdCBmb3IgQVNDSUkgYW5kIFVDUy00IHN0cmluZ3MuIFUrMDBGRiBpcyBpbnZhbGlkIGluIEFTQ0lJCisgICAgICAgYW5kIFUrRkZGRkZGRkYgaXMgYW4gaW52YWxpZCBjaGFyYWN0ZXIgaW4gVW5pY29kZSA2LjAuICovCisgICAgbWVtc2V0KGRhdGEsIDB4ZmYsIHNpemUgKiBraW5kKTsKKyNlbmRpZgorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKFB5T2JqZWN0Kil1bmljb2RlLCAwKSk7CisgICAgcmV0dXJuIG9iajsKK30KKworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKy8qIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgMTYtYml0cyB3Y2hhcl90IHJlcHJlc2VudGF0aW9uIHRvIFVDUzQsIHRoaXMKKyAgIHdpbGwgZGVjb2RlIHN1cnJvZ2F0ZSBwYWlycywgdGhlIG90aGVyIGNvbnZlcnNpb25zIGFyZSBpbXBsZW1lbnRlZCBhcyBtYWNyb3MKKyAgIGZvciBlZmZpY2llbmN5LgorCisgICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB1bmljb2RlIGNhbiBob2xkIG9uZSBtb3JlIGNvZGUgcG9pbnQgdGhhbiB3c3RyCisgICBjaGFyYWN0ZXJzIGZvciBhIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KGNvbnN0IHdjaGFyX3QgKmJlZ2luLCBjb25zdCB3Y2hhcl90ICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBjb25zdCB3Y2hhcl90ICppdGVyOworICAgIFB5X1VDUzQgKnVjczRfb3V0OworCisgICAgYXNzZXJ0KHVuaWNvZGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgIHVjczRfb3V0ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisKKyAgICBmb3IgKGl0ZXIgPSBiZWdpbjsgaXRlciA8IGVuZDsgKSB7CisgICAgICAgIGFzc2VydCh1Y3M0X291dCA8IChQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpKTsKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoaXRlclswXSkKKyAgICAgICAgICAgICYmIChpdGVyKzEpIDwgZW5kCisgICAgICAgICAgICAmJiBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoaXRlclsxXSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICp1Y3M0X291dCsrID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaXRlclswXSwgaXRlclsxXSk7CisgICAgICAgICAgICBpdGVyICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqdWNzNF9vdXQrKyA9ICppdGVyOworICAgICAgICAgICAgaXRlcisrOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCh1Y3M0X291dCA9PSAoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSk7CisKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Cit1bmljb2RlX2NoZWNrX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgaWYgKCF1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBtb2RpZnkgYSBzdHJpbmcgY3VycmVudGx5IHVzZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2NvcHlfY2hhcmFjdGVycyhQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaG93X21hbnksIGludCBjaGVja19tYXhjaGFyKQoreworICAgIHVuc2lnbmVkIGludCBmcm9tX2tpbmQsIHRvX2tpbmQ7CisgICAgdm9pZCAqZnJvbV9kYXRhLCAqdG9fZGF0YTsKKworICAgIGFzc2VydCgwIDw9IGhvd19tYW55KTsKKyAgICBhc3NlcnQoMCA8PSBmcm9tX3N0YXJ0KTsKKyAgICBhc3NlcnQoMCA8PSB0b19zdGFydCk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhmcm9tKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShmcm9tKSk7CisgICAgYXNzZXJ0KGZyb21fc3RhcnQgKyBob3dfbWFueSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9tKSk7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRvKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh0bykpOworICAgIGFzc2VydCh0b19zdGFydCArIGhvd19tYW55IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRvKSk7CisKKyAgICBpZiAoaG93X21hbnkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmcm9tX2tpbmQgPSBQeVVuaWNvZGVfS0lORChmcm9tKTsKKyAgICBmcm9tX2RhdGEgPSBQeVVuaWNvZGVfREFUQShmcm9tKTsKKyAgICB0b19raW5kID0gUHlVbmljb2RlX0tJTkQodG8pOworICAgIHRvX2RhdGEgPSBQeVVuaWNvZGVfREFUQSh0byk7CisKKyNpZmRlZiBQeV9ERUJVRworICAgIGlmICghY2hlY2tfbWF4Y2hhcgorICAgICAgICAmJiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoZnJvbSkgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pKQorICAgIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCB0b19tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKTsKKyAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGhvd19tYW55OyBpKyspIHsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoZnJvbV9raW5kLCBmcm9tX2RhdGEsIGZyb21fc3RhcnQgKyBpKTsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSB0b19tYXhjaGFyKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgaWYgKGZyb21fa2luZCA9PSB0b19raW5kKSB7CisgICAgICAgIGlmIChjaGVja19tYXhjaGFyCisgICAgICAgICAgICAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKGZyb20pICYmIFB5VW5pY29kZV9JU19BU0NJSSh0bykpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFdyaXRpbmcgTGF0aW4tMSBjaGFyYWN0ZXJzIGludG8gYW4gQVNDSUkgc3RyaW5nIHJlcXVpcmVzIHRvCisgICAgICAgICAgICAgICBjaGVjayB0aGF0IGFsbCB3cml0dGVuIGNoYXJhY3RlcnMgYXJlIHB1cmUgQVNDSUkgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgbWF4X2NoYXI7CisgICAgICAgICAgICBtYXhfY2hhciA9IHVjczFsaWJfZmluZF9tYXhfY2hhcihmcm9tX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVUNTMSopZnJvbV9kYXRhICsgaG93X21hbnkpOworICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfTUVNQ1BZKChjaGFyKil0b19kYXRhICsgdG9fa2luZCAqIHRvX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgKGNoYXIqKWZyb21fZGF0YSArIGZyb21fa2luZCAqIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICB0b19raW5kICogaG93X21hbnkpOworICAgIH0KKyAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKQorICAgIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTMiwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCisgICAgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1M0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKKyAgICB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0IChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoZnJvbSkgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pKTsKKworICAgICAgICBpZiAoIWNoZWNrX21heGNoYXIpIHsKKyAgICAgICAgICAgIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTMSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQsIFB5X1VDUzEsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0LCBQeV9VQ1MyLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFB5X1VDUzQgdG9fbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0byk7CisgICAgICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IGhvd19tYW55OyBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGZyb21fa2luZCwgZnJvbV9kYXRhLCBmcm9tX3N0YXJ0ICsgaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gdG9fbWF4Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh0b19raW5kLCB0b19kYXRhLCB0b19zdGFydCArIGksIGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoCisgICAgUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsIFB5X3NzaXplX3QgaG93X21hbnkpCit7CisgICAgKHZvaWQpX2NvcHlfY2hhcmFjdGVycyh0bywgdG9fc3RhcnQsIGZyb20sIGZyb21fc3RhcnQsIGhvd19tYW55LCAwKTsKK30KKworUHlfc3NpemVfdAorUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSwgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaG93X21hbnkpCit7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZyb20pIHx8ICFQeVVuaWNvZGVfQ2hlY2sodG8pKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmcm9tKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodG8pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZnJvbV9zdGFydCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHRvX3N0YXJ0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBob3dfbWFueSA9IFB5X01JTihQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9tKSwgaG93X21hbnkpOworICAgIGlmICh0b19zdGFydCArIGhvd19tYW55ID4gUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgd3JpdGUgJXppIGNoYXJhY3RlcnMgYXQgJXppICIKKyAgICAgICAgICAgICAgICAgICAgICJpbiBhIHN0cmluZyBvZiAlemkgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICBob3dfbWFueSwgdG9fc3RhcnQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRvKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoaG93X21hbnkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHRvKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZXJyID0gX2NvcHlfY2hhcmFjdGVycyh0bywgdG9fc3RhcnQsIGZyb20sIGZyb21fc3RhcnQsIGhvd19tYW55LCAxKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY29weSAlcyBjaGFyYWN0ZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICJpbnRvIGEgc3RyaW5nIG9mICVzIGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9raW5kX25hbWUoZnJvbSksCisgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2tpbmRfbmFtZSh0bykpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBob3dfbWFueTsKK30KKworLyogRmluZCB0aGUgbWF4aW11bSBjb2RlIHBvaW50IGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHN1cnJvZ2F0ZSBwYWlycyBzbyBhCisgICBjb3JyZWN0IHN0cmluZyBsZW5ndGggY2FuIGJlIGNvbXB1dGVkIGJlZm9yZSBjb252ZXJ0aW5nIGEgc3RyaW5nIHRvIFVDUzQuCisgICBUaGlzIGZ1bmN0aW9uIGNvdW50cyBzaW5nbGUgc3Vycm9nYXRlcyBhcyBhIGNoYXJhY3RlciBhbmQgbm90IGFzIGEgcGFpci4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZXJyb3IuICovCitzdGF0aWMgaW50CitmaW5kX21heGNoYXJfc3Vycm9nYXRlcyhjb25zdCB3Y2hhcl90ICpiZWdpbiwgY29uc3Qgd2NoYXJfdCAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCAqbWF4Y2hhciwgUHlfc3NpemVfdCAqbnVtX3N1cnJvZ2F0ZXMpCit7CisgICAgY29uc3Qgd2NoYXJfdCAqaXRlcjsKKyAgICBQeV9VQ1M0IGNoOworCisgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzICE9IE5VTEwgJiYgbWF4Y2hhciAhPSBOVUxMKTsKKyAgICAqbnVtX3N1cnJvZ2F0ZXMgPSAwOworICAgICptYXhjaGFyID0gMDsKKworICAgIGZvciAoaXRlciA9IGJlZ2luOyBpdGVyIDwgZW5kOyApIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGl0ZXJbMF0pCisgICAgICAgICAgICAmJiAoaXRlcisxKSA8IGVuZAorICAgICAgICAgICAgJiYgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGl0ZXJbMV0pKQorICAgICAgICB7CisgICAgICAgICAgICBjaCA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGl0ZXJbMF0sIGl0ZXJbMV0pOworICAgICAgICAgICAgKysoKm51bV9zdXJyb2dhdGVzKTsKKyAgICAgICAgICAgIGl0ZXIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgY2ggPSAqaXRlcjsKKyAgICAgICAgICAgIGl0ZXIrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2ggPiAqbWF4Y2hhcikgeworICAgICAgICAgICAgKm1heGNoYXIgPSBjaDsKKyAgICAgICAgICAgIGlmICgqbWF4Y2hhciA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgVSsleCBpcyBub3QgaW4gcmFuZ2UgW1UrMDAwMDsgVSsxMGZmZmZdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlVbmljb2RlX1JlYWR5KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHdjaGFyX3QgKmVuZDsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIFB5X3NzaXplX3QgbGVuZ3RoX3dvX3N1cnJvZ2F0ZXM7CisjZW5kaWYKKworICAgIC8qIF9QeVVuaWNvZGVfUmVhZHkoKSBpcyBvbmx5IGludGVuZGVkIGZvciBvbGQtc3R5bGUgQVBJIHVzYWdlIHdoZXJlCisgICAgICAgc3RyaW5ncyB3ZXJlIGNyZWF0ZWQgdXNpbmcgX1B5T2JqZWN0X05ldygpIGFuZCB3aGVyZSBubyBjYW5vbmljYWwKKyAgICAgICByZXByZXNlbnRhdGlvbiAodGhlIHN0ciBmaWVsZCkgaGFzIGJlZW4gc2V0IHlldCBha2Egc3RyaW5ncworICAgICAgIHdoaWNoIGFyZSBub3QgeWV0IHJlYWR5LiAqLworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpICE9IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID09IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCk7CisgICAgLyogQWN0dWFsbHksIGl0IHNob3VsZCBuZWl0aGVyIGJlIGludGVybmVkIG5vciBiZSBhbnl0aGluZyBlbHNlOiAqLworICAgIGFzc2VydChfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmludGVybmVkID09IFNTVEFURV9OT1RfSU5URVJORUQpOworCisgICAgZW5kID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpICsgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAoZmluZF9tYXhjaGFyX3N1cnJvZ2F0ZXMoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyLCAmbnVtX3N1cnJvZ2F0ZXMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAobWF4Y2hhciA8IDI1NikgeworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgKyAxKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyh3Y2hhcl90LCB1bnNpZ25lZCBjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSkpOworICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKVtfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CisgICAgICAgIGlmIChtYXhjaGFyIDwgMTI4KSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gMTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSk7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAwOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB9CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgfQorICAgIC8qIEluIHRoaXMgY2FzZSB3ZSBtaWdodCBoYXZlIHRvIGNvbnZlcnQgZG93biBmcm9tIDQtYnl0ZSBuYXRpdmUKKyAgICAgICB3Y2hhcl90IHRvIDItYnl0ZSB1bmljb2RlLiAqLworICAgIGVsc2UgaWYgKG1heGNoYXIgPCA2NTUzNikgeworICAgICAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgPT0gMCAmJgorICAgICAgICAgICAgICAgIkZpbmRNYXhDaGFyQW5kTnVtU3Vycm9nYXRlUGFpcnMoKSBtZXNzZWQgdXAiKTsKKworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogV2UgY2FuIHNoYXJlIHJlcHJlc2VudGF0aW9ucyBhbmQgYXJlIGRvbmUuICovCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisjZWxzZQorICAgICAgICAvKiBzaXplb2Yod2NoYXJfdCkgPT0gNCAqLworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKAorICAgICAgICAgICAgMiAqIChfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpICsgMSkpOworICAgICAgICBpZiAoIV9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKHdjaGFyX3QsIFB5X1VDUzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisjZW5kaWYKKyAgICB9CisgICAgLyogbWF4Y2hhciBleGVlZHMgMTYgYml0LCB3ZWUgbmVlZCA0IGJ5dGVzIGZvciB1bmljb2RlIGNoYXJhY3RlcnMgKi8KKyAgICBlbHNlIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIC8qIGluIGNhc2UgdGhlIG5hdGl2ZSByZXByZXNlbnRhdGlvbiBpcyAyLWJ5dGVzLCB3ZSBuZWVkIHRvIGFsbG9jYXRlIGEKKyAgICAgICAgICAgbmV3IG5vcm1hbGl6ZWQgNC1ieXRlIHZlcnNpb24uICovCisgICAgICAgIGxlbmd0aF93b19zdXJyb2dhdGVzID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSAtIG51bV9zdXJyb2dhdGVzOworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKDQgKiAobGVuZ3RoX3dvX3N1cnJvZ2F0ZXMgKyAxKSk7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aF93b19zdXJyb2dhdGVzOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIC8qIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KCkgcmVxdWlyZXMgYSByZWFkeSBzdHJpbmcgKi8KKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5yZWFkeSA9IDE7CisgICAgICAgIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLCB1bmljb2RlKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbHNlCisgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwKTsKKworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyNlbmRpZgorICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKVtfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgIH0KKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3VuaWNvZGVfZGVhbGxvYyhyZWdpc3RlciBQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBzd2l0Y2ggKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh1bmljb2RlKSkgewogICAgIGNhc2UgU1NUQVRFX05PVF9JTlRFUk5FRDoKQEAgLTM5Myw3ICsxNTAzLDcgQEAKICAgICBjYXNlIFNTVEFURV9JTlRFUk5FRF9NT1JUQUw6CiAgICAgICAgIC8qIHJldml2ZSBkZWFkIG9iamVjdCB0ZW1wb3JhcmlseSBmb3IgRGVsSXRlbSAqLwogICAgICAgICBQeV9SRUZDTlQodW5pY29kZSkgPSAzOwotICAgICAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oaW50ZXJuZWQsIChQeU9iamVjdCAqKXVuaWNvZGUpICE9IDApCisgICAgICAgIGlmIChQeURpY3RfRGVsSXRlbShpbnRlcm5lZCwgdW5pY29kZSkgIT0gMCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgImRlbGV0aW9uIG9mIGludGVybmVkIHN0cmluZyBmYWlsZWQiKTsKICAgICAgICAgYnJlYWs7CkBAIC00MDUsMjQwICsxNTE1LDc0NCBAQAogICAgICAgICBQeV9GYXRhbEVycm9yKCJJbmNvbnNpc3RlbnQgaW50ZXJuZWQgc3RyaW5nIHN0YXRlLiIpOwogICAgIH0KIAotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSAmJgotICAgICAgICBudW1mcmVlIDwgUHlVbmljb2RlX01BWEZSRUVMSVNUKSB7Ci0gICAgICAgIC8qIEtlZXAtQWxpdmUgb3B0aW1pemF0aW9uICovCi0gICAgICAgIGlmICh1bmljb2RlLT5sZW5ndGggPj0gS0VFUEFMSVZFX1NJWkVfTElNSVQpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RFTCh1bmljb2RlLT5zdHIpOwotICAgICAgICAgICAgdW5pY29kZS0+c3RyID0gTlVMTDsKLSAgICAgICAgICAgIHVuaWNvZGUtPmxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHVuaWNvZGUtPmRlZmVuYykgewotICAgICAgICAgICAgUHlfQ0xFQVIodW5pY29kZS0+ZGVmZW5jKTsKLSAgICAgICAgfQotICAgICAgICAvKiBBZGQgdG8gZnJlZSBsaXN0ICovCi0gICAgICAgICooUHlVbmljb2RlT2JqZWN0ICoqKXVuaWNvZGUgPSBmcmVlX2xpc3Q7Ci0gICAgICAgIGZyZWVfbGlzdCA9IHVuaWNvZGU7Ci0gICAgICAgIG51bWZyZWUrKzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0X0RFTCh1bmljb2RlLT5zdHIpOwotICAgICAgICBQeV9YREVDUkVGKHVuaWNvZGUtPmRlZmVuYyk7Ci0gICAgICAgIFB5X1RZUEUodW5pY29kZSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopdW5pY29kZSk7Ci0gICAgfQorICAgIGlmIChfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWSh1bmljb2RlKSkKKyAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKHVuaWNvZGUpKQorICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpKTsKKyAgICBpZiAoIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpICYmIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpCisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKTsKKworICAgIFB5X1RZUEUodW5pY29kZSktPnRwX2ZyZWUodW5pY29kZSk7CiB9CiAKLXN0YXRpYwotaW50IF9QeVVuaWNvZGVfUmVzaXplKFB5VW5pY29kZU9iamVjdCAqKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQorI2lmZGVmIFB5X0RFQlVHCitzdGF0aWMgaW50Cit1bmljb2RlX2lzX3NpbmdsZXRvbihQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnY7Ci0KLSAgICAvKiBBcmd1bWVudCBjaGVja3MgKi8KLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKHVuaWNvZGUgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGFzY2lpLT5zdGF0ZS5raW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EICYmIGFzY2lpLT5sZW5ndGggPT0gMSkKKyAgICB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIDApOworICAgICAgICBpZiAoY2ggPCAyNTYgJiYgdW5pY29kZV9sYXRpbjFbY2hdID09IHVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgdiA9ICp1bmljb2RlOwotICAgIGlmICh2ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeV9SRUZDTlQodikgIT0gMSB8fCBsZW5ndGggPCAwKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIHJldHVybiAwOworfQorI2VuZGlmCiAKLSAgICAvKiBSZXNpemluZyB1bmljb2RlX2VtcHR5IGFuZCBzaW5nbGUgY2hhcmFjdGVyIG9iamVjdHMgaXMgbm90Ci0gICAgICAgcG9zc2libGUgc2luY2UgdGhlc2UgYXJlIGJlaW5nIHNoYXJlZC4gV2Ugc2ltcGx5IHJldHVybiBhIGZyZXNoCi0gICAgICAgY29weSB3aXRoIHRoZSBzYW1lIFVuaWNvZGUgY29udGVudC4gKi8KLSAgICBpZiAodi0+bGVuZ3RoICE9IGxlbmd0aCAmJgotICAgICAgICAodiA9PSB1bmljb2RlX2VtcHR5IHx8IHYtPmxlbmd0aCA9PSAxKSkgewotICAgICAgICBQeVVuaWNvZGVPYmplY3QgKncgPSBfUHlVbmljb2RlX05ldyhsZW5ndGgpOwotICAgICAgICBpZiAodyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9VTklDT0RFX0NPUFkody0+c3RyLCB2LT5zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPCB2LT5sZW5ndGggPyBsZW5ndGggOiB2LT5sZW5ndGgpOwotICAgICAgICBQeV9ERUNSRUYoKnVuaWNvZGUpOwotICAgICAgICAqdW5pY29kZSA9IHc7CitzdGF0aWMgaW50Cit1bmljb2RlX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeV9SRUZDTlQodW5pY29kZSkgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSAhPSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiBzaW5nbGV0b24gcmVmY291bnQgaXMgZ3JlYXRlciB0aGFuIDEgKi8KKyAgICBhc3NlcnQoIXVuaWNvZGVfaXNfc2luZ2xldG9uKHVuaWNvZGUpKTsKKyNlbmRpZgorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX3Jlc2l6ZShQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfc3NpemVfdCBvbGRfbGVuZ3RoOworCisgICAgYXNzZXJ0KHBfdW5pY29kZSAhPSBOVUxMKTsKKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKworICAgIGFzc2VydCh1bmljb2RlICE9IE5VTEwpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpOworICAgIGFzc2VydCgwIDw9IGxlbmd0aCk7CisKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICBvbGRfbGVuZ3RoID0gUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGVsc2UKKyAgICAgICAgb2xkX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChvbGRfbGVuZ3RoID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKCpwX3VuaWNvZGUpOworICAgICAgICAqcF91bmljb2RlID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgUHlfSU5DUkVGKCpwX3VuaWNvZGUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBtb2RpZnkgKnVuaWNvZGUgZm9yIHVuc2hhcmVkIFVuaWNvZGUKLSAgICAgICBvYmplY3RzLCBzaW5jZSB3ZSBjYW4gbW9kaWZ5IHRoZW0gaW4tcGxhY2UuICovCi0gICAgcmV0dXJuIHVuaWNvZGVfcmVzaXplKHYsIGxlbmd0aCk7CisgICAgaWYgKCF1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKmNvcHkgPSByZXNpemVfY29weSh1bmljb2RlLCBsZW5ndGgpOworICAgICAgICBpZiAoY29weSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgICAgICpwX3VuaWNvZGUgPSBjb3B5OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKm5ld191bmljb2RlID0gcmVzaXplX2NvbXBhY3QodW5pY29kZSwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICpwX3VuaWNvZGUgPSBuZXdfdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXNpemVfaW5wbGFjZSh1bmljb2RlLCBsZW5ndGgpOwogfQogCi1pbnQgUHlVbmljb2RlX1Jlc2l6ZShQeU9iamVjdCAqKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoraW50CitQeVVuaWNvZGVfUmVzaXplKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKLSAgICByZXR1cm4gX1B5VW5pY29kZV9SZXNpemUoKFB5VW5pY29kZU9iamVjdCAqKil1bmljb2RlLCBsZW5ndGgpOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGlmIChwX3VuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgbGVuZ3RoIDwgMCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiB1bmljb2RlX3Jlc2l6ZShwX3VuaWNvZGUsIGxlbmd0aCk7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorc3RhdGljIGludAordW5pY29kZV93aWRlbihQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhjaGFyKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkoKnBfdW5pY29kZSkpOworICAgIGFzc2VydChsZW5ndGggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKnBfdW5pY29kZSkpOworICAgIGlmIChtYXhjaGFyIDw9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSgqcF91bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNoYXIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMCwgKnBfdW5pY29kZSwgMCwgbGVuZ3RoKTsKKyAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgKnBfdW5pY29kZSA9IHJlc3VsdDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordW5pY29kZV9wdXRjaGFyKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90ICpwb3MsCisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCkKK3sKKyAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgIGlmICh1bmljb2RlX3dpZGVuKHBfdW5pY29kZSwgKnBvcywgY2gpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoKnBfdW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICgqcG9zKSsrLCBjaCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvcHkgYSBBU0NJSSBvciBsYXRpbjEgY2hhciogc3RyaW5nIGludG8gYSBQeXRob24gVW5pY29kZSBzdHJpbmcuCisKKyAgIFdBUk5JTkc6IFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNvcHkgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyIGFuZAorICAgZG9lc24ndCBjaGVjayB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgKG1heSB3cml0ZSBhIGxhdGluMSBjaGFyYWN0ZXIgaW4gYW4KKyAgIEFTQ0lJIHN0cmluZykuICovCitzdGF0aWMgdm9pZAordW5pY29kZV93cml0ZV9jc3RyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHN0ciArIGxlbjsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsKKyAgICAgICAgYXNzZXJ0KGluZGV4ICsgbGVuIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICAgICAgbWVtY3B5KChjaGFyICopIGRhdGEgKyBpbmRleCwgc3RyLCBsZW4pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICBQeV9VQ1MyICpzdGFydCA9IChQeV9VQ1MyICopZGF0YSArIGluZGV4OworICAgICAgICBQeV9VQ1MyICp1Y3MyID0gc3RhcnQ7CisgICAgICAgIGFzc2VydChpbmRleCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICAgICAgZm9yICg7IHN0ciA8IGVuZDsgKyt1Y3MyLCArK3N0cikKKyAgICAgICAgICAgICp1Y3MyID0gKFB5X1VDUzIpKnN0cjsKKworICAgICAgICBhc3NlcnQoKHVjczIgLSBzdGFydCkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBQeV9VQ1M0ICpzdGFydCA9IChQeV9VQ1M0ICopZGF0YSArIGluZGV4OworICAgICAgICBQeV9VQ1M0ICp1Y3M0ID0gc3RhcnQ7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgYXNzZXJ0KGluZGV4IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKworICAgICAgICBmb3IgKDsgc3RyIDwgZW5kOyArK3VjczQsICsrc3RyKQorICAgICAgICAgICAgKnVjczQgPSAoUHlfVUNTNCkqc3RyOworCisgICAgICAgIGFzc2VydCgodWNzNCAtIHN0YXJ0KSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgfQorICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QqCitnZXRfbGF0aW4xX2NoYXIodW5zaWduZWQgY2hhciBjaCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xW2NoXTsKKyAgICBpZiAoIXVuaWNvZGUpIHsKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoMSwgY2gpOworICAgICAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSlbMF0gPSBjaDsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgICAgIHVuaWNvZGVfbGF0aW4xW2NoXSA9IHVuaWNvZGU7CisgICAgfQorICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhzaXplKTsKIAogICAgIC8qIElmIHRoZSBVbmljb2RlIGRhdGEgaXMga25vd24gYXQgY29uc3RydWN0aW9uIHRpbWUsIHdlIGNhbiBhcHBseQogICAgICAgIHNvbWUgb3B0aW1pemF0aW9ucyB3aGljaCBzaGFyZSBjb21tb25seSB1c2VkIG9iamVjdHMuICovCi0gICAgaWYgKHUgIT0gTlVMTCkgewogCi0gICAgICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGVfZW1wdHk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgb2JqZWN0cyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUKLSAgICAgICAgICAgc2hhcmVkIHdoZW4gdXNpbmcgdGhpcyBjb25zdHJ1Y3RvciAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAxICYmICp1IDwgMjU2KSB7Ci0gICAgICAgICAgICB1bmljb2RlID0gdW5pY29kZV9sYXRpbjFbKnVdOwotICAgICAgICAgICAgaWYgKCF1bmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KDEpOwotICAgICAgICAgICAgICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgdW5pY29kZS0+c3RyWzBdID0gKnU7Ci0gICAgICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbKnVdID0gdW5pY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotICAgICAgICB9CisgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7CisgICAgLyogU2luZ2xlIGNoYXJhY3RlciBVbmljb2RlIG9iamVjdHMgaW4gdGhlIExhdGluLTEgcmFuZ2UgYXJlCisgICAgICAgc2hhcmVkIHdoZW4gdXNpbmcgdGhpcyBjb25zdHJ1Y3RvciAqLworICAgIGlmIChzaXplID09IDEgJiYgKnUgPCAyNTYpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpKnUpOworCisgICAgLyogSWYgbm90IGVtcHR5IGFuZCBub3Qgc2luZ2xlIGNoYXJhY3RlciwgY29weSB0aGUgVW5pY29kZSBkYXRhCisgICAgICAgaW50byB0aGUgbmV3IG9iamVjdCAqLworICAgIGlmIChmaW5kX21heGNoYXJfc3Vycm9nYXRlcyh1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIsICZudW1fc3Vycm9nYXRlcykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSAtIG51bV9zdXJyb2dhdGVzLCBtYXhjaGFyKTsKICAgICBpZiAoIXVuaWNvZGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogQ29weSB0aGUgVW5pY29kZSBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSAgICBpZiAodSAhPSBOVUxMKQotICAgICAgICBQeV9VTklDT0RFX0NPUFkodW5pY29kZS0+c3RyLCB1LCBzaXplKTsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VOSUNPREUsIHVuc2lnbmVkIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUgKyBzaXplLCBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisjaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKKyAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CisjZWxzZQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogVGhpcyBpcyB0aGUgb25seSBjYXNlIHdoaWNoIGhhcyB0byBwcm9jZXNzIHN1cnJvZ2F0ZXMsIHRodXMKKyAgICAgICAgICAgYSBzaW1wbGUgY29weSBsb29wIGlzIG5vdCBlbm91Z2ggYW5kIHdlIG5lZWQgYSBmdW5jdGlvbi4gKi8KKyAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOworICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiSW1wb3NzaWJsZSBzdGF0ZSIpOworICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICp1LCBQeV9zc2l6ZV90IHNpemUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLQogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIC8qIElmIHRoZSBVbmljb2RlIGRhdGEgaXMga25vd24gYXQgY29uc3RydWN0aW9uIHRpbWUsIHdlIGNhbiBhcHBseQotICAgICAgIHNvbWUgb3B0aW1pemF0aW9ucyB3aGljaCBzaGFyZSBjb21tb25seSB1c2VkIG9iamVjdHMuCi0gICAgICAgQWxzbywgdGhpcyBtZWFucyB0aGUgaW5wdXQgbXVzdCBiZSBVVEYtOCwgc28gZmFsbCBiYWNrIHRvIHRoZQotICAgICAgIFVURi04IGRlY29kZXIgYXQgdGhlIGVuZC4gKi8KLSAgICBpZiAodSAhPSBOVUxMKSB7Ci0KLSAgICAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZV9lbXB0eTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNpbmdsZSBjaGFyYWN0ZXJzIGFyZSBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yLgotICAgICAgICAgICBSZXN0cmljdCB0byBBU0NJSSwgc2luY2UgdGhlIGlucHV0IG11c3QgYmUgVVRGLTguICovCi0gICAgICAgIGlmIChzaXplID09IDEgJiYgUHlfQ0hBUk1BU0soKnUpIDwgMTI4KSB7Ci0gICAgICAgICAgICB1bmljb2RlID0gdW5pY29kZV9sYXRpbjFbUHlfQ0hBUk1BU0soKnUpXTsKLSAgICAgICAgICAgIGlmICghdW5pY29kZSkgewotICAgICAgICAgICAgICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldygxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIHVuaWNvZGUtPnN0clswXSA9IFB5X0NIQVJNQVNLKCp1KTsKLSAgICAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVtQeV9DSEFSTUFTSygqdSldID0gdW5pY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHUsIHNpemUsIE5VTEwpOwotICAgIH0KLQotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKHUgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwodSwgc2l6ZSwgTlVMTCwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5VW5pY29kZV9OZXcoc2l6ZSk7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqdSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHN0cmxlbih1KTsKICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiaW5wdXQgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHUsIChQeV9zc2l6ZV90KXNpemUsIE5VTEwsIE5VTEwpOworfQogCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSh1LCBzaXplKTsKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyICppZCkKK3sKKyAgICBpZiAoIWlkLT5vYmplY3QpIHsKKyAgICAgICAgaWQtPm9iamVjdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoaWQtPnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGlkLT5zdHJpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFpZC0+b2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZpZC0+b2JqZWN0KTsKKyAgICAgICAgYXNzZXJ0KCFpZC0+bmV4dCk7CisgICAgICAgIGlkLT5uZXh0ID0gc3RhdGljX3N0cmluZ3M7CisgICAgICAgIHN0YXRpY19zdHJpbmdzID0gaWQ7CisgICAgfQorICAgIHJldHVybiBpZC0+b2JqZWN0OworfQorCit2b2lkCitfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncygpCit7CisgICAgX1B5X0lkZW50aWZpZXIgKnRtcCwgKnMgPSBzdGF0aWNfc3RyaW5nczsKKyAgICB3aGlsZSAocykgeworICAgICAgICBQeV9ERUNSRUYocy0+b2JqZWN0KTsKKyAgICAgICAgcy0+b2JqZWN0ID0gTlVMTDsKKyAgICAgICAgdG1wID0gcy0+bmV4dDsKKyAgICAgICAgcy0+bmV4dCA9IE5VTEw7CisgICAgICAgIHMgPSB0bXA7CisgICAgfQorICAgIHN0YXRpY19zdHJpbmdzID0gTlVMTDsKK30KKworLyogSW50ZXJuYWwgZnVuY3Rpb24sIGRvZXNuJ3QgY2hlY2sgbWF4aW11bSBjaGFyYWN0ZXIgKi8KKworUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21BU0NJSShjb25zdCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilidWZmZXI7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaWYgKHNpemUgPT0gMSkgeworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIGFzc2VydChzWzBdIDwgMTI4KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKHNbMF0pOworICAgIH0KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtY3B5KFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCBzLCBzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5X1VDUzQKK2tpbmRfbWF4Y2hhcl9saW1pdCh1bnNpZ25lZCBpbnQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHg4MDsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHgxMDA7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4MTAwMDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gTUFYX1VOSUNPREU7CisgICAgfQorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK2FsaWduX21heGNoYXIoUHlfVUNTNCBtYXhjaGFyKQoreworICAgIGlmIChtYXhjaGFyIDw9IDEyNykKKyAgICAgICAgcmV0dXJuIDEyNzsKKyAgICBlbHNlIGlmIChtYXhjaGFyIDw9IDI1NSkKKyAgICAgICAgcmV0dXJuIDI1NTsKKyAgICBlbHNlIGlmIChtYXhjaGFyIDw9IDY1NTM1KQorICAgICAgICByZXR1cm4gNjU1MzU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTUFYX1VOSUNPREU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzEoY29uc3QgdW5zaWduZWQgY2hhciogdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgdW5zaWduZWQgY2hhciBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKHVbMF0pOworCisgICAgbWF4X2NoYXIgPSB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1jcHkoUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21VQ1MyKGNvbnN0IFB5X1VDUzIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X1VDUzIgbWF4X2NoYXI7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gdVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIG1heF9jaGFyID0gdWNzMmxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG1heF9jaGFyID49IDI1NikKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHJlcyksIHUsIHNpemVvZihQeV9VQ1MyKSpzaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTMSwgdSwgdSArIHNpemUsIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzQoY29uc3QgUHlfVUNTNCAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSB1WzBdOworICAgICAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKWNoKTsKKworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXMpLCBQeVVuaWNvZGVfREFUQShyZXMpLCAwLCBjaCk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgbWF4X2NoYXIgPSB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobWF4X2NoYXIgPCAyNTYpCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MxLCB1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIGVsc2UgaWYgKG1heF9jaGFyIDwgMHgxMDAwMCkKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzQsIFB5X1VDUzIsIHUsIHUgKyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocmVzKSk7CisgICAgZWxzZQorICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzRCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZW9mKFB5X1VDUzQpKnNpemUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzaXplIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKGJ1ZmZlciwgc2l6ZSk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbVVDUzIoYnVmZmVyLCBzaXplKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTNChidWZmZXIsIHNpemUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK1B5X1VDUzQKK19QeVVuaWNvZGVfRmluZE1heENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpzdGFydHB0ciwgKmVuZHB0cjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydCgwIDw9IHN0YXJ0KTsKKyAgICBhc3NlcnQoZW5kIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoc3RhcnQgPD0gZW5kKTsKKworICAgIGlmIChzdGFydCA9PSAwICYmIGVuZCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKTsKKworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiAxMjc7CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMTI3OworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIHN0YXJ0cHRyID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgZW5kcHRyID0gKGNoYXIgKilzdGFydHB0ciArIGVuZCAqIGtpbmQ7CisgICAgc3RhcnRwdHIgPSAoY2hhciAqKXN0YXJ0cHRyICsgc3RhcnQgKiBraW5kOworICAgIHN3aXRjaChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczFsaWJfZmluZF9tYXhfY2hhcihzdGFydHB0ciwgZW5kcHRyKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl9maW5kX21heF9jaGFyKHN0YXJ0cHRyLCBlbmRwdHIpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIoc3RhcnRwdHIsIGVuZHB0cik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIEVuc3VyZSB0aGF0IGEgc3RyaW5nIHVzZXMgdGhlIG1vc3QgZWZmaWNpZW50IHN0b3JhZ2UsIGlmIGl0IGlzIG5vdCB0aGUKKyAgIGNhc2U6IGNyZWF0ZSBhIG5ldyBzdHJpbmcgd2l0aCBvZiB0aGUgcmlnaHQga2luZC4gV3JpdGUgTlVMTCBpbnRvICpwX3VuaWNvZGUKKyAgIG9uIGVycm9yLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfYWRqdXN0X21heGNoYXIoUHlPYmplY3QgKipwX3VuaWNvZGUpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpjb3B5OworICAgIFB5X1VDUzQgbWF4X2NoYXI7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisKKyAgICBhc3NlcnQocF91bmljb2RlICE9IE5VTEwpOworICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1MxICp1ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzIgKnUgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3MybGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAyNTYpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjb25zdCBQeV9VQ1M0ICp1ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAweDEwMDAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb3B5ID0gUHlVbmljb2RlX05ldyhsZW4sIG1heF9jaGFyKTsKKyAgICBpZiAoY29weSAhPSBOVUxMKQorICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhjb3B5LCAwLCB1bmljb2RlLCAwLCBsZW4pOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAqcF91bmljb2RlID0gY29weTsKK30KKworUHlPYmplY3QqCitfUHlVbmljb2RlX0NvcHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgY29weSA9IFB5VW5pY29kZV9OZXcobGVuZ3RoLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpOworICAgIGlmICghY29weSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKKworICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgIGxlbmd0aCAqIFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KGNvcHksIDEpKTsKKyAgICByZXR1cm4gY29weTsKK30KKworCisvKiBXaWRlbiBVbmljb2RlIG9iamVjdHMgdG8gbGFyZ2VyIGJ1ZmZlcnMuIERvbid0IHdyaXRlIHRlcm1pbmF0aW5nIG51bGwKKyAgIGNoYXJhY3Rlci4gUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCisKK3ZvaWQqCitfUHlVbmljb2RlX0FzS2luZChQeU9iamVjdCAqcywgdW5zaWduZWQgaW50IGtpbmQpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgdm9pZCAqcmVzdWx0OworICAgIHVuc2lnbmVkIGludCBza2luZDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CisgICAgc2tpbmQgPSBQeVVuaWNvZGVfS0lORChzKTsKKyAgICBpZiAoc2tpbmQgPj0ga2luZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIHdpZGVuaW5nIGF0dGVtcHQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTMikpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBhc3NlcnQoc2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1MyLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocyksCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGlmIChza2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzQsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChza2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTNCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQga2luZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlfVUNTNCoKK2FzX3VjczQoUHlPYmplY3QgKnN0cmluZywgUHlfVUNTNCAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldHNpemUsCisgICAgICAgIGludCBjb3B5X251bGwpCit7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgdGFyZ2V0bGVuOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKKyAgICB0YXJnZXRsZW4gPSBsZW47CisgICAgaWYgKGNvcHlfbnVsbCkKKyAgICAgICAgdGFyZ2V0bGVuKys7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VDUzQpIDwgdGFyZ2V0bGVuKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ID0gUHlNZW1fTWFsbG9jKHRhcmdldGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0YXJnZXRzaXplIDwgdGFyZ2V0bGVuKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBpcyBsb25nZXIgdGhhbiB0aGUgYnVmZmVyIik7CisgICAgICAgICAgICBpZiAoY29weV9udWxsICYmIDAgPCB0YXJnZXRzaXplKQorICAgICAgICAgICAgICAgIHRhcmdldFswXSA9IDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpzdGFydCA9IChQeV9VQ1MxICopIGRhdGE7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1MxLCBQeV9VQ1M0LCBzdGFydCwgc3RhcnQgKyBsZW4sIHRhcmdldCk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqc3RhcnQgPSAoUHlfVUNTMiAqKSBkYXRhOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTMiwgUHlfVUNTNCwgc3RhcnQsIHN0YXJ0ICsgbGVuLCB0YXJnZXQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBQeV9NRU1DUFkodGFyZ2V0LCBkYXRhLCBsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgIH0KKyAgICBpZiAoY29weV9udWxsKQorICAgICAgICB0YXJnZXRbbGVuXSA9IDA7CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworUHlfVUNTNCoKK1B5VW5pY29kZV9Bc1VDUzQoUHlPYmplY3QgKnN0cmluZywgUHlfVUNTNCAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldHNpemUsCisgICAgICAgICAgICAgICAgIGludCBjb3B5X251bGwpCit7CisgICAgaWYgKHRhcmdldCA9PSBOVUxMIHx8IHRhcmdldHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzX3VjczQoc3RyaW5nLCB0YXJnZXQsIHRhcmdldHNpemUsIGNvcHlfbnVsbCk7Cit9CisKK1B5X1VDUzQqCitQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqc3RyaW5nKQoreworICAgIHJldHVybiBhc191Y3M0KHN0cmluZywgTlVMTCwgMCwgMSk7CiB9CiAKICNpZmRlZiBIQVZFX1dDSEFSX0gKIAotI2lmIChQeV9VTklDT0RFX1NJWkUgPT0gMikgJiYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCi0jIGRlZmluZSBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMKLSNlbmRpZgotCi0jaWZkZWYgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCi0KLS8qIEhlcmUgc2l6ZW9mKHdjaGFyX3QpIGlzIDQgYnV0IFB5X1VOSUNPREVfU0laRSA9PSAyLCBzbyB3ZSBuZWVkCi0gICB0byBjb252ZXJ0IGZyb20gVVRGMzIgdG8gVVRGMTYuICovCi0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIFB5X3NzaXplX3QgYWxsb2M7Ci0gICAgY29uc3Qgd2NoYXJfdCAqb3JpZ193OwotCiAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIHNpemUgPSB3Y3NsZW4odyk7Ci0gICAgfQotCi0gICAgYWxsb2MgPSBzaXplOwotICAgIG9yaWdfdyA9IHc7Ci0gICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgewotICAgICAgICBpZiAoKncgPiAweEZGRkYpCi0gICAgICAgICAgICBhbGxvYysrOwotICAgICAgICB3Kys7Ci0gICAgfQotICAgIHcgPSBvcmlnX3c7Ci0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KGFsbG9jKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogQ29weSB0aGUgd2NoYXJfdCBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnU7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgewotICAgICAgICAgICAgaWYgKCp3ID4gMHhGRkZGKSB7Ci0gICAgICAgICAgICAgICAgd2NoYXJfdCBvcmRpbmFsID0gKncrKzsKLSAgICAgICAgICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgKnUrKyA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqdSsrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKnUrKyA9ICp3Kys7CisgICAgICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotfQotCi0jZWxzZQotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQotewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLQotICAgIGlmICh3ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02NDcsMjkgKzIyNjEsMTAgQEAKICAgICAgICAgc2l6ZSA9IHdjc2xlbih3KTsKICAgICB9CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENvcHkgdGhlIHdjaGFyX3QgZGF0YSBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgbWVtY3B5KHVuaWNvZGUtPnN0ciwgdywgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdTsKLSAgICAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pCi0gICAgICAgICAgICAqdSsrID0gKncrKzsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodywgc2l6ZSk7CiB9CiAKLSNlbmRpZiAvKiBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMgKi8KLQotI3VuZGVmIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUworI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCiBzdGF0aWMgdm9pZAogbWFrZWZtdChjaGFyICpmbXQsIGludCBsb25nZmxhZywgaW50IGxvbmdsb25nZmxhZywgaW50IHNpemVfdGZsYWcsCkBAIC03MDcsMTAgKzIzMDIsNzEgQEAKICAgICAqZm10ID0gJ1wwJzsKIH0KIAotI2RlZmluZSBhcHBlbmRzdHJpbmcoc3RyaW5nKSB7Zm9yIChjb3B5ID0gc3RyaW5nOypjb3B5OykgKnMrKyA9ICpjb3B5Kys7fQorLyogaGVscGVyIGZvciBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSAqLwogCi0vKiBzaXplIG9mIGZpeGVkLXNpemUgYnVmZmVyIGZvciBmb3JtYXR0aW5nIHNpbmdsZSBhcmd1bWVudHMgKi8KLSNkZWZpbmUgSVRFTV9CVUZGRVJfTEVOIDIxCitzdGF0aWMgY29uc3QgY2hhcioKK3BhcnNlX2Zvcm1hdF9mbGFncyhjb25zdCBjaGFyICpmLAorICAgICAgICAgICAgICAgICAgIGludCAqcF93aWR0aCwgaW50ICpwX3ByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgKnBfbG9uZ2ZsYWcsIGludCAqcF9sb25nbG9uZ2ZsYWcsIGludCAqcF9zaXplX3RmbGFnKQoreworICAgIGludCB3aWR0aCwgcHJlY2lzaW9uLCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnOworCisgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0LCBlLmcuICIlMi41cyIgPT4gd2lkdGg9MiwgcHJlY2lzaW9uPTUgKi8KKyAgICBmKys7CisgICAgd2lkdGggPSAwOworICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCisgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7CisgICAgcHJlY2lzaW9uID0gMDsKKyAgICBpZiAoKmYgPT0gJy4nKSB7CisgICAgICAgIGYrKzsKKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKKyAgICAgICAgICAgIHByZWNpc2lvbiA9IChwcmVjaXNpb24qMTApICsgKmYrKyAtICcwJzsKKyAgICAgICAgaWYgKCpmID09ICclJykgeworICAgICAgICAgICAgLyogIiUuMyVzIiA9PiBmIHBvaW50cyB0byAiMyIgKi8KKyAgICAgICAgICAgIGYtLTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoKmYgPT0gJ1wwJykgeworICAgICAgICAvKiBib2d1cyBmb3JtYXQgIiUuMSIgPT4gZ28gYmFja3dhcmQsIGYgcG9pbnRzIHRvICIxIiAqLworICAgICAgICBmLS07CisgICAgfQorICAgIGlmIChwX3dpZHRoICE9IE5VTEwpCisgICAgICAgICpwX3dpZHRoID0gd2lkdGg7CisgICAgaWYgKHBfcHJlY2lzaW9uICE9IE5VTEwpCisgICAgICAgICpwX3ByZWNpc2lvbiA9IHByZWNpc2lvbjsKKworICAgIC8qIEhhbmRsZSAlbGQsICVsdSwgJWxsZCBhbmQgJWxsdS4gKi8KKyAgICBsb25nZmxhZyA9IDA7CisgICAgbG9uZ2xvbmdmbGFnID0gMDsKKyAgICBzaXplX3RmbGFnID0gMDsKKworICAgIGlmICgqZiA9PSAnbCcpIHsKKyAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSB7CisgICAgICAgICAgICBsb25nZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICBlbHNlIGlmIChmWzFdID09ICdsJyAmJgorICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScgfHwgZlsyXSA9PSAnaScpKSB7CisgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgZiArPSAyOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KKyAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSkgeworICAgICAgICBzaXplX3RmbGFnID0gMTsKKyAgICAgICAgKytmOworICAgIH0KKyAgICBpZiAocF9sb25nZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9sb25nZmxhZyA9IGxvbmdmbGFnOworICAgIGlmIChwX2xvbmdsb25nZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9sb25nbG9uZ2ZsYWcgPSBsb25nbG9uZ2ZsYWc7CisgICAgaWYgKHBfc2l6ZV90ZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9zaXplX3RmbGFnID0gc2l6ZV90ZmxhZzsKKyAgICByZXR1cm4gZjsKK30KKwogLyogbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCBmb3Igb3V0cHV0IG9mICVsZC4gIDIxIGNoYXJhY3RlcnMKICAgIGFsbG93cyBmb3IgNjQtYml0IGludGVnZXJzIChpbiBkZWNpbWFsKSBhbmQgYW4gb3B0aW9uYWwgc2lnbi4gKi8KICNkZWZpbmUgTUFYX0xPTkdfQ0hBUlMgMjEKQEAgLTczMSwxMDYgKzIzODcsMzUgQEAKICAgICBpbnQgcHJlY2lzaW9uID0gMDsKICAgICBpbnQgemVyb3BhZDsKICAgICBjb25zdCBjaGFyKiBmOwotICAgIFB5X1VOSUNPREUgKnM7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICAvKiB1c2VkIGJ5IHNwcmludGYgKi8KLSAgICBjaGFyIGJ1ZmZlcltJVEVNX0JVRkZFUl9MRU4rMV07Ci0gICAgLyogdXNlIGFidWZmZXIgaW5zdGVhZCBvZiBidWZmZXIsIGlmIHdlIG5lZWQgbW9yZSBzcGFjZQotICAgICAqICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZXJlJ3MgYSBmb3JtYXQgc3BlY2lmaWVyIHdpdGggd2lkdGgpLiAqLwotICAgIGNoYXIgKmFidWZmZXIgPSBOVUxMOwotICAgIGNoYXIgKnJlYWxidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBhYnVmZmVyc2l6ZSA9IDA7CiAgICAgY2hhciBmbXRbNjFdOyAvKiBzaG91bGQgYmUgZW5vdWdoIGZvciAlMHdpZHRoLnByZWNpc2lvbmxsZCAqLwotICAgIGNvbnN0IGNoYXIgKmNvcHk7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OyAvKiByZXN1bHQgaXMgQVNDSUkgYnkgZGVmYXVsdCAqLworICAgIFB5X1VDUzQgYXJnbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IG51bWJlcnNpemUgPSAwOworICAgIGNoYXIgKm51bWJlcnJlc3VsdHMgPSBOVUxMOworICAgIGNoYXIgKm51bWJlcnJlc3VsdCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBQeV9WQV9DT1BZKGNvdW50LCB2YXJncyk7CiAgICAgLyogc3RlcCAxOiBjb3VudCB0aGUgbnVtYmVyIG9mICVTLyVSLyVBLyVzIGZvcm1hdCBzcGVjaWZpY2F0aW9ucwogICAgICAqICh3ZSBjYWxsIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeU9iamVjdF9BU0NJSSgpLwogICAgICAqIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgZm9yIHRoZXNlIG9iamVjdHMgb25jZSBkdXJpbmcgc3RlcCAzIGFuZCBwdXQgdGhlCi0gICAgICogcmVzdWx0IGluIGFuIGFycmF5KSAqLwotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgIGlmICgqKGYrMSk9PSclJykKLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgaWYgKCooZisxKT09J1MnIHx8ICooZisxKT09J1InIHx8ICooZisxKT09J0EnIHx8ICooZisxKSA9PSAnVicpCi0gICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwotICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICAgd2hpbGUgKCorK2YgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgICBpZiAoKmYgPT0gJ3MnKQotICAgICAgICAgICAgICAgICArK2NhbGxjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYgKDEyOCA8PSAodW5zaWduZWQgY2hhcikqZikgewotICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAic3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHglMDJ4IiwKLSAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikqZik7Ci0gICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICB9Ci0gICAgfQotICAgIC8qIHN0ZXAgMjogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZgotICAgICAqIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGNhbGxzICovCi0gICAgaWYgKGNhbGxjb3VudCkgewotICAgICAgICBjYWxscmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikqY2FsbGNvdW50KTsKLSAgICAgICAgaWYgKCFjYWxscmVzdWx0cykgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKLSAgICB9Ci0gICAgLyogc3RlcCAzOiBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCisgICAgICogcmVzdWx0IGluIGFuIGFycmF5KQorICAgICAqIGFsc28gZXN0aW1hdGUgYSB1cHBlciBib3VuZCBmb3IgYWxsIHRoZSBudW1iZXIgZm9ybWF0cyBpbiB0aGUgc3RyaW5nLAorICAgICAqIG51bWJlcnMgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gc3RlcCAzIGFuZCBiZSBrZXB0IGluIGEgJ1wwJy1zZXBhcmF0ZWQKKyAgICAgKiBidWZmZXIgYmVmb3JlIHB1dHRpbmcgZXZlcnl0aGluZyB0b2dldGhlci4gKi8KICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnID0gMDsKLSNlbmRpZgotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGY7Ci0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnOworICAgICAgICAgICAgLyogc2tpcCB3aWR0aCBvciB3aWR0aC5wcmVjaXNpb24gKGVnLiAiMS4yIiBvZiAiJTEuMmYiKSAqLworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsIE5VTEwsIE5VTEwsICZsb25nbG9uZ2ZsYWcsIE5VTEwpOworICAgICAgICAgICAgaWYgKCpmID09ICdzJyB8fCAqZj09J1MnIHx8ICpmPT0nUicgfHwgKmY9PSdBJyB8fCAqZj09J1YnKQorICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwogCi0gICAgICAgICAgICAvKiBza2lwIHRoZSAnbCcgb3IgJ3onIGluIHslbGQsICV6ZCwgJWx1LCAlenV9IHNpbmNlCi0gICAgICAgICAgICAgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICBmICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGludCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKQotICAgICAgICAgICAgICAgICAgICBuICs9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuKys7Ci0jZWxzZQotICAgICAgICAgICAgICAgICh2b2lkKXZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBuKys7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICd1JzogY2FzZSAnaSc6IGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7CisgICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAnZCcgfHwgKmY9PSd1JyB8fCAqZj09J2knIHx8ICpmPT0neCcgfHwgKmY9PSdwJykgewogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgaWYgKGxvbmdsb25nZmxhZykgewogICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCBNQVhfTE9OR19MT05HX0NIQVJTKQpAQCAtODQ0LDE5ICsyNDI5LDE1NSBAQAogICAgICAgICAgICAgICAgICAgICAgICBuZWVkIG1vcmUgKHdoaWNoIHdlIGFsbG9jYXRlIGxhdGVyKS4gKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgTUFYX0xPTkdfQ0hBUlMpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IE1BWF9MT05HX0NIQVJTOwotICAgICAgICAgICAgICAgIG4gKz0gd2lkdGg7Ci0gICAgICAgICAgICAgICAgLyogWFhYIHNob3VsZCBhbGxvdyBmb3IgbGFyZ2UgcHJlY2lzaW9uIGhlcmUgdG9vLiAqLwotICAgICAgICAgICAgICAgIGlmIChhYnVmZmVyc2l6ZSA8IHdpZHRoKQotICAgICAgICAgICAgICAgICAgICBhYnVmZmVyc2l6ZSA9IHdpZHRoOworCisgICAgICAgICAgICAgICAgLyogYWNjb3VudCBmb3IgdGhlIHNpemUgKyAnXDAnIHRvIHNlcGFyYXRlIG51bWJlcnMKKyAgICAgICAgICAgICAgICAgICBpbnNpZGUgb2YgdGhlIG51bWJlcnJlc3VsdHMgYnVmZmVyICovCisgICAgICAgICAgICAgICAgbnVtYmVyc2l6ZSArPSAod2lkdGggKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgodW5zaWduZWQgY2hhcikqZiA+IDEyNykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSpmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIC8qIHN0ZXAgMjogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZgorICAgICAqIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGNhbGxzICovCisgICAgaWYgKGNhbGxjb3VudCkgeworICAgICAgICBjYWxscmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikgKiBjYWxsY291bnQpOworICAgICAgICBpZiAoIWNhbGxyZXN1bHRzKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOworICAgIH0KKyAgICAvKiBzdGVwIDIuNTogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZiBmb3JtYXRpbmcgbnVtYmVycyAqLworICAgIGlmIChudW1iZXJzaXplKSB7CisgICAgICAgIG51bWJlcnJlc3VsdHMgPSBQeU9iamVjdF9NYWxsb2MobnVtYmVyc2l6ZSk7CisgICAgICAgIGlmICghbnVtYmVycmVzdWx0cykgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOworICAgIH0KKworICAgIC8qIHN0ZXAgMzogZm9ybWF0IG51bWJlcnMgYW5kIGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KKyAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKKyAgICAgICAgaWYgKCpmID09ICclJykgeworICAgICAgICAgICAgY29uc3QgY2hhciogcDsKKyAgICAgICAgICAgIGludCBsb25nZmxhZzsKKyAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWc7CisgICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAgICAgICAgIGludCBudW1wcmludGVkOworCisgICAgICAgICAgICBwID0gZjsKKyAgICAgICAgICAgIHplcm9wYWQgPSAoZlsxXSA9PSAnMCcpOworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsICZwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb25nZmxhZywgJmxvbmdsb25nZmxhZywgJnNpemVfdGZsYWcpOworICAgICAgICAgICAgc3dpdGNoICgqZikgeworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBvcmRpbmFsKTsKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgKmYpOworICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIFB5X3NzaXplX3QpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIGludCkpOworICAgICAgICAgICAgICAgIG4gKz0gbnVtcHJpbnRlZDsKKyAgICAgICAgICAgICAgICAvKiBhZHZhbmNlIGJ5ICsxIHRvIHNraXAgb3ZlciB0aGUgJ1wwJyAqLworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAndScpOworICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHNpemVfdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsIHplcm9wYWQsIHdpZHRoLCBwcmVjaXNpb24sICd4Jyk7CisgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsIHZhX2FyZyhjb3VudCwgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCAiJXAiLCB2YV9hcmcoY291bnQsIHZvaWQqKSk7CisgICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KKyAgICAgICAgICAgICAgICBpZiAobnVtYmVycmVzdWx0WzFdID09ICdYJykKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzFdID0gJ3gnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bWJlcnJlc3VsdFsxXSAhPSAneCcpIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShudW1iZXJyZXN1bHQgKyAyLCBudW1iZXJyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG51bWJlcnJlc3VsdCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzBdID0gJzAnOworICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMV0gPSAneCc7CisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgKz0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTggKi8KICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gdmFfYXJnKGNvdW50LCBjb25zdCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHN0cmxlbihzKSwgInJlcGxhY2UiKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzdHJsZW4ocyksICJyZXBsYWNlIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHIpOworICAgICAgICAgICAgICAgIC8qIHNpbmNlIFB5VW5pY29kZV9EZWNvZGVVVEY4IHJldHVybnMgYWxyZWFkeSBmbGV4aWJsZQorICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgb2JqZWN0cywgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHJlYWR5IG9uIHRoZW0gKi8KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgc3RyIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NjQsOCArMjU4NSwxMiBAQAogICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyhjb3VudCwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG9iaiAmJiBQeVVuaWNvZGVfQ2hlY2sob2JqKSk7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQob2JqICYmIF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvYmopOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdWJzoKQEAgLTg3NCwxNiArMjU5OSwyNiBAQAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IHZhX2FyZyhjb3VudCwgY29uc3QgY2hhciAqKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyX29iajsKICAgICAgICAgICAgICAgICBhc3NlcnQob2JqIHx8IHN0cik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFvYmogfHwgUHlVbmljb2RlX0NoZWNrKG9iaikpOworICAgICAgICAgICAgICAgIGFzc2VydCghb2JqIHx8IF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyX29iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaik7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cl9vYmopOworICAgICAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CiAgICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHJfb2JqOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg5Niw3ICsyNjMxLDEzIEBACiAgICAgICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHIpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgc3RyIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MDksNyArMjY1MCwxMyBAQAogICAgICAgICAgICAgICAgIHJlcHIgPSBQeU9iamVjdF9SZXByKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXByKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwcik7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXByKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXByKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgcmVwciBhbmQgc3dpdGNoIHRvIHRoZSBuZXh0IHNsb3QgKi8KICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gcmVwcjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkyMiwyMCArMjY2OSwxNyBAQAogICAgICAgICAgICAgICAgIGFzY2lpID0gUHlPYmplY3RfQVNDSUkob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIWFzY2lpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoYXNjaWkpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXNjaWkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhc2NpaSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShhc2NpaSk7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXNjaWkpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSByZXByIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBhc2NpaTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogbWF4aW11bSA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgKiAweGZmZmZmZmZmZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgKiBzbyAxOSBjaGFyYWN0ZXJzIGlzIGVub3VnaC4KLSAgICAgICAgICAgICAgICAgKiBYWFggSSBjb3VudCAxOCAtLSB3aGF0J3MgdGhlIGV4dHJhIGZvcj8KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuICs9IDE5OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgogICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgpAQCAtOTUwLDEyNyArMjY5NCw2OCBAQAogICAgICAgICAgICAgbisrOwogICAgIH0KICAgZXhwYW5kOgotICAgIGlmIChhYnVmZmVyc2l6ZSA+IElURU1fQlVGRkVSX0xFTikgewotICAgICAgICAvKiBhZGQgMSBmb3Igc3ByaW50ZidzIHRyYWlsaW5nIG51bGwgYnl0ZSAqLwotICAgICAgICBhYnVmZmVyID0gUHlPYmplY3RfTWFsbG9jKGFidWZmZXJzaXplICsgMSk7Ci0gICAgICAgIGlmICghYWJ1ZmZlcikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICByZWFsYnVmZmVyID0gYWJ1ZmZlcjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZWFsYnVmZmVyID0gYnVmZmVyOwogICAgIC8qIHN0ZXAgNDogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCBmb3IgdGhlIHdvcnN0IGNhc2UsCisgICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCwKICAgICAgICB3ZSBkb24ndCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nLgogICAgICAgIFRoZXJlIGNhbiBiZSBubyBlcnJvcnMgYmV5b25kIHRoaXMgcG9pbnQuICovCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG4pOworICAgIHN0cmluZyA9IFB5VW5pY29kZV9OZXcobiwgbWF4Y2hhcik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIGdvdG8gZmFpbDsKLQotICAgIHMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwogICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKKyAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOwogCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7CisgICAgZm9yIChpID0gMCwgZiA9IGZvcm1hdDsgKmY7IGYrKykgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZisrOwotICAgICAgICAgICAgaW50IGxvbmdmbGFnID0gMDsKLSAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWcgPSAwOwotICAgICAgICAgICAgemVyb3BhZCA9ICgqZiA9PSAnMCcpOwotICAgICAgICAgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0ICovCi0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICBwcmVjaXNpb24gPSAwOwotICAgICAgICAgICAgaWYgKCpmID09ICcuJykgewotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSAocHJlY2lzaW9uKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBIYW5kbGUgJWxkLCAlbHUsICVsbGQgYW5kICVsbHUuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICBmICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgY2hhciogcDsKKworICAgICAgICAgICAgcCA9IGY7CisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgLyogY2hlY2tpbmcgZm9yID09IGJlY2F1c2UgdGhlIGxhc3QgYXJndW1lbnQgY291bGQgYmUgYSBlbXB0eQorICAgICAgICAgICAgICAgc3RyaW5nLCB3aGljaCBjYXVzZXMgaSB0byBwb2ludCB0byBlbmQsIHRoZSBhc3NlcnQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgdGhlIGxvb3AgKi8KKyAgICAgICAgICAgIGFzc2VydChpIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogCiAgICAgICAgICAgICBzd2l0Y2ggKCpmKSB7CiAgICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgb3JkaW5hbCA9IHZhX2FyZyh2YXJncywgaW50KTsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKG9yZGluYWwgPiAweGZmZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcysrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICAgICAqcysrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAqcysrID0gb3JkaW5hbDsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgb3JkaW5hbCA9IHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSsrLCBvcmRpbmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgJ2QnKTsKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICd1Jyk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCAwLCAwLCAwLCB6ZXJvcGFkLCB3aWR0aCwgcHJlY2lzaW9uLCAnaScpOwotICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ3gnKTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCisgICAgICAgICAgICAgICAgaWYgKCpmID09ICdwJykKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICAgICAgLyogZXh0cmFjdCB0aGUgcmVzdWx0IGZyb20gbnVtYmVycmVzdWx0cyBhbmQgYXBwZW5kLiAqLworICAgICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihudW1iZXJyZXN1bHQpOworICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIG51bWJlcnJlc3VsdCwgbGVuKTsKKyAgICAgICAgICAgICAgICAvKiBza2lwIG92ZXIgdGhlIHNlcGFyYXRpbmcgJ1wwJyAqLworICAgICAgICAgICAgICAgIGkgKz0gbGVuOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSBsZW47CisgICAgICAgICAgICAgICAgYXNzZXJ0KCpudW1iZXJyZXN1bHQgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0Kys7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwogICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGNoYXIgKik7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKCpjYWxscmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB1bmljb2RlKCkvcmVwcigpID0+IGZvcmdldCBpdCAqLwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIG5leHQgdW5pY29kZSgpL3JlcHIoKSByZXN1bHQgKi8KQEAgLTEwODAsMjMgKzI3NjUsMjkgQEAKICAgICAgICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLCBzaXplKTsKLSAgICAgICAgICAgICAgICBzICs9IHNpemU7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChvYmopIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgb2JqLCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdWJzoKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7CiAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgICAgIGlmIChvYmopIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLCBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcyArPSBzaXplOworICAgICAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKG9iaikgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgb2JqLCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqY2FsbHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICAgICAgcyArPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCAqY2FsbHJlc3VsdCwgMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgKytjYWxscmVzdWx0OwpAQCAtMTEwNiw1MiArMjc5Nyw0NCBAQAogICAgICAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICp1Y29weTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVzaXplOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdXBvczsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogdW51c2VkLCBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCAqLwogICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIHVjb3B5ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKmNhbGxyZXN1bHQpOwotICAgICAgICAgICAgICAgIHVzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICBmb3IgKHVwb3MgPSAwOyB1cG9zPHVzaXplOykKLSAgICAgICAgICAgICAgICAgICAgKnMrKyA9IHVjb3B5W3Vwb3MrK107CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCAgc2l6ZSk7CisgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdW5pY29kZSgpL3JlcHIoKSA9PiBmb3JnZXQgaXQgKi8KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIC8qIHN3aXRjaCB0byBuZXh0IHVuaWNvZGUoKS9yZXByKCkgcmVzdWx0ICovCiAgICAgICAgICAgICAgICAgKytjYWxscmVzdWx0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKLSAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLwotICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyWzFdICE9ICd4JykgewotICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlcisyLCBidWZmZXIsIHN0cmxlbihidWZmZXIpKzEpOwotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssICclJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhwKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IHN0cmxlbihwKTsKKyAgICAgICAgICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIoc3RyaW5nLCBpLCBwLCBsZW4pOworICAgICAgICAgICAgICAgIGkgKz0gbGVuOworICAgICAgICAgICAgICAgIGFzc2VydChpID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGkrKywgKmYpOworICAgICAgICB9CiAgICAgfQorICAgIGFzc2VydChpID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogCiAgIGVuZDoKICAgICBpZiAoY2FsbHJlc3VsdHMpCiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoY2FsbHJlc3VsdHMpOwotICAgIGlmIChhYnVmZmVyKQotICAgICAgICBQeU9iamVjdF9GcmVlKGFidWZmZXIpOwotICAgIFB5VW5pY29kZV9SZXNpemUoJnN0cmluZywgcyAtIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZykpOwotICAgIHJldHVybiBzdHJpbmc7CisgICAgaWYgKG51bWJlcnJlc3VsdHMpCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobnVtYmVycmVzdWx0cyk7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHN0cmluZyk7CiAgIGZhaWw6CiAgICAgaWYgKGNhbGxyZXN1bHRzKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY2FsbHJlc3VsdDIgPSBjYWxscmVzdWx0czsKQEAgLTExNjEsMTMgKzI4NDQsMTEgQEAKICAgICAgICAgfQogICAgICAgICBQeU9iamVjdF9GcmVlKGNhbGxyZXN1bHRzKTsKICAgICB9Ci0gICAgaWYgKGFidWZmZXIpCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoYWJ1ZmZlcik7CisgICAgaWYgKG51bWJlcnJlc3VsdHMpCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobnVtYmVycmVzdWx0cyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBhcHBlbmRzdHJpbmcKLQogUHlPYmplY3QgKgogUHlVbmljb2RlX0Zyb21Gb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CkBAIC0xMTg0LDYgKzI4NjUsOCBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKyNpZmRlZiBIQVZFX1dDSEFSX0gKKwogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpIGFuZCBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpOgogICAgY29udmVydCBhIFVuaWNvZGUgb2JqZWN0IHRvIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLgogCkBAIC0xMTk0LDEwMyArMjg3NywyNyBAQAogICAgICBjaGFyYWN0ZXIpIHdyaXR0ZW4gaW50byB3LiBXcml0ZSBhdCBtb3N0IHNpemUgd2lkZSBjaGFyYWN0ZXJzIChpbmNsdWRpbmcKICAgICAgdGhlIG51bGwgY2hhcmFjdGVyKS4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci11bmljb2RlX2Fzd2lkZWNoYXIoUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlLAordW5pY29kZV9hc3dpZGVjaGFyKFB5T2JqZWN0ICp1bmljb2RlLAogICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKncsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAogICAgIFB5X3NzaXplX3QgcmVzOworICAgIGNvbnN0IHdjaGFyX3QgKndzdHI7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJnJlcyk7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCiAgICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICByZXMgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7CiAgICAgICAgIGlmIChzaXplID4gcmVzKQogICAgICAgICAgICAgc2l6ZSA9IHJlcyArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IHNpemU7Ci0gICAgICAgIG1lbWNweSh3LCB1bmljb2RlLT5zdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSArIDE7Ci0jZWxpZiBQeV9VTklDT0RFX1NJWkUgPT0gMiAmJiBTSVpFT0ZfV0NIQVJfVCA9PSA0Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqdTsKLSAgICBjb25zdCBQeV9VTklDT0RFICp1ZW5kOwotICAgIGNvbnN0IHdjaGFyX3QgKndvcmlnLCAqd2VuZDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyOwotCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIHVlbmQgPSB1ICsgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpOwotICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgd29yaWcgPSB3OwotICAgICAgICB3ZW5kID0gdyArIHNpemU7Ci0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQgJiYgdyAhPSB3ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IHVbMF0gJiYgdVswXSA8PSAweERCRkYKLSAgICAgICAgICAgICAgICAmJiAweERDMDAgPD0gdVsxXSAmJiB1WzFdIDw9IDB4REZGRikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqdyA9ICgoKHVbMF0gJiAweDNGRikgPDwgMTApIHwgKHVbMV0gJiAweDNGRikpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICB1ICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdyA9ICp1OwotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHcrKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodyAhPSB3ZW5kKQotICAgICAgICAgICAgKncgPSBMJ1wwJzsKLSAgICAgICAgcmV0dXJuIHcgLSB3b3JpZzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG5jaGFyID0gMTsgLyogbnVsbCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAqLwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IHVbMF0gJiYgdVswXSA8PSAweERCRkYKLSAgICAgICAgICAgICAgICAmJiAweERDMDAgPD0gdVsxXSAmJiB1WzFdIDw9IDB4REZGRikKLSAgICAgICAgICAgICAgICB1ICs9IDI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdSsrOwotICAgICAgICAgICAgbmNoYXIrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbmNoYXI7Ci0jZWxpZiBQeV9VTklDT0RFX1NJWkUgPT0gNCAmJiBTSVpFT0ZfV0NIQVJfVCA9PSAyCi0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdSwgKnVlbmQsIG9yZGluYWw7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIHdjaGFyX3QgKndvcmlnLCAqd2VuZDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyOwotCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIHVlbmQgPSB1ICsgUHlVbmljb2RlX0dFVF9TSVpFKHUpOwotICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgd29yaWcgPSB3OwotICAgICAgICB3ZW5kID0gdyArIHNpemU7Ci0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQgJiYgdyAhPSB3ZW5kKSB7Ci0gICAgICAgICAgICBvcmRpbmFsID0gKnU7Ci0gICAgICAgICAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICAgICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgICAgICAgICAqdysrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICp3KysgPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqdysrID0gb3JkaW5hbDsKLSAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodyAhPSB3ZW5kKQotICAgICAgICAgICAgKncgPSAwOwotICAgICAgICByZXR1cm4gdyAtIHdvcmlnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmNoYXIgPSAxOyAvKiBudWxsIGNoYXJhY3RlciAqLwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnUgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgbmNoYXIgKz0gMjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuY2hhcisrOwotICAgICAgICAgICAgdSsrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuY2hhcjsKLSAgICB9Ci0jZWxzZQotIyAgZXJyb3IgInVuc3VwcG9ydGVkIHdjaGFyX3QgYW5kIFB5X1VOSUNPREUgc2l6ZXMsIHNlZSBpc3N1ZSAjODY3MCIKLSNlbmRpZgorICAgICAgICByZXR1cm4gcmVzICsgMTsKIH0KIAogUHlfc3NpemVfdApAQCAtMTMwMiw3ICsyOTA5LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIHVuaWNvZGVfYXN3aWRlY2hhcigoUHlVbmljb2RlT2JqZWN0Kil1bmljb2RlLCB3LCBzaXplKTsKKyAgICByZXR1cm4gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIHcsIHNpemUpOwogfQogCiB3Y2hhcl90KgpAQCAtMTMxNyw3ICsyOTI0LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlLCBOVUxMLCAwKTsKKyAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgTlVMTCwgMCk7CisgICAgaWYgKGJ1ZmxlbiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIDwgYnVmbGVuKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMyOCw1MCArMjkzNyw1NCBAQAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlLCBidWZmZXIsIGJ1Zmxlbik7CisgICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIGJ1ZmZlciwgYnVmbGVuKTsKKyAgICBpZiAoYnVmbGVuID09IC0xKSB7CisgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChzaXplICE9IE5VTEwpCiAgICAgICAgICpzaXplID0gYnVmbGVuOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21PcmRpbmFsKGludCBvcmRpbmFsKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21PcmRpbmFsKGludCBvcmRpbmFsKQogewotICAgIFB5X1VOSUNPREUgc1syXTsKLQotICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gMHgxMGZmZmYpIHsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBpZiAob3JkaW5hbCA8IDAgfHwgb3JkaW5hbCA+IE1BWF9VTklDT0RFKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNocigpIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgIHNbMF0gPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgIHNbMV0gPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAyKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAob3JkaW5hbCA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihvcmRpbmFsKTsKIAotICAgIHNbMF0gPSAoUHlfVU5JQ09ERSlvcmRpbmFsOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgMSk7CisgICAgdiA9IFB5VW5pY29kZV9OZXcoMSwgb3JkaW5hbCk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHYpLCBQeVVuaWNvZGVfREFUQSh2KSwgMCwgb3JkaW5hbCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbU9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21PYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaikKIHsKICAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgbWFrZSB0aGlzIEFQSSBhbiBhbGlhcyBvZgogICAgICAgIFB5T2JqZWN0X1N0cigpIGluc3RlYWQgPyEgKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7CiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewogICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAogICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weShvYmopOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAiQ2FuJ3QgY29udmVydCAnJS4xMDBzJyBvYmplY3QgdG8gc3RyIGltcGxpY2l0bHkiLApAQCAtMTM3OSw5ICsyOTkyLDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIFB5T2JqZWN0ICp2OwpAQCAtMTM5NSw3ICszMDA5LDcgQEAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKG9iaikgPT0gMCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICAgICAgdiA9IChQeU9iamVjdCAqKSB1bmljb2RlX2VtcHR5OworICAgICAgICAgICAgdiA9IHVuaWNvZGVfZW1wdHk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZSgKQEAgLTE0MjIsNyArMzAzNiw3IEBACiAKICAgICBpZiAoYnVmZmVyLmxlbiA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgdiA9IChQeU9iamVjdCAqKSB1bmljb2RlX2VtcHR5OworICAgICAgICB2ID0gdW5pY29kZV9lbXB0eTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZSgoY2hhciopIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMTQ0Myw2ICszMDU3LDEwIEBACiAgICAgY2hhciAqbDsKICAgICBjaGFyICpsX2VuZDsKIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHN0cmNweShsb3dlciwgInV0Zi04Iik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KICAgICBlID0gZW5jb2Rpbmc7CiAgICAgbCA9IGxvd2VyOwogICAgIGxfZW5kID0gJmxvd2VyW2xvd2VyX2xlbiAtIDFdOwpAQCAtMTQ2NCwyNiArMzA4MiwyNiBAQAogICAgIHJldHVybiAxOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTCwgKnVuaWNvZGU7CiAgICAgUHlfYnVmZmVyIGluZm87CiAgICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLwogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KICAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8CisgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQorICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKICAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAorICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKICAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSkKICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7CiAjZW5kaWYKQEAgLTE1MTMsMTYgKzMxMzEsMTcgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICByZXR1cm4gdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGJ1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNTM4LDE1ICszMTU3LDE2IEBACiAgICAgdiA9IFB5Q29kZWNfRGVjb2RlKHVuaWNvZGUsIGVuY29kaW5nLCBlcnJvcnMpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE1NjksMTYgKzMxODksMTcgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQotICAgIHJldHVybiB2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdiwgKnVuaWNvZGU7CiAKQEAgLTE1OTAsOSArMzIxMSwxMCBAQAogICAgIHJldHVybiB2OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTYxNCwxNyArMzIzNiwxOTIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIHNpemVfdAord2NzdG9tYnNfZXJyb3Jwb3MoY29uc3Qgd2NoYXJfdCAqd3N0cikKK3sKKyAgICBzaXplX3QgbGVuOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICB3Y2hhcl90IGJ1ZlszXTsKKyNlbHNlCisgICAgd2NoYXJfdCBidWZbMl07CisjZW5kaWYKKyAgICBjaGFyIG91dGJ1ZltNQl9MRU5fTUFYXTsKKyAgICBjb25zdCB3Y2hhcl90ICpzdGFydCwgKnByZXZpb3VzOworCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIGJ1ZlsyXSA9IDA7CisjZWxzZQorICAgIGJ1ZlsxXSA9IDA7CisjZW5kaWYKKyAgICBzdGFydCA9IHdzdHI7CisgICAgd2hpbGUgKCp3c3RyICE9IEwnXDAnKQorICAgIHsKKyAgICAgICAgcHJldmlvdXMgPSB3c3RyOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUod3N0clswXSkKKyAgICAgICAgICAgICYmIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURSh3c3RyWzFdKSkKKyAgICAgICAgeworICAgICAgICAgICAgYnVmWzBdID0gd3N0clswXTsKKyAgICAgICAgICAgIGJ1ZlsxXSA9IHdzdHJbMV07CisgICAgICAgICAgICB3c3RyICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZbMF0gPSAqd3N0cjsKKyAgICAgICAgICAgIGJ1ZlsxXSA9IDA7CisgICAgICAgICAgICB3c3RyKys7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGJ1ZlswXSA9ICp3c3RyOworICAgICAgICB3c3RyKys7CisjZW5kaWYKKyAgICAgICAgbGVuID0gd2NzdG9tYnMob3V0YnVmLCBidWYsIHNpemVvZihvdXRidWYpKTsKKyAgICAgICAgaWYgKGxlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzIC0gc3RhcnQ7CisgICAgfQorCisgICAgLyogZmFpbGVkIHRvIGZpbmQgdGhlIHVuZW5jb2RhYmxlIGNoYXJhY3RlciAqLworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citsb2NhbGVfZXJyb3JfaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIGludCAqc3Vycm9nYXRlZXNjYXBlKQoreworICAgIGlmIChlcnJvcnMgPT0gTlVMTCkgeworICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCisgICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgcmV0dXJuIC0xOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCB3bGVuLCB3bGVuMjsKKyAgICB3Y2hhcl90ICp3c3RyOworICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CisgICAgY2hhciAqZXJybXNnOworICAgIFB5T2JqZWN0ICpyZWFzb247CisgICAgUHlPYmplY3QgKmV4YzsKKyAgICBzaXplX3QgZXJyb3JfcG9zOworICAgIGludCBzdXJyb2dhdGVlc2NhcGU7CisKKyAgICBpZiAobG9jYWxlX2Vycm9yX2hhbmRsZXIoZXJyb3JzLCAmc3Vycm9nYXRlZXNjYXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHVuaWNvZGUsICZ3bGVuKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHdsZW4yID0gd2NzbGVuKHdzdHIpOworICAgIGlmICh3bGVuMiAhPSB3bGVuKSB7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc3Vycm9nYXRlZXNjYXBlKSB7CisgICAgICAgIC8qIGxvY2FsZSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZSAqLworICAgICAgICBjaGFyICpzdHI7CisKKyAgICAgICAgc3RyID0gX1B5X3djaGFyMmNoYXIod3N0ciwgJmVycm9yX3Bvcyk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZ290byBlbmNvZGVfZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKworICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzaXplX3QgbGVuLCBsZW4yOworCisgICAgICAgIGxlbiA9IHdjc3RvbWJzKE5VTEwsIHdzdHIsIDApOworICAgICAgICBpZiAobGVuID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgIGVycm9yX3BvcyA9IChzaXplX3QpLTE7CisgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOworICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbGVuMiA9IHdjc3RvbWJzKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgd3N0ciwgbGVuKzEpOworICAgICAgICBpZiAobGVuMiA9PSAoc2l6ZV90KS0xIHx8IGxlbjIgPiBsZW4pIHsKKyAgICAgICAgICAgIGVycm9yX3BvcyA9IChzaXplX3QpLTE7CisgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7CisKK2VuY29kZV9lcnJvcjoKKyAgICBlcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisgICAgYXNzZXJ0KGVycm1zZyAhPSBOVUxMKTsKKworICAgIGlmIChlcnJvcl9wb3MgPT0gKHNpemVfdCktMSkKKyAgICAgICAgZXJyb3JfcG9zID0gd2NzdG9tYnNfZXJyb3Jwb3Mod3N0cik7CisKKyAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIFB5X1hERUNSRUYoYnl0ZXMpOworCisgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBlcnJsZW47CisgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihlcnJtc2csICZlcnJsZW4pOworICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVycm1zZyA9IE5VTEw7CisgICAgfQorICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKKyAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAid2NzdG9tYnMoKSBlbmNvdW50ZXJlZCBhbiB1bmVuY29kYWJsZSAiCisgICAgICAgICAgICAid2lkZSBjaGFyYWN0ZXIiKTsKKyAgICBpZiAocmVhc29uID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciwgInNPbm5PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsZSIsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KWVycm9yX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGVycm9yX3BvcysxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKTsKKyAgICBQeV9ERUNSRUYocmVhc29uKTsKKyAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwogUHlPYmplY3QgKgogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZU1CQ1MoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisjaWZkZWYgSEFWRV9NQkNTCisgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIE5VTEwpOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTE2NDIsNDYgKzM0MzksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCi0gICAgICAgIHdjaGFyX3QgKndjaGFyOwotICAgICAgICBjaGFyICpieXRlczsKLSAgICAgICAgUHlPYmplY3QgKmJ5dGVzX29iajsKLSAgICAgICAgc2l6ZV90IGVycm9yX3BvczsKLQotICAgICAgICB3Y2hhciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwotICAgICAgICBpZiAod2NoYXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBieXRlcyA9IF9QeV93Y2hhcjJjaGFyKHdjaGFyLCAmZXJyb3JfcG9zKTsKLSAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChlcnJvcl9wb3MgIT0gKHNpemVfdCktMSkgewotICAgICAgICAgICAgICAgIGNoYXIgKmVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoZXJybXNnID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGVycm1zZyA9ICJQeV93Y2hhcjJjaGFyKCkgZmFpbGVkIjsKLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsCi0gICAgICAgICAgICAgICAgICAgICJmaWxlc3lzdGVtZW5jb2RpbmciLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICBlcnJvcl9wb3MsIGVycm9yX3BvcysxLAotICAgICAgICAgICAgICAgICAgICBlcnJtc2cpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgUHlNZW1fRnJlZSh3Y2hhcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLQotICAgICAgICBieXRlc19vYmogPSBQeUJ5dGVzX0Zyb21TdHJpbmcoYnl0ZXMpOwotICAgICAgICBQeU1lbV9GcmVlKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIGJ5dGVzX29iajsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICNlbmRpZgogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCkBAIC0xNjkxLDQ2ICszNDU3LDI3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQotICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLQogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCiAgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKKyAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAorICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKICAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisjaWZkZWYgSEFWRV9NQkNTCiAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVNQkNTKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CiAjZW5kaWYKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVBU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOwogICAgIH0KLSAgICAvKiBEdXJpbmcgYm9vdHN0cmFwLCB3ZSBtYXkgbmVlZCB0byBmaW5kIHRoZSBlbmNvZGluZ3MKLSAgICAgICBwYWNrYWdlLCB0byBsb2FkIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZywgYW5kIHJlcXVpcmUgdGhlCi0gICAgICAgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaW4gb3JkZXIgdG8gbG9hZCB0aGUgZW5jb2RpbmdzCi0gICAgICAgcGFja2FnZS4KLQotICAgICAgIEJyZWFrIG91dCBvZiB0aGlzIGRlcGVuZGVuY3kgYnkgYXNzdW1pbmcgdGhhdCB0aGUgcGF0aCB0bwotICAgICAgIHRoZSBlbmNvZGluZ3MgbW9kdWxlIGlzIEFTQ0lJLW9ubHkuICBYWFggY291bGQgdHJ5IHdjc3RvbWJzCi0gICAgICAgaW5zdGVhZCwgaWYgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGlzIHRoZSBsb2NhbGUncwotICAgICAgIGVuY29kaW5nLiAqLwotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmCi0gICAgICAgICAgICAgc3RyY21wKGVuY29kaW5nLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKSA9PSAwICYmCi0gICAgICAgICAgICAgIVB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+Y29kZWNzX2luaXRpYWxpemVkKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwogCiAgICAgLyogRW5jb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KICAgICB2ID0gUHlDb2RlY19FbmNvZGUodW5pY29kZSwgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC0xNzY2LDkgKzM1MTMsMTAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE3OTcsMjQgKzM1NDUsMTUxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3N0YXRpYyBzaXplX3QKK21ic3Rvd2NzX2Vycm9ycG9zKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxlbikKIHsKLSAgICBQeU9iamVjdCAqdiA9ICgoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZSktPmRlZmVuYzsKLSAgICBpZiAodikKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgaWYgKGVycm9ycyAhPSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJub24tTlVMTCBlbmNvZGluZyBpbiBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmciKTsKLSAgICB2ID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgaWYgKCF2KQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUpLT5kZWZlbmMgPSB2OwotICAgIHJldHVybiB2OworI2lmZGVmIEhBVkVfTUJSVE9XQworICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gc3RyOworICAgIG1ic3RhdGVfdCBtYnM7CisgICAgc2l6ZV90IGNvbnZlcnRlZDsKKyAgICB3Y2hhcl90IGNoOworCisgICAgbWVtc2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOworICAgIHdoaWxlIChsZW4pCisgICAgeworICAgICAgICBjb252ZXJ0ZWQgPSBtYnJ0b3djKCZjaCwgKGNoYXIqKXN0ciwgbGVuLCAmbWJzKTsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAwKQorICAgICAgICAgICAgLyogUmVhY2hlZCBlbmQgb2Ygc3RyaW5nICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAoc2l6ZV90KS0xIHx8IGNvbnZlcnRlZCA9PSAoc2l6ZV90KS0yKSB7CisgICAgICAgICAgICAvKiBDb252ZXJzaW9uIGVycm9yIG9yIGluY29tcGxldGUgY2hhcmFjdGVyICovCisgICAgICAgICAgICByZXR1cm4gc3RyIC0gc3RhcnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzdHIgKz0gY29udmVydGVkOworICAgICAgICAgICAgbGVuIC09IGNvbnZlcnRlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBmYWlsZWQgdG8gZmluZCB0aGUgdW5kZWNvZGFibGUgYnl0ZSBzZXF1ZW5jZSAqLworICAgIHJldHVybiAwOworI2VuZGlmCisgICAgcmV0dXJuIDA7CiB9CiAKIFB5T2JqZWN0KgorUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICB3Y2hhcl90IHNtYWxsYnVmWzI1Nl07CisgICAgc2l6ZV90IHNtYWxsYnVmX2xlbiA9IFB5X0FSUkFZX0xFTkdUSChzbWFsbGJ1Zik7CisgICAgd2NoYXJfdCAqd3N0cjsKKyAgICBzaXplX3Qgd2xlbiwgd2xlbjI7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaW50IHN1cnJvZ2F0ZWVzY2FwZTsKKyAgICBzaXplX3QgZXJyb3JfcG9zOworICAgIGNoYXIgKmVycm1zZzsKKyAgICBQeU9iamVjdCAqcmVhc29uLCAqZXhjOworCisgICAgaWYgKGxvY2FsZV9lcnJvcl9oYW5kbGVyKGVycm9ycywgJnN1cnJvZ2F0ZWVzY2FwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzdHJbbGVuXSAhPSAnXDAnIHx8IGxlbiAhPSBzdHJsZW4oc3RyKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHN1cnJvZ2F0ZWVzY2FwZSkKKyAgICB7CisgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihzdHIsICZ3bGVuKTsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHdsZW4gPT0gKHNpemVfdCktMSkKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgd2xlbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIGVsc2UgeworI2lmbmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUworICAgICAgICB3bGVuID0gbWJzdG93Y3MoTlVMTCwgc3RyLCAwKTsKKyNlbHNlCisgICAgICAgIHdsZW4gPSBsZW47CisjZW5kaWYKKyAgICAgICAgaWYgKHdsZW4gPT0gKHNpemVfdCktMSkKKyAgICAgICAgICAgIGdvdG8gZGVjb2RlX2Vycm9yOworICAgICAgICBpZiAod2xlbisxIDw9IHNtYWxsYnVmX2xlbikgeworICAgICAgICAgICAgd3N0ciA9IHNtYWxsYnVmOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHdsZW4gPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSAtIDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICAgICAgICAgIHdzdHIgPSBQeU1lbV9NYWxsb2MoKHdsZW4rMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKCF3c3RyKQorICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICB9CisKKyAgICAgICAgLyogVGhpcyBzaG91bGRuJ3QgZmFpbCBub3cgKi8KKyAgICAgICAgd2xlbjIgPSBtYnN0b3djcyh3c3RyLCBzdHIsIHdsZW4rMSk7CisgICAgICAgIGlmICh3bGVuMiA9PSAoc2l6ZV90KS0xKSB7CisgICAgICAgICAgICBpZiAod3N0ciAhPSBzbWFsbGJ1ZikKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgZ290byBkZWNvZGVfZXJyb3I7CisgICAgICAgIH0KKyNpZmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUworICAgICAgICBhc3NlcnQod2xlbjIgPT0gd2xlbik7CisjZW5kaWYKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgd2xlbjIpOworICAgICAgICBpZiAod3N0ciAhPSBzbWFsbGJ1ZikKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIHJldHVybiB1bmljb2RlOworCitkZWNvZGVfZXJyb3I6CisgICAgZXJybXNnID0gc3RyZXJyb3IoZXJybm8pOworICAgIGFzc2VydChlcnJtc2cgIT0gTlVMTCk7CisKKyAgICBlcnJvcl9wb3MgPSBtYnN0b3djc19lcnJvcnBvcyhzdHIsIGxlbik7CisgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBlcnJsZW47CisgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihlcnJtc2csICZlcnJsZW4pOworICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVycm1zZyA9IE5VTEw7CisgICAgfQorICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKKyAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAibWJzdG93Y3MoKSBlbmNvdW50ZXJlZCBhbiBpbnZhbGlkIG11bHRpYnl0ZSBzZXF1ZW5jZSIpOworICAgIGlmIChyZWFzb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZURlY29kZUVycm9yLCAic3kjbm5PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsZSIsIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCllcnJvcl9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShlcnJvcl9wb3MrMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbik7CisgICAgUHlfREVDUkVGKHJlYXNvbik7CisgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0KgorUHlVbmljb2RlX0RlY29kZUxvY2FsZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUgPSAoUHlfc3NpemVfdClzdHJsZW4oc3RyKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoc3RyLCBzaXplLCBlcnJvcnMpOworfQorCisKK1B5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjb25zdCBjaGFyICpzKSB7CiAgICAgUHlfc3NpemVfdCBzaXplID0gKFB5X3NzaXplX3Qpc3RybGVuKHMpOwogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShzLCBzaXplKTsKQEAgLTE4MjMsMTAgKzM2OTgsMTAgQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBOVUxMKTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIsIE5VTEwpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTE4NDQsMjMgKzM3MTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KLSAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOwotICAgICAgICBzaXplX3QgbGVuOwotCi0gICAgICAgIGlmIChzW3NpemVdICE9ICdcMCcgfHwgc2l6ZSAhPSBzdHJsZW4ocykpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIHdjaGFyID0gX1B5X2NoYXIyd2NoYXIocywgJmxlbik7Ci0gICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod2NoYXIsIGxlbik7Ci0gICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOwotICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE5MjMsMTMgKzM3ODIsMTMgQEAKIFB5VW5pY29kZV9GU0RlY29kZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgdm9pZCAqZGF0YTsKICAgICBpZiAoYXJnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKCooUHlPYmplY3QqKilhZGRyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgb3V0cHV0ID0gYXJnOwogICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKICAgICB9CkBAIC0xOTQ4LDkgKzM4MDcsMTIgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob3V0cHV0KTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KTsKLSAgICBpZiAoc2l6ZSAhPSBQeV9VTklDT0RFX3N0cmxlbihkYXRhKSkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob3V0cHV0KSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChmaW5kY2hhcihQeVVuaWNvZGVfREFUQShvdXRwdXQpLCBQeVVuaWNvZGVfS0lORChvdXRwdXQpLAorICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvdXRwdXQpLCAwLCAxKSA+PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CiAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE5NjEsNDAgKzM4MjMsMTY2IEBACiAKIAogY2hhcioKLV9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpwc2l6ZSkKK1B5VW5pY29kZV9Bc1VURjhBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpwc2l6ZSkKIHsKICAgICBQeU9iamVjdCAqYnl0ZXM7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHBzaXplICE9IE5VTEwpCi0gICAgICAgICpwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisKKyAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3RyaWN0Iik7CisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQyhQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSArIDEpOworICAgICAgICBpZiAoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7CisgICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCisgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpICsgMSk7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgfQorCisgICAgaWYgKHBzaXplKQorICAgICAgICAqcHNpemUgPSBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpOwogfQogCiBjaGFyKgotX1B5VW5pY29kZV9Bc1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHVuaWNvZGUsIE5VTEwpOworICAgIHJldHVybiBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSh1bmljb2RlLCBOVUxMKTsKIH0KIAotUHlfVU5JQ09ERSAqUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKK1B5X1VOSUNPREUgKgorUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnNpemUpCiB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb25lX2J5dGU7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgIGNvbnN0IFB5X1VDUzIgKnR3b19ieXRlczsKKyNlbHNlCisgICAgY29uc3QgUHlfVUNTNCAqZm91cl9ieXRlczsKKyAgICBjb25zdCBQeV9VQ1M0ICp1Y3M0X2VuZDsKKyAgICBQeV9zc2l6ZV90IG51bV9zdXJyb2dhdGVzOworI2VuZGlmCisgICAgd2NoYXJfdCAqdzsKKyAgICB3Y2hhcl90ICp3Y2hhcl9lbmQ7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CisgICAgaWYgKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgIC8qIE5vbi1BU0NJSSBjb21wYWN0IHVuaWNvZGUgb2JqZWN0ICovCisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgIT0gMCk7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOwogCi0gIG9uRXJyb3I6Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgICAgIGZvdXJfYnl0ZXMgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgIHVjczRfZW5kID0gZm91cl9ieXRlcyArIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICAgICAgbnVtX3N1cnJvZ2F0ZXMgPSAwOworCisgICAgICAgICAgICBmb3IgKDsgZm91cl9ieXRlcyA8IHVjczRfZW5kOyArK2ZvdXJfYnl0ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoKmZvdXJfYnl0ZXMgPiAweEZGRkYpCisgICAgICAgICAgICAgICAgICAgICsrbnVtX3N1cnJvZ2F0ZXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9ICh3Y2hhcl90ICopIFB5T2JqZWN0X01BTExPQygKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdjaGFyX3QpICogKF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpICsgMSArIG51bV9zdXJyb2dhdGVzKSk7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgKyBudW1fc3Vycm9nYXRlczsKKworICAgICAgICAgICAgdyA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgICAgIHdjaGFyX2VuZCA9IHcgKyBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICAgICAgZm91cl9ieXRlcyA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgZm9yICg7IGZvdXJfYnl0ZXMgPCB1Y3M0X2VuZDsgKytmb3VyX2J5dGVzLCArK3cpIHsKKyAgICAgICAgICAgICAgICBpZiAoKmZvdXJfYnl0ZXMgPiAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KCpmb3VyX2J5dGVzIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgICAgICAgICAgLyogZW5jb2RlIHN1cnJvZ2F0ZSBwYWlyIGluIHRoaXMgY2FzZSAqLworICAgICAgICAgICAgICAgICAgICAqdysrID0gUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURSgqZm91cl9ieXRlcyk7CisgICAgICAgICAgICAgICAgICAgICp3ICAgPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoKmZvdXJfYnl0ZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICp3ID0gKmZvdXJfYnl0ZXM7CisKKyAgICAgICAgICAgICAgICBpZiAodyA+IHdjaGFyX2VuZCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiTWlzY2FsY3VsYXRlZCBzdHJpbmcgZW5kIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgKncgPSAwOworI2Vsc2UKKyAgICAgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSA0ICovCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJJbXBvc3NpYmxlIHVuaWNvZGUgb2JqZWN0IHN0YXRlLCB3c3RyIGFuZCBzdHIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIHNoYXJlIG1lbW9yeSBhbHJlYWR5LiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9ICh3Y2hhcl90ICopIFB5T2JqZWN0X01BTExPQyhzaXplb2Yod2NoYXJfdCkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgKyAxKSk7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgICAgIHcgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgICAgICB3Y2hhcl9lbmQgPSB3ICsgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSk7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIG9uZV9ieXRlID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICAgICAgZm9yICg7IHcgPCB3Y2hhcl9lbmQ7ICsrb25lX2J5dGUsICsrdykKKyAgICAgICAgICAgICAgICAgICAgKncgPSAqb25lX2J5dGU7CisgICAgICAgICAgICAgICAgLyogbnVsbC10ZXJtaW5hdGUgdGhlIHdzdHIgKi8KKyAgICAgICAgICAgICAgICAqdyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICAgICAgICAgICAgICB0d29fYnl0ZXMgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBmb3IgKDsgdyA8IHdjaGFyX2VuZDsgKyt0d29fYnl0ZXMsICsrdykKKyAgICAgICAgICAgICAgICAgICAgKncgPSAqdHdvX2J5dGVzOworICAgICAgICAgICAgICAgIC8qIG51bGwtdGVybWluYXRlIHRoZSB3c3RyICovCisgICAgICAgICAgICAgICAgKncgPSAwOworI2Vsc2UKKyAgICAgICAgICAgICAgICAvKiBzaXplb2Yod2NoYXJfdCkgPT0gMiAqLworICAgICAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkltcG9zc2libGUgdW5pY29kZSBvYmplY3Qgc3RhdGUsIHdzdHIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBzdHIgc2hvdWxkIHNoYXJlIG1lbW9yeSBhbHJlYWR5LiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmIChzaXplICE9IE5VTEwpCisgICAgICAgICpzaXplID0gUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIHJldHVybiBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CiB9CiAKLVB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCitQeV9VTklDT0RFICoKK1B5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsIE5VTEwpOworfQorCisKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9HZXRTaXplKFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CkBAIC0yMDA2LDcgKzM5OTQsNTcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLWNvbnN0IGNoYXIgKlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmcodm9pZCkKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9HZXRMZW5ndGgoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworfQorCitQeV9VQ1M0CitQeVVuaWNvZGVfUmVhZENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCktMTsKKyAgICB9CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbmRleCk7Cit9CisKK2ludAorUHlVbmljb2RlX1dyaXRlQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwgUHlfVUNTNCBjaCkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCAhUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodW5pY29kZSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoY2ggPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjaGFyYWN0ZXIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGNoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgY2hhciAqCitQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKHZvaWQpCiB7CiAgICAgcmV0dXJuICJ1dGYtOCI7CiB9CkBAIC0yMDQ1LDI2ICs0MDgzLDI5IEBACiAgICByZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgogKi8KIAotc3RhdGljCi1pbnQgdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKippbnB1dCwgY29uc3QgY2hhciAqKmluZW5kLCBQeV9zc2l6ZV90ICpzdGFydGlucG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zLCBQeV9VTklDT0RFICoqb3V0cHRyKQorc3RhdGljIGludAordW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqaW5wdXQsIGNvbnN0IGNoYXIgKippbmVuZCwgUHlfc3NpemVfdCAqc3RhcnRpbnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKm91dHB1dCk7CisgICAgUHlfc3NpemVfdCBvdXRzaXplOwogICAgIFB5X3NzaXplX3QgaW5zaXplOwogICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplOwogICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgIFB5X1VOSUNPREUgKnJlcHB0cjsKICAgICBQeU9iamVjdCAqaW5wdXRvYmogPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKICAgICBpbnQgcmVzID0gLTE7CiAKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKCpvdXRwdXQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICBvdXRzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKm91dHB1dCk7CisgICAgZWxzZQorICAgICAgICBvdXRzaXplID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCgqb3V0cHV0KTsKKwogICAgIGlmICgqZXJyb3JIYW5kbGVyID09IE5VTEwpIHsKICAgICAgICAgKmVycm9ySGFuZGxlciA9IFB5Q29kZWNfTG9va3VwRXJyb3IoZXJyb3JzKTsKICAgICAgICAgaWYgKCplcnJvckhhbmRsZXIgPT0gTlVMTCkKQEAgLTIwODgsNiArNDEyOSw4IEBACiAgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShyZXN0dXBsZSwgYXJncGFyc2UsICZQeVVuaWNvZGVfVHlwZSwgJnJlcHVuaWNvZGUsICZuZXdwb3MpKQogICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogQ29weSBiYWNrIHRoZSBieXRlcyB2YXJpYWJsZXMsIHdoaWNoIG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZCBieSB0aGUKICAgICAgICBjYWxsYmFjayAqLwpAQCAtMjExMSwyNSArNDE1NCw0NyBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKLSAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQotICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLwotICAgIHJlcHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOwotICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwdW5pY29kZSk7Ci0gICAgcmVxdWlyZWRzaXplID0gKm91dHBvcyArIHJlcHNpemUgKyBpbnNpemUtbmV3cG9zOwotICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7Ci0gICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipvdXRzaXplKQotICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOwotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKCpvdXRwdXQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQorICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIChzdGFydGluZworICAgICAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQorICAgICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZykgKi8KKyAgICAgICAgUHlfc3NpemVfdCByZXBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKKyAgICAgICAgcmVxdWlyZWRzaXplID0gKm91dHBvcyArIHJlcGxlbiArIGluc2l6ZS1uZXdwb3M7CisgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7CisgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplPDIqb3V0c2l6ZSkKKyAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKm91dHNpemU7CisgICAgICAgICAgICBpZiAodW5pY29kZV9yZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWNvZGVfd2lkZW4ob3V0cHV0LCAqb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmVwdW5pY29kZSkpIDwgMCkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgKm91dHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRwdXQpICsgKm91dHBvczsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoKm91dHB1dCwgKm91dHBvcywgcmVwdW5pY29kZSwgMCwgcmVwbGVuKTsKKyAgICAgICAgKm91dHBvcyArPSByZXBsZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3Y2hhcl90ICpyZXB3c3RyOworICAgICAgICBQeV9zc2l6ZV90IHJlcHdsZW47CisgICAgICAgIHJlcHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShyZXB1bmljb2RlLCAmcmVwd2xlbik7CisgICAgICAgIGlmIChyZXB3c3RyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQorICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIChzdGFydGluZworICAgICAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQorICAgICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZykgKi8KKyAgICAgICAgcmVxdWlyZWRzaXplID0gKm91dHBvcyArIHJlcHdsZW4gKyBpbnNpemUtbmV3cG9zOworICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgeworICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA8IDIqb3V0c2l6ZSkKKyAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKm91dHNpemU7CisgICAgICAgICAgICBpZiAodW5pY29kZV9yZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgd2NzbmNweShfUHlVbmljb2RlX1dTVFIoKm91dHB1dCkgKyAqb3V0cG9zLCByZXB3c3RyLCByZXB3bGVuKTsKKyAgICAgICAgKm91dHBvcyArPSByZXB3bGVuOwogICAgIH0KICAgICAqZW5kaW5wb3MgPSBuZXdwb3M7CiAgICAgKmlucHRyID0gKmlucHV0ICsgbmV3cG9zOwotICAgIFB5X1VOSUNPREVfQ09QWSgqb3V0cHRyLCByZXBwdHIsIHJlcHNpemUpOwotICAgICpvdXRwdHIgKz0gcmVwc2l6ZTsKLSAgICAqb3V0cG9zICs9IHJlcHNpemU7CiAKICAgICAvKiB3ZSBtYWRlIGl0ISAqLwogICAgIHJlcyA9IDA7CkBAIC0yMjIwLDkgKzQyODUsMTAgQEAKICAgICAgIChkaXJlY3RXUyAmJiAodXRmN19jYXRlZ29yeVsoYyldID09IDIpKSB8fCAgICAgICAgXAogICAgICAgKGRpcmVjdE8gJiYgKHV0ZjdfY2F0ZWdvcnlbKGMpXSA9PSAxKSkpKQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjcoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjcoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogfQpAQCAtMjIzNCw0MiArNDMwMCw0MiBAQAogICogYWxsIHRoZSBzaGlmdCBzdGF0ZSAoc2VlbiBiaXRzLCBudW1iZXIgb2YgYml0cyBzZWVuLCBoaWdoCiAgKiBzdXJyb2dhdGUpLiAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7CiAgICAgaW50IGluU2hpZnQgPSAwOwotICAgIFB5X1VOSUNPREUgKnNoaWZ0T3V0U3RhcnQ7CisgICAgUHlfc3NpemVfdCBzaGlmdE91dFN0YXJ0OwogICAgIHVuc2lnbmVkIGludCBiYXNlNjRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBsb25nIGJhc2U2NGJ1ZmZlciA9IDA7Ci0gICAgUHlfVU5JQ09ERSBzdXJyb2dhdGUgPSAwOworICAgIFB5X1VDUzQgc3Vycm9nYXRlID0gMDsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICAvKiBTdGFydCBvZmYgYXNzdW1pbmcgaXQncyBhbGwgQVNDSUkuIFdpZGVuIGxhdGVyIGFzIG5lY2Vzc2FyeS4gKi8KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICghdW5pY29kZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICAgICAqY29uc3VtZWQgPSAwOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CiAgICAgfQogCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKLSAgICBzaGlmdE91dFN0YXJ0ID0gcDsKKyAgICBzaGlmdE91dFN0YXJ0ID0gb3V0cG9zID0gMDsKICAgICBlID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaDsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgIHJlc3RhcnQ6CiAgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpICpzOwogCkBAIC0yMjgwLDM0ICs0MzQ2LDMxIEBACiAgICAgICAgICAgICAgICAgcysrOwogICAgICAgICAgICAgICAgIGlmIChiYXNlNjRiaXRzID49IDE2KSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHdlIGhhdmUgZW5vdWdoIGJpdHMgZm9yIGEgVVRGLTE2IHZhbHVlICovCi0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgb3V0Q2ggPSAoUHlfVU5JQ09ERSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlNjRidWZmZXIgPj4gKGJhc2U2NGJpdHMtMTYpKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBvdXRDaCA9IChQeV9VQ1M0KShiYXNlNjRidWZmZXIgPj4gKGJhc2U2NGJpdHMtMTYpKTsKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyAtPSAxNjsKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0YnVmZmVyICY9ICgxIDw8IGJhc2U2NGJpdHMpIC0gMTsgLyogY2xlYXIgaGlnaCBiaXRzICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV4cGVjdGluZyBhIHNlY29uZCBzdXJyb2dhdGUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRDaCA+PSAweERDMDAgJiYgb3V0Q2ggPD0gMHhERkZGKSB7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICgoKHN1cnJvZ2F0ZSAmIDB4M0ZGKTw8MTApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChvdXRDaCAmIDB4M0ZGKSkgKyAweDEwMDAwOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Vycm9nYXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBvdXRDaDsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShvdXRDaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoMiA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKHN1cnJvZ2F0ZSwgb3V0Q2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoMikgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBzdXJyb2dhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgc3Vycm9nYXRlKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvdXRDaCA+PSAweEQ4MDAgJiYgb3V0Q2ggPD0gMHhEQkZGKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKG91dENoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlyc3Qgc3Vycm9nYXRlICovCiAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSBvdXRDaDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBvdXRDaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIG91dENoKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjMxNSw3ICs0Mzc4LDggQEAKICAgICAgICAgICAgICAgICBpblNoaWZ0ID0gMDsKICAgICAgICAgICAgICAgICBzKys7CiAgICAgICAgICAgICAgICAgaWYgKHN1cnJvZ2F0ZSkgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Vycm9nYXRlOworICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBzdXJyb2dhdGUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGJhc2U2NGJpdHMgPiAwKSB7IC8qIGxlZnQtb3ZlciBiaXRzICovCkBAIC0yMzM1LDcgKzQzOTksOCBAQAogICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnLScpIHsKICAgICAgICAgICAgICAgICAgICAgLyogJy0nIGlzIGFic29yYmVkOyBvdGhlciB0ZXJtaW5hdGluZwogICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSBwcmVzZXJ2ZWQgKi8KLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjM0NCwxNiArNDQwOSwxOCBAQAogICAgICAgICAgICAgcysrOyAvKiBjb25zdW1lICcrJyAqLwogICAgICAgICAgICAgaWYgKHMgPCBlICYmICpzID09ICctJykgeyAvKiAnKy0nIGVuY29kZXMgJysnICovCiAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICpwKysgPSAnKyc7CisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgJysnKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBiZWdpbiBiYXNlNjQtZW5jb2RlZCBzZWN0aW9uICovCiAgICAgICAgICAgICAgICAgaW5TaGlmdCA9IDE7Ci0gICAgICAgICAgICAgICAgc2hpZnRPdXRTdGFydCA9IHA7CisgICAgICAgICAgICAgICAgc2hpZnRPdXRTdGFydCA9IG91dHBvczsKICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChERUNPREVfRElSRUNUKGNoKSkgeyAvKiBjaGFyYWN0ZXIgZGVjb2RlcyBhcyBpdHNlbGYgKi8KLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgcysrOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMjM2NCwxMyArNDQzMSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGNvbnRpbnVlOwogdXRmN0Vycm9yOgotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1dGY3IiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTIzODEsMTMgKzQ0NDcsMTIgQEAKICAgICAgICAgaWYgKHN1cnJvZ2F0ZSB8fAogICAgICAgICAgICAgICAgIChiYXNlNjRiaXRzID49IDYpIHx8CiAgICAgICAgICAgICAgICAgKGJhc2U2NGJpdHMgPiAwICYmIGJhc2U2NGJ1ZmZlciAhPSAwKSkgewotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgICAgIGVuZGlucG9zID0gc2l6ZTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidXRmNyIsICJ1bnRlcm1pbmF0ZWQgc2hpZnQgc2VxdWVuY2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBpZiAocyA8IGUpCiAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OwpAQCAtMjM5Nyw3ICs0NDYyLDcgQEAKICAgICAvKiByZXR1cm4gc3RhdGUgKi8KICAgICBpZiAoY29uc3VtZWQpIHsKICAgICAgICAgaWYgKGluU2hpZnQpIHsKLSAgICAgICAgICAgIHAgPSBzaGlmdE91dFN0YXJ0OyAvKiBiYWNrIG9mZiBvdXRwdXQgKi8KKyAgICAgICAgICAgIG91dHBvcyA9IHNoaWZ0T3V0U3RhcnQ7IC8qIGJhY2sgb2ZmIG91dHB1dCAqLwogICAgICAgICAgICAgKmNvbnN1bWVkID0gc3RhcnRpbnBvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTI0MDUsMTIgKzQ0NzAsMTIgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC0yNDIwLDM1ICs0NDg1LDQyIEBACiB9CiAKIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlVVRGNyhQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLAorICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICp2OwotICAgIC8qIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIHRpZ2h0ZW4gdGhpcyB3b3JzdCBjYXNlICovCi0gICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQgPSA4ICogc2l6ZTsKICAgICBpbnQgaW5TaGlmdCA9IDA7Ci0gICAgUHlfc3NpemVfdCBpID0gMDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgdW5zaWduZWQgaW50IGJhc2U2NGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGxvbmcgYmFzZTY0YnVmZmVyID0gMDsKICAgICBjaGFyICogb3V0OwogICAgIGNoYXIgKiBzdGFydDsKIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIGlmIChhbGxvY2F0ZWQgLyA4ICE9IHNpemUpCisgICAgLyogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gdGlnaHRlbiB0aGlzIHdvcnN0IGNhc2UgKi8KKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyA4KQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGFsbG9jYXRlZCk7CisgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuICogOCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdGFydCA9IG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgIGZvciAoO2kgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoaW5TaGlmdCkgewogICAgICAgICAgICAgaWYgKEVOQ09ERV9ESVJFQ1QoY2gsICFiYXNlNjRTZXRPLCAhYmFzZTY0V2hpdGVTcGFjZSkpIHsKQEAgLTI0ODYsOCArNDU1OCw5IEBACiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CiBlbmNvZGVfY2hhcjoKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisKICAgICAgICAgICAgIC8qIGNvZGUgZmlyc3Qgc3Vycm9nYXRlICovCiAgICAgICAgICAgICBiYXNlNjRiaXRzICs9IDE2OwogICAgICAgICAgICAgYmFzZTY0YnVmZmVyID0gKGJhc2U2NGJ1ZmZlciA8PCAxNikgfCAweGQ4MDAgfCAoKGNoLTB4MTAwMDApID4+IDEwKTsKQEAgLTI0OTYsOSArNDU2OSw4IEBACiAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyAtPSA2OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogcHJlcGFyZSBzZWNvbmQgc3Vycm9nYXRlICovCi0gICAgICAgICAgICBjaCA9ICAweERDMDAgfCAoKGNoLTB4MTAwMDApICYgMHgzRkYpOworICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOwogICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgYmFzZTY0Yml0cyArPSAxNjsKICAgICAgICAgYmFzZTY0YnVmZmVyID0gKGJhc2U2NGJ1ZmZlciA8PCAxNikgfCBjaDsKICAgICAgICAgd2hpbGUgKGJhc2U2NGJpdHMgPj0gNikgewpAQCAtMjUxNCw2ICs0NTg2LDIyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiB2OwogfQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVURjcoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVVVEY3KHRtcCwgYmFzZTY0U2V0TywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0V2hpdGVTcGFjZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiAjdW5kZWYgSVNfQkFTRTY0CiAjdW5kZWYgRlJPTV9CQVNFNjQKQEAgLTI1MjMsMjcyICs0NjExLDIwNCBAQAogCiAvKiAtLS0gVVRGLTggQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljCi1jaGFyIHV0ZjhfY29kZV9sZW5ndGhbMjU2XSA9IHsKLSAgICAvKiBNYXAgVVRGLTggZW5jb2RlZCBwcmVmaXggYnl0ZSB0byBzZXF1ZW5jZSBsZW5ndGguICBaZXJvIG1lYW5zCi0gICAgICAgaWxsZWdhbCBwcmVmaXguICBTZWUgUkZDIDM2MjkgZm9yIGRldGFpbHMgKi8KLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAvKiAwMC0wRiAqLwotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIC8qIDcwLTdGICovCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLyogODAtOEYgKi8KLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLyogQjAtQkYgKi8KLSAgICAwLCAwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAvKiBDMC1DMSArIEMyLUNGICovCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgLyogRDAtREYgKi8KLSAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAvKiBFMC1FRiAqLwotICAgIDQsIDQsIDQsIDQsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgIC8qIEYwLUY0ICsgRjUtRkYgKi8KLX07Ci0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGOChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGOChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CiAKLS8qIE1hc2sgdG8gY2hlY2sgb3IgZm9yY2UgYWxpZ25tZW50IG9mIGEgcG9pbnRlciB0byBDICdsb25nJyBib3VuZGFyaWVzICovCi0jZGVmaW5lIExPTkdfUFRSX01BU0sgKHNpemVfdCkgKFNJWkVPRl9MT05HIC0gMSkKKyNpbmNsdWRlICJzdHJpbmdsaWIvYXNjaWlsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MybGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczRsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCiAKIC8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQogICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KICNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwODA4MDgwODBMCisjIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MDgwODA4MDgwVUwKICNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQotIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBMCisjIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MFVMCiAjZWxzZQogIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQogI2VuZGlmCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3N0YXRpYyBQeV9zc2l6ZV90Cithc2NpaV9kZWNvZGUoY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfVUNTMSAqZGVzdCkKIHsKKyAgICBjb25zdCBjaGFyICpwID0gc3RhcnQ7CisgICAgY29uc3QgY2hhciAqYWxpZ25lZF9lbmQgPSAoY29uc3QgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlbmQsIFNJWkVPRl9MT05HKTsKKworI2lmIFNJWkVPRl9MT05HIDw9IFNJWkVPRl9WT0lEX1AKKyAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoZGVzdCwgU0laRU9GX0xPTkcpKTsKKyAgICBpZiAoX1B5X0lTX0FMSUdORUQocCwgU0laRU9GX0xPTkcpKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCwgc2VlIGluIFNUUklOR0xJQih1dGY4X2RlY29kZSkgZm9yCisgICAgICAgICAgIGFuIGV4cGxhbmF0aW9uLiAqLworICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KKyAgICAgICAgcmVnaXN0ZXIgY29uc3QgY2hhciAqX3AgPSBwOworICAgICAgICByZWdpc3RlciBQeV9VQ1MxICogcSA9IGRlc3Q7CisgICAgICAgIHdoaWxlIChfcCA8IGFsaWduZWRfZW5kKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopIF9wOworICAgICAgICAgICAgaWYgKHZhbHVlICYgQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgKigodW5zaWduZWQgbG9uZyAqKXEpID0gdmFsdWU7CisgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgIHEgKz0gU0laRU9GX0xPTkc7CisgICAgICAgIH0KKyAgICAgICAgcCA9IF9wOworICAgICAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKSpwICYgMHg4MCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICpxKysgPSAqcCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwIC0gc3RhcnQ7CisgICAgfQorI2VuZGlmCisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoLCBzZWUgaW4gU1RSSU5HTElCKHV0ZjhfZGVjb2RlKSBpbiBzdHJpbmdsaWIvY29kZWNzLmgKKyAgICAgICAgICAgZm9yIGFuIGV4cGxhbmF0aW9uLiAqLworICAgICAgICBpZiAoX1B5X0lTX0FMSUdORUQocCwgU0laRU9GX0xPTkcpKSB7CisgICAgICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9wID0gcDsKKyAgICAgICAgICAgIHdoaWxlIChfcCA8IGFsaWduZWRfZW5kKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSA9ICoodW5zaWduZWQgbG9uZyAqKSBfcDsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcCA9IF9wOworICAgICAgICAgICAgaWYgKF9wID09IGVuZCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoKHVuc2lnbmVkIGNoYXIpKnAgJiAweDgwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICsrcDsKKyAgICB9CisgICAgbWVtY3B5KGRlc3QsIHN0YXJ0LCBwIC0gc3RhcnQpOworICAgIHJldHVybiBwIC0gc3RhcnQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgaW50IG47Ci0gICAgaW50IGs7CisgICAgY29uc3QgY2hhciAqZW5kID0gcyArIHNpemU7CisgICAgUHlfc3NpemVfdCBvdXRwb3M7CisKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKLSAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBjb25zdCBjaGFyICplLCAqYWxpZ25lZF9lbmQ7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQotICAgICAgIGNoYXJhY3RlciBjb3VudCAqLwotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAgICAgKmNvbnN1bWVkID0gMDsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgfQogCi0gICAgLyogVW5wYWNrIFVURi04IGVuY29kZWQgZGF0YSAqLwotICAgIHAgPSB1bmljb2RlLT5zdHI7Ci0gICAgZSA9IHMgKyBzaXplOwotICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CisgICAgLyogQVNDSUkgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMTI4IG9yZGluYWxzIGluIFVuaWNvZGUuICovCisgICAgaWYgKHNpemUgPT0gMSAmJiAodW5zaWduZWQgY2hhcilzWzBdIDwgMTI4KSB7CisgICAgICAgIGlmIChjb25zdW1lZCkKKyAgICAgICAgICAgICpjb25zdW1lZCA9IDE7CisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpc1swXSk7CisgICAgfQogCi0gICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKGNoIDwgMHg4MCkgewotICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBydW5zIG9mIEFTQ0lJIGNoYXJhY3RlcnMuIEdpdmVuIHRoYXQgY29tbW9uIFVURi04Ci0gICAgICAgICAgICAgICBpbnB1dCB3aWxsIGNvbnNpc3Qgb2YgYW4gb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIEFTQ0lJCi0gICAgICAgICAgICAgICBjaGFyYWN0ZXJzLCB3ZSB0cnkgdG8gb3B0aW1pemUgZm9yIHRoaXMgY2FzZSBieSBjaGVja2luZwotICAgICAgICAgICAgICAgYXMgbWFueSBjaGFyYWN0ZXJzIGFzIGEgQyAnbG9uZycgY2FuIGNvbnRhaW4uCi0gICAgICAgICAgICAgICBGaXJzdCwgY2hlY2sgaWYgd2UgY2FuIGRvIGFuIGFsaWduZWQgcmVhZCwgYXMgbW9zdCBDUFVzIGhhdmUKLSAgICAgICAgICAgICAgIGEgcGVuYWx0eSBmb3IgdW5hbGlnbmVkIHJlYWRzLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghKChzaXplX3QpIHMgJiBMT05HX1BUUl9NQVNLKSkgewotICAgICAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLwotICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9zID0gczsKLSAgICAgICAgICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICpfcCA9IHA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKF9zIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogUmVhZCBhIHdob2xlIGxvbmcgYXQgYSB0aW1lIChlaXRoZXIgNCBvciA4IGJ5dGVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGRvIGEgZmFzdCB1bnJvbGxlZCBjb3B5IGlmIGl0IG9ubHkgY29udGFpbnMgQVNDSUkKLSAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4gKi8KLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKih1bnNpZ25lZCBsb25nICopIF9zOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmIEFTQ0lJX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBfcFswXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1swXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAodW5zaWduZWQgY2hhcikgX3NbMV07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzJdOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1szXTsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgX3BbNF0gPSAodW5zaWduZWQgY2hhcikgX3NbNF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzVdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzVdOwotICAgICAgICAgICAgICAgICAgICBfcFs2XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s2XTsKLSAgICAgICAgICAgICAgICAgICAgX3BbN10gPSAodW5zaWduZWQgY2hhcikgX3NbN107Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgX3MgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzID0gX3M7Ci0gICAgICAgICAgICAgICAgcCA9IF9wOwotICAgICAgICAgICAgICAgIGlmIChzID09IGUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICB9CisgICAgb3V0cG9zID0gYXNjaWlfZGVjb2RlKHMsIGVuZCwgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSkpOworICAgIHMgKz0gb3V0cG9zOworICAgIHdoaWxlIChzIDwgZW5kKSB7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjaCA9IHVjczFsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgfSBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBjaCA9IHVjczJsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgY2ggPSB1Y3M0bGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIHMrKzsKKyAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBpZiAocyA9PSBlbmQgfHwgY29uc3VtZWQpCisgICAgICAgICAgICAgICAgZ290byBFbmQ7CisgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gZW5kIC0gc3RhcnRzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIHN0YXJ0IGJ5dGUiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgY2FzZSAzOgorICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIGNoIC0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIG4gPSB1dGY4X2NvZGVfbGVuZ3RoW2NoXTsKLQotICAgICAgICBpZiAocyArIG4gPiBlKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgICAgIGZvciAoaz0xOyAoayA8IHNpemUtc3RhcnRpbnBvcykgJiYgKChzW2tdJjB4QzApID09IDB4ODApOyBrKyspCi0gICAgICAgICAgICAgICAgICAgIGVuZGlucG9zKys7Ci0gICAgICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG4pIHsKLQotICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBzdGFydCBieXRlIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0KLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgZXJybXNnID0gImludGVybmFsIGVycm9yIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0KLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCkgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgxZikgPDwgNikgKyAoc1sxXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDAwN0YpICYmIChjaCA8PSAweDA3RkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIC8qIERlY29kaW5nIFVURi04IHNlcXVlbmNlcyBpbiByYW5nZSBceGVkXHhhMFx4ODAtXHhlZFx4YmZceGJmCi0gICAgICAgICAgICAgICB3aWxsIHJlc3VsdCBpbiBzdXJyb2dhdGVzIGluIHJhbmdlIGQ4MDAtZGZmZi4gU3Vycm9nYXRlcyBhcmUKLSAgICAgICAgICAgICAgIG5vdCB2YWxpZCBVVEYtOCBzbyB0aGV5IGFyZSByZWplY3RlZC4KLSAgICAgICAgICAgICAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjIuMC9jaDAzLnBkZgotICAgICAgICAgICAgICAgKHRhYmxlIDMtNykgYW5kIGh0dHA6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzM2MjkudHh0ICovCi0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwIHx8Ci0gICAgICAgICAgICAgICAgKHNbMl0gJiAweGMwKSAhPSAweDgwIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhFMCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdIDwgMHhBMCkgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEVEICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPiAweDlGKSkgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLQotICAgICAgICAgICAgICAgIC8qIGlmIHNbMV0gZmlyc3QgdHdvIGJpdHMgYXJlIDEgYW5kIDAsIHRoZW4gdGhlIGludmFsaWQKLSAgICAgICAgICAgICAgICAgICBjb250aW51YXRpb24gYnl0ZSBpcyBzWzJdLCBzbyBpbmNyZW1lbnQgZW5kaW5wb3MgYnkgMSwKLSAgICAgICAgICAgICAgICAgICBpZiBub3QsIHNbMV0gaXMgaW52YWxpZCBhbmQgZW5kaW5wb3MgZG9lc24ndCBuZWVkIHRvCi0gICAgICAgICAgICAgICAgICAgYmUgaW5jcmVtZW50ZWQuICovCi0gICAgICAgICAgICAgICAgaWYgKChzWzFdICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgwZikgPDwgMTIpICsgKChzWzFdICYgMHgzZikgPDwgNikgKyAoc1syXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1szXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEYwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweDkwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OEYpKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4QzApID09IDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChzWzJdICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZGlucG9zKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDcpIDw8IDE4KSArICgoc1sxXSAmIDB4M2YpIDw8IDEyKSArCi0gICAgICAgICAgICAgICAgICgoc1syXSAmIDB4M2YpIDw8IDYpICsgKHNbM10gJiAweDNmKTsKLSAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHhGRkZGKSAmJiAoY2ggPD0gMHgxMGZmZmYpKTsKLQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotI2Vsc2UKLSAgICAgICAgICAgIC8qICBjb21wdXRlIGFuZCBhcHBlbmQgdGhlIHR3byBzdXJyb2dhdGVzOiAqLwotCi0gICAgICAgICAgICAvKiAgdHJhbnNsYXRlIGZyb20gMTAwMDAuLjEwRkZGRiB0byAwLi5GRkZGICovCi0gICAgICAgICAgICBjaCAtPSAweDEwMDAwOwotCi0gICAgICAgICAgICAvKiAgaGlnaCBzdXJyb2dhdGUgPSB0b3AgMTAgYml0cyBhZGRlZCB0byBEODAwICovCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpKDB4RDgwMCArIChjaCA+PiAxMCkpOwotCi0gICAgICAgICAgICAvKiAgbG93IHN1cnJvZ2F0ZSA9IGJvdHRvbSAxMCBiaXRzIGFkZGVkIHRvIERDMDAgKi8KLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkoMHhEQzAwICsgKGNoICYgMHgwM0ZGKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHMgKz0gbjsKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIHV0ZjhFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCi0gICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBhbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOwogICAgIH0KLSAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICpjb25zdW1lZCA9IHMtc3RhcnRzOwogCi0gICAgLyogQWRqdXN0IGxlbmd0aCAqLwotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIHVuaWNvZGUtPnN0cikgPCAwKQorRW5kOgorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAqY29uc3VtZWQgPSBzIC0gc3RhcnRzOwogCi0gIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7CisKK29uRXJyb3I6CisgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICBQeV9YREVDUkVGKHVuaWNvZGUpOwogICAgIHJldHVybiBOVUxMOwogfQogCi0jdW5kZWYgQVNDSUlfQ0hBUl9NQVNLCi0KICNpZmRlZiBfX0FQUExFX18KIAogLyogU2ltcGxpZmllZCBVVEYtOCBkZWNvZGVyIHVzaW5nIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLApAQCAtMjgwMCw5ICs0ODIwLDkgQEAKIHdjaGFyX3QqCiBfUHlfRGVjb2RlVVRGOF9zdXJyb2dhdGVlc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotICAgIGludCBuOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgd2NoYXJfdCAqdW5pY29kZSwgKnA7CisgICAgd2NoYXJfdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IG91dHBvczsKIAogICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCiAgICAgICAgY2hhcmFjdGVyIGNvdW50ICovCkBAIC0yODEzLDI3NyArNDgzMywxMDEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBVbnBhY2sgVVRGLTggZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGU7CiAgICAgZSA9IHMgKyBzaXplOworICAgIG91dHBvcyA9IDA7CiAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAodW5zaWduZWQgY2hhcikqczsKLQotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7Ci0gICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG4gPSB1dGY4X2NvZGVfbGVuZ3RoW2NoXTsKLSAgICAgICAgaWYgKHMgKyBuID4gZSkgewotICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG4pIHsKLSAgICAgICAgY2FzZSAwOgotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLQotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwKQotICAgICAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDFmKSA8PCA2KSArIChzWzFdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4ZWRceGEwXHg4MC1ceGVkXHhiZlx4YmYKLSAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgZDgwMC1kZmZmLiBTdXJyb2dhdGVzIGFyZQotICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgotICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCi0gICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEUwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweEEwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RUQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OUYpKSB7Ci0KLSAgICAgICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgwZikgPDwgMTIpICsgKChzWzFdICYgMHgzZikgPDwgNikgKyAoc1syXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1szXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEYwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweDkwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OEYpKSB7Ci0gICAgICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4NykgPDwgMTgpICsgKChzWzFdICYgMHgzZikgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAgKChzWzJdICYgMHgzZikgPDwgNikgKyAoc1szXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwZmZmZikpOwotCisgICAgICAgIFB5X1VDUzQgY2g7CiAjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KWNoOworICAgICAgICBjaCA9IHVjczRsaWJfdXRmOF9kZWNvZGUoJnMsIGUsIChQeV9VQ1M0ICopdW5pY29kZSwgJm91dHBvcyk7CiAjZWxzZQotICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCi0KLSAgICAgICAgICAgIC8qICB0cmFuc2xhdGUgZnJvbSAxMDAwMC4uMTBGRkZGIHRvIDAuLkZGRkYgKi8KLSAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7Ci0KLSAgICAgICAgICAgIC8qICBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KLSAgICAgICAgICAgICpwKysgPSAod2NoYXJfdCkoMHhEODAwICsgKGNoID4+IDEwKSk7Ci0KLSAgICAgICAgICAgIC8qICBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KSgweERDMDAgKyAoY2ggJiAweDAzRkYpKTsKKyAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlLCAoUHlfVUNTMiAqKXVuaWNvZGUsICZvdXRwb3MpOwogI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNoID4gMHhGRikgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyNlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKTsKKyAgICAgICAgICAgIC8qICBjb21wdXRlIGFuZCBhcHBlbmQgdGhlIHR3byBzdXJyb2dhdGVzOiAqLworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAod2NoYXJfdClQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgIHVuaWNvZGVbb3V0cG9zKytdID0gKHdjaGFyX3QpUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKKyNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIHMgKz0gbjsKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIHN1cnJvZ2F0ZWVzY2FwZToKLSAgICAgICAgKnArKyA9IDB4REMwMCArIGNoOwotICAgICAgICBzKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFjaCAmJiBzID09IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBzdXJyb2dhdGVlc2NhcGUgKi8KKyAgICAgICAgICAgIHVuaWNvZGVbb3V0cG9zKytdID0gMHhEQzAwICsgKHVuc2lnbmVkIGNoYXIpKnMrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICAqcCA9IEwnXDAnOworICAgIHVuaWNvZGVbb3V0cG9zXSA9IEwnXDAnOwogICAgIHJldHVybiB1bmljb2RlOwogfQogCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAKLS8qIEFsbG9jYXRpb24gc3RyYXRlZ3k6ICBpZiB0aGUgc3RyaW5nIGlzIHNob3J0LCBjb252ZXJ0IGludG8gYSBzdGFjayBidWZmZXIKKy8qIFByaW1hcnkgaW50ZXJuYWwgZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyB1dGY4IGVuY29kZWQgYnl0ZXMgb2JqZWN0cy4KKworICAgQWxsb2NhdGlvbiBzdHJhdGVneTogIGlmIHRoZSBzdHJpbmcgaXMgc2hvcnQsIGNvbnZlcnQgaW50byBhIHN0YWNrIGJ1ZmZlcgogICAgYW5kIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBzcGFjZSBuZWVkZWQgYXQgdGhlIGVuZC4gIEVsc2UgYWxsb2NhdGUgdGhlCiAgICBtYXhpbXVtIHBvc3NpYmxlIG5lZWRlZCAoNCByZXN1bHQgYnl0ZXMgcGVyIFVuaWNvZGUgY2hhcmFjdGVyKSwgYW5kIHJldHVybgogICAgdGhlIGV4Y2VzcyBtZW1vcnkgYXQgdGhlIGVuZC4KICovCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KLSAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KLSAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotCi0gICAgYXNzZXJ0KHMgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0KLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiA0OwotICAgICAgICBpZiAobmFsbG9jYXRlZCAvIDQgIT0gc2l6ZSkgIC8qIG92ZXJmbG93ISAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTspIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9IHNbaSsrXTsKLQotICAgICAgICBpZiAoY2ggPCAweDgwKQotICAgICAgICAgICAgLyogRW5jb2RlIEFTQ0lJICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwotCi0gICAgICAgIGVsc2UgaWYgKGNoIDwgMHgwODAwKSB7Ci0gICAgICAgICAgICAvKiBFbmNvZGUgTGF0aW4tMSAqLwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGMwIHwgKGNoID4+IDYpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgfSBlbHNlIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKSB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlOiBjaGVjayBmb3IgaGlnaCBhbmQgbG93IHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgaWYgKGNoIDw9IDB4REJGRiAmJiBpICE9IHNpemUgJiYgMHhEQzAwIDw9IHNbaV0gJiYgc1tpXSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoMiA9IHNbaV07Ci0gICAgICAgICAgICAgICAgLyogQ29tYmluZSB0aGUgdHdvIHN1cnJvZ2F0ZXMgdG8gZm9ybSBhIFVDUzQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBjaCA9ICgoY2ggLSAweEQ4MDApIDw8IDEwIHwgKGNoMiAtIDB4REMwMCkpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICBpKys7Ci0KLSAgICAgICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGYwIHwgKGNoID4+IDE4KSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotI2VuZGlmCi0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcDsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGs7Ci0gICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgKGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgICAgcywgc2l6ZSwgJmV4YywgaS0xLCBpLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IDQpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIDQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5hbGxvY2F0ZWQgKz0gcmVwc2l6ZSAtIDQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBuYWxsb2NhdGVkKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLCBzdGFja2J1Ziwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgICAgICBmb3IoayA9IHJlcHNpemU7IGsgPiAwOyBrLS0pCi0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnByZXArKzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpwcmVwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOwotCi0gICAgICAgICAgICAgICAgICAgIGZvcihrPTA7IGs8cmVwc2l6ZTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gcHJlcFtrXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsIHMsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcilwcmVwW2tdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9IGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGUwIHwgKGNoID4+IDEyKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9IGVsc2UgLyogY2ggPj0gMHgxMDAwMCAqLyB7Ci0gICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gMTIpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICAvKiBUaGlzIHdhcyBzdGFjayBhbGxvY2F0ZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHN0YWNrYnVmLCBubmVlZGVkKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbm5lZWRlZCk7Ci0gICAgfQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKLSAgICByZXR1cm4gTlVMTDsKLQotI3VuZGVmIE1BWF9TSE9SVF9VTklDSEFSUwotfQotCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLXsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkpOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgLyogdGhlIHN0cmluZyBjYW5ub3QgYmUgQVNDSUksIG9yIFB5VW5pY29kZV9VVEY4KCkgd291bGQgYmUgc2V0ICovCisgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICAgICAgcmV0dXJuIHVjczFsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgfQorfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICp2LCAqdW5pY29kZTsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiB2OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIFVURi0zMiBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0zMTA4LDE0ICs0OTUyLDcgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaW50IHBhaXJzID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxcTsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgorICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplOwogICAgIGludCBibyA9IDA7ICAgICAgIC8qIGFzc3VtZSBuYXRpdmUgb3JkZXJpbmcgYnkgZGVmYXVsdCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwpAQCAtMzE3OSwyMyArNTAxNiwxMyBAQAogICAgICAgICBpb3JkZXJbM10gPSAwOwogICAgIH0KIAotICAgIC8qIE9uIG5hcnJvdyBidWlsZHMgd2Ugc3BsaXQgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCTVAgaW50byB0d28KLSAgICAgICBjb2RlcG9pbnRzID0+IGNvdW50IGhvdyBtdWNoIGV4dHJhIHNwYWNlIHdlIG5lZWQuICovCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGZvciAocXEgPSBxOyBlIC0gcXEgPj0gNDsgcXEgKz0gNCkKLSAgICAgICAgaWYgKHFxW2lvcmRlclsyXV0gIT0gMCB8fCBxcVtpb3JkZXJbM11dICE9IDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0KICAgICAvKiBUaGlzIG1pZ2h0IGJlIG9uZSB0byBtdWNoLCBiZWNhdXNlIG9mIGEgQk9NICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KChzaXplKzMpLzQrcGFpcnMpOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChzaXplKzMpLzQsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMzIgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgb3V0cG9zID0gMDsKIAogICAgIHdoaWxlIChxIDwgZSkgewogICAgICAgICBQeV9VQ1M0IGNoOwpAQCAtMzIyMCwyNCArNTA0NywxNiBAQAogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzQ7CiAgICAgICAgICAgICBnb3RvIHV0ZjMyRXJyb3I7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgcSArPSA0OwogICAgICAgICBjb250aW51ZTsKICAgICAgIHV0ZjMyRXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjMyIiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsIChjb25zdCBjaGFyICoqKSZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAoY29uc3QgY2hhciAqKikmcSwKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTMyNDgsMTIgKzUwNjcsMTIgQEAKICAgICAgICAgKmNvbnN1bWVkID0gKGNvbnN0IGNoYXIgKilxLXN0YXJ0czsKIAogICAgIC8qIEFkanVzdCBsZW5ndGggKi8KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSB1bmljb2RlLT5zdHIpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTMyNjMsMTkgKzUwODIsMTYgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQorX1B5VW5pY29kZV9FbmNvZGVVVEYzMihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGJ5dGVzaXplOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlfc3NpemVfdCBuc2l6ZSwgaTsKICAgICAvKiBPZmZzZXRzIGZyb20gcCBmb3Igc3RvcmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KICNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgogICAgIGludCBpb3JkZXJbXSA9IHswLCAxLCAyLCAzfTsKQEAgLTMyOTIsMjYgKzUxMDgsMjcgQEAKICAgICAgICAgcCArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlKDApCiAKLSAgICAvKiBJbiBuYXJyb3cgYnVpbGRzIHdlIGNhbiBvdXRwdXQgc3Vycm9nYXRlIHBhaXJzIGFzIG9uZSBjb2RlcG9pbnQsCi0gICAgICAgc28gd2UgbmVlZCBsZXNzIHNwYWNlLiAqLwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBmb3IgKGkgPSBwYWlycyA9IDA7IGkgPCBzaXplLTE7IGkrKykKLSAgICAgICAgaWYgKDB4RDgwMCA8PSBzW2ldICYmIHNbaV0gPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAweERDMDAgPD0gc1tpKzFdICYmIHNbaSsxXSA8PSAweERGRkYpCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0gICAgbnNpemUgPSAoc2l6ZSAtIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKSk7Ci0gICAgYnl0ZXNpemUgPSBuc2l6ZSAqIDQ7Ci0gICAgaWYgKGJ5dGVzaXplIC8gNCAhPSBuc2l6ZSkKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBuc2l6ZSA9IGxlbiArIChieXRlb3JkZXIgPT0gMCk7CisgICAgaWYgKG5zaXplID4gUFlfU1NJWkVfVF9NQVggLyA0KQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7CisgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiA0KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChieXRlb3JkZXIgPT0gMCkKICAgICAgICAgU1RPUkVDSEFSKDB4RkVGRik7Ci0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKQEAgLTMzMjksMzYgKzUxNDYsMzMgQEAKICAgICAgICAgaW9yZGVyWzNdID0gMDsKICAgICB9CiAKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VQ1M0IGNoID0gKnMrKzsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGICYmIHNpemUgPiAwKSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IGNoMiA9ICpzOwotICAgICAgICAgICAgaWYgKDB4REMwMCA8PSBjaDIgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIGNoID0gKCgoY2ggJiAweDNGRik8PDEwKSB8IChjaDIgJiAweDNGRikpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICBTVE9SRUNIQVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogCiAgIGRvbmU6CiAgICAgcmV0dXJuIHY7CiAjdW5kZWYgU1RPUkVDSEFSCiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodG1wLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodW5pY29kZSwgTlVMTCwgMCk7CiB9CiAKIC8qIC0tLSBVVEYtMTYgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMzM3MiwyMyArNTE4Niw2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgYnl0ZW9yZGVyLCBOVUxMKTsKIH0KIAotLyogVHdvIG1hc2tzIGZvciBmYXN0IGNoZWNraW5nIG9mIHdoZXRoZXIgYSBDICdsb25nJyBtYXkgY29udGFpbgotICAgVVRGMTYtZW5jb2RlZCBzdXJyb2dhdGUgY2hhcmFjdGVycy4gVGhpcyBpcyBhbiBlZmZpY2llbnQgaGV1cmlzdGljLAotICAgYXNzdW1pbmcgdGhhdCBub24tc3Vycm9nYXRlIGNoYXJhY3RlcnMgd2l0aCBhIGNvZGUgcG9pbnQgPj0gMHg4MDAwIGFyZQotICAgcmFyZSBpbiBtb3N0IGlucHV0LgotICAgRkFTVF9DSEFSX01BU0sgaXMgdXNlZCB3aGVuIHRoZSBpbnB1dCBpcyBpbiBuYXRpdmUgYnl0ZSBvcmRlcmluZywKLSAgIFNXQVBQRURfRkFTVF9DSEFSX01BU0sgd2hlbiB0aGUgaW5wdXQgaXMgaW4gYnl0ZXN3YXBwZWQgb3JkZXJpbmcuCi0qLwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAweDgwMDA4MDAwODAwMDgwMDBMCi0jIGRlZmluZSBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLIDB4MDA4MDAwODAwMDgwMDA4MEwKLSNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQotIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAweDgwMDA4MDAwTAotIyBkZWZpbmUgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSyAweDAwODAwMDgwTAotI2Vsc2UKLSMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKLSNlbmRpZgotCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLApAQCAtMzQwMCwzMSArNTE5NywxNCBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplLCAqYWxpZ25lZF9lbmQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCi0gICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IDA7CisgICAgaW50IG5hdGl2ZV9vcmRlcmluZzsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKLSAgICAvKiBPZmZzZXRzIGZyb20gcSBmb3IgcmV0cmlldmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIGludCBpaGkgPSAxLCBpbG8gPSAwOwotI2Vsc2UKLSAgICBpbnQgaWhpID0gMCwgaWxvID0gMTsKLSNlbmRpZgogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKLSAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMTYgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKICAgICBxID0gKHVuc2lnbmVkIGNoYXIgKilzOwogICAgIGUgPSBxICsgc2l6ZTsKIApAQCAtMzQzNSwxNzkgKzUyMTUsMTAxIEBACiAgICAgICAgYnl0ZSBvcmRlciBzZXR0aW5nIGFjY29yZGluZ2x5LiBJbiBuYXRpdmUgbW9kZSwgdGhlIGxlYWRpbmcgQk9NCiAgICAgICAgbWFyayBpcyBza2lwcGVkLCBpbiBhbGwgb3RoZXIgbW9kZXMsIGl0IGlzIGNvcGllZCB0byB0aGUgb3V0cHV0CiAgICAgICAgc3RyZWFtIGFzLWlzIChnaXZpbmcgYSBaV05CU1AgY2hhcmFjdGVyKS4gKi8KLSAgICBpZiAoYm8gPT0gMCkgewotICAgICAgICBpZiAoc2l6ZSA+PSAyKSB7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFIGJvbSA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICAgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gMTsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gLTE7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICBpZiAoYm8gPT0gMCAmJiBzaXplID49IDIpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBib20gPSAocVsxXSA8PCA4KSB8IHFbMF07CisgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7CisgICAgICAgICAgICBxICs9IDI7CisgICAgICAgICAgICBibyA9IC0xOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAweEZGRkUpIHsKKyAgICAgICAgICAgIHEgKz0gMjsKKyAgICAgICAgICAgIGJvID0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYnl0ZW9yZGVyKQorICAgICAgICAgICAgKmJ5dGVvcmRlciA9IGJvOwogICAgIH0KIAotICAgIGlmIChibyA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpaGkgPSAxOwotICAgICAgICBpbG8gPSAwOworICAgIGlmIChxID09IGUpIHsKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkID0gc2l6ZTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9Ci0gICAgZWxzZSBpZiAoYm8gPT0gMSkgewotICAgICAgICAvKiBmb3JjZSBCRSAqLwotICAgICAgICBpaGkgPSAwOwotICAgICAgICBpbG8gPSAxOwotICAgIH0KKwogI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgbmF0aXZlX29yZGVyaW5nID0gaWxvIDwgaWhpOworICAgIG5hdGl2ZV9vcmRlcmluZyA9IGJvIDw9IDA7CiAjZWxzZQotICAgIG5hdGl2ZV9vcmRlcmluZyA9IGlsbyA+IGloaTsKKyAgICBuYXRpdmVfb3JkZXJpbmcgPSBibyA+PSAwOwogI2VuZGlmCiAKLSAgICBhbGlnbmVkX2VuZCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOworICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCisgICAgICAgY2hhcmFjdGVyIGNvdW50ICovCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoKGUgLSBxICsgMSkgLyAyLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBvdXRwb3MgPSAwOwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2g7Ci0gICAgICAgIGlmIChlIC0gcSA8IDIpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IDA7CisgICAgICAgIGlmIChlIC0gcSA+PSAyKSB7CisgICAgICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2ggPSB1Y3MxbGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgIGNoID0gdWNzNGxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGNoKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIC8qIHJlbWFpbmluZyBieXRlIGF0IHRoZSBlbmQ/IChzaXplIHNob3VsZCBiZSBldmVuKSAqLwogICAgICAgICAgICAgaWYgKHEgPT0gZSB8fCBjb25zdW1lZCkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBnb3RvIEVuZDsKICAgICAgICAgICAgIGVycm1zZyA9ICJ0cnVuY2F0ZWQgZGF0YSI7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSBzdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvKiBUaGUgcmVtYWluaW5nIGlucHV0IGNoYXJzIGFyZSBpZ25vcmVkIGlmIHRoZSBjYWxsYmFjawogICAgICAgICAgICAgICAgY2hvb3NlcyB0byBza2lwIHRoZSBpbnB1dCAqLwotICAgICAgICB9Ci0gICAgICAgIC8qIEZpcnN0IGNoZWNrIGZvciBwb3NzaWJsZSBhbGlnbmVkIHJlYWQgb2YgYSBDICdsb25nJy4gVW5hbGlnbmVkCi0gICAgICAgICAgIHJlYWRzIGFyZSBtb3JlIGV4cGVuc2l2ZSwgYmV0dGVyIHRvIGRlZmVyIHRvIGFub3RoZXIgaXRlcmF0aW9uLiAqLwotICAgICAgICBpZiAoISgoc2l6ZV90KSBxICYgTE9OR19QVFJfTUFTSykpIHsKLSAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBub24tc3Vycm9nYXRlIGNoYXJzLiAqLwotICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3EgPSBxOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqX3AgPSBwOwotICAgICAgICAgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgewotICAgICAgICAgICAgICAgIC8qIE5hdGl2ZSBvcmRlcmluZyBpcyBzaW1wbGU6IGFzIGxvbmcgYXMgdGhlIGlucHV0IGNhbm5vdAotICAgICAgICAgICAgICAgICAgIHBvc3NpYmx5IGNvbnRhaW4gYSBzdXJyb2dhdGUgY2hhciwgZG8gYW4gdW5yb2xsZWQgY29weQotICAgICAgICAgICAgICAgICAgIG9mIHNldmVyYWwgMTYtYml0IGNvZGUgcG9pbnRzIHRvIHRoZSB0YXJnZXQgb2JqZWN0LgotICAgICAgICAgICAgICAgICAgIFRoZSBub24tc3Vycm9nYXRlIGNoZWNrIGlzIGRvbmUgb24gc2V2ZXJhbCBpbnB1dCBieXRlcwotICAgICAgICAgICAgICAgICAgIGF0IGEgdGltZSAoYXMgbWFueSBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluKS4gKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoX3EgPCBhbGlnbmVkX2VuZCkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSAqICh1bnNpZ25lZCBsb25nICopIF9xOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmIEZBU1RfQ0hBUl9NQVNLKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbMF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbMV07Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbMl07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbM107Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgX3EgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HIC8gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBCeXRlc3dhcHBlZCBvcmRlcmluZyBpcyBzaW1pbGFyLCBidXQgd2UgbXVzdCBkZWNvbXBvc2UKLSAgICAgICAgICAgICAgICAgICB0aGUgY29weSBieXRld2lzZSwgYW5kIHRha2UgY2FyZSBvZiB6ZXJvJ2luZyBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgdXBwZXIgYnl0ZXMgaWYgdGhlIHRhcmdldCBvYmplY3QgaXMgaW4gMzItYml0IHVuaXRzCi0gICAgICAgICAgICAgICAgICAgKHRoYXQgaXMsIGluIFVDUy00IGJ1aWxkcykuICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFplcm8gdXBwZXIgYnl0ZXMgaW4gVUNTLTQgYnVpbGRzICovCi0jaWYgKFB5X1VOSUNPREVfU0laRSA+IDIpCi0gICAgICAgICAgICAgICAgICAgIF9wWzBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAwOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzNdID0gMDsKLSNlbmRpZgotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIC8qIElzc3VlICM0OTE2OyBVQ1MtNCBidWlsZHMgb24gYmlnIGVuZGlhbiBtYWNoaW5lcyBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGZpbGwgdGhlIHR3byBsYXN0IGJ5dGVzIG9mIGVhY2ggNC1ieXRlIHVuaXQuICovCi0jaWYgKCFkZWZpbmVkKEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOKSAmJiBQeV9VTklDT0RFX1NJWkUgPiAyKQotIyBkZWZpbmUgT0ZGIDIKLSNlbHNlCi0jIGRlZmluZSBPRkYgMAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMV0gPSBfcVswXTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwXSA9IF9xWzFdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDEgKyBQeV9VTklDT0RFX1NJWkVdID0gX3FbMl07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIFB5X1VOSUNPREVfU0laRV0gPSBfcVszXTsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgMiAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs0XTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwICsgMiAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs1XTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgMyAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs2XTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwICsgMyAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs3XTsKLSNlbmRpZgotI3VuZGVmIE9GRgotICAgICAgICAgICAgICAgICAgICBfcSArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkcgLyAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBfcDsKLSAgICAgICAgICAgIHEgPSBfcTsKLSAgICAgICAgICAgIGlmIChlIC0gcSA8IDIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2ggPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOwotCi0gICAgICAgIHEgKz0gMjsKLQotICAgICAgICBpZiAoY2ggPCAweEQ4MDAgfHwgY2ggPiAweERGRkYpIHsKLSAgICAgICAgICAgICpwKysgPSBjaDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogVVRGLTE2IGNvZGUgcGFpcjogKi8KLSAgICAgICAgaWYgKGUgLSBxIDwgMikgeworICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICBxIC09IDI7CiAgICAgICAgICAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBFbmQ7CiAgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSBzdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOwotICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIGVuY29kaW5nIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDIgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIFVURi0xNiBzdXJyb2dhdGUiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gNCAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKLSAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgIGlmICgweERDMDAgPD0gY2gyICYmIGNoMiA8PSAweERGRkYpIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgKnArKyA9IGNoOwotICAgICAgICAgICAgICAgICpwKysgPSBjaDI7Ci0jZWxzZQotICAgICAgICAgICAgICAgICpwKysgPSAoKChjaCAmIDB4M0ZGKTw8MTApIHwgKGNoMiAmIDB4M0ZGKSkgKyAweDEwMDAwOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBVVEYtMTYgc3Vycm9nYXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpLTQpLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMjsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjE2RXJyb3I7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgfQotICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBlbmNvZGluZyI7Ci0gICAgICAgIHN0YXJ0aW5wb3MgPSAoKChjb25zdCBjaGFyICopcSktMiktc3RhcnRzOwotICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMjsKLSAgICAgICAgLyogRmFsbCB0aHJvdWdoIHRvIHJlcG9ydCB0aGUgZXJyb3IgKi8KLQotICAgICAgdXRmMTZFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLAogICAgICAgICAgICAgICAgICZlcnJvckhhbmRsZXIsCkBAIC0zNjE5LDI3ICs1MzIxLDIxIEBACiAgICAgICAgICAgICAgICAgJmV4YywKICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKikmcSwKICAgICAgICAgICAgICAgICAmdW5pY29kZSwKLSAgICAgICAgICAgICAgICAmb3V0cG9zLAotICAgICAgICAgICAgICAgICZwKSkKKyAgICAgICAgICAgICAgICAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgLyogVXBkYXRlIGRhdGEgYmVjYXVzZSB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlciBtaWdodCBoYXZlCi0gICAgICAgICAgIGNoYW5nZWQgdGhlIGlucHV0IG9iamVjdC4gKi8KLSAgICAgICAgYWxpZ25lZF9lbmQgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAoKHNpemVfdCkgZSAmIH5MT05HX1BUUl9NQVNLKTsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyKQotICAgICAgICAqYnl0ZW9yZGVyID0gYm87Ci0KK0VuZDoKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IChjb25zdCBjaGFyICopcS1zdGFydHM7CiAKICAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gdW5pY29kZS0+c3RyKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYodW5pY29kZSk7CkBAIC0zNjQ4LDggKzUzNDQsNzcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI3VuZGVmIEZBU1RfQ0hBUl9NQVNLCi0jdW5kZWYgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSworUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVVVEYxNihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGNvbnN0IHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKnY7CisgICAgdW5zaWduZWQgc2hvcnQgKm91dDsKKyAgICBQeV9zc2l6ZV90IGJ5dGVzaXplOworICAgIFB5X3NzaXplX3QgcGFpcnM7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA+PSAwOworI2Vsc2UKKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CisjZW5kaWYKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cikpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIHBhaXJzID0gMDsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1M0ICppbiA9IChjb25zdCBQeV9VQ1M0ICopZGF0YTsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqZW5kID0gaW4gKyBsZW47CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkKKyAgICAgICAgICAgIGlmICgqaW4rKyA+PSAweDEwMDAwKQorICAgICAgICAgICAgICAgIHBhaXJzKys7CisgICAgfQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIGJ5dGVzaXplID0gKGxlbiArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKSkgKiAyOworICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzaXplKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIG91dHB1dCBidWZmZXIgaXMgMi1ieXRlcyBhbGlnbmVkICovCisgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCAyKSk7CisgICAgb3V0ID0gKHVuc2lnbmVkIHNob3J0ICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQorICAgICAgICAqb3V0KysgPSAweEZFRkY7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7CisgICAgICAgIHVjczFsaWJfdXRmMTZfZW5jb2RlKG91dCwgKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7CisgICAgICAgIHVjczJsaWJfdXRmMTZfZW5jb2RlKG91dCwgKGNvbnN0IFB5X1VDUzIgKilkYXRhLCBsZW4sIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiB7CisgICAgICAgIHVjczRsaWJfdXRmMTZfZW5jb2RlKG91dCwgKGNvbnN0IFB5X1VDUzQgKilkYXRhLCBsZW4sIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgIGRvbmU6CisgICAgcmV0dXJuIHY7Cit9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLApAQCAtMzY1NywxMzYgKzU0MjIsMTQxIEBACiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IG5zaXplLCBieXRlc2l6ZTsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCi0gICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCi0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICBpbnQgaWhpID0gMSwgaWxvID0gMDsKLSNlbHNlCi0gICAgaW50IGloaSA9IDAsIGlsbyA9IDE7Ci0jZW5kaWYKLQotI2RlZmluZSBTVE9SRUNIQVIoQ0gpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwW2loaV0gPSAoKENIKSA+PiA4KSAmIDB4ZmY7ICAgICAgICAgICAgXAotICAgICAgICBwW2lsb10gPSAoQ0gpICYgMHhmZjsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwICs9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGZvciAoaSA9IHBhaXJzID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgaWYgKHNbaV0gPj0gMHgxMDAwMCkKLSAgICAgICAgICAgIHBhaXJzKys7Ci0jZW5kaWYKLSAgICAvKiAyICogKHNpemUgKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpICovCi0gICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCB8fAotICAgICAgICBzaXplID4gUFlfU1NJWkVfVF9NQVggLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIG5zaXplID0gc2l6ZSArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKTsKLSAgICBieXRlc2l6ZSA9IG5zaXplICogMjsKLSAgICBpZiAoYnl0ZXNpemUgLyAyICE9IG5zaXplKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgIGlmIChieXRlb3JkZXIgPT0gMCkKLSAgICAgICAgU1RPUkVDSEFSKDB4RkVGRik7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpaGkgPSAxOwotICAgICAgICBpbG8gPSAwOwotICAgIH0KLSAgICBlbHNlIGlmIChieXRlb3JkZXIgPT0gMSkgewotICAgICAgICAvKiBmb3JjZSBCRSAqLwotICAgICAgICBpaGkgPSAwOwotICAgICAgICBpbG8gPSAxOwotICAgIH0KLQotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotICAgICAgICBQeV9VTklDT0RFIGNoMiA9IDA7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBjaDIgPSAweERDMDAgfCAoKGNoLTB4MTAwMDApICYgMHgzRkYpOwotICAgICAgICAgICAgY2ggID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBTVE9SRUNIQVIoY2gpOwotICAgICAgICBpZiAoY2gyKQotICAgICAgICAgICAgU1RPUkVDSEFSKGNoMik7Ci0gICAgfQotCi0gIGRvbmU6Ci0gICAgcmV0dXJuIHY7Ci0jdW5kZWYgU1RPUkVDSEFSCisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih0bXAsIGVycm9ycywgYnl0ZW9yZGVyKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih1bmljb2RlLCBOVUxMLCAwKTsKIH0KIAogLyogLS0tIFVuaWNvZGUgRXNjYXBlIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUsIGRldGVybWluZXMKKyAgIGlmIGFsbCB0aGUgZXNjYXBlcyBpbiB0aGUgc3RyaW5nIG1ha2UgaXQgc3RpbGwgYSB2YWxpZCBBU0NJSSBzdHJpbmcuCisgICBSZXR1cm5zIC0xIGlmIGFueSBlc2NhcGVzIHdlcmUgZm91bmQgd2hpY2ggY2F1c2UgdGhlIHN0cmluZyB0bworICAgcG9wIG91dCBvZiBBU0NJSSByYW5nZS4gIE90aGVyd2lzZSByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlCisgICByZXF1aXJlZCBidWZmZXIgdG8gaG9sZCB0aGUgc3RyaW5nLgorICAgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXM7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW5kID0gcCArIHNpemU7CisgICAgUHlfc3NpemVfdCBsZW5ndGggPSAwOworCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKDsgcCA8IGVuZDsgKytwKSB7CisgICAgICAgIGlmICgqcCA+IDEyNykgeworICAgICAgICAgICAgLyogTm9uLUFTQ0lJICovCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKnAgIT0gJ1xcJykgeworICAgICAgICAgICAgLyogTm9ybWFsIGNoYXJhY3RlciAqLworICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBCYWNrc2xhc2gtZXNjYXBlLCBjaGVjayBuZXh0IGNoYXIgKi8KKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIC8qIEVzY2FwZSBzZXF1ZW5jZSByZWFjaGVzIHRpbGwgZW5kIG9mIHN0cmluZyBvcgorICAgICAgICAgICAgICAgbm9uLUFTQ0lJIGZvbGxvdy11cC4gKi8KKyAgICAgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCA+IDEyNykKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICAgICAgLyogYmFja3NsYXNoICsgXG4gcmVzdWx0IGluIHplcm8gY2hhcmFjdGVycyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcJyc6IGNhc2UgJ1wiJzoKKyAgICAgICAgICAgIGNhc2UgJ2InOiBjYXNlICdmJzogY2FzZSAndCc6CisgICAgICAgICAgICBjYXNlICduJzogY2FzZSAncic6IGNhc2UgJ3YnOiBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgorICAgICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6CisgICAgICAgICAgICBjYXNlICd4JzogY2FzZSAndSc6IGNhc2UgJ1UnOiBjYXNlICdOJzoKKyAgICAgICAgICAgICAgICAvKiB0aGVzZSBkbyBub3QgZ3VhcmFudGVlIEFTQ0lJIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8qIGNvdW50IHRoZSBiYWNrc2xhc2ggKyB0aGUgb3RoZXIgY2hhcmFjdGVyICovCisgICAgICAgICAgICAgICAgbGVuZ3RoICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogc3RhdGljIF9QeVVuaWNvZGVfTmFtZV9DQVBJICp1Y25oYXNoX0NBUEkgPSBOVUxMOwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwotICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIGludCBpOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIGludCBqOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjaGFyKiBtZXNzYWdlOwogICAgIFB5X1VDUzQgY2hyID0gMHhmZmZmZmZmZjsgLyogaW4gY2FzZSAnZ2V0Y29kZScgbWVzc2VzIHVwICovCiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBpOwogCi0gICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKLSAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQotICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgotICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZwotICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKKworICAgIC8qIEFmdGVyIGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZygpIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmVzLAorICAgICAgIGVpdGhlciB0aGUgc3RyaW5nIGlzIHB1cmUgQVNDSUkgd2l0aCBuYW1lZCBlc2NhcGVzIGxpa2UgXG4sIGV0Yy4KKyAgICAgICBhbmQgd2UgZGV0ZXJtaW5lZCBpdCdzIGV4YWN0IHNpemUgKGNvbW1vbiBjYXNlKQorICAgICAgIG9yIGl0IGNvbnRhaW5zIFx4LCBcdSwgLi4uIGVzY2FwZSBzZXF1ZW5jZXMuICB0aGVuIHdlIGNyZWF0ZSBhCisgICAgICAgbGVnYWN5IHdjaGFyIHN0cmluZyBhbmQgcmVzaXplIGl0IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gKi8KKyAgICBpZiAobGVuID49IDApIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcobGVuLCAxMjcpOworICAgICAgICBpZiAoIXYpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh2KSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZworICAgICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQorICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KKyAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCisgICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KKyAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICAgICAgaWYgKCF2KQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBsZW4gPSBzaXplOworICAgIH0KKwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICBpID0gMDsKICAgICBlbmQgPSBzICsgc2l6ZTsKIAogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVU5JQ09ERSB4OworICAgICAgICBQeV9VQ1M0IHg7CiAgICAgICAgIGludCBkaWdpdHM7CiAKKyAgICAgICAgLyogVGhlIG9ubHkgY2FzZSBpbiB3aGljaCBpID09IGFzY2lpX2xlbmd0aCBpcyBhIGJhY2tzbGFzaAorICAgICAgICAgICBmb2xsb3dlZCBieSBhIG5ld2xpbmUuICovCisgICAgICAgIGFzc2VydChpIDw9IGxlbik7CisKICAgICAgICAgLyogTm9uLWVzY2FwZSBjaGFyYWN0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBVbmljb2RlIG9yZGluYWxzICovCiAgICAgICAgIGlmICgqcyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmaSwgKHVuc2lnbmVkIGNoYXIpICpzKyspIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zNzk2LDIwICs1NTY2LDM0IEBACiAgICAgICAgIGMgPSAqcysrOwogICAgICAgICBpZiAocyA+IGVuZCkKICAgICAgICAgICAgIGMgPSAnXDAnOyAvKiBJbnZhbGlkIGFmdGVyIFwgKi8KKworICAgICAgICAvKiBUaGUgb25seSBjYXNlIGluIHdoaWNoIGkgPT0gYXNjaWlfbGVuZ3RoIGlzIGEgYmFja3NsYXNoCisgICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgbmV3bGluZS4gKi8KKyAgICAgICAgYXNzZXJ0KGkgPCBsZW4gfHwgKGkgPT0gbGVuICYmIGMgPT0gJ1xuJykpOworCiAgICAgICAgIHN3aXRjaCAoYykgewogCiAgICAgICAgICAgICAvKiBceCBlc2NhcGVzICovCisjZGVmaW5lIFdSSVRFQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZpLCBjaCkgPCAwKSAgICBcCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH13aGlsZSgwKQorCiAgICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xcJzogKnArKyA9ICdcXCc7IGJyZWFrOwotICAgICAgICBjYXNlICdcJyc6ICpwKysgPSAnXCcnOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCInOiAqcCsrID0gJ1wiJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiAqcCsrID0gJ1xiJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2YnOiAqcCsrID0gJ1wwMTQnOyBicmVhazsgLyogRkYgKi8KLSAgICAgICAgY2FzZSAndCc6ICpwKysgPSAnXHQnOyBicmVhazsKLSAgICAgICAgY2FzZSAnbic6ICpwKysgPSAnXG4nOyBicmVhazsKLSAgICAgICAgY2FzZSAncic6ICpwKysgPSAnXHInOyBicmVhazsKLSAgICAgICAgY2FzZSAndic6ICpwKysgPSAnXDAxMyc7IGJyZWFrOyAvKiBWVCAqLwotICAgICAgICBjYXNlICdhJzogKnArKyA9ICdcMDA3JzsgYnJlYWs7IC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLworICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1wnJzogV1JJVEVDSEFSKCdcJycpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXCInOiBXUklURUNIQVIoJ1wiJyk7IGJyZWFrOworICAgICAgICBjYXNlICdiJzogV1JJVEVDSEFSKCdcYicpOyBicmVhazsKKyAgICAgICAgLyogRkYgKi8KKyAgICAgICAgY2FzZSAnZic6IFdSSVRFQ0hBUignXDAxNCcpOyBicmVhazsKKyAgICAgICAgY2FzZSAndCc6IFdSSVRFQ0hBUignXHQnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ24nOiBXUklURUNIQVIoJ1xuJyk7IGJyZWFrOworICAgICAgICBjYXNlICdyJzogV1JJVEVDSEFSKCdccicpOyBicmVhazsKKyAgICAgICAgLyogVlQgKi8KKyAgICAgICAgY2FzZSAndic6IFdSSVRFQ0hBUignXDAxMycpOyBicmVhazsKKyAgICAgICAgLyogQkVMLCBub3QgY2xhc3NpYyBDICovCisgICAgICAgIGNhc2UgJ2EnOiBXUklURUNIQVIoJ1wwMDcnKTsgYnJlYWs7CiAKICAgICAgICAgICAgIC8qIFxPT08gKG9jdGFsKSBlc2NhcGVzICovCiAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgpAQCAtMzgyMCw3ICs1NjA0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKQogICAgICAgICAgICAgICAgICAgICB4ID0gKHg8PDMpICsgKnMrKyAtICcwJzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwKysgPSB4OworICAgICAgICAgICAgV1JJVEVDSEFSKHgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIC8qIGhleCBlc2NhcGVzICovCkBAIC0zODQyLDI3ICs1NjI2LDI3IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICBoZXhlc2NhcGU6CiAgICAgICAgICAgICBjaHIgPSAwOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmIChzK2RpZ2l0cz5lbmQpIHsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHNpemU7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCAiZW5kIG9mIHN0cmluZyBpbiBlc2NhcGUgc2VxdWVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGlnaXRzOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHNbaV07CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZGlnaXRzOyArK2opIHsKKyAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHNbal07CiAgICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IChzK2krMSktc3RhcnRzOworICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IChzK2orMSktc3RhcnRzOwogICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjaHIgPSAoY2hyPDw0KSAmIH4weEY7CkBAIC0zODczLDM0ICs1NjU3LDIyIEBACiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaHIgKz0gMTAgKyBjIC0gJ0EnOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcyArPSBpOworICAgICAgICAgICAgcyArPSBqOwogICAgICAgICAgICAgaWYgKGNociA9PSAweGZmZmZmZmZmICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgLyogX2RlY29kaW5nX2Vycm9yIHdpbGwgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gaW50byB0aGUKICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYnVmZmVyLiAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzdG9yZToKICAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNociBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgaWYgKGNociA8PSAweGZmZmYpCi0gICAgICAgICAgICAgICAgLyogVUNTLTIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSBjaHI7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaHIgPD0gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgICAgICAvKiBVQ1MtNCBjaGFyYWN0ZXIuIEVpdGhlciBzdG9yZSBkaXJlY3RseSwgb3IgYXMKLSAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgcGFpci4gKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAqcCsrID0gY2hyOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBjaHIgLT0gMHgxMDAwMEw7Ci0gICAgICAgICAgICAgICAgKnArKyA9IDB4RDgwMCArIChQeV9VTklDT0RFKSAoY2hyID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gMHhEQzAwICsgKFB5X1VOSUNPREUpIChjaHIgJiAweDAzRkYpOwotI2VuZGlmCisgICAgICAgICAgICBpZiAoY2hyIDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgV1JJVEVDSEFSKGNocik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkxMCw3ICs1NjgyLDggQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KLSAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKKyAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwogICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0zOTI0LDE3ICs1Njk3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwogICAgICAgICAgICAgICAgICAgICBpZiAocyAtIHN0YXJ0IC0gMSA8PSBJTlRfTUFYICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksICZjaHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KShzLXN0YXJ0LTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaHIsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdG9yZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zOTQzLDI4ICs1NzE2LDI5IEBACiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKICAgICAgICAgICAgICAgICBzLS07CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcilzWy0xXTsKKyAgICAgICAgICAgICAgICBXUklURUNIQVIoJ1xcJyk7CisgICAgICAgICAgICAgICAgV1JJVEVDSEFSKHNbLTFdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICBuZXh0Qnl0ZToKICAgICAgICAgOwogICAgIH0KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPCAwKQorI3VuZGVmIFdSSVRFQ0hBUgorCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBpKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICB1Y25oYXNoRXJyb3I6CiAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMzk5MCw3MCArNTc2NCw1NiBAQAogCiAqLwogCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgUHlfVU5JQ09ERSAqKSBmaW5kY2hhcihjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgLyogbGlrZSB3Y3NjaHIsIGJ1dCBkb2Vzbid0IHN0b3AgYXQgTlVMTCBjaGFyYWN0ZXJzICovCi0KLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBpZiAoKnMgPT0gY2gpCi0gICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgcysrOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCi17CisgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDA7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgotCi0gICAgLyogWFhYKG5ub3J3aXR6KTogcmF0aGVyIHRoYW4gb3Zlci1hbGxvY2F0aW5nLCBpdCB3b3VsZCBiZQotICAgICAgIGJldHRlciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgc2NoZW1lLiAgUGVyaGFwcyBzY2FuIHRoZQotICAgICAgIGZpcnN0IE4tY2hhcnMgb2YgdGhlIHN0cmluZyBhbmQgYWxsb2NhdGUgYmFzZWQgb24gdGhhdCBzaXplLgotICAgICovCi0gICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIHVuaWNocgorICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSBjaGFyYWN0ZXIKICAgICAgICBlc2NhcGUuCiAKLSAgICAgICBJbiB3aWRlIChVVEYtMzIpIGJ1aWxkcyAnXFUwMHh4eHh4eCcgaXMgMTAgY2hhcnMgcGVyIHNvdXJjZQotICAgICAgIHVuaWNociwgc28gaW4gdGhpcyBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4gSW4KLSAgICAgICBuYXJyb3cgKFVURi0xNikgYnVpbGRzIHRoaXMgaXMgZml2ZSBjaGFycyBwZXIgc291cmNlIHVuaWNocgotICAgICAgIHNpbmNlIHRoZXJlIGFyZSB0d28gdW5pY2hycyBpbiB0aGUgc3Vycm9nYXRlIHBhaXIsIHNvIGluIG5hcnJvdwotICAgICAgIChVVEYtMTYpIGJ1aWxkcyBpdCdzIG5vdCB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSBvciBuYXJyb3cgYnVpbGRzICdcdXh4eHgnIGlzIDYgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIsCi0gICAgICAgc28gaW4gdGhlIG5hcnJvdyAoVVRGLTE2KSBidWlsZCBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyCi0gICAgICAgZXNjYXBlLgorICAgICAgIEZvciBVQ1MxIHN0cmluZ3MgaXQncyAnXHh4eCcsIDQgYnl0ZXMgcGVyIHNvdXJjZSBjaGFyYWN0ZXIuCisgICAgICAgRm9yIFVDUzIgc3RyaW5ncyBpdCdzICdcdXh4eHgnLCA2IGJ5dGVzIHBlciBzb3VyY2UgY2hhcmFjdGVyLgorICAgICAgIEZvciBVQ1M0IHN0cmluZ3MgaXQncyAnXFUwMHh4eHh4eCcsIDEwIGJ5dGVzIHBlciBzb3VyY2UgY2hhcmFjdGVyLgogICAgICovCiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA0OyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBleHBhbmRzaXplID0gNjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDEwOyBicmVhazsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwYW5kc2l6ZSpzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKmxlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7CiAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLwogICAgICAgICBpZiAoY2ggPT0gJ1xcJykgewpAQCAtNDA2Miw1NyArNTgyMiwzMCBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCiAgICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REMwMCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICBQeV9VQ1M0IHVjczsKLQotICAgICAgICAgICAgY2gyID0gKnMrKzsKLSAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgIGlmIChjaDIgPj0gMHhEQzAwICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaDogaXNvbGF0ZWQgc3Vycm9nYXRlcyBhcmUgY29waWVkIGFzLWlzICovCi0gICAgICAgICAgICBzLS07Ci0gICAgICAgICAgICBzaXplKys7Ci0gICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMjU2KSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwpAQCAtNDEzMyw4ICs1ODY2LDggQEAKICAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPj0gMHg3RikgewogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCkBAIC00MTQ4LDMwICs1ODgxLDMxIEBACiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqczsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzID0gUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSk7Ci0gICAgcmV0dXJuIHM7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIC0tLSBSYXcgVW5pY29kZSBFc2NhcGUgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpiczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKQEAgLTQxODEsMTIgKzU5MTUsMTIgQEAKICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQogICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLiAoQnV0IGRlY29kaW5nIGVycm9yCiAgICAgICAgaGFuZGxlciBtaWdodCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nKSAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjOwpAQCAtNDE5Niw3ICs1OTMwLDggQEAKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgKHVuc2lnbmVkIGNoYXIpKnMrKykgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKQEAgLTQyMDcsMTkgKzU5NDIsMTkgQEAKICAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKICAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCAodW5zaWduZWQgY2hhcikqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmICgoKHMgLSBicykgJiAxKSA9PSAwIHx8CiAgICAgICAgICAgICBzID49IGVuZCB8fAogICAgICAgICAgICAgKCpzICE9ICd1JyAmJiAqcyAhPSAnVScpKSB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBwLS07CisgICAgICAgIG91dHBvcy0tOwogICAgICAgICBjb3VudCA9ICpzPT0ndScgPyA0IDogODsKICAgICAgICAgcysrOwogCiAgICAgICAgIC8qIFx1WFhYWCB3aXRoIDQgaGV4IGRpZ2l0cywgXFV4eHh4eHh4eCB3aXRoIDggKi8KLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgZm9yICh4ID0gMCwgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK3MpIHsKICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKQEAgLTQyMjgsNyArNTk2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgfQpAQCAtNDI0MCwzNyArNTk3NSwyNiBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwogICAgICAgICB9Ci0gICAgICAgIGlmICh4IDw9IDB4ZmZmZikKLSAgICAgICAgICAgIC8qIFVDUy0yIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSB4OwotICAgICAgICBlbHNlIGlmICh4IDw9IDB4MTBmZmZmKSB7Ci0gICAgICAgICAgICAvKiBVQ1MtNCBjaGFyYWN0ZXIuIEVpdGhlciBzdG9yZSBkaXJlY3RseSwgb3IgYXMKLSAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSBwYWlyLiAqLwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSB4OwotI2Vsc2UKLSAgICAgICAgICAgIHggLT0gMHgxMDAwMEw7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwICsgKFB5X1VOSUNPREUpICh4ID4+IDEwKTsKLSAgICAgICAgICAgICpwKysgPSAweERDMDAgKyAoUHlfVU5JQ09ERSkgKHggJiAweDAzRkYpOwotI2VuZGlmCisgICAgICAgIGlmICh4IDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgIG5leHRCeXRlOgogICAgICAgICA7CiAgICAgfQotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTQyNzksMTQ0ICs2MDAzLDEzOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKICAgICBjaGFyICpxOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSwgcG9zOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CisgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLworICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKKyAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogbGVuKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIHJlcHI7CiAKICAgICBwID0gcSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBwb3MrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0jZWxzZQotICAgICAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCB1Y3M7Ci0KLSAgICAgICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2g6IGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYXJlIGNvcGllZCBhcy1pcyAqLwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2KSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9CiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gcTsKIAotICAgIGFzc2VydChzaXplID4gMCk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQorICAgIGFzc2VydChwID4gcSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIHEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqczsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzID0gUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSk7Ci0KLSAgICByZXR1cm4gczsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogLS0tIFVuaWNvZGUgSW50ZXJuYWwgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlSW50ZXJuYWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlSW50ZXJuYWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpyZWFzb247CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9VTklDT0RFIHVuaW1heCA9IFB5VW5pY29kZV9HZXRNYXgoKTsKLSNlbmRpZgorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBYWFggb3ZlcmZsb3cgZGV0ZWN0aW9uIG1pc3NpbmcgKi8KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoKHNpemUrUHlfVU5JQ09ERV9TSVpFLTEpLyBQeV9VTklDT0RFX1NJWkUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KChzaXplK1B5X1VOSUNPREVfU0laRS0xKS8gUHlfVU5JQ09ERV9TSVpFLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoKFB5T2JqZWN0ICopdikgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSA9PSAwKQorICAgICAgICByZXR1cm4gdjsKKyAgICBvdXRwb3MgPSAwOwogICAgIGVuZCA9IHMgKyBzaXplOwogCiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgbWVtY3B5KHAsIHMsIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIFB5X1VOSUNPREUgdWNoOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICAvKiBXZSBjb3B5IHRoZSByYXcgcmVwcmVzZW50YXRpb24gb25lIGJ5dGUgYXQgYSB0aW1lIGJlY2F1c2UgdGhlCisgICAgICAgICAgIHBvaW50ZXIgbWF5IGJlIHVuYWxpZ25lZCAoc2VlIHRlc3RfY29kZWNjYWxsYmFja3MpLiAqLworICAgICAgICAoKGNoYXIgKikgJnVjaClbMF0gPSBzWzBdOworICAgICAgICAoKGNoYXIgKikgJnVjaClbMV0gPSBzWzFdOworI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgICAgICAoKGNoYXIgKikgJnVjaClbMl0gPSBzWzJdOworICAgICAgICAoKGNoYXIgKikgJnVjaClbM10gPSBzWzNdOworI2VuZGlmCisgICAgICAgIGNoID0gdWNoOworCiAgICAgICAgIC8qIFdlIGhhdmUgdG8gc2FuaXR5IGNoZWNrIHRoZSByYXcgZGF0YSwgb3RoZXJ3aXNlIGRvb20gbG9vbXMgZm9yCiAgICAgICAgICAgIHNvbWUgbWFsZm9ybWVkIFVDUy00IGRhdGEuICovCiAgICAgICAgIGlmICgKICNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICpwID4gdW5pbWF4IHx8ICpwIDwgMCB8fAorICAgICAgICAgICAgY2ggPiAweDEwZmZmZiB8fAogI2VuZGlmCiAgICAgICAgICAgICBlbmQtcyA8IFB5X1VOSUNPREVfU0laRQogICAgICAgICAgICAgKQpAQCAtNDQzMCwyNiArNjE0OSwzOSBAQAogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcyAtIHN0YXJ0cyArIFB5X1VOSUNPREVfU0laRTsKICAgICAgICAgICAgICAgICByZWFzb24gPSAiaWxsZWdhbCBjb2RlIHBvaW50ICg+IDB4MTBGRkZGKSI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiLCByZWFzb24sCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOworI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpICYmIHMgPCBlbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1VOSUNPREUgdWNoMjsKKyAgICAgICAgICAgICgoY2hhciAqKSAmdWNoMilbMF0gPSBzWzBdOworICAgICAgICAgICAgKChjaGFyICopICZ1Y2gyKVsxXSA9IHNbMV07CisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKHVjaDIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVModWNoLCB1Y2gyKTsKKyAgICAgICAgICAgICAgICBzICs9IFB5X1VOSUNPREVfU0laRTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOwotICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTQ0NjAsNTcgKzYxOTIsMjcgQEAKIAogLyogLS0tIExhdGluLTEgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIGNvbnN0IGNoYXIgKmUsICp1bnJvbGxlZF9lbmQ7Ci0KICAgICAvKiBMYXRpbi0xIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDI1NiBvcmRpbmFscyBpbiBVbmljb2RlLiAqLwotICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERSByID0gKih1bnNpZ25lZCBjaGFyKilzOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZyLCAxKTsKLSAgICB9Ci0KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKLSAgICBlID0gcyArIHNpemU7Ci0gICAgLyogVW5yb2xsaW5nIHRoZSBjb3B5IG1ha2VzIGl0IG11Y2ggZmFzdGVyIGJ5IHJlZHVjaW5nIHRoZSBsb29waW5nCi0gICAgICAgb3ZlcmhlYWQuIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IG1hbnkgbWVtY3B5KCkgaW1wbGVtZW50YXRpb25zIGRvLiAqLwotICAgIHVucm9sbGVkX2VuZCA9IGUgLSA0OwotICAgIHdoaWxlIChzIDwgdW5yb2xsZWRfZW5kKSB7Ci0gICAgICAgIHBbMF0gPSAodW5zaWduZWQgY2hhcikgc1swXTsKLSAgICAgICAgcFsxXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzFdOwotICAgICAgICBwWzJdID0gKHVuc2lnbmVkIGNoYXIpIHNbMl07Ci0gICAgICAgIHBbM10gPSAodW5zaWduZWQgY2hhcikgc1szXTsKLSAgICAgICAgcyArPSA0OwotICAgICAgICBwICs9IDQ7Ci0gICAgfQotICAgIHdoaWxlIChzIDwgZSkKLSAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih2KTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTMSgodW5zaWduZWQgY2hhciopcywgc2l6ZSk7CiB9CiAKIC8qIGNyZWF0ZSBvciBhZGp1c3QgYSBVbmljb2RlRW5jb2RlRXJyb3IgKi8KLXN0YXRpYyB2b2lkIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK21ha2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkgewotICAgICAgICAqZXhjZXB0aW9uT2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfQ3JlYXRlKAotICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oCisgICAgICAgICAgICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IsICJzT25ucyIsCisgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydCgqZXhjZXB0aW9uT2JqZWN0LCBzdGFydHBvcykpCkBAIC00NTI3LDE0ICs2MjI5LDE1IEBACiB9CiAKIC8qIHJhaXNlcyBhIFVuaWNvZGVFbmNvZGVFcnJvciAqLwotc3RhdGljIHZvaWQgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKK3N0YXRpYyB2b2lkCityYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ICE9IE5VTEwpCiAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKCpleGNlcHRpb25PYmplY3QpOwogfQpAQCAtNDU0MywxNSArNjI0NiwxNiBAQAogICAgYnVpbGQgYXJndW1lbnRzLCBjYWxsIHRoZSBjYWxsYmFjayBhbmQgY2hlY2sgdGhlIGFyZ3VtZW50cywKICAgIHB1dCB0aGUgcmVzdWx0IGludG8gbmV3cG9zIGFuZCByZXR1cm4gdGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2hpY2gKICAgIGhhcyB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyICovCi1zdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7Ci0KKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKnJlc3VuaWNvZGU7CiAKQEAgLTQ1NjEsOCArNjI2NSwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKICAgICBtYWtlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQ1ODYsOCArNjI5NCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoKm5ld3BvczwwKQotICAgICAgICAqbmV3cG9zID0gc2l6ZSsqbmV3cG9zOwotICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5zaXplKSB7CisgICAgICAgICpuZXdwb3MgPSBsZW4gKyAqbmV3cG9zOworICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5sZW4pIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsICJwb3NpdGlvbiAlemQgZnJvbSBlcnJvciBoYW5kbGVyIG91dCBvZiBib3VuZHMiLCAqbmV3cG9zKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3R1cGxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NTk3LDE4ICs2MzA1LDE3IEBACiAgICAgcmV0dXJuIHJlc3VuaWNvZGU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfdWNzMShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0KQorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfZW5jb2RlX3VjczEoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0KQogeworICAgIC8qIGlucHV0IHN0YXRlICovCisgICAgUHlfc3NpemVfdCBwb3M9MCwgc2l6ZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIC8qIG91dHB1dCBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmVzOwotICAgIC8qIHBvaW50ZXJzIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCsxIG9mIGlucHV0ICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3RhcnRwID0gcDsKLSAgICBjb25zdCBQeV9VTklDT0RFICplbmRwID0gcCArIHNpemU7Ci0gICAgLyogcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB1bmVuY29kYWJsZSBjaGFyYWN0ZXJzICovCi0gICAgLyogY29uc3QgUHlfVU5JQ09ERSAqYmFkcCA9IE5VTEw7ICovCiAgICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KICAgICBjaGFyICpzdHI7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KQEAgLTQ2MjEsNiArNjMyOCwxMSBAQAogICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwogICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgZW5jb2Rpbmcgd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KICAgICBpZiAoc2l6ZSA9PSAwKQpAQCAtNDYzMSwyOCArNjM0MywyNCBAQAogICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7CiAgICAgcmVzc2l6ZSA9IHNpemU7CiAKLSAgICB3aGlsZSAocDxlbmRwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9ICpwOworICAgIHdoaWxlIChwb3MgPCBzaXplKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CiAKICAgICAgICAgLyogY2FuIHdlIGVuY29kZSB0aGlzPyAqLwogICAgICAgICBpZiAoYzxsaW1pdCkgewogICAgICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KICAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWM7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICArK3BvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdW5pY29kZXBvcyA9IHAtc3RhcnRwOwogICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemU7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXNwb3M7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1bmkyOworICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBuZXdwb3MsIHJlc3BvcywgaTsKICAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVuZW5jb2RhYmxlIGNoYXJzICovCi0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsc3RhcnQgPSBwOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbGVuZCA9IHA7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IHBvczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IHBvczsKICAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVuZWNvZGFibGUgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgZW5kcCkgJiYgKCgqY29sbGVuZCk+PWxpbWl0KSkKKyAgICAgICAgICAgIHdoaWxlICgoY29sbGVuZCA8IHNpemUpICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjb2xsZW5kKT49bGltaXQpKQogICAgICAgICAgICAgICAgICsrY29sbGVuZDsKICAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCiAgICAgICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewpAQCAtNDY2OSwzOSArNjM3NywzNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgc3RhcnRwLCBzaXplLCBjb2xsc3RhcnQtc3RhcnRwLCBjb2xsZW5kLXN0YXJ0cCwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKGNvbGxzdGFydCsrPGNvbGxlbmQpCiAgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICc/JzsgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0LCByZXBzaXplID0gMDsgcCA8IGNvbGxlbmQ7ICsrcCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnA8MTApCisgICAgICAgICAgICAgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQsIHJlcHNpemUgPSAwOyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzIrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzMrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrNCsxOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis1KzE7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrNSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrNisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis3KzE7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoZW5kcC1jb2xsZW5kKTsKKyAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKTsKICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplPDIqcmVzc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKQEAgLTQ3MTAsMTcgKzY0MTYsMTggQEAKICAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKICAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBwKSAqLwotICAgICAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkgewotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gc3ByaW50ZihzdHIsICImIyVkOyIsIChpbnQpKnApOworICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCBzdGFydHAsIHNpemUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOworICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwgfHwgKFB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXB1bmljb2RlKSkgewogICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCkBAIC00NzM3LDcgKzY0NDQsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1lbWNweShzdHIsIFB5Qnl0ZXNfQXNTdHJpbmcocmVwdW5pY29kZSksIHJlcHNpemUpOwogICAgICAgICAgICAgICAgICAgICBzdHIgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgcCA9IHN0YXJ0cCArIG5ld3BvczsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ3NDUsOCArNjQ1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgc28KICAgICAgICAgICAgICAgICAgICB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlIGZvciBlbmNvZGFibGUgY2hhcmFjdGVycykgKi8KICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zK3JlcHNpemUrKGVuZHAtY29sbGVuZCk7CisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipyZXNzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwpAQCAtNDc1OSwxNyArNjQ2NiwxNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUgcmVwbGFjZW1lbnQKICAgICAgICAgICAgICAgICAgICBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCi0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7cmVwc2l6ZS0tPjA7ICsrdW5pMiwgKytzdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICp1bmkyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IHJlcHNpemUtLT4wOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHVuaWNvZGUsIGkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYyA+PSBsaW1pdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgc3RhcnRwLCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlcG9zLCB1bmljb2RlcG9zKzEsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ3OTMsMzMgKzY1MDAsNTcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEocCwgc2l6ZSwgZXJyb3JzLCAyNTYpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDI1Nik7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBGYXN0IHBhdGg6IGlmIGl0IGlzIGEgb25lLWJ5dGUgc3RyaW5nLCBjb25zdHJ1Y3QKKyAgICAgICBieXRlcyBvYmplY3QgZGlyZWN0bHkuICovCisgICAgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIC8qIE5vbi1MYXRpbi0xIGNoYXJhY3RlcnMgcHJlc2VudC4gRGVmZXIgdG8gYWJvdmUgZnVuY3Rpb24gdG8KKyAgICAgICByYWlzZSB0aGUgZXhjZXB0aW9uLiAqLworICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgTlVMTCk7CiB9CiAKIC8qIC0tLSA3LWJpdCBBU0NJSSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZUFTQ0lJKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUFTQ0lJKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CkBAIC00ODI3LDcwICs2NTU4LDk5IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICAvKiBBU0NJSSBpcyBlcXVpdmFsZW50IHRvIHRoZSBmaXJzdCAxMjggb3JkaW5hbHMgaW4gVW5pY29kZS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAxICYmICoodW5zaWduZWQgY2hhciopcyA8IDEyOCkgewotICAgICAgICBQeV9VTklDT0RFIHIgPSAqKHVuc2lnbmVkIGNoYXIqKXM7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnIsIDEpOworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9CiAKLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICAvKiBBU0NJSSBpcyBlcXVpdmFsZW50IHRvIHRoZSBmaXJzdCAxMjggb3JkaW5hbHMgaW4gVW5pY29kZS4gKi8KKyAgICBpZiAoc2l6ZSA9PSAxICYmICh1bnNpZ25lZCBjaGFyKXNbMF0gPCAxMjgpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpc1swXSk7CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisKICAgICBlID0gcyArIHNpemU7CisgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlLCAoUHlfVUNTMSAqKWRhdGEpOworICAgIGlmIChvdXRwb3MgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisKKyAgICBzICs9IG91dHBvczsKKyAgICBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CiAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICBpZiAoYyA8IDEyOCkgewotICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgb3V0cG9zKyssIGMpOwogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSAoUHlfVU5JQ09ERSAqKVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikgPCBQeVVuaWNvZGVfR0VUX1NJWkUodikpCi0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIFB5X1hERUNSRUYodW5pY29kZSk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEocCwgc2l6ZSwgZXJyb3JzLCAxMjgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDEyOCk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogRmFzdCBwYXRoOiBpZiBpdCBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZywgY29uc3RydWN0IGJ5dGVzIG9iamVjdAorICAgICAgIGRpcmVjdGx5LiBFbHNlIGRlZmVyIHRvIGFib3ZlIGZ1bmN0aW9uIHRvIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDEyOCk7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgTlVMTCk7Cit9CisKKyNpZmRlZiBIQVZFX01CQ1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTQ4OTgsMzM2ICs2NjU4LDg0MiBAQAogI2RlZmluZSBORUVEX1JFVFJZCiAjZW5kaWYKIAotLyogWFhYIFRoaXMgY29kZSBpcyBsaW1pdGVkIHRvICJ0cnVlIiBkb3VibGUtYnl0ZSBlbmNvZGluZ3MsIGFzCi0gICBhKSBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlIGJ5dGUsIGFuZAotICAgYikgSXNEQkNTTGVhZEJ5dGUgKHByb2JhYmx5KSBkb2VzIG5vdCB3b3JrIGZvciBub24tREJDUyBtdWx0aS1ieXRlCi0gICBlbmNvZGluZ3MsIHNlZSBJc0RCQ1NMZWFkQnl0ZUV4IGRvY3VtZW50YXRpb24uICovCisjaWZuZGVmIFdDX0VSUl9JTlZBTElEX0NIQVJTCisjICBkZWZpbmUgV0NfRVJSX0lOVkFMSURfQ0hBUlMgMHgwMDgwCisjZW5kaWYKIAotc3RhdGljIGludCBpc19kYmNzX2xlYWRfYnl0ZShjb25zdCBjaGFyICpzLCBpbnQgb2Zmc2V0KQorc3RhdGljIGNoYXIqCitjb2RlX3BhZ2VfbmFtZShVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvYmopCit7CisgICAgKm9iaiA9IE5VTEw7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9BQ1ApCisgICAgICAgIHJldHVybiAibWJjcyI7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KQorICAgICAgICByZXR1cm4gIkNQX1VURjciOworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkKKyAgICAgICAgcmV0dXJuICJDUF9VVEY4IjsKKworICAgICpvYmogPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoImNwJXUiLCBjb2RlX3BhZ2UpOworICAgIGlmICgqb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORygqb2JqKTsKK30KKworc3RhdGljIGludAoraXNfZGJjc19sZWFkX2J5dGUoVUlOVCBjb2RlX3BhZ2UsIGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCiB7CiAgICAgY29uc3QgY2hhciAqY3VyciA9IHMgKyBvZmZzZXQ7CisgICAgY29uc3QgY2hhciAqcHJldjsKIAotICAgIGlmIChJc0RCQ1NMZWFkQnl0ZSgqY3VycikpIHsKLSAgICAgICAgY29uc3QgY2hhciAqcHJldiA9IENoYXJQcmV2KHMsIGN1cnIpOwotICAgICAgICByZXR1cm4gKHByZXYgPT0gY3VycikgfHwgIUlzREJDU0xlYWRCeXRlKCpwcmV2KSB8fCAoY3VyciAtIHByZXYgPT0gMik7Ci0gICAgfQorICAgIGlmICghSXNEQkNTTGVhZEJ5dGVFeChjb2RlX3BhZ2UsICpjdXJyKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwcmV2ID0gQ2hhclByZXZFeEEoY29kZV9wYWdlLCBzLCBjdXJyLCAwKTsKKyAgICBpZiAocHJldiA9PSBjdXJyKQorICAgICAgICByZXR1cm4gMTsKKyAgICAvKiBGSVhNRTogVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywKKyAgICAgICBhcyBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlCisgICAgICAgYnl0ZS4gKi8KKyAgICBpZiAoY3VyciAtIHByZXYgPT0gMikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKnByZXYpKQorICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKIH0KIAotLyoKLSAqIERlY29kZSBNQkNTIHN0cmluZyBpbnRvIHVuaWNvZGUgb2JqZWN0LiBJZiAnZmluYWwnIGlzIHNldCwgY29udmVydHMKLSAqIHRyYWlsaW5nIGxlYWQtYnl0ZSB0b28uIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCAtMSBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBpbnQgZGVjb2RlX21iY3MoUHlVbmljb2RlT2JqZWN0ICoqdiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgLyogTUJDUyBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIC8qIHNpemVvZiBNQkNTIHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3N0YXRpYyBEV09SRAorZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSkKIHsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X3NzaXplX3QgbjsKLSAgICBEV09SRCB1c2l6ZTsKLSAgICBEV09SRCBmbGFnczsKLQotICAgIGFzc2VydChzaXplID49IDApOwotCi0gICAgLyogY2hlY2sgYW5kIGhhbmRsZSAnZXJyb3JzJyBhcmcgKi8KLSAgICBpZiAoZXJyb3JzPT1OVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKT09MCkKLSAgICAgICAgZmxhZ3MgPSBNQl9FUlJfSU5WQUxJRF9DSEFSUzsKLSAgICBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIik9PTApCi0gICAgICAgIGZsYWdzID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibWJjcyBlbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IGVycm9ycz0nJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjcpIHsKKyAgICAgICAgLyogVGhlIENQX1VURjcgZGVjb2RlciBvbmx5IHN1cHBvcnRzIGZsYWdzPTAgKi8KKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1CX0VSUl9JTlZBTElEX0NIQVJTOworfQogCi0gICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCi0gICAgaWYgKCFmaW5hbCAmJiBzaXplID49IDEgJiYgaXNfZGJjc19sZWFkX2J5dGUocywgc2l6ZSAtIDEpKQotICAgICAgICAtLXNpemU7CisvKgorICogRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZnJvbSBhIFdpbmRvd3MgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3QgaW4gc3RyaWN0CisgKiBtb2RlLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCByZXR1cm5zIC0yIG9uIGRlY29kZSBlcnJvciwgb3IgcmFpc2UgYQorICogV2luZG93c0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgorICovCitzdGF0aWMgaW50CitkZWNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc2l6ZSkKK3sKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGRlY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlKTsKKyAgICB3Y2hhcl90ICpvdXQ7CisgICAgRFdPUkQgb3V0c2l6ZTsKIAogICAgIC8qIEZpcnN0IGdldCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0ICovCi0gICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIGZsYWdzLCBzLCBzaXplLCBOVUxMLCAwKTsKLSAgICAgICAgaWYgKHVzaXplPT0wKQotICAgICAgICAgICAgZ290byBtYmNzX2RlY29kZV9lcnJvcjsKLSAgICB9IGVsc2UKLSAgICAgICAgdXNpemUgPSAwOworICAgIGFzc2VydChpbnNpemUgPiAwKTsKKyAgICBvdXRzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlX3BhZ2UsIGZsYWdzLCBpbiwgaW5zaXplLCBOVUxMLCAwKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKCp2ID09IE5VTEwpIHsKICAgICAgICAgLyogQ3JlYXRlIHVuaWNvZGUgb2JqZWN0ICovCi0gICAgICAgICp2ID0gX1B5VW5pY29kZV9OZXcodXNpemUpOworICAgICAgICAvKiBGSVhNRTogZG9uJ3QgdXNlIF9QeVVuaWNvZGVfTmV3KCksIGJ1dCBhbGxvY2F0ZSBhIHdjaGFyX3QqIGJ1ZmZlciAqLworICAgICAgICAqdiA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcob3V0c2l6ZSk7CiAgICAgICAgIGlmICgqdiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBuID0gMDsKKyAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCi0gICAgICAgIG4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnYpOwotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUodiwgbiArIHVzaXplKSA8IDApCisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7CisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBuICsgb3V0c2l6ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBuOwogICAgIH0KIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCi0gICAgaWYgKHVzaXplID4gMCkgewotICAgICAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgbjsKLSAgICAgICAgaWYgKDAgPT0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIGZsYWdzLCBzLCBzaXplLCBwLCB1c2l6ZSkpIHsKLSAgICAgICAgICAgIGdvdG8gbWJjc19kZWNvZGVfZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNpemU7CisgICAgb3V0c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZV9wYWdlLCBmbGFncywgaW4sIGluc2l6ZSwgb3V0LCBvdXRzaXplKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiBpbnNpemU7CiAKLW1iY3NfZGVjb2RlX2Vycm9yOgotICAgIC8qIElmIHRoZSBsYXN0IGVycm9yIHdhcyBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OLCB0aGVuCi0gICAgICAgd2UgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IgLSBlbHNlIGl0IGlzIGEgJ2dlbmVyaWMnCi0gICAgICAgd2luZG93cyBlcnJvcgotICAgICAqLwotICAgIGlmIChHZXRMYXN0RXJyb3IoKT09RVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTikgewotICAgICAgICAvKiBJZGVhbGx5LCB3ZSBzaG91bGQgZ2V0IHJlYXNvbiBmcm9tIEZvcm1hdE1lc3NhZ2UgLSB0aGlzCi0gICAgICAgICAgIGlzIHRoZSBXaW5kb3dzIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlCi0gICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgICAgICBjb25zdCBjaGFyICpyZWFzb24gPSAiTm8gbWFwcGluZyBmb3IgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGV4aXN0cyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGFyZ2V0IG11bHRpLWJ5dGUgY29kZSBwYWdlLiI7Ci0gICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCAibWJjcyIsIHMsIHNpemUsIDAsIDAsIHJlYXNvbik7Ci0gICAgICAgIGlmIChleGMgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgfQorZXJyb3I6CisgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pCisgICAgICAgIHJldHVybiAtMjsKKyAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy8qCisgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3Qgd2l0aCBhbiBlcnJvcgorICogaGFuZGxlci4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIHNpemUgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3Igb3IKKyAqIFVuaWNvZGVEZWNvZGVFcnJvciBleGNlcHRpb24gYW5kIHJldHVybnMgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK2RlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKFVJTlQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sIGNvbnN0IGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdiA9IE5VTEw7Ci0gICAgaW50IGRvbmU7CisgICAgY29uc3QgY2hhciAqc3RhcnRpbiA9IGluOworICAgIGNvbnN0IGNoYXIgKmVuZGluID0gaW4gKyBzaXplOworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UpOworICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZS4gVGhpcyBpcyB0aGUgV2luZG93cworICAgICAgIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLiAqLworICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJObyBtYXBwaW5nIGZvciB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZXhpc3RzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIHRhcmdldCBjb2RlIHBhZ2UuIjsKKyAgICAvKiBlYWNoIHN0ZXAgY2Fubm90IGRlY29kZSBtb3JlIHRoYW4gMSBjaGFyYWN0ZXIsIGJ1dCBhIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgICByZXByZXNlbnRlZCBhcyBhIHN1cnJvZ2F0ZSBwYWlyICovCisgICAgd2NoYXJfdCBidWZmZXJbMl0sICpzdGFydG91dCwgKm91dDsKKyAgICBpbnQgaW5zaXplLCBvdXRzaXplOworICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOworICAgIGNoYXIgKmVuY29kaW5nOworICAgIERXT1JEIGVycjsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBhc3NlcnQoc2l6ZSA+IDApOworCisgICAgZW5jb2RpbmcgPSBjb2RlX3BhZ2VfbmFtZShjb2RlX3BhZ2UsICZlbmNvZGluZ19vYmopOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4gd2UgcmFpc2UgYQorICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuICovCisgICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgaW4sIHNpemUsIDAsIDAsIHJlYXNvbik7CisgICAgICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGV4Yyk7CisgICAgICAgIH0KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKnYgPT0gTlVMTCkgeworICAgICAgICAvKiBDcmVhdGUgdW5pY29kZSBvYmplY3QgKi8KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChidWZmZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBGSVhNRTogZG9uJ3QgdXNlIF9QeVVuaWNvZGVfTmV3KCksIGJ1dCBhbGxvY2F0ZSBhIHdjaGFyX3QqIGJ1ZmZlciAqLworICAgICAgICAqdiA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcoc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKTsKKyAgICAgICAgaWYgKCp2ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzdGFydG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEV4dGVuZCB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnYpOworICAgICAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIG4pIC8gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBuICsgc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzdGFydG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KSArIG47CisgICAgfQorCisgICAgLyogRGVjb2RlIHRoZSBieXRlIHN0cmluZyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlciAqLworICAgIG91dCA9IHN0YXJ0b3V0OworICAgIHdoaWxlIChpbiA8IGVuZGluKQorICAgIHsKKyAgICAgICAgLyogRGVjb2RlIGEgY2hhcmFjdGVyICovCisgICAgICAgIGluc2l6ZSA9IDE7CisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dHNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiwgaW5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSk7CisgICAgICAgICAgICBpZiAob3V0c2l6ZSA+IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTgorICAgICAgICAgICAgICAgICYmIGVyciAhPSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnNpemUrKzsKKyAgICAgICAgfQorICAgICAgICAvKiA0PW1heGltdW0gbGVuZ3RoIG9mIGEgVVRGLTggc2VxdWVuY2UgKi8KKyAgICAgICAgd2hpbGUgKGluc2l6ZSA8PSA0ICYmIChpbiArIGluc2l6ZSkgPD0gZW5kaW4pOworCisgICAgICAgIGlmIChvdXRzaXplIDw9IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvcywgZW5kaW5wb3MsIG91dHBvczsKKworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IGluIC0gc3RhcnRpbjsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICBvdXRwb3MgPSBvdXQgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgJnN0YXJ0aW4sICZlbmRpbiwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJmluLAorICAgICAgICAgICAgICAgICAgICB2LCAmb3V0cG9zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgb3V0cG9zOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW4gKz0gaW5zaXplOworICAgICAgICAgICAgbWVtY3B5KG91dCwgYnVmZmVyLCBvdXRzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICB9CisgICAgfQorCisgICAgLyogd3JpdGUgYSBOVUwgY2hhcmFjdGVyIGF0IHRoZSBlbmQgKi8KKyAgICAqb3V0ID0gMDsKKworICAgIC8qIEV4dGVuZCB1bmljb2RlIG9iamVjdCAqLworICAgIG91dHNpemUgPSBvdXQgLSBzdGFydG91dDsKKyAgICBhc3NlcnQob3V0c2l6ZSA8PSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgoKnYpKTsKKyAgICBpZiAodW5pY29kZV9yZXNpemUodiwgb3V0c2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldCA9IHNpemU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CisgICAgaW50IGNodW5rX3NpemUsIGZpbmFsLCBjb252ZXJ0ZWQsIGRvbmU7CisKKyAgICBpZiAoY29kZV9wYWdlIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgY29kZSBwYWdlIG51bWJlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IDA7CiAKKyAgICBkbworICAgIHsKICNpZmRlZiBORUVEX1JFVFJZCi0gIHJldHJ5OgotICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgZG9uZSA9IGRlY29kZV9tYmNzKCZ2LCBzLCBJTlRfTUFYLCAwLCBlcnJvcnMpOwotICAgIGVsc2UKKyAgICAgICAgaWYgKHNpemUgPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBjaHVua19zaXplID0gSU5UX01BWDsKKyAgICAgICAgICAgIGZpbmFsID0gMDsKKyAgICAgICAgICAgIGRvbmUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICBkb25lID0gZGVjb2RlX21iY3MoJnYsIHMsIChpbnQpc2l6ZSwgIWNvbnN1bWVkLCBlcnJvcnMpOworICAgICAgICB7CisgICAgICAgICAgICBjaHVua19zaXplID0gKGludClzaXplOworICAgICAgICAgICAgZmluYWwgPSAoY29uc3VtZWQgPT0gTlVMTCk7CisgICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQogCi0gICAgaWYgKGRvbmUgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYodik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICAgICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCisgICAgICAgIGlmICghZmluYWwgJiYgaXNfZGJjc19sZWFkX2J5dGUoY29kZV9wYWdlLCBzLCBjaHVua19zaXplIC0gMSkpCisgICAgICAgICAgICAtLWNodW5rX3NpemU7CiAKLSAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICpjb25zdW1lZCArPSBkb25lOworICAgICAgICBpZiAoY2h1bmtfc2l6ZSA9PSAwICYmIGRvbmUpIHsKKyAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgfQogCi0jaWZkZWYgTkVFRF9SRVRSWQotICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICBzICs9IGRvbmU7Ci0gICAgICAgIHNpemUgLT0gZG9uZTsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICB9Ci0jZW5kaWYKIAotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgICAgICBjb252ZXJ0ZWQgPSBkZWNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplKTsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAtMikKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgYXNzZXJ0KGNvbnZlcnRlZCAhPSAwKTsKKworICAgICAgICBpZiAoY29udmVydGVkIDwgMCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRih2KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkICs9IGNvbnZlcnRlZDsKKworICAgICAgICBzICs9IGNvbnZlcnRlZDsKKyAgICAgICAgc2l6ZSAtPSBjb252ZXJ0ZWQ7CisgICAgfSB3aGlsZSAoIWRvbmUpOworCisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZU1CQ1MoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICByZXR1cm4gZGVjb2RlX2NvZGVfcGFnZV9zdGF0ZWZ1bChjb2RlX3BhZ2UsIHMsIHNpemUsIGVycm9ycywgY29uc3VtZWQpOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICByZXR1cm4gZGVjb2RlX2NvZGVfcGFnZV9zdGF0ZWZ1bChDUF9BQ1AsIHMsIHNpemUsIGVycm9ycywgY29uc3VtZWQpOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTUJDUyhjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CiAKK3N0YXRpYyBEV09SRAorZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkgeworICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpCisgICAgICAgICAgICAvKiBDUF9VVEY4IHN1cHBvcnRzIFdDX0VSUl9JTlZBTElEX0NIQVJTIG9uIFdpbmRvd3MgVmlzdGEKKyAgICAgICAgICAgICAgIGFuZCBsYXRlciAqLworICAgICAgICAgICAgcmV0dXJuIFdDX0VSUl9JTlZBTElEX0NIQVJTOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvKiBDUF9VVEY4IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCBvbiBXaW5kb3dzIG9sZGVyIHRoYW4gVmlzdGEgKi8KKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgeworICAgICAgICAvKiBDUF9VVEY3IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChlcnJvcnMgIT0gTlVMTCAmJiBzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFdDX05PX0JFU1RfRklUX0NIQVJTOworICAgIH0KK30KKwogLyoKLSAqIENvbnZlcnQgdW5pY29kZSBpbnRvIHN0cmluZyBvYmplY3QgKE1CQ1MpLgotICogUmV0dXJucyAwIGlmIHN1Y2NlZWQsIC0xIG90aGVyd2lzZS4KKyAqIEVuY29kZSBhIFVuaWNvZGUgc3RyaW5nIHRvIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byBhIGJ5dGUgc3RyaW5nIGluIHN0cmljdAorICogbW9kZS4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIGNoYXJhY3RlcnMgaWYgc3VjY2VlZCwgcmV0dXJucyAtMiBvbiBlbmNvZGUgZXJyb3IsIG9yIHJhaXNlCisgKiBhIFdpbmRvd3NFcnJvciBhbmQgcmV0dXJucyAtMSBvbiBvdGhlciBlcnJvci4KICAqLwotc3RhdGljIGludCBlbmNvZGVfbWJjcyhQeU9iamVjdCAqKnJlcHIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsIC8qIHVuaWNvZGUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIC8qIHNpemUgb2YgdW5pY29kZSAqLwotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvcnMpCitzdGF0aWMgaW50CitlbmNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IG9mZnNldCwgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKICAgICBCT09MIHVzZWREZWZhdWx0Q2hhciA9IEZBTFNFOwotICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXI7Ci0gICAgaW50IG1iY3NzaXplOwotICAgIFB5X3NzaXplX3QgbjsKKyAgICBCT09MICpwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKKyAgICBpbnQgb3V0c2l6ZTsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBEV09SRCBmbGFnczsKKyAgICB3Y2hhcl90ICpwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBOVUxMKTsKKyAgICBjaGFyICpvdXQ7CisgICAgLyogQ3JlYXRlIGEgc3Vic3RyaW5nIHNvIHRoYXQgd2UgY2FuIGdldCB0aGUgVVRGLTE2IHJlcHJlc2VudGF0aW9uCisgICAgICAgb2YganVzdCB0aGUgc2xpY2UgdW5kZXIgY29uc2lkZXJhdGlvbi4gKi8KKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogCi0gICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOwogCi0gICAgLyogY2hlY2sgYW5kIGhhbmRsZSAnZXJyb3JzJyBhcmcgKi8KLSAgICBpZiAoZXJyb3JzPT1OVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKT09MCkgewotICAgICAgICBmbGFncyA9IFdDX05PX0JFU1RfRklUX0NIQVJTOworICAgIGlmIChjb2RlX3BhZ2UgIT0gQ1BfVVRGOCAmJiBjb2RlX3BhZ2UgIT0gQ1BfVVRGNykKICAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9ICZ1c2VkRGVmYXVsdENoYXI7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpPT0wKSB7Ci0gICAgICAgIGZsYWdzID0gMDsKKyAgICBlbHNlCiAgICAgICAgIHB1c2VkRGVmYXVsdENoYXIgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAibWJjcyBlbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IGVycm9ycz0nJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX1N1YnN0cmluZyh1bmljb2RlLCBvZmZzZXQsIG9mZnNldCtsZW4pOworICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShzdWJzdHJpbmcsICZzaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogRmlyc3QgZ2V0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgKi8KLSAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgbWJjc3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgZmxhZ3MsIHAsIHNpemUsIE5VTEwsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKTsKLSAgICAgICAgaWYgKG1iY3NzaXplID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKDAsIE5VTEwpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIC8qIElmIHdlIHVzZWQgYSBkZWZhdWx0IGNoYXIsIHRoZW4gd2UgZmFpbGVkISAqLwotICAgICAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKLSAgICAgICAgICAgIGdvdG8gbWJjc19lbmNvZGVfZXJyb3I7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWJjc3NpemUgPSAwOworICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgLyogSWYgd2UgdXNlZCBhIGRlZmF1bHQgY2hhciwgdGhlbiB3ZSBmYWlsZWQhICovCisgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgJiYgKnB1c2VkRGVmYXVsdENoYXIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiAtMjsKICAgICB9CiAKLSAgICBpZiAoKnJlcHIgPT0gTlVMTCkgeworICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkgewogICAgICAgICAvKiBDcmVhdGUgc3RyaW5nIG9iamVjdCAqLwotICAgICAgICAqcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWJjc3NpemUpOwotICAgICAgICBpZiAoKnJlcHIgPT0gTlVMTCkKKyAgICAgICAgKm91dGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBvdXRzaXplKTsKKyAgICAgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIEV4dGVuZCBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgIG4gPSBQeUJ5dGVzX1NpemUoKnJlcHIpOwotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKHJlcHIsIG4gKyBtYmNzc2l6ZSkgPCAwKQorICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG4gPSBQeUJ5dGVzX1NpemUoKm91dGJ5dGVzKTsKKyAgICAgICAgaWYgKG91dHNpemUgPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuICsgb3V0c2l6ZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgbjsKICAgICB9CiAKICAgICAvKiBEbyB0aGUgY29udmVyc2lvbiAqLwotICAgIGlmIChzaXplID4gMCkgewotICAgICAgICBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoKnJlcHIpICsgbjsKLSAgICAgICAgaWYgKDAgPT0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIGZsYWdzLCBwLCBzaXplLCBzLCBtYmNzc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgJiYgKnB1c2VkRGVmYXVsdENoYXIpCi0gICAgICAgICAgICBnb3RvIG1iY3NfZW5jb2RlX2Vycm9yOwotICAgIH0KKyAgICBvdXRzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShjb2RlX3BhZ2UsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCBvdXRzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgIFB5X0NMRUFSKHN1YnN0cmluZyk7CisgICAgaWYgKG91dHNpemUgPD0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIHJldHVybiAwOwogCi1tYmNzX2VuY29kZV9lcnJvcjoKLSAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJtYmNzIiwgcCwgc2l6ZSwgMCwgMCwgImludmFsaWQgY2hhcmFjdGVyIik7Ci0gICAgUHlfWERFQ1JFRihleGMpOworZXJyb3I6CisgICAgUHlfWERFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKQorICAgICAgICByZXR1cm4gLTI7CisgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgcmV0dXJuIC0xOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZU1CQ1MoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyoKKyAqIEVuY29kZSBhIFVuaWNvZGUgc3RyaW5nIHRvIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byBhIGJ5dGUgc3RyaW5nIHVzaW5nIGEKKyAqIGVycm9yIGhhbmRsZXIuCisgKgorICogUmV0dXJucyBjb25zdW1lZCBjaGFyYWN0ZXJzIGlmIHN1Y2NlZWQsIG9yIHJhaXNlIGEgV2luZG93c0Vycm9yIGFuZCByZXR1cm5zCisgKiAtMSBvbiBvdGhlciBlcnJvci4KKyAqLworc3RhdGljIGludAorZW5jb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICoqb3V0Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCB1bmljb2RlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7Ci0gICAgUHlPYmplY3QgKnJlcHIgPSBOVUxMOwotICAgIGludCByZXQ7CisgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSwgZXJyb3JzKTsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IHVuaWNvZGVfb2Zmc2V0OworICAgIFB5X3NzaXplX3QgZW5kaW4gPSB1bmljb2RlX29mZnNldCArIGluc2l6ZTsKKyAgICAvKiBJZGVhbGx5LCB3ZSBzaG91bGQgZ2V0IHJlYXNvbiBmcm9tIEZvcm1hdE1lc3NhZ2UuIFRoaXMgaXMgdGhlIFdpbmRvd3MKKyAgICAgICAyMDAwIEVuZ2xpc2ggdmVyc2lvbiBvZiB0aGUgbWVzc2FnZS4gKi8KKyAgICBjb25zdCBjaGFyICpyZWFzb24gPSAiaW52YWxpZCBjaGFyYWN0ZXIiOworICAgIC8qIDQ9bWF4aW11bSBsZW5ndGggb2YgYSBVVEYtOCBzZXF1ZW5jZSAqLworICAgIGNoYXIgYnVmZmVyWzRdOworICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0UsICpwdXNlZERlZmF1bHRDaGFyOworICAgIFB5X3NzaXplX3Qgb3V0c2l6ZTsKKyAgICBjaGFyICpvdXQ7CisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CisgICAgY2hhciAqZW5jb2Rpbmc7CisgICAgUHlfc3NpemVfdCBuZXdwb3MsIG5ld291dHNpemU7CisgICAgUHlPYmplY3QgKnJlcDsKKyAgICBpbnQgcmV0ID0gLTE7CiAKLSNpZmRlZiBORUVEX1JFVFJZCi0gIHJldHJ5OgotICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgcmV0ID0gZW5jb2RlX21iY3MoJnJlcHIsIHAsIElOVF9NQVgsIGVycm9ycyk7CisgICAgYXNzZXJ0KGluc2l6ZSA+IDApOworCisgICAgZW5jb2RpbmcgPSBjb2RlX3BhZ2VfbmFtZShjb2RlX3BhZ2UsICZlbmNvZGluZ19vYmopOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sCisgICAgICAgICAgIHRoZW4gd2UgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuICovCisgICAgICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwgMCwgMCwgcmVhc29uKTsKKyAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGNvZGVfcGFnZSAhPSBDUF9VVEY4ICYmIGNvZGVfcGFnZSAhPSBDUF9VVEY3KQorICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmV0ID0gZW5jb2RlX21iY3MoJnJlcHIsIHAsIChpbnQpc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9IE5VTEw7CiAKLSAgICBpZiAocmV0IDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHJlcHIpOworICAgIGlmIChQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSA+IFBZX1NTSVpFX1RfTUFYIC8gaW5zaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG91dHNpemUgPSBpbnNpemUgKiBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKTsKKworICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkgeworICAgICAgICAvKiBDcmVhdGUgc3RyaW5nIG9iamVjdCAqLworICAgICAgICAqb3V0Ynl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHNpemUpOworICAgICAgICBpZiAoKm91dGJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXh0ZW5kIHN0cmluZyBvYmplY3QgKi8KKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlCeXRlc19TaXplKCpvdXRieXRlcyk7CisgICAgICAgIGlmIChuID4gUFlfU1NJWkVfVF9NQVggLSBvdXRzaXplKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuICsgb3V0c2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKSArIG47CisgICAgfQorCisgICAgLyogRW5jb2RlIHRoZSBzdHJpbmcgY2hhcmFjdGVyIHBlciBjaGFyYWN0ZXIgKi8KKyAgICB3aGlsZSAocG9zIDwgZW5kaW4pCisgICAgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBwb3MpOworICAgICAgICB3Y2hhcl90IGNoYXJzWzJdOworICAgICAgICBpbnQgY2hhcnNpemU7CisgICAgICAgIGlmIChjaCA8IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGNoYXJzWzBdID0gKHdjaGFyX3QpY2g7CisgICAgICAgICAgICBjaGFyc2l6ZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCAtPSAweDEwMDAwOworICAgICAgICAgICAgY2hhcnNbMF0gPSAweGQ4MDAgKyAoY2ggPj4gMTApOworICAgICAgICAgICAgY2hhcnNbMV0gPSAweGRjMDAgKyAoY2ggJiAweDNmZik7CisgICAgICAgICAgICBjaGFyc2l6ZSA9IDI7CisgICAgICAgIH0KKworICAgICAgICBvdXRzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShjb2RlX3BhZ2UsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFycywgY2hhcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgICAgICBpZiAob3V0c2l6ZSA+IDApIHsKKyAgICAgICAgICAgIGlmIChwdXNlZERlZmF1bHRDaGFyID09IE5VTEwgfHwgISgqcHVzZWREZWZhdWx0Q2hhcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgbWVtY3B5KG91dCwgYnVmZmVyLCBvdXRzaXplKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gb3V0c2l6ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgZW5jb2RpbmcsIHJlYXNvbiwKKyAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICBwb3MsIHBvcyArIDEsICZuZXdwb3MpOworICAgICAgICBpZiAocmVwID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwb3MgPSBuZXdwb3M7CisKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgb3V0c2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKKyAgICAgICAgICAgIGlmIChvdXRzaXplICE9IDEpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCA9IG91dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgICAgICAgICAgICAgbmV3b3V0c2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKm91dGJ5dGVzKSArIChvdXRzaXplIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShvdXRieXRlcywgbmV3b3V0c2l6ZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgb2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgb3V0c2l6ZSk7CisgICAgICAgICAgICBvdXQgKz0gb3V0c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworICAgICAgICAgICAgaWYgKG91dHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gb3V0IC0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKKyAgICAgICAgICAgICAgICBuZXdvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpICsgKG91dHNpemUgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuZXdvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKKyAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXApOworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBvdXRzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gMTI3KSB7CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBlbmNvZGUgZXJyb3IgaGFuZGxlciByZXN1bHQgdG8gQVNDSUkiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpvdXQgPSAodW5zaWduZWQgY2hhciljaDsKKyAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICB9CisgICAgLyogd3JpdGUgYSBOVUwgYnl0ZSAqLworICAgICpvdXQgPSAwOworICAgIG91dHNpemUgPSBvdXQgLSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgIGFzc2VydChvdXRzaXplIDw9IFB5Qnl0ZXNfR0VUX1NJWkUoKm91dGJ5dGVzKSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShvdXRieXRlcywgb3V0c2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldCA9IDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlbmNvZGVfY29kZV9wYWdlKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKm91dGJ5dGVzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBpbnQgY2h1bmtfbGVuLCByZXQsIGRvbmU7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIGlmIChjb2RlX3BhZ2UgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBjb2RlIHBhZ2UgbnVtYmVyIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmZGVmIE5FRURfUkVUUlkKLSAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgcCArPSBJTlRfTUFYOwotICAgICAgICBzaXplIC09IElOVF9NQVg7Ci0gICAgICAgIGdvdG8gcmV0cnk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIHJldHVybiByZXByOworICAgIG9mZnNldCA9IDA7CisgICAgZG8KKyAgICB7CisjaWZkZWYgTkVFRF9SRVRSWQorICAgICAgICAvKiBVVEYtMTYgZW5jb2RpbmcgbWF5IGRvdWJsZSB0aGUgc2l6ZSwgc28gdXNlIG9ubHkgSU5UX01BWC8yCisgICAgICAgICAgIGNodW5rcy4gKi8KKyAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgvMikgeworICAgICAgICAgICAgY2h1bmtfbGVuID0gSU5UX01BWC8yOworICAgICAgICAgICAgZG9uZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGNodW5rX2xlbiA9IChpbnQpbGVuOworICAgICAgICAgICAgZG9uZSA9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBlbmNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgb2Zmc2V0LCBjaHVua19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIGlmIChyZXQgPT0gLTIpCisgICAgICAgICAgICByZXQgPSBlbmNvZGVfY29kZV9wYWdlX2Vycm9ycyhjb2RlX3BhZ2UsICZvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlbiwgZXJyb3JzKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYob3V0Ynl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgKz0gY2h1bmtfbGVuOworICAgICAgICBsZW4gLT0gY2h1bmtfbGVuOworICAgIH0gd2hpbGUgKCFkb25lKTsKKworICAgIHJldHVybiBvdXRieXRlczsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqcmVzOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gZW5jb2RlX2NvZGVfcGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICByZXR1cm4gZW5jb2RlX2NvZGVfcGFnZShjb2RlX3BhZ2UsIHVuaWNvZGUsIGVycm9ycyk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiB9CiAKICN1bmRlZiBORUVEX1JFVFJZCiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBQeU9iamVjdCAqdjsKICAgICBQeV9zc2l6ZV90IGV4dHJhY2hhcnMgPSAwOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKm1hcHN0cmluZyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBtYXBsZW4gPSAwOwogCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKIAotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZSA9IHMgKyBzaXplOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChtYXBwaW5nKSkgewotICAgICAgICBtYXBzdHJpbmcgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShtYXBwaW5nKTsKLSAgICAgICAgbWFwbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG1hcHBpbmcpOworICAgICAgICBQeV9zc2l6ZV90IG1hcGxlbjsKKyAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBtYXBraW5kOworICAgICAgICB2b2lkICptYXBkYXRhOworICAgICAgICBQeV9VQ1M0IHg7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShtYXBwaW5nKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIG1hcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG1hcHBpbmcpOworICAgICAgICBtYXBkYXRhID0gUHlVbmljb2RlX0RBVEEobWFwcGluZyk7CisgICAgICAgIG1hcGtpbmQgPSBQeVVuaWNvZGVfS0lORChtYXBwaW5nKTsKICAgICAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHggPSAweGZmZmU7IC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2g7CisgICAgICAgICAgICBpZiAobWFwa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCAmJiBtYXBsZW4gPj0gMjU2KSB7CisgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBvdXRraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgICAgICAgICAgICAgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHYpOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaCA9ICpzOworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5VW5pY29kZV9SRUFEKFB5VW5pY29kZV8yQllURV9LSU5ELCBtYXBkYXRhLCBjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA+IG1heGNoYXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfMUJZVEVfS0lORCwgb3V0ZGF0YSwgb3V0cG9zKyssIHgpOworICAgICAgICAgICAgICAgICAgICAgICAgKytzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvdXRraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgICAgIHZvaWQgKm91dGRhdGEgPSBQeVVuaWNvZGVfREFUQSh2KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG1hcGRhdGEsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDB4RkZGRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV8yQllURV9LSU5ELCBvdXRkYXRhLCBvdXRwb3MrKywgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2ggPSAqczsKIAogICAgICAgICAgICAgaWYgKGNoIDwgbWFwbGVuKQotICAgICAgICAgICAgICAgIHggPSBtYXBzdHJpbmdbY2hdOwotCi0gICAgICAgICAgICBpZiAoeCA9PSAweGZmZmUpIHsKKyAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQobWFwa2luZCwgbWFwZGF0YSwgY2gpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHggPSAweGZmZmU7IC8qIGludmFsaWQgdmFsdWUgKi8KK0Vycm9yOgorICAgICAgICAgICAgaWYgKHggPT0gMHhmZmZlKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJtYXAiLCAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcCsrID0geDsKKworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgeCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICsrczsKICAgICAgICAgfQogICAgIH0KQEAgLTUyNTgsNjggKzc1MjQsNTAgQEAKICAgICAgICAgICAgICAgICBsb25nIHZhbHVlID0gUHlMb25nX0FTX0xPTkcoeCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IDB4RkZGRSkKICAgICAgICAgICAgICAgICAgICAgZ290byBVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDB4MTBGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCBiZSBpbiByYW5nZSgweDExMDAwMCkiKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4JWx4KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylNQVhfVU5JQ09ERSArIDEpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHNlZSB0aGUgY29kZSBmb3IgMS1uIG1hcHBpbmcgYmVsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhY2hhcnMgPCAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNpemUgZmlyc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2xkcG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZWVkZWQgPSAxMCAtIGV4dHJhY2hhcnM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzICs9IG5lZWRlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh2KSArIG5lZWRlZCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIG9sZHBvczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKHZhbHVlID4+IDEwKTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IDB4REMwMCB8ICh2YWx1ZSAmIDB4M0ZGKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyAtPSAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgdmFsdWUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCB0YXJnZXRzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHgpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZTsKKworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoeCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB0YXJnZXRzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoeCk7CiAKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0c2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIDEtMSBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgdmFsdWUgPSAqUHlVbmljb2RlX0FTX1VOSUNPREUoeCk7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHgsIDApOwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gMHhGRkZFKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgdmFsdWUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0c2l6ZSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogMS1uIG1hcHBpbmcgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldHNpemUgPiBleHRyYWNoYXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNpemUgZmlyc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2xkcG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZWVkZWQgPSAodGFyZ2V0c2l6ZSAtIGV4dHJhY2hhcnMpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRzaXplIDw8IDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyArPSBuZWVkZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFggb3ZlcmZsb3cgZGV0ZWN0aW9uIG1pc3NpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodikgKyBuZWVkZWQpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgbmVlZGVkKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIG9sZHBvczsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0c2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gdGFyZ2V0c2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfd2lkZW4oJnYsIG91dHBvcywgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHgpKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyh2LCBvdXRwb3MsIHgsIDAsIHRhcmdldHNpemUpOworICAgICAgICAgICAgICAgICAgICBvdXRwb3MgKz0gdGFyZ2V0c2l6ZTsKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyAtPSB0YXJnZXRzaXplOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiAxLTAgbWFwcGluZzogc2tpcCB0aGUgY2hhcmFjdGVyICovCkBAIC01MzM3LDI0ICs3NTg1LDIyIEBACiBVbmRlZmluZWQ6CiAgICAgICAgICAgICAvKiB1bmRlZmluZWQgbWFwcGluZyAqLwogICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAiY2hhcm1hcCIsICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiIsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpIHsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSA8IFB5VW5pY29kZV9HRVRfU0laRSh2KSkKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC01MzY1LDcgKzc2MTEsNyBAQAogCiAvKiBDaGFybWFwIGVuY29kaW5nOiB0aGUgbG9va3VwIHRhYmxlICovCiAKLXN0cnVjdCBlbmNvZGluZ19tYXB7CitzdHJ1Y3QgZW5jb2RpbmdfbWFwIHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgdW5zaWduZWQgY2hhciBsZXZlbDFbMzJdOwogICAgIGludCBjb3VudDIsIGNvdW50MzsKQEAgLTU0MzksNyArNzY4NSw2IEBACiBQeU9iamVjdCoKIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKFB5T2JqZWN0KiBzdHJpbmcpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZGVjb2RlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgc3RydWN0IGVuY29kaW5nX21hcCAqbXJlc3VsdDsKICAgICBpbnQgaTsKQEAgLTU0NDgsMzUgKzc2OTMsMzkgQEAKICAgICB1bnNpZ25lZCBjaGFyIGxldmVsMls1MTJdOwogICAgIHVuc2lnbmVkIGNoYXIgKm1sZXZlbDEsICptbGV2ZWwyLCAqbWxldmVsMzsKICAgICBpbnQgY291bnQyID0gMCwgY291bnQzID0gMDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIFB5X1VDUzQgY2g7CiAKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHJpbmcpIHx8IFB5VW5pY29kZV9HZXRTaXplKHN0cmluZykgIT0gMjU2KSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSB8fCAhUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZGVjb2RlID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOworICAgIGxlbmd0aCA9IFB5X01JTihsZW5ndGgsIDI1Nik7CiAgICAgbWVtc2V0KGxldmVsMSwgMHhGRiwgc2l6ZW9mIGxldmVsMSk7CiAgICAgbWVtc2V0KGxldmVsMiwgMHhGRiwgc2l6ZW9mIGxldmVsMik7CiAKICAgICAvKiBJZiB0aGVyZSBpc24ndCBhIG9uZS10by1vbmUgbWFwcGluZyBvZiBOVUxMIHRvIFwwLAogICAgICAgIG9yIGlmIHRoZXJlIGFyZSBub24tQk1QIGNoYXJhY3RlcnMsIHdlIG5lZWQgdG8gdXNlCiAgICAgICAgYSBtYXBwaW5nIGRpY3Rpb25hcnkuICovCi0gICAgaWYgKGRlY29kZVswXSAhPSAwKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSAhPSAwKQogICAgICAgICBuZWVkX2RpY3QgPSAxOwotICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworICAgIGZvciAoaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBpbnQgbDEsIGwyOwotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIHx8IGRlY29kZVtpXSA+IDB4RkZGRgotI2VuZGlmCi0gICAgICAgICAgICApIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoID09IDAgfHwgY2ggPiAweEZGRkYpIHsKICAgICAgICAgICAgIG5lZWRfZGljdCA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDB4RkZGRSkKKyAgICAgICAgaWYgKGNoID09IDB4RkZGRSkKICAgICAgICAgICAgIC8qIHVubWFwcGVkIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGwxID0gZGVjb2RlW2ldID4+IDExOwotICAgICAgICBsMiA9IGRlY29kZVtpXSA+PiA3OworICAgICAgICBsMSA9IGNoID4+IDExOworICAgICAgICBsMiA9IGNoID4+IDc7CiAgICAgICAgIGlmIChsZXZlbDFbbDFdID09IDB4RkYpCiAgICAgICAgICAgICBsZXZlbDFbbDFdID0gY291bnQyKys7CiAgICAgICAgIGlmIChsZXZlbDJbbDJdID09IDB4RkYpCkBAIC01NDkxLDkgKzc3NDAsOCBAQAogICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAgICAgICAga2V5ID0gdmFsdWUgPSBOVUxMOwotICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGRlY29kZVtpXSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKICAgICAgICAgICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKGkpOwogICAgICAgICAgICAgaWYgKCFrZXkgfHwgIXZhbHVlKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkMTsKQEAgLTU1MjYsMTcgKzc3NzQsMTggQEAKICAgICBtZW1zZXQobWxldmVsMiwgMHhGRiwgMTYqY291bnQyKTsKICAgICBtZW1zZXQobWxldmVsMywgMCwgMTI4KmNvdW50Myk7CiAgICAgY291bnQzID0gMDsKLSAgICBmb3IgKGkgPSAxOyBpIDwgMjU2OyBpKyspIHsKKyAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaW50IG8xLCBvMiwgbzMsIGkyLCBpMzsKLSAgICAgICAgaWYgKGRlY29kZVtpXSA9PSAweEZGRkUpCisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoID09IDB4RkZGRSkKICAgICAgICAgICAgIC8qIHVubWFwcGVkIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG8xID0gZGVjb2RlW2ldPj4xMTsKLSAgICAgICAgbzIgPSAoZGVjb2RlW2ldPj43KSAmIDB4RjsKKyAgICAgICAgbzEgPSBjaD4+MTE7CisgICAgICAgIG8yID0gKGNoPj43KSAmIDB4RjsKICAgICAgICAgaTIgPSAxNiptbGV2ZWwxW28xXSArIG8yOwogICAgICAgICBpZiAobWxldmVsMltpMl0gPT0gMHhGRikKICAgICAgICAgICAgIG1sZXZlbDJbaTJdID0gY291bnQzKys7Ci0gICAgICAgIG8zID0gZGVjb2RlW2ldICYgMHg3RjsKKyAgICAgICAgbzMgPSBjaCAmIDB4N0Y7CiAgICAgICAgIGkzID0gMTI4Km1sZXZlbDJbaTJdICsgbzM7CiAgICAgICAgIG1sZXZlbDNbaTNdID0gaTsKICAgICB9CkBAIC01NTQ0LDcgKzc3OTMsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1lbmNvZGluZ19tYXBfbG9va3VwKFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcpCitlbmNvZGluZ19tYXBfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcpCiB7CiAgICAgc3RydWN0IGVuY29kaW5nX21hcCAqbWFwID0gKHN0cnVjdCBlbmNvZGluZ19tYXAqKW1hcHBpbmc7CiAgICAgaW50IGwxID0gYz4+MTE7CkBAIC01NTUyLDExICs3ODAxLDggQEAKICAgICBpbnQgbDMgPSBjICYgMHg3RjsKICAgICBpbnQgaTsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGlmIChjID4gMHhGRkZGKSB7CisgICAgaWYgKGMgPiAweEZGRkYpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKICAgICBpZiAoYyA9PSAwKQogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBsZXZlbCAxKi8KQEAgLTU1ODAsNyArNzgyNiw4IEBACiAvKiBMb29rdXAgdGhlIGNoYXJhY3RlciBjaCBpbiB0aGUgbWFwcGluZy4gSWYgdGhlIGNoYXJhY3RlcgogICAgY2FuJ3QgYmUgZm91bmQsIFB5X05vbmUgaXMgcmV0dXJuZWQgKG9yIE5VTEwsIGlmIGFub3RoZXIKICAgIGVycm9yIG9jY3VycmVkKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqY2hhcm1hcGVuY29kZV9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZykKK3N0YXRpYyBQeU9iamVjdCAqCitjaGFybWFwZW5jb2RlX2xvb2t1cChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nKQogewogICAgIFB5T2JqZWN0ICp3ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWMpOwogICAgIFB5T2JqZWN0ICp4OwpAQCAtNTYzNywxNiArNzg4NCwxNiBAQAogCiB0eXBlZGVmIGVudW0gY2hhcm1hcGVuY29kZV9yZXN1bHQgewogICAgIGVuY19TVUNDRVNTLCBlbmNfRkFJTEVELCBlbmNfRVhDRVBUSU9OCi19Y2hhcm1hcGVuY29kZV9yZXN1bHQ7Cit9IGNoYXJtYXBlbmNvZGVfcmVzdWx0OwogLyogbG9va3VwIHRoZSBjaGFyYWN0ZXIsIHB1dCB0aGUgcmVzdWx0IGluIHRoZSBvdXRwdXQgc3RyaW5nIGFuZCBhZGp1c3QKICAgIHZhcmlvdXMgc3RhdGUgdmFyaWFibGVzLiBSZXNpemUgdGhlIG91dHB1dCBieXRlcyBvYmplY3QgaWYgbm90IGVub3VnaAogICAgc3BhY2UgaXMgYXZhaWxhYmxlLiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgdGhhdAogICAgd2FzIHB1dCBpbiB0aGUgb3V0cHV0IGJ1ZmZlciwgb3IgUHlfTm9uZSwgaWYgdGhlIG1hcHBpbmcgd2FzIHVuZGVmaW5lZAogICAgKGluIHdoaWNoIGNhc2Ugbm8gY2hhcmFjdGVyIHdhcyB3cml0dGVuKSBvciBOVUxMLCBpZiBhCiAgICByZWFsbG9jYXRpb24gZXJyb3Igb2NjdXJyZWQuIFRoZSBjYWxsZXIgbXVzdCBkZWNyZWYgdGhlIHJlc3VsdCAqLwotc3RhdGljCi1jaGFybWFwZW5jb2RlX3Jlc3VsdCBjaGFybWFwZW5jb2RlX291dHB1dChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRvYmosIFB5X3NzaXplX3QgKm91dHBvcykKK3N0YXRpYyBjaGFybWFwZW5jb2RlX3Jlc3VsdAorY2hhcm1hcGVuY29kZV9vdXRwdXQoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpvdXRwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcDsKICAgICBjaGFyICpvdXRzdGFydDsKQEAgLTU3MDIsMTcgKzc5NDksMTkgQEAKIAogLyogaGFuZGxlIGFuIGVycm9yIGluIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLwotc3RhdGljCi1pbnQgY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKLSAgICBjb25zdCBQeV9VTklDT0RFICpwLCBQeV9zc2l6ZV90IHNpemUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKK3N0YXRpYyBpbnQKK2NoYXJtYXBfZW5jb2RpbmdfZXJyb3IoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKICAgICBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKICAgICBpbnQgKmtub3duX2Vycm9ySGFuZGxlciwgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICBQeU9iamVjdCAqKnJlcywgUHlfc3NpemVfdCAqcmVzcG9zKQogewogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCi0gICAgUHlfc3NpemVfdCByZXBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgcmVwc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICBQeV9VTklDT0RFICp1bmkyOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydHBvcyA9ICppbnBvczsKICAgICBQeV9zc2l6ZV90IGNvbGxlbmRwb3MgPSAqaW5wb3MrMTsKQEAgLTU3MjAsMTkgKzc5NjksMjYgQEAKICAgICBjaGFyICplbmNvZGluZyA9ICJjaGFybWFwIjsKICAgICBjaGFyICpyZWFzb24gPSAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iOwogICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHg7CisgICAgUHlfVUNTNCBjaDsKKyAgICBpbnQgdmFsOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKICAgICAvKiBmaW5kIGFsbCB1bmVuY29kYWJsZSBjaGFyYWN0ZXJzICovCiAgICAgd2hpbGUgKGNvbGxlbmRwb3MgPCBzaXplKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXA7CiAgICAgICAgIGlmIChQeV9UWVBFKG1hcHBpbmcpID09ICZFbmNvZGluZ01hcFR5cGUpIHsKLSAgICAgICAgICAgIGludCByZXMgPSBlbmNvZGluZ19tYXBfbG9va3VwKHBbY29sbGVuZHBvc10sIG1hcHBpbmcpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAtMSkKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBjb2xsZW5kcG9zKTsKKyAgICAgICAgICAgIHZhbCA9IGVuY29kaW5nX21hcF9sb29rdXAoY2gsIG1hcHBpbmcpOworICAgICAgICAgICAgaWYgKHZhbCAhPSAtMSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICsrY29sbGVuZHBvczsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcmVwID0gY2hhcm1hcGVuY29kZV9sb29rdXAocFtjb2xsZW5kcG9zXSwgbWFwcGluZyk7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBjb2xsZW5kcG9zKTsKKyAgICAgICAgcmVwID0gY2hhcm1hcGVuY29kZV9sb29rdXAoY2gsIG1hcHBpbmcpOwogICAgICAgICBpZiAocmVwPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBlbHNlIGlmIChyZXAhPVB5X05vbmUpIHsKQEAgLTU3NTgsNyArODAxNCw3IEBACiAgICAgfQogICAgIHN3aXRjaCAoKmtub3duX2Vycm9ySGFuZGxlcikgewogICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3M8Y29sbGVuZHBvczsgKytjb2xscG9zKSB7CkBAIC01NzY3LDcgKzgwMjMsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHg9PWVuY19GQUlMRUQpIHsKLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHAsIHNpemUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU3ODAsMTMgKzgwMzYsMTMgQEAKICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zIDwgY29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07CiAgICAgICAgICAgICBjaGFyICpjcDsKLSAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KXBbY29sbHBvc10pOworICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIChpbnQpUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBjb2xscG9zKSk7CiAgICAgICAgICAgICBmb3IgKGNwID0gYnVmZmVyOyAqY3A7ICsrY3ApIHsKICAgICAgICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoKmNwLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICBlbHNlIGlmICh4PT1lbmNfRkFJTEVEKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTU3OTUsNyArODA1MSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHAsIHNpemUsIGV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsIGV4Y2VwdGlvbk9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgJm5ld3Bvcyk7CiAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01ODE5LDE1ICs4MDc1LDIzIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpIHsKLSAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgqdW5pMiwgbWFwcGluZywgcmVzLCByZXNwb3MpOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwdW5pY29kZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXB1bmljb2RlKTsKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcmVwc2l6ZTsgaW5kZXgrKykgeworICAgICAgICAgICAgUHlfVUNTNCByZXBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KTsKKyAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dChyZXBjaCwgbWFwcGluZywgcmVzLCByZXNwb3MpOwogICAgICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoeD09ZW5jX0ZBSUxFRCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHAsIHNpemUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU4MzcsMTUgKzgxMDEsMTYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgLyogb3V0cHV0IG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIC8qIGN1cnJlbnQgaW5wdXQgcG9zaXRpb24gKi8KICAgICBQeV9zc2l6ZV90IGlucG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KICAgICBQeV9zc2l6ZV90IHJlc3BvcyA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CkBAIC01ODU1LDkgKzgxMjAsMTMgQEAKICAgICAgKiAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwogICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKwogICAgIC8qIERlZmF1bHQgdG8gTGF0aW4tMSAqLwogICAgIGlmIChtYXBwaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKHAsIHNpemUsIGVycm9ycyk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKIAogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgZW5jb2Rpbmcgd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KQEAgLTU4NjgsMTIgKzgxMzcsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlczsKIAogICAgIHdoaWxlIChpbnBvczxzaXplKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGlucG9zKTsKICAgICAgICAgLyogdHJ5IHRvIGVuY29kZSBpdCAqLwotICAgICAgICBjaGFybWFwZW5jb2RlX3Jlc3VsdCB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQocFtpbnBvc10sIG1hcHBpbmcsICZyZXMsICZyZXNwb3MpOworICAgICAgICBjaGFybWFwZW5jb2RlX3Jlc3VsdCB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoY2gsIG1hcHBpbmcsICZyZXMsICZyZXNwb3MpOwogICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgLyogZXJyb3IgKi8KICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgaWYgKHg9PWVuY19GQUlMRUQpIHsgLyogdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcihwLCBzaXplLCAmaW5wb3MsIG1hcHBpbmcsCisgICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcih1bmljb2RlLCAmaW5wb3MsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtub3duX2Vycm9ySGFuZGxlciwgJmVycm9ySGFuZGxlciwgZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcywgJnJlc3BvcykpIHsKQEAgLTU5MDEsMjggKzgxNzEsNDMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIHNpemUpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCh1bmljb2RlLCBtYXBwaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZykKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCBtYXBwaW5nID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIE5VTEwpOwogfQogCiAvKiBjcmVhdGUgb3IgYWRqdXN0IGEgVW5pY29kZVRyYW5zbGF0ZUVycm9yICovCi1zdGF0aWMgdm9pZCBtYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKK3N0YXRpYyB2b2lkCittYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQogewogICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ID09IE5VTEwpIHsKLSAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKLSAgICAgICAgICAgIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICpleGNlcHRpb25PYmplY3QgPSBfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydCgqZXhjZXB0aW9uT2JqZWN0LCBzdGFydHBvcykpCkBAIC01OTM5LDEzICs4MjI0LDE0IEBACiB9CiAKIC8qIHJhaXNlcyBhIFVuaWNvZGVUcmFuc2xhdGVFcnJvciAqLwotc3RhdGljIHZvaWQgcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK3JhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQogewogICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CkBAIC01OTU0LDEyICs4MjQwLDEzIEBACiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgcHV0IHRoZSByZXN1bHQgaW50byBuZXdwb3MgYW5kIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aGljaAogICAgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgKi8KLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCkBAIC01OTc0LDcgKzgyNjEsNyBAQAogICAgIH0KIAogICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTU5OTMsMTAgKzgyODAsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChpX25ld3BvczwwKQotICAgICAgICAqbmV3cG9zID0gc2l6ZStpX25ld3BvczsKKyAgICAgICAgKm5ld3BvcyA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpK2lfbmV3cG9zOwogICAgIGVsc2UKICAgICAgICAgKm5ld3BvcyA9IGlfbmV3cG9zOwotICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5zaXplKSB7CisgICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPlB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbmRleEVycm9yLCAicG9zaXRpb24gJXpkIGZyb20gZXJyb3IgaGFuZGxlciBvdXQgb2YgYm91bmRzIiwgKm5ld3Bvcyk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN0dXBsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjAwOSw4ICs4Mjk2LDggQEAKIC8qIExvb2t1cCB0aGUgY2hhcmFjdGVyIGNoIGluIHRoZSBtYXBwaW5nIGFuZCBwdXQgdGhlIHJlc3VsdCBpbiByZXN1bHQsCiAgICB3aGljaCBtdXN0IGJlIGRlY3JlZmVkIGJ5IHRoZSBjYWxsZXIuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLwotc3RhdGljCi1pbnQgY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZywgUHlPYmplY3QgKipyZXN1bHQpCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKnJlc3VsdCkKIHsKICAgICBQeU9iamVjdCAqdyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyljKTsKICAgICBQeU9iamVjdCAqeDsKQEAgLTYwNTksMjAgKzgzNDYsMjEgQEAKIC8qIGVuc3VyZSB0aGF0ICpvdXRvYmogaXMgYXQgbGVhc3QgcmVxdWlyZWRzaXplIGNoYXJhY3RlcnMgbG9uZywKICAgIGlmIG5vdCByZWFsbG9jYXRlIGFuZCBhZGp1c3QgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLwotc3RhdGljCi1pbnQgY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoUHlPYmplY3QgKipvdXRvYmosIFB5X1VOSUNPREUgKipvdXRwLAorc3RhdGljIGludAorY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoUHlfVUNTNCAqKm91dG9iaiwgUHlfc3NpemVfdCAqcHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUpCiB7Ci0gICAgUHlfc3NpemVfdCBvbGRzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpvdXRvYmopOworICAgIFB5X3NzaXplX3Qgb2xkc2l6ZSA9ICpwc2l6ZTsKKyAgICBQeV9VQ1M0ICpuZXdfb3V0b2JqOwogICAgIGlmIChyZXF1aXJlZHNpemUgPiBvbGRzaXplKSB7Ci0gICAgICAgIC8qIHJlbWVtYmVyIG9sZCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSAqb3V0cC1QeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKTsKICAgICAgICAgLyogZXhwb25lbnRpYWxseSBvdmVyYWxsb2NhdGUgdG8gbWluaW1pemUgcmVhbGxvY2F0aW9ucyAqLwogICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMiAqIG9sZHNpemUpCiAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyICogb2xkc2l6ZTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUob3V0b2JqLCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgbmV3X291dG9iaiA9IFB5TWVtX1JlYWxsb2MoKm91dG9iaiwgcmVxdWlyZWRzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgaWYgKG5ld19vdXRvYmogPT0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm91dHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKSArIG91dHBvczsKKyAgICAgICAgKm91dG9iaiA9IG5ld19vdXRvYmo7CisgICAgICAgICpwc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC02MDgyLDM4ICs4MzcwLDQ0IEBACiAgICB1bmRlZmluZWQgKGluIHdoaWNoIGNhc2Ugbm8gY2hhcmFjdGVyIHdhcyB3cml0dGVuKS4KICAgIFRoZSBjYWxsZWQgbXVzdCBkZWNyZWYgcmVzdWx0LgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX291dHB1dChjb25zdCBQeV9VTklDT0RFICpzdGFydGlucCwgY29uc3QgUHlfVU5JQ09ERSAqY3VyaW5wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplLCBQeU9iamVjdCAqbWFwcGluZywgUHlPYmplY3QgKipvdXRvYmosIFB5X1VOSUNPREUgKipvdXRwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcmVzKQorc3RhdGljIGludAorY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoUHlPYmplY3QgKmlucHV0LCBQeV9zc2l6ZV90IGlwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgUHlfVUNTNCAqKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm9zaXplLCBQeV9zc2l6ZV90ICpvcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCiB7Ci0gICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCpjdXJpbnAsIG1hcHBpbmcsIHJlcykpCisgICAgUHlfVUNTNCBjdXJpbnAgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGlucHV0LCBpcG9zKTsKKyAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY3VyaW5wLCBtYXBwaW5nLCByZXMpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCpyZXM9PU5VTEwpIHsKICAgICAgICAgLyogbm90IGZvdW5kID0+IGRlZmF1bHQgdG8gMToxIG1hcHBpbmcgKi8KLSAgICAgICAgKigqb3V0cCkrKyA9ICpjdXJpbnA7CisgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gY3VyaW5wOwogICAgIH0KICAgICBlbHNlIGlmICgqcmVzPT1QeV9Ob25lKQogICAgICAgICA7CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKCpyZXMpKSB7CiAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICooKm91dHApKysgPSAoUHlfVU5JQ09ERSlQeUxvbmdfQVNfTE9ORygqcmVzKTsKKyAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSAoUHlfVUNTNClQeUxvbmdfQVNfTE9ORygqcmVzKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKCpyZXMpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSgqcmVzKTsKKyAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKCpyZXMpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKnJlcyk7CiAgICAgICAgIGlmIChyZXBzaXplPT0xKSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAgICAgKigqb3V0cCkrKyA9ICpQeVVuaWNvZGVfQVNfVU5JQ09ERSgqcmVzKTsKKyAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCAwKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChyZXBzaXplIT0wKSB7CiAgICAgICAgICAgICAvKiBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUgPSAoKm91dHAtUHlVbmljb2RlX0FTX1VOSUNPREUoKm91dG9iaikpICsKLSAgICAgICAgICAgICAgICAoaW5zaXplIC0gKGN1cmlucC1zdGFydGlucCkpICsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplID0gKm9wb3MgKworICAgICAgICAgICAgICAgIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCkgLSBpcG9zKSArCiAgICAgICAgICAgICAgICAgcmVwc2l6ZSAtIDE7Ci0gICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0b2JqLCBvdXRwLCByZXF1aXJlZHNpemUpKQorICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKG91dHB1dCwgb3NpemUsIHJlcXVpcmVkc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgbWVtY3B5KCpvdXRwLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqcmVzKSwgc2l6ZW9mKFB5X1VOSUNPREUpKnJlcHNpemUpOwotICAgICAgICAgICAgKm91dHAgKz0gcmVwc2l6ZTsKKyAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHJlcHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoKnJlcywgaSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtNjEyMSwyMCArODQxNSwyMSBAQAogICAgIHJldHVybiAwOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgLyogb3V0cHV0IG9iamVjdCAqLwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIC8qIHBvaW50ZXJzIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCsxIG9mIGlucHV0ICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3RhcnRwID0gcDsKLSAgICBjb25zdCBQeV9VTklDT0RFICplbmRwID0gcCArIHNpemU7Ci0gICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KLSAgICBQeV9VTklDT0RFICpzdHI7CisgICAgLyogaW5wdXQgb2JqZWN0ICovCisgICAgY2hhciAqaWRhdGE7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIGludCBraW5kOworICAgIC8qIG91dHB1dCBidWZmZXIgKi8KKyAgICBQeV9VQ1M0ICpvdXRwdXQgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgb3NpemU7CisgICAgUHlPYmplY3QgKnJlczsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwotICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IG9wb3M7CiAgICAgY2hhciAqcmVhc29uID0gImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKQEAgLTYxNDgsMzggKzg0NDMsNTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlkYXRhID0gKGNoYXIqKVB5VW5pY29kZV9EQVRBKGlucHV0KTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CisgICAgaSA9IDA7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7CisgICAgICAgIHJldHVybiBpbnB1dDsKKyAgICB9CisKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwotICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzID09IE5VTEwpCisgICAgb3NpemUgPSBzaXplOworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhvc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgb3BvcyA9IDA7CisgICAgaWYgKG91dHB1dCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gcmVzOwotICAgIHN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7CisgICAgfQogCi0gICAgd2hpbGUgKHA8ZW5kcCkgeworICAgIHdoaWxlIChpPHNpemUpIHsKICAgICAgICAgLyogdHJ5IHRvIGVuY29kZSBpdCAqLwogICAgICAgICBQeU9iamVjdCAqeCA9IE5VTEw7Ci0gICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChzdGFydHAsIHAsIHNpemUsIG1hcHBpbmcsICZyZXMsICZzdHIsICZ4KSkgeworICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoaW5wdXQsIGksIG1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0LCAmb3NpemUsICZvcG9zLCAmeCkpIHsKICAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgaWYgKHghPVB5X05vbmUpIC8qIGl0IHdvcmtlZCA9PiBhZGp1c3QgaW5wdXQgcG9pbnRlciAqLwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgKytpOwogICAgICAgICBlbHNlIHsgLyogdW50cmFuc2xhdGFibGUgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1bmkyOworICAgICAgICAgICAgUHlfc3NpemVfdCB1bmkyOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW50cmFuc2xhdGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxzdGFydCA9IHA7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsZW5kID0gcCsxOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IGkrMTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbDsKIAogICAgICAgICAgICAgLyogZmluZCBhbGwgdW50cmFuc2xhdGFibGUgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgd2hpbGUgKGNvbGxlbmQgPCBlbmRwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCpjb2xsZW5kLCBtYXBwaW5nLCAmeCkpCisgICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlVbmljb2RlX1JFQUQoa2luZCxpZGF0YSwgY29sbGVuZCksIG1hcHBpbmcsICZ4KSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgaWYgKHghPVB5X05vbmUpCkBAIC02MjAyLDI2MSArODUxMSw0MTkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7CiAgICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4Yywgc3RhcnRwLCBzaXplLCBjb2xsc3RhcnQtc3RhcnRwLCBjb2xsZW5kLXN0YXJ0cCwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV90cmFuc2xhdGVfZXhjZXB0aW9uKCZleGMsIGlucHV0LCBjb2xsc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZW5kLCByZWFzb24pOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwogICAgICAgICAgICAgICAgIC8qIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHNwYWNlLCB0aGlzIGlzIGEgMToxIHJlcGxhY2VtZW50ICovCi0gICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7ICsrY29sbCkKLSAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOworICAgICAgICAgICAgICAgIGZvciAoY29sbCA9IGNvbGxzdGFydDsgY29sbDxjb2xsZW5kOyBjb2xsKyspCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gJz8nOwogICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgICAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KLSAgICAgICAgICAgICAgICBwID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0OyBwIDwgY29sbGVuZDsgKytwKSB7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBpKSAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwOwotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgKGludCkqcCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmcmVzLCAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ci1QeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpKStzdHJsZW4oYnVmZmVyKSsoZW5kcC1jb2xsZW5kKSkpCisgICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBpZGF0YSwgaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BvcytzdHJsZW4oYnVmZmVyKSsoc2l6ZS1jb2xsZW5kKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICpjcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gKmNwOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBzdGFydHAsIHNpemUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBpbnB1dCwgJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKICAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJnJlcywgJnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ci1QeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpKStyZXBzaXplKyhlbmRwLWNvbGxlbmQpKSkgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOyByZXBzaXplLS0+MDsgKyt1bmkyKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAqdW5pMjsKLSAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLworICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSAwOyByZXBzaXplLS0+MDsgKyt1bmkyKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbb3BvcysrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgdW5pMik7CisgICAgICAgICAgICAgICAgaSA9IG5ld3BvczsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogUmVzaXplIGlmIHdlIGFsbG9jYXRlZCB0byBtdWNoICovCi0gICAgcmVzcG9zID0gc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgaWYgKHJlc3BvczxQeVVuaWNvZGVfR0VUX1NJWkUocmVzKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcmVzLCByZXNwb3MpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgb3V0cHV0LCBvcG9zKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHJlcyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfVHJhbnNsYXRlKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQuIFVzZSBQeVVuaWNvZGVfVHJhbnNsYXRlIGluc3RlYWQuICovCitQeU9iamVjdCAqCitQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCh1bmljb2RlLCBtYXBwaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfVHJhbnNsYXRlKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKK30KIAotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeV9VQ1M0CitmaXhfZGVjaW1hbF9hbmRfc3BhY2VfdG9fYXNjaWkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgLyogTm8gbmVlZCB0byBjYWxsIFB5VW5pY29kZV9SRUFEWShzZWxmKSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seQorICAgICAgIGNhbGxlZCBhcyBhIGNhbGxiYWNrIGZyb20gZml4dXAoKSB3aGljaCBkb2VzIGl0IGFscmVhZHkuICovCisgICAgY29uc3QgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBjb25zdCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjcsIGNoLCBmaXhlZDsKKyAgICBpbnQgbW9kaWZpZWQgPSAwOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBmaXhlZCA9IDA7CisgICAgICAgIGlmIChjaCA+IDEyNykgeworICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCisgICAgICAgICAgICAgICAgZml4ZWQgPSAnICc7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBmaXhlZCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZml4ZWQgIT0gMCkgeworICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgZml4ZWQpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpLCBmaXhlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGNoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAobW9kaWZpZWQpID8gbWF4Y2hhciA6IDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkgPD0gMTI3KSB7CisgICAgICAgIC8qIElmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBBU0NJSSwganVzdCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nICovCisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgfQorICAgIHJldHVybiBmaXh1cCh1bmljb2RlLCBmaXhfZGVjaW1hbF9hbmRfc3BhY2VfdG9fYXNjaWkpOwogfQogCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoUHlfVU5JQ09ERSAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKnA7IC8qIHdyaXRlIHBvaW50ZXIgaW50byByZXN1bHQgKi8KKyAgICBQeU9iamVjdCAqZGVjaW1hbDsKICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgLyogQ29weSB0byBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldyhsZW5ndGgpOwotICAgIFB5X1VOSUNPREVfQ09QWShQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLCBzLCBsZW5ndGgpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBtYXhjaGFyID0gMTI3OwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGNoID1zW2ldOworICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKICAgICAgICAgaWYgKGNoID4gMTI3KSB7CiAgICAgICAgICAgICBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCi0gICAgICAgICAgICAgICAgcFtpXSA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICAgICAgY2ggPSAnMCcgKyBkZWNpbWFsOworICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGNoKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgLyogQ29weSB0byBhIG5ldyBzdHJpbmcgKi8KKyAgICBkZWNpbWFsID0gUHlVbmljb2RlX05ldyhsZW5ndGgsIG1heGNoYXIpOworICAgIGlmIChkZWNpbWFsID09IE5VTEwpCisgICAgICAgIHJldHVybiBkZWNpbWFsOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChkZWNpbWFsKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoZGVjaW1hbCk7CisgICAgLyogSXRlcmF0ZSBvdmVyIGNvZGUgcG9pbnRzICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgICAgICBpZiAoY2ggPiAxMjcpIHsKKyAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKKyAgICAgICAgICAgICAgICBjaCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgIH0KKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIGNoKTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KGRlY2ltYWwpOwogfQogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLWludCBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbChQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitpbnQKK1B5VW5pY29kZV9FbmNvZGVEZWNpbWFsKFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICBQeV9VTklDT0RFICpwLCAqZW5kOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gImRlY2ltYWwiOwotICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJpbnZhbGlkIGRlY2ltYWwgVW5pY29kZSBzdHJpbmciOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwgMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfc3NpemVfdCBpOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgaWYgKG91dHB1dCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBwID0gczsKLSAgICBlbmQgPSBzICsgbGVuZ3RoOwotICAgIHdoaWxlIChwIDwgZW5kKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKworICAgIGZvciAoaT0wOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAgICAgUHlPYmplY3QgKmV4YzsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGRlY2ltYWw7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7Ci0gICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICBQeV9VTklDT0RFICp1bmkyOwotICAgICAgICBQeV9VTklDT0RFICpjb2xsc3RhcnQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNvbGxlbmQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3M7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkgewogICAgICAgICAgICAgKm91dHB1dCsrID0gJyAnOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkgewogICAgICAgICAgICAgKm91dHB1dCsrID0gJzAnICsgZGVjaW1hbDsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPCAyNTYpIHsKICAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKWNoOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgLyogQWxsIG90aGVyIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgdW5lbmNvZGFibGUgKi8KLSAgICAgICAgY29sbHN0YXJ0ID0gcDsKLSAgICAgICAgZm9yIChjb2xsZW5kID0gcCsxOyBjb2xsZW5kIDwgZW5kOyBjb2xsZW5kKyspIHsKLSAgICAgICAgICAgIGlmICgoMCA8ICpjb2xsZW5kICYmICpjb2xsZW5kIDwgMjU2KSB8fAotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRSgqY29sbGVuZCkgfHwKLSAgICAgICAgICAgICAgICAwIDw9IFB5X1VOSUNPREVfVE9ERUNJTUFMKCpjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cAotICAgICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHMsIGxlbmd0aCwgY29sbHN0YXJ0LXMsIGNvbGxlbmQtcywgcmVhc29uKTsKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApCi0gICAgICAgICAgICAgICAgKm91dHB1dCsrID0gJz8nOwotICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICBwID0gY29sbGVuZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApCi0gICAgICAgICAgICAgICAgb3V0cHV0ICs9IHNwcmludGYob3V0cHV0LCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgIHAgPSBjb2xsZW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHMsIGxlbmd0aCwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQtcywgY29sbGVuZC1zLCAmbmV3cG9zKTsKLSAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socmVwdW5pY29kZSkpIHsKLSAgICAgICAgICAgICAgICAvKiBCeXRlIHJlc3VsdHMgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhleSBoYXZlIG5vIGRlY2ltYWwgcHJvcGVydHkuICovCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVycm9yIGhhbmRsZXIgc2hvdWxkIHJldHVybiB1bmljb2RlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgIGZvciAodW5pMiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOyByZXBzaXplLS0+MDsgKyt1bmkyKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICp1bmkyOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnICc7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnMCcgKyBkZWNpbWFsOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgwIDwgY2ggJiYgY2ggPCAyNTYpCi0gICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAoY2hhciljaDsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBsZW5ndGgsIGNvbGxzdGFydC1zLCBjb2xsZW5kLXMsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gcyArIG5ld3BvczsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgfQorCisgICAgICAgIHN0YXJ0cG9zID0gaTsKKyAgICAgICAgZXhjID0gTlVMTDsKKyAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAiZGVjaW1hbCIsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZGVjaW1hbCBVbmljb2RlIHN0cmluZyIpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICAvKiAwLXRlcm1pbmF0ZSB0aGUgb3V0cHV0IHN0cmluZyAqLwogICAgICpvdXRwdXQrKyA9ICdcMCc7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIDA7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIHJldHVybiAtMTsKIH0KIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZWRlZnMuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorc3RhdGljIFB5X3NzaXplX3QKK2FueV9maW5kX3NsaWNlKGludCBkaXJlY3Rpb24sIFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQoreworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCByZXN1bHQ7CiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHMxKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHMyKTsKKyAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHMxKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoczIpOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoczEsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoczIsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoczEpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMik7CiAKLSNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKLSNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKLSNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorICAgIGlmIChkaXJlY3Rpb24gPiAwKSB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmVzdWx0ID0gdWNzMmxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gLTI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9yZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB1Y3MxbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3MybGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3M0bGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IC0yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeV9zc2l6ZV90CitfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCisgICAgdm9pZCAqZGlnaXRzLCBQeV9zc2l6ZV90IG5fZGlnaXRzLAorICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAorICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLCBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIHVuc2lnbmVkIGludCBraW5kLCB0aG91c2FuZHNfc2VwX2tpbmQ7CisgICAgY2hhciAqZGF0YSwgKnRob3VzYW5kc19zZXBfZGF0YTsKKyAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCkgeworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIGRhdGEgPSAoY2hhciAqKSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSArIGluZGV4ICoga2luZDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgZGF0YSA9IE5VTEw7CisgICAgfQorICAgIHRob3VzYW5kc19zZXBfa2luZCA9IFB5VW5pY29kZV9LSU5EKHRob3VzYW5kc19zZXApOworICAgIHRob3VzYW5kc19zZXBfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRob3VzYW5kc19zZXApOworICAgIHRob3VzYW5kc19zZXBfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGhvdXNhbmRzX3NlcCk7CisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCAmJiB0aG91c2FuZHNfc2VwX2tpbmQgIT0ga2luZCkgeworICAgICAgICBpZiAodGhvdXNhbmRzX3NlcF9raW5kIDwga2luZCkgeworICAgICAgICAgICAgdGhvdXNhbmRzX3NlcF9kYXRhID0gX1B5VW5pY29kZV9Bc0tpbmQodGhvdXNhbmRzX3NlcCwga2luZCk7CisgICAgICAgICAgICBpZiAoIXRob3VzYW5kc19zZXBfZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkYXRhID0gX1B5VW5pY29kZV9Bc0tpbmQodW5pY29kZSwgdGhvdXNhbmRzX3NlcF9raW5kKTsKKyAgICAgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAodW5pY29kZSAhPSBOVUxMICYmIFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIGxlbiA9IGFzY2lpbGliX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgICAgIChQeV9VQ1MxICopIGRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTMSAqKSBkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbiA9IHVjczFsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgKFB5X1VDUzEqKWRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTMSopZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLAorICAgICAgICAgICAgICAgIChQeV9VQ1MxICopIHRob3VzYW5kc19zZXBfZGF0YSwgdGhvdXNhbmRzX3NlcF9sZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBsZW4gPSB1Y3MybGliX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgKFB5X1VDUzIgKikgZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MyICopIGRpZ2l0cywgbl9kaWdpdHMsCisgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLAorICAgICAgICAgICAgKFB5X1VDUzIgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGxlbiA9IHVjczRsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAoUHlfVUNTNCAqKSBkYXRhLCBuX2J1ZmZlciwgKFB5X1VDUzQgKikgZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAoUHlfVUNTNCAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh1bmljb2RlICE9IE5VTEwgJiYgdGhvdXNhbmRzX3NlcF9raW5kICE9IGtpbmQpIHsKKyAgICAgICAgaWYgKHRob3VzYW5kc19zZXBfa2luZCA8IGtpbmQpCisgICAgICAgICAgICBQeU1lbV9GcmVlKHRob3VzYW5kc19zZXBfZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGF0YSk7CisgICAgfQorICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgKm1heGNoYXIgPSAxMjc7CisgICAgICAgIGlmIChsZW4gIT0gbl9kaWdpdHMpIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0aG91c2FuZHNfc2VwKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxlbjsKK30KKwogCiAvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwogI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXApAQCAtNjQ3Myw3MiArODk0MCwxMDIgQEAKICAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKLS8qIF9QeV9VTklDT0RFX05FWFQgaXMgYSBwcml2YXRlIG1hY3JvIHVzZWQgdG8gcmV0cmlldmUgdGhlIGNoYXJhY3RlciBwb2ludGVkCi0gKiBieSAncHRyJywgcG9zc2libHkgY29tYmluaW5nIHN1cnJvZ2F0ZSBwYWlycyBvbiBuYXJyb3cgYnVpbGRzLgotICogJ3B0cicgYW5kICdlbmQnIG11c3QgYmUgUHlfVU5JQ09ERSosIHdpdGggJ3B0cicgcG9pbnRpbmcgYXQgdGhlIGNoYXJhY3RlcgotICogdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYW5kICdlbmQnIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLSAqICgnZW5kJyBpcyB1c2VkIG9uIG5hcnJvdyBidWlsZHMgdG8gZGV0ZWN0IGEgbG9uZSBzdXJyb2dhdGUgYXQgdGhlCi0gKiBlbmQgb2YgdGhlIGJ1ZmZlciB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB1bmNoYW5nZWQuKQotICogVGhlIHB0ciBhbmQgZW5kIGFyZ3VtZW50cyBzaG91bGQgYmUgc2lkZS1lZmZlY3QgZnJlZSBhbmQgcHRyIG11c3QgYW4gbHZhbHVlLgotICogVGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIGNoYXIgaXMgYWx3YXlzIFB5X1VDUzQuCi0gKgotICogTm90ZTogdGhlIG1hY3JvIGFkdmFuY2VzIHB0ciB0byBuZXh0IGNoYXIsIHNvIGl0IG1pZ2h0IGhhdmUgc2lkZS1lZmZlY3RzCi0gKiAgICAgICAoZXNwZWNpYWxseSBpZiB1c2VkIHdpdGggb3RoZXIgbWFjcm9zKS4KLSAqLwotCi0vKiBoZWxwZXIgbWFjcm9zIHVzZWQgYnkgX1B5X1VOSUNPREVfTkVYVCAqLwotI2RlZmluZSBfUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpCi0jZGVmaW5lIF9QeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQotLyogSm9pbiB0d28gc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHJldHVybiBhIHNpbmdsZSBQeV9VQ1M0IHZhbHVlLiAqLwotI2RlZmluZSBfUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KSAgXAotICAgICgoKCgoUHlfVUNTNCkoaGlnaCkgJiAweDAzRkYpIDw8IDEwKSB8ICAgICAgXAotICAgICAgKChQeV9VQ1M0KShsb3cpICYgMHgwM0ZGKSkgKyAweDEwMDAwKQotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIF9QeV9VTklDT0RFX05FWFQocHRyLCBlbmQpICoocHRyKSsrCi0jZWxzZQotI2RlZmluZSBfUHlfVU5JQ09ERV9ORVhUKHB0ciwgZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoKChfUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSgqKHB0cikpICYmIChwdHIpIDwgKGVuZCkpICYmICAgICAgXAotICAgICAgICBfUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKChwdHIpWzFdKSkgPyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICgocHRyKSArPSAyLF9QeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUygocHRyKVstMl0sIChwdHIpWy0xXSkpIDogXAotICAgICAgIChQeV9VQ1M0KSoocHRyKSsrKQotI2VuZGlmCi0KLVB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5VW5pY29kZU9iamVjdCogc3RyX29iajsKLSAgICBQeVVuaWNvZGVPYmplY3QqIHN1Yl9vYmo7CisgICAgUHlPYmplY3QqIHN0cl9vYmo7CisgICAgUHlPYmplY3QqIHN1Yl9vYmo7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKKyAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoIXN0cl9vYmopCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJfb2JqID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7CisgICAgc3ViX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7CiAgICAgaWYgKCFzdWJfb2JqKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1Yl9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9vYmotPmxlbmd0aCk7Ci0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2NvdW50KAotICAgICAgICBzdHJfb2JqLT5zdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yl9vYmotPnN0ciwgc3ViX29iai0+bGVuZ3RoLAotICAgICAgICBQWV9TU0laRV9UX01BWAotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkgeworICAgICAgICBpZiAoa2luZDIgPiBraW5kKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZCk7CisgICAgfQorICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJfb2JqKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KAorICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICAgICApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSB1Y3MxbGliX2NvdW50KAorICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MybGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1MyKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1M0KilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IDA7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKIAorICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIC0xOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCkBAIC02NTUwLDE5ICs5MDQ3LDE1IEBACiAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CiAKLSAgICBpZiAoZGlyZWN0aW9uID4gMCkKLSAgICAgICAgcmVzdWx0ID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YiksIFB5VW5pY29kZV9HRVRfU0laRShzdWIpLAotICAgICAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICAgICAgKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3ViKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YiksCi0gICAgICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICAgICApOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKGRpcmVjdGlvbiwKKyAgICAgICAgc3RyLCBzdWIsIHN0YXJ0LCBlbmQKKyAgICAgICAgKTsKIAogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWIpOwpAQCAtNjU3MCwzNyArOTA2MywxMDQgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMKLWludCB0YWlsbWF0Y2goUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmluZENoYXIoUHlPYmplY3QgKnN0ciwgUHlfVUNTNCBjaCwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIGlmIChzdWJzdHJpbmctPmxlbmd0aCA9PSAwKQorICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBpZiAoZW5kID4gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSkKKyAgICAgICAgZW5kID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICByZXN1bHQgPSBmaW5kY2hhcihQeVVuaWNvZGVfMUJZVEVfREFUQShzdHIpICsga2luZCpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICBraW5kLCBlbmQtc3RhcnQsIGNoLCBkaXJlY3Rpb24pOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBzdGFydCArIHJlc3VsdDsKK30KKworc3RhdGljIGludAordGFpbG1hdGNoKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCisgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICBpbnQgZGlyZWN0aW9uKQoreworICAgIGludCBraW5kX3NlbGY7CisgICAgaW50IGtpbmRfc3ViOworICAgIHZvaWQgKmRhdGFfc2VsZjsKKyAgICB2b2lkICpkYXRhX3N1YjsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBlbmRfc3ViOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSA9PSAwKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHNlbGYtPmxlbmd0aCk7Ci0gICAgZW5kIC09IHN1YnN0cmluZy0+bGVuZ3RoOworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICBlbmQgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBpZiAoZW5kIDwgc3RhcnQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKLSAgICAgICAgaWYgKFB5X1VOSUNPREVfTUFUQ0goc2VsZiwgZW5kLCBzdWJzdHJpbmcpKQorICAgIGtpbmRfc2VsZiA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGFfc2VsZiA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGtpbmRfc3ViID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBkYXRhX3N1YiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgZW5kX3N1YiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgLSAxOworCisgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgIG9mZnNldCA9IGVuZDsKKyAgICBlbHNlCisgICAgICAgIG9mZnNldCA9IHN0YXJ0OworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmRfc2VsZiwgZGF0YV9zZWxmLCBvZmZzZXQpID09CisgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgMCkgJiYKKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCArIGVuZF9zdWIpID09CisgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgZW5kX3N1YikpIHsKKyAgICAgICAgLyogSWYgYm90aCBhcmUgb2YgdGhlIHNhbWUga2luZCwgbWVtY21wIGlzIHN1ZmZpY2llbnQgKi8KKyAgICAgICAgaWYgKGtpbmRfc2VsZiA9PSBraW5kX3N1YikgeworICAgICAgICAgICAgcmV0dXJuICEgbWVtY21wKChjaGFyICopZGF0YV9zZWxmICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCAqIFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3ViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICAvKiBvdGhlcndpc2Ugd2UgaGF2ZSB0byBjb21wYXJlIGVhY2ggY2hhcmFjdGVyIGJ5IGZpcnN0IGFjY2VzaW5nIGl0ICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8gY29tcGFyZSAwIGFuZCBsZW4oc3Vic3RyaW5nKS0xIGJlY2F1c2UKKyAgICAgICAgICAgICAgIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUgZW5zdXJlZCBhbHJlYWR5IHRoYXQgdGhleSBhcmUgZXF1YWwKKyAgICAgICAgICAgICAgIHdoZW4gd2UgZW5kIHVwIGhlcmUuICovCisgICAgICAgICAgICAvKiBUT0RPOiBob25vciBkaXJlY3Rpb24gYW5kIGRvIGEgZm9yd2FyZCBvciBiYWNrd2FyZHMgc2VhcmNoICovCisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgZW5kX3N1YjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmRfc2VsZiwgZGF0YV9zZWxmLCBvZmZzZXQgKyBpKSAhPQorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kX3N1YiwgZGF0YV9zdWIsIGkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChQeV9VTklDT0RFX01BVENIKHNlbGYsIHN0YXJ0LCBzdWJzdHJpbmcpKQotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KIAotUHlfc3NpemVfdCBQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCkBAIC02NjEzLDggKzkxNzMsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKChQeVVuaWNvZGVPYmplY3QgKilzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHIsCisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWJzdHIpOwpAQCAtNjYyNCwxNjggKzkxODMsMzEyIEBACiAvKiBBcHBseSBmaXhmY3QgZmlsdGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCBzZWxmIGFuZCByZXR1cm4gYQogICAgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmllZCBvYmplY3QgKi8KIAotc3RhdGljCi1QeU9iamVjdCAqZml4dXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgIGludCAoKmZpeGZjdCkoUHlVbmljb2RlT2JqZWN0ICpzKSkKK3N0YXRpYyBQeU9iamVjdCAqCitmaXh1cChQeU9iamVjdCAqc2VsZiwKKyAgICAgIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSkKIHsKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9VQ1M0IG1heGNoYXJfb2xkLCBtYXhjaGFyX25ldyA9IDA7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KLSAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgIHUgPSBfUHlVbmljb2RlX0NvcHkoc2VsZik7CiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWF4Y2hhcl9vbGQgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7CiAKLSAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgLyogZml4IGZ1bmN0aW9ucyByZXR1cm4gdGhlIG5ldyBtYXhpbXVtIGNoYXJhY3RlciBpbiBhIHN0cmluZywKKyAgICAgICBpZiB0aGUga2luZCBvZiB0aGUgcmVzdWx0aW5nIHVuaWNvZGUgb2JqZWN0IGRvZXMgbm90IGNoYW5nZSwKKyAgICAgICBldmVyeXRoaW5nIGlzIGZpbmUuICBPdGhlcndpc2Ugd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHN0cmluZyBraW5kCisgICAgICAgYW5kIHJlLXJ1biB0aGUgZml4IGZ1bmN0aW9uLiAqLworICAgIG1heGNoYXJfbmV3ID0gZml4ZmN0KHUpOwogCi0gICAgaWYgKCFmaXhmY3QodSkgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgLyogZml4ZmN0IHNob3VsZCByZXR1cm4gVFJVRSBpZiBpdCBtb2RpZmllZCB0aGUgYnVmZmVyLiBJZgotICAgICAgICAgICBGQUxTRSwgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBidWZmZXIgaW5zdGVhZAotICAgICAgICAgICAodG8gc2F2ZSBzcGFjZSwgbm90IHRpbWUpICovCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBpZiAobWF4Y2hhcl9uZXcgPT0gMCkgeworICAgICAgICAvKiBubyBjaGFuZ2VzICovOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1OworICAgIH0KKworICAgIG1heGNoYXJfbmV3ID0gYWxpZ25fbWF4Y2hhcihtYXhjaGFyX25ldyk7CisKKyAgICBpZiAobWF4Y2hhcl9uZXcgPT0gbWF4Y2hhcl9vbGQpCisgICAgICAgIHJldHVybiB1OworCisgICAgLyogSW4gY2FzZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgY2hhbmdlZCwgd2UgbmVlZCB0bworICAgICAgIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0aGUgbmV3IGNhdGVnb3J5LiAqLworICAgIHYgPSBQeVVuaWNvZGVfTmV3KFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjaGFyX25ldyk7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgaWYgKG1heGNoYXJfbmV3ID4gbWF4Y2hhcl9vbGQpIHsKKyAgICAgICAgLyogSWYgdGhlIG1heGNoYXIgaW5jcmVhc2VkIHNvIHRoYXQgdGhlIGtpbmQgY2hhbmdlZCwgbm90IGFsbAorICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSByZXByZXNlbnRhYmxlIGFueW1vcmUgYW5kIHdlIG5lZWQgdG8gZml4IHRoZQorICAgICAgICAgICBzdHJpbmcgYWdhaW4uIFRoaXMgb25seSBoYXBwZW5zIGluIHZlcnkgZmV3IGNhc2VzLiAqLworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh2LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CisgICAgICAgIG1heGNoYXJfb2xkID0gZml4ZmN0KHYpOworICAgICAgICBhc3NlcnQobWF4Y2hhcl9vbGQgPiAwICYmIG1heGNoYXJfb2xkIDw9IG1heGNoYXJfbmV3KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOworICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMKLWludCBmaXh1cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCitzdGF0aWMgUHlPYmplY3QgKgorYXNjaWlfdXBwZXJfb3JfbG93ZXIoUHlPYmplY3QgKnNlbGYsIGludCBsb3dlcikKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IHNlbGYtPmxlbmd0aDsKLSAgICBQeV9VTklDT0RFICpzID0gc2VsZi0+c3RyOwotICAgIGludCBzdGF0dXMgPSAwOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgY2hhciAqcmVzZGF0YSwgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGNoOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgaWYgKGxvd2VyKQorICAgICAgICBfUHlfYnl0ZXNfbG93ZXIocmVzZGF0YSwgZGF0YSwgbGVuKTsKKyAgICBlbHNlCisgICAgICAgIF9QeV9ieXRlc191cHBlcihyZXNkYXRhLCBkYXRhLCBsZW4pOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICAgICAgY2ggPSBQeV9VTklDT0RFX1RPVVBQRVIoKnMpOwotICAgICAgICBpZiAoY2ggIT0gKnMpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgICAgICAgICAqcyA9IGNoOworc3RhdGljIFB5X1VDUzQKK2hhbmRsZV9jYXBpdGFsX3NpZ21hKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgajsKKyAgICBpbnQgZmluYWxfc2lnbWE7CisgICAgUHlfVUNTNCBjOworICAgIC8qIFUrMDNBMyBpcyBpbiB0aGUgRmluYWxfU2lnbWEgY29udGV4dCB3aGVuLCBpdCBpcyBmb3VuZCBsaWtlIHRoaXM6CisKKyAgICAgXHB7Y2FzZWR9XHB7Y2FzZS1pZ25vcmFibGV9KlUrMDNBMyEoXHB7Y2FzZS1pZ25vcmFibGV9Klxwe2Nhc2VkfSkKKworICAgIHdoZXJlICEgaXMgYSBuZWdhdGlvbiBhbmQgXHB7eHh4fSBpcyBhIGNoYXJhY3RlciB3aXRoIHByb3BlcnR5IHh4eC4KKyAgICAqLworICAgIGZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoYykpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgZmluYWxfc2lnbWEgPSBqID49IDAgJiYgX1B5VW5pY29kZV9Jc0Nhc2VkKGMpOworICAgIGlmIChmaW5hbF9zaWdtYSkgeworICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKGMpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZmluYWxfc2lnbWEgPSBqID09IGxlbmd0aCB8fCAhX1B5VW5pY29kZV9Jc0Nhc2VkKGMpOwogICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7CisgICAgcmV0dXJuIChmaW5hbF9zaWdtYSkgPyAweDNDMiA6IDB4M0MzOwogfQogCi1zdGF0aWMKLWludCBmaXhsb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCitzdGF0aWMgaW50Citsb3dlcl91Y3M0KGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfc3NpemVfdCBpLAorICAgICAgICAgICBQeV9VQ1M0IGMsIFB5X1VDUzQgKm1hcHBlZCkKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IHNlbGYtPmxlbmd0aDsKLSAgICBQeV9VTklDT0RFICpzID0gc2VsZi0+c3RyOwotICAgIGludCBzdGF0dXMgPSAwOworICAgIC8qIE9ic2N1cmUgc3BlY2lhbCBjYXNlLiAqLworICAgIGlmIChjID09IDB4M0EzKSB7CisgICAgICAgIG1hcHBlZFswXSA9IGhhbmRsZV9jYXBpdGFsX3NpZ21hKGtpbmQsIGRhdGEsIGxlbmd0aCwgaSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChjLCBtYXBwZWQpOworfQogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGNoOworc3RhdGljIFB5X3NzaXplX3QKK2RvX2NhcGl0YWxpemUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKKyAgICBpbnQgbl9yZXMsIGo7CisgICAgUHlfVUNTNCBjLCBtYXBwZWRbM107CiAKLSAgICAgICAgY2ggPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICBpZiAoY2ggIT0gKnMpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgICAgICAgICAqcyA9IGNoOworICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKKyAgICB9CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fcmVzOyBqKyspIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKICAgICAgICAgfQotICAgICAgICBzKys7CiAgICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gazsKIH0KIAotc3RhdGljCi1pbnQgZml4c3dhcGNhc2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CitzdGF0aWMgUHlfc3NpemVfdAorZG9fc3dhcGNhc2UoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpIHsKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOwogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKCpzKSkgewotICAgICAgICAgICAgKnMgPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgfSBlbHNlIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSwgbWFwcGVkWzNdOworICAgICAgICBpbnQgbl9yZXMsIGo7CisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoYykpIHsKKyAgICAgICAgICAgIG5fcmVzID0gbG93ZXJfdWNzNChraW5kLCBkYXRhLCBsZW5ndGgsIGksIGMsIG1hcHBlZCk7CiAgICAgICAgIH0KLSAgICAgICAgcysrOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7Ci19Ci0KLXN0YXRpYwotaW50IGZpeGNhcGl0YWxpemUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7Ci0KLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghUHlfVU5JQ09ERV9JU1VQUEVSKCpzKSkgewotICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgfQotICAgIHMrKzsKLSAgICB3aGlsZSAoLS1sZW4gPiAwKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0xPV0VSKCpzKSkgewotICAgICAgICAgICAgKnMgPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICAgICAgc3RhdHVzID0gMTsKKyAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGMpKSB7CisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKICAgICAgICAgfQotICAgICAgICBzKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbl9yZXMgPSAxOworICAgICAgICAgICAgbWFwcGVkWzBdID0gYzsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBzdGF0dXM7CisgICAgcmV0dXJuIGs7CiB9CiAKLXN0YXRpYwotaW50IGZpeHRpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBQeV9zc2l6ZV90Citkb191cHBlcl9vcl9sb3dlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywKKyAgICAgICAgICAgICAgICAgIFB5X1VDUzQgKm1heGNoYXIsIGludCBsb3dlcikKIHsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKKyAgICAgICAgaWYgKGxvd2VyKQorICAgICAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbl9yZXMgPSBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKGMsIG1hcHBlZCk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb191cHBlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICByZXR1cm4gZG9fdXBwZXJfb3JfbG93ZXIoa2luZCwgZGF0YSwgbGVuZ3RoLCByZXMsIG1heGNoYXIsIDApOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fbG93ZXIoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgcmV0dXJuIGRvX3VwcGVyX29yX2xvd2VyKGtpbmQsIGRhdGEsIGxlbmd0aCwgcmVzLCBtYXhjaGFyLCAxKTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2RvX2Nhc2Vmb2xkKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIFB5X1VDUzQgbWFwcGVkWzNdOworICAgICAgICBpbnQgaiwgbl9yZXMgPSBfUHlVbmljb2RlX1RvRm9sZGVkRnVsbChjLCBtYXBwZWQpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fdGl0bGUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKICAgICBpbnQgcHJldmlvdXNfaXNfY2FzZWQ7CiAKLSAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBQeV9VTklDT0RFX1RPVElUTEUoKnApOwotICAgICAgICBpZiAoKnAgIT0gY2gpIHsKLSAgICAgICAgICAgICpwID0gY2g7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7Ci0gICAgZm9yICg7IHAgPCBlOyBwKyspIHsKLSAgICAgICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgUHlfVUNTNCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKIAogICAgICAgICBpZiAocHJldmlvdXNfaXNfY2FzZWQpCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfVE9MT1dFUihjaCk7CisgICAgICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfVE9USVRMRShjaCk7CisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9UaXRsZUZ1bGwoYywgbWFwcGVkKTsKIAotICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGNoKSB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKLSAgICAgICAgICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAwOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CisKKyAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSBfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIHJldHVybiBrOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY2FzZV9vcGVyYXRpb24oUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICgqcGVyZm9ybSkoaW50LCB2b2lkICosIFB5X3NzaXplX3QsIFB5X1VDUzQgKiwgUHlfVUNTNCAqKSkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgbmV3bGVuZ3RoID0gMDsKKyAgICBpbnQga2luZCwgb3V0a2luZDsKKyAgICB2b2lkICpkYXRhLCAqb3V0ZGF0YTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwLCAqdG1wLCAqdG1wZW5kOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShzZWxmKSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHRtcCA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlfVUNTNCkgKiAzICogbGVuZ3RoKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG5ld2xlbmd0aCA9IHBlcmZvcm0oa2luZCwgZGF0YSwgbGVuZ3RoLCB0bXAsICZtYXhjaGFyKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbmd0aCwgbWF4Y2hhcik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGxlYXZlOworICAgIHRtcGVuZCA9IHRtcCArIG5ld2xlbmd0aDsKKyAgICBvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBvdXRraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICBzd2l0Y2ggKG91dGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMSwgdG1wLCB0bXBlbmQsIG91dGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMiwgdG1wLCB0bXBlbmQsIG91dGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBtZW1jcHkob3V0ZGF0YSwgdG1wLCBzaXplb2YoUHlfVUNTNCkgKiBuZXdsZW5ndGgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgbGVhdmU6CisgICAgUHlNZW1fRlJFRSh0bXApOworICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Kb2luKFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICpzZXEpCiB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSBibGFuayA9ICcgJzsKLSAgICBjb25zdCBQeV9VTklDT0RFICpzZXAgPSAmYmxhbms7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW4gPSAxOwotICAgIFB5VW5pY29kZU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLwotICAgIFB5X1VOSUNPREUgKnJlc19wOyAgICAgICAvKiBwb2ludGVyIHRvIGZyZWUgYnl0ZSBpbiByZXMncyBzdHJpbmcgYXJlYSAqLworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCiAgICAgUHlPYmplY3QgKmZzZXE7ICAgICAgICAgIC8qIFB5U2VxdWVuY2VfRmFzdChzZXEpICovCiAgICAgUHlfc3NpemVfdCBzZXFsZW47ICAgICAgIC8qIGxlbihmc2VxKSAtLSBudW1iZXIgb2YgaXRlbXMgaW4gc2VxdWVuY2UgKi8KICAgICBQeU9iamVjdCAqKml0ZW1zOwogICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3Qgc3osIGk7CisgICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfVUNTNCBpdGVtX21heGNoYXI7CisgICAgaW50IHVzZV9tZW1jcHk7CisgICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0X29iajsKKyAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CiAKICAgICBmc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHNlcSwgIiIpOwogICAgIGlmIChmc2VxID09IE5VTEwpIHsKQEAgLTY3OTksMjQgKzk1MDIsMzQgQEAKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZnNlcSk7CiAgICAgLyogSWYgZW1wdHkgc2VxdWVuY2UsIHJldHVybiB1IiIuICovCiAgICAgaWYgKHNlcWxlbiA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IF9QeVVuaWNvZGVfTmV3KDApOyAgLyogZW1wdHkgc2VxdWVuY2U7IHJldHVybiB1IiIgKi8KLSAgICAgICAgZ290byBEb25lOworICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmVzID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CisKICAgICAvKiBJZiBzaW5nbGV0b24gc2VxdWVuY2Ugd2l0aCBhbiBleGFjdCBVbmljb2RlLCByZXR1cm4gdGhhdC4gKi8KKyAgICBsYXN0X29iaiA9IE5VTEw7CisgICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgaWYgKHNlcWxlbiA9PSAxKSB7Ci0gICAgICAgIGl0ZW0gPSBpdGVtc1swXTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW0pKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgICAgICByZXMgPSAoUHlVbmljb2RlT2JqZWN0ICopaXRlbTsKLSAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW1zWzBdKSkgeworICAgICAgICAgICAgcmVzID0gaXRlbXNbMF07CisgICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KKyAgICAgICAgc2VwbGVuID0gMDsKKyAgICAgICAgbWF4Y2hhciA9IDA7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBTZXQgdXAgc2VwIGFuZCBzZXBsZW4gKi8KICAgICAgICAgaWYgKHNlcGFyYXRvciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzZXAgPSAmYmxhbms7CisgICAgICAgICAgICAvKiBmYWxsIGJhY2sgdG8gYSBibGFuayBzcGFjZSBzZXBhcmF0b3IgKi8KKyAgICAgICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnICcpOworICAgICAgICAgICAgaWYgKCFzZXApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgc2VwbGVuID0gMTsKKyAgICAgICAgICAgIG1heGNoYXIgPSAzMjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNlcGFyYXRvcikpIHsKQEAgLTY4MjYsOSArOTUzOSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcGFyYXRvciktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlcGFyYXRvcik7Ci0gICAgICAgICAgICBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwYXJhdG9yKSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBzZXAgPSBzZXBhcmF0b3I7CisgICAgICAgICAgICBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBhcmF0b3IpOworICAgICAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZXBhcmF0b3IpOworICAgICAgICAgICAgLyogaW5jIHJlZmNvdW50IHRvIGtlZXAgdGhpcyBjb2RlIHBhdGggc3ltbWV0cmljIHdpdGggdGhlCisgICAgICAgICAgICAgICBhYm92ZSBjYXNlIG9mIGEgYmxhbmsgc2VwYXJhdG9yICovCisgICAgICAgICAgICBQeV9JTkNSRUYoc2VwKTsKICAgICAgICAgfQorICAgICAgICBsYXN0X29iaiA9IHNlcDsKICAgICB9CiAKICAgICAvKiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIHRoaW5ncyB0byBqb2luLCBvciBlbHNlIHdlIGhhdmUgYSBzdWJjbGFzcwpAQCAtNjgzNyw2ICs5NTU3LDExIEBACiAgICAgICogbmVlZCAoc3opLCBhbmQgc2VlIHdoZXRoZXIgYWxsIGFyZ3VtZW50IGFyZSBzdHJpbmdzLgogICAgICAqLwogICAgIHN6ID0gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgIHVzZV9tZW1jcHkgPSAwOworI2Vsc2UKKyAgICB1c2VfbWVtY3B5ID0gMTsKKyNlbmRpZgogICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG9sZF9zeiA9IHN6OwogICAgICAgICBpdGVtID0gaXRlbXNbaV07CkBAIC02ODQ3LDcgKzk1NzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQotICAgICAgICBzeiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaXRlbSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHN6ICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBpdGVtX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoaXRlbSk7CisgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBpdGVtX21heGNoYXIpOwogICAgICAgICBpZiAoaSAhPSAwKQogICAgICAgICAgICAgc3ogKz0gc2VwbGVuOwogICAgICAgICBpZiAoc3ogPCBvbGRfc3ogfHwgc3ogPiBQWV9TU0laRV9UX01BWCkgewpAQCAtNjg1NSwyNjYgKzk1ODQsNzI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CisgICAgICAgIGlmICh1c2VfbWVtY3B5ICYmIGxhc3Rfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChsYXN0X29iaikgIT0gUHlVbmljb2RlX0tJTkQoaXRlbSkpCisgICAgICAgICAgICAgICAgdXNlX21lbWNweSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgbGFzdF9vYmogPSBpdGVtOwogICAgIH0KIAotICAgIHJlcyA9IF9QeVVuaWNvZGVfTmV3KHN6KTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHN6LCBtYXhjaGFyKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIENhdGVuYXRlIGV2ZXJ5dGhpbmcuICovCi0gICAgcmVzX3AgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47ICsraSkgeworI2lmZGVmIFB5X0RFQlVHCisgICAgdXNlX21lbWNweSA9IDA7CisjZWxzZQorICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgIHJlc19kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgICAgIGlmIChzZXBsZW4gIT0gMCkKKyAgICAgICAgICAgIHNlcF9kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VwKTsKKyAgICB9CisjZW5kaWYKKyAgICBmb3IgKGkgPSAwLCByZXNfb2Zmc2V0ID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaXRlbWxlbjsKICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldOwotICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pOwogICAgICAgICAvKiBDb3B5IGl0ZW0sIGFuZCBtYXliZSB0aGUgc2VwYXJhdG9yLiAqLwotICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHJlc19wLCBzZXAsIHNlcGxlbik7Ci0gICAgICAgICAgICByZXNfcCArPSBzZXBsZW47CisgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBzZXBsZW4pOworICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBzZXBsZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIHJlc19vZmZzZXQsIHNlcCwgMCwgc2VwbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfb2Zmc2V0ICs9IHNlcGxlbjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9VTklDT0RFX0NPUFkocmVzX3AsIFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pLCBpdGVtbGVuKTsKLSAgICAgICAgcmVzX3AgKz0gaXRlbWxlbjsKKyAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBpZiAoaXRlbWxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoaXRlbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBpdGVtbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogaXRlbWxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgcmVzX29mZnNldCwgaXRlbSwgMCwgaXRlbWxlbik7CisgICAgICAgICAgICAgICAgcmVzX29mZnNldCArPSBpdGVtbGVuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorICAgIGlmICh1c2VfbWVtY3B5KQorICAgICAgICBhc3NlcnQocmVzX2RhdGEgPT0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBraW5kICogUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CisgICAgZWxzZQorICAgICAgICBhc3NlcnQocmVzX29mZnNldCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKIAotICBEb25lOgogICAgIFB5X0RFQ1JFRihmc2VxKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzOworICAgIFB5X1hERUNSRUYoc2VwKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgUHlfWERFQ1JFRihzZXApOwogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljCi1QeVVuaWNvZGVPYmplY3QgKnBhZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlZnQsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBmaWxsKQorI2RlZmluZSBGSUxMKGtpbmQsIGRhdGEsIHZhbHVlLCBzdGFydCwgbGVuZ3RoKSBcCisgICAgZG8geyBcCisgICAgICAgIFB5X3NzaXplX3QgaV8gPSAwOyBcCisgICAgICAgIGFzc2VydChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKTsgXAorICAgICAgICBzd2l0Y2ggKChraW5kKSkgeyBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIHRvXyA9ICh1bnNpZ25lZCBjaGFyICopKChkYXRhKSkgKyAoc3RhcnQpOyBcCisgICAgICAgICAgICBtZW1zZXQodG9fLCAodW5zaWduZWQgY2hhcil2YWx1ZSwgKGxlbmd0aCkpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeyBcCisgICAgICAgICAgICBQeV9VQ1MyICogdG9fID0gKFB5X1VDUzIgKikoKGRhdGEpKSArIChzdGFydCk7IFwKKyAgICAgICAgICAgIGZvciAoOyBpXyA8IChsZW5ndGgpOyArK2lfLCArK3RvXykgKnRvXyA9ICh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgIFB5X1VDUzQgKiB0b18gPSAoUHlfVUNTNCAqKSgoZGF0YSkpICsgKHN0YXJ0KTsgXAorICAgICAgICAgICAgZm9yICg7IGlfIDwgKGxlbmd0aCk7ICsraV8sICsrdG9fKSAqdG9fID0gKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgZGVmYXVsdDogYXNzZXJ0KDApOyBcCisgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCit2b2lkCitfUHlVbmljb2RlX0Zhc3RGaWxsKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OworICAgIGNvbnN0IGVudW0gUHlVbmljb2RlX0tpbmQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGNvbnN0IHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQodW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoZmlsbF9jaGFyIDw9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHN0YXJ0ID49IDApOworICAgIGFzc2VydChzdGFydCArIGxlbmd0aCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgRklMTChraW5kLCBkYXRhLCBmaWxsX2NoYXIsIHN0YXJ0LCBsZW5ndGgpOworfQorCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChmaWxsX2NoYXIgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGwgY2hhcmFjdGVyIGlzIGJpZ2dlciB0aGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWF4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkgLSBzdGFydDsKKyAgICBsZW5ndGggPSBQeV9NSU4obWF4bGVuLCBsZW5ndGgpOworICAgIGlmIChsZW5ndGggPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHVuaWNvZGUsIHN0YXJ0LCBsZW5ndGgsIGZpbGxfY2hhcik7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3BhZChQeU9iamVjdCAqc2VsZiwKKyAgICBQeV9zc2l6ZV90IGxlZnQsCisgICAgUHlfc3NpemVfdCByaWdodCwKKyAgICBQeV9VQ1M0IGZpbGwpCit7CisgICAgUHlPYmplY3QgKnU7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAobGVmdCA8IDApCiAgICAgICAgIGxlZnQgPSAwOwogICAgIGlmIChyaWdodCA8IDApCiAgICAgICAgIHJpZ2h0ID0gMDsKIAotICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBzZWxmOwotICAgIH0KKyAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiAKLSAgICBpZiAobGVmdCA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+bGVuZ3RoIHx8Ci0gICAgICAgIHJpZ2h0ID4gUFlfU1NJWkVfVF9NQVggLSAobGVmdCArIHNlbGYtPmxlbmd0aCkpIHsKKyAgICBpZiAobGVmdCA+IFBZX1NTSVpFX1RfTUFYIC0gX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgfHwKKyAgICAgICAgcmlnaHQgPiBQWV9TU0laRV9UX01BWCAtIChsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicGFkZGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KGxlZnQgKyBzZWxmLT5sZW5ndGggKyByaWdodCk7Ci0gICAgaWYgKHUpIHsKLSAgICAgICAgaWYgKGxlZnQpCi0gICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwodS0+c3RyLCBmaWxsLCBsZWZ0KTsKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0ciArIGxlZnQsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKLSAgICAgICAgaWYgKHJpZ2h0KQotICAgICAgICAgICAgUHlfVU5JQ09ERV9GSUxMKHUtPnN0ciArIGxlZnQgKyBzZWxmLT5sZW5ndGgsIGZpbGwsIHJpZ2h0KTsKLSAgICB9CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZWxmKTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgZmlsbCk7CisgICAgdSA9IFB5VW5pY29kZV9OZXcobGVmdCArIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpICsgcmlnaHQsIG1heGNoYXIpOworICAgIGlmICghdSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgIGlmIChsZWZ0KQorICAgICAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGwsIDAsIGxlZnQpOworICAgIGlmIChyaWdodCkKKyAgICAgICAgRklMTChraW5kLCBkYXRhLCBmaWxsLCBsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZiksIHJpZ2h0KTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCBsZWZ0LCBzZWxmLCAwLCBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CiAgICAgcmV0dXJuIHU7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfU3BsaXRsaW5lcyhQeU9iamVjdCAqc3RyaW5nLCBpbnQga2VlcGVuZHMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfU3BsaXRsaW5lcyhQeU9iamVjdCAqc3RyaW5nLCBpbnQga2VlcGVuZHMpCiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAKICAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJpbmcpOwogICAgIGlmIChzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdHJpbmcpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBsaXN0ID0gc3RyaW5nbGliX3NwbGl0bGluZXMoCi0gICAgICAgIChQeU9iamVjdCopIHN0cmluZywgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKSwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cmluZyksIGtlZXBlbmRzKTsKLQorICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyaW5nKSkKKyAgICAgICAgICAgIGxpc3QgPSBhc2NpaWxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpLCBrZWVwZW5kcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpc3QgPSB1Y3MxbGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgbGlzdCA9IHVjczJsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzJCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgbGlzdCA9IHVjczRsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzRCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBsaXN0ID0gMDsKKyAgICB9CiAgICAgUHlfREVDUkVGKHN0cmluZyk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnNwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5T2JqZWN0ICoKK3NwbGl0KFB5T2JqZWN0ICpzZWxmLAorICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgUHlPYmplY3QqIG91dDsKKwogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKAotICAgICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBtYXhjb3VudAotICAgICAgICAgICAgKTsKKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV80QllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCi0gICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdCgKLSAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLAotICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgIG1heGNvdW50Ci0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9zcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3NwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9zcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG91dCA9IE5VTEw7CisgICAgfQorICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnJzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5T2JqZWN0ICoKK3JzcGxpdChQeU9iamVjdCAqc2VsZiwKKyAgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAorICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgUHlPYmplY3QqIG91dDsKKwogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZSgKLSAgICAgICAgICAgIChQeU9iamVjdCopIHNlbGYsICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgbWF4Y291bnQKLSAgICAgICAgICAgICk7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc2VsZikpIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8yQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzNGxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdCgKLSAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLAotICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgIG1heGNvdW50Ci0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnNwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcnNwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfcnNwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9yc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBvdXQgPSBOVUxMOworICAgIH0KKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gb3V0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICpyZXBsYWNlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMSwKLSAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlfc3NpemVfdAorYW55bGliX2ZpbmQoaW50IGtpbmQsIFB5T2JqZWN0ICpzdHIxLCB2b2lkICpidWYxLCBQeV9zc2l6ZV90IGxlbjEsCisgICAgICAgICAgICBQeU9iamVjdCAqc3RyMiwgdm9pZCAqYnVmMiwgUHlfc3NpemVfdCBsZW4yLCBQeV9zc2l6ZV90IG9mZnNldCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHIxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3RyMikpCisgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2FueWxpYl9jb3VudChpbnQga2luZCwgUHlPYmplY3QgKnNzdHIsIHZvaWQqIHNidWYsIFB5X3NzaXplX3Qgc2xlbiwKKyAgICAgICAgICAgICBQeU9iamVjdCAqc3RyMSwgdm9pZCAqYnVmMSwgUHlfc3NpemVfdCBsZW4xLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3N0cikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN0cjEpKQorICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MybGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgfQorICAgIGFzc2VydCgwKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHIxLAorICAgICAgICBQeU9iamVjdCAqc3RyMiwgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBQeU9iamVjdCAqdTsKKyAgICBjaGFyICpzYnVmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgY2hhciAqYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cjEpOworICAgIGNoYXIgKmJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdHIyKTsKKyAgICBpbnQgc3JlbGVhc2UgPSAwLCByZWxlYXNlMSA9IDAsIHJlbGVhc2UyID0gMDsKKyAgICBpbnQgc2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBpbnQga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIxKTsKKyAgICBpbnQga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdHIyKTsKKyAgICBQeV9zc2l6ZV90IHNsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKTsKKyAgICBQeV9zc2l6ZV90IGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKTsKKyAgICBpbnQgbWF5c2hyaW5rOworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcl9zdHIyOwogCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IHNlbGYtPmxlbmd0aCA9PSAwKQorICAgIGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgc2xlbiA9PSAwKQogICAgICAgICBnb3RvIG5vdGhpbmc7CiAKLSAgICBpZiAoc3RyMS0+bGVuZ3RoID09IHN0cjItPmxlbmd0aCkgewotICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgaWYgKHN0cjEgPT0gc3RyMikKKyAgICAgICAgZ290byBub3RoaW5nOworICAgIGlmIChza2luZCA8IGtpbmQxKQorICAgICAgICAvKiBzdWJzdHJpbmcgdG9vIHdpZGUgdG8gYmUgcHJlc2VudCAqLworICAgICAgICBnb3RvIG5vdGhpbmc7CisKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpOworICAgIG1heGNoYXJfc3RyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIyKTsKKyAgICAvKiBSZXBsYWNpbmcgc3RyMSB3aXRoIHN0cjIgbWF5IGNhdXNlIGEgbWF4Y2hhciByZWR1Y3Rpb24gaW4gdGhlCisgICAgICAgcmVzdWx0IHN0cmluZy4gKi8KKyAgICBtYXlzaHJpbmsgPSAobWF4Y2hhcl9zdHIyIDwgbWF4Y2hhcik7CisgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXJfc3RyMik7CisKKyAgICBpZiAobGVuMSA9PSBsZW4yKSB7CiAgICAgICAgIC8qIHNhbWUgbGVuZ3RoICovCi0gICAgICAgIGlmIChzdHIxLT5sZW5ndGggPT0gMCkKKyAgICAgICAgaWYgKGxlbjEgPT0gMCkKICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA9PSAxKSB7CisgICAgICAgIGlmIChsZW4xID09IDEpIHsKICAgICAgICAgICAgIC8qIHJlcGxhY2UgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSB1MSwgdTI7Ci0gICAgICAgICAgICBpZiAoIWZpbmRjaGFyKHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHJbMF0pKQorICAgICAgICAgICAgUHlfVUNTNCB1MSwgdTI7CisgICAgICAgICAgICBpbnQgcmtpbmQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4LCBwb3M7CisgICAgICAgICAgICBjaGFyICpzcmM7CisKKyAgICAgICAgICAgIHUxID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHIxLCAwKTsKKyAgICAgICAgICAgIHBvcyA9IGZpbmRjaGFyKHNidWYsIFB5VW5pY29kZV9LSU5EKHNlbGYpLCBzbGVuLCB1MSwgMSk7CisgICAgICAgICAgICBpZiAocG9zIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgICAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgdTIgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0cjIsIDApOworICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7Ci0gICAgICAgICAgICB1MSA9IHN0cjEtPnN0clswXTsKLSAgICAgICAgICAgIHUyID0gc3RyMi0+c3RyWzBdOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHUtPmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGlmICh1LT5zdHJbaV0gPT0gdTEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKC0tbWF4Y291bnQgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIHUtPnN0cltpXSA9IHUyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGkgPSBzdHJpbmdsaWJfZmluZCgKLSAgICAgICAgICAgICAgICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsIDAKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCAwLCBzZWxmLCAwLCBzbGVuKTsKKyAgICAgICAgICAgIHJraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgUHlVbmljb2RlX0RBVEEodSksIHBvcywgdTIpOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICAgICAgc3JjID0gc2J1ZjsKKyAgICAgICAgICAgIHdoaWxlICgtLW1heGNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgIHNyYyArPSBwb3MgKiBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgICAgICAgICBzbGVuIC09IHBvczsKKyAgICAgICAgICAgICAgICBpbmRleCArPSBwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc3JjLCBQeVVuaWNvZGVfS0lORChzZWxmKSwgc2xlbiwgdTEsIDEpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPCAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIFB5VW5pY29kZV9EQVRBKHUpLCBpbmRleCArIHBvcywgdTIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CisgICAgICAgICAgICBjaGFyICpyZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChraW5kMSA8IHJraW5kKSB7CisgICAgICAgICAgICAgICAgLyogd2lkZW4gc3Vic3RyaW5nICovCisgICAgICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLCBzYnVmLCBzbGVuLCBzdHIxLCBidWYxLCBsZW4xLCAwKTsKICAgICAgICAgICAgIGlmIChpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgICAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgaWYgKHJraW5kID4ga2luZDIpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiByZXBsYWNlbWVudCAqLworICAgICAgICAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdHIyLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFidWYyKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlbGVhc2UyID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHJraW5kIDwga2luZDIpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiBzZWxmIGFuZCBidWYxICovCisgICAgICAgICAgICAgICAgcmtpbmQgPSBraW5kMjsKKyAgICAgICAgICAgICAgICBpZiAocmVsZWFzZTEpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAwOworICAgICAgICAgICAgICAgIHNidWYgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFzYnVmKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHNyZWxlYXNlID0gMTsKKyAgICAgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghYnVmMSkgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1ID0gUHlVbmljb2RlX05ldyhzbGVuLCBtYXhjaGFyKTsKICAgICAgICAgICAgIGlmICghdSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHUpID09IHJraW5kKTsKKyAgICAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9EQVRBKHUpOwogCisgICAgICAgICAgICBtZW1jcHkocmVzLCBzYnVmLCBya2luZCAqIHNsZW4pOwogICAgICAgICAgICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIraSwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgaSArPSBzdHIxLT5sZW5ndGg7CisgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgcmtpbmQgKiBsZW4yKTsKKyAgICAgICAgICAgIGkgKz0gbGVuMTsKIAogICAgICAgICAgICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICAgICAgICAgIGkgPSBzdHJpbmdsaWJfZmluZChzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEtPnN0ciwgc3RyMS0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKTsKKyAgICAgICAgICAgICAgICBpID0gYW55bGliX2ZpbmQocmtpbmQsIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNidWYrcmtpbmQqaSwgc2xlbi1pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLCBidWYxLCBsZW4xLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoaSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0citpLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaSArPSBzdHIxLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiBsZW4yKTsKKyAgICAgICAgICAgICAgICBpICs9IGxlbjE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfc3NpemVfdCBuLCBpLCBqLCBpcmVzOworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplOworICAgICAgICBpbnQgcmtpbmQgPSBza2luZDsKKyAgICAgICAgY2hhciAqcmVzOwogCi0gICAgICAgIFB5X3NzaXplX3QgbiwgaSwgajsKLSAgICAgICAgUHlfc3NpemVfdCBwcm9kdWN0LCBuZXdfc2l6ZSwgZGVsdGE7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0KLSAgICAgICAgLyogcmVwbGFjZSBzdHJpbmdzICovCi0gICAgICAgIG4gPSBzdHJpbmdsaWJfY291bnQoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIHN0cjEtPnN0ciwgc3RyMS0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKyAgICAgICAgaWYgKGtpbmQxIDwgcmtpbmQpIHsKKyAgICAgICAgICAgIC8qIHdpZGVuIHN1YnN0cmluZyAqLworICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghYnVmMSkgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlbGVhc2UxID0gMTsKKyAgICAgICAgfQorICAgICAgICBuID0gYW55bGliX2NvdW50KHJraW5kLCBzZWxmLCBzYnVmLCBzbGVuLCBzdHIxLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CiAgICAgICAgIGlmIChuID09IDApCiAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgIC8qIG5ld19zaXplID0gc2VsZi0+bGVuZ3RoICsgbiAqIChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpKTsgKi8KLSAgICAgICAgZGVsdGEgPSAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKTsKLSAgICAgICAgaWYgKGRlbHRhID09IDApIHsKLSAgICAgICAgICAgIG5ld19zaXplID0gc2VsZi0+bGVuZ3RoOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJvZHVjdCA9IG4gKiAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICgocHJvZHVjdCAvIChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpKSAhPSBuKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV3X3NpemUgPSBzZWxmLT5sZW5ndGggKyBwcm9kdWN0OwotICAgICAgICAgICAgaWYgKG5ld19zaXplIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGtpbmQyIDwgcmtpbmQpIHsKKyAgICAgICAgICAgIC8qIHdpZGVuIHJlcGxhY2VtZW50ICovCisgICAgICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMiwgcmtpbmQpOworICAgICAgICAgICAgaWYgKCFidWYyKSBnb3RvIGVycm9yOworICAgICAgICAgICAgcmVsZWFzZTIgPSAxOwogICAgICAgICB9Ci0gICAgICAgIHUgPSBfUHlVbmljb2RlX05ldyhuZXdfc2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKGtpbmQyID4gcmtpbmQpIHsKKyAgICAgICAgICAgIC8qIHdpZGVuIHNlbGYgYW5kIGJ1ZjEgKi8KKyAgICAgICAgICAgIHJraW5kID0ga2luZDI7CisgICAgICAgICAgICBzYnVmID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwgcmtpbmQpOworICAgICAgICAgICAgaWYgKCFzYnVmKSBnb3RvIGVycm9yOworICAgICAgICAgICAgc3JlbGVhc2UgPSAxOworICAgICAgICAgICAgaWYgKHJlbGVhc2UxKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICAgICAgcmVsZWFzZTEgPSAwOworICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghYnVmMSkgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlbGVhc2UxID0gMTsKKyAgICAgICAgfQorICAgICAgICAvKiBuZXdfc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpICsgbiAqIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKSAtCisgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpKSk7ICovCisgICAgICAgIGlmIChsZW4yID4gbGVuMSAmJiBsZW4yIC0gbGVuMSA+IChQWV9TU0laRV9UX01BWCAtIHNsZW4pIC8gbikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG5ld19zaXplID0gc2xlbiArIG4gKiAobGVuMiAtIGxlbjEpOworICAgICAgICBpZiAobmV3X3NpemUgPT0gMCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgdSA9IHVuaWNvZGVfZW1wdHk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld19zaXplID4gKFBZX1NTSVpFX1RfTUFYID4+IChya2luZC0xKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB1ID0gUHlVbmljb2RlX05ldyhuZXdfc2l6ZSwgbWF4Y2hhcik7CiAgICAgICAgIGlmICghdSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpID0gMDsKLSAgICAgICAgcCA9IHUtPnN0cjsKLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBya2luZCk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgICAgICBpcmVzID0gaSA9IDA7CisgICAgICAgIGlmIChsZW4xID4gMCkgewogICAgICAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKICAgICAgICAgICAgICAgICAvKiBsb29rIGZvciBuZXh0IG1hdGNoICovCi0gICAgICAgICAgICAgICAgaiA9IHN0cmluZ2xpYl9maW5kKHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpOworICAgICAgICAgICAgICAgIGogPSBhbnlsaWJfZmluZChya2luZCwgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwgc2xlbi1pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLCBidWYxLCBsZW4xLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoaiA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaiA+IGkpIHsKICAgICAgICAgICAgICAgICAgICAgLyogY29weSB1bmNoYW5nZWQgcGFydCBbaTpqXSAqLwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc2VsZi0+c3RyK2ksIGotaSk7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gaiAtIGk7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiAoai1pKSk7CisgICAgICAgICAgICAgICAgICAgIGlyZXMgKz0gaiAtIGk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIGNvcHkgc3Vic3RpdHV0aW9uIHN0cmluZyAqLwotICAgICAgICAgICAgICAgIGlmIChzdHIyLT5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gc3RyMi0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChsZW4yID4gMCkgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgICAgIGlyZXMgKz0gbGVuMjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaSA9IGogKyBzdHIxLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgaSA9IGogKyBsZW4xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGkgPCBzZWxmLT5sZW5ndGgpCisgICAgICAgICAgICBpZiAoaSA8IHNsZW4pCiAgICAgICAgICAgICAgICAgLyogY29weSB0YWlsIFtpOl0gKi8KLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIChzbGVuLWkpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIGludGVybGVhdmUgKi8KICAgICAgICAgICAgIHdoaWxlIChuID4gMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgcCArPSBzdHIyLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiBsZW4yKTsKKyAgICAgICAgICAgICAgICBpcmVzICs9IGxlbjI7CiAgICAgICAgICAgICAgICAgaWYgKC0tbiA8PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAqcCsrID0gc2VsZi0+c3RyW2krK107CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQpOworICAgICAgICAgICAgICAgIGlyZXMrKzsKKyAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pKTsKKyAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICBya2luZCAqIChzbGVuLWkpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopIHU7CisKKyAgICBpZiAobWF5c2hyaW5rKSB7CisgICAgICAgIHVuaWNvZGVfYWRqdXN0X21heGNoYXIoJnUpOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgZG9uZToKKyAgICBpZiAoc3JlbGVhc2UpCisgICAgICAgIFB5TWVtX0ZSRUUoc2J1Zik7CisgICAgaWYgKHJlbGVhc2UxKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjEpOworICAgIGlmIChyZWxlYXNlMikKKyAgICAgICAgUHlNZW1fRlJFRShidWYyKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIAogICBub3RoaW5nOgogICAgIC8qIG5vdGhpbmcgdG8gcmVwbGFjZTsgcmV0dXJuIG9yaWdpbmFsIHN0cmluZyAod2hlbiBwb3NzaWJsZSkgKi8KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOworICAgIGlmIChzcmVsZWFzZSkKKyAgICAgICAgUHlNZW1fRlJFRShzYnVmKTsKKyAgICBpZiAocmVsZWFzZTEpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMSk7CisgICAgaWYgKHJlbGVhc2UyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjIpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgZXJyb3I6CisgICAgaWYgKHNyZWxlYXNlICYmIHNidWYpCisgICAgICAgIFB5TWVtX0ZSRUUoc2J1Zik7CisgICAgaWYgKHJlbGVhc2UxICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMSk7CisgICAgaWYgKHJlbGVhc2UyICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIC8qIC0tLSBVbmljb2RlIE9iamVjdCBNZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNzEyNiw5ICsxMDMxNiwxMSBAQAogY2hhcmFjdGVycywgYWxsIHJlbWFpbmluZyBjYXNlZCBjaGFyYWN0ZXJzIGhhdmUgbG93ZXIgY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV90aXRsZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3RpdGxlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXh0aXRsZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX3RpdGxlKTsKIH0KIAogUHlEb2NfU1RSVkFSKGNhcGl0YWxpemVfX2RvY19fLApAQCAtNzEzOCw1NyArMTAzMzAsMzggQEAKIGhhdmUgdXBwZXIgY2FzZSBhbmQgdGhlIHJlc3QgbG93ZXIgY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9jYXBpdGFsaXplKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfY2FwaXRhbGl6ZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4Y2FwaXRhbGl6ZSk7Ci19Ci0KLSNpZiAwCi1QeURvY19TVFJWQVIoY2Fwd29yZHNfX2RvY19fLAotICAgICAgICAgICAgICJTLmNhcHdvcmRzKCkgLT4gc3RyXG5cCi1cblwKLUFwcGx5IC5jYXBpdGFsaXplKCkgdG8gYWxsIHdvcmRzIGluIFMgYW5kIHJldHVybiB0aGUgcmVzdWx0IHdpdGhcblwKLW5vcm1hbGl6ZWQgd2hpdGVzcGFjZSAoYWxsIHdoaXRlc3BhY2Ugc3RyaW5ncyBhcmUgcmVwbGFjZWQgYnkgJyAnKS4iKTsKLQotc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9jYXB3b3JkcyhQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKmxpc3Q7Ci0gICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBpOwotCi0gICAgLyogU3BsaXQgaW50byB3b3JkcyAqLwotICAgIGxpc3QgPSBzcGxpdChzZWxmLCBOVUxMLCAtMSk7Ci0gICAgaWYgKCFsaXN0KQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogQ2FwaXRhbGl6ZSBlYWNoIHdvcmQgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgUHlMaXN0X0dFVF9TSVpFKGxpc3QpOyBpKyspIHsKLSAgICAgICAgaXRlbSA9IGZpeHVwKChQeVVuaWNvZGVPYmplY3QgKilQeUxpc3RfR0VUX0lURU0obGlzdCwgaSksCi0gICAgICAgICAgICAgICAgICAgICBmaXhjYXBpdGFsaXplKTsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgUHlfREVDUkVGKFB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShsaXN0LCBpLCBpdGVtKTsKLSAgICB9Ci0KLSAgICAvKiBKb2luIHRoZSB3b3JkcyB0byBmb3JtIGEgbmV3IHN0cmluZyAqLwotICAgIGl0ZW0gPSBQeVVuaWNvZGVfSm9pbihOVUxMLCBsaXN0KTsKLQotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopaXRlbTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPT0gMCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fY2FwaXRhbGl6ZSk7CiB9Ci0jZW5kaWYKKworUHlEb2NfU1RSVkFSKGNhc2Vmb2xkX19kb2NfXywKKyAgICAgICAgICAgICAiUy5jYXNlZm9sZCgpIC0+IHN0clxuXAorXG5cCitSZXR1cm4gYSB2ZXJzaW9uIG9mIFMgc3VpdGFibGUgZm9yIGNhc2VsZXNzIGNvbXBhcmlzb25zLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9jYXNlZm9sZChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICByZXR1cm4gYXNjaWlfdXBwZXJfb3JfbG93ZXIoc2VsZiwgMSk7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX2Nhc2Vmb2xkKTsKK30KKwogCiAvKiBBcmd1bWVudCBjb252ZXJ0ZXIuICBDb2VyY2VzIHRvIGEgc2luZ2xlIHVuaWNvZGUgY2hhcmFjdGVyICovCiAKIHN0YXRpYyBpbnQKIGNvbnZlcnRfdWMoUHlPYmplY3QgKm9iaiwgdm9pZCAqYWRkcikKIHsKLSAgICBQeV9VTklDT0RFICpmaWxsY2hhcmxvYyA9IChQeV9VTklDT0RFICopYWRkcjsKKyAgICBQeV9VQ1M0ICpmaWxsY2hhcmxvYyA9IChQeV9VQ1M0ICopYWRkcjsKICAgICBQeU9iamVjdCAqdW5pb2JqOwotICAgIFB5X1VOSUNPREUgKnVuaXN0cjsKIAogICAgIHVuaW9iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7CiAgICAgaWYgKHVuaW9iaiA9PSBOVUxMKSB7CkBAIC03MTk2LDE0ICsxMDM2OSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIFVuaWNvZGUiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodW5pb2JqKSAhPSAxKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaW9iaikgIT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nIik7CiAgICAgICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgdW5pc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pb2JqKTsKLSAgICAqZmlsbGNoYXJsb2MgPSB1bmlzdHJbMF07CisgICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmlvYmosIDApOwogICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgIHJldHVybiAxOwogfQpAQCAtNzIxNSwxMTIgKzEwMzg3LDY0IEBACiBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfY2VudGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2NlbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCBtYXJnLCBsZWZ0OwogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgUHlfVU5JQ09ERSBmaWxsY2hhciA9ICcgJzsKKyAgICBQeV9VQ1M0IGZpbGxjaGFyID0gJyAnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufE8mOmNlbnRlciIsICZ3aWR0aCwgY29udmVydF91YywgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWFyZyA9IHdpZHRoIC0gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIG1hcmcgPSB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlZnQgPSBtYXJnIC8gMiArIChtYXJnICYgd2lkdGggJiAxKTsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKKyAgICByZXR1cm4gcGFkKHNlbGYsIGxlZnQsIG1hcmcgLSBsZWZ0LCBmaWxsY2hhcik7CiB9CiAKLSNpZiAwCi0KLS8qIFRoaXMgY29kZSBzaG91bGQgZ28gaW50byBzb21lIGZ1dHVyZSBVbmljb2RlIGNvbGxhdGlvbiBzdXBwb3J0Ci0gICBtb2R1bGUuIFRoZSBiYXNpYyBjb21wYXJpc29uIHNob3VsZCBjb21wYXJlIG9yZGluYWxzIG9uIGEgbmFpdmUKLSAgIGJhc2lzICh0aGlzIGlzIHdoYXQgSmF2YSBkb2VzIGFuZCB0aHVzIEp5dGhvbiB0b28pLiAqLwotCi0vKiBzcGVlZHkgVVRGLTE2IGNvZGUgcG9pbnQgb3JkZXIgY29tcGFyaXNvbiAqLwotLyogZ2xlYW5lZCBmcm9tOiAqLwotLyogaHR0cDovL3d3dy00LmlibS5jb20vc29mdHdhcmUvZGV2ZWxvcGVyL2xpYnJhcnkvdXRmMTYuaHRtbD9kd3pvbmU9dW5pY29kZSAqLwotCi1zdGF0aWMgc2hvcnQgdXRmMTZGaXh1cFszMl0gPQotewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDB4MjAwMCwgLTB4ODAwLCAtMHg4MDAsIC0weDgwMCwgLTB4ODAwCi19OworLyogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgc3RyMSBhbmQgc3RyMiBhcmUgcmVhZGllZCBieSB0aGUgY2FsbGVyLiAqLwogCiBzdGF0aWMgaW50Ci11bmljb2RlX2NvbXBhcmUoUHlVbmljb2RlT2JqZWN0ICpzdHIxLCBQeVVuaWNvZGVPYmplY3QgKnN0cjIpCit1bmljb2RlX2NvbXBhcmUoUHlPYmplY3QgKnN0cjEsIFB5T2JqZWN0ICpzdHIyKQogewotICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKKyAgICBpbnQga2luZDEsIGtpbmQyOworICAgIHZvaWQgKmRhdGExLCAqZGF0YTI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpOwogCi0gICAgUHlfVU5JQ09ERSAqczEgPSBzdHIxLT5zdHI7Ci0gICAgUHlfVU5JQ09ERSAqczIgPSBzdHIyLT5zdHI7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIxKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN0cjIpOworICAgIGRhdGExID0gUHlVbmljb2RlX0RBVEEoc3RyMSk7CisgICAgZGF0YTIgPSBQeVVuaWNvZGVfREFUQShzdHIyKTsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMSk7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpOwogCi0gICAgbGVuMSA9IHN0cjEtPmxlbmd0aDsKLSAgICBsZW4yID0gc3RyMi0+bGVuZ3RoOwotCi0gICAgd2hpbGUgKGxlbjEgPiAwICYmIGxlbjIgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYzEsIGMyOwotCi0gICAgICAgIGMxID0gKnMxKys7Ci0gICAgICAgIGMyID0gKnMyKys7Ci0KLSAgICAgICAgaWYgKGMxID4gKDE8PDExKSAqIDI2KQotICAgICAgICAgICAgYzEgKz0gdXRmMTZGaXh1cFtjMT4+MTFdOwotICAgICAgICBpZiAoYzIgPiAoMTw8MTEpICogMjYpCi0gICAgICAgICAgICBjMiArPSB1dGYxNkZpeHVwW2MyPj4xMV07Ci0gICAgICAgIC8qIG5vdyBjMSBhbmQgYzIgYXJlIGluIFVURi0zMi1jb21wYXRpYmxlIG9yZGVyICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjEgJiYgaSA8IGxlbjI7ICsraSkgeworICAgICAgICBQeV9VQ1M0IGMxLCBjMjsKKyAgICAgICAgYzEgPSBQeVVuaWNvZGVfUkVBRChraW5kMSwgZGF0YTEsIGkpOworICAgICAgICBjMiA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBkYXRhMiwgaSk7CiAKICAgICAgICAgaWYgKGMxICE9IGMyKQogICAgICAgICAgICAgcmV0dXJuIChjMSA8IGMyKSA/IC0xIDogMTsKLQotICAgICAgICBsZW4xLS07IGxlbjItLTsKICAgICB9CiAKICAgICByZXR1cm4gKGxlbjEgPCBsZW4yKSA/IC0xIDogKGxlbjEgIT0gbGVuMik7CiB9CiAKLSNlbHNlCi0KLXN0YXRpYyBpbnQKLXVuaWNvZGVfY29tcGFyZShQeVVuaWNvZGVPYmplY3QgKnN0cjEsIFB5VW5pY29kZU9iamVjdCAqc3RyMikKK2ludAorUHlVbmljb2RlX0NvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7Ci0KLSAgICBQeV9VTklDT0RFICpzMSA9IHN0cjEtPnN0cjsKLSAgICBQeV9VTklDT0RFICpzMiA9IHN0cjItPnN0cjsKLQotICAgIGxlbjEgPSBzdHIxLT5sZW5ndGg7Ci0gICAgbGVuMiA9IHN0cjItPmxlbmd0aDsKLQotICAgIHdoaWxlIChsZW4xID4gMCAmJiBsZW4yID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMxLCBjMjsKLQotICAgICAgICBjMSA9ICpzMSsrOwotICAgICAgICBjMiA9ICpzMisrOwotCi0gICAgICAgIGlmIChjMSAhPSBjMikKLSAgICAgICAgICAgIHJldHVybiAoYzEgPCBjMikgPyAtMSA6IDE7Ci0KLSAgICAgICAgbGVuMS0tOyBsZW4yLS07CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEgfHwKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhcmUobGVmdCwgcmlnaHQpOwogICAgIH0KLQotICAgIHJldHVybiAobGVuMSA8IGxlbjIpID8gLTEgOiAobGVuMSAhPSBsZW4yKTsKLX0KLQotI2VuZGlmCi0KLWludCBQeVVuaWNvZGVfQ29tcGFyZShQeU9iamVjdCAqbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQpCi17Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKQotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXJlKChQeVVuaWNvZGVPYmplY3QgKilsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilyaWdodCk7CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIkNhbid0IGNvbXBhcmUgJS4xMDBzIGFuZCAlLjEwMHMiLAogICAgICAgICAgICAgICAgICBsZWZ0LT5vYl90eXBlLT50cF9uYW1lLApAQCAtNzMzMSwxNyArMTA0NTUsMjMgQEAKIGludAogUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoUHlPYmplY3QqIHVuaSwgY29uc3QgY2hhciogc3RyKQogewotICAgIGludCBpOwotICAgIFB5X1VOSUNPREUgKmlkOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodW5pKSk7Ci0gICAgaWQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmkpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgY2hyOworCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmkpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaSk7CiAgICAgLyogQ29tcGFyZSBVbmljb2RlIHN0cmluZyBhbmQgc291cmNlIGNoYXJhY3RlciBzZXQgc3RyaW5nICovCi0gICAgZm9yIChpID0gMDsgaWRbaV0gJiYgc3RyW2ldOyBpKyspCi0gICAgICAgIGlmIChpZFtpXSAhPSBzdHJbaV0pCi0gICAgICAgICAgICByZXR1cm4gKChpbnQpaWRbaV0gPCAoaW50KXN0cltpXSkgPyAtMSA6IDE7CisgICAgZm9yIChpID0gMDsgKGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSAmJiBzdHJbaV07IGkrKykKKyAgICAgICAgaWYgKGNociAhPSBzdHJbaV0pCisgICAgICAgICAgICByZXR1cm4gKGNociA8ICh1bnNpZ25lZCBjaGFyKShzdHJbaV0pKSA/IC0xIDogMTsKICAgICAvKiBUaGlzIGNoZWNrIGtlZXBzIFB5dGhvbiBzdHJpbmdzIHRoYXQgZW5kIGluICdcMCcgZnJvbSBjb21wYXJpbmcgZXF1YWwKICAgICAgdG8gQyBzdHJpbmdzIGlkZW50aWNhbCB1cCB0byB0aGF0IHBvaW50LiAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodW5pKSAhPSBpIHx8IGlkW2ldKQorICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmkpICE9IGkgfHwgY2hyKQogICAgICAgICByZXR1cm4gMTsgLyogdW5pIGlzIGxvbmdlciAqLwogICAgIGlmIChzdHJbaV0pCiAgICAgICAgIHJldHVybiAtMTsgLyogc3RyIGlzIGxvbmdlciAqLwpAQCAtNzM1MiwxNiArMTA0ODIsMTggQEAKICNkZWZpbmUgVEVTVF9DT05EKGNvbmQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoKGNvbmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlKQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBpbnQgb3ApCiB7CiAgICAgaW50IHJlc3VsdDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkgewogICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgaWYgKCgoUHlVbmljb2RlT2JqZWN0ICopIGxlZnQpLT5sZW5ndGggIT0KLSAgICAgICAgICAgICgoUHlVbmljb2RlT2JqZWN0ICopIHJpZ2h0KS0+bGVuZ3RoKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEgfHwKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxlZnQpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJpZ2h0KSB8fAorICAgICAgICAgICAgUHlVbmljb2RlX0tJTkQobGVmdCkgIT0gUHlVbmljb2RlX0tJTkQocmlnaHQpKSB7CiAgICAgICAgICAgICBpZiAob3AgPT0gUHlfRVEpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfRmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBQeV9GYWxzZTsKQEAgLTczNzQsOCArMTA1MDYsNyBAQAogICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHVuaWNvZGVfY29tcGFyZSgoUHlVbmljb2RlT2JqZWN0ICopbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopcmlnaHQpOworICAgICAgICAgICAgcmVzdWx0ID0gdW5pY29kZV9jb21wYXJlKGxlZnQsIHJpZ2h0KTsKIAogICAgICAgICAvKiBDb252ZXJ0IHRoZSByZXR1cm4gdmFsdWUgdG8gYSBCb29sZWFuICovCiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTc0MDUsMTQgKzEwNTM2LDE2IEBACiAgICAgICAgIHJldHVybiB2OwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAotaW50IFB5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudCkKK2ludAorUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpjb250YWluZXIsIFB5T2JqZWN0ICplbGVtZW50KQogewogICAgIFB5T2JqZWN0ICpzdHIsICpzdWI7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgaW50IHJlc3VsdDsKIAogICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwpAQCAtNzQyOSw1MCArMTA1NjIsMTA2IEBACiAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgfQogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2NvbnRhaW5zX29iaihzdHIsIHN1Yik7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpIHsKKyAgICAgICAgaWYgKGtpbmQyID4ga2luZCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWIsIGtpbmQpOworICAgIH0KKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWIpOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gdWNzMWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MybGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgMCkgIT0gLTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCAwKSAhPSAtMTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICBQeV9ERUNSRUYoc3ViKTsKIAorICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogQ29uY2F0IHRvIHN0cmluZyBvciBVbmljb2RlIG9iamVjdCBnaXZpbmcgYSBuZXcgVW5pY29kZSBvYmplY3QuICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQ29uY2F0KFB5T2JqZWN0ICpsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0KQorUHlPYmplY3QgKgorUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEwsICp3OworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7CisgICAgUHlfc3NpemVfdCB1X2xlbiwgdl9sZW4sIG5ld19sZW47CiAKICAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICB1ID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOworICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKICAgICBpZiAodSA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgdiA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CisgICAgdiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICAvKiBTaG9ydGN1dHMgKi8KICAgICBpZiAodiA9PSB1bmljb2RlX2VtcHR5KSB7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXU7CisgICAgICAgIHJldHVybiB1OwogICAgIH0KICAgICBpZiAodSA9PSB1bmljb2RlX2VtcHR5KSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgICAgIHJldHVybiB2OwogICAgIH0KIAorICAgIHVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7CisgICAgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKKyAgICBpZiAodV9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHZfbGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICBuZXdfbGVuID0gdV9sZW4gKyB2X2xlbjsKKworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7CisgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXIyKTsKKwogICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLwotICAgIHcgPSBfUHlVbmljb2RlX05ldyh1LT5sZW5ndGggKyB2LT5sZW5ndGgpOworICAgIHcgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOwogICAgIGlmICh3ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBQeV9VTklDT0RFX0NPUFkody0+c3RyLCB1LT5zdHIsIHUtPmxlbmd0aCk7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKHctPnN0ciArIHUtPmxlbmd0aCwgdi0+c3RyLCB2LT5sZW5ndGgpOwotCisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgMCwgdSwgMCwgdV9sZW4pOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIHVfbGVuLCB2LCAwLCB2X2xlbik7CiAgICAgUHlfREVDUkVGKHUpOwogICAgIFB5X0RFQ1JFRih2KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdzsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHcsIDEpKTsKKyAgICByZXR1cm4gdzsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYodSk7CkBAIC03NDgxLDE5ICsxMDY3MCw4OSBAQAogfQogCiB2b2lkCi1QeVVuaWNvZGVfQXBwZW5kKFB5T2JqZWN0ICoqcGxlZnQsIFB5T2JqZWN0ICpyaWdodCkKK1B5VW5pY29kZV9BcHBlbmQoUHlPYmplY3QgKipwX2xlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeU9iamVjdCAqbmV3OwotICAgIGlmICgqcGxlZnQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChyaWdodCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soKnBsZWZ0KSkgewotICAgICAgICBQeV9ERUNSRUYoKnBsZWZ0KTsKLSAgICAgICAgKnBsZWZ0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGVmdCwgKnJlczsKKyAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOworICAgIFB5X3NzaXplX3QgbGVmdF9sZW4sIHJpZ2h0X2xlbiwgbmV3X2xlbjsKKworICAgIGlmIChwX2xlZnQgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBuZXcgPSBQeVVuaWNvZGVfQ29uY2F0KCpwbGVmdCwgcmlnaHQpOwotICAgIFB5X0RFQ1JFRigqcGxlZnQpOwotICAgICpwbGVmdCA9IG5ldzsKKyAgICBsZWZ0ID0gKnBfbGVmdDsKKyAgICBpZiAocmlnaHQgPT0gTlVMTCB8fCBsZWZ0ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhsZWZ0KSkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogU2hvcnRjdXRzICovCisgICAgaWYgKGxlZnQgPT0gdW5pY29kZV9lbXB0eSkgeworICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgIFB5X0lOQ1JFRihyaWdodCk7CisgICAgICAgICpwX2xlZnQgPSByaWdodDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmlnaHQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGVmdF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KTsKKyAgICByaWdodF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCk7CisgICAgaWYgKGxlZnRfbGVuID4gUFlfU1NJWkVfVF9NQVggLSByaWdodF9sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBuZXdfbGVuID0gbGVmdF9sZW4gKyByaWdodF9sZW47CisKKyAgICBpZiAodW5pY29kZV9tb2RpZmlhYmxlKGxlZnQpCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHJpZ2h0KQorICAgICAgICAmJiBQeVVuaWNvZGVfS0lORChyaWdodCkgPD0gUHlVbmljb2RlX0tJTkQobGVmdCkKKyAgICAgICAgLyogRG9uJ3QgcmVzaXplIGZvciBhc2NpaSArPSBsYXRpbjEuIENvbnZlcnQgYXNjaWkgdG8gbGF0aW4xIHJlcXVpcmVzCisgICAgICAgICAgIHRvIGNoYW5nZSB0aGUgc3RydWN0dXJlIHNpemUsIGJ1dCBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQganVzdCBhZnRlcgorICAgICAgICAgICB0aGUgc3RydWN0dXJlLCBhbmQgc28gaXQgcmVxdWlyZXMgdG8gbW92ZSBhbGwgY2hhcmFjdGVycyB3aGljaCBpcworICAgICAgICAgICBub3Qgc28gZGlmZmVyZW50IHRoYW4gZHVwbGljYXRpbmcgdGhlIHN0cmluZy4gKi8KKyAgICAgICAgJiYgIShQeVVuaWNvZGVfSVNfQVNDSUkobGVmdCkgJiYgIVB5VW5pY29kZV9JU19BU0NJSShyaWdodCkpKQorICAgIHsKKyAgICAgICAgLyogYXBwZW5kIGlucGxhY2UgKi8KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHBfbGVmdCwgbmV3X2xlbikgIT0gMCkgeworICAgICAgICAgICAgLyogWFhYIGlmIF9QeVVuaWNvZGVfUmVzaXplKCkgZmFpbHMsICdsZWZ0JyBoYXMgYmVlbgorICAgICAgICAgICAgICogZGVhbGxvY2F0ZWQgc28gaXQgY2Fubm90IGJlIHB1dCBiYWNrIGludG8KKyAgICAgICAgICAgICAqICd2YXJpYWJsZScuICBUaGUgTWVtb3J5RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlcmUKKyAgICAgICAgICAgICAqIGlzIG5vIHZhbHVlIGluICd2YXJpYWJsZScsIHdoaWNoIG1pZ2h0ICh2ZXJ5CisgICAgICAgICAgICAgKiByZW1vdGVseSkgYmUgYSBjYXVzZSBvZiBpbmNvbXBhdGliaWxpdGllcy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBjb3B5ICdyaWdodCcgaW50byB0aGUgbmV3bHkgYWxsb2NhdGVkIGFyZWEgb2YgJ2xlZnQnICovCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKCpwX2xlZnQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobGVmdCk7CisgICAgICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJpZ2h0KTsKKyAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXIyKTsKKworICAgICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCAwLCBsZWZ0LCAwLCBsZWZ0X2xlbik7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICpwX2xlZnQgPSByZXM7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKnBfbGVmdCwgMSkpOworICAgIHJldHVybjsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKnBfbGVmdCk7CiB9CiAKIHZvaWQKQEAgLTc1MTEsMjMgKzEwNzcwLDY0IEBACiBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfY291bnQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfY291bnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpcmVzdWx0OwogCiAgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc2VsZi0+bGVuZ3RoKTsKLSAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzZWxmLT5zdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDIgPiBraW5kMSkKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpcmVzdWx0ID0gdWNzMWxpYl9jb3VudCgKKyAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgaXJlc3VsdCA9IHVjczJsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzIqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGlyZXN1bHQgPSB1Y3M0bGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1M0KilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IGlyZXN1bHQgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpcmVzdWx0KTsKKworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKQEAgLTc1NDUsNyArMTA4NDUsNyBAQAogY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lbmNvZGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3VuaWNvZGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIDB9OwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKQEAgLTc1NTQsNyArMTA4NTQsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczplbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIFB5RG9jX1NUUlZBUihleHBhbmR0YWJzX19kb2NfXywKQEAgLTc1NjQsODIgKzEwODY0LDgyIEBACiBJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9leHBhbmR0YWJzKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2V4cGFuZHRhYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKmU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9VTklDT0RFICpxOwotICAgIFB5X1VOSUNPREUgKnFlOwotICAgIFB5X3NzaXplX3QgaSwgaiwgaW5jcjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgUHlfc3NpemVfdCBpLCBqLCBsaW5lX3Bvcywgc3JjX2xlbiwgaW5jcjsKKyAgICBQeV9VQ1M0IGNoOworICAgIFB5T2JqZWN0ICp1OworICAgIHZvaWQgKnNyY19kYXRhLCAqZGVzdF9kYXRhOwogICAgIGludCB0YWJzaXplID0gODsKKyAgICBpbnQga2luZDsKKyAgICBpbnQgZm91bmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmV4cGFuZHRhYnMiLCAmdGFic2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBGaXJzdCBwYXNzOiBkZXRlcm1pbmUgc2l6ZSBvZiBvdXRwdXQgc3RyaW5nICovCi0gICAgaSA9IDA7IC8qIGNoYXJzIHVwIHRvIGFuZCBpbmNsdWRpbmcgbW9zdCByZWNlbnQgXG4gb3IgXHIgKi8KLSAgICBqID0gMDsgLyogY2hhcnMgc2luY2UgbW9zdCByZWNlbnQgXG4gb3IgXHIgKHVzZSBpbiB0YWIgY2FsY3VsYXRpb25zKSAqLwotICAgIGUgPSBzZWxmLT5zdHIgKyBzZWxmLT5sZW5ndGg7IC8qIGVuZCBvZiBpbnB1dCAqLwotICAgIGZvciAocCA9IHNlbGYtPnN0cjsgcCA8IGU7IHArKykKLSAgICAgICAgaWYgKCpwID09ICdcdCcpIHsKKyAgICBzcmNfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgaSA9IGogPSBsaW5lX3BvcyA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIHNyY19kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgZm91bmQgPSAwOworICAgIGZvciAoOyBpIDwgc3JjX2xlbjsgaSsrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgc3JjX2RhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaW5jciA9IHRhYnNpemUgLSAoaiAlIHRhYnNpemUpOyAvKiBjYW5ub3Qgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBpbmNyID0gdGFic2l6ZSAtIChsaW5lX3BvcyAlIHRhYnNpemUpOyAvKiBjYW5ub3Qgb3ZlcmZsb3cgKi8KICAgICAgICAgICAgICAgICBpZiAoaiA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgICAgICAgICAgbGluZV9wb3MgKz0gaW5jcjsKICAgICAgICAgICAgICAgICBqICs9IGluY3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoaiA+IFBZX1NTSVpFX1RfTUFYIC0gMSkKLSAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICAgICAgbGluZV9wb3MrKzsKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nIHx8ICpwID09ICdccicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA+IFBZX1NTSVpFX1RfTUFYIC0gaikKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7Ci0gICAgICAgICAgICAgICAgaSArPSBqOwotICAgICAgICAgICAgICAgIGogPSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyA9IDA7CiAgICAgICAgIH0KLQotICAgIGlmIChpID4gUFlfU1NJWkVfVF9NQVggLSBqKQotICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKIAogICAgIC8qIFNlY29uZCBwYXNzOiBjcmVhdGUgb3V0cHV0IHN0cmluZyBhbmQgZmlsbCBpdCAqLwotICAgIHUgPSBfUHlVbmljb2RlX05ldyhpICsgaik7CisgICAgdSA9IFB5VW5pY29kZV9OZXcoaiwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGRlc3RfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOwogCi0gICAgaiA9IDA7IC8qIHNhbWUgYXMgaW4gZmlyc3QgcGFzcyAqLwotICAgIHEgPSB1LT5zdHI7IC8qIG5leHQgb3V0cHV0IGNoYXIgKi8KLSAgICBxZSA9IHUtPnN0ciArIHUtPmxlbmd0aDsgLyogZW5kIG9mIG91dHB1dCAqLworICAgIGkgPSBqID0gbGluZV9wb3MgPSAwOwogCi0gICAgZm9yIChwID0gc2VsZi0+c3RyOyBwIDwgZTsgcCsrKQotICAgICAgICBpZiAoKnAgPT0gJ1x0JykgeworICAgIGZvciAoOyBpIDwgc3JjX2xlbjsgaSsrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgc3JjX2RhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gJ1x0JykgewogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaSA9IHRhYnNpemUgLSAoaiAlIHRhYnNpemUpOwotICAgICAgICAgICAgICAgIGogKz0gaTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChxID49IHFlKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzI7Ci0gICAgICAgICAgICAgICAgICAgICpxKysgPSAnICc7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluY3IgPSB0YWJzaXplIC0gKGxpbmVfcG9zICUgdGFic2l6ZSk7CisgICAgICAgICAgICAgICAgbGluZV9wb3MgKz0gaW5jcjsKKyAgICAgICAgICAgICAgICBGSUxMKGtpbmQsIGRlc3RfZGF0YSwgJyAnLCBqLCBpbmNyKTsKKyAgICAgICAgICAgICAgICBqICs9IGluY3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAocSA+PSBxZSkKLSAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MjsKLSAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAgICAgICAgIGxpbmVfcG9zKys7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGVzdF9kYXRhLCBqLCBjaCk7CiAgICAgICAgICAgICBqKys7Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInKQotICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgaWYgKGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJykKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyA9IDA7CiAgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0IChqID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodSk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKLQotICBvdmVyZmxvdzI6Ci0gICAgUHlfREVDUkVGKHUpOwotICBvdmVyZmxvdzE6CisgIG92ZXJmbG93OgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibmV3IHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNzY1NCw5ICsxMDk1NCw5IEBACiBSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZmluZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9maW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC03NjY1LDYzICsxMDk2NSwxMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2dldGl0ZW0oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQordW5pY29kZV9nZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQogewotICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+bGVuZ3RoKSB7CisgICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgUHlfVUNTNCBjaDsKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc2VsZikgfHwgUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KTsKKyAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoY2gpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmc2VsZi0+c3RyW2luZGV4XSwgMSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgMCwgY2gpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogLyogQmVsaWV2ZSBpdCBvciBub3QsIHRoaXMgcHJvZHVjZXMgdGhlIHNhbWUgdmFsdWUgZm9yIEFTQ0lJIHN0cmluZ3MKLSAgIGFzIHN0cmluZ19oYXNoKCkuICovCisgICBhcyBieXRlc19oYXNoKCkuICovCiBzdGF0aWMgUHlfaGFzaF90Ci11bmljb2RlX2hhc2goUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9oYXNoKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgUHlfdWhhc2hfdCB4OyAgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IuICovCiAKICNpZmRlZiBQeV9ERUJVRwogICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7CiAjZW5kaWYKLSAgICBpZiAoc2VsZi0+aGFzaCAhPSAtMSkKLSAgICAgICAgcmV0dXJuIHNlbGYtPmhhc2g7Ci0gICAgbGVuID0gUHlfU0laRShzZWxmKTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNIKHNlbGYpICE9IC0xKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9IQVNIKHNlbGYpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICAvKgogICAgICAgV2UgbWFrZSB0aGUgaGFzaCBvZiB0aGUgZW1wdHkgc3RyaW5nIGJlIDAsIHJhdGhlciB0aGFuIHVzaW5nCiAgICAgICAocHJlZml4IF4gc3VmZml4KSwgc2luY2UgdGhpcyBzbGlnaHRseSBvYmZ1c2NhdGVzIHRoZSBoYXNoIHNlY3JldAogICAgICovCiAgICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgIHNlbGYtPmhhc2ggPSAwOworICAgICAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSAwOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcCA9IHNlbGYtPnN0cjsKLSAgICB4ID0gX1B5X0hhc2hTZWNyZXQucHJlZml4OwotICAgIHggXj0gKnAgPDwgNzsKLSAgICB3aGlsZSAoLS1sZW4gPj0gMCkKLSAgICAgICAgeCA9IChfUHlIQVNIX01VTFRJUExJRVIqeCkgXiAqcCsrOwotICAgIHggXj0gUHlfU0laRShzZWxmKTsKLSAgICB4IF49IF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKKworICAgIC8qIFRoZSBoYXNoIGZ1bmN0aW9uIGFzIGEgbWFjcm8sIGdldHMgZXhwYW5kZWQgdGhyZWUgdGltZXMgYmVsb3cuICovCisjZGVmaW5lIEhBU0goUCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB4IF49IChQeV91aGFzaF90KSAqUCA8PCA3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdoaWxlICgtLWxlbiA+PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSICogeCkgXiAoUHlfdWhhc2hfdCkgKlArKzsgIFwKKworICAgIHggPSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQucHJlZml4OworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc2VsZikpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmMgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgSEFTSChjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsKKyAgICAgICAgY29uc3QgUHlfVUNTMiAqcyA9IFB5VW5pY29kZV8yQllURV9EQVRBKHNlbGYpOworICAgICAgICBIQVNIKHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBQeV9VQ1M0ICpsOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoc2VsZikgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQgJiYKKyAgICAgICAgICAgICAgICJJbXBvc3NpYmxlIHN3aXRjaCBjYXNlIGluIHVuaWNvZGVfaGFzaCIpOworICAgICAgICBsID0gUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIEhBU0gobCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisgICAgeCBePSAoUHlfdWhhc2hfdCkgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQuc3VmZml4OworCiAgICAgaWYgKHggPT0gLTEpCiAgICAgICAgIHggPSAtMjsKLSAgICBzZWxmLT5oYXNoID0geDsKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSB4OwogICAgIHJldHVybiB4OwogfQorI3VuZGVmIEhBU0gKIAogUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKICAgICAgICAgICAgICAiUy5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKQEAgLTc3MjksMTAgKzExMDgwLDEwIEBACiBMaWtlIFMuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2luZGV4KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2luZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAKQEAgLTc3NDAsMTQgKzExMDkxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YnN0cmluZyksIFB5VW5pY29kZV9HRVRfU0laRShzdWJzdHJpbmcpLAotICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHJlc3VsdCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdWJzdHJpbmcgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzc2MywyNCArMTExMTgsMzEgQEAKIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzbG93ZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2xvd2VyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGNhc2VkOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKwogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU0xPV0VSKCpwKSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU0xPV0VSKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CiAgICAgY2FzZWQgPSAwOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8IFB5X1VOSUNPREVfSVNUSVRMRShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwpAQCAtNzc5NywyNCArMTExNTksMzEgQEAKIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzdXBwZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc3VwcGVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGNhc2VkOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKwogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU1VQUEVSKCpwKSAhPSAwKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTVVBQRVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpICE9IDApOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIGNhc2VkID0gMDsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGNoKSB8fCBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKQEAgLTc4MzMsMjYgKzExMjAyLDM0IEBACiBSZXR1cm4gRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzdGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc3RpdGxlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGNhc2VkLCBwcmV2aW91c19pc19jYXNlZDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChQeV9VTklDT0RFX0lTVElUTEUoKnApICE9IDApIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X1VOSUNPREVfSVNVUFBFUigqcCkgIT0gMCkpOworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKFB5X1VOSUNPREVfSVNUSVRMRShjaCkgIT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSAhPSAwKSk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIGNhc2VkID0gMDsKICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjaCkgfHwgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkgewogICAgICAgICAgICAgaWYgKHByZXZpb3VzX2lzX2Nhc2VkKQpAQCAtNzg3OSwyMyArMTEyNTYsMjkgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc3NwYWNlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNzcGFjZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CkBAIC03OTA5LDIzICsxMTI5MiwyOSBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzYWxwaGEoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2FscGhhKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTQUxQSEEoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNBTFBIQShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNBTFBIQShfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTQUxQSEEoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTc5MzgsMjMgKzExMzI3LDMxIEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNhbG51bShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzYWxudW0oUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0FMTlVNKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuID09IDEpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNBTE5VTShjaCkpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTQUxOVU0oY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CkBAIC03OTY4LDIzICsxMTM2NSwyOSBAQAogRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzZGVjaW1hbChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzZGVjaW1hbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RFQ0lNQUwoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RFQ0lNQUwoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTc5OTcsMjMgKzExNDAwLDMwIEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNkaWdpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzZGlnaXQoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNESUdJVCgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTRElHSVQoY2gpKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RJR0lUKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNESUdJVChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtODAyNiwyMyArMTE0MzYsMjkgQEAKIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc251bWVyaWMoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc251bWVyaWMoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQyhQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNOVU1FUklDKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNOVU1FUklDKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC04MDUxLDEzICsxMTQ2NywyMSBAQAogaW50CiBQeVVuaWNvZGVfSXNJZGVudGlmaWVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgoUHlVbmljb2RlT2JqZWN0KilzZWxmKTsKLSAgICBjb25zdCBQeV9VTklDT0RFICplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X1VDUzQgZmlyc3Q7CiAKLSAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJpZGVudGlmaWVyIG5vdCByZWFkeSIpOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFBFUCAzMTMxIHNheXMgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgaW4KICAgICAgICBYSURfU3RhcnQgYW5kIHN1YnNlcXVlbnQgY2hhcmFjdGVycyBpbiBYSURfQ29udGludWUsCkBAIC04MDY3LDEzICsxMTQ5MSwxMiBAQAogICAgICAgIGRlZmluaXRpb24gb2YgWElEX1N0YXJ0IGFuZCBYSURfQ29udGludWUsIGl0IGlzIHN1ZmZpY2llbnQKICAgICAgICB0byBjaGVjayBqdXN0IGZvciB0aGVzZSwgZXhjZXB0IHRoYXQgXyBtdXN0IGJlIGFsbG93ZWQKICAgICAgICBhcyBzdGFydGluZyBhbiBpZGVudGlmaWVyLiAgKi8KLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICBmaXJzdCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZmlyc3QgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKICAgICBpZiAoIV9QeVVuaWNvZGVfSXNYaWRTdGFydChmaXJzdCkgJiYgZmlyc3QgIT0gMHg1RiAvKiBMT1cgTElORSAqLykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB3aGlsZSAocCA8IGUpCi0gICAgICAgIGlmICghX1B5VW5pY29kZV9Jc1hpZENvbnRpbnVlKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDE7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsgaSsrKQorICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNYaWRDb250aW51ZShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gMTsKIH0KQEAgLTgwOTksMTcgKzExNTIyLDIzIEBACiBzdGF0aWMgUHlPYmplY3QqCiB1bmljb2RlX2lzcHJpbnRhYmxlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJiBQeV9VTklDT0RFX0lTUFJJTlRBQkxFKCpwKSkgewotICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICB9CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkgeworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CiAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgICAgIH0KICAgICB9CkBAIC04MTI5LDkgKzExNTU4LDExIEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci11bmljb2RlX2xlbmd0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2xlbmd0aChQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiB9CiAKIFB5RG9jX1NUUlZBUihsanVzdF9fZG9jX18sCkBAIC04MTQxLDIwICsxMTU3MiwyMSBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9sanVzdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9sanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6bGp1c3QiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgMCwgd2lkdGggLSBzZWxmLT5sZW5ndGgsIGZpbGxjaGFyKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICByZXR1cm4gcGFkKHNlbGYsIDAsIHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIGZpbGxjaGFyKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxvd2VyX19kb2NfXywKQEAgLTgxNjMsOSArMTE1OTUsMTMgQEAKIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBTIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfbG93ZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9sb3dlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4bG93ZXIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgIHJldHVybiBhc2NpaV91cHBlcl9vcl9sb3dlcihzZWxmLCAxKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fbG93ZXIpOwogfQogCiAjZGVmaW5lIExFRlRTVFJJUCAwCkBAIC04MTc5LDE5ICsxMTYxNSwyNyBAQAogCiAvKiBleHRlcm5hbGx5IHZpc2libGUgZm9yIHN0ci5zdHJpcCh1bmljb2RlKSAqLwogUHlPYmplY3QgKgotX1B5VW5pY29kZV9YU3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqc2Vwb2JqKQorX1B5VW5pY29kZV9YU3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICpzZXBvYmopCiB7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIFB5X1VOSUNPREUgKnNlcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlcG9iaik7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2Vwb2JqKTsKLSAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgdm9pZCAqZGF0YTsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGksIGosIGxlbjsKKyAgICBCTE9PTV9NQVNLIHNlcG1hc2s7CiAKLSAgICBCTE9PTV9NQVNLIHNlcG1hc2sgPSBtYWtlX2Jsb29tX21hc2soc2VwLCBzZXBsZW4pOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHNlcG9iaikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBzZXBtYXNrID0gbWFrZV9ibG9vbV9tYXNrKFB5VW5pY29kZV9LSU5EKHNlcG9iaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShzZXBvYmopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2Vwb2JqKSk7CiAKICAgICBpID0gMDsKICAgICBpZiAoc3RyaXB0eXBlICE9IFJJR0hUU1RSSVApIHsKLSAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgQkxPT01fTUVNQkVSKHNlcG1hc2ssIHNbaV0sIHNlcCwgc2VwbGVuKSkgeworICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJgorICAgICAgICAgICAgICAgQkxPT01fTUVNQkVSKHNlcG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBzZXBvYmopKSB7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KICAgICB9CkBAIC04MjAwLDI4ICsxMTY0NCw3MCBAQAogICAgIGlmIChzdHJpcHR5cGUgIT0gTEVGVFNUUklQKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGotLTsKLSAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIEJMT09NX01FTUJFUihzZXBtYXNrLCBzW2pdLCBzZXAsIHNlcGxlbikpOworICAgICAgICB9IHdoaWxlIChqID49IGkgJiYKKyAgICAgICAgICAgICAgICAgQkxPT01fTUVNQkVSKHNlcG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopLCBzZXBvYmopKTsKICAgICAgICAgaisrOwogICAgIH0KIAotICAgIGlmIChpID09IDAgJiYgaiA9PSBsZW4gJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocytpLCBqLWkpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNlbGYsIGksIGopOwogfQogCitQeU9iamVjdCoKK1B5VW5pY29kZV9TdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGVuZCA9IFB5X01JTihlbmQsIGxlbmd0aCk7CisKKyAgICBpZiAoc3RhcnQgPT0gMCAmJiBlbmQgPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHN0YXJ0ID49IGxlbmd0aCB8fCBlbmQgPCBzdGFydCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0OworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpIHsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tQVNDSUkoKGNoYXIqKShkYXRhICsgc3RhcnQpLCBsZW5ndGgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgICAgfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZG9fc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlKQorZG9fc3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUpCiB7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLCBpLCBqOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAKICAgICBpID0gMDsKICAgICBpZiAoc3RyaXB0eXBlICE9IFJJR0hUU1RSSVApIHsKLSAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgUHlfVU5JQ09ERV9JU1NQQUNFKHNbaV0pKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuICYmIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTgyMzAsMjEgKzExNzE2LDE2IEBACiAgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgai0tOwotICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKHNbal0pKTsKKyAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKSkpOwogICAgICAgICBqKys7CiAgICAgfQogCi0gICAgaWYgKGkgPT0gMCAmJiBqID09IGxlbiAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzK2ksIGotaSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwgaSwgaik7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX2FyZ3N0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCitkb19hcmdzdHJpcChQeU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CiAKQEAgLTgyNzQsNyArMTE3NTUsNyBAQAogSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9zdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9zdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIEJPVEhTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04MjkwLDcgKzExNzcxLDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbHN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2xzdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIExFRlRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04MzA2LDcgKzExNzg3LDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcnN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JzdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIFJJR0hUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODMxNiw2NCArMTE3OTcsNzYgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JlcGVhdChQeVVuaWNvZGVPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBsZW4pCit1bmljb2RlX3JlcGVhdChQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90IGxlbikKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyczsKLSAgICBzaXplX3QgbmJ5dGVzOworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X3NzaXplX3QgbmNoYXJzLCBuOwogCiAgICAgaWYgKGxlbiA8IDEpIHsKICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgfQogCi0gICAgaWYgKGxlbiA9PSAxICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpIHsKLSAgICAgICAgLyogbm8gcmVwZWF0LCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIFB5X0lOQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc3RyOwotICAgIH0KKyAgICAvKiBubyByZXBlYXQsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcgKi8KKyAgICBpZiAobGVuID09IDEpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc3RyKTsKIAotICAgIC8qIGVuc3VyZSAjIG9mIGNoYXJzIG5lZWRlZCBkb2Vzbid0IG92ZXJmbG93IGludCBhbmQgIyBvZiBieXRlcwotICAgICAqIG5lZWRlZCBkb2Vzbid0IG92ZXJmbG93IHNpemVfdAotICAgICAqLwotICAgIG5jaGFycyA9IGxlbiAqIHN0ci0+bGVuZ3RoOwotICAgIGlmIChuY2hhcnMgLyBsZW4gIT0gc3RyLT5sZW5ndGgpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPiBQWV9TU0laRV9UX01BWCAvIGxlbikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBlYXRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ieXRlcyA9IChuY2hhcnMgKyAxKSAqIHNpemVvZihQeV9VTklDT0RFKTsKLSAgICBpZiAobmJ5dGVzIC8gc2l6ZW9mKFB5X1VOSUNPREUpICE9IChzaXplX3QpKG5jaGFycyArIDEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGVhdGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KG5jaGFycyk7CisgICAgbmNoYXJzID0gbGVuICogUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIHUgPSBQeVVuaWNvZGVfTmV3KG5jaGFycywgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cikpOwogICAgIGlmICghdSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHUpID09IFB5VW5pY29kZV9LSU5EKHN0cikpOwogCi0gICAgcCA9IHUtPnN0cjsKLQotICAgIGlmIChzdHItPmxlbmd0aCA9PSAxKSB7Ci0gICAgICAgIFB5X1VOSUNPREVfRklMTChwLCBzdHItPnN0clswXSwgbGVuKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBzdHItPmxlbmd0aDsgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29waWVkIHRoaXMgZmFyICovCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHItPnN0ciwgc3RyLT5sZW5ndGgpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IDEpIHsKKyAgICAgICAgY29uc3QgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgICAgICBjb25zdCBQeV9VQ1M0IGZpbGxfY2hhciA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIFB5VW5pY29kZV9EQVRBKHN0ciksIDApOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgdm9pZCAqdG8gPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICAgICAgICAgIG1lbXNldCh0bywgKHVuc2lnbmVkIGNoYXIpZmlsbF9jaGFyLCBsZW4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIFB5X1VDUzIgKnVjczIgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1KTsKKyAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBsZW47ICsrbikKKyAgICAgICAgICAgICAgICB1Y3MyW25dID0gZmlsbF9jaGFyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfVUNTNCAqdWNzNCA9IFB5VW5pY29kZV80QllURV9EQVRBKHUpOworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgKytuKQorICAgICAgICAgICAgICAgIHVjczRbbl0gPSBmaWxsX2NoYXI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvcGllZCB0aGlzIGZhciAqLworICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgICAgIGNoYXIgKnRvID0gKGNoYXIgKikgUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgIFB5X01FTUNQWSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKKyAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBjaGFyX3NpemUpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5jaGFycykgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHArZG9uZSwgcCwgbik7CisgICAgICAgICAgICBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOworICAgICAgICAgICAgUHlfTUVNQ1BZKHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CiAgICAgICAgICAgICBkb25lICs9IG47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CiAgICAgUHlPYmplY3QgKnNlbGY7CiAgICAgUHlPYmplY3QgKnN0cjE7CkBAIC04Mzk0LDEwICsxMTg4NywxMiBAQAogICAgICAgICBQeV9ERUNSRUYoc3RyMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSByZXBsYWNlKChQeVVuaWNvZGVPYmplY3QgKilzZWxmLAotICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN0cjEsCi0gICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopc3RyMiwKLSAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgIFB5X0RFQ1JFRihzdHIyKTsKQEAgLTg0MTIsMTc3ICsxMTkwNywxODEgQEAKIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcmVwbGFjZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN0cjE7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdHIyOworICAgIFB5T2JqZWN0ICpzdHIxOworICAgIFB5T2JqZWN0ICpzdHIyOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoKFB5T2JqZWN0ICopc3RyMSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjEpOwogICAgIGlmIChzdHIxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjIgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoKFB5T2JqZWN0ICopc3RyMik7CisgICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjIpOwogICAgIGlmIChzdHIyID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKKyAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwogCiAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgIFB5X0RFQ1JFRihzdHIyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICp1bmljb2RlX3JlcHIoUHlPYmplY3QgKnVuaWNvZGUpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9yZXByKFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIFB5T2JqZWN0ICpyZXByOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKKyAgICBQeV9zc2l6ZV90IGlzaXplOworICAgIFB5X3NzaXplX3Qgb3NpemUsIHNxdW90ZSwgZHF1b3RlLCBpLCBvOworICAgIFB5X1VDUzQgbWF4LCBxdW90ZTsKKyAgICBpbnQgaWtpbmQsIG9raW5kOworICAgIHZvaWQgKmlkYXRhLCAqb2RhdGE7CiAKLSAgICAvKiBYWFgobm5vcndpdHopOiByYXRoZXIgdGhhbiBvdmVyLWFsbG9jYXRpbmcsIGl0IHdvdWxkIGJlCi0gICAgICAgYmV0dGVyIHRvIGNob29zZSBhIGRpZmZlcmVudCBzY2hlbWUuICBQZXJoYXBzIHNjYW4gdGhlCi0gICAgICAgZmlyc3QgTi1jaGFycyBvZiB0aGUgc3RyaW5nIGFuZCBhbGxvY2F0ZSBiYXNlZCBvbiB0aGF0IHNpemUuCi0gICAgKi8KLSAgICAvKiBJbml0aWFsIGFsbG9jYXRpb24gaXMgYmFzZWQgb24gdGhlIGxvbmdlc3QtcG9zc2libGUgdW5pY2hyCi0gICAgICAgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSAoVVRGLTMyKSBidWlsZHMgJ1xVMDB4eHh4eHgnIGlzIDEwIGNoYXJzIHBlciBzb3VyY2UKLSAgICAgICB1bmljaHIsIHNvIGluIHRoaXMgY2FzZSBpdCdzIHRoZSBsb25nZXN0IHVuaWNociBlc2NhcGUuIEluCi0gICAgICAgbmFycm93IChVVEYtMTYpIGJ1aWxkcyB0aGlzIGlzIGZpdmUgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIKLSAgICAgICBzaW5jZSB0aGVyZSBhcmUgdHdvIHVuaWNocnMgaW4gdGhlIHN1cnJvZ2F0ZSBwYWlyLCBzbyBpbiBuYXJyb3cKLSAgICAgICAoVVRGLTE2KSBidWlsZHMgaXQncyBub3QgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4KLQotICAgICAgIEluIHdpZGUgb3IgbmFycm93IGJ1aWxkcyAnXHV4eHh4JyBpcyA2IGNoYXJzIHBlciBzb3VyY2UgdW5pY2hyLAotICAgICAgIHNvIGluIHRoZSBuYXJyb3cgKFVURi0xNikgYnVpbGQgY2FzZSBpdCdzIHRoZSBsb25nZXN0IHVuaWNocgotICAgICAgIGVzY2FwZS4KLSAgICAqLwotCi0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvKiBxdW90ZXMgKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMTAqc2l6ZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgNipzaXplCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKTsKKyAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAKLSAgICAvKiBBZGQgcXVvdGUgKi8KLSAgICAqcCsrID0gKGZpbmRjaGFyKHMsIHNpemUsICdcJycpICYmCi0gICAgICAgICAgICAhZmluZGNoYXIocywgc2l6ZSwgJyInKSkgPyAnIicgOiAnXCcnOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOworICAgIC8qIENvbXB1dGUgbGVuZ3RoIG9mIG91dHB1dCwgcXVvdGUgY2hhcmFjdGVycywgYW5kCisgICAgICAgbWF4aW11bSBjaGFyYWN0ZXIgKi8KKyAgICBvc2l6ZSA9IDI7IC8qIHF1b3RlcyAqLworICAgIG1heCA9IDEyNzsKKyAgICBzcXVvdGUgPSBkcXVvdGUgPSAwOworICAgIGlraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGlraW5kLCBpZGF0YSwgaSk7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXCcnOiBzcXVvdGUrKzsgb3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJyInOiAgZHF1b3RlKys7IG9zaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1x0JzogY2FzZSAnXHInOiBjYXNlICdcbic6CisgICAgICAgICAgICBvc2l6ZSArPSAyOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIEZhc3QtcGF0aCBBU0NJSSAqLworICAgICAgICAgICAgaWYgKGNoIDwgJyAnIHx8IGNoID09IDB4N2YpCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDdmKQorICAgICAgICAgICAgICAgIG9zaXplKys7CisgICAgICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTUFJJTlRBQkxFKGNoKSkgeworICAgICAgICAgICAgICAgIG9zaXplKys7CisgICAgICAgICAgICAgICAgbWF4ID0gY2ggPiBtYXggPyBjaCA6IG1heDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDY7IC8qIFx1SEhISCAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9zaXplICs9IDEwOyAvKiBcdUhISEhISEhIICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICBxdW90ZSA9ICdcJyc7CisgICAgaWYgKHNxdW90ZSkgeworICAgICAgICBpZiAoZHF1b3RlKQorICAgICAgICAgICAgLyogQm90aCBzcXVvdGUgYW5kIGRxdW90ZSBwcmVzZW50LiBVc2Ugc3F1b3RlLAorICAgICAgICAgICAgICAgYW5kIGVzY2FwZSB0aGVtICovCisgICAgICAgICAgICBvc2l6ZSArPSBzcXVvdGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHF1b3RlID0gJyInOworICAgIH0KKworICAgIHJlcHIgPSBQeVVuaWNvZGVfTmV3KG9zaXplLCBtYXgpOworICAgIGlmIChyZXByID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9raW5kID0gUHlVbmljb2RlX0tJTkQocmVwcik7CisgICAgb2RhdGEgPSBQeVVuaWNvZGVfREFUQShyZXByKTsKKworICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIDAsIHF1b3RlKTsKKyAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvc2l6ZS0xLCBxdW90ZSk7CisKKyAgICBmb3IgKGkgPSAwLCBvID0gMTsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGlraW5kLCBpZGF0YSwgaSk7CiAKICAgICAgICAgLyogRXNjYXBlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgKi8KLSAgICAgICAgaWYgKChjaCA9PSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVswXSkgfHwgKGNoID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKChjaCA9PSBxdW90ZSkgfHwgKGNoID09ICdcXCcpKSB7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCiAgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndCcpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICduJzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICduJyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3InOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3InKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIHRvICdceGhoJyAqLwogICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA9PSAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd4Jyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBDb3B5IEFTQ0lJIGNoYXJhY3RlcnMgYXMtaXMgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE5vbi1BU0NJSSBjaGFyYWN0ZXJzICovCiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVUNTNCB1Y3MgPSBjaDsKLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyID0gMDsKLSAgICAgICAgICAgIC8qIEdldCBjb2RlIHBvaW50IGZyb20gc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGlmIChzaXplID4gMCkgewotICAgICAgICAgICAgICAgIGNoMiA9ICpzOwotICAgICAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPCAweERDMDAgJiYgY2gyID49IDB4REMwMAotICAgICAgICAgICAgICAgICAgICAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICAvKiBNYXAgVW5pY29kZSB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgIChjYXRlZ29yaWVzIFoqIGFuZCBDKiBleGNlcHQgQVNDSUkgc3BhY2UpCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKHVjcykpIHsKKyAgICAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShjaCkpIHsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOwogICAgICAgICAgICAgICAgIC8qIE1hcCA4LWJpdCBjaGFyYWN0ZXJzIHRvICdceGhoJyAqLwotICAgICAgICAgICAgICAgIGlmICh1Y3MgPD0gMHhmZikgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVjcyA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTYpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgICAgIGlmIChjaCA8PSAweGZmKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3gnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd1Jyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ3UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMEZdOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdVJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHhGXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogQ29weSBjaGFyYWN0ZXJzIGFzLWlzICovCiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gY2g7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGlmICh1Y3MgPj0gMHgxMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGNoMjsKLSNlbmRpZgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIC8qIEFkZCBxdW90ZSAqLwotICAgICpwKysgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVswXTsKLQotICAgICpwID0gJ1wwJzsKLSAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXByLCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcikpOworICAgIC8qIENsb3NpbmcgcXVvdGUgYWxyZWFkeSBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXByLCAxKSk7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTg1OTYsOSArMTIwOTUsOSBAQAogUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JmaW5kKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JmaW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC04NjA3LDE0ICsxMjEwNiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCkBAIC04NjI0LDkgKzEyMTI3LDkgQEAKIExpa2UgUy5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JpbmRleChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKQEAgLTg2MzUsMTggKzEyMTM4LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInN1YnN0cmluZyBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCkBAIC04NjU3LDI1ICsxMjE2NSwyNSBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yanVzdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6cmp1c3QiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgd2lkdGggLSBzZWxmLT5sZW5ndGgsIDAsIGZpbGxjaGFyKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICByZXR1cm4gcGFkKHNlbGYsIHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIDAsIGZpbGxjaGFyKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCkBAIC04NjkwLDcgKzEyMTk4LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdCA9IHNwbGl0KChQeVVuaWNvZGVPYmplY3QgKilzLCAoUHlVbmljb2RlT2JqZWN0ICopc2VwLCBtYXhzcGxpdCk7CisgICAgcmVzdWx0ID0gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiAKICAgICBQeV9ERUNSRUYocyk7CiAgICAgUHlfWERFQ1JFRihzZXApOwpAQCAtODY5OCw3ICsxMjIwNiw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0gICAgICAgICAgICAgIlMuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAorICAgICAgICAgICAgICJTLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIFMsIHVzaW5nIHNlcCBhcyB0aGVcblwKIGRlbGltaXRlciBzdHJpbmcuICBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdFxuXApAQCAtODcwNywyMCArMTIyMTUsMjIgQEAKIHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3NwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3NwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdCgoUHlPYmplY3QgKilzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKIH0KIAogUHlPYmplY3QgKgpAQCAtODcyOSw2ICsxMjIzOSw5IEBACiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CiAgICAgaWYgKCFzdHJfb2JqKQpAQCAtODczOCwxNiArMTIyNTEsNjIgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIG91dCA9IHN0cmluZ2xpYl9wYXJ0aXRpb24oCi0gICAgICAgIHN0cl9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cl9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaiksCi0gICAgICAgIHNlcF9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcF9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwX29iaikKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CisgICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOworICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cl9vYmopKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgb3V0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogCkBAIC04NzU3LDYgKzEyMzE2LDkgQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKICAgICBpZiAoIXN0cl9vYmopCkBAIC04NzY3LDE1ICsxMjMyOSw1NiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBvdXQgPSBzdHJpbmdsaWJfcnBhcnRpdGlvbigKLSAgICAgICAgc3RyX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzdHJfb2JqKSwKLSAgICAgICAgc2VwX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VwX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzZXBfb2JqKQotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX2luKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOworICAgIGtpbmQgPSBQeV9NQVgoa2luZDEsIGtpbmQyKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX2luKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9pbiwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyX2luKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBvdXQgPSAwOworICAgIH0KIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKQEAgLTg3ODYsOSArMTIzODksOSBAQAogZm91bmQsIHJldHVybiBTIGFuZCB0d28gZW1wdHkgc3RyaW5ncy4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9wYXJ0aXRpb24oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQordW5pY29kZV9wYXJ0aXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBhcmF0b3IpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9QYXJ0aXRpb24oKFB5T2JqZWN0ICopc2VsZiwgc2VwYXJhdG9yKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1BhcnRpdGlvbihzZWxmLCBzZXBhcmF0b3IpOwogfQogCiBQeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCkBAIC04Nzk5LDE0ICsxMjQwMiwxMyBAQAogc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJuIHR3byBlbXB0eSBzdHJpbmdzIGFuZCBTLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JwYXJ0aXRpb24oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQordW5pY29kZV9ycGFydGl0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfUlBhcnRpdGlvbigoUHlPYmplY3QgKilzZWxmLCBzZXBhcmF0b3IpOworICAgIHJldHVybiBQeVVuaWNvZGVfUlBhcnRpdGlvbihzZWxmLCBzZXBhcmF0b3IpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCkBAIC04ODIxLDcgKzEyNDIzLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdCA9IHJzcGxpdCgoUHlVbmljb2RlT2JqZWN0ICopcywgKFB5VW5pY29kZU9iamVjdCAqKXNlcCwgbWF4c3BsaXQpOworICAgIHJlc3VsdCA9IHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIAogICAgIFB5X0RFQ1JFRihzKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CkBAIC04ODI5LDcgKzEyNDMxLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0gICAgICAgICAgICAgIlMucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKKyAgICAgICAgICAgICAiUy5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gUywgdXNpbmcgc2VwIGFzIHRoZVxuXAogZGVsaW1pdGVyIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFuZFxuXApAQCAtODgzOCwyMCArMTI0NDAsMjIgQEAKIGlzIGEgc2VwYXJhdG9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yc3BsaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnJzcGxpdCIsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQotICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUlNwbGl0KChQeU9iamVjdCAqKXNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLApAQCAtODg2MiwyNiArMTI0NjYsMjIgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3NwbGl0bGluZXMoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXRsaW5lcygoUHlPYmplY3QgKilzZWxmLCBrZWVwZW5kcyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzKTsKIH0KIAogc3RhdGljCiBQeU9iamVjdCAqdW5pY29kZV9zdHIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfSBlbHNlCi0gICAgICAgIC8qIFN1YnR5cGUgLS0gcmV0dXJuIGdlbnVpbmUgdW5pY29kZSBzdHJpbmcgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiB9CiAKIFB5RG9jX1NUUlZBUihzd2FwY2FzZV9fZG9jX18sCkBAIC04ODkxLDkgKzEyNDkxLDExIEBACiBhbmQgdmljZSB2ZXJzYS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zd2FwY2FzZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3N3YXBjYXNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhzd2FwY2FzZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX3N3YXBjYXNlKTsKIH0KIAogUHlEb2NfU1RSVkFSKG1ha2V0cmFuc19fZG9jX18sCkBAIC04OTA5LDcgKzEyNTExLDcgQEAKIG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX21ha2V0cmFucyhQeVVuaWNvZGVPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICp4LCAqeSA9IE5VTEwsICp6ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3ID0gTlVMTCwgKmtleSwgKnZhbHVlOwpAQCAtODkyMiwyNCArMTI1MjQsMzAgQEAKICAgICBpZiAoIW5ldykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHkgIT0gTlVMTCkgeworICAgICAgICBpbnQgeF9raW5kLCB5X2tpbmQsIHpfa2luZDsKKyAgICAgICAgdm9pZCAqeF9kYXRhLCAqeV9kYXRhLCAqel9kYXRhOworCiAgICAgICAgIC8qIHggbXVzdCBiZSBhIHN0cmluZyB0b28sIG9mIGVxdWFsIGxlbmd0aCAqLwotICAgICAgICBQeV9zc2l6ZV90IHlsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoeSk7CiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZmlyc3QgbWFrZXRyYW5zIGFyZ3VtZW50IG11c3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBhIHN0cmluZyBpZiB0aGVyZSBpcyBhIHNlY29uZCBhcmd1bWVudCIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh4KSAhPSB5bGVuKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh5KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aGUgZmlyc3QgdHdvIG1ha2V0cmFucyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50cyBtdXN0IGhhdmUgZXF1YWwgbGVuZ3RoIik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQogICAgICAgICAvKiBjcmVhdGUgZW50cmllcyBmb3IgdHJhbnNsYXRpbmcgY2hhcnMgaW4geCB0byB0aG9zZSBpbiB5ICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHgpW2ldKTsKKyAgICAgICAgeF9raW5kID0gUHlVbmljb2RlX0tJTkQoeCk7CisgICAgICAgIHlfa2luZCA9IFB5VW5pY29kZV9LSU5EKHkpOworICAgICAgICB4X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh4KTsKKyAgICAgICAgeV9kYXRhID0gUHlVbmljb2RlX0RBVEEoeSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KTsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoeF9raW5kLCB4X2RhdGEsIGkpKTsKICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeSlbaV0pOworICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoeV9raW5kLCB5X2RhdGEsIGkpKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTg5NTIsOCArMTI1NjAsMTAgQEAKICAgICAgICAgfQogICAgICAgICAvKiBjcmVhdGUgZW50cmllcyBmb3IgZGVsZXRpbmcgY2hhcnMgaW4geiAqLwogICAgICAgICBpZiAoeiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHopOyBpKyspIHsKLSAgICAgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeilbaV0pOworICAgICAgICAgICAgel9raW5kID0gUHlVbmljb2RlX0tJTkQoeik7CisgICAgICAgICAgICB6X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh6KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh6KTsgaSsrKSB7CisgICAgICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHpfa2luZCwgel9kYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKG5ldywga2V5LCBQeV9Ob25lKTsKQEAgLTg5NjMsNiArMTI1NzMsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CisKICAgICAgICAgLyogeCBtdXN0IGJlIGEgZGljdCAqLwogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaWYgeW91IGdpdmUgb25seSBvbmUgYXJndW1lbnQgIgpAQCAtODk3NCwxMiArMTI1ODcsMTQgQEAKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewogICAgICAgICAgICAgICAgIC8qIGNvbnZlcnQgc3RyaW5nIGtleXMgdG8gaW50ZWdlciBrZXlzICovCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5ld2tleTsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGtleSkgIT0gMSkgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdHJpbmcga2V5cyBpbiB0cmFuc2xhdGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhYmxlIG11c3QgYmUgb2YgbGVuZ3RoIDEiKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ld2tleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpWzBdKTsKKyAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoa2V5KTsKKyAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoa2V5KTsKKyAgICAgICAgICAgICAgICBuZXdrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpOwogICAgICAgICAgICAgICAgIGlmICghbmV3a2V5KQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShuZXcsIG5ld2tleSwgdmFsdWUpOwpAQCAtOTAxMyw5ICsxMjYyOCw5IEBACiBhcmUgZGVsZXRlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV90cmFuc2xhdGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUpCit1bmljb2RlX3RyYW5zbGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgdGFibGUsICJpZ25vcmUiKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHNlbGYsIHRhYmxlLCAiaWdub3JlIik7CiB9CiAKIFB5RG9jX1NUUlZBUih1cHBlcl9fZG9jX18sCkBAIC05MDI0LDkgKzEyNjM5LDEzIEBACiBSZXR1cm4gYSBjb3B5IG9mIFMgY29udmVydGVkIHRvIHVwcGVyY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV91cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3VwcGVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXh1cHBlcik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDApOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb191cHBlcik7CiB9CiAKIFB5RG9jX1NUUlZBUih6ZmlsbF9fZG9jX18sCkBAIC05MDM2LDU1ICsxMjY1NSw1MCBAQAogb2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gVGhlIHN0cmluZyBTIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfemZpbGwoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfemZpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgZmlsbDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KKyAgICBQeU9iamVjdCAqdTsKICAgICBQeV9zc2l6ZV90IHdpZHRoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaHI7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46emZpbGwiLCAmd2lkdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGgpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKQotICAgICAgICAgICAgICAgICk7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZmlsbCA9IHdpZHRoIC0gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIGZpbGwgPSB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgdSA9IHBhZChzZWxmLCBmaWxsLCAwLCAnMCcpOwogCiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAodS0+c3RyW2ZpbGxdID09ICcrJyB8fCB1LT5zdHJbZmlsbF0gPT0gJy0nKSB7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBmaWxsKTsKKworICAgIGlmIChjaHIgPT0gJysnIHx8IGNociA9PSAnLScpIHsKICAgICAgICAgLyogbW92ZSBzaWduIHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgKi8KLSAgICAgICAgdS0+c3RyWzBdID0gdS0+c3RyW2ZpbGxdOwotICAgICAgICB1LT5zdHJbZmlsbF0gPSAnMCc7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCAwLCBjaHIpOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgZmlsbCwgJzAnKTsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIH0KIAogI2lmIDAKLXN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfZnJlZWxpc3RzaXplKFB5VW5pY29kZU9iamVjdCAqc2VsZikKLXsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG51bWZyZWUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9fZGVjaW1hbDJhc2NpaShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkoc2VsZik7CiB9CiAjZW5kaWYKIApAQCAtOTA5NywxMSArMTI3MTEsMTEgQEAKIHByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9zdGFydHN3aXRoKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKK3VuaWNvZGVfc3RhcnRzd2l0aChQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBpbnQgcmVzdWx0OwpAQCAtOTExMSw4ICsxMjcyNSw3IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7CisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwogICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwpAQCAtOTEyNCw3ICsxMjczNyw3IEBACiAgICAgICAgIC8qIG5vdGhpbmcgbWF0Y2hlZCAqLwogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOworICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgpAQCAtOTE0NiwxMSArMTI3NTksMTEgQEAKIHN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lbmRzd2l0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCit1bmljb2RlX2VuZHN3aXRoKFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBpbnQgcmVzdWx0OwpAQCAtOTE2MCw3ICsxMjc3Myw3IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KAorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoCiAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKICAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxNzIsNyArMTI3ODUsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgpAQCAtOTE4NCw3ICsxMjc5NywxNjAgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIgorUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgd3JpdGVyLT5zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKK30KKwordm9pZAorX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBtaW5fbGVuZ3RoKQoreworICAgIG1lbXNldCh3cml0ZXIsIDAsIHNpemVvZigqd3JpdGVyKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmtpbmQgPSA1OyAgICAvKiBpbnZhbGlkIGtpbmQgKi8KKyNlbmRpZgorICAgIHdyaXRlci0+bWluX2xlbmd0aCA9IFB5X01BWChtaW5fbGVuZ3RoLCAxMDApOworICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gKG1pbl9sZW5ndGggPiAwKTsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKQoreworICAgIFB5X3NzaXplX3QgbmV3bGVuOworICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CisKKyAgICBhc3NlcnQobGVuZ3RoID4gMCk7CisKKyAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLSB3cml0ZXItPnBvcykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG5ld2xlbiA9IHdyaXRlci0+cG9zICsgbGVuZ3RoOworCisgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICAvKiBvdmVyYWxsb2NhdGUgMjUlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVzaXplICovCisgICAgICAgICAgICBpZiAobmV3bGVuIDw9IChQWV9TU0laRV9UX01BWCAtIG5ld2xlbiAvIDQpKQorICAgICAgICAgICAgICAgIG5ld2xlbiArPSBuZXdsZW4gLyA0OworICAgICAgICAgICAgaWYgKG5ld2xlbiA8IHdyaXRlci0+bWluX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBuZXdsZW4gPSB3cml0ZXItPm1pbl9sZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbiwgbWF4Y2hhcik7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobmV3bGVuID4gd3JpdGVyLT5zaXplKSB7CisgICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgLyogb3ZlcmFsbG9jYXRlIDI1JSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlc2l6ZSAqLworICAgICAgICAgICAgaWYgKG5ld2xlbiA8PSAoUFlfU1NJWkVfVF9NQVggLSBuZXdsZW4gLyA0KSkKKyAgICAgICAgICAgICAgICBuZXdsZW4gKz0gbmV3bGVuIC8gNDsKKyAgICAgICAgICAgIGlmIChuZXdsZW4gPCB3cml0ZXItPm1pbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgbmV3bGVuID0gd3JpdGVyLT5taW5fbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgfHwgd3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICAgICAgLyogcmVzaXplICsgd2lkZW4gKi8KKyAgICAgICAgICAgIG5ld2J1ZmZlciA9IFB5VW5pY29kZV9OZXcobmV3bGVuLCBtYXhjaGFyKTsKKyAgICAgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhuZXdidWZmZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgMCwgd3JpdGVyLT5wb3MpOworICAgICAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci0+cmVhZG9ubHkgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbmV3YnVmZmVyID0gcmVzaXplX2NvbXBhY3Qod3JpdGVyLT5idWZmZXIsIG5ld2xlbik7CisgICAgICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyKSB7CisgICAgICAgIGFzc2VydCghd3JpdGVyLT5yZWFkb25seSk7CisgICAgICAgIG5ld2J1ZmZlciA9IFB5VW5pY29kZV9OZXcod3JpdGVyLT5zaXplLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhuZXdidWZmZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCAwLCB3cml0ZXItPnBvcyk7CisgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOworICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IGxlbiA+IHdyaXRlci0+c2l6ZSAtIHdyaXRlci0+cG9zKSB7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMICYmICF3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHN0cik7CisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IHN0cjsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CisgICAgICAgICAgICB3cml0ZXItPnJlYWRvbmx5ID0gMTsKKyAgICAgICAgICAgIHdyaXRlci0+c2l6ZSA9IDA7CisgICAgICAgICAgICB3cml0ZXItPnBvcyArPSBsZW47CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwod3JpdGVyLCBsZW4sIG1heGNoYXIpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCAwLCBsZW4pOworICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICByZXR1cm4gMDsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnBvcyA9PSAwKSB7CisgICAgICAgIFB5X1hERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKyAgICBpZiAod3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpID09IHdyaXRlci0+cG9zKTsKKyAgICAgICAgcmV0dXJuIHdyaXRlci0+YnVmZmVyOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpICE9IHdyaXRlci0+cG9zKSB7CisgICAgICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CisgICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcyk7CisgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHdyaXRlci0+YnVmZmVyLCAxKSk7CisgICAgcmV0dXJuIHdyaXRlci0+YnVmZmVyOworfQorCit2b2lkCitfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKK30KKworI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIgogCiBQeURvY19TVFJWQVIoZm9ybWF0X19kb2NfXywKICAgICAgICAgICAgICAiUy5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKSAtPiBzdHJcblwKQEAgLTkyMDIsMTMgKzEyOTY4LDIzIEBACiB1bmljb2RlX19mb3JtYXRfXyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGZvcm1hdF9zcGVjKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIoJndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGZvcm1hdF9zcGVjLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKHBfZm9ybWF0X19kb2NfXywKQEAgLTkyMTcsMjggKzEyOTkzLDU1IEBACiBSZXR1cm4gYSBmb3JtYXR0ZWQgdmVyc2lvbiBvZiBTIGFzIGRlc2NyaWJlZCBieSBmb3JtYXRfc3BlYy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfX3NpemVvZl9fKFB5VW5pY29kZU9iamVjdCAqdikKK3VuaWNvZGVfX3NpemVvZl9fKFB5T2JqZWN0ICp2KQogewotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpICogKHYtPmxlbmd0aCArIDEpKTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisKKyAgICAvKiBJZiBpdCdzIGEgY29tcGFjdCBvYmplY3QsIGFjY291bnQgZm9yIGJhc2Ugc3RydWN0dXJlICsKKyAgICAgICBjaGFyYWN0ZXIgZGF0YS4gKi8KKyAgICBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodikpCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlBU0NJSU9iamVjdCkgKyBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIDE7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1QodikpCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCkgKworICAgICAgICAgICAgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgMSkgKiBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogSWYgaXQgaXMgYSB0d28tYmxvY2sgb2JqZWN0LCBhY2NvdW50IGZvciBiYXNlIG9iamVjdCwgYW5kCisgICAgICAgICAgIGZvciBjaGFyYWN0ZXIgYmxvY2sgaWYgcHJlc2VudC4gKi8KKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeVVuaWNvZGVPYmplY3QpOworICAgICAgICBpZiAoX1B5VW5pY29kZV9EQVRBX0FOWSh2KSkKKyAgICAgICAgICAgIHNpemUgKz0gKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgMSkgKgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHYpOworICAgIH0KKyAgICAvKiBJZiB0aGUgd3N0ciBwb2ludGVyIGlzIHByZXNlbnQsIGFjY291bnQgZm9yIGl0IHVubGVzcyBpdCBpcyBzaGFyZWQKKyAgICAgICB3aXRoIHRoZSBkYXRhIHBvaW50ZXIuIENoZWNrIGlmIHRoZSBkYXRhIGlzIG5vdCBzaGFyZWQuICovCisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKHYpKQorICAgICAgICBzaXplICs9IChQeVVuaWNvZGVfV1NUUl9MRU5HVEgodikgKyAxKSAqIHNpemVvZih3Y2hhcl90KTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodikpCisgICAgICAgIHNpemUgKz0gUHlVbmljb2RlX1VURjhfTEVOR1RIKHYpICsgMTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKIFB5RG9jX1NUUlZBUihzaXplb2ZfX2RvY19fLAogICAgICAgICAgICAgICJTLl9fc2l6ZW9mX18oKSAtPiBzaXplIG9mIFMgaW4gbWVtb3J5LCBpbiBieXRlcyIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9nZXRuZXdhcmdzKFB5VW5pY29kZU9iamVjdCAqdikKK3VuaWNvZGVfZ2V0bmV3YXJncyhQeU9iamVjdCAqdikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjKSIsIHYtPnN0ciwgdi0+bGVuZ3RoKTsKKyAgICBQeU9iamVjdCAqY29weSA9IF9QeVVuaWNvZGVfQ29weSh2KTsKKyAgICBpZiAoIWNvcHkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTikiLCBjb3B5KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIHVuaWNvZGVfbWV0aG9kc1tdID0gewogICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2VuY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZW5jb2RlX19kb2NfX30sCiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgcmVwbGFjZV9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXQsIE1FVEhfVkFSQVJHUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHJzcGxpdF9fZG9jX199LAogICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9qb2luLCBNRVRIX08sIGpvaW5fX2RvY19ffSwKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsIGNhcGl0YWxpemVfX2RvY19ffSwKKyAgICB7ImNhc2Vmb2xkIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2Nhc2Vmb2xkLCBNRVRIX05PQVJHUywgY2FzZWZvbGRfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3RpdGxlLCBNRVRIX05PQVJHUywgdGl0bGVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LApAQCAtOTI1NCw3ICsxMzA1Nyw3IEBACiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAogICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnBhcnRpdGlvbiwgTUVUSF9PLCBycGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUywgc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdGxpbmVzX19kb2NfX30sCiAgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zdHJpcCwgTUVUSF9WQVJBUkdTLCBzdHJpcF9fZG9jX199LAogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLCBzd2FwY2FzZV9fZG9jX199LAogICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3RyYW5zbGF0ZSwgTUVUSF9PLCB0cmFuc2xhdGVfX2RvY19ffSwKQEAgLTkyODAsMTIgKzEzMDgzLDcgQEAKICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9TVEFUSUMsIG1ha2V0cmFuc19fZG9jX199LAogICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBzaXplb2ZfX2RvY19ffSwKICNpZiAwCi0gICAgeyJjYXB3b3JkcyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jYXB3b3JkcywgTUVUSF9OT0FSR1MsIGNhcHdvcmRzX19kb2NfX30sCi0jZW5kaWYKLQotI2lmIDAKICAgICAvKiBUaGVzZSBtZXRob2RzIGFyZSBqdXN0IHVzZWQgZm9yIGRlYnVnZ2luZyB0aGUgaW1wbGVtZW50YXRpb24uICovCi0gICAgeyJmcmVlbGlzdHNpemUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfZnJlZWxpc3RzaXplLCBNRVRIX05PQVJHU30sCiAgICAgeyJfZGVjaW1hbDJhc2NpaSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9fZGVjaW1hbDJhc2NpaSwgTUVUSF9OT0FSR1N9LAogI2VuZGlmCiAKQEAgLTkyOTYsMTAgKzEzMDk0LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBQeVVuaWNvZGVfRm9ybWF0KHYsIHcpOwogfQogCkBAIC05MzIyLDUwICsxMzExOCw2OSBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zdWJzY3JpcHQoUHlVbmljb2RlT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogaXRlbSkKK3VuaWNvZGVfc3Vic2NyaXB0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogaXRlbSkKIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChQeUluZGV4X0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19JbmRleEVycm9yKTsKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoaSA8IDApCi0gICAgICAgICAgICBpICs9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKKyAgICAgICAgICAgIGkgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgICAgIHJldHVybiB1bmljb2RlX2dldGl0ZW0oc2VsZiwgaSk7CiAgICAgfSBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoLCBjdXIsIGk7Ci0gICAgICAgIFB5X1VOSUNPREUqIHNvdXJjZV9idWY7Ci0gICAgICAgIFB5X1VOSUNPREUqIHJlc3VsdF9idWY7Ci0gICAgICAgIFB5T2JqZWN0KiByZXN1bHQ7CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgIHZvaWQgKnNyY19kYXRhLCAqZGVzdF9kYXRhOworICAgICAgICBpbnQgc3JjX2tpbmQsIGRlc3Rfa2luZDsKKyAgICAgICAgUHlfVUNTNCBjaCwgbWF4X2NoYXIsIGtpbmRfbGltaXQ7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGl0ZW0sIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKKyAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGl0ZW0sIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzbGljZWxlbmd0aCA8PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOwotICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09IDAgJiYgc3RlcCA9PSAxICYmIHNsaWNlbGVuZ3RoID09IHNlbGYtPmxlbmd0aCAmJgotICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09IDAgJiYgc3RlcCA9PSAxICYmCisgICAgICAgICAgICAgICAgICAgc2xpY2VsZW5ndGggPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpIHsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPnN0ciArIHN0YXJ0LCBzbGljZWxlbmd0aCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzb3VyY2VfYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKFB5T2JqZWN0KilzZWxmKTsKLSAgICAgICAgICAgIHJlc3VsdF9idWYgPSAoUHlfVU5JQ09ERSAqKVB5T2JqZWN0X01BTExPQyhzbGljZWxlbmd0aCoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkpOwotCi0gICAgICAgICAgICBpZiAocmVzdWx0X2J1ZiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOyBjdXIgKz0gc3RlcCwgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0X2J1ZltpXSA9IHNvdXJjZV9idWZbY3VyXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHJlc3VsdF9idWYsIHNsaWNlbGVuZ3RoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUocmVzdWx0X2J1Zik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBzdGFydCArIHNsaWNlbGVuZ3RoKTsKICAgICAgICAgfQorICAgICAgICAvKiBHZW5lcmFsIGNhc2UgKi8KKyAgICAgICAgc3JjX2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgc3JjX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpIHsKKyAgICAgICAgICAgIGtpbmRfbGltaXQgPSBraW5kX21heGNoYXJfbGltaXQoc3JjX2tpbmQpOworICAgICAgICAgICAgbWF4X2NoYXIgPSAwOworICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsgY3VyICs9IHN0ZXAsIGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoc3JjX2tpbmQsIHNyY19kYXRhLCBjdXIpOworICAgICAgICAgICAgICAgIGlmIChjaCA+IG1heF9jaGFyKSB7CisgICAgICAgICAgICAgICAgICAgIG1heF9jaGFyID0gY2g7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXhfY2hhciA+PSBraW5kX2xpbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1heF9jaGFyID0gMTI3OworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KHNsaWNlbGVuZ3RoLCBtYXhfY2hhcik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBkZXN0X2tpbmQgPSBQeVVuaWNvZGVfS0lORChyZXN1bHQpOworICAgICAgICBkZXN0X2RhdGEgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOworCisgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7IGN1ciArPSBzdGVwLCBpKyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChzcmNfa2luZCwgc3JjX2RhdGEsIGN1cik7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoZGVzdF9raW5kLCBkZXN0X2RhdGEsIGksIGNoKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJzdHJpbmcgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTM5OSwxNiArMTMyMTQsMTcgQEAKIAogLyogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBQeVVuaWNvZGUgb2JqZWN0LCBvciBOVUxMIG9uIGZhaWx1cmUuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCitzdGF0aWMgaW50Citmb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUsCisgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgY2hhciAqcDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OworICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CiAgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHByZWMgPCAwKQogICAgICAgICBwcmVjID0gNjsKQEAgLTk0MTYsNTQgKzEzMjMyLDE3MCBAQAogICAgIHAgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoeCwgdHlwZSwgcHJlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbGFncyAmIEZfQUxUKSA/IFB5X0RUU0ZfQUxUIDogMCwgTlVMTCk7CiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHAsIHN0cmxlbihwKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBzdHJsZW4ocCk7CisgICAgaWYgKHdyaXRlcikgeworICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgbGVuLCAxMjcpID09IC0xKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cih3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsIHAsIGxlbik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICAqcF9vdXRwdXQgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShwLCBsZW4pOwogICAgIFB5TWVtX0ZyZWUocCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gMDsKIH0KIAorLyogZm9ybWF0bG9uZygpIGVtdWxhdGVzIHRoZSBmb3JtYXQgY29kZXMgZCwgdSwgbywgeCBhbmQgWCwgYW5kCisgKiB0aGUgRl9BTFQgZmxhZywgZm9yIFB5dGhvbidzIGxvbmcgKHVuYm91bmRlZCkgaW50cy4gIEl0J3Mgbm90IHVzZWQgZm9yCisgKiBQeXRob24ncyByZWd1bGFyIGludHMuCisgKiBSZXR1cm4gdmFsdWU6ICBhIG5ldyBQeVVuaWNvZGVPYmplY3QqLCBvciBOVUxMIGlmIGVycm9yLgorICogICAgIFRoZSBvdXRwdXQgc3RyaW5nIGlzIG9mIHRoZSBmb3JtCisgKiAgICAgICAgICItIj8gKCIweCIgfCAiMFgiKT8gZGlnaXQrCisgKiAgICAgIjB4Ii8iMFgiIGFyZSBwcmVzZW50IG9ubHkgZm9yIHggYW5kIFggY29udmVyc2lvbnMsIHdpdGggRl9BTFQKKyAqICAgICAgICAgc2V0IGluIGZsYWdzLiAgVGhlIGNhc2Ugb2YgaGV4IGRpZ2l0cyB3aWxsIGJlIGNvcnJlY3QsCisgKiAgICAgVGhlcmUgd2lsbCBiZSBhdCBsZWFzdCBwcmVjIGRpZ2l0cywgemVyby1maWxsZWQgb24gdGhlIGxlZnQgaWYKKyAqICAgICAgICAgbmVjZXNzYXJ5IHRvIGdldCB0aGF0IG1hbnkuCisgKiB2YWwgICAgICAgICAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZAorICogZmxhZ3MgICAgICAgIGJpdG1hc2sgb2YgZm9ybWF0IGZsYWdzOyBvbmx5IEZfQUxUIGlzIGxvb2tlZCBhdAorICogcHJlYyAgICAgICAgIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0czsgMC1maWxsIG9uIGxlZnQgaWYgbmVlZGVkCisgKiB0eXBlICAgICAgICAgYSBjaGFyYWN0ZXIgaW4gW2R1b3hYXTsgdSBhY3RzIHRoZSBzYW1lIGFzIGQKKyAqCisgKiBDQVVUSU9OOiAgbywgeCBhbmQgWCBjb252ZXJzaW9ucyBvbiByZWd1bGFyIGludHMgY2FuIG5ldmVyCisgKiBwcm9kdWNlIGEgJy0nIHNpZ24sIGJ1dCBjYW4gZm9yIFB5dGhvbidzIHVuYm91bmRlZCBpbnRzLgorICovCiBzdGF0aWMgUHlPYmplY3QqCiBmb3JtYXRsb25nKFB5T2JqZWN0ICp2YWwsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQogeworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgbGVuOwotICAgIFB5T2JqZWN0ICpzdHI7IC8qIHRlbXBvcmFyeSBzdHJpbmcgb2JqZWN0LiAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBzaWduOyAgICAgICAgICAgLyogMSBpZiAnLScsIGVsc2UgMCAqLworICAgIGludCBsZW47ICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgKi8KKyAgICBQeV9zc2l6ZV90IGxsZW47CisgICAgaW50IG51bWRpZ2l0czsgICAgICAvKiBsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzICovCisgICAgaW50IG51bW5vbmRpZ2l0cyA9IDA7CiAKLSAgICBzdHIgPSBfUHlCeXRlc19Gb3JtYXRMb25nKHZhbCwgZmxhZ3MsIHByZWMsIHR5cGUsICZidWYsICZsZW4pOwotICAgIGlmICghc3RyKQorICAgIC8qIEF2b2lkIGV4Y2VlZGluZyBTU0laRV9UX01BWCAqLworICAgIGlmIChwcmVjID4gSU5UX01BWC0zKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInByZWNpc2lvbiB0b28gbGFyZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZiwgbGVuKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICB9CisKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHZhbCkpOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAndSc6CisgICAgICAgIC8qIFNwZWNpYWwtY2FzZSBib29sZWFuOiB3ZSB3YW50IDAvMSAqLworICAgICAgICBpZiAoUHlCb29sX0NoZWNrKHZhbCkpCisgICAgICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCAxMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5X1RZUEUodmFsKS0+dHBfc3RyKHZhbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ28nOgorICAgICAgICBudW1ub25kaWdpdHMgPSAyOworICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCA4KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7CisgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDE2KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KCEiJ3R5cGUnIG5vdCBpbiBbZHVveFhdIik7CisgICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFzc2VydCh1bmljb2RlX21vZGlmaWFibGUocmVzdWx0KSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShyZXN1bHQpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0FTQ0lJKHJlc3VsdCkpOworCisgICAgLyogVG8gbW9kaWZ5IHRoZSBzdHJpbmcgaW4tcGxhY2UsIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSByZWZlcmVuY2UuICovCisgICAgaWYgKFB5X1JFRkNOVChyZXN1bHQpICE9IDEpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBidWYgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOworICAgIGxsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOworICAgIGlmIChsbGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeUJ5dGVzX0Zvcm1hdExvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbiA9IChpbnQpbGxlbjsKKyAgICBzaWduID0gYnVmWzBdID09ICctJzsKKyAgICBudW1ub25kaWdpdHMgKz0gc2lnbjsKKyAgICBudW1kaWdpdHMgPSBsZW4gLSBudW1ub25kaWdpdHM7CisgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOworCisgICAgLyogR2V0IHJpZCBvZiBiYXNlIG1hcmtlciB1bmxlc3MgRl9BTFQgKi8KKyAgICBpZiAoKChmbGFncyAmIEZfQUxUKSA9PSAwICYmCisgICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykpKSB7CisgICAgICAgIGFzc2VydChidWZbc2lnbl0gPT0gJzAnKTsKKyAgICAgICAgYXNzZXJ0KGJ1ZltzaWduKzFdID09ICd4JyB8fCBidWZbc2lnbisxXSA9PSAnWCcgfHwKKyAgICAgICAgICAgICAgIGJ1ZltzaWduKzFdID09ICdvJyk7CisgICAgICAgIG51bW5vbmRpZ2l0cyAtPSAyOworICAgICAgICBidWYgKz0gMjsKKyAgICAgICAgbGVuIC09IDI7CisgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgYnVmWzBdID0gJy0nOworICAgICAgICBhc3NlcnQobGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyk7CisgICAgICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKKyAgICB9CisKKyAgICAvKiBGaWxsIHdpdGggbGVhZGluZyB6ZXJvZXMgdG8gbWVldCBtaW5pbXVtIHdpZHRoLiAqLworICAgIGlmIChwcmVjID4gbnVtZGlnaXRzKSB7CisgICAgICAgIFB5T2JqZWN0ICpyMSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtbm9uZGlnaXRzICsgcHJlYyk7CisgICAgICAgIGNoYXIgKmIxOworICAgICAgICBpZiAoIXIxKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGIxID0gUHlCeXRlc19BU19TVFJJTkcocjEpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtbm9uZGlnaXRzOyArK2kpCisgICAgICAgICAgICAqYjErKyA9ICpidWYrKzsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWMgLSBudW1kaWdpdHM7IGkrKykKKyAgICAgICAgICAgICpiMSsrID0gJzAnOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZGlnaXRzOyBpKyspCisgICAgICAgICAgICAqYjErKyA9ICpidWYrKzsKKyAgICAgICAgKmIxID0gJ1wwJzsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IHIxOworICAgICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBsZW4gPSBudW1ub25kaWdpdHMgKyBwcmVjOworICAgIH0KKworICAgIC8qIEZpeCB1cCBjYXNlIGZvciBoZXggY29udmVyc2lvbnMuICovCisgICAgaWYgKHR5cGUgPT0gJ1gnKSB7CisgICAgICAgIC8qIE5lZWQgdG8gY29udmVydCBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzIHRvIHVwcGVyIGNhc2UuCisgICAgICAgICAgIGFuZCBuZWVkIHRvIGNvbnZlcnQgMHggdG8gMFggKGFuZCAtMHggdG8gLTBYKS4gKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICAgICAgaWYgKGJ1ZltpXSA+PSAnYScgJiYgYnVmW2ldIDw9ICd4JykKKyAgICAgICAgICAgICAgICBidWZbaV0gLT0gJ2EnLSdBJzsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSB8fCBsZW4gIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KSkgeworICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICAgICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGJ1ZiwgbGVuKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IHVuaWNvZGU7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbnQKLWZvcm1hdGNoYXIoUHlfVU5JQ09ERSAqYnVmLAotICAgICAgICAgICBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICBQeU9iamVjdCAqdikKK3N0YXRpYyBQeV9VQ1M0Citmb3JtYXRjaGFyKFB5T2JqZWN0ICp2KQogewogICAgIC8qIHByZXN1bWUgdGhhdCB0aGUgYnVmZmVyIGlzIGF0IGxlYXN0IDMgY2hhcmFjdGVycyBsb25nICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHYpID09IDEpIHsKLSAgICAgICAgICAgIGJ1ZlswXSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpWzBdOwotICAgICAgICAgICAgYnVmWzFdID0gJ1wwJzsKLSAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodikgPT0gMSkgeworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEX0NIQVIodiwgMCk7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodikgPT0gMikgewotICAgICAgICAgICAgLyogRGVjb2RlIGEgdmFsaWQgc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGludCBjMCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpWzBdOwotICAgICAgICAgICAgaW50IGMxID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMV07Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IGMwICYmIGMwIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgICAgIDB4REMwMCA8PSBjMSAmJiBjMSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBidWZbMF0gPSBjMDsKLSAgICAgICAgICAgICAgICBidWZbMV0gPSBjMTsKLSAgICAgICAgICAgICAgICBidWZbMl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTk0NzMsNDUgKzEzNDA1LDM1IEBACiAgICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAKLSAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweDEwZmZmZikgeworICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IE1BWF9VTklDT0RFKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAoUHlfVUNTNCkgLTE7CiAgICAgICAgIH0KIAotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKHggPiAweGZmZmYpIHsKLSAgICAgICAgICAgIHggLT0gMHgxMDAwMDsKLSAgICAgICAgICAgIGJ1ZlswXSA9IChQeV9VTklDT0RFKSgweEQ4MDAgfCAoeCA+PiAxMCkpOwotICAgICAgICAgICAgYnVmWzFdID0gKFB5X1VOSUNPREUpKDB4REMwMCB8ICh4ICYgMHgzRkYpKTsKLSAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgYnVmWzBdID0gKFB5X1VOSUNPREUpIHg7Ci0gICAgICAgIGJ1ZlsxXSA9ICdcMCc7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gKFB5X1VDUzQpIHg7CiAgICAgfQogCiAgIG9uRXJyb3I6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGludCBvciBjaGFyIik7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVybiAoUHlfVUNTNCkgLTE7CiB9CiAKLS8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKQotICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCBjaGFycyBhcmUgZm9ybWF0dGVkLgotKi8KLSNkZWZpbmUgRk9STUFUQlVGTEVOIChzaXplX3QpMTAKLQotUHlPYmplY3QgKlB5VW5pY29kZV9Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFICpmbXQsICpyZXM7Ci0gICAgUHlfc3NpemVfdCBmbXRjbnQsIHJlc2NudCwgcmVzbGVuLCBhcmdsZW4sIGFyZ2lkeDsKKyAgICBQeV9zc2l6ZV90IGZtdGNudCwgZm10cG9zLCBhcmdsZW4sIGFyZ2lkeDsKICAgICBpbnQgYXJnc19vd25lZCA9IDA7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGVtcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlY29uZCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnVmb3JtYXQ7CisgICAgdm9pZCAqZm10OworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCwgZm10a2luZDsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBQeV9zc2l6ZV90IHN1YmxlbjsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CiAKICAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgYXJncyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwpAQCAtOTUyMCwxNCArMTM0NDIsMTcgQEAKICAgICB1Zm9ybWF0ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZm9ybWF0KTsKICAgICBpZiAodWZvcm1hdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmbXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1Zm9ybWF0KTsKLSAgICBmbXRjbnQgPSBQeVVuaWNvZGVfR0VUX1NJWkUodWZvcm1hdCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1Zm9ybWF0KSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYodWZvcm1hdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIHJlc2xlbiA9IHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICByZXN1bHQgPSBfUHlVbmljb2RlX05ldyhyZXNsZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIHJlcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7CisgICAgZm10ID0gUHlVbmljb2RlX0RBVEEodWZvcm1hdCk7CisgICAgZm10a2luZCA9IFB5VW5pY29kZV9LSU5EKHVmb3JtYXQpOworICAgIGZtdGNudCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVmb3JtYXQpOworICAgIGZtdHBvcyA9IDA7CisKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgZm10Y250ICsgMTAwKTsKIAogICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIGFyZ2xlbiA9IFB5VHVwbGVfU2l6ZShhcmdzKTsKQEAgLTk1NDEsMzUgKzEzNDY2LDQ2IEBACiAgICAgICAgIGRpY3QgPSBhcmdzOwogCiAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgaWYgKCpmbXQgIT0gJyUnKSB7Ci0gICAgICAgICAgICBpZiAoLS1yZXNjbnQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSArIHJlc2xlbiAtIHJlc2NudDsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKSAhPSAnJScpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgbm9uZm10cG9zOworICAgICAgICAgICAgbm9uZm10cG9zID0gZm10cG9zKys7CisgICAgICAgICAgICB3aGlsZSAoZm10Y250ID49IDAgJiYKKyAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcykgIT0gJyUnKSB7CisgICAgICAgICAgICAgICAgZm10cG9zKys7CisgICAgICAgICAgICAgICAgZm10Y250LS07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcmVzKysgPSAqZm10Kys7CisgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkKKyAgICAgICAgICAgICAgICBmbXRwb3MtLTsKKyAgICAgICAgICAgIHN1YmxlbiA9IGZtdHBvcyAtIG5vbmZtdHBvczsKKyAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHVmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25mbXRwb3MsIG5vbmZtdHBvcyArIHN1Ymxlbik7CisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHN1YmxlbiwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXIuYnVmZmVyLCB3cml0ZXIucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWZvcm1hdCwgbm9uZm10cG9zLCBzdWJsZW4pOworICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCiAgICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOwogICAgICAgICAgICAgUHlfc3NpemVfdCB3aWR0aCA9IC0xOwogICAgICAgICAgICAgaW50IHByZWMgPSAtMTsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgYyA9ICdcMCc7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGZpbGw7CisgICAgICAgICAgICBQeV9VQ1M0IGMgPSAnXDAnOworICAgICAgICAgICAgUHlfVUNTNCBmaWxsOworICAgICAgICAgICAgaW50IHNpZ247CisgICAgICAgICAgICBQeV9VQ1M0IHNpZ25jaGFyOwogICAgICAgICAgICAgaW50IGlzbnVtb2s7CiAgICAgICAgICAgICBQeU9iamVjdCAqdiA9IE5VTEw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdGVtcCA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpwYnVmOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBzaWduOwotICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGZvcm1hdGJ1ZltGT1JNQVRCVUZMRU5dOyAvKiBGb3IgZm9ybWF0Y2hhcigpICovCisgICAgICAgICAgICB2b2lkICpwYnVmID0gTlVMTDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcGluZGV4LCBsZW47CisgICAgICAgICAgICBQeV9VQ1M0IGJ1Zm1heGNoYXI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmxlbjsKIAotICAgICAgICAgICAgZm10Kys7Ci0gICAgICAgICAgICBpZiAoKmZtdCA9PSAnKCcpIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICprZXlzdGFydDsKKyAgICAgICAgICAgIGZtdHBvcysrOworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKTsKKyAgICAgICAgICAgIGlmIChjID09ICcoJykgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5c3RhcnQ7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgICAgICBpbnQgcGNvdW50ID0gMTsKQEAgLTk1NzksMzQgKzEzNTE1LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHJlcXVpcmVzIGEgbWFwcGluZyIpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICsrZm10OworICAgICAgICAgICAgICAgICsrZm10cG9zOwogICAgICAgICAgICAgICAgIC0tZm10Y250OwotICAgICAgICAgICAgICAgIGtleXN0YXJ0ID0gZm10OworICAgICAgICAgICAgICAgIGtleXN0YXJ0ID0gZm10cG9zOwogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBiYWxhbmNlZCBwYXJlbnRoZXNlcyAqLwogICAgICAgICAgICAgICAgIHdoaWxlIChwY291bnQgPiAwICYmIC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyknKQorICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKScpCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXBjb3VudDsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKCcpCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJygnKQogICAgICAgICAgICAgICAgICAgICAgICAgKytwY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGZtdCsrOworICAgICAgICAgICAgICAgICAgICBmbXRwb3MrKzsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAga2V5bGVuID0gZm10IC0ga2V5c3RhcnQgLSAxOworICAgICAgICAgICAgICAgIGtleWxlbiA9IGZtdHBvcyAtIGtleXN0YXJ0IC0gMTsKICAgICAgICAgICAgICAgICBpZiAoZm10Y250IDwgMCB8fCBwY291bnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluY29tcGxldGUgZm9ybWF0IGtleSIpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQotI2lmIDAKLSAgICAgICAgICAgICAgICAvKiBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyB1c2luZyBVVEYtOCBhbmQKLSAgICAgICAgICAgICAgICAgICB0aGVuIGxvb2tlZCB1cCBzaW5jZSBQeXRob24gdXNlcyBzdHJpbmdzIHRvIGhvbGQKLSAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgbmFtZXMgZXRjLiBpbiBpdHMgbmFtZXNwYWNlcyBhbmQgd2UKLSAgICAgICAgICAgICAgICAgICB3b3VsZG4ndCB3YW50IHRvIGJyZWFrIGNvbW1vbiBpZGlvbXMuICovCi0gICAgICAgICAgICAgICAga2V5ID0gUHlVbmljb2RlX0VuY29kZVVURjgoa2V5c3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoa2V5c3RhcnQsIGtleWxlbik7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBrZXkgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHVmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzdGFydCwga2V5c3RhcnQgKyBrZXlsZW4pOwogICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGlmIChhcmdzX293bmVkKSB7CkBAIC05NjIzLDcgKzEzNTUxLDggQEAKICAgICAgICAgICAgICAgICBhcmdpZHggPSAtMjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChjID0gKmZtdCsrKSB7CisgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBGX0xKVVNUOyBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gRl9TSUdOOyBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjYXNlICcgJzogZmxhZ3MgfD0gRl9CTEFOSzsgY29udGludWU7CkBAIC05NjQ5LDE0ICsxMzU3OCwxNyBAQAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC13aWR0aDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CiAgICAgICAgICAgICAgICAgd2lkdGggPSBjIC0gJzAnOwogICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAnMCcgfHwgYyA+ICc5JykKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAvKiBTaW5jZSBjIGlzIHVuc2lnbmVkLCB0aGUgUkhTIHdvdWxkIGVuZCB1cCBhcyB1bnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgbWl4aW5nIHNpZ25lZCBhbmQgdW5zaWduZWQgY29tcGFyaXNvbi4gU2luY2UgYyBpcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICcwJyBhbmQgJzknLCBjYXN0aW5nIHRvIGludCBpcyBzYWZlLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiAoUFlfU1NJWkVfVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIHRvbyBiaWciKTsKQEAgLTk2NjgsNyArMTM2MDAsNyBAQAogICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTk2ODQsMTIgKzEzNjE2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CiAgICAgICAgICAgICAgICAgICAgIHByZWMgPSBjIC0gJzAnOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA+IChJTlRfTUFYIC0gKChpbnQpYyAtICcwJykpIC8gMTApIHsKQEAgLTk3MDQsNyArMTM2MzYsNyBAQAogICAgICAgICAgICAgaWYgKGZtdGNudCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2gnIHx8IGMgPT0gJ2wnIHx8IGMgPT0gJ0wnKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkgewpAQCAtOTcxMiwyNSArMTM2NDQsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluY29tcGxldGUgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGMgIT0gJyUnKSB7Ci0gICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKGZtdGNudCA9PSAwKQorICAgICAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAwOworCisgICAgICAgICAgICBpZiAoYyA9PSAnJScpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIDEsICclJykgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCAnJScpOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCiAgICAgICAgICAgICBzaWduID0gMDsKKyAgICAgICAgICAgIHNpZ25jaGFyID0gJ1wwJzsKICAgICAgICAgICAgIGZpbGwgPSAnICc7CiAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKIAotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9IGZvcm1hdGJ1ZjsKLSAgICAgICAgICAgICAgICAvKiBwcmVzdW1lIHRoYXQgYnVmZmVyIGxlbmd0aCBpcyBhdCBsZWFzdCAxICovCi0gICAgICAgICAgICAgICAgcGJ1ZlswXSA9ICclJzsKLSAgICAgICAgICAgICAgICBsZW4gPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxMCwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikgJiYgYyA9PSAncycpIHsKICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHY7CiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZW1wKTsKQEAgLTk3NDIsMjEgKzEzNjg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9SZXByKHYpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gUHlPYmplY3RfQVNDSUkodik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodGVtcCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvICovOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGFyZ3VtZW50IGhhcyBub24tc3RyaW5nIHN0cigpIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRlbXApOwotICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh0ZW1wKTsKLSAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCi0gICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJ2knOgpAQCAtOTc2NSw2ICsxMzY5NCwzMiBAQAogICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KQorICAgICAgICAgICAgICAgICAgICAmJiB3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChjKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5TG9uZ19Gb3JtYXRXcml0ZXIoJndyaXRlciwgdiwgMTAsIGZsYWdzICYgRl9BTFQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5TG9uZ19Gb3JtYXRXcml0ZXIoJndyaXRlciwgdiwgMTYsIGZsYWdzICYgRl9BTFQpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5TG9uZ19Gb3JtYXRXcml0ZXIoJndyaXRlciwgdiwgOCwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpc251bW9rID0gMDsKICAgICAgICAgICAgICAgICBpZiAoUHlOdW1iZXJfQ2hlY2sodikpIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlvYmo9TlVMTDsKQEAgLTk3NzksMTMgKzEzNzM0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKGlvYmohPU5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soaW9iaikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc251bW9rID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0bG9uZyhpb2JqLCBmbGFncywgcHJlYywgKGMgPT0gJ2knPyAnZCc6IGMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKQEAgLTk4MDgsMjIgKzEzNzU5LDM4IEBACiAgICAgICAgICAgICBjYXNlICdGJzoKICAgICAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRlbXApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgTlVMTCwgJndyaXRlcikgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBzaWduID0gMTsKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCAmdGVtcCwgTlVMTCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gZm9ybWF0YnVmOwotICAgICAgICAgICAgICAgIGxlbiA9IGZvcm1hdGNoYXIocGJ1Ziwgc2l6ZW9mKGZvcm1hdGJ1Zikvc2l6ZW9mKFB5X1VOSUNPREUpLCB2KTsKLSAgICAgICAgICAgICAgICBpZiAobGVuIDwgMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gZm9ybWF0Y2hhcih2KTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gKFB5X1VDUzQpIC0xKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgMSwgY2gpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBjaCk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0ZW1wID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTk4MzEsOTAgKzEzNzk4LDEzOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXQgaW5kZXggJXpkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMxPD1jICYmIGM8PTEyNikgPyAoY2hhciljIDogJz8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVmb3JtYXQpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdHBvcyAtIDEpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgYXNzZXJ0IChQeVVuaWNvZGVfQ2hlY2sodGVtcCkpOworCisgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKCZ3cml0ZXIsIHRlbXApID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRlbXApID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIodGVtcCk7CisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHRlbXApOworICAgICAgICAgICAgcGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHRlbXApOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGVtcCk7CisKKyAgICAgICAgICAgIGlmIChjID09ICdzJyB8fCBjID09ICdyJyB8fCBjID09ICdhJykgeworICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogcGJ1ZiBpcyBpbml0aWFsaXplZCBoZXJlLiAqLworICAgICAgICAgICAgcGluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChzaWduKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCpwYnVmID09ICctJyB8fCAqcGJ1ZiA9PSAnKycpIHsKLSAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICctJyB8fCBjaCA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICAgICAgc2lnbmNoYXIgPSBjaDsKICAgICAgICAgICAgICAgICAgICAgbGVuLS07CisgICAgICAgICAgICAgICAgICAgIHBpbmRleCsrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfU0lHTikKLSAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcrJzsKKyAgICAgICAgICAgICAgICAgICAgc2lnbmNoYXIgPSAnKyc7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBGX0JMQU5LKQotICAgICAgICAgICAgICAgICAgICBzaWduID0gJyAnOworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9ICcgJzsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdpZHRoIDwgbGVuKQogICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwotICAgICAgICAgICAgaWYgKHJlc2NudCAtIChzaWduICE9IDApIDwgd2lkdGgpIHsKLSAgICAgICAgICAgICAgICByZXNsZW4gLT0gcmVzY250OwotICAgICAgICAgICAgICAgIHJlc2NudCA9IHdpZHRoICsgZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc2xlbiA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAvKiBDb21wdXRlIHRoZSBsZW5ndGggYW5kIG1heGltdW0gY2hhcmFjdGVyIG9mIHRoZQorICAgICAgICAgICAgICAgd3JpdHRlbiBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICBidWZtYXhjaGFyID0gMTI3OworICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBGX0xKVVNUKSkgeworICAgICAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgod2lkdGgtMSkgPiBsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBidWZtYXhjaGFyID0gTUFYX01BWENIQVIoYnVmbWF4Y2hhciwgZmlsbCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBNQVhfTUFYQ0hBUihidWZtYXhjaGFyLCBmaWxsKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHRlbXAsIDAsIHBpbmRleCtsZW4pOworICAgICAgICAgICAgYnVmbWF4Y2hhciA9IE1BWF9NQVhDSEFSKGJ1Zm1heGNoYXIsIG1heGNoYXIpOworCisgICAgICAgICAgICBidWZsZW4gPSB3aWR0aDsKKyAgICAgICAgICAgIGlmIChzaWduICYmIGxlbiA9PSB3aWR0aCkKKyAgICAgICAgICAgICAgICBidWZsZW4rKzsKKworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBidWZsZW4sIGJ1Zm1heGNoYXIpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgLyogV3JpdGUgY2hhcmFjdGVycyAqLwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKLSAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpCi0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247Ci0gICAgICAgICAgICAgICAgcmVzY250LS07CisgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIHNpZ25jaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoLS07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJyB8fCBjID09ICdvJykpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOwotICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgpID09ICcwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCArIDEpID09IGMpOwogICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykgewotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCAnMCcpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKzEsIGMpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHBpbmRleCArPSAyOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXNjbnQgLT0gMjsKICAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKICAgICAgICAgICAgICAgICBsZW4gLT0gMjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbiAmJiAhKGZsYWdzICYgRl9MSlVTVCkpIHsKLSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBmaWxsOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0td2lkdGggPiBsZW4pOworICAgICAgICAgICAgICAgIHN1YmxlbiA9IHdpZHRoIC0gbGVuOworICAgICAgICAgICAgICAgIEZJTEwod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCBmaWxsLCB3cml0ZXIucG9zLCBzdWJsZW4pOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gc3VibGVuOworICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGZpbGwgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNpZ24pCi0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CisgICAgICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgc2lnbmNoYXIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnIHx8IGMgPT0gJ28nKSkgewotICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCkgPT0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCsxKSA9PSBjKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysxLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAyOworICAgICAgICAgICAgICAgICAgICBwaW5kZXggKz0gMjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocmVzLCBwYnVmLCBsZW4pOwotICAgICAgICAgICAgcmVzICs9IGxlbjsKLSAgICAgICAgICAgIHJlc2NudCAtPSBsZW47Ci0gICAgICAgICAgICB3aGlsZSAoLS13aWR0aCA+PSBsZW4pIHsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAqcmVzKysgPSAnICc7CisKKyAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXIuYnVmZmVyLCB3cml0ZXIucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAsIHBpbmRleCwgbGVuKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IGxlbjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikgeworICAgICAgICAgICAgICAgIHN1YmxlbiA9IHdpZHRoIC0gbGVuOworICAgICAgICAgICAgICAgIEZJTEwod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCAnICcsIHdyaXRlci5wb3MsIHN1Ymxlbik7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47CisgICAgICAgICAgICB9CisKK25leHRhcmc6CiAgICAgICAgICAgICBpZiAoZGljdCAmJiAoYXJnaWR4IDwgYXJnbGVuKSAmJiBjICE9ICclJykgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIik7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgUHlfQ0xFQVIodGVtcCk7CiAgICAgICAgIH0gLyogJyUnICovCiAgICAgfSAvKiB1bnRpbCBlbmQgKi8KICAgICBpZiAoYXJnaWR4IDwgYXJnbGVuICYmICFkaWN0KSB7CkBAIC05OTIzLDE3ICsxMzkzOSwxOSBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIHJlc2xlbiAtIHJlc2NudCkgPCAwKQotICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KICAgICBQeV9ERUNSRUYodWZvcm1hdCk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKKyAgICBQeV9YREVDUkVGKHRlbXApOworICAgIFB5X1hERUNSRUYoc2Vjb25kKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgUHlfREVDUkVGKHVmb3JtYXQpOworICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgUHlfWERFQ1JFRihzZWNvbmQpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQpAQCAtOTk1Niw4ICsxMzk3NCwxMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T3NzOnN0ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmeCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeVVuaWNvZGVfTmV3KDApOworICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwgJiYgZXJyb3JzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeU9iamVjdF9TdHIoeCk7CiAgICAgZWxzZQpAQCAtOTk2NywzMSArMTM5ODcsMTAxIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9zdWJ0eXBlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnRtcCwgKnBuZXc7Ci0gICAgUHlfc3NpemVfdCBuOworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqc2VsZjsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgY2hhcl9zaXplOworICAgIGludCBzaGFyZV93c3RyLCBzaGFyZV91dGY4OworICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBhc3NlcnQoUHlUeXBlX0lzU3VidHlwZSh0eXBlLCAmUHlVbmljb2RlX1R5cGUpKTsKLSAgICB0bXAgPSAoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZV9uZXcoJlB5VW5pY29kZV9UeXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAodG1wID09IE5VTEwpCisKKyAgICB1bmljb2RlID0gdW5pY29kZV9uZXcoJlB5VW5pY29kZV9UeXBlLCBhcmdzLCBrd2RzKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRtcCkpOwotICAgIHBuZXcgPSAoUHlVbmljb2RlT2JqZWN0ICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIG4gPSB0bXAtPmxlbmd0aCk7Ci0gICAgaWYgKHBuZXcgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBwbmV3LT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhzaXplb2YoUHlfVU5JQ09ERSkgKiAobisxKSk7Ci0gICAgaWYgKHBuZXctPnN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UoKFB5T2JqZWN0ICopcG5ldyk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChwbmV3KTsKLSAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgc2VsZiA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfVU5JQ09ERV9DT1BZKHBuZXctPnN0ciwgdG1wLT5zdHIsIG4rMSk7Ci0gICAgcG5ldy0+bGVuZ3RoID0gbjsKLSAgICBwbmV3LT5oYXNoID0gdG1wLT5oYXNoOwotICAgIFB5X0RFQ1JFRih0bXApOwotICAgIHJldHVybiAoUHlPYmplY3QgKilwbmV3OworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpID0gbGVuZ3RoOworI2lmZGVmIFB5X0RFQlVHCisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gLTE7CisjZWxzZQorICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKTsKKyNlbmRpZgorICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikuaW50ZXJuZWQgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikua2luZCA9IGtpbmQ7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5jb21wYWN0ID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmFzY2lpID0gX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLnJlYWR5ID0gMTsKKyAgICBfUHlVbmljb2RlX1dTVFIoc2VsZikgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgoc2VsZikgPSAwOworICAgIF9QeVVuaWNvZGVfVVRGOChzZWxmKSA9IE5VTEw7CisgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSChzZWxmKSA9IDA7CisgICAgX1B5VW5pY29kZV9EQVRBX0FOWShzZWxmKSA9IE5VTEw7CisKKyAgICBzaGFyZV91dGY4ID0gMDsKKyAgICBzaGFyZV93c3RyID0gMDsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBjaGFyX3NpemUgPSAxOworICAgICAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpIDwgMTI4KQorICAgICAgICAgICAgc2hhcmVfdXRmOCA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgY2hhcl9zaXplID0gMjsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSAyKQorICAgICAgICAgICAgc2hhcmVfd3N0ciA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIGNoYXJfc2l6ZSA9IDQ7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gNCkKKyAgICAgICAgICAgIHNoYXJlX3dzdHIgPSAxOworICAgIH0KKworICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgbGVuZ3RoLiAqLworICAgIGlmIChsZW5ndGggPiAoUFlfU1NJWkVfVF9NQVggLyBjaGFyX3NpemUgLSAxKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorICAgIGRhdGEgPSBQeU9iamVjdF9NQUxMT0MoKGxlbmd0aCArIDEpICogY2hhcl9zaXplKTsKKyAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisKKyAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHNlbGYpID0gZGF0YTsKKyAgICBpZiAoc2hhcmVfdXRmOCkgeworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHNlbGYpID0gbGVuZ3RoOworICAgICAgICBfUHlVbmljb2RlX1VURjgoc2VsZikgPSBkYXRhOworICAgIH0KKyAgICBpZiAoc2hhcmVfd3N0cikgeworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHNlbGYpID0gbGVuZ3RoOworICAgICAgICBfUHlVbmljb2RlX1dTVFIoc2VsZikgPSAod2NoYXJfdCAqKWRhdGE7CisgICAgfQorCisgICAgUHlfTUVNQ1BZKGRhdGEsIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICBraW5kICogKGxlbmd0aCArIDEpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHNlbGYsIDEpKTsKKyNpZmRlZiBQeV9ERUJVRworICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKTsKKyNlbmRpZgorICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gc2VsZjsKKworb25FcnJvcjoKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgUHlfREVDUkVGKHNlbGYpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIodW5pY29kZV9kb2MsCkBAIC0xMDA1NCwxMiArMTQxNDQsMTIgQEAKIAogLyogSW5pdGlhbGl6ZSB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwogCi12b2lkIF9QeVVuaWNvZGVfSW5pdCh2b2lkKQoraW50IF9QeVVuaWNvZGVfSW5pdCh2b2lkKQogewogICAgIGludCBpOwogCiAgICAgLyogWFhYIC0gbW92ZSB0aGlzIGFycmF5IHRvIHVuaWNvZGVjdHlwZS5jID8gKi8KLSAgICBQeV9VTklDT0RFIGxpbmVicmVha1tdID0geworICAgIFB5X1VDUzIgbGluZWJyZWFrW10gPSB7CiAgICAgICAgIDB4MDAwQSwgLyogTElORSBGRUVEICovCiAgICAgICAgIDB4MDAwRCwgLyogQ0FSUklBR0UgUkVUVVJOICovCiAgICAgICAgIDB4MDAxQywgLyogRklMRSBTRVBBUkFUT1IgKi8KQEAgLTEwMDcxLDExICsxNDE2MSwxMCBAQAogICAgIH07CiAKICAgICAvKiBJbml0IHRoZSBpbXBsZW1lbnRhdGlvbiAqLwotICAgIGZyZWVfbGlzdCA9IE5VTEw7Ci0gICAgbnVtZnJlZSA9IDA7Ci0gICAgdW5pY29kZV9lbXB0eSA9IF9QeVVuaWNvZGVfTmV3KDApOworICAgIHVuaWNvZGVfZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgIGlmICghdW5pY29kZV9lbXB0eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBjcmVhdGUgZW1wdHkgc3RyaW5nIik7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlX2VtcHR5LCAxKSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgIHVuaWNvZGVfbGF0aW4xW2ldID0gTlVMTDsKQEAgLTEwMDg0LDggKzE0MTczLDggQEAKIAogICAgIC8qIGluaXRpYWxpemUgdGhlIGxpbmVicmVhayBibG9vbSBmaWx0ZXIgKi8KICAgICBibG9vbV9saW5lYnJlYWsgPSBtYWtlX2Jsb29tX21hc2soCi0gICAgICAgIGxpbmVicmVhaywgc2l6ZW9mKGxpbmVicmVhaykgLyBzaXplb2YobGluZWJyZWFrWzBdKQotICAgICAgICApOworICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCwgbGluZWJyZWFrLAorICAgICAgICBQeV9BUlJBWV9MRU5HVEgobGluZWJyZWFrKSk7CiAKICAgICBQeVR5cGVfUmVhZHkoJkVuY29kaW5nTWFwVHlwZSk7CiAKQEAgLTEwMDk0LDYgKzE0MTgzLDE1IEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZvcm1hdHRlckl0ZXJfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGZvcm1hdHRlciBpdGVyIHR5cGUiKTsKKworI2lmZGVmIEhBVkVfTUJDUworICAgIHdpbnZlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcik7CisgICAgaWYgKCFHZXRWZXJzaW9uRXgoKE9TVkVSU0lPTklORk8qKSZ3aW52ZXIpKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIEZpbmFsaXplIHRoZSBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCkBAIC0xMDEwMSwyMSArMTQxOTksNyBAQAogaW50CiBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCh2b2lkKQogewotICAgIGludCBmcmVlbGlzdF9zaXplID0gbnVtZnJlZTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KLSAgICBmb3IgKHUgPSBmcmVlX2xpc3Q7IHUgIT0gTlVMTDspIHsKLSAgICAgICAgUHlVbmljb2RlT2JqZWN0ICp2ID0gdTsKLSAgICAgICAgdSA9ICooUHlVbmljb2RlT2JqZWN0ICoqKXU7Ci0gICAgICAgIGlmICh2LT5zdHIpCi0gICAgICAgICAgICBQeU9iamVjdF9ERUwodi0+c3RyKTsKLSAgICAgICAgUHlfWERFQ1JFRih2LT5kZWZlbmMpOwotICAgICAgICBQeU9iamVjdF9EZWwodik7Ci0gICAgICAgIG51bWZyZWUtLTsKLSAgICB9Ci0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICBhc3NlcnQobnVtZnJlZSA9PSAwKTsKLSAgICByZXR1cm4gZnJlZWxpc3Rfc2l6ZTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZApAQCAtMTAxMzIsMTcgKzE0MjE2LDIyIEBACiAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVtpXSA9IE5VTEw7CiAgICAgICAgIH0KICAgICB9CisgICAgX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3MoKTsKICAgICAodm9pZClQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCgpOwogfQogCiB2b2lkCiBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKnApCiB7Ci0gICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICpzID0gKFB5VW5pY29kZU9iamVjdCAqKSgqcCk7CisgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnMgPSAqcDsKICAgICBQeU9iamVjdCAqdDsKKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChzICE9IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHMpKTsKKyNlbHNlCiAgICAgaWYgKHMgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHMpKQotICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5VW5pY29kZV9JbnRlcm5JblBsYWNlOiB1bmljb2RlIHN0cmluZ3Mgb25seSBwbGVhc2UhIik7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgogICAgIC8qIElmIGl0J3MgYSBzdWJjbGFzcywgd2UgZG9uJ3QgcmVhbGx5IGtub3cgd2hhdCBwdXR0aW5nCiAgICAgICAgaXQgaW4gdGhlIGludGVybmVkIGRpY3QgbWlnaHQgZG8uICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSkKQEAgLTEwMTYwLDcgKzE0MjQ5LDcgQEAKICAgICAgICB0aG91Z2ggdGhlIGtleSBpcyBwcmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5LAogICAgICAgIG5hbWVseSB3aGVuIHRoaXMgaGFwcGVucyBkdXJpbmcgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICBQeV9BTExPV19SRUNVUlNJT04KLSAgICAgICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCAoUHlPYmplY3QgKilzKTsKKyAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIHMpOwogICAgIFB5X0VORF9BTExPV19SRUNVUlNJT04KIAogICAgICAgICBpZiAodCkgewpAQCAtMTAxNzEsNyArMTQyNjAsNyBAQAogICAgICAgICB9CiAKICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAxOwotICAgIGlmIChQeURpY3RfU2V0SXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopcywgKFB5T2JqZWN0ICopcykgPCAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCBzLCBzKSA8IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxODAsNyArMTQyNjksNyBAQAogICAgIC8qIFRoZSB0d28gcmVmZXJlbmNlcyBpbiBpbnRlcm5lZCBhcmUgbm90IGNvdW50ZWQgYnkgcmVmY250LgogICAgICAgIFRoZSBkZWFsbG9jYXRvciB3aWxsIHRha2UgY2FyZSBvZiB0aGlzICovCiAgICAgUHlfUkVGQ05UKHMpIC09IDI7Ci0gICAgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHMpID0gU1NUQVRFX0lOVEVSTkVEX01PUlRBTDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHMpLmludGVybmVkID0gU1NUQVRFX0lOVEVSTkVEX01PUlRBTDsKIH0KIAogdm9pZApAQCAtMTAxODgsNyArMTQyNzcsNyBAQAogewogICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKHApOwogICAgIGlmIChQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQoKnApICE9IFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCkgewotICAgICAgICBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQoKnApID0gU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKCpwKS5pbnRlcm5lZCA9IFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTDsKICAgICAgICAgUHlfSU5DUkVGKCpwKTsKICAgICB9CiB9CkBAIC0xMDIwMywxMCArMTQyOTIsMTEgQEAKICAgICByZXR1cm4gczsKIH0KIAotdm9pZCBfUHlfUmVsZWFzZUludGVybmVkVW5pY29kZVN0cmluZ3Modm9pZCkKK3ZvaWQKK19QeV9SZWxlYXNlSW50ZXJuZWRVbmljb2RlU3RyaW5ncyh2b2lkKQogewogICAgIFB5T2JqZWN0ICprZXlzOwotICAgIFB5VW5pY29kZU9iamVjdCAqczsKKyAgICBQeU9iamVjdCAqczsKICAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlfc3NpemVfdCBpbW1vcnRhbF9zaXplID0gMCwgbW9ydGFsX3NpemUgPSAwOwogCkBAIC0xMDIyNywyMyArMTQzMTcsMjcgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwgInJlbGVhc2luZyAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGludGVybmVkIHN0cmluZ3NcbiIsCiAgICAgICAgICAgICBuKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHMgPSAoUHlVbmljb2RlT2JqZWN0ICopIFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKLSAgICAgICAgc3dpdGNoIChzLT5zdGF0ZSkgeworICAgICAgICBzID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHMpID09IC0xKSB7CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiY291bGQgbm90IHJlYWR5IHN0cmluZyIpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgcmVhZHkgc3RyaW5nXG4iKTsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChzKSkgewogICAgICAgICBjYXNlIFNTVEFURV9OT1RfSU5URVJORUQ6CiAgICAgICAgICAgICAvKiBYWFggU2hvdWxkbid0IGhhcHBlbiAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMOgogICAgICAgICAgICAgUHlfUkVGQ05UKHMpICs9IDE7Ci0gICAgICAgICAgICBpbW1vcnRhbF9zaXplICs9IHMtPmxlbmd0aDsKKyAgICAgICAgICAgIGltbW9ydGFsX3NpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU1RBVEVfSU5URVJORURfTU9SVEFMOgogICAgICAgICAgICAgUHlfUkVGQ05UKHMpICs9IDI7Ci0gICAgICAgICAgICBtb3J0YWxfc2l6ZSArPSBzLT5sZW5ndGg7CisgICAgICAgICAgICBtb3J0YWxfc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW5jb25zaXN0ZW50IGludGVybmVkIHN0cmluZyBzdGF0ZS4iKTsKICAgICAgICAgfQotICAgICAgICBzLT5zdGF0ZSA9IFNTVEFURV9OT1RfSU5URVJORUQ7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUocykuaW50ZXJuZWQgPSBTU1RBVEVfTk9UX0lOVEVSTkVEOwogICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgInRvdGFsIHNpemUgb2YgYWxsIGludGVybmVkIHN0cmluZ3M6ICIKICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkLyUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgIgpAQCAtMTAyNjAsNyArMTQzNTQsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeV9zc2l6ZV90IGl0X2luZGV4OwotICAgIFB5VW5pY29kZU9iamVjdCAqaXRfc2VxOyAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICppdF9zZXE7ICAgIC8qIFNldCB0byBOVUxMIHdoZW4gaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IHVuaWNvZGVpdGVyb2JqZWN0OwogCiBzdGF0aWMgdm9pZApAQCAtMTAyODEsMTggKzE0Mzc1LDE5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZWl0ZXJfbmV4dCh1bmljb2RlaXRlcm9iamVjdCAqaXQpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzZXE7Ci0gICAgUHlPYmplY3QgKml0ZW07CisgICAgUHlPYmplY3QgKnNlcSwgKml0ZW07CiAKICAgICBhc3NlcnQoaXQgIT0gTlVMTCk7CiAgICAgc2VxID0gaXQtPml0X3NlcTsKICAgICBpZiAoc2VxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc2VxKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0soc2VxKSk7CiAKLSAgICBpZiAoaXQtPml0X2luZGV4IDwgUHlVbmljb2RlX0dFVF9TSVpFKHNlcSkpIHsKLSAgICAgICAgaXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcSkraXQtPml0X2luZGV4LCAxKTsKKyAgICBpZiAoaXQtPml0X2luZGV4IDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VxKSkgeworICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlcSk7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZXEpOworICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGl0LT5pdF9pbmRleCk7CisgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2hyKTsKICAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkKICAgICAgICAgICAgICsraXQtPml0X2luZGV4OwogICAgICAgICByZXR1cm4gaXRlbTsKQEAgLTEwMzA4LDE1ICsxNDQwMyw0OSBAQAogewogICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICBpZiAoaXQtPml0X3NlcSkKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0LT5pdF9zZXEpIC0gaXQtPml0X2luZGV4OworICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdC0+aXRfc2VxKSAtIGl0LT5pdF9pbmRleDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7CiB9CiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVpdGVyX3JlZHVjZSh1bmljb2RlaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp1ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgdSk7CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlaXRlcl9zZXRzdGF0ZSh1bmljb2RlaXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHVuaWNvZGVpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbil1bmljb2RlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwMzYyLDE2ICsxNDQ5MSwxOSBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VxKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXQgPSBQeU9iamVjdF9HQ19OZXcodW5pY29kZWl0ZXJvYmplY3QsICZQeVVuaWNvZGVJdGVyX1R5cGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdC0+aXRfaW5kZXggPSAwOwogICAgIFB5X0lOQ1JFRihzZXEpOwotICAgIGl0LT5pdF9zZXEgPSAoUHlVbmljb2RlT2JqZWN0ICopc2VxOworICAgIGl0LT5pdF9zZXEgPSBzZXE7CiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CiAKKwogc2l6ZV90CiBQeV9VTklDT0RFX3N0cmxlbihjb25zdCBQeV9VTklDT0RFICp1KQogewpAQCAtMTA0NjMsMjUgKzE0NTk1LDMxIEBACiB9CiAKIFB5X1VOSUNPREUqCi1QeVVuaWNvZGVfQXNVbmljb2RlQ29weShQeU9iamVjdCAqb2JqZWN0KQorUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlID0gKFB5VW5pY29kZU9iamVjdCAqKW9iamVjdDsKLSAgICBQeV9VTklDT0RFICpjb3B5OwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9VTklDT0RFICp1LCAqY29weTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgc2l6ZTsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB1ID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJmxlbik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSkgPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CisgICAgaWYgKGxlbiA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSkgKyAxOyAvKiBjb3B5IHRoZSBudWwgY2hhcmFjdGVyICovCisgICAgc2l6ZSA9IGxlbiArIDE7IC8qIGNvcHkgdGhlIG51bGwgY2hhcmFjdGVyICovCiAgICAgc2l6ZSAqPSBzaXplb2YoUHlfVU5JQ09ERSk7CiAgICAgY29weSA9IFB5TWVtX01hbGxvYyhzaXplKTsKICAgICBpZiAoY29weSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1jcHkoY29weSwgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksIHNpemUpOworICAgIG1lbWNweShjb3B5LCB1LCBzaXplKTsKICAgICByZXR1cm4gY29weTsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDg4YTc5MTIuLjQ2YTkyYmIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTgsMTg0ICs4LDk5MiBAQAogICAgIHswLCAwLCAwLCAwLCAwLCA0OH0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEwNTZ9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDI0fSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDEsIDEsIDU2Mzh9LAotICAgIHswLCAwLCAwLCAyLCAyLCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgMywgMywgNTYzOH0sCi0gICAgezAsIDAsIDAsIDQsIDQsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA1LCA1LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgNiwgNiwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDcsIDcsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA4LCA4LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgOSwgOSwgNTYzOH0sCi0gICAgezAsIDMyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTUzNn0sCi0gICAgezY1NTA0LCAwLCA2NTUwNCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAyLCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgMywgNTEyNH0sCi0gICAgezc0MywgMCwgNzQzLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMSwgNTEyNH0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDUxMjB9LAotICAgIHsxMjEsIDAsIDEyMSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTUzNSwgMCwgNjU1MzUsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTMzNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1MzA0LCAwLCA2NTMwNCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDE1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjUyMzYsIDAsIDY1MjM2LCAwLCAwLCAxODAxfSwKLSAgICB7MTk1LCAwLCAxOTUsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDUsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA3OSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwMiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwMywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezk3LCAwLCA5NywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIxMSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezE2MywgMCwgMTYzLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjEzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTMwLCAwLCAxMzAsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMTgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMTcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMTksIDAsIDAsIDAsIDE5MjF9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgMSwgMSwgMzU5MH0sCisgICAgezAsIDAsIDAsIDIsIDIsIDM1OTB9LAorICAgIHswLCAwLCAwLCAzLCAzLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNCwgNCwgMzU5MH0sCisgICAgezAsIDAsIDAsIDUsIDUsIDM1OTB9LAorICAgIHswLCAwLCAwLCA2LCA2LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNywgNywgMzU5MH0sCisgICAgezAsIDAsIDAsIDgsIDgsIDM1OTB9LAorICAgIHswLCAwLCAwLCA5LCA5LCAzNTkwfSwKKyAgICB7MCwgMzIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTUzNn0sCisgICAgey0zMiwgMCwgLTMyLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDQwOTZ9LAorICAgIHswLCAwLCAwLCAwLCAyLCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgMywgMzA3Nn0sCisgICAgezE2Nzc3MjE4LCAxNzgyNTc5MiwgMTY3NzcyMTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTYzMn0sCisgICAgezAsIDAsIDAsIDAsIDEsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzMDcyfSwKKyAgICB7MzM1NTQ0MzgsIDE4ODc0MzcxLCAzMzU1NDQ0MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxMjEsIDAsIDEyMSwgMCwgMCwgOTk5M30sCisgICAgezAsIDEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTEsIDAsIC0xLCAwLCAwLCA5OTkzfSwKKyAgICB7MTY3NzcyMjgsIDMzNTU0NDQyLCAxNjc3NzIyOCwgMCwgMCwgMjY0OTd9LAorICAgIHstMjMyLCAwLCAtMjMyLCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ0NDgsIDE4ODc0MzgxLCAzMzU1NDQ0OCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtMTIxLCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjM2LCAxNzgyNTgxMCwgMTY3NzcyMzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTk1LCAwLCAxOTUsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyMTAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjA2LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA3OSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjAzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHs5NywgMCwgOTcsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyMTEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjA5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2MywgMCwgMTYzLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjEzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezEzMCwgMCwgMTMwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjE0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIxOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMTcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjE5LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDE3OTN9LAotICAgIHs1NiwgMCwgNTYsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyLCAxLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MzUsIDEsIDAsIDAsIDAsIDE4NTd9LAotICAgIHs2NTUzNCwgMCwgNjU1MzUsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ1NywgMCwgNjU0NTcsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQzOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDgwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MDYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAxMDc5NSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1MzczLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMTA3OTIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxMDgxNSwgMCwgMTA4MTUsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTM0MSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNzEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxMDc4MywgMCwgMTA3ODMsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc4MCwgMCwgMTA3ODAsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc4MiwgMCwgMTA3ODIsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyNiwgMCwgNjUzMjYsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzMCwgMCwgNjUzMzAsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzMSwgMCwgNjUzMzEsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzNCwgMCwgNjUzMzQsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzMywgMCwgNjUzMzMsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyOSwgMCwgNjUzMjksIDAsIDAsIDE4MDF9LAotICAgIHs0Mjg5MywgNjEzLCA0Mjg5MywgMCwgMCwgMzg0OX0sCi0gICAgezY1MzI3LCAwLCA2NTMyNywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzI1LCAwLCA2NTMyNSwgMCwgMCwgMTgwMX0sCi0gICAgezEwNzQzLCAwLCAxMDc0MywgMCwgMCwgMTgwMX0sCi0gICAgezEwNzQ5LCAwLCAxMDc0OSwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzIzLCAwLCA2NTMyMywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzIyLCAwLCA2NTMyMiwgMCwgMCwgMTgwMX0sCi0gICAgezEwNzI3LCAwLCAxMDcyNywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzE4LCAwLCA2NTMxOCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDY3LCAwLCA2NTQ2NywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzE5LCAwLCA2NTMxOSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDY1LCAwLCA2NTQ2NSwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzE3LCAwLCA2NTMxNywgMCwgMCwgMTgwMX0sCi0gICAgezg0LCAwLCA4NCwgMCwgMCwgMTUzNn0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAotICAgIHswLCAzOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDM3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDk4LCAwLCA2NTQ5OCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDk5LCAwLCA2NTQ5OSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NTA1LCAwLCA2NTUwNSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDcyLCAwLCA2NTQ3MiwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDczLCAwLCA2NTQ3MywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ3NCwgMCwgNjU0NzQsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3OSwgMCwgNjU0NzksIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0ODksIDAsIDY1NDg5LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0ODIsIDAsIDY1NDgyLCAwLCAwLCAxODAxfSwKLSAgICB7NjU1MjgsIDAsIDY1NTI4LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NTAsIDAsIDY1NDUwLCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NTYsIDAsIDY1NDU2LCAwLCAwLCAxODAxfSwKLSAgICB7NywgMCwgNywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDc2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0NDAsIDAsIDY1NDQwLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU1MjksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA4MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDE1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MjEsIDAsIDY1NTIxLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNDgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ4OCwgMCwgNjU0ODgsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxNTM3fSwKLSAgICB7MCwgNzI2NCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDAsIDAsIDAsIDEsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCAyLCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgMywgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDQsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA1LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgNiwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDcsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA4LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgOSwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDU4ODh9LAotICAgIHs0Mjg3NywgNzU0NSwgNDI4NzcsIDAsIDAsIDM4NDl9LAotICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NzcsIDAsIDY1NDc3LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNTc5MjEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs4LCAwLCA4LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU1MjgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs3NCwgMCwgNzQsIDAsIDAsIDE4MDF9LAotICAgIHs4NiwgMCwgODYsIDAsIDAsIDE4MDF9LAotICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgMTgwMX0sCi0gICAgezEyOCwgMCwgMTI4LCAwLCAwLCAxODAxfSwKLSAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDE4MDF9LAotICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NTI4LCAwLCAwLCAwLCAxODU3fSwKLSAgICB7OSwgMCwgOSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDYyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU1MjcsIDAsIDAsIDAsIDE4NTd9LAotICAgIHs1ODMzMSwgMCwgNTgzMzEsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQ1MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDM2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MjQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQwOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDEwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDQsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA1LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgNiwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDcsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA4LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgOSwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE3OTJ9LAotICAgIHswLCA1ODAxOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU3MTUzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTcyNzQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTA4LCAwLCA2NTUwOCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDE2LCAwLCAwLCAwLCA1ODg4fSwKLSAgICB7NjU1MjAsIDAsIDY1NTIwLCAwLCAwLCA1ODg4fSwKLSAgICB7MCwgMjYsIDAsIDAsIDAsIDEwMjR9LAotICAgIHs2NTUxMCwgMCwgNjU1MTAsIDAsIDAsIDEwMjR9LAotICAgIHswLCA1NDc5MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDYxNzIyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ4MDksIDAsIDAsIDAsIDE5MjF9LAotICAgIHs1NDc0MSwgMCwgNTQ3NDEsIDAsIDAsIDE4MDF9LAotICAgIHs1NDc0NCwgMCwgNTQ3NDQsIDAsIDAsIDE4MDF9LAotICAgIHswLCA1NDc1NiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0Nzg3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ3NTMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDc1NCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0NzIxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NTgyNzIsIDAsIDU4MjcyLCAwLCAwLCAxODAxfSwKKyAgICB7NTYsIDAsIDU2LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMiwgMSwgMCwgMCwgMTAxMTN9LAorICAgIHstMSwgMSwgMCwgMCwgMCwgMTAwNDl9LAorICAgIHstMiwgMCwgLTEsIDAsIDAsIDk5OTN9LAorICAgIHstNzksIDAsIC03OSwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NDU2LCAxODg3NDM4OSwgMzM1NTQ0NTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTk3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC01NiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTMwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDEwNzk1LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xNjMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMTA3OTIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTA4MTUsIDAsIDEwODE1LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTE5NSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA2OSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA3MSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxMDc4MywgMCwgMTA3ODMsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc4MCwgMCwgMTA3ODAsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc4MiwgMCwgMTA3ODIsIDAsIDAsIDk5OTN9LAorICAgIHstMjEwLCAwLCAtMjEwLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwNiwgMCwgLTIwNiwgMCwgMCwgOTk5M30sCisgICAgey0yMDUsIDAsIC0yMDUsIDAsIDAsIDk5OTN9LAorICAgIHstMjAyLCAwLCAtMjAyLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwMywgMCwgLTIwMywgMCwgMCwgOTk5M30sCisgICAgey0yMDcsIDAsIC0yMDcsIDAsIDAsIDk5OTN9LAorICAgIHs0MjI4MCwgMCwgNDIyODAsIDAsIDAsIDk5OTN9LAorICAgIHs0MjMwOCwgMCwgNDIzMDgsIDAsIDAsIDk5OTN9LAorICAgIHstMjA5LCAwLCAtMjA5LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxMSwgMCwgLTIxMSwgMCwgMCwgOTk5M30sCisgICAgezEwNzQzLCAwLCAxMDc0MywgMCwgMCwgOTk5M30sCisgICAgezEwNzQ5LCAwLCAxMDc0OSwgMCwgMCwgOTk5M30sCisgICAgey0yMTMsIDAsIC0yMTMsIDAsIDAsIDk5OTN9LAorICAgIHstMjE0LCAwLCAtMjE0LCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3MjcsIDAsIDEwNzI3LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxOCwgMCwgLTIxOCwgMCwgMCwgOTk5M30sCisgICAgey02OSwgMCwgLTY5LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxNywgMCwgLTIxNywgMCwgMCwgOTk5M30sCisgICAgey03MSwgMCwgLTcxLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxOSwgMCwgLTIxOSwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDE0MDg5fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgNTg4OX0sCi0gICAgezQyODc3LCA3NTQ1LCA0Mjg3NywgMCwgMCwgMzk2OX0sCi0gICAgezQyODkzLCA2MTMsIDQyODkzLCAwLCAwLCAzOTY5fSwKLSAgICB7MCwgNDAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ5NiwgMCwgNjU0OTYsIDAsIDAsIDE4MDF9LAorICAgIHsxNjc3NzI0NCwgMTc4MjU4MTgsIDE2Nzc3MjQ0LCAwLCAwLCAzMDIxNn0sCisgICAgezAsIDAsIDAsIDAsIDAsIDEzMzIxfSwKKyAgICB7MCwgMzgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMzcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNjQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNjMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7NTAzMzE2ODEsIDE5OTIyOTczLCA1MDMzMTY4MSwgMCwgMCwgMjYzNzd9LAorICAgIHstMzgsIDAsIC0zOCwgMCwgMCwgOTk5M30sCisgICAgey0zNywgMCwgLTM3LCAwLCAwLCA5OTkzfSwKKyAgICB7NTAzMzE2ODgsIDE5OTIyOTgwLCA1MDMzMTY4OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzI2MSwgMTc4MjU4MzUsIDE2Nzc3MjYxLCAwLCAwLCAyNjM3N30sCisgICAgey02NCwgMCwgLTY0LCAwLCAwLCA5OTkzfSwKKyAgICB7LTYzLCAwLCAtNjMsIDAsIDAsIDk5OTN9LAorICAgIHswLCA4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjY0LCAxNzgyNTgzOCwgMTY3NzcyNjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNjcsIDE3ODI1ODQxLCAxNjc3NzI2NywgMCwgMCwgMjYzNzd9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjcwLCAxNzgyNTg0NCwgMTY3NzcyNzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNzMsIDE3ODI1ODQ3LCAxNjc3NzI3MywgMCwgMCwgMjYzNzd9LAorICAgIHstOCwgMCwgLTgsIDAsIDAsIDk5OTN9LAorICAgIHsxNjc3NzI3NiwgMTc4MjU4NTAsIDE2Nzc3Mjc2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3Mjc5LCAxNzgyNTg1MywgMTY3NzcyNzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NywgMCwgNywgMCwgMCwgOTk5M30sCisgICAgezAsIC02MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzI4MiwgMTc4MjU4NTYsIDE2Nzc3MjgyLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC03LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDgwLCAwLCAwLCAwLCAxMDExM30sCisgICAgey04MCwgMCwgLTgwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTE1LCAwLCAtMTUsIDAsIDAsIDk5OTN9LAorICAgIHswLCA0OCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstNDgsIDAsIC00OCwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NTAyLCAxODg3NDQzNSwgMzM1NTQ1MDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTUzN30sCisgICAgezAsIDcyNjQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMCwgMCwgMCwgMSwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDIsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCAzLCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNCwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDUsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA2LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNywgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDgsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA5LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MH0sCisgICAgezM1MzMyLCAwLCAzNTMzMiwgMCwgMCwgOTk5M30sCisgICAgezM4MTQsIDAsIDM4MTQsIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDUwOSwgMTg4NzQ0NDIsIDMzNTU0NTA5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTE0LCAxODg3NDQ0NywgMzM1NTQ1MTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1MTksIDE4ODc0NDUyLCAzMzU1NDUxOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUyNCwgMTg4NzQ0NTcsIDMzNTU0NTI0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTI5LCAxODg3NDQ2MiwgMzM1NTQ1MjksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzczMTcsIDE3ODI1ODkxLCAxNjc3NzMxNywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzMyMSwgMTg4NzQ0NzAsIDE2Nzc3MzIxLCAwLCAwLCAyNjQ5N30sCisgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDU0MSwgMTg4NzQ0NzQsIDMzNTU0NTQxLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMxNzYzLCAxOTkyMzA1NSwgNTAzMzE3NjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzE3NzAsIDE5OTIzMDYyLCA1MDMzMTc3MCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMTc3NywgMTk5MjMwNjksIDUwMzMxNzc3LCAwLCAwLCAyNjM3N30sCisgICAgezc0LCAwLCA3NCwgMCwgMCwgOTk5M30sCisgICAgezg2LCAwLCA4NiwgMCwgMCwgOTk5M30sCisgICAgezEwMCwgMCwgMTAwLCAwLCAwLCA5OTkzfSwKKyAgICB7MTI4LCAwLCAxMjgsIDAsIDAsIDk5OTN9LAorICAgIHsxMTIsIDAsIDExMiwgMCwgMCwgOTk5M30sCisgICAgezEyNiwgMCwgMTI2LCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ1NjcsIDE4ODc0NTAwLCAxNjc3NzM1MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU3MywgMTg4NzQ1MDYsIDE2Nzc3MzU5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTc5LCAxODg3NDUxMiwgMTY3NzczNjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1ODUsIDE4ODc0NTE4LCAxNjc3NzM3MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU5MSwgMTg4NzQ1MjQsIDE2Nzc3Mzc3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTk3LCAxODg3NDUzMCwgMTY3NzczODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2MDMsIDE4ODc0NTM2LCAxNjc3NzM4OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDYwOSwgMTg4NzQ1NDIsIDE2Nzc3Mzk1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjE1LCAxODg3NDU0OCwgMTY3Nzc0MDEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MjEsIDE4ODc0NTU0LCAxNjc3NzQwNywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDYyNywgMTg4NzQ1NjAsIDE2Nzc3NDEzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjMzLCAxODg3NDU2NiwgMTY3Nzc0MTksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MzksIDE4ODc0NTcyLCAxNjc3NzQyNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY0NSwgMTg4NzQ1NzgsIDE2Nzc3NDMxLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjUxLCAxODg3NDU4NCwgMTY3Nzc0MzcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NTcsIDE4ODc0NTkwLCAxNjc3NzQ0MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY2MywgMTg4NzQ1OTYsIDE2Nzc3NDQ5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjY5LCAxODg3NDYwMiwgMTY3Nzc0NTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2NzUsIDE4ODc0NjA4LCAxNjc3NzQ2MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY4MSwgMTg4NzQ2MTQsIDE2Nzc3NDY3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Njg3LCAxODg3NDYyMCwgMTY3Nzc0NzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2OTMsIDE4ODc0NjI2LCAxNjc3NzQ3OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY5OSwgMTg4NzQ2MzIsIDE2Nzc3NDg1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzA1LCAxODg3NDYzOCwgMTY3Nzc0OTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3MTEsIDE4ODc0NjQ0LCAxNjc3NzQ5NywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDcxNywgMTg4NzQ2NTAsIDE2Nzc3NTAzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzIzLCAxODg3NDY1NiwgMTY3Nzc1MDksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MjksIDE4ODc0NjYyLCAxNjc3NzUxNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDczNSwgMTg4NzQ2NjgsIDE2Nzc3NTIxLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzQxLCAxODg3NDY3NCwgMTY3Nzc1MjcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3NDcsIDE4ODc0NjgwLCAxNjc3NzUzMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc1MywgMTg4NzQ2ODYsIDE2Nzc3NTM5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzU5LCAxODg3NDY5MiwgMTY3Nzc1NDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3NjUsIDE4ODc0Njk4LCAxNjc3NzU1MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc3MSwgMTg4NzQ3MDQsIDE2Nzc3NTU3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Nzc3LCAxODg3NDcxMCwgMTY3Nzc1NjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3ODMsIDE4ODc0NzE2LCAxNjc3NzU2OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc4OSwgMTg4NzQ3MjIsIDE2Nzc3NTc1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMTY3Nzc1ODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MDEsIDE4ODc0NzM0LCAxNjc3NzU4NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgwNywgMTg4NzQ3NDAsIDE2Nzc3NTkzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODEzLCAxODg3NDc0NiwgMTY3Nzc1OTksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MTksIDE4ODc0NzUyLCAxNjc3NzYwNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgyNSwgMTg4NzQ3NTgsIDE2Nzc3NjExLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODMxLCAxODg3NDc2NCwgMTY3Nzc2MTcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MzcsIDE4ODc0NzcwLCAxNjc3NzYyMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDg0MywgMTg4NzQ3NzYsIDE2Nzc3NjI5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODQ5LCAxODg3NDc4MiwgMTY3Nzc2MzUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4NTUsIDE4ODc0Nzg4LCAzMzU1NDg1NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg2MiwgMTg4NzQ3OTUsIDE2Nzc3NjQ4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODY4LCAxODg3NDgwMSwgMzM1NTQ4NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzUsIDE4ODc0ODA4LCAzMzU1NDg3NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA5NywgMTk5MjMzODksIDUwMzMyMTAwLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDg5MCwgMTg4NzQ4MjMsIDE2Nzc3Njc2LCAwLCAwLCAyNjQzM30sCisgICAgezE2Nzc3Njc5LCAxNzgyNjI1MywgMTY3Nzc2NzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4OTksIDE4ODc0ODMyLCAzMzU1NDkwMSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMzM1NTQ5MTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTksIDE4ODc0ODUyLCAzMzU1NDkxOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE0MSwgMTk5MjM0MzMsIDUwMzMyMTQ0LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC04NiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDkzNCwgMTg4NzQ4NjcsIDE2Nzc3NzIwLCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyMTU3LCAxOTkyMzQ0OSwgNTAzMzIxNTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIxNjQsIDE5OTIzNDU2LCA1MDMzMjE2NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk1NCwgMTg4NzQ4ODcsIDMzNTU0OTU0LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTc2LCAxOTkyMzQ2OCwgNTAzMzIxNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHs1MDMzMjE4MywgMTk5MjM0NzUsIDUwMzMyMTgzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTkwLCAxOTkyMzQ4MiwgNTAzMzIxOTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODAsIDE4ODc0OTEzLCAzMzU1NDk4MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4NSwgMTg4NzQ5MTgsIDMzNTU0OTg1LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjA3LCAxOTkyMzQ5OSwgNTAzMzIyMDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTExMiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDk5NywgMTg4NzQ5MzAsIDMzNTU0OTk5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDA0LCAxODg3NDkzNywgMTY3Nzc3OTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTAsIDE4ODc0OTQzLCAzMzU1NTAxMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAxNywgMTg4NzQ5NTAsIDMzNTU1MDE3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjM5LCAxOTkyMzUzMSwgNTAzMzIyNDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTEyOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTI2LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU1MDMyLCAxODg3NDk2NSwgMTY3Nzc4MTgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDQsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA1LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgNiwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDcsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA4LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgOSwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDAsIDE3OTJ9LAorICAgIHswLCAtNzUxNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtODM4MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtODI2MiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMjgsIDAsIC0yOCwgMCwgMCwgOTk5M30sCisgICAgezAsIDE2LCAwLCAwLCAwLCAxMjE2MH0sCisgICAgey0xNiwgMCwgLTE2LCAwLCAwLCAxMjA0MH0sCisgICAgezAsIDI2LCAwLCAwLCAwLCA5MzQ0fSwKKyAgICB7LTI2LCAwLCAtMjYsIDAsIDAsIDkyMjR9LAorICAgIHswLCAtMTA3NDMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTM4MTQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzI3LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0xMDc5NSwgMCwgLTEwNzk1LCAwLCAwLCA5OTkzfSwKKyAgICB7LTEwNzkyLCAwLCAtMTA3OTIsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtMTA3ODAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzQ5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDc4MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA3ODIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwODE1LCAwLCAwLCAwLCAxMDExM30sCisgICAgey03MjY0LCAwLCAtNzI2NCwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDUxMjF9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzODQxfSwKKyAgICB7MCwgLTM1MzMyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjI4MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIzMDgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAzMzU1NTA0MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA0NSwgMTg4NzQ5NzgsIDMzNTU1MDQ3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDUyLCAxODg3NDk4NSwgMzM1NTUwNTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIyNzYsIDE5OTIzNTY4LCA1MDMzMjI3OSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjI4NiwgMTk5MjM1NzgsIDUwMzMyMjg5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDc5LCAxODg3NTAxMiwgMzM1NTUwODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAzMzU1NTA4OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5MywgMTg4NzUwMjYsIDMzNTU1MDk1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTAwLCAxODg3NTAzMywgMzM1NTUxMDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAzMzU1NTEwOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTExNCwgMTg4NzUwNDcsIDMzNTU1MTE2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTIxLCAxODg3NTA1NCwgMzM1NTUxMjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCisgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAorICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCit9OworCisvKiBleHRlbmRlZCBjYXNlIG1hcHBpbmdzICovCisKK2NvbnN0IFB5X1VDUzQgX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbXSA9IHsKKyAgICAxODEsCisgICAgOTU2LAorICAgIDkyNCwKKyAgICAyMjMsCisgICAgMTE1LAorICAgIDExNSwKKyAgICA4MywKKyAgICA4MywKKyAgICA4MywKKyAgICAxMTUsCisgICAgMTA1LAorICAgIDc3NSwKKyAgICAzMDQsCisgICAgMzI5LAorICAgIDcwMCwKKyAgICAxMTAsCisgICAgNzAwLAorICAgIDc4LAorICAgIDM4MywKKyAgICAxMTUsCisgICAgODMsCisgICAgNDk2LAorICAgIDEwNiwKKyAgICA3ODAsCisgICAgNzQsCisgICAgNzgwLAorICAgIDgzNywKKyAgICA5NTMsCisgICAgOTIxLAorICAgIDkxMiwKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5NDQsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTYyLAorICAgIDk2MywKKyAgICA5MzEsCisgICAgOTc2LAorICAgIDk0NiwKKyAgICA5MTQsCisgICAgOTc3LAorICAgIDk1MiwKKyAgICA5MjAsCisgICAgOTgxLAorICAgIDk2NiwKKyAgICA5MzQsCisgICAgOTgyLAorICAgIDk2MCwKKyAgICA5MjgsCisgICAgMTAwOCwKKyAgICA5NTQsCisgICAgOTIyLAorICAgIDEwMDksCisgICAgOTYxLAorICAgIDkyOSwKKyAgICAxMDEzLAorICAgIDk0OSwKKyAgICA5MTcsCisgICAgMTQxNSwKKyAgICAxMzgxLAorICAgIDE0MTAsCisgICAgMTMzMywKKyAgICAxMzYyLAorICAgIDEzMzMsCisgICAgMTQxMCwKKyAgICA3ODMwLAorICAgIDEwNCwKKyAgICA4MTcsCisgICAgNzIsCisgICAgODE3LAorICAgIDc4MzEsCisgICAgMTE2LAorICAgIDc3NiwKKyAgICA4NCwKKyAgICA3NzYsCisgICAgNzgzMiwKKyAgICAxMTksCisgICAgNzc4LAorICAgIDg3LAorICAgIDc3OCwKKyAgICA3ODMzLAorICAgIDEyMSwKKyAgICA3NzgsCisgICAgODksCisgICAgNzc4LAorICAgIDc4MzQsCisgICAgOTcsCisgICAgNzAyLAorICAgIDY1LAorICAgIDcwMiwKKyAgICA3ODM1LAorICAgIDc3NzcsCisgICAgNzc3NiwKKyAgICAyMjMsCisgICAgMTE1LAorICAgIDExNSwKKyAgICA3ODM4LAorICAgIDgwMTYsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDgwMTgsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA3NjgsCisgICAgOTMzLAorICAgIDc4NywKKyAgICA3NjgsCisgICAgODAyMCwKKyAgICA5NjUsCisgICAgNzg3LAorICAgIDc2OSwKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDc2OSwKKyAgICA4MDIyLAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgODM0LAorICAgIDkzMywKKyAgICA3ODcsCisgICAgODM0LAorICAgIDgwNjQsCisgICAgNzkzNiwKKyAgICA5NTMsCisgICAgNzk0NCwKKyAgICA5MjEsCisgICAgODA3MiwKKyAgICA4MDY1LAorICAgIDc5MzcsCisgICAgOTUzLAorICAgIDc5NDUsCisgICAgOTIxLAorICAgIDgwNzMsCisgICAgODA2NiwKKyAgICA3OTM4LAorICAgIDk1MywKKyAgICA3OTQ2LAorICAgIDkyMSwKKyAgICA4MDc0LAorICAgIDgwNjcsCisgICAgNzkzOSwKKyAgICA5NTMsCisgICAgNzk0NywKKyAgICA5MjEsCisgICAgODA3NSwKKyAgICA4MDY4LAorICAgIDc5NDAsCisgICAgOTUzLAorICAgIDc5NDgsCisgICAgOTIxLAorICAgIDgwNzYsCisgICAgODA2OSwKKyAgICA3OTQxLAorICAgIDk1MywKKyAgICA3OTQ5LAorICAgIDkyMSwKKyAgICA4MDc3LAorICAgIDgwNzAsCisgICAgNzk0MiwKKyAgICA5NTMsCisgICAgNzk1MCwKKyAgICA5MjEsCisgICAgODA3OCwKKyAgICA4MDcxLAorICAgIDc5NDMsCisgICAgOTUzLAorICAgIDc5NTEsCisgICAgOTIxLAorICAgIDgwNzksCisgICAgODA2NCwKKyAgICA3OTM2LAorICAgIDk1MywKKyAgICA3OTQ0LAorICAgIDkyMSwKKyAgICA4MDcyLAorICAgIDgwNjUsCisgICAgNzkzNywKKyAgICA5NTMsCisgICAgNzk0NSwKKyAgICA5MjEsCisgICAgODA3MywKKyAgICA4MDY2LAorICAgIDc5MzgsCisgICAgOTUzLAorICAgIDc5NDYsCisgICAgOTIxLAorICAgIDgwNzQsCisgICAgODA2NywKKyAgICA3OTM5LAorICAgIDk1MywKKyAgICA3OTQ3LAorICAgIDkyMSwKKyAgICA4MDc1LAorICAgIDgwNjgsCisgICAgNzk0MCwKKyAgICA5NTMsCisgICAgNzk0OCwKKyAgICA5MjEsCisgICAgODA3NiwKKyAgICA4MDY5LAorICAgIDc5NDEsCisgICAgOTUzLAorICAgIDc5NDksCisgICAgOTIxLAorICAgIDgwNzcsCisgICAgODA3MCwKKyAgICA3OTQyLAorICAgIDk1MywKKyAgICA3OTUwLAorICAgIDkyMSwKKyAgICA4MDc4LAorICAgIDgwNzEsCisgICAgNzk0MywKKyAgICA5NTMsCisgICAgNzk1MSwKKyAgICA5MjEsCisgICAgODA3OSwKKyAgICA4MDgwLAorICAgIDc5NjgsCisgICAgOTUzLAorICAgIDc5NzYsCisgICAgOTIxLAorICAgIDgwODgsCisgICAgODA4MSwKKyAgICA3OTY5LAorICAgIDk1MywKKyAgICA3OTc3LAorICAgIDkyMSwKKyAgICA4MDg5LAorICAgIDgwODIsCisgICAgNzk3MCwKKyAgICA5NTMsCisgICAgNzk3OCwKKyAgICA5MjEsCisgICAgODA5MCwKKyAgICA4MDgzLAorICAgIDc5NzEsCisgICAgOTUzLAorICAgIDc5NzksCisgICAgOTIxLAorICAgIDgwOTEsCisgICAgODA4NCwKKyAgICA3OTcyLAorICAgIDk1MywKKyAgICA3OTgwLAorICAgIDkyMSwKKyAgICA4MDkyLAorICAgIDgwODUsCisgICAgNzk3MywKKyAgICA5NTMsCisgICAgNzk4MSwKKyAgICA5MjEsCisgICAgODA5MywKKyAgICA4MDg2LAorICAgIDc5NzQsCisgICAgOTUzLAorICAgIDc5ODIsCisgICAgOTIxLAorICAgIDgwOTQsCisgICAgODA4NywKKyAgICA3OTc1LAorICAgIDk1MywKKyAgICA3OTgzLAorICAgIDkyMSwKKyAgICA4MDk1LAorICAgIDgwODAsCisgICAgNzk2OCwKKyAgICA5NTMsCisgICAgNzk3NiwKKyAgICA5MjEsCisgICAgODA4OCwKKyAgICA4MDgxLAorICAgIDc5NjksCisgICAgOTUzLAorICAgIDc5NzcsCisgICAgOTIxLAorICAgIDgwODksCisgICAgODA4MiwKKyAgICA3OTcwLAorICAgIDk1MywKKyAgICA3OTc4LAorICAgIDkyMSwKKyAgICA4MDkwLAorICAgIDgwODMsCisgICAgNzk3MSwKKyAgICA5NTMsCisgICAgNzk3OSwKKyAgICA5MjEsCisgICAgODA5MSwKKyAgICA4MDg0LAorICAgIDc5NzIsCisgICAgOTUzLAorICAgIDc5ODAsCisgICAgOTIxLAorICAgIDgwOTIsCisgICAgODA4NSwKKyAgICA3OTczLAorICAgIDk1MywKKyAgICA3OTgxLAorICAgIDkyMSwKKyAgICA4MDkzLAorICAgIDgwODYsCisgICAgNzk3NCwKKyAgICA5NTMsCisgICAgNzk4MiwKKyAgICA5MjEsCisgICAgODA5NCwKKyAgICA4MDg3LAorICAgIDc5NzUsCisgICAgOTUzLAorICAgIDc5ODMsCisgICAgOTIxLAorICAgIDgwOTUsCisgICAgODA5NiwKKyAgICA4MDMyLAorICAgIDk1MywKKyAgICA4MDQwLAorICAgIDkyMSwKKyAgICA4MTA0LAorICAgIDgwOTcsCisgICAgODAzMywKKyAgICA5NTMsCisgICAgODA0MSwKKyAgICA5MjEsCisgICAgODEwNSwKKyAgICA4MDk4LAorICAgIDgwMzQsCisgICAgOTUzLAorICAgIDgwNDIsCisgICAgOTIxLAorICAgIDgxMDYsCisgICAgODA5OSwKKyAgICA4MDM1LAorICAgIDk1MywKKyAgICA4MDQzLAorICAgIDkyMSwKKyAgICA4MTA3LAorICAgIDgxMDAsCisgICAgODAzNiwKKyAgICA5NTMsCisgICAgODA0NCwKKyAgICA5MjEsCisgICAgODEwOCwKKyAgICA4MTAxLAorICAgIDgwMzcsCisgICAgOTUzLAorICAgIDgwNDUsCisgICAgOTIxLAorICAgIDgxMDksCisgICAgODEwMiwKKyAgICA4MDM4LAorICAgIDk1MywKKyAgICA4MDQ2LAorICAgIDkyMSwKKyAgICA4MTEwLAorICAgIDgxMDMsCisgICAgODAzOSwKKyAgICA5NTMsCisgICAgODA0NywKKyAgICA5MjEsCisgICAgODExMSwKKyAgICA4MDk2LAorICAgIDgwMzIsCisgICAgOTUzLAorICAgIDgwNDAsCisgICAgOTIxLAorICAgIDgxMDQsCisgICAgODA5NywKKyAgICA4MDMzLAorICAgIDk1MywKKyAgICA4MDQxLAorICAgIDkyMSwKKyAgICA4MTA1LAorICAgIDgwOTgsCisgICAgODAzNCwKKyAgICA5NTMsCisgICAgODA0MiwKKyAgICA5MjEsCisgICAgODEwNiwKKyAgICA4MDk5LAorICAgIDgwMzUsCisgICAgOTUzLAorICAgIDgwNDMsCisgICAgOTIxLAorICAgIDgxMDcsCisgICAgODEwMCwKKyAgICA4MDM2LAorICAgIDk1MywKKyAgICA4MDQ0LAorICAgIDkyMSwKKyAgICA4MTA4LAorICAgIDgxMDEsCisgICAgODAzNywKKyAgICA5NTMsCisgICAgODA0NSwKKyAgICA5MjEsCisgICAgODEwOSwKKyAgICA4MTAyLAorICAgIDgwMzgsCisgICAgOTUzLAorICAgIDgwNDYsCisgICAgOTIxLAorICAgIDgxMTAsCisgICAgODEwMywKKyAgICA4MDM5LAorICAgIDk1MywKKyAgICA4MDQ3LAorICAgIDkyMSwKKyAgICA4MTExLAorICAgIDgxMTQsCisgICAgODA0OCwKKyAgICA5NTMsCisgICAgODEyMiwKKyAgICA5MjEsCisgICAgODEyMiwKKyAgICA4MzcsCisgICAgODExNSwKKyAgICA5NDUsCisgICAgOTUzLAorICAgIDkxMywKKyAgICA5MjEsCisgICAgODEyNCwKKyAgICA4MTE2LAorICAgIDk0MCwKKyAgICA5NTMsCisgICAgOTAyLAorICAgIDkyMSwKKyAgICA5MDIsCisgICAgODM3LAorICAgIDgxMTgsCisgICAgOTQ1LAorICAgIDgzNCwKKyAgICA5MTMsCisgICAgODM0LAorICAgIDgxMTksCisgICAgOTQ1LAorICAgIDgzNCwKKyAgICA5NTMsCisgICAgOTEzLAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgOTEzLAorICAgIDgzNCwKKyAgICA4MzcsCisgICAgODExNSwKKyAgICA5NDUsCisgICAgOTUzLAorICAgIDkxMywKKyAgICA5MjEsCisgICAgODEyNCwKKyAgICA4MTI2LAorICAgIDk1MywKKyAgICA5MjEsCisgICAgODEzMCwKKyAgICA4MDUyLAorICAgIDk1MywKKyAgICA4MTM4LAorICAgIDkyMSwKKyAgICA4MTM4LAorICAgIDgzNywKKyAgICA4MTMxLAorICAgIDk1MSwKKyAgICA5NTMsCisgICAgOTE5LAorICAgIDkyMSwKKyAgICA4MTQwLAorICAgIDgxMzIsCisgICAgOTQyLAorICAgIDk1MywKKyAgICA5MDUsCisgICAgOTIxLAorICAgIDkwNSwKKyAgICA4MzcsCisgICAgODEzNCwKKyAgICA5NTEsCisgICAgODM0LAorICAgIDkxOSwKKyAgICA4MzQsCisgICAgODEzNSwKKyAgICA5NTEsCisgICAgODM0LAorICAgIDk1MywKKyAgICA5MTksCisgICAgODM0LAorICAgIDkyMSwKKyAgICA5MTksCisgICAgODM0LAorICAgIDgzNywKKyAgICA4MTMxLAorICAgIDk1MSwKKyAgICA5NTMsCisgICAgOTE5LAorICAgIDkyMSwKKyAgICA4MTQwLAorICAgIDgxNDYsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgODE0NywKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA4MTUwLAorICAgIDk1MywKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDgzNCwKKyAgICA4MTUxLAorICAgIDk1MywKKyAgICA3NzYsCisgICAgODM0LAorICAgIDkyMSwKKyAgICA3NzYsCisgICAgODM0LAorICAgIDgxNjIsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgODE2MywKKyAgICA5NjUsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MzMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA4MTY0LAorICAgIDk2MSwKKyAgICA3ODcsCisgICAgOTI5LAorICAgIDc4NywKKyAgICA4MTY2LAorICAgIDk2NSwKKyAgICA4MzQsCisgICAgOTMzLAorICAgIDgzNCwKKyAgICA4MTY3LAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgODM0LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgODM0LAorICAgIDgxNzgsCisgICAgODA2MCwKKyAgICA5NTMsCisgICAgODE4NiwKKyAgICA5MjEsCisgICAgODE4NiwKKyAgICA4MzcsCisgICAgODE3OSwKKyAgICA5NjksCisgICAgOTUzLAorICAgIDkzNywKKyAgICA5MjEsCisgICAgODE4OCwKKyAgICA4MTgwLAorICAgIDk3NCwKKyAgICA5NTMsCisgICAgOTExLAorICAgIDkyMSwKKyAgICA5MTEsCisgICAgODM3LAorICAgIDgxODIsCisgICAgOTY5LAorICAgIDgzNCwKKyAgICA5MzcsCisgICAgODM0LAorICAgIDgxODMsCisgICAgOTY5LAorICAgIDgzNCwKKyAgICA5NTMsCisgICAgOTM3LAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgOTM3LAorICAgIDgzNCwKKyAgICA4MzcsCisgICAgODE3OSwKKyAgICA5NjksCisgICAgOTUzLAorICAgIDkzNywKKyAgICA5MjEsCisgICAgODE4OCwKKyAgICA2NDI1NiwKKyAgICAxMDIsCisgICAgMTAyLAorICAgIDcwLAorICAgIDcwLAorICAgIDcwLAorICAgIDEwMiwKKyAgICA2NDI1NywKKyAgICAxMDIsCisgICAgMTA1LAorICAgIDcwLAorICAgIDczLAorICAgIDcwLAorICAgIDEwNSwKKyAgICA2NDI1OCwKKyAgICAxMDIsCisgICAgMTA4LAorICAgIDcwLAorICAgIDc2LAorICAgIDcwLAorICAgIDEwOCwKKyAgICA2NDI1OSwKKyAgICAxMDIsCisgICAgMTAyLAorICAgIDEwNSwKKyAgICA3MCwKKyAgICA3MCwKKyAgICA3MywKKyAgICA3MCwKKyAgICAxMDIsCisgICAgMTA1LAorICAgIDY0MjYwLAorICAgIDEwMiwKKyAgICAxMDIsCisgICAgMTA4LAorICAgIDcwLAorICAgIDcwLAorICAgIDc2LAorICAgIDcwLAorICAgIDEwMiwKKyAgICAxMDgsCisgICAgNjQyNjEsCisgICAgMTE1LAorICAgIDExNiwKKyAgICA4MywKKyAgICA4NCwKKyAgICA4MywKKyAgICAxMTYsCisgICAgNjQyNjIsCisgICAgMTE1LAorICAgIDExNiwKKyAgICA4MywKKyAgICA4NCwKKyAgICA4MywKKyAgICAxMTYsCisgICAgNjQyNzUsCisgICAgMTM5NiwKKyAgICAxMzk4LAorICAgIDEzNDgsCisgICAgMTM1MCwKKyAgICAxMzQ4LAorICAgIDEzOTgsCisgICAgNjQyNzYsCisgICAgMTM5NiwKKyAgICAxMzgxLAorICAgIDEzNDgsCisgICAgMTMzMywKKyAgICAxMzQ4LAorICAgIDEzODEsCisgICAgNjQyNzcsCisgICAgMTM5NiwKKyAgICAxMzg3LAorICAgIDEzNDgsCisgICAgMTMzOSwKKyAgICAxMzQ4LAorICAgIDEzODcsCisgICAgNjQyNzgsCisgICAgMTQwNiwKKyAgICAxMzk4LAorICAgIDEzNTgsCisgICAgMTM1MCwKKyAgICAxMzU4LAorICAgIDEzOTgsCisgICAgNjQyNzksCisgICAgMTM5NiwKKyAgICAxMzg5LAorICAgIDEzNDgsCisgICAgMTM0MSwKKyAgICAxMzQ4LAorICAgIDEzODksCiB9OwogCiAvKiB0eXBlIGluZGV4ZXMgKi8KQEAgLTE5NSw3MiArMTAwMyw3MiBAQAogICAgIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzQsIDM1LCAzNiwgMzcsIAogICAgIDM4LCAzOSwgMzQsIDM0LCAzNCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIAogICAgIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY0LCA2NCwgNjUsIDY2LCA2NywgNjQsIAotICAgIDY0LCA2NCwgNjQsIDY4LCA2OSwgNjQsIDY0LCA2NCwgNjQsIDY0LCA2NCwgNzAsIDE3LCA3MSwgNzIsIDczLCA3NCwgNzUsIAotICAgIDc2LCA2NCwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDY0LCA2NCwgODQsIDg1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCA4NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDY0LCA2NCwgNjQsIDY4LCA2OSwgNjQsIDY0LCA2NCwgNjQsIDY0LCA2NCwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIAorICAgIDc3LCA2NCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDY0LCA2NCwgODUsIDg2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCA4NywgMzQsIDM0LCAzNCwgMzQsIDM0LCA4OCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODgsIDg5LCA5MCwgOTEsIDM0LCAzNCwgMzQsIDkyLCAzNCwgMzQsIAotICAgIDM0LCA5MywgOTQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTUsIDM0LCAzNCwgMzQsIDk2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTcsIDk4LCA5OSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTAwLCAxMDEsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTAyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDEwMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAxMDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMTAzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDYsIDEwNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDgsIDEwOSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMTAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDExMSwgMzQsIDM0LCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAKLSAgICAxMjEsIDEyMiwgMTIzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODksIDkwLCA5MSwgOTIsIDM0LCAzNCwgMzQsIDkzLCAzNCwgMzQsIAorICAgIDM0LCA5NCwgOTUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTYsIDM0LCAzNCwgMzQsIDk3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTgsIDk5LCAxMDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMSwgMTAyLCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAxMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA1LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMTAxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDEwNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA3LCAxMDgsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA5LCAxMTAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTExLCAxMTIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMTEzLCAzNCwgMzQsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIAorICAgIDEyMywgMTI0LCAxMjUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDEyNCwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI2LCAxMjcsIDEyOCwgCi0gICAgMTI5LCAxMzAsIDEzMSwgMTMyLCAzNCwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAKLSAgICAxNywgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE0OCwgMTcsIDE0OSwgMTcsIAotICAgIDE1MCwgMTcsIDE1MSwgMTcsIDE1MiwgMTcsIDE3LCAxNywgMTUzLCAxNywgMTcsIDE3LCAxNTQsIDE1NSwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTU2LCAxNywgMTU3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTU4LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMzQsIDM0LCAzNCwgMzQsIDE1OSwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgNjQsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTcsIDE2NSwgMTcsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIAotICAgIDE3MiwgMTczLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNzQsIDE3NSwgMTc2LCAKLSAgICAxNzcsIDE3OCwgMTcsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCA2NSwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODcsIDE4OCwgMTg5LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NiwgMTkwLCAzNCwgMTkxLCAKLSAgICAxOTIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDEyNiwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgCisgICAgMTMxLCAxMzIsIDEzMywgMTM0LCAzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAKKyAgICA3MSwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE1MCwgNzEsIDE1MSwgMTUyLCAKKyAgICAxNTMsIDcxLCAxNTQsIDcxLCAxNTUsIDcxLCA3MSwgNzEsIDE1NiwgNzEsIDcxLCA3MSwgMTU3LCAxNTgsIDE1OSwgMTYwLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE2MiwgNzEsIAorICAgIDE2MywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE2NCwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAzNCwgMzQsIDM0LCAxNjUsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE2NiwgMTY3LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE2OCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNjQsIDE2OSwgMTcwLCAxNzEsIDE3MiwgNzEsIDE3MywgNzEsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAKKyAgICAxNzksIDE4MCwgMTgxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE4MiwgMTgzLCA3MSwgNzEsIDE4NCwgCisgICAgMTg1LCAxODYsIDE4NywgMTg4LCA3MSwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDY1LCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE5NywgMTk4LCAKKyAgICAxOTksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMDAsIAorICAgIDM0LCAyMDEsIDIwMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5MywgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDMsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA2LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKQEAgLTI2OCw4NjAgKzEwNzYsODYyIEBACiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDE5OCwgMzQsIDE5OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAxOTMsIDM0LCAzNCwgMTk5LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAyMDAsIDE3LCAyMDEsIDIwMiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMjAzLCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDIwMywgCisgICAgMzQsIDM0LCAzNCwgMzQsIDIwOCwgMzQsIDIwOSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAyMDMsIDM0LCAzNCwgMjA5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCAyMTAsIDcxLCAyMTEsIDIxMiwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMjEzLCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDIxMywgCiB9OwogCi1zdGF0aWMgdW5zaWduZWQgY2hhciBpbmRleDJbXSA9IHsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAzLCAzLCAzLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAzLCAzLCAzLCAyLCA0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDUsIDUsIDUsIDUsIDE3LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIAorICAgIDEsIDEsIDEsIDEsIDMsIDMsIDMsIDIsIDQsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDYsIDE4LCA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDUsIAogICAgIDUsIDUsIDEsIDEsIDEsIDEsIDEsIDEsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE5LCA1LCA1LCAKLSAgICAxLCA1LCA1LCA1LCA1LCAyMCwgMjEsIDUsIDIyLCA1LCAxNywgNSwgMjMsIDE5LCA1LCAyNCwgMjQsIDI0LCA1LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDUsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxOSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI4LCAyOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDMwLCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAzMSwgMzIsIDMzLCAyNiwgMjcsIDI2LCAyNywgMzQsIDI2LCAKLSAgICAyNywgMzUsIDM1LCAyNiwgMjcsIDE5LCAzNiwgMzcsIDM4LCAyNiwgMjcsIDM1LCAzOSwgNDAsIDQxLCA0MiwgMjYsIDI3LCAKLSAgICA0MywgMTksIDQxLCA0NCwgNDUsIDQ2LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA0NywgMjYsIDI3LCA0NywgMTksIDE5LCAKLSAgICAyNiwgMjcsIDQ3LCAyNiwgMjcsIDQ4LCA0OCwgMjYsIDI3LCAyNiwgMjcsIDQ5LCAyNiwgMjcsIDE5LCA1MCwgMjYsIDI3LCAKLSAgICAxOSwgNTEsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTMsIDU0LCA1MiwgNTMsIDU0LCA1MiwgNTMsIDU0LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNTUsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCA1MiwgNTMsIDU0LCAKLSAgICAyNiwgMjcsIDU2LCA1NywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDU4LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTksIDI2LCAKLSAgICAyNywgNjAsIDYxLCA2MiwgNjIsIDI2LCAyNywgNjMsIDY0LCA2NSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDY2LCA2NywgNjgsIDY5LCA3MCwgMTksIDcxLCA3MSwgMTksIDcyLCAxOSwgNzMsIDE5LCAxOSwgMTksIDE5LCAKLSAgICA3MSwgMTksIDE5LCA3NCwgMTksIDc1LCAxOSwgMTksIDc2LCA3NywgMTksIDc4LCAxOSwgMTksIDE5LCA3NywgMTksIDc5LCAKLSAgICA4MCwgMTksIDE5LCA4MSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDgyLCAxOSwgMTksIDgzLCAxOSwgMTksIDgzLCAKLSAgICAxOSwgMTksIDE5LCAxOSwgODMsIDg0LCA4NSwgODUsIDg2LCAxOSwgMTksIDE5LCAxOSwgMTksIDg3LCAxOSwgNTAsIDE5LCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCAyMCwgNSwgNSwgCisgICAgMjEsIDUsIDYsIDUsIDUsIDIyLCAyMywgNiwgMjQsIDUsIDI1LCA2LCAyNiwgMjAsIDUsIDI3LCAyNywgMjcsIDUsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDI4LCAxOSwgMTksIDE5LCAxOSwgMTksIAogICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNSwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDI5LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMiwgMzMsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzQsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzYsIDM3LCAzOCwgMzAsIDMxLCAzMCwgMzEsIDM5LCAKKyAgICAzMCwgMzEsIDQwLCA0MCwgMzAsIDMxLCAyMCwgNDEsIDQyLCA0MywgMzAsIDMxLCA0MCwgNDQsIDQ1LCA0NiwgNDcsIDMwLCAKKyAgICAzMSwgNDgsIDIwLCA0NiwgNDksIDUwLCA1MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNTIsIDMwLCAzMSwgNTIsIDIwLCAKKyAgICAyMCwgMzAsIDMxLCA1MiwgMzAsIDMxLCA1MywgNTMsIDMwLCAzMSwgMzAsIDMxLCA1NCwgMzAsIDMxLCAyMCwgNTUsIDMwLCAKKyAgICAzMSwgMjAsIDU2LCA1NSwgNTUsIDU1LCA1NSwgNTcsIDU4LCA1OSwgNTcsIDU4LCA1OSwgNTcsIDU4LCA1OSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDYwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2MSwgNTcsIDU4LCAKKyAgICA1OSwgMzAsIDMxLCA2MiwgNjMsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2NCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKKyAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgNzcsIDIwLCAyMCwgODAsIDIwLCA4MSwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgMjAsIDIwLCAyMCwgODQsIDIwLCAKKyAgICA4NiwgODcsIDIwLCAyMCwgODgsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA4OSwgMjAsIDIwLCA5MCwgMjAsIDIwLCAKKyAgICA5MCwgMjAsIDIwLCAyMCwgMjAsIDkwLCA5MSwgOTIsIDkyLCA5MywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NCwgMjAsIDU1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTUsIDk1LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAKKyAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDk2LCA2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgOTcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgMzAsIDMxLCAwLCAwLCAKKyAgICA5OCwgNTAsIDUwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgOTksIDI1LCAxMDAsIDEwMCwgMTAwLCAwLCAxMDEsIDAsIAorICAgIDEwMiwgMTAyLCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNSwgMTA1LCAKKyAgICAxMDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTA3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDgsIDEwOSwgMTA5LCAxMTAsIDExMSwgMTEyLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTQsIDExNSwgMTE2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMTcsIDExOCwgMTE5LCAyMCwgCisgICAgMTIwLCAxMjEsIDUsIDMwLCAzMSwgMTIyLCAzMCwgMzEsIDIwLCA2NCwgNjQsIDY0LCAxMjMsIDEyMywgMTIzLCAxMjMsIAorICAgIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDE3LCAxNywgMTcsIAogICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCA4OCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjYsIDI3LCAyNiwgMjcsIDUwLCA1LCAyNiwgMjcsIDAsIDAsIDg5LCAKLSAgICA0NSwgNDUsIDQ1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA5MCwgMTcsIDkxLCA5MSwgOTEsIDAsIDkyLCAwLCA5MywgOTMsIAotICAgIDE5LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDAsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDk0LCA5NSwgOTUsIDk1LCAxOSwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA5NiwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgOTcsIDk4LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMiwgMTAyLCAxMDMsIAotICAgIDEwNCwgMTA1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxMDYsIDEwNywgMTA4LCAxOSwgMTA5LCAxMTAsIDUsIDI2LCAyNywgCi0gICAgMTExLCAyNiwgMjcsIDE5LCA1OCwgNTgsIDU4LCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAKLSAgICAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDExMywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAxMTQsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMCwgMCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxOSwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgMTcsIDUsIDE3LCAxNywgNSwgMTcsIDE3LCA1LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCAwLCAwLCA1LCA1LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgNSwgNSwgNSwgNSwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNTAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxLCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDE3LCAxNywgNSwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCA1MCwgCi0gICAgNSwgNSwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEsIDUwLCAxNywgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgNTAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAKKyAgICAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMCwgMCwgOTYsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjksIDAsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCA1LCAyNSwgMjUsIDUsIDI1LCAyNSwgCisgICAgNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgCisgICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjEsIDUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDk2LCA5NiwgNSwgNSwgNSwgNSwgOTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgCisgICAgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMjUsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgCisgICAgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAyNSwgMjUsIDAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIAorICAgIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTMwLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIAorICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAKKyAgICAxMzAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgOTYsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAKKyAgICAxOCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgOTYsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAyNSwgMjUsIDI1LCAyLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDEzMiwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgOTYsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDUsIDUsIDYsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAKLSAgICAxNywgMTcsIDAsIDAsIDE3LCAxNywgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCAwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCAKLSAgICA1MCwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDAsIDE3LCAwLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDE3LCAxNywgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTcsIDE3LCA1MCwgNTAsIDUwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDAsIAotICAgIDE3LCAxNywgMTcsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDAsIDAsIDE3LCAxNywgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgNSwgNTAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCA1MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCAwLCAwLCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMCwgMCwgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAwLCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgMTE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDExNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgCi0gICAgMCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA3LCA4LCAKLSAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgMTcsIAotICAgIDUsIDE3LCA1LCAxNywgNSwgNSwgNSwgNSwgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAotICAgIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgNSwgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDE0MiwgMjAsIDIwLCAyMCwgMTQzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTQ0LCAKKyAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMjAsIDIwLCAxNTAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxNTEsIDE1MSwgCisgICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAorICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDAsIDAsIAorICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUyLCAwLCAwLCAxNTMsIDE1MSwgMTU0LCAxNTEsIDE1NSwgMTUxLCAxNTYsIDE1MSwgMCwgMTUyLCAwLCAKKyAgICAxNTIsIDAsIDE1MiwgMCwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIAorICAgIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1NywgMTU3LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OSwgMTU5LCAKKyAgICAxNjAsIDE2MCwgMTYxLCAxNjEsIDE2MiwgMTYyLCAwLCAwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIAorICAgIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAKKyAgICAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgCisgICAgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAxNTEsIAorICAgIDE1MSwgMjExLCAyMTIsIDIxMywgMCwgMjE0LCAyMTUsIDE1MiwgMTUyLCAyMTYsIDIxNiwgMjE3LCA2LCAyMTgsIDYsIDYsIAorICAgIDYsIDIxOSwgMjIwLCAyMjEsIDAsIDIyMiwgMjIzLCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNSwgNiwgNiwgNiwgMTUxLCAKKyAgICAxNTEsIDIyNiwgMjI3LCAwLCAwLCAyMjgsIDIyOSwgMTUyLCAxNTIsIDIzMCwgMjMwLCAwLCA2LCA2LCA2LCAxNTEsIDE1MSwgCisgICAgMjMxLCAyMzIsIDIzMywgMTE5LCAyMzQsIDIzNSwgMTUyLCAxNTIsIDIzNiwgMjM2LCAxMjIsIDYsIDYsIDYsIDAsIDAsIAorICAgIDIzNywgMjM4LCAyMzksIDAsIDI0MCwgMjQxLCAyNDIsIDI0MiwgMjQzLCAyNDMsIDI0NCwgNiwgNiwgMCwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjQ1LCA5NSwgMCwgMCwgCisgICAgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgOTUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAKKyAgICAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAxNywgNiwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNSwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNSwgNSwgNSwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCA1LCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCAxNywgMTcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxLCAxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1LCA1LCA1LCA1MCwgNSwgNSwgNSwgNSwgNTAsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMiwgMCwgNiwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAxMTksIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDE3LCA2LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCA1MCwgNTAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDYsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDUsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1MCwgMTI5LCAKLSAgICAxOSwgMTksIDE5LCAxMzAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMTksIDE5LCAxOSwgMTksIDEzMSwgMTksIDE5LCAxMzIsIAotICAgIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTM0LCAKLSAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDAsIDAsIAotICAgIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDAsIDAsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAwLCAwLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAwLCAwLCAxOSwgMTMzLCAxOSwgCi0gICAgMTMzLCAxOSwgMTMzLCAxOSwgMTMzLCAwLCAxMzQsIDAsIDEzNCwgMCwgMTM0LCAwLCAxMzQsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM1LCAKLSAgICAxMzUsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM3LCAxMzcsIDEzOCwgMTM4LCAxMzksIDEzOSwgMTQwLCAxNDAsIDAsIDAsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDEzMywgMTMzLCAxOSwgMTQyLCAxOSwgMCwgMTksIDE5LCAxMzQsIDEzNCwgCi0gICAgMTQzLCAxNDMsIDE0NCwgNSwgMTQ1LCA1LCA1LCA1LCAxOSwgMTQyLCAxOSwgMCwgMTksIDE5LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NCwgNSwgNSwgNSwgMTMzLCAxMzMsIDE5LCAxOSwgMCwgMCwgMTksIDE5LCAxMzQsIDEzNCwgMTQ3LCAxNDcsIDAsIAotICAgIDUsIDUsIDUsIDEzMywgMTMzLCAxOSwgMTksIDE5LCAxMDgsIDE5LCAxOSwgMTM0LCAxMzQsIDE0OCwgMTQ4LCAxMTEsIDUsIAotICAgIDUsIDUsIDAsIDAsIDE5LCAxNDIsIDE5LCAwLCAxOSwgMTksIDE0OSwgMTQ5LCAxNTAsIDE1MCwgMTQ0LCA1LCA1LCAwLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzLCAzLCAxLCAxLCAxLCAxLCAxLCAyLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxNTEsIDUwLCAwLCAwLCAxNTIsIDE1MywgCi0gICAgMTU0LCAxNTUsIDE1NiwgMTU3LCA1LCA1LCA1LCA1LCA1LCA1MCwgMTUxLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAKLSAgICAxNTUsIDE1NiwgMTU3LCA1LCA1LCA1LCA1LCA1LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDUsIDUsIDUsIDUsIDE3LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDEwMiwgCi0gICAgNSwgNSwgMTksIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTksIDUsIDEwMiwgNSwgNSwgMTU4LCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCA1LCAxNTksIDUsIDEwMiwgNSwgMTYwLCAKLSAgICAxNjEsIDEwMiwgMTAyLCAxNTgsIDE5LCAxMDIsIDEwMiwgMTYyLCAxMDIsIDE5LCA1MCwgNTAsIDUwLCA1MCwgMTksIDUsIDUsIAotICAgIDE5LCAxOSwgMTAyLCAxMDIsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTksIDE5LCAxOSwgMTksIDUsIDUsIDUsIDUsIDE2MywgNSwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDE2NCwgMTY0LCAKLSAgICAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgCi0gICAgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIAotICAgIDE2NSwgMTY1LCAxMjgsIDEyOCwgMTI4LCAyNiwgMjcsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMjQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTEzLCA1LCA1LCAKKyAgICA1LCA1LCAxMTMsIDUsIDUsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDIwLCA1LCAxMTMsIDUsIAorICAgIDUsIDI1MiwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDUsIDUsIDUsIDUsIDUsIDExMywgNSwgMjUzLCA1LCAxMTMsIAorICAgIDUsIDI1NCwgMjU1LCAxMTMsIDExMywgMjUyLCAyMCwgMTEzLCAxMTMsIDI1NiwgMTEzLCAyMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIwLCA1LCA1LCAyMCwgMjAsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCAxMTMsIDIwLCAyMCwgMjAsIDIwLCA1LCA1LCA1LCAKKyAgICA1LCAyNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgCisgICAgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAorICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMTQxLCAxNDEsIDE0MSwgMzAsIDMxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTExMzUsNjMyICsxOTQ1LDY4NCBAQAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAKLSAgICAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyMywgMjAsIDIxLCAxNTIsIAotICAgIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAKLSAgICAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjcsIDE2NywgCi0gICAgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIAotICAgIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTUxLCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIAotICAgIDE1MSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIAorICAgIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgCisgICAgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgCisgICAgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAKKyAgICAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgCisgICAgMjQ1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyMywgCi0gICAgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAKLSAgICAxNTYsIDE1NywgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgCisgICAgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAKKyAgICAyNTAsIDI1MSwgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDAsIDI2LCAyNywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTksIDI2LCAyNywgMTksIDI2LCAyNywgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgNTAsIDE3NywgMTc3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDI2LCAyNywgMjYsIDI3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNCwgCi0gICAgNSwgNSwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAKLSAgICAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgCi0gICAgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgODksIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDIsIDUsIDUsIDUsIDUsIDUwLCA1MCwgMTI4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDUwLCA1MCwgNSwgNSwgNSwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCAxNywgMTcsIDUsIDUsIDUwLCA1MCwgNTAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTc5LCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCAxNzksIAotICAgIDE3OSwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCAxNzksIDE3OSwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAxNzksIDE3OSwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAzMCwgMzEsIDI2MiwgMjYzLCAKKyAgICAyNjQsIDI2NSwgMjY2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyNjcsIDI2OCwgMjY5LCAyNzAsIDIwLCAzMCwgMzEsIAorICAgIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCAyNzEsIDI3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDAsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMjcyLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDk2LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjczLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1MCwgMTcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3LCAxNywgNSwgNTAsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgNTAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDE4MCwgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDUwLCA1LCA1LCAyNiwgMjcsIDE4MSwgMTksIDAsIDI2LCAyNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1MCwgCi0gICAgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1MCwgMTcsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgMTcsIDE3LCAxNywgNTAsIDUwLCAxNywgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDE3LCA1MCwgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCAxNywgMTcsIDAsIDAsIAotICAgIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDg5LCA4OSwgODksIDg5LCA4OSwgODksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgODksIDg5LCA1LCA1LCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDE3LCAxNywgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAKLSAgICAxNywgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgODksIDUwLCA4OSwgNTAsIDg5LCAwLCA4OSwgNTAsIDg5LCA1MCwgODksIDUwLCAKLSAgICA4OSwgNTAsIDg5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDUsIDUsIDUsIDUsIDE3LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTE3LCAxMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxLCAxLCAxLCA1LCA1LCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDI0LCAyNCwgMjQsIDI0LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMiwgNSwgNSwgNSwgNSwgOTYsIDU1LCAxNDEsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDUsIDk2LCAKKyAgICA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgOTYsIDU1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgNiwgNiwgOTYsIDk2LCA1NSwgCisgICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNSwgOTYsIDk2LCA5NiwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNzQsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjc0LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgMjc0LCAyNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMjQsIDI0LCAyNCwgMjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTI4LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDEyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDU1LCAyNSwgNiwgNiwgNiwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDk2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCA5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMjc1LCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgOTYsIDYsIDYsIDMwLCAzMSwgMjc2LCAyMCwgMCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1LCA5NSwgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgOTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgCi0gICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIAotICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAKLSAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKLSAgICAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCA1LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMTcsIDIzLCAyMCwgMjEsIDE1MiwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjQsIDI0LCA1LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA5NiwgNSwgNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDUsIDUsIDU1LCA5NiwgOTYsIAorICAgIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIAorICAgIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMTcsIDE3LCAxNywgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgMSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDI5MCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxNTgsIDE1OCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxNTgsIDE1OCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI5MCwgMjkwLCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAKKyAgICAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCAwLCAyOTAsIDU1LCAyOTAsIDU1LCAKKyAgICAyOTAsIDU1LCAyOTAsIDU1LCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA2LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI5MSwgMjkxLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMjcsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIAorICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKKyAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTMsIDI5MywgCisgICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIAorICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKKyAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjYsIDIyLCAyMywgMjQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAKKyAgICAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUyLCAyNTIsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMjUyLCAyNTIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTc3NSwyNzIgKzI2MzcsMjg2IEBACiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIAotICAgIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMCwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAwLCAxMDIsIDEwMiwgMCwgMCwgMTAyLCAwLCAwLCAxMDIsIDEwMiwgMCwgMCwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAKLSAgICAxOSwgMTksIDAsIDE5LCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAxMDIsIDAsIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDEwMiwgMTksIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgCi0gICAgMTU0LCAxNTUsIDE1NiwgMTU3LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDAsIDExMywgMTEzLCAwLCAwLCAxMTMsIDAsIDAsIAorICAgIDExMywgMTEzLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAwLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDAsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMCwgMCwgMCwgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAyMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAKKyAgICAyNTAsIDI1MSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCiAgICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDAsIDUsIDAsIDUsIDAsIDUsIDAsIDUsIAotICAgIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCiB9OwogCiAvKiBSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzIGRvdWJsZSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzCkBAIC0yMTAwLDYgKzI5NzYsMTAgQEAKICAgICBjYXNlIDB4MTAxOEE6CiAgICAgY2FzZSAweDEwNEEwOgogICAgIGNhc2UgMHgxMTA2NjoKKyAgICBjYXNlIDB4MTEwRjA6CisgICAgY2FzZSAweDExMTM2OgorICAgIGNhc2UgMHgxMTFEMDoKKyAgICBjYXNlIDB4MTE2QzA6CiAgICAgY2FzZSAweDFEN0NFOgogICAgIGNhc2UgMHgxRDdEODoKICAgICBjYXNlIDB4MUQ3RTI6CkBAIC0yMTg3LDYgKzMwNjcsMTAgQEAKICAgICBjYXNlIDB4MTBFNjA6CiAgICAgY2FzZSAweDExMDUyOgogICAgIGNhc2UgMHgxMTA2NzoKKyAgICBjYXNlIDB4MTEwRjE6CisgICAgY2FzZSAweDExMTM3OgorICAgIGNhc2UgMHgxMTFEMToKKyAgICBjYXNlIDB4MTE2QzE6CiAgICAgY2FzZSAweDEyNDE1OgogICAgIGNhc2UgMHgxMjQxRToKICAgICBjYXNlIDB4MTI0MkM6CkBAIC0yMjYzLDYgKzMxNDcsNyBAQAogICAgIGNhc2UgMHgyNzkzOgogICAgIGNhc2UgMHgzMDM4OgogICAgIGNhc2UgMHgzMjI5OgorICAgIGNhc2UgMHgzMjQ4OgogICAgIGNhc2UgMHgzMjg5OgogICAgIGNhc2UgMHg0RUMwOgogICAgIGNhc2UgMHg1MzQxOgpAQCAtMjQ4Myw2ICszMzY4LDEwIEBACiAgICAgY2FzZSAweDEwRTYxOgogICAgIGNhc2UgMHgxMTA1MzoKICAgICBjYXNlIDB4MTEwNjg6CisgICAgY2FzZSAweDExMEYyOgorICAgIGNhc2UgMHgxMTEzODoKKyAgICBjYXNlIDB4MTExRDI6CisgICAgY2FzZSAweDExNkMyOgogICAgIGNhc2UgMHgxMjQwMDoKICAgICBjYXNlIDB4MTI0MTY6CiAgICAgY2FzZSAweDEyNDFGOgpAQCAtMjUxNSw2ICszNDA0LDcgQEAKICAgICBjYXNlIDB4MjQ5QjoKICAgICBjYXNlIDB4MjRGNDoKICAgICBjYXNlIDB4MzAzOToKKyAgICBjYXNlIDB4MzI0OToKICAgICBjYXNlIDB4NTM0NDoKICAgICBjYXNlIDB4NUVGRjoKICAgICBjYXNlIDB4MTAxMTE6CkBAIC0yNjI2LDYgKzM1MTYsMTAgQEAKICAgICBjYXNlIDB4MTBFNjI6CiAgICAgY2FzZSAweDExMDU0OgogICAgIGNhc2UgMHgxMTA2OToKKyAgICBjYXNlIDB4MTEwRjM6CisgICAgY2FzZSAweDExMTM5OgorICAgIGNhc2UgMHgxMTFEMzoKKyAgICBjYXNlIDB4MTE2QzM6CiAgICAgY2FzZSAweDEyNDAxOgogICAgIGNhc2UgMHgxMjQwODoKICAgICBjYXNlIDB4MTI0MTc6CkBAIC0yNjcxLDYgKzM1NjUsNyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzguMDsKICAgICBjYXNlIDB4MTM3NDoKICAgICBjYXNlIDB4MzAzQToKKyAgICBjYXNlIDB4MzI0QToKICAgICBjYXNlIDB4MzI1QToKICAgICBjYXNlIDB4NTM0NToKICAgICBjYXNlIDB4MTAxMTI6CkBAIC0yNzcwLDYgKzM2NjUsMTAgQEAKICAgICBjYXNlIDB4MTBFNjM6CiAgICAgY2FzZSAweDExMDU1OgogICAgIGNhc2UgMHgxMTA2QToKKyAgICBjYXNlIDB4MTEwRjQ6CisgICAgY2FzZSAweDExMTNBOgorICAgIGNhc2UgMHgxMTFENDoKKyAgICBjYXNlIDB4MTE2QzQ6CiAgICAgY2FzZSAweDEyNDAyOgogICAgIGNhc2UgMHgxMjQwOToKICAgICBjYXNlIDB4MTI0MEY6CkBAIC0yNzk5LDYgKzM2OTgsNyBAQAogICAgIGNhc2UgMHgyMTU4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNC4wLzUuMDsKICAgICBjYXNlIDB4MTM3NToKKyAgICBjYXNlIDB4MzI0QjoKICAgICBjYXNlIDB4MzJCNToKICAgICBjYXNlIDB4NTM0QzoKICAgICBjYXNlIDB4MTAxMTM6CkBAIC0yOTAwLDYgKzM4MDAsMTAgQEAKICAgICBjYXNlIDB4MTBFNjQ6CiAgICAgY2FzZSAweDExMDU2OgogICAgIGNhc2UgMHgxMTA2QjoKKyAgICBjYXNlIDB4MTEwRjU6CisgICAgY2FzZSAweDExMTNCOgorICAgIGNhc2UgMHgxMTFENToKKyAgICBjYXNlIDB4MTE2QzU6CiAgICAgY2FzZSAweDEyNDAzOgogICAgIGNhc2UgMHgxMjQwQToKICAgICBjYXNlIDB4MTI0MTA6CkBAIC0yOTMxLDYgKzM4MzUsNyBAQAogICAgIGNhc2UgMHgyMTZDOgogICAgIGNhc2UgMHgyMTdDOgogICAgIGNhc2UgMHgyMTg2OgorICAgIGNhc2UgMHgzMjRDOgogICAgIGNhc2UgMHgzMkJGOgogICAgIGNhc2UgMHgxMDExNDoKICAgICBjYXNlIDB4MTAxNDQ6CkBAIC0zMDM0LDYgKzM5MzksMTAgQEAKICAgICBjYXNlIDB4MTBFNjU6CiAgICAgY2FzZSAweDExMDU3OgogICAgIGNhc2UgMHgxMTA2QzoKKyAgICBjYXNlIDB4MTEwRjY6CisgICAgY2FzZSAweDExMTNDOgorICAgIGNhc2UgMHgxMTFENjoKKyAgICBjYXNlIDB4MTE2QzY6CiAgICAgY2FzZSAweDEyNDA0OgogICAgIGNhc2UgMHgxMjQwQjoKICAgICBjYXNlIDB4MTI0MTE6CkBAIC0zMDUxLDYgKzM5NjAsNyBAQAogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKICAgICBjYXNlIDB4MTM3NzoKKyAgICBjYXNlIDB4MzI0RDoKICAgICBjYXNlIDB4MTAxMTU6CiAgICAgY2FzZSAweDEwRTZFOgogICAgIGNhc2UgMHgxMTA2MDoKQEAgLTMxMjQsNiArNDAzNCwxMCBAQAogICAgIGNhc2UgMHgxMEU2NjoKICAgICBjYXNlIDB4MTEwNTg6CiAgICAgY2FzZSAweDExMDZEOgorICAgIGNhc2UgMHgxMTBGNzoKKyAgICBjYXNlIDB4MTExM0Q6CisgICAgY2FzZSAweDExMUQ3OgorICAgIGNhc2UgMHgxMTZDNzoKICAgICBjYXNlIDB4MTI0MDU6CiAgICAgY2FzZSAweDEyNDBDOgogICAgIGNhc2UgMHgxMjQxMjoKQEAgLTMxNDYsNiArNDA2MCw3IEBACiAgICAgY2FzZSAweDIxNUU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3LjAvOC4wOwogICAgIGNhc2UgMHgxMzc4OgorICAgIGNhc2UgMHgzMjRFOgogICAgIGNhc2UgMHgxMDExNjoKICAgICBjYXNlIDB4MTBFNkY6CiAgICAgY2FzZSAweDExMDYxOgpAQCAtMzIxNyw2ICs0MTMyLDEwIEBACiAgICAgY2FzZSAweDEwRTY3OgogICAgIGNhc2UgMHgxMTA1OToKICAgICBjYXNlIDB4MTEwNkU6CisgICAgY2FzZSAweDExMEY4OgorICAgIGNhc2UgMHgxMTEzRToKKyAgICBjYXNlIDB4MTExRDg6CisgICAgY2FzZSAweDExNkM4OgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtMzIzMyw2ICs0MTUyLDcgQEAKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CiAgICAgY2FzZSAweDEzNzk6CisgICAgY2FzZSAweDMyNEY6CiAgICAgY2FzZSAweDEwMTE3OgogICAgIGNhc2UgMHgxMEU3MDoKICAgICBjYXNlIDB4MTEwNjI6CkBAIC0zMzA1LDYgKzQyMjUsMTAgQEAKICAgICBjYXNlIDB4MTBFNjg6CiAgICAgY2FzZSAweDExMDVBOgogICAgIGNhc2UgMHgxMTA2RjoKKyAgICBjYXNlIDB4MTEwRjk6CisgICAgY2FzZSAweDExMTNGOgorICAgIGNhc2UgMHgxMTFEOToKKyAgICBjYXNlIDB4MTE2Qzk6CiAgICAgY2FzZSAweDEyNDA3OgogICAgIGNhc2UgMHgxMjQwRToKICAgICBjYXNlIDB4MTI0MTQ6CmRpZmYgLS1naXQgYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCmluZGV4IDhkNTcxZTYuLmI0OWRjZWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCisrKyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCkBAIC0xNTUsMjggKzE1NSwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdlYWtyZWZfcmVwcihQeVdlYWtSZWZlcmVuY2UgKnNlbGYpCiB7Ci0gICAgY2hhciBidWZmZXJbMjU2XTsKLSAgICBpZiAoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikgPT0gUHlfTm9uZSkgewotICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICI8d2Vha3JlZiBhdCAlcDsgZGVhZD4iLCBzZWxmKTsKKyAgICBQeU9iamVjdCAqbmFtZSwgKnJlcHI7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworCisgICAgaWYgKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpID09IFB5X05vbmUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHdlYWtyZWYgYXQgJXA7IGRlYWQ+Iiwgc2VsZik7CisKKyAgICBuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwgJlB5SWRfX19uYW1lX18pOworICAgIGlmIChuYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgIjx3ZWFrcmVmIGF0ICVwOyB0byAnJXMnIGF0ICVwPiIsCisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSktPnRwX25hbWUsCisgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBjaGFyICpuYW1lID0gTlVMTDsKLSAgICAgICAgUHlPYmplY3QgKm5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIik7Ci0gICAgICAgIGlmIChuYW1lb2JqID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSA/ICI8d2Vha3JlZiBhdCAlcDsgdG8gJyUuNTBzJyBhdCAlcCAoJXMpPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIjx3ZWFrcmVmIGF0ICVwOyB0byAnJS41MHMnIGF0ICVwPiIsCi0gICAgICAgICAgICAgICAgICAgICAgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpKS0+dHBfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgUHlfWERFQ1JFRihuYW1lb2JqKTsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgIjx3ZWFrcmVmIGF0ICVwOyB0byAnJXMnIGF0ICVwICglVSk+IiwKKyAgICAgICAgICAgIHNlbGYsCisgICAgICAgICAgICBQeV9UWVBFKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpKS0+dHBfbmFtZSwKKyAgICAgICAgICAgIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpLAorICAgICAgICAgICAgbmFtZSk7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWZmZXIpOworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgcmV0dXJuIHJlcHI7CiB9CiAKIC8qIFdlYWsgcmVmZXJlbmNlcyBvbmx5IHN1cHBvcnQgZXF1YWxpdHksIG5vdCBvcmRlcmluZy4gVHdvIHdlYWsgcmVmZXJlbmNlcwpAQCAtMTg5LDggKzE5Myw3IEBACiAgICAgaWYgKChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgfHwKICAgICAgICAgIVB5V2Vha3JlZl9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlXZWFrcmVmX0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgaWYgKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpID09IFB5X05vbmUKICAgICAgICAgfHwgUHlXZWFrcmVmX0dFVF9PQkpFQ1Qob3RoZXIpID09IFB5X05vbmUpIHsKQEAgLTQ0MSw4ICs0NDQsOSBAQAogI2RlZmluZSBXUkFQX01FVEhPRChtZXRob2QsIHNwZWNpYWwpIFwKICAgICBzdGF0aWMgUHlPYmplY3QgKiBcCiAgICAgbWV0aG9kKFB5T2JqZWN0ICpwcm94eSkgeyBcCisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzcGVjaWFsKTsgXAogICAgICAgICAgICAgVU5XUkFQKHByb3h5KTsgXAotICAgICAgICAgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHByb3h5LCBzcGVjaWFsLCAiIik7IFwKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCAiIik7IFwKICAgICAgICAgfQogCiAKQEAgLTQ1NSwxMiArNDU5LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcHJveHlfcmVwcihQeVdlYWtSZWZlcmVuY2UgKnByb3h5KQogewotICAgIGNoYXIgYnVmWzE2MF07Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgIjx3ZWFrcHJveHkgYXQgJXAgdG8gJS4xMDBzIGF0ICVwPiIsIHByb3h5LAotICAgICAgICAgICAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChwcm94eSkpLT50cF9uYW1lLAotICAgICAgICAgICAgICAgICAgUHlXZWFrcmVmX0dFVF9PQkpFQ1QocHJveHkpKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICI8d2Vha3Byb3h5IGF0ICVwIHRvICVzIGF0ICVwPiIsCisgICAgICAgIHByb3h5LAorICAgICAgICBQeV9UWVBFKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHByb3h5KSktPnRwX25hbWUsCisgICAgICAgIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHByb3h5KSk7CiB9CiAKIApAQCAtNTg2LDcgKzU4OSw3IEBACiB9CiAKIAotV1JBUF9NRVRIT0QocHJveHlfYnl0ZXMsICJfX2J5dGVzX18iKQorV1JBUF9NRVRIT0QocHJveHlfYnl0ZXMsIF9fYnl0ZXNfXykKIAogCiBzdGF0aWMgUHlNZXRob2REZWYgcHJveHlfbWV0aG9kc1tdID0gewpkaWZmIC0tZ2l0IGEvUEMvVkM2L19tdWx0aXByb2Nlc3NpbmcuZHNwIGIvUEMvVkM2L19tdWx0aXByb2Nlc3NpbmcuZHNwCmluZGV4IDJkY2FmODMuLmUxYjg0NzAgMTAwNjQ0Ci0tLSBhL1BDL1ZDNi9fbXVsdGlwcm9jZXNzaW5nLmRzcAorKysgYi9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AKQEAgLTk3LDE4ICs5NywxMCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xwaXBlX2Nvbm5lY3Rpb24uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNvY2tldF9jb25uZWN0aW9uLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Li5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHdpbjMyX2Z1bmN0aW9ucy5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEVuZCBUYXJnZXQNCmRpZmYgLS1naXQgYS9QQy9WQzYvcHl0aG9uY29yZS5kc3AgYi9QQy9WQzYvcHl0aG9uY29yZS5kc3AKaW5kZXggOTI2MjU2ZC4uMGNlOThkMSAxMDA2NDQKLS0tIGEvUEMvVkM2L3B5dGhvbmNvcmUuZHNwCisrKyBiL1BDL1ZDNi9weXRob25jb3JlLmRzcApAQCAtNTQsNyArNTQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBsYXJnZWludC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWUwMDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9vdXQ6Ii4vcHl0aG9uMzIuZGxsIg0KKyMgQUREIExJTkszMiBsYXJnZWludC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWUwMDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9vdXQ6Ii4vcHl0aG9uMzMuZGxsIg0KICMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJweXRob25jb3JlIC0gV2luMzIgRGVidWciDQpAQCAtODIsNyArODIsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBsYXJnZWludC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWUwMDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9vdXQ6Ii4vcHl0aG9uMzJfZC5kbGwiIC9wZGJ0eXBlOnNlcHQNCisjIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMzX2QuZGxsIiAvcGRidHlwZTpzZXB0DQogIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQogDQogIUVORElGIA0KQEAgLTQ2NiwxMSArNDY2LDYgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0uLlxpbXBvcnRfbnQuYw0KLSMgQUREIENQUCAvSSAiLi5cLi5cUHl0aG9uIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0uLlwuLlxQeXRob25caW1wb3J0ZGwuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9yZWFkbWUudHh0IGIvUEMvVkM2L3JlYWRtZS50eHQKaW5kZXggZmExYWU3ZC4uZDZlYzZlNiAxMDA2NDQKLS0tIGEvUEMvVkM2L3JlYWRtZS50eHQKKysrIGIvUEMvVkM2L3JlYWRtZS50eHQKQEAgLTEyLDcgKzEyLDcgQEAKIFRoZSBwcm9wZXIgb3JkZXIgdG8gYnVpbGQgc3VicHJvamVjdHM6CiAKIDEpIHB5dGhvbmNvcmUgKHRoaXMgYnVpbGRzIHRoZSBtYWluIFB5dGhvbiBETEwgYW5kIGxpYnJhcnkgZmlsZXMsCi0gICAgICAgICAgICAgICBweXRob24zMi57ZGxsLCBsaWJ9IGluIFJlbGVhc2UgbW9kZSkKKyAgICAgICAgICAgICAgIHB5dGhvbjMzLntkbGwsIGxpYn0gaW4gUmVsZWFzZSBtb2RlKQogCiAyKSBweXRob24gKHRoaXMgYnVpbGRzIHRoZSBtYWluIFB5dGhvbiBleGVjdXRhYmxlLAogICAgICAgICAgICBweXRob24uZXhlIGluIFJlbGVhc2UgbW9kZSkKQEAgLTIzLDcgKzIzLDcgQEAKICAgIHRvIHRoZSBzdWJzeXN0ZW1zIHRoZXkgaW1wbGVtZW50OyBzZWUgU1VCUFJPSkVDVFMgYmVsb3cpCiAKIFdoZW4gdXNpbmcgdGhlIERlYnVnIHNldHRpbmcsIHRoZSBvdXRwdXQgZmlsZXMgaGF2ZSBhIF9kIGFkZGVkIHRvCi10aGVpciBuYW1lOiAgcHl0aG9uMzJfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcHlleHBhdF9kLnB5ZCwgYW5kIHNvIG9uLgordGhlaXIgbmFtZTogIHB5dGhvbjMzX2QuZGxsLCBweXRob25fZC5leGUsIHB5ZXhwYXRfZC5weWQsIGFuZCBzbyBvbi4KIAogU1VCUFJPSkVDVFMKIC0tLS0tLS0tLS0tCkBAIC0xNTMsOSArMTUzLDkgQEAKIAogICAgIFVucGFjayBpbnRvIHRoZSAiZGlzdCIgZGlyZWN0b3J5LCByZXRhaW5pbmcgdGhlIGZvbGRlciBuYW1lIGZyb20KICAgICB0aGUgYXJjaGl2ZSAtIGZvciBleGFtcGxlLCB0aGUgbGF0ZXN0IHN0YWJsZSBPcGVuU1NMIHdpbGwgaW5zdGFsbCBhcwotICAgICAgICBkaXN0L29wZW5zc2wtMS4wLjBqCisgICAgICAgIGRpc3Qvb3BlbnNzbC0xLjAuMWMKIAotICAgIFlvdSBuZWVkIHRvIHVzZSB2ZXJzaW9uIDEuMC4waiBvZiBPcGVuU1NMLgorICAgIFlvdSBuZWVkIHRvIHVzZSB2ZXJzaW9uIDEuMC4xYyBvZiBPcGVuU1NMLgogCiAgICAgWW91IGNhbiBpbnN0YWxsIHRoZSBOQVNNIGFzc2VtYmxlciBmcm9tCiAgICAgICAgIGh0dHA6Ly93d3cubmFzbS51cy8KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2oKaW5kZXggNzdmN2Q5ZC4uMDVjNDE4NCAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2oKKysrIGIvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2oKQEAgLTM5LDE1ICszOSwxNSBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMi5kbGwiDQorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzMuZGxsIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzIucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzMucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzIubGliIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzMubGliIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KQEAgLTk5LDE1ICs5OSwxNSBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMl9kLmRsbCINCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob24zM19kLmRsbCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMyX2QucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzNfZC5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMl9kLmxpYiINCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMzX2QubGliIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KQEAgLTE2NiwxNSArMTY2LDE1IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMi5kbGwiDQorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzMuZGxsIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iRkFMU0UiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMyLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMzLnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMyLmxpYiINCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMzLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCkBAIC0yMzMsMTUgKzIzMywxNSBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMyLmRsbCINCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMy5kbGwiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMi5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMy5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMi5saWIiDQorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMy5saWIiDQogCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQpAQCAtNjE2LDMzICs2MTYsNiBAQAogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0LmMiPg0KIAkJPC9GaWxlPg0KIAkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGltcG9ydF9udC5jIj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iRGVidWd8V2luMzIiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiPg0KIAkJPC9GaWxlPg0KIAkJPEZpbGUNCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9yZWFkbWUudHh0IGIvUEMvVlM3LjEvcmVhZG1lLnR4dAppbmRleCA4ZmIwNjlmLi5iZmQ4YTcwIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9yZWFkbWUudHh0CisrKyBiL1BDL1ZTNy4xL3JlYWRtZS50eHQKQEAgLTEyLDcgKzEyLDcgQEAKIFRoZSBwcm9wZXIgb3JkZXIgdG8gYnVpbGQgc3VicHJvamVjdHM6CiAKIDEpIHB5dGhvbmNvcmUgKHRoaXMgYnVpbGRzIHRoZSBtYWluIFB5dGhvbiBETEwgYW5kIGxpYnJhcnkgZmlsZXMsCi0gICAgICAgICAgICAgICBweXRob24yNi57ZGxsLCBsaWJ9IGluIFJlbGVhc2UgbW9kZSkKKyAgICAgICAgICAgICAgIHB5dGhvbjMzLntkbGwsIGxpYn0gaW4gUmVsZWFzZSBtb2RlKQogICAgICAgICAgICAgICBOT1RFOiAgaW4gcHJldmlvdXMgcmVsZWFzZXMsIHRoaXMgc3VicHJvamVjdCB3YXMKICAgICAgICAgICAgICAgbmFtZWQgYWZ0ZXIgdGhlIHJlbGVhc2UgbnVtYmVyLCBlLmcuIHB5dGhvbjIwLgogCkBAIC0yNiw3ICsyNiw3IEBACiAgICB0ZXN0IHNsYXZlOyBzZWUgU1VCUFJPSkVDVFMgYmVsb3cpCiAKIFdoZW4gdXNpbmcgdGhlIERlYnVnIHNldHRpbmcsIHRoZSBvdXRwdXQgZmlsZXMgaGF2ZSBhIF9kIGFkZGVkIHRvCi10aGVpciBuYW1lOiAgcHl0aG9uMjZfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uCit0aGVpciBuYW1lOiAgcHl0aG9uMzNfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uCiAKIFNVQlBST0pFQ1RTCiAtLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2ogYi9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagppbmRleCBjMmJiZWM0Li44ZjFjYWZjIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagorKysgYi9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpAQCAtNTIyLDEwICs1MjIsNiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCkBAIC01MzUsMTggKzUzMSwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc29ja2V0X2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9idWlsZF9zc2wuYmF0IGIvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdAppbmRleCAzOWMxZmYwLi4zNTdiMDhiIDEwMDY0NAotLS0gYS9QQy9WUzguMC9idWlsZF9zc2wuYmF0CisrKyBiL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIGlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgKICAgaWYgJTEgRVFVIERlYnVnICgKICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjMyX2QuZGxsIGV4aXQgMQorICAgIGlmIG5vdCBleGlzdCBweXRob24zM19kLmRsbCBleGl0IDEKICAgKSBFTFNFICgKICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQotICAgIGlmIG5vdCBleGlzdCBweXRob24zMi5kbGwgZXhpdCAxCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjMzLmRsbCBleGl0IDEKICAgKQogKQogJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMKZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLmMgYi9QQy9WUzguMC9raWxsX3B5dGhvbi5jCmluZGV4IDZiOTE2NzguLmJiMzIzZDMgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLmMKKysrIGIvUEMvVlM4LjAva2lsbF9weXRob24uYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCiAgICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMyW19kXS5kbGwpLAorICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMzW19kXS5kbGwpLAogICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KICAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAogICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCmRpZmYgLS1naXQgYS9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcyBiL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCmluZGV4IDJhODJlNDkuLmY4NmNkZWMgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCisrKyBiL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCkBAIC0zOCw3ICszOCw3IEBACiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iUHlEbGxOYW1lIg0KLQkJVmFsdWU9InB5dGhvbjMyIg0KKwkJVmFsdWU9InB5dGhvbjMzIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJQeXRob25FeGUiDQpAQCAtNTgsNyArNTgsNyBAQAogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9Im9wZW5zc2xEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjBqIg0KKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4xYyINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0idGNsdGtEaXIiDQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2ogYi9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagppbmRleCBlODE1NTllLi5hNzViYjlkIDEwMDY0NAotLS0gYS9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagorKysgYi9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagpAQCAtMTcwNywxMCArMTcwNyw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGltcG9ydF9udC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iejIudmNwcm9qIGIvUEMvVlM5LjAvX2J6Mi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9iejIudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fYnoyLnZjcHJvagppbmRleCBlMmIzNTNiLi43Y2ViOGM3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J6Mi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2J6Mi52Y3Byb2oKQEAgLTEsOCArMSw4IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iYnoyIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfYnoyIg0KIAlQcm9qZWN0R1VJRD0iezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQogCVJvb3ROYW1lc3BhY2U9ImJ6MiINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KQEAgLTUyNyw3ICs1MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYnoybW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmNwcm9qIGIvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gUENidWlsZC9fY3R5cGVzLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKaW5kZXggMWViOGI1Ny4uOGU1Y2JhMSAxMDA2NDQKLS0tIGEvUENidWlsZC9fY3R5cGVzLnZjcHJvagorKysgYi9QQy9WUzkuMC9fY3R5cGVzLnZjcHJvagpAQCAtNDIsNyArNDIsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTEwMyw3ICsxMDMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTE2NCw3ICsxNjQsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTIyOCw3ICsyMjgsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTI5MSw3ICsyOTEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTM1NSw3ICszNTUsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQxOSw3ICs0MTksNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQ4Myw3ICs0ODMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTUzMSwyNyArNTMxLDI3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01NTksMzkgKzU1OSwzOSBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KQEAgLTYyNyw3ICs2MjcsNyBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzX3Rlc3QudmNwcm9qIGIvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKaW5kZXggMGM3YWJiZS4uNzAzMzU0NiAxMDA2NDQKLS0tIGEvUENidWlsZC9fY3R5cGVzX3Rlc3QudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX2N0eXBlc190ZXN0Ig0KIAlQcm9qZWN0R1VJRD0iezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQogCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXNfdGVzdCINCkBAIC01MDMsNyArNTAzLDcgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTExLDcgKzUxMSw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlcy52Y3Byb2ogYi9QQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA2OSUKY29weSBmcm9tIFBDYnVpbGQvX2N0eXBlcy52Y3Byb2oKY29weSB0byBQQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2oKaW5kZXggMWViOGI1Ny4uYjlmYWJiMCAxMDA2NDQKLS0tIGEvUENidWlsZC9fY3R5cGVzLnZjcHJvagorKysgYi9QQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2oKQEAgLTIsOSArMiw5IEBACiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCiAJVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2N0eXBlcyINCi0JUHJvamVjdEdVSUQ9InswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlSb290TmFtZXNwYWNlPSJfY3R5cGVzIg0KKwlOYW1lPSJfZGVjaW1hbCINCisJUHJvamVjdEdVSUQ9InswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9Ig0KKwlSb290TmFtZXNwYWNlPSJfZGVjaW1hbCINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQogCT4NCkBAIC00Miw3ICs0Miw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTAzLDcgKzEwNCw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xNjQsNyArMTY2LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xNzcsNyArMTgwLDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJLz4NCkBAIC0yMjgsNyArMjMwLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTI0MSw3ICsyNDQsNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkvPg0KQEAgLTI5MSw3ICsyOTMsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTMwNCw3ICszMDcsNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkvPg0KQEAgLTM1NSw3ICszNTcsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMzY4LDcgKzM3MSw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCkBAIC00MTksNyArNDIxLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00MzIsNyArNDM1LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJLz4NCkBAIC00ODMsNyArNDg1LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQ5Niw3ICs0OTksNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQpAQCAtNTMxLDI3ICs1MzMsNzEgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcZG9jc3RyaW5ncy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0eXBlYXJpdGguaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdW1vZGFyaXRoLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjY29tcGF0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjc3RkaW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01NTksNzUgKzYwNSw2NyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxfZGVjaW1hbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udGV4dC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuYyINCiAJCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcaW8uYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbWVtb3J5LmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNkaXY2NC5hc20iDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCkBAIC02NDIsOCArNjgwLDggQEAKIAkJCQkJPg0KIAkJCQkJPFRvb2wNCiAJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC02NTksOCArNjk3LDggQEAKIAkJCQkJPg0KIAkJCQkJPFRvb2wNCiAJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTY3Niw4ICs3MTQsOCBAQAogCQkJCQk+DQogCQkJCQk8VG9vbA0KIAkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC02OTMsOCArNzMxLDggQEAKIAkJCQkJPg0KIAkJCQkJPFRvb2wNCiAJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZWxlbWVudHRyZWUudmNwcm9qIGIvUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19lbGVtZW50dHJlZS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKaW5kZXggM2U5NjMxZi4uZjlkNzM3NSAxMDA2NDQKLS0tIGEvUENidWlsZC9fZWxlbWVudHRyZWUudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX2VsZW1lbnR0cmVlIg0KIAlQcm9qZWN0R1VJRD0iezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQogCVJvb3ROYW1lc3BhY2U9Il9lbGVtZW50dHJlZSINCkBAIC00Miw3ICs0Miw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTEwNCw3ICsxMDQsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0xNjYsNyArMTY2LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMjI5LDcgKzIyOSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTI5MSw3ICsyOTEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0zNTQsNyArMzU0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNDE3LDcgKzQxNyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQ4MCw3ICs0ODAsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC01MjcsNjMgKzUyNyw2MyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTkxLDE5ICs1OTEsMTkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19oYXNobGliLnZjcHJvaiBiL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19oYXNobGliLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCmluZGV4IGUwNWQ5N2UuLjc3NDE3ZWMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2hhc2hsaWIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfaGFzaGxpYiINCiAJUHJvamVjdEdVSUQ9Ins0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KIAlSb290TmFtZXNwYWNlPSJfaGFzaGxpYiINCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J6Mi52Y3Byb2ogYi9QQy9WUzkuMC9fbHptYS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA4MiUKY29weSBmcm9tIFBDYnVpbGQvYnoyLnZjcHJvagpjb3B5IHRvIFBDL1ZTOS4wL19sem1hLnZjcHJvagppbmRleCBlMmIzNTNiLi43YzYwMDNmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J6Mi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2x6bWEudmNwcm9qCkBAIC0xLDEwICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iYnoyIg0KLQlQcm9qZWN0R1VJRD0iezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iX2x6bWEiDQorCVByb2plY3RHVUlEPSJ7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fSINCisJUm9vdE5hbWVzcGFjZT0ibHptYSINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQogCT4NCkBAIC00Miw4ICs0Miw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC01Niw3ICs1Niw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMTA0LDggKzEwNCw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xMTgsNyArMTE4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTE2Niw4ICsxNjYsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTgwLDcgKzE4MCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMjI5LDggKzIyOSw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yNDMsNyArMjQzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTI5MSw4ICsyOTEsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMzA1LDcgKzMwNSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMzU0LDggKzM1NCw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zNjgsNyArMzY4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQxNyw4ICs0MTcsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDMxLDcgKzQzMSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtNDgwLDggKzQ4MCw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00OTQsNyArNDk0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTUyNyw1MSArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGJ6Mm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iYnppcDIgMS4wLjYgSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjb21wcmVzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNyY3RhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGh1ZmZtYW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxyYW5kdGFibGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sem1hbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tc2kudmNwcm9qIGIvUEMvVlM5LjAvX21zaS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUENidWlsZC9fbXNpLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX21zaS52Y3Byb2oKaW5kZXggMDg0ZWZkZi4uY2IyMzBlMSAxMDA2NDQKLS0tIGEvUENidWlsZC9fbXNpLnZjcHJvagorKysgYi9QQy9WUzkuMC9fbXNpLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfbXNpIg0KIAlQcm9qZWN0R1VJRD0iezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQogCVJvb3ROYW1lc3BhY2U9Il9tc2kiDQpAQCAtNTE5LDcgKzUxOSw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcX21zaS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk1JQpjb3B5IGZyb20gUENidWlsZC9fc29ja2V0LnZjcHJvagpjb3B5IHRvIFBDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCmluZGV4IGVlNzJjMTAuLmZiM2QxZTcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NvY2tldC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKQEAgLTEsMTAgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJfc29ja2V0Ig0KLQlQcm9qZWN0R1VJRD0iezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zb2NrZXQiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9Il9tdWx0aXByb2Nlc3NpbmciDQorCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCisJUm9vdE5hbWVzcGFjZT0iX211bHRpcHJvY2Vzc2luZyINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQogCT4NCkBAIC01MTksNyArNTE5LDcgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTUyNyw3ICs1MjcsMTEgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19zb2NrZXQudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fc29ja2V0LnZjcHJvagppbmRleCBlZTcyYzEwLi5mZjFmNmQ0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19zb2NrZXQudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9zb2NrZXQiDQogCVByb2plY3RHVUlEPSJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCiAJUm9vdE5hbWVzcGFjZT0iX3NvY2tldCINCkBAIC01MTksNyArNTE5LDcgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19zcWxpdGUzLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qCmluZGV4IGIzMWY5YjYuLmY3MTAwZjEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NxbGl0ZTMudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagpAQCAtNTI3LDQzICs1MjcsNDMgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzcWxpdGVjb21wYXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01NzEsMzkgKzU3MSwzOSBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3NsLnZjcHJvaiBiL1BDL1ZTOS4wL19zc2wudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvX3NzbC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19zc2wudmNwcm9qCmluZGV4IDU3MjhjODQuLjk3YWEyOTQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NzbC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3NzbC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX3NzbCINCiAJUHJvamVjdEdVSUQ9IntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KIAlSb290TmFtZXNwYWNlPSJfc3NsIg0KQEAgLTUyNyw3ICs1MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NzbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NzbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNhcGkudmNwcm9qIGIvUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTclCmNvcHkgZnJvbSBQQ2J1aWxkL190ZXN0Y2FwaS52Y3Byb2oKY29weSB0byBQQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKaW5kZXggNTVmMjQzZi4uMDMzNzdlMSAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGNhcGkudmNwcm9qCisrKyBiL1BDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvagpAQCAtMSwxMCArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il90ZXN0Y2FwaSINCi0JUHJvamVjdEdVSUQ9Ins2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGVzdGNhcGkiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9Il90ZXN0YnVmZmVyIg0KKwlQcm9qZWN0R1VJRD0ie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQorCVJvb3ROYW1lc3BhY2U9Il90ZXN0YnVmZmVyIg0KIAlLZXl3b3JkPSJXaW4zMlByb2oiDQogCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCiAJPg0KQEAgLTUxMSw3ICs1MTEsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGJ1ZmZlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNhcGkudmNwcm9qIGIvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL190ZXN0Y2FwaS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKaW5kZXggNTVmMjQzZi4uNDUzMzAwYSAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGNhcGkudmNwcm9qCisrKyBiL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX3Rlc3RjYXBpIg0KIAlQcm9qZWN0R1VJRD0iezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQogCVJvb3ROYW1lc3BhY2U9Il90ZXN0Y2FwaSINCkBAIC01MTEsNyArNTExLDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190a2ludGVyLnZjcHJvaiBiL1BDL1ZTOS4wL190a2ludGVyLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL190a2ludGVyLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCmluZGV4IDFjNWYwY2IuLjUxNjMzMTcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3RraW50ZXIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL190a2ludGVyLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfdGtpbnRlciINCiAJUHJvamVjdEdVSUQ9Ins0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KIAlSb290TmFtZXNwYWNlPSJfdGtpbnRlciINCkBAIC01MjcsMTEgKzUyNywxMSBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3RraW50ZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90a2ludGVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmNwcm9qIGIvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA3NyUKcmVuYW1lIGZyb20gUENidWlsZC9iZGlzdF93aW5pbnN0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKaW5kZXggNjhiMzkzMS4uYjhjYzdhZCAxMDA2NDQKLS0tIGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagpAQCAtMjAsNyArMjAsNyBAQAogCTxDb25maWd1cmF0aW9ucz4NCiAJCTxDb25maWd1cmF0aW9uDQogCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCiAJCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCiAJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCiAJCQlVc2VPZk1GQz0iMCINCkBAIC00NSwxNCArNDUsMTQgQEAKIAkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCiAJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQorCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQogCQkJCUhlYWRlckZpbGVOYW1lPSIiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlPcHRpbWl6YXRpb249IjEiDQogCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KQEAgLTY3LDcgKzY3LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQzsuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC03NSwxMSArNzUsMTEgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLmV4ZSINCisJCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLmV4ZSINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KIAkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCkBAIC0xMzUsMTQgKzEzNSwxNCBAQAogCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KIAkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCisJCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCiAJCQkJSGVhZGVyRmlsZU5hbWU9IiINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCU9wdGltaXphdGlvbj0iMSINCiAJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCiAJCQkJUnVudGltZUxpYnJhcnk9IjAiDQpAQCAtMTU3LDcgKzE1Nyw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMTY1LDExICsxNjUsMTEgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LmV4ZSINCisJCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LmV4ZSINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KIAkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCkBAIC0yMDYsMzggKzIwNiwzOCBAQAogCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJ6bGliIg0KIAkJCQk+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC0yNTYsMTEgKzI1NiwxMSBAQAogCQkJRmlsdGVyPSJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZGVidWcudnNwcm9wcyBiL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvZGVidWcudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvZGVidWcudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAva2lsbF9weXRob24uYyBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIzMjNkMwotLS0gL2Rldi9udWxsCisrKyBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBIZWxwZXIgcHJvZ3JhbSBmb3Iga2lsbGluZyBsaW5nZXJpbmcgcHl0aG9uW19kXS5leGUgcHJvY2Vzc2VzIGJlZm9yZQorICogYnVpbGRpbmcsIHRodXMgYXR0ZW1wdGluZyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBkdWUgdG8gZmlsZXMgYmVpbmcKKyAqIGxvY2tlZC4KKyAqLworCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8dGxoZWxwMzIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjcHJhZ21hIGNvbW1lbnQobGliLCAicHNhcGkiKQorCisjaWZkZWYgX0RFQlVHCisjZGVmaW5lIFBZVEhPTl9FWEUgICAgICAgICAgKEwicHl0aG9uX2QuZXhlIikKKyNkZWZpbmUgUFlUSE9OX0VYRV9MRU4gICAgICAoMTIpCisjZGVmaW5lIEtJTExfUFlUSE9OX0VYRSAgICAgKEwia2lsbF9weXRob25fZC5leGUiKQorI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNykKKyNlbHNlCisjZGVmaW5lIFBZVEhPTl9FWEUgICAgICAgICAgKEwicHl0aG9uLmV4ZSIpCisjZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEwKQorI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uLmV4ZSIpCisjZGVmaW5lIEtJTExfUFlUSE9OX0VYRV9MRU4gKDE1KQorI2VuZGlmCisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgSEFORExFICAgaHAsIGhzcCwgaHNtOyAvKiBwcm9jZXNzLCBzbmFwc2hvdCBwcm9jZXNzZXMsIHNuYXBzaG90IG1vZHVsZXMgKi8KKyAgICBEV09SRCAgICBkYWMsIG91cl9waWQ7CisgICAgc2l6ZV90ICAgbGVuOworICAgIHdjaGFyX3QgIHBhdGhbTUFYX1BBVEgrMV07CisKKyAgICBNT0RVTEVFTlRSWTMyVyAgbWU7CisgICAgUFJPQ0VTU0VOVFJZMzJXIHBlOworCisgICAgbWUuZHdTaXplID0gc2l6ZW9mKE1PRFVMRUVOVFJZMzJXKTsKKyAgICBwZS5kd1NpemUgPSBzaXplb2YoUFJPQ0VTU0VOVFJZMzJXKTsKKworICAgIG1lbXNldChwYXRoLCAwLCBNQVhfUEFUSCsxKTsKKworICAgIG91cl9waWQgPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7CisKKyAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIG91cl9waWQpOworICAgIGlmIChoc20gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMV0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgeworICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBFbnVtZXJhdGUgb3ZlciB0aGUgbW9kdWxlcyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpbiBvcmRlciB0byBmaW5kCisgICAgICoga2lsbF9wcm9jZXNzW19kXS5leGUsIHRoZW4gdGFrZSBhIG5vdGUgb2YgdGhlIGRpcmVjdG9yeSBpdCBsaXZlcyBpbi4KKyAgICAgKi8KKyAgICBkbyB7CisgICAgICAgIGlmIChfd2NzbmljbXAobWUuc3pNb2R1bGUsIEtJTExfUFlUSE9OX0VYRSwgS0lMTF9QWVRIT05fRVhFX0xFTikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsZW4gPSB3Y3NubGVuX3MobWUuc3pFeGVQYXRoLCBNQVhfUEFUSCkgLSBLSUxMX1BZVEhPTl9FWEVfTEVOOworICAgICAgICB3Y3NuY3B5X3MocGF0aCwgTUFYX1BBVEgrMSwgbWUuc3pFeGVQYXRoLCBsZW4pOyAKKworICAgICAgICBicmVhazsKKworICAgIH0gd2hpbGUgKE1vZHVsZTMyTmV4dFcoaHNtLCAmbWUpKTsKKworICAgIENsb3NlSGFuZGxlKGhzbSk7CisKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIHByaW50ZigiZmFpbGVkIHRvIGRpc2Nlcm4gZGlyZWN0b3J5IG9mIHJ1bm5pbmcgcHJvY2Vzc1xuIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qCisgICAgICogVGFrZSBhIHNuYXBzaG90IG9mIHN5c3RlbSBwcm9jZXNzZXMuICBFbnVtZXJhdGUgb3ZlciB0aGUgc25hcHNob3QsCisgICAgICogbG9va2luZyBmb3IgcHl0aG9uIHByb2Nlc3Nlcy4gIFdoZW4gd2UgZmluZCBvbmUsIHZlcmlmeSBpdCBsaXZlcworICAgICAqIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3ZSBsaXZlIGluLiAgSWYgaXQgZG9lcywga2lsbCBpdC4gIElmIHdlJ3JlCisgICAgICogdW5hYmxlIHRvIGtpbGwgaXQsIHRyZWF0IHRoaXMgYXMgYSBmYXRhbCBlcnJvciBhbmQgcmV0dXJuIDEuCisgICAgICogCisgICAgICogVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBpcyB0aGF0IHdlJ3JlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIAorICAgICAqIGJ1aWxkIHByb2Nlc3Mgb24gdGhlIGJhc2lzIHRoYXQgd2UnbGwgdGFrZSBjYXJlIG9mIGtpbGxpbmcgYW55CisgICAgICogcnVubmluZyBpbnN0YW5jZXMsIHN1Y2ggdGhhdCB0aGUgYnVpbGQgd29uJ3QgZW5jb3VudGVyIHBlcm1pc3Npb24KKyAgICAgKiBkZW5pZWQgZXJyb3JzIGR1cmluZyBsaW5raW5nLiBJZiB3ZSBjYW4ndCBraWxsIG9uZSBvZiB0aGUgcHJvY2Vzc2VzLAorICAgICAqIHdlIGNhbid0IHByb3ZpZGUgdGhpcyBhc3N1cmFuY2UsIGFuZCB0aGUgYnVpbGQgc2hvdWxkbid0IHN0YXJ0LgorICAgICAqLworCisgICAgaHNwID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQUFJPQ0VTUywgMCk7CisgICAgaWYgKGhzcCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBwcmludGYoIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdFsyXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICghUHJvY2VzczMyRmlyc3RXKGhzcCwgJnBlKSkgeworICAgICAgICBwcmludGYoIlByb2Nlc3MzMkZpcnN0VyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGRhYyA9IFBST0NFU1NfUVVFUllfSU5GT1JNQVRJT04gfCBQUk9DRVNTX1ZNX1JFQUQgfCBQUk9DRVNTX1RFUk1JTkFURTsKKyAgICBkbyB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKKyAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCisgICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzNbX2RdLmRsbCksCisgICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgorICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCisgICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKF93Y3NuaWNtcChwZS5zekV4ZUZpbGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKKyAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBweXRob24gcHJvY2Vzcy4gKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qIEl0J3MgYSBweXRob24gcHJvY2Vzcywgc28gZmlndXJlIG91dCB3aGljaCBkaXJlY3RvcnkgaXQncyBpbi4uLiAqLworICAgICAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIHBlLnRoMzJQcm9jZXNzSUQpOworICAgICAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICAgICAgLyogCisgICAgICAgICAgICAgKiBJZiBvdXIgbW9kdWxlIHNuYXBzaG90IGZhaWxzICh3aGljaCB3aWxsIGhhcHBlbiBpZiB3ZSBkb24ndCBvd24KKyAgICAgICAgICAgICAqIHRoZSBwcm9jZXNzKSwganVzdCBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlLiAgKEl0IHNlZW1zIGRpZmZlcmVudAorICAgICAgICAgICAgICogdmVyc2lvbnMgb2YgV2luZG93cyByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBmb3IgR2V0TGFzdEVycm9yKCkKKyAgICAgICAgICAgICAqIGluIHRoaXMgc2l0dWF0aW9uOyBpdCdzIGVhc2llciB0byBqdXN0IGlnbm9yZSBpdCBhbmQgbW92ZSBvbiB2cy4KKyAgICAgICAgICAgICAqIHN0b3BwaW5nIHRoZSBidWlsZCBmb3Igd2hhdCBjb3VsZCBiZSBhIGZhbHNlIHBvc2l0aXZlLikKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7CisgICAgICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7CisgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCisgICAgICAgICAgICAgICAgLyogV3JvbmcgbW9kdWxlLCB3ZSdyZSBsb29raW5nIGZvciBweXRob25bX2RdLmV4ZS4uLiAqLworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoX3djc25pY21wKHBhdGgsIG1lLnN6RXhlUGF0aCwgbGVuKSkKKyAgICAgICAgICAgICAgICAvKiBQcm9jZXNzIGRvZXNuJ3QgbGl2ZSBpbiBvdXIgZGlyZWN0b3J5LiAqLworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvKiBQeXRob24gcHJvY2VzcyByZXNpZGluZyBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LCBraWxsIGl0ISAgKi8KKyAgICAgICAgICAgIGhwID0gT3BlblByb2Nlc3MoZGFjLCBGQUxTRSwgcGUudGgzMlByb2Nlc3NJRCk7CisgICAgICAgICAgICBpZiAoIWhwKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJPcGVuUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIVRlcm1pbmF0ZVByb2Nlc3MoaHAsIDEpKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJUZXJtaW5hdGVQcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7CisKKyAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKworICAgIH0gd2hpbGUgKFByb2Nlc3MzMk5leHRXKGhzcCwgJnBlKSk7CisKKyAgICBDbG9zZUhhbmRsZShoc3ApOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIHZpOiBzZXQgdHM9OCBzdz00IHN0cz00IGV4cGFuZHRhYiAqLwpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3Byb2ogYi9QQy9WUzkuMC9raWxsX3B5dGhvbi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQva2lsbF9weXRob24udmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9raWxsX3B5dGhvbi52Y3Byb2oKZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMgYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNGE2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jCkBAIC0wLDAgKzEsMTk1IEBACisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxpby5oPgorCisjZGVmaW5lIENNRF9TSVpFIDUwMAorCisvKiBUaGlzIGZpbGUgY3JlYXRlcyB0aGUgZ2V0YnVpbGRpbmZvLm8gb2JqZWN0LCBieSBmaXJzdAorICAgaW52b2tpbmcgc3Vid2NyZXYuZXhlIChpZiBmb3VuZCksIGFuZCB0aGVuIGludm9raW5nIGNsLmV4ZS4KKyAgIEFzIGEgc2lkZSBlZmZlY3QsIGl0IG1pZ2h0IGdlbmVyYXRlIFBDQnVpbGRcZ2V0YnVpbGRpbmZvMi5jCisgICBhbHNvLiBJZiB0aGlzIGlzbid0IGEgc3VidmVyc2lvbiBjaGVja291dCwgb3Igc3Vid2NyZXYgaXNuJ3QKKyAgIGZvdW5kLCBpdCBjb21waWxlcyAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIGluc3RlYWQuCisKKyAgIEN1cnJlbnRseSwgc3Vid2NyZXYuZXhlIGlzIGZvdW5kIGZyb20gdGhlIHJlZ2lzdHJ5IGVudHJpZXMKKyAgIG9mIFRvcnRvaXNlU1ZOLgorCisgICBObyBhdHRlbXB0IGlzIG1hZGUgdG8gcGxhY2UgZ2V0YnVpbGRpbmZvLm8gaW50byB0aGUgcHJvcGVyCisgICBiaW5hcnkgZGlyZWN0b3J5LiBUaGlzIGlzbid0IG5lY2Vzc2FyeSwgYXMgdGhpcyB0b29sIGlzCisgICBpbnZva2VkIGFzIGEgcHJlLWxpbmsgc3RlcCBmb3IgcHl0aG9uY29yZSwgc28gdGhhdCBvdmVyd3JpdGVzCisgICBhbnkgcHJldmlvdXMgZ2V0YnVpbGRpbmZvLm8uCisKKyAgIEhvd2V2ZXIsIGlmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCB0aGlzIHdpbGwgYmUgdXNlZAorICAgYXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdoZXJlIGFueSBnZXRidWlsZGluZm8yLmMgYW5kCisgICBnZXRidWlsZGluZm8ubyBmaWxlcyBhcmUgcHV0LiAgVGhpcyBpcyB1c2VmdWwgaWYgbXVsdGlwbGUKKyAgIGNvbmZpZ3VyYXRpb25zIGFyZSBiZWluZyBidWlsdCBpbiBwYXJhbGxlbCwgdG8gYXZvaWQgdGhlbQorICAgdHJhbXBsaW5nIGVhY2ggb3RoZXIncyBmaWxlcy4KKworKi8KKworaW50IG1ha2VfYnVpbGRpbmZvMihjb25zdCBjaGFyICp0bXBwYXRoKQoreworICAgIHN0cnVjdCBfc3RhdCBzdDsKKyAgICBIS0VZIGhUb3J0b2lzZTsKKyAgICBjaGFyIGNvbW1hbmRbQ01EX1NJWkUrMV07CisgICAgRFdPUkQgdHlwZSwgc2l6ZTsKKyAgICBpZiAoX3N0YXQoIi5zdm4iLCAmc3QpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogQWxsb3cgc3VwcHJlc3Npb24gb2Ygc3Vid2NyZXYuZXhlIGludm9jYXRpb24gaWYgYSBub19zdWJ3Y3JldiBmaWxlIGlzIHByZXNlbnQuICovCisgICAgaWYgKF9zdGF0KCJub19zdWJ3Y3JldiIsICZzdCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFJlZ09wZW5LZXkoSEtFWV9MT0NBTF9NQUNISU5FLCAiU29mdHdhcmVcXFRvcnRvaXNlU1ZOIiwgJmhUb3J0b2lzZSkgIT0gRVJST1JfU1VDQ0VTUyAmJgorICAgICAgICBSZWdPcGVuS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCAiU29mdHdhcmVcXFRvcnRvaXNlU1ZOIiwgJmhUb3J0b2lzZSkgIT0gRVJST1JfU1VDQ0VTUykKKyAgICAgICAgLyogVG9ydG9pc2Ugbm90IGluc3RhbGxlZCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICBjb21tYW5kWzBdID0gJyInOyAgLyogcXVvdGUgdGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUgKi8KKyAgICBzaXplID0gc2l6ZW9mKGNvbW1hbmQpIC0gMTsKKyAgICBpZiAoUmVnUXVlcnlWYWx1ZUV4KGhUb3J0b2lzZSwgIkRpcmVjdG9yeSIsIDAsICZ0eXBlLCBjb21tYW5kKzEsICZzaXplKSAhPSBFUlJPUl9TVUNDRVNTIHx8CisgICAgICAgIHR5cGUgIT0gUkVHX1NaKQorICAgICAgICAvKiBSZWdpc3RyeSBjb3JydXB0ZWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJiaW5cXHN1YndjcmV2LmV4ZSIpOworICAgIGlmIChfc3RhdChjb21tYW5kKzEsICZzdCkgPCAwKQorICAgICAgICAvKiBzdWJ3Y3Jldi5leGUgbm90IHBhcnQgb2YgdGhlIHJlbGVhc2UgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiAuLlxcLi4gLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBcIiIpOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsgLyogcXVvdGVkIHRtcHBhdGggKi8KKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIik7CisKKyAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKKyAgICBpZiAoc3lzdGVtKGNvbW1hbmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDE7Cit9CisKK2NvbnN0IGNoYXIgREVMSU1TW10gPSB7ICIgXG4iIH07CisKK2ludCBnZXRfbWVyY3VyaWFsX2luZm8oY2hhciAqIGhnYnJhbmNoLCBjaGFyICogaGd0YWcsIGNoYXIgKiBoZ3JldiwgaW50IHNpemUpCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgY2hhciBmaWxlbmFtZVtDTURfU0laRV07CisgICAgY2hhciBjbWRsaW5lW0NNRF9TSVpFXTsKKworICAgIHN0cmNweV9zKGZpbGVuYW1lLCBDTURfU0laRSwgInRtcFhYWFhYWCIpOworICAgIGlmIChfbWt0ZW1wX3MoZmlsZW5hbWUsIENNRF9TSVpFKSA9PSAwKSB7CisgICAgICAgIGludCByYzsKKworICAgICAgICBzdHJjcHlfcyhjbWRsaW5lLCBDTURfU0laRSwgImhnIGlkIC1iaXQgPiAiKTsKKyAgICAgICAgc3RyY2F0X3MoY21kbGluZSwgQ01EX1NJWkUsIGZpbGVuYW1lKTsKKyAgICAgICAgcmMgPSBzeXN0ZW0oY21kbGluZSk7CisgICAgICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgICAgICBGSUxFICogZnA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChmb3Blbl9zKCZmcCwgZmlsZW5hbWUsICJyIikgPT0gMCkgeworICAgICAgICAgICAgICAgIGNoYXIgKiBjcCA9IGZnZXRzKGNtZGxpbmUsIENNRF9TSVpFLCBmcCk7CisKKyAgICAgICAgICAgICAgICBpZiAoY3ApIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqIGNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBjaGFyICogdHAgPSBzdHJ0b2tfcyhjcCwgREVMSU1TLCAmY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdyZXYsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRwID0gc3RydG9rX3MoTlVMTCwgREVMSU1TLCAmY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ2JyYW5jaCwgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwID0gc3RydG9rX3MoTlVMTCwgREVMSU1TLCAmY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhndGFnLCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgX3VubGluayhmaWxlbmFtZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKmFyZ3ZbXSkKK3sKKyAgICBjaGFyIGNvbW1hbmRbQ01EX1NJWkVdID0gImNsLmV4ZSAtYyAtRF9XSU4zMiAtRFVTRV9ETF9FWFBPUlQgLURfV0lORE9XUyAtRFdJTjMyIC1EX1dJTkRMTCAiOworICAgIGNoYXIgdG1wcGF0aFtDTURfU0laRV0gPSAiIjsKKyAgICBpbnQgZG9fdW5saW5rLCByZXN1bHQ7CisgICAgY2hhciAqdG1wZGlyID0gTlVMTDsKKyAgICBpZiAoYXJnYyA8PSAyIHx8IGFyZ2MgPiAzKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibWFrZV9idWlsZGluZm8gJChDb25maWd1cmF0aW9uTmFtZSkgW3RtcGRpcl1cbiIpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlIikgPT0gMCkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJEZWJ1ZyIpID09IDApIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItRF9ERUJVRyAtTURkICIpOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VJdGFuaXVtIikgPT0gMCkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAvVVNFQ0w6TVNfSVRBTklVTSAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlQU1ENjQiKSA9PSAwKSB7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EICIpOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAvVVNFQ0w6TVNfT1BURVJPTiAiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiAlc1xuIiwgYXJndlsxXSk7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorICAgIGlmIChhcmdjID4gMikgeworICAgICAgICB0bXBkaXIgPSBhcmd2WzJdOworICAgICAgICBzdHJjYXRfcyh0bXBwYXRoLCBfY291bnRvZih0bXBwYXRoKSwgdG1wZGlyKTsKKyAgICAgICAgLyogSGFjayBmaXggZm9yIGJhZCBjb21tYW5kIGxpbmU6ICBJZiB0aGUgY29tbWFuZCBpcyBpc3N1ZWQgbGlrZSB0aGlzOgorICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSIKKyAgICAgICAgICogd2Ugd2lsbCBnZXQgYSB0cmFpbGluZyBxdW90ZSBiZWNhdXNlIEludERpciBlbmRzIHdpdGggYSBiYWNrc2xhc2ggdGhhdCB0aGVuCisgICAgICAgICAqIGVzY2FwZXMgdGhlIGZpbmFsICIuICBUbyBzaW1wbGlmeSB0aGUgbGlmZSBmb3IgZGV2ZWxvcGVycywgY2F0Y2ggdGhhdCBwcm9ibGVtCisgICAgICAgICAqIGhlcmUgYnkgY3V0dGluZyBpdCBvZmYuCisgICAgICAgICAqIFRoZSBwcm9wZXIgY29tbWFuZCBsaW5lLCBidHcgaXM6CisgICAgICAgICAqICQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpXCIKKyAgICAgICAgICogSG9vcmF5IGZvciBjb21tYW5kIGxpbmUgcGFyc2luZyBvbiB3aW5kb3dzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHN0cmxlbih0bXBwYXRoKSA+IDAgJiYgdG1wcGF0aFtzdHJsZW4odG1wcGF0aCktMV0gPT0gJyInKQorICAgICAgICAgICAgdG1wcGF0aFtzdHJsZW4odG1wcGF0aCktMV0gPSAnXDAnOworICAgICAgICBzdHJjYXRfcyh0bXBwYXRoLCBfY291bnRvZih0bXBwYXRoKSwgIlxcIik7CisgICAgfQorCisgICAgaWYgKChkb191bmxpbmsgPSBtYWtlX2J1aWxkaW5mbzIodG1wcGF0aCkpKSB7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIC1EU1VCV0NSRVYgIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjaGFyIGhndGFnW0NNRF9TSVpFXTsKKyAgICAgICAgY2hhciBoZ2JyYW5jaFtDTURfU0laRV07CisgICAgICAgIGNoYXIgaGdyZXZbQ01EX1NJWkVdOworCisgICAgICAgIGlmIChnZXRfbWVyY3VyaWFsX2luZm8oaGdicmFuY2gsIGhndGFnLCBoZ3JldiwgQ01EX1NJWkUpKSB7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1ESEdCUkFOQ0g9XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhnYnJhbmNoKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOworCisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVEFHPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3RhZyk7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKKworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1ZFUlNJT049XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhncmV2KTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiAiKTsKKyAgICAgICAgfQorICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMiKTsKKyAgICB9CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLUZvXCIiKTsKKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8ub1wiIC1JLi5cXC4uXFxJbmNsdWRlIC1JLi5cXC4uXFxQQyIpOworICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOworICAgIHJlc3VsdCA9IHN5c3RlbShjb21tYW5kKTsKKyAgICBpZiAoZG9fdW5saW5rKSB7CisgICAgICAgIGNvbW1hbmRbMF0gPSAnXDAnOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiIpOworICAgICAgICBfdW5saW5rKGNvbW1hbmQpOworICAgIH0KKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmNwcm9qIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvbWFrZV9idWlsZGluZm8udmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKaW5kZXggMTkxMGI5ZS4uOTI0MDY1ZCAxMDA2NDQKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKKysrIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUwIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Im1ha2VfYnVpbGRpbmZvIg0KIAlQcm9qZWN0R1VJRD0ie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQogCVJvb3ROYW1lc3BhY2U9Im1ha2VfYnVpbGRpbmZvIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2ogYi9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagppbmRleCA4ODFmNDRiLi4wYTFmZDI4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCisrKyBiL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Im1ha2VfdmVyc2lvbmluZm8iDQogCVByb2plY3RHVUlEPSJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCiAJUm9vdE5hbWVzcGFjZT0ibWFrZV92ZXJzaW9uaW5mbyINCkBAIC0zMiw4ICszMiw4IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCiAJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaCINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjLmgiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KQEAgLTkyLDcgKzkyLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQpAQCAtMTA2LDggKzEwNiw4IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCiAJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaCINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjLmgiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KQEAgLTE1OCw3ICsxNTgsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC0xNzUsOCArMTc1LDggQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KIAkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQpAQCAtMjM1LDcgKzIzNSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQpAQCAtMjQ5LDggKzI0OSw4IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCiAJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaCINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yY19kLmgiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KQEAgLTMwMyw3ICszMDMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCTwvQ29uZmlndXJhdGlvbnM+DQpAQCAtMzE0LDcgKzMxNCw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3BjYnVpbGQuc2xuIGIvUEMvVlM5LjAvcGNidWlsZC5zbG4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY4Y2JiNgotLS0gL2Rldi9udWxsCisrKyBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCkBAIC0wLDAgKzEsNjU4IEBACitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMA0KKyMgVmlzdWFsIFN0dWRpbyAyMDA4DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3OXhwb3BlbiIsICJ3OXhwb3Blbi52Y3Byb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQorCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KKwkJLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCisJCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2RlY2ltYWwiLCAiX2RlY2ltYWwudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmNwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjcHJvaiIsICJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0gPSB7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zc2wiLCAiX3NzbC52Y3Byb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9ID0gezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0NCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjcHJvaiIsICJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9iejIiLCAiX2J6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbHptYSIsICJfbHptYS52Y3Byb2oiLCAie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsIiwgInNzbC52Y3Byb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3Byb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uM2RsbCIsICJweXRob24zZGxsLnZjcHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjcHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGJ1ZmZlciIsICJfdGVzdGJ1ZmZlci52Y3Byb2oiLCAie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorR2xvYmFsDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQorCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCisJCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJUEdJbnN0cnVtZW50fHg2NCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCVBHVXBkYXRlfFdpbjMyID0gUEdVcGRhdGV8V2luMzINCisJCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NA0KKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCisJCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KKwlFbmRHbG9iYWxTZWN0aW9uDQorRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ2luc3RydW1lbnQudnNwcm9wcyBiL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3BnaW5zdHJ1bWVudC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ3VwZGF0ZS52c3Byb3BzIGIvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9wZ3VwZGF0ZS52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZC52c3Byb3BzIGIvUEMvVlM5LjAvcHlkLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHlkLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5ZC52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZF9kLnZzcHJvcHMgYi9QQy9WUzkuMC9weWRfZC52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5ZF9kLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5ZF9kLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlleHBhdC52Y3Byb2ogYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5ZXhwYXQudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9weWV4cGF0LnZjcHJvagppbmRleCA1YTIwYTUxLi5hOGQyY2Q3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5ZXhwYXQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InB5ZXhwYXQiDQogCVByb2plY3RHVUlEPSJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSINCiAJUm9vdE5hbWVzcGFjZT0icHlleHBhdCINCkBAIC00Miw3ICs0Miw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0xMDMsNyArMTAzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTE2NCw3ICsxNjQsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMjI2LDcgKzIyNiw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0yODcsNyArMjg3LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTM0OSw3ICszNDksNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNDExLDcgKzQxMSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00NzMsNyArNDczLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTUxOSwxMSArNTE5LDExIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MzEsMTkgKzUzMSwxOSBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNccHlleHBhdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHlleHBhdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHlwcm9qZWN0LnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCmluZGV4IDZhOTRhNjguLjAxYzdjYTcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlwcm9qZWN0LnZzcHJvcHMKKysrIGIvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMKQEAgLTExLDcgKzExLDcgQEAKIAkJT3B0aW1pemF0aW9uPSIyIg0KIAkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQogCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlOyAuLlxQQyINCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7IC4uXC4uXFBDIg0KIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU4zMiINCiAJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQogCQlFeGNlcHRpb25IYW5kbGluZz0iMCINCkBAIC0zNCwxMSArMzQsMTEgQEAKIAkvPg0KIAk8VG9vbA0KIAkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFBDOy4uXEluY2x1ZGUiDQorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxJbmNsdWRlIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJQeURsbE5hbWUiDQotCQlWYWx1ZT0icHl0aG9uMzIiDQorCQlWYWx1ZT0icHl0aG9uMzMiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9IlB5dGhvbkV4ZSINCkBAIC00NiwxOSArNDYsMjMgQEAKIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJleHRlcm5hbHNEaXIiDQotCQlWYWx1ZT0iLi5cLi4iDQorCQlWYWx1ZT0iLi5cLi5cLi4iDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9InNxbGl0ZTNEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjcuNCINCisJCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcc3FsaXRlLTMuNy4xMiINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iYnoyRGlyIg0KIAkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNiINCiAJLz4NCiAJPFVzZXJNYWNybw0KKwkJTmFtZT0ibHptYURpciINCisJCVZhbHVlPSIkKGV4dGVybmFsc0RpcilceHotNS4wLjMiDQorCS8+DQorCTxVc2VyTWFjcm8NCiAJCU5hbWU9Im9wZW5zc2xEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjBqIg0KKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4xYyINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0idGNsdGtEaXIiDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9uLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5dGhvbi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKaW5kZXggNDdiMjg5ZS4uYjA3ZGUyMSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24udmNwcm9qCisrKyBiL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9uIg0KIAlQcm9qZWN0R1VJRD0ie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQogCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCkBAIC0yMDIsNyArMjAyLDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTI3Nyw3ICsyNzcsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNjE1LDExICs2MTUsMTEgQEAKIAkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5Y29uLmljbyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbi5pY28iDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob25fZXhlLnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC02MjcsNyArNjI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHB5dGhvbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHl0aG9uLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9uM2RsbC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gUENidWlsZC9weXRob24zZGxsLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvcHl0aG9uM2RsbC52Y3Byb2oKaW5kZXggNTJjNjc1Mi4uZWQ3MzMzYiAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24zZGxsLnZjcHJvagorKysgYi9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJweXRob24zZGxsIg0KIAlQcm9qZWN0R1VJRD0iezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQogCVJvb3ROYW1lc3BhY2U9InB5dGhvbjNkbGwiDQpAQCAtMjcsOSArMjcsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTQ2LDkgKzQ2LDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC02NSw5ICs2NSw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtODQsOSArODQsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTEwMyw5ICsxMDMsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTEyMiw5ICsxMjIsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTE0NCw3ICsxNDQsNyBAQAogCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uMy5kZWYiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uMy5kZWYiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KQEAgLTE3Miw3ICsxNzIsNyBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uM2RsbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbjNkbGwuYyINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQpAQCAtMjEyLDcgKzIxMiw3IEBACiAJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob25fbnQucmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA2MSUKcmVuYW1lIGZyb20gUENidWlsZC9weXRob25jb3JlLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKaW5kZXggNWU2MTMwOC4uOWZiNjNmZiAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjcHJvagorKysgYi9QQy9WUzkuMC9weXRob25jb3JlLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJweXRob25jb3JlIg0KIAlQcm9qZWN0R1VJRD0ie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQogCVJvb3ROYW1lc3BhY2U9InB5dGhvbmNvcmUiDQpAQCAtNDMsNyArNDMsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJLz4NCkBAIC01NCw3ICs1NCw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0xMTgsNyArMTE4LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtMTI5LDcgKzEyOSw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0xOTYsNyArMTk2LDcgQEAKIAkJCQlPcHRpbWl6YXRpb249IjAiDQogCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KIAkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KIAkJCS8+DQpAQCAtMjA3LDcgKzIwNyw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0yNzQsNyArMjc0LDcgQEAKIAkJCQlPcHRpbWl6YXRpb249IjAiDQogCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KIAkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KIAkJCS8+DQpAQCAtMjg1LDcgKzI4NSw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0zNDgsNyArMzQ4LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtMzU5LDcgKzM1OSw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC00MjMsNyArNDIzLDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtNDM0LDcgKzQzNCw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC00OTgsNyArNDk4LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtNTA5LDcgKzUwOSw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC01NzMsNyArNTczLDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtNTg0LDcgKzU4NCw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC02MzEsMzU5ICs2MzEsMzYzIEBACiAJCQlOYW1lPSJJbmNsdWRlIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYWJzdHJhY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFic3RyYWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGFjY3UuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFjY3UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYXNkbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXNkbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxhc3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxiaXRzZXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJpdHNldC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlYXJyYXlvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYnl0ZXNvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY2V2YWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNldmFsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjb2RlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNvZGVjcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZWNzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNvbXBpbGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBpbGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxkYXRldGltZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGF0ZXRpbWUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZGVzY3JvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGVycmNvZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGVycmNvZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZXZhbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZXZhbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZpbGV1dGlscy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZXV0aWxzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZsb2F0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmb3JtYXR0ZXJfdW5pY29kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZnVuY29iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ2Vub2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGdlbm9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ3JhbWluaXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZ3JhbWluaXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdyYW1tYXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZ3JhbW1hci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaW1wb3J0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGltcG9ydC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaW50cmNoZWNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGludHJjaGVjay5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxpdGVyb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGxpc3RvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1hcnNoYWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbWFyc2hhbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1lbW9yeW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtZXRob2RvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbmFtZXNwYWNlb2JqZWN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG5vZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbm9kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqaW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxvYmppbXBsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvcGNvZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvc2RlZnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwYXJzZXRvay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHBnZW4uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweV9jdXJzZXMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlfY3Vyc2VzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWFyZW5hLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5YXJlbmEuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWNhcHN1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Y3R5cGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHljdHlwZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlkZWJ1Zy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWRlYnVnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWVycm9ycy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWVycm9ycy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlleHBhdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWV4cGF0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWZwZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWZwZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlnZXRvcHQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlnZXRvcHQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWFjdG9vbGJveC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWF0aC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweW1hdGguaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGltZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXRpbWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWFjcm8uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHltZW0uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWVtLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5cG9ydC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlwb3J0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5c3RhdGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RhdGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlzdHJjbXAuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RyY21wLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cnRvZC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxkdG9hLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkdG9hLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcUHl0aG9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxQeXRob24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHl0aG9ucnVuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRob25ydW4uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHl0aHJlYWQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhyZWFkLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzZXRvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHNldG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc3RydWN0c2VxLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzdHJ1Y3RzZXEuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc3ltdGFibGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5bXRhYmxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN5c21vZHVsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHRpbWVmdW5jcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdGltZWZ1bmNzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHRva2VuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0b2tlbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx0cmFjZWJhY2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRyYWNlYmFjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdWNuaGFzaC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdWNuaGFzaC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTk5MSwyMjIgKzk5NSwyMjIgQEAKIAkJCU5hbWU9Ik1vZHVsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2Nzdi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Nzdi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9qc29uLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfanNvbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9sc3Byb2YuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sc3Byb2YuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX21hdGguYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tYXRoLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tYXRoLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfcGlja2xlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcGlja2xlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NyZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NyZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3RydWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3RydWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90aW1lLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfd2Vha3JlZi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGltZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3dpbmFwaS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfd2Vha3JlZi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xhdGV4aXRtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYXVkaW9vcC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYmluYXNjaWkuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGF0ZXRpbWVtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xlcnJub21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xlcnJub21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZmF1bHRoYW5kbGVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGdjbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xnY21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xtYWluLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYWluLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xvcGVyYXRvci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcb3BlcmF0b3IuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNccG9zaXhtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNoYTFtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTFtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc2hhMjU2bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaWduYWxtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4c3VidHlwZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHppcGltcG9ydC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJfaW8iDQogCQkJCT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXHRleHRpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQpAQCAtMTIxNCwzMSArMTIxOCwzMSBAQAogCQkJCU5hbWU9InpsaWIiDQogCQkJCT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGd6aW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGd6aW8uYyINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQpAQCAtMTMwNiw2NyArMTMxMCw2NyBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZmaXhlZC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5pbi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcemxpYi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemxpYi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCkBAIC0xMzc0LDcxICsxMzc4LDcxIEBACiAJCQkJTmFtZT0iY2prY29kZWNzIg0KIAkJCQk+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19oay5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19oay5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc190dy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc190dy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KQEAgLTE0NDcsMTc1ICsxNDUxLDE3OSBAQAogCQkJTmFtZT0iT2JqZWN0cyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGFic3RyYWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhYnN0cmFjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xhY2N1LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhY2N1LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGJvb2xvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJvb2xvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xieXRlc29iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY2Fwc3VsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2Fwc3VsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZGVzY3JvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGRpY3RvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZW51bW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZW51bW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmluZC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xnZW5vYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcaXRlcm9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcaXRlcm9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGxvbmdvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxvbmdvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcb2JtYWxsb2MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJccGFydGl0aW9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzZXRvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzZXRvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxzcGxpdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RydWN0c2VxLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHR5cGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdHlwZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMTYyMyw1OSArMTYzMSw1OSBAQAogCQkJTmFtZT0iUGFyc2VyIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxhY2NlbGVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGFjY2VsZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxiaXRzZXQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcZmlyc3RzZXRzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGZpcnN0c2V0cy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGdyYW1tYXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGdyYW1tYXIxLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIxLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcbGlzdG5vZGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbGlzdG5vZGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXG15cmVhZGxpbmUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbXlyZWFkbGluZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXG5vZGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbm9kZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHBhcnNlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxwYXJzZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJccGFyc2V0b2suYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2V0b2suYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclx0b2tlbml6ZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcdG9rZW5pemVyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHRva2VuaXplci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMTY4MywzOSArMTY5MSwzMSBAQAogCQkJTmFtZT0iUEMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcX3N1YnByb2Nlc3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5yZWcuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHdpbnJlZy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGNvbmZpZy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcY29uZmlnLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZGxfbnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGRsX250LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZXJybWFwLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xlcnJtYXAuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xnZXRwYXRocC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcZ2V0cGF0aHAuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtc3ZjcnRtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGltcG9ydF9udC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweWNvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC0xNzIzLDE5MSArMTcyMywxOTEgQEAKIAkJCU5hbWU9IlB5dGhvbiINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cX3dhcm5pbmdzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXF93YXJuaW5ncy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGFzZGwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXNkbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGFzdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxibHRpbm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxibHRpbm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGNldmFsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNldmFsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cY29kZWNzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvZGVjcy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGNvbXBpbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY29tcGlsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZXJyb3JzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGVycm9ycy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGZpbGV1dGlscy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmaWxldXRpbHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGZyb3plbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmcm96ZW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxmdXR1cmUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZnV0dXJlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0YXJncy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0b3B0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldG9wdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0dmVyc2lvbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ3JhbWluaXQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ3JhbWluaXQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxpbXBvcnQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25caW1wb3J0ZGwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxpbXBvcnRkbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXG1hcnNoYWwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbWFyc2hhbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbW9kc3VwcG9ydC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXG15c25wcmludGYuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzbnByaW50Zi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXG15c3RydG91bC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxwZWVwaG9sZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5YXJlbmEuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlhcmVuYS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5Y3R5cGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHljdHlwZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5ZnBlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5ZnBlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHltYXRoLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5bWF0aC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5dGltZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRpbWUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXN0YXRlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RhdGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXN0cmNtcC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cmNtcC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5c3RydG9kLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RydG9kLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZHRvYS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkdG9hLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cUHl0aG9uLWFzdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxQeXRob24tYXN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHl0aG9ucnVuLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KICAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxyYW5kb20uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccmFuZG9tLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHN5bXRhYmxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5bXRhYmxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cc3lzbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5c21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHRocmVhZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkX250LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cdHJhY2ViYWNrLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRyYWNlYmFjay5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMTkxNSw3ICsxOTE1LDcgQEAKIAkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbl9udC5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fbnQucmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbncudmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9udy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9weXRob253LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvcHl0aG9udy52Y3Byb2oKaW5kZXggN2FlNTYyYS4uN2Y1YzA0YiAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob253LnZjcHJvagorKysgYi9QQy9WUzkuMC9weXRob253LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJweXRob253Ig0KIAlQcm9qZWN0R1VJRD0ie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQogCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCkBAIC02MDAsNyArNjAwLDcgQEAKIAkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbl9leGUucmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTYwOCw3ICs2MDgsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXFdpbk1haW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xXaW5NYWluLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlbGVhc2UudnNwcm9wcyBiL1BDL1ZTOS4wL3JlbGVhc2UudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9yZWxlYXNlLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3JlbGVhc2UudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9zZWxlY3QudmNwcm9qIGIvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3NlbGVjdC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKaW5kZXggMDJlMGEyZi4uNjM3ZmQ5NyAxMDA2NDQKLS0tIGEvUENidWlsZC9zZWxlY3QudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ic2VsZWN0Ig0KIAlQcm9qZWN0R1VJRD0iezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQogCVJvb3ROYW1lc3BhY2U9InNlbGVjdCINCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUENidWlsZC9zcWxpdGUzLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2oKaW5kZXggZTE3NzFmNC4uZWY4YzMyOCAxMDA2NDQKLS0tIGEvUENidWlsZC9zcWxpdGUzLnZjcHJvagorKysgYi9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJzcWxpdGUzIg0KIAlQcm9qZWN0R1VJRD0ie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQogCVJvb3ROYW1lc3BhY2U9InNxbGl0ZTMiDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZzcHJvcHMgYi9QQy9WUzkuMC9zcWxpdGUzLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvc3FsaXRlMy52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9zcWxpdGUzLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3NsLnZjcHJvaiBiL1BDL1ZTOS4wL3NzbC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUENidWlsZC9zc2wudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9zc2wudmNwcm9qCmluZGV4IGVjMmJlMzAuLmQzMGU4NzcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc3NsLnZjcHJvagorKysgYi9QQy9WUzkuMC9zc2wudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InNzbCINCiAJUHJvamVjdEdVSUQ9IntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KIAlSb290TmFtZXNwYWNlPSJzc2wiDQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3Byb2ogYi9QQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gUENidWlsZC91bmljb2RlZGF0YS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagppbmRleCA1OTY4MmExLi5iNjZmZjcyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjcHJvagorKysgYi9QQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0idW5pY29kZWRhdGEiDQogCVByb2plY3RHVUlEPSJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCiAJUm9vdE5hbWVzcGFjZT0idW5pY29kZWRhdGEiDQpAQCAtNTExLDExICs1MTEsMTEgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTUyMyw3ICs1MjMsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjcHJvaiBiL1BDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3c5eHBvcGVuLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvdzl4cG9wZW4udmNwcm9qCmluZGV4IDA1ZDhmODEuLjdhODViMDAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvdzl4cG9wZW4udmNwcm9qCisrKyBiL1BDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJ3OXhwb3BlbiINCiAJUHJvamVjdEdVSUQ9IntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KIAlSb290TmFtZXNwYWNlPSJ3OXhwb3BlbiINCkBAIC01NjYsNyArNTY2LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1x3OXhwb3Blbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHc5eHBvcGVuLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3dpbnNvdW5kLnZjcHJvaiBiL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3dpbnNvdW5kLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvd2luc291bmQudmNwcm9qCmluZGV4IDY5NDcwY2MuLjQ3ZGJmMjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvd2luc291bmQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJ3aW5zb3VuZCINCiAJUHJvamVjdEdVSUQ9InsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KIAlSb290TmFtZXNwYWNlPSJ3aW5zb3VuZCINCkBAIC01MTMsNyArNTEzLDcgQEAKIAkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHdpbnNvdW5kLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2luc291bmQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQveDY0LnZzcHJvcHMgYi9QQy9WUzkuMC94NjQudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC94NjQudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAveDY0LnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjcHJvaiBiL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC94eGxpbWl0ZWQudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC94eGxpbWl0ZWQudmNwcm9qCmluZGV4IDZkYTIwMTYuLmEzYWFhZDYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQveHhsaW1pdGVkLnZjcHJvagorKysgYi9QQy9WUzkuMC94eGxpbWl0ZWQudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Inh4bGltaXRlZCINCiAJUHJvamVjdEdVSUQ9IntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KIAlSb290TmFtZXNwYWNlPSJ4eGxpbWl0ZWQiDQpAQCAtNDA3LDcgKzQwNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4bGltaXRlZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUEMvX21zaS5jIGIvUEMvX21zaS5jCmluZGV4IGQ0ZDg0ODMuLjBiNWI5NGUgMTAwNjQ0Ci0tLSBhL1BDL19tc2kuYworKysgYi9QQy9fbXNpLmMKQEAgLTE4LDcgKzE4LDcgQEAKIHV1aWRjcmVhdGUoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqYXJncykKIHsKICAgICBVVUlEIHJlc3VsdDsKLSAgICB1bnNpZ25lZCBzaG9ydCAqY3Jlc3VsdDsKKyAgICB3Y2hhcl90ICpjcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvcmVzdWx0OwogCiAgICAgLyogTWF5IHJldHVybiBvaywgbG9jYWwgb25seSwgYW5kIG5vIGFkZHJlc3MuCkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG9yZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY3Jlc3VsdCwgd2NzbGVuKGNyZXN1bHQpKTsKKyAgICBvcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihjcmVzdWx0LCB3Y3NsZW4oY3Jlc3VsdCkpOwogICAgIFJwY1N0cmluZ0ZyZWVXKCZjcmVzdWx0KTsKICAgICByZXR1cm4gb3Jlc3VsdDsKIApAQCAtMTIyLDcgKzEyMiw5IEBACiBzdGF0aWMgRk5GQ0lTVEFUVVMoY2Jfc3RhdHVzKQogewogICAgIGlmIChwdikgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChwdiwgInN0YXR1cyIsICJpaWkiLCB0eXBlU3RhdHVzLCBjYjEsIGNiMik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHN0YXR1cyk7CisKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHYsICZQeUlkX3N0YXR1cywgImlpaSIsIHR5cGVTdGF0dXMsIGNiMSwgY2IyKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTEzMyw3ICsxMzUsOSBAQAogc3RhdGljIEZORkNJR0VUTkVYVENBQklORVQoY2JfZ2V0bmV4dGNhYmluZXQpCiB7CiAgICAgaWYgKHB2KSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHB2LCAiZ2V0bmV4dGNhYmluZXQiLCAiaSIsIHBjY2FiLT5pQ2FiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZ2V0bmV4dGNhYmluZXQpOworCisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHB2LCAmUHlJZF9nZXRuZXh0Y2FiaW5ldCwgImkiLCBwY2NhYi0+aUNhYik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHJlc3VsdCkpIHsKQEAgLTM3NSw3ICszNzksNyBAQAogICAgIH0KICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBtc2llcnJvcigoaW50KSBzdGF0dXMpOwotICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShyZXMsIHNpemUpOworICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmVzLCBzaXplKTsKICAgICBpZiAoYnVmICE9IHJlcykKICAgICAgICAgZnJlZShyZXMpOwogICAgIHJldHVybiBzdHJpbmc7CkBAIC0zOTcsNyArNDAxLDcgQEAKIHsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBmaWVsZDsKLSAgICBQeV9VTklDT0RFICpkYXRhOworICAgIHdjaGFyX3QgKmRhdGE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml1OlNldFN0cmluZyIsICZmaWVsZCwgJmRhdGEpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQxNCw3ICs0MTgsNyBAQAogewogICAgIGludCBzdGF0dXM7CiAgICAgaW50IGZpZWxkOwotICAgIFB5X1VOSUNPREUgKmRhdGE7CisgICAgd2NoYXJfdCAqZGF0YTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXU6U2V0U3RyZWFtIiwgJmZpZWxkLCAmZGF0YSkpCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvUEMvX3N1YnByb2Nlc3MuYyBiL1BDL19zdWJwcm9jZXNzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YTc5YTcuLjAwMDAwMDAKLS0tIGEvUEMvX3N1YnByb2Nlc3MuYworKysgL2Rldi9udWxsCkBAIC0xLDY5MCArMCwwIEBACi0vKgotICogc3VwcG9ydCByb3V0aW5lcyBmb3Igc3VicHJvY2VzcyBtb2R1bGUKLSAqCi0gKiBDdXJyZW50bHksIHRoaXMgZXh0ZW5zaW9uIG1vZHVsZSBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlCi0gKiBzdWJwcm9jZXNzIG1vZHVsZSBvbiBXaW5kb3dzLCBidXQgaW4gdGhlIGZ1dHVyZSwgc3R1YnMgZm9yIG90aGVyCi0gKiBwbGF0Zm9ybXMgbWlnaHQgYmUgYWRkZWQgaGVyZSBhcyB3ZWxsLgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNCBieSBGcmVkcmlrIEx1bmRoIDxmcmVkcmlrQHB5dGhvbndhcmUuY29tPgotICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFNlY3JldCBMYWJzIEFCLCBodHRwOi8vd3d3LnB5dGhvbndhcmUuY29tCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUGV0ZXIgQXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4KLSAqCi0gKiBCeSBvYnRhaW5pbmcsIHVzaW5nLCBhbmQvb3IgY29weWluZyB0aGlzIHNvZnR3YXJlIGFuZC9vciBpdHMKLSAqIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiwgeW91IGFncmVlIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwKLSAqIGFuZCB3aWxsIGNvbXBseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnM6Ci0gKgotICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKLSAqIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcwotICogaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbgotICogYWxsIGNvcGllcywgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgotICogbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIHRoZQotICogYXV0aG9ycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0bwotICogZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCi0gKiBwZXJtaXNzaW9uLgotICoKLSAqIFRIRSBBVVRIT1JTIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAotICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLgotICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MKLSAqIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKLSAqIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0gKiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSAqCi0gKi8KLQotLyogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LiAqLwotLyogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8yLjQvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuICovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLQotI2RlZmluZSBXSU5ET1dTX0xFQU5fQU5EX01FQU4KLSNpbmNsdWRlICJ3aW5kb3dzLmgiCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBoYW5kbGUgd3JhcHBlci4gIG5vdGUgdGhhdCB0aGlzIGxpYnJhcnkgdXNlcyBpbnRlZ2VycyB3aGVuIHBhc3NpbmcKLSAgIGhhbmRsZXMgdG8gYSBmdW5jdGlvbiwgYW5kIGhhbmRsZSB3cmFwcGVycyB3aGVuIHJldHVybmluZyBoYW5kbGVzLgotICAgdGhlIHdyYXBwZXIgaXMgdXNlZCB0byBwcm92aWRlIERldGFjaCBhbmQgQ2xvc2UgbWV0aG9kcyAqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIEhBTkRMRSBoYW5kbGU7Ci19IHNwX2hhbmRsZV9vYmplY3Q7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3Qgc3BfaGFuZGxlX3R5cGU7Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXNwX2hhbmRsZV9uZXcoSEFORExFIGhhbmRsZSkKLXsKLSAgICBzcF9oYW5kbGVfb2JqZWN0KiBzZWxmOwotCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhzcF9oYW5kbGVfb2JqZWN0LCAmc3BfaGFuZGxlX3R5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2VsZi0+aGFuZGxlID0gaGFuZGxlOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci19Ci0KLSNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKLSNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgUHlMb25nX0Zyb21Mb25nKChsb25nKSBoYW5kbGUpCi0jZGVmaW5lIFBZX0hBTkRMRV9QQVJBTSAibCIKLSNlbHNlCi0jZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZykgaGFuZGxlKQotI2RlZmluZSBQWV9IQU5ETEVfUEFSQU0gIkwiCi0jZW5kaWYKLQotc3RhdGljIFB5T2JqZWN0Kgotc3BfaGFuZGxlX2RldGFjaChzcF9oYW5kbGVfb2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkRldGFjaCIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGhhbmRsZSA9IHNlbGYtPmhhbmRsZTsKLQotICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotCi0gICAgLyogbm90ZTogcmV0dXJuIHRoZSBjdXJyZW50IGhhbmRsZSwgYXMgYW4gaW50ZWdlciAqLwotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0Kgotc3BfaGFuZGxlX2Nsb3NlKHNwX2hhbmRsZV9vYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpDbG9zZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgQ2xvc2VIYW5kbGUoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLQotc3RhdGljIHZvaWQKLXNwX2hhbmRsZV9kZWFsbG9jKHNwX2hhbmRsZV9vYmplY3QqIHNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgQ2xvc2VIYW5kbGUoc2VsZi0+aGFuZGxlKTsKLSAgICBQeU9iamVjdF9GUkVFKHNlbGYpOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgc3BfaGFuZGxlX21ldGhvZHNbXSA9IHsKLSAgICB7IkRldGFjaCIsIChQeUNGdW5jdGlvbikgc3BfaGFuZGxlX2RldGFjaCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7IkNsb3NlIiwgIChQeUNGdW5jdGlvbikgc3BfaGFuZGxlX2Nsb3NlLCAgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXNwX2hhbmRsZV9hc19pbnQoc3BfaGFuZGxlX29iamVjdCogc2VsZikKLXsKLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKHNlbGYtPmhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU51bWJlck1ldGhvZHMgc3BfaGFuZGxlX2FzX251bWJlcjsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBzcF9oYW5kbGVfdHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX3N1YnByb2Nlc3NfaGFuZGxlIiwgc2l6ZW9mKHNwX2hhbmRsZV9vYmplY3QpLCAwLAotICAgIChkZXN0cnVjdG9yKSBzcF9oYW5kbGVfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAmc3BfaGFuZGxlX2FzX251bWJlciwgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBzcF9oYW5kbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLwotfTsKLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIHdpbmRvd3MgQVBJIGZ1bmN0aW9ucyAqLwotCi1QeURvY19TVFJWQVIoR2V0U3RkSGFuZGxlX2RvYywKLSJHZXRTdGRIYW5kbGUoaGFuZGxlKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiBhIGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIHN0YW5kYXJkIGRldmljZVxuXAotKFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBTVERfRVJST1JfSEFORExFKS5cblwKLVRoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldFN0ZEhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgc3RkX2hhbmRsZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoYW5kbGUgPSBHZXRTdGRIYW5kbGUoKERXT1JEKSBzdGRfaGFuZGxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIGlmICghIGhhbmRsZSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLQotICAgIC8qIG5vdGU6IHJldHVybnMgaW50ZWdlciwgbm90IGhhbmRsZSBvYmplY3QgKi8KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihHZXRDdXJyZW50UHJvY2Vzc19kb2MsCi0iR2V0Q3VycmVudFByb2Nlc3MoKSAtPiBoYW5kbGVcblwKLVxuXAotUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldEN1cnJlbnRQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0Q3VycmVudFByb2Nlc3MiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gc3BfaGFuZGxlX25ldyhHZXRDdXJyZW50UHJvY2VzcygpKTsKLX0KLQotUHlEb2NfU1RSVkFSKER1cGxpY2F0ZUhhbmRsZV9kb2MsCi0iRHVwbGljYXRlSGFuZGxlKHNvdXJjZV9wcm9jX2hhbmRsZSwgc291cmNlX2hhbmRsZSxcblwKLSAgICAgICAgICAgICAgICAgdGFyZ2V0X3Byb2NfaGFuZGxlLCB0YXJnZXRfaGFuZGxlLCBhY2Nlc3MsXG5cCi0gICAgICAgICAgICAgICAgIGluaGVyaXRbLCBvcHRpb25zXSkgLT4gaGFuZGxlXG5cCi1cblwKLVJldHVybiBhIGR1cGxpY2F0ZSBoYW5kbGUgb2JqZWN0LlxuXAotXG5cCi1UaGUgZHVwbGljYXRlIGhhbmRsZSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBvcmlnaW5hbFxuXAotaGFuZGxlLiBUaGVyZWZvcmUsIGFueSBjaGFuZ2VzIHRvIHRoZSBvYmplY3QgYXJlIHJlZmxlY3RlZFxuXAotdGhyb3VnaCBib3RoIGhhbmRsZXMuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9EdXBsaWNhdGVIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEhBTkRMRSB0YXJnZXRfaGFuZGxlOwotICAgIEJPT0wgcmVzdWx0OwotCi0gICAgSEFORExFIHNvdXJjZV9wcm9jZXNzX2hhbmRsZTsKLSAgICBIQU5ETEUgc291cmNlX2hhbmRsZTsKLSAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlOwotICAgIGludCBkZXNpcmVkX2FjY2VzczsKLSAgICBpbnQgaW5oZXJpdF9oYW5kbGU7Ci0gICAgaW50IG9wdGlvbnMgPSAwOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfSEFORExFX1BBUkFNIFBZX0hBTkRMRV9QQVJBTSBQWV9IQU5ETEVfUEFSQU0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJpaXxpOkR1cGxpY2F0ZUhhbmRsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc2lyZWRfYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBEdXBsaWNhdGVIYW5kbGUoCi0gICAgICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgc291cmNlX2hhbmRsZSwKLSAgICAgICAgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAotICAgICAgICAmdGFyZ2V0X2hhbmRsZSwKLSAgICAgICAgZGVzaXJlZF9hY2Nlc3MsCi0gICAgICAgIGluaGVyaXRfaGFuZGxlLAotICAgICAgICBvcHRpb25zCi0gICAgKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIHNwX2hhbmRsZV9uZXcodGFyZ2V0X2hhbmRsZSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihDcmVhdGVQaXBlX2RvYywKLSJDcmVhdGVQaXBlKHBpcGVfYXR0cnMsIHNpemUpIC0+IChyZWFkX2hhbmRsZSwgd3JpdGVfaGFuZGxlKVxuXAotXG5cCi1DcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUsIGFuZCByZXR1cm4gaGFuZGxlcyB0byB0aGUgcmVhZCBhbmRcblwKLXdyaXRlIGVuZHMgb2YgdGhlIHBpcGUuXG5cCi1cblwKLXBpcGVfYXR0cnMgaXMgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0NyZWF0ZVBpcGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEhBTkRMRSByZWFkX3BpcGU7Ci0gICAgSEFORExFIHdyaXRlX3BpcGU7Ci0gICAgQk9PTCByZXN1bHQ7Ci0KLSAgICBQeU9iamVjdCogcGlwZV9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgaW50IHNpemU7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaTpDcmVhdGVQaXBlIiwgJnBpcGVfYXR0cmlidXRlcywgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBDcmVhdGVQaXBlKCZyZWFkX3BpcGUsICZ3cml0ZV9waXBlLCBOVUxMLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCi0gICAgICAgICJOTiIsIHNwX2hhbmRsZV9uZXcocmVhZF9waXBlKSwgc3BfaGFuZGxlX25ldyh3cml0ZV9waXBlKSk7Ci19Ci0KLS8qIGhlbHBlcnMgZm9yIGNyZWF0ZXByb2Nlc3MgKi8KLQotc3RhdGljIGludAotZ2V0aW50KFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCi17Ci0gICAgUHlPYmplY3QqIHZhbHVlOwotICAgIGludCByZXQ7Ci0KLSAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBuYW1lKTsKLSAgICBpZiAoISB2YWx1ZSkgewotICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yPyAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0ID0gKGludCkgUHlMb25nX0FzTG9uZyh2YWx1ZSk7Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgSEFORExFCi1nZXRoYW5kbGUoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKLXsKLSAgICBzcF9oYW5kbGVfb2JqZWN0KiB2YWx1ZTsKLSAgICBIQU5ETEUgcmV0OwotCi0gICAgdmFsdWUgPSAoc3BfaGFuZGxlX29iamVjdCopIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBuYW1lKTsKLSAgICBpZiAoISB2YWx1ZSkgewotICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yPyAqLwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5X1RZUEUodmFsdWUpICE9ICZzcF9oYW5kbGVfdHlwZSkKLSAgICAgICAgcmV0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJldCA9IHZhbHVlLT5oYW5kbGU7Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1nZXRlbnZpcm9ubWVudChQeU9iamVjdCogZW52aXJvbm1lbnQpCi17Ci0gICAgaW50IGk7Ci0gICAgUHlfc3NpemVfdCBlbnZzaXplOwotICAgIFB5T2JqZWN0KiBvdXQgPSBOVUxMOwotICAgIFB5T2JqZWN0KiBrZXlzOwotICAgIFB5T2JqZWN0KiB2YWx1ZXM7Ci0gICAgUHlfVU5JQ09ERSogcDsKLQotICAgIC8qIGNvbnZlcnQgZW52aXJvbm1lbnQgZGljdGlvbmFyeSB0byB3aW5kb3dzIGVudmlyb21lbnQgc3RyaW5nICovCi0gICAgaWYgKCEgUHlNYXBwaW5nX0NoZWNrKGVudmlyb25tZW50KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsICJlbnZpcm9ubWVudCBtdXN0IGJlIGRpY3Rpb25hcnkgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBlbnZzaXplID0gUHlNYXBwaW5nX0xlbmd0aChlbnZpcm9ubWVudCk7Ci0KLSAgICBrZXlzID0gUHlNYXBwaW5nX0tleXMoZW52aXJvbm1lbnQpOwotICAgIHZhbHVlcyA9IFB5TWFwcGluZ19WYWx1ZXMoZW52aXJvbm1lbnQpOwotICAgIGlmICgha2V5cyB8fCAhdmFsdWVzKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgb3V0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDIwNDgpOwotICAgIGlmICghIG91dCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IGVudnNpemU7IGkrKykgewotICAgICAgICBQeV9zc2l6ZV90IGtzaXplLCB2c2l6ZSwgdG90YWxzaXplOwotICAgICAgICBQeU9iamVjdCoga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOwotICAgICAgICBQeU9iamVjdCogdmFsdWUgPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKLQotICAgICAgICBpZiAoISBQeVVuaWNvZGVfQ2hlY2soa2V5KSB8fCAhIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgImVudmlyb25tZW50IGNhbiBvbmx5IGNvbnRhaW4gc3RyaW5ncyIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBrc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShrZXkpOwotICAgICAgICB2c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSk7Ci0gICAgICAgIHRvdGFsc2l6ZSA9IChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0KSkgKyBrc2l6ZSArIDEgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c2l6ZSArIDEgKyAxOwotICAgICAgICBpZiAodG90YWxzaXplID4gUHlVbmljb2RlX0dFVF9TSVpFKG91dCkpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKG91dCk7Ci0gICAgICAgICAgICBQeVVuaWNvZGVfUmVzaXplKCZvdXQsIHRvdGFsc2l6ZSArIDEwMjQpOwotICAgICAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG91dCkgKyBvZmZzZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIFB5VW5pY29kZV9BU19VTklDT0RFKGtleSksIGtzaXplKTsKLSAgICAgICAgcCArPSBrc2l6ZTsKLSAgICAgICAgKnArKyA9ICc9JzsKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKSwgdnNpemUpOwotICAgICAgICBwICs9IHZzaXplOwotICAgICAgICAqcCsrID0gJ1wwJzsKLSAgICB9Ci0KLSAgICAvKiBhZGQgdHJhaWxpbmcgbnVsbCBieXRlICovCi0gICAgKnArKyA9ICdcMCc7Ci0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmb3V0LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0KSk7Ci0KLSAgICAvKiBQeU9iamVjdF9QcmludChvdXQsIHN0ZG91dCwgMCk7ICovCi0KLSAgICBQeV9YREVDUkVGKGtleXMpOwotICAgIFB5X1hERUNSRUYodmFsdWVzKTsKLQotICAgIHJldHVybiBvdXQ7Ci0KLSBlcnJvcjoKLSAgICBQeV9YREVDUkVGKG91dCk7Ci0gICAgUHlfWERFQ1JFRihrZXlzKTsKLSAgICBQeV9YREVDUkVGKHZhbHVlcyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVB5RG9jX1NUUlZBUihDcmVhdGVQcm9jZXNzX2RvYywKLSJDcmVhdGVQcm9jZXNzKGFwcF9uYW1lLCBjbWRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLFxuXAotICAgICAgICAgICAgICAgaW5oZXJpdCwgZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJkaXIsXG5cCi0gICAgICAgICAgICAgICBzdGFydHVwX2luZm8pIC0+IChwcm9jX2hhbmRsZSwgdGhyZWFkX2hhbmRsZSxcblwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgdGlkKVxuXAotXG5cCi1DcmVhdGUgYSBuZXcgcHJvY2VzcyBhbmQgaXRzIHByaW1hcnkgdGhyZWFkLiBUaGUgcmV0dXJuXG5cCi12YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSxcblwKLXByb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuXG5cCi1cblwKLXByb2NfYXR0cnMgYW5kIHRocmVhZF9hdHRycyBhcmUgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0NyZWF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEJPT0wgcmVzdWx0OwotICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGk7Ci0gICAgU1RBUlRVUElORk9XIHNpOwotICAgIFB5T2JqZWN0KiBlbnZpcm9ubWVudDsKLQotICAgIFB5X1VOSUNPREUqIGFwcGxpY2F0aW9uX25hbWU7Ci0gICAgUHlfVU5JQ09ERSogY29tbWFuZF9saW5lOwotICAgIFB5T2JqZWN0KiBwcm9jZXNzX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KLSAgICBQeU9iamVjdCogdGhyZWFkX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KLSAgICBpbnQgaW5oZXJpdF9oYW5kbGVzOwotICAgIGludCBjcmVhdGlvbl9mbGFnczsKLSAgICBQeU9iamVjdCogZW52X21hcHBpbmc7Ci0gICAgUHlfVU5JQ09ERSogY3VycmVudF9kaXJlY3Rvcnk7Ci0gICAgUHlPYmplY3QqIHN0YXJ0dXBfaW5mbzsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT09paU9aTzpDcmVhdGVQcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbW1hbmRfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzX2F0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkX2F0dHJpYnV0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWF0aW9uX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVudl9tYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0dXBfaW5mbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgWmVyb01lbW9yeSgmc2ksIHNpemVvZihzaSkpOwotICAgIHNpLmNiID0gc2l6ZW9mKHNpKTsKLQotICAgIC8qIG5vdGU6IHdlIG9ubHkgc3VwcG9ydCBhIHNtYWxsIHN1YnNldCBvZiBhbGwgU0kgYXR0cmlidXRlcyAqLwotICAgIHNpLmR3RmxhZ3MgPSBnZXRpbnQoc3RhcnR1cF9pbmZvLCAiZHdGbGFncyIpOwotICAgIHNpLndTaG93V2luZG93ID0gZ2V0aW50KHN0YXJ0dXBfaW5mbywgIndTaG93V2luZG93Iik7Ci0gICAgc2kuaFN0ZElucHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRJbnB1dCIpOwotICAgIHNpLmhTdGRPdXRwdXQgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZE91dHB1dCIpOwotICAgIHNpLmhTdGRFcnJvciA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkRXJyb3IiKTsKLQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChlbnZfbWFwcGluZyA9PSBQeV9Ob25lKQotICAgICAgICBlbnZpcm9ubWVudCA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVudmlyb25tZW50ID0gZ2V0ZW52aXJvbm1lbnQoZW52X21hcHBpbmcpOwotICAgICAgICBpZiAoISBlbnZpcm9ubWVudCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBDcmVhdGVQcm9jZXNzVyhhcHBsaWNhdGlvbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0X2hhbmRsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbl9mbGFncyB8IENSRUFURV9VTklDT0RFX0VOVklST05NRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgPyBQeVVuaWNvZGVfQVNfVU5JQ09ERShlbnZpcm9ubWVudCkgOiBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc2ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcGkpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBQeV9YREVDUkVGKGVudmlyb25tZW50KTsKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTmlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcF9oYW5kbGVfbmV3KHBpLmhQcm9jZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcF9oYW5kbGVfbmV3KHBpLmhUaHJlYWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3UHJvY2Vzc0lkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3VGhyZWFkSWQpOwotfQotCi1QeURvY19TVFJWQVIoVGVybWluYXRlUHJvY2Vzc19kb2MsCi0iVGVybWluYXRlUHJvY2VzcyhoYW5kbGUsIGV4aXRfY29kZSkgLT4gTm9uZVxuXAotXG5cCi1UZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9UZXJtaW5hdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBCT09MIHJlc3VsdDsKLQotICAgIEhBTkRMRSBwcm9jZXNzOwotICAgIGludCBleGl0X2NvZGU7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBQWV9IQU5ETEVfUEFSQU0gImk6VGVybWluYXRlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2VzcywgJmV4aXRfY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gVGVybWluYXRlUHJvY2Vzcyhwcm9jZXNzLCBleGl0X2NvZGUpOwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotCi1QeURvY19TVFJWQVIoR2V0RXhpdENvZGVQcm9jZXNzX2RvYywKLSJHZXRFeGl0Q29kZVByb2Nlc3MoaGFuZGxlKSAtPiBFeGl0IGNvZGVcblwKLVxuXAotUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfR2V0RXhpdENvZGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBEV09SRCBleGl0X2NvZGU7Ci0gICAgQk9PTCByZXN1bHQ7Ci0KLSAgICBIQU5ETEUgcHJvY2VzczsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIFBZX0hBTkRMRV9QQVJBTSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBHZXRFeGl0Q29kZVByb2Nlc3MocHJvY2VzcywgJmV4aXRfY29kZSk7Ci0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGV4aXRfY29kZSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvYywKLSJXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgdGltZW91dCkgLT4gcmVzdWx0XG5cCi1cblwKLVdhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yXG5cCi10aGUgdGltZS1vdXQgaW50ZXJ2YWwgZWxhcHNlcy4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgc3BlY2lmaWVkXG5cCi1pbiBtaWxsaXNlY29uZHMuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9XYWl0Rm9yU2luZ2xlT2JqZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBEV09SRCByZXN1bHQ7Ci0KLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBtaWxsaXNlY29uZHM7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBQWV9IQU5ETEVfUEFSQU0gImk6V2FpdEZvclNpbmdsZU9iamVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCAoRFdPUkQpIG1pbGxpc2Vjb25kcyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChpbnQpIHJlc3VsdCk7Ci19Ci0KLVB5RG9jX1NUUlZBUihHZXRWZXJzaW9uX2RvYywKLSJHZXRWZXJzaW9uKCkgLT4gdmVyc2lvblxuXAotXG5cCi1SZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRWZXJzaW9uKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0VmVyc2lvbiIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGludCkgR2V0VmVyc2lvbigpKTsKLX0KLQotUHlEb2NfU1RSVkFSKEdldE1vZHVsZUZpbGVOYW1lX2RvYywKLSJHZXRNb2R1bGVGaWxlTmFtZShtb2R1bGUpIC0+IHBhdGhcblwKLVxuXAotUmV0dXJuIHRoZSBmdWxseS1xdWFsaWZpZWQgcGF0aCBmb3IgdGhlIGZpbGUgdGhhdCBjb250YWluc1xuXAotdGhlIHNwZWNpZmllZCBtb2R1bGUuIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZVxuXAotY3VycmVudCBwcm9jZXNzLlxuXAotXG5cCi1UaGUgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBoYW5kbGUgdG8gdGhlIGxvYWRlZCBtb2R1bGVcblwKLXdob3NlIHBhdGggaXMgYmVpbmcgcmVxdWVzdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpcyAwLCBcblwKLUdldE1vZHVsZUZpbGVOYW1lIHJldHJpZXZlcyB0aGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlXG5cCi1vZiB0aGUgY3VycmVudCBwcm9jZXNzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfR2V0TW9kdWxlRmlsZU5hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEJPT0wgcmVzdWx0OwotICAgIEhNT0RVTEUgbW9kdWxlOwotICAgIFdDSEFSIGZpbGVuYW1lW01BWF9QQVRIXTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgUFlfSEFORExFX1BBUkFNICI6R2V0TW9kdWxlRmlsZU5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZHVsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKLSAgICBmaWxlbmFtZVtNQVhfUEFUSC0xXSA9ICdcMCc7Ci0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGZpbGVuYW1lLCBQeV9VTklDT0RFX3N0cmxlbihmaWxlbmFtZSkpOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgc3BfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJHZXRTdGRIYW5kbGUiLCBzcF9HZXRTdGRIYW5kbGUsIE1FVEhfVkFSQVJHUywgR2V0U3RkSGFuZGxlX2RvY30sCi0gICAgeyJHZXRDdXJyZW50UHJvY2VzcyIsIHNwX0dldEN1cnJlbnRQcm9jZXNzLCAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50UHJvY2Vzc19kb2N9LAotICAgIHsiRHVwbGljYXRlSGFuZGxlIiwgICAgICAgICBzcF9EdXBsaWNhdGVIYW5kbGUsICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZUhhbmRsZV9kb2N9LAotICAgIHsiQ3JlYXRlUGlwZSIsIHNwX0NyZWF0ZVBpcGUsIE1FVEhfVkFSQVJHUywgQ3JlYXRlUGlwZV9kb2N9LAotICAgIHsiQ3JlYXRlUHJvY2VzcyIsIHNwX0NyZWF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywgQ3JlYXRlUHJvY2Vzc19kb2N9LAotICAgIHsiVGVybWluYXRlUHJvY2VzcyIsIHNwX1Rlcm1pbmF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1pbmF0ZVByb2Nlc3NfZG9jfSwKLSAgICB7IkdldEV4aXRDb2RlUHJvY2VzcyIsIHNwX0dldEV4aXRDb2RlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRFeGl0Q29kZVByb2Nlc3NfZG9jfSwKLSAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCBzcF9XYWl0Rm9yU2luZ2xlT2JqZWN0LCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FpdEZvclNpbmdsZU9iamVjdF9kb2N9LAotICAgIHsiR2V0VmVyc2lvbiIsIHNwX0dldFZlcnNpb24sIE1FVEhfVkFSQVJHUywgR2V0VmVyc2lvbl9kb2N9LAotICAgIHsiR2V0TW9kdWxlRmlsZU5hbWUiLCBzcF9HZXRNb2R1bGVGaWxlTmFtZSwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE1vZHVsZUZpbGVOYW1lX2RvY30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1zdGF0aWMgdm9pZAotZGVmaW50KFB5T2JqZWN0KiBkLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QqIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsKLSAgICBpZiAodikgewotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAoY2hhciopIG5hbWUsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQotfQotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9zdWJwcm9jZXNzbW9kdWxlID0gewotICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAiX3N1YnByb2Nlc3MiLAotICAgIE5VTEwsCi0gICAgLTEsCi0gICAgc3BfZnVuY3Rpb25zLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKLX07Ci0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfX3N1YnByb2Nlc3MoKQotewotICAgIFB5T2JqZWN0ICpkOwotICAgIFB5T2JqZWN0ICptOwotCi0gICAgLyogcGF0Y2ggdXAgb2JqZWN0IGRlc2NyaXB0b3JzICovCi0gICAgc3BfaGFuZGxlX2FzX251bWJlci5uYl9pbnQgPSAodW5hcnlmdW5jKSBzcF9oYW5kbGVfYXNfaW50OwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwX2hhbmRsZV90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3N1YnByb2Nlc3Ntb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotCi0gICAgLyogY29uc3RhbnRzICovCi0gICAgZGVmaW50KGQsICJTVERfSU5QVVRfSEFORExFIiwgU1REX0lOUFVUX0hBTkRMRSk7Ci0gICAgZGVmaW50KGQsICJTVERfT1VUUFVUX0hBTkRMRSIsIFNURF9PVVRQVVRfSEFORExFKTsKLSAgICBkZWZpbnQoZCwgIlNURF9FUlJPUl9IQU5ETEUiLCBTVERfRVJST1JfSEFORExFKTsKLSAgICBkZWZpbnQoZCwgIkRVUExJQ0FURV9TQU1FX0FDQ0VTUyIsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7Ci0gICAgZGVmaW50KGQsICJTVEFSVEZfVVNFU1RESEFORExFUyIsIFNUQVJURl9VU0VTVERIQU5ETEVTKTsKLSAgICBkZWZpbnQoZCwgIlNUQVJURl9VU0VTSE9XV0lORE9XIiwgU1RBUlRGX1VTRVNIT1dXSU5ET1cpOwotICAgIGRlZmludChkLCAiU1dfSElERSIsIFNXX0hJREUpOwotICAgIGRlZmludChkLCAiSU5GSU5JVEUiLCBJTkZJTklURSk7Ci0gICAgZGVmaW50KGQsICJXQUlUX09CSkVDVF8wIiwgV0FJVF9PQkpFQ1RfMCk7Ci0gICAgZGVmaW50KGQsICJDUkVBVEVfTkVXX0NPTlNPTEUiLCBDUkVBVEVfTkVXX0NPTlNPTEUpOwotICAgIGRlZmludChkLCAiQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQIiwgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQKTsKLSAgICBkZWZpbnQoZCwgIlNUSUxMX0FDVElWRSIsIFNUSUxMX0FDVElWRSk7Ci0KLSAgICByZXR1cm4gbTsKLX0KZGlmZiAtLWdpdCBhL1BDL2NvbmZpZy5jIGIvUEMvY29uZmlnLmMKaW5kZXggMWZjMmI0MC4uNTdiNTA3MyAxMDA2NDQKLS0tIGEvUEMvY29uZmlnLmMKKysrIGIvUEMvY29uZmlnLmMKQEAgLTEyLDYgKzEyLDcgQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X2JpbmFzY2lpKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfY21hdGgodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9lcnJubyh2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X2ZhdWx0aGFuZGxlcih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X2djKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfbWF0aCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19tZDUodm9pZCk7CkBAIC01NSw3ICs1Niw3IEBACiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fY29kZWNzX2pwKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2NvZGVjc19rcih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19jb2RlY3NfdHcodm9pZCk7Ci1leHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc3VicHJvY2Vzcyh2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X193aW5hcGkodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fbHNwcm9mKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2FzdCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19pbyh2b2lkKTsKQEAgLTgyLDYgKzgzLDcgQEAKICAgICB7ImJpbmFzY2lpIiwgUHlJbml0X2JpbmFzY2lpfSwKICAgICB7ImNtYXRoIiwgUHlJbml0X2NtYXRofSwKICAgICB7ImVycm5vIiwgUHlJbml0X2Vycm5vfSwKKyAgICB7ImZhdWx0aGFuZGxlciIsIFB5SW5pdF9mYXVsdGhhbmRsZXJ9LAogICAgIHsiZ2MiLCBQeUluaXRfZ2N9LAogICAgIHsibWF0aCIsIFB5SW5pdF9tYXRofSwKICAgICB7Im50IiwgUHlJbml0X250fSwgLyogVXNlIHRoZSBOVCBvcyBmdW5jdGlvbnMsIG5vdCBwb3NpeCAqLwpAQCAtOTksOCArMTAxLDggQEAKICAgICB7Im1zdmNydCIsIFB5SW5pdF9tc3ZjcnR9LAogICAgIHsiX2xvY2FsZSIsIFB5SW5pdF9fbG9jYWxlfSwKICNlbmRpZgotICAgIC8qIFhYWCBTaG91bGQgX3N1YnByb2Nlc3MgZ28gaW4gYSBXSU4zMiBibG9jaz8gIG5vdCBXSU42ND8gKi8KLSAgICB7Il9zdWJwcm9jZXNzIiwgUHlJbml0X19zdWJwcm9jZXNzfSwKKyAgICAvKiBYWFggU2hvdWxkIF93aW5hcGkgZ28gaW4gYSBXSU4zMiBibG9jaz8gIG5vdCBXSU42ND8gKi8KKyAgICB7Il93aW5hcGkiLCBQeUluaXRfX3dpbmFwaX0sCiAKICAgICB7Il9jb2RlY3MiLCBQeUluaXRfX2NvZGVjc30sCiAgICAgeyJfd2Vha3JlZiIsIFB5SW5pdF9fd2Vha3JlZn0sCkBAIC0xNDEsMTAgKzE0Myw5IEBACiAgICAgeyJtYXJzaGFsIiwgUHlNYXJzaGFsX0luaXR9LAogCiAgICAgLyogVGhpcyBsaXZlcyBpdCB3aXRoIGltcG9ydC5jICovCi0gICAgeyJpbXAiLCBQeUluaXRfaW1wfSwKKyAgICB7Il9pbXAiLCBQeUluaXRfaW1wfSwKIAogICAgIC8qIFRoZXNlIGVudHJpZXMgYXJlIGhlcmUgZm9yIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyAqLwotICAgIHsiX19tYWluX18iLCBOVUxMfSwKICAgICB7ImJ1aWx0aW5zIiwgTlVMTH0sCiAgICAgeyJzeXMiLCBOVUxMfSwKICAgICB7Il93YXJuaW5ncyIsIF9QeVdhcm5pbmdzX0luaXR9LApkaWZmIC0tZ2l0IGEvUEMvZGxfbnQuYyBiL1BDL2RsX250LmMKaW5kZXggZWYxY2UwOS4uYWUxMGZiNSAxMDA2NDQKLS0tIGEvUEMvZGxfbnQuYworKysgYi9QQy9kbF9udC5jCkBAIC0xOCw3ICsxOCw4IEBACiBITU9EVUxFIFB5V2luX0RMTGhNb2R1bGUgPSBOVUxMOwogY29uc3QgY2hhciAqUHlXaW5fRExMVmVyc2lvblN0cmluZyA9IGRsbFZlcnNpb25CdWZmZXI7CiAKLS8vIFdpbmRvd3MgIkFjdGl2YXRpb24gQ29udGV4dCIgd29yazoKKyNpZiBIQVZFX1NYUworLy8gV2luZG93cyAiQWN0aXZhdGlvbiBDb250ZXh0IiB3b3JrLgogLy8gT3VyIC5weWQgZXh0ZW5zaW9uIG1vZHVsZXMgYXJlIGdlbmVyYWxseSBidWlsdCB3aXRob3V0IGEgbWFuaWZlc3QgKGllLAogLy8gdGhvc2UgaW5jbHVkZWQgd2l0aCBQeXRob24gYW5kIHRob3NlIGJ1aWx0IHdpdGggYSBkZWZhdWx0IGRpc3R1dGlscy4KIC8vIFRoaXMgcmVxdWlyZXMgd2UgcGVyZm9ybSBzb21lICJhY3RpdmF0aW9uIGNvbnRleHQiIG1hZ2ljIHdoZW4gbG9hZGluZyBvdXIKQEAgLTI5LDYgKzMwLDggQEAKIC8vIEFzIGFuIGFkZGVkIGNvbXBsaWNhdGlvbiwgdGhpcyBtYWdpYyBvbmx5IHdvcmtzIG9uIFhQIG9yIGxhdGVyIC0gd2Ugc2ltcGx5CiAvLyB1c2UgdGhlIGV4aXN0ZW5jZSAob3Igbm90KSBvZiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gcG9pbnRlcnMgZnJvbSBrZXJuZWwzMi4KIC8vIFNlZSBidWcgNDU2NiAoaHR0cDovL3B5dGhvbi5vcmcvc2YvNDU2NikgZm9yIG1vcmUgZGV0YWlscy4KKy8vIEluIFZpc3VhbCBTdHVkaW8gMjAxMCwgc2lkZSBieSBzaWRlIGFzc2VtYmxpZXMgYXJlIG5vIGxvbmdlciB1c2VkIGJ5CisvLyBkZWZhdWx0LgogCiB0eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTl9HRVRDVVJSRU5UQUNUQ1RYKShIQU5ETEUgKik7CiB0eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTl9BQ1RJVkFURUFDVENUWCkoSEFORExFLCBVTE9OR19QVFIgKik7CkBAIC03NSw2ICs3OCw3IEBACiAgICAgICAgIGlmICghKCpwZm5EZWFjdGl2YXRlQWN0Q3R4KSgwLCBjb29raWUpKQogICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIlB5dGhvbiBmYWlsZWQgdG8gZGUtYWN0aXZhdGUgdGhlIGFjdGl2YXRpb24gY29udGV4dFxuIik7CiB9CisjZW5kaWYgLyogSEFWRV9TWFMgKi8KIAogQk9PTCAgICBXSU5BUEkgIERsbE1haW4gKEhBTkRMRSBoSW5zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVMT05HIHVsX3JlYXNvbl9mb3JfY2FsbCwKQEAgLTg3LDE3ICs5MSwyMSBAQAogICAgICAgICAgICAgLy8gMTAwMCBpcyBhIG1hZ2ljIG51bWJlciBJIHBpY2tlZCBvdXQgb2YgdGhlIGFpci4gIENvdWxkIGRvIHdpdGggYSAjZGVmaW5lLCBJIHNwb3NlLi4uCiAgICAgICAgICAgICBMb2FkU3RyaW5nKGhJbnN0LCAxMDAwLCBkbGxWZXJzaW9uQnVmZmVyLCBzaXplb2YoZGxsVmVyc2lvbkJ1ZmZlcikpOwogCisjaWYgSEFWRV9TWFMKICAgICAgICAgICAgIC8vIGFuZCBjYXB0dXJlIG91ciBhY3RpdmF0aW9uIGNvbnRleHQgZm9yIHVzZSB3aGVuIGxvYWRpbmcgZXh0ZW5zaW9ucy4KICAgICAgICAgICAgIF9Mb2FkQWN0Q3R4UG9pbnRlcnMoKTsKICAgICAgICAgICAgIGlmIChwZm5HZXRDdXJyZW50QWN0Q3R4ICYmIHBmbkFkZFJlZkFjdEN0eCkKICAgICAgICAgICAgICAgICBpZiAoKCpwZm5HZXRDdXJyZW50QWN0Q3R4KSgmUHlXaW5fRExMaEFjdGl2YXRpb25Db250ZXh0KSkKICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKnBmbkFkZFJlZkFjdEN0eCkoUHlXaW5fRExMaEFjdGl2YXRpb25Db250ZXh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJQeXRob24gZmFpbGVkIHRvIGxvYWQgdGhlIGRlZmF1bHQgYWN0aXZhdGlvbiBjb250ZXh0XG4iKTsKKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisjaWYgSEFWRV9TWFMKICAgICAgICAgICAgIGlmIChwZm5SZWxlYXNlQWN0Q3R4KQogICAgICAgICAgICAgICAgICgqcGZuUmVsZWFzZUFjdEN0eCkoUHlXaW5fRExMaEFjdGl2YXRpb25Db250ZXh0KTsKKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBUUlVFOwpkaWZmIC0tZ2l0IGEvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvaiBiL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2oKaW5kZXggZjkyNGM3ZC4uZmJhMDBiNiAxMDA2NDQKLS0tIGEvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvagorKysgYi9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qCkBAIC0zOSw3ICszOSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvZXhwb3J0OmluaXRleGFtcGxlIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24yNi5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjMzLmxpYiINCiAJCQkJT3V0cHV0RmlsZT0iLlxSZWxlYXNlL2V4YW1wbGUucHlkIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCkBAIC0xMDUsNyArMTA1LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9leHBvcnQ6aW5pdGV4YW1wbGUiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjI2X2QubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24zM19kLmxpYiINCiAJCQkJT3V0cHV0RmlsZT0iLlxEZWJ1Zy9leGFtcGxlX2QucHlkIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCmRpZmYgLS1naXQgYS9QQy9mcm96ZW5fZGxsbWFpbi5jIGIvUEMvZnJvemVuX2RsbG1haW4uYwppbmRleCBhOGNjODg1Li4wMTU2YzUwIDEwMDY0NAotLS0gYS9QQy9mcm96ZW5fZGxsbWFpbi5jCisrKyBiL1BDL2Zyb3plbl9kbGxtYWluLmMKQEAgLTc3LDcgKzc3LDcgQEAKIHsKICAgICAvLyBNdXN0IGdvIGJhY2t3YXJkcwogICAgIGNoYXIgKiptb2ROYW1lOwotICAgIGZvciAobW9kTmFtZSA9IHBvc3NpYmxlTW9kdWxlcysoc2l6ZW9mKHBvc3NpYmxlTW9kdWxlcykgLyBzaXplb2YoY2hhciAqKSktMjsKKyAgICBmb3IgKG1vZE5hbWUgPSBwb3NzaWJsZU1vZHVsZXMrUHlfQVJSQVlfTEVOR1RIKHBvc3NpYmxlTW9kdWxlcyktMjsKICAgICAgICAgIG1vZE5hbWUgPj0gcG9zc2libGVNb2R1bGVzOwogICAgICAgICAgKm1vZE5hbWUtLSkgewogLyogICAgICAgICAgICAgIHByaW50ZigiVGVybWluYXRpbmcgJyVzJ1xuIiwgKm1vZE5hbWUpOyovCkBAIC0xMDMsNyArMTAzLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgLy8gTXVzdCBnbyBiYWNrd2FyZHMKICAgICAgICAgICAgIGNoYXIgKiptb2ROYW1lOwotICAgICAgICAgICAgZm9yIChtb2ROYW1lID0gcG9zc2libGVNb2R1bGVzKyhzaXplb2YocG9zc2libGVNb2R1bGVzKSAvIHNpemVvZihjaGFyICopKS0yOworICAgICAgICAgICAgZm9yIChtb2ROYW1lID0gcG9zc2libGVNb2R1bGVzK1B5X0FSUkFZX0xFTkdUSChwb3NzaWJsZU1vZHVsZXMpLTI7CiAgICAgICAgICAgICAgICAgIG1vZE5hbWUgPj0gcG9zc2libGVNb2R1bGVzOwogICAgICAgICAgICAgICAgICAqbW9kTmFtZS0tKQogICAgICAgICAgICAgICAgIENhbGxNb2R1bGVEbGxNYWluKCptb2ROYW1lLCBETExfUFJPQ0VTU19ERVRBQ0gpOwpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgQk9PTCAoV0lOQVBJICogcGZuZGxsbWFpbikoSElOU1RBTkNFLCBEV09SRCwgTFBWT0lEKTsKIAogICAgIGNoYXIgZnVuY05hbWVbMjU1XTsKLSAgICBITU9EVUxFIGhtb2QgPSBHZXRNb2R1bGVIYW5kbGUoTlVMTCk7CisgICAgSE1PRFVMRSBobW9kID0gR2V0TW9kdWxlSGFuZGxlVyhOVUxMKTsKICAgICBzdHJjcHkoZnVuY05hbWUsICJfRGxsTWFpbiIpOwogICAgIHN0cmNhdChmdW5jTmFtZSwgbW9kTmFtZSk7CiAgICAgc3RyY2F0KGZ1bmNOYW1lLCAiQDEyIik7IC8vIHN0ZGNhbGwgY29udmVudGlvbi4KZGlmZiAtLWdpdCBhL1BDL2dldHBhdGhwLmMgYi9QQy9nZXRwYXRocC5jCmluZGV4IGNkM2E0YjIuLmI1YmYzMjUgMTAwNjQ0Ci0tLSBhL1BDL2dldHBhdGhwLmMKKysrIGIvUEMvZ2V0cGF0aHAuYwpAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgaWYgKGtleUJ1Zj09TlVMTCkgZ290byBkb25lOwogCiAgICAgbWVtY3B5KGtleUJ1ZlB0ciwga2V5UHJlZml4LCBzaXplb2Yoa2V5UHJlZml4KS1zaXplb2YoV0NIQVIpKTsKLSAgICBrZXlCdWZQdHIgKz0gc2l6ZW9mKGtleVByZWZpeCkvc2l6ZW9mKFdDSEFSKSAtIDE7CisgICAga2V5QnVmUHRyICs9IFB5X0FSUkFZX0xFTkdUSChrZXlQcmVmaXgpIC0gMTsKICAgICBtYnN0b3djcyhrZXlCdWZQdHIsIFB5V2luX0RMTFZlcnNpb25TdHJpbmcsIHZlcnNpb25MZW4pOwogICAgIGtleUJ1ZlB0ciArPSB2ZXJzaW9uTGVuOwogICAgIC8qIE5VTEwgY29tZXMgd2l0aCB0aGlzIG9uZSEgKi8KQEAgLTQyMyw2ICs0MjMsNTMgQEAKICAgICAgICAgcHJvZ3BhdGhbMF0gPSAnXDAnOwogfQogCitzdGF0aWMgaW50CitmaW5kX2Vudl9jb25maWdfdmFsdWUoRklMRSAqIGVudl9maWxlLCBjb25zdCB3Y2hhcl90ICoga2V5LCB3Y2hhcl90ICogdmFsdWUpCit7CisgICAgaW50IHJlc3VsdCA9IDA7IC8qIG1lYW5pbmcgbm90IGZvdW5kICovCisgICAgY2hhciBidWZmZXJbTUFYUEFUSExFTioyKzFdOyAgLyogYWxsb3cgZXh0cmEgZm9yIGtleSwgJz0nLCBldGMuICovCisKKyAgICBmc2VlayhlbnZfZmlsZSwgMCwgU0VFS19TRVQpOworICAgIHdoaWxlICghZmVvZihlbnZfZmlsZSkpIHsKKyAgICAgICAgY2hhciAqIHAgPSBmZ2V0cyhidWZmZXIsIE1BWFBBVEhMRU4qMiwgZW52X2ZpbGUpOworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07CisgICAgICAgIFB5T2JqZWN0ICogZGVjb2RlZDsKKyAgICAgICAgaW50IG47CisKKyAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuID0gc3RybGVuKHApOworICAgICAgICBpZiAocFtuIC0gMV0gIT0gJ1xuJykgeworICAgICAgICAgICAgLyogbGluZSBoYXMgb3ZlcmZsb3dlZCAtIGJhaWwgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChwWzBdID09ICcjJykgICAgLyogQ29tbWVudCAtIHNraXAgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjgoYnVmZmVyLCBuLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIGlmIChkZWNvZGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgazsKKyAgICAgICAgICAgIGsgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhcihkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGJ1ZmZlciwgTUFYUEFUSExFTiAqIDIpOworICAgICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOworICAgICAgICAgICAgaWYgKGsgPj0gMCkgeworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2sodG1wYnVmZmVyLCBMIiBcdFxyXG4iKTsKKyAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywga2V5KSkgeworICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCIgXHQiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIEwiPSIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCJcclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NuY3B5KHZhbHVlLCB0b2ssIE1BWFBBVEhMRU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIHZvaWQKIGNhbGN1bGF0ZV9wYXRoKHZvaWQpCiB7CkBAIC00NTcsNiArNTA0LDQwIEBACiAgICAgLyogcHJvZ3BhdGggZ3VhcmFudGVlZCBcMCB0ZXJtaW5hdGVkIGluIE1BWFBBVEgrMSBieXRlcy4gKi8KICAgICB3Y3NjcHkoYXJndjBfcGF0aCwgcHJvZ3BhdGgpOwogICAgIHJlZHVjZShhcmd2MF9wYXRoKTsKKworICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKKyAgICAgICBleGVjdXRhYmxlJ3MgZGlyZWN0b3J5IGFuZCB0aGVuIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgIElmIGZvdW5kLCBvcGVuIGl0IGZvciB1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHByZWZpeGVzLgorICAgICovCisKKyAgICB7CisgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4rMV07CisgICAgICAgIHdjaGFyX3QgKmVudl9jZmcgPSBMInB5dmVudi5jZmciOworICAgICAgICBGSUxFICogZW52X2ZpbGUgPSBOVUxMOworCisgICAgICAgIHdjc2NweSh0bXBidWZmZXIsIGFyZ3YwX3BhdGgpOworICAgICAgICBqb2luKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKKyAgICAgICAgICAgIGpvaW4odG1wYnVmZmVyLCBlbnZfY2ZnKTsKKyAgICAgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVudl9maWxlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIExvb2sgZm9yIGEgJ2hvbWUnIHZhcmlhYmxlIGFuZCBzZXQgYXJndjBfcGF0aCB0byBpdCwgaWYgZm91bmQgKi8KKyAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiaG9tZSIsIHRtcGJ1ZmZlcikpIHsKKyAgICAgICAgICAgICAgICB3Y3NjcHkoYXJndjBfcGF0aCwgdG1wYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZjbG9zZShlbnZfZmlsZSk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMIHx8ICpweXRob25ob21lID09ICdcMCcpIHsKICAgICAgICAgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CkBAIC03MDgsOCArNzg5LDggQEAKICAgICByZXR1cm4gcHJvZ3BhdGg7CiB9CiAKLS8qIExvYWQgcHl0aG9uMy5kbGwgYmVmb3JlIGxvYWRpbmcgYW55IGV4dGVuc2lvbiBtb2R1bGUgdGhhdCBtaWdodCByZWZlciAKLSAgIHRvIGl0LiBUaGF0IHdheSwgd2UgY2FuIGJlIHN1cmUgdGhhdCBhbHdheXMgdGhlIHB5dGhvbjMuZGxsIGNvcnJlc3BvbmRpbmcgCisvKiBMb2FkIHB5dGhvbjMuZGxsIGJlZm9yZSBsb2FkaW5nIGFueSBleHRlbnNpb24gbW9kdWxlIHRoYXQgbWlnaHQgcmVmZXIKKyAgIHRvIGl0LiBUaGF0IHdheSwgd2UgY2FuIGJlIHN1cmUgdGhhdCBhbHdheXMgdGhlIHB5dGhvbjMuZGxsIGNvcnJlc3BvbmRpbmcKICAgIHRvIHRoaXMgcHl0aG9uIERMTCBpcyBsb2FkZWQsIG5vdCBhIHB5dGhvbjMuZGxsIHRoYXQgbWlnaHQgYmUgb24gdGhlIHBhdGgKICAgIGJ5IGNoYW5jZS4KICAgIFJldHVybiB3aGV0aGVyIHRoZSBETEwgd2FzIGZvdW5kLgpkaWZmIC0tZ2l0IGEvUEMvaW1wb3J0X250LmMgYi9QQy9pbXBvcnRfbnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk2YTc3NC4uMDAwMDAwMAotLS0gYS9QQy9pbXBvcnRfbnQuYworKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0gaW1wb3J0X250LmMKLQotICBXaW4zMiBzcGVjaWZpYyBpbXBvcnQgY29kZS4KLQotKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIm9zZGVmcy5oIgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlICJpbXBvcnRkbC5oIgotI2luY2x1ZGUgIm1hbGxvYy5oIiAvKiBmb3IgYWxsb2NhICovCi0KLS8qIGEgc3RyaW5nIGxvYWRlZCBmcm9tIHRoZSBETEwgYXQgc3RhcnR1cCAqLwotZXh0ZXJuIGNvbnN0IGNoYXIgKlB5V2luX0RMTFZlcnNpb25TdHJpbmc7Ci0KLUZJTEUgKlB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZWRlc2NyICoqcHBGaWxlRGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhdGhCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBhdGhMZW4pCi17Ci0gICAgY2hhciAqbW9kdWxlS2V5OwotICAgIGNvbnN0IGNoYXIga2V5UHJlZml4W10gPSAiU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxcIjsKLSAgICBjb25zdCBjaGFyIGtleVN1ZmZpeFtdID0gIlxcTW9kdWxlc1xcIjsKLSNpZmRlZiBfREVCVUcKLSAgICAvKiBJbiBkZWJ1Z2dpbmcgYnVpbGRzLCB3ZSBfbXVzdF8gaGF2ZSB0aGUgZGVidWcgdmVyc2lvbgotICAgICAqIHJlZ2lzdGVyZWQuCi0gICAgICovCi0gICAgY29uc3QgY2hhciBkZWJ1Z1N0cmluZ1tdID0gIlxcRGVidWciOwotI2Vsc2UKLSAgICBjb25zdCBjaGFyIGRlYnVnU3RyaW5nW10gPSAiIjsKLSNlbmRpZgotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcCA9IE5VTEw7Ci0gICAgRklMRSAqZnA7Ci0gICAgSEtFWSBrZXlCYXNlID0gSEtFWV9DVVJSRU5UX1VTRVI7Ci0gICAgaW50IG1vZE5hbWVTaXplOwotICAgIGxvbmcgcmVnU3RhdDsKLQotICAgIC8qIENhbGN1bGF0ZSB0aGUgc2l6ZSBmb3IgdGhlIHNwcmludGYgYnVmZmVyLgotICAgICAqIEdldCB0aGUgc2l6ZSBvZiB0aGUgY2hhcnMgb25seSwgcGx1cyAxIE5VTEwuCi0gICAgICovCi0gICAgc2l6ZV90IGJ1ZlNpemUgPSBzaXplb2Yoa2V5UHJlZml4KS0xICsKLSAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihQeVdpbl9ETExWZXJzaW9uU3RyaW5nKSArCi0gICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5U3VmZml4KSArCi0gICAgICAgICAgICAgICAgICAgICBzdHJsZW4obW9kdWxlTmFtZSkgKwotICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRlYnVnU3RyaW5nKSAtIDE7Ci0gICAgLyogYWxsb2NhID09IG5vIGZyZWUgcmVxdWlyZWQsIGJ1dCBtZW1vcnkgb25seSBsb2NhbCB0byBmbiwKLSAgICAgKiBhbHNvIG5vIGhlYXAgZnJhZ21lbnRhdGlvbiEKLSAgICAgKi8KLSAgICBtb2R1bGVLZXkgPSBhbGxvY2EoYnVmU2l6ZSk7Ci0gICAgUHlPU19zbnByaW50Zihtb2R1bGVLZXksIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAiU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxcJXNcXE1vZHVsZXNcXCVzJXMiLAotICAgICAgICAgICAgICAgICAgUHlXaW5fRExMVmVyc2lvblN0cmluZywgbW9kdWxlTmFtZSwgZGVidWdTdHJpbmcpOwotCi0gICAgYXNzZXJ0KHBhdGhMZW4gPCBJTlRfTUFYKTsKLSAgICBtb2ROYW1lU2l6ZSA9IChpbnQpcGF0aExlbjsKLSAgICByZWdTdGF0ID0gUmVnUXVlcnlWYWx1ZShrZXlCYXNlLCBtb2R1bGVLZXksIHBhdGhCdWYsICZtb2ROYW1lU2l6ZSk7Ci0gICAgaWYgKHJlZ1N0YXQgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICAvKiBObyB1c2VyIHNldHRpbmcgLSBsb29rdXAgaW4gbWFjaGluZSBzZXR0aW5ncyAqLwotICAgICAgICBrZXlCYXNlID0gSEtFWV9MT0NBTF9NQUNISU5FOwotICAgICAgICAvKiBiZSBhbmFsIC0gZmFpbHVyZSBtYXkgaGF2ZSByZXNldCBzaXplIHBhcmFtICovCi0gICAgICAgIG1vZE5hbWVTaXplID0gKGludClwYXRoTGVuOwotICAgICAgICByZWdTdGF0ID0gUmVnUXVlcnlWYWx1ZShrZXlCYXNlLCBtb2R1bGVLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhCdWYsICZtb2ROYW1lU2l6ZSk7Ci0KLSAgICAgICAgaWYgKHJlZ1N0YXQgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICAvKiB1c2UgdGhlIGZpbGUgZXh0ZW5zaW9uIHRvIGxvY2F0ZSB0aGUgdHlwZSBlbnRyeS4gKi8KLSAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICBzaXplX3QgZXh0TGVuID0gc3RybGVuKGZkcC0+c3VmZml4KTsKLSAgICAgICAgYXNzZXJ0KG1vZE5hbWVTaXplID49IDApOyAvKiBlbHNlIGNhc3QgdG8gc2l6ZV90IGlzIHdyb25nICovCi0gICAgICAgIGlmICgoc2l6ZV90KW1vZE5hbWVTaXplID4gZXh0TGVuICYmCi0gICAgICAgICAgICBzdHJuaWNtcChwYXRoQnVmICsgKChzaXplX3QpbW9kTmFtZVNpemUtZXh0TGVuLTEpLAotICAgICAgICAgICAgICAgICAgICAgZmRwLT5zdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICBleHRMZW4pID09IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGZkcC0+c3VmZml4ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZwID0gZm9wZW4ocGF0aEJ1ZiwgZmRwLT5tb2RlKTsKLSAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgKnBwRmlsZURlc2MgPSBmZHA7Ci0gICAgcmV0dXJuIGZwOwotfQpkaWZmIC0tZ2l0IGEvUEMvbGF1bmNoZXIuYyBiL1BDL2xhdW5jaGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhZDQ0YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTAsMCArMSwxMzY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluYXkgU2FqaXAuCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCisgKgorICogQmFzZWQgb24gdGhlIHdvcmsgb2Y6CisgKgorICogTWFyayBIYW1tb25kIChvcmlnaW5hbCBhdXRob3Igb2YgUHl0aG9uIHZlcnNpb24pCisgKiBDdXJ0IEhhZ2VubG9jaGVyIChqb2IgbWFuYWdlbWVudCkKKyAqLworCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHNobG9iai5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dGNoYXIuaD4KKworI2RlZmluZSBCVUZTSVpFIDI1NgorI2RlZmluZSBNU0dTSVpFIDEwMjQKKworLyogQnVpbGQgb3B0aW9ucy4gKi8KKyNkZWZpbmUgU0tJUF9QUkVGSVgKKy8qICNkZWZpbmUgU0VBUkNIX1BBVEggKi8KKworLyogSnVzdCBmb3Igbm93IC0gc3RhdGljIGRlZmluaXRpb24gKi8KKworc3RhdGljIEZJTEUgKiBsb2dfZnAgPSBOVUxMOworCitzdGF0aWMgd2NoYXJfdCAqCitza2lwX3doaXRlc3BhY2Uod2NoYXJfdCAqIHApCit7CisgICAgd2hpbGUgKCpwICYmIGlzc3BhY2UoKnApKQorICAgICAgICArK3A7CisgICAgcmV0dXJuIHA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGhlcmUgdG8gc2ltcGxpZnkgbWVtb3J5IG1hbmFnZW1lbnQKKyAqIGFuZCB0byB0cmVhdCBibGFuayB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgYWJzZW50LgorICovCitzdGF0aWMgd2NoYXJfdCAqIGdldF9lbnYod2NoYXJfdCAqIGtleSkKK3sKKyAgICAvKiBUaGlzIGlzIG5vdCB0aHJlYWQtc2FmZSwganVzdCBsaWtlIGdldGVudiAqLworICAgIHN0YXRpYyB3Y2hhcl90IGJ1ZlsyNTZdOworICAgIERXT1JEIHJlc3VsdCA9IEdldEVudmlyb25tZW50VmFyaWFibGVXKGtleSwgYnVmLCAyNTYpOworCisgICAgaWYgKHJlc3VsdCA+IDI1NSkgeworICAgICAgICAvKiBMYXJnZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gQWNjZXB0IHNvbWUgbGVha2FnZSAqLworICAgICAgICB3Y2hhcl90ICpidWYyID0gKHdjaGFyX3QqKW1hbGxvYyhzaXplb2Yod2NoYXJfdCkgKiAocmVzdWx0KzEpKTsKKyAgICAgICAgR2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoa2V5LCBidWYyLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYnVmMjsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0ID09IDApCisgICAgICAgIC8qIEVpdGhlciBzb21lIGVycm9yLCBlLmcuIEVSUk9SX0VOVlZBUl9OT1RfRk9VTkQsCisgICAgICAgICAgIG9yIGFuIGVtcHR5IGVudmlyb25tZW50IHZhcmlhYmxlLiAqLworICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBidWY7Cit9CisKKworc3RhdGljIHZvaWQKK2RlYnVnKHdjaGFyX3QgKiBmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKGxvZ19mcCAhPSBOVUxMKSB7CisgICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgICAgICB2ZndwcmludGZfcyhsb2dfZnAsIGZvcm1hdCwgdmEpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3dpbmVycm9yKGludCByYywgd2NoYXJfdCAqIG1lc3NhZ2UsIGludCBzaXplKQoreworICAgIEZvcm1hdE1lc3NhZ2VXKAorICAgICAgICBGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSB8IEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLAorICAgICAgICBOVUxMLCByYywgTUFLRUxBTkdJRChMQU5HX05FVVRSQUwsIFNVQkxBTkdfREVGQVVMVCksCisgICAgICAgIG1lc3NhZ2UsIHNpemUsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZAorZXJyb3IoaW50IHJjLCB3Y2hhcl90ICogZm9ybWF0LCAuLi4gKQoreworICAgIHZhX2xpc3QgdmE7CisgICAgd2NoYXJfdCBtZXNzYWdlW01TR1NJWkVdOworICAgIHdjaGFyX3Qgd2luX21lc3NhZ2VbTVNHU0laRV07CisgICAgaW50IGxlbjsKKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIGxlbiA9IF92c253cHJpbnRmX3MobWVzc2FnZSwgTVNHU0laRSwgX1RSVU5DQVRFLCBmb3JtYXQsIHZhKTsKKworICAgIGlmIChyYyA9PSAwKSB7ICAvKiBhIFdpbmRvd3MgZXJyb3IgKi8KKyAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIHdpbl9tZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgaWYgKGxlbiA+PSAwKSB7CisgICAgICAgICAgICBfc253cHJpbnRmX3MoJm1lc3NhZ2VbbGVuXSwgTVNHU0laRSAtIGxlbiwgX1RSVU5DQVRFLCBMIjogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHdpbl9tZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmICFkZWZpbmVkKF9XSU5ET1dTKQorICAgIGZ3cHJpbnRmKHN0ZGVyciwgTCIlc1xuIiwgbWVzc2FnZSk7CisjZWxzZQorICAgIE1lc3NhZ2VCb3goTlVMTCwgbWVzc2FnZSwgVEVYVCgiUHl0aG9uIExhdW5jaGVyIGlzIHNvcnJ5IHRvIHNheSAuLi4iKSwgTUJfT0spOyAKKyNlbmRpZgorICAgIEV4aXRQcm9jZXNzKHJjKTsKK30KKworI2lmIGRlZmluZWQoX1dJTkRPV1MpCisKKyNkZWZpbmUgUFlUSE9OX0VYRUNVVEFCTEUgTCJweXRob253LmV4ZSIKKworI2Vsc2UKKworI2RlZmluZSBQWVRIT05fRVhFQ1VUQUJMRSBMInB5dGhvbi5leGUiCisKKyNlbmRpZgorCisjZGVmaW5lIFJDX05PX1NURF9IQU5ETEVTICAgMTAwCisjZGVmaW5lIFJDX0NSRUFURV9QUk9DRVNTICAgMTAxCisjZGVmaW5lIFJDX0JBRF9WSVJUVUFMX1BBVEggMTAyCisjZGVmaW5lIFJDX05PX1BZVEhPTiAgICAgICAgMTAzCisKKyNkZWZpbmUgTUFYX1ZFUlNJT05fU0laRSAgICA0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB3Y2hhcl90IHZlcnNpb25bTUFYX1ZFUlNJT05fU0laRV07IC8qIG0ubiAqLworICAgIGludCBiaXRzOyAgIC8qIDMyIG9yIDY0ICovCisgICAgd2NoYXJfdCBleGVjdXRhYmxlW01BWF9QQVRIXTsKK30gSU5TVEFMTEVEX1BZVEhPTjsKKworLyoKKyAqIFRvIGF2b2lkIG1lc3NpbmcgYWJvdXQgd2l0aCBoZWFwIGFsbG9jYXRpb25zLCBqdXN0IGFzc3VtZSB3ZSBjYW4gYWxsb2NhdGUKKyAqIHN0YXRpY2FsbHkgYW5kIG5ldmVyIGhhdmUgdG8gZGVhbCB3aXRoIG1vcmUgdmVyc2lvbnMgdGhhbiB0aGlzLgorICovCisjZGVmaW5lIE1BWF9JTlNUQUxMRURfUFlUSE9OUyAgIDEwMAorCitzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiBpbnN0YWxsZWRfcHl0aG9uc1tNQVhfSU5TVEFMTEVEX1BZVEhPTlNdOworCitzdGF0aWMgc2l6ZV90IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA9IDA7CisKKy8qIHRvIGhvbGQgU09GVFdBUkVcUHl0aG9uXFB5dGhvbkNvcmVcWC5ZXEluc3RhbGxQYXRoICovCisjZGVmaW5lIElQX0JBU0VfU0laRSA0MAorI2RlZmluZSBJUF9TSVpFIChJUF9CQVNFX1NJWkUgKyBNQVhfVkVSU0lPTl9TSVpFKQorI2RlZmluZSBDT1JFX1BBVEggTCJTT0ZUV0FSRVxcUHl0aG9uXFxQeXRob25Db3JlIgorCitzdGF0aWMgd2NoYXJfdCAqIGxvY2F0aW9uX2NoZWNrc1tdID0geworICAgIEwiXFwiLAorICAgIEwiXFxQQ0J1aWxkXFwiLAorICAgIEwiXFxQQ0J1aWxkXFxhbWQ2NFxcIiwKKyAgICBOVUxMCit9OworCitzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiAqCitmaW5kX2V4aXN0aW5nX3B5dGhvbih3Y2hhcl90ICogcGF0aCkKK3sKKyAgICBJTlNUQUxMRURfUFlUSE9OICogcmVzdWx0ID0gTlVMTDsKKyAgICBzaXplX3QgaTsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXA7CisKKyAgICBmb3IgKGkgPSAwLCBpcCA9IGluc3RhbGxlZF9weXRob25zOyBpIDwgbnVtX2luc3RhbGxlZF9weXRob25zOyBpKyssIGlwKyspIHsKKyAgICAgICAgaWYgKF93Y3NpY21wKHBhdGgsIGlwLT5leGVjdXRhYmxlKSA9PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBpcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVkgcm9vdCwgUkVHU0FNIGZsYWdzKQoreworICAgIEhLRVkgY29yZV9yb290LCBpcF9rZXk7CisgICAgTFNUQVRVUyBzdGF0dXMgPSBSZWdPcGVuS2V5RXhXKHJvb3QsIENPUkVfUEFUSCwgMCwgZmxhZ3MsICZjb3JlX3Jvb3QpOworICAgIHdjaGFyX3QgbWVzc2FnZVtNU0dTSVpFXTsKKyAgICBEV09SRCBpOworICAgIHNpemVfdCBuOworICAgIEJPT0wgb2s7CisgICAgRFdPUkQgdHlwZSwgZGF0YV9zaXplLCBhdHRyczsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXAsICogcGlwOworICAgIHdjaGFyX3QgaXBfcGF0aFtJUF9TSVpFXTsKKyAgICB3Y2hhcl90ICogY2hlY2s7CisgICAgd2NoYXJfdCAqKiBjaGVja3A7CisgICAgd2NoYXJfdCAqa2V5X25hbWUgPSAocm9vdCA9PSBIS0VZX0xPQ0FMX01BQ0hJTkUpID8gTCJIS0xNIiA6IEwiSEtDVSI7CisKKyAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJXNcbiIsCisgICAgICAgICAgICAgIGtleV9uYW1lKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaXAgPSAmaW5zdGFsbGVkX3B5dGhvbnNbbnVtX2luc3RhbGxlZF9weXRob25zXTsKKyAgICAgICAgZm9yIChpID0gMDsgbnVtX2luc3RhbGxlZF9weXRob25zIDwgTUFYX0lOU1RBTExFRF9QWVRIT05TOyBpKyspIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IFJlZ0VudW1LZXlXKGNvcmVfcm9vdCwgaSwgaXAtPnZlcnNpb24sIE1BWF9WRVJTSU9OX1NJWkUpOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9OT19NT1JFX0lURU1TKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHVuZXhwZWN0ZWQgZXJyb3IgKi8KKyAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJDYW4ndCBlbnVtZXJhdGUgcmVnaXN0cnkga2V5IGZvciB2ZXJzaW9uICVzOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24sIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9zbndwcmludGZfcyhpcF9wYXRoLCBJUF9TSVpFLCBfVFJVTkNBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJXNcXCVzXFxJbnN0YWxsUGF0aCIsIENPUkVfUEFUSCwgaXAtPnZlcnNpb24pOworICAgICAgICAgICAgICAgIHN0YXR1cyA9IFJlZ09wZW5LZXlFeFcocm9vdCwgaXBfcGF0aCwgMCwgZmxhZ3MsICZpcF9rZXkpOworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgICAgICB3aW5lcnJvcihzdGF0dXMsIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiAnbWVzc2FnZScgYWxyZWFkeSBoYXMgYSB0cmFpbGluZyBcbgorICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVzXFwlczogJXMiLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhX3NpemUgPSBzaXplb2YoaXAtPmV4ZWN1dGFibGUpIC0gMTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBSZWdRdWVyeVZhbHVlRXhXKGlwX2tleSwgTlVMTCwgTlVMTCwgJnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKWlwLT5leGVjdXRhYmxlLCAmZGF0YV9zaXplKTsKKyAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShpcF9rZXkpOworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgICAgICB3aW5lcnJvcihzdGF0dXMsIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVzXFwlczogJXNcbiIsIGtleV9uYW1lLCBpcF9wYXRoLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJFR19TWikgeworICAgICAgICAgICAgICAgICAgICBkYXRhX3NpemUgPSBkYXRhX3NpemUgLyBzaXplb2Yod2NoYXJfdCkgLSAxOyAgLyogZm9yIE5VTCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoaXAtPmV4ZWN1dGFibGVbZGF0YV9zaXplIC0gMV0gPT0gTCdcXCcpCisgICAgICAgICAgICAgICAgICAgICAgICAtLWRhdGFfc2l6ZTsgLyogcmVnIHZhbHVlIGVuZGVkIGluIGEgYmFja3NsYXNoICovCisgICAgICAgICAgICAgICAgICAgIC8qIGlwLT5leGVjdXRhYmxlIGlzIGRhdGFfc2l6ZSBsb25nICovCisgICAgICAgICAgICAgICAgICAgIGZvciAoY2hlY2twID0gbG9jYXRpb25fY2hlY2tzOyAqY2hlY2twOyArK2NoZWNrcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2sgPSAqY2hlY2twOworICAgICAgICAgICAgICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZpcC0+ZXhlY3V0YWJsZVtkYXRhX3NpemVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9QQVRIIC0gZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9QQVRIIC0gZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJXMlcyIsIGNoZWNrLCBQWVRIT05fRVhFQ1VUQUJMRSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhpcC0+ZXhlY3V0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5lcnJvcihHZXRMYXN0RXJyb3IoKSwgbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAnJXMnIGlzIGEgXAorZGlyZWN0b3J5XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBhdHRycyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmaW5kX2V4aXN0aW5nX3B5dGhvbihpcC0+ZXhlY3V0YWJsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiBhbHJlYWR5IFwKK2ZvdW5kOiAlc1xuIiwgaXAtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgdGhlIGV4ZWN1dGFibGUgdHlwZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvayA9IEdldEJpbmFyeVR5cGVXKGlwLT5leGVjdXRhYmxlLCAmYXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJGYWlsdXJlIGdldHRpbmcgYmluYXJ5IHR5cGU6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cnMgPT0gU0NTXzY0QklUX0JJTkFSWSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5iaXRzID0gNjQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGF0dHJzID09IFNDU18zMkJJVF9CSU5BUlkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDMyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcC0+Yml0cyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiBcCitpbnZhbGlkIGJpbmFyeSB0eXBlOiAlWFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBhdHRycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2NzY2hyKGlwLT5leGVjdXRhYmxlLCBMJyAnKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaGFzIHNwYWNlcywgc28gcXVvdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gd2NzbGVuKGlwLT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKCZpcC0+ZXhlY3V0YWJsZVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVswXSA9IEwnXCInOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlW24gKyAxXSA9IEwnXCInOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlW24gKyAyXSA9IEwnXDAnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlcyBcCitpcyBhICVkYml0IGV4ZWN1dGFibGVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIGlwLT5iaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbnVtX2luc3RhbGxlZF9weXRob25zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwID0gaXArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1faW5zdGFsbGVkX3B5dGhvbnMgPj0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfSU5TVEFMTEVEX1BZVEhPTlMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb3B5IG92ZXIgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBuZXh0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaXAgPSAqcGlwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJlZ0Nsb3NlS2V5KGNvcmVfcm9vdCk7CisgICAgfQorfQorCitzdGF0aWMgaW50Citjb21wYXJlX3B5dGhvbnMoY29uc3Qgdm9pZCAqIHAxLCBjb25zdCB2b2lkICogcDIpCit7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwMSA9IChJTlNUQUxMRURfUFlUSE9OICopIHAxOworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDIgPSAoSU5TVEFMTEVEX1BZVEhPTiAqKSBwMjsKKyAgICAvKiBub3RlIHJldmVyc2Ugc29ydGluZyBvbiB2ZXJzaW9uICovCisgICAgaW50IHJlc3VsdCA9IHdjc2NtcChpcDItPnZlcnNpb24sIGlwMS0+dmVyc2lvbik7CisKKyAgICBpZiAocmVzdWx0ID09IDApCisgICAgICAgIHJlc3VsdCA9IGlwMi0+Yml0cyAtIGlwMS0+Yml0czsgLyogNjQgYmVmb3JlIDMyICovCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2xvY2F0ZV9hbGxfcHl0aG9ucygpCit7CisjaWYgZGVmaW5lZChfTV9YNjQpCisgICAgLy8gSWYgd2UgYXJlIGEgNjRiaXQgcHJvY2VzcywgZmlyc3QgaGl0IHRoZSAzMmJpdCBrZXlzLgorICAgIGRlYnVnKEwibG9jYXRpbmcgUHl0aG9ucyBpbiAzMmJpdCByZWdpc3RyeVxuIik7CisgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0NVUlJFTlRfVVNFUiwgS0VZX1JFQUQgfCBLRVlfV09XNjRfMzJLRVkpOworICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSk7CisjZWxzZQorICAgIC8vIElmIHdlIGFyZSBhIDMyYml0IHByb2Nlc3Mgb24gYSA2NGJpdCBXaW5kb3dzLCBmaXJzdCBoaXQgdGhlIDY0Yml0IGtleXMuCisgICAgQk9PTCBmNjQgPSBGQUxTRTsKKyAgICBpZiAoSXNXb3c2NFByb2Nlc3MoR2V0Q3VycmVudFByb2Nlc3MoKSwgJmY2NCkgJiYgZjY0KSB7CisgICAgICAgIGRlYnVnKEwibG9jYXRpbmcgUHl0aG9ucyBpbiA2NGJpdCByZWdpc3RyeVxuIik7CisgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9DVVJSRU5UX1VTRVIsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZKTsKKyAgICAgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0xPQ0FMX01BQ0hJTkUsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZKTsKKyAgICB9CisjZW5kaWYgICAgCisgICAgLy8gbm93IGhpdCB0aGUgIm5hdGl2ZSIga2V5IGZvciB0aGlzIHByb2Nlc3MgYml0dGVkbmVzcy4KKyAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gbmF0aXZlIHJlZ2lzdHJ5XG4iKTsKKyAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCk7CisgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0xPQ0FMX01BQ0hJTkUsIEtFWV9SRUFEKTsKKyAgICBxc29ydChpbnN0YWxsZWRfcHl0aG9ucywgbnVtX2luc3RhbGxlZF9weXRob25zLCBzaXplb2YoSU5TVEFMTEVEX1BZVEhPTiksCisgICAgICAgICAgY29tcGFyZV9weXRob25zKTsKK30KKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorZmluZF9weXRob25fYnlfdmVyc2lvbih3Y2hhcl90IGNvbnN0ICogd2FudGVkX3ZlcikKK3sKKyAgICBJTlNUQUxMRURfUFlUSE9OICogcmVzdWx0ID0gTlVMTDsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXAgPSBpbnN0YWxsZWRfcHl0aG9uczsKKyAgICBzaXplX3QgaSwgbjsKKyAgICBzaXplX3Qgd2xlbiA9IHdjc2xlbih3YW50ZWRfdmVyKTsKKyAgICBpbnQgYml0cyA9IDA7CisKKyAgICBpZiAod2Nzc3RyKHdhbnRlZF92ZXIsIEwiLTMyIikpCisgICAgICAgIGJpdHMgPSAzMjsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2luc3RhbGxlZF9weXRob25zOyBpKyssIGlwKyspIHsKKyAgICAgICAgbiA9IHdjc2xlbihpcC0+dmVyc2lvbik7CisgICAgICAgIGlmIChuID4gd2xlbikKKyAgICAgICAgICAgIG4gPSB3bGVuOworICAgICAgICBpZiAoKHdjc25jbXAoaXAtPnZlcnNpb24sIHdhbnRlZF92ZXIsIG4pID09IDApICYmCisgICAgICAgICAgICAvKiBiaXRzID09IDAgPT4gZG9uJ3QgY2FyZSAqLworICAgICAgICAgICAgKChiaXRzID09IDApIHx8IChpcC0+Yml0cyA9PSBiaXRzKSkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGlwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgd2NoYXJfdCBhcHBkYXRhX2luaV9wYXRoW01BWF9QQVRIXTsKK3N0YXRpYyB3Y2hhcl90IGxhdW5jaGVyX2luaV9wYXRoW01BWF9QQVRIXTsKKworLyoKKyAqIEdldCBhIHZhbHVlIGVpdGhlciBmcm9tIHRoZSBlbnZpcm9ubWVudCBvciBhIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAqIFRoZSBrZXkgcGFzc2VkIGluIHdpbGwgZWl0aGVyIGJlICJweXRob24iLCAicHl0aG9uMiIgb3IgInB5dGhvbjMiLgorICovCitzdGF0aWMgd2NoYXJfdCAqCitnZXRfY29uZmlndXJlZF92YWx1ZSh3Y2hhcl90ICoga2V5KQoreworLyoKKyAqIE5vdGU6IHRoaXMgc3RhdGljIHZhbHVlIGlzIHVzZWQgdG8gcmV0dXJuIGEgY29uZmlndXJlZCB2YWx1ZQorICogb2J0YWluZWQgZWl0aGVyIGZyb20gdGhlIGVudmlyb25tZW50IG9yIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAqIFRoaXMgc2hvdWxkIGJlIE9LIHNpbmNlIHRoZXJlIHdvdWxkbid0IGJlIGFueSBjb25jdXJyZW50IGNhbGxzLgorICovCisgICAgc3RhdGljIHdjaGFyX3QgY29uZmlndXJlZF92YWx1ZVtNU0dTSVpFXTsKKyAgICB3Y2hhcl90ICogcmVzdWx0ID0gTlVMTDsKKyAgICB3Y2hhcl90ICogZm91bmRfaW4gPSBMImVudmlyb25tZW50IjsKKyAgICBEV09SRCBzaXplOworCisgICAgLyogRmlyc3QsIHNlYXJjaCB0aGUgZW52aXJvbm1lbnQuICovCisgICAgX3Nud3ByaW50Zl9zKGNvbmZpZ3VyZWRfdmFsdWUsIE1TR1NJWkUsIF9UUlVOQ0FURSwgTCJweV8lcyIsIGtleSk7CisgICAgcmVzdWx0ID0gZ2V0X2Vudihjb25maWd1cmVkX3ZhbHVlKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwgJiYgYXBwZGF0YV9pbmlfcGF0aFswXSkgeworICAgICAgICAvKiBOb3QgaW4gZW52aXJvbm1lbnQ6IGNoZWNrIGxvY2FsIGNvbmZpZ3VyYXRpb24uICovCisgICAgICAgIHNpemUgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJkZWZhdWx0cyIsIGtleSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICBpZiAoc2l6ZSA+IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyZWRfdmFsdWU7CisgICAgICAgICAgICBmb3VuZF9pbiA9IGFwcGRhdGFfaW5pX3BhdGg7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmIGxhdW5jaGVyX2luaV9wYXRoWzBdKSB7CisgICAgICAgIC8qIE5vdCBpbiBlbnZpcm9ubWVudCBvciBsb2NhbDogY2hlY2sgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uICovCisgICAgICAgIHNpemUgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJkZWZhdWx0cyIsIGtleSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgaWYgKHNpemUgPiAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBjb25maWd1cmVkX3ZhbHVlOworICAgICAgICAgICAgZm91bmRfaW4gPSBsYXVuY2hlcl9pbmlfcGF0aDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIGRlYnVnKEwiZm91bmQgY29uZmlndXJlZCB2YWx1ZSAnJXM9JXMnIGluICVzXG4iLAorICAgICAgICAgICAgICBrZXksIHJlc3VsdCwgZm91bmRfaW4gPyBmb3VuZF9pbiA6IEwiKHVua25vd24pIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoTCJmb3VuZCBubyBjb25maWd1cmVkIHZhbHVlIGZvciAnJXMnXG4iLCBrZXkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiAqCitsb2NhdGVfcHl0aG9uKHdjaGFyX3QgKiB3YW50ZWRfdmVyKQoreworICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ19rZXkgW10gPSB7IEwicHl0aG9uWCIgfTsKKyAgICBzdGF0aWMgd2NoYXJfdCAqIGxhc3RfY2hhciA9ICZjb25maWdfa2V5W3NpemVvZihjb25maWdfa2V5KSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yod2NoYXJfdCkgLSAyXTsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogcmVzdWx0ID0gTlVMTDsKKyAgICBzaXplX3QgbiA9IHdjc2xlbih3YW50ZWRfdmVyKTsKKyAgICB3Y2hhcl90ICogY29uZmlndXJlZF92YWx1ZTsKKworICAgIGlmIChudW1faW5zdGFsbGVkX3B5dGhvbnMgPT0gMCkKKyAgICAgICAgbG9jYXRlX2FsbF9weXRob25zKCk7CisKKyAgICBpZiAobiA9PSAxKSB7ICAgLyoganVzdCBtYWpvciB2ZXJzaW9uIHNwZWNpZmllZCAqLworICAgICAgICAqbGFzdF9jaGFyID0gKndhbnRlZF92ZXI7CisgICAgICAgIGNvbmZpZ3VyZWRfdmFsdWUgPSBnZXRfY29uZmlndXJlZF92YWx1ZShjb25maWdfa2V5KTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyZWRfdmFsdWUgIT0gTlVMTCkKKyAgICAgICAgICAgIHdhbnRlZF92ZXIgPSBjb25maWd1cmVkX3ZhbHVlOworICAgIH0KKyAgICBpZiAoKndhbnRlZF92ZXIpIHsKKyAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbih3YW50ZWRfdmVyKTsKKyAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIFB5dGhvbiB2ZXJzaW9uICclcycgZm91bmQgIiwgd2FudGVkX3Zlcik7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGRlYnVnKEwiJyVzJ1xuIiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwibm8gaW50ZXJwcmV0ZXJcbiIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAqbGFzdF9jaGFyID0gTCdcMCc7IC8qIGxvb2sgZm9yIGFuIG92ZXJhbGwgZGVmYXVsdCAqLworICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CisgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlKQorICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihjb25maWd1cmVkX3ZhbHVlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihMIjIiKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihMIjMiKTsKKyAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIGRlZmF1bHQgUHl0aG9uIGZvdW5kICIpOworICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICBkZWJ1ZyhMInZlcnNpb24gJXMgYXQgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dmVyc2lvbiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwibm8gaW50ZXJwcmV0ZXJcbiIpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBQcm9jZXNzIGNyZWF0aW9uIGNvZGUKKyAqLworCitzdGF0aWMgQk9PTAorc2FmZV9kdXBsaWNhdGVfaGFuZGxlKEhBTkRMRSBpbiwgSEFORExFICogcG91dCkKK3sKKyAgICBCT09MIG9rOworICAgIEhBTkRMRSBwcm9jZXNzID0gR2V0Q3VycmVudFByb2Nlc3MoKTsKKyAgICBEV09SRCByYzsKKworICAgICpwb3V0ID0gTlVMTDsKKyAgICBvayA9IER1cGxpY2F0ZUhhbmRsZShwcm9jZXNzLCBpbiwgcHJvY2VzcywgcG91dCwgMCwgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOworICAgIGlmICghb2spIHsKKyAgICAgICAgcmMgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKHJjID09IEVSUk9SX0lOVkFMSURfSEFORExFKSB7CisgICAgICAgICAgICBkZWJ1ZyhMIkR1cGxpY2F0ZUhhbmRsZSByZXR1cm5lZCBFUlJPUl9JTlZBTElEX0hBTkRMRVxuIik7CisgICAgICAgICAgICBvayA9IFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIkR1cGxpY2F0ZUhhbmRsZSByZXR1cm5lZCAlZFxuIiwgcmMpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvazsKK30KKworc3RhdGljIEJPT0wgV0lOQVBJCitjdHJsX2NfaGFuZGxlcihEV09SRCBjb2RlKQoreworICAgIHJldHVybiBUUlVFOyAgICAvKiBXZSBqdXN0IGlnbm9yZSBhbGwgY29udHJvbCBldmVudHMuICovCit9CisKK3N0YXRpYyB2b2lkCitydW5fY2hpbGQod2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgSEFORExFIGpvYjsKKyAgICBKT0JPQkpFQ1RfRVhURU5ERURfTElNSVRfSU5GT1JNQVRJT04gaW5mbzsKKyAgICBEV09SRCByYzsKKyAgICBCT09MIG9rOworICAgIFNUQVJUVVBJTkZPVyBzaTsKKyAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOworCisgICAgZGVidWcoTCJydW5fY2hpbGQ6IGFib3V0IHRvIHJ1biAnJXMnXG4iLCBjbWRsaW5lKTsKKyAgICBqb2IgPSBDcmVhdGVKb2JPYmplY3QoTlVMTCwgTlVMTCk7CisgICAgb2sgPSBRdWVyeUluZm9ybWF0aW9uSm9iT2JqZWN0KGpvYiwgSm9iT2JqZWN0RXh0ZW5kZWRMaW1pdEluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLCBzaXplb2YoaW5mbyksICZyYyk7CisgICAgaWYgKCFvayB8fCAocmMgIT0gc2l6ZW9mKGluZm8pKSB8fCAham9iKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJKb2IgaW5mb3JtYXRpb24gcXVlcnlpbmcgZmFpbGVkIik7CisgICAgaW5mby5CYXNpY0xpbWl0SW5mb3JtYXRpb24uTGltaXRGbGFncyB8PSBKT0JfT0JKRUNUX0xJTUlUX0tJTExfT05fSk9CX0NMT1NFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPQl9PQkpFQ1RfTElNSVRfU0lMRU5UX0JSRUFLQVdBWV9PSzsKKyAgICBvayA9IFNldEluZm9ybWF0aW9uSm9iT2JqZWN0KGpvYiwgSm9iT2JqZWN0RXh0ZW5kZWRMaW1pdEluZm9ybWF0aW9uLCAmaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbmZvKSk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiSm9iIGluZm9ybWF0aW9uIHNldHRpbmcgZmFpbGVkIik7CisgICAgbWVtc2V0KCZzaSwgMCwgc2l6ZW9mKHNpKSk7CisgICAgc2kuY2IgPSBzaXplb2Yoc2kpOworICAgIG9rID0gc2FmZV9kdXBsaWNhdGVfaGFuZGxlKEdldFN0ZEhhbmRsZShTVERfSU5QVVRfSEFORExFKSwgJnNpLmhTdGRJbnB1dCk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfTk9fU1REX0hBTkRMRVMsIEwic3RkaW4gZHVwbGljYXRpb24gZmFpbGVkIik7CisgICAgb2sgPSBzYWZlX2R1cGxpY2F0ZV9oYW5kbGUoR2V0U3RkSGFuZGxlKFNURF9PVVRQVVRfSEFORExFKSwgJnNpLmhTdGRPdXRwdXQpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX05PX1NURF9IQU5ETEVTLCBMInN0ZG91dCBkdXBsaWNhdGlvbiBmYWlsZWQiKTsKKyAgICBvayA9IHNhZmVfZHVwbGljYXRlX2hhbmRsZShHZXRTdGRIYW5kbGUoU1REX0VSUk9SX0hBTkRMRSksICZzaS5oU3RkRXJyb3IpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX05PX1NURF9IQU5ETEVTLCBMInN0ZGVyciBkdXBsaWNhdGlvbiBmYWlsZWQiKTsKKworICAgIG9rID0gU2V0Q29uc29sZUN0cmxIYW5kbGVyKGN0cmxfY19oYW5kbGVyLCBUUlVFKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJjb250cm9sIGhhbmRsZXIgc2V0dGluZyBmYWlsZWQiKTsKKworICAgIHNpLmR3RmxhZ3MgPSBTVEFSVEZfVVNFU1RESEFORExFUzsKKyAgICBvayA9IENyZWF0ZVByb2Nlc3NXKE5VTEwsIGNtZGxpbmUsIE5VTEwsIE5VTEwsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMLCAmc2ksICZwaSk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclcyciLCBjbWRsaW5lKTsKKyAgICBBc3NpZ25Qcm9jZXNzVG9Kb2JPYmplY3Qoam9iLCBwaS5oUHJvY2Vzcyk7CisgICAgQ2xvc2VIYW5kbGUocGkuaFRocmVhZCk7CisgICAgV2FpdEZvclNpbmdsZU9iamVjdChwaS5oUHJvY2VzcywgSU5GSU5JVEUpOworICAgIG9rID0gR2V0RXhpdENvZGVQcm9jZXNzKHBpLmhQcm9jZXNzLCAmcmMpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIkZhaWxlZCB0byBnZXQgZXhpdCBjb2RlIG9mIHByb2Nlc3MiKTsKKyAgICBkZWJ1ZyhMImNoaWxkIHByb2Nlc3MgZXhpdCBjb2RlOiAlZFxuIiwgcmMpOworICAgIEV4aXRQcm9jZXNzKHJjKTsKK30KKworc3RhdGljIHZvaWQKK2ludm9rZV9jaGlsZCh3Y2hhcl90ICogZXhlY3V0YWJsZSwgd2NoYXJfdCAqIHN1ZmZpeCwgd2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgd2NoYXJfdCAqIGNoaWxkX2NvbW1hbmQ7CisgICAgc2l6ZV90IGNoaWxkX2NvbW1hbmRfc2l6ZTsKKyAgICBCT09MIG5vX3N1ZmZpeCA9IChzdWZmaXggPT0gTlVMTCkgfHwgKCpzdWZmaXggPT0gTCdcMCcpOworICAgIEJPT0wgbm9fY21kbGluZSA9ICgqY21kbGluZSA9PSBMJ1wwJyk7CisKKyAgICBpZiAobm9fc3VmZml4ICYmIG5vX2NtZGxpbmUpCisgICAgICAgIHJ1bl9jaGlsZChleGVjdXRhYmxlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG5vX3N1ZmZpeCkgeworICAgICAgICAgICAgLyogYWRkIDIgZm9yIHNwYWNlIHNlcGFyYXRvciArIHRlcm1pbmF0aW5nIE5VTC4gKi8KKyAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSA9IHdjc2xlbihleGVjdXRhYmxlKSArIHdjc2xlbihjbWRsaW5lKSArIDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBhZGQgMyBmb3IgMiBzcGFjZSBzZXBhcmF0b3JzICsgdGVybWluYXRpbmcgTlVMLiAqLworICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplID0gd2NzbGVuKGV4ZWN1dGFibGUpICsgd2NzbGVuKHN1ZmZpeCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKGNtZGxpbmUpICsgMzsKKyAgICAgICAgfQorICAgICAgICBjaGlsZF9jb21tYW5kID0gY2FsbG9jKGNoaWxkX2NvbW1hbmRfc2l6ZSwgc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgaWYgKGNoaWxkX2NvbW1hbmQgPT0gTlVMTCkKKyAgICAgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMInVuYWJsZSB0byBhbGxvY2F0ZSAlZCBieXRlcyBmb3IgY2hpbGQgY29tbWFuZC4iLAorICAgICAgICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplKTsKKyAgICAgICAgaWYgKG5vX3N1ZmZpeCkKKyAgICAgICAgICAgIF9zbndwcmludGZfcyhjaGlsZF9jb21tYW5kLCBjaGlsZF9jb21tYW5kX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplIC0gMSwgTCIlcyAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSwgY21kbGluZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIF9zbndwcmludGZfcyhjaGlsZF9jb21tYW5kLCBjaGlsZF9jb21tYW5kX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplIC0gMSwgTCIlcyAlcyAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSwgc3VmZml4LCBjbWRsaW5lKTsKKyAgICAgICAgcnVuX2NoaWxkKGNoaWxkX2NvbW1hbmQpOworICAgICAgICBmcmVlKGNoaWxkX2NvbW1hbmQpOworICAgIH0KK30KKworc3RhdGljIHdjaGFyX3QgKiBidWlsdGluX3ZpcnR1YWxfcGF0aHMgW10gPSB7CisgICAgTCIvdXNyL2Jpbi9lbnYgcHl0aG9uIiwKKyAgICBMIi91c3IvYmluL3B5dGhvbiIsCisgICAgTCIvdXNyL2xvY2FsL2Jpbi9weXRob24iLAorICAgIEwicHl0aG9uIiwKKyAgICBOVUxMCit9OworCisvKiBGb3Igbm93LCBhIHN0YXRpYyBhcnJheSBvZiBjb21tYW5kcy4gKi8KKworI2RlZmluZSBNQVhfQ09NTUFORFMgMTAwCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB3Y2hhcl90IGtleVtNQVhfUEFUSF07CisgICAgd2NoYXJfdCB2YWx1ZVtNU0dTSVpFXTsKK30gQ09NTUFORDsKKworc3RhdGljIENPTU1BTkQgY29tbWFuZHNbTUFYX0NPTU1BTkRTXTsKK3N0YXRpYyBpbnQgbnVtX2NvbW1hbmRzID0gMDsKKworI2lmIGRlZmluZWQoU0tJUF9QUkVGSVgpCisKK3N0YXRpYyB3Y2hhcl90ICogYnVpbHRpbl9wcmVmaXhlcyBbXSA9IHsKKyAgICAvKiBUaGVzZSBtdXN0IGJlIGluIGFuIG9yZGVyIHRoYXQgdGhlIGxvbmdlc3QgbWF0Y2hlcyBzaG91bGQgYmUgZm91bmQsCisgICAgICogaS5lLiBpZiB0aGUgcHJlZml4IGlzICIvdXNyL2Jpbi9lbnYgIiwgaXQgc2hvdWxkIG1hdGNoIHRoYXQgZW50cnkKKyAgICAgKiAqYmVmb3JlKiBtYXRjaGluZyAiL3Vzci9iaW4vIi4KKyAgICAgKi8KKyAgICBMIi91c3IvYmluL2VudiAiLAorICAgIEwiL3Vzci9iaW4vIiwKKyAgICBMIi91c3IvbG9jYWwvYmluLyIsCisgICAgTlVMTAorfTsKKworc3RhdGljIHdjaGFyX3QgKiBza2lwX3ByZWZpeCh3Y2hhcl90ICogbmFtZSkKK3sKKyAgICB3Y2hhcl90ICoqIHBwID0gYnVpbHRpbl9wcmVmaXhlczsKKyAgICB3Y2hhcl90ICogcmVzdWx0ID0gbmFtZTsKKyAgICB3Y2hhcl90ICogcDsKKyAgICBzaXplX3QgbjsKKworICAgIGZvciAoOyBwID0gKnBwOyBwcCsrKSB7CisgICAgICAgIG4gPSB3Y3NsZW4ocCk7CisgICAgICAgIGlmIChfd2NzbmljbXAocCwgbmFtZSwgbikgPT0gMCkgeworICAgICAgICAgICAgcmVzdWx0ICs9IG47ICAgLyogc2tpcCB0aGUgcHJlZml4ICovCisgICAgICAgICAgICBpZiAocFtuIC0gMV0gPT0gTCcgJykgLyogTm8gZW1wdHkgc3RyaW5ncyBpbiB0YWJsZSwgc28gbiA+IDEgKi8KKyAgICAgICAgICAgICAgICByZXN1bHQgPSBza2lwX3doaXRlc3BhY2UocmVzdWx0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChTRUFSQ0hfUEFUSCkKKworc3RhdGljIENPTU1BTkQgcGF0aF9jb21tYW5kOworCitzdGF0aWMgQ09NTUFORCAqIGZpbmRfb25fcGF0aCh3Y2hhcl90ICogbmFtZSkKK3sKKyAgICB3Y2hhcl90ICogcGF0aGV4dDsKKyAgICBzaXplX3QgICAgdmFyc2l6ZTsKKyAgICB3Y2hhcl90ICogY29udGV4dCA9IE5VTEw7CisgICAgd2NoYXJfdCAqIGV4dGVuc2lvbjsKKyAgICBDT01NQU5EICogcmVzdWx0ID0gTlVMTDsKKyAgICBEV09SRCAgICAgbGVuOworICAgIGVycm5vX3QgICByYzsKKworICAgIHdjc2NweV9zKHBhdGhfY29tbWFuZC5rZXksIE1BWF9QQVRILCBuYW1lKTsKKyAgICBpZiAod2NzY2hyKG5hbWUsIEwnLicpICE9IE5VTEwpIHsKKyAgICAgICAgLyogYXNzdW1lIGl0IGhhcyBhbiBleHRlbnNpb24uICovCisgICAgICAgIGxlbiA9IFNlYXJjaFBhdGhXKE5VTEwsIG5hbWUsIE5VTEwsIE1TR1NJWkUsIHBhdGhfY29tbWFuZC52YWx1ZSwgTlVMTCk7CisgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICZwYXRoX2NvbW1hbmQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIE5vIGV4dGVuc2lvbiAtIHNlYXJjaCB1c2luZyByZWdpc3RlcmVkIGV4dGVuc2lvbnMuICovCisgICAgICAgIHJjID0gX3dkdXBlbnZfcygmcGF0aGV4dCwgJnZhcnNpemUsIEwiUEFUSEVYVCIpOworICAgICAgICBpZiAocmMgPT0gMCkgeworICAgICAgICAgICAgZXh0ZW5zaW9uID0gd2NzdG9rX3MocGF0aGV4dCwgTCI7IiwgJmNvbnRleHQpOworICAgICAgICAgICAgd2hpbGUgKGV4dGVuc2lvbikgeworICAgICAgICAgICAgICAgIGxlbiA9IFNlYXJjaFBhdGhXKE5VTEwsIG5hbWUsIGV4dGVuc2lvbiwgTVNHU0laRSwgcGF0aF9jb21tYW5kLnZhbHVlLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICZwYXRoX2NvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHRlbnNpb24gPSB3Y3N0b2tfcyhOVUxMLCBMIjsiLCAmY29udGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmVlKHBhdGhleHQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZgorCitzdGF0aWMgQ09NTUFORCAqIGZpbmRfY29tbWFuZCh3Y2hhcl90ICogbmFtZSkKK3sKKyAgICBDT01NQU5EICogcmVzdWx0ID0gTlVMTDsKKyAgICBDT01NQU5EICogY3AgPSBjb21tYW5kczsKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBudW1fY29tbWFuZHM7IGkrKywgY3ArKykgeworICAgICAgICBpZiAoX3djc2ljbXAoY3AtPmtleSwgbmFtZSkgPT0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gY3A7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyNpZiBkZWZpbmVkKFNFQVJDSF9QQVRIKQorICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmVzdWx0ID0gZmluZF9vbl9wYXRoKG5hbWUpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK3VwZGF0ZV9jb21tYW5kKENPTU1BTkQgKiBjcCwgd2NoYXJfdCAqIG5hbWUsIHdjaGFyX3QgKiBjbWRsaW5lKQoreworICAgIHdjc25jcHlfcyhjcC0+a2V5LCBNQVhfUEFUSCwgbmFtZSwgX1RSVU5DQVRFKTsKKyAgICB3Y3NuY3B5X3MoY3AtPnZhbHVlLCBNU0dTSVpFLCBjbWRsaW5lLCBfVFJVTkNBVEUpOworfQorCitzdGF0aWMgdm9pZAorYWRkX2NvbW1hbmQod2NoYXJfdCAqIG5hbWUsIHdjaGFyX3QgKiBjbWRsaW5lKQoreworICAgIGlmIChudW1fY29tbWFuZHMgPj0gTUFYX0NPTU1BTkRTKSB7CisgICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVzID0gJyVzJzogbm8gcm9vbVxuIiwgbmFtZSwgY21kbGluZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBDT01NQU5EICogY3AgPSAmY29tbWFuZHNbbnVtX2NvbW1hbmRzKytdOworCisgICAgICAgIHVwZGF0ZV9jb21tYW5kKGNwLCBuYW1lLCBjbWRsaW5lKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCityZWFkX2NvbmZpZ19maWxlKHdjaGFyX3QgKiBjb25maWdfcGF0aCkKK3sKKyAgICB3Y2hhcl90IGtleW5hbWVzW01TR1NJWkVdOworICAgIHdjaGFyX3QgdmFsdWVbTVNHU0laRV07CisgICAgRFdPUkQgcmVhZDsKKyAgICB3Y2hhcl90ICoga2V5OworICAgIENPTU1BTkQgKiBjcDsKKyAgICB3Y2hhcl90ICogY21kcDsKKworICAgIHJlYWQgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJjb21tYW5kcyIsIE5VTEwsIE5VTEwsIGtleW5hbWVzLCBNU0dTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOworICAgIGlmIChyZWFkID09IE1TR1NJWkUgLSAxKSB7CisgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJXM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yIG5hbWVzXG4iLCBjb25maWdfcGF0aCk7CisgICAgfQorICAgIGtleSA9IGtleW5hbWVzOworICAgIHdoaWxlICgqa2V5KSB7CisgICAgICAgIHJlYWQgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJjb21tYW5kcyIsIGtleSwgTlVMTCwgdmFsdWUsIE1TR1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCk7CisgICAgICAgIGlmIChyZWFkID09IE1TR1NJWkUgLSAxKSB7CisgICAgICAgICAgICBkZWJ1ZyhMInJlYWRfY29tbWFuZHM6ICVzOiBub3QgZW5vdWdoIHNwYWNlIGZvciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoLCBrZXkpOworICAgICAgICB9CisgICAgICAgIGNtZHAgPSBza2lwX3doaXRlc3BhY2UodmFsdWUpOworICAgICAgICBpZiAoKmNtZHApIHsKKyAgICAgICAgICAgIGNwID0gZmluZF9jb21tYW5kKGtleSk7CisgICAgICAgICAgICBpZiAoY3AgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBhZGRfY29tbWFuZChrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1cGRhdGVfY29tbWFuZChjcCwga2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAga2V5ICs9IHdjc2xlbihrZXkpICsgMTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRfY29tbWFuZHMoKQoreworICAgIGlmIChsYXVuY2hlcl9pbmlfcGF0aFswXSkKKyAgICAgICAgcmVhZF9jb25maWdfZmlsZShsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgaWYgKGFwcGRhdGFfaW5pX3BhdGhbMF0pCisgICAgICAgIHJlYWRfY29uZmlnX2ZpbGUoYXBwZGF0YV9pbmlfcGF0aCk7Cit9CisKK3N0YXRpYyBCT09MCitwYXJzZV9zaGViYW5nKHdjaGFyX3QgKiBzaGViYW5nX2xpbmUsIGludCBuY2hhcnMsIHdjaGFyX3QgKiogY29tbWFuZCwKKyAgICAgICAgICAgICAgd2NoYXJfdCAqKiBzdWZmaXgpCit7CisgICAgQk9PTCByYyA9IEZBTFNFOworICAgIHdjaGFyX3QgKiogdnBwOworICAgIHNpemVfdCBwbGVuOworICAgIHdjaGFyX3QgKiBwOworICAgIHdjaGFyX3QgemFwcGVkOworICAgIHdjaGFyX3QgKiBlbmRwID0gc2hlYmFuZ19saW5lICsgbmNoYXJzIC0gMTsKKyAgICBDT01NQU5EICogY3A7CisgICAgd2NoYXJfdCAqIHNraXBwZWQ7CisKKyAgICAqY29tbWFuZCA9IE5VTEw7ICAgIC8qIGZhaWx1cmUgcmV0dXJuICovCisgICAgKnN1ZmZpeCA9IE5VTEw7CisKKyAgICBpZiAoKCpzaGViYW5nX2xpbmUrKyA9PSBMJyMnKSAmJiAoKnNoZWJhbmdfbGluZSsrID09IEwnIScpKSB7CisgICAgICAgIHNoZWJhbmdfbGluZSA9IHNraXBfd2hpdGVzcGFjZShzaGViYW5nX2xpbmUpOworICAgICAgICBpZiAoKnNoZWJhbmdfbGluZSkgeworICAgICAgICAgICAgKmNvbW1hbmQgPSBzaGViYW5nX2xpbmU7CisgICAgICAgICAgICBmb3IgKHZwcCA9IGJ1aWx0aW5fdmlydHVhbF9wYXRoczsgKnZwcDsgKyt2cHApIHsKKyAgICAgICAgICAgICAgICBwbGVuID0gd2NzbGVuKCp2cHApOworICAgICAgICAgICAgICAgIGlmICh3Y3NuY21wKHNoZWJhbmdfbGluZSwgKnZwcCwgcGxlbikgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByYyA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlIGNhbiBkbyB0aGlzIGJlY2F1c2UgYWxsIGJ1aWx0aW4gY29tbWFuZHMgY29udGFpbgorICAgICAgICAgICAgICAgICAgICAgKiAicHl0aG9uIi4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICpjb21tYW5kID0gd2Nzc3RyKHNoZWJhbmdfbGluZSwgTCJweXRob24iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCp2cHAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogTm90IGZvdW5kIGluIGJ1aWx0aW5zIC0gbG9vayBpbiBjdXN0b21pc2VkIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogV2UgY2FuJ3QgcGVybWFuZW50bHkgbW9kaWZ5IHRoZSBzaGViYW5nIGxpbmUgaW4gY2FzZQorICAgICAgICAgICAgICAgICAqIGl0J3Mgbm90IGEgY3VzdG9taXNlZCBjb21tYW5kLCBidXQgd2UgY2FuIHRlbXBvcmFyaWx5CisgICAgICAgICAgICAgICAgICogc3RpY2sgYSBOVUwgYWZ0ZXIgdGhlIGNvbW1hbmQgd2hpbGUgc2VhcmNoaW5nIGZvciBpdCwKKyAgICAgICAgICAgICAgICAgKiB0aGVuIHB1dCBiYWNrIHRoZSBjaGFyIHdlIHphcHBlZC4KKyAgICAgICAgICAgICAgICAgKi8KKyNpZiBkZWZpbmVkKFNLSVBfUFJFRklYKQorICAgICAgICAgICAgICAgIHNraXBwZWQgPSBza2lwX3ByZWZpeChzaGViYW5nX2xpbmUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBza2lwcGVkID0gc2hlYmFuZ19saW5lOworI2VuZGlmCisgICAgICAgICAgICAgICAgcCA9IHdjc3Bicmsoc2tpcHBlZCwgTCIgXHRcclxuIik7CisgICAgICAgICAgICAgICAgaWYgKHAgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICB6YXBwZWQgPSAqcDsKKyAgICAgICAgICAgICAgICAgICAgKnAgPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3AgPSBmaW5kX2NvbW1hbmQoc2tpcHBlZCk7CisgICAgICAgICAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgKnAgPSB6YXBwZWQ7CisgICAgICAgICAgICAgICAgaWYgKGNwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKmNvbW1hbmQgPSBjcC0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAqc3VmZml4ID0gc2tpcF93aGl0ZXNwYWNlKHApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlICovCisgICAgICAgICAgICB3aGlsZSAoKGVuZHAgPiBzaGViYW5nX2xpbmUpICYmIGlzc3BhY2UoKmVuZHApKQorICAgICAgICAgICAgICAgIC0tZW5kcDsKKyAgICAgICAgICAgIGlmIChlbmRwID4gc2hlYmFuZ19saW5lKQorICAgICAgICAgICAgICAgIGVuZHBbMV0gPSBMJ1wwJzsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmM7Cit9CisKKy8qICNkZWZpbmUgQ1BfVVRGOCAgICAgICAgICAgICA2NTAwMSBkZWZpbmVkIGluIHdpbm5scy5oICovCisjZGVmaW5lIENQX1VURjE2TEUgICAgICAgICAgMTIwMAorI2RlZmluZSBDUF9VVEYxNkJFICAgICAgICAgIDEyMDEKKyNkZWZpbmUgQ1BfVVRGMzJMRSAgICAgICAgICAxMjAwMAorI2RlZmluZSBDUF9VVEYzMkJFICAgICAgICAgIDEyMDAxCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQgbGVuZ3RoOworICAgIGNoYXIgc2VxdWVuY2VbNF07CisgICAgVUlOVCBjb2RlX3BhZ2U7Cit9IEJPTTsKKworLyoKKyAqIFN0cmljdGx5LCB3ZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBVVEYtMTYgYW5mIFVURi0zMiwgc2luY2UgUHl0aG9uIGl0c2VsZgorICogZG9lc24ndC4gTmV2ZXIgbWluZCwgb25lIGRheSBpdCBtaWdodCAtIHRoZXJlJ3Mgbm8gaGFybSBsZWF2aW5nIGl0IGluLgorICovCitzdGF0aWMgQk9NIEJPTXNbXSA9IHsKKyAgICB7IDMsIHsgMHhFRiwgMHhCQiwgMHhCRiB9LCBDUF9VVEY4IH0sICAgICAgICAgICAvKiBVVEYtOCAtIGtlZXAgZmlyc3QgKi8KKyAgICB7IDIsIHsgMHhGRiwgMHhGRSB9LCBDUF9VVEYxNkxFIH0sICAgICAgICAgICAgICAvKiBVVEYtMTZMRSAqLworICAgIHsgMiwgeyAweEZFLCAweEZGIH0sIENQX1VURjE2QkUgfSwgICAgICAgICAgICAgIC8qIFVURi0xNkJFICovCisgICAgeyA0LCB7IDB4RkYsIDB4RkUsIDB4MDAsIDB4MDAgfSwgQ1BfVVRGMzJMRSB9LCAgLyogVVRGLTMyTEUgKi8KKyAgICB7IDQsIHsgMHgwMCwgMHgwMCwgMHhGRSwgMHhGRiB9LCBDUF9VVEYzMkJFIH0sICAvKiBVVEYtMzJCRSAqLworICAgIHsgMCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgQk9NICoKK2ZpbmRfQk9NKGNoYXIgKiBidWZmZXIpCit7CisvKgorICogTG9vayBmb3IgYSBCT00gaW4gdGhlIGlucHV0IGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZQorICogY29ycmVzcG9uZGluZyBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgbm90IGZvdW5kLgorICovCisgICAgQk9NICogcmVzdWx0ID0gTlVMTDsKKyAgICBCT00gKmJvbTsKKworICAgIGZvciAoYm9tID0gQk9NczsgYm9tLT5sZW5ndGg7IGJvbSsrKSB7CisgICAgICAgIGlmIChzdHJuY21wKGJvbS0+c2VxdWVuY2UsIGJ1ZmZlciwgYm9tLT5sZW5ndGgpID09IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGJvbTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBjaGFyICoKK2ZpbmRfdGVybWluYXRvcihjaGFyICogYnVmZmVyLCBpbnQgbGVuLCBCT00gKmJvbSkKK3sKKyAgICBjaGFyICogcmVzdWx0ID0gTlVMTDsKKyAgICBjaGFyICogZW5kID0gYnVmZmVyICsgbGVuOworICAgIGNoYXIgICogcDsKKyAgICBjaGFyIGM7CisgICAgaW50IGNwOworCisgICAgZm9yIChwID0gYnVmZmVyOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgYyA9ICpwOworICAgICAgICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICByZXN1bHQgPSBwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgcmVzdWx0ID0gcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBjcCA9IGJvbS0+Y29kZV9wYWdlOworCisgICAgICAgIC8qIGFkanVzdG1lbnRzIHRvIGluY2x1ZGUgYWxsIGJ5dGVzIG9mIHRoZSBjaGFyICovCisgICAgICAgIC8qIG5vIGFkanVzdG1lbnQgbmVlZGVkIGZvciBVVEYtOCBvciBiaWcgZW5kaWFuICovCisgICAgICAgIGlmIChjcCA9PSBDUF9VVEYxNkxFKQorICAgICAgICAgICAgKytyZXN1bHQ7CisgICAgICAgIGVsc2UgaWYgKGNwID09IENQX1VURjMyTEUpCisgICAgICAgICAgICByZXN1bHQgKz0gMzsKKyAgICAgICAgKytyZXN1bHQ7IC8qIHBvaW50IGp1c3QgcGFzdCB0ZXJtaW5hdG9yICovCisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBCT09MCit2YWxpZGF0ZV92ZXJzaW9uKHdjaGFyX3QgKiBwKQoreworICAgIEJPT0wgcmVzdWx0ID0gVFJVRTsKKworICAgIGlmICghaXNkaWdpdCgqcCkpICAgICAgICAgICAgICAgLyogZXhwZWN0IG1ham9yIHZlcnNpb24gKi8KKyAgICAgICAgcmVzdWx0ID0gRkFMU0U7CisgICAgZWxzZSBpZiAoKisrcCkgeyAgICAgICAgICAgICAgICAvKiBtb3JlIHRvIGRvICovCisgICAgICAgIGlmICgqcCAhPSBMJy4nKSAgICAgICAgICAgICAvKiBtYWpvci9taW5vciBzZXBhcmF0b3IgKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IEZBTFNFOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGlmICghaXNkaWdpdCgqcCkpICAgICAgIC8qIGV4cGVjdCBtaW5vciB2ZXJzaW9uICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gRkFMU0U7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgaWYgKCpwKSB7ICAgICAgICAgICAvKiBtb3JlIHRvIGRvICovCisgICAgICAgICAgICAgICAgICAgIGlmICgqcCAhPSBMJy0nKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgqcCAhPSAnMycpICYmICgqKytwICE9ICcyJykgJiYgISorK3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIHNob3J0IG1pbjsKKyAgICB1bnNpZ25lZCBzaG9ydCBtYXg7CisgICAgd2NoYXJfdCB2ZXJzaW9uW01BWF9WRVJTSU9OX1NJWkVdOworfSBQWUNfTUFHSUM7CisKK3N0YXRpYyBQWUNfTUFHSUMgbWFnaWNfdmFsdWVzW10gPSB7CisgICAgeyAweGM2ODcsIDB4YzY4NywgTCIyLjAiIH0sCisgICAgeyAweGViMmEsIDB4ZWIyYSwgTCIyLjEiIH0sCisgICAgeyAweGVkMmQsIDB4ZWQyZCwgTCIyLjIiIH0sCisgICAgeyAweGYyM2IsIDB4ZjI0NSwgTCIyLjMiIH0sCisgICAgeyAweGYyNTksIDB4ZjI2ZCwgTCIyLjQiIH0sCisgICAgeyAweGYyNzcsIDB4ZjJiMywgTCIyLjUiIH0sCisgICAgeyAweGYyYzcsIDB4ZjJkMSwgTCIyLjYiIH0sCisgICAgeyAweGYyZGIsIDB4ZjMwMywgTCIyLjciIH0sCisgICAgeyAweDBiYjgsIDB4MGMzYiwgTCIzLjAiIH0sCisgICAgeyAweDBjNDUsIDB4MGM0ZiwgTCIzLjEiIH0sCisgICAgeyAweDBjNTgsIDB4MGM2YywgTCIzLjIiIH0sCisgICAgeyAweDBjNzYsIDB4MGM3NiwgTCIzLjMiIH0sCisgICAgeyAwIH0KK307CisKK3N0YXRpYyBJTlNUQUxMRURfUFlUSE9OICoKK2ZpbmRfYnlfbWFnaWModW5zaWduZWQgc2hvcnQgbWFnaWMpCit7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgUFlDX01BR0lDICogbXA7CisKKyAgICBmb3IgKG1wID0gbWFnaWNfdmFsdWVzOyBtcC0+bWluOyBtcCsrKSB7CisgICAgICAgIGlmICgobWFnaWMgPj0gbXAtPm1pbikgJiYgKG1hZ2ljIDw9IG1wLT5tYXgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBsb2NhdGVfcHl0aG9uKG1wLT52ZXJzaW9uKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbWF5YmVfaGFuZGxlX3NoZWJhbmcod2NoYXJfdCAqKiBhcmd2LCB3Y2hhcl90ICogY21kbGluZSkKK3sKKy8qCisgKiBMb29rIGZvciBhIHNoZWJhbmcgbGluZSBpbiB0aGUgZmlyc3QgYXJndW1lbnQuICBJZiBmb3VuZAorICogYW5kIHdlIHNwYXduIGEgY2hpbGQgcHJvY2VzcywgdGhpcyBuZXZlciByZXR1cm5zLiAgSWYgaXQKKyAqIGRvZXMgcmV0dXJuIHRoZW4gd2UgcHJvY2VzcyB0aGUgYXJncyAibm9ybWFsbHkiLgorICoKKyAqIGFyZ3ZbMF0gbWlnaHQgYmUgYSBmaWxlbmFtZSB3aXRoIGEgc2hlYmFuZy4KKyAqLworICAgIEZJTEUgKiBmcDsKKyAgICBlcnJub190IHJjID0gX3dmb3Blbl9zKCZmcCwgKmFyZ3YsIEwicmIiKTsKKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKKyAgICB3Y2hhcl90IHNoZWJhbmdfbGluZVtCVUZTSVpFICsgMV07CisgICAgc2l6ZV90IHJlYWQ7CisgICAgY2hhciAqcDsKKyAgICBjaGFyICogc3RhcnQ7CisgICAgY2hhciAqIHNoZWJhbmdfYWxpYXMgPSAoY2hhciAqKSBzaGViYW5nX2xpbmU7CisgICAgQk9NKiBib207CisgICAgaW50IGksIGosIG5jaGFycyA9IDA7CisgICAgaW50IGhlYWRlcl9sZW47CisgICAgQk9PTCBpc192aXJ0OworICAgIHdjaGFyX3QgKiBjb21tYW5kOworICAgIHdjaGFyX3QgKiBzdWZmaXg7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwOworCisgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgcmVhZCA9IGZyZWFkKGJ1ZmZlciwgc2l6ZW9mKGNoYXIpLCBCVUZTSVpFLCBmcCk7CisgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IHJlYWQgJWQgYnl0ZXNcbiIsIHJlYWQpOworICAgICAgICBmY2xvc2UoZnApOworCisgICAgICAgIGlmICgocmVhZCA+PSA0KSAmJiAoYnVmZmVyWzNdID09ICdcbicpICYmIChidWZmZXJbMl0gPT0gJ1xyJykpIHsKKyAgICAgICAgICAgIGlwID0gZmluZF9ieV9tYWdpYygoYnVmZmVyWzFdIDw8IDggfCBidWZmZXJbMF0pICYgMHhGRkZGKTsKKyAgICAgICAgICAgIGlmIChpcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICBpcC0+dmVyc2lvbik7CisgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBOVUxMLCBjbWRsaW5lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBMb29rIGZvciBCT00gKi8KKyAgICAgICAgYm9tID0gZmluZF9CT00oYnVmZmVyKTsKKyAgICAgICAgaWYgKGJvbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBzdGFydCA9IGJ1ZmZlcjsKKyAgICAgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IEJPTSBub3QgZm91bmQsIHVzaW5nIFVURi04XG4iKTsKKyAgICAgICAgICAgIGJvbSA9IEJPTXM7IC8qIHBvaW50cyB0byBVVEYtOCBlbnRyeSAtIHRoZSBkZWZhdWx0ICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIm1heWJlX2hhbmRsZV9zaGViYW5nOiBCT00gZm91bmQsIGNvZGUgcGFnZSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgIGJvbS0+Y29kZV9wYWdlKTsKKyAgICAgICAgICAgIHN0YXJ0ID0gJmJ1ZmZlcltib20tPmxlbmd0aF07CisgICAgICAgIH0KKyAgICAgICAgcCA9IGZpbmRfdGVybWluYXRvcihzdGFydCwgQlVGU0laRSwgYm9tKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgbm8gQ1Igb3IgTEYgd2FzIGZvdW5kIGluIHRoZSBoZWFkaW5nLAorICAgICAgICAgKiB3ZSBhc3N1bWUgaXQncyBub3QgYSBzaGViYW5nIGZpbGUuCisgICAgICAgICAqLworICAgICAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkZWJ1ZyhMIm1heWJlX2hhbmRsZV9zaGViYW5nOiBObyBsaW5lIHRlcm1pbmF0b3IgZm91bmRcbiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEZvdW5kIGxpbmUgdGVybWluYXRvciAtIHBhcnNlIHRoZSBzaGViYW5nLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFN0cmljdGx5LCB3ZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBVVEYtMTYgYW5mIFVURi0zMiwKKyAgICAgICAgICAgICAqIHNpbmNlIFB5dGhvbiBpdHNlbGYgZG9lc24ndC4KKyAgICAgICAgICAgICAqIE5ldmVyIG1pbmQsIG9uZSBkYXkgaXQgbWlnaHQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGhlYWRlcl9sZW4gPSAoaW50KSAocCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHN3aXRjaChib20tPmNvZGVfcGFnZSkgeworICAgICAgICAgICAgY2FzZSBDUF9VVEY4OgorICAgICAgICAgICAgICAgIG5jaGFycyA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoYm9tLT5jb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGhlYWRlcl9sZW4sIHNoZWJhbmdfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVRlNJWkUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDUF9VVEYxNkJFOgorICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfbGVuICUgMiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IFVURi0xNkJFLCBidXQgYW4gb2RkIG51bWJlciBcCitvZiBieXRlczogJWRcbiIsIGhlYWRlcl9sZW4pOworICAgICAgICAgICAgICAgICAgICAvKiBuY2hhcnMgPSAwOyBOb3QgbmVlZGVkIC0gaW5pdGlhbGlzZWQgdG8gMC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGhlYWRlcl9sZW47IGkgPiAwOyBpIC09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaSAtIDFdID0gc3RhcnRbaSAtIDJdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tpIC0gMl0gPSBzdGFydFtpIC0gMV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmNoYXJzID0gaGVhZGVyX2xlbiAvIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENQX1VURjE2TEU6CisgICAgICAgICAgICAgICAgaWYgKChoZWFkZXJfbGVuICUgMikgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlVURi0xNkxFLCBidXQgYW4gb2RkIG51bWJlciBvZiBieXRlczogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9sZW4pOworICAgICAgICAgICAgICAgICAgICAvKiBuY2hhcnMgPSAwOyBOb3QgbmVlZGVkIC0gaW5pdGlhbGlzZWQgdG8gMC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIG5vIGFjdHVhbCBjb252ZXJzaW9uIG5lZWRlZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHNoZWJhbmdfbGluZSwgc3RhcnQsIGhlYWRlcl9sZW4pOworICAgICAgICAgICAgICAgICAgICBuY2hhcnMgPSBoZWFkZXJfbGVuIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGMzJCRToKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX2xlbiAlIDQgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlVURi0zMkJFLCBidXQgbm90IGRpdmlzaWJsZSBieSA0OiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gaGVhZGVyX2xlbiwgaiA9IGhlYWRlcl9sZW4gLyAyOyBpID4gMDsgaSAtPSA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqIC09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaiAtIDFdID0gc3RhcnRbaSAtIDJdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tqIC0gMl0gPSBzdGFydFtpIC0gMV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmNoYXJzID0gaGVhZGVyX2xlbiAvIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENQX1VURjMyTEU6CisgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9sZW4gJSA0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJVVEYtMzJMRSwgYnV0IG5vdCBkaXZpc2libGUgYnkgNDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9sZW4pOworICAgICAgICAgICAgICAgICAgICAvKiBuY2hhcnMgPSAwOyBOb3QgbmVlZGVkIC0gaW5pdGlhbGlzZWQgdG8gMC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IGhlYWRlcl9sZW4sIGogPSBoZWFkZXJfbGVuIC8gMjsgaSA+IDA7IGkgLT0gNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiAtPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2ogLSAxXSA9IHN0YXJ0W2kgLSAzXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaiAtIDJdID0gc3RhcnRbaSAtIDRdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5jaGFycyA9IGhlYWRlcl9sZW4gLyBzaXplb2Yod2NoYXJfdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5jaGFycyA+IDApIHsKKyAgICAgICAgICAgICAgICBzaGViYW5nX2xpbmVbLS1uY2hhcnNdID0gTCdcMCc7CisgICAgICAgICAgICAgICAgaXNfdmlydCA9IHBhcnNlX3NoZWJhbmcoc2hlYmFuZ19saW5lLCBuY2hhcnMsICZjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWZmaXgpOworICAgICAgICAgICAgICAgIGlmIChjb21tYW5kICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJwYXJzZV9zaGViYW5nOiBmb3VuZCBjb21tYW5kOiAlc1xuIiwgY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNfdmlydCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGNvbW1hbmQsIHN1ZmZpeCwgY21kbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSB3Y3NjaHIoY29tbWFuZCwgTCcgJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VmZml4ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3VmZml4KysgPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBza2lwX3doaXRlc3BhY2Uoc3VmZml4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3Y3NuY21wKGNvbW1hbmQsIEwicHl0aG9uIiwgNikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfQkFEX1ZJUlRVQUxfUEFUSCwgTCJVbmtub3duIHZpcnR1YWwgXAorcGF0aCAnJXMnIiwgY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kICs9IDY7ICAgLyogc2tpcCBwYXN0ICJweXRob24iICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmNvbW1hbmQgJiYgIXZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfQkFEX1ZJUlRVQUxfUEFUSCwgTCJJbnZhbGlkIHZlcnNpb24gXAorc3BlY2lmaWNhdGlvbjogJyVzJy5cbkluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzY3JpcHQsICdweXRob24nIG5lZWRzIHRvIGJlIFwKK2ZvbGxvd2VkIGJ5IGEgdmFsaWQgdmVyc2lvbiBzcGVjaWZpZXIuXG5QbGVhc2UgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE8gY291bGQgY2FsbCB2YWxpZGF0ZV92ZXJzaW9uKGNvbW1hbmQpICovCisgICAgICAgICAgICAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gXAorKCVzKSBpcyBub3QgaW5zdGFsbGVkIiwgY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoaXAtPmV4ZWN1dGFibGUsIHN1ZmZpeCwgY21kbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB3Y2hhcl90ICoKK3NraXBfbWUod2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgQk9PTCBxdW90ZWQ7CisgICAgd2NoYXJfdCBjOworICAgIHdjaGFyX3QgKiByZXN1bHQgPSBjbWRsaW5lOworCisgICAgcXVvdGVkID0gY21kbGluZVswXSA9PSBMJ1wiJzsKKyAgICBpZiAoIXF1b3RlZCkKKyAgICAgICAgYyA9IEwnICc7CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBMJ1wiJzsKKyAgICAgICAgKytyZXN1bHQ7CisgICAgfQorICAgIHJlc3VsdCA9IHdjc2NocihyZXN1bHQsIGMpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgLyogd2hlbiwgZm9yIGV4YW1wbGUsIGp1c3QgZXhlIG5hbWUgb24gY29tbWFuZCBsaW5lICovCisgICAgICAgIHJlc3VsdCA9IEwiIjsKKyAgICBlbHNlIHsKKyAgICAgICAgKytyZXN1bHQ7IC8qIHNraXAgcGFzdCBzcGFjZSBvciBjbG9zaW5nIHF1b3RlICovCisgICAgICAgIHJlc3VsdCA9IHNraXBfd2hpdGVzcGFjZShyZXN1bHQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgRFdPUkQgdmVyc2lvbl9oaWdoID0gMDsKK3N0YXRpYyBEV09SRCB2ZXJzaW9uX2xvdyA9IDA7CisKK3N0YXRpYyB2b2lkCitnZXRfdmVyc2lvbl9pbmZvKHdjaGFyX3QgKiB2ZXJzaW9uX3RleHQsIHNpemVfdCBzaXplKQoreworICAgIFdPUkQgbWFqLCBtaW4sIHJlbCwgYmxkOworCisgICAgaWYgKCF2ZXJzaW9uX2hpZ2ggJiYgIXZlcnNpb25fbG93KQorICAgICAgICB3Y3NuY3B5X3ModmVyc2lvbl90ZXh0LCBzaXplLCBMIjAuMSIsIF9UUlVOQ0FURSk7ICAgLyogZmFsbGJhY2sgKi8KKyAgICBlbHNlIHsKKyAgICAgICAgbWFqID0gSElXT1JEKHZlcnNpb25faGlnaCk7CisgICAgICAgIG1pbiA9IExPV09SRCh2ZXJzaW9uX2hpZ2gpOworICAgICAgICByZWwgPSBISVdPUkQodmVyc2lvbl9sb3cpOworICAgICAgICBibGQgPSBMT1dPUkQodmVyc2lvbl9sb3cpOworICAgICAgICBfc253cHJpbnRmX3ModmVyc2lvbl90ZXh0LCBzaXplLCBfVFJVTkNBVEUsIEwiJWQuJWQuJWQuJWQiLCBtYWosCisgICAgICAgICAgICAgICAgICAgICBtaW4sIHJlbCwgYmxkKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3Byb2Nlc3MoaW50IGFyZ2MsIHdjaGFyX3QgKiogYXJndikKK3sKKyAgICB3Y2hhcl90ICogd3A7CisgICAgd2NoYXJfdCAqIGNvbW1hbmQ7CisgICAgd2NoYXJfdCAqIHA7CisgICAgaW50IHJjID0gMDsKKyAgICBzaXplX3QgcGxlbjsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXA7CisgICAgQk9PTCB2YWxpZDsKKyAgICBEV09SRCBzaXplLCBhdHRyczsKKyAgICBIUkVTVUxUIGhyOworICAgIHdjaGFyX3QgbWVzc2FnZVtNU0dTSVpFXTsKKyAgICB3Y2hhcl90IHZlcnNpb25fdGV4dCBbTUFYX1BBVEhdOworICAgIHZvaWQgKiB2ZXJzaW9uX2RhdGE7CisgICAgVlNfRklYRURGSUxFSU5GTyAqIGZpbGVfaW5mbzsKKyAgICBVSU5UIGJsb2NrX3NpemU7CisKKyAgICB3cCA9IGdldF9lbnYoTCJQWUxBVU5DSF9ERUJVRyIpOworICAgIGlmICgod3AgIT0gTlVMTCkgJiYgKCp3cCAhPSBMJ1wwJykpCisgICAgICAgIGxvZ19mcCA9IHN0ZGVycjsKKworI2lmIGRlZmluZWQoX01fWDY0KQorICAgIGRlYnVnKEwibGF1bmNoZXIgYnVpbGQ6IDY0Yml0XG4iKTsKKyNlbHNlCisgICAgZGVidWcoTCJsYXVuY2hlciBidWlsZDogMzJiaXRcbiIpOworI2VuZGlmCisjaWYgZGVmaW5lZChfV0lORE9XUykKKyAgICBkZWJ1ZyhMImxhdW5jaGVyIGV4ZWN1dGFibGU6IFdpbmRvd3NcbiIpOworI2Vsc2UKKyAgICBkZWJ1ZyhMImxhdW5jaGVyIGV4ZWN1dGFibGU6IENvbnNvbGVcbiIpOworI2VuZGlmCisgICAgLyogR2V0IHRoZSBsb2NhbCBhcHBkYXRhIGZvbGRlciAobm9uLXJvYW1pbmcpICovCisgICAgaHIgPSBTSEdldEZvbGRlclBhdGhXKE5VTEwsIENTSURMX0xPQ0FMX0FQUERBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgIGlmIChociAhPSBTX09LKSB7CisgICAgICAgIGRlYnVnKEwiU0hHZXRGb2xkZXJQYXRoIGZhaWxlZDogJVhcbiIsIGhyKTsKKyAgICAgICAgYXBwZGF0YV9pbmlfcGF0aFswXSA9IEwnXDAnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGxlbiA9IHdjc2xlbihhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgcCA9ICZhcHBkYXRhX2luaV9wYXRoW3BsZW5dOworICAgICAgICB3Y3NuY3B5X3MocCwgTUFYX1BBVEggLSBwbGVuLCBMIlxccHkuaW5pIiwgX1RSVU5DQVRFKTsKKyAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1coYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgeworICAgICAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGFwcGRhdGFfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlICclcydcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICB9CisgICAgfQorICAgIHBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZVcoTlVMTCwgbGF1bmNoZXJfaW5pX3BhdGgsIE1BWF9QQVRIKTsKKyAgICBzaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcobGF1bmNoZXJfaW5pX3BhdGgsICZzaXplKTsKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgZGVidWcoTCJHZXRGaWxlVmVyc2lvbkluZm9TaXplIGZhaWxlZDogJXNcbiIsIG1lc3NhZ2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmVyc2lvbl9kYXRhID0gbWFsbG9jKHNpemUpOworICAgICAgICBpZiAodmVyc2lvbl9kYXRhKSB7CisgICAgICAgICAgICB2YWxpZCA9IEdldEZpbGVWZXJzaW9uSW5mb1cobGF1bmNoZXJfaW5pX3BhdGgsIDAsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9kYXRhKTsKKyAgICAgICAgICAgIGlmICghdmFsaWQpCisgICAgICAgICAgICAgICAgZGVidWcoTCJHZXRGaWxlVmVyc2lvbkluZm8gZmFpbGVkOiAlWFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFsaWQgPSBWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uX2RhdGEsIEwiXFwiLCAmZmlsZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NrX3NpemUpOworICAgICAgICAgICAgICAgIGlmICghdmFsaWQpCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiVmVyUXVlcnlWYWx1ZSBmYWlsZWQ6ICVYXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb25faGlnaCA9IGZpbGVfaW5mby0+ZHdGaWxlVmVyc2lvbk1TOworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX2xvdyA9IGZpbGVfaW5mby0+ZHdGaWxlVmVyc2lvbkxTOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyZWUodmVyc2lvbl9kYXRhKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwID0gd2NzcmNocihsYXVuY2hlcl9pbmlfcGF0aCwgTCdcXCcpOworICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgZGVidWcoTCJHZXRNb2R1bGVGaWxlTmFtZVcgcmV0dXJuZWQgdmFsdWUgaGFzIG5vIGJhY2tzbGFzaDogJXNcbiIsCisgICAgICAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdjc25jcHlfcyhwLCBNQVhfUEFUSCAtIChwIC0gbGF1bmNoZXJfaW5pX3BhdGgpLCBMIlxccHkuaW5pIiwKKyAgICAgICAgICAgICAgICAgIF9UUlVOQ0FURSk7CisgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVzJyBub24tZXhpc3RlbnRcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoWzBdID0gTCdcMCc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIlVzaW5nIGdsb2JhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVzJ1xuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICB9CisgICAgfQorCisgICAgY29tbWFuZCA9IHNraXBfbWUoR2V0Q29tbWFuZExpbmVXKCkpOworICAgIGRlYnVnKEwiQ2FsbGVkIHdpdGggY29tbWFuZCBsaW5lOiAlcyIsIGNvbW1hbmQpOworICAgIGlmIChhcmdjIDw9IDEpIHsKKyAgICAgICAgdmFsaWQgPSBGQUxTRTsKKyAgICAgICAgcCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwID0gYXJndlsxXTsKKyAgICAgICAgcGxlbiA9IHdjc2xlbihwKTsKKyAgICAgICAgaWYgKHBbMF0gIT0gTCctJykgeworICAgICAgICAgICAgcmVhZF9jb21tYW5kcygpOworICAgICAgICAgICAgbWF5YmVfaGFuZGxlX3NoZWJhbmcoJmFyZ3ZbMV0sIGNvbW1hbmQpOworICAgICAgICB9CisgICAgICAgIC8qIE5vIGZpbGUgd2l0aCBzaGViYW5nLCBvciBhbiB1bnJlY29nbmlzZWQgc2hlYmFuZy4KKyAgICAgICAgICogSXMgdGhlIGZpcnN0IGFyZyBhIHNwZWNpYWwgdmVyc2lvbiBxdWFsaWZpZXI/CisgICAgICAgICAqLworICAgICAgICB2YWxpZCA9ICgqcCA9PSBMJy0nKSAmJiB2YWxpZGF0ZV92ZXJzaW9uKCZwWzFdKTsKKyAgICAgICAgaWYgKHZhbGlkKSB7CisgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oJnBbMV0pOworICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJXMpIG5vdCBcCitpbnN0YWxsZWQiLCAmcFsxXSk7CisgICAgICAgICAgICBjb21tYW5kICs9IHdjc2xlbihwKTsKKyAgICAgICAgICAgIGNvbW1hbmQgPSBza2lwX3doaXRlc3BhY2UoY29tbWFuZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCF2YWxpZCkgeworICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgaWYgKGlwID09IE5VTEwpCisgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiQ2FuJ3QgZmluZCBhIGRlZmF1bHQgUHl0aG9uLiIpOworICAgICAgICBpZiAoKGFyZ2MgPT0gMikgJiYgKCFfd2NzaWNtcChwLCBMIi1oIikgfHwgIV93Y3NpY21wKHAsIEwiLS1oZWxwIikpKSB7CisjaWYgZGVmaW5lZChfTV9YNjQpCisgICAgICAgICAgICBCT09MIGNhbkRvNjRiaXQgPSBUUlVFOworI2Vsc2UKKyAgICAvLyBJZiB3ZSBhcmUgYSAzMmJpdCBwcm9jZXNzIG9uIGEgNjRiaXQgV2luZG93cywgZmlyc3QgaGl0IHRoZSA2NGJpdCBrZXlzLgorICAgICAgICAgICAgQk9PTCBjYW5EbzY0Yml0ID0gRkFMU0U7CisgICAgICAgICAgICBJc1dvdzY0UHJvY2VzcyhHZXRDdXJyZW50UHJvY2VzcygpLCAmY2FuRG82NGJpdCk7CisjZW5kaWYKKworICAgICAgICAgICAgZ2V0X3ZlcnNpb25faW5mbyh2ZXJzaW9uX3RleHQsIE1BWF9QQVRIKTsKKyAgICAgICAgICAgIGZ3cHJpbnRmKHN0ZG91dCwgTCJcCitQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgVmVyc2lvbiAlc1xuXG4iLCB2ZXJzaW9uX3RleHQpOworICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKK3VzYWdlOiAlcyBbIGxhdW5jaGVyLWFyZ3VtZW50cyBdIHNjcmlwdCBbIHNjcmlwdC1hcmd1bWVudHMgXVxuXG4iLCBhcmd2WzBdKTsKKyAgICAgICAgICAgIGZwdXR3cyhMIlwKK0xhdW5jaGVyIGFyZ3VtZW50czpcblxuXAorLTIgICAgIDogTGF1bmNoIHRoZSBsYXRlc3QgUHl0aG9uIDIueCB2ZXJzaW9uXG5cCistMyAgICAgOiBMYXVuY2ggdGhlIGxhdGVzdCBQeXRob24gMy54IHZlcnNpb25cblwKKy1YLlkgICA6IExhdW5jaCB0aGUgc3BlY2lmaWVkIFB5dGhvbiB2ZXJzaW9uXG4iLCBzdGRvdXQpOworICAgICAgICAgICAgaWYgKGNhbkRvNjRiaXQpIHsKKyAgICAgICAgICAgICAgICBmcHV0d3MoTCJcCistWC5ZLTMyOiBMYXVuY2ggdGhlIHNwZWNpZmllZCAzMmJpdCBQeXRob24gdmVyc2lvbiIsIHN0ZG91dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcHV0d3MoTCJcblxuVGhlIGZvbGxvd2luZyBoZWxwIHRleHQgaXMgZnJvbSBQeXRob246XG5cbiIsIHN0ZG91dCk7CisgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbnZva2VfY2hpbGQoaXAtPmV4ZWN1dGFibGUsIE5VTEwsIGNvbW1hbmQpOworICAgIHJldHVybiByYzsKK30KKworI2lmIGRlZmluZWQoX1dJTkRPV1MpCisKK2ludCBXSU5BUEkgd1dpbk1haW4oSElOU1RBTkNFIGhJbnN0YW5jZSwgSElOU1RBTkNFIGhQcmV2SW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgTFBXU1RSIGxwc3RyQ21kLCBpbnQgblNob3cpCit7CisgICAgcmV0dXJuIHByb2Nlc3MoX19hcmdjLCBfX3dhcmd2KTsKK30KKworI2Vsc2UKKworaW50IGNkZWNsIHdtYWluKGludCBhcmdjLCB3Y2hhcl90ICoqIGFyZ3YpCit7CisgICAgcmV0dXJuIHByb2Nlc3MoYXJnYywgYXJndik7Cit9CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmljbyBiL1BDL2xhdW5jaGVyLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWQ3ZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvbGF1bmNoZXIuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL21zdmNydG1vZHVsZS5jIGIvUEMvbXN2Y3J0bW9kdWxlLmMKaW5kZXggMTY2ZGYwMy4uMDRkMjA4OCAxMDA3NTUKLS0tIGEvUEMvbXN2Y3J0bW9kdWxlLmMKKysrIGIvUEMvbXN2Y3J0bW9kdWxlLmMKQEAgLTI3LDYgKzI3LDggQEAKICNpZmRlZiBfTVNDX1ZFUgogI2lmIF9NU0NfVkVSID49IDE1MDAgJiYgX01TQ19WRVIgPCAxNjAwCiAjaW5jbHVkZSA8Y3J0YXNzZW0uaD4KKyNlbGlmIF9NU0NfVkVSID49IDE2MDAKKyNpbmNsdWRlIDxjcnR2ZXJzaW9uLmg+CiAjZW5kaWYKICNlbmRpZgogCkBAIC0yMTEsOCArMjEzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtc3ZjcnRfZ2V0d2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFIGNoOwotICAgIFB5X1VOSUNPREUgdVsxXTsKKyAgICB3Y2hhcl90IGNoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0d2NoIikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjIwLDggKzIyMSw3IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGNoID0gX2dldHdjaCgpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgdVswXSA9IGNoOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodSwgMSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CiB9CiAKIFB5RG9jX1NUUlZBUihnZXR3Y2hfZG9jLApAQCAtMjU2LDggKzI1Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X2dldHdjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgY2g7Ci0gICAgUHlfVU5JQ09ERSBzWzFdOworICAgIHdjaGFyX3QgY2g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXR3Y2hlIikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY1LDggKzI2NCw3IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGNoID0gX2dldHdjaGUoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHNbMF0gPSBjaDsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIDEpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwogfQogCiBQeURvY19TVFJWQVIoZ2V0d2NoZV9kb2MsCkBAIC00NjgsNyArNDY2LDcgQEAKIFB5SW5pdF9tc3ZjcnQodm9pZCkKIHsKICAgICBpbnQgc3Q7Ci0gICAgUHlPYmplY3QgKmQ7CisgICAgUHlPYmplY3QgKmQsICp2ZXJzaW9uOwogICAgIFB5T2JqZWN0ICptID0gUHlNb2R1bGVfQ3JlYXRlKCZtc3ZjcnRtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk4LDYgKzQ5Niw3IEBACiAjZW5kaWYKIAogICAgIC8qIGNvbnN0YW50cyBmb3IgdGhlIGNydCB2ZXJzaW9ucyAqLworICAgICh2b2lkKXN0OwogI2lmZGVmIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTgogICAgIHN0ID0gUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIlZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTik7CkBAIC01MTQsNSArNTEzLDE1IEBACiAgICAgaWYgKHN0IDwgMCkgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAorICAgIC8qIGNvbnN0YW50cyBmb3IgdGhlIDIwMTAgY3J0IHZlcnNpb25zICovCisjaWYgZGVmaW5lZChfVkNfQ1JUX01BSk9SX1ZFUlNJT04pICYmIGRlZmluZWQgKF9WQ19DUlRfTUlOT1JfVkVSU0lPTikgJiYgZGVmaW5lZChfVkNfQ1JUX0JVSUxEX1ZFUlNJT04pICYmIGRlZmluZWQoX1ZDX0NSVF9SQlVJTERfVkVSU0lPTikKKyAgICB2ZXJzaW9uID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkLiVkLiVkLiVkIiwgX1ZDX0NSVF9NQUpPUl9WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQ1JUX01JTk9SX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19DUlRfQlVJTERfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0NSVF9SQlVJTERfVkVSU0lPTik7CisgICAgc3QgPSBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNSVF9BU1NFTUJMWV9WRVJTSU9OIiwgdmVyc2lvbik7CisgICAgaWYgKHN0IDwgMCkgcmV0dXJuIE5VTEw7CisjZW5kaWYKKwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L01ha2VmaWxlIGIvUEMvb3MyZW14L01ha2VmaWxlCmluZGV4IGQ5Y2RlZDcuLjgwMDYxMGUgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9NYWtlZmlsZQorKysgYi9QQy9vczJlbXgvTWFrZWZpbGUKQEAgLTIzNyw3ICsyMzcsNyBAQAogCiAjIE91dHB1dCBmaWxlIG5hbWVzCiBQWVRIT05fVkVSPQkyLjYKLVBZVEhPTl9MSUI9CXB5dGhvbjI2CitQWVRIT05fTElCPQlweXRob24zMwogUFlUSE9OLkxJQj0JJChQWVRIT05fTElCKV9zJEEKIFBZVEhPTi5JTVBMSUI9CSQoUFlUSE9OX0xJQikkQQogaWZlcSAoJChFWEVPTUYpLHllcykKZGlmZiAtLWdpdCBhL1BDL29zMmVteC9SRUFETUUub3MyZW14IGIvUEMvb3MyZW14L1JFQURNRS5vczJlbXgKaW5kZXggZmNmNTVkMi4uNjFjZjZkZiAxMDA2NDQKLS0tIGEvUEMvb3MyZW14L1JFQURNRS5vczJlbXgKKysrIGIvUEMvb3MyZW14L1JFQURNRS5vczJlbXgKQEAgLTMwNSw3ICszMDUsNyBAQAogICAgdG8gYmUgaW5zdGFsbGVkIGluIGEgZGlyZWN0b3J5IG90aGVyIHRoYW4gdGhlIFBZVEhPTkhPTUUgZGlyZWN0b3J5LCBzZXQgCiAgICB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIEVYRV9ESVIgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeS4KIAotMy4gSWYgeW91IHdpc2ggdGhlIFB5dGhvbiBjb3JlIERMTCAocHl0aG9uMjYuZGxsKSB0byBiZSBpbnN0YWxsZWQgaW4gYSAKKzMuIElmIHlvdSB3aXNoIHRoZSBQeXRob24gY29yZSBETEwgKHB5dGhvbjMzLmRsbCkgdG8gYmUgaW5zdGFsbGVkIGluIGEgCiAgICBkaXJlY3Rvcnkgb3RoZXIgdGhhbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBQeXRob24gZXhlY3V0YWJsZXMgYXJlIAogICAgaW5zdGFsbGVkIChieSBkZWZhdWx0LCB0aGUgUFlUSE9OSE9NRSBkaXJlY3RvcnkpLCBzZXQgdGhlIHZhbHVlIG9mIHRoZSAKICAgIE1ha2VmaWxlIHZhcmlhYmxlIERMTF9ESVIgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeS4gIFRoaXMgRExMIG11c3QgCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvY29uZmlnLmMgYi9QQy9vczJlbXgvY29uZmlnLmMKaW5kZXggMjE4YWE2OC4uNTg3OTExMCAxMDA2NDQKLS0tIGEvUEMvb3MyZW14L2NvbmZpZy5jCisrKyBiL1BDL29zMmVteC9jb25maWcuYwpAQCAtMTUwLDEwICsxNTAsOSBAQAogICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwKIAogICAgIC8qIFRoaXMgbGl2ZXMgaXQgd2l0aCBpbXBvcnQuYyAqLwotICAgIHsiaW1wIiwgaW5pdGltcH0sCisgICAgeyJfaW1wIiwgaW5pdGltcH0sCiAKICAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgKi8KLSAgICB7Il9fbWFpbl9fIiwgTlVMTH0sCiAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgIHsic3lzIiwgTlVMTH0sCiAKZGlmZiAtLWdpdCBhL1BDL29zMmVteC9weWNvbmZpZy5oIGIvUEMvb3MyZW14L3B5Y29uZmlnLmgKaW5kZXggMzgwZTE5Yy4uZTU2MTA1YSAxMDA2NDQKLS0tIGEvUEMvb3MyZW14L3B5Y29uZmlnLmgKKysrIGIvUEMvb3MyZW14L3B5Y29uZmlnLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIFB5X0NPTkZJR19ICiAjZGVmaW5lIFB5X0NPTkZJR19ICiAKKyNlcnJvciAiUEVQIDExOiBPUy8yIGlzIG5vdyB1bnN1cHBvcnRlZCwgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNCIKKwogLyogY29uZmlnLmguCiAgKiBBdCBzb21lIHRpbWUgaW4gdGhlIHBhc3QsIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5L2Zyb20gY29uZmlndXJlLgogICogbm93IG1haW50YWluZWQgbWFudWFsbHkuCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvcHl0aG9uMjcuZGVmIGIvUEMvb3MyZW14L3B5dGhvbjMzLmRlZgpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBQQy9vczJlbXgvcHl0aG9uMjcuZGVmCnJlbmFtZSB0byBQQy9vczJlbXgvcHl0aG9uMzMuZGVmCmluZGV4IGQ4N2RkNzYuLjI1NjcyNmIgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9weXRob24yNy5kZWYKKysrIGIvUEMvb3MyZW14L3B5dGhvbjMzLmRlZgpAQCAtMSw3MiArMSw3MiBAQAotTElCUkFSWSBweXRob24yNiBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIAorTElCUkFSWSBweXRob24zMyBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIAogREVTQ1JJUFRJT04gIlB5dGhvbiAyLjYgQ29yZSBETEwiIAogUFJPVE1PREUgCiBEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCAKIEVYUE9SVFMgCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb25maWcpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29uZmlnKQogICAiX1B5SW1wb3J0X0luaXR0YWIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkbGZjbikKKzsgRnJvbSBweXRob24zM19zLmxpYihkbGZjbikKIDsgICJkbG9wZW4iCiA7ICAiZGxzeW0iCiA7ICAiZGxjbG9zZSIKIDsgICJkbGVycm9yIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0cGF0aHApCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0cGF0aHApCiAgICJQeV9HZXRQcm9ncmFtRnVsbFBhdGgiCiAgICJQeV9HZXRQcmVmaXgiCiAgICJQeV9HZXRFeGVjUHJlZml4IgogICAiUHlfR2V0UGF0aCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldGJ1aWxkaW5mbykKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRidWlsZGluZm8pCiAgICJQeV9HZXRCdWlsZEluZm8iCiAgICJfUHlfc3ZudmVyc2lvbiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1haW4pCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWFpbikKICAgIlB5X01haW4iCiAgICJQeV9HZXRBcmdjQXJndiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFjY2VsZXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYWNjZWxlcikKICAgIlB5R3JhbW1hcl9BZGRBY2NlbGVyYXRvcnMiCiAgICJQeUdyYW1tYXJfUmVtb3ZlQWNjZWxlcmF0b3JzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ3JhbW1hcjEpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ3JhbW1hcjEpCiAgICJQeUdyYW1tYXJfRmluZERGQSIKICAgIlB5R3JhbW1hcl9MYWJlbFJlcHIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihsaXN0bm9kZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihsaXN0bm9kZSkKICAgIlB5Tm9kZV9MaXN0VHJlZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG5vZGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobm9kZSkKICAgIlB5Tm9kZV9OZXciCiAgICJQeU5vZGVfQWRkQ2hpbGQiCiAgICJQeU5vZGVfRnJlZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHBhcnNlcikKKzsgRnJvbSBweXRob24zM19zLmxpYihwYXJzZXIpCiAgICJQeVBhcnNlcl9BZGRUb2tlbiIKICAgIlB5UGFyc2VyX05ldyIKICAgIlB5UGFyc2VyX0RlbGV0ZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHBhcnNldG9rKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHBhcnNldG9rKQogICAiUHlQYXJzZXJfUGFyc2VTdHJpbmciCiAgICJQeVBhcnNlcl9QYXJzZVN0cmluZ0ZsYWdzRmlsZW5hbWUiCiAgICJQeVBhcnNlcl9QYXJzZUZpbGUiCiAgICJQeVBhcnNlcl9QYXJzZUZpbGVGbGFncyIKICAgIlB5UGFyc2VyX1BhcnNlU3RyaW5nRmxhZ3MiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihiaXRzZXQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYml0c2V0KQogICAiX1B5X25ld2JpdHNldCIKICAgIl9QeV9kZWxiaXRzZXQiCiAgICJfUHlfYWRkYml0IgogICAiX1B5X3NhbWViaXRzZXQiCiAgICJfUHlfbWVyZ2ViaXRzZXQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtZXRhZ3JhbW1hcikKKzsgRnJvbSBweXRob24zM19zLmxpYihtZXRhZ3JhbW1hcikKICAgIl9QeV9tZXRhX2dyYW1tYXIiCiAgICJQeV9tZXRhX2dyYW1tYXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0b2tlbml6ZXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodG9rZW5pemVyKQogICAiUHlUb2tlbl9PbmVDaGFyIgogICAiUHlUb2tlbl9Ud29DaGFycyIKICAgIlB5VG9rZW5fVGhyZWVDaGFycyIKQEAgLTc2LDE0ICs3NiwxNCBAQAogICAiUHlUb2tlbml6ZXJfR2V0IgogICAiX1B5UGFyc2VyX1Rva2VuTmFtZXMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihteXJlYWRsaW5lKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG15cmVhZGxpbmUpCiAgICJfUHlPU19SZWFkbGluZVRTdGF0ZSIKICAgIlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIiCiAgICJQeU9TX1N0ZGlvUmVhZGxpbmUiCiAgICJQeU9TX1JlYWRsaW5lIgogICAiUHlPU19JbnB1dEhvb2siCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihhYnN0cmFjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihhYnN0cmFjdCkKICAgIl9QeU9iamVjdF9MZW5ndGhIaW50IgogICAiUHlNYXBwaW5nX1NpemUiCiAgICJQeU9iamVjdF9DYWxsTWV0aG9kIgpAQCAtMTc0LDEzICsxNzQsMTMgQEAKICAgIlB5T2JqZWN0X0lzSW5zdGFuY2UiCiAgICJQeU9iamVjdF9Jc1N1YmNsYXNzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYm9vbG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihib29sb2JqZWN0KQogICAiUHlCb29sX0Zyb21Mb25nIgogICAiUHlCb29sX1R5cGUiCiAgICJfUHlfWmVyb1N0cnVjdCIKICAgIl9QeV9UcnVlU3RydWN0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYnVmZmVyb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJ1ZmZlcm9iamVjdCkKICAgIlB5QnVmZmVyX0Zyb21PYmplY3QiCiAgICJQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlT2JqZWN0IgogICAiUHlCdWZmZXJfRnJvbU1lbW9yeSIKQEAgLTE4OCwxMyArMTg4LDEzIEBACiAgICJQeUJ1ZmZlcl9OZXciCiAgICJQeUJ1ZmZlcl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY2VsbG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjZWxsb2JqZWN0KQogICAiUHlDZWxsX05ldyIKICAgIlB5Q2VsbF9HZXQiCiAgICJQeUNlbGxfU2V0IgogICAiUHlDZWxsX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjbGFzc29iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjbGFzc29iamVjdCkKICAgIlB5Q2xhc3NfTmV3IgogICAiUHlDbGFzc19Jc1N1YmNsYXNzIgogICAiUHlJbnN0YW5jZV9OZXciCkBAIC0yMDksNyArMjA5LDcgQEAKICAgIlB5SW5zdGFuY2VfVHlwZSIKICAgIlB5TWV0aG9kX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjYXBzdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNhcHN1bGUpCiAgICJQeUNhcHN1bGVfR2V0Q29udGV4dCIKICAgIlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yIgogICAiUHlDYXBzdWxlX0dldE5hbWUiCkBAIC0yMjIsNyArMjIyLDcgQEAKICAgIlB5Q2Fwc3VsZV9TZXROYW1lIgogICAiUHlDYXBzdWxlX1NldFBvaW50ZXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvYmplY3QpCiAgICJQeUNPYmplY3RfRnJvbVZvaWRQdHIiCiAgICJQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjIgogICAiUHlDT2JqZWN0X0FzVm9pZFB0ciIKQEAgLTIzMSwxMyArMjMxLDEzIEBACiAgICJQeUNPYmplY3RfU2V0Vm9pZFB0ciIKICAgIlB5Q09iamVjdF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29kZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb2Rlb2JqZWN0KQogICAiUHlDb2RlX05ldyIKICAgIlB5Q29kZV9BZGRyMkxpbmUiCiAgICJQeUNvZGVfQ2hlY2tMaW5lTnVtYmVyIgogICAiUHlDb2RlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb21wbGV4b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbXBsZXhvYmplY3QpCiAgICJfUHlfY19wb3ciCiAgICJfUHlfY19zdW0iCiAgICJfUHlfY19kaWZmIgpAQCAtMjUxLDcgKzI1MSw3IEBACiAgICJQeUNvbXBsZXhfQXNDQ29tcGxleCIKICAgIlB5Q29tcGxleF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZGVzY3JvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGVzY3JvYmplY3QpCiAgICJQeVdyYXBwZXJfTmV3IgogICAiUHlEZXNjcl9OZXdNZXRob2QiCiAgICJQeURlc2NyX05ld0NsYXNzTWV0aG9kIgpAQCAtMjYyLDcgKzI2Miw3IEBACiAgICJQeVdyYXBwZXJEZXNjcl9UeXBlIgogICAiUHlQcm9wZXJ0eV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZGljdG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihkaWN0b2JqZWN0KQogICAiUHlEaWN0X05ldyIKICAgIlB5RGljdF9HZXRJdGVtIgogICAiUHlEaWN0X1NldEl0ZW0iCkBAIC0yODYsMTEgKzI4NiwxMSBAQAogICAiUHlEaWN0SXRlclZhbHVlX1R5cGUiCiAgICJQeURpY3RJdGVySXRlbV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZW51bW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihlbnVtb2JqZWN0KQogICAiUHlFbnVtX1R5cGUiCiAgICJQeVJldmVyc2VkX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmaWxlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZpbGVvYmplY3QpCiAgICJQeUZpbGVfRnJvbVN0cmluZyIKICAgIlB5X1VuaXZlcnNhbE5ld2xpbmVGcmVhZCIKICAgIlB5RmlsZV9HZXRMaW5lIgpAQCAtMzA2LDcgKzMwNiw3IEBACiAgICJQeUZpbGVfTmFtZSIKICAgIlB5RmlsZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZmxvYXRvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZmxvYXRvYmplY3QpCiAgICJQeUZsb2F0X0Zyb21TdHJpbmciCiAgICJQeUZsb2F0X0FzRG91YmxlIgogICAiUHlGbG9hdF9GaW5pIgpAQCAtMzIxLDcgKzMyMSw3IEBACiAgICJQeUZsb2F0X0FzU3RyaW5nRXgiCiAgICJQeUZsb2F0X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmcmFtZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihmcmFtZW9iamVjdCkKICAgIlB5RnJhbWVfTmV3IgogICAiUHlGcmFtZV9GYXN0VG9Mb2NhbHMiCiAgICJQeUZyYW1lX0xvY2Fsc1RvRmFzdCIKQEAgLTMzMSw3ICszMzEsNyBAQAogICAiUHlGcmFtZV9CbG9ja1BvcCIKICAgIlB5RnJhbWVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZ1bmNvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZnVuY29iamVjdCkKICAgIlB5RnVuY3Rpb25fTmV3IgogICAiUHlGdW5jdGlvbl9HZXRDb2RlIgogICAiUHlGdW5jdGlvbl9HZXRHbG9iYWxzIgpAQCAtMzQ2LDEyICszNDYsMTIgQEAKICAgIlB5Q2xhc3NNZXRob2RfVHlwZSIKICAgIlB5U3RhdGljTWV0aG9kX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZW5vYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2Vub2JqZWN0KQogICAiUHlHZW5fTmV3IgogICAiUHlHZW5fTmVlZHNGaW5hbGl6aW5nIgogICAiUHlHZW5fVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGludG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihpbnRvYmplY3QpCiAgICJQeUludF9Bc0xvbmciCiAgICJQeUludF9Bc1Vuc2lnbmVkTG9uZ01hc2siCiAgICJQeUludF9Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrIgpAQCAtMzY2LDEzICszNjYsMTMgQEAKICAgIl9QeUludF9Jbml0IgogICAiUHlJbnRfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGl0ZXJvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaXRlcm9iamVjdCkKICAgIlB5U2VxSXRlcl9OZXciCiAgICJQeUNhbGxJdGVyX05ldyIKICAgIlB5U2VxSXRlcl9UeXBlIgogICAiUHlDYWxsSXRlcl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobGlzdG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihsaXN0b2JqZWN0KQogICAiUHlMaXN0X05ldyIKICAgIlB5TGlzdF9BcHBlbmQiCiAgICJQeUxpc3RfU2l6ZSIKQEAgLTM5MCw3ICszOTAsNyBAQAogICAiUHlMaXN0SXRlcl9UeXBlIgogICAiUHlMaXN0UmV2SXRlcl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobG9uZ29iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihsb25nb2JqZWN0KQogICAiUHlMb25nX0Zyb21Eb3VibGUiCiAgICJQeUxvbmdfQXNMb25nIgogICAiX1B5TG9uZ19Bc1NzaXplX3QiCkBAIC00MjAsNyArNDIwLDcgQEAKICAgIlB5TG9uZ19UeXBlIgogICAiX1B5TG9uZ19EaWdpdFZhbHVlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWV0aG9kb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1ldGhvZG9iamVjdCkKICAgIlB5Q0Z1bmN0aW9uX0NhbGwiCiAgICJQeV9GaW5kTWV0aG9kSW5DaGFpbiIKICAgIlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uIgpAQCAtNDMyLDcgKzQzMiw3IEBACiAgICJQeUNGdW5jdGlvbl9OZXciCiAgICJQeUNGdW5jdGlvbl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobW9kdWxlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1vZHVsZW9iamVjdCkKICAgIlB5TW9kdWxlX05ldyIKICAgIl9QeU1vZHVsZV9DbGVhciIKICAgIlB5TW9kdWxlX0dldERpY3QiCkBAIC00NDAsNyArNDQwLDcgQEAKICAgIlB5TW9kdWxlX0dldEZpbGVuYW1lIgogICAiUHlNb2R1bGVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihvYmplY3QpCiAgICJQeV9EaXZpc2lvbldhcm5pbmdGbGFnIgogICAiUHlPYmplY3RfU3RyIgogICAiUHlPYmplY3RfUmVwciIKQEAgLTQ5MywxNSArNDkzLDE1IEBACiAgICJfUHlUcmFzaF9kZWxldGVfbmVzdGluZyIKICAgIl9QeVRyYXNoX2RlbGV0ZV9sYXRlciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG9ibWFsbG9jKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG9ibWFsbG9jKQogICAiUHlPYmplY3RfTWFsbG9jIgogICAiUHlPYmplY3RfRnJlZSIKICAgIlB5T2JqZWN0X1JlYWxsb2MiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihyYW5nZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihyYW5nZW9iamVjdCkKICAgIlB5UmFuZ2VfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNldG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihzZXRvYmplY3QpCiAgICJQeVNldF9Qb3AiCiAgICJQeVNldF9OZXciCiAgICJQeUZyb3plblNldF9OZXciCkBAIC01MTYsNyArNTE2LDcgQEAKICAgIlB5U2V0X1R5cGUiCiAgICJQeUZyb3plblNldF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2xpY2VvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2xpY2VvYmplY3QpCiAgICJfUHlTbGljZV9Gcm9tSW5kaWNlcyIKICAgIlB5U2xpY2VfR2V0SW5kaWNlcyIKICAgIlB5U2xpY2VfR2V0SW5kaWNlc0V4IgpAQCAtNTI0LDcgKzUyNCw3IEBACiAgICJfUHlfRWxsaXBzaXNPYmplY3QiCiAgICJQeVNsaWNlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzdHJpbmdvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3RyaW5nb2JqZWN0KQogICAiUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUiCiAgICJQeVN0cmluZ19JbnRlcm5JblBsYWNlIgogICAiUHlTdHJpbmdfRnJvbVN0cmluZyIKQEAgLTU1NSwxMiArNTU1LDEyIEBACiAgICJQeVN0cmluZ19UeXBlIgogICAiUHlCYXNlU3RyaW5nX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzdHJ1Y3RzZXEpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3RydWN0c2VxKQogICAiUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSIKICAgIlB5U3RydWN0U2VxdWVuY2VfTmV3IgogICAiUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0dXBsZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYih0dXBsZW9iamVjdCkKICAgIlB5VHVwbGVfTmV3IgogICAiUHlUdXBsZV9QYWNrIgogICAiX1B5VHVwbGVfUmVzaXplIgpAQCAtNTcyLDcgKzU3Miw3IEBACiAgICJQeVR1cGxlX1R5cGUiCiAgICJQeVR1cGxlSXRlcl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodHlwZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYih0eXBlb2JqZWN0KQogICAiUHlUeXBlX0lzU3VidHlwZSIKICAgIl9QeVR5cGVfTG9va3VwIgogICAiUHlUeXBlX1JlYWR5IgpAQCAtNTgzLDcgKzU4Myw3IEBACiAgICJQeUJhc2VPYmplY3RfVHlwZSIKICAgIlB5U3VwZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHVuaWNvZGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodW5pY29kZW9iamVjdCkKICAgIlB5VW5pY29kZVVDUzJfUmVzaXplIgogICAiUHlVbmljb2RlVUNTMl9Gcm9tT3JkaW5hbCIKICAgIlB5VW5pY29kZVVDUzJfRnJvbU9iamVjdCIKQEAgLTY0OSw3ICs2NDksNyBAQAogICAiUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCIKICAgIlB5VW5pY29kZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodW5pY29kZWN0eXBlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHVuaWNvZGVjdHlwZSkKICAgIl9QeVVuaWNvZGVfVHlwZVJlY29yZHMiCiAgICJfUHlVbmljb2RlVUNTMl9Ub051bWVyaWMiCiAgICJfUHlVbmljb2RlVUNTMl9Jc0xvd2VyY2FzZSIKQEAgLTY2Nyw3ICs2NjcsNyBAQAogICAiX1B5VW5pY29kZVVDUzJfSXNOdW1lcmljIgogICAiX1B5VW5pY29kZVVDUzJfSXNBbHBoYSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHdlYWtyZWZvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIod2Vha3JlZm9iamVjdCkKICAgIlB5V2Vha3JlZl9OZXdSZWYiCiAgICJQeVdlYWtyZWZfTmV3UHJveHkiCiAgICJQeU9iamVjdF9DbGVhcldlYWtSZWZzIgpAQCAtNjc4LDcgKzY3OCw3IEBACiAgICJfUHlXZWFrcmVmX1Byb3h5VHlwZSIKICAgIl9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihQeXRob24tYXN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKFB5dGhvbi1hc3QpCiA7ICAiaW5pdF9hc3QiCiAgICJNb2R1bGUiCiAgICJJbnRlcmFjdGl2ZSIKQEAgLTczNywxOCArNzM3LDE4IEBACiAgICJhbGlhcyIKICAgIlB5QVNUX21vZDJvYmoiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihhc2RsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFzZGwpCiAgICJhc2RsX3NlcV9uZXciCiAgICJhc2RsX2ludF9zZXFfbmV3IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYXN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFzdCkKICAgIlB5QVNUX0Zyb21Ob2RlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYmx0aW5tb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYmx0aW5tb2R1bGUpCiAgICJfUHlCdWlsdGluX0luaXQiCiAgICJQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZXhjZXB0aW9ucykKKzsgRnJvbSBweXRob24zM19zLmxpYihleGNlcHRpb25zKQogICAiUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQiCiAgICJQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydCIKICAgIlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZCIKQEAgLTgyNCw3ICs4MjQsNyBAQAogICAiUHlFeGNfSW1wb3J0V2FybmluZyIKICAgIlB5RXhjX01lbW9yeUVycm9ySW5zdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNldmFsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNldmFsKQogICAiUHlFdmFsX0V2YWxGcmFtZUV4IgogICAiUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMiCiAgICJQeUV2YWxfRXZhbENvZGVFeCIKQEAgLTg2MywxMyArODYzLDEzIEBACiAgICJfUHlfQ2hlY2tJbnRlcnZhbCIKICAgIl9QeV9UaWNrZXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb21waWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbXBpbGUpCiAgICJfUHlfTWFuZ2xlIgogICAiUHlBU1RfQ29tcGlsZSIKICAgIlB5Tm9kZV9Db21waWxlIgogICAiUHlfT3B0aW1pemVGbGFnIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29kZWNzKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvZGVjcykKICAgIl9QeUNvZGVjX0xvb2t1cCIKICAgIlB5Q29kZWNfRW5jb2RlIgogICAiUHlDb2RlY19EZWNvZGUiCkBAIC04ODgsNyArODg4LDcgQEAKICAgIlB5Q29kZWNfTG9va3VwRXJyb3IiCiAgICJQeUNvZGVjX1N0cmljdEVycm9ycyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGVycm9ycykKKzsgRnJvbSBweXRob24zM19zLmxpYihlcnJvcnMpCiAgICJQeUVycl9TZXROb25lIgogICAiUHlFcnJfU2V0U3RyaW5nIgogICAiUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzIgpAQCAtOTE0LDE2ICs5MTQsMTYgQEAKICAgIlB5RXJyX1dhcm4iCiAgICJQeUVycl9XYXJuRXhwbGljaXQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmcm96ZW4pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZnJvemVuKQogICAiUHlJbXBvcnRfRnJvemVuTW9kdWxlcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZyb3plbm1haW4pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZnJvemVubWFpbikKICAgIlB5X0Zyb3plbk1haW4iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmdXR1cmUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZnV0dXJlKQogICAiUHlGdXR1cmVfRnJvbUFTVCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldGFyZ3MpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0YXJncykKICAgIlB5QXJnX1BhcnNlIgogICAiX1B5QXJnX1BhcnNlX1NpemVUIgogICAiUHlBcmdfUGFyc2VUdXBsZSIKQEAgLTkzNywyMiArOTM3LDIyIEBACiAgICJfUHlBcmdfVmFQYXJzZV9TaXplVCIKICAgIl9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldGNvbXBpbGVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGNvbXBpbGVyKQogICAiUHlfR2V0Q29tcGlsZXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRjb3B5cmlnaHQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0Y29weXJpZ2h0KQogICAiUHlfR2V0Q29weXJpZ2h0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0cGxhdGZvcm0pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0cGxhdGZvcm0pCiAgICJQeV9HZXRQbGF0Zm9ybSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldHZlcnNpb24pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0dmVyc2lvbikKICAgIlB5X0dldFZlcnNpb24iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihncmFtaW5pdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihncmFtaW5pdCkKICAgIl9QeVBhcnNlcl9HcmFtbWFyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaW1wb3J0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGltcG9ydCkKICAgIl9QeUltcG9ydF9Jbml0IgogICAiX1B5SW1wb3J0SG9va3NfSW5pdCIKICAgIlB5SW1wb3J0X0ltcG9ydE1vZHVsZSIKQEAgLTk3OSwxMCArOTc5LDEwIEBACiAgICJQeUltcG9ydF9Jbml0dGFiIgogICAiX1B5SW1wb3J0X0ZpbGV0YWIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpbXBvcnRkbCkKKzsgRnJvbSBweXRob24zM19zLmxpYihpbXBvcnRkbCkKICAgIl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1hcnNoYWwpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWFyc2hhbCkKICAgIlB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlIgogICAiUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmciCiAgICJQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlIgpAQCAtOTkzLDcgKzk5Myw3IEBACiAgICJQeU1hcnNoYWxfUmVhZE9iamVjdEZyb21TdHJpbmciCiAgICJQeU1hcnNoYWxfSW5pdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1vZHN1cHBvcnQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobW9kc3VwcG9ydCkKICAgIlB5X0luaXRNb2R1bGU0IgogICAiUHlfQnVpbGRWYWx1ZSIKICAgIl9QeV9CdWlsZFZhbHVlX1NpemVUIgpAQCAtMTAwNiwyNCArMTAwNiwyNCBAQAogICAiUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQiCiAgICJfUHlfUGFja2FnZUNvbnRleHQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihteXNucHJpbnRmKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG15c25wcmludGYpCiAgICJQeU9TX3NucHJpbnRmIgogICAiUHlPU192c25wcmludGYiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihteXN0cnRvdWwpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobXlzdHJ0b3VsKQogICAiUHlPU19zdHJ0b3VsIgogICAiUHlPU19zdHJ0b2wiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihweWFyZW5hKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHB5YXJlbmEpCiAgICJQeUFyZW5hX05ldyIKICAgIlB5QXJlbmFfRnJlZSIKICAgIlB5QXJlbmFfTWFsbG9jIgogICAiUHlBcmVuYV9BZGRQeU9iamVjdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHB5ZnBlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHB5ZnBlKQogICAiUHlGUEVfZHVtbXkiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihweXN0YXRlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHB5c3RhdGUpCiAgICJQeUludGVycHJldGVyU3RhdGVfQ2xlYXIiCiAgICJQeVRocmVhZFN0YXRlX0NsZWFyIgogICAiX1B5VGhyZWFkX0N1cnJlbnRGcmFtZXMiCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQAogICAiX1B5VGhyZWFkU3RhdGVfQ3VycmVudCIKICAgIl9QeVRocmVhZFN0YXRlX0dldEZyYW1lIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocHl0aG9ucnVuKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHB5dGhvbnJ1bikKICAgIlB5X0lnbm9yZUVudmlyb25tZW50RmxhZyIKICAgIlB5X0RlYnVnRmxhZyIKICAgIlB5X1ZlcmJvc2VGbGFnIgpAQCAtMTExMCwyMCArMTExMCwyMCBAQAogICAiUHlfVW5pY29kZUZsYWciCiAgICJfUHlfUW5ld0ZsYWciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzdHJ1Y3RtZW1iZXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3RydWN0bWVtYmVyKQogICAiUHlNZW1iZXJfR2V0IgogICAiUHlNZW1iZXJfR2V0T25lIgogICAiUHlNZW1iZXJfU2V0T25lIgogICAiUHlNZW1iZXJfU2V0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3ltdGFibGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3ltdGFibGUpCiAgICJQeVN5bXRhYmxlX0J1aWxkIgogICAiUHlTeW10YWJsZV9GcmVlIgogICAiUHlTVF9HZXRTY29wZSIKICAgIlB5U3ltdGFibGVfTG9va3VwIgogICAiUHlTVEVudHJ5X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzeXNtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3lzbW9kdWxlKQogICAiX1B5U3lzX0luaXQiCiAgICJQeVN5c19Xcml0ZVN0ZGVyciIKICAgIlB5U3lzX1NldFBhdGgiCkBAIC0xMTM3LDIyICsxMTM3LDIyIEBACiAgICJQeVN5c19SZXNldFdhcm5PcHRpb25zIgogICAiUHlTeXNfQWRkV2Fybk9wdGlvbiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRyYWNlYmFjaykKKzsgRnJvbSBweXRob24zM19zLmxpYih0cmFjZWJhY2spCiAgICJQeVRyYWNlQmFja19IZXJlIgogICAiUHlUcmFjZUJhY2tfUHJpbnQiCiAgICJQeVRyYWNlQmFja19UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0b3B0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldG9wdCkKICAgIl9QeU9TX0dldE9wdCIKICAgIl9QeU9TX29wdGVyciIKICAgIl9QeU9TX29wdGluZCIKICAgIl9QeU9TX29wdGFyZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGR5bmxvYWRfc2hsaWIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZHlubG9hZF9zaGxpYikKICAgIl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYiIKICAgIl9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRocmVhZCkKKzsgRnJvbSBweXRob24zM19zLmxpYih0aHJlYWQpCiAgICJQeVRocmVhZF9kZWxldGVfa2V5X3ZhbHVlIgogICAiUHlUaHJlYWRfaW5pdF90aHJlYWQiCiAgICJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIgpAQCAtMTE2OSw3ICsxMTY5LDcgQEAKICAgIlB5VGhyZWFkX3NldF9rZXlfdmFsdWUiCiAgICJQeVRocmVhZF9nZXRfa2V5X3ZhbHVlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2Ntb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2Ntb2R1bGUpCiA7ICAiaW5pdGdjIgogICAiX1B5T2JqZWN0X0dDX05ldyIKICAgIl9QeU9iamVjdF9HQ19OZXdWYXIiCkBAIC0xMTg1LDcgKzExODUsNyBAQAogICAiX1B5T2JqZWN0X0dDX0RlbCIKICAgIl9QeUdDX2dlbmVyYXRpb24wIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2lnbmFsbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNpZ25hbG1vZHVsZSkKIDsgICJpbml0c2lnbmFsIgogICAiUHlFcnJfQ2hlY2tTaWduYWxzIgogICAiUHlFcnJfU2V0SW50ZXJydXB0IgpAQCAtMTE5NCwxMjEgKzExOTQsMTIxIEBACiAgICJQeU9TX0luaXRJbnRlcnJ1cHRzIgogICAiUHlPU19BZnRlckZvcmsiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihwb3NpeG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihwb3NpeG1vZHVsZSkKIDsgICJpbml0b3MyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX3RocmVhZG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfdGhyZWFkbW9kdWxlKQogOyAgImluaXRfdGhyZWFkIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYXJyYXltb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYXJyYXltb2R1bGUpCiA7ICAiaW5pdGFycmF5IgogOyAgImFycmF5X21ldGhvZHMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihiaW5hc2NpaSkKKzsgRnJvbSBweXRob24zM19zLmxpYihiaW5hc2NpaSkKIDsgICJpbml0YmluYXNjaWkiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjbWF0aG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjbWF0aG1vZHVsZSkKIDsgICJpbml0Y21hdGgiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfY29kZWNzbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9jb2RlY3Ntb2R1bGUpCiA7ICAiaW5pdF9jb2RlY3MiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb2xsZWN0aW9uc21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb2xsZWN0aW9uc21vZHVsZSkKIDsgICJpbml0Y29sbGVjdGlvbnMiCiAgICJkZXF1ZWl0ZXJfdHlwZSIKICAgImRlcXVlcmV2aXRlcl90eXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY1BpY2tsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjUGlja2xlKQogOyAgImluaXRjUGlja2xlIgogOyAgImZhc3Rfc2F2ZV9sZWF2ZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9jc3YpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX2NzdikKIDsgICJpbml0X2NzdiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRhdGV0aW1lbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGRhdGV0aW1lbW9kdWxlKQogOyAgImluaXRkYXRldGltZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRsbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGRsbW9kdWxlKQogOyAgImluaXRkbCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGVycm5vbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGVycm5vbW9kdWxlKQogOyAgImluaXRlcnJubyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZjbnRsbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZjbnRsbW9kdWxlKQogOyAgImluaXRmY250bCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9mdW5jdG9vbHNtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX2Z1bmN0b29sc21vZHVsZSkKIDsgICJpbml0X2Z1bmN0b29scyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9oZWFwcW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfaGVhcHFtb2R1bGUpCiA7ICAiaW5pdF9oZWFwcSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGltYWdlb3ApCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaW1hZ2VvcCkKIDsgICJpbml0aW1hZ2VvcCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGl0ZXJ0b29sc21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihpdGVydG9vbHNtb2R1bGUpCiA7ICAiaW5pdGl0ZXJ0b29scyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9sb2NhbGVtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX2xvY2FsZW1vZHVsZSkKIDsgICJpbml0X2xvY2FsZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1hdGhtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWF0aG1vZHVsZSkKIDsgICJpbml0bWF0aCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1kNSkKKzsgRnJvbSBweXRob24zM19zLmxpYihtZDUpCiAgICJtZDVfZmluaXNoIgogICAibWQ1X2luaXQiCiAgICJtZDVfYXBwZW5kIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWQ1bW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1kNW1vZHVsZSkKIDsgICJpbml0X21kNSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG9wZXJhdG9yKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG9wZXJhdG9yKQogOyAgImluaXRvcGVyYXRvciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9yYW5kb21tb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX3JhbmRvbW1vZHVsZSkKIDsgICJpbml0X3JhbmRvbSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHJnYmltZ21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihyZ2JpbWdtb2R1bGUpCiA7ICAiaW5pdHJnYmltZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNoYW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzaGFtb2R1bGUpCiA7ICAiaW5pdF9zaGEiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzaGEyNTZtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2hhMjU2bW9kdWxlKQogOyAgImluaXRfc2hhMjU2IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2hhNTEybW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYTUxMm1vZHVsZSkKIDsgICJpbml0X3NoYTUxMiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9zcmUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX3NyZSkKIDsgICJpbml0X3NyZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN0cm9wbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cm9wbW9kdWxlKQogOyAgImluaXRzdHJvcCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9zdHJ1Y3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX3N0cnVjdCkKIDsgICJpbml0X3N0cnVjdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN5bXRhYmxlbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN5bXRhYmxlbW9kdWxlKQogOyAgImluaXRfc3ltdGFibGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0ZXJtaW9zKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRlcm1pb3MpCiA7ICAiaW5pdHRlcm1pb3MiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0aW1lbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRpbWVtb2R1bGUpCiA7ICAiaW5pdHRpbWUiCiAgICJfUHlUaW1lX0RvdWJsZVRvVGltZXQiCiA7ICAiaW5pdHRpbWV6b25lIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodGltaW5nbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRpbWluZ21vZHVsZSkKIDsgICJpbml0dGltaW5nIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX3dlYWtyZWYpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX3dlYWtyZWYpCiA7ICAiaW5pdF93ZWFrcmVmIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoeHhzdWJ0eXBlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHh4c3VidHlwZSkKIDsgICJpbml0eHhzdWJ0eXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoemlwaW1wb3J0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHppcGltcG9ydCkKIDsgICJpbml0emlwaW1wb3J0IgpkaWZmIC0tZ2l0IGEvUEMvb3MydmFjcHAvY29uZmlnLmMgYi9QQy9vczJ2YWNwcC9jb25maWcuYwppbmRleCBiYmRmNmYzLi5iMjZiNTIxIDEwMDY0NAotLS0gYS9QQy9vczJ2YWNwcC9jb25maWcuYworKysgYi9QQy9vczJ2YWNwcC9jb25maWcuYwpAQCAtODgsMTAgKzg4LDkgQEAKICAgICAgICAgeyJtYXJzaGFsIiwgUHlNYXJzaGFsX0luaXR9LAogCiAgICAgICAgIC8qIFRoaXMgbGl2ZXMgaXQgd2l0aCBpbXBvcnQuYyAqLwotICAgICAgICB7ImltcCIsIGluaXRpbXB9LAorICAgICAgICB7Il9pbXAiLCBpbml0aW1wfSwKIAogICAgICAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgKi8KLSAgICAgICAgeyJfX21haW5fXyIsIE5VTEx9LAogICAgICAgICB7ImJ1aWx0aW5zIiwgTlVMTH0sCiAgICAgICAgIHsic3lzIiwgTlVMTH0sCiAKZGlmZiAtLWdpdCBhL1BDL3B5Y29uZmlnLmggYi9QQy9weWNvbmZpZy5oCmluZGV4IGJhODA4MDAuLmQ2ZGU1ZjAgMTAwNjQ0Ci0tLSBhL1BDL3B5Y29uZmlnLmgKKysrIGIvUEMvcHljb25maWcuaApAQCAtMjE1LDE0ICsyMTUsMTkgQEAKICNkZWZpbmUgY29weXNpZ24gX2NvcHlzaWduCiAjZGVmaW5lIGh5cG90IF9oeXBvdAogCi0jZW5kaWYgLyogX01TQ19WRVIgKi8KKy8qIFNpZGUgYnkgU2lkZSBhc3NlbWJsaWVzIHN1cHBvcnRlZCBpbiBWUyAyMDA1IGFuZCBWUyAyMDA4IGJ1dCBub3QgMjAxMCovCisjaWYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE2MDAKKyNkZWZpbmUgSEFWRV9TWFMgMQorI2VuZGlmCiAKIC8qIGRlZmluZSBzb21lIEFOU0kgdHlwZXMgdGhhdCBhcmUgbm90IGRlZmluZWQgaW4gZWFybGllciBXaW4gaGVhZGVycyAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDEyMDAKKyNpZiBfTVNDX1ZFUiA+PSAxMjAwCiAvKiBUaGlzIGZpbGUgb25seSBleGlzdHMgaW4gVkMgNi4wIG9yIGhpZ2hlciAqLwogI2luY2x1ZGUgPGJhc2V0c2QuaD4KICNlbmRpZgogCisjZW5kaWYgLyogX01TQ19WRVIgKi8KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFRoZSBCb3JsYW5kIGNvbXBpbGVyIGRlZmluZXMgX19CT1JMQU5EQ19fICovCiAvKiBYWFggVGhlc2UgZGVmaW5lcyBhcmUgbGlrZWx5IGluY29tcGxldGUsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBmaXguICovCkBAIC0zMTksMTEgKzMyNCwxMSBAQAogCQkJdGhlaXIgTWFrZWZpbGUgKG90aGVyIGNvbXBpbGVycyBhcmUgZ2VuZXJhbGx5CiAJCQl0YWtlbiBjYXJlIG9mIGJ5IGRpc3R1dGlscy4pICovCiAjCQkJaWYgZGVmaW5lZChfREVCVUcpCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzJfZC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMzX2QubGliIikKICMJCQllbGlmIGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMy5saWIiKQogIwkJCWVsc2UKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zMi5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMzLmxpYiIpCiAjCQkJZW5kaWYgLyogX0RFQlVHICovCiAjCQllbmRpZiAvKiBfTVNDX1ZFUiAqLwogIwllbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCkBAIC01NTAsMTAgKzU1NSw2IEBACiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHTlUgcmVhZGxpbmUgbGlicmFyeSAqLwogLyogI2RlZmluZSBXSVRIX1JFQURMSU5FIDEgKi8KIAotLyogRGVmaW5lIGFzIHRoZSBzaXplIG9mIHRoZSB1bmljb2RlIHR5cGUuICovCi0vKiBUaGlzIGlzIGVub3VnaCBmb3IgdW5pY29kZW9iamVjdC5oIHRvIGRvIHRoZSAicmlnaHQgdGhpbmciIG9uIFdpbmRvd3MuICovCi0jZGVmaW5lIFB5X1VOSUNPREVfU0laRSAyCi0KIC8qIFVzZSBQeXRob24ncyBvd24gc21hbGwtYmxvY2sgbWVtb3J5LWFsbG9jYXRvci4gKi8KICNkZWZpbmUgV0lUSF9QWU1BTExPQyAxCiAKQEAgLTcxNCw5ICs3MTUsNiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3V0c25hbWUuaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1NZU19VVFNOQU1FX0ggMSAqLwogCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx0aHJlYWQuaD4gaGVhZGVyIGZpbGUuICAqLwotLyogI3VuZGVmIEhBVkVfVEhSRUFEX0ggKi8KLQogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAgKi8KIC8qICNkZWZpbmUgSEFWRV9VTklTVERfSCAxICovCiAKZGlmZiAtLWdpdCBhL1BDL3B5bGF1bmNoZXIucmMgYi9QQy9weWxhdW5jaGVyLnJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNTgyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC0wLDAgKzEsNTEgQEAKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKyNkZWZpbmUgTVNfV0lORE9XUworI2luY2x1ZGUgIi4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIgorI2luY2x1ZGUgIi4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIgorI2lmZGVmIF9ERUJVRworIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjX2QuaCIKKyNlbHNlCisjICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKKyNlbmRpZgorCisjZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgorI2RlZmluZSBQWVZFUlNJT042NCBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OLCBGSUVMRDMsIFBZVEhPTl9BUElfVkVSU0lPTgorCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDE3TAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyAweDFMCisjZWxzZQorIEZJTEVGTEFHUyAweDBMCisjZW5kaWYKKyBGSUxFT1MgMHg0TAorIEZJTEVUWVBFIDB4MUwKKyBGSUxFU1VCVFlQRSAweDBMCitCRUdJTgorICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBCTE9DSyAiMDgwOTA0YjAiCisgICAgICAgIEJFR0lOCisgICAgICAgICAgICBWQUxVRSAiQ29tbWVudHMiLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgKENvbnNvbGUpIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAicHkiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJweSIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHg4MDksIDEyMDAKKyAgICBFTkQKK0VORAorCitJRElfSUNPTjEgICAgICAgICAgICAgICBJQ09OICAgICAgICAgICAgICAgICAgICAibGF1bmNoZXIuaWNvIgorCisKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMuZGVmIGIvUEMvcHl0aG9uMy5kZWYKaW5kZXggYTg0NTMzNS4uZDcyNjUyNSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5kZWYKKysrIGIvUEMvcHl0aG9uMy5kZWYKQEAgLTEsNjg5ICsxLDY5OSBAQAorOyBXaGVuIGNoYW5naW5nIHRoaXMgZmlsZSwgcnVuIHB5dGhvbjMzZ2VuLnB5CiBMSUJSQVJZCSJweXRob24zIgogRVhQT1JUUwotICBQeUFyZ19QYXJzZT1weXRob24zMi5QeUFyZ19QYXJzZQotICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjMyLlB5QXJnX1BhcnNlVHVwbGUKLSAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjMyLlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zMi5QeUFyZ19VbnBhY2tUdXBsZQotICBQeUFyZ19WYVBhcnNlPXB5dGhvbjMyLlB5QXJnX1ZhUGFyc2UKLSAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzIuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjMyLlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwotICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zMi5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCi0gIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zMi5QeUJvb2xfRnJvbUxvbmcKLSAgUHlCb29sX1R5cGU9cHl0aG9uMzIuUHlCb29sX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zMi5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjMyLlB5Qnl0ZUFycmF5X0FzU3RyaW5nCi0gIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zMi5QeUJ5dGVBcnJheV9Db25jYXQKLSAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zMi5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMyLlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zMi5QeUJ5dGVBcnJheV9SZXNpemUKLSAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zMi5QeUJ5dGVBcnJheV9TaXplCi0gIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzIuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzIuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzIuUHlCeXRlc19Bc1N0cmluZwotICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zMi5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX0NvbmNhdD1weXRob24zMi5QeUJ5dGVzX0NvbmNhdAotICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zMi5QeUJ5dGVzX0NvbmNhdEFuZERlbAotICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zMi5QeUJ5dGVzX0RlY29kZUVzY2FwZQotICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzIuUHlCeXRlc19Gcm9tRm9ybWF0Ci0gIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzIuUHlCeXRlc19Gcm9tRm9ybWF0VgotICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzIuUHlCeXRlc19Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zMi5QeUJ5dGVzX0Zyb21TdHJpbmcKLSAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMi5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfUmVwcj1weXRob24zMi5QeUJ5dGVzX1JlcHIKLSAgUHlCeXRlc19TaXplPXB5dGhvbjMyLlB5Qnl0ZXNfU2l6ZQotICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzIuUHlCeXRlc19UeXBlIERBVEEKLSAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zMi5QeUNGdW5jdGlvbl9DYWxsCi0gIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzIuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAotICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zMi5QeUNGdW5jdGlvbl9HZXRGbGFncwotICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zMi5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgotICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX0dldFNlbGYKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzIuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zMi5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzIuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjMyLlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzIuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zMi5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zMi5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zMi5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zMi5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjMyLlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzIuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zMi5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjMyLlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjMyLlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjMyLlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjMyLlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjMyLlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzIuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzIuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjMyLlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zMi5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzIuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjMyLlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zMi5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zMi5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zMi5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzIuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzIuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjMyLlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjMyLlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzIuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjMyLlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjMyLlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzIuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzIuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzIuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjMyLlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzIuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjMyLlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzIuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzIuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzIuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zMi5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zMi5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjMyLlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjMyLlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjMyLlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zMi5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zMi5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzIuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzIuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zMi5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzIuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzIuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzIuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzIuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjMyLlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zMi5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzIuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjMyLlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzIuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zMi5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zMi5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zMi5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zMi5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zMi5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzIuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjMyLlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjMyLlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjMyLlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzIuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjMyLlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzIuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjMyLlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzIuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjMyLlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzIuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjMyLlB5RXJyX0Zvcm1hdAotICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzIuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zMi5QeUVycl9OZXdFeGNlcHRpb24KLSAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zMi5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi0gIFB5RXJyX05vTWVtb3J5PXB5dGhvbjMyLlB5RXJyX05vTWVtb3J5Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zMi5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLSAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzIuUHlFcnJfT2NjdXJyZWQKLSAgUHlFcnJfUHJpbnQ9cHl0aG9uMzIuUHlFcnJfUHJpbnQKLSAgUHlFcnJfUHJpbnRFeD1weXRob24zMi5QeUVycl9QcmludEV4Ci0gIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjMyLlB5RXJyX1Byb2dyYW1UZXh0Ci0gIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzIuUHlFcnJfUmVzdG9yZQotICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzIuUHlFcnJfU2V0RnJvbUVycm5vCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zMi5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjMyLlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzIuUHlFcnJfU2V0SW50ZXJydXB0Ci0gIFB5RXJyX1NldE5vbmU9cHl0aG9uMzIuUHlFcnJfU2V0Tm9uZQotICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzIuUHlFcnJfU2V0T2JqZWN0Ci0gIFB5RXJyX1NldFN0cmluZz1weXRob24zMi5QeUVycl9TZXRTdHJpbmcKLSAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzIuUHlFcnJfU3ludGF4TG9jYXRpb24KLSAgUHlFcnJfV2FybkV4PXB5dGhvbjMyLlB5RXJyX1dhcm5FeAotICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzIuUHlFcnJfV2FybkV4cGxpY2l0Ci0gIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzIuUHlFcnJfV2FybkZvcm1hdAotICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzIuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCi0gIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zMi5QeUV2YWxfQWNxdWlyZUxvY2sKLSAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX0FjcXVpcmVUaHJlYWQKLSAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zMi5QeUV2YWxfQ2FsbEZ1bmN0aW9uCi0gIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjMyLlB5RXZhbF9DYWxsTWV0aG9kCi0gIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjMyLlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCi0gIFB5RXZhbF9FdmFsQ29kZT1weXRob24zMi5QeUV2YWxfRXZhbENvZGUKLSAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzIuUHlFdmFsX0V2YWxDb2RlRXgKLSAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zMi5QeUV2YWxfRXZhbEZyYW1lCi0gIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zMi5QeUV2YWxfRXZhbEZyYW1lRXgKLSAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjMyLlB5RXZhbF9HZXRCdWlsdGlucwotICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjMyLlB5RXZhbF9HZXRDYWxsU3RhdHMKLSAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjMyLlB5RXZhbF9HZXRGcmFtZQotICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzIuUHlFdmFsX0dldEZ1bmNEZXNjCi0gIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zMi5QeUV2YWxfR2V0RnVuY05hbWUKLSAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzIuUHlFdmFsX0dldEdsb2JhbHMKLSAgUHlFdmFsX0dldExvY2Fscz1weXRob24zMi5QeUV2YWxfR2V0TG9jYWxzCi0gIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zMi5QeUV2YWxfSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzIuUHlFdmFsX1JlSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjMyLlB5RXZhbF9SZWxlYXNlTG9jawotICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zMi5QeUV2YWxfUmVsZWFzZVRocmVhZAotICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zMi5QeUV2YWxfUmVzdG9yZVRocmVhZAotICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zMi5QeUV2YWxfU2F2ZVRocmVhZAotICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjMyLlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLSAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjMyLlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCi0gIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjMyLlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKLSAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzIuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQotICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjMyLlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQotICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zMi5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCi0gIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zMi5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQotICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzIuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzIuUHlFeGNfRU9GRXJyb3IgREFUQQotICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjMyLlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQotICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzIuUHlFeGNfRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjMyLlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCi0gIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCi0gIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzIuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCi0gIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzIuUHlFeGNfSU9FcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjMyLlB5RXhjX0ltcG9ydEVycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zMi5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKLSAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zMi5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zMi5QeUV4Y19JbmRleEVycm9yIERBVEEKLSAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzIuUHlFeGNfS2V5RXJyb3IgREFUQQotICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zMi5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCi0gIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjMyLlB5RXhjX0xvb2t1cEVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzIuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzIuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjMyLlB5RXhjX05hbWVFcnJvciBEQVRBCi0gIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzIuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCi0gIFB5RXhjX09TRXJyb3I9cHl0aG9uMzIuUHlFeGNfT1NFcnJvciBEQVRBCi0gIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzIuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCi0gIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzIuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zMi5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQotICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zMi5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zMi5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zMi5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCi0gIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzIuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCi0gIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjMyLlB5RXhjX1N5bnRheEVycm9yIERBVEEKLSAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zMi5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzIuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQotICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjMyLlB5RXhjX1N5c3RlbUV4aXQgREFUQQotICBQeUV4Y19UYWJFcnJvcj1weXRob24zMi5QeUV4Y19UYWJFcnJvciBEQVRBCi0gIFB5RXhjX1R5cGVFcnJvcj1weXRob24zMi5QeUV4Y19UeXBlRXJyb3IgREFUQQotICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zMi5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zMi5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjMyLlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zMi5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zMi5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCi0gIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKLSAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zMi5QeUV4Y19WYWx1ZUVycm9yIERBVEEKLSAgUHlFeGNfV2FybmluZz1weXRob24zMi5QeUV4Y19XYXJuaW5nIERBVEEKLSAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzIuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQotICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zMi5QeUV4Y2VwdGlvbl9HZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjMyLlB5RXhjZXB0aW9uX0dldENvbnRleHQKLSAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjMyLlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjawotICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zMi5QeUV4Y2VwdGlvbl9TZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjMyLlB5RXhjZXB0aW9uX1NldENvbnRleHQKLSAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjMyLlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjawotICBQeUZpbGVfRnJvbUZkPXB5dGhvbjMyLlB5RmlsZV9Gcm9tRmQKLSAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzIuUHlGaWxlX0dldExpbmUKLSAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjMyLlB5RmlsZV9Xcml0ZU9iamVjdAotICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzIuUHlGaWxlX1dyaXRlU3RyaW5nCi0gIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzIuUHlGaWx0ZXJfVHlwZSBEQVRBCi0gIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzIuUHlGbG9hdF9Bc0RvdWJsZQotICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzIuUHlGbG9hdF9Gcm9tRG91YmxlCi0gIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zMi5QeUZsb2F0X0Zyb21TdHJpbmcKLSAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjMyLlB5RmxvYXRfR2V0SW5mbwotICBQeUZsb2F0X0dldE1heD1weXRob24zMi5QeUZsb2F0X0dldE1heAotICBQeUZsb2F0X0dldE1pbj1weXRob24zMi5QeUZsb2F0X0dldE1pbgotICBQeUZsb2F0X1R5cGU9cHl0aG9uMzIuUHlGbG9hdF9UeXBlIERBVEEKLSAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjMyLlB5RnJvemVuU2V0X05ldwotICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjMyLlB5RnJvemVuU2V0X1R5cGUgREFUQQotICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzIuUHlHQ19Db2xsZWN0Ci0gIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjMyLlB5R0lMU3RhdGVfRW5zdXJlCi0gIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjMyLlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi0gIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zMi5QeUdJTFN0YXRlX1JlbGVhc2UKLSAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjMyLlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCi0gIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zMi5QeUltcG9ydF9BZGRNb2R1bGUKLSAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zMi5QeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzIuUHlJbXBvcnRfQ2xlYW51cAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zMi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjMyLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjMyLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zMi5QeUltcG9ydF9HZXRJbXBvcnRlcgotICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zMi5QeUltcG9ydF9HZXRNYWdpY051bWJlcgotICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zMi5QeUltcG9ydF9HZXRNYWdpY1RhZwotICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjMyLlB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydAotICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zMi5QeUltcG9ydF9JbXBvcnRNb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zMi5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCi0gIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zMi5QeUltcG9ydF9SZWxvYWRNb2R1bGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjMyLlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgotICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjMyLlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zMi5QeUludGVycHJldGVyU3RhdGVfTmV3Ci0gIFB5SXRlcl9OZXh0PXB5dGhvbjMyLlB5SXRlcl9OZXh0Ci0gIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zMi5QeUxpc3RJdGVyX1R5cGUgREFUQQotICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzIuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0X0FwcGVuZD1weXRob24zMi5QeUxpc3RfQXBwZW5kCi0gIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjMyLlB5TGlzdF9Bc1R1cGxlCi0gIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjMyLlB5TGlzdF9HZXRJdGVtCi0gIFB5TGlzdF9HZXRTbGljZT1weXRob24zMi5QeUxpc3RfR2V0U2xpY2UKLSAgUHlMaXN0X0luc2VydD1weXRob24zMi5QeUxpc3RfSW5zZXJ0Ci0gIFB5TGlzdF9OZXc9cHl0aG9uMzIuUHlMaXN0X05ldwotICBQeUxpc3RfUmV2ZXJzZT1weXRob24zMi5QeUxpc3RfUmV2ZXJzZQotICBQeUxpc3RfU2V0SXRlbT1weXRob24zMi5QeUxpc3RfU2V0SXRlbQotICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzIuUHlMaXN0X1NldFNsaWNlCi0gIFB5TGlzdF9TaXplPXB5dGhvbjMyLlB5TGlzdF9TaXplCi0gIFB5TGlzdF9Tb3J0PXB5dGhvbjMyLlB5TGlzdF9Tb3J0Ci0gIFB5TGlzdF9UeXBlPXB5dGhvbjMyLlB5TGlzdF9UeXBlIERBVEEKLSAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzIuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzIuUHlMb25nX0FzRG91YmxlCi0gIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzIuUHlMb25nX0FzTG9uZwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzIuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmdMb25nCi0gIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzIuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzIuUHlMb25nX0FzU2l6ZV90Ci0gIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzIuUHlMb25nX0FzU3NpemVfdAotICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzIuUHlMb25nX0FzVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzIuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zMi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzawotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjMyLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLSAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zMi5QeUxvbmdfQXNWb2lkUHRyCi0gIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjMyLlB5TG9uZ19Gcm9tRG91YmxlCi0gIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zMi5QeUxvbmdfRnJvbUxvbmcKLSAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zMi5QeUxvbmdfRnJvbUxvbmdMb25nCi0gIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjMyLlB5TG9uZ19Gcm9tU2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zMi5QeUxvbmdfRnJvbVNzaXplX3QKLSAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21TdHJpbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzIuUHlMb25nX0Zyb21Wb2lkUHRyCi0gIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjMyLlB5TG9uZ19HZXRJbmZvCi0gIFB5TG9uZ19UeXBlPXB5dGhvbjMyLlB5TG9uZ19UeXBlIERBVEEKLSAgUHlNYXBfVHlwZT1weXRob24zMi5QeU1hcF9UeXBlIERBVEEKLSAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjMyLlB5TWFwcGluZ19DaGVjawotICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zMi5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjMyLlB5TWFwcGluZ19IYXNLZXkKLSAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zMi5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCi0gIFB5TWFwcGluZ19JdGVtcz1weXRob24zMi5QeU1hcHBpbmdfSXRlbXMKLSAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzIuUHlNYXBwaW5nX0tleXMKLSAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zMi5QeU1hcHBpbmdfTGVuZ3RoCi0gIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjMyLlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19TaXplPXB5dGhvbjMyLlB5TWFwcGluZ19TaXplCi0gIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzIuUHlNYXBwaW5nX1ZhbHVlcwotICBQeU1lbV9GcmVlPXB5dGhvbjMyLlB5TWVtX0ZyZWUKLSAgUHlNZW1fTWFsbG9jPXB5dGhvbjMyLlB5TWVtX01hbGxvYwotICBQeU1lbV9SZWFsbG9jPXB5dGhvbjMyLlB5TWVtX1JlYWxsb2MKLSAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjMyLlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjMyLlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0Ci0gIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjMyLlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi0gIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjMyLlB5TWVtb3J5Vmlld19UeXBlIERBVEEKLSAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjMyLlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjMyLlB5TW9kdWxlX0FkZEludENvbnN0YW50Ci0gIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zMi5QeU1vZHVsZV9BZGRPYmplY3QKLSAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzIuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKLSAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zMi5QeU1vZHVsZV9DcmVhdGUyCi0gIFB5TW9kdWxlX0dldERlZj1weXRob24zMi5QeU1vZHVsZV9HZXREZWYKLSAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zMi5QeU1vZHVsZV9HZXREaWN0Ci0gIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjMyLlB5TW9kdWxlX0dldEZpbGVuYW1lCi0gIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjMyLlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0Ci0gIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzIuUHlNb2R1bGVfR2V0TmFtZQotICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zMi5QeU1vZHVsZV9HZXRTdGF0ZQotICBQeU1vZHVsZV9OZXc9cHl0aG9uMzIuUHlNb2R1bGVfTmV3Ci0gIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzIuUHlNb2R1bGVfVHlwZSBEQVRBCi0gIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzIuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCi0gIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjMyLlB5TnVtYmVyX0Fic29sdXRlCi0gIFB5TnVtYmVyX0FkZD1weXRob24zMi5QeU51bWJlcl9BZGQKLSAgUHlOdW1iZXJfQW5kPXB5dGhvbjMyLlB5TnVtYmVyX0FuZAotICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzIuUHlOdW1iZXJfQXNTc2l6ZV90Ci0gIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjMyLlB5TnVtYmVyX0NoZWNrCi0gIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zMi5QeU51bWJlcl9EaXZtb2QKLSAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzIuUHlOdW1iZXJfRmxvYXQKLSAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzIuUHlOdW1iZXJfRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zMi5QeU51bWJlcl9JblBsYWNlQWRkCi0gIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZUFuZAotICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5Ci0gIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zMi5QeU51bWJlcl9JblBsYWNlT3IKLSAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VQb3dlcgotICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zMi5QeU51bWJlcl9JblBsYWNlUnNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zMi5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKLSAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zMi5QeU51bWJlcl9JblBsYWNlWG9yCi0gIFB5TnVtYmVyX0luZGV4PXB5dGhvbjMyLlB5TnVtYmVyX0luZGV4Ci0gIFB5TnVtYmVyX0ludmVydD1weXRob24zMi5QeU51bWJlcl9JbnZlcnQKLSAgUHlOdW1iZXJfTG9uZz1weXRob24zMi5QeU51bWJlcl9Mb25nCi0gIFB5TnVtYmVyX0xzaGlmdD1weXRob24zMi5QeU51bWJlcl9Mc2hpZnQKLSAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzIuUHlOdW1iZXJfTXVsdGlwbHkKLSAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzIuUHlOdW1iZXJfTmVnYXRpdmUKLSAgUHlOdW1iZXJfT3I9cHl0aG9uMzIuUHlOdW1iZXJfT3IKLSAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzIuUHlOdW1iZXJfUG9zaXRpdmUKLSAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzIuUHlOdW1iZXJfUG93ZXIKLSAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjMyLlB5TnVtYmVyX1JlbWFpbmRlcgotICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzIuUHlOdW1iZXJfUnNoaWZ0Ci0gIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjMyLlB5TnVtYmVyX1N1YnRyYWN0Ci0gIFB5TnVtYmVyX1RvQmFzZT1weXRob24zMi5QeU51bWJlcl9Ub0Jhc2UKLSAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zMi5QeU51bWJlcl9UcnVlRGl2aWRlCi0gIFB5TnVtYmVyX1hvcj1weXRob24zMi5QeU51bWJlcl9Yb3IKLSAgUHlPU19BZnRlckZvcms9cHl0aG9uMzIuUHlPU19BZnRlckZvcmsKLSAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zMi5QeU9TX0luaXRJbnRlcnJ1cHRzCi0gIFB5T1NfSW5wdXRIb29rPXB5dGhvbjMyLlB5T1NfSW5wdXRIb29rIERBVEEKLSAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zMi5QeU9TX0ludGVycnVwdE9jY3VycmVkCi0gIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzIuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCi0gIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zMi5QeU9TX2RvdWJsZV90b19zdHJpbmcKLSAgUHlPU19nZXRzaWc9cHl0aG9uMzIuUHlPU19nZXRzaWcKLSAgUHlPU19teXN0cmljbXA9cHl0aG9uMzIuUHlPU19teXN0cmljbXAKLSAgUHlPU19teXN0cm5pY21wPXB5dGhvbjMyLlB5T1NfbXlzdHJuaWNtcAotICBQeU9TX3NldHNpZz1weXRob24zMi5QeU9TX3NldHNpZwotICBQeU9TX3NucHJpbnRmPXB5dGhvbjMyLlB5T1Nfc25wcmludGYKLSAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjMyLlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotICBQeU9TX3N0cnRvbD1weXRob24zMi5QeU9TX3N0cnRvbAotICBQeU9TX3N0cnRvdWw9cHl0aG9uMzIuUHlPU19zdHJ0b3VsCi0gIFB5T1NfdnNucHJpbnRmPXB5dGhvbjMyLlB5T1NfdnNucHJpbnRmCi0gIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjMyLlB5T2JqZWN0X0FTQ0lJCi0gIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zMi5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLSAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zMi5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCi0gIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zMi5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zMi5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCi0gIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjMyLlB5T2JqZWN0X0J5dGVzCi0gIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzIuUHlPYmplY3RfQ2FsbAotICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzIuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzIuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxNZXRob2QKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzIuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zMi5QeU9iamVjdF9DYWxsT2JqZWN0Ci0gIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zMi5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zMi5QeU9iamVjdF9DbGVhcldlYWtSZWZzCi0gIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzIuUHlPYmplY3RfRGVsSXRlbQotICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjMyLlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlPYmplY3RfRGlyPXB5dGhvbjMyLlB5T2JqZWN0X0RpcgotICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzIuUHlPYmplY3RfRm9ybWF0Ci0gIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzIuUHlPYmplY3RfRnJlZQotICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzIuUHlPYmplY3RfR0NfRGVsCi0gIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjMyLlB5T2JqZWN0X0dDX1RyYWNrCi0gIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzIuUHlPYmplY3RfR0NfVW5UcmFjawotICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zMi5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgotICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zMi5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjMyLlB5T2JqZWN0X0dldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zMi5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzIuUHlPYmplY3RfR2V0SXRlbQotICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjMyLlB5T2JqZWN0X0dldEl0ZXIKLSAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zMi5QeU9iamVjdF9IYXNBdHRyCi0gIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzIuUHlPYmplY3RfSGFzQXR0clN0cmluZwotICBQeU9iamVjdF9IYXNoPXB5dGhvbjMyLlB5T2JqZWN0X0hhc2gKLSAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjMyLlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAotICBQeU9iamVjdF9Jbml0PXB5dGhvbjMyLlB5T2JqZWN0X0luaXQKLSAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zMi5QeU9iamVjdF9Jbml0VmFyCi0gIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzIuUHlPYmplY3RfSXNJbnN0YW5jZQotICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjMyLlB5T2JqZWN0X0lzU3ViY2xhc3MKLSAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjMyLlB5T2JqZWN0X0lzVHJ1ZQotICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzIuUHlPYmplY3RfTGVuZ3RoCi0gIFB5T2JqZWN0X01hbGxvYz1weXRob24zMi5QeU9iamVjdF9NYWxsb2MKLSAgUHlPYmplY3RfTm90PXB5dGhvbjMyLlB5T2JqZWN0X05vdAotICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjMyLlB5T2JqZWN0X1JlYWxsb2MKLSAgUHlPYmplY3RfUmVwcj1weXRob24zMi5QeU9iamVjdF9SZXByCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjMyLlB5T2JqZWN0X1JpY2hDb21wYXJlCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zMi5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKLSAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzIuUHlPYmplY3RfU2VsZkl0ZXIKLSAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zMi5QeU9iamVjdF9TZXRBdHRyCi0gIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzIuUHlPYmplY3RfU2V0QXR0clN0cmluZwotICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjMyLlB5T2JqZWN0X1NldEl0ZW0KLSAgUHlPYmplY3RfU2l6ZT1weXRob24zMi5QeU9iamVjdF9TaXplCi0gIFB5T2JqZWN0X1N0cj1weXRob24zMi5QeU9iamVjdF9TdHIKLSAgUHlPYmplY3RfVHlwZT1weXRob24zMi5QeU9iamVjdF9UeXBlIERBVEEKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzIuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zMi5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi0gIFB5UHJvcGVydHlfVHlwZT1weXRob24zMi5QeVByb3BlcnR5X1R5cGUgREFUQQotICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjMyLlB5UmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeVJhbmdlX1R5cGU9cHl0aG9uMzIuUHlSYW5nZV9UeXBlIERBVEEKLSAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjMyLlB5UmV2ZXJzZWRfVHlwZSBEQVRBCi0gIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzIuUHlTZXFJdGVyX05ldwotICBQeVNlcUl0ZXJfVHlwZT1weXRob24zMi5QeVNlcUl0ZXJfVHlwZSBEQVRBCi0gIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzIuUHlTZXF1ZW5jZV9DaGVjawotICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zMi5QeVNlcXVlbmNlX0NvbmNhdAotICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjMyLlB5U2VxdWVuY2VfQ29udGFpbnMKLSAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zMi5QeVNlcXVlbmNlX0NvdW50Ci0gIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zMi5QeVNlcXVlbmNlX0RlbEl0ZW0KLSAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zMi5QeVNlcXVlbmNlX0RlbFNsaWNlCi0gIFB5U2VxdWVuY2VfRmFzdD1weXRob24zMi5QeVNlcXVlbmNlX0Zhc3QKLSAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjMyLlB5U2VxdWVuY2VfR2V0SXRlbQotICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjMyLlB5U2VxdWVuY2VfR2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9Jbj1weXRob24zMi5QeVNlcXVlbmNlX0luCi0gIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zMi5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKLSAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjMyLlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAotICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjMyLlB5U2VxdWVuY2VfSW5kZXgKLSAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzIuUHlTZXF1ZW5jZV9MZW5ndGgKLSAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjMyLlB5U2VxdWVuY2VfTGlzdAotICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zMi5QeVNlcXVlbmNlX1JlcGVhdAotICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzIuUHlTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzIuUHlTZXF1ZW5jZV9TZXRTbGljZQotICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzIuUHlTZXF1ZW5jZV9TaXplCi0gIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzIuUHlTZXF1ZW5jZV9UdXBsZQotICBQeVNldEl0ZXJfVHlwZT1weXRob24zMi5QeVNldEl0ZXJfVHlwZSBEQVRBCi0gIFB5U2V0X0FkZD1weXRob24zMi5QeVNldF9BZGQKLSAgUHlTZXRfQ2xlYXI9cHl0aG9uMzIuUHlTZXRfQ2xlYXIKLSAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzIuUHlTZXRfQ29udGFpbnMKLSAgUHlTZXRfRGlzY2FyZD1weXRob24zMi5QeVNldF9EaXNjYXJkCi0gIFB5U2V0X05ldz1weXRob24zMi5QeVNldF9OZXcKLSAgUHlTZXRfUG9wPXB5dGhvbjMyLlB5U2V0X1BvcAotICBQeVNldF9TaXplPXB5dGhvbjMyLlB5U2V0X1NpemUKLSAgUHlTZXRfVHlwZT1weXRob24zMi5QeVNldF9UeXBlIERBVEEKLSAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjMyLlB5U2xpY2VfR2V0SW5kaWNlcwotICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zMi5QeVNsaWNlX0dldEluZGljZXNFeAotICBQeVNsaWNlX05ldz1weXRob24zMi5QeVNsaWNlX05ldwotICBQeVNsaWNlX1R5cGU9cHl0aG9uMzIuUHlTbGljZV9UeXBlIERBVEEKLSAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjMyLlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCi0gIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zMi5QeVN0YXRlX0ZpbmRNb2R1bGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjMyLlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zMi5QeVN0cnVjdFNlcXVlbmNlX05ldwotICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzIuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCi0gIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zMi5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTdXBlcl9UeXBlPXB5dGhvbjMyLlB5U3VwZXJfVHlwZSBEQVRBCi0gIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzIuUHlTeXNfQWRkV2Fybk9wdGlvbgotICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zMi5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQotICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzIuUHlTeXNfRm9ybWF0U3RkZXJyCi0gIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zMi5QeVN5c19Gb3JtYXRTdGRvdXQKLSAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjMyLlB5U3lzX0dldE9iamVjdAotICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zMi5QeVN5c19IYXNXYXJuT3B0aW9ucwotICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjMyLlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLSAgUHlTeXNfU2V0QXJndj1weXRob24zMi5QeVN5c19TZXRBcmd2Ci0gIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zMi5QeVN5c19TZXRBcmd2RXgKLSAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjMyLlB5U3lzX1NldE9iamVjdAotICBQeVN5c19TZXRQYXRoPXB5dGhvbjMyLlB5U3lzX1NldFBhdGgKLSAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzIuUHlTeXNfV3JpdGVTdGRlcnIKLSAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzIuUHlTeXNfV3JpdGVTdGRvdXQKLSAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zMi5QeVRocmVhZFN0YXRlX0NsZWFyCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zMi5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLSAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9HZXQKLSAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfR2V0RGljdAotICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zMi5QeVRocmVhZFN0YXRlX05ldwotICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLSAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfU3dhcAotICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjMyLlB5VHJhY2VCYWNrX0hlcmUKLSAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzIuUHlUcmFjZUJhY2tfUHJpbnQKLSAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zMi5QeVRyYWNlQmFja19UeXBlIERBVEEKLSAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zMi5QeVR1cGxlSXRlcl9UeXBlIERBVEEKLSAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjMyLlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzIuUHlUdXBsZV9HZXRJdGVtCi0gIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzIuUHlUdXBsZV9HZXRTbGljZQotICBQeVR1cGxlX05ldz1weXRob24zMi5QeVR1cGxlX05ldwotICBQeVR1cGxlX1BhY2s9cHl0aG9uMzIuUHlUdXBsZV9QYWNrCi0gIFB5VHVwbGVfU2V0SXRlbT1weXRob24zMi5QeVR1cGxlX1NldEl0ZW0KLSAgUHlUdXBsZV9TaXplPXB5dGhvbjMyLlB5VHVwbGVfU2l6ZQotICBQeVR1cGxlX1R5cGU9cHl0aG9uMzIuUHlUdXBsZV9UeXBlIERBVEEKLSAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzIuUHlUeXBlX0NsZWFyQ2FjaGUKLSAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjMyLlB5VHlwZV9Gcm9tU3BlYwotICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjMyLlB5VHlwZV9HZW5lcmljQWxsb2MKLSAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzIuUHlUeXBlX0dlbmVyaWNOZXcKLSAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjMyLlB5VHlwZV9HZXRGbGFncwotICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjMyLlB5VHlwZV9Jc1N1YnR5cGUKLSAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjMyLlB5VHlwZV9Nb2RpZmllZAotICBQeVR5cGVfUmVhZHk9cHl0aG9uMzIuUHlUeXBlX1JlYWR5Ci0gIFB5VHlwZV9UeXBlPXB5dGhvbjMyLlB5VHlwZV9UeXBlIERBVEEKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zMi5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FwcGVuZAotICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXBwZW5kQW5kRGVsCi0gIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNDaGFybWFwU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFN0cmluZwotICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNMYXRpbjFTdHJpbmcKLSAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzVVRGMTZTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1VURjMyU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1VURjhTdHJpbmcKLSAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXIKLSAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0Ci0gIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQ29tcGFyZQotICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQ29uY2F0Ci0gIFB5VW5pY29kZV9Db250YWlucz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NvbnRhaW5zCi0gIFB5VW5pY29kZV9Db3VudD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NvdW50Ci0gIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGUKLSAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlQVNDSUkKLSAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwCi0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0gIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVMYXRpbjEKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyU3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCi0gIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9GU0RlY29kZXIKLSAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9GaW5kCi0gIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbUVuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXRWCi0gIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbU9iamVjdAotICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tT3JkaW5hbAotICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmcKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21XaWRlQ2hhcgotICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfR2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfR2V0U2l6ZQotICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfSXNJZGVudGlmaWVyCi0gIFB5VW5pY29kZV9Kb2luPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfSm9pbgotICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfUlBhcnRpdGlvbgotICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfUlNwbGl0Ci0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfUmVwbGFjZQotICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfUmVzaXplCi0gIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9TZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfU3BsaXQKLSAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2gKLSAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZQotICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zMi5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAotICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zMi5QeVVuaWNvZGVfRGVjb2RlVVRGNwotICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjMyLlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKLSAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zMi5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zMi5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKLSAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzIuUHlVbmljb2RlX0ludGVybkluUGxhY2UKLSAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzIuUHlVbmljb2RlX1R5cGUgREFUQQotICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjMyLlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQotICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzIuUHlXZWFrcmVmX05ld1Byb3h5Ci0gIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzIuUHlXZWFrcmVmX05ld1JlZgotICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjMyLlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQotICBQeVdyYXBwZXJfTmV3PXB5dGhvbjMyLlB5V3JhcHBlcl9OZXcKLSAgUHlaaXBfVHlwZT1weXRob24zMi5QeVppcF9UeXBlIERBVEEKLSAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzIuUHlfQWRkUGVuZGluZ0NhbGwKLSAgUHlfQXRFeGl0PXB5dGhvbjMyLlB5X0F0RXhpdAotICBQeV9CdWlsZFZhbHVlPXB5dGhvbjMyLlB5X0J1aWxkVmFsdWUKLSAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zMi5QeV9Db21waWxlU3RyaW5nCi0gIFB5X0RlY1JlZj1weXRob24zMi5QeV9EZWNSZWYKLSAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzIuUHlfRW5kSW50ZXJwcmV0ZXIKLSAgUHlfRXhpdD1weXRob24zMi5QeV9FeGl0Ci0gIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzIuUHlfRmF0YWxFcnJvcgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjMyLlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9GaW5hbGl6ZT1weXRob24zMi5QeV9GaW5hbGl6ZQotICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzIuUHlfR2V0QnVpbGRJbmZvCi0gIFB5X0dldENvbXBpbGVyPXB5dGhvbjMyLlB5X0dldENvbXBpbGVyCi0gIFB5X0dldENvcHlyaWdodD1weXRob24zMi5QeV9HZXRDb3B5cmlnaHQKLSAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zMi5QeV9HZXRFeGVjUHJlZml4Ci0gIFB5X0dldFBhdGg9cHl0aG9uMzIuUHlfR2V0UGF0aAotICBQeV9HZXRQbGF0Zm9ybT1weXRob24zMi5QeV9HZXRQbGF0Zm9ybQotICBQeV9HZXRQcmVmaXg9cHl0aG9uMzIuUHlfR2V0UHJlZml4Ci0gIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zMi5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLSAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzIuUHlfR2V0UHJvZ3JhbU5hbWUKLSAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zMi5QeV9HZXRQeXRob25Ib21lCi0gIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjMyLlB5X0dldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X0dldFZlcnNpb249cHl0aG9uMzIuUHlfR2V0VmVyc2lvbgotICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjMyLlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9JbmNSZWY9cHl0aG9uMzIuUHlfSW5jUmVmCi0gIFB5X0luaXRpYWxpemU9cHl0aG9uMzIuUHlfSW5pdGlhbGl6ZQotICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzIuUHlfSW5pdGlhbGl6ZUV4Ci0gIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzIuUHlfSXNJbml0aWFsaXplZAotICBQeV9NYWluPXB5dGhvbjMyLlB5X01haW4KLSAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zMi5QeV9NYWtlUGVuZGluZ0NhbGxzCi0gIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjMyLlB5X05ld0ludGVycHJldGVyCi0gIFB5X1JlcHJFbnRlcj1weXRob24zMi5QeV9SZXByRW50ZXIKLSAgUHlfUmVwckxlYXZlPXB5dGhvbjMyLlB5X1JlcHJMZWF2ZQotICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zMi5QeV9TZXRQcm9ncmFtTmFtZQotICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjMyLlB5X1NldFB5dGhvbkhvbWUKLSAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzIuUHlfU2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzIuUHlfU3ltdGFibGVTdHJpbmcKLSAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjMyLlB5X1ZhQnVpbGRWYWx1ZQotICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjMyLl9QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zMi5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi0gIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjMyLl9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi0gIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzIuX1B5T2JqZWN0X0dDX01hbGxvYwotICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjMyLl9QeU9iamVjdF9HQ19OZXcKLSAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zMi5fUHlPYmplY3RfR0NfTmV3VmFyCi0gIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzIuX1B5T2JqZWN0X0dDX1Jlc2l6ZQotICBfUHlPYmplY3RfTmV3PXB5dGhvbjMyLl9QeU9iamVjdF9OZXcKLSAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zMi5fUHlPYmplY3RfTmV3VmFyCi0gIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zMi5fUHlTdGF0ZV9BZGRNb2R1bGUKLSAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zMi5fUHlUaHJlYWRTdGF0ZV9Jbml0Ci0gIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjMyLl9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi0gIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zMi5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQotICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zMi5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCi0gIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjMyLl9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzIuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjMyLl9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zMi5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zMi5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zMi5fUHlfQnVpbGRWYWx1ZV9TaXplVAotICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zMi5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCi0gIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzIuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAotICBfUHlfRGVhbGxvYz1weXRob24zMi5fUHlfRGVhbGxvYwotICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzIuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKLSAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjMyLl9QeV9GYWxzZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob25lU3RydWN0PXB5dGhvbjMyLl9QeV9Ob25lU3RydWN0IERBVEEKLSAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjMyLl9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCi0gIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzIuX1B5X1N3YXBwZWRPcCBEQVRBCi0gIF9QeV9UcnVlU3RydWN0PXB5dGhvbjMyLl9QeV9UcnVlU3RydWN0IERBVEEKLSAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zMi5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjMzLlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzMuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzMuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjMzLlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzMuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zMy5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzMuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjMzLlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjMzLlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zMy5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjMzLlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzMuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzMuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zMy5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zMy5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zMy5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjMzLlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjMzLlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjMzLlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zMy5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zMy5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zMy5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjMzLlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzMuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zMy5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zMy5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzMuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zMy5QeUNGdW5jdGlvbl9OZXdFeAorICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQorICBQeUNhbGxJdGVyX05ldz1weXRob24zMy5QeUNhbGxJdGVyX05ldworICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzMuUHlDYWxsSXRlcl9UeXBlIERBVEEKKyAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zMy5QeUNhbGxhYmxlX0NoZWNrCisgIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXROYW1lCisgIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzMuUHlDYXBzdWxlX0ltcG9ydAorICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zMy5QeUNhcHN1bGVfSXNWYWxpZAorICBQeUNhcHN1bGVfTmV3PXB5dGhvbjMzLlB5Q2Fwc3VsZV9OZXcKKyAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzMuUHlDYXBzdWxlX1NldENvbnRleHQKKyAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzMuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzMuUHlDYXBzdWxlX1NldE5hbWUKKyAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzMuUHlDYXBzdWxlX1NldFBvaW50ZXIKKyAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzMuUHlDYXBzdWxlX1R5cGUgREFUQQorICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zMy5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zMy5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzMuUHlDb2RlY19EZWNvZGUKKyAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfRGVjb2RlcgorICBQeUNvZGVjX0VuY29kZT1weXRob24zMy5QeUNvZGVjX0VuY29kZQorICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzMuUHlDb2RlY19FbmNvZGVyCisgIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfSWdub3JlRXJyb3JzCisgIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCisgIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCisgIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zMy5QeUNvZGVjX0tub3duRW5jb2RpbmcKKyAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zMy5QeUNvZGVjX0xvb2t1cEVycm9yCisgIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzMuUHlDb2RlY19SZWdpc3RlcgorICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzMuUHlDb2RlY19SZWdpc3RlckVycm9yCisgIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zMy5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzMuUHlDb2RlY19TdHJlYW1SZWFkZXIKKyAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzMuUHlDb2RlY19TdHJlYW1Xcml0ZXIKKyAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19TdHJpY3RFcnJvcnMKKyAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zMy5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCisgIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zMy5QeUNvbXBsZXhfRnJvbURvdWJsZXMKKyAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zMy5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCisgIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzMuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQorICBQeUNvbXBsZXhfVHlwZT1weXRob24zMy5QeUNvbXBsZXhfVHlwZSBEQVRBCisgIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzMuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAorICBQeURlc2NyX05ld0dldFNldD1weXRob24zMy5QeURlc2NyX05ld0dldFNldAorICBQeURlc2NyX05ld01lbWJlcj1weXRob24zMy5QeURlc2NyX05ld01lbWJlcgorICBQeURlc2NyX05ld01ldGhvZD1weXRob24zMy5QeURlc2NyX05ld01ldGhvZAorICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZW1zX1R5cGUgREFUQQorICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQorICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzMuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzMuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQorICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzMuUHlEaWN0S2V5c19UeXBlIERBVEEKKyAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjMzLlB5RGljdFByb3h5X05ldworICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjMzLlB5RGljdFByb3h5X1R5cGUgREFUQQorICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zMy5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5RGljdF9DbGVhcj1weXRob24zMy5QeURpY3RfQ2xlYXIKKyAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjMzLlB5RGljdF9Db250YWlucworICBQeURpY3RfQ29weT1weXRob24zMy5QeURpY3RfQ29weQorICBQeURpY3RfRGVsSXRlbT1weXRob24zMy5QeURpY3RfRGVsSXRlbQorICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zMy5QeURpY3RfRGVsSXRlbVN0cmluZworICBQeURpY3RfR2V0SXRlbT1weXRob24zMy5QeURpY3RfR2V0SXRlbQorICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zMy5QeURpY3RfR2V0SXRlbVN0cmluZworICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zMy5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgorICBQeURpY3RfSXRlbXM9cHl0aG9uMzMuUHlEaWN0X0l0ZW1zCisgIFB5RGljdF9LZXlzPXB5dGhvbjMzLlB5RGljdF9LZXlzCisgIFB5RGljdF9NZXJnZT1weXRob24zMy5QeURpY3RfTWVyZ2UKKyAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzMuUHlEaWN0X01lcmdlRnJvbVNlcTIKKyAgUHlEaWN0X05ldz1weXRob24zMy5QeURpY3RfTmV3CisgIFB5RGljdF9OZXh0PXB5dGhvbjMzLlB5RGljdF9OZXh0CisgIFB5RGljdF9TZXRJdGVtPXB5dGhvbjMzLlB5RGljdF9TZXRJdGVtCisgIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5RGljdF9TZXRJdGVtU3RyaW5nCisgIFB5RGljdF9TaXplPXB5dGhvbjMzLlB5RGljdF9TaXplCisgIFB5RGljdF9UeXBlPXB5dGhvbjMzLlB5RGljdF9UeXBlIERBVEEKKyAgUHlEaWN0X1VwZGF0ZT1weXRob24zMy5QeURpY3RfVXBkYXRlCisgIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzMuUHlEaWN0X1ZhbHVlcworICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzMuUHlFbGxpcHNpc19UeXBlIERBVEEKKyAgUHlFbnVtX1R5cGU9cHl0aG9uMzMuUHlFbnVtX1R5cGUgREFUQQorICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zMy5QeUVycl9CYWRBcmd1bWVudAorICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzMuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zMy5QeUVycl9DaGVja1NpZ25hbHMKKyAgUHlFcnJfQ2xlYXI9cHl0aG9uMzMuUHlFcnJfQ2xlYXIKKyAgUHlFcnJfRGlzcGxheT1weXRob24zMy5QeUVycl9EaXNwbGF5CisgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzMuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9GZXRjaD1weXRob24zMy5QeUVycl9GZXRjaAorICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzMuUHlFcnJfRm9ybWF0CisgIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zMy5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjMzLlB5RXJyX05ld0V4Y2VwdGlvbgorICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjMzLlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKKyAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzMuUHlFcnJfTm9NZW1vcnkKKyAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjMzLlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgorICBQeUVycl9PY2N1cnJlZD1weXRob24zMy5QeUVycl9PY2N1cnJlZAorICBQeUVycl9QcmludD1weXRob24zMy5QeUVycl9QcmludAorICBQeUVycl9QcmludEV4PXB5dGhvbjMzLlB5RXJyX1ByaW50RXgKKyAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzMuUHlFcnJfUHJvZ3JhbVRleHQKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zMy5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zMy5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjMzLlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzMuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEludGVycnVwdD1weXRob24zMy5QeUVycl9TZXRJbnRlcnJ1cHQKKyAgUHlFcnJfU2V0Tm9uZT1weXRob24zMy5QeUVycl9TZXROb25lCisgIFB5RXJyX1NldE9iamVjdD1weXRob24zMy5QeUVycl9TZXRPYmplY3QKKyAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjMzLlB5RXJyX1NldFN0cmluZworICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zMy5QeUVycl9TeW50YXhMb2NhdGlvbgorICBQeUVycl9XYXJuRXg9cHl0aG9uMzMuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zMy5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zMy5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zMy5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjMzLlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zMy5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjMzLlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzMuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzMuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjMzLlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zMy5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjMzLlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjMzLlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzMuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzMuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzMuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zMy5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjMzLlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zMy5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjMzLlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjMzLlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zMy5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzMuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzMuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzMuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzMuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zMy5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzMuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjMzLlB5RXhjX0J1ZmZlckVycm9yIERBVEEKKyAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCisgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zMy5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19FT0ZFcnJvcj1weXRob24zMy5QeUV4Y19FT0ZFcnJvciBEQVRBCisgIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzMuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCisgIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zMy5QeUV4Y19FeGNlcHRpb24gREFUQQorICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzMuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKKyAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zMy5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKKyAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zMy5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKKyAgUHlFeGNfSU9FcnJvcj1weXRob24zMy5QeUV4Y19JT0Vycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzMuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQorICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjMzLlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQorICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjMzLlB5RXhjX0luZGV4RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zMy5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjMzLlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzMuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zMy5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zMy5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQorICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzMuUHlFeGNfTmFtZUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zMy5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zMy5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zMy5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zMy5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjMzLlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCisgIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjMzLlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjMzLlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zMy5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzMuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zMy5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzMuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjMzLlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjMzLlB5RXhjX1R5cGVFcnJvciBEQVRBCisgIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjMzLlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKKyAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzMuUHlFeGNfVXNlcldhcm5pbmcgREFUQQorICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjMzLlB5RXhjX1ZhbHVlRXJyb3IgREFUQQorICBQeUV4Y19XYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1dhcm5pbmcgREFUQQorICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zMy5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCisgIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjMzLlB5RXhjZXB0aW9uX0dldENhdXNlCisgIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzMuUHlFeGNlcHRpb25fR2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzMuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCisgIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjMzLlB5RXhjZXB0aW9uX1NldENhdXNlCisgIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzMuUHlFeGNlcHRpb25fU2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzMuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCisgIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzMuUHlGaWxlX0Zyb21GZAorICBQeUZpbGVfR2V0TGluZT1weXRob24zMy5QeUZpbGVfR2V0TGluZQorICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzMuUHlGaWxlX1dyaXRlT2JqZWN0CisgIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zMy5QeUZpbGVfV3JpdGVTdHJpbmcKKyAgUHlGaWx0ZXJfVHlwZT1weXRob24zMy5QeUZpbHRlcl9UeXBlIERBVEEKKyAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zMy5QeUZsb2F0X0FzRG91YmxlCisgIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zMy5QeUZsb2F0X0Zyb21Eb3VibGUKKyAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5RmxvYXRfRnJvbVN0cmluZworICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzMuUHlGbG9hdF9HZXRJbmZvCisgIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjMzLlB5RmxvYXRfR2V0TWF4CisgIFB5RmxvYXRfR2V0TWluPXB5dGhvbjMzLlB5RmxvYXRfR2V0TWluCisgIFB5RmxvYXRfVHlwZT1weXRob24zMy5QeUZsb2F0X1R5cGUgREFUQQorICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzMuUHlGcm96ZW5TZXRfTmV3CisgIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzMuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCisgIFB5R0NfQ29sbGVjdD1weXRob24zMy5QeUdDX0NvbGxlY3QKKyAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzMuUHlHSUxTdGF0ZV9FbnN1cmUKKyAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzMuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKKyAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjMzLlB5R0lMU3RhdGVfUmVsZWFzZQorICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzMuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKKyAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0FkZE1vZHVsZQorICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjMzLlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKKyAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zMy5QeUltcG9ydF9DbGVhbnVwCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzMuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzMuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCisgIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjMzLlB5SW1wb3J0X0dldEltcG9ydGVyCisgIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjMzLlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCisgIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjMzLlB5SW1wb3J0X0dldE1hZ2ljVGFnCisgIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzMuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAorICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0CisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zMy5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zMy5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzMuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzMuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjMzLlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzMuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjMzLlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zMy5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjMzLlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzMuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzMuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjMzLlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjMzLlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zMy5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjMzLlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjMzLlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zMy5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzMuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzMuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzMuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zMy5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zMy5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zMy5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zMy5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zMy5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zMy5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zMy5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjMzLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjMzLlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzMuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzMuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjMzLlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zMy5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zMy5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzMuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzMuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjMzLlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzMuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzMuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjMzLlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjMzLlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zMy5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjMzLlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzMuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zMy5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0ZyZWU9cHl0aG9uMzMuUHlNZW1fRnJlZQorICBQeU1lbV9NYWxsb2M9cHl0aG9uMzMuUHlNZW1fTWFsbG9jCisgIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzMuUHlNZW1fUmVhbGxvYworICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzMuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzMuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKKyAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzMuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQorICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzMuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzMuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjMzLlB5TW9kdWxlX0FkZE9iamVjdAorICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zMy5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAorICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjMzLlB5TW9kdWxlX0NyZWF0ZTIKKyAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjMzLlB5TW9kdWxlX0dldERlZgorICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjMzLlB5TW9kdWxlX0dldERpY3QKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzMuUHlNb2R1bGVfR2V0RmlsZW5hbWUKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzMuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKKyAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zMy5QeU1vZHVsZV9HZXROYW1lCisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjMzLlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zMy5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfVHlwZT1weXRob24zMy5QeU1vZHVsZV9UeXBlIERBVEEKKyAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zMy5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKKyAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzMuUHlOdW1iZXJfQWJzb2x1dGUKKyAgUHlOdW1iZXJfQWRkPXB5dGhvbjMzLlB5TnVtYmVyX0FkZAorICBQeU51bWJlcl9BbmQ9cHl0aG9uMzMuUHlOdW1iZXJfQW5kCisgIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zMy5QeU51bWJlcl9Bc1NzaXplX3QKKyAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzMuUHlOdW1iZXJfQ2hlY2sKKyAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjMzLlB5TnVtYmVyX0Rpdm1vZAorICBQeU51bWJlcl9GbG9hdD1weXRob24zMy5QeU51bWJlcl9GbG9hdAorICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zMy5QeU51bWJlcl9GbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VBZGQKKyAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlQW5kCisgIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zMy5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlTHNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zMy5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKKyAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VPcgorICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCisgIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgorICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAorICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zMy5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQorICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VYb3IKKyAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzMuUHlOdW1iZXJfSW5kZXgKKyAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjMzLlB5TnVtYmVyX0ludmVydAorICBQeU51bWJlcl9Mb25nPXB5dGhvbjMzLlB5TnVtYmVyX0xvbmcKKyAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjMzLlB5TnVtYmVyX0xzaGlmdAorICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zMy5QeU51bWJlcl9NdWx0aXBseQorICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zMy5QeU51bWJlcl9OZWdhdGl2ZQorICBQeU51bWJlcl9Pcj1weXRob24zMy5QeU51bWJlcl9PcgorICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zMy5QeU51bWJlcl9Qb3NpdGl2ZQorICBQeU51bWJlcl9Qb3dlcj1weXRob24zMy5QeU51bWJlcl9Qb3dlcgorICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzMuUHlOdW1iZXJfUmVtYWluZGVyCisgIFB5TnVtYmVyX1JzaGlmdD1weXRob24zMy5QeU51bWJlcl9Sc2hpZnQKKyAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzMuUHlOdW1iZXJfU3VidHJhY3QKKyAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjMzLlB5TnVtYmVyX1RvQmFzZQorICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjMzLlB5TnVtYmVyX1RydWVEaXZpZGUKKyAgUHlOdW1iZXJfWG9yPXB5dGhvbjMzLlB5TnVtYmVyX1hvcgorICBQeU9TX0FmdGVyRm9yaz1weXRob24zMy5QeU9TX0FmdGVyRm9yaworICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjMzLlB5T1NfSW5pdEludGVycnVwdHMKKyAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzMuUHlPU19JbnB1dEhvb2sgREFUQQorICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjMzLlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKKyAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zMy5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKKyAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjMzLlB5T1NfZG91YmxlX3RvX3N0cmluZworICBQeU9TX2dldHNpZz1weXRob24zMy5QeU9TX2dldHNpZworICBQeU9TX215c3RyaWNtcD1weXRob24zMy5QeU9TX215c3RyaWNtcAorICBQeU9TX215c3RybmljbXA9cHl0aG9uMzMuUHlPU19teXN0cm5pY21wCisgIFB5T1Nfc2V0c2lnPXB5dGhvbjMzLlB5T1Nfc2V0c2lnCisgIFB5T1Nfc25wcmludGY9cHl0aG9uMzMuUHlPU19zbnByaW50ZgorICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzMuUHlPU19zdHJpbmdfdG9fZG91YmxlCisgIFB5T1Nfc3RydG9sPXB5dGhvbjMzLlB5T1Nfc3RydG9sCisgIFB5T1Nfc3RydG91bD1weXRob24zMy5QeU9TX3N0cnRvdWwKKyAgUHlPU192c25wcmludGY9cHl0aG9uMzMuUHlPU192c25wcmludGYKKyAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzMuUHlPYmplY3RfQVNDSUkKKyAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgorICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjMzLlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKKyAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKKyAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzMuUHlPYmplY3RfQnl0ZXMKKyAgUHlPYmplY3RfQ2FsbD1weXRob24zMy5QeU9iamVjdF9DYWxsCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zMy5QeU9iamVjdF9DYWxsRnVuY3Rpb24KKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zMy5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbE1ldGhvZAorICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zMy5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncworICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxPYmplY3QKKyAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjMzLlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKKyAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zMy5QeU9iamVjdF9EZWxJdGVtCisgIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfRGVsSXRlbVN0cmluZworICBQeU9iamVjdF9EaXI9cHl0aG9uMzMuUHlPYmplY3RfRGlyCisgIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zMy5QeU9iamVjdF9Gb3JtYXQKKyAgUHlPYmplY3RfRnJlZT1weXRob24zMy5QeU9iamVjdF9GcmVlCisgIFB5T2JqZWN0X0dDX0RlbD1weXRob24zMy5QeU9iamVjdF9HQ19EZWwKKyAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzMuUHlPYmplY3RfR0NfVHJhY2sKKyAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zMy5QeU9iamVjdF9HQ19VblRyYWNrCisgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzMuUHlPYmplY3RfR2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjMzLlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zMy5QeU9iamVjdF9HZXRJdGVtCisgIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzMuUHlPYmplY3RfR2V0SXRlcgorICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0hhc0F0dHIKKyAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zMy5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzMuUHlPYmplY3RfSGFzaAorICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzMuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCisgIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzMuUHlPYmplY3RfSW5pdAorICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjMzLlB5T2JqZWN0X0luaXRWYXIKKyAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zMy5QeU9iamVjdF9Jc0luc3RhbmNlCisgIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzMuUHlPYmplY3RfSXNTdWJjbGFzcworICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzMuUHlPYmplY3RfSXNUcnVlCisgIFB5T2JqZWN0X0xlbmd0aD1weXRob24zMy5QeU9iamVjdF9MZW5ndGgKKyAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjMzLlB5T2JqZWN0X01hbGxvYworICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzMuUHlPYmplY3RfTm90CisgIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzMuUHlPYmplY3RfUmVhbGxvYworICBQeU9iamVjdF9SZXByPXB5dGhvbjMzLlB5T2JqZWN0X1JlcHIKKyAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzMuUHlPYmplY3RfUmljaENvbXBhcmUKKyAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjMzLlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAorICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zMy5QeU9iamVjdF9TZWxmSXRlcgorICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X1NldEF0dHIKKyAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zMy5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzMuUHlPYmplY3RfU2V0SXRlbQorICBQeU9iamVjdF9TaXplPXB5dGhvbjMzLlB5T2JqZWN0X1NpemUKKyAgUHlPYmplY3RfU3RyPXB5dGhvbjMzLlB5T2JqZWN0X1N0cgorICBQeU9iamVjdF9UeXBlPXB5dGhvbjMzLlB5T2JqZWN0X1R5cGUgREFUQQorICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zMy5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncworICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjMzLlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjMzLlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzMuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zMy5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzMuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zMy5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjMzLlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zMy5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjMzLlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzMuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjMzLlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjMzLlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjMzLlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjMzLlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzMuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzMuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjMzLlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjMzLlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzMuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzMuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zMy5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzMuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjMzLlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zMy5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zMy5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zMy5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zMy5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjMzLlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjMzLlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zMy5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zMy5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjMzLlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjMzLlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzMuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzMuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjMzLlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzMuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjMzLlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjMzLlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zMy5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzMuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjMzLlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zMy5QeVN0YXRlX0FkZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zMy5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzMuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzMuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zMy5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjMzLlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zMy5QeVN5c19Gb3JtYXRTdGRlcnIKKyAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjMzLlB5U3lzX0Zvcm1hdFN0ZG91dAorICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzMuUHlTeXNfR2V0T2JqZWN0CisgIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjMzLlB5U3lzX0hhc1dhcm5PcHRpb25zCisgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzMuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucworICBQeVN5c19TZXRBcmd2PXB5dGhvbjMzLlB5U3lzX1NldEFyZ3YKKyAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjMzLlB5U3lzX1NldEFyZ3ZFeAorICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzMuUHlTeXNfU2V0T2JqZWN0CisgIFB5U3lzX1NldFBhdGg9cHl0aG9uMzMuUHlTeXNfU2V0UGF0aAorICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zMy5QeVN5c19Xcml0ZVN0ZGVycgorICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zMy5QeVN5c19Xcml0ZVN0ZG91dAorICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfQ2xlYXIKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9EZWxldGUKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAorICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zMy5QeVRocmVhZFN0YXRlX0dldAorICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9HZXREaWN0CisgIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfTmV3CisgIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YworICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9Td2FwCisgIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzMuUHlUcmFjZUJhY2tfSGVyZQorICBQeVRyYWNlQmFja19QcmludD1weXRob24zMy5QeVRyYWNlQmFja19QcmludAorICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjMzLlB5VHJhY2VCYWNrX1R5cGUgREFUQQorICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjMzLlB5VHVwbGVJdGVyX1R5cGUgREFUQQorICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzMuUHlUdXBsZV9DbGVhckZyZWVMaXN0CisgIFB5VHVwbGVfR2V0SXRlbT1weXRob24zMy5QeVR1cGxlX0dldEl0ZW0KKyAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zMy5QeVR1cGxlX0dldFNsaWNlCisgIFB5VHVwbGVfTmV3PXB5dGhvbjMzLlB5VHVwbGVfTmV3CisgIFB5VHVwbGVfUGFjaz1weXRob24zMy5QeVR1cGxlX1BhY2sKKyAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjMzLlB5VHVwbGVfU2V0SXRlbQorICBQeVR1cGxlX1NpemU9cHl0aG9uMzMuUHlUdXBsZV9TaXplCisgIFB5VHVwbGVfVHlwZT1weXRob24zMy5QeVR1cGxlX1R5cGUgREFUQQorICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zMy5QeVR5cGVfQ2xlYXJDYWNoZQorICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzMuUHlUeXBlX0Zyb21TcGVjCisgIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zMy5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKKyAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zMy5QeVR5cGVfR2VuZXJpY0FsbG9jCisgIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjMzLlB5VHlwZV9HZW5lcmljTmV3CisgIFB5VHlwZV9HZXRGbGFncz1weXRob24zMy5QeVR5cGVfR2V0RmxhZ3MKKyAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zMy5QeVR5cGVfSXNTdWJ0eXBlCisgIFB5VHlwZV9Nb2RpZmllZD1weXRob24zMy5QeVR5cGVfTW9kaWZpZWQKKyAgUHlUeXBlX1JlYWR5PXB5dGhvbjMzLlB5VHlwZV9SZWFkeQorICBQeVR5cGVfVHlwZT1weXRob24zMy5QeVR5cGVfVHlwZSBEQVRBCisgIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzMuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9BcHBlbmQKKyAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAorICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZworICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzTGF0aW4xU3RyaW5nCisgIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZworICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyCisgIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ2xlYXJGcmVlbGlzdAorICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NvbmNhdAorICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db250YWlucworICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlCisgIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUFTQ0lJCisgIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQorICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgorICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRlNEZWNvZGVyCisgIFB5VW5pY29kZV9GaW5kPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRmluZAorICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKKyAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tV2lkZUNoYXIKKyAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0dldFNpemUKKyAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgorICBQeVVuaWNvZGVfSm9pbj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbgorICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JTcGxpdAorICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JlcGxhY2UKKyAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1Jlc2l6ZQorICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SaWNoQ29tcGFyZQorICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfU2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9TcGxpdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1NwbGl0CisgIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfU3BsaXRsaW5lcworICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfVGFpbG1hdGNoCisgIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKKyAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzMuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKKyAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzMuUHlVbmljb2RlX0RlY29kZVVURjcKKyAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCisgIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzMuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZworICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzMuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCisgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjMzLlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCisgIFB5VW5pY29kZV9UeXBlPXB5dGhvbjMzLlB5VW5pY29kZV9UeXBlIERBVEEKKyAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zMy5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKKyAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjMzLlB5V2Vha3JlZl9OZXdQcm94eQorICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjMzLlB5V2Vha3JlZl9OZXdSZWYKKyAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zMy5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlXcmFwcGVyX05ldz1weXRob24zMy5QeVdyYXBwZXJfTmV3CisgIFB5WmlwX1R5cGU9cHl0aG9uMzMuUHlaaXBfVHlwZSBEQVRBCisgIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjMzLlB5X0FkZFBlbmRpbmdDYWxsCisgIFB5X0F0RXhpdD1weXRob24zMy5QeV9BdEV4aXQKKyAgUHlfQnVpbGRWYWx1ZT1weXRob24zMy5QeV9CdWlsZFZhbHVlCisgIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzMuUHlfQ29tcGlsZVN0cmluZworICBQeV9EZWNSZWY9cHl0aG9uMzMuUHlfRGVjUmVmCisgIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjMzLlB5X0VuZEludGVycHJldGVyCisgIFB5X0V4aXQ9cHl0aG9uMzMuUHlfRXhpdAorICBQeV9GYXRhbEVycm9yPXB5dGhvbjMzLlB5X0ZhdGFsRXJyb3IKKyAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfRmluYWxpemU9cHl0aG9uMzMuUHlfRmluYWxpemUKKyAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjMzLlB5X0dldEJ1aWxkSW5mbworICBQeV9HZXRDb21waWxlcj1weXRob24zMy5QeV9HZXRDb21waWxlcgorICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzMuUHlfR2V0Q29weXJpZ2h0CisgIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzMuUHlfR2V0RXhlY1ByZWZpeAorICBQeV9HZXRQYXRoPXB5dGhvbjMzLlB5X0dldFBhdGgKKyAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzMuUHlfR2V0UGxhdGZvcm0KKyAgUHlfR2V0UHJlZml4PXB5dGhvbjMzLlB5X0dldFByZWZpeAorICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzMuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCisgIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjMzLlB5X0dldFByb2dyYW1OYW1lCisgIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzMuUHlfR2V0UHl0aG9uSG9tZQorICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zMy5QeV9HZXRSZWN1cnNpb25MaW1pdAorICBQeV9HZXRWZXJzaW9uPXB5dGhvbjMzLlB5X0dldFZlcnNpb24KKyAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfSW5jUmVmPXB5dGhvbjMzLlB5X0luY1JlZgorICBQeV9Jbml0aWFsaXplPXB5dGhvbjMzLlB5X0luaXRpYWxpemUKKyAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjMzLlB5X0luaXRpYWxpemVFeAorICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjMzLlB5X0lzSW5pdGlhbGl6ZWQKKyAgUHlfTWFpbj1weXRob24zMy5QeV9NYWluCisgIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzMuUHlfTWFrZVBlbmRpbmdDYWxscworICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zMy5QeV9OZXdJbnRlcnByZXRlcgorICBQeV9SZXByRW50ZXI9cHl0aG9uMzMuUHlfUmVwckVudGVyCisgIFB5X1JlcHJMZWF2ZT1weXRob24zMy5QeV9SZXByTGVhdmUKKyAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzMuUHlfU2V0UHJvZ3JhbU5hbWUKKyAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zMy5QeV9TZXRQeXRob25Ib21lCisgIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjMzLlB5X1NldFJlY3Vyc2lvbkxpbWl0CisgIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjMzLlB5X1N5bXRhYmxlU3RyaW5nCisgIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zMy5QeV9WYUJ1aWxkVmFsdWUKKyAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMy5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzMuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAorICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zMy5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjMzLl9QeU9iamVjdF9HQ19NYWxsb2MKKyAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zMy5fUHlPYmplY3RfR0NfTmV3CisgIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzMuX1B5T2JqZWN0X0dDX05ld1ZhcgorICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjMzLl9QeU9iamVjdF9HQ19SZXNpemUKKyAgX1B5T2JqZWN0X05ldz1weXRob24zMy5fUHlPYmplY3RfTmV3CisgIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzMuX1B5T2JqZWN0X05ld1ZhcgorICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzMuX1B5U3RhdGVfQWRkTW9kdWxlCisgIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzMuX1B5VGhyZWFkU3RhdGVfSW5pdAorICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zMy5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYworICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzMuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKKyAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzMuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQorICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zMy5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAorICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjMzLl9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KKyAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zMy5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzMuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzMuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzMuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzMuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQorICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjMzLl9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKKyAgX1B5X0RlYWxsb2M9cHl0aG9uMzMuX1B5X0RlYWxsb2MKKyAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjMzLl9QeV9FbGxpcHNpc09iamVjdCBEQVRBCisgIF9QeV9GYWxzZVN0cnVjdD1weXRob24zMy5fUHlfRmFsc2VTdHJ1Y3QgREFUQQorICBfUHlfTm9uZVN0cnVjdD1weXRob24zMy5fUHlfTm9uZVN0cnVjdCBEQVRBCisgIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zMy5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQorICBfUHlfU3dhcHBlZE9wPXB5dGhvbjMzLl9QeV9Td2FwcGVkT3AgREFUQQorICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zMy5fUHlfVHJ1ZVN0cnVjdCBEQVRBCisgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzMuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1BhcnNlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zMy5fUHlBcmdfVmFQYXJzZV9TaXplVAorICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMzLl9QeV9CdWlsZFZhbHVlX1NpemVUCmRpZmYgLS1naXQgYS9QQy9weXRob24zLm1hayBiL1BDL3B5dGhvbjMubWFrCmluZGV4IGE3ZjAxY2IuLjJlYzkxODUgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMubWFrCisrKyBiL1BDL3B5dGhvbjMubWFrCkBAIC0xLDEwICsxLDEwIEBACi0kKE91dERpcilweXRob24zLmRsbDoJcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzJzdHViLmxpYgotCWNsIC9MRCAvRmUkKE91dERpcilweXRob24zLmRsbCBweXRob24zZGxsLmMgcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzJzdHViLmxpYgorJChPdXREaXIpcHl0aG9uMy5kbGw6CXB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIKKwljbCAvTEQgL0ZlJChPdXREaXIpcHl0aG9uMy5kbGwgcHl0aG9uM2RsbC5jIHB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIKIAotJChPdXREaXIpcHl0aG9uMzJzdHViLmxpYjoJcHl0aG9uMzJzdHViLmRlZgotCWxpYiAvZGVmOnB5dGhvbjMyc3R1Yi5kZWYgL291dDokKE91dERpcilweXRob24zMnN0dWIubGliIC9NQUNISU5FOiQoTUFDSElORSkKKyQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWI6CXB5dGhvbjMzc3R1Yi5kZWYKKwlsaWIgL2RlZjpweXRob24zM3N0dWIuZGVmIC9vdXQ6JChPdXREaXIpcHl0aG9uMzNzdHViLmxpYiAvTUFDSElORTokKE1BQ0hJTkUpCiAKIGNsZWFuOgotCWRlbCAkKE91dERpcilweXRob24zLmRsbCAkKE91dERpcilweXRob24zLmxpYiAkKE91dERpcilweXRob24zMnN0dWIubGliICQoT3V0RGlyKXB5dGhvbjMuZXhwICQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5leHAKKwlkZWwgJChPdXREaXIpcHl0aG9uMy5kbGwgJChPdXREaXIpcHl0aG9uMy5saWIgJChPdXREaXIpcHl0aG9uMzNzdHViLmxpYiAkKE91dERpcilweXRob24zLmV4cCAkKE91dERpcilweXRob24zM3N0dWIuZXhwCiAKIHJlYnVpbGQ6IGNsZWFuICQoT3V0RGlyKXB5dGhvbjMuZGxsCmRpZmYgLS1naXQgYS9QQy9weXRob24zMmdlbi5weSBiL1BDL3B5dGhvbjMzZ2VuLnB5CnNpbWlsYXJpdHkgaW5kZXggNjMlCnJlbmFtZSBmcm9tIFBDL3B5dGhvbjMyZ2VuLnB5CnJlbmFtZSB0byBQQy9weXRob24zM2dlbi5weQppbmRleCA5MTgyZDU0Li4yMWI5ZjU2IDEwMDY0NAotLS0gYS9QQy9weXRob24zMmdlbi5weQorKysgYi9QQy9weXRob24zM2dlbi5weQpAQCAtMSwxOCArMSwyMCBAQAotIyBHZW5lcmF0ZSBweXRob24zMnN0dWIuZGVmIG91dCBvZiBweXRob24zLmRlZgorIyBHZW5lcmF0ZSBweXRob24zM3N0dWIuZGVmIG91dCBvZiBweXRob24zLmRlZgogIyBUaGUgcmVndWxhciBpbXBvcnQgbGlicmFyeSBjYW5ub3QgYmUgdXNlZCwKICMgc2luY2UgaXQgZG9lc24ndCBwcm92aWRlIHRoZSByaWdodCBzeW1ib2xzIGZvcgogIyBkYXRhIGZvcndhcmRpbmcKLW91dCA9IG9wZW4oInB5dGhvbjMyc3R1Yi5kZWYiLCAidyIpCi1vdXQud3JpdGUoJ0xJQlJBUlkgInB5dGhvbjMyIlxuJykKK291dCA9IG9wZW4oInB5dGhvbjMzc3R1Yi5kZWYiLCAidyIpCitvdXQud3JpdGUoJ0xJQlJBUlkgInB5dGhvbjMzIlxuJykKIG91dC53cml0ZSgnRVhQT1JUU1xuJykKIAogaW5wID0gb3BlbigicHl0aG9uMy5kZWYiKQotaW5wLnJlYWRsaW5lKCkKIGxpbmUgPSBpbnAucmVhZGxpbmUoKQord2hpbGUgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJzsnKToKKyAgICBsaW5lID0gaW5wLnJlYWRsaW5lKCkKK2xpbmUgPSBpbnAucmVhZGxpbmUoKSAjIExJQlJBUlkKIGFzc2VydCBsaW5lLnN0cmlwKCk9PSdFWFBPUlRTJwogCiBmb3IgbGluZSBpbiBpbnA6Ci0gICAgIyBTWU0xPXB5dGhvbjMyLlNZTTJbIERBVEFdCisgICAgIyBTWU0xPXB5dGhvbjMzLlNZTTJbIERBVEFdCiAgICAgaGVhZCwgdGFpbCA9IGxpbmUuc3BsaXQoJy4nKQogICAgIGlmICdEQVRBJyBpbiB0YWlsOgogICAgICAgICBzeW1ib2wsIHRhaWwgPSB0YWlsLnNwbGl0KCcgJykKQEAgLTIyLDQgKzI0LDMgQEAKIAogaW5wLmNsb3NlKCkKIG91dC5jbG9zZSgpCi0KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMyc3R1Yi5kZWYgYi9QQy9weXRob24zM3N0dWIuZGVmCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDL3B5dGhvbjMyc3R1Yi5kZWYKcmVuYW1lIHRvIFBDL3B5dGhvbjMzc3R1Yi5kZWYKaW5kZXggMDk0M2VmMC4uNWI4Y2NmNiAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMzJzdHViLmRlZgorKysgYi9QQy9weXRob24zM3N0dWIuZGVmCkBAIC0xLDQgKzEsNCBAQAotTElCUkFSWSAicHl0aG9uMzIiCitMSUJSQVJZICJweXRob24zMyIKIEVYUE9SVFMKIFB5QXJnX1BhcnNlCiBQeUFyZ19QYXJzZVR1cGxlCkBAIC00NzEsNiArNDcxLDggQEAKIFB5U2xpY2VfVHlwZQogUHlTb3J0V3JhcHBlcl9UeXBlCiBQeVN0YXRlX0ZpbmRNb2R1bGUKK1B5U3RhdGVfQWRkTW9kdWxlCitQeVN0YXRlX1JlbW92ZU1vZHVsZQogUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCiBQeVN0cnVjdFNlcXVlbmNlX05ldwogUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCkBAIC01MTEsNiArNTEzLDcgQEAKIFB5VHVwbGVfVHlwZQogUHlUeXBlX0NsZWFyQ2FjaGUKIFB5VHlwZV9Gcm9tU3BlYworUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCiBQeVR5cGVfR2VuZXJpY0FsbG9jCiBQeVR5cGVfR2VuZXJpY05ldwogUHlUeXBlX0dldEZsYWdzCkBAIC02ODcsMyArNjkwLDkgQEAKIF9QeV9Td2FwcGVkT3AKIF9QeV9UcnVlU3RydWN0CiBfUHlfVmFCdWlsZFZhbHVlX1NpemVUCitfUHlBcmdfUGFyc2VfU2l6ZVQKK19QeUFyZ19QYXJzZVR1cGxlX1NpemVUCitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCitfUHlBcmdfVmFQYXJzZV9TaXplVAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCitfUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX250LnJjIGIvUEMvcHl0aG9uX250LnJjCmluZGV4IDUyOTU2MTAuLjUwMTBiYWEgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9udC5yYworKysgYi9QQy9weXRob25fbnQucmMKQEAgLTEyLDcgKzEyLDcgQEAKICMgICBpbmNsdWRlICJweXRob25udF9yYy5oIgogI2VuZGlmCiAKLS8qIGUuZy4sIDIuMWEyCisvKiBlLmcuLCAzLjMuMGExCiAgKiBQWV9WRVJTSU9OIGNvbWVzIGZyb20gcGF0Y2hldmVsLmgKICAqLwogI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKZGlmZiAtLWdpdCBhL1BDL3JlYWRtZS50eHQgYi9QQy9yZWFkbWUudHh0CmluZGV4IGI1YTVhODcuLmZkYzA5YWIgMTAwNjQ0Ci0tLSBhL1BDL3JlYWRtZS50eHQKKysrIGIvUEMvcmVhZG1lLnR4dApAQCAtNjMsNyArNjMsNyBAQAogCiBweXRob25fbnQucmMgICBSZXNvdXJjZSBjb21waWxlciBpbnB1dCBmb3IgcHl0aG9uMTUuZGxsLgogCi1kbF9udC5jLCBpbXBvcnRfbnQuYworZGxfbnQuYwogICAgICAgICAgICAgICAgQWRkaXRpb25hbCBzb3VyY2VzIHVzZWQgZm9yIDMyLWJpdCBXaW5kb3dzIGZlYXR1cmVzLgogCiBnZXRwYXRocC5jICAgICBEZWZhdWx0IHN5cy5wYXRoIGNhbGN1bGF0aW9ucyAoZm9yIGFsbCBQQyBwbGF0Zm9ybXMpLgpkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCBlNGI5MzA3Li4zOGE5ZTY5IDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtODksNyArODksNyBAQAogImtleSBpcyB0aGUgcHJlZGVmaW5lZCBoYW5kbGUgdG8gY29ubmVjdCB0by5cbiIKICJcbiIKICJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiBQeURvY19TVFJWQVIoQ3JlYXRlS2V5X2RvYywKICJDcmVhdGVLZXkoa2V5LCBzdWJfa2V5KSAtPiBrZXlcbiIKQEAgLTEwNCw3ICsxMDQsNyBAQAogIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS5cbiIKICJcbiIKICJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiBQeURvY19TVFJWQVIoQ3JlYXRlS2V5RXhfZG9jLAogIkNyZWF0ZUtleUV4KGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQ9MCwgYWNjZXNzPUtFWV9XUklURSkgLT4ga2V5XG4iCkBAIC0xMjIsNyArMTIyLDcgQEAKICJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXlcbiIKICJcbiIKICJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiBQeURvY19TVFJWQVIoRGVsZXRlS2V5X2RvYywKICJEZWxldGVLZXkoa2V5LCBzdWJfa2V5KVxuIgpAQCAtMTM2LDcgKzEzNiw3IEBACiAiVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuXG4iCiAiXG4iCiAiSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLFxuIgotImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEgV2luZG93c0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisiaXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiBQeURvY19TVFJWQVIoRGVsZXRlS2V5RXhfZG9jLAogIkRlbGV0ZUtleUV4KGtleSwgc3ViX2tleSwgYWNjZXNzPUtFWV9XT1c2NF82NEtFWSwgcmVzZXJ2ZWQ9MClcbiIKQEAgLTE1Myw3ICsxNTMsNyBAQAogIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgogIlxuIgogIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKLSJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLlxuIgorImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbiIKICJPbiB1bnN1cHBvcnRlZCBXaW5kb3dzIHZlcnNpb25zLCBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4iKTsKIAogUHlEb2NfU1RSVkFSKERlbGV0ZVZhbHVlX2RvYywKQEAgLTE3MSw3ICsxNzEsNyBAQAogImluZGV4IGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUga2V5IHRvIHJldHJpZXZlLlxuIgogIlxuIgogIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgotIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXNcbiIKKyJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb24gaXNcbiIKICJyYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4iKTsKIAogUHlEb2NfU1RSVkFSKEVudW1WYWx1ZV9kb2MsCkBAIC0xODEsNyArMTgxLDcgQEAKICJpbmRleCBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlLlxuIgogIlxuIgogIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgotIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYSBXaW5kb3dzRXJyb3IgZXhjZXB0aW9uXG4iCisiSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhbiBPU0Vycm9yIGV4Y2VwdGlvblxuIgogImlzIHJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcy5cbiIKICJcbiIKICJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczpcbiIKQEAgLTI0MCw3ICsyNDAsNyBAQAogIiAgICAgICBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuICBEZWZhdWx0IGlzIEtFWV9SRUFEXG4iCiAiXG4iCiAiVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXlcbiIKLSJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEgV2luZG93c0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKIFB5RG9jX1NUUlZBUihPcGVuS2V5RXhfZG9jLCAiU2VlIE9wZW5LZXkoKSIpOwogCkBAIC03OTIsMjYgKzc5MiwyNyBAQAogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewotICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gMTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKyBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRSh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgRFdPUkQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRCwgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7Ci0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICB3Y3NjcHkoKHdjaGFyX3QgKikqcmV0RGF0YUJ1ZiwgTCIiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3Y3NjcHkoKHdjaGFyX3QgKikqcmV0RGF0YUJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUqKVB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHZhbHVlLCAmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90LCBEV09SRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKHdjaGFyX3QsIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAoKHdjaGFyX3QgKikqcmV0RGF0YUJ1ZilbMF0gPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gMSAqIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIGNhc2UgUkVHX01VTFRJX1NaOgogICAgICAgICAgICAgewpAQCAtODI4LDEwICs4MjksMTYgQEAKICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnQ7CisgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndzdHI7CisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworCiAgICAgICAgICAgICAgICAgICAgIHQgPSBQeUxpc3RfR0VUX0lURU0odmFsdWUsIGopOwogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBQeV9TQUZFX0RPV05DQVNUKDIgKyBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRSh0KSwKKyAgICAgICAgICAgICAgICAgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHQsICZsZW4pOworICAgICAgICAgICAgICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBzaXplICs9IFB5X1NBRkVfRE9XTkNBU1QoKGxlbiArIDEpICogc2l6ZW9mKHdjaGFyX3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBEV09SRCk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC04NDcsMTAgKzg1NCwxNSBAQAogICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdDsKKyAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd3N0cjsKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisKICAgICAgICAgICAgICAgICAgICAgdCA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZSwgaik7Ci0gICAgICAgICAgICAgICAgICAgIHdjc2NweShQLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0KSk7Ci0gICAgICAgICAgICAgICAgICAgIFAgKz0gMSArIHdjc2xlbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHQpKTsKKyAgICAgICAgICAgICAgICAgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHQsICZsZW4pOworICAgICAgICAgICAgICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICB3Y3NjcHkoUCwgd3N0cik7CisgICAgICAgICAgICAgICAgICAgIFAgKz0gKGxlbiArIDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBBbmQgZG91Ymx5LXRlcm1pbmF0ZSB0aGUgbGlzdC4uLiAqLwogICAgICAgICAgICAgICAgICpQID0gJ1wwJzsKQEAgLTkxNCw3ICs5MjYsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXREYXRhU2l6ZSAtPSAyOwogICAgICAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA8PSAwKQogICAgICAgICAgICAgICAgICAgICBkYXRhID0gTCIiOwotICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShkYXRhLCByZXREYXRhU2l6ZS8yKTsKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRhdGEsIHJldERhdGFTaXplLzIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICBjYXNlIFJFR19NVUxUSV9TWjoKQEAgLTk0NSw3ICs5NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9TZXRJdGVtKG9iRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzdHJbaW5kZXhdLCBsZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihzdHJbaW5kZXhdLCBsZW4pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJlZShzdHIpOwogCkBAIC0xMDg2LDcgKzEwOTgsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4gKi8KLSAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlKCJhZHZhcGkzMi5kbGwiKTsKKyAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwogICAgIGlmIChoTW9kKQogICAgICAgICBwZm4gPSAoUkRLRUZ1bmMpR2V0UHJvY0FkZHJlc3MoaE1vZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRGVsZXRlS2V5RXhXIik7CkBAIC0xMTU1LDcgKzExNjcsNyBAQAogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdFbnVtS2V5RXgiKTsKIAotICAgIHJldFN0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh0bXBidWYsIGxlbik7CisgICAgcmV0U3RyID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih0bXBidWYsIGxlbik7CiAgICAgcmV0dXJuIHJldFN0cjsgIC8qIGNhbiBiZSBOVUxMICovCiB9CiAKQEAgLTEyNDcsOCArMTI1OSw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUHlFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKnJldFZhbHVlID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICpzcmM7CisgICAgd2NoYXJfdCAqcmV0VmFsdWUgPSBOVUxMOworICAgIHdjaGFyX3QgKnNyYzsKICAgICBEV09SRCByZXRWYWx1ZVNpemU7CiAgICAgRFdPUkQgcmM7CiAgICAgUHlPYmplY3QgKm87CkBAIC0xMjYxLDcgKzEyNzMsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiKTsKICAgICB9Ci0gICAgcmV0VmFsdWUgPSAoUHlfVU5JQ09ERSAqKVB5TWVtX01hbGxvYyhyZXRWYWx1ZVNpemUgKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgIHJldFZhbHVlID0gKHdjaGFyX3QgKilQeU1lbV9NYWxsb2MocmV0VmFsdWVTaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZiAocmV0VmFsdWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CkBAIC0xMjcyLDcgKzEyODQsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiKTsKICAgICB9Ci0gICAgbyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShyZXRWYWx1ZSwgd2NzbGVuKHJldFZhbHVlKSk7CisgICAgbyA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmV0VmFsdWUsIHdjc2xlbihyZXRWYWx1ZSkpOwogICAgIFB5TWVtX0ZyZWUocmV0VmFsdWUpOwogICAgIHJldHVybiBvOwogfQpAQCAtMTQyNiw3ICsxNDM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdRdWVyeVZhbHVlIik7CiAgICAgfQogCi0gICAgcmV0U3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHJldEJ1Ziwgd2NzbGVuKHJldEJ1ZikpOworICAgIHJldFN0ciA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmV0QnVmLCB3Y3NsZW4ocmV0QnVmKSk7CiAgICAgUHlNZW1fRnJlZShyZXRCdWYpOwogICAgIHJldHVybiByZXRTdHI7CiB9CkBAIC0xNTU3LDcgKzE1NjksNyBAQAogewogICAgIEhLRVkgaEtleTsKICAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgUHlfVU5JQ09ERSAqdmFsdWVOYW1lOworICAgIHdjaGFyX3QgKnZhbHVlTmFtZTsKICAgICBQeU9iamVjdCAqb2JSZXM7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIEJZVEUgKmRhdGE7CkBAIC0xNjEwLDcgKzE2MjIsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwotICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGUoImFkdmFwaTMyLmRsbCIpOworICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CiAgICAgaWYgKGhNb2QpCiAgICAgICAgIHBmbiA9IChSRFJLRnVuYylHZXRQcm9jQWRkcmVzcyhoTW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0Rpc2FibGVSZWZsZWN0aW9uS2V5Iik7CkBAIC0xNjQ2LDcgKzE2NTgsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwotICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGUoImFkdmFwaTMyLmRsbCIpOworICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CiAgICAgaWYgKGhNb2QpCiAgICAgICAgIHBmbiA9IChSRVJLRnVuYylHZXRQcm9jQWRkcmVzcyhoTW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0VuYWJsZVJlZmxlY3Rpb25LZXkiKTsKQEAgLTE2ODMsNyArMTY5NSw3IEBACiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCi0gICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZSgiYWR2YXBpMzIuZGxsIik7CisgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKICAgICBpZiAoaE1vZCkKICAgICAgICAgcGZuID0gKFJRUktGdW5jKUdldFByb2NBZGRyZXNzKGhNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnUXVlcnlSZWZsZWN0aW9uS2V5Iik7CmRpZmYgLS1naXQgYS9QQy93aW5zb3VuZC5jIGIvUEMvd2luc291bmQuYwppbmRleCAxZWQ5NWJhLi5iNTY0ZWFiIDEwMDY0NAotLS0gYS9QQy93aW5zb3VuZC5jCisrKyBiL1BDL3dpbnNvdW5kLmMKQEAgLTcyLDcgKzcyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb3VuZF9wbGF5c291bmQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKndzb3VuZDsKKyAgICB3Y2hhcl90ICp3c291bmQ7CiAgICAgaW50IGZsYWdzOwogICAgIGludCBvazsKIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fYnoyLnZjeHByb2ogYi9QQ2J1aWxkL19iejIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg3ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fYnoyLnZjeHByb2oKQEAgLTAsMCArMSwyNjEgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5iejI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2J6Mm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJsb2Nrc29ydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcY29tcHJlc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGRlY29tcHJlc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxodWZmbWFuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWJfcHJpdmF0ZS5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fYnoyLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2J6Mi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFjNjRkZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2J6Mi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw0OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZjUzYTg1OWQtZGFkMi00ZDViLWFlNDEtZjI4ZDhiNTcxZjVhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57N2UwYmVkMDUtYWUzMy00M2I3LTg3OTctNjU2NDU1YmJiN2YzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWQ1NzRiODktNjk4My00Y2RmLTlmOTgtZmU3MDQ4ZDllODljfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iejJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJsb2Nrc29ydC5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWIuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGNvbXByZXNzLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcaHVmZm1hbi5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWIuaCI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IEhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IEhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyY2IxZgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCkBAIC0wLDAgKzEsMjk0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlczwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2Q3YTdiCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDY1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4MDYwODFlZS0yYWYwLTQ4ZDAtYTgzZS1lZTAyYTc0YmFhMGZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntkYmRlYTFmMi1hZDhiLTQ0Y2EtYjc4Mi1mY2Y2NWQ5MTU1OWJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0N1c3RvbUJ1aWxkPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWUyOTliCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE5MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9jdHlwZXNfdGVzdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWU5NGNlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhmZDcwMTE5LTU0ODEtNGU1ZC1iMTg3LWQwYjE0ZWIyN2UzOH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezM4YWJjNDg2LWUxNDMtNDlkYy04Y2YwLThhZWZhYjBlMGQzZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvaiBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGJhODFkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qCkBAIC0wLDAgKzEsMzA4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2RlY2ltYWw8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzsuLlxJbmNsdWRlOy4uXFBDOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGRvY3N0cmluZ3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHlwZWFyaXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2NvbXBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y3N0ZGludC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb250ZXh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtZW1vcnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZD4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE5YWEyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2YzNWE3OGE2LTNlZjAtNGUzNi1iZDhiLWFmYWVmMjJmYmI3Y308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEzODA4OWY4LWZhYmEtNDk0Zi1iNmVkLTA1MWYzMWZiYWYyZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiaXRzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcZG9jc3RyaW5ncy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHR5cGVhcml0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjY29tcGF0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNzdGRpbnQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb250ZXh0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xpby5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGQ+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ogYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MDJhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCkBAIC0wLDAgKzEsMjcwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2VsZW1lbnR0cmVlPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzgyOTUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw3MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjQzZDg2MDctZDAyNC00MGZlLTg1ODMtMTgyM2M5NjQzMGYwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57N2I1MzM1YWQtMDU5Zi00ODZmLTg1ZTQtZjQ3NTdlMjZhOWJmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MTk3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKQEAgLTAsMCArMSwxODggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2ZyZWV6ZV9pbXBvcnRsaWI8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnJlZXplX2ltcG9ydGxpYi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UHJpdmF0ZT50cnVlPC9Qcml2YXRlPgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgICAgPENvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+ZmFsc2U8L0NvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+CisgICAgICA8TGlua0xpYnJhcnlEZXBlbmRlbmNpZXM+dHJ1ZTwvTGlua0xpYnJhcnlEZXBlbmRlbmNpZXM+CisgICAgICA8VXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+ZmFsc2U8L1VzZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzPgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZWMxOTMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2ZyZWV6ZV9pbXBvcnRsaWIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvaiBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjQzM2VkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qCkBAIC0wLDAgKzEsMjgyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2hhc2hsaWI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2wudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDk5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjYzQ1OTYzZC1iZDI1LTRlYjgtYmRiYS1hNTUwNzA5MGJjYTR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMjVjODAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKQEAgLTAsMCArMSwyNTAgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5sem1hPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sem1hbW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19sem1hLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNWVkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19sem1hLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1M2U2OGVkYS0zOWZjLTQzMzYtYTY1OC1kYzVmNWQ1OTg3NjB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2x6bWFtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tc2kudmN4cHJvaiBiL1BDYnVpbGQvX21zaS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMjNkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19tc2kudmN4cHJvagpAQCAtMCwwICsxLDIyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9tc2k8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfbXNpLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tc2kudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fbXNpLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGVjNTJkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbXNpLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZGVmNzcxMC1lNDMzLTRhYzAtODRlMC0xNGYzNDQ1NGJkM2V9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXF9tc2kuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ2MzM3ZC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTU3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlQcm9qZWN0R1VJRD0iezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQotCVJvb3ROYW1lc3BhY2U9Il9tdWx0aXByb2Nlc3NpbmciDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xwaXBlX2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzb2NrZXRfY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHdpbjMyX2Z1bmN0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRiYjU2OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qCkBAIC0wLDAgKzEsMjMwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X211bHRpcHJvY2Vzc2luZzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMzNlYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjIzYzk1NmMtMTg5My00M2Q5LWE3ZGMtOTZlNGZlZjIwZjkzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MzQ2MTVhNjItZjk5OS00NjU5LTgzZjUtMTlkMTdhNjQ0NTMwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmN4cHJvaiBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzODM2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zb2NrZXQudmN4cHJvagpAQCAtMCwwICsxLDIyOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9zb2NrZXQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc29ja2V0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkwZmZhOAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MTQ1MjIwN2YtNzA3Yy00ZTg0LWI1MzItMzA3MTkzYTBmZDg1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MWVkZmUwZDAtN2I5ZC00ZGM4LWEzMzUtYjIxZmVmN2NjNzdhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkyZGFkMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvagpAQCAtMCwwICsxLDI3NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9zcWxpdGUzPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzcWxpdGUzLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2ExYTI5NWU1LTQ2M2MtNDM3Zi04MWNhLTFmMzIzNjc2ODVkYX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGU1ZmRiCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw3MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGFjOGFiM2ItY2UxNi00YmVmLWJlZjktNzY0NjNhMDFmNWM0fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ODE0YjE4N2QtNDRhZC00ZjJiLWJhYTctMThjYThhOGE2YTc3fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzcWxpdGVjb21wYXQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3NsLnZjeHByb2ogYi9QQ2J1aWxkL19zc2wudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTcxZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc3NsLnZjeHByb2oKQEAgLTAsMCArMSwyODYgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fc3NsPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NzbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntlNWIwNGNjMC1lYjRjLTQyYWItYjRkYy0xOGVmOTVmODY0YjB9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iX3NvY2tldC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns4NjkzN2Y1My1jMTg5LTQwZWYtOGNlOC04NzU5ZDhlN2Q0ODB9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NzbC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19zc2wudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YjE0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zc2wudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY5NTM0OGY3LWU5ZjYtNGZlMS1iYzAzLTVmMDhmZmM4MDk1Yn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3NsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMjY1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2oKQEAgLTAsMCArMSwyMTcgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGJ1ZmZlcjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkZjI4MgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhkMjMyMjQwLTkyMWEtNGJjMi04N2MzLTkzZmZkMzQ2MmYwYX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGJ1ZmZlci5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OWE3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCkBAIC0wLDAgKzEsMjE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3RjYXBpPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E2YWQxYQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthNzZhOTBkOC04ZThiLTRjMzYtOGY1OC04YmQ0NmFiZTlmNWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZjcyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2oKQEAgLTAsMCArMSwyNTEgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGtpbnRlcjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGtMaWJEZWJ1Zyk7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYkRlYnVnKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTVjZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YjljZTY0ZGQtY2I5NS00NzJkLWJiZTgtNTU4M2IyY2QzNzVifTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGthcHBpbml0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ogYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTI3NmEyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2oKQEAgLTAsMCArMSwxNTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPndpbmluc3Q8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi5leGU8L1RhcmdldEV4dD4KKyAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uZXhlPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwMDAwPC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+LlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDAwMDwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC1hbWQ2NC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+TElCQzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YjZhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsNjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezI5M2IxMDkyLTAzYWQtNGI3Yy1hY2I5LWM0YWI2MmU1MmY1NX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXHpsaWIiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBlZGMwNDA2LTI4MmYtNGRiYy1iNjBlLWE4NjdjMzRhMmEzMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2VhMGMwZjBlLTNiNzMtNDc0ZS1hOTk5LWU5Njg5ZDAzMmNjY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBjNzdjMWNmLTNmODctNGY4Ny1iZDg2LWI0MjUyMTFjMjE4MX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5pY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGQuYmF0IGIvUENidWlsZC9idWlsZC5iYXQKaW5kZXggYTczNTYwZS4uZmEwZDk1YiAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZC5iYXQKKysrIGIvUENidWlsZC9idWlsZC5iYXQKQEAgLTUsMTQgKzUsMTUgQEAKIHNldGxvY2FsCiBzZXQgcGxhdGY9V2luMzIKIHNldCBjb25mPVJlbGVhc2UKLXNldCBidWlsZD0KK3NldCB0YXJnZXQ9YnVpbGQKK3NldCBkaXI9JX5kcDAKIAogOkNoZWNrT3B0cwogaWYgIiUxIj09Ii1jIiAoc2V0IGNvbmY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCiBpZiAiJTEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCi1pZiAiJTEiPT0iLXIiIChzZXQgYnVpbGQ9L3JlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1yIiAoc2V0IHRhcmdldD1yZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKIGlmICIlMSI9PSItZCIgKHNldCBjb25mPURlYnVnKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKIAotc2V0IGNtZD12Y2J1aWxkIC91c2VlbnYgcGNidWlsZC5zbG4gJWJ1aWxkJSAiJWNvbmYlfCVwbGF0ZiUiCitzZXQgY21kPW1zYnVpbGQgL3A6dXNlZW52PXRydWUgJWRpciVwY2J1aWxkLnNsbiAvdDoldGFyZ2V0JSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlCiBlY2hvICVjbWQlCiAlY21kJQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9zc2wuYmF0IGIvUENidWlsZC9idWlsZF9zc2wuYmF0CmluZGV4IGNlZTY0YTguLjM1N2IwOGIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIGlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgKICAgaWYgJTEgRVFVIERlYnVnICgKICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjMxX2QuZGxsIGV4aXQgMQorICAgIGlmIG5vdCBleGlzdCBweXRob24zM19kLmRsbCBleGl0IDEKICAgKSBFTFNFICgKICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQotICAgIGlmIG5vdCBleGlzdCBweXRob24zMS5kbGwgZXhpdCAxCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjMzLmRsbCBleGl0IDEKICAgKQogKQogJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5IGIvUENidWlsZC9idWlsZF9zc2wucHkKaW5kZXggOTM4ODEyNC4uNWE3YTg5ZSAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF9zc2wucHkKKysrIGIvUENidWlsZC9idWlsZF9zc2wucHkKQEAgLTY1LDkgKzY1LDkgQEAKIAogIyBGZXRjaCBTU0wgZGlyZWN0b3J5IGZyb20gVkMgcHJvcGVydGllcwogZGVmIGdldF9zc2xfZGlyKCk6Ci0gICAgcHJvcGZpbGUgPSAob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdweXByb2plY3QudnNwcm9wcycpKQorICAgIHByb3BmaWxlID0gKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAncHlwcm9qZWN0LnByb3BzJykpCiAgICAgd2l0aCBvcGVuKHByb3BmaWxlKSBhcyBmOgotICAgICAgICBtID0gcmUuc2VhcmNoKCdvcGVuc3NsLShbXiJdKykiJywgZi5yZWFkKCkpCisgICAgICAgIG0gPSByZS5zZWFyY2goJ29wZW5zc2wtKFtePF0rKTwnLCBmLnJlYWQoKSkKICAgICAgICAgcmV0dXJuICIuLlwuLlxvcGVuc3NsLSIrbS5ncm91cCgxKQogCiAKQEAgLTIyOCw5ICsyMjgsOSBAQAogCiAgICAgICAgICMgTm93IHJ1biBtYWtlLgogICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCI6Ci0gICAgICAgICAgICByYyA9IG9zLnN5c3RlbSgibWw2NCAtYyAtRm9tc1xcdXB0YWJsZS5vYmogbXNcXHVwdGFibGUuYXNtIikKKyAgICAgICAgICAgIHJjID0gb3Muc3lzdGVtKCJuYXNtIC1mIHdpbjY0IC1ETkVBUiAtT3ggLWcgbXNcXHVwdGFibGUuYXNtIikKICAgICAgICAgICAgIGlmIHJjOgotICAgICAgICAgICAgICAgIHByaW50KCJtbDY0IGFzc2VtYmxlciBoYXMgZmFpbGVkLiIpCisgICAgICAgICAgICAgICAgcHJpbnQoIm5hc20gYXNzZW1ibGVyIGhhcyBmYWlsZWQuIikKICAgICAgICAgICAgICAgICBzeXMuZXhpdChyYykKIAogICAgICAgICBjb3B5KHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cYnVpbGRpbmYuaCIpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkgYi9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKaW5kZXggZWIxZDA5Mi4uNDE5NmNmMyAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5CisrKyBiL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQpAQCAtMTEsOCArMTEsOCBAQAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQogcGFyID0gb3MucGF0aC5wYXJkaXIKIAotVENMID0gInRjbDguNS45IgotVEsgPSAidGs4LjUuOSIKK1RDTCA9ICJ0Y2w4LjUuMTEiCitUSyA9ICJ0azguNS4xMSIKIFRJWCA9ICJ0aXgtOC40LjMueCIKIAogUk9PVCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgcGFyLCBwYXIpKQpAQCAtMzIsNyArMzIsNyBAQAogZGVmIGJ1aWxkKHBsYXRmb3JtLCBjbGVhbik6CiAgICAgaWYgcGxhdGZvcm0gPT0gIldpbjMyIjoKICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGsiKQotICAgICAgICBtYWNoaW5lID0gIlg4NiIKKyAgICAgICAgbWFjaGluZSA9ICJJWDg2IgogICAgIGVsaWYgcGxhdGZvcm0gPT0gIkFNRDY0IjoKICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGs2NCIpCiAgICAgICAgIG1hY2hpbmUgPSAiQU1ENjQiCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2RlYnVnLnByb3BzIGIvUENidWlsZC9kZWJ1Zy5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjdhNjVhCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9kZWJ1Zy5wcm9wcwpAQCAtMCwwICsxLDI3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KKyAgICA8UHlEZWJ1Z0V4dD5fZDwvUHlEZWJ1Z0V4dD4KKyAgICA8S2lsbFB5dGhvbkV4ZT4kKE91dERpcilraWxsX3B5dGhvbl9kLmV4ZTwvS2lsbFB5dGhvbkV4ZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPFRhcmdldE5hbWU+JChQcm9qZWN0TmFtZSlfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHlEZWJ1Z0V4dCI+CisgICAgICA8VmFsdWU+JChQeURlYnVnRXh0KTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IktpbGxQeXRob25FeGUiPgorICAgICAgPFZhbHVlPiQoS2lsbFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9lbnYuYmF0IGIvUENidWlsZC9lbnYuYmF0CmluZGV4IDYzOGIxNmMuLjA4ZGM4ZWYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvZW52LmJhdAorKysgYi9QQ2J1aWxkL2Vudi5iYXQKQEAgLTEsNSArMSw5IEBACiBAZWNobyBvZmYKLXNldCBWUzk9JVByb2dyYW1GaWxlcyVcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gOS4wCitzZXQgVlMxMD0lUHJvZ3JhbUZpbGVzKHg4NiklXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjAKK0lGIEVYSVNUICIlVlMxMCUiIEdPVE8gb2sKK3NldCBWUzEwPSVQcm9ncmFtRmlsZXMlXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjAKKzpvaworCiBlY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBpYTY0LCBhbWQ2NCwgeDg2X2FtZDY0LCB4ODZfaWE2NAogZWNoby4KLWNhbGwgIiVWUzklXFZDXHZjdmFyc2FsbC5iYXQiICUxCitjYWxsICIlVlMxMCVcVkNcdmN2YXJzYWxsLmJhdCIgJTEKZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24uYyBiL1BDYnVpbGQva2lsbF9weXRob24uYwppbmRleCA2YjkxNjc4Li5iYjMyM2QzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMKKysrIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKICAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCi0gICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzJbX2RdLmRsbCksCisgICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzNbX2RdLmRsbCksCiAgICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgogICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCiAgICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvaiBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjY3YzQwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTIwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+a2lsbF9weXRob248L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMzZDc1MQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQ4NjA2NTkxLWM4YjYtNDFhNS05NWM1LTlhMDg5MGM1NTA0Zn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMKaW5kZXggZmQzYTJlMi4uZjlhYWRlZSAxMDA2NDQKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCisrKyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYwpAQCAtMiw2ICsyLDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8aW8uaD4KIAogI2RlZmluZSBDTURfU0laRSA1MDAKIApAQCAtNjEsNiArNjIsNTEgQEAKICAgICByZXR1cm4gMTsKIH0KIAorY29uc3QgY2hhciBERUxJTVNbXSA9IHsgIiBcbiIgfTsKKworaW50IGdldF9tZXJjdXJpYWxfaW5mbyhjaGFyICogaGdicmFuY2gsIGNoYXIgKiBoZ3RhZywgY2hhciAqIGhncmV2LCBpbnQgc2l6ZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBjaGFyIGZpbGVuYW1lW0NNRF9TSVpFXTsKKyAgICBjaGFyIGNtZGxpbmVbQ01EX1NJWkVdOworCisgICAgc3RyY3B5X3MoZmlsZW5hbWUsIENNRF9TSVpFLCAidG1wWFhYWFhYIik7CisgICAgaWYgKF9ta3RlbXBfcyhmaWxlbmFtZSwgQ01EX1NJWkUpID09IDApIHsKKyAgICAgICAgaW50IHJjOworCisgICAgICAgIHN0cmNweV9zKGNtZGxpbmUsIENNRF9TSVpFLCAiaGcgaWQgLWJpdCA+ICIpOworICAgICAgICBzdHJjYXRfcyhjbWRsaW5lLCBDTURfU0laRSwgZmlsZW5hbWUpOworICAgICAgICByYyA9IHN5c3RlbShjbWRsaW5lKTsKKyAgICAgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgICAgIEZJTEUgKiBmcDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZvcGVuX3MoJmZwLCBmaWxlbmFtZSwgInIiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgY2hhciAqIGNwID0gZmdldHMoY21kbGluZSwgQ01EX1NJWkUsIGZwKTsKKworICAgICAgICAgICAgICAgIGlmIChjcCkgeworICAgICAgICAgICAgICAgICAgICBjaGFyICogY29udGV4dCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgKiB0cCA9IHN0cnRva19zKGNwLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3Jldiwgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhnYnJhbmNoLCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGd0YWcsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfdW5saW5rKGZpbGVuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQogewogICAgIGNoYXIgY29tbWFuZFtDTURfU0laRV0gPSAiY2wuZXhlIC1jIC1EX1dJTjMyIC1EVVNFX0RMX0VYUE9SVCAtRF9XSU5ET1dTIC1EV0lOMzIgLURfV0lORExMICI7CkBAIC0xMDksOCArMTU1LDI3IEBACiAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwogICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIC1EU1VCV0NSRVYgIik7Ci0gICAgfSBlbHNlCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjaGFyIGhndGFnW0NNRF9TSVpFXTsKKyAgICAgICAgY2hhciBoZ2JyYW5jaFtDTURfU0laRV07CisgICAgICAgIGNoYXIgaGdyZXZbQ01EX1NJWkVdOworCisgICAgICAgIGlmIChnZXRfbWVyY3VyaWFsX2luZm8oaGdicmFuY2gsIGhndGFnLCBoZ3JldiwgQ01EX1NJWkUpKSB7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1ESEdCUkFOQ0g9XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhnYnJhbmNoKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOworCisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVEFHPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3RhZyk7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKKworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1ZFUlNJT049XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhncmV2KTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiAiKTsKKyAgICAgICAgfQogICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyIpOworICAgIH0KICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtRm9cIiIpOwogICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mby5vXCIgLUkuLlxcSW5jbHVkZSAtSS4uXFxQQyIpOwpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZTdmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2oKQEAgLTAsMCArMSw1MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5tYWtlX2J1aWxkaW5mbzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpbWFrZV9idWlsZGluZm8uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMjdmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFrZV9idWlsZGluZm8uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvaiBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZjUwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagpAQCAtMCwwICsxLDIwMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPm1ha2VfdmVyc2lvbmluZm88L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmMuaAorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yYy5oOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8SW5wdXRzPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L0lucHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQgLz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25fbnQuaAorPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaDslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPElucHV0cz4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGU8L0lucHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9uX250X2QuaAorPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjMDQzNAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTQxODA5NTQtYzNhNS00NzQ5LWI5YTQtMzFiODA0ZWU0ZmE4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggMWRlNGVhMS4uZDZhMDIyZiAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC0xLDE0MSArMSw3OCBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTAuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAwOA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3Byb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9ID0ge0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3Byb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9ID0ge0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0NCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9ID0ge0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmNwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLUVuZFByb2plY3QNCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlzdWFsIFN0dWRpbyAyMDEwDQogUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCiAJUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQogCQkuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KIAkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQNCiAJRW5kUHJvamVjdFNlY3Rpb24NCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmN4cHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjeHByb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3hwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInc5eHBvcGVuIiwgInc5eHBvcGVuLnZjeHByb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmN4cHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3Byb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9ID0ge0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjeHByb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2RlY2ltYWwiLCAiX2RlY2ltYWwudmN4cHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjeHByb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjeHByb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmN4cHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjeHByb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmNwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmN4cHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3hwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmN4cHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3Byb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmN4cHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmNwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3hwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tdWx0aXByb2Nlc3NpbmciLCAiX211bHRpcHJvY2Vzc2luZy52Y3Byb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9iejIiLCAiX2J6Mi52Y3hwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmNwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjeHByb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2x6bWEiLCAiX2x6bWEudmN4cHJvaiIsICJ7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24zZGxsIiwgInB5dGhvbjNkbGwudmNwcm9qIiwgIns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmN4cHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjcHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3hwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3hwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjeHByb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3FsaXRlMyIsICJzcWxpdGUzLnZjeHByb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsIiwgInNzbC52Y3hwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImtpbGxfcHl0aG9uIiwgImtpbGxfcHl0aG9uLnZjeHByb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uM2RsbCIsICJweXRob24zZGxsLnZjeHByb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3hwcm9qIiwgIntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0YnVmZmVyIiwgIl90ZXN0YnVmZmVyLnZjeHByb2oiLCAie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlsYXVuY2hlciIsICJweWxhdW5jaGVyLnZjeHByb2oiLCAiezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl3bGF1bmNoZXIiLCAicHl3bGF1bmNoZXIudmN4cHJvaiIsICJ7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZnJlZXplX2ltcG9ydGxpYiIsICJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiwgInsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9Ig0KIEVuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCkBAIC0yNjEsNiArMTk4LDIyIEBACiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQpAQCAtNDM3LDYgKzM5MCwyMiBAQAogCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KQEAgLTU1OCwzNiArNTI3LDkwIEBACiAJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMgYi9QQ2J1aWxkL3BnaW5zdHJ1bWVudC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg0OTk1Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMKQEAgLTAsMCArMSwzOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CisgICAgPE91dERpclBHST4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVw8L091dERpclBHST4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKE91dERpclBHSSlcPC9PdXREaXI+CisgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLXBnaVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8RmF2b3JTaXplT3JTcGVlZD5TaXplPC9GYXZvclNpemVPclNwZWVkPgorICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPgorICAgICAgPEVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+ZmFsc2U8L0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+CisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+CisgICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24+UEdJbnN0cnVtZW50PC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPFByb2ZpbGVHdWlkZWREYXRhYmFzZT4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVwkKFRhcmdldE5hbWUpLnBnZDwvUHJvZmlsZUd1aWRlZERhdGFiYXNlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Ik91dERpclBHSSI+CisgICAgICA8VmFsdWU+JChPdXREaXJQR0kpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcyBiL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3NWEwMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMKQEAgLTAsMCArMSwxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXHBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdvXDwvT3V0RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz4KKyAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uPlBHVXBkYXRlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWQucHJvcHMgYi9QQ2J1aWxkL3B5ZC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njk5NjZlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWQucHJvcHMKQEAgLTAsMCArMSwyNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KKyAgICA8RW1iZWRNYW5pZmVzdD5mYWxzZTwvRW1iZWRNYW5pZmVzdD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0JVSUxEX0NPUkVfTU9EVUxFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkX2QucHJvcHMgYi9QQ2J1aWxkL3B5ZF9kLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMjMyODgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5ZF9kLnByb3BzCkBAIC0wLDAgKzEsMzEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+CisgICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgICAgPFRhcmdldE5hbWU+JChQcm9qZWN0TmFtZSlfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkRlZmF1bHQ8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0JVSUxEX0NPUkVfTU9EVUxFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rIC8+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWV4cGF0LnZjeHByb2ogYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzRmZDNkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2oKQEAgLTAsMCArMSwyMzcgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weWV4cGF0PC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5ZXhwYXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjM2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RkYWU3N2E2LTdjYTAtNGExYi1iNzFjLWRlZWE1ZjQwMjVkZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezVhZjlkNDBjLWZjNDYtNDY0MC1hZDg0LTNkMWRkMzRhNzFkN308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5ZXhwYXQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvaiBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYTkzZGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvagpAQCAtMCwwICsxLDMxMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5bGF1bmNoZXI8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5X2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weV9kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmljbyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjIzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5pY28iPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZiZTNjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKQEAgLTAsMCArMSwxMDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKTwvT3V0RGlyPgorICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPiAgCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8X1Byb3BlcnR5U2hlZXREaXNwbGF5TmFtZT5hbWQ2NDwvX1Byb3BlcnR5U2hlZXREaXNwbGF5TmFtZT4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpYW1kNjRcPC9PdXREaXI+CisgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgorICAgIDxQeURsbE5hbWU+cHl0aG9uMzMkKFB5RGVidWdFeHQpPC9QeURsbE5hbWU+CisgICAgPFB5dGhvbkV4ZT4kKE91dERpcilweXRob24kKFB5RGVidWdFeHQpLmV4ZTwvUHl0aG9uRXhlPgorICAgIDxLaWxsUHl0aG9uRXhlPiQoT3V0RGlyKWtpbGxfcHl0aG9uJChQeURlYnVnRXh0KS5leGU8L0tpbGxQeXRob25FeGU+CisgICAgPGV4dGVybmFsc0Rpcj4uLlwuLjwvZXh0ZXJuYWxzRGlyPgorICAgIDxzcWxpdGUzRGlyPiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy43LjEyPC9zcWxpdGUzRGlyPgorICAgIDxiejJEaXI+JChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42PC9iejJEaXI+CisgICAgPGx6bWFEaXI+JChleHRlcm5hbHNEaXIpXHh6LTUuMC4zPC9sem1hRGlyPgorICAgIDxvcGVuc3NsRGlyPiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4xYzwvb3BlbnNzbERpcj4KKyAgICA8dGNsdGtEaXI+JChleHRlcm5hbHNEaXIpXHRjbHRrPC90Y2x0a0Rpcj4KKyAgICA8dGNsdGs2NERpcj4kKGV4dGVybmFsc0RpcilcdGNsdGs2NDwvdGNsdGs2NERpcj4KKyAgICA8dGNsdGtMaWI+JCh0Y2x0a0RpcilcbGliXHRjbDg1LmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NS5saWI8L3RjbHRrTGliPgorICAgIDx0Y2x0a0xpYkRlYnVnPiQodGNsdGtEaXIpXGxpYlx0Y2w4NWcubGliOyQodGNsdGtEaXIpXGxpYlx0azg1Zy5saWI8L3RjbHRrTGliRGVidWc+CisgICAgPHRjbHRrNjRMaWI+JCh0Y2x0azY0RGlyKVxsaWJcdGNsODUubGliOyQodGNsdGs2NERpcilcbGliXHRrODUubGliPC90Y2x0azY0TGliPgorICAgIDx0Y2x0azY0TGliRGVidWc+JCh0Y2x0azY0RGlyKVxsaWJcdGNsODVnLmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg1Zy5saWI8L3RjbHRrNjRMaWJEZWJ1Zz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7IC4uXFBDOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+CisgICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JChPdXREaXIpOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+CisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGxsTmFtZSI+CisgICAgICA8VmFsdWU+JChQeURsbE5hbWUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iZXh0ZXJuYWxzRGlyIj4KKyAgICAgIDxWYWx1ZT4kKGV4dGVybmFsc0Rpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJzcWxpdGUzRGlyIj4KKyAgICAgIDxWYWx1ZT4kKHNxbGl0ZTNEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iYnoyRGlyIj4KKyAgICAgIDxWYWx1ZT4kKGJ6MkRpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJsem1hRGlyIj4KKyAgICAgIDxWYWx1ZT4kKGx6bWFEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ib3BlbnNzbERpciI+CisgICAgICA8VmFsdWU+JChvcGVuc3NsRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrRGlyIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjREaXIiPgorICAgICAgPFZhbHVlPiQodGNsdGs2NERpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYiI+CisgICAgICA8VmFsdWU+JCh0Y2x0a0xpYik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYkRlYnVnIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrTGliRGVidWcpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGs2NExpYiI+CisgICAgICA8VmFsdWU+JCh0Y2x0azY0TGliKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjRMaWJEZWJ1ZyI+CisgICAgICA8VmFsdWU+JCh0Y2x0azY0TGliRGVidWcpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhOWRlMAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKQEAgLTAsMCArMSwzNjggQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9PC9Qcm9qZWN0R3VpZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMTAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweWNvbi5pY28iIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5dGhvbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ3OXhwb3Blbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntlOWUwYTFmNi0wMDA5LTRlOGMtYjhmOC0xYjhmNWQ0OWEwNTh9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDkwNmE0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmQ2OTA3OTUtZGU4My00YTMzLTgyMzUtM2M1ZGFmZTQ1ZWZhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGIwMTBhMTktNWIyOS00NWYxLWE4YTAtZjY3MmUyYmJiMTFhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHljb24uaWNvIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDU5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvagpAQCAtMCwwICsxLDE4NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+cHl0aG9uM2RsbDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbjMuZGVmIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbjNkbGwuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNTBjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHl0aG9uMy5kZWYiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uM2RsbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTQ5M2UzCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKQEAgLTAsMCArMSw2ODAgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weXRob25jb3JlPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQeURsbE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWJzdHJhY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWNjdS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhc2RsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxiaXRzZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNldmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvZGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29kZWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvbXBpbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkYXRldGltZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZW51bW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxlcnJjb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGV2YWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmaWxldXRpbHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZnVuY29iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxnZW5vYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ3JhbWluaXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ3JhbW1hci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpbXBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaW50cmNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsb25naW50cmVwci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1hcnNoYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxuYW1lc3BhY2VvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbm9kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvcGNvZGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweV9jdXJzZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlhcmVuYS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWNhcHN1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHljdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWRlYnVnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZXhwYXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlmcGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlnZXRvcHQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGltZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hY3JvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWVtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5cG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR0b2EuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aG9ucnVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGhyZWFkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHNldG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3RydWN0c2VxLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN5bXRhYmxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN5c21vZHVsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0b2tlbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0cmFjZWJhY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdWNuaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6bGliLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXGVycm1hcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENccHljb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbF9naWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Nzdi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfanNvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sc3Byb2YuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfd2Vha3JlZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhcnJheW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhdGV4aXRtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXVkaW9vcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xiaW5hc2NpaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGF0ZXRpbWVtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmF1bHRoYW5kbGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdjbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtYWluLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcb3BlcmF0b3IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemlwaW1wb3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF93aW5hcGkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYWJzdHJhY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYWNjdS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNhcHN1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2VsbG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZGVzY3JvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZGljdG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZmlsZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGdlbm9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGxpc3RvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbG9uZ29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNldG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdHlwZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcYWNjZWxlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGJpdHNldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGZpcnN0c2V0cy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGdyYW1tYXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGxpc3Rub2RlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxteXJlYWRsaW5lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbm9kZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNldG9rLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcdG9rZW5pemVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5yZWcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGNvbmZpZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZGxfbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGdldHBhdGhwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtc3ZjcnRtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxyYW5kb20uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxfd2FybmluZ3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxhc2RsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYmx0aW5tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvZGVjcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbXBpbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHlubG9hZF93aW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxlcnJvcnMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmaWxldXRpbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZyb3plbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZ1dHVyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGFyZ3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRjb21waWxlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldG9wdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0dmVyc2lvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdyYW1pbml0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxtYXJzaGFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbW9kc3VwcG9ydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG15c25wcmludGYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxteXN0cnRvdWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxwZWVwaG9sZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5YXJlbmEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWN0eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlmcGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweW1hdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0YXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJjbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cnRvZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR0b2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxQeXRob24tYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHl0aG9ucnVuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3ltdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzeXNtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0cmFjZWJhY2suYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezZkZTEwNzQ0LWUzOTYtNDBhNS1iNGUyLTFiNjlhYTdjOGQzMX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjNzNmMGVjMS0zNThiLTQxNzctOTQwZi0wODQ2YWM4YjA0Y2R9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntmMGUwNTQxZS1mMTdkLTQzMGItOTdjNC05M2FkZjBkZDI4NGV9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YjRiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsOTI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSW5jbHVkZSI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MDg2YjBhZmItMjcwYy00NjAzLWEwMmEtNjNkNDZmMGIyYjkyfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhlODE2MDlmLTEzY2EtNGVhZS05ZmRiLWY4YWYyMGM3MTBjN308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJNb2R1bGVzXF9pbyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ODc4N2M1YmItYmFiNi00NTg2LWE0MmUtNGEyN2M3YjNmZmI2fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcemxpYiI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NWQ2ZDJkNmMtOWU2MS00YTFkLWIwYjItNWNjMmY0NDZkNjllfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcY2prY29kZWNzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5ZjEyYzRiMS0zMjJlLTQzMWUtYWJmMS1lMDI1NTBmNTAwMzJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iT2JqZWN0cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YWIyOWE1NTgtMTQzZC00ZmU3LWEwMzktYjQzMWZiNDI5ODU2fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlBhcnNlciI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTczNDlmZWUtMGFiZi00OGIwLWE4ZjUtNzcxYmYzOWI4YWVlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlBDIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYTIxZmM5OC1kZTg5LTQ3NDYtYTk3OS1jNTYxNjk2NDMyOWF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUHl0aG9uIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmMjY5NjQwNi0xNGJjLTQ4YmQtOTBjNS1lOTNhYjgyYTIxYWN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2MzZTAzYTVjLTU2YzctNDVmZC04NTQzLWU1ZDIzMjZiOTA3ZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhYnN0cmFjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhY2N1LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFzZGwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYXN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJpdHNldC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2V2YWwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29kZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb2RlY3MuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29tcGlsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRhdGV0aW1lLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGVycmNvZGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZXZhbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZpbGV1dGlscy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdlbm9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxncmFtaW5pdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxncmFtbWFyLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGltcG9ydC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpbnRyY2hlY2suaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWFyc2hhbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG5vZGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9iamltcGwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW4uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbmhlYWRlcnMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlfY3Vyc2VzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5YXJlbmEuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHljYXBzdWxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Y3R5cGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlkZWJ1Zy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWVycm9ycy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWV4cGF0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZnBlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWF0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRpbWUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYWNyby5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1lbS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXBvcnQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdGF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cmNtcC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkdG9hLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRocmVhZC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzZXRvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzeW10YWJsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdG9rZW4uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHVjbmhhc2guaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmaXhlZC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpsaWIuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19oay5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmgiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuaCI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENcZXJybWFwLmgiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENccHljb25maWcuaCI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbmR2YXIuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsX2dpbC5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jc3YuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2pzb24uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbHNwcm9mLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9waWNrbGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3dlYWtyZWYuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGF1ZGlvb3AuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYmluYXNjaWkuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnY21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWFpbi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG9wZXJhdG9yLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHppcGltcG9ydC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xhYnN0cmFjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xhY2N1LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJvb2xvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2Fwc3VsZS5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNvZGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGVudW1vYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbGlzdG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xvYm1hbGxvYy5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzZXRvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RydWN0c2VxLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHR5cGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGFjY2VsZXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGJpdHNldC5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZmlyc3RzZXRzLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyMS5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbGlzdG5vZGUuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG1ldGFncmFtbWFyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxteXJlYWRsaW5lLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxub2RlLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNldG9rLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2lucmVnLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcY29uZmlnLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZGxfbnQuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xnZXRwYXRocC5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxfd2FybmluZ3MuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGFzZGwuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGFzdC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYmx0aW5tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb2RlY3MuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbXBpbGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxlcnJvcnMuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZpbGV1dGlscy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZyb3plbi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZnV0dXJlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRhcmdzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRjb21waWxlci5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRvcHQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxncmFtaW5pdC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnRkbC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbWFyc2hhbC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbW9kc3VwcG9ydC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbXlzbnByaW50Zi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbXlzdHJ0b3VsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxwZWVwaG9sZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlhcmVuYS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHljdHlwZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlmcGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5bWF0aC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHl0aW1lLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0YXRlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmNtcC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJ0b2QuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR0b2EuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzeW10YWJsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3lzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRyYWNlYmFjay5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccmFuZG9tLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3dpbmFwaS5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjE0NTY5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTAsMCArMSwzNDYgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9PC9Qcm9qZWN0R3VpZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbndfZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbndfZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcV2luTWFpbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5ODY2ZgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswNDM0Y2YxMS1hMzExLTRhOTItOGE2Yy00MTY0YWE3OWE3ZjJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlMWQ4ZWE2Yi1jNjVkLTQyZjQtOWVlZC02MDEwODQ2ZWQzNzh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXFdpbk1haW4uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2ogYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhlMzVhNwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvagpAQCAtMCwwICsxLDI0NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5d2xhdW5jaGVyPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weXdfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5d19kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHO19XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRztfV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuaWNvIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiMjNkMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5pY28iPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IGM3ZTNjNzIuLmU3NDk0MjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTEsNCArMSw0IEBACi1CdWlsZGluZyBQeXRob24gdXNpbmcgVkMrKyA5LjAKK0J1aWxkaW5nIFB5dGhvbiB1c2luZyBWQysrIDEwLjAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBpcyB1c2VkIHRvIGJ1aWxkIFB5dGhvbiBmb3IgV2luMzIgYW5kIHg2NCBwbGF0Zm9ybXMsIGUuZy4gCkBAIC0zNyw3ICszNyw3IEBACiAgICBydW5uaW5nIGEgUHl0aG9uIGNvcmUgYnVpbGRib3QgdGVzdCBzbGF2ZTsgc2VlIFNVQlBST0pFQ1RTIGJlbG93KQogCiBXaGVuIHVzaW5nIHRoZSBEZWJ1ZyBzZXR0aW5nLCB0aGUgb3V0cHV0IGZpbGVzIGhhdmUgYSBfZCBhZGRlZCB0bwotdGhlaXIgbmFtZTogIHB5dGhvbjMyX2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiBCb3RoCit0aGVpciBuYW1lOiAgcHl0aG9uMzNfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uIEJvdGgKIHRoZSBidWlsZCBhbmQgcnQgYmF0Y2ggZmlsZXMgYWNjZXB0IGEgLWQgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuCiAKIFRoZSAzMmJpdCBidWlsZHMgZW5kIHVwIGluIHRoZSBzb2x1dGlvbiBmb2xkZXIgUENidWlsZCB3aGlsZSB0aGUgeDY0IGJ1aWxkcwpAQCAtNjIsMTcgKzYyLDExIEBACiBDIFJVTlRJTUUKIC0tLS0tLS0tLQogCi1WaXN1YWwgU3R1ZGlvIDIwMDggdXNlcyB2ZXJzaW9uIDkgb2YgdGhlIEMgcnVudGltZSAoTVNWQ1JUOSkuICBUaGUgZXhlY3V0YWJsZXMKLWFyZSBsaW5rZWQgdG8gYSBDUlQgInNpZGUgYnkgc2lkZSIgYXNzZW1ibHkgd2hpY2ggbXVzdCBiZSBwcmVzZW50IG9uIHRoZSB0YXJnZXQKLW1hY2hpbmUuICBUaGlzIGlzIGF2YWxpYmxlIHVuZGVyIHRoZSBWQy9SZWRpc3QgZm9sZGVyIG9mIHlvdXIgdmlzdWFsIHN0dWRpbwotZGlzdHJpYnV0aW9uLiBPbiBYUCBhbmQgbGF0ZXIgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBzdXBwb3J0Ci1zaWRlLWJ5LXNpZGUgYXNzZW1ibGllcyBpdCBpcyBub3QgZW5vdWdoIHRvIGhhdmUgdGhlIG1zdmNydDkwLmRsbCBwcmVzZW50LAotaXQgaGFzIHRvIGJlIHRoZXJlIGFzIGEgd2hvbGUgYXNzZW1ibHksIHRoYXQgaXMsIGEgZm9sZGVyIHdpdGggdGhlIC5kbGwKLWFuZCBhIC5tYW5pZmVzdC4gIEFsc28sIGEgY2hlY2sgaXMgbWFkZSBmb3IgdGhlIGNvcnJlY3QgdmVyc2lvbi4KLVRoZXJlZm9yZSwgb25lIHNob3VsZCBkaXN0cmlidXRlIHRoaXMgYXNzZW1ibHkgd2l0aCB0aGUgZGxscywgYW5kIGtlZXAKLWl0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgc3lzdGVtcywgb25lIHNob3VsZAotYWxzbyBzZXQgdGhlIFBBVEggdG8gdGhpcyBkaXJlY3Rvcnkgc28gdGhhdCB0aGUgZGxsIGNhbiBiZSBmb3VuZC4KLUZvciBtb3JlIGluZm8sIHNlZSB0aGUgUmVhZG1lIGluIHRoZSBWQy9SZWRpc3QgZm9sZGVyLgorVmlzdWFsIFN0dWRpbyAyMDEwIHVzZXMgdmVyc2lvbiAxMCBvZiB0aGUgQyBydW50aW1lIChNU1ZDUlQ5KS4gIFRoZSBleGVjdXRhYmxlcworbm8gbG9uZ2VyIHVzZSB0aGUgIlNpZGUgYnkgU2lkZSIgYXNzZW1ibGllcyB1c2VkIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZQorY29tcGlsZXIuICBUaGlzIHNpbXBsaWZpZXMgZGlzdHJpYnV0aW9uIG9mIGFwcGxpY2F0aW9ucy4KK1RoZSBydW4gdGltZSBsaWJyYXJpZXMgYXJlIGF2YWxpYmxlIHVuZGVyIHRoZSBWQy9SZWRpc3QgZm9sZGVyIG9mIHlvdXIgdmlzdWFsIHN0dWRpbworZGlzdHJpYnV0aW9uLiBGb3IgbW9yZSBpbmZvLCBzZWUgdGhlIFJlYWRtZSBpbiB0aGUgVkMvUmVkaXN0IGZvbGRlci4KIAogU1VCUFJPSkVDVFMKIC0tLS0tLS0tLS0tCkBAIC05Miw2ICs4Niw5IEBACiBfdGVzdGNhcGkKICAgICB0ZXN0cyBvZiB0aGUgUHl0aG9uIEMgQVBJLCBydW4gdmlhIExpYi90ZXN0L3Rlc3RfY2FwaS5weSwgYW5kCiAgICAgaW1wbGVtZW50ZWQgYnkgbW9kdWxlIE1vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKK190ZXN0YnVmZmVyCisgICAgYnVmZmVyIHByb3RvY29sIHRlc3RzLCBydW4gdmlhIExpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5LCBhbmQKKyAgICBpbXBsZW1lbnRlZCBieSBtb2R1bGUgTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCiBweWV4cGF0CiAgICAgUHl0aG9uIHdyYXBwZXIgZm9yIGFjY2VsZXJhdGVkIFhNTCBwYXJzaW5nLCB3aGljaCBpbmNvcnBvcmF0ZXMgc3RhYmxlCiAgICAgY29kZSBmcm9tIHRoZSBFeHBhdCBwcm9qZWN0OiAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9leHBhdC8KQEAgLTExMiw5ICsxMDksOSBAQAogICAgIHByZS1idWlsdCBUY2wvVGsgaW4gZWl0aGVyIC4uXC4uXHRjbHRrIGZvciAzMi1iaXQgb3IgLi5cLi5cdGNsdGs2NCBmb3IKICAgICA2NC1iaXQgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KS4gIFNlZSBiZWxvdyBmb3IgaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkCiAgICAgVGNsL1RrLiAKLWJ6MgotICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGliYnoyIGNvbXByZXNzaW9uIGxpYnJhcnkuICBIb21lcGFnZQotICAgICAgICBodHRwOi8vc291cmNlcy5yZWRoYXQuY29tL2J6aXAyLworX2J6MgorICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGliYnppcDIgY29tcHJlc3Npb24gbGlicmFyeS4gIEhvbWVwYWdlCisgICAgICAgIGh0dHA6Ly93d3cuYnppcC5vcmcvCiAgICAgRG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBweXRob24ub3JnIGNvcHkgaW50byB0aGUgZGlzdAogICAgIGRpcmVjdG9yeToKIApAQCAtMTMzLDEzICsxMzAsMTkgQEAKIAogICAgIEFsbCBvZiB0aGlzIG1hbmFnZWQgdG8gYnVpbGQgbGliYnoyLmxpYiBpbiAKICAgICBiemlwMi0xLjAuNlwkcGxhdGZvcm0tJGNvbmZpZ3VyYXRpb25cLCB3aGljaCB0aGUgUHl0aG9uIHByb2plY3QgbGlua3MgaW4uCitfbHptYQorICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorCisgICAgRG93bmxvYWQgdGhlIHByZS1idWlsdCBXaW5kb3dzIGJpbmFyaWVzIGZyb20gaHR0cDovL3R1a2Fhbmkub3JnL3h6LywgYW5kCisgICAgZXh0cmFjdCB0byAuLlx4ei01LjAuMy4gSWYgeW91IGFyZSB1c2luZyBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgbGlibHptYSwKKyAgICBpdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byByZW5hbWUgdGhlIGRpcmVjdG9yeSBmcm9tIHh6LTxWRVJTSU9OPiB0byB4ei01LjAuMy4KIAogX3NzbAogICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgc2VjdXJlIHNvY2tldHMgbGlicmFyeS4KIAogICAgIEdldCB0aGUgc291cmNlIGNvZGUgdGhyb3VnaAogCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvb3BlbnNzbC0xLjAuMGoKKyAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4xYwogCiAgICAgKiogTk9URTogaWYgeW91IHVzZSB0aGUgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwoLWFtZDY0KS5iYXQgYXBwcm9hY2ggZm9yCiAgICAgb2J0YWluaW5nIGV4dGVybmFsIHNvdXJjZXMgdGhlbiB5b3UgZG9uJ3QgbmVlZCB0byBtYW51YWxseSBnZXQgdGhlIHNvdXJjZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWxlYXNlLnByb3BzIGIvUENidWlsZC9yZWxlYXNlLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZmUzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3JlbGVhc2UucHJvcHMKQEAgLTAsMCArMSwxOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CisgICAgPFB5RGVidWdFeHQgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHlEZWJ1Z0V4dCI+CisgICAgICA8VmFsdWU+JChQeURlYnVnRXh0KTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzM2ZDY0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpAQCAtMCwwICsxLDIzNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNlbGVjdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zZWxlY3QudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9zZWxlY3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTJmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTgzNDYwNzctOTAwYy00YzdhLTg1MmYtYTIzNDcwZTM3YjQwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy5wcm9wcyBiL1BDYnVpbGQvc3FsaXRlMy5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2VlMDJjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zcWxpdGUzLnByb3BzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvaiBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZjAxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpAQCAtMCwwICsxLDI0MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNxbGl0ZTM8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzZXh0LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezZkZTEwNzQ0LWUzOTYtNDBhNS1iNGUyLTFiNjlhYTdjOGQzMX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2ODBjMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57Y2U1YjY0OWQtYTZmNy00NDU5LTk0MjUtYzg4Mzc5NWQ3OWRmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGU4NDJmZTItMTc2Yi00ZTgzLTlkMWYtMGFkMTNhODU5ZWZkfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzZXh0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbC52Y3hwcm9qIGIvUENidWlsZC9zc2wudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWZkNzgwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zc2wudmN4cHJvagpAQCAtMCwwICsxLDIyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNzbDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5NYWtlRmlsZVByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ogYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkNTI3OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagpAQCAtMCwwICsxLDIyMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnVuaWNvZGVkYXRhPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZTY0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiOTM5YThmMS1jY2Q3LTQyMGEtOTc0YS0yNDM2MDZkY2NkNzR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlMmMwNTViYi1lYzYyLTRiYmMtYWExYy1kODhkYTRkNGFkMWN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdnM5dG8xMC5weSBiL1BDYnVpbGQvdnM5dG8xMC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmY4MzJhCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC92czl0bzEwLnB5CkBAIC0wLDAgKzEsNTYgQEAKKyNSdW4gdGhpcyBmaWxlIGFmdGVyIGF1dG9tYXRpYyBjb252ZXJ0c2lvbiBvZiB0aGUgVmlzdWFsU3R1ZGlvIDIwMDggc29sdXRpb24gYnkgVmlzdWFsU3R1ZGlvIDIwMTAuCisjVGhpcyBjYW4gYmUgZG9uZSB3aGVuZXZlciB0aGUgMjAwOCBzb2x1dGlvbiBjaGFuZ2VzLgorI0l0IHdpbGwgbWFrZSB0aGUgbmVjZXNzYXJ5IGNsZWFudXAgYW5kIHVwZGF0ZXMgdG8gdGhlIHZjeHByb2ogZmlsZXMKKyN0aGUgLnByb3BzIGZpbGVzIG5lZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBoYW5kIGlmIHRoZSAudnNwcm9wcyBmaWxlcyBjaGFuZ2UKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorCitkZWYgdnM5dG8xMChzcmMsIGRlc3QpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoc3JjKToKKyAgICAgICAgcGF0aCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBleHQubG93ZXIoKSBub3QgaW4gKCcudmN4cHJvaicsKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzcmMsIG5hbWUpKQorICAgICAgICBkZXN0bmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRlc3QsIG5hbWUpKQorICAgICAgICBwcmludCgiJXMgLT4gJXMiICUgKGZpbGVuYW1lLCBkZXN0bmFtZSkpCisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsYXN0bGluZSA9IGIiIgorICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZmluOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgorICAgICAgICAgICAgICAgICNyZW1vdmUgcmVkdW5kYW50IGxpbmtlciBvdXRwdXQgaW5mbworICAgICAgICAgICAgICAgIGlmIGIiPE91dHB1dExpbmU+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGIiPFByb2dyYW1EYXRhYmFzZUZpbGU+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydExpYnJhcnk+IiBpbiBsaW5lIGFuZCBiIjwvSW1wb3J0TGlicmFyeT4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjYWRkIG5ldyBwcm9wZXJ0eSBzaGVldCB0byB0aGUgcHl0aG9uY29yZQorICAgICAgICAgICAgICAgIGlmIGltcG9ydGdyb3VwIGFuZCAicHl0aG9uY29yZSIgaW4gbmFtZS5sb3dlcigpOgorICAgICAgICAgICAgICAgICAgICBpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYiJkZWJ1Zy5wcm9wcyIgaW4gbGFzdGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZV9kLnByb3BzIiAvPlxyXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBiInB5dGhvbmNvcmUiIG5vdCBpbiBsYXN0bGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlLnByb3BzIiAvPlxyXG4nKQorICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydEdyb3VwIENvbmRpdGlvbiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCisgICAgICAgIHdpdGggb3BlbihkZXN0bmFtZSwgJ3diJykgYXMgZm91dDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzcmMgPSAiLiIgaWYgbGVuKHN5cy5hcmd2KSA8IDIgZWxzZSBzeXMuYXJndlsxXQorICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguYWJzcGF0aChzcmMpKQorICAgIGRlc3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNyYywgIi4uIiwgbmFtZSArICJVcGQiKSkKKyAgICBvcy5tYWtlZGlycyhkZXN0KQorICAgIHZzOXRvMTAoc3JjLCBkZXN0KQpkaWZmIC0tZ2l0IGEvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYWZlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2oKQEAgLTAsMCArMSwyODcgQEAKK++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+CisgICAgPFByb2plY3RHdWlkPntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT53OXhwb3BlbjwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3OXhwb3Blbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYzY3YWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthYmMyZGZmZC0zZjJhLTQ3YmQtYjg5Yi0wMzE0Yzk5ZWYyMWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHc5eHBvcGVuLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNTE4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKQEAgLTAsMCArMSwyMTggQEAKK++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+CisgICAgPFByb2plY3RHdWlkPnsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT53aW5zb3VuZDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2luc291bmQuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwODkzMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5zb3VuZC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQveDY0LnByb3BzIGIvUENidWlsZC94NjQucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg5ZDk1YgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQveDY0LnByb3BzCkBAIC0wLDAgKzEsMjAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIENvbmRpdGlvbj0iJyQoSE9TVF9QWVRIT04pJyE9JyciPgorICAgIDxQeXRob25FeGU+JChIT1NUX1BZVEhPTik8L1B5dGhvbkV4ZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9VU0VDTDpNU19PUFRFUk9OIC9HUy0gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeXRob25FeGUiPgorICAgICAgPFZhbHVlPiQoUHl0aG9uRXhlKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ogYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YmMyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTk0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT54eGxpbWl0ZWQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X1dJTjMyO19XSU5ETEw7UHlfTElNSVRFRF9BUEk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0xJTUlURURfQVBJOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0xJTUlURURfQVBJOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWRiNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ViNWVlYmM3LTM3ODctNGY4Zi1iMjgyLTIwNGRiMjk2MmNjM308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggOTQwN2IyZi4uYzI0ZDg0MCAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtMSwxMTkgKzEsMTIwIEBACi0tLSBBU0RMJ3MgZm91ciBidWlsdGluIHR5cGVzIGFyZSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgb2JqZWN0CistLSBBU0RMJ3MgZml2ZSBidWlsdGluIHR5cGVzIGFyZSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdAogCi1tb2R1bGUgUHl0aG9uIHZlcnNpb24gIiRSZXZpc2lvbiQiCittb2R1bGUgUHl0aG9uCiB7Ci0JbW9kID0gTW9kdWxlKHN0bXQqIGJvZHkpCi0JICAgIHwgSW50ZXJhY3RpdmUoc3RtdCogYm9keSkKLQkgICAgfCBFeHByZXNzaW9uKGV4cHIgYm9keSkKKyAgICBtb2QgPSBNb2R1bGUoc3RtdCogYm9keSkKKyAgICAgICAgfCBJbnRlcmFjdGl2ZShzdG10KiBib2R5KQorICAgICAgICB8IEV4cHJlc3Npb24oZXhwciBib2R5KQogCi0JICAgIC0tIG5vdCByZWFsbHkgYW4gYWN0dWFsIG5vZGUgYnV0IHVzZWZ1bCBpbiBKeXRob24ncyB0eXBlc3lzdGVtLgotCSAgICB8IFN1aXRlKHN0bXQqIGJvZHkpCisgICAgICAgIC0tIG5vdCByZWFsbHkgYW4gYWN0dWFsIG5vZGUgYnV0IHVzZWZ1bCBpbiBKeXRob24ncyB0eXBlc3lzdGVtLgorICAgICAgICB8IFN1aXRlKHN0bXQqIGJvZHkpCiAKLQlzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywgCisgICAgc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMpCi0JICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIAotCQkJIGV4cHIqIGJhc2VzLAotCQkJIGtleXdvcmQqIGtleXdvcmRzLAotCQkJIGV4cHI/IHN0YXJhcmdzLAotCQkJIGV4cHI/IGt3YXJncywKLQkJCSBzdG10KiBib2R5LAotCQkJIGV4cHIqIGRlY29yYXRvcl9saXN0KQotCSAgICAgIHwgUmV0dXJuKGV4cHI/IHZhbHVlKQorICAgICAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCAKKyAgICAgICAgICAgICBleHByKiBiYXNlcywKKyAgICAgICAgICAgICBrZXl3b3JkKiBrZXl3b3JkcywKKyAgICAgICAgICAgICBleHByPyBzdGFyYXJncywKKyAgICAgICAgICAgICBleHByPyBrd2FyZ3MsCisgICAgICAgICAgICAgc3RtdCogYm9keSwKKyAgICAgICAgICAgICBleHByKiBkZWNvcmF0b3JfbGlzdCkKKyAgICAgICAgICB8IFJldHVybihleHByPyB2YWx1ZSkKIAotCSAgICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCi0JICAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSkKLQkgICAgICB8IEF1Z0Fzc2lnbihleHByIHRhcmdldCwgb3BlcmF0b3Igb3AsIGV4cHIgdmFsdWUpCisgICAgICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKKyAgICAgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQorICAgICAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKIAotCSAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKLQkgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBXaGlsZShleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IElmKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgV2l0aChleHByIGNvbnRleHRfZXhwciwgZXhwcj8gb3B0aW9uYWxfdmFycywgc3RtdCogYm9keSkKKyAgICAgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCisgICAgICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgV2hpbGUoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBJZihleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IFdpdGgod2l0aGl0ZW0qIGl0ZW1zLCBzdG10KiBib2R5KQogCi0JICAgICAgfCBSYWlzZShleHByPyBleGMsIGV4cHI/IGNhdXNlKQotCSAgICAgIHwgVHJ5RXhjZXB0KHN0bXQqIGJvZHksIGV4Y2VwdGhhbmRsZXIqIGhhbmRsZXJzLCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBUcnlGaW5hbGx5KHN0bXQqIGJvZHksIHN0bXQqIGZpbmFsYm9keSkKLQkgICAgICB8IEFzc2VydChleHByIHRlc3QsIGV4cHI/IG1zZykKKyAgICAgICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCisgICAgICAgICAgfCBUcnkoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSwgc3RtdCogZmluYWxib2R5KQorICAgICAgICAgIHwgQXNzZXJ0KGV4cHIgdGVzdCwgZXhwcj8gbXNnKQogCi0JICAgICAgfCBJbXBvcnQoYWxpYXMqIG5hbWVzKQotCSAgICAgIHwgSW1wb3J0RnJvbShpZGVudGlmaWVyPyBtb2R1bGUsIGFsaWFzKiBuYW1lcywgaW50PyBsZXZlbCkKKyAgICAgICAgICB8IEltcG9ydChhbGlhcyogbmFtZXMpCisgICAgICAgICAgfCBJbXBvcnRGcm9tKGlkZW50aWZpZXI/IG1vZHVsZSwgYWxpYXMqIG5hbWVzLCBpbnQ/IGxldmVsKQogCi0JICAgICAgfCBHbG9iYWwoaWRlbnRpZmllciogbmFtZXMpCi0JICAgICAgfCBOb25sb2NhbChpZGVudGlmaWVyKiBuYW1lcykKLQkgICAgICB8IEV4cHIoZXhwciB2YWx1ZSkKLQkgICAgICB8IFBhc3MgfCBCcmVhayB8IENvbnRpbnVlCisgICAgICAgICAgfCBHbG9iYWwoaWRlbnRpZmllciogbmFtZXMpCisgICAgICAgICAgfCBOb25sb2NhbChpZGVudGlmaWVyKiBuYW1lcykKKyAgICAgICAgICB8IEV4cHIoZXhwciB2YWx1ZSkKKyAgICAgICAgICB8IFBhc3MgfCBCcmVhayB8IENvbnRpbnVlCiAKLQkgICAgICAtLSBYWFggSnl0aG9uIHdpbGwgYmUgZGlmZmVyZW50Ci0JICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcwotCSAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQorICAgICAgICAgIC0tIFhYWCBKeXRob24gd2lsbCBiZSBkaWZmZXJlbnQKKyAgICAgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCisgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLQkgICAgICAtLSBCb29sT3AoKSBjYW4gdXNlIGxlZnQgJiByaWdodD8KLQlleHByID0gQm9vbE9wKGJvb2xvcCBvcCwgZXhwciogdmFsdWVzKQotCSAgICAgfCBCaW5PcChleHByIGxlZnQsIG9wZXJhdG9yIG9wLCBleHByIHJpZ2h0KQotCSAgICAgfCBVbmFyeU9wKHVuYXJ5b3Agb3AsIGV4cHIgb3BlcmFuZCkKLQkgICAgIHwgTGFtYmRhKGFyZ3VtZW50cyBhcmdzLCBleHByIGJvZHkpCi0JICAgICB8IElmRXhwKGV4cHIgdGVzdCwgZXhwciBib2R5LCBleHByIG9yZWxzZSkKLQkgICAgIHwgRGljdChleHByKiBrZXlzLCBleHByKiB2YWx1ZXMpCi0JICAgICB8IFNldChleHByKiBlbHRzKQotCSAgICAgfCBMaXN0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIHwgU2V0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIHwgRGljdENvbXAoZXhwciBrZXksIGV4cHIgdmFsdWUsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICB8IEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIC0tIHRoZSBncmFtbWFyIGNvbnN0cmFpbnMgd2hlcmUgeWllbGQgZXhwcmVzc2lvbnMgY2FuIG9jY3VyCi0JICAgICB8IFlpZWxkKGV4cHI/IHZhbHVlKQotCSAgICAgLS0gbmVlZCBzZXF1ZW5jZXMgZm9yIGNvbXBhcmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgotCSAgICAgLS0geCA8IDQgPCAzIGFuZCAoeCA8IDQpIDwgMwotCSAgICAgfCBDb21wYXJlKGV4cHIgbGVmdCwgY21wb3AqIG9wcywgZXhwciogY29tcGFyYXRvcnMpCi0JICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcywKLQkJCSBleHByPyBzdGFyYXJncywgZXhwcj8ga3dhcmdzKQotCSAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCi0JICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPwotCSAgICAgfCBCeXRlcyhzdHJpbmcgcykKLQkgICAgIHwgRWxsaXBzaXMKLQkgICAgIC0tIG90aGVyIGxpdGVyYWxzPyBib29scz8KKyAgICAgICAgICAtLSBCb29sT3AoKSBjYW4gdXNlIGxlZnQgJiByaWdodD8KKyAgICBleHByID0gQm9vbE9wKGJvb2xvcCBvcCwgZXhwciogdmFsdWVzKQorICAgICAgICAgfCBCaW5PcChleHByIGxlZnQsIG9wZXJhdG9yIG9wLCBleHByIHJpZ2h0KQorICAgICAgICAgfCBVbmFyeU9wKHVuYXJ5b3Agb3AsIGV4cHIgb3BlcmFuZCkKKyAgICAgICAgIHwgTGFtYmRhKGFyZ3VtZW50cyBhcmdzLCBleHByIGJvZHkpCisgICAgICAgICB8IElmRXhwKGV4cHIgdGVzdCwgZXhwciBib2R5LCBleHByIG9yZWxzZSkKKyAgICAgICAgIHwgRGljdChleHByKiBrZXlzLCBleHByKiB2YWx1ZXMpCisgICAgICAgICB8IFNldChleHByKiBlbHRzKQorICAgICAgICAgfCBMaXN0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIHwgU2V0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIHwgRGljdENvbXAoZXhwciBrZXksIGV4cHIgdmFsdWUsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICB8IEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIC0tIHRoZSBncmFtbWFyIGNvbnN0cmFpbnMgd2hlcmUgeWllbGQgZXhwcmVzc2lvbnMgY2FuIG9jY3VyCisgICAgICAgICB8IFlpZWxkKGV4cHI/IHZhbHVlKQorICAgICAgICAgfCBZaWVsZEZyb20oZXhwciB2YWx1ZSkKKyAgICAgICAgIC0tIG5lZWQgc2VxdWVuY2VzIGZvciBjb21wYXJlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICAgICAgIC0tIHggPCA0IDwgMyBhbmQgKHggPCA0KSA8IDMKKyAgICAgICAgIHwgQ29tcGFyZShleHByIGxlZnQsIGNtcG9wKiBvcHMsIGV4cHIqIGNvbXBhcmF0b3JzKQorICAgICAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMsCisgICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsIGV4cHI/IGt3YXJncykKKyAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgorICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KKyAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKKyAgICAgICAgIHwgRWxsaXBzaXMKKyAgICAgICAgIC0tIG90aGVyIGxpdGVyYWxzPyBib29scz8KIAotCSAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0Ci0JICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IFN1YnNjcmlwdChleHByIHZhbHVlLCBzbGljZSBzbGljZSwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgU3RhcnJlZChleHByIHZhbHVlLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkgCi0JICAgICB8IFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICAtLSB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2FuIGFwcGVhciBpbiBhc3NpZ25tZW50IGNvbnRleHQKKyAgICAgICAgIHwgQXR0cmlidXRlKGV4cHIgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgU3Vic2NyaXB0KGV4cHIgdmFsdWUsIHNsaWNlIHNsaWNlLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBTdGFycmVkKGV4cHIgdmFsdWUsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IE5hbWUoaWRlbnRpZmllciBpZCwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KSAKKyAgICAgICAgIHwgVHVwbGUoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkKIAotCSAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKLQkgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKKyAgICAgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCisgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLQlleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQorICAgIGV4cHJfY29udGV4dCA9IExvYWQgfCBTdG9yZSB8IERlbCB8IEF1Z0xvYWQgfCBBdWdTdG9yZSB8IFBhcmFtCiAKLQlzbGljZSA9IFNsaWNlKGV4cHI/IGxvd2VyLCBleHByPyB1cHBlciwgZXhwcj8gc3RlcCkgCi0JICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykgCi0JICAgICAgfCBJbmRleChleHByIHZhbHVlKSAKKyAgICBzbGljZSA9IFNsaWNlKGV4cHI/IGxvd2VyLCBleHByPyB1cHBlciwgZXhwcj8gc3RlcCkgCisgICAgICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykgCisgICAgICAgICAgfCBJbmRleChleHByIHZhbHVlKSAKIAotCWJvb2xvcCA9IEFuZCB8IE9yIAorICAgIGJvb2xvcCA9IEFuZCB8IE9yIAogCi0Jb3BlcmF0b3IgPSBBZGQgfCBTdWIgfCBNdWx0IHwgRGl2IHwgTW9kIHwgUG93IHwgTFNoaWZ0IAorICAgIG9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdCAKICAgICAgICAgICAgICAgICAgfCBSU2hpZnQgfCBCaXRPciB8IEJpdFhvciB8IEJpdEFuZCB8IEZsb29yRGl2CiAKLQl1bmFyeW9wID0gSW52ZXJ0IHwgTm90IHwgVUFkZCB8IFVTdWIKKyAgICB1bmFyeW9wID0gSW52ZXJ0IHwgTm90IHwgVUFkZCB8IFVTdWIKIAotCWNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgorICAgIGNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgogCi0JY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCisgICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCiAKLQktLSBub3Qgc3VyZSB3aGF0IHRvIGNhbGwgdGhlIGZpcnN0IGFyZ3VtZW50IGZvciByYWlzZSBhbmQgZXhjZXB0Ci0JZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKLQkgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLQlhcmd1bWVudHMgPSAoYXJnKiBhcmdzLCBpZGVudGlmaWVyPyB2YXJhcmcsIGV4cHI/IHZhcmFyZ2Fubm90YXRpb24sCisgICAgYXJndW1lbnRzID0gKGFyZyogYXJncywgaWRlbnRpZmllcj8gdmFyYXJnLCBleHByPyB2YXJhcmdhbm5vdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgYXJnKiBrd29ubHlhcmdzLCBpZGVudGlmaWVyPyBrd2FyZywKICAgICAgICAgICAgICAgICAgICAgIGV4cHI/IGt3YXJnYW5ub3RhdGlvbiwgZXhwciogZGVmYXVsdHMsCiAgICAgICAgICAgICAgICAgICAgICBleHByKiBrd19kZWZhdWx0cykKLQlhcmcgPSAoaWRlbnRpZmllciBhcmcsIGV4cHI/IGFubm90YXRpb24pCisgICAgYXJnID0gKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uKQogCi0gICAgICAgIC0tIGtleXdvcmQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIGNhbGwKLSAgICAgICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKKyAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCisgICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKIAotICAgICAgICAtLSBpbXBvcnQgbmFtZSB3aXRoIG9wdGlvbmFsICdhcycgYWxpYXMuCi0gICAgICAgIGFsaWFzID0gKGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllcj8gYXNuYW1lKQorICAgIC0tIGltcG9ydCBuYW1lIHdpdGggb3B0aW9uYWwgJ2FzJyBhbGlhcy4KKyAgICBhbGlhcyA9IChpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkKKworICAgIHdpdGhpdGVtID0gKGV4cHIgY29udGV4dF9leHByLCBleHByPyBvcHRpb25hbF92YXJzKQogfQogCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbC5weSBiL1BhcnNlci9hc2RsLnB5CmluZGV4IDdiNGUyZGMuLjA4YWEwNWIgMTAwNjQ0Ci0tLSBhL1BhcnNlci9hc2RsLnB5CisrKyBiL1BhcnNlci9hc2RsLnB5CkBAIC0xMTQsMjggKzExNCwyMCBAQAogICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IodG9rLmxpbmVubywgdG9rKQogCiAgICAgZGVmIHBfbW9kdWxlXzAoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB2ZXJzaW9uIHsgfSAiCi0gICAgICAgIG1vZHVsZSwgbmFtZSwgdmVyc2lvbiwgXzAsIF8xID0gaW5mbworICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgeyB9ICIKKyAgICAgICAgbW9kdWxlLCBuYW1lLCBfMCwgXzEgPSBpbmZvCiAgICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBOb25lLCB2ZXJzaW9uKQorICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIE5vbmUpCiAKICAgICBkZWYgcF9tb2R1bGUoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB2ZXJzaW9uIHsgZGVmaW5pdGlvbnMgfSAiCi0gICAgICAgIG1vZHVsZSwgbmFtZSwgdmVyc2lvbiwgXzAsIGRlZmluaXRpb25zLCBfMSA9IGluZm8KKyAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgZGVmaW5pdGlvbnMgfSAiCisgICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIGRlZmluaXRpb25zLCBfMSA9IGluZm8KICAgICAgICAgaWYgbW9kdWxlLnZhbHVlICE9ICJtb2R1bGUiOgogICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKG1vZHVsZS5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAnbW9kdWxlJywgZm91bmQgJXMiICUgbW9kdWxlKQotICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIGRlZmluaXRpb25zLCB2ZXJzaW9uKQotCi0gICAgZGVmIHBfdmVyc2lvbihzZWxmLCBpbmZvKToKLSAgICAgICAgInZlcnNpb24gOjo9IElkIFN0cmluZyIKLSAgICAgICAgdmVyc2lvbiwgViA9IGluZm8KLSAgICAgICAgaWYgdmVyc2lvbi52YWx1ZSAhPSAidmVyc2lvbiI6Ci0gICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IodmVyc2lvbi5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAndmVyc2lvbicsIGZvdW5kICUiICUgdmVyc2lvbikKLSAgICAgICAgcmV0dXJuIFYKKyAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucykKIAogICAgIGRlZiBwX2RlZmluaXRpb25fMChzZWxmLCBkZWZpbml0aW9uKToKICAgICAgICAgIiBkZWZpbml0aW9ucyA6Oj0gZGVmaW5pdGlvbiAiCkBAIC0xNjQsMTUgKzE1NiwxMSBAQAogICAgICAgICBpZiBpZC52YWx1ZSAhPSAiYXR0cmlidXRlcyI6CiAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoaWQubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgYXR0cmlidXRlcywgZm91bmQgJXMiICUgaWQpCi0gICAgICAgIGlmIGF0dHJpYnV0ZXM6Ci0gICAgICAgICAgICBhdHRyaWJ1dGVzLnJldmVyc2UoKQogICAgICAgICByZXR1cm4gU3VtKHN1bSwgYXR0cmlidXRlcykKIAogICAgIGRlZiBwX3Byb2R1Y3Qoc2VsZiwgaW5mbyk6CiAgICAgICAgICIgcHJvZHVjdCA6Oj0gKCBmaWVsZHMgKSAiCiAgICAgICAgIF8wLCBmaWVsZHMsIF8xID0gaW5mbwotICAgICAgICAjIFhYWCBjYW4ndCBJIGp1c3QgY29uc3RydWN0IHRoaW5ncyBpbiB0aGUgcmlnaHQgb3JkZXI/Ci0gICAgICAgIGZpZWxkcy5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIFByb2R1Y3QoZmllbGRzKQogCiAgICAgZGVmIHBfc3VtXzAoc2VsZiwgY29uc3RydWN0b3IpOgpAQCAtMTk2LDggKzE4NCw2IEBACiAgICAgZGVmIHBfY29uc3RydWN0b3JfMShzZWxmLCBpbmZvKToKICAgICAgICAgIiBjb25zdHJ1Y3RvciA6Oj0gSWQgKCBmaWVsZHMgKSAiCiAgICAgICAgIGlkLCBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgIyBYWFggY2FuJ3QgSSBqdXN0IGNvbnN0cnVjdCB0aGluZ3MgaW4gdGhlIHJpZ2h0IG9yZGVyPwotICAgICAgICBmaWVsZHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RvcihpZCwgZmllbGRzKQogCiAgICAgZGVmIHBfZmllbGRzXzAoc2VsZiwgZmllbGQpOgpAQCAtMjA1LDggKzE5MSw4IEBACiAgICAgICAgIHJldHVybiBbZmllbGRbMF1dCiAKICAgICBkZWYgcF9maWVsZHNfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkICwgZmllbGRzICIKLSAgICAgICAgZmllbGQsIF8sIGZpZWxkcyA9IGluZm8KKyAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkcyAsIGZpZWxkICIKKyAgICAgICAgZmllbGRzLCBfLCBmaWVsZCA9IGluZm8KICAgICAgICAgcmV0dXJuIGZpZWxkcyArIFtmaWVsZF0KIAogICAgIGRlZiBwX2ZpZWxkXzAoc2VsZiwgdHlwZV8pOgpAQCAtMjM2LDcgKzIyMiw3IEBACiAgICAgICAgICIgZmllbGQgOjo9IElkID8gIgogICAgICAgICByZXR1cm4gRmllbGQodHlwZVswXSwgb3B0PVRydWUpCiAKLWJ1aWx0aW5fdHlwZXMgPSAoImlkZW50aWZpZXIiLCAic3RyaW5nIiwgImludCIsICJib29sIiwgIm9iamVjdCIpCitidWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJieXRlcyIsICJpbnQiLCAib2JqZWN0IikKIAogIyBiZWxvdyBpcyBhIGNvbGxlY3Rpb24gb2YgY2xhc3NlcyB0byBjYXB0dXJlIHRoZSBBU1Qgb2YgYW4gQVNUIDotKQogIyBub3Qgc3VyZSBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgYXJlIHVzZWZ1bCB5ZXQsIGJ1dCBJJ20gYWRkaW5nIHRoZW0KQEAgLTI0NiwxMCArMjMyLDkgQEAKICAgICBwYXNzICMgYSBtYXJrZXIgY2xhc3MKIAogY2xhc3MgTW9kdWxlKEFTVCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRmbnMsIHZlcnNpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZm5zKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmRmbnMgPSBkZm5zCi0gICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KICAgICAgICAgc2VsZi50eXBlcyA9IHt9ICMgbWFwcyB0eXBlIG5hbWUgdG8gdmFsdWUgKGZyb20gZGZucykKICAgICAgICAgZm9yIHR5cGUgaW4gZGZuczoKICAgICAgICAgICAgIHNlbGYudHlwZXNbdHlwZS5uYW1lLnZhbHVlXSA9IHR5cGUudmFsdWUKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5CmluZGV4IDdmNjEzZGIuLmE5ZTY2MjYgMTAwNzU1Ci0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtODQsOCArODQsMTYgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlKToKICAgICAgICAgc2VsZi5maWxlID0gZmlsZQorICAgICAgICBzZWxmLmlkZW50aWZpZXJzID0gc2V0KCkKICAgICAgICAgc3VwZXIoRW1pdFZpc2l0b3IsIHNlbGYpLl9faW5pdF9fKCkKIAorICAgIGRlZiBlbWl0X2lkZW50aWZpZXIoc2VsZiwgbmFtZSk6CisgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmlkZW50aWZpZXJzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuZW1pdCgiX1B5X0lERU5USUZJRVIoJXMpOyIgJSBuYW1lLCAwKQorICAgICAgICBzZWxmLmlkZW50aWZpZXJzLmFkZChuYW1lKQorCiAgICAgZGVmIGVtaXQoc2VsZiwgcywgZGVwdGgsIHJlZmxvdz1UcnVlKToKICAgICAgICAgIyBYWFggcmVmbG93IGxvbmcgbGluZXM/CiAgICAgICAgIGlmIHJlZmxvdzoKQEAgLTQ4NSwxMiArNDkzLDEyIEBACiAKICAgICBkZWYgdmlzaXRGaWVsZChzZWxmLCBmaWVsZCwgbmFtZSwgc3VtPU5vbmUsIHByb2Q9Tm9uZSwgZGVwdGg9MCk6CiAgICAgICAgIGN0eXBlID0gZ2V0X2NfdHlwZShmaWVsZC50eXBlKQotICAgICAgICBzZWxmLmVtaXQoImlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgXCIlc1wiKSkgeyIgJSBmaWVsZC5uYW1lLCBkZXB0aCkKKyAgICAgICAgc2VsZi5lbWl0KCJpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkXyVzKSkgeyIgJSBmaWVsZC5uYW1lLCBkZXB0aCkKICAgICAgICAgc2VsZi5lbWl0KCJpbnQgcmVzOyIsIGRlcHRoKzEpCiAgICAgICAgIGlmIGZpZWxkLnNlcToKICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBsZW47IiwgZGVwdGgrMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBpOyIsIGRlcHRoKzEpCi0gICAgICAgIHNlbGYuZW1pdCgidG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIFwiJXNcIik7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKzEpCisgICAgICAgIHNlbGYuZW1pdCgidG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkXyVzKTsiICUgZmllbGQubmFtZSwgZGVwdGgrMSkKICAgICAgICAgc2VsZi5lbWl0KCJpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOyIsIGRlcHRoKzEpCiAgICAgICAgIGlmIGZpZWxkLnNlcToKICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeyIsIGRlcHRoKzEpCkBAIC01NTIsNiArNTYwLDggQEAKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlUeXBlT2JqZWN0IColc190eXBlOyIgJSBuYW1lLCAwKQogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial8lcyh2b2lkKik7IiAlIG5hbWUsIDApCiAgICAgICAgIGlmIHByb2QuZmllbGRzOgorICAgICAgICAgICAgZm9yIGYgaW4gcHJvZC5maWVsZHM6CisgICAgICAgICAgICAgICAgc2VsZi5lbWl0X2lkZW50aWZpZXIoZi5uYW1lKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgY2hhciAqJXNfZmllbGRzW109eyIgJSBuYW1lLDApCiAgICAgICAgICAgICBmb3IgZiBpbiBwcm9kLmZpZWxkczoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIGYubmFtZSwgMSkKQEAgLTU2MCw2ICs1NzAsOCBAQAogICAgIGRlZiB2aXNpdFN1bShzZWxmLCBzdW0sIG5hbWUpOgogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIG5hbWUsIDApCiAgICAgICAgIGlmIHN1bS5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5lbWl0X2lkZW50aWZpZXIoYS5uYW1lKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgY2hhciAqJXNfYXR0cmlidXRlc1tdID0geyIgJSBuYW1lLCAwKQogICAgICAgICAgICAgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXM6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCciJXMiLCcgJSBhLm5hbWUsIDEpCkBAIC01NzksNiArNTkxLDggQEAKICAgICBkZWYgdmlzaXRDb25zdHJ1Y3RvcihzZWxmLCBjb25zLCBuYW1lKToKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlUeXBlT2JqZWN0IColc190eXBlOyIgJSBjb25zLm5hbWUsIDApCiAgICAgICAgIGlmIGNvbnMuZmllbGRzOgorICAgICAgICAgICAgZm9yIHQgaW4gY29ucy5maWVsZHM6CisgICAgICAgICAgICAgICAgc2VsZi5lbWl0X2lkZW50aWZpZXIodC5uYW1lKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgY2hhciAqJXNfZmllbGRzW109eyIgJSBjb25zLm5hbWUsIDApCiAgICAgICAgICAgICBmb3IgdCBpbiBjb25zLmZpZWxkczoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIHQubmFtZSwgMSkKQEAgLTU4OCwxMyArNjAyLDM5IEBACiAKICAgICBkZWYgdmlzaXRNb2R1bGUoc2VsZiwgbW9kKToKICAgICAgICAgc2VsZi5lbWl0KCIiIgordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqZGljdDsKK30gQVNUX29iamVjdDsKKworc3RhdGljIHZvaWQKK2FzdF9kZWFsbG9jKEFTVF9vYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIGludAorYXN0X3RyYXZlcnNlKEFTVF9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorYXN0X2NsZWFyKEFTVF9vYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7Cit9CisKIHN0YXRpYyBpbnQKIGFzdF90eXBlX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpZWxkcyk7CiAgICAgUHlfc3NpemVfdCBpLCBudW1maWVsZHMgPSAwOwogICAgIGludCByZXMgPSAtMTsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpmaWVsZHM7Ci0gICAgZmllbGRzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoc2VsZiksICJfZmllbGRzIik7CisgICAgZmllbGRzID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QqKVB5X1RZUEUoc2VsZiksICZQeUlkX19maWVsZHMpOwogICAgIGlmICghZmllbGRzKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGlmIChmaWVsZHMpIHsKQEAgLTY0NCw3ICs2ODQsOCBAQAogYXN0X3R5cGVfcmVkdWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2RpY3RfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICBQeU9iamVjdCAqZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTY2NCwxMiArNzA1LDE3IEBACiAgICAge05VTEx9CiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgYXN0X3R5cGVfZ2V0c2V0c1tdID0geworICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBBU1RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJfYXN0LkFTVCIsCi0gICAgc2l6ZW9mKFB5T2JqZWN0KSwKKyAgICBzaXplb2YoQVNUX29iamVjdCksCiAgICAgMCwKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWFzdF9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtNjg0LDI2ICs3MzAsMjYgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgLyogdHBfZ2V0YXR0cm8gKi8KICAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzdF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlhc3RfY2xlYXIsICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGFzdF90eXBlX21ldGhvZHMsICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgYXN0X3R5cGVfZ2V0c2V0cywgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoQVNUX29iamVjdCwgZGljdCksLyogdHBfZGljdG9mZnNldCAqLwogICAgIChpbml0cHJvYylhc3RfdHlwZV9pbml0LCAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtNzMwLDYgKzc3Niw3IEBACiBzdGF0aWMgaW50IGFkZF9hdHRyaWJ1dGVzKFB5VHlwZU9iamVjdCogdHlwZSwgY2hhcioqYXR0cnMsIGludCBudW1fZmllbGRzKQogewogICAgIGludCBpLCByZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX2F0dHJpYnV0ZXMpOwogICAgIFB5T2JqZWN0ICpzLCAqbCA9IFB5VHVwbGVfTmV3KG51bV9maWVsZHMpOwogICAgIGlmICghbCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03NDEsNyArNzg4LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGwsIGksIHMpOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKChQeU9iamVjdCopdHlwZSwgIl9hdHRyaWJ1dGVzIiwgbCkgPj0gMDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfU2V0QXR0cklkKChQeU9iamVjdCopdHlwZSwgJlB5SWRfX2F0dHJpYnV0ZXMsIGwpID49IDA7CiAgICAgUHlfREVDUkVGKGwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTAsNyArNzk3LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2xpc3QoYXNkbF9zZXEgKnNlcSwgUHlPYmplY3QqICgqZnVuYykodm9pZCopKQogewotICAgIGludCBpLCBuID0gYXNkbF9zZXFfTEVOKHNlcSk7CisgICAgUHlfc3NpemVfdCBpLCBuID0gYXNkbF9zZXFfTEVOKHNlcSk7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5TGlzdF9OZXcobik7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIGlmICghcmVzdWx0KQpAQCAtNzc1LDYgKzgyMiw3IEBACiB9CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9pbnQobG9uZyBiKQogewpAQCAtODEyLDYgKzg2MCwxNSBAQAogICAgIHJldHVybiBvYmoyYXN0X29iamVjdChvYmosIG91dCwgYXJlbmEpOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfYnl0ZXMoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkFTVCBieXRlcyBtdXN0IGJlIG9mIHR5cGUgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBvYmoyYXN0X29iamVjdChvYmosIG91dCwgYXJlbmEpOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaW50KFB5T2JqZWN0KiBvYmosIGludCogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpbnQgaTsKQEAgLTkxMCwxMCArOTY3LDYgQEAKICAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFTVCIsIChQeU9iamVjdCopJkFTVF90eXBlKSA8IDApIHJldHVybiBOVUxMOycsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUNGX09OTFlfQVNUIiwgUHlDRl9PTkxZX0FTVCkgPCAwKScsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIE5VTEw7IiwgMikKLSAgICAgICAgIyBWYWx1ZSBvZiB2ZXJzaW9uOiAiJFJldmlzaW9uJCIKLSAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIiVzIikgPCAwKScKLSAgICAgICAgICAgICAgICAlIG1vZC52ZXJzaW9uLCAxKQotICAgICAgICBzZWxmLmVtaXQoInJldHVybiBOVUxMOyIsIDIpCiAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6CiAgICAgICAgICAgICBzZWxmLnZpc2l0KGRmbikKICAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gbTsiLCAxKQpAQCAtOTk3LDcgKzEwNTAsNyBAQAogICAgICAgICBmb3IgYSBpbiBzdW0uYXR0cmlidXRlczoKICAgICAgICAgICAgIHNlbGYuZW1pdCgidmFsdWUgPSBhc3Qyb2JqXyVzKG8tPiVzKTsiICUgKGEudHlwZSwgYS5uYW1lKSwgMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7IiwgMSkKLSAgICAgICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiJXMiLCB2YWx1ZSkgPCAwKScgJSBhLm5hbWUsIDEpCisgICAgICAgICAgICBzZWxmLmVtaXQoJ2lmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfJXMsIHZhbHVlKSA8IDApJyAlIGEubmFtZSwgMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgnZ290byBmYWlsZWQ7JywgMikKICAgICAgICAgICAgIHNlbGYuZW1pdCgnUHlfREVDUkVGKHZhbHVlKTsnLCAxKQogICAgICAgICBzZWxmLmZ1bmNfZW5kKCkKQEAgLTEwNDMsNyArMTA5Niw3IEBACiAgICAgICAgICAgICB2YWx1ZSA9ICJvLT52LiVzLiVzIiAlIChuYW1lLCBmaWVsZC5uYW1lKQogICAgICAgICBzZWxmLnNldChmaWVsZCwgdmFsdWUsIGRlcHRoKQogICAgICAgICBlbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCAwKQotICAgICAgICBlbWl0KCdpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICIlcyIsIHZhbHVlKSA9PSAtMSknICUgZmllbGQubmFtZSwgMCkKKyAgICAgICAgZW1pdCgnaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF8lcywgdmFsdWUpID09IC0xKScgJSBmaWVsZC5uYW1lLCAwKQogICAgICAgICBlbWl0KCJnb3RvIGZhaWxlZDsiLCAxKQogICAgICAgICBlbWl0KCJQeV9ERUNSRUYodmFsdWUpOyIsIDApCiAKQEAgLTEwNjYsNyArMTExOSw3IEBACiAgICAgICAgICAgICAgICAgIyBXaGlsZSB0aGUgc2VxdWVuY2UgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyB2b2lkKiwKICAgICAgICAgICAgICAgICAjIGFzdDJvYmpfY21wb3AgZXhwZWN0cyBhbiBlbnVtCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJ7IiwgZGVwdGgpCi0gICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTiglcyk7IiAlIHZhbHVlLCBkZXB0aCsxKQorICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBpLCBuID0gYXNkbF9zZXFfTEVOKCVzKTsiICUgdmFsdWUsIGRlcHRoKzEpCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJ2YWx1ZSA9IFB5TGlzdF9OZXcobik7IiwgZGVwdGgrMSkKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghdmFsdWUpIGdvdG8gZmFpbGVkOyIsIGRlcHRoKzEpCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJmb3IoaSA9IDA7IGkgPCBuOyBpKyspIiwgZGVwdGgrMSkKQEAgLTExMzQsMjQgKzExODcsMTIgQEAKIAogY29tbW9uX21zZyA9ICIvKiBGaWxlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5ICVzLiAqL1xuXG4iCiAKLWNfZmlsZV9tc2cgPSAiIiIKLS8qCi0gICBfX3ZlcnNpb25fXyAlcy4KLQotICAgVGhpcyBtb2R1bGUgbXVzdCBiZSBjb21taXR0ZWQgc2VwYXJhdGVseSBhZnRlciBlYWNoIEFTVCBncmFtbWFyIGNoYW5nZTsKLSAgIFRoZSBfX3ZlcnNpb25fXyBudW1iZXIgaXMgc2V0IHRvIHRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGNvbW1pdAotICAgY29udGFpbmluZyB0aGUgZ3JhbW1hciBjaGFuZ2UuCi0qLwotCi0iIiIKLQogZGVmIG1haW4oc3JjZmlsZSk6CiAgICAgYXJndjAgPSBzeXMuYXJndlswXQogICAgIGNvbXBvbmVudHMgPSBhcmd2MC5zcGxpdChvcy5zZXApCiAgICAgYXJndjAgPSBvcy5zZXAuam9pbihjb21wb25lbnRzWy0yOl0pCiAgICAgYXV0b19nZW5fbXNnID0gY29tbW9uX21zZyAlIGFyZ3YwCiAgICAgbW9kID0gYXNkbC5wYXJzZShzcmNmaWxlKQotICAgIG1vZC52ZXJzaW9uID0gIjgyMTYzIgogICAgIGlmIG5vdCBhc2RsLmNoZWNrKG1vZCk6CiAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgaWYgSU5DX0RJUjoKQEAgLTExNzMsNyArMTIxNCw4IEBACiAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4oU1JDX0RJUiwgc3RyKG1vZC5uYW1lKSArICItYXN0LmMiKQogICAgICAgICBmID0gb3BlbihwLCAidyIpCiAgICAgICAgIGYud3JpdGUoYXV0b19nZW5fbXNnKQotICAgICAgICBmLndyaXRlKGNfZmlsZV9tc2cgJSBtb2QudmVyc2lvbikKKyAgICAgICAgZi53cml0ZSgnI2luY2x1ZGUgPHN0ZGRlZi5oPlxuJykKKyAgICAgICAgZi53cml0ZSgnXG4nKQogICAgICAgICBmLndyaXRlKCcjaW5jbHVkZSAiUHl0aG9uLmgiXG4nKQogICAgICAgICBmLndyaXRlKCcjaW5jbHVkZSAiJXMtYXN0LmgiXG4nICUgbW9kLm5hbWUpCiAgICAgICAgIGYud3JpdGUoJ1xuJykKZGlmZiAtLWdpdCBhL1BhcnNlci9pbnRyY2hlY2suYyBiL1BhcnNlci9pbnRyY2hlY2suYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzOTg2NC4uMDAwMDAwMAotLS0gYS9QYXJzZXIvaW50cmNoZWNrLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotCi0vKiBDaGVjayBmb3IgaW50ZXJydXB0cyAqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKLQotI2lmZGVmIFFVSUNLV0lOCi0KLSNpbmNsdWRlIDxpby5oPgotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgX3d5aWVsZCgpOwotfQotCi0jZGVmaW5lIE9LCi0KLSNlbmRpZiAvKiBRVUlDS1dJTiAqLwotCi0jaWYgZGVmaW5lZChfTV9JWDg2KSAmJiAhZGVmaW5lZChfX1FOWF9fKQotI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTVNET1MpICYmICFkZWZpbmVkKFFVSUNLV0lOKQotCi0jaWZkZWYgX19HTlVDX18KLQotLyogVGhpcyBpcyBmb3IgREpHUFAncyBHTzMyIGV4dGVuZGVyLiAgSSBkb24ndCBrbm93IGhvdyB0byB0cmFwCi0gKiBjb250cm9sLUMgIChUaGVyZSdzIG5vIEFQSSBmb3IgY3RybC1DLCBhbmQgSSBkb24ndCB3YW50IHRvIG1lc3Mgd2l0aAotICogdGhlIGludGVycnVwdCB2ZWN0b3JzLikgIEhvd2V2ZXIsIHRoaXMgRE9FUyBjYXRjaCBjb250cm9sLWJyZWFrLgotICogLS1BbXJpdAotICovCi0KLSNpbmNsdWRlIDxnbzMyLmg+Ci0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLSAgICBfZ28zMl93YW50X2N0cmxfYnJlYWsoMSAvKiBUUlVFICovKTsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICByZXR1cm4gX2dvMzJfd2FzX2N0cmxfYnJlYWtfaGl0KCk7Ci19Ci0KLSNlbHNlIC8qICFfX0dOVUNfXyAqLwotCi0vKiBUaGlzIG1pZ2h0IHdvcmsgZm9yIE1TLURPUyAodW50ZXN0ZWQgdGhvdWdoKTogKi8KLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIGludCBpbnRlcnJ1cHRlZCA9IDA7Ci0gICAgd2hpbGUgKGtiaGl0KCkpIHsKLSAgICAgICAgaWYgKGdldGNoKCkgPT0gJ1wwMDMnKQotICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSAxOwotICAgIH0KLSAgICByZXR1cm4gaW50ZXJydXB0ZWQ7Ci19Ci0KLSNlbmRpZiAvKiBfX0dOVUNfXyAqLwotCi0jZGVmaW5lIE9LCi0KLSNlbmRpZiAvKiBNU0RPUyAmJiAhUVVJQ0tXSU4gKi8KLQotCi0jaWZuZGVmIE9LCi0KLS8qIERlZmF1bHQgdmVyc2lvbiAtLSBmb3IgcmVhbCBvcGVyYXRpbmcgc3lzdGVtcyBhbmQgZm9yIFN0YW5kYXJkIEMgKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLXN0YXRpYyBpbnQgaW50ZXJydXB0ZWQ7Ci0KLXZvaWQKLVB5RXJyX1NldEludGVycnVwdCh2b2lkKQotewotICAgIGludGVycnVwdGVkID0gMTsKLX0KLQotZXh0ZXJuIGludCBQeUVycl9DaGVja1NpZ25hbHModm9pZCk7Ci0KLXN0YXRpYyBpbnQKLWNoZWNrc2lnbmFsc193aXRoYXJnKHZvaWQgKiBhcmcpCi17Ci0gICAgcmV0dXJuIFB5RXJyX0NoZWNrU2lnbmFscygpOwotfQotCi1zdGF0aWMgdm9pZAotaW50Y2F0Y2hlcihpbnQgc2lnKQotewotICAgIGV4dGVybiB2b2lkIFB5X0V4aXQoaW50KTsKLSAgICBzdGF0aWMgY2hhciBtZXNzYWdlW10gPQotInB5dGhvbjogdG8gaW50ZXJydXB0IGEgdHJ1bHkgaGFuZ2luZyBQeXRob24gcHJvZ3JhbSwgaW50ZXJydXB0IG9uY2UgbW9yZS5cbiI7Ci0gICAgc3dpdGNoIChpbnRlcnJ1cHRlZCsrKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHdyaXRlKDIsIG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgaW50ZXJydXB0ZWQgPSAwOwotICAgICAgICBQeV9FeGl0KDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgUHlPU19zZXRzaWcoU0lHSU5ULCBpbnRjYXRjaGVyKTsKLSAgICBQeV9BZGRQZW5kaW5nQ2FsbChjaGVja3NpZ25hbHNfd2l0aGFyZywgTlVMTCk7Ci19Ci0KLXN0YXRpYyB2b2lkICgqb2xkX3NpZ2ludGhhbmRsZXIpKGludCkgPSBTSUdfREZMOwotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci0gICAgaWYgKChvbGRfc2lnaW50aGFuZGxlciA9IFB5T1Nfc2V0c2lnKFNJR0lOVCwgU0lHX0lHTikpICE9IFNJR19JR04pCi0gICAgICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgaW50Y2F0Y2hlcik7Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLSAgICBQeU9TX3NldHNpZyhTSUdJTlQsIG9sZF9zaWdpbnRoYW5kbGVyKTsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgaWYgKCFpbnRlcnJ1cHRlZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaW50ZXJydXB0ZWQgPSAwOwotICAgIHJldHVybiAxOwotfQotCi0jZW5kaWYgLyogIU9LICovCi0KLXZvaWQKLVB5T1NfQWZ0ZXJGb3JrKHZvaWQpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeUV2YWxfUmVJbml0VGhyZWFkcygpOwotICAgIFB5VGhyZWFkX1JlSW5pdFRMUygpOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9QYXJzZXIvbXlyZWFkbGluZS5jIGIvUGFyc2VyL215cmVhZGxpbmUuYwppbmRleCA5M2VkZDdmLi5kODY0NjIzIDEwMDY0NAotLS0gYS9QYXJzZXIvbXlyZWFkbGluZS5jCisrKyBiL1BhcnNlci9teXJlYWRsaW5lLmMKQEAgLTM1LDEyICszNSwxMSBAQAogc3RhdGljIGludAogbXlfZmdldHMoY2hhciAqYnVmLCBpbnQgbGVuLCBGSUxFICpmcCkKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudDsKKyNlbmRpZgogICAgIGNoYXIgKnA7CiAgICAgaW50IGVycjsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaW50IGk7Ci0jZW5kaWYKLQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChQeU9TX0lucHV0SG9vayAhPSBOVUxMKQogICAgICAgICAgICAgKHZvaWQpKFB5T1NfSW5wdXRIb29rKSgpOwpAQCAtNTcsMjAgKzU2LDI0IEBACiAgICAgICAgIC8qIEN0cmwtQyBhbnl3aGVyZSBvbiB0aGUgbGluZSBvciBDdHJsLVogaWYgdGhlIG9ubHkgY2hhcmFjdGVyCiAgICAgICAgICAgIG9uIGEgbGluZSB3aWxsIHNldCBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRC4gVW5kZXIgbm9ybWFsCiAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMgQ3RybC1DIHdpbGwgYWxzbyBoYXZlIGNhdXNlZCB0aGUgU0lHSU5UIGhhbmRsZXIKLSAgICAgICAgICAgdG8gZmlyZS4gVGhpcyBzaWduYWwgZmlyZXMgaW4gYW5vdGhlciB0aHJlYWQgYW5kIGlzIG5vdAotICAgICAgICAgICBndWFyYW50ZWVkIHRvIGhhdmUgb2NjdXJyZWQgYmVmb3JlIHRoaXMgcG9pbnQgaW4gdGhlIGNvZGUuCisgICAgICAgICAgIHRvIGZpcmUgd2hpY2ggd2lsbCBoYXZlIHNldCB0aGUgZXZlbnQgb2JqZWN0IHJldHVybmVkIGJ5CisgICAgICAgICAgIF9QeU9TX1NpZ2ludEV2ZW50LiBUaGlzIHNpZ25hbCBmaXJlcyBpbiBhbm90aGVyIHRocmVhZCBhbmQKKyAgICAgICAgICAgaXMgbm90IGd1YXJhbnRlZWQgdG8gaGF2ZSBvY2N1cnJlZCBiZWZvcmUgdGhpcyBwb2ludCBpbiB0aGUKKyAgICAgICAgICAgY29kZS4KIAotICAgICAgICAgICBUaGVyZWZvcmU6IGNoZWNrIGluIGEgc21hbGwgbG9vcCB0byBzZWUgaWYgdGhlIHRyaWdnZXIgaGFzCi0gICAgICAgICAgIGZpcmVkLCBpbiB3aGljaCBjYXNlIGFzc3VtZSB0aGlzIGlzIGEgQ3RybC1DIGV2ZW50LiBJZiBpdAotICAgICAgICAgICBoYXNuJ3QgZmlyZWQgd2l0aGluIDEwbXMgYXNzdW1lIHRoYXQgdGhpcyBpcyBhIEN0cmwtWiBvbiBpdHMKLSAgICAgICAgICAgb3duIG9yIHRoYXQgdGhlIHNpZ25hbCBpc24ndCBnb2luZyB0byBmaXJlIGZvciBzb21lIG90aGVyCi0gICAgICAgICAgIHJlYXNvbiBhbmQgZHJvcCB0aHJvdWdoIHRvIGNoZWNrIGZvciBFT0YuCisgICAgICAgICAgIFRoZXJlZm9yZTogY2hlY2sgd2hldGhlciB0aGUgZXZlbnQgaXMgc2V0IHdpdGggYSBzbWFsbCB0aW1lb3V0LgorICAgICAgICAgICBJZiBpdCBpcywgYXNzdW1lIHRoaXMgaXMgYSBDdHJsLUMgYW5kIHJlc2V0IHRoZSBldmVudC4gSWYgaXQKKyAgICAgICAgICAgaXNuJ3Qgc2V0IGFzc3VtZSB0aGF0IHRoaXMgaXMgYSBDdHJsLVogb24gaXRzIG93biBhbmQgZHJvcAorICAgICAgICAgICB0aHJvdWdoIHRvIGNoZWNrIGZvciBFT0YuCiAgICAgICAgICovCiAgICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKT09RVJST1JfT1BFUkFUSU9OX0FCT1JURUQpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T1NfSW50ZXJydXB0T2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBTbGVlcCgxKTsKKyAgICAgICAgICAgIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBzd2l0Y2ggKFdhaXRGb3JTaW5nbGVPYmplY3QoaEludGVycnVwdEV2ZW50LCAxMCkpIHsKKyAgICAgICAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEludGVycnVwdCAqLworICAgICAgICAgICAgY2FzZSBXQUlUX0ZBSUxFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLTI7IC8qIEVycm9yICovCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCkBAIC05MCw3ICs5Myw3IEBACiAjZW5kaWYKICAgICAgICAgICAgIGlmIChzIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0JICAgIC8qIHRyeSBhZ2FpbiAqLworICAgICAgICAvKiB0cnkgYWdhaW4gKi8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1BhcnNlci9ub2RlLmMgYi9QYXJzZXIvbm9kZS5jCmluZGV4IDBkZWEzMGYuLjFlNGYwZGEgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ub2RlLmMKKysrIGIvUGFyc2VyL25vZGUuYwpAQCAtNzEsNyArNzEsNyBAQAogICogY2FwYWNpdHkuICBUaGUgY29kZSBpcyB0cmlja3kgdG8gYXZvaWQgdGhhdC4KICAqLwogI2RlZmluZSBYWFhST1VORFVQKG4pICgobikgPD0gMSA/IChuKSA6ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAobikgPD0gMTI4ID8gKCgobikgKyAzKSAmIH4zKSA6ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgIChuKSA8PSAxMjggPyBfUHlfU0laRV9ST1VORF9VUCgobiksIDQpIDogXAogICAgICAgICAgICAgICAgZmFuY3lfcm91bmR1cChuKSkKIAogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2suYyBiL1BhcnNlci9wYXJzZXRvay5jCmluZGV4IGJiOWFmYzQuLjdiZWI3MzUgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXRvay5jCisrKyBiL1BhcnNlci9wYXJzZXRvay5jCkBAIC0xMyw3ICsxMyw3IEBACiAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyBub2RlICpwYXJzZXRvayhzdHJ1Y3QgdG9rX3N0YXRlICosIGdyYW1tYXIgKiwgaW50LCBwZXJyZGV0YWlsICosIGludCAqKTsKLXN0YXRpYyB2b2lkIGluaXRlcnIocGVycmRldGFpbCAqZXJyX3JldCwgY29uc3QgY2hhciogZmlsZW5hbWUpOworc3RhdGljIGludCBpbml0ZXJyKHBlcnJkZXRhaWwgKmVycl9yZXQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKIAogLyogUGFyc2UgaW5wdXQgY29taW5nIGZyb20gYSBzdHJpbmcuICBSZXR1cm4gZXJyb3IgY29kZSwgcHJpbnQgc29tZSBlcnJvcnMuICovCiBub2RlICoKQEAgLTQ4LDcgKzQ4LDggQEAKICAgICBzdHJ1Y3QgdG9rX3N0YXRlICp0b2s7CiAgICAgaW50IGV4ZWNfaW5wdXQgPSBzdGFydCA9PSBmaWxlX2lucHV0OwogCi0gICAgaW5pdGVycihlcnJfcmV0LCBmaWxlbmFtZSk7CisgICAgaWYgKGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoKmZsYWdzICYgUHlQQVJTRV9JR05PUkVfQ09PS0lFKQogICAgICAgICB0b2sgPSBQeVRva2VuaXplcl9Gcm9tVVRGOChzLCBleGVjX2lucHV0KTsKQEAgLTU5LDcgKzYwLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHRvay0+ZmlsZW5hbWUgPSBmaWxlbmFtZSA/IGZpbGVuYW1lIDogIjxzdHJpbmc+IjsKKyNpZm5kZWYgUEdFTgorICAgIFB5X0lOQ1JFRihlcnJfcmV0LT5maWxlbmFtZSk7CisgICAgdG9rLT5maWxlbmFtZSA9IGVycl9yZXQtPmZpbGVuYW1lOworI2VuZGlmCiAgICAgcmV0dXJuIHBhcnNldG9rKHRvaywgZywgc3RhcnQsIGVycl9yZXQsIGZsYWdzKTsKIH0KIApAQCAtOTAsMTMgKzk0LDE3IEBACiB7CiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogCi0gICAgaW5pdGVycihlcnJfcmV0LCBmaWxlbmFtZSk7CisgICAgaWYgKGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoKHRvayA9IFB5VG9rZW5pemVyX0Zyb21GaWxlKGZwLCAoY2hhciAqKWVuYywgcHMxLCBwczIpKSA9PSBOVUxMKSB7CiAgICAgICAgIGVycl9yZXQtPmVycm9yID0gRV9OT01FTTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRvay0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyNpZm5kZWYgUEdFTgorICAgIFB5X0lOQ1JFRihlcnJfcmV0LT5maWxlbmFtZSk7CisgICAgdG9rLT5maWxlbmFtZSA9IGVycl9yZXQtPmZpbGVuYW1lOworI2VuZGlmCiAgICAgcmV0dXJuIHBhcnNldG9rKHRvaywgZywgc3RhcnQsIGVycl9yZXQsIGZsYWdzKTsKIH0KIApAQCAtMjE2LDYgKzIyNCwzNiBAQAogICAgIGlmIChlcnJfcmV0LT5lcnJvciA9PSBFX0RPTkUpIHsKICAgICAgICAgbiA9IHBzLT5wX3RyZWU7CiAgICAgICAgIHBzLT5wX3RyZWUgPSBOVUxMOworCisjaWZuZGVmIFBHRU4KKyAgICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgc291cmNlIGZvciBhIHNpbmdsZSBpbnB1dCBzdGF0ZW1lbnQgcmVhbGx5CisgICAgICAgICAgIGlzIGEgc2luZ2xlIHN0YXRlbWVudCBieSBsb29raW5nIGF0IHdoYXQgaXMgbGVmdCBpbiB0aGUKKyAgICAgICAgICAgYnVmZmVyIGFmdGVyIHBhcnNpbmcuICBUcmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cworICAgICAgICAgICBhcmUgT0suICAqLworICAgICAgICBpZiAoc3RhcnQgPT0gc2luZ2xlX2lucHV0KSB7CisgICAgICAgICAgICBjaGFyICpjdXIgPSB0b2stPmN1cjsKKyAgICAgICAgICAgIGNoYXIgYyA9ICp0b2stPmN1cjsKKworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIHdoaWxlIChjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1wwMTQnKQorICAgICAgICAgICAgICAgICAgICBjID0gKisrY3VyOworCisgICAgICAgICAgICAgICAgaWYgKCFjKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGlmIChjICE9ICcjJykgeworICAgICAgICAgICAgICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfQkFEU0lOR0xFOworICAgICAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZShuKTsKKyAgICAgICAgICAgICAgICAgICAgbiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIFN1Y2sgdXAgY29tbWVudC4gKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAoYyAmJiBjICE9ICdcbicpCisgICAgICAgICAgICAgICAgICAgIGMgPSAqKytjdXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICBlbHNlCiAgICAgICAgIG4gPSBOVUxMOwpAQCAtMjI2LDcgKzI2NCw3IEBACiAgICAgUHlQYXJzZXJfRGVsZXRlKHBzKTsKIAogICAgIGlmIChuID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHRvay0+bGluZW5vIDw9IDEgJiYgdG9rLT5kb25lID09IEVfRU9GKQorICAgICAgICBpZiAodG9rLT5kb25lID09IEVfRU9GKQogICAgICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX0VPRjsKICAgICAgICAgZXJyX3JldC0+bGluZW5vID0gdG9rLT5saW5lbm87CiAgICAgICAgIGlmICh0b2stPmJ1ZiAhPSBOVUxMKSB7CkBAIC0yNjksMTQgKzMwNywyNCBAQAogICAgIHJldHVybiBuOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogaW5pdGVycihwZXJyZGV0YWlsICplcnJfcmV0LCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBlcnJfcmV0LT5lcnJvciA9IEVfT0s7Ci0gICAgZXJyX3JldC0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICBlcnJfcmV0LT5saW5lbm8gPSAwOwogICAgIGVycl9yZXQtPm9mZnNldCA9IDA7CiAgICAgZXJyX3JldC0+dGV4dCA9IE5VTEw7CiAgICAgZXJyX3JldC0+dG9rZW4gPSAtMTsKICAgICBlcnJfcmV0LT5leHBlY3RlZCA9IC0xOworI2lmbmRlZiBQR0VOCisgICAgaWYgKGZpbGVuYW1lKQorICAgICAgICBlcnJfcmV0LT5maWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOworICAgIGVsc2UKKyAgICAgICAgZXJyX3JldC0+ZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPHN0cmluZz4iKTsKKyAgICBpZiAoZXJyX3JldC0+ZmlsZW5hbWUgPT0gTlVMTCkgeworICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfRVJST1I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRva19wZ2VuLmMgYi9QYXJzZXIvcGFyc2V0b2tfcGdlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjkyODgKLS0tIC9kZXYvbnVsbAorKysgYi9QYXJzZXIvcGFyc2V0b2tfcGdlbi5jCkBAIC0wLDAgKzEsMiBAQAorI2RlZmluZSBQR0VOCisjaW5jbHVkZSAicGFyc2V0b2suYyIKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VubWFpbi5jIGIvUGFyc2VyL3BnZW5tYWluLmMKaW5kZXggNGI3YjU1YS4uNTJiODM4MCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW5tYWluLmMKKysrIGIvUGFyc2VyL3BnZW5tYWluLmMKQEAgLTI5LDYgKzI5LDggQEAKIC8qIEZvcndhcmQgKi8KIGdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpOwogCit2b2lkIFB5X0V4aXQoaW50KSBfUHlfTk9fUkVUVVJOOworCiB2b2lkCiBQeV9FeGl0KGludCBzdHMpCiB7CmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmMgYi9QYXJzZXIvdG9rZW5pemVyLmMKaW5kZXggNWJhMTJhNC4uOTNhNGE1YyAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5jCisrKyBiL1BhcnNlci90b2tlbml6ZXIuYwpAQCAtMTI4LDcgKzEyOCw2IEBACiAgICAgdG9rLT5wcm9tcHQgPSB0b2stPm5leHRwcm9tcHQgPSBOVUxMOwogICAgIHRvay0+bGluZW5vID0gMDsKICAgICB0b2stPmxldmVsID0gMDsKLSAgICB0b2stPmZpbGVuYW1lID0gTlVMTDsKICAgICB0b2stPmFsdHdhcm5pbmcgPSAxOwogICAgIHRvay0+YWx0ZXJyb3IgPSAxOwogICAgIHRvay0+YWx0dGFic2l6ZSA9IDE7CkBAIC0xNDAsNiArMTM5LDcgQEAKICAgICB0b2stPmVuY29kaW5nID0gTlVMTDsKICAgICB0b2stPmNvbnRfbGluZSA9IDA7CiAjaWZuZGVmIFBHRU4KKyAgICB0b2stPmZpbGVuYW1lID0gTlVMTDsKICAgICB0b2stPmRlY29kaW5nX3JlYWRsaW5lID0gTlVMTDsKICAgICB0b2stPmRlY29kaW5nX2J1ZmZlciA9IE5VTEw7CiAjZW5kaWYKQEAgLTQ2Miw2ICs0NjIsOCBAQAogZnBfc2V0cmVhZGwoc3RydWN0IHRva19zdGF0ZSAqdG9rLCBjb25zdCBjaGFyKiBlbmMpCiB7CiAgICAgUHlPYmplY3QgKnJlYWRsaW5lID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICppbyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CisgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOwogICAgIGludCBmZDsKIAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiaW8iKTsKQEAgLTQ3NCwxMyArNDc2LDEzIEBACiAgICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CiAKLSAgICBzdHJlYW0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lzT09PIiwKKyAgICBzdHJlYW0gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpc09PTyIsCiAgICAgICAgICAgICAgICAgICAgIGZkLCAiciIsIC0xLCBlbmMsIFB5X05vbmUsIFB5X05vbmUsIFB5X0ZhbHNlKTsKICAgICBpZiAoc3RyZWFtID09IE5VTEwpCiAgICAgICAgIGdvdG8gY2xlYW51cDsKIAogICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19yZWFkbGluZSk7Ci0gICAgcmVhZGxpbmUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cmVhbSwgInJlYWRsaW5lIik7CisgICAgcmVhZGxpbmUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfcmVhZGxpbmUpOwogICAgIHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUgPSByZWFkbGluZTsKIAogICAgIC8qIFRoZSBmaWxlIGhhcyBiZWVuIHJlb3BlbmVkOyBwYXJzaW5nIHdpbGwgcmVzdGFydCBmcm9tCkBAIC01NDUsNyArNTQ3LDYgQEAKIHsKICAgICBjaGFyICpsaW5lID0gTlVMTDsKICAgICBpbnQgYmFkY2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKHRvay0+ZGVjb2Rpbmdfc3RhdGUgPT0gU1RBVEVfTk9STUFMKSB7CiAgICAgICAgICAgICAvKiBXZSBhbHJlYWR5IGhhdmUgYSBjb2RlYyBhc3NvY2lhdGVkIHdpdGgKQEAgLTU4NiwxOSArNTg3LDEyIEBACiAgICAgaWYgKGJhZGNoYXIpIHsKICAgICAgICAgLyogTmVlZCB0byBhZGQgMSB0byB0aGUgbGluZSBudW1iZXIsIHNpbmNlIHRoaXMgbGluZQogICAgICAgICAgICBoYXMgbm90IGJlZW4gY291bnRlZCwgeWV0LiAgKi8KLSAgICAgICAgaWYgKHRvay0+ZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCh0b2stPmZpbGVuYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGZpbGU+Iik7Ci0gICAgICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJOb24tVVRGLTggY29kZSBzdGFydGluZyB3aXRoICdcXHglLjJ4JyAiCi0gICAgICAgICAgICAgICAgICAgICJpbiBmaWxlICVVIG9uIGxpbmUgJWksICIKLSAgICAgICAgICAgICAgICAgICAgImJ1dCBubyBlbmNvZGluZyBkZWNsYXJlZDsgIgotICAgICAgICAgICAgICAgICAgICAic2VlIGh0dHA6Ly9weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjYzLyBmb3IgZGV0YWlscyIsCi0gICAgICAgICAgICAgICAgICAgIGJhZGNoYXIsIGZpbGVuYW1lLCB0b2stPmxpbmVubyArIDEpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsCisgICAgICAgICAgICAgICAgIk5vbi1VVEYtOCBjb2RlIHN0YXJ0aW5nIHdpdGggJ1xceCUuMngnICIKKyAgICAgICAgICAgICAgICAiaW4gZmlsZSAlVSBvbiBsaW5lICVpLCAiCisgICAgICAgICAgICAgICAgImJ1dCBubyBlbmNvZGluZyBkZWNsYXJlZDsgIgorICAgICAgICAgICAgICAgICJzZWUgaHR0cDovL3B5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyNjMvIGZvciBkZXRhaWxzIiwKKyAgICAgICAgICAgICAgICBiYWRjaGFyLCB0b2stPmZpbGVuYW1lLCB0b2stPmxpbmVubyArIDEpOwogICAgICAgICByZXR1cm4gZXJyb3JfcmV0KHRvayk7CiAgICAgfQogI2VuZGlmCkBAIC04NTYsNiArODUwLDcgQEAKICNpZm5kZWYgUEdFTgogICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19yZWFkbGluZSk7CiAgICAgUHlfWERFQ1JFRih0b2stPmRlY29kaW5nX2J1ZmZlcik7CisgICAgUHlfWERFQ1JFRih0b2stPmZpbGVuYW1lKTsKICNlbmRpZgogICAgIGlmICh0b2stPmZwICE9IE5VTEwgJiYgdG9rLT5idWYgIT0gTlVMTCkKICAgICAgICAgUHlNZW1fRlJFRSh0b2stPmJ1Zik7CkBAIC0xMjUwLDggKzEyNDUsMTMgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmICh0b2stPmFsdHdhcm5pbmcpIHsKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiVzOiBpbmNvbnNpc3RlbnQgdXNlIG9mIHRhYnMgYW5kIHNwYWNlcyAiCisjaWZkZWYgUEdFTgorICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW5jb25zaXN0ZW50IHVzZSBvZiB0YWJzIGFuZCBzcGFjZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gaW5kZW50YXRpb25cbiIpOworI2Vsc2UKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIlVTogaW5jb25zaXN0ZW50IHVzZSBvZiB0YWJzIGFuZCBzcGFjZXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gaW5kZW50YXRpb25cbiIsIHRvay0+ZmlsZW5hbWUpOworI2VuZGlmCiAgICAgICAgIHRvay0+YWx0d2FybmluZyA9IDA7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTI2MCwxNCArMTI2MCwxNiBAQAogI2lmZGVmIFBHRU4KICNkZWZpbmUgdmVyaWZ5X2lkZW50aWZpZXIodG9rKSAxCiAjZWxzZQotLyogVmVyaWZ5IHRoYXQgdGhlIGlkZW50aWZpZXIgZm9sbG93cyBQRVAgMzEzMS4gKi8KKy8qIFZlcmlmeSB0aGF0IHRoZSBpZGVudGlmaWVyIGZvbGxvd3MgUEVQIDMxMzEuCisgICBBbGwgaWRlbnRpZmllciBzdHJpbmdzIGFyZSBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgdW5pY29kZSBvYmplY3RzLgorICovCiBzdGF0aWMgaW50CiB2ZXJpZnlfaWRlbnRpZmllcihzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCiB7CiAgICAgUHlPYmplY3QgKnM7CiAgICAgaW50IHJlc3VsdDsKICAgICBzID0gUHlVbmljb2RlX0RlY29kZVVURjgodG9rLT5zdGFydCwgdG9rLT5jdXIgLSB0b2stPnN0YXJ0LCBOVUxMKTsKLSAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgaWYgKHMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfSURFTlRJRklFUjsKQEAgLTE0MTAsMTMgKzE0MTIsMjAgQEAKICAgICAvKiBJZGVudGlmaWVyIChtb3N0IGZyZXF1ZW50IHRva2VuISkgKi8KICAgICBub25hc2NpaSA9IDA7CiAgICAgaWYgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX3N0YXJ0KGMpKSB7Ci0gICAgICAgIC8qIFByb2Nlc3MgYiIiLCByIiIgYW5kIGJyIiIgKi8KLSAgICAgICAgaWYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSB7Ci0gICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKQotICAgICAgICAgICAgICAgIGdvdG8gbGV0dGVyX3F1b3RlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjID09ICdyJyB8fCBjID09ICdSJykgeworICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KKyAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgICAgICBzYXdfYiA9IDE7CisgICAgICAgICAgICAvKiBTaW5jZSB0aGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBsaXRlcmFsIHdlIGRvbid0CisgICAgICAgICAgICAgICB3YW50IHRvIHN1cHBvcnQgaXQgaW4gYXJiaXRyYXJ5IG9yZGVyIGxpa2UgYnl0ZSBsaXRlcmFscy4gKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IpICYmIChjID09ICd1JyB8fCBjID09ICdVJykpCisgICAgICAgICAgICAgICAgc2F3X3UgPSAxOworICAgICAgICAgICAgLyogdXIiIiBhbmQgcnUiIiBhcmUgbm90IHN1cHBvcnRlZCAqLworICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkKKyAgICAgICAgICAgICAgICBzYXdfciA9IDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKQogICAgICAgICAgICAgICAgIGdvdG8gbGV0dGVyX3F1b3RlOwpAQCAtMTY5MiwxNyArMTcwMSwxOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8qIEdldCAtKi0gZW5jb2RpbmcgLSotIGZyb20gYSBQeXRob24gZmlsZS4KKy8qIEdldCB0aGUgZW5jb2Rpbmcgb2YgYSBQeXRob24gZmlsZS4gQ2hlY2sgZm9yIHRoZSBjb2RpbmcgY29va2llIGFuZCBjaGVjayBpZgorICAgdGhlIGZpbGUgc3RhcnRzIHdpdGggYSBCT00uCiAKLSAgIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyByZXR1cm5zIE5VTEwgd2hlbiBpdCBjYW4ndCBmaW5kIHRoZSBlbmNvZGluZyBpbgotICAgdGhlIGZpcnN0IG9yIHNlY29uZCBsaW5lIG9mIHRoZSBmaWxlIChpbiB3aGljaCBjYXNlIHRoZSBlbmNvZGluZwotICAgc2hvdWxkIGJlIGFzc3VtZWQgdG8gYmUgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpKS4KKyAgIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKCkgcmV0dXJucyBOVUxMIHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUKKyAgIGVuY29kaW5nIGluIHRoZSBmaXJzdCBvciBzZWNvbmQgbGluZSBvZiB0aGUgZmlsZSAoaW4gd2hpY2ggY2FzZSB0aGUgZW5jb2RpbmcKKyAgIHNob3VsZCBiZSBhc3N1bWVkIHRvIGJlIFVURi04KS4KIAotICAgVGhlIGNoYXIgKiByZXR1cm5lZCBpcyBtYWxsb2MnZWQgdmlhIFB5TWVtX01BTExPQygpIGFuZCB0aHVzIG11c3QgYmUgZnJlZWQKLSAgIGJ5IHRoZSBjYWxsZXIuCi0qLworICAgVGhlIGNoYXIqIHJldHVybmVkIGlzIG1hbGxvYydlZCB2aWEgUHlNZW1fTUFMTE9DKCkgYW5kIHRodXMgbXVzdCBiZSBmcmVlZAorICAgYnkgdGhlIGNhbGxlci4gKi8KKwogY2hhciAqCi1QeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50IGZkKQorUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoaW50IGZkLCBQeU9iamVjdCAqZmlsZW5hbWUpCiB7CiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogICAgIEZJTEUgKmZwOwpAQCAtMTcyMSw2ICsxNzMxLDIwIEBACiAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUEdFTgorICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7CisgICAgICAgIHRvay0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRvay0+ZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPHN0cmluZz4iKTsKKyAgICAgICAgaWYgKHRvay0+ZmlsZW5hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZmNsb3NlKGZwKTsKKyAgICAgICAgICAgIFB5VG9rZW5pemVyX0ZyZWUodG9rKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGluZzsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIHdoaWxlICh0b2stPmxpbmVubyA8IDIgJiYgdG9rLT5kb25lID09IEVfT0spIHsKICAgICAgICAgUHlUb2tlbml6ZXJfR2V0KHRvaywgJnBfc3RhcnQsICZwX2VuZCk7CiAgICAgfQpAQCAtMTczNCw2ICsxNzU4LDEyIEBACiAgICAgcmV0dXJuIGVuY29kaW5nOwogfQogCitjaGFyICoKK1B5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQgZmQpCit7CisgICAgcmV0dXJuIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGZkLCBOVUxMKTsKK30KKwogI2lmZGVmIFB5X0RFQlVHCiAKIHZvaWQKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuaCBiL1BhcnNlci90b2tlbml6ZXIuaAppbmRleCAyYmUzYmYyLi5lZDFmM2FhIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmgKKysrIGIvUGFyc2VyL3Rva2VuaXplci5oCkBAIC00MCw3ICs0MCwxMyBAQAogICAgIGludCBsZXZlbDsgICAgICAgICAgLyogKCkgW10ge30gUGFyZW50aGVzZXMgbmVzdGluZyBsZXZlbCAqLwogICAgICAgICAgICAgLyogVXNlZCB0byBhbGxvdyBmcmVlIGNvbnRpbnVhdGlvbnMgaW5zaWRlIHRoZW0gKi8KICAgICAvKiBTdHVmZiBmb3IgY2hlY2tpbmcgb24gZGlmZmVyZW50IHRhYiBzaXplcyAqLwotICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOyAgIC8qIGVuY29kZWQgdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KKyNpZm5kZWYgUEdFTgorICAgIC8qIHBnZW4gZG9lc24ndCBoYXZlIGFjY2VzcyB0byBQeXRob24gY29kZWNzLCBpdCBjYW5ub3QgZGVjb2RlIHRoZSBpbnB1dAorICAgICAgIGZpbGVuYW1lLiBUaGUgYnl0ZXMgZmlsZW5hbWUgbWlnaHQgYmUga2VwdCwgYnV0IGl0IGlzIG9ubHkgdXNlZCBieQorICAgICAgIGluZGVudGVycm9yKCkgYW5kIGl0IGlzIG5vdCByZWFsbHkgbmVlZGVkOiBwZ2VuIG9ubHkgY29tcGlsZXMgb25lIGZpbGUKKyAgICAgICAoR3JhbW1hci9HcmFtbWFyKS4gKi8KKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisjZW5kaWYKICAgICBpbnQgYWx0d2FybmluZzsgICAgIC8qIElzc3VlIHdhcm5pbmcgaWYgYWx0ZXJuYXRlIHRhYnMgZG9uJ3QgbWF0Y2ggKi8KICAgICBpbnQgYWx0ZXJyb3I7ICAgICAgIC8qIElzc3VlIGVycm9yIGlmIGFsdGVybmF0ZSB0YWJzIGRvbid0IG1hdGNoICovCiAgICAgaW50IGFsdHRhYnNpemU7ICAgICAvKiBBbHRlcm5hdGUgdGFiIHNwYWNpbmcgKi8KQEAgLTY5LDcgKzc1LDYgQEAKIGV4dGVybiBpbnQgUHlUb2tlbml6ZXJfR2V0KHN0cnVjdCB0b2tfc3RhdGUgKiwgY2hhciAqKiwgY2hhciAqKik7CiBleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX1Jlc3RvcmVFbmNvZGluZyhzdHJ1Y3QgdG9rX3N0YXRlKiB0b2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLCBpbnQgKm9mZnNldCk7Ci1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9QeXRob24tYXN0LmMgYi9QeXRob24vUHl0aG9uLWFzdC5jCmluZGV4IGEyNzZiNmMuLmU2ZjFlNTggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtMSwxMyArMSw2IEBACiAvKiBGaWxlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IFBhcnNlci9hc2RsX2MucHkuICovCiAKLQotLyoKLSAgIF9fdmVyc2lvbl9fIDgyMTYzLgotCi0gICBUaGlzIG1vZHVsZSBtdXN0IGJlIGNvbW1pdHRlZCBzZXBhcmF0ZWx5IGFmdGVyIGVhY2ggQVNUIGdyYW1tYXIgY2hhbmdlOwotICAgVGhlIF9fdmVyc2lvbl9fIG51bWJlciBpcyBzZXQgdG8gdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgY29tbWl0Ci0gICBjb250YWluaW5nIHRoZSBncmFtbWFyIGNoYW5nZS4KLSovCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJQeXRob24tYXN0LmgiCkBAIC0xNiw2ICs5LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKm1vZF90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX21vZCh2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpNb2R1bGVfdHlwZTsKK19QeV9JREVOVElGSUVSKGJvZHkpOwogc3RhdGljIGNoYXIgKk1vZHVsZV9maWVsZHNbXT17CiAgICAgICAgICJib2R5IiwKIH07CkBAIC0zMiwxMiArMjYsMTggQEAKICAgICAgICAgImJvZHkiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKnN0bXRfdHlwZTsKK19QeV9JREVOVElGSUVSKGxpbmVubyk7CitfUHlfSURFTlRJRklFUihjb2xfb2Zmc2V0KTsKIHN0YXRpYyBjaGFyICpzdG10X2F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgImxpbmVubyIsCiAgICAgICAgICJjb2xfb2Zmc2V0IiwKIH07CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfc3RtdCh2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpGdW5jdGlvbkRlZl90eXBlOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihhcmdzKTsKK19QeV9JREVOVElGSUVSKGRlY29yYXRvcl9saXN0KTsKK19QeV9JREVOVElGSUVSKHJldHVybnMpOwogc3RhdGljIGNoYXIgKkZ1bmN0aW9uRGVmX2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWUiLAogICAgICAgICAiYXJncyIsCkBAIC00Niw2ICs0NiwxMCBAQAogICAgICAgICAicmV0dXJucyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQ2xhc3NEZWZfdHlwZTsKK19QeV9JREVOVElGSUVSKGJhc2VzKTsKK19QeV9JREVOVElGSUVSKGtleXdvcmRzKTsKK19QeV9JREVOVElGSUVSKHN0YXJhcmdzKTsKK19QeV9JREVOVElGSUVSKGt3YXJncyk7CiBzdGF0aWMgY2hhciAqQ2xhc3NEZWZfZmllbGRzW109ewogICAgICAgICAibmFtZSIsCiAgICAgICAgICJiYXNlcyIsCkBAIC01NiwxMCArNjAsMTIgQEAKICAgICAgICAgImRlY29yYXRvcl9saXN0IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpSZXR1cm5fdHlwZTsKK19QeV9JREVOVElGSUVSKHZhbHVlKTsKIHN0YXRpYyBjaGFyICpSZXR1cm5fZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkRlbGV0ZV90eXBlOworX1B5X0lERU5USUZJRVIodGFyZ2V0cyk7CiBzdGF0aWMgY2hhciAqRGVsZXRlX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldHMiLAogfTsKQEAgLTY5LDEyICs3NSwxNiBAQAogICAgICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF1Z0Fzc2lnbl90eXBlOworX1B5X0lERU5USUZJRVIodGFyZ2V0KTsKK19QeV9JREVOVElGSUVSKG9wKTsKIHN0YXRpYyBjaGFyICpBdWdBc3NpZ25fZmllbGRzW109ewogICAgICAgICAidGFyZ2V0IiwKICAgICAgICAgIm9wIiwKICAgICAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpGb3JfdHlwZTsKK19QeV9JREVOVElGSUVSKGl0ZXIpOworX1B5X0lERU5USUZJRVIob3JlbHNlKTsKIHN0YXRpYyBjaGFyICpGb3JfZmllbGRzW109ewogICAgICAgICAidGFyZ2V0IiwKICAgICAgICAgIml0ZXIiLApAQCAtODIsNiArOTIsNyBAQAogICAgICAgICAib3JlbHNlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpXaGlsZV90eXBlOworX1B5X0lERU5USUZJRVIodGVzdCk7CiBzdGF0aWMgY2hhciAqV2hpbGVfZmllbGRzW109ewogICAgICAgICAidGVzdCIsCiAgICAgICAgICJib2R5IiwKQEAgLTk0LDM3ICsxMDUsNDEgQEAKICAgICAgICAgIm9yZWxzZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqV2l0aF90eXBlOworX1B5X0lERU5USUZJRVIoaXRlbXMpOwogc3RhdGljIGNoYXIgKldpdGhfZmllbGRzW109ewotICAgICAgICAiY29udGV4dF9leHByIiwKLSAgICAgICAgIm9wdGlvbmFsX3ZhcnMiLAorICAgICAgICAiaXRlbXMiLAogICAgICAgICAiYm9keSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqUmFpc2VfdHlwZTsKK19QeV9JREVOVElGSUVSKGV4Yyk7CitfUHlfSURFTlRJRklFUihjYXVzZSk7CiBzdGF0aWMgY2hhciAqUmFpc2VfZmllbGRzW109ewogICAgICAgICAiZXhjIiwKICAgICAgICAgImNhdXNlIiwKIH07Ci1zdGF0aWMgUHlUeXBlT2JqZWN0ICpUcnlFeGNlcHRfdHlwZTsKLXN0YXRpYyBjaGFyICpUcnlFeGNlcHRfZmllbGRzW109eworc3RhdGljIFB5VHlwZU9iamVjdCAqVHJ5X3R5cGU7CitfUHlfSURFTlRJRklFUihoYW5kbGVycyk7CitfUHlfSURFTlRJRklFUihmaW5hbGJvZHkpOworc3RhdGljIGNoYXIgKlRyeV9maWVsZHNbXT17CiAgICAgICAgICJib2R5IiwKICAgICAgICAgImhhbmRsZXJzIiwKICAgICAgICAgIm9yZWxzZSIsCi19Owotc3RhdGljIFB5VHlwZU9iamVjdCAqVHJ5RmluYWxseV90eXBlOwotc3RhdGljIGNoYXIgKlRyeUZpbmFsbHlfZmllbGRzW109ewotICAgICAgICAiYm9keSIsCiAgICAgICAgICJmaW5hbGJvZHkiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkFzc2VydF90eXBlOworX1B5X0lERU5USUZJRVIobXNnKTsKIHN0YXRpYyBjaGFyICpBc3NlcnRfZmllbGRzW109ewogICAgICAgICAidGVzdCIsCiAgICAgICAgICJtc2ciLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkltcG9ydF90eXBlOworX1B5X0lERU5USUZJRVIobmFtZXMpOwogc3RhdGljIGNoYXIgKkltcG9ydF9maWVsZHNbXT17CiAgICAgICAgICJuYW1lcyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqSW1wb3J0RnJvbV90eXBlOworX1B5X0lERU5USUZJRVIobW9kdWxlKTsKK19QeV9JREVOVElGSUVSKGxldmVsKTsKIHN0YXRpYyBjaGFyICpJbXBvcnRGcm9tX2ZpZWxkc1tdPXsKICAgICAgICAgIm1vZHVsZSIsCiAgICAgICAgICJuYW1lcyIsCkBAIC0xNTIsMTcgKzE2NywyMSBAQAogfTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9leHByKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkJvb2xPcF90eXBlOworX1B5X0lERU5USUZJRVIodmFsdWVzKTsKIHN0YXRpYyBjaGFyICpCb29sT3BfZmllbGRzW109ewogICAgICAgICAib3AiLAogICAgICAgICAidmFsdWVzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpCaW5PcF90eXBlOworX1B5X0lERU5USUZJRVIobGVmdCk7CitfUHlfSURFTlRJRklFUihyaWdodCk7CiBzdGF0aWMgY2hhciAqQmluT3BfZmllbGRzW109ewogICAgICAgICAibGVmdCIsCiAgICAgICAgICJvcCIsCiAgICAgICAgICJyaWdodCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqVW5hcnlPcF90eXBlOworX1B5X0lERU5USUZJRVIob3BlcmFuZCk7CiBzdGF0aWMgY2hhciAqVW5hcnlPcF9maWVsZHNbXT17CiAgICAgICAgICJvcCIsCiAgICAgICAgICJvcGVyYW5kIiwKQEAgLTE3OSwxNSArMTk4LDE5IEBACiAgICAgICAgICJvcmVsc2UiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkRpY3RfdHlwZTsKK19QeV9JREVOVElGSUVSKGtleXMpOwogc3RhdGljIGNoYXIgKkRpY3RfZmllbGRzW109ewogICAgICAgICAia2V5cyIsCiAgICAgICAgICJ2YWx1ZXMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlNldF90eXBlOworX1B5X0lERU5USUZJRVIoZWx0cyk7CiBzdGF0aWMgY2hhciAqU2V0X2ZpZWxkc1tdPXsKICAgICAgICAgImVsdHMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkxpc3RDb21wX3R5cGU7CitfUHlfSURFTlRJRklFUihlbHQpOworX1B5X0lERU5USUZJRVIoZ2VuZXJhdG9ycyk7CiBzdGF0aWMgY2hhciAqTGlzdENvbXBfZmllbGRzW109ewogICAgICAgICAiZWx0IiwKICAgICAgICAgImdlbmVyYXRvcnMiLApAQCAtMTk4LDYgKzIyMSw3IEBACiAgICAgICAgICJnZW5lcmF0b3JzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEaWN0Q29tcF90eXBlOworX1B5X0lERU5USUZJRVIoa2V5KTsKIHN0YXRpYyBjaGFyICpEaWN0Q29tcF9maWVsZHNbXT17CiAgICAgICAgICJrZXkiLAogICAgICAgICAidmFsdWUiLApAQCAtMjEyLDEzICsyMzYsMjAgQEAKIHN0YXRpYyBjaGFyICpZaWVsZF9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqWWllbGRGcm9tX3R5cGU7CitzdGF0aWMgY2hhciAqWWllbGRGcm9tX2ZpZWxkc1tdPXsKKyAgICAgICAgInZhbHVlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDb21wYXJlX3R5cGU7CitfUHlfSURFTlRJRklFUihvcHMpOworX1B5X0lERU5USUZJRVIoY29tcGFyYXRvcnMpOwogc3RhdGljIGNoYXIgKkNvbXBhcmVfZmllbGRzW109ewogICAgICAgICAibGVmdCIsCiAgICAgICAgICJvcHMiLAogICAgICAgICAiY29tcGFyYXRvcnMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNhbGxfdHlwZTsKK19QeV9JREVOVElGSUVSKGZ1bmMpOwogc3RhdGljIGNoYXIgKkNhbGxfZmllbGRzW109ewogICAgICAgICAiZnVuYyIsCiAgICAgICAgICJhcmdzIiwKQEAgLTIyNywxMCArMjU4LDEyIEBACiAgICAgICAgICJrd2FyZ3MiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk51bV90eXBlOworX1B5X0lERU5USUZJRVIobik7CiBzdGF0aWMgY2hhciAqTnVtX2ZpZWxkc1tdPXsKICAgICAgICAgIm4iLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlN0cl90eXBlOworX1B5X0lERU5USUZJRVIocyk7CiBzdGF0aWMgY2hhciAqU3RyX2ZpZWxkc1tdPXsKICAgICAgICAgInMiLAogfTsKQEAgLTI0MCwxMiArMjczLDE1IEBACiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRWxsaXBzaXNfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF0dHJpYnV0ZV90eXBlOworX1B5X0lERU5USUZJRVIoYXR0cik7CitfUHlfSURFTlRJRklFUihjdHgpOwogc3RhdGljIGNoYXIgKkF0dHJpYnV0ZV9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiAgICAgICAgICJhdHRyIiwKICAgICAgICAgImN0eCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqU3Vic2NyaXB0X3R5cGU7CitfUHlfSURFTlRJRklFUihzbGljZSk7CiBzdGF0aWMgY2hhciAqU3Vic2NyaXB0X2ZpZWxkc1tdPXsKICAgICAgICAgInZhbHVlIiwKICAgICAgICAgInNsaWNlIiwKQEAgLTI1Nyw2ICsyOTMsNyBAQAogICAgICAgICAiY3R4IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOYW1lX3R5cGU7CitfUHlfSURFTlRJRklFUihpZCk7CiBzdGF0aWMgY2hhciAqTmFtZV9maWVsZHNbXT17CiAgICAgICAgICJpZCIsCiAgICAgICAgICJjdHgiLApAQCAtMjg0LDEyICszMjEsMTYgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKnNsaWNlX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfc2xpY2Uodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqU2xpY2VfdHlwZTsKK19QeV9JREVOVElGSUVSKGxvd2VyKTsKK19QeV9JREVOVElGSUVSKHVwcGVyKTsKK19QeV9JREVOVElGSUVSKHN0ZXApOwogc3RhdGljIGNoYXIgKlNsaWNlX2ZpZWxkc1tdPXsKICAgICAgICAgImxvd2VyIiwKICAgICAgICAgInVwcGVyIiwKICAgICAgICAgInN0ZXAiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkV4dFNsaWNlX3R5cGU7CitfUHlfSURFTlRJRklFUihkaW1zKTsKIHN0YXRpYyBjaGFyICpFeHRTbGljZV9maWVsZHNbXT17CiAgICAgICAgICJkaW1zIiwKIH07CkBAIC0zNDUsNiArMzg2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk5vdEluX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpjb21wcmVoZW5zaW9uX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfY29tcHJlaGVuc2lvbih2b2lkKik7CitfUHlfSURFTlRJRklFUihpZnMpOwogc3RhdGljIGNoYXIgKmNvbXByZWhlbnNpb25fZmllbGRzW109ewogICAgICAgICAidGFyZ2V0IiwKICAgICAgICAgIml0ZXIiLApAQCAtMzU3LDYgKzM5OSw3IEBACiB9Owogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2V4Y2VwdGhhbmRsZXIodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqRXhjZXB0SGFuZGxlcl90eXBlOworX1B5X0lERU5USUZJRVIodHlwZSk7CiBzdGF0aWMgY2hhciAqRXhjZXB0SGFuZGxlcl9maWVsZHNbXT17CiAgICAgICAgICJ0eXBlIiwKICAgICAgICAgIm5hbWUiLApAQCAtMzY0LDYgKzQwNywxMyBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFyZ3VtZW50c190eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2FyZ3VtZW50cyh2b2lkKik7CitfUHlfSURFTlRJRklFUih2YXJhcmcpOworX1B5X0lERU5USUZJRVIodmFyYXJnYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihrd29ubHlhcmdzKTsKK19QeV9JREVOVElGSUVSKGt3YXJnKTsKK19QeV9JREVOVElGSUVSKGt3YXJnYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihkZWZhdWx0cyk7CitfUHlfSURFTlRJRklFUihrd19kZWZhdWx0cyk7CiBzdGF0aWMgY2hhciAqYXJndW1lbnRzX2ZpZWxkc1tdPXsKICAgICAgICAgImFyZ3MiLAogICAgICAgICAidmFyYXJnIiwKQEAgLTM3Niw2ICs0MjYsOCBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFyZ190eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2FyZyh2b2lkKik7CitfUHlfSURFTlRJRklFUihhcmcpOworX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CiBzdGF0aWMgY2hhciAqYXJnX2ZpZWxkc1tdPXsKICAgICAgICAgImFyZyIsCiAgICAgICAgICJhbm5vdGF0aW9uIiwKQEAgLTM4OCwxOSArNDQwLDU0IEBACiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqYWxpYXNfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hbGlhcyh2b2lkKik7CitfUHlfSURFTlRJRklFUihhc25hbWUpOwogc3RhdGljIGNoYXIgKmFsaWFzX2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWUiLAogICAgICAgICAiYXNuYW1lIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICp3aXRoaXRlbV90eXBlOworc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX3dpdGhpdGVtKHZvaWQqKTsKK19QeV9JREVOVElGSUVSKGNvbnRleHRfZXhwcik7CitfUHlfSURFTlRJRklFUihvcHRpb25hbF92YXJzKTsKK3N0YXRpYyBjaGFyICp3aXRoaXRlbV9maWVsZHNbXT17CisgICAgICAgICJjb250ZXh0X2V4cHIiLAorICAgICAgICAib3B0aW9uYWxfdmFycyIsCit9OwogCiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmRpY3Q7Cit9IEFTVF9vYmplY3Q7CisKK3N0YXRpYyB2b2lkCithc3RfZGVhbGxvYyhBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK2FzdF90cmF2ZXJzZShBU1Rfb2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2FzdF9jbGVhcihBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworfQorCiBzdGF0aWMgaW50CiBhc3RfdHlwZV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogeworICAgIF9QeV9JREVOVElGSUVSKF9maWVsZHMpOwogICAgIFB5X3NzaXplX3QgaSwgbnVtZmllbGRzID0gMDsKICAgICBpbnQgcmVzID0gLTE7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZmllbGRzOwotICAgIGZpZWxkcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAiX2ZpZWxkcyIpOworICAgIGZpZWxkcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAmUHlJZF9fZmllbGRzKTsKICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBpZiAoZmllbGRzKSB7CkBAIC00NTAsNyArNTM3LDggQEAKIGFzdF90eXBlX3JlZHVjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLCAiX19kaWN0X18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC00NzAsMTIgKzU1OCwxNyBAQAogICAgIHtOVUxMfQogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGFzdF90eXBlX2dldHNldHNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgQVNUX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiX2FzdC5BU1QiLAotICAgIHNpemVvZihQeU9iamVjdCksCisgICAgc2l6ZW9mKEFTVF9vYmplY3QpLAogICAgIDAsCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3RfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTQ5MCwyNiArNTgzLDI2IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCiAgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgKHRyYXZlcnNlcHJvYylhc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYXN0X2NsZWFyLCAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBhc3RfdHlwZV9tZXRob2RzLCAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGFzdF90eXBlX2dldHNldHMsICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKEFTVF9vYmplY3QsIGRpY3QpLC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAoaW5pdHByb2MpYXN0X3R5cGVfaW5pdCwgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTUzNiw2ICs2MjksNyBAQAogc3RhdGljIGludCBhZGRfYXR0cmlidXRlcyhQeVR5cGVPYmplY3QqIHR5cGUsIGNoYXIqKmF0dHJzLCBpbnQgbnVtX2ZpZWxkcykKIHsKICAgICBpbnQgaSwgcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9hdHRyaWJ1dGVzKTsKICAgICBQeU9iamVjdCAqcywgKmwgPSBQeVR1cGxlX05ldyhudW1fZmllbGRzKTsKICAgICBpZiAoIWwpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTQ3LDcgKzY0MSw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShsLCBpLCBzKTsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0clN0cmluZygoUHlPYmplY3QqKXR5cGUsICJfYXR0cmlidXRlcyIsIGwpID49IDA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X1NldEF0dHJJZCgoUHlPYmplY3QqKXR5cGUsICZQeUlkX19hdHRyaWJ1dGVzLCBsKSA+PSAwOwogICAgIFB5X0RFQ1JFRihsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTU2LDcgKzY1MCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9saXN0KGFzZGxfc2VxICpzZXEsIFB5T2JqZWN0KiAoKmZ1bmMpKHZvaWQqKSkKIHsKLSAgICBpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUxpc3RfTmV3KG4pOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTU4MSw2ICs2NzUsNyBAQAogfQogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfaW50KGxvbmcgYikKIHsKQEAgLTYxOCw2ICs3MTMsMTUgQEAKICAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2J5dGVzKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJBU1QgYnl0ZXMgbXVzdCBiZSBvZiB0eXBlIGJ5dGVzIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2ludChQeU9iamVjdCogb2JqLCBpbnQqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaW50IGk7CkBAIC02OTEsMTUgKzc5NSwxMiBAQAogICAgICAgICBpZiAoIVdoaWxlX3R5cGUpIHJldHVybiAwOwogICAgICAgICBJZl90eXBlID0gbWFrZV90eXBlKCJJZiIsIHN0bXRfdHlwZSwgSWZfZmllbGRzLCAzKTsKICAgICAgICAgaWYgKCFJZl90eXBlKSByZXR1cm4gMDsKLSAgICAgICAgV2l0aF90eXBlID0gbWFrZV90eXBlKCJXaXRoIiwgc3RtdF90eXBlLCBXaXRoX2ZpZWxkcywgMyk7CisgICAgICAgIFdpdGhfdHlwZSA9IG1ha2VfdHlwZSgiV2l0aCIsIHN0bXRfdHlwZSwgV2l0aF9maWVsZHMsIDIpOwogICAgICAgICBpZiAoIVdpdGhfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIFJhaXNlX3R5cGUgPSBtYWtlX3R5cGUoIlJhaXNlIiwgc3RtdF90eXBlLCBSYWlzZV9maWVsZHMsIDIpOwogICAgICAgICBpZiAoIVJhaXNlX3R5cGUpIHJldHVybiAwOwotICAgICAgICBUcnlFeGNlcHRfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5RXhjZXB0Iiwgc3RtdF90eXBlLCBUcnlFeGNlcHRfZmllbGRzLCAzKTsKLSAgICAgICAgaWYgKCFUcnlFeGNlcHRfdHlwZSkgcmV0dXJuIDA7Ci0gICAgICAgIFRyeUZpbmFsbHlfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5RmluYWxseSIsIHN0bXRfdHlwZSwgVHJ5RmluYWxseV9maWVsZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyKTsKLSAgICAgICAgaWYgKCFUcnlGaW5hbGx5X3R5cGUpIHJldHVybiAwOworICAgICAgICBUcnlfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5Iiwgc3RtdF90eXBlLCBUcnlfZmllbGRzLCA0KTsKKyAgICAgICAgaWYgKCFUcnlfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIEFzc2VydF90eXBlID0gbWFrZV90eXBlKCJBc3NlcnQiLCBzdG10X3R5cGUsIEFzc2VydF9maWVsZHMsIDIpOwogICAgICAgICBpZiAoIUFzc2VydF90eXBlKSByZXR1cm4gMDsKICAgICAgICAgSW1wb3J0X3R5cGUgPSBtYWtlX3R5cGUoIkltcG9ydCIsIHN0bXRfdHlwZSwgSW1wb3J0X2ZpZWxkcywgMSk7CkBAIC03NDcsNiArODQ4LDggQEAKICAgICAgICAgaWYgKCFHZW5lcmF0b3JFeHBfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIFlpZWxkX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkIiwgZXhwcl90eXBlLCBZaWVsZF9maWVsZHMsIDEpOwogICAgICAgICBpZiAoIVlpZWxkX3R5cGUpIHJldHVybiAwOworICAgICAgICBZaWVsZEZyb21fdHlwZSA9IG1ha2VfdHlwZSgiWWllbGRGcm9tIiwgZXhwcl90eXBlLCBZaWVsZEZyb21fZmllbGRzLCAxKTsKKyAgICAgICAgaWYgKCFZaWVsZEZyb21fdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIENvbXBhcmVfdHlwZSA9IG1ha2VfdHlwZSgiQ29tcGFyZSIsIGV4cHJfdHlwZSwgQ29tcGFyZV9maWVsZHMsIDMpOwogICAgICAgICBpZiAoIUNvbXBhcmVfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIENhbGxfdHlwZSA9IG1ha2VfdHlwZSgiQ2FsbCIsIGV4cHJfdHlwZSwgQ2FsbF9maWVsZHMsIDUpOwpAQCAtOTQ5LDYgKzEwNTIsOCBAQAogICAgICAgICBpZiAoIWtleXdvcmRfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIGFsaWFzX3R5cGUgPSBtYWtlX3R5cGUoImFsaWFzIiwgJkFTVF90eXBlLCBhbGlhc19maWVsZHMsIDIpOwogICAgICAgICBpZiAoIWFsaWFzX3R5cGUpIHJldHVybiAwOworICAgICAgICB3aXRoaXRlbV90eXBlID0gbWFrZV90eXBlKCJ3aXRoaXRlbSIsICZBU1RfdHlwZSwgd2l0aGl0ZW1fZmllbGRzLCAyKTsKKyAgICAgICAgaWYgKCF3aXRoaXRlbV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMTsKIH0KQEAgLTk3MSw2ICsxMDc2LDcgQEAKIHN0YXRpYyBpbnQgb2JqMmFzdF9hcmcoUHlPYmplY3QqIG9iaiwgYXJnX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKIHN0YXRpYyBpbnQgb2JqMmFzdF9rZXl3b3JkKFB5T2JqZWN0KiBvYmosIGtleXdvcmRfdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpOwogc3RhdGljIGludCBvYmoyYXN0X2FsaWFzKFB5T2JqZWN0KiBvYmosIGFsaWFzX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKK3N0YXRpYyBpbnQgb2JqMmFzdF93aXRoaXRlbShQeU9iamVjdCogb2JqLCB3aXRoaXRlbV90eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CiAKIG1vZF90eQogTW9kdWxlKGFzZGxfc2VxICogYm9keSwgUHlBcmVuYSAqYXJlbmEpCkBAIC0xMjM2LDIxICsxMzQyLDE1IEBACiB9CiAKIHN0bXRfdHkKLVdpdGgoZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLAotICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCitXaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgKmFyZW5hKQogewogICAgICAgICBzdG10X3R5IHA7Ci0gICAgICAgIGlmICghY29udGV4dF9leHByKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBjb250ZXh0X2V4cHIgaXMgcmVxdWlyZWQgZm9yIFdpdGgiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOwogICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHAtPmtpbmQgPSBXaXRoX2tpbmQ7Ci0gICAgICAgIHAtPnYuV2l0aC5jb250ZXh0X2V4cHIgPSBjb250ZXh0X2V4cHI7Ci0gICAgICAgIHAtPnYuV2l0aC5vcHRpb25hbF92YXJzID0gb3B0aW9uYWxfdmFyczsKKyAgICAgICAgcC0+di5XaXRoLml0ZW1zID0gaXRlbXM7CiAgICAgICAgIHAtPnYuV2l0aC5ib2R5ID0gYm9keTsKICAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOwogICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKQEAgLTEyNzMsMzMgKzEzNzMsMTggQEAKIH0KIAogc3RtdF90eQotVHJ5RXhjZXB0KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sCi0gICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorVHJ5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsIGFzZGxfc2VxICoKKyAgICBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICAgICAgc3RtdF90eSBwOwogICAgICAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOwogICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAtPmtpbmQgPSBUcnlFeGNlcHRfa2luZDsKLSAgICAgICAgcC0+di5UcnlFeGNlcHQuYm9keSA9IGJvZHk7Ci0gICAgICAgIHAtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzID0gaGFuZGxlcnM7Ci0gICAgICAgIHAtPnYuVHJ5RXhjZXB0Lm9yZWxzZSA9IG9yZWxzZTsKLSAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOwotICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKLSAgICAgICAgcmV0dXJuIHA7Ci19Ci0KLXN0bXRfdHkKLVRyeUZpbmFsbHkoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGZpbmFsYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCi0gICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQotewotICAgICAgICBzdG10X3R5IHA7Ci0gICAgICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7Ci0gICAgICAgIGlmICghcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcC0+a2luZCA9IFRyeUZpbmFsbHlfa2luZDsKLSAgICAgICAgcC0+di5UcnlGaW5hbGx5LmJvZHkgPSBib2R5OwotICAgICAgICBwLT52LlRyeUZpbmFsbHkuZmluYWxib2R5ID0gZmluYWxib2R5OworICAgICAgICBwLT5raW5kID0gVHJ5X2tpbmQ7CisgICAgICAgIHAtPnYuVHJ5LmJvZHkgPSBib2R5OworICAgICAgICBwLT52LlRyeS5oYW5kbGVycyA9IGhhbmRsZXJzOworICAgICAgICBwLT52LlRyeS5vcmVsc2UgPSBvcmVsc2U7CisgICAgICAgIHAtPnYuVHJ5LmZpbmFsYm9keSA9IGZpbmFsYm9keTsKICAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOwogICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKICAgICAgICAgcmV0dXJuIHA7CkBAIC0xNzE0LDYgKzE3OTksMjUgQEAKIH0KIAogZXhwcl90eQorWWllbGRGcm9tKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICAgICAgZXhwcl90eSBwOworICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgWWllbGRGcm9tIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwLT5raW5kID0gWWllbGRGcm9tX2tpbmQ7CisgICAgICAgIHAtPnYuWWllbGRGcm9tLnZhbHVlID0gdmFsdWU7CisgICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBDb21wYXJlKGV4cHJfdHkgbGVmdCwgYXNkbF9pbnRfc2VxICogb3BzLCBhc2RsX3NlcSAqIGNvbXBhcmF0b3JzLCBpbnQgbGluZW5vLAogICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0xNzk4LDcgKzE5MDIsNyBAQAogfQogCiBleHByX3R5Ci1CeXRlcyhzdHJpbmcgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorQnl0ZXMoYnl0ZXMgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgICAgICBleHByX3R5IHA7CiAgICAgICAgIGlmICghcykgewpAQCAtMjE0Niw2ICsyMjUwLDIzIEBACiAgICAgICAgIHJldHVybiBwOwogfQogCit3aXRoaXRlbV90eQord2l0aGl0ZW0oZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgICAgIHdpdGhpdGVtX3R5IHA7CisgICAgICAgIGlmICghY29udGV4dF9leHByKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBjb250ZXh0X2V4cHIgaXMgcmVxdWlyZWQgZm9yIHdpdGhpdGVtIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcCA9ICh3aXRoaXRlbV90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcC0+Y29udGV4dF9leHByID0gY29udGV4dF9leHByOworICAgICAgICBwLT5vcHRpb25hbF92YXJzID0gb3B0aW9uYWxfdmFyczsKKyAgICAgICAgcmV0dXJuIHA7Cit9CisKIAogUHlPYmplY3QqCiBhc3Qyb2JqX21vZCh2b2lkKiBfbykKQEAgLTIxNjMsNyArMjI4NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTW9kdWxlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTcyLDcgKzIyOTMsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkludGVyYWN0aXZlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTgxLDcgKzIzMDIsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkV4cHJlc3Npb24uYm9keSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTkwLDcgKzIzMTEsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlN1aXRlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjE4LDI5ICsyMzM5LDI5IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuRnVuY3Rpb25EZWYubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2FyZ3VtZW50cyhvLT52LkZ1bmN0aW9uRGVmLmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRnVuY3Rpb25EZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGVjb3JhdG9yX2xpc3QiLCB2YWx1ZSkgPT0KKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlY29yYXRvcl9saXN0LCB2YWx1ZSkgPT0KICAgICAgICAgICAgICAgICAgICAgLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRnVuY3Rpb25EZWYucmV0dXJucyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicmV0dXJucyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3JldHVybnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjQ5LDM4ICsyMzcwLDM4IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuQ2xhc3NEZWYubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5iYXNlcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJiYXNlcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Jhc2VzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYua2V5d29yZHMsIGFzdDJvYmpfa2V5d29yZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5d29yZHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNsYXNzRGVmLnN0YXJhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzdGFyYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0YXJhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYua3dhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd2FyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJkZWNvcmF0b3JfbGlzdCIsIHZhbHVlKSA9PQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVjb3JhdG9yX2xpc3QsIHZhbHVlKSA9PQogICAgICAgICAgICAgICAgICAgICAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CkBAIC0yMjkwLDcgKzI0MTEsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyOTksNyArMjQyMCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRGVsZXRlLnRhcmdldHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzA4LDEyICsyNDI5LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXNzaWduLnRhcmdldHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3NpZ24udmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzIyLDE3ICsyNDQzLDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXVnQXNzaWduLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9vcGVyYXRvcihvLT52LkF1Z0Fzc2lnbi5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF1Z0Fzc2lnbi52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzNDEsMjIgKzI0NjIsMjIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3IudGFyZ2V0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3IuaXRlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaXRlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZXIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Gb3IuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZvci5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM2NSwxNyArMjQ4NiwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LldoaWxlLnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2hpbGUuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LldoaWxlLm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzg0LDM3ICsyNTA1LDMxIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWYudGVzdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGVzdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3Rlc3QsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSWYub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaXRoX2tpbmQ6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoV2l0aF90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5XaXRoLmNvbnRleHRfZXhwcik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaXRoLml0ZW1zLCBhc3Qyb2JqX3dpdGhpdGVtKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb250ZXh0X2V4cHIiLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuV2l0aC5vcHRpb25hbF92YXJzKTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcHRpb25hbF92YXJzIiwgdmFsdWUpID09Ci0gICAgICAgICAgICAgICAgICAgIC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlbXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaXRoLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDIzLDQ2ICsyNTM4LDM2IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuUmFpc2UuZXhjKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJleGMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9leGMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5SYWlzZS5jYXVzZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY2F1c2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jYXVzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUcnlFeGNlcHRfa2luZDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhUcnlFeGNlcHRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoVHJ5X3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUV4Y2VwdC5ib2R5LCBhc3Qyb2JqX3N0bXQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5LmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlFeGNlcHQuaGFuZGxlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leGNlcHRoYW5kbGVyKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5oYW5kbGVycywgYXN0Mm9ial9leGNlcHRoYW5kbGVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJoYW5kbGVycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2hhbmRsZXJzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RXhjZXB0Lm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyeUZpbmFsbHlfa2luZDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhUcnlGaW5hbGx5X3R5cGUsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUZpbmFsbHkuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5maW5hbGJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSwgYXN0Mm9ial9zdG10KTsKLSAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJmaW5hbGJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9maW5hbGJvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDcxLDEyICsyNTc2LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXNzZXJ0LnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXNzZXJ0Lm1zZyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibXNnIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbXNnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ4NSw3ICsyNTkwLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JbXBvcnQubmFtZXMsIGFzdDJvYmpfYWxpYXMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDk0LDE3ICsyNTk5LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuSW1wb3J0RnJvbS5tb2R1bGUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm1vZHVsZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX21vZHVsZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkltcG9ydEZyb20ubmFtZXMsIGFzdDJvYmpfYWxpYXMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT52LkltcG9ydEZyb20ubGV2ZWwpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxldmVsIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGV2ZWwsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTEzLDcgKzI2MTgsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lkdsb2JhbC5uYW1lcywgYXN0Mm9ial9pZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUyMiw3ICsyNjI3LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Ob25sb2NhbC5uYW1lcywgYXN0Mm9ial9pZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUzMSw3ICsyNjM2LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5FeHByLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU1MCwxMiArMjY1NSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+bGluZW5vKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxpbmVubyIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGluZW5vLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmNvbF9vZmZzZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29sX29mZnNldCIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29sX29mZnNldCwgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI1ODEsMTIgKzI2ODYsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2Jvb2xvcChvLT52LkJvb2xPcC5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkJvb2xPcC52YWx1ZXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU5NSwxNyArMjcwMCwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkJpbk9wLmxlZnQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxlZnQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9sZWZ0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9vcGVyYXRvcihvLT52LkJpbk9wLm9wKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQmluT3AucmlnaHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInJpZ2h0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcmlnaHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjE0LDEyICsyNzE5LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial91bmFyeW9wKG8tPnYuVW5hcnlPcC5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlVuYXJ5T3Aub3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3BlcmFuZCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wZXJhbmQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjI4LDEyICsyNzMzLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9hcmd1bWVudHMoby0+di5MYW1iZGEuYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5MYW1iZGEuYm9keSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQyLDE3ICsyNzQ3LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWZFeHAudGVzdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGVzdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3Rlc3QsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JZkV4cC5ib2R5KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmRXhwLm9yZWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY2MSwxMiArMjc2NiwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRpY3Qua2V5cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrZXlzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRpY3QudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2NzUsNyArMjc4MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuU2V0LmVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjg0LDEzICsyNzg5LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuTGlzdENvbXAuZWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5MaXN0Q29tcC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjk5LDEzICsyODA0LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2V0Q29tcC5lbHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlNldENvbXAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjcxNCwxOCArMjgxOSwxOCBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkRpY3RDb21wLmtleSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRGljdENvbXAudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EaWN0Q29tcC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzM0LDEzICsyODM5LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuR2VuZXJhdG9yRXhwLmVsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuR2VuZXJhdG9yRXhwLmdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9jb21wcmVoZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJnZW5lcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZ2VuZXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3NDksNyArMjg1NCwxNiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LllpZWxkLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFlpZWxkRnJvbV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5ZaWVsZEZyb20udmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzU4LDIzICsyODcyLDIzIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ29tcGFyZS5sZWZ0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsZWZ0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGVmdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTihvLT52LkNvbXBhcmUub3BzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTihvLT52LkNvbXBhcmUub3BzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUHlMaXN0X05ldyhuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0odmFsdWUsIGksIGFzdDJvYmpfY21wb3AoKGNtcG9wX3R5KWFzZGxfc2VxX0dFVChvLT52LkNvbXBhcmUub3BzLCBpKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Db21wYXJlLmNvbXBhcmF0b3JzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbXBhcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29tcGFyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzgzLDI3ICsyODk3LDI3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5mdW5jKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJmdW5jIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZnVuYywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNhbGwuYXJncywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNhbGwua2V5d29yZHMsIGFzdDJvYmpfa2V5d29yZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5d29yZHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwuc3RhcmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInN0YXJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RhcmFyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLmt3YXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgxMiw3ICsyOTI2LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX29iamVjdChvLT52Lk51bS5uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4MjEsMTYgKzI5MzUsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX3N0cmluZyhvLT52LlN0ci5zKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEJ5dGVzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfc3RyaW5nKG8tPnYuQnl0ZXMucyk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2J5dGVzKG8tPnYuQnl0ZXMucyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODQzLDE3ICsyOTU3LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXR0cmlidXRlLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuQXR0cmlidXRlLmF0dHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImF0dHIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hdHRyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5BdHRyaWJ1dGUuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODYyLDE3ICsyOTc2LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU3Vic2NyaXB0LnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9zbGljZShvLT52LlN1YnNjcmlwdC5zbGljZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic2xpY2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zbGljZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuU3Vic2NyaXB0LmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg4MSwxMiArMjk5NSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlN0YXJyZWQudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LlN0YXJyZWQuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODk1LDEyICszMDA5LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuTmFtZS5pZCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaWQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pZCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuTmFtZS5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MDksMTIgKzMwMjMsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5MaXN0LmVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52Lkxpc3QuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIzLDI0ICszMDM3LDI0IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHVwbGUuZWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuVHVwbGUuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5saW5lbm8pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGluZW5vIiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9saW5lbm8sIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+Y29sX29mZnNldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb2xfb2Zmc2V0IiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb2xfb2Zmc2V0LCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjk5MywxNyArMzEwNywxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNsaWNlLmxvd2VyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsb3dlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xvd2VyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2xpY2UudXBwZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInVwcGVyIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdXBwZXIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TbGljZS5zdGVwKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzdGVwIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RlcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwMTIsNyArMzEyNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRXh0U2xpY2UuZGltcywgYXN0Mm9ial9zbGljZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGltcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RpbXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDIxLDcgKzMxMzUsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkluZGV4LnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzE2NywxNyArMzI4MSwxNyBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnRhcmdldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPml0ZXIpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaXRlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmlmcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImlmcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pZnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyMDMsMjkgKzMzMTcsMjkgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5FeGNlcHRIYW5kbGVyLnR5cGUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInR5cGUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90eXBlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuRXhjZXB0SGFuZGxlci5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkV4Y2VwdEhhbmRsZXIuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmxpbmVubyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsaW5lbm8iLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xpbmVubywgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5jb2xfb2Zmc2V0KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbF9vZmZzZXQiLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbF9vZmZzZXQsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjQ5LDQyICszMzYzLDQyIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+YXJncywgYXN0Mm9ial9hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnZhcmFyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YXJhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFyYXJnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnZhcmFyZ2Fubm90YXRpb24pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFyYXJnYW5ub3RhdGlvbiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YXJhcmdhbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmt3b25seWFyZ3MsIGFzdDJvYmpfYXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3b25seWFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dvbmx5YXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5rd2FyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd2FyZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5rd2FyZ2Fubm90YXRpb24pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmdhbm5vdGF0aW9uIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJnYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5kZWZhdWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRlZmF1bHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlZmF1bHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmt3X2RlZmF1bHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dfZGVmYXVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dfZGVmYXVsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMDgsMTIgKzM0MjIsMTIgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5hbm5vdGF0aW9uKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFubm90YXRpb24iLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMzNywxMiArMzQ1MSwxMiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPmFyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnZhbHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzY2LDEyICszNDgwLDQxIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+bmFtZSk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+YXNuYW1lKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFzbmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hc25hbWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKK2ZhaWxlZDoKKyAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0KgorYXN0Mm9ial93aXRoaXRlbSh2b2lkKiBfbykKK3sKKyAgICAgICAgd2l0aGl0ZW1fdHkgbyA9ICh3aXRoaXRlbV90eSlfbzsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEwsICp2YWx1ZSA9IE5VTEw7CisgICAgICAgIGlmICghbykgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KHdpdGhpdGVtX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPmNvbnRleHRfZXhwcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbnRleHRfZXhwciwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5vcHRpb25hbF92YXJzKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3B0aW9uYWxfdmFycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzQwMCwxMSArMzU0MywxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTW9kdWxlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzQzNiwxMSArMzU3OSwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSW50ZXJhY3RpdmUgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNDcyLDkgKzM2MTUsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYm9keSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM0OTUsMTEgKzM2MzgsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlN1aXRlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzU0NCw5ICszNjg3LDkgQEAKICAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsaW5lbm8iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xpbmVubykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGluZW5vIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xpbmVubyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsaW5lbm8sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzU1Niw5ICszNjk5LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsaW5lbm9cIiBtaXNzaW5nIGZyb20gc3RtdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM1NzksOSArMzcyMiw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGRlY29yYXRvcl9saXN0OwogICAgICAgICAgICAgICAgIGV4cHJfdHkgcmV0dXJuczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM1OTEsOSArMzczNCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lXCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYXJndW1lbnRzKHRtcCwgJmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNjAzLDExICszNzQ2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRnVuY3Rpb25EZWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNjI4LDExICszNzcxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGVjb3JhdG9yX2xpc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZ1bmN0aW9uRGVmIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM2NTMsOSArMzc5Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInJldHVybnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcmV0dXJucykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInJldHVybnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yZXR1cm5zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmcmV0dXJucywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM2ODIsOSArMzgyNSw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGRlY29yYXRvcl9saXN0OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzY5NCwxMSArMzgzNywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJhc2VzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Jhc2VzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJiYXNlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Jhc2VzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImJhc2VzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNzE5LDExICszODYyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJiYXNlc1wiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleXdvcmRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImtleXdvcmRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNzQ0LDkgKzM4ODcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInN0YXJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGFyYXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM3NTUsOSArMzg5OCw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmt3YXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM3NjYsMTEgKzM5MDksMTEgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNzkxLDExICszOTM0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGVjb3JhdG9yX2xpc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM4MjgsOSArMzk3MSw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzg1MCwxMSArMzk5MywxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiB0YXJnZXRzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGVsZXRlIGZpZWxkIFwidGFyZ2V0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzg4NywxMSArNDAzMCwxMSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiB0YXJnZXRzOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRhcmdldHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3NpZ24gZmllbGQgXCJ0YXJnZXRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zOTEyLDkgKzQwNTUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0c1wiIG1pc3NpbmcgZnJvbSBBc3NpZ24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5MzcsOSArNDA4MCw5IEBACiAgICAgICAgICAgICAgICAgb3BlcmF0b3JfdHkgb3A7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTQ5LDkgKzQwOTIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEF1Z0Fzc2lnbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9vcGVyYXRvcih0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5NjEsOSArNDEwNCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBBdWdBc3NpZ24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5ODcsOSArNDEzMCw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTk5LDkgKzQxNDIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEZvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmaXRlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQwMTEsMTEgKzQxNTQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZXJcIiBtaXNzaW5nIGZyb20gRm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRm9yIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDAzNiwxMSArNDE3OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBGb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZvciBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDA3NSw5ICs0MjE4LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogb3JlbHNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDA4NywxMSArNDIzMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBXaGlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldoaWxlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDExMiwxMSArNDI1NSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBXaGlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2hpbGUgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQxNTAsOSArNDI5Myw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRlc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGVzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGVzdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQxNjIsMTEgKzQzMDUsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gSWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJZiBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQxODcsMTEgKzQzMzAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gSWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIklmIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MjIxLDM4ICs0MzY0LDM5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKLSAgICAgICAgICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGl0ZW1zOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29udGV4dF9leHByIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbnRleHRfZXhwciIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZjb250ZXh0X2V4cHIsIGFyZW5hKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJjb250ZXh0X2V4cHJcIiBtaXNzaW5nIGZyb20gV2l0aCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wdGlvbmFsX3ZhcnMiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3B0aW9uYWxfdmFycyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcHRpb25hbF92YXJzLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfdmFycyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVtcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2l0aCBmaWVsZCBcIml0ZW1zXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaXRlbV90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF93aXRoaXRlbShQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChpdGVtcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlbXNcIiBtaXNzaW5nIGZyb20gV2l0aCIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJXaXRoIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDI3Myw4ICs0NDE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gV2l0aCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpvdXQgPSBXaXRoKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgYm9keSwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAqb3V0ID0gV2l0aChpdGVtcywgYm9keSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTQyODYsOSArNDQyOSw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBleGM7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBjYXVzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImV4YyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9leGMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJleGMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9leGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZleGMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00Mjk3LDkgKzQ0NDAsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleGMgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjYXVzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jYXVzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNhdXNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY2F1c2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZjYXVzZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQzMTIsNyArNDQ1NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVRyeUV4Y2VwdF90eXBlKTsKKyAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVRyeV90eXBlKTsKICAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQpAQCAtNDMyMCwxNSArNDQ2MywxNiBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBoYW5kbGVyczsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogb3JlbHNlOworICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBmaW5hbGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnlFeGNlcHQgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00MzQzLDE3ICs0NDg3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFRyeUV4Y2VwdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJoYW5kbGVycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9oYW5kbGVycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaGFuZGxlcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9oYW5kbGVycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RXhjZXB0IGZpZWxkIFwiaGFuZGxlcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeSBmaWVsZCBcImhhbmRsZXJzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00MzY4LDE3ICs0NTEyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJoYW5kbGVyc1wiIG1pc3NpbmcgZnJvbSBUcnlFeGNlcHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImhhbmRsZXJzXCIgbWlzc2luZyBmcm9tIFRyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RXhjZXB0IGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKQEAgLTQzOTMsNTUgKzQ1MzcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9yZWxzZVwiIG1pc3NpbmcgZnJvbSBUcnlFeGNlcHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9yZWxzZVwiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqb3V0ID0gVHJ5RXhjZXB0KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIGxpbmVubywgY29sX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZW5hKTsKLSAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopVHJ5RmluYWxseV90eXBlKTsKLSAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwotICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBmaW5hbGJvZHk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2ZpbmFsYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2ZpbmFsYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RmluYWxseSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBUcnlGaW5hbGx5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZmluYWxib2R5IikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZmluYWxib2R5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RmluYWxseSBmaWVsZCBcImZpbmFsYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwiZmluYWxib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00NDU2LDEwICs0NTYyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJmaW5hbGJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5RmluYWxseSIpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZmluYWxib2R5XCIgbWlzc2luZyBmcm9tIFRyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpvdXQgPSBUcnlGaW5hbGx5KGJvZHksIGZpbmFsYm9keSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgKm91dCA9IFRyeShib2R5LCBoYW5kbGVycywgb3JlbHNlLCBmaW5hbGJvZHksIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtNDQ3MSw5ICs0NTc4LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHRlc3Q7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBtc2c7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NDgzLDkgKzQ1OTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBBc3NlcnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJtc2ciKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbXNnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibXNnIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbXNnKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmbXNnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDUwNSwxMSArNDYxMiwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJbXBvcnQgZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDU0Myw5ICs0NjUwLDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAgICAgICAgICAgICAgICAgaW50IGxldmVsOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibW9kdWxlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX21vZHVsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm1vZHVsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX21vZHVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm1vZHVsZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ1NTQsMTEgKzQ2NjEsMTEgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkltcG9ydEZyb20gZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDU3OSw5ICs0Njg2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVzXCIgbWlzc2luZyBmcm9tIEltcG9ydEZyb20iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsZXZlbCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sZXZlbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxldmVsIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGV2ZWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxldmVsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDYwMiwxMSArNDcwOSwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJHbG9iYWwgZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDYzOCwxMSArNDc0NSwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJOb25sb2NhbCBmaWVsZCBcIm5hbWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00Njc0LDkgKzQ3ODEsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3NDAsOSArNDg0Nyw5IEBACiAgICAgICAgICAgICAgICAgKm91dCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGluZW5vIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmbGluZW5vLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3NTIsOSArNDg1OSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGluZW5vXCIgbWlzc2luZyBmcm9tIGV4cHIiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0IikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NzcyLDkgKzQ4NzksOSBAQAogICAgICAgICAgICAgICAgIGJvb2xvcF90eSBvcDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdmFsdWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3AiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2Jvb2xvcCh0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3ODQsMTEgKzQ4OTEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wXCIgbWlzc2luZyBmcm9tIEJvb2xPcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQm9vbE9wIGZpZWxkIFwidmFsdWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00ODIyLDkgKzQ5MjksOSBAQAogICAgICAgICAgICAgICAgIG9wZXJhdG9yX3R5IG9wOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgcmlnaHQ7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsZWZ0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xlZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsZWZ0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmxlZnQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00ODM0LDkgKzQ5NDEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGVmdFwiIG1pc3NpbmcgZnJvbSBCaW5PcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9vcGVyYXRvcih0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4NDYsOSArNDk1Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBCaW5PcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInJpZ2h0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3JpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicmlnaHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yaWdodCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnJpZ2h0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDg3MCw5ICs0OTc3LDkgQEAKICAgICAgICAgICAgICAgICB1bmFyeW9wX3R5IG9wOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgb3BlcmFuZDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF91bmFyeW9wKHRtcCwgJm9wLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDg4Miw5ICs0OTg5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wXCIgbWlzc2luZyBmcm9tIFVuYXJ5T3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcGVyYW5kIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wZXJhbmQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcGVyYW5kIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9wZXJhbmQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTA2LDkgKzUwMTMsOSBAQAogICAgICAgICAgICAgICAgIGFyZ3VtZW50c190eSBhcmdzOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2FyZ3VtZW50cyh0bXAsICZhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDkxOCw5ICs1MDI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gTGFtYmRhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZib2R5LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDk0Myw5ICs1MDUwLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGJvZHk7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTU1LDkgKzUwNjIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBJZkV4cCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYm9keSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5NjcsOSArNTA3NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIElmRXhwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9yZWxzZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5OTEsMTEgKzUwOTgsMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSoga2V5czsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdmFsdWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia2V5cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXlzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXlzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa2V5cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGljdCBmaWVsZCBcImtleXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUwMTYsMTEgKzUxMjMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXNcIiBtaXNzaW5nIGZyb20gRGljdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGljdCBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTA1MiwxMSArNTE1OSwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBlbHRzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiU2V0IGZpZWxkIFwiZWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTA4OSw5ICs1MTk2LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGVsdDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZlbHQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MTAxLDExICs1MjA4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRcIiBtaXNzaW5nIGZyb20gTGlzdENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJMaXN0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUxMzgsOSArNTI0NSw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQ7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGdlbmVyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZWx0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTE1MCwxMSArNTI1NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0XCIgbWlzc2luZyBmcm9tIFNldENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJTZXRDb21wIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTE4OCw5ICs1Mjk1LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia2V5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImtleSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmtleSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUyMDAsOSArNTMwNyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXlcIiBtaXNzaW5nIGZyb20gRGljdENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUyMTIsMTEgKzUzMTksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIERpY3RDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRGljdENvbXAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MjUwLDkgKzUzNTcsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmVsdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUyNjIsMTEgKzUzNjksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdFwiIG1pc3NpbmcgZnJvbSBHZW5lcmF0b3JFeHAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJHZW5lcmF0b3JFeHAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01Mjk4LDkgKzU0MDUsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUzMTMsNiArNTQyMCwyOSBAQAogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilZaWVsZEZyb21fdHlwZSk7CisgICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIFlpZWxkRnJvbSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpvdXQgPSBZaWVsZEZyb20odmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilDb21wYXJlX3R5cGUpOwogICAgICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtNTMyMiw5ICs1NDUyLDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX2ludF9zZXEqIG9wczsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogY29tcGFyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsZWZ0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xlZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsZWZ0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmxlZnQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MzM0LDExICs1NDY0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsZWZ0XCIgbWlzc2luZyBmcm9tIENvbXBhcmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3BzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNvbXBhcmUgZmllbGQgXCJvcHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUzNTksMTEgKzU0ODksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wc1wiIG1pc3NpbmcgZnJvbSBDb21wYXJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29tcGFyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29tcGFyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbXBhcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29tcGFyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNvbXBhcmUgZmllbGQgXCJjb21wYXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTQwMCw5ICs1NTMwLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzOwogICAgICAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZnVuYyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9mdW5jKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZnVuYyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Z1bmMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZmdW5jLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTQxMiwxMSArNTU0MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZnVuY1wiIG1pc3NpbmcgZnJvbSBDYWxsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2FsbCBmaWVsZCBcImFyZ3NcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU0MzcsMTEgKzU1NjcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleXdvcmRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDYWxsIGZpZWxkIFwia2V5d29yZHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU0NjIsOSArNTU5Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXl3b3Jkc1wiIG1pc3NpbmcgZnJvbSBDYWxsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RhcmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NDczLDkgKzU2MDMsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NDk2LDkgKzU2MjYsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIG9iamVjdCBuOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibiIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX24pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfb2JqZWN0KHRtcCwgJm4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NTE5LDkgKzU2NDksOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIHN0cmluZyBzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAicyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RyaW5nKHRtcCwgJnMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NTQwLDEzICs1NjcwLDEzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgICAgICAgICBieXRlcyBzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAicyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RyaW5nKHRtcCwgJnMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYnl0ZXModG1wLCAmcywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC01NTc3LDkgKzU3MDcsOSBAQAogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgYXR0cjsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NTg5LDkgKzU3MTksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gQXR0cmlidXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXR0ciIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hdHRyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXR0ciIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2F0dHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhdHRyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTYwMSw5ICs1NzMxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImF0dHJcIiBtaXNzaW5nIGZyb20gQXR0cmlidXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTYyNiw5ICs1NzU2LDkgQEAKICAgICAgICAgICAgICAgICBzbGljZV90eSBzbGljZTsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NjM4LDkgKzU3NjgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gU3Vic2NyaXB0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic2xpY2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc2xpY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzbGljZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3NsaWNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3NsaWNlKHRtcCwgJnNsaWNlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTY1MCw5ICs1NzgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInNsaWNlXCIgbWlzc2luZyBmcm9tIFN1YnNjcmlwdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2NzQsOSArNTgwNCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01Njg2LDkgKzU4MTYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gU3RhcnJlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU3MTAsOSArNTg0MCw5IEBACiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBpZDsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaWQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmaWQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NzIyLDkgKzU4NTIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaWRcIiBtaXNzaW5nIGZyb20gTmFtZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU3NDYsMTEgKzU4NzYsMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZWx0czsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTGlzdCBmaWVsZCBcImVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU3NzEsOSArNTkwMSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRzXCIgbWlzc2luZyBmcm9tIExpc3QiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01Nzk1LDExICs1OTI1LDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGVsdHM7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlR1cGxlIGZpZWxkIFwiZWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTgyMCw5ICs1OTUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdHNcIiBtaXNzaW5nIGZyb20gVHVwbGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTIxLDkgKzYwNTEsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgdXBwZXI7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGVwOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibG93ZXIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbG93ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsb3dlciIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xvd2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmbG93ZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTMyLDkgKzYwNjIsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlciA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInVwcGVyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3VwcGVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidXBwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF91cHBlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnVwcGVyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTk0Myw5ICs2MDczLDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXIgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzdGVwIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3N0ZXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzdGVwIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RlcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0ZXAsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTY1LDExICs2MDk1LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGRpbXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJkaW1zIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RpbXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRpbXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9kaW1zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJFeHRTbGljZSBmaWVsZCBcImRpbXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTYwMDEsOSArNjEzMSw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjI5Niw5ICs2NDI2LDkgQEAKICAgICAgICAgZXhwcl90eSBpdGVyOwogICAgICAgICBhc2RsX3NlcSogaWZzOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjMwOCw5ICs2NDM4LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZXIpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlcik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmaXRlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02MzIwLDExICs2NDUwLDExIEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlclwiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaWZzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pZnMpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpZnMiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaWZzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJjb21wcmVoZW5zaW9uIGZpZWxkIFwiaWZzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02MzY1LDkgKzY0OTUsOSBAQAogICAgICAgICAgICAgICAgICpvdXQgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsaW5lbm8iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxpbmVubywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02Mzc3LDkgKzY1MDcsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxpbmVub1wiIG1pc3NpbmcgZnJvbSBleGNlcHRoYW5kbGVyIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjM5OCw5ICs2NTI4LDkgQEAKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0eXBlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnR5cGUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NDA5LDkgKzY1MzksOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjQyMCwxMSArNjU1MCwxMSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRXhjZXB0SGFuZGxlciBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY0NzAsMTEgKzY2MDAsMTEgQEAKICAgICAgICAgYXNkbF9zZXEqIGRlZmF1bHRzOwogICAgICAgICBhc2RsX3NlcSoga3dfZGVmYXVsdHM7CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwiYXJnc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjQ5NSw5ICs2NjI1LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhcmFyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YXJhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZ2YXJhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjUwNiw5ICs2NjM2LDkgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXJhcmcgPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhcmFyZ2Fubm90YXRpb24iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhcmFyZ2Fubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnYW5ub3RhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFyYXJnYW5ub3RhdGlvbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NTE3LDExICs2NjQ3LDExIEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyYXJnYW5ub3RhdGlvbiA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dvbmx5YXJncyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dvbmx5YXJncykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3b25seWFyZ3MiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dvbmx5YXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwia3dvbmx5YXJnc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjU0Miw5ICs2NjcyLDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrd29ubHlhcmdzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJnIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmcpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmt3YXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1NTMsOSArNjY4Myw5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAga3dhcmcgPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJnYW5ub3RhdGlvbiIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmdhbm5vdGF0aW9uKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZ2Fubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ2Fubm90YXRpb24sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjU2NCwxMSArNjY5NCwxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGt3YXJnYW5ub3RhdGlvbiA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGVmYXVsdHMiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlZmF1bHRzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZGVmYXVsdHMiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVmYXVsdHMpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImRlZmF1bHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NTg5LDExICs2NzE5LDExIEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVmYXVsdHNcIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dfZGVmYXVsdHMiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3X2RlZmF1bHRzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dfZGVmYXVsdHMiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dfZGVmYXVsdHMpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImt3X2RlZmF1bHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NjI5LDkgKzY3NTksOSBAQAogICAgICAgICBpZGVudGlmaWVyIGFyZzsKICAgICAgICAgZXhwcl90eSBhbm5vdGF0aW9uOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjY0MSw5ICs2NzcxLDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdcIiBtaXNzaW5nIGZyb20gYXJnIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYW5ub3RhdGlvbiIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbikpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZhbm5vdGF0aW9uLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY2NjYsOSArNjc5Niw5IEBACiAgICAgICAgIGlkZW50aWZpZXIgYXJnOwogICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjY3OCw5ICs2ODA4LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdcIiBtaXNzaW5nIGZyb20ga2V5d29yZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY3MDQsOSArNjgzNCw5IEBACiAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKICAgICAgICAgaWRlbnRpZmllciBhc25hbWU7CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY3MTYsOSArNjg0Niw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBhbGlhcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFzbmFtZSIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXNuYW1lKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhc25hbWUiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXNuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhc25hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjczNCw2ICs2ODY0LDQzIEBACiAgICAgICAgIHJldHVybiAxOwogfQogCitpbnQKK29iajJhc3Rfd2l0aGl0ZW0oUHlPYmplY3QqIG9iaiwgd2l0aGl0ZW1fdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgICAgIFB5T2JqZWN0KiB0bXAgPSBOVUxMOworICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKKyAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29udGV4dF9leHByKSkgeworICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbnRleHRfZXhwcik7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmY29udGV4dF9leHByLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJjb250ZXh0X2V4cHJcIiBtaXNzaW5nIGZyb20gd2l0aGl0ZW0iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wdGlvbmFsX3ZhcnMpKSB7CisgICAgICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3B0aW9uYWxfdmFycyk7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmb3B0aW9uYWxfdmFycywgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3B0aW9uYWxfdmFycyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IHdpdGhpdGVtKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgYXJlbmEpOworICAgICAgICByZXR1cm4gMDsKK2ZhaWxlZDoKKyAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICByZXR1cm4gMTsKK30KKwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9hc3Rtb2R1bGUgPSB7CiAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgIl9hc3QiCkBAIC02NzUwLDggKzY5MTcsNiBAQAogICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUNGX09OTFlfQVNUIiwgUHlDRl9PTkxZX0FTVCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIjgyMTYzIikgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1vZCIsIChQeU9iamVjdCopbW9kX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1vZHVsZSIsIChQeU9iamVjdCopTW9kdWxlX3R5cGUpIDwgMCkKQEAgLTY3ODUsMTAgKzY5NTAsOCBAQAogICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJSYWlzZSIsIChQeU9iamVjdCopUmFpc2VfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgICAgIE5VTEw7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5RXhjZXB0IiwgKFB5T2JqZWN0KilUcnlFeGNlcHRfdHlwZSkgPAotICAgICAgICAgICAgMCkgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5RmluYWxseSIsIChQeU9iamVjdCopVHJ5RmluYWxseV90eXBlKSA8Ci0gICAgICAgICAgICAwKSByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJUcnkiLCAoUHlPYmplY3QqKVRyeV90eXBlKSA8IDApIHJldHVybgorICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBc3NlcnQiLCAoUHlPYmplY3QqKUFzc2VydF90eXBlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJbXBvcnQiLCAoUHlPYmplY3QqKUltcG9ydF90eXBlKSA8IDApCkBAIC02ODMzLDYgKzY5OTYsOCBAQAogICAgICAgICAgICAgKFB5T2JqZWN0KilHZW5lcmF0b3JFeHBfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJZaWVsZCIsIChQeU9iamVjdCopWWllbGRfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgICAgIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGRGcm9tIiwgKFB5T2JqZWN0KilZaWVsZEZyb21fdHlwZSkgPAorICAgICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ29tcGFyZSIsIChQeU9iamVjdCopQ29tcGFyZV90eXBlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDYWxsIiwgKFB5T2JqZWN0KilDYWxsX3R5cGUpIDwgMCkgcmV0dXJuCkBAIC02OTUxLDYgKzcxMTYsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiYWxpYXMiLCAoUHlPYmplY3QqKWFsaWFzX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIndpdGhpdGVtIiwgKFB5T2JqZWN0Kil3aXRoaXRlbV90eXBlKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIG07CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCBjMTJkYjQ0Li5mMzNlNDc3IDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC0xOCwxMSArMTgsMTIgQEAKIGNoZWNrX21hdGNoZWQoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKG1hdGNoKTsKICAgICBpbnQgcmM7CiAKICAgICBpZiAob2JqID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiAxOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAibWF0Y2giLCAiTyIsIGFyZyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX21hdGNoLCAiTyIsIGFyZyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTIwMiwxMyArMjAzLDEzIEBACiAKICAgICBtb2Rfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhmaWxlbmFtZSk7CiAgICAgaWYgKG1vZF9zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKGZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dldExlbmd0aChmaWxlbmFtZSk7CiAgICAgaWYgKGxlbiA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChsZW4gPj0gMyAmJgogICAgICAgICBzdHJuY21wKG1vZF9zdHIgKyAobGVuIC0gMyksICIucHkiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1vZHVsZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShtb2Rfc3RyLCBsZW4tMyk7CisgICAgICAgIG1vZHVsZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoZmlsZW5hbWUsIDAsIGxlbi0zKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIG1vZHVsZSA9IGZpbGVuYW1lOwpAQCAtMjQ2LDEwICsyNDcsMTEgQEAKICAgICBQeU9iamVjdCAqZl9zdGRlcnI7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgY2hhciBsaW5lbm9fc3RyWzEyOF07CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOwogCiAgICAgUHlPU19zbnByaW50ZihsaW5lbm9fc3RyLCBzaXplb2YobGluZW5vX3N0ciksICI6JWQ6ICIsIGxpbmVubyk7CiAKLSAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjYXRlZ29yeSwgIl9fbmFtZV9fIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2F0ZWdvcnksICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSAgLyogWFhYIENhbiBhbiBvYmplY3QgbGFjayBhICdfX25hbWVfXycgYXR0cmlidXRlPyAqLwogICAgICAgICByZXR1cm47CiAKQEAgLTQwOSwxMCArNDExLDEwIEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKIAotICAgICAgICAgICAgaWYgKCFQeU1ldGhvZF9DaGVjayhzaG93X2Z4bikgJiYgIVB5RnVuY3Rpb25fQ2hlY2soc2hvd19meG4pKSB7CisgICAgICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soc2hvd19meG4pKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBvciBtZXRob2QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgICAgICAgICB9CkBAIC00OTcsMTggKzQ5OSwyOCBAQAogICAgIC8qIFNldHVwIGZpbGVuYW1lLiAqLwogICAgICpmaWxlbmFtZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGdsb2JhbHMsICJfX2ZpbGVfXyIpOwogICAgIGlmICgqZmlsZW5hbWUgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soKmZpbGVuYW1lKSkgewotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKCpmaWxlbmFtZSk7Ci0gICAgICAgIFB5X1VOSUNPREUgKnVuaWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqZmlsZW5hbWUpOworICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CiAKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSgqZmlsZW5hbWUpKQorICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CisKKyAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldExlbmd0aCgqZmlsZW5hbWUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoKmZpbGVuYW1lKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKCpmaWxlbmFtZSk7CisKKyNkZWZpbmUgYXNjaWlfbG93ZXIoYykgKChjIDw9IDEyNykgPyBQeV9UT0xPV0VSKGMpIDogMCkKICAgICAgICAgLyogaWYgZmlsZW5hbWUubG93ZXIoKS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKTogKi8KICAgICAgICAgaWYgKGxlbiA+PSA0ICYmCi0gICAgICAgICAgICB1bmljb2RlW2xlbi00XSA9PSAnLicgJiYKLSAgICAgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0zXSkgPT0gJ3AnICYmCi0gICAgICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tMl0pID09ICd5JyAmJgotICAgICAgICAgICAgKFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0xXSkgPT0gJ2MnIHx8Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTFdKSA9PSAnbycpKQorICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTQpID09ICcuJyAmJgorICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTMpKSA9PSAncCcgJiYKKyAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0yKSkgPT0gJ3knICYmCisgICAgICAgICAgICAoYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnYycgfHwKKyAgICAgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdvJykpCiAgICAgICAgIHsKLSAgICAgICAgICAgICpmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh1bmljb2RlLCBsZW4tMSk7CisgICAgICAgICAgICAqZmlsZW5hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKCpmaWxlbmFtZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoKmZpbGVuYW1lKS0xKTsKICAgICAgICAgICAgIGlmICgqZmlsZW5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKICAgICAgICAgfQpAQCAtNjQzLDggKzY1NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZV9nbG9iYWxzKSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0X3NvdXJjZV9uYW1lID0gTlVMTDsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpzcGxpdGxpbmVzX25hbWUgPSBOVUxMOworICAgICAgICBfUHlfSURFTlRJRklFUihnZXRfc291cmNlKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc3BsaXRsaW5lcyk7CisgICAgICAgIFB5T2JqZWN0ICp0bXA7CiAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXI7CiAgICAgICAgIFB5T2JqZWN0ICptb2R1bGVfbmFtZTsKICAgICAgICAgUHlPYmplY3QgKnNvdXJjZTsKQEAgLTY1MiwxNiArNjY1LDEwIEBACiAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2VfbGluZTsKICAgICAgICAgUHlPYmplY3QgKnJldHVybmVkOwogCi0gICAgICAgIGlmIChnZXRfc291cmNlX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgZ2V0X3NvdXJjZV9uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoImdldF9zb3VyY2UiKTsKLSAgICAgICAgICAgIGlmICghZ2V0X3NvdXJjZV9uYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzcGxpdGxpbmVzX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgc3BsaXRsaW5lc19uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoInNwbGl0bGluZXMiKTsKLSAgICAgICAgICAgIGlmICghc3BsaXRsaW5lc19uYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmICgodG1wID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfZ2V0X3NvdXJjZSkpID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCh0bXAgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9zcGxpdGxpbmVzKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgIC8qIENoZWNrL2dldCB0aGUgcmVxdWlzaXRlIHBpZWNlcyBuZWVkZWQgZm9yIHRoZSBsb2FkZXIuICovCiAgICAgICAgIGxvYWRlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZV9nbG9iYWxzLCAiX19sb2FkZXJfXyIpOwpAQCAtNjcxLDExICs2NzgsMTEgQEAKICAgICAgICAgICAgIGdvdG8gc3RhbmRhcmRfY2FsbDsKIAogICAgICAgICAvKiBNYWtlIHN1cmUgdGhlIGxvYWRlciBpbXBsZW1lbnRzIHRoZSBvcHRpb25hbCBnZXRfc291cmNlKCkgbWV0aG9kLiAqLwotICAgICAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcobG9hZGVyLCAiZ2V0X3NvdXJjZSIpKQorICAgICAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQobG9hZGVyLCAmUHlJZF9nZXRfc291cmNlKSkKICAgICAgICAgICAgICAgICBnb3RvIHN0YW5kYXJkX2NhbGw7CiAgICAgICAgIC8qIENhbGwgZ2V0X3NvdXJjZSgpIHRvIGdldCB0aGUgc291cmNlIGNvZGUuICovCi0gICAgICAgIHNvdXJjZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKGxvYWRlciwgZ2V0X3NvdXJjZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIE5VTEwpOworICAgICAgICBzb3VyY2UgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhsb2FkZXIsIFB5SWRfZ2V0X3NvdXJjZS5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBOVUxMKTsKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZWxzZSBpZiAoc291cmNlID09IFB5X05vbmUpIHsKQEAgLTY4NCw4ICs2OTEsOSBAQAogICAgICAgICB9CiAKICAgICAgICAgLyogU3BsaXQgdGhlIHNvdXJjZSBpbnRvIGxpbmVzLiAqLwotICAgICAgICBzb3VyY2VfbGlzdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNvdXJjZSwgc3BsaXRsaW5lc19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBzb3VyY2VfbGlzdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUlkX3NwbGl0bGluZXMub2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoc291cmNlKTsKICAgICAgICAgaWYgKCFzb3VyY2VfbGlzdCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTUwLDIzICs5NTgsMzAgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9maWx0ZXJzID0gaW5pdF9maWx0ZXJzKCk7Ci0gICAgaWYgKF9maWx0ZXJzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfZmlsdGVycyA9PSBOVUxMKSB7CisgICAgICAgIF9maWx0ZXJzID0gaW5pdF9maWx0ZXJzKCk7CisgICAgICAgIGlmIChfZmlsdGVycyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0lOQ1JFRihfZmlsdGVycyk7CiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZmlsdGVycyIsIF9maWx0ZXJzKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgX29uY2VfcmVnaXN0cnkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKF9vbmNlX3JlZ2lzdHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfb25jZV9yZWdpc3RyeSA9PSBOVUxMKSB7CisgICAgICAgIF9vbmNlX3JlZ2lzdHJ5ID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoX29uY2VfcmVnaXN0cnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeV9JTkNSRUYoX29uY2VfcmVnaXN0cnkpOwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9vbmNlcmVnaXN0cnkiLCBfb25jZV9yZWdpc3RyeSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9kZWZhdWx0X2FjdGlvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJkZWZhdWx0Iik7Ci0gICAgaWYgKF9kZWZhdWx0X2FjdGlvbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX2RlZmF1bHRfYWN0aW9uID09IE5VTEwpIHsKKyAgICAgICAgX2RlZmF1bHRfYWN0aW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImRlZmF1bHQiKTsKKyAgICAgICAgaWYgKF9kZWZhdWx0X2FjdGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihfZGVmYXVsdF9hY3Rpb24pOwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9kZWZhdWx0YWN0aW9uIiwgX2RlZmF1bHRfYWN0aW9uKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzZGwuYyBiL1B5dGhvbi9hc2RsLmMKaW5kZXggYzMwZDdkMjAuLmU3ZTMyODAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtMiw3ICsyLDcgQEAKICNpbmNsdWRlICJhc2RsLmgiCiAKIGFzZGxfc2VxICoKLWFzZGxfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCithc2RsX3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX3NlcSAqc2VxID0gTlVMTDsKICAgICBzaXplX3QgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKQEAgLTMzLDcgKzMzLDcgQEAKIH0KIAogYXNkbF9pbnRfc2VxICoKLWFzZGxfaW50X3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKQorYXNkbF9pbnRfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfaW50X3NlcSAqc2VxID0gTlVMTDsKICAgICBzaXplX3QgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc3QuYyBiL1B5dGhvbi9hc3QuYwppbmRleCBkMmYwNjNiLi43NjU3YjIyIDEwMDY0NAotLS0gYS9QeXRob24vYXN0LmMKKysrIGIvUHl0aG9uL2FzdC5jCkBAIC0xLDI0ICsxLDUwNiBAQAogLyoKICAqIFRoaXMgZmlsZSBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gdHJhbnNmb3JtIGEgY29uY3JldGUgc3ludGF4IHRyZWUgKENTVCkgdG8KLSAqIGFuIGFic3RyYWN0IHN5bnRheCB0cmVlIChBU1QpLiAgVGhlIG1haW4gZnVuY3Rpb24gaXMgUHlBU1RfRnJvbU5vZGUoKS4KKyAqIGFuIGFic3RyYWN0IHN5bnRheCB0cmVlIChBU1QpLiBUaGUgbWFpbiBmdW5jdGlvbiBpcyBQeUFTVF9Gcm9tTm9kZSgpLgogICoKICAqLwogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgIlB5dGhvbi1hc3QuaCIKLSNpbmNsdWRlICJncmFtbWFyLmgiCiAjaW5jbHVkZSAibm9kZS5oIgogI2luY2x1ZGUgImFzdC5oIgogI2luY2x1ZGUgInRva2VuLmgiCi0jaW5jbHVkZSAicGFyc2V0b2suaCIKLSNpbmNsdWRlICJncmFtaW5pdC5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKK3N0YXRpYyBpbnQgdmFsaWRhdGVfc3RtdHMoYXNkbF9zZXEgKik7CitzdGF0aWMgaW50IHZhbGlkYXRlX2V4cHJzKGFzZGxfc2VxICosIGV4cHJfY29udGV4dF90eSwgaW50KTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfbm9uZW1wdHlfc2VxKGFzZGxfc2VxICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfc3RtdChzdG10X3R5KTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfZXhwcihleHByX3R5LCBleHByX2NvbnRleHRfdHkpOworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9jb21wcmVoZW5zaW9uKGFzZGxfc2VxICpnZW5zKQoreworICAgIGludCBpOworICAgIGlmICghYXNkbF9zZXFfTEVOKGdlbnMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiY29tcHJlaGVuc2lvbiB3aXRoIG5vIGdlbmVyYXRvcnMiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oZ2Vucyk7IGkrKykgeworICAgICAgICBjb21wcmVoZW5zaW9uX3R5IGNvbXAgPSBhc2RsX3NlcV9HRVQoZ2VucywgaSk7CisgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihjb21wLT50YXJnZXQsIFN0b3JlKSB8fAorICAgICAgICAgICAgIXZhbGlkYXRlX2V4cHIoY29tcC0+aXRlciwgTG9hZCkgfHwKKyAgICAgICAgICAgICF2YWxpZGF0ZV9leHBycyhjb21wLT5pZnMsIExvYWQsIDApKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9zbGljZShzbGljZV90eSBzbGljZSkKK3sKKyAgICBzd2l0Y2ggKHNsaWNlLT5raW5kKSB7CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICByZXR1cm4gKCFzbGljZS0+di5TbGljZS5sb3dlciB8fCB2YWxpZGF0ZV9leHByKHNsaWNlLT52LlNsaWNlLmxvd2VyLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghc2xpY2UtPnYuU2xpY2UudXBwZXIgfHwgdmFsaWRhdGVfZXhwcihzbGljZS0+di5TbGljZS51cHBlciwgTG9hZCkpICYmCisgICAgICAgICAgICAoIXNsaWNlLT52LlNsaWNlLnN0ZXAgfHwgdmFsaWRhdGVfZXhwcihzbGljZS0+di5TbGljZS5zdGVwLCBMb2FkKSk7CisgICAgY2FzZSBFeHRTbGljZV9raW5kOiB7CisgICAgICAgIGludCBpOworICAgICAgICBpZiAoIXZhbGlkYXRlX25vbmVtcHR5X3NlcShzbGljZS0+di5FeHRTbGljZS5kaW1zLCAiZGltcyIsICJFeHRTbGljZSIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc2xpY2UtPnYuRXh0U2xpY2UuZGltcyk7IGkrKykKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfc2xpY2UoYXNkbF9zZXFfR0VUKHNsaWNlLT52LkV4dFNsaWNlLmRpbXMsIGkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuSW5kZXgudmFsdWUsIExvYWQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVua25vd24gc2xpY2Ugbm9kZSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2tleXdvcmRzKGFzZGxfc2VxICprZXl3b3JkcykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsgaSsrKQorICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSkpLT52YWx1ZSwgTG9hZCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfYXJncyhhc2RsX3NlcSAqYXJncykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGFyZ3MpOyBpKyspIHsKKyAgICAgICAgYXJnX3R5IGFyZyA9IGFzZGxfc2VxX0dFVChhcmdzLCBpKTsKKyAgICAgICAgaWYgKGFyZy0+YW5ub3RhdGlvbiAmJiAhdmFsaWRhdGVfZXhwcihhcmctPmFubm90YXRpb24sIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitleHByX2NvbnRleHRfbmFtZShleHByX2NvbnRleHRfdHkgY3R4KQoreworICAgIHN3aXRjaCAoY3R4KSB7CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gIkxvYWQiOworICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiAiU3RvcmUiOworICAgIGNhc2UgRGVsOgorICAgICAgICByZXR1cm4gIkRlbCI7CisgICAgY2FzZSBBdWdMb2FkOgorICAgICAgICByZXR1cm4gIkF1Z0xvYWQiOworICAgIGNhc2UgQXVnU3RvcmU6CisgICAgICAgIHJldHVybiAiQXVnU3RvcmUiOworICAgIGNhc2UgUGFyYW06CisgICAgICAgIHJldHVybiAiUGFyYW0iOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0dXJuICIodW5rbm93bikiOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfYXJndW1lbnRzKGFyZ3VtZW50c190eSBhcmdzKQoreworICAgIGlmICghdmFsaWRhdGVfYXJncyhhcmdzLT5hcmdzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24pIHsKKyAgICAgICAgaWYgKCFhcmdzLT52YXJhcmcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidmFyYXJnYW5ub3RhdGlvbiBidXQgbm8gdmFyYXJnIG9uIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24sIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghdmFsaWRhdGVfYXJncyhhcmdzLT5rd29ubHlhcmdzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFyZ3MtPmt3YXJnYW5ub3RhdGlvbikgeworICAgICAgICBpZiAoIWFyZ3MtPmt3YXJnKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImt3YXJnYW5ub3RhdGlvbiBidXQgbm8ga3dhcmcgb24gYXJndW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoYXJncy0+a3dhcmdhbm5vdGF0aW9uLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSA+IGFzZGxfc2VxX0xFTihhcmdzLT5hcmdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1vcmUgcG9zaXRpb25hbCBkZWZhdWx0cyB0aGFuIGFyZ3Mgb24gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYXNkbF9zZXFfTEVOKGFyZ3MtPmt3X2RlZmF1bHRzKSAhPSBhc2RsX3NlcV9MRU4oYXJncy0+a3dvbmx5YXJncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZW5ndGggb2Yga3dvbmx5YXJncyBpcyBub3QgdGhlIHNhbWUgYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgImt3X2RlZmF1bHRzIG9uIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGFyZ3MtPmRlZmF1bHRzLCBMb2FkLCAwKSAmJiB2YWxpZGF0ZV9leHBycyhhcmdzLT5rd19kZWZhdWx0cywgTG9hZCwgMSk7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2V4cHIoZXhwcl90eSBleHAsIGV4cHJfY29udGV4dF90eSBjdHgpCit7CisgICAgaW50IGNoZWNrX2N0eCA9IDE7CisgICAgZXhwcl9jb250ZXh0X3R5IGFjdHVhbF9jdHg7CisKKyAgICAvKiBGaXJzdCBjaGVjayBleHByZXNzaW9uIGNvbnRleHQuICovCisgICAgc3dpdGNoIChleHAtPmtpbmQpIHsKKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LkF0dHJpYnV0ZS5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuU3Vic2NyaXB0LmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGFycmVkX2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuU3RhcnJlZC5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52Lk5hbWUuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5MaXN0LmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUdXBsZV9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LlR1cGxlLmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGN0eCAhPSBMb2FkKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImV4cHJlc3Npb24gd2hpY2ggY2FuJ3QgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NpZ25lZCB0byBpbiAlcyBjb250ZXh0IiwgZXhwcl9jb250ZXh0X25hbWUoY3R4KSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBjaGVja19jdHggPSAwOworICAgIH0KKyAgICBpZiAoY2hlY2tfY3R4ICYmIGFjdHVhbF9jdHggIT0gY3R4KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiZXhwcmVzc2lvbiBtdXN0IGhhdmUgJXMgY29udGV4dCBidXQgaGFzICVzIGluc3RlYWQiLAorICAgICAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X25hbWUoY3R4KSwgZXhwcl9jb250ZXh0X25hbWUoYWN0dWFsX2N0eCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBOb3cgdmFsaWRhdGUgZXhwcmVzc2lvbi4gKi8KKyAgICBzd2l0Y2ggKGV4cC0+a2luZCkgeworICAgIGNhc2UgQm9vbE9wX2tpbmQ6CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZXhwLT52LkJvb2xPcC52YWx1ZXMpIDwgMikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJCb29sT3Agd2l0aCBsZXNzIHRoYW4gMiB2YWx1ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuQm9vbE9wLnZhbHVlcywgTG9hZCwgMCk7CisgICAgY2FzZSBCaW5PcF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQmluT3AubGVmdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkJpbk9wLnJpZ2h0LCBMb2FkKTsKKyAgICBjYXNlIFVuYXJ5T3Bfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LlVuYXJ5T3Aub3BlcmFuZCwgTG9hZCk7CisgICAgY2FzZSBMYW1iZGFfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2FyZ3VtZW50cyhleHAtPnYuTGFtYmRhLmFyZ3MpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5MYW1iZGEuYm9keSwgTG9hZCk7CisgICAgY2FzZSBJZkV4cF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuSWZFeHAudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LklmRXhwLmJvZHksIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5JZkV4cC5vcmVsc2UsIExvYWQpOworICAgIGNhc2UgRGljdF9raW5kOgorICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGV4cC0+di5EaWN0LmtleXMpICE9IGFzZGxfc2VxX0xFTihleHAtPnYuRGljdC52YWx1ZXMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGljdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGtleXMgYXMgdmFsdWVzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3Qua2V5cywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LnZhbHVlcywgTG9hZCwgMCk7CisgICAgY2FzZSBTZXRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5TZXQuZWx0cywgTG9hZCwgMCk7CisjZGVmaW5lIENPTVAoTkFNRSkgXAorICAgICAgICBjYXNlIE5BTUUgIyMgX2tpbmQ6IFwKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9jb21wcmVoZW5zaW9uKGV4cC0+di5OQU1FLmdlbmVyYXRvcnMpICYmIFwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5OQU1FLmVsdCwgTG9hZCk7CisgICAgQ09NUChMaXN0Q29tcCkKKyAgICBDT01QKFNldENvbXApCisgICAgQ09NUChHZW5lcmF0b3JFeHApCisjdW5kZWYgQ09NUAorICAgIGNhc2UgRGljdENvbXBfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2NvbXByZWhlbnNpb24oZXhwLT52LkRpY3RDb21wLmdlbmVyYXRvcnMpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5EaWN0Q29tcC5rZXksIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5EaWN0Q29tcC52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBZaWVsZF9raW5kOgorICAgICAgICByZXR1cm4gIWV4cC0+di5ZaWVsZC52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZC52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LllpZWxkRnJvbS52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBDb21wYXJlX2tpbmQ6CisgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLmNvbXBhcmF0b3JzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wYXJlIHdpdGggbm8gY29tcGFyYXRvcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpICE9CisgICAgICAgICAgICBhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUub3BzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wYXJlIGhhcyBhIGRpZmZlcmVudCBudW1iZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBjb21wYXJhdG9ycyBhbmQgb3BlcmFuZHMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ29tcGFyZS5jb21wYXJhdG9ycywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkNvbXBhcmUubGVmdCwgTG9hZCk7CisgICAgY2FzZSBDYWxsX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpICYmCisgICAgICAgICAgICAoIWV4cC0+di5DYWxsLnN0YXJhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuc3RhcmFyZ3MsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5rd2FyZ3MsIExvYWQpKTsKKyAgICBjYXNlIE51bV9raW5kOiB7CisgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKKyAgICAgICAgICAgICFQeUNvbXBsZXhfQ2hlY2tFeGFjdChuKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5vbi1udW1lcmljIHR5cGUgaW4gTnVtIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgY2FzZSBTdHJfa2luZDogeworICAgICAgICBQeU9iamVjdCAqcyA9IGV4cC0+di5TdHIuczsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5vbi1zdHJpbmcgdHlwZSBpbiBTdHIiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIEJ5dGVzX2tpbmQ6IHsKKyAgICAgICAgUHlPYmplY3QgKmIgPSBleHAtPnYuQnl0ZXMuczsKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub24tYnl0ZXMgdHlwZSBpbiBCeXRlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5BdHRyaWJ1dGUudmFsdWUsIExvYWQpOworICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9zbGljZShleHAtPnYuU3Vic2NyaXB0LnNsaWNlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuU3Vic2NyaXB0LnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFN0YXJyZWRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LlN0YXJyZWQudmFsdWUsIGN0eCk7CisgICAgY2FzZSBMaXN0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuTGlzdC5lbHRzLCBjdHgsIDApOworICAgIGNhc2UgVHVwbGVfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5UdXBsZS5lbHRzLCBjdHgsIDApOworICAgIC8qIFRoZXNlIGxhc3QgY2FzZXMgZG9uJ3QgaGF2ZSBhbnkgY2hlY2tpbmcuICovCisgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmV4cGVjdGVkIGV4cHJlc3Npb24iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ub25lbXB0eV9zZXEoYXNkbF9zZXEgKnNlcSwgY29uc3QgY2hhciAqd2hhdCwgY29uc3QgY2hhciAqb3duZXIpCit7CisgICAgaWYgKGFzZGxfc2VxX0xFTihzZXEpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImVtcHR5ICVzIG9uICVzIiwgd2hhdCwgb3duZXIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hc3NpZ25saXN0KGFzZGxfc2VxICp0YXJnZXRzLCBleHByX2NvbnRleHRfdHkgY3R4KQoreworICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEodGFyZ2V0cywgInRhcmdldHMiLCBjdHggPT0gRGVsID8gIkRlbGV0ZSIgOiAiQXNzaWduIikgJiYKKyAgICAgICAgdmFsaWRhdGVfZXhwcnModGFyZ2V0cywgY3R4LCAwKTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfYm9keShhc2RsX3NlcSAqYm9keSwgY29uc3QgY2hhciAqb3duZXIpCit7CisgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShib2R5LCAiYm9keSIsIG93bmVyKSAmJiB2YWxpZGF0ZV9zdG10cyhib2R5KTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfc3RtdChzdG10X3R5IHN0bXQpCit7CisgICAgaW50IGk7CisgICAgc3dpdGNoIChzdG10LT5raW5kKSB7CisgICAgY2FzZSBGdW5jdGlvbkRlZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkZ1bmN0aW9uRGVmLmJvZHksICJGdW5jdGlvbkRlZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9hcmd1bWVudHMoc3RtdC0+di5GdW5jdGlvbkRlZi5hcmdzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5GdW5jdGlvbkRlZi5yZXR1cm5zIHx8CisgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZ1bmN0aW9uRGVmLnJldHVybnMsIExvYWQpKTsKKyAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuQ2xhc3NEZWYuYm9keSwgIkNsYXNzRGVmIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuYmFzZXMsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhzdG10LT52LkNsYXNzRGVmLmtleXdvcmRzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5zdGFyYXJncyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkNsYXNzRGVmLmt3YXJncyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQ2xhc3NEZWYua3dhcmdzLCBMb2FkKSk7CisgICAgY2FzZSBSZXR1cm5fa2luZDoKKyAgICAgICAgcmV0dXJuICFzdG10LT52LlJldHVybi52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmV0dXJuLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIERlbGV0ZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYXNzaWdubGlzdChzdG10LT52LkRlbGV0ZS50YXJnZXRzLCBEZWwpOworICAgIGNhc2UgQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9hc3NpZ25saXN0KHN0bXQtPnYuQXNzaWduLnRhcmdldHMsIFN0b3JlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFzc2lnbi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgRm9yX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuRm9yLmJvZHksICJGb3IiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5Gb3Iub3JlbHNlKTsKKyAgICBjYXNlIFdoaWxlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuV2hpbGUudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5XaGlsZS5ib2R5LCAiV2hpbGUiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5XaGlsZS5vcmVsc2UpOworICAgIGNhc2UgSWZfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5JZi50ZXN0LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LklmLmJvZHksICJJZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LklmLm9yZWxzZSk7CisgICAgY2FzZSBXaXRoX2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuV2l0aC5pdGVtcywgIml0ZW1zIiwgIldpdGgiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXQtPnYuV2l0aC5pdGVtcyk7IGkrKykgeworICAgICAgICAgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzZGxfc2VxX0dFVChzdG10LT52LldpdGguaXRlbXMsIGkpOworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGl0ZW0tPmNvbnRleHRfZXhwciwgTG9hZCkgfHwKKyAgICAgICAgICAgICAgICAoaXRlbS0+b3B0aW9uYWxfdmFycyAmJiAhdmFsaWRhdGVfZXhwcihpdGVtLT5vcHRpb25hbF92YXJzLCBTdG9yZSkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuV2l0aC5ib2R5LCAiV2l0aCIpOworICAgIGNhc2UgUmFpc2Vfa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuUmFpc2UuZXhjKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LlJhaXNlLmV4YywgTG9hZCkgJiYKKyAgICAgICAgICAgICAgICAoIXN0bXQtPnYuUmFpc2UuY2F1c2UgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LlJhaXNlLmNhdXNlLCBMb2FkKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0bXQtPnYuUmFpc2UuY2F1c2UpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiUmFpc2Ugd2l0aCBjYXVzZSBidXQgbm8gZXhjZXB0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICBpZiAoIXZhbGlkYXRlX2JvZHkoc3RtdC0+di5UcnkuYm9keSwgIlRyeSIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmhhbmRsZXJzKSAmJgorICAgICAgICAgICAgIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5maW5hbGJvZHkpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlRyeSBoYXMgbmVpdGhlciBleGNlcHQgaGFuZGxlcnMgbm9yIGZpbmFsYm9keSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuaGFuZGxlcnMpICYmCisgICAgICAgICAgICBhc2RsX3NlcV9MRU4oc3RtdC0+di5Ucnkub3JlbHNlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJUcnkgaGFzIG9yZWxzZSBidXQgbm8gZXhjZXB0IGhhbmRsZXJzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmhhbmRsZXJzKTsgaSsrKSB7CisgICAgICAgICAgICBleGNlcHRoYW5kbGVyX3R5IGhhbmRsZXIgPSBhc2RsX3NlcV9HRVQoc3RtdC0+di5UcnkuaGFuZGxlcnMsIGkpOworICAgICAgICAgICAgaWYgKChoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIudHlwZSAmJgorICAgICAgICAgICAgICAgICAhdmFsaWRhdGVfZXhwcihoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIudHlwZSwgTG9hZCkpIHx8CisgICAgICAgICAgICAgICAgIXZhbGlkYXRlX2JvZHkoaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLmJvZHksICJFeGNlcHRIYW5kbGVyIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmZpbmFsYm9keSkgfHwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LlRyeS5maW5hbGJvZHkpKSAmJgorICAgICAgICAgICAgKCFhc2RsX3NlcV9MRU4oc3RtdC0+di5Ucnkub3JlbHNlKSB8fAorICAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuVHJ5Lm9yZWxzZSkpOworICAgIGNhc2UgQXNzZXJ0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXNzZXJ0LnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuQXNzZXJ0Lm1zZyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXNzZXJ0Lm1zZywgTG9hZCkpOworICAgIGNhc2UgSW1wb3J0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnQubmFtZXMsICJuYW1lcyIsICJJbXBvcnQiKTsKKyAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuSW1wb3J0RnJvbS5sZXZlbCA8IC0xKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkltcG9ydEZyb20gbGV2ZWwgbGVzcyB0aGFuIC0xIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0RnJvbS5uYW1lcywgIm5hbWVzIiwgIkltcG9ydEZyb20iKTsKKyAgICBjYXNlIEdsb2JhbF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuR2xvYmFsLm5hbWVzLCAibmFtZXMiLCAiR2xvYmFsIik7CisgICAgY2FzZSBOb25sb2NhbF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuTm9ubG9jYWwubmFtZXMsICJuYW1lcyIsICJOb25sb2NhbCIpOworICAgIGNhc2UgRXhwcl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkV4cHIudmFsdWUsIExvYWQpOworICAgIGNhc2UgUGFzc19raW5kOgorICAgIGNhc2UgQnJlYWtfa2luZDoKKyAgICBjYXNlIENvbnRpbnVlX2tpbmQ6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVuZXhwZWN0ZWQgc3RhdGVtZW50Iik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfc3RtdHMoYXNkbF9zZXEgKnNlcSkKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeworICAgICAgICBzdG10X3R5IHN0bXQgPSBhc2RsX3NlcV9HRVQoc2VxLCBpKTsKKyAgICAgICAgaWYgKHN0bXQpIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfc3RtdChzdG10KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGRpc2FsbG93ZWQgaW4gc3RhdGVtZW50IGxpc3QiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9leHBycyhhc2RsX3NlcSAqZXhwcnMsIGV4cHJfY29udGV4dF90eSBjdHgsIGludCBudWxsX29rKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oZXhwcnMpOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBleHByID0gYXNkbF9zZXFfR0VUKGV4cHJzLCBpKTsKKyAgICAgICAgaWYgKGV4cHIpIHsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihleHByLCBjdHgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFudWxsX29rKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBkaXNhbGxvd2VkIGluIGV4cHJlc3Npb24gbGlzdCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworaW50CitQeUFTVF9WYWxpZGF0ZShtb2RfdHkgbW9kKQoreworICAgIGludCByZXMgPSAwOworCisgICAgc3dpdGNoIChtb2QtPmtpbmQpIHsKKyAgICBjYXNlIE1vZHVsZV9raW5kOgorICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10cyhtb2QtPnYuTW9kdWxlLmJvZHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEludGVyYWN0aXZlX2tpbmQ6CisgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXRzKG1vZC0+di5JbnRlcmFjdGl2ZS5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHByZXNzaW9uX2tpbmQ6CisgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIobW9kLT52LkV4cHJlc3Npb24uYm9keSwgTG9hZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VpdGVfa2luZDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdWl0ZSBpcyBub3QgdmFsaWQgaW4gdGhlIENQeXRob24gY29tcGlsZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW1wb3NzaWJsZSBtb2R1bGUgbm9kZSIpOworICAgICAgICByZXMgPSAwOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLyogVGhpcyBpcyBkb25lIGhlcmUsIHNvIGRlZmluZXMgbGlrZSAidGVzdCIgZG9uJ3QgaW50ZXJmZXJlIHdpdGggQVNUIHVzZSBhYm92ZS4gKi8KKyNpbmNsdWRlICJncmFtbWFyLmgiCisjaW5jbHVkZSAicGFyc2V0b2suaCIKKyNpbmNsdWRlICJncmFtaW5pdC5oIgorCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewogICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwogICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KICAgICBjb25zdCBjaGFyICpjX2ZpbGVuYW1lOyAvKiBmaWxlbmFtZSAqLworICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZTsgLyogTm9ybWFsaXphdGlvbiBmdW5jdGlvbiBmcm9tIHVuaWNvZGVkYXRhLiAqLworICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZV9hcmdzOyAvKiBOb3JtYWxpemF0aW9uIGFyZ3VtZW50IHR1cGxlLiAqLwogfTsKIAogc3RhdGljIGFzZGxfc2VxICpzZXFfZm9yX3Rlc3RsaXN0KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqKTsKQEAgLTM4LDEyNyArNTIwLDk2IEBACiBzdGF0aWMgUHlPYmplY3QgKnBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmJ5dGVzbW9kZSk7CiAKLSNpZm5kZWYgTElORU5PCi0jZGVmaW5lIExJTkVOTyhuKSAgICAgICAoKG4pLT5uX2xpbmVubykKLSNlbmRpZgotCiAjZGVmaW5lIENPTVBfR0VORVhQICAgMAogI2RlZmluZSBDT01QX0xJU1RDT01QIDEKICNkZWZpbmUgQ09NUF9TRVRDT01QICAyCiAKK3N0YXRpYyBpbnQKK2luaXRfbm9ybWFsaXphdGlvbihzdHJ1Y3QgY29tcGlsaW5nICpjKQoreworICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidW5pY29kZWRhdGEiKTsKKyAgICBpZiAoIW0pCisgICAgICAgIHJldHVybiAwOworICAgIGMtPmNfbm9ybWFsaXplID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtLCAibm9ybWFsaXplIik7CisgICAgUHlfREVDUkVGKG0pOworICAgIGlmICghYy0+Y19ub3JtYWxpemUpCisgICAgICAgIHJldHVybiAwOworICAgIGMtPmNfbm9ybWFsaXplX2FyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoc04pIiwgIk5GS0MiLCBQeV9Ob25lKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGMtPmNfbm9ybWFsaXplX2FyZ3MsIDEsIE5VTEwpOworICAgIGlmICghYy0+Y19ub3JtYWxpemVfYXJncykgeworICAgICAgICBQeV9DTEVBUihjLT5jX25vcm1hbGl6ZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGlkZW50aWZpZXIKLW5ld19pZGVudGlmaWVyKGNvbnN0IGNoYXIgKm4sIFB5QXJlbmEgKmFyZW5hKQorbmV3X2lkZW50aWZpZXIoY29uc3QgY2hhciAqbiwgc3RydWN0IGNvbXBpbGluZyAqYykKIHsKICAgICBQeU9iamVjdCAqaWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChuLCBzdHJsZW4obiksIE5VTEwpOwotICAgIFB5X1VOSUNPREUgKnU7CiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlkKTsKKyAgICAvKiBQeVVuaWNvZGVfRGVjb2RlVVRGOCBzaG91bGQgYWx3YXlzIHJldHVybiBhIHJlYWR5IHN0cmluZy4gKi8KKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKGlkKSk7CiAgICAgLyogQ2hlY2sgd2hldGhlciB0aGVyZSBhcmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlCiAgICAgICAgaWRlbnRpZmllcjsgaWYgc28sIG5vcm1hbGl6ZSB0byBORktDLiAqLwotICAgIGZvciAoOyAqdTsgdSsrKSB7Ci0gICAgICAgIGlmICgqdSA+PSAxMjgpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidW5pY29kZWRhdGEiKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppZDI7Ci0gICAgICAgICAgICBpZiAoIW0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZDIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG0sICJub3JtYWxpemUiLCAic08iLCAiTkZLQyIsIGlkKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKLSAgICAgICAgICAgIGlmICghaWQyKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGlkKSkgeworICAgICAgICBQeU9iamVjdCAqaWQyOworICAgICAgICBpZiAoIWMtPmNfbm9ybWFsaXplICYmICFpbml0X25vcm1hbGl6YXRpb24oYykpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpZCk7Ci0gICAgICAgICAgICBpZCA9IGlkMjsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjLT5jX25vcm1hbGl6ZV9hcmdzLCAxLCBpZCk7CisgICAgICAgIGlkMiA9IFB5T2JqZWN0X0NhbGwoYy0+Y19ub3JtYWxpemUsIGMtPmNfbm9ybWFsaXplX2FyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoaWQpOworICAgICAgICBpZiAoIWlkMikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZCA9IGlkMjsKICAgICB9CiAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJmlkKTsKLSAgICBQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBpZCk7CisgICAgUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBpZCk7CiAgICAgcmV0dXJuIGlkOwogfQogCi0jZGVmaW5lIE5FV19JREVOVElGSUVSKG4pIG5ld19pZGVudGlmaWVyKFNUUihuKSwgYy0+Y19hcmVuYSkKLQotLyogVGhpcyByb3V0aW5lIHByb3ZpZGVzIGFuIGludmFsaWQgb2JqZWN0IGZvciB0aGUgc3ludGF4IGVycm9yLgotICAgVGhlIG91dGVybW9zdCByb3V0aW5lIG11c3QgdW5wYWNrIHRoaXMgZXJyb3IgYW5kIGNyZWF0ZSB0aGUKLSAgIHByb3BlciBvYmplY3QuICBXZSBkbyB0aGlzIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBwYXNzCi0gICB0aGUgZmlsZW5hbWUgdG8gZXZlcnl0aGluZyBmdW5jdGlvbi4KLQotICAgWFhYIE1heWJlIHdlIHNob3VsZCBqdXN0IHBhc3MgdGhlIGZpbGVuYW1lLi4uCi0qLworI2RlZmluZSBORVdfSURFTlRJRklFUihuKSBuZXdfaWRlbnRpZmllcihTVFIobiksIGMpCiAKIHN0YXRpYyBpbnQKLWFzdF9lcnJvcihjb25zdCBub2RlICpuLCBjb25zdCBjaGFyICplcnJzdHIpCithc3RfZXJyb3Ioc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqZXJybXNnKQogewotICAgIFB5T2JqZWN0ICp1ID0gUHlfQnVpbGRWYWx1ZSgiemlpIiwgZXJyc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCksICpzYXZlOwotICAgIGlmICghdSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgLyoKLSAgICAgKiBQcmV2ZW50IHRoZSBlcnJvciBmcm9tIGJlaW5nIGNoYWluZWQuIFB5RXJyX1NldE9iamVjdCB3aWxsIG5vcm1hbGl6ZSB0aGUKLSAgICAgKiBleGNlcHRpb24gaW4gb3JkZXIgdG8gY2hhaW4gaXQuIGFzdF9lcnJvcl9maW5pc2gsIGhvd2V2ZXIsIHJlcXVpcmVzIHRoZQotICAgICAqIGVycm9yIG5vdCB0byBiZSBub3JtYWxpemVkLgotICAgICAqLwotICAgIHNhdmUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5leGNfdmFsdWU7Ci0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+ZXhjX3ZhbHVlID0gTlVMTDsKLSAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3ludGF4RXJyb3IsIHUpOwotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPmV4Y192YWx1ZSA9IHNhdmU7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZAotYXN0X2Vycm9yX2ZpbmlzaChjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdGJhY2ssICplcnJzdHIsICpvZmZzZXQsICpsb2MsICp0bXA7CisgICAgUHlPYmplY3QgKnZhbHVlLCAqZXJyc3RyLCAqbG9jLCAqdG1wOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmo7Ci0gICAgbG9uZyBsaW5lbm87CiAKLSAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7Ci0gICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5bnRheEVycm9yKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRiYWNrKTsKLSAgICBlcnJzdHIgPSBQeVR1cGxlX0dldEl0ZW0odmFsdWUsIDApOwotICAgIGlmICghZXJyc3RyKQotICAgICAgICByZXR1cm47Ci0gICAgUHlfSU5DUkVGKGVycnN0cik7Ci0gICAgbGluZW5vID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dldEl0ZW0odmFsdWUsIDEpKTsKLSAgICBpZiAobGluZW5vID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG9mZnNldCA9IFB5VHVwbGVfR2V0SXRlbSh2YWx1ZSwgMik7Ci0gICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAgUHlfREVDUkVGKGVycnN0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLQotICAgIGxvYyA9IFB5RXJyX1Byb2dyYW1UZXh0KGZpbGVuYW1lLCBsaW5lbm8pOworICAgIGxvYyA9IFB5RXJyX1Byb2dyYW1UZXh0KGMtPmNfZmlsZW5hbWUsIExJTkVOTyhuKSk7CiAgICAgaWYgKCFsb2MpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBsb2MgPSBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgZmlsZW5hbWVfb2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7Ci0gICAgZWxzZSB7CisgICAgaWYgKGMtPmNfZmlsZW5hbWUpIHsKKyAgICAgICAgZmlsZW5hbWVfb2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjLT5jX2ZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCFmaWxlbmFtZV9vYmopIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsb2MpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIGZpbGVuYW1lX29iaiA9IFB5X05vbmU7CiAgICAgfQotICAgIGlmIChmaWxlbmFtZV9vYmogIT0gTlVMTCkKLSAgICAgICAgdG1wID0gUHlfQnVpbGRWYWx1ZSgiKE5sT08pIiwgZmlsZW5hbWVfb2JqLCBsaW5lbm8sIG9mZnNldCwgbG9jKTsKLSAgICBlbHNlCi0gICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgUHlfREVDUkVGKGxvYyk7Ci0gICAgaWYgKCF0bXApIHsKLSAgICAgICAgUHlfREVDUkVGKGVycnN0cik7Ci0gICAgICAgIHJldHVybjsKKyAgICB0bXAgPSBQeV9CdWlsZFZhbHVlKCIoTmlpTikiLCBmaWxlbmFtZV9vYmosIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBsb2MpOworICAgIGlmICghdG1wKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlcnJzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJtc2cpOworICAgIGlmICghZXJyc3RyKSB7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgZXJyc3RyLCB0bXApOwogICAgIFB5X0RFQ1JFRihlcnJzdHIpOwogICAgIFB5X0RFQ1JFRih0bXApOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbHVlLCB0YmFjayk7CisgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TeW50YXhFcnJvciwgdmFsdWUpOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogLyogbnVtX3N0bXRzKCkgcmV0dXJucyBudW1iZXIgb2YgY29udGFpbmVkIHN0YXRlbWVudHMuCkBAIC0yMzQsMTMgKzY4NSwxNyBAQAogICAgIHN0bXRfdHkgczsKICAgICBub2RlICpjaDsKICAgICBzdHJ1Y3QgY29tcGlsaW5nIGM7CisgICAgbW9kX3R5IHJlcyA9IE5VTEw7CiAKKyAgICBjLmNfYXJlbmEgPSBhcmVuYTsKKyAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICBjLmNfbm9ybWFsaXplID0gYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKICAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmNmX2ZsYWdzICYgUHlDRl9TT1VSQ0VfSVNfVVRGOCkgewogICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwogICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7CiAjaWYgMAotICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OwogI2VuZGlmCiAgICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7CiAgICAgICAgIH0KQEAgLTI1MSwxNSArNzA2LDEzIEBACiAgICAgICAgIC8qIFBFUCAzMTIwICovCiAgICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7CiAgICAgfQotICAgIGMuY19hcmVuYSA9IGFyZW5hOwotICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOwogCiAgICAgayA9IDA7CiAgICAgc3dpdGNoIChUWVBFKG4pKSB7CiAgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KG51bV9zdG10cyhuKSwgYXJlbmEpOwogICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobikgLSAxOyBpKyspIHsKICAgICAgICAgICAgICAgICBjaCA9IENISUxEKG4sIGkpOwogICAgICAgICAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBORVdMSU5FKQpAQCAtMjY5LDcgKzcyMiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIGNoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIGsrKywgcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMjc4LDQyICs3MzEsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBDSElMRChjaCwgaiAqIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBrKyssIHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIE1vZHVsZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgcmVzID0gTW9kdWxlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBldmFsX2lucHV0OiB7CiAgICAgICAgICAgICBleHByX3R5IHRlc3RsaXN0X2FzdDsKIAogICAgICAgICAgICAgLyogWFhYIFdoeSBub3QgY29tcF9mb3IgaGVyZT8gKi8KICAgICAgICAgICAgIHRlc3RsaXN0X2FzdCA9IGFzdF9mb3JfdGVzdGxpc3QoJmMsIENISUxEKG4sIDApKTsKICAgICAgICAgICAgIGlmICghdGVzdGxpc3RfYXN0KQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICByZXR1cm4gRXhwcmVzc2lvbih0ZXN0bGlzdF9hc3QsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIHJlcyA9IEV4cHJlc3Npb24odGVzdGxpc3RfYXN0LCBhcmVuYSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIHNpbmdsZV9pbnB1dDoKICAgICAgICAgICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBORVdMSU5FKSB7CiAgICAgICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcoMSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgMCwgUGFzcyhuLT5uX2xpbmVubywgbi0+bl9jb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSkpOwogICAgICAgICAgICAgICAgIGlmICghYXNkbF9zZXFfR0VUKHN0bXRzLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICAgICAgcmVzID0gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKICAgICAgICAgICAgICAgICBudW0gPSBudW1fc3RtdHMobik7CiAgICAgICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcobnVtLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgaWYgKG51bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIG4pOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgMCwgcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMzI0LDIxICs3NzksMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIENISUxEKG4sIGkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBpIC8gMiwgcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICByZXMgPSBJbnRlcmFjdGl2ZShzdG10cywgYXJlbmEpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbm9kZSAlZCBmb3IgUHlBU1RfRnJvbU5vZGUiLCBUWVBFKG4pKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBnb3RvIG91dDsKICAgICB9Ci0gZXJyb3I6Ci0gICAgYXN0X2Vycm9yX2ZpbmlzaChmaWxlbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Cisgb3V0OgorICAgIGlmIChjLmNfbm9ybWFsaXplKSB7CisgICAgICAgIFB5X0RFQ1JFRihjLmNfbm9ybWFsaXplKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjLmNfbm9ybWFsaXplX2FyZ3MsIDEsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYy5jX25vcm1hbGl6ZV9hcmdzKTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKIH0KIAogLyogUmV0dXJuIHRoZSBBU1QgcmVwci4gb2YgdGhlIG9wZXJhdG9yIHJlcHJlc2VudGVkIGFzIHN5bnRheCAofCwgXiwgZXRjLikKQEAgLTM4MywxOCArODQzLDE4IEBACiB9OwogCiBzdGF0aWMgaW50Ci1mb3JiaWRkZW5fbmFtZShpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sIGludCBmdWxsX2NoZWNrcykKK2ZvcmJpZGRlbl9uYW1lKHN0cnVjdCBjb21waWxpbmcgKmMsIGlkZW50aWZpZXIgbmFtZSwgY29uc3Qgbm9kZSAqbiwgaW50IGZ1bGxfY2hlY2tzKQogewogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpOwogICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiX19kZWJ1Z19fIikgPT0gMCkgewotICAgICAgICBhc3RfZXJyb3IobiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKGZ1bGxfY2hlY2tzKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKipwOwogICAgICAgICBmb3IgKHAgPSBGT1JCSURERU47ICpwOyBwKyspIHsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAqcCkgPT0gMCkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDMwLDcgKzg5MCw3IEBACiAgICAgc3dpdGNoIChlLT5raW5kKSB7CiAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CiAgICAgICAgICAgICBlLT52LkF0dHJpYnV0ZS5jdHggPSBjdHg7Ci0gICAgICAgICAgICBpZiAoY3R4ID09IFN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKGUtPnYuQXR0cmlidXRlLmF0dHIsIG4sIDEpKQorICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShjLCBlLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgpAQCAtNDQzLDcgKzkwMyw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lX2tpbmQ6CiAgICAgICAgICAgICBpZiAoY3R4ID09IFN0b3JlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGUtPnYuTmFtZS5pZCwgbiwgMSkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGUtPnYuTmFtZS5pZCwgbiwgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOyAvKiBmb3JiaWRkZW5fbmFtZSgpIGNhbGxzIGFzdF9lcnJvcigpICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlLT52Lk5hbWUuY3R4ID0gY3R4OwpAQCAtNDc2LDYgKzkzNiw3IEBACiAgICAgICAgICAgICBleHByX25hbWUgPSAiZ2VuZXJhdG9yIGV4cHJlc3Npb24iOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWWllbGRfa2luZDoKKyAgICAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJ5aWVsZCBleHByZXNzaW9uIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpc3RDb21wX2tpbmQ6CkBAIC01MTYsNyArOTc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgJXMgJXMiLAogICAgICAgICAgICAgICAgICAgICAgIGN0eCA9PSBTdG9yZSA/ICJhc3NpZ24gdG8iIDogImRlbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgZXhwcl9uYW1lKTsKLSAgICAgICAgcmV0dXJuIGFzdF9lcnJvcihuLCBidWYpOworICAgICAgICByZXR1cm4gYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CiAgICAgfQogCiAgICAgLyogSWYgdGhlIExIUyBpcyBhIGxpc3Qgb3IgdHVwbGUsIHdlIG5lZWQgdG8gc2V0IHRoZSBhc3NpZ25tZW50CkBAIC02NjQsNyArMTEyNSw3IEBACiAgICAgbmFtZSA9IE5FV19JREVOVElGSUVSKGNoKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmb3JiaWRkZW5fbmFtZShuYW1lLCBjaCwgMCkpCisgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIGNoLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoTkNIKG4pID09IDMgJiYgVFlQRShDSElMRChuLCAxKSkgPT0gQ09MT04pIHsKQEAgLTY5NCw3ICsxMTU1LDcgQEAKICAgICBpbnQgaiA9IDA7IC8qIGluZGV4IGZvciBrd2RlZmF1bHRzIGFuZCBrd29ubHlhcmdzICovCiAKICAgICBpZiAoa3dvbmx5YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIGFzdF9lcnJvcihDSElMRChuLCBzdGFydCksICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CisgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChuLCBzdGFydCksICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgYXNzZXJ0KGt3ZGVmYXVsdHMgIT0gTlVMTCk7CkBAIC03MjYsNyArMTE4Nyw3IEBACiAgICAgICAgICAgICAgICAgYXJnbmFtZSA9IE5FV19JREVOVElGSUVSKGNoKTsKICAgICAgICAgICAgICAgICBpZiAoIWFyZ25hbWUpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGFyZ25hbWUsIGNoLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgYXJnbmFtZSwgY2gsIDApKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIGFyZyA9IGFyZyhhcmduYW1lLCBhbm5vdGF0aW9uLCBjLT5jX2FyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoIWFyZykKQEAgLTczNyw3ICsxMTk4LDcgQEAKICAgICAgICAgICAgIGNhc2UgRE9VQkxFU1RBUjoKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGNoLCAidW5leHBlY3RlZCBub2RlIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAidW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgIH0KQEAgLTgyOSw3ICsxMjkwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobnBvc2FyZ3MgKyBua3dvbmx5YXJncyA+IDI1NSkgewotICAgICAgICBhc3RfZXJyb3IobiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC04NTcsNyArMTMxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2RlZmF1bHQgPSAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3VuZF9kZWZhdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1kZWZhdWx0IGFyZ3VtZW50IGZvbGxvd3MgZGVmYXVsdCBhcmd1bWVudCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC04NjksNyArMTMzMCw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNUQVI6CiAgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKG4sIGkpLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQobiwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC04ODYsNyArMTM0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhcmFyZyA9IE5FV19JREVOVElGSUVSKENISUxEKGNoLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZSh2YXJhcmcsIENISUxEKGNoLCAwKSwgMCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCB2YXJhcmcsIENISUxEKGNoLCAwKSwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgaWYgKE5DSChjaCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGVyZSBpcyBhbiBhbm5vdGF0aW9uIG9uIHRoZSB2YXJhcmcgKi8KQEAgLTkxNyw3ICsxMzc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFrd2FyZ2Fubm90YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGt3YXJnLCBDSElMRChjaCwgMCksIDApKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBrd2FyZywgQ0hJTEQoY2gsIDApLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAzNiw3ICsxNDk3LDcgQEAKICAgICBuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgbmFtZV9pKSk7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZm9yYmlkZGVuX25hbWUobmFtZSwgQ0hJTEQobiwgbmFtZV9pKSwgMCkpCisgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIENISUxEKG4sIG5hbWVfaSksIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhcmdzID0gYXN0X2Zvcl9hcmd1bWVudHMoYywgQ0hJTEQobiwgbmFtZV9pICsgMSkpOwogICAgIGlmICghYXJncykKQEAgLTEzNzcsMTAgKzE4MzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICAgICAgICAgICAgICAgcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZXJyc3RyKTsKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKHVuaWNvZGUgZXJyb3IpICVzIiwgcyk7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCBidWYpOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgYnVmKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVycnN0cik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICIodW5pY29kZSBlcnJvcikgdW5rbm93biBlcnJvciIpOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgIih1bmljb2RlIGVycm9yKSB1bmtub3duIGVycm9yIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwpAQCAtMTg5NywxMiArMjM1OCwyNSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfYmlub3AoYywgbik7CiAgICAgICAgIGNhc2UgeWllbGRfZXhwcjogeworICAgICAgICAgICAgbm9kZSAqYW4gPSBOVUxMOworICAgICAgICAgICAgbm9kZSAqZW4gPSBOVUxMOworICAgICAgICAgICAgaW50IGlzX2Zyb20gPSAwOwogICAgICAgICAgICAgZXhwcl90eSBleHAgPSBOVUxMOwotICAgICAgICAgICAgaWYgKE5DSChuKSA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgZXhwID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBDSElMRChuLCAxKSk7CisgICAgICAgICAgICBpZiAoTkNIKG4pID4gMSkKKyAgICAgICAgICAgICAgICBhbiA9IENISUxEKG4sIDEpOyAvKiB5aWVsZF9hcmcgKi8KKyAgICAgICAgICAgIGlmIChhbikgeworICAgICAgICAgICAgICAgIGVuID0gQ0hJTEQoYW4sIE5DSChhbikgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoTkNIKGFuKSA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIGlzX2Zyb20gPSAxOworICAgICAgICAgICAgICAgICAgICBleHAgPSBhc3RfZm9yX2V4cHIoYywgZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGV4cCA9IGFzdF9mb3JfdGVzdGxpc3QoYywgZW4pOwogICAgICAgICAgICAgICAgIGlmICghZXhwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc19mcm9tKQorICAgICAgICAgICAgICAgIHJldHVybiBZaWVsZEZyb20oZXhwLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgICAgICByZXR1cm4gWWllbGQoZXhwLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBmYWN0b3I6CkBAIC0xOTI3LDcgKzI0MDEsNyBAQAogICAgIC8qCiAgICAgICBhcmdsaXN0OiAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddfCAnKicgdGVzdCBbJywnICcqKicgdGVzdF0KICAgICAgICAgICAgICAgIHwgJyoqJyB0ZXN0KQotICAgICAgYXJndW1lbnQ6IFt0ZXN0ICc9J10gdGVzdCBbY29tcF9mb3JdICAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKKyAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddICh0ZXN0KSBbY29tcF9mb3JdICAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKICAgICAqLwogCiAgICAgaW50IGksIG5hcmdzLCBua2V5d29yZHMsIG5nZW5zOwpAQCAtMTk1MiwxNCArMjQyNiwxNCBAQAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChuZ2VucyA+IDEgfHwgKG5nZW5zICYmIChuYXJncyB8fCBua2V5d29yZHMpKSkgewotICAgICAgICBhc3RfZXJyb3IobiwgIkdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCAiCisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkICIKICAgICAgICAgICAgICAgICAgICJpZiBub3Qgc29sZSBhcmd1bWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAobmFyZ3MgKyBua2V5d29yZHMgKyBuZ2VucyA+IDI1NSkgewotICAgICAgYXN0X2Vycm9yKG4sICJtb3JlIHRoYW4gMjU1IGFyZ3VtZW50cyIpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgYXJncyA9IGFzZGxfc2VxX25ldyhuYXJncyArIG5nZW5zLCBjLT5jX2FyZW5hKTsKQEAgLTE5NzYsMTIgKzI0NTAsMTIgQEAKICAgICAgICAgICAgIGV4cHJfdHkgZTsKICAgICAgICAgICAgIGlmIChOQ0goY2gpID09IDEpIHsKICAgICAgICAgICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksCisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWtleXdvcmQgYXJnIGFmdGVyIGtleXdvcmQgYXJnIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodmFyYXJnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksCisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBuYW1lZCBhcmd1bWVudHMgbWF5IGZvbGxvdyAqZXhwcmVzc2lvbiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0yMDExLDE5ICsyNDg1LDE5IEBACiAgICAgICAgICAgICAgICAgICogdGhlbiBpcyB2ZXJ5IGNvbmZ1c2luZy4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAoZS0+a2luZCA9PSBMYW1iZGFfa2luZCkgewotICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksICJrZXl3b3JkIGNhbid0IGJlIGFuIGV4cHJlc3Npb24iKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGtleSA9IGUtPnYuTmFtZS5pZDsKICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmtleXdvcmRzOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaykpLT5hcmc7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUodG1wLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgYXJndW1lbnQgcmVwZWF0ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjExNiw3ICsyNTkwLDcgQEAKICAgICAgICAgICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjaCwgImlsbGVnYWwgZXhwcmVzc2lvbiBmb3IgYXVnbWVudGVkIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJpbGxlZ2FsIGV4cHJlc3Npb24gZm9yIGF1Z21lbnRlZCBhc3NpZ25tZW50Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtMjE0OSw3ICsyNjIzLDcgQEAKICAgICAgICAgICAgIGV4cHJfdHkgZTsKICAgICAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgICAgICBpZiAoVFlQRShjaCkgPT0geWllbGRfZXhwcikgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjaCwgImFzc2lnbm1lbnQgdG8geWllbGQgZXhwcmVzc2lvbiBub3QgcG9zc2libGUiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJhc3NpZ25tZW50IHRvIHlpZWxkIGV4cHJlc3Npb24gbm90IHBvc3NpYmxlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CkBAIC0yMjIxLDcgKzI2OTUsNyBAQAogICAgICAgY29udGludWVfc3RtdDogJ2NvbnRpbnVlJwogICAgICAgcmV0dXJuX3N0bXQ6ICdyZXR1cm4nIFt0ZXN0bGlzdF0KICAgICAgIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKLSAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgdGVzdGxpc3QKKyAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgdGVzdGxpc3QgfCAneWllbGQnICdmcm9tJyB0ZXN0CiAgICAgICByYWlzZV9zdG10OiAncmFpc2UnIFt0ZXN0IFsnLCcgdGVzdCBbJywnIHRlc3RdXV0KICAgICAqLwogICAgIG5vZGUgKmNoOwpAQCAtMjI5NiwxMSArMjc3MCwxMSBAQAogICAgICAgICAgICAgICAgIHN0ciA9IE5FV19JREVOVElGSUVSKHN0cl9ub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKHN0ciwgc3RyX25vZGUsIDApKQorICAgICAgICAgICAgICAgIGlmIChzdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShjLCBzdHIsIHN0cl9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUobmFtZSwgbmFtZV9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgbmFtZSwgbmFtZV9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYWxpYXMobmFtZSwgc3RyLCBjLT5jX2FyZW5hKTsKQEAgLTIzMTksNyArMjc5Myw3IEBACiAgICAgICAgICAgICAgICAgYS0+YXNuYW1lID0gTkVXX0lERU5USUZJRVIoYXNuYW1lX25vZGUpOwogICAgICAgICAgICAgICAgIGlmICghYS0+YXNuYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYS0+YXNuYW1lLCBhc25hbWVfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGEtPmFzbmFtZSwgYXNuYW1lX25vZGUsIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gYTsKICAgICAgICAgICAgIH0KQEAgLTIzMzAsNyArMjgwNCw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9IE5FV19JREVOVElGSUVSKG5hbWVfbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUobmFtZSwgbmFtZV9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoYywgbmFtZSwgbmFtZV9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzKG5hbWUsIE5VTEwsIGMtPmNfYXJlbmEpOwogICAgICAgICAgICAgfQpAQCAtMjQ1OSwxMyArMjkzMywxMyBAQAogICAgICAgICAgICAgbiA9IENISUxEKG4sIGlkeCk7CiAgICAgICAgICAgICBuX2NoaWxkcmVuID0gTkNIKG4pOwogICAgICAgICAgICAgaWYgKG5fY2hpbGRyZW4gJSAyID09IDApIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgInRyYWlsaW5nIGNvbW1hIG5vdCBhbGxvd2VkIHdpdGhvdXQiCisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJ0cmFpbGluZyBjb21tYSBub3QgYWxsb3dlZCB3aXRob3V0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1cnJvdW5kaW5nIHBhcmVudGhlc2VzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiVW5leHBlY3RlZCBub2RlLXR5cGUgaW4gZnJvbS1pbXBvcnQiKTsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiVW5leHBlY3RlZCBub2RlLXR5cGUgaW4gZnJvbS1pbXBvcnQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTI4NzEsNyArMzM0NSw3IEBACiAgICAgICAgIGlkZW50aWZpZXIgZSA9IE5FV19JREVOVElGSUVSKENISUxEKGV4YywgMykpOwogICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGUsIENISUxEKGV4YywgMyksIDApKQorICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgZSwgQ0hJTEQoZXhjLCAzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChleGMsIDEpKTsKICAgICAgICAgaWYgKCFleHByZXNzaW9uKQpAQCAtMjg5NSw3ICszMzY5LDcgQEAKIHsKICAgICBjb25zdCBpbnQgbmNoID0gTkNIKG4pOwogICAgIGludCBuX2V4Y2VwdCA9IChuY2ggLSAzKS8zOwotICAgIGFzZGxfc2VxICpib2R5LCAqb3JlbHNlID0gTlVMTCwgKmZpbmFsbHkgPSBOVUxMOworICAgIGFzZGxfc2VxICpib2R5LCAqaGFuZGxlcnMgPSBOVUxMLCAqb3JlbHNlID0gTlVMTCwgKmZpbmFsbHkgPSBOVUxMOwogCiAgICAgUkVRKG4sIHRyeV9zdG10KTsKIApAQCAtMjkzMCwxNSArMzQwNCwxNCBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgbmNoIC0gMykpICE9IGV4Y2VwdF9jbGF1c2UpIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJtYWxmb3JtZWQgJ3RyeScgc3RhdGVtZW50Iik7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAibWFsZm9ybWVkICd0cnknIHN0YXRlbWVudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAobl9leGNlcHQgPiAwKSB7CiAgICAgICAgIGludCBpOwotICAgICAgICBzdG10X3R5IGV4Y2VwdF9zdDsKICAgICAgICAgLyogcHJvY2VzcyBleGNlcHQgc3RhdGVtZW50cyB0byBjcmVhdGUgYSB0cnkgLi4uIGV4Y2VwdCAqLwotICAgICAgICBhc2RsX3NlcSAqaGFuZGxlcnMgPSBhc2RsX3NlcV9uZXcobl9leGNlcHQsIGMtPmNfYXJlbmEpOworICAgICAgICBoYW5kbGVycyA9IGFzZGxfc2VxX25ldyhuX2V4Y2VwdCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGlmIChoYW5kbGVycyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTI5NDksMjggKzM0MjIsMTUgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChoYW5kbGVycywgaSwgZSk7CiAgICAgICAgIH0KLQotICAgICAgICBleGNlcHRfc3QgPSBUcnlFeGNlcHQoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgTElORU5PKG4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgaWYgKCFmaW5hbGx5KQotICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdF9zdDsKLQotICAgICAgICAvKiBpZiBhICdmaW5hbGx5JyBpcyBwcmVzZW50IHRvbywgd2UgbmVzdCB0aGUgVHJ5RXhjZXB0IHdpdGhpbiBhCi0gICAgICAgICAgIFRyeUZpbmFsbHkgdG8gZW11bGF0ZSB0cnkgLi4uIGV4Y2VwdCAuLi4gZmluYWxseSAqLwotICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KDEsIGMtPmNfYXJlbmEpOwotICAgICAgICBpZiAoYm9keSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCAwLCBleGNlcHRfc3QpOwogICAgIH0KIAotICAgIC8qIG11c3QgYmUgYSB0cnkgLi4uIGZpbmFsbHkgKGV4Y2VwdCBjbGF1c2VzIGFyZSBpbiBib2R5LCBpZiBhbnkgZXhpc3QpICovCi0gICAgYXNzZXJ0KGZpbmFsbHkgIT0gTlVMTCk7Ci0gICAgcmV0dXJuIFRyeUZpbmFsbHkoYm9keSwgZmluYWxseSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIGFzc2VydChmaW5hbGx5ICE9IE5VTEwgfHwgYXNkbF9zZXFfTEVOKGhhbmRsZXJzKSk7CisgICAgcmV0dXJuIFRyeShib2R5LCBoYW5kbGVycywgb3JlbHNlLCBmaW5hbGx5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIC8qIHdpdGhfaXRlbTogdGVzdCBbJ2FzJyBleHByXSAqLwotc3RhdGljIHN0bXRfdHkKLWFzdF9mb3Jfd2l0aF9pdGVtKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGFzZGxfc2VxICpjb250ZW50KQorc3RhdGljIHdpdGhpdGVtX3R5Cithc3RfZm9yX3dpdGhfaXRlbShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIGV4cHJfdHkgY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzID0gTlVMTDsKIApAQCAtMjk4OSw0MyArMzQ0OSwzNCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdpdGgoY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzLCBjb250ZW50LCBMSU5FTk8obiksCi0gICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICByZXR1cm4gd2l0aGl0ZW0oY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzLCBjLT5jX2FyZW5hKTsKIH0KIAogLyogd2l0aF9zdG10OiAnd2l0aCcgd2l0aF9pdGVtICgnLCcgd2l0aF9pdGVtKSogJzonIHN1aXRlICovCiBzdGF0aWMgc3RtdF90eQogYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICBpbnQgaTsKLSAgICBzdG10X3R5IHJldDsKLSAgICBhc2RsX3NlcSAqaW5uZXI7CisgICAgaW50IGksIG5faXRlbXM7CisgICAgYXNkbF9zZXEgKml0ZW1zLCAqYm9keTsKIAogICAgIFJFUShuLCB3aXRoX3N0bXQpOwogCi0gICAgLyogcHJvY2VzcyB0aGUgd2l0aCBpdGVtcyBpbnNpZGUtb3V0ICovCi0gICAgaSA9IE5DSChuKSAtIDE7Ci0gICAgLyogdGhlIHN1aXRlIG9mIHRoZSBpbm5lcm1vc3Qgd2l0aCBpdGVtIGlzIHRoZSBzdWl0ZSBvZiB0aGUgd2l0aCBzdG10ICovCi0gICAgaW5uZXIgPSBhc3RfZm9yX3N1aXRlKGMsIENISUxEKG4sIGkpKTsKLSAgICBpZiAoIWlubmVyKQorICAgIG5faXRlbXMgPSAoTkNIKG4pIC0gMikgLyAyOworICAgIGl0ZW1zID0gYXNkbF9zZXFfbmV3KG5faXRlbXMsIGMtPmNfYXJlbmEpOworICAgIGlmICghaXRlbXMpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBpIC09IDI7Ci0gICAgICAgIHJldCA9IGFzdF9mb3Jfd2l0aF9pdGVtKGMsIENISUxEKG4sIGkpLCBpbm5lcik7Ci0gICAgICAgIGlmICghcmV0KQorICAgIGZvciAoaSA9IDE7IGkgPCBOQ0gobikgLSAyOyBpICs9IDIpIHsKKyAgICAgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzdF9mb3Jfd2l0aF9pdGVtKGMsIENISUxEKG4sIGkpKTsKKyAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qIHdhcyB0aGlzIHRoZSBsYXN0IGl0ZW0/ICovCi0gICAgICAgIGlmIChpID09IDEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLyogaWYgbm90LCB3cmFwIHRoZSByZXN1bHQgc28gZmFyIGluIGEgbmV3IHNlcXVlbmNlICovCi0gICAgICAgIGlubmVyID0gYXNkbF9zZXFfbmV3KDEsIGMtPmNfYXJlbmEpOwotICAgICAgICBpZiAoIWlubmVyKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFzZGxfc2VxX1NFVChpbm5lciwgMCwgcmV0KTsKKyAgICAgICAgYXNkbF9zZXFfU0VUKGl0ZW1zLCAoaSAtIDEpIC8gMiwgaXRlbSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJldDsKKyAgICBib2R5ID0gYXN0X2Zvcl9zdWl0ZShjLCBDSElMRChuLCBOQ0gobikgLSAxKSk7CisgICAgaWYgKCFib2R5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBXaXRoKGl0ZW1zLCBib2R5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBzdG10X3R5CkBAIC0zMDQ1LDcgKzM0OTYsNyBAQAogICAgICAgICBjbGFzc25hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCAxKSk7CiAgICAgICAgIGlmICghY2xhc3NuYW1lKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKKyAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCiAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CkBAIC0zMDU4LDcgKzM1MDksNyBAQAogICAgICAgICBjbGFzc25hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCAxKSk7CiAgICAgICAgIGlmICghY2xhc3NuYW1lKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKKyAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCiAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CkBAIC0zMDgzLDcgKzM1MzQsNyBAQAogICAgIGNsYXNzbmFtZSA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIDEpKTsKICAgICBpZiAoIWNsYXNzbmFtZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGZvcmJpZGRlbl9uYW1lKGNsYXNzbmFtZSwgQ0hJTEQobiwgMSksIDApKQorICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBjYWxsLT52LkNhbGwuYXJncywgY2FsbC0+di5DYWxsLmtleXdvcmRzLApAQCAtMzIwOSwyMCArMzY2MCwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCwgY2hhciogZW5jb2RpbmcpCitkZWNvZGVfdXRmOChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICoqc1B0ciwgY29uc3QgY2hhciAqZW5kKQogewotICAgIFB5T2JqZWN0ICp1LCAqdjsKICAgICBjaGFyICpzLCAqdDsKICAgICB0ID0gcyA9IChjaGFyICopKnNQdHI7CiAgICAgLyogd2hpbGUgKHMgPCBlbmQgJiYgKnMgIT0gJ1xcJykgcysrOyAqLyAvKiBpbmVmZmljaWVudCBmb3IgdSIuLiIgKi8KICAgICB3aGlsZSAocyA8IGVuZCAmJiAoKnMgJiAweDgwKSkgcysrOwogICAgICpzUHRyID0gczsKLSAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgodCwgcyAtIHQsIE5VTEwpOwotICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIGVuY29kaW5nLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYodSk7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHQsIHMgLSB0LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMyMzQsNyArMzY3OSw2IEBACiAgICAgY29uc3QgY2hhciAqZW5kOwogCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgYnVmID0gKGNoYXIgKilzOwogICAgICAgICB1ID0gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwpAQCAtMzI1NywyMiArMzcwMSwyMCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdzsKLSAgICAgICAgICAgICAgICBjaGFyICpyOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgcm4sIGk7Ci0gICAgICAgICAgICAgICAgdyA9IGRlY29kZV91dGY4KGMsICZzLCBlbmQsICJ1dGYtMzItYmUiKTsKKyAgICAgICAgICAgICAgICBpbnQga2luZDsKKyAgICAgICAgICAgICAgICB2b2lkICpkYXRhOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOworICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKICAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHIgPSBQeUJ5dGVzX0FTX1NUUklORyh3KTsKLSAgICAgICAgICAgICAgICBybiA9IFB5X1NJWkUodyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHJuICUgNCA9PSAwKTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcm47IGkgKz0gNCkgewotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDJ4JTAyeCUwMnglMDJ4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAwXSAmIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgMV0gJiAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDJdICYgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAzXSAmIDB4RkYpOworICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKKyAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOwogICAgICAgICAgICAgICAgICAgICBwICs9IDEwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLwpAQCAtMzMwNiwxMyArMzc0OCwyMSBAQAogICAgIGludCByYXdtb2RlID0gMDsKICAgICBpbnQgbmVlZF9lbmNvZGluZzsKICAgICBpZiAoaXNhbHBoYShxdW90ZSkpIHsKLSAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKLSAgICAgICAgICAgIHF1b3RlID0gKisrczsKLSAgICAgICAgICAgICpieXRlc21vZGUgPSAxOwotICAgICAgICB9Ci0gICAgICAgIGlmIChxdW90ZSA9PSAncicgfHwgcXVvdGUgPT0gJ1InKSB7Ci0gICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICFyYXdtb2RlKSB7CisgICAgICAgICAgICBpZiAocXVvdGUgPT0gJ2InIHx8IHF1b3RlID09ICdCJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICd1JyB8fCBxdW90ZSA9PSAnVScpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAncicgfHwgcXVvdGUgPT0gJ1InKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgICAgIHJhd21vZGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHF1b3RlICE9ICdcJycgJiYgcXVvdGUgIT0gJ1wiJykgewpAQCAtMzM0MywxMCArMzc5MywxMCBAQAogICAgIH0KICAgICBpZiAoKmJ5dGVzbW9kZSkgewogICAgICAgICAvKiBEaXNhbGxvdyBub24tYXNjaWkgY2hhcmFjdGVycyAoYnV0IG5vdCBlc2NhcGVzKSAqLwotICAgICAgICBjb25zdCBjaGFyICpjOwotICAgICAgICBmb3IgKGMgPSBzOyAqYzsgYysrKSB7Ci0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKmMpID49IDB4ODApIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgorICAgICAgICBjb25zdCBjaGFyICpjaDsKKyAgICAgICAgZm9yIChjaCA9IHM7ICpjaDsgY2grKykgeworICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjaCkgPj0gMHg4MCkgeworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXRlcmFsIGNoYXJhY3RlcnMuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0zMzk0LDcgKzM4NDQsNyBAQAogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBpZiAoKmJ5dGVzbW9kZSAhPSBzdWJibSkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggMzViMmNkYy4uMGU2ZTZmZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTYsNiArNiw5IEBACiAjaW5jbHVkZSAibm9kZS5oIgogI2luY2x1ZGUgImNvZGUuaCIKIAorI2luY2x1ZGUgImFzZGwuaCIKKyNpbmNsdWRlICJhc3QuaCIKKwogI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKQEAgLTE4LDIwICsyMSwyMCBAQAogICAgRG9uJ3QgZm9yZ2V0IHRvIG1vZGlmeSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KCkgaWYgeW91IHRvdWNoIGFueSBvZiB0aGUKICAgIHZhbHVlcyBmb3IgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyEKICovCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCisjZWxzZQogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7IC8qIHNldCBieSBpbml0ZnNlbmNvZGluZygpICovCiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7Ci0jZWxzZQotY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7Ci1pbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7CiAjZW5kaWYKIAorX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKKwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fX19idWlsZF9jbGFzc19fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0zOSw2ICs0Miw3IEBACiAgICAgUHlPYmplY3QgKmNscyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBuYXJnczsKICAgICBpbnQgaXNjbGFzczsKKyAgICBfUHlfSURFTlRJRklFUihfX3ByZXBhcmVfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKQEAgLTk5LDYgKzEwMyw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihtZXRhKTsKICAgICAgICAgaXNjbGFzcyA9IDE7ICAvKiBtZXRhIGlzIHJlYWxseSBhIGNsYXNzICovCiAgICAgfQorCiAgICAgaWYgKGlzY2xhc3MpIHsKICAgICAgICAgLyogbWV0YSBpcyByZWFsbHkgYSBjbGFzcywgc28gY2hlY2sgZm9yIGEgbW9yZSBkZXJpdmVkCiAgICAgICAgICAgIG1ldGFjbGFzcywgb3IgcG9zc2libGUgbWV0YWNsYXNzIGNvbmZsaWN0czogKi8KQEAgLTExOCw3ICsxMjMsNyBAQAogICAgIH0KICAgICAvKiBlbHNlOiBtZXRhIGlzIG5vdCBhIGNsYXNzLCBzbyB3ZSBjYW5ub3QgZG8gdGhlIG1ldGFjbGFzcwogICAgICAgIGNhbGN1bGF0aW9uLCBzbyB3ZSB3aWxsIHVzZSB0aGUgZXhwbGljaXRseSBnaXZlbiBvYmplY3QgYXMgaXQgaXMgKi8KLSAgICBwcmVwID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtZXRhLCAiX19wcmVwYXJlX18iKTsKKyAgICBwcmVwID0gX1B5T2JqZWN0X0dldEF0dHJJZChtZXRhLCAmUHlJZF9fX3ByZXBhcmVfXyk7CiAgICAgaWYgKHByZXAgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xNzksMjEgKzE4NCwxOCBAQAogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJnbG9iYWxzIiwgImxvY2FscyIsICJmcm9tbGlzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCIsIDB9OwotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7Ci0gICAgaW50IGxldmVsID0gLTE7CisgICAgUHlPYmplY3QgKm5hbWUsICpnbG9iYWxzID0gTlVMTCwgKmxvY2FscyA9IE5VTEwsICpmcm9tbGlzdCA9IE5VTEw7CisgICAgaW50IGxldmVsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJzfE9PT2k6X19pbXBvcnRfXyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlV8T09PaTpfX2ltcG9ydF9fIiwKICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZSwgJmdsb2JhbHMsICZsb2NhbHMsICZmcm9tbGlzdCwgJmxldmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG5hbWUsIGdsb2JhbHMsIGxvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGxldmVsKTsKKyAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QobmFtZSwgZ2xvYmFscywgbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgbGV2ZWwpOwogfQogCiBQeURvY19TVFJWQVIoaW1wb3J0X2RvYywKLSJfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9W10sIGxldmVsPS0xKSAtPiBtb2R1bGVcblwKKyJfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKSAtPiBtb2R1bGVcblwKIFxuXAogSW1wb3J0IGEgbW9kdWxlLiBCZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIHVzZSBieSB0aGUgUHl0aG9uXG5cCiBpbnRlcnByZXRlciBhbmQgbm90IGZvciBnZW5lcmFsIHVzZSBpdCBpcyBiZXR0ZXIgdG8gdXNlXG5cCkBAIC0yMDYsOCArMjA4LDcgQEAKIFdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlLCBub3RlIHRoYXQgX19pbXBvcnRfXygnQS5CJywgLi4uKVxuXAogcmV0dXJucyBwYWNrYWdlIEEgd2hlbiBmcm9tbGlzdCBpcyBlbXB0eSwgYnV0IGl0cyBzdWJtb2R1bGUgQiB3aGVuXG5cCiBmcm9tbGlzdCBpcyBub3QgZW1wdHkuICBMZXZlbCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHBlcmZvcm0gXG5cCi1hYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiAgLTEgaXMgdGhlIG9yaWdpbmFsIHN0cmF0ZWd5IG9mIGF0dGVtcHRpbmdcblwKLWJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIGltcG9ydHMsIDAgaXMgYWJzb2x1dGUsIGEgcG9zaXRpdmUgbnVtYmVyXG5cCithYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiAwIGlzIGFic29sdXRlIHdoaWxlIGEgcG9zaXRpdmUgbnVtYmVyXG5cCiBpcyB0aGUgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9kdWxlLiIpOwogCiAKQEAgLTQzNiw2ICs0MzcsMTkgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmaWx0ZXJfcmVkdWNlKGZpbHRlcm9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBmaWx0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgKFB5Q0Z1bmN0aW9uKWZpbHRlcl9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZmlsdGVyX2RvYywKICJmaWx0ZXIoZnVuY3Rpb24gb3IgTm9uZSwgaXRlcmFibGUpIC0tPiBmaWx0ZXIgb2JqZWN0XG5cCiBcblwKQEAgLTQ3Miw3ICs0ODYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZmlsdGVyX25leHQsICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGZpbHRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNTE2LDE3ICs1MzAsMTAgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHgpOwogfQogCi1QeURvY19WQVIoY2hyX2RvYykgPSBQeURvY19TVFIoCitQeURvY19TVFJWQVIoY2hyX2RvYywKICJjaHIoaSkgLT4gVW5pY29kZSBjaGFyYWN0ZXJcblwKIFxuXAotUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIKLSkKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi1QeURvY19TVFIoCi0iXG5JZiAweDEwMDAwIDw9IGksIGEgc3Vycm9nYXRlIHBhaXIgaXMgcmV0dXJuZWQuIgotKQotI2VuZGlmCi07CitSZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuIik7CiAKIAogc3RhdGljIGNoYXIgKgpAQCAtNTM3LDggKzU0NCw4IEBACiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGNtZCkpIHsKICAgICAgICAgY2YtPmNmX2ZsYWdzIHw9IFB5Q0ZfSUdOT1JFX0NPT0tJRTsKLSAgICAgICAgY21kID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKGNtZCwgTlVMTCk7Ci0gICAgICAgIGlmIChjbWQgPT0gTlVMTCkKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoY21kLCAmc2l6ZSk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmICghUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyKGNtZCkpIHsKQEAgLTU0Nyw5ICs1NTQsMTAgQEAKICAgICAgICAgICBmdW5jbmFtZSwgd2hhdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKGNtZCwgKGNvbnN0IHZvaWQgKiopJnN0ciwgJnNpemUpIDwgMCkgeworICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihjbWQsIChjb25zdCB2b2lkICoqKSZzdHIsICZzaXplKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgaWYgKHN0cmxlbihzdHIpICE9IHNpemUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UgY29kZSBzdHJpbmcgY2Fubm90IGNvbnRhaW4gbnVsbCBieXRlcyIpOwpAQCAtNjM4LDYgKzY0NiwxMCBAQAogICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUHlBU1RfVmFsaWRhdGUobW9kKSkgeworICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCopUHlBU1RfQ29tcGlsZUV4KG1vZCwgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2YsIG9wdGltaXplLCBhcmVuYSk7CiAgICAgICAgICAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOwpAQCAtMTA1Niw2ICsxMDY4LDMxIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21hcF9yZWR1Y2UobWFwb2JqZWN0ICpseikKK3sKKyAgICBQeV9zc2l6ZV90IG51bWFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdGVycyk7CisgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhudW1hcmdzKzEpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYobHotPmZ1bmMpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbHotPmZ1bmMpOworICAgIGZvciAoaSA9IDA7IGk8bnVtYXJnczsgaSsrKXsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeV9JTkNSRUYoaXQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIGkrMSwgaXQpOworICAgIH0KKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTiIsIFB5X1RZUEUobHopLCBhcmdzKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG1hcF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAoUHlDRnVuY3Rpb24pbWFwX3JlZHVjZSwgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKwogUHlEb2NfU1RSVkFSKG1hcF9kb2MsCiAibWFwKGZ1bmMsICppdGVyYWJsZXMpIC0tPiBtYXAgb2JqZWN0XG5cCiBcblwKQEAgLTEwOTIsNyArMTEyOSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyltYXBfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hcF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTExNiw3ICsxMTUzLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeUl0ZXJfQ2hlY2soaXQpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiJS4yMDBzIG9iamVjdCBpcyBub3QgYW4gaXRlcmF0b3IiLAorICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgYW4gaXRlcmF0b3IiLAogICAgICAgICAgICAgaXQtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNDIyLDI0ICsxNDU5LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgICAgIG9yZCA9IChsb25nKSpQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOworICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhvcmQpOwogICAgICAgICB9Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoc2l6ZSA9PSAyKSB7Ci0gICAgICAgICAgICAvKiBEZWNvZGUgYSB2YWxpZCBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgaW50IGMwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKVswXTsKLSAgICAgICAgICAgIGludCBjMSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iailbMV07Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IGMwICYmIGMwIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgICAgIDB4REMwMCA8PSBjMSAmJiBjMSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBvcmQgPSAoKCgoYzAgJiAweDAzRkYpIDw8IDEwKSB8IChjMSAmIDB4MDNGRikpICsKLSAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhvcmQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sob2JqKSkgewogICAgICAgICAvKiBYWFggSG9wZWZ1bGx5IHRoaXMgaXMgdGVtcG9yYXJ5ICovCkBAIC0xNDY3LDEzICsxNDkzLDcgQEAKICJvcmQoYykgLT4gaW50ZWdlclxuXAogXG5cCiBSZXR1cm4gdGhlIGludGVnZXIgb3JkaW5hbCBvZiBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLiIKLSkKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi1QeURvY19TVFIoCi0iXG5BIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyIGlzIGFsc28gYWNjZXB0ZWQuIgotKQotI2VuZGlmCi07CispOwogCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDk3LDE1ICsxNTE3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9wcmludChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgImVuZCIsICJmaWxlIiwgMH07CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAiZW5kIiwgImZpbGUiLCAiZmx1c2giLCAwfTsKICAgICBzdGF0aWMgUHlPYmplY3QgKmR1bW15X2FyZ3M7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEwsICplbmQgPSBOVUxMLCAqZmlsZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEwsICplbmQgPSBOVUxMLCAqZmlsZSA9IE5VTEwsICpmbHVzaCA9IE5VTEw7CiAgICAgaW50IGksIGVycjsKIAogICAgIGlmIChkdW1teV9hcmdzID09IE5VTEwgJiYgIShkdW1teV9hcmdzID0gUHlUdXBsZV9OZXcoMCkpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZHVtbXlfYXJncywga3dkcywgInxPT086cHJpbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnNlcCwgJmVuZCwgJmZpbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhkdW1teV9hcmdzLCBrd2RzLCAifE9PT086cHJpbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnNlcCwgJmVuZCwgJmZpbGUsICZmbHVzaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChmaWxlID09IE5VTEwgfHwgZmlsZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGZpbGUgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwpAQCAtMTU1NiwxNyArMTU3NiwzMiBAQAogICAgIGlmIChlcnIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKGZsdXNoICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcDsKKyAgICAgICAgaW50IGRvX2ZsdXNoID0gUHlPYmplY3RfSXNUcnVlKGZsdXNoKTsKKyAgICAgICAgaWYgKGRvX2ZsdXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGVsc2UgaWYgKGRvX2ZsdXNoKSB7CisgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZpbGUsICJmbHVzaCIsICIiKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIocHJpbnRfZG9jLAotInByaW50KHZhbHVlLCAuLi4sIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0KVxuXAorInByaW50KHZhbHVlLCAuLi4sIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0LCBmbHVzaD1GYWxzZSlcblwKIFxuXAogUHJpbnRzIHRoZSB2YWx1ZXMgdG8gYSBzdHJlYW0sIG9yIHRvIHN5cy5zdGRvdXQgYnkgZGVmYXVsdC5cblwKIE9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzOlxuXAotZmlsZTogYSBmaWxlLWxpa2Ugb2JqZWN0IChzdHJlYW0pOyBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBzeXMuc3Rkb3V0LlxuXAotc2VwOiAgc3RyaW5nIGluc2VydGVkIGJldHdlZW4gdmFsdWVzLCBkZWZhdWx0IGEgc3BhY2UuXG5cCi1lbmQ6ICBzdHJpbmcgYXBwZW5kZWQgYWZ0ZXIgdGhlIGxhc3QgdmFsdWUsIGRlZmF1bHQgYSBuZXdsaW5lLiIpOworZmlsZTogIGEgZmlsZS1saWtlIG9iamVjdCAoc3RyZWFtKTsgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgc3lzLnN0ZG91dC5cblwKK3NlcDogICBzdHJpbmcgaW5zZXJ0ZWQgYmV0d2VlbiB2YWx1ZXMsIGRlZmF1bHQgYSBzcGFjZS5cblwKK2VuZDogICBzdHJpbmcgYXBwZW5kZWQgYWZ0ZXIgdGhlIGxhc3QgdmFsdWUsIGRlZmF1bHQgYSBuZXdsaW5lLlxuXAorZmx1c2g6IHdoZXRoZXIgdG8gZm9yY2libHkgZmx1c2ggdGhlIHN0cmVhbS4iKTsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTYwMiw3ICsxNjM3LDcgQEAKICAgICB9CiAKICAgICAvKiBGaXJzdCBvZiBhbGwsIGZsdXNoIHN0ZGVyciAqLwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmVyciwgImZsdXNoIiwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTYxMSw3ICsxNjQ2LDcgQEAKICAgICAvKiBXZSBzaG91bGQgb25seSB1c2UgKEdOVSkgcmVhZGxpbmUgaWYgUHl0aG9uJ3Mgc3lzLnN0ZGluIGFuZAogICAgICAgIHN5cy5zdGRvdXQgYXJlIHRoZSBzYW1lIGFzIEMncyBzdGRpbiBhbmQgc3Rkb3V0LCBiZWNhdXNlIHdlCiAgICAgICAgbmVlZCB0byBwYXNzIGl0IHRob3NlLiAqLwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmluLCAiZmlsZW5vIiwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sICIiKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgdHR5ID0gMDsKQEAgLTE2MjQsNyArMTY1OSw3IEBACiAgICAgICAgIHR0eSA9IGZkID09IGZpbGVubyhzdGRpbikgJiYgaXNhdHR5KGZkKTsKICAgICB9CiAgICAgaWYgKHR0eSkgewotICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmaWxlbm8iLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgewpAQCAtMTY0Niw5ICsxNjgxLDExIEBACiAgICAgICAgIGNoYXIgKnN0ZGluX2VuY29kaW5nX3N0ciwgKnN0ZGluX2Vycm9yc19zdHI7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgICAgIHNpemVfdCBsZW47CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVuY29kaW5nKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZXJyb3JzKTsKIAotICAgICAgICBzdGRpbl9lbmNvZGluZyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmluLCAiZW5jb2RpbmciKTsKLSAgICAgICAgc3RkaW5fZXJyb3JzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaW4sICJlcnJvcnMiKTsKKyAgICAgICAgc3RkaW5fZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbiwgJlB5SWRfZW5jb2RpbmcpOworICAgICAgICBzdGRpbl9lcnJvcnMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbiwgJlB5SWRfZXJyb3JzKTsKICAgICAgICAgaWYgKCFzdGRpbl9lbmNvZGluZyB8fCAhc3RkaW5fZXJyb3JzKQogICAgICAgICAgICAgLyogc3RkaW4gaXMgYSB0ZXh0IHN0cmVhbSwgc28gaXQgbXVzdCBoYXZlIGFuCiAgICAgICAgICAgICAgICBlbmNvZGluZy4gKi8KQEAgLTE2NTcsNyArMTY5NCw3IEBACiAgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmbHVzaCIsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xNjY2LDggKzE3MDMsOCBAQAogICAgICAgICAgICAgLyogV2UgaGF2ZSBhIHByb21wdCwgZW5jb2RlIGl0IGFzIHN0ZG91dCB3b3VsZCAqLwogICAgICAgICAgICAgY2hhciAqc3Rkb3V0X2VuY29kaW5nX3N0ciwgKnN0ZG91dF9lcnJvcnNfc3RyOwogICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZ3BvOwotICAgICAgICAgICAgc3Rkb3V0X2VuY29kaW5nID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmb3V0LCAiZW5jb2RpbmciKTsKLSAgICAgICAgICAgIHN0ZG91dF9lcnJvcnMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvdXQsICJlcnJvcnMiKTsKKyAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZm91dCwgJlB5SWRfZW5jb2RpbmcpOworICAgICAgICAgICAgc3Rkb3V0X2Vycm9ycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZm91dCwgJlB5SWRfZXJyb3JzKTsKICAgICAgICAgICAgIGlmICghc3Rkb3V0X2VuY29kaW5nIHx8ICFzdGRvdXRfZXJyb3JzKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKICAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZ19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZG91dF9lbmNvZGluZyk7CkBAIC0xNzM3LDcgKzE3NzQsNyBAQAogICAgICAgICBpZiAoUHlGaWxlX1dyaXRlT2JqZWN0KHByb21wdGFyZywgZm91dCwgUHlfUFJJTlRfUkFXKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm91dCwgImZsdXNoIiwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTgxOSw2ICsxODU2LDcgQEAKICAgICBQeU9iamVjdCAqY2FsbGFibGU7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpdGVyYWJsZSIsICJrZXkiLCAicmV2ZXJzZSIsIDB9OwogICAgIGludCByZXZlcnNlOworICAgIF9QeV9JREVOVElGSUVSKHNvcnQpOwogCiAgICAgLyogYXJncyAxLTMgc2hvdWxkIG1hdGNoIGxpc3Rzb3J0IGluIE9iamVjdHMvbGlzdG9iamVjdC5jICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T2k6c29ydGVkIiwKQEAgLTE4MjksNyArMTg2Nyw3IEBACiAgICAgaWYgKG5ld2xpc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobmV3bGlzdCwgInNvcnQiKTsKKyAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobmV3bGlzdCwgJlB5SWRfc29ydCk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4NzUsNyArMTkxMyw4IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoZCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBkID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiX19kaWN0X18iKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgICAgICBkID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2LCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgICAgIGlmIChkID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgInZhcnMoKSBhcmd1bWVudCBtdXN0IGhhdmUgX19kaWN0X18gYXR0cmlidXRlIik7CkBAIC0xOTE5LDEyICsxOTU4LDE4IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2socmVzdWx0KSkgeworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXN1bHQpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJzdW0oKSBjYW4ndCBzdW0gYnl0ZXMgW3VzZSBiJycuam9pbihzZXEpIGluc3RlYWRdIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAic3VtKCkgY2FuJ3Qgc3VtIGJ5dGVhcnJheSBbdXNlIGInJy5qb2luKHNlcSkgaW5zdGVhZF0iKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgfQpAQCAtMjIyNyw2ICsyMjcyLDE4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3ppcF9yZWR1Y2Uoemlwb2JqZWN0ICpseikKK3sKKyAgICAvKiBKdXN0IHJlY3JlYXRlIHRoZSB6aXAgd2l0aCB0aGUgaW50ZXJuYWwgaXRlcmF0b3IgdHVwbGUgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT08iLCBQeV9UWVBFKGx6KSwgbHotPml0dHVwbGUpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgemlwX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgIChQeUNGdW5jdGlvbil6aXBfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHppcF9kb2MsCiAiemlwKGl0ZXIxIFssaXRlcjIgWy4uLl1dKSAtLT4gemlwIG9iamVjdFxuXAogXG5cCkBAIC0yMjY1LDcgKzIzMjIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpemlwX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB6aXBfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbC5jIGIvUHl0aG9uL2NldmFsLmMKaW5kZXggZjBlYTdjOS4uODJiZmNjNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsLmMKKysrIGIvUHl0aG9uL2NldmFsLmMKQEAgLTEzOCw3ICsxMzgsNyBAQAogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKLXN0YXRpYyBQeU9iamVjdCAqIHNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKiopOworc3RhdGljIFB5T2JqZWN0ICogc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiAKICNkZWZpbmUgTkFNRV9FUlJPUl9NU0cgXAogICAgICJuYW1lICclLjIwMHMnIGlzIG5vdCBkZWZpbmVkIgpAQCAtMzcyLDYgKzM3Miw3IEBACiB2b2lkCiBQeUV2YWxfUmVJbml0VGhyZWFkcyh2b2lkKQogeworICAgIF9QeV9JREVOVElGSUVSKF9hZnRlcl9mb3JrKTsKICAgICBQeU9iamVjdCAqdGhyZWFkaW5nLCAqcmVzdWx0OwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAKQEAgLTM5Miw3ICszOTMsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGhyZWFkaW5nLCAiX2FmdGVyX2ZvcmsiLCBOVUxMKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX2FmdGVyX2ZvcmssIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgZWxzZQpAQCAtNDkxLDcgKzQ5Miw2IEBACiB9IHBlbmRpbmdjYWxsc1tOUEVORElOR0NBTExTXTsKIHN0YXRpYyBpbnQgcGVuZGluZ2ZpcnN0ID0gMDsKIHN0YXRpYyBpbnQgcGVuZGluZ2xhc3QgPSAwOwotc3RhdGljIGNoYXIgcGVuZGluZ2J1c3kgPSAwOwogCiBpbnQKIFB5X0FkZFBlbmRpbmdDYWxsKGludCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKQEAgLTUzOCw2ICs1MzgsNyBAQAogaW50CiBQeV9NYWtlUGVuZGluZ0NhbGxzKHZvaWQpCiB7CisgICAgc3RhdGljIGludCBidXN5ID0gMDsKICAgICBpbnQgaTsKICAgICBpbnQgciA9IDA7CiAKQEAgLTU1Miw5ICs1NTMsOSBAQAogICAgIGlmIChtYWluX3RocmVhZCAmJiBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgIT0gbWFpbl90aHJlYWQpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIGRvbid0IHBlcmZvcm0gcmVjdXJzaXZlIHBlbmRpbmcgY2FsbHMgKi8KLSAgICBpZiAocGVuZGluZ2J1c3kpCisgICAgaWYgKGJ1c3kpCiAgICAgICAgIHJldHVybiAwOwotICAgIHBlbmRpbmdidXN5ID0gMTsKKyAgICBidXN5ID0gMTsKICAgICAvKiBwZXJmb3JtIGEgYm91bmRlZCBudW1iZXIgb2YgY2FsbHMsIGluIGNhc2Ugb2YgcmVjdXJzaW9uICovCiAgICAgZm9yIChpPTA7IGk8TlBFTkRJTkdDQUxMUzsgaSsrKSB7CiAgICAgICAgIGludCBqOwpAQCAtNTgzLDcgKzU4NCw3IEBACiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHBlbmRpbmdidXN5ID0gMDsKKyAgICBidXN5ID0gMDsKICAgICByZXR1cm4gcjsKIH0KIApAQCAtNzQ5LDYgKzc1MCw5IEBACiAgICAgICAgIFdIWV9TSUxFTkNFRCA9ICAweDAwODAgIC8qIEV4Y2VwdGlvbiBzaWxlbmNlZCBieSAnd2l0aCcgKi8KIH07CiAKK3N0YXRpYyB2b2lkIHNhdmVfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKK3N0YXRpYyB2b2lkIHN3YXBfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKK3N0YXRpYyB2b2lkIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CiBzdGF0aWMgZW51bSB3aHlfY29kZSBkb19yYWlzZShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgdW5wYWNrX2l0ZXJhYmxlKFB5T2JqZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKik7CiAKQEAgLTgxNyw5ICs4MjEsOSBAQAogICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOwogICAgIFB5T2JqZWN0ICpuYW1lczsKICAgICBQeU9iamVjdCAqY29uc3RzOwotI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoTExUUkFDRSkKLSAgICAvKiBNYWtlIGl0IGVhc2llciB0byBmaW5kIG91dCB3aGVyZSB3ZSBhcmUgd2l0aCBhIGRlYnVnZ2VyICovCi0gICAgY2hhciAqZmlsZW5hbWU7CisKKyNpZmRlZiBMTFRSQUNFCisgICAgX1B5X0lERU5USUZJRVIoX19sdHJhY2VfXyk7CiAjZW5kaWYKIAogLyogQ29tcHV0ZWQgR09UT3MsIG9yCkBAIC0xMTE0LDU5ICsxMTE4LDggQEAKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCiAgICAgfQogCi0jZGVmaW5lIFNBVkVfRVhDX1NUQVRFKCkgXAotICAgIHsgXAotICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCi0gICAgICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHlwZSk7IFwKLSAgICAgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y192YWx1ZSk7IFwKLSAgICAgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y190cmFjZWJhY2spOyBcCi0gICAgICAgIHR5cGUgPSBmLT5mX2V4Y190eXBlOyBcCi0gICAgICAgIHZhbHVlID0gZi0+Zl9leGNfdmFsdWU7IFwKLSAgICAgICAgdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIGYtPmZfZXhjX3R5cGUgPSB0c3RhdGUtPmV4Y190eXBlOyBcCi0gICAgICAgIGYtPmZfZXhjX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7IFwKLSAgICAgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQotCi0jZGVmaW5lIFNXQVBfRVhDX1NUQVRFKCkgXAotICAgIHsgXAotICAgICAgICBQeU9iamVjdCAqdG1wOyBcCi0gICAgICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3R5cGU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7IFwKLSAgICAgICAgZi0+Zl9leGNfdHlwZSA9IHRtcDsgXAotICAgICAgICB0bXAgPSB0c3RhdGUtPmV4Y192YWx1ZTsgXAotICAgICAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOyBcCi0gICAgICAgIGYtPmZfZXhjX3ZhbHVlID0gdG1wOyBcCi0gICAgICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsgXAotICAgICAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdG1wOyBcCi0gICAgfQotCi0jZGVmaW5lIFJFU1RPUkVfQU5EX0NMRUFSX0VYQ19TVEFURSgpIFwKLSAgICB7IFwKLSAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiOyBcCi0gICAgICAgIHR5cGUgPSB0c3RhdGUtPmV4Y190eXBlOyBcCi0gICAgICAgIHZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7IFwKLSAgICAgICAgdGIgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsgXAotICAgICAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgZi0+Zl9leGNfdHlwZSA9IE5VTEw7IFwKLSAgICAgICAgZi0+Zl9leGNfdmFsdWUgPSBOVUxMOyBcCi0gICAgICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IE5VTEw7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0eXBlKTsgXAotICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsgXAotICAgICAgICBQeV9YREVDUkVGKHRiKTsgXAotICAgIH0KLQogLyogU3RhcnQgb2YgY29kZSAqLwogCi0gICAgaWYgKGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBwdXNoIGZyYW1lICovCiAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTIyMSw2ICsxMTc0LDggQEAKICAgICAgICBmLT5mX2xhc3RpIHRvIC0xIChpLmUuIHRoZSBpbmRleCAqYmVmb3JlKiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24pCiAgICAgICAgYW5kIFlJRUxEX1ZBTFVFIGRvZXNuJ3QgZmlkZGxlIHdpdGggZl9sYXN0aSBhbnkgbW9yZS4gIFNvIHRoaXMKICAgICAgICBkb2VzIHdvcmsuICBQcm9taXNlLgorICAgICAgIFlJRUxEX0ZST00gc2V0cyBmX2xhc3RpIHRvIGl0c2VsZiwgaW4gb3JkZXIgdG8gcmVwZWF0ZWQgeWllbGQKKyAgICAgICBtdWx0aXBsZSB2YWx1ZXMuCiAKICAgICAgICBXaGVuIHRoZSBQUkVESUNUKCkgbWFjcm9zIGFyZSBlbmFibGVkLCBzb21lIG9wY29kZSBwYWlycyBmb2xsb3cgaW4KICAgICAgICBkaXJlY3Qgc3VjY2Vzc2lvbiB3aXRob3V0IHVwZGF0aW5nIGYtPmZfbGFzdGkuICBBIHN1Y2Nlc3NmdWwKQEAgLTEyNDAsMjcgKzExOTUsMTQgQEAKICAgICAgICAgICAgIC8qIFdlIHdlcmUgaW4gYW4gZXhjZXB0IGhhbmRsZXIgd2hlbiB3ZSBsZWZ0LAogICAgICAgICAgICAgICAgcmVzdG9yZSB0aGUgZXhjZXB0aW9uIHN0YXRlIHdoaWNoIHdhcyBwdXQgYXNpZGUKICAgICAgICAgICAgICAgIChzZWUgWUlFTERfVkFMVUUpLiAqLwotICAgICAgICAgICAgU1dBUF9FWENfU1RBVEUoKTsKKyAgICAgICAgICAgIHN3YXBfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTQVZFX0VYQ19TVEFURSgpOwotICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNhdmVfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgfQogCiAjaWZkZWYgTExUUkFDRQotICAgIGxsdHJhY2UgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhmLT5mX2dsb2JhbHMsICJfX2xsdHJhY2VfXyIpICE9IE5VTEw7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKExMVFJBQ0UpCi0gICAgewotICAgICAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwotICAgICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKLSAgICAgICAgZmlsZW5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGNvLT5jb19maWxlbmFtZSk7Ci0gICAgICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMICYmIHRzdGF0ZS0+b3ZlcmZsb3dlZCkgewotICAgICAgICAgICAgLyogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgKi8KLSAgICAgICAgICAgIGdvdG8gZXhpdF9ldmFsX2ZyYW1lOwotICAgICAgICB9Ci0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Ci0gICAgfQorICAgIGxsdHJhY2UgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2dsb2JhbHMsICZQeUlkX19fbHRyYWNlX18pICE9IE5VTEw7CiAjZW5kaWYKIAogICAgIHdoeSA9IFdIWV9OT1Q7CkBAIC0xNDEyLDggKzEzNTQsNiBAQAogICAgICAgICAgICB4IHRvIE5VTEwsIGVyciB0byBub256ZXJvLCBvciB3aHkgdG8gYW55dGhpbmcgYnV0IFdIWV9OT1QsCiAgICAgICAgICAgIGFuZCB0aGF0IG5vIG9wZXJhdGlvbiB0aGF0IHN1Y2NlZWRzIGRvZXMgdGhpcyEgKi8KIAotICAgICAgICAvKiBjYXNlIFNUT1BfQ09ERTogdGhpcyBpcyBhbiBlcnJvciEgKi8KLQogICAgICAgICBUQVJHRVQoTk9QKQogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogCkBAIC0xODk0LDYgKzE4MzQsNDAgQEAKICAgICAgICAgICAgIHdoeSA9IFdIWV9SRVRVUk47CiAgICAgICAgICAgICBnb3RvIGZhc3RfYmxvY2tfZW5kOwogCisgICAgICAgIFRBUkdFVChZSUVMRF9GUk9NKQorICAgICAgICAgICAgdSA9IFBPUCgpOworICAgICAgICAgICAgeCA9IFRPUCgpOworICAgICAgICAgICAgLyogc2VuZCB1IHRvIHggKi8KKyAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHgpKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopeCwgdSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNlbmQpOworICAgICAgICAgICAgICAgIGlmICh1ID09IFB5X05vbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5X1RZUEUoeCktPnRwX2l0ZXJuZXh0KHgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh4LCAmUHlJZF9zZW5kLCAiTyIsIHUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsOworICAgICAgICAgICAgICAgIHggPSBQT1AoKTsgLyogUmVtb3ZlIGl0ZXIgZnJvbSBzdGFjayAqLworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgICAgICAgICBlcnIgPSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCk7CisgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB4ID0gdmFsOworICAgICAgICAgICAgICAgIFBVU0goeCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiB4IHJlbWFpbnMgb24gc3RhY2ssIHJldHZhbCBpcyB2YWx1ZSB0byBiZSB5aWVsZGVkICovCisgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKKyAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKKyAgICAgICAgICAgIC8qIGFuZCByZXBlYXQuLi4gKi8KKyAgICAgICAgICAgIGYtPmZfbGFzdGktLTsKKyAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKKwogICAgICAgICBUQVJHRVQoWUlFTERfVkFMVUUpCiAgICAgICAgICAgICByZXR2YWwgPSBQT1AoKTsKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwpAQCAtMTk1NiwxNiArMTkzMCwzMyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgVEFSR0VUKExPQURfQlVJTERfQ0xBU1MpCi0gICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZi0+Zl9idWlsdGlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIik7Ci0gICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2J1aWxkX2NsYXNzX18pOworCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICB4ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19idWlsZF9jbGFzc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmJ1aWxkX2NsYXNzX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fYnVpbGRfY2xhc3NfXyk7CisgICAgICAgICAgICAgICAgaWYgKGJ1aWxkX2NsYXNzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCBidWlsZF9jbGFzc19zdHIpOworICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoU1RPUkVfTkFNRSkKICAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CkBAIC0yMTAxLDcwICsyMDkyLDYyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgdyk7CisgICAgICAgICAgICAgICAgUHlfWElOQ1JFRih4KTsKICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0goeCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogCiAgICAgICAgIFRBUkdFVChMT0FEX0dMT0JBTCkKICAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodykpIHsKLSAgICAgICAgICAgICAgICAvKiBJbmxpbmUgdGhlIFB5RGljdF9HZXRJdGVtKCkgY2FsbHMuCi0gICAgICAgICAgICAgICAgICAgV0FSTklORzogdGhpcyBpcyBhbiBleHRyZW1lIHNwZWVkIGhhY2suCi0gICAgICAgICAgICAgICAgICAgRG8gbm90IHRyeSB0aGlzIGF0IGhvbWUuICovCi0gICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKXcpLT5oYXNoOwotICAgICAgICAgICAgICAgIGlmIChoYXNoICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RGljdE9iamVjdCAqZDsKLSAgICAgICAgICAgICAgICAgICAgUHlEaWN0RW50cnkgKmU7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSAoUHlEaWN0T2JqZWN0ICopKGYtPmZfZ2xvYmFscyk7Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBkLT5tYV9sb29rdXAoZCwgdywgaGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgeCA9IGUtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVVNIKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkID0gKFB5RGljdE9iamVjdCAqKShmLT5mX2J1aWx0aW5zKTsKLSAgICAgICAgICAgICAgICAgICAgZSA9IGQtPm1hX2xvb2t1cChkLCB3LCBoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB4ID0gZS0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gbG9hZF9nbG9iYWxfZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogVGhpcyBpcyB0aGUgdW4taW5saW5lZCB2ZXJzaW9uIG9mIHRoZSBjb2RlIGFib3ZlICovCi0gICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKLSAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9nbG9iYWxzKQorICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgeCA9IF9QeURpY3RfTG9hZEdsb2JhbCgoUHlEaWN0T2JqZWN0ICopZi0+Zl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGljdE9iamVjdCAqKWYtPmZfYnVpbHRpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3KTsKICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICBsb2FkX2dsb2JhbF9lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFNsb3ctcGF0aCBpZiBnbG9iYWxzIG9yIGJ1aWx0aW5zIGlzIG5vdCBhIGRpY3QgKi8KKyAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIHcpOworICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSCh4KTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAKQEAgLTIzMTMsOCArMjI5NiwxMCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKIAogICAgICAgICBUQVJHRVQoSU1QT1JUX05BTUUpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbVN0cmluZyhmLT5mX2J1aWx0aW5zLCAiX19pbXBvcnRfXyIpOworICAgICAgICAgICAgeCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwogICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW1wb3J0X18gbm90IGZvdW5kIik7CkBAIC0yMzU1LDYgKzIzNDAsNyBAQAogICAgICAgICAgICAgU0VUX1RPUCh4KTsKICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChJTVBPUlRfU1RBUikKICAgICAgICAgICAgIHYgPSBQT1AoKTsKQEAgLTI1NTksMTMgKzI1NDUsMTQgQEAKIAogICAgICAgICBUQVJHRVQoU0VUVVBfV0lUSCkKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpleGl0LCAqZW50ZXI7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwogICAgICAgICAgICAgdyA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IHNwZWNpYWxfbG9va3VwKHcsICJfX2V4aXRfXyIsICZleGl0KTsKKyAgICAgICAgICAgIHggPSBzcGVjaWFsX2xvb2t1cCh3LCAmUHlJZF9fX2V4aXRfXyk7CiAgICAgICAgICAgICBpZiAoIXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgdSA9IHNwZWNpYWxfbG9va3VwKHcsICJfX2VudGVyX18iLCAmZW50ZXIpOworICAgICAgICAgICAgdSA9IHNwZWNpYWxfbG9va3VwKHcsICZQeUlkX19fZW50ZXJfXyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CiAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKQEAgLTI3MjUsNyArMjcxMiw3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpwZnVuYyk7CiAgICAgICAgICAgICAgICAgKnBmdW5jID0gc2VsZjsKICAgICAgICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICAvKiBuKys7ICovCiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7CkBAIC0yNzUzLDkgKzI3NDAsMTEgQEAKICAgICAgICAgICAgIGludCBrd2RlZmF1bHRzID0gKG9wYXJnPj44KSAmIDB4ZmY7CiAgICAgICAgICAgICBpbnQgbnVtX2Fubm90YXRpb25zID0gKG9wYXJnID4+IDE2KSAmIDB4N2ZmZjsKIAorICAgICAgICAgICAgdyA9IFBPUCgpOyAvKiBxdWFsbmFtZSAqLwogICAgICAgICAgICAgdiA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgeCA9IFB5RnVuY3Rpb25fTmV3KHYsIGYtPmZfZ2xvYmFscyk7CisgICAgICAgICAgICB4ID0gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUodiwgZi0+Zl9nbG9iYWxzLCB3KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKIAogICAgICAgICAgICAgaWYgKHggIT0gTlVMTCAmJiBvcGNvZGUgPT0gTUFLRV9DTE9TVVJFKSB7CiAgICAgICAgICAgICAgICAgdiA9IFBPUCgpOwpAQCAtMzA0OSw5ICszMDM4LDkgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKGkgPT0gZi0+Zl9pYmxvY2spCiAgICAgICAgICAgICAvKiBXZSBkaWQgbm90IGNyZWF0ZSB0aGlzIGV4Y2VwdGlvbi4gKi8KLSAgICAgICAgICAgIFJFU1RPUkVfQU5EX0NMRUFSX0VYQ19TVEFURSgpCisgICAgICAgICAgICByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUodHN0YXRlLCBmKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgU1dBUF9FWENfU1RBVEUoKQorICAgICAgICAgICAgc3dhcF9leGNfc3RhdGUodHN0YXRlLCBmKTsKICAgICB9CiAKICAgICBpZiAodHN0YXRlLT51c2VfdHJhY2luZykgewpAQCAtMzA4MSw3ICszMDcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUcmFjZV9SRVRVUk4sIHJldHZhbCkpIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJldHZhbCk7CiAgICAgICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKLSAgICAgICAgICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOworICAgICAgICAgICAgICAgIC8qIHdoeSA9IFdIWV9FWENFUFRJT047ICovCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDk0LDYgKzMwODMsMTU2IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorc3RhdGljIHZvaWQKK2Zvcm1hdF9taXNzaW5nKGNvbnN0IGNoYXIgKmtpbmQsIFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpuYW1lcykKK3sKKyAgICBpbnQgZXJyOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlMaXN0X0dFVF9TSVpFKG5hbWVzKTsKKyAgICBQeU9iamVjdCAqbmFtZV9zdHIsICpjb21tYSwgKnRhaWwsICp0bXA7CisKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QobmFtZXMpKTsKKyAgICBhc3NlcnQobGVuID49IDEpOworICAgIC8qIERlYWwgd2l0aCB0aGUgam95cyBvZiBuYXR1cmFsIGxhbmd1YWdlLiAqLworICAgIHN3aXRjaCAobGVuKSB7CisgICAgY2FzZSAxOgorICAgICAgICBuYW1lX3N0ciA9IFB5TGlzdF9HRVRfSVRFTShuYW1lcywgMCk7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lX3N0cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUgYW5kICVVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShuYW1lcywgbGVuIC0gMSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB0YWlsID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiwgJVUsIGFuZCAlVSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAxKSk7CisgICAgICAgIGlmICh0YWlsID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8qIENob3Agb2ZmIHRoZSBsYXN0IHR3byBvYmplY3RzIGluIHRoZSBsaXN0LiBUaGlzIHNob3VsZG4ndCBhY3R1YWxseQorICAgICAgICAgICBmYWlsLCBidXQgd2UgY2FuJ3QgYmUgdG9vIGNhcmVmdWwuICovCisgICAgICAgIGVyciA9IFB5TGlzdF9TZXRTbGljZShuYW1lcywgbGVuIC0gMiwgbGVuLCBOVUxMKTsKKyAgICAgICAgaWYgKGVyciA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIFN0aXRjaCBldmVyeXRoaW5nIHVwIGludG8gYSBuaWNlIGNvbW1hLXNlcGFyYXRlZCBsaXN0LiAqLworICAgICAgICBjb21tYSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIsICIpOworICAgICAgICBpZiAoY29tbWEgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Kb2luKGNvbW1hLCBuYW1lcyk7CisgICAgICAgIFB5X0RFQ1JFRihjb21tYSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG5hbWVfc3RyID0gUHlVbmljb2RlX0NvbmNhdCh0bXAsIHRhaWwpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKG5hbWVfc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiJVUoKSBtaXNzaW5nICVpIHJlcXVpcmVkICVzIGFyZ3VtZW50JXM6ICVVIiwKKyAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCisgICAgICAgICAgICAgICAgIGxlbiwKKyAgICAgICAgICAgICAgICAga2luZCwKKyAgICAgICAgICAgICAgICAgbGVuID09IDEgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgbmFtZV9zdHIpOworICAgIFB5X0RFQ1JFRihuYW1lX3N0cik7Cit9CisKK3N0YXRpYyB2b2lkCittaXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBpbnQgbWlzc2luZywgaW50IGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQoreworICAgIGludCBpLCBqID0gMDsKKyAgICBpbnQgc3RhcnQsIGVuZDsKKyAgICBpbnQgcG9zaXRpb25hbCA9IGRlZmNvdW50ICE9IC0xOworICAgIGNvbnN0IGNoYXIgKmtpbmQgPSBwb3NpdGlvbmFsID8gInBvc2l0aW9uYWwiIDogImtleXdvcmQtb25seSI7CisgICAgUHlPYmplY3QgKm1pc3NpbmdfbmFtZXM7CisKKyAgICAvKiBDb21wdXRlIHRoZSBuYW1lcyBvZiB0aGUgYXJndW1lbnRzIHRoYXQgYXJlIG1pc3NpbmcuICovCisgICAgbWlzc2luZ19uYW1lcyA9IFB5TGlzdF9OZXcobWlzc2luZyk7CisgICAgaWYgKG1pc3NpbmdfbmFtZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChwb3NpdGlvbmFsKSB7CisgICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgZW5kID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFydCA9IGNvLT5jb19hcmdjb3VudDsKKyAgICAgICAgZW5kID0gc3RhcnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgfQorICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyYXcgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb192YXJuYW1lcywgaSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5T2JqZWN0X1JlcHIocmF3KTsKKyAgICAgICAgICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWlzc2luZ19uYW1lcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKG1pc3NpbmdfbmFtZXMsIGorKywgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGogPT0gbWlzc2luZyk7CisgICAgZm9ybWF0X21pc3Npbmcoa2luZCwgY28sIG1pc3NpbmdfbmFtZXMpOworICAgIFB5X0RFQ1JFRihtaXNzaW5nX25hbWVzKTsKK30KKworc3RhdGljIHZvaWQKK3Rvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgaW50IGdpdmVuLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3sKKyAgICBpbnQgcGx1cmFsOworICAgIGludCBrd29ubHlfZ2l2ZW4gPSAwOworICAgIGludCBpOworICAgIFB5T2JqZWN0ICpzaWcsICprd29ubHlfc2lnOworCisgICAgYXNzZXJ0KChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSA9PSAwKTsKKyAgICAvKiBDb3VudCBtaXNzaW5nIGtleXdvcmQtb25seSBhcmdzLiAqLworICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKQorICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICAgICAgICAgIGt3b25seV9naXZlbisrOworICAgIGlmIChkZWZjb3VudCkgeworICAgICAgICBpbnQgYXRsZWFzdCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBwbHVyYWwgPSAxOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlZCB0byAlZCIsIGF0bGVhc3QsIGNvLT5jb19hcmdjb3VudCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwbHVyYWwgPSBjby0+Y29fYXJnY291bnQgIT0gMTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkIiwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICB9CisgICAgaWYgKHNpZyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGt3b25seV9naXZlbikgeworICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7CisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsIGdpdmVuICE9IDEgPyAicyIgOiAiIiwga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiAhPSAxID8gInMiIDogIiIpOworICAgICAgICBpZiAoa3dvbmx5X3NpZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2lnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogVGhpcyB3aWxsIG5vdCBmYWlsLiAqLworICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOworICAgICAgICBhc3NlcnQoa3dvbmx5X3NpZyAhPSBOVUxMKTsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlZCVVICVzIGdpdmVuIiwKKyAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCisgICAgICAgICAgICAgICAgIHNpZywKKyAgICAgICAgICAgICAgICAgcGx1cmFsID8gInMiIDogIiIsCisgICAgICAgICAgICAgICAgIGdpdmVuLAorICAgICAgICAgICAgICAgICBrd29ubHlfc2lnLAorICAgICAgICAgICAgICAgICBnaXZlbiA9PSAxICYmICFrd29ubHlfZ2l2ZW4gPyAid2FzIiA6ICJ3ZXJlIik7CisgICAgUHlfREVDUkVGKHNpZyk7CisgICAgUHlfREVDUkVGKGt3b25seV9zaWcpOworfQorCiAvKiBUaGlzIGlzIGdvbm5hIHNlZW0gKnJlYWwgd2VpcmQqLCBidXQgaWYgeW91IHB1dCBzb21lIG90aGVyIGNvZGUgYmV0d2VlbgogICAgUHlFdmFsX0V2YWxGcmFtZSgpIGFuZCBQeUV2YWxfRXZhbENvZGVFeCgpIHlvdSB3aWxsIG5lZWQgdG8gYWRqdXN0CiAgICB0aGUgdGVzdCBpbiB0aGUgaWYgc3RhdGVtZW50cyBpbiBNaXNjL2dkYmluaXQgKHB5c3RhY2sgYW5kIHB5c3RhY2t2KS4gKi8KQEAgLTMxMTAsNiArMzI0OSw5IEBACiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBQeU9iamVjdCAqeCwgKnU7CiAgICAgaW50IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgaW50IGk7CisgICAgaW50IG4gPSBhcmdjb3VudDsKKyAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKIAogICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLApAQCAtMzEyNiwyMTIgKzMyNjgsMTUzIEBACiAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICBmcmVldmFycyA9IGYtPmZfbG9jYWxzcGx1cyArIGNvLT5jb19ubG9jYWxzOwogCi0gICAgaWYgKHRvdGFsX2FyZ3MgfHwgY28tPmNvX2ZsYWdzICYgKENPX1ZBUkFSR1MgfCBDT19WQVJLRVlXT1JEUykpIHsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGludCBuID0gYXJnY291bnQ7Ci0gICAgICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKLSAgICAgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBpID0gdG90YWxfYXJnczsKLSAgICAgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIFNFVExPQ0FMKGksIGt3ZGljdCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgICAgICBpZiAoIShjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVzICVkICIKLSAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQlcyAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgIGRlZmNvdW50ID8gImF0IG1vc3QiIDogImV4YWN0bHkiLAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fYXJnY291bnQsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19hcmdjb3VudCA9PSAxID8gIiIgOiAicyIsCi0gICAgICAgICAgICAgICAgICAgIGFyZ2NvdW50ICsga3djb3VudCk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgLyogUGFyc2UgYXJndW1lbnRzLiAqLworICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykgeworICAgICAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgaSA9IHRvdGFsX2FyZ3M7CisgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQorICAgICAgICAgICAgaSsrOworICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOworICAgIH0KKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpCisgICAgICAgIG4gPSBjby0+Y29fYXJnY291bnQ7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICB4ID0gYXJnc1tpXTsKKyAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICBTRVRMT0NBTChpLCB4KTsKKyAgICB9CisgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKKyAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOworICAgICAgICBmb3IgKGkgPSBuOyBpIDwgYXJnY291bnQ7IGkrKykgewogICAgICAgICAgICAgeCA9IGFyZ3NbaV07CiAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICBTRVRMT0NBTChpLCB4KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odSwgaS1uLCB4KTsKICAgICAgICAgfQotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgewotICAgICAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7Ci0gICAgICAgICAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOwotICAgICAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICB4ID0gYXJnc1tpXTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwotICAgICAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7CisgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKKyAgICAgICAgaW50IGo7CisgICAgICAgIGlmIChrZXl3b3JkID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhrZXl3b3JkKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqKmNvX3Zhcm5hbWVzOwotICAgICAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd3NbMippXTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKLSAgICAgICAgICAgIGludCBqOwotICAgICAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOworICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCisgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLworICAgICAgICBjb192YXJuYW1lcyA9ICgoUHlUdXBsZU9iamVjdCAqKShjby0+Y29fdmFybmFtZXMpKS0+b2JfaXRlbTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgeworICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpZiAobm0gPT0ga2V5d29yZCkKKyAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOworICAgICAgICB9CisgICAgICAgIC8qIFNsb3cgZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqLworICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCisgICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFNwZWVkIGhhY2s6IGRvIHJhdyBwb2ludGVyIGNvbXBhcmVzLiBBcyBuYW1lcyBhcmUKLSAgICAgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLwotICAgICAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07Ci0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBubSwgUHlfRVEpOwotICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXl3b3JkLCB2YWx1ZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICBrd19mb3VuZDoKLSAgICAgICAgICAgIGlmIChHRVRMT0NBTChqKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGtleXdvcmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgfQorICAgICAgICBpZiAoaiA+PSB0b3RhbF9hcmdzICYmIGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAnJVMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgU0VUTE9DQUwoaiwgdmFsdWUpOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPiAwKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoa3dkZWZzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IFB5RGljdF9HZXRJdGVtKGt3ZGVmcywgbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZWYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWYpOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUTE9DQUwoaSwgZGVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICIlVSgpIG5lZWRzIGtleXdvcmQtb25seSBhcmd1bWVudCAlUyIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9CisgICAgICAgIFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIGt3X2ZvdW5kOgorICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChhcmdjb3VudCA8IGNvLT5jb19hcmdjb3VudCkgewotICAgICAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKLSAgICAgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGosIGdpdmVuID0gMDsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvLT5jb19hcmdjb3VudDsgaisrKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGopKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuKys7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlcyAlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICgoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWZjb3VudCkgPyAiYXQgbGVhc3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImV4YWN0bHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLCBtID09IDEgPyAiIiA6ICJzIiwgZ2l2ZW4pOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG4gPiBtKQotICAgICAgICAgICAgICAgIGkgPSBuIC0gbTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBpIDwgZGVmY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChtK2kpID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IGRlZnNbaV07Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWYpOwotICAgICAgICAgICAgICAgICAgICBTRVRMT0NBTChtK2ksIGRlZik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoYXJnY291bnQgPiAwIHx8IGt3Y291bnQgPiAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIGFyZ2NvdW50ICsga3djb3VudCk7CisgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50ICYmICEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKKyAgICAgICAgdG9vX21hbnlfcG9zaXRpb25hbChjbywgYXJnY291bnQsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KLSAgICAvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBzdG9yYWdlIGZvciBjZWxsIHZhcnMsIGFuZCBjb3B5IGZyZWUKLSAgICAgICB2YXJzIGludG8gZnJhbWUuICBUaGlzIGlzbid0IHRvbyBlZmZpY2llbnQgcmlnaHQgbm93LiAqLwotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykpIHsKLSAgICAgICAgaW50IGksIGosIG5hcmdzLCBmb3VuZDsKLSAgICAgICAgUHlfVU5JQ09ERSAqY2VsbG5hbWUsICphcmduYW1lOwotICAgICAgICBQeU9iamVjdCAqYzsKLQotICAgICAgICBuYXJncyA9IHRvdGFsX2FyZ3M7Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQotICAgICAgICAgICAgbmFyZ3MrKzsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKQotICAgICAgICAgICAgbmFyZ3MrKzsKLQotICAgICAgICAvKiBJbml0aWFsaXplIGVhY2ggY2VsbCB2YXIsIHRha2luZyBpbnRvIGFjY291bnQKLSAgICAgICAgICAgY2VsbCB2YXJzIHRoYXQgYXJlIGluaXRpYWxpemVkIGZyb20gYXJndW1lbnRzLgotCi0gICAgICAgICAgIFNob3VsZCBhcnJhbmdlIGZvciB0aGUgY29tcGlsZXIgdG8gcHV0IGNlbGx2YXJzCi0gICAgICAgICAgIHRoYXQgYXJlIGFyZ3VtZW50cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjZWxsdmFycwotICAgICAgICAgICBsaXN0IHNvIHRoYXQgd2UgY2FuIG1hcmNoIG92ZXIgaXQgbW9yZSBlZmZpY2llbnRseT8KLSAgICAgICAgKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKTsgKytpKSB7Ci0gICAgICAgICAgICBjZWxsbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX2NlbGx2YXJzLCBpKSk7Ci0gICAgICAgICAgICBmb3VuZCA9IDA7Ci0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbmFyZ3M7IGorKykgewotICAgICAgICAgICAgICAgIGFyZ25hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGopKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJjbXAoY2VsbG5hbWUsIGFyZ25hbWUpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5Q2VsbF9OZXcoR0VUTE9DQUwoaikpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgICAgICBHRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGkpID0gYzsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZm91bmQgPT0gMCkgewotICAgICAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KE5VTEwpOwotICAgICAgICAgICAgICAgIGlmIChjID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBTRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGksIGMpOworICAgIGlmIChhcmdjb3VudCA8IGNvLT5jb19hcmdjb3VudCkgeworICAgICAgICBpbnQgbSA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBpbnQgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKQorICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpCisgICAgICAgICAgICAgICAgbWlzc2luZysrOworICAgICAgICBpZiAobWlzc2luZykgeworICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobiA+IG0pCisgICAgICAgICAgICBpID0gbiAtIG07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICBmb3IgKDsgaSA8IGRlZmNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChtK2kpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmID0gZGVmc1tpXTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKKyAgICAgICAgICAgICAgICBTRVRMT0NBTChtK2ksIGRlZik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKSkgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobyk7Ci0gICAgICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKKyAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOworICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGkpOworICAgICAgICAgICAgaWYgKGt3ZGVmcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IFB5RGljdF9HZXRJdGVtKGt3ZGVmcywgbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGRlZikgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKKyAgICAgICAgICAgICAgICAgICAgU0VUTE9DQUwoaSwgZGVmKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbWlzc2luZysrOwogICAgICAgICB9CisgICAgICAgIGlmIChtaXNzaW5nKSB7CisgICAgICAgICAgICBtaXNzaW5nX2FyZ3VtZW50cyhjbywgbWlzc2luZywgLTEsIGZhc3Rsb2NhbHMpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc3RvcmFnZSBmb3IgY2VsbCB2YXJzLCBhbmQgY29weSBmcmVlCisgICAgICAgdmFycyBpbnRvIGZyYW1lLiAqLworICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycyk7ICsraSkgeworICAgICAgICBQeU9iamVjdCAqYzsKKyAgICAgICAgaW50IGFyZzsKKyAgICAgICAgLyogUG9zc2libHkgYWNjb3VudCBmb3IgdGhlIGNlbGwgdmFyaWFibGUgYmVpbmcgYW4gYXJndW1lbnQuICovCisgICAgICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCAmJgorICAgICAgICAgICAgKGFyZyA9IGNvLT5jb19jZWxsMmFyZ1tpXSkgIT0gQ09fQ0VMTF9OT1RfQU5fQVJHKQorICAgICAgICAgICAgYyA9IFB5Q2VsbF9OZXcoR0VUTE9DQUwoYXJnKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KE5VTEwpOworICAgICAgICBpZiAoYyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBTRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGksIGMpOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fZnJlZXZhcnMpOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGNsb3N1cmUsIGkpOworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKICAgICB9CiAKICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKSB7CkBAIC0zMzY1LDE4ICszNDQ4LDcyIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICpvLCBjaGFyICptZXRoLCBQeU9iamVjdCAqKmNhY2hlKQorc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICppZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIHJlcyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sIG1ldGgsIGNhY2hlKTsKKyAgICByZXMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCBpZCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKmNhY2hlKTsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBpZC0+b2JqZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiByZXM7CiB9CiAKIAorLyogVGhlc2UgMyBmdW5jdGlvbnMgZGVhbCB3aXRoIHRoZSBleGNlcHRpb24gc3RhdGUgb2YgZ2VuZXJhdG9ycy4gKi8KKworc3RhdGljIHZvaWQKK3NhdmVfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOworICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHlwZSk7CisgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y192YWx1ZSk7CisgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y190cmFjZWJhY2spOworICAgIHR5cGUgPSBmLT5mX2V4Y190eXBlOworICAgIHZhbHVlID0gZi0+Zl9leGNfdmFsdWU7CisgICAgdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOworICAgIGYtPmZfZXhjX3R5cGUgPSB0c3RhdGUtPmV4Y190eXBlOworICAgIGYtPmZfZXhjX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOworfQorCitzdGF0aWMgdm9pZAorc3dhcF9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgdG1wID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICB0c3RhdGUtPmV4Y190eXBlID0gZi0+Zl9leGNfdHlwZTsKKyAgICBmLT5mX2V4Y190eXBlID0gdG1wOworICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7CisgICAgZi0+Zl9leGNfdmFsdWUgPSB0bXA7CisgICAgdG1wID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsKKyAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSB0bXA7Cit9CisKK3N0YXRpYyB2b2lkCityZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsKKyAgICB0eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICB2YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIHRiID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOworICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7CisgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOworICAgIGYtPmZfZXhjX3R5cGUgPSBOVUxMOworICAgIGYtPmZfZXhjX3ZhbHVlID0gTlVMTDsKKyAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSBOVUxMOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgUHlfWERFQ1JFRih0Yik7Cit9CisKKwogLyogTG9naWMgZm9yIHRoZSByYWlzZSBzdGF0ZW1lbnQgKHRvbyBjb21wbGljYXRlZCBmb3IgaW5saW5pbmcpLgogICAgVGhpcyAqY29uc3VtZXMqIGEgcmVmZXJlbmNlIGNvdW50IHRvIGVhY2ggb2YgaXRzIGFyZ3VtZW50cy4gKi8KIHN0YXRpYyBlbnVtIHdoeV9jb2RlCkBAIC0zNDQ2LDYgKzM1ODMsMTAgQEAKICAgICAgICAgZWxzZSBpZiAoUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayhjYXVzZSkpIHsKICAgICAgICAgICAgIGZpeGVkX2NhdXNlID0gY2F1c2U7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2F1c2UgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGNhdXNlKTsKKyAgICAgICAgICAgIGZpeGVkX2NhdXNlID0gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbiBjYXVzZXMgbXVzdCBkZXJpdmUgZnJvbSAiCkBAIC00MTkyLDcgKzQzMzMsNyBAQAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIHNlcXVlbmNlLCBub3QgJTIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSwgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQzNDIsNyArNDQ4Myw5IEBACiBzdGF0aWMgaW50CiBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlPYmplY3QgKmFsbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgIl9fYWxsX18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2FsbF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKmFsbCA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19hbGxfXyk7CiAgICAgUHlPYmplY3QgKmRpY3QsICpuYW1lLCAqdmFsdWU7CiAgICAgaW50IHNraXBfbGVhZGluZ191bmRlcnNjb3JlcyA9IDA7CiAgICAgaW50IHBvcywgZXJyOwpAQCAtNDM1MSw3ICs0NDk0LDcgQEAKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAtMTsgLyogVW5leHBlY3RlZCBlcnJvciAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiX19kaWN0X18iKTsKKyAgICAgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQzNzcsNyArNDUyMCw4IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKHNraXBfbGVhZGluZ191bmRlcnNjb3JlcyAmJgogICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrKG5hbWUpICYmCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKVswXSA9PSAnXycpCisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkobmFtZSkgIT0gLTEgJiYKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZSwgMCkgPT0gJ18nKQogICAgICAgICB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ0MzcsMTkgKzQ1ODEsOSBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsCi0gICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKKyAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKIHsKLSAgICAvKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgJ3ZhcmlhYmxlICs9IGV4cHInIHdoZW4gYm90aCBhcmd1bWVudHMKLSAgICAgICBhcmUgKFVuaWNvZGUpIHN0cmluZ3MuICovCi0gICAgUHlfc3NpemVfdCB2X2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh2KTsKLSAgICBQeV9zc2l6ZV90IHdfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHcpOwotICAgIFB5X3NzaXplX3QgbmV3X2xlbiA9IHZfbGVuICsgd19sZW47Ci0gICAgaWYgKG5ld19sZW4gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDIpIHsKICAgICAgICAgLyogSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGVyZSBhcmUgMiByZWZlcmVuY2VzIHRvIHRoZSB2YWx1ZQogICAgICAgICAgKiBzdG9yZWQgaW4gJ3ZhcmlhYmxlJyB3aGVuIHRoZSArPSBpcyBwZXJmb3JtZWQ6IG9uZSBvbiB0aGUKQEAgLTQ0OTAsMzEgKzQ2MjQsOSBAQAogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoUHlfUkVGQ05UKHYpID09IDEgJiYgIVB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh2KSkgewotICAgICAgICAvKiBOb3cgd2Ugb3duIHRoZSBsYXN0IHJlZmVyZW5jZSB0byAndicsIHNvIHdlIGNhbiByZXNpemUgaXQKLSAgICAgICAgICogaW4tcGxhY2UuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgbmV3X2xlbikgIT0gMCkgewotICAgICAgICAgICAgLyogWFhYIGlmIFB5VW5pY29kZV9SZXNpemUoKSBmYWlscywgJ3YnIGhhcyBiZWVuCi0gICAgICAgICAgICAgKiBkZWFsbG9jYXRlZCBzbyBpdCBjYW5ub3QgYmUgcHV0IGJhY2sgaW50bwotICAgICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFRoZSBNZW1vcnlFcnJvciBpcyByYWlzZWQgd2hlbiB0aGVyZQotICAgICAgICAgICAgICogaXMgbm8gdmFsdWUgaW4gJ3ZhcmlhYmxlJywgd2hpY2ggbWlnaHQgKHZlcnkKLSAgICAgICAgICAgICAqIHJlbW90ZWx5KSBiZSBhIGNhdXNlIG9mIGluY29tcGF0aWJpbGl0aWVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAvKiBjb3B5ICd3JyBpbnRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgYXJlYSBvZiAndicgKi8KLSAgICAgICAgbWVtY3B5KFB5VW5pY29kZV9BU19VTklDT0RFKHYpICsgdl9sZW4sCi0gICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh3KSwgd19sZW4qc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBXaGVuIGluLXBsYWNlIHJlc2l6aW5nIGlzIG5vdCBhbiBvcHRpb24uICovCi0gICAgICAgIHcgPSBQeVVuaWNvZGVfQ29uY2F0KHYsIHcpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiB3OwotICAgIH0KKyAgICByZXMgPSB2OworICAgIFB5VW5pY29kZV9BcHBlbmQoJnJlcywgdyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogI2lmZGVmIERZTkFNSUNfRVhFQ1VUSU9OX1BST0ZJTEUKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbF9naWwuaCBiL1B5dGhvbi9jZXZhbF9naWwuaAppbmRleCBiZjdhMzUwLi4yNzAyZDVjIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWxfZ2lsLmgKKysrIGIvUHl0aG9uL2NldmFsX2dpbC5oCkBAIC01OSwyMTMgKzU5LDQ5IEBACiAgICAgIChOb3RlOiB0aGlzIG1lY2hhbmlzbSBpcyBlbmFibGVkIHdpdGggRk9SQ0VfU1dJVENISU5HIGFib3ZlKQogKi8KIAotI2lmbmRlZiBfUE9TSVhfVEhSRUFEUwotLyogVGhpcyBtZWFucyBwdGhyZWFkcyBhcmUgbm90IGltcGxlbWVudGVkIGluIGxpYmMgaGVhZGVycywgaGVuY2UgdGhlIG1hY3JvCi0gICBub3QgcHJlc2VudCBpbiB1bmlzdGQuaC4gQnV0IHRoZXkgc3RpbGwgY2FuIGJlIGltcGxlbWVudGVkIGFzIGFuIGV4dGVybmFsCi0gICBsaWJyYXJ5IChlLmcuIGdudSBwdGggaW4gcHRocmVhZCBlbXVsYXRpb24pICovCi0jIGlmZGVmIEhBVkVfUFRIUkVBRF9ICi0jICBpbmNsdWRlIDxwdGhyZWFkLmg+IC8qIF9QT1NJWF9USFJFQURTICovCi0jIGVuZGlmCisjaW5jbHVkZSAiY29uZHZhci5oIgorI2lmbmRlZiBQeV9IQVZFX0NPTkRWQVIKKyNlcnJvciBZb3UgbmVlZCBlaXRoZXIgYSBQT1NJWC1jb21wYXRpYmxlIG9yIGEgV2luZG93cyBzeXN0ZW0hCiAjZW5kaWYKIAotCi0jaWZkZWYgX1BPU0lYX1RIUkVBRFMKLQotLyoKLSAqIFBPU0lYIHN1cHBvcnQKLSAqLwotCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi0jZGVmaW5lIEFERF9NSUNST1NFQ09ORFModHYsIGludGVydmFsKSBcCi1kbyB7IFwKLSAgICB0di50dl91c2VjICs9IChsb25nKSBpbnRlcnZhbDsgXAotICAgIHR2LnR2X3NlYyArPSB0di50dl91c2VjIC8gMTAwMDAwMDsgXAotICAgIHR2LnR2X3VzZWMgJT0gMTAwMDAwMDsgXAotfSB3aGlsZSAoMCkKLQotLyogV2UgYXNzdW1lIGFsbCBtb2Rlcm4gUE9TSVggc3lzdGVtcyBoYXZlIGdldHRpbWVvZmRheSgpICovCi0jaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCi0jZGVmaW5lIEdFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYpCi0jZWxzZQotI2RlZmluZSBHRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2LCAoc3RydWN0IHRpbWV6b25lICopTlVMTCkKLSNlbmRpZgotCi0jZGVmaW5lIE1VVEVYX1QgcHRocmVhZF9tdXRleF90CisjZGVmaW5lIE1VVEVYX1QgUHlNVVRFWF9UCiAjZGVmaW5lIE1VVEVYX0lOSVQobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0LCBOVUxMKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfbXV0ZXhfaW5pdCgiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfSU5JVCgmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9JTklUKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgTVVURVhfRklOSShtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF9kZXN0cm95KCIgI211dCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlNVVRFWF9GSU5JKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX0ZJTkkoIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBNVVRFWF9MT0NLKG11dCkgXAotICAgIGlmIChwdGhyZWFkX211dGV4X2xvY2soJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X2xvY2soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX0xPQ0soJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5TVVURVhfTE9DSygiICNtdXQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIE1VVEVYX1VOTE9DSyhtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF91bmxvY2soJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X3VubG9jaygiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfVU5MT0NLKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX1VOTE9DSygiICNtdXQgIikgZmFpbGVkIik7IH07CiAKLSNkZWZpbmUgQ09ORF9UIHB0aHJlYWRfY29uZF90CisjZGVmaW5lIENPTkRfVCBQeUNPTkRfVAogI2RlZmluZSBDT05EX0lOSVQoY29uZCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfaW5pdCgmY29uZCwgTlVMTCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfaW5pdCgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfSU5JVCgmKGNvbmQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9JTklUKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfRklOSShjb25kKSBcCi0gICAgaWYgKHB0aHJlYWRfY29uZF9kZXN0cm95KCZjb25kKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF9kZXN0cm95KCIgI2NvbmQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5Q09ORF9GSU5JKCYoY29uZCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX0ZJTkkoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9TSUdOQUwoY29uZCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfc2lnbmFsKCZjb25kKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF9zaWduYWwoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX1NJR05BTCgmKGNvbmQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9TSUdOQUwoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9XQUlUKGNvbmQsIG11dCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfd2FpdCgmY29uZCwgJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfd2FpdCgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfV0FJVCgmKGNvbmQpLCAmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX1dBSVQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9USU1FRF9XQUlUKGNvbmQsIG11dCwgbWljcm9zZWNvbmRzLCB0aW1lb3V0X3Jlc3VsdCkgXAogICAgIHsgXAotICAgICAgICBpbnQgcjsgXAotICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7IFwKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgZGVhZGxpbmU7IFwKLSAgICAgICAgXAotICAgICAgICBHRVRUSU1FT0ZEQVkoJmRlYWRsaW5lKTsgXAotICAgICAgICBBRERfTUlDUk9TRUNPTkRTKGRlYWRsaW5lLCBtaWNyb3NlY29uZHMpOyBcCi0gICAgICAgIHRzLnR2X3NlYyA9IGRlYWRsaW5lLnR2X3NlYzsgXAotICAgICAgICB0cy50dl9uc2VjID0gZGVhZGxpbmUudHZfdXNlYyAqIDEwMDA7IFwKLSAgICAgICAgXAotICAgICAgICByID0gcHRocmVhZF9jb25kX3RpbWVkd2FpdCgmY29uZCwgJm11dCwgJnRzKTsgXAotICAgICAgICBpZiAociA9PSBFVElNRURPVVQpIFwKKyAgICAgICAgaW50IHIgPSBQeUNPTkRfVElNRURXQUlUKCYoY29uZCksICYobXV0KSwgKG1pY3Jvc2Vjb25kcykpOyBcCisgICAgICAgIGlmIChyIDwgMCkgXAorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX1dBSVQoIiAjY29uZCAiKSBmYWlsZWQiKTsgXAorICAgICAgICBpZiAocikgLyogMSA9PSB0aW1lb3V0LCAyID09IGltcGwuIGNhbid0IHNheSwgc28gYXNzdW1lIHRpbWVvdXQgKi8gXAogICAgICAgICAgICAgdGltZW91dF9yZXN1bHQgPSAxOyBcCi0gICAgICAgIGVsc2UgaWYgKHIpIFwKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF90aW1lZHdhaXQoIiAjY29uZCAiKSBmYWlsZWQiKTsgXAogICAgICAgICBlbHNlIFwKICAgICAgICAgICAgIHRpbWVvdXRfcmVzdWx0ID0gMDsgXAogICAgIH0gXAogCi0jZWxpZiBkZWZpbmVkKE5UX1RIUkVBRFMpCi0KLS8qCi0gKiBXaW5kb3dzICgyMDAwIGFuZCBsYXRlciwgYXMgd2VsbCBhcyAoaG9wZWZ1bGx5KSBDRSkgc3VwcG9ydAotICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNkZWZpbmUgTVVURVhfVCBDUklUSUNBTF9TRUNUSU9OCi0jZGVmaW5lIE1VVEVYX0lOSVQobXV0KSBkbyB7IFwKLSAgICBpZiAoIShJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uQW5kU3BpbkNvdW50KCYobXV0KSwgNDAwMCkpKSBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNyZWF0ZU11dGV4KCIgI211dCAiKSBmYWlsZWQiKTsgXAotfSB3aGlsZSAoMCkKLSNkZWZpbmUgTVVURVhfRklOSShtdXQpIFwKLSAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJihtdXQpKQotI2RlZmluZSBNVVRFWF9MT0NLKG11dCkgXAotICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKCYobXV0KSkKLSNkZWZpbmUgTVVURVhfVU5MT0NLKG11dCkgXAotICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCYobXV0KSkKLQotLyogV2UgZW11bGF0ZSBjb25kaXRpb24gdmFyaWFibGVzIHdpdGggYSBzZW1hcGhvcmUuCi0gICBXZSB1c2UgYSBTZW1hcGhvcmUgcmF0aGVyIHRoYW4gYW4gYXV0by1yZXNldCBldmVudCwgYmVjYXVzZSBhbHRob3VnaAotICAgYW4gYXV0by1yZXNlbnQgZXZlbnQgbWlnaHQgYXBwZWFyIHRvIHNvbHZlIHRoZSBsb3N0LXdha2V1cCBidWcgKHJhY2UKLSAgIGNvbmRpdGlvbiBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgb3V0ZXIgbG9jayBhbmQgd2FpdGluZykgYmVjYXVzZSBpdAotICAgbWFpbnRhaW5zIHN0YXRlIGV2ZW4gdGhvdWdoIGEgd2FpdCBoYXNuJ3QgaGFwcGVuZWQsIHRoZXJlIGlzIHN0aWxsCi0gICBhIGxvc3Qgd2FrZXVwIHByb2JsZW0gaWYgbW9yZSB0aGFuIG9uZSB0aHJlYWQgYXJlIGludGVycnVwdGVkIGluIHRoZQotICAgY3JpdGljYWwgcGxhY2UuICBBIHNlbWFwaG9yZSBzb2x2ZXMgdGhhdC4KLSAgIEJlY2F1c2UgaXQgaXMgb2sgdG8gc2lnbmFsIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggbm8gb25lCi0gICB3YWl0aW5nLCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZgotICAgd2FpdGluZyB0aHJlYWRzLiAgT3RoZXJ3aXNlLCB0aGUgc2VtYXBob3JlJ3Mgc3RhdGUgY291bGQgcmlzZQotICAgd2l0aG91dCBib3VuZC4KLQotICAgR2VuZXJpYyBlbXVsYXRpb25zIG9mIHRoZSBwdGhyZWFkX2NvbmRfKiBBUEkgdXNpbmcKLSAgIFdpbjMyIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIFdlYi4KLSAgIFRoZSBmb2xsb3dpbmcgcmVhZCBjYW4gYmUgZWRpZmljYXRpbmcgKG9yIG5vdCk6Ci0gICBodHRwOi8vd3d3LmNzZS53dXN0bC5lZHUvfnNjaG1pZHQvd2luMzItY3YtMS5odG1sCi0qLwotdHlwZWRlZiBzdHJ1Y3QgQ09ORF9UCi17Ci0gICAgSEFORExFIHNlbTsgICAgLyogdGhlIHNlbWFwaG9yZSAqLwotICAgIGludCBuX3dhaXRpbmc7IC8qIGhvdyBtYW55IGFyZSB1bnJlbGVhc2VkICovCi19IENPTkRfVDsKLQotX19pbmxpbmUgc3RhdGljIHZvaWQgX2NvbmRfaW5pdChDT05EX1QgKmNvbmQpCi17Ci0gICAgLyogQSBzZW1hcGhvcmUgd2l0aCBhIGxhcmdlIG1heCB2YWx1ZSwgIFRoZSBwb3NpdGl2ZSB2YWx1ZQotICAgICAqIGlzIG9ubHkgbmVlZGVkIHRvIGNhdGNoIHRob3NlICJsb3N0IHdha2V1cCIgZXZlbnRzIGFuZAotICAgICAqIHJhY2UgY29uZGl0aW9ucyB3aGVuIGEgdGltZWQgd2FpdCBlbGFwc2VzLgotICAgICAqLwotICAgIGlmICghKGNvbmQtPnNlbSA9IENyZWF0ZVNlbWFwaG9yZShOVUxMLCAwLCAxMDAwLCBOVUxMKSkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNyZWF0ZVNlbWFwaG9yZSgpIGZhaWxlZCIpOwotICAgIGNvbmQtPm5fd2FpdGluZyA9IDA7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX2ZpbmkoQ09ORF9UICpjb25kKQotewotICAgIEJPT0wgb2sgPSBDbG9zZUhhbmRsZShjb25kLT5zZW0pOwotICAgIGlmICghb2spCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNsb3NlSGFuZGxlKCkgZmFpbGVkIik7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX3dhaXQoQ09ORF9UICpjb25kLCBNVVRFWF9UICptdXQpCi17Ci0gICAgKytjb25kLT5uX3dhaXRpbmc7Ci0gICAgTVVURVhfVU5MT0NLKCptdXQpOwotICAgIC8qICJsb3N0IHdha2V1cCBidWciIHdvdWxkIG9jY3VyIGlmIHRoZSBjYWxsZXIgd2VyZSBpbnRlcnJ1cHRlZCBoZXJlLAotICAgICAqIGJ1dCB3ZSBhcmUgc2FmZSBiZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNlbWFwaG9yZSB3aWNoIGhhcyBhbiBpbnRlcm5hbAotICAgICAqIGNvdW50LgotICAgICAqLwotICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGNvbmQtPnNlbSwgSU5GSU5JVEUpID09IFdBSVRfRkFJTEVEKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJXYWl0Rm9yU2luZ2xlT2JqZWN0KCkgZmFpbGVkIik7Ci0gICAgTVVURVhfTE9DSygqbXV0KTsKLX0KLQotX19pbmxpbmUgc3RhdGljIGludCBfY29uZF90aW1lZF93YWl0KENPTkRfVCAqY29uZCwgTVVURVhfVCAqbXV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzKQotewotICAgIERXT1JEIHI7Ci0gICAgKytjb25kLT5uX3dhaXRpbmc7Ci0gICAgTVVURVhfVU5MT0NLKCptdXQpOwotICAgIHIgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGNvbmQtPnNlbSwgdXMgLyAxMDAwKTsKLSAgICBpZiAociA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiV2FpdEZvclNpbmdsZU9iamVjdCgpIGZhaWxlZCIpOwotICAgIE1VVEVYX0xPQ0soKm11dCk7Ci0gICAgaWYgKHIgPT0gV0FJVF9USU1FT1VUKQotICAgICAgICAtLWNvbmQtPm5fd2FpdGluZzsKLSAgICAgICAgLyogSGVyZSB3ZSBoYXZlIGEgYmVuaWduIHJhY2UgY29uZGl0aW9uIHdpdGggX2NvbmRfc2lnbmFsLiAgSWYgdGhlCi0gICAgICAgICAqIHdhaXQgb3BlcmF0aW9uIGhhcyB0aW1lZCBvdXQsIGJ1dCBiZWZvcmUgd2UgY2FuIGFjcXVpcmUgdGhlCi0gICAgICAgICAqIG11dGV4IGFnYWluIHRvIGRlY3JlbWVudCBuX3dhaXRpbmcsIGEgdGhyZWFkIGhvbGRpbmcgdGhlIG11dGV4Ci0gICAgICAgICAqIHN0aWxsIHNlZXMgYSBwb3NpdGl2ZSBuX3dhaXRpbmcgdmFsdWUgYW5kIG1heSBjYWxsCi0gICAgICAgICAqIFJlbGVhc2VTZW1hcGhvcmUgYW5kIGRlY3JlbWVudCBuX3dhaXRpbmcuCi0gICAgICAgICAqIFRoaXMgd2lsbCBjYXVzZSBuX3dhaXRpbmcgdG8gYmUgZGVjcmVtZW50ZWQgdHdpY2UuCi0gICAgICAgICAqIFRoaXMgaXMgYmVuaWduLCB0aG91Z2gsIGJlY2F1c2UgUmVsZWFzZVNlbWFwaG9yZSB3aWxsIGFsc28gaGF2ZQotICAgICAgICAgKiBiZWVuIGNhbGxlZCwgbGVhdmluZyB0aGUgc2VtYXBob3JlIHN0YXRlIHBvc2l0aXZlLiAgV2UgbWF5Ci0gICAgICAgICAqIHRodXMgZW5kIHVwIHdpdGggc2VtYXBob3JlIGluIHN0YXRlIDEsIGFuZCBuX3dhaXRpbmcgPT0gLTEsIGFuZAotICAgICAgICAgKiB0aGUgbmV4dCB0aW1lIHNvbWVvbmUgY2FsbHMgX2NvbmRfd2FpdCgpLCB0aGF0IHRocmVhZCB3aWxsCi0gICAgICAgICAqIHBhc3MgcmlnaHQgdGhyb3VnaCwgZGVjcmVtZW50aW5nIHRoZSBzZW1hcGhvcmUgc3RhdGUgYW5kCi0gICAgICAgICAqIGluY3JlbWVudGluZyBuX3dhaXRpbmcsIHRodXMgY29ycmVjdGluZyB0aGUgZXh0cmEgX2NvbmRfc2lnbmFsLgotICAgICAgICAgKi8KLSAgICByZXR1cm4gciA9PSBXQUlUX1RJTUVPVVQ7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX3NpZ25hbChDT05EX1QgICpjb25kKSB7Ci0gICAgLyogTk9URTogVGhpcyBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBtdXRleCBoZWxkICovCi0gICAgaWYgKGNvbmQtPm5fd2FpdGluZyA+IDApIHsKLSAgICAgICAgaWYgKCFSZWxlYXNlU2VtYXBob3JlKGNvbmQtPnNlbSwgMSwgTlVMTCkpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJSZWxlYXNlU2VtYXBob3JlKCkgZmFpbGVkIik7Ci0gICAgICAgIC0tY29uZC0+bl93YWl0aW5nOwotICAgIH0KLX0KLQotI2RlZmluZSBDT05EX0lOSVQoY29uZCkgXAotICAgIF9jb25kX2luaXQoJihjb25kKSkKLSNkZWZpbmUgQ09ORF9GSU5JKGNvbmQpIFwKLSAgICBfY29uZF9maW5pKCYoY29uZCkpCi0jZGVmaW5lIENPTkRfU0lHTkFMKGNvbmQpIFwKLSAgICBfY29uZF9zaWduYWwoJihjb25kKSkKLSNkZWZpbmUgQ09ORF9XQUlUKGNvbmQsIG11dCkgXAotICAgIF9jb25kX3dhaXQoJihjb25kKSwgJihtdXQpKQotI2RlZmluZSBDT05EX1RJTUVEX1dBSVQoY29uZCwgbXV0LCB1cywgdGltZW91dF9yZXN1bHQpIGRvIHsgXAotICAgICh0aW1lb3V0X3Jlc3VsdCkgPSBfY29uZF90aW1lZF93YWl0KCYoY29uZCksICYobXV0KSwgdXMpOyBcCi19IHdoaWxlICgwKQotCi0jZWxzZQotCi0jZXJyb3IgWW91IG5lZWQgZWl0aGVyIGEgUE9TSVgtY29tcGF0aWJsZSBvciBhIFdpbmRvd3Mgc3lzdGVtIQotCi0jZW5kaWYgLyogX1BPU0lYX1RIUkVBRFMsIE5UX1RIUkVBRFMgKi8KIAogCiAvKiBXaGV0aGVyIHRoZSBHSUwgaXMgYWxyZWFkeSB0YWtlbiAoLTEgaWYgdW5pbml0aWFsaXplZCkuIFRoaXMgaXMgYXRvbWljCkBAIC0zMTMsMTMgKzE0OSwxNCBAQAogCiBzdGF0aWMgdm9pZCBkZXN0cm95X2dpbCh2b2lkKQogeworICAgIC8qIHNvbWUgcHRocmVhZC1saWtlIGltcGxlbWVudGF0aW9ucyB0aWUgdGhlIG11dGV4IHRvIHRoZSBjb25kCisgICAgICogYW5kIG11c3QgaGF2ZSB0aGUgY29uZCBkZXN0cm95ZWQgZmlyc3QuCisgICAgICovCisgICAgQ09ORF9GSU5JKGdpbF9jb25kKTsKICAgICBNVVRFWF9GSU5JKGdpbF9tdXRleCk7CiAjaWZkZWYgRk9SQ0VfU1dJVENISU5HCi0gICAgTVVURVhfRklOSShzd2l0Y2hfbXV0ZXgpOwotI2VuZGlmCi0gICAgQ09ORF9GSU5JKGdpbF9jb25kKTsKLSNpZmRlZiBGT1JDRV9TV0lUQ0hJTkcKICAgICBDT05EX0ZJTkkoc3dpdGNoX2NvbmQpOworICAgIE1VVEVYX0ZJTkkoc3dpdGNoX211dGV4KTsKICNlbmRpZgogICAgIF9QeV9hdG9taWNfc3RvcmVfZXhwbGljaXQoJmdpbF9sb2NrZWQsIC0xLCBfUHlfbWVtb3J5X29yZGVyX3JlbGVhc2UpOwogICAgIF9QeV9BTk5PVEFURV9SV0xPQ0tfREVTVFJPWSgmZ2lsX2xvY2tlZCk7CkBAIC0zNTUsMTMgKzE5MiwxMyBAQAogICAgICAgICBNVVRFWF9MT0NLKHN3aXRjaF9tdXRleCk7CiAgICAgICAgIC8qIE5vdCBzd2l0Y2hlZCB5ZXQgPT4gd2FpdCAqLwogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikgPT0gdHN0YXRlKSB7Ci0JICAgIFJFU0VUX0dJTF9EUk9QX1JFUVVFU1QoKTsKKyAgICAgICAgUkVTRVRfR0lMX0RST1BfUkVRVUVTVCgpOwogICAgICAgICAgICAgLyogTk9URTogaWYgQ09ORF9XQUlUIGRvZXMgbm90IGF0b21pY2FsbHkgc3RhcnQgd2FpdGluZyB3aGVuCiAgICAgICAgICAgICAgICByZWxlYXNpbmcgdGhlIG11dGV4LCBhbm90aGVyIHRocmVhZCBjYW4gcnVuIHRocm91Z2gsIHRha2UKICAgICAgICAgICAgICAgIHRoZSBHSUwgYW5kIGRyb3AgaXQgYWdhaW4sIGFuZCByZXNldCB0aGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBiZWZvcmUgd2UgZXZlbiBoYWQgYSBjaGFuY2UgdG8gd2FpdCBmb3IgaXQuICovCiAgICAgICAgICAgICBDT05EX1dBSVQoc3dpdGNoX2NvbmQsIHN3aXRjaF9tdXRleCk7Ci0JfQorICAgIH0KICAgICAgICAgTVVURVhfVU5MT0NLKHN3aXRjaF9tdXRleCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vY29kZWNzLmMgYi9QeXRob24vY29kZWNzLmMKaW5kZXggZTIxODM0YS4uZmQ2N2QxYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvZGVjcy5jCisrKyBiL1B5dGhvbi9jb2RlY3MuYwpAQCAtMTEsNiArMTEsOCBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK2NvbnN0IGNoYXIgKlB5X2hleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKKwogLyogLS0tIENvZGVjIFJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIEltcG9ydCB0aGUgc3RhbmRhcmQgZW5jb2RpbmdzIHBhY2thZ2Ugd2hpY2ggd2lsbCByZWdpc3RlciB0aGUgZmlyc3QKQEAgLTQ2NSw5ICs0NjcsMTEgQEAKIAogc3RhdGljIHZvaWQgd3JvbmdfZXhjZXB0aW9uX3R5cGUoUHlPYmplY3QgKmV4YykKIHsKLSAgICBQeU9iamVjdCAqdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXhjLCAiX19jbGFzc19fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgUHlPYmplY3QgKnR5cGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGV4YywgJlB5SWRfX19jbGFzc19fKTsKICAgICBpZiAodHlwZSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0eXBlLCAiX19uYW1lX18iKTsKKyAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHR5cGUsICZQeUlkX19fbmFtZV9fKTsKICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwogICAgICAgICBpZiAobmFtZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtNTA2LDU3ICs1MTAsNTggQEAKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIC8qIG91Y2g6IHBhc3NpbmcgTlVMTCwgMCwgcG9zIGdpdmVzIE5vbmUgaW5zdGVhZCBvZiB1JycgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmZW5kLCAwLCBlbmQpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgUHlVbmljb2RlX05ldygwLCAwKSwgZW5kKTsKIH0KIAogCiBQeU9iamVjdCAqUHlDb2RlY19SZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3R1cGxlOwotICAgIFB5X3NzaXplX3Qgc3RhcnQ7Ci0gICAgUHlfc3NpemVfdCBlbmQ7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZCwgaSwgbGVuOwogCiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgZW5kLXN0YXJ0KTsKKyAgICAgICAgbGVuID0gZW5kIC0gc3RhcnQ7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCAnPycpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKSwgaSA9IHN0YXJ0OwotICAgICAgICAgICAgaTxlbmQ7ICsrcCwgKytpKQotICAgICAgICAgICAgKnAgPSAnPyc7Ci0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXN0dXBsZTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgJz8nKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgcmVzID0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVI7CiAgICAgICAgIGlmIChQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmcmVzLCAxLCBlbmQpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKENuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgZW5kLXN0YXJ0KTsKKyAgICAgICAgbGVuID0gZW5kIC0gc3RhcnQ7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUik7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpLCBpID0gc3RhcnQ7Ci0gICAgICAgICAgICBpPGVuZDsgKytwLCArK2kpCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzdHVwbGU7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBsZW47IGkrKykKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpLCBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUik7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTU2OSw4MiArNTc0LDcyIEBACiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwotICAgICAgICBQeV9VTklDT0RFICpvdXRwOworICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRwOwogICAgICAgICBpbnQgcmVzc2l6ZTsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgcmVzc2l6ZSA9IDA7IHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIGlmICgqcDwxMCkKKyAgICAgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICAgICAgaWYgKGNoPDEwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMisxKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzIrMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMiszKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis0KzE7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis1KzE7Ci0jZWxzZQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwKQotICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis1KzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNisxOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis3KzE7Ci0jZW5kaWYKICAgICAgICAgfQogICAgICAgICAvKiBhbGxvY2F0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgcmVzc2l6ZSk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcocmVzc2l6ZSwgMTI3KTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOwogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOwotICAgICAgICAgICAgcCA8IHN0YXJ0cCtlbmQ7ICsrcCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjID0gKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgICAgICAgICAgIGludCBkaWdpdHM7CiAgICAgICAgICAgICBpbnQgYmFzZTsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgKm91dHArKyA9ICcmJzsKICAgICAgICAgICAgICpvdXRwKysgPSAnIyc7Ci0gICAgICAgICAgICBpZiAoKnA8MTApIHsKKyAgICAgICAgICAgIGlmIChjaDwxMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDE7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDI7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDM7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDQ7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDA7CiAgICAgICAgICAgICB9Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA1OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDsKICAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDApIHsKLSAgICAgICAgICAgICAgICBkaWdpdHMgPSA1OwotICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA2OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDA7CiAgICAgICAgICAgICB9CkBAIC02NTIsMTYgKzY0NywxNSBAQAogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDc7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDAwMDA7CiAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgICAgIHdoaWxlIChkaWdpdHMtLT4wKSB7Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9ICcwJyArIGMvYmFzZTsKLSAgICAgICAgICAgICAgICBjICU9IGJhc2U7CisgICAgICAgICAgICAgICAgKm91dHArKyA9ICcwJyArIGNoL2Jhc2U7CisgICAgICAgICAgICAgICAgY2ggJT0gYmFzZTsKICAgICAgICAgICAgICAgICBiYXNlIC89IDEwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKm91dHArKyA9ICc7JzsKICAgICAgICAgfQotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICByZXR1cm4gcmVzdHVwbGU7CiAgICAgfQpAQCAtNjcxLDg3ICs2NjUsNjUgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeV9VTklDT0RFIGhleGRpZ2l0c1tdID0gewotICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLAotICAgICc4JywgJzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnCi19OwotCiBQeU9iamVjdCAqUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCiB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotI2RlZmluZSBJU19TVVJST0dBVEVfUEFJUihwLCBlbmQpIFwKLSAgICAoKnAgPj0gMHhEODAwICYmICpwIDw9IDB4REJGRiAmJiAocCArIDEpIDwgZW5kICYmIFwKLSAgICAgKihwICsgMSkgPj0gMHhEQzAwICYmICoocCArIDEpIDw9IDB4REZGRikKLSNlbHNlCi0jZGVmaW5lIElTX1NVUlJPR0FURV9QQUlSKHAsIGVuZCkgMAotI2VuZGlmCiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwotICAgICAgICBQeV9VTklDT0RFICpvdXRwOworICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRwOwogICAgICAgICBpbnQgcmVzc2l6ZTsKKyAgICAgICAgUHlfVUNTNCBjOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RhcnRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqZWN0KTsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCByZXNzaXplID0gMDsgcCA8IHN0YXJ0cCtlbmQ7ICsrcCkgewotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgaWYgKCpwID49IDB4MDAwMTAwMDApCisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzg7Ci0gICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgIGlmICgqcCA+PSAweDEwMCkgewotICAgICAgICAgICAgICAgIGlmIChJU19TVVJST0dBVEVfUEFJUihwLCBzdGFydHArZW5kKSkgewotICAgICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OwotICAgICAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKKyAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzI7CiAgICAgICAgIH0KLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHJlc3NpemUpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHJlc3NpemUsIDEyNyk7CiAgICAgICAgIGlmIChyZXM9PU5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCBvdXRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICAgICAgICAgIHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgICAgICAgICAgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgKm91dHArKyA9ICdcXCc7Ci0gICAgICAgICAgICBpZiAoSVNfU1VSUk9HQVRFX1BBSVIocCwgc3RhcnRwK2VuZCkpIHsKLSAgICAgICAgICAgICAgICBjID0gKCgqcCAmIDB4M0ZGKSA8PCAxMCkgKyAoKihwICsgMSkgJiAweDNGRikgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjID49IDB4MDAwMTAwMDApIHsKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjI4KSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjI0KSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjIwKSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjE2KSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjEyKSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjgpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjgpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjQpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjApJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTYpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ3UnOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjEyKSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjgpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ3gnOwotICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+NCkmMHhmXTsKLSAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbYyYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+NCkmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbYyYweGZdOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KQEAgLTc1OSw3ICs3MzEsNiBAQAogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0jdW5kZWYgSVNfU1VSUk9HQVRFX1BBSVIKIH0KIAogLyogVGhpcyBoYW5kbGVyIGlzIGRlY2xhcmVkIHN0YXRpYyB1bnRpbCBzb21lb25lIGRlbW9uc3RyYXRlcwpAQCAtNzY5LDEyICs3NDAsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFICpwOwotICAgICAgICBQeV9VTklDT0RFICpzdGFydHA7CiAgICAgICAgIGNoYXIgKm91dHA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc4MiwxNSArNzUyLDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7CiAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMyooZW5kLXN0YXJ0KSk7CiAgICAgICAgIGlmICghcmVzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG91dHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlcyk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydDsgcCA8IHN0YXJ0cCtlbmQ7IHArKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgaWYgKGNoIDwgMHhkODAwIHx8IGNoID4gMHhkZmZmKSB7CiAgICAgICAgICAgICAgICAgLyogTm90IGEgc3Vycm9nYXRlLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKQEAgLTgwOSw3ICs3NzksNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgICAgICBQeV9VTklDT0RFIGNoID0gMDsKKyAgICAgICAgUHlfVUNTNCBjaCA9IDA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQpAQCAtODM2LDcgKzgwNiwxMCBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsICZjaCwgMSwgc3RhcnQrMyk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgc3RhcnQrMyk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwpAQCAtODQ5LDEyICs4MjIsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFICpwOwotICAgICAgICBQeV9VTklDT0RFICpzdGFydHA7CiAgICAgICAgIGNoYXIgKm91dHA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg2MiwxNSArODM0LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7CiAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZW5kLXN0YXJ0KTsKICAgICAgICAgaWYgKCFyZXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgb3V0cCA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzKTsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0OyBwIDwgc3RhcnRwK2VuZDsgcCsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CiAgICAgICAgICAgICBpZiAoY2ggPCAweGRjODAgfHwgY2ggPiAweGRjZmYpIHsKICAgICAgICAgICAgICAgICAvKiBOb3QgYSBVVEYtOGIgc3Vycm9nYXRlLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKQEAgLTg4Niw4ICs4NTgsOSBAQAogICAgICAgICByZXR1cm4gcmVzdHVwbGU7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgY2hbNF07IC8qIGRlY29kZSB1cCB0byA0IGJhZCBieXRlcy4gKi8KKyAgICAgICAgUHlfVUNTMiBjaFs0XTsgLyogZGVjb2RlIHVwIHRvIDQgYmFkIGJ5dGVzLiAqLwogICAgICAgICBpbnQgY29uc3VtZWQgPSAwOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MTIsNyArODg1LDEwIEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgY2gsIGNvbnN1bWVkLCBzdGFydCtjb25zdW1lZCk7CisgICAgICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzJCWVRFX0tJTkQsIGNoLCBjb25zdW1lZCk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHN0ciwgc3RhcnQrY29uc3VtZWQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTEwNDksNyArMTAyNSw3IEBACiAgICAgaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSA9IFB5RGljdF9OZXcoKTsKIAogICAgIGlmIChpbnRlcnAtPmNvZGVjX2Vycm9yX3JlZ2lzdHJ5KSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YobWV0aG9kcykvc2l6ZW9mKG1ldGhvZHNbMF0pOyArK2kpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X0FSUkFZX0xFTkdUSChtZXRob2RzKTsgKytpKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5Q0Z1bmN0aW9uX05ldygmbWV0aG9kc1tpXS5kZWYsIE5VTEwpOwogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIGlmICghZnVuYykKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb21waWxlLmMgYi9QeXRob24vY29tcGlsZS5jCmluZGV4IGQ2ZjY0MGYuLjNjZjcxZWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb21waWxlLmMKKysrIGIvUHl0aG9uL2NvbXBpbGUuYwpAQCAtOTAsNiArOTAsMTMgQEAKICAgICBiYXNpY2Jsb2NrICpmYl9ibG9jazsKIH07CiAKK2VudW0geworICAgIENPTVBJTEVSX1NDT1BFX01PRFVMRSwKKyAgICBDT01QSUxFUl9TQ09QRV9DTEFTUywKKyAgICBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiwKKyAgICBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAorfTsKKwogLyogVGhlIGZvbGxvd2luZyBpdGVtcyBjaGFuZ2Ugb24gZW50cnkgYW5kIGV4aXQgb2YgY29kZSBibG9ja3MuCiAgICBUaGV5IG11c3QgYmUgc2F2ZWQgYW5kIHJlc3RvcmVkIHdoZW4gcmV0dXJuaW5nIHRvIGEgYmxvY2suCiAqLwpAQCAtOTcsNiArMTA0LDkgQEAKICAgICBQeVNURW50cnlPYmplY3QgKnVfc3RlOwogCiAgICAgUHlPYmplY3QgKnVfbmFtZTsKKyAgICBQeU9iamVjdCAqdV9xdWFsbmFtZTsgIC8qIGRvdC1zZXBhcmF0ZWQgcXVhbGlmaWVkIG5hbWUgKGxhenkpICovCisgICAgaW50IHVfc2NvcGVfdHlwZTsKKwogICAgIC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBkaWN0cyB0aGF0IG1hcCBvYmplY3RzIHRvCiAgICAgICAgdGhlIGluZGV4IG9mIHRoZW0gaW4gY29fWFhYLiAgICAgIFRoZSBpbmRleCBpcyB1c2VkIGFzCiAgICAgICAgdGhlIGFyZ3VtZW50IGZvciBvcGNvZGVzIHRoYXQgcmVmZXIgdG8gdGhvc2UgY29sbGVjdGlvbnMuCkBAIC0xMzEsMTAgKzE0MSwxNiBAQAogVGhlIHUgcG9pbnRlciBwb2ludHMgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpbGUgdW5pdHMKIGZvciBlbmNsb3NpbmcgYmxvY2tzIGFyZSBzdG9yZWQgaW4gY19zdGFjay4gICAgIFRoZSB1IGFuZCBjX3N0YWNrIGFyZQogbWFuYWdlZCBieSBjb21waWxlcl9lbnRlcl9zY29wZSgpIGFuZCBjb21waWxlcl9leGl0X3Njb3BlKCkuCisKK05vdGUgdGhhdCB3ZSBkb24ndCB0cmFjayByZWN1cnNpb24gbGV2ZWxzIGR1cmluZyBjb21waWxhdGlvbiAtIHRoZQordGFzayBvZiBkZXRlY3RpbmcgYW5kIHJlamVjdGluZyBleGNlc3NpdmUgbGV2ZWxzIG9mIG5lc3RpbmcgaXMKK2hhbmRsZWQgYnkgdGhlIHN5bWJvbCBhbmFseXNpcyBwYXNzLgorCiAqLwogCiBzdHJ1Y3QgY29tcGlsZXIgewogICAgIGNvbnN0IGNoYXIgKmNfZmlsZW5hbWU7CisgICAgUHlPYmplY3QgKmNfZmlsZW5hbWVfb2JqOwogICAgIHN0cnVjdCBzeW10YWJsZSAqY19zdDsKICAgICBQeUZ1dHVyZUZlYXR1cmVzICpjX2Z1dHVyZTsgLyogcG9pbnRlciB0byBtb2R1bGUncyBfX2Z1dHVyZV9fICovCiAgICAgUHlDb21waWxlckZsYWdzICpjX2ZsYWdzOwpAQCAtMTQ4LDcgKzE2NCw3IEBACiAgICAgUHlBcmVuYSAqY19hcmVuYTsgICAgICAgICAgICAvKiBwb2ludGVyIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFyZW5hICovCiB9OwogCi1zdGF0aWMgaW50IGNvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqLCBpZGVudGlmaWVyLCB2b2lkICosIGludCk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqLCBpZGVudGlmaWVyLCBpbnQsIHZvaWQgKiwgaW50KTsKIHN0YXRpYyB2b2lkIGNvbXBpbGVyX2ZyZWUoc3RydWN0IGNvbXBpbGVyICopOwogc3RhdGljIGJhc2ljYmxvY2sgKmNvbXBpbGVyX25ld19ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX25leHRfaW5zdHIoc3RydWN0IGNvbXBpbGVyICosIGJhc2ljYmxvY2sgKik7CkBAIC0xNzgsMTIgKzE5NCwxMyBAQAogc3RhdGljIGludCBpbnBsYWNlX2Jpbm9wKHN0cnVjdCBjb21waWxlciAqLCBvcGVyYXRvcl90eSk7CiBzdGF0aWMgaW50IGV4cHJfY29uc3RhbnQoc3RydWN0IGNvbXBpbGVyICosIGV4cHJfdHkpOwogCi1zdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOworc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJncyk7CitzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogCiBzdGF0aWMgUHlDb2RlT2JqZWN0ICphc3NlbWJsZShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50IGFkZE5vbmUpOwogc3RhdGljIFB5T2JqZWN0ICpfX2RvY19fOwpAQCAtMTk1LDE2ICsyMTIsMTcgQEAKIHsKICAgICAvKiBOYW1lIG1hbmdsaW5nOiBfX3ByaXZhdGUgYmVjb21lcyBfY2xhc3NuYW1lX19wcml2YXRlLgogICAgICAgIFRoaXMgaXMgaW5kZXBlbmRlbnQgZnJvbSBob3cgdGhlIG5hbWUgaXMgdXNlZC4gKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpwLCAqbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlkZW50KTsKLSAgICBQeV9VTklDT0RFICpidWZmZXI7Ci0gICAgc2l6ZV90IG5sZW4sIHBsZW47CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBzaXplX3QgbmxlbiwgcGxlbiwgaXByaXY7CisgICAgUHlfVUNTNCBtYXhjaGFyOwogICAgIGlmIChwcml2YXRlb2JqID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhwcml2YXRlb2JqKSB8fAotICAgICAgICBuYW1lID09IE5VTEwgfHwgbmFtZVswXSAhPSAnXycgfHwgbmFtZVsxXSAhPSAnXycpIHsKKyAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgMCkgIT0gJ18nIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIDEpICE9ICdfJykgewogICAgICAgICBQeV9JTkNSRUYoaWRlbnQpOwogICAgICAgICByZXR1cm4gaWRlbnQ7CiAgICAgfQotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwcml2YXRlb2JqKTsKLSAgICBubGVuID0gUHlfVU5JQ09ERV9zdHJsZW4obmFtZSk7CisgICAgbmxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlkZW50KTsKKyAgICBwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJpdmF0ZW9iaik7CiAgICAgLyogRG9uJ3QgbWFuZ2xlIF9faWRfXyBvciBuYW1lcyB3aXRoIGRvdHMuCiAKICAgICAgICBUaGUgb25seSB0aW1lIGEgbmFtZSB3aXRoIGEgZG90IGNhbiBvY2N1ciBpcyB3aGVuCkBAIC0yMTQsMzIgKzIzMiw0NCBAQAogICAgICAgIFRPRE8oamh5bHRvbik6IERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gc3VwcG9ydAogICAgICAgIG1hbmdsaW5nIG9mIHRoZSBtb2R1bGUgbmFtZSwgZS5nLiBfX00uWC4KICAgICAqLwotICAgIGlmICgobmFtZVtubGVuLTFdID09ICdfJyAmJiBuYW1lW25sZW4tMl0gPT0gJ18nKQotICAgICAgICB8fCBQeV9VTklDT0RFX3N0cmNocihuYW1lLCAnLicpKSB7CisgICAgaWYgKChQeVVuaWNvZGVfUkVBRF9DSEFSKGlkZW50LCBubGVuLTEpID09ICdfJyAmJgorICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgbmxlbi0yKSA9PSAnXycpIHx8CisgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcihpZGVudCwgJy4nLCAwLCBubGVuLCAxKSAhPSAtMSkgewogICAgICAgICBQeV9JTkNSRUYoaWRlbnQpOwogICAgICAgICByZXR1cm4gaWRlbnQ7IC8qIERvbid0IG1hbmdsZSBfX3doYXRldmVyX18gKi8KICAgICB9CiAgICAgLyogU3RyaXAgbGVhZGluZyB1bmRlcnNjb3JlcyBmcm9tIGNsYXNzIG5hbWUgKi8KLSAgICB3aGlsZSAoKnAgPT0gJ18nKQotICAgICAgICBwKys7Ci0gICAgaWYgKCpwID09IDApIHsKKyAgICBpcHJpdiA9IDA7CisgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEX0NIQVIocHJpdmF0ZW9iaiwgaXByaXYpID09ICdfJykKKyAgICAgICAgaXByaXYrKzsKKyAgICBpZiAoaXByaXYgPT0gcGxlbikgewogICAgICAgICBQeV9JTkNSRUYoaWRlbnQpOwogICAgICAgICByZXR1cm4gaWRlbnQ7IC8qIERvbid0IG1hbmdsZSBpZiBjbGFzcyBpcyBqdXN0IHVuZGVyc2NvcmVzICovCiAgICAgfQotICAgIHBsZW4gPSBQeV9VTklDT0RFX3N0cmxlbihwKTsKKyAgICBwbGVuIC09IGlwcml2OwogCiAgICAgYXNzZXJ0KDEgPD0gUFlfU1NJWkVfVF9NQVggLSBubGVuKTsKICAgICBhc3NlcnQoMSArIG5sZW4gPD0gUFlfU1NJWkVfVF9NQVggLSBwbGVuKTsKIAotICAgIGlkZW50ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDEgKyBubGVuICsgcGxlbik7Ci0gICAgaWYgKCFpZGVudCkKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGlkZW50KTsKKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHByaXZhdGVvYmopID4gbWF4Y2hhcikKKyAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShwcml2YXRlb2JqKTsKKworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcoMSArIG5sZW4gKyBwbGVuLCBtYXhjaGFyKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgLyogaWRlbnQgPSAiXyIgKyBwWzpwbGVuXSArIG5hbWUgIyBpLmUuIDErcGxlbitubGVuIGJ5dGVzICovCi0gICAgYnVmZmVyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaWRlbnQpOwotICAgIGJ1ZmZlclswXSA9ICdfJzsKLSAgICBQeV9VTklDT0RFX3N0cm5jcHkoYnVmZmVyKzEsIHAsIHBsZW4pOwotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZmZlcisxK3BsZW4sIG5hbWUpOwotICAgIHJldHVybiBpZGVudDsKKyAgICAvKiBpZGVudCA9ICJfIiArIHByaXZbaXByaXY6XSArIGlkZW50ICMgaS5lLiAxK3BsZW4rbmxlbiBieXRlcyAqLworICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXN1bHQpLCBQeVVuaWNvZGVfREFUQShyZXN1bHQpLCAwLCAnXycpOworICAgIGlmIChQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMocmVzdWx0LCAxLCBwcml2YXRlb2JqLCBpcHJpdiwgcGxlbikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyhyZXN1bHQsIHBsZW4rMSwgaWRlbnQsIDAsIG5sZW4pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGludApAQCAtMjcyLDYgKzMwMiw5IEBACiAgICAgaWYgKCFjb21waWxlcl9pbml0KCZjKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgYy5jX2ZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOworICAgIGlmICghYy5jX2ZpbGVuYW1lX29iaikKKyAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGMuY19hcmVuYSA9IGFyZW5hOwogICAgIGMuY19mdXR1cmUgPSBQeUZ1dHVyZV9Gcm9tQVNUKG1vZCwgZmlsZW5hbWUpOwogICAgIGlmIChjLmNfZnV0dXJlID09IE5VTEwpCkBAIC0zMjQsNiArMzU3LDggQEAKICAgICAgICAgUHlTeW10YWJsZV9GcmVlKGMtPmNfc3QpOwogICAgIGlmIChjLT5jX2Z1dHVyZSkKICAgICAgICAgUHlPYmplY3RfRnJlZShjLT5jX2Z1dHVyZSk7CisgICAgaWYgKGMtPmNfZmlsZW5hbWVfb2JqKQorICAgICAgICBQeV9ERUNSRUYoYy0+Y19maWxlbmFtZV9vYmopOwogICAgIFB5X0RFQ1JFRihjLT5jX3N0YWNrKTsKIH0KIApAQCAtNDU4LDYgKzQ5Myw3IEBACiAgICAgfQogICAgIFB5X0NMRUFSKHUtPnVfc3RlKTsKICAgICBQeV9DTEVBUih1LT51X25hbWUpOworICAgIFB5X0NMRUFSKHUtPnVfcXVhbG5hbWUpOwogICAgIFB5X0NMRUFSKHUtPnVfY29uc3RzKTsKICAgICBQeV9DTEVBUih1LT51X25hbWVzKTsKICAgICBQeV9DTEVBUih1LT51X3Zhcm5hbWVzKTsKQEAgLTQ2OCw4ICs1MDQsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGlkZW50aWZpZXIgbmFtZSwgdm9pZCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubykKK2NvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqYywgaWRlbnRpZmllciBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgaW50IHNjb3BlX3R5cGUsIHZvaWQgKmtleSwgaW50IGxpbmVubykKIHsKICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqdTsKIApAQCAtNDgwLDYgKzUxNiw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBtZW1zZXQodSwgMCwgc2l6ZW9mKHN0cnVjdCBjb21waWxlcl91bml0KSk7CisgICAgdS0+dV9zY29wZV90eXBlID0gc2NvcGVfdHlwZTsKICAgICB1LT51X2FyZ2NvdW50ID0gMDsKICAgICB1LT51X2t3b25seWFyZ2NvdW50ID0gMDsKICAgICB1LT51X3N0ZSA9IFB5U3ltdGFibGVfTG9va3VwKGMtPmNfc3QsIGtleSk7CkBAIC01NjcsNiArNjA0LDU5IEBACiAKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKHN0cnVjdCBjb21waWxlciAqYykKK3sKKyAgICBQeV9zc2l6ZV90IHN0YWNrX3NpemUsIGk7CisgICAgX1B5X3N0YXRpY19zdHJpbmcoZG90LCAiLiIpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKGxvY2FscywgIjxsb2NhbHM+Iik7CisgICAgc3RydWN0IGNvbXBpbGVyX3VuaXQgKnU7CisgICAgUHlPYmplY3QgKmNhcHN1bGUsICpuYW1lLCAqc2VxLCAqZG90X3N0ciwgKmxvY2Fsc19zdHI7CisKKyAgICB1ID0gYy0+dTsKKyAgICBpZiAodS0+dV9xdWFsbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1LT51X3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIHUtPnVfcXVhbG5hbWU7CisgICAgfQorCisgICAgc2VxID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoc2VxID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RhY2tfc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShjLT5jX3N0YWNrKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3RhY2tfc2l6ZTsgaSsrKSB7CisgICAgICAgIGNhcHN1bGUgPSBQeUxpc3RfR0VUX0lURU0oYy0+Y19zdGFjaywgaSk7CisgICAgICAgIHUgPSAoc3RydWN0IGNvbXBpbGVyX3VuaXQgKilQeUNhcHN1bGVfR2V0UG9pbnRlcihjYXBzdWxlLCBDT01QSUxFUl9DQVBTVUxFX05BTUVfQ09NUElMRVJfVU5JVCk7CisgICAgICAgIGFzc2VydCh1KTsKKyAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VxLCB1LT51X25hbWUpKQorICAgICAgICAgICAgZ290byBfZXJyb3I7CisgICAgICAgIGlmICh1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIGxvY2Fsc19zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmbG9jYWxzKTsKKyAgICAgICAgICAgIGlmIChsb2NhbHNfc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBfZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZXEsIGxvY2Fsc19zdHIpKQorICAgICAgICAgICAgICAgIGdvdG8gX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIHUgPSBjLT51OworICAgIGlmIChQeUxpc3RfQXBwZW5kKHNlcSwgdS0+dV9uYW1lKSkKKyAgICAgICAgZ290byBfZXJyb3I7CisgICAgZG90X3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZkb3QpOworICAgIGlmIChkb3Rfc3RyID09IE5VTEwpCisgICAgICAgIGdvdG8gX2Vycm9yOworICAgIG5hbWUgPSBQeVVuaWNvZGVfSm9pbihkb3Rfc3RyLCBzZXEpOworICAgIFB5X0RFQ1JFRihzZXEpOworICAgIHUtPnVfcXVhbG5hbWUgPSBuYW1lOworICAgIFB5X1hJTkNSRUYobmFtZSk7CisgICAgcmV0dXJuIG5hbWU7CisKK19lcnJvcjoKKyAgICBQeV9YREVDUkVGKHNlcSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIEFsbG9jYXRlIGEgbmV3IGJsb2NrIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIGl0LgogICAgUmV0dXJucyBOVUxMIG9uIGVycm9yLgogKi8KQEAgLTc3Nyw3ICs4NjcsOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIFlJRUxEX1ZBTFVFOgogICAgICAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgY2FzZSBZSUVMRF9GUk9NOgorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIFBPUF9CTE9DSzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIFBPUF9FWENFUFQ6CkBAIC04NjMsOSArOTU0LDkgQEAKICAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVzoKICAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpLTI7CiAgICAgICAgIGNhc2UgTUFLRV9GVU5DVElPTjoKLSAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAgICAgcmV0dXJuIC0xIC1OQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7CiAgICAgICAgIGNhc2UgTUFLRV9DTE9TVVJFOgotICAgICAgICAgICAgcmV0dXJuIC0xIC0gTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAgICAgcmV0dXJuIC0yIC0gTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwogI3VuZGVmIE5BUkdTCiAgICAgICAgIGNhc2UgQlVJTERfU0xJQ0U6CiAgICAgICAgICAgICBpZiAob3BhcmcgPT0gMykKQEAgLTExOTUsNyArMTI4Niw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogVXNlIDAgZm9yIGZpcnN0bGluZW5vIGluaXRpYWxseSwgd2lsbCBmaXh1cCBpbiBhc3NlbWJsZSgpLiAqLwotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbW9kdWxlLCBtb2QsIDApKQorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbW9kdWxlLCBDT01QSUxFUl9TQ09QRV9NT0RVTEUsIG1vZCwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHN3aXRjaCAobW9kLT5raW5kKSB7CiAgICAgY2FzZSBNb2R1bGVfa2luZDoKQEAgLTEyNzEsMTEgKzEzNjIsMTUgQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgaW50IGFyZ3MpCitjb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBpbnQgYXJncywgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIGludCBpLCBmcmVlID0gUHlDb2RlX0dldE51bUZyZWUoY28pOworICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMKQorICAgICAgICBxdWFsbmFtZSA9IGNvLT5jb19uYW1lOworCiAgICAgaWYgKGZyZWUgPT0gMCkgewogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7CiAgICAgICAgIEFERE9QX0koYywgTUFLRV9GVU5DVElPTiwgYXJncyk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTEzMTIsNiArMTQwNyw3IEBACiAgICAgfQogICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGZyZWUpOwogICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwogICAgIEFERE9QX0koYywgTUFLRV9DTE9TVVJFLCBhcmdzKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTE0NTcsNyArMTU1Myw3IEBACiBjb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwotICAgIFB5T2JqZWN0ICpmaXJzdF9jb25zdCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqZmlyc3RfY29uc3QgPSBQeV9Ob25lOwogICAgIGFyZ3VtZW50c190eSBhcmdzID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOwogICAgIGV4cHJfdHkgcmV0dXJucyA9IHMtPnYuRnVuY3Rpb25EZWYucmV0dXJuczsKICAgICBhc2RsX3NlcSogZGVjb3MgPSBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0OwpAQCAtMTQ4Myw3ICsxNTc5LDggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYXNzZXJ0KChudW1fYW5ub3RhdGlvbnMgJiAweEZGRkYpID09IG51bV9hbm5vdGF0aW9ucyk7CiAKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuRnVuY3Rpb25EZWYubmFtZSwgKHZvaWQgKilzLAorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sICh2b2lkICopcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNTA1LDE0ICsxNjAyLDE5IEBACiAgICAgICAgIFZJU0lUX0lOX1NDT1BFKGMsIHN0bXQsIHN0KTsKICAgICB9CiAgICAgY28gPSBhc3NlbWJsZShjLCAxKTsKKyAgICBxdWFsbmFtZSA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOwogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7Ci0gICAgaWYgKGNvID09IE5VTEwpCisgICAgaWYgKHF1YWxuYW1lID09IE5VTEwgfHwgY28gPT0gTlVMTCkgeworICAgICAgICBQeV9YREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgUHlfWERFQ1JFRihjbyk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7CiAgICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKICAgICBhcmdsZW5ndGggfD0gbnVtX2Fubm90YXRpb25zIDw8IDE2OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIC8qIGRlY29yYXRvcnMgKi8KQEAgLTE1NDcsNyArMTY0OSw4IEBACiAgICAgKi8KIAogICAgIC8qIDEuIGNvbXBpbGUgdGhlIGNsYXNzIGJvZHkgaW50byBhIGNvZGUgb2JqZWN0ICovCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkNsYXNzRGVmLm5hbWUsICh2b2lkICopcywgcy0+bGluZW5vKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuQ2xhc3NEZWYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTVBJTEVSX1NDT1BFX0NMQVNTLCAodm9pZCAqKXMsIHMtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIHRoaXMgYmxvY2sgcmVwcmVzZW50cyB3aGF0IHdlIGRvIGluIHRoZSBuZXcgc2NvcGUgKi8KICAgICB7CkBAIC0xNTc3LDYgKzE2ODAsMjEgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAvKiBzdG9yZSB0aGUgX19xdWFsbmFtZV9fICovCisgICAgICAgIHN0ciA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOworICAgICAgICBpZiAoIXN0cikgeworICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgc3RyLCBjb25zdHMpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fcXVhbG5hbWVfXyIpOworICAgICAgICBpZiAoIXN0ciB8fCAhY29tcGlsZXJfbmFtZW9wKGMsIHN0ciwgU3RvcmUpKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIC8qIGNvbXBpbGUgdGhlIGJvZHkgcHJvcGVyICovCiAgICAgICAgIGlmICghY29tcGlsZXJfYm9keShjLCBzLT52LkNsYXNzRGVmLmJvZHkpKSB7CiAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMTYxMyw3ICsxNzMxLDcgQEAKICAgICBBRERPUChjLCBMT0FEX0JVSUxEX0NMQVNTKTsKIAogICAgIC8qIDMuIGxvYWQgYSBmdW5jdGlvbiAob3IgY2xvc3VyZSkgbWFkZSBmcm9tIHRoZSBjb2RlIG9iamVjdCAqLwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCAwLCBOVUxMKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgLyogNC4gbG9hZCBjbGFzcyBuYW1lICovCkBAIC0xNjY0LDYgKzE3ODIsNyBAQAogY29tcGlsZXJfbGFtYmRhKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewogICAgIFB5Q29kZU9iamVjdCAqY287CisgICAgUHlPYmplY3QgKnF1YWxuYW1lOwogICAgIHN0YXRpYyBpZGVudGlmaWVyIG5hbWU7CiAgICAgaW50IGt3X2RlZmF1bHRfY291bnQgPSAwLCBhcmdsZW5ndGg7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBlLT52LkxhbWJkYS5hcmdzOwpAQCAtMTY4Myw3ICsxODAyLDggQEAKICAgICB9CiAgICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQogICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgKHZvaWQgKillLCBlLT5saW5lbm8pKQorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogTWFrZSBOb25lIHRoZSBmaXJzdCBjb25zdGFudCwgc28gdGhlIGxhbWJkYSBjYW4ndCBoYXZlIGEKQEAgLTE3MDEsMTMgKzE4MjEsMTUgQEAKICAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKICAgICB9CiAgICAgY28gPSBhc3NlbWJsZShjLCAxKTsKKyAgICBxdWFsbmFtZSA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOwogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7Ci0gICAgaWYgKGNvID09IE5VTEwpCisgICAgaWYgKHF1YWxuYW1lID09IE5VTEwgfHwgY28gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwogICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7Ci0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xOTE2LDcgKzIwMzgsMTMgQEAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBib2R5KTsKICAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEZJTkFMTFlfVFJZLCBib2R5KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RmluYWxseS5ib2R5KTsKKyAgICBpZiAocy0+di5UcnkuaGFuZGxlcnMgJiYgYXNkbF9zZXFfTEVOKHMtPnYuVHJ5LmhhbmRsZXJzKSkgeworICAgICAgICBpZiAoIWNvbXBpbGVyX3RyeV9leGNlcHQoYywgcykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeS5ib2R5KTsKKyAgICB9CiAgICAgQURET1AoYywgUE9QX0JMT0NLKTsKICAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEZJTkFMTFlfVFJZLCBib2R5KTsKIApAQCAtMTkyNCw3ICsyMDUyLDcgQEAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBlbmQpOwogICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGVuZCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUZpbmFsbHkuZmluYWxib2R5KTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnkuZmluYWxib2R5KTsKICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CiAgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX0VORCwgZW5kKTsKIApAQCAtMTk3OCwxNSArMjEwNiwxNSBAQAogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGJvZHkpOwogICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCBib2R5KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0LmJvZHkpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeS5ib2R5KTsKICAgICBBRERPUChjLCBQT1BfQkxPQ0spOwogICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCBib2R5KTsKICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgb3JlbHNlKTsKLSAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzKTsKKyAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuVHJ5LmhhbmRsZXJzKTsKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgZXhjZXB0aGFuZGxlcl90eSBoYW5kbGVyID0gKGV4Y2VwdGhhbmRsZXJfdHkpYXNkbF9zZXFfR0VUKAotICAgICAgICAgICAgcy0+di5UcnlFeGNlcHQuaGFuZGxlcnMsIGkpOworICAgICAgICAgICAgcy0+di5UcnkuaGFuZGxlcnMsIGkpOwogICAgICAgICBpZiAoIWhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci50eXBlICYmIGkgPCBuLTEpCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgImRlZmF1bHQgJ2V4Y2VwdDonIG11c3QgYmUgbGFzdCIpOwogICAgICAgICBjLT51LT51X2xpbmVub19zZXQgPSAwOwpAQCAtMjA3MywxMiArMjIwMSwyMSBAQAogICAgIH0KICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgb3JlbHNlKTsKLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnlFeGNlcHQub3JlbHNlKTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Ucnkub3JlbHNlKTsKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBlbmQpOwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl90cnkoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpIHsKKyAgICBpZiAocy0+di5UcnkuZmluYWxib2R5ICYmIGFzZGxfc2VxX0xFTihzLT52LlRyeS5maW5hbGJvZHkpKQorICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2ZpbmFsbHkoYywgcyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2V4Y2VwdChjLCBzKTsKK30KKworCitzdGF0aWMgaW50CiBjb21waWxlcl9pbXBvcnRfYXMoc3RydWN0IGNvbXBpbGVyICpjLCBpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXIgYXNuYW1lKQogewogICAgIC8qIFRoZSBJTVBPUlRfTkFNRSBvcGNvZGUgd2FzIGFscmVhZHkgZ2VuZXJhdGVkLiAgVGhpcyBmdW5jdGlvbgpAQCAtMjA4NywyMiArMjIyNCwyNyBAQAogICAgICAgIElmIHRoZXJlIGlzIGEgZG90IGluIG5hbWUsIHdlIG5lZWQgdG8gc3BsaXQgaXQgYW5kIGVtaXQgYQogICAgICAgIExPQURfQVRUUiBmb3IgZWFjaCBuYW1lLgogICAgICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3JjID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSk7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoc3JjLCAnLicpOwotICAgIGlmIChkb3QpIHsKKyAgICBQeV9zc2l6ZV90IGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSksIDEpOworICAgIGlmIChkb3QgPT0gLTIpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZG90ICE9IC0xKSB7CiAgICAgICAgIC8qIENvbnN1bWUgdGhlIGJhc2UgbW9kdWxlIG5hbWUgdG8gZ2V0IHRoZSBmaXJzdCBhdHRyaWJ1dGUgKi8KLSAgICAgICAgc3JjID0gZG90ICsgMTsKLSAgICAgICAgd2hpbGUgKGRvdCkgewotICAgICAgICAgICAgLyogTkIgc3JjIGlzIG9ubHkgZGVmaW5lZCB3aGVuIGRvdCAhPSBOVUxMICovCisgICAgICAgIFB5X3NzaXplX3QgcG9zID0gZG90ICsgMTsKKyAgICAgICAgd2hpbGUgKGRvdCAhPSAtMSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmF0dHI7Ci0gICAgICAgICAgICBkb3QgPSBQeV9VTklDT0RFX3N0cmNocihzcmMsICcuJyk7Ci0gICAgICAgICAgICBhdHRyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90ID8gZG90IC0gc3JjIDogUHlfVU5JQ09ERV9zdHJsZW4oc3JjKSk7CisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSksIDEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBhdHRyID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG90ICE9IC0xKSA/IGRvdCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSk7CiAgICAgICAgICAgICBpZiAoIWF0dHIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0FUVFIsIGF0dHIsIG5hbWVzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKLSAgICAgICAgICAgIHNyYyA9IGRvdCArIDE7CisgICAgICAgICAgICBwb3MgPSBkb3QgKyAxOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBjb21waWxlcl9uYW1lb3AoYywgYXNuYW1lLCBTdG9yZSk7CkBAIC0yMTQxLDEzICsyMjgzLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZGVudGlmaWVyIHRtcCA9IGFsaWFzLT5uYW1lOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqYmFzZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFsaWFzLT5uYW1lKTsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKmRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKGJhc2UsICcuJyk7Ci0gICAgICAgICAgICBpZiAoZG90KQotICAgICAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QgLSBiYXNlKTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKAorICAgICAgICAgICAgICAgIGFsaWFzLT5uYW1lLCAnLicsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGFsaWFzLT5uYW1lKSwgMSk7CisgICAgICAgICAgICBpZiAoZG90ICE9IC0xKQorICAgICAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWxpYXMtPm5hbWUsIDAsIGRvdCk7CiAgICAgICAgICAgICByID0gY29tcGlsZXJfbmFtZW9wKGMsIHRtcCwgU3RvcmUpOwotICAgICAgICAgICAgaWYgKGRvdCkgeworICAgICAgICAgICAgaWYgKGRvdCAhPSAtMSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFyKQpAQCAtMjIxMCw3ICsyMzUxLDcgQEAKICAgICAgICAgYWxpYXNfdHkgYWxpYXMgPSAoYWxpYXNfdHkpYXNkbF9zZXFfR0VUKHMtPnYuSW1wb3J0RnJvbS5uYW1lcywgaSk7CiAgICAgICAgIGlkZW50aWZpZXIgc3RvcmVfbmFtZTsKIAotICAgICAgICBpZiAoaSA9PSAwICYmICpQeVVuaWNvZGVfQVNfVU5JQ09ERShhbGlhcy0+bmFtZSkgPT0gJyonKSB7CisgICAgICAgIGlmIChpID09IDAgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihhbGlhcy0+bmFtZSwgMCkgPT0gJyonKSB7CiAgICAgICAgICAgICBhc3NlcnQobiA9PSAxKTsKICAgICAgICAgICAgIEFERE9QKGMsIElNUE9SVF9TVEFSKTsKICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtMjMyNSwxMCArMjQ2Niw4IEBACiAgICAgICAgIH0KICAgICAgICAgQURET1BfSShjLCBSQUlTRV9WQVJBUkdTLCBuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUcnlFeGNlcHRfa2luZDoKLSAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9leGNlcHQoYywgcyk7Ci0gICAgY2FzZSBUcnlGaW5hbGx5X2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl90cnlfZmluYWxseShjLCBzKTsKKyAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5KGMsIHMpOwogICAgIGNhc2UgQXNzZXJ0X2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9hc3NlcnQoYywgcyk7CiAgICAgY2FzZSBJbXBvcnRfa2luZDoKQEAgLTIzNTksNyArMjQ5OCw3IEBACiAgICAgY2FzZSBDb250aW51ZV9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfY29udGludWUoYyk7CiAgICAgY2FzZSBXaXRoX2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl93aXRoKGMsIHMpOworICAgICAgICByZXR1cm4gY29tcGlsZXJfd2l0aChjLCBzLCAwKTsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0yNTI2LDcgKzI2NjUsNyBAQAogICAgIH0KIAogICAgIC8qIFhYWCBMZWF2ZSBhc3NlcnQgaGVyZSwgYnV0IGhhbmRsZSBfX2RvY19fIGFuZCB0aGUgbGlrZSBiZXR0ZXIgKi8KLSAgICBhc3NlcnQoc2NvcGUgfHwgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSlbMF0gPT0gJ18nKTsKKyAgICBhc3NlcnQoc2NvcGUgfHwgUHlVbmljb2RlX1JFQURfQ0hBUihuYW1lLCAwKSA9PSAnXycpOwogCiAgICAgc3dpdGNoIChvcHR5cGUpIHsKICAgICBjYXNlIE9QX0RFUkVGOgpAQCAtMjkwNCwxMSArMzA0MywxMyBAQAogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwogICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gTlVMTDsKIAogICAgIG91dGVybW9zdF9pdGVyID0gKChjb21wcmVoZW5zaW9uX3R5KQogICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCAwKSktPml0ZXI7CiAKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsICh2b2lkICopZSwgZS0+bGluZW5vKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAodHlwZSAhPSBDT01QX0dFTkVYUCkgewpAQCAtMjk0MSwxMiArMzA4MiwxNCBAQAogICAgIH0KIAogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CisgICAgcXVhbG5hbWUgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwotICAgIGlmIChjbyA9PSBOVUxMKQorICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMIHx8IGNvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoIWNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCkpCisgICAgaWYgKCFjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDAsIHF1YWxuYW1lKSkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKICAgICBWSVNJVChjLCBleHByLCBvdXRlcm1vc3RfaXRlcik7CkBAIC0yOTU2LDYgKzMwOTksNyBAQAogZXJyb3JfaW5fc2NvcGU6CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKIGVycm9yOgorICAgIFB5X1hERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X1hERUNSRUYoY28pOwogICAgIHJldHVybiAwOwogfQpAQCAtMzA0OSw4ICszMTkzLDcgQEAKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52LlN0ci5zKTsKICAgICBjYXNlIE5hbWVfa2luZDoKICAgICAgICAgLyogb3B0aW1pemUgYXdheSBuYW1lcyB0aGF0IGNhbid0IGJlIHJlYXNzaWduZWQgKi8KLSAgICAgICAgaWQgPSBQeUJ5dGVzX0FTX1NUUklORygKLSAgICAgICAgICAgIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhlLT52Lk5hbWUuaWQsIE5VTEwpKTsKKyAgICAgICAgaWQgPSBQeVVuaWNvZGVfQXNVVEY4KGUtPnYuTmFtZS5pZCk7CiAgICAgICAgIGlmIChzdHJjbXAoaWQsICJUcnVlIikgPT0gMCkgcmV0dXJuIDE7CiAgICAgICAgIGlmIChzdHJjbXAoaWQsICJGYWxzZSIpID09IDApIHJldHVybiAwOwogICAgICAgICBpZiAoc3RyY21wKGlkLCAiTm9uZSIpID09IDApIHJldHVybiAwOwpAQCAtMzA4Niw5ICszMjI5LDEwIEBACiAgICAgICAgZXhpdCgqZXhjKQogICovCiBzdGF0aWMgaW50Ci1jb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQorY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcywgaW50IHBvcykKIHsKICAgICBiYXNpY2Jsb2NrICpibG9jaywgKmZpbmFsbHk7CisgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzZGxfc2VxX0dFVChzLT52LldpdGguaXRlbXMsIHBvcyk7CiAKICAgICBhc3NlcnQocy0+a2luZCA9PSBXaXRoX2tpbmQpOwogCkBAIC0zMDk4LDcgKzMyNDIsNyBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8qIEV2YWx1YXRlIEVYUFIgKi8KLSAgICBWSVNJVChjLCBleHByLCBzLT52LldpdGguY29udGV4dF9leHByKTsKKyAgICBWSVNJVChjLCBleHByLCBpdGVtLT5jb250ZXh0X2V4cHIpOwogICAgIEFERE9QX0pSRUwoYywgU0VUVVBfV0lUSCwgZmluYWxseSk7CiAKICAgICAvKiBTRVRVUF9XSVRIIHB1c2hlcyBhIGZpbmFsbHkgYmxvY2suICovCkBAIC0zMTA3LDE2ICszMjUxLDIwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChzLT52LldpdGgub3B0aW9uYWxfdmFycykgewotICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LldpdGgub3B0aW9uYWxfdmFycyk7CisgICAgaWYgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgaXRlbS0+b3B0aW9uYWxfdmFycyk7CiAgICAgfQogICAgIGVsc2UgewogICAgIC8qIERpc2NhcmQgcmVzdWx0IGZyb20gY29udGV4dC5fX2VudGVyX18oKSAqLwogICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKICAgICB9CiAKLSAgICAvKiBCTE9DSyBjb2RlICovCi0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuV2l0aC5ib2R5KTsKKyAgICBwb3MrKzsKKyAgICBpZiAocG9zID09IGFzZGxfc2VxX0xFTihzLT52LldpdGguaXRlbXMpKQorICAgICAgICAvKiBCTE9DSyBjb2RlICovCisgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LldpdGguYm9keSkKKyAgICBlbHNlIGlmICghY29tcGlsZXJfd2l0aChjLCBzLCBwb3MpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBFbmQgb2YgdHJ5IGJsb2NrOyBzdGFydCB0aGUgZmluYWxseSBibG9jayAqLwogICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CkBAIC0zMjAzLDYgKzMzNTEsMTQgQEAKICAgICAgICAgfQogICAgICAgICBBRERPUChjLCBZSUVMRF9WQUxVRSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CisgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBvdXRzaWRlIGZ1bmN0aW9uIik7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGRGcm9tLnZhbHVlKTsKKyAgICAgICAgQURET1AoYywgR0VUX0lURVIpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbXBhcmUoYywgZSk7CiAgICAgY2FzZSBDYWxsX2tpbmQ6CkBAIC0zMzg1LDcgKzM1NDEsNyBAQAogc3RhdGljIGludAogY29tcGlsZXJfZXJyb3Ioc3RydWN0IGNvbXBpbGVyICpjLCBjb25zdCBjaGFyICplcnJzdHIpCiB7Ci0gICAgUHlPYmplY3QgKmxvYywgKmZpbGVuYW1lOworICAgIFB5T2JqZWN0ICpsb2M7CiAgICAgUHlPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEw7CiAKICAgICBsb2MgPSBQeUVycl9Qcm9ncmFtVGV4dChjLT5jX2ZpbGVuYW1lLCBjLT51LT51X2xpbmVubyk7CkBAIC0zMzkzLDE2ICszNTQ5LDcgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBsb2MgPSBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoYy0+Y19maWxlbmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjLT5jX2ZpbGVuYW1lKTsKLSAgICAgICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgZmlsZW5hbWUgPSBQeV9Ob25lOwotICAgIH0KLSAgICB1ID0gUHlfQnVpbGRWYWx1ZSgiKE5paU8pIiwgZmlsZW5hbWUsIGMtPnUtPnVfbGluZW5vLAorICAgIHUgPSBQeV9CdWlsZFZhbHVlKCIoT2lpTykiLCBjLT5jX2ZpbGVuYW1lX29iaiwgYy0+dS0+dV9saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgYy0+dS0+dV9jb2xfb2Zmc2V0LCBsb2MpOwogICAgIGlmICghdSkKICAgICAgICAgZ290byBleGl0OwpAQCAtMzk1MSw3ICs0MDk4LDYgQEAKICAgICBQeU9iamVjdCAqY29uc3RzID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp2YXJuYW1lcyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZyZWV2YXJzID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VsbHZhcnMgPSBOVUxMOwpAQCAtMzk3NSwxMCArNDEyMSw2IEBACiAgICAgZnJlZXZhcnMgPSBkaWN0X2tleXNfaW5vcmRlcihjLT51LT51X2ZyZWV2YXJzLCBQeVR1cGxlX1NpemUoY2VsbHZhcnMpKTsKICAgICBpZiAoIWZyZWV2YXJzKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjLT5jX2ZpbGVuYW1lKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICBnb3RvIGVycm9yOwotCiAgICAgbmxvY2FscyA9IFB5RGljdF9TaXplKGMtPnUtPnVfdmFybmFtZXMpOwogICAgIGZsYWdzID0gY29tcHV0ZV9jb2RlX2ZsYWdzKGMpOwogICAgIGlmIChmbGFncyA8IDApCkBAIC0zOTk4LDE0ICs0MTQwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIG5sb2NhbHMsIHN0YWNrZGVwdGgoYyksIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICBieXRlY29kZSwgY29uc3RzLCBuYW1lcywgdmFybmFtZXMsCiAgICAgICAgICAgICAgICAgICAgIGZyZWV2YXJzLCBjZWxsdmFycywKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGMtPnUtPnVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgYy0+Y19maWxlbmFtZV9vYmosIGMtPnUtPnVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgYS0+YV9sbm90YWIpOwogIGVycm9yOgogICAgIFB5X1hERUNSRUYoY29uc3RzKTsKICAgICBQeV9YREVDUkVGKG5hbWVzKTsKICAgICBQeV9YREVDUkVGKHZhcm5hbWVzKTsKLSAgICBQeV9YREVDUkVGKGZpbGVuYW1lKTsKICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgIFB5X1hERUNSRUYoZnJlZXZhcnMpOwogICAgIFB5X1hERUNSRUYoY2VsbHZhcnMpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbmR2YXIuaCBiL1B5dGhvbi9jb25kdmFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU2YmQ3NAotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTAsMCArMSwzOTAgQEAKKy8qIAorICogUG9ydGFibGUgY29uZGl0aW9uIHZhcmlhYmxlIHN1cHBvcnQgZm9yIHdpbmRvd3MgYW5kIHB0aHJlYWRzLgorICogRXZlcnl0aGluZyBpcyBpbmxpbmUsIHRoaXMgaGVhZGVyIGNhbiBiZSBpbmNsdWRlZCB3aGVyZSBuZWVkZWQuCisgKgorICogQVBJcyBnZW5lcmFsbHkgcmV0dXJuIDAgb24gc3VjY2VzcyBhbmQgbm9uLXplcm8gb24gZXJyb3IsCisgKiBhbmQgdGhlIGNhbGxlciBuZWVkcyB0byB1c2UgaXRzIHBsYXRmb3JtJ3MgZXJyb3IgbWVjaGFuaXNtIHRvCisgKiBkaXNjb3ZlciB0aGUgZXJyb3IgKGVycm5vLCBvciBHZXRMYXN0RXJyb3IoKSkKKyAqCisgKiBOb3RlIHRoYXQgc29tZSBpbXBsZW1lbnRhdGlvbnMgY2Fubm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gYQorICogY29uZGl0aW9uIHZhcmlhYmxlIHdhaXQgdGltZS1vdXQgYW5kIHN1Y2Nlc3NmdWwgd2FpdC4gTW9zdCBvZnRlbgorICogdGhlIGRpZmZlcmVuY2UgaXMgbW9vdCBhbnl3YXkgc2luY2UgdGhlIHdhaXQgY29uZGl0aW9uIG11c3QgYmUKKyAqIHJlLWNoZWNrZWQuCisgKiBQeUNPTkRfVElNRURXQUlULCBpbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgbmVnYXRpdmUgb24gZXJyb3IsCisgKiB0aHVzIHJldHVybnMgMCBvbiByZWd1bGFyIHN1Y2Nlc3MsIDEgb24gdGltZW91dAorICogb3IgMiBpZiBpdCBjYW4ndCB0ZWxsLgorICoKKyAqIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gY2F2ZWF0cyB3aXRoIHVzaW5nIHRoZXNlIGNvbmRpdGlvbiB2YXJpYWJsZXMsCisgKiBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGV5IG1heSBiZSBlbXVsYXRlZCB3aXRoIFNlbWFwaG9yZXMgb24KKyAqIFdpbmRvd3M6CisgKiAxKSBXaGlsZSBQeUNPTkRfU0lHTkFMKCkgd2lsbCB3YWtlIHVwIGF0IGxlYXN0IG9uZSB0aHJlYWQsIHdlCisgKiAgICBjYW5ub3QgY3VycmVudGx5IGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgYmUgb25lIG9mIHRoZSB0aHJlYWRzCisgKiAgICBhbHJlYWR5IHdhaXRpbmcgaW4gYSBQeUNPTkRfV0FJVCgpIGNhbGwuICBJdCBfY291bGRfIGNhdXNlCisgKiAgICB0aGUgd2FrZXVwIG9mIGEgc3Vic2VxdWVudCB0aHJlYWQgdG8gdHJ5IGEgUHlDT05EX1dBSVQoKSwKKyAqICAgIGluY2x1ZGluZyB0aGUgdGhyZWFkIGRvaW5nIHRoZSBQeUNPTkRfU0lHTkFMKCkgaXRzZWxmLgorICogICAgVGhlIHNhbWUgYXBwbGllcyB0byBQeUNPTkRfQlJPQURDQVNUKCksIGlmIE4gdGhyZWFkcyBhcmUgd2FpdGluZworICogICAgdGhlbiBhdCBsZWFzdCBOIHRocmVhZHMgd2lsbCBiZSB3b2tlbiB1cCwgYnV0IG5vdCBuZWNlc3NhcmlseQorICogICAgdGhvc2UgYWxyZWFkeSB3YWl0aW5nLgorICogICAgRm9yIHRoaXMgcmVhc29uLCBkb24ndCBtYWtlIHRoZSBzY2hlZHVsaW5nIGFzc3VtcHRpb24gdGhhdCBhCisgKiAgICBzcGVjaWZpYyBvdGhlciB0aHJlYWQgd2lsbCBnZXQgdGhlIHdha2V1cCBzaWduYWwKKyAqIDIpIFRoZSBfbXV0ZXhfIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgUHlDT05EX1NJR05BTCgpIGFuZAorICogICAgUHlDT05EX0JST0FEQ0FTVCgpLgorICogICAgV2hpbGUgZS5nLiB0aGUgcG9zaXggc3RhbmRhcmQgc3Ryb25nbHkgcmVjb21tZW5kcyB0aGF0IHRoZSBtdXRleAorICogICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25kaXRpb24gdmFyaWFibGUgaXMgaGVsZCB3aGVuIGEKKyAqICAgIHB0aHJlYWRfY29uZF9zaWduYWwoKSBjYWxsIGlzIG1hZGUsIHRoaXMgaXMgbm90IGEgaGFyZCByZXF1aXJlbWVudCwKKyAqICAgIGFsdGhvdWdoIHNjaGVkdWxpbmcgd2lsbCBub3QgYmUgInJlbGlhYmxlIiBpZiBpdCBpc24ndC4gIEhlcmUKKyAqICAgIHRoZSBtdXRleCBpcyB1c2VkIGZvciBpbnRlcm5hbCBzeW5jaHJvbml6YXRpb24gb2YgdGhlIGVtdWxhdGVkCisgKiAgICBDb25kaXRpb24gVmFyaWFibGUuCisgKi8KKworI2lmbmRlZiBfQ09ORFZBUl9IXworI2RlZmluZSBfQ09ORFZBUl9IXworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKKy8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybworICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbAorICAgbGlicmFyeSAoZS5nLiBnbnUgcHRoIGluIHB0aHJlYWQgZW11bGF0aW9uKSAqLworIyBpZmRlZiBIQVZFX1BUSFJFQURfSAorIyAgaW5jbHVkZSA8cHRocmVhZC5oPiAvKiBfUE9TSVhfVEhSRUFEUyAqLworIyBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBfUE9TSVhfVEhSRUFEUworLyoKKyAqIFBPU0lYIHN1cHBvcnQKKyAqLworI2RlZmluZSBQeV9IQVZFX0NPTkRWQVIKKworI2luY2x1ZGUgPHB0aHJlYWQuaD4KKworI2RlZmluZSBQeUNPTkRfQUREX01JQ1JPU0VDT05EUyh0diwgaW50ZXJ2YWwpIFwKK2RvIHsgXAorICAgIHR2LnR2X3VzZWMgKz0gKGxvbmcpIGludGVydmFsOyBcCisgICAgdHYudHZfc2VjICs9IHR2LnR2X3VzZWMgLyAxMDAwMDAwOyBcCisgICAgdHYudHZfdXNlYyAlPSAxMDAwMDAwOyBcCit9IHdoaWxlICgwKQorCisvKiBXZSBhc3N1bWUgYWxsIG1vZGVybiBQT1NJWCBzeXN0ZW1zIGhhdmUgZ2V0dGltZW9mZGF5KCkgKi8KKyNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKKyNkZWZpbmUgUHlDT05EX0dFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYpCisjZWxzZQorI2RlZmluZSBQeUNPTkRfR0VUVElNRU9GREFZKHB0dikgZ2V0dGltZW9mZGF5KHB0diwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpCisjZW5kaWYKKworLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIDAgb24gc3VjY2Vzcywgbm9uemVybyBvbiBlcnJvciAqLworI2RlZmluZSBQeU1VVEVYX1QgcHRocmVhZF9tdXRleF90CisjZGVmaW5lIFB5TVVURVhfSU5JVChtdXQpICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgobXV0KSwgTlVMTCkKKyNkZWZpbmUgUHlNVVRFWF9GSU5JKG11dCkgICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KG11dCkKKyNkZWZpbmUgUHlNVVRFWF9MT0NLKG11dCkgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKG11dCkKKyNkZWZpbmUgUHlNVVRFWF9VTkxPQ0sobXV0KSAgICAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0KQorCisjZGVmaW5lIFB5Q09ORF9UIHB0aHJlYWRfY29uZF90CisjZGVmaW5lIFB5Q09ORF9JTklUKGNvbmQpICAgICAgIHB0aHJlYWRfY29uZF9pbml0KChjb25kKSwgTlVMTCkKKyNkZWZpbmUgUHlDT05EX0ZJTkkoY29uZCkgICAgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koY29uZCkKKyNkZWZpbmUgUHlDT05EX1NJR05BTChjb25kKSAgICAgcHRocmVhZF9jb25kX3NpZ25hbChjb25kKQorI2RlZmluZSBQeUNPTkRfQlJPQURDQVNUKGNvbmQpICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KGNvbmQpCisjZGVmaW5lIFB5Q09ORF9XQUlUKGNvbmQsIG11dCkgIHB0aHJlYWRfY29uZF93YWl0KChjb25kKSwgKG11dCkpCisKKy8qIHJldHVybiAwIGZvciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIGxvbmcgdXMpCit7CisgICAgaW50IHI7CisgICAgc3RydWN0IHRpbWVzcGVjIHRzOworICAgIHN0cnVjdCB0aW1ldmFsIGRlYWRsaW5lOworCisgICAgUHlDT05EX0dFVFRJTUVPRkRBWSgmZGVhZGxpbmUpOworICAgIFB5Q09ORF9BRERfTUlDUk9TRUNPTkRTKGRlYWRsaW5lLCB1cyk7CisgICAgdHMudHZfc2VjID0gZGVhZGxpbmUudHZfc2VjOworICAgIHRzLnR2X25zZWMgPSBkZWFkbGluZS50dl91c2VjICogMTAwMDsKKworICAgIHIgPSBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KChjb25kKSwgKG11dCksICZ0cyk7CisgICAgaWYgKHIgPT0gRVRJTUVET1VUKQorICAgICAgICByZXR1cm4gMTsKKyAgICBlbHNlIGlmIChyKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZSAKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKyNlbGlmIGRlZmluZWQoTlRfVEhSRUFEUykKKy8qCisgKiBXaW5kb3dzIChYUCwgMjAwMyBzZXJ2ZXIgYW5kIGxhdGVyLCBhcyB3ZWxsIGFzIChob3BlZnVsbHkpIENFKSBzdXBwb3J0CisgKgorICogRW11bGF0ZWQgY29uZGl0aW9uIHZhcmlhYmxlcyBvbmVzIHRoYXQgd29yayB3aXRoIFhQIGFuZCBsYXRlciwgcGx1cworICogZXhhbXBsZSBuYXRpdmUgc3VwcG9ydCBvbiBWSVNUQSBhbmQgb253YXJkcy4KKyAqLworI2RlZmluZSBQeV9IQVZFX0NPTkRWQVIKKworCisvKiBpbmNsdWRlIHdpbmRvd3MgaWYgaXQgaGFzbid0IGJlZW4gZG9uZSBiZWZvcmUgKi8KKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworLyogb3B0aW9ucyAqLworLyogbm9uLWVtdWxhdGVkIGNvbmRpdGlvbiB2YXJpYWJsZXMgYXJlIHByb3ZpZGVkIGZvciB0aG9zZSB0aGF0IHdhbnQKKyAqIHRvIHRhcmdldCBXaW5kb3dzIFZpc3RhLiAgTW9kaWZ5IHRoaXMgbWFjcm8gdG8gZW5hYmxlIHRoZW0uCisgKi8KKyNpZm5kZWYgX1BZX0VNVUxBVEVEX1dJTl9DVgorI2RlZmluZSBfUFlfRU1VTEFURURfV0lOX0NWIDEgIC8qIHVzZSBlbXVsYXRlZCBjb25kaXRpb24gdmFyaWFibGVzICovCisjZW5kaWYKKworLyogZmFsbCBiYWNrIHRvIGVtdWxhdGlvbiBpZiBub3QgdGFyZ2V0aW5nIFZpc3RhICovCisjaWYgIWRlZmluZWQgTlRERElfVklTVEEgfHwgTlRERElfVkVSU0lPTiA8IE5URERJX1ZJU1RBCisjdW5kZWYgX1BZX0VNVUxBVEVEX1dJTl9DVgorI2RlZmluZSBfUFlfRU1VTEFURURfV0lOX0NWIDEKKyNlbmRpZgorCisKKyNpZiBfUFlfRU1VTEFURURfV0lOX0NWCisKKy8qIFRoZSBtdXRleCBpcyBhIENyaXRpY2FsU2VjdGlvbiBvYmplY3QgYW5kCisgICBUaGUgY29uZGl0aW9uIHZhcmlhYmxlcyBpcyBlbXVsYXRlZCB3aXRoIHRoZSBoZWxwIG9mIGEgc2VtYXBob3JlLgorICAgU2VtYXBob3JlcyBhcmUgYXZhaWxhYmxlIG9uIFdpbmRvd3MgWFAgKDIwMDMgc2VydmVyKSBhbmQgbGF0ZXIuCisgICBXZSB1c2UgYSBTZW1hcGhvcmUgcmF0aGVyIHRoYW4gYW4gYXV0by1yZXNldCBldmVudCwgYmVjYXVzZSBhbHRob3VnaAorICAgYW4gYXV0by1yZXNlbnQgZXZlbnQgbWlnaHQgYXBwZWFyIHRvIHNvbHZlIHRoZSBsb3N0LXdha2V1cCBidWcgKHJhY2UKKyAgIGNvbmRpdGlvbiBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgb3V0ZXIgbG9jayBhbmQgd2FpdGluZykgYmVjYXVzZSBpdAorICAgbWFpbnRhaW5zIHN0YXRlIGV2ZW4gdGhvdWdoIGEgd2FpdCBoYXNuJ3QgaGFwcGVuZWQsIHRoZXJlIGlzIHN0aWxsCisgICBhIGxvc3Qgd2FrZXVwIHByb2JsZW0gaWYgbW9yZSB0aGFuIG9uZSB0aHJlYWQgYXJlIGludGVycnVwdGVkIGluIHRoZQorICAgY3JpdGljYWwgcGxhY2UuICBBIHNlbWFwaG9yZSBzb2x2ZXMgdGhhdCwgYmVjYXVzZSBpdHMgc3RhdGUgaXMgY291bnRlZCwKKyAgIG5vdCBCb29sZWFuLgorICAgQmVjYXVzZSBpdCBpcyBvayB0byBzaWduYWwgYSBjb25kaXRpb24gdmFyaWFibGUgd2l0aCBubyBvbmUKKyAgIHdhaXRpbmcsIHdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mCisgICB3YWl0aW5nIHRocmVhZHMuICBPdGhlcndpc2UsIHRoZSBzZW1hcGhvcmUncyBzdGF0ZSBjb3VsZCByaXNlCisgICB3aXRob3V0IGJvdW5kLiAgVGhpcyBhbHNvIGhlbHBzIHJlZHVjZSB0aGUgbnVtYmVyIG9mICJzcHVyaW91cyB3YWtldXBzIgorICAgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGFwcGVuLgorCisgICBUaGlzIGltcGxlbWVudGF0aW9uIHN0aWxsIGhhcyB0aGUgcHJvYmxlbSB0aGF0IHRoZSB0aHJlYWRzIHdva2VuCisgICB3aXRoIGEgInNpZ25hbCIgYXJlbid0IG5lY2Vzc2FyaWx5IHRob3NlIHRoYXQgYXJlIGFscmVhZHkKKyAgIHdhaXRpbmcuICBJdCBjb3JyZXNwb25kcyB0byBsaXN0aW5nIDIgaW46CisgICBodHRwOi8vYmlycmVsbC5vcmcvYW5kcmV3L3BhcGVycy9JbXBsZW1lbnRpbmdDVnMucGRmCisKKyAgIEdlbmVyaWMgZW11bGF0aW9ucyBvZiB0aGUgcHRocmVhZF9jb25kXyogQVBJIHVzaW5nCisgICBlYXJsaWVyIFdpbjMyIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIFdlYi4KKyAgIFRoZSBmb2xsb3dpbmcgcmVhZCBjYW4gYmUgZWRpZmljYXRpbmcgKG9yIG5vdCk6CisgICBodHRwOi8vd3d3LmNzZS53dXN0bC5lZHUvfnNjaG1pZHQvd2luMzItY3YtMS5odG1sCisKKyAgIFNlZSBhbHNvIAorKi8KKwordHlwZWRlZiBDUklUSUNBTF9TRUNUSU9OIFB5TVVURVhfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfSU5JVChQeU1VVEVYX1QgKmNzKQoreworICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9GSU5JKFB5TVVURVhfVCAqY3MpCit7CisgICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfVU5MT0NLKFB5TVVURVhfVCAqY3MpCit7CisgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oY3MpOworICAgIHJldHVybiAwOworfQorCisvKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUgb2JqZWN0LiAgRnJvbSBYUCBvbndhcmRzIGl0IGlzIGVhc2lseSBlbXVsYXRlZCB3aXRoCisgKiBhIFNlbWFwaG9yZQorICovCisKK3R5cGVkZWYgc3RydWN0IF9QeUNPTkRfVAoreworICAgIEhBTkRMRSBzZW07CisgICAgaW50IHdhaXRpbmc7IC8qIHRvIGFsbG93IFB5Q09ORF9TSUdOQUwgdG8gYmUgYSBuby1vcCAqLworfSBQeUNPTkRfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9JTklUKFB5Q09ORF9UICpjdikKK3sKKyAgICAvKiBBIHNlbWFwaG9yZSB3aXRoIGEgImxhcmdlIiBtYXggdmFsdWUsICBUaGUgcG9zaXRpdmUgdmFsdWUKKyAgICAgKiBpcyBvbmx5IG5lZWRlZCB0byBjYXRjaCB0aG9zZSAibG9zdCB3YWtldXAiIGV2ZW50cyBhbmQKKyAgICAgKiByYWNlIGNvbmRpdGlvbnMgd2hlbiBhIHRpbWVkIHdhaXQgZWxhcHNlcy4KKyAgICAgKi8KKyAgICBjdi0+c2VtID0gQ3JlYXRlU2VtYXBob3JlKE5VTEwsIDAsIDEwMDAwMCwgTlVMTCk7CisgICAgaWYgKGN2LT5zZW09PU5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBjdi0+d2FpdGluZyA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfRklOSShQeUNPTkRfVCAqY3YpCit7CisgICAgcmV0dXJuIENsb3NlSGFuZGxlKGN2LT5zZW0pID8gMCA6IC0xOworfQorCisvKiB0aGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYSB0aW1lb3V0LiAgUmV0dXJucyAxIG9uIHRpbWVvdXQsCisgKiAwIG90aGVyd2lzZSAoYW5kIC0xIG9uIGVycm9yKQorICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorX1B5Q09ORF9XQUlUX01TKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgRFdPUkQgbXMpCit7CisgICAgRFdPUkQgd2FpdDsKKyAgICBjdi0+d2FpdGluZysrOworICAgIFB5TVVURVhfVU5MT0NLKGNzKTsKKyAgICAvKiAibG9zdCB3YWtldXAgYnVnIiB3b3VsZCBvY2N1ciBpZiB0aGUgY2FsbGVyIHdlcmUgaW50ZXJydXB0ZWQgaGVyZSwKKyAgICAgKiBidXQgd2UgYXJlIHNhZmUgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzZW1hcGhvcmUgd2ljaCBoYXMgYW4gaW50ZXJuYWwKKyAgICAgKiBjb3VudC4KKyAgICAgKi8KKyAgICB3YWl0ID0gV2FpdEZvclNpbmdsZU9iamVjdChjdi0+c2VtLCBtcyk7CisgICAgUHlNVVRFWF9MT0NLKGNzKTsKKyAgICBpZiAod2FpdCAhPSBXQUlUX09CSkVDVF8wKQorICAgICAgICAtLWN2LT53YWl0aW5nOworICAgICAgICAvKiBIZXJlIHdlIGhhdmUgYSBiZW5pZ24gcmFjZSBjb25kaXRpb24gd2l0aCBQeUNPTkRfU0lHTkFMLgorICAgICAgICAgKiBXaGVuIGZhaWx1cmUgb2NjdXJzIG9yIHRpbWVvdXQsIGl0IGlzIHBvc3NpYmxlIHRoYXQKKyAgICAgICAgICogUHlDT05EX1NJR05BTCBhbHNvIGRlY3JlbWVudHMgdGhpcyB2YWx1ZQorICAgICAgICAgKiBhbmQgc2lnbmFscyByZWxlYXNlcyB0aGUgbXV0ZXguICBUaGlzIGlzIGJlbmlnbiBiZWNhdXNlIGl0CisgICAgICAgICAqIGp1c3QgbWVhbnMgYW4gZXh0cmEgc3B1cmlvdXMgd2FrZXVwIGZvciBhIHdhaXRpbmcgdGhyZWFkLgorICAgICAgICAgKiAoJ3dhaXRpbmcnIGNvcnJlc3BvbmRzIHRvIHRoZSBzZW1hcGhvcmUncyAibmVnYXRpdmUiIGNvdW50IGFuZAorICAgICAgICAgKiB3ZSBtYXkgZW5kIHVwIHdpdGggZS5nLiAod2FpdGluZyA9PSAtMSAmJiBzZW0uY291bnQgPT0gMSkuICBXaGVuCisgICAgICAgICAqIGEgbmV3IHRocmVhZCBjb21lcyBhbG9uZywgaXQgd2lsbCBwYXNzIHJpZ2h0IHRocm91aGdoLCBoYXZpbmcKKyAgICAgICAgICogYWRqdXN0ZWQgaXQgdG8gKHdhaXRpbmcgPT0gMCAmJiBzZW0uY291bnQgPT0gMCkuCisgICAgICAgICAqLworICAgICAgICAgCisgICAgaWYgKHdhaXQgPT0gV0FJVF9GQUlMRUQpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiByZXR1cm4gMCBvbiBzdWNjZXNzLCAxIG9uIHRpbWVvdXQgKi8KKyAgICByZXR1cm4gd2FpdCAhPSBXQUlUX09CSkVDVF8wOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1dBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzKQoreworICAgIGludCByZXN1bHQgPSBfUHlDT05EX1dBSVRfTVMoY3YsIGNzLCBJTkZJTklURSk7CisgICAgcmV0dXJuIHJlc3VsdCA+PSAwID8gMCA6IHJlc3VsdDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIHVzKQoreworICAgIHJldHVybiBfUHlDT05EX1dBSVRfTVMoY3YsIGNzLCB1cy8xMDAwKTsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9TSUdOQUwoUHlDT05EX1QgKmN2KQoreworICAgIC8qIHRoaXMgdGVzdCBhbGxvd3MgUHlDT05EX1NJR05BTCB0byBiZSBhIG5vLW9wIHVubGVzcyByZXF1aXJlZAorICAgICAqIHRvIHdha2Ugc29tZW9uZSB1cCwgdGh1cyBwcmV2ZW50aW5nIGFuIHVuYm91bmRlZCBpbmNyZWFzZSBvZgorICAgICAqIHRoZSBzZW1hcGhvcmUncyBpbnRlcm5hbCBjb3VudGVyLgorICAgICAqLworICAgIGlmIChjdi0+d2FpdGluZyA+IDApIHsKKyAgICAgICAgLyogbm90aWZ5aW5nIHRocmVhZCBkZWNyZWFzZXMgdGhlIGN2LT53YWl0aW5nIGNvdW50IHNvIHRoYXQKKyAgICAgICAgICogYSBkZWxheSBiZXR3ZWVuIG5vdGlmeSBhbmQgYWN0dWFsIHdha2V1cCBvZiB0aGUgdGFyZ2V0IHRocmVhZAorICAgICAgICAgKiBkb2Vzbid0IGNhdXNlIGEgbnVtYmVyIG9mIGV4dHJhIFJlbGVhc2VTZW1hcGhvcmUgY2FsbHMuCisgICAgICAgICAqLworICAgICAgICBjdi0+d2FpdGluZy0tOworICAgICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShjdi0+c2VtLCAxLCBOVUxMKSA/IDAgOiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfQlJPQURDQVNUKFB5Q09ORF9UICpjdikKK3sKKyAgICBpZiAoY3YtPndhaXRpbmcgPiAwKSB7CisgICAgICAgIHJldHVybiBSZWxlYXNlU2VtYXBob3JlKGN2LT5zZW0sIGN2LT53YWl0aW5nLCBOVUxMKSA/IDAgOiAtMTsKKwkJY3YtPndhaXRpbmcgPSAwOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKworLyogVXNlIG5hdGl2ZSBXaW43IHByaW1pdGl2ZXMgaWYgYnVpbGQgdGFyZ2V0IGlzIFdpbjcgb3IgaGlnaGVyICovCisKKy8qIFNSV0xPQ0sgaXMgZmFzdGVyIGFuZCBiZXR0ZXIgdGhhbiBDcml0aWNhbFNlY3Rpb24gKi8KK3R5cGVkZWYgU1JXTE9DSyBQeU1VVEVYX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0lOSVQoUHlNVVRFWF9UICpjcykKK3sKKyAgICBJbml0aWFsaXplU1JXTG9jayhjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0ZJTkkoUHlNVVRFWF9UICpjcykKK3sKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIEFjcXVpcmVTUldMb2NrRXhjbHVzaXZlKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfVU5MT0NLKFB5TVVURVhfVCAqY3MpCit7CisgICAgUmVsZWFzZVNSV0xvY2tFeGNsdXNpdmUoY3MpOworICAgIHJldHVybiAwOworfQorCisKK3R5cGVkZWYgQ09ORElUSU9OX1ZBUklBQkxFICBQeUNPTkRfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9JTklUKFB5Q09ORF9UICpjdikKK3sKKyAgICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUoY3YpOworICAgIHJldHVybiAwOworfQorUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9GSU5JKFB5Q09ORF9UICpjdikKK3sKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9XQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcykKK3sKKyAgICByZXR1cm4gU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVyhjdiwgY3MsIElORklOSVRFLCAwKSA/IDAgOiAtMTsKK30KKworLyogVGhpcyBpbXBsZW1lbnRhdGlvbiBtYWtlcyBubyBkaXN0aW5jdGlvbiBhYm91dCB0aW1lb3V0cy4gIFNpZ25hbAorICogMiB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IGtub3cuCisgKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyB1cykKK3sKKyAgICByZXR1cm4gU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVyhjdiwgY3MsIHVzLzEwMDAsIDApID8gMiA6IC0xOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1NJR05BTChQeUNPTkRfVCAqY3YpCit7CisgICAgIFdha2VDb25kaXRpb25WYXJpYWJsZShjdik7CisgICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0JST0FEQ0FTVChQeUNPTkRfVCAqY3YpCit7CisgICAgIFdha2VBbGxDb25kaXRpb25WYXJpYWJsZShjdik7CisgICAgIHJldHVybiAwOworfQorCisKKyNlbmRpZiAvKiBfUFlfRU1VTEFURURfV0lOX0NWICovCisKKyNlbmRpZiAvKiBfUE9TSVhfVEhSRUFEUywgTlRfVEhSRUFEUyAqLworCisjZW5kaWYgLyogX0NPTkRWQVJfSF8gKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9kdG9hLmMgYi9QeXRob24vZHRvYS5jCmluZGV4IDQ0ZGMwMWYuLjgzODYxYWMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9kdG9hLmMKKysrIGIvUHl0aG9uL2R0b2EuYwpAQCAtMjY1LDYgKzI2NSwxNiBAQAogI2RlZmluZSBCaWcwIChGcmFjX21hc2sxIHwgRXhwX21zazEqKERCTF9NQVhfRVhQK0JpYXMtMSkpCiAjZGVmaW5lIEJpZzEgMHhmZmZmZmZmZgogCisvKiBTdGFuZGFyZCBOYU4gdXNlZCBieSBfUHlfZGdfc3RkbmFuLiAqLworCisjZGVmaW5lIE5BTl9XT1JEMCAweDdmZjgwMDAwCisjZGVmaW5lIE5BTl9XT1JEMSAwCisKKy8qIEJpdHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHBvc2l0aXZlIGluZmluaXR5LiAqLworCisjZGVmaW5lIFBPU0lORl9XT1JEMCAweDdmZjAwMDAwCisjZGVmaW5lIFBPU0lORl9XT1JEMSAwCisKIC8qIHN0cnVjdCBCQ2luZm8gaXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGZyb20gX1B5X2RnX3N0cnRvZCB0byBiaWdjb21wICovCiAKIHR5cGVkZWYgc3RydWN0IEJDaW5mbyBCQ2luZm87CkBAIC0xNDg2LDYgKzE0OTYsMzYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyogUmV0dXJuIGEgJ3N0YW5kYXJkJyBOYU4gdmFsdWUuCisKKyAgIFRoZXJlIGFyZSBleGFjdGx5IHR3byBxdWlldCBOYU5zIHRoYXQgZG9uJ3QgYXJpc2UgYnkgJ3F1aWV0aW5nJyBzaWduYWxpbmcKKyAgIE5hTnMgKHNlZSBJRUVFIDc1NC0yMDA4LCBzZWN0aW9uIDYuMi4xKS4gIElmIHNpZ24gPT0gMCwgcmV0dXJuIHRoZSBvbmUgd2hvc2UKKyAgIHNpZ24gYml0IGlzIGNsZWFyZWQuICBPdGhlcndpc2UsIHJldHVybiB0aGUgb25lIHdob3NlIHNpZ24gYml0IGlzIHNldC4KKyovCisKK2RvdWJsZQorX1B5X2RnX3N0ZG5hbihpbnQgc2lnbikKK3sKKyAgICBVIHJ2OworICAgIHdvcmQwKCZydikgPSBOQU5fV09SRDA7CisgICAgd29yZDEoJnJ2KSA9IE5BTl9XT1JEMTsKKyAgICBpZiAoc2lnbikKKyAgICAgICAgd29yZDAoJnJ2KSB8PSBTaWduX2JpdDsKKyAgICByZXR1cm4gZHZhbCgmcnYpOworfQorCisvKiBSZXR1cm4gcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHksIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc2lnbiAoMCBmb3IKKyAqIHBvc2l0aXZlIGluZmluaXR5LCAxIGZvciBuZWdhdGl2ZSBpbmZpbml0eSkuICovCisKK2RvdWJsZQorX1B5X2RnX2luZmluaXR5KGludCBzaWduKQoreworICAgIFUgcnY7CisgICAgd29yZDAoJnJ2KSA9IFBPU0lORl9XT1JEMDsKKyAgICB3b3JkMSgmcnYpID0gUE9TSU5GX1dPUkQxOworICAgIHJldHVybiBzaWduID8gLWR2YWwoJnJ2KSA6IGR2YWwoJnJ2KTsKK30KKwogZG91YmxlCiBfUHlfZGdfc3RydG9kKGNvbnN0IGNoYXIgKnMwMCwgY2hhciAqKnNlKQogewpAQCAtMTg4NiwyMCArMTkyNiwyMCBAQAogICAgICAgICBiZDIrKzsKIAogICAgICAgICAvKiBBdCB0aGlzIHN0YWdlIGJkNSAtIGJiNSA9PSBlID09IGJkMiAtIGJiMiArIGJiZSwgYmIyIC0gYnMyID09IDEsCi0JICAgYW5kIGJzID09IDEsIHNvOgorICAgICAgICAgICBhbmQgYnMgPT0gMSwgc286CiAKICAgICAgICAgICAgICAgdGR2ID09IGJkICogMTAqKmUgPSBiZCAqIDIqKihiYmUgLSBiYjIgKyBiZDIpICogNSoqKGJkNSAtIGJiNSkKICAgICAgICAgICAgICAgc3J2ID09IGJiICogMioqYmJlID0gYmIgKiAyKiooYmJlIC0gYmIyICsgYmIyKQotCSAgICAgIDAuNSB1bHAoc3J2KSA9PSAyKiooYmJlLTEpID0gYnMgKiAyKiooYmJlIC0gYmIyICsgYnMyKQorICAgICAgICAgICAgICAwLjUgdWxwKHNydikgPT0gMioqKGJiZS0xKSA9IGJzICogMioqKGJiZSAtIGJiMiArIGJzMikKIAotCSAgIEl0IGZvbGxvd3MgdGhhdDoKKyAgICAgICAgICAgSXQgZm9sbG93cyB0aGF0OgogCiAgICAgICAgICAgICAgIE0gKiB0ZHYgPSBiZCAqIDIqKmJkMiAqIDUqKmJkNQogICAgICAgICAgICAgICBNICogc3J2ID0gYmIgKiAyKipiYjIgKiA1KipiYjUKICAgICAgICAgICAgICAgTSAqIDAuNSB1bHAoc3J2KSA9IGJzICogMioqYnMyICogNSoqYmI1CiAKLQkgICBmb3Igc29tZSBjb25zdGFudCBNLiAgKEFjdHVhbGx5LCBNID09IDIqKihiYjIgLSBiYmUpICogNSoqYmI1LCBidXQKLQkgICB0aGlzIGZhY3QgaXMgbm90IG5lZWRlZCBiZWxvdy4pCisgICAgICAgICAgIGZvciBzb21lIGNvbnN0YW50IE0uICAoQWN0dWFsbHksIE0gPT0gMioqKGJiMiAtIGJiZSkgKiA1KipiYjUsIGJ1dAorICAgICAgICAgICB0aGlzIGZhY3QgaXMgbm90IG5lZWRlZCBiZWxvdy4pCiAgICAgICAgICovCiAKICAgICAgICAgLyogUmVtb3ZlIGZhY3RvciBvZiAyKippLCB3aGVyZSBpID0gbWluKGJiMiwgYmQyLCBiczIpLiAqLwpAQCAtMjA1NSw3ICsyMDk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICsgRXhwX21zazEKICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgd29yZDEoJnJ2KSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGRzaWduID0gMDsKKyAgICAgICAgICAgICAgICAgICAgLyogZHNpZ24gPSAwOyAqLwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDkyLDcgKzIxMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBnb3RvIHVuZGZsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRzaWduID0gMSAtIGRzaWduOworICAgICAgICAgICAgLyogZHNpZ24gPSAxIC0gZHNpZ247ICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoKGFhZGogPSByYXRpbyhkZWx0YSwgYnMpKSA8PSAyLikgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMgYi9QeXRob24vZHlubG9hZF9haXguYwppbmRleCAxNDk5OTBkLi5iNGY3MWYyIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9haXguYworKysgYi9QeXRob24vZHlubG9hZF9haXguYwpAQCAtMjYsMTEgKzI2LDcgQEAKICAgICB2b2lkICAgICAgICAgICplbnRyeTsKIH0gTW9kdWxlLCAqTW9kdWxlUHRyOwogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHsiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIuc28iLCBOVUxMfTsKIAogc3RhdGljIGludAogYWl4X2dldG9sZG1vZHVsZXModm9pZCAqKm1vZGxpc3RwdHIpCkBAIC0xMDksNiArMTA1LDggQEAKIHsKIAogICAgIGNoYXIgKm1lc3NhZ2VbMTAyNF0sIGVycmJ1ZlsxMDI0XTsKKyAgICBQeU9iamVjdCAqcGF0aG5hbWVfb2IgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJidWZfb2IgPSBOVUxMOwogICAgIHJlZ2lzdGVyIGludCBpLGo7CiAKICAgICBzdHJ1Y3QgZXJydGFiIHsKQEAgLTEyOSw3ICsxMjcsNiBAQAogICAgICAgICB7TF9FUlJPUl9FUlJOTywgICAgICAgICAgICAgICAgIE5VTEx9CiAgICAgfTsKIAotI2RlZmluZSBMT0FEX0VSUlRBQl9MRU4gKHNpemVvZihsb2FkX2VycnRhYikvc2l6ZW9mKGxvYWRfZXJydGFiWzBdKSkKICNkZWZpbmUgRVJSQlVGX0FQUEVORChzKSBzdHJuY2F0KGVycmJ1Ziwgcywgc2l6ZW9mKGVycmJ1Ziktc3RybGVuKGVycmJ1ZiktMSkKIAogICAgIFB5T1Nfc25wcmludGYoZXJyYnVmLCBzaXplb2YoZXJyYnVmKSwgImZyb20gbW9kdWxlICUuMjAwcyAiLCBwYXRobmFtZSk7CkBAIC0xNDAsNyArMTM3LDcgQEAKICAgICB9CiAgICAgZm9yKGkgPSAwOyBtZXNzYWdlW2ldICYmICptZXNzYWdlW2ldOyBpKyspIHsKICAgICAgICAgaW50IG5lcnIgPSBhdG9pKG1lc3NhZ2VbaV0pOwotICAgICAgICBmb3IgKGo9MDsgajxMT0FEX0VSUlRBQl9MRU4gOyBqKyspIHsKKyAgICAgICAgZm9yIChqPTA7IGogPCBQeV9BUlJBWV9MRU5HVEgobG9hZF9lcnJ0YWIpOyBqKyspIHsKICAgICAgICAgICAgIGlmIChuZXJyID09IGxvYWRfZXJydGFiW2pdLmVyck5vICYmIGxvYWRfZXJydGFiW2pdLmVycnN0cikKICAgICAgICAgICAgIEVSUkJVRl9BUFBFTkQobG9hZF9lcnJ0YWJbal0uZXJyc3RyKTsKICAgICAgICAgfQpAQCAtMTQ5LDEyICsxNDYsMTYgQEAKICAgICAgICAgRVJSQlVGX0FQUEVORCgiXG4iKTsKICAgICB9CiAgICAgZXJyYnVmW3N0cmxlbihlcnJidWYpLTFdID0gJ1wwJzsgICAgICAgICAgICAvKiB0cmltIG9mZiBsYXN0IG5ld2xpbmUgKi8KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsIGVycmJ1Zik7CisgICAgcGF0aG5hbWVfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgZXJyYnVmX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZXJyYnVmKTsKKyAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihlcnJidWZfb2IsIE5VTEwsIHBhdGhuYW1lKTsKKyAgICBQeV9ERUNSRUYocGF0aG5hbWVfb2IpOworICAgIFB5X0RFQ1JFRihlcnJidWZfb2IpOwogICAgIHJldHVybjsKIH0KIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9kbC5jIGIvUHl0aG9uL2R5bmxvYWRfZGwuYwppbmRleCAyNjA2ZTFlLi41ODM2Y2IzIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9kbC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKQEAgLTksMTggKzksMTQgQEAKIAogZXh0ZXJuIGNoYXIgKlB5X0dldFByb2dyYW1OYW1lKHZvaWQpOwogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotCXsiLm8iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0JeyJtb2R1bGUubyIsICJyYiIsIENfRVhURU5TSU9OfSwKLQl7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLm8iLCBOVUxMfTsKIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLQkJCQkgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewotCWNoYXIgZnVuY25hbWVbMjU4XTsKKyAgICBjaGFyIGZ1bmNuYW1lWzI1OF07CiAKLQlQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7Ci0JcmV0dXJuIGRsX2xvYWRtb2QoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgcGF0aG5hbWUsIGZ1bmNuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CisgICAgcmV0dXJuIGRsX2xvYWRtb2QoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgcGF0aG5hbWUsIGZ1bmNuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2hwdXguYyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwppbmRleCAxOGE4MTM3Li5jOTU1NDE0IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9ocHV4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCkBAIC0xMywxMyArMTMsOSBAQAogI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICJQeUluaXRfJS4yMDBzIgogI2VuZGlmCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAge1NITElCX0VYVCwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlIlNITElCX0VYVCwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0ge1NITElCX0VYVCwgTlVMTH07CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKQEAgLTM3LDExICszMywyMSBAQAogICAgIC8qIFhYWCBDaHVjayBCbGFrZSBvbmNlIHdyb3RlIHRoYXQgMCBzaG91bGQgYmUgQklORF9OT1NUQVJUPyAqLwogICAgIGlmIChsaWIgPT0gTlVMTCkgewogICAgICAgICBjaGFyIGJ1ZlsyNTZdOworICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWVfb2IgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqYnVmX29iID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKnNob3J0bmFtZV9vYiA9IE5VTEw7CisKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICAgICAgcGVycm9yKHBhdGhuYW1lKTsKICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiRmFpbGVkIHRvIGxvYWQgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgYnVmKTsKKyAgICAgICAgYnVmX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICAgICAgc2hvcnRuYW1lX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKTsKKyAgICAgICAgcGF0aG5hbWVfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKGJ1Zl9vYiwgc2hvcnRuYW1lX29iLCBwYXRobmFtZV9vYik7CisgICAgICAgIFB5X0RFQ1JFRihidWZfb2IpOworICAgICAgICBQeV9ERUNSRUYoc2hvcnRuYW1lX29iKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksIEZVTkNOQU1FX1BBVFRFUk4sIHNob3J0bmFtZSk7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9uZXh0LmMgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKaW5kZXggY2FiZjliOS4uODVjOTViNCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwpAQCAtOCwxMSArOCw3IEBACiAKICNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHsiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIuc28iLCBOVUxMfTsKIAogLyoKICoqIFB5dGhvbiBtb2R1bGVzIGFyZSBNYWNoLU8gTUhfQlVORExFIGZpbGVzLiBUaGUgYmVzdCB3YXkgdG8gbG9hZCB0aGVzZQpAQCAtMzEsOCArMjcsOCBAQAogI2RlZmluZSBMSU5LT1BUSU9OUyBOU0xJTktNT0RVTEVfT1BUSU9OX0JJTkROT1d8IFwKICAgICBOU0xJTktNT0RVTEVfT1BUSU9OX1JFVFVSTl9PTl9FUlJPUnxOU0xJTktNT0RVTEVfT1BUSU9OX1BSSVZBVEUKICNlbmRpZgotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcCA9IE5VTEw7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfb3MyLmMgYi9QeXRob24vZHlubG9hZF9vczIuYwppbmRleCAxMDFjMDI0Li4wZTFiOTA3IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9vczIuYworKysgYi9QeXRob24vZHlubG9hZF9vczIuYwpAQCAtOSwxMyArOSw5IEBACiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHsiLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5weWQiLCAiLmRsbCIsIE5VTEx9OwogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9zaGxpYi5jIGIvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYwppbmRleCA3ZWE1MTBlLi4wY2E2NWM3IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9zaGxpYi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3NobGliLmMKQEAgLTM2LDMxICszNiwyNSBAQAogICAgbGl2ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuICBFLmcuIGZvb21vZHVsZS5jcHl0aG9uLTMyLnNvCiAqLwogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7CiAjaWZkZWYgX19DWUdXSU5fXwotICAgIHsiLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCisgICAgIi5kbGwiLAogI2Vsc2UgIC8qICFfX0NZR1dJTl9fICovCiAjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICB7Ii5weWQiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuZGxsIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIucHlkIiwKKyAgICAiLmRsbCIsCiAjZWxzZSAgLyogIShkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKSkgKi8KICNpZmRlZiBfX1ZNUwotICAgIHsiLmV4ZSIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5FWEUiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuZXhlIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiTU9EVUxFLkVYRSIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLmV4ZSIsCisgICAgIi5FWEUiLAogI2Vsc2UgIC8qICFfX1ZNUyAqLwotICAgIHsiLiIgU09BQkkgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS4iIFNPQUJJICIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuYWJpIiBQWVRIT05fQUJJX1NUUklORyAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLmFiaSIgUFlUSE9OX0FCSV9TVFJJTkcgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLiIgU09BQkkgIi5zbyIsCisgICAgIi5hYmkiIFBZVEhPTl9BQklfU1RSSU5HICIuc28iLAorICAgICIuc28iLAogI2VuZGlmICAvKiBfX1ZNUyAqLwogI2VuZGlmICAvKiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKSAqLwogI2VuZGlmICAvKiBfX0NZR1dJTl9fICovCi0gICAgezAsIDB9CisgICAgTlVMTCwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgewpAQCAtNzUsNyArNjksNyBAQAogc3RhdGljIGludCBuaGFuZGxlcyA9IDA7CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpAQCAtMTIxLDEwICsxMTUsNiBAQAogICAgIGRsb3BlbmZsYWdzID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5kbG9wZW5mbGFnczsKICNlbmRpZgogCi0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiZGxvcGVuKFwiJXNcIiwgJXgpO1xuIiwgcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRsb3BlbmZsYWdzKTsKLQogI2lmZGVmIF9fVk1TCiAgICAgLyogVk1TIGN1cnJlbnRseSBkb24ndCBhbGxvdyBhIHBhdGhuYW1lLCB1c2UgYSBsb2dpY2FsIG5hbWUgaW5zdGVhZCAqLwogICAgIC8qIENvbmNhdGVuYXRlICdweXRob25fbW9kdWxlXycgYW5kIHNob3J0bmFtZSAqLwpAQCAtMTM5LDEwICsxMjksMTkgQEAKICAgICBoYW5kbGUgPSBkbG9wZW4ocGF0aG5hbWUsIGRsb3BlbmZsYWdzKTsKIAogICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbW9kX25hbWUgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICplcnJvcl9vYiA9IE5VTEw7CiAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9yID0gZGxlcnJvcigpOwogICAgICAgICBpZiAoZXJyb3IgPT0gTlVMTCkKICAgICAgICAgICAgIGVycm9yID0gInVua25vd24gZGxvcGVuKCkgZXJyb3IiOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsIGVycm9yKTsKKyAgICAgICAgZXJyb3Jfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJvcik7CisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgICAgIG1vZF9uYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IoZXJyb3Jfb2IsIG1vZF9uYW1lLCBwYXRoKTsKKyAgICAgICAgUHlfWERFQ1JFRihlcnJvcl9vYik7CisgICAgICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgICAgIFB5X1hERUNSRUYobW9kX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGZwICE9IE5VTEwgJiYgbmhhbmRsZXMgPCAxMjgpCmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9zdHViLmMgYi9QeXRob24vZHlubG9hZF9zdHViLmMKaW5kZXggNjlmOGI0NS4uNTkxNjA0OCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfc3R1Yi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3N0dWIuYwpAQCAtNiw2ICs2LDQgQEAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0JezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7TlVMTH07CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF93aW4uYyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCmluZGV4IDczYTFkY2YuLjI1YjY2ODAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3dpbi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCkBAIC0xMiwxNiArMTIsMTggQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIC8vICJhY3RpdmF0aW9uIGNvbnRleHQiIG1hZ2ljIC0gc2VlIGRsX250LmMuLi4KKyNpZiBIQVZFX1NYUwogZXh0ZXJuIFVMT05HX1BUUiBfUHlfQWN0aXZhdGVBY3RDdHgoKTsKIHZvaWQgX1B5X0RlYWN0aXZhdGVBY3RDdHgoVUxPTkdfUFRSIGNvb2tpZSk7Ci0KLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0jaWZkZWYgX0RFQlVHCi0gICAgeyJfZC5weWQiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0jZWxzZQotICAgIHsiLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKICNlbmRpZgotICAgIHswLCAwfQorCitjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKKyNpZmRlZiBfREVCVUcKKyAgICAiX2QucHlkIiwKKyNlbHNlCisgICAgIi5weWQiLAorI2VuZGlmCisgICAgTlVMTAogfTsKIAogCkBAIC0xNzEsNDMgKzE3Myw0NCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XSwgKmltcG9ydF9weXRob247CisgICAgd2NoYXJfdCAqd3BhdGhuYW1lOwogCiAjaWZuZGVmIF9ERUJVRwogICAgIF9QeV9DaGVja1B5dGhvbjMoKTsKICNlbmRpZgogCisgICAgd3BhdGhuYW1lID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRobmFtZSk7CisgICAgaWYgKHdwYXRobmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKIAogICAgIHsKICAgICAgICAgSElOU1RBTkNFIGhETEwgPSBOVUxMOwotICAgICAgICBjaGFyIHBhdGhidWZbMjYwXTsKLSAgICAgICAgTFBUU1RSIGR1bW15OwogICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX21vZGU7CisjaWYgSEFWRV9TWFMKICAgICAgICAgVUxPTkdfUFRSIGNvb2tpZSA9IDA7Ci0gICAgICAgIC8qIFdlIHVzZSBMb2FkTGlicmFyeUV4IHNvIFdpbmRvd3MgbG9va3MgZm9yIGRlcGVuZGVudCBETExzCi0gICAgICAgICAgICBpbiBkaXJlY3Rvcnkgb2YgcGF0aG5hbWUgZmlyc3QuICBIb3dldmVyLCBXaW5kb3dzOTUKLSAgICAgICAgICAgIGNhbiBzb21ldGltZXMgbm90IHdvcmsgY29ycmVjdGx5IHVubGVzcyB0aGUgYWJzb2x1dGUKLSAgICAgICAgICAgIHBhdGggaXMgdXNlZC4gIElmIEdldEZ1bGxQYXRoTmFtZSgpIGZhaWxzLCB0aGUgTG9hZExpYnJhcnkKLSAgICAgICAgICAgIHdpbGwgY2VydGFpbmx5IGZhaWwgdG9vLCBzbyB1c2UgaXRzIGVycm9yIGNvZGUgKi8KKyNlbmRpZgogCiAgICAgICAgIC8qIERvbid0IGRpc3BsYXkgYSBtZXNzYWdlIGJveCB3aGVuIFB5dGhvbiBjYW4ndCBsb2FkIGEgRExMICovCiAgICAgICAgIG9sZF9tb2RlID0gU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMpOwogCi0gICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWUocGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHBhdGhidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR1bW15KSkgewotICAgICAgICAgICAgVUxPTkdfUFRSIGNvb2tpZSA9IF9QeV9BY3RpdmF0ZUFjdEN0eCgpOwotICAgICAgICAgICAgLyogWFhYIFRoaXMgY2FsbCBkb2Vzbid0IGV4aXN0IGluIFdpbmRvd3MgQ0UgKi8KLSAgICAgICAgICAgIGhETEwgPSBMb2FkTGlicmFyeUV4KHBhdGhuYW1lLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOwotICAgICAgICAgICAgX1B5X0RlYWN0aXZhdGVBY3RDdHgoY29va2llKTsKLSAgICAgICAgfQorI2lmIEhBVkVfU1hTCisgICAgICAgIGNvb2tpZSA9IF9QeV9BY3RpdmF0ZUFjdEN0eCgpOworI2VuZGlmCisgICAgICAgIC8qIFdlIHVzZSBMb2FkTGlicmFyeUV4IHNvIFdpbmRvd3MgbG9va3MgZm9yIGRlcGVuZGVudCBETExzCisgICAgICAgICAgICBpbiBkaXJlY3Rvcnkgb2YgcGF0aG5hbWUgZmlyc3QuICovCisgICAgICAgIC8qIFhYWCBUaGlzIGNhbGwgZG9lc24ndCBleGlzdCBpbiBXaW5kb3dzIENFICovCisgICAgICAgIGhETEwgPSBMb2FkTGlicmFyeUV4Vyh3cGF0aG5hbWUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CisjaWYgSEFWRV9TWFMKKyAgICAgICAgX1B5X0RlYWN0aXZhdGVBY3RDdHgoY29va2llKTsKKyNlbmRpZgogCiAgICAgICAgIC8qIHJlc3RvcmUgb2xkIGVycm9yIG1vZGUgc2V0dGluZ3MgKi8KICAgICAgICAgU2V0RXJyb3JNb2RlKG9sZF9tb2RlKTsKQEAgLTI1NCwzMSArMjU3LDM0IEBACiAgICAgICAgICAgICAgICAgICAgICJETEwgbG9hZCBmYWlsZWQ6ICIpOwogCiAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Vbmljb2RlKAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZUxlbmd0aCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0ltcG9ydEVycm9yLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWVzc2FnZSk7CisgICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobWVzc2FnZSwgUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyNTZdOwogCisgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCiAjaWZkZWYgX0RFQlVHCi0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJweXRob24lZCVkX2QuZGxsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkJWRfZC5kbGwiLAogI2Vsc2UKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgInB5dGhvbiVkJWQuZGxsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkJWQuZGxsIiwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9NQUpPUl9WRVJTSU9OLFBZX01JTk9SX1ZFUlNJT04pOwogICAgICAgICAgICAgaW1wb3J0X3B5dGhvbiA9IEdldFB5dGhvbkltcG9ydChoRExMKTsKIAogICAgICAgICAgICAgaWYgKGltcG9ydF9weXRob24gJiYKICAgICAgICAgICAgICAgICBzdHJjYXNlY21wKGJ1ZmZlcixpbXBvcnRfcHl0aG9uKSkgewotICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgdXNlIG9mICUuMTUwcyBjb25mbGljdHMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbi4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3B5dGhvbik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIHVzZSBvZiAlLjE1MHMgY29uZmxpY3RzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfcHl0aG9uKTsKICAgICAgICAgICAgICAgICBGcmVlTGlicmFyeShoRExMKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCA1YTlhNjI0Li42MjZiMTZlIDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC0zMjAsNiArMzIwLDM5IEBACiAgICAgUHlFcnJfUmVzdG9yZShOVUxMLCBOVUxMLCBOVUxMKTsKIH0KIAordm9pZAorUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKnBfdHlwZSwgUHlPYmplY3QgKipwX3ZhbHVlLCBQeU9iamVjdCAqKnBfdHJhY2ViYWNrKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICAqcF90eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICAqcF92YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgICpwX3RyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKworICAgIFB5X1hJTkNSRUYoKnBfdHlwZSk7CisgICAgUHlfWElOQ1JFRigqcF92YWx1ZSk7CisgICAgUHlfWElOQ1JFRigqcF90cmFjZWJhY2spOworfQorCit2b2lkCitQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICpwX3R5cGUsIFB5T2JqZWN0ICpwX3ZhbHVlLCBQeU9iamVjdCAqcF90cmFjZWJhY2spCit7CisgICAgUHlPYmplY3QgKm9sZHR5cGUsICpvbGR2YWx1ZSwgKm9sZHRyYWNlYmFjazsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgb2xkdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgb2xkdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICBvbGR0cmFjZWJhY2sgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7CisKKyAgICB0c3RhdGUtPmV4Y190eXBlID0gcF90eXBlOworICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gcF92YWx1ZTsKKyAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBwX3RyYWNlYmFjazsKKworICAgIFB5X1hERUNSRUYob2xkdHlwZSk7CisgICAgUHlfWERFQ1JFRihvbGR2YWx1ZSk7CisgICAgUHlfWERFQ1JFRihvbGR0cmFjZWJhY2spOworfQorCiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gc2V0IGEgdHlwZSBlcnJvciBleGNlcHRpb24gYW5kIHJldHVybiAwICovCiAKIGludApAQCAtMzQxLDExICszNzQsOSBAQAogUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICpleGMsIFB5T2JqZWN0ICpmaWxlbmFtZU9iamVjdCkKIHsKICAgICBQeU9iamVjdCAqbWVzc2FnZTsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBQeU9iamVjdCAqdiwgKmFyZ3M7CiAgICAgaW50IGkgPSBlcnJubzsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIGNoYXIgKnM7Ci0jZWxzZQorI2lmZGVmIE1TX1dJTkRPV1MKICAgICBXQ0hBUiAqc19idWYgPSBOVUxMOwogI2VuZGlmIC8qIFVuaXgvV2luZG93cyAqLwogCkBAIC0zNTUsMTEgKzM4NiwxNCBAQAogI2VuZGlmCiAKICNpZm5kZWYgTVNfV0lORE9XUwotICAgIGlmIChpID09IDApCi0gICAgICAgIHMgPSAiRXJyb3IiOyAvKiBTb21ldGltZXMgZXJybm8gZGlkbid0IGdldCBzZXQgKi8KLSAgICBlbHNlCi0gICAgICAgIHMgPSBzdHJlcnJvcihpKTsKLSAgICBtZXNzYWdlID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgc3RybGVuKHMpLCAiaWdub3JlIik7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgICBjaGFyICpzID0gc3RyZXJyb3IoaSk7CisgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHMsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFNvbWV0aW1lcyBlcnJubyBkaWRuJ3QgZ2V0IHNldCAqLworICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVycm9yIik7CisgICAgfQogI2Vsc2UKICAgICBpZiAoaSA9PSAwKQogICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVycm9yIik7IC8qIFNvbWV0aW1lcyBlcnJubyBkaWRuJ3QgZ2V0IHNldCAqLwpAQCAtMzk1LDcgKzQyOSw3IEBACiAgICAgICAgICAgICAgICAgLyogcmVtb3ZlIHRyYWlsaW5nIGNyL2xmIGFuZCBkb3RzICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDAgJiYgKHNfYnVmW2xlbi0xXSA8PSBMJyAnIHx8IHNfYnVmW2xlbi0xXSA9PSBMJy4nKSkKICAgICAgICAgICAgICAgICAgICAgc19idWZbLS1sZW5dID0gTCdcMCc7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzX2J1ZiwgbGVuKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihzX2J1ZiwgbGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTQxMCwxNCArNDQ0LDE4IEBACiAgICAgfQogCiAgICAgaWYgKGZpbGVuYW1lT2JqZWN0ICE9IE5VTEwpCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaU9PKSIsIGksIG1lc3NhZ2UsIGZpbGVuYW1lT2JqZWN0KTsKKyAgICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihpT08pIiwgaSwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpTykiLCBpLCBtZXNzYWdlKTsKKyAgICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihpTykiLCBpLCBtZXNzYWdlKTsKICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CiAKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChleGMsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKGFyZ3MgIT0gTlVMTCkgeworICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbChleGMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKikgUHlfVFlQRSh2KSwgdik7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIH0KICAgICB9CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIExvY2FsRnJlZShzX2J1Zik7CkBAIC00NjQsNyArNTAyLDcgQEAKICAgICBpbnQgbGVuOwogICAgIFdDSEFSICpzX2J1ZiA9IE5VTEw7IC8qIEZyZWUgdmlhIExvY2FsRnJlZSAqLwogICAgIFB5T2JqZWN0ICptZXNzYWdlOwotICAgIFB5T2JqZWN0ICp2OworICAgIFB5T2JqZWN0ICphcmdzLCAqdjsKICAgICBEV09SRCBlcnIgPSAoRFdPUkQpaWVycjsKICAgICBpZiAoZXJyPT0wKSBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKICAgICBsZW4gPSBGb3JtYXRNZXNzYWdlVygKQEAgLTQ4Nyw3ICs1MjUsNyBAQAogICAgICAgICAvKiByZW1vdmUgdHJhaWxpbmcgY3IvbGYgYW5kIGRvdHMgKi8KICAgICAgICAgd2hpbGUgKGxlbiA+IDAgJiYgKHNfYnVmW2xlbi0xXSA8PSBMJyAnIHx8IHNfYnVmW2xlbi0xXSA9PSBMJy4nKSkKICAgICAgICAgICAgIHNfYnVmWy0tbGVuXSA9IEwnXDAnOwotICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNfYnVmLCBsZW4pOworICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihzX2J1ZiwgbGVuKTsKICAgICB9CiAKICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQpAQCAtNDk2LDE1ICs1MzQsMjAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZpbGVuYW1lT2JqZWN0ICE9IE5VTEwpCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaU9PKSIsIGVyciwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QpOwotICAgIGVsc2UKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpTykiLCBlcnIsIG1lc3NhZ2UpOworICAgIGlmIChmaWxlbmFtZU9iamVjdCA9PSBOVUxMKQorICAgICAgICBmaWxlbmFtZU9iamVjdCA9IFB5X05vbmU7CisgICAgLyogVGhpcyBpcyB0aGUgY29uc3RydWN0b3Igc2lnbmF0dXJlIGZvciBwYXNzaW5nIGEgV2luZG93cyBlcnJvciBjb2RlLgorICAgICAgIFRoZSBQT1NJWCB0cmFuc2xhdGlvbiB3aWxsIGJlIGZpZ3VyZWQgb3V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4gKi8KKyAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiKGlPT2kpIiwgMCwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QsIGVycik7CiAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogCi0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoZXhjLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOworICAgIGlmIChhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGwoZXhjLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopIFB5X1RZUEUodiksIHYpOworICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICB9CiAgICAgfQogICAgIExvY2FsRnJlZShzX2J1Zik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01NzUsNiArNjE4LDQ5IEBACiB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCitQeU9iamVjdCAqCitQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgUHlPYmplY3QgKmFyZ3MsICprd2FyZ3MsICplcnJvcjsKKworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworICAgICAgICBuYW1lID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIHBhdGggPSBQeV9Ob25lOworICAgIH0KKworICAgIFB5X0lOQ1JFRihtc2cpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSk7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpOworCisgICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsKFB5RXhjX0ltcG9ydEVycm9yLCBhcmdzLCBrd2FyZ3MpOworICAgIGlmIChlcnJvciAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKilQeV9UWVBFKGVycm9yKSwgZXJyb3IpOworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgIH0KKworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKworICAgIHJldHVybiBOVUxMOworfQorCiB2b2lkCiBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewpAQCAtNjU2LDcgKzc0Miw3IEBACiAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KLSAgICAvKiBDcmVhdGUgYSByZWFsIG5ldy1zdHlsZSBjbGFzcy4gKi8KKyAgICAvKiBDcmVhdGUgYSByZWFsIGNsYXNzLiAqLwogICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlUeXBlX1R5cGUsICJzT08iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QrMSwgYmFzZXMsIGRpY3QpOwogICBmYWlsdXJlOgpAQCAtNzA3LDYgKzc5Myw3IEBACiB2b2lkCiBQeUVycl9Xcml0ZVVucmFpc2FibGUoUHlPYmplY3QgKm9iaikKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKICAgICBQeU9iamVjdCAqZiwgKnQsICp2LCAqdGI7CiAgICAgUHlFcnJfRmV0Y2goJnQsICZ2LCAmdGIpOwogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwpAQCAtNzIzLDcgKzgxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGRvdCsxOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtb2R1bGVOYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0LCAiX19tb2R1bGVfXyIpOworICAgICAgICAgICAgbW9kdWxlTmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodCwgJlB5SWRfX19tb2R1bGVfXyk7CiAgICAgICAgICAgICBpZiAobW9kdWxlTmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiPHVua25vd24+IiwgZik7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTc3NCw2ICs4NjEsMTIgQEAKIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogewogICAgIFB5T2JqZWN0ICpleGMsICp2LCAqdGIsICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5hbWUpOworICAgIF9QeV9JREVOVElGSUVSKGxpbmVubyk7CisgICAgX1B5X0lERU5USUZJRVIobXNnKTsKKyAgICBfUHlfSURFTlRJRklFUihvZmZzZXQpOworICAgIF9QeV9JREVOVElGSUVSKHByaW50X2ZpbGVfYW5kX2xpbmUpOworICAgIF9QeV9JREVOVElGSUVSKHRleHQpOwogCiAgICAgLyogYWRkIGF0dHJpYnV0ZXMgZm9yIHRoZSBsaW5lIG51bWJlciBhbmQgZmlsZW5hbWUgZm9yIHRoZSBlcnJvciAqLwogICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2LCAmdGIpOwpAQCAtNzg0LDcgKzg3Nyw3IEBACiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAibGluZW5vIiwgdG1wKSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfbGluZW5vLCB0bXApKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQpAQCAtNzkzLDcgKzg4Niw3IEBACiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgIm9mZnNldCIsIHRtcCkpCisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9vZmZzZXQsIHRtcCkpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICB9CkBAIC04MDMsMzUgKzg5NiwzNSBAQAogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJmaWxlbmFtZSIsIHRtcCkpCisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9maWxlbmFtZSwgdG1wKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgIH0KIAogICAgICAgICB0bXAgPSBQeUVycl9Qcm9ncmFtVGV4dChmaWxlbmFtZSwgbGluZW5vKTsKICAgICAgICAgaWYgKHRtcCkgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgInRleHQiLCB0bXApKQorICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfdGV4dCwgdG1wKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgIm9mZnNldCIsIFB5X05vbmUpKSB7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfb2Zmc2V0LCBQeV9Ob25lKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KICAgICBpZiAoZXhjICE9IFB5RXhjX1N5bnRheEVycm9yKSB7Ci0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh2LCAibXNnIikpIHsKKyAgICAgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKHYsICZQeUlkX21zZykpIHsKICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X1N0cih2KTsKICAgICAgICAgICAgIGlmICh0bXApIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAibXNnIiwgdG1wKSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9tc2csIHRtcCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHYsICJwcmludF9maWxlX2FuZF9saW5lIikpIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJwcmludF9maWxlX2FuZF9saW5lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUpKQorICAgICAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQodiwgJlB5SWRfcHJpbnRfZmlsZV9hbmRfbGluZSkpIHsKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ZpbGV1dGlscy5jIGIvUHl0aG9uL2ZpbGV1dGlscy5jCmluZGV4IDUzZThhNDcuLmI3YzQyZTggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9maWxldXRpbHMuYworKysgYi9QeXRob24vZmlsZXV0aWxzLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAib3NkZWZzLmgiCiAjaWZkZWYgTVNfV0lORE9XUwogIyAgaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCkBAIC0xMiw2ICsxMywzNiBAQAogZXh0ZXJuIHdjaGFyX3QqIF9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpOwogI2VuZGlmCiAKK1B5T2JqZWN0ICoKK19QeV9kZXZpY2VfZW5jb2RpbmcoaW50IGZkKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKKyAgICBVSU5UIGNwOworI2VuZGlmCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8ICFpc2F0dHkoZmQpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoTVNfV0lONjQpCisgICAgaWYgKGZkID09IDApCisgICAgICAgIGNwID0gR2V0Q29uc29sZUNQKCk7CisgICAgZWxzZSBpZiAoZmQgPT0gMSB8fCBmZCA9PSAyKQorICAgICAgICBjcCA9IEdldENvbnNvbGVPdXRwdXRDUCgpOworICAgIGVsc2UKKyAgICAgICAgY3AgPSAwOworICAgIC8qIEdldENvbnNvbGVDUCgpIGFuZCBHZXRDb25zb2xlT3V0cHV0Q1AoKSByZXR1cm4gMCBpZiB0aGUgYXBwbGljYXRpb24KKyAgICAgICBoYXMgbm8gY29uc29sZSAqLworICAgIGlmIChjcCAhPSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImNwJXUiLCAodW5zaWduZWQgaW50KWNwKTsKKyNlbGlmIGRlZmluZWQoQ09ERVNFVCkKKyAgICB7CisgICAgICAgIGNoYXIgKmNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKKyAgICAgICAgaWYgKGNvZGVzZXQgIT0gTlVMTCAmJiBjb2Rlc2V0WzBdICE9IDApCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoY29kZXNldCk7CisgICAgfQorI2VuZGlmCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKICNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiBleHRlcm4gaW50IF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CiAKQEAgLTIwMCw3ICsyMzEsOSBAQAogICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKHVzZQogICAgUHlNZW1fRnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSkgYW5kIHdyaXRlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiB3aWRlCiAgICBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byAqc2l6ZSBpZiBzaXplIGlzIG5vdCBOVUxMLCBvcgotICAgTlVMTCBvbiBlcnJvciAoY29udmVyc2lvbiBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcikuCisgICBOVUxMIG9uIGVycm9yIChkZWNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcikuIElmIHNpemUgaXMgbm90IE5VTEwsCisgICAqc2l6ZSBpcyBzZXQgdG8gKHNpemVfdCktMSBvbiBtZW1vcnkgZXJyb3IgYW5kIChzaXplX3QpLTIgb24gZGVjb2RpbmcKKyAgIGVycm9yLgogCiAgICBDb252ZXJzaW9uIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMKICAgIGxpYnJhcnkuICovCkBAIC0yOTIsOCArMzI1LDkgQEAKICAgICAgICAgICAgICAgIHNpbmNlIHdlIHByb3ZpZGUgZXZlcnl0aGluZyB0aGF0IHdlIGhhdmUgLQogICAgICAgICAgICAgICAgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDIGxpYnJhcnksIG9yIEkKICAgICAgICAgICAgICAgIG1pc3VuZGVyc3Rvb2QgaG93IG1icnRvd2Mgd29ya3MuICovCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuZXhwZWN0ZWQgbWJydG93YyByZXN1bHQgLTJcbiIpOwogICAgICAgICAgICAgUHlNZW1fRnJlZShyZXMpOworICAgICAgICAgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqc2l6ZSA9IChzaXplX3QpLTI7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoY29udmVydGVkID09IChzaXplX3QpLTEpIHsKQEAgLTMyOSw3ICszNjMsOCBAQAogI2VuZGlmICAgLyogSEFWRV9NQlJUT1dDICovCiAgICAgcmV0dXJuIHJlczsKIG9vbToKLSAgICBmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnlcbiIpOworICAgIGlmIChzaXplICE9IE5VTEwpCisgICAgICAgICpzaXplID0gKHNpemVfdCktMTsKICAgICByZXR1cm4gTlVMTDsKICNlbmRpZiAgIC8qIF9fQVBQTEVfXyAqLwogfQpAQCAtMzQxLDEwICszNzYsMTAgQEAKICAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHJldmVyc2Ugb2YgX1B5X2NoYXIyd2NoYXIoKS4KIAogICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZyAodXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCi0gICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBjb252ZXJzaW9uIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgorICAgdGhlIG1lbW9yeSksIG9yIE5VTEwgb24gZW5jb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCiAKICAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTDogKmVycm9yX3BvcyBpcyB0aGUgaW5kZXggb2YgdGhlIGludmFsaWQgY2hhcmFjdGVyCi0gICBvbiBjb252ZXJzaW9uIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KKyAgIG9uIGVuY29kaW5nIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KIGNoYXIqCiBfUHlfd2NoYXIyY2hhcihjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKIHsKQEAgLTM1Nyw5ICszOTIsNyBAQAogICAgIGlmICh1bmljb2RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTQ4Myw4ICs1MTYsOCBAQAogLyogQ2FsbCBfd3N0YXQoKSBvbiBXaW5kb3dzLCBvciBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kCiAgICBjYWxsIHN0YXQoKSBvdGhlcndpc2UuIE9ubHkgZmlsbCBzdF9tb2RlIGF0dHJpYnV0ZSBvbiBXaW5kb3dzLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBfd3N0YXQoKSAvIHN0YXQoKSBlcnJvciBvciAoaWYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgIHVuaWNvZGUgZXJyb3IuICovCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBfd3N0YXQoKSAvIHN0YXQoKSBlcnJvciwgLTIgaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkLiAqLwogCiBpbnQKIF9QeV9zdGF0KFB5T2JqZWN0ICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKQEAgLTQ5Miw4ICs1MjUsMTIgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaW50IGVycjsKICAgICBzdHJ1Y3QgX3N0YXQgd3N0YXRidWY7CisgICAgd2NoYXJfdCAqd3BhdGg7CiAKLSAgICBlcnIgPSBfd3N0YXQoUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aCksICZ3c3RhdGJ1Zik7CisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTI7CisgICAgZXJyID0gX3dzdGF0KHdwYXRoLCAmd3N0YXRidWYpOwogICAgIGlmICghZXJyKQogICAgICAgICBzdGF0YnVmLT5zdF9tb2RlID0gd3N0YXRidWYuc3RfbW9kZTsKICAgICByZXR1cm4gZXJyOwpAQCAtNTAxLDcgKzUzOCw3IEBACiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAtMjsKICAgICByZXQgPSBzdGF0KFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgc3RhdGJ1Zik7CiAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICByZXR1cm4gcmV0OwpAQCAtNTQ3LDE4ICs1ODQsMjkgQEAKIF9QeV9mb3BlbihQeU9iamVjdCAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKIHsKICNpZmRlZiBNU19XSU5ET1dTCisgICAgd2NoYXJfdCAqd3BhdGg7CiAgICAgd2NoYXJfdCB3bW9kZVsxMF07CiAgICAgaW50IHVzaXplOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdHIgZmlsZSBwYXRoIGV4cGVjdGVkIHVuZGVyIFdpbmRvd3MsIGdvdCAlUiIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRoKTsKKyAgICBpZiAod3BhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB1c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBtb2RlLCAtMSwgd21vZGUsIHNpemVvZih3bW9kZSkpOwogICAgIGlmICh1c2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfd2ZvcGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHBhdGgpLCB3bW9kZSk7CisgICAgcmV0dXJuIF93Zm9wZW4od3BhdGgsIHdtb2RlKTsKICNlbHNlCiAgICAgRklMRSAqZjsKLSAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwotICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihwYXRoLCAmYnl0ZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmID0gZm9wZW4oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBtb2RlKTsKICAgICBQeV9ERUNSRUYoYnl0ZXMpOwpAQCAtNTY5LDcgKzYxNyw3IEBACiAjaWZkZWYgSEFWRV9SRUFETElOSwogCiAvKiBSZWFkIHZhbHVlIG9mIHN5bWJvbGljIGxpbmsuIEVuY29kZSB0aGUgcGF0aCB0byB0aGUgbG9jYWxlIGVuY29kaW5nLCBkZWNvZGUKLSAgIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuIFJldHVybiAtMSBvbiBlcnJvci4gKi8KIAogaW50CiBfUHlfd3JlYWRsaW5rKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHdjaGFyX3QgKmJ1Ziwgc2l6ZV90IGJ1ZnNpeikKQEAgLTYxMyw3ICs2NjEsOCBAQAogI2lmZGVmIEhBVkVfUkVBTFBBVEgKIAogLyogUmV0dXJuIHRoZSBjYW5vbmljYWxpemVkIGFic29sdXRlIHBhdGhuYW1lLiBFbmNvZGUgcGF0aCB0byB0aGUgbG9jYWxlCi0gICBlbmNvZGluZywgZGVjb2RlIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgZW5jb2RpbmcsIGRlY29kZSB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4KKyAgIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLwogCiB3Y2hhcl90KgogX1B5X3dyZWFscGF0aChjb25zdCB3Y2hhcl90ICpwYXRoLApAQCAtNjUxLDcgKzcwMCw4IEBACiAjZW5kaWYKIAogLyogR2V0IHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gc2l6ZSBpcyB0aGUgYnVmZmVyIHNpemUgaW4gd2lkZSBjaGFyYWN0ZXJzCi0gICBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyLiBEZWNvZGUgdGhlIHBhdGggZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiAqLworICAgaW5jbHVkaW5nIHRoZSBudWxsIGNoYXJhY3Rlci4gRGVjb2RlIHRoZSBwYXRoIGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4KKyAgIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLwogCiB3Y2hhcl90KgogX1B5X3dnZXRjd2Qod2NoYXJfdCAqYnVmLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggYzM1MDkwNy4uYWE2MjUwMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTMsMTIgKzMsMTUzNCBAQAogICAgb2YgaW50Ll9fZmxvYXRfXywgZXRjLiwgdGhhdCB0YWtlIGFuZCByZXR1cm4gdW5pY29kZSBvYmplY3RzICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICIuLi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgorCisvKiBSYWlzZXMgYW4gZXhjZXB0aW9uIGFib3V0IGFuIHVua25vd24gcHJlc2VudGF0aW9uIHR5cGUgZm9yIHRoaXMKKyAqIHR5cGUuICovCisKK3N0YXRpYyB2b2lkCit1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKFB5X1VDUzQgcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfbmFtZSkKK3sKKyAgICAvKiAlYyBtaWdodCBiZSBvdXQtb2YtcmFuZ2UsIGhlbmNlIHRoZSB0d28gY2FzZXMuICovCisgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJyVjJyAiCisgICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKKyAgICBlbHNlCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJ1xceCV4JyAiCisgICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOworfQorCitzdGF0aWMgdm9pZAoraW52YWxpZF9jb21tYV90eXBlKFB5X1VDUzQgcHJlc2VudGF0aW9uX3R5cGUpCit7CisgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKKyAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlKTsKKyAgICBlbHNlCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKKyAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOworfQorCisvKgorICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgorICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKKyAgICBpbnRlZ2VyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBjb25zdW1lZC4KKworICAgIHJldHVybnMgLTEgb24gZXJyb3IuCisqLworc3RhdGljIGludAorZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcG9zLCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKK3sKKyAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbDsKKyAgICBpbnQgbnVtZGlnaXRzOworICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKKyAgICBmb3IgKDs7KCpwb3MpKyssIG51bWRpZ2l0cysrKSB7CisgICAgICAgIGlmICgqcG9zID49IGVuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCAqcG9zKSk7CisgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyoKKyAgICAgICAgICAgRGV0ZWN0IHBvc3NpYmxlIG92ZXJmbG93IGJlZm9yZSBpdCBoYXBwZW5zOgorCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbCA+IFBZX1NTSVpFX1RfTUFYIGlmIGFuZCBvbmx5IGlmCisgICAgICAgICAgICAgIGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTAuCisgICAgICAgICovCisgICAgICAgIGlmIChhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsOworICAgIH0KKyAgICAqcmVzdWx0ID0gYWNjdW11bGF0b3I7CisgICAgcmV0dXJuIG51bWRpZ2l0czsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyIHBhcnNpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzcGVjaWZpZXIgYWxpZ25tZW50IHRva2VuICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQoraXNfYWxpZ25tZW50X3Rva2VuKFB5X1VDUzQgYykKK3sKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlICc8JzogY2FzZSAnPic6IGNhc2UgJz0nOiBjYXNlICdeJzoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzaWduIGVsZW1lbnQgKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitpc19zaWduX2VsZW1lbnQoUHlfVUNTNCBjKQoreworICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgJyAnOiBjYXNlICcrJzogY2FzZSAnLSc6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KIAogCi0jZGVmaW5lIEZPUk1BVF9TVFJJTkcgIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQKLSNkZWZpbmUgRk9STUFUX0xPTkcgICAgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZAotI2RlZmluZSBGT1JNQVRfRkxPQVQgICBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZAotI2RlZmluZSBGT1JNQVRfQ09NUExFWCBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfVUNTNCBmaWxsX2NoYXI7CisgICAgUHlfVUNTNCBhbGlnbjsKKyAgICBpbnQgYWx0ZXJuYXRlOworICAgIFB5X1VDUzQgc2lnbjsKKyAgICBQeV9zc2l6ZV90IHdpZHRoOworICAgIGludCB0aG91c2FuZHNfc2VwYXJhdG9yczsKKyAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKKyAgICBQeV9VQ1M0IHR5cGU7Cit9IEludGVybmFsRm9ybWF0U3BlYzsKIAotI2luY2x1ZGUgIi4uL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oIgorI2lmIDAKKy8qIE9jY2Fzc2lvbmFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFNob3VsZCBub3JtYWxseSBiZSBjb21tZW50ZWQgb3V0LiAqLworc3RhdGljIHZvaWQKK0RFQlVHX1BSSU5UX0ZPUk1BVF9TUEVDKEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQoreworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGZpbGxfY2hhciAlZFxuIiwgZm9ybWF0LT5maWxsX2NoYXIpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsaWduICVkXG4iLCBmb3JtYXQtPmFsaWduKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbHRlcm5hdGUgJWRcbiIsIGZvcm1hdC0+YWx0ZXJuYXRlKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBzaWduICVkXG4iLCBmb3JtYXQtPnNpZ24pOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHdpZHRoICV6ZFxuIiwgZm9ybWF0LT53aWR0aCk7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdGhvdXNhbmRzX3NlcGFyYXRvcnMgJWRcbiIsCisgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHByZWNpc2lvbiAlemRcbiIsIGZvcm1hdC0+cHJlY2lzaW9uKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0eXBlICVjXG4iLCBmb3JtYXQtPnR5cGUpOworICAgIHByaW50ZigiXG4iKTsKK30KKyNlbmRpZgorCisKKy8qCisgIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmb3JtYXRfc3BlYywgZW5kIHBvaW50cyBqdXN0IHBhc3QgaXRzIGVuZC4KKyAgZmlsbHMgaW4gZm9ybWF0IHdpdGggdGhlIHBhcnNlZCBpbmZvcm1hdGlvbi4KKyAgcmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KKyAgaWYgZmFpbHVyZSwgc2V0cyB0aGUgZXhjZXB0aW9uCisqLworc3RhdGljIGludAorcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCit7CisgICAgUHlfc3NpemVfdCBwb3MgPSBzdGFydDsKKyAgICAvKiBlbmQtcG9zIGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUgdG8gc3BlY2lmeSB0aGUgbGVuZ3RoIG9mCisgICAgICAgdGhlIGlucHV0IHN0cmluZyAqLworI2RlZmluZSBSRUFEX3NwZWMoaW5kZXgpIFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMsIGluZGV4KQorCisgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKKyAgICBpbnQgYWxpZ25fc3BlY2lmaWVkID0gMDsKKworICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJ1wwJzsKKyAgICBmb3JtYXQtPmFsaWduID0gZGVmYXVsdF9hbGlnbjsKKyAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDA7CisgICAgZm9ybWF0LT5zaWduID0gJ1wwJzsKKyAgICBmb3JtYXQtPndpZHRoID0gLTE7CisgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDA7CisgICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKKyAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7CisKKyAgICAvKiBJZiB0aGUgc2Vjb25kIGNoYXIgaXMgYW4gYWxpZ25tZW50IHRva2VuLAorICAgICAgIHRoZW4gcGFyc2UgdGhlIGZpbGwgY2hhciAqLworICAgIGlmIChlbmQtcG9zID49IDIgJiYgaXNfYWxpZ25tZW50X3Rva2VuKFJFQURfc3BlYyhwb3MrMSkpKSB7CisgICAgICAgIGZvcm1hdC0+YWxpZ24gPSBSRUFEX3NwZWMocG9zKzEpOworICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9IFJFQURfc3BlYyhwb3MpOworICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOworICAgICAgICBwb3MgKz0gMjsKKyAgICB9CisgICAgZWxzZSBpZiAoZW5kLXBvcyA+PSAxICYmIGlzX2FsaWdubWVudF90b2tlbihSRUFEX3NwZWMocG9zKSkpIHsKKyAgICAgICAgZm9ybWF0LT5hbGlnbiA9IFJFQURfc3BlYyhwb3MpOworICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBQYXJzZSB0aGUgdmFyaW91cyBzaWduIG9wdGlvbnMgKi8KKyAgICBpZiAoZW5kLXBvcyA+PSAxICYmIGlzX3NpZ25fZWxlbWVudChSRUFEX3NwZWMocG9zKSkpIHsKKyAgICAgICAgZm9ybWF0LT5zaWduID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIElmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyAjLCB3ZSdyZSBpbiBhbHRlcm5hdGUgbW9kZS4gIFRoaXMgb25seQorICAgICAgIGFwcGxpZXMgdG8gaW50ZWdlcnMuICovCisgICAgaWYgKGVuZC1wb3MgPj0gMSAmJiBSRUFEX3NwZWMocG9zKSA9PSAnIycpIHsKKyAgICAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAxOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBUaGUgc3BlY2lhbCBjYXNlIGZvciAwLXBhZGRpbmcgKGJhY2t3YXJkcyBjb21wYXQpICovCisgICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgJiYgZW5kLXBvcyA+PSAxICYmIFJFQURfc3BlYyhwb3MpID09ICcwJykgeworICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9ICcwJzsKKyAgICAgICAgaWYgKCFhbGlnbl9zcGVjaWZpZWQpIHsKKyAgICAgICAgICAgIGZvcm1hdC0+YWxpZ24gPSAnPSc7CisgICAgICAgIH0KKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgY29uc3VtZWQgPSBnZXRfaW50ZWdlcihmb3JtYXRfc3BlYywgJnBvcywgZW5kLCAmZm9ybWF0LT53aWR0aCk7CisgICAgaWYgKGNvbnN1bWVkID09IC0xKQorICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLworICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIElmIGNvbnN1bWVkIGlzIDAsIHdlIGRpZG4ndCBjb25zdW1lIGFueSBjaGFyYWN0ZXJzIGZvciB0aGUKKyAgICAgICB3aWR0aC4gSW4gdGhhdCBjYXNlLCByZXNldCB0aGUgd2lkdGggdG8gLTEsIGJlY2F1c2UKKyAgICAgICBnZXRfaW50ZWdlcigpIHdpbGwgaGF2ZSBzZXQgaXQgdG8gemVyby4gLTEgaXMgaG93IHdlIHJlY29yZAorICAgICAgIHRoYXQgdGhlIHdpZHRoIHdhc24ndCBzcGVjaWZpZWQuICovCisgICAgaWYgKGNvbnN1bWVkID09IDApCisgICAgICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKKworICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKKyAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDE7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIFBhcnNlIGZpZWxkIHByZWNpc2lvbiAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcuJykgeworICAgICAgICArK3BvczsKKworICAgICAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKGZvcm1hdF9zcGVjLCAmcG9zLCBlbmQsICZmb3JtYXQtPnByZWNpc2lvbik7CisgICAgICAgIGlmIChjb25zdW1lZCA9PSAtMSkKKyAgICAgICAgICAgIC8qIE92ZXJmbG93IGVycm9yLiBFeGNlcHRpb24gYWxyZWFkeSBzZXQuICovCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAvKiBOb3QgaGF2aW5nIGEgcHJlY2lzaW9uIGFmdGVyIGEgZG90IGlzIGFuIGVycm9yLiAqLworICAgICAgICBpZiAoY29uc3VtZWQgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZvcm1hdCBzcGVjaWZpZXIgbWlzc2luZyBwcmVjaXNpb24iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKiBGaW5hbGx5LCBwYXJzZSB0aGUgdHlwZSBmaWVsZC4gKi8KKworICAgIGlmIChlbmQtcG9zID4gMSkgeworICAgICAgICAvKiBNb3JlIHRoYW4gb25lIGNoYXIgcmVtYWluLCBpbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXIuICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChlbmQtcG9zID09IDEpIHsKKyAgICAgICAgZm9ybWF0LT50eXBlID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIERvIGFzIG11Y2ggdmFsaWRhdGluZyBhcyB3ZSBjYW4sIGp1c3QgYnkgbG9va2luZyBhdCB0aGUgZm9ybWF0CisgICAgICAgc3BlY2lmaWVyLiAgRG8gbm90IHRha2UgaW50byBhY2NvdW50IHdoYXQgdHlwZSBvZiBmb3JtYXR0aW5nCisgICAgICAgd2UncmUgZG9pbmcgKGludCwgZmxvYXQsIHN0cmluZykuICovCisKKyAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycykgeworICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgeworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgY2FzZSAnZSc6CisgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICBjYXNlICdnJzoKKyAgICAgICAgY2FzZSAnRSc6CisgICAgICAgIGNhc2UgJ0cnOgorICAgICAgICBjYXNlICclJzoKKyAgICAgICAgY2FzZSAnRic6CisgICAgICAgIGNhc2UgJ1wwJzoKKyAgICAgICAgICAgIC8qIFRoZXNlIGFyZSBhbGxvd2VkLiBTZWUgUEVQIDM3OC4qLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpbnZhbGlkX2NvbW1hX3R5cGUoZm9ybWF0LT50eXBlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0IChmb3JtYXQtPmFsaWduIDw9IDEyNyk7CisgICAgYXNzZXJ0IChmb3JtYXQtPnNpZ24gPD0gMTI3KTsKKyAgICByZXR1cm4gMTsKK30KKworLyogQ2FsY3VsYXRlIHRoZSBwYWRkaW5nIG5lZWRlZC4gKi8KK3N0YXRpYyB2b2lkCitjYWxjX3BhZGRpbmcoUHlfc3NpemVfdCBuY2hhcnMsIFB5X3NzaXplX3Qgd2lkdGgsIFB5X1VDUzQgYWxpZ24sCisgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9scGFkZGluZywgUHlfc3NpemVfdCAqbl9ycGFkZGluZywKKyAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3RvdGFsKQoreworICAgIGlmICh3aWR0aCA+PSAwKSB7CisgICAgICAgIGlmIChuY2hhcnMgPiB3aWR0aCkKKyAgICAgICAgICAgICpuX3RvdGFsID0gbmNoYXJzOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbl90b3RhbCA9IHdpZHRoOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogbm90IHNwZWNpZmllZCwgdXNlIGFsbCBvZiB0aGUgY2hhcnMgYW5kIG5vIG1vcmUgKi8KKyAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7CisgICAgfQorCisgICAgLyogRmlndXJlIG91dCBob3cgbXVjaCBsZWFkaW5nIHNwYWNlIHdlIG5lZWQsIGJhc2VkIG9uIHRoZQorICAgICAgIGFsaWduaW5nICovCisgICAgaWYgKGFsaWduID09ICc+JykKKyAgICAgICAgKm5fbHBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFyczsKKyAgICBlbHNlIGlmIChhbGlnbiA9PSAnXicpCisgICAgICAgICpuX2xwYWRkaW5nID0gKCpuX3RvdGFsIC0gbmNoYXJzKSAvIDI7CisgICAgZWxzZSBpZiAoYWxpZ24gPT0gJzwnIHx8IGFsaWduID09ICc9JykKKyAgICAgICAgKm5fbHBhZGRpbmcgPSAwOworICAgIGVsc2UgeworICAgICAgICAvKiBXZSBzaG91bGQgbmV2ZXIgaGF2ZSBhbiB1bnNwZWNpZmllZCBhbGlnbm1lbnQuICovCisgICAgICAgICpuX2xwYWRkaW5nID0gMDsKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICAgICpuX3JwYWRkaW5nID0gKm5fdG90YWwgLSBuY2hhcnMgLSAqbl9scGFkZGluZzsKK30KKworLyogRG8gdGhlIHBhZGRpbmcsIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBjYWxsZXItc3VwcGxpZWQKKyAgIGNvbnRlbnQgZ29lcy4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitmaWxsX3BhZGRpbmcoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgbmNoYXJzLAorICAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyLCBQeV9zc2l6ZV90IG5fbHBhZGRpbmcsCisgICAgICAgICAgICAgUHlfc3NpemVfdCBuX3JwYWRkaW5nKQoreworICAgIFB5X3NzaXplX3QgcG9zOworCisgICAgLyogUGFkIG9uIGxlZnQuICovCisgICAgaWYgKG5fbHBhZGRpbmcpIHsKKyAgICAgICAgcG9zID0gd3JpdGVyLT5wb3M7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsIHBvcywgbl9scGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICB9CisKKyAgICAvKiBQYWQgb24gcmlnaHQuICovCisgICAgaWYgKG5fcnBhZGRpbmcpIHsKKyAgICAgICAgcG9zID0gd3JpdGVyLT5wb3MgKyBuY2hhcnMgKyBuX2xwYWRkaW5nOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLCBwb3MsIG5fcnBhZGRpbmcsIGZpbGxfY2hhcik7CisgICAgfQorCisgICAgLyogUG9pbnRlciB0byB0aGUgdXNlciBjb250ZW50LiAqLworICAgIHdyaXRlci0+cG9zICs9IG5fbHBhZGRpbmc7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogY29tbW9uIHJvdXRpbmVzIGZvciBudW1lcmljIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogTG9jYWxlIHR5cGUgY29kZXMuICovCisjZGVmaW5lIExUX0NVUlJFTlRfTE9DQUxFIDAKKyNkZWZpbmUgTFRfREVGQVVMVF9MT0NBTEUgMQorI2RlZmluZSBMVF9OT19MT0NBTEUgMgorCisvKiBMb2NhbGUgaW5mbyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMgYW5kIHRoZSBwYXJ0IG9mIGZsb2F0cworICAgYmVmb3JlIGFuZCBpbmNsdWRpbmcgdGhlIGRlY2ltYWwuIE5vdGUgdGhhdCBsb2NhbGVzIG9ubHkgc3VwcG9ydAorICAgOC1iaXQgY2hhcnMsIG5vdCB1bmljb2RlLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpkZWNpbWFsX3BvaW50OworICAgIFB5T2JqZWN0ICp0aG91c2FuZHNfc2VwOworICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nOworfSBMb2NhbGVJbmZvOworCisjZGVmaW5lIFNUQVRJQ19MT0NBTEVfSU5GT19JTklUIHswLCAwLCAwfQorCisvKiBkZXNjcmliZXMgdGhlIGxheW91dCBmb3IgYW4gaW50ZWdlciwgc2VlIHRoZSBjb21tZW50IGluCisgICBjYWxjX251bWJlcl93aWR0aHMoKSBmb3IgZGV0YWlscyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5X3NzaXplX3Qgbl9scGFkZGluZzsKKyAgICBQeV9zc2l6ZV90IG5fcHJlZml4OworICAgIFB5X3NzaXplX3Qgbl9zcGFkZGluZzsKKyAgICBQeV9zc2l6ZV90IG5fcnBhZGRpbmc7CisgICAgY2hhciBzaWduOworICAgIFB5X3NzaXplX3Qgbl9zaWduOyAgICAgIC8qIG51bWJlciBvZiBkaWdpdHMgbmVlZGVkIGZvciBzaWduICgwLzEpICovCisgICAgUHlfc3NpemVfdCBuX2dyb3VwZWRfZGlnaXRzOyAvKiBTcGFjZSB0YWtlbiB1cCBieSB0aGUgZGlnaXRzLCBpbmNsdWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBncm91cGluZyBjaGFycy4gKi8KKyAgICBQeV9zc2l6ZV90IG5fZGVjaW1hbDsgICAvKiAwIGlmIG9ubHkgYW4gaW50ZWdlciAqLworICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7IC8qIERpZ2l0cyBpbiBkZWNpbWFsIGFuZC9vciBleHBvbmVudCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGluZyB0aGUgZGVjaW1hbCBpdHNlbGYsIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudC4gKi8KKworICAgIC8qIFRoZXNlIDIgYXJlIG5vdCB0aGUgd2lkdGhzIG9mIGZpZWxkcywgYnV0IGFyZSBuZWVkZWQgYnkKKyAgICAgICBTVFJJTkdMSUJfR1JPVVBJTkcuICovCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0czsgICAgLyogVGhlIG51bWJlciBvZiBkaWdpdHMgYmVmb3JlIGEgZGVjaW1hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGV4cG9uZW50LiAqLworICAgIFB5X3NzaXplX3Qgbl9taW5fd2lkdGg7IC8qIFRoZSBtaW5fd2lkdGggd2UgdXNlZCB3aGVuIHdlIGNvbXB1dGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5fZ3JvdXBlZF9kaWdpdHMgd2lkdGguICovCit9IE51bWJlckZpZWxkV2lkdGhzOworCisKKy8qIEdpdmVuIGEgbnVtYmVyIG9mIHRoZSBmb3JtOgorICAgZGlnaXRzW3JlbWFpbmRlcl0KKyAgIHdoZXJlIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHRvIHRoZSBlbmQsIGZpbmQgd2hlcmUKKyAgICB0aGUgaW50ZWdlciBwYXJ0IGVuZHMuIFRoaXMgY291bGQgYmUgYSBkZWNpbWFsLCBhbiBleHBvbmVudCwgYm90aCwKKyAgICBvciBuZWl0aGVyLgorICAgSWYgYSBkZWNpbWFsIHBvaW50IGlzIHByZXNlbnQsIHNldCAqaGFzX2RlY2ltYWwgYW5kIGluY3JlbWVudAorICAgIHJlbWFpbmRlciBiZXlvbmQgaXQuCisgICBSZXN1bHRzIGFyZSB1bmRlZmluZWQgKGJ1dCBzaG91bGRuJ3QgY3Jhc2gpIGZvciBpbXByb3Blcmx5CisgICAgZm9ybWF0dGVkIHN0cmluZ3MuCisqLworc3RhdGljIHZvaWQKK3BhcnNlX251bWJlcihQeU9iamVjdCAqcywgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fcmVtYWluZGVyLCBpbnQgKmhhc19kZWNpbWFsKQoreworICAgIFB5X3NzaXplX3QgcmVtYWluZGVyOworCisgICAgd2hpbGUgKHBvczxlbmQgJiYgaXNkaWdpdChQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHBvcykpKQorICAgICAgICArK3BvczsKKyAgICByZW1haW5kZXIgPSBwb3M7CisKKyAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KKyAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocywgcmVtYWluZGVyKSA9PSAnLic7CisKKyAgICAvKiBTa2lwIHRoZSBkZWNpbWFsIHBvaW50LiAqLworICAgIGlmICgqaGFzX2RlY2ltYWwpCisgICAgICAgIHJlbWFpbmRlcisrOworCisgICAgKm5fcmVtYWluZGVyID0gZW5kIC0gcmVtYWluZGVyOworfQorCisvKiBub3QgYWxsIGZpZWxkcyBvZiBmb3JtYXQgYXJlIHVzZWQuICBmb3IgZXhhbXBsZSwgcHJlY2lzaW9uIGlzCisgICB1bnVzZWQuICBzaG91bGQgdGhpcyB0YWtlIGRpc2NyZXRlIHBhcmFtcyBpbiBvcmRlciB0byBiZSBtb3JlIGNsZWFyCisgICBhYm91dCB3aGF0IGl0IGRvZXM/ICBvciBpcyBwYXNzaW5nIGEgc2luZ2xlIGZvcm1hdCBwYXJhbWV0ZXIgZWFzaWVyCisgICBhbmQgbW9yZSBlZmZpY2llbnQgZW5vdWdoIHRvIGp1c3RpZnkgYSBsaXR0bGUgb2JmdXNjYXRpb24/ICovCitzdGF0aWMgUHlfc3NpemVfdAorY2FsY19udW1iZXJfd2lkdGhzKE51bWJlckZpZWxkV2lkdGhzICpzcGVjLCBQeV9zc2l6ZV90IG5fcHJlZml4LAorICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgc2lnbl9jaGFyLCBQeU9iamVjdCAqbnVtYmVyLCBQeV9zc2l6ZV90IG5fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2VuZCwgUHlfc3NpemVfdCBuX3JlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2RlY2ltYWwsIGNvbnN0IExvY2FsZUluZm8gKmxvY2FsZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nOworICAgIFB5X3NzaXplX3Qgbl9wYWRkaW5nOworCisgICAgc3BlYy0+bl9kaWdpdHMgPSBuX2VuZCAtIG5fc3RhcnQgLSBuX3JlbWFpbmRlciAtIChoYXNfZGVjaW1hbD8xOjApOworICAgIHNwZWMtPm5fbHBhZGRpbmcgPSAwOworICAgIHNwZWMtPm5fcHJlZml4ID0gbl9wcmVmaXg7CisgICAgc3BlYy0+bl9kZWNpbWFsID0gaGFzX2RlY2ltYWwgPyBQeVVuaWNvZGVfR0VUX0xFTkdUSChsb2NhbGUtPmRlY2ltYWxfcG9pbnQpIDogMDsKKyAgICBzcGVjLT5uX3JlbWFpbmRlciA9IG5fcmVtYWluZGVyOworICAgIHNwZWMtPm5fc3BhZGRpbmcgPSAwOworICAgIHNwZWMtPm5fcnBhZGRpbmcgPSAwOworICAgIHNwZWMtPnNpZ24gPSAnXDAnOworICAgIHNwZWMtPm5fc2lnbiA9IDA7CisKKyAgICAvKiB0aGUgb3V0cHV0IHdpbGwgbG9vayBsaWtlOgorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICB8IDxscGFkZGluZz4gPHNpZ24+IDxwcmVmaXg+IDxzcGFkZGluZz4gPGdyb3VwZWRfZGlnaXRzPiA8ZGVjaW1hbD4gPHJlbWFpbmRlcj4gPHJwYWRkaW5nPiB8CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCisgICAgICAgc2lnbiBpcyBjb21wdXRlZCBmcm9tIGZvcm1hdC0+c2lnbiBhbmQgdGhlIGFjdHVhbAorICAgICAgIHNpZ24gb2YgdGhlIG51bWJlcgorCisgICAgICAgcHJlZml4IGlzIGdpdmVuIChpdCdzIGZvciB0aGUgJzB4JyBwcmVmaXgpCisKKyAgICAgICBkaWdpdHMgaXMgYWxyZWFkeSBrbm93bgorCisgICAgICAgdGhlIHRvdGFsIHdpZHRoIGlzIGVpdGhlciBnaXZlbiwgb3IgY29tcHV0ZWQgZnJvbSB0aGUKKyAgICAgICBhY3R1YWwgZGlnaXRzCisKKyAgICAgICBvbmx5IG9uZSBvZiBscGFkZGluZywgc3BhZGRpbmcsIGFuZCBycGFkZGluZyBjYW4gYmUgbm9uLXplcm8sCisgICAgICAgYW5kIGl0J3MgY2FsY3VsYXRlZCBmcm9tIHRoZSB3aWR0aCBhbmQgb3RoZXIgZmllbGRzCisgICAgKi8KKworICAgIC8qIGNvbXB1dGUgdGhlIHZhcmlvdXMgcGFydHMgd2UncmUgZ29pbmcgdG8gd3JpdGUgKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC0+c2lnbikgeworICAgIGNhc2UgJysnOgorICAgICAgICAvKiBhbHdheXMgcHV0IGEgKyBvciAtICovCisgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7CisgICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcrJyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJyAnOgorICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOworICAgICAgICBzcGVjLT5zaWduID0gKHNpZ25fY2hhciA9PSAnLScgPyAnLScgOiAnICcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBOb3Qgc3BlY2lmaWVkLCBvciB0aGUgZGVmYXVsdCAoLSkgKi8KKyAgICAgICAgaWYgKHNpZ25fY2hhciA9PSAnLScpIHsKKyAgICAgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7CisgICAgICAgICAgICBzcGVjLT5zaWduID0gJy0nOworICAgICAgICB9CisgICAgfQorCisgICAgLyogVGhlIG51bWJlciBvZiBjaGFycyB1c2VkIGZvciBub24tZGlnaXRzIGFuZCBub24tcGFkZGluZy4gKi8KKyAgICBuX25vbl9kaWdpdF9ub25fcGFkZGluZyA9IHNwZWMtPm5fc2lnbiArIHNwZWMtPm5fcHJlZml4ICsgc3BlYy0+bl9kZWNpbWFsICsKKyAgICAgICAgc3BlYy0+bl9yZW1haW5kZXI7CisKKyAgICAvKiBtaW5fd2lkdGggY2FuIGdvIG5lZ2F0aXZlLCB0aGF0J3Mgb2theS4gZm9ybWF0LT53aWR0aCA9PSAtMSBtZWFucworICAgICAgIHdlIGRvbid0IGNhcmUuICovCisgICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJyAmJiBmb3JtYXQtPmFsaWduID09ICc9JykKKyAgICAgICAgc3BlYy0+bl9taW5fd2lkdGggPSBmb3JtYXQtPndpZHRoIC0gbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7CisgICAgZWxzZQorICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IDA7CisKKyAgICBpZiAoc3BlYy0+bl9kaWdpdHMgPT0gMCkKKyAgICAgICAgLyogVGhpcyBjYXNlIG9ubHkgb2NjdXJzIHdoZW4gdXNpbmcgJ2MnIGZvcm1hdHRpbmcsIHdlIG5lZWQKKyAgICAgICAgICAgdG8gc3BlY2lhbCBjYXNlIGl0IGJlY2F1c2UgdGhlIGdyb3VwaW5nIGNvZGUgYWx3YXlzIHdhbnRzCisgICAgICAgICAgIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4gKi8KKyAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIFB5X1VDUzQgZ3JvdXBpbmdfbWF4Y2hhcjsKKyAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgMCwgTlVMTCwKKyAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLCBzcGVjLT5uX21pbl93aWR0aCwKKyAgICAgICAgICAgIGxvY2FsZS0+Z3JvdXBpbmcsIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCwgJmdyb3VwaW5nX21heGNoYXIpOworICAgICAgICAqbWF4Y2hhciA9IFB5X01BWCgqbWF4Y2hhciwgZ3JvdXBpbmdfbWF4Y2hhcik7CisgICAgfQorCisgICAgLyogR2l2ZW4gdGhlIGRlc2lyZWQgd2lkdGggYW5kIHRoZSB0b3RhbCBvZiBkaWdpdCBhbmQgbm9uLWRpZ2l0CisgICAgICAgc3BhY2Ugd2UgY29uc3VtZSwgc2VlIGlmIHdlIG5lZWQgYW55IHBhZGRpbmcuIGZvcm1hdC0+d2lkdGggY2FuCisgICAgICAgYmUgbmVnYXRpdmUgKG1lYW5pbmcgbm8gcGFkZGluZyksIGJ1dCB0aGlzIGNvZGUgc3RpbGwgd29ya3MgaW4KKyAgICAgICB0aGF0IGNhc2UuICovCisgICAgbl9wYWRkaW5nID0gZm9ybWF0LT53aWR0aCAtCisgICAgICAgICAgICAgICAgICAgICAgICAobl9ub25fZGlnaXRfbm9uX3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKKyAgICBpZiAobl9wYWRkaW5nID4gMCkgeworICAgICAgICAvKiBTb21lIHBhZGRpbmcgaXMgbmVlZGVkLiBEZXRlcm1pbmUgaWYgaXQncyBsZWZ0LCBzcGFjZSwgb3IgcmlnaHQuICovCisgICAgICAgIHN3aXRjaCAoZm9ybWF0LT5hbGlnbikgeworICAgICAgICBjYXNlICc8JzoKKyAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnXic6CisgICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nIC8gMjsKKyAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmcgLSBzcGVjLT5uX2xwYWRkaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJz0nOgorICAgICAgICAgICAgc3BlYy0+bl9zcGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIFNob3VsZG4ndCBnZXQgaGVyZSwgYnV0IHRyZWF0IGl0IGFzICc+JyAqLworICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwZWMtPm5fbHBhZGRpbmcgfHwgc3BlYy0+bl9zcGFkZGluZyB8fCBzcGVjLT5uX3JwYWRkaW5nKQorICAgICAgICAqbWF4Y2hhciA9IFB5X01BWCgqbWF4Y2hhciwgZm9ybWF0LT5maWxsX2NoYXIpOworCisgICAgaWYgKHNwZWMtPm5fZGVjaW1hbCkKKyAgICAgICAgKm1heGNoYXIgPSBQeV9NQVgoKm1heGNoYXIsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShsb2NhbGUtPmRlY2ltYWxfcG9pbnQpKTsKKworICAgIHJldHVybiBzcGVjLT5uX2xwYWRkaW5nICsgc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKworICAgICAgICBzcGVjLT5uX3NwYWRkaW5nICsgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyArIHNwZWMtPm5fZGVjaW1hbCArCisgICAgICAgIHNwZWMtPm5fcmVtYWluZGVyICsgc3BlYy0+bl9ycGFkZGluZzsKK30KKworLyogRmlsbCBpbiB0aGUgZGlnaXQgcGFydHMgb2YgYSBudW1iZXJzJ3Mgc3RyaW5nIHJlcHJlc2VudGF0aW9uLAorICAgYXMgZGV0ZXJtaW5lZCBpbiBjYWxjX251bWJlcl93aWR0aHMoKS4KKyAgIFJldHVybiAtMSBvbiBlcnJvciwgb3IgMCBvbiBzdWNjZXNzLiAqLworc3RhdGljIGludAorZmlsbF9udW1iZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBjb25zdCBOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaWdpdHMsIFB5X3NzaXplX3QgZF9zdGFydCwgUHlfc3NpemVfdCBkX2VuZCwKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwcmVmaXgsIFB5X3NzaXplX3QgcF9zdGFydCwKKyAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyLAorICAgICAgICAgICAgTG9jYWxlSW5mbyAqbG9jYWxlLCBpbnQgdG91cHBlcikKK3sKKyAgICAvKiBVc2VkIHRvIGtlZXAgdHJhY2sgb2YgZGlnaXRzLCBkZWNpbWFsLCBhbmQgcmVtYWluZGVyLiAqLworICAgIFB5X3NzaXplX3QgZF9wb3MgPSBkX3N0YXJ0OworICAgIGNvbnN0IGVudW0gUHlVbmljb2RlX0tpbmQga2luZCA9IHdyaXRlci0+a2luZDsKKyAgICBjb25zdCB2b2lkICpkYXRhID0gd3JpdGVyLT5kYXRhOworICAgIFB5X3NzaXplX3QgcjsKKworICAgIGlmIChzcGVjLT5uX2xwYWRkaW5nKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5wb3MsIHNwZWMtPm5fbHBhZGRpbmcsIGZpbGxfY2hhcik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fbHBhZGRpbmc7CisgICAgfQorICAgIGlmIChzcGVjLT5uX3NpZ24gPT0gMSkgeworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MsIHNwZWMtPnNpZ24pOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKyAgICBpZiAoc3BlYy0+bl9wcmVmaXgpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHBfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPm5fcHJlZml4KTsKKyAgICAgICAgaWYgKHRvdXBwZXIpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgdDsKKyAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX3ByZWZpeDsgdCsrKSB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0KTsKKyAgICAgICAgICAgICAgICBjID0gUHlfVE9VUFBFUihjKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQgKGMgPD0gMTI3KTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0LCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3ByZWZpeDsKKyAgICB9CisgICAgaWYgKHNwZWMtPm5fc3BhZGRpbmcpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcywgc3BlYy0+bl9zcGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9zcGFkZGluZzsKKyAgICB9CisKKyAgICAvKiBPbmx5IGZvciB0eXBlICdjJyBzcGVjaWFsIGNhc2UsIGl0IGhhcyBubyBkaWdpdHMuICovCisgICAgaWYgKHNwZWMtPm5fZGlnaXRzICE9IDApIHsKKyAgICAgICAgLyogRmlsbCB0aGUgZGlnaXRzIHdpdGggSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcuICovCisgICAgICAgIGNoYXIgKnBkaWdpdHM7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGlnaXRzKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcGRpZ2l0cyA9IFB5VW5pY29kZV9EQVRBKGRpZ2l0cyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChkaWdpdHMpIDwga2luZCkgeworICAgICAgICAgICAgcGRpZ2l0cyA9IF9QeVVuaWNvZGVfQXNLaW5kKGRpZ2l0cywga2luZCk7CisgICAgICAgICAgICBpZiAocGRpZ2l0cyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByID0gX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cywKKyAgICAgICAgICAgICAgICBwZGlnaXRzICsga2luZCAqIGRfcG9zLAorICAgICAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLCBzcGVjLT5uX21pbl93aWR0aCwKKyAgICAgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLCBsb2NhbGUtPnRob3VzYW5kc19zZXAsIE5VTEwpOworICAgICAgICBpZiAociA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgYXNzZXJ0KHIgPT0gc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChkaWdpdHMpIDwga2luZCkKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUocGRpZ2l0cyk7CisgICAgICAgIGRfcG9zICs9IHNwZWMtPm5fZGlnaXRzOworICAgIH0KKyAgICBpZiAodG91cHBlcikgeworICAgICAgICBQeV9zc2l6ZV90IHQ7CisgICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOyB0KyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHdyaXRlci0+cG9zICsgdCk7CisgICAgICAgICAgICBjID0gUHlfVE9VUFBFUihjKTsKKyAgICAgICAgICAgIGlmIChjID4gMTI3KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAibm9uLWFzY2lpIGdyb3VwZWQgZGlnaXQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0LCBjKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOworCisgICAgaWYgKHNwZWMtPm5fZGVjaW1hbCkgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgIGxvY2FsZS0+ZGVjaW1hbF9wb2ludCwgMCwgc3BlYy0+bl9kZWNpbWFsKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9kZWNpbWFsOworICAgICAgICBkX3BvcyArPSAxOworICAgIH0KKworICAgIGlmIChzcGVjLT5uX3JlbWFpbmRlcikgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgIGRpZ2l0cywgZF9wb3MsIHNwZWMtPm5fcmVtYWluZGVyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9yZW1haW5kZXI7CisgICAgICAgIC8qIGRfcG9zICs9IHNwZWMtPm5fcmVtYWluZGVyOyAqLworICAgIH0KKworICAgIGlmIChzcGVjLT5uX3JwYWRkaW5nKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5wb3MsIHNwZWMtPm5fcnBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbF9jaGFyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9ycGFkZGluZzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKKworLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCisgICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcworICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCisgICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KK3N0YXRpYyBpbnQKK2dldF9sb2NhbGVfaW5mbyhpbnQgdHlwZSwgTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMVF9DVVJSRU5UX0xPQ0FMRTogeworICAgICAgICBzdHJ1Y3QgbGNvbnYgKmxvY2FsZV9kYXRhID0gbG9jYWxlY29udigpOworICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9kYXRhLT5kZWNpbWFsX3BvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2RhdGEtPnRob3VzYW5kc19zZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBsb2NhbGVfZGF0YS0+Z3JvdXBpbmc7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIExUX0RFRkFVTFRfTE9DQUxFOgorICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLCcpOworICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpY2l0KSB0cmFpbGluZyAwIG1lYW5zIHJlcGVhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZWx5LiAqLworICAgICAgICBicmVhazsKKyAgICBjYXNlIExUX05PX0xPQ0FMRToKKyAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBub19ncm91cGluZzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2ZyZWVfbG9jYWxlX2luZm8oTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCit7CisgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogc3RyaW5nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorZm9ybWF0X3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfc3NpemVfdCBscGFkOworICAgIFB5X3NzaXplX3QgcnBhZDsKKyAgICBQeV9zc2l6ZV90IHRvdGFsOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHZhbHVlKSk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpOworCisgICAgLyogc2lnbiBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCisgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ24gbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIGFsdGVybmF0ZSBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCisgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qICc9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLworICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgaWYgKGZvcm1hdC0+d2lkdGggPT0gLTEgJiYgZm9ybWF0LT5wcmVjaXNpb24gPT0gLTEpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgdmFsdWUpOworICAgIH0KKworICAgIC8qIGlmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIG91dHB1dCBubyBtb3JlIHRoYXQgZm9ybWF0LnByZWNpc2lvbgorICAgICAgIGNoYXJhY3RlcnMgKi8KKyAgICBpZiAoZm9ybWF0LT5wcmVjaXNpb24gPj0gMCAmJiBsZW4gPj0gZm9ybWF0LT5wcmVjaXNpb24pIHsKKyAgICAgICAgbGVuID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgfQorCisgICAgY2FsY19wYWRkaW5nKGxlbiwgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOworCisgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodmFsdWUsIDAsIGxlbik7CisgICAgaWYgKGxwYWQgIT0gMCB8fCBycGFkICE9IDApCisgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgZm9ybWF0LT5maWxsX2NoYXIpOworCisgICAgLyogYWxsb2NhdGUgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBXcml0ZSBpbnRvIHRoYXQgc3BhY2UuIEZpcnN0IHRoZSBwYWRkaW5nLiAqLworICAgIHJlc3VsdCA9IGZpbGxfcGFkZGluZyh3cml0ZXIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXI9PSdcMCc/JyAnOmZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBUaGVuIHRoZSBzb3VyY2Ugc3RyaW5nLiAqLworICAgIGlmIChsZW4pIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgMCwgbGVuKTsKKyAgICB9CisgICAgd3JpdGVyLT5wb3MgKz0gKGxlbiArIHJwYWQpOworICAgIHJlc3VsdCA9IDA7CisKK2RvbmU6CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGxvbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK2Zvcm1hdF9sb25nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGludW1lcmljX2NoYXJzOworICAgIFB5X1VDUzQgc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAgICAvKiBjb3VudCBvZiBkaWdpdHMgbmVlZCBmcm9tIHRoZSBjb21wdXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyAqLworICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXIgPSAwOyAvKiBVc2VkIG9ubHkgZm9yICdjJyBmb3JtYXR0aW5nLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBub24tZGlnaXRzICovCisgICAgUHlfc3NpemVfdCBuX3ByZWZpeCA9IDA7ICAgLyogQ291bnQgb2YgcHJlZml4IGNoYXJzLCAoZS5nLiwgJzB4JykgKi8KKyAgICBQeV9zc2l6ZV90IG5fdG90YWw7CisgICAgUHlfc3NpemVfdCBwcmVmaXggPSAwOworICAgIE51bWJlckZpZWxkV2lkdGhzIHNwZWM7CisgICAgbG9uZyB4OworCisgICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgorICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLworICAgIExvY2FsZUluZm8gbG9jYWxlID0gU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQ7CisKKyAgICAvKiBubyBwcmVjaXNpb24gYWxsb3dlZCBvbiBpbnRlZ2VycyAqLworICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiAhPSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQcmVjaXNpb24gbm90IGFsbG93ZWQgaW4gaW50ZWdlciBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBzcGVjaWFsIGNhc2UgZm9yIGNoYXJhY3RlciBmb3JtYXR0aW5nICovCisgICAgaWYgKGZvcm1hdC0+dHlwZSA9PSAnYycpIHsKKyAgICAgICAgLyogZXJyb3IgdG8gc3BlY2lmeSBhIHNpZ24gKi8KKyAgICAgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCB3aXRoIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisKKyAgICAgICAgLyogdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgZm9ybWF0Y2hhcigpICovCisgICAgICAgIC8qIEludGVnZXIgaW5wdXQgdHJ1bmNhdGVkIHRvIGEgY2hhcmFjdGVyICovCisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nKHZhbHVlKTsKKyAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweDEwZmZmZikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHgpOworICAgICAgICBpbnVtZXJpY19jaGFycyA9IDA7CisgICAgICAgIG5fZGlnaXRzID0gMTsKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCAoUHlfVUNTNCl4KTsKKworICAgICAgICAvKiBBcyBhIHNvcnQtb2YgaGFjaywgd2UgdGVsbCBjYWxjX251bWJlcl93aWR0aHMgdGhhdCB3ZSBvbmx5CisgICAgICAgICAgIGhhdmUgInJlbWFpbmRlciIgY2hhcmFjdGVycy4gY2FsY19udW1iZXJfd2lkdGhzIHRoaW5rcworICAgICAgICAgICB0aGVzZSBhcmUgY2hhcmFjdGVycyB0aGF0IGRvbid0IGdldCBmb3JtYXR0ZWQsIG9ubHkgY29waWVkCisgICAgICAgICAgIGludG8gdGhlIG91dHB1dCBzdHJpbmcuIFdlIGRvIHRoaXMgZm9yICdjJyBmb3JtYXR0aW5nLAorICAgICAgICAgICBiZWNhdXNlIHRoZSBjaGFyYWN0ZXJzIGFyZSBsaWtlbHkgdG8gYmUgbm9uLWRpZ2l0cy4gKi8KKyAgICAgICAgbl9yZW1haW5kZXIgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGJhc2U7CisgICAgICAgIGludCBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAwOyAgLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgYWRkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgdGhhdCB3ZSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyLiAqLworCisgICAgICAgIC8qIENvbXB1dGUgdGhlIGJhc2UgYW5kIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSBhZGRlZCBieQorICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgKi8KKyAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICBiYXNlID0gMjsKKyAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBiICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICBiYXNlID0gODsKKyAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBvICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMHggKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OiAgLyogc2hvdWxkbid0IGJlIG5lZWRlZCwgYnV0IHN0b3BzIGEgY29tcGlsZXIgd2FybmluZyAqLworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgY2FzZSAnbic6CisgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJysnICYmIGZvcm1hdC0+c2lnbiAhPSAnICcKKyAgICAgICAgICAgICYmIGZvcm1hdC0+d2lkdGggPT0gLTEKKyAgICAgICAgICAgICYmIGZvcm1hdC0+dHlwZSAhPSAnWCcgJiYgZm9ybWF0LT50eXBlICE9ICduJworICAgICAgICAgICAgJiYgIWZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMKKyAgICAgICAgICAgICYmIFB5TG9uZ19DaGVja0V4YWN0KHZhbHVlKSkKKyAgICAgICAgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRXcml0ZXIod3JpdGVyLCB2YWx1ZSwgYmFzZSwgZm9ybWF0LT5hbHRlcm5hdGUpOworICAgICAgICB9CisKKyAgICAgICAgLyogVGhlIG51bWJlciBvZiBwcmVmaXggY2hhcnMgaXMgdGhlIHNhbWUgYXMgdGhlIGxlYWRpbmcKKyAgICAgICAgICAgY2hhcnMgdG8gc2tpcCAqLworICAgICAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCisgICAgICAgICAgICBuX3ByZWZpeCA9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKworICAgICAgICAvKiBEbyB0aGUgaGFyZCBwYXJ0LCBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nIGluIGEgZ2l2ZW4gYmFzZSAqLworICAgICAgICB0bXAgPSBfUHlMb25nX0Zvcm1hdCh2YWx1ZSwgYmFzZSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkodG1wKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKworICAgICAgICBpbnVtZXJpY19jaGFycyA9IDA7CisgICAgICAgIG5fZGlnaXRzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodG1wKTsKKworICAgICAgICBwcmVmaXggPSBpbnVtZXJpY19jaGFyczsKKworICAgICAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgICAgICBhbmQgc2tpcCBpdCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUih0bXAsIGludW1lcmljX2NoYXJzKSA9PSAnLScpIHsKKyAgICAgICAgICAgIHNpZ25fY2hhciA9ICctJzsKKyAgICAgICAgICAgICsrcHJlZml4OworICAgICAgICAgICAgKytsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisgICAgICAgIH0KKworICAgICAgICAvKiBTa2lwIG92ZXIgdGhlIGxlYWRpbmcgY2hhcnMgKDB4LCAwYiwgZXRjLikgKi8KKyAgICAgICAgbl9kaWdpdHMgLT0gbGVhZGluZ19jaGFyc190b19za2lwOworICAgICAgICBpbnVtZXJpY19jaGFycyArPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLworICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCisgICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgbl9wcmVmaXgsIHNpZ25fY2hhciwgdG1wLCBpbnVtZXJpY19jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludW1lcmljX2NoYXJzICsgbl9kaWdpdHMsIG5fcmVtYWluZGVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LCAmbWF4Y2hhcik7CisKKyAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBuX3RvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KKyAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCwgaW51bWVyaWNfY2hhcnMsIGludW1lcmljX2NoYXJzICsgbl9kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLCBwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIGZvcm1hdC0+dHlwZSA9PSAnWCcpOworCitkb25lOgorICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogZmxvYXQgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogbXVjaCBvZiB0aGlzIGlzIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jICovCitzdGF0aWMgaW50Citmb3JtYXRfZmxvYXRfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBjaGFyICpidWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOworICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7CisgICAgUHlfc3NpemVfdCBuX3RvdGFsOworICAgIGludCBoYXNfZGVjaW1hbDsKKyAgICBkb3VibGUgdmFsOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CisgICAgUHlfVUNTNCB0eXBlID0gZm9ybWF0LT50eXBlOworICAgIGludCBhZGRfcGN0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIE51bWJlckZpZWxkV2lkdGhzIHNwZWM7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OworICAgIFB5X1VDUzQgc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBpbnQgZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLworICAgIFB5T2JqZWN0ICp1bmljb2RlX3RtcCA9IE5VTEw7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKKyAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BTFQ7CisKKyAgICBpZiAodHlwZSA9PSAnXDAnKSB7CisgICAgICAgIC8qIE9taXR0ZWQgdHlwZSBzcGVjaWZpZXIuICBCZWhhdmVzIGluIHRoZSBzYW1lIHdheSBhcyByZXByKHgpCisgICAgICAgICAgIGFuZCBzdHIoeCkgaWYgbm8gcHJlY2lzaW9uIGlzIGdpdmVuLCBlbHNlIGxpa2UgJ2cnLCBidXQgd2l0aAorICAgICAgICAgICBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICovCisgICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUREX0RPVF8wOworICAgICAgICB0eXBlID0gJ3InOworICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJ24nKQorICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bworICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICB2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAodmFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKHR5cGUgPT0gJyUnKSB7CisgICAgICAgIHR5cGUgPSAnZic7CisgICAgICAgIHZhbCAqPSAxMDA7CisgICAgICAgIGFkZF9wY3QgPSAxOworICAgIH0KKworICAgIGlmIChwcmVjaXNpb24gPCAwKQorICAgICAgICBwcmVjaXNpb24gPSBkZWZhdWx0X3ByZWNpc2lvbjsKKyAgICBlbHNlIGlmICh0eXBlID09ICdyJykKKyAgICAgICAgdHlwZSA9ICdnJzsKKworICAgIC8qIENhc3QgInR5cGUiLCBiZWNhdXNlIGlmIHdlJ3JlIGluIHVuaWNvZGUgd2UgbmVlZCB0byBwYXNzIGEKKyAgICAgICA4LWJpdCBjaGFyLiBUaGlzIGlzIHNhZmUsIGJlY2F1c2Ugd2UndmUgcmVzdHJpY3RlZCB3aGF0ICJ0eXBlIgorICAgICAgIGNhbiBiZS4gKi8KKyAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcodmFsLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxvYXRfdHlwZSk7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgbl9kaWdpdHMgPSBzdHJsZW4oYnVmKTsKKworICAgIGlmIChhZGRfcGN0KSB7CisgICAgICAgIC8qIFdlIGtub3cgdGhhdCBidWYgaGFzIGEgdHJhaWxpbmcgemVybyAoc2luY2Ugd2UganVzdCBjYWxsZWQKKyAgICAgICAgICAgc3RybGVuKCkgb24gaXQpLCBhbmQgd2UgZG9uJ3QgdXNlIHRoYXQgZmFjdCBhbnkgbW9yZS4gU28gd2UKKyAgICAgICAgICAgY2FuIGp1c3Qgd3JpdGUgb3ZlciB0aGUgdHJhaWxpbmcgemVyby4gKi8KKyAgICAgICAgYnVmW25fZGlnaXRzXSA9ICclJzsKKyAgICAgICAgbl9kaWdpdHMgKz0gMTsKKyAgICB9CisKKyAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAorICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KKyAgICB1bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGJ1Ziwgbl9kaWdpdHMpOworICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAodW5pY29kZV90bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnKycgJiYgZm9ybWF0LT5zaWduICE9ICcgJworICAgICAgICAmJiBmb3JtYXQtPndpZHRoID09IC0xCisgICAgICAgICYmIGZvcm1hdC0+dHlwZSAhPSAnbicKKyAgICAgICAgJiYgIWZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpCisgICAgeworICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgcmVzdWx0ID0gX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHVuaWNvZGVfdG1wKTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfdG1wKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgaW5kZXggPSAwOworICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGVfdG1wLCBpbmRleCkgPT0gJy0nKSB7CisgICAgICAgIHNpZ25fY2hhciA9ICctJzsKKyAgICAgICAgKytpbmRleDsKKyAgICAgICAgLS1uX2RpZ2l0czsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKKyAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLworICAgIHBhcnNlX251bWJlcih1bmljb2RlX3RtcCwgaW5kZXgsIGluZGV4ICsgbl9kaWdpdHMsICZuX3JlbWFpbmRlciwgJmhhc19kZWNpbWFsKTsKKworICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KKyAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLworICAgIG5fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnNwZWMsIDAsIHNpZ25fY2hhciwgdW5pY29kZV90bXAsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggKyBuX2RpZ2l0cywgbl9yZW1haW5kZXIsIGhhc19kZWNpbWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LCAmbWF4Y2hhcik7CisKKyAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBuX3RvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KKyAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfdG1wLCBpbmRleCwgaW5kZXggKyBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKworZG9uZToKKyAgICBQeV9YREVDUkVGKHVuaWNvZGVfdG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogY29tcGxleCBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgZG91YmxlIHJlOworICAgIGRvdWJsZSBpbTsKKyAgICBjaGFyICpyZV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KKyAgICBjaGFyICppbV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KKworICAgIEludGVybmFsRm9ybWF0U3BlYyB0bXBfZm9ybWF0ID0gKmZvcm1hdDsKKyAgICBQeV9zc2l6ZV90IG5fcmVfZGlnaXRzOworICAgIFB5X3NzaXplX3Qgbl9pbV9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX3JlX3JlbWFpbmRlcjsKKyAgICBQeV9zc2l6ZV90IG5faW1fcmVtYWluZGVyOworICAgIFB5X3NzaXplX3Qgbl9yZV90b3RhbDsKKyAgICBQeV9zc2l6ZV90IG5faW1fdG90YWw7CisgICAgaW50IHJlX2hhc19kZWNpbWFsOworICAgIGludCBpbV9oYXNfZGVjaW1hbDsKKyAgICBQeV9zc2l6ZV90IHByZWNpc2lvbiA9IGZvcm1hdC0+cHJlY2lzaW9uOworICAgIFB5X3NzaXplX3QgZGVmYXVsdF9wcmVjaXNpb24gPSA2OworICAgIFB5X1VDUzQgdHlwZSA9IGZvcm1hdC0+dHlwZTsKKyAgICBQeV9zc2l6ZV90IGlfcmU7CisgICAgUHlfc3NpemVfdCBpX2ltOworICAgIE51bWJlckZpZWxkV2lkdGhzIHJlX3NwZWM7CisgICAgTnVtYmVyRmllbGRXaWR0aHMgaW1fc3BlYzsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBya2luZDsKKyAgICB2b2lkICpyZGF0YTsKKyAgICBQeV9VQ1M0IHJlX3NpZ25fY2hhciA9ICdcMCc7CisgICAgUHlfVUNTNCBpbV9zaWduX2NoYXIgPSAnXDAnOworICAgIGludCByZV9mbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCisgICAgaW50IGltX2Zsb2F0X3R5cGU7CisgICAgaW50IGFkZF9wYXJlbnMgPSAwOworICAgIGludCBza2lwX3JlID0gMDsKKyAgICBQeV9zc2l6ZV90IGxwYWQ7CisgICAgUHlfc3NpemVfdCBycGFkOworICAgIFB5X3NzaXplX3QgdG90YWw7CisgICAgUHlPYmplY3QgKnJlX3VuaWNvZGVfdG1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaW1fdW5pY29kZV90bXAgPSBOVUxMOworCisgICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgorICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLworICAgIExvY2FsZUluZm8gbG9jYWxlID0gU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQ7CisKKyAgICAvKiBaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQuICovCisgICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogTmVpdGhlciBpcyAnPScgYWxpZ25tZW50IC4gKi8KKyAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBmbGFnIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHJlID0gUHlDb21wbGV4X1JlYWxBc0RvdWJsZSh2YWx1ZSk7CisgICAgaWYgKHJlID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBkb25lOworICAgIGltID0gUHlDb21wbGV4X0ltYWdBc0RvdWJsZSh2YWx1ZSk7CisgICAgaWYgKGltID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQorICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKKworICAgIGlmICh0eXBlID09ICdcMCcpIHsKKyAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gU2hvdWxkIGJlIGxpa2Ugc3RyKHNlbGYpLiAqLworICAgICAgICB0eXBlID0gJ3InOworICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7CisgICAgICAgIGlmIChyZSA9PSAwLjAgJiYgY29weXNpZ24oMS4wLCByZSkgPT0gMS4wKQorICAgICAgICAgICAgc2tpcF9yZSA9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZF9wYXJlbnMgPSAxOworICAgIH0KKworICAgIGlmICh0eXBlID09ICduJykKKyAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KKyAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLworICAgICAgICB0eXBlID0gJ2cnOworCisgICAgaWYgKHByZWNpc2lvbiA8IDApCisgICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOworICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQorICAgICAgICB0eXBlID0gJ2cnOworCisgICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQorICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCisgICAgICAgY2FuIGJlLiAqLworICAgIHJlX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhyZSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlX2Zsb2F0X3R5cGUpOworICAgIGlmIChyZV9idWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGltX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhpbSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltX2Zsb2F0X3R5cGUpOworICAgIGlmIChpbV9idWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgbl9yZV9kaWdpdHMgPSBzdHJsZW4ocmVfYnVmKTsKKyAgICBuX2ltX2RpZ2l0cyA9IHN0cmxlbihpbV9idWYpOworCisgICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKKyAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCisgICAgcmVfdW5pY29kZV90bXAgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShyZV9idWYsIG5fcmVfZGlnaXRzKTsKKyAgICBpZiAocmVfdW5pY29kZV90bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlfcmUgPSAwOworCisgICAgaW1fdW5pY29kZV90bXAgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShpbV9idWYsIG5faW1fZGlnaXRzKTsKKyAgICBpZiAoaW1fdW5pY29kZV90bXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIGlfaW0gPSAwOworCisgICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKKyAgICAgICBhbmQgc2tpcCBpdCAqLworICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlX3VuaWNvZGVfdG1wLCBpX3JlKSA9PSAnLScpIHsKKyAgICAgICAgcmVfc2lnbl9jaGFyID0gJy0nOworICAgICAgICArK2lfcmU7CisgICAgICAgIC0tbl9yZV9kaWdpdHM7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKGltX3VuaWNvZGVfdG1wLCBpX2ltKSA9PSAnLScpIHsKKyAgICAgICAgaW1fc2lnbl9jaGFyID0gJy0nOworICAgICAgICArK2lfaW07CisgICAgICAgIC0tbl9pbV9kaWdpdHM7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCisgICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KKyAgICBwYXJzZV9udW1iZXIocmVfdW5pY29kZV90bXAsIGlfcmUsIGlfcmUgKyBuX3JlX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgJm5fcmVfcmVtYWluZGVyLCAmcmVfaGFzX2RlY2ltYWwpOworICAgIHBhcnNlX251bWJlcihpbV91bmljb2RlX3RtcCwgaV9pbSwgaV9pbSArIG5faW1fZGlnaXRzLAorICAgICAgICAgICAgICAgICAmbl9pbV9yZW1haW5kZXIsICZpbV9oYXNfZGVjaW1hbCk7CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCisgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPworICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFR1cm4gb2ZmIGFueSBwYWRkaW5nLiBXZSdsbCBkbyBpdCBsYXRlciBhZnRlciB3ZSd2ZSBjb21wb3NlZAorICAgICAgIHRoZSBudW1iZXJzIHdpdGhvdXQgcGFkZGluZy4gKi8KKyAgICB0bXBfZm9ybWF0LmZpbGxfY2hhciA9ICdcMCc7CisgICAgdG1wX2Zvcm1hdC5hbGlnbiA9ICc8JzsKKyAgICB0bXBfZm9ybWF0LndpZHRoID0gLTE7CisKKyAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCisgICAgbl9yZV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmcmVfc3BlYywgMCwgcmVfc2lnbl9jaGFyLCByZV91bmljb2RlX3RtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfcmUsIGlfcmUgKyBuX3JlX2RpZ2l0cywgbl9yZV9yZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhcik7CisKKyAgICAvKiBTYW1lIGZvcm1hdHRpbmcsIGJ1dCBhbHdheXMgaW5jbHVkZSBhIHNpZ24sIHVubGVzcyB0aGUgcmVhbCBwYXJ0IGlzCisgICAgICogZ29pbmcgdG8gYmUgb21pdHRlZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2Ugd2hhdGV2ZXIgc2lnbiBjb252ZW50aW9uIHdhcworICAgICAqIHJlcXVlc3RlZCBieSB0aGUgb3JpZ2luYWwgZm9ybWF0LiAqLworICAgIGlmICghc2tpcF9yZSkKKyAgICAgICAgdG1wX2Zvcm1hdC5zaWduID0gJysnOworICAgIG5faW1fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJmltX3NwZWMsIDAsIGltX3NpZ25fY2hhciwgaW1fdW5pY29kZV90bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpX2ltLCBpX2ltICsgbl9pbV9kaWdpdHMsIG5faW1fcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1faGFzX2RlY2ltYWwsICZsb2NhbGUsICZ0bXBfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIpOworCisgICAgaWYgKHNraXBfcmUpCisgICAgICAgIG5fcmVfdG90YWwgPSAwOworCisgICAgLyogQWRkIDEgZm9yIHRoZSAnaicsIGFuZCBvcHRpb25hbGx5IDIgZm9yIHBhcmVucy4gKi8KKyAgICBjYWxjX3BhZGRpbmcobl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCisgICAgICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+YWxpZ24sICZscGFkLCAmcnBhZCwgJnRvdGFsKTsKKworICAgIGlmIChscGFkIHx8IHJwYWQpCisgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgZm9ybWF0LT5maWxsX2NoYXIpOworCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHRvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIHJraW5kID0gd3JpdGVyLT5raW5kOworICAgIHJkYXRhID0gd3JpdGVyLT5kYXRhOworCisgICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gRmlyc3QsIHRoZSBwYWRkaW5nLiAqLworICAgIHJlc3VsdCA9IGZpbGxfcGFkZGluZyh3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVfdG90YWwgKyBuX2ltX3RvdGFsICsgMSArIGFkZF9wYXJlbnMgKiAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoYWRkX3BhcmVucykgeworICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIHJkYXRhLCB3cml0ZXItPnBvcywgJygnKTsKKyAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICB9CisKKyAgICBpZiAoIXNraXBfcmUpIHsKKyAgICAgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmcmVfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVfdW5pY29kZV90bXAsIGlfcmUsIGlfcmUgKyBuX3JlX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgMCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJmltX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1fdW5pY29kZV90bXAsIGlfaW0sIGlfaW0gKyBuX2ltX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgMCk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnaicpOworICAgIHdyaXRlci0+cG9zKys7CisKKyAgICBpZiAoYWRkX3BhcmVucykgeworICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIHJkYXRhLCB3cml0ZXItPnBvcywgJyknKTsKKyAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICB9CisKKyAgICB3cml0ZXItPnBvcyArPSBycGFkOworCitkb25lOgorICAgIFB5TWVtX0ZyZWUocmVfYnVmKTsKKyAgICBQeU1lbV9GcmVlKGltX2J1Zik7CisgICAgUHlfWERFQ1JFRihyZV91bmljb2RlX3RtcCk7CisgICAgUHlfWERFQ1JFRihpbV91bmljb2RlX3RtcCk7CisgICAgZnJlZV9sb2NhbGVfaW5mbygmbG9jYWxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGJ1aWx0IGluIGZvcm1hdHRlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgaW50Citmb3JtYXRfb2JqKFB5T2JqZWN0ICpvYmosIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGludCBlcnI7CisKKyAgICBzdHIgPSBQeU9iamVjdF9TdHIob2JqKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlcnIgPSBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgc3RyKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gZXJyOworfQorCitpbnQKK19QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9iaikpOworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkKKyAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgb2JqKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworICAgIH0KKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdzJywgJzwnKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdzJzoKKyAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhIHN0cmluZy4gIGRvIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJldHVybiBmb3JtYXRfc3RyaW5nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKK2ludAorX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEwsICpzdHIgPSBOVUxMOworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisgICAgaW50IHJlc3VsdCA9IC0xOworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkgeworICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkKKyAgICAgICAgICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdFdyaXRlcih3cml0ZXIsIG9iaiwgMTAsIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisgICAgfQorCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ2QnLCAnPicpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ2InOgorICAgIGNhc2UgJ2MnOgorICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ28nOgorICAgIGNhc2UgJ3gnOgorICAgIGNhc2UgJ1gnOgorICAgIGNhc2UgJ24nOgorICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGFuIGludCAob3IgbG9uZykuICBkbworICAgICAgICAgICB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXN1bHQgPSBmb3JtYXRfbG9uZ19pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgY2FzZSAnJSc6CisgICAgICAgIC8qIGNvbnZlcnQgdG8gZmxvYXQgKi8KKyAgICAgICAgdG1wID0gUHlOdW1iZXJfRmxvYXQob2JqKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICByZXN1bHQgPSBmb3JtYXRfZmxvYXRfaW50ZXJuYWwodG1wLCAmZm9ybWF0LCB3cml0ZXIpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworZG9uZToKKyAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWERFQ1JFRihzdHIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnXDAnLCAnPicpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ1wwJzogLyogTm8gZm9ybWF0IGNvZGU6IGxpa2UgJ2cnLCBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbC4gKi8KKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICBjYXNlICduJzoKKyAgICBjYXNlICclJzoKKyAgICAgICAgLyogbm8gY29udmVyc2lvbiwgYWxyZWFkeSBhIGZsb2F0LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9mbG9hdF9pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKK2ludAorX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgIGNhc2UgJ24nOgorICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgY29tcGxleC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJldHVybiBmb3JtYXRfY29tcGxleF9pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggZGRmNjIyNC4uMjVmZGMxNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMiw2ICsyLDcgQEAKIC8qIER1bW15IGZyb3plbiBtb2R1bGVzIGluaXRpYWxpemVyICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJpbXBvcnRsaWIuaCIKIAogLyogSW4gb3JkZXIgdG8gdGVzdCB0aGUgc3VwcG9ydCBmb3IgZnJvemVuIG1vZHVsZXMsIGJ5IGRlZmF1bHQgd2UKICAgIGRlZmluZSBhIHNpbmdsZSBmcm96ZW4gbW9kdWxlLCBfX2hlbGxvX18uICBMb2FkaW5nIGl0IHdpbGwgcHJpbnQKQEAgLTI4LDYgKzI5LDggQEAKICNkZWZpbmUgU0laRSAoaW50KXNpemVvZihNX19faGVsbG9fXykKIAogc3RhdGljIHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CisgICAgLyogaW1wb3J0bGliICovCisgICAgeyJfZnJvemVuX2ltcG9ydGxpYiIsIF9QeV9NX19pbXBvcnRsaWIsIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWIpfSwKICAgICAvKiBUZXN0IG1vZHVsZSAqLwogICAgIHsiX19oZWxsb19fIiwgTV9fX2hlbGxvX18sIFNJWkV9LAogICAgIC8qIFRlc3QgcGFja2FnZSAobmVnYXRpdmUgc2l6ZSBpbmRpY2F0ZXMgcGFja2FnZS1uZXNzKSAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGFyZ3MuYyBiL1B5dGhvbi9nZXRhcmdzLmMKaW5kZXggYTc3YmIwNS4uMThjOGU5MSAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGFyZ3MuYworKysgYi9QeXRob24vZ2V0YXJncy5jCkBAIC0zMywxNiArMzMsMzMgQEAKICNkZWZpbmUgRkxBR19DT01QQVQgMQogI2RlZmluZSBGTEFHX1NJWkVfVCAyCiAKK3R5cGVkZWYgaW50ICgqZGVzdHJfdCkoUHlPYmplY3QgKiwgdm9pZCAqKTsKKworCisvKiBLZWVwIHRyYWNrIG9mICJvYmplY3RzIiB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQgYW5kCisgICB3aGljaCB3aWxsIG5lZWQgdG8gYmUgZGVhbGxvY2F0ZWQgb3IgY2xlYW5lZCB1cCBzb21laG93IGlmIG92ZXJhbGwKKyAgIHBhcnNpbmcgZmFpbHMuCisqLwordHlwZWRlZiBzdHJ1Y3QgeworICB2b2lkICppdGVtOworICBkZXN0cl90IGRlc3RydWN0b3I7Cit9IGZyZWVsaXN0ZW50cnlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBpbnQgZmlyc3RfYXZhaWxhYmxlOworICBmcmVlbGlzdGVudHJ5X3QgKmVudHJpZXM7Cit9IGZyZWVsaXN0X3Q7CisKIAogLyogRm9yd2FyZCAqLwogc3RhdGljIGludCB2Z2V0YXJnczEoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0ICosIGludCk7CiBzdGF0aWMgdm9pZCBzZXRlcnJvcihpbnQsIGNvbnN0IGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBjaGFyICpjb252ZXJ0aXRlbShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgaW50ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKIHN0YXRpYyBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBmcmVlbGlzdF90ICopOwogc3RhdGljIFB5X3NzaXplX3QgY29udmVydGJ1ZmZlcihQeU9iamVjdCAqLCB2b2lkICoqcCwgY2hhciAqKik7CiBzdGF0aWMgaW50IGdldGJ1ZmZlcihQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgY2hhcioqKTsKIApAQCAtMTIzLDExNSArMTQwLDU0IEBACiAKIC8qIEhhbmRsZSBjbGVhbnVwIG9mIGFsbG9jYXRlZCBtZW1vcnkgaW4gY2FzZSBvZiBleGNlcHRpb24gKi8KIAotI2RlZmluZSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUiAiZ2V0YXJncy5jbGVhbnVwX3B0ciIKLSNkZWZpbmUgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9CVUZGRVIgImdldGFyZ3MuY2xlYW51cF9idWZmZXIiCi0jZGVmaW5lIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCAiZ2V0YXJncy5jbGVhbnVwX2NvbnZlcnQiCi0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX3B0cihQeU9iamVjdCAqc2VsZikKK3N0YXRpYyBpbnQKK2NsZWFudXBfcHRyKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpwdHIpCiB7Ci0gICAgdm9pZCAqcHRyID0gUHlDYXBzdWxlX0dldFBvaW50ZXIoc2VsZiwgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9QVFIpOwogICAgIGlmIChwdHIpIHsKICAgICAgICAgUHlNZW1fRlJFRShwdHIpOwogICAgIH0KLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfYnVmZmVyKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5X2J1ZmZlciAqcHRyID0gKFB5X2J1ZmZlciAqKVB5Q2Fwc3VsZV9HZXRQb2ludGVyKHNlbGYsIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQlVGRkVSKTsKLSAgICBpZiAocHRyKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UocHRyKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLWFkZGNsZWFudXAodm9pZCAqcHRyLCBQeU9iamVjdCAqKmZyZWVsaXN0LCBpbnQgaXNfYnVmZmVyKQotewotICAgIFB5T2JqZWN0ICpjb2JqOwotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgUHlDYXBzdWxlX0Rlc3RydWN0b3IgZGVzdHI7Ci0KLSAgICBpZiAoaXNfYnVmZmVyKSB7Ci0gICAgICAgIGRlc3RyID0gY2xlYW51cF9idWZmZXI7Ci0gICAgICAgIG5hbWUgPSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0JVRkZFUjsKLSAgICB9IGVsc2UgewotICAgICAgICBkZXN0ciA9IGNsZWFudXBfcHRyOwotICAgICAgICBuYW1lID0gR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9QVFI7Ci0gICAgfQotCi0gICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgKmZyZWVsaXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgICAgIGRlc3RyKHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb2JqID0gUHlDYXBzdWxlX05ldyhwdHIsIG5hbWUsIGRlc3RyKTsKLSAgICBpZiAoIWNvYmopIHsKLSAgICAgICAgZGVzdHIocHRyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZCgqZnJlZWxpc3QsIGNvYmopKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29iaik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX2NvbnZlcnQoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgdHlwZWRlZiBpbnQgKCpkZXN0cl90KShQeU9iamVjdCAqLCB2b2lkICopOwotICAgIGRlc3RyX3QgZGVzdHIgPSAoZGVzdHJfdClQeUNhcHN1bGVfR2V0Q29udGV4dChzZWxmKTsKLSAgICB2b2lkICpwdHIgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCk7Ci0gICAgaWYgKHB0ciAmJiBkZXN0cikKLSAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLX0KLQotc3RhdGljIGludAotYWRkY2xlYW51cF9jb252ZXJ0KHZvaWQgKnB0ciwgUHlPYmplY3QgKipmcmVlbGlzdCwgaW50ICgqZGVzdHIpKFB5T2JqZWN0Kix2b2lkKikpCi17Ci0gICAgUHlPYmplY3QgKmNvYmo7Ci0gICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgKmZyZWVsaXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKCEqZnJlZWxpc3QpIHsKLSAgICAgICAgICAgIGRlc3RyKE5VTEwsIHB0cik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY29iaiA9IFB5Q2Fwc3VsZV9OZXcocHRyLCBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0NPTlZFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9jb252ZXJ0KTsKLSAgICBpZiAoIWNvYmopIHsKLSAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlDYXBzdWxlX1NldENvbnRleHQoY29iaiwgZGVzdHIpID09IC0xKSB7Ci0gICAgICAgIC8qIFRoaXMgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuLiAqLwotICAgICAgICBQeV9GYXRhbEVycm9yKCJjYXBzdWxlIHJlZnVzZWQgc2V0dGluZyBvZiBjb250ZXh0LiIpOwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZCgqZnJlZWxpc3QsIGNvYmopKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjb2JqKTsgLyogVGhpcyB3aWxsIGFsc28gY2FsbCBkZXN0ci4gKi8KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29iaik7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLWNsZWFucmV0dXJuKGludCByZXR2YWwsIFB5T2JqZWN0ICpmcmVlbGlzdCkKK2NsZWFudXBfYnVmZmVyKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpwdHIpCiB7Ci0gICAgaWYgKGZyZWVsaXN0ICYmIHJldHZhbCAhPSAwKSB7Ci0gICAgICAgIC8qIFdlIHdlcmUgc3VjY2Vzc2Z1bCwgcmVzZXQgdGhlIGRlc3RydWN0b3JzIHNvIHRoYXQgdGhleQotICAgICAgICAgICBkb24ndCBnZXQgY2FsbGVkLiAqLwotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5TGlzdF9HRVRfU0laRShmcmVlbGlzdCksIGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yKFB5TGlzdF9HRVRfSVRFTShmcmVlbGlzdCwgaSksIE5VTEwpOworICAgIFB5X2J1ZmZlciAqYnVmID0gKFB5X2J1ZmZlciAqKXB0cjsKKyAgICBpZiAoYnVmKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihmcmVlbGlzdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2FkZGNsZWFudXAodm9pZCAqcHRyLCBmcmVlbGlzdF90ICpmcmVlbGlzdCwgZGVzdHJfdCBkZXN0cnVjdG9yKQoreworICAgIGludCBpbmRleDsKKworICAgIGluZGV4ID0gZnJlZWxpc3QtPmZpcnN0X2F2YWlsYWJsZTsKKyAgICBmcmVlbGlzdC0+Zmlyc3RfYXZhaWxhYmxlICs9IDE7CisKKyAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uaXRlbSA9IHB0cjsKKyAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uZGVzdHJ1Y3RvciA9IGRlc3RydWN0b3I7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY2xlYW5yZXR1cm4oaW50IHJldHZhbCwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCit7CisgICAgaW50IGluZGV4OworCisgICAgaWYgKHJldHZhbCA9PSAwKSB7CisgICAgICAvKiBBIGZhaWx1cmUgb2NjdXJyZWQsIHRoZXJlZm9yZSBleGVjdXRlIGFsbCBvZiB0aGUgY2xlYW51cAorICAgICAgICAgZnVuY3Rpb25zLgorICAgICAgKi8KKyAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGZyZWVsaXN0LT5maXJzdF9hdmFpbGFibGU7ICsraW5kZXgpIHsKKyAgICAgICAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uZGVzdHJ1Y3RvcihOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5pdGVtKTsKKyAgICAgIH0KKyAgICB9CisgICAgUHlNZW1fRlJFRShmcmVlbGlzdC0+ZW50cmllcyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjUwLDcgKzIwNiw3IEBACiAgICAgY29uc3QgY2hhciAqZm9ybWF0c2F2ZSA9IGZvcm1hdDsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKICAgICBjaGFyICptc2c7Ci0gICAgUHlPYmplY3QgKmZyZWVsaXN0ID0gTlVMTDsKKyAgICBmcmVlbGlzdF90IGZyZWVsaXN0ID0gezAsIE5VTEx9OwogICAgIGludCBjb21wYXQgPSBmbGFncyAmIEZMQUdfQ09NUEFUOwogCiAgICAgYXNzZXJ0KGNvbXBhdCB8fCAoYXJncyAhPSAoUHlPYmplY3QqKU5VTEwpKTsKQEAgLTMwNiw2NCArMjYyLDY2IEBACiAKICAgICBmb3JtYXQgPSBmb3JtYXRzYXZlOwogCisgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIG1heCk7CisgICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoY29tcGF0KSB7CiAgICAgICAgIGlmIChtYXggPT0gMCkgewogICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIG5vIGFyZ3VtZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtc2didWYpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyB0YWtlcyBubyBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG1pbiA9PSAxICYmIG1heCA9PSAxKSB7CiAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZ2J1Zik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShhcmdzLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIGlmIChtc2cgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgc2V0ZXJyb3IobGV2ZWxzWzBdLCBtc2csIGxldmVscysxLCBmbmFtZSwgbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgIm9sZCBzdHlsZSBnZXRhcmdzIGZvcm1hdCB1c2VzIG5ldyBmZWF0dXJlcyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAibmV3IHN0eWxlIGdldGFyZ3MgZm9ybWF0IGJ1dCBhcmd1bWVudCBpcyBub3QgYSB0dXBsZSIpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKIAogICAgIGlmIChsZW4gPCBtaW4gfHwgbWF4IDwgbGVuKSB7Ci0gICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMTUwcyVzIHRha2VzICVzICVkIGFyZ3VtZW50JXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiKCVsZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj09bWF4ID8gImV4YWN0bHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogbGVuIDwgbWluID8gImF0IGxlYXN0IiA6ICJhdCBtb3N0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIDwgbWluID8gbWluIDogbWF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuIDwgbWluID8gbWluIDogbWF4KSA9PSAxID8gIiIgOiAicyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QobGVuLCBQeV9zc2l6ZV90LCBsb25nKSk7Ci0gICAgICAgICAgICBtZXNzYWdlID0gbXNnYnVmOwotICAgICAgICB9Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMTUwcyVzIHRha2VzICVzICVkIGFyZ3VtZW50JXMgKCVsZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj09bWF4ID8gImV4YWN0bHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBsZW4gPCBtaW4gPyAiYXQgbGVhc3QiIDogImF0IG1vc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA8IG1pbiA/IG1pbiA6IG1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAobGVuIDwgbWluID8gbWluIDogbWF4KSA9PSAxID8gIiIgOiAicyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChsZW4sIFB5X3NzaXplX3QsIGxvbmcpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewpAQCAtMzc0LDcgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwogICAgICAgICBpZiAobXNnKSB7CiAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgbXNnKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzgzLDEwICszNDEsMTAgQEAKICAgICAgICAgKmZvcm1hdCAhPSAnfCcgJiYgKmZvcm1hdCAhPSAnOicgJiYgKmZvcm1hdCAhPSAnOycpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImJhZCBmb3JtYXQgc3RyaW5nOiAlLjIwMHMiLCBmb3JtYXRzYXZlKTsKLSAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsIGZyZWVsaXN0KTsKKyAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIH0KIAogCkBAIC00NTAsNyArNDA4LDcgQEAKIHN0YXRpYyBjaGFyICoKIGNvbnZlcnR0dXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgaW50IHRvcGxldmVsLAotICAgICAgICAgICAgIFB5T2JqZWN0ICoqZnJlZWxpc3QpCisgICAgICAgICAgICAgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CiAgICAgaW50IGxldmVsID0gMDsKICAgICBpbnQgbiA9IDA7CkBAIC01MjUsNyArNDgzLDcgQEAKIAogc3RhdGljIGNoYXIgKgogY29udmVydGl0ZW0oUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICBjaGFyICptc2c7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gKnBfZm9ybWF0OwpAQCAtNTUwLDkgKzUwOCw2IEBACiAKIAogCi0jZGVmaW5lIFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpIFwKLSAgICBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoYXJnLCBOVUxMKQotCiAvKiBGb3JtYXQgYW4gZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29udmVydHNpbXBsZSgpLiAqLwogCiBzdGF0aWMgY2hhciAqCkBAIC01OTMsNyArNTQ4LDcgQEAKIAogc3RhdGljIGNoYXIgKgogY29udmVydHNpbXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKLSAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CiAgICAgLyogRm9yICMgY29kZXMgKi8KICNkZWZpbmUgRkVUQ0hfU0laRSAgICAgIGludCAqcT1OVUxMO1B5X3NzaXplX3QgKnEyPU5VTEw7XApAQCAtNjE1LDcgKzU3MCw3IEBACiAKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CiAgICAgY2hhciBjID0gKmZvcm1hdCsrOwotICAgIFB5T2JqZWN0ICp1YXJnOworICAgIGNoYXIgKnNhcmc7CiAKICAgICBzd2l0Y2ggKGMpIHsKIApAQCAtODMyLDYgKzc4Nyw4IEBACiAgICAgICAgIGNoYXIgKnAgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19TaXplKGFyZykgPT0gMSkKICAgICAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKVswXTsKKyAgICAgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9TaXplKGFyZykgPT0gMSkKKyAgICAgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAxIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICBicmVhazsKQEAgLTgzOSwxMSArNzk2LDMzIEBACiAKICAgICBjYXNlICdDJzogey8qIHVuaWNvZGUgY2hhciAqLwogICAgICAgICBpbnQgKnAgPSB2YV9hcmcoKnBfdmEsIGludCAqKTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpICYmCi0gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoYXJnKSA9PSAxKQotICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhcmcpWzBdOwotICAgICAgICBlbHNlCisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOworCisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGFyZykpCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiYSB1bmljb2RlIGNoYXJhY3RlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykpCisgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpICE9IDEpCisgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiYSB1bmljb2RlIGNoYXJhY3RlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoYXJnKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGFyZyk7CisgICAgICAgICpwID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgJ3AnOiB7LyogYm9vbGVhbiAqcCpyZWRpY2F0ZSAqLworICAgICAgICBpbnQgKnAgPSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgaW50IHZhbCA9IFB5T2JqZWN0X0lzVHJ1ZShhcmcpOworICAgICAgICBpZiAodmFsID4gMCkKKyAgICAgICAgICAgICpwID0gMTsKKyAgICAgICAgZWxzZSBpZiAodmFsID09IDApCisgICAgICAgICAgICAqcCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtODU4LDcgKzgzNyw3IEBACiAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgKFB5X2J1ZmZlciopcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgZm9ybWF0Kys7Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgMSkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtODkxLDIwICs4NzAsMTkgQEAKICAgICAgICAgICAgIGlmIChjID09ICd6JyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBOVUxMLCBOVUxMLCAwLCAxLCAwKTsKICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgdWFyZyA9IFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpOwotICAgICAgICAgICAgICAgIGlmICh1YXJnID09IE5VTEwpCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgc2FyZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICAgICAgUHlCdWZmZXJfRmlsbEluZm8ocCwgYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpLCBQeUJ5dGVzX0dFVF9TSVpFKHVhcmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDApOworICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIGFyZywgc2FyZywgbGVuLCAxLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnVmZmVyLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCBwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIDEpKSB7CisgICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgY2xlYW51cF9idWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTkyMCwxMiArODk4LDEzIEBACiAgICAgICAgICAgICAgICAgU1RPUkVfU0laRSgwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgdWFyZyA9IFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpOwotICAgICAgICAgICAgICAgIGlmICh1YXJnID09IE5VTEwpCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgc2FyZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyh1YXJnKTsKLSAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKFB5Qnl0ZXNfR0VUX1NJWkUodWFyZykpOworICAgICAgICAgICAgICAgICpwID0gc2FyZzsKKyAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ1ZmZlci1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIC8qIFhYWCBSZWFsbHk/ICovCkBAIC05MzksMjUgKzkxOCwyNSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogInMiIG9yICJ6IiAqLwogICAgICAgICAgICAgY2hhciAqKnAgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOwotICAgICAgICAgICAgdWFyZyA9IE5VTEw7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIHNhcmcgPSBOVUxMOwogCiAgICAgICAgICAgICBpZiAoYyA9PSAneicgJiYgYXJnID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgKnAgPSBOVUxMOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpOworICAgICAgICAgICAgICAgICpwID0gc2FyZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihjID09ICd6JyA/ICJzdHIgb3IgTm9uZSIgOiAic3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiB1YXJnICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkgc3RybGVuKCpwKSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHVhcmcpKQorICAgICAgICAgICAgaWYgKCpwICE9IE5VTEwgJiYgc2FyZyAhPSBOVUxMICYmIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IGxlbikKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgYyA9PSAneicgPyAic3RyIHdpdGhvdXQgbnVsbCBieXRlcyBvciBOb25lIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzdHIgd2l0aG91dCBudWxsIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgYyA9PSAneicgPyAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyIsCiAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTk2Niw5ICs5NDUsMTAgQEAKICAgICBjYXNlICd1JzogLyogcmF3IHVuaWNvZGUgYnVmZmVyIChQeV9VTklDT0RFICopICovCiAgICAgY2FzZSAnWic6IC8qIHJhdyB1bmljb2RlIGJ1ZmZlciBvciBOb25lICovCiAgICAgeworICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7CisKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7IC8qIGFueSBidWZmZXItbGlrZSBvYmplY3QgKi8KICAgICAgICAgICAgIC8qICJzIyIgb3IgIlojIiAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5X1VOSUNPREUgKiopOwogICAgICAgICAgICAgRkVUQ0hfU0laRTsKIAogICAgICAgICAgICAgaWYgKGMgPT0gJ1onICYmIGFyZyA9PSBQeV9Ob25lKSB7CkBAIC05NzYsMjMgKzk1NiwyNyBAQAogICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKFB5VW5pY29kZV9HRVRfU0laRShhcmcpKTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgU1RPUkVfU0laRShsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJzdHIgb3IgTm9uZSIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyogInMiIG9yICJaIiAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5X1VOSUNPREUgKiopOwotCiAgICAgICAgICAgICBpZiAoYyA9PSAnWicgJiYgYXJnID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgKnAgPSBOVUxMOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RybGVuKCpwKSAhPSBQeVVuaWNvZGVfR0VUX1NJWkUoYXJnKSkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKCpwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RybGVuKCpwKSAhPSBsZW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAgICAgInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVyIG9yIE5vbmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyBvciBOb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ1onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLApAQCAtMTExMCw3ICsxMDk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIDApKSB7CisgICAgICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIGNsZWFudXBfcHRyKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKQEAgLTExNTIsNyArMTEzNiw3IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIDApKSB7CisgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgY2xlYW51cF9wdHIpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTExODMsOCArMTE2NywxMSBAQAogCiAgICAgY2FzZSAnVSc6IHsgLyogUHlVbmljb2RlIG9iamVjdCAqLwogICAgICAgICBQeU9iamVjdCAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKQorICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgKnAgPSBhcmc7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInN0ciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjEzLDcgKzEyMDAsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIodW5zcGVjaWZpZWQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICBpZiAocmVzID09IFB5X0NMRUFOVVBfU1VQUE9SVEVEICYmCi0gICAgICAgICAgICAgICAgYWRkY2xlYW51cF9jb252ZXJ0KGFkZHIsIGZyZWVsaXN0LCBjb252ZXJ0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBhZGRjbGVhbnVwKGFkZHIsIGZyZWVsaXN0LCBjb252ZXJ0KSA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIH0KQEAgLTEyNDQsNyArMTIzMSw3IEBACiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKChQeV9idWZmZXIqKXApOwogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImNvbnRpZ3VvdXMgYnVmZmVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCAxKSkgeworICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgY2xlYW51cF9idWZmZXIpKSB7CiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTE0MzEsOCArMTQxOCwxMCBAQAogICAgIGludCBsZXZlbHNbMzJdOwogICAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqbXNnLCAqY3VzdG9tX21zZywgKmtleXdvcmQ7CiAgICAgaW50IG1pbiA9IElOVF9NQVg7CisgICAgaW50IG1heCA9IElOVF9NQVg7CiAgICAgaW50IGksIGxlbiwgbmFyZ3MsIG5rZXl3b3JkczsKLSAgICBQeU9iamVjdCAqZnJlZWxpc3QgPSBOVUxMLCAqY3VycmVudF9hcmc7CisgICAgUHlPYmplY3QgKmN1cnJlbnRfYXJnOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3QgPSB7MCwgTlVMTH07CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrZXl3b3JkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrZXl3b3JkcykpOwpAQCAtMTQ1NiwzMSArMTQ0NSw2OCBAQAogICAgIGZvciAobGVuPTA7IGt3bGlzdFtsZW5dOyBsZW4rKykKICAgICAgICAgY29udGludWU7CiAKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbGVuKTsKKyAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICBua2V5d29yZHMgPSAoa2V5d29yZHMgPT0gTlVMTCkgPyAwIDogUHlEaWN0X1NpemUoa2V5d29yZHMpOwogICAgIGlmIChuYXJncyArIG5rZXl3b3JkcyA+IGxlbikgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkICIKLSAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCVzICglZCBnaXZlbikiLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzJXMgdGFrZXMgYXQgbW9zdCAlZCBhcmd1bWVudCVzICglZCBnaXZlbikiLAogICAgICAgICAgICAgICAgICAgICAgKGZuYW1lID09IE5VTEwpID8gImZ1bmN0aW9uIiA6IGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgKGZuYW1lID09IE5VTEwpID8gIiIgOiAiKCkiLAogICAgICAgICAgICAgICAgICAgICAgbGVuLAogICAgICAgICAgICAgICAgICAgICAgKGxlbiA9PSAxKSA/ICIiIDogInMiLAogICAgICAgICAgICAgICAgICAgICAgbmFyZ3MgKyBua2V5d29yZHMpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgLyogY29udmVydCB0dXBsZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3MgaW4gc2FtZSBsb29wLCB1c2luZyBrd2xpc3QgdG8gZHJpdmUgcHJvY2VzcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBrZXl3b3JkID0ga3dsaXN0W2ldOwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKKyAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKHwgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBtaW4gPSBpOwogICAgICAgICAgICAgZm9ybWF0Kys7CisKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWF4ID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworCisgICAgICAgICAgICBpZiAobWF4IDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gIT0gSU5UX01BWCkgPyAiYXQgbW9zdCIgOiAiZXhhY3RseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCwgbmFyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKICAgICAgICAgaWYgKG5rZXl3b3JkcykgewpAQCAtMTQ5NCwxMSArMTUyMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVzJykgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobmtleXdvcmRzICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKIApAQCAtMTUwNyw3ICsxNTMzLDcgQEAKICAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CiAgICAgICAgICAgICBpZiAobXNnKSB7CiAgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTUxNiwxNCArMTU0MiwxNCBAQAogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyAocG9zICVkKSBub3QgZm91bmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCiAgICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgogICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KICAgICAgICAgICovCiAgICAgICAgIGlmICghbmtleXdvcmRzKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogCiAgICAgICAgIC8qIFdlIGFyZSBpbnRvIG9wdGlvbmFsIGFyZ3MsIHNraXAgdGhydSB0byBhbnkgcmVtYWluaW5nCiAgICAgICAgICAqIGtleXdvcmQgYXJncyAqLwpAQCAtMTUzMSwxNSArMTU1NywxNSBAQAogICAgICAgICBpZiAobXNnKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLCAiJXM6ICclcyciLCBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSAmJiAqZm9ybWF0ICE9ICd8JykgeworICAgIGlmICghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSAmJiAoKmZvcm1hdCAhPSAnfCcpICYmICgqZm9ybWF0ICE9ICckJykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCiAgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOwotICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICAvKiBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGV4dHJhbmVvdXMga2V5d29yZCBhcmd1bWVudHMgKi8KQEAgLTE1NTIsNyArMTU3OCw3IEBACiAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBjaGVjayB0aGF0IF9QeVVuaWNvZGVfQXNTdHJpbmcoKSByZXN1bHQgaXMgbm90IE5VTEwgKi8KICAgICAgICAgICAgIGtzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwpAQCAtMTU2OSwxMiArMTU5NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogfQogCiAKQEAgLTE1ODYsOCArMTYxMiwxMCBAQAogCiAgICAgc3dpdGNoIChjKSB7CiAKLSAgICAvKiBzaW1wbGUgY29kZXMKLSAgICAgKiBUaGUgaW5kaXZpZHVhbCB0eXBlcyAoc2Vjb25kIGFyZyBvZiB2YV9hcmcpIGFyZSBpcnJlbGV2YW50ICovCisgICAgLyoKKyAgICAgKiBjb2RlcyB0aGF0IHRha2UgYSBzaW5nbGUgZGF0YSBwb2ludGVyIGFzIGFuIGFyZ3VtZW50CisgICAgICogKHRoZSB0eXBlIG9mIHRoZSBwb2ludGVyIGlzIGlycmVsZXZhbnQpCisgICAgICovCiAKICAgICBjYXNlICdiJzogLyogYnl0ZSAtLSB2ZXJ5IHNob3J0IGludCAqLwogICAgIGNhc2UgJ0InOiAvKiBieXRlIGFzIGJpdGZpZWxkICovCkBAIC0xNjAxLDIyICsxNjI5LDIxIEBACiAgICAgY2FzZSAnTCc6IC8qIFBZX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgJ0snOiAvKiBQWV9MT05HX0xPTkcgc2l6ZWQgYml0ZmllbGQgKi8KICNlbmRpZgorICAgIGNhc2UgJ24nOiAvKiBQeV9zc2l6ZV90ICovCiAgICAgY2FzZSAnZic6IC8qIGZsb2F0ICovCiAgICAgY2FzZSAnZCc6IC8qIGRvdWJsZSAqLwogICAgIGNhc2UgJ0QnOiAvKiBjb21wbGV4IGRvdWJsZSAqLwogICAgIGNhc2UgJ2MnOiAvKiBjaGFyICovCiAgICAgY2FzZSAnQyc6IC8qIHVuaWNvZGUgY2hhciAqLworICAgIGNhc2UgJ3AnOiAvKiBib29sZWFuIHByZWRpY2F0ZSAqLworICAgIGNhc2UgJ1MnOiAvKiBzdHJpbmcgb2JqZWN0ICovCisgICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KKyAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCiAgICAgICAgIHsKICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KLSAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlfc3NpemVfdCAqKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAvKiBzdHJpbmcgY29kZXMgKi8KIAogICAgIGNhc2UgJ2UnOiAvKiBzdHJpbmcgd2l0aCBlbmNvZGluZyAqLwpAQCAtMTY0OSwxNiArMTY3Niw2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgLyogb2JqZWN0IGNvZGVzICovCi0KLSAgICBjYXNlICdTJzogLyogc3RyaW5nIG9iamVjdCAqLwotICAgIGNhc2UgJ1knOiAvKiBzdHJpbmcgb2JqZWN0ICovCi0gICAgY2FzZSAnVSc6IC8qIHVuaWNvZGUgc3RyaW5nIG9iamVjdCAqLwotICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgY2FzZSAnTyc6IC8qIG9iamVjdCAqLwogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIScpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRjb3B5cmlnaHQuYyBiL1B5dGhvbi9nZXRjb3B5cmlnaHQuYwppbmRleCBkMWUyNTc4Li4yZDI2Nzg3IDEwMDY0NAotLS0gYS9QeXRob24vZ2V0Y29weXJpZ2h0LmMKKysrIGIvUHl0aG9uL2dldGNvcHlyaWdodC5jCkBAIC00LDcgKzQsNyBAQAogCiBzdGF0aWMgY2hhciBjcHJ0W10gPQogIlwKLUNvcHlyaWdodCAoYykgMjAwMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLlxuXAorQ29weXJpZ2h0IChjKSAyMDAxLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uXG5cCiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuXAogXG5cCiBDb3B5cmlnaHQgKGMpIDIwMDAgQmVPcGVuLmNvbS5cblwKQEAgLTE5LDUgKzE5LDUgQEAKIGNvbnN0IGNoYXIgKgogUHlfR2V0Q29weXJpZ2h0KHZvaWQpCiB7Ci0JcmV0dXJuIGNwcnQ7CisgICAgcmV0dXJuIGNwcnQ7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IGNhYmM0ZDYuLmUwNDk5OWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC0xNzkxLDcgKzE3OTEsNyBAQAogICAgIHsxNjcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8xWzJdID0gewotICAgIHs5LCAyfSwKKyAgICB7MTY4LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzJbMV0gPSB7CkBAIC0xODAyLDE3MSArMTgwMiwxODggQEAKICAgICB7MiwgYXJjc184MF8xfSwKICAgICB7MSwgYXJjc184MF8yfSwKIH07Ci1zdGF0aWMgZGZhIGRmYXNbODFdID0gewotICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNCJ9LAotICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCi0gICAgICJcMjA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDQifSwKLSAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjIsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzYsCi0gICAgICJcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYzLCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc183LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY2LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzEwLAotICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjgsICJzdG10IiwgMCwgMiwgc3RhdGVzXzEyLAotICAgICAiXDAwMFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0In0sCi0gICAgezI2OSwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzEzLAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwIn0sCi0gICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDAifSwKLSAgICB7MjcxLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI3MiwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNiwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc0LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc1LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzE5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAotICAgIHsyNzcsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAotICAgIHsyODEsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NCwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NiwgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMwLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg5LCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzMsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTIsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0In0sCi0gICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk1LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc18zOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180MiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDEsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NSwKLSAgICAgIlwwMDRcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMCJ9LAotICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwNCwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNDgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDcsICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxMCwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwyMjBcMTc3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzEzLCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTYsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxOSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzYzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEyMFwwNzZcMDAwIn0sCi0gICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDAifSwKLSAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjIsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzY2LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwIn0sCi0gICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyNSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNjksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI4LCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxMSwgc3RhdGVzXzcyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0In0sCi0gICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzMxLCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzUsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfNzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCitzdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKKyAgICB7NzMsIDF9LAorICAgIHs5LCAyfSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE2OF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKKyAgICB7MjQsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzNdID0geworICAgIHsyLCBhcmNzXzgxXzB9LAorICAgIHsxLCBhcmNzXzgxXzF9LAorICAgIHsxLCBhcmNzXzgxXzJ9LAorfTsKK3N0YXRpYyBkZmEgZGZhc1s4Ml0gPSB7CisgICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAorICAgICAiXDAwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCisgICAgICJcMjA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI1OCwgImV2YWxfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYxLCAiZGVjb3JhdGVkIiwgMCwgMywgc3RhdGVzXzUsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MiwgImZ1bmNkZWYiLCAwLCA4LCBzdGF0ZXNfNiwKKyAgICAgIlwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYzLCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc183LAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjQsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc184LAorICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjUsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfOSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY2LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzEwLAorICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjcsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OCwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTIsCisgICAgICJcMDAwXDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI2OSwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzEzLAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHsyNzAsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE0LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHsyNzEsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTUsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezI3MiwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNiwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjczLCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3NlwwMzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzQsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc1LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCisgICAgezI3NywgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzIzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODAsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAorICAgIHsyODEsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODIsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgzLCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMyLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAorICAgIHsyOTQsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NywgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwMCwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAorICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDMsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNiwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA5LCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAorICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTIsICJleHByIiwgMCwgMiwgc3RhdGVzXzU2LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNSwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxOCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwIn0sCisgICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNywgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAorICAgIHszMzAsICJhcmdsaXN0IiwgMCwgOCwgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzMsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc183NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM2LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKKyAgICB7MzM3LCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzgxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMlwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorfTsKK3N0YXRpYyBsYWJlbCBsYWJlbHNbMTY5XSA9IHsKICAgICB7MCwgIkVNUFRZIn0sCiAgICAgezI1NiwgMH0sCiAgICAgezQsIDB9LApAQCAtMjEzNSwxMCArMjE1MiwxMSBAQAogICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAogICAgIHsxLCAieWllbGQifSwKKyAgICB7MzM3LCAwfSwKIH07CiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyID0gewotICAgIDgxLAorICAgIDgyLAogICAgIGRmYXMsCi0gICAgezE2OCwgbGFiZWxzfSwKKyAgICB7MTY5LCBsYWJlbHN9LAogICAgIDI1NgogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCBmNjU1ZTUxLi41ZmMyNTIzIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgImVycmNvZGUuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAiY29kZS5oIgorI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIApAQCAtMjYsMTc2ICsyNywzOCBAQAogI2VuZGlmCiAKIAotLyogTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgotICAgSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KLQotICAgVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQotICAgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi0gICBBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgotCi0gICBUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCi0gICAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0gICBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLQotICAgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLSAgIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKLSAgIDEwLgotCi0gICBTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCi0gICBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi0gICB0byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQotICAgdGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCi0gICBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci0gICBpdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQotICAgdGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCi0gICB3aXRoIFB5dGhvbiAzLjJhMC4KLQotICAgS25vd24gdmFsdWVzOgotICAgICAgIFB5dGhvbiAxLjU6ICAgMjAxMjEKLSAgICAgICBQeXRob24gMS41LjE6IDIwMTIxCi0gICAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotICAgICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKLSAgICAgICBQeXRob24gMi4wOiAgIDUwODIzCi0gICAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotICAgICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKLSAgICAgICBQeXRob24gMi4xLjE6IDYwMjAyCi0gICAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotICAgICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKLSAgICAgICBQeXRob24gMi4zYTA6IDYyMDExCi0gICAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotICAgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCi0gICAgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQotICAgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSAgICAgICBQeXRob24gMi40YjE6IDYyMDYxCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCi0gICAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0gICAgICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCi0gICAgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSAgICAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCi0gICAgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKLSAgICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotICAgICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKLSAgICAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCi0gICAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKLSAgICAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSAgICAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotICAgICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKLSAgICAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgotICAgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotICAgICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgotICAgICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKLSAgICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotICAgICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQotICAgICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCi0gICAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSAgICAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKLSAgICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotICAgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSovCi0KLS8qIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KLSAgIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5Ci0gICBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKQotICAgVEFHIG11c3QgY2hhbmdlIGZvciBlYWNoIG1ham9yIFB5dGhvbiByZWxlYXNlLiBUaGUgbWFnaWMgbnVtYmVyIHdpbGwgdGFrZQotICAgY2FyZSBvZiBhbnkgYnl0ZWNvZGUgY2hhbmdlcyB0aGF0IG9jY3VyIGR1cmluZyBkZXZlbG9wbWVudC4KLSovCi0jZGVmaW5lIE1BR0lDICgzMTgwIHwgKChsb25nKSdccic8PDE2KSB8ICgobG9uZyknXG4nPDwyNCkpCi0jZGVmaW5lIFRBRyAiY3B5dGhvbi0zMiIKICNkZWZpbmUgQ0FDSEVESVIgIl9fcHljYWNoZV9fIgotLyogQ3VycmVudCBtYWdpYyB3b3JkIGFuZCBzdHJpbmcgdGFnIGFzIGdsb2JhbHMuICovCi1zdGF0aWMgbG9uZyBweWNfbWFnaWMgPSBNQUdJQzsKLXN0YXRpYyBjb25zdCBjaGFyICpweWNfdGFnID0gVEFHOwogCi0vKiBTZWUgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZSgpIGJlbG93ICovCisvKiBTZWUgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KCkgYmVsb3cgKi8KIHN0YXRpYyBQeU9iamVjdCAqZXh0ZW5zaW9ucyA9IE5VTEw7CiAKKy8qIEZ1bmN0aW9uIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCitleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCwgUHlPYmplY3QgKik7CisKIC8qIFRoaXMgdGFibGUgaXMgZGVmaW5lZCBpbiBjb25maWcuYzogKi8KIGV4dGVybiBzdHJ1Y3QgX2luaXR0YWIgX1B5SW1wb3J0X0luaXR0YWJbXTsKIAotLyogTWV0aG9kIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCi1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOwotCiBzdHJ1Y3QgX2luaXR0YWIgKlB5SW1wb3J0X0luaXR0YWIgPSBfUHlJbXBvcnRfSW5pdHRhYjsKIAotLyogdGhlc2UgdGFibGVzIGRlZmluZSB0aGUgbW9kdWxlIHN1ZmZpeGVzIHRoYXQgUHl0aG9uIHJlY29nbml6ZXMgKi8KLXN0cnVjdCBmaWxlZGVzY3IgKiBfUHlJbXBvcnRfRmlsZXRhYiA9IE5VTEw7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5weSIsICJVIiwgUFlfU09VUkNFfSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyIucHl3IiwgIlUiLCBQWV9TT1VSQ0V9LAotI2VuZGlmCi0gICAgeyIucHljIiwgInJiIiwgUFlfQ09NUElMRUR9LAotICAgIHswLCAwfQotfTsKLQorc3RhdGljIFB5T2JqZWN0ICppbml0c3RyID0gTlVMTDsKIAogLyogSW5pdGlhbGl6ZSB0aGluZ3MgKi8KIAogdm9pZAogX1B5SW1wb3J0X0luaXQodm9pZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZpbGV0YWI7Ci0gICAgaW50IGNvdW50RCA9IDA7Ci0gICAgaW50IGNvdW50UyA9IDA7Ci0KLSAgICAvKiBwcmVwYXJlIF9QeUltcG9ydF9GaWxldGFiOiBjb3B5IGVudHJpZXMgZnJvbQotICAgICAgIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYiBhbmQgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYi4KLSAgICAgKi8KLSNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwotICAgIGZvciAoc2NhbiA9IF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYjsgc2Nhbi0+c3VmZml4ICE9IE5VTEw7ICsrc2NhbikKLSAgICAgICAgKytjb3VudEQ7Ci0jZW5kaWYKLSAgICBmb3IgKHNjYW4gPSBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiOyBzY2FuLT5zdWZmaXggIT0gTlVMTDsgKytzY2FuKQotICAgICAgICArK2NvdW50UzsKLSAgICBmaWxldGFiID0gUHlNZW1fTkVXKHN0cnVjdCBmaWxlZGVzY3IsIGNvdW50RCArIGNvdW50UyArIDEpOwotICAgIGlmIChmaWxldGFiID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgaW1wb3J0IGZpbGUgdGFibGUuIik7Ci0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBtZW1jcHkoZmlsZXRhYiwgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiLAotICAgICAgICAgICBjb3VudEQgKiBzaXplb2Yoc3RydWN0IGZpbGVkZXNjcikpOwotI2VuZGlmCi0gICAgbWVtY3B5KGZpbGV0YWIgKyBjb3VudEQsIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWIsCi0gICAgICAgICAgIGNvdW50UyAqIHNpemVvZihzdHJ1Y3QgZmlsZWRlc2NyKSk7Ci0gICAgZmlsZXRhYltjb3VudEQgKyBjb3VudFNdLnN1ZmZpeCA9IE5VTEw7Ci0KLSAgICBfUHlJbXBvcnRfRmlsZXRhYiA9IGZpbGV0YWI7Ci0KLSAgICBpZiAoUHlfT3B0aW1pemVGbGFnKSB7Ci0gICAgICAgIC8qIFJlcGxhY2UgIi5weWMiIHdpdGggIi5weW8iIGluIF9QeUltcG9ydF9GaWxldGFiICovCi0gICAgICAgIGZvciAoOyBmaWxldGFiLT5zdWZmaXggIT0gTlVMTDsgZmlsZXRhYisrKSB7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKGZpbGV0YWItPnN1ZmZpeCwgIi5weWMiKSA9PSAwKQotICAgICAgICAgICAgICAgIGZpbGV0YWItPnN1ZmZpeCA9ICIucHlvIjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpbml0c3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9faW5pdF9fIik7CisgICAgaWYgKGluaXRzdHIgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBpbXBvcnQgdmFyaWFibGVzIik7CiB9CiAKIHZvaWQKIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqdiwgKnBhdGhfaG9va3MgPSBOVUxMLCAqemltcGltcG9ydDsKKyAgICBQeU9iamVjdCAqdiwgKnBhdGhfaG9va3MgPSBOVUxMOwogICAgIGludCBlcnIgPSAwOwogCi0gICAgLyogYWRkaW5nIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSwgc2V0dGluZyB1cAotICAgICAgIHppcGltcG9ydCAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TnVsbEltcG9ydGVyX1R5cGUpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgaW5zdGFsbGluZyB6aXBpbXBvcnQgaG9va1xuIik7Ci0KKyAgICAvKiBhZGRpbmcgc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlICovCiAgICAgdiA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTIxNiwxMSArNzksMjUgQEAKICAgICBlcnIgPSBQeVN5c19TZXRPYmplY3QoInBhdGhfaG9va3MiLCBwYXRoX2hvb2tzKTsKICAgICBpZiAoZXJyKSB7CiAgIGVycm9yOgotICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICBQeV9GYXRhbEVycm9yKCJpbml0aWFsaXppbmcgc3lzLm1ldGFfcGF0aCwgc3lzLnBhdGhfaG9va3MsICIKLSAgICAgICAgICAgICAgICAgICAgICAicGF0aF9pbXBvcnRlcl9jYWNoZSwgb3IgTnVsbEltcG9ydGVyIGZhaWxlZCIKLSAgICAgICAgICAgICAgICAgICAgICApOworICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmF0YWxFcnJvcigiaW5pdGlhbGl6aW5nIHN5cy5tZXRhX3BhdGgsIHN5cy5wYXRoX2hvb2tzLCAiCisgICAgICAgICAgICAgICAgICAib3IgcGF0aF9pbXBvcnRlcl9jYWNoZSBmYWlsZWQiKTsKICAgICB9CisgICAgUHlfREVDUkVGKHBhdGhfaG9va3MpOworfQorCit2b2lkCitfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICpwYXRoX2hvb2tzLCAqemltcGltcG9ydDsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKTsKKyAgICBpZiAocGF0aF9ob29rcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBpbnN0YWxsaW5nIHppcGltcG9ydCBob29rXG4iKTsKIAogICAgIHppbXBpbXBvcnQgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInppcGltcG9ydCIpOwogICAgIGlmICh6aW1waW1wb3J0ID09IE5VTEwpIHsKQEAgLTIyOSw4ICsxMDYsOSBAQAogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydFxuIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqemlwaW1wb3J0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHppbXBpbXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInppcGltcG9ydGVyIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHppcGltcG9ydGVyKTsKKyAgICAgICAgUHlPYmplY3QgKnppcGltcG9ydGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZCh6aW1waW1wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3ppcGltcG9ydGVyKTsKICAgICAgICAgUHlfREVDUkVGKHppbXBpbXBvcnQpOwogICAgICAgICBpZiAoemlwaW1wb3J0ZXIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm8gemlwaW1wb3J0ZXIgb2JqZWN0IC0tIG9rYXkgKi8KQEAgLTIzOSwxNyArMTE3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICIjIGNhbid0IGltcG9ydCB6aXBpbXBvcnQuemlwaW1wb3J0ZXJcbiIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogc3lzLnBhdGhfaG9va3MuYXBwZW5kKHppcGltcG9ydGVyKSAqLwotICAgICAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChwYXRoX2hvb2tzLCB6aXBpbXBvcnRlcik7CisgICAgICAgICAgICAvKiBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgemlwaW1wb3J0ZXIpICovCisgICAgICAgICAgICBlcnIgPSBQeUxpc3RfSW5zZXJ0KHBhdGhfaG9va3MsIDAsIHppcGltcG9ydGVyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih6aXBpbXBvcnRlcik7Ci0gICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAogICAgICAgICAgICAgICAgICAgICAiIyBpbnN0YWxsZWQgemlwaW1wb3J0IGhvb2tcbiIpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0RFQ1JFRihwYXRoX2hvb2tzKTsKKworICAgIHJldHVybjsKKworICBlcnJvcjoKKyAgICBQeUVycl9QcmludCgpOworICAgIFB5X0ZhdGFsRXJyb3IoImluaXRpYWxpemluZyB6aXBpbXBvcnQgZmFpbGVkIik7CiB9CiAKIC8qIExvY2tpbmcgcHJpbWl0aXZlcyB0byBwcmV2ZW50IHBhcmFsbGVsIGltcG9ydHMgb2YgdGhlIHNhbWUgbW9kdWxlCkBAIC0yODUsNiArMTY5LDcgQEAKICAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGltcG9ydF9sb2NrLCAxKTsKICAgICAgICAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQodHN0YXRlKTsKICAgICB9CisgICAgYXNzZXJ0KGltcG9ydF9sb2NrX2xldmVsID09IDApOwogICAgIGltcG9ydF9sb2NrX3RocmVhZCA9IG1lOwogICAgIGltcG9ydF9sb2NrX2xldmVsID0gMTsKIH0KQEAgLTI5OCw2ICsxODMsNyBAQAogICAgIGlmIChpbXBvcnRfbG9ja190aHJlYWQgIT0gbWUpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpbXBvcnRfbG9ja19sZXZlbC0tOworICAgIGFzc2VydChpbXBvcnRfbG9ja19sZXZlbCA+PSAwKTsKICAgICBpZiAoaW1wb3J0X2xvY2tfbGV2ZWwgPT0gMCkgewogICAgICAgICBpbXBvcnRfbG9ja190aHJlYWQgPSAtMTsKICAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGltcG9ydF9sb2NrKTsKQEAgLTMxOSw3ICsyMDUsNyBAQAogICAgICAgICAvKiBGb3JrZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBpbXBvcnQgKi8KICAgICAgICAgbG9uZyBtZSA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKICAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGltcG9ydF9sb2NrLCAwKTsKLQkvKiBYWFg6IGNhbiB0aGUgcHJldmlvdXMgbGluZSBmYWlsPyAqLworICAgICAgICAvKiBYWFg6IGNhbiB0aGUgcHJldmlvdXMgbGluZSBmYWlsPyAqLwogICAgICAgICBpbXBvcnRfbG9ja190aHJlYWQgPSBtZTsKICAgICAgICAgaW1wb3J0X2xvY2tfbGV2ZWwtLTsKICAgICB9IGVsc2UgewpAQCAtMzY5LDggKzI1NSw2IEBACiB7CiAgICAgUHlfWERFQ1JFRihleHRlbnNpb25zKTsKICAgICBleHRlbnNpb25zID0gTlVMTDsKLSAgICBQeU1lbV9ERUwoX1B5SW1wb3J0X0ZpbGV0YWIpOwotICAgIF9QeUltcG9ydF9GaWxldGFiID0gTlVMTDsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChpbXBvcnRfbG9jayAhPSBOVUxMKSB7CiAgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhpbXBvcnRfbG9jayk7CkBAIC0zNzksMTQgKzI2Myw2IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQKLWltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcih2b2lkKQotewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nICE9IE5VTEwpCi0gICAgICAgIFB5RGljdF9DbGVhcihpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nKTsKLX0KLQogLyogSGVscGVyIGZvciBzeXMgKi8KIAogUHlPYmplY3QgKgpAQCAtNDIzLDcgKzI5OSw2IEBACiBQeUltcG9ydF9DbGVhbnVwKHZvaWQpCiB7CiAgICAgUHlfc3NpemVfdCBwb3MsIG5kb25lOwotICAgIGNoYXIgKm5hbWU7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZGljdDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKQEAgLTQ5NiwxNCArMzcxLDEzIEBACiAgICAgICAgICAgICBpZiAodmFsdWUtPm9iX3JlZmNudCAhPSAxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAiYnVpbHRpbnMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJidWlsdGlucyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgInN5cyIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgInN5cyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAiIyBjbGVhbnVwWzFdICVzXG4iLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKAorICAgICAgICAgICAgICAgICAgICAgICAgIiMgY2xlYW51cFsxXSAlVVxuIiwga2V5KTsKICAgICAgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIodmFsdWUpOwogICAgICAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIGtleSwgUHlfTm9uZSk7CiAgICAgICAgICAgICAgICAgbmRvbmUrKzsKQEAgLTUxNSwxMyArMzg5LDEyIEBACiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQobW9kdWxlcywgJnBvcywgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwotICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAiYnVpbHRpbnMiKSA9PSAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgImJ1aWx0aW5zIikgPT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgInN5cyIpID09IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAic3lzIikgPT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhbnVwWzJdICVzXG4iLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgY2xlYW51cFsyXSAlVVxuIiwga2V5KTsKICAgICAgICAgICAgIF9QeU1vZHVsZV9DbGVhcih2YWx1ZSk7CiAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpOwogICAgICAgICB9CkBAIC01NDcsNyArNDIwLDYgQEAKICAgICBQeURpY3RfQ2xlYXIobW9kdWxlcyk7CiAgICAgaW50ZXJwLT5tb2R1bGVzID0gTlVMTDsKICAgICBQeV9ERUNSRUYobW9kdWxlcyk7Ci0gICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyk7CiB9CiAKIApAQCAtNTU2LDI1ICs0MjgsMzYgQEAKIGxvbmcKIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHB5Y19tYWdpYzsKKyAgICBsb25nIHJlczsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKKyAgICBQeU9iamVjdCAqcHljX21hZ2ljID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX1JBV19NQUdJQ19OVU1CRVIiKTsKKyAgICBpZiAocHljX21hZ2ljID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXMgPSBQeUxvbmdfQXNMb25nKHB5Y19tYWdpYyk7CisgICAgUHlfREVDUkVGKHB5Y19tYWdpYyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogCitleHRlcm4gY29uc3QgY2hhciAqIF9QeVN5c19JbXBsQ2FjaGVUYWc7CisKIGNvbnN0IGNoYXIgKgogUHlJbXBvcnRfR2V0TWFnaWNUYWcodm9pZCkKIHsKLSAgICByZXR1cm4gcHljX3RhZzsKKyAgICByZXR1cm4gX1B5U3lzX0ltcGxDYWNoZVRhZzsKIH0KIAorCiAvKiBNYWdpYyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMgKGJ1aWx0LWluIGFzIHdlbGwgYXMgZHluYW1pY2FsbHkKICAgIGxvYWRlZCkuICBUbyBwcmV2ZW50IGluaXRpYWxpemluZyBhbiBleHRlbnNpb24gbW9kdWxlIG1vcmUgdGhhbgogICAgb25jZSwgd2Uga2VlcCBhIHN0YXRpYyBkaWN0aW9uYXJ5ICdleHRlbnNpb25zJyBrZXllZCBieSBtb2R1bGUgbmFtZQogICAgKGZvciBidWlsdC1pbiBtb2R1bGVzKSBvciBieSBmaWxlbmFtZSAoZm9yIGR5bmFtaWNhbGx5IGxvYWRlZAogICAgbW9kdWxlcyksIGNvbnRhaW5pbmcgdGhlc2UgbW9kdWxlcy4gIEEgY29weSBvZiB0aGUgbW9kdWxlJ3MKLSAgIGRpY3Rpb25hcnkgaXMgc3RvcmVkIGJ5IGNhbGxpbmcgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZSgpCisgICBkaWN0aW9uYXJ5IGlzIHN0b3JlZCBieSBjYWxsaW5nIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdCgpCiAgICBpbW1lZGlhdGVseSBhZnRlciB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHN1Y2NlZWRzLiAgQQogICAgY29weSBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlcmUgYnkgY2FsbGluZwotICAgX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKCkuCisgICBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdCgpLgogCiAgICBNb2R1bGVzIHdoaWNoIGRvIHN1cHBvcnQgbXVsdGlwbGUgaW5pdGlhbGl6YXRpb24gc2V0IHRoZWlyIG1fc2l6ZQogICAgZmllbGQgdG8gYSBub24tbmVnYXRpdmUgbnVtYmVyIChpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZQpAQCAtNTgzLDcgKzQ2Niw4IEBACiAqLwogCiBpbnQKLV9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUoUHlPYmplY3QgKm1vZCwgY2hhciAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQorX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlcywgKmRpY3Q7CiAgICAgc3RydWN0IFB5TW9kdWxlRGVmICpkZWY7CkBAIC02MDIsMTAgKzQ4NiwxMCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIG1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIG1vZCkgPCAwKQorICAgIGlmIChQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBuYW1lLCBtb2QpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlTdGF0ZV9BZGRNb2R1bGUobW9kLCBkZWYpIDwgMCkgewotICAgICAgICBQeURpY3RfRGVsSXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKTsKKyAgICAgICAgUHlEaWN0X0RlbEl0ZW0obW9kdWxlcywgbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKGRlZi0+bV9zaXplID09IC0xKSB7CkBAIC02MzEsMTcgKzUxNSwxNyBAQAogX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbihQeU9iamVjdCAqbW9kLCBjaGFyICpuYW1lKQogewogICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXMgPSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKG1vZCwgbmFtZSwgZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgcmVzID0gX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZW9iaiwgbmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKLV9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZShjaGFyICpuYW1lLCBQeU9iamVjdCAqZmlsZW5hbWUpCitfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2QsICptZGljdDsKICAgICBQeU1vZHVsZURlZiogZGVmOwpAQCAtNjU0LDcgKzUzOCw3IEBACiAgICAgICAgIC8qIE1vZHVsZSBkb2VzIG5vdCBzdXBwb3J0IHJlcGVhdGVkIGluaXRpYWxpemF0aW9uICovCiAgICAgICAgIGlmIChkZWYtPm1fYmFzZS5tX2NvcHkgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIG1kaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2QpOwpAQCAtNjY5LDMwICs1NTMsMzAgQEAKICAgICAgICAgbW9kID0gZGVmLT5tX2Jhc2UubV9pbml0KCk7CiAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUsIG1vZCk7CisgICAgICAgIFB5RGljdF9TZXRJdGVtKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSwgbW9kKTsKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgfQogICAgIGlmIChfUHlTdGF0ZV9BZGRNb2R1bGUobW9kLCBkZWYpIDwgMCkgewotICAgICAgICBQeURpY3RfRGVsSXRlbVN0cmluZyhQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUpOworICAgICAgICBQeURpY3RfRGVsSXRlbShQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJXMgIyBwcmV2aW91c2x5IGxvYWRlZCAoJVUpXG4iLAorICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlVSAjIHByZXZpb3VzbHkgbG9hZGVkICglUilcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGZpbGVuYW1lKTsKICAgICByZXR1cm4gbW9kOwogCiB9CiAKIFB5T2JqZWN0ICoKLV9QeUltcG9ydF9GaW5kQnVpbHRpbihjaGFyICpuYW1lKQorX1B5SW1wb3J0X0ZpbmRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKnJlcywgKmZpbGVuYW1lOwotICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCisgICAgUHlPYmplY3QgKnJlcywgKm5hbWVvYmo7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZShuYW1lLCBmaWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICByZXMgPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lb2JqLCBuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNzAzLDE4ICs1ODcsMTggQEAKICAgICdORVcnIFJFRkVSRU5DRSEgKi8KIAogUHlPYmplY3QgKgotUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCitQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7CiAgICAgUHlPYmplY3QgKm07CiAKLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSkgIT0gTlVMTCAmJgorICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIG5hbWUpKSAhPSBOVUxMICYmCiAgICAgICAgIFB5TW9kdWxlX0NoZWNrKG0pKQogICAgICAgICByZXR1cm4gbTsKLSAgICBtID0gUHlNb2R1bGVfTmV3KG5hbWUpOworICAgIG0gPSBQeU1vZHVsZV9OZXdPYmplY3QobmFtZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIG0pICE9IDApIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0obW9kdWxlcywgbmFtZSwgbSkgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTcyMywyMiArNjA3LDMxIEBACiAgICAgcmV0dXJuIG07CiB9CiAKK1B5T2JqZWN0ICoKK1B5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kdWxlOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2R1bGU7Cit9CisKKwogLyogUmVtb3ZlIG5hbWUgZnJvbSBzeXMubW9kdWxlcywgaWYgaXQncyB0aGVyZS4gKi8KIHN0YXRpYyB2b2lkCi1yZW1vdmVfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCityZW1vdmVfbW9kdWxlKFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSA9PSBOVUxMKQorICAgIGlmIChQeURpY3RfR2V0SXRlbShtb2R1bGVzLCBuYW1lKSA9PSBOVUxMKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFB5RGljdF9EZWxJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpIDwgMCkKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0obW9kdWxlcywgbmFtZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJpbXBvcnQ6ICBkZWxldGluZyBleGlzdGluZyBrZXkgaW4iCiAgICAgICAgICAgICAgICAgICAgICAgInN5cy5tb2R1bGVzIGZhaWxlZCIpOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKiBnZXRfc291cmNlZmlsZShjaGFyICpmaWxlKTsKLXN0YXRpYyBjaGFyICptYWtlX3NvdXJjZV9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmKTsKLXN0YXRpYyBjaGFyICptYWtlX2NvbXBpbGVkX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVidWcpOwogCiAvKiBFeGVjdXRlIGEgY29kZSBvYmplY3QgaW4gYSBtb2R1bGUgYW5kIHJldHVybiB0aGUgbW9kdWxlIG9iamVjdAogICogV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQuICBJZiBhbiBlcnJvciBvY2N1cnMsIG5hbWUgaXMKQEAgLTc2OCwxMCArNjYxLDYwIEBACiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcGF0aG5hbWUpCiB7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcGF0aG9iaiA9IE5VTEwsICpjcGF0aG9iaiA9IE5VTEw7CisKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoY3BhdGhuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgY3BhdGhvYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNwYXRobmFtZSk7CisgICAgICAgIGlmIChjcGF0aG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBjcGF0aG9iaiA9IE5VTEw7CisKKyAgICBpZiAocGF0aG5hbWUgIT0gTlVMTCkgeworICAgICAgICBwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7CisgICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChjcGF0aG9iaiAhPSBOVUxMKSB7CisgICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgICAgICBfUHlfSURFTlRJRklFUihfZ2V0X3NvdXJjZWZpbGUpOworCisgICAgICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBpbnRlcnByZXRlciEiKTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19nZXRfc291cmNlZmlsZSwgY3BhdGhvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcGF0aG9iaiA9IE5VTEw7CisKKyAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QobmFtZW9iaiwgY28sIHBhdGhvYmosIGNwYXRob2JqKTsKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICBQeV9YREVDUkVGKHBhdGhvYmopOworICAgIFB5X1hERUNSRUYoY3BhdGhvYmopOworICAgIHJldHVybiBtOworfQorCitQeU9iamVjdCoKK1B5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqY28sIFB5T2JqZWN0ICpwYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjcGF0aG5hbWUpCit7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7CiAgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKIAotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICAvKiBJZiB0aGUgbW9kdWxlIGlzIGJlaW5nIHJlbG9hZGVkLCB3ZSBnZXQgdGhlIG9sZCBtb2R1bGUgYmFjawpAQCAtNzgyLDQzICs3MjUsMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRCdWlsdGlucygpKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgLyogUmVtZW1iZXIgdGhlIGZpbGVuYW1lIGFzIHRoZSBfX2ZpbGVfXyBhdHRyaWJ1dGUgKi8KLSAgICB2ID0gTlVMTDsKICAgICBpZiAocGF0aG5hbWUgIT0gTlVMTCkgewotICAgICAgICB2ID0gZ2V0X3NvdXJjZWZpbGUocGF0aG5hbWUpOwotICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgdiA9IHBhdGhuYW1lOwogICAgIH0KLSAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgZWxzZSB7CiAgICAgICAgIHYgPSAoKFB5Q29kZU9iamVjdCAqKWNvKS0+Y29fZmlsZW5hbWU7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICB9CisgICAgUHlfSU5DUkVGKHYpOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19maWxlX18iLCB2KSAhPSAwKQogICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBOb3QgaW1wb3J0YW50IGVub3VnaCB0byByZXBvcnQgKi8KICAgICBQeV9ERUNSRUYodik7CiAKICAgICAvKiBSZW1lbWJlciB0aGUgcHljIHBhdGggbmFtZSBhcyB0aGUgX19jYWNoZWRfXyBhdHRyaWJ1dGUuICovCi0gICAgaWYgKGNwYXRobmFtZSA9PSBOVUxMKSB7CisgICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMKQorICAgICAgICB2ID0gY3BhdGhuYW1lOworICAgIGVsc2UKICAgICAgICAgdiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoKHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhjcGF0aG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydCAqLwotICAgICAgICB2ID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwotICAgIH0KICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fY2FjaGVkX18iLCB2KSAhPSAwKQogICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBOb3QgaW1wb3J0YW50IGVub3VnaCB0byByZXBvcnQgKi8KLSAgICBQeV9ERUNSRUYodik7CiAKICAgICB2ID0gUHlFdmFsX0V2YWxDb2RlKGNvLCBkLCBkKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0RFQ1JFRih2KTsKIAotICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpKSA9PSBOVUxMKSB7CisgICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgbmFtZSkpID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkxvYWRlZCBtb2R1bGUgJS4yMDBzIG5vdCBmb3VuZCBpbiBzeXMubW9kdWxlcyIsCisgICAgICAgICAgICAgICAgICAgICAiTG9hZGVkIG1vZHVsZSAlUiBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTgzMyw0MTUgKzc2Niw2IEBACiB9CiAKIAotLyogTGlrZSBzdHJyY2hyKHN0cmluZywgJy8nKSBidXQgc2VhcmNoZXMgZm9yIHRoZSByaWdodG1vc3Qgb2YgZWl0aGVyIFNFUAotICAgb3IgQUxUU0VQLCBpZiB0aGUgbGF0dGVyIGlzIGRlZmluZWQuCi0qLwotc3RhdGljIGNoYXIgKgotcmlnaHRtb3N0X3NlcChjaGFyICpzKQotewotICAgIGNoYXIgKmZvdW5kLCBjOwotICAgIGZvciAoZm91bmQgPSBOVUxMOyAoYyA9ICpzKTsgcysrKSB7Ci0gICAgICAgIGlmIChjID09IFNFUAotI2lmZGVmIEFMVFNFUAotICAgICAgICAgICAgfHwgYyA9PSBBTFRTRVAKLSNlbmRpZgotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3VuZCA9IHM7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZvdW5kOwotfQotCi0KLS8qIEdpdmVuIGEgcGF0aG5hbWUgZm9yIGEgUHl0aG9uIHNvdXJjZSBmaWxlLCBmaWxsIGEgYnVmZmVyIHdpdGggdGhlCi0gICBwYXRobmFtZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY29tcGlsZWQgZmlsZS4gIFJldHVybiB0aGUgcGF0aG5hbWUKLSAgIGZvciB0aGUgY29tcGlsZWQgZmlsZSwgb3IgTlVMTCBpZiB0aGVyZSdzIG5vIHNwYWNlIGluIHRoZSBidWZmZXIuCi0gICBEb2Vzbid0IHNldCBhbiBleGNlcHRpb24uICovCi0KLXN0YXRpYyBjaGFyICoKLW1ha2VfY29tcGlsZWRfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgaW50IGRlYnVnKQotewotICAgIC8qIGZvby5weSAtPiBfX3B5Y2FjaGVfXy9mb28uPHRhZz4ucHljICovCi0gICAgc2l6ZV90IGxlbiA9IHN0cmxlbihwYXRobmFtZSk7Ci0gICAgc2l6ZV90IGksIHNhdmU7Ci0gICAgY2hhciAqcG9zOwotICAgIGludCBzZXAgPSBTRVA7Ci0KLSAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgYnVmZmVyIGhhcyByb3VnaGx5IGVub3VnaCBzcGFjZSB0byBob2xkIHdoYXQKLSAgICAgICB3aWxsIGV2ZW50dWFsbHkgYmUgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29tcGlsZWQgZmlsZS4gIFRoZSA1IGV4dHJhCi0gICAgICAgYnl0ZXMgaW5jbHVkZSB0aGUgc2xhc2ggYWZlciBfX3B5Y2FjaGVfXywgdGhlIHR3byBleHRyYSBkb3RzLCB0aGUKLSAgICAgICBleHRyYSB0cmFpbGluZyBjaGFyYWN0ZXIgKCdjJyBvciAnbycpIGFuZCBudWxsLiAgVGhpcyBpc24ndCBleGFjdAotICAgICAgIGJlY2F1c2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgY2FuIGFmZmVjdCBob3cgbWFueSBhY3R1YWwKLSAgICAgICBjaGFyYWN0ZXJzIG9mIHRoZSBzdHJpbmcgZ2V0IGludG8gdGhlIGJ1ZmZlci4gIFdlJ2xsIGRvIGEgZmluYWwKLSAgICAgICBzYW5pdHkgY2hlY2sgYmVmb3JlIHdyaXRpbmcgdGhlIGV4dGVuc2lvbiB0byBlbnN1cmUgd2UgZG8gbm90Ci0gICAgICAgb3ZlcmZsb3cgdGhlIGJ1ZmZlci4KLSAgICAqLwotICAgIGlmIChsZW4gKyBzdHJsZW4oQ0FDSEVESVIpICsgc3RybGVuKHB5Y190YWcpICsgNSA+IGJ1ZmxlbikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBGaW5kIHRoZSBsYXN0IHBhdGggc2VwYXJhdG9yIGFuZCBjb3B5IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgc3RhcnQgb2YKLSAgICAgICB0aGUgc291cmNlIHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBzZXBhcmF0b3IuCi0gICAgKi8KLSAgICBpZiAoKHBvcyA9IHJpZ2h0bW9zdF9zZXAocGF0aG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGkgPSAwOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc2VwID0gKnBvczsKLSAgICAgICAgaSA9IHBvcyAtIHBhdGhuYW1lICsgMTsKLSAgICAgICAgc3RybmNweShidWYsIHBhdGhuYW1lLCBpKTsKLSAgICB9Ci0KLSAgICBzYXZlID0gaTsKLSAgICBidWZbaSsrXSA9ICdcMCc7Ci0gICAgLyogQWRkIF9fcHljYWNoZV9fLyAqLwotICAgIHN0cmNhdChidWYsIENBQ0hFRElSKTsKLSAgICBpICs9IHN0cmxlbihDQUNIRURJUikgLSAxOwotICAgIGJ1ZltpKytdID0gc2VwOwotICAgIGJ1ZltpKytdID0gJ1wwJzsKLSAgICAvKiBBZGQgdGhlIGJhc2UgZmlsZW5hbWUsIGJ1dCByZW1vdmUgdGhlIC5weSBvciAucHl3IGV4dGVuc2lvbiwgc2luY2UKLSAgICAgICB0aGUgdGFnIG5hbWUgbXVzdCBnbyBiZWZvcmUgdGhlIGV4dGVuc2lvbi4KLSAgICAqLwotICAgIHN0cmNhdChidWYsIHBhdGhuYW1lICsgc2F2ZSk7Ci0gICAgaWYgKChwb3MgPSBzdHJyY2hyKGJ1ZiwgJy4nKSkgIT0gTlVMTCkKLSAgICAgICAgKisrcG9zID0gJ1wwJzsKLSAgICBzdHJjYXQoYnVmLCBweWNfdGFnKTsKLSAgICAvKiBUaGUgbGVuZ3RoIHRlc3QgYWJvdmUgYXNzdW1lcyB0aGF0IHdlJ3JlIG9ubHkgYWRkaW5nIG9uZSBjaGFyYWN0ZXIKLSAgICAgICB0byB0aGUgZW5kIG9mIHdoYXQgd291bGQgbm9ybWFsbHkgYmUgdGhlIGV4dGVuc2lvbi4gIFdoYXQgaWYgdGhlcmUKLSAgICAgICBpcyBubyBleHRlbnNpb24sIG9yIHRoZSBzdHJpbmcgZW5kcyBpbiAnLicgb3IgJy5wJywgYW5kIG90aGVyd2lzZQotICAgICAgIGZpbGxzIHRoZSBidWZmZXI/ICBCeSBhcHBlbmRpbmcgNCBtb3JlIGNoYXJhY3RlcnMgb250byB0aGUgc3RyaW5nCi0gICAgICAgaGVyZSwgd2UgY291bGQgb3ZlcnJ1biB0aGUgYnVmZmVyLgotCi0gICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgbGV0J3Mgc2F5IGJ1Zmxlbj0zMiBhbmQgdGhlIGlucHV0IHN0cmluZyBpcwotICAgICAgICd4eHgucHknLiAgc3RybGVuKCkgd291bGQgYmUgNiBhbmQgdGhlIHRlc3QgYWJvdmUgd291bGQgeWllbGQ6Ci0KLSAgICAgICAoNiArIDExICsgMTAgKyA1ID09IDMyKSA+IDMyCi0KLSAgICAgICB3aGljaCBpcyBmYWxzZSBhbmQgc28gdGhlIG5hbWUgbWFuZ2xpbmcgd291bGQgY29udGludWUuICBUaGlzIHdvdWxkCi0gICAgICAgYmUgZmluZSBiZWNhdXNlIHdlJ2QgZW5kIHVwIHdpdGggdGhpcyBzdHJpbmcgaW4gYnVmOgotCi0gICAgICAgX19weWNhY2hlX18veHh4LmNweXRob24tMzIucHljXDAKLQotICAgICAgIHN0cmxlbihvZiB0aGF0KSA9PSAzMCArIHRoZSBudWwgZml0cyBpbnNpZGUgYSAzMiBjaGFyYWN0ZXIgYnVmZmVyLgotICAgICAgIFdlIGNhbiBldmVuIGhhbmRsZSBhbiBpbnB1dCBzdHJpbmcgb2Ygc2F5ICd4eHh4eCcgYWJvdmUgYmVjYXVzZQotICAgICAgIHRoYXQncyAoNSArIDExICsgMTAgKyA1ID09IDMxKSA+IDMyIHdoaWNoIGlzIGFsc28gZmFsc2UuICBOYW1lCi0gICAgICAgbWFuZ2xpbmcgdGhhdCB5aWVsZHM6Ci0KLSAgICAgICBfX3B5Y2FjaGVfXy94eHh4eGNweXRob24tMzIucHljXDAKLQotICAgICAgIHdoaWNoIGlzIDMyIGNoYXJhY3RlcnMgaW5jbHVkaW5nIHRoZSBudWwsIGFuZCB0aHVzIGZpdHMgaW4gdGhlCi0gICAgICAgYnVmZmVyLiBIb3dldmVyLCBhbiBpbnB1dCBzdHJpbmcgb2YgJ3h4eHh4eCcgd291bGQgeWllbGQgYSByZXN1bHQKLSAgICAgICBzdHJpbmcgb2Y6Ci0KLSAgICAgICBfX3B5Y2FjaGVfXy94eHh4eHhjcHl0aG9uLTMyLnB5Y1wwCi0KLSAgICAgICB3aGljaCBpcyAzMyBjaGFyYWN0ZXJzIGxvbmcgKGluY2x1ZGluZyB0aGUgbnVsKSwgdGh1cyBvdmVyZmxvd2luZwotICAgICAgIHRoZSBidWZmZXIsIGV2ZW4gdGhvdWdoIHRoZSBmaXJzdCB0ZXN0IHdvdWxkIGZhaWwsIGkuZS46IHRoZSBpbnB1dAotICAgICAgIHN0cmluZyBpcyBhbHNvIDYgY2hhcmFjdGVycyBsb25nLCBzbyAzMiA+IDMyIGlzIGZhbHNlLgotCi0gICAgICAgVGhlIHJlYXNvbiB0aGUgZmlyc3QgdGVzdCBmYWlscyBidXQgd2Ugc3RpbGwgb3ZlcmZsb3cgdGhlIGJ1ZmZlciBpcwotICAgICAgIHRoYXQgdGhlIHRlc3QgYWJvdmUgb25seSBleHBlY3RzIHRvIGFkZCBvbmUgZXh0cmEgY2hhcmFjdGVyIHRvIGJlCi0gICAgICAgYWRkZWQgdG8gdGhlIGV4dGVuc2lvbiwgYW5kIGhlcmUgd2UncmUgYWRkaW5nIHRocmVlIChweWMpLiAgV2UKLSAgICAgICBkb24ndCBhZGQgdGhlIGZpcnN0IGRvdCwgc28gdGhhdCByZWNsYWltcyBvbmUgb2YgZXhwZWN0ZWQKLSAgICAgICBwb3NpdGlvbnMsIGxlYXZpbmcgdXMgb3ZlcmZsb3dpbmcgYnkgMSBieXRlICgzIGV4dHJhIC0gMSByZWNsYWltZWQKLSAgICAgICBkb3QgLSAxIGV4cGVjdGVkIGV4dHJhID09IDEgb3ZlcmZsb3dlZCkuCi0KLSAgICAgICBUaGUgYmVzdCB3ZSBjYW4gZG8gaXMgZW5zdXJlIHRoYXQgd2Ugc3RpbGwgaGF2ZSBlbm91Z2ggcm9vbSBpbiB0aGUKLSAgICAgICB0YXJnZXQgYnVmZmVyIGJlZm9yZSB3ZSB3cml0ZSB0aGUgZXh0ZW5zaW9uLiAgQmVjYXVzZSBpdCdzIGFsd2F5cwotICAgICAgIG9ubHkgdGhlIGV4dGVuc2lvbiB0aGF0IGNhbiBjYXVzZSB0aGUgb3ZlcmZsb3csIGFuZCBuZXZlciB0aGUgb3RoZXIKLSAgICAgICBwYXRoIGJ5dGVzIHdlJ3ZlIHdyaXR0ZW4sIGl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGRvIG9uZSBtb3JlIHRlc3QKLSAgICAgICBoZXJlLiAgU3RpbGwsIHRoZSBhc3NlcnRpb24gdGhhdCBmb2xsb3dzIGNhbid0IGh1cnQuCi0gICAgKi8KLSNpZiAwCi0gICAgcHJpbnRmKCJzdHJsZW4oYnVmKTogJWQ7IGJ1ZmxlbjogJWRcbiIsIChpbnQpc3RybGVuKGJ1ZiksIChpbnQpYnVmbGVuKTsKLSNlbmRpZgotICAgIGlmIChzdHJsZW4oYnVmKSArIDUgPiBidWZsZW4pCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cmNhdChidWYsIGRlYnVnID8gIi5weWMiIDogIi5weW8iKTsKLSAgICBhc3NlcnQoc3RybGVuKGJ1ZikgPCBidWZsZW4pOwotICAgIHJldHVybiBidWY7Ci19Ci0KLQotLyogR2l2ZW4gYSBwYXRobmFtZSB0byBhIFB5dGhvbiBieXRlIGNvbXBpbGVkIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byB0aGUKLSAgIHNvdXJjZSBmaWxlLCBpZiB0aGUgcGF0aCBtYXRjaGVzIHRoZSBQRVAgMzE0NyBmb3JtYXQuICBUaGlzIGRvZXMgbm90IGNoZWNrCi0gICBmb3IgYW55IGZpbGUgZXhpc3RlbmNlLCBob3dldmVyLCBpZiB0aGUgcHljIGZpbGUgbmFtZSBkb2VzIG5vdCBtYXRjaCBQRVAKLSAgIDMxNDcgc3R5bGUsIE5VTEwgaXMgcmV0dXJuZWQuICBidWYgbXVzdCBiZSBhdCBsZWFzdCBhcyBiaWcgYXMgcGF0aG5hbWU7Ci0gICB0aGUgcmVzdWx0aW5nIHBhdGggd2lsbCBhbHdheXMgYmUgc2hvcnRlci4gKi8KLQotc3RhdGljIGNoYXIgKgotbWFrZV9zb3VyY2VfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1ZikKLXsKLSAgICAvKiBfX3B5Y2FjaGVfXy9mb28uPHRhZz4ucHljIC0+IGZvby5weSAqLwotICAgIHNpemVfdCBpLCBqOwotICAgIGNoYXIgKmxlZnQsICpyaWdodCwgKmRvdDAsICpkb3QxLCBzZXA7Ci0KLSAgICAvKiBMb29rIGJhY2sgdHdvIHNsYXNoZXMgZnJvbSB0aGUgZW5kLiAgSW4gYmV0d2VlbiB0aGVzZSB0d28gc2xhc2hlcwotICAgICAgIG11c3QgYmUgdGhlIHN0cmluZyBfX3B5Y2FjaGVfXyBvciB0aGlzIGlzIG5vdCBhIFBFUCAzMTQ3IHN0eWxlCi0gICAgICAgcGF0aC4gIEl0J3MgcG9zc2libGUgZm9yIHRoZXJlIHRvIGJlIG9ubHkgb25lIHNsYXNoLgotICAgICovCi0gICAgaWYgKChyaWdodCA9IHJpZ2h0bW9zdF9zZXAocGF0aG5hbWUpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXAgPSAqcmlnaHQ7Ci0gICAgKnJpZ2h0ID0gJ1wwJzsKLSAgICBsZWZ0ID0gcmlnaHRtb3N0X3NlcChwYXRobmFtZSk7Ci0gICAgKnJpZ2h0ID0gc2VwOwotICAgIGlmIChsZWZ0ID09IE5VTEwpCi0gICAgICAgIGxlZnQgPSBwYXRobmFtZTsKLSAgICBlbHNlCi0gICAgICAgIGxlZnQrKzsKLSAgICBpZiAocmlnaHQtbGVmdCAhPSBzdHJsZW4oQ0FDSEVESVIpIHx8Ci0gICAgICAgIHN0cm5jbXAobGVmdCwgQ0FDSEVESVIsIHJpZ2h0LWxlZnQpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogTm93IHZlcmlmeSB0aGF0IHRoZSBwYXRoIGNvbXBvbmVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3Qgc2xhc2gKLSAgICAgICBoYXMgdHdvIGRvdHMgaW4gaXQuCi0gICAgKi8KLSAgICBpZiAoKGRvdDAgPSBzdHJjaHIocmlnaHQgKyAxLCAnLicpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKGRvdDEgPSBzdHJjaHIoZG90MCArIDEsICcuJykpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIFRvbyBtYW55IGRvdHM/ICovCi0gICAgaWYgKHN0cmNocihkb3QxICsgMSwgJy4nKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIFRoaXMgaXMgYSBQRVAgMzE0NyBwYXRoLiAgU3RhcnQgYnkgY29weWluZyBldmVyeXRoaW5nIGZyb20gdGhlCi0gICAgICAgc3RhcnQgb2YgcGF0aG5hbWUgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgbGVmdG1vc3Qgc2xhc2guICBUaGVuCi0gICAgICAgY29weSB0aGUgZmlsZSdzIGJhc2VuYW1lLCByZW1vdmluZyB0aGUgbWFnaWMgdGFnIGFuZCBhZGRpbmcgYSAucHkKLSAgICAgICBzdWZmaXguCi0gICAgKi8KLSAgICBzdHJuY3B5KGJ1ZiwgcGF0aG5hbWUsIChpPWxlZnQtcGF0aG5hbWUpKTsKLSAgICBzdHJuY3B5KGJ1ZitpLCByaWdodCsxLCAoaj1kb3QwLXJpZ2h0KSk7Ci0gICAgc3RyY3B5KGJ1ZitpK2osICJweSIpOwotICAgIHJldHVybiBidWY7Ci19Ci0KLS8qIEdpdmVuIGEgcGF0aG5hbWUgZm9yIGEgUHl0aG9uIHNvdXJjZSBmaWxlLCBpdHMgdGltZSBvZiBsYXN0Ci0gICBtb2RpZmljYXRpb24sIGFuZCBhIHBhdGhuYW1lIGZvciBhIGNvbXBpbGVkIGZpbGUsIGNoZWNrIHdoZXRoZXIgdGhlCi0gICBjb21waWxlZCBmaWxlIHJlcHJlc2VudHMgdGhlIHNhbWUgdmVyc2lvbiBvZiB0aGUgc291cmNlLiAgSWYgc28sCi0gICByZXR1cm4gYSBGSUxFIHBvaW50ZXIgZm9yIHRoZSBjb21waWxlZCBmaWxlLCBwb3NpdGlvbmVkIGp1c3QgYWZ0ZXIKLSAgIHRoZSBoZWFkZXI7IGlmIG5vdCwgcmV0dXJuIE5VTEwuCi0gICBEb2Vzbid0IHNldCBhbiBleGNlcHRpb24uICovCi0KLXN0YXRpYyBGSUxFICoKLWNoZWNrX2NvbXBpbGVkX21vZHVsZShjaGFyICpwYXRobmFtZSwgdGltZV90IG10aW1lLCBjaGFyICpjcGF0aG5hbWUpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgbG9uZyBtYWdpYzsKLSAgICBsb25nIHB5Y19tdGltZTsKLQotICAgIGZwID0gZm9wZW4oY3BhdGhuYW1lLCAicmIiKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbWFnaWMgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgaWYgKG1hZ2ljICE9IHB5Y19tYWdpYykgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG1hZ2ljXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcHljX210aW1lID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGlmIChweWNfbXRpbWUgIT0gbXRpbWUpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgaGFzIGJhZCBtdGltZVxuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgbWF0Y2hlcyAlc1xuIiwgY3BhdGhuYW1lLCBwYXRobmFtZSk7Ci0gICAgcmV0dXJuIGZwOwotfQotCi0KLS8qIFJlYWQgYSBjb2RlIG9iamVjdCBmcm9tIGEgZmlsZSBhbmQgY2hlY2sgaXQgZm9yIHZhbGlkaXR5ICovCi0KLXN0YXRpYyBQeUNvZGVPYmplY3QgKgotcmVhZF9jb21waWxlZF9tb2R1bGUoY2hhciAqY3BhdGhuYW1lLCBGSUxFICpmcCkKLXsKLSAgICBQeU9iamVjdCAqY287Ci0KLSAgICBjbyA9IFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlKGZwKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUNvZGVfQ2hlY2soY28pKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJOb24tY29kZSBvYmplY3QgaW4gJS4yMDBzIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKGNvKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiAoUHlDb2RlT2JqZWN0ICopY287Ci19Ci0KLQotLyogTG9hZCBhIG1vZHVsZSBmcm9tIGEgY29tcGlsZWQgZmlsZSwgZXhlY3V0ZSBpdCwgYW5kIHJldHVybiBpdHMKLSAgIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfY29tcGlsZWRfbW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKmNwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgbG9uZyBtYWdpYzsKLSAgICBQeUNvZGVPYmplY3QgKmNvOwotICAgIFB5T2JqZWN0ICptOwotCi0gICAgbWFnaWMgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgaWYgKG1hZ2ljICE9IHB5Y19tYWdpYykgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQmFkIG1hZ2ljIG51bWJlciBpbiAlLjIwMHMiLCBjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBjbyA9IHJlYWRfY29tcGlsZWRfbW9kdWxlKGNwYXRobmFtZSwgZnApOwotICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBwcmVjb21waWxlZCBmcm9tICVzXG4iLAotICAgICAgICAgICAgbmFtZSwgY3BhdGhuYW1lKTsKLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKAotICAgICAgICBuYW1lLCAoUHlPYmplY3QgKiljbywgY3BhdGhuYW1lLCBjcGF0aG5hbWUpOwotICAgIFB5X0RFQ1JFRihjbyk7Ci0KLSAgICByZXR1cm4gbTsKLX0KLQotLyogUGFyc2UgYSBzb3VyY2UgZmlsZSBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGNvZGUgb2JqZWN0ICovCi0KLXN0YXRpYyBQeUNvZGVPYmplY3QgKgotcGFyc2Vfc291cmNlX21vZHVsZShjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7Ci0gICAgbW9kX3R5IG1vZDsKLSAgICBQeUNvbXBpbGVyRmxhZ3MgZmxhZ3M7Ci0gICAgUHlBcmVuYSAqYXJlbmEgPSBQeUFyZW5hX05ldygpOwotICAgIGlmIChhcmVuYSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZsYWdzLmNmX2ZsYWdzID0gMDsKLSAgICBtb2QgPSBQeVBhcnNlcl9BU1RGcm9tRmlsZShmcCwgcGF0aG5hbWUsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCwgMCwgMCwgJmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGFyZW5hKTsKLSAgICBpZiAobW9kKSB7Ci0gICAgICAgIGNvID0gUHlBU1RfQ29tcGlsZShtb2QsIHBhdGhuYW1lLCBOVUxMLCBhcmVuYSk7Ci0gICAgfQotICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7Ci0gICAgcmV0dXJuIGNvOwotfQotCi0KLS8qIEhlbHBlciB0byBvcGVuIGEgYnl0ZWNvZGUgZmlsZSBmb3Igd3JpdGluZyBpbiBleGNsdXNpdmUgbW9kZSAqLwotCi1zdGF0aWMgRklMRSAqCi1vcGVuX2V4Y2x1c2l2ZShjaGFyICpmaWxlbmFtZSwgbW9kZV90IG1vZGUpCi17Ci0jaWYgZGVmaW5lZChPX0VYQ0wpJiZkZWZpbmVkKE9fQ1JFQVQpJiZkZWZpbmVkKE9fV1JPTkxZKSYmZGVmaW5lZChPX1RSVU5DKQotICAgIC8qIFVzZSBPX0VYQ0wgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIGFub3RoZXIgcHJvY2VzcyB0cmllcyB0bwotICAgICAgIHdyaXRlIHRoZSBzYW1lIGZpbGUuICBXaGVuIHRoYXQgaGFwcGVucywgb3VyIG9wZW4oKSBjYWxsIGZhaWxzLAotICAgICAgIHdoaWNoIGlzIGp1c3QgZmluZSAoc2luY2UgaXQncyBvbmx5IGEgY2FjaGUpLgotICAgICAgIFhYWCBJZiB0aGUgZmlsZSBleGlzdHMgYW5kIGlzIHdyaXRhYmxlIGJ1dCB0aGUgZGlyZWN0b3J5IGlzIG5vdAotICAgICAgIHdyaXRhYmxlLCB0aGUgZmlsZSB3aWxsIG5ldmVyIGJlIHdyaXR0ZW4uICBPaCB3ZWxsLgotICAgICovCi0gICAgaW50IGZkOwotICAgICh2b2lkKSB1bmxpbmsoZmlsZW5hbWUpOwotICAgIGZkID0gb3BlbihmaWxlbmFtZSwgT19FWENMfE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQwotI2lmZGVmIE9fQklOQVJZCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfE9fQklOQVJZICAgLyogbmVjZXNzYXJ5IGZvciBXaW5kb3dzICovCi0jZW5kaWYKLSNpZmRlZiBfX1ZNUwotICAgICAgICAgICAgLCBtb2RlLCAiY3R4dD1iaW4iLCAic2hyPW5pbCIKLSNlbHNlCi0gICAgICAgICAgICAsIG1vZGUKLSNlbmRpZgotICAgICAgICAgICk7Ci0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIGZkb3BlbihmZCwgIndiIik7Ci0jZWxzZQotICAgIC8qIEJlc3Qgd2UgY2FuIGRvIC0tIG9uIFdpbmRvd3MgdGhpcyBjYW4ndCBoYXBwZW4gYW55d2F5ICovCi0gICAgcmV0dXJuIGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKLSNlbmRpZgotfQotCi0KLS8qIFdyaXRlIGEgY29tcGlsZWQgbW9kdWxlIHRvIGEgZmlsZSwgcGxhY2luZyB0aGUgdGltZSBvZiBsYXN0Ci0gICBtb2RpZmljYXRpb24gb2YgaXRzIHNvdXJjZSBpbnRvIHRoZSBoZWFkZXIuCi0gICBFcnJvcnMgYXJlIGlnbm9yZWQsIGlmIGEgd3JpdGUgZXJyb3Igb2NjdXJzIGFuIGF0dGVtcHQgaXMgbWFkZSB0bwotICAgcmVtb3ZlIHRoZSBmaWxlLiAqLwotCi1zdGF0aWMgdm9pZAotd3JpdGVfY29tcGlsZWRfbW9kdWxlKFB5Q29kZU9iamVjdCAqY28sIGNoYXIgKmNwYXRobmFtZSwgc3RydWN0IHN0YXQgKnNyY3N0YXQpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgY2hhciAqZGlycGF0aDsKLSAgICB0aW1lX3QgbXRpbWUgPSBzcmNzdGF0LT5zdF9tdGltZTsKLSAgICBpbnQgc2F2ZWQ7Ci0jaWZkZWYgTVNfV0lORE9XUyAgIC8qIHNpbmNlIFdpbmRvd3MgdXNlcyBkaWZmZXJlbnQgcGVybWlzc2lvbnMgICovCi0gICAgbW9kZV90IG1vZGUgPSBzcmNzdGF0LT5zdF9tb2RlICYgflNfSUVYRUM7Ci0gICAgLyogSXNzdWUgIzYwNzQ6IFdlIGVuc3VyZSB1c2VyIHdyaXRlIGFjY2Vzcywgc28gd2UgY2FuIGRlbGV0ZSBpdCBsYXRlcgotICAgICAqIHdoZW4gdGhlIHNvdXJjZSBmaWxlIGNoYW5nZXMuIChPbiBQT1NJWCwgdGhpcyBvbmx5IHJlcXVpcmVzIHdyaXRlCi0gICAgICogYWNjZXNzIHRvIHRoZSBkaXJlY3RvcnksIG9uIFdpbmRvd3MsIHdlIG5lZWQgd3JpdGUgYWNjZXNzIHRvIHRoZSBmaWxlCi0gICAgICogYXMgd2VsbCkKLSAgICAgKi8KLSAgICBtb2RlIHw9IF9TX0lXUklURTsKLSNlbHNlCi0gICAgbW9kZV90IG1vZGUgPSBzcmNzdGF0LT5zdF9tb2RlICYgflNfSVhVU1IgJiB+U19JWEdSUCAmIH5TX0lYT1RIOwotICAgIG1vZGVfdCBkaXJtb2RlID0gKHNyY3N0YXQtPnN0X21vZGUgfAotICAgICAgICAgICAgICAgICAgICAgIFNfSVhVU1IgfCBTX0lYR1JQIHwgU19JWE9USCB8Ci0gICAgICAgICAgICAgICAgICAgICAgU19JV1VTUiB8IFNfSVdHUlAgfCBTX0lXT1RIKTsKLSNlbmRpZgotCi0gICAgLyogRW5zdXJlIHRoYXQgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yeSBleGlzdHMuICovCi0gICAgZGlycGF0aCA9IHJpZ2h0bW9zdF9zZXAoY3BhdGhuYW1lKTsKLSAgICBpZiAoZGlycGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICIjIG5vICVzIHBhdGggZm91bmQgJXNcbiIsCi0gICAgICAgICAgICAgICAgQ0FDSEVESVIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2F2ZWQgPSAqZGlycGF0aDsKLSAgICAqZGlycGF0aCA9ICdcMCc7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKF9ta2RpcihjcGF0aG5hbWUpIDwgMCAmJiBlcnJubyAhPSBFRVhJU1QpIHsKLSNlbHNlCi0gICAgaWYgKG1rZGlyKGNwYXRobmFtZSwgZGlybW9kZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkgewotI2VuZGlmCi0gICAgICAgICpkaXJwYXRoID0gc2F2ZWQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICIjIGNhbm5vdCBjcmVhdGUgY2FjaGUgZGlyICVzXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICpkaXJwYXRoID0gc2F2ZWQ7Ci0KLSAgICBmcCA9IG9wZW5fZXhjbHVzaXZlKGNwYXRobmFtZSwgbW9kZSk7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgY2FuJ3QgY3JlYXRlICVzXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUocHljX21hZ2ljLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICAvKiBGaXJzdCB3cml0ZSBhIDAgZm9yIG10aW1lICovCi0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSgwTCwgZnAsIFB5X01BUlNIQUxfVkVSU0lPTik7Ci0gICAgUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9GaWxlKChQeU9iamVjdCAqKWNvLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICBpZiAoZmZsdXNoKGZwKSAhPSAwIHx8IGZlcnJvcihmcCkpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2FuJ3Qgd3JpdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIC8qIERvbid0IGtlZXAgcGFydGlhbCBmaWxlICovCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgICh2b2lkKSB1bmxpbmsoY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvKiBOb3cgd3JpdGUgdGhlIHRydWUgbXRpbWUgKGFzIGEgMzItYml0IGZpZWxkKSAqLwotICAgIGZzZWVrKGZwLCA0TCwgMCk7Ci0gICAgYXNzZXJ0KG10aW1lIDw9IDB4RkZGRkZGRkYpOwotICAgIFB5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUoKGxvbmcpbXRpbWUsIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIGZmbHVzaChmcCk7Ci0gICAgZmNsb3NlKGZwKTsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIHdyb3RlICVzXG4iLCBjcGF0aG5hbWUpOwotfQotCiBzdGF0aWMgdm9pZAogdXBkYXRlX2NvZGVfZmlsZW5hbWVzKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpvbGRuYW1lLCBQeU9iamVjdCAqbmV3bmFtZSkKIHsKQEAgLTEyNjYsMjI3ICs3OTAsNjAgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQKLXVwZGF0ZV9jb21waWxlZF9tb2R1bGUoUHlDb2RlT2JqZWN0ICpjbywgY2hhciAqcGF0aG5hbWUpCitzdGF0aWMgdm9pZAordXBkYXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqbmV3bmFtZSkKIHsKLSAgICBQeU9iamVjdCAqb2xkbmFtZSwgKm5ld25hbWU7CisgICAgUHlPYmplY3QgKm9sZG5hbWU7CiAKLSAgICBuZXduYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgaWYgKG5ld25hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjby0+Y29fZmlsZW5hbWUsIG5ld25hbWUpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXduYW1lKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZShjby0+Y29fZmlsZW5hbWUsIG5ld25hbWUpID09IDApCisgICAgICAgIHJldHVybjsKIAogICAgIG9sZG5hbWUgPSBjby0+Y29fZmlsZW5hbWU7CiAgICAgUHlfSU5DUkVGKG9sZG5hbWUpOwogICAgIHVwZGF0ZV9jb2RlX2ZpbGVuYW1lcyhjbywgb2xkbmFtZSwgbmV3bmFtZSk7CiAgICAgUHlfREVDUkVGKG9sZG5hbWUpOwotICAgIFB5X0RFQ1JFRihuZXduYW1lKTsKLSAgICByZXR1cm4gMTsKIH0KIAotLyogTG9hZCBhIHNvdXJjZSBtb2R1bGUgZnJvbSBhIGdpdmVuIGZpbGUgYW5kIHJldHVybiBpdHMgbW9kdWxlCi0gICBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQuICBJZiB0aGVyZSdzIGEgbWF0Y2hpbmcKLSAgIGJ5dGUtY29tcGlsZWQgZmlsZSwgdXNlIHRoYXQgaW5zdGVhZC4gKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfc291cmNlX21vZHVsZShjaGFyICpuYW1lLCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitpbXBfZml4X2NvX2ZpbGVuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBGSUxFICpmcGM7Ci0gICAgY2hhciAqYnVmOwotICAgIGNoYXIgKmNwYXRobmFtZTsKLSAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKKyAgICBQeU9iamVjdCAqY287CisgICAgUHlPYmplY3QgKmZpbGVfcGF0aDsKIAotICAgIGlmIChmc3RhdChmaWxlbm8oZnApLCAmc3QpICE9IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZ2V0IGZpbGUgc3RhdHVzIGZyb20gJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpfZml4X2NvX2ZpbGVuYW1lIiwgJmNvLCAmZmlsZV9wYXRoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgY29kZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChzaXplb2Ygc3Quc3RfbXRpbWUgPiA0KSB7Ci0gICAgICAgIC8qIFB5dGhvbidzIC5weWMgdGltZXN0YW1wIGhhbmRsaW5nIHByZXN1bWVzIHRoYXQgdGhlIHRpbWVzdGFtcCBmaXRzCi0gICAgICAgICAgIGluIDQgYnl0ZXMuIFNpbmNlIHRoZSBjb2RlIG9ubHkgZG9lcyBhbiBlcXVhbGl0eSBjb21wYXJpc29uLAotICAgICAgICAgICBvcmRlcmluZyBpcyBub3QgaW1wb3J0YW50IGFuZCB3ZSBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgaGlnaGVyIGJpdHMKLSAgICAgICAgICAgKGNvbGxpc2lvbnMgYXJlIGV4dHJlbWVseSB1bmxpa2VseSkuCi0gICAgICAgICAqLwotICAgICAgICBzdC5zdF9tdGltZSAmPSAweEZGRkZGRkZGOwotICAgIH0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGNwYXRobmFtZSA9IG1ha2VfY29tcGlsZWRfcGF0aG5hbWUoCi0gICAgICAgIHBhdGhuYW1lLCBidWYsIChzaXplX3QpTUFYUEFUSExFTiArIDEsICFQeV9PcHRpbWl6ZUZsYWcpOwotICAgIGlmIChjcGF0aG5hbWUgIT0gTlVMTCAmJgotICAgICAgICAoZnBjID0gY2hlY2tfY29tcGlsZWRfbW9kdWxlKHBhdGhuYW1lLCBzdC5zdF9tdGltZSwgY3BhdGhuYW1lKSkpIHsKLSAgICAgICAgY28gPSByZWFkX2NvbXBpbGVkX21vZHVsZShjcGF0aG5hbWUsIGZwYyk7Ci0gICAgICAgIGZjbG9zZShmcGMpOwotICAgICAgICBpZiAoY28gPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKHVwZGF0ZV9jb21waWxlZF9tb2R1bGUoY28sIHBhdGhuYW1lKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBwcmVjb21waWxlZCBmcm9tICVzXG4iLAotICAgICAgICAgICAgICAgIG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgICAgIHBhdGhuYW1lID0gY3BhdGhuYW1lOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY28gPSBwYXJzZV9zb3VyY2VfbW9kdWxlKHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgZnJvbSAlc1xuIiwKLSAgICAgICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgICAgIGlmIChjcGF0aG5hbWUpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpybyA9IFB5U3lzX0dldE9iamVjdCgiZG9udF93cml0ZV9ieXRlY29kZSIpOwotICAgICAgICAgICAgaW50IGIgPSAocm8gPT0gTlVMTCkgPyAwIDogUHlPYmplY3RfSXNUcnVlKHJvKTsKLSAgICAgICAgICAgIGlmIChiIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICBpZiAoIWIpCi0gICAgICAgICAgICAgICAgd3JpdGVfY29tcGlsZWRfbW9kdWxlKGNvLCBjcGF0aG5hbWUsICZzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygKLSAgICAgICAgbmFtZSwgKFB5T2JqZWN0ICopY28sIHBhdGhuYW1lLCBjcGF0aG5hbWUpOwotICAgIFB5X0RFQ1JFRihjbyk7CiAKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIG07CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZmlsZV9wYXRoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotZXJyb3JfZXhpdDoKLSAgICBQeV9YREVDUkVGKGNvKTsKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgdXBkYXRlX2NvbXBpbGVkX21vZHVsZSgoUHlDb2RlT2JqZWN0KiljbywgZmlsZV9wYXRoKTsKKworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi0vKiBHZXQgc291cmNlIGZpbGUgLT4gdW5pY29kZSBvciBOb25lCi0gKiBSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBweSBmaWxlIGlmIGF2YWlsYWJsZSwgZWxzZSB0aGUgZ2l2ZW4gcGF0aAotICovCi1zdGF0aWMgUHlPYmplY3QgKgotZ2V0X3NvdXJjZWZpbGUoY2hhciAqZmlsZSkKLXsKLSAgICBjaGFyICpweSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKnU7Ci0gICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQotICAgIGlmICghZmlsZSB8fCAhKmZpbGUpIHsKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQotCi0gICAgbGVuID0gc3RybGVuKGZpbGUpOwotICAgIC8qIG1hdGNoICcqLnB5PycgKi8KLSAgICBpZiAobGVuID4gTUFYUEFUSExFTiB8fCBQeU9TX3N0cm5pY21wKCZmaWxlW2xlbi00XSwgIi5weSIsIDMpICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZSk7Ci0gICAgfQotCi0gICAgcHkgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAocHkgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgLyogU3RhcnQgYnkgdHJ5aW5nIHRvIHR1cm4gUEVQIDMxNDcgcGF0aCBpbnRvIHNvdXJjZSBwYXRoLiAgSWYgdGhhdAotICAgICAqIGZhaWxzLCBqdXN0IGNob3Agb2ZmIHRoZSB0cmFpbGluZyBjaGFyYWN0ZXIsIGkuZS4gbGVnYWN5IHB5YyBwYXRoCi0gICAgICogdG8gcHkuCi0gICAgICovCi0gICAgaWYgKG1ha2Vfc291cmNlX3BhdGhuYW1lKGZpbGUsIHB5KSA9PSBOVUxMKSB7Ci0gICAgICAgIHN0cm5jcHkocHksIGZpbGUsIGxlbi0xKTsKLSAgICAgICAgcHlbbGVuLTFdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdChweSwgJnN0YXRidWYpID09IDAgJiYKLSAgICAgICAgU19JU1JFRyhzdGF0YnVmLnN0X21vZGUpKSB7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHB5KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGUpOwotICAgIH0KLSAgICBQeU1lbV9GUkVFKHB5KTsKLSAgICByZXR1cm4gdTsKLX0KIAogLyogRm9yd2FyZCAqLwotc3RhdGljIFB5T2JqZWN0ICpsb2FkX21vZHVsZShjaGFyICosIEZJTEUgKiwgY2hhciAqLCBpbnQsIFB5T2JqZWN0ICopOwotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgKmZpbmRfbW9kdWxlKGNoYXIgKiwgY2hhciAqLCBQeU9iamVjdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBGSUxFICoqLCBQeU9iamVjdCAqKik7Ci1zdGF0aWMgc3RydWN0IF9mcm96ZW4gKiBmaW5kX2Zyb3plbihjaGFyICopOwotCi0vKiBMb2FkIGEgcGFja2FnZSBhbmQgcmV0dXJuIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQKLSAgIFJFRkVSRU5DRSBDT1VOVCAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9wYWNrYWdlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lKQotewotICAgIFB5T2JqZWN0ICptLCAqZDsKLSAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwotICAgIGludCBlcnI7Ci0gICAgY2hhciAqYnVmID0gTlVMTDsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwOwotCi0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBkaXJlY3RvcnkgJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgZmlsZSA9IGdldF9zb3VyY2VmaWxlKHBhdGhuYW1lKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHBhdGggPSBQeV9CdWlsZFZhbHVlKCJbT10iLCBmaWxlKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2ZpbGVfXyIsIGZpbGUpOwotICAgIGlmIChlcnIgPT0gMCkKLSAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fcGF0aF9fIiwgcGF0aCk7Ci0gICAgaWYgKGVyciAhPSAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBidWZbMF0gPSAnXDAnOwotICAgIGZkcCA9IGZpbmRfbW9kdWxlKG5hbWUsICJfX2luaXRfXyIsIHBhdGgsIGJ1ZiwgTUFYUEFUSExFTisxLCAmZnAsIE5VTEwpOwotICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbSA9IE5VTEw7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0gICAgbSA9IGxvYWRfbW9kdWxlKG5hbWUsIGZwLCBidWYsIGZkcC0+dHlwZSwgTlVMTCk7Ci0gICAgaWYgKGZwICE9IE5VTEwpCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgZ290byBjbGVhbnVwOwotCi0gIGVycm9yOgotICAgIG0gPSBOVUxMOwotICBjbGVhbnVwOgotICAgIGlmIChidWYpCi0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgIFB5X1hERUNSRUYoZmlsZSk7Ci0gICAgcmV0dXJuIG07Ci19CitzdGF0aWMgc3RydWN0IF9mcm96ZW4gKiBmaW5kX2Zyb3plbihQeU9iamVjdCAqKTsKIAogCiAvKiBIZWxwZXIgdG8gdGVzdCBmb3IgYnVpbHQtaW4gbW9kdWxlICovCiAKIHN0YXRpYyBpbnQKLWlzX2J1aWx0aW4oY2hhciAqbmFtZSkKK2lzX2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgaW50IGk7CisgICAgaW50IGksIGNtcDsKICAgICBmb3IgKGkgPSAwOyBQeUltcG9ydF9Jbml0dGFiW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgIGlmIChzdHJjbXAobmFtZSwgUHlJbXBvcnRfSW5pdHRhYltpXS5uYW1lKSA9PSAwKSB7CisgICAgICAgIGNtcCA9IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIFB5SW1wb3J0X0luaXR0YWJbaV0ubmFtZSk7CisgICAgICAgIGlmIChjbXAgPT0gMCkgewogICAgICAgICAgICAgaWYgKFB5SW1wb3J0X0luaXR0YWJbaV0uaW5pdGZ1bmMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBlbHNlCkBAIC0xNTQyLDE1ICs4OTksNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICBpbXBvcnRlciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCi0gICAgICAgICAgICAoUHlPYmplY3QgKikmUHlOdWxsSW1wb3J0ZXJfVHlwZSwgcCwgTlVMTAotICAgICAgICApOwotICAgICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW1wb3J0RXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CiAgICAgaWYgKGltcG9ydGVyICE9IE5VTEwpIHsKICAgICAgICAgaW50IGVyciA9IFB5RGljdF9TZXRJdGVtKHBhdGhfaW1wb3J0ZXJfY2FjaGUsIHAsIGltcG9ydGVyKTsKQEAgLTE1NzUsNjYxICs5MjQsMzggQEAKICAgICByZXR1cm4gaW1wb3J0ZXI7CiB9CiAKLS8qIFNlYXJjaCB0aGUgcGF0aCAoZGVmYXVsdCBzeXMucGF0aCkgZm9yIGEgbW9kdWxlLiAgUmV0dXJuIHRoZQotICAgY29ycmVzcG9uZGluZyBmaWxlZGVzY3Igc3RydWN0LCBhbmQgKHZpYSByZXR1cm4gYXJndW1lbnRzKSB0aGUKLSAgIHBhdGhuYW1lIGFuZCBhbiBvcGVuIGZpbGUuICBSZXR1cm4gTlVMTCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZC4gKi8KIAotI2lmZGVmIE1TX0NPUkVETEwKLWV4dGVybiBGSUxFICpQeVdpbl9GaW5kUmVnaXN0ZXJlZE1vZHVsZShjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlZGVzY3IgKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBQeV9zc2l6ZV90KTsKLSNlbmRpZgotCi1zdGF0aWMgaW50IGNhc2Vfb2soY2hhciAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90LCBjaGFyICopOwotc3RhdGljIGludCBmaW5kX2luaXRfbW9kdWxlKGNoYXIgKik7IC8qIEZvcndhcmQgKi8KLXN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGltcG9ydGhvb2tkZXNjciA9IHsiIiwgIiIsIElNUF9IT09LfTsKLQotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgKgotZmluZF9tb2R1bGUoY2hhciAqZnVsbG5hbWUsIGNoYXIgKnN1Ym5hbWUsIFB5T2JqZWN0ICpwYXRoLCBjaGFyICpidWYsCi0gICAgICAgICAgICBzaXplX3QgYnVmbGVuLCBGSUxFICoqcF9mcCwgUHlPYmplY3QgKipwX2xvYWRlcikKLXsKLSAgICBQeV9zc2l6ZV90IGksIG5wYXRoOwotICAgIHNpemVfdCBsZW4sIG5hbWVsZW47Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwID0gTlVMTDsKLSAgICBjaGFyICpmaWxlbW9kZTsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGhfaG9va3MsICpwYXRoX2ltcG9ydGVyX2NhY2hlOwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gICAgc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgZmRfZnJvemVuID0geyIiLCAiIiwgUFlfRlJPWkVOfTsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9idWlsdGluID0geyIiLCAiIiwgQ19CVUlMVElOfTsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9wYWNrYWdlID0geyIiLCAiIiwgUEtHX0RJUkVDVE9SWX07Ci0gICAgY2hhciAqbmFtZTsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIHNpemVfdCBzYXZlZF9sZW47Ci0gICAgc2l6ZV90IHNhdmVkX25hbWVsZW47Ci0gICAgY2hhciAqc2F2ZWRfYnVmID0gTlVMTDsKLSNlbmRpZgotICAgIGlmIChwX2xvYWRlciAhPSBOVUxMKQotICAgICAgICAqcF9sb2FkZXIgPSBOVUxMOwotCi0gICAgaWYgKHN0cmxlbihzdWJuYW1lKSA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIG5hbWUgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG5hbWUgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzdHJjcHkobmFtZSwgc3VibmFtZSk7Ci0KLSAgICAvKiBzeXMubWV0YV9wYXRoIGltcG9ydCBob29rICovCi0gICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm1ldGFfcGF0aDsKLQotICAgICAgICBtZXRhX3BhdGggPSBQeVN5c19HZXRPYmplY3QoIm1ldGFfcGF0aCIpOwotICAgICAgICBpZiAobWV0YV9wYXRoID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhtZXRhX3BhdGgpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMubWV0YV9wYXRoIG11c3QgYmUgYSBsaXN0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGhvb2tzIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKG1ldGFfcGF0aCk7ICAvKiB6YXAgZ3VhcmQgKi8KLSAgICAgICAgbnBhdGggPSBQeUxpc3RfU2l6ZShtZXRhX3BhdGgpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKmxvYWRlcjsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpob29rID0gUHlMaXN0X0dldEl0ZW0obWV0YV9wYXRoLCBpKTsKLSAgICAgICAgICAgIGxvYWRlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaG9vaywgImZpbmRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNPIiwgZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggOiBQeV9Ob25lKTsKLSAgICAgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhX3BhdGgpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsgIC8qIHRydWUgZXJyb3IgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsb2FkZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIC8qIGEgbG9hZGVyIHdhcyBmb3VuZCAqLwotICAgICAgICAgICAgICAgICpwX2xvYWRlciA9IGxvYWRlcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWV0YV9wYXRoKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgICAgIHJldHVybiAmaW1wb3J0aG9va2Rlc2NyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG1ldGFfcGF0aCk7Ci0gICAgfQotCi0gICAgaWYgKGZpbmRfZnJvemVuKGZ1bGxuYW1lKSAhPSBOVUxMKSB7Ci0gICAgICAgIHN0cmNweShidWYsIGZ1bGxuYW1lKTsKLSAgICAgICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICAgICAgcmV0dXJuICZmZF9mcm96ZW47Ci0gICAgfQotCi0gICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICBpZiAoaXNfYnVpbHRpbihuYW1lKSkgewotICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgbmFtZSk7Ci0gICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuICZmZF9idWlsdGluOwotICAgICAgICB9Ci0jaWZkZWYgTVNfQ09SRURMTAotICAgICAgICBmcCA9IFB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKG5hbWUsICZmZHAsIGJ1ZiwgYnVmbGVuKTsKLSAgICAgICAgaWYgKGZwICE9IE5VTEwpIHsKLSAgICAgICAgICAgICpwX2ZwID0gZnA7Ci0gICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIGZkcDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIHBhdGggPSBQeVN5c19HZXRPYmplY3QoInBhdGgiKTsKLSAgICB9Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMIHx8ICFQeUxpc3RfQ2hlY2socGF0aCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzeXMucGF0aCBtdXN0IGJlIGEgbGlzdCBvZiBkaXJlY3RvcnkgbmFtZXMiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLQotICAgIHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKTsKLSAgICBpZiAocGF0aF9ob29rcyA9PSBOVUxMIHx8ICFQeUxpc3RfQ2hlY2socGF0aF9ob29rcykpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzeXMucGF0aF9ob29rcyBtdXN0IGJlIGEgbGlzdCBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGhvb2tzIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0gICAgcGF0aF9pbXBvcnRlcl9jYWNoZSA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9pbXBvcnRlcl9jYWNoZSIpOwotICAgIGlmIChwYXRoX2ltcG9ydGVyX2NhY2hlID09IE5VTEwgfHwKLSAgICAgICAgIVB5RGljdF9DaGVjayhwYXRoX2ltcG9ydGVyX2NhY2hlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIG11c3QgYmUgYSBkaWN0Iik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0KLSAgICBucGF0aCA9IFB5TGlzdF9TaXplKHBhdGgpOwotICAgIG5hbWVsZW4gPSBzdHJsZW4obmFtZSk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5wYXRoOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKnYgPSBQeUxpc3RfR2V0SXRlbShwYXRoLCBpKTsKLSAgICAgICAgUHlPYmplY3QgKm9yaWd2ID0gdjsKLSAgICAgICAgY29uc3QgY2hhciAqYmFzZTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICBpZiAoIXYpCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpOwotICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlfSU5DUkVGKHYpOwotCi0gICAgICAgIGJhc2UgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUodik7Ci0gICAgICAgIGxlbiA9IHNpemU7Ci0gICAgICAgIGlmIChsZW4gKyAyICsgbmFtZWxlbiArIE1BWFNVRkZJWFNJWkUgPj0gYnVmbGVuKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBjb250aW51ZTsgLyogVG9vIGxvbmcgKi8KLSAgICAgICAgfQotICAgICAgICBzdHJjcHkoYnVmLCBiYXNlKTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotCi0gICAgICAgIGlmIChzdHJsZW4oYnVmKSAhPSBsZW4pIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB2IGNvbnRhaW5zICdcMCcgKi8KLSAgICAgICAgfQotCi0gICAgICAgIC8qIHN5cy5wYXRoX2hvb2tzIGltcG9ydCBob29rICovCi0gICAgICAgIGlmIChwX2xvYWRlciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqaW1wb3J0ZXI7Ci0KLSAgICAgICAgICAgIGltcG9ydGVyID0gZ2V0X3BhdGhfaW1wb3J0ZXIocGF0aF9pbXBvcnRlcl9jYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcywgb3JpZ3YpOwotICAgICAgICAgICAgaWYgKGltcG9ydGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBOb3RlOiBpbXBvcnRlciBpcyBhIGJvcnJvd2VkIHJlZmVyZW5jZSAqLwotICAgICAgICAgICAgaWYgKGltcG9ydGVyICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwotICAgICAgICAgICAgICAgIGxvYWRlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiLCBmdWxsbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7ICAvKiBlcnJvciAqLwotICAgICAgICAgICAgICAgIGlmIChsb2FkZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgICAgICAvKiBhIGxvYWRlciB3YXMgZm91bmQgKi8KLSAgICAgICAgICAgICAgICAgICAgKnBfbG9hZGVyID0gbG9hZGVyOwotICAgICAgICAgICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJmltcG9ydGhvb2tkZXNjcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLyogbm8gaG9vayB3YXMgZm91bmQsIHVzZSBidWlsdGluIGltcG9ydCAqLwotCi0gICAgICAgIGlmIChsZW4gPiAwICYmIGJ1ZltsZW4tMV0gIT0gU0VQCi0jaWZkZWYgQUxUU0VQCi0gICAgICAgICAgICAmJiBidWZbbGVuLTFdICE9IEFMVFNFUAotI2VuZGlmCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBidWZbbGVuKytdID0gU0VQOwotICAgICAgICBzdHJjcHkoYnVmK2xlbiwgbmFtZSk7Ci0gICAgICAgIGxlbiArPSBuYW1lbGVuOwotCi0gICAgICAgIC8qIENoZWNrIGZvciBwYWNrYWdlIGltcG9ydCAoYnVmIGhvbGRzIGEgZGlyZWN0b3J5IG5hbWUsCi0gICAgICAgICAgIGFuZCB0aGVyZSdzIGFuIF9faW5pdF9fIG1vZHVsZSBpbiB0aGF0IGRpcmVjdG9yeSAqLwotI2lmZGVmIEhBVkVfU1RBVAotICAgICAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwICYmICAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgICAgICBTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkgJiYgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBjYXNlX29rKGJ1ZiwgbGVuLCBuYW1lbGVuLCBuYW1lKSkgeyAvKiBjYXNlIG1hdGNoZXMgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2luaXRfbW9kdWxlKGJ1ZikpIHsgLyogYW5kIGhhcyBfX2luaXRfXy5weSAqLwotICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZmZF9wYWNrYWdlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYnVmKTsKLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICAgICAgZXJyID0gUHlFcnJfV2FybkZvcm1hdChQeUV4Y19JbXBvcnRXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAiTm90IGltcG9ydGluZyBkaXJlY3RvcnkgJyVVJzogbWlzc2luZyBfX2luaXRfXy5weSIsCi0gICAgICAgICAgICAgICAgICAgIHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgICAgIC8qIHRha2UgYSBzbmFwc2hvdCBvZiB0aGUgbW9kdWxlIHNwZWMgZm9yIHJlc3RvcmF0aW9uCi0gICAgICAgICAqIGFmdGVyIHRoZSA4IGNoYXJhY3RlciBETEwgaGFja2VyeQotICAgICAgICAgKi8KLSAgICAgICAgc2F2ZWRfYnVmID0gc3RyZHVwKGJ1Zik7Ci0gICAgICAgIHNhdmVkX2xlbiA9IGxlbjsKLSAgICAgICAgc2F2ZWRfbmFtZWxlbiA9IG5hbWVsZW47Ci0jZW5kaWYgLyogUFlPU19PUzIgKi8KLSAgICAgICAgZm9yIChmZHAgPSBfUHlJbXBvcnRfRmlsZXRhYjsgZmRwLT5zdWZmaXggIT0gTlVMTDsgZmRwKyspIHsKLSAgICAgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykKLSAgICAgICAgICAgIC8qIE9TLzIgbGltaXRzIERMTHMgdG8gOCBjaGFyYWN0ZXIgbmFtZXMgKHcvbwotICAgICAgICAgICAgICAgZXh0ZW5zaW9uKQotICAgICAgICAgICAgICogc28gaWYgdGhlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhhdCBhbmQgaXRzIGEKLSAgICAgICAgICAgICAqIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGUgd2UncmUgZ29pbmcgdG8gdHJ5LAotICAgICAgICAgICAgICogdHJ1bmNhdGUgdGhlIG5hbWUgYmVmb3JlIHRyeWluZwotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoc3RybGVuKHN1Ym5hbWUpID4gOCkgewotICAgICAgICAgICAgICAgIC8qIGlzIHRoaXMgYW4gYXR0ZW1wdCB0byBsb2FkIGEgQyBleHRlbnNpb24/ICovCi0gICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZpbGVkZXNjciAqc2NhbjsKLSAgICAgICAgICAgICAgICBzY2FuID0gX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiOwotICAgICAgICAgICAgICAgIHdoaWxlIChzY2FuLT5zdWZmaXggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcChzY2FuLT5zdWZmaXgsIGZkcC0+c3VmZml4KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzY2FuKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzY2FuLT5zdWZmaXggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAvKiB5ZXMsIHNvIHRydW5jYXRlIHRoZSBuYW1lICovCi0gICAgICAgICAgICAgICAgICAgIG5hbWVsZW4gPSA4OwotICAgICAgICAgICAgICAgICAgICBsZW4gLT0gc3RybGVuKHN1Ym5hbWUpIC0gbmFtZWxlbjsKLSAgICAgICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotICAgICAgICAgICAgc3RyY3B5KGJ1ZitsZW4sIGZkcC0+c3VmZml4KTsKLSAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpCi0gICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgdHJ5aW5nICVzXG4iLCBidWYpOwotCi0gICAgICAgICAgICBmaWxlbW9kZSA9IGZkcC0+bW9kZTsKLSAgICAgICAgICAgIGlmIChmaWxlbW9kZVswXSA9PSAnVScpCi0gICAgICAgICAgICAgICAgZmlsZW1vZGUgPSAiciIgUFlfU1RESU9URVhUTU9ERTsKLQotICAgICAgICAgICAgaWYgKHN0YXQoYnVmLCAmc3RhdGJ1ZikgPT0gMCAmJiBTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpCi0gICAgICAgICAgICAgICAgLyogaXQncyBhIGRpcmVjdG9yeSAqLwotICAgICAgICAgICAgICAgIGZwID0gTlVMTDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcCA9IGZvcGVuKGJ1ZiwgZmlsZW1vZGUpOwotICAgICAgICAgICAgaWYgKGZwICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FzZV9vayhidWYsIGxlbiwgbmFtZWxlbiwgbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAvKiBjb250aW51ZSBzZWFyY2ggKi8KLSAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgICAgICAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAgICAgLyogcmVzdG9yZSB0aGUgc2F2ZWQgc25hcHNob3QgKi8KLSAgICAgICAgICAgIHN0cmNweShidWYsIHNhdmVkX2J1Zik7Ci0gICAgICAgICAgICBsZW4gPSBzYXZlZF9sZW47Ci0gICAgICAgICAgICBuYW1lbGVuID0gc2F2ZWRfbmFtZWxlbjsKLSNlbmRpZgotICAgICAgICB9Ci0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogZG9uJ3QgbmVlZC93YW50IHRoZSBtb2R1bGUgbmFtZSBzbmFwc2hvdCBhbnltb3JlICovCi0gICAgICAgIGlmIChzYXZlZF9idWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyZWUoc2F2ZWRfYnVmKTsKLSAgICAgICAgICAgIHNhdmVkX2J1ZiA9IE5VTEw7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTm8gbW9kdWxlIG5hbWVkICUuMjAwcyIsIG5hbWUpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQotICAgICpwX2ZwID0gZnA7Ci0gICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICByZXR1cm4gZmRwOwotCi1lcnJvcl9leGl0OgotICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qIGNhc2Vfb2soY2hhciogYnVmLCBQeV9zc2l6ZV90IGxlbiwgUHlfc3NpemVfdCBuYW1lbGVuLCBjaGFyKiBuYW1lKQotICogVGhlIGFyZ3VtZW50cyBoZXJlIGFyZSB0cmlja3ksIGJlc3Qgc2hvd24gYnkgZXhhbXBsZToKLSAqICAgIC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svc29tZV9sb25nX21vZHVsZV9uYW1lLnB5XDAKLSAqICAgIF4gICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICBeICAgIF4KLSAqICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0gYnVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLSAqICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0gbmFtZSAtLS0tLS0tfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0tLS0gbmFtZWxlbiAtLS0tLXwKLSAqIGJ1ZiBpcyB0aGUgZnVsbCBwYXRoLCBidXQgbGVuIG9ubHkgY291bnRzIHVwIHRvICgmIGV4Y2x1c2l2ZSBvZikgdGhlCi0gKiBleHRlbnNpb24uICBuYW1lIGlzIHRoZSBtb2R1bGUgbmFtZSwgYWxzbyBleGNsdXNpdmUgb2YgZXh0ZW5zaW9uLgotICoKLSAqIFdlJ3ZlIGFscmVhZHkgZG9uZSBhIHN1Y2Nlc3NmdWwgc3RhdCgpIG9yIGZvcGVuKCkgb24gYnVmLCBzbyBrbm93IHRoYXQKLSAqIHRoZXJlJ3Mgc29tZSBtYXRjaCwgcG9zc2libHkgY2FzZS1pbnNlbnNpdGl2ZS4KLSAqCi0gKiBjYXNlX29rKCkgaXMgdG8gcmV0dXJuIDEgaWYgdGhlcmUncyBhIGNhc2Utc2Vuc2l0aXZlIG1hdGNoIGZvcgotICogbmFtZSwgZWxzZSAwLiAgY2FzZV9vaygpIGlzIGFsc28gdG8gcmV0dXJuIDEgaWYgZW52YXIgUFlUSE9OQ0FTRU9LCi0gKiBleGlzdHMuCi0gKgotICogY2FzZV9vaygpIGlzIHVzZWQgdG8gaW1wbGVtZW50IGNhc2Utc2Vuc2l0aXZlIGltcG9ydCBzZW1hbnRpY3MgZXZlbgotICogb24gcGxhdGZvcm1zIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4gIEl0J3MgdHJpdmlhbCB0byBpbXBsZW1lbnQKLSAqIGZvciBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4gIEl0J3MgcHJldHR5IG11Y2ggYSBjcm9zcy1wbGF0Zm9ybQotICogbmlnaHRtYXJlIGZvciBzeXN0ZW1zIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4KLSAqLwotCi0vKiBGaXJzdCB3ZSBtYXkgbmVlZCBhIHBpbGUgb2YgcGxhdGZvcm0tc3BlY2lmaWMgaGVhZGVyIGZpbGVzOyB0aGUgc2VxdWVuY2UKLSAqIG9mICNpZidzIGhlcmUgc2hvdWxkIG1hdGNoIHRoZSBzZXF1ZW5jZSBpbiB0aGUgYm9keSBvZiBjYXNlX29rKCkuCi0gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0jaW5jbHVkZSA8d2luZG93cy5oPgotCi0jZWxpZiBkZWZpbmVkKERKR1BQKQotI2luY2x1ZGUgPGRpci5oPgotCi0jZWxpZiAoZGVmaW5lZChfX01BQ0hfXykgJiYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykpICYmIGRlZmluZWQoSEFWRV9ESVJFTlRfSCkKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxkaXJlbnQuaD4KLQotI2VsaWYgZGVmaW5lZChQWU9TX09TMikKLSNkZWZpbmUgSU5DTF9ET1MKLSNkZWZpbmUgSU5DTF9ET1NFUlJPUlMKLSNkZWZpbmUgSU5DTF9OT1BNQVBJCi0jaW5jbHVkZSA8b3MyLmg+Ci0jZW5kaWYKLQotc3RhdGljIGludAotY2FzZV9vayhjaGFyICpidWYsIFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG5hbWVsZW4sIGNoYXIgKm5hbWUpCi17Ci0vKiBQaWNrIGEgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb247IHRoZSBzZXF1ZW5jZSBvZiAjaWYncyBoZXJlIHNob3VsZAotICogbWF0Y2ggdGhlIHNlcXVlbmNlIGp1c3QgYWJvdmUuCi0gKi8KLQotLyogTVNfV0lORE9XUyAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBXSU4zMl9GSU5EX0RBVEEgZGF0YTsKLSAgICBIQU5ETEUgaDsKLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgaCA9IEZpbmRGaXJzdEZpbGUoYnVmLCAmZGF0YSk7Ci0gICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAiQ2FuJ3QgZmluZCBmaWxlIGZvciBtb2R1bGUgJS4xMDBzXG4oZmlsZW5hbWUgJS4zMDBzKSIsCi0gICAgICAgICAgbmFtZSwgYnVmKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIEZpbmRDbG9zZShoKTsKLSAgICByZXR1cm4gc3RybmNtcChkYXRhLmNGaWxlTmFtZSwgbmFtZSwgbmFtZWxlbikgPT0gMDsKLQotLyogREpHUFAgKi8KLSNlbGlmIGRlZmluZWQoREpHUFApCi0gICAgc3RydWN0IGZmYmxrIGZmYmxrOwotICAgIGludCBkb25lOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBkb25lID0gZmluZGZpcnN0KGJ1ZiwgJmZmYmxrLCBGQV9BUkNIfEZBX1JET05MWXxGQV9ISURERU58RkFfRElSRUMpOwotICAgIGlmIChkb25lKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19OYW1lRXJyb3IsCi0gICAgICAgICAgIkNhbid0IGZpbmQgZmlsZSBmb3IgbW9kdWxlICUuMTAwc1xuKGZpbGVuYW1lICUuMzAwcykiLAotICAgICAgICAgIG5hbWUsIGJ1Zik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gc3RybmNtcChmZmJsay5mZl9uYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBuZXctZmFuZ2xlZCBtYWNpbnRvc2ggKG1hY29zeCkgb3IgQ3lnd2luICovCi0jZWxpZiAoZGVmaW5lZChfX01BQ0hfXykgJiYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykpICYmIGRlZmluZWQoSEFWRV9ESVJFTlRfSCkKLSAgICBESVIgKmRpcnA7Ci0gICAgc3RydWN0IGRpcmVudCAqZHA7Ci0gICAgY2hhciBkaXJuYW1lW01BWFBBVEhMRU4gKyAxXTsKLSAgICBjb25zdCBpbnQgZGlybGVuID0gbGVuIC0gbmFtZWxlbiAtIDE7IC8qIGRvbid0IHdhbnQgdHJhaWxpbmcgU0VQICovCi0KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05DQVNFT0siKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIC8qIENvcHkgdGhlIGRpciBjb21wb25lbnQgaW50byBkaXJuYW1lOyBzdWJzdGl0dXRlICIuIiBpZiBlbXB0eSAqLwotICAgIGlmIChkaXJsZW4gPD0gMCkgewotICAgICAgICBkaXJuYW1lWzBdID0gJy4nOwotICAgICAgICBkaXJuYW1lWzFdID0gJ1wwJzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydChkaXJsZW4gPD0gTUFYUEFUSExFTik7Ci0gICAgICAgIG1lbWNweShkaXJuYW1lLCBidWYsIGRpcmxlbik7Ci0gICAgICAgIGRpcm5hbWVbZGlybGVuXSA9ICdcMCc7Ci0gICAgfQotICAgIC8qIE9wZW4gdGhlIGRpcmVjdG9yeSBhbmQgc2VhcmNoIHRoZSBlbnRyaWVzIGZvciBhbiBleGFjdCBtYXRjaC4gKi8KLSAgICBkaXJwID0gb3BlbmRpcihkaXJuYW1lKTsKLSAgICBpZiAoZGlycCkgewotICAgICAgICBjaGFyICpuYW1lV2l0aEV4dCA9IGJ1ZiArIGxlbiAtIG5hbWVsZW47Ci0gICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcnApKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgdGhpc2xlbiA9Ci0jaWZkZWYgX0RJUkVOVF9IQVZFX0RfTkFNRUxFTgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHAtPmRfbmFtbGVuOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihkcC0+ZF9uYW1lKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKHRoaXNsZW4gPj0gbmFtZWxlbiAmJgotICAgICAgICAgICAgICAgIHN0cmNtcChkcC0+ZF9uYW1lLCBuYW1lV2l0aEV4dCkgPT0gMCkgewotICAgICAgICAgICAgICAgICh2b2lkKWNsb3NlZGlyKGRpcnApOwotICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBGb3VuZCAqLwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICh2b2lkKWNsb3NlZGlyKGRpcnApOwotICAgIH0KLSAgICByZXR1cm4gMCA7IC8qIE5vdCBmb3VuZCAqLwotCi0vKiBPUy8yICovCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIEhESVIgaGRpciA9IDE7Ci0gICAgVUxPTkcgc3JjaGNudCA9IDE7Ci0gICAgRklMRUZJTkRCVUYzIGZmYnVmOwotICAgIEFQSVJFVCByYzsKLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgcmMgPSBEb3NGaW5kRmlyc3QoYnVmLAotICAgICAgICAgICAgICAgICAgICAgICZoZGlyLAotICAgICAgICAgICAgICAgICAgICAgIEZJTEVfUkVBRE9OTFkgfCBGSUxFX0hJRERFTiB8IEZJTEVfU1lTVEVNIHwgRklMRV9ESVJFQ1RPUlksCi0gICAgICAgICAgICAgICAgICAgICAgJmZmYnVmLCBzaXplb2YoZmZidWYpLAotICAgICAgICAgICAgICAgICAgICAgICZzcmNoY250LAotICAgICAgICAgICAgICAgICAgICAgIEZJTF9TVEFOREFSRCk7Ci0gICAgaWYgKHJjICE9IE5PX0VSUk9SKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RybmNtcChmZmJ1Zi5hY2hOYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBhc3N1bWluZyBpdCdzIGEgY2FzZS1zZW5zaXRpdmUgZmlsZXN5c3RlbSwgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvISAqLwotI2Vsc2UKLSAgICByZXR1cm4gMTsKLQotI2VuZGlmCi19Ci0KLSNpZmRlZiBIQVZFX1NUQVQKLQotLyogSGVscGVyIHRvIGxvb2sgZm9yIF9faW5pdF9fLnB5IG9yIF9faW5pdF9fLnB5W2NvXSBpbiBwb3RlbnRpYWwgcGFja2FnZSAqLwotc3RhdGljIGludAotZmluZF9pbml0X21vZHVsZShjaGFyICpidWYpCi17Ci0gICAgY29uc3Qgc2l6ZV90IHNhdmVfbGVuID0gc3RybGVuKGJ1Zik7Ci0gICAgc2l6ZV90IGkgPSBzYXZlX2xlbjsKLSAgICBjaGFyICpwbmFtZTsgIC8qIHBvaW50ZXIgdG8gc3RhcnQgb2YgX19pbml0X18gKi8KLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCi0vKiAgICAgIEZvciBjYWxsaW5nIGNhc2Vfb2soYnVmLCBsZW4sIG5hbWVsZW4sIG5hbWUpOgotICogICAgICAvYS9iL2MvZC9lL2YvZy9oL2kvai9rL3NvbWVfbG9uZ19tb2R1bGVfbmFtZS5weVwwCi0gKiAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICBeICAgIF4KLSAqICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLSBsZW4gLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0gbmFtZSAtLS0tLS0tfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLSBuYW1lbGVuIC0tLS0tfAotICovCi0gICAgaWYgKHNhdmVfbGVuICsgMTMgPj0gTUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmW2krK10gPSBTRVA7Ci0gICAgcG5hbWUgPSBidWYgKyBpOwotICAgIHN0cmNweShwbmFtZSwgIl9faW5pdF9fLnB5Iik7Ci0gICAgaWYgKHN0YXQoYnVmLCAmc3RhdGJ1ZikgPT0gMCkgewotICAgICAgICBpZiAoY2FzZV9vayhidWYsCi0gICAgICAgICAgICAgICAgICAgIHNhdmVfbGVuICsgOSwgICAgICAgICAgICAgICAvKiBsZW4oIi9fX2luaXRfXyIpICovCi0gICAgICAgICAgICAgICAgOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsZW4oIl9faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICBwbmFtZSkpIHsKLSAgICAgICAgICAgIGJ1ZltzYXZlX2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaSArPSBzdHJsZW4ocG5hbWUpOwotICAgIHN0cmNweShidWYraSwgUHlfT3B0aW1pemVGbGFnID8gIm8iIDogImMiKTsKLSAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwKSB7Ci0gICAgICAgIGlmIChjYXNlX29rKGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgc2F2ZV9sZW4gKyA5LCAgICAgICAgICAgICAgIC8qIGxlbigiL19faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbigiX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIHBuYW1lKSkgewotICAgICAgICAgICAgYnVmW3NhdmVfbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBidWZbc2F2ZV9sZW5dID0gJ1wwJzsKLSAgICByZXR1cm4gMDsKLX0KLQotI2VuZGlmIC8qIEhBVkVfU1RBVCAqLwotCi0KLXN0YXRpYyBpbnQgaW5pdF9idWlsdGluKGNoYXIgKik7IC8qIEZvcndhcmQgKi8KLQotc3RhdGljIFB5T2JqZWN0KgotbG9hZF9idWlsdGluKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBpbnQgdHlwZSkKLXsKLSAgICBQeU9iamVjdCAqbSwgKm1vZHVsZXM7Ci0gICAgaW50IGVycjsKLQotICAgIGlmIChwYXRobmFtZSAhPSBOVUxMICYmIHBhdGhuYW1lWzBdICE9ICdcMCcpCi0gICAgICAgIG5hbWUgPSBwYXRobmFtZTsKLQotICAgIGlmICh0eXBlID09IENfQlVJTFRJTikKLSAgICAgICAgZXJyID0gaW5pdF9idWlsdGluKG5hbWUpOwotICAgIGVsc2UKLSAgICAgICAgZXJyID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKG5hbWUpOwotICAgIGlmIChlcnIgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZXJyID09IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICJQdXJwb3J0ZWQgJXMgbW9kdWxlICUuMjAwcyBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQ19CVUlMVElOID8KLSAgICAgICAgICAgICAgICAiYnVpbHRpbiIgOiAiZnJvemVuIiwKLSAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgIiVzIG1vZHVsZSAlLjIwMHMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkIiwKLSAgICAgICAgICAgICAgICB0eXBlID09IENfQlVJTFRJTiA/Ci0gICAgICAgICAgICAgICAgImJ1aWx0aW4iIDogImZyb3plbiIsCi0gICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYobSk7Ci0gICAgcmV0dXJuIG07Ci19Ci0KLS8qIExvYWQgYW4gZXh0ZXJuYWwgbW9kdWxlIHVzaW5nIHRoZSBkZWZhdWx0IHNlYXJjaCBwYXRoIGFuZCByZXR1cm4KLSAgIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX21vZHVsZShjaGFyICpuYW1lLCBGSUxFICpmcCwgY2hhciAqcGF0aG5hbWUsIGludCB0eXBlLCBQeU9iamVjdCAqbG9hZGVyKQotewotICAgIFB5T2JqZWN0ICptOwotCi0gICAgLyogRmlyc3QgY2hlY2sgdGhhdCB0aGVyZSdzIGFuIG9wZW4gZmlsZSAoaWYgd2UgbmVlZCBvbmUpICAqLwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUFlfU09VUkNFOgotICAgIGNhc2UgUFlfQ09NUElMRUQ6Ci0gICAgICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICJmaWxlIG9iamVjdCByZXF1aXJlZCBmb3IgaW1wb3J0ICh0eXBlIGNvZGUgJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0KLSAgICBjYXNlIFBZX1NPVVJDRToKLSAgICAgICAgbSA9IGxvYWRfc291cmNlX21vZHVsZShuYW1lLCBwYXRobmFtZSwgZnApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUFlfQ09NUElMRUQ6Ci0gICAgICAgIG0gPSBsb2FkX2NvbXBpbGVkX21vZHVsZShuYW1lLCBwYXRobmFtZSwgZnApOwotICAgICAgICBicmVhazsKLQotI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCi0gICAgY2FzZSBDX0VYVEVOU0lPTjoKLSAgICAgICAgbSA9IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShuYW1lLCBwYXRobmFtZSwgZnApOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgY2FzZSBQS0dfRElSRUNUT1JZOgotICAgICAgICBtID0gbG9hZF9wYWNrYWdlKG5hbWUsIHBhdGhuYW1lKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENfQlVJTFRJTjoKLSAgICBjYXNlIFBZX0ZST1pFTjoKLSAgICAgICAgbSA9IGxvYWRfYnVpbHRpbihuYW1lLCBwYXRobmFtZSwgdHlwZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBJTVBfSE9PSzogewotICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGhvb2sgd2l0aG91dCBsb2FkZXIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIG0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxvYWRlciwgImxvYWRfbW9kdWxlIiwgInMiLCBuYW1lKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgaG93IHRvIGltcG9ydCAlLjIwMHMgKHR5cGUgY29kZSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHR5cGUpOwotICAgICAgICBtID0gTlVMTDsKLQotICAgIH0KLQotICAgIHJldHVybiBtOwotfQotCitzdGF0aWMgaW50IGluaXRfYnVpbHRpbihQeU9iamVjdCAqKTsgLyogRm9yd2FyZCAqLwogCiAvKiBJbml0aWFsaXplIGEgYnVpbHQtaW4gbW9kdWxlLgogICAgUmV0dXJuIDEgZm9yIHN1Y2Nlc3MsIDAgaWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQsIGFuZCAtMSB3aXRoCiAgICBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuICovCiAKIHN0YXRpYyBpbnQKLWluaXRfYnVpbHRpbihjaGFyICpuYW1lKQoraW5pdF9idWlsdGluKFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfaW5pdHRhYiAqcDsKIAotICAgIGlmIChfUHlJbXBvcnRfRmluZEJ1aWx0aW4obmFtZSkgIT0gTlVMTCkKKyAgICBpZiAoX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgbmFtZSkgIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Jbml0dGFiOyBwLT5uYW1lICE9IE5VTEw7IHArKykgewogICAgICAgICBQeU9iamVjdCAqbW9kOwogICAgICAgICBQeU1vZHVsZURlZiAqZGVmOwotICAgICAgICBpZiAoc3RyY21wKG5hbWUsIHAtPm5hbWUpID09IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApIHsKICAgICAgICAgICAgIGlmIChwLT5pbml0ZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHJlLWluaXQgaW50ZXJuYWwgbW9kdWxlICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJVIiLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGJ1aWx0aW5cbiIsIG5hbWUpOwogICAgICAgICAgICAgbW9kID0gKCpwLT5pbml0ZnVuYykoKTsKICAgICAgICAgICAgIGlmIChtb2QgPT0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAvKiBSZW1lbWJlciBwb2ludGVyIHRvIG1vZHVsZSBpbml0IGZ1bmN0aW9uLiAqLwogICAgICAgICAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwLT5pbml0ZnVuYzsKLSAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfRml4dXBCdWlsdGluKG1vZCwgbmFtZSkgPCAwKQorICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAvKiBGaXh1cEV4dGVuc2lvbiBoYXMgcHV0IHRoZSBtb2R1bGUgaW50byBzeXMubW9kdWxlcywKICAgICAgICAgICAgICAgIHNvIHdlIGNhbiByZWxlYXNlIG91ciBvd24gcmVmZXJlbmNlLiAqLwpAQCAtMjI0NCwzNyArOTcwLDM3IEBACiAvKiBGcm96ZW4gbW9kdWxlcyAqLwogCiBzdGF0aWMgc3RydWN0IF9mcm96ZW4gKgotZmluZF9mcm96ZW4oY2hhciAqbmFtZSkKK2ZpbmRfZnJvemVuKFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfZnJvemVuICpwOwogCi0gICAgaWYgKCFuYW1lKQorICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChwID0gUHlJbXBvcnRfRnJvemVuTW9kdWxlczsgOyBwKyspIHsKICAgICAgICAgaWYgKHAtPm5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoc3RyY21wKHAtPm5hbWUsIG5hbWUpID09IDApCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCBwLT5uYW1lKSA9PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X2Zyb3plbl9vYmplY3QoY2hhciAqbmFtZSkKK2dldF9mcm96ZW5fb2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfZnJvemVuICpwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgaW50IHNpemU7CiAKICAgICBpZiAocCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAocC0+Y29kZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAiRXhjbHVkZWQgZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjI4NSwxNCArMTAxMSwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotaXNfZnJvemVuX3BhY2thZ2UoY2hhciAqbmFtZSkKK2lzX2Zyb3plbl9wYWNrYWdlKFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfZnJvemVuICpwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgaW50IHNpemU7CiAKICAgICBpZiAocCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIzMTIsMTkgKzEwMzgsMjAgQEAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIGZyb20gZnJvemVubWFpbi5jICovCiAKIGludAotUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKGNoYXIgKm5hbWUpCitQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKLSAgICBQeU9iamVjdCAqY287Ci0gICAgUHlPYmplY3QgKm07CisgICAgc3RydWN0IF9mcm96ZW4gKnA7CisgICAgUHlPYmplY3QgKmNvLCAqbSwgKnBhdGg7CiAgICAgaW50IGlzcGFja2FnZTsKICAgICBpbnQgc2l6ZTsKIAorICAgIHAgPSBmaW5kX2Zyb3plbihuYW1lKTsKKwogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChwLT5jb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMjMzMiw0MSArMTA1OSwzOSBAQAogICAgIGlzcGFja2FnZSA9IChzaXplIDwgMCk7CiAgICAgaWYgKGlzcGFja2FnZSkKICAgICAgICAgc2l6ZSA9IC1zaXplOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGZyb3plbiVzXG4iLAotICAgICAgICAgICAgbmFtZSwgaXNwYWNrYWdlID8gIiBwYWNrYWdlIiA6ICIiKTsKICAgICBjbyA9IFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZygoY2hhciAqKXAtPmNvZGUsIHNpemUpOwogICAgIGlmIChjbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCFQeUNvZGVfQ2hlY2soY28pKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiZnJvemVuIG9iamVjdCAlLjIwMHMgaXMgbm90IGEgY29kZSBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgImZyb3plbiBvYmplY3QgJVIgaXMgbm90IGEgY29kZSBvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICB9CiAgICAgaWYgKGlzcGFja2FnZSkgewogICAgICAgICAvKiBTZXQgX19wYXRoX18gdG8gdGhlIHBhY2thZ2UgbmFtZSAqLwotICAgICAgICBQeU9iamVjdCAqZCwgKnMsICpsOworICAgICAgICBQeU9iamVjdCAqZCwgKmw7CiAgICAgICAgIGludCBlcnI7Ci0gICAgICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgICAgICBzID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcobmFtZSk7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIGwgPSBQeUxpc3RfTmV3KDEpOwogICAgICAgICBpZiAobCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGwsIDAsIHMpOworICAgICAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsLCAwLCBuYW1lKTsKICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fcGF0aF9fIiwgbCk7CiAgICAgICAgIFB5X0RFQ1JFRihsKTsKICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeChuYW1lLCBjbywgIjxmcm96ZW4+Iik7CisgICAgcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZnJvemVuPiIpOworICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX3JldHVybjsKKyAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QobmFtZSwgY28sIHBhdGgsIE5VTEwpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgUHlfREVDUkVGKGNvKTsKQEAgLTIzNzcsNiArMTEwMiwxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAoraW50CitQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBpbnQgcmV0OworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gcmV0OworfQorCiAKIC8qIEltcG9ydCBhIG1vZHVsZSwgZWl0aGVyIGJ1aWx0LWluLCBmcm96ZW4sIG9yIGV4dGVybmFsLCBhbmQgcmV0dXJuCiAgICBpdHMgbW9kdWxlIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVCAqLwpAQCAtMjQwNyw1ODUgKzExNDUsNDExIEBACiBQeU9iamVjdCAqCiBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeU9iamVjdCAqbW9kdWxlczsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGxvbmcgbWU7Ci0jZW5kaWYKLQotICAgIC8qIFRyeSB0byBnZXQgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzW25hbWVdICovCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBpZiAobW9kdWxlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpOwotICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogY2hlY2sgdGhlIGltcG9ydCBsb2NrCi0gICAgICogbWUgbWlnaHQgYmUgLTEgYnV0IEkgaWdub3JlIHRoZSBlcnJvciBoZXJlLCB0aGUgbG9jayBmdW5jdGlvbgotICAgICAqIHRha2VzIGNhcmUgb2YgdGhlIHByb2JsZW0gKi8KLSAgICBtZSA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKLSAgICBpZiAoaW1wb3J0X2xvY2tfdGhyZWFkID09IC0xIHx8IGltcG9ydF9sb2NrX3RocmVhZCA9PSBtZSkgewotICAgICAgICAvKiBubyB0aHJlYWQgb3IgbWUgaXMgaG9sZGluZyB0aGUgbG9jayAqLwotICAgICAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKG5hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBpbXBvcnQgJS4yMDBzIGJlY2F1c2UgdGhlIGltcG9ydCBsb2NrIgotICAgICAgICAgICAgICAgICAgICAgImlzIGhlbGQgYnkgYW5vdGhlciB0aHJlYWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0jZWxzZQogICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUobmFtZSk7Ci0jZW5kaWYKIH0KIAotLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIGhlbHBlciByb3V0aW5lcyAqLwotc3RhdGljIFB5T2JqZWN0ICpnZXRfcGFyZW50KFB5T2JqZWN0ICpnbG9iYWxzLCBjaGFyICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcF9idWZsZW4sIGludCBsZXZlbCk7Ci1zdGF0aWMgUHlPYmplY3QgKmxvYWRfbmV4dChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYWx0bW9kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnBfbmFtZSwgY2hhciAqYnVmLCBQeV9zc2l6ZV90ICpwX2J1Zmxlbik7Ci1zdGF0aWMgaW50IG1hcmtfbWlzcyhjaGFyICpuYW1lKTsKLXN0YXRpYyBpbnQgZW5zdXJlX2Zyb21saXN0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICpmcm9tbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBidWZsZW4sIGludCByZWN1cnNpdmUpOwotc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBjaGFyICpuYW1lLCBjaGFyICpmdWxsbmFtZSk7CiAKLS8qIFRoZSBNYWdudW0gT3B1cyBvZiBkb3R0ZWQtbmFtZSBpbXBvcnQgOi0pICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBvcnRfbW9kdWxlX2xldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKKy8qIFJlbW92ZSBpbXBvcnRsaWIgZnJhbWVzIGZyb20gdGhlIHRyYWNlYmFjaywKKyAqIGV4Y2VwdCBpbiBWZXJib3NlIG1vZGUuICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXModm9pZCkKIHsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBidWZsZW4gPSAwOwotICAgIFB5T2JqZWN0ICpwYXJlbnQsICpoZWFkLCAqbmV4dCwgKnRhaWw7CisgICAgY29uc3QgY2hhciAqaW1wb3J0bGliX2ZpbGVuYW1lID0gIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IjsKKyAgICBjb25zdCBjaGFyICpyZW1vdmVfZnJhbWVzID0gIl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQiOworICAgIGludCBhbHdheXNfdHJpbSA9IDA7CisgICAgaW50IGluX2ltcG9ydGxpYiA9IDA7CisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwgKnZhbHVlLCAqYmFzZV90YiwgKnRiOworICAgIFB5T2JqZWN0ICoqcHJldl9saW5rLCAqKm91dGVyX2xpbmsgPSBOVUxMOwogCi0gICAgaWYgKHN0cmNocihuYW1lLCAnLycpICE9IE5VTEwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHx8IHN0cmNocihuYW1lLCAnXFwnKSAhPSBOVUxMCisgICAgLyogU3lub3BzaXM6IGlmIGl0J3MgYW4gSW1wb3J0RXJyb3IsIHdlIHRyaW0gYWxsIGltcG9ydGxpYiBjaHVua3MKKyAgICAgICBmcm9tIHRoZSB0cmFjZWJhY2suIFdlIGFsd2F5cyB0cmltIGNodW5rcworICAgICAgIHdoaWNoIGVuZCB3aXRoIGEgY2FsbCB0byAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCIuICovCisKKyAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdmFsdWUsICZiYXNlX3RiKTsKKyAgICBpZiAoIWV4Y2VwdGlvbiB8fCBQeV9WZXJib3NlRmxhZykKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChQeVR5cGVfSXNTdWJ0eXBlKChQeVR5cGVPYmplY3QgKikgZXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKikgUHlFeGNfSW1wb3J0RXJyb3IpKQorICAgICAgICBhbHdheXNfdHJpbSA9IDE7CisKKyAgICBwcmV2X2xpbmsgPSAmYmFzZV90YjsKKyAgICB0YiA9IGJhc2VfdGI7CisgICAgd2hpbGUgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlUcmFjZWJhY2tPYmplY3QgKnRyYWNlYmFjayA9IChQeVRyYWNlYmFja09iamVjdCAqKXRiOworICAgICAgICBQeU9iamVjdCAqbmV4dCA9IChQeU9iamVjdCAqKSB0cmFjZWJhY2stPnRiX25leHQ7CisgICAgICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lID0gdHJhY2ViYWNrLT50Yl9mcmFtZTsKKyAgICAgICAgUHlDb2RlT2JqZWN0ICpjb2RlID0gZnJhbWUtPmZfY29kZTsKKyAgICAgICAgaW50IG5vd19pbl9pbXBvcnRsaWI7CisKKyAgICAgICAgYXNzZXJ0KFB5VHJhY2VCYWNrX0NoZWNrKHRiKSk7CisgICAgICAgIG5vd19pbl9pbXBvcnRsaWIgPSAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWJfZmlsZW5hbWUpID09IDApOworICAgICAgICBpZiAobm93X2luX2ltcG9ydGxpYiAmJiAhaW5faW1wb3J0bGliKSB7CisgICAgICAgICAgICAvKiBUaGlzIGlzIHRoZSBsaW5rIHRvIHRoaXMgY2h1bmsgb2YgaW1wb3J0bGliIHRyYWNlYmFja3MgKi8KKyAgICAgICAgICAgIG91dGVyX2xpbmsgPSBwcmV2X2xpbms7CisgICAgICAgIH0KKyAgICAgICAgaW5faW1wb3J0bGliID0gbm93X2luX2ltcG9ydGxpYjsKKworICAgICAgICBpZiAoaW5faW1wb3J0bGliICYmCisgICAgICAgICAgICAoYWx3YXlzX3RyaW0gfHwKKyAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhjb2RlLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZV9mcmFtZXMpID09IDApKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gKm91dGVyX2xpbms7CisgICAgICAgICAgICAqb3V0ZXJfbGluayA9IG5leHQ7CisgICAgICAgICAgICBQeV9YSU5DUkVGKG5leHQpOworICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBwcmV2X2xpbmsgPSBvdXRlcl9saW5rOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHJldl9saW5rID0gKFB5T2JqZWN0ICoqKSAmdHJhY2ViYWNrLT50Yl9uZXh0OworICAgICAgICB9CisgICAgICAgIHRiID0gbmV4dDsKKyAgICB9Citkb25lOgorICAgIFB5RXJyX1Jlc3RvcmUoZXhjZXB0aW9uLCB2YWx1ZSwgYmFzZV90Yik7Cit9CisKKworUHlPYmplY3QgKgorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnaXZlbl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmdpdmVuX2Zyb21saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKQoreworICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOworICAgIF9QeV9JREVOVElGSUVSKF9faW5pdGlhbGl6aW5nX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fcGFja2FnZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3BhdGhfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKF9maW5kX2FuZF9sb2FkKTsKKyAgICBfUHlfSURFTlRJRklFUihfaGFuZGxlX2Zyb21saXN0KTsKKyAgICBfUHlfSURFTlRJRklFUihfbG9ja191bmxvY2tfbW9kdWxlKTsKKyAgICBfUHlfc3RhdGljX3N0cmluZyhzaW5nbGVfZG90LCAiLiIpOworICAgIFB5T2JqZWN0ICphYnNfbmFtZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ1aWx0aW5zX2ltcG9ydCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbmFsX21vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhY2thZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBOVUxMOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworCisgICAgLyogTWFrZSBzdXJlIHRvIHVzZSBkZWZhdWx0IHZhbHVlcyBzbyBhcyB0byBub3QgaGF2ZQorICAgICAgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKCkgdHJ1bmNhdGUgdGhlIHBhcmFtZXRlciBsaXN0IGJlY2F1c2Ugb2YgYQorICAgICAgIE5VTEwgYXJndW1lbnQuICovCisgICAgaWYgKGdpdmVuX2dsb2JhbHMgPT0gTlVMTCkgeworICAgICAgICBnbG9iYWxzID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBPbmx5IGhhdmUgdG8gY2FyZSB3aGF0IGdpdmVuX2dsb2JhbHMgaXMgaWYgaXQgd2lsbCBiZSB1c2VkCisgICAgICAgICAgIGZvciBzb21ldGhpbmcuICovCisgICAgICAgIGlmIChsZXZlbCA+IDAgJiYgIVB5RGljdF9DaGVjayhnaXZlbl9nbG9iYWxzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFscyA9IGdpdmVuX2dsb2JhbHM7CisgICAgICAgIFB5X0lOQ1JFRihnbG9iYWxzKTsKKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fZnJvbWxpc3QgPT0gTlVMTCkgeworICAgICAgICBmcm9tbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgICAgIGlmIChmcm9tbGlzdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcm9tbGlzdCA9IGdpdmVuX2Zyb21saXN0OworICAgICAgICBQeV9JTkNSRUYoZnJvbWxpc3QpOworICAgIH0KKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBUaGUgYmVsb3cgY29kZSBpcyBpbXBvcnRsaWIuX19pbXBvcnRfXygpICYgX2djZF9pbXBvcnQoKSwgcG9ydGVkIHRvIEMKKyAgICAgICBmb3IgYWRkZWQgcGVyZm9ybWFuY2UuICovCisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibW9kdWxlIG5hbWUgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChsZXZlbCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZXZlbCBtdXN0IGJlID49IDAiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAobGV2ZWwgPiAwKSB7CisgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7CisgICAgICAgIGlmIChwYWNrYWdlICE9IE5VTEwgJiYgcGFja2FnZSAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworCisgICAgICAgICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYXRoX18pID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGFydGl0aW9uID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOworICAgICAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUlBhcnRpdGlvbihwYWNrYWdlLCBib3Jyb3dlZF9kb3QpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFja2FnZSA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBwYWNrYWdlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKKyAgICAgICAgICAgICAgICAgICAgImltcG9ydCIsIHBhY2thZ2UpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsgIC8qIGxldmVsID09IDAgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgcGFja2FnZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPiAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKKyAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBOVUxMOworICAgICAgICBpbnQgbGV2ZWxfdXAgPSAxOworCisgICAgICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7CisgICAgICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7CisgICAgICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBsYXN0X2RvdCk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA+IDApIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QsICpzZXEgPSBOVUxMOworCisgICAgICAgICAgICBib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgICAgICBzZXEgPSBQeVR1cGxlX1BhY2soMiwgYmFzZSwgbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwgfHwgc2VxID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhYnNfbmFtZSA9IFB5VW5pY29kZV9Kb2luKGJvcnJvd2VkX2RvdCwgc2VxKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICAgICAgaWYgKGFic19uYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWJzX25hbWUgPSBiYXNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhYnNfbmFtZSA9IG5hbWU7CisgICAgICAgIFB5X0lOQ1JFRihhYnNfbmFtZSk7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKICNlbmRpZgotICAgICAgICApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkltcG9ydCBieSBmaWxlbmFtZSBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgIC8qIEZyb20gdGhpcyBwb2ludCBmb3J3YXJkLCBnb3RvIGVycm9yX3dpdGhfdW5sb2NrISAqLworICAgIGlmIChQeURpY3RfQ2hlY2soZ2xvYmFscykpIHsKKyAgICAgICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19pbXBvcnRfXyk7CiAgICAgfQotCi0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBwYXJlbnQgPSBnZXRfcGFyZW50KGdsb2JhbHMsIGJ1ZiwgJmJ1ZmxlbiwgbGV2ZWwpOwotICAgIGlmIChwYXJlbnQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotCi0gICAgaGVhZCA9IGxvYWRfbmV4dChwYXJlbnQsIGxldmVsIDwgMCA/IFB5X05vbmUgOiBwYXJlbnQsICZuYW1lLCBidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAmYnVmbGVuKTsKLSAgICBpZiAoaGVhZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0KLSAgICB0YWlsID0gaGVhZDsKLSAgICBQeV9JTkNSRUYodGFpbCk7Ci0gICAgd2hpbGUgKG5hbWUpIHsKLSAgICAgICAgbmV4dCA9IGxvYWRfbmV4dCh0YWlsLCB0YWlsLCAmbmFtZSwgYnVmLCAmYnVmbGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaGVhZCk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgaWYgKGJ1aWx0aW5zX2ltcG9ydCA9PSBOVUxMKSB7CisgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCA9IF9QeURpY3RfR2V0SXRlbUlkKGludGVycC0+YnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOworICAgICAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIl9faW1wb3J0X18gbWlzc2luZyIpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBuZXh0OwogICAgIH0KLSAgICBpZiAodGFpbCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIElmIHRhaWwgaXMgUHlfTm9uZSwgYm90aCBnZXRfcGFyZW50IGFuZCBsb2FkX25leHQgZm91bmQKLSAgICAgICAgICAgYW4gZW1wdHkgbW9kdWxlIG5hbWU6IHNvbWVvbmUgY2FsbGVkIF9faW1wb3J0X18oIiIpIG9yCi0gICAgICAgICAgIGRvY3RvcmVkIGZhdWx0eSBieXRlY29kZSAqLwotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KKyAgICBQeV9JTkNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKIAotICAgIGlmIChmcm9tbGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBiID0gKGZyb21saXN0ID09IFB5X05vbmUpID8gMCA6IFB5T2JqZWN0X0lzVHJ1ZShmcm9tbGlzdCk7Ci0gICAgICAgIGlmIChiIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGhlYWQpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgIG1vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgYWJzX25hbWUpOworICAgIGlmIChtb2QgPT0gUHlfTm9uZSkgeworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImltcG9ydCBvZiAlUiBoYWx0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIiwgYWJzX25hbWUpOworICAgICAgICBpZiAobXNnICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgYWJzX25hbWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG1zZyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFiKQotICAgICAgICAgICAgZnJvbWxpc3QgPSBOVUxMOworICAgICAgICBtb2QgPSBOVUxMOworICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOwogICAgIH0KKyAgICBlbHNlIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgIGludCBpbml0aWFsaXppbmcgPSAwOwogCi0gICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiBoZWFkOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgLyogT3B0aW1pemF0aW9uOiBvbmx5IGNhbGwgX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgaWYKKyAgICAgICAgICAgX19pbml0aWFsaXppbmdfXyBpcyB0cnVlLgorICAgICAgICAgICBOT1RFOiBiZWNhdXNlIG9mIHRoaXMsIF9faW5pdGlhbGl6aW5nX18gbXVzdCBiZSBzZXQgKmJlZm9yZSoKKyAgICAgICAgICAgc3R1ZmZpbmcgdGhlIG5ldyBtb2R1bGUgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgICAqLworICAgICAgICB2YWx1ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobW9kLCAmUHlJZF9fX2luaXRpYWxpemluZ19fKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGluaXRpYWxpemluZyA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA9PSAtMSkKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7CisgICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQogICAgIH0KLQotICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICBpZiAoIWVuc3VyZV9mcm9tbGlzdCh0YWlsLCBmcm9tbGlzdCwgYnVmLCBidWZsZW4sIDApKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgIGVsc2UgeworICAgICAgICAvKiBfYm9vdHN0cmFwLl9maW5kX2FuZF9sb2FkKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCisgICAgICAgIG1vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZmluZF9hbmRfbG9hZCwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCwgTlVMTCk7CisgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQogICAgIH0KKyAgICAvKiBGcm9tIG5vdyBvbiB3ZSBkb24ndCBob2xkIHRoZSBpbXBvcnQgbG9jayBhbnltb3JlLiAqLwogCi0gICAgUHlNZW1fRlJFRShidWYpOwotICAgIHJldHVybiB0YWlsOworICAgIGlmIChQeU9iamVjdF9Ob3QoZnJvbWxpc3QpKSB7CisgICAgICAgIGlmIChsZXZlbCA9PSAwIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKIAotZXJyb3JfZXhpdDoKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUGFydGl0aW9uKG5hbWUsIGJvcnJvd2VkX2RvdCk7CisgICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogTm8gZG90IGluIG1vZHVsZSBuYW1lLCBzaW1wbGUgZXhpdCAqLworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IG1vZDsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcm9udCA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmcm9udCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKKworICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKKyAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGJ1aWx0aW5zX2ltcG9ydCwgZnJvbnQsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbnQpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYWJzX25hbWVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYWJzX25hbWUpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0b19yZXR1cm4gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGFic19uYW1lLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfbmFtZV9sZW4gLSBjdXRfb2ZmKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbnQpOworICAgICAgICAgICAgICAgIGlmICh0b19yZXR1cm4gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBpZiAoZmluYWxfbW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0tleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIG5vdCBpbiBzeXMubW9kdWxlcyBhcyBleHBlY3RlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZpbmFsX21vZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0b19yZXR1cm4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOworICAgICAgICAgICAgUHlfSU5DUkVGKG1vZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZpbmFsX21vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9faGFuZGxlX2Zyb21saXN0LCBtb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBidWlsdGluc19pbXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KKyAgICBnb3RvIGVycm9yOworCisgIGVycm9yX3dpdGhfdW5sb2NrOgorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CisgICAgfQorI2VuZGlmCisgIGVycm9yOgorICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOworICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKKyAgICBQeV9YREVDUkVGKG1vZCk7CisgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKKyAgICBQeV9YREVDUkVGKGdsb2JhbHMpOworICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOworICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKKyAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKKyAgICByZXR1cm4gZmluYWxfbW9kOwogfQogCiBQeU9iamVjdCAqCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKK1B5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb21saXN0LCBpbnQgbGV2ZWwpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKLSAgICByZXN1bHQgPSBpbXBvcnRfbW9kdWxlX2xldmVsKG5hbWUsIGdsb2JhbHMsIGxvY2FscywgZnJvbWxpc3QsIGxldmVsKTsKLSAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKm1vZDsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIFJldHVybiB0aGUgcGFja2FnZSB0aGF0IGFuIGltcG9ydCBpcyBiZWluZyBwZXJmb3JtZWQgaW4uICBJZiBnbG9iYWxzIGNvbWVzCi0gICBmcm9tIHRoZSBtb2R1bGUgZm9vLmJhci5iYXQgKG5vdCBpdHNlbGYgYSBwYWNrYWdlKSwgdGhpcyByZXR1cm5zIHRoZQotICAgc3lzLm1vZHVsZXMgZW50cnkgZm9yIGZvby5iYXIuICBJZiBnbG9iYWxzIGlzIGZyb20gYSBwYWNrYWdlJ3MgX19pbml0X18ucHksCi0gICB0aGUgcGFja2FnZSdzIGVudHJ5IGluIHN5cy5tb2R1bGVzIGlzIHJldHVybmVkLCBhcyBhIGJvcnJvd2VkIHJlZmVyZW5jZS4KLQotICAgVGhlICpuYW1lKiBvZiB0aGUgcmV0dXJuZWQgcGFja2FnZSBpcyByZXR1cm5lZCBpbiBidWYsIHdpdGggdGhlIGxlbmd0aCBvZgotICAgdGhlIG5hbWUgaW4gKnBfYnVmbGVuLgotCi0gICBJZiBnbG9iYWxzIGRvZXNuJ3QgY29tZSBmcm9tIGEgcGFja2FnZSBvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UsIG9yIGEKLSAgIGNvcnJlc3BvbmRpbmcgZW50cnkgaXMgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzLCBQeV9Ob25lIGlzIHJldHVybmVkLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1nZXRfcGFyZW50KFB5T2JqZWN0ICpnbG9iYWxzLCBjaGFyICpidWYsIFB5X3NzaXplX3QgKnBfYnVmbGVuLCBpbnQgbGV2ZWwpCi17Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lc3RyID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnBhdGhzdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcGtnc3RyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGtnbmFtZSwgKm1vZG5hbWUsICptb2RwYXRoLCAqbW9kdWxlcywgKnBhcmVudDsKLSAgICBpbnQgb3JpZ19sZXZlbCA9IGxldmVsOwotCi0gICAgaWYgKGdsb2JhbHMgPT0gTlVMTCB8fCAhUHlEaWN0X0NoZWNrKGdsb2JhbHMpIHx8ICFsZXZlbCkKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0KLSAgICBpZiAobmFtZXN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIG5hbWVzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKLSAgICAgICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAocGF0aHN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHBhdGhzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19wYXRoX18iKTsKLSAgICAgICAgaWYgKHBhdGhzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAocGtnc3RyID09IE5VTEwpIHsKLSAgICAgICAgcGtnc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fcGFja2FnZV9fIik7Ci0gICAgICAgIGlmIChwa2dzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgICpidWYgPSAnXDAnOwotICAgICpwX2J1ZmxlbiA9IDA7Ci0gICAgcGtnbmFtZSA9IFB5RGljdF9HZXRJdGVtKGdsb2JhbHMsIHBrZ3N0cik7Ci0KLSAgICBpZiAoKHBrZ25hbWUgIT0gTlVMTCkgJiYgKHBrZ25hbWUgIT0gUHlfTm9uZSkpIHsKLSAgICAgICAgLyogX19wYWNrYWdlX18gaXMgc2V0LCBzbyB1c2UgaXQgKi8KLSAgICAgICAgY2hhciAqcGtnbmFtZV9zdHI7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuOwotCi0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBrZ25hbWUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19wYWNrYWdlX18gc2V0IHRvIG5vbi1zdHJpbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHBrZ25hbWVfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUocGtnbmFtZSwgJmxlbik7Ci0gICAgICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGxldmVsID4gMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBpbiBub24tcGFja2FnZSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxlbiA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWNrYWdlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHN0cmNweShidWYsIHBrZ25hbWVfc3RyKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBfX3BhY2thZ2VfXyBub3Qgc2V0LCBzbyBmaWd1cmUgaXQgb3V0IGFuZCBzZXQgaXQgKi8KLSAgICAgICAgbW9kbmFtZSA9IFB5RGljdF9HZXRJdGVtKGdsb2JhbHMsIG5hbWVzdHIpOwotICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sobW9kbmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLQotICAgICAgICBtb2RwYXRoID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgcGF0aHN0cik7Ci0gICAgICAgIGlmIChtb2RwYXRoICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIF9fcGF0aF9fIGlzIHNldCwgc28gbW9kbmFtZSBpcyBhbHJlYWR5IHRoZSBwYWNrYWdlIG5hbWUgKi8KLSAgICAgICAgICAgIGNoYXIgKm1vZG5hbWVfc3RyOwotICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICBpbnQgZXJyb3I7Ci0KLSAgICAgICAgICAgIG1vZG5hbWVfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUobW9kbmFtZSwgJmxlbik7Ci0gICAgICAgICAgICBpZiAobGVuID4gTUFYUEFUSExFTikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cmNweShidWYsIG1vZG5hbWVfc3RyKTsKLSAgICAgICAgICAgIGVycm9yID0gUHlEaWN0X1NldEl0ZW0oZ2xvYmFscywgcGtnc3RyLCBtb2RuYW1lKTsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHNldCBfX3BhY2thZ2VfXyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogTm9ybWFsIG1vZHVsZSwgc28gd29yayBvdXQgdGhlIHBhY2thZ2UgbmFtZSBpZiBhbnkgKi8KLSAgICAgICAgICAgIGNoYXIgKnN0YXJ0ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtb2RuYW1lKTsKLSAgICAgICAgICAgIGNoYXIgKmxhc3Rkb3QgPSBzdHJyY2hyKHN0YXJ0LCAnLicpOwotICAgICAgICAgICAgc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGludCBlcnJvcjsKLSAgICAgICAgICAgIGlmIChsYXN0ZG90ID09IE5VTEwgJiYgbGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGluIG5vbi1wYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGFzdGRvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxlbiA9IGxhc3Rkb3QgLSBzdGFydDsKLSAgICAgICAgICAgIGlmIChsZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cm5jcHkoYnVmLCBzdGFydCwgbGVuKTsKLSAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICAgICAgICAgIHBrZ25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgICAgICAgICAgaWYgKHBrZ25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIHBrZ25hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBrZ25hbWUpOwotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKC0tbGV2ZWwgPiAwKSB7Ci0gICAgICAgIGNoYXIgKmRvdCA9IHN0cnJjaHIoYnVmLCAnLicpOwotICAgICAgICBpZiAoZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCAiCi0gICAgICAgICAgICAgICAgInRvcGxldmVsIHBhY2thZ2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgICpkb3QgPSAnXDAnOwotICAgIH0KLSAgICAqcF9idWZsZW4gPSBzdHJsZW4oYnVmKTsKLQotICAgIG1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcGFyZW50ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgYnVmKTsKLSAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKG9yaWdfbGV2ZWwgPCAxKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXJyX21zZyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgKLSAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAnJS4yMDBzJyBub3QgZm91bmQgIgotICAgICAgICAgICAgICAgICJ3aGlsZSBoYW5kbGluZyBhYnNvbHV0ZSBpbXBvcnQiLCBidWYpOwotICAgICAgICAgICAgaWYgKGVycl9tc2cgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFQeUVycl9XYXJuRXgoUHlFeGNfUnVudGltZVdhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGVycl9tc2cpLCAxKSkgewotICAgICAgICAgICAgICAgICpidWYgPSAnXDAnOwotICAgICAgICAgICAgICAgICpwX2J1ZmxlbiA9IDA7Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0gUHlfTm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihlcnJfbXNnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAnJS4yMDBzJyBub3QgbG9hZGVkLCAiCi0gICAgICAgICAgICAgICAgImNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlIGltcG9ydCIsIGJ1Zik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHBhcmVudDsKLSAgICAvKiBXZSBleHBlY3QsIGJ1dCBjYW4ndCBndWFyYW50ZWUsIGlmIHBhcmVudCAhPSBOb25lLCB0aGF0OgotICAgICAgIC0gcGFyZW50Ll9fbmFtZV9fID09IGJ1ZgotICAgICAgIC0gcGFyZW50Ll9fZGljdF9fIGlzIGdsb2JhbHMKLSAgICAgICBJZiB0aGlzIGlzIHZpb2xhdGVkLi4uICBXaG8gY2FyZXM/ICovCi19Ci0KLS8qIGFsdG1vZCBpcyBlaXRoZXIgTm9uZSBvciBzYW1lIGFzIG1vZCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfbmV4dChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYWx0bW9kLCBjaGFyICoqcF9uYW1lLCBjaGFyICpidWYsCi0gICAgICAgICAgUHlfc3NpemVfdCAqcF9idWZsZW4pCi17Ci0gICAgY2hhciAqbmFtZSA9ICpwX25hbWU7Ci0gICAgY2hhciAqZG90ID0gc3RyY2hyKG5hbWUsICcuJyk7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBpZiAoc3RybGVuKG5hbWUpID09IDApIHsKLSAgICAgICAgLyogY29tcGxldGVseSBlbXB0eSBtb2R1bGUgbmFtZSBzaG91bGQgb25seSBoYXBwZW4gaW4KLSAgICAgICAgICAgJ2Zyb20gLiBpbXBvcnQnIChvciAnX19pbXBvcnRfXygiIiknKSovCi0gICAgICAgIFB5X0lOQ1JFRihtb2QpOwotICAgICAgICAqcF9uYW1lID0gTlVMTDsKLSAgICAgICAgcmV0dXJuIG1vZDsKLSAgICB9Ci0KLSAgICBpZiAoZG90ID09IE5VTEwpIHsKLSAgICAgICAgKnBfbmFtZSA9IE5VTEw7Ci0gICAgICAgIGxlbiA9IHN0cmxlbihuYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICpwX25hbWUgPSBkb3QrMTsKLSAgICAgICAgbGVuID0gZG90LW5hbWU7Ci0gICAgfQotICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBtb2R1bGUgbmFtZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBwID0gYnVmICsgKnBfYnVmbGVuOwotICAgIGlmIChwICE9IGJ1ZikKLSAgICAgICAgKnArKyA9ICcuJzsKLSAgICBpZiAocCtsZW4tYnVmID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cm5jcHkocCwgbmFtZSwgbGVuKTsKLSAgICBwW2xlbl0gPSAnXDAnOwotICAgICpwX2J1ZmxlbiA9IHArbGVuLWJ1ZjsKLQotICAgIHJlc3VsdCA9IGltcG9ydF9zdWJtb2R1bGUobW9kLCBwLCBidWYpOwotICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSAmJiBhbHRtb2QgIT0gbW9kKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAvKiBIZXJlLCBhbHRtb2QgbXVzdCBiZSBOb25lIGFuZCBtb2QgbXVzdCBub3QgYmUgTm9uZSAqLwotICAgICAgICByZXN1bHQgPSBpbXBvcnRfc3VibW9kdWxlKGFsdG1vZCwgcCwgcCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiByZXN1bHQgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgaWYgKG1hcmtfbWlzcyhidWYpICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cm5jcHkoYnVmLCBuYW1lLCBsZW4pOwotICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgKnBfYnVmbGVuID0gbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBtb2R1bGUgbmFtZWQgJS4yMDBzIiwgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBpbnQKLW1hcmtfbWlzcyhjaGFyICpuYW1lKQotewotICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lLCBQeV9Ob25lKTsKLX0KLQotc3RhdGljIGludAotZW5zdXJlX2Zyb21saXN0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICpmcm9tbGlzdCwgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgICBpbnQgcmVjdXJzaXZlKQotewotICAgIGludCBpOwotCi0gICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG1vZCwgIl9fcGF0aF9fIikpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oZnJvbWxpc3QsIGkpOwotICAgICAgICBpbnQgaGFzaXQ7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0luZGV4RXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJdGVtIGluIGBgZnJvbSBsaXN0Jycgbm90IGEgc3RyaW5nIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSlbMF0gPT0gJyonKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYWxsOwotICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgLyogU2VlIGlmIHRoZSBwYWNrYWdlIGRlZmluZXMgX19hbGxfXyAqLwotICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogQXZvaWQgZW5kbGVzcyByZWN1cnNpb24gKi8KLSAgICAgICAgICAgIGFsbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCAiX19hbGxfXyIpOwotICAgICAgICAgICAgaWYgKGFsbCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgcmV0ID0gZW5zdXJlX2Zyb21saXN0KG1vZCwgYWxsLCBidWYsIGJ1ZmxlbiwgMSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaGFzaXQgPSBQeU9iamVjdF9IYXNBdHRyKG1vZCwgaXRlbSk7Ci0gICAgICAgIGlmICghaGFzaXQpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtODsKLSAgICAgICAgICAgIGNoYXIgKnN1Ym5hbWU7Ci0gICAgICAgICAgICBQeU9iamVjdCAqc3VibW9kOwotICAgICAgICAgICAgY2hhciAqcDsKLSAgICAgICAgICAgIGl0ZW04ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChpdGVtKTsKLSAgICAgICAgICAgIGlmICghaXRlbTgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBlbmNvZGUgcGF0aCBpdGVtIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdWJuYW1lID0gUHlCeXRlc19BU19TVFJJTkcoaXRlbTgpOwotICAgICAgICAgICAgaWYgKGJ1ZmxlbiArIHN0cmxlbihzdWJuYW1lKSA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBidWYgKyBidWZsZW47Ci0gICAgICAgICAgICAqcCsrID0gJy4nOwotICAgICAgICAgICAgc3RyY3B5KHAsIHN1Ym5hbWUpOwotICAgICAgICAgICAgc3VibW9kID0gaW1wb3J0X3N1Ym1vZHVsZShtb2QsIHN1Ym5hbWUsIGJ1Zik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbTgpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihzdWJtb2QpOwotICAgICAgICAgICAgaWYgKHN1Ym1vZCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICB9Ci0KLSAgICAvKiBOT1RSRUFDSEVEICovCi19Ci0KLXN0YXRpYyBpbnQKLWFkZF9zdWJtb2R1bGUoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKnN1Ym1vZCwgY2hhciAqZnVsbG5hbWUsIGNoYXIgKnN1Ym5hbWUsCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGVzKQotewotICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgLyogSXJyZXNwZWN0aXZlIG9mIHRoZSBzdWNjZXNzIG9mIHRoaXMgbG9hZCwgbWFrZSBhCi0gICAgICAgcmVmZXJlbmNlIHRvIGl0IGluIHRoZSBwYXJlbnQgcGFja2FnZSBtb2R1bGUuICBBIGNvcHkgZ2V0cwotICAgICAgIHNhdmVkIGluIHRoZSBtb2R1bGVzIGRpY3Rpb25hcnkgdW5kZXIgdGhlIGZ1bGwgbmFtZSwgc28gZ2V0IGEKLSAgICAgICByZWZlcmVuY2UgZnJvbSB0aGVyZSwgaWYgbmVlZCBiZS4gIChUaGUgZXhjZXB0aW9uIGlzIHdoZW4gdGhlCi0gICAgICAgbG9hZCBmYWlsZWQgd2l0aCBhIFN5bnRheEVycm9yIC0tIHRoZW4gdGhlcmUncyBubyB0cmFjZSBpbgotICAgICAgIHN5cy5tb2R1bGVzLiAgSW4gdGhhdCBjYXNlLCBvZiBjb3Vyc2UsIGRvIG5vdGhpbmcgZXh0cmEuKSAqLwotICAgIGlmIChzdWJtb2QgPT0gTlVMTCkgewotICAgICAgICBzdWJtb2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBmdWxsbmFtZSk7Ci0gICAgICAgIGlmIChzdWJtb2QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICBpZiAoUHlNb2R1bGVfQ2hlY2sobW9kKSkgewotICAgICAgICAvKiBXZSBjYW4ndCB1c2Ugc2V0YXR0ciBoZXJlIHNpbmNlIGl0IGNhbiBnaXZlIGEKLSAgICAgICAgICogc3B1cmlvdXMgd2FybmluZyBpZiB0aGUgc3VibW9kdWxlIG5hbWUgc2hhZG93cyBhCi0gICAgICAgICAqIGJ1aWx0aW4gbmFtZSAqLwotICAgICAgICBQeU9iamVjdCAqZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKLSAgICAgICAgaWYgKCFkaWN0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCBzdWJuYW1lLCBzdWJtb2QpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobW9kLCBzdWJuYW1lLCBzdWJtb2QpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcG9ydF9zdWJtb2R1bGUoUHlPYmplY3QgKm1vZCwgY2hhciAqc3VibmFtZSwgY2hhciAqZnVsbG5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgUHlPYmplY3QgKm0gPSBOVUxMOwotCi0gICAgLyogUmVxdWlyZToKLSAgICAgICBpZiBtb2QgPT0gTm9uZTogc3VibmFtZSA9PSBmdWxsbmFtZQotICAgICAgIGVsc2U6IG1vZC5fX25hbWVfXyArICIuIiArIHN1Ym5hbWUgPT0gZnVsbG5hbWUKLSAgICAqLwotCi0gICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgZnVsbG5hbWUpKSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpwYXRoLCAqbG9hZGVyID0gTlVMTDsKLSAgICAgICAgY2hhciAqYnVmOwotICAgICAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgICAgIEZJTEUgKmZwID0gTlVMTDsKLQotICAgICAgICBpZiAobW9kID09IFB5X05vbmUpCi0gICAgICAgICAgICBwYXRoID0gTlVMTDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsICJfX3BhdGhfXyIpOwotICAgICAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmWzBdID0gJ1wwJzsKLSAgICAgICAgZmRwID0gZmluZF9tb2R1bGUoZnVsbG5hbWUsIHN1Ym5hbWUsIHBhdGgsIGJ1ZiwgTUFYUEFUSExFTisxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZnAsICZsb2FkZXIpOwotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICBpZiAoZmRwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgIH0KLSAgICAgICAgbSA9IGxvYWRfbW9kdWxlKGZ1bGxuYW1lLCBmcCwgYnVmLCBmZHAtPnR5cGUsIGxvYWRlcik7Ci0gICAgICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLSAgICAgICAgaWYgKGZwKQotICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgaWYgKCFhZGRfc3VibW9kdWxlKG1vZCwgbSwgZnVsbG5hbWUsIHN1Ym5hbWUsIG1vZHVsZXMpKSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKG0pOwotICAgICAgICAgICAgbSA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgIH0KLQotICAgIHJldHVybiBtOworICAgIG1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KG5hbWVvYmosIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgbGV2ZWwpOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAKQEAgLTI5OTUsMTAzICsxNTU5LDIzIEBACiBQeU9iamVjdCAqCiBQeUltcG9ydF9SZWxvYWRNb2R1bGUoUHlPYmplY3QgKm0pCiB7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgUHlPYmplY3QgKm1vZHVsZXNfcmVsb2FkaW5nID0gaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZzsKKyAgICBfUHlfSURFTlRJRklFUihyZWxvYWQpOworICAgIFB5T2JqZWN0ICpyZWxvYWRlZF9tb2R1bGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTCwgKmxvYWRlciA9IE5VTEwsICpleGlzdGluZ19tID0gTlVMTDsKLSAgICBjaGFyICpuYW1lLCAqc3VibmFtZTsKLSAgICBjaGFyICpidWY7Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmV3bTsKLQotICAgIGlmIChtb2R1bGVzX3JlbG9hZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5SW1wb3J0X1JlbG9hZE1vZHVsZTogIgotICAgICAgICAgICAgICAgICAgICAgICJubyBtb2R1bGVzX3JlbG9hZGluZyBkaWN0aW9uYXJ5ISIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeU9iamVjdCAqaW1wID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgImltcCIpOworICAgIGlmIChpbXAgPT0gTlVMTCkgeworICAgICAgICBpbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImltcCIpOworICAgICAgICBpZiAoaW1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKG0gPT0gTlVMTCB8fCAhUHlNb2R1bGVfQ2hlY2sobSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWxvYWQoKSBhcmd1bWVudCBtdXN0IGJlIG1vZHVsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbmFtZSA9IChjaGFyKilQeU1vZHVsZV9HZXROYW1lKG0pOwotICAgIGlmIChuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChtICE9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJyZWxvYWQoKTogbW9kdWxlICUuMjAwcyBub3QgaW4gc3lzLm1vZHVsZXMiLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBleGlzdGluZ19tID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlc19yZWxvYWRpbmcsIG5hbWUpOwotICAgIGlmIChleGlzdGluZ19tICE9IE5VTEwpIHsKLSAgICAgICAgLyogRHVlIHRvIGEgcmVjdXJzaXZlIHJlbG9hZCwgdGhpcyBtb2R1bGUgaXMgYWxyZWFkeQotICAgICAgICAgICBiZWluZyByZWxvYWRlZC4gKi8KLSAgICAgICAgUHlfSU5DUkVGKGV4aXN0aW5nX20pOwotICAgICAgICByZXR1cm4gZXhpc3RpbmdfbTsKLSAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXNfcmVsb2FkaW5nLCBuYW1lLCBtKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3VibmFtZSA9IHN0cnJjaHIobmFtZSwgJy4nKTsKLSAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQotICAgICAgICBzdWJuYW1lID0gbmFtZTsKICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmVudG5hbWUsICpwYXJlbnQ7Ci0gICAgICAgIHBhcmVudG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUobmFtZSwgKHN1Ym5hbWUtbmFtZSkpOwotICAgICAgICBpZiAocGFyZW50bmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpbXBfbW9kdWxlc19yZWxvYWRpbmdfY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHBhcmVudCA9IFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIHBhcmVudG5hbWUpOwotICAgICAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAicmVsb2FkKCk6IHBhcmVudCAlVSBub3QgaW4gc3lzLm1vZHVsZXMiLAotICAgICAgICAgICAgICAgICBwYXJlbnRuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnRuYW1lKTsKLSAgICAgICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHBhcmVudG5hbWUpOwotICAgICAgICBzdWJuYW1lKys7Ci0gICAgICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHBhcmVudCwgIl9fcGF0aF9fIik7Ci0gICAgICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgUHlfWERFQ1JFRihwYXRoKTsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUobmFtZSwgc3VibmFtZSwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsICZmcCwgJmxvYWRlcik7Ci0gICAgUHlfWERFQ1JFRihwYXRoKTsKLQotICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKGxvYWRlcik7Ci0gICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoaW1wKTsKICAgICB9CiAKLSAgICBuZXdtID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIGJ1ZiwgZmRwLT50eXBlLCBsb2FkZXIpOwotICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLQotICAgIGlmIChmcCkKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICBpZiAobmV3bSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIGxvYWRfbW9kdWxlIHByb2JhYmx5IHJlbW92ZWQgbmFtZSBmcm9tIG1vZHVsZXMgYmVjYXVzZSBvZgotICAgICAgICAgKiB0aGUgZXJyb3IuICBQdXQgYmFjayB0aGUgb3JpZ2luYWwgbW9kdWxlIG9iamVjdC4gIFdlJ3JlCi0gICAgICAgICAqIGdvaW5nIHRvIHJldHVybiBOVUxMIGluIHRoaXMgY2FzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSAgICAgICAgICogcmVwbGFjaW5nIG5hbWUgc3VjY2VlZHMsIHNvIHRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZC4KLSAgICAgICAgICovCi0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIG0pOwotICAgIH0KLSAgICBpbXBfbW9kdWxlc19yZWxvYWRpbmdfY2xlYXIoKTsKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIG5ld207CisgICAgcmVsb2FkZWRfbW9kdWxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbXAsICZQeUlkX3JlbG9hZCwgIk8iLCBtKTsKKyAgICBQeV9ERUNSRUYoaW1wKTsKKyAgICByZXR1cm4gcmVsb2FkZWRfbW9kdWxlOwogfQogCiAKQEAgLTMxODEsNDggKzE2NjUsMTkgQEAKICAgICByZXR1cm4gcjsKIH0KIAotCi0vKiBNb2R1bGUgJ2ltcCcgcHJvdmlkZXMgUHl0aG9uIGFjY2VzcyB0byB0aGUgcHJpbWl0aXZlcyB1c2VkIGZvcgotICAgaW1wb3J0aW5nIG1vZHVsZXMuCi0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgotaW1wX21ha2VfbWFnaWMobG9uZyBtYWdpYykKLXsKLSAgICBjaGFyIGJ1Zls0XTsKLQotICAgIGJ1ZlswXSA9IChjaGFyKSAoKG1hZ2ljID4+ICAwKSAmIDB4ZmYpOwotICAgIGJ1ZlsxXSA9IChjaGFyKSAoKG1hZ2ljID4+ICA4KSAmIDB4ZmYpOwotICAgIGJ1ZlsyXSA9IChjaGFyKSAoKG1hZ2ljID4+IDE2KSAmIDB4ZmYpOwotICAgIGJ1ZlszXSA9IChjaGFyKSAoKG1hZ2ljID4+IDI0KSAmIDB4ZmYpOwotCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCA0KTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfbWFnaWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgcmV0dXJuIGltcF9tYWtlX21hZ2ljKHB5Y19tYWdpYyk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfZ2V0X3RhZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocHljX3RhZyk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfZ2V0X3N1ZmZpeGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoraW1wX2V4dGVuc2lvbl9zdWZmaXhlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7CisgICAgY29uc3QgY2hhciAqc3VmZml4OworICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAobGlzdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5X0J1aWxkVmFsdWUoInNzaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLT5zdWZmaXgsIGZkcC0+bW9kZSwgZmRwLT50eXBlKTsKKyNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORworICAgIHdoaWxlICgoc3VmZml4ID0gX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW2luZGV4XSkpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzdWZmaXgpOwogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyMzMsMTAyICsxNjg4LDE5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIGluZGV4ICs9IDE7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX2ZpbmRfbW9kdWxlKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQotewotICAgIGV4dGVybiBpbnQgZmNsb3NlKEZJTEUgKik7Ci0gICAgUHlPYmplY3QgKmZvYiwgKnJldDsKLSAgICBQeU9iamVjdCAqcGF0aG9iajsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIGludCBmZCA9IC0xOwotICAgIGNoYXIgKmZvdW5kX2VuY29kaW5nID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0KLSAgICBwYXRobmFtZSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChwYXRobmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBwYXRobmFtZVswXSA9ICdcMCc7Ci0gICAgaWYgKHBhdGggPT0gUHlfTm9uZSkKLSAgICAgICAgcGF0aCA9IE5VTEw7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUoTlVMTCwgbmFtZSwgcGF0aCwgcGF0aG5hbWUsIE1BWFBBVEhMRU4rMSwgJmZwLCBOVUxMKTsKLSAgICBpZiAoZmRwID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICBmZCA9IGZpbGVubyhmcCk7Ci0gICAgICAgIGlmIChmZCAhPSAtMSkKLSAgICAgICAgICAgIGZkID0gZHVwKGZkKTsKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZmQgIT0gLTEpIHsKLSAgICAgICAgaWYgKHN0cmNocihmZHAtPm1vZGUsICdiJykgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKCkgcmV0dXJucyBQeU1lbV9NQUxMT0MnZWQKLSAgICAgICAgICAgICAgIG1lbW9yeS4gKi8KLSAgICAgICAgICAgIGZvdW5kX2VuY29kaW5nID0gUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGZkKTsKLSAgICAgICAgICAgIGxzZWVrKGZkLCAwLCAwKTsgLyogUmVzZXQgcG9zaXRpb24gKi8KLSAgICAgICAgICAgIGlmIChmb3VuZF9lbmNvZGluZyA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZW5jb2RpbmcgPSAoZm91bmRfZW5jb2RpbmcgIT0gTlVMTCkgPyBmb3VuZF9lbmNvZGluZyA6Ci0gICAgICAgICAgICAgICAgICAgKGNoYXIqKVB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBmb2IgPSBQeUZpbGVfRnJvbUZkKGZkLCBwYXRobmFtZSwgZmRwLT5tb2RlLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopZW5jb2RpbmcsIE5VTEwsIE5VTEwsIDEpOwotICAgICAgICBpZiAoZm9iID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUoZm91bmRfZW5jb2RpbmcpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb2IgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYoZm9iKTsKLSAgICB9Ci0gICAgcGF0aG9iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOwotICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoIk5OKHNzaSkiLAotICAgICAgICAgICAgICAgICAgZm9iLCBwYXRob2JqLCBmZHAtPnN1ZmZpeCwgZmRwLT5tb2RlLCBmZHAtPnR5cGUpOwotICAgIFB5TWVtX0ZSRUUoZm91bmRfZW5jb2RpbmcpOwotICAgIFB5TWVtX0ZSRUUocGF0aG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yX2V4aXQ6Ci0gICAgUHlNZW1fRlJFRShwYXRobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfZmluZF9tb2R1bGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpuYW1lOwotICAgIFB5T2JqZWN0ICpyZXQsICpwYXRoID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mfE86ZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IGNhbGxfZmluZF9tb2R1bGUoUHlCeXRlc19BU19TVFJJTkcobmFtZSksIHBhdGgpOwotICAgIFB5X0RFQ1JFRihuYW1lKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogaW1wX2luaXRfYnVpbHRpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczppbml0X2J1aWx0aW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmluaXRfYnVpbHRpbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0ID0gaW5pdF9idWlsdGluKG5hbWUpOwogICAgIGlmIChyZXQgPCAwKQpAQCAtMzMzNyw3ICsxNzA5LDcgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIFB5X1hJTkNSRUYobSk7CiAgICAgcmV0dXJuIG07CiB9CkBAIC0zMzQ1LDE5ICsxNzE3LDE5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2luaXRfZnJvemVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmluaXRfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKG5hbWUpOworICAgIHJldCA9IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChuYW1lKTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHJldCA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICBQeV9YSU5DUkVGKG0pOwogICAgIHJldHVybiBtOwogfQpAQCAtMzM2NSw5ICsxNzM3LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gZ2V0X2Zyb3plbl9vYmplY3QobmFtZSk7CiB9CkBAIC0zMzc1LDkgKzE3NDcsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9pc19mcm96ZW5fcGFja2FnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBpc19mcm96ZW5fcGFja2FnZShuYW1lKTsKIH0KQEAgLTMzODUsOCArMTc1Nyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2J1aWx0aW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2J1aWx0aW4iLCAmbmFtZSkpCisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaXNfYnVpbHRpbihuYW1lKSk7CiB9CkBAIC0zMzk0LDMzMyArMTc2Niw1NCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9pc19mcm96ZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgc3RydWN0IF9mcm96ZW4gKnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgKHAgPT0gTlVMTCA/IDAgOiBwLT5zaXplKSk7CiB9CiAKLXN0YXRpYyBGSUxFICoKLWdldF9maWxlKGNoYXIgKnBhdGhuYW1lLCBQeU9iamVjdCAqZm9iLCBjaGFyICptb2RlKQotewotICAgIEZJTEUgKmZwOwotICAgIGlmIChtb2RlWzBdID09ICdVJykKLSAgICAgICAgbW9kZSA9ICJyIiBQWV9TVERJT1RFWFRNT0RFOwotICAgIGlmIChmb2IgPT0gTlVMTCkgewotICAgICAgICBmcCA9IGZvcGVuKHBhdGhuYW1lLCBtb2RlKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGludCBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoZm9iKTsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIC8qIHRoZSBGSUxFIHN0cnVjdCBnZXRzIGEgbmV3IGZkLCBzbyB0aGF0IGl0IGNhbiBiZSBjbG9zZWQKLSAgICAgICAgICogaW5kZXBlbmRlbnRseSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGdpdmVuCi0gICAgICAgICAqLwotICAgICAgICBmZCA9IGR1cChmZCk7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGZwID0gZmRvcGVuKGZkLCBtb2RlKTsKLSAgICB9Ci0gICAgaWYgKGZwKQotICAgICAgICByZXR1cm4gZnA7Ci1lcnJvcjoKLSAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbG9hZF9jb21waWxlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyZ8Tzpsb2FkX2NvbXBpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnAgPSBnZXRfZmlsZShQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSksIGZvYiwgInJiIik7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG0gPSBsb2FkX2NvbXBpbGVkX21vZHVsZShuYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSksIGZwKTsKLSAgICBmY2xvc2UoZnApOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgcmV0dXJuIG07Ci19Ci0KICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogCiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2xvYWRfZHluYW1pYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotICAgIGNoYXIgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICpmb2IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJnxPOmxvYWRfZHluYW1pYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoYnl0ZXMsICZmb2IpKQorICAgIFB5T2JqZWN0ICpuYW1lLCAqcGF0aG5hbWUsICpmb2IgPSBOVUxMLCAqbW9kOworICAgIEZJTEUgKmZwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyZ8Tzpsb2FkX2R5bmFtaWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGhuYW1lLCAmZm9iKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aG5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpOwotICAgIGlmIChmb2IpIHsKLSAgICAgICAgZnAgPSBnZXRfZmlsZShwYXRobmFtZSwgZm9iLCAiciIpOworICAgIGlmIChmb2IgIT0gTlVMTCkgeworICAgICAgICBmcCA9IF9QeV9mb3BlbihwYXRobmFtZSwgInIiKTsKICAgICAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICBtID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgZWxzZQorICAgICAgICBmcCA9IE5VTEw7CisgICAgbW9kID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7CisgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKICAgICBpZiAoZnApCiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIG1vZDsKIH0KIAogI2VuZGlmIC8qIEhBVkVfRFlOQU1JQ19MT0FESU5HICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbG9hZF9zb3VyY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICpmb2IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOwotICAgIEZJTEUgKmZwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mfE86bG9hZF9zb3VyY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmb2IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGdldF9maWxlKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZm9iLCAiciIpOwotICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBtID0gbG9hZF9zb3VyY2VfbW9kdWxlKG5hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZnApOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgZmNsb3NlKGZwKTsKLSAgICByZXR1cm4gbTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqZm9iOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqIHJldDsKLSAgICBjaGFyICpzdWZmaXg7IC8qIFVudXNlZCAqLwotICAgIGNoYXIgKm1vZGU7Ci0gICAgaW50IHR5cGU7Ci0gICAgRklMRSAqZnA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPTyYoc3NpKTpsb2FkX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCAmZm9iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1ZmZpeCwgJm1vZGUsICZ0eXBlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCptb2RlKSB7Ci0gICAgICAgIC8qIE1vZGUgbXVzdCBzdGFydCB3aXRoICdyJyBvciAnVScgYW5kIG11c3Qgbm90IGNvbnRhaW4gJysnLgotICAgICAgICAgICBJbXBsaWNpdCBpbiB0aGlzIHRlc3QgaXMgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgbW9kZQotICAgICAgICAgICBtYXkgY29udGFpbiBvdGhlciBtb2RpZmllcnMgbGlrZSAnYicgb3IgJ3QnLiAqLwotCi0gICAgICAgIGlmICghKCptb2RlID09ICdyJyB8fCAqbW9kZSA9PSAnVScpIHx8IHN0cmNocihtb2RlLCAnKycpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmaWxlIG9wZW4gbW9kZSAlLjIwMHMiLCBtb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZm9iID09IFB5X05vbmUpCi0gICAgICAgIGZwID0gTlVMTDsKLSAgICBlbHNlIHsKLSAgICAgICAgZnAgPSBnZXRfZmlsZShOVUxMLCBmb2IsIG1vZGUpOwotICAgICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldCA9IGxvYWRfbW9kdWxlKG5hbWUsIGZwLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSksIHR5cGUsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgaWYgKGZwKQotICAgICAgICBmY2xvc2UoZnApOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbG9hZF9wYWNrYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqIHJldDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJjpsb2FkX3BhY2thZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBsb2FkX3BhY2thZ2UobmFtZSwgUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpKTsKLSAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbmV3X21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6bmV3X21vZHVsZSIsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TW9kdWxlX05ldyhuYW1lKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9yZWxvYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQotewotICAgIHJldHVybiBQeUltcG9ydF9SZWxvYWRNb2R1bGUodik7Ci19Ci0KLVB5RG9jX1NUUlZBUihkb2NfcmVsb2FkLAotInJlbG9hZChtb2R1bGUpIC0+IG1vZHVsZVxuXAotXG5cCi1SZWxvYWQgdGhlIG1vZHVsZS4gIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGJlZm9yZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9jYWNoZV9mcm9tX3NvdXJjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd3MpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgImRlYnVnX292ZXJyaWRlIiwgTlVMTH07Ci0KLSAgICBjaGFyICpidWY7Ci0gICAgUHlPYmplY3QgKnBhdGhieXRlczsKLSAgICBjaGFyICpjcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmRlYnVnX292ZXJyaWRlID0gTlVMTDsKLSAgICBpbnQgZGVidWcgPSAhUHlfT3B0aW1pemVGbGFnOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCi0gICAgICAgICAgICAgICAgYXJncywga3dzLCAiTyZ8TyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoYnl0ZXMsICZkZWJ1Z19vdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGRlYnVnX292ZXJyaWRlICE9IE5VTEwgJiYKLSAgICAgICAgKGRlYnVnID0gUHlPYmplY3RfSXNUcnVlKGRlYnVnX292ZXJyaWRlKSkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGNwYXRobmFtZSA9IG1ha2VfY29tcGlsZWRfcGF0aG5hbWUoCi0gICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyksCi0gICAgICAgIGJ1ZiwgTUFYUEFUSExFTisxLCBkZWJ1Zyk7Ci0gICAgUHlfREVDUkVGKHBhdGhieXRlcyk7Ci0KLSAgICBpZiAoY3BhdGhuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAicGF0aCBidWZmZXIgdG9vIHNob3J0Iik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYnVmKTsKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KLX0KLQotUHlEb2NfU1RSVkFSKGRvY19jYWNoZV9mcm9tX3NvdXJjZSwKLSJjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbZGVidWdfb3ZlcnJpZGVdKSAtPiBwYXRoXG5cCi1HaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMvLnB5byBmaWxlLlxuXAotXG5cCi1UaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGVcblwKLS5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uXG5cCi13aWxsIGJlIC5weWMgdW5sZXNzIF9fZGVidWdfXyBpcyBub3QgZGVmaW5lZCwgdGhlbiBpdCB3aWxsIGJlIC5weW8uXG5cCi1cblwKLUlmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB0YWtlbiBhc1xuXAotdGhlIHZhbHVlIG9mIF9fZGVidWdfXyBpbnN0ZWFkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX3NvdXJjZV9mcm9tX2NhY2hlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3cykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCBOVUxMfTsKLQotICAgIFB5T2JqZWN0ICpwYXRobmFtZV9vYmo7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgY2hhciAqYnVmOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCi0gICAgICAgICAgICAgICAgYXJncywga3dzLCAiTyYiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWVfb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBwYXRobmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lX29iaik7Ci0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBpZiAobWFrZV9zb3VyY2VfcGF0aG5hbWUocGF0aG5hbWUsIGJ1ZikgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIk5vdCBhIFBFUCAzMTQ3IHB5YyBwYXRoOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYmopOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYocGF0aG5hbWVfb2JqKTsKLSAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotfQotCi1QeURvY19TVFJWQVIoZG9jX3NvdXJjZV9mcm9tX2NhY2hlLAotInNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpIC0+IHBhdGhcblwKLUdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLlxuXAotXG5cCi1UaGUgLnB5Yy8ucHlvIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0b1xuXAotdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoXG5cCi1kb2VzIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4iKTsKIAogLyogRG9jIHN0cmluZ3MgKi8KIAogUHlEb2NfU1RSVkFSKGRvY19pbXAsCi0iVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHlvdXIgb3duXG5cCi1fX2ltcG9ydF9fIGZ1bmN0aW9uLiAgVW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBhcmUgb2Jzb2xldGUuIik7CisiKEV4dHJlbWVseSkgbG93LWxldmVsIGltcG9ydCBtYWNoaW5lcnkgYml0cyBhcyB1c2VkIGJ5IGltcG9ydGxpYiBhbmQgaW1wLiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2ZpbmRfbW9kdWxlLAotImZpbmRfbW9kdWxlKG5hbWUsIFtwYXRoXSkgLT4gKGZpbGUsIGZpbGVuYW1lLCAoc3VmZml4LCBtb2RlLCB0eXBlKSlcblwKLVNlYXJjaCBmb3IgYSBtb2R1bGUuICBJZiBwYXRoIGlzIG9taXR0ZWQgb3IgTm9uZSwgc2VhcmNoIGZvciBhXG5cCi1idWlsdC1pbiwgZnJvemVuIG9yIHNwZWNpYWwgbW9kdWxlIGFuZCBjb250aW51ZSBzZWFyY2ggaW4gc3lzLnBhdGguXG5cCi1UaGUgbW9kdWxlIG5hbWUgY2Fubm90IGNvbnRhaW4gJy4nOyB0byBzZWFyY2ggZm9yIGEgc3VibW9kdWxlIG9mIGFcblwKLXBhY2thZ2UsIHBhc3MgdGhlIHN1Ym1vZHVsZSBuYW1lIGFuZCB0aGUgcGFja2FnZSdzIF9fcGF0aF9fLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2xvYWRfbW9kdWxlLAotImxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCAoc3VmZml4LCBtb2RlLCB0eXBlKSkgLT4gbW9kdWxlXG5cCi1Mb2FkIGEgbW9kdWxlLCBnaXZlbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieSBmaW5kX21vZHVsZSgpLlxuXAotVGhlIG1vZHVsZSBuYW1lIG11c3QgaW5jbHVkZSB0aGUgZnVsbCBwYWNrYWdlIG5hbWUsIGlmIGFueS4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19nZXRfbWFnaWMsCi0iZ2V0X21hZ2ljKCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF90YWcsCi0iZ2V0X3RhZygpIC0+IHN0cmluZ1xuXAotUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19nZXRfc3VmZml4ZXMsCi0iZ2V0X3N1ZmZpeGVzKCkgLT4gWyhzdWZmaXgsIG1vZGUsIHR5cGUpLCAuLi5dXG5cCi1SZXR1cm4gYSBsaXN0IG9mIChzdWZmaXgsIG1vZGUsIHR5cGUpIHR1cGxlcyBkZXNjcmliaW5nIHRoZSBmaWxlc1xuXAotdGhhdCBmaW5kX21vZHVsZSgpIGxvb2tzIGZvci4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19uZXdfbW9kdWxlLAotIm5ld19tb2R1bGUobmFtZSkgLT4gbW9kdWxlXG5cCi1DcmVhdGUgYSBuZXcgbW9kdWxlLiAgRG8gbm90IGVudGVyIGl0IGluIHN5cy5tb2R1bGVzLlxuXAotVGhlIG1vZHVsZSBuYW1lIG11c3QgaW5jbHVkZSB0aGUgZnVsbCBwYWNrYWdlIG5hbWUsIGlmIGFueS4iKTsKK1B5RG9jX1NUUlZBUihkb2NfZXh0ZW5zaW9uX3N1ZmZpeGVzLAorImV4dGVuc2lvbl9zdWZmaXhlcygpIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAorUmV0dXJucyB0aGUgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIHVzZWQgdG8gaWRlbnRpZnkgZXh0ZW5zaW9uIG1vZHVsZXMuIik7CiAKIFB5RG9jX1NUUlZBUihkb2NfbG9ja19oZWxkLAogImxvY2tfaGVsZCgpIC0+IGJvb2xlYW5cblwKQEAgLTM3NDAsMTc5ICsxODMzLDI4IEBACiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGltcF9tZXRob2RzW10gPSB7Ci0gICAgeyJmaW5kX21vZHVsZSIsICAgICAgaW1wX2ZpbmRfbW9kdWxlLCAgTUVUSF9WQVJBUkdTLCBkb2NfZmluZF9tb2R1bGV9LAotICAgIHsiZ2V0X21hZ2ljIiwgICAgICAgIGltcF9nZXRfbWFnaWMsICAgIE1FVEhfTk9BUkdTLCAgZG9jX2dldF9tYWdpY30sCi0gICAgeyJnZXRfdGFnIiwgICAgICAgICAgaW1wX2dldF90YWcsICAgICAgTUVUSF9OT0FSR1MsICBkb2NfZ2V0X3RhZ30sCi0gICAgeyJnZXRfc3VmZml4ZXMiLCBpbXBfZ2V0X3N1ZmZpeGVzLCBNRVRIX05PQVJHUywgIGRvY19nZXRfc3VmZml4ZXN9LAotICAgIHsibG9hZF9tb2R1bGUiLCAgICAgIGltcF9sb2FkX21vZHVsZSwgIE1FVEhfVkFSQVJHUywgZG9jX2xvYWRfbW9kdWxlfSwKLSAgICB7Im5ld19tb2R1bGUiLCAgICAgICBpbXBfbmV3X21vZHVsZSwgICBNRVRIX1ZBUkFSR1MsIGRvY19uZXdfbW9kdWxlfSwKKyAgICB7ImV4dGVuc2lvbl9zdWZmaXhlcyIsIGltcF9leHRlbnNpb25fc3VmZml4ZXMsIE1FVEhfTk9BUkdTLAorICAgICAgICBkb2NfZXh0ZW5zaW9uX3N1ZmZpeGVzfSwKICAgICB7ImxvY2tfaGVsZCIsICAgICAgICBpbXBfbG9ja19oZWxkLCAgICBNRVRIX05PQVJHUywgIGRvY19sb2NrX2hlbGR9LAogICAgIHsiYWNxdWlyZV9sb2NrIiwgaW1wX2FjcXVpcmVfbG9jaywgTUVUSF9OT0FSR1MsICBkb2NfYWNxdWlyZV9sb2NrfSwKICAgICB7InJlbGVhc2VfbG9jayIsIGltcF9yZWxlYXNlX2xvY2ssIE1FVEhfTk9BUkdTLCAgZG9jX3JlbGVhc2VfbG9ja30sCi0gICAgeyJyZWxvYWQiLCAgICAgICBpbXBfcmVsb2FkLCAgICAgICBNRVRIX08sICAgICAgIGRvY19yZWxvYWR9LAotICAgIHsiY2FjaGVfZnJvbV9zb3VyY2UiLCAoUHlDRnVuY3Rpb24paW1wX2NhY2hlX2Zyb21fc291cmNlLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkb2NfY2FjaGVfZnJvbV9zb3VyY2V9LAotICAgIHsic291cmNlX2Zyb21fY2FjaGUiLCAoUHlDRnVuY3Rpb24paW1wX3NvdXJjZV9mcm9tX2NhY2hlLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkb2Nfc291cmNlX2Zyb21fY2FjaGV9LAotICAgIC8qIFRoZSByZXN0IGFyZSBvYnNvbGV0ZSAqLwogICAgIHsiZ2V0X2Zyb3plbl9vYmplY3QiLCAgICAgICBpbXBfZ2V0X2Zyb3plbl9vYmplY3QsICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiaXNfZnJvemVuX3BhY2thZ2UiLCAgIGltcF9pc19mcm96ZW5fcGFja2FnZSwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpbml0X2J1aWx0aW4iLCAgICAgICAgICAgIGltcF9pbml0X2J1aWx0aW4sICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpbml0X2Zyb3plbiIsICAgICAgICAgICAgIGltcF9pbml0X2Zyb3plbiwgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19idWlsdGluIiwgICAgICAgICAgICAgIGltcF9pc19idWlsdGluLCAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19mcm96ZW4iLCAgICAgICAgICAgICAgIGltcF9pc19mcm96ZW4sICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkX2NvbXBpbGVkIiwgICAgICAgICAgIGltcF9sb2FkX2NvbXBpbGVkLCAgICAgIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKICAgICB7ImxvYWRfZHluYW1pYyIsICAgICAgICAgICAgaW1wX2xvYWRfZHluYW1pYywgICAgICAgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgotICAgIHsibG9hZF9wYWNrYWdlIiwgICAgICAgICAgICBpbXBfbG9hZF9wYWNrYWdlLCAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsibG9hZF9zb3VyY2UiLCAgICAgICAgICAgICBpbXBfbG9hZF9zb3VyY2UsICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiX2ZpeF9jb19maWxlbmFtZSIsICAgICAgICBpbXBfZml4X2NvX2ZpbGVuYW1lLCAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBpbnQKLXNldGludChQeU9iamVjdCAqZCwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQotewotICAgIFB5T2JqZWN0ICp2OwotICAgIGludCBlcnI7Ci0KLSAgICB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKXZhbHVlKTsKLSAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBuYW1lLCB2KTsKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBlcnI7Ci19Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi19IE51bGxJbXBvcnRlcjsKLQotc3RhdGljIGludAotTnVsbEltcG9ydGVyX2luaXQoTnVsbEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0jaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqcGF0aDsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotICAgIGludCBydjsKLQotICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoIk51bGxJbXBvcnRlcigpIiwga3dkcykpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6TnVsbEltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHBhdGgpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJlbXB0eSBwYXRobmFtZSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcnYgPSBzdGF0KFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGgpLCAmc3RhdGJ1Zik7Ci0gICAgUHlfREVDUkVGKHBhdGgpOwotICAgIGlmIChydiA9PSAwKSB7Ci0gICAgICAgIC8qIGl0IGV4aXN0cyAqLwotICAgICAgICBpZiAoU19JU0RJUihzdGF0YnVmLnN0X21vZGUpKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJleGlzdGluZyBkaXJlY3RvcnkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBQeU9iamVjdCAqcGF0aG9iajsKLSAgICBEV09SRCBydjsKLSAgICB3Y2hhcl90ICpwYXRoOwotCi0gICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiTnVsbEltcG9ydGVyKCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOk51bGxJbXBvcnRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRob2JqKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShwYXRob2JqKSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImVtcHR5IHBhdGhuYW1lIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcocGF0aG9iaiwgTlVMTCk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIC8qIHNlZSBpc3N1ZTEyOTMgYW5kIGlzc3VlMzY3NzoKLSAgICAgKiBzdGF0KCkgb24gV2luZG93cyBkb2Vzbid0IHJlY29nbmlzZSBwYXRocyBsaWtlCi0gICAgICogImU6XFxzaGFyZWRcXCIgYW5kICJcXFxcd2hpdGVyYWItYzJ6bmxoXFxzaGFyZWQiIGFzIGRpcnMuCi0gICAgICovCi0gICAgcnYgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aCk7Ci0gICAgUHlNZW1fRnJlZShwYXRoKTsKLSAgICBpZiAocnYgIT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgIGlmIChydiAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgewotICAgICAgICAgICAgLyogaXQncyBhIGRpcmVjdG9yeSAqLwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiZXhpc3RpbmcgZGlyZWN0b3J5Iik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLU51bGxJbXBvcnRlcl9maW5kX21vZHVsZShOdWxsSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgTnVsbEltcG9ydGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImZpbmRfbW9kdWxlIiwgKFB5Q0Z1bmN0aW9uKU51bGxJbXBvcnRlcl9maW5kX21vZHVsZSwgTUVUSF9WQVJBUkdTLAotICAgICAiQWx3YXlzIHJldHVybiBOb25lIgotICAgIH0sCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotCi1QeVR5cGVPYmplY3QgUHlOdWxsSW1wb3J0ZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaW1wLk51bGxJbXBvcnRlciIsICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihOdWxsSW1wb3J0ZXIpLCAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAvKnRwX2ZsYWdzKi8KLSAgICAiTnVsbCBpbXBvcnRlciBvYmplY3QiLCAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIE51bGxJbXBvcnRlcl9tZXRob2RzLCAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKU51bGxJbXBvcnRlcl9pbml0LCAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3ICAgICAgICAgIC8qIHRwX25ldyAqLwotfTsKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBpbXBtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJpbXAiLAorICAgICJfaW1wIiwKICAgICBkb2NfaW1wLAogICAgIDAsCiAgICAgaW1wX21ldGhvZHMsCkBAIC0zOTI3LDkgKzE4NjksNiBAQAogewogICAgIFB5T2JqZWN0ICptLCAqZDsKIAotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TnVsbEltcG9ydGVyX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZpbXBtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbHVyZTsKQEAgLTM5MzcsMTkgKzE4NzYsNiBAQAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbHVyZTsKIAotICAgIGlmIChzZXRpbnQoZCwgIlNFQVJDSF9FUlJPUiIsIFNFQVJDSF9FUlJPUikgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiUFlfU09VUkNFIiwgUFlfU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9DT01QSUxFRCIsIFBZX0NPTVBJTEVEKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJDX0VYVEVOU0lPTiIsIENfRVhURU5TSU9OKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9SRVNPVVJDRSIsIFBZX1JFU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQS0dfRElSRUNUT1JZIiwgUEtHX0RJUkVDVE9SWSkgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiQ19CVUlMVElOIiwgQ19CVUlMVElOKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9GUk9aRU4iLCBQWV9GUk9aRU4pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0NPREVSRVNPVVJDRSIsIFBZX0NPREVSRVNPVVJDRSkgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiSU1QX0hPT0siLCBJTVBfSE9PSykgPCAwKSBnb3RvIGZhaWx1cmU7Ci0KLSAgICBQeV9JTkNSRUYoJlB5TnVsbEltcG9ydGVyX1R5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTnVsbEltcG9ydGVyIiwgKFB5T2JqZWN0ICopJlB5TnVsbEltcG9ydGVyX1R5cGUpOwogICAgIHJldHVybiBtOwogICBmYWlsdXJlOgogICAgIFB5X1hERUNSRUYobSk7CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0ZGwuYyBiL1B5dGhvbi9pbXBvcnRkbC5jCmluZGV4IDljYWVkNDUuLjk0MmU0YjggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRkbC5jCisrKyBiL1B5dGhvbi9pbXBvcnRkbC5jCkBAIC0xMiw1MCArMTIsNzMgQEAKIAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKLWV4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApOworI2Vsc2UKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKLQotCisjZW5kaWYKIAogUHlPYmplY3QgKgotX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK19QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIEZJTEUgKmZwKQogewotICAgIFB5T2JqZWN0ICptOwotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIGNoYXIgKmxhc3Rkb3QsICpzaG9ydG5hbWUsICpwYWNrYWdlY29udGV4dCwgKm9sZGNvbnRleHQ7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKnBhdGhieXRlczsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpuYW1lYXNjaWk7CisgICAgY2hhciAqbmFtZXN0ciwgKmxhc3Rkb3QsICpzaG9ydG5hbWUsICpwYWNrYWdlY29udGV4dCwgKm9sZGNvbnRleHQ7CiAgICAgZGxfZnVuY3B0ciBwMDsKICAgICBQeU9iamVjdCogKCpwKSh2b2lkKTsKICAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgcGF0aCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOwotICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgbSA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWUsIHBhdGgpOworICAgIGlmIChtICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKG0pOworICAgICAgICByZXR1cm4gbTsKKyAgICB9CisKKyAgICAvKiBuYW1lIG11c3QgYmUgZW5jb2RhYmxlIHRvIEFTQ0lJIGJlY2F1c2UgZHluYW1pYyBtb2R1bGUgbXVzdCBoYXZlIGEKKyAgICAgICBmdW5jdGlvbiBjYWxsZWQgIlB5SW5pdF9OQU1FIiwgdGhleSBhcmUgd3JpdHRlbiBpbiBDLCBhbmQgdGhlIEMgbGFuZ3VhZ2UKKyAgICAgICBkb2Vzbid0IGFjY2VwdCBub24tQVNDSUkgaWRlbnRpZmllcnMuICovCisgICAgbmFtZWFzY2lpID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAiYXNjaWkiLCBOVUxMKTsKKyAgICBpZiAobmFtZWFzY2lpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKChtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKG5hbWUsIHBhdGgpKSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgcmVzdWx0ID0gbTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBsYXN0ZG90ID0gc3RycmNocihuYW1lLCAnLicpOworICAgIG5hbWVzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhuYW1lYXNjaWkpOworICAgIGlmIChuYW1lc3RyID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBsYXN0ZG90ID0gc3RycmNocihuYW1lc3RyLCAnLicpOwogICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKICAgICAgICAgcGFja2FnZWNvbnRleHQgPSBOVUxMOwotICAgICAgICBzaG9ydG5hbWUgPSBuYW1lOworICAgICAgICBzaG9ydG5hbWUgPSBuYW1lc3RyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcGFja2FnZWNvbnRleHQgPSBuYW1lOworICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWVzdHI7CiAgICAgICAgIHNob3J0bmFtZSA9IGxhc3Rkb3QrMTsKICAgICB9CiAKLSAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhuYW1lLCBzaG9ydG5hbWUsIHBhdGhuYW1lLCBmcCk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKHNob3J0bmFtZSwgcGF0aCwgZnApOworI2Vsc2UKKyAgICBwYXRoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOworICAgIGlmIChwYXRoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwgZnApOworICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOworI2VuZGlmCiAgICAgcCA9IChQeU9iamVjdCooKikodm9pZCkpcDA7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKHAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgaW5pdCBmdW5jdGlvbiAoUHlJbml0XyUuMjAwcykiLAotICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXQgZnVuY3Rpb24gKFB5SW5pdF8lcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBuYW1lLCBwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKG1zZyk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIG9sZGNvbnRleHQgPSBfUHlfUGFja2FnZUNvbnRleHQ7CkBAIC02Niw3ICs4OSw2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAogICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKQEAgLTgzLDIwICsxMDUsMTUgQEAKICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihwYXRoKTsKIAotICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKG0sIG5hbWUsIHBhdGgpIDwgMCkKKyAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG0sIG5hbWUsIHBhdGgpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgImltcG9ydCAlcyAjIGR5bmFtaWNhbGx5IGxvYWRlZCBmcm9tICVzXG4iLAotICAgICAgICAgICAgbmFtZSwgcGF0aG5hbWUpOwotICAgIHJlc3VsdCA9IG07Ci0gICAgZ290byBmaW5hbGx5OworICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIHJldHVybiBtOwogCiBlcnJvcjoKLSAgICByZXN1bHQgPSBOVUxMOwotZmluYWxseToKLSAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBQeV9ERUNSRUYobmFtZWFzY2lpKTsKKyAgICBQeV9YREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOwogfQogCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5oIGIvUHl0aG9uL2ltcG9ydGRsLmgKaW5kZXggYjRkMjFiZS4uNmI5Y2Y3NSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmgKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmgKQEAgLTYsMjkgKzYsOSBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5pdGlvbnMgZm9yIGR5bmFtaWMgbG9hZGluZyBvZiBleHRlbnNpb24gbW9kdWxlcyAqLwotZW51bSBmaWxldHlwZSB7Ci0gICAgU0VBUkNIX0VSUk9SLAotICAgIFBZX1NPVVJDRSwKLSAgICBQWV9DT01QSUxFRCwKLSAgICBDX0VYVEVOU0lPTiwKLSAgICBQWV9SRVNPVVJDRSwgLyogTWFjIG9ubHkgKi8KLSAgICBQS0dfRElSRUNUT1JZLAotICAgIENfQlVJTFRJTiwKLSAgICBQWV9GUk9aRU4sCi0gICAgUFlfQ09ERVJFU09VUkNFLCAvKiBNYWMgb25seSAqLwotICAgIElNUF9IT09LCi19OworZXh0ZXJuIGNvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdOwogCi1zdHJ1Y3QgZmlsZWRlc2NyIHsKLSAgICBjaGFyICpzdWZmaXg7Ci0gICAgY2hhciAqbW9kZTsKLSAgICBlbnVtIGZpbGV0eXBlIHR5cGU7Ci19OwotZXh0ZXJuIHN0cnVjdCBmaWxlZGVzY3IgKiBfUHlJbXBvcnRfRmlsZXRhYjsKLWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdOwotCi1leHRlcm4gUHlPYmplY3QgKl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShjaGFyICpuYW1lLCBjaGFyICpwYXRobmFtZSwKK2V4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICopOwogCiAvKiBNYXggbGVuZ3RoIG9mIG1vZHVsZSBzdWZmaXggc2VhcmNoZWQgZm9yIC0tIGFjY29tbW9kYXRlcyAibW9kdWxlLnNsYiIgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWIuaCBiL1B5dGhvbi9pbXBvcnRsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTFlNDVjCi0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2ltcG9ydGxpYi5oCkBAIC0wLDAgKzEsNDQxMSBAQAorLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCit1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyMDAsMywwLDAsMTAwLDAsMCw5MCwwLDAsCisgICAgMTAwLDEyOSwwLDkwLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKKyAgICAyLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsMywwLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMzIsMCwwLDkwLDUsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAorICAgIDYsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTYsCisgICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTgsMCwxMDAsMTksMCwKKyAgICAxMzIsMCwwLDkwLDksMCwxMDAsMjAsMCwxMDAsMjEsMCwxMDAsMjIsMCwxMzIsCisgICAgMSwwLDkwLDEwLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDAsMCw5MCwxMSwKKyAgICAwLDEwMSwxMiwwLDEwMSwxMSwwLDEwNiwxMywwLDEzMSwxLDAsOTAsMTQsMCwKKyAgICAxMDAsMjUsMCwxMDAsMjYsMCwxMzIsMCwwLDkwLDE1LDAsMTA1LDAsMCw5MCwKKyAgICAxNiwwLDEwNSwwLDAsOTAsMTcsMCw3MSwxMDAsMjcsMCwxMDAsMjgsMCwxMzIsCisgICAgMCwwLDEwMCwyOCwwLDEwMSwxOCwwLDEzMSwzLDAsOTAsMTksMCw3MSwxMDAsCisgICAgMjksMCwxMDAsMzAsMCwxMzIsMCwwLDEwMCwzMCwwLDEzMSwyLDAsOTAsMjAsCisgICAgMCw3MSwxMDAsMzEsMCwxMDAsMzIsMCwxMzIsMCwwLDEwMCwzMiwwLDEzMSwyLAorICAgIDAsOTAsMjEsMCwxMDAsMzMsMCwxMDAsMzQsMCwxMzIsMCwwLDkwLDIyLDAsCisgICAgMTAwLDM1LDAsMTAwLDM2LDAsMTMyLDAsMCw5MCwyMywwLDEwMCwzNywwLDEwMCwKKyAgICAzOCwwLDEzMiwwLDAsOTAsMjQsMCwxMDAsMzksMCwxMDEsMjUsMCwxMDAsNDAsCisgICAgMCwxMzEsMSwwLDEwMCw0MSwwLDYyLDY2LDEwMSwyNSwwLDEwMCw0MiwwLDEzMSwKKyAgICAxLDAsMTAwLDQzLDAsNjIsNjYsOTAsMjYsMCwxMDEsMjcsMCwxMDAsNDQsMCwKKyAgICAxMDAsNDUsMCwxMzIsMCwwLDEwMSwyOCwwLDEwMCw0NiwwLDEwMCw0NywwLDEwMCwKKyAgICA0OCwwLDEzMSwzLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDkwLDI5LDAsMTAwLAorICAgIDQ5LDAsOTAsMzAsMCwxMDAsNTAsMCwxMDMsMSwwLDkwLDMxLDAsMTAwLDUxLAorICAgIDAsMTAzLDEsMCw5MCwzMiwwLDEwMCw1MiwwLDEwMywxLDAsOTAsMzMsMCwKKyAgICAxMDAsMTI4LDAsMTAwLDUzLDAsMTAwLDU0LDAsMTMyLDEsMCw5MCwzNSwwLDEwMCwKKyAgICA1NSwwLDEwMCw1NiwwLDEzMiwwLDAsOTAsMzYsMCwxMDAsNTcsMCwxMDAsNTgsCisgICAgMCwxMzIsMCwwLDkwLDM3LDAsMTAwLDU5LDAsMTAwLDYwLDAsMTMyLDAsMCwKKyAgICA5MCwzOCwwLDEwMCw2MSwwLDEwMCw2MiwwLDEzMiwwLDAsOTAsMzksMCwxMDAsCisgICAgNjMsMCwxMDAsNjQsMCwxMzIsMCwwLDkwLDQwLDAsMTAwLDY1LDAsMTAwLDY2LAorICAgIDAsMTMyLDAsMCw5MCw0MSwwLDEwMCw2NywwLDEwMCw2OCwwLDEzMiwwLDAsCisgICAgOTAsNDIsMCwxMDAsNjksMCwxMDAsNzAsMCwxMzIsMCwwLDkwLDQzLDAsMTAwLAorICAgIDcxLDAsMTAwLDcyLDAsMTMyLDAsMCw5MCw0NCwwLDEwMCw3MywwLDEwMCw3NCwKKyAgICAwLDEzMiwwLDAsOTAsNDUsMCw3MSwxMDAsNzUsMCwxMDAsNzYsMCwxMzIsMCwKKyAgICAwLDEwMCw3NiwwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzcsMCwxMDAsNzgsCisgICAgMCwxMzIsMCwwLDEwMCw3OCwwLDEzMSwyLDAsOTAsNDcsMCw3MSwxMDAsNzksCisgICAgMCwxMDAsODAsMCwxMzIsMCwwLDEwMCw4MCwwLDEzMSwyLDAsOTAsNDgsMCwKKyAgICA3MSwxMDAsODEsMCwxMDAsODIsMCwxMzIsMCwwLDEwMCw4MiwwLDEzMSwyLDAsCisgICAgOTAsNDksMCw3MSwxMDAsODMsMCwxMDAsODQsMCwxMzIsMCwwLDEwMCw4NCwwLAorICAgIDEwMSw0OSwwLDEzMSwzLDAsOTAsNTAsMCw3MSwxMDAsODUsMCwxMDAsODYsMCwKKyAgICAxMzIsMCwwLDEwMCw4NiwwLDEzMSwyLDAsOTAsNTEsMCw3MSwxMDAsODcsMCwKKyAgICAxMDAsODgsMCwxMzIsMCwwLDEwMCw4OCwwLDEwMSw1MSwwLDEwMSw1MCwwLDEzMSwKKyAgICA0LDAsOTAsNTIsMCw3MSwxMDAsODksMCwxMDAsOTAsMCwxMzIsMCwwLDEwMCwKKyAgICA5MCwwLDEwMSw1MSwwLDEwMSw0OSwwLDEzMSw0LDAsOTAsNTMsMCwxMDMsMCwKKyAgICAwLDkwLDU0LDAsNzEsMTAwLDkxLDAsMTAwLDkyLDAsMTMyLDAsMCwxMDAsOTIsCisgICAgMCwxMzEsMiwwLDkwLDU1LDAsNzEsMTAwLDkzLDAsMTAwLDk0LDAsMTMyLDAsCisgICAgMCwxMDAsOTQsMCwxMzEsMiwwLDkwLDU2LDAsNzEsMTAwLDk1LDAsMTAwLDk2LAorICAgIDAsMTMyLDAsMCwxMDAsOTYsMCwxMzEsMiwwLDkwLDU3LDAsNzEsMTAwLDk3LAorICAgIDAsMTAwLDk4LDAsMTMyLDAsMCwxMDAsOTgsMCwxMzEsMiwwLDkwLDU4LDAsCisgICAgNzEsMTAwLDk5LDAsMTAwLDEwMCwwLDEzMiwwLDAsMTAwLDEwMCwwLDEzMSwyLDAsCisgICAgOTAsNTksMCw3MSwxMDAsMTAxLDAsMTAwLDEwMiwwLDEzMiwwLDAsMTAwLDEwMiwwLAorICAgIDEzMSwyLDAsOTAsNjAsMCwxMDAsMTAzLDAsMTAwLDEwNCwwLDEzMiwwLDAsOTAsCisgICAgNjEsMCwxMDAsMTA1LDAsMTAwLDEwNiwwLDEzMiwwLDAsOTAsNjIsMCwxMDAsMTA3LAorICAgIDAsMTAwLDEwOCwwLDEzMiwwLDAsOTAsNjMsMCwxMDAsMTA5LDAsOTAsNjQsMCwKKyAgICAxMDAsMTEwLDAsMTAwLDExMSwwLDEzMiwwLDAsOTAsNjUsMCwxMDAsMTEyLDAsMTAwLAorICAgIDExMywwLDEzMiwwLDAsOTAsNjYsMCwxMDAsMTI4LDAsMTAwLDQ2LDAsMTAwLDExNCwKKyAgICAwLDEwMCwxMTUsMCwxMzIsMiwwLDkwLDY3LDAsMTAwLDExNiwwLDEwMCwxMTcsMCwKKyAgICAxMzIsMCwwLDkwLDY4LDAsMTAwLDExOCwwLDEwMCwxMTksMCwxMzIsMCwwLDkwLAorICAgIDY5LDAsMTAwLDEyMCwwLDEwMCwxMjEsMCwxMzIsMCwwLDkwLDcwLDAsMTAwLDEyOCwKKyAgICAwLDEwMCwxMjgsMCwxMDIsMCwwLDEwMCw0NiwwLDEwMCwxMjIsMCwxMDAsMTIzLDAsCisgICAgMTMyLDQsMCw5MCw3MSwwLDEwMCwxMjQsMCwxMDAsMTI1LDAsMTMyLDAsMCw5MCwKKyAgICA3MiwwLDEwMCwxMjYsMCwxMDAsMTI3LDAsMTMyLDAsMCw5MCw3MywwLDEwMCwxMjgsCisgICAgMCw4Myw0MCwxMzAsMCwwLDAsMTE3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LAorICAgIDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKKyAgICAxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwKKyAgICAzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLAorICAgIDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiwKKyAgICA5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiwKKyAgICA5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsCisgICAgMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LAorICAgIDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LAorICAgIDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsCisgICAgMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLAorICAgIDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwxMTcsCisgICAgMywwLDAsMCwxMTksMTA1LDExMCwxMTcsNiwwLDAsMCw5OSwxMjEsMTAzLDExOSwKKyAgICAxMDUsMTEwLDExNyw2LDAsMCwwLDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDksMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsCisgICAgMTE2LDMsMCwxMzEsMSwwLDExNCwzMywwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCisgICAgMCwwLDEyNSwwLDAsMTEwLDEyLDAsMTAwLDMsMCwxMDAsMiwwLDEzMiwwLAorICAgIDAsMTI1LDAsMCwxMjQsMCwwLDgzLDQwLDQsMCwwLDAsNzgsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw4MywKKyAgICAwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDEsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTA3LDYsMCw4Myw0MCwyLDAsMCwwLDExNyw1MywwLDAsMCw4NCwKKyAgICAxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLAorICAgIDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LAorICAgIDEwMSwxMDgsMTIxLDQ2LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2NywKKyAgICA2NSw4Myw2OSw3OSw3NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk1LAorICAgIDExMSwxMTUsMTE3LDcsMCwwLDAsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzQsCisgICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywzNywwLDAsMCw5NSwKKyAgICAxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSw0NiwKKyAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICAwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsMCwwLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNzAsNDAsMSwwLDAsMCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LAorICAgIDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywKKyAgICAxMTUsMTAxLDM4LDAsMCwwLDExNSwyLDAsMCwwLDAsMiw0MCw0LDAsCisgICAgMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw4LDAsMCwwLDExMiwKKyAgICAxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywxMTQsCisgICAgMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDI3LDAsMCwwLDk1LDY3LDY1LDgzLDY5LAorICAgIDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LAorICAgIDg0LDcwLDc5LDgyLDc3LDgzLDQwLDEsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwOSw5NywxMDcsCisgICAgMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMyLDAsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsMSwxOCwxLDE1LDQsMTIsMywxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LAorICAgIDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTA4LDAsMCwwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDEyNSwwLDAsMTAzLDAsMCwxMjUsMSwwLDEyNCwxLAorICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDEyNCwKKyAgICAxLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwyLDAsNjMsMTAwLDEsMCw2NCwKKyAgICAxMzEsMSwwLDEsMTI0LDEsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDMsMCwKKyAgICA2MywxMDAsMSwwLDY0LDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwxLDAsMTI0LAorICAgIDAsMCwxMDAsNCwwLDYzLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDExNiwyLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDUsMCwwLDAsMTE3LDExMSwwLAorICAgIDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwKKyAgICAxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsCisgICAgMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODgsODgsODgsMzIsODQsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLAorICAgIDExNywxMTAsMTE2LDEwNSwxMDgsMzIsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwzOSwxMTUsMzIsCisgICAgMTA4LDExMSwxMTAsMTAzLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMDEsMTIwLDExMiwxMTEsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMTA1LDI1NSwwLDAsMCwxMDUsOCwwLDAsMCwxMDUsMTYsMCwwLDAsCisgICAgMTA1LDI0LDAsMCwwLDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsMTA1LAorICAgIDExMCwxMTYsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsOSwwLAorICAgIDAsMCw5OCwxMjEsMTE2LDEwMSw5NywxMTQsMTE0LDk3LDEyMSw0MCwyLDAsMCwwLAorICAgIDExNywxLDAsMCwwLDEyMCwxMTcsOSwwLDAsMCwxMDUsMTEwLDExNiw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSwxMTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ1LDAsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDYsMTIsMSw2LDEsMTcsMSwyMSwxLDIxLAorICAgIDEsMjEsMSwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDY4LDAsMCwwLDEyNCwwLDAsMTAwLDEsMCwyNSwKKyAgICAxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsMiwwLDI1LDEwMCwzLDAsCisgICAgNjIsNzksMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDQsMCwyNSwxMDAsCisgICAgNSwwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCw2LDAsCisgICAgMjUsMTAwLDcsMCw2Miw3OSwxMjUsMSwwLDEyNCwxLDAsODMsNDAsOCwwLAorICAgIDAsMCwxMTcsMTE1LDAsMCwwLDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDUyLAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsMTA1LDExMCwKKyAgICAxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg4LDg4LDg4LDMyLAorICAgIDg0LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwxMTcsMTEwLDExNiwxMDUsMTA4LDMyLAorICAgIDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsMzksMTE1LDMyLDEwOCwxMTEsMTEwLDEwMywzMiwxMDIsCisgICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExMiwxMTEsCisgICAgMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDAsMCwwLDAsMTA1LAorICAgIDEsMCwwLDAsMTA1LDgsMCwwLDAsMTA1LDIsMCwwLDAsMTA1LDE2LAorICAgIDAsMCwwLDEwNSwzLDAsMCwwLDEwNSwyNCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDQwLDIsMCwwLDAsMTE3LDksMCwwLDAsMTA1LDExMCwxMTYsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDExNywxLDAsMCwwLDEyMCw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsCisgICAgMTExLDExMCwxMDMsNjEsMCwwLDAsMTE1LDEwLDAsMCwwLDAsNiwxMCwxLAorICAgIDE4LDEsMTgsMSwxOCwxLDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLAorICAgIDExMCwxMDMsOTksMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwKKyAgICAwLDAsMCw3MSwwLDAsMCwxMTUsMTAzLDAsMCwwLDEwMywwLDAsMTI1LAorICAgIDEsMCwxMjAsNzEsMCwxMjQsMCwwLDY4LDkzLDYzLDAsMTI1LDIsMCwxMjQsCisgICAgMiwwLDExNSwzMSwwLDExMywxMywwLDExMCwwLDAsMTI0LDEsMCwxMDYsMCwKKyAgICAwLDEyNCwyLDAsMTMxLDEsMCwxLDEyNCwyLDAsMTAwLDQsMCwyNSwxMTYsCisgICAgMSwwLDEwNyw3LDAsMTE0LDEzLDAsMTI0LDEsMCwxMDYsMCwwLDExNiwyLAorICAgIDAsMTMxLDEsMCwxLDExMywxMywwLDExMywxMywwLDg3LDEwMCwyLDAsMTA2LAorICAgIDMsMCwxMjQsMSwwLDEwMCwzLDAsMTAwLDUsMCwxMzMsMiwwLDI1LDEzMSwKKyAgICAxLDAsODMsNDAsNiwwLDAsMCwxMTcsMzEsMCwwLDAsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwxMDUsMSwwLDAsCisgICAgMCwxMTcsMCwwLDAsMCw3OCwxMDUsMjU1LDI1NSwyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwKKyAgICAyNTUsNDAsNCwwLDAsMCwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDExNywxNSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsCisgICAgOTcsMTE2LDExMSwxMTQsMTE1LDExNyw4LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwKKyAgICAxMDEsMTEyLDExNyw0LDAsMCwwLDEwNiwxMTEsMTA1LDExMCw0MCwzLDAsMCwwLAorICAgIDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LAorICAgIDksMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTQsMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LAorICAgIDExMCw3NCwwLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDYsMSwxMywxLAorICAgIDYsMSw2LDEsMTMsMSwxNiwxLDIwLDEsMTE3LDEwLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw4NSwKKyAgICAwLDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCw2OCwKKyAgICA5MywyOCwwLDEyNSwxLDAsMTI0LDEsMCwxMTYsMSwwLDEwNyw2LDAsMTE0LAorICAgIDEzLDAsMTI0LDEsMCwxMjUsMiwwLDgwLDExMywxMywwLDExMywxMywwLDg3LAorICAgIDExNiwyLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDIsMCwxMzEsCisgICAgMSwwLDkyLDMsMCwxMjUsMywwLDEyNSw0LDAsMTI1LDUsMCwxMjQsMywKKyAgICAwLDEyNCw1LDAsMTAyLDIsMCw4Myw0MCwxLDAsMCwwLDExNywzMiwwLAorICAgIDAsMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCwKKyAgICA0MSw0Niw0MCw0LDAsMCwwLDExNyw4LDAsMCwwLDExNCwxMDEsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwMSwxMDAsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsCisgICAgMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTE1LDEwMSwxMTIsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsCisgICAgMTE2LDEwNSwxMTEsMTEwLDQwLDYsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDEsMCwwLDAsMTIwLDExNywzLDAsMCwwLDExNSwxMDEsMTEyLAorICAgIDExNyw1LDAsMCwwLDEwMiwxMTQsMTExLDExMCwxMTYsMTE3LDEsMCwwLDAsOTUsCisgICAgMTE3LDQsMCwwLDAsMTE2LDk3LDEwNSwxMDgsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExMiwxMDgsMTA1LDExNiw4NiwwLDAsMCwxMTUsMTQsMCwwLDAsMCwyLAorICAgIDE5LDEsMTIsMSw2LDEsOCwyLDYsMSwyNCwxLDExNywxMSwwLDAsCisgICAgMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw2MSwwLDAsMCwxMjEsMTksMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsMiwwLAorICAgIDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDEwMCwyLDAsODMsODksMTEwLDEsCisgICAgMCw4OCwxMjQsMiwwLDEwNiw0LDAsMTAwLDEsMCw2NCwxMjQsMSwwLDEwNywKKyAgICAyLDAsODMsNDAsMywwLDAsMCwxMTcsNDksMCwwLDAsODQsMTAxLDExNSwKKyAgICAxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKKyAgICAxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDEwNSwwLAorICAgIDI0MCwwLDAsNzAsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsCisgICAgMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LDExNyw3LDAsMCwwLDc5LAorICAgIDgzLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwKKyAgICAxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLDEwMSw0MCwzLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwOSwKKyAgICAxMTEsMTAwLDEwMSwxMTcsOSwwLDAsMCwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwKKyAgICAxMTEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwKKyAgICAwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCisgICAgMTE2LDEyMSwxMTIsMTAxLDk4LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKKyAgICAxLDE5LDEsMTMsMSw5LDEsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsCisgICAgMCwxMzEsMiwwLDgzLDQwLDIsMCwwLDAsMTE3LDMxLDAsMCwwLDgyLAorICAgIDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMCwKKyAgICAxMjgsMCwwLDQwLDEsMCwwLDAsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDEwOCwwLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDIsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLAorICAgIDEyNCwwLDAsMTE1LDIxLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LAorICAgIDAsMCwxMTAsMCwwLDExNiwyLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsMzAsMCwwLDAsODIsMTAxLDExMiwxMDgsCisgICAgOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsNjQsMCwwLDQwLAorICAgIDMsMCwwLDAsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNiwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5OSwxMTksMTAwLDExNywxOCwwLDAsMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsNDAsMSwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNCwwLDAsMCwxMTUsNiwwLDAsCisgICAgMCwwLDIsNiwxLDE1LDEsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTkyLDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDExNiwKKyAgICAxLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsMTI1LDMsMCwxMTYsMiwKKyAgICAwLDEwNiwzLDAsMTI0LDMsMCwxMTYsMiwwLDEwNiw0LDAsMTE2LDIsMCwKKyAgICAxMDYsNSwwLDY2LDExNiwyLDAsMTA2LDYsMCw2NiwxMjQsMiwwLDEwMCwyLAorICAgIDAsNjQsMTMxLDMsMCwxMjUsNCwwLDEyMSw2MCwwLDExNiw3LDAsMTA2LDgsCisgICAgMCwxMjQsNCwwLDEwMCwzLDAsMTMxLDIsMCwxNDMsMjAsMCwxMjUsNSwwLAorICAgIDEyNCw1LDAsMTA2LDksMCwxMjQsMSwwLDEzMSwxLDAsMSw4NywxMDAsNCwKKyAgICAwLDgxLDg4LDExNiwyLDAsMTA2LDEwLDAsMTI0LDMsMCwxMjQsMCwwLDEzMSwKKyAgICAyLDAsMSw4NywxMTAsNTksMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODcsCisgICAgMCwxLDEsMSwxMjEsMTcsMCwxMTYsMiwwLDEwNiwxMiwwLDEyNCwzLDAsCisgICAgMTMxLDEsMCwxLDg3LDExMCwxOCwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LAorICAgIDE3OSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTMwLDAsMCw4OSwxMTAsMSwKKyAgICAwLDg4LDEwMCw0LDAsODMsNDAsNSwwLDAsMCwxMTcsMTYyLDAsMCwwLAorICAgIDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTcsMTEwLDk5LAorICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMzIsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNiwxMTEsCisgICAgMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiw2NiwxMDEsMzIsCisgICAgMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LDExNCwxMTQsMTAxLAorICAgIDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsCisgICAgMTAwLDQ2LDExNyw1LDAsMCwwLDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwKKyAgICAwLDExNywyLDAsMCwwLDExOSw5OCw3OCw0MCwxMywwLDAsMCwxMTcsNiwKKyAgICAwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywyLDAsMCwwLDEwNSwxMDAsCisgICAgMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTEsMTEyLDEwMSwKKyAgICAxMTAsMTE3LDYsMCwwLDAsNzksOTUsNjksODgsNjcsNzYsMTE3LDcsMCwwLAorICAgIDAsNzksOTUsNjcsODIsNjksNjUsODQsMTE3LDgsMCwwLDAsNzksOTUsODcsCisgICAgODIsNzksNzgsNzYsODksMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsNiwwLAorICAgIDAsMCw3MCwxMDUsMTA4LDEwMSw3Myw3OSwxMTcsNSwwLDAsMCwxMTksMTE0LDEwNSwKKyAgICAxMTYsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE3LDcsCisgICAgMCwwLDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDExNywKKyAgICAxMTAsMTA4LDEwNSwxMTAsMTA3LDQwLDYsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsNCwwLDAsCisgICAgMCwxMDksMTExLDEwMCwxMDEsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE2LAorICAgIDEwOSwxMTIsMTE3LDIsMCwwLDAsMTAyLDEwMCwxMTcsNCwwLDAsMCwxMDIsMTA1LAorICAgIDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTMsCisgICAgMCwwLDAsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksCisgICAgMTIxLDAsMCwwLDExNSwyNiwwLDAsMCwwLDUsMjQsMSw5LDEsMzMsCisgICAgMSwzLDMsMjEsMSwxOSwxLDIwLDEsMTMsMSwzLDEsMTcsMSwxMywKKyAgICAxLDUsMSwxMTcsMTMsMCwwLDAsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywKKyAgICAxMTYsMTExLDEwOSwxMDUsOTksOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsNywwLDAsMCw2NywwLDAsMCwxMTUsOTUsMCwwLDAsMTIwLAorICAgIDY5LDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwKKyAgICAwLDY4LDkzLDQ5LDAsMTI1LDIsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsCisgICAgMCwxMzEsMiwwLDExNCwxOSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLAorICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTMxLDMsMCwxLAorICAgIDExMywxOSwwLDExMywxOSwwLDg3LDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLAorICAgIDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsMTAwLDUsMCw4Myw0MCw2LAorICAgIDAsMCwwLDExNyw0NywwLDAsMCw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKKyAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCisgICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsCisgICAgNzgsNDAsNSwwLDAsMCwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNyw3LDAsMCwwLDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw3LAorICAgIDAsMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDExNyw2LDAsMCwwLDExNywxMTIsMTAwLDk3LAorICAgIDExNiwxMDEsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwxMTAsMTAxLDExOSwxMTcsCisgICAgMywwLDAsMCwxMTEsMTA4LDEwMCwxMTcsNywwLDAsMCwxMTQsMTAxLDExMiwxMDgsCisgICAgOTcsOTksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsMTQzLDAsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMiwyNSwxLDE1LDEsMzIsMSwxMTcsNSwwLDAsMCw5NSwKKyAgICAxMTksMTE0LDk3LDExMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwKKyAgICAwLDExNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsNDAsMSwKKyAgICAwLDAsMCwxMTcsNzUsMCwwLDAsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LAorICAgIDMyLDExMCwxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMDEsMTEwLDExNiwxMDEsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNiwxMjEsMTEyLAorICAgIDEwMSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDQwLDEsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTU0LDAsMCwwLDExNSwyLDAsMCwwLDAsNiwxMTcsMTAsMCwKKyAgICAwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NiwwLDAsCisgICAgMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDc4LDQwLDMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSwKKyAgICA5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMTcxLDAsMCwwLDExNSwyLDAsMCwKKyAgICAwLDE2LDEsMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsNjksMTE0LDExNCwxMTEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDg2LDAsMCwwLAorICAgIDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCisgICAgOCwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywxMSwwLDAsMCwKKyAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDE2OSwwLDAsMCwKKyAgICA2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsCisgICAgMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsMTA0LDExNCwxMDEsCisgICAgOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMzIsMTE2LAorICAgIDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwxMDQsMTAxLDExMCwKKyAgICAzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNTAsCisgICAgMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsCisgICAgOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LDEwNCwxMDEsMTEwLAorICAgIDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDcwLAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsCisgICAgMiwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsMywKKyAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSw0LDAsMTAwLDAsMCwxMjQsMCwwLAorICAgIDk1LDYsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNywwLDEwMCwxLDAsMTI0LAorICAgIDAsMCw5NSw4LDAsMTAwLDAsMCw4Myw0MCwyLDAsMCwwLDc4LDEwNSwKKyAgICAwLDAsMCwwLDQwLDksMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsMTMsMCwwLDAsOTcsMTA4LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsNiwwLDAsMCwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LDAsCisgICAgMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsCisgICAgMTE2LDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LDQwLDIsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE4MSwwLDAsCisgICAgMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwxLAorICAgIDksMSwxMTcsMjAsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw4NywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw1OSwwLDExNiwzLDAsCisgICAgMTA2LDQsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwKKyAgICAwLDAsMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LAorICAgIDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwKKyAgICAwLDEwMCwyLDAsODMsMTEzLDI0LDAsMTAwLDAsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDc4LDcwLDg0LDQwLDgsMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsOSwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLAorICAgIDEwMSwxMTAsMTE2LDExNyw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDEyLDAsCisgICAgMCwwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDMsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LAorICAgIDExNywxMDEsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDIsMCwwLDAsMTA5LDEwMSwxMTcsMywwLDAsMCwxMTYsMTA1LDEwMCwxMTcsCisgICAgNCwwLDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsCisgICAgMTAwLDEwOCwxMTEsOTksMTA3LDE4OSwwLDAsMCwxMTUsMTgsMCwwLDAsMCwyLAorICAgIDEyLDEsOSwxLDMsMSwxNSwxLDEyLDEsNCwxLDksMSwxMiwxLAorICAgIDExNywyNCwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNDYsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLAorICAgIDEyNSwxLDAsMTI0LDAsMCwxMTYsMiwwLDEyNCwxLDAsNjAsMTIyLDE3NywwLAorICAgIDEyMCwxNzAsMCwxMjQsMCwwLDEwNiwzLDAsMTQzLDEzMCwwLDEsMTI0LDAsMCwKKyAgICAxMDYsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTUsNjgsMCwxMjQsMCwwLDEwNiwKKyAgICA1LDAsMTI0LDEsMCwxMDcsMiwwLDExNCw5NiwwLDEyNCwxLDAsMTI0LDAsCisgICAgMCw5NSw1LDAsMTI0LDAsMCw0LDEwNiw0LDAsMTAwLDIsMCw1NSwyLAorICAgIDk1LDQsMCwxMDAsNSwwLDgzLDEyNCwwLDAsMTA2LDcsMCwxMzEsMCwwLAorICAgIDExNCwxMjcsMCwxMTYsOCwwLDEwMCwzLDAsMTI0LDAsMCwyMiwxMzEsMSwwLAorICAgIDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw5LDAsMTA2LDEwLDAsMTAwLAorICAgIDYsMCwxMzEsMSwwLDExNCwxNjMsMCwxMjQsMCwwLDQsMTA2LDEyLDAsMTAwLAorICAgIDIsMCw1NSwyLDk1LDEyLDAsMTEwLDAsMCw4NywxMDAsNCwwLDgxLDg4LAorICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMzEsMCwwLDEsMTI0LDAsMCwKKyAgICAxMDYsOSwwLDEwNiwxMywwLDEzMSwwLDAsMSwxMTMsMjgsMCw4NywxMDAsNCwKKyAgICAwLDExNiwyLDAsMTI0LDEsMCw2MSw4OCwxMDAsNCwwLDgzLDQwLDcsMCwKKyAgICAwLDAsMTE3LDE4NSwwLDAsMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTIsCisgICAgMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksCisgICAgMTA3LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSwKKyAgICA5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsMTA4LDExOSw5NywxMjEsMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTAwLDMyLDk3LDExMCwxMDAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTQsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDEwNSwwLDAsMCwwLDEwNSwxLDAsMCwwLDExNywyMywwLDAsMCwxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3OCw4NCw3MCw0MCwxNCwwLDAsMCwxMTcsNywKKyAgICAwLDAsMCw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDExNyw5LDAsMCwwLDEwMywKKyAgICAxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLDExMCwxMTYsMTE3LDEyLDAsMCwwLDk1LDk4LDEwOCwKKyAgICAxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDQsMCwwLDAsMTA4LDExMSwKKyAgICA5OSwxMDcsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDExNyw1LDAsMCwKKyAgICAwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LAorICAgIDEyLDAsMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDcsCisgICAgMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsNSwwLDAsMCw3MCwKKyAgICA5NywxMDgsMTE1LDEwMSwxMTcsNywwLDAsMCwxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSwKKyAgICAxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MCwyLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMywwLDAsMCwxMTYsCisgICAgMTA1LDEwMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LAorICAgIDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMjAxLDAsMCwwLDExNSwzMiwKKyAgICAwLDAsMCwwLDYsMTIsMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwKKyAgICAxLDksMSwxNSwxLDQsMSwxMiwxLDE5LDEsMTgsMSwyNCwyLDEzLAorICAgIDEsMjAsMiwxMTcsMTksMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwKKyAgICAxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxNDMsMTM4LDAsMSwxMjQsMCwwLDEwNiwzLAorICAgIDAsMTI0LDEsMCwxMDcsMywwLDExNCw1MiwwLDExNiw0LDAsMTAwLDEsMCwKKyAgICAxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLAorICAgIDIsMCwxMDcsNCwwLDExNSw3MywwLDExNiw2LDAsMTMwLDEsMCwxMjQsMCwKKyAgICAwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsOTUsNSwwLDEyNCwwLDAsCisgICAgMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE1NSwwLDEwMCwwLDAsMTI0LAorICAgIDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsOCwwLDExNCwxNTUsMCwxMjQsMCwKKyAgICAwLDQsMTA2LDgsMCwxMDAsMywwLDU2LDIsOTUsOCwwLDEyNCwwLDAsCisgICAgMTA2LDksMCwxMDYsMTAsMCwxMzEsMCwwLDEsMTEzLDE1NSwwLDExMCwwLDAsCisgICAgODcsMTAwLDAsMCw4MSw4OCwxMDAsMCwwLDgzLDQwLDQsMCwwLDAsNzgsCisgICAgMTE3LDMxLDAsMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDEwNSwwLDAsMCwwLDEwNSwxLDAsMCwwLDQwLDExLAorICAgIDAsMCwwLDExNyw3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LAorICAgIDksMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTcsNCwwLAorICAgIDAsMCwxMDgsMTExLDk5LDEwNywxMTcsNSwwLDAsMCwxMTEsMTE5LDExMCwxMDEsMTE0LAorICAgIDExNywxMiwwLDAsMCw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDExNywxNCwwLDAsMCwKKyAgICA2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMTksOTcsMTA1LDExNiwKKyAgICAxMDEsMTE0LDExNSwxMTcsNiwwLDAsMCwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNyw3LAorICAgIDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywzLDAsMCwwLDExNiwxMDUsMTAwLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLAorICAgIDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMjI2LDAsMCwwLDExNSwyMiwwLDAsCisgICAgMCwwLDEsMTIsMSwxMCwxLDE1LDEsMTUsMSwyMSwxLDE1LDEsMTUsCisgICAgMSw5LDEsOSwxLDE1LDEsMTE3LDE5LDAsMCwwLDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMDIsMiwwLDIyLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTE3LDIxLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwzNywxMTQsNDEsMzIsOTcsMTE2LDMyLDM3LDEwMCwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywyLAorICAgIDAsMCwwLDEwNSwxMDAsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjM5LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMSwxMTcsMjAsMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwKKyAgICA3OCw0MCw5LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksCisgICAgMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDEyLDAsMCwKKyAgICAwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE3LDcsMCwKKyAgICAwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTUsOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNywxNzUsMCwwLDAsMTE1LDEyLDAsMCwwLDE2LDQsNiwyLDEyLAorICAgIDgsMTIsMTIsMTIsMjUsMTIsMTMsMTE3LDExLDAsMCwwLDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwwLDExNSw3NCwwLDAsCisgICAgMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKKyAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLAorICAgIDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLAorICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksCisgICAgMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MCwxMSwwLDAsMCwKKyAgICAxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzYsMTExLDk5LDEwNywxMTcsODYsMCwwLDAsNjUsMzIsMTE1LDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwKKyAgICAxMTYsMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMTExLDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LAorICAgIDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgOTUsMCwwLDEwMCwxLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4MywKKyAgICA0MCwyLDAsMCwwLDc4LDEwNSwwLDAsMCwwLDQwLDIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTksMTExLAorICAgIDExNywxMTAsMTE2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDI0NywwLDAsMCwxMTUsNCwwLDAsMCwwLDEsOSwxLAorICAgIDExNywyNSwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxOSwwLDAsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsCisgICAgMSwwLDU1LDIsOTUsMCwwLDEwMCwyLDAsODMsNDAsMywwLDAsMCwKKyAgICA3OCwxMDUsMSwwLDAsMCw4NCw0MCwyLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDk5LDExMSwxMTcsMTEwLDExNiwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMjUxLDAsMCwwLDExNSw0LDAsMCwwLDAsMSwKKyAgICAxNSwxLDExNywyNCwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNDksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKKyAgICAxLDAsMTA3LDIsMCwxMTQsMzAsMCwxMTYsMSwwLDEwMCwyLDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTI0LDAsMCw0LDEwNiwwLDAsMTAwLDMsCisgICAgMCw1NiwyLDk1LDAsMCwxMDAsMCwwLDgzLDQwLDQsMCwwLDAsNzgsCisgICAgMTA1LDAsMCwwLDAsMTE3LDMxLDAsMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwKKyAgICAzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDEwNSwxLDAsMCwwLDQwLDIsCisgICAgMCwwLDAsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDExNywxMiwwLAorICAgIDAsMCw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDAsMSwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwKKyAgICAxMDEsOTcsMTE1LDEwMSwyNTUsMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LAorICAgIDEsMTUsMSwxMTcsMjQsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMDAsMSwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMDIsMiwwLDIyLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI2LDAsMCwwLDk1LDY4LDExNywxMDksCisgICAgMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMzcsMTE0LDQxLAorICAgIDMyLDk3LDExNiwzMiwzNywxMDAsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsMiwwLDAsMCwxMDUsMTAwLDQwLDEsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDk1LDk1LDQsMSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyNSwwLAorICAgIDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MCw4LDAsMCwKKyAgICAwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwKKyAgICAwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwKKyAgICAwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsCisgICAgMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOCwwLDAsMCw5NSwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDcsMCwwLDAsOTcsOTksMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNDAsMSwwLDAsCisgICAgMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwKKyAgICAwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMjQzLDAsMCwwLDExNSwxMCwwLDAsMCwxNiwyLDYsMiwxMiw0LAorICAgIDEyLDQsMTIsNSwxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwxMSwwLDAsMCwzLDAsMCwwLDExNSwxNDIsCisgICAgMCwwLDAsMTAwLDMsMCwxMjUsMSwwLDEyMSwxNywwLDExNiwxLDAsMTM2LAorICAgIDAsMCwyNSwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKKyAgICAwLDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LAorICAgIDEsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiwzLDAsMTAwLDMsCisgICAgMCwxMDcsOCwwLDExNCw4MywwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLAorICAgIDEyNSwxLDAsMTEwLDEyLDAsMTE2LDUsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LAorICAgIDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAorICAgIDAsMTI1LDIsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMjQsMiwwLAorICAgIDEzMSwyLDAsMTE2LDEsMCwxMzYsMCwwLDYwLDExMCwwLDAsMTI0LDEsMCwKKyAgICA4Myw0MCw0LDAsMCwwLDExNywxMDksMCwwLDAsNzEsMTAxLDExNiwzMiwxMTEsCisgICAgMTE0LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsCisgICAgMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwKKyAgICAxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsCisgICAgMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMSwwLAorICAgIDAsMCwxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLDAsMCw4Myw0MCwxLDAsCisgICAgMCwwLDc4LDQwLDEsMCwwLDAsMTE3LDEzLDAsMCwwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSw0MCwxLDAsMCwwLDExNywKKyAgICAxLDAsMCwwLDk1LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLAorICAgIDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIsMCwwLDAsOTksCisgICAgOTgsMjQsMSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyOCwwLDAsCisgICAgMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LAorICAgIDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNzgsNDAsOCwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTMsMCwwLAorICAgIDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDExNyw4LAorICAgIDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLAorICAgIDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDE2LDAsMCwwLDk1LDY4LDExNywxMDksCisgICAgMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDExLDAsMCwKKyAgICAwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsOCwwLDAsCisgICAgMCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiwxMTcsMywwLDAsMCwxMTQsMTAxLAorICAgIDEwMiw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywKKyAgICA0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDExNywyLDAsMCwwLDk5LDk4LDQwLAorICAgIDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDEwLDEsMCwwLDExNSwyNCwwLAorICAgIDAsMCwwLDQsNiwxLDMsMSwxNywxLDEzLDEsNSwxLDEyLDEsCisgICAgMTIsMSwxNSwyLDEyLDEsMTgsMiwyNSwxLDExNywxNiwwLDAsMCw5NSwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDEyMSwKKyAgICAxNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LDExMCwxMSwKKyAgICAwLDg4LDEyNCwxLDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsMCw4MywKKyAgICA0MCwyLDAsMCwwLDExNywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDAsNiwwLDAsMCwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDQsMCwwLDAsOTUsCisgICAgMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LAorICAgIDEwOCwxMTEsOTksMTA3LDExNyw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLAorICAgIDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwKKyAgICAwLDAsMTA4LDExMSw5OSwxMDcsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsCisgICAgMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyOSwxLDAsMCwxMTUsMTQsCisgICAgMCwwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywzLDUsCisgICAgMiwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLAorICAgIDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDc5LDAsMCwwLDExNSwxMywKKyAgICAwLDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxNDIsMCwwLDgzLAorICAgIDQwLDEsMCwwLDAsMTE3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLAorICAgIDExNSwzMiwxMDUsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsCisgICAgMTA4LDEwOCwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsCisgICAgMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsCisgICAgMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMzIsOTcsMzIsOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LAorICAgIDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsCisgICAgOTcsMzIsMTEwLDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsCisgICAgMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCwKKyAgICA5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsCisgICAgMzIsMTA1LDExMCwxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsCisgICAgMTEwLDExNiwxMDEsMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDQxLDEwLDMyLDMyLDMyLDMyLDQwLDAsMCwwLDAsNDAsMywwLAorICAgIDAsMCwxMTcsMSwwLDAsMCwxMDIsMTE3LDQsMCwwLDAsOTcsMTE0LDEwMywKKyAgICAxMTUsMTE3LDQsMCwwLDAsMTA3LDExOSwxMDAsMTE1LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDQ5LDEsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTcsCisgICAgMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLAorICAgIDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTA1LDE1OCwxMiwKKyAgICAwLDAsMTE3LDEsMCwwLDAsMTMsMTA1LDE2LDAsMCwwLDExNywxLDAsCisgICAgMCwwLDEwLDEwNSwyNCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDk5LDAsMCwwLDExNSwyOSwwLAorICAgIDAsMCwxMjQsMCwwLDkzLDE5LDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLAorICAgIDAsNjMsMTAwLDAsMCw2NCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MCwKKyAgICAyLDAsMCwwLDEwNSwyNTUsMCwwLDAsNzgsNDAsMSwwLDAsMCwxMTcsCisgICAgMTcsMCwwLDAsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsCisgICAgODUsNzcsNjYsNjksODIsNDAsMiwwLDAsMCwxMTcsMiwwLDAsMCw0NiwKKyAgICA0OCwxMTcsMSwwLDAsMCwxMTAsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsCisgICAgNjIsMTUwLDEsMCwwLDExNSwyLDAsMCwwLDYsMCwxMTcsOSwwLDAsCisgICAgMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTA1LDAsMCwwLDAsMTA1LAorICAgIDI1LDAsMCwwLDEwNSw4LDAsMCwwLDExNywxMSwwLDAsMCw5NSw5NSwKKyAgICAxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsOTUsMTE3LDMsMCwwLDAsNDYsMTEyLAorICAgIDEyMSwxMTcsNCwwLDAsMCw0NiwxMTIsMTIxLDk5LDExNyw0LDAsMCwwLDQ2LAorICAgIDExMiwxMjEsMTExLDk5LDIsMCwwLDAsMCwwLDAsMCwxMSwwLDAsMCwKKyAgICA2LDAsMCwwLDY3LDAsMCwwLDExNSwxODAsMCwwLDAsMTI0LDEsMCwKKyAgICAxMDAsNSwwLDEwNyw4LDAsMTE0LDI1LDAsMTE2LDEsMCwxMDYsMiwwLDEwNiwKKyAgICAzLDAsMTIsMTEwLDMsMCwxMjQsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTQsCisgICAgNDYsMCwxMTYsNCwwLDEyNSwzLDAsMTEwLDYsMCwxMTYsNSwwLDEyNSwzLAorICAgIDAsMTE2LDYsMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsCisgICAgMTI1LDUsMCwxMjQsNSwwLDEwNiw3LDAsMTAwLDEsMCwxMzEsMSwwLDkyLAorICAgIDMsMCwxMjUsNiwwLDEyNSw3LDAsMTI1LDgsMCwxMTYsMSwwLDEwNiw4LAorICAgIDAsMTA2LDksMCwxMjUsOSwwLDEyNCw5LDAsMTAwLDUsMCwxMDcsOCwwLAorICAgIDExNCwxMzMsMCwxMTYsMTAsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCisgICAgMCwwLDEwMCwzLDAsMTA2LDExLDAsMTI0LDYsMCwxMjQsNywwLDEyNCw5LAorICAgIDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEwMyw0LDAsMTMxLDEsMCwxMjUsMTAsCisgICAgMCwxMTYsMTIsMCwxMjQsNCwwLDExNiwxMywwLDEyNCwxMCwwLDEzMSwzLDAsCisgICAgODMsNDAsNiwwLDAsMCwxMTcsMjQ0LDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LAorICAgIDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsCisgICAgNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLAorICAgIDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LAorICAgIDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwKKyAgICAxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LAorICAgIDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTE3LDExMCwKKyAgICAxMDgsMTAxLDExNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsMTE1LDQ2LDExMSwKKyAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExMCw0NSwxMjIsCisgICAgMTAxLDExNCwxMTEsNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsCisgICAgMTA4LDMyLDk4LDEwMSwzMiw0NiwxMTIsMTIxLDExMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk3LAorICAgIDMyLDk4LDExMSwxMTEsMTA4LDEwMSw5NywxMTAsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTE1LDMyLAorICAgIDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDExMiwxMDgsOTcsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsMTE1LDQ2LDExMSwKKyAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTcsCisgICAgMSwwLDAsMCw0NiwxMTcsMzYsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDExNywwLAorICAgIDAsMCwwLDEwNSwwLDAsMCwwLDc4LDQwLDE0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywKKyAgICA1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsOCwwLDAsMCwxMTEsMTEyLAorICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNywyMywwLDAsMCw2OCw2OSw2Niw4NSw3MSwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTcsMjcsMCwwLDAsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsCisgICAgOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LAorICAgIDEwNSwxMTYsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LAorICAgIDEwMywxMTcsMTksMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDEwNiwxMTEsCisgICAgMTA1LDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsCisgICAgMTEwLDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDQwLDExLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxNCwwLDAsCisgICAgMCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwxMTcsCisgICAgNSwwLDAsMCwxMDAsMTAxLDk4LDExNywxMDMsMTE3LDgsMCwwLDAsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsNCwwLDAsMCwxMDQsMTAxLDk3LDEwMCwxMTcsCisgICAgNCwwLDAsMCwxMTYsOTcsMTA1LDEwOCwxMTcsMTMsMCwwLDAsOTgsOTcsMTE1LAorICAgIDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEwMSwxMTIsMTE3LDEsMCwwLDAsOTUsMTE3LDMsMCwwLDAsMTE2LDk3LDEwMywKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTksOTcsCisgICAgOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxNTksCisgICAgMSwwLDAsMTE1LDIyLDAsMCwwLDAsMTMsMzEsMSw2LDEsOSwyLAorICAgIDYsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDE1LDEsMzEsMSwxMTcsMTcsCisgICAgMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwxOTMsMCwwLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNiwyLDAsMTAwLDcsMCwxMDcsOCwwLDExNCwzMywwLAorICAgIDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMTYsCisgICAgNSwwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwKKyAgICAwLDExNiw1LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLAorICAgIDEyNSwzLDAsMTI0LDMsMCwxMTYsNiwwLDEwNywzLDAsMTE0LDEwOCwwLDExNiwKKyAgICA3LDAsMTAwLDIsMCwxMDYsOCwwLDExNiw2LDAsMTI0LDAsMCwxMzEsMiwKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTA2LDksMCwKKyAgICAxMDAsMywwLDEzMSwxLDAsMTAwLDQsMCwxMDcsMywwLDExNCwxNTMsMCwxMTYsCisgICAgNywwLDEwMCw1LDAsMTA2LDgsMCwxMjQsMiwwLDEzMSwxLDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsMTAsMCwxMDAsMywwLAorICAgIDEzMSwxLDAsMTAwLDYsMCwyNSwxMjUsNCwwLDExNiwxMSwwLDEyNCwxLDAsCisgICAgMTI0LDQsMCwxMTYsMTIsMCwxMDAsNiwwLDI1LDIzLDEzMSwyLDAsODMsNDAsCisgICAgOCwwLDAsMCwxMTcsMTIxLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsCisgICAgOTksNDYsNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsCisgICAgMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsCisgICAgMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCisgICAgOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OSwxMTEsCisgICAgMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDQ2LDExMiwxMjEsOTksNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLAorICAgIDMyLDczLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsCisgICAgMzIsMzIsMTEwLDExMSwxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwKKyAgICAzMiw4MCw2OSw4MCwzMiw1MSw0OSw1Miw1NSwzMiwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDQ0LDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LDEwOCwKKyAgICAxMDgsMzIsOTgsMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLDEwLAorICAgIDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLAorICAgIDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTcsMzYsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsCisgICAgMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDExNywzNywwLDAsMCwKKyAgICAxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsMTE3LDEsMCwwLDAsNDYsMTA1LDIsMCwwLDAsCisgICAgMTE3LDI4LDAsMCwwLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLAorICAgIDEwOCwxMjEsMzIsNTAsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsMTA1LDAsMCwwLDAsNzgsNDAsMTMsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTE1LDEyMSwxMTUsMTE3LDE0LDAsMCwwLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwxMTcsOSwwLDAsMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExNiw5NywxMDMsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDE5LAorICAgIDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsCisgICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw4MCw4OSw2Nyw2NSwKKyAgICA2Nyw3Miw2OSwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDUsMCwKKyAgICAwLDAsOTksMTExLDExNywxMTAsMTE2LDExNyw5LDAsMCwwLDExMiw5NywxMTQsMTE2LAorICAgIDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNiwxMTEsMTA1LDExMCwxMTcsMTUsMCwwLDAsODMsNzksODUsODIsNjcsNjksOTUsCisgICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDAsNSwwLDAsMCwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDQsMTAxLDk3LDEwMCwxMTcsCisgICAgMTYsMCwwLDAsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTE3LDEzLDAsMCwwLDk4LDk3LDExNSwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LAorICAgIDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTg2LDEsMCwwLDExNSwyNCwwLDAsMCwwLDksMTgsCisgICAgMSwxNSwxLDE4LDEsMTgsMSwxMiwxLDksMSwxOCwxLDIxLDEsOSwKKyAgICAxLDE1LDEsMTksMSwxMTcsMTcsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTY0LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEwMCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMjIsMCwxMDAsNiwwLDgzLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxMDAsMiwwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwKKyAgICAxMjUsMywwLDEyNCwxLDAsMTIsMTE1LDgxLDAsMTI0LDMsMCwxMDYsMywwLAorICAgIDEzMSwwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMywyLDAsMjUsMTAwLDUsMCwKKyAgICAxMDcsMywwLDExNCw4NSwwLDEyNCwwLDAsODMsMTIxLDE2LDAsMTE2LDQsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsNDAsMCw0LDExNiw1LAorICAgIDAsMTE2LDYsMCwxMDIsMiwwLDEwNywxMCwwLDExNCwxNDMsMCwxLDEsMSwKKyAgICAxMTYsNywwLDEwMCw5LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw0LDAsCisgICAgODksMTEwLDEsMCw4OCwxMTYsOCwwLDExNiw5LDAsMTMxLDEsMCwxMTQsMTYwLAorICAgIDAsMTI0LDQsMCw4MywxMjQsMCwwLDgzLDQwLDEwLDAsMCwwLDExNywxODgsCisgICAgMCwwLDAsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsCisgICAgMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLAorICAgIDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LAorICAgIDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDEwNSwKKyAgICAwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDEwNSwzLDAsMCwwLDEwNSwKKyAgICAxLDAsMCwwLDExNywzLDAsMCwwLDQ2LDExMiwxMjEsNzgsMTA1LDI1MywyNTUsCisgICAgMjU1LDI1NSwxMDUsMjU1LDI1NSwyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsMTAsMCwwLAorICAgIDAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDQsMCwwLDAsNzgsMTExLAorICAgIDExMCwxMDEsMTE3LDksMCwwLDAsMTE0LDExMiw5NywxMTQsMTA1LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTcsNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDExNywxNywwLDAsMCwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDEwLDAsMCwwLDg2LDk3LDEwOCwKKyAgICAxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTIsMCwwLDAsOTgsMTIxLDExNiw5OSwKKyAgICAxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsMTE3LDEyLDAsMCwwLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDQwLDUsMCwwLDAsMTE3LAorICAgIDEzLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNyw0LDAsMCwwLDExNCwxMDEsMTE1LDExNiwxMTcsMSwwLDAsMCw5NSwKKyAgICAxMTcsOSwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMTcsMTEsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCw5NSwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSwyMDksMSwKKyAgICAwLDAsMTE1LDIwLDAsMCwwLDAsNywxOCwxLDQsMSwyNCwxLDM1LAorICAgIDEsNCwyLDMsMSwxNiwxLDE5LDEsMjEsMiwxMTcsMTUsMCwwLDAsCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwKKyAgICA3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwKKyAgICAyLDAsMTE0LDcxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsCisgICAgMCwxMTUsNDAsMCwxMDAsMywwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTAsMCwKKyAgICAwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTQwLDAsMCwKKyAgICAxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwxMzEsMSwxLDEsMTEwLDAsMCwKKyAgICAxMDAsNSwwLDgzLDQwLDcsMCwwLDAsMTE3LDYxLDAsMCwwLDgwLDExNCwKKyAgICAxMDUsMTEwLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LAorICAgIDgwLDg5LDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsCisgICAgMzIsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwxMTcsMSwwLDAsMCwKKyAgICAzNSwxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTcsMiwwLAorICAgIDAsMCwzNSwzMiwxMTcsNCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsNzgsNDAsMiwKKyAgICAwLDAsMCwxMTcsMSwwLDAsMCwzNSwxMTcsNywwLDAsMCwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiw0MCw3LDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsNywwLDAsCisgICAgMCwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDUsMCwwLDAsMTEyLDExNCwxMDUsMTEwLAorICAgIDExNiwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw2LDAsMCwKKyAgICAwLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDQwLDIsMCwwLDAsMTE3LDcsMCwwLAorICAgIDAsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDQsMCwwLDAsOTcsMTE0LDEwMywKKyAgICAxMTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMjMwLDEsMCwwLDExNSw4LDAsMCwwLDAsMiwxMiwxLDE1LAorICAgIDEsMTMsMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsCisgICAgOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLAorICAgIDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAorICAgIDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLAorICAgIDEsMTI0LDEsMCw4Myw0MCwzLDAsMCwwLDExNywzOSwwLDAsMCw4MywKKyAgICAxMDEsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTEsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTksMCwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsNCwwLDAsMCwzMSwwLDAsMCwxMTUsMTAxLDAsMCwwLAorICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDE0MiwwLDAsMTI1LDIsMCwxMTYsCisgICAgMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCisgICAgMCwxMDcsOCwwLDExNCw5NywwLDEyNCwyLDAsMTA2LDIsMCwxMjQsMiwwLAorICAgIDk1LDMsMCwxMTYsNCwwLDEyNCwyLDAsMTAwLDIsMCwxMzEsMiwwLDExNSwKKyAgICA5NywwLDEyNCwyLDAsMTA2LDMsMCwxMDYsNSwwLDEwMCwzLDAsMTMxLDEsCisgICAgMCwxMDAsNCwwLDI1LDEyNCwyLDAsOTUsMywwLDExMyw5NywwLDExMCwwLAorICAgIDAsMTI0LDIsMCw4Myw0MCw1LDAsMCwwLDc4LDExNywxMSwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDEsMCwwLDAsNDYsMTA1LDAsCisgICAgMCwwLDAsNDAsNiwwLDAsMCwxMTcsNywwLDAsMCwxMDMsMTAxLDExNiwKKyAgICA5NywxMTYsMTE2LDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsOCwwLAorICAgIDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNyw3LDAsMCwwLDEwNCwKKyAgICA5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwKKyAgICAxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsOTcsCisgICAgMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTcsNiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywzLAorICAgIDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsMTE5LDExNCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjQwLDEsMCwwLDExNSwxMiwwLDAsMCwwLDEsCisgICAgMTUsMSwyNCwxLDEyLDEsMTUsMSwzMSwxLDExNyw0MCwwLDAsMCwxMTUsCisgICAgMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwKKyAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgMTAyLDEyMCwxMTAsMTE3LDE5LDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwwLDAsMCwwLAorICAgIDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMSwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjM4LAorICAgIDEsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw3LDEzLDEsMTE3LDExLAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwKKyAgICAwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwKKyAgICAxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsCisgICAgMTE3LDM4LDAsMCwwLDgzLDEwMSwxMTYsMzIsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSw5NSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCwzMSwwLDAsMCwKKyAgICAxMTUsNDksMCwwLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsCisgICAgMCwxNDIsMSwwLDEyNSwzLDAsMTE2LDAsMCwxMjQsMywwLDEwMCwxLDAsCisgICAgMTMxLDIsMCwxMTUsNDUsMCwxMjQsMCwwLDEyNCwzLDAsOTUsMSwwLDExMCwKKyAgICAwLDAsMTI0LDMsMCw4Myw0MCwyLDAsMCwwLDc4LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDIsMCwwLDAsCisgICAgMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSw0MCw0LDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCw5NywxMTQsCisgICAgMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LDAsCisgICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE4LDAsMCwKKyAgICAwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsMjUzLDEsMCwwLDExNSw4LDAsMCwwLDAsMSwxOCwxLAorICAgIDE1LDEsMTIsMSwxMTcsMzgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTE1LDEwMSwxMTYsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwKKyAgICAxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsCisgICAgMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDE4LDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLAorICAgIDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwyNTEsMSwwLDAsMTE1LDYsMCwwLDAsMCwyLAorICAgIDE4LDUsMTMsMSwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsCisgICAgMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwKKyAgICAwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLAorICAgIDQwLDMsMCwwLDAsMTE3LDQyLDMsMCwwLDY4LDEwMSw5OSwxMTEsMTE0LDk3LAorICAgIDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTUsMTAxLAorICAgIDEwOCwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExMiwKKyAgICAxMDEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTAwLDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDUsMTE1LDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsCisgICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDExMCw5NywxMDksMTAxLDQ2LDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwKKyAgICAzMiwxMDUsMTEwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDUsCisgICAgMTAyLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTYsMzIsOTcsMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwKKyAgICAzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsCisgICAgMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMTksCisgICAgNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE2LDExMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw0NCwzMiw5NSw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LAorICAgIDExMSwzMiwxMTUsMTAxLDEwOCwxMDIsNDQsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwzMiw5Nyw5OSw5OSwxMTEsMTE0LDEwMCwxMDUsMTEwLDEwMywxMDgsMTIxLDMyLDQwLAorICAgIDEwNSwxMDIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDQwLDQxLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDQxLAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsCisgICAgMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMzIsMTEyLDk3LAorICAgIDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLAorICAgIDExNCw5NywxMTYsMTAxLDEwMCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsNDAsCisgICAgMTA1LDEwMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDAsNDEsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE2LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsCisgICAgMzIsMTE1LDEwMSwxMTYsMzIsMTEyLDExMSwxMTUsMTE2LDQ1LDEwOCwxMTEsOTcsMTAwLDQxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywxMTAsMzIsMTAxLDEyMCw5OSwxMDEsCisgICAgMTEyLDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwKKyAgICAxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LAorICAgIDExNyw5OCwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwxMTYsMTA4LDEyMSwzMiwxMTQsMTAxLDEwOSwxMTEsCisgICAgMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwKKyAgICAxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiw5NywxMTUsMTE1LDExNywxMDksMTAxLDExNSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiw5NywxMDcsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSwzMiw5NywxMTUsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICA5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDcsMCwwLAorICAgIDAsMjUsMCwwLDAsMzEsMCwwLDAsMTE1LDI1NCwwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwKKyAgICAxMjQsNCwwLDEwMCwwLDAsMTA3LDksMCwxMjUsNSwwLDEyNCw1LDAsMTE1LAorICAgIDE2OCwwLDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw0LDAsMTAwLDMsCisgICAgMCwxMjQsNCwwLDk1LDYsMCwxMjQsNCwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMjQsMSwwLDYwLDEyNCwwLDAsMTI0LDQsMCw5NSw3LDAsMTIxLDE5LDAsCisgICAgMTI0LDAsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNiwwLDg3LAorICAgIDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwwLAorICAgIDExNCwxMjQsMCwxLDEsMSw4OSwxMTMsMTc3LDAsODgsMTI0LDYsMCwxMTQsMTQzLAorICAgIDAsMTI0LDEsMCwxMjQsNCwwLDk1LDExLDAsMTEzLDE3NywwLDEyNCwxLDAsCisgICAgMTA2LDEyLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI0LDQsMCwKKyAgICA5NSwxMSwwLDExMCw5LDAsMTAwLDMsMCwxMjQsNCwwLDk1LDYsMCwxMjIsCisgICAgNjAsMCwxMjEsMjMsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDQsMCwxMjQsMiwKKyAgICAwLDEyNCwzLDAsMTQyLDIsMCw4Myw4NywxMTAsMzAsMCwxLDEsMSwxMjQsCisgICAgNSwwLDExNSwyMjgsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCw2MSwxMTAsCisgICAgMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCw4NywxMDAsMCwwLDEwMCw0LAorICAgIDAsMTI0LDQsMCw5NSw2LDAsODgsMTAwLDAsMCw4Myw0MCw1LDAsMCwKKyAgICAwLDc4LDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDg0LDcwLDQwLAorICAgIDE0LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMywwLDAsMCwxMDMsMTAxLDExNiwKKyAgICAxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTEwLDEwMSwKKyAgICAxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywKKyAgICAxMDEsMTE3LDE2LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwKKyAgICAxMjIsMTA1LDExMCwxMDMsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTQsMCwwLDAsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKKyAgICAxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwKKyAgICAxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwKKyAgICA0MCw3LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsCisgICAgOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTcsCisgICAgNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOSwwLDAsMCwxMDUsCisgICAgMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI1LDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjQsMiwwLDAsMTE1LDQ0LDAsCisgICAgMCwwLDAsMSwxOCwxLDEyLDEsNiw0LDEyLDMsOSwxLDEzLDEsCisgICAgOSwxLDMsMSwxOSwxLDE5LDEsNSwyLDYsMSwxMiwyLDI1LDIsCisgICAgOSwxLDYsMiwyMywxLDMsMSw2LDEsMTMsMSwxMiwyLDExNyw1MiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMjUsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLAorICAgIDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLAorICAgIDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYsMiwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwxOCwxOCwzMywxMywxLDExNywxNywwLDAsMCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAorICAgIDAsMywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLDMsMCwxMzUsMCwwLAorICAgIDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwxLDAsMTI1LDEsMCwxMTYsCisgICAgMSwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCw4MywKKyAgICA0MCw0LDAsMCwwLDExNywyNTIsMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsCisgICAgMTA1LDExMCwxMDMsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LAorICAgIDExNiw5OSwxMDQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwKKyAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCisgICAgMzIsNDAsMTE1LDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksCisgICAgMTAxLDExMCwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywKKyAgICAxMTQsMTAxLDEwMCwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiwKKyAgICA5NywxMDUsMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDUsMCwwLDAsMzEsMCwwLDAsMTE1LDgzLDAsMCwwLAorICAgIDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyNCwwLDEyNCwwLDAsMTA2LAorICAgIDEsMCwxMjUsMSwwLDExMCw0MCwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwKKyAgICAwLDEwNywzLDAsMTE0LDY0LDAsMTE2LDIsMCwxMDAsMSwwLDEyNCwxLDAsCisgICAgMjIsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLAorICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsCisgICAgMiwwLDgzLDQwLDMsMCwwLDAsNzgsMTE3LDIzLDAsMCwwLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMzcsMTE1LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDMsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDQsMCwwLAorICAgIDAsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwKKyAgICAwLDk3LDExNCwxMDMsMTE1LDExNyw2LDAsMCwwLDEwNywxMTksOTcsMTE0LDEwMywxMTUsCisgICAgNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTksMCwwLDAsOTUsOTksMTA0LDEwMSwKKyAgICA5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNjksCisgICAgMiwwLDAsMTE1LDEwLDAsMCwwLDAsMSwxMiwxLDEyLDEsMTUsMSwKKyAgICAyNSwxLDExNyw0MCwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsOTksMTA0LDEwMSwKKyAgICA5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzgsCisgICAgNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNSwKKyAgICAwLDAsMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNyw2LDAsCisgICAgMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxOSwwLDAsMCw5NSw5OSwxMDQsCisgICAgMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKKyAgICA0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDYsMCwwLDAsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw2MSwyLDAsMCwxMTUsNiwwLDAsMCwKKyAgICAwLDgsMjEsNiwxMywxLDExNywxMSwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LAorICAgIDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLAorICAgIDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsCisgICAgMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsCisgICAgMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDQ5LDAsMCwwLDY4LDEwMSw5OSwKKyAgICAxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDYsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwxOSwKKyAgICAwLDAsMCwxMTUsNTgsMCwwLDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTA3LDcsMCwxMTQsNDUsMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLAorICAgIDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsODMsNDAsMywwLDAsMCw3OCwxMTcsMjcsMCwwLDAsMTIzLDEyNSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LDAsMCwwLDExMCw5NywxMDksCisgICAgMTAxLDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDIwLAorICAgIDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LAorICAgIDk3LDExNiw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMSwwLAorICAgIDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMjUsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw4MSwKKyAgICAyLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyLDEsCisgICAgMTE3LDUyLDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAorICAgIDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwKKyAgICAwLDAsMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsCisgICAgMCwwLDEwMiwxMjAsMTEwLDExNywyNSwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsMywwLAorICAgIDAsMCwxMDIsMTIwLDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDk1LDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzksMiwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTcsMTcsMCwwLAorICAgIDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLAorICAgIDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLAorICAgIDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQwLAorICAgIDMsMCwwLDAsMTE3LDQ3LDAsMCwwLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTgsMCwKKyAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDUsCisgICAgMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwKKyAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDAsMywwLDAsCisgICAgMCw3OCwxMTcsMjUsMCwwLDAsMTIzLDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDQsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMSwwLDAsMCwKKyAgICAxMTcsMywwLDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMjQsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw5MiwyLDAsMCwKKyAgICAxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyLDEsMTE3LDUwLDAsCisgICAgMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywKKyAgICAxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTksCisgICAgMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLAorICAgIDExNywyNCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwKKyAgICAwLDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDE2LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTAsMiwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICAyLDE4LDUsMTMsMSwxMTcsMTYsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA4NywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDkyLDIsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMywwLDEwNywKKyAgICA4LDAsMTE0LDgzLDAsMTE2LDIsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgzLAorICAgIDAsMTAwLDEsMCwxMjUsNCwwLDExNiwzLDAsMTA2LDQsMCwxMjQsNCwwLAorICAgIDEwNiw1LDAsMTI0LDMsMCwxMDAsMiwwLDI1LDEzMSwxLDAsMTE2LDYsMCwKKyAgICAxMzEsMiwwLDEsMTEwLDAsMCwxMjQsMiwwLDgzLDQwLDQsMCwwLDAsCisgICAgMTE3LDg2LDAsMCwwLDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsCisgICAgMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLDk3LDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMTcsNDQsMCwwLDAsCisgICAgNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDAsMTA1LAorICAgIDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsNTgsMzIsMTA5LDEwNSwxMTUsMTE1LAorICAgIDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMDUsMCwwLDAsCisgICAgMCw3OCw0MCw3LDAsMCwwLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsOSwwLDAsMCw5NSwxMTksOTcsCisgICAgMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LDk3LDExNCwxMTAsMTE3LAorICAgIDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTMsMCwwLDAsNzMsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQwLDUsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwKKyAgICAxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNyw4LDAsMCwwLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMTE3LAorICAgIDMsMCwwLDAsMTA5LDExNSwxMDMsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwxMDEsMiwwLDAsMTE1LDEwLDAsCisgICAgMCwwLDAsNiwyMSwxLDI0LDEsNiwxLDMyLDEsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LAorICAgIDEwNSwxMDksOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNiwKKyAgICAwLDAsMCw2NiwwLDAsMCwxMTUsMTczLDAsMCwwLDEyNCwwLDAsNjksCisgICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKKyAgICAzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwKKyAgICAwLDkwLDUsMCwxMDEsNCwwLDEwMCwxNCwwLDEwMCw0LDAsMTAwLDUsMCwKKyAgICAxMzIsMSwwLDEzMSwxLDAsOTAsNywwLDEwMSw0LDAsMTAxLDgsMCwxMDEsCisgICAgOSwwLDEwMSwxMCwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNCwwLAorICAgIDEwMSwxMCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCw5MCwxMiwwLDEwMSw0LDAsMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLAorICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsNCwwLAorICAgIDEwMSwxMCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDE0LDAsMTAwLDE0LDAsODMsNDAsMTUsMCwwLDAsMTE3LDE1LAorICAgIDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDExNCwxMTcsMTQ0LDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LAorICAgIDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsCisgICAgMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICAxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwKKyAgICAwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCwKKyAgICA4Myw0MCwyLDAsMCwwLDc4LDExNywyNCwwLDAsMCw2MCwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwzOSwxMjMsMTI1LDM5LDMyLDQwLDk4LDExNywxMDUsMTA4LDExNiw0NSwKKyAgICAxMDUsMTEwLDQxLDYyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwKKyAgICAxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDYsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDEyNywyLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMzksMCwwLDAsMTI0LDIsMCwxMDAsMSwwLAorICAgIDEwNyw5LDAsMTE0LDE2LDAsMTAwLDEsMCw4MywxMTYsMSwwLDEwNiwyLDAsCisgICAgMTI0LDEsMCwxMzEsMSwwLDExNCwzNSwwLDEyNCwwLDAsODMsMTAwLDEsMCwKKyAgICA4Myw0MCwyLDAsMCwwLDExNywxMTMsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLAorICAgIDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwxMDEsMTE0LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsCisgICAgMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsMTA4LDExNywxMTQsCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQwLDMsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDQsMCwwLDAsCisgICAgOTUsMTA1LDEwOSwxMTIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTMxLDIsMCwwLDExNSw2LDAsMCwwLDAsNywxMiwxLDQsCisgICAgMSwxMTcsMjcsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw5LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw4OCwwLDAsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNiwwLDEyNSwyLDAsMTIxLDIwLDAsMTE2LDIsMCwKKyAgICAxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDExMCw0NiwKKyAgICAwLDEsMSwxLDEyNCwyLDAsMTIsMTE0LDc2LDAsMTI0LDEsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA3LDYsMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLDAsCisgICAgMTI0LDEsMCw2MSwxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsCisgICAgMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDIzLDAsMCwwLDc2LDExMSw5NywKKyAgICAxMDAsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsNzgsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCwxMTUsCisgICAgMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCisgICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwKKyAgICAwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMDUsMTEwLDEwNSwxMTYsOTUsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwKKyAgICA5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LAorICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTQyLDIsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwwLDYsMTUsMSwzLDEsMjAsMSwzLDEsMjIsMSwxMywKKyAgICAxLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTE3LDU3LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLAorICAgIDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKKyAgICAxMTUsNDYsNzgsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLAorICAgIDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsCisgICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsMTU2LDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsCisgICAgMjQsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICA1NiwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAorICAgIDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDQwLDEsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwKKyAgICAxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDE2MiwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LDI2LDAsMCwwLAorICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1MiwwLAorICAgIDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LAorICAgIDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwxMTUsNDYsNzAsNDAsMSwwLDAsMCwxMTcsNSwwLDAsCisgICAgMCw3MCw5NywxMDgsMTE1LDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwKKyAgICAwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDE2OCwyLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDQsMTE3LDI2LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw3OCw0MCwxNSwwLDAsMCwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsCisgICAgOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwKKyAgICAxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTQsMTAxLDExMiwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDExLDAsCisgICAgMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwKKyAgICAwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMCwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNywwLDAsCisgICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTcsCisgICAgMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTAsCisgICAgMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMSwwLAorICAgIDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LAorICAgIDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsCisgICAgMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCwxMTgsMiwwLDAsMTE1LDI4LDAsMCwwLDE2LDcsNiwyLDE4LDQsCisgICAgMywxLDE4LDEwLDMsMSwzLDEsMywxLDI3LDExLDMsMSwyMSw1LAorICAgIDMsMSwyMSw1LDMsMSwxMTcsMTUsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDYsMCwwLDAsNjYsMCwwLDAsMTE1LAorICAgIDE3MywwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLAorICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsMCwxMDAsCisgICAgMTQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDcsCisgICAgMCwxMDEsNCwwLDEwMSw4LDAsMTAxLDksMCwxMDEsMTAsMCwxMDAsNiwwLAorICAgIDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDExLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsOCwwLDEwMCw5LAorICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNCwwLAorICAgIDEwMSwxMCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEzLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTIsMCwxMDAsMTMsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMCwxNCwwLAorICAgIDgzLDQwLDE1LDAsMCwwLDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTQyLDAsMCwwLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksCisgICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwKKyAgICAxLDAsMTMxLDEsMCw4Myw0MCwyLDAsMCwwLDc4LDExNywyMiwwLDAsCisgICAgMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwzOSwxMjMsMTI1LDM5LDMyLDQwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDYyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwKKyAgICAxMTUsMTE3LDEsMCwwLDAsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCwxODQsMiwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNiwKKyAgICAwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsCisgICAgMTMxLDEsMCwxMTQsMTksMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDAsMiwKKyAgICAwLDAsMCwxMTcsMjEsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsOSwwLDAsCisgICAgMCwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNyw0LDAsMCwwLDc4LAorICAgIDExMSwxMTAsMTAxLDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDE4OCwyLDAsMCwxMTUsMiwwLDAsMCwwLDMsMTE3LDI2LDAsCisgICAgMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsNCwwLDAsMCw5LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMDAsMCwwLDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAorICAgIDYsMCwxMjUsMiwwLDEyMSwzMiwwLDExNiwyLDAsMTE2LDMsMCwxMDYsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsOTYsNSwwLAorICAgIDEyNCwzLDAsODMsODcsMTEwLDQ2LDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsCisgICAgODgsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwwLDExNCw4OCwKKyAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwwLDAsMTMwLDAsCisgICAgMCw4OSwxMTAsMSwwLDg4LDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMjEsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCw0MCw2LDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LAorICAgIDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwKKyAgICAxMDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDExLDAsMCwwLDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsOCwwLDAsMCw5NSwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsNDAsNCwwLDAsMCwxMTcsMywwLDAsCisgICAgMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LAorICAgIDEsMCwwLDAsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDE5MywyLDAsMCwxMTUsMTgsMCwwLDAsMCw2LDE1LDEsMywxLAorICAgIDE4LDIsNiwxLDgsMSwzLDEsMjIsMSwxMywxLDExNywyNiwwLDAsCisgICAgMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAwLDgzLDQwLDEsMCwwLDAsMTE3LDQ1LDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDQwLDIsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDE3LDAsMCwwLDEwMywxMDEsMTE2LDk1LAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiw0MCwyLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLAorICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCisgICAgMjEwLDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsMjMsMCwwLDAsCisgICAgNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsCisgICAgMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDU0LDAsMCwwLDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCisgICAgOTksMTExLDEwMCwxMDEsNDYsNzgsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICA3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwKKyAgICAxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywKKyAgICAxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjE2LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMTcsMjUsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwKKyAgICAxLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDQ2LAorICAgIDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA0Niw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywKKyAgICAxNywwLDAsMCwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LAorICAgIDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLAorICAgIDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIyMiwyLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDQsMTE3LDI1LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDc4LDQwLDE1LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSwKKyAgICA5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCisgICAgMTEyLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTEsMCwwLDAsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwKKyAgICAxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE2LDAsMCwwLDk1LAorICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LAorICAgIDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICA4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwwLDAsMCwKKyAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwxLDAsMCwwLDExNywKKyAgICAxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwwLDAsNzAsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTc1LDIsMCwKKyAgICAwLDExNSwyOCwwLDAsMCwxNiw3LDYsMiwxOCw0LDMsMSwxOCw0LAorICAgIDMsMSwzLDEsMywxLDI3LDE0LDMsMSwyMSw1LDMsMSwyMSw1LAorICAgIDMsMSwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsNCwwLDAsMCw2NiwwLDAsMCwxMTUsMTAxLDAsMCwwLDEyNCwKKyAgICAwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLAorICAgIDEsMCw5MCwzLDAsMTAwLDIsMCw5MCw0LDAsMTAwLDMsMCw5MCw1LAorICAgIDAsMTAwLDExLDAsOTAsNywwLDEwMSw4LDAsMTAwLDQsMCwxMDAsNSwwLAorICAgIDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDgsMCwxMDAsNiwwLDEwMCwKKyAgICA3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDgsMCwxMDAsMTAsCisgICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDEyLDAsCisgICAgMTAwLDEwLDAsODMsNDAsMTIsMCwwLDAsMTE3LDIxLDAsMCwwLDg3LDEwNSwKKyAgICAxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDExNyw2NywwLDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDMyLDExNCwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsMTE3LDU5LDAsMCwwLAorICAgIDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsCisgICAgODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICA5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMTcsNjUsMCwwLDAsCisgICAgODMsMTExLDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5MiwKKyAgICA4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwKKyAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsCisgICAgMTAzLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTE2LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCwKKyAgICA4Myw4NywxMTAsMzcsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwKKyAgICAxLDEsMTE2LDAsMCwxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwKKyAgICAwLDEzMSwyLDAsODMsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQwLDEsCisgICAgMCwwLDAsNzgsNDAsNSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTksCisgICAgMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsNywwLDAsMCw3OSwxMTIsMTAxLDExMCw3NSwxMDEsCisgICAgMTIxLDExNywxNywwLDAsMCw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSwKKyAgICA3OCw4NCw5NSw4NSw4Myw2OSw4MiwxMTcsMTIsMCwwLDAsODcsMTA1LDExMCwxMDAsCisgICAgMTExLDExOSwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNywxOCwwLDAsMCw3Miw3NSw2OSwKKyAgICA4OSw5NSw3Niw3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSw0MCwKKyAgICAyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDMsMCwwLAorICAgIDAsMTA3LDEwMSwxMjEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTQsMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsCisgICAgMTE2LDExNCwxMjEsMjQyLDIsMCwwLDExNSw4LDAsMCwwLDAsMiwzLDEsCisgICAgMjMsMSwxMywxLDExNywzNiwwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSwKKyAgICA4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwKKyAgICAxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQyLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMTQsMjEsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsOSwwLDEyNCwwLDAsMTA2LAorICAgIDIsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDMsMCwxMDAsMSwwLDEyNCwxLAorICAgIDAsMTAwLDIsMCwxMTYsNCwwLDEwNiw1LDAsMTAwLDAsMCwxMDAsMywwLAorICAgIDEzMywyLDAsMjUsMTMxLDAsMiwxMjUsMywwLDEyMSw0NiwwLDEyNCwwLDAsCisgICAgMTA2LDYsMCwxMjQsMywwLDEzMSwxLDAsMTQzLDI1LDAsMTI1LDQsMCwxMTYsCisgICAgNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsNCwwLDEzMSwyLDAsMTI1LDUsCisgICAgMCw4NywxMDAsMCwwLDgxLDg4LDg3LDExMCwyMiwwLDQsMTE2LDksMCwxMDcsCisgICAgMTAsMCwxMTQsMTM3LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLAorICAgIDg4LDEyNCw1LDAsODMsNDAsNSwwLDAsMCw3OCwxMTcsOCwwLDAsMCwKKyAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDExNSwxMjEsMTE1LAorICAgIDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMDUsMywwLDAsMCwxMTcsMCwwLAorICAgIDAsMCw0MCwxMSwwLDAsMCwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsCisgICAgNzEsOTUsNjYsODUsNzMsNzYsNjgsMTE3LDE4LDAsMCwwLDgyLDY5LDcxLDczLAorICAgIDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDExNywxMiwKKyAgICAwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTcsCisgICAgNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw3LDAsMCwwLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTcsMTQsCisgICAgMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsMTE3LDcsMCwwLDAsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDEwLDAsCisgICAgMCwwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTcsMTIsMCwwLAorICAgIDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsCisgICAgMCwwLDc4LDExMSwxMTAsMTAxLDQwLDYsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsMTA3LDEwMSwKKyAgICAxMjEsMTE3LDMsMCwwLDAsMTA3LDEwMSwxMjEsMTE3LDQsMCwwLDAsMTA0LDEwNywKKyAgICAxMDEsMTIxLDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCwKKyAgICA5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwKKyAgICAyNDksMiwwLDAsMTE1LDIyLDAsMCwwLDAsMiw5LDEsMTIsMiw5LAorICAgIDEsMTUsMSwyMiwxLDMsMSwxOCwxLDI4LDEsMTMsMSw5LDEsMTE3LAorICAgIDM4LDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKKyAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsMTE0LDk5LAorICAgIDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw3LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNDAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMSwwLDEwMCwKKyAgICAxLDAsODMsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTMxLAorICAgIDEsMCwxLDg3LDExMCwyMiwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsNzIsCisgICAgMCwxLDEsMSwxMDAsMSwwLDgzLDg5LDExMCwxLDAsODgsMTIwLDYwLDAsCisgICAgMTE2LDUsMCwxMzEsMCwwLDY4LDkzLDQ5LDAsOTIsMywwLDEyNSw0LDAsCisgICAgMTI1LDUsMCwxMjUsNiwwLDEyNCwzLDAsMTA2LDYsMCwxMTYsNywwLDEyNCwKKyAgICA1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4MywwLDEyNCw0LDAsMTI0LDEsCisgICAgMCwxMjQsMywwLDEzMSwyLDAsODMsMTEzLDgzLDAsODcsMTAwLDEsMCw4MywKKyAgICA0MCwyLDAsMCwwLDExNywzNCwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDc4LDQwLDgsMCwKKyAgICAwLDAsMTE3LDE2LDAsMCwwLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTYsMTE3LDcsMCwwLDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNywyNywwLAorICAgIDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDgsMCwKKyAgICAwLDAsMTAxLDExMCwxMDAsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTYsCisgICAgMTE3LDExMiwxMDgsMTAxLDQwLDcsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LAorICAgIDgsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsMSwwLDAsCisgICAgMCw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwKKyAgICAwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOCwzLAorICAgIDAsMCwxMTUsMjAsMCwwLDAsMCwzLDE1LDEsMTIsMSw0LDEsMywKKyAgICAxLDE3LDEsMTMsMSw5LDEsMjUsMSwyMSwxLDExNywzMywwLDAsMCwKKyAgICA4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzgsNzAsNDAsMTMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LAorICAgIDk1LDExNywxMiwwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSwKKyAgICA2OSw4OSwxMTcsMTgsMCwwLDAsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsCisgICAgNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMTE3LDUsMCwwLDAsNzAsOTcsCisgICAgMTA4LDExNSwxMDEsMTE3LDExLDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg1LAorICAgIDczLDc2LDY4LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwxMTcsMTQsMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsCisgICAgMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDE2LDAsMCwwLDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LAorICAgIDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIyOSwyLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTYsMyw2LDMsNiwzLDYsMiw2LAorICAgIDIsMTgsNywxOCwxNSwzLDEsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLAorICAgIDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDUsMCwKKyAgICAwLDAsNjYsMCwwLDAsMTE1LDc0LDAsMCwwLDEyNCwwLDAsNjksMTAxLAorICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLAorICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsCisgICAgMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLDEwMCw2LDAsMTAwLAorICAgIDEwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDEsMTMxLDEsMCw5MCw4LAorICAgIDAsMTAwLDksMCw4Myw0MCwxMSwwLDAsMCwxMTcsMTMsMCwwLDAsOTUsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDExNyw4MywwLDAsCisgICAgMCw2Niw5NywxMTUsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksCisgICAgMTExLDEwOSwxMDksMTExLDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEwMCwxLDAsMjUsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwKKyAgICAxMDAsMSwwLDEzMSwyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsCisgICAgMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLAorICAgIDEyNCwzLDAsMTAwLDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLAorICAgIDUsMCwxMDcsMywwLDgzLDQwLDYsMCwwLDAsMTE3LDE0MSwwLDAsMCwKKyAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCisgICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsMzIsCisgICAgMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LDExNSwKKyAgICAzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwzOSwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMDUsMSwwLAorICAgIDAsMCwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsMCwxMDUsMiwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsCisgICAgNCwwLDAsMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDExMiwxMDgsMTA1LDExNiwxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LAorICAgIDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCwKKyAgICA1LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLAorICAgIDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNywxMywwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSwxMTcsOSwwLDAsMCwxMTYsOTcsCisgICAgMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSwyOCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMjUsMSwyMiwKKyAgICAxLDE5LDEsMTE3LDI0LDAsMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2NiwKKyAgICA5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5OSw1LDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMjIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE5OCwxLDAsMCwxMjQsMiwwLDEwMCwxLDAsCisgICAgMTAwLDIsMCwxMzMsMiwwLDI1LDEyNSw1LDAsMTI0LDIsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMzLDIsMCwyNSwxMjUsNiwwLDEyNCwyLDAsMTAwLDMsMCwKKyAgICAxMDAsNCwwLDEzMywyLDAsMjUsMTI1LDcsMCwxMjQsNSwwLDExNiwwLDAsCisgICAgMTA3LDMsMCwxMTQsMTA1LDAsMTAwLDUsMCwxMDYsMSwwLDEyNCwxLDAsMTI0LAorICAgIDUsMCwxMzEsMiwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEwMCw2LAorICAgIDAsMTI0LDEsMCwxMDAsNywwLDEyNCwzLDAsMTMxLDEsMiwxMzAsMSwwLAorICAgIDExMCwxMTYsMCwxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywKKyAgICAzLDAsMTE0LDE2MywwLDEwMCw4LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsMTI1LDksMCwxMTYsNCwwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LAorICAgIDAsMTI0LDksMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDMsMCwKKyAgICAxMjQsNywwLDEzMSwxLDAsMTAwLDIsMCwxMDcsMywwLDExNCwyMjEsMCwxMDAsCisgICAgOSwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw5LDAsMTE2LDQsCisgICAgMCwxMjQsOSwwLDEzMSwxLDAsMSwxMTYsNSwwLDEyNCw5LDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTI0LDQsMCwxMDAsMSwwLDEwNyw5LDAsCisgICAgMTE0LDE4NCwxLDEyMSwyMCwwLDExNiw3LDAsMTI0LDQsMCwxMDAsMTAsMCwyNSwKKyAgICAxMzEsMSwwLDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDgsMCwxMDcsMTAsCisgICAgMCwxMTQsMTcsMSwxLDEsMSw4OSwxMTAsNzEsMCw4OCwxMTYsOSwwLDEyNCwKKyAgICA2LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCw4OCwxLDEwMCwxMSwKKyAgICAwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw5LDAsMTE2LDQsMCwKKyAgICAxMjQsOSwwLDEzMSwxLDAsMSwxMTYsMiwwLDEyNCw5LDAsMTAwLDYsMCwKKyAgICAxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsMTEwLAorICAgIDAsMCwxMjEsMTgsMCwxMjQsNCwwLDEwMCwxMiwwLDI1LDEwMCwxMywwLDY0LAorICAgIDEyNSwxMSwwLDg3LDExMCwxOCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMTI2LAorICAgIDEsMSwxLDEsODksMTEzLDE4NCwxLDg4LDExNiw5LDAsMTI0LDcsMCwxMzEsCisgICAgMSwwLDEyNCwxMSwwLDEwNywzLDAsMTE0LDE4NCwxLDExNiwyLDAsMTAwLDExLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDYsMCwxMjQsMSwwLAorICAgIDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsMTEzLDE4NCwxLDExMCwKKyAgICAwLDAsMTI0LDIsMCwxMDAsNCwwLDEwMCwxLDAsMTMzLDIsMCwyNSw4MywKKyAgICA0MCwxNCwwLDAsMCwxMTcsMTkzLDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDQ0LDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsNDQsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsCisgICAgMTA5LDExMiwzMiw5NywxMTAsMTAwLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTE1LDEwNSwKKyAgICAxMjIsMTAxLDMyLDk3LDEwOCwxMTEsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTksOTcsMTIxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiwxMDUsMTE1LDMyLDc4LDExMSwKKyAgICAxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTUsMTA3LDEwNSwxMTIsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiw5OSwxMDQsMTAxLDk5LDEwNywKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMDUsNCwwLDAsCisgICAgMCwxMDUsOCwwLDAsMCwxMDUsMTIsMCwwLDAsMTE3LDMwLDAsMCwwLAorICAgIDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsMTE3LDQsCisgICAgMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDE5LDAsMCwwLDk4LDk3LDEwMCwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsMTQsMCwwLDAsOTgsOTcsMTAwLAorICAgIDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDEyMywxMjUsMTE3LDUsMCwwLDAsCisgICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsMjQsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLAorICAgIDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTIzLDEyNSwxMTcsNCwwLDAsMCwxMTUsMTA1LDEyMiwxMDEsMTA4LDMsMCwwLDAsCisgICAgMjU1LDEyNywyNTUsMTI3LDMsMCw0MCwxMCwwLDAsMCwxMTcsMTIsMCwwLDAsCisgICAgOTUsNzcsNjUsNzEsNzMsNjcsOTUsNjYsODksODQsNjksODMsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LAorICAgIDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LAorICAgIDExNSw5NywxMDMsMTAxLDExNyw4LDAsMCwwLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMywwLDAsMCwxMDUsCisgICAgMTEwLDExNiwxMTcsOCwwLDAsMCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsCisgICAgNywwLDAsMCw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDQwLDEyLDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LAorICAgIDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsCisgICAgMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywKKyAgICAxMTYsMTE1LDExNyw1LDAsMCwwLDEwOSw5NywxMDMsMTA1LDk5LDExNywxMywwLDAsCisgICAgMCwxMTQsOTcsMTE5LDk1LDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMTE3LDgsCisgICAgMCwwLDAsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE3LDMsMCwwLDAsCisgICAgMTA5LDExNSwxMDMsMTE3LDcsMCwwLDAsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LAorICAgIDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjAsMCwwLAorICAgIDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzNiwzLDAsMCwxMTUsNjYsMCwwLDAsMCw3LAorICAgIDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwyNywxLDE4LDEsMTUsMSwKKyAgICAxMCwxLDE1LDEsMTgsMSwxNSwxLDEwLDEsMTUsMSwxMiwxLDMsMSwKKyAgICAyMCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwxMCwxLDE1LDEsMTIsMSwKKyAgICAzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDMsMSwxNSwxLDIxLDMsCisgICAgMTE3LDM0LDAsMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LAorICAgIDk5LDExNSw0Niw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsMCwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSw5OSwyLDAsMCwwLDEsMCwwLDAsNSwKKyAgICAwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwwLAorICAgIDEyNCwxLDAsMTA2LDAsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsCisgICAgMywwLDEzMSwxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDMsCisgICAgMCwxMzEsMSwwLDEyNCwxLDAsOTUsMywwLDEyNCwyLDAsMTE1LDEwNiwwLAorICAgIDEyMSwyMiwwLDExNiw0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMTI0LAorICAgIDEsMCw5NSw1LDAsODcsMTEzLDExOCwwLDQsMTE2LDYsMCwxMDcsMTAsMCwKKyAgICAxMTQsMTAyLDAsMSwxLDEsMTI0LDEsMCwxMDYsMywwLDEyNCwxLDAsOTUsCisgICAgNSwwLDg5LDExMywxMTgsMCw4OCwxMTAsMTIsMCwxMjQsMSwwLDEwNiwzLDAsCisgICAgMTI0LDEsMCw5NSw1LDAsMTI0LDMsMCwxMjQsMSwwLDk1LDcsMCwxMjQsCisgICAgMCwwLDEwNiw4LDAsMTI0LDMsMCwxMzEsMSwwLDExNCwxNzAsMCwxMTYsOSwKKyAgICAwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTAzLDEsCisgICAgMCwxMjQsMSwwLDk1LDEwLDAsMTEwLDI1LDAsMTI0LDEsMCwxMDYsNywwLAorICAgIDEwNiwxMSwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEyNCwxLDAsCisgICAgOTUsNywwLDEyNCwwLDAsMTI0LDEsMCw5NSwxMiwwLDExNiwxMywwLDExNiwKKyAgICAxNCwwLDEyNCw0LDAsMTI0LDEsMCwxMDYsMTUsMCwxMzEsMywwLDEsMTI0LAorICAgIDEsMCw4Myw0MCwzLDAsMCwwLDExNyw4MiwwLDAsMCw3MiwxMDEsMTA4LAorICAgIDExMiwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwKKyAgICAxMDgsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMzIsMTExLDExNCwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMDUsCisgICAgMCwwLDAsMCwxMTcsMSwwLDAsMCw0Niw0MCwxNiwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsOCwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTcsMTIsMCwwLDAsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwxMTcsMTcsMCwwLDAsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMTE3LDE5LDAsMCwKKyAgICAwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDk1LDk1LDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwKKyAgICAxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwKKyAgICAxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LAorICAgIDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDI1LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCisgICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwKKyAgICAwLDEwMSwxMjAsMTAxLDk5LDExNyw4LDAsMCwwLDk1LDk1LDEwMCwxMDUsOTksMTE2LAorICAgIDk1LDk1LDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMCwwLDAsMCwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDEyLDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgxLDMsMCwwLDExNSwzMiwwLDAsMCwwLDQsOSwxLDE1LDEsMTgsCisgICAgMSw2LDEsMywxLDIyLDEsMTMsMSwyMCwyLDEyLDEsOSwxLDE1LAorICAgIDEsMjgsMiwyNSwxLDksMSwxOSwxLDExNywyNiwwLDAsMCw5NSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNzAsNDAsOSwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwKKyAgICAwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywyMCwwLDAsMCw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDExNywxNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDExNywxMiwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwKKyAgICAxMDUsOTksMTE1LDIzLDMsMCwwLDExNSwxMCwwLDAsMCwxNiwzLDYsMiwKKyAgICAxMiw4LDEyLDQ1LDYsMSwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDEwNCwwLAorICAgIDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCisgICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywKKyAgICAwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMCwwLDkwLAorICAgIDYsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMSwKKyAgICAwLDEwMCwxMiwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMywwLDEwMCwxNCwwLAorICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwxNSwwLDgzLDQwLDE2LDAsMCwwLDExNywKKyAgICAxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDAsMTMwLDEsMCwKKyAgICAxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDEyMSwwLDAsMCw3OSwxMTIsCisgICAgMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMDUsMTA5LDEwMSwKKyAgICAzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKKyAgICAxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE1LDExNiwxMTQsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDAsMSwwLDAsMCwxMTcsMTksMCwKKyAgICAwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTA3LDMsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsNCwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIwLDAsMCwwLDEwNSwxLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMSwwLDU0LDgzLDQwLDIsMCwwLAorICAgIDAsMTE3LDExNCwxLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiwKKyAgICA5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLAorICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKKyAgICAxMDAsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE2LAorICAgIDExMSwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsMTE1LAorICAgIDExNiwxMTQsNDEsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODAsMTExLDExNSwKKyAgICAxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTA3LDEwMSwxMjEsMTE1LDU4LDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDEwOSwxMTYsMTA1LDEwOSwxMDEsMzksMzIsNDAsMTA5LAorICAgIDk3LDExMCwxMDAsOTcsMTE2LDExMSwxMTQsMTIxLDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsCisgICAgMTA5LDExMiwzMiwxMTEsMTAyLDMyLDEwOCw5NywxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDU5LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDExNSwxMDUsMTIyLDEwMSwzOSwzMiwKKyAgICA0MCwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsCisgICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDExNCwxMDEsOTcsMTAwLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDksMTE2LDEwNSwxMDksMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTMsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxMCwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwKKyAgICAyLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQwLDEsMCwwLDAsMTE3LDIyOCwKKyAgICAwLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsCisgICAgMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiwKKyAgICA5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LAorICAgIDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLAorICAgIDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMTYsMTE0LDk3LDExMCwxMTUsMTAyLAorICAgIDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MCwxLDAsMCwwLDExNyw4LDAsMCwKKyAgICAwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEwLDAsMCwwLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5Nyw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCwKKyAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDEyNSwKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE3LDI4LDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5OSwzLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMCwwLDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MCwKKyAgICAyLDAsMCwwLDExNywxNTEsMCwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywKKyAgICAxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwKKyAgICAxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsCisgICAgMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsCisgICAgMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3OCw0MCwxLDAsMCwwLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5Nyw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTM1LDMsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsNiwxMTcsMjEsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCw5LDAsMCwwLDQ0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw2MiwxLDAsMCwxMDAsMSwwLDEwMCwyLDAsMTA4LDAsMCwxMjUsCisgICAgMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsCisgICAgMCwxMjEsMTksMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDMsMCwxMzEsMSwwLAorICAgIDEyNSw0LDAsODcsMTEwLDU4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwxMDYsCisgICAgMCwxLDEyNSw1LDAsMSwxMjIsMjYsMCwxMTYsNCwwLDEwMCwzLDAsMTAwLAorICAgIDQsMCwxMjQsMSwwLDEzMSwxLDEsMTI0LDUsMCwxMzAsMiwwLDg3LDg5LAorICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEwLDEsMCwKKyAgICA4OCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEwNiw3LDAsCisgICAgMTI1LDYsMCwxMjEsMTksMCwxMjQsMiwwLDEwNiw4LDAsMTI0LDYsMCwxMzEsCisgICAgMSwwLDEyNSw3LDAsODcsMTEwLDU4LDAsNCwxMTYsOSwwLDEwNywxMCwwLAorICAgIDExNCwyMDQsMCwxLDEyNSw1LDAsMSwxMjIsMjYsMCwxMTYsNCwwLDEwMCw1LAorICAgIDAsMTAwLDQsMCwxMjQsMSwwLDEzMSwxLDEsMTI0LDUsMCwxMzAsMiwwLAorICAgIDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEwLAorICAgIDEsMCw4OCwxMTYsNSwwLDEwNiwxMCwwLDEwMCwyLDAsMTAwLDcsMCwxMzEsCisgICAgMiwwLDEyNSw4LDAsMTIxLDMwLDAsMTI0LDgsMCwxMDYsMTMsMCwxMjQsNCwKKyAgICAwLDEwNiwxMywwLDEyNCw3LDAsMTAwLDEsMCwyNSwxMzEsMSwwLDEzMSwxLAorICAgIDAsODMsODcsMTEwLDU4LDAsNCwxMTYsMTQsMCwxMDcsMTAsMCwxMTQsNTcsMSwKKyAgICAxLDEyNSw1LDAsMSwxMjIsMjYsMCwxMTYsNCwwLDEwMCw2LDAsMTAwLDQsCisgICAgMCwxMjQsMSwwLDEzMSwxLDEsMTI0LDUsMCwxMzAsMiwwLDg3LDg5LDEwMCwKKyAgICAyLDAsMTAwLDIsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEwLDEsMCw4OCwKKyAgICAxMDAsMiwwLDgzLDQwLDgsMCwwLDAsMTE3LDUyLDAsMCwwLDY3LDExMSwKKyAgICAxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNDYsMTA1LDAsMCwwLDAsNzgsMTE3LDM5LDAsMCwwLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LAorICAgIDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5Nyw0MCw0MSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsMjUsMCwKKyAgICAwLDAsNzAsOTcsMTA1LDEwOCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLAorICAgIDk5LDExNiwzMiwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMTE3LDI4LDAsMCwwLAorICAgIDcwLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsODQsNDAsMTUsMCwKKyAgICAwLDAsMTE3LDgsMCwwLDAsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAorICAgIDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDcsMCwKKyAgICAwLDAsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCw5NSwxMDUsCisgICAgMTExLDExNyw3LDAsMCwwLDY2LDEyMSwxMTYsMTAxLDExNSw3Myw3OSwxMTcsOCwwLAorICAgIDAsMCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMTE3LDE1LDAsMCwwLDEwMCwKKyAgICAxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDExNywxMSwKKyAgICAwLDAsMCw4MywxMjEsMTEwLDExNiw5NywxMjAsNjksMTE0LDExNCwxMTEsMTE0LDExNywyNSwKKyAgICAwLDAsMCw3MywxMTAsOTksMTE0LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTA4LDc4LDEwMSwKKyAgICAxMTksMTA4LDEwNSwxMTAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE3LDQsMCwwLAorICAgIDAsNzgsMTExLDExMCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDYsCisgICAgMCwwLDAsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsMTgsMCwwLDAsODUsMTEwLAorICAgIDEwNSw5OSwxMTEsMTAwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDQwLDksMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwKKyAgICAxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsCisgICAgMTA0LDExNywxMiwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSwxMTcsMywwLDAsMCwxMDEsMTIwLDk5LDExNywxMCwwLDAsMCwxMTQsCisgICAgMTAxLDk3LDEwMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LDAsMCwwLDEwMSwxMTAsCisgICAgOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsMTUsMCwwLDAsMTEwLDEwMSwxMTksMTA4LDEwNSwKKyAgICAxMTAsMTAxLDk1LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTQ0LDMsMCwwLDExNSwzOCwwLDAsMCwwLDIsCisgICAgMTIsMSwxNSwxLDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTgsMSwKKyAgICAzLDEsMTksMSwxOCwxLDksMSwzMSwxLDE4LDEsMywxLDMwLDEsCisgICAgMTgsMSw5LDEsMTE3LDIzLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsNDUsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDUyLDIsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMTAsMCwxMjUsMywwLDEyMSwKKyAgICAxNiwwLDExNiwyLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw0LDAsODcsMTEwLAorICAgIDI0LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2MywwLDEsMSwxLDEwMCwKKyAgICAxMCwwLDEyNSw0LDAsODksMTEwLDE0LDEsODgsMTIxLDE5LDAsMTI0LDAsMCwKKyAgICAxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLDg3LDExMCwxOCwwLAorICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLDEsODksMTEwLDIzMCwKKyAgICAwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMTI1LAorICAgIDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwKKyAgICAwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKKyAgICAxNTksMCwxLDEsMSw4OSwxMTAsMTc0LDAsODgsMTIxLDI4LDAsMTI0LDAsMCwKKyAgICAxMDYsOCwwLDEyNCwxLDAsMTI0LDYsMCwxMjQsNCwwLDEyNCw1LDAsMTMxLAorICAgIDQsMCwxMjUsNywwLDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwKKyAgICAxMDIsMiwwLDEwNywxMCwwLDExNCwyMTQsMCwxLDEsMSw4OSwxMTAsMTE5LDAsCisgICAgODgsMTE2LDExLDAsMTAwLDIsMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDMsMCwKKyAgICAxLDExNiwxMiwwLDEwNiwxMywwLDEyNCw3LDAsMTMxLDEsMCwxMjUsOCwwLAorICAgIDExNiwxNCwwLDEyNCw4LDAsMTE2LDE1LDAsMTMxLDIsMCwxMTQsMzgsMSwxMTYsCisgICAgMTYsMCwxMDYsMTcsMCwxMjQsOCwwLDEyNCwyLDAsMTMxLDIsMCwxLDExNiwKKyAgICAxMSwwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwwLDEsMTI0LDgsMCw4MywKKyAgICAxMDAsNCwwLDEyNSw5LDAsMTE2LDksMCwxMjQsOSwwLDEwNiwxOCwwLDEyNCwKKyAgICA0LDAsMTMxLDEsMCwxMDAsNSwwLDEyNCwxLDAsMTAwLDYsMCwxMjQsNCwKKyAgICAwLDEzMSwxLDIsMTMwLDEsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwKKyAgICAxMzEsMSwwLDEyNSwxMCwwLDExNiwxOSwwLDExNiwyMCwwLDEyNCwxMCwwLDEyNCwKKyAgICAyLDAsMTAwLDcsMCwxMDAsOCwwLDEwMCwxMSwwLDEzMSw0LDEsMTI1LDExLAorICAgIDAsMTE2LDExLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMTYsMjIsCisgICAgMCwxMDYsMjMsMCwxMiwxMTQsNDgsMiwxMjQsNCwwLDEwMCwxMCwwLDEwNyw5LAorICAgIDAsMTE0LDQ4LDIsMTI0LDMsMCwxMDAsMTAsMCwxMDcsOSwwLDExNCw0OCwyLAorICAgIDExNiwyNCwwLDExNiwyNSwwLDEzMSwxLDAsMTI1LDYsMCwxMjQsNiwwLDEwNiwKKyAgICAyNiwwLDExNiwyNywwLDEyNCwzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LAorICAgIDYsMCwxMDYsMjYsMCwxMTYsMjcsMCwxMTYsMjgsMCwxMjQsMTAsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCw2LDAsMTA2LDI2LDAsMTE2LDEyLAorICAgIDAsMTA2LDI5LDAsMTI0LDExLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTIxLDM2LAorICAgIDAsMTI0LDAsMCwxMDYsMzAsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsMCwKKyAgICAxMzEsMywwLDEsMTE2LDExLDAsMTAwLDksMCwxMjQsNCwwLDEzMSwyLDAsCisgICAgMSw4NywxMTMsNDgsMiw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ0LDIsMSwKKyAgICAxLDEsODksMTEzLDQ4LDIsODgsMTEwLDAsMCwxMjQsMTEsMCw4Myw0MCwxMiwKKyAgICAwLDAsMCwxMTcsMTkwLDAsMCwwLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAorICAgIDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LAorICAgIDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywKKyAgICAxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk3LDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNyw1LDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTE3LDEzLDAsMCwwLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKKyAgICAxMjMsMTI1LDExNywxOSwwLDAsMCw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsMTE3LDIxLDAsMCwwLDc4LAorICAgIDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwKKyAgICAxMTAsMzIsMTIzLDEyNSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDEsMTIwLDEwMSw5OSwxMTcsCisgICAgMTIsMCwwLDAsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKKyAgICAxMTcsMTAsMCwwLDAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw3OCwKKyAgICA4NCw0MCwzMSwwLDAsMCwxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDEwLAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTcsMywwLAorICAgIDAsMCwxMDUsMTEwLDExNiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDExNyw3LDAsMCwwLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMjAsCisgICAgMCwwLDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDgsMCwwLDAsNjksNzksNzAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNywwLDAsMCwxMDksOTcsCisgICAgMTE0LDExNSwxMDQsOTcsMTA4LDExNyw1LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDExNSwxMTcsCisgICAgMTAsMCwwLDAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTcsMTAsCisgICAgMCwwLDAsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNyw0LDAsCisgICAgMCwwLDk1LDEwNSwxMDksMTEyLDExNywxNiwwLDAsMCw5NSwxMDIsMTA1LDEyMCw5NSwKKyAgICA5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLAorICAgIDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDExNyw3LDAsMCwwLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAorICAgIDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywzLDAsMCwwLDExNSwxMjEsCisgICAgMTE1LDExNywxOSwwLDAsMCwxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOSwwLDAsMCw5OCwxMjEsCisgICAgMTE2LDEwMSw5NywxMTQsMTE0LDk3LDEyMSwxMTcsMTIsMCwwLDAsOTUsNzcsNjUsNzEsCisgICAgNzMsNjcsOTUsNjYsODksODQsNjksODMsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExMCwxMDAsMTE3LDcsMCwwLDAsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMywxMTcsCisgICAgMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNSwwLDAsMCwxMDAsMTE3LDEwOSwxMTIsCisgICAgMTE1LDExNywxNSwwLDAsMCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDQwLDEyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTA5LDExNiwxMDUsMTA5LAorICAgIDEwMSwxMTcsMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDIsMCwwLDAsMTE1LDExNiwxMTcsNCwwLDAsMCwxMDAsCisgICAgOTcsMTE2LDk3LDExNywxMCwwLDAsMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LAorICAgIDExNiw5NywxMTcsNSwwLDAsMCwxMDIsMTExLDExNywxMTAsMTAwLDExNywzLDAsMCwKKyAgICAwLDEwOSwxMTUsMTAzLDExNywxMiwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwxMTcsMTEsMCwwLDAsOTksMTExLDEwMCwxMDEsOTUsMTExLAorICAgIDk4LDEwNiwxMDEsOTksMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTY2LDMsCisgICAgMCwwLDExNSw5OCwwLDAsMCwwLDcsMTUsMSw2LDEsMywxLDE2LAorICAgIDEsMTMsMSwxMSwyLDMsMSwxOSwxLDEzLDEsNSwyLDE2LDEsMywKKyAgICAxLDE5LDEsMTMsMSw1LDIsMywxLDEyLDEsMywxLDEzLDEsMTksCisgICAgMSw1LDIsOSwxLDcsMSwxNSwxLDE1LDEsMTYsMSw2LDEsNywKKyAgICAxLDQsMiw2LDEsMTgsMSwxNSwxLDE1LDEsNiwxLDEyLDEsOSwKKyAgICAxLDEzLDEsMjIsMSwxMiwxLDEyLDEsMTksMSwyNSwxLDIyLDEsMywKKyAgICAxLDE5LDEsMTcsMSwxMywxLDgsMSwxMTcsMjEsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LAorICAgIDAsMSwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSwzMiw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMSwxMTAsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSwzMiw5NywxMTAsMTAwLDMyLDgyLDEwMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsCisgICAgMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDMyLDg1LDExNSwxMDEsCisgICAgMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDUsOTksMTE2LDk3LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTksMTA0LDEwMSwxMTYsCisgICAgMTA0LDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsMzIsMTE3LDExNSwxMDEsMTE1LDQ3LDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDQwLDEsMCwwLDAsMTE3LDEyLDAsMCwwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwyMjgsMywwLDAsMTE1LDIsMCwwLDAsMCw4LDExNywyNCwwLDAsCisgICAgMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDEwLDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTcsMTUsMCwwLDAsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOCwKKyAgICAwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDExNywxMCwwLDAsMCwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LDAsMCwwLDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMDUsMywwLDAsMTE1LDE0LDAsMCwKKyAgICAwLDE2LDIsMTIsNiwxMiwxMiwxMiwxMCwxMiw5LDEyLDIyLDEyLDYyLDExNywKKyAgICAxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLAorICAgIDAsMiwwLDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwKKyAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwKKyAgICAxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAxLDUsMCwxMzUsCisgICAgMCwwLDEwMiwxLDAsMTAwLDQsMCwxMDAsNSwwLDEzNCwwLDAsMTMxLDEsCisgICAgMCw5MCw2LDAsMTAxLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwKKyAgICAxMzEsMSwwLDkwLDcsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCwKKyAgICA4LDAsMTM1LDAsMCw4Myw0MCwxMCwwLDAsMCwxMTcsMTAsMCwwLDAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMDMsMCwwLDAsNjYsCisgICAgOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDExNSwzMiwxMTYsMTA0LDk3LDExNiwxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAorICAgIDExNywxMTUsOTcsMTAzLDEwMSw0Niw5OSwzLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwKKyAgICAxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwKKyAgICAxLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw3NSwwLDAsMCwKKyAgICA2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLAorICAgIDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNzgsNDAsMiwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCisgICAgMjQ0LDMsMCwwLDExNSw0LDAsMCwwLDAsMyw5LDEsMTE3LDE5LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsCisgICAgMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDI2LDAsMCwwLDc2LAorICAgIDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MCwzLDAsMCwwLDExNyw1LAorICAgIDAsMCwwLDExNSwxMTcsMTEyLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsOTUsOTUsOTksMTA4LAorICAgIDk3LDExNSwxMTUsOTUsOTUsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwKKyAgICAwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDI1MCwzLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDUsMTE3LDIyLDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCw4Myw0MCwxLDAsMCwwLDExNyw1OCwwLDAsMCw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCisgICAgOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQwLDEsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxLDQsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMywxMTcsMjMsMCwwLDAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw4LDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTQzLDE3LDAsCisgICAgMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTMxLDAsMCw4Myw4NywxMDAsMiwKKyAgICAwLDgxLDg4LDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMzksMCwwLAorICAgIDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LDk3LAorICAgIDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMTE3LDEsMCwwLDAsMTE0LDc4LDQwLAorICAgIDMsMCwwLDAsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsNiwwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3Myw3OSwxMTcsNCwwLDAsMCwxMTQsMTAxLDk3LDEwMCwKKyAgICA0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDYsNCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwyLDIxLDEsMTE3LDE5LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDksCisgICAgMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywKKyAgICAxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsOTksCisgICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMiwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCwxLDAsMCwwLDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCwKKyAgICA0MCwxLDAsMCwwLDExNyw5LDAsMCwwLDk1LDk1LDk5LDEwOCw5NywxMTUsCisgICAgMTE1LDk1LDk1LDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDIzOSwzLDAsMCwxMTUsMTAsMCwwLDAsMTYsMyw2LAorICAgIDIsMTIsNiwyNCw3LDE4LDUsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKKyAgICAwLDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSw2OCwwLDAsMCwKKyAgICAxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwxLDkwLDYsMCwKKyAgICAxMDAsMTAsMCw4Myw0MCwxMSwwLDAsMCwxMTcsMTYsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNjIsCisgICAgMCwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwKKyAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTA1LDIsMCwxMjQsMiwwLAorICAgIDEwNiwyLDAsMTAwLDEsMCw1NCwxMjQsMiwwLDEwNiwzLDAsMTAwLDIsMCwKKyAgICA1NCw4Myw0MCwzLDAsMCwwLDExNywzMywwLDAsMCw4MiwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTE3LDUsMCwKKyAgICAwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTUsMTA1LDEyMiwxMDEsCisgICAgNDAsNCwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsCisgICAgMCwwLDExNSwxMTYsOTcsMTE2LDExNyw4LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExNiwKKyAgICAxMDUsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MCwKKyAgICAzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsMTE2LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxNiw0LDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDIsMTUsMSwxMTcsMjcsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsMCwwLDUsMCwKKyAgICAwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDgxLDAsMCwwLDEyMSwKKyAgICAyMiwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTA2LDIsCisgICAgMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCisgICAgNDgsMCwxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDEsMCw4OCwKKyAgICAxMjQsNCwwLDEwMCwyLDAsNzksMTI1LDQsMCwxMjQsMCwwLDEwNiw0LDAsCisgICAgMTI0LDIsMCwxMjQsMywwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwxLDgzLAorICAgIDQwLDQsMCwwLDAsNzgsMTA1LDE4MiwxLDAsMCwxMDUsMTI4LDAsMCwwLAorICAgIDExNyw1LDAsMCwwLDk1LDEwOSwxMTEsMTAwLDEwMSw0MCw1LDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsCisgICAgMTE3LDcsMCwwLDAsMTE1LDExNiw5NSwxMDksMTExLDEwMCwxMDEsMTE3LDcsMCwwLAorICAgIDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw4LDAsMCwwLDExNSwxMDEsMTE2LAorICAgIDk1LDEwMCw5NywxMTYsOTcsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDEzLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LDQsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjEsNCwwLDAsMTE1LDEyLDAsMCwwLAorICAgIDAsMiwzLDEsMjIsMSwxMywxLDExLDMsMTAsMSwxMTcsMzIsMCwwLAorICAgIDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDExNyw1LDAsMCwwLDk1LDEwOSwxMTEsMTAwLDEwMSwxMDUsMTgyLDEsMCwwLAorICAgIDk5LDMsMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDE4LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw1MywxLDAsMCwxMTYsMCwwLDEyNCwxLDAsCisgICAgMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEwMywwLDAsMTI1LAorICAgIDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwwLDExNiwxLDAsMTI0LDQsCisgICAgMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLDAsMTI0LDQsMCwxMzEsMSwKKyAgICAwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsMTI0LDYsMCwxMDYsMiwwLAorICAgIDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLDg3LDEyMCwxMzIsMCwxMTYsMywKKyAgICAwLDEyNCw2LDAsMTMxLDEsMCw2OCw5MywxMTgsMCwxMjUsNywwLDExNiw0LAorICAgIDAsMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwKKyAgICAxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEsODcsMTEzLDk0LAorICAgIDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsMCwxLDEsMSwxMTksOTQsCisgICAgMCw4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIxMSwwLDEsCisgICAgMTI1LDgsMCwxLDEyMiwyNSwwLDExNiw5LDAsMTAwLDEsMCwxMjQsNCwwLAorICAgIDEyNCw4LDAsMTMxLDMsMCwxLDEwMCwyLDAsODMsODcsODksMTAwLDIsMCwKKyAgICAxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTMsOTQsMCw4OCwxMTMsOTQsCisgICAgMCw4NywxMjEsMzMsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsCisgICAgMCwxMzEsMywwLDEsMTE2LDksMCwxMDAsMywwLDEyNCwxLDAsMTMxLDIsCisgICAgMCwxLDg3LDExMCw1MywwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsNDgsMSwKKyAgICAxLDEyNSw4LDAsMSwxMjIsMjEsMCwxMTYsOSwwLDEwMCwxLDAsMTI0LDEsCisgICAgMCwxMjQsOCwwLDEzMSwzLDAsMSw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsCisgICAgMTI1LDgsMCwxMjYsOCwwLDg4LDExMCwxLDAsODgsMTAwLDIsMCw4Myw0MCwKKyAgICA0LDAsMCwwLDExNywyNywwLDAsMCw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsCisgICAgMTIxLDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDYsMTE3LDI3LDAsMCwwLDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzgsMTE3LDEyLDAsMCwwLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICAxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDAsMTEsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE3LDYsMCwwLDAsCisgICAgOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsOCwwLDAsMCwxMTQsMTAxLDExOCwxMDEsMTE0LAorICAgIDExNSwxMDEsMTAwLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLAorICAgIDEwNSwxMTAsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNSwwLDAsMCwxMDksCisgICAgMTA3LDEwMCwxMDUsMTE0LDExNywxNSwwLDAsMCw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LAorICAgIDExNSwxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLDAsMCw3OSw4Myw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMywwLDAsMCw5NSwxMTksCisgICAgMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSw0MCw5LDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNyw1LDAsMCwwLAorICAgIDk1LDEwOSwxMTEsMTAwLDEwMSwxMTcsNiwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNyw0LDAsMCwKKyAgICAwLDExMiw5NywxMTQsMTE2LDExNywzLDAsMCwwLDEwMSwxMjAsOTksNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMTUsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDQsMCwwLDExNSwzOCwwLDAsMCwwLAorICAgIDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwxNSwxLDMsCisgICAgMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwyNywxLDMsMSwxNiwKKyAgICAxLDE3LDEsMTgsMiwxMTcsMjUsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDc4LDQwLDcsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LAorICAgIDk1LDk1LDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwKKyAgICAxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5Nyw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMiw0LDAsMCwxMTUsOCwwLDAsMCwKKyAgICAxNiwyLDYsMiwxMiw1LDEyLDExLDExNywxNiwwLDAsMCw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwKKyAgICAwLDAsMTE1LDYyLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLAorICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCisgICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAorICAgIDAsMTAwLDgsMCw4Myw0MCw5LDAsMCwwLDExNywyMCwwLDAsMCw4MywKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsNDUsMCwwLDAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwKKyAgICAxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAxLDgzLDQwLDMsMCwwLDAsNzgsMTE3LDEwLDAsMCwwLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDg0LDQwLDIsMCwwLDAsMTE3LDEyLDAsCisgICAgMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LAorICAgIDAsMCwwLDg0LDExNCwxMTcsMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwKKyAgICAwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2NSw0LAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDMyLDAsMCwwLDgzLDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDYsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEzOCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsCisgICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwKKyAgICAzLDAsMTI0LDIsMCwxMDAsMCwwLDEzMSw0LDAsMTI1LDQsMCwxMTYsNCwKKyAgICAwLDEwNiw1LDAsMTI0LDQsMCwxMzEsMSwwLDEyNSw1LDAsMTE2LDYsMCwKKyAgICAxMjQsNSwwLDExNiw3LDAsMTMxLDIsMCwxMTQsMTAxLDAsMTE2LDgsMCwxMDAsCisgICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCw1LDAsODMsMTE2LDksMCwKKyAgICAxMDAsMiwwLDEwNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsMywwLDEyNCwKKyAgICAxLDAsMTAwLDQsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMCwKKyAgICAwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LDIxLDAsMCwwLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLAorICAgIDExNCwxMjUsMTE3LDIxLDAsMCwwLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwxMSwKKyAgICAwLDAsMCwxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsCisgICAgOTcsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDQsMCwwLDAsNzgsCisgICAgMTExLDExMCwxMDEsMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsCisgICAgNSwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwKKyAgICAxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsCisgICAgOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDExLDAsMCwKKyAgICAwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwKKyAgICAwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDAsNiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLAorICAgIDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw2OCw0LDAsMCwxMTUsMTgsMCwwLDAsMCwKKyAgICAxLDE1LDEsMTUsMSwyNCwxLDE1LDEsMTUsMSwxMywxLDQsMiwxOCwKKyAgICAxLDExNywyOSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsCisgICAgODMsNDAsMiwwLDAsMCwxMTcsMzksMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLAorICAgIDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywKKyAgICA4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiwKKyAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDgwLDQsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMiwxMTcsMzEsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LAorICAgIDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCw3LDAsMCwwLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLAorICAgIDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLAorICAgIDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDQsMCwwLDExNSw4LAorICAgIDAsMCwwLDE2LDIsNiwyLDEyLDMsMTIsMTIsMTE3LDIwLDAsMCwwLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDUsMCwwLDAsNjYsMCwwLDAsMTE1LDEwNCwwLDAsMCwxMjQsMCwKKyAgICAwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDEsNSwwLDEwMSw2LDAsMTAxLDcsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAorICAgIDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCw4LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsOSwwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKKyAgICAxMSwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywxOSwwLDAsMCwKKyAgICA2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsOTMsMCwwLDAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LAorICAgIDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksCisgICAgMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLAorICAgIDAsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTcsNCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDksMSwxMTcsMjgsMCwwLDAsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCw0LDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxNzUsCisgICAgMCwwLDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCwxMjUsCisgICAgMiwwLDEyMSwxMDcsMCwxMTYsMiwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMywwLDEyNSwzLDAsMTE2LDYsMCwKKyAgICAxMDAsMSwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMiwwLDEsMTI0LDAsMCwKKyAgICAxMDYsNywwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMTE3LDAsMTE2LDgsMCwxMjQsCisgICAgMywwLDEwMCwyLDAsMTMxLDIsMCwxMiwxMTQsMTE3LDAsMTE2LDksMCwxMjQsCisgICAgMCwwLDEwNiw1LDAsMTMxLDEsMCwxMDAsMywwLDI1LDEwMywxLDAsMTI0LAorICAgIDMsMCw5NSwxMCwwLDExMCwwLDAsMTI0LDMsMCw4Myw4NywxMTAsNDYsMCwKKyAgICAxLDEsMSwxMjQsMiwwLDEyLDExNCwxNjMsMCwxMjQsMSwwLDExNiwwLDAsCisgICAgMTA2LDEsMCwxMDcsNiwwLDExNCwxNjMsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDEsMCw2MSwxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwKKyAgICAwLDgzLDQwLDUsMCwwLDAsMTE3LDI1LDAsMCwwLDc2LDExMSw5NywxMDAsCisgICAgMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDExNywzMywwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMDUsMCwwLDAsMCw3OCw0MCwxMSwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwKKyAgICAxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwKKyAgICAxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwKKyAgICAwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLAorICAgIDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDcsMCwwLAorICAgIDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5NSw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDEwMSw0LDAsMCwxMTUsMjQsMCwwLDAsMCw1LAorICAgIDE1LDEsMywxLDksMSwxNSwxLDE2LDEsMzEsMSwyOCwxLDgsMSwKKyAgICAzLDEsMjIsMSwxMywxLDExNywzMSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsCisgICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsMTE1LAorICAgIDQ4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsCisgICAgMTAwLDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsMTM1LDAsMCwxMDIsMSwwLAorICAgIDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwzLDAsNjgsMTMxLDEsMCwKKyAgICAxMzEsMSwwLDgzLDQwLDQsMCwwLDAsMTE3LDQ5LDAsMCwwLDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMDUsCisgICAgMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwKKyAgICAwLDkzLDIxLDAsMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwKKyAgICAyMywxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLDIsMCwKKyAgICAwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDc4LAorICAgIDQwLDAsMCwwLDAsNDAsMiwwLDAsMCwxMTcsMiwwLDAsMCw0NiwKKyAgICA0OCwxMTcsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw0MCwxLDAsMCwKKyAgICAwLDExNyw5LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTIyLDQsMCwwLDExNSwyLDAsMCwwLDYsMSwxMTcsCisgICAgNDksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAorICAgIDEwMSwxMjAsMTEyLDExNCw2Miw0MCw0LDAsMCwwLDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDExNywzLDAsMCwwLDk3LDExMCwxMjEsMTE3LDE4LDAsMCwwLAorICAgIDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsMTAyLDEwNSwxMDgsMTAxLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE5LDQsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgMiwxOSwxLDE4LDEsMTE3LDMwLDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsCisgICAgMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw2MywwLDAsMCwKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5NywKKyAgICAxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICAzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsNzgsCisgICAgNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwyLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsCisgICAgMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCisgICAgMTAwLDEwMSwxMjUsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyOCwwLAorICAgIDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwwLDAsCisgICAgMCwxMTcsNTMsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLAorICAgIDEwMSwzMiw5NywxMTUsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMCwxMTEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDEyOSw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDMwLDAsMCwwLAorICAgIDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzgsNDAsCisgICAgMTIsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LAorICAgIDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsCisgICAgOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw4OSw0LDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsMTYsNiw2LDIsMTIsNCwzLDEsMywxLDI0LAorICAgIDE2LDEyLDYsMTIsNCwxMTcsMTksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLAorICAgIDAsMCwxMTUsMTM0LDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLAorICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCisgICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAorICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAorICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKKyAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCisgICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsCisgICAgMTAwLDE5LDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwyMCwwLDgzLDQwLDIxLDAsCisgICAgMCwwLDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDgwLDk3LDExNiwxMDQsMTE3LDM4LDEsMCwwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsCisgICAgMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsCisgICAgMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LAorICAgIDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsCisgICAgODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwKKyAgICAxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLAorICAgIDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsCisgICAgMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLAorICAgIDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiwKKyAgICA3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsCisgICAgOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLAorICAgIDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDExNiwyLDAsMTI0LAorICAgIDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDQsCisgICAgMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCw2LDAsMCwwLDExNyw1LDAsMCwwLDk1LDExMCwKKyAgICA5NywxMDksMTAxLDExNyw1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDExNyw1LDAsCisgICAgMCwwLDExNiwxMTcsMTEyLDEwOCwxMDEsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDExNywxMSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxNDEsNCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDksMSw5LDEsMjEsMSwxMTcsMjMsMCwKKyAgICAwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKKyAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwKKyAgICAxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLAorICAgIDAsMTAwLDIsMCwxMDcsMiwwLDExNCw0MywwLDEwMCw2LDAsODMsMTI0LDEsCisgICAgMCwxMDAsNSwwLDEwMiwyLDAsODMsNDAsNywwLDAsMCwxMTcsNjIsMCwKKyAgICAwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LAorICAgIDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICA0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywxMTYsMTE2LDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwKKyAgICAxMTcsMSwwLDAsMCw0NiwxMTcsMCwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0MCwyLDAsMCwwLDExNywzLAorICAgIDAsMCwwLDExNSwxMjEsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLAorICAgIDIsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDEwLAorICAgIDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDQsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw2LDAsMCwwLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTE3LDMsMCwwLDAsMTAwLDExMSwxMTYsMTE3LDIsCisgICAgMCwwLDAsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTQ3LDQsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMiwyNywxLDEyLDIsNCwzLDExNywzOCwKKyAgICAwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwKKyAgICAxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAorICAgIDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDkyLDIsMCwxMjUsCisgICAgMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsCisgICAgMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwKKyAgICA0LDAsMCwwLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTE3LDcsMCwwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDMsMCwwLAorICAgIDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywxOCwKKyAgICAwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNywxNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSw5NywKKyAgICAxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDE1Nyw0LDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDEsMTgsMSwxMTcsMzEsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTAzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsCisgICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywKKyAgICAzLDAsMTE0LDk2LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsOTIsMiwwLDEyNSwyLDAsMTI1LDMsMCwKKyAgICAxMjQsMiwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsODQsMCwxMjQsMywwLDEyNCwKKyAgICAwLDAsOTUsNiwwLDExMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDIsCisgICAgMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDYsMCw4Myw0MCwxLDAsMCwwLAorICAgIDc4LDQwLDcsMCwwLDAsMTE3LDUsMCwwLDAsMTE2LDExNywxMTIsMTA4LDEwMSwKKyAgICAxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTcsMCwwLDAsOTUsMTA4LDk3LDExNSwxMTYsOTUsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDUsMCwwLAorICAgIDAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMTcsOCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTIsOTcsMTE2LDEwNCw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwKKyAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTYxLDQsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDIsMTgsMSwxNSwxLDI3LDMsMTIsMSwxMiwKKyAgICAxLDEyLDEsMTE3LDI3LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LAorICAgIDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMDUsMTE2LDEwMSwKKyAgICAxMTQsMTE3LDEyLDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCisgICAgMTE2LDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwxNzMsNCwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCwxLDExNywyMywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwwLDc4LAorICAgIDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDEyLDAsCisgICAgMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk1LDk1LDEwOCwKKyAgICAxMDEsMTEwLDk1LDk1LDE3Niw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LAorICAgIDIyLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLAorICAgIDEzMSwxLDAsODMsNDAsMiwwLDAsMCw3OCwxMTcsMjAsMCwwLDAsOTUsCisgICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywKKyAgICAxMTQsMTI1LDQxLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsCisgICAgMTA5LDk3LDExNiwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw0MCwxLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsCisgICAgMTEyLDExNCw5NSw5NSwxNzksNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywKKyAgICAyMywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAorICAgIDExNiwxMDQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLAorICAgIDAsMTA3LDYsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDEsMCwwLDAsCisgICAgMTE3LDEyLDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsCisgICAgNCwwLDAsMCwxMDUsMTE2LDEwMSwxMDksNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsCisgICAgMTA1LDExMCwxMTUsOTUsOTUsMTgyLDQsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMTcsMjcsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKKyAgICA5NywxMTYsMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCwyLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDAsMiwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLAorICAgIDAsMTA1LDExNiwxMDEsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxODUsNCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDExNywyMSwwLDAsMCw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLAorICAgIDEwMCw3OCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywyMywwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTE3LDE2LDAsMCwwLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEyLAorICAgIDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSw5OSwxMTEsMTEwLDExNiwKKyAgICA5NywxMDUsMTEwLDExNSw5NSw5NSwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDgwLDk3LDExNiwxMDQsMTM0LDQsMCwwLDExNSwyMCwwLDAsMCwxNiw1LDYsCisgICAgMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTIsMTIsMywxMiwzLDEyLDMsMTIsCisgICAgMywxMTcsMTQsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA4MCw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNjYsMCwwLDAsMTE1LDY4LDAsMCwwLDEyNCwwLAorICAgIDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMSw0LDAsMTAwLDMsMCwKKyAgICAxMDAsNCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsCisgICAgNSwwLDEwMCw2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDAsNywKKyAgICAwLDgzLDQwLDgsMCwwLDAsMTE3LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDQsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDI1LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLAorICAgIDAsMTMxLDMsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQwLDEsCisgICAgMCwwLDAsNzgsNDAsMiwwLDAsMCwxMTcsMTQsMCwwLDAsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDExNyw1LDAsMCwKKyAgICAwLDk1LDExMiw5NywxMTYsMTA0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNywxMSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxOTAsCisgICAgNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyNCwwLDAsMCw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI1LDAsMCwwLDYwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsCisgICAgMTExLDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLAorICAgIDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsCisgICAgNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTkzLDQsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiwxMTcsMjcsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsCisgICAgMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDAsMTAwLDEsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDIsMCwxLDEyNCwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDk1LDIsMCwxMjQsMSwwLDgzLDQwLDIsMCwwLDAsCisgICAgMTE3LDI0LDAsMCwwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTE3LDM4LDAsCisgICAgMCwwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDQwLDMsMCwwLDAsMTE3LDE2LDAsCisgICAgMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywKKyAgICAxMDMsMTAxLDExNyw1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQwLDIsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5Nyw0LAorICAgIDAsMCwxMTUsNiwwLDAsMCwwLDMsMTYsMSwxMiwxLDExNywyNywwLAorICAgIDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MCw4LAorICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsCisgICAgMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLAorICAgIDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMTEsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDExNywxNywwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsCisgICAgMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTg5LDQsMCwwLDExNSw2LDAsMCwwLAorICAgIDE2LDEsMTIsMywxOCw0LDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSwKKyAgICAxMTksMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwKKyAgICAwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLAorICAgIDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDQsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwKKyAgICAxMDEsNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsCisgICAgOCwwLDEwMSw0LDAsMTAwLDEyLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDEsCisgICAgMCwxMzEsMSwwLDkwLDEwLDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsCisgICAgNjIsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCisgICAgMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMCw1MSwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsNjgsOTMsMzQsMCwxMjUsCisgICAgMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDE2LAorICAgIDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwxMTMsMTYsMCwxMTMsMTYsCisgICAgMCw4NywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDEyNSwwLDAsMCwKKyAgICA2Nyw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAorICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsCisgICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMTE3LDE3LDAsCisgICAgMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsNzgsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLAorICAgIDExNSwxMTcsMTksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw2LDAsMCwwLDExOCw5NywKKyAgICAxMDgsMTE3LDEwMSwxMTUsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwKKyAgICAxMTcsMTcsMCwwLDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsMTA1LAorICAgIDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwKKyAgICAyMTEsNCwwLDAsMTE1LDYsMCwwLDAsMCw0LDIyLDEsMTUsMSwxMTcsCisgICAgMjgsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwKKyAgICAxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDk0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMTUsMjgsMCwxMTYsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMTYsNCwwLDEzMSwKKyAgICAyLDAsMSwxMTAsMCwwLDEyMCw1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCwKKyAgICA5Myw0NCwwLDEyNSwyLDAsMTIxLDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsODMsODcsMTEzLDM4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCw4MSwKKyAgICAwLDEsMSwxLDExOSwzOCwwLDg5LDExMywzOCwwLDg4LDExMywzOCwwLDg3LAorICAgIDEwMCwyLDAsODMsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywxMTMsMCwKKyAgICAwLDAsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LAorICAgIDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsCisgICAgMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywxMDgsMTE1LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTcsMjMsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsCisgICAgNDAsNywwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTAsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwxMTcsOSwwLDAsCisgICAgMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LAorICAgIDk3LDExNCwxMTAsMTE3LDEzLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsCisgICAgMTE0LDExMCwxMDUsMTEwLDEwMywxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMywKKyAgICAwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwNCwxMTEsMTExLDEwNyw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDIxOSw0LDAsMCwxMTUsMTYsMCwKKyAgICAwLDAsMCw3LDksMSwxOSwxLDE2LDEsMywxLDE0LDEsMTMsMSwKKyAgICAxMiwyLDExNywyMiwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsOTEsMCwwLDAsMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsCisgICAgMTE0LDIxLDAsMTAwLDIsMCwxMjUsMSwwLDExMCwwLDAsMTIxLDE3LDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwxLDAsMjUsMTI1LDIsMCw4NywxMTAsNDYsMCwKKyAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDg2LDAsMSwxLDEsMTI0LDAsMCwKKyAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwxLDAsNjAsODksMTEwLDEsMCw4OCwxMjQsMiwKKyAgICAwLDgzLDQwLDMsMCwwLDAsMTE3LDIxMCwwLDAsMCw3MSwxMDEsMTE2LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwxMDIsMTA1LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LDk3LDExNiwxMDEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsNDYsMzIsNzMsMTAyLAorICAgIDMyLDExMCwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywxMTgsCisgICAgOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLDExNCwxMDEsMzIsNzgsCisgICAgMTExLDExMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDAsCisgICAgMCwwLDAsMTE3LDEsMCwwLDAsNDYsNDAsNCwwLDAsMCwxMTcsMywKKyAgICAwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw4LAorICAgIDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQwLDMsMCwwLDAsCisgICAgMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyMCwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMjM2LDQsMCwwLDExNSwxNiwwLDAsMCwwLDgsMTIsMSw5LDEsCisgICAgMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTE3LDMxLDAsMCwwLDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDgsMCwwLDAsNSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTg5LDAsMCwwLDEwMywwLDAsMTI1LDMsMCwxMjAsMTc2LAorICAgIDAsMTI0LDIsMCw2OCw5MywxNTgsMCwxMjUsNCwwLDExNiwwLDAsMTI0LDQsCisgICAgMCwxMTYsMSwwLDExNiwyLDAsMTAyLDIsMCwxMzEsMiwwLDExNSw0NiwwLAorICAgIDExMywxMywwLDExMCwwLDAsMTI0LDAsMCwxMDYsMywwLDEyNCw0LDAsMTMxLAorICAgIDEsMCwxMjUsNSwwLDEyNCw1LDAsMTAwLDIsMCwxMDcsOSwwLDExNCwxMywKKyAgICAwLDExNiw1LDAsMTI0LDUsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDExMiwwLAorICAgIDEyNCw1LDAsMTA2LDYsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwKKyAgICA2LDAsMTI1LDcsMCwxMTAsMjEsMCwxMjQsNSwwLDEwNiw3LDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEyNSw2LDAsMTAzLDAsMCwxMjUsNywwLDEyNCw2LDAsCisgICAgMTAwLDIsMCwxMDcsOSwwLDExNCwxNTUsMCwxMjQsNiwwLDEyNCwzLDAsMTAyLAorICAgIDIsMCw4MywxMjQsMywwLDEwNiw4LDAsMTI0LDcsMCwxMzEsMSwwLDEsCisgICAgMTEzLDEzLDAsMTEzLDEzLDAsODcsMTAwLDIsMCwxMjQsMywwLDEwMiwyLDAsCisgICAgODMsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNyw2MywwLDAsMCw3MCwKKyAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwKKyAgICAxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMTcsMTEsCisgICAgMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNzgsNDAsCisgICAgOSwwLDAsMCwxMTcsMTAsMCwwLDAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsCisgICAgMTEwLDk5LDEwMSwxMTcsMywwLDAsMCwxMTUsMTE2LDExNCwxMTcsNSwwLDAsMCwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDIwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LAorICAgIDExNiwxMTYsMTE0LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDQwLDgsCisgICAgMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwKKyAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDE0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNyw1LDAsMCwwLDEwMSwxMTAsMTE2LDExNCwxMjEsMTE3LDYsCisgICAgMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDYsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsOCwwLDAsMCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMjUzLDQsMCwKKyAgICAwLDExNSwyOCwwLDAsMCwwLDUsNiwxLDEzLDEsMjEsMSw2LDEsCisgICAgMTUsMSwxMiwxLDE1LDEsMjQsMiwxNSwxLDYsMSwxMiwyLDEwLDUsCisgICAgMjAsMiwxMTcsMjIsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsOTcsMCwwLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsCisgICAgMTE0LDI0LDAsMTE2LDEsMCwxMDYsMiwwLDEyNSwyLDAsMTEwLDAsMCwxMjQsCisgICAgMCwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsOTIsMiwKKyAgICAwLDEyNSwzLDAsMTI1LDQsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwKKyAgICAxMTQsNjQsMCwxMjQsMywwLDgzLDEyNCw0LDAsMTE0LDg5LDAsMTE2LDQsMCwKKyAgICAxMjQsMSwwLDEyNCw0LDAsMTI0LDAsMCwxMDYsMywwLDEzMSwzLDAsODMsCisgICAgMTAwLDEsMCw4MywxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDk4LDAsCisgICAgMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwKKyAgICAzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsCisgICAgOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsNDYsNzgsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwKKyAgICAxMTEsMTEwLDEwMSwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTcsMTEsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNSwwLDAsMCwxMTcsMywwLAorICAgIDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMjQsNSwwLDAsMTE1LDE2LDAsMCwwLDAsNCwKKyAgICAxMiwxLDEyLDEsMjQsMSwxMiwxLDQsMiw2LDMsMTksMiwxMTcsMjIsCisgICAgMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MCwxMSwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwKKyAgICAwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxNywwLDAsMCwxMDUsMTEwLDExOCwKKyAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDExNywxMSwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNywyMCwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDExLDAsMCwwLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIwNywKKyAgICA0LDAsMCwxMTUsMTQsMCwwLDAsMTYsMiw2LDIsMTgsOCwxOCwxNywKKyAgICAxOCwxNywxOCwyNywzLDEsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwzLDAsMCwwLDY2LDAsMCwwLDExNSwxMTAsMCwwLDAsMTI0LAorICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LAorICAgIDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsCisgICAgOTAsNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsCisgICAgOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAxLDEwLDAsMTAwLDEwLAorICAgIDAsMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDEyLDAsCisgICAgMTAwLDEzLDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwxNCwwLDgzLDQwLDE1LDAsCisgICAgMCwwLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDExNywxNzIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTEwLAorICAgIDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwKKyAgICA5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwKKyAgICAxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLAorICAgIDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwKKyAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsCisgICAgMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LAorICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwKKyAgICAxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwKKyAgICAwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLDAsMCwxMjUsCisgICAgMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwyLDAsMTM3LAorICAgIDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwwLDEwMiwxLAorICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCw2OCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsCisgICAgMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwwLDk1LDIsCisgICAgMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LDAsMTMxLDAsMCwKKyAgICAxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSwKKyAgICA2LDAsMTAwLDUsMCw4Myw0MCw3LDAsMCwwLDExNywyMDEsMCwwLDAsCisgICAgNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LAorICAgIDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDUxLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLAorICAgIDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywxMDIsMTAyLAorICAgIDEwNSwxMjAsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAorICAgIDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTE1LDQ0LDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsOTgsMTExLDExMSwxMDgsMTAxLDk3LAorICAgIDExMCwzMiwxMTEsMTAyLDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsCisgICAgMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsCisgICAgMCwwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCwwLDAsMCwwLDQwLDIsMCwwLDAsMTE3LDIsCisgICAgMCwwLDAsNDYsNDgsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsCisgICAgNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLAorICAgIDEwMSwxMjAsMTEyLDExNCw2Miw1Nyw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsCisgICAgMTE3LDM4LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICA2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE3LDEsMCwwLDAsCisgICAgNDYsMTA1LDEsMCwwLDAsNzgsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCw3LDAsMCwKKyAgICAwLDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw4LDAsMCwKKyAgICAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNyw0LDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwKKyAgICAxMDksMTAxLDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxOSwwLDAsMCw5NSwKKyAgICAxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw3LDAsMCwwLDEwMCwxMDEsCisgICAgMTE2LDk3LDEwNSwxMDgsMTE1LDExNyw3LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTE1LDExNyw4LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDAsMCwKKyAgICAwLDAsMCw0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSw5NSw1MSw1LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwKKyAgICAxLDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTE3LDE5LDAsMCwwLAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsCisgICAgMTI0LDAsMCw5NSwwLDAsMTAwLDIsMCw4Myw0MCw0LDAsMCwwLDExNywKKyAgICAzMSwwLDAsMCw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwKKyAgICAxMDksMTAxLDQ2LDEwNSwxLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsMSwKKyAgICAwLDAsMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwKKyAgICAxMDUsMTA5LDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLAorICAgIDAsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsMTE1LDY1LDUsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsCisgICAgMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLAorICAgIDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTcyLDEsMCwwLDEwMCw1LDAsMTI1LDIsMCwxMjQsCisgICAgMSwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LAorICAgIDMsMCwxMjEsMjUsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwKKyAgICAwLDEzMSwxLDAsMTA2LDUsMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LAorICAgIDYsMCwxMDcsMTAsMCwxMTQsNzYsMCwxLDEsMSwxMDAsNiwwLDEyNSw0LAorICAgIDAsODksMTEwLDEsMCw4OCwxMjQsNCwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsCisgICAgMywwLDExNCwxMTQsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCwKKyAgICA0LDAsMTI0LDAsMCw5NSw3LDAsMTEwLDAsMCwxMTYsOSwwLDEzMSwwLAorICAgIDAsMTE0LDE0NywwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDUsMCwxMjQsMywwLAorICAgIDEwNiwxMSwwLDEzMSwwLDAsMTI1LDYsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwKKyAgICAxMiwwLDEyNSw1LDAsMTI0LDMsMCwxMjUsNiwwLDEyNCw2LDAsMTI0LDUsCisgICAgMCwxMDcsNiwwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDQsMCwKKyAgICAxMjQsMywwLDEzMSwyLDAsMTI1LDcsMCwxMTYsMTQsMCwxMjQsNywwLDEzMSwKKyAgICAxLDAsMTE0LDQ1LDEsMTIwLDkxLDAsMTI0LDAsMCwxMDYsMTUsMCw2OCw5MywKKyAgICA3MSwwLDkyLDIsMCwxMjUsOCwwLDEyNSw5LDAsMTAwLDQsMCwxMjQsOCwKKyAgICAwLDIzLDEyNSwxMCwwLDExNiwxMywwLDEyNCw3LDAsMTI0LDEwLDAsMTMxLDIsCisgICAgMCwxMjUsMTEsMCwxMTYsMTYsMCwxMjQsMTEsMCwxMzEsMSwwLDExNCwyMTQsMCwKKyAgICAxMjQsOSwwLDEyNCwxLDAsMTI0LDExLDAsMTMxLDIsMCwxMjQsNywwLDEwMywKKyAgICAxLDAsMTAyLDIsMCw4MywxMTMsMjE0LDAsODcsMTAwLDcsMCwxMjUsMiwwLAorICAgIDExMyw0NSwxLDExMCwwLDAsMTIwLDk1LDAsMTI0LDAsMCwxMDYsMTUsMCw2OCwKKyAgICA5Myw4NCwwLDkyLDIsMCwxMjUsOCwwLDEyNSw5LDAsMTI0LDYsMCwxMjQsCisgICAgOCwwLDIzLDEyNCw1LDAsMTA3LDYsMCwxMTQsNTUsMSwxMTYsMTMsMCwxMjQsCisgICAgMCwwLDEwNiw0LDAsMTI0LDMsMCwxMjQsOCwwLDIzLDEzMSwyLDAsMTI1LAorICAgIDExLDAsMTE2LDE2LDAsMTI0LDExLDAsMTMxLDEsMCwxMTQsMTM5LDEsMTI0LDksCisgICAgMCwxMjQsMSwwLDEyNCwxMSwwLDEzMSwyLDAsMTAzLDAsMCwxMDIsMiwwLAorICAgIDgzLDExMyw1NSwxLDExMyw1NSwxLDg3LDEyNCwyLDAsMTE0LDE2MiwxLDEwMCw4LAorICAgIDAsMTI0LDcsMCwxMDMsMSwwLDEwMiwyLDAsODMsMTAwLDgsMCwxMDMsMCwKKyAgICAwLDEwMiwyLDAsODMsNDAsOSwwLDAsMCwxMTcsMTI1LDAsMCwwLDg0LAorICAgIDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICAxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCisgICAgMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLAorICAgIDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDExNywxLDAsMCwKKyAgICAwLDQ2LDEwNSwyLDAsMCwwLDEwNSwxLDAsMCwwLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw3MCwxMDUsMjU1LDI1NSwyNTUsMjU1LDg0LAorICAgIDc4LDQwLDE5LDAsMCwwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsCisgICAgMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LAorICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwwLDExNSwxMTYsCisgICAgOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsMTE3LDExLDAsMCwwLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDExNywxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsCisgICAgMTE1LDEwMSwxMTcsMTksMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsNSwwLDAsMCwxMDgsCisgICAgMTExLDExOSwxMDEsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsCisgICAgMTExLDEwNSwxMTAsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsCisgICAgMTAwLDEwNSwxMTQsMTE3LDgsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNyw0LDAsMCwwLDc4LAorICAgIDExMSwxMTAsMTAxLDQwLDEyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDEyLAorICAgIDAsMCwwLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTE3LAorICAgIDExLDAsMCwwLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICA1LDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTcsMTIsMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsOSwwLDAsMCw5OCw5NywxMTUsMTAxLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDExNyw2LDAsCisgICAgMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEzLDAsMCwwLDEwNSwxMTAsMTA1LAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwwLDAsMTAyLAorICAgIDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDcxLDUsMCwwLDExNSw2MiwwLDAsMCwwLDMsNiwKKyAgICAxLDE5LDEsMywxLDI1LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwxMiwKKyAgICAyLDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwxMiwKKyAgICAxLDIyLDEsMTAsMSwxNSwxLDEyLDEsMjYsNCwxMiwyLDIyLDEsMTYsCisgICAgMSwyMiwxLDEyLDEsMjYsMSw2LDEsMTMsMSwxMTcsMjIsMCwwLDAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsOSwKKyAgICAwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsOCwxLDAsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMTksMCwxMTYsMSwwLDEwNiwKKyAgICAyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLDAsNCwKKyAgICAxMTYsMywwLDExNiw0LDAsMTE2LDUsMCwxMDIsMywwLDEwNywxMCwwLDExNCwKKyAgICA2MywwLDEsMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LAorICAgIDExNiw2LDAsMTA2LDcsMCwxMDYsOCwwLDEwMCwxLDAsMTMxLDEsMCwxMTUsCisgICAgMTAwLDAsMTE2LDksMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxMCwKKyAgICAwLDExMCwxMTEsMCwxMTYsOSwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsOTAsMCwKKyAgICAxMjQsMiwwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwxMSwwLAorICAgIDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwwLDEyNSwKKyAgICA3LDAsMTI0LDYsMCwxMTQsMTc5LDAsMTAwLDMsMCwxMDYsMTIsMCwxMjQsNSwKKyAgICAwLDEyNCw3LDAsMTA2LDEzLDAsMTMxLDAsMCwxMzEsMiwwLDEyNSw4LDAsCisgICAgMTEwLDYsMCwxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTQsMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMSwxMTMsMTE2LDAsODcsMTI0LDMsMCwxMjQsMCwwLAorICAgIDk1LDEwLDAsMTE2LDYsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDE1LDAsMTMxLAorICAgIDEsMCwxMTQsNCwxLDExNiw5LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAorICAgIDAsMTI0LDIsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxNiwKKyAgICAwLDExMCwwLDAsMTAwLDYsMCw4Myw0MCw3LDAsMCwwLDExNyw2OCwwLAorICAgIDAsMCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwxMDEsCisgICAgOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNywzLDAsMCwwLDExOSwxMDUsMTEwLDExNywxLAorICAgIDAsMCwwLDQ2LDExNyw1LDAsMCwwLDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDExNSwKKyAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAorICAgIDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwwLDAsODYsMSwxMTMsMywwLDEwMCwKKyAgICAwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNyw1LAorICAgIDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsNDAsMiwwLDAsMCwxMTcsMiwwLAorICAgIDAsMCw0Niw0OCwxMTcsMiwwLDAsMCwxMDIsMTEwLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDE0Miw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsCisgICAgMTE3LDQxLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsNjAsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw3OCw0MCwKKyAgICAxNywwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsMywwLAorICAgIDAsMCw5NSwxMTEsMTE1LDExNyw3LDAsMCwwLDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LAorICAgIDExNCwxMTcsMTcsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LAorICAgIDExMCwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxNSwwLDAsMCw4MCwxMDEsMTE0LDEwOSwKKyAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE4LDAsMCwwLAorICAgIDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsOCwwLDAsMCwxMTIsCisgICAgMTA4LDk3LDExNiwxMDIsMTExLDExNCwxMDksMTE3LDEwLDAsMCwwLDExNSwxMTYsOTcsMTE0LAorICAgIDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywxMSwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw5LAorICAgIDAsMCwwLDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsCisgICAgMTE0LDExNywzLDAsMCwwLDk3LDEwMCwxMDAsMTE3LDI3LDAsMCwwLDk1LDY3LAorICAgIDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LAorICAgIDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDExNywxOSwwLDAsMCw5NSwxMTQsCisgICAgMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDQwLDksMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwwLDk5LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMTAsMTE2LDExNSwxMTcsMjEsMCwwLDAsMTA4LDExMSwxMTksMTAxLDExNCw5NSwKKyAgICAxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE3LAorICAgIDQsMCwwLDAsMTA1LDExNiwxMDEsMTA5LDExNyw0LDAsMCwwLDExMCw5NywxMDksCisgICAgMTAxLDExNywzLDAsMCwwLDEwMCwxMTEsMTE2LDExNyw2LDAsMCwwLDExNSwxMTcsCisgICAgMTAyLDEwMiwxMDUsMTIwLDExNyw4LDAsMCwwLDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksCisgICAgMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsCisgICAgMCwwLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExMyw1LDAsCisgICAgMCwxMTUsMzQsMCwwLDAsMCwyLDksMSwzLDEsMTksMSwyMiwzLAorICAgIDExLDMsMTgsMSwxOCw3LDksMSwxMywxLDI0LDEsNiwxLDI3LDIsCisgICAgNiwxLDE3LDEsOSwxLDE4LDEsMTE3LDIyLDAsMCwwLDcwLDEwNSwxMDgsCisgICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgMywwLDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLAorICAgIDEzNSwxLDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsCisgICAgMiwwLDEyNCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMjAsMSwwLDAsCisgICAgNjUsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiw5OSwKKyAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExMSwxMTAsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTA1LDEwOCwKKyAgICAxMDgsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsOTksMTAxLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICA5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAorICAgIDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDQ2LDAsMCwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDExNSwzMywwLDExNiwxLDAsMTAwLDEsMCwKKyAgICAxMDAsMiwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LAorICAgIDAsMCwxMjQsMCwwLDEzNiwxLDAsMTQwLDEsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDExNyw0NSwwLDAsMCw4MCw5NywxMTYsMTA0LDMyLDEwNCwxMTEsMTExLDEwNywzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDEwOSw5NywKKyAgICA5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSw0Niw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDExNywzMCwwLDAsMCwxMTEsMTEwLDEwOCwxMjEsMzIsMTAwLDEwNSwxMTQsCisgICAgMTAxLDk5LDExNiwxMTEsMTE0LDEwNSwxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDExNywxMTIsCisgICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsCisgICAgMiwwLDAsMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDExNSwxMDAsMTA1LDExNCwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LAorICAgIDE0LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LAorICAgIDEwOCwxMTUsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI0LDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDE1NCw1LDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDIsMTIsMSwyMSwxLDExNyw1NCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw0Niw2MCwKKyAgICAxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCisgICAgMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDAsMCwwLDAsMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LAorICAgIDEwOCwxMTUsMTE3LDE0LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwKKyAgICAxMTYsOTcsMTA1LDEwOCwxMTUsMTE3LDI0LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwKKyAgICAxMTEsMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMiwwLDAsMCwxMTcsMywwLDAsCisgICAgMCw5OSwxMDgsMTE1LDExNywxNCwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LAorICAgIDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTQ0LDUsMCwwLDExNSw0LDAsMCwwLAorICAgIDAsMTAsMjEsNiwxMTcsMjAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQsMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTAyLDEsMCwyMiw4Myw0MCwyLDAsMCwwLDc4LDExNywxNCwwLDAsMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDM3LDExNCw0MSw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDEsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsCisgICAgMTE0LDk1LDk1LDE2Miw1LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDE5LAorICAgIDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQwLDEzLDAsMCwwLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLAorICAgIDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsMTE3LDE3LDAsMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwKKyAgICAxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMTE3LDE3LDAsMCwwLDk1LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMTE3LDExLAorICAgIDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsCisgICAgMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLAorICAgIDAsMCwwLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMSwKKyAgICAwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsOSwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLAorICAgIDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQyLDUsMCwwLDExNSwxNiwwLDAsCisgICAgMCwxNiw3LDYsMiwxMiwxNCwxMiw0LDYsMiwxMiw0MiwxMiwzMSwxOCwKKyAgICAxOCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwKKyAgICAwLDY2LDAsMCwwLDExNSw1MCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLAorICAgIDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLAorICAgIDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCwKKyAgICA1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCw4Myw0MCw3LDAsMCwKKyAgICAwLDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwKKyAgICAxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTE3LDM2LDAsMCwwLDY3LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMjAsMTE2LDMyLDEwOSw5NywxMTAsOTcsMTAzLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgNDYsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDI0LAorICAgIDAsMCwwLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDAsMiwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsOTcsCisgICAgOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0MCwxLDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsMTcyLDUsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsCisgICAgMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKKyAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAwLDAsMSwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDYwLDAsMCwKKyAgICAwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsCisgICAgMTAxLDExNSwxMTUsMzIsMTExLDEwMiwzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTAxLDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDAsMiwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLAorICAgIDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDAsNCwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsCisgICAgMTAxLDEyMCw5OSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDksMCwwLDAsMTAxLDEyMCw5OSwKKyAgICA5NSwxMTgsOTcsMTA4LDExNywxMDEsMTE3LDEzLDAsMCwwLDEwMSwxMjAsOTksOTUsMTE2LAorICAgIDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LAorICAgIDk1LDE3Niw1LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI3LDAsMCwKKyAgICAwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwKKyAgICAxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDAsNiwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsCisgICAgMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLAorICAgIDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywKKyAgICA3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDksMCwwLDAsCisgICAgOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwKKyAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsCisgICAgOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE4LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxNjgsNSwwLAorICAgIDAsMTE1LDYsMCwwLDAsMTYsMiw2LDIsMTIsNCwxMTcsMTgsMCwwLAorICAgIDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LAorICAgIDEwMSwxMjAsMTE2LDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsCisgICAgMTA2LDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLDIsMCwyNCwxMzEsMiwwLAorICAgIDEyNSwzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTI0LDIsMCwxMDcsCisgICAgMCwwLDExNCw1NSwwLDExNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLAorICAgIDAsMTEwLDAsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMCwKKyAgICAwLDExNCw4NywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLDEyNCwwLDAsCisgICAgMTMxLDIsMCw4MywxMjQsNCwwLDgzLDQwLDYsMCwwLDAsMTE3LDUwLDAsCisgICAgMCwwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LAorICAgIDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwKKyAgICAxMTEsMTEwLDEwMSw0NiwxMTcsMSwwLDAsMCw0NiwxMDUsMSwwLDAsMCwxMTcsCisgICAgNTAsMCwwLDAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLAorICAgIDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLAorICAgIDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMDUsMCwwLDAsMCwxMTcsNSwwLDAsMCwKKyAgICAxMjMsMTI1LDQ2LDEyMywxMjUsNDAsNCwwLDAsMCwxMTcsNiwwLDAsMCwxMTQsCisgICAgMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsMTAsMCwKKyAgICAwLDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwKKyAgICAwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDAsNSwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsMTE3LDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsNCwwLDAsMCwKKyAgICA5OCwxMDUsMTE2LDExNSwxMTcsNCwwLDAsMCw5OCw5NywxMTUsMTAxLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEzLDAsMCwwLDk1LDExNCwKKyAgICAxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxODEsNSwwLDAsMTE1LAorICAgIDEwLDAsMCwwLDAsMiwyMiwxLDE4LDEsMTUsMSwxMCwxLDExNywxMywKKyAgICAwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMTEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEzOCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsCisgICAgMTE1LDI4LDAsMTE2LDIsMCwxMDYsMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsCisgICAgMiwwLDEsMTEwLDAsMCwxMjAsMTAzLDAsMTE2LDAsMCwxMDYsMSwwLDY4LAorICAgIDkzLDg4LDAsMTI1LDIsMCwxMTYsNSwwLDEzMSwwLDAsMTQzLDIzLDAsMSwKKyAgICAxMjQsMiwwLDEwNiw2LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LAorICAgIDMsMCw4NywxMDAsMiwwLDgxLDg4LDEyNCwzLDAsMTAwLDIsMCwxMDcsOSwKKyAgICAwLDExNCwzOCwwLDEyNCwwLDAsMTE2LDAsMCwxMDYsOCwwLDEwNyw3LDAsCisgICAgMTE0LDEwOSwwLDEyNCwzLDAsODMsMTE2LDAsMCwxMDYsOCwwLDEyNCwwLDAsCisgICAgMjUsMTA2LDksMCw4MywxMTMsMzgsMCwxMTMsMzgsMCw4NywxMDAsMiwwLDgzLAorICAgIDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMjMsMCwwLDAsNzAsMTA1LAorICAgIDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTE3LDIyLDAsMCwwLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsCisgICAgMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwKKyAgICA3OCw0MCwxMCwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsOSwKKyAgICAwLDAsMCwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsOSwwLDAsCisgICAgMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LAorICAgIDk3LDExNCwxMTAsMTE3LDEzLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsCisgICAgMTE0LDExMCwxMDUsMTEwLDEwMywxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDExNywxMSwwLDAsCisgICAgMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLAorICAgIDAsNzgsMTExLDExMCwxMDEsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAorICAgIDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw5NSwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTkwLDUsMCwwLDExNSwyMCwKKyAgICAwLDAsMCwwLDIsOSwxLDE5LDEsMTYsMSwxMCwxLDI0LDEsMTIsCisgICAgMiwxNSwxLDQsMiwyMSwyLDExNywxMiwwLDAsMCw5NSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMywwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTk0LDAsCisgICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDQ1LAorICAgIDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsMCwxMjQsMCwwLAorICAgIDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsCisgICAgMiwwLDEwMCwyLDAsMTA3LDAsMCwxMTQsNzIsMCwxMTYsNSwwLDEwMCwzLAorICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDEsMCwxMTQsMTU2LDAsCisgICAgMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwxMTUsMTA4LDAsMTE2LAorICAgIDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTMsMTU2LDAsMTI0LDEsCisgICAgMCwxMTYsNiwwLDEwNiw3LDAsMTA3LDcsMCwxMTQsMTU2LDAsMTAwLDUsMCwKKyAgICAxMjUsMywwLDExNiw4LDAsMTI0LDMsMCwxMDYsMywwLDEyNCwxLDAsMTMxLAorICAgIDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEzLDE1NiwwLDExMCwwLDAsMTI0LDAsCisgICAgMCwxMiwxMTQsMTkwLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE5MCwKKyAgICAwLDExNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwKKyAgICAxMDAsNywwLDgzLDQwLDgsMCwwLDAsMTE3LDI4LDAsMCwwLDg2LDEwMSwKKyAgICAxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDExNywzMSwwLDAsMCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsCisgICAgOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsMTA1LDAsCisgICAgMCwwLDAsMTE3LDE4LDAsMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExNywKKyAgICAxMTUsMTE2LDMyLDk4LDEwMSwzMiw2Miw2MSwzMiw0OCwxMTcsMzEsMCwwLDAsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE3LDYxLAorICAgIDAsMCwwLDgwLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLAorICAgIDQ0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksCisgICAgMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDExNywxNywwLDAsMCw2OSwxMDksMTEyLDExNiwxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNzgsNDAsOSwwLDAsMCwxMTcsMTAsMCwwLAorICAgIDAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTcsMywwLDAsMCwKKyAgICAxMTUsMTE2LDExNCwxMTcsOSwwLDAsMCw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNCwwLDAsCisgICAgMCwxMTYsMTIxLDExMiwxMDEsMTE3LDEwLDAsMCwwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsCisgICAgMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDExLDAsMCwwLDgzLDEyMSwxMTUsCisgICAgMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsMTE0LDQwLDQsMCwwLDAsMTE3LDQsMCwKKyAgICAwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwwLDAsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDExNyw1LDAsMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE3LDMsMCwwLAorICAgIDAsMTA5LDExNSwxMDMsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTMsMCwwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNywyMDcsNSwwLDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDMwLAorICAgIDEsMTIsMSwxNSwxLDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsMjcsCisgICAgMSwxOSwxLDExNywxMywwLDAsMCw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LAorICAgIDk5LDEwNCwxMDEsOTksMTA3LDExNywyMCwwLDAsMCw3OCwxMTEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDI3LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMiwyLDAsMCwxMDAsMCwwLDEyNSwyLDAsMTI0LDAsCisgICAgMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsMiwwLDI1LDEyNSwzLAorICAgIDAsMTI0LDMsMCwxMTQsMTc4LDAsMTI0LDMsMCwxMTYsMiwwLDEwNiwzLDAsCisgICAgMTA3LDcsMCwxMTQsNjIsMCwxMTYsNCwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsCisgICAgMiwwLDEsMTEwLDAsMCwxMjQsMCwwLDExNiwyLDAsMTA2LDMsMCwxMDcsCisgICAgNiwwLDExNCw4OCwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwwLDI1LDgzLAorICAgIDExNiwyLDAsMTA2LDMsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTIxLDEzLDAsCisgICAgMTI0LDQsMCwxMDYsNSwwLDEyNSwyLDAsODcsMTEzLDE3OCwwLDQsMTE2LDYsCisgICAgMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDcsMCwxMDAsMywwLAorICAgIDIzLDEwNiw4LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LDUsMCwKKyAgICAxMTYsOSwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLAorICAgIDEsMCw4OSwxMTMsMTc4LDAsODgsMTEwLDAsMCwxMTYsMTAsMCwxMjQsMCwwLAorICAgIDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCwyNTAsMCwxMTYsOSwwLDExNiw3LDAsMTA2LDgsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTI1LDcsMCwKKyAgICAxMDAsMTAsMCwxMjQsNywwLDk1LDEyLDAsMTI0LDcsMCwxMzAsMSwwLDExMCwKKyAgICA0NywwLDEyNCwwLDAsMTE2LDIsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDQxLAorICAgIDEsMTI0LDYsMCwxMDYsMTMsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMTYsMTQsCisgICAgMCwxMDAsNSwwLDEyNCwwLDAsMTI0LDYsMCwxMzEsMywwLDEsMTEwLDAsCisgICAgMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsMCwyNSwxMjUsOCwwLDEyNCwzLAorICAgIDAsMTE0LDEwNSwxLDExNiwyLDAsMTA2LDMsMCwxMjQsMywwLDI1LDEyNSw0LAorICAgIDAsMTE2LDE1LDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDEsMCwKKyAgICAxMzEsMSwwLDEwMCw2LDAsMjUsMTI0LDgsMCwxMzEsMywwLDEsMTEwLDAsCisgICAgMCwxMTYsMTYsMCwxMjQsOCwwLDEwMCw3LDAsMTAwLDAsMCwxMzEsMywwLAorICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMjEyLDEsMTIxLDU5LDAsMTI0LDgsMCwxMDYsCisgICAgMTcsMCwxMjQsOCwwLDk1LDE4LDAsMTE2LDE5LDAsMTI0LDgsMCwxMDAsOCwKKyAgICAwLDEzMSwyLDAsMTE1LDE4NywxLDEyNCw4LDAsMTA2LDE4LDAsMTA2LDEsMCwKKyAgICAxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjQsOCwwLDk1LDE4LDAsCisgICAgMTEwLDAsMCw4NywxMTMsMjEyLDEsNCwxMTYsNiwwLDEwNywxMCwwLDExNCwyMDgsCisgICAgMSwxLDEsMSw4OSwxMTMsMjEyLDEsODgsMTEwLDAsMCwxMTYsMTksMCwxMjQsCisgICAgOCwwLDEwMCw5LDAsMTMxLDIsMCwxMTUsOCwyLDEyMSwxMywwLDEyNCw2LAorICAgIDAsMTI0LDgsMCw5NSwyMCwwLDg3LDExMyw4LDIsNCwxMTYsNiwwLDEwNywKKyAgICAxMCwwLDExNCw0LDIsMSwxLDEsODksMTEzLDgsMiw4OCwxMTAsMCwwLAorICAgIDEyNCw4LDAsODMsNDAsMTEsMCwwLDAsNzgsMTE3LDEsMCwwLDAsNDYsCisgICAgMTA1LDAsMCwwLDAsMTE3LDIxLDAsMCwwLDU5LDMyLDEyMywxMjUsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LAorICAgIDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDE4LDAsMCwwLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEyMywzMywxMTQsMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDEwNSwKKyAgICAyLDAsMCwwLDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsCisgICAgODQsNDAsMjEsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNywzLAorICAgIDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwKKyAgICAxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDE0LDAsCisgICAgMCwwLDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE3LDgsMCwwLDAsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE3LDYsMCwKKyAgICAwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsCisgICAgMTE3LDEwMSwxMTcsMTAsMCwwLDAsOTUsMTEwLDExMSwxMTYsOTUsMTAyLDExMSwxMTcsMTEwLAorICAgIDEwMCwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwKKyAgICAxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNyw3LDAsMCwwLDExNSwxMDEsMTE2LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsMCwwLDAsCisgICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw5NSw5NSw0MCw5LDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LAorICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsMTE3LDEzLDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDMsMCwwLDAsMTA5LDExNSwxMDMsMTE3LDYsCisgICAgMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMywwLDAsMCwxMDEsMTIwLAorICAgIDk5LDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSwKKyAgICA5OSwxMDcsMTAxLDEwMCwyMjYsNSwwLDAsMTE1LDc2LDAsMCwwLDAsMSw2LAorICAgIDEsMTksMSw2LDEsMTUsMSwxNiwyLDE1LDEsMTEsMiwxMywxLDMsCisgICAgMSwxMywxLDEzLDEsMjIsMSwyNiwxLDE1LDEsMTIsMSwyNywzLDksCisgICAgMSw5LDEsMTUsMiwxMywxLDE5LDIsMTMsMSw2LDIsMTMsMSwzMiwKKyAgICAyLDI0LDEsMywxLDEyLDEsMTUsMSwzMiwxLDEzLDEsOCwyLDE1LAorICAgIDEsMywxLDEzLDEsMTMsMSw4LDEsMTE3LDIzLDAsMCwwLDk1LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LAorICAgIDExMSw5OSwxMDcsMTAxLDEwMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwxOCwwLDAsMCw2NywwLDAsMCwxMTUsNzUsMCwwLDAsMTIyLAorICAgIDE2LDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMDAsCisgICAgMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsODgsMTI0LDIsMCwKKyAgICAxMDYsMywwLDEzMSwwLDAsMSwxMjIsMTcsMCwxMTYsNCwwLDEyNCwwLDAsCisgICAgMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDEwMCwxLDAsMTI0LDIsMCwxMDYsNSwKKyAgICAwLDEzMSwwLDAsMSw4OCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDU0LDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLAorICAgIDEwMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MCw2LDAsMCwwLAorICAgIDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMDgsMTExLDk5LDEwNywxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsCisgICAgMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LAorICAgIDcsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsMjMsMCwwLDAsCisgICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAorICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDcsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE3LDQsMCwKKyAgICAwLDAsMTA4LDExMSw5OSwxMDcsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMjAsNiwwLDAsMTE1LDE0LDAsMCwwLDAsMiwKKyAgICAzLDEsMTYsMiwxMSwxLDEwLDEsMywxLDE3LDIsMTE3LDE0LDAsMCwKKyAgICAwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LAorICAgIDEsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMjQsMiwwLDEwMCwxLDAsMTA3LAorICAgIDQsMCwxMTQsNDksMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDEzMSwzLDAsMTI1LDAsMCwxMTAsMCwwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMzEsMCwwLDEsMTI0LDAsMCwxMTYsNCwwLDEwNiw1LDAsMTA3LDcsMCwKKyAgICAxMTQsODcsMCwxMTYsNiwwLDEyNCwwLDAsMTE2LDcsMCwxMzEsMiwwLDgzLAorICAgIDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDI1LDEyNSwzLDAsMTI0LDMsMCwKKyAgICAxMDAsNCwwLDEwNyw4LDAsMTE0LDE1OCwwLDExNiwyLDAsMTA2LDksMCwxMzEsCisgICAgMCwwLDEsMTAwLDIsMCwxMDYsMTAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAorICAgIDQsMCwxMTYsMTEsMCwxMjQsNCwwLDEwMCwzLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAxLDEzMCwxLDAsMTEwLDAsMCwxMTYsMTIsMCwxMjQsMCwwLDEzMSwxLDAsCisgICAgMSwxMjQsMywwLDgzLDQwLDUsMCwwLDAsMTE3LDUwLDEsMCwwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLAorICAgIDEwMCwzMiwxMTEsMTEwLDMyLDEwNSwxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICA5NywxMDgsMTA4LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLAorICAgIDMyLDEwOSw5NywxMDAsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwKKyAgICAxMDksMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsCisgICAgMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwKKyAgICAxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsCisgICAgMzIsOTksMTExLDEwOSwxMDksMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsCisgICAgMTA4LDEwNSwxMTYsMTIxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LAorICAgIDExMCwxMDAsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LAorICAgIDExNiwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsCisgICAgMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDMyLDEwMCwxMDUsMTAwLDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDEwNSwwLDAsMCwwLDExNyw0MCwwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwzMiwxMTEsMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiwKKyAgICA3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSw3OCw0MCwxMywwLAorICAgIDAsMCwxMTcsMTMsMCwwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNywxMTcsMTMsMCwwLDAsOTUsMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsCisgICAgMTAxLDk1LDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywKKyAgICAxMiwwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksMTA3LAorICAgIDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwxMTcsMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LAorICAgIDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDExLDAsMCwKKyAgICAwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywxOSwwLDAsCisgICAgMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE3LDcsMCwwLDAsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw1LAorICAgIDAsMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE3LDcsMCwwLDAsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMyw2LDAsMCwxMTUsCisgICAgMjgsMCwwLDAsMCw5LDE2LDEsMTIsMSwyMSwxLDEwLDEsMTUsMSwKKyAgICAxMywxLDEzLDEsMTIsMSwxMCwxLDYsMSw5LDEsMjEsMSwxMCwxLAorICAgIDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyNTQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwMCwxLDAsMTMxLDIsMCwxMTQsMjUwLDAsMTAwLDIsMCwxMjQsMSwwLDEwNywKKyAgICA2LDAsMTE0LDg5LDAsMTE2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDEsCisgICAgMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsODksMCwxMjQsMSwwLAorICAgIDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLDAsMSwxMTMsODksMCwKKyAgICAxMTAsMCwwLDEyMCwxNTgsMCwxMjQsMSwwLDY4LDkzLDE0NywwLDEyNSwzLDAsCisgICAgMTE2LDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTYsMCwxMDAsCisgICAgNCwwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsCisgICAgMCwxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLAorICAgIDEzMSwyLDAsMSw4NywxMTMsMjQzLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKKyAgICAyMzksMCwxLDEyNSw1LDAsMSwxMjIsNTAsMCwxMTYsOSwwLDEyNCw1LDAsCisgICAgMTAwLDUsMCwxMDAsNywwLDEzMSwzLDAsMTE0LDIxOCwwLDEyNCw1LDAsMTA2LAorICAgIDExLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwyMTgsMCwxMTksOTYsMCwxMTMsMjE4LAorICAgIDAsMTEwLDAsMCwxMzAsMCwwLDg3LDg5LDEwMCw2LDAsMTAwLDYsMCwxMjUsCisgICAgNSwwLDEyNiw1LDAsODgsMTEzLDI0MywwLDg4LDExMyw5NiwwLDExMyw5NiwwLAorICAgIDg3LDExMCwwLDAsMTI0LDAsMCw4Myw0MCw4LDAsMCwwLDExNywyMzgsMCwKKyAgICAwLDAsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LAorICAgIDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwKKyAgICAxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsCisgICAgOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCisgICAgOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCisgICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLAorICAgIDAsMCw0MiwxMTcsNywwLDAsMCw5NSw5NSw5NywxMDgsMTA4LDk1LDk1LDExNywKKyAgICA1LDAsMCwwLDEyMywxMjUsNDYsMTIzLDEyNSwxMTcsMTAsMCwwLDAsOTUsMTEwLAorICAgIDExMSwxMTYsOTUsMTAyLDExMSwxMTcsMTEwLDEwMCw3OCw3MCw0MCwxMiwwLDAsMCwxMTcsCisgICAgNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNyw0LDAsMCwwLAorICAgIDEwOCwxMDUsMTE1LDExNiwxMTcsNiwwLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMTcsCisgICAgNiwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTcsNywwLDAsMCw5NSwKKyAgICA5NSw5NywxMDgsMTA4LDk1LDk1LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywKKyAgICAxMTYsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDI1LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCisgICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNywxMSwwLDAsCisgICAgMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsCisgICAgMTE1LDEwMSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCw2LDAsMCwwLAorICAgIDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw4LDAsMCwwLAorICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE3LDcsMCwwLDAsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsOTUsMTE3LDEsMCwwLDAsMTIwLDExNyw5LDAsMCwwLDEwMiwKKyAgICAxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMywwLDAsMCwxMDEsMTIwLDk5LAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwKKyAgICAwLDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LAorICAgIDExNiw1Nyw2LDAsMCwxMTUsMzQsMCwwLDAsMCwxMCwxNSwxLDEyLDEsCisgICAgMTIsMSwxMywxLDE1LDEsMjIsMSwxMywxLDE1LDEsMjEsMSwzLDEsCisgICAgMTcsMSwxOCw2LDE4LDEsMTUsMSw5LDEsMzIsMSwxMTcsMTYsMCwwLAorICAgIDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsCisgICAgMTE2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDc4LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEwMCw2LDAsCisgICAgMTA3LDgsMCwxMTQsNzQsMCwxMjQsMCwwLDEwMCwyLDAsMjUsMTI1LDEsMCwKKyAgICAxMDAsMywwLDEyNCwwLDAsMTA3LDcsMCwxMTQsNzQsMCwxMjQsMSwwLDEwNiwKKyAgICAyLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI1LDEsMCwxMTMsCisgICAgNzQsMCwxMTAsMCwwLDEyNCwxLDAsODMsNDAsNywwLDAsMCwxMTcsMTY3LAorICAgIDAsMCwwLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywKKyAgICAxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwKKyAgICAzMiwxMDMsMTE3LDk3LDExNCw5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsCisgICAgMTAxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsCisgICAgMTA4LDEwMCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwKKyAgICAxMTAsMTE2LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwKKyAgICAxMDEsMTE0LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwKKyAgICAxMTEsMTE5LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTcsMTEsMCwwLDAsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDk1LDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDc4LAorICAgIDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsMTAzLDEwMSwxMTYsMTE3LDQsMCwKKyAgICAwLDAsNzgsMTExLDExMCwxMDEsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwKKyAgICAxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDIsMCwwLDAsMTE3LDcsMCwwLDAsMTAzLAorICAgIDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw5NSw5NSw5MSw2LDAsMCwxMTUsMTIsMCwwLDAsMCw3LDE1LAorICAgIDEsMTIsMSwxMCwxLDEyLDEsMjUsMSwxMTcsMTcsMCwwLDAsOTUsOTksCisgICAgOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LAorICAgIDIsMCwxMzEsMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiw0LAorICAgIDAsMTAyLDIsMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwwLAorICAgIDEyNSwyLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCw4MywKKyAgICA0MCwxLDAsMCwwLDExNywxMTEsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwKKyAgICAzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLAorICAgIDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsCisgICAgMTAxLDExNSw0NCwzMiw5NywxMDgsMTA4LDExMSwxMTksOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwzMiw0MCw3LDAsMCwwLDExNywxOSwKKyAgICAwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsCisgICAgMTgsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTUsMCwwLDAsCisgICAgODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LAorICAgIDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNywwLDAsMCw2Niw4OSw4NCwKKyAgICA2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCwzLAorICAgIDAsMCwwLDExNywxMCwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAorICAgIDExMCwxMTUsMTE3LDYsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsOCwwLAorICAgIDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0MCwwLDAsMCwwLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyNywwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTA2LDYsMCwwLDExNSw4LDAsMCwwLDAsCisgICAgNSwxOCwxLDEyLDEsMTIsMSwxMTcsMjcsMCwwLDAsOTUsMTAzLDEwMSwxMTYsCisgICAgOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDk5LDUsMCwwLDAsMCwwLDAsMCwKKyAgICA5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDIyNywwLDAsCisgICAgMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNSwwLDExMCw1NCwwLDEyNCwxLDAsMTAwLAorICAgIDMsMCwxMDcsOSwwLDExNCw0NSwwLDEyNCwxLDAsMTEwLDMsMCwxMDUsMCwKKyAgICAwLDEyNSw2LDAsMTE2LDIsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwKKyAgICAxMTYsMCwwLDEyNCwwLDAsMTI0LDcsMCwxMjQsNCwwLDEzMSwzLDAsMTI1LAorICAgIDUsMCwxMjQsMywwLDExNSwyMDcsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsCisgICAgMCwxMTQsMTIyLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDIsMCwKKyAgICAxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCw4MywxMjQsMCwwLDExNSwxMzIsCisgICAgMCwxMjQsNSwwLDgzLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDExNiw0LAorICAgIDAsMTI0LDAsMCwxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMSwwLAorICAgIDI1LDEzMSwxLDAsMjQsMTI1LDgsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDUsCisgICAgMCwxMDYsNywwLDEwMCwzLDAsMTE2LDQsMCwxMjQsNSwwLDEwNiw3LDAsCisgICAgMTMxLDEsMCwxMjQsOCwwLDI0LDEzMywyLDAsMjUsMjUsODMsMTEwLDE2LDAsCisgICAgMTE2LDgsMCwxMjQsNSwwLDEyNCwzLDAsMTE2LDAsMCwxMzEsMywwLDgzLAorICAgIDEwMCwzLDAsODMsNDAsNCwwLDAsMCwxMTcsMjE0LDEsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LAorICAgIDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsCisgICAgMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LAorICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLAorICAgIDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsCisgICAgMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksCisgICAgMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsCisgICAgODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsCisgICAgMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICAxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSwKKyAgICA5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwKKyAgICAxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwKKyAgICAzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwKKyAgICAxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwKKyAgICAxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICA0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCwKKyAgICA5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLAorICAgIDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDUsMCwwLDAsMCwxMTcsMSwwLDAsMCw0Niw3OCwKKyAgICA0MCw5LDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxNywKKyAgICAwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDk1LDk1LDExNyw5LDAsMCwwLDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LAorICAgIDExMSwxMTAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxNiwwLDAsMCwKKyAgICA5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsCisgICAgNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywKKyAgICAwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNyw2LDAsMCwwLDEwOCwKKyAgICAxMTEsOTksOTcsMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDExNyw1LDAsMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE3LDYsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwOCwxMTEsOTgsCisgICAgOTcsMTA4LDExNSw5NSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMTE3LDcsMCwwLDAsOTksMTE3LDExNiw5NSwxMTEsMTAyLDEwMiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw5NSw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwxMTcsNiwwLDAsMTE1LDI2LDAsMCwwLAorICAgIDAsMTEsMTIsMSwxNSwyLDI0LDEsMTIsMSwxOCwxLDYsMywxMiwxLAorICAgIDIzLDEsNiwxLDQsNCwzNSwzLDQwLDIsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwxNCwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTk2LAorICAgIDIsMCwwLDEyNCwxLDAsOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwKKyAgICAxLDAsMTA2LDIsMCwxMDYsMywwLDExNCwzMywwLDExNiw0LDAsOTcsNSwKKyAgICAwLDExMCw2LDAsMTE2LDYsMCw5Nyw1LDAsMTIwLDQ3LDAsMTE2LDAsMCwKKyAgICAxMTYsMSwwLDEwMiwyLDAsNjgsOTMsMzMsMCwxMjUsMiwwLDExNiw3LDAsCisgICAgMTI0LDIsMCwxMDAsMSwwLDEzMSwyLDAsMTE1LDUyLDAsMTE2LDgsMCwxMjQsCisgICAgMiwwLDk1LDksMCwxMTMsNTIsMCwxMTMsNTIsMCw4NywxMTYsMSwwLDEwNiwKKyAgICAxMCwwLDExNiwxMSwwLDI1LDEyNSwzLDAsMTIwLDc2LDAsMTAwLDI4LDAsNjgsCisgICAgOTMsNjgsMCwxMjUsNCwwLDEyNCw0LDAsMTE2LDEsMCwxMDYsMTAsMCwxMDcsCisgICAgNywwLDExNCwxNDgsMCwxMTYsOCwwLDEwNiwxMiwwLDEyNCw0LDAsMTMxLDEsCisgICAgMCwxMjUsNSwwLDExMCwxMywwLDExNiwxLDAsMTA2LDEwLDAsMTI0LDQsMCwKKyAgICAyNSwxMjUsNSwwLDExNiwxMywwLDEyNCwzLDAsMTI0LDQsMCwxMjQsNSwwLAorICAgIDEzMSwzLDAsMSwxMTMsMTA5LDAsODcsMTAwLDYsMCwxMDAsNywwLDEwMywxLAorICAgIDAsMTAyLDIsMCwxMDAsOCwwLDEwMCw5LDAsMTAwLDcsMCwxMDMsMiwwLAorICAgIDEwMiwyLDAsMTAwLDEwLDAsMTAwLDksMCwxMDAsNywwLDEwMywyLDAsMTAyLAorICAgIDIsMCwxMDIsMywwLDEyNSw2LDAsMTIwLDE4OSwwLDEyNCw2LDAsNjgsOTMsCisgICAgMTY5LDAsOTIsMiwwLDEyNSw3LDAsMTI1LDgsMCwxMTYsMTQsMCwxMDAsMTEsCisgICAgMCwxMDAsMTIsMCwxMzIsMCwwLDEyNCw4LDAsNjgsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDExNSwyMywxLDExNiwxNSwwLDEzMCwxLDAsMTI0LDgsMCwxMDAsMTMsMCwKKyAgICAyNSwxMjUsOSwwLDEyNCw3LDAsMTE2LDEsMCwxMDYsMTAsMCwxMDcsNiwwLAorICAgIDExNCw2NSwxLDExNiwxLDAsMTA2LDEwLDAsMTI0LDcsMCwyNSwxMjUsMTAsMCwKKyAgICA4MCwxMTMsMjM2LDAsMTIxLDYwLDAsMTE2LDgsMCwxMDYsMTIsMCwxMjQsNywwLAorICAgIDEzMSwxLDAsMTI1LDEwLDAsMTI0LDcsMCwxMDAsMTAsMCwxMDcsMiwwLDExNCwKKyAgICAxMjMsMSwxMDAsMTQsMCwxMTYsMSwwLDEwNiwxNiwwLDEwNyw2LDAsMTE0LDEyMywKKyAgICAxLDEyNCw4LDAsMTAwLDE1LDAsMjUsMTI1LDksMCwxMTAsMCwwLDgwLDg3LAorICAgIDExMywyMzYsMCw0LDExNiwxNywwLDEwNywxMCwwLDExNCwxNDgsMSwxLDEsMSwKKyAgICAxMTksMjM2LDAsODksMTEzLDIzNiwwLDg4LDExMywyMzYsMCw4NywxMTYsMTcsMCwxMDAsCisgICAgMTYsMCwxMzEsMSwwLDEzMCwxLDAsMTIxLDE5LDAsMTE2LDgsMCwxMDYsMTIsCisgICAgMCwxMDAsMTcsMCwxMzEsMSwwLDEyNSwxMSwwLDg3LDExMCwyNCwwLDQsMTE2LAorICAgIDE3LDAsMTA3LDEwLDAsMTE0LDIxMCwxLDEsMSwxLDEwMCwyNywwLDEyNSwxMSwKKyAgICAwLDg5LDExMCwxLDAsODgsMTE2LDgsMCwxMDYsMTIsMCwxMDAsMTgsMCwxMzEsCisgICAgMSwwLDEyNSwxMiwwLDEyNCw3LDAsMTAwLDgsMCwxMDcsMiwwLDExNCwxNiwKKyAgICAyLDExNiw4LDAsMTA2LDEyLDAsMTAwLDE5LDAsMTMxLDEsMCwxMjUsMTMsMCwKKyAgICAxMTYsMTMsMCwxMjQsMywwLDEwMCwyMCwwLDEyNCwxMywwLDEzMSwzLDAsMSwKKyAgICAxMTAsMCwwLDExNiwxMywwLDEyNCwzLDAsMTAwLDIxLDAsMTI0LDEwLDAsMTMxLAorICAgIDMsMCwxLDExNiwxMywwLDEyNCwzLDAsMTAwLDE3LDAsMTI0LDExLDAsMTMxLAorICAgIDMsMCwxLDExNiwxMywwLDEyNCwzLDAsMTAwLDE4LDAsMTI0LDEyLDAsMTMxLAorICAgIDMsMCwxLDExNiwxMywwLDEyNCwzLDAsMTAwLDIyLDAsMTI0LDksMCwxMzEsCisgICAgMywwLDEsMTE2LDEzLDAsMTI0LDMsMCwxMDAsMjMsMCwxMTYsMTksMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMTMxLDMsMCwxLDExNiwxMywwLDEyNCwzLDAsMTAwLAorICAgIDI0LDAsMTE2LDIwLDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDIxLDAsMTA2LAorICAgIDIyLDAsMTE2LDAsMCwxMDYsMjMsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsCisgICAgNywwLDEwMCw4LDAsMTA3LDIsMCwxMTQsMTkyLDIsMTE2LDI0LDAsMTA2LDI1LAorICAgIDAsMTAwLDI1LDAsMTMxLDEsMCwxLDEwMCwyNiwwLDExNiwyMSwwLDEwNyw2LAorICAgIDAsMTE0LDE5MiwyLDEwMCwyOSwwLDExNiwyNywwLDk1LDI4LDAsMTEzLDE5MiwyLAorICAgIDExMCwwLDAsMTAwLDI3LDAsODMsNDAsMzAsMCwwLDAsMTE3LDI1MCwwLDAsCisgICAgMCw4MywxMDEsMTE2LDExNywxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICAzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwKKyAgICAxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsCisgICAgMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsCisgICAgMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksCisgICAgOTksMTAxLDExNSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsCisgICAgMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLAorICAgIDEwMCwzMiwxMDUsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNywxMCwwLDAsMCwKKyAgICA5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDExNywzLDAsMCwwLDk1LAorICAgIDEwNSwxMTEsMTE3LDksMCwwLDAsOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAorICAgIDExNyw4LDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTcsNywwLAorICAgIDAsMCwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDExNyw1LDAsMCwwLDExMiwxMTEsCisgICAgMTE1LDEwNSwxMjAsMTE3LDEsMCwwLDAsNDcsMTE3LDIsMCwwLDAsMTEwLDExNiwKKyAgICAxMTcsMSwwLDAsMCw5MiwxMTcsMywwLDAsMCwxMTEsMTE1LDUwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LAorICAgIDAsMCwwLDExNSwzMywwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsCisgICAgMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsCisgICAgODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMDUsMSwKKyAgICAwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywzLDAsMCwwLDEwOCwxMDEsCisgICAgMTEwLDQwLDIsMCwwLDAsMTE3LDIsMCwwLDAsNDYsNDgsMTE3LDMsMCwKKyAgICAwLDAsMTE1LDEwMSwxMTIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTg1LAorICAgIDYsMCwwLDExNSwyLDAsMCwwLDYsMCwxMTcsMjUsMCwwLDAsOTUsCisgICAgMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsCisgICAgMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDEwNSwwLDAsMCwwLDExNyw3LDAsCisgICAgMCwwLDY5LDc3LDg4LDMyLDcxLDY3LDY3LDEwNSwxLDAsMCwwLDExNywzMCwKKyAgICAwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwKKyAgICAxMTYsMTE3LDcsMCwwLDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsOCwwLAorICAgIDAsMCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiwxMTcsNiwwLDAsMCwxMTksCisgICAgMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsNywwLDAsMCw5NSwxMTksMTA1LDExMCwxMTQsMTAxLAorICAgIDEwMywxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw4LDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDExNywxNSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsNCwwLDAsMCw0NiwKKyAgICAxMTIsMTIxLDExOSwxMTcsNiwwLDAsMCw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsNzgsNDAsCisgICAgNCwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw5LDAsMCwKKyAgICAwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsOCwwLDAsMCw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsCisgICAgMTA0LDk3LDEwOCw4NCw0MCwyOSwwLDAsMCwxMTcsNCwwLDAsMCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNSwwLDAsMCwxMDIsCisgICAgMTA4LDk3LDEwMywxMTUsMTE3LDgsMCwwLDAsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLAorICAgIDEwMSwxMTcsMjcsMCwwLDAsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsCisgICAgNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksCisgICAgODMsMTE3LDE3LDAsMCwwLDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLAorICAgIDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywyMywwLDAsMCw2OCw2OSw2Niw4NSwKKyAgICA3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3MywKKyAgICA4OCw2OSw4MywxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywKKyAgICAxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTUsOTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCwKKyAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsMCwKKyAgICAxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsMywwLDAsMCw5NywxMDgsMTA4LDExNywKKyAgICAxNCwwLDAsMCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTcsNywwLDAsMCwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE3LDExLAorICAgIDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywKKyAgICAxNiwwLDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCisgICAgOTksOTcsMTE1LDEwMSwxMTcsMTgsMCwwLDAsNjksODgsODQsNjksNzgsODMsNzMsCisgICAgNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDYsMCwwLDAsCisgICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDE4LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE3LDE1LDAsCisgICAgMCwwLDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LAorICAgIDgzLDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDQsMCwwLAorICAgIDAsODQsMTE0LDExNywxMDEsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCisgICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywKKyAgICAxMSwwLDAsMCw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCw0MCwKKyAgICAxNCwwLDAsMCwxMTcsMTAsMCwwLDAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEyLAorICAgIDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDExNywKKyAgICAxNCwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsMTAsMCwwLDAsMTExLDExNSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LAorICAgIDExNSwxMTcsMTAsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTExLDExNSwKKyAgICAxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LAorICAgIDExNiwxMTEsMTE0LDExNSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLAorICAgIDExMiwxMTcsOSwwLDAsMCwxMTEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICAxMywwLDAsMCwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNywxNCwwLDAsMCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsMTMsMCwwLDAsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsNiwwLDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDE1Myw2LDAsCisgICAgMCwxMTUsOTYsMCwwLDAsMCw5LDYsMSw2LDIsMTIsMSw5LDIsCisgICAgNiwyLDE5LDEsMTUsMSwxNiwyLDEzLDEsMTMsMSwxNSwxLDE4LDIsCisgICAgMTMsMSwyMCwyLDQ4LDEsMTksMiwzMSwxLDEwLDEsMTUsMSwxMywxLAorICAgIDQsMiwzLDEsMTUsMiwyNywxLDEzLDEsNSwxLDEzLDEsMTIsMiwKKyAgICAxMiwyLDMsMSwxOSwxLDEzLDIsMTEsMSwxNSwyLDEyLDEsMTUsMSwKKyAgICAxOSwyLDE2LDEsMTYsMSwxNiwxLDE2LDEsMjIsMiwxOSwxLDE5LDEsCisgICAgMTIsMSwxMywxLDEyLDEsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LAorICAgIDExMiw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMzYsMCwwLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCwxLDExNiwxLDAsMTMxLDAsMCwxMjUsMiwKKyAgICAwLDExNiwyLDAsMTA2LDMsMCwxMDYsNCwwLDExNiw1LDAsMTA2LDYsMCwKKyAgICAxMjQsMiwwLDE0MCwwLDAsMTAzLDEsMCwxMzEsMSwwLDEsMTE2LDIsMCwKKyAgICAxMDYsNywwLDEwNiw4LDAsMTE2LDksMCwxMzEsMSwwLDEsMTE2LDIsMCwKKyAgICAxMDYsNywwLDEwNiw4LDAsMTE2LDEwLDAsMTMxLDEsMCwxLDExNiwxMSwwLAorICAgIDEwNiwxMiwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTE2LDAsMTE2LDIsMCwxMDYsCisgICAgNywwLDEwNiw4LDAsMTE2LDEzLDAsMTMxLDEsMCwxLDExMCwwLDAsMTE2LAorICAgIDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDE0LDAsMTMxLDEsMCwxLDEwMCwKKyAgICAyLDAsODMsNDAsMywwLDAsMCwxMTcsNTAsMCwwLDAsNzMsMTEwLDExNSwKKyAgICAxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTcsCisgICAgMiwwLDAsMCwxMTAsMTE2LDc4LDQwLDE1LDAsMCwwLDExNyw2LDAsMCwKKyAgICAwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsMTE3LDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsCisgICAgMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwxMTcsNiwKKyAgICAwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTcsMTAsMCwwLDAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsOSwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE3LDksMCwwLDAsMTA5LDEwMSwxMTYsOTcsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsCisgICAgMTUsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywyMSwwLDAsMCwKKyAgICA4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQwLDMsMCwwLDAsMTE3LDEwLDAsMCwwLDExNSwxMjEsCisgICAgMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMDUsMTA5LAorICAgIDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTcsMCwwLDAsMTE1LDExNywxMTIsCisgICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSwKKyAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwyMjcsNiwwLDAsMTE1LDE2LDAsMCwwLAorICAgIDAsMiwxMywxLDksMSwyOCwxLDE2LDEsMTYsMSwxNSwxLDE5LDEsCisgICAgMTE3LDgsMCwwLDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsNzgsNDAsMywKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMTksMTA1LDExMCwxMTcsNiwwLDAsMCwKKyAgICA5OSwxMjEsMTAzLDExOSwxMDUsMTEwLDExNyw2LDAsMCwwLDEwMCw5NywxMTQsMTE5LDEwNSwKKyAgICAxMTAsNDAsNzQsMCwwLDAsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSwKKyAgICA5NSw5NSwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsCisgICAgNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsCisgICAgNzcsODMsMTE3LDE2LDAsMCwwLDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LAorICAgIDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsCisgICAgMTExLDExMCwxMDMsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwxMTEsMTEwLDEwMywxMTcsCisgICAgMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDExNywxMSwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywxOCwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSwKKyAgICA5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNywxMywwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsCisgICAgMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMTcsNSwwLDAsMCw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTcsNCwwLDAsMCwxMTYsMTIxLDExMiwxMDEsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwKKyAgICAxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTcsMTAsMCwwLDAsMTEwLDEwMSwxMTksOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEzLDAsMCwwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSwxMTcsMTIsMCwwLDAsOTUsOTgsMTA4LAorICAgIDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsMTIsMCwwLDAsODIsMTE3LAorICAgIDExMCwxMTYsMTA1LDEwOSwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxNCwwLDAsMCw5NSwKKyAgICA2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwKKyAgICAwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNywxNiwwLAorICAgIDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwKKyAgICAxMDcsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsCisgICAgMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLAorICAgIDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDMsMCwKKyAgICAwLDAsMTExLDExNCwxMDAsMTE3LDE3LDAsMCwwLDk1LDgyLDY1LDg3LDk1LDc3LAorICAgIDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNyw1LDAsMCwwLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwxMTcsNSwwLDAsMCwxMTQsOTcsMTEwLDEwMywxMDEsMTE3LAorICAgIDEyLDAsMCwwLDk1LDc3LDY1LDcxLDczLDY3LDk1LDY2LDg5LDg0LDY5LDgzLAorICAgIDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDExNywxNSwwLAorICAgIDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKKyAgICA4MywxMTcsMjMsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODksODQsNjksCisgICAgNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDI3LDAsCisgICAgMCwwLDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LAorICAgIDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw0LDAsCisgICAgMCwwLDc4LDExMSwxMTAsMTAxLDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxNywwLDAsCisgICAgMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDExNywxNSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDEwMiwxMDUsMTA4LDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsCisgICAgMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTcsMCwwLDAsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTcsMTEsMCwwLDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE3LDE2LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDE3LDAsMCwwLAorICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwKKyAgICAxMDksMTE3LDE1LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsCisgICAgMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsCisgICAgMTE1LDEwNSw5OSwxMTUsMTE3LDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMjAsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDE4LDAsMCwwLDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LAorICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywxOSwwLDAsMCw2OSwxMjAsCisgICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMTcsMTQsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA4MCw5NywxMTYsMTA0LDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LAorICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTE3LDEzLDAsCisgICAgMCwwLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsCisgICAgMTIsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNywxMywwLDAsMCw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsCisgICAgOTksMTA3LDExNyw4LDAsMCwwLDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNywKKyAgICAyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLAorICAgIDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTE3LDE0LDAsMCwwLAorICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDExNywxMSwKKyAgICAwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNywxNiwKKyAgICAwLDAsMCw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsCisgICAgMTA1LDExNSwxMTYsMTE3LDE3LDAsMCwwLDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDI3LDAsMCwwLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwKKyAgICAxMTYsMTE3LDExMiwxMTcsOCwwLDAsMCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDgsMCwwLDAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLAorICAgIDAsMCwxMTUsMTMyLDAsMCwwLDYsMjEsNiwzLDEyLDEzLDEyLDE2LDEyLAorICAgIDEzLDEyLDEyLDEyLDEyLDEyLDEwLDEyLDYsMTIsNywxNSwyMiwxMiw4LDE1LAorICAgIDMsMTIsMTIsNiwyLDYsMywyMiw0LDE5LDY4LDE5LDIzLDEyLDE5LDEyLAorICAgIDIwLDEyLDEwMCwzNCwxLDM3LDIsNiwyLDksMiw5LDEsOSwyLDE1LAorICAgIDI3LDEyLDIzLDEyLDIxLDEyLDgsMTIsMTMsMTIsMTEsMTIsNTUsMTIsMTgsMTIsCisgICAgMTEsMTIsMTEsMTIsMTcsMTksNTcsMTksNTQsMTksNTAsMTksODIsMjIsMTM0LDE5LAorICAgIDI5LDI1LDQ5LDI1LDI1LDYsMywxOSw0NSwxOSw1NSwxOSwxOCwxOSw5MSwxOSwKKyAgICAxMjYsMTksMTMsMTIsOSwxMiwxNywxMiwxNyw2LDIsMTIsNTAsMTIsMTMsMTgsCisgICAgMjQsMTIsMzQsMTIsMTUsMTIsMTEsMjQsMzYsMTIsNzQsCit9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5IGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CmluZGV4IDVkOGU1YTkuLmQ5YTA4NTUgMTAwNzU1Ci0tLSBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorKysgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKQEAgLTIzLDkgKzIzLDYgQEAKICAgICBvcGNvZGUgPSBmaW5kX21vZHVsZSgib3Bjb2RlIikKICAgICB0YXJnZXRzID0gWydfdW5rbm93bl9vcGNvZGUnXSAqIDI1NgogICAgIGZvciBvcG5hbWUsIG9wIGluIG9wY29kZS5vcG1hcC5pdGVtcygpOgotICAgICAgICBpZiBvcG5hbWUgPT0gIlNUT1BfQ09ERSI6Ci0gICAgICAgICAgICAjIFhYWCBvcGNvZGUgbm90IGltcGxlbWVudGVkCi0gICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0YXJnZXRzW29wXSA9ICJUQVJHRVRfJXMiICUgb3BuYW1lCiAgICAgZi53cml0ZSgic3RhdGljIHZvaWQgKm9wY29kZV90YXJnZXRzWzI1Nl0gPSB7XG4iKQogICAgIGYud3JpdGUoIixcbiIuam9pbihbIiAgICAmJiVzIiAlIHMgZm9yIHMgaW4gdGFyZ2V0c10pKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL21hcnNoYWwuYyBiL1B5dGhvbi9tYXJzaGFsLmMKaW5kZXggM2UyZmJlYi4uNmQ1MmE4NCAxMDA2NDQKLS0tIGEvUHl0aG9uL21hcnNoYWwuYworKysgYi9QeXRob24vbWFyc2hhbC5jCkBAIC0zMSw2ICszMSw5IEBACiAjZGVmaW5lIFRZUEVfU1RPUElURVIgICAgICAgICAgICdTJwogI2RlZmluZSBUWVBFX0VMTElQU0lTICAgICAgICAgICAnLicKICNkZWZpbmUgVFlQRV9JTlQgICAgICAgICAgICAgICAgJ2knCisvKiBUWVBFX0lOVDY0IGlzIGRlcHJlY2F0ZWQuIEl0IGlzIG5vdAorICAgZ2VuZXJhdGVkIGFueW1vcmUsIGFuZCBzdXBwb3J0IGZvciByZWFkaW5nIGl0CisgICB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNC4gKi8KICNkZWZpbmUgVFlQRV9JTlQ2NCAgICAgICAgICAgICAgJ0knCiAjZGVmaW5lIFRZUEVfRkxPQVQgICAgICAgICAgICAgICdmJwogI2RlZmluZSBUWVBFX0JJTkFSWV9GTE9BVCAgICAgICAnZycKQEAgLTU5LDkgKzYyLDkgQEAKICAgICAvKiBJZiBmcCA9PSBOVUxMLCB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDogKi8KICAgICBQeU9iamVjdCAqcmVhZGFibGU7ICAgIC8qIFN0cmVhbS1saWtlIG9iamVjdCBiZWluZyByZWFkIGZyb20gKi8KICAgICBQeU9iamVjdCAqc3RyOworICAgIFB5T2JqZWN0ICpjdXJyZW50X2ZpbGVuYW1lOwogICAgIGNoYXIgKnB0cjsKICAgICBjaGFyICplbmQ7Ci0gICAgUHlPYmplY3QgKnN0cmluZ3M7IC8qIGRpY3Qgb24gbWFyc2hhbCwgbGlzdCBvbiB1bm1hcnNoYWwgKi8KICAgICBpbnQgdmVyc2lvbjsKIH0gV0ZJTEU7CiAKQEAgLTEyMSwxNSArMTI0LDYgQEAKICAgICB3X2J5dGUoKGNoYXIpKCh4Pj4yNCkgJiAweGZmKSwgcCk7CiB9CiAKLSNpZiBTSVpFT0ZfTE9ORyA+IDQKLXN0YXRpYyB2b2lkCi13X2xvbmc2NChsb25nIHgsIFdGSUxFICpwKQotewotICAgIHdfbG9uZyh4LCBwKTsKLSAgICB3X2xvbmcoeD4+MzIsIHApOwotfQotI2VuZGlmCi0KIC8qIFdlIGFzc3VtZSB0aGF0IFB5dGhvbiBsb25ncyBhcmUgc3RvcmVkIGludGVybmFsbHkgaW4gYmFzZSBzb21lIHBvd2VyIG9mCiAgICAyKioxNTsgZm9yIHRoZSBzYWtlIG9mIHBvcnRhYmlsaXR5IHdlJ2xsIGFsd2F5cyByZWFkIGFuZCB3cml0ZSB0aGVtIGluIGJhc2UKICAgIGV4YWN0bHkgMioqMTUuICovCkBAIC0yMTksOCArMjEzLDggQEAKICNpZiBTSVpFT0ZfTE9ORyA+IDQKICAgICAgICAgICAgIGxvbmcgeSA9IFB5X0FSSVRITUVUSUNfUklHSFRfU0hJRlQobG9uZywgeCwgMzEpOwogICAgICAgICAgICAgaWYgKHkgJiYgeSAhPSAtMSkgewotICAgICAgICAgICAgICAgIHdfYnl0ZShUWVBFX0lOVDY0LCBwKTsKLSAgICAgICAgICAgICAgICB3X2xvbmc2NCh4LCBwKTsKKyAgICAgICAgICAgICAgICAvKiBUb28gbGFyZ2UgZm9yIFRZUEVfSU5UICovCisgICAgICAgICAgICAgICAgd19QeUxvbmcoKFB5TG9uZ09iamVjdCopdiwgcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTMxMSw5ICszMDUsNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgewogICAgICAgICBQeU9iamVjdCAqdXRmODsKLSAgICAgICAgdXRmOCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgdXRmOCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodiwgInV0ZjgiLCAic3Vycm9nYXRlcGFzcyIpOwogICAgICAgICBpZiAodXRmOCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBwLT5kZXB0aC0tOwogICAgICAgICAgICAgcC0+ZXJyb3IgPSBXRkVSUl9VTk1BUlNIQUxMQUJMRTsKQEAgLTQ0NSw3ICs0MzcsNiBAQAogICAgIHdmLmZwID0gZnA7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7Ci0gICAgd2Yuc3RyaW5ncyA9IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19sb25nKHgsICZ3Zik7CiB9CkBAIC00NTcsMTAgKzQ0OCw4IEBACiAgICAgd2YuZnAgPSBmcDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKLSAgICB3Zi5zdHJpbmdzID0gKHZlcnNpb24gPiAwKSA/IFB5RGljdF9OZXcoKSA6IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnN0cmluZ3MpOwogfQogCiB0eXBlZGVmIFdGSUxFIFJGSUxFOyAvKiBTYW1lIHN0cnVjdCB3aXRoIGRpZmZlcmVudCBpbnZhcmlhbnRzICovCkBAIC00ODUsNyArNDc0LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHAtPnJlYWRhYmxlLCAicmVhZCIsICJpIiwgbik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworCisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwLT5yZWFkYWJsZSwgJlB5SWRfcmVhZCwgImkiLCBuKTsKICAgICAgICAgcmVhZCA9IDA7CiAgICAgICAgIGlmIChkYXRhICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewpAQCAtMTA2OSw2ICsxMDYwLDE4IEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IHJfb2JqZWN0KHApOwogICAgICAgICAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBjb2RlX2Vycm9yOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChwLT5jdXJyZW50X2ZpbGVuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShmaWxlbmFtZSwgcC0+Y3VycmVudF9maWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocC0+Y3VycmVudF9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHAtPmN1cnJlbnRfZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHAtPmN1cnJlbnRfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBuYW1lID0gcl9vYmplY3QocCk7CiAgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gY29kZV9lcnJvcjsKQEAgLTExMzEsNyArMTEzNCw3IEBACiAgICAgYXNzZXJ0KGZwKTsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CiAgICAgcmYuZnAgPSBmcDsKLSAgICByZi5zdHJpbmdzID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5lbmQgPSByZi5wdHIgPSBOVUxMOwogICAgIHJldHVybiByX3Nob3J0KCZyZik7CiB9CkBAIC0xMTQyLDcgKzExNDUsNyBAQAogICAgIFJGSUxFIHJmOwogICAgIHJmLmZwID0gZnA7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOwotICAgIHJmLnN0cmluZ3MgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLnB0ciA9IHJmLmVuZCA9IE5VTEw7CiAgICAgcmV0dXJuIHJfbG9uZygmcmYpOwogfQpAQCAtMTIwNCwxMSArMTIwNywxMCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgcmYuZnAgPSBmcDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7Ci0gICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYuZGVwdGggPSAwOwogICAgIHJmLnB0ciA9IHJmLmVuZCA9IE5VTEw7CiAgICAgcmVzdWx0ID0gcl9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxOSwxMiArMTIyMSwxMSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgcmYuZnAgPSBOVUxMOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5wdHIgPSBzdHI7CiAgICAgcmYuZW5kID0gc3RyICsgbGVuOwotICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgIHJmLmRlcHRoID0gMDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjMyLDcgKzEyMzMsNiBAQAogUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoUHlPYmplY3QgKngsIGludCB2ZXJzaW9uKQogewogICAgIFdGSUxFIHdmOwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCiAgICAgd2YuZnAgPSBOVUxMOwogICAgIHdmLnJlYWRhYmxlID0gTlVMTDsKQEAgLTEyNDQsOSArMTI0NCw3IEBACiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247Ci0gICAgd2Yuc3RyaW5ncyA9ICh2ZXJzaW9uID4gMCkgPyBQeURpY3RfTmV3KCkgOiBOVUxMOwogICAgIHdfb2JqZWN0KHgsICZ3Zik7Ci0gICAgUHlfWERFQ1JFRih3Zi5zdHJpbmdzKTsKICAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKICAgICAgICAgY2hhciAqYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopd2Yuc3RyKTsKICAgICAgICAgaWYgKHdmLnB0ciAtIGJhc2UgPiBQWV9TU0laRV9UX01BWCkgewpAQCAtMTI2OCwxMiArMTI2Niw3IEBACiAgICAgICAgICAgICAgICA6Im9iamVjdCB0b28gZGVlcGx5IG5lc3RlZCB0byBtYXJzaGFsIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKLSAgICAgICAgLyogWFhYIFF1aWNrIGhhY2sgLS0gbmVlZCB0byBkbyB0aGlzIGRpZmZlcmVudGx5ICovCi0gICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdCh3Zi5zdHIpOwotICAgICAgICBQeV9ERUNSRUYod2Yuc3RyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gd2Yuc3RyOwogfQogCiAvKiBBbmQgYW4gaW50ZXJmYWNlIGZvciBQeXRob24gcHJvZ3JhbXMuLi4gKi8KQEAgLTEyODcsMTIgKzEyODAsMTQgQEAKICAgICBpbnQgdmVyc2lvbiA9IFB5X01BUlNIQUxfVkVSU0lPTjsKICAgICBQeU9iamVjdCAqczsKICAgICBQeU9iamVjdCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098aTpkdW1wIiwgJngsICZmLCAmdmVyc2lvbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHMgPSBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyh4LCB2ZXJzaW9uKTsKICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJ3cml0ZSIsICJPIiwgcyk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF93cml0ZSwgIk8iLCBzKTsKICAgICBQeV9ERUNSRUYocyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTEzMTQsNiArMTMwOSw3IEBACiBtYXJzaGFsX2xvYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQogewogICAgIFB5T2JqZWN0ICpkYXRhLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogICAgIFJGSUxFIHJmOwogCiAgICAgLyoKQEAgLTEzMjEsNyArMTMxNyw3IEBACiAgICAgICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgb2JqZWN0IHBhc3NlZCBpbiBhdCBsZWFzdAogICAgICAqIGhhcyBhIHJlYWQgbWV0aG9kIHdoaWNoIHJldHVybnMgYnl0ZXMuCiAgICAgICovCi0gICAgZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgInJlYWQiLCAiaSIsIDApOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJpIiwgMCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CkBAIC0xMzMxLDEyICsxMzI3LDExIEBACiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICAgICAgcmYuZGVwdGggPSAwOwogICAgICAgICByZi5mcCA9IE5VTEw7CiAgICAgICAgIHJmLnJlYWRhYmxlID0gZjsKKyAgICAgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgICAgIHJlc3VsdCA9IHJlYWRfb2JqZWN0KCZyZik7Ci0gICAgICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICB9CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzg5LDEyICsxMzg0LDExIEBACiAgICAgbiA9IHAubGVuOwogICAgIHJmLmZwID0gTlVMTDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYucHRyID0gczsKICAgICByZi5lbmQgPSBzICsgbjsKLSAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmVzdWx0ID0gcmVhZF9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDg1YjBkNjYuLjQyODkxNGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMTQ4LDE1ICsxNDgsNiBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgaW50Ci1fdXN0cmxlbihQeV9VTklDT0RFICp1KQotewotICAgIGludCBpID0gMDsKLSAgICBQeV9VTklDT0RFICp2ID0gdTsKLSAgICB3aGlsZSAoKnYgIT0gMCkgeyBpKys7IHYrKzsgfQotICAgIHJldHVybiBpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogZG9fbWt0dXBsZShjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBlbmRjaGFyLCBpbnQgbiwgaW50IGZsYWdzKQogewpAQCAtMjY5LDcgKzI2MCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAobiA8IDApCi0gICAgICAgICAgICAgICAgICAgIG4gPSBfdXN0cmxlbih1KTsKKyAgICAgICAgICAgICAgICAgICAgbiA9IFB5X1VOSUNPREVfc3RybGVuKHUpOwogICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdjsKQEAgLTI5MiwxMSArMjgzLDYgQEAKICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBpID0gdmFfYXJnKCpwX3ZhLCBpbnQpOwotICAgICAgICAgICAgaWYgKGkgPCAwIHx8IGkgPiBQeVVuaWNvZGVfR2V0TWF4KCkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKaW5kZXggYTkxZGE3OS4uMmQ2YmNkYSAxMDA2NDQKLS0tIGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKKysrIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKQEAgLTcxLDcgKzcxLDcgQEAKICAgICAmJlRBUkdFVF9TVE9SRV9MT0NBTFMsCiAgICAgJiZUQVJHRVRfUFJJTlRfRVhQUiwKICAgICAmJlRBUkdFVF9MT0FEX0JVSUxEX0NMQVNTLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX1lJRUxEX0ZST00sCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9MU0hJRlQsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IDdhZTU5OWIuLjVkNTM2NzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC0yMyw2ICsyMyw2NCBAQAogI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgYnl0ZXMpIFwKICAgICAoYmxvY2tzW3N0YXJ0XT09YmxvY2tzW3N0YXJ0K2J5dGVzLTFdKQogCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfQ1JFQVRFKCkgeyBcCisgICAgY29uc3Rfc3RhY2tfc2l6ZSA9IDI1NjsgXAorICAgIGNvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgbG9hZF9jb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAorICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCisgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCisgICAgfSBcCisgICAgfQorCisjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAorICAgIGlmIChjb25zdF9zdGFjaykgXAorICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAorICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCisgICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKSBkbyB7IFwKKyAgICBQeU9iamVjdCAqX3g7IFwKKyAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsgXAorICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBfeCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCisgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAorICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAorICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKKyAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IGk7IFwKKyAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gX3g7IFwKKyAgICBpbl9jb25zdHMgPSAxOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1JFU0VUKCkgZG8geyBcCisgICAgY29uc3Rfc3RhY2tfdG9wID0gLTE7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfVE9QKCkgXAorICAgIGNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0KKworI2RlZmluZSBDT05TVF9TVEFDS19MQVNUTihpKSBcCisgICAgJmNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1BPUChpKSBkbyB7IFwKKyAgICBhc3NlcnQoY29uc3Rfc3RhY2tfdG9wICsgMSA+PSBpKTsgXAorICAgIGNvbnN0X3N0YWNrX3RvcCAtPSBpOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX09QX0xBU1ROKGkpIFwKKyAgICAoKGNvbnN0X3N0YWNrX3RvcCA+PSBpIC0gMSkgPyBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXSA6IC0xKQorCisKIC8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMS4gTE9BRF9DT05TVCBjMiAuLi4gTE9BRF9DT05TVCBjbiBCVUlMRF9UVVBMRSBuCiAgICB3aXRoICAgIExPQURfQ09OU1QgKGMxLCBjMiwgLi4uIGNuKS4KICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKQEAgLTMzLDE3ICs5MSwxNCBAQAogICAgdGVzdDsgZm9yIEJVSUxEX1NFVCBpdCBhc3NlbWJsZXMgYSBmcm96ZW5zZXQgcmF0aGVyIHRoYW4gYSB0dXBsZS4KICovCiBzdGF0aWMgaW50Ci10dXBsZV9vZl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlfc3NpemVfdCBuLCBQeU9iamVjdCAqY29uc3RzKQordHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmcsIGxlbl9jb25zdHM7CisgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbbiozXSA9PSBCVUlMRF9UVVBMRSB8fCBjb2Rlc3RyW24qM10gPT0gQlVJTERfTElTVCB8fCBjb2Rlc3RyW24qM10gPT0gQlVJTERfU0VUKTsKLSAgICBhc3NlcnQoR0VUQVJHKGNvZGVzdHIsIChuKjMpKSA9PSBuKTsKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykKLSAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaSozXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIEJ1aWxkdXAgbmV3IHR1cGxlIG9mIGNvbnN0YW50cyAqLwogICAgIG5ld2NvbnN0ID0gUHlUdXBsZV9OZXcobik7CkBAIC01MSwxNiArMTA2LDE0IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewotICAgICAgICBhcmcgPSBHRVRBUkcoY29kZXN0ciwgKGkqMykpOwotICAgICAgICBhc3NlcnQoYXJnIDwgbGVuX2NvbnN0cyk7Ci0gICAgICAgIGNvbnN0YW50ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgYXJnKTsKKyAgICAgICAgY29uc3RhbnQgPSBvYmpzW2ldOwogICAgICAgICBQeV9JTkNSRUYoY29uc3RhbnQpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2NvbnN0LCBpLCBjb25zdGFudCk7CiAgICAgfQogCiAgICAgLyogSWYgaXQncyBhIEJVSUxEX1NFVCwgdXNlIHRoZSBQeVR1cGxlIHdlIGp1c3QgYnVpbHQgdG8gY3JlYXRlIGEKICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCi0gICAgaWYgKGNvZGVzdHJbbiozXSA9PSBCVUlMRF9TRVQpIHsKKyAgICBpZiAoY29kZXN0clswXSA9PSBCVUlMRF9TRVQpIHsKICAgICAgICAgUHlPYmplY3QgKnR1cGxlID0gbmV3Y29uc3Q7CiAgICAgICAgIG5ld2NvbnN0ID0gUHlGcm96ZW5TZXRfTmV3KHR1cGxlKTsKICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKQEAgLTc3LDkgKzEzMCw4IEBACiAKICAgICAvKiBXcml0ZSBOT1BzIG92ZXIgb2xkIExPQURfQ09OU1RTIGFuZAogICAgICAgIGFkZCBhIG5ldyBMT0FEX0NPTlNUIG5ld2NvbnN0IG9uIHRvcCBvZiB0aGUgQlVJTERfVFVQTEUgbiAqLwotICAgIG1lbXNldChjb2Rlc3RyLCBOT1AsIG4qMyk7Ci0gICAgY29kZXN0cltuKjNdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgKG4qMyksIGxlbl9jb25zdHMpOworICAgIGNvZGVzdHJbMF0gPSBMT0FEX0NPTlNUOworICAgIFNFVEFSRyhjb2Rlc3RyLCAwLCBsZW5fY29uc3RzKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtODcsMTQgKzEzOSwxNCBAQAogICAgd2l0aCAgICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKQogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IGNhbiBiZSBhcHBlbmRlZC4KLSAgIENhbGxlZCB3aXRoIGNvZGVzdHIgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IExPQURfQ09OU1QuCisgICBDYWxsZWQgd2l0aCBjb2Rlc3RyIHBvaW50aW5nIHRvIHRoZSBCSU5PUC4KICAgIEFiYW5kb25zIHRoZSB0cmFuc2Zvcm1hdGlvbiBpZiB0aGUgZm9sZGluZyBmYWlscyAoaS5lLiAgMSsnYScpLgogICAgSWYgdGhlIG5ldyBjb25zdGFudCBpcyBhIHNlcXVlbmNlLCBvbmx5IGZvbGRzIHdoZW4gdGhlIHNpemUKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCiBzdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cykKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqdiwgKnc7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzLCBzaXplOwpAQCAtMTAyLDEzICsxNTQsMTEgQEAKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOwotICAgIGFzc2VydChjb2Rlc3RyWzNdID09IExPQURfQ09OU1QpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwotICAgIHYgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMCkpOwotICAgIHcgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMykpOwotICAgIG9wY29kZSA9IGNvZGVzdHJbNl07CisgICAgdiA9IG9ianNbMF07CisgICAgdyA9IG9ianNbMV07CisgICAgb3Bjb2RlID0gY29kZXN0clswXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIEJJTkFSWV9QT1dFUjoKICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfUG93ZXIodiwgdywgUHlfTm9uZSk7CkBAIC0xMzIsMTMgKzE4Miw2IEBACiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX1N1YnRyYWN0KHYsIHcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQklOQVJZX1NVQlNDUjoKLSAgICAgICAgICAgIC8qICM1MDU3OiBpZiB2IGlzIHVuaWNvZGUsIHRoZXJlIG1pZ2h0IGJlIGRpZmZlcmVuY2VzIGJldHdlZW4KLSAgICAgICAgICAgICAgIHdpZGUgYW5kIG5hcnJvdyBidWlsZHMgaW4gY2FzZXMgbGlrZSAnXFUwMDAxMjM0NSdbMF0gb3IKLSAgICAgICAgICAgICAgICdcVTAwMDEyMzQ1YWJjZGVmJ1szXSwgc28gaXQncyBiZXR0ZXIgdG8gc2tpcCB0aGUgb3B0aW1pemF0aW9uCi0gICAgICAgICAgICAgICBpbiBvcmRlciB0byBwcm9kdWNlIGNvbXBhdGlibGUgcHljcy4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU9iamVjdF9HZXRJdGVtKHYsIHcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQklOQVJZX0xTSElGVDoKQEAgLTE4NywxNiArMjMwLDE1IEBACiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAogICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgbWVtc2V0KGNvZGVzdHIsIE5PUCwgNCk7Ci0gICAgY29kZXN0cls0XSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDQsIGxlbl9jb25zdHMpOworICAgIGNvZGVzdHJbLTJdID0gTE9BRF9DT05TVDsKKyAgICBTRVRBUkcoY29kZXN0ciwgLTIsIGxlbl9jb25zdHMpOwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzKQorZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlPYmplY3QgKm5ld2NvbnN0PU5VTEwsICp2OworICAgIFB5T2JqZWN0ICpuZXdjb25zdDsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHM7CiAgICAgaW50IG9wY29kZTsKIApAQCAtMjA1LDEzICsyNDcsMTAgQEAKICAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICB2ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIDApKTsKICAgICBvcGNvZGUgPSBjb2Rlc3RyWzNdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6Ci0gICAgICAgICAgICAvKiBQcmVzZXJ2ZSB0aGUgc2lnbiBvZiAtMC4wICovCi0gICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHYpID09IDEpCi0gICAgICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKKyAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfTmVnYXRpdmUodik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX0ludmVydCh2KTsKQEAgLTM0Nyw3ICszODYsMTEgQEAKICAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87CiAgICAgaW50ICphZGRybWFwID0gTlVMTDsKICAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZSwgdGFic2l6OwotICAgIGludCBjdW1sYz0wLCBsYXN0bGM9MDsgICAgICAvKiBDb3VudCBydW5zIG9mIGNvbnNlY3V0aXZlIExPQURfQ09OU1RzICovCisgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7CisgICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKKyAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOworICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBOVUxMOwogICAgIGNoYXIgKm5hbWU7CiAKQEAgLTM5MywxMiArNDM2LDE2IEBACiAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2soY29uc3RzKSk7CiAKKyAgICBDT05TVF9TVEFDS19DUkVBVEUoKTsKKwogICAgIGZvciAoaT0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgewogICAgICAgcmVvcHRpbWl6ZV9jdXJyZW50OgogICAgICAgICBvcGNvZGUgPSBjb2Rlc3RyW2ldOwogCi0gICAgICAgIGxhc3RsYyA9IGN1bWxjOwotICAgICAgICBjdW1sYyA9IDA7CisgICAgICAgIGlmICghaW5fY29uc3RzKSB7CisgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOworICAgICAgICB9CisgICAgICAgIGluX2NvbnN0cyA9IDA7CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgICAgIC8qIFJlcGxhY2UgVU5BUllfTk9UIFBPUF9KVU1QX0lGX0ZBTFNFCkBAIC00MzksMjEgKzQ4NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChoID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGN1bWxjID0gbGFzdGxjICsgMTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0CiAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKICAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6Ci0gICAgICAgICAgICAgICAgY3VtbGMgPSBsYXN0bGMgKyAxOworICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzNdICE9IFBPUF9KVU1QX0lGX0ZBTFNFICB8fAogICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpICB8fAogICAgICAgICAgICAgICAgICAgICAhUHlPYmplY3RfSXNUcnVlKFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIGopKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSwgTk9QLCA2KTsKLSAgICAgICAgICAgICAgICBjdW1sYyA9IDA7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFRyeSB0byBmb2xkIHR1cGxlcyBvZiBjb25zdGFudHMgKGluY2x1ZGVzIGEgY2FzZSBmb3IgbGlzdHMgYW5kIHNldHMKQEAgLTQ2NSwxOSArNTEyLDIzIEBACiAgICAgICAgICAgICBjYXNlIEJVSUxEX0xJU1Q6CiAgICAgICAgICAgICBjYXNlIEJVSUxEX1NFVDoKICAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGggPSBpIC0gMyAqIGo7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAgJiYKLSAgICAgICAgICAgICAgICAgICAgaiA8PSBsYXN0bGMgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgIGlmIChqID09IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTihqKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IGopKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmIGogPiAwICYmIGogPD0gQ09OU1RfU1RBQ0tfTEVOKCkgJiYKICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCAzKihqKzEpKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMykpIHx8CiAgICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9MSVNUIHx8IG9wY29kZSA9PSBCVUlMRF9TRVQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdPT1DT01QQVJFX09QICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgMyooaisyKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKICAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAogICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltoXSwgaiwgY29uc3RzKSkgeworICAgICAgICAgICAgICAgICAgICB0dXBsZV9vZl9jb25zdGFudHMoJmNvZGVzdHJbaV0sIGosIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oaikpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fApAQCAtNDkwLDEwICs1NDEsMTIgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMikgewogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RXTzsKICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDUpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBST1RfVEhSRUU7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSsxXSA9IFJPVF9UV087CiAgICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMiwgTk9QLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUxMiwxMiArNTY1LDE4IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICBpZiAobGFzdGxjID49IDIgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLTYsIDcpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS02XSwgY29uc3RzKSkgeworICAgICAgICAgICAgICAgIC8qIE5PVEU6IExPQURfQ09OU1QgaXMgc2F2ZWQgYXQgYGktMmAgc2luY2UgaXQgaGFzIGFuIGFyZworICAgICAgICAgICAgICAgICAgIHdoaWxlIEJJTk9QIGhhc24ndCAqLworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDIpKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKSkgewogICAgICAgICAgICAgICAgICAgICBpIC09IDI7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUyNiwxMiArNTg1LDE1IEBACiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGlmIChsYXN0bGMgPj0gMSAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGktMywgNCkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktM10sIGNvbnN0cykpICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02ODgsNiArNzUwLDcgQEAKICAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CiAKICAgICBjb2RlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWNvZGVzdHIsIGgpOworICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwogICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7CiAgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CkBAIC02OTcsNiArNzYwLDcgQEAKICAgICBjb2RlID0gTlVMTDsKIAogIGV4aXRVbmNoYW5nZWQ6CisgICAgQ09OU1RfU1RBQ0tfREVMRVRFKCk7CiAgICAgaWYgKGJsb2NrcyAhPSBOVUxMKQogICAgICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CiAgICAgaWYgKGFkZHJtYXAgIT0gTlVMTCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWFyZW5hLmMgYi9QeXRob24vcHlhcmVuYS5jCmluZGV4IDVhMjU1YWUuLjAyYTMxZDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWFyZW5hLmMKKysrIGIvUHl0aG9uL3B5YXJlbmEuYwpAQCAtMTIsOCArMTIsNiBAQAogCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSA4MTkyCiAjZGVmaW5lIEFMSUdOTUVOVCAgICAgICAgICAgICAgIDgKLSNkZWZpbmUgQUxJR05NRU5UX01BU0sgICAgICAgICAgKEFMSUdOTUVOVCAtIDEpCi0jZGVmaW5lIFJPVU5EVVAoeCkgICAgICAgICAgICAgICgoKHgpICsgQUxJR05NRU5UX01BU0spICYgfkFMSUdOTUVOVF9NQVNLKQogCiB0eXBlZGVmIHN0cnVjdCBfYmxvY2sgewogICAgIC8qIFRvdGFsIG51bWJlciBvZiBieXRlcyBvd25lZCBieSB0aGlzIGJsb2NrIGF2YWlsYWJsZSB0byBwYXNzIG91dC4KQEAgLTg1LDggKzgzLDggQEAKICAgICBiLT5hYl9zaXplID0gc2l6ZTsKICAgICBiLT5hYl9tZW0gPSAodm9pZCAqKShiICsgMSk7CiAgICAgYi0+YWJfbmV4dCA9IE5VTEw7Ci0gICAgYi0+YWJfb2Zmc2V0ID0gUk9VTkRVUCgoUHlfdWludHB0cl90KShiLT5hYl9tZW0pKSAtCi0gICAgICAoUHlfdWludHB0cl90KShiLT5hYl9tZW0pOworICAgIGItPmFiX29mZnNldCA9IChjaGFyICopX1B5X0FMSUdOX1VQKGItPmFiX21lbSwgQUxJR05NRU5UKSAtCisgICAgICAgICAgICAoY2hhciAqKShiLT5hYl9tZW0pOwogICAgIHJldHVybiBiOwogfQogCkBAIC0xMDQsNyArMTAyLDcgQEAKIHsKICAgICB2b2lkICpwOwogICAgIGFzc2VydChiKTsKLSAgICBzaXplID0gUk9VTkRVUChzaXplKTsKKyAgICBzaXplID0gX1B5X1NJWkVfUk9VTkRfVVAoc2l6ZSwgQUxJR05NRU5UKTsKICAgICBpZiAoYi0+YWJfb2Zmc2V0ICsgc2l6ZSA+IGItPmFiX3NpemUpIHsKICAgICAgICAgLyogSWYgd2UgbmVlZCB0byBhbGxvY2F0ZSBtb3JlIG1lbW9yeSB0aGFuIHdpbGwgZml0IGluCiAgICAgICAgICAgIHRoZSBkZWZhdWx0IGJsb2NrLCBhbGxvY2F0ZSBhIG9uZS1vZmYgYmxvY2sgdGhhdCBpcwpAQCAtMTU4LDcgKzE1Niw2IEBACiB2b2lkCiBQeUFyZW5hX0ZyZWUoUHlBcmVuYSAqYXJlbmEpCiB7Ci0gICAgaW50IHI7CiAgICAgYXNzZXJ0KGFyZW5hKTsKICNpZiBkZWZpbmVkKFB5X0RFQlVHKQogICAgIC8qCkBAIC0xNzUsMTIgKzE3Miw2IEBACiAgICAgYXNzZXJ0KGFyZW5hLT5hX29iamVjdHMtPm9iX3JlZmNudCA9PSAxKTsKICAgICAqLwogCi0gICAgLyogQ2xlYXIgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBsaXN0LiAgVGhpcyBpcyBuZWNlc3NhcnkKLSAgICAgICB0byBndWFyYW50ZWUgdGhhdCB0aGV5IHdpbGwgYmUgREVDUkVGZWQuICovCi0gICAgciA9IFB5TGlzdF9TZXRTbGljZShhcmVuYS0+YV9vYmplY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgUHlMaXN0X0dFVF9TSVpFKGFyZW5hLT5hX29iamVjdHMpLCBOVUxMKTsKLSAgICBhc3NlcnQociA9PSAwKTsKLSAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGFyZW5hLT5hX29iamVjdHMpID09IDApOwogICAgIFB5X0RFQ1JFRihhcmVuYS0+YV9vYmplY3RzKTsKICAgICBmcmVlKGFyZW5hKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDQyYmMzZWMuLmNmZDYxZDAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNjksNyArNjksNiBAQAogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSB0aHJlYWRzIGZvciBpbnRlcnByZXRlciIpOwogI2VuZGlmCiAgICAgICAgIGludGVycC0+bW9kdWxlcyA9IE5VTEw7Ci0gICAgICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPm1vZHVsZXNfYnlfaW5kZXggPSBOVUxMOwogICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zID0gTlVMTDsKQEAgLTc5LDYgKzc4LDcgQEAKICAgICAgICAgaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSA9IE5VTEw7CiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKKyAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOwogI2lmZGVmIEhBVkVfRExPUEVOCiAjaWZkZWYgUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwpAQCAtMTEzLDkgKzExMyw5IEBACiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfYnlfaW5kZXgpOwotICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwogICAgIFB5X0NMRUFSKGludGVycC0+c3lzZGljdCk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5idWlsdGlucyk7CisgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOwogfQogCiAKQEAgLTI0Miw5ICsyNDIsOSBAQAogfQogCiBQeU9iamVjdCoKLVB5U3RhdGVfRmluZE1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqIG0pCitQeVN0YXRlX0ZpbmRNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBtb2R1bGUpCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleCA9IG0tPm1fYmFzZS5tX2luZGV4OworICAgIFB5X3NzaXplX3QgaW5kZXggPSBtb2R1bGUtPm1fYmFzZS5tX2luZGV4OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTI3Niw2ICsyNzYsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbmRleCwgbW9kdWxlKTsKIH0KIAoraW50CitQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCogbW9kdWxlLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgaWYgKCFkZWYpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9BZGRNb2R1bGU6IE1vZHVsZSBEZWZpbml0aW9uIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7CisgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSB7CisgICAgICAgIGlmKFB5TGlzdF9HRVRfU0laRShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkgPj0gaW5kZXgpIHsKKyAgICAgICAgICAgIGlmKG1vZHVsZSA9PSBQeUxpc3RfR0VUX0lURU0oc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgsIGluZGV4KSkgeworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfQWRkTW9kdWxlOiBNb2R1bGUgYWxyZWFkeSBhZGRlZCEiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIF9QeVN0YXRlX0FkZE1vZHVsZShtb2R1bGUsIGRlZik7Cit9CisKK2ludAorUHlTdGF0ZV9SZW1vdmVNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IGludmFsaWQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4ID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IEludGVycHJldGVycyBtb2R1bGUtbGlzdCBub3QgYWNlc3NpYmxlLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChpbmRleCA+IFB5TGlzdF9HRVRfU0laRShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IE1vZHVsZSBpbmRleCBvdXQgb2YgYm91bmRzLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBQeUxpc3RfU2V0SXRlbShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCwgaW5kZXgsIFB5X05vbmUpOworfQorCiB2b2lkCiBQeVRocmVhZFN0YXRlX0NsZWFyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0cnRvZC5jIGIvUHl0aG9uL3B5c3RydG9kLmMKaW5kZXggNzVlMzAzMi4uNGFiOGYwOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RydG9kLmMKKysrIGIvUHl0aG9uL3B5c3RydG9kLmMKQEAgLTIyLDYgKzIyLDQzIEBACiAgICB0aGUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcuICBPbiBmYWlsdXJlLCByZXR1cm4gLTEuMCBhbmQKICAgIHNldCAqZW5kcHRyIHRvIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLiAqLwogCisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKworZG91YmxlCitfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKQoreworICAgIGRvdWJsZSByZXR2YWw7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBpbnQgbmVnYXRlID0gMDsKKworICAgIHMgPSBwOworICAgIGlmICgqcyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRlID0gMTsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBlbHNlIGlmICgqcyA9PSAnKycpIHsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAiaW5mIikpIHsKKyAgICAgICAgcyArPSAzOworICAgICAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAiaW5pdHkiKSkKKyAgICAgICAgICAgIHMgKz0gNTsKKyAgICAgICAgcmV0dmFsID0gX1B5X2RnX2luZmluaXR5KG5lZ2F0ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgIm5hbiIpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgcmV0dmFsID0gX1B5X2RnX3N0ZG5hbihuZWdhdGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcyA9IHA7CisgICAgICAgIHJldHZhbCA9IC0xLjA7CisgICAgfQorICAgICplbmRwdHIgPSAoY2hhciAqKXM7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworI2Vsc2UKKwogZG91YmxlCiBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKQogewpAQCAtNTcsNiArOTQsOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKKyNlbmRpZgorCiAvKioKICAqIF9QeU9TX2FzY2lpX3N0cnRvZDoKICAqIEBucHRyOiAgICB0aGUgc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBudW1lcmljIHZhbHVlLgpAQCAtOTU0LDcgKzk5Myw3IEBACiAgICAgICAgICAgICAvKiBzaG91bGRuJ3QgZ2V0IGhlcmU6IEdheSdzIGNvZGUgc2hvdWxkIGFsd2F5cyByZXR1cm4KICAgICAgICAgICAgICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIGEgZGlnaXQsIGFuICdJJywgIG9yICdOJyAqLwogICAgICAgICAgICAgc3RybmNweShwLCAiRVJSIiwgMyk7Ci0gICAgICAgICAgICBwICs9IDM7CisgICAgICAgICAgICAvKiBwICs9IDM7ICovCiAgICAgICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIH0KICAgICAgICAgZ290byBleGl0OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDM2MzlmYTcuLmRkMzIwMTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTUyLDcgKzUyLDcgQEAKIGV4dGVybiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyOyAvKiBGcm9tIGdyYW1pbml0LmMgKi8KIAogLyogRm9yd2FyZCAqLwotc3RhdGljIHZvaWQgaW5pdG1haW4odm9pZCk7CitzdGF0aWMgdm9pZCBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7CiBzdGF0aWMgaW50IGluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKIHN0YXRpYyB2b2lkIGluaXRzaXRlKHZvaWQpOwogc3RhdGljIGludCBpbml0c3RkaW8odm9pZCk7CkBAIC02MiwxNCArNjIsMTcgQEAKIHN0YXRpYyBQeU9iamVjdCAqcnVuX3B5Y19maWxlKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICopOwogc3RhdGljIHZvaWQgZXJyX2lucHV0KHBlcnJkZXRhaWwgKik7CitzdGF0aWMgdm9pZCBlcnJfZnJlZShwZXJyZGV0YWlsICopOwogc3RhdGljIHZvaWQgaW5pdHNpZ3Modm9pZCk7CiBzdGF0aWMgdm9pZCBjYWxsX3B5X2V4aXRmdW5jcyh2b2lkKTsKIHN0YXRpYyB2b2lkIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKTsKIHN0YXRpYyB2b2lkIGNhbGxfbGxfZXhpdGZ1bmNzKHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlVbmljb2RlX0luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBfUHlVbmljb2RlX0Zpbmkodm9pZCk7CiBleHRlcm4gaW50IF9QeUxvbmdfSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFB5TG9uZ19GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUZhdWx0aGFuZGxlcl9GaW5pKHZvaWQpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKIGV4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICosIFB5VGhyZWFkU3RhdGUgKik7CkBAIC0xMzksMTIgKzE0MiwxMyBAQAogewogICAgIGNoYXIgKm5hbWVfdXRmOCwgKm5hbWVfc3RyOwogICAgIFB5T2JqZWN0ICpjb2RlYywgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogICAgIGlmICghY29kZWMpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb2RlYywgIm5hbWUiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb2RlYywgJlB5SWRfbmFtZSk7CiAgICAgUHlfQ0xFQVIoY29kZWMpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE2NiwyMSArMTcwLDc5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogc3RhdGljIGNoYXIqCi1nZXRfY29kZXNldCh2b2lkKQorZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBjaGFyIGNvZGVwYWdlWzEwMF07CisgICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCiAgICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwogICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKLX0KKyNlbHNlCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKICNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCit7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKKyAgICBQeU9iamVjdCAqaW1wbW9kOworICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCisgICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7CisgICAgfQorICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOworICAgIH0KKyAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOworCisgICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KKyAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7CisgICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworICAgIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOworICAgIH0KKworICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoaW1wbW9kKTsKKworICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Cit9CisKIAogdm9pZAotUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCitfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50IGluc3RhbGxfc2lncywgaW50IGluc3RhbGxfaW1wb3J0bGliKQogewogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKQEAgLTI1MiwxMiArMzE0LDEwIEBACiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwogICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzIGRpY3Rpb25hcnkiKTsKLSAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gUHlEaWN0X05ldygpOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlc19yZWxvYWRpbmcgZGljdGlvbmFyeSIpOwogCiAgICAgLyogSW5pdCBVbmljb2RlIGltcGxlbWVudGF0aW9uOyByZWxpZXMgb24gdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgX1B5VW5pY29kZV9Jbml0KCk7CisgICAgaWYgKF9QeVVuaWNvZGVfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB1bmljb2RlIik7CiAKICAgICBiaW1vZCA9IF9QeUJ1aWx0aW5fSW5pdCgpOwogICAgIGlmIChiaW1vZCA9PSBOVUxMKQpAQCAtMjY5LDcgKzMyOSw3IEBACiAgICAgUHlfSU5DUkVGKGludGVycC0+YnVpbHRpbnMpOwogCiAgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KLSAgICBfUHlFeGNfSW5pdCgpOworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKIAogICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7CiAgICAgaWYgKHN5c21vZCA9PSBOVUxMKQpAQCAtMjk5LDYgKzM1OSwxNSBAQAogICAgIC8qIEluaXRpYWxpemUgX3dhcm5pbmdzLiAqLwogICAgIF9QeVdhcm5pbmdzX0luaXQoKTsKIAorICAgIGlmICghaW5zdGFsbF9pbXBvcnRsaWIpCisgICAgICAgIHJldHVybjsKKworICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKworICAgIC8qIGluaXRpYWxpemUgdGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBpZiAoX1B5RmF1bHRoYW5kbGVyX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBmYXVsdGhhbmRsZXIiKTsKKwogICAgIF9QeVRpbWVfSW5pdCgpOwogCiAgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQpAQCAtMzA3LDcgKzM3Niw3IEBACiAgICAgaWYgKGluc3RhbGxfc2lncykKICAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLwogCi0gICAgaW5pdG1haW4oKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCisgICAgaW5pdG1haW4oaW50ZXJwKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCiAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CkBAIC0zMjcsNiArMzk2LDEyIEBACiB9CiAKIHZvaWQKK1B5X0luaXRpYWxpemVFeChpbnQgaW5zdGFsbF9zaWdzKQoreworICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnN0YWxsX3NpZ3MsIDEpOworfQorCit2b2lkCiBQeV9Jbml0aWFsaXplKHZvaWQpCiB7CiAgICAgUHlfSW5pdGlhbGl6ZUV4KDEpOwpAQCAtMzYxLDkgKzQzNiwxMCBAQAogICAgIFB5T2JqZWN0ICpmb3V0ID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKICAgICBQeU9iamVjdCAqZmVyciA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihmbHVzaCk7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOwogICAgICAgICBlbHNlCkBAIC0zNzEsNyArNDQ3LDcgQEAKICAgICB9CiAKICAgICBpZiAoZmVyciAhPSBOVUxMICYmIGZlcnIgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZmVycikpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmZXJyLCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQpAQCAtNDY0LDcgKzU0MCw3IEBACiAgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CiAKICAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5Ci0gICAgICogbmV3LXN0eWxlIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KKyAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCiAgICAgICogWFhYIFRoaXMgaXMgZGlzYWJsZWQgYmVjYXVzZSBpdCBjYXVzZWQgdG9vIG1hbnkgcHJvYmxlbXMuICBJZgogICAgICAqIFhYWCBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayB0cmlnZ2VycyBoZXJlLCBQeXRob24gY29kZSBoYXMKICAgICAgKiBYWFggYSBoYXJkIHRpbWUgcnVubmluZywgYmVjYXVzZSBldmVuIHRoZSBzeXMgbW9kdWxlIGhhcyBiZWVuCkBAIC00ODUsNiArNTYxLDkgQEAKICAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KICAgICBfUHlJbXBvcnRfRmluaSgpOwogCisgICAgLyogdW5sb2FkIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOworCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKQEAgLTUzNCw2ICs2MTMsNyBAQAogICAgIFB5TG9uZ19GaW5pKCk7CiAgICAgUHlGbG9hdF9GaW5pKCk7CiAgICAgUHlEaWN0X0ZpbmkoKTsKKyAgICBQeVNsaWNlX0ZpbmkoKTsKIAogICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwogICAgIF9QeVVuaWNvZGVfRmluaSgpOwpAQCAtNTYyLDcgKzY0Miw3IEBACiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoKTsKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKQEAgLTYwNiw3ICs2ODYsNiBAQAogICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLwogCiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBQeURpY3RfTmV3KCk7CiAKICAgICBiaW1vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigiYnVpbHRpbnMiKTsKICAgICBpZiAoYmltb2QgIT0gTlVMTCkgewpAQCAtNjE3LDExICs2OTYsMTIgQEAKICAgICB9CiAKICAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KCk7CisgICAgX1B5RXhjX0luaXQoYmltb2QpOwogCiAgICAgc3lzbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJzeXMiKTsKICAgICBpZiAoYmltb2QgIT0gTlVMTCAmJiBzeXNtb2QgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcHN0ZGVycjsKKwogICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBQeU1vZHVsZV9HZXREaWN0KHN5c21vZCk7CiAgICAgICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwpAQCAtNjQwLDEzICs3MjAsMTUgQEAKIAogICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CiAKKyAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCiAgICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKLSAgICAgICAgaW5pdG1haW4oKTsKKyAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKICAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQogICAgICAgICAgICAgaW5pdHNpdGUoKTsKICAgICB9CkBAIC03NDMsNyArODI1LDcgQEAKIC8qIENyZWF0ZSBfX21haW5fXyBtb2R1bGUgKi8KIAogc3RhdGljIHZvaWQKLWluaXRtYWluKHZvaWQpCitpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKICAgICBQeU9iamVjdCAqbSwgKmQ7CiAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKQEAgLTc1MiwzNSArODM0LDQ4IEBACiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKGJpbW9kID09IE5VTEwgfHwKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgIT0gMCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbid0IGFkZCBfX2J1aWx0aW5zX18gdG8gX19tYWluX18iKTsKKyAgICAgICAgaWYgKGJpbW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBidWlsdGlucyBtb2R1bGUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIsIGJpbW9kKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYnVpbHRpbnNfXyIpOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihiaW1vZCk7CiAgICAgfQorICAgIC8qIE1haW4gaXMgYSBsaXR0bGUgc3BlY2lhbCAtIGltcC5pc19idWlsdGluKCJfX21haW5fXyIpIHdpbGwgcmV0dXJuCisgICAgICogRmFsc2UsIGJ1dCBCdWlsdGluSW1wb3J0ZXIgaXMgc3RpbGwgdGhlIG1vc3QgYXBwcm9wcmlhdGUgaW5pdGlhbAorICAgICAqIHNldHRpbmcgZm9yIGl0cyBfX2xvYWRlcl9fIGF0dHJpYnV0ZS4gQSBtb3JlIHN1aXRhYmxlIHZhbHVlIHdpbGwKKyAgICAgKiBiZSBzZXQgaWYgX19tYWluX18gZ2V0cyBmdXJ0aGVyIGluaXRpYWxpemVkIGxhdGVyIGluIHRoZSBzdGFydHVwCisgICAgICogcHJvY2Vzcy4KKyAgICAgKi8KKyAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKSA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpsb2FkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJldHJpZXZlIEJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICB9CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIsIGxvYWRlcikgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2xvYWRlcl9fIik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7CisgICAgfQogfQogCiBzdGF0aWMgaW50CiBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKICAgICBQeU9iamVjdCAqY29kZWM7Ci0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKLSAgICBjaGFyICpjb2Rlc2V0ID0gTlVMTDsKIAotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgLyogT24gVW5peCwgc2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBhY2NvcmRpbmcgdG8gdGhlCi0gICAgICAgICAgIHVzZXIncyBwcmVmZXJlbmNlLCBpZiB0aGUgQ09ERVNFVCBuYW1lcyBhIHdlbGwta25vd24KLSAgICAgICAgICAgUHl0aG9uIGNvZGVjLCBhbmQgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBpc24ndAotICAgICAgICAgICBpbml0aWFsaXplZCBieSBvdGhlciBtZWFucy4gKi8KLSAgICAgICAgY29kZXNldCA9IGdldF9jb2Rlc2V0KCk7Ci0gICAgICAgIGlmIChjb2Rlc2V0ID09IE5VTEwpCisgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CisgICAgICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBVbmFibGUgdG8gZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmciKTsKIAotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gY29kZXNldDsKICAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZgogCiAgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CkBAIC04MjIsNiArOTE3LDExIEBACiAgICAgY29uc3QgY2hhciogbmV3bGluZTsKICAgICBQeU9iamVjdCAqbGluZV9idWZmZXJpbmc7CiAgICAgaW50IGJ1ZmZlcmluZywgaXNhdHR5OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CisgICAgX1B5X0lERU5USUZJRVIoVGV4dElPV3JhcHBlcik7CisgICAgX1B5X0lERU5USUZJRVIobmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAKICAgICAvKiBzdGRpbiBpcyBhbHdheXMgb3BlbmVkIGluIGJ1ZmZlcmVkIG1vZGUsIGZpcnN0IGJlY2F1c2UgaXQgc2hvdWxkbid0CiAgICAgICAgbWFrZSBhIGRpZmZlcmVuY2UgaW4gY29tbW9uIHVzZSBjYXNlcywgc2Vjb25kIGJlY2F1c2UgVGV4dElPV3JhcHBlcgpAQCAtODM2LDE0ICs5MzYsMTUgQEAKICAgICAgICAgbW9kZSA9ICJ3YiI7CiAgICAgZWxzZQogICAgICAgICBtb2RlID0gInJiIjsKLSAgICBidWYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lPT09pIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKGJ1ZmZlcmluZykgewotICAgICAgICByYXcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJ1ZiwgInJhdyIpOworICAgICAgICBfUHlfSURFTlRJRklFUihyYXcpOworICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZiwgJlB5SWRfcmF3KTsKICAgICAgICAgaWYgKHJhdyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC04NTMsOSArOTU0LDkgQEAKICAgICB9CiAKICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKHRleHQgPT0gTlVMTCB8fCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJhdywgIm5hbWUiLCB0ZXh0KSA8IDApCisgICAgaWYgKHRleHQgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHJhdywgJlB5SWRfbmFtZSwgdGV4dCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiaXNhdHR5IiwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksICIiKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaXNhdHR5ID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC04ODEsOSArOTgyLDkgQEAKICAgICBuZXdsaW5lID0gIlxuIjsKICNlbmRpZgogCi0gICAgc3RyZWFtID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIlRleHRJT1dyYXBwZXIiLCAiT3Nzc08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBlbmNvZGluZywgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpOworICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7CiAgICAgUHlfQ0xFQVIoYnVmKTsKICAgICBpZiAoc3RyZWFtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04OTMsNyArOTk0LDcgQEAKICAgICBlbHNlCiAgICAgICAgIG1vZGUgPSAiciI7CiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwotICAgIGlmICghdGV4dCB8fCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHN0cmVhbSwgIm1vZGUiLCB0ZXh0KSA8IDApCisgICAgaWYgKCF0ZXh0IHx8IF9QeU9iamVjdF9TZXRBdHRySWQoc3RyZWFtLCAmUHlJZF9tb2RlLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlfQ0xFQVIodGV4dCk7CiAgICAgcmV0dXJuIHN0cmVhbTsKQEAgLTExMzMsMTMgKzEyMzQsMTQgQEAKICAgICBQeUFyZW5hICphcmVuYTsKICAgICBjaGFyICpwczEgPSAiIiwgKnBzMiA9ICIiLCAqZW5jID0gTlVMTDsKICAgICBpbnQgZXJyY29kZSA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOwogCiAgICAgaWYgKGZwID09IHN0ZGluKSB7CiAgICAgICAgIC8qIEZldGNoIGVuY29kaW5nIGZyb20gc3lzLnN0ZGluICovCiAgICAgICAgIHYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGluIik7CiAgICAgICAgIGlmICh2ID09IE5VTEwgfHwgdiA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBvZW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiZW5jb2RpbmciKTsKKyAgICAgICAgb2VuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfZW5jb2RpbmcpOwogICAgICAgICBpZiAoIW9lbmMpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVuYyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2VuYyk7CkBAIC0xMjUyLDYgKzEzNTQsMzcgQEAKIH0KIAogaW50CitzdGF0aWMgc2V0X21haW5fbG9hZGVyKFB5T2JqZWN0ICpkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbG9hZGVyX25hbWUpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmosICpsb2FkZXJfdHlwZSwgKmxvYWRlcjsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOworICAgIGlmIChmaWxlbmFtZV9vYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisgICAgbG9hZGVyX3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCBsb2FkZXJfbmFtZSk7CisgICAgaWYgKGxvYWRlcl90eXBlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lX29iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGxvYWRlcl90eXBlLCAic04iLCAiX19tYWluX18iLCBmaWxlbmFtZV9vYmopOworICAgIFB5X0RFQ1JFRihsb2FkZXJfdHlwZSk7CisgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAogUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY2xvc2VpdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MpCiB7CkBAIC0xMjg0LDE4ICsxNDE3LDM0IEBACiAgICAgbGVuID0gc3RybGVuKGZpbGVuYW1lKTsKICAgICBleHQgPSBmaWxlbmFtZSArIGxlbiAtIChsZW4gPiA0ID8gNCA6IDApOwogICAgIGlmIChtYXliZV9weWNfZmlsZShmcCwgZmlsZW5hbWUsIGV4dCwgY2xvc2VpdCkpIHsKKyAgICAgICAgRklMRSAqcHljX2ZwOwogICAgICAgICAvKiBUcnkgdG8gcnVuIGEgcHljIGZpbGUuIEZpcnN0LCByZS1vcGVuIGluIGJpbmFyeSAqLwogICAgICAgICBpZiAoY2xvc2VpdCkKICAgICAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIGlmICgoZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IE5VTEwpIHsKKyAgICAgICAgaWYgKChweWNfZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IE5VTEwpIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBDYW4ndCByZW9wZW4gLnB5YyBmaWxlXG4iKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogICAgICAgICAvKiBUdXJuIG9uIG9wdGltaXphdGlvbiBpZiBhIC5weW8gZmlsZSBpcyBnaXZlbiAqLwogICAgICAgICBpZiAoc3RyY21wKGV4dCwgIi5weW8iKSA9PSAwKQogICAgICAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gMTsKLSAgICAgICAgdiA9IHJ1bl9weWNfZmlsZShmcCwgZmlsZW5hbWUsIGQsIGQsIGZsYWdzKTsKKworICAgICAgICBpZiAoc2V0X21haW5fbG9hZGVyKGQsIGZpbGVuYW1lLCAiU291cmNlbGVzc0ZpbGVMb2FkZXIiKSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBmYWlsZWQgdG8gc2V0IF9fbWFpbl9fLl9fbG9hZGVyX19cbiIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBmY2xvc2UocHljX2ZwKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICB2ID0gcnVuX3B5Y19maWxlKHB5Y19mcCwgZmlsZW5hbWUsIGQsIGQsIGZsYWdzKTsKKyAgICAgICAgZmNsb3NlKHB5Y19mcCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2hlbiBydW5uaW5nIGZyb20gc3RkaW4sIGxlYXZlIF9fbWFpbl9fLl9fbG9hZGVyX18gYWxvbmUgKi8KKyAgICAgICAgaWYgKHN0cmNtcChmaWxlbmFtZSwgIjxzdGRpbj4iKSAhPSAwICYmCisgICAgICAgICAgICBzZXRfbWFpbl9sb2FkZXIoZCwgZmlsZW5hbWUsICJTb3VyY2VGaWxlTG9hZGVyIikgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAgICAgICAgIHYgPSBQeVJ1bl9GaWxlRXhGbGFncyhmcCwgZmlsZW5hbWUsIFB5X2ZpbGVfaW5wdXQsIGQsIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWl0LCBmbGFncyk7CiAgICAgfQpAQCAtMTMzNiwyMCArMTQ4NSwyMCBAQAogewogICAgIGxvbmcgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKLQotICAgIC8qIG9sZCBzdHlsZSBlcnJvcnMgKi8KLSAgICBpZiAoUHlUdXBsZV9DaGVjayhlcnIpKQotICAgICAgICByZXR1cm4gUHlBcmdfUGFyc2VUdXBsZShlcnIsICJPKHppaXopIiwgbWVzc2FnZSwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgb2Zmc2V0LCB0ZXh0KTsKKyAgICBfUHlfSURFTlRJRklFUihtc2cpOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihsaW5lbm8pOworICAgIF9QeV9JREVOVElGSUVSKG9mZnNldCk7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CiAKICAgICAqbWVzc2FnZSA9IE5VTEw7CiAKICAgICAvKiBuZXcgc3R5bGUgZXJyb3JzLiAgYGVycicgaXMgYW4gaW5zdGFuY2UgKi8KLSAgICAqbWVzc2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibXNnIik7CisgICAgKm1lc3NhZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfbXNnKTsKICAgICBpZiAoISptZXNzYWdlKQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJmaWxlbmFtZSIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfZmlsZW5hbWUpOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGlmICh2ID09IFB5X05vbmUpIHsKQEAgLTEzNjMsNyArMTUxMiw3IEBACiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibGluZW5vIik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOwpAQCAtMTM3Miw3ICsxNTIxLDcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJvZmZzZXQiKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewpAQCAtMTM4Niw3ICsxNTM1LDcgQEAKICAgICAgICAgKm9mZnNldCA9IChpbnQpaG9sZDsKICAgICB9CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJ0ZXh0Iik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF90ZXh0KTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CkBAIC0xNDYwLDcgKzE2MDksOCBAQAogICAgICAgICBnb3RvIGRvbmU7CiAgICAgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIC8qIFRoZSBlcnJvciBjb2RlIHNob3VsZCBiZSBpbiB0aGUgYGNvZGUnIGF0dHJpYnV0ZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHZhbHVlLCAiY29kZSIpOworICAgICAgICBfUHlfSURFTlRJRklFUihjb2RlKTsKKyAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHZhbHVlLCAmUHlJZF9jb2RlKTsKICAgICAgICAgaWYgKGNvZGUpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICB2YWx1ZSA9IGNvZGU7CkBAIC0xNTY3LDYgKzE3MTcsNyBAQAogewogICAgIGludCBlcnIgPSAwOwogICAgIFB5T2JqZWN0ICp0eXBlLCAqdGI7CisgICAgX1B5X0lERU5USUZJRVIocHJpbnRfZmlsZV9hbmRfbGluZSk7CiAKICAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiVHlwZUVycm9yOiBwcmludF9leGNlcHRpb24oKTogRXhjZXB0aW9uIGV4cGVjdGVkIGZvciB2YWx1ZSwgIiwgZik7CkBAIC0xNTgyLDcgKzE3MzMsNyBAQAogICAgIGlmICh0YiAmJiB0YiAhPSBQeV9Ob25lKQogICAgICAgICBlcnIgPSBQeVRyYWNlQmFja19QcmludCh0YiwgZik7CiAgICAgaWYgKGVyciA9PSAwICYmCi0gICAgICAgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodmFsdWUsICJwcmludF9maWxlX2FuZF9saW5lIikpCisgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQodmFsdWUsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUpKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAqdGV4dDsKQEAgLTE2MTcsNiArMTc2OCw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0KiBtb2R1bGVOYW1lOwogICAgICAgICBjaGFyKiBjbGFzc05hbWU7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgICAgICBhc3NlcnQoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSk7CiAgICAgICAgIGNsYXNzTmFtZSA9IFB5RXhjZXB0aW9uQ2xhc3NfTmFtZSh0eXBlKTsKICAgICAgICAgaWYgKGNsYXNzTmFtZSAhPSBOVUxMKSB7CkBAIC0xNjI1LDEwICsxNzc3LDEwIEBACiAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZG90KzE7CiAgICAgICAgIH0KIAotICAgICAgICBtb2R1bGVOYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0eXBlLCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2R1bGVOYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKG1vZHVsZU5hbWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKG1vZHVsZU5hbWUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobW9kdWxlTmFtZSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG1vZHVsZU5hbWUpOwogICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlU3RyaW5nKCI8dW5rbm93bj4iLCBmKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NTUsNyArMTgwNyw3IEBACiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBlcnIgPSAtMTsKICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhzKSB8fAotICAgICAgICAgICAgUHlVbmljb2RlX0dldFNpemUocykgIT0gMCkKKyAgICAgICAgICAgIFB5VW5pY29kZV9HZXRMZW5ndGgocykgIT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZVN0cmluZygiOiAiLCBmKTsKICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChzLCBmLCBQeV9QUklOVF9SQVcpOwpAQCAtMTcwMyw3ICsxODU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlX21lc3NhZ2UsIGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQgJiYKKyAgICAgICAgICAgICAgICAhKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKil2YWx1ZSktPnN1cHByZXNzX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICByZXMgPSBQeVNldF9Db250YWlucyhzZWVuLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTc5MiwxMyArMTk0NSwxNCBAQAogewogICAgIFB5T2JqZWN0ICpmLCAqcjsKICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOworICAgIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKIAogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uICovCiAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKICAgICBmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJmbHVzaCIsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTE4MDYsNyArMTk2MCw3IEBACiAgICAgfQogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgImZsdXNoIiwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTg0NSw5ICsxOTk5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBTa2lwIG10aW1lIGFuZCBzaXplICovCisgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKICAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgIHYgPSBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZShmcCk7Ci0gICAgZmNsb3NlKGZwKTsKICAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUNvZGVfQ2hlY2sodikpIHsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKQEAgLTE5MzcsMTIgKzIwOTIsMTMgQEAKICAgICAgICAgZmxhZ3MtPmNmX2ZsYWdzIHw9IGlmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgbW9kID0gUHlBU1RfRnJvbU5vZGUobiwgZmxhZ3MsIGZpbGVuYW1lLCBhcmVuYSk7CiAgICAgICAgIFB5Tm9kZV9GcmVlKG4pOwotICAgICAgICByZXR1cm4gbW9kOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbW9kID0gTlVMTDsKICAgICB9CisgICAgZXJyX2ZyZWUoJmVycik7CisgICAgcmV0dXJuIG1vZDsKIH0KIAogbW9kX3R5CkBAIC0xOTY3LDE0ICsyMTIzLDE1IEBACiAgICAgICAgIGZsYWdzLT5jZl9mbGFncyB8PSBpZmxhZ3MgJiBQeUNGX01BU0s7CiAgICAgICAgIG1vZCA9IFB5QVNUX0Zyb21Ob2RlKG4sIGZsYWdzLCBmaWxlbmFtZSwgYXJlbmEpOwogICAgICAgICBQeU5vZGVfRnJlZShuKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKICAgICAgICAgaWYgKGVycmNvZGUpCiAgICAgICAgICAgICAqZXJyY29kZSA9IGVyci5lcnJvcjsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQorICAgIGVycl9mcmVlKCZlcnIpOworICAgIHJldHVybiBtb2Q7CiB9CiAKIC8qIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIHBhcnNlZmlsZSAtLSByZXR1cm4gbm9kZSBvciBzZXQgZXhjZXB0aW9uICovCkBAIC0xOTg4LDYgKzIxNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgTlVMTCwgTlVMTCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKIAogICAgIHJldHVybiBuOwogfQpAQCAtMjAwMiw2ICsyMTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKICAgICByZXR1cm4gbjsKIH0KIApAQCAtMjAxNCw2ICsyMTczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX1B5UGFyc2VyX0dyYW1tYXIsIHN0YXJ0LCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogICAgIHJldHVybiBuOwogfQogCkBAIC0yMDI3LDExICsyMTg3LDIzIEBACiAgICBldmVuIHBhcnNlciBtb2R1bGVzLiAqLwogCiB2b2lkCitQeVBhcnNlcl9DbGVhckVycm9yKHBlcnJkZXRhaWwgKmVycikKK3sKKyAgICBlcnJfZnJlZShlcnIpOworfQorCit2b2lkCiBQeVBhcnNlcl9TZXRFcnJvcihwZXJyZGV0YWlsICplcnIpCiB7CiAgICAgZXJyX2lucHV0KGVycik7CiB9CiAKK3N0YXRpYyB2b2lkCitlcnJfZnJlZShwZXJyZGV0YWlsICplcnIpCit7CisgICAgUHlfQ0xFQVIoZXJyLT5maWxlbmFtZSk7Cit9CisKIC8qIFNldCB0aGUgZXJyb3IgYXBwcm9wcmlhdGUgdG8gdGhlIGdpdmVuIGlucHV0IGVycm9yIGNvZGUgKHNlZSBlcnJjb2RlLmgpICovCiAKIHN0YXRpYyB2b2lkCkBAIC0yMDM5LDcgKzIyMTEsNiBAQAogewogICAgIFB5T2JqZWN0ICp2LCAqdywgKmVycnR5cGUsICplcnJ0ZXh0OwogICAgIFB5T2JqZWN0ICptc2dfb2JqID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgY2hhciAqbXNnID0gTlVMTDsKIAogICAgIGVycnR5cGUgPSBQeUV4Y19TeW50YXhFcnJvcjsKQEAgLTIxMTEsNiArMjI4Miw5IEBACiAgICAgY2FzZSBFX0lERU5USUZJRVI6CiAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGNoYXJhY3RlciBpbiBpZGVudGlmaWVyIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFX0JBRFNJTkdMRToKKyAgICAgICAgbXNnID0gIm11bHRpcGxlIHN0YXRlbWVudHMgZm91bmQgd2hpbGUgY29tcGlsaW5nIGEgc2luZ2xlIHN0YXRlbWVudCI7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZXJyb3I9JWRcbiIsIGVyci0+ZXJyb3IpOwogICAgICAgICBtc2cgPSAidW5rbm93biBwYXJzaW5nIGVycm9yIjsKQEAgLTIxMjUsMTcgKzIyOTksOCBAQAogICAgICAgICBlcnJ0ZXh0ID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXJyLT50ZXh0LCBzdHJsZW4oZXJyLT50ZXh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIik7CiAgICAgfQotICAgIGlmIChlcnItPmZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChlcnItPmZpbGVuYW1lKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBmaWxlbmFtZSA9IFB5X05vbmU7Ci0gICAgfQotICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKE5paU4pIiwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVyci0+bGluZW5vLCBlcnItPm9mZnNldCwgZXJydGV4dCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gTlVMTDsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKE9paU4pIiwgZXJyLT5maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBlcnItPmxpbmVubywgZXJyLT5vZmZzZXQsIGVycnRleHQpOwogICAgIGlmICh2ICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG1zZ19vYmopCiAgICAgICAgICAgICB3ID0gUHlfQnVpbGRWYWx1ZSgiKE9PKSIsIG1zZ19vYmosIHYpOwpAQCAtMjE1OSwxMSArMjMyNCwyNCBAQAogdm9pZAogUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCiB7CisgICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCiAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICVzXG4iLCBtc2cpOwogICAgIGZmbHVzaChzdGRlcnIpOyAvKiBpdCBoZWxwcyBpbiBXaW5kb3dzIGRlYnVnIGJ1aWxkICovCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlFcnJfUHJpbnRFeCgwKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRzdGF0ZSA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICB9CisgICAgICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7CisgICAgfQorCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihtc2cpOwpAQCAtMjIxOCw2ICsyMzk2LDcgQEAKIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKQogewogI2lmZGVmIFdJVEhfVEhSRUFECisgICAgX1B5X0lERU5USUZJRVIoX3NodXRkb3duKTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgUHlPYmplY3QgKnRocmVhZGluZyA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHRzdGF0ZS0+aW50ZXJwLT5tb2R1bGVzLApAQCAtMjIyNyw3ICsyNDA2LDcgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRocmVhZGluZywgIl9zaHV0ZG93biIsICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCAiIik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA2ZmI3Njk1Li5iZWVhYjg3IDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC0xLDcgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKIAotI2lmZGVmIF9fQVBQTEVfXwotI2lmIGRlZmluZWQoSEFWRV9HRVRUSU1FT0ZEQVkpICYmIGRlZmluZWQoSEFWRV9GVElNRSkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQogICAvKgogICAgKiBfUHlUaW1lX2dldHRpbWVvZmRheSBmYWxscyBiYWNrIHRvIGZ0aW1lIHdoZW4gZ2V0dHRpbWVvZmRheSBmYWlscyBiZWNhdXNlIHRoZSBsYXR0ZXIKICAgICogbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3Jtcy4gVGhpcyBmYWxsYmFjayBpcyB1bndhbnRlZCBvbiBNYWNPU1ggYmVjYXVzZQpAQCAtMTAsMTggKzEyLDQxIEBACiAgICAqLwogIyB1bmRlZiBIQVZFX0ZUSU1FCiAjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9GVElNRSkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKKyNpbmNsdWRlIDxzeXMvdGltZWIuaD4KK2V4dGVybiBpbnQgZnRpbWUoc3RydWN0IHRpbWViICopOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0ZUSU1FCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+Ci0jaWYgIWRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoUFlPU19PUzIpCi1leHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0jZW5kaWYgLyogSEFWRV9GVElNRSAqLwotCi12b2lkCi1fUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQorc3RhdGljIHZvaWQKK3B5Z2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEZJTEVUSU1FIHN5c3RlbV90aW1lOworICAgIFVMQVJHRV9JTlRFR0VSIGxhcmdlOworICAgIFVMT05HTE9ORyBtaWNyb3NlY29uZHM7CisKKyAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmc3lzdGVtX3RpbWUpOworICAgIGxhcmdlLnUuTG93UGFydCA9IHN5c3RlbV90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IHN5c3RlbV90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIC8qIDExLDY0NCw0NzMsNjAwLDAwMCwwMDA6IG51bWJlciBvZiBtaWNyb3NlY29uZHMgYmV0d2VlbgorICAgICAgIHRoZSAxc3QgamFudWFyeSAxNjAxIGFuZCB0aGUgMXN0IGphbnVhcnkgMTk3MCAoMzY5IHllYXJzICsgODkgbGVhcAorICAgICAgIGRheXMpLiAqLworICAgIG1pY3Jvc2Vjb25kcyA9IGxhcmdlLlF1YWRQYXJ0IC8gMTAgLSAxMTY0NDQ3MzYwMDAwMDAwMDsKKyAgICB0cC0+dHZfc2VjID0gbWljcm9zZWNvbmRzIC8gMTAwMDAwMDsKKyAgICB0cC0+dHZfdXNlYyA9IG1pY3Jvc2Vjb25kcyAlIDEwMDAwMDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CisgICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkOworCisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAodm9pZCkgR2V0U3lzdGVtVGltZUFkanVzdG1lbnQoJnRpbWVBZGp1c3RtZW50LCAmdGltZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgIH0KKyNlbHNlCiAgICAgLyogVGhlcmUgYXJlIHRocmVlIHdheXMgdG8gZ2V0IHRoZSB0aW1lOgogICAgICAgKDEpIGdldHRpbWVvZmRheSgpIC0tIHJlc29sdXRpb24gaW4gbWljcm9zZWNvbmRzCiAgICAgICAoMikgZnRpbWUoKSAtLSByZXNvbHV0aW9uIGluIG1pbGxpc2Vjb25kcwpAQCAtMzAsMjcgKzU1LDE3MyBAQAogICAgICAgU2luY2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNDTyBPRFQgMy4wKSBnZXR0aW1lb2ZkYXkoKSBtYXkKICAgICAgIGZhaWwsIHNvIHdlIGZhbGwgYmFjayBvbiBmdGltZSgpIG9yIHRpbWUoKS4KICAgICAgIE5vdGU6IGNsb2NrIHJlc29sdXRpb24gZG9lcyBub3QgaW1wbHkgY2xvY2sgYWNjdXJhY3khICovCisKICNpZmRlZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIGludCBlcnI7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCi0gICAgaWYgKGdldHRpbWVvZmRheSh0cCkgPT0gMCkKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkodHApOworI2Vsc2UKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkodHAsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKTsKKyNlbmRpZgorICAgIGlmIChlcnIgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0dGltZW9mZGF5KCkiOworICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTY7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwotI2Vsc2UgLyogIUdFVFRJTUVPRkRBWV9OT19UWiAqLwotICAgIGlmIChnZXR0aW1lb2ZkYXkodHAsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKSA9PSAwKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYgLyogIUdFVFRJTUVPRkRBWV9OT19UWiAqLwotI2VuZGlmIC8qICFIQVZFX0dFVFRJTUVPRkRBWSAqLworICAgIH0KKyNlbmRpZiAgIC8qIEhBVkVfR0VUVElNRU9GREFZICovCisKICNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpCiAgICAgewogICAgICAgICBzdHJ1Y3QgdGltZWIgdDsKICAgICAgICAgZnRpbWUoJnQpOwogICAgICAgICB0cC0+dHZfc2VjID0gdC50aW1lOwogICAgICAgICB0cC0+dHZfdXNlYyA9IHQubWlsbGl0bSAqIDEwMDA7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJmdGltZSgpIjsKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS0zOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICB9CiAgICAgfQogI2Vsc2UgLyogIUhBVkVfRlRJTUUgKi8KICAgICB0cC0+dHZfc2VjID0gdGltZShOVUxMKTsKICAgICB0cC0+dHZfdXNlYyA9IDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAidGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMDsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQogI2VuZGlmIC8qICFIQVZFX0ZUSU1FICovCi0gICAgcmV0dXJuOworCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworfQorCit2b2lkCitfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQoreworICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBOVUxMKTsKK30KKwordm9pZAorX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbyhfUHlUaW1lX3RpbWV2YWwgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQKK2Vycm9yX3RpbWVfdF9vdmVyZmxvdyh2b2lkKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Cit9CisKK3RpbWVfdAorX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQoreworI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORworICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKKyNlbHNlCisgICAgbG9uZyB2YWw7CisgICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgdmFsID0gUHlMb25nX0FzTG9uZyhvYmopOworI2VuZGlmCisgICAgaWYgKHZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuICh0aW1lX3QpdmFsOworfQorCitQeU9iamVjdCAqCitfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCit7CisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNlbHNlCisgICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3IoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IpCit7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7CisgICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLworICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgeworICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OworICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgICAgIH0KKworICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OworICAgICAgICBlcnIgPSBpbnRwYXJ0IC0gKGRvdWJsZSkqc2VjOworICAgICAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMpCit7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOworCisgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7CisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpzZWMgPSBfUHlMb25nX0FzVGltZV90KG9iaik7CisgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnNlYykKK3sKKyAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTkpOworfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICp1c2VjKQoreworICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNik7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCA4MjUyNjBmLi41MzUxOGMyIDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0yNTgsMTcgKzI1OCw2IEBACiAgICAgX1B5X0hhc2hTZWNyZXRfSW5pdGlhbGl6ZWQgPSAxOwogCiAgICAgLyoKLSAgICAgIEJ5IGRlZmF1bHQsIGhhc2ggcmFuZG9taXphdGlvbiBpcyBkaXNhYmxlZCwgYW5kIG9ubHkKLSAgICAgIGVuYWJsZWQgaWYgUFlUSE9OSEFTSFNFRUQgaXMgc2V0IHRvIG5vbi1lbXB0eSBvciBpZgotICAgICAgIi1SIiBpcyBwcm92aWRlZCBhdCB0aGUgY29tbWFuZCBsaW5lOgotICAgICovCi0gICAgaWYgKCFQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcpIHsKLSAgICAgICAgLyogRGlzYWJsZSB0aGUgcmFuZG9taXplZCBoYXNoOiAqLwotICAgICAgICBtZW1zZXQoc2VjcmV0LCAwLCBzZWNyZXRfc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvKgogICAgICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQuICBHZW5lcmF0ZSBhIHBlci1wcm9jZXNzIHNlY3JldCwKICAgICAgIHVzaW5nIFBZVEhPTkhBU0hTRUVEIGlmIHByb3ZpZGVkLgogICAgICovCmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IDM1ZmM2ZTEuLjU1ODk4ZjkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC0xOSwxMCArMTksNiBAQAogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKLSNkZWZpbmUgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IgXAotICAgICIncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IiCi0KLQogc3RhdGljIFB5U1RFbnRyeU9iamVjdCAqCiBzdGVfbmV3KHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgX1B5X2Jsb2NrX3R5IGJsb2NrLAogICAgICAgICB2b2lkICprZXksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQpAQCAtMTg3LDYgKzE4Myw3IEBACiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIGFzZGxfc2VxICphcmdzKTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0cnVjdCBzeW10YWJsZSAqc3QsIGludCBwb3MpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpOworc3RhdGljIGludCBzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKTsKIAogCiBzdGF0aWMgaWRlbnRpZmllciB0b3AgPSBOVUxMLCBsYW1iZGEgPSBOVUxMLCBnZW5leHByID0gTlVMTCwKQEAgLTIyMywxNyArMjIwLDQwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIFdoZW4gY29tcGlsaW5nIHRoZSB1c2Ugb2YgQyBzdGFjayBpcyBwcm9iYWJseSBnb2luZyB0byBiZSBhIGxvdAorICAgbGlnaHRlciB0aGFuIHdoZW4gZXhlY3V0aW5nIFB5dGhvbiBjb2RlIGJ1dCBzdGlsbCBjYW4gb3ZlcmZsb3cKKyAgIGFuZCBjYXVzaW5nIGEgUHl0aG9uIGNyYXNoIGlmIG5vdCBjaGVja2VkIChlLmcuIGV2YWwoIigpIiozMDAwMDApKS4KKyAgIFVzaW5nIHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBsaW1pdCBmb3IgdGhlIGNvbXBpbGVyIHNlZW1zIHRvbworICAgcmVzdHJpY3RpdmUgKGl0IGNhdXNlZCBhdCBsZWFzdCBvbmUgdGVzdCB0byBmYWlsKSBzbyBhIGZhY3RvciBpcworICAgdXNlZCB0byBhbGxvdyBkZWVwZXIgcmVjdXJzaW9uIHdoZW4gY29tcGlsaW5nIGFuIGV4cHJlc3Npb24uCisKKyAgIFVzaW5nIGEgc2NhbGluZyBmYWN0b3IgbWVhbnMgdGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBhZGp1c3Qgd2hlbgorICAgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBhZGp1c3RlZCBmb3Igc21hbGwgb3IgbGFyZ2UgQyBzdGFjayBhbGxvY2F0aW9ucy4KKyovCisjZGVmaW5lIENPTVBJTEVSX1NUQUNLX0ZSQU1FX1NDQUxFIDMKKwogc3RydWN0IHN5bXRhYmxlICoKIFB5U3ltdGFibGVfQnVpbGQobW9kX3R5IG1vZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIFB5RnV0dXJlRmVhdHVyZXMgKmZ1dHVyZSkKIHsKICAgICBzdHJ1Y3Qgc3ltdGFibGUgKnN0ID0gc3ltdGFibGVfbmV3KCk7CiAgICAgYXNkbF9zZXEgKnNlcTsKICAgICBpbnQgaTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAKICAgICBpZiAoc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHN0OwogICAgIHN0LT5zdF9maWxlbmFtZSA9IGZpbGVuYW1lOwogICAgIHN0LT5zdF9mdXR1cmUgPSBmdXR1cmU7CisKKyAgICAvKiBTZXR1cCByZWN1cnNpb24gZGVwdGggY2hlY2sgY291bnRlcnMgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGlmICghdHN0YXRlKSB7CisgICAgICAgIFB5U3ltdGFibGVfRnJlZShzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzdC0+cmVjdXJzaW9uX2RlcHRoID0gdHN0YXRlLT5yZWN1cnNpb25fZGVwdGggKiBDT01QSUxFUl9TVEFDS19GUkFNRV9TQ0FMRTsKKyAgICBzdC0+cmVjdXJzaW9uX2xpbWl0ID0gUHlfR2V0UmVjdXJzaW9uTGltaXQoKSAqIENPTVBJTEVSX1NUQUNLX0ZSQU1FX1NDQUxFOworCiAgICAgLyogTWFrZSB0aGUgaW5pdGlhbCBzeW1ib2wgaW5mb3JtYXRpb24gZ2F0aGVyaW5nIHBhc3MgKi8KICAgICBpZiAoIUdFVF9JREVOVElGSUVSKHRvcCkgfHwKICAgICAgICAgIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCB0b3AsIE1vZHVsZUJsb2NrLCAodm9pZCAqKW1vZCwgMCwgMCkpIHsKQEAgLTc1Miw3ICs3NzIsNyBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBSZWN1cnNpdmVseSBjYWxsIGFuYWx5emVfYmxvY2soKSBvbiBlYWNoIGNoaWxkIGJsb2NrLgorICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgYW5hbHl6ZV9jaGlsZF9ibG9jaygpIG9uIGVhY2ggY2hpbGQgYmxvY2suCiAKICAgICAgICBuZXdib3VuZCwgbmV3Z2xvYmFsIG5vdyBjb250YWluIHRoZSBuYW1lcyB2aXNpYmxlIGluCiAgICAgICAgbmVzdGVkIGJsb2Nrcy4gIFRoZSBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgY2hpbGRyZW4gd2lsbApAQCAtODk1LDE4ICs5MTUsMTUgQEAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX2V4aXRfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgdm9pZCAqYXN0KQogewotICAgIFB5X3NzaXplX3QgZW5kOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIFB5X0NMRUFSKHN0LT5zdF9jdXIpOwotICAgIGVuZCA9IFB5TGlzdF9HRVRfU0laRShzdC0+c3Rfc3RhY2spIC0gMTsKLSAgICBpZiAoZW5kID49IDApIHsKLSAgICAgICAgc3QtPnN0X2N1ciA9IChQeVNURW50cnlPYmplY3QgKilQeUxpc3RfR0VUX0lURU0oc3QtPnN0X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpOwotICAgICAgICBpZiAoc3QtPnN0X2N1ciA9PSBOVUxMKQorICAgIHN0LT5zdF9jdXIgPSBOVUxMOworICAgIHNpemUgPSBQeUxpc3RfR0VUX1NJWkUoc3QtPnN0X3N0YWNrKTsKKyAgICBpZiAoc2l6ZSkgeworICAgICAgICBpZiAoUHlMaXN0X1NldFNsaWNlKHN0LT5zdF9zdGFjaywgc2l6ZSAtIDEsIHNpemUsIE5VTEwpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBQeV9JTkNSRUYoc3QtPnN0X2N1cik7Ci0gICAgICAgIGlmIChQeVNlcXVlbmNlX0RlbEl0ZW0oc3QtPnN0X3N0YWNrLCBlbmQpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoLS1zaXplKQorICAgICAgICAgICAgc3QtPnN0X2N1ciA9IChQeVNURW50cnlPYmplY3QgKilQeUxpc3RfR0VUX0lURU0oc3QtPnN0X3N0YWNrLCBzaXplIC0gMSk7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtOTE1LDIzICs5MzIsMjMgQEAKIHN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgX1B5X2Jsb2NrX3R5IGJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXN0LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIHsKLSAgICBQeVNURW50cnlPYmplY3QgKnByZXYgPSBOVUxMOworICAgIFB5U1RFbnRyeU9iamVjdCAqcHJldiA9IE5VTEwsICpzdGU7CiAKLSAgICBpZiAoc3QtPnN0X2N1cikgewotICAgICAgICBwcmV2ID0gc3QtPnN0X2N1cjsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc3QtPnN0X3N0YWNrLCAoUHlPYmplY3QgKilzdC0+c3RfY3VyKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzdC0+c3RfY3VyKTsKLSAgICB9Ci0gICAgc3QtPnN0X2N1ciA9IHN0ZV9uZXcoc3QsIG5hbWUsIGJsb2NrLCBhc3QsIGxpbmVubywgY29sX29mZnNldCk7Ci0gICAgaWYgKHN0LT5zdF9jdXIgPT0gTlVMTCkKKyAgICBzdGUgPSBzdGVfbmV3KHN0LCBuYW1lLCBibG9jaywgYXN0LCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgIGlmIChzdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5TGlzdF9BcHBlbmQoc3QtPnN0X3N0YWNrLCAoUHlPYmplY3QgKilzdGUpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByZXYgPSBzdC0+c3RfY3VyOworICAgIC8qIFRoZSBlbnRyeSBpcyBvd25lZCBieSB0aGUgc3RhY2suIEJvcnJvdyBpdCBmb3Igc3RfY3VyLiAqLworICAgIFB5X0RFQ1JFRihzdGUpOworICAgIHN0LT5zdF9jdXIgPSBzdGU7CiAgICAgaWYgKGJsb2NrID09IE1vZHVsZUJsb2NrKQogICAgICAgICBzdC0+c3RfZ2xvYmFsID0gc3QtPnN0X2N1ci0+c3RlX3N5bWJvbHM7CiAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocHJldi0+c3RlX2NoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilzdC0+c3RfY3VyKSA8IDApIHsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocHJldi0+c3RlX2NoaWxkcmVuLCAoUHlPYmplY3QgKilzdGUpIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDE5LDE3ICsxMDM2LDE3IEBACiAKICAgIFZJU0lUX1NFUV9UQUlMIHBlcm1pdHMgdGhlIHN0YXJ0IG9mIGFuIEFTREwgc2VxdWVuY2UgdG8gYmUgc2tpcHBlZCwgd2hpY2ggaXMKICAgIHVzZWZ1bCBpZiB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgc2VxdWVuY2UgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQuCisKKyAgIFZJU0lUX1FVSVQgbWFjcm8gcmV0dXJucyB0aGUgc3BlY2lmaWVkIHZhbHVlIGV4aXRpbmcgZnJvbSB0aGUgZnVuY3Rpb24gYnV0CisgICBmaXJzdCBhZGp1c3RzIGN1cnJlbnQgcmVjdXJzaW9uIGNvdW50ZXIgZGVwdGguCiAqLwogCisjZGVmaW5lIFZJU0lUX1FVSVQoU1QsIFgpIFwKKyAgICByZXR1cm4gLS0oU1QpLT5yZWN1cnNpb25fZGVwdGgsKFgpCisKICNkZWZpbmUgVklTSVQoU1QsIFRZUEUsIFYpIFwKICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIChWKSkpIFwKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSNkZWZpbmUgVklTSVRfSU5fQkxPQ0soU1QsIFRZUEUsIFYsIFMpIFwKLSAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIChWKSkpIHsgXAotICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgcmV0dXJuIDA7IFwKLSAgICB9CisgICAgICAgIFZJU0lUX1FVSVQoKFNUKSwgMCk7CiAKICNkZWZpbmUgVklTSVRfU0VRKFNULCBUWVBFLCBTRVEpIHsgXAogICAgIGludCBpOyBcCkBAIC0xMDM3LDE5ICsxMDU0LDcgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCiAgICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgfSBcCi19Ci0KLSNkZWZpbmUgVklTSVRfU0VRX0lOX0JMT0NLKFNULCBUWVBFLCBTRVEsIFMpIHsgXAotICAgIGludCBpOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKLSAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCi0gICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIHsgXAotICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICB9IFwKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoKFNUKSwgMCk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CiAKQEAgLTEwNTksMTkgKzEwNjQsNyBAQAogICAgIGZvciAoaSA9IChTVEFSVCk7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKICAgICAgICAgVFlQRSAjIyBfdHkgZWx0ID0gKFRZUEUgIyMgX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCiAgICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgXAotICAgICAgICAgICAgcmV0dXJuIDA7IFwKLSAgICB9IFwKLX0KLQotI2RlZmluZSBWSVNJVF9TRVFfVEFJTF9JTl9CTE9DSyhTVCwgVFlQRSwgU0VRLCBTVEFSVCwgUykgeyBcCi0gICAgaW50IGk7IFwKLSAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAotICAgIGZvciAoaSA9IChTVEFSVCk7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKLSAgICAgICAgVFlQRSAjIyBfdHkgZWx0ID0gKFRZUEUgIyMgX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCi0gICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgeyBcCi0gICAgICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIH0gXAorICAgICAgICAgICAgVklTSVRfUVVJVCgoU1QpLCAwKTsgICAgICAgICAgICAgICAgIFwKICAgICB9IFwKIH0KIApAQCAtMTA4Miw3ICsxMDc1LDcgQEAKICAgICAgICAgZXhwcl90eSBlbHQgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIWVsdCkgY29udGludWU7IC8qIGNhbiBiZSBOVUxMICovIFwKICAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9leHByKChTVCksIGVsdCkpIFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCisgICAgICAgICAgICBWSVNJVF9RVUlUKChTVCksIDApOyAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CiAKQEAgLTExMDcsMzIgKzExMDAsMzcgQEAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X3N0bXQoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKQogeworICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgZHVyaW5nIGNvbXBpbGF0aW9uIik7CisgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgIH0KICAgICBzd2l0Y2ggKHMtPmtpbmQpIHsKICAgICBjYXNlIEZ1bmN0aW9uRGVmX2tpbmQ6CiAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgcy0+di5GdW5jdGlvbkRlZi5uYW1lLCBERUZfTE9DQUwpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgaWYgKHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpOwogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cykKICAgICAgICAgICAgIFZJU0lUX0tXT05MWURFRkFVTFRTKHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+a3dfZGVmYXVsdHMpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0LCBzKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KQogICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9lbnRlcl9ibG9jayhzdCwgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQmxvY2ssICh2b2lkICopcywgcy0+bGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBhcmd1bWVudHMsIHMtPnYuRnVuY3Rpb25EZWYuYXJncywgcyk7Ci0gICAgICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgc3RtdCwgcy0+di5GdW5jdGlvbkRlZi5ib2R5LCBzKTsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBzLT52LkNsYXNzRGVmLm5hbWUsIERFRl9MT0NBTCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuYmFzZXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGtleXdvcmQsIHMtPnYuQ2xhc3NEZWYua2V5d29yZHMpOwogICAgICAgICBpZiAocy0+di5DbGFzc0RlZi5zdGFyYXJncykKQEAgLTExNDMsMzQgKzExNDEsMjYgQEAKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIHMtPnYuQ2xhc3NEZWYubmFtZSwgQ2xhc3NCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXMsIHMtPmxpbmVubywgcy0+Y29sX29mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBpZiAoIUdFVF9JREVOVElGSUVSKF9fY2xhc3NfXykgfHwKICAgICAgICAgICAgICFzeW10YWJsZV9hZGRfZGVmKHN0LCBfX2NsYXNzX18sIERFRl9MT0NBTCkgfHwKICAgICAgICAgICAgICFHRVRfSURFTlRJRklFUihfX2xvY2Fsc19fKSB8fAogICAgICAgICAgICAgIXN5bXRhYmxlX2FkZF9kZWYoc3QsIF9fbG9jYWxzX18sIERFRl9QQVJBTSkpIHsKICAgICAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgfQogICAgICAgICB0bXAgPSBzdC0+c3RfcHJpdmF0ZTsKICAgICAgICAgc3QtPnN0X3ByaXZhdGUgPSBzLT52LkNsYXNzRGVmLm5hbWU7Ci0gICAgICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgc3RtdCwgcy0+di5DbGFzc0RlZi5ib2R5LCBzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkNsYXNzRGVmLmJvZHkpOwogICAgICAgICBzdC0+c3RfcHJpdmF0ZSA9IHRtcDsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFJldHVybl9raW5kOgogICAgICAgICBpZiAocy0+di5SZXR1cm4udmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfcmV0dXJuc192YWx1ZSA9IDE7Ci0gICAgICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IpOwotICAgICAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoc3QtPnN0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEZWxldGVfa2luZDoKQEAgLTEyMDcsMTkgKzExOTcsMTYgQEAKICAgICBjYXNlIFJhaXNlX2tpbmQ6CiAgICAgICAgIGlmIChzLT52LlJhaXNlLmV4YykgewogICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuZXhjKTsKLSAgICAgICAgaWYgKHMtPnYuUmFpc2UuY2F1c2UpIHsKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuY2F1c2UpOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAocy0+di5SYWlzZS5jYXVzZSkgeworICAgICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmNhdXNlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUV4Y2VwdF9raW5kOgotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0LmJvZHkpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0Lm9yZWxzZSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgZXhjZXB0aGFuZGxlciwgcy0+di5UcnlFeGNlcHQuaGFuZGxlcnMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUZpbmFsbHlfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUZpbmFsbHkuYm9keSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSk7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5ib2R5KTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5vcmVsc2UpOworICAgICAgICBWSVNJVF9TRVEoc3QsIGV4Y2VwdGhhbmRsZXIsIHMtPnYuVHJ5LmhhbmRsZXJzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5maW5hbGJvZHkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFzc2VydF9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NlcnQudGVzdCk7CkBAIC0xMjQ5LDEyICsxMjM2LDE0IEBACiAgICAgICAgIGFzZGxfc2VxICpzZXEgPSBzLT52Lkdsb2JhbC5uYW1lczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZSA9IChpZGVudGlmaWVyKWFzZGxfc2VxX0dFVChzZXEsIGkpOwotICAgICAgICAgICAgY2hhciAqY19uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7CiAgICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX0FTU0lHTiwKQEAgLTEyNjQsMTAgKzEyNTMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfQUZURVJfVVNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX0dMT0JBTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI3NiwxMiArMTI2NSwxNCBAQAogICAgICAgICBhc2RsX3NlcSAqc2VxID0gcy0+di5Ob25sb2NhbC5uYW1lczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZSA9IChpZGVudGlmaWVyKWFzZGxfc2VxX0dFVChzZXEsIGkpOwotICAgICAgICAgICAgY2hhciAqY19uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7CiAgICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfQVNTSUdOLApAQCAtMTI5MSwxMCArMTI4MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PTkxPQ0FMX0FGVEVSX1VTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwogICAgICAgICAgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgYnVmLCBzLT5saW5lbm8pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX2FkZF9kZWYoc3QsIG5hbWUsIERFRl9OT05MT0NBTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTMwNywxOSArMTI5OCwyMSBAQAogICAgICAgICAvKiBub3RoaW5nIHRvIGRvIGhlcmUgKi8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaXRoX2tpbmQ6Ci0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LldpdGguY29udGV4dF9leHByKTsKLSAgICAgICAgaWYgKHMtPnYuV2l0aC5vcHRpb25hbF92YXJzKSB7Ci0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpOwotICAgICAgICB9CisgICAgICAgIFZJU0lUX1NFUShzdCwgd2l0aGl0ZW0sIHMtPnYuV2l0aC5pdGVtcyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5XaXRoLmJvZHkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgVklTSVRfUVVJVChzdCwgMSk7CiB9CiAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X2V4cHIoc3RydWN0IHN5bXRhYmxlICpzdCwgZXhwcl90eSBlKQogeworICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgZHVyaW5nIGNvbXBpbGF0aW9uIik7CisgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgIH0KICAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKICAgICBjYXNlIEJvb2xPcF9raW5kOgogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQm9vbE9wLnZhbHVlcyk7CkBAIC0xMzMzLDcgKzEzMjYsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIExhbWJkYV9raW5kOiB7CiAgICAgICAgIGlmICghR0VUX0lERU5USUZJRVIobGFtYmRhKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGlmIChlLT52LkxhbWJkYS5hcmdzLT5kZWZhdWx0cykKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5MYW1iZGEuYXJncy0+ZGVmYXVsdHMpOwogICAgICAgICBpZiAoZS0+di5MYW1iZGEuYXJncy0+a3dfZGVmYXVsdHMpCkBAIC0xMzQyLDExICsxMzM1LDExIEBACiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIGxhbWJkYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKWUsIGUtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jb2xfb2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgYXJndW1lbnRzLCBlLT52LkxhbWJkYS5hcmdzLCAodm9pZCopZSk7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBlLT52LkxhbWJkYS5ib2R5LCAodm9pZCopZSk7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgZS0+di5MYW1iZGEuYXJncyk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkxhbWJkYS5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSWZFeHBfa2luZDoKQEAgLTEzNjMsMzEgKzEzNTYsMjggQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZW5lcmF0b3JFeHBfa2luZDoKICAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9nZW5leHAoc3QsIGUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaXN0Q29tcF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2xpc3Rjb21wKHN0LCBlKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0Q29tcF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X3NldGNvbXAoc3QsIGUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaWN0Q29tcF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2RpY3Rjb21wKHN0LCBlKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpCiAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwotICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX3JldHVybnNfdmFsdWUpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICBSRVRVUk5fVkFMX0lOX0dFTkVSQVRPUik7Ci0gICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbkV4KHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+bGluZW5vLCBlLT5jb2xfb2Zmc2V0KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKQEAgLTE0MjIsMTQgKzE0MTIsMTQgQEAKICAgICBjYXNlIE5hbWVfa2luZDoKICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBlLT52Lk5hbWUuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52Lk5hbWUuY3R4ID09IExvYWQgPyBVU0UgOiBERUZfTE9DQUwpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgLyogU3BlY2lhbC1jYXNlIHN1cGVyOiBpdCBjb3VudHMgYXMgYSB1c2Ugb2YgX19jbGFzc19fICovCiAgICAgICAgIGlmIChlLT52Lk5hbWUuY3R4ID09IExvYWQgJiYKICAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2sgJiYKICAgICAgICAgICAgICFQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhlLT52Lk5hbWUuaWQsICJzdXBlciIpKSB7CiAgICAgICAgICAgICBpZiAoIUdFVF9JREVOVElGSUVSKF9fY2xhc3NfXykgfHwKICAgICAgICAgICAgICAgICAhc3ltdGFibGVfYWRkX2RlZihzdCwgX19jbGFzc19fLCBVU0UpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIC8qIGNoaWxkIG5vZGVzIG9mIExpc3QgYW5kIFR1cGxlIHdpbGwgaGF2ZSBleHByX2NvbnRleHQgc2V0ICovCkBAIC0xNDQwLDcgKzE0MzAsNyBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuVHVwbGUuZWx0cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gMTsKKyAgICBWSVNJVF9RVUlUKHN0LCAxKTsKIH0KIAogc3RhdGljIGludApAQCAtMTU0NSw2ICsxNTM1LDE2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBpbnQKK3N5bXRhYmxlX3Zpc2l0X3dpdGhpdGVtKHN0cnVjdCBzeW10YWJsZSAqc3QsIHdpdGhpdGVtX3R5IGl0ZW0pCit7CisgICAgVklTSVQoc3QsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CisgICAgaWYgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMpIHsKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogCiBzdGF0aWMgaW50CiBzeW10YWJsZV92aXNpdF9hbGlhcyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhbGlhc190eSBhKQpAQCAtMTU1NSwxMCArMTU1NSwxMCBAQAogICAgICovCiAgICAgUHlPYmplY3QgKnN0b3JlX25hbWU7CiAgICAgUHlPYmplY3QgKm5hbWUgPSAoYS0+YXNuYW1lID09IE5VTEwpID8gYS0+bmFtZSA6IGEtPmFzbmFtZTsKLSAgICBjb25zdCBQeV9VTklDT0RFICpiYXNlID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSk7Ci0gICAgUHlfVU5JQ09ERSAqZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoYmFzZSwgJy4nKTsKLSAgICBpZiAoZG90KSB7Ci0gICAgICAgIHN0b3JlX25hbWUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYmFzZSwgZG90IC0gYmFzZSk7CisgICAgUHlfc3NpemVfdCBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICBpZiAoZG90ICE9IC0xKSB7CisgICAgICAgIHN0b3JlX25hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIDAsIGRvdCk7CiAgICAgICAgIGlmICghc3RvcmVfbmFtZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE2NTUsMTMgKzE2NTUsMTIgQEAKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBvdXRlcm1vc3QtPnRhcmdldCwgKHZvaWQqKWUpOwotICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgZXhwciwgb3V0ZXJtb3N0LT5pZnMsICh2b2lkKillKTsKLSAgICBWSVNJVF9TRVFfVEFJTF9JTl9CTE9DSyhzdCwgY29tcHJlaGVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLCAxLCAodm9pZCopZSk7CisgICAgVklTSVQoc3QsIGV4cHIsIG91dGVybW9zdC0+dGFyZ2V0KTsKKyAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIG91dGVybW9zdC0+aWZzKTsKKyAgICBWSVNJVF9TRVFfVEFJTChzdCwgY29tcHJlaGVuc2lvbiwgZ2VuZXJhdG9ycywgMSk7CiAgICAgaWYgKHZhbHVlKQotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgdmFsdWUsICh2b2lkKillKTsKLSAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgZWx0LCAodm9pZCopZSk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCB2YWx1ZSk7CisgICAgVklTSVQoc3QsIGV4cHIsIGVsdCk7CiAgICAgcmV0dXJuIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBjNGYyN2QwLi4yMGJmYTU1IDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCisjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgogCkBAIC03OCw4ICs3OSwxMCBAQAogICAgIFB5T2JqZWN0ICplbmNvZGVkLCAqZXNjYXBlZF9zdHIsICpyZXByX3N0ciwgKmJ1ZmZlciwgKnJlc3VsdDsKICAgICBjaGFyICpzdGRvdXRfZW5jb2Rpbmdfc3RyOwogICAgIGludCByZXQ7CisgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOworICAgIF9QeV9JREVOVElGSUVSKGJ1ZmZlcik7CiAKLSAgICBzdGRvdXRfZW5jb2RpbmcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG91dGYsICJlbmNvZGluZyIpOworICAgIHN0ZG91dF9lbmNvZGluZyA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0ZiwgJlB5SWRfZW5jb2RpbmcpOwogICAgIGlmIChzdGRvdXRfZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRvdXRfZW5jb2RpbmcpOwpAQCAtOTYsOSArOTksMTAgQEAKICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgYnVmZmVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRmLCAiYnVmZmVyIik7CisgICAgYnVmZmVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRmLCAmUHlJZF9idWZmZXIpOwogICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChidWZmZXIsICJ3cml0ZSIsICIoTykiLCBlbmNvZGVkKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfd3JpdGUsICIoTykiLCBlbmNvZGVkKTsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTM1LDYgKzEzOSw3IEBACiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgImJ1aWx0aW5zIik7CiAgICAgaW50IGVycjsKKyAgICBfUHlfSURFTlRJRklFUihfKTsKIAogICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJsb3N0IGJ1aWx0aW5zIG1vZHVsZSIpOwpAQCAtMTQ4LDcgKzE1Myw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGJ1aWx0aW5zLCAiXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoYnVpbHRpbnMsICZQeUlkX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG91dGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChvdXRmID09IE5VTEwgfHwgb3V0ZiA9PSBQeV9Ob25lKSB7CkBAIC0xNzAsNyArMTc1LDcgQEAKICAgICB9CiAgICAgaWYgKFB5RmlsZV9Xcml0ZVN0cmluZygiXG4iLCBvdXRmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhidWlsdGlucywgIl8iLCBvKSAhPSAwKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGJ1aWx0aW5zLCAmUHlJZF9fLCBvKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC03NzAsOSArNzc1LDcgQEAKIGEgbGF6eSByZXNvbHZpbmcgb2Ygc3ltYm9scyB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSwgaWYgY2FsbGVkIGFzXG5cCiBzeXMuc2V0ZGxvcGVuZmxhZ3MoMCkuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhc1xuXAogc3lzLnNldGRsb3BlbmZsYWdzKGN0eXBlcy5SVExEX0dMT0JBTCkuICBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWcgbW9kdWxlc1xuXAotY2FuIGJlIGVpdGhlciBmb3VuZCBpbiB0aGUgY3R5cGVzIG1vZHVsZSwgb3IgaW4gdGhlIERMRkNOIG1vZHVsZS4gSWYgRExGQ05cblwKLWlzIG5vdCBhdmFpbGFibGUsIGl0IGNhbiBiZSBnZW5lcmF0ZWQgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaCB1c2luZyB0aGVcblwKLWgycHkgc2NyaXB0LiIpOworY2FuIGJlIGZvdW5kIGluIHRoZSBvcyBtb2R1bGUgKFJUTERfeHh4IGNvbnN0YW50cywgZS5nLiBvcy5SVExEX0xBWlkpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX2dldGRsb3BlbmZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTgxMSwxMCArODE0LDExIEBACiBzeXNfZ2V0c2l6ZW9mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfX3NpemVvZl9fID0gTlVMTCwgKmdjX2hlYWRfc2l6ZSA9IE5VTEw7CisgICAgc3RhdGljIFB5T2JqZWN0ICpnY19oZWFkX3NpemUgPSBOVUxMOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqZWN0IiwgImRlZmF1bHQiLCAwfTsKICAgICBQeU9iamVjdCAqbywgKmRmbHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptZXRob2Q7CisgICAgX1B5X0lERU5USUZJRVIoX19zaXplb2ZfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmdldHNpemVvZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbywgJmRmbHQpKQpAQCAtODMxLDggKzgzNSw3IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeShQeV9UWVBFKG8pKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgIl9fc2l6ZW9mX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJfX3NpemVvZl9fKTsKKyAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3NpemVvZl9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTk5NCw2ICs5OTcsMjcgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgV0lUSF9QWU1BTExPQworICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyNlbmRpZgorICAgIF9QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhzdGRlcnIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CitQeURvY19TVFJWQVIoZGVidWdtYWxsb2NzdGF0c19kb2MsCisiX2RlYnVnbWFsbG9jc3RhdHMoKVxuXAorXG5cCitQcmludCBzdW1tYXJ5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZlxuXAorcHltYWxsb2MncyBzdHJ1Y3R1cmVzLlxuXAorXG5cCitJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3lcblwKK2NoZWNrcy5cblwKKyIpOworCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogLyogRGVmaW5lZCBpbiBvYmplY3RzLmMgYmVjYXVzZSBpdCB1c2VzIHN0YXRpYyBnbG9iYWxzIGlmIHRoYXQgZmlsZSAqLwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlfR2V0T2JqZWN0cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKQEAgLTEwOTAsNiArMTExNCw4IEBACiAgICAgeyJzZXR0cmFjZSIsICAgICAgICBzeXNfc2V0dHJhY2UsIE1FVEhfTywgc2V0dHJhY2VfZG9jfSwKICAgICB7ImdldHRyYWNlIiwgICAgICAgIHN5c19nZXR0cmFjZSwgTUVUSF9OT0FSR1MsIGdldHRyYWNlX2RvY30sCiAgICAgeyJjYWxsX3RyYWNpbmciLCBzeXNfY2FsbF90cmFjaW5nLCBNRVRIX1ZBUkFSR1MsIGNhbGxfdHJhY2luZ19kb2N9LAorICAgIHsiX2RlYnVnbWFsbG9jc3RhdHMiLCBzeXNfZGVidWdtYWxsb2NzdGF0cywgTUVUSF9WQVJBUkdTLAorICAgICBkZWJ1Z21hbGxvY3N0YXRzX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTExNzcsNyArMTIwMyw2IEBACiAgICAgUHlPYmplY3QgKm9wdHM7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IHdjaGFyX3QgKm5hbWVfZW5kOwotICAgIGludCByOwogCiAgICAgb3B0cyA9IGdldF94b3B0aW9ucygpOwogICAgIGlmIChvcHRzID09IE5VTEwpCkBAIC0xMTk1LDcgKzEyMjAsNyBAQAogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMIHx8IHZhbHVlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgciA9IFB5RGljdF9TZXRJdGVtKG9wdHMsIG5hbWUsIHZhbHVlKTsKKyAgICBQeURpY3RfU2V0SXRlbShvcHRzLCBuYW1lLCB2YWx1ZSk7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuOwpAQCAtMTI1MiwyMSArMTI3NywyMiBAQAogIlxuXAogU3RhdGljIG9iamVjdHM6XG5cCiBcblwKLWZsb2F0X2luZm8gLS0gYSBkaWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IGltcGxlbWVudGF0aW9uLlxuXAorYnVpbHRpbl9tb2R1bGVfbmFtZXMgLS0gdHVwbGUgb2YgbW9kdWxlIG5hbWVzIGJ1aWx0IGludG8gdGhpcyBpbnRlcnByZXRlclxuXAorY29weXJpZ2h0IC0tIGNvcHlyaWdodCBub3RpY2UgcGVydGFpbmluZyB0byB0aGlzIGludGVycHJldGVyXG5cCitleGVjX3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBtYWNoaW5lLXNwZWNpZmljIFB5dGhvbiBsaWJyYXJ5XG5cCitleGVjdXRhYmxlIC0tIGFic29sdXRlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgYmluYXJ5IG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXJcblwKK2Zsb2F0X2luZm8gLS0gYSBzdHJ1Y3Qgc2VxdWVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgaW1wbGVtZW50YXRpb24uXG5cCitmbG9hdF9yZXByX3N0eWxlIC0tIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBzdHlsZSBvZiByZXByKCkgb3V0cHV0IGZvciBmbG9hdHNcblwKK2hleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXJcblwKK2ltcGxlbWVudGF0aW9uIC0tIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpbmZvcm1hdGlvbi5cblwKIGludF9pbmZvIC0tIGEgc3RydWN0IHNlcXVlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGludCBpbXBsZW1lbnRhdGlvbi5cblwKIG1heHNpemUgLS0gdGhlIGxhcmdlc3Qgc3VwcG9ydGVkIGxlbmd0aCBvZiBjb250YWluZXJzLlxuXAotbWF4dW5pY29kZSAtLSB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgY2hhcmFjdGVyXG5cCi1idWlsdGluX21vZHVsZV9uYW1lcyAtLSB0dXBsZSBvZiBtb2R1bGUgbmFtZXMgYnVpbHQgaW50byB0aGlzIGludGVycHJldGVyXG5cCi1zdWJ2ZXJzaW9uIC0tIHN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlIGJ1aWxkIGFzIHR1cGxlXG5cCittYXh1bmljb2RlIC0tIHRoZSB2YWx1ZSBvZiB0aGUgbGFyZ2VzdCBVbmljb2RlIGNvZGVwb2ludFxuXAorcGxhdGZvcm0gLS0gcGxhdGZvcm0gaWRlbnRpZmllclxuXAorcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIFB5dGhvbiBsaWJyYXJ5XG5cCit0aHJlYWRfaW5mbyAtLSBhIHN0cnVjdCBzZXF1ZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uXG5cCiB2ZXJzaW9uIC0tIHRoZSB2ZXJzaW9uIG9mIHRoaXMgaW50ZXJwcmV0ZXIgYXMgYSBzdHJpbmdcblwKIHZlcnNpb25faW5mbyAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgbmFtZWQgdHVwbGVcblwKLWhleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXJcblwKLWNvcHlyaWdodCAtLSBjb3B5cmlnaHQgbm90aWNlIHBlcnRhaW5pbmcgdG8gdGhpcyBpbnRlcnByZXRlclxuXAotcGxhdGZvcm0gLS0gcGxhdGZvcm0gaWRlbnRpZmllclxuXAotZXhlY3V0YWJsZSAtLSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGJpbmFyeSBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyXG5cCi1wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgUHl0aG9uIGxpYnJhcnlcblwKLWV4ZWNfcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIG1hY2hpbmUtc3BlY2lmaWMgUHl0aG9uIGxpYnJhcnlcblwKLWZsb2F0X3JlcHJfc3R5bGUgLS0gc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0eWxlIG9mIHJlcHIoKSBvdXRwdXQgZm9yIGZsb2F0c1xuXAogIgogKQogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTEzMDUsNDMgKzEzMzEsNiBAQAogKQogLyogZW5kIG9mIHN5c19kb2MgKi8gOwogCi0vKiBTdWJ2ZXJzaW9uIGJyYW5jaCBhbmQgcmV2aXNpb24gbWFuYWdlbWVudCAqLwotc3RhdGljIGludCBzdm5faW5pdGlhbGl6ZWQ7Ci1zdGF0aWMgY2hhciBwYXRjaGxldmVsX3JldmlzaW9uWzUwXTsgLyogSnVzdCB0aGUgbnVtYmVyICovCi1zdGF0aWMgY2hhciBicmFuY2hbNTBdOwotc3RhdGljIGNoYXIgc2hvcnRicmFuY2hbNTBdOwotc3RhdGljIGNvbnN0IGNoYXIgKnN2bl9yZXZpc2lvbjsKLQotc3RhdGljIHZvaWQKLXN2bnZlcnNpb25faW5pdCh2b2lkKQotewotICAgIGlmIChzdm5faW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN2bl9pbml0aWFsaXplZCA9IDE7Ci0gICAgKnBhdGNobGV2ZWxfcmV2aXNpb24gPSAnXDAnOwotICAgIHN0cmNweShicmFuY2gsICIiKTsKLSAgICBzdHJjcHkoc2hvcnRicmFuY2gsICJ1bmtub3duIik7Ci0gICAgc3ZuX3JldmlzaW9uID0gIiI7Ci19Ci0KLS8qIFJldHVybiBzdm52ZXJzaW9uIG91dHB1dCBpZiBhdmFpbGFibGUuCi0gICBFbHNlIHJldHVybiBSZXZpc2lvbiBvZiBwYXRjaGxldmVsLmggaWYgb24gYnJhbmNoLgotICAgRWxzZSByZXR1cm4gZW1wdHkgc3RyaW5nICovCi1jb25zdCBjaGFyKgotUHlfU3VidmVyc2lvblJldmlzaW9uKCkKLXsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICByZXR1cm4gc3ZuX3JldmlzaW9uOwotfQotCi1jb25zdCBjaGFyKgotUHlfU3VidmVyc2lvblNob3J0QnJhbmNoKCkKLXsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICByZXR1cm4gc2hvcnRicmFuY2g7Ci19Ci0KIAogUHlEb2NfU1RSVkFSKGZsYWdzX19kb2NfXywKICJzeXMuZmxhZ3NcblwKQEAgLTEzNTIsNyArMTM0MSw2IEBACiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIGZsYWdzX2ZpZWxkc1tdID0gewogICAgIHsiZGVidWciLCAgICAgICAgICAgICAgICAgICAiLWQifSwKLSAgICB7ImRpdmlzaW9uX3dhcm5pbmciLCAgICAgICAgIi1RIn0sCiAgICAgeyJpbnNwZWN0IiwgICAgICAgICAgICAgICAgICItaSJ9LAogICAgIHsiaW50ZXJhY3RpdmUiLCAgICAgICAgICAgICAiLWkifSwKICAgICB7Im9wdGltaXplIiwgICAgICAgICAgICAgICAgIi1PIG9yIC1PTyJ9LApAQCAtMTM3Nyw5ICsxMzY1LDkgQEAKICAgICBmbGFnc19fZG9jX18sICAgICAgIC8qIGRvYyAqLwogICAgIGZsYWdzX2ZpZWxkcywgICAgICAgLyogZmllbGRzICovCiAjaWZkZWYgUklTQ09TCi0gICAgMTQKLSNlbHNlCiAgICAgMTMKKyNlbHNlCisgICAgMTIKICNlbmRpZgogfTsKIApAQCAtMTM5Nyw3ICsxMzg1LDYgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHNlcSwgcG9zKyssIFB5TG9uZ19Gcm9tTG9uZyhmbGFnKSkKIAogICAgIFNldEZsYWcoUHlfRGVidWdGbGFnKTsKLSAgICBTZXRGbGFnKFB5X0RpdmlzaW9uV2FybmluZ0ZsYWcpOwogICAgIFNldEZsYWcoUHlfSW5zcGVjdEZsYWcpOwogICAgIFNldEZsYWcoUHlfSW50ZXJhY3RpdmVGbGFnKTsKICAgICBTZXRGbGFnKFB5X09wdGltaXplRmxhZyk7CkBAIC0xNDkxLDYgKzE0NzgsNzMgQEAKICAgICByZXR1cm4gdmVyc2lvbl9pbmZvOwogfQogCisvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCisjZGVmaW5lIE5BTUUgImNweXRob24iCitjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOworI2RlZmluZSBRVU9URShhcmcpICNhcmcKKyNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCisjZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQorI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgVEFHIE5BTUUgIi0iIE1BSk9SIE1JTk9SOworY29uc3QgY2hhciAqX1B5U3lzX0ltcGxDYWNoZVRhZyA9IFRBRzsKKyN1bmRlZiBOQU1FCisjdW5kZWYgUVVPVEUKKyN1bmRlZiBTVFJJRlkKKyN1bmRlZiBNQUpPUgorI3VuZGVmIE1JTk9SCisjdW5kZWYgVEFHCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtlX2ltcGxfaW5mbyhQeU9iamVjdCAqdmVyc2lvbl9pbmZvKQoreworICAgIGludCByZXM7CisgICAgUHlPYmplY3QgKmltcGxfaW5mbywgKnZhbHVlLCAqbnM7CisKKyAgICBpbXBsX2luZm8gPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGltcGxfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHBvcHVsYXRlIHRoZSBkaWN0ICovCisKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVN5c19JbXBsTmFtZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAibmFtZSIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlTeXNfSW1wbENhY2hlVGFnKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJjYWNoZV90YWciLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgInZlcnNpb24iLCB2ZXJzaW9uX2luZm8pOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUFlfVkVSU0lPTl9IRVgpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgImhleHZlcnNpb24iLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIGRpY3QgcmVhZHkgKi8KKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhpbXBsX2luZm8pOworICAgIFB5X0RFQ1JFRihpbXBsX2luZm8pOworICAgIHJldHVybiBuczsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoaW1wbF9pbmZvKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBzeXNtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICJzeXMiLApAQCAtMTUwNiw3ICsxNTYwLDcgQEAKIFB5T2JqZWN0ICoKIF9QeVN5c19Jbml0KHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm0sICp2LCAqc3lzZGljdDsKKyAgICBQeU9iamVjdCAqbSwgKnYsICpzeXNkaWN0LCAqdmVyc2lvbl9pbmZvOwogICAgIGNoYXIgKnM7CiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZzeXNtb2R1bGUpOwpAQCAtMTU0NywxMCArMTYwMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0VmVyc2lvbigpKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiaGV4dmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKFBZX1ZFUlNJT05fSEVYKSk7Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgU0VUX1NZU19GUk9NX1NUUklORygic3VidmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoc3NzKSIsICJDUHl0aG9uIiwgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm5fcmV2aXNpb24pKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJfbWVyY3VyaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIihzenopIiwgIkNQeXRob24iLCBfUHlfaGdpZGVudGlmaWVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oZ3ZlcnNpb24oKSkpOwpAQCAtMTU2OSw2ICsxNjE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByZWZpeCgpLCAtMSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWNfcHJlZml4IiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0RXhlY1ByZWZpeCgpLCAtMSkpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJhc2VfcHJlZml4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJlZml4KCksIC0xKSk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygiYmFzZV9leGVjX3ByZWZpeCIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldEV4ZWNQcmVmaXgoKSwgLTEpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJtYXhzaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImZsb2F0X2luZm8iLApAQCAtMTU4MSw3ICsxNjM1LDcgQEAKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJoYXNoX2luZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2hhc2hfaW5mbygpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJtYXh1bmljb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfR2V0TWF4KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZygweDEwRkZGRikpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJ1aWx0aW5fbW9kdWxlX25hbWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYnVpbHRpbl9tb2R1bGVfbmFtZXMoKSk7CiAgICAgewpAQCAtMTYyNiwxMSArMTY4MCwxNSBAQAogICAgIC8qIHZlcnNpb25faW5mbyAqLwogICAgIGlmIChWZXJzaW9uSW5mb1R5cGUudHBfbmFtZSA9PSAwKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZWZXJzaW9uSW5mb1R5cGUsICZ2ZXJzaW9uX2luZm9fZGVzYyk7Ci0gICAgU0VUX1NZU19GUk9NX1NUUklORygidmVyc2lvbl9pbmZvIiwgbWFrZV92ZXJzaW9uX2luZm8oKSk7CisgICAgdmVyc2lvbl9pbmZvID0gbWFrZV92ZXJzaW9uX2luZm8oKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ2ZXJzaW9uX2luZm8iLCB2ZXJzaW9uX2luZm8pOwogICAgIC8qIHByZXZlbnQgdXNlciBmcm9tIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXMgKi8KICAgICBWZXJzaW9uSW5mb1R5cGUudHBfaW5pdCA9IE5VTEw7CiAgICAgVmVyc2lvbkluZm9UeXBlLnRwX25ldyA9IE5VTEw7CiAKKyAgICAvKiBpbXBsZW1lbnRhdGlvbiAqLworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImltcGxlbWVudGF0aW9uIiwgbWFrZV9pbXBsX2luZm8odmVyc2lvbl9pbmZvKSk7CisKICAgICAvKiBmbGFncyAqLwogICAgIGlmIChGbGFnc1R5cGUudHBfbmFtZSA9PSAwKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZGbGFnc1R5cGUsICZmbGFnc19kZXNjKTsKQEAgLTE2NTgsNiArMTcxNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoImxlZ2FjeSIpKTsKICNlbmRpZgogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ0aHJlYWRfaW5mbyIsIFB5VGhyZWFkX0dldEluZm8oKSk7CisjZW5kaWYKKwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkcKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODEyLDcgKzE4NzQsNyBAQAogICAgICAgICB0aGUgYXJndW1lbnQgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIGFueXdheS4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZ1bGxwYXRoKS9zaXplb2YoZnVsbHBhdGhbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0ZW1wKSkgewogICAgICAgICAgICAgYXJndjAgPSBmdWxscGF0aDsKQEAgLTE4ODEsMTEgKzE5NDMsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKmFyZ3MgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmIChmaWxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHdyaXRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZSwgIndyaXRlIik7CisgICAgd3JpdGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHdyaXRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkLmMgYi9QeXRob24vdGhyZWFkLmMKaW5kZXggZDIyNDA0Ni4uZTU1ZDM0MiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZC5jCisrKyBiL1B5dGhvbi90aHJlYWQuYwpAQCAtNyw3ICs3LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCi0KICNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKIC8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybwogICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbApAQCAtMjcsMTggKzI2LDYgQEAKIAogI2lmbmRlZiBfUE9TSVhfVEhSRUFEUwogCi0jaWZkZWYgX19zZ2kKLSNkZWZpbmUgU0dJX1RIUkVBRFMKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9USFJFQURfSAotI2RlZmluZSBTT0xBUklTX1RIUkVBRFMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChzdW4pICYmICFkZWZpbmVkKFNPTEFSSVNfVEhSRUFEUykKLSNkZWZpbmUgU1VOX0xXUAotI2VuZGlmCi0KIC8qIENoZWNrIGlmIHdlJ3JlIHJ1bm5pbmcgb24gSFAtVVggYW5kIF9TQ19USFJFQURTIGlzIGRlZmluZWQuIElmIHNvLCB0aGVuCiAgICBlbm91Z2ggb2YgdGhlIFBvc2l4IHRocmVhZHMgcGFja2FnZSBpcyBpbXBsZW1lbnRlZCB0byBzdXBwb3J0IHB5dGhvbgogICAgdGhyZWFkcy4KQEAgLTk0LDQ3ICs4MSwyMSBAQAogICAgb3IgdGhlIHNpemUgc3BlY2lmaWVkIGJ5IHRoZSBUSFJFQURfU1RBQ0tfU0laRSBtYWNyby4gKi8KIHN0YXRpYyBzaXplX3QgX3B5dGhyZWFkX3N0YWNrc2l6ZSA9IDA7CiAKLSNpZmRlZiBTR0lfVEhSRUFEUwotI2Vycm9yIFNHSSBJcml4IHRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfc2dpLmgiCi0jZW5kaWYKLQotI2lmZGVmIFNPTEFSSVNfVEhSRUFEUwotI2luY2x1ZGUgInRocmVhZF9zb2xhcmlzLmgiCi0jZW5kaWYKLQotI2lmZGVmIFNVTl9MV1AKLSNlcnJvciBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfbHdwLmgiCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfUFRICi0jZXJyb3IgR05VIHB0aCB0aHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX3B0aC5oIgotI3VuZGVmIF9QT1NJWF9USFJFQURTCi0jZW5kaWYKLQogI2lmZGVmIF9QT1NJWF9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgInB0aHJlYWQiCiAjaW5jbHVkZSAidGhyZWFkX3B0aHJlYWQuaCIKICNlbmRpZgogCi0jaWZkZWYgQ19USFJFQURTCi0jZXJyb3IgTWFjaCBDIFRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfY3RocmVhZC5oIgotI2VuZGlmCi0KICNpZmRlZiBOVF9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgIm50IgogI2luY2x1ZGUgInRocmVhZF9udC5oIgogI2VuZGlmCiAKICNpZmRlZiBPUzJfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJvczIiCiAjaW5jbHVkZSAidGhyZWFkX29zMi5oIgogI2VuZGlmCiAKLSNpZmRlZiBQTEFOOV9USFJFQURTCi0jaW5jbHVkZSAidGhyZWFkX3BsYW45LmgiCi0jZW5kaWYKLQogLyoKICNpZmRlZiBGT09CQVJfVEhSRUFEUwogI2luY2x1ZGUgInRocmVhZF9mb29iYXIuaCIKQEAgLTQwOSwzICszNzAsODQgQEAKIH0KIAogI2VuZGlmIC8qIFB5X0hBVkVfTkFUSVZFX1RMUyAqLworCitQeURvY19TVFJWQVIodGhyZWFkaW5mb19fZG9jX18sCisic3lzLnRocmVhZF9pbmZvXG5cCitcblwKK0Egc3RydWN0IHNlcXVlbmNlIGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGhyZWFkaW5mb19maWVsZHNbXSA9IHsKKyAgICB7Im5hbWUiLCAgICAibmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uIn0sCisgICAgeyJsb2NrIiwgICAgIm5hbWUgb2YgdGhlIGxvY2sgaW1wbGVtZW50YXRpb24ifSwKKyAgICB7InZlcnNpb24iLCAibmFtZSBhbmQgdmVyc2lvbiBvZiB0aGUgdGhyZWFkIGxpYnJhcnkifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdGhyZWFkaW5mb19kZXNjID0geworICAgICJzeXMudGhyZWFkX2luZm8iLCAgICAgICAgICAgLyogbmFtZSAqLworICAgIHRocmVhZGluZm9fX2RvY19fLCAgICAgICAgICAgLyogZG9jICovCisgICAgdGhyZWFkaW5mb19maWVsZHMsICAgICAgICAgICAvKiBmaWVsZHMgKi8KKyAgICAzCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRocmVhZEluZm9UeXBlOworCitQeU9iamVjdCoKK1B5VGhyZWFkX0dldEluZm8odm9pZCkKK3sKKyAgICBQeU9iamVjdCAqdGhyZWFkaW5mbywgKnZhbHVlOworICAgIGludCBwb3MgPSAwOworI2lmIChkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgXAorICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKKyAgICBjaGFyIGJ1ZmZlclsyNTVdOworICAgIGludCBsZW47CisjZW5kaWYKKworICAgIGlmIChUaHJlYWRJbmZvVHlwZS50cF9uYW1lID09IDApCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRocmVhZEluZm9UeXBlLCAmdGhyZWFkaW5mb19kZXNjKTsKKworICAgIHRocmVhZGluZm8gPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGhyZWFkSW5mb1R5cGUpOworICAgIGlmICh0aHJlYWRpbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQWVRIUkVBRF9OQU1FKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodGhyZWFkaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRocmVhZGluZm8sIHBvcysrLCB2YWx1ZSk7CisKKyNpZmRlZiBfUE9TSVhfVEhSRUFEUworI2lmZGVmIFVTRV9TRU1BUEhPUkVTCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygic2VtYXBob3JlIik7CisjZWxzZQorICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm11dGV4K2NvbmQiKTsKKyNlbmRpZgorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0aHJlYWRpbmZvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgdmFsdWUgPSBQeV9Ob25lOworI2VuZGlmCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworCisjaWYgKGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIGRlZmluZWQoSEFWRV9DT05GU1RSKSBcCisgICAgICYmIGRlZmluZWQoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04pKQorICAgIHZhbHVlID0gTlVMTDsKKyAgICBsZW4gPSBjb25mc3RyKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBpZiAoMSA8IGxlbiAmJiBsZW4gPCBzaXplb2YoYnVmZmVyKSkgeworICAgICAgICB2YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuLTEpOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorI2VuZGlmCisgICAgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHZhbHVlID0gUHlfTm9uZTsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworICAgIHJldHVybiB0aHJlYWRpbmZvOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmggYi9QeXRob24vdGhyZWFkX2N0aHJlYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzZTM5MC4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX2N0aHJlYWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0KLSNpZmRlZiBNQUNIX0NfVEhSRUFEUwotI2luY2x1ZGUgPG1hY2gvY3RocmVhZHMuaD4KLSNlbmRpZgotCi0jaWZkZWYgSFVSRF9DX1RIUkVBRFMKLSNpbmNsdWRlIDxjdGhyZWFkcy5oPgotI2VuZGlmCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQKLVB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotI2lmbmRlZiBIVVJEX0NfVEhSRUFEUwotICAgIC8qIFJvbGFuZCBNY0dyYXRoIHNhaWQgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQgc2luY2UgdGhpcyBpcwotICAgIGRvbmUgd2hpbGUgbGlua2luZyB0byB0aHJlYWRzICovCi0gICAgY3RocmVhZF9pbml0KCk7Ci0jZWxzZQotLyogZG8gbm90aGluZyAqLwotICAgIDsKLSNlbmRpZgotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLWxvbmcKLVB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IDA7ICAgICAgICAgICAgLyogaW5pdCBub3QgbmVlZGVkIHdoZW4gU09MQVJJU19USFJFQURTIGFuZCAqLwotICAgICAgICAgICAgICAgIC8qIENfVEhSRUFEUyBpbXBsZW1lbnRlZCBwcm9wZXJseSAqLwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICAvKiBsb29rcyBsaWtlIHNvbGFyaXMgZGV0YWNoZXMgdGhlIHRocmVhZCB0byBuZXZlciByZWpvaW4KLSAgICAgKiBzbyB3ZWxsIGRvIGl0IGhlcmUKLSAgICAgKi8KLSAgICBjdGhyZWFkX2RldGFjaChjdGhyZWFkX2ZvcmsoKGN0aHJlYWRfZm5fdCkgZnVuYywgYXJnKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3MgPCAwID8gLTEgOiAwOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICByZXR1cm4gKGxvbmcpIGN0aHJlYWRfc2VsZigpOwotfQotCi12b2lkCi1QeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGN0aHJlYWRfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgbXV0ZXhfdCBsb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGxvY2sgPSBtdXRleF9hbGxvYygpOwotICAgIGlmIChtdXRleF9pbml0KGxvY2spKSB7Ci0gICAgICAgIHBlcnJvcigibXV0ZXhfaW5pdCIpOwotICAgICAgICBmcmVlKCh2b2lkICopIGxvY2spOwotICAgICAgICBsb2NrID0gMDsKLSAgICB9Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkCi1QeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbXV0ZXhfZnJlZShsb2NrKTsKLX0KLQotaW50Ci1QeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IEZBTFNFOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBpZiAod2FpdGZsYWcpIHsgICAgICAgICAgICAgLyogYmxvY2tpbmcgKi8KLSAgICAgICAgbXV0ZXhfbG9jaygobXV0ZXhfdClsb2NrKTsKLSAgICAgICAgc3VjY2VzcyA9IFRSVUU7Ci0gICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIG5vbiBibG9ja2luZyAqLwotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfdHJ5X2xvY2soKG11dGV4X3QpbG9jayk7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZAotUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X3VubG9jaygobXV0ZXhfdCApbG9jayk7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX2x3cC5oIGIvUHl0aG9uL3RocmVhZF9sd3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3YjM3YS4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX2x3cC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGx3cC9sd3AuaD4KLSNpbmNsdWRlIDxsd3Avc3RhY2tkZXAuaD4KLQotI2RlZmluZSBTVEFDS1NJWkUgICAgICAgMTAwMCAgICAvKiBzdGFja3NpemUgZm9yIGEgdGhyZWFkICovCi0jZGVmaW5lIE5TVEFDS1MgICAgICAgICAyICAgICAgIC8qICMgc3RhY2tzIHRvIGJlIHB1dCBpbiBjYWNoZSBpbml0aWFsbHkgKi8KLQotc3RydWN0IGxvY2sgewotICAgIGludCBsb2NrX2xvY2tlZDsKLSAgICBjdl90IGxvY2tfY29uZHZhcjsKLSAgICBtb25fdCBsb2NrX21vbml0b3I7Ci19OwotCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgbHdwX3NldHN0a2NhY2hlKFNUQUNLU0laRSwgTlNUQUNLUyk7Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotCi0KLWxvbmcgUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBpbnQgc3VjY2VzczsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHN1Y2Nlc3MgPSBsd3BfY3JlYXRlKCZ0aWQsIGZ1bmMsIE1JTlBSSU8sIDAsIGx3cF9uZXdzdGsoKSwgMSwgYXJnKTsKLSAgICByZXR1cm4gc3VjY2VzcyA8IDAgPyAtMSA6IDA7Ci19Ci0KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGlmIChsd3Bfc2VsZigmdGlkKSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gdGlkLnRocmVhZF9pZDsKLX0KLQotdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGx3cF9kZXN0cm95KFNFTEYpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIHN0cnVjdCBsb2NrICpsb2NrOwotICAgIGV4dGVybiBjaGFyICptYWxsb2Moc2l6ZV90KTsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gKHN0cnVjdCBsb2NrICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGxvY2spKTsKLSAgICBsb2NrLT5sb2NrX2xvY2tlZCA9IDA7Ci0gICAgKHZvaWQpIG1vbl9jcmVhdGUoJmxvY2stPmxvY2tfbW9uaXRvcik7Ci0gICAgKHZvaWQpIGN2X2NyZWF0ZSgmbG9jay0+bG9ja19jb25kdmFyLCBsb2NrLT5sb2NrX21vbml0b3IpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbW9uX2Rlc3Ryb3koKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBmcmVlKChjaGFyICopIGxvY2spOwotfQotCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIHN1Y2Nlc3MgPSAwOwotCi0gICAgKHZvaWQpIG1vbl9lbnRlcigoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgd2hpbGUgKCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkKQotICAgICAgICAgICAgY3Zfd2FpdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIGlmICghKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQpIHsKLSAgICAgICAgc3VjY2VzcyA9IDE7Ci0gICAgICAgICgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkID0gMTsKLSAgICB9Ci0gICAgY3ZfYnJvYWRjYXN0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgbW9uX2V4aXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgICh2b2lkKSBtb25fZW50ZXIoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICAoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCA9IDA7Ci0gICAgY3ZfYnJvYWRjYXN0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgbW9uX2V4aXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbnQuaCBiL1B5dGhvbi90aHJlYWRfbnQuaAppbmRleCBkMWJiMGU1Li45MzhiZjFlIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX250LmgKKysrIGIvUHl0aG9uL3RocmVhZF9udC5oCkBAIC05LDYgKzksMTA5IEBACiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2VuZGlmCiAKKy8qIG9wdGlvbnMgKi8KKyNpZm5kZWYgX1BZX1VTRV9DVl9MT0NLUworI2RlZmluZSBfUFlfVVNFX0NWX0xPQ0tTIDEgICAgIC8qIHVzZSBsb2NrcyBiYXNlZCBvbiBjb25kIHZhcnMgKi8KKyNlbmRpZgorCisvKiBOb3csIGRlZmluZSBhIG5vbi1yZWN1cnNpdmUgbXV0ZXggdXNpbmcgZWl0aGVyIGNvbmRpdGlvbiB2YXJpYWJsZXMKKyAqIGFuZCBjcml0aWNhbCBzZWN0aW9ucyAoZmFzdCkgb3IgdXNpbmcgb3BlcmF0aW5nIHN5c3RlbSBtdXRleGVzCisgKiAoc2xvdykKKyAqLworCisjaWYgX1BZX1VTRV9DVl9MT0NLUworCisjaW5jbHVkZSAiY29uZHZhci5oIgorCit0eXBlZGVmIHN0cnVjdCBfTlJNVVRFWAoreworICAgIFB5TVVURVhfVCBjczsKKyAgICBQeUNPTkRfVCBjdjsKKyAgICBpbnQgbG9ja2VkOworfSBOUk1VVEVYOwordHlwZWRlZiBOUk1VVEVYICpQTlJNVVRFWDsKKworUE5STVVURVgKK0FsbG9jTm9uUmVjdXJzaXZlTXV0ZXgoKQoreworICAgIFBOUk1VVEVYIG0gPSAoUE5STVVURVgpbWFsbG9jKHNpemVvZihOUk1VVEVYKSk7CisgICAgaWYgKCFtKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlDT05EX0lOSVQoJm0tPmN2KSkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1VVEVYX0lOSVQoJm0tPmNzKSkgeworICAgICAgICBQeUNPTkRfRklOSSgmbS0+Y3YpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIG0tPmxvY2tlZCA9IDA7CisgICAgcmV0dXJuIG07CitmYWlsOgorICAgIGZyZWUobSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1ZPSUQKK0ZyZWVOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCkKK3sKKyAgICBpZiAobXV0ZXgpIHsKKyAgICAgICAgUHlDT05EX0ZJTkkoJm11dGV4LT5jdik7CisgICAgICAgIFB5TVVURVhfRklOSSgmbXV0ZXgtPmNzKTsKKyAgICAgICAgZnJlZShtdXRleCk7CisgICAgfQorfQorCitEV09SRAorRW50ZXJOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCwgRFdPUkQgbWlsbGlzZWNvbmRzKQoreworICAgIERXT1JEIHJlc3VsdCA9IFdBSVRfT0JKRUNUXzA7CisgICAgaWYgKFB5TVVURVhfTE9DSygmbXV0ZXgtPmNzKSkKKyAgICAgICAgcmV0dXJuIFdBSVRfRkFJTEVEOworICAgIGlmIChtaWxsaXNlY29uZHMgPT0gSU5GSU5JVEUpIHsKKyAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHMgIT0gMCkgeworICAgICAgICAvKiB3YWl0IGF0IGxlYXN0IHVudGlsIHRoZSB0YXJnZXQgKi8KKyAgICAgICAgRFdPUkQgbm93LCB0YXJnZXQgPSBHZXRUaWNrQ291bnQoKSArIG1pbGxpc2Vjb25kczsKKyAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIG1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vdyA9IEdldFRpY2tDb3VudCgpOworICAgICAgICAgICAgaWYgKHRhcmdldCA8PSBub3cpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtaWxsaXNlY29uZHMgPSB0YXJnZXQtbm93OworICAgICAgICB9CisgICAgfQorICAgIGlmICghbXV0ZXgtPmxvY2tlZCkgeworICAgICAgICBtdXRleC0+bG9ja2VkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gV0FJVF9PQkpFQ1RfMDsKKyAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgICByZXN1bHQgPSBXQUlUX1RJTUVPVVQ7CisgICAgLyogZWxzZSwgaXQgaXMgV0FJVF9GQUlMRUQgKi8KKyAgICBQeU1VVEVYX1VOTE9DSygmbXV0ZXgtPmNzKTsgLyogbXVzdCBpZ25vcmUgcmVzdWx0IGhlcmUgKi8KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitCT09MCitMZWF2ZU5vblJlY3Vyc2l2ZU11dGV4KFBOUk1VVEVYIG11dGV4KQoreworICAgIEJPT0wgcmVzdWx0OworICAgIGlmIChQeU1VVEVYX0xPQ0soJm11dGV4LT5jcykpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBtdXRleC0+bG9ja2VkID0gMDsKKyAgICByZXN1bHQgPSBQeUNPTkRfU0lHTkFMKCZtdXRleC0+Y3YpOworICAgIHJlc3VsdCAmPSBQeU1VVEVYX1VOTE9DSygmbXV0ZXgtPmNzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfSAgICAKKworI2Vsc2UgLyogaWYgISBfUFlfVVNFX0NWX0xPQ0tTICovCisKKy8qIE5SLWxvY2tzIGJhc2VkIG9uIGEga2VybmVsIG11dGV4ICovCiAjZGVmaW5lIFBOUk1VVEVYIEhBTkRMRQogCiBQTlJNVVRFWApAQCAtMzUsNiArMTM4LDcgQEAKIHsKICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShtdXRleCwgMSwgTlVMTCk7CiB9CisjZW5kaWYgLyogX1BZX1VTRV9DVl9MT0NLUyAqLwogCiBsb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRoLmggYi9QeXRob24vdGhyZWFkX3B0aC5oCmluZGV4IDgyYTAwZTcuLjU3MDQyNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRoLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGguaApAQCAtNjksOSArNjksOCBAQAogICAgIHZvbGF0aWxlIHB0aF90IHRocmVhZGlkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgLyogSnVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgZm9yIEFscGhhIE9TRi8xICovCiAgICAgdGhyZWFkaWQgPSBwdGhfc2VsZigpOwotICAgIHJldHVybiAobG9uZykgKihsb25nICopICZ0aHJlYWRpZDsKKyAgICByZXR1cm4gKGxvbmcpIHRocmVhZGlkOwogfQogCiB2b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaCBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCmluZGV4IGRlNDJmMWEuLjQ5NzEzY2UgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCisrKyBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAqIEluaXRpYWxpemF0aW9uLgogICovCiAKLSNpZmRlZiBfSEFWRV9CU0RJCisjaWYgZGVmaW5lZChfSEFWRV9CU0RJKQogc3RhdGljCiB2b2lkIF9ub29wKHZvaWQpCiB7CkBAIC0yNDQsOCArMjQ0LDcgQEAKICAgIGhvc2VkIiBiZWNhdXNlOgogICAgICAtIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGUgcHJvbWlzZSB0aGF0IGEgbm9uLXplcm8gaW50ZWdlciBpcyByZXR1cm5lZC4KICAgICAgLSBUaGUgY2FzdCB0byBsb25nIGlzIGluaGVyZW50bHkgdW5zYWZlLgotICAgICAtIEl0IGlzIG5vdCBjbGVhciB0aGF0IHRoZSAndm9sYXRpbGUnIChmb3IgQUlYPykgYW5kIHVnbHkgY2FzdGluZyBpbiB0aGUKLSAgICAgICBsYXR0ZXIgcmV0dXJuIHN0YXRlbWVudCAoZm9yIEFscGhhIE9TRi8xKSBhcmUgYW55IGxvbmdlciBuZWNlc3NhcnkuCisgICAgIC0gSXQgaXMgbm90IGNsZWFyIHRoYXQgdGhlICd2b2xhdGlsZScgKGZvciBBSVg/KSBhcmUgYW55IGxvbmdlciBuZWNlc3NhcnkuCiAqLwogbG9uZwogUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQpAQCAtMjUzLDEzICsyNTIsOCBAQAogICAgIHZvbGF0aWxlIHB0aHJlYWRfdCB0aHJlYWRpZDsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIC8qIEp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIGZvciBBbHBoYSBPU0YvMSAqLwogICAgIHRocmVhZGlkID0gcHRocmVhZF9zZWxmKCk7Ci0jaWYgU0laRU9GX1BUSFJFQURfVCA8PSBTSVpFT0ZfTE9ORwogICAgIHJldHVybiAobG9uZykgdGhyZWFkaWQ7Ci0jZWxzZQotICAgIHJldHVybiAobG9uZykgKihsb25nICopICZ0aHJlYWRpZDsKLSNlbmRpZgogfQogCiB2b2lkCkBAIC00NTIsMTIgKzQ0NiwxNSBAQAogCiAgICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7CiAKLSAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKLSAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOwotCisgICAgLyogc29tZSBwdGhyZWFkLWxpa2UgaW1wbGVtZW50YXRpb25zIHRpZSB0aGUgbXV0ZXggdG8gdGhlIGNvbmQKKyAgICAgKiBhbmQgbXVzdCBoYXZlIHRoZSBjb25kIGRlc3Ryb3llZCBmaXJzdC4KKyAgICAgKi8KICAgICBzdGF0dXMgPSBwdGhyZWFkX2NvbmRfZGVzdHJveSggJnRoZWxvY2stPmxvY2tfcmVsZWFzZWQgKTsKICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfY29uZF9kZXN0cm95Iik7CiAKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKKyAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOworCiAgICAgZnJlZSgodm9pZCAqKXRoZWxvY2spOwogfQogCkBAIC01NDAsMTIgKzUzNywxMiBAQAogCiAgICAgdGhlbG9jay0+bG9ja2VkID0gMDsKIAotICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmdGhlbG9jay0+bXV0ICk7Ci0gICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X3VubG9ja1szXSIpOwotCiAgICAgLyogd2FrZSB1cCBzb21lb25lIChhbnlvbmUsIGlmIGFueSkgd2FpdGluZyBvbiB0aGUgbG9jayAqLwogICAgIHN0YXR1cyA9IHB0aHJlYWRfY29uZF9zaWduYWwoICZ0aGVsb2NrLT5sb2NrX3JlbGVhc2VkICk7CiAgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX2NvbmRfc2lnbmFsIik7CisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOworICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF91bmxvY2tbM10iKTsKIH0KIAogI2VuZGlmIC8qIFVTRV9TRU1BUEhPUkVTICovCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3NnaS5oIGIvUHl0aG9uL3RocmVhZF9zZ2kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxYWIyYy4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3NnaS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLSNpbmNsdWRlIDx1bG9ja3MuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotCi0jZGVmaW5lIEhEUl9TSVpFICAgICAgICAyNjgwICAgIC8qIHNpemVvZih1c2hkcl90KSAqLwotI2RlZmluZSBNQVhQUk9DICAgICAgICAgMTAwICAgICAvKiBtYXggIyBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHN0YXJ0ZWQgKi8KLQotc3RhdGljIHVzcHRyX3QgKnNoYXJlZF9hcmVuYTsKLXN0YXRpYyB1bG9ja190IGNvdW50X2xvY2s7ICAgICAgLyogcHJvdGVjdGlvbiBmb3Igc29tZSB2YXJpYWJsZXMgKi8KLXN0YXRpYyB1bG9ja190IHdhaXRfbG9jazsgICAgICAgLyogbG9jayB1c2VkIHRvIHdhaXQgZm9yIG90aGVyIHRocmVhZHMgKi8KLXN0YXRpYyBpbnQgd2FpdGluZ19mb3JfdGhyZWFkczsgLyogcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgbnRocmVhZHM7ICAgICAgICAgICAgLyogcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgZXhpdF9zdGF0dXM7Ci1zdGF0aWMgaW50IGV4aXRpbmc7ICAgICAgICAgICAgIC8qIHdlJ3JlIGFscmVhZHkgZXhpdGluZyAoZm9yIG1heWJlX2V4aXQpICovCi1zdGF0aWMgcGlkX3QgbXlfcGlkOyAgICAgICAgICAgIC8qIFBJRCBvZiBtYWluIHRocmVhZCAqLwotc3RhdGljIHN0cnVjdCBwaWRsaXN0IHsKLSAgICBwaWRfdCBwYXJlbnQ7Ci0gICAgcGlkX3QgY2hpbGQ7Ci19IHBpZGxpc3RbTUFYUFJPQ107ICAgICAvKiBQSURzIG9mIG90aGVyIHRocmVhZHM7IHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IG1heHBpZGluZGV4OyAgICAgICAgIC8qICMgb2YgUElEcyBpbiBwaWRsaXN0ICovCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotI2lmZGVmIFVTRV9ETAotICAgIGxvbmcgYWRkciwgc2l6ZTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLQotCi0jaWZkZWYgVVNFX0RMCi0gICAgaWYgKChzaXplID0gdXNjb25maWcoQ09ORl9JTklUU0laRSwgNjQqMTAyNCkpIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKGNoZWNrKSIpOwotICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCBzaXplKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChyZXNldCkiKTsKLSAgICBhZGRyID0gKGxvbmcpIGRsX2dldHJhbmdlKHNpemUgKyBIRFJfU0laRSk7Ci0gICAgZHByaW50ZigoInRyeWluZyB0byB1c2UgYWRkciAlcC0lcCBmb3Igc2hhcmVkIGFyZW5hXG4iLCBhZGRyLCBhZGRyK3NpemUpKTsKLSAgICBlcnJubyA9IDA7Ci0gICAgaWYgKChhZGRyID0gdXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSkgPCAwICYmIGVycm5vICE9IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHNldCkiKTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpZiAodXNjb25maWcoQ09ORl9JTklUVVNFUlMsIDE2KSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRVU0VSUyIpOwotICAgIG15X3BpZCA9IGdldHBpZCgpOyAgICAgICAgICAvKiBzbyB0aGF0IHdlIGtub3cgd2hpY2ggaXMgdGhlIG1haW4gdGhyZWFkICovCi0gICAgaWYgKHVzY29uZmlnKENPTkZfQVJFTkFUWVBFLCBVU19TSEFSRURPTkxZKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FSRU5BVFlQRSIpOwotICAgIHVzY29uZmlnKENPTkZfTE9DS1RZUEUsIFVTX0RFQlVHKTsgLyogWFhYICovCi0jaWZkZWYgUHlfREVCVUcKLSAgICBpZiAodGhyZWFkX2RlYnVnICYgNCkKLSAgICAgICAgdXNjb25maWcoQ09ORl9MT0NLVFlQRSwgVVNfREVCVUdQTFVTKTsKLSAgICBlbHNlIGlmICh0aHJlYWRfZGVidWcgJiAyKQotICAgICAgICB1c2NvbmZpZyhDT05GX0xPQ0tUWVBFLCBVU19ERUJVRyk7Ci0jZW5kaWYgLyogUHlfREVCVUcgKi8KLSAgICBpZiAoKHNoYXJlZF9hcmVuYSA9IHVzaW5pdCh0bXBuYW0oMCkpKSA9PSAwKQotICAgICAgICBwZXJyb3IoInVzaW5pdCIpOwotI2lmZGVmIFVTRV9ETAotICAgIGlmICh1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpIDwgMCkgLyogcmVzZXQgYWRkcmVzcyAqLwotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChyZXNldCkiKTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpZiAoKGNvdW50X2xvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgKHZvaWQpIHVzaW5pdGxvY2soY291bnRfbG9jayk7Ci0gICAgaWYgKCh3YWl0X2xvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2sgKHdhaXRfbG9jaykiKTsKLSAgICBkcHJpbnRmKCgiYXJlbmEgc3RhcnQ6ICVwLCBhcmVuYSBzaXplOiAlbGRcbiIsICBzaGFyZWRfYXJlbmEsIChsb25nKSB1c2NvbmZpZyhDT05GX0dFVFNJWkUsIHNoYXJlZF9hcmVuYSkpKTsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi0KLXN0YXRpYyB2b2lkIGNsZWFuX3RocmVhZHModm9pZCkKLXsKLSAgICBpbnQgaSwgajsKLSAgICBwaWRfdCBteXBpZCwgcGlkOwotCi0gICAgLyogY2xlYW4gdXAgYW55IGV4aXRlZCB0aHJlYWRzICovCi0gICAgbXlwaWQgPSBnZXRwaWQoKTsKLSAgICBpID0gMDsKLSAgICB3aGlsZSAoaSA8IG1heHBpZGluZGV4KSB7Ci0gICAgICAgIGlmIChwaWRsaXN0W2ldLnBhcmVudCA9PSBteXBpZCAmJiAocGlkID0gcGlkbGlzdFtpXS5jaGlsZCkgPiAwKSB7Ci0gICAgICAgICAgICBwaWQgPSB3YWl0cGlkKHBpZCwgMCwgV05PSEFORyk7Ci0gICAgICAgICAgICBpZiAocGlkID4gMCkgewotICAgICAgICAgICAgICAgIC8qIGEgdGhyZWFkIGhhcyBleGl0ZWQgKi8KLSAgICAgICAgICAgICAgICBwaWRsaXN0W2ldID0gcGlkbGlzdFstLW1heHBpZGluZGV4XTsKLSAgICAgICAgICAgICAgICAvKiByZW1vdmUgcmVmZXJlbmNlcyB0byBjaGlsZHJlbiBvZiBkZWFkIHByb2MgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbWF4cGlkaW5kZXg7IGorKykKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBpZGxpc3Rbal0ucGFyZW50ID09IHBpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpZGxpc3Rbal0uY2hpbGQgPSAtMTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogZG9uJ3QgaW5jcmVtZW50IGkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgfQotICAgIC8qIGNsZWFuIHVwIHRoZSBsaXN0ICovCi0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBtYXhwaWRpbmRleCkgewotICAgICAgICBpZiAocGlkbGlzdFtpXS5jaGlsZCA9PSAtMSkgewotICAgICAgICAgICAgcGlkbGlzdFtpXSA9IHBpZGxpc3RbLS1tYXhwaWRpbmRleF07Ci0gICAgICAgICAgICBjb250aW51ZTsgLyogZG9uJ3QgaW5jcmVtZW50IGkgKi8KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgfQotfQotCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSNpZmRlZiBVU0VfREwKLSAgICBsb25nIGFkZHIsIHNpemU7Ci0gICAgc3RhdGljIGludCBsb2NhbF9pbml0aWFsaXplZCA9IDA7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaW50IHN1Y2Nlc3MgPSAwOyAgICAgICAgICAgIC8qIGluaXQgbm90IG5lZWRlZCB3aGVuIFNPTEFSSVNfVEhSRUFEUyBhbmQgKi8KLSAgICAgICAgICAgICAgICAvKiBDX1RIUkVBRFMgaW1wbGVtZW50ZWQgcHJvcGVybHkgKi8KLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgc3dpdGNoICh1c3NldGxvY2soY291bnRfbG9jaykpIHsKLSAgICBjYXNlIDA6IHJldHVybiAwOwotICAgIGNhc2UgLTE6IHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIH0KLSAgICBpZiAobWF4cGlkaW5kZXggPj0gTUFYUFJPQykKLSAgICAgICAgc3VjY2VzcyA9IC0xOwotICAgIGVsc2UgewotI2lmZGVmIFVTRV9ETAotICAgICAgICBpZiAoIWxvY2FsX2luaXRpYWxpemVkKSB7Ci0gICAgICAgICAgICBpZiAoKHNpemUgPSB1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCA2NCoxMDI0KSkgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChjaGVjaykiKTsKLSAgICAgICAgICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCBzaXplKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKHJlc2V0KSIpOwotICAgICAgICAgICAgYWRkciA9IChsb25nKSBkbF9nZXRyYW5nZShzaXplICsgSERSX1NJWkUpOwotICAgICAgICAgICAgZHByaW50ZigoInRyeWluZyB0byB1c2UgYWRkciAlcC0lcCBmb3Igc3Byb2NcbiIsCi0gICAgICAgICAgICAgICAgICAgICBhZGRyLCBhZGRyK3NpemUpKTsKLSAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgIGlmICgoYWRkciA9IHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikpIDwgMCAmJgotICAgICAgICAgICAgICAgIGVycm5vICE9IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAoc2V0KSIpOwotICAgICAgICB9Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgICAgIGNsZWFuX3RocmVhZHMoKTsKLSAgICAgICAgaWYgKChzdWNjZXNzID0gc3Byb2MoZnVuYywgUFJfU0FMTCwgYXJnKSkgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJzcHJvYyIpOwotI2lmZGVmIFVTRV9ETAotICAgICAgICBpZiAoIWxvY2FsX2luaXRpYWxpemVkKSB7Ci0gICAgICAgICAgICBpZiAodXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSA8IDApCi0gICAgICAgICAgICAgICAgLyogcmVzZXQgYWRkcmVzcyAqLwotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHJlc2V0KSIpOwotICAgICAgICAgICAgbG9jYWxfaW5pdGlhbGl6ZWQgPSAxOwotICAgICAgICB9Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgICAgIGlmIChzdWNjZXNzID49IDApIHsKLSAgICAgICAgICAgIG50aHJlYWRzKys7Ci0gICAgICAgICAgICBwaWRsaXN0W21heHBpZGluZGV4XS5wYXJlbnQgPSBnZXRwaWQoKTsKLSAgICAgICAgICAgIHBpZGxpc3RbbWF4cGlkaW5kZXgrK10uY2hpbGQgPSBzdWNjZXNzOwotICAgICAgICAgICAgZHByaW50ZigoInBpZGxpc3RbJWRdID0gJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICBtYXhwaWRpbmRleC0xLCBzdWNjZXNzKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHVzdW5zZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgcmV0dXJuIGdldHBpZCgpOwotfQotCi12b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgaWYgKHVzc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIG50aHJlYWRzLS07Ci0gICAgaWYgKGdldHBpZCgpID09IG15X3BpZCkgewotICAgICAgICAvKiBtYWluIHRocmVhZDsgd2FpdCBmb3Igb3RoZXIgdGhyZWFkcyB0byBleGl0ICovCi0gICAgICAgIGV4aXRpbmcgPSAxOwotICAgICAgICB3YWl0aW5nX2Zvcl90aHJlYWRzID0gMTsKLSAgICAgICAgaWYgKHVzc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIGlmIChudGhyZWFkcyA8IDApIHsKLSAgICAgICAgICAgICAgICBkcHJpbnRmKCgicmVhbGx5IGV4aXQgKCVkKVxuIiwgZXhpdF9zdGF0dXMpKTsKLSAgICAgICAgICAgICAgICBleGl0KGV4aXRfc3RhdHVzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1c3Vuc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAgICAgICAgIGRwcmludGYoKCJ3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzICglZClcbiIsIG50aHJlYWRzKSk7Ci0gICAgICAgICAgICBpZiAodXNzZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgICAgICAgICBpZiAodXNzZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBub3QgdGhlIG1haW4gdGhyZWFkICovCi0gICAgaWYgKHdhaXRpbmdfZm9yX3RocmVhZHMpIHsKLSAgICAgICAgZHByaW50ZigoIm1haW4gdGhyZWFkIGlzIHdhaXRpbmdcbiIpKTsKLSAgICAgICAgaWYgKHVzdW5zZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgIH0KLSAgICBpZiAodXN1bnNldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIF9leGl0KDApOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIHVsb2NrX3QgbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBpZiAoKGxvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2siKTsKLSAgICAodm9pZCkgdXNpbml0bG9jayhsb2NrKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIHVzZnJlZWxvY2soKHVsb2NrX3QpIGxvY2ssIHNoYXJlZF9hcmVuYSk7Ci19Ci0KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgZXJybm8gPSAwOyAgICAgICAgICAgICAgICAgIC8qIGNsZWFyIGl0IGp1c3QgaW4gY2FzZSAqLwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgc3VjY2VzcyA9IHVzc2V0bG9jaygodWxvY2tfdCkgbG9jayk7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gdXNjc2V0bG9jaygodWxvY2tfdCkgbG9jaywgMSk7IC8qIFRyeSBpdCBvbmNlICovCi0gICAgaWYgKHN1Y2Nlc3MgPCAwKQotICAgICAgICBwZXJyb3Iod2FpdGZsYWcgPyAidXNzZXRsb2NrIiA6ICJ1c2NzZXRsb2NrIik7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBpZiAodXN1bnNldGxvY2soKHVsb2NrX3QpIGxvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayIpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmggYi9QeXRob24vdGhyZWFkX3NvbGFyaXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlMWNmYy4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3NvbGFyaXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8L3Vzci9pbmNsdWRlL3RocmVhZC5oPgotI3VuZGVmIF9QT1NJWF9USFJFQURTCi0KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1zdHJ1Y3QgZnVuY19hcmcgewotICAgIHZvaWQgKCpmdW5jKSh2b2lkICopOwotICAgIHZvaWQgKmFyZzsKLX07Ci0KLXN0YXRpYyB2b2lkICoKLW5ld19mdW5jKHZvaWQgKmZ1bmNhcmcpCi17Ci0gICAgdm9pZCAoKmZ1bmMpKHZvaWQgKik7Ci0gICAgdm9pZCAqYXJnOwotCi0gICAgZnVuYyA9ICgoc3RydWN0IGZ1bmNfYXJnICopIGZ1bmNhcmcpLT5mdW5jOwotICAgIGFyZyA9ICgoc3RydWN0IGZ1bmNfYXJnICopIGZ1bmNhcmcpLT5hcmc7Ci0gICAgZnJlZShmdW5jYXJnKTsKLSAgICAoKmZ1bmMpKGFyZyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotbG9uZwotUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBzdHJ1Y3QgZnVuY19hcmcgKmZ1bmNhcmc7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGZ1bmNhcmcgPSAoc3RydWN0IGZ1bmNfYXJnICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGZ1bmNfYXJnKSk7Ci0gICAgZnVuY2FyZy0+ZnVuYyA9IGZ1bmM7Ci0gICAgZnVuY2FyZy0+YXJnID0gYXJnOwotICAgIGlmICh0aHJfY3JlYXRlKDAsIDAsIG5ld19mdW5jLCBmdW5jYXJnLAotICAgICAgICAgICAgICAgICAgIFRIUl9ERVRBQ0hFRCB8IFRIUl9ORVdfTFdQLCAmdGlkKSkgewotICAgICAgICBwZXJyb3IoInRocl9jcmVhdGUiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBmdW5jYXJnKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gdGlkOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICByZXR1cm4gdGhyX3NlbGYoKTsKLX0KLQotdm9pZAotUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICB0aHJfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgbXV0ZXhfdCAqbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gKG11dGV4X3QgKikgbWFsbG9jKHNpemVvZihtdXRleF90KSk7Ci0gICAgaWYgKG11dGV4X2luaXQobG9jaywgVVNZTkNfVEhSRUFELCAwKSkgewotICAgICAgICBwZXJyb3IoIm11dGV4X2luaXQiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLSAgICAgICAgbG9jayA9IDA7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZAotUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X2Rlc3Ryb3koKG11dGV4X3QgKikgbG9jayk7Ci0gICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLX0KLQotaW50Ci1QeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgaWYgKHdhaXRmbGFnKQotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfbG9jaygobXV0ZXhfdCAqKSBsb2NrKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSBtdXRleF90cnlsb2NrKChtdXRleF90ICopIGxvY2spOwotICAgIGlmIChzdWNjZXNzIDwgMCkKLSAgICAgICAgcGVycm9yKHdhaXRmbGFnID8gIm11dGV4X2xvY2siIDogIm11dGV4X3RyeWxvY2siKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSAhc3VjY2VzczsgLyogc29sYXJpcyBkb2VzIGl0IHRoZSBvdGhlciB3YXkgcm91bmQgKi8KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBpZiAobXV0ZXhfdW5sb2NrKChtdXRleF90ICopIGxvY2spKQotICAgICAgICBwZXJyb3IoIm11dGV4X3VubG9jayIpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF93aW5jZS5oIGIvUHl0aG9uL3RocmVhZF93aW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWRkYzAyLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfd2luY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8qIFRoaXMgY29kZSBpbXBsZW1lbnRlZCBieSBNYXJrIEhhbW1vbmQgKE1IYW1tb25kQHNraXBwaW5ldC5jb20uYXUpICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8cHlkZWJ1Zy5oPgotCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7Ci0KLS8qCi0gKiBDaGFuZ2UgYWxsIGhlYWRlcnMgdG8gcHVyZSBBTlNJIGFzIG5vIG9uZSB3aWxsIHVzZSBLJlIgc3R5bGUgb24gYW4KLSAqIE5UCi0gKi8KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHRoZSBDIHBhY2thZ2UsIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICBsb25nIHJ2OwotICAgIGludCBzdWNjZXNzID0gLTE7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIHJ2ID0gX2JlZ2ludGhyZWFkKGZ1bmMsIDAsIGFyZyk7IC8qIHVzZSBkZWZhdWx0IHN0YWNrIHNpemUgKi8KLQotICAgIGlmIChydiAhPSAtMSkgewotICAgICAgICBzdWNjZXNzID0gMDsKLSAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBzdWNjZWVkZWQ6XG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotLyoKLSAqIFJldHVybiB0aGUgdGhyZWFkIElkIGluc3RlYWQgb2YgYW4gaGFuZGxlLiBUaGUgSWQgaXMgc2FpZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUKLSAqIHRocmVhZCBpbiB0aGUgc3lzdGVtCi0gKi8KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZElkKCk7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgX2VuZHRocmVhZCgpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LiBJdCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgdXNpbmcgTXV0ZXhlcywgYXMKLSAqIENFIGRvZXNudCBzdXBwb3J0IHNlbWFwaG9yZXMuICBUaGVyZWZvcmUgd2UgdXNlIHNvbWUgaGFja3MgdG8KLSAqIHNpbXVsYXRlIHRoZSBub24gcmVlbnRyYW50IHJlcXVpcmVtZW50cyBvZiBQeXRob24gbG9ja3MKLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBIQU5ETEUgYUxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBhTG9jayA9IENyZWF0ZUV2ZW50KE5VTEwsICAgICAgICAgICAvKiBTZWN1cml0eSBhdHRyaWJ1dGVzICAgICAgKi8KLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAvKiBNYW51YWwtUmVzZXQgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgIC8qIElzIGluaXRpYWxseSBzaWduYWxsZWQgICovCi0gICAgICAgICAgICBOVUxMKTsgICAgICAgICAgLyogTmFtZSBvZiBldmVudCAgICAgICAgICAgICovCi0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgYUxvY2spKTsKLQotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBhTG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrKQotewotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2spKTsKLQotICAgIENsb3NlSGFuZGxlKGFMb2NrKTsKLX0KLQotLyoKLSAqIFJldHVybiAxIG9uIHN1Y2Nlc3MgaWYgdGhlIGxvY2sgd2FzIGFjcXVpcmVkCi0gKgotICogYW5kIDAgaWYgdGhlIGxvY2sgd2FzIG5vdCBhY3F1aXJlZC4gVGhpcyBtZWFucyBhIDAgaXMgcmV0dXJuZWQKLSAqIGlmIHRoZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgYnkgdGhpcyB0aHJlYWQhCi0gKi8KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSAxOwotICAgIERXT1JEIHdhaXRSZXN1bHQ7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaywgd2FpdGZsYWcpKTsKLQotI2lmbmRlZiBERUJVRwotICAgIHdhaXRSZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGFMb2NrLCAod2FpdGZsYWcgPyBJTkZJTklURSA6IDApKTsKLSNlbHNlCi0gICAgLyogVG8gYWlkIGluIGRlYnVnZ2luZywgd2UgcmVndWxhcmx5IHdha2UgdXAuICBUaGlzIGFsbG93cyB1cyB0bwotICAgIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyICovCi0gICAgd2hpbGUgKFRSVUUpIHsKLSAgICAgICAgd2FpdFJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoYUxvY2ssIHdhaXRmbGFnID8gMzAwMCA6IDApOwotICAgICAgICBpZiAod2FpdGZsYWc9PTAgfHwgKHdhaXRmbGFnICYmIHdhaXRSZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICh3YWl0UmVzdWx0ICE9IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMDsgICAgLyogV2UgZmFpbGVkICovCi0gICAgfQotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLQotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2spCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaykpOwotCi0gICAgaWYgKCFTZXRFdmVudChhTG9jaykpCi0gICAgZHByaW50ZigoIiVsZDogQ291bGQgbm90IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgZXJyb3I6ICVsXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGFMb2NrLCBHZXRMYXN0RXJyb3IoKSkpOwotfQotCi0KZGlmZiAtLWdpdCBhL1B5dGhvbi90cmFjZWJhY2suYyBiL1B5dGhvbi90cmFjZWJhY2suYwppbmRleCA1OWJiM2YwLi5iOTI4OTAyIDEwMDY0NAotLS0gYS9QeXRob24vdHJhY2ViYWNrLmMKKysrIGIvUHl0aG9uL3RyYWNlYmFjay5jCkBAIC0xMyw4ICsxMywxMyBAQAogCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeVRyYWNlYmFja09iamVjdCwgeCkKIAotLyogTWV0aG9kIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCi1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorI2RlZmluZSBNQVhfU1RSSU5HX0xFTkdUSCA1MDAKKyNkZWZpbmUgTUFYX0ZSQU1FX0RFUFRIIDEwMAorI2RlZmluZSBNQVhfTlRIUkVBRFMgMTAwCisKKy8qIEZ1bmN0aW9uIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCitleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0Yl9kaXIoUHlUcmFjZWJhY2tPYmplY3QgKnNlbGYpCkBAIC0xNDcsNiArMTUyLDcgQEAKICAgICBjb25zdCBjaGFyKiBmaWxlcGF0aDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCogcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOwogCiAgICAgZmlsZWJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVieXRlcyA9PSBOVUxMKSB7CkBAIC0xOTQsNyArMjAwLDcgQEAKICAgICAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwogICAgICAgICBzdHJjcHkobmFtZWJ1ZitsZW4sIHRhaWwpOwogCi0gICAgICAgIGJpbmFyeSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgInNzIiwgbmFtZWJ1ZiwgInJiIik7CisgICAgICAgIGJpbmFyeSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJzcyIsIG5hbWVidWYsICJyYiIpOwogICAgICAgICBpZiAoYmluYXJ5ICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGJpbmFyeTsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTIyNCw4ICsyMzAsMTEgQEAKICAgICBQeU9iamVjdCAqbGluZW9iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBjaGFyIGJ1ZltNQVhQQVRITEVOKzFdOwotICAgIFB5X1VOSUNPREUgKnUsICpwOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOwogCiAgICAgLyogb3BlbiB0aGUgZmlsZSAqLwogICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQpAQCAtMjM0LDcgKzI0Myw3IEBACiAgICAgaW8gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJpbyIpOwogICAgIGlmIChpbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgYmluYXJ5ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiT3MiLCBmaWxlbmFtZSwgInJiIik7CisgICAgYmluYXJ5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgIk9zIiwgZmlsZW5hbWUsICJyYiIpOwogCiAgICAgaWYgKGJpbmFyeSA9PSBOVUxMKSB7CiAgICAgICAgIGJpbmFyeSA9IF9QeV9GaW5kU291cmNlRmlsZShmaWxlbmFtZSwgYnVmLCBzaXplb2YoYnVmKSwgaW8pOwpAQCAtMjQ2LDEwICsyNTUsMTAgQEAKIAogICAgIC8qIHVzZSB0aGUgcmlnaHQgZW5jb2RpbmcgdG8gZGVjb2RlIHRoZSBmaWxlIGFzIHVuaWNvZGUgKi8KICAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoYmluYXJ5KTsKLSAgICBmb3VuZF9lbmNvZGluZyA9IFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhmZCk7CisgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShmZCwgZmlsZW5hbWUpOwogICAgIGVuY29kaW5nID0gKGZvdW5kX2VuY29kaW5nICE9IE5VTEwpID8gZm91bmRfZW5jb2RpbmcgOiAidXRmLTgiOwogICAgIGxzZWVrKGZkLCAwLCAwKTsgLyogUmVzZXQgcG9zaXRpb24gKi8KLSAgICBmb2IgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAiVGV4dElPV3JhcHBlciIsICJPcyIsIGJpbmFyeSwgZW5jb2RpbmcpOworICAgIGZvYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPcyIsIGJpbmFyeSwgZW5jb2RpbmcpOwogICAgIFB5X0RFQ1JFRihpbyk7CiAgICAgUHlfREVDUkVGKGJpbmFyeSk7CiAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7CkBAIC0yNjgsNyArMjc3LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm9iLCAiY2xvc2UiLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCAiIik7CiAgICAgaWYgKHJlcykKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgZWxzZQpAQCAtMjgwLDEzICsyODksMTYgQEAKICAgICB9CiAKICAgICAvKiByZW1vdmUgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lICovCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmVvYmopOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShsaW5lb2JqKTsKLSAgICBmb3IgKHA9dTsgKnAgPT0gJyAnIHx8ICpwID09ICdcdCcgfHwgKnAgPT0gJ1wwMTQnOyBwKyspCi0gICAgICAgIGxlbi0tOwotICAgIGlmICh1ICE9IHApIHsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZW9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGxpbmVvYmopOworICAgIGZvciAoaT0wOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaik7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCAhPSAnICcgJiYgY2ggIT0gJ1x0JyAmJiBjaCAhPSAnXDAxNCcpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGkpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZDsKLSAgICAgICAgdHJ1bmNhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIGxlbik7CisgICAgICAgIHRydW5jYXRlZCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZW9iaiwgaSwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaikpOwogICAgICAgICBpZiAodHJ1bmNhdGVkKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7CiAgICAgICAgICAgICBsaW5lb2JqID0gdHJ1bmNhdGVkOwpAQCAtMzMyLDcgKzM0NCwxMCBAQAogICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgIHJldHVybiBlcnI7Ci0gICAgcmV0dXJuIF9QeV9EaXNwbGF5U291cmNlTGluZShmLCBmaWxlbmFtZSwgbGluZW5vLCA0KTsKKyAgICAvKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHdlIGNhbid0IHJlcG9ydCB0aGVtLCBjYW4gd2U/ICovCisgICAgaWYgKF9QeV9EaXNwbGF5U291cmNlTGluZShmLCBmaWxlbmFtZSwgbGluZW5vLCA0KSkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgaW50CkBAIC00MDIsMyArNDE3LDI1MCBAQAogICAgICAgICBlcnIgPSB0Yl9wcmludGludGVybmFsKChQeVRyYWNlYmFja09iamVjdCAqKXYsIGYsIGxpbWl0KTsKICAgICByZXR1cm4gZXJyOwogfQorCisvKiBSZXZlcnNlIGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgImFiY2QiIGJlY29tZXMgImRjYmEiLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorcmV2ZXJzZV9zdHJpbmcoY2hhciAqdGV4dCwgY29uc3Qgc2l6ZV90IGxlbikKK3sKKyAgICBjaGFyIHRtcDsKKyAgICBzaXplX3QgaSwgajsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7CisgICAgICAgIHRtcCA9IHRleHRbaV07CisgICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOworICAgICAgICB0ZXh0W2pdID0gdG1wOworICAgIH0KK30KKworLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDk5OTk5OV0gdG8gZGVjaW1hbCwKKyAgIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBmaWxlIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9kZWNpbWFsKGludCBmZCwgaW50IHZhbHVlKQoreworICAgIGNoYXIgYnVmZmVyWzddOworICAgIGludCBsZW47CisgICAgaWYgKHZhbHVlIDwgMCB8fCA5OTk5OTkgPCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGxlbiA9IDA7CisgICAgZG8geworICAgICAgICBidWZmZXJbbGVuXSA9ICcwJyArICh2YWx1ZSAlIDEwKTsKKyAgICAgICAgdmFsdWUgLz0gMTA7CisgICAgICAgIGxlbisrOworICAgIH0gd2hpbGUgKHZhbHVlKTsKKyAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7CisgICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKK30KKworLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDB4ZmZmZmZmZmZdIHRvIGhleGRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCisgICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfaGV4YWRlY2ltYWwoaW50IHdpZHRoLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBpbnQgZmQpCit7CisgICAgaW50IGxlbjsKKyAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV07CisgICAgbGVuID0gMDsKKyAgICBkbyB7CisgICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICB2YWx1ZSA+Pj0gNDsKKyAgICAgICAgbGVuKys7CisgICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOworICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKKyAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworfQorCisvKiBXcml0ZSBhbiB1bmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGZkIHVzaW5nIGFzY2lpK2JhY2tzbGFzaHJlcGxhY2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2FzY2lpKGludCBmZCwgUHlPYmplY3QgKnRleHQpCit7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXRleHQ7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIGludCB0cnVuY2F0ZWQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YSA9IE5VTEw7CisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisgICAgUHlfVUNTNCBjaDsKKworICAgIHNpemUgPSBhc2NpaS0+bGVuZ3RoOworICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKKyAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkKKyAgICAgICAgICAgIGRhdGEgPSAoKFB5QVNDSUlPYmplY3QqKXRleHQpICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopdGV4dCkgKyAxOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIGRhdGEgPSAoKFB5VW5pY29kZU9iamVjdCAqKXRleHQpLT5kYXRhLmFueTsKKyAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKKyAgICB9CisKKyAgICBpZiAoTUFYX1NUUklOR19MRU5HVEggPCBzaXplKSB7CisgICAgICAgIHNpemUgPSBNQVhfU1RSSU5HX0xFTkdUSDsKKyAgICAgICAgdHJ1bmNhdGVkID0gMTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICB0cnVuY2F0ZWQgPSAwOworCisgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjaCA9IHdzdHJbaV07CisgICAgICAgIGlmIChjaCA8IDEyOCkgeworICAgICAgICAgICAgY2hhciBjID0gKGNoYXIpY2g7CisgICAgICAgICAgICB3cml0ZShmZCwgJmMsIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZikgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxceCIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCgyLCBjaCwgZmQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZmZmKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDQsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFxVIik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDgsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHRydW5jYXRlZCkKKyAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworfQorCisvKiBXcml0ZSBhIGZyYW1lIGludG8gdGhlIGZpbGUgZmQ6ICJGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiB4eHgiLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9mcmFtZShpbnQgZmQsIFB5RnJhbWVPYmplY3QgKmZyYW1lKQoreworICAgIFB5Q29kZU9iamVjdCAqY29kZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgY29kZSA9IGZyYW1lLT5mX2NvZGU7CisgICAgUFVUUyhmZCwgIiAgRmlsZSAiKTsKKyAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX2ZpbGVuYW1lICE9IE5VTEwKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX2ZpbGVuYW1lKSkKKyAgICB7CisgICAgICAgIHdyaXRlKGZkLCAiXCIiLCAxKTsKKyAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KKworICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKKyAgICBQVVRTKGZkLCAiLCBsaW5lICIpOworICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBQVVRTKGZkLCAiIGluICIpOworCisgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQorICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKKyAgICBlbHNlCisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKworICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKK30KKworc3RhdGljIHZvaWQKK2R1bXBfdHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBpbnQgd3JpdGVfaGVhZGVyKQoreworICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lOworICAgIHVuc2lnbmVkIGludCBkZXB0aDsKKworICAgIGlmICh3cml0ZV9oZWFkZXIpCisgICAgICAgIFBVVFMoZmQsICJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CisKKyAgICBmcmFtZSA9IF9QeVRocmVhZFN0YXRlX0dldEZyYW1lKHRzdGF0ZSk7CisgICAgaWYgKGZyYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIGRlcHRoID0gMDsKKyAgICB3aGlsZSAoZnJhbWUgIT0gTlVMTCkgeworICAgICAgICBpZiAoTUFYX0ZSQU1FX0RFUFRIIDw9IGRlcHRoKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiICAuLi5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZyYW1lX0NoZWNrKGZyYW1lKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkdW1wX2ZyYW1lKGZkLCBmcmFtZSk7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPmZfYmFjazsKKyAgICAgICAgZGVwdGgrKzsKKyAgICB9Cit9CisKK3ZvaWQKK19QeV9EdW1wVHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQoreworICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDEpOworfQorCisvKiBXcml0ZSB0aGUgdGhyZWFkIGlkZW50aWZpZXIgaW50byB0aGUgZmlsZSAnZmQnOiAiQ3VycmVudCB0aHJlYWQgMHhISEhIOlwiIGlmCisgICBpc19jdXJyZW50IGlzIHRydWUsICJUaHJlYWQgMHhISEhIOlxuIiBvdGhlcndpc2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCit3cml0ZV90aHJlYWRfaWQoaW50IGZkLCBQeVRocmVhZFN0YXRlICp0c3RhdGUsIGludCBpc19jdXJyZW50KQoreworICAgIGlmIChpc19jdXJyZW50KQorICAgICAgICBQVVRTKGZkLCAiQ3VycmVudCB0aHJlYWQgMHgiKTsKKyAgICBlbHNlCisgICAgICAgIFBVVFMoZmQsICJUaHJlYWQgMHgiKTsKKyAgICBkdW1wX2hleGFkZWNpbWFsKHNpemVvZihsb25nKSoyLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgZmQpOworICAgIFBVVFMoZmQsICI6XG4iKTsKK30KKworY29uc3QgY2hhcioKK19QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICB1bnNpZ25lZCBpbnQgbnRocmVhZHM7CisKKyAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQgKi8KKyAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSB0aHJlYWQgaGVhZCBzdGF0ZSI7CisKKyAgICAvKiBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgZWFjaCB0aHJlYWQgKi8KKyAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOworICAgIG50aHJlYWRzID0gMDsKKyAgICBkbworICAgIHsKKyAgICAgICAgaWYgKG50aHJlYWRzICE9IDApCisgICAgICAgICAgICB3cml0ZShmZCwgIlxuIiwgMSk7CisgICAgICAgIGlmIChudGhyZWFkcyA+PSBNQVhfTlRIUkVBRFMpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICIuLi5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RocmVhZCk7CisgICAgICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDApOworICAgICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05leHQodHN0YXRlKTsKKyAgICAgICAgbnRocmVhZHMrKzsKKyAgICB9IHdoaWxlICh0c3RhdGUgIT0gTlVMTCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGIxMzgwNmIuLjYwNDBlOGYgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsOCArMSw4IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuMi4zCitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuMy4wCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorMjAxMiwgMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFB5dGhvbiAzLnggaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgbGFuZ3VhZ2UsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSAyLngKIGxpbmUgb2YgcmVsZWFzZXMuICBUaGUgbGFuZ3VhZ2UgaXMgbW9zdGx5IHRoZSBzYW1lLCBidXQgbWFueSBkZXRhaWxzLCBlc3BlY2lhbGx5CkBAIC0xNSw2ICsxNSw4IEBACiAKIE9uIFVuaXgsIExpbnV4LCBCU0QsIE9TWCwgYW5kIEN5Z3dpbjoKIAorTmV3IHRleHQKKwogICAgIC4vY29uZmlndXJlCiAgICAgbWFrZQogICAgIG1ha2UgdGVzdApAQCAtNTAsOSArNTIsOSBAQAogLS0tLS0tLS0tLQogCiBXZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy4yIiBkb2N1bWVudCwgZm91bmQgYXQKK1B5dGhvbiAzLjMiIGRvY3VtZW50LCBmb3VuZCBhdAogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvd2hhdHNuZXcvMy4yLmh0bWwKKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy93aGF0c25ldy8zLjMuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sIGlzCiBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNyByZWxlYXNlIHVuZGVyCkBAIC02NSw5ICs2Nyw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjIgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuMyBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC04NSwxOCArODcsMTYgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCiBUZXN0aW5nCiAtLS0tLS0tCiAKLVRvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgVGhpcyBydW5zCi10aGUgdGVzdCBzZXQgdHdpY2UgKG9uY2Ugd2l0aCBubyBjb21waWxlZCBmaWxlcywgb25jZSB3aXRoIHRoZSBjb21waWxlZCBmaWxlcwotbGVmdCBieSB0aGUgcHJldmlvdXMgdGVzdCBydW4pLiAgVGhlIHRlc3Qgc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbgotZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMgYWJvdXQgc2tpcHBlZCB0ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2gKLWNhbid0IGJlIGltcG9ydGVkLiAgSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQgYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjawotb3IgY29yZSBkdW1wIGlzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCitUbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoZSB0ZXN0CitzZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuIGdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzIGFib3V0IHNraXBwZWQKK3Rlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaCBjYW4ndCBiZSBpbXBvcnRlZC4gIElmIGEgbWVzc2FnZSBpcyBwcmludGVkCithYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrIG9yIGNvcmUgZHVtcCBpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgogCiBCeSBkZWZhdWx0LCB0ZXN0cyBhcmUgcHJldmVudGVkIGZyb20gb3ZlcnVzaW5nIHJlc291cmNlcyBsaWtlIGRpc2sgc3BhY2UgYW5kCiBtZW1vcnkuICBUbyBlbmFibGUgdGhlc2UgdGVzdHMsIHJ1biAibWFrZSB0ZXN0YWxsIi4KQEAgLTEyNSw4ICsxMjUsOCBAQAogSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZwogIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjUsIDIuNiBhbmQgMy4yIHdpdGggMi42IGJlaW5nIHRoZQotcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNiBidWlsZCBkaXJlY3RvcnkKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy4zIHdpdGggMi43IGJlaW5nIHRoZQorcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNyBidWlsZCBkaXJlY3RvcnkKIGFuZCAibWFrZSBhbHRpbnN0YWxsIiBpbiB0aGUgb3RoZXJzLgogCiAKQEAgLTE2MSw3ICsxNjEsNyBAQAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDM5MiBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTIvCitTZWUgUEVQIDM5OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTgvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9SRUFETUUgYi9Ub29scy9SRUFETUUKaW5kZXggYzFmODliYS4uMGQ5NjFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvUkVBRE1FCisrKyBiL1Rvb2xzL1JFQURNRQpAQCAtMyw3ICszLDcgQEAKIAogYnVpbGRib3QgICAgICAgIEJhdGNoZmlsZXMgZm9yIHJ1bm5pbmcgb24gV2luZG93cyBidWlsZHNsYXZlcy4KIAotY2NiZW5jaCAgICAgICAgIEEgUHl0aG9uIGNvbmN1cnJlbmN5IGJlbmNobWFyay4KK2NjYmVuY2ggICAgICAgICBBIFB5dGhvbiB0aHJlYWRzLWJhc2VkIGNvbmN1cnJlbmN5IGJlbmNobWFyay4gKCopCiAKIGRlbW8gICAgICAgICAgICBTZXZlcmFsIFB5dGhvbiBwcm9ncmFtbWluZyBkZW1vcy4KIApAQCAtMTcsMTMgKzE3LDEzIEBACiAgICAgICAgICAgICAgICAgYW5kIG1zZ2ZtdC5weSBnZW5lcmF0ZXMgYSBiaW5hcnkgbWVzc2FnZSBjYXRhbG9nCiAgICAgICAgICAgICAgICAgZnJvbSBhIGNhdGFsb2cgaW4gdGV4dCBmb3JtYXQuCiAKLWlvYmVuY2ggICAgICAgICBCZW5jaG1hcmsgZm9yIHRoZSBuZXcgUHl0aG9uIEkvTyBzeXN0ZW0uCitpb2JlbmNoICAgICAgICAgQmVuY2htYXJrIGZvciB0aGUgbmV3IFB5dGhvbiBJL08gc3lzdGVtLiAoKikKIAogbXNpICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHBhY2thZ2luZyBQeXRob24gYXMgYW4gTVNJIHBhY2thZ2Ugb24gV2luZG93cy4KIAogcGFyc2VyICAgICAgICAgIFVuLXBhcnNpbmcgdG9vbCB0byBnZW5lcmF0ZSBjb2RlIGZyb20gYW4gQVNULgogCi1weWJlbmNoICAgICAgICAgQ29tcHJlaGVuc2l2ZSBQeXRob24gYmVuY2htYXJraW5nIHN1aXRlLgorcHliZW5jaCAgICAgICAgIExvdy1sZXZlbCBiZW5jaG1hcmtpbmcgZm9yIHRoZSBQeXRob24gZXZhbHVhdGlvbiBsb29wLiAoKikKIAogcHluY2hlICAgICAgICAgIEEgVGtpbnRlci1iYXNlZCBjb2xvciBlZGl0b3IuCiAKQEAgLTMyLDYgKzMyLDkgQEAKICAgICAgICAgICAgICAgICB0YWJzIGFuZCBzcGFjZXMsIGFuZCAydG8zLCB3aGljaCBjb252ZXJ0cyBQeXRob24gMiBjb2RlCiAgICAgICAgICAgICAgICAgdG8gUHl0aG9uIDMgY29kZS4KIAorc3RyaW5nYmVuY2ggICAgIEEgc3VpdGUgb2YgbWljcm8tYmVuY2htYXJrcyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIG9uCisgICAgICAgICAgICAgICAgc3RyaW5ncyAoYm90aCA4LWJpdCBhbmQgdW5pY29kZSkuICgqKQorCiB0ZXN0MnRvMyAgICAgICAgQSBkZW1vbnN0cmF0aW9uIG9mIGhvdyB0byB1c2UgMnRvMyB0cmFuc3BhcmVudGx5IGluIHNldHVwLnB5LgogCiB1bmljb2RlICAgICAgICAgVG9vbHMgZm9yIGdlbmVyYXRpbmcgdW5pY29kZWRhdGEgYW5kIGNvZGVjcyBmcm9tIHVuaWNvZGUub3JnCkBAIC00MCwzICs0Myw2IEBACiAKIHVuaXR0ZXN0Z3VpICAgICBBIFRraW50ZXIgYmFzZWQgR1VJIHRlc3QgcnVubmVyIGZvciB1bml0dGVzdCwgd2l0aCB0ZXN0CiAgICAgICAgICAgICAgICAgZGlzY292ZXJ5LgorCisKKygqKSBBIGdlbmVyaWMgYmVuY2htYXJrIHN1aXRlIGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBhdCBodHRwOi8vaGcucHl0aG9uLm9yZy9iZW5jaG1hcmtzLwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmluZGV4IDg3MTNiMzguLjdlZTdiMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKQEAgLTEsNyArMSw3IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLgotc2V0IEhPU1RfUFlUSE9OPSIlQ0QlXFBDYnVpbGRcYW1kNjRccHl0aG9uX2QuZXhlIgogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLWFtZDY0LmJhdAotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxjbGVhbi1hbWQ2NC5iYXQKLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjcHJvaiAiRGVidWd8eDY0IiAmJiBQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gIkRlYnVnfHg2NCIKK21zYnVpbGQgUENidWlsZFxraWxsX3B5dGhvbi52Y3hwcm9qIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CitQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCittc2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT14NjQKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdAppbmRleCBhYjNlYTdkLi5jOTNjZmQ1IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CkBAIC0xLDcgKzEsOCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4KIGNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcY2xlYW4uYmF0Ci12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxraWxsX3B5dGhvbi52Y3Byb2ogIkRlYnVnfFdpbjMyIiAmJiBQQ2J1aWxkXGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxwY2J1aWxkLnNsbiAiRGVidWd8V2luMzIiCittc2J1aWxkIFBDYnVpbGRca2lsbF9weXRob24udmN4cHJvaiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg4NgorUENidWlsZFxraWxsX3B5dGhvbl9kLmV4ZQorbXNidWlsZCBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09V2luMzIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CmluZGV4IDQ0MzBjYjguLmFlOTNlNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIAogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLmJhdAogQHJlbSBidWlsZCByZWxlYXNlIHZlcnNpb25zIG9mIHRoaW5ncwotY2FsbCAiJVZTOTBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKIAogQHJlbSBidWlsZCBQeXRob24KLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXHBjYnVpbGQuc2xuICJSZWxlYXNlfFdpbjMyIgorbXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMgogCiBAcmVtIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCiBiYXNoLmV4ZSAtYyAnY2QgRG9jO21ha2UgUFlUSE9OPXB5dGhvbjIuNSB1cGRhdGUgaHRtbGhlbHAnCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKaW5kZXggNzE1ODA1YS4uMjQ2NjBhZiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApAQCAtMSwxMCArMSwxMCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY2xlYW4iIHN0ZXAuCi1jYWxsICIlVlM5MENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAogQGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgogZGVsIC9zIExpYlwqLnB5YyBMaWJcKi5weW8KIEBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLgogcm1kaXIgL3MgL3EgYnVpbGQKIGNkIFBDYnVpbGQKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJSZWxlYXNlfHg2NCIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3x4NjQiCittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CiBjZCAuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBjMDRiOGUuLjIxOGZhY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTEsOCArMSw4IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBAZWNobyBEZWxldGluZyB0ZXN0IGxlZnRvdmVycyAuLi4KIHJtZGlyIC9zIC9xIGJ1aWxkCiBjZCBQQ2J1aWxkCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiUmVsZWFzZXxXaW4zMiIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3xXaW4zMiIKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDg2Cittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14ODYKIGNkIC4uCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKaW5kZXggOTU0MjM4ZS4uZDJmZjI1NSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdApAQCAtMiwyMCArMiwyMCBAQAogCiBAcmVtIEFzc3VtZSB3ZSBzdGFydCBpbnNpZGUgdGhlIFB5dGhvbiBzb3VyY2UgZGlyZWN0b3J5CiBjYWxsICJUb29sc1xidWlsZGJvdFxleHRlcm5hbC1jb21tb24uYmF0IgotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRjbDg1Zy5kbGwgKAotICAgIGNkIHRjbC04LjUuOS4wXHdpbgorICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IGNsZWFuIGFsbAogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0azY0XGJpblx0azg1Zy5kbGwgKAotICAgIGNkIHRrLTguNS45LjBcd2luICAgIAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBhbGwKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgaW5zdGFsbAorICAgIGNkIHRrLTguNS4xMS4wXHdpbiAgICAKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBhbGwKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdAppbmRleCAyMTY1YjhhLi40ZTlmZTQxIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQKQEAgLTE0LDggKzE0LDggQEAKIEByZW0gaWYgZXhpc3QgdGs4LjQuMTYgcmQgL3MvcSB0azguNC4xNgogQHJlbSBpZiBleGlzdCB0ay04LjQuMTguMSByZCAvcy9xIHRrLTguNC4xOC4xCiBAcmVtIGlmIGV4aXN0IGRiLTQuNC4yMCByZCAvcy9xIGRiLTQuNC4yMAotQHJlbSBpZiBleGlzdCBvcGVuc3NsLTEuMC4waiByZCAvcy9xIG9wZW5zc2wtMS4wLjBqCi1AcmVtIGlmIGV4aXN0IHNxbGl0ZS0zLjcuNCByZCAvcy9xIHNxbGl0ZS0zLjcuNCAgICAKK0ByZW0gaWYgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgcmQgL3MvcSBvcGVuc3NsLTEuMC4xYworQHJlbSBpZiBleGlzdCBzcWxpdGUtMy43LjEyIHJkIC9zL3Egc3FsaXRlLTMuNy4xMiAgICAKIAogQHJlbSBiemlwCiBpZiBub3QgZXhpc3QgYnppcDItMS4wLjYgKApAQCAtMjQsMTcgKzI0LDI1IEBACiApCiAKIEByZW0gT3BlblNTTAotaWYgbm90IGV4aXN0IG9wZW5zc2wtMS4wLjBqIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjBqCitpZiBub3QgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgKAorICAgIHJkIC9zL3Egb3BlbnNzbC0xLjAuMGoKKyAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4xYworKQogCiBAcmVtIHRjbC90awotaWYgbm90IGV4aXN0IHRjbC04LjUuOS4wICgKK2lmIG5vdCBleGlzdCB0Y2wtOC41LjExLjAgKAogICAgcmQgL3MvcSB0Y2x0ayB0Y2x0azY0Ci0gICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90Y2wtOC41LjkuMAorICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGNsLTguNS4xMS4wCiApCi1pZiBub3QgZXhpc3QgdGstOC41LjkuMCBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90ay04LjUuOS4wCitpZiBub3QgZXhpc3QgdGstOC41LjExLjAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGstOC41LjExLjAKIAogQHJlbSBzcWxpdGUzCi1pZiBub3QgZXhpc3Qgc3FsaXRlLTMuNy40ICgKLSAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNi4yMQotICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9zcWxpdGUtMy43LjQKK2lmIG5vdCBleGlzdCBzcWxpdGUtMy43LjEyICgKKyAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNy40CisgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3NxbGl0ZS0zLjcuMTIKKykKKworQHJlbSBsem1hCitpZiBub3QgZXhpc3QgeHotNS4wLjMgKAorICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC94ei01LjAuMwogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmluZGV4IGU5NThmZDYuLmVkNWMxMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKQEAgLTIsMjAgKzIsMjAgQEAKIAogQHJlbSBBc3N1bWUgd2Ugc3RhcnQgaW5zaWRlIHRoZSBQeXRob24gc291cmNlIGRpcmVjdG9yeQogY2FsbCAiVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwtY29tbW9uLmJhdCIKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVx2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXHZzdmFyczMyLmJhdCIKIAogaWYgbm90IGV4aXN0IHRjbHRrXGJpblx0Y2w4NWcuZGxsICgKICAgICBAcmVtIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwKLSAgICBjZCB0Y2wtOC41LjkuMFx3aW4KKyAgICBjZCB0Y2wtOC41LjExLjBcd2luCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGNsZWFuIGFsbCAKICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0a1xiaW5cdGs4NWcuZGxsICgKLSAgICBjZCB0ay04LjUuOS4wXHdpbiAgICAKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGluc3RhbGwKKyAgICBjZCB0ay04LjUuMTEuMFx3aW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgYWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5IGIvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5CmluZGV4IDlmNzExOGYuLjYwY2VjM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weQorKysgYi9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC00MzUsNzAgKzQzNCw3MCBAQAogZGVmIHJ1bl9iYW5kd2lkdGhfdGVzdChmdW5jLCBhcmdzLCBudGhyZWFkcyk6CiAgICAgIyBDcmVhdGUgYSBsaXN0ZW5pbmcgc29ja2V0IHRvIHJlY2VpdmUgdGhlIHBhY2tldHMuIFdlIHVzZSBVRFAgd2hpY2ggc2hvdWxkCiAgICAgIyBiZSBwYWlubGVzc2x5IGNyb3NzLXBsYXRmb3JtLgotICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKLSAgICBzb2NrLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKLSAgICBhZGRyID0gc29jay5nZXRzb2NrbmFtZSgpCisgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkgYXMgc29jazoKKyAgICAgICAgc29jay5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgIGFkZHIgPSBzb2NrLmdldHNvY2tuYW1lKCkKIAotICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCi0gICAgcGFja2V0X3NpemUgPSBCQU5EV0lEVEhfUEFDS0VUX1NJWkUKLQotICAgIHJlc3VsdHMgPSBbXQotICAgIHRocmVhZHMgPSBbXQotICAgIGVuZF9ldmVudCA9IFtdCi0gICAgc3RhcnRfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgIHN0YXJ0ZWQgPSBGYWxzZQotICAgIGlmIG50aHJlYWRzID4gMDoKLSAgICAgICAgIyBXYXJtIHVwCi0gICAgICAgIGZ1bmMoKmFyZ3MpCisgICAgICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCisgICAgICAgIHBhY2tldF9zaXplID0gQkFORFdJRFRIX1BBQ0tFVF9TSVpFCiAKICAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGxvb3AgPSBUaW1lZExvb3AoZnVuYywgYXJncykKLSAgICAgICAgcmVhZHkgPSBbXQotICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHRocmVhZHMgPSBbXQorICAgICAgICBlbmRfZXZlbnQgPSBbXQorICAgICAgICBzdGFydF9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXJ0ZWQgPSBGYWxzZQorICAgICAgICBpZiBudGhyZWFkcyA+IDA6CisgICAgICAgICAgICAjIFdhcm0gdXAKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAKLSAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgICAgICBsb29wID0gVGltZWRMb29wKGZ1bmMsIGFyZ3MpCisgICAgICAgICAgICByZWFkeSA9IFtdCisgICAgICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisKKyAgICAgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgICAgICB3aXRoIHJlYWR5X2NvbmQ6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZChOb25lKQorICAgICAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCisgICAgICAgICAgICAgICAgd2l0aCBzdGFydF9jb25kOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCisgICAgICAgICAgICAgICAgbG9vcChzdGFydF90aW1lLCBkdXJhdGlvbiAqIDEuNSwgZW5kX2V2ZW50LCBkb195aWVsZD1GYWxzZSkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnRocmVhZHMpOgorICAgICAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bikpCisgICAgICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKICAgICAgICAgICAgIHdpdGggcmVhZHlfY29uZDoKLSAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbm90IHN0YXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCi0gICAgICAgICAgICBsb29wKHN0YXJ0X3RpbWUsIGR1cmF0aW9uICogMS41LCBlbmRfZXZlbnQsIGRvX3lpZWxkPUZhbHNlKQorICAgICAgICAgICAgICAgIHdoaWxlIGxlbihyZWFkeSkgPCBudGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfY29uZC53YWl0KCkKIAotICAgICAgICBmb3IgaSBpbiByYW5nZShudGhyZWFkcyk6Ci0gICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW4pKQotICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgotICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKLSAgICAgICAgd2l0aCByZWFkeV9jb25kOgotICAgICAgICAgICAgd2hpbGUgbGVuKHJlYWR5KSA8IG50aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQud2FpdCgpCi0KLSAgICAjIFJ1biB0aGUgY2xpZW50IGFuZCB3YWl0IGZvciB0aGUgZmlyc3QgcGFja2V0IHRvIGFycml2ZSBiZWZvcmUKLSAgICAjIHVuYmxvY2tpbmcgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLSAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZT1wYWNrZXRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249ZHVyYXRpb24pCi0gICAgX3RpbWUgPSB0aW1lLnRpbWUKLSAgICAjIFRoaXMgd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBwYXJlbnQgdG8gYmUgcmVhZHkKLSAgICBzID0gX3JlY3Yoc29jaywgcGFja2V0X3NpemUpCi0gICAgcmVtb3RlX2FkZHIgPSBldmFsKHMucGFydGl0aW9uKCcjJylbMF0pCi0KLSAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCi0gICAgICAgIHN0YXJ0ZWQgPSBUcnVlCi0gICAgICAgIHN0YXJ0X2NvbmQubm90aWZ5KG50aHJlYWRzKQotCi0gICAgbiA9IDAKLSAgICBmaXJzdF90aW1lID0gTm9uZQotICAgIHdoaWxlIG5vdCBlbmRfZXZlbnQgYW5kIEJXX0VORCBub3QgaW4gczoKLSAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgIyBSdW4gdGhlIGNsaWVudCBhbmQgd2FpdCBmb3IgdGhlIGZpcnN0IHBhY2tldCB0byBhcnJpdmUgYmVmb3JlCisgICAgICAgICMgdW5ibG9ja2luZyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemU9cGFja2V0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1kdXJhdGlvbikKKyAgICAgICAgX3RpbWUgPSB0aW1lLnRpbWUKKyAgICAgICAgIyBUaGlzIHdpbGwgYWxzbyB3YWl0IGZvciB0aGUgcGFyZW50IHRvIGJlIHJlYWR5CiAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKLSAgICAgICAgaWYgZmlyc3RfdGltZSBpcyBOb25lOgotICAgICAgICAgICAgZmlyc3RfdGltZSA9IF90aW1lKCkKLSAgICAgICAgbiArPSAxCi0gICAgZW5kX3RpbWUgPSBfdGltZSgpCisgICAgICAgIHJlbW90ZV9hZGRyID0gZXZhbChzLnBhcnRpdGlvbignIycpWzBdKQorCisgICAgICAgIHdpdGggc3RhcnRfY29uZDoKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCisgICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgc3RhcnRfY29uZC5ub3RpZnkobnRocmVhZHMpCisKKyAgICAgICAgbiA9IDAKKyAgICAgICAgZmlyc3RfdGltZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgbm90IGVuZF9ldmVudCBhbmQgQldfRU5EIG5vdCBpbiBzOgorICAgICAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKKyAgICAgICAgICAgIGlmIGZpcnN0X3RpbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaXJzdF90aW1lID0gX3RpbWUoKQorICAgICAgICAgICAgbiArPSAxCisgICAgICAgIGVuZF90aW1lID0gX3RpbWUoKQogCiAgICAgZW5kX2V2ZW50LmFwcGVuZChOb25lKQogICAgIGZvciB0IGluIHRocmVhZHM6CmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL2xpZmUucHkgYi9Ub29scy9kZW1vL2xpZmUucHkKaW5kZXggZGZiOWFiOC4uZmM0Y2I0OSAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9saWZlLnB5CisrKyBiL1Rvb2xzL2RlbW8vbGlmZS5weQpAQCAtNDYsMzggKzQ2LDM4IEBACiAgICAgICAgIHNlbGYuc3RhdGUgPSB7fQogICAgICAgICBzZWxmLnNjciA9IHNjcgogICAgICAgICBZLCBYID0gc2VsZi5zY3IuZ2V0bWF4eXgoKQotICAgICAgICBzZWxmLlgsIHNlbGYuWSA9IFgtMiwgWS0yLTEKKyAgICAgICAgc2VsZi5YLCBzZWxmLlkgPSBYIC0gMiwgWSAtIDIgLSAxCiAgICAgICAgIHNlbGYuY2hhciA9IGNoYXIKICAgICAgICAgc2VsZi5zY3IuY2xlYXIoKQogCiAgICAgICAgICMgRHJhdyBhIGJvcmRlciBhcm91bmQgdGhlIGJvYXJkCi0gICAgICAgIGJvcmRlcl9saW5lID0gJysnKyhzZWxmLlgqJy0nKSsnKycKKyAgICAgICAgYm9yZGVyX2xpbmUgPSAnKycgKyAoc2VsZi5YICogJy0nKSArICcrJwogICAgICAgICBzZWxmLnNjci5hZGRzdHIoMCwgMCwgYm9yZGVyX2xpbmUpCi0gICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkrMSwgMCwgYm9yZGVyX2xpbmUpCisgICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkgKyAxLCAwLCBib3JkZXJfbGluZSkKICAgICAgICAgZm9yIHkgaW4gcmFuZ2UoMCwgc2VsZi5ZKToKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIDAsICd8JykKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIHNlbGYuWCsxLCAnfCcpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSArIHksIDAsICd8JykKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxICsgeSwgc2VsZi5YICsgMSwgJ3wnKQogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKIAogICAgIGRlZiBzZXQoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlNldCBhIGNlbGwgdG8gdGhlIGxpdmUgc3RhdGUiIiIKLSAgICAgICAgaWYgeDwwIG9yIHNlbGYuWDw9eCBvciB5PDAgb3Igc2VsZi5ZPD15OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiUgKHksIHgpKQotICAgICAgICBzZWxmLnN0YXRlW3gseV0gPSAxCisgICAgICAgIGlmIHggPCAwIG9yIHNlbGYuWCA8PSB4IG9yIHkgPCAwIG9yIHNlbGYuWSA8PSB5OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiAlICh5LCB4KSkKKyAgICAgICAgc2VsZi5zdGF0ZVt4LCB5XSA9IDEKIAogICAgIGRlZiB0b2dnbGUoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlRvZ2dsZSBhIGNlbGwncyBzdGF0ZSBiZXR3ZWVuIGxpdmUgYW5kIGRlYWQiIiIKICAgICAgICAgaWYgeCA8IDAgb3Igc2VsZi5YIDw9IHggb3IgeSA8IDAgb3Igc2VsZi5ZIDw9IHk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiJSAoeSwgeCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiICUgKHksIHgpKQogICAgICAgICBpZiAoeCwgeSkgaW4gc2VsZi5zdGF0ZToKICAgICAgICAgICAgIGRlbCBzZWxmLnN0YXRlW3gsIHldCi0gICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5KzEsIHgrMSwgJyAnKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSArIDEsIHggKyAxLCAnICcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlW3gsIHldID0gMQogICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAjIExldCdzIHBpY2sgYSByYW5kb20gY29sb3IhCiAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldChjdXJzZXMuY29sb3JfcGFpcihyYW5kb20ucmFuZHJhbmdlKDEsIDcpKSkKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkrMSwgeCsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5ICsgMSwgeCArIDEsIHNlbGYuY2hhcikKICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoMCkKICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCiAKQEAgLTg4LDQzICs4OCw0NiBAQAogCiAgICAgZGVmIGRpc3BsYXkoc2VsZiwgdXBkYXRlX2JvYXJkPVRydWUpOgogICAgICAgICAiIiJEaXNwbGF5IHRoZSB3aG9sZSBib2FyZCwgb3B0aW9uYWxseSBjb21wdXRpbmcgb25lIGdlbmVyYXRpb24iIiIKLSAgICAgICAgTSxOID0gc2VsZi5YLCBzZWxmLlkKKyAgICAgICAgTSwgTiA9IHNlbGYuWCwgc2VsZi5ZCiAgICAgICAgIGlmIG5vdCB1cGRhdGVfYm9hcmQ6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBNKToKICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBOKToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGksaikgaW4gc2VsZi5zdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIChpLCBqKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCBzZWxmLmNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmJvcmluZyA9IDEKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgTSk6Ci0gICAgICAgICAgICBMID0gcmFuZ2UoIG1heCgwLCBpLTEpLCBtaW4oTSwgaSsyKSApCisgICAgICAgICAgICBMID0gcmFuZ2UobWF4KDAsIGkgLSAxKSwgbWluKE0sIGkgKyAyKSkKICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIE4pOgogICAgICAgICAgICAgICAgIHMgPSAwCi0gICAgICAgICAgICAgICAgbGl2ZSA9IChpLGopIGluIHNlbGYuc3RhdGUKLSAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZSggbWF4KDAsIGotMSksIG1pbihOLCBqKzIpICk6CisgICAgICAgICAgICAgICAgbGl2ZSA9IChpLCBqKSBpbiBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobWF4KDAsIGogLSAxKSwgbWluKE4sIGogKyAyKSk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIEw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobCxrKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwsIGspIGluIHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSAxCiAgICAgICAgICAgICAgICAgcyAtPSBsaXZlCiAgICAgICAgICAgICAgICAgaWYgcyA9PSAzOgogICAgICAgICAgICAgICAgICAgICAjIEJpcnRoCi0gICAgICAgICAgICAgICAgICAgIGRbaSxqXSA9IDEKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgTGV0J3MgcGljayBhIHJhbmRvbSBjb2xvciEKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRyYW5nZSgxLCA3KSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgc2VsZi5jaGFyKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KDApCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOiBzZWxmLmJvcmluZyA9IDAKLSAgICAgICAgICAgICAgICBlbGlmIHMgPT0gMiBhbmQgbGl2ZTogZFtpLGpdID0gMSAgICAgICAjIFN1cnZpdmFsCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib3JpbmcgPSAwCisgICAgICAgICAgICAgICAgZWxpZiBzID09IDIgYW5kIGxpdmU6CisgICAgICAgICAgICAgICAgICAgICMgU3Vydml2YWwKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICBlbGlmIGxpdmU6CiAgICAgICAgICAgICAgICAgICAgICMgRGVhdGgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsICcgJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9yaW5nID0gMAogICAgICAgICBzZWxmLnN0YXRlID0gZAogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKQEAgLTEzNSwxNiArMTM4LDE3IEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIHNlbGYuWCk6CiAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBzZWxmLlkpOgogICAgICAgICAgICAgICAgIGlmIHJhbmRvbS5yYW5kb20oKSA+IDAuNToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXQoaixpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldChqLCBpKQogCiAKIGRlZiBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KToKICAgICAiQ2xlYXIgdGhlIHNwYWNlIHdoZXJlIHRoZSBtZW51IHJlc2lkZXMiCiAgICAgc3Rkc2NyLm1vdmUobWVudV95LCAwKQogICAgIHN0ZHNjci5jbHJ0b2VvbCgpCi0gICAgc3Rkc2NyLm1vdmUobWVudV95KzEsIDApCisgICAgc3Rkc2NyLm1vdmUobWVudV95ICsgMSwgMCkKICAgICBzdGRzY3IuY2xydG9lb2woKQogCisKIGRlZiBkaXNwbGF5X21lbnUoc3Rkc2NyLCBtZW51X3kpOgogICAgICJEaXNwbGF5IHRoZSBtZW51IG9mIHBvc3NpYmxlIGtleXN0cm9rZSBjb21tYW5kcyIKICAgICBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KQpAQCAtMTU0LDE1ICsxNTgsMTYgQEAKICAgICAgICAgc3Rkc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoMSkpCiAgICAgc3Rkc2NyLmFkZHN0cihtZW51X3ksIDQsCiAgICAgICAgICdVc2UgdGhlIGN1cnNvciBrZXlzIHRvIG1vdmUsIGFuZCBzcGFjZSBvciBFbnRlciB0byB0b2dnbGUgYSBjZWxsLicpCi0gICAgc3Rkc2NyLmFkZHN0cihtZW51X3krMSwgNCwKKyAgICBzdGRzY3IuYWRkc3RyKG1lbnVfeSArIDEsIDQsCiAgICAgICAgICdFKXJhc2UgdGhlIGJvYXJkLCBSKWFuZG9tIGZpbGwsIFMpdGVwIG9uY2Ugb3IgQylvbnRpbnVvdXNseSwgUSl1aXQnKQogICAgIHN0ZHNjci5hdHRyc2V0KDApCiAKKwogZGVmIGtleWxvb3Aoc3Rkc2NyKToKICAgICAjIENsZWFyIHRoZSBzY3JlZW4gYW5kIGRpc3BsYXkgdGhlIG1lbnUgb2Yga2V5cwogICAgIHN0ZHNjci5jbGVhcigpCiAgICAgc3Rkc2NyX3ksIHN0ZHNjcl94ID0gc3Rkc2NyLmdldG1heHl4KCkKLSAgICBtZW51X3kgPSAoc3Rkc2NyX3ktMyktMQorICAgIG1lbnVfeSA9IChzdGRzY3JfeSAtIDMpIC0gMQogICAgIGRpc3BsYXlfbWVudShzdGRzY3IsIG1lbnVfeSkKIAogICAgICMgSWYgY29sb3IsIHRoZW4gaW5pdGlhbGl6ZSB0aGUgY29sb3IgcGFpcnMKQEAgLTE3OSwxNiArMTg0LDE2IEBACiAgICAgY3Vyc2VzLm1vdXNlbWFzayhjdXJzZXMuQlVUVE9OMV9DTElDS0VEKQogCiAgICAgIyBBbGxvY2F0ZSBhIHN1YndpbmRvdyBmb3IgdGhlIExpZmUgYm9hcmQgYW5kIGNyZWF0ZSB0aGUgYm9hcmQgb2JqZWN0Ci0gICAgc3Vid2luID0gc3Rkc2NyLnN1YndpbihzdGRzY3JfeS0zLCBzdGRzY3JfeCwgMCwgMCkKKyAgICBzdWJ3aW4gPSBzdGRzY3Iuc3Vid2luKHN0ZHNjcl95IC0gMywgc3Rkc2NyX3gsIDAsIDApCiAgICAgYm9hcmQgPSBMaWZlQm9hcmQoc3Vid2luLCBjaGFyPW9yZCgnKicpKQogICAgIGJvYXJkLmRpc3BsYXkodXBkYXRlX2JvYXJkPUZhbHNlKQogCiAgICAgIyB4cG9zLCB5cG9zIGFyZSB0aGUgY3Vyc29yJ3MgcG9zaXRpb24KLSAgICB4cG9zLCB5cG9zID0gYm9hcmQuWC8vMiwgYm9hcmQuWS8vMgorICAgIHhwb3MsIHlwb3MgPSBib2FyZC5YIC8vIDIsIGJvYXJkLlkgLy8gMgogCiAgICAgIyBNYWluIGxvb3A6CiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgc3Rkc2NyLm1vdmUoMSt5cG9zLCAxK3hwb3MpICAgICAjIE1vdmUgdGhlIGN1cnNvcgorICAgICAgICBzdGRzY3IubW92ZSgxICsgeXBvcywgMSArIHhwb3MpICAgIyBNb3ZlIHRoZSBjdXJzb3IKICAgICAgICAgYyA9IHN0ZHNjci5nZXRjaCgpICAgICAgICAgICAgICAgICMgR2V0IGEga2V5c3Ryb2tlCiAgICAgICAgIGlmIDAgPCBjIDwgMjU2OgogICAgICAgICAgICAgYyA9IGNocihjKQpAQCAtMjI0LDE1ICsyMjksMjEgQEAKICAgICAgICAgICAgICAgICBib2FyZC5kaXNwbGF5KHVwZGF0ZV9ib2FyZD1GYWxzZSkKICAgICAgICAgICAgIGVsaWYgYyBpbiAnU3MnOgogICAgICAgICAgICAgICAgIGJvYXJkLmRpc3BsYXkoKQotICAgICAgICAgICAgZWxzZTogcGFzcyAgICAgICAgICAgICAgICAgICMgSWdub3JlIGluY29ycmVjdCBrZXlzCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDogICAgICAgICAgICB5cG9zIC09IDEKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfRE9XTiBhbmQgeXBvcyA8IGJvYXJkLlktMTogIHlwb3MgKz0gMQotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9MRUZUIGFuZCB4cG9zID4gMDogICAgICAgICAgeHBvcyAtPSAxCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1JJR0hUIGFuZCB4cG9zIDwgYm9hcmQuWC0xOiB4cG9zICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgaW5jb3JyZWN0IGtleXMKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDoKKyAgICAgICAgICAgIHlwb3MgLT0gMQorICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9ET1dOIGFuZCB5cG9zICsgMSA8IGJvYXJkLlk6CisgICAgICAgICAgICB5cG9zICs9IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfTEVGVCBhbmQgeHBvcyA+IDA6CisgICAgICAgICAgICB4cG9zIC09IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfUklHSFQgYW5kIHhwb3MgKyAxIDwgYm9hcmQuWDoKKyAgICAgICAgICAgIHhwb3MgKz0gMQogICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9NT1VTRToKICAgICAgICAgICAgIG1vdXNlX2lkLCBtb3VzZV94LCBtb3VzZV95LCBtb3VzZV96LCBidXR0b25fc3RhdGUgPSBjdXJzZXMuZ2V0bW91c2UoKQotICAgICAgICAgICAgaWYgKG1vdXNlX3ggPiAwIGFuZCBtb3VzZV94IDwgYm9hcmQuWCsxIGFuZAotICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSsxKToKKyAgICAgICAgICAgIGlmIChtb3VzZV94ID4gMCBhbmQgbW91c2VfeCA8IGJvYXJkLlggKyAxIGFuZAorICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSArIDEpOgogICAgICAgICAgICAgICAgIHhwb3MgPSBtb3VzZV94IC0gMQogICAgICAgICAgICAgICAgIHlwb3MgPSBtb3VzZV95IC0gMQogICAgICAgICAgICAgICAgIGJvYXJkLnRvZ2dsZSh5cG9zLCB4cG9zKQpAQCAtMjQ1LDcgKzI1Niw3IEBACiAKIAogZGVmIG1haW4oc3Rkc2NyKToKLSAgICBrZXlsb29wKHN0ZHNjcikgICAgICAgICAgICAgICAgICAgICMgRW50ZXIgdGhlIG1haW4gbG9vcAorICAgIGtleWxvb3Aoc3Rkc2NyKSAgICAgICAgICAgICAgICAgIyBFbnRlciB0aGUgbWFpbiBsb29wCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgY3Vyc2VzLndyYXBwZXIobWFpbikKZGlmZiAtLWdpdCBhL1Rvb2xzL2RlbW8vc3MxLnB5IGIvVG9vbHMvZGVtby9zczEucHkKaW5kZXggNGNlYTY2Ny4uNzFjOWJlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9zczEucHkKKysrIGIvVG9vbHMvZGVtby9zczEucHkKQEAgLTgxMiw3ICs4MTIsNiBAQAogCiBkZWYgdGVzdF9iYXNpYygpOgogICAgICJCYXNpYyBub24tZ3VpIHNlbGYtdGVzdC4iCi0gICAgaW1wb3J0IG9zCiAgICAgYSA9IFNoZWV0KCkKICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMSk6CiAgICAgICAgIGZvciB5IGluIHJhbmdlKDEsIDExKToKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CmluZGV4IDhiYmJiMTAuLjM2OGE3ZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkKKysrIGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQpAQCAtNDksNiArNDksMTEgQEAKIF90eXBlX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCdjaGFyJykucG9pbnRlcigpICMgY2hhcioKIF90eXBlX3Vuc2lnbmVkX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd1bnNpZ25lZCBjaGFyJykucG9pbnRlcigpICMgdW5zaWduZWQgY2hhcioKIF90eXBlX3ZvaWRfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd2b2lkJykucG9pbnRlcigpICMgdm9pZCoKK190eXBlX3Vuc2lnbmVkX3Nob3J0X3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndW5zaWduZWQgc2hvcnQnKS5wb2ludGVyKCkKK190eXBlX3Vuc2lnbmVkX2ludF9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3Vuc2lnbmVkIGludCcpLnBvaW50ZXIoKQorCisjIHZhbHVlIGNvbXB1dGVkIGxhdGVyLCBzZWUgUHlVbmljb2RlT2JqZWN0UHRyLnByb3h5KCkKK19pc19wZXAzOTMgPSBOb25lCiAKIFNJWkVPRl9WT0lEX1AgPSBfdHlwZV92b2lkX3B0ci5zaXplb2YKIApAQCAtMzIyLDcgKzMyNyw2IEBACiAKICAgICAgICAgbmFtZV9tYXAgPSB7J2Jvb2wnOiBQeUJvb2xPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdjbGFzc29iaic6IFB5Q2xhc3NPYmplY3RQdHIsCi0gICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSc6IFB5SW5zdGFuY2VPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdOb25lVHlwZSc6IFB5Tm9uZVN0cnVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1lJzogUHlGcmFtZU9iamVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ3NldCcgOiBQeVNldE9iamVjdFB0ciwKQEAgLTM5Niw3ICs0MDAsNyBAQAogCiAKIGRlZiBfd3JpdGVfaW5zdGFuY2VfcmVwcihvdXQsIHZpc2l0ZWQsIG5hbWUsIHB5b3BfYXR0cmRpY3QsIGFkZHJlc3MpOgotICAgICcnJ1NoYXJlZCBjb2RlIGZvciB1c2UgYnkgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2xhc3NlczoKKyAgICAnJydTaGFyZWQgY29kZSBmb3IgdXNlIGJ5IGFsbCBjbGFzc2VzOgogICAgIHdyaXRlIGEgcmVwcmVzZW50YXRpb24gdG8gZmlsZS1saWtlIG9iamVjdCAib3V0IicnJwogICAgIG91dC53cml0ZSgnPCcpCiAgICAgb3V0LndyaXRlKG5hbWUpCkBAIC00NzksNyArNDgzLDcgQEAKIAogICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKICAgICAgICAgJycnCi0gICAgICAgIFN1cHBvcnQgZm9yIG5ldy1zdHlsZSBjbGFzc2VzLgorICAgICAgICBTdXBwb3J0IGZvciBjbGFzc2VzLgogCiAgICAgICAgIEN1cnJlbnRseSB3ZSBqdXN0IGxvY2F0ZSB0aGUgZGljdGlvbmFyeSB1c2luZyBhIHRyYW5zbGl0ZXJhdGlvbiB0bwogICAgICAgICBweXRob24gb2YgX1B5T2JqZWN0X0dldERpY3RQdHIsIGlnbm9yaW5nIGRlc2NyaXB0b3JzCkBAIC00OTYsNyArNTAwLDcgQEAKICAgICAgICAgICAgIGF0dHJfZGljdCA9IHt9CiAgICAgICAgIHRwX25hbWUgPSBzZWxmLnNhZmVfdHBfbmFtZSgpCiAKLSAgICAgICAgIyBOZXctc3R5bGUgY2xhc3M6CisgICAgICAgICMgQ2xhc3M6CiAgICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KHRwX25hbWUsIGF0dHJfZGljdCwgbG9uZyhzZWxmLl9nZGJ2YWwpKQogCiAgICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKQEAgLTYzMCw5ICs2MzQsMTQgQEAKICAgICAgICAgWWllbGRzIGEgc2VxdWVuY2Ugb2YgKFB5T2JqZWN0UHRyIGtleSwgUHlPYmplY3RQdHIgdmFsdWUpIHBhaXJzLAogICAgICAgICBhbmFsYWdvdXMgdG8gZGljdC5pdGVyaXRlbXMoKQogICAgICAgICAnJycKLSAgICAgICAgZm9yIGkgaW4gc2FmZV9yYW5nZShzZWxmLmZpZWxkKCdtYV9tYXNrJykgKyAxKToKLSAgICAgICAgICAgIGVwID0gc2VsZi5maWVsZCgnbWFfdGFibGUnKSArIGkKLSAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKKyAgICAgICAga2V5cyA9IHNlbGYuZmllbGQoJ21hX2tleXMnKQorICAgICAgICB2YWx1ZXMgPSBzZWxmLmZpZWxkKCdtYV92YWx1ZXMnKQorICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKGtleXNbJ2RrX3NpemUnXSk6CisgICAgICAgICAgICBlcCA9IGtleXNbJ2RrX2VudHJpZXMnXS5hZGRyZXNzICsgaQorICAgICAgICAgICAgaWYgbG9uZyh2YWx1ZXMpOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cih2YWx1ZXNbaV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKICAgICAgICAgICAgIGlmIG5vdCBweW9wX3ZhbHVlLmlzX251bGwoKToKICAgICAgICAgICAgICAgICBweW9wX2tleSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKGVwWydtZV9rZXknXSkKICAgICAgICAgICAgICAgICB5aWVsZCAocHlvcF9rZXksIHB5b3BfdmFsdWUpCkBAIC02NjgsNDQgKzY3Nyw2IEBACiAgICAgICAgICAgICBweW9wX3ZhbHVlLndyaXRlX3JlcHIob3V0LCB2aXNpdGVkKQogICAgICAgICBvdXQud3JpdGUoJ30nKQogCi1jbGFzcyBQeUluc3RhbmNlT2JqZWN0UHRyKFB5T2JqZWN0UHRyKToKLSAgICBfdHlwZW5hbWUgPSAnUHlJbnN0YW5jZU9iamVjdCcKLQotICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKLSAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzOgotICAgICAgICBpZiBzZWxmLmFzX2FkZHJlc3MoKSBpbiB2aXNpdGVkOgotICAgICAgICAgICAgcmV0dXJuIFByb3h5QWxyZWFkeVZpc2l0ZWQoJzwuLi4+JykKLSAgICAgICAgdmlzaXRlZC5hZGQoc2VsZi5hc19hZGRyZXNzKCkpCi0KLSAgICAgICAgIyBHZXQgbmFtZSBvZiBjbGFzczoKLSAgICAgICAgaW5fY2xhc3MgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2NsYXNzJykKLSAgICAgICAgY2xfbmFtZSA9IGluX2NsYXNzLnB5b3BfZmllbGQoJ2NsX25hbWUnKS5wcm94eXZhbCh2aXNpdGVkKQotCi0gICAgICAgICMgR2V0IGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgYXR0cmlidXRlczoKLSAgICAgICAgaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpLnByb3h5dmFsKHZpc2l0ZWQpCi0KLSAgICAgICAgIyBPbGQtc3R5bGUgY2xhc3M6Ci0gICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KGNsX25hbWUsIGluX2RpY3QsIGxvbmcoc2VsZi5fZ2RidmFsKSkKLQotICAgIGRlZiB3cml0ZV9yZXByKHNlbGYsIG91dCwgdmlzaXRlZCk6Ci0gICAgICAgICMgR3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wczoKLSAgICAgICAgaWYgc2VsZi5hc19hZGRyZXNzKCkgaW4gdmlzaXRlZDoKLSAgICAgICAgICAgIG91dC53cml0ZSgnPC4uLj4nKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHZpc2l0ZWQuYWRkKHNlbGYuYXNfYWRkcmVzcygpKQotCi0gICAgICAgICMgT2xkLXN0eWxlIGNsYXNzOgotCi0gICAgICAgICMgR2V0IG5hbWUgb2YgY2xhc3M6Ci0gICAgICAgIGluX2NsYXNzID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9jbGFzcycpCi0gICAgICAgIGNsX25hbWUgPSBpbl9jbGFzcy5weW9wX2ZpZWxkKCdjbF9uYW1lJykucHJveHl2YWwodmlzaXRlZCkKLQotICAgICAgICAjIEdldCBkaWN0aW9uYXJ5IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXM6Ci0gICAgICAgIHB5b3BfaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpCi0KLSAgICAgICAgX3dyaXRlX2luc3RhbmNlX3JlcHIob3V0LCB2aXNpdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbF9uYW1lLCBweW9wX2luX2RpY3QsIHNlbGYuYXNfYWRkcmVzcygpKQotCiBjbGFzcyBQeUxpc3RPYmplY3RQdHIoUHlPYmplY3RQdHIpOgogICAgIF90eXBlbmFtZSA9ICdQeUxpc3RPYmplY3QnCiAKQEAgLTExMjMsMTUgKzEwOTQsNDYgQEAKICAgICAgICAgcmV0dXJuIF90eXBlX1B5X1VOSUNPREUuc2l6ZW9mCiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6Ci0gICAgICAgICMgRnJvbSB1bmljb2Rlb2JqZWN0Lmg6Ci0gICAgICAgICMgICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgICAgICMgICAgIFB5X1VOSUNPREUgKnN0cjsgICAgLyogUmF3IFVuaWNvZGUgYnVmZmVyICovCi0gICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoc2VsZi5maWVsZCgnbGVuZ3RoJykpCi0gICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgIGdsb2JhbCBfaXNfcGVwMzkzCisgICAgICAgIGlmIF9pc19wZXAzOTMgaXMgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcyA9IGdkYi5sb29rdXBfdHlwZSgnUHlVbmljb2RlT2JqZWN0JykudGFyZ2V0KCkuZmllbGRzKCkKKyAgICAgICAgICAgIF9pc19wZXAzOTMgPSAnZGF0YScgaW4gW2YubmFtZSBmb3IgZiBpbiBmaWVsZHNdCisgICAgICAgIGlmIF9pc19wZXAzOTM6CisgICAgICAgICAgICAjIFB5dGhvbiAzLjMgYW5kIG5ld2VyCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gRmFsc2UKKyAgICAgICAgICAgIGNvbXBhY3QgPSBzZWxmLmZpZWxkKCdfYmFzZScpCisgICAgICAgICAgICBhc2NpaSA9IGNvbXBhY3RbJ19iYXNlJ10KKyAgICAgICAgICAgIHN0YXRlID0gYXNjaWlbJ3N0YXRlJ10KKyAgICAgICAgICAgIGlzX2NvbXBhY3RfYXNjaWkgPSAoaW50KHN0YXRlWydhc2NpaSddKSBhbmQgaW50KHN0YXRlWydjb21wYWN0J10pKQorICAgICAgICAgICAgaWYgbm90IGludChzdGF0ZVsncmVhZHknXSk6CisgICAgICAgICAgICAgICAgIyBzdHJpbmcgaXMgbm90IHJlYWR5CisgICAgICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhjb21wYWN0Wyd3c3RyX2xlbmd0aCddKQorICAgICAgICAgICAgICAgIG1heV9oYXZlX3N1cnJvZ2F0ZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gYXNjaWlbJ3dzdHInXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKGFzY2lpWydsZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBpZiBpc19jb21wYWN0X2FzY2lpOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBhc2NpaS5hZGRyZXNzICsgMQorICAgICAgICAgICAgICAgIGVsaWYgaW50KHN0YXRlWydjb21wYWN0J10pOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBjb21wYWN0LmFkZHJlc3MgKyAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gc2VsZi5maWVsZCgnZGF0YScpWydhbnknXQorICAgICAgICAgICAgICAgIHJlcHJfa2luZCA9IGludChzdGF0ZVsna2luZCddKQorICAgICAgICAgICAgICAgIGlmIHJlcHJfa2luZCA9PSAxOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9jaGFyX3B0cikKKyAgICAgICAgICAgICAgICBlbGlmIHJlcHJfa2luZCA9PSAyOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9zaG9ydF9wdHIpCisgICAgICAgICAgICAgICAgZWxpZiByZXByX2tpbmQgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gZmllbGRfc3RyLmNhc3QoX3R5cGVfdW5zaWduZWRfaW50X3B0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUHl0aG9uIDMuMiBhbmQgZWFybGllcgorICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhzZWxmLmZpZWxkKCdsZW5ndGgnKSkKKyAgICAgICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gc2VsZi5jaGFyX3dpZHRoKCkgPT0gMgogCiAgICAgICAgICMgR2F0aGVyIGEgbGlzdCBvZiBpbnRzIGZyb20gdGhlIFB5X1VOSUNPREUgYXJyYXk7IHRoZXNlIGFyZSBlaXRoZXIKLSAgICAgICAgIyBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKLSAgICAgICAgaWYgc2VsZi5jaGFyX3dpZHRoKCkgPiAyOgorICAgICAgICAjIFVDUy0xLCBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKKyAgICAgICAgaWYgbm90IG1heV9oYXZlX3N1cnJvZ2F0ZXM6CiAgICAgICAgICAgICBQeV9VTklDT0RFcyA9IFtpbnQoZmllbGRfc3RyW2ldKSBmb3IgaSBpbiBzYWZlX3JhbmdlKGZpZWxkX2xlbmd0aCldCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEgbW9yZSBlbGFib3JhdGUgcm91dGluZSBpZiBzaXplb2YoUHlfVU5JQ09ERSkgaXMgMiBpbiB0aGUKQEAgLTEzMzAsNyArMTMzMiw3IEBACiAgIC91c3IvbGliL2RlYnVnL3Vzci9saWIvbGlicHl0aG9uMi42LnNvLjEuMC5kZWJ1Zy1nZGIucHkKICIiIgogZGVmIHJlZ2lzdGVyIChvYmopOgotICAgIGlmIG9iaiA9PSBOb25lOgorICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICBvYmogPSBnZGIKIAogICAgICMgV2lyZSB1cCB0aGUgcHJldHR5LXByaW50ZXIKQEAgLTEzODgsNiArMTM5MCwyMyBAQAogICAgICAgICAgICAgaXRlcl9mcmFtZSA9IGl0ZXJfZnJhbWUubmV3ZXIoKQogICAgICAgICByZXR1cm4gaW5kZXgKIAorICAgICMgV2UgZGl2aWRlIGZyYW1lcyBpbnRvOgorICAgICMgICAtICJweXRob24gZnJhbWVzIjoKKyAgICAjICAgICAgIC0gImJ5dGVjb2RlIGZyYW1lcyIgaS5lLiBQeUV2YWxfRXZhbEZyYW1lRXgKKyAgICAjICAgICAgIC0gIm90aGVyIHB5dGhvbiBmcmFtZXMiOiB0aGluZ3MgdGhhdCBhcmUgb2YgaW50ZXJlc3QgZnJvbSBhIHB5dGhvbgorICAgICMgICAgICAgICBQT1YsIGJ1dCBhcmVuJ3QgYnl0ZWNvZGUgKGUuZy4gR0MsIEdJTCkKKyAgICAjICAgLSBldmVyeXRoaW5nIGVsc2UKKworICAgIGRlZiBpc19weXRob25fZnJhbWUoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgYSBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWUsIG9yIHNvbWUgb3RoZXIgaW1wb3J0YW50CisgICAgICAgIGZyYW1lPyAoc2VlIGlzX290aGVyX3B5dGhvbl9mcmFtZSBmb3Igd2hhdCAiaW1wb3J0YW50IiBtZWFucyBpbiB0aGlzCisgICAgICAgIGNvbnRleHQpJycnCisgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBpc19ldmFsZnJhbWVleChzZWxmKToKICAgICAgICAgJycnSXMgdGhpcyBhIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZT8nJycKICAgICAgICAgaWYgc2VsZi5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUV2YWxfRXZhbEZyYW1lRXgnOgpAQCAtMTQwNCw2ICsxNDIzLDQ5IEBACiAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGZyYW1lIHdvcnRoIGRpc3BsYXlpbmcgaW4gcHl0aG9uIGJhY2t0cmFjZXM/CisgICAgICAgIEV4YW1wbGVzOgorICAgICAgICAgIC0gd2FpdGluZyBvbiB0aGUgR0lMCisgICAgICAgICAgLSBnYXJiYWdlLWNvbGxlY3RpbmcKKyAgICAgICAgICAtIHdpdGhpbiBhIENGdW5jdGlvbgorICAgICAgICAgSWYgaXQgaXMsIHJldHVybiBhIGRlc2NyaXB0aXZlIHN0cmluZworICAgICAgICAgRm9yIG90aGVyIGZyYW1lcywgcmV0dXJuIEZhbHNlCisgICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5pc193YWl0aW5nX2Zvcl9naWwoKToKKyAgICAgICAgICAgIHJldHVybiAnV2FpdGluZyBmb3IgdGhlIEdJTCcKKyAgICAgICAgZWxpZiBzZWxmLmlzX2djX2NvbGxlY3QoKToKKyAgICAgICAgICAgIHJldHVybiAnR2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEZXRlY3QgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzOgorICAgICAgICAgICAgb2xkZXIgPSBzZWxmLm9sZGVyKCkKKyAgICAgICAgICAgIGlmIG9sZGVyIGFuZCBvbGRlci5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKKyAgICAgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgorICAgICAgICAgICAgICAgICMgICAiZnVuYyIgaXMgdGhlIGxvY2FsIGNvbnRhaW5pbmcgdGhlIFB5T2JqZWN0KiBvZiB0aGUKKyAgICAgICAgICAgICAgICAjIFB5Q0Z1bmN0aW9uT2JqZWN0IGluc3RhbmNlCisgICAgICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKKyAgICAgICAgICAgICAgICAjICAgInNlbGYiIGlzIHRoZSAoUHlPYmplY3QqKSBvZiB0aGUgJ3NlbGYnCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBvbGRlci5fZ2RiZnJhbWUucmVhZF92YXIoJ2Z1bmMnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQeUNGdW5jdGlvbiBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAiZnVuYyIpJworCisgICAgICAgICMgVGhpcyBmcmFtZSBpc24ndCB3b3J0aCByZXBvcnRpbmc6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3dhaXRpbmdfZm9yX2dpbChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSB3YWl0aW5nIG9uIHRoZSBHSUw/JycnCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoZSBfUE9TSVhfVEhSRUFEUyB2ZXJzaW9uIG9mIFB5dGhvbi9jZXZhbF9naWwuaDoKKyAgICAgICAgbmFtZSA9IHNlbGYuX2dkYmZyYW1lLm5hbWUoKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3RhcnRzd2l0aCgncHRocmVhZF9jb25kX3RpbWVkd2FpdCcpCisKKyAgICBkZWYgaXNfZ2NfY29sbGVjdChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSAiY29sbGVjdCIgd2l0aGluIHRoZSB0aGUgZ2FyYmFnZS1jb2xsZWN0b3I/JycnCisgICAgICAgIHJldHVybiBzZWxmLl9nZGJmcmFtZS5uYW1lKCkgPT0gJ2NvbGxlY3QnCisKICAgICBkZWYgZ2V0X3B5b3Aoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLl9nZGJmcmFtZS5yZWFkX3ZhcignZicpCkBAIC0xNDMzLDggKzE0OTUsMjIgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKGNscyk6Ci0gICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uIGNvZGUgaW4gdGhlIHNlbGVjdGVkIGZyYW1lLAotICAgICAgICBvciBOb25lJycnCisgICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uLXJlbGF0ZWQgY29kZSBpbiB0aGUgc2VsZWN0ZWQKKyAgICAgICAgZnJhbWUsIG9yIE5vbmUnJycKKyAgICAgICAgZnJhbWUgPSBjbHMuZ2V0X3NlbGVjdGVkX2ZyYW1lKCkKKworICAgICAgICB3aGlsZSBmcmFtZToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZQorICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlcigpCisKKyAgICAgICAgIyBOb3QgZm91bmQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X3NlbGVjdGVkX2J5dGVjb2RlX2ZyYW1lKGNscyk6CisgICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uIGJ5dGVjb2RlIGludGVycHJldGVyIGluIHRoZQorICAgICAgICBzZWxlY3RlZCBHREIgZnJhbWUsIG9yIE5vbmUnJycKICAgICAgICAgZnJhbWUgPSBjbHMuZ2V0X3NlbGVjdGVkX2ZyYW1lKCkKIAogICAgICAgICB3aGlsZSBmcmFtZToKQEAgLTE0NTgsNyArMTUzNCwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWkgKHVuYWJsZSB0byByZWFkIHB5dGhvbiBmcmFtZSBpbmZvcm1hdGlvbilcbicgJSBzZWxmLmdldF9pbmRleCgpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaSAlc1xuJyAlIChzZWxmLmdldF9pbmRleCgpLCBpbmZvKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKIAogICAgIGRlZiBwcmludF90cmFjZWJhY2soc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKQEAgLTE0NzIsNyArMTU1MiwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgICh1bmFibGUgdG8gcmVhZCBweXRob24gZnJhbWUgaW5mb3JtYXRpb24pXG4nKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAobm90IGEgcHl0aG9uIGZyYW1lKVxuJykKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgJXNcbicgJSBpbmZvKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgIChub3QgYSBweXRob24gZnJhbWUpXG4nKQogCiBjbGFzcyBQeUxpc3QoZ2RiLkNvbW1hbmQpOgogICAgICcnJ0xpc3QgdGhlIGN1cnJlbnQgUHl0aG9uIHNvdXJjZSBjb2RlLCBpZiBhbnkKQEAgLTE1MDgsOSArMTU5MiwxMCBAQAogICAgICAgICBpZiBtOgogICAgICAgICAgICAgc3RhcnQsIGVuZCA9IG1hcChpbnQsIG0uZ3JvdXBzKCkpCiAKLSAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgIyBweS1saXN0IHJlcXVpcmVzIGFuIGFjdHVhbCBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWU6CisgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX2J5dGVjb2RlX2ZyYW1lKCkKICAgICAgICAgaWYgbm90IGZyYW1lOgotICAgICAgICAgICAgcHJpbnQgJ1VuYWJsZSB0byBsb2NhdGUgcHl0aG9uIGZyYW1lJworICAgICAgICAgICAgcHJpbnQgJ1VuYWJsZSB0byBsb2NhdGUgZ2RiIGZyYW1lIGZvciBweXRob24gYnl0ZWNvZGUgaW50ZXJwcmV0ZXInCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBweW9wID0gZnJhbWUuZ2V0X3B5b3AoKQpAQCAtMTU2Miw3ICsxNjQ3LDcgQEAKICAgICAgICAgaWYgbm90IGl0ZXJfZnJhbWU6CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIGlmIGl0ZXJfZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgaWYgaXRlcl9mcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICMgUmVzdWx0OgogICAgICAgICAgICAgaWYgaXRlcl9mcmFtZS5zZWxlY3QoKToKICAgICAgICAgICAgICAgICBpdGVyX2ZyYW1lLnByaW50X3N1bW1hcnkoKQpAQCAtMTYxNiw3ICsxNzAxLDcgQEAKICAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKICAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKICAgICAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgICAgICBpZiBmcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CiAgICAgICAgICAgICAgICAgZnJhbWUucHJpbnRfc3VtbWFyeSgpCiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKIApAQCAtMTYzNSw3ICsxNzIwLDcgQEAKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbicpCiAgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZSgpCiAgICAgICAgIHdoaWxlIGZyYW1lOgotICAgICAgICAgICAgaWYgZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgogICAgICAgICAgICAgICAgIGZyYW1lLnByaW50X3RyYWNlYmFjaygpCiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvaGcvaGd0b3VjaC5weSBiL1Rvb2xzL2hnL2hndG91Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2MWExMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTAsMCArMSwxMDMgQEAKKyIiIkJyaW5nIHRpbWUgc3RhbXBzIG9mIGdlbmVyYXRlZCBjaGVja2VkLWluIGZpbGVzIGludG8gdGhlIHJpZ2h0IG9yZGVyCisKK0EgdmVyc2lvbmVkIGNvbmZpZ3VyYXRpb24gZmlsZSAuaGd0b3VjaCBzcGVjaWZpZXMgZ2VuZXJhdGVkIGZpbGVzLCBpbiB0aGUKK3N5bnRheCBvZiBtYWtlIHJ1bGVzLgorCisgIG91dHB1dDogICAgaW5wdXQxIGlucHV0MgorCitJbiBhZGRpdGlvbiB0byB0aGUgZGVwZW5kZW5jeSBzeW50YXgsICMtY29tbWVudHMgYXJlIHN1cHBvcnRlZC4KKyIiIgoraW1wb3J0IGVycm5vCitpbXBvcnQgb3MKKworZGVmIHBhcnNlX2NvbmZpZyhyZXBvKToKKyAgICB0cnk6CisgICAgICAgIGZwID0gcmVwby53ZmlsZSgiLmhndG91Y2giKQorICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiB7fQorICAgIHJlc3VsdCA9IHt9CisgICAgd2l0aCBmcDoKKyAgICAgICAgZm9yIGxpbmUgaW4gZnA6CisgICAgICAgICAgICAjIHN0cmlwIGNvbW1lbnRzCisgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnIycpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb3V0cHV0cywgaW5wdXRzID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAgICAgICBvdXRwdXRzID0gb3V0cHV0cy5zcGxpdCgpCisgICAgICAgICAgICBpbnB1dHMgPSBpbnB1dHMuc3BsaXQoKQorICAgICAgICAgICAgZm9yIG8gaW4gb3V0cHV0czoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtvXS5leHRlbmQoaW5wdXRzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W29dID0gaW5wdXRzCisgICAgcmV0dXJuIHJlc3VsdAorCitkZWYgY2hlY2tfcnVsZSh1aSwgcmVwbywgbW9kaWZpZWQsIG91dHB1dCwgaW5wdXRzKToKKyAgICBmX291dHB1dCA9IHJlcG8ud2pvaW4ob3V0cHV0KQorICAgIHRyeToKKyAgICAgICAgb190aW1lID0gb3Muc3RhdChmX291dHB1dCkuc3RfbXRpbWUKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgdWkud2FybigiR2VuZXJhdGVkIGZpbGUgJXMgZG9lcyBub3QgZXhpc3RcbiIgJSBvdXRwdXQpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIG5lZWRfdG91Y2ggPSBGYWxzZQorICAgIGJhY2tkYXRlID0gTm9uZQorICAgIGJhY2tkYXRlX3NvdXJjZSA9IE5vbmUKKyAgICBmb3IgaSBpbiBpbnB1dHM6CisgICAgICAgIGZfaSA9IHJlcG8ud2pvaW4oaSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaV90aW1lID0gb3Muc3RhdChmX2kpLnN0X210aW1lCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgdWkud2FybigiLmhndG91Y2ggaW5wdXQgZmlsZSAlcyBkb2VzIG5vdCBleGlzdFxuIiAlIGkpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgaSBpbiBtb2RpZmllZDoKKyAgICAgICAgICAgICMgaW5wdXQgaXMgbW9kaWZpZWQuIE5lZWQgdG8gYmFja2RhdGUgYXQgbGVhc3QgdG8gaV90aW1lCisgICAgICAgICAgICBpZiBiYWNrZGF0ZSBpcyBOb25lIG9yIGJhY2tkYXRlID4gaV90aW1lOgorICAgICAgICAgICAgICAgIGJhY2tkYXRlID0gaV90aW1lCisgICAgICAgICAgICAgICAgYmFja2RhdGVfc291cmNlID0gaQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgb190aW1lIDw9IGlfdGltZToKKyAgICAgICAgICAgICMgZ2VuZXJhdGVkIGZpbGUgaXMgb2xkZXIsIHRvdWNoCisgICAgICAgICAgICBuZWVkX3RvdWNoID0gVHJ1ZQorICAgIGlmIGJhY2tkYXRlIGlzIG5vdCBOb25lOgorICAgICAgICB1aS53YXJuKCJJbnB1dCAlcyBmb3IgZmlsZSAlcyBsb2NhbGx5IG1vZGlmaWVkXG4iICUgKGJhY2tkYXRlX3NvdXJjZSwgb3V0cHV0KSkKKyAgICAgICAgIyBzZXQgdG8gMXMgYmVmb3JlIG9sZGVzdCBtb2RpZmllZCBpbnB1dAorICAgICAgICBiYWNrZGF0ZSAtPSAxCisgICAgICAgIG9zLnV0aW1lKGZfb3V0cHV0LCAoYmFja2RhdGUsIGJhY2tkYXRlKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgbmVlZF90b3VjaDoKKyAgICAgICAgdWkubm90ZSgiVG91Y2hpbmcgJXNcbiIgJSBvdXRwdXQpCisgICAgICAgIG9zLnV0aW1lKGZfb3V0cHV0LCBOb25lKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBkb190b3VjaCh1aSwgcmVwbyk6CisgICAgbW9kaWZpZWQgPSByZXBvLnN0YXR1cygpWzBdCisgICAgZGVwZW5kZW5jaWVzID0gcGFyc2VfY29uZmlnKHJlcG8pCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICAjIHRyeSBwcm9jZXNzaW5nIGFsbCBydWxlcyBpbiB0b3BvbG9naWNhbCBvcmRlcgorICAgIGhvbGRfYmFjayA9IHt9CisgICAgd2hpbGUgZGVwZW5kZW5jaWVzOgorICAgICAgICBvdXRwdXQsIGlucHV0cyA9IGRlcGVuZGVuY2llcy5wb3BpdGVtKCkKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgaW5wdXRzIGlzIGdlbmVyYXRlZAorICAgICAgICBmb3IgaSBpbiBpbnB1dHM6CisgICAgICAgICAgICBpZiBpIGluIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICBob2xkX2JhY2tbb3V0cHV0XSA9IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHN1Y2Nlc3MgPSBjaGVja19ydWxlKHVpLCByZXBvLCBtb2RpZmllZCwgb3V0cHV0LCBpbnB1dHMpCisgICAgICAgICMgcHV0IGJhY2sgaGVsZCBiYWNrIHJ1bGVzCisgICAgICAgIGRlcGVuZGVuY2llcy51cGRhdGUoaG9sZF9iYWNrKQorICAgICAgICBob2xkX2JhY2sgPSB7fQorICAgIGlmIGhvbGRfYmFjazoKKyAgICAgICAgdWkud2FybigiQ3ljbGljIGRlcGVuZGVuY3kgaW52b2x2aW5nICVzXG4iICUgKCcgJy5qb2luKGhvbGRfYmFjay5rZXlzKCkpKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIHN1Y2Nlc3MKKworZGVmIHRvdWNoKHVpLCByZXBvKToKKyAgICAidG91Y2ggZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIG9sZGVyIHRoYW4gdGhlaXIgc291cmNlcyBhZnRlciBhbiB1cGRhdGUuIgorICAgIGRvX3RvdWNoKHVpLCByZXBvKQorCitjbWR0YWJsZSA9IHsKKyAgICAidG91Y2giOiAodG91Y2gsIFtdLAorICAgICAgICAgICAgICAidG91Y2ggZ2VuZXJhdGVkIGZpbGVzIGFjY29yZGluZyB0byB0aGUgLmhndG91Y2ggY29uZmlndXJhdGlvbiIpCit9CmRpZmYgLS1naXQgYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weSBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CmluZGV4IDY3YTk2MGYuLjkzYjJiNzkgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CisrKyBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CkBAIC0xNjMsNyArMTYzLDYgQEAKIGltcG9ydCBnZXRvcHQKIGltcG9ydCB0b2tlbgogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgb3BlcmF0b3IKIAogX192ZXJzaW9uX18gPSAnMS41JwogCmRpZmYgLS1naXQgYS9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUgYi9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhNTU0NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRQpAQCAtMCwwICsxLDYgQEAKK0ltcG9ydGJlbmNoIGlzIGEgc2V0IG9mIG1pY3JvLWJlbmNobWFya3MgZm9yIHZhcmlvdXMgaW1wb3J0IHNjZW5hcmlvcy4KKworSXQgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGFuIG92ZXJhbGwgYmVuY2htYXJrIG9mIGltcG9ydCBwZXJmb3JtYW5jZSwgYnV0IHJhdGhlcgorYW4gZWFzeSB3YXkgdG8gbWVhc3VyZSBpbXBhY3Qgb2YgcG9zc2libGUgY29kZSBjaGFuZ2VzLiBGb3IgYSByZWFsLXdvcmxkCitiZW5jaG1hcmsgb2YgaW1wb3J0LCB1c2UgdGhlIG5vcm1hbF9zdGFydHVwIGJlbmNobWFyayBmcm9tCitoZy5weXRob24ub3JnL2JlbmNobWFya3MuCmRpZmYgLS1naXQgYS9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weSBiL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNGMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weQpAQCAtMCwwICsxLDI1MiBAQAorIiIiQmVuY2htYXJrIHNvbWUgYmFzaWMgaW1wb3J0IHVzZS1jYXNlcy4KKworVGhlIGFzc3VtcHRpb24gaXMgbWFkZSB0aGF0IHRoaXMgYmVuY2htYXJrIGlzIHJ1biBpbiBhIGZyZXNoIGludGVycHJldGVyIGFuZAordGh1cyBoYXMgbm8gZXh0ZXJuYWwgY2hhbmdlcyBtYWRlIHRvIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMgaW4gc3lzLgorCisiIiIKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliLnNvdXJjZSBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGRlY2ltYWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcHlfY29tcGlsZQoraW1wb3J0IHN5cworaW1wb3J0IHRhYm5hbm55CitpbXBvcnQgdGltZWl0CisKKworZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKKyAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCisgICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCisgICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKKyAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQorICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6CisgICAgICAgIHRvdGFsX3RpbWUgPSAwCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGVhbnVwKCkKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCisgICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKKyAgICAgICAgICAgICAgICBjb3VudCAtPSAxCisgICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKKworZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJzeXMubW9kdWxlcyIiIgorICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JworICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKKyAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJworICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKKyAgICBuYW1lID0gJ2Vycm5vJworICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KKyAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCisgICAgdHJ5OgorICAgICAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgICAgICMgQ2xlYXJzIG91dCBzeXMubW9kdWxlcyBhbmQgcHV0cyBhbiBlbnRyeSBhdCB0aGUgZnJvbnQgb2Ygc3lzLnBhdGguCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyKQorICAgICAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKGxvYWRlcikpCisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKKworCitkZWYgX3dvX2J5dGVjb2RlKG1vZHVsZSk6CisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGRlZiBiZW5jaG1hcmtfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAgICAgIiIiU291cmNlIHcvbyBieXRlY29kZToge30iIiIKKyAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgb3MudW5saW5rKGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQorCisgICAgYmVuY2htYXJrX3dvX2J5dGVjb2RlLl9fZG9jX18gPSBiZW5jaG1hcmtfd29fYnl0ZWNvZGUuX19kb2NfXy5mb3JtYXQobmFtZSkKKyAgICByZXR1cm4gYmVuY2htYXJrX3dvX2J5dGVjb2RlCisKK3RhYm5hbm55X3dvX2J5dGVjb2RlID0gX3dvX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF93b19ieXRlY29kZSA9IF93b19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisgICAgICAgIGxvYWRlciA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQorICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgX3dyaXRpbmdfYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrKHNlY29uZHMsIHJlcGVhdCk6CisgICAgICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiB7fSIiIgorICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIGRlZiBjbGVhbnVwKCk6CisgICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKKyAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKyAgICB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKKyAgICByZXR1cm4gd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsKKwordGFibmFubnlfd3JpdGluZ19ieXRlY29kZSA9IF93cml0aW5nX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlID0gX3dyaXRpbmdfYnl0ZWNvZGUoZGVjaW1hbCkKKworCitkZWYgc291cmNlX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHcvIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcikKKyAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBfdXNpbmdfYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyayhzZWNvbmRzLCByZXBlYXQpOgorICAgICAgICAiIiJTb3VyY2Ugdy8gYnl0ZWNvZGU6IHt9IiIiCisgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtb2R1bGUuX19maWxlX18pCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisgICAgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18gPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKKyAgICByZXR1cm4gdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrCisKK3RhYm5hbm55X3VzaW5nX2J5dGVjb2RlID0gX3VzaW5nX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF91c2luZ19ieXRlY29kZSA9IF91c2luZ19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBtYWluKGltcG9ydF8sIG9wdGlvbnMpOgorICAgIGlmIG9wdGlvbnMuc291cmNlX2ZpbGU6CisgICAgICAgIHdpdGggb3B0aW9ucy5zb3VyY2VfZmlsZToKKyAgICAgICAgICAgIHByZXZfcmVzdWx0cyA9IGpzb24ubG9hZChvcHRpb25zLnNvdXJjZV9maWxlKQorICAgIGVsc2U6CisgICAgICAgIHByZXZfcmVzdWx0cyA9IHt9CisgICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRfCisgICAgYmVuY2htYXJrcyA9IChmcm9tX2NhY2hlLCBidWlsdGluX21vZCwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZV93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgc291cmNlX3dvX2J5dGVjb2RlLCBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICB0YWJuYW5ueV93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgdGFibmFubnlfd29fYnl0ZWNvZGUsIHRhYm5hbm55X3VzaW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgZGVjaW1hbF93b19ieXRlY29kZSwgZGVjaW1hbF91c2luZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICApCisgICAgaWYgb3B0aW9ucy5iZW5jaG1hcms6CisgICAgICAgIGZvciBiIGluIGJlbmNobWFya3M6CisgICAgICAgICAgICBpZiBiLl9fZG9jX18gPT0gb3B0aW9ucy5iZW5jaG1hcms6CisgICAgICAgICAgICAgICAgYmVuY2htYXJrcyA9IFtiXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgnVW5rbm93biBiZW5jaG1hcms6IHshcn0nLmZvcm1hdChvcHRpb25zLmJlbmNobWFyaywKKyAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgIHNlY29uZHMgPSAxCisgICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJworICAgIHJlcGVhdCA9IDMKKyAgICBoZWFkZXIgPSAoJ01lYXN1cmluZyBpbXBvcnRzL3NlY29uZCBvdmVyIHt9IHNlY29uZHt9LCBiZXN0IG91dCBvZiB7fVxuJworICAgICAgICAgICAgICAnRW50aXJlIGJlbmNobWFyayBydW4gc2hvdWxkIHRha2UgYWJvdXQge30gc2Vjb25kc1xuJworICAgICAgICAgICAgICAnVXNpbmcgeyFyfSBhcyBfX2ltcG9ydF9fXG4nKQorICAgIHByaW50KGhlYWRlci5mb3JtYXQoc2Vjb25kcywgc2Vjb25kc19wbHVyYWwsIHJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbihiZW5jaG1hcmtzKSAqIHNlY29uZHMgKiByZXBlYXQsIF9faW1wb3J0X18pKQorICAgIG5ld19yZXN1bHRzID0ge30KKyAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6CisgICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKKyAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKKyAgICAgICAgbmV3X3Jlc3VsdHNbYmVuY2htYXJrLl9fZG9jX19dID0gcmVzdWx0cworICAgIGlmIHByZXZfcmVzdWx0czoKKyAgICAgICAgcHJpbnQoJ1xuXG5Db21wYXJpbmcgbmV3IHZzLiBvbGRcbicpCisgICAgICAgIGZvciBiZW5jaG1hcmsgaW4gYmVuY2htYXJrczoKKyAgICAgICAgICAgIGJlbmNobWFya19uYW1lID0gYmVuY2htYXJrLl9fZG9jX18KKyAgICAgICAgICAgIG9sZF9yZXN1bHQgPSBtYXgocHJldl9yZXN1bHRzW2JlbmNobWFya19uYW1lXSkKKyAgICAgICAgICAgIG5ld19yZXN1bHQgPSBtYXgobmV3X3Jlc3VsdHNbYmVuY2htYXJrX25hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gJ3s6LGR9IHZzLiB7OixkfSAoezolfSknLmZvcm1hdChuZXdfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yZXN1bHQvb2xkX3Jlc3VsdCkKKyAgICAgICAgICAgIHByaW50KGJlbmNobWFya19uYW1lLCAnOicsIHJlc3VsdCkKKyAgICBpZiBvcHRpb25zLmRlc3RfZmlsZToKKyAgICAgICAgd2l0aCBvcHRpb25zLmRlc3RfZmlsZToKKyAgICAgICAgICAgIGpzb24uZHVtcChuZXdfcmVzdWx0cywgb3B0aW9ucy5kZXN0X2ZpbGUsIGluZGVudD0yKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmVhZCcsIGRlc3Q9J3NvdXJjZV9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3InKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gcmVhZCBiZW5jaG1hcmsgZGF0YSBmcm9tIHRvIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWdhaW5zdCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXcnLCAnLS13cml0ZScsIGRlc3Q9J2Rlc3RfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCd3JyksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHdyaXRlIGJlbmNobWFyayBkYXRhIHRvJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJlbmNobWFyaycsIGRlc3Q9J2JlbmNobWFyaycsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZpYyBiZW5jaG1hcmsgdG8gcnVuJykKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGltcG9ydF8gPSBfX2ltcG9ydF9fCisgICAgaWYgbm90IG9wdGlvbnMuYnVpbHRpbjoKKyAgICAgICAgaW1wb3J0XyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCisKKyAgICBtYWluKGltcG9ydF8sIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkgYi9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkKaW5kZXggNWVjNmYxNy4uNTMwYmM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5CisrKyBiL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weQpAQCAtMSwxMyArMSwxMiBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICMgVGhpcyBmaWxlIHNob3VsZCBiZSBrZXB0IGNvbXBhdGlibGUgd2l0aCBib3RoIFB5dGhvbiAyLjYgYW5kIFB5dGhvbiA+PSAzLjAuCiAKLWltcG9ydCB0aW1lCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHRpbWUKIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgogCiBvdXQgPSBzeXMuc3Rkb3V0CkBAIC0zMDcsNiArMzA2LDE2IEBACiAgICAgICAgICJsYXJnZSI6IDIsCiAgICAgfQogCisgICAgcHJpbnQoIlB5dGhvbiAlcyIgJSBzeXMudmVyc2lvbikKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgICAgIHRleHQgPSAiVUNTLTQgKHdpZGUgYnVpbGQpIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dCA9ICJVVEYtMTYgKG5hcnJvdyBidWlsZCkiCisgICAgZWxzZToKKyAgICAgICAgdGV4dCA9ICJQRVAgMzkzIgorICAgIHByaW50KCJVbmljb2RlOiAlcyIgJSB0ZXh0KQorICAgIHByaW50KHBsYXRmb3JtLnBsYXRmb3JtKCkpCiAgICAgYmluYXJ5X2ZpbGVzID0gbGlzdChnZXRfYmluYXJ5X2ZpbGVzKCkpCiAgICAgdGV4dF9maWxlcyA9IGxpc3QoZ2V0X3RleHRfZmlsZXMoKSkKICAgICBpZiAiYiIgaW4gb3B0aW9uczoKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHkgYi9Ub29scy9tc2kvbXNpLnB5CmluZGV4IDUwODgxNmQuLjJlYzY5NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHkKKysrIGIvVG9vbHMvbXNpL21zaS5weQpAQCAtMiwxMiArMiwxMSBAQAogIyAoQykgMjAwMyBNYXJ0aW4gdi4gTG9ld2lzCiAjIFNlZSAiRk9PIiBpbiBjb21tZW50cyByZWZlcnMgdG8gTVNETiBzZWN0aW9ucyB3aXRoIHRoZSB0aXRsZSBGT08uCiBpbXBvcnQgbXNpbGliLCBzY2hlbWEsIHNlcXVlbmNlLCBvcywgZ2xvYiwgdGltZSwgcmUsIHNodXRpbCwgemlwZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MsIHRlbXBmaWxlCiBmcm9tIG1zaWxpYiBpbXBvcnQgRmVhdHVyZSwgQ0FCLCBEaXJlY3RvcnksIERpYWxvZywgQmluYXJ5LCBhZGRfZGF0YQogaW1wb3J0IHVpc2FtcGxlCiBmcm9tIHdpbjMyY29tLmNsaWVudCBpbXBvcnQgY29uc3RhbnRzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi1mcm9tIHV1aWRzIGltcG9ydCBwcm9kdWN0X2NvZGVzCi1pbXBvcnQgdGVtcGZpbGUKIAogIyBTZXR0aW5ncyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBjb25maWcucHkgYmVsb3cKICMgMCBmb3Igb2ZmaWNpYWwgcHl0aG9uLm9yZyByZWxlYXNlcwpAQCAtMjgsNyArMjcsNyBAQAogIyBwYXRoIHRvIFBDYnVpbGQgZGlyZWN0b3J5CiBQQ0JVSUxEPSJQQ2J1aWxkIgogIyBtc3ZjcnQgdmVyc2lvbgotTVNWQ1IgPSAiOTAiCitNU1ZDUiA9ICIxMDAiCiAjIE5hbWUgb2YgY2VydGlmaWNhdGUgaW4gZGVmYXVsdCBzdG9yZSB0byBzaWduIE1TSSB3aXRoCiBjZXJ0bmFtZSA9IE5vbmUKICMgTWFrZSBhIHppcCBmaWxlIGNvbnRhaW5pbmcgdGhlIFBEQiBmaWxlcyBmb3IgdGhpcyBidWlsZD8KQEAgLTc3LDE5ICs3NiwxNiBAQAogCiBpZiBzbmFwc2hvdDoKICAgICBjdXJyZW50X3ZlcnNpb24gPSAiJXMuJXMuJXMiICUgKG1ham9yLCBtaW5vciwgaW50KHRpbWUudGltZSgpLzM2MDAvMjQpKQotICAgIHByb2R1Y3RfY29kZSA9IG1zaWxpYi5nZW5fdXVpZCgpCi1lbHNlOgotICAgIHByb2R1Y3RfY29kZSA9IHByb2R1Y3RfY29kZXNbY3VycmVudF92ZXJzaW9uXQogCiBpZiBmdWxsX2N1cnJlbnRfdmVyc2lvbiBpcyBOb25lOgogICAgIGZ1bGxfY3VycmVudF92ZXJzaW9uID0gY3VycmVudF92ZXJzaW9uCiAKIGV4dGVuc2lvbnMgPSBbCi0gICAgJ2J6Mi5weWQnLAogICAgICdweWV4cGF0LnB5ZCcsCiAgICAgJ3NlbGVjdC5weWQnLAogICAgICd1bmljb2RlZGF0YS5weWQnLAogICAgICd3aW5zb3VuZC5weWQnLAorICAgICdfYnoyLnB5ZCcsCiAgICAgJ19lbGVtZW50dHJlZS5weWQnLAogICAgICdfc29ja2V0LnB5ZCcsCiAgICAgJ19zc2wucHlkJywKQEAgLTEwMCw3ICs5NiwxMCBAQAogICAgICdfY3R5cGVzX3Rlc3QucHlkJywKICAgICAnX3NxbGl0ZTMucHlkJywKICAgICAnX2hhc2hsaWIucHlkJywKLSAgICAnX211bHRpcHJvY2Vzc2luZy5weWQnCisgICAgJ19tdWx0aXByb2Nlc3NpbmcucHlkJywKKyAgICAnX2x6bWEucHlkJywKKyAgICAnX2RlY2ltYWwucHlkJywKKyAgICAnX3Rlc3RidWZmZXIucHlkJwogXQogCiAjIFdlbGwta25vd24gY29tcG9uZW50IFVVSURzCkBAIC0xMTksMTIgKzExOCwxMSBAQAogICAgICIzMCI6Ins2OTUzYmMzYi02NzY4LTQyOTEtODQxMC03OTE0Y2U2ZTJjYTh9IiwKICAgICAiMzEiOiJ7NGFmY2JhMGItMTNlNC00N2MzLWJlYmUtNDc3NDI4YjQ2OTEzfSIsCiAgICAgIjMyIjoiezNmZjk1MzE1LTEwOTYtNGQzMS1iZDg2LTYwMWQ1NDM4YWQ1ZX0iLAorICAgICIzMyI6IntmNzU4MWNhNC1kMzY4LTRlZWEtOGY4Mi1kNDhjNjRjNGYwNDd9IiwKICAgICB9IFttYWpvcittaW5vcl0KIAogIyBDb21wdXRlIHRoZSBuYW1lIHRoYXQgU3BoaW54IGdpdmVzIHRvIHRoZSBkb2NmaWxlCi1kb2NmaWxlID0gIiIKLWlmIGludChtaWNybyk6Ci0gICAgZG9jZmlsZSA9IG1pY3JvCitkb2NmaWxlID0gbWljcm8KIGlmIGxldmVsIDwgMHhmOgogICAgIGlmIGxldmVsID09IDB4QzoKICAgICAgICAgZG9jZmlsZSArPSAicmMlcyIgJSAoc2VyaWFsLCkKQEAgLTE4NSwxMiArMTgzLDE5IEBACiBtc2lsaWIuc2V0X2FyY2hfZnJvbV9maWxlKGRsbF9wYXRoKQogaWYgbXNpbGliLnBlX3R5cGUoZGxsX3BhdGgpICE9IG1zaWxpYi5wZV90eXBlKCJtc2lzdXBwb3J0LmRsbCIpOgogICAgIHJhaXNlIFN5c3RlbUVycm9yKCJtc2lzdXBwb3J0LmRsbCBmb3IgaW5jb3JyZWN0IGFyY2hpdGVjdHVyZSIpCisKIGlmIG1zaWxpYi5XaW42NDoKICAgICB1cGdyYWRlX2NvZGUgPSB1cGdyYWRlX2NvZGVfNjQKLSAgICAjIEJ1bXAgdGhlIGxhc3QgZGlnaXQgb2YgdGhlIGNvZGUgYnkgb25lLCBzbyB0aGF0IDMyLWJpdCBhbmQgNjQtYml0Ci0gICAgIyByZWxlYXNlcyBnZXQgc2VwYXJhdGUgcHJvZHVjdCBjb2RlcwotICAgIGRpZ2l0ID0gaGV4KChpbnQocHJvZHVjdF9jb2RlWy0yXSwxNikrMSklMTYpWy0xXQotICAgIHByb2R1Y3RfY29kZSA9IHByb2R1Y3RfY29kZVs6LTJdICsgZGlnaXQgKyAnfScKKworaWYgc25hcHNob3Q6CisgICAgcHJvZHVjdF9jb2RlID0gbXNpbGliLmdlbl91dWlkKCkKK2Vsc2U6CisgICAgIyBvZmZpY2lhbCByZWxlYXNlOiBnZW5lcmF0ZSBVVUlEIGZyb20gdGhlIGRvd25sb2FkIGxpbmsgdGhhdCB0aGUgZmlsZSB3aWxsIGhhdmUKKyAgICBpbXBvcnQgdXVpZAorICAgIHByb2R1Y3RfY29kZSA9IHV1aWQudXVpZDModXVpZC5OQU1FU1BBQ0VfVVJMLAorICAgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJXMuJXMuJXMvcHl0aG9uLSVzJXMubXNpJyAlCisgICAgICAgICAgICAgICAgICAgIChtYWpvciwgbWlub3IsIG1pY3JvLCBmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KSkKKyAgICBwcm9kdWN0X2NvZGUgPSAneyVzfScgJSBwcm9kdWN0X2NvZGUKIAogaWYgdGVzdHBhY2thZ2U6CiAgICAgZXh0ID0gJ3B4JwpAQCAtMjgxLDcgKzI4Niw3IEBACiAgICAgICAgICAgICAgIE5vbmUsIG1pZ3JhdGVfZmVhdHVyZXMsIE5vbmUsICJSRU1PVkVPTERTTkFQU0hPVCIpXSkKICAgICAgICAgcHJvcHMgPSAiUkVNT1ZFT0xEU05BUFNIT1Q7UkVNT1ZFT0xEVkVSU0lPTiIKIAotICAgIHByb3BzICs9ICI7VEFSR0VURElSO0RMTERJUiIKKyAgICBwcm9wcyArPSAiO1RBUkdFVERJUjtETExESVI7TEFVTkNIRVJESVIiCiAgICAgIyBJbnN0YWxsZXIgY29sbGVjdHMgdGhlIHByb2R1Y3QgY29kZXMgb2YgdGhlIGVhcmxpZXIgcmVsZWFzZXMgaW4KICAgICAjIHRoZXNlIHByb3BlcnRpZXMuIEluIG9yZGVyIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiB0aGUgcHJvcGVydGllcywKICAgICAjIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBhcyBzZWN1cmUuIFNlZSAiU2VjdXJlQ3VzdG9tUHJvcGVydGllcyBQcm9wZXJ0eSIKQEAgLTQxMCw3ICs0MTUsNyBAQAogICAgICAgICAgICAgICAoIlZlcmRhbmFSZWQ5IiwgIlZlcmRhbmEiLCA5LCAyNTUsIDApLAogICAgICAgICAgICAgIF0pCiAKLSAgICBjb21waWxlYXJncyA9IHInLVdpICJbVEFSR0VURElSXUxpYlxjb21waWxlYWxsLnB5IiAtZiAteCAiYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xweTJffGxpYjJ0bzNcXHRlc3RzIiAiW1RBUkdFVERJUl1MaWIiJworICAgIGNvbXBpbGVhcmdzID0gcictV2kgIltUQVJHRVRESVJdTGliXGNvbXBpbGVhbGwucHkiIC1mIC14ICJiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfHB5Ml98bGliMnRvM1xcdGVzdHN8dmVudlxcc2NyaXB0cyIgIltUQVJHRVRESVJdTGliIicKICAgICBsaWIydG8zYXJncyA9IHInLWMgImltcG9ydCBsaWIydG8zLnB5Z3JhbSwgbGliMnRvMy5wYXRjb21wO2xpYjJ0bzMucGF0Y29tcC5QYXR0ZXJuQ29tcGlsZXIoKSInCiAgICAgIyBTZWUgIkN1c3RvbUFjdGlvbiBUYWJsZSIKICAgICBhZGRfZGF0YShkYiwgIkN1c3RvbUFjdGlvbiIsIFsKQEAgLTQyMSw2ICs0MjYsOCBAQAogICAgICAgICAgIltXaW5kb3dzVm9sdW1lXVB5dGhvbiVzJXMiICUgKG1ham9yLCBtaW5vcikpLAogICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgMzA3LCAiRExMRElSIiwgIltUQVJHRVRESVJdIiksCiAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsIDMwNywgIkRMTERJUiIsIFN5c3RlbUZvbGRlck5hbWUpLAorICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbVEFSR0VURElSXSIpLAorICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1dpbmRvd3NGb2xkZXJdIiksCiAgICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlRXhlICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlU291cmNlRmlsZQogICAgICAgICAjIFNlZSAiQ3VzdG9tIEFjdGlvbiBUeXBlIDE4IgogICAgICAgICAoIkNvbXBpbGVQeWMiLCAxOCwgInB5dGhvbi5leGUiLCBjb21waWxlYXJncyksCkBAIC00MzcsNiArNDQ0LDggQEAKICAgICAgICAgICAgICAgIyBJbiB0aGUgdXNlciBpbnRlcmZhY2UsIGFzc3VtZSBhbGwtdXNlcnMgaW5zdGFsbGF0aW9uIGlmIHByaXZpbGVnZWQuCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKICAgICAgICAgICAgICAgKCJTZWxlY3REaXJlY3RvcnlEbGciLCAiTm90IEluc3RhbGxlZCIsIDEyMzApLAogICAgICAgICAgICAgICAjIFhYWCBubyBzdXBwb3J0IGZvciByZXN1bWUgaW5zdGFsbGF0aW9ucyB5ZXQKICAgICAgICAgICAgICAgIygiUmVzdW1lRGxnIiwgIkluc3RhbGxlZCBBTkQgKFJFU1VNRSBPUiBQcmVzZWxlY3RlZCkiLCAxMjQwKSwKQEAgLTQ0NSwxMyArNDU0LDIwIEBACiAgICAgYWRkX2RhdGEoZGIsICJBZG1pblVJU2VxdWVuY2UiLAogICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAogICAgICAgICAgICAgIF0pCiAKKyAgICAjIFByZXBlbmQgVEFSR0VURElSIHRvIHRoZSBzeXN0ZW0gcGF0aCwgYW5kIHJlbW92ZSBpdCBvbiB1bmluc3RhbGwuCisgICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCisgICAgICAgICAgICAgWygiUGF0aEFkZGl0aW9uIiwgIj0tKlBhdGgiLCAiW1RBUkdFVERJUl07W35dIiwgIlJFR0lTVFJZLnBhdGgiKV0pCisKICAgICAjIEV4ZWN1dGUgU2VxdWVuY2VzCiAgICAgYWRkX2RhdGEoZGIsICJJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlIiwKICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCiAgICAgICAgICAgICAgKCJVcGRhdGVFZGl0SURMRSIsIE5vbmUsIDEwNTApLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNjgwMCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA2ODAxKSwKQEAgLTQ2MCw2ICs0NzYsNyBAQAogICAgIGFkZF9kYXRhKGRiLCAiQWRtaW5FeGVjdXRlU2VxdWVuY2UiLAogICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiJywgNzUxKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNjgwMCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA2ODAxKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVHcmFtbWFyIiwgIkNPTVBJTEVBTEwiLCA2ODAyKSwKQEAgLTY3MCwxMSArNjg3LDExIEBACiAgICAgYz1mZWF0dXJlcy54YnV0dG9uKCJBZHZhbmNlZCIsICJBZHZhbmNlZCIsIE5vbmUsIDAuMzApCiAgICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQWR2YW5jZWREbGciKQogCi0gICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtRGVzY3JpcHRpb24iLCAxNDAsIDE4MCwgMjEwLCAzMCwgMywKKyAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDQwLCAzLAogICAgICAgICAgICAgICAgICAgIk11bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKICAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbkRlc2NyaXB0aW9uIiwiVGV4dCIpCiAKLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMTAsIDIxMCwgNDUsIDMsCisgICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtU2l6ZSIsIDE0MCwgMjI1LCAyMTAsIDMzLCAzLAogICAgICAgICAgICAgICAgICAgICAiVGhlIHNpemUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLiIpCiAgICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25TaXplIiwgIlRleHQiKQogCkBAIC04MjgsNyArODQ1LDcgQEAKICAgICAjIChpLmUuIGFkZGl0aW9uYWwgUHl0aG9uIGxpYnJhcmllcykgbmVlZCB0byBmb2xsb3cgdGhlIHBhcmVudCBmZWF0dXJlLgogICAgICMgRmVhdHVyZXMgdGhhdCBoYXZlIG5vIGFkdmVydGlzZW1lbnQgdHJpZ2dlciAoZS5nLiB0aGUgdGVzdCBzdWl0ZSkKICAgICAjIG11c3Qgbm90IHN1cHBvcnQgYWR2ZXJ0aXNlbWVudAotICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydAorICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydCwgcHJlcGVuZF9wYXRoCiAgICAgZGVmYXVsdF9mZWF0dXJlID0gRmVhdHVyZShkYiwgIkRlZmF1bHRGZWF0dXJlIiwgIlB5dGhvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEludGVycHJldGVyIGFuZCBMaWJyYXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZGlyZWN0b3J5ID0gIlRBUkdFVERJUiIpCkBAIC04NDgsMzIgKzg2NSwzOCBAQAogICAgIGh0bWxmaWxlcyA9IEZlYXR1cmUoZGIsICJEb2N1bWVudGF0aW9uIiwgIkRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBIVE1MSGVscCBGaWxlIiwgNywgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlKQogICAgIHRvb2xzID0gRmVhdHVyZShkYiwgIlRvb2xzIiwgIlV0aWxpdHkgU2NyaXB0cyIsCi0gICAgICAgICAgICAgICAgICAgICJQeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8iLCA5LAorICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKSIsIDksCiAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yKQogICAgIHRlc3RzdWl0ZSA9IEZlYXR1cmUoZGIsICJUZXN0c3VpdGUiLCAiVGVzdCBzdWl0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykiLCAxMSwKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCisgICAgIyBwcmVwZW5kX3BhdGggaXMgYW4gYWRkaXRpb25hbCBmZWF0dXJlIHdoaWNoIGlzIHRvIGJlIG9mZiBieSBkZWZhdWx0LgorICAgICMgU2luY2UgdGhlIGRlZmF1bHQgbGV2ZWwgZm9yIHRoZSBhYm92ZSBmZWF0dXJlcyBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlCisgICAgIyBhdCBsZWFzdCBsZXZlbCBoaWdoZXIuCisgICAgcHJlcGVuZF9wYXRoID0gRmVhdHVyZShkYiwgIlByZXBlbmRQYXRoIiwgIkFkZCBweXRob24uZXhlIHRvIFBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBlbmQgW1RBUkdFVERJUl0gdG8gdGhlIHN5c3RlbSBQYXRoIHZhcmlhYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUgJ3B5dGhvbicgaW50byBhIGNvbW1hbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInByb21wdCB3aXRob3V0IG5lZWRpbmcgdGhlIGZ1bGwgcGF0aC4iLCAxMywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgsCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0yKQogCi1kZWYgZXh0cmFjdF9tc3ZjcjkwKCk6CitkZWYgZXh0cmFjdF9tc3ZjcjEwMCgpOgogICAgICMgRmluZCB0aGUgcmVkaXN0cmlidXRhYmxlIGZpbGVzCiAgICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBhcmNoID0gImFtZDY0IgorICAgICAgICBhcmNoID0gIng2NCIKICAgICBlbHNlOgogICAgICAgICBhcmNoID0gIng4NiIKLSAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlM5MENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkM5MC5DUlQiICUgYXJjaCkKKyAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlMxMDBDT01OVE9PTFMnXSwgciIuLlwuLlxWQ1xyZWRpc3RcJXNcTWljcm9zb2Z0LlZDMTAwLkNSVCIgJSBhcmNoKQogCiAgICAgcmVzdWx0ID0gW10KICAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgIyBvbWl0IG1zdmNtOTAgYW5kIG1zdmNwOTAsIGFzIHRoZXkgYXJlbid0IHJlYWxseSBuZWVkZWQKLSAgICBmaWxlcyA9IFsiTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IiwgIm1zdmNyOTAuZGxsIl0KLSAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIGYpCi0gICAgICAgIGt3ID0geydzcmMnOnBhdGh9Ci0gICAgICAgIGlmIGYuZW5kc3dpdGgoJy5kbGwnKToKLSAgICAgICAgICAgIGt3Wyd2ZXJzaW9uJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMCkKLSAgICAgICAgICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoKGYsIGt3KSkKLSAgICByZXR1cm4gcmVzdWx0CisgICAgIyBBdCBsZWFzdCBmb3IgVlMyMDEwLCBtYW5pZmVzdHMgYXJlIG5vIGxvbmdlciBwcm92aWRlZAorICAgIG5hbWUgPSAibXN2Y3IxMDAuZGxsIgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBuYW1lKQorICAgIGt3ID0geydzcmMnOnBhdGh9CisgICAga3dbJ3ZlcnNpb24nXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAwKQorICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCisgICAgcmV0dXJuIG5hbWUsIGt3CiAKIGRlZiBnZW5lcmF0ZV9saWNlbnNlKCk6CiAgICAgaW1wb3J0IHNodXRpbCwgZ2xvYgpAQCAtODg5LDcgKzkxMiw3IEBACiAgICAgICAgIGRpcnMgPSBnbG9iLmdsb2Ioc3JjZGlyKyIvLi4vIitwYXQpCiAgICAgICAgIGlmIG5vdCBkaXJzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIkNvdWxkIG5vdCBmaW5kICIrc3JjZGlyKyIvLi4vIitwYXQKLSAgICAgICAgaWYgbGVuKGRpcnMpID4gMjoKKyAgICAgICAgaWYgbGVuKGRpcnMpID4gMiBhbmQgbm90IHNuYXBzaG90OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIk11bHRpcGxlIGNvcGllcyBvZiAiK3BhdAogICAgICAgICBkaXIgPSBkaXJzWzBdCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKG9zLnBhdGguam9pbihkaXIsIGZpbGUpKSwgb3V0KQpAQCAtOTA0LDE2ICs5MjcsMjggQEAKICAgICAgICAgICAgIGt3Wydjb21wb25lbnRmbGFncyddID0gMiAjbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzT3B0aW9uYWwKICAgICAgICAgRGlyZWN0b3J5Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQogCi0gICAgZGVmIGNoZWNrX3VucGFja2FnZWQoc2VsZik6Ci0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5kaXNjYXJkKCdfX3B5Y2FjaGVfXycpCi0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5kaXNjYXJkKCcuc3ZuJykKLSAgICAgICAgaWYgc2VsZi51bnBhY2thZ2VkX2ZpbGVzOgotICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6IFVucGFja2FnZWQgZmlsZXMgaW4gJXMiICUgc2VsZi5hYnNvbHV0ZQotICAgICAgICAgICAgcHJpbnQgc2VsZi51bnBhY2thZ2VkX2ZpbGVzCitkZWYgaGdtYW5pZmVzdCgpOgorICAgICMgRmV0Y2ggZmlsZSBsaXN0IGZyb20gTWVyY3VyaWFsCisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICdtYW5pZmVzdCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgIyBDcmVhdGUgbmVzdGVkIGRpcmVjdG9yaWVzIGZvciBmaWxlIHRyZWUKKyAgICByZXN1bHQgPSB7fQorICAgIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIGNvbXBvbmVudHMgPSBsaW5lLnNwbGl0KCcvJykKKyAgICAgICAgZCA9IHJlc3VsdAorICAgICAgICB3aGlsZSBsZW4oY29tcG9uZW50cykgPiAxOgorICAgICAgICAgICAgZDEgPSBkLnNldGRlZmF1bHQoY29tcG9uZW50c1swXSwge30pCisgICAgICAgICAgICBkID0gZDEKKyAgICAgICAgICAgIGRlbCBjb21wb25lbnRzWzBdCisgICAgICAgIGRbY29tcG9uZW50c1swXV0gPSBOb25lCisgICAgcmV0dXJuIHJlc3VsdAorCiAKICMgU2VlICJGaWxlIFRhYmxlIiwgIkNvbXBvbmVudCBUYWJsZSIsICJEaXJlY3RvcnkgVGFibGUiLAogIyAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiCiBkZWYgYWRkX2ZpbGVzKGRiKToKKyAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCisgICAgaGdmaWxlcyA9IGhnbWFuaWZlc3QoKQogICAgIGNhYiA9IENBQigicHl0aG9uIikKICAgICB0bXBmaWxlcyA9IFtdCiAgICAgIyBBZGQgYWxsIGV4ZWN1dGFibGVzLCBpY29ucywgdGV4dCBmaWxlcyBpbnRvIHRoZSBUQVJHRVRESVIgY29tcG9uZW50CkBAIC05MzIsMTEgKzk2NywzMiBAQAogCiAgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNTaGFyZWREbGxSZWZDb3VudCA9IDgsIHNlZSAiQ29tcG9uZW50IFRhYmxlIgogICAgIGRsbGRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkRMTERJUiIsICIuIikKKyAgICBsYXVuY2hlcmRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkxBVU5DSEVSRElSIiwgIi4iKQorCisgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXM2NGJpdCA9IDI1NjsgdGhpcyBkaXNhYmxlcyByZWdpc3RyeSByZWRpcmVjdGlvbgorICAgICMgdG8gYWxsb3cgc2V0dGluZyB0aGUgU2hhcmVkRExMcyBrZXkgaW4gdGhlIDY0LWJpdCBwb3J0aW9uIGV2ZW4gZm9yIGEKKyAgICAjIDMyLWJpdCBpbnN0YWxsZXIuCisgICAgIyBYWFggZG9lcyB0aGlzIHN0aWxsIGFsbG93IHRvIGluc3RhbGwgdGhlIGNvbXBvbmVudCBvbiBhIDMyLWJpdCBzeXN0ZW0/CisgICAgIyBQaWNrIHVwIDMyLWJpdCBiaW5hcnkgYWx3YXlzCisgICAgbGF1bmNoZXJzcmMgPSBQQ0JVSUxECisgICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxceDY0LXBnbyc6CisgICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGRcXHdpbjMyLXBnbycKKyAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFxhbWQ2NCc6CisgICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGQnCisgICAgbGF1bmNoZXIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuc3RhcnRfY29tcG9uZW50KCJsYXVuY2hlciIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXIsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMSkpCisgICAgbGF1bmNoZXJ3ID0gb3MucGF0aC5qb2luKHNyY2RpciwgbGF1bmNoZXJzcmMsICJweXcuZXhlIikKKyAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVydyIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5dy5leGUiKQorICAgIGxhdW5jaGVyZGlyLmFkZF9maWxlKGxhdW5jaGVydywKKyAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlcncsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlcncsIDEpKQogCiAgICAgcHlkbGwgPSAicHl0aG9uJXMlcy5kbGwiICUgKG1ham9yLCBtaW5vcikKICAgICBweWRsbHNyYyA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsIHB5ZGxsKQogICAgIGRsbGRpci5zdGFydF9jb21wb25lbnQoIkRMTERJUiIsIGZsYWdzID0gOCwga2V5ZmlsZSA9IHB5ZGxsLCB1dWlkID0gcHl0aG9uZGxsX3V1aWQpCi0gICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQogICAgIHB5dmVyc2lvbiA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihweWRsbHNyYywgMCkKICAgICBpZiBub3Qgc25hcHNob3Q6CiAgICAgICAgICMgRm9yIHJlbGVhc2VzLCB0aGUgUHl0aG9uIERMTCBoYXMgdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUKQEAgLTk1Miw5ICsxMDA4LDggQEAKICAgICAjIHBvaW50aW5nIHRvIHRoZSByb290IGRpcmVjdG9yeQogICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJtc3ZjcjkwIiwgZmVhdHVyZT1wcml2YXRlX2NydCkKICAgICAjIFJlc3VsdHMgYXJlIElELGtleXdvcmQgcGFpcnMKLSAgICBtYW5pZmVzdCwgY3J0ZGxsID0gZXh0cmFjdF9tc3ZjcjkwKCkKLSAgICByb290LmFkZF9maWxlKG1hbmlmZXN0WzBdLCAqKm1hbmlmZXN0WzFdKQotICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsWzBdLCAqKmNydGRsbFsxXSkKKyAgICBjcnRkbGwsIGt3ZHMgPSBleHRyYWN0X21zdmNyMTAwKCkKKyAgICByb290LmFkZF9maWxlKGNydGRsbCwgKiprd2RzKQogICAgICMgQ29weSB0aGUgbWFuaWZlc3QKICAgICAjIEFjdHVhbGx5LCBkb24ndCBkbyB0aGF0IGFueW1vcmUgLSBubyBETEwgaW4gRExMcyBzaG91bGQgaGF2ZSBhIG1hbmlmZXN0CiAgICAgIyBkZXBlbmRlbmN5IG9uIG1zdmNyOTAuZGxsIGFueW1vcmUsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkKQEAgLTk3NSwxMDQgKzEwMzAsNDAgQEAKIAogICAgICMgQWRkIGFsbCAucHkgZmlsZXMgaW4gTGliLCBleGNlcHQgdGtpbnRlciwgdGVzdAogICAgIGRpcnMgPSBbXQotICAgIHB5ZGlycyA9IFsocm9vdCwiTGliIildCisgICAgcHlkaXJzID0gWyhyb290LCAiTGliIiwgaGdmaWxlc1siTGliIl0sIGRlZmF1bHRfZmVhdHVyZSldCiAgICAgd2hpbGUgcHlkaXJzOgogICAgICAgICAjIENvbW1pdCBldmVyeSBub3cgYW5kIHRoZW4sIG9yIGVsc2UgaW5zdGFsbGVyIHdpbGwgY29tcGxhaW4KICAgICAgICAgZGIuQ29tbWl0KCkKLSAgICAgICAgcGFyZW50LCBkaXIgPSBweWRpcnMucG9wKCkKLSAgICAgICAgaWYgZGlyID09ICIuc3ZuIiBvciBkaXIgPT0gJ19fcHljYWNoZV9fJyBvciBkaXIuc3RhcnRzd2l0aCgicGxhdC0iKToKKyAgICAgICAgcGFyZW50LCBkaXIsIGZpbGVzLCBmZWF0dXJlID0gcHlkaXJzLnBvcCgpCisgICAgICAgIGlmIGRpci5zdGFydHN3aXRoKCJwbGF0LSIpOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAiSWNvbnMiXToKKyAgICAgICAgaWYgZGlyIGluIFsidGtpbnRlciIsICJpZGxlbGliIiwgInR1cnRsZWRlbW8iXToKICAgICAgICAgICAgIGlmIG5vdCBoYXZlX3RjbDoKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmVhdHVyZSA9IHRjbHRrCiAgICAgICAgICAgICB0Y2x0ay5zZXRfY3VycmVudCgpCi0gICAgICAgIGVsaWYgZGlyIGluIFsndGVzdCcsICd0ZXN0cycsICdkYXRhJywgJ291dHB1dCddOgotICAgICAgICAgICAgIyB0ZXN0OiBMaWIsIExpYi9lbWFpbCwgTGliL2N0eXBlcywgTGliL3NxbGl0ZTMKLSAgICAgICAgICAgICMgdGVzdHM6IExpYi9kaXN0dXRpbHMKLSAgICAgICAgICAgICMgZGF0YTogTGliL2VtYWlsL3Rlc3QKLSAgICAgICAgICAgICMgb3V0cHV0OiBMaWIvdGVzdAotICAgICAgICAgICAgdGVzdHN1aXRlLnNldF9jdXJyZW50KCkKKyAgICAgICAgZWxpZiBkaXIgaW4gKCd0ZXN0JywgJ3Rlc3RzJyk6CisgICAgICAgICAgICBmZWF0dXJlID0gdGVzdHN1aXRlCiAgICAgICAgIGVsaWYgbm90IGhhdmVfY3R5cGVzIGFuZCBkaXIgPT0gImN0eXBlcyI6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKKyAgICAgICAgZmVhdHVyZS5zZXRfY3VycmVudCgpCiAgICAgICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHBhcmVudCwgZGlyLCBkaXIsICIlc3wlcyIgJSAocGFyZW50Lm1ha2Vfc2hvcnQoZGlyKSwgZGlyKSkKLSAgICAgICAgIyBBZGQgYWRkaXRpb25hbCBmaWxlcwogICAgICAgICBkaXJzLmFwcGVuZChsaWIpCi0gICAgICAgIGxpYi5nbG9iKCIqLnR4dCIpCi0gICAgICAgIGlmIGRpcj09J3NpdGUtcGFja2FnZXMnOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZmlsZXMgPSBsaWIuZ2xvYigiKi5weSIpCi0gICAgICAgIGZpbGVzICs9IGxpYi5nbG9iKCIqLnB5dyIpCi0gICAgICAgIGlmIGZpbGVzOgotICAgICAgICAgICAgIyBBZGQgYW4gZW50cnkgdG8gdGhlIFJlbW92ZUZpbGUgdGFibGUgdG8gcmVtb3ZlIGJ5dGVjb2RlIGZpbGVzLgotICAgICAgICAgICAgbGliLnJlbW92ZV9weWMoKQotICAgICAgICAjIHBhY2thZ2UgUkVBRE1FcyBpZiBwcmVzZW50Ci0gICAgICAgIGxpYi5nbG9iKCJSRUFETUUiKQotICAgICAgICBpZiBkaXI9PSdMaWInOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCd3c2dpcmVmLmVnZy1pbmZvJykKLSAgICAgICAgaWYgZGlyPT0ndGVzdCcgYW5kIHBhcmVudC5waHlzaWNhbD09J0xpYic6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIjE4NXRlc3QuZGIiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJhdWRpb3Rlc3QuYXUiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJzZ21sX2lucHV0Lmh0bWwiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ0ZXN0dGFyLnRhciIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3RfZGlmZmxpYl9leHBlY3QuaHRtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImNoZWNrX3NvdW5kY2FyZC52YnMiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJlbXB0eS52YnMiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJTaW5lLTEwMDBIei0zMDBtcy5haWYiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJtaW1lLnR5cGVzIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnV1ZSIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiKi5wZW0iKQotICAgICAgICAgICAgbGliLmdsb2IoIioucGNrIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCJjZmdwYXJzZXIuKiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInppcF9jcDQzN19oZWFkZXIuemlwIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiemlwZGlyLnppcCIpCi0gICAgICAgIGlmIGRpcj09J2NhcGF0aCc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi4wIikKLSAgICAgICAgaWYgZGlyPT0ndGVzdHMnIGFuZCBwYXJlbnQucGh5c2ljYWw9PSdkaXN0dXRpbHMnOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJTZXR1cC5zYW1wbGUiKQotICAgICAgICBpZiBkaXI9PSdkZWNpbWFsdGVzdGRhdGEnOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZGVjVGVzdCIpCi0gICAgICAgIGlmIGRpcj09J3htbHRlc3RkYXRhJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnhtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3QueG1sLm91dCIpCi0gICAgICAgIGlmIGRpcj09J291dHB1dCc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigidGVzdF8qIikKLSAgICAgICAgaWYgZGlyPT0nc25kaGRyZGF0YSc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigic25kaGRyLioiKQotICAgICAgICBpZiBkaXI9PSdpZGxlbGliJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLmRlZiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImlkbGUuYmF0IikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiQ2hhbmdlTG9nIikKLSAgICAgICAgaWYgZGlyPT0iSWNvbnMiOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZ2lmIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiaWRsZS5pY25zIikKLSAgICAgICAgaWYgZGlyPT0iY29tbWFuZCIgYW5kIHBhcmVudC5waHlzaWNhbD09ImRpc3R1dGlscyI6Ci0gICAgICAgICAgICBsaWIuZ2xvYigid2luaW5zdCouZXhlIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiY29tbWFuZF90ZW1wbGF0ZSIpCi0gICAgICAgIGlmIGRpcj09ImxpYjJ0bzMiOgotICAgICAgICAgICAgbGliLnJlbW92ZWZpbGUoInBpY2tsZSIsICIqLnBpY2tsZSIpCi0gICAgICAgIGlmIGRpcj09Im1hY2hvbGliIjoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLmN0eXBlcyIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiZmV0Y2hfbWFjaG9saWIqIikKLSAgICAgICAgaWYgZGlyPT0ndHVydGxlZGVtbyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInR1cnRsZS5jZmciKQotICAgICAgICBpZiBkaXI9PSJweWRvY19kYXRhIjoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiX3B5ZG9jLmNzcyIpCi0gICAgICAgIGlmIGRpcj09ImRhdGEiIGFuZCBwYXJlbnQucGh5c2ljYWw9PSJ0ZXN0IiBhbmQgcGFyZW50LmJhc2VkaXIucGh5c2ljYWw9PSJlbWFpbCI6Ci0gICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGNvbnRhaW4gYWxsIG5vbi0uc3ZuIGZpbGVzIGxpc3RlZCBpbiBzdWJ2ZXJzaW9uCi0gICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGxpYi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgiLnR4dCIpIG9yIGY9PSIuc3ZuIjpjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoIi5hdSIpIG9yIGYuZW5kc3dpdGgoIi5naWYiKToKLSAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKGYpCisgICAgICAgIGhhc19weSA9IEZhbHNlCisgICAgICAgIGZvciBuYW1lLCBzdWJkaXIgaW4gZmlsZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHN1YmRpciBpcyBOb25lOgorICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdSRUFETUUnOgorICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IE5ldyBmaWxlICVzIGluIGVtYWlsL3Rlc3QvZGF0YSIgJSBmKQotICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGxpYi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIGYpKToKLSAgICAgICAgICAgICAgICBweWRpcnMuYXBwZW5kKChsaWIsIGYpKQotICAgIGZvciBkIGluIGRpcnM6Ci0gICAgICAgIGQuY2hlY2tfdW5wYWNrYWdlZCgpCisgICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShuYW1lKQorICAgICAgICAgICAgICAgICAgICBoYXNfcHkgPSBoYXNfcHkgb3IgbmFtZS5lbmRzd2l0aCgiLnB5Iikgb3IgbmFtZS5lbmRzd2l0aCgiLnB5dyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQorICAgICAgICAgICAgICAgIHB5ZGlycy5hcHBlbmQoKGxpYiwgbmFtZSwgc3ViZGlyLCBmZWF0dXJlKSkKKworICAgICAgICBpZiBoYXNfcHk6CisgICAgICAgICAgICBsaWIucmVtb3ZlX3B5YygpCiAgICAgIyBBZGQgRExMcwogICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCiAgICAgbGliID0gRExMcwpAQCAtMTE1OSw2ICsxMTUwLDggQEAKICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKICAgICAgICAgaWYgZiA9PSAnU2NyaXB0cyc6CiAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIjJ0bzMucHkiLCBzcmM9IjJ0bzMiKQorICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweWRvYzMucHkiLCBzcmM9InB5ZG9jMyIpCisgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5dmVudi5weSIsIHNyYz0icHl2ZW52IikKICAgICAgICAgICAgIGlmIGhhdmVfdGNsOgogICAgICAgICAgICAgICAgIGxpYi5zdGFydF9jb21wb25lbnQoInB5ZG9jZ3VpLnB5dyIsIHRjbHRrLCBrZXlmaWxlPSJweWRvY2d1aS5weXciKQogICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHlkb2NndWkucHl3IikKQEAgLTExOTAsNiArMTE4Myw4IEBACiAgICAgICAgICAgICAgICAiSW5zdGFsbFBhdGgiKSwKICAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kb2MiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKICAgICAgICAgICAgICAgICJEb2N1bWVudGF0aW9uIiksCisgICAgICAgICAgICAgICgiUkVHSVNUUlkucGF0aCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAorICAgICAgICAgICAgICBOb25lKSwKICAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kZWYiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwKICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUpXSArIHRjbGRhdGEpCiAgICAgIyBTZWUgIkZlYXR1cmVDb21wb25lbnRzIFRhYmxlIi4KQEAgLTEyMDYsNiArMTIwMSw3IEBACiAgICAgYWRkX2RhdGEoZGIsICJGZWF0dXJlQ29tcG9uZW50cyIsCiAgICAgICAgICAgICAgWyhkZWZhdWx0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWSIpLAogICAgICAgICAgICAgICAoaHRtbGZpbGVzLmlkLCAiUkVHSVNUUlkuZG9jIiksCisgICAgICAgICAgICAgIChwcmVwZW5kX3BhdGguaWQsICJSRUdJU1RSWS5wYXRoIiksCiAgICAgICAgICAgICAgIChleHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZLmRlZiIpXSArCiAgICAgICAgICAgICAgIHRjbGRhdGEKICAgICAgICAgICAgICAgKQpAQCAtMTI0NCwxMSArMTI0MCwxMSBAQAogICAgICAgICAgICAgICAidGV4dC9wbGFpbiIsICJSRUdJU1RSWS5kZWYiKSwKICAgICAgICAgICAgICAjVmVyYnMKICAgICAgICAgICAgICAoInB5Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICIiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob24uZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAorICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHkuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICgicHl3Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJOb0NvbiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbncuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAorICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHl3LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKICAgICAgICAgICAgICAoInB5Yy5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob24uZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAorICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHkuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgIF0gKyB0Y2xfdmVyYnMgKyBbCiAgICAgICAgICAgICAgI0ljb25zCiAgICAgICAgICAgICAgKCJweS5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIiIpLCAiIiwKQEAgLTEzNDcsOSArMTM0Myw5IEBACiAjIE1lcmdlIENSVCBpbnRvIE1TSSBmaWxlLiBUaGlzIHJlcXVpcmVzIHRoZSBkYXRhYmFzZSB0byBiZSBjbG9zZWQuCiBtb2RfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIlByb2dyYW1GaWxlcyJdLCAiQ29tbW9uIEZpbGVzIiwgIk1lcmdlIE1vZHVsZXMiKQogaWYgbXNpbGliLldpbjY0OgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzkwX0NSVF94ODZfeDY0Lm1zbSIsICJwb2xpY3lfOV8wX01pY3Jvc29mdF9WQzkwX0NSVF94ODZfeDY0Lm1zbSJdCisgICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDMTAwX0NSVF94NjQubXNtIl0KIGVsc2U6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Ni5tc20iLCJwb2xpY3lfOV8wX01pY3Jvc29mdF9WQzkwX0NSVF94ODYubXNtIl0KKyAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g4Ni5tc20iXQogCiBmb3IgaSwgbiBpbiBlbnVtZXJhdGUobW9kdWxlcyk6CiAgICAgbW9kdWxlc1tpXSA9IG9zLnBhdGguam9pbihtb2RfZGlyLCBuKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaWxpYi5weSBiL1Rvb2xzL21zaS9tc2lsaWIucHkKaW5kZXggNTc5NWQwZS4uNDcyZDlkNCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaWxpYi5weQorKysgYi9Ub29scy9tc2kvbXNpbGliLnB5CkBAIC00MDgsNyArNDA4LDcgQEAKICAgICAgICAgc2VsZi5waHlzaWNhbCA9IHBoeXNpY2FsCiAgICAgICAgIHNlbGYubG9naWNhbCA9IGxvZ2ljYWwKICAgICAgICAgc2VsZi5jb21wb25lbnQgPSBOb25lCi0gICAgICAgIHNlbGYuc2hvcnRfbmFtZXMgPSBzZXRzLlNldCgpCisgICAgICAgIHNlbGYuc2hvcnRfbmFtZXMgPSB7fQogICAgICAgICBzZWxmLmlkcyA9IHNldHMuU2V0KCkKICAgICAgICAgc2VsZi5rZXlmaWxlcyA9IHt9CiAgICAgICAgIHNlbGYuY29tcG9uZW50ZmxhZ3MgPSBjb21wb25lbnRmbGFncwpAQCAtNDU2LDIzICs0NTYsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFsoZmVhdHVyZS5pZCwgY29tcG9uZW50KV0pCiAKICAgICBkZWYgbWFrZV9zaG9ydChzZWxmLCBmaWxlKToKKyAgICAgICAgbG9uZyA9IGZpbGUKICAgICAgICAgZmlsZSA9IHJlLnN1YihyJ1tcP3w+PDovKiIrLDs9XFtcXV0nLCAnXycsIGZpbGUpICMgcmVzdHJpY3Rpb25zIG9uIHNob3J0IG5hbWVzCi0gICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIpCisgICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIsIDEpCiAgICAgICAgIGlmIGxlbihwYXJ0cyk+MToKLSAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWy0xXS51cHBlcigpCisgICAgICAgICAgICBzdWZmaXggPSBwYXJ0c1sxXS51cHBlcigpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdWZmaXggPSBOb25lCisgICAgICAgICAgICBzdWZmaXggPSAnJwogICAgICAgICBwcmVmaXggPSBwYXJ0c1swXS51cHBlcigpCi0gICAgICAgIGlmIGxlbihwcmVmaXgpIDw9IDggYW5kIChub3Qgc3VmZml4IG9yIGxlbihzdWZmaXgpPD0zKToKKyAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgJy4nIG5vdCBpbiBzdWZmaXggYW5kIGxlbihzdWZmaXgpIDw9IDM6CiAgICAgICAgICAgICBpZiBzdWZmaXg6CiAgICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeCsiLiIrc3VmZml4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZpbGUgPSBwcmVmaXgKLSAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzCisgICAgICAgICAgICBhc3NlcnQgZmlsZSBub3QgaW4gc2VsZi5zaG9ydF9uYW1lcywgKGZpbGUsIHNlbGYuc2hvcnRfbmFtZXNbZmlsZV0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOjZdCiAgICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgc3VmZml4ID0gc3VmZml4WzozXQorICAgICAgICAgICAgICAgICMgbGFzdCB0aHJlZSBjaGFyYWN0ZXJzIG9mIGxhc3Qgc3VmZml4CisgICAgICAgICAgICAgICAgc3VmZml4ID0gc3VmZml4LnJzcGxpdCgnLicpWy0xXVs6M10KICAgICAgICAgICAgIHBvcyA9IDEKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgaWYgc3VmZml4OgpAQCAtNDg0LDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0IHBvcyA8IDEwMDAwCiAgICAgICAgICAgICAgICAgaWYgcG9zIGluICgxMCwgMTAwLCAxMDAwKToKICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gcHJlZml4WzotMV0KLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcy5hZGQoZmlsZSkKKyAgICAgICAgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSA9IGxvbmcKICAgICAgICAgcmV0dXJuIGZpbGUKIAogICAgIGRlZiBhZGRfZmlsZShzZWxmLCBmaWxlLCBzcmM9Tm9uZSwgdmVyc2lvbj1Ob25lLCBsYW5ndWFnZT1Ob25lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS91dWlkcy5weSBiL1Rvb2xzL21zaS91dWlkcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkMTdhZC4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvdXVpZHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIFRoaXMgc2hvdWxkIGJlIGV4dGVuZGVkIGZvciBlYWNoIFB5dGhvbiByZWxlYXNlLgotIyBUaGUgcHJvZHVjdCBjb2RlIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBuYW1lIG9mIHRoZSBNU0kgZmlsZQotIyBjaGFuZ2VzLCBhbmQgd2hlbiBuZXcgY29tcG9uZW50IGNvZGVzIGFyZSBpc3N1ZWQgZm9yIGV4aXN0aW5nCi0jIGNvbXBvbmVudHMuIFNlZSAiQ2hhbmdpbmcgdGhlIFByb2R1Y3QgQ29kZSIuIEFzIHdlIGNoYW5nZSB0aGUKLSMgY29tcG9uZW50IGNvZGVzIHdpdGggZXZlcnkgYnVpbGQsIHdlIG5lZWQgYSBuZXcgcHJvZHVjdCBjb2RlCi0jIGVhY2ggdGltZS4gRm9yIGludGVybWVkaWF0ZSAoc25hcHNob3QpIHJlbGVhc2VzLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5Ci0jIGdlbmVyYXRlZC4gRm9yIG9mZmljaWFsIHJlbGVhc2VzLCB3ZSByZWNvcmQgdGhlIHByb2R1Y3QgY29kZXMsCi0jIHNvIHBlb3BsZSBjYW4gcmVmZXIgdG8gdGhlbS4KLXByb2R1Y3RfY29kZXMgPSB7Ci0gICAgJzIuNS4xMDEnOiAne2JjMTRjZTNlLTVlNzItNGE2NC1hYzFmLWJmNTlhNTcxODk4Y30nLCAjIDIuNWExCi0gICAgJzIuNS4xMDInOiAnezVlZWQ1MWMxLThlOWQtNDA3MS05NGM1LWI0MGRlNWQ0OWJhNX0nLCAjIDIuNWEyCi0gICAgJzIuNS4xMDMnOiAnezczZGNkOTY2LWZmZWMtNDE1Zi1iYjM5LTgzNDJjMWY0NzAxN30nLCAjIDIuNWEzCi0gICAgJzIuNS4xMTEnOiAne2M3OTdlY2Y4LWE4ZTYtNGZlYy1iYjk5LTUyNmI2NWYyODYyNn0nLCAjIDIuNWIxCi0gICAgJzIuNS4xMTInOiAnezMyYmViNzc0LWY2MjUtNDM5ZC1iNTg3LTcxODc0ODdiYWYxNX0nLCAjIDIuNWIyCi0gICAgJzIuNS4xMTMnOiAnezg5ZjIzOTE4LTExY2YtNGYwOC1iZTEzLWI5YjJlNjQ2M2ZkOX0nLCAjIDIuNWIzCi0gICAgJzIuNS4xMjEnOiAnezhlOTMyMWJjLTZiMjQtNDhhMy04ZmQ0LWM5NWY4ZTUzMWU1Zn0nLCAjIDIuNWMxCi0gICAgJzIuNS4xMjInOiAne2E2Y2Q1MDhkLTk1OTktNDVkYS1hNDQxLWNiZmZhOWY3ZTA3MH0nLCAjIDIuNWMyCi0gICAgJzIuNS4xNTAnOiAnezBhMmM1ODU0LTU1N2UtNDhjOC04MzVhLTNiOWYwNzRiZGNhYX0nLCAjIDIuNS4wCi0gICAgJzIuNS4xMTIxJzonezAzNzhiNDNlLTYxODQtNGMyZi1iZTFhLTRhMzY3NzgxY2Q1NH0nLCAjIDIuNS4xYzEKLSAgICAnMi41LjExNTAnOid7MzE4MDAwMDQtNjM4Ni00OTk5LWE1MTktNTE4ZjJkNzhkOGYwfScsICMgMi41LjEKLSAgICAnMi41LjIxNTAnOid7NjMwNGE3ZGEtMTEzMi00ZTkxLWEzNDMtYTI5NjI2OWVhYjhhfScsICMgMi41LjJjMQotICAgICcyLjUuMjE1MCc6J3s2Yjk3NmFkZi04YWU4LTQzNGUtYjI4Mi1hMDZjN2Y2MjRkMmZ9JywgIyAyLjUuMgotICAgICcyLjYuMTAxJzogJ3swYmE4MmUxYi01MmZkLTRlMDMtODYxMC1hNmM3NjIzOGU4YTh9JywgIyAyLjZhMQotICAgICcyLjYuMTAyJzogJ3szYjI3ZTE2Yy01NmRiLTQ1NzAtYTJkMy1lOWEyNjE4MGM2MGJ9JywgIyAyLjZhMgotICAgICcyLjYuMTAzJzogJ3tjZDA2YTljNS1iZGU1LTRiZDctOTg3NC00ODkzMzk5NzEyMmF9JywgIyAyLjZhMwotICAgICcyLjYuMTA0JzogJ3tkYzZlZDYzNC00NzRhLTRhNTAtYTU0Ny04ZGU0Yjc0OTFlNTN9JywgIyAyLjZhNAotICAgICcyLjYuMTExJzogJ3szZjgyMDc5YS01YmVlLTRjNGEtOGE0MS04MjkyMzg5ZTI0YWV9JywgIyAyLjZiMQotICAgICcyLjYuMTEyJzogJ3s4YTBlNTk3MC1mM2U2LTQ3MzctOWEyYi1iYzVmZjBmMTVmYjV9JywgIyAyLjZiMgotICAgICcyLjYuMTEzJzogJ3tkZjRmNWMyMS02ZmNjLTQ1NDAtOTVkZS04NWZlYmE2MzRlNzZ9JywgIyAyLjZiMwotICAgICcyLjYuMTIxJzogJ3tiYmQzNDQ2NC1kZGViLTQwMjgtOTllNS1mMTZjNGE4ZmJkYjN9JywgIyAyLjZjMQotICAgICcyLjYuMTIyJzogJ3s4ZjY0Nzg3ZS1hMDIzLTRjNjAtYmZlZS0yNWQzYTNmNTkyYzZ9JywgIyAyLjZjMgotICAgICcyLjYuMTUwJzogJ3sxMTBlYjVjNC1lOTk1LTRjZmItYWI4MC1hNWYzMTViZWE5ZTh9JywgIyAyLjYuMAotICAgICcyLjYuMTE1MCc6J3s5Y2M4OTE3MC0wMDBiLTQ1N2QtOTFmMS01MzY5MWY4NWIyMjN9JywgIyAyLjYuMQotICAgICcyLjYuMjEyMSc6J3thZGFjNDEyYi1iMjA5LTRjMTUtYjZhYi1kY2ExYjZlNDcxNDR9JywgIyAyLjYuMmMxCi0gICAgJzIuNi4yMTUwJzonezI0YWFiNDIwLTRlMzAtNDQ5Ni05NzM5LTNlMjE2ZjNkZTZhZX0nLCAjIDIuNi4yCi0gICAgJzIuNi4zMTIxJzone2E3M2UwMjU0LWRjZGEtNGZlNC1iZjM3LWM3ZTFjNGY0ZWJiNn0nLCAjIDIuNi4zYzEKLSAgICAnMi42LjMxNTAnOid7M2Q5YWMwOTUtZTExNS00ZTk0LWJkZWYtN2Y3ZWRmMTc2OTdkfScsICMgMi42LjMKLSAgICAnMi42LjQxMjEnOid7NzI3ZGU2MDUtMDM1OS00NjA2LWE5NGItYzIwMzM2NTIzNzlifScsICMgMi42LjRjMQotICAgICcyLjYuNDEyMic6J3s0Zjc2MDNjNi02MzUyLTQyOTktYTM5OC0xNTBhMzFiMTlhY2N9JywgIyAyLjYuNGMyCi0gICAgJzIuNi40MTUwJzone2U3Mzk0YTBmLTNmODAtNDViMS04N2ZjLWFiY2Q1MTg5MzI0Nn0nLCAjIDIuNi40Ci0gICAgJzIuNi41MTIxJzone2UwZTI3M2Q3LTc1OTgtNDcwMS04MzI1LWM5MGMwNjlmZDVmZn0nLCAjIDIuNi41YzEKLSAgICAnMi42LjUxMjInOid7ZmEyMjdiNzYtMDY3MS00ZGM2LWI4MjYtYzJmZjJhNzBkZmQ1fScsICMgMi42LjVjMgotICAgICcyLjYuNTE1MCc6J3s0NzIzZjE5OS1mYTY0LTQyMzMtOGU2ZS05ZmNjYzk1YTE4ZWV9JywgIyAyLjYuNQotICAgICcyLjcuMTAxJzogJ3tlY2ExYmJlZi00MzJjLTQ5YWUtYTY2Ny1jMjEzY2M3YmJmMjJ9JywgIyAyLjdhMQotICAgICcyLjcuMTAyJzogJ3syMWNlMTZlZC03M2M0LTQ2MGQtOWIxMS01MjJmNDE3YjIwOTB9JywgIyAyLjdhMgotICAgICcyLjcuMTAzJzogJ3s2ZTdkYmQ1NS1iYTRhLTQ4YWMtYTY4OC02Yzc1ZGI0ZDc1MDB9JywgIyAyLjdhMwotICAgICcyLjcuMTA0JzogJ3tlZTc3NGJhMy03NGE1LTQ4ZDktYjQyNS1iMzVhMjg3MjYwYzh9JywgIyAyLjdhNAotICAgICcyLjcuMTExJzogJ3s5Y2ZkOWVjNy1hOWM3LTQ5ODAtYTFjNi0wNTRmYzY0OTNlYjN9JywgIyAyLjdiMQotICAgICcyLjcuMTEyJzogJ3s5YTcyZmFmNi1jMzA0LTQxNjUtODU5NS05MjkxZmYzMGNhYzZ9JywgIyAyLjdiMgotICAgICcyLjcuMTIxJzogJ3tmNTMwYzk0YS1kZDUzLTRkZTktOTQ4ZS1iNjMyYjljYjQ4ZDJ9JywgIyAyLjdjMQotICAgICcyLjcuMTIyJzogJ3tmODA5MDVkMi1kZDhkLTRiOGUtOGE0MC1jMjNjOTNkY2EwN2R9JywgIyAyLjdjMgotICAgICcyLjcuMTUwJzogJ3syMGMzMTQzNS0yYTBhLTQ1ODAtYmU4Yi1hYzA2ZmMyNDNjYTR9JywgIyAyLjcuMAotICAgICczLjAuMTAxJzogJ3s4NTU0MjYzYS0zMjQyLTQ4NTctOTM1OS1hYTg3YmMyYzU4YzJ9JywgIyAzLjBhMQotICAgICczLjAuMTAyJzogJ3s2OTJkNmUyYy1mMGFjLTQwYjgtYTEzMy03MTkxYWVlYjY3Zjl9JywgIyAzLjBhMgotICAgICczLjAuMTAzJzogJ3s0OWNiMjk5NS03NTFhLTQ3NTMtYmU3YS1kMGIxYmI1ODVlMDZ9JywgIyAzLjBhMwotICAgICczLjAuMTA0JzogJ3s4N2NiMDE5ZS0xOWZkLTQyMzgtYjFjNy04NTc1MTQzN2Q2NDZ9JywgIyAzLjBhNAotICAgICczLjAuMTA1JzogJ3tjZjI2NTlhZi0xOWVjLTQzZDItOGMzNS0wZjZhMDk0MzlkNDJ9JywgIyAzLjBhNQotICAgICczLjAuMTExJzogJ3szNmMyNmY1NS04MzdkLTQ1Y2YtODQ4Yy01ZjVjMGZiNDdhMjh9JywgIyAzLjBiMQotICAgICczLjAuMTEyJzogJ3swNTZhMGZiYy1jOGZlLTRjNjEtYWFkZS1jNDQxMWI3MGM5OTh9JywgIyAzLjBiMgotICAgICczLjAuMTEzJzogJ3syYjJlODlhOS04M2FmLTQzZjktYjdkNS05NmU4MGM1YTNmMjZ9JywgIyAzLjBiMwotICAgICczLjAuMTE0JzogJ3tlOTVjMzFhZi02OWJlLTRkZDctOTZlNi1lNWZjODVlNjYwZTZ9JywgIyAzLjBiNAotICAgICczLjAuMTIxJzogJ3tkMDk3OWM1ZS1jZDNjLTQyZWMtYmU0Yy1lMjk0ZGE3OTM1NzN9JywgIyAzLjBjMQotICAgICczLjAuMTIyJzogJ3tmNzA3YjhlOS1hMjU3LTQwNDUtODE4ZS00OTIzZmMyMGZiYjZ9JywgIyAzLjBjMgotICAgICczLjAuMTIzJzogJ3s1ZTcyMDhmMS04NjQzLTRlYTItYWI1ZS00NjQ0ODg3MTEyZTN9JywgIyAzLjBjMwotICAgICczLjAuMTUwJzogJ3tlMGU1NmUyMS01NWRlLTRmNzctYTEwOS0xYmFhNzIzNDg3NDN9JywgIyAzLjAuMAotICAgICczLjAuMTEyMSc6J3tkMzViMWVhNS0zZDcwLTQ4NzItYmY3ZS1jZDA2NmE3N2E5Yzl9JywgIyAzLjAuMWMxCi0gICAgJzMuMC4xMTUwJzone2RlMmYyZDljLTUzZTItNDBlZS04MjA5LTc0ZGE2M2NiMDYwZX0nLCAjIDMuMC4xCi0gICAgJzMuMC4yMTIxJzone2NlZjc5ZTdmLTk4MDktNDllMi1hZmQyLWUyNDE0OGQ3Yzg1NX0nLCAjIDMuMC4yYzEKLSAgICAnMy4wLjIxNTAnOid7MGNmM2I5NWEtODM4Mi00NjA3LTk3NzktYzM2NDA3ZmYzNjJjfScsICMgMy4wLjIKLSAgICAnMy4xLjEwMSc6ICd7YzQyM2VhZGEtYzQ5OC00ZDUxLTllYjQtYmZlYWU2NDdlMGEwfScsICMgMy4xYTEKLSAgICAnMy4xLjEwMic6ICd7ZjZlMTk5YmYtZGM2NC00MmYzLTg3ZDQtMTUyNTk5MWEwMTNlfScsICMgMy4xYTIKLSAgICAnMy4xLjExMSc6ICd7YzNjODI4OTMtNjliMi00Njc2LTg1NTQtMWI2ZWU2YzE5MWU5fScsICMgMy4xYjEKLSAgICAnMy4xLjEyMSc6ICd7ZGEyYjUxNzAtMTJmMy00ZDk5LThhMWYtNTQ5MjZjY2E3YWNkfScsICMgMy4xYzEKLSAgICAnMy4xLjEyMic6ICd7YmNlYjUxMzMtZTJlZS00MTA5LTk1MWYtYWM3ZTk0MWExNjkyfScsICMgMy4xYzIKLSAgICAnMy4xLjE1MCc6ICd7M2FkNjFlZTUtODFkMi00ZDdlLWFkZWYtZGExZGQzNzI3N2QxfScsICMgMy4xLjAKLSAgICAnMy4xLjExMjEnOid7NTc4MmY5NTctNmQ0OS00MWQ0LWJhZDAtNjY4NzE1ZGZkNjM4fScsICMgMy4xLjFjMQotICAgICczLjEuMTE1MCc6J3s3ZmY5MDQ2MC04OWI3LTQzNWItYjU4My1iMzdiMjgxNWNjYzd9JywgIyAzLjEuMQotICAgICczLjEuMjEyMSc6J3tlYzQ1NjI0YS0zNzhjLTQzYmUtOTFmMy0zZjdhNTliMGQ5MGN9JywgIyAzLjEuMmMxCi0gICAgJzMuMS4yMTUwJzone2Q0MGFmMDE2LTUwNmMtNDNmYi1hNzM4LWJkNTRmYThjMWU4NX0nLCAjIDMuMS4yCi0gICAgJzMuMi4xMDEnIDone2I0MTFmMTY4LTdhMzYtNGZmZi05MDJjLWE1NTRkMWM3OGE0Zn0nLCAjIDMuMmExCi0gICAgJzMuMi4xMDInIDonezc5ZmY3M2I3LTgzNTktNDEwZi1iOWM1LTE1MmQyMDI2ZjhjOH0nLCAjIDMuMmEyCi0gICAgJzMuMi4xMDMnIDone2U3NjM1YzY1LWMyMjEtNGI5Yi1iNzBhLTU2MTFiODM2OWQ3N30nLCAjIDMuMmEzCi0gICAgJzMuMi4xMDQnIDonezc0OGNkMTM5LTc1YjgtNGNhOC05OGE3LTU4MjYyMjk4MTgxZX0nLCAjIDMuMmE0Ci0gICAgJzMuMi4xMTEnIDonezIwYmZjMTZmLWM3Y2QtNGZjMC04Zjk2LTk5MTQ2MTRhM2M1MH0nLCAjIDMuMmIxCi0gICAgJzMuMi4xMTInIDonezBlMzUwYzk4LThkNzMtNDk5My1iNjg2LWNmZTg3MTYwMDQ2ZX0nLCAjIDMuMmIyCi0gICAgJzMuMi4xMjEnIDonezIwOTQ5NjhkLTc1ODMtNDdmNi1hN2ZkLTIyMzA0NTMyZTA5Zn0nLCAjIDMuMnJjMQotICAgICczLjIuMTIyJyA6J3s0ZjNlZGZhNi1jZjcwLTQ2OWEtODI1Zi1lMTIwNmFhN2Y0MTJ9JywgIyAzLjJyYzIKLSAgICAnMy4yLjEyMycgOid7OTBjNjczZDctOGNmZC00OTY5LTk4MTYtZjdkNzBiYWQ4N2YzfScsICMgMy4ycmMzCi0gICAgJzMuMi4xNTAnIDone2IyMDQyZDVlLTk4NmQtNDRlYy1hZWUzLWFmZTQxMDhjY2M5M30nLCAjIDMuMi4wCi0gICAgJzMuMi4xMTIxJzonezRmOTBkZTRhLTgzZGQtNDQ0My1iNjI1LWNhMTMwZmYzNjFkZH0nLCAjIDMuMi4xcmMxCi0gICAgJzMuMi4xMTIyJzone2RjNWViMDRkLWZmOGEtNGJlZC04Zjk2LTIzOTQyZmQ1OWU1Zn0nLCAjIDMuMi4xcmMyCi0gICAgJzMuMi4xMTUwJzonezM0YjI1MzBjLTYzNDktNDI5Mi05ZGMzLTYwYmRhNGFlZDkzY30nLCAjIDMuMi4xCi0gICAgJzMuMi4yMTIxJzone0RGQjI5QTUzLUFDQzQtNDRlNi04NUE2LUQwREEyNkZFOEU0RX0nLCAjIDMuMi4ycmMxCi0gICAgJzMuMi4yMTUwJzonezRDREUzMTY4LUQwNjAtNGI3Yy1CQzc0LTREOEY5QkIwMUFGRH0nLCAjIDMuMi4yCi0gICAgJzMuMi4zMTIxJzone0I4RThDRkY3LUU0QzYtNGE3Yy05RjA2LUJCM0E4Qjc1RERBOH0nLCAjIDMuMi4zcmMxCi0gICAgJzMuMi4zMTIyJzone0U4RENEM0UwLTEyQjYtNGZiNy05REI1LTU0M0MyRTY3MzcyRX0nLCAjIDMuMi4zcmMyCi0gICAgJzMuMi4zMTUwJzonezc4OUM5NjQ0LTlGODItNDRkMy1CNENBLUFDMzFGNDZGNTg4Mn0nLCAjIDMuMi4zCi0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5CmluZGV4IDJhYzFlYTYuLmJlODQ0MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKKysrIGIvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weQpAQCAtMiw5ICsyLDEwIEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgYXN0CiBpbXBvcnQgdW5wYXJzZQoraW1wb3J0IGFzdAogCiBkZWYgcmVhZF9weWZpbGUoZmlsZW5hbWUpOgogICAgICIiIlJlYWQgYW5kIHJldHVybiB0aGUgY29udGVudHMgb2YgYSBQeXRob24gc291cmNlIGZpbGUgKGFzIGEKQEAgLTkzLDYgKzk0LDIxIEBACiAgICAgc3VpdGU1CiAiIiIKIAord2l0aF9zaW1wbGUgPSAiIiJcCit3aXRoIGYoKToKKyAgICBzdWl0ZTEKKyIiIgorCit3aXRoX2FzID0gIiIiXAord2l0aCBmKCkgYXMgeDoKKyAgICBzdWl0ZTEKKyIiIgorCit3aXRoX3R3b19pdGVtcyA9ICIiIlwKK3dpdGggZigpIGFzIHgsIGcoKSBhcyB5OgorICAgIHN1aXRlMQorIiIiCisKIGNsYXNzIEFTVFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgYXNzZXJ0QVNURXF1YWwoc2VsZiwgYXN0MSwgYXN0Mik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAoYXN0MSksIGFzdC5kdW1wKGFzdDIpKQpAQCAtMjE1LDYgKzIzMSwxNSBAQAogICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCgiYSwgKmJbMF0sIGMgPSBzZXEiKQogICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCgiYSwgKihiLCBjKSA9IHNlcSIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAod2l0aF9zaW1wbGUpCisKKyAgICBkZWYgdGVzdF93aXRoX2FzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCh3aXRoX2FzKQorCisgICAgZGVmIHRlc3Rfd2l0aF90d29faXRlbXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHdpdGhfdHdvX2l0ZW1zKQorCiAKIGNsYXNzIERpcmVjdG9yeVRlc3RDYXNlKEFTVFRlc3RDYXNlKToKICAgICAiIiJUZXN0IHJvdW5kdHJpcCBiZWhhdmlvdXIgb24gYWxsIGZpbGVzIGluIExpYiBhbmQgTGliL3Rlc3QuIiIiCkBAIC0yMzMsNiArMjU4LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbi5lbmRzd2l0aCgnLnB5JykgYW5kIG5vdCBuLnN0YXJ0c3dpdGgoJ2JhZCcpOgogICAgICAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQob3MucGF0aC5qb2luKHRlc3RfZGlyLCBuKSkKIAorICAgICAgICAjIFRlc3QgbGltaXRlZCBzdWJzZXQgb2YgZmlsZXMgdW5sZXNzIHRoZSAnY3B1JyByZXNvdXJjZSBpcyBzcGVjaWZpZWQuCisgICAgICAgIGlmIG5vdCB0ZXN0LnN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgiY3B1Iik6CisgICAgICAgICAgICBuYW1lcyA9IHJhbmRvbS5zYW1wbGUobmFtZXMsIDEwKQorCiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCdUZXN0aW5nICVzJyAlIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCBkOWZjYTk3Li5iNTVlMmM2IDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMSw2ICsxLDUgQEAKICJVc2FnZTogdW5wYXJzZS5weSA8cGF0aCB0byBzb3VyY2UgZmlsZT4iCiBpbXBvcnQgc3lzCi1pbXBvcnQgbWF0aAogaW1wb3J0IGFzdAogaW1wb3J0IHRva2VuaXplCiBpbXBvcnQgaW8KQEAgLTE0Nyw2ICsxNDYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKKyAgICBkZWYgX1lpZWxkRnJvbShzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgIHNlbGYud3JpdGUoInlpZWxkIGZyb20iKQorICAgICAgICBpZiB0LnZhbHVlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCisgICAgICAgIHNlbGYud3JpdGUoIikiKQorCiAgICAgZGVmIF9SYWlzZShzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJyYWlzZSIpCiAgICAgICAgIGlmIG5vdCB0LmV4YzoKQEAgLTE1OCwxMiArMTY1LDExIEBACiAgICAgICAgICAgICBzZWxmLndyaXRlKCIgZnJvbSAiKQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNhdXNlKQogCi0gICAgZGVmIF9UcnlFeGNlcHQoc2VsZiwgdCk6CisgICAgZGVmIF9Ucnkoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgidHJ5IikKICAgICAgICAgc2VsZi5lbnRlcigpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQogICAgICAgICBzZWxmLmxlYXZlKCkKLQogICAgICAgICBmb3IgZXggaW4gdC5oYW5kbGVyczoKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2goZXgpCiAgICAgICAgIGlmIHQub3JlbHNlOgpAQCAtMTcxLDIyICsxNzcsMTIgQEAKICAgICAgICAgICAgIHNlbGYuZW50ZXIoKQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lm9yZWxzZSkKICAgICAgICAgICAgIHNlbGYubGVhdmUoKQotCi0gICAgZGVmIF9UcnlGaW5hbGx5KHNlbGYsIHQpOgotICAgICAgICBpZiBsZW4odC5ib2R5KSA9PSAxIGFuZCBpc2luc3RhbmNlKHQuYm9keVswXSwgYXN0LlRyeUV4Y2VwdCk6Ci0gICAgICAgICAgICAjIHRyeS1leGNlcHQtZmluYWxseQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZpbGwoInRyeSIpCisgICAgICAgIGlmIHQuZmluYWxib2R5OgorICAgICAgICAgICAgc2VsZi5maWxsKCJmaW5hbGx5IikKICAgICAgICAgICAgIHNlbGYuZW50ZXIoKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuZmluYWxib2R5KQogICAgICAgICAgICAgc2VsZi5sZWF2ZSgpCiAKLSAgICAgICAgc2VsZi5maWxsKCJmaW5hbGx5IikKLSAgICAgICAgc2VsZi5lbnRlcigpCi0gICAgICAgIHNlbGYuZGlzcGF0Y2godC5maW5hbGJvZHkpCi0gICAgICAgIHNlbGYubGVhdmUoKQotCiAgICAgZGVmIF9FeGNlcHRIYW5kbGVyKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoImV4Y2VwdCIpCiAgICAgICAgIGlmIHQudHlwZToKQEAgLTI5NiwxMCArMjkyLDcgQEAKIAogICAgIGRlZiBfV2l0aChzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJ3aXRoICIpCi0gICAgICAgIHNlbGYuZGlzcGF0Y2godC5jb250ZXh0X2V4cHIpCi0gICAgICAgIGlmIHQub3B0aW9uYWxfdmFyczoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhcyAiKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lm9wdGlvbmFsX3ZhcnMpCisgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLmRpc3BhdGNoLCB0Lml0ZW1zKQogICAgICAgICBzZWxmLmVudGVyKCkKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCiAgICAgICAgIHNlbGYubGVhdmUoKQpAQCAtNTY0LDYgKzU1NywxMiBAQAogICAgICAgICBpZiB0LmFzbmFtZToKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhcyAiK3QuYXNuYW1lKQogCisgICAgZGVmIF93aXRoaXRlbShzZWxmLCB0KToKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNvbnRleHRfZXhwcikKKyAgICAgICAgaWYgdC5vcHRpb25hbF92YXJzOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3B0aW9uYWxfdmFycykKKwogZGVmIHJvdW5kdHJpcChmaWxlbmFtZSwgb3V0cHV0PXN5cy5zdGRvdXQpOgogICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgcHlmaWxlOgogICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhweWZpbGUucmVhZGxpbmUpWzBdCmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkgYi9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkKaW5kZXggOGVhYWQ2My4uOTQyZjU2ZCAxMDA3NTUKLS0tIGEvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5CisrKyBiL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weQpAQCAtMzUsNyArMzUsOSBAQAogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUgIQogIiIiCiAKLWltcG9ydCBzeXMsIHRpbWUsIG9wZXJhdG9yLCBwbGF0Zm9ybQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCBwbGF0Zm9ybQogZnJvbSBDb21tYW5kTGluZSBpbXBvcnQgKgogCiB0cnk6CkBAIC03MywxMSArNzUsMTUgQEAKIAogIyBUaW1lciB0eXBlcwogVElNRVJfVElNRV9USU1FID0gJ3RpbWUudGltZScKK1RJTUVSX1RJTUVfUFJPQ0VTU19USU1FID0gJ3RpbWUucHJvY2Vzc190aW1lJworVElNRVJfVElNRV9QRVJGX0NPVU5URVIgPSAndGltZS5wZXJmX2NvdW50ZXInCiBUSU1FUl9USU1FX0NMT0NLID0gJ3RpbWUuY2xvY2snCiBUSU1FUl9TWVNUSU1FU19QUk9DRVNTVElNRSA9ICdzeXN0aW1lcy5wcm9jZXNzdGltZScKIAogIyBDaG9vc2UgcGxhdGZvcm0gZGVmYXVsdCB0aW1lcgotaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKK2lmIGhhc2F0dHIodGltZSwgJ3BlcmZfY291bnRlcicpOgorICAgIFRJTUVSX1BMQVRGT1JNX0RFRkFVTFQgPSBUSU1FUl9USU1FX1BFUkZfQ09VTlRFUgorZWxpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgogICAgICMgT24gV2luWFAgdGhpcyBoYXMgMi41bXMgcmVzb2x1dGlvbgogICAgIFRJTUVSX1BMQVRGT1JNX0RFRkFVTFQgPSBUSU1FUl9USU1FX0NMT0NLCiBlbHNlOgpAQCAtOTMsNiArOTksMTAgQEAKIAogICAgIGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1RJTUU6CiAgICAgICAgIHJldHVybiB0aW1lLnRpbWUKKyAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1BST0NFU1NfVElNRToKKyAgICAgICAgcmV0dXJuIHRpbWUucHJvY2Vzc190aW1lCisgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9QRVJGX0NPVU5URVI6CisgICAgICAgIHJldHVybiB0aW1lLnBlcmZfY291bnRlcgogICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfQ0xPQ0s6CiAgICAgICAgIHJldHVybiB0aW1lLmNsb2NrCiAgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfU1lTVElNRVNfUFJPQ0VTU1RJTUU6CkBAIC0xMDcsNiArMTE3LDcgQEAKICAgICAgICAgcHJpbnQoJ0dldHRpbmcgbWFjaGluZSBkZXRhaWxzLi4uJykKICAgICBidWlsZG5vLCBidWlsZGRhdGUgPSBwbGF0Zm9ybS5weXRob25fYnVpbGQoKQogICAgIHB5dGhvbiA9IHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkKKyAgICAjIFhYWCB0aGlzIGlzIG5vdyBhbHdheXMgVUNTNCwgbWF5YmUgcmVwbGFjZSBpdCB3aXRoICdQRVAzOTMnIGluIDMuMys/CiAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6CiAgICAgICAgICMgVUNTMiBidWlsZCAoc3RhbmRhcmQpCiAgICAgICAgIHVuaXR5cGUgPSAnVUNTMicKQEAgLTg2NSw3ICs4NzYsMTggQEAKICAgICAgICAgICAgIHByaW50KCcqIHVzaW5nIHRpbWVyOiBzeXN0aW1lcy5wcm9jZXNzdGltZSAoJXMpJyAlIFwKICAgICAgICAgICAgICAgICAgIHN5c3RpbWVzLlNZU1RJTUVTX0lNUExFTUVOVEFUSU9OKQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjbG9jayBmdW5jdGlvbiBkb2VzIGV4aXN0CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZ2V0X3RpbWVyKHRpbWVyKQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgiKiBFcnJvcjogVW5rbm93biB0aW1lcjogJXMiICUgdGltZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgICAgIHByaW50KCcqIHVzaW5nIHRpbWVyOiAlcycgJSB0aW1lcikKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodGltZSwgJ2dldF9jbG9ja19pbmZvJyk6CisgICAgICAgICAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8odGltZXJbNTpdKQorICAgICAgICAgICAgICAgIHByaW50KCcqIHRpbWVyOiByZXNvbHV0aW9uPSVzLCBpbXBsZW1lbnRhdGlvbj0lcycKKyAgICAgICAgICAgICAgICAgICAgICAlIChpbmZvLnJlc29sdXRpb24sIGluZm8uaW1wbGVtZW50YXRpb24pKQogCiAgICAgICAgIHByaW50KCkKIApAQCAtOTQzLDggKzk2NSw2IEBACiAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoYmVuY2gsZikKICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIHJlYXNvbjoKLSAgICAgICAgICAgICAgICBwcmludCgnKiBFcnJvciBvcGVuaW5nL3dyaXRpbmcgcmVwb3J0ZmlsZScpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyByZWFzb246CiAgICAgICAgICAgICAgICAgcHJpbnQoJyogRXJyb3Igb3BlbmluZy93cml0aW5nIHJlcG9ydGZpbGUgJXM6ICVzJyAlICgKICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgcmVhc29uKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvUkVBRE1FIGIvVG9vbHMvc2NyaXB0cy9SRUFETUUKaW5kZXggOGMwMjUyOS4uZDY1ZDFmZCAxMDA2NDQKLS0tIGEvVG9vbHMvc2NyaXB0cy9SRUFETUUKKysrIGIvVG9vbHMvc2NyaXB0cy9SRUFETUUKQEAgLTE1LDcgKzE1LDcgQEAKIGRpZmYucHkgICAgICAgICAgICAgICAgIFByaW50IGZpbGUgZGlmZnMgaW4gY29udGV4dCwgdW5pZmllZCwgb3IgbmRpZmYgZm9ybWF0cwogZHV0cmVlLnB5ICAgICAgICAgICAgICAgRm9ybWF0IGR1KDEpIG91dHB1dCBhcyBhIHRyZWUgc29ydGVkIGJ5IHNpemUKIGVwdGFncy5weSAgICAgICAgICAgICAgIENyZWF0ZSBFbWFjcyBUQUdTIGZpbGUgZm9yIFB5dGhvbiBtb2R1bGVzCi1maW5kX3JlY3Vyc2lvbmxpbWl0LnB5ICBGaW5kIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBsaW1pdCBvbiB0aGlzIG1hY2hpbmUgCitmaW5kX3JlY3Vyc2lvbmxpbWl0LnB5ICBGaW5kIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBsaW1pdCBvbiB0aGlzIG1hY2hpbmUKIGZpbmRkaXYucHkgICAgICAgICAgICAgIEEgZ3JlcC1saWtlIHRvb2wgdGhhdCBsb29rcyBmb3IgZGl2aXNpb24gb3BlcmF0b3JzCiBmaW5kbGlua3N0by5weSAgICAgICAgICBSZWN1cnNpdmVseSBmaW5kIHN5bWJvbGljIGxpbmtzIHRvIGEgZ2l2ZW4gcGF0aCBwcmVmaXgKIGZpbmRub2NvZGluZy5weSAgICAgICAgIEZpbmQgc291cmNlIGZpbGVzIHdoaWNoIG5lZWQgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24KQEAgLTI4LDYgKzI4LDcgQEAKIGdvb2dsZS5weSAgICAgICAgICAgICAgIE9wZW4gYSB3ZWJicm93c2VyIHdpdGggR29vZ2xlCiBncHJvZjJodG1sLnB5ICAgICAgICAgICBUcmFuc2Zvcm0gZ3Byb2YoMSkgb3V0cHV0IGludG8gdXNlZnVsIEhUTUwKIGgycHkucHkgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSAjZGVmaW5lJ3MgaW50byBQeXRob24gYXNzaWdubWVudHMKK2hpZ2hsaWdodC5weSAgICAgICAgICAgIFB5dGhvbiBzeW50YXggaGlnaGxpZ2h0aW5nIHdpdGggSFRNTCBvdXRwdXQKIGlkbGUzICAgICAgICAgICAgICAgICAgIE1haW4gcHJvZ3JhbSB0byBzdGFydCBJRExFCiBpZmRlZi5weSAgICAgICAgICAgICAgICBSZW1vdmUgI2lmKG4pZGVmIGdyb3VwcyBmcm9tIEMgc291cmNlcwogbGZjci5weSAgICAgICAgICAgICAgICAgQ2hhbmdlIExGIGxpbmUgZW5kaW5ncyB0byBDUkxGIChVbml4IHRvIFdpbmRvd3MpCkBAIC01Myw2ICs1NCw3IEBACiByZWluZGVudC5weSAgICAgICAgICAgICBDaGFuZ2UgLnB5IGZpbGVzIHRvIHVzZSA0LXNwYWNlIGluZGVudHMKIHJlaW5kZW50LXJzdC5weSAgICAgICAgIEZpeC11cCByZVN0cnVjdHVyZWRUZXh0IGZpbGUgd2hpdGVzcGFjZQogcmdyZXAucHkgICAgICAgICAgICAgICAgUmV2ZXJzZSBncmVwIHRocm91Z2ggYSBmaWxlICh1c2VmdWwgZm9yIGJpZyBsb2dmaWxlcykKK3J1bl90ZXN0cy5weSAgICAgICAgICAgIFJ1biB0aGUgdGVzdCBzdWl0ZSB3aXRoIG1vcmUgc2Vuc2libGUgZGVmYXVsdCBvcHRpb25zCiBzZXJ2ZS5weSAgICAgICAgICAgICAgICBTbWFsbCB3c2dpcmVmLWJhc2VkIHdlYiBzZXJ2ZXIsIHVzZWQgaW4gbWFrZSBzZXJ2ZSBpbiBEb2MKIHN1ZmYucHkgICAgICAgICAgICAgICAgIFNvcnQgYSBsaXN0IG9mIGZpbGVzIGJ5IHN1ZmZpeAogc3ZuZW9sLnB5ICAgICAgICAgICAgICAgU2V0IHN2bjplb2wtc3R5bGUgb24gYWxsIGZpbGVzIGluIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDllZmIwNzguLmY5YjE0YmYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTksNiArOSwxMiBAQAogIiIiCiAKIGltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBvcHRwYXJzZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCisKK2RlZiBmaWxlX210aW1lKHBhdGgpOgorICAgIHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKG9zLnN0YXQocGF0aCkuc3RfbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUudXRjKQorICAgIHJldHVybiB0LmFzdGltZXpvbmUoKS5pc29mb3JtYXQoKQogCiBkZWYgbWFpbigpOgogCkBAIC0zMCwxMCArMzYsMTIgQEAKICAgICBuID0gb3B0aW9ucy5saW5lcwogICAgIGZyb21maWxlLCB0b2ZpbGUgPSBhcmdzCiAKLSAgICBmcm9tZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdChmcm9tZmlsZSkuc3RfbXRpbWUpCi0gICAgdG9kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KHRvZmlsZSkuc3RfbXRpbWUpCi0gICAgZnJvbWxpbmVzID0gb3Blbihmcm9tZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQotICAgIHRvbGluZXMgPSBvcGVuKHRvZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQorICAgIGZyb21kYXRlID0gZmlsZV9tdGltZShmcm9tZmlsZSkKKyAgICB0b2RhdGUgPSBmaWxlX210aW1lKHRvZmlsZSkKKyAgICB3aXRoIG9wZW4oZnJvbWZpbGUsICdVJykgYXMgZmY6CisgICAgICAgIGZyb21saW5lcyA9IGZmLnJlYWRsaW5lcygpCisgICAgd2l0aCBvcGVuKHRvZmlsZSwgJ1UnKSBhcyB0ZjoKKyAgICAgICAgdG9saW5lcyA9IHRmLnJlYWRsaW5lcygpCiAKICAgICBpZiBvcHRpb25zLnU6CiAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21kYXRlLCB0b2RhdGUsIG49bikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weSBiL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weQppbmRleCA3YTg2NjAzLi4xMTcxMTQ2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbmxpbWl0LnB5CkBAIC04OSw2ICs4OSwxMiBAQAogICAgICAgICBfcGlja2xlLlBpY2tsZXIoaW8uQnl0ZXNJTygpLCBwcm90b2NvbD0tMSkuZHVtcChsKQogICAgICAgICBfY2FjaGVbbl0gPSBsCiAKK2RlZiB0ZXN0X2NvbXBpbGVyX3JlY3Vyc2lvbigpOgorICAgICMgVGhlIGNvbXBpbGVyIHVzZXMgYSBzY2FsaW5nIGZhY3RvciB0byBzdXBwb3J0IGFkZGl0aW9uYWwgbGV2ZWxzCisgICAgIyBvZiByZWN1cnNpb24uIFRoaXMgaXMgYSBzYW5pdHkgY2hlY2sgb2YgdGhhdCBzY2FsaW5nIHRvIGVuc3VyZQorICAgICMgaXQgc3RpbGwgcmFpc2VzIFJ1bnRpbWVFcnJvciBldmVuIGF0IGhpZ2hlciByZWN1cnNpb24gbGltaXRzCisgICAgY29tcGlsZSgiKCkiICogKDEwICogc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkpLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKKwogZGVmIGNoZWNrX2xpbWl0KG4sIHRlc3RfZnVuY19uYW1lKToKICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQobikKICAgICBpZiB0ZXN0X2Z1bmNfbmFtZS5zdGFydHN3aXRoKCJ0ZXN0XyIpOgpAQCAtMTE3LDUgKzEyMyw2IEBACiAgICAgICAgIGNoZWNrX2xpbWl0KGxpbWl0LCAidGVzdF9nZXRhdHRyIikKICAgICAgICAgY2hlY2tfbGltaXQobGltaXQsICJ0ZXN0X2dldGl0ZW0iKQogICAgICAgICBjaGVja19saW1pdChsaW1pdCwgInRlc3RfY3BpY2tsZSIpCisgICAgICAgIGNoZWNrX2xpbWl0KGxpbWl0LCAidGVzdF9jb21waWxlcl9yZWN1cnNpb24iKQogICAgICAgICBwcmludCgiTGltaXQgb2YgJWQgaXMgZmluZSIgJSBsaW1pdCkKICAgICAgICAgbGltaXQgPSBsaW1pdCArIDEwMApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maW5kbm9jb2RpbmcucHkgYi9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQppbmRleCBhNDk0YTQ4Li5iM2U5ZGM3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weQpAQCAtMiw3ICsyLDcgQEAKIAogIiIiTGlzdCBhbGwgdGhvc2UgUHl0aG9uIGZpbGVzIHRoYXQgcmVxdWlyZSBhIGNvZGluZyBkaXJlY3RpdmUKIAotVXNhZ2U6IG5vY29kaW5nLnB5IGRpcjEgW2RpcjIuLi5dCitVc2FnZTogZmluZG5vY29kaW5nLnB5IGRpcjEgW2RpcjIuLi5dCiAiIiIKIAogX19hdXRob3JfXyA9ICJPbGVnIEJyb3l0bWFubiwgR2VvcmcgQnJhbmRsIgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJubyBzb3BoaXN0aWNhdGVkIFB5dGhvbiBzb3VyY2UgZmlsZSBzZWFyY2ggd2lsbCBiZSBkb25lLiIsIGZpbGU9c3lzLnN0ZGVycikKIAogCi1kZWNsX3JlID0gcmUuY29tcGlsZShyImNvZGluZ1s9Ol1ccyooWy1cdy5dKykiKQorZGVjbF9yZSA9IHJlLmNvbXBpbGUocmIiY29kaW5nWz06XVxzKihbLVx3Ll0rKSIpCiAKIGRlZiBnZXRfZGVjbGFyYXRpb24obGluZSk6CiAgICAgbWF0Y2ggPSBkZWNsX3JlLnNlYXJjaChsaW5lKQpAQCAtNTAsMjEgKzUwLDIwIEBACiAKIGRlZiBuZWVkc19kZWNsYXJhdGlvbihmdWxscGF0aCk6CiAgICAgdHJ5OgotICAgICAgICBpbmZpbGUgPSBvcGVuKGZ1bGxwYXRoLCAnclUnKQorICAgICAgICBpbmZpbGUgPSBvcGVuKGZ1bGxwYXRoLCAncmInKQogICAgIGV4Y2VwdCBJT0Vycm9yOiAjIE9vcHMsIHRoZSBmaWxlIHdhcyByZW1vdmVkIC0gaWdub3JlIGl0CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBsaW5lMSA9IGluZmlsZS5yZWFkbGluZSgpCi0gICAgbGluZTIgPSBpbmZpbGUucmVhZGxpbmUoKQorICAgIHdpdGggaW5maWxlOgorICAgICAgICBsaW5lMSA9IGluZmlsZS5yZWFkbGluZSgpCisgICAgICAgIGxpbmUyID0gaW5maWxlLnJlYWRsaW5lKCkKIAotICAgIGlmIGdldF9kZWNsYXJhdGlvbihsaW5lMSkgb3IgZ2V0X2RlY2xhcmF0aW9uKGxpbmUyKToKLSAgICAgICAgIyB0aGUgZmlsZSBkb2VzIGhhdmUgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24sIHNvIHRydXN0IGl0Ci0gICAgICAgIGluZmlsZS5jbG9zZSgpCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBnZXRfZGVjbGFyYXRpb24obGluZTEpIG9yIGdldF9kZWNsYXJhdGlvbihsaW5lMik6CisgICAgICAgICAgICAjIHRoZSBmaWxlIGRvZXMgaGF2ZSBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgc28gdHJ1c3QgaXQKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgIyBjaGVjayB0aGUgd2hvbGUgZmlsZSBmb3Igbm9uIHV0Zi04IGNoYXJhY3RlcnMKLSAgICByZXN0ID0gaW5maWxlLnJlYWQoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgICAgICMgY2hlY2sgdGhlIHdob2xlIGZpbGUgZm9yIG5vbiB1dGYtOCBjaGFyYWN0ZXJzCisgICAgICAgIHJlc3QgPSBpbmZpbGUucmVhZCgpCiAKICAgICBpZiBoYXNfY29ycmVjdF9lbmNvZGluZyhsaW5lMStsaW5lMityZXN0LCAidXRmLTgiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weSBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmZjVjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpAQCAtMCwwICsxLDI2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworJycnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gUHl0aG9uIHNvdXJjZSBjb2RlJycnCisKK19fYXV0aG9yX18gPSAnUmF5bW9uZCBIZXR0aW5nZXInCisKK2ltcG9ydCBrZXl3b3JkLCB0b2tlbml6ZSwgY2dpLCByZSwgZnVuY3Rvb2xzCit0cnk6CisgICAgaW1wb3J0IGJ1aWx0aW5zCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0aW5zCisKKyMjIyMgQW5hbHl6ZSBQeXRob24gU291cmNlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNfYnVpbHRpbihzKToKKyAgICAnUmV0dXJuIFRydWUgaWYgcyBpcyB0aGUgbmFtZSBvZiBhIGJ1aWx0aW4nCisgICAgcmV0dXJuIGhhc2F0dHIoYnVpbHRpbnMsIHMpCisKK2RlZiBjb21iaW5lX3JhbmdlKGxpbmVzLCBzdGFydCwgZW5kKToKKyAgICAnSm9pbiBjb250ZW50IGZyb20gYSByYW5nZSBvZiBsaW5lcyBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQnCisgICAgKHNyb3csIHNjb2wpLCAoZXJvdywgZWNvbCkgPSBzdGFydCwgZW5kCisgICAgaWYgc3JvdyA9PSBlcm93OgorICAgICAgICByZXR1cm4gbGluZXNbc3Jvdy0xXVtzY29sOmVjb2xdLCBlbmQKKyAgICByb3dzID0gW2xpbmVzW3Nyb3ctMV1bc2NvbDpdXSArIGxpbmVzW3Nyb3c6IGVyb3ctMV0gKyBbbGluZXNbZXJvdy0xXVs6ZWNvbF1dCisgICAgcmV0dXJuICcnLmpvaW4ocm93cyksIGVuZAorCitkZWYgYW5hbHl6ZV9weXRob24oc291cmNlKToKKyAgICAnJydHZW5lcmF0ZSBhbmQgY2xhc3NpZnkgY2h1bmtzIG9mIFB5dGhvbiBmb3Igc3ludGF4IGhpZ2hsaWdodGluZy4KKyAgICAgICBZaWVsZHMgdHVwbGVzIGluIHRoZSBmb3JtOiAoY2F0ZWdvcnksIGNhdGVnb3JpemVkX3RleHQpLgorICAgICcnJworICAgIGxpbmVzID0gc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgcmVhZGxpbmUgPSBmdW5jdG9vbHMucGFydGlhbChuZXh0LCBpdGVyKGxpbmVzKSwgJycpCisgICAga2luZCA9IHRva19zdHIgPSAnJworICAgIHRva190eXBlID0gdG9rZW5pemUuQ09NTUVOVAorICAgIHdyaXR0ZW4gPSAoMSwgMCkKKyAgICBmb3IgdG9rIGluIHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhyZWFkbGluZSk6CisgICAgICAgIHByZXZfdG9rX3R5cGUsIHByZXZfdG9rX3N0ciA9IHRva190eXBlLCB0b2tfc3RyCisgICAgICAgIHRva190eXBlLCB0b2tfc3RyLCAoc3Jvdywgc2NvbCksIChlcm93LCBlY29sKSwgbG9naWNhbF9saW5lbm8gPSB0b2sKKyAgICAgICAga2luZCA9ICcnCisgICAgICAgIGlmIHRva190eXBlID09IHRva2VuaXplLkNPTU1FTlQ6CisgICAgICAgICAgICBraW5kID0gJ2NvbW1lbnQnCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuT1AgYW5kIHRva19zdHJbOjFdIG5vdCBpbiAne31bXSgpLC46O0AnOgorICAgICAgICAgICAga2luZCA9ICdvcGVyYXRvcicKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5TVFJJTkc6CisgICAgICAgICAgICBraW5kID0gJ3N0cmluZycKKyAgICAgICAgICAgIGlmIHByZXZfdG9rX3R5cGUgPT0gdG9rZW5pemUuSU5ERU5UIG9yIHNjb2w9PTA6CisgICAgICAgICAgICAgICAga2luZCA9ICdkb2NzdHJpbmcnCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuTkFNRToKKyAgICAgICAgICAgIGlmIHRva19zdHIgaW4gKCdkZWYnLCAnY2xhc3MnLCAnaW1wb3J0JywgJ2Zyb20nKToKKyAgICAgICAgICAgICAgICBraW5kID0gJ2RlZmluaXRpb24nCisgICAgICAgICAgICBlbGlmIHByZXZfdG9rX3N0ciBpbiAoJ2RlZicsICdjbGFzcycpOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnZGVmbmFtZScKKyAgICAgICAgICAgIGVsaWYga2V5d29yZC5pc2tleXdvcmQodG9rX3N0cik6CisgICAgICAgICAgICAgICAga2luZCA9ICdrZXl3b3JkJworICAgICAgICAgICAgZWxpZiBpc19idWlsdGluKHRva19zdHIpIGFuZCBwcmV2X3Rva19zdHIgIT0gJy4nOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnYnVpbHRpbicKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHRleHQsIHdyaXR0ZW4gPSBjb21iaW5lX3JhbmdlKGxpbmVzLCB3cml0dGVuLCAoc3Jvdywgc2NvbCkpCisgICAgICAgICAgICB5aWVsZCAnJywgdGV4dAorICAgICAgICAgICAgdGV4dCwgd3JpdHRlbiA9IHRva19zdHIsIChlcm93LCBlY29sKQorICAgICAgICAgICAgeWllbGQga2luZCwgdGV4dAorICAgIGxpbmVfdXB0b190b2tlbiwgd3JpdHRlbiA9IGNvbWJpbmVfcmFuZ2UobGluZXMsIHdyaXR0ZW4sIChlcm93LCBlY29sKSkKKyAgICB5aWVsZCAnJywgbGluZV91cHRvX3Rva2VuCisKKyMjIyMgUmF3IE91dHB1dCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgcmF3X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpOgorICAgICdTdHJhaWdodCB0ZXh0IGRpc3BsYXkgb2YgdGV4dCBjbGFzc2lmaWNhdGlvbnMnCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUxNXM6ICAlclxuJyAlIChraW5kIG9yICdwbGFpbicsIHRleHQpKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworIyMjIyBBTlNJIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZmF1bHRfYW5zaSA9IHsKKyAgICAnY29tbWVudCc6ICgnXDAzM1swOzMxbScsICdcMDMzWzBtJyksCisgICAgJ3N0cmluZyc6ICgnXDAzM1swOzMybScsICdcMDMzWzBtJyksCisgICAgJ2RvY3N0cmluZyc6ICgnXDAzM1swOzMybScsICdcMDMzWzBtJyksCisgICAgJ2tleXdvcmQnOiAoJ1wwMzNbMDszM20nLCAnXDAzM1swbScpLAorICAgICdidWlsdGluJzogKCdcMDMzWzA7MzVtJywgJ1wwMzNbMG0nKSwKKyAgICAnZGVmaW5pdGlvbic6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCisgICAgJ2RlZm5hbWUnOiAoJ1wwMzNbMDszNG0nLCAnXDAzM1swbScpLAorICAgICdvcGVyYXRvcic6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCit9CisKK2RlZiBhbnNpX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIGNvbG9ycz1kZWZhdWx0X2Fuc2kpOgorICAgICdBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBzb3VyY2UgY29kZSB1c2luZyBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMnCisgICAgIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgb3BlbmVyLCBjbG9zZXIgPSBjb2xvcnMuZ2V0KGtpbmQsICgnJywgJycpKQorICAgICAgICByZXN1bHQgKz0gW29wZW5lciwgdGV4dCwgY2xvc2VyXQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworIyMjIyBIVE1MIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsb3BlbmVyPSc8cHJlIGNsYXNzPSJweXRob24iPlxuJywgY2xvc2VyPSc8L3ByZT5cbicpOgorICAgICdDb252ZXJ0IGNsYXNzaWZpZWQgdGV4dCB0byBhbiBIVE1MIGZyYWdtZW50JworICAgIHJlc3VsdCA9IFtvcGVuZXJdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPHNwYW4gY2xhc3M9IiVzIj4nICUga2luZCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjZ2kuZXNjYXBlKHRleHQpKQorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnPC9zcGFuPicpCisgICAgcmVzdWx0LmFwcGVuZChjbG9zZXIpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCitkZWZhdWx0X2NzcyA9IHsKKyAgICAnLmNvbW1lbnQnOiAne2NvbG9yOiBjcmltc29uO30nLAorICAgICcuc3RyaW5nJzogICd7Y29sb3I6IGZvcmVzdGdyZWVuO30nLAorICAgICcuZG9jc3RyaW5nJzogJ3tjb2xvcjogZm9yZXN0Z3JlZW47IGZvbnQtc3R5bGU6aXRhbGljO30nLAorICAgICcua2V5d29yZCc6ICd7Y29sb3I6IGRhcmtvcmFuZ2U7fScsCisgICAgJy5idWlsdGluJzogJ3tjb2xvcjogcHVycGxlO30nLAorICAgICcuZGVmaW5pdGlvbic6ICd7Y29sb3I6IGRhcmtvcmFuZ2U7IGZvbnQtd2VpZ2h0OmJvbGQ7fScsCisgICAgJy5kZWZuYW1lJzogJ3tjb2xvcjogYmx1ZTt9JywKKyAgICAnLm9wZXJhdG9yJzogJ3tjb2xvcjogYnJvd247fScsCit9CisKK2RlZmF1bHRfaHRtbCA9ICcnJ1wKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+IHt0aXRsZX0gPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cit7Y3NzfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgore2JvZHl9Cis8L2JvZHk+Cis8L2h0bWw+CisnJycKKworZGVmIGJ1aWxkX2h0bWxfcGFnZShjbGFzc2lmaWVkX3RleHQsIHRpdGxlPSdweXRob24nLAorICAgICAgICAgICAgICAgICAgICBjc3M9ZGVmYXVsdF9jc3MsIGh0bWw9ZGVmYXVsdF9odG1sKToKKyAgICAnQ3JlYXRlIGEgY29tcGxldGUgSFRNTCBwYWdlIHdpdGggY29sb3JpemVkIHNvdXJjZSBjb2RlJworICAgIGNzc19zdHIgPSAnXG4nLmpvaW4oWyclcyAlcycgJSBpdGVtIGZvciBpdGVtIGluIGNzcy5pdGVtcygpXSkKKyAgICByZXN1bHQgPSBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgdGl0bGUgPSBjZ2kuZXNjYXBlKHRpdGxlKQorICAgIHJldHVybiBodG1sLmZvcm1hdCh0aXRsZT10aXRsZSwgY3NzPWNzc19zdHIsIGJvZHk9cmVzdWx0KQorCisjIyMjIExhVGVYIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmYXVsdF9sYXRleF9jb21tYW5kcyA9IHsKKyAgICAnY29tbWVudCc6ICd7XGNvbG9ye3JlZH0jMX0nLAorICAgICdzdHJpbmcnOiAne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAorICAgICdkb2NzdHJpbmcnOiAne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKKyAgICAna2V5d29yZCc6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdidWlsdGluJzogJ3tcY29sb3J7cHVycGxlfSMxfScsCisgICAgJ2RlZmluaXRpb24nOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnZGVmbmFtZSc6ICd7XGNvbG9ye2JsdWV9IzF9JywKKyAgICAnb3BlcmF0b3InOiAne1xjb2xvcnticm93bn0jMX0nLAorfQorCitkZWZhdWx0X2xhdGV4X2RvY3VtZW50ID0gcicnJworXGRvY3VtZW50Y2xhc3N7YXJ0aWNsZX0KK1x1c2VwYWNrYWdle2FsbHR0fQorXHVzZXBhY2thZ2V7dXBxdW90ZX0KK1x1c2VwYWNrYWdle2NvbG9yfQorXHVzZXBhY2thZ2VbdXNlbmFtZXMsZHZpcHNuYW1lc117eGNvbG9yfQorXHVzZXBhY2thZ2VbY21de2Z1bGxwYWdlfQorJShtYWNyb3MpcworXGJlZ2lue2RvY3VtZW50fQorXGNlbnRlcntcTEFSR0V7JSh0aXRsZSlzfX0KK1xiZWdpbnthbGx0dH0KKyUoYm9keSlzCitcZW5ke2FsbHR0fQorXGVuZHtkb2N1bWVudH0KKycnJworCitkZWYgYWxsdHRfZXNjYXBlKHMpOgorICAgICdSZXBsYWNlIGJhY2tzbGFzaCBhbmQgYnJhY2VzIHdpdGggdGhlaXIgZXNjYXBlZCBlcXVpdmFsZW50cycKKyAgICB4bGF0ID0geyd7JzogcidceycsICd9JzogcidcfScsICdcXCc6IHInXHRleHRiYWNrc2xhc2h7fSd9CisgICAgcmV0dXJuIHJlLnN1YihyJ1tcXHt9XScsIGxhbWJkYSBtbzogeGxhdFttby5ncm91cCgpXSwgcykKKworZGVmIGxhdGV4X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIHRpdGxlID0gJ3B5dGhvbicsCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzID0gZGVmYXVsdF9sYXRleF9jb21tYW5kcywKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBkZWZhdWx0X2xhdGV4X2RvY3VtZW50KToKKyAgICAnQ3JlYXRlIGEgY29tcGxldGUgTGFUZVggZG9jdW1lbnQgd2l0aCBjb2xvcml6ZWQgc291cmNlIGNvZGUnCisgICAgbWFjcm9zID0gJ1xuJy5qb2luKHInXG5ld2NvbW1hbmR7XHB5JXN9WzFdeyVzfScgJSBjIGZvciBjIGluIGNvbW1hbmRzLml0ZW1zKCkpCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHInXHB5JXN7JyAlIGtpbmQpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYWxsdHRfZXNjYXBlKHRleHQpKQorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfScpCisgICAgcmV0dXJuIGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgJSBkaWN0KHRpdGxlPXRpdGxlLCBtYWNyb3M9bWFjcm9zLCBib2R5PScnLmpvaW4ocmVzdWx0KSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMsIGFyZ3BhcnNlLCB3ZWJicm93c2VyLCBvcywgdGV4dHdyYXAKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gUHl0aG9uIHNvdXJjZSBjb2RlJywKKyAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIsCisgICAgICAgICAgICBlcGlsb2cgPSB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICAgICAgZXhhbXBsZXM6CisKKyAgICAgICAgICAgICAgICAgICMgU2hvdyBzeW50YXggaGlnaGxpZ2h0ZWQgY29kZSBpbiB0aGUgdGVybWluYWwgd2luZG93CisgICAgICAgICAgICAgICAgICAkIC4vaGlnaGxpZ2h0LnB5IG15ZmlsZS5weQorCisgICAgICAgICAgICAgICAgICAjIENvbG9yaXplIG15ZmlsZS5weSBhbmQgZGlzcGxheSBpbiBhIGJyb3dzZXIKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWIgbXlmaWxlLnB5CisKKyAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIGFuIEhUTUwgc2VjdGlvbiB0byBlbWJlZCBpbiBhbiBleGlzdGluZyB3ZWJwYWdlCisgICAgICAgICAgICAgICAgICAuL2hpZ2hsaWdodC5weSAtcyBteWZpbGUucHkKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBjb21wbGV0ZSBIVE1MIGZpbGUKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWMgbXlmaWxlLnB5ID4gbXlmaWxlLmh0bWwKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBQREYgdXNpbmcgTGFUZVgKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgLWwgbXlmaWxlLnB5IHwgcGRmbGF0ZXgKKworICAgICAgICAgICAgJycnKSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3VyY2VmaWxlJywgbWV0YXZhciA9ICdTT1VSQ0VGSUxFJywKKyAgICAgICAgICAgIGhlbHAgPSAnZmlsZSBjb250YWluaW5nIFB5dGhvbiBzb3VyY2Vjb2RlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJyb3dzZXInLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ2xhdW5jaCBhIGJyb3dzZXIgdG8gc2hvdyByZXN1bHRzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbXBsZXRlJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdidWlsZCBhIGNvbXBsZXRlIGh0bWwgd2VicGFnZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1sYXRleCcsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnYnVpbGQgYSBMYVRlWCBkb2N1bWVudCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYXcnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ3JhdyBwYXJzZSBvZiBjYXRlZ29yaXplZCB0ZXh0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXNlY3Rpb24nLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ3Nob3cgYW4gSFRNTCBzZWN0aW9uIHJhdGhlciB0aGFuIGEgY29tcGxldGUgd2VicGFnZScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3Muc2VjdGlvbiBhbmQgKGFyZ3MuYnJvd3NlciBvciBhcmdzLmNvbXBsZXRlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdUaGUgLXMvLS1zZWN0aW9uIG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIC1iLy0tYnJvd3NlciBvciAtYy8tLWNvbXBsZXRlIG9wdGlvbnMnKQorCisgICAgc291cmNlZmlsZSA9IGFyZ3Muc291cmNlZmlsZQorICAgIHdpdGggb3Blbihzb3VyY2VmaWxlKSBhcyBmOgorICAgICAgICBzb3VyY2UgPSBmLnJlYWQoKQorICAgIGNsYXNzaWZpZWRfdGV4dCA9IGFuYWx5emVfcHl0aG9uKHNvdXJjZSkKKworICAgIGlmIGFyZ3MucmF3OgorICAgICAgICBlbmNvZGVkID0gcmF3X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgZWxpZiBhcmdzLmNvbXBsZXRlIG9yIGFyZ3MuYnJvd3NlcjoKKyAgICAgICAgZW5jb2RlZCA9IGJ1aWxkX2h0bWxfcGFnZShjbGFzc2lmaWVkX3RleHQsIHRpdGxlPXNvdXJjZWZpbGUpCisgICAgZWxpZiBhcmdzLnNlY3Rpb246CisgICAgICAgIGVuY29kZWQgPSBodG1sX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisgICAgZWxpZiBhcmdzLmxhdGV4OgorICAgICAgICBlbmNvZGVkID0gbGF0ZXhfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9c291cmNlZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBlbmNvZGVkID0gYW5zaV9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KQorCisgICAgaWYgYXJncy5icm93c2VyOgorICAgICAgICBodG1sZmlsZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzb3VyY2VmaWxlKSlbMF0gKyAnLmh0bWwnCisgICAgICAgIHdpdGggb3BlbihodG1sZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShlbmNvZGVkKQorICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2ZpbGU6Ly8nICsgb3MucGF0aC5hYnNwYXRoKGh0bWxmaWxlKSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGVuY29kZWQpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weSBiL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5MDcyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weQpAQCAtMCwwICsxLDM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisiIiJNaXNjZWxsYW5lb3VzIGRpYWdub3N0aWNzIGZvciB0aGUgaW1wb3J0IHN5c3RlbSIiIgorCitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2Zyb20gcHByaW50IGltcG9ydCBwcHJpbnQKKworZGVmIF9kdW1wX3N0YXRlKGFyZ3MpOgorICAgIHByaW50KHN5cy52ZXJzaW9uKQorICAgIGZvciBuYW1lIGluIGFyZ3MuYXR0cmlidXRlczoKKyAgICAgICAgcHJpbnQoInN5cy57fToiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcHByaW50KGdldGF0dHIoc3lzLCBuYW1lKSkKKworZGVmIF9hZGRfZHVtcF9hcmdzKGNtZCk6CisgICAgY21kLmFkZF9hcmd1bWVudCgiYXR0cmlidXRlcyIsIG1ldGF2YXI9IkFUVFIiLCBuYXJncz0iKyIsCisgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzeXMgbW9kdWxlIGF0dHJpYnV0ZSB0byBkaXNwbGF5IikKKworQ09NTUFORFMgPSAoCisgICgiZHVtcCIsICJEdW1wIGltcG9ydCBzdGF0ZSIsIF9kdW1wX3N0YXRlLCBfYWRkX2R1bXBfYXJncyksCispCisKK2RlZiBfbWFrZV9wYXJzZXIoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgc3ViID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHRpdGxlPSJDb21tYW5kcyIpCisgICAgZm9yIG5hbWUsIGRlc2NyaXB0aW9uLCBpbXBsZW1lbnRhdGlvbiwgYWRkX2FyZ3MgaW4gQ09NTUFORFM6CisgICAgICAgIGNtZCA9IHN1Yi5hZGRfcGFyc2VyKG5hbWUsIGhlbHA9ZGVzY3JpcHRpb24pCisgICAgICAgIGNtZC5zZXRfZGVmYXVsdHMoY29tbWFuZD1pbXBsZW1lbnRhdGlvbikKKyAgICAgICAgYWRkX2FyZ3MoY21kKQorICAgIHJldHVybiBwYXJzZXIKKworZGVmIG1haW4oYXJncyk6CisgICAgcGFyc2VyID0gX21ha2VfcGFyc2VyKCkKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKyAgICByZXR1cm4gYXJncy5jb21tYW5kKGFyZ3MpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CmluZGV4IDZhMzkxNDUuLjdiODg1N2UgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKQEAgLTQ5LDI5ICs0OSwxNSBAQAogQHN0YXR1cygiR2V0dGluZyB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC9jaGFuZ2VkIiwKICAgICAgICAgaW5mbz1sYW1iZGEgeDogbl9maWxlc19zdHIobGVuKHgpKSkKIGRlZiBjaGFuZ2VkX2ZpbGVzKCk6Ci0gICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSB0aGUgVkNTLiIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5oZycpKToKLSAgICAgICAgdmNzID0gJ2hnJwotICAgICAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKLSAgICAgICAgaWYgbXFfcGF0Y2hlc19hcHBsaWVkKCk6Ci0gICAgICAgICAgICBjbWQgKz0gJyAtLXJldiBxcGFyZW50JwotICAgIGVsaWYgb3MucGF0aC5pc2RpcignLnN2bicpOgotICAgICAgICB2Y3MgPSAnc3ZuJwotICAgICAgICBjbWQgPSAnc3ZuIHN0YXR1cyAtLXF1aWV0IC0tbm9uLWludGVyYWN0aXZlIC0taWdub3JlLWV4dGVybmFscycKLSAgICBlbHNlOgorICAgICIiIkdldCB0aGUgbGlzdCBvZiBjaGFuZ2VkIG9yIGFkZGVkIGZpbGVzIGZyb20gTWVyY3VyaWFsLiIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihTUkNESVIsICcuaGcnKSk6CiAgICAgICAgIHN5cy5leGl0KCduZWVkIGEgY2hlY2tvdXQgdG8gZ2V0IG1vZGlmaWVkIGZpbGVzJykKIAotICAgIHN0ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQuc3BsaXQoKSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICB0cnk6Ci0gICAgICAgIHN0LndhaXQoKQotICAgICAgICBpZiB2Y3MgPT0gJ2hnJzoKLSAgICAgICAgICAgIHJldHVybiBbeC5kZWNvZGUoKS5yc3RyaXAoKSBmb3IgeCBpbiBzdC5zdGRvdXRdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXQgPSAoeC5kZWNvZGUoKS5yc3RyaXAoKS5yc3BsaXQoTm9uZSwgMSlbLTFdCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc3Quc3Rkb3V0IGlmIHhbMF0gaW4gYidBTScpCi0gICAgICAgIHJldHVybiBzZXQocGF0aCBmb3IgcGF0aCBpbiBvdXRwdXQgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCkpCi0gICAgZmluYWxseToKLSAgICAgICAgc3Quc3Rkb3V0LmNsb3NlKCkKKyAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKKyAgICBpZiBtcV9wYXRjaGVzX2FwcGxpZWQoKToKKyAgICAgICAgY21kICs9ICcgLS1yZXYgcXBhcmVudCcKKyAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLnNwbGl0KCksIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpIGFzIHN0OgorICAgICAgICByZXR1cm4gW3guZGVjb2RlKCkucnN0cmlwKCkgZm9yIHggaW4gc3Quc3Rkb3V0XQogCiAKIGRlZiByZXBvcnRfbW9kaWZpZWRfZmlsZXMoZmlsZV9wYXRocyk6CkBAIC04OSwxMCArNzUsOCBAQAogZGVmIG5vcm1hbGl6ZV93aGl0ZXNwYWNlKGZpbGVfcGF0aHMpOgogICAgICIiIk1ha2Ugc3VyZSB0aGF0IHRoZSB3aGl0ZXNwYWNlIGZvciAucHkgZmlsZXMgaGF2ZSBiZWVuIG5vcm1hbGl6ZWQuIiIiCiAgICAgcmVpbmRlbnQubWFrZWJhY2t1cCA9IEZhbHNlICAjIE5vIG5lZWQgdG8gY3JlYXRlIGJhY2t1cHMuCi0gICAgZml4ZWQgPSBbXQotICAgIGZvciBwYXRoIGluICh4IGZvciB4IGluIGZpbGVfcGF0aHMgaWYgeC5lbmRzd2l0aCgnLnB5JykpOgotICAgICAgICBpZiByZWluZGVudC5jaGVjayhvcy5wYXRoLmpvaW4oU1JDRElSLCBwYXRoKSk6Ci0gICAgICAgICAgICBmaXhlZC5hcHBlbmQocGF0aCkKKyAgICBmaXhlZCA9IFtwYXRoIGZvciBwYXRoIGluIGZpbGVfcGF0aHMgaWYgcGF0aC5lbmRzd2l0aCgnLnB5JykgYW5kCisgICAgICAgICAgICAgcmVpbmRlbnQuY2hlY2sob3MucGF0aC5qb2luKFNSQ0RJUiwgcGF0aCkpXQogICAgIHJldHVybiBmaXhlZAogCiAKQEAgLTE0OCw2ICsxMzIsMjEgQEAKICAgICAiIiJDaGVjayBpZiBNaXNjL05FV1MgaGFzIGJlZW4gY2hhbmdlZC4iIiIKICAgICByZXR1cm4gJ01pc2MvTkVXUycgaW4gZmlsZV9wYXRocwogCitAc3RhdHVzKCJjb25maWd1cmUgcmVnZW5lcmF0ZWQiLCBtb2RhbD1UcnVlLCBpbmZvPXN0cikKK2RlZiByZWdlbmVyYXRlZF9jb25maWd1cmUoZmlsZV9wYXRocyk6CisgICAgIiIiQ2hlY2sgaWYgY29uZmlndXJlIGhhcyBiZWVuIHJlZ2VuZXJhdGVkLiIiIgorICAgIGlmICdjb25maWd1cmUuYWMnIGluIGZpbGVfcGF0aHM6CisgICAgICAgIHJldHVybiAieWVzIiBpZiAnY29uZmlndXJlJyBpbiBmaWxlX3BhdGhzIGVsc2UgIm5vIgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAibm90IG5lZWRlZCIKKworQHN0YXR1cygicHljb25maWcuaC5pbiByZWdlbmVyYXRlZCIsIG1vZGFsPVRydWUsIGluZm89c3RyKQorZGVmIHJlZ2VuZXJhdGVkX3B5Y29uZmlnX2hfaW4oZmlsZV9wYXRocyk6CisgICAgIiIiQ2hlY2sgaWYgcHljb25maWcuaC5pbiBoYXMgYmVlbiByZWdlbmVyYXRlZC4iIiIKKyAgICBpZiAnY29uZmlndXJlLmFjJyBpbiBmaWxlX3BhdGhzOgorICAgICAgICByZXR1cm4gInllcyIgaWYgJ3B5Y29uZmlnLmguaW4nIGluIGZpbGVfcGF0aHMgZWxzZSAibm8iCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJub3QgbmVlZGVkIgogCiBkZWYgbWFpbigpOgogICAgIGZpbGVfcGF0aHMgPSBjaGFuZ2VkX2ZpbGVzKCkKQEAgLTE2Nyw2ICsxNjYsMTAgQEAKICAgICBjcmVkaXRfZ2l2ZW4oc3BlY2lhbF9maWxlcykKICAgICAjIE1pc2MvTkVXUyBjaGFuZ2VkLgogICAgIHJlcG9ydGVkX25ld3Moc3BlY2lhbF9maWxlcykKKyAgICAjIFJlZ2VuZXJhdGVkIGNvbmZpZ3VyZSwgaWYgbmVjZXNzYXJ5LgorICAgIHJlZ2VuZXJhdGVkX2NvbmZpZ3VyZShmaWxlX3BhdGhzKQorICAgICMgUmVnZW5lcmF0ZWQgcHljb25maWcuaC5pbiwgaWYgbmVjZXNzYXJ5LgorICAgIHJlZ2VuZXJhdGVkX3B5Y29uZmlnX2hfaW4oZmlsZV9wYXRocykKIAogICAgICMgVGVzdCBzdWl0ZSBydW4gYW5kIHBhc3NlZC4KICAgICBpZiBweXRob25fZmlsZXMgb3IgY19maWxlczoKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkgYi9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5CmluZGV4IDA0ODEzMWUuLjY5ZThlMGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weQpAQCAtMjIsNyArMjIsNyBAQAogCiBpbXBvcnQgb3MsIHJlCiAKLWJpbmFyeV9yZSA9IHJlLmNvbXBpbGUoJ1tceDAwLVx4MDhceDBFLVx4MUZceDdGXScpCitiaW5hcnlfcmUgPSByZS5jb21waWxlKGJyJ1tceDAwLVx4MDhceDBFLVx4MUZceDdGXScpCiAKIGRlYnVnID0gRmFsc2UKIApAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gb3BlbihmdWxscGF0aCwgJ3JVJykKKyAgICAgICAgcmV0dXJuIG9wZW4oZnVsbHBhdGgsICJyYiIpCiAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOiAjIEFjY2VzcyBkZW5pZWQsIG9yIGEgc3BlY2lhbCBmaWxlIC0gaWdub3JlIGl0CiAgICAgICAgIHByaW50X2RlYnVnKCIlczogYWNjZXNzIGRlbmllZDogJXMiICUgKGZ1bGxwYXRoLCBlcnIpKQogICAgICAgICByZXR1cm4gTm9uZQpAQCAtNTUsOCArNTUsOCBAQAogICAgIGlmIGluZmlsZSBpcyBOb25lOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGxpbmUgPSBpbmZpbGUucmVhZGxpbmUoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGxpbmUgPSBpbmZpbGUucmVhZGxpbmUoKQogCiAgICAgaWYgYmluYXJ5X3JlLnNlYXJjaChsaW5lKToKICAgICAgICAgIyBmaWxlIGFwcGVhcnMgdG8gYmUgYmluYXJ5CkBAIC02NSw3ICs2NSw3IEBACiAKICAgICBpZiBmdWxscGF0aC5lbmRzd2l0aCgiLnB5Iikgb3IgZnVsbHBhdGguZW5kc3dpdGgoIi5weXciKToKICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmICJweXRob24iIGluIGxpbmU6CisgICAgZWxpZiBiInB5dGhvbiIgaW4gbGluZToKICAgICAgICAgIyBkaXNndWlzZWQgUHl0aG9uIHNjcmlwdCAoZS5nLiBDR0kpCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTc2LDggKzc2LDggQEAKICAgICBpZiBpbmZpbGUgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBjb2RlID0gaW5maWxlLnJlYWQoKQotICAgIGluZmlsZS5jbG9zZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGNvZGUgPSBpbmZpbGUucmVhZCgpCiAKICAgICB0cnk6CiAgICAgICAgIGNvbXBpbGUoY29kZSwgZnVsbHBhdGgsICJleGVjIikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52IGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTc4ZDY5MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CkBAIC0wLDAgKzEsMTEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cworICAgIHJjID0gMQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHZlbnYKKyAgICAgICAgdmVudi5tYWluKCkKKyAgICAgICAgcmMgPSAwCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCgnRXJyb3I6ICVzJyAlIGUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdChyYykKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgYi9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CmluZGV4IGIxODk5M2IuLjRhOTE2ZWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQpAQCAtOCw2ICs4LDggQEAKIC1yICgtLXJlY3Vyc2UpICBSZWN1cnNlLiAgIFNlYXJjaCBmb3IgYWxsIC5weSBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyB0b28uCiAtbiAoLS1ub2JhY2t1cCkgTm8gYmFja3VwLiBEb2VzIG5vdCBtYWtlIGEgIi5iYWsiIGZpbGUgYmVmb3JlIHJlaW5kZW50aW5nLgogLXYgKC0tdmVyYm9zZSkgIFZlcmJvc2UuICAgUHJpbnQgaW5mb3JtYXRpdmUgbXNnczsgZWxzZSBubyBvdXRwdXQuCisgICAoLS1uZXdsaW5lKSAgTmV3bGluZS4gICBTcGVjaWZ5IHRoZSBuZXdsaW5lIGNoYXJhY3RlciB0byB1c2UgKENSTEYsIExGKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIGZpbGUuCiAtaCAoLS1oZWxwKSAgICAgSGVscC4gICAgICBQcmludCB0aGlzIHVzYWdlIGluZm9ybWF0aW9uIGFuZCBleGl0LgogCiBDaGFuZ2UgUHl0aG9uICgucHkpIGZpbGVzIHRvIHVzZSA0LXNwYWNlIGluZGVudHMgYW5kIG5vIGhhcmQgdGFiIGNoYXJhY3RlcnMuCkBAIC01MCw2ICs1Miw4IEBACiByZWN1cnNlID0gRmFsc2UKIGRyeXJ1biA9IEZhbHNlCiBtYWtlYmFja3VwID0gVHJ1ZQorc3BlY19uZXdsaW5lID0gTm9uZQorIiIiQSBzcGVjaWZpZWQgbmV3bGluZSB0byBiZSB1c2VkIGluIHRoZSBvdXRwdXQgKHNldCBieSAtLW5ld2xpbmUgb3B0aW9uKSIiIgogCiAKIGRlZiB1c2FnZShtc2c9Tm9uZSk6CkBAIC02MiwxMyArNjYsMTIgQEAKICAgICBzeXMuc3RkZXJyLndyaXRlKCIgIi5qb2luKHN0cihhcmcpIGZvciBhcmcgaW4gYXJncykpCiAgICAgc3lzLnN0ZGVyci53cml0ZSgiXG4iKQogCi0KIGRlZiBtYWluKCk6CiAgICAgaW1wb3J0IGdldG9wdAotICAgIGdsb2JhbCB2ZXJib3NlLCByZWN1cnNlLCBkcnlydW4sIG1ha2ViYWNrdXAKKyAgICBnbG9iYWwgdmVyYm9zZSwgcmVjdXJzZSwgZHJ5cnVuLCBtYWtlYmFja3VwLCBzcGVjX25ld2xpbmUKICAgICB0cnk6CiAgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImRybnZoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsiZHJ5cnVuIiwgInJlY3Vyc2UiLCAibm9iYWNrdXAiLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICBbImRyeXJ1biIsICJyZWN1cnNlIiwgIm5vYmFja3VwIiwgInZlcmJvc2UiLCAibmV3bGluZT0iLCAiaGVscCJdKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgogICAgICAgICB1c2FnZShtc2cpCiAgICAgICAgIHJldHVybgpAQCAtODEsNiArODQsMTEgQEAKICAgICAgICAgICAgIG1ha2ViYWNrdXAgPSBGYWxzZQogICAgICAgICBlbGlmIG8gaW4gKCctdicsICctLXZlcmJvc2UnKToKICAgICAgICAgICAgIHZlcmJvc2UgPSBUcnVlCisgICAgICAgIGVsaWYgbyBpbiAoJy0tbmV3bGluZScsKToKKyAgICAgICAgICAgIGlmIG5vdCBhLnVwcGVyKCkgaW4gKCdDUkxGJywgJ0xGJyk6CisgICAgICAgICAgICAgICAgdXNhZ2UoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc3BlY19uZXdsaW5lID0gZGljdChDUkxGPSdcclxuJywgTEY9J1xuJylbYS51cHBlcigpXQogICAgICAgICBlbGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHVzYWdlKCkKICAgICAgICAgICAgIHJldHVybgpAQCAtMTE4LDkgKzEyNiw5IEBACiAgICAgICAgIGVycnByaW50KCIlczogSS9PIEVycm9yOiAlcyIgJSAoZmlsZSwgc3RyKG1zZykpKQogICAgICAgICByZXR1cm4KIAotICAgIG5ld2xpbmUgPSByLm5ld2xpbmVzCisgICAgbmV3bGluZSA9IHNwZWNfbmV3bGluZSBpZiBzcGVjX25ld2xpbmUgZWxzZSByLm5ld2xpbmVzCiAgICAgaWYgaXNpbnN0YW5jZShuZXdsaW5lLCB0dXBsZSk6Ci0gICAgICAgIGVycnByaW50KCIlczogbWl4ZWQgbmV3bGluZXMgZGV0ZWN0ZWQ7IGNhbm5vdCBwcm9jZXNzIGZpbGUiICUgZmlsZSkKKyAgICAgICAgZXJycHJpbnQoIiVzOiBtaXhlZCBuZXdsaW5lcyBkZXRlY3RlZDsgY2Fubm90IGNvbnRpbnVlIHdpdGhvdXQgLS1uZXdsaW5lIiAlIGZpbGUpCiAgICAgICAgIHJldHVybgogCiAgICAgaWYgci5ydW4oKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5IGIvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTJhMjA1MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CkBAIC0wLDAgKzEsNTEgQEAKKyIiIlJ1biBQeXRob24ncyB0ZXN0IHN1aXRlIGluIGEgZmFzdCwgcmlnb3JvdXMgd2F5LgorCitUaGUgZGVmYXVsdHMgYXJlIG1lYW50IHRvIGJlIHJlYXNvbmFibHkgdGhvcm91Z2gsIHdoaWxlIHNraXBwaW5nIGNlcnRhaW4KK3Rlc3RzIHRoYXQgY2FuIGJlIHRpbWUtY29uc3VtaW5nIG9yIHJlc291cmNlLWludGVuc2l2ZSAoZS5nLiBsYXJnZWZpbGUpLAorb3IgZGlzdHJhY3RpbmcgKGUuZy4gYXVkaW8gYW5kIGd1aSkuIFRoZXNlIGRlZmF1bHRzIGNhbiBiZSBvdmVycmlkZGVuIGJ5CitzaW1wbHkgcGFzc2luZyBhIC11IG9wdGlvbiB0byB0aGlzIHNjcmlwdC4KKworIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKKworZGVmIGlzX211bHRpcHJvY2Vzc19mbGFnKGFyZyk6CisgICAgcmV0dXJuIGFyZy5zdGFydHN3aXRoKCctaicpIG9yIGFyZy5zdGFydHN3aXRoKCctLW11bHRpcHJvY2VzcycpCisKKworZGVmIGlzX3Jlc291cmNlX3VzZV9mbGFnKGFyZyk6CisgICAgcmV0dXJuIGFyZy5zdGFydHN3aXRoKCctdScpIG9yIGFyZy5zdGFydHN3aXRoKCctLXVzZScpCisKKworZGVmIG1haW4ocmVncnRlc3RfYXJncyk6CisgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICctVycsICdkZWZhdWx0JywgICAgICAjIFdhcm5pbmdzIHNldCB0byAnZGVmYXVsdCcKKyAgICAgICAgICAgICctYmInLCAgICAgICAgICAgICAgICAjIFdhcm5pbmdzIGFib3V0IGJ5dGVzL2J5dGVhcnJheQorICAgICAgICAgICAgJy1FJywgICAgICAgICAgICAgICAgICMgSWdub3JlIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgICAgICAgICAgXQorICAgICMgQWxsb3cgdXNlci1zcGVjaWZpZWQgaW50ZXJwcmV0ZXIgb3B0aW9ucyB0byBvdmVycmlkZSBvdXIgZGVmYXVsdHMuCisgICAgYXJncy5leHRlbmQodGVzdC5zdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQorICAgIGFyZ3MuZXh0ZW5kKFsnLW0nLCAndGVzdCcsICAgICMgUnVuIHRoZSB0ZXN0IHN1aXRlCisgICAgICAgICAgICAgICAgICctcicsICAgICAgICAgICAgIyBSYW5kb21pemUgdGVzdCBvcmRlcgorICAgICAgICAgICAgICAgICAnLXcnLCAgICAgICAgICAgICMgUmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUKKyAgICAgICAgICAgICAgICAgXSkKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgYXJncy5hcHBlbmQoJy1uJykgICAgICAgICAjIFNpbGVuY2UgYWxlcnRzIHVuZGVyIFdpbmRvd3MKKyAgICBpZiB0aHJlYWRpbmcgYW5kIG5vdCBhbnkoaXNfbXVsdGlwcm9jZXNzX2ZsYWcoYXJnKSBmb3IgYXJnIGluIHJlZ3J0ZXN0X2FyZ3MpOgorICAgICAgICBhcmdzLmV4dGVuZChbJy1qJywgJzAnXSkgICMgVXNlIGFsbCBDUFUgY29yZXMKKyAgICBpZiBub3QgYW55KGlzX3Jlc291cmNlX3VzZV9mbGFnKGFyZykgZm9yIGFyZyBpbiByZWdydGVzdF9hcmdzKToKKyAgICAgICAgYXJncy5leHRlbmQoWyctdScsICdhbGwsLWxhcmdlZmlsZSwtYXVkaW8sLWd1aSddKQorICAgIGFyZ3MuZXh0ZW5kKHJlZ3J0ZXN0X2FyZ3MpCisgICAgcHJpbnQoJyAnLmpvaW4oYXJncykpCisgICAgb3MuZXhlY3Yoc3lzLmV4ZWN1dGFibGUsIGFyZ3MpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKHN5cy5hcmd2WzE6XSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5IGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKaW5kZXggYWYyMTQ3YS4uOTk4MzUyOCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKKysrIGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKQEAgLTMxOSw3ICszMTksNyBAQAogCiAgICAgIyBTdGFydCBzYXZpbmcgdGV4dCBpbiBhIGJ1ZmZlciBpbnN0ZWFkIG9mIHdyaXRpbmcgaXQgdG8gYSBmaWxlCiAgICAgZGVmIHN0YXJ0c2F2aW5nKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0ICE9IE5vbmU6CisgICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnNhdmVzdGFjay5hcHBlbmQoc2VsZi5zYXZldGV4dCkKICAgICAgICAgICAgICMgcHJpbnQgJyoqKiBSZWN1cnNpdmVseSBzYXZpbmcgdGV4dCwgZXhwZWN0IHRyb3VibGUnCiAgICAgICAgIHNlbGYuc2F2ZXRleHQgPSAnJwpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHByaW50KGFyZ3MpCiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IKLSAgICAgICAgaWYgc2VsZi5zYXZldGV4dCAhPSBOb25lOgorICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5zYXZldGV4dCA9IHNlbGYuc2F2ZXRleHQgKyB0ZXh0CiAgICAgICAgIGVsaWYgc2VsZi5ub2RlZnA6CiAgICAgICAgICAgICBzZWxmLm5vZGVmcC53cml0ZSh0ZXh0KQpAQCAtMzUwLDcgKzM1MCw3IEBACiAKICAgICAjIENvbXBsZXRlIHRoZSBjdXJyZW50IG5vZGUgLS0gd3JpdGUgZm9vdG5vdGVzIGFuZCBjbG9zZSBmaWxlCiAgICAgZGVmIGVuZG5vZGUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgIT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5zYXZldGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHByaW50KCcqKiogU3RpbGwgc2F2aW5nIHRleHQgYXQgZW5kIG9mIG5vZGUnKQogICAgICAgICAgICAgZHVtbXkgPSBzZWxmLmNvbGxlY3RzYXZpbmdzKCkKICAgICAgICAgaWYgc2VsZi5mb290bm90ZXM6CkBAIC04MDQsNyArODA0LDcgQEAKICAgICBkZWYgY2xvc2VfaShzZWxmKTogc2VsZi53cml0ZSgnPC9JPicpCiAKICAgICBkZWYgb3Blbl9mb290bm90ZShzZWxmKToKLSAgICAgICAgIyBpZiBzZWxmLnNhdmV0ZXh0IDw+IE5vbmU6CisgICAgICAgICMgaWYgc2VsZi5zYXZldGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgIyAgICAgICBwcmludCAnKioqIFJlY3Vyc2l2ZSBmb290bm90ZSAtLSBleHBlY3Qgd2VpcmRuZXNzJwogICAgICAgICBpZCA9IGxlbihzZWxmLmZvb3Rub3RlcykgKyAxCiAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5GTl9TT1VSQ0VfUEFUVEVSTiAlIHsnaWQnOiByZXByKGlkKX0pCkBAIC0xNDQyLDcgKzE0NDIsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIHNvbWUgb3RoZXIgY2hhcmFjdGVyLCBlLmcuICctJwogICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWxmLml0ZW1hcmcgKyAnICcgKyBhcmdzCi0gICAgICAgIGlmIHNlbGYuaXRlbW51bWJlciAhPSBOb25lOgorICAgICAgICBpZiBzZWxmLml0ZW1udW1iZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhcmdzID0gc2VsZi5pdGVtbnVtYmVyICsgJy4gJyArIGFyZ3MKICAgICAgICAgICAgIHNlbGYuaXRlbW51bWJlciA9IGluY3JlbWVudChzZWxmLml0ZW1udW1iZXIpCiAgICAgICAgIGlmIHNlbGYuc3RhY2sgYW5kIHNlbGYuc3RhY2tbLTFdID09ICd0YWJsZSc6CmRpZmYgLS1naXQgYS9Ub29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSBiL1Rvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMjQ0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zc2wvbWFrZV9zc2xfZGF0YS5weQpAQCAtMCwwICsxLDY4IEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisiIiIKK1RoaXMgc2NyaXB0IHNob3VsZCBiZSBjYWxsZWQgKm1hbnVhbGx5KiB3aGVuIHdlIHdhbnQgdG8gdXBncmFkZSBTU0xFcnJvcgorYGxpYnJhcnlgIGFuZCBgcmVhc29uYCBtbmVtbm9uaWNzIHRvIGEgbW9yZSByZWNlbnQgT3BlblNTTCB2ZXJzaW9uLgorCitJdCB0YWtlcyB0d28gYXJndW1lbnRzOgorLSB0aGUgcGF0aCB0byB0aGUgT3BlblNTTCBpbmNsdWRlIGZpbGVzJyBkaXJlY3RvcnkKKyAgKGUuZy4gb3BlbnNzbC0xLjAuMS1iZXRhMy9pbmNsdWRlL29wZW5zc2wvKQorLSB0aGUgcGF0aCB0byB0aGUgQyBmaWxlIHRvIGJlIGdlbmVyYXRlZAorICAocHJvYmFibHkgTW9kdWxlcy9fc3NsX2RhdGEuaCkKKyIiIgorCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKKworZGVmIHBhcnNlX2Vycm9yX2NvZGVzKGhfZmlsZSwgcHJlZml4KToKKyAgICBwYXQgPSByZS5jb21waWxlKHIiI2RlZmluZVxXKyglcyhbXHddKykpXFcrKFxkKylcYiIgJSByZS5lc2NhcGUocHJlZml4KSkKKyAgICBjb2RlcyA9IFtdCisgICAgd2l0aCBvcGVuKGhfZmlsZSwgInIiLCBlbmNvZGluZz0ibGF0aW4xIikgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIG1hdGNoID0gcGF0LnNlYXJjaChsaW5lKQorICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgY29kZSwgbmFtZSwgbnVtID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgICAgICAgICBudW0gPSBpbnQobnVtKQorICAgICAgICAgICAgICAgIGNvZGVzLmFwcGVuZCgoY29kZSwgbmFtZSwgbnVtKSkKKyAgICByZXR1cm4gY29kZXMKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBvcGVuc3NsX2luYyA9IHN5cy5hcmd2WzFdCisgICAgb3V0ZmlsZSA9IHN5cy5hcmd2WzJdCisgICAgdXNlX3N0ZG91dCA9IG91dGZpbGUgPT0gJy0nCisgICAgZiA9IHN5cy5zdGRvdXQgaWYgdXNlX3N0ZG91dCBlbHNlIG9wZW4ob3V0ZmlsZSwgInciKQorICAgIGVycm9yX2xpYnJhcmllcyA9ICgKKyAgICAgICAgIyAobGlicmFyeSBjb2RlLCBtbmVtb25pYywgZXJyb3IgcHJlZml4LCBoZWFkZXIgZmlsZSkKKyAgICAgICAgKCdFUlJfTElCX1BFTScsICdQRU0nLCAnUEVNX1JfJywgJ3BlbS5oJyksCisgICAgICAgICgnRVJSX0xJQl9TU0wnLCAnU1NMJywgJ1NTTF9SXycsICdzc2wuaCcpLAorICAgICAgICAoJ0VSUl9MSUJfWDUwOScsICdYNTA5JywgJ1g1MDlfUl8nLCAneDUwOS5oJyksCisgICAgICAgICkKKyAgICBkZWYgdyhsKToKKyAgICAgICAgZi53cml0ZShsICsgIlxuIikKKyAgICB3KCIvKiBGaWxlIGdlbmVyYXRlZCBieSBUb29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSAqLyIpCisgICAgdygiLyogR2VuZXJhdGVkIG9uICVzICovIiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCgpKQorICAgIHcoIiIpCisKKyAgICB3KCJzdGF0aWMgc3RydWN0IHB5X3NzbF9saWJyYXJ5X2NvZGUgbGlicmFyeV9jb2Rlc1tdID0geyIpCisgICAgZm9yIGxpYmNvZGUsIG1uZW1vLCBfLCBfIGluIGVycm9yX2xpYnJhcmllczoKKyAgICAgICAgdygnICAgIHsiJXMiLCAlc30sJyAlIChtbmVtbywgbGliY29kZSkpCisgICAgdygnICAgIHsgTlVMTCB9JykKKyAgICB3KCd9OycpCisgICAgdygiIikKKworICAgIHcoInN0YXRpYyBzdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgZXJyb3JfY29kZXNbXSA9IHsiKQorICAgIGZvciBsaWJjb2RlLCBfLCBwcmVmaXgsIGhfZmlsZSBpbiBlcnJvcl9saWJyYXJpZXM6CisgICAgICAgIGNvZGVzID0gcGFyc2VfZXJyb3JfY29kZXMob3MucGF0aC5qb2luKG9wZW5zc2xfaW5jLCBoX2ZpbGUpLCBwcmVmaXgpCisgICAgICAgIGZvciBjb2RlLCBuYW1lLCBudW0gaW4gc29ydGVkKGNvZGVzKToKKyAgICAgICAgICAgIHcoJyAgI2lmZGVmICVzJyAlIChjb2RlKSkKKyAgICAgICAgICAgIHcoJyAgICB7IiVzIiwgJXMsICVzfSwnICUgKG5hbWUsIGxpYmNvZGUsIGNvZGUpKQorICAgICAgICAgICAgdygnICAjZWxzZScpCisgICAgICAgICAgICB3KCcgICAgeyIlcyIsICVzLCAlZH0sJyAlIChuYW1lLCBsaWJjb2RlLCBudW0pKQorICAgICAgICAgICAgdygnICAjZW5kaWYnKQorICAgIHcoJyAgICB7IE5VTEwgfScpCisgICAgdygnfTsnKQorICAgIGlmIG5vdCB1c2Vfc3Rkb3V0OgorICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3N0cmluZ2JlbmNoL1JFQURNRSBiL1Rvb2xzL3N0cmluZ2JlbmNoL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjcxZjEyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3RyaW5nYmVuY2gvUkVBRE1FCkBAIC0wLDAgKzEsNjggQEAKK3N0cmluZ2JlbmNoIGlzIGEgc2V0IG9mIHBlcmZvcm1hbmNlIHRlc3RzIGNvbXBhcmluZyBieXRlIHN0cmluZworb3BlcmF0aW9ucyB3aXRoIHVuaWNvZGUgb3BlcmF0aW9ucy4gIFRoZSB0d28gc3RyaW5nIGltcGxlbWVudGF0aW9ucworYXJlIGxvb3NlbHkgYmFzZWQgb24gZWFjaCBvdGhlciBhbmQgc29tZXRpbWVzIHRoZSBhbGdvcml0aG0gZm9yIG9uZSBpcworZmFzdGVyIHRoYW4gdGhlIG90aGVyLgorCitUaGVzZSB0ZXN0IHNldCB3YXMgc3RhcnRlZCBhdCB0aGUgTmVlZCBGb3IgU3BlZWQgc3ByaW50IGluIFJleWtqYXZpawordG8gaWRlbnRpZnkgd2hpY2ggc3RyaW5nIG1ldGhvZHMgY291bGQgYmUgc3BlZCB1cCBxdWlja2x5IGFuZCB0bworaWRlbnRpZnkgb2J2aW91cyBwbGFjZXMgZm9yIGltcHJvdmVtZW50LgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBiZW5jaG1hcmsKKworCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkEiKScsICdzdGFydHN3aXRoIHNpbmdsZSBjaGFyYWN0ZXInLCAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfc2luZ2xlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKK1RoZSBiZW5jaCBkZWNvcmF0b3IgdGFrZXMgdGhyZWUgcGFyYW1ldGVycy4gIFRoZSBmaXJzdCBpcyBhIHNob3J0CitkZXNjcmlwdGlvbiBvZiBob3cgdGhlIGNvZGUgd29ya3MuICBJbiBtb3N0IGNhc2VzIHRoaXMgaXMgUHl0aG9uIGNvZGUKK3NuaXBwZXQuICBJdCBpcyBub3QgdGhlIGNvZGUgd2hpY2ggaXMgYWN0dWFsbHkgcnVuIGJlY2F1c2UgdGhlIHJlYWwKK2NvZGUgaXMgaGFuZC1vcHRpbWl6ZWQgdG8gZm9jdXMgb24gdGhlIG1ldGhvZCBiZWluZyB0ZXN0ZWQuCisKK1RoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEgZ3JvdXAgdGl0bGUuICBBbGwgYmVuY2htYXJrcyB3aXRoIHRoZSBzYW1lCitncm91cCB0aXRsZSBhcmUgbGlzdGVkIHRvZ2V0aGVyLiAgVGhpcyBsZXRzIHlvdSBjb21wYXJlIGRpZmZlcmVudAoraW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGFsZ29yaXRobSwgc3VjaCBhcyAidCBpbiBzIgordnMuICJzLmZpbmQodCkiLgorCitUaGUgbGFzdCBpcyBhIGNvdW50LiAgRWFjaCBiZW5jaG1hcmsgbG9vcHMgb3ZlciB0aGUgYWxnb3JpdGhtIGVpdGhlcgorMTAwIG9yIDEwMDAgdGltZXMsIGRlcGVuZGluZyBvbiB0aGUgYWxnb3JpdGhtIHBlcmZvcm1hbmNlLiAgVGhlIG91dHB1dAordGltZSBpcyB0aGUgdGltZSBwZXIgYmVuY2htYXJrIGNhbGwgc28gdGhlIHJlYWRlciBuZWVkcyBhIHdheSB0byBrbm93Citob3cgdG8gc2NhbGUgdGhlIHBlcmZvcm1hbmNlLgorCitUaGVzZSBwYXJhbWV0ZXJzIGJlY29tZSBmdW5jdGlvbiBhdHRyaWJ1dGVzLgorCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGUgb3V0cHV0CisKKworPT09PT09PT09PSBjb3VudCBuZXdsaW5lcworMzguNTQgICA0MS42MCAgIDkyLjcgICAgLi4udGV4dC53aXRoLjIwMDAubmV3bGluZXMuY291bnQoIlxuIikgKCoxMDApCis9PT09PT09PT09IGVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyCisxLjE0ICAgIDEuMTggICAgOTYuOCAgICAoIkEiKjEwMDApLmZpbmQoIkEiKSAoKjEwMDApCiswLjQ0ICAgIDAuNDEgICAgMTA1LjYgICAiQSIgaW4gIkEiKjEwMDAgKCoxMDAwKQorMS4xNSAgICAxLjE3ICAgIDk4LjEgICAgKCJBIioxMDAwKS5pbmRleCgiQSIpICgqMTAwMCkKKworVGhlIGZpcnN0IGNvbHVtbiBpcyB0aGUgcnVuIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciBieXRlIHN0cmluZ3MuCitUaGUgc2Vjb25kIGlzIHRoZSBydW4gdGltZSBmb3IgdW5pY29kZSBzdHJpbmdzLiAgVGhlIHRoaXJkIGlzIGEKK3BlcmNlbnRhZ2U7IGJ5dGUgdGltZSAvIHVuaWNvZGUgdGltZS4gIEl0J3MgdGhlIHBlcmNlbnRhZ2UgYnkgd2hpY2gKK3VuaWNvZGUgaXMgZmFzdGVyIHRoYW4gYnl0ZSBzdHJpbmdzLgorCitUaGUgbGFzdCBjb2x1bW4gY29udGFpbnMgdGhlIGNvZGUgc25pcHBldCBhbmQgdGhlIHJlcGVhdCBjb3VudCBmb3IgdGhlCitpbnRlcm5hbCBiZW5jaG1hcmsgbG9vcC4KKworVGhlIHRpbWVzIGFyZSBjb21wdXRlZCB3aXRoICd0aW1laXQucHknIHdoaWNoIHJlcGVhdHMgdGhlIHRlc3QgbW9yZQorYW5kIG1vcmUgdGltZXMgdW50aWwgdGhlIHRvdGFsIHRpbWUgdGFrZXMgb3ZlciAwLjIgc2Vjb25kcywgcmV0dXJuaW5nCit0aGUgYmVzdCB0aW1lIGZvciBhIHNpbmdsZSBpdGVyYXRpb24uCisKK1RoZSBmaW5hbCBsaW5lIG9mIHRoZSBvdXRwdXQgaXMgdGhlIGN1bXVsYXRpdmUgdGltZSBmb3IgYnl0ZSBhbmQKK3VuaWNvZGUgc3RyaW5ncywgYW5kIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIG9mIHVuaWNvZGUgcmVsYXRpdmUgdG8KK2J5dGVzLiAgRm9yIGV4YW1wbGUKKworNDA3OS44MyA1NDMyLjI1IDc1LjEgICAgVE9UQUwKKworSG93ZXZlciwgdGhpcyBoYXMgbm8gbWVhbmluZyBhcyBpdCBldmVubHkgd2VpZ2h0cyBldmVyeSB0ZXN0LgorCmRpZmYgLS1naXQgYS9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weSBiL1Rvb2xzL3N0cmluZ2JlbmNoL3N0cmluZ2JlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEwYTIxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQpAQCAtMCwwICsxLDE0ODIgQEAKKworIyBWYXJpb3VzIG1pY3JvYmVuY2htYXJrcyBjb21wYXJpbmcgdW5pY29kZSBhbmQgYnl0ZSBzdHJpbmcgcGVyZm9ybWFuY2UKKyMgUGxlYXNlIGtlZXAgdGhpcyBmaWxlIGJvdGggMi54IGFuZCAzLnggY29tcGF0aWJsZSEKKworaW1wb3J0IHRpbWVpdAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9wZXJhdG9yCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IG9wdHBhcnNlCisKK1ZFUlNJT04gPSAnMi4wJworCitkZWYgcCgqYXJncyk6CisgICAgc3lzLnN0ZG91dC53cml0ZSgnICcuam9pbihzdHIocykgZm9yIHMgaW4gYXJncykgKyAnXG4nKQorCitpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgQllURVMgPSBieXRlc19mcm9tX3N0ciA9IGxhbWJkYSB4OiB4LmVuY29kZSgnYXNjaWknKQorICAgIFVOSUNPREUgPSB1bmljb2RlX2Zyb21fc3RyID0gbGFtYmRhIHg6IHgKK2Vsc2U6CisgICAgQllURVMgPSBieXRlc19mcm9tX3N0ciA9IGxhbWJkYSB4OiB4CisgICAgVU5JQ09ERSA9IHVuaWNvZGVfZnJvbV9zdHIgPSBsYW1iZGEgeDogeC5kZWNvZGUoJ2FzY2lpJykKKworY2xhc3MgVW5zdXBwb3J0ZWRUeXBlKFR5cGVFcnJvcik6CisgICAgcGFzcworCisKK3AoJ3N0cmluZ2JlbmNoIHYlcycgJSBWRVJTSU9OKQorcChzeXMudmVyc2lvbikKK3AoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkpCisKK1JFUEVBVCA9IDEKK1JFUEVBVCA9IDMKKyNSRVBFQVQgPSA3CisKK2lmIF9fbmFtZV9fICE9ICJfX21haW5fXyI6CisgICAgcmFpc2UgU3lzdGVtRXhpdCgiTXVzdCBydW4gYXMgbWFpbiBwcm9ncmFtIikKKworcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKK3BhcnNlci5hZGRfb3B0aW9uKCItUiIsICItLXNraXAtcmUiLCBkZXN0PSJza2lwX3JlIiwKKyAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBoZWxwPSJza2lwIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXN0cyIpCitwYXJzZXIuYWRkX29wdGlvbigiLTgiLCAiLS04LWJpdCIsIGRlc3Q9ImJ5dGVzX29ubHkiLAorICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgZG8gOC1iaXQgc3RyaW5nIGJlbmNobWFya3MiKQorcGFyc2VyLmFkZF9vcHRpb24oIi11IiwgIi0tdW5pY29kZSIsIGRlc3Q9InVuaWNvZGVfb25seSIsCisgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBkbyBVbmljb2RlIHN0cmluZyBiZW5jaG1hcmtzIikKKworCitfUkFOR0VfMTAwMCA9IGxpc3QocmFuZ2UoMTAwMCkpCitfUkFOR0VfMTAwID0gbGlzdChyYW5nZSgxMDApKQorX1JBTkdFXzEwID0gbGlzdChyYW5nZSgxMCkpCisKK2R1cHMgPSB7fQorZGVmIGJlbmNoKHMsIGdyb3VwLCByZXBlYXRfY291bnQpOgorICAgIGRlZiBibGFoKGYpOgorICAgICAgICBpZiBmLl9fbmFtZV9fIGluIGR1cHM6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiTXVsdGlwbGUgZnVuY3Rpb25zIHdpdGggc2FtZSBuYW1lOiAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYuX19uYW1lX18sKSkKKyAgICAgICAgZHVwc1tmLl9fbmFtZV9fXSA9IDEKKyAgICAgICAgZi5jb21tZW50ID0gcworICAgICAgICBmLmlzX2JlbmNoID0gVHJ1ZQorICAgICAgICBmLmdyb3VwID0gZ3JvdXAKKyAgICAgICAgZi5yZXBlYXRfY291bnQgPSByZXBlYXRfY291bnQKKyAgICAgICAgcmV0dXJuIGYKKyAgICByZXR1cm4gYmxhaAorCitkZWYgdXNlc19yZShmKToKKyAgICBmLnVzZXNfcmUgPSBUcnVlCisKKyMjIyMjIyMgJ2luJyBjb21wYXJpc29ucworCitAYmVuY2goJyJBIiBpbiAiQSIqMTAwMCcsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgaW5fdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgnIkIiIGluICJBIioxMDAwJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBpbl90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworCitAYmVuY2goJyJBQiIgaW4gIkFCIioxMDAwJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5fdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgnIkJDIiBpbiAiQUIiKjEwMDAnLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbl90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJyJCQyIgaW4gKCJBQiIqMzAwKyJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKHMrIkUiKSBpbiAoKHMrIkQiKSozMDArcysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgaW5fdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjMwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczIgaW4gczEKKworIyBUcnkgd2l0aCByZWdleAorQHVzZXNfcmUKK0BiZW5jaCgncz0iQUJDIiozMzsgcmUuY29tcGlsZShzKyJEIikuc2VhcmNoKChzKyJEIikqMzAwK3MrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJlX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSozMDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHBhdCA9IHJlLmNvbXBpbGUoczIpCisgICAgc2VhcmNoID0gcGF0LnNlYXJjaAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHNlYXJjaChzMSkKKworCisjIyMjIHNhbWUgdGVzdHMgYXMgJ2luJyBidXQgdXNlICdmaW5kJworCitAYmVuY2goJygiQSIqMTAwMCkuZmluZCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5maW5kKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLmZpbmQoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuZmluZCgiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLmZpbmQoIkNBIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3Rlcl9iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikuZmluZCgiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDQSIpLmZpbmQoIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkNBIikKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5maW5kKHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCsiRSIrcykuZmluZCgiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgZSttCisgICAgczIgPSBlK20KKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKKworIyMjIyBTYW1lIHRlc3RzIGZvciAncmZpbmQnCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yZmluZCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkucmZpbmQoIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLnJmaW5kKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yZmluZCgiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yZmluZCgiQ0EiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3Rlcl9iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucmZpbmQoIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQkMiKyJBQiIqMzAwKS5yZmluZCgiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJCQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJmaW5kKCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlK20gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUrbQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAocysiRSIrKCJEIitzKSo1MDApLnJmaW5kKHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gbStlICsgKGQrbSkqNTAwCisgICAgczIgPSBtK2UKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKKworIyMjIyBOb3cgd2l0aCBpbmRleC4KKyMgU2tpcCB0aGUgb25lcyB3aGljaCBmYWlsIGJlY2F1c2UgdGhhdCB3b3VsZCBpbmNsdWRlIGV4Y2VwdGlvbiBvdmVyaGVhZC4KKworQGJlbmNoKCcoIkEiKjEwMDApLmluZGV4KCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuaW5kZXgoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbmRleF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLmluZGV4KCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5pbmRleChzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKKworIyMjIyBTYW1lIGZvciByaW5kZXgKKworQGJlbmNoKCcoIkEiKjEwMDApLnJpbmRleCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByaW5kZXhfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yaW5kZXgoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByaW5kZXhfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5yaW5kZXgoIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJpbmRleCgiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByaW5kZXhfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUgKyBtICsgKGQrbSkqNTAwCisgICAgczIgPSBlICsgbQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JpbmRleChzMikKKworCisjIyMjIFNhbWUgZm9yIHBhcnRpdGlvbgorCitAYmVuY2goJygiQSIqMTAwMCkucGFydGl0aW9uKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkucGFydGl0aW9uKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucGFydGl0aW9uKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucGFydGl0aW9uKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5wYXJ0aXRpb24oIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5wYXJ0aXRpb24ocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworCisjIyMjIFNhbWUgZm9yIHJwYXJ0aXRpb24KKworQGJlbmNoKCcoIkEiKjEwMDApLnJwYXJ0aXRpb24oIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkucnBhcnRpdGlvbigiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5ycGFydGl0aW9uKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJwYXJ0aXRpb24oIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5ycGFydGl0aW9uKCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucnBhcnRpdGlvbigiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlICsgbSArIChkK20pKjUwMAorICAgIHMyID0gZSArIG0KKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKKworIyMjIyBTYW1lIGZvciBzcGxpdChzLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkuc3BsaXQoIkEiLCAxKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnNwbGl0KCJCIiwgMSknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5zcGxpdCgiQUIiLCAxKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuc3BsaXQoIkJDIiwgMSknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikuc3BsaXQoIkJDIiwgMSknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLnNwbGl0KHMrIkUiLCAxKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHNwbGl0X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworCisjIyMjIFNhbWUgZm9yIHJzcGxpdChzLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkucnNwbGl0KCJBIiwgMSknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkucnNwbGl0KCJCIiwgMSknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnNwbGl0KCJBQiIsIDEpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnNwbGl0KCJCQyIsIDEpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5yc3BsaXQoIkNBIiwgMSknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJzcGxpdCgiRSIrcywgMSknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByc3BsaXRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUgKyBtICsgKGQrbSkqNTAwCisgICAgczIgPSBlICsgbQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworCisjIyMjIEJlbmNobWFyayB0aGUgb3BlcmF0b3ItYmFzZWQgbWV0aG9kcworCitAYmVuY2goJyJBIioxMCcsICJyZXBlYXQgMSBjaGFyYWN0ZXIgMTAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF9zaW5nbGVfMTBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwCisKK0BiZW5jaCgnIkEiKjEwMDAnLCAicmVwZWF0IDEgY2hhcmFjdGVyIDEwMDAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF9zaW5nbGVfMTAwMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkEiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAwMAorCitAYmVuY2goJyJBQkNERSIqMTAnLCAicmVwZWF0IDUgY2hhcmFjdGVycyAxMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0XzVfMTBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBQkNERSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMAorCitAYmVuY2goJyJBQkNERSIqMTAwMCcsICJyZXBlYXQgNSBjaGFyYWN0ZXJzIDEwMDAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF81XzEwMDBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBQkNERSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMDAwCisKKyMgKyBmb3IgY29uY2F0CisKK0BiZW5jaCgnIkFuZHJldyIrIkRhbGtlIicsICJjb25jYXQgdHdvIHN0cmluZ3MiLCAxMDAwKQorZGVmIGNvbmNhdF90d29fc3RyaW5ncyhTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJEYWxrZSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxK3MyCisKK0BiZW5jaCgnczErczIrczMrczQrLi4uK3MyMCcsICJjb25jYXQgMjAgc3RyaW5ncyBvZiB3b3JkcyBsZW5ndGggNCB0byAxNSIsCisgICAgICAgMTAwMCkKK2RlZiBjb25jYXRfbWFueV9zdHJpbmdzKFNUUik6CisgICAgczE9U1RSKCdUSVhTR1lOUkVEQ1ZCSEonKQorICAgIHMyPVNUUignUFVNVExYQlpWRE8nKQorICAgIHMzPVNUUignRlZaTkonKQorICAgIHM0PVNUUignT0dEWFVXJykKKyAgICBzNT1TVFIoJ1dFSU1STkNPWVZHSEtCJykKKyAgICBzNj1TVFIoJ0ZDUVROTVhQVVpIJykKKyAgICBzNz1TVFIoJ1RJQ1pKWVJMQk5WVUVBSycpCisgICAgczg9U1RSKCdSRVlCJykKKyAgICBzOT1TVFIoJ1BXVU9RJykKKyAgICBzMTA9U1RSKCdFUUhDTUtCUycpCisgICAgczExPVNUUignQUVWREZPSCcpCisgICAgczEyPVNUUignSUZIVkQnKQorICAgIHMxMz1TVFIoJ0pHVENOTFhXT0hRJykKKyAgICBzMTQ9U1RSKCdJVFNLRVBZTFJPWkFXWEYnKQorICAgIHMxNT1TVFIoJ1RIRUsnKQorICAgIHMxNj1TVFIoJ0dIUFpGQlVZQ0tNTkpJVCcpCisgICAgczE3PVNUUignSk1VWicpCisgICAgczE4PVNUUignV0xaUU1UQicpCisgICAgczE5PVNUUignS1BBRENCVycpCisgICAgczIwPVNUUignVE5KSFpRQUdCVScpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIChzMSArIHMyKyBzMysgczQrIHM1KyBzNisgczcrIHM4KyBzOStzMTArCisgICAgICAgICBzMTErczEyK3MxMytzMTQrczE1K3MxNitzMTcrczE4K3MxOStzMjApCisKKworIyMjIyBCZW5jaG1hcmsgam9pbgorCitkZWYgZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsIGFyZyk6CisgICAgaWYgU1RSIGlzIEJZVEVTIGFuZCBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVHlwZQorICAgIHJldHVybiBTVFIoYXJnKQorCitAYmVuY2goJyJBIi5qb2luKCIiKScsCisgICAgICAgImpvaW4gZW1wdHkgc3RyaW5nLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMCkKK2RlZiBqb2luX2VtcHR5X3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbigiIiknLAorICAgICAgICJqb2luIGVtcHR5IHN0cmluZywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDApCitkZWYgam9pbl9lbXB0eV81KFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBIi5qb2luKCJBQkMuLloiKScsCisgICAgICAgImpvaW4gc3RyaW5nIHdpdGggMjYgY2hhcmFjdGVycywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKCJBQkMuLloiKScsCisgICAgICAgImpvaW4gc3RyaW5nIHdpdGggMjYgY2hhcmFjdGVycywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfNShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQSIuam9pbihsaXN0KCJBQkMuLloiKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMjYgY2hhcmFjdGVycywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfbGlzdF9zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gW1NUUih4KSBmb3IgeCBpbiAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiXQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKGxpc3QoIkFCQy4uWiIpKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAyNiBjaGFyYWN0ZXJzLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF9saXN0X2ZpdmUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IFtTVFIoeCkgZm9yIHggaW4gIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIl0KKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBIi5qb2luKFsiQm9iIl0qMTAwKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMTAwIHdvcmRzLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl8xMDBfd29yZHNfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IFtTVFIoIkJvYiIpXSoxMDAKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbihbIkJvYiJdKjEwMCkpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDEwMCB3b3Jkcywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fMTAwX3dvcmRzXzUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IFtTVFIoIkJvYiIpXSoxMDAKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCisjIyMjIHNwbGl0IHRlc3RzCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoc21hbGwpIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3NwbGl0KFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5yc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChzbWFsbCkiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcnNwbGl0KFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5zcGxpdChOb25lLCAxKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9zcGxpdF8xKFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgTiA9IE5vbmUKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChOLCAxKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5yc3BsaXQoTm9uZSwgMSknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcnNwbGl0XzEoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIE4gPSBOb25lCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KE4sIDEpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnBhcnRpdGlvbigiICIpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3BhcnRpdGlvbihTVFIpOgorICAgIHNlcCA9IFNUUigiICIpCisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcGFydGl0aW9uID0gcy5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19wYXJ0aXRpb24oc2VwKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5ycGFydGl0aW9uKCIgIiknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcnBhcnRpdGlvbihTVFIpOgorICAgIHNlcCA9IFNUUigiICIpCisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcnBhcnRpdGlvbiA9IHMucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JwYXJ0aXRpb24oc2VwKQorCitodW1hbl90ZXh0ID0gIiIiXAorUHl0aG9uIGlzIGEgZHluYW1pYyBvYmplY3Qtb3JpZW50ZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhhdCBjYW4gYmUKK3VzZWQgZm9yIG1hbnkga2luZHMgb2Ygc29mdHdhcmUgZGV2ZWxvcG1lbnQuIEl0IG9mZmVycyBzdHJvbmcgc3VwcG9ydAorZm9yIGludGVncmF0aW9uIHdpdGggb3RoZXIgbGFuZ3VhZ2VzIGFuZCB0b29scywgY29tZXMgd2l0aCBleHRlbnNpdmUKK3N0YW5kYXJkIGxpYnJhcmllcywgYW5kIGNhbiBiZSBsZWFybmVkIGluIGEgZmV3IGRheXMuIE1hbnkgUHl0aG9uCitwcm9ncmFtbWVycyByZXBvcnQgc3Vic3RhbnRpYWwgcHJvZHVjdGl2aXR5IGdhaW5zIGFuZCBmZWVsIHRoZSBsYW5ndWFnZQorZW5jb3VyYWdlcyB0aGUgZGV2ZWxvcG1lbnQgb2YgaGlnaGVyIHF1YWxpdHksIG1vcmUgbWFpbnRhaW5hYmxlIGNvZGUuCisKK1B5dGhvbiBydW5zIG9uIFdpbmRvd3MsIExpbnV4L1VuaXgsIE1hYyBPUyBYLCBPUy8yLCBBbWlnYSwgUGFsbQorSGFuZGhlbGRzLCBhbmQgTm9raWEgbW9iaWxlIHBob25lcy4gUHl0aG9uIGhhcyBhbHNvIGJlZW4gcG9ydGVkIHRvIHRoZQorSmF2YSBhbmQgLk5FVCB2aXJ0dWFsIG1hY2hpbmVzLgorCitQeXRob24gaXMgZGlzdHJpYnV0ZWQgdW5kZXIgYW4gT1NJLWFwcHJvdmVkIG9wZW4gc291cmNlIGxpY2Vuc2UgdGhhdAorbWFrZXMgaXQgZnJlZSB0byB1c2UsIGV2ZW4gZm9yIGNvbW1lcmNpYWwgcHJvZHVjdHMuCisiIiIqMjUKK2h1bWFuX3RleHRfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihodW1hbl90ZXh0KQoraHVtYW5fdGV4dF91bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihodW1hbl90ZXh0KQorZGVmIF9nZXRfaHVtYW5fdGV4dChTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gaHVtYW5fdGV4dF91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICByZXR1cm4gaHVtYW5fdGV4dF9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKK0BiZW5jaCgnaHVtYW5fdGV4dC5zcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKGh1Z2UpIiwgMTApCitkZWYgd2hpdGVzcGFjZV9zcGxpdF9odWdlKFNUUik6CisgICAgcyA9IF9nZXRfaHVtYW5fdGV4dChTVFIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXQoKQorCitAYmVuY2goJ2h1bWFuX3RleHQucnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoaHVnZSkiLCAxMCkKK2RlZiB3aGl0ZXNwYWNlX3JzcGxpdF9odWdlKFNUUik6CisgICAgcyA9IF9nZXRfaHVtYW5fdGV4dChTVFIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yc3BsaXQoKQorCisKKworQGJlbmNoKCcidGhpc1xcbmlzXFxuYVxcbnRlc3RcXG4iLnNwbGl0KCJcXG4iKScsICJzcGxpdCBuZXdsaW5lcyIsIDEwMDApCitkZWYgbmV3bGluZXNfc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzXG5pc1xuYVxudGVzdFxuIikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQobmwpCisKKworQGJlbmNoKCcidGhpc1xcbmlzXFxuYVxcbnRlc3RcXG4iLnJzcGxpdCgiXFxuIiknLCAic3BsaXQgbmV3bGluZXMiLCAxMDAwKQorZGVmIG5ld2xpbmVzX3JzcGxpdChTVFIpOgorICAgIHMgPSBTVFIoInRoaXNcbmlzXG5hXG50ZXN0XG4iKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChubCkKKworQGJlbmNoKCcidGhpc1xcbmlzXFxuYVxcbnRlc3RcXG4iLnNwbGl0bGluZXMoKScsICJzcGxpdCBuZXdsaW5lcyIsIDEwMDApCitkZWYgbmV3bGluZXNfc3BsaXRsaW5lcyhTVFIpOgorICAgIHMgPSBTVFIoInRoaXNcbmlzXG5hXG50ZXN0XG4iKQorICAgIHNfc3BsaXRsaW5lcyA9IHMuc3BsaXRsaW5lcworICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0bGluZXMoKQorCisjIyBzcGxpdCB0ZXh0IHdpdGggMjAwMCBuZXdsaW5lcworCitkZWYgX21ha2VfMjAwMF9saW5lcygpOgorICAgIGltcG9ydCByYW5kb20KKyAgICByID0gcmFuZG9tLlJhbmRvbSgxMDApCisgICAgY2hhcnMgPSBsaXN0KG1hcChjaHIsIHJhbmdlKDMyLCAxMjgpKSkKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4oY2hhcnMpOgorICAgICAgICBjaGFyc1tpXSA9ICIgIgorICAgICAgICBpICs9IHIucmFuZHJhbmdlKDkpCisgICAgcyA9ICIiLmpvaW4oY2hhcnMpCisgICAgcyA9IHMqNAorICAgIHdvcmRzID0gW10KKyAgICBmb3IgaSBpbiByYW5nZSgyMDAwKToKKyAgICAgICAgc3RhcnQgPSByLnJhbmRyYW5nZSg5NikKKyAgICAgICAgbiA9IHIucmFuZGludCg1LCA2NSkKKyAgICAgICAgd29yZHMuYXBwZW5kKHNbc3RhcnQ6c3RhcnQrbl0pCisgICAgcmV0dXJuICJcbiIuam9pbih3b3JkcykrIlxuIgorCitfdGV4dF93aXRoXzIwMDBfbGluZXMgPSBfbWFrZV8yMDAwX2xpbmVzKCkKK190ZXh0X3dpdGhfMjAwMF9saW5lc19ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKF90ZXh0X3dpdGhfMjAwMF9saW5lcykKK190ZXh0X3dpdGhfMjAwMF9saW5lc191bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihfdGV4dF93aXRoXzIwMDBfbGluZXMpCitkZWYgX2dldF8yMDAwX2xpbmVzKFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfdGV4dF93aXRoXzIwMDBfbGluZXNfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgcmV0dXJuIF90ZXh0X3dpdGhfMjAwMF9saW5lc19ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKworQGJlbmNoKCciLi4udGV4dC4uLiIuc3BsaXQoIlxcbiIpJywgInNwbGl0IDIwMDAgbmV3bGluZXMiLCAxMCkKK2RlZiBuZXdsaW5lc19zcGxpdF8yMDAwKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdChubCkKKworQGJlbmNoKCciLi4udGV4dC4uLiIucnNwbGl0KCJcXG4iKScsICJzcGxpdCAyMDAwIG5ld2xpbmVzIiwgMTApCitkZWYgbmV3bGluZXNfcnNwbGl0XzIwMDAoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcnNwbGl0KG5sKQorCitAYmVuY2goJyIuLi50ZXh0Li4uIi5zcGxpdGxpbmVzKCknLCAic3BsaXQgMjAwMCBuZXdsaW5lcyIsIDEwKQorZGVmIG5ld2xpbmVzX3NwbGl0bGluZXNfMjAwMChTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfc3BsaXRsaW5lcyA9IHMuc3BsaXRsaW5lcworICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdGxpbmVzKCkKKworCisjIyBzcGxpdCB0ZXh0IG9uICItLSIgY2hhcmFjdGVycworQGJlbmNoKAorICAgICcidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iLnNwbGl0KCItLSIpJywKKyAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChzbWFsbCkiLCAxMDAwKQorZGVmIHNwbGl0X211bHRpY2hhcl9zZXBfc21hbGwoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBwYXQgPSBTVFIoIi0tIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChwYXQpCitAYmVuY2goCisgICAgJyJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIucnNwbGl0KCItLSIpJywKKyAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChzbWFsbCkiLCAxMDAwKQorZGVmIHJzcGxpdF9tdWx0aWNoYXJfc2VwX3NtYWxsKFNUUik6CisgICAgcyA9IFNUUigidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBwYXQgPSBTVFIoIi0tIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQocGF0KQorCisjIyBzcGxpdCBkbmEgdGV4dCBvbiAiQUNUQVQiIGNoYXJhY3RlcnMKK0BiZW5jaCgnZG5hLnNwbGl0KCJBQ1RBVCIpJywKKyAgICAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChkbmEpIiwgMTApCitkZWYgc3BsaXRfbXVsdGljaGFyX3NlcF9kbmEoU1RSKToKKyAgICBzID0gX2dldF9kbmEoU1RSKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgcGF0ID0gU1RSKCJBQ1RBVCIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0KHBhdCkKKworQGJlbmNoKCdkbmEucnNwbGl0KCJBQ1RBVCIpJywKKyAgICAgICAic3BsaXQgb24gbXVsdGljaGFyYWN0ZXIgc2VwYXJhdG9yIChkbmEpIiwgMTApCitkZWYgcnNwbGl0X211bHRpY2hhcl9zZXBfZG5hKFNUUik6CisgICAgcyA9IF9nZXRfZG5hKFNUUikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgcGF0ID0gU1RSKCJBQ1RBVCIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JzcGxpdChwYXQpCisKKworCisjIyBzcGxpdCB3aXRoIGxpbWl0cworCitHRkYzX2V4YW1wbGUgPSAiXHQiLmpvaW4oWworICAgICJJIiwgIkdlbm9taWNfY2Fub25pY2FsIiwgInJlZ2lvbiIsICIzNTcyMDgiLCAiMzk2MTgzIiwgIi4iLCAiKyIsICIuIiwKKyAgICAiSUQ9U2VxdWVuY2U6UjExOTtub3RlPUNsb25lIFIxMTklM0IgR2VuYmFuayBBRjA2MzAwNztOYW1lPVIxMTkiXSkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUuc3BsaXQoIlxcdCIpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3NwbGl0X25vX2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChzZXApCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnNwbGl0KCJcXHQiLCA4KScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9zcGxpdF9saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoc2VwLCA4KQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5yc3BsaXQoIlxcdCIpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3JzcGxpdF9ub19saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoc2VwKQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5yc3BsaXQoIlxcdCIsIDgpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3JzcGxpdF9saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoc2VwLCA4KQorCisjIyMjIENvdW50IGNoYXJhY3RlcnMKKworQGJlbmNoKCcuLi50ZXh0LndpdGguMjAwMC5uZXdsaW5lcy5jb3VudCgiXFxuIiknLAorICAgICAgICJjb3VudCBuZXdsaW5lcyIsIDEwKQorZGVmIGNvdW50X25ld2xpbmVzKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19jb3VudCA9IHMuY291bnQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19jb3VudChubCkKKworIyBPcmNoaWQgc2VxdWVuY2VzIGNvbmNhdGVuYXRlZCwgZnJvbSBCaW9weXRob24KK19kbmEgPSAiIiIKK0NHVEFBQ0FBR0dUVFRDQ0dUQUdHVEdBQUNDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0dHVFQKK0FBVENUR0dBR0dBVENUR1RUVEFDVFRUR0dUQ0FDQ0NBVEdBR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQUFUVEdDQ0FUQ0cKK0FHQ0NUQ0NUVEdHR0FHQ1RUVENUVEdUVEdHQ0dBR0FUQ1RBQUFDQ0NUVEdDQ0NHR0NHQ0FHVFRUVEdDVENDQUFHVENHVFQKK1RHQUNBQ0FUQUFUVEdHVEdBQUdHR0dHVEdHQ0FUQ0NUVENDQ1RHQUNDQ1RDQ0NDQ0FBQ1RBVFRUVFRUVEFBQ0FBQ1RDVEMKK0FHQ0FBQ0dHQUdBQ1RDQUdUQ1RUQ0dHQ0FBQVRHQ0dBVEFBQVRHR1RHVEdBQVRUR0NBR0FBVENDQ0dUR0NBQ0NBVENHQUcKK1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDR0NDVEdDQ1RHR0dDQVRUR0NHQUdUQ0FUQVQKK0NUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQVRBQ1RHVFRDQUdDQ0dHVEdDR0dBVEdUR0FHVFRUR0dDQ0NDVFRHVFRDVFQKK1RHR1RBQ0dHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ1RUVFRHQVRHR1RDQ1RBQUFUQUNHR0NBQUdBR0dUR0dBQ0dBQUNUQVQKK0dDVEFDQUFDQUFBQVRUR1RUR1RHQ0FHQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBR0FUR0dHQ0NBQ0NHVEFBVENUR0FBR0FDQ0MKK1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHR0NDQVRUVEdHVFRHQ0dBQ0NDQ0FHR1RDQUcKK0dUR0FHQ0FBQ0FHQ1RHVENHVEFBQ0FBR0dUVFRDQ0dUQUdHR1RHQUFDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEEKK0FUQUFUVEdBVENHQUdUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRHR0dUQ0FDQ0NBVEdHR0NBVFRUR0NUR1RUR0FBR1RHQUMKK0NUQUdBVFRUR0NDQVRDR0FHQ0NUQ0NUVEdHR0FHQ0FUQ0NUVEdUVEdHQ0dBVEFUQ1RBQUFDQ0NUQ0FBVFRUVFRDQ0NDQ0EKK0FUQ0FBQVRUQUNBQ0FBQUFUVEdHVEdHQUdHR0dHVEdHQ0FUVENUVENDQ1RUQUNDQ1RDQ0NDQ0FBQVRBVFRUVFRUVEFBQ0EKK0FDVENUQ0FHQ0FBQ0dHQVRBVENUQ0FHQ1RDVFRHQ0FUQ0dBVEdBQUdBQUNDQ0FDQ0dBQUFUR0NHQVRBQUFUR0dUR1RHQUEKK1RUR0NBR0FBVENDQ0dUR0FBQ0NBVENHQUdUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0cKK0NDVEdDQ1RHR0dDQVRUR0NHQUdUQ0FUQVRDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FUQUNUR1RUQ0FHQ0NHR1RHQ0cKK0dBVEdUR0FHVFRUR0dDQ0NDVFRHVFRDVFRUR0dUQUNHR0dHR0dUQ1RBQUdBR0FUR0NBVEdHR0NUVFRUR0FUR0dUQ0NUQUEKK0FUQUNHR0NBQUdBR0dUR0dBQ0dBQUNUQVRHQ1RBQ0FBQ0FBQUFUVEdUVEdUR0NBQUFHR0NDQ0NHR0dUVEdUQ0dUQVRBQUcKK0FUR0dHQ0NBQ0NHQVRBVENUR0FBR0FDQ0NUVFRUR0dBQ0NDQ0FUVEdHQUdDQ0NBVENBQUNDQ0FUR1RDQUdUVEdBVEdHQ0MKK0FUVENHVEFBQ0FBR0dUVFRDQ0dUQUdHVEdBQUNDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0EKK0dUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRHR0dUQ0FDQ0NBVEdHR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQVRUVEdDQ0EKK1RDR0FHQ0NUQ0NUVEdHR0FHQ1RUVENUVEdUVEdHQ0dBVEFUQ1RBQUFDQ0NUVEdDQ0NHR0NBR0FHVFRUVEdHR0FBVENDQ0cKK1RHQUFDQ0FUQ0dBR1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDR0NDVEdDQ1RHR0dDQVQKK1RHQ0dBR1RDQVRBVENUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQUNBQ0NUR1RUQ0FHQ0NHR1RHQ0dHQVRHVEdBR1RUVEcKK0dDQ0NDVFRHVFRDVFRUR0dUQUNHR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NUVFRUR0FUR0dUQ0NUQUFBVEFDR0dDQUFHQUcKK0dUR0dBQ0dBQUNUQVRHQ1RBQ0FBQ0FBQUFUVEdUVEdUR0NBQUFHR0NDQ0NHR0dUVEdUQ0dUQVRUQUdBVEdHR0NDQUNDQVQKK0FBVENUR0FBR0FDQ0NUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FUR0dDQ0FUVFRHR1RUR0MKK0dBQ0NDQUdUQ0FHR1RHQUdHR1RBR0dUR0FBQ0NUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHQUcKK1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVFRHR1RDQUNDQ0FUR0dHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBVFRUR0NDQVQKK0NHQUdDQ1RDQ1RUR0dHQUdDVFRUQ1RUR1RUR0dDR0FHQVRDVEFBQUNDQ1RUR0NDQ0dHQ0dHQUdUVFRHR0NHQ0NBQUdUQ0EKK1RBVEdBQ0FDQVRBQVRUR0dUR0FBR0dHR0dUR0dDQVRDQ1RHQ0NDVEdBQ0NDVENDQ0NBQUFUVEFUVFRUVFRUQUFDQUFDVEMKK1RDQUdDQUFDR0dBVEFUQ1RDR0dDVENUVEdDQVRDR0FUR0FBR0FBQ0dDQUdDR0FBQVRHQ0dBVEFBQVRHR1RHVEdBQVRUR0MKK0FHQUFUQ0NDR1RHQUFDQ0FUQ0dBR1RDVFRUR0dBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0dDQ1QKK0dDQ1RHR0dDQVRUR0dHQUFUQ0FUQVRDVENUQ0NDQ1RBQUNHQUdHQ1RBVENDQUFBQ0FUQUNUR1RUQ0FUQ0NHR1RHQ0dHQVQKK0dUR0FHVFRUR0dDQ0NDVFRHVFRDVFRUR0dUQUNDR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NBVFRUR0FUR0dUQ0NUQ0FBQUEKK0NHR0NBQUdBR0dUR0dBQ0dBQUNUQVRHQ0NBQ0FBQ0FBQUFUVEdUVEdUQ0NDQUFHR0NDQ0NHR0dUVEdUQ0dUQVRUQUdBVEcKK0dHQ0NBQ0NHVEFBQ0NUR0FBR0FDQ0NUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FUR0FDQ0EKK1RUVEdUVEdDR0FDQ0NDQUdUQ0FHQ1RHQUdDQUFDQ0NHQ1RHQUdUR0dBQUdHVENBVFRHQ0NHQVRBVENBQ0FUQUFUQUFUVEcKK0FUQ0dBR1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVEdHVENBQ0NDQVRHQUdDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FUVFQKK0dDQ0FUQ0dBR0NDVENDVFRHR0dBR1RUVFRDVFRHVFRHR0NHQUdBVENUQUFBQ0NDVFRHQ0NDR0dDR0dBR1RUR1RHQ0dDQ0EKK0FHVENBVEFUR0FDQUNBVEFBVFRHR1RHQUFHR0dHR1RHR0NBVENDVEdDQ0NUR0FDQ0NUQ0NDQ0FBQVRUQVRUVFRUVFRBQUMKK0FBQ1RDVENBR0NBQUNHR0FUQVRDVENHR0NUQ1RUR0NBVENHQVRHQUFHQUFDR0NBR0NHQUFBVEdDR0FUQUFBVEdHVEdUR0EKK0FUVEdDQUdBQVRDQ0NHVEdBQUNDQVRDR0FHVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUMKK0dDQ1RHQ0NUR0dHQ0FUVEdDR0FHVENBVEFUQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBVEFDVEdUVENBVENDR0dUR0MKK0dHQVRHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUVEdHVEFDR0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDQVRUVEdBVEdHVENDVEMKK0FBQUFDR0dDQUFHQUdHVEdHQUNHQUFDVEFUR0NUQUNBQUNDQUFBVFRHVFRHVENDQ0FBR0dDQ0NDR0dHVFRHVENHVEFUVEEKK0dBVEdHR0NDQUNDR1RBQUNDVEdBQUdBQ0NDVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEcKK0FDQ0FUR1RHVFRHQ0dBQ0NDQ0FHVENBR0NUR0FHQ0FBQ0dDR0NUR0FHQ0dUQUFDQUFHR1RUVENDR1RBR0dUR0dBQ0NUQ0MKK0dHR0FHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dBR0dUQUFUQ1RHR0FHR0FUQ1RHQ0FUQVRUVFRHR1RDQUMKKyIiIgorX2RuYSA9ICIiLmpvaW4oX2RuYS5zcGxpdGxpbmVzKCkpCitfZG5hID0gX2RuYSAqIDI1CitfZG5hX2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoX2RuYSkKK19kbmFfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoX2RuYSkKKworZGVmIF9nZXRfZG5hKFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfZG5hX3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIHJldHVybiBfZG5hX2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworQGJlbmNoKCdkbmEuY291bnQoIkFBQ1QiKScsICJjb3VudCBBQUNUIHN1YnN0cmluZ3MgaW4gRE5BIGV4YW1wbGUiLCAxMCkKK2RlZiBjb3VudF9hYWN0KFNUUik6CisgICAgc2VxID0gX2dldF9kbmEoU1RSKQorICAgIHNlcV9jb3VudCA9IHNlcS5jb3VudAorICAgIG5lZWRsZSA9IFNUUigiQUFDVCIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzZXFfY291bnQobmVlZGxlKQorCisjIyMjIyBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aAorCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkEiKScsICdzdGFydHN3aXRoIHNpbmdsZSBjaGFyYWN0ZXInLCAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfc2luZ2xlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQW5kcmV3IiknLCAnc3RhcnRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzJywKKyAgICAgICAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfbXVsdGlwbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kcmV3IikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkFuZGVycyIpJywKKyAgICAgICAnc3RhcnRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzIC0gbm90IScsIDEwMDApCitkZWYgc3RhcnRzd2l0aF9tdWx0aXBsZV9ub3QoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kZXJzIikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCisKKyMgZW5kc3dpdGgKKworQGJlbmNoKCciQW5kcmV3Ii5lbmRzd2l0aCgidyIpJywgJ2VuZHN3aXRoIHNpbmdsZSBjaGFyYWN0ZXInLCAxMDAwKQorZGVmIGVuZHN3aXRoX3NpbmdsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJ3IikKKyAgICBzMV9lbmRzd2l0aCA9IHMxLmVuZHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2VuZHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLmVuZHN3aXRoKCJBbmRyZXciKScsICdlbmRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzJywgMTAwMCkKK2RlZiBlbmRzd2l0aF9tdWx0aXBsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRyZXciKQorICAgIHMxX2VuZHN3aXRoID0gczEuZW5kc3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZW5kc3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuZW5kc3dpdGgoIkFuZGVycyIpJywKKyAgICAgICAnZW5kc3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycyAtIG5vdCEnLCAxMDAwKQorZGVmIGVuZHN3aXRoX211bHRpcGxlX25vdChTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRlcnMiKQorICAgIHMxX2VuZHN3aXRoID0gczEuZW5kc3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZW5kc3dpdGgoczIpCisKKyMjIyMgU3RyaXAKKworQGJlbmNoKCciSGVsbG8hXFxuIi5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfc3RyaXBfcmlnaHQoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcbiIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIkhlbGxvIVxcbiIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9yc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcbiIpCisgICAgc19yc3RyaXAgPSBzLnJzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzdHJpcCgpCisKK0BiZW5jaCgnIlxcbkhlbGxvISIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3N0cmlwX2xlZnQoU1RSKToKKyAgICBzID0gU1RSKCJcbkhlbGxvISIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIlxcbkhlbGxvIVxcbiIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3N0cmlwX2JvdGgoU1RSKToKKyAgICBzID0gU1RSKCJcbkhlbGxvIVxuIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciXFxuSGVsbG8hIi5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX2xzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIlxuSGVsbG8hIikKKyAgICBzX2xzdHJpcCA9IHMubHN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbHN0cmlwKCkKKworQGJlbmNoKCdzPSJIZWxsbyFcXG4iOyBzWzotMV0gaWYgc1stMV09PSJcXG4iIGVsc2UgcycsCisgICAgICAgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfaWZfZWxzZShTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVxuIikKKyAgICBOTCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzWzotMV0gaWYgKHNbLTFdID09IE5MKSBlbHNlIHMKKworCisjIFN0cmlwIG11bHRpcGxlIHNwYWNlcyBvciB0YWJzCisKK0BiZW5jaCgnIkhlbGxvXFx0ICAgXFx0Ii5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIHNwYWNlcyBhbmQgdGFicycsIDEwMDApCitkZWYgdGVybWluYWxfc3BhY2Vfc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsb1x0ICAgXHQhIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciSGVsbG9cXHQgICBcXHQiLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIHNwYWNlcyBhbmQgdGFicycsIDEwMDApCitkZWYgdGVybWluYWxfc3BhY2VfcnN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXHQgICBcdCIpCisgICAgc19yc3RyaXAgPSBzLnJzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzdHJpcCgpCisKK0BiZW5jaCgnIlxcdCAgIFxcdEhlbGxvIi5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBzcGFjZXMgYW5kIHRhYnMnLCAxMDAwKQorZGVmIHRlcm1pbmFsX3NwYWNlX2xzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIlx0ICAgXHRIZWxsbyEiKQorICAgIHNfbHN0cmlwID0gcy5sc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sc3RyaXAoKQorCisKKyMjIyMgcmVwbGFjZQorQGJlbmNoKCciVGhpcyBpcyBhIHRlc3QiLnJlcGxhY2UoIiAiLCAiXFx0IiknLCAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyJywKKyAgICAgICAxMDAwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMgPSBTVFIoIlRoaXMgaXMgYSB0ZXN0ISIpCisgICAgZnJvbV9zdHIgPSBTVFIoIiAiKQorICAgIHRvX3N0ciA9IFNUUigiXHQiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworQHVzZXNfcmUKK0BiZW5jaCgncmUuc3ViKCIgIiwgIlxcdCIsICJUaGlzIGlzIGEgdGVzdCInLCAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyJywKKyAgICAgICAxMDAwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9yZShTVFIpOgorICAgIHMgPSBTVFIoIlRoaXMgaXMgYSB0ZXN0ISIpCisgICAgcGF0ID0gcmUuY29tcGlsZShTVFIoIiAiKSkKKyAgICB0b19zdHIgPSBTVFIoIlx0IikKKyAgICBwYXRfc3ViID0gcGF0LnN1YgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBwYXRfc3ViKHRvX3N0ciwgcykKKworQGJlbmNoKCciLi4udGV4dC53aXRoLjIwMDAubGluZXMuLi5yZXBsYWNlKCJcXG4iLCAiICIpJywKKyAgICAgICAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyLCBiaWcgc3RyaW5nJywgMTApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2JpZyhTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJcbiIpCisgICAgdG9fc3RyID0gU1RSKCIgIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCitAdXNlc19yZQorQGJlbmNoKCdyZS5zdWIoIlxcbiIsICIgIiwgIi4uLnRleHQud2l0aC4yMDAwLmxpbmVzLi4uIiknLAorICAgICAgICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXIsIGJpZyBzdHJpbmcnLCAxMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfYmlnX3JlKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgcGF0ID0gcmUuY29tcGlsZShTVFIoIlxuIikpCisgICAgdG9fc3RyID0gU1RSKCIgIikKKyAgICBwYXRfc3ViID0gcGF0LnN1YgorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgcGF0X3N1Yih0b19zdHIsIHMpCisKKworQGJlbmNoKCdkbmEucmVwbGFjZSgiQVRDIiwgIkFUVCIpJywKKyAgICAgICAncmVwbGFjZSBtdWx0aXBsZSBjaGFyYWN0ZXJzLCBkbmEnLCAxMCkKK2RlZiByZXBsYWNlX211bHRpcGxlX2NoYXJhY3RlcnNfZG5hKFNUUik6CisgICAgc2VxID0gX2dldF9kbmEoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJBVEMiKQorICAgIHRvX3N0ciA9IFNUUigiQVRUIikKKyAgICBzZXFfcmVwbGFjZSA9IHNlcS5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzZXFfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCisjIFRoaXMgaW5jcmVhc2VzIHRoZSBjaGFyYWN0ZXIgY291bnQKK0BiZW5jaCgnIi4uLnRleHQud2l0aC4yMDAwLm5ld2xpbmVzLi4ucmVwbGFjZSgiXFxuIiwgIlxcclxcbiIpJywKKyAgICAgICAncmVwbGFjZSBhbmQgZXhwYW5kIG11bHRpcGxlIGNoYXJhY3RlcnMsIGJpZyBzdHJpbmcnLCAxMCkKK2RlZiByZXBsYWNlX211bHRpcGxlX2NoYXJhY3Rlcl9iaWcoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiXG4iKQorICAgIHRvX3N0ciA9IFNUUigiXHJcbiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworCisjIFRoaXMgZGVjcmVhc2VzIHRoZSBjaGFyYWN0ZXIgY291bnQKK0BiZW5jaCgnIldoZW4gc2hhbGwgd2UgdGhyZWUgbWVldCBhZ2Fpbj8iLnJlcGxhY2UoImVlIiwgIiIpJywKKyAgICAgICAncmVwbGFjZS9yZW1vdmUgbXVsdGlwbGUgY2hhcmFjdGVycycsIDEwMDApCitkZWYgcmVwbGFjZV9tdWx0aXBsZV9jaGFyYWN0ZXJfcmVtb3ZlKFNUUik6CisgICAgcyA9IFNUUigiV2hlbiBzaGFsbCB3ZSB0aHJlZSBtZWV0IGFnYWluPyIpCisgICAgZnJvbV9zdHIgPSBTVFIoImVlIikKKyAgICB0b19zdHIgPSBTVFIoIiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCisKK2JpZ19zID0gIkEiICsgKCJaIioxMjgqMTAyNCkKK2JpZ19zX2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoYmlnX3MpCitiaWdfc191bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihiaWdfcykKK2RlZiBfZ2V0X2JpZ19zKFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6IHJldHVybiBiaWdfc191bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOiByZXR1cm4gYmlnX3NfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisjIFRoZSBvbGRlciByZXBsYWNlIGltcGxlbWVudGF0aW9uIGNvdW50ZWQgYWxsIG1hdGNoZXMgaW4KKyMgdGhlIHN0cmluZyBldmVuIHdoZW4gaXQgb25seSBuZWVlZCB0byBtYWtlIG9uZSByZXBsYWNlbWVudC4KK0BiZW5jaCgnKCJBIiArICgiWiIqMTI4KjEwMjQpKS5yZXBsYWNlKCJBIiwgIkJCIiwgMSknLAorICAgICAgICdxdWljayByZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXIgbWF0Y2gnLCAxMCkKK2RlZiBxdWlja19yZXBsYWNlX3NpbmdsZV9tYXRjaChTVFIpOgorICAgIHMgPSBfZ2V0X2JpZ19zKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiQSIpCisgICAgdG9fc3RyID0gU1RSKCJCQiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0ciwgMSkKKworQGJlbmNoKCcoIkEiICsgKCJaIioxMjgqMTAyNCkpLnJlcGxhY2UoIkFaWiIsICJCQlpaIiwgMSknLAorICAgICAgICdxdWljayByZXBsYWNlIG11bHRpcGxlIGNoYXJhY3RlciBtYXRjaCcsIDEwKQorZGVmIHF1aWNrX3JlcGxhY2VfbXVsdGlwbGVfbWF0Y2goU1RSKToKKyAgICBzID0gX2dldF9iaWdfcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIkFaWiIpCisgICAgdG9fc3RyID0gU1RSKCJCQlpaIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyLCAxKQorCisKKyMjIyMKKworIyBDQ1AgZG9lcyBhIGxvdCBvZiB0aGlzLCBmb3IgaW50ZXJuYXRpb25hbGlzYXRpb24gb2YgaW5nYW1lIG1lc3NhZ2VzLgorX2Zvcm1hdCA9ICJUaGUgJSh0aGluZylzIGlzICUocGxhY2UpcyB0aGUgJShsb2NhdGlvbilzLiIKK19mb3JtYXRfZGljdCA9IHsgInRoaW5nIjoiVEhJTkciLCAicGxhY2UiOiJQTEFDRSIsICJsb2NhdGlvbiI6IkxPQ0FUSU9OIiwgfQorX2Zvcm1hdF9ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKF9mb3JtYXQpCitfZm9ybWF0X3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKF9mb3JtYXQpCitfZm9ybWF0X2RpY3RfYnl0ZXMgPSBkaWN0KChieXRlc19mcm9tX3N0cihrKSwgYnl0ZXNfZnJvbV9zdHIodikpIGZvciAoayx2KSBpbiBfZm9ybWF0X2RpY3QuaXRlbXMoKSkKK19mb3JtYXRfZGljdF91bmljb2RlID0gZGljdCgodW5pY29kZV9mcm9tX3N0cihrKSwgdW5pY29kZV9mcm9tX3N0cih2KSkgZm9yIChrLHYpIGluIF9mb3JtYXRfZGljdC5pdGVtcygpKQorCitkZWYgX2dldF9mb3JtYXQoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRUeXBlCisgICAgICAgIHJldHVybiBfZm9ybWF0X2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworZGVmIF9nZXRfZm9ybWF0X2RpY3QoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfZGljdF91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFR5cGUKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfZGljdF9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKyMgRm9ybWF0dGluZy4KK0BiZW5jaCgnIlRoZSAlKGsxKXMgaXMgJShrMilzIHRoZSAlKGszKXMuIiV7ImsxIjoieCIsImsyIjoieSIsImszIjoieiIsfScsCisgICAgICAgJ2Zvcm1hdHRpbmcgYSBzdHJpbmcgdHlwZSB3aXRoIGEgZGljdCcsIDEwMDApCitkZWYgZm9ybWF0X3dpdGhfZGljdChTVFIpOgorICAgIHMgPSBfZ2V0X2Zvcm1hdChTVFIpCisgICAgZCA9IF9nZXRfZm9ybWF0X2RpY3QoU1RSKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICUgZAorCisKKyMjIyMgVXBwZXItIGFuZCBsb3dlci0gY2FzZSBjb252ZXJzaW9uCisKK0BiZW5jaCgnKCJXaGVyZSBpbiB0aGUgd29ybGQgaXMgQ2FybWVuIFNhbiBEZWlnbz8iKjEwKS5sb3dlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIHJhcmUiLCAxMDAwKQorZGVmIGxvd2VyX2NvbnZlcnNpb25fcmFyZShTVFIpOgorICAgIHMgPSBTVFIoIldoZXJlIGluIHRoZSB3b3JsZCBpcyBDYXJtZW4gU2FuIERlaWdvPyIqMTApCisgICAgc19sb3dlciA9IHMubG93ZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sb3dlcigpCisKK0BiZW5jaCgnKCJXSEVSRSBJTiBUSEUgV09STEQgSVMgQ0FSTUVOIFNBTiBERUlHTz8iKjEwKS5sb3dlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIGRlbnNlIiwgMTAwMCkKK2RlZiBsb3dlcl9jb252ZXJzaW9uX2RlbnNlKFNUUik6CisgICAgcyA9IFNUUigiV0hFUkUgSU4gVEhFIFdPUkxEIElTIENBUk1FTiBTQU4gREVJR08/IioxMCkKKyAgICBzX2xvd2VyID0gcy5sb3dlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xvd2VyKCkKKworCitAYmVuY2goJygid0hFUkUgSU4gVEhFIFdPUkxEIElTIGNBUk1FTiBzQU4gZEVJR08/IioxMCkudXBwZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSByYXJlIiwgMTAwMCkKK2RlZiB1cHBlcl9jb252ZXJzaW9uX3JhcmUoU1RSKToKKyAgICBzID0gU1RSKCJXaGVyZSBpbiB0aGUgd29ybGQgaXMgQ2FybWVuIFNhbiBEZWlnbz8iKjEwKQorICAgIHNfdXBwZXIgPSBzLnVwcGVyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfdXBwZXIoKQorCitAYmVuY2goJygid2hlcmUgaW4gdGhlIHdvcmxkIGlzIGNhcm1lbiBzYW4gZGVpZ28/IioxMCkudXBwZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSBkZW5zZSIsIDEwMDApCitkZWYgdXBwZXJfY29udmVyc2lvbl9kZW5zZShTVFIpOgorICAgIHMgPSBTVFIoIndoZXJlIGluIHRoZSB3b3JsZCBpcyBjYXJtZW4gc2FuIGRlaWdvPyIqMTApCisgICAgc191cHBlciA9IHMudXBwZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc191cHBlcigpCisKKworIyBlbmQgb2YgYmVuY2htYXJrcworCisjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBCZW5jaFRpbWVyKHRpbWVpdC5UaW1lcik6CisgICAgZGVmIGJlc3Qoc2VsZiwgcmVwZWF0PTEpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAxMCk6CisgICAgICAgICAgICBudW1iZXIgPSAxMCoqaQorICAgICAgICAgICAgeCA9IHNlbGYudGltZWl0KG51bWJlcikKKyAgICAgICAgICAgIGlmIHggPiAwLjAyOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRpbWVzID0gW3hdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIHJlcGVhdCk6CisgICAgICAgICAgICB0aW1lcy5hcHBlbmQoc2VsZi50aW1laXQobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIG1pbih0aW1lcykgLyBudW1iZXIKKworZGVmIG1haW4oKToKKyAgICAob3B0aW9ucywgdGVzdF9uYW1lcykgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgb3B0aW9ucy5ieXRlc19vbmx5IGFuZCBvcHRpb25zLnVuaWNvZGVfb25seToKKyAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiT25seSBvbmUgb2YgLS04LWJpdCBhbmQgLS11bmljb2RlIGFyZSBhbGxvd2VkIikKKworICAgIGJlbmNoX2Z1bmN0aW9ucyA9IFtdCisgICAgZm9yIChrLHYpIGluIGdsb2JhbHMoKS5pdGVtcygpOgorICAgICAgICBpZiBoYXNhdHRyKHYsICJpc19iZW5jaCIpOgorICAgICAgICAgICAgaWYgdGVzdF9uYW1lczoKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0X25hbWVzOgorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHYuZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgTm90IHNlbGVjdGVkLCBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG9wdGlvbnMuc2tpcF9yZSBhbmQgaGFzYXR0cih2LCAidXNlc19yZSIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGJlbmNoX2Z1bmN0aW9ucy5hcHBlbmQoICh2Lmdyb3VwLCBrLCB2KSApCisgICAgYmVuY2hfZnVuY3Rpb25zLnNvcnQoKQorCisgICAgcCgiYnl0ZXNcdHVuaWNvZGUiKQorICAgIHAoIihpbiBtcylcdChpbiBtcylcdCVcdGNvbW1lbnQiKQorCisgICAgYnl0ZXNfdG90YWwgPSB1bmlfdG90YWwgPSAwLjAKKworICAgIGZvciB0aXRsZSwgZ3JvdXAgaW4gaXRlcnRvb2xzLmdyb3VwYnkoYmVuY2hfZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvci5pdGVtZ2V0dGVyKDApKToKKyAgICAgICAgIyBGbHVzaCBidWZmZXIgYmVmb3JlIGVhY2ggZ3JvdXAKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIHAoIj0iKjEwLCB0aXRsZSkKKyAgICAgICAgZm9yIChfLCBrLCB2KSBpbiBncm91cDoKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodiwgImlzX2JlbmNoIik6CisgICAgICAgICAgICAgICAgYnl0ZXNfdGltZSA9IDAuMAorICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcyA9ICIgLSAiCisgICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbnMudW5pY29kZV9vbmx5OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lID0gQmVuY2hUaW1lcigiX19tYWluX18uJXMoX19tYWluX18uQllURVMpIiAlIChrLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IF9fbWFpbl9fIikuYmVzdChSRVBFQVQpCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lX3MgPSAiJS4yZiIgJSAoMTAwMCAqIGJ5dGVzX3RpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190b3RhbCArPSBieXRlc190aW1lCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRlZFR5cGU6CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lX3MgPSAiTi9BIgorICAgICAgICAgICAgICAgIHVuaV90aW1lID0gMC4wCisgICAgICAgICAgICAgICAgdW5pX3RpbWVfcyA9ICIgLSAiCisgICAgICAgICAgICAgICAgaWYgbm90IG9wdGlvbnMuYnl0ZXNfb25seToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RpbWUgPSBCZW5jaFRpbWVyKCJfX21haW5fXy4lcyhfX21haW5fXy5VTklDT0RFKSIgJSAoaywpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgX19tYWluX18iKS5iZXN0KFJFUEVBVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90aW1lX3MgPSAiJS4yZiIgJSAoMTAwMCAqIHVuaV90aW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RvdGFsICs9IHVuaV90aW1lCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbnN1cHBvcnRlZFR5cGU6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdGltZV9zID0gIk4vQSIKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2UgPSBieXRlc190aW1lL3VuaV90aW1lCisgICAgICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IDAuMAorICAgICAgICAgICAgICAgIHAoIiVzXHQlc1x0JS4xZlx0JXMgKColZCkiICUgKAorICAgICAgICAgICAgICAgICAgICBieXRlc190aW1lX3MsIHVuaV90aW1lX3MsIDEwMC4qYXZlcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgdi5jb21tZW50LCB2LnJlcGVhdF9jb3VudCkpCisKKyAgICBpZiBieXRlc190b3RhbCA9PSB1bmlfdG90YWwgPT0gMC4wOgorICAgICAgICBwKCJUaGF0IHdhcyB6aXBweSEiKQorICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhdGlvID0gYnl0ZXNfdG90YWwvdW5pX3RvdGFsCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHJhdGlvID0gMC4wCisgICAgICAgIHAoIiUuMmZcdCUuMmZcdCUuMWZcdCVzIiAlICgKKyAgICAgICAgICAgIDEwMDAqYnl0ZXNfdG90YWwsIDEwMDAqdW5pX3RvdGFsLCAxMDAuKnJhdGlvLAorICAgICAgICAgICAgIlRPVEFMIikpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkgYi9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkKaW5kZXggMDEzMDNkYi4uNjUyNWRkZiAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weQpAQCAtMTQsNyArMTQsNyBAQAogICAgIHByaW50KCdDb21wYXJpbmcgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgICAlciBhbmQgICAlcicgJSAoZW5jb2RpbmcxLCBlbmNvZGluZzIpKQogICAgIG1pc21hdGNoID0gMAogICAgICMgQ2hlY2sgZW5jb2RpbmcKLSAgICBmb3IgaSBpbiByYW5nZShzeXMubWF4dW5pY29kZSk6CisgICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLm1heHVuaWNvZGUrMSk6CiAgICAgICAgIHUgPSBjaHIoaSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYzEgPSB1LmVuY29kZShlbmNvZGluZzEpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5IGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQppbmRleCA3ZTdkNmQwLi5mNWExYWYzIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICAgICAgICAgY29tbWVudCA9ICcnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFsxOl0uc3RyaXAoKQotICAgICAgICBpZiBlbmMgPCAyNTY6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVuYywgdHVwbGUpIGFuZCBlbmMgPCAyNTY6CiAgICAgICAgICAgICBpZiBlbmMgaW4gdW5tYXBwZWQ6CiAgICAgICAgICAgICAgICAgdW5tYXBwZWQucmVtb3ZlKGVuYykKICAgICAgICAgICAgIGlmIGVuYyA9PSB1bmk6CkBAIC0yMDIsMTEgKzIwMiwxMCBAQAogICAgICMgQW5hbHl6ZSBtYXAgYW5kIGNyZWF0ZSB0YWJsZSBkaWN0CiAgICAgbWFwcGluZ3MgPSBzb3J0ZWQobWFwLml0ZW1zKCkpCiAgICAgdGFibGUgPSB7fQotICAgIG1heGtleSA9IDAKKyAgICBtYXhrZXkgPSAyNTUKICAgICBpZiAnSURFTlRJVFknIGluIG1hcDoKICAgICAgICAgZm9yIGtleSBpbiByYW5nZSgyNTYpOgogICAgICAgICAgICAgdGFibGVba2V5XSA9IChrZXksICcnKQotICAgICAgICBtYXhrZXkgPSAyNTUKICAgICAgICAgZGVsIG1hcFsnSURFTlRJVFknXQogICAgIGZvciBtYXBrZXksIG1hcHZhbHVlIGluIG1hcHBpbmdzOgogICAgICAgICBtYXBjb21tZW50ID0gJycKQEAgLTIyNCw2ICsyMjMsNyBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgIyBDcmVhdGUgdGFibGUgY29kZQorICAgIG1heGNoYXIgPSAwCiAgICAgZm9yIGtleSBpbiByYW5nZShtYXhrZXkgKyAxKToKICAgICAgICAgaWYga2V5IG5vdCBpbiB0YWJsZToKICAgICAgICAgICAgIG1hcHZhbHVlID0gTUlTU0lOR19DT0RFCkBAIC0yMzgsNiArMjM4LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtYXBjaGFyID0gY2hyKG1hcHZhbHVlKQorICAgICAgICBtYXhjaGFyID0gbWF4KG1heGNoYXIsIG9yZChtYXBjaGFyKSkKICAgICAgICAgaWYgbWFwY29tbWVudCBhbmQgY29tbWVudHM6CiAgICAgICAgICAgICBhcHBlbmQoJyAgICAlYSBcdCMgICVzIC0+ICVzJyAlIChtYXBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhyZXByKGtleSwga2V5X3ByZWNpc2lvbiksCkBAIC0yNDUsNiArMjQ2LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFwcGVuZCgnICAgICVhJyAlIG1hcGNoYXIpCiAKKyAgICBpZiBtYXhjaGFyIDwgMjU2OgorICAgICAgICBhcHBlbmQoJyAgICAlYSBcdCMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbicgJSBVTklfVU5ERUZJTkVEKQogICAgIGFwcGVuZCgnKScpCiAgICAgcmV0dXJuIGwKIApkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCBkNTAzMTkwLi5kODNjZjYzIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtMjEsMTcgKzIxLDIzIEBACiAjIDIwMDQtMDUtMjkgcGVya3kgYWRkIGVhc3QgYXNpYW4gd2lkdGggaW5mb3JtYXRpb24KICMgMjAwNi0wMy0xMCBtdmwgIHVwZGF0ZSB0byBVbmljb2RlIDQuMTsgYWRkIFVDRCAzLjIgZGVsdGEKICMgMjAwOC0wNi0xMSBnYiAgIGFkZCBQUklOVEFCTEVfTUFTSyBmb3IgQXRzdW8gSXNoaW1vdG8ncyBhc2NpaSgpIHBhdGNoCisjIDIwMTEtMTAtMjEgZXppbyBhZGQgc3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMKKyMgMjAxMi0wMSAgICBiZW5qYW1pbiBhZGQgZnVsbCBjYXNlIG1hcHBpbmdzCiAjCiAjIHdyaXR0ZW4gYnkgRnJlZHJpayBMdW5kaCAoZnJlZHJpa0BweXRob253YXJlLmNvbSkKICMKIAotaW1wb3J0IHN5cywgb3MsIHppcGZpbGUKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHppcGZpbGUKKworZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKIFNDUklQVCA9IHN5cy5hcmd2WzBdCiBWRVJTSU9OID0gIjMuMiIKIAogIyBUaGUgVW5pY29kZSBEYXRhYmFzZQotVU5JREFUQV9WRVJTSU9OID0gIjYuMC4wIgorVU5JREFUQV9WRVJTSU9OID0gIjYuMS4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCkBAIC0zOSw2ICs0NSwxOSBAQAogREVSSVZFRF9DT1JFX1BST1BFUlRJRVMgPSAiRGVyaXZlZENvcmVQcm9wZXJ0aWVzJXMudHh0IgogREVSSVZFRE5PUk1BTElaQVRJT05fUFJPUFMgPSAiRGVyaXZlZE5vcm1hbGl6YXRpb25Qcm9wcyVzLnR4dCIKIExJTkVfQlJFQUsgPSAiTGluZUJyZWFrJXMudHh0IgorTkFNRV9BTElBU0VTID0gIk5hbWVBbGlhc2VzJXMudHh0IgorTkFNRURfU0VRVUVOQ0VTID0gIk5hbWVkU2VxdWVuY2VzJXMudHh0IgorU1BFQ0lBTF9DQVNJTkcgPSAiU3BlY2lhbENhc2luZyVzLnR4dCIKK0NBU0VfRk9MRElORyA9ICJDYXNlRm9sZGluZyVzLnR4dCIKKworIyBQcml2YXRlIFVzZSBBcmVhcyAtLSBpbiBwbGFuZXMgMSwgMTUsIDE2CitQVUFfMSA9IHJhbmdlKDB4RTAwMCwgMHhGOTAwKQorUFVBXzE1ID0gcmFuZ2UoMHhGMDAwMCwgMHhGRkZGRSkKK1BVQV8xNiA9IHJhbmdlKDB4MTAwMDAwLCAweDEwRkZGRSkKKworIyB3ZSB1c2UgdGhpcyByYW5nZXMgb2YgUFVBXzE1IHRvIHN0b3JlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzCitOQU1FX0FMSUFTRVNfU1RBUlQgPSAweEYwMDAwCitOQU1FRF9TRVFVRU5DRVNfU1RBUlQgPSAweEYwMjAwCiAKIG9sZF92ZXJzaW9ucyA9IFsiMy4yLjAiXQogCkBAIC02NywxMyArODYsMTUgQEAKIFhJRF9TVEFSVF9NQVNLID0gMHgxMDAKIFhJRF9DT05USU5VRV9NQVNLID0gMHgyMDAKIFBSSU5UQUJMRV9NQVNLID0gMHg0MDAKLU5PREVMVEFfTUFTSyA9IDB4ODAwCi1OVU1FUklDX01BU0sgPSAweDEwMDAKK05VTUVSSUNfTUFTSyA9IDB4ODAwCitDQVNFX0lHTk9SQUJMRV9NQVNLID0gMHgxMDAwCitDQVNFRF9NQVNLID0gMHgyMDAwCitFWFRFTkRFRF9DQVNFX01BU0sgPSAweDQwMDAKIAogIyB0aGVzZSByYW5nZXMgbmVlZCB0byBtYXRjaCB1bmljb2RlZGF0YS5jOmlzX3VuaWZpZWRfaWRlb2dyYXBoCiBjamtfcmFuZ2VzID0gWwogICAgICgnMzQwMCcsICc0REI1JyksCi0gICAgKCc0RTAwJywgJzlGQ0InKSwKKyAgICAoJzRFMDAnLCAnOUZDQycpLAogICAgICgnMjAwMDAnLCAnMkE2RDYnKSwKICAgICAoJzJBNzAwJywgJzJCNzM0JyksCiAgICAgKCcyQjc0MCcsICcyQjgxRCcpCkBAIC0zNjcsNiArMzg4LDcgQEAKICAgICBudW1lcmljID0ge30KICAgICBzcGFjZXMgPSBbXQogICAgIGxpbmVicmVha3MgPSBbXQorICAgIGV4dHJhX2Nhc2luZyA9IFtdCiAKICAgICBmb3IgY2hhciBpbiB1bmljb2RlLmNoYXJzOgogICAgICAgICByZWNvcmQgPSB1bmljb2RlLnRhYmxlW2NoYXJdCkBAIC0zNzksNyArNDAxLDcgQEAKICAgICAgICAgICAgIGRlbHRhID0gVHJ1ZQogICAgICAgICAgICAgaWYgY2F0ZWdvcnkgaW4gWyJMbSIsICJMdCIsICJMdSIsICJMbCIsICJMbyJdOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IEFMUEhBX01BU0sKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJMbCI6CisgICAgICAgICAgICBpZiAiTG93ZXJjYXNlIiBpbiBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IExPV0VSX01BU0sKICAgICAgICAgICAgIGlmICdMaW5lX0JyZWFrJyBpbiBwcm9wZXJ0aWVzIG9yIGJpZGlyZWN0aW9uYWwgPT0gIkIiOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IExJTkVCUkVBS19NQVNLCkBAIC0zODksNyArNDExLDcgQEAKICAgICAgICAgICAgICAgICBzcGFjZXMuYXBwZW5kKGNoYXIpCiAgICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiTHQiOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFRJVExFX01BU0sKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJMdSI6CisgICAgICAgICAgICBpZiAiVXBwZXJjYXNlIiBpbiBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFVQUEVSX01BU0sKICAgICAgICAgICAgIGlmIGNoYXIgPT0gb3JkKCIgIikgb3IgY2F0ZWdvcnlbMF0gbm90IGluICgiQyIsICJaIik6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gUFJJTlRBQkxFX01BU0sKQEAgLTM5Nyw3ICs0MTksMTIgQEAKICAgICAgICAgICAgICAgICBmbGFncyB8PSBYSURfU1RBUlRfTUFTSwogICAgICAgICAgICAgaWYgIlhJRF9Db250aW51ZSIgaW4gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBYSURfQ09OVElOVUVfTUFTSwotICAgICAgICAgICAgIyB1c2UgZGVsdGEgcHJlZGljdG9yIGZvciB1cHBlci9sb3dlci90aXRsZSBpZiBpdCBmaXRzCisgICAgICAgICAgICBpZiAiQ2FzZWQiIGluIHByb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQ0FTRURfTUFTSworICAgICAgICAgICAgaWYgIkNhc2VfSWdub3JhYmxlIiBpbiBwcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IENBU0VfSUdOT1JBQkxFX01BU0sKKyAgICAgICAgICAgIHNjID0gdW5pY29kZS5zcGVjaWFsX2Nhc2luZy5nZXQoY2hhcikKKyAgICAgICAgICAgIGNmID0gdW5pY29kZS5jYXNlX2ZvbGRpbmcuZ2V0KGNoYXIsIFtjaGFyXSkKICAgICAgICAgICAgIGlmIHJlY29yZFsxMl06CiAgICAgICAgICAgICAgICAgdXBwZXIgPSBpbnQocmVjb3JkWzEyXSwgMTYpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDA5LDIzICs0MzYsMzkgQEAKICAgICAgICAgICAgIGlmIHJlY29yZFsxNF06CiAgICAgICAgICAgICAgICAgdGl0bGUgPSBpbnQocmVjb3JkWzE0XSwgMTYpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgVUNELmh0bWwgc2F5cyB0aGF0IGEgbWlzc2luZyB0aXRsZSBjaGFyIG1lYW5zIHRoYXQKLSAgICAgICAgICAgICAgICAjIGl0IGRlZmF1bHRzIHRvIHRoZSB1cHBlcmNhc2UgY2hhcmFjdGVyLCBub3QgdG8gdGhlCi0gICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgaXRzZWxmLiBBcHBhcmVudGx5LCBpbiB0aGUgY3VycmVudCBVQ0QgKDUueCkKLSAgICAgICAgICAgICAgICAjIHRoaXMgZmVhdHVyZSBpcyBuZXZlciB1c2VkCiAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cHBlcgotICAgICAgICAgICAgdXBwZXJfZCA9IHVwcGVyIC0gY2hhcgotICAgICAgICAgICAgbG93ZXJfZCA9IGxvd2VyIC0gY2hhcgotICAgICAgICAgICAgdGl0bGVfZCA9IHRpdGxlIC0gY2hhcgotICAgICAgICAgICAgaWYgLTMyNzY4IDw9IHVwcGVyX2QgPD0gMzI3NjcgYW5kIFwKLSAgICAgICAgICAgICAgIC0zMjc2OCA8PSBsb3dlcl9kIDw9IDMyNzY3IGFuZCBcCi0gICAgICAgICAgICAgICAtMzI3NjggPD0gdGl0bGVfZCA8PSAzMjc2NzoKLSAgICAgICAgICAgICAgICAjIHVzZSBkZWx0YXMKLSAgICAgICAgICAgICAgICB1cHBlciA9IHVwcGVyX2QgJiAweGZmZmYKLSAgICAgICAgICAgICAgICBsb3dlciA9IGxvd2VyX2QgJiAweGZmZmYKLSAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlX2QgJiAweGZmZmYKKyAgICAgICAgICAgIGlmIHNjIGlzIE5vbmUgYW5kIGNmICE9IFtsb3dlcl06CisgICAgICAgICAgICAgICAgc2MgPSAoW2xvd2VyXSwgW3RpdGxlXSwgW3VwcGVyXSkKKyAgICAgICAgICAgIGlmIHNjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgdXBwZXIgPT0gbG93ZXIgPT0gdGl0bGU6CisgICAgICAgICAgICAgICAgICAgIHVwcGVyID0gbG93ZXIgPSB0aXRsZSA9IDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1cHBlciA9IHVwcGVyIC0gY2hhcgorICAgICAgICAgICAgICAgICAgICBsb3dlciA9IGxvd2VyIC0gY2hhcgorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRpdGxlIC0gY2hhcgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGFicyh1cHBlcikgPD0gMjE0NzQ4MzY0NyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnMobG93ZXIpIDw9IDIxNDc0ODM2NDcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzKHRpdGxlKSA8PSAyMTQ3NDgzNjQ3KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmbGFncyB8PSBOT0RFTFRBX01BU0sKKyAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBlaXRoZXIgd2hlbiBzb21lIGNoYXJhY3RlciBtYXBzIHRvIG1vcmUgdGhhbiBvbmUKKyAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBpbiB1cHBlcmNhc2UsIGxvd2VyY2FzZSwgb3IgdGl0bGVjYXNlIG9yIHRoZQorICAgICAgICAgICAgICAgICMgY2FzZWZvbGRlZCB2ZXJzaW9uIG9mIHRoZSBjaGFyYWN0ZXIgaXMgZGlmZmVyZW50IGZyb20gdGhlCisgICAgICAgICAgICAgICAgIyBsb3dlcmNhc2UuIFRoZSBleHRyYSBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAjIGFycmF5LgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IEVYVEVOREVEX0NBU0VfTUFTSworICAgICAgICAgICAgICAgIGxvd2VyID0gbGVuKGV4dHJhX2Nhc2luZykgfCAobGVuKHNjWzBdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKHNjWzBdKQorICAgICAgICAgICAgICAgIGlmIGNmICE9IHNjWzBdOgorICAgICAgICAgICAgICAgICAgICBsb3dlciB8PSBsZW4oY2YpIDw8IDIwCisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoY2YpCisgICAgICAgICAgICAgICAgdXBwZXIgPSBsZW4oZXh0cmFfY2FzaW5nKSB8IChsZW4oc2NbMl0pIDw8IDI0KQorICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoc2NbMl0pCisgICAgICAgICAgICAgICAgIyBUaXRsZSBpcyBwcm9iYWJseSBlcXVhbCB0byB1cHBlci4KKyAgICAgICAgICAgICAgICBpZiBzY1sxXSA9PSBzY1syXToKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cHBlcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gbGVuKGV4dHJhX2Nhc2luZykgfCAobGVuKHNjWzFdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChzY1sxXSkKICAgICAgICAgICAgICMgZGVjaW1hbCBkaWdpdCwgaW50ZWdlciBkaWdpdAogICAgICAgICAgICAgZGVjaW1hbCA9IDAKICAgICAgICAgICAgIGlmIHJlY29yZFs2XToKQEAgLTQ1Miw2ICs0OTUsNyBAQAogICAgIHByaW50KHN1bShtYXAobGVuLCBudW1lcmljLnZhbHVlcygpKSksICJudW1lcmljIGNvZGUgcG9pbnRzIikKICAgICBwcmludChsZW4oc3BhY2VzKSwgIndoaXRlc3BhY2UgY29kZSBwb2ludHMiKQogICAgIHByaW50KGxlbihsaW5lYnJlYWtzKSwgImxpbmVicmVhayBjb2RlIHBvaW50cyIpCisgICAgcHJpbnQobGVuKGV4dHJhX2Nhc2luZyksICJleHRlbmRlZCBjYXNlIGFycmF5IikKIAogICAgIHByaW50KCItLS0gV3JpdGluZyIsIEZJTEUsICIuLi4iKQogCkBAIC00NjUsNiArNTA5LDE0IEBACiAgICAgcHJpbnQoIn07IiwgZmlsZT1mcCkKICAgICBwcmludChmaWxlPWZwKQogCisgICAgcHJpbnQoIi8qIGV4dGVuZGVkIGNhc2UgbWFwcGluZ3MgKi8iLCBmaWxlPWZwKQorICAgIHByaW50KGZpbGU9ZnApCisgICAgcHJpbnQoImNvbnN0IFB5X1VDUzQgX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbXSA9IHsiLCBmaWxlPWZwKQorICAgIGZvciBjIGluIGV4dHJhX2Nhc2luZzoKKyAgICAgICAgcHJpbnQoIiAgICAlZCwiICUgYywgZmlsZT1mcCkKKyAgICBwcmludCgifTsiLCBmaWxlPWZwKQorICAgIHByaW50KGZpbGU9ZnApCisKICAgICAjIHNwbGl0IGRlY29tcG9zaXRpb24gaW5kZXggdGFibGUKICAgICBpbmRleDEsIGluZGV4Miwgc2hpZnQgPSBzcGxpdGJpbnMoaW5kZXgsIHRyYWNlKQogCkBAIC02OTIsNiArNzQ0LDM5IEBACiAgICAgcHJpbnQoIi8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLyIsIGZpbGU9ZnApCiAgICAgY29kZWhhc2guZHVtcChmcCwgdHJhY2UpCiAKKyAgICBwcmludChmaWxlPWZwKQorICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfc3RhcnQgPSAlI3g7JyAlCisgICAgICAgICAgTkFNRV9BTElBU0VTX1NUQVJULCBmaWxlPWZwKQorICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gJSN4OycgJQorICAgICAgICAgIChOQU1FX0FMSUFTRVNfU1RBUlQgKyBsZW4odW5pY29kZS5hbGlhc2VzKSksIGZpbGU9ZnApCisKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lX2FsaWFzZXNbXSA9IHsnLCBmaWxlPWZwKQorICAgIGZvciBuYW1lLCBjb2RlcG9pbnQgaW4gdW5pY29kZS5hbGlhc2VzOgorICAgICAgICBwcmludCgnICAgIDB4JTA0WCwnICUgY29kZXBvaW50LCBmaWxlPWZwKQorICAgIHByaW50KCd9OycsIGZpbGU9ZnApCisKKyAgICAjIEluIFVuaWNvZGUgNi4wLjAsIHRoZSBzZXF1ZW5jZXMgY29udGFpbiBhdCBtb3N0IDQgQk1QIGNoYXJzLAorICAgICMgc28gd2UgYXJlIHVzaW5nIFB5X1VDUzIgc2VxWzRdLiAgVGhpcyBuZWVkcyB0byBiZSB1cGRhdGVkIGlmIGxvbmdlcgorICAgICMgc2VxdWVuY2VzIG9yIHNlcXVlbmNlcyB3aXRoIG5vbi1CTVAgY2hhcnMgYXJlIGFkZGVkLgorICAgICMgdW5pY29kZWRhdGFfbG9va3VwIHNob3VsZCBiZSBhZGFwdGVkIHRvby4KKyAgICBwcmludChkZWRlbnQoIiIiCisgICAgICAgIHR5cGVkZWYgc3RydWN0IE5hbWVkU2VxdWVuY2UgeworICAgICAgICAgICAgaW50IHNlcWxlbjsKKyAgICAgICAgICAgIFB5X1VDUzIgc2VxWzRdOworICAgICAgICB9IG5hbWVkX3NlcXVlbmNlOworICAgICAgICAiIiIpLCBmaWxlPWZwKQorCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZWRfc2VxdWVuY2VzX3N0YXJ0ID0gJSN4OycgJQorICAgICAgICAgIE5BTUVEX1NFUVVFTkNFU19TVEFSVCwgZmlsZT1mcCkKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfZW5kID0gJSN4OycgJQorICAgICAgICAgIChOQU1FRF9TRVFVRU5DRVNfU1RBUlQgKyBsZW4odW5pY29kZS5uYW1lZF9zZXF1ZW5jZXMpKSwgZmlsZT1mcCkKKworICAgIHByaW50KCdzdGF0aWMgY29uc3QgbmFtZWRfc2VxdWVuY2UgbmFtZWRfc2VxdWVuY2VzW10gPSB7JywgZmlsZT1mcCkKKyAgICBmb3IgbmFtZSwgc2VxdWVuY2UgaW4gdW5pY29kZS5uYW1lZF9zZXF1ZW5jZXM6CisgICAgICAgIHNlcV9zdHIgPSAnLCAnLmpvaW4oJzB4JTA0WCcgJSBjcCBmb3IgY3AgaW4gc2VxdWVuY2UpCisgICAgICAgIHByaW50KCcgICAgeyVkLCB7JXN9fSwnICUgKGxlbihzZXF1ZW5jZSksIHNlcV9zdHIpLCBmaWxlPWZwKQorICAgIHByaW50KCd9OycsIGZpbGU9ZnApCisKICAgICBmcC5jbG9zZSgpCiAKIApAQCAtNzI2LDcgKzgxMSwxMSBAQAogICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobGVuKG9sZC50YWJsZVtpXSkpOgogICAgICAgICAgICAgICAgIGlmIG9sZC50YWJsZVtpXVtrXSAhPSBuZXcudGFibGVbaV1ba106CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gb2xkLnRhYmxlW2ldW2tdCi0gICAgICAgICAgICAgICAgICAgIGlmIGsgPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgaWYgayA9PSAxIGFuZCBpIGluIFBVQV8xNToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5hbWUgaXMgbm90IHNldCBpbiB0aGUgb2xkLnRhYmxlLCBidXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIG5ldy50YWJsZSB3ZSBhcmUgdXNpbmcgaXQgZm9yIGFsaWFzZXMgYW5kIG5hbWVkIHNlcQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbHVlID09ICcnCisgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50ICJDQVRFR09SWSIsaGV4KGkpLCBvbGQudGFibGVbaV1ba10sIG5ldy50YWJsZVtpXVtrXQogICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfY2hhbmdlc1tpXSA9IENBVEVHT1JZX05BTUVTLmluZGV4KHZhbHVlKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gNDoKQEAgLTgxNiwxNSArOTA1LDE1IEBACiAgICAgICAgICAgICAgICAgIGV4cGFuZD0xLAogICAgICAgICAgICAgICAgICBjamtfY2hlY2s9VHJ1ZSk6CiAgICAgICAgIHNlbGYuY2hhbmdlZCA9IFtdCi0gICAgICAgIGZpbGUgPSBvcGVuX2RhdGEoVU5JQ09ERV9EQVRBLCB2ZXJzaW9uKQogICAgICAgICB0YWJsZSA9IFtOb25lXSAqIDB4MTEwMDAwCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBzID0gZmlsZS5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcyA9IHMuc3RyaXAoKS5zcGxpdCgiOyIpCi0gICAgICAgICAgICBjaGFyID0gaW50KHNbMF0sIDE2KQotICAgICAgICAgICAgdGFibGVbY2hhcl0gPSBzCisgICAgICAgIHdpdGggb3Blbl9kYXRhKFVOSUNPREVfREFUQSwgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgcyA9IGZpbGUucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkuc3BsaXQoIjsiKQorICAgICAgICAgICAgICAgIGNoYXIgPSBpbnQoc1swXSwgMTYpCisgICAgICAgICAgICAgICAgdGFibGVbY2hhcl0gPSBzCiAKICAgICAgICAgY2prX3Jhbmdlc19mb3VuZCA9IFtdCiAKQEAgLTg1NSwzMiArOTQ0LDc5IEBACiAgICAgICAgIHNlbGYudGFibGUgPSB0YWJsZQogICAgICAgICBzZWxmLmNoYXJzID0gbGlzdChyYW5nZSgweDExMDAwMCkpICMgdW5pY29kZSAzLjIKIAotICAgICAgICBmaWxlID0gb3Blbl9kYXRhKENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMsIHZlcnNpb24pCisgICAgICAgICMgY2hlY2sgZm9yIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLCBzZWUgIzEyNzUzCisgICAgICAgICMgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzIGFyZSBub3QgaW4gMy4yLjAKKyAgICAgICAgaWYgdmVyc2lvbiAhPSAnMy4yLjAnOgorICAgICAgICAgICAgc2VsZi5hbGlhc2VzID0gW10KKyAgICAgICAgICAgICMgc3RvcmUgYWxpYXNlcyBpbiB0aGUgUHJpdmF0ZSBVc2UgQXJlYSAxNSwgaW4gcmFuZ2UgVStGMDAwMC4uVStGMDBGRiwKKyAgICAgICAgICAgICMgaW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbXByZXNzaW9uIGFuZCBsb29rdXAKKyAgICAgICAgICAgICMgYWxnb3JpdGhtcyB1c2VkIGZvciB0aGUgb3RoZXIgY2hhcmFjdGVycworICAgICAgICAgICAgcHVhX2luZGV4ID0gTkFNRV9BTElBU0VTX1NUQVJUCisgICAgICAgICAgICB3aXRoIG9wZW5fZGF0YShOQU1FX0FMSUFTRVMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGNoYXIsIG5hbWUsIGFiYnJldiA9IHMuc3BsaXQoJzsnKQorICAgICAgICAgICAgICAgICAgICBjaGFyID0gaW50KGNoYXIsIDE2KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFsaWFzZXMuYXBwZW5kKChuYW1lLCBjaGFyKSkKKyAgICAgICAgICAgICAgICAgICAgIyBhbHNvIHN0b3JlIHRoZSBuYW1lIGluIHRoZSBQVUEgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlW3B1YV9pbmRleF1bMV0gPSBuYW1lCisgICAgICAgICAgICAgICAgICAgIHB1YV9pbmRleCArPSAxCisgICAgICAgICAgICBhc3NlcnQgcHVhX2luZGV4IC0gTkFNRV9BTElBU0VTX1NUQVJUID09IGxlbihzZWxmLmFsaWFzZXMpCisKKyAgICAgICAgICAgIHNlbGYubmFtZWRfc2VxdWVuY2VzID0gW10KKyAgICAgICAgICAgICMgc3RvcmUgbmFtZWQgc2VxZW5jZXMgaW4gdGhlIFBVQSAxLCBpbiByYW5nZSBVK0YwMTAwLi4sCisgICAgICAgICAgICAjIGluIG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBjb21wcmVzc2lvbiBhbmQgbG9va3VwCisgICAgICAgICAgICAjIGFsZ29yaXRobXMgdXNlZCBmb3IgdGhlIG90aGVyIGNoYXJhY3RlcnMuCisKKyAgICAgICAgICAgIGFzc2VydCBwdWFfaW5kZXggPCBOQU1FRF9TRVFVRU5DRVNfU1RBUlQKKyAgICAgICAgICAgIHB1YV9pbmRleCA9IE5BTUVEX1NFUVVFTkNFU19TVEFSVAorICAgICAgICAgICAgd2l0aCBvcGVuX2RhdGEoTkFNRURfU0VRVUVOQ0VTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcy5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBuYW1lLCBjaGFycyA9IHMuc3BsaXQoJzsnKQorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IHR1cGxlKGludChjaGFyLCAxNikgZm9yIGNoYXIgaW4gY2hhcnMuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBzdHJ1Y3R1cmUgZGVmaW5lZCBpbiBtYWtldW5pY29kZW5hbWUgaXMgT0sKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IDIgPD0gbGVuKGNoYXJzKSA8PSA0LCAiY2hhbmdlIHRoZSBQeV9VQ1MyIGFycmF5IHNpemUiCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhbGwoYyA8PSAweEZGRkYgZm9yIGMgaW4gY2hhcnMpLCAoInVzZSBQeV9VQ1M0IGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgTmFtZWRTZXF1ZW5jZSBzdHJ1Y3QgYW5kIGluIHVuaWNvZGVkYXRhX2xvb2t1cCIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZWRfc2VxdWVuY2VzLmFwcGVuZCgobmFtZSwgY2hhcnMpKQorICAgICAgICAgICAgICAgICAgICAjIGFsc28gc3RvcmUgdGhlc2UgaW4gdGhlIFBVQSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVbcHVhX2luZGV4XVsxXSA9IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgcHVhX2luZGV4ICs9IDEKKyAgICAgICAgICAgIGFzc2VydCBwdWFfaW5kZXggLSBOQU1FRF9TRVFVRU5DRVNfU1RBUlQgPT0gbGVuKHNlbGYubmFtZWRfc2VxdWVuY2VzKQorCiAgICAgICAgIHNlbGYuZXhjbHVzaW9ucyA9IHt9Ci0gICAgICAgIGZvciBzIGluIGZpbGU6Ci0gICAgICAgICAgICBzID0gcy5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGNoYXIgPSBpbnQocy5zcGxpdCgpWzBdLDE2KQotICAgICAgICAgICAgc2VsZi5leGNsdXNpb25zW2NoYXJdID0gMQorICAgICAgICB3aXRoIG9wZW5fZGF0YShDT01QT1NJVElPTl9FWENMVVNJT05TLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2hhciA9IGludChzLnNwbGl0KClbMF0sMTYpCisgICAgICAgICAgICAgICAgc2VsZi5leGNsdXNpb25zW2NoYXJdID0gMQogCiAgICAgICAgIHdpZHRocyA9IFtOb25lXSAqIDB4MTEwMDAwCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShFQVNUQVNJQU5fV0lEVEgsIHZlcnNpb24pOgotICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBzID0gcy5zcGxpdCgpWzBdLnNwbGl0KCc7JykKLSAgICAgICAgICAgIGlmICcuLicgaW4gc1swXToKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCi0gICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQoc1swXSwgMTYpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6Ci0gICAgICAgICAgICAgICAgd2lkdGhzW2NoYXJdID0gc1sxXQorICAgICAgICB3aXRoIG9wZW5fZGF0YShFQVNUQVNJQU5fV0lEVEgsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzID0gcy5zcGxpdCgpWzBdLnNwbGl0KCc7JykKKyAgICAgICAgICAgICAgICBpZiAnLi4nIGluIHNbMF06CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChzWzBdLCAxNildCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHdpZHRoc1tjaGFyXSA9IHNbMV0KKwogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAweDExMDAwMCk6CiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXS5hcHBlbmQod2lkdGhzW2ldKQpAQCAtODg4LDM2ICsxMDI0LDM5IEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldLmFwcGVuZChzZXQoKSkKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKERFUklWRURfQ09SRV9QUk9QRVJUSUVTLCB2ZXJzaW9uKToKLSAgICAgICAgICAgIHMgPSBzLnNwbGl0KCcjJywgMSlbMF0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgciwgcCA9IHMuc3BsaXQoIjsiKQotICAgICAgICAgICAgciA9IHIuc3RyaXAoKQotICAgICAgICAgICAgcCA9IHAuc3RyaXAoKQotICAgICAgICAgICAgaWYgIi4uIiBpbiByOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gci5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChyLCAxNildCi0gICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKLSAgICAgICAgICAgICAgICBpZiB0YWJsZVtjaGFyXToKLSAgICAgICAgICAgICAgICAgICAgIyBTb21lIHByb3BlcnRpZXMgKGUuZy4gRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCkKLSAgICAgICAgICAgICAgICAgICAgIyBhcHBseSB0byB1bmFzc2lnbmVkIGNvZGUgcG9pbnRzOyBpZ25vcmUgdGhlbQotICAgICAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKHApCisgICAgICAgIHdpdGggb3Blbl9kYXRhKERFUklWRURfQ09SRV9QUk9QRVJUSUVTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5zcGxpdCgnIycsIDEpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoTElORV9CUkVBSywgdmVyc2lvbik6Ci0gICAgICAgICAgICBzID0gcy5wYXJ0aXRpb24oJyMnKVswXQotICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQotICAgICAgICAgICAgaWYgbGVuKHMpIDwgMiBvciBzWzFdIG5vdCBpbiBNQU5EQVRPUllfTElORV9CUkVBS1M6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06Ci0gICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCi0gICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKLSAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKCdMaW5lX0JyZWFrJykKKyAgICAgICAgICAgICAgICByLCBwID0gcy5zcGxpdCgiOyIpCisgICAgICAgICAgICAgICAgciA9IHIuc3RyaXAoKQorICAgICAgICAgICAgICAgIHAgPSBwLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiAiLi4iIGluIHI6CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gci5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChyLCAxNildCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHRhYmxlW2NoYXJdOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTb21lIHByb3BlcnRpZXMgKGUuZy4gRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYXBwbHkgdG8gdW5hc3NpZ25lZCBjb2RlIHBvaW50czsgaWdub3JlIHRoZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQocCkKKworICAgICAgICB3aXRoIG9wZW5fZGF0YShMSU5FX0JSRUFLLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5wYXJ0aXRpb24oJyMnKVswXQorICAgICAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KKyAgICAgICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIE1BTkRBVE9SWV9MSU5FX0JSRUFLUzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgorICAgICAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKCdMaW5lX0JyZWFrJykKIAogICAgICAgICAjIFdlIG9ubHkgd2FudCB0aGUgcXVpY2tjaGVjayBwcm9wZXJ0aWVzCiAgICAgICAgICMgRm9ybWF0OiBORj9fUUM7IFkoZXMpL04obykvTShheWJlKQpAQCAtOTI4LDMxICsxMDY3LDMzIEBACiAgICAgICAgICMgZm9yIG9sZGVyIHZlcnNpb25zLCBhbmQgbm8gZGVsdGEgcmVjb3JkcyB3aWxsIGJlIGNyZWF0ZWQuCiAgICAgICAgIHF1aWNrY2hlY2tzID0gWzBdICogMHgxMTAwMDAKICAgICAgICAgcWNfb3JkZXIgPSAnTkZEX1FDIE5GS0RfUUMgTkZDX1FDIE5GS0NfUUMnLnNwbGl0KCkKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKERFUklWRUROT1JNQUxJWkFUSU9OX1BST1BTLCB2ZXJzaW9uKToKLSAgICAgICAgICAgIGlmICcjJyBpbiBzOgotICAgICAgICAgICAgICAgIHMgPSBzWzpzLmluZGV4KCcjJyldCi0gICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCi0gICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIHFjX29yZGVyOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBxdWlja2NoZWNrID0gJ01OJy5pbmRleChzWzJdKSArIDEgIyBNYXliZSBvciBObwotICAgICAgICAgICAgcXVpY2tjaGVja19zaGlmdCA9IHFjX29yZGVyLmluZGV4KHNbMV0pKjIKLSAgICAgICAgICAgIHF1aWNrY2hlY2sgPDw9IHF1aWNrY2hlY2tfc2hpZnQKLSAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06Ci0gICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCi0gICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IChxdWlja2NoZWNrc1tjaGFyXT4+cXVpY2tjaGVja19zaGlmdCkmMwotICAgICAgICAgICAgICAgIHF1aWNrY2hlY2tzW2NoYXJdIHw9IHF1aWNrY2hlY2sKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoREVSSVZFRE5PUk1BTElaQVRJT05fUFJPUFMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIGlmICcjJyBpbiBzOgorICAgICAgICAgICAgICAgICAgICBzID0gc1s6cy5pbmRleCgnIycpXQorICAgICAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KKyAgICAgICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIHFjX29yZGVyOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHF1aWNrY2hlY2sgPSAnTU4nLmluZGV4KHNbMl0pICsgMSAjIE1heWJlIG9yIE5vCisgICAgICAgICAgICAgICAgcXVpY2tjaGVja19zaGlmdCA9IHFjX29yZGVyLmluZGV4KHNbMV0pKjIKKyAgICAgICAgICAgICAgICBxdWlja2NoZWNrIDw8PSBxdWlja2NoZWNrX3NoaWZ0CisgICAgICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCAocXVpY2tjaGVja3NbY2hhcl0+PnF1aWNrY2hlY2tfc2hpZnQpJjMKKyAgICAgICAgICAgICAgICAgICAgcXVpY2tjaGVja3NbY2hhcl0gfD0gcXVpY2tjaGVjawogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAweDExMDAwMCk6CiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXS5hcHBlbmQocXVpY2tjaGVja3NbaV0pCiAKLSAgICAgICAgemlwID0gemlwZmlsZS5aaXBGaWxlKG9wZW5fZGF0YShVTklIQU4sIHZlcnNpb24pKQotICAgICAgICBpZiB2ZXJzaW9uID09ICczLjIuMCc6Ci0gICAgICAgICAgICBkYXRhID0gemlwLm9wZW4oJ1VuaWhhbi0zLjIuMC50eHQnKS5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuX051bWVyaWNWYWx1ZXMudHh0JykucmVhZCgpCisgICAgICAgIHdpdGggb3Blbl9kYXRhKFVOSUhBTiwgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIHppcCA9IHppcGZpbGUuWmlwRmlsZShmaWxlKQorICAgICAgICAgICAgaWYgdmVyc2lvbiA9PSAnMy4yLjAnOgorICAgICAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuLTMuMi4wLnR4dCcpLnJlYWQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gemlwLm9wZW4oJ1VuaWhhbl9OdW1lcmljVmFsdWVzLnR4dCcpLnJlYWQoKQogICAgICAgICBmb3IgbGluZSBpbiBkYXRhLmRlY29kZSgidXRmLTgiKS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCdVKycpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05NjUsNiArMTEwNiwzNCBAQAogICAgICAgICAgICAgIyBQYXRjaCB0aGUgbnVtZXJpYyBmaWVsZAogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV1bOF0gPSB2YWx1ZQorICAgICAgICBzYyA9IHNlbGYuc3BlY2lhbF9jYXNpbmcgPSB7fQorICAgICAgICB3aXRoIG9wZW5fZGF0YShTUEVDSUFMX0NBU0lORywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHNbOi0xXS5zcGxpdCgnIycsIDEpWzBdCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZGF0YSA9IHMuc3BsaXQoIjsgIikKKyAgICAgICAgICAgICAgICBpZiBkYXRhWzRdOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGlnbm9yZSBhbGwgY29uZGl0aW9uYWxzIChzaW5jZSB0aGV5IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICAgICAjIGxhbmd1YWdlcykgZXhjZXB0IGZvciBvbmUsIHdoaWNoIGlzIGhhcmRjb2RlZC4gU2VlCisgICAgICAgICAgICAgICAgICAgICMgaGFuZGxlX2NhcGl0YWxfc2lnbWEgaW4gdW5pY29kZW9iamVjdC5jLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGMgPSBpbnQoZGF0YVswXSwgMTYpCisgICAgICAgICAgICAgICAgbG93ZXIgPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzFdLnNwbGl0KCldCisgICAgICAgICAgICAgICAgdGl0bGUgPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzJdLnNwbGl0KCldCisgICAgICAgICAgICAgICAgdXBwZXIgPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzNdLnNwbGl0KCldCisgICAgICAgICAgICAgICAgc2NbY10gPSAobG93ZXIsIHRpdGxlLCB1cHBlcikKKyAgICAgICAgY2YgPSBzZWxmLmNhc2VfZm9sZGluZyA9IHt9CisgICAgICAgIGlmIHZlcnNpb24gIT0gJzMuMi4wJzoKKyAgICAgICAgICAgIHdpdGggb3Blbl9kYXRhKENBU0VfRk9MRElORywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzID0gc1s6LTFdLnNwbGl0KCcjJywgMSlbMF0KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBkYXRhID0gcy5zcGxpdCgiOyAiKQorICAgICAgICAgICAgICAgICAgICBpZiBkYXRhWzFdIGluICJDRiI6CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KGRhdGFbMF0sIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgY2ZbY10gPSBbaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBkYXRhWzJdLnNwbGl0KCldCiAKICAgICBkZWYgdXNlbGF0aW4xKHNlbGYpOgogICAgICAgICAjIHJlc3RyaWN0IGNoYXJhY3RlciByYW5nZSB0byBJU08gTGF0aW4gMQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pdHRlc3RndWkvdW5pdHRlc3RndWkucHkgYi9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weQppbmRleCBiNTI2NjQ2Li4wOWEyMGUyIDEwMDY0NAotLS0gYS9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weQorKysgYi9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weQpAQCAtMjgsNyArMjgsNiBAQAogIiIiCiAKIF9fYXV0aG9yX18gPSAiU3RldmUgUHVyY2VsbCAoc3RlcGhlbl9wdXJjZWxsQHlhaG9vLmNvbSkiCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb246IDEuNyAkIlsxMTotMl0KIAogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawpkaWZmIC0tZ2l0IGEvY29uZmlnLmd1ZXNzIGIvY29uZmlnLmd1ZXNzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ2MjJhNDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcuZ3Vlc3MKQEAgLTAsMCArMSwxNTMwIEBACisjISAvYmluL3NoCisjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCisjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDEyLTAyLTEwJworCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworCisjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4gIFBsZWFzZSBzZW5kIHBhdGNoZXMgKGNvbnRleHQKKyMgZGlmZiBmb3JtYXQpIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBhbmQgaW5jbHVkZSBhIENoYW5nZUxvZworIyBlbnRyeS4KKyMKKyMgVGhpcyBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUgc2ltaWxhciB0bworIyBjb25maWcuc3ViLiAgSWYgaXQgc3VjY2VlZHMsIGl0IHByaW50cyB0aGUgc3lzdGVtIG5hbWUgb24gc3Rkb3V0LCBhbmQKKyMgZXhpdHMgd2l0aCAwLiAgT3RoZXJ3aXNlLCBpdCBleGl0cyB3aXRoIDEuCisjCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0KKworT3V0cHV0IHRoZSBjb25maWd1cmF0aW9uIG5hbWUgb2YgdGhlIHN5c3RlbSBcYCRtZScgaXMgcnVuIG9uLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisKK09yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiID4mMgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1CisKKyMgQ0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUgdGhhdCB0aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24gaXMgZGlzY291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNyZWF0ZWQgYW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBkZWFsIHdpdGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZPUl9CVUlMRCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9TVF9DQycgaWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1wIGRpcmVjdG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0X2NjX2Zvcl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAwIDsKK3RyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIkUkFORE9NIiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15IDsKK3RtcGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2FzZSAkQ0NfRk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4gJGR1bW15LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAtbyAkZHVtbXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9SX0JVSUxEPSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZPUl9CVUlMRCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsKKwlmaQorCTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JVSUxEPSRIT1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRlc3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRIOi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkgMj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCisKKyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBhcmUgbm90IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6KikKKwkjIE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1hdGNoIG9uZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwbGVzOiAqLSotbmV0YnNkZWxmKiwgKi0qLW5ldGJzZGFvdXQqLAorCSMgKi0qLW5ldGJzZGVjb2ZmKiBhbmQgKi0qLW5ldGJzZCouICBGb3IgdGFyZ2V0cyB0aGF0IHJlY2VudGx5CisJIyBzd2l0Y2hlZCB0byBFTEYsICotKi1uZXRic2QqIHdvdWxkIHNlbGVjdCB0aGUgb2xkCisJIyBvYmplY3QgZmlsZSBmb3JtYXQuICBUaGlzIHByb3ZpZGVzIGJvdGggZm9yd2FyZAorCSMgY29tcGF0aWJpbGl0eSBhbmQgYSBjb25zaXN0ZW50IG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIHRoZQorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LgorCSMKKwkjIE5vdGU6IE5ldEJTRCBkb2Vzbid0IHBhcnRpY3VsYXJseSBjYXJlIGFib3V0IHRoZSB2ZW5kb3IKKwkjIHBvcnRpb24gb2YgdGhlIG5hbWUuICBXZSBhbHdheXMgc2V0IGl0IHRvICJ1bmtub3duIi4KKwlzeXNjdGw9InN5c2N0bCAtbiBody5tYWNoaW5lX2FyY2giCisJVU5BTUVfTUFDSElORV9BUkNIPWAoL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIC91c3Ivc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bilgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm1lYikgbWFjaGluZT1hcm1lYi11bmtub3duIDs7CisJICAgIGFybSopIG1hY2hpbmU9YXJtLXVua25vd24gOzsKKwkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKKwkgICAgc2gzZWIpIG1hY2hpbmU9c2gtdW5rbm93biA7OworCSAgICBzaDVlbCkgbWFjaGluZT1zaDVsZS11bmtub3duIDs7CisJICAgICopIG1hY2hpbmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24gOzsKKwllc2FjCisJIyBUaGUgT3BlcmF0aW5nIFN5c3RlbSBpbmNsdWRpbmcgb2JqZWN0IGZvcm1hdCwgaWYgaXQgaGFzIHN3aXRjaGVkCisJIyB0byBFTEYgcmVjZW50bHksIG9yIHdpbGwgaW4gdGhlIGZ1dHVyZS4KKwljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGFybSp8aTM4NnxtNjhrfG5zMzJrfHNoMyp8c3BhcmN8dmF4KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIGVjaG8gX19FTEZfXyB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCQl8IGdyZXAgLXEgX19FTEZfXworCQl0aGVuCisJCSAgICAjIE9uY2UgYWxsIHV0aWxpdGllcyBjYW4gYmUgRUNPRkYgKG5ldGJzZGVjb2ZmKSBvciBhLm91dCAobmV0YnNkYW91dCkuCisJCSAgICAjIFJldHVybiBuZXRic2QgZm9yIGVpdGhlci4gIEZJWD8KKwkJICAgIG9zPW5ldGJzZAorCQllbHNlCisJCSAgICBvcz1uZXRic2RlbGYKKwkJZmkKKwkJOzsKKwkgICAgKikKKwkJb3M9bmV0YnNkCisJCTs7CisJZXNhYworCSMgVGhlIE9TIHJlbGVhc2UKKwkjIERlYmlhbiBHTlUvTmV0QlNEIG1hY2hpbmVzIGhhdmUgYSBkaWZmZXJlbnQgdXNlcmxhbmQsIGFuZAorCSMgdGh1cywgbmVlZCBhIGRpc3RpbmN0IHRyaXBsZXQuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IG5lZWQKKwkjIGtlcm5lbCB2ZXJzaW9uIGluZm9ybWF0aW9uLCBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhCisJIyBzdWl0YWJsZSB0YWcsIGluIHRoZSBzdHlsZSBvZiBsaW51eC1nbnUuCisJY2FzZSAiJHtVTkFNRV9WRVJTSU9OfSIgaW4KKwkgICAgRGViaWFuKikKKwkJcmVsZWFzZT0nLWdudScKKwkJOzsKKwkgICAgKikKKwkJcmVsZWFzZT1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLV9dLiovXC4vJ2AKKwkJOzsKKwllc2FjCisJIyBTaW5jZSBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU06CisJIyBjb250YWlucyByZWR1bmRhbnQgaW5mb3JtYXRpb24sIHRoZSBzaG9ydGVyIGZvcm06CisJIyBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTSBpcyB1c2VkLgorCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9IgorCWV4aXQgOzsKKyAgICAqOk9wZW5CU0Q6KjoqKQorCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKKwllY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6ZWtrb0JTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZWtrb2JzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpTb2xpZEJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc29saWRic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1hY3BwYzpNaXJCU0Q6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpNaXJCU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYWxwaGE6T1NGMToqOiopCisJY2FzZSAkVU5BTUVfUkVMRUFTRSBpbgorCSo0LjApCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQzfSdgCisJCTs7CisJKjUuKikKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJOzsKKwllc2FjCisJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKwkjIE9TRi8xIGFuZCBUcnU2NCBzeXN0ZW1zIHByb2R1Y2VkIHNpbmNlIDE5OTUuICBJIGhvcGUgdGhhdAorCSMgY292ZXJzIG1vc3Qgc3lzdGVtcyBydW5uaW5nIHRvZGF5LiAgVGhpcyBjb2RlIHBpcGVzIHRoZSBDUFUKKwkjIHR5cGVzIHRocm91Z2ggaGVhZCAtbiAxLCBzbyB3ZSBvbmx5IGRldGVjdCB0aGUgdHlwZSBvZiBDUFUgMC4KKwlBTFBIQV9DUFVfVFlQRT1gL3Vzci9zYmluL3BzcmluZm8gLXYgfCBzZWQgLW4gLWUgJ3MvXiAgVGhlIGFscGhhIFwoLipcKSBwcm9jZXNzb3IuKiQvXDEvcCcgfCBoZWFkIC1uIDFgCisJY2FzZSAiJEFMUEhBX0NQVV9UWVBFIiBpbgorCSAgICAiRVY0ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkVWNC41ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY1ICgyMTE2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NSIgOzsKKwkgICAgIkVWNS42ICgyMTE2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjU2IiA7OworCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NiIgOzsKKwkgICAgIkVWNS43ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTciIDs7CisJICAgICJFVjYgKDIxMjY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2IiA7OworCSAgICAiRVY2LjcgKDIxMjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjciIDs7CisJICAgICJFVjYuOENCICgyMTI2NEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhBTCAoMjEyNjRCKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44Q1ggKDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOUEgKDIxMjY0L0VWNjlBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OSIgOzsKKwkgICAgIkVWNyAoMjEzNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjciIDs7CisJICAgICJFVjcuOSAoMjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3OSIgOzsKKwllc2FjCisJIyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KKwkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgdmVyc2lvbi4KKwkjIEEgVG4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVzdCB2ZXJzaW9uLgorCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgorCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KKwlleGl0Y29kZT0kPworCXRyYXAgJycgMAorCWV4aXQgJGV4aXRjb2RlIDs7CisgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisJIyBvZiB0aGUgc3BlY2lmaWMgQWxwaGEgbW9kZWw/CisJZWNobyBhbHBoYS1wYy1pbnRlcml4CisJZXhpdCA7OworICAgIDIxMDY0OldpbmRvd3NfTlQ6NTA6MykKKwllY2hvIGFscGhhLWRlYy13aW5udDMuNQorCWV4aXQgOzsKKyAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6KikKKwllY2hvIG02OGstdW5rbm93bi1zeXN2NAorCWV4aXQgOzsKKyAgICAqOltBYV1taWdhW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWFtaWdhb3MKKwlleGl0IDs7CisgICAgKjpbTW1db3JwaFtPb11bU3NdOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1tb3JwaG9zCisJZXhpdCA7OworICAgICo6T1MvMzkwOio6KikKKwllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCisJZXhpdCA7OworICAgICo6ei9WTToqOiopCisJZWNobyBzMzkwLWlibS16dm1vZQorCWV4aXQgOzsKKyAgICAqOk9TNDAwOio6KikKKwllY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5bMDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGFybTpyaXNjb3M6KjoqfGFybTpSSVNDT1M6KjoqKQorCWVjaG8gYXJtLXVua25vd24tcmlzY29zCisJZXhpdCA7OworICAgIFNSMj8wMTpISS1VWC9NUFA6KjoqIHwgU1I4MDAwOkhJLVVYL01QUDoqOiopCisJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAorCWV4aXQgOzsKKyAgICBQeXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNNUF9EQy1PU3gqOio6KikKKwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQgTUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgIiA9IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMKKwllbHNlCisJCWVjaG8gcHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCA7OworICAgIE5JTEUqOio6KjpkY29zeCkKKwllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0CisJZXhpdCA7OworICAgIERSUz82MDAwOnVuaXg6NC4wOjYqKQorCWVjaG8gc3BhcmMtaWNsLW54NgorCWV4aXQgOzsKKyAgICBEUlM/NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2FzZSBgL3Vzci9iaW4vdW5hbWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKKwllc2FjIDs7CisgICAgczM5MHg6U3VuT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNEg6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hvIGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlTVU5fQVJDSD0iaTM4NiIKKwkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUgdGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCisJIyBUaGlzIHRlc3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCSAgICBpZiAoZWNobyAnI2lmZGVmIF9fYW1kNjQnOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPSJ4ODZfNjQiCisJICAgIGZpCisJZmkKKwllY2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjYqOiopCisJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKKwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1bk9TNiB3aWxsIGJlIGxpa2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNvbGFyaXMgdGhhbiBTdW5PUzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6KjoqKQorCWNhc2UgImAvdXNyL2Jpbi9hcmNoIC1rYCIgaW4KKwkgICAgU2VyaWVzKnxTNCopCisJCVVOQU1FX1JFTEVBU0U9YHVuYW1lIC12YAorCQk7OworCWVzYWMKKwkjIEphcGFuZXNlIExhbmd1YWdlIHZlcnNpb25zIGhhdmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIGA0LjEuMy1KTCcuCisJZWNobyBzcGFyYy1zdW4tc3Vub3NgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vJ2AKKwlleGl0IDs7CisgICAgc3VuMyo6U3VuT1M6KjoqKQorCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAorCXRlc3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxFQVNFPTMKKwljYXNlICJgL2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgOzsKKyAgICBhdXNocDpTdW5PUzoqOiopCisJZWNobyBzcGFyYy1hdXNwZXgtc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICMgVGhlIHNpdHVhdGlvbiBmb3IgTWlOVCBpcyBhIGxpdHRsZSBjb25mdXNpbmcuICBUaGUgbWFjaGluZSBuYW1lCisgICAgIyBjYW4gYmUgdmlydHVhbGx5IGV2ZXJ5dGhpbmcgKGV2ZXJ5dGhpbmcgd2hpY2ggaXMgbm90CisgICAgIyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgorICAgICMgPiBtNjgwMDApLiAgVGhlIHN5c3RlbSBuYW1lIHJhbmdlcyBmcm9tICJNaU5UIiBvdmVyICJGcmVlTWlOVCIKKyAgICAjIHRvIHRoZSBsb3dlcmNhc2UgdmVyc2lvbiAibWludCIgKG9yICJmcmVlbWludCIpLiAgRmluYWxseQorICAgICMgdGhlIHN5c3RlbSBuYW1lICJUT1MiIGRlbm90ZXMgYSBzeXN0ZW0gd2hpY2ggaXMgYWN0dWFsbHkgbm90CisgICAgIyBNaU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hvdWxkCisgICAgIyBiZSBubyBwcm9ibGVtLgorICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRhcmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhdGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiopCisJZWNobyBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKKwllY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjoqTWlOVDoqOiogfCAqOiptaW50Oio6KiB8ICo6KlRPUzoqOiopCisJZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcG93ZXJwYzptYWNodGVuOio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUklTQyo6TWFjaDoqOiopCisJZWNobyBtaXBzLWRlYy1tYWNoX2JzZDQuMworCWV4aXQgOzsKKyAgICBSSVNDKjpVTFRSSVg6KjoqKQorCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4LWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIDIwMjA6Q0xJWDoqOiogfCAyNDMwOkNMSVg6KjoqKQorCWVjaG8gY2xpcHBlci1pbnRlcmdyYXBoLWNsaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1pcHM6KjoqOlVNSVBTIHwgbWlwczoqOio6UklTQ29zKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworI2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIGZvciBwcmludGYoKSBwcm90b3R5cGUgKi8KKwlpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworI2Vsc2UKKwlpbnQgbWFpbiAoYXJnYywgYXJndikgaW50IGFyZ2M7IGNoYXIgKmFyZ3ZbXTsgeworI2VuZGlmCisJI2lmIGRlZmluZWQgKGhvc3RfbWlwcykgJiYgZGVmaW5lZCAoTUlQU0VCKQorCSNpZiBkZWZpbmVkIChTWVNUWVBFX1NZU1YpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzeXN2XG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1ZSNCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N2cjRcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0MykgfHwgZGVmaW5lZChTWVNUWVBFX0JTRCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc2JzZFxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNlbmRpZgorCSAgZXhpdCAoLTEpOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmCisJICBkdW1teWFyZz1gZWNobyAiJHtVTkFNRV9SRUxFQVNFfSIgfCBzZWQgLW4gJ3MvXChbMC05XSpcKS4qL1wxL3AnYCAmJgorCSAgU1lTVEVNX05BTUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisJICAgIHsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVjaG8gbWlwcy1taXBzLXJpc2NvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTW90b3JvbGE6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1tb3Rvcm9sYS1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6KjoqOlBvd2VyTUFYX09TIHwgU3luZXJneTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOlBvd2VyX1VOSVg6KjoqKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJ1bml4CisJZXhpdCA7OworICAgIG04OGs6Q1gvVVg6Nyo6KikKKwllY2hvIG04OGstaGFycmlzLWN4dXg3CisJZXhpdCA7OworICAgIG04OGs6Kjo0KjpSNCopCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3Y0CisJZXhpdCA7OworICAgIG04OGs6KjozKjpSMyopCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIEFWaWlPTjpkZ3V4Oio6KikKKwkjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcworCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJaWYgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODEwMCBdIHx8IFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMTAgXQorCXRoZW4KKwkgICAgaWYgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSBtODhrZGd1eGVsZnggXSB8fCBcCisJICAgICAgIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0geCBdCisJICAgIHRoZW4KKwkJZWNobyBtODhrLWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CisJICAgIGVsc2UKKwkJZWNobyBtODhrLWRnLWRndXhiY3Mke1VOQU1FX1JFTEVBU0V9CisJICAgIGZpCisJZWxzZQorCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWV4aXQgOzsKKyAgICBNODgqOkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorCWVjaG8gbTg4ay1kb2xwaGluLXN5c3YzCisJZXhpdCA7OworICAgIE04OCo6KjpSMyo6KikKKwkjIERlbHRhIDg4ayBzeXN0ZW0gcnVubmluZyBTVlIzCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVjaG8gbTg4ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDs7CisgICAgVGVrNDNbMC05XVswLTldOlVUZWs6KjoqKSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKKwllY2hvIG02OGstdGVrdHJvbml4LWJzZAorCWV4aXQgOzsKKyAgICAqOklSSVgqOio6KikKKwllY2hvIG1pcHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCisJZXhpdCA7OworICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgIyB1bmFtZSAtbSBnaXZlcyBhbiA4IGhleC1jb2RlIENQVSBpZAorCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICBpKjg2OkFJWDoqOiopCisJZWNobyBpMzg2LWlibS1haXgKKwlleGl0IDs7CisgICAgaWE2NDpBSVg6KjoqKQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAqOkFJWDoyOjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigpCisJCQl7CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93ZXJwYy1pYm0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJaWYgJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKwkJdGhlbgorCQkJZWNobyAiJFNZU1RFTV9OQU1FIgorCQllbHNlCisJCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjUKKwkJZmkKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOls0NTY3XSkKKwlJQk1fQ1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNlZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKKwlpZiAvdXNyL3NiaW4vbHNhdHRyIC1FbCAke0lCTV9DUFVfSUR9IHwgZ3JlcCAnIFBPV0VSJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJSUJNX0FSQ0g9cnM2MDAwCisJZWxzZQorCQlJQk1fQVJDSD1wb3dlcnBjCisJZmkKKwlpZiBbIC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hvICR7SUJNX0FSQ0h9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCA7OworICAgICo6QUlYOio6KikKKwllY2hvIHJzNjAwMC1pYm0tYWl4CisJZXhpdCA7OworICAgIGlibXJ0OjQuNEJTRDoqfHJvbXAtaWJtOkJTRDoqKQorCWVjaG8gcm9tcC1pYm0tYnNkNC40CisJZXhpdCA7OworICAgIGlibXJ0OipCU0Q6Knxyb21wLWlibTpCU0Q6KikgICAgICAgICAgICAjIGNvdmVycyBSVC9QQyBCU0QgYW5kCisJZWNobyByb21wLWlibS1ic2Qke1VOQU1FX1JFTEVBU0V9ICAgIyA0LjMgd2l0aCB1bmFtZSBhZGRlZCB0bworCWV4aXQgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCisgICAgKjpCT1NYOio6KikKKwllY2hvIHJzNjAwMC1idWxsLWJvc3gKKwlleGl0IDs7CisgICAgRFBYLzI/MDA6Qi5PLlMuOio6KikKKwllY2hvIG02OGstYnVsbC1zeXN2MworCWV4aXQgOzsKKyAgICA5MDAwL1szNF0/Pzo0LjNic2Q6MS4qOiopCisJZWNobyBtNjhrLWhwLWJzZAorCWV4aXQgOzsKKyAgICBocDMwMDo0LjRCU0Q6KjoqIHwgOTAwMC9bMzRdPz86NC4zYnNkOjIuKjoqKQorCWVjaG8gbTY4ay1ocC1ic2Q0LjQKKwlleGl0IDs7CisgICAgOTAwMC9bMzQ2NzhdPz86SFAtVVg6KjoqKQorCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlswQl0qLy8nYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIDkwMDAvMzE/ICkgICAgICAgICAgICBIUF9BUkNIPW02ODAwMCA7OworCSAgICA5MDAwL1szNF0/PyApICAgICAgICAgSFBfQVJDSD1tNjhrIDs7CisJICAgIDkwMDAvWzY3OF1bMC05XVswLTldKQorCQlpZiBbIC14IC91c3IvYmluL2dldGNvbmYgXTsgdGhlbgorCQkgICAgc2NfY3B1X3ZlcnNpb249YC91c3IvYmluL2dldGNvbmYgU0NfQ1BVX1ZFUlNJT04gMj4vZGV2L251bGxgCisJCSAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKKwkJICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorCQkgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAiIDs7ICMgQ1BVX1BBX1JJU0MxXzAKKwkJICAgICAgNTI4KSBIUF9BUkNIPSJocHBhMS4xIiA7OyAjIENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorCQkJY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisJCQkgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKwkJCSAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCisJCQllc2FjIDs7CisJCSAgICBlc2FjCisJCWZpCisJCWlmIFsgIiR7SFBfQVJDSH0iID0gIiIgXTsgdGhlbgorCQkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQkgICAgc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisKKwkJI2RlZmluZSBfSFBVWF9TT1VSQ0UKKwkJI2luY2x1ZGUgPHN0ZGxpYi5oPgorCQkjaW5jbHVkZSA8dW5pc3RkLmg+CisKKwkJaW50IG1haW4gKCkKKwkJeworCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCSAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7CisJCSNlbmRpZgorCQkgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKworCQkgICAgc3dpdGNoIChjcHUpCisJCQl7CisJCQljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzJfMDoKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkJICAgIHN3aXRjaCAoYml0cykKKwkJCQl7CisJCQkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOworCQkJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKKwkJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJCQl9IGJyZWFrOworCQkjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLworCQkJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkjZW5kaWYKKwkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJfQorCQkgICAgZXhpdCAoMCk7CisJCX0KK0VPRgorCQkgICAgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwpICYmIEhQX0FSQ0g9YCRkdW1teWAKKwkJICAgIHRlc3QgLXogIiRIUF9BUkNIIiAmJiBIUF9BUkNIPWhwcGEKKwkJZmkgOzsKKwllc2FjCisJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCisJdGhlbgorCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisKKwkgICAgIyBocHBhMi4wdy1ocC1ocHV4KiBoYXMgYSA2NC1iaXQga2VybmVsIGFuZCBhIGNvbXBpbGVyIGdlbmVyYXRpbmcKKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMgdGhlIHNhbWUga2VybmVsIGFuZCBhIGNvbXBpbGVyCisJICAgICMgZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4gIEdOVSBhbmQgSFAgdXNlIGRpZmZlcmVudCBub21lbmNsYXR1cmU6CisJICAgICMKKwkgICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGEyLjB3LWhwLWhwdXgxMS4yMworCSAgICAjICQgQ0NfRk9SX0JVSUxEPSJjYyArREEyLjB3IiAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKKworCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8CisJCWdyZXAgLXEgX19MUDY0X18KKwkgICAgdGhlbgorCQlIUF9BUkNIPSJocHBhMi4wdyIKKwkgICAgZWxzZQorCQlIUF9BUkNIPSJocHBhNjQiCisJICAgIGZpCisJZmkKKwllY2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCA7OworICAgIGlhNjQ6SFAtVVg6KjoqKQorCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlswQl0qLy8nYAorCWVjaG8gaWE2NC1ocC1ocHV4JHtIUFVYX1JFVn0KKwlleGl0IDs7CisgICAgMzA1MCo6SEktVVg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpbmNsdWRlIDx1bmlzdGQuaD4KKwlpbnQKKwltYWluICgpCisJeworCSAgbG9uZyBjcHUgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCSAgLyogVGhlIG9yZGVyIG1hdHRlcnMsIGJlY2F1c2UgQ1BVX0lTX0hQX01DNjhLIGVycm9uZW91c2x5IHJldHVybnMKKwkgICAgIHRydWUgZm9yIENQVV9QQV9SSVNDMV8wLiAgQ1BVX0lTX1BBX1JJU0MgcmV0dXJucyBjb3JyZWN0CisJICAgICByZXN1bHRzLCBob3dldmVyLiAgKi8KKwkgIGlmIChDUFVfSVNfUEFfUklTQyAoY3B1KSkKKwkgICAgeworCSAgICAgIHN3aXRjaCAoY3B1KQorCQl7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMl8wOiBwdXRzICgiaHBwYTIuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgZGVmYXVsdDogcHV0cyAoImhwcGEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQl9CisJICAgIH0KKwkgIGVsc2UgaWYgKENQVV9JU19IUF9NQzY4SyAoY3B1KSkKKwkgICAgcHV0cyAoIm02OGstaGl0YWNoaS1oaXV4d2UyIik7CisJICBlbHNlIHB1dHMgKCJ1bmtub3duLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZXhpdCAoMCk7CisJfQorRU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAgJiYKKwkJeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisJZWNobyB1bmtub3duLWhpdGFjaGktaGl1eHdlMgorCWV4aXQgOzsKKyAgICA5MDAwLzc/Pzo0LjNic2Q6KjoqIHwgOTAwMC84P1s3OV06NC4zYnNkOio6KiApCisJZWNobyBocHBhMS4xLWhwLWJzZAorCWV4aXQgOzsKKyAgICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1ic2QKKwlleGl0IDs7CisgICAgKjk/Pyo6TVBFL2lYOio6KiB8ICozMDAwKjpNUEUvaVg6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1tcGVpeAorCWV4aXQgOzsKKyAgICBocDc/PzpPU0YxOio6KiB8IGhwOD9bNzldOk9TRjE6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtb3NmCisJZXhpdCA7OworICAgIGhwOD8/Ok9TRjE6KjoqKQorCWVjaG8gaHBwYTEuMC1ocC1vc2YKKwlleGl0IDs7CisgICAgaSo4NjpPU0YxOio6KikKKwlpZiBbIC14IC91c3Ivc2Jpbi9zeXN2ZXJzaW9uIF0gOyB0aGVuCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjFtaworCWVsc2UKKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3NmMQorCWZpCisJZXhpdCA7OworICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKKwllY2hvIGhwcGExLjEtaHAtbGl0ZXMKKwlleGl0IDs7CisgICAgQzEqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMSo6KikKKwllY2hvIGMxLWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIEMzNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzNCo6KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEMzOCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzOCo6KikKKwllY2hvIGMzOC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCisJZWNobyBjNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIENSQVkqWS1NUDoqOio6KikKKwllY2hvIHltcC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKltBLVpdOTA6KjoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBcCisJfCBzZWQgLWUgJ3MvQ1JBWS4qXChbQS1aXTkwXCkvXDEvJyBcCisJICAgICAgLWUgeS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8gXAorCSAgICAgIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUUzoqOio6KikKKwllY2hvIHQ5MC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlQzRToqOio6KikKKwllY2hvIGFscGhhZXY1LWNyYXktdW5pY29zbWske1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpTVjE6KjoqOiopCisJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgKjpVTklDT1MvbXA6KjoqKQorCWVjaG8gY3JheW52LWNyYXktdW5pY29zbXAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1fVjoqOiopCisJRlVKSVRTVV9QUk9DPWB1bmFtZSAtbSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgc3BhcmMqOkJTRC9PUzoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6QlNEL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkZyZWVCU0Q6KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJY2FzZSAke1VOQU1FX1BST0NFU1NPUn0gaW4KKwkgICAgYW1kNjQpCisJCWVjaG8geDg2XzY0LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwkgICAgKikKKwkJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OworCWVzYWMKKwlleGl0IDs7CisgICAgaSo6Q1lHV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1jeWd3aW4KKwlleGl0IDs7CisgICAgKjpNSU5HVyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluZ3czMgorCWV4aXQgOzsKKyAgICBpKjpNU1lTKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc3lzCisJZXhpdCA7OworICAgIGkqOndpbmRvd3MzMio6KikKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOlBXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCisJZXhpdCA7OworICAgICo6SW50ZXJpeCo6KikKKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2OldpbmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2luZG93c19OVDoqKQorCWVjaG8geDg2XzY0LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0yLjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpDWUdXSU4qOio6KiB8IHg4Nl82NDpDWUdXSU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpDWUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICAqOkdOVToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8gYGVjaG8gJHtVTkFNRV9NQUNISU5FfXxzZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi1nbnVgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncywvLiokLCwnYAorCWV4aXQgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWV4aXQgOzsKKyAgICBpKjg2Ok1pbml4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluaXgKKwlleGl0IDs7CisgICAgYWFyY2g2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGFhcmNoNjRfYmU6TGludXg6KjoqKQorCVVOQU1FX01BQ0hJTkU9YWFyY2g2NF9iZQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBhbHBoYTpMaW51eDoqOiopCisJY2FzZSBgc2VkIC1uICcvXmNwdSBtb2RlbC9zL14uKjogXCguKlwpL1wxL3AnIDwgL3Byb2MvY3B1aW5mb2AgaW4KKwkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFscGhhZXY1IDs7CisJICBFVjU2KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NTYgOzsKKwkgIFBDQTU2KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIFBDQTU3KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2IDs7CisJICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKKwkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworCWVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwlleGl0IDs7CisgICAgYXJtKjpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkgICAgfCBncmVwIC1xIF9fQVJNX0VBQklfXworCXRoZW4KKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWxzZQorCSAgICBpZiBlY2hvIF9fQVJNX1BDU19WRlAgfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAorCSAgICB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwkgICAgZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpaGYKKwkgICAgZmkKKwlmaQorCWV4aXQgOzsKKyAgICBhdnIzMio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3Jpc3YzMjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGZydjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGhleGFnb246TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwlMSUJDPWdudQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpZmRlZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkxJQkMnYAorCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwlleGl0IDs7CisgICAgaWE2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG0zMnIqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTY4KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG1pcHM6TGludXg6KjoqIHwgbWlwczY0OkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjdW5kZWYgQ1BVCisJI3VuZGVmICR7VU5BTUVfTUFDSElORX0KKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfWVsCisJI2lmIGRlZmluZWQoX19NSVBTRUxfXykgfHwgZGVmaW5lZChfX01JUFNFTCkgfHwgZGVmaW5lZChfTUlQU0VMKSB8fCBkZWZpbmVkKE1JUFNFTCkKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCisJI2Vsc2UKKwkjaWYgZGVmaW5lZChfX01JUFNFQl9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoTUlQU0VCKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9CisJI2Vsc2UKKwlDUFU9CisJI2VuZGlmCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkNQVSdgCisJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KKwk7OworICAgIG9yMzI6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYWRyZTpMaW51eDoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQorCWVjaG8gaHBwYTY0LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKKwkjIExvb2sgZm9yIENQVSBsZXZlbAorCWNhc2UgYGdyZXAgJ15jcHVbXmEtel0qOicgL3Byb2MvY3B1aW5mbyAyPi9kZXYvbnVsbCB8IGN1dCAtZCcgJyAtZjJgIGluCisJICBQQTcqKSBlY2hvIGhwcGExLjEtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LWdudSA7OworCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtZ251IDs7CisJZXNhYworCWV4aXQgOzsKKyAgICBwcGM2NDpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eAorCWV4aXQgOzsKKyAgICBzaDY0KjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB0aWxlKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHZheDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeDg2XzY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeHRlbnNhKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCisJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KKwkjIGVhcmxpZXIgdmVyc2lvbnMgYXJlIG1lc3NlZCB1cCBhbmQgcHV0IHRoZSBub2RlbmFtZSBpbiBib3RoCisJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KKwllY2hvIGkzODYtc2VxdWVudC1zeXN2NAorCWV4aXQgOzsKKyAgICBpKjg2OlVOSVhfU1Y6NC4yTVA6Mi4qKQorCSMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KKwkjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCisJIyBJIGFtIG5vdCBwb3NpdGl2ZSB0aGF0IG90aGVyIFNWUjQgc3lzdGVtcyB3b24ndCBtYXRjaCB0aGlzLAorCSMgSSBqdXN0IGhhdmUgdG8gaG9wZS4gIC0tIHJtcy4KKwkjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsKKyAgICBpKjg2Ok9TLzI6KjoqKQorCSMgSWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmQgYHVuYW1lJywgdGhlbiBFTVggVW5peCBjb21wYXRpYmlsaXR5CisJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW9zMi1lbXgKKwlleGl0IDs7CisgICAgaSo4NjpYVFMtMzAwOio6U1RPUCkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zdG9wCisJZXhpdCA7OworICAgIGkqODY6YXRoZW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hdGhlb3MKKwlleGl0IDs7CisgICAgaSo4NjpzeWxsYWJsZToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5bGxhYmxlCisJZXhpdCA7OworICAgIGkqODY6THlueE9TOjIuKjoqIHwgaSo4NjpMeW54T1M6My5bMDFdKjoqIHwgaSo4NjpMeW54T1M6NC5bMDJdKjoqKQorCWVjaG8gaTM4Ni11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaSo4NjoqRE9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXNkb3NkamdwcAorCWV4aXQgOzsKKyAgICBpKjg2Oio6NC4qOiogfCBpKjg2OlNZU1RFTV9WOjQuKjoqKQorCVVOQU1FX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkICdzL1wvTVAkLy8nYAorCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9saW5rLmggPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5pdmVsLXN5c3Yke1VOQU1FX1JFTH0KKwllbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9CisJZmkKKwlleGl0IDs7CisgICAgaSo4NjoqOjU6WzY3OF0qKQorCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0ke1VOQU1FX1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6KjozLjI6KikKKwlpZiB0ZXN0IC1mIC91c3Ivb3B0aW9ucy9jYi5uYW1lOyB0aGVuCisJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWlzYyRVTkFNRV9SRUwKKwllbGlmIC9iaW4vdW5hbWUgLVggMj4vZGV2L251bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfUkVMPWAoL2Jpbi91bmFtZSAtWHxncmVwIFJlbGVhc2V8c2VkIC1lICdzLy4qPSAvLycpYAorCQkoL2Jpbi91bmFtZSAtWHxncmVwIGk4MDQ4NiA+L2Rldi9udWxsKSAmJiBVTkFNRV9NQUNISU5FPWk0ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTU4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudCAqSUknID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudGl1bSBQcm8nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2NvJFVOQU1FX1JFTAorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3YzMgorCWZpCisJZXhpdCA7OworICAgIHBjOio6KjoqKQorCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgorCSMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisJIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKKwlleGl0IDs7CisgICAgSW50ZWw6TWFjaDozKjoqKQorCWVjaG8gaTM4Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQorCWVjaG8gaTg2MC1pbnRlbC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVBU0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwlleGl0IDs7CisgICAgbWluaSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02ODAxMC1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMuNTFtKQorCWVjaG8gbTY4ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQtTklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKwl0ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnOyBleGl0OyB9IDs7CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDozLjAgfCBTSEcyOio6NC4wOjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVzdCAtciAvZXRjLy5yZWxpZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CisgICAgTkNSKjoqOjQuMjoqIHwgTVBSQVMqOio6NC4yOiopCisJT1NfUkVMPScuMycKKwl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKKwkgICAgJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKKwkgICAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIHB0ZXJvbiA+L2Rldi9udWxsIFwKKwkgICAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKKyAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKKwllY2hvIG02OGstdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1jNjgwMzA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwllY2hvIG02OGstYXRhcmktc3lzdjQKKwlleGl0IDs7CisgICAgVFNVTkFNSTpMeW54T1M6Mi4qOiopCisJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKKwllY2hvIHJzNjAwMC11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXJQQzpMeW54T1M6Mi4qOiogfCBQb3dlclBDOkx5bnhPUzozLlswMV0qOiogfCBQb3dlclBDOkx5bnhPUzo0LlswMl0qOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTTVtCRV1TOlVOSVhfU1Y6KjoqKQorCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDs7CisgICAgUk0qOlNJTklYLSo6KjoqKQorCWVjaG8gbWlwcy1zbmktc3lzdjQKKwlleGl0IDs7CisgICAgKjpTSU5JWC0qOio6KikKKwlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tc25pLXN5c3Y0CisJZWxzZQorCQllY2hvIG5zMzJrLXNuaS1zeXN2CisJZmkKKwlleGl0IDs7CisgICAgUEVOVElVTToqOjQuMCo6KikJIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKKwkJCSMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKwllY2hvIGk1ODYtdW5pc3lzLXN5c3Y0CisJZXhpdCA7OworICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQorCSMgRnJvbSBHZXJhbGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KKwkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKwllY2hvIGhwcGExLjEtc3RyYXR1cy1zeXN2NAorCWV4aXQgOzsKKyAgICAqOio6KjpGVFgqKQorCSMgRnJvbSBzZWFuZkBzd2RjLnN0cmF0dXMuY29tLgorCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgIGkqODY6Vk9TOio6KikKKwkjIEZyb20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tc3RyYXR1cy12b3MKKwlleGl0IDs7CisgICAgKjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICBtYzY4KjpBL1VYOio6KikKKwllY2hvIG02OGstYXBwbGUtYXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBuZXdzKjpORVdTLU9TOjYqOiopCisJZWNobyBtaXBzLXNvbnktbmV3c29zNgorCWV4aXQgOzsKKyAgICBSWzM0XTAwMDoqU3lzdGVtX1YqOio6KiB8IFI0MDAwOlVOSVhfU1lTVjoqOiogfCBSKjAwMDpVTklYX1NWOio6KikKKwlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KKwkJZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWVsc2UKKwkJZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWV4aXQgOzsKKyAgICBCZUJveDpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gaGFyZHdhcmUgbWFkZSBieSBCZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWJlLWJlb3MKKwlleGl0IDs7CisgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBvciBNYWMgY2xvbmUsIFBQQyBvbmx5LgorCWVjaG8gcG93ZXJwYy1hcHBsZS1iZW9zCisJZXhpdCA7OworICAgIEJlUEM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWJlb3MKKwlleGl0IDs7CisgICAgQmVQQzpIYWlrdToqOiopCSMgSGFpa3UgcnVubmluZyBvbiBJbnRlbCBQQyBjb21wYXRpYmxlLgorCWVjaG8gaTU4Ni1wYy1oYWlrdQorCWV4aXQgOzsKKyAgICBTWC00OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNTpTVVBFUi1VWDoqOiopCisJZWNobyBzeDUtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTY6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g2LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC03OlNVUEVSLVVYOio6KikKKwllY2hvIHN4Ny1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtODpTVVBFUi1VWDoqOiopCisJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLThSOlNVUEVSLVVYOio6KikKKwllY2hvIHN4OHItbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFBvd2VyKjpSaGFwc29keToqOiopCisJZWNobyBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlJoYXBzb2R5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RGFyd2luOio6KikKKwlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYCB8fCBVTkFNRV9QUk9DRVNTT1I9dW5rbm93bgorCWNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgorCSAgICBpMzg2KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQkgIGlmIChlY2hvICcjaWZkZWYgX19MUDY0X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkgICAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQkgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQkgIHRoZW4KKwkJICAgICAgVU5BTUVfUFJPQ0VTU09SPSJ4ODZfNjQiCisJCSAgZmkKKwkJZmkgOzsKKwkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOnByb2NudG8qOio6KiB8ICo6UU5YOlswMTIzNDU2Nzg5XSo6KikKKwlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYAorCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRoZW4KKwkJVU5BTUVfUFJPQ0VTU09SPWkzODYKKwkJVU5BTUVfTUFDSElORT1wYworCWZpCisJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tJHtVTkFNRV9NQUNISU5FfS1udG8tcW54JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlFOWDoqOjQqKQorCWVjaG8gaTM4Ni1wYy1xbngKKwlleGl0IDs7CisgICAgTkVPLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbmVvLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TRS0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBOU1ItPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuc3ItdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpOb25TdG9wLVVYOio6KikKKwllY2hvIG1pcHMtY29tcGFxLW5vbnN0b3B1eAorCWV4aXQgOzsKKyAgICBCUzIwMDA6UE9TSVgqOio6KikKKwllY2hvIGJzMjAwMC1zaWVtZW5zLXN5c3YKKwlleGl0IDs7CisgICAgRFMvKjpVTklYX1N5c3RlbV9WOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tJHtVTkFNRV9TWVNURU19LSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpQbGFuOToqOiopCisJIyAidW5hbWUgLW0iIGlzIG5vdCBjb25zaXN0ZW50LCBzbyB1c2UgJGNwdXR5cGUgaW5zdGVhZC4gMzg2CisJIyBpcyBjb252ZXJ0ZWQgdG8gaTM4NiBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciB4ODYKKwkjIG9wZXJhdGluZyBzeXN0ZW1zLgorCWlmIHRlc3QgIiRjcHV0eXBlIiA9ICIzODYiOyB0aGVuCisJICAgIFVOQU1FX01BQ0hJTkU9aTM4NgorCWVsc2UKKwkgICAgVU5BTUVfTUFDSElORT0iJGNwdXR5cGUiCisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1wbGFuOQorCWV4aXQgOzsKKyAgICAqOlRPUFMtMTA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10b3BzMTAKKwlleGl0IDs7CisgICAgKjpURU5FWDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRlbmV4CisJZXhpdCA7OworICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC1kZWMtdG9wczIwCisJZXhpdCA7OworICAgIFhLTC0xOlRPUFMtMjA6KjoqIHwgVFlQRTU6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC14a2wtdG9wczIwCisJZXhpdCA7OworICAgICo6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOklUUzoqOiopCisJZWNobyBwZHAxMC11bmtub3duLWl0cworCWV4aXQgOzsKKyAgICBTRUk6KjoqOlNFSVVYKQorCWVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RHJhZ29uRmx5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCisJZXhpdCA7OworICAgICo6KlZNUzoqOiopCisJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1kZWMtdm1zIDsgZXhpdCA7OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkzODYtcGMteGVuaXgKKwlleGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4qJC8vJworCWV4aXQgOzsKKyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCisJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7CisgICAgeDg2XzY0OlZNa2VybmVsOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1lc3gKKwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgMT4mMgorCitldmFsICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisjaWZkZWYgX1NFUVVFTlRfCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBkZWZpbmVkIChNSVBTRUIpCisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3MiLiAgUGVyaGFwcyBCRkQgc2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4gICovCisgIHByaW50ZiAoIm1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNpZmRlZiBORVdTT1M0CisJIjQiCisjZWxzZQorCSIiCisjZW5kaWYKKwkpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfX2FybSkgJiYgZGVmaW5lZCAoX19hY29ybikgJiYgZGVmaW5lZCAoX191bml4KQorICBwcmludGYgKCJhcm0tYWNvcm4tcmlzY2l4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKGhwMzAwKSAmJiAhZGVmaW5lZCAoaHB1eCkKKyAgcHJpbnRmICgibTY4ay1ocC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTmVYVCkKKyNpZiAhZGVmaW5lZCAoX19BUkNISVRFQ1RVUkVfXykKKyNkZWZpbmUgX19BUkNISVRFQ1RVUkVfXyAibTY4ayIKKyNlbmRpZgorICBpbnQgdmVyc2lvbjsKKyAgdmVyc2lvbj1gKGhvc3RpbmZvIHwgc2VkIC1uICdzLy4qTmVYVCBNYWNoIFwoWzAtOV0qXCkuKi9cMS9wJykgMj4vZGV2L251bGxgOworICBpZiAodmVyc2lvbiA8IDQpCisgICAgcHJpbnRmICgiJXMtbmV4dC1uZXh0c3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZWxzZQorICAgIHByaW50ZiAoIiVzLW5leHQtb3BlbnN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChNVUxUSU1BWCkgfHwgZGVmaW5lZCAobjE2KQorI2lmIGRlZmluZWQgKFVNQVhWKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtc3lzdlxuIik7IGV4aXQgKDApOworI2Vsc2UKKyNpZiBkZWZpbmVkIChDTVUpCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1tYWNoXG4iKTsgZXhpdCAoMCk7CisjZWxzZQorICBwcmludGYgKCJuczMyay1lbmNvcmUtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfXzM4NkJTRF9fKQorICBwcmludGYgKCJpMzg2LXBjLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChzZXF1ZW50KQorI2lmIGRlZmluZWQgKGkzODYpCisgIHByaW50ZiAoImkzODYtc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjaWYgZGVmaW5lZCAobnMzMjAwMCkKKyAgcHJpbnRmICgibnMzMmstc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9TRVFVRU5UXykKKyAgICBzdHJ1Y3QgdXRzbmFtZSB1bjsKKworICAgIHVuYW1lKCZ1bik7CisKKyAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjIiLCAyKSA9PSAwKSB7CisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDJcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYxIiwgMikgPT0gMCkgeyAvKiBYWFggaXMgVjEgY29ycmVjdD8gKi8KKwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MVxuIik7IGV4aXQgKDApOworICAgIH0KKyAgICBwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4XG4iKTsgZXhpdCAoMCk7CisKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAodmF4KQorIyBpZiAhZGVmaW5lZCAodWx0cml4KQorIyAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjICBpZiBkZWZpbmVkIChCU0QpCisjICAgaWYgQlNEID09IDQzCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM1xuIik7IGV4aXQgKDApOworIyAgIGVsc2UKKyMgICAgaWYgQlNEID09IDE5OTAwNgorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0LjNyZW5vXG4iKTsgZXhpdCAoMCk7CisjICAgIGVsc2UKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgZW5kaWYKKyMgZWxzZQorICAgIHByaW50ZiAoInZheC1kZWMtdWx0cml4XG4iKTsgZXhpdCAoMCk7CisjIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKGFsbGlhbnQpICYmIGRlZmluZWQgKGk4NjApCisgIHByaW50ZiAoImk4NjAtYWxsaWFudC1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisgIGV4aXQgKDEpOworfQorRU9GCisKKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisJeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisKKyMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0eXBlIGluIHRoZSBlbnZpcm9ubWVudC4KKwordGVzdCAtZCAvdXNyL2Fwb2xsbyAmJiB7IGVjaG8gJHtJU1B9LWFwb2xsby0ke1NZU1RZUEV9OyBleGl0OyB9CisKKyMgQ29udmV4IHZlcnNpb25zIHRoYXQgcHJlZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5c2luZm8oMSkKKworaWYgWyAteCAvdXNyL2NvbnZleC9nZXRzeXNpbmZvIF0KK3RoZW4KKyAgICBjYXNlIGBnZXRzeXNpbmZvIC1mIGNwdV90eXBlYCBpbgorICAgIGMxKikKKwllY2hvIGMxLWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzIqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKwlleGl0IDs7CisgICAgYzM0KikKKwllY2hvIGMzNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMzOCopCisJZWNobyBjMzgtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjNCopCisJZWNobyBjNC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGVzYWMKK2ZpCisKK2NhdCA+JjIgPDxFT0YKKyQwOiB1bmFibGUgdG8gZ3Vlc3Mgc3lzdGVtIHR5cGUKKworVGhpcyBzY3JpcHQsIGxhc3QgbW9kaWZpZWQgJHRpbWVzdGFtcCwgaGFzIGZhaWxlZCB0byByZWNvZ25pemUKK3RoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKK2Rvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQorCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorYW5kCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKworSWYgdGhlIHZlcnNpb24geW91IHJ1biAoJDApIGlzIGFscmVhZHkgdXAgdG8gZGF0ZSwgcGxlYXNlCitzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQorcGVydGluZW50IHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPiBpbiBvcmRlciB0byBwcm92aWRlIHRoZSBuZWVkZWQKK2luZm9ybWF0aW9uIHRvIGhhbmRsZSB5b3VyIHN5c3RlbS4KKworY29uZmlnLmd1ZXNzIHRpbWVzdGFtcCA9ICR0aW1lc3RhbXAKKwordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGxgCisvYmluL3VuYW1lIC1YICAgICA9IGAoL2Jpbi91bmFtZSAtWCkgMj4vZGV2L251bGxgCisKK2hvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vYXJjaCAtayAgICAgICA9IGAoL3Vzci9iaW4vYXJjaCAtaykgMj4vZGV2L251bGxgCisvYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsYAorL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGxgCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbGAKKworVU5BTUVfTUFDSElORSA9ICR7VU5BTUVfTUFDSElORX0KK1VOQU1FX1JFTEVBU0UgPSAke1VOQU1FX1JFTEVBU0V9CitVTkFNRV9TWVNURU0gID0gJHtVTkFNRV9TWVNURU19CitVTkFNRV9WRVJTSU9OID0gJHtVTkFNRV9WRVJTSU9OfQorRU9GCisKK2V4aXQgMQorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWcuc3ViIGIvY29uZmlnLnN1YgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jODk0ZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnLnN1YgpAQCAtMCwwICsxLDE3NzMgQEAKKyMhIC9iaW4vc2gKKyMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEsIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3RpbWVzdGFtcD0nMjAxMi0wMi0xMCcKKworIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCisjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKKyMgY2FuIGhhbmRsZSB0aGF0IG1hY2hpbmUuICBJdCBkb2VzIG5vdCBpbXBseSBBTEwgR05VIHNvZnR3YXJlIGNhbi4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0CisjIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIEdOVSBDaGFuZ2VMb2cgZW50cnkuCisjCisjIENvbmZpZ3VyYXRpb24gc3Vicm91dGluZSB0byB2YWxpZGF0ZSBhbmQgY2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiB0eXBlLgorIyBTdXBwbHkgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uIHR5cGUgYXMgYW4gYXJndW1lbnQuCisjIElmIGl0IGlzIGludmFsaWQsIHdlIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ugb24gc3RkZXJyIGFuZCBleGl0IHdpdGggY29kZSAxLgorIyBPdGhlcndpc2UsIHdlIHByaW50IHRoZSBjYW5vbmljYWwgY29uZmlnIHR5cGUgb24gc3Rkb3V0IGFuZCBzdWNjZWVkLgorCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKKyMgVGhpcyBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwgR05VIHBhY2thZ2VzCisjIGFuZCByZWNvZ25pemUgYWxsIHRoZSBDUFUgdHlwZXMsIHN5c3RlbSB0eXBlcyBhbmQgYWxpYXNlcworIyB0aGF0IGFyZSBtZWFuaW5nZnVsIHdpdGggKmFueSogR05VIHNvZnR3YXJlLgorIyBFYWNoIHBhY2thZ2UgaXMgcmVzcG9uc2libGUgZm9yIHJlcG9ydGluZyB3aGljaCB2YWxpZCBjb25maWd1cmF0aW9ucworIyBpdCBkb2VzIG5vdCBzdXBwb3J0LiAgVGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2gKKyMgYSBmYWlsdXJlIHRvIHN1cHBvcnQgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZyb20gYSBtZWFuaW5nbGVzcworIyBjb25maWd1cmF0aW9uLgorCisjIFRoZSBnb2FsIG9mIHRoaXMgZmlsZSBpcyB0byBtYXAgYWxsIHRoZSB2YXJpb3VzIHZhcmlhdGlvbnMgb2YgYSBnaXZlbgorIyBtYWNoaW5lIHNwZWNpZmljYXRpb24gaW50byBhIHNpbmdsZSBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorIyBvciBpbiBzb21lIGNhc2VzLCB0aGUgbmV3ZXIgZm91ci1wYXJ0IGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBJdCBpcyB3cm9uZyB0byBlY2hvIGFueSBvdGhlciB0eXBlIG9mIHNwZWNpZmljYXRpb24uCisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dIENQVS1NRlItT1BTWVMKKyAgICAgICAkMCBbT1BUSU9OXSBBTElBUworCitDYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIG5hbWUuCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCisKK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiCisgICAgICAgZXhpdCAxIDs7CisKKyAgICAqbG9jYWwqKQorICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgorICAgICAgIGVjaG8gJDEKKyAgICAgICBleGl0IDs7CisKKyAgICAqICkKKyAgICAgICBicmVhayA7OworICBlc2FjCitkb25lCisKK2Nhc2UgJCMgaW4KKyAwKSBlY2hvICIkbWU6IG1pc3NpbmcgYXJndW1lbnQkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKKyAxKSA7OworICopIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICAgIGV4aXQgMTs7Citlc2FjCisKKyMgU2VwYXJhdGUgd2hhdCB0aGUgdXNlciBnYXZlIGludG8gQ1BVLUNPTVBBTlkgYW5kIE9TIG9yIEtFUk5FTC1PUyAoaWYgYW55KS4KKyMgSGVyZSB3ZSBtdXN0IHJlY29nbml6ZSBhbGwgdGhlIHZhbGlkIEtFUk5FTC1PUyBjb21iaW5hdGlvbnMuCittYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKK2Nhc2UgJG1heWJlX29zIGluCisgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWFuZHJvaWQqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgXAorICBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCisgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCisgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKKyAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgIG9zPS0kbWF5YmVfb3MKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYAorICAgIDs7CisgIGFuZHJvaWQtbGludXgpCisgICAgb3M9LWxpbnV4LWFuZHJvaWQKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYC11bmtub3duCisgICAgOzsKKyAgKikKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzLy1bXi1dKiQvLydgCisgICAgaWYgWyAkYmFzaWNfbWFjaGluZSAhPSAkMSBdCisgICAgdGhlbiBvcz1gZWNobyAkMSB8IHNlZCAncy8uKi0vLS8nYAorICAgIGVsc2Ugb3M9OyBmaQorICAgIDs7Citlc2FjCisKKyMjIyBMZXQncyByZWNvZ25pemUgY29tbW9uIG1hY2hpbmVzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcyBzbworIyMjIHRoYXQgdGhpbmdzIGxpa2UgY29uZmlnLnN1YiBkZWNzdGF0aW9uLTMxMDAgd29yay4gIFdlIGFsc28KKyMjIyByZWNvZ25pemUgc29tZSBtYW51ZmFjdHVyZXJzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcywgc28gd2UKKyMjIyBjYW4gcHJvdmlkZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIGJlbG93LgorY2FzZSAkb3MgaW4KKwktc3VuKm9zKikKKwkJIyBQcmV2ZW50IGZvbGxvd2luZyBjbGF1c2UgZnJvbSBoYW5kbGluZyB0aGlzIGludmFsaWQgaW5wdXQuCisJCTs7CisJLWRlYyogfCAtbWlwcyogfCAtc2VxdWVudCogfCAtZW5jb3JlKiB8IC1wYzUzMiogfCAtc2dpKiB8IC1zb255KiB8IFwKKwktYXR0KiB8IC03MzAwKiB8IC0zMzAwKiB8IC1kZWx0YSogfCAtbW90b3JvbGEqIHwgLXN1blsyMzRdKiB8IFwKKwktdW5pY29tKiB8IC1pYm0qIHwgLW5leHQgfCAtaHAgfCAtaXNpKiB8IC1hcG9sbG8gfCAtYWx0b3MqIHwgXAorCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCisJLWNbMTIzXSogfCAtY29udmV4KiB8IC1zdW4gfCAtY3JkcyB8IC1vbXJvbiogfCAtZGcgfCAtdWx0cmEgfCAtdHRpKiB8IFwKKwktaGFycmlzIHwgLWRvbHBoaW4gfCAtaGlnaGxldmVsIHwgLWdvdWxkIHwgLWNibSB8IC1ucyB8IC1tYXNzY29tcCB8IFwKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5IHwgLW1pY3JvYmxhemUpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWJsdWVnZW5lKikKKwkJb3M9LWNuaworCQk7OworCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1zY291dCkKKwkJOzsKKwktd3JzKQorCQlvcz0tdnh3b3JrcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1c29zKikKKwkJb3M9LWNob3J1c29zCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVzcmRiKQorCQlvcz0tY2hvcnVzcmRiCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktaGl1eCopCisJCW9zPS1oaXV4d2UyCisJCTs7CisJLXNjbzYpCisJCW9zPS1zY281djYKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281KQorCQlvcz0tc2NvMy4ydjUKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY280KQorCQlvcz0tc2NvMy4ydjQKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjIuWzQtOV0qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3Mvc2NvMy4yLi9zY28zLjJ2LydgCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4ydls0LTldKikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY281djYqKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbyopCisJCW9zPS1zY28zLjJ2MgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXVkayopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktaXNjKQorCQlvcz0taXNjMi4yCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktY2xpeCopCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1pbnRlcmdyYXBoCisJCTs7CisJLWlzYyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3NudCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsKKwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2RlIGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFhcmNoNjQgfCBhYXJjaDY0X2JlIFwKKwl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciB8IGF2cjMyIFwKKyAgICAgICAgfCBiZTMyIHwgYmU2NCBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGNsaXBwZXIgXAorCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKKwl8IGVwaXBoYW55IFwKKwl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwKKwl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJfCBsZTMyIHwgbGU2NCBcCisJfCBsbTMyIFwKKwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAorCXwgbWF4cSB8IG1iIHwgbWljcm9ibGF6ZSB8IG1jb3JlIHwgbWVwIHwgbWV0YWcgXAorCXwgbWlwcyB8IG1pcHNiZSB8IG1pcHNlYiB8IG1pcHNlbCB8IG1pcHNsZSBcCisJfCBtaXBzMTYgXAorCXwgbWlwczY0IHwgbWlwczY0ZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAorCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwgXAorCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAorCXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXAorCXwgbWlwczY0dnI1OTAwIHwgbWlwczY0dnI1OTAwZWwgXAorCXwgbWlwc2lzYTMyIHwgbWlwc2lzYTMyZWwgXAorCXwgbWlwc2lzYTMycjIgfCBtaXBzaXNhMzJyMmVsIFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1pcHNpc2E2NHIyIHwgbWlwc2lzYTY0cjJlbCBcCisJfCBtaXBzaXNhNjRzYjEgfCBtaXBzaXNhNjRzYjFlbCBcCisJfCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAorCXwgbWlwc3R4MzkgfCBtaXBzdHgzOWVsIFwKKwl8IG1uMTAyMDAgfCBtbjEwMzAwIFwKKwl8IG1veGllIFwKKwl8IG10IFwKKwl8IG1zcDQzMCBcCisJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKKwl8IG5pb3MgfCBuaW9zMiBcCisJfCBuczE2ayB8IG5zMzJrIFwKKwl8IG9wZW44IFwKKwl8IG9yMzIgXAorCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSBcCisJfCBweXJhbWlkIFwKKwl8IHJsNzggfCByeCBcCisJfCBzY29yZSBcCisJfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2g2NCB8IHNoNjRsZSBcCisJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCisJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXAorCXwgc3B1IFwKKwl8IHRhaG9lIHwgdGljNHggfCB0aWM1NHggfCB0aWM1NXggfCB0aWM2eCB8IHRpYzgwIHwgdHJvbiBcCisJfCB1Ymljb20zMiBcCisJfCB2ODUwIHwgdjg1MGUgfCB2ODUwZTEgfCB2ODUwZTIgfCB2ODUwZXMgfCB2ODUwZTJ2MyBcCisJfCB3ZTMyayBcCisJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB6OGsgfCB6ODApCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCWM1NHgpCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJOzsKKwljNTV4KQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCisJCTs7CisJYzZ4KQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKwkJOzsKKwltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBtNjhoY3MxMnggfCBwaWNvY2hpcCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCisJCTs7CisJbXMxKQorCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KKwkJOzsKKworCXN0cm9uZ2FybSB8IHRodW1iIHwgeHNjYWxlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCTs7CisJeGdhdGUpCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbm9uZQorCQk7OworCXhzY2FsZWViKQorCQliYXNpY19tYWNoaW5lPWFybWViLXVua25vd24KKwkJOzsKKworCXhzY2FsZWVsKQorCQliYXNpY19tYWNoaW5lPWFybWVsLXVua25vd24KKwkJOzsKKworCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCisJIyBiZWNhdXNlICgxKSB0aGF0J3Mgd2hhdCB0aGV5IG5vcm1hbGx5IGFyZSwgYW5kCisJIyAoMikgdGhlIHdvcmQgInVua25vd24iIHRlbmRzIHRvIGNvbmZ1c2UgYmVnaW5uaW5nIHVzZXJzLgorCWkqODYgfCB4ODZfNjQpCisJICBiYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXBjCisJICA7OworCSMgT2JqZWN0IGlmIG1vcmUgdGhhbiBvbmUgY29tcGFueSBuYW1lIHdvcmQuCisJKi0qLSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGggY29tcGFueSBuYW1lLgorCTU4MC0qIFwKKwl8IGEyOWstKiBcCisJfCBhYXJjaDY0LSogfCBhYXJjaDY0X2JlLSogXAorCXwgYWxwaGEtKiB8IGFscGhhZXZbNC04XS0qIHwgYWxwaGFldjU2LSogfCBhbHBoYWV2Nls3OF0tKiBcCisJfCBhbHBoYTY0LSogfCBhbHBoYTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAorCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCisJfCBhcm0tKiAgfCBhcm1iZS0qIHwgYXJtbGUtKiB8IGFybWViLSogfCBhcm12Ki0qIFwKKwl8IGF2ci0qIHwgYXZyMzItKiBcCisJfCBiZTMyLSogfCBiZTY0LSogXAorCXwgYmZpbi0qIHwgYnMyMDAwLSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAorCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKKwl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKKwl8IGVseHNpLSogXAorCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZmlkby0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorCXwgaDgzMDAtKiB8IGg4NTAwLSogXAorCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGhleGFnb24tKiBcCisJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAorCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbGUzMi0qIHwgbGU2NC0qIFwKKwl8IGxtMzItKiBcCisJfCBtMzJjLSogfCBtMzJyLSogfCBtMzJybGUtKiBcCisJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCisJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCisJfCBtaXBzMTYtKiBcCisJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAorCXwgbWlwczY0b2N0ZW9uLSogfCBtaXBzNjRvY3Rlb25lbC0qIFwKKwl8IG1pcHM2NG9yaW9uLSogfCBtaXBzNjRvcmlvbmVsLSogXAorCXwgbWlwczY0cjU5MDAtKiB8IG1pcHM2NHI1OTAwZWwtKiBcCisJfCBtaXBzNjR2ci0qIHwgbWlwczY0dnJlbC0qIFwKKwl8IG1pcHM2NHZyNDEwMC0qIHwgbWlwczY0dnI0MTAwZWwtKiBcCisJfCBtaXBzNjR2cjQzMDAtKiB8IG1pcHM2NHZyNDMwMGVsLSogXAorCXwgbWlwczY0dnI1MDAwLSogfCBtaXBzNjR2cjUwMDBlbC0qIFwKKwl8IG1pcHM2NHZyNTkwMC0qIHwgbWlwczY0dnI1OTAwZWwtKiBcCisJfCBtaXBzaXNhMzItKiB8IG1pcHNpc2EzMmVsLSogXAorCXwgbWlwc2lzYTMycjItKiB8IG1pcHNpc2EzMnIyZWwtKiBcCisJfCBtaXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAorCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRzYjEtKiB8IG1pcHNpc2E2NHNiMWVsLSogXAorCXwgbWlwc2lzYTY0c3I3MWstKiB8IG1pcHNpc2E2NHNyNzFrZWwtKiBcCisJfCBtaXBzdHgzOS0qIHwgbWlwc3R4MzllbC0qIFwKKwl8IG1taXgtKiBcCisJfCBtdC0qIFwKKwl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAorCXwgbmlvcy0qIHwgbmlvczItKiBcCisJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKwl8IG9wZW44LSogXAorCXwgb3Jpb24tKiBcCisJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKKwl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIFwKKwl8IHB5cmFtaWQtKiBcCisJfCBybDc4LSogfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAorCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCisJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCisJfCBzcGFyY2xpdGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlKi0qIFwKKwl8IHRyb24tKiBcCisJfCB1Ymljb20zMi0qIFwKKwl8IHY4NTAtKiB8IHY4NTBlLSogfCB2ODUwZTEtKiB8IHY4NTBlcy0qIHwgdjg1MGUyLSogfCB2ODUwZTJ2My0qIFwKKwl8IHZheC0qIFwKKwl8IHdlMzJrLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCisJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCisJfCB5bXAtKiBcCisJfCB6OGstKiB8IHo4MC0qKQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUsIHdpdGggZ2xvYiBtYXRjaC4KKwl4dGVuc2EqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVzIGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5kCisJIyBmb3IgYSBDUFUgdHlwZSBhbmQgYSBjb21wYW55IGFuZCBzb21ldGltZXMgZXZlbiBhbiBPUy4KKwkzODZic2QpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1ic2QKKwkJOzsKKwkzYjEgfCA3MzAwIHwgNzMwMC1hdHQgfCBhdHQtNzMwMCB8IHBjNzMwMCB8IHNhZmFyaSB8IHVuaXhwYykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtYXR0CisJCTs7CisJM2IqKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCWEyOWtoaWYpCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCWFiYWN1cykKKwkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNoaW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJYmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNfbWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWlnYXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQKKwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lzdgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1ic2QKKwkJOzsKKwlhcm9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWFyb3MKKwkJOzsKKwlhdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQlvcz0tYXV4CisJCTs7CisJYmFsYW5jZSkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCWJsYWNrZmluKQorCQliYXNpY19tYWNoaW5lPWJmaW4tdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwlibGFja2Zpbi0qKQorCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJYmx1ZWdlbmUqKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1jbmsKKwkJOzsKKwljNTR4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzU1eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM2eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzkwKQorCQliYXNpY19tYWNoaW5lPWM5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwljZWdjYykKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tY2VnY2MKKwkJOzsKKwljb252ZXgtYzEpCisJCWJhc2ljX21hY2hpbmU9YzEtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzIpCisJCWJhc2ljX21hY2hpbmU9YzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzMyKQorCQliYXNpY19tYWNoaW5lPWMzMi1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzQpCisJCWJhc2ljX21hY2hpbmU9YzM0LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzOCkKKwkJYmFzaWNfbWFjaGluZT1jMzgtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljcmF5IHwgajkwKQorCQliYXNpY19tYWNoaW5lPWo5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwljcmF5bnYpCisJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKKwkJb3M9LXVuaWNvc21wCisJCTs7CisJY3IxNiB8IGNyMTYtKikKKwkJYmFzaWNfbWFjaGluZT1jcjE2LXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWNyZHMgfCB1bm9zKQorCQliYXNpY19tYWNoaW5lPW02OGstY3JkcworCQk7OworCWNyaXN2MzIgfCBjcmlzdjMyLSogfCBldHJheGZzKikKKwkJYmFzaWNfbWFjaGluZT1jcmlzdjMyLWF4aXMKKwkJOzsKKwljcmlzIHwgY3Jpcy0qIHwgZXRyYXgqKQorCQliYXNpY19tYWNoaW5lPWNyaXMtYXhpcworCQk7OworCWNyeCkKKwkJYmFzaWNfbWFjaGluZT1jcngtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CisJZGEzMCB8IGRhMzAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKwkJOzsKKwlkZWNzdGF0aW9uIHwgZGVjc3RhdGlvbi0zMTAwIHwgcG1heCB8IHBtYXgtKiB8IHBtaW4gfCBkZWMzMTAwIHwgZGVjc3RhdG4pCisJCWJhc2ljX21hY2hpbmU9bWlwcy1kZWMKKwkJOzsKKwlkZWNzeXN0ZW0xMCogfCBkZWMxMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMTAKKwkJOzsKKwlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCisJCWJhc2ljX21hY2hpbmU9cGRwMTAtZGVjCisJCW9zPS10b3BzMjAKKwkJOzsKKwlkZWx0YSB8IDMzMDAgfCBtb3Rvcm9sYS0zMzAwIHwgbW90b3JvbGEtZGVsdGEgXAorCSAgICAgIHwgMzMwMC1tb3Rvcm9sYSB8IGRlbHRhLW1vdG9yb2xhKQorCQliYXNpY19tYWNoaW5lPW02OGstbW90b3JvbGEKKwkJOzsKKwlkZWx0YTg4KQorCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKwkJb3M9LXN5c3YzCisJCTs7CisJZGljb3MpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKKwlkamdwcCkKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCW9zPS1tc2Rvc2RqZ3BwCisJCTs7CisJZHB4MjAgfCBkcHgyMC0qKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1idWxsCisJCW9zPS1ib3N4CisJCTs7CisJZHB4MiogfCBkcHgyKi1idWxsKQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlvcz0tc3lzdjMKKwkJOzsKKwllYm1vbjI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tZWJtb24KKwkJOzsKKwllbHhzaSkKKwkJYmFzaWNfbWFjaGluZT1lbHhzaS1lbHhzaQorCQlvcz0tYnNkCisJCTs7CisJZW5jb3JlIHwgdW1heCB8IG1tYXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstZW5jb3JlCisJCTs7CisJZXMxODAwIHwgT1NFNjhrIHwgb3NlNjhrIHwgb3NlIHwgT1NFKQorCQliYXNpY19tYWNoaW5lPW02OGstZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCWZ4MjgwMCkKKwkJYmFzaWNfbWFjaGluZT1pODYwLWFsbGlhbnQKKwkJOzsKKwlnZW5peCkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1ucworCQk7OworCWdtaWNybykKKwkJYmFzaWNfbWFjaGluZT10cm9uLWdtaWNybworCQlvcz0tc3lzdgorCQk7OworCWdvMzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tZ28zMgorCQk7OworCWgzMDUwciogfCBoaXV4KikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwloODMwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloODMwMHhyYXkpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0teHJheQorCQk7OworCWg4NTAwaG1zKQorCQliYXNpY19tYWNoaW5lPWg4NTAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWhhcnJpcykKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tc3lzdjMKKwkJOzsKKwlocDMwMC0qKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJOzsKKwlocDMwMGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCW9zPS1ic2QKKwkJOzsKKwlocDMwMGhwdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0taHB1eAorCQk7OworCWhwM2s5WzAtOV1bMC05XSB8IGhwOVswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWsyWzAtOV1bMC05XSB8IGhwOWszMVswLTldKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1ocAorCQk7OworCWhwOWszWzItOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHA5azZbMC05XVswLTldIHwgaHA2WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azdbMC03OV1bMC05XSB8IGhwN1swLTc5XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrNzhbMC05XSB8IGhwNzhbMC05XSkKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbNjddMSB8IGhwOFs2N10xIHwgaHA5azgwWzI0XSB8IGhwODBbMjRdIHwgaHA5azhbNzhdOSB8IGhwOFs3OF05IHwgaHA5azg5MyB8IGhwODkzKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzEzNjc5XSB8IGhwOFswLTldWzEzNjc5XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVswLTldIHwgaHA4WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHBwYS1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJaHBwYW9zZikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCW9zPS1vc2YKKwkJOzsKKwlocHBybykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlpMzcwLWlibSogfCBpYm0qKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCTs7CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJCW9zPS1zeXN2CisJCTs7CisJbTY4a25vbW11KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwltNjhrbm9tbXUtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCW04OGstb21yb24qKQorCQliYXNpY19tYWNoaW5lPW04OGstb21yb24KKwkJOzsKKwltYWdudW0gfCBtMzIzMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLW1pcHMKKwkJb3M9LXN5c3YKKwkJOzsKKwltZXJsaW4pCisJCWJhc2ljX21hY2hpbmU9bnMzMmstdXRlaworCQlvcz0tc3lzdgorCQk7OworCW1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKKwltaW5ndzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwltaW5ndzMyY2UpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LW1pbmd3MzJjZQorCQk7OworCW1pbmlmcmFtZSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVyZ2VudAorCQk7OworCSptaW50IHwgLW1pbnRbMC05XSogfCAqTWlOVCB8ICpNaU5UWzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKKwltaXBzMyotKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AKKwkJOzsKKwltaXBzMyopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgLXVua25vd24KKwkJOzsKKwltb25pdG9yKQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJbW9ycGhvcykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJb3M9LW1vcnBob3MKKwkJOzsKKwltc2RvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc2RvcworCQk7OworCW1zMS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21zMS0vbXQtLydgCisJCTs7CisJbXN5cykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1tc3lzCisJCTs7CisJbXZzKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCW9zPS1tdnMKKwkJOzsKKwluYWNsKQorCQliYXNpY19tYWNoaW5lPWxlMzItdW5rbm93bgorCQlvcz0tbmFjbAorCQk7OworCW5jcjMwMDApCisJCWJhc2ljX21hY2hpbmU9aTQ4Ni1uY3IKKwkJb3M9LXN5c3Y0CisJCTs7CisJbmV0YnNkMzg2KQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tbmV0YnNkCisJCTs7CisJbmV0d2luZGVyKQorCQliYXNpY19tYWNoaW5lPWFybXY0bC1yZWJlbAorCQlvcz0tbGludXgKKwkJOzsKKwluZXdzIHwgbmV3czcwMCB8IG5ld3M4MDAgfCBuZXdzOTAwKQorCQliYXNpY19tYWNoaW5lPW02OGstc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3czEwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4MDMwLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MtMzYwMCB8IHJpc2MtbmV3cykKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5lY3Y3MCkKKwkJYmFzaWNfbWFjaGluZT12NzAtbmVjCisJCW9zPS1zeXN2CisJCTs7CisJbmV4dCB8IG0qLW5leHQgKQorCQliYXNpY19tYWNoaW5lPW02OGstbmV4dAorCQljYXNlICRvcyBpbgorCQkgICAgLW5leHRzdGVwKiApCisJCQk7OworCQkgICAgLW5zMiopCisJCSAgICAgIG9zPS1uZXh0c3RlcDIKKwkJCTs7CisJCSAgICAqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAzCisJCQk7OworCQllc2FjCisJCTs7CisJbmgzMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstaGFycmlzCisJCW9zPS1jeHV4CisJCTs7CisJbmhbNDVdMDAwKQorCQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCisJCW9zPS1jeHV4CisJCTs7CisJbmluZHk5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAorCQlvcz0tbmluZHkKKwkJOzsKKwltb245NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC1pbnRlbAorCQlvcz0tbW9uOTYwCisJCTs7CisJbm9uc3RvcHV4KQorCQliYXNpY19tYWNoaW5lPW1pcHMtY29tcGFxCisJCW9zPS1ub25zdG9wdXgKKwkJOzsKKwlucDEpCisJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCisJCTs7CisJbmVvLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uZW8tdGFuZGVtCisJCTs7CisJbnNlLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc2UtdGFuZGVtCisJCTs7CisJbnNyLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc3ItdGFuZGVtCisJCTs7CisJb3A1MG4tKiB8IG9wNjBjLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJb3M9LXByb2VsZgorCQk7OworCW9wZW5yaXNjIHwgb3BlbnJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1vcjMyLXVua25vd24KKwkJOzsKKwlvczQwMCkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tb3M0MDAKKwkJOzsKKwlPU0U2ODAwMCB8IG9zZTY4MDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1lcmljc3NvbgorCQlvcz0tb3NlCisJCTs7CisJb3M2OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ub25lCisJCW9zPS1vczY4aworCQk7OworCXBhLWhpdGFjaGkpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJcGFyYWdvbikKKwkJYmFzaWNfbWFjaGluZT1pODYwLWludGVsCisJCW9zPS1vc2YKKwkJOzsKKwlwYXJpc2MpCisJCWJhc2ljX21hY2hpbmU9aHBwYS11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCXBhcmlzYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGEtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJcGJkKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXR0aQorCQk7OworCXBiYikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXR0aQorCQk7OworCXBjNTMyIHwgcGM1MzItKikKKwkJYmFzaWNfbWFjaGluZT1uczMyay1wYzUzMgorCQk7OworCXBjOTgpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQk7OworCXBjOTgtKikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bSB8IHA1IHwgazUgfCBrNiB8IG5leGdlbiB8IHZpYWMzKQorCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKwkJOzsKKwlwZW50aXVtcHJvIHwgcDYgfCA2eDg2IHwgYXRobG9uIHwgYXRobG9uXyopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQk7OworCXBlbnRpdW1paSB8IHBlbnRpdW0yIHwgcGVudGl1bWlpaSB8IHBlbnRpdW0zKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtNCkKKwkJYmFzaWNfbWFjaGluZT1pNzg2LXBjCisJCTs7CisJcGVudGl1bS0qIHwgcDUtKiB8IGs1LSogfCBrNi0qIHwgbmV4Z2VuLSogfCB2aWFjMy0qKQorCQliYXNpY19tYWNoaW5lPWk1ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtcHJvLSogfCBwNi0qIHwgNng4Ni0qIHwgYXRobG9uLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1paS0qIHwgcGVudGl1bTItKiB8IHBlbnRpdW1paWktKiB8IHBlbnRpdW0zLSopCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW00LSopCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBuKQorCQliYXNpY19tYWNoaW5lPXBuLWdvdWxkCisJCTs7CisJcG93ZXIpCWJhc2ljX21hY2hpbmU9cG93ZXItaWJtCisJCTs7CisJcHBjIHwgcHBjYmUpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJCTs7CisJcHBjLSogfCBwcGNiZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGNsZSB8IHBvd2VycGNsaXR0bGUgfCBwcGMtbGUgfCBwb3dlcnBjLWxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtdW5rbm93bgorCQk7OworCXBwY2xlLSogfCBwb3dlcnBjbGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjQpCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LXVua25vd24KKwkJOzsKKwlwcGM2NC0qKSBiYXNpY19tYWNoaW5lPXBvd2VycGM2NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0bGUgfCBwb3dlcnBjNjRsaXR0bGUgfCBwcGM2NC1sZSB8IHBvd2VycGM2NC1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtdW5rbm93bgorCQk7OworCXBwYzY0bGUtKiB8IHBvd2VycGM2NGxpdHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtaWJtCisJCTs7CisJcHczMikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXVua25vd24KKwkJb3M9LXB3MzIKKwkJOzsKKwlyZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LXJkb3MKKwkJOzsKKwlyb202OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwlybVs0Nl0wMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNpZW1lbnMKKwkJOzsKKwlydHBjIHwgcnRwYy0qKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJczM5MCB8IHMzOTAtKikKKwkJYmFzaWNfbWFjaGluZT1zMzkwLWlibQorCQk7OworCXMzOTB4IHwgczM5MHgtKikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJOzsKKwlzYTI5MjAwKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwlzYjEpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxLXVua25vd24KKwkJOzsKKwlzYjFlbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjFlbC11bmtub3duCisJCTs7CisJc2RlKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2EzMi1zZGUKKwkJb3M9LWVsZgorCQk7OworCXNlaSkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorCQlvcz0tc2VpdXgKKwkJOzsKKwlzZXF1ZW50KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQk7OworCXNoKQorCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCXNoNWVsKQorCQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKwkJOzsKKwlzaDY0KQorCQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgorCQk7OworCXNwYXJjbGl0ZS13cnMgfCBzaW1zby13cnMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmNsaXRlLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXNwczcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MgorCQk7OworCXNwdXIpCisJCWJhc2ljX21hY2hpbmU9c3B1ci11bmtub3duCisJCTs7CisJc3QyMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstdGFuZGVtCisJCTs7CisJc3RyYXR1cykKKwkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0dXMKKwkJb3M9LXN5c3Y0CisJCTs7CisJc3Ryb25nYXJtLSogfCB0aHVtYi0qKQorCQliYXNpY19tYWNoaW5lPWFybS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXN1bjIpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJvczMpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuMm9zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW4zb3MzKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4zb3M0KQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40b3MzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuNG9zNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRzb2wyKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlzdW4zIHwgc3VuMy0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3VuNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwgcm9hZHJ1bm5lcikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFzaWNfbWFjaGluZT1zdjEtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFzaWNfbWFjaGluZT1hbHBoYWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJhc2ljX21hY2hpbmU9dDkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpbGUqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LWxpbnV4LWdudQorCQk7OworCXR4MzkpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzktdW5rbm93bgorCQk7OworCXR4MzllbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOWVsLXVua25vd24KKwkJOzsKKwl0b2FkMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC14a2wKKwkJb3M9LXRvcHMyMAorCQk7OworCXRvd2VyIHwgdG93ZXItMzIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uY3IKKwkJOzsKKwl0cGYpCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCW9zPS10cGYKKwkJOzsKKwl1ZGkyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXVsdHJhMykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW55dQorCQlvcz0tc3ltMQorCQk7OworCXY4MTAgfCBuZWN2ODEwKQorCQliYXNpY19tYWNoaW5lPXY4MTAtbmVjCisJCW9zPS1ub25lCisJCTs7CisJdmF4dikKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCW9zPS1zeXN2CisJCTs7CisJdm1zKQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXZtcworCQk7OworCXZwcCp8dnh8dngtKikKKwkJYmFzaWNfbWFjaGluZT1mMzAxLWZ1aml0c3UKKwkJOzsKKwl2eHdvcmtzOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczY4KQorCQliYXNpY19tYWNoaW5lPW02OGstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXc2NSopCisJCWJhc2ljX21hY2hpbmU9dzY1LXdkYworCQlvcz0tbm9uZQorCQk7OworCXc4OWstKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJb3M9LXByb2VsZgorCQk7OworCXhib3gpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCXhwcyB8IHhwczEwMCkKKwkJYmFzaWNfbWFjaGluZT14cHMxMDAtaG9uZXl3ZWxsCisJCTs7CisJeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL154c2NhbGUvYXJtLydgCisJCTs7CisJeW1wKQorCQliYXNpY19tYWNoaW5lPXltcC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl6OGstKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwlub25lKQorCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQorCQlvcz0tbm9uZQorCQk7OworCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0eXBlcy4gIEl0IGlzIGluCisjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFudWZhY3R1cmVyLCBpbiBvdGhlcnMsIGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCisJdzg5aykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJOzsKKwlvcDUwbikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7OworCW9wNjBjKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJcm9tcCkKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCW1taXgpCisJCWJhc2ljX21hY2hpbmU9bW1peC1rbnV0aAorCQk7OworCXJzNjAwMCkKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtaWJtCisJCTs7CisJdmF4KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJOzsKKwlwZHAxMCkKKwkJIyB0aGVyZSBhcmUgbWFueSBjbG9uZXMsIHNvIERFQyBpcyBub3QgYSBzYWZlIGJldAorCQliYXNpY19tYWNoaW5lPXBkcDEwLXVua25vd24KKwkJOzsKKwlwZHAxMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMS1kZWMKKwkJOzsKKwl3ZTMyaykKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsKKwlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgorCQk7OworCXNwYXJjIHwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCWN5ZHJhKQorCQliYXNpY19tYWNoaW5lPWN5ZHJhLWN5ZHJvbWUKKwkJOzsKKwlvcmlvbikKKwkJYmFzaWNfbWFjaGluZT1vcmlvbi1oaWdobGV2ZWwKKwkJOzsKKwlvcmlvbjEwNSkKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWhpZ2hsZXZlbAorCQk7OworCW1hYyB8IG1wdyB8IG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQk7OworCXBtYWMgfCBwbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWFwcGxlCisJCTs7CisJKi11bmtub3duKQorCQkjIE1ha2Ugc3VyZSB0byBtYXRjaCBhbiBhbHJlYWR5LWNhbm9uaWNhbGl6ZWQgbWFjaGluZSBuYW1lLgorCQk7OworCSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKKworIyBIZXJlIHdlIGNhbm9uaWNhbGl6ZSBjZXJ0YWluIGFsaWFzZXMgZm9yIG1hbnVmYWN0dXJlcnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi1kaWdpdGFsKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9kaWdpdGFsLiovZGVjLydgCisJCTs7CisJKi1jb21tb2RvcmUqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2NvbW1vZG9yZS4qL2NibS8nYAorCQk7OworCSopCisJCTs7Citlc2FjCisKKyMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBjZXJ0YWluIG9wZXJhdGluZyBzeXN0ZW1zLgorCitpZiBbIHgiJG9zIiAhPSB4IiIgXQordGhlbgorY2FzZSAkb3MgaW4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKKwktc29sYXJpczEgfCAtc29sYXJpczEuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAorCQk7OworCS1zb2xhcmlzKQorCQlvcz0tc29sYXJpczIKKwkJOzsKKwktc3ZyNCopCisJCW9zPS1zeXN2NAorCQk7OworCS11bml4d2FyZSopCisJCW9zPS1zeXN2NC4ydXcKKwkJOzsKKwktZ251L2xpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGdudS9saW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwkjIEZpcnN0IGFjY2VwdCB0aGUgYmFzaWMgc3lzdGVtIHR5cGVzLgorCSMgVGhlIHBvcnRhYmxlIHN5c3RlbXMgY29tZXMgZmlyc3QuCisJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KKwkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCisJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAorCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLWF1cm9yYXV4KiB8IC1zb2xhcmlzKiBcCisJICAgICAgfCAtc3ltKiB8IC1rb3BlbnNvbGFyaXMqIFwKKwkgICAgICB8IC1hbWlnYW9zKiB8IC1hbWlnYWRvcyogfCAtbXNkb3MqIHwgLW5ld3NvcyogfCAtdW5pY29zKiB8IC1hb2YqIFwKKwkgICAgICB8IC1hb3MqIHwgLWFyb3MqIFwKKwkgICAgICB8IC1uaW5keSogfCAtdnhzaW0qIHwgLXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXAorCSAgICAgIHwgLWNsaXgqIHwgLXJpc2NvcyogfCAtdW5pcGx1cyogfCAtaXJpcyogfCAtcnR1KiB8IC14ZW5peCogXAorCSAgICAgIHwgLWhpdXgqIHwgLTM4NmJzZCogfCAta25ldGJzZCogfCAtbWlyYnNkKiB8IC1uZXRic2QqIFwKKwkgICAgICB8IC1vcGVuYnNkKiB8IC1zb2xpZGJzZCogXAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKKwkgICAgICB8IC1jeWd3aW4qIHwgLW1zeXMqIHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCisJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKwkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKKwkgICAgICB8IC1zdG9ybS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwKKwkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCisJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13aW5kaXNzKiBcCisJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKKwkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyopCisJIyBSZW1lbWJlciwgZWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCQk7OworCS1xbngqKQorCQljYXNlICRiYXNpY19tYWNoaW5lIGluCisJCSAgICB4ODYtKiB8IGkqODYtKikKKwkJCTs7CisJCSAgICAqKQorCQkJb3M9LW50byRvcworCQkJOzsKKwkJZXNhYworCQk7OworCS1udG8tcW54KikKKwkJOzsKKwktbnRvKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8tcW54fCdgCisJCTs7CisJLXNpbSB8IC1lczE4MDAqIHwgLWhtcyogfCAteHJheSB8IC1vczY4ayogfCAtbm9uZSogfCAtdjg4ciogXAorCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVnIHwgLW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogfCAtaGFpa3UqIFwKKwkgICAgICB8IC1tYWNvcyogfCAtbXB3KiB8IC1tYWdpYyogfCAtbW1peHdhcmUqIHwgLW1vbjk2MCogfCAtbG5ld3MqKQorCQk7OworCS1tYWMqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bWFjfG1hY29zfCdgCisJCTs7CisJLWxpbnV4LWRpZXRsaWJjKQorCQlvcz0tbGludXgtZGlldGxpYmMKKwkJOzsKKwktbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bGludXh8bGludXgtZ251fCdgCisJCTs7CisJLXN1bm9zNSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczV8c29sYXJpczJ8J2AKKwkJOzsKKwktc3Vub3M2KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNnxzb2xhcmlzM3wnYAorCQk7OworCS1vcGVuZWQqKQorCQlvcz0tb3BlbmVkaXRpb24KKwkJOzsKKwktb3M0MDAqKQorCQlvcz0tb3M0MDAKKwkJOzsKKwktd2luY2UqKQorCQlvcz0td2luY2UKKwkJOzsKKwktb3Nmcm9zZSopCisJCW9zPS1vc2Zyb3NlCisJCTs7CisJLW9zZiopCisJCW9zPS1vc2YKKwkJOzsKKwktdXRlayopCisJCW9zPS1ic2QKKwkJOzsKKwktZHluaXgqKQorCQlvcz0tYnNkCisJCTs7CisJLWFjaXMqKQorCQlvcz0tYW9zCisJCTs7CisJLWF0aGVvcyopCisJCW9zPS1hdGhlb3MKKwkJOzsKKwktc3lsbGFibGUqKQorCQlvcz0tc3lsbGFibGUKKwkJOzsKKwktMzg2YnNkKQorCQlvcz0tYnNkCisJCTs7CisJLWN0aXgqIHwgLXV0cyopCisJCW9zPS1zeXN2CisJCTs7CisJLW5vdmEqKQorCQlvcz0tcnRtay1ub3ZhCisJCTs7CisJLW5zMiApCisJCW9zPS1uZXh0c3RlcDIKKwkJOzsKKwktbnNrKikKKwkJb3M9LW5zaworCQk7OworCSMgUHJlc2VydmUgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHNpbml4NS4KKwktc2luaXg1LiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzaW5peHxzeXN2fCdgCisJCTs7CisJLXNpbml4KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXRwZiopCisJCW9zPS10cGYKKwkJOzsKKwktdHJpdG9uKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLW9zcyopCisJCW9zPS1zeXN2MworCQk7OworCS1zdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwktc3ZyMykKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN5c3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBhZnRlciAtc3lzdnI0LgorCS1zeXN2KikKKwkJOzsKKwktb3NlKikKKwkJb3M9LW9zZQorCQk7OworCS1lczE4MDAqKQorCQlvcz0tb3NlCisJCTs7CisJLXhlbml4KQorCQlvcz0teGVuaXgKKwkJOzsKKwktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQlvcz0tbWludAorCQk7OworCS1hcm9zKikKKwkJb3M9LWFyb3MKKwkJOzsKKwkta2FvcyopCisJCW9zPS1rYW9zCisJCTs7CisJLXp2bW9lKQorCQlvcz0tenZtb2UKKwkJOzsKKwktZGljb3MqKQorCQlvcz0tZGljb3MKKwkJOzsKKwktbmFjbCopCisJCTs7CisJLW5vbmUpCisJCTs7CisJKikKKwkJIyBHZXQgcmlkIG9mIHRoZSBgLScgYXQgdGhlIGJlZ2lubmluZyBvZiAkb3MuCisJCW9zPWBlY2hvICRvcyB8IHNlZCAncy9bXi1dKi0vLydgCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogc3lzdGVtIFxgJG9zXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKK2Vsc2UKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IGNvbWUgd2l0aCB2YXJpb3VzIG1hY2hpbmVzLgorIyBUaGUgdmFsdWUgc2hvdWxkIGJlIHdoYXQgdGhlIHZlbmRvciBjdXJyZW50bHkgc2hpcHMgb3V0IHRoZSBkb29yIHdpdGggdGhlaXIKKyMgbWFjaGluZSBvciBwdXQgYW5vdGhlciB3YXksIHRoZSBtb3N0IHBvcHVsYXIgb3MgcHJvdmlkZWQgd2l0aCB0aGUgbWFjaGluZS4KKworIyBOb3RlIHRoYXQgaWYgeW91J3JlIGdvaW5nIHRvIHRyeSB0byBtYXRjaCAiLU1BTlVGQUNUVVJFUiIgaGVyZSAoc2F5LAorIyAiLXN1biIpLCB0aGVuIHlvdSBoYXZlIHRvIHRlbGwgdGhlIGNhc2Ugc3RhdGVtZW50IHVwIHRvd2FyZHMgdGhlIHRvcAorIyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgT3RoZXJ3aXNlLCBjb2RlIGFib3ZlCisjIHdpbGwgc2lnbmFsIGFuIGVycm9yIHNheWluZyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcKKyMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQuCisKK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwlzY29yZS0qKQorCQlvcz0tZWxmCisJCTs7CisJc3B1LSopCisJCW9zPS1lbGYKKwkJOzsKKwkqLWFjb3JuKQorCQlvcz0tcmlzY2l4MS4yCisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1pKQorCQlvcz0tYW91dAorCQk7OworCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eC0qKQorCQlvcz0tY29mZgorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KKwlwZHAxMC0qKQorCQlvcz0tdG9wczIwCisJCTs7CisJcGRwMTEtKikKKwkJb3M9LW5vbmUKKwkJOzsKKwkqLWRlYyB8IHZheC0qKQorCQlvcz0tdWx0cml4NC4yCisJCTs7CisJbTY4Ki1hcG9sbG8pCisJCW9zPS1kb21haW4KKwkJOzsKKwlpMzg2LXN1bikKKwkJb3M9LXN1bm9zNC4wLjIKKwkJOzsKKwltNjgwMDAtc3VuKQorCQlvcz0tc3Vub3MzCisJCTs7CisJbTY4Ki1jaXNjbykKKwkJb3M9LWFvdXQKKwkJOzsKKwltZXAtKikKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLWNpc2NvKQorCQlvcz0tZWxmCisJCTs7CisJbWlwcyotKikKKwkJb3M9LWVsZgorCQk7OworCW9yMzItKikKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLXR0aSkJIyBtdXN0IGJlIGJlZm9yZSBzcGFyYyBlbnRyeSBvciB3ZSBnZXQgdGhlIHdyb25nIG9zLgorCQlvcz0tc3lzdjMKKwkJOzsKKwlzcGFyYy0qIHwgKi1zdW4pCisJCW9zPS1zdW5vczQuMS4xCisJCTs7CisJKi1iZSkKKwkJb3M9LWJlb3MKKwkJOzsKKwkqLWhhaWt1KQorCQlvcz0taGFpa3UKKwkJOzsKKwkqLWlibSkKKwkJb3M9LWFpeAorCQk7OworCSota251dGgpCisJCW9zPS1tbWl4d2FyZQorCQk7OworCSotd2VjKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi13aW5ib25kKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1va2kpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLWhwKQorCQlvcz0taHB1eAorCQk7OworCSotaGl0YWNoaSkKKwkJb3M9LWhpdXgKKwkJOzsKKwlpODYwLSogfCAqLWF0dCB8ICotbmNyIHwgKi1hbHRvcyB8ICotbW90b3JvbGEgfCAqLWNvbnZlcmdlbnQpCisJCW9zPS1zeXN2CisJCTs7CisJKi1jYm0pCisJCW9zPS1hbWlnYW9zCisJCTs7CisJKi1kZykKKwkJb3M9LWRndXgKKwkJOzsKKwkqLWRvbHBoaW4pCisJCW9zPS1zeXN2MworCQk7OworCW02OGstY2N1cikKKwkJb3M9LXJ0dQorCQk7OworCW04OGstb21yb24qKQorCQlvcz0tbHVuYQorCQk7OworCSotbmV4dCApCisJCW9zPS1uZXh0c3RlcAorCQk7OworCSotc2VxdWVudCkKKwkJb3M9LXB0eAorCQk7OworCSotY3JkcykKKwkJb3M9LXVub3MKKwkJOzsKKwkqLW5zKQorCQlvcz0tZ2VuaXgKKwkJOzsKKwlpMzcwLSopCisJCW9zPS1tdnMKKwkJOzsKKwkqLW5leHQpCisJCW9zPS1uZXh0c3RlcDMKKwkJOzsKKwkqLWdvdWxkKQorCQlvcz0tc3lzdgorCQk7OworCSotaGlnaGxldmVsKQorCQlvcz0tYnNkCisJCTs7CisJKi1lbmNvcmUpCisJCW9zPS1ic2QKKwkJOzsKKwkqLXNnaSkKKwkJb3M9LWlyaXgKKwkJOzsKKwkqLXNpZW1lbnMpCisJCW9zPS1zeXN2NAorCQk7OworCSotbWFzc2NvbXApCisJCW9zPS1ydHUKKwkJOzsKKwlmMzBbMDFdLWZ1aml0c3UgfCBmNzAwLWZ1aml0c3UpCisJCW9zPS11eHB2CisJCTs7CisJKi1yb202OGspCisJCW9zPS1jb2ZmCisJCTs7CisJKi0qYnVnKQorCQlvcz0tY29mZgorCQk7OworCSotYXBwbGUpCisJCW9zPS1tYWNvcworCQk7OworCSotYXRhcmkqKQorCQlvcz0tbWludAorCQk7OworCSopCisJCW9zPS1ub25lCisJCTs7Citlc2FjCitmaQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGtub3cgdGhlIG9zLCBhbmQgdGhlIENQVSB0eXBlLCBidXQgbm90IHRoZQorIyBtYW51ZmFjdHVyZXIuICBXZSBwaWNrIHRoZSBsb2dpY2FsIG1hbnVmYWN0dXJlci4KK3ZlbmRvcj11bmtub3duCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi11bmtub3duKQorCQljYXNlICRvcyBpbgorCQkJLXJpc2NpeCopCisJCQkJdmVuZG9yPWFjb3JuCisJCQkJOzsKKwkJCS1zdW5vcyopCisJCQkJdmVuZG9yPXN1bgorCQkJCTs7CisJCQktY25rKnwtYWl4KikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1iZW9zKikKKwkJCQl2ZW5kb3I9YmUKKwkJCQk7OworCQkJLWhwdXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktbXBlaXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktaGl1eCopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLXVub3MqKQorCQkJCXZlbmRvcj1jcmRzCisJCQkJOzsKKwkJCS1kZ3V4KikKKwkJCQl2ZW5kb3I9ZGcKKwkJCQk7OworCQkJLWx1bmEqKQorCQkJCXZlbmRvcj1vbXJvbgorCQkJCTs7CisJCQktZ2VuaXgqKQorCQkJCXZlbmRvcj1ucworCQkJCTs7CisJCQktbXZzKiB8IC1vcGVuZWQqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLW9zNDAwKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1wdHgqKQorCQkJCXZlbmRvcj1zZXF1ZW50CisJCQkJOzsKKwkJCS10cGYqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC13aW5kaXNzKikKKwkJCQl2ZW5kb3I9d3JzCisJCQkJOzsKKwkJCS1hdXgqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktaG1zKikKKwkJCQl2ZW5kb3I9aGl0YWNoaQorCQkJCTs7CisJCQktbXB3KiB8IC1tYWNvcyopCisJCQkJdmVuZG9yPWFwcGxlCisJCQkJOzsKKwkJCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCQkJdmVuZG9yPWF0YXJpCisJCQkJOzsKKwkJCS12b3MqKQorCQkJCXZlbmRvcj1zdHJhdHVzCisJCQkJOzsKKwkJZXNhYworCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICJzL3Vua25vd24vJHZlbmRvci8iYAorCQk7OworZXNhYworCitlY2hvICRiYXNpY19tYWNoaW5lJG9zCitleGl0CisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxZjAwNTk5Li4yN2Q0YjQ1IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDcgKzEsNiBAQAogIyEgL2Jpbi9zaAotIyBGcm9tIGNvbmZpZ3VyZS5hYyBSZXZpc2lvbi4KICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy4yLgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjMuCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxodHRwOi8vYnVncy5weXRob24ub3JnLz4uCiAjCkBAIC01ODEsOCArNTgwLDggQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdweXRob24nCiBQQUNLQUdFX1RBUk5BTUU9J3B5dGhvbicKLVBBQ0tBR0VfVkVSU0lPTj0nMy4yJwotUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjInCitQQUNLQUdFX1ZFUlNJT049JzMuMycKK1BBQ0tBR0VfU1RSSU5HPSdweXRob24gMy4zJwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9idWdzLnB5dGhvbi5vcmcvJwogUEFDS0FHRV9VUkw9JycKIApAQCAtNjY3LDEzICs2NjYsMTAgQEAKIElOU1RBTExfUFJPR1JBTQogUFlUSE9OCiBBU0RMR0VOCi1IQVNfSEcKLUhHQlJBTkNICi1IR1RBRwotSEdWRVJTSU9OCi1CQVNFQ1BQRkxBR1MKLVNWTlZFUlNJT04KK2FjX2N0X1JFQURFTEYKK1JFQURFTEYKIEFSRkxBR1MKK2FjX2N0X0FSCiBBUgogUkFOTElCCiBVU0VfSU5MSU5FCkBAIC02OTMsNiArNjg5LDcgQEAKIEdSRVAKIENQUAogTk9fQVNfTkVFREVECithY19jdF9DWFgKIE1BSU5DQwogQ1hYCiBPQkpFWFQKQEAgLTcwNSw2ICs3MDIsNyBAQAogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogU0dJX0FCSQorX1BZVEhPTl9IT1NUX1BMQVRGT1JNCiBNQUNIREVQCiBGUkFNRVdPUktJTlNUQUxMQVBQU1BSRUZJWAogRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYCkBAIC03MjMsNiArNzIxLDIwIEBACiBDT05GSUdfQVJHUwogU09WRVJTSU9OCiBWRVJTSU9OCitQWVRIT05fRk9SX0JVSUxECitob3N0X29zCitob3N0X3ZlbmRvcgoraG9zdF9jcHUKK2hvc3QKK2J1aWxkX29zCitidWlsZF92ZW5kb3IKK2J1aWxkX2NwdQorYnVpbGQKK0hBU19IRworSEdCUkFOQ0gKK0hHVEFHCitIR1ZFUlNJT04KK0JBU0VDUFBGTEFHUwogdGFyZ2V0X2FsaWFzCiBob3N0X2FsaWFzCiBidWlsZF9hbGlhcwpAQCAtNzc3LDEwICs3ODksMTAgQEAKIHdpdGhfbGlicwogd2l0aF9zeXN0ZW1fZXhwYXQKIHdpdGhfc3lzdGVtX2ZmaQord2l0aF9zeXN0ZW1fbGlibXBkZWMKIGVuYWJsZV9sb2FkYWJsZV9zcWxpdGVfZXh0ZW5zaW9ucwogd2l0aF9kYm1saWJvcmRlcgogd2l0aF9zaWduYWxfbW9kdWxlCi13aXRoX2RlY190aHJlYWRzCiB3aXRoX3RocmVhZHMKIHdpdGhfdGhyZWFkCiBlbmFibGVfaXB2NgpAQCAtNzkyLDcgKzgwNCw2IEBACiB3aXRoX2xpYm0KIHdpdGhfbGliYwogZW5hYmxlX2JpZ19kaWdpdHMKLXdpdGhfd2lkZV91bmljb2RlCiB3aXRoX2NvbXB1dGVkX2dvdG9zCiAnCiAgICAgICBhY19wcmVjaW91c192YXJzPSdidWlsZF9hbGlhcwpAQCAtMTM0NCw3ICsxMzU1LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy4yIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjMgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTQwMCwxMiArMTQxMSwxNiBAQAogX0FDRU9GCiAKICAgY2F0IDw8XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQogX0FDRU9GCiBmaQogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjI6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy4zOiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE0MTQsNyArMTQyOSw3IEBACiAgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQogICAtLWVuYWJsZS11bml2ZXJzYWxzZGtbPVNES0RJUl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgYWdhaW5zdCBNYWMgT1MgWCAxMC40dSBTREsgKHBwYy9pMzg2KQorICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLCiAgIC0tZW5hYmxlLWZyYW1ld29ya1s9SU5TVEFMTERJUl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgKE1hY09TWHxEYXJ3aW4pIGZyYW1ld29yawogICAtLWVuYWJsZS1zaGFyZWQgICAgICAgICBkaXNhYmxlL2VuYWJsZSBidWlsZGluZyBzaGFyZWQgcHl0aG9uIGxpYnJhcnkKQEAgLTE0NDUsMTIgKzE0NjAsMTMgQEAKICAgLS13aXRoLXN5c3RlbS1leHBhdCAgICAgYnVpbGQgcHlleHBhdCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGV4cGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKICAgLS13aXRoLXN5c3RlbS1mZmkgICAgICAgYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5CisgIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgIGJ1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQogICAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgogICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCi0gIC0td2l0aC1kZWMtdGhyZWFkcyAgICAgIHVzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXMKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KQEAgLTE0NjIsNyArMTQ3OCw2IEBACiAgIC0td2l0aC1mcGVjdGwgICAgICAgICAgIGVuYWJsZSBTSUdGUEUgY2F0Y2hpbmcKICAgLS13aXRoLWxpYm09U1RSSU5HICAgICAgbWF0aCBsaWJyYXJ5CiAgIC0td2l0aC1saWJjPVNUUklORyAgICAgIEMgbGlicmFyeQotICAtLXdpdGgtd2lkZS11bmljb2RlICAgICBVc2UgNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycyAoZGVmYXVsdCBpcyAyIGJ5dGVzKQogICAtLXdpdGgob3V0KS1jb21wdXRlZC1nb3RvcwogICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgY29tcHV0ZWQgZ290b3MgaW4gZXZhbHVhdGlvbiBsb29wIChlbmFibGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycykKQEAgLTE1NDMsNyArMTU1OCw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjIKK3B5dGhvbiBjb25maWd1cmUgMy4zCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjM4Miw3ICsyMzk3LDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMiwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0yNzMxLDkgKzI3NDYsMjEwIEBACiAKIAogCisKK2lmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KKyAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCisgICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCisgICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKKyAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCisgICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCisgICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQorICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCisgICAgIyAgb2ZmLikKKyAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCitlbHNlCisgICAgQkFTRUNQUEZMQUdTPSIiCitmaQorCisKKworCisKK2lmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKK3RoZW4KKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaGciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGhnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfSEFTX0hHIiAmJiBhY19jdl9wcm9nX0hBU19IRz0ibm90LWZvdW5kIgorZmkKK2ZpCitIQVNfSEc9JGFjX2N2X3Byb2dfSEFTX0hHCitpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBU19IRyIgPiY1CiskYXNfZWNobyAiJEhBU19IRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKKwogYWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBweWNvbmZpZy5oIgogCiAKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIgIiRzcmNkaXIvLi4vLi4iOyBkbworICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQorZmkKKworIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkKKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KK2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorCisKKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworZXNhYworYnVpbGQ9JGFjX2N2X2J1aWxkCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfYnVpbGQKK3NoaWZ0CitidWlsZF9jcHU9JDEKK2J1aWxkX3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2J1aWxkX29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRidWlsZF9vcyBpbiAqXCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgorICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAorZWxzZQorICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CitjYXNlICRhY19jdl9ob3N0IGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7Citlc2FjCitob3N0PSRhY19jdl9ob3N0CithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfaG9zdAorc2hpZnQKK2hvc3RfY3B1PSQxCitob3N0X3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2hvc3Rfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGhvc3Rfb3MgaW4gKlwgKikgaG9zdF9vcz1gZWNobyAiJGhvc3Rfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGQuLi4gIiA+JjY7IH0KKyAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KKyAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbworCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQorCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgICAgICBicmVhaworCSAgICBmaQorICAgICAgICAgICAgaW50ZXJwPQorCWRvbmUKKyAgICAgICAgaWYgdGVzdCB4JGludGVycCA9IHg7IHRoZW4KKwkgICAgYXNfZm5fZXJyb3IgJD8gInB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorCWZpCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKKyRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KKwlQWVRIT05fRk9SX0JVSUxEPSJfUFlUSE9OX1BST0pFQ1RfQkFTRT0kc3JjZGlyIicgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi9wbGF0LSQoTUFDSERFUCkgJyRpbnRlcnAKKyAgICBmaQorZWxpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIkNyb3NzIGNvbXBpbGluZyByZXF1aXJlZCAtLWhvc3Q9SE9TVC1UVVBMRSBhbmQgLS1idWlsZD1BUkNIIiAiJExJTkVOTyIgNQorZWxzZQorICAgIFBZVEhPTl9GT1JfQlVJTEQ9Jy4vJChCVUlMRFBZVEhPTikgLUUnCitmaQorCisKIAogaWYgdGVzdCAiJHByZWZpeCIgIT0gIi8iOyB0aGVuCiAgICAgcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAtZSAncy9cLyQvL2cnYApAQCAtMjc0OSw3ICsyOTY1LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuMgorVkVSU0lPTj0zLjMKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtMjgwMiwxMCArMzAxOCwxNiBAQAogICBlbmFibGV2YWw9JGVuYWJsZV91bml2ZXJzYWxzZGs7CiAJY2FzZSAkZW5hYmxldmFsIGluCiAJeWVzKQotCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkawotCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJIyBMb2NhdGUgdGhlIGJlc3QgdXNhYmxlIFNESywgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJCSMgaW5mb3JtYXRpb24KKwkJZW5hYmxldmFsPSJgL3Vzci9iaW4veGNvZGVidWlsZCAtdmVyc2lvbiAtc2RrIG1hY29zeCBQYXRoIDI+L2Rldi9udWxsYCIKKwkJaWYgdGVzdCAteiAiJHtlbmFibGV2YWx9IgogCQl0aGVuCi0JCQllbmFibGV2YWw9LworCQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKKwkJCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkJdGhlbgorCQkJCWVuYWJsZXZhbD0vCisJCQlmaQogCQlmaQogCQk7OwogCWVzYWMKQEAgLTI4NDMsNyArMzA2NSwyMCBAQAogCiAKIAorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIHdlIHByZWZlciB0byBzZWxlY3QgJzMyLWJpdCcgaWYgYXZhaWxhYmxlLAorIyBvdGhlcndpc2UgdXNlICdpbnRlbCcKIFVOSVZFUlNBTF9BUkNIUz0iMzItYml0IgoraWYgdGVzdCAiYHVuYW1lIC1zYCIgPSAiRGFyd2luIgordGhlbgorCWlmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKKwl0aGVuCisJCWlmIHRlc3QgLXogImAvdXNyL2Jpbi9maWxlICIke1VOSVZFUlNBTFNES30vdXNyL2xpYi9saWJTeXN0ZW0uZHlsaWIiIHwgZ3JlcCBwcGNgIgorCQl0aGVuCisJCQlVTklWRVJTQUxfQVJDSFM9ImludGVsIgorCQlmaQorCWZpCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMuLi4gIiA+JjY7IH0KQEAgLTI4NTcsOCArMzA5Miw4IEBACiAKIGVsc2UKIAotIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogMzItYml0IiA+JjUKLSRhc19lY2hvICIzMi1iaXQiID4mNjsgfQorIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtVTklWRVJTQUxfQVJDSFN9IiA+JjUKKyRhc19lY2hvICIke1VOSVZFUlNBTF9BUkNIU30iID4mNjsgfQogCiBmaQogCkBAIC0zMDExLDYgKzMyNDYsMjUgQEAKICRhc19lY2hvX24gImNoZWNraW5nIE1BQ0hERVAuLi4gIiA+JjY7IH0KIGlmIHRlc3QgLXogIiRNQUNIREVQIgogdGhlbgorICAgICMgYXZvaWQgdXNpbmcgdW5hbWUgZm9yIGNyb3NzIGJ1aWxkcworICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgICAgIyBhY19zeXNfc3lzdGVtIGFuZCBhY19zeXNfcmVsZWFzZSBhcmUgb25seSB1c2VkIGZvciBzZXR0aW5nCisgICAgICAgIyBgZGVmaW5lX3hvcGVuX3NvdXJjZScgaW4gdGhlIGNhc2Ugc3RhdGVtZW50IGJlbG93LiBGb3IgdGhlCisgICAgICAgIyBjdXJyZW50IHN1cHBvcnRlZCBjcm9zcyBidWlsZHMsIHRoaXMgbWFjcm8gaXMgbm90IGFkanVzdGVkLgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWFjX3N5c19zeXN0ZW09TGludXgKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJYWNfc3lzX3N5c3RlbT1DeWd3aW4KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlhc19mbl9lcnJvciAkPyAiY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3QiICIkTElORU5PIiA1CisJZXNhYworCWFjX3N5c19yZWxlYXNlPQorICAgIGVsc2UKIAlhY19zeXNfc3lzdGVtPWB1bmFtZSAtc2AKIAlpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiQUlYIiBcCiAJLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJVbml4V2FyZSIgLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJPcGVuVU5JWCI7IHRoZW4KQEAgLTMwMTgsMTkgKzMyNzIsNDMgQEAKIAllbHNlCiAJCWFjX3N5c19yZWxlYXNlPWB1bmFtZSAtcmAKIAlmaQotCWFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8Ci0JCQkgICB0ciAtZCAnLyAnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYAotCWFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKLQkJCSAgIHRyIC1kICcvICcgfCBzZWQgJ3MvXltBLVpdXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJy8gJyB8IHRyICdbQS1aXScgJ1thLXpdJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnLyAnIHwgc2VkICdzL15bQS1aXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCisgICAgTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgogCi0JY2FzZSAkTUFDSERFUCBpbgotCWxpbnV4KikgTUFDSERFUD0ibGludXgyIjs7CisgICAgY2FzZSAkTUFDSERFUCBpbgorCWxpbnV4KikgTUFDSERFUD0ibGludXgiOzsKIAljeWd3aW4qKSBNQUNIREVQPSJjeWd3aW4iOzsKIAlkYXJ3aW4qKSBNQUNIREVQPSJkYXJ3aW4iOzsKLSAgICAgICAgaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKKwlpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OwogCScnKQlNQUNIREVQPSJ1bmtub3duIjs7CisgICAgZXNhYworZmkKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWNhc2UgIiRob3N0X2NwdSIgaW4KKwkJYXJtKikKKwkJCV9ob3N0X2NwdT1hcm0KKwkJCTs7CisJCSopCisJCQlfaG9zdF9jcHU9JGhvc3RfY3B1CisJCWVzYWMKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJX2hvc3RfY3B1PQorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCWFzX2ZuX2Vycm9yICQ/ICJjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdCIgIiRMSU5FTk8iIDUKIAllc2FjCisJX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSIkTUFDSERFUCR7X2hvc3RfY3B1OistJF9ob3N0X2NwdX0iCiBmaQogCiAjIFNvbWUgc3lzdGVtcyBjYW5ub3Qgc3RhbmQgX1hPUEVOX1NPVVJDRSBiZWluZyBkZWZpbmVkIGF0IGFsbDsgdGhleQpAQCAtMzEyMSw4ICszMzk5LDkgQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgorICAjIFgvT3BlbiA3LCBpbmNvcnBvcmF0aW5nIFBPU0lYLjEtMjAwOAogCi0kYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMCIgPj5jb25mZGVmcy5oCiskYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDcwMCIgPj5jb25mZGVmcy5oCiAKIAogICAjIE9uIFRydTY0IFVuaXggNC4wRiwgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRSBhbHNvIHJlcXVpcmVzCkBAIC0zMTM0LDggKzM0MTMsNyBAQAogCiAKIAotJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDExMkwiID4+Y29uZmRlZnMuaAotCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TCIgPj5jb25mZGVmcy5oCiAKIGZpCiAKQEAgLTMxNjYsMTIgKzM0NDQsNiBAQAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0KIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JyMnCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIG1hY2hpbmUgdHlwZSBhcyByZXBvcnRlZCBieSB1bmFtZSAtbS4uLiAiID4mNjsgfQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19zeXNfbWFjaGluZSIgPiY1Ci0kYXNfZWNobyAiJGFjX3N5c19tYWNoaW5lIiA+JjY7IH0KLQogIyBjaGVja3MgZm9yIGFsdGVybmF0aXZlIHByb2dyYW1zCiAKICMgY29tcGlsZXIgZmxhZ3MgYXJlIGdlbmVyYXRlZCBpbiB0d28gc2V0cywgQkFTRUNGTEFHUyBhbmQgT1BULiAgT1BUIGlzIGp1c3QKQEAgLTMyMjEsNiArMzQ5Myw2NiBAQAogaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KICAgICAgICAgQ0ZMQUdTPQogZmkKKworaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkRhcndpbiIKK3RoZW4KKwkjIENvbXBpbGVyIHNlbGVjdGlvbiBvbiBNYWNPU1ggaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuCisJIyBBQ19QUk9HX0NDIGNhbiBoYW5kbGUsIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCSMgaW5mb3JtYXRpb24KKwlpZiB0ZXN0IC16ICIke0NDfSIKKwl0aGVuCisJCWZvdW5kX2djYz0KKwkJZm91bmRfY2xhbmc9CisJCWFzX3NhdmVfSUZTPSRJRlM7IElGUz06CisJCWZvciBhc19kaXIgaW4gJFBBVEgKKwkJZG8KKwkJCUlGUz0kYXNfc2F2ZV9JRlMKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9nY2M7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2djY30iOyB0aGVuCisJCQkJCWZvdW5kX2djYz0kYXNfZGlyL2djYworCQkJCWZpCisJCQlmaQorCQkJaWYgdGVzdCAteCAkYXNfZGlyL2NsYW5nOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9jbGFuZ30iOyB0aGVuCisJCQkJCWZvdW5kX2NsYW5nPSRhc19kaXIvY2xhbmcKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCQlJRlM9JGFzX3NhdmVfSUZTCisKKwkJaWYgdGVzdCAtbiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJaWYgdGVzdCAtbiAiYCIkZm91bmRfZ2NjIiAtLXZlcnNpb24gfCBncmVwIGxsdm0tZ2NjYCIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IERldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmciID4mNQorJGFzX2VjaG8gIiRhc19tZTogRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZyIgPiY2O30KKwkJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisJCQlmaQorCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjY7fQorCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAteiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlmb3VuZF9jbGFuZz1gL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcgMj4vZGV2L251bGxgCisJCQlpZiB0ZXN0IC1uICIke2ZvdW5kX2NsYW5nfSIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjY7fQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTQwNDYsMTYgKzQzNzgsNjAgQEAKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCiAgICAgICAgIGNhc2UgIiRDQyIgaW4KLSAgICAgICAgZ2NjKSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgICAgICAgIGdjYykgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGcrKzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBjYXNlICRDWFggaW4KKyAgY2FzZSAkYWNfcHRfQ1hYIGluCiAgIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICAgKikKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtNDA2NSw3ICs0NDQxLDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTQwNzMsMjIgKzQ0NDksMzYgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCIgJiYgYWNfY3ZfcGF0aF9DWFg9ImcrKyIKICAgOzsKIGVzYWMKIGZpCi1DWFg9JGFjX2N2X3BhdGhfQ1hYCi1pZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENYWCIgPiY1Ci0kYXNfZWNobyAiJENYWCIgPiY2OyB9CithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAorICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJnKysiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19wdF9DWFgKKyAgZmkKK2Vsc2UKKyAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCitmaQogIDs7Ci0gICAgICAgIGNjKSAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGMrKzsgYWNfd29yZD0kMgorICAgICAgICBjYykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWMrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jKys7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CkBAIC00MTE0LDcgKzQ1MDQsNiBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIiAmJiBhY19jdl9wYXRoX0NYWD0iYysrIgogICA7OwogZXNhYwogZmkKQEAgLTQxMjcsNiArNDUxNiwxNjEgQEAKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X0NYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhY19wdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X0NYWD0kYWNfY3ZfcGF0aF9hY19wdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19wdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9ImMrKyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCisgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNsYW5nKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2xhbmcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbGFuZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjbGFuZysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9DWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJjbGFuZysrIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfcHRfQ1hYCisgIGZpCitlbHNlCisgIENYWD0iJGFjX2N2X3BhdGhfQ1hYIgorZmkKICA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCkBAIC00MTM2LDEwICs0NjgwLDExIEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlmb3IgYWNfcHJvZyBpbiAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtNDE1NSw3ICs0NzAwLDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfQ1hYPSIkYWNfcHJvZyIKKyAgICBhY19jdl9wcm9nX0NYWD0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNDE3NSw5ICs0NzIwLDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJENYWCIgJiYgYnJlYWsKKyAgICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENYWCI7IHRoZW4KKyAgYWNfY3RfQ1hYPSRDWFgKKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DWFgiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfY3RfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCiBkb25lCi10ZXN0IC1uICIkQ1hYIiB8fCBDWFg9Im5vdGZvdW5kIgorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ1hYPSRhY19jdl9wcm9nX2FjX2N0X0NYWAoraWYgdGVzdCAtbiAiJGFjX2N0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQ1hYIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9Im5vdGZvdW5kIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfY3RfQ1hYCisgIGZpCitmaQogCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNDkxNywzNyArNTUxOCwzNSBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0tZW5hYmxlLXByb2ZpbGluZy4uLiAiID4mNjsgfQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXByb2ZpbGluZyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9wcm9maWxpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7IGFjX3NhdmVfY2M9IiRDQyIKLSBDQz0iJENDIC1wZyIKLSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgotZWxzZQorICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7CitmaQorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBhY19zYXZlX2NjPSIkQ0MiCisgIENDPSIkKENDKSAtcGciCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGludCBtYWluKCkgeyByZXR1cm4gMDsgfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfZW5hYmxlX3Byb2ZpbGluZz0ieWVzIgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorCiBlbHNlCi0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQotcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAotICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0M9IiRhY19zYXZlX2NjIgorZWxzZQorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRlbmFibGVfcHJvZmlsaW5nIiA+JjUKKyRhc19lY2hvICIkZW5hYmxlX3Byb2ZpbGluZyIgPiY2OyB9CiAKLSBDQz0iJGFjX3NhdmVfY2MiCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCisgIExERkxBR1M9Ii1wZyAkTERGTEFHUyIKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfZW5hYmxlX3Byb2ZpbGluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2VuYWJsZV9wcm9maWxpbmciID4mNjsgfQotCi1jYXNlICIkYWNfZW5hYmxlX3Byb2ZpbGluZyIgaW4KLSAgICAieWVzIikKLQlCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCi0JTERGTEFHUz0iLXBnICRMREZMQUdTIgotICAgIDs7Ci1lc2FjCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTERMSUJSQVJZIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIExETElCUkFSWS4uLiAiID4mNjsgfQogCkBAIC01MDEzLDExICs1NjEyLDYgQEAKIAkgIEJMRExJQlJBUlk9Jy1XbCwrYiwkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwogCSAgUlVOU0hBUkVEPVNITElCX1BBVEg9YHB3ZGA6JHtTSExJQl9QQVRIfQogCSAgOzsKLSAgICBPU0YqKQotCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCi0JICBCTERMSUJSQVJZPSctcnBhdGggJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKLQkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGA6JHtMRF9MSUJSQVJZX1BBVEh9Ci0JICA7OwogICAgIERhcndpbiopCiAgICAgCUxETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliJwogCUJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKQEAgLTUwMzgsNiArNTYzMiwxMCBAQAogICBlc2FjCiBmaQogCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCVJVTlNIQVJFRD0KK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTERMSUJSQVJZIiA+JjUKICRhc19lY2hvICIkTERMSUJSQVJZIiA+JjY7IH0KIApAQCAtNTEzNCwxMCArNTczMiwxMSBAQAogZmkKIAogCi1mb3IgYWNfcHJvZyBpbiBhciBhYWwKLWRvCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CkBAIC01MTUzLDcgKzU3NTIsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Byb2ciCisgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTE3Myw5ICs1NzcyLDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgYWNfY3RfQVI9JEFSCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQogZG9uZQotdGVzdCAtbiAiJEFSIiB8fCBBUj0iYXIiCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgoraWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQVIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgQVI9ImFyIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIEFSPSRhY19jdF9BUgorICBmaQorZmkKIAogCiAjIHR3ZWFrIEFSRkxBR1Mgb25seSBpZiB0aGUgdXNlciBkaWRuJ3Qgc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUKQEAgLTUxODUsMTYgKzU4NDAsMTggQEAKICAgICAgICAgQVJGTEFHUz0icmMiCiBmaQogCi0KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3ZudmVyc2lvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgc3ZudmVyc2lvbjsgYWNfd29yZD0kMgoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiByZWFkZWxmCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX1NWTlZFUlNJT04rOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkU1ZOVkVSU0lPTiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSIkU1ZOVkVSU0lPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRSRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX1JFQURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUyMDMsNyArNTg2MCw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX1NWTlZFUlNJT049ImZvdW5kIgorICAgIGFjX2N2X3Byb2dfUkVBREVMRj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTIxMSw1NyArNTg2OCwzNCBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1ZOVkVSU0lPTiIgJiYgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSJub3QtZm91bmQiCiBmaQogZmkKLVNWTlZFUlNJT049JGFjX2N2X3Byb2dfU1ZOVkVSU0lPTgotaWYgdGVzdCAtbiAiJFNWTlZFUlNJT04iOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1ZOVkVSU0lPTiIgPiY1Ci0kYXNfZWNobyAiJFNWTlZFUlNJT04iID4mNjsgfQorUkVBREVMRj0kYWNfY3ZfcHJvZ19SRUFERUxGCitpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFERUxGIiA+JjUKKyRhc19lY2hvICIkUkVBREVMRiIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogCi1pZiB0ZXN0ICRTVk5WRVJTSU9OID0gZm91bmQKLXRoZW4KLQlTVk5WRVJTSU9OPSJzdm52ZXJzaW9uIFwkKHNyY2RpcikiCi1lbHNlCi0JU1ZOVkVSU0lPTj0iZWNobyBVbnZlcnNpb25lZCBkaXJlY3RvcnkiCisgICAgdGVzdCAtbiAiJFJFQURFTEYiICYmIGJyZWFrCisgIGRvbmUKIGZpCi0KLQotaWYgdGVzdCAiJGFic19zcmNkaXIiICE9ICIkYWJzX2J1aWxkZGlyIjsgdGhlbgotICAgICMgSWYgd2UncmUgYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcKLSAgICAjIHJlc291cmNlcyBnZXQgcGlja2VkIHVwIGJlZm9yZSB0aGVpciAkc3JjZGlyIGNvdW50ZXJwYXJ0cy4KLSAgICAjICAgT2JqZWN0cy8gLT4gdHlwZXNsb3RzLmluYwotICAgICMgICBJbmNsdWRlLyAtPiBQeXRob24tYXN0LmgsIGdyYW1pbml0LmgKLSAgICAjICAgUHl0aG9uLyAgLT4gaW1wb3J0bGliLmgKLSAgICAjIChBIHNpZGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB0aGVzZSByZXNvdXJjZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCi0gICAgIyAgcmVnZW5lcmF0ZWQgd2hlbiBidWlsZGluZyBvdXQtb2YtdHJlZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdAotICAgICMgIHRoZSAkc3JjZGlyIGNvdW50ZXJwYXJ0IGlzIHVwLXRvLWRhdGUuICBUaGlzIGlzIGFuIGFjY2VwdGFibGUgdHJhZGUKLSAgICAjICBvZmYuKQotICAgIEJBU0VDUFBGTEFHUz0iLUlPYmplY3RzIC1JSW5jbHVkZSAtSVB5dGhvbiIKLWVsc2UKLSAgICBCQVNFQ1BQRkxBR1M9IiIKLWZpCi0KLQotCi0KLQotaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQotdGhlbgotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJoZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgaGc7IGFjX3dvcmQ9JDIKK2lmIHRlc3QgLXogIiRSRUFERUxGIjsgdGhlbgorICBhY19jdF9SRUFERUxGPSRSRUFERUxGCisgIGZvciBhY19wcm9nIGluIHJlYWRlbGYKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgotICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9SRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUyNzAsNyArNTkwNCw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSIkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01Mjc4LDM0ICs1OTEyLDQ0IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19IQVNfSEciICYmIGFjX2N2X3Byb2dfSEFTX0hHPSJub3QtZm91bmQiCiBmaQogZmkKLUhBU19IRz0kYWNfY3ZfcHJvZ19IQVNfSEcKLWlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0hHIiA+JjUKLSRhc19lY2hvICIkSEFTX0hHIiA+JjY7IH0KK2FjX2N0X1JFQURFTEY9JGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRgoraWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkVBREVMRiIgPiY1CiskYXNfZWNobyAiJGFjX2N0X1JFQURFTEYiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIAotZWxzZQotSEFTX0hHPW5vLXJlcG9zaXRvcnkKKyAgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9SRUFERUxGIiA9IHg7IHRoZW4KKyAgICBSRUFERUxGPSI6IgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIFJFQURFTEY9JGFjX2N0X1JFQURFTEYKKyAgZmkKIGZpCi1pZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAotdGhlbgotICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKLSAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKLSAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKLWVsc2UKLSAgICBIR1ZFUlNJT049IiIKLSAgICBIR1RBRz0iIgotICAgIEhHQlJBTkNIPSIiCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgY2FzZSAiJFJFQURFTEYiIGluCisJcmVhZGVsZnw6KQorCWFzX2ZuX2Vycm9yICQ/ICJyZWFkZWxmIGZvciB0aGUgaG9zdCBpcyByZXF1aXJlZCBmb3IgY3Jvc3MgYnVpbGRzIiAiJExJTkVOTyIgNQorCTs7CisgICAgZXNhYwogZmkKIAogCisKIGZvciBhY19wcm9nIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24KIGRvCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpAQCAtNTM2NCwzNSArNjAwOCw2IEBACiAJCUlOU1RBTEw9IiR7c3JjZGlyfS9pbnN0YWxsLXNoIC1jIgogCWZpCiBlc2FjCi1hY19hdXhfZGlyPQotZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotICAgIGJyZWFrCi0gIGZpCi1kb25lCi1pZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKLWZpCi0KLSMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAotIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgotIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5Ci0jIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCi1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLWFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLQotCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC01NzA2LDEwICs2MzIxLDUzIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZy4uLiAiID4mNjsgfQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcmVzdWx0IC1XZXJyb3IiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtNTc4NSw3ICs2NDQzLDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLlswLTldKlwpLiovXDEvJ2AKLQkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yOyB0aGVuCisJICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMiAmJiBcCisJICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPCcgMTAuNgorCSAgICB0aGVuCiAJCSAgICBjdXJfdGFyZ2V0PTEwLjMKIAkJICAgIGlmIHRlc3QgJHtlbmFibGVfdW5pdmVyc2Fsc2RrfTsgdGhlbgogCQkJICAgIGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiYWxsIjsgdGhlbgpAQCAtNTgyNCw5ICs2NDg0LDYgQEAKIAkgICAgRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nJwogCiAJICAgIDs7Ci0JT1NGKikKLQkgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgotCSAgICA7OwogICAgIGVzYWMKICAgICA7OwogCkBAIC01ODM1LDkgKzY0OTIsNiBAQAogICAgIE9wZW5VTklYKnxVbml4V2FyZSopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLUsgcGVudGl1bSxob3N0LGlubGluZSxsb29wX3Vucm9sbCxhbGxvY2EgIgogCTs7Ci0gICAgT1NGKikKLQlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtaWVlZSAtc3RkIgotICAgIAk7OwogICAgIFNDT19TViopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWJlbGYgLUtpNDg2IC1EU0NPNSIKIAk7OwpAQCAtNTkxMCw2ICs2NTY0LDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNTk2NSw2ICs2NjIwLDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNjAxNCw2ICs2NjcwLDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNjA2Myw2ICs2NzIwLDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNjI0NywxNyArNjkwNSwyMCBAQAogCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGN1cnNlcy5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKLWllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAoraWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCi1zeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAotc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKLXN5cy9zeXNjYWxsLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAotc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCi1zeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCitwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKK3N5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXAorc3lzL2tlcm5fY29udHJvbC5oIHN5cy9sb2FkYXZnLmggc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCitzeXMvcGFyYW0uaCBzeXMvc2VsZWN0Lmggc3lzL3NlbmRmaWxlLmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggXAorc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAorc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCitsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAogYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC02MjcxLDYgKzY5MzIsNyBAQAogCiBkb25lCiAKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiBhY19oZWFkZXJfZGlyZW50PW5vCiBmb3IgYWNfaGRyIGluIGRpcmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfaGRyIiB8ICRhc190cl9zaGAKQEAgLTY0ODAsNiArNzE0MiwzNCBAQAogZmkKIAogCisjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgorZm9yIGFjX2hlYWRlciBpbiBuZXQvaWYuaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAibmV0L2lmLmgiICJhY19jdl9oZWFkZXJfbmV0X2lmX2giICIjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0X2lmX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ORVRfSUZfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIGZvciBhY19oZWFkZXIgaW4gdGVybS5oCiBkbyA6CkBAIC02NTIxLDYgKzcyMTEsMjYgQEAKIGRvbmUKIAogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitmb3IgYWNfaGVhZGVyIGluIGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCiAjIGNoZWNrcyBmb3IgdHlwZWRlZnMKIHdhc19pdF9kZWZpbmVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja190IGluIHRpbWUuaCIgPiY1CkBAIC02NTQ1LDcgKzcyNTUsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXNfaXRfZGVmaW5lZCIgPiY1CiAkYXNfZWNobyAiJHdhc19pdF9kZWZpbmVkIiA+JjY7IH0KIAotIyBDaGVjayB3aGV0aGVyIHVzaW5nIG1ha2VkZXYgcmVxdWlyZXMgZGVmaW5pbmcgX09TRl9TT1VSQ0UKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ha2VkZXYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1ha2VkZXYuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTY1NzYsMzUgKzcyODUsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNkZWZpbmUgX09TRl9TT1VSQ0UgMQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi1pbnQKLW1haW4gKCkKLXsKLSBtYWtlZGV2KDAsIDApCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGFzX21ha2VkZXY9eWVzCi1lbHNlCi0gIGFjX2N2X2hhc19tYWtlZGV2PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgX09TRl9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBmaQotZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGFzX21ha2VkZXYiID4mNQogJGFzX2VjaG8gIiRhY19jdl9oYXNfbWFrZWRldiIgPiY2OyB9CiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KQEAgLTY4NTIsNiArNzUzMiwxMyBAQAogCiBmaQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJfX3VpbnQxMjhfdCIgImFjX2N2X3R5cGVfX191aW50MTI4X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9fX3VpbnQxMjhfdCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfVUlOVDEyOF9UIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAKICMgU2l6ZXMgb2YgdmFyaW91cyBjb21tb24gYmFzaWMgdHlwZXMKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CkBAIC03Njk3LDExICs4Mzg0LDYgQEAKIAogCiAKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBTSExJQl9FWFQgIiRTTyIKLV9BQ0VPRgotCiAjIExEU0hBUkVEIGlzIHRoZSBsZCAqY29tbWFuZCogdXNlZCB0byBjcmVhdGUgc2hhcmVkIGxpYnJhcnkKICMgLS0gImNjIC1HIiBvbiBTdW5PUyA1LngsICJsZCAtc2hhcmVkIiBvbiBJUklYIDUKICMgKFNoYXJlZCBsaWJyYXJpZXMgaW4gdGhpcyBpbnN0YW5jZSBhcmUgc2hhcmVkIG1vZHVsZXMgdG8gYmUgbG9hZGVkIGludG8KQEAgLTc3MzIsNyArODQxNCw2IEBACiAJCWVsc2UKIAkJCUxEU0hBUkVEPSdsZCAtYicKIAkJZmkgOzsKLQlPU0YqKSBMRFNIQVJFRD0ibGQgLXNoYXJlZCAtZXhwZWN0X3VucmVzb2x2ZWQgXCIqXCIiOzsKIAlEYXJ3aW4vMS4zKikKIAkJTERTSEFSRUQ9JyQoQ0MpIC1idW5kbGUnCiAJCUxEQ1hYU0hBUkVEPSckKENYWCkgLWJ1bmRsZScKQEAgLTc5NzEsNiArODY1Miw1MSBAQAogCiAKICMgY2hlY2tzIGZvciBsaWJyYXJpZXMKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNlbmRmaWxlIGluIC1sc2VuZGZpbGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlbmRmaWxlIGluIC1sc2VuZGZpbGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxzZW5kZmlsZSAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgc2VuZGZpbGUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBzZW5kZmlsZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJTRU5ERklMRSAxCitfQUNFT0YKKworICBMSUJTPSItbHNlbmRmaWxlICRMSUJTIgorCitmaQorCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfbGliX2RsX2Rsb3Blbis6fSBmYWxzZTsgdGhlbiA6CkBAIC04NDM5LDYgKzkxNjUsMjEgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9zeXN0ZW1fZmZpIiA+JjUKICRhc19lY2hvICIkd2l0aF9zeXN0ZW1fZmZpIiA+JjY7IH0KIAorIyBDaGVjayBmb3IgdXNlIG9mIHRoZSBzeXN0ZW0gbGlibXBkZWMgbGlicmFyeQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYy4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3RlbV9saWJtcGRlYyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2xpYm1wZGVjK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9zeXN0ZW1fbGlibXBkZWM7CitlbHNlCisgIHdpdGhfc3lzdGVtX2xpYm1wZGVjPSJubyIKK2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3N5c3RlbV9saWJtcGRlYyIgPiY1CiskYXNfZWNobyAiJHdpdGhfc3lzdGVtX2xpYm1wZGVjIiA+JjY7IH0KKwogIyBDaGVjayBmb3Igc3VwcG9ydCBmb3IgbG9hZGFibGUgc3FsaXRlIGV4dGVuc2lvbnMKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0tZW5hYmxlLWxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucy4uLiAiID4mNjsgfQpAQCAtODUwNiwyMyArOTI0Nyw2IEBACiAKIFVTRV9USFJFQURfTU9EVUxFPSIiCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kZWMtdGhyZWFkcyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWRlYy10aHJlYWRzLi4uICIgPiY2OyB9Ci0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kZWMtdGhyZWFkcyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfZGVjX3RocmVhZHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX2RlY190aHJlYWRzOwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRodmFsIiA+JjUKLSRhc19lY2hvICIkd2l0aHZhbCIgPiY2OyB9Ci1MRExBU1Q9LXRocmVhZHMKLWlmIHRlc3QgIiR7d2l0aF90aHJlYWQrc2V0fSIgIT0gc2V0OyB0aGVuCi0gICB3aXRoX3RocmVhZD0iJHdpdGh2YWwiOwotZmkKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQogCiAKICMgVGVtcGxhdGVzIGZvciB0aGluZ3MgQUNfREVGSU5FZCBtb3JlIHRoYW4gb25jZS4KQEAgLTg1MzAsNyArOTI1NCw2IEBACiAKIAogCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC10aHJlYWRzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdGhyZWFkcy4uLiAiID4mNjsgfQogCkBAIC04NjMyLDMxICs5MzU1LDYgQEAKIAogICAgICRhc19lY2hvICIjZGVmaW5lIF9SRUVOVFJBTlQgMSIgPj5jb25mZGVmcy5oCiAKLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiY3RocmVhZHMuaCIgImFjX2N2X2hlYWRlcl9jdGhyZWFkc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9jdGhyZWFkc19oIiA9IHh5ZXM7IHRoZW4gOgotICAkYXNfZWNobyAiI2RlZmluZSBXSVRIX1RIUkVBRCAxIiA+PmNvbmZkZWZzLmgKLQotICAgICRhc19lY2hvICIjZGVmaW5lIENfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIVVJEX0NfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIExJQlM9IiRMSUJTIC1sdGhyZWFkcyIKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyIKLWVsc2UKLQotICAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJtYWNoL2N0aHJlYWRzLmgiICJhY19jdl9oZWFkZXJfbWFjaF9jdGhyZWFkc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9tYWNoX2N0aHJlYWRzX2giID0geHllczsgdGhlbiA6Ci0gICRhc19lY2hvICIjZGVmaW5lIFdJVEhfVEhSRUFEIDEiID4+Y29uZmRlZnMuaAotCi0gICAgJGFzX2VjaG8gIiNkZWZpbmUgQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0KLSRhc19lY2hvICIjZGVmaW5lIE1BQ0hfQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCi1lbHNlCi0KICAgICAjIEp1c3QgbG9va2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gbGlicHRocmVhZCBpcyBub3QgZW5vdWdoOgogICAgICMgb24gSFAvVVgsIHB0aHJlYWQuaCByZW5hbWVzIHB0aHJlYWRfY3JlYXRlIHRvIGEgZGlmZmVyZW50IHN5bWJvbCBuYW1lLgogICAgICMgU28gd2UgcmVhbGx5IGhhdmUgdG8gaW5jbHVkZSBwdGhyZWFkLmgsIGFuZCB0aGVuIGxpbmsuCkBAIC04NjY2LDYgKzkzNjQsOCBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZC4uLiAiID4mNjsgfQogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogCiB2b2lkICogc3RhcnRfcm91dGluZSAodm9pZCAqYXJnKSB7IGV4aXQgKDApOyB9CkBAIC04ODg4LDEyICs5NTg4LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLQotCi1maQotCi0KIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVzY29uZmlnIGluIC1sbXBjIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciB1c2NvbmZpZyBpbiAtbG1wYy4uLiAiID4mNjsgfQpAQCAtODk4NiwxNSArOTY4MCw2IEBACiBmaQogCiAgICAgZmkKLQotICAgIGlmIHRlc3QgIiRVU0VfVEhSRUFEX01PRFVMRSIgIT0gIiMiCi0gICAgdGhlbgotICAgICAgICAjIElmIHRoZSBhYm92ZSBjaGVja3MgZGlkbid0IGRpc2FibGUgdGhyZWFkcywgKGF0IGxlYXN0KSBPU0YxCi0gICAgICAgICMgbmVlZHMgdGhpcyAnLXRocmVhZHMnIGFyZ3VtZW50IGR1cmluZyBsaW5raW5nLgotICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0gICAgICAgIE9TRjEpIExETEFTVD0tdGhyZWFkczs7Ci0gICAgICAgIGVzYWMKLSAgICBmaQogZmkKIAogaWYgdGVzdCAiJHBvc2l4X3RocmVhZHMiID0gInllcyI7IHRoZW4KQEAgLTkwMzAsNyArOTcxNSw5IEBACiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICAgI2luY2x1ZGUgPHB0aHJlYWQuaD4KICAgICAgIHZvaWQgKmZvbyh2b2lkICpwYXJtKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgfQpAQCAtOTQyMCwxMyArMTAxMDcsMTMgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIFdJVEhfUFlNQUxMT0MgMSIgPj5jb25mZGVmcy5oCiAKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9weW1hbGxvYyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfcHltYWxsb2MiID4mNjsgfQpAQCAtOTUyNCwyNCArMTAyMTEsMzcgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogTUFDSERFUF9PQkpTIiA+JjUKLSRhc19lY2hvICJNQUNIREVQX09CSlMiID4mNjsgfQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUiID4mNQorJGFzX2VjaG8gIm5vbmUiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BQ0hERVBfT0JKUyIgPiY1CiskYXNfZWNobyAiJE1BQ0hERVBfT0JKUyIgPiY2OyB9CitmaQogCiAjIGNoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMKIGZvciBhY19mdW5jIGluIGFsYXJtIGFjY2VwdDQgc2V0aXRpbWVyIGdldGl0aW1lciBiaW5kX3RleHRkb21haW5fY29kZXNldCBjaG93biBcCi0gY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZjaG1vZCBmY2hvd24gZm9yayBmcGF0aGNvbmYgZnRpbWUgZnRydW5jYXRlIFwKLSBnYWlfc3RyZXJyb3IgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAorIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmYWNjZXNzYXQgZmNobW9kIGZjaG1vZGF0IGZjaG93biBmY2hvd25hdCBcCisgZmV4ZWN2ZSBmZG9wZW5kaXIgZm9yayBmcGF0aGNvbmYgZnN0YXRhdCBmdGltZSBmdHJ1bmNhdGUgZnV0aW1lc2F0IFwKKyBmdXRpbWVucyBmdXRpbWVzIGdhaV9zdHJlcnJvciBcCisgZ2V0Z3JvdXBsaXN0IGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKICBnZXRwcmlvcml0eSBnZXRyZXN1aWQgZ2V0cmVzZ2lkIGdldHB3ZW50IGdldHNwbmFtIGdldHNwZW50IGdldHNpZCBnZXR3ZCBcCi0gaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxzdGF0IG1icnRvd2MgbWtmaWZvIG1rbm9kIG1rdGltZSBcCi0gbXJlbWFwIG5pY2UgcGF0aGNvbmYgcGF1c2UgcGxvY2sgcG9sbCBwdGhyZWFkX2luaXQgXAotIHB1dGVudiByZWFkbGluayByZWFscGF0aCBcCi0gc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2V0ZWdpZCBzZXRldWlkIFwKLSBzZXRnaWQgXAotIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0dWlkIHNldHZidWYgXAotIHNpZ2FjdGlvbiBzaWdpbnRlcnJ1cHQgc2lncmVsc2Ugc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBcCisgaWZfbmFtZWluZGV4IFwKKyBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbG9ja2YgbGlua2F0IGxzdGF0IGx1dGltZXMgbW1hcCBcCisgbWVtcmNociBtYnJ0b3djIG1rZGlyYXQgbWtmaWZvIFwKKyBta2ZpZm9hdCBta25vZCBta25vZGF0IG1rdGltZSBtcmVtYXAgbmljZSBvcGVuYXQgcGF0aGNvbmYgcGF1c2UgcGlwZTIgcGxvY2sgcG9sbCBcCisgcG9zaXhfZmFsbG9jYXRlIHBvc2l4X2ZhZHZpc2UgcHJlYWQgXAorIHB0aHJlYWRfaW5pdCBwdGhyZWFkX2tpbGwgcHV0ZW52IHB3cml0ZSByZWFkbGluayByZWFkbGlua2F0IHJlYWR2IHJlYWxwYXRoIHJlbmFtZWF0IFwKKyBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZW5kZmlsZSBzZXRlZ2lkIHNldGV1aWQgXAorIHNldGdpZCBzZXRob3N0bmFtZSBcCisgc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXRwcmlvcml0eSBzZXR1aWQgc2V0dmJ1ZiBcCisgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCBzY2hlZF9zZXRhZmZpbml0eSBzY2hlZF9zZXRzY2hlZHVsZXIgc2NoZWRfc2V0cGFyYW0gXAorIHNjaGVkX3JyX2dldF9pbnRlcnZhbCBcCisgc2lnYWN0aW9uIHNpZ2FsdHN0YWNrIHNpZ2ludGVycnVwdCBzaWdwZW5kaW5nIHNpZ3JlbHNlIFwKKyBzaWd0aW1lZHdhaXQgc2lnd2FpdCBzaWd3YWl0aW5mbyBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IHN5bWxpbmthdCBzeW5jIFwKICBzeXNjb25mIHRjZ2V0cGdycCB0Y3NldHBncnAgdGVtcG5hbSB0aW1lZ20gdGltZXMgdG1wZmlsZSB0bXBuYW0gdG1wbmFtX3IgXAotIHRydW5jYXRlIHVuYW1lIHVuc2V0ZW52IHV0aW1lcyB3YWl0cGlkIHdhaXQzIHdhaXQ0IFwKLSB3Y3Njb2xsIHdjc2Z0aW1lIHdjc3hmcm0gX2dldHB0eQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eQogZG8gOgogICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKQEAgLTk3NDEsNiArMTA0NDEsMzEgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgoraW50CittYWluICgpCit7Cit2b2lkICp4PWVwb2xsX2NyZWF0ZTEKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0VQT0xMX0NSRUFURTEgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBrcXVldWUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGtxdWV1ZS4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA3MTUsNiArMTE0NDAsMTI1IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19nZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19nZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX2dldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIFRJTUVNT0RVTEVfTElCIHJ0IiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKK2ZpCitkb25lCisKKworZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0cmVzCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHJlcyIgImFjX2N2X2Z1bmNfY2xvY2tfZ2V0cmVzIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHJlcyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX0dFVFJFUyAxCitfQUNFT0YKKworZWxzZQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfZ2V0cmVzIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHJlcyBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBjbG9ja19nZXRyZXMgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXRyZXMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRSRVMgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA3OTIsMTEgKzExNjM2LDE3IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKworaWYgdGVzdCAiJHtlbmFibGVfaXB2NitzZXR9IiA9IHNldDsgdGhlbgorICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz0ibm8gLS0gY29uZmlndXJlZCB3aXRoIC0tKGVufGRpcylhYmxlLWlwdjYiCitlbHNlCiAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllcworZmkKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTA5MDAsNyArMTE3NTAsNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA+JjY7IH0KIAotaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIC1vICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCitpZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gfHwgdGVzdCAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcwogdGhlbgogCWlmIHRlc3QgJGlwdjYgPSB5ZXMKIAl0aGVuCkBAIC0xMTg3MSw2ICsxMjcyMSw0MCBAQAogZmkKIAogCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ2hlY2sgZm9yIGdjYyB4NjQgaW5saW5lIGFzc2VtYmxlciAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgibW92cSAlcmN4LCAlcmF4Iik7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2djY19hc21fZm9yX3g2ND15ZXMKK2Vsc2UKKyAgaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNQorJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPiY2OyB9CitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0NDX0FTTV9GT1JfWDY0IDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAjICogQ2hlY2sgZm9yIHZhcmlvdXMgcHJvcGVydGllcyBvZiBmbG9hdGluZyBwb2ludCAqCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMjEyMSw3ICsxMzAwNSw3IEBACiBmaQogZG9uZQogCi1mb3IgYWNfZnVuYyBpbiBoeXBvdCBsZ2FtbWEgbG9nMXAgcm91bmQgdGdhbW1hCitmb3IgYWNfZnVuYyBpbiBoeXBvdCBsZ2FtbWEgbG9nMXAgbG9nMiByb3VuZCB0Z2FtbWEKIGRvIDoKICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCkBAIC0xMjUyOCw2NSArMTM0MTIsMTkgQEAKICRhc19lY2hvICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID4mNjsgfQogZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGF0IHR5cGUgdG8gdXNlIGZvciBzdHIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtd2lkZS11bmljb2RlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF93aWRlX3VuaWNvZGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3dpZGVfdW5pY29kZTsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbiB1bmljb2RlX3NpemU9IjQiCi1lbHNlIHVuaWNvZGVfc2l6ZT0iMiIKLWZpCi0KLWVsc2UKLQotY2FzZSAiJGhhdmVfdWNzNF90Y2wiIGluCi0gIHllcykgdW5pY29kZV9zaXplPSI0Ijs7Ci0gICopICAgdW5pY29kZV9zaXplPSIyIiA7OwotZXNhYwotCi1maQotCi0KLQotY2FzZSAiJHVuaWNvZGVfc2l6ZSIgaW4KLSAgNCkKLSAgICAgJGFzX2VjaG8gIiNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIDQiID4+Y29uZmRlZnMuaAotCi0gICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfXUiCi0gICAgIDs7Ci0gICopICRhc19lY2hvICIjZGVmaW5lIFB5X1VOSUNPREVfU0laRSAyIiA+PmNvbmZkZWZzLmgKLSA7OwotZXNhYwotCi0KLQogIyB3Y2hhcl90IGlzIG9ubHkgdXNhYmxlIGlmIGl0IG1hcHMgdG8gYW4gdW5zaWduZWQgdHlwZQotaWYgdGVzdCAiJHVuaWNvZGVfc2l6ZSIgPSAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiBcCitpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIC1nZSAyIFwKICAgICAgICAgICAtYSAiJGFjX2N2X3djaGFyX3Rfc2lnbmVkIiA9ICJubyIKIHRoZW4KLSAgUFlfVU5JQ09ERV9UWVBFPSJ3Y2hhcl90IgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJ5ZXMiCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfVVNBQkxFX1dDSEFSX1QgMSIgPj5jb25mZGVmcy5oCiAKLSAgJGFzX2VjaG8gIiNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHdjaGFyX3QiID4+Y29uZmRlZnMuaAotCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc2hvcnQiID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgc2hvcnQiCi0gICAgICRhc19lY2hvICIjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB1bnNpZ25lZCBzaG9ydCIgPj5jb25mZGVmcy5oCi0KLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIGxvbmciCi0gICAgICRhc19lY2hvICIjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB1bnNpZ25lZCBsb25nIiA+PmNvbmZkZWZzLmgKLQogZWxzZQotICAgICBQWV9VTklDT0RFX1RZUEU9Im5vIHR5cGUgZm91bmQiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9Im5vIHVzYWJsZSB3Y2hhcl90IGZvdW5kIgogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlfVU5JQ09ERV9UWVBFIiA+JjUKLSRhc19lY2hvICIkUFlfVU5JQ09ERV9UWVBFIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFWRV9VU0FCTEVfV0NIQVJfVCIgPiY1CiskYXNfZWNobyAiJEhBVkVfVVNBQkxFX1dDSEFSX1QiID4mNjsgfQogCiAjIGNoZWNrIGZvciBlbmRpYW5uZXNzCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKQEAgLTEyODc4LDYgKzEzNzE2LDEyIEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFNPIiA+JjUKICRhc19lY2hvICIkU08iID4mNjsgfQogCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0hMSUJfRVhUICIkU08iCitfQUNFT0YKKworCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CiAjIG9yIGZpbGxzIHdpdGggemVyb3MgKGxpa2UgdGhlIENyYXkgSjkwLCBhY2NvcmRpbmcgdG8gVGltIFBldGVycykuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcmlnaHQgc2hpZnQgZXh0ZW5kcyB0aGUgc2lnbiBiaXQiID4mNQpAQCAtMTI5NjksNyArMTM4MTMsNyBAQAogcHlfY3ZfbGliX3JlYWRsaW5lPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBsaW5rIHJlYWRsaW5lIGxpYnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlicy4uLiAiID4mNjsgfQotZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KK2ZvciBweV9saWJ0ZXJtY2FwIGluICIiIHRpbmZvIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCiAgIGlmIHRlc3QgLXogIiRweV9saWJ0ZXJtY2FwIjsgdGhlbgogICAgIFJFQURMSU5FX0xJQlM9Ii1scmVhZGxpbmUiCiAgIGVsc2UKQEAgLTEzNTk5LDYgKzE0NDQzLDggQEAKIAogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG12d2RlbGNoIGlzIGFuIGV4cHJlc3Npb24iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uLi4uICIgPiY2OyB9CkBAIC0xMzc1MiwzNSArMTQ1OTgsNzYgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzIiA+JjY7fQorCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IHNldCIgPiY1CiskYXNfZWNobyAibm90IHNldCIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gInNldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdGMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRjLi4uICIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBzZXQiID4mNQorJGFzX2VjaG8gIm5vdCBzZXQiID4mNjsgfQorICAgIGFzX2ZuX2Vycm9yICQ/ICJzZXQgYWNfY3ZfZmlsZV9fZGV2X3B0YyB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyAmJgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNoZWNrIGZvciBmaWxlIGV4aXN0ZW5jZSB3aGVuIGNyb3NzIGNvbXBpbGluZyIgIiRMSU5FTk8iIDUKK2lmIHRlc3QgLXIgIi9kZXYvcHRteCI7IHRoZW4KKyAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PW5vCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID4mNQorJGFzX2VjaG8gIiRhY19jdl9maWxlX19kZXZfcHRteCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4gOgogCi1pZiB0ZXN0IC1yIC9kZXYvcHRteAotdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworaWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRteCIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUTVggMSIgPj5jb25mZGVmcy5oCiAKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgL2Rldi9wdGMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0Yys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY2hlY2sgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQoraWYgdGVzdCAtciAiL2Rldi9wdGMiOyB0aGVuCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8KK2ZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9maWxlX19kZXZfcHRjIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbiA6CiAKLWlmIHRlc3QgLXIgL2Rldi9wdGMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCisKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUQyAxIiA+PmNvbmZkZWZzLmgKIAotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTEzNzkxLDcgKzE0Njc4LDM2IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vCisgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CisgICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KKworaW50CittYWluICgpCit7CisKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaQogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0xMzk1MCw2ICsxNDg2Niw3IEBACiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZTxzdGRsaWIuaD4KIGludCBtYWluKCkgewogICAgIHNpemVfdCBsZW4gPSAtMTsKQEAgLTEzOTc5LDQ5ICsxNDg5Niw2IEBACiAKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPXllcwotZWxzZQotICBhY19jdl9jb21wdXRlZF9nb3Rvcz1ubwotZmkKLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKLWZpCi0KLWZpCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNQotJGFzX2VjaG8gIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPiY2OyB9Ci1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ09NUFVURURfR09UT1MgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MuLi4gIiA+JjY7IH0KQEAgLTE0MDUyLDYgKzE0OTI2LDUyIEBACiBmaQogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGlmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaQorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBzdGF0aWMgdm9pZCAqdGFyZ2V0c1sxXSA9IHsgJiZMQUJFTDEgfTsKKyAgICBnb3RvIExBQkVMMjsKK0xBQkVMMToKKyAgICByZXR1cm4gMDsKK0xBQkVMMjoKKyAgICBnb3RvICp0YXJnZXRzWzBdOworICAgIHJldHVybiAxOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jb21wdXRlZF9nb3Rvcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNjsgfQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE9TIDEiID4+Y29uZmRlZnMuaAorCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopCiAKQEAgLTE0MDYwLDE4ICsxNDk4MCw2IEBACiBlc2FjCiAKIAotY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICBPU0YqKSBhc19mbl9lcnJvciAkPyAiT1NGKiBzeXN0ZW1zIGFyZSBkZXByZWNhdGVkIHVubGVzcyBzb21lYm9keSB2b2x1bnRlZXJzLiBDaGVjayBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNiIgIiRMSU5FTk8iIDUgOzsKLWVzYWMKLQotYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAicGlwZTIiICJhY19jdl9mdW5jX3BpcGUyIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX3BpcGUyIiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1BJUEUyIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi0KIAogCiBmb3IgaCBpbiBgKGNkICRzcmNkaXI7ZWNobyBQeXRob24vdGhyZWFkXyouaClgCkBAIC0xNDA5MSw2ICsxNDk5OSwxMzYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBkb25lIiA+JjUKICRhc19lY2hvICJkb25lIiA+JjY7IH0KIAorIyBBdmFpbGFiaWxpdHkgb2YgLU8yOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLU8yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtTzIuLi4gIiA+JjY7IH0KK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9PMj15ZXMKK2Vsc2UKKyAgaGF2ZV9PMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX08yIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9PMiIgPiY2OyB9CitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsaWJjIF9GT1JUSUZZX1NPVVJDRS9tZW1tb3ZlIGJ1ZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnLi4uICIgPiY2OyB9CitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGhhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ubworZWxzZQorICBoYXZlX2dsaWJjX21lbW1vdmVfYnVnPXllcworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnLi4uICIgPiY2OyB9CisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKKyAgICAgICAgICAgIGZvbyhpbnQgKnApIHsKKyAgICAgICAgICAgICAgaW50IHI7CisgICAgICAgICAgICAgIGFzbSAoICJtb3ZsIFwkNiwgKCUxKVxuXHQiCisgICAgICAgICAgICAgICAgICAgICJ4b3JsICUwLCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAgIDogIj1yIiAocikgOiAiciIgKHApIDogIm1lbW9yeSIKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgICAgICAgaW50IHAgPSA4OworICAgICAgICAgICAgICBpZiAoKGZvbygmcCkgPyA6IHApICE9IDYpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz1ubworZWxzZQorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXMKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9pcGFfcHVyZV9jb25zdF9idWciID4mNjsgfQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRyAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyIKIApAQCAtMTQ2MDMsNyArMTU2NDEsNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjIsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNDY2NSw3ICsxNTcwMyw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy4yCitweXRob24gY29uZmlnLnN0YXR1cyAzLjMKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA1YWUwZDVhLi5mZTM3NDE5IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDIyICszLDc3IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMikKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy4zKQogCi1kbmwgU29tZSBtNCBtYWdpYyB0byBlbnN1cmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBpcyBnZW5lcmF0ZWQKLWRubCBieSB0aGUgY29ycmVjdCBhdXRvY29uZiB2ZXJzaW9uLgotbTRfZGVmaW5lKFt2ZXJzaW9uX3JlcXVpcmVkXSwKLVttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJTSU9OXSksIFskMV0pLCAwLAotICAgICAgIFtdLAotICAgICAgIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAkMSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uXSwgNjMpXSkKLV0pCiBBQ19QUkVSRVEoMi42NSkKIAotQUNfUkVWSVNJT04oJFJldmlzaW9uJCkKIEFDX0lOSVQocHl0aG9uLCBQWVRIT05fVkVSU0lPTiwgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8pCisKK0FDX1NVQlNUKEJBU0VDUFBGTEFHUykKK2lmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KKyAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCisgICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCisgICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKKyAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCisgICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCisgICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQorICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCisgICAgIyAgb2ZmLikKKyAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCitlbHNlCisgICAgQkFTRUNQUEZMQUdTPSIiCitmaQorCitBQ19TVUJTVChIR1ZFUlNJT04pCitBQ19TVUJTVChIR1RBRykKK0FDX1NVQlNUKEhHQlJBTkNIKQorCitpZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCit0aGVuCitBQ19DSEVDS19QUk9HKEhBU19IRywgaGcsIGZvdW5kLCBub3QtZm91bmQpCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKIEFDX0NPTkZJR19TUkNESVIoW0luY2x1ZGUvb2JqZWN0LmhdKQogQUNfQ09ORklHX0hFQURFUihweWNvbmZpZy5oKQogCitBQ19DQU5PTklDQUxfSE9TVAorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGRdKQorICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgorICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCisJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCisJICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgICAgIGJyZWFrCisJICAgIGZpCisgICAgICAgICAgICBpbnRlcnA9CisJZG9uZQorICAgICAgICBpZiB0ZXN0IHgkaW50ZXJwID0geDsgdGhlbgorCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKKwlmaQorICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCisJUFlUSE9OX0ZPUl9CVUlMRD0iX1BZVEhPTl9QUk9KRUNUX0JBU0U9JHNyY2RpciInIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvcGxhdC0kKE1BQ0hERVApICckaW50ZXJwCisgICAgZmkKK2VsaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgorICAgIEFDX01TR19FUlJPUihbQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0hdKQorZWxzZQorICAgIFBZVEhPTl9GT1JfQlVJTEQ9Jy4vJChCVUlMRFBZVEhPTikgLUUnCitmaQorQUNfU1VCU1QoUFlUSE9OX0ZPUl9CVUlMRCkKKwogZG5sIEVuc3VyZSB0aGF0IGlmIHByZWZpeCBpcyBzcGVjaWZpZWQsIGl0IGRvZXMgbm90IGVuZCBpbiBhIHNsYXNoLiBJZgogZG5sIGl0IGRvZXMsIHdlIGdldCBwYXRoIG5hbWVzIGNvbnRhaW5pbmcgJy8vJyB3aGljaCBpcyBib3RoIHVnbHkgYW5kCiBkbmwgY2FuIGNhdXNlIHRyb3VibGUuCkBAIC04OCwxNCArMTQzLDIwIEBACiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC0tZW5hYmxlLXVuaXZlcnNhbHNka10pCiBBQ19BUkdfRU5BQkxFKHVuaXZlcnNhbHNkaywKLQlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pdmVyc2Fsc2RrQDw6QD1TREtESVJAOj5AXSwgW0J1aWxkIGFnYWluc3QgTWFjIE9TIFggMTAuNHUgU0RLIChwcGMvaTM4NildKSwKKwlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pdmVyc2Fsc2RrQDw6QD1TREtESVJAOj5AXSwgW0J1aWxkIGZhdCBiaW5hcnkgYWdhaW5zdCBNYWMgT1MgWCBTREtdKSwKIFsKIAljYXNlICRlbmFibGV2YWwgaW4KIAl5ZXMpCi0JCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCi0JCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkjIExvY2F0ZSB0aGUgYmVzdCB1c2FibGUgU0RLLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkJIyBpbmZvcm1hdGlvbgorCQllbmFibGV2YWw9ImAvdXNyL2Jpbi94Y29kZWJ1aWxkIC12ZXJzaW9uIC1zZGsgbWFjb3N4IFBhdGggMj4vZGV2L251bGxgIgorCQlpZiB0ZXN0IC16ICIke2VuYWJsZXZhbH0iCiAJCXRoZW4KLQkJCWVuYWJsZXZhbD0vCisJCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaworCQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCQl0aGVuCisJCQkJZW5hYmxldmFsPS8KKwkJCWZpCiAJCWZpCiAJCTs7CiAJZXNhYwpAQCAtMTI3LDcgKzE4OCwyMCBAQAogCiBBQ19TVUJTVChBUkNIX1JVTl8zMkJJVCkKIAorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIHdlIHByZWZlciB0byBzZWxlY3QgJzMyLWJpdCcgaWYgYXZhaWxhYmxlLAorIyBvdGhlcndpc2UgdXNlICdpbnRlbCcKIFVOSVZFUlNBTF9BUkNIUz0iMzItYml0IgoraWYgdGVzdCAiYHVuYW1lIC1zYCIgPSAiRGFyd2luIgordGhlbgorCWlmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKKwl0aGVuCisJCWlmIHRlc3QgLXogImAvdXNyL2Jpbi9maWxlICIke1VOSVZFUlNBTFNES30vdXNyL2xpYi9saWJTeXN0ZW0uZHlsaWIiIHwgZ3JlcCBwcGNgIgorCQl0aGVuCisJCQlVTklWRVJTQUxfQVJDSFM9ImludGVsIgorCQlmaQorCWZpCitmaQorCiBBQ19TVUJTVChMSVBPXzMyQklUX0ZMQUdTKQogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzKQogQUNfQVJHX1dJVEgodW5pdmVyc2FsLWFyY2hzLApAQCAtMTM3LDcgKzIxMSw3IEBACiAJVU5JVkVSU0FMX0FSQ0hTPSIkd2l0aHZhbCIKIF0sCiBbCi0gCUFDX01TR19SRVNVTFQoMzItYml0KQorIAlBQ19NU0dfUkVTVUxUKCR7VU5JVkVSU0FMX0FSQ0hTfSkKIF0pCiAKIApAQCAtMjc2LDYgKzM1MCwyNSBAQAogQUNfTVNHX0NIRUNLSU5HKE1BQ0hERVApCiBpZiB0ZXN0IC16ICIkTUFDSERFUCIKIHRoZW4KKyAgICAjIGF2b2lkIHVzaW5nIHVuYW1lIGZvciBjcm9zcyBidWlsZHMKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgICAgICMgYWNfc3lzX3N5c3RlbSBhbmQgYWNfc3lzX3JlbGVhc2UgYXJlIG9ubHkgdXNlZCBmb3Igc2V0dGluZworICAgICAgICMgYGRlZmluZV94b3Blbl9zb3VyY2UnIGluIHRoZSBjYXNlIHN0YXRlbWVudCBiZWxvdy4gRm9yIHRoZQorICAgICAgICMgY3VycmVudCBzdXBwb3J0ZWQgY3Jvc3MgYnVpbGRzLCB0aGlzIG1hY3JvIGlzIG5vdCBhZGp1c3RlZC4KKwljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgqKQorCQlhY19zeXNfc3lzdGVtPUxpbnV4CisJCTs7CisJKi0qLWN5Z3dpbiopCisJCWFjX3N5c19zeXN0ZW09Q3lnd2luCisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJQUNfTVNHX0VSUk9SKFtjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdF0pCisJZXNhYworCWFjX3N5c19yZWxlYXNlPQorICAgIGVsc2UKIAlhY19zeXNfc3lzdGVtPWB1bmFtZSAtc2AKIAlpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiQUlYIiBcCiAJLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJVbml4V2FyZSIgLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJPcGVuVU5JWCI7IHRoZW4KQEAgLTI4MywxOSArMzc2LDQzIEBACiAJZWxzZQogCQlhY19zeXNfcmVsZWFzZT1gdW5hbWUgLXJgCiAJZmkKLQlhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAotCQkJICAgdHIgLWQgJ1svIF0nIHwgdHIgJ1tbQS1aXV0nICdbW2Etel1dJ2AKLQlhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8Ci0JCQkgICB0ciAtZCAnWy8gXScgfCBzZWQgJ3MvXltbQS1aXV1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAotCU1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKKyAgICBmaQorICAgIGFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8CisJCQl0ciAtZCAnWy8gXScgfCB0ciAnW1tBLVpdXScgJ1tbYS16XV0nYAorICAgIGFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKKwkJCXRyIC1kICdbLyBdJyB8IHNlZCAncy9eW1tBLVpdXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCisgICAgTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgogCi0JY2FzZSAkTUFDSERFUCBpbgotCWxpbnV4KikgTUFDSERFUD0ibGludXgyIjs7CisgICAgY2FzZSAkTUFDSERFUCBpbgorCWxpbnV4KikgTUFDSERFUD0ibGludXgiOzsKIAljeWd3aW4qKSBNQUNIREVQPSJjeWd3aW4iOzsKIAlkYXJ3aW4qKSBNQUNIREVQPSJkYXJ3aW4iOzsKLSAgICAgICAgaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKKwlpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OwogCScnKQlNQUNIREVQPSJ1bmtub3duIjs7CisgICAgZXNhYworZmkKKworQUNfU1VCU1QoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgqKQorCQljYXNlICIkaG9zdF9jcHUiIGluCisJCWFybSopCisJCQlfaG9zdF9jcHU9YXJtCisJCQk7OworCQkqKQorCQkJX2hvc3RfY3B1PSRob3N0X2NwdQorCQllc2FjCisJCTs7CisJKi0qLWN5Z3dpbiopCisJCV9ob3N0X2NwdT0KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlBQ19NU0dfRVJST1IoW2Nyb3NzIGJ1aWxkIG5vdCBzdXBwb3J0ZWQgZm9yICRob3N0XSkKIAllc2FjCisJX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSIkTUFDSERFUCR7X2hvc3RfY3B1OistJF9ob3N0X2NwdX0iCiBmaQogCQogIyBTb21lIHN5c3RlbXMgY2Fubm90IHN0YW5kIF9YT1BFTl9TT1VSQ0UgYmVpbmcgZGVmaW5lZCBhdCBhbGw7IHRoZXkKQEAgLTM4Myw3ICs1MDAsOCBAQAogCiBpZiB0ZXN0ICRkZWZpbmVfeG9wZW5fc291cmNlID0geWVzCiB0aGVuCi0gIEFDX0RFRklORShfWE9QRU5fU09VUkNFLCA2MDAsIAorICAjIFgvT3BlbiA3LCBpbmNvcnBvcmF0aW5nIFBPU0lYLjEtMjAwOAorICBBQ19ERUZJTkUoX1hPUEVOX1NPVVJDRSwgNzAwLAogICAgICAgICAgICAgRGVmaW5lIHRvIHRoZSBsZXZlbCBvZiBYL09wZW4gdGhhdCB5b3VyIHN5c3RlbSBzdXBwb3J0cykKIAogICAjIE9uIFRydTY0IFVuaXggNC4wRiwgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRSBhbHNvIHJlcXVpcmVzCkBAIC0zOTMsOCArNTExLDcgQEAKICAgQUNfREVGSU5FKF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQsIDEsCiAgICAJICAgIERlZmluZSB0byBhY3RpdmF0ZSBVbml4OTUtYW5kLWVhcmxpZXIgZmVhdHVyZXMpCiAKLSAgQUNfREVGSU5FKF9QT1NJWF9DX1NPVVJDRSwgMjAwMTEyTCwgRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDAxKQotICAKKyAgQUNfREVGSU5FKF9QT1NJWF9DX1NPVVJDRSwgMjAwODA5TCwgRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDA4KQogZmkKIAogIwpAQCAtNDIzLDEwICs1NDAsNiBAQAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0KIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JyMnCiAKLUFDX01TR19DSEVDS0lORyhtYWNoaW5lIHR5cGUgYXMgcmVwb3J0ZWQgYnkgdW5hbWUgLW0pCi1hY19zeXNfbWFjaGluZT1gdW5hbWUgLW1gCi1BQ19NU0dfUkVTVUxUKCRhY19zeXNfbWFjaGluZSkKLQogIyBjaGVja3MgZm9yIGFsdGVybmF0aXZlIHByb2dyYW1zCiAKICMgY29tcGlsZXIgZmxhZ3MgYXJlIGdlbmVyYXRlZCBpbiB0d28gc2V0cywgQkFTRUNGTEFHUyBhbmQgT1BULiAgT1BUIGlzIGp1c3QKQEAgLTQ2OSw2ICs1ODIsNjMgQEAKIGlmIHRlc3QgLXogIiRDRkxBR1MiOyB0aGVuCiAgICAgICAgIENGTEFHUz0KIGZpCisKK2lmIHRlc3QgIiRhY19zeXNfc3lzdGVtIiA9ICJEYXJ3aW4iCit0aGVuCisJIyBDb21waWxlciBzZWxlY3Rpb24gb24gTWFjT1NYIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbgorCSMgQUNfUFJPR19DQyBjYW4gaGFuZGxlLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkjIGluZm9ybWF0aW9uCisJaWYgdGVzdCAteiAiJHtDQ30iCisJdGhlbgorCQlmb3VuZF9nY2M9CisJCWZvdW5kX2NsYW5nPQorCQlhc19zYXZlX0lGUz0kSUZTOyBJRlM9OgorCQlmb3IgYXNfZGlyIGluICRQQVRICisJCWRvCisJCQlJRlM9JGFzX3NhdmVfSUZTCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvZ2NjOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9nY2N9IjsgdGhlbgorCQkJCQlmb3VuZF9nY2M9JGFzX2Rpci9nY2MKKwkJCQlmaQorCQkJZmkKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9jbGFuZzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfY2xhbmd9IjsgdGhlbgorCQkJCQlmb3VuZF9jbGFuZz0kYXNfZGlyL2NsYW5nCisJCQkJZmkKKwkJCWZpCisJCWRvbmUKKwkJSUZTPSRhc19zYXZlX0lGUworCisJCWlmIHRlc3QgLW4gIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCWlmIHRlc3QgLW4gImAiJGZvdW5kX2djYyIgLS12ZXJzaW9uIHwgZ3JlcCBsbHZtLWdjY2AiCisJCQl0aGVuCisJCQkJQUNfTVNHX05PVElDRShbRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZ10pCisJCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCQkJZmkKKworCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJQUNfTVNHX05PVElDRShbTm8gR0NDIGZvdW5kLCB1c2UgQ0xBTkddKQorCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAteiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlmb3VuZF9jbGFuZz1gL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcgMj4vZGV2L251bGxgCisJCQlpZiB0ZXN0IC1uICIke2ZvdW5kX2NsYW5nfSIKKwkJCXRoZW4KKwkJCQlBQ19NU0dfTk9USUNFKFtVc2luZyBjbGFuZyBmcm9tIFhjb2RlLmFwcF0pCisJCQkJQ0M9IiR7Zm91bmRfY2xhbmd9IgorCQkJCUNYWD0iYC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nKytgIgorCisJCQkjIGVsc2U6IHVzZSBkZWZhdWx0IGJlaGF2aW91cgorCQkJZmkKKwkJZmkKKwlmaQorZmkKIEFDX1BST0dfQ0MKIAogQUNfU1VCU1QoQ1hYKQpAQCAtNTAwLDggKzY3MCw5IEBACiBpZiB0ZXN0IC16ICIkQ1hYIgogdGhlbgogICAgICAgICBjYXNlICIkQ0MiIGluCi0gICAgICAgIGdjYykgICAgQUNfUEFUSF9QUk9HKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OwotICAgICAgICBjYykgICAgIEFDX1BBVEhfUFJPRyhDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgZ2NjKSAgICBBQ19QQVRIX1RPT0woQ1hYLCBbZysrXSwgW2crK10sIFtub3Rmb3VuZF0pIDs7CisgICAgICAgIGNjKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2MrK10sIFtjKytdLCBbbm90Zm91bmRdKSA7OworICAgICAgICBjbGFuZ3wqL2NsYW5nKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2NsYW5nKytdLCBbY2xhbmcrK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgIGVzYWMKIAlpZiB0ZXN0ICIkQ1hYIiA9ICJub3Rmb3VuZCIKIAl0aGVuCkBAIC01MTAsNyArNjgxLDcgQEAKIGZpCiBpZiB0ZXN0IC16ICIkQ1hYIgogdGhlbgotCUFDX0NIRUNLX1BST0dTKENYWCwgJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbCwgbm90Zm91bmQpCisJQUNfQ0hFQ0tfVE9PTFMoQ1hYLCAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsLCBub3Rmb3VuZCkKIAlpZiB0ZXN0ICIkQ1hYIiA9ICJub3Rmb3VuZCIKIAl0aGVuCiAJCUNYWD0iIgpAQCAtNzA0LDIyICs4NzUsMjMgQEAKIAogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1wcm9maWxpbmcpCiBBQ19BUkdfRU5BQkxFKHByb2ZpbGluZywKLSAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGluZ10sIFtlbmFibGUgQy1sZXZlbCBjb2RlIHByb2ZpbGluZ10pLAotW2FjX3NhdmVfY2M9IiRDQyIKLSBDQz0iJENDIC1wZyIKLSBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW2ludCBtYWluKCkgeyByZXR1cm4gMDsgfV1dKV0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ieWVzIl0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iXSwKLSAgIFthY19lbmFibGVfcHJvZmlsaW5nPSJubyJdKQotIENDPSIkYWNfc2F2ZV9jYyJdKQotQUNfTVNHX1JFU1VMVCgkYWNfZW5hYmxlX3Byb2ZpbGluZykKKyAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGluZ10sIFtlbmFibGUgQy1sZXZlbCBjb2RlIHByb2ZpbGluZ10pKQoraWYgdGVzdCAieCRlbmFibGVfcHJvZmlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgYWNfc2F2ZV9jYz0iJENDIgorICBDQz0iJChDQykgLXBnIgorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH1dXSldLAorICAgIFtdLAorICAgIFtlbmFibGVfcHJvZmlsaW5nPW5vXSkKKyAgQ0M9IiRhY19zYXZlX2NjIgorZWxzZQorICBlbmFibGVfcHJvZmlsaW5nPW5vCitmaQorQUNfTVNHX1JFU1VMVCgkZW5hYmxlX3Byb2ZpbGluZykKIAotY2FzZSAiJGFjX2VuYWJsZV9wcm9maWxpbmciIGluCi0gICAgInllcyIpCi0JQkFTRUNGTEFHUz0iLXBnICRCQVNFQ0ZMQUdTIgotCUxERkxBR1M9Ii1wZyAkTERGTEFHUyIKLSAgICA7OwotZXNhYworaWYgdGVzdCAieCRlbmFibGVfcHJvZmlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgQkFTRUNGTEFHUz0iLXBnICRCQVNFQ0ZMQUdTIgorICBMREZMQUdTPSItcGcgJExERkxBR1MiCitmaQogCiBBQ19NU0dfQ0hFQ0tJTkcoTERMSUJSQVJZKQogCkBAIC03ODMsMTEgKzk1NSw2IEBACiAJICBCTERMSUJSQVJZPSctV2wsK2IsJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKIAkgIFJVTlNIQVJFRD1TSExJQl9QQVRIPWBwd2RgOiR7U0hMSUJfUEFUSH0KIAkgIDs7Ci0gICAgT1NGKikKLQkgIExETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLnNvJwotCSAgQkxETElCUkFSWT0nLXJwYXRoICQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCi0JICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgOiR7TERfTElCUkFSWV9QQVRIfQotCSAgOzsKICAgICBEYXJ3aW4qKQogICAgIAlMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYicKIAlCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCkBAIC04MDgsMTEgKzk3NSwxNSBAQAogICBlc2FjCiBmaQogCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCVJVTlNIQVJFRD0KK2ZpCisKIEFDX01TR19SRVNVTFQoJExETElCUkFSWSkKIAogQUNfUFJPR19SQU5MSUIKIEFDX1NVQlNUKEFSKQotQUNfQ0hFQ0tfUFJPR1MoQVIsIGFyIGFhbCwgYXIpCitBQ19DSEVDS19UT09MUyhBUiwgYXIgYWFsLCBhcikKIAogIyB0d2VhayBBUkZMQUdTIG9ubHkgaWYgdGhlIHVzZXIgZGlkbid0IHNldCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lCiBBQ19TVUJTVChBUkZMQUdTKQpAQCAtODIxLDUxICs5OTIsMTUgQEAKICAgICAgICAgQVJGTEFHUz0icmMiCiBmaQogCi1BQ19TVUJTVChTVk5WRVJTSU9OKQotQUNfQ0hFQ0tfUFJPRyhTVk5WRVJTSU9OLCBzdm52ZXJzaW9uLCBmb3VuZCwgbm90LWZvdW5kKQotaWYgdGVzdCAkU1ZOVkVSU0lPTiA9IGZvdW5kCi10aGVuCi0JU1ZOVkVSU0lPTj0ic3ZudmVyc2lvbiBcJChzcmNkaXIpIgotZWxzZQotCVNWTlZFUlNJT049ImVjaG8gVW52ZXJzaW9uZWQgZGlyZWN0b3J5IgorQUNfQ0hFQ0tfVE9PTFMoW1JFQURFTEZdLCBbcmVhZGVsZl0sIFs6XSkKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgY2FzZSAiJFJFQURFTEYiIGluCisJcmVhZGVsZnw6KQorCUFDX01TR19FUlJPUihbcmVhZGVsZiBmb3IgdGhlIGhvc3QgaXMgcmVxdWlyZWQgZm9yIGNyb3NzIGJ1aWxkc10pCisJOzsKKyAgICBlc2FjCiBmaQotCi1BQ19TVUJTVChCQVNFQ1BQRkxBR1MpCi1pZiB0ZXN0ICIkYWJzX3NyY2RpciIgIT0gIiRhYnNfYnVpbGRkaXIiOyB0aGVuCi0gICAgIyBJZiB3ZSdyZSBidWlsZGluZyBvdXQtb2YtdHJlZSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZwotICAgICMgcmVzb3VyY2VzIGdldCBwaWNrZWQgdXAgYmVmb3JlIHRoZWlyICRzcmNkaXIgY291bnRlcnBhcnRzLgotICAgICMgICBPYmplY3RzLyAtPiB0eXBlc2xvdHMuaW5jCi0gICAgIyAgIEluY2x1ZGUvIC0+IFB5dGhvbi1hc3QuaCwgZ3JhbWluaXQuaAotICAgICMgICBQeXRob24vICAtPiBpbXBvcnRsaWIuaAotICAgICMgKEEgc2lkZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0IHRoZXNlIHJlc291cmNlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUKLSAgICAjICByZWdlbmVyYXRlZCB3aGVuIGJ1aWxkaW5nIG91dC1vZi10cmVlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90Ci0gICAgIyAgdGhlICRzcmNkaXIgY291bnRlcnBhcnQgaXMgdXAtdG8tZGF0ZS4gIFRoaXMgaXMgYW4gYWNjZXB0YWJsZSB0cmFkZQotICAgICMgIG9mZi4pCi0gICAgQkFTRUNQUEZMQUdTPSItSU9iamVjdHMgLUlJbmNsdWRlIC1JUHl0aG9uIgotZWxzZQotICAgIEJBU0VDUFBGTEFHUz0iIgotZmkKLQotQUNfU1VCU1QoSEdWRVJTSU9OKQotQUNfU1VCU1QoSEdUQUcpCi1BQ19TVUJTVChIR0JSQU5DSCkKLQotaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQotdGhlbgotQUNfQ0hFQ0tfUFJPRyhIQVNfSEcsIGhnLCBmb3VuZCwgbm90LWZvdW5kKQotZWxzZQotSEFTX0hHPW5vLXJlcG9zaXRvcnkKLWZpCi1pZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAotdGhlbgotICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKLSAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKLSAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKLWVsc2UKLSAgICBIR1ZFUlNJT049IiIKLSAgICBIR1RBRz0iIgotICAgIEhHQlJBTkNIPSIiCi1maQorQUNfU1VCU1QoUkVBREVMRikKIAogQUNfU1VCU1QoQVNETEdFTikKIEFDX0NIRUNLX1BST0dTKFBZVEhPTiwgcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbiwgbm90LWZvdW5kKQpAQCAtMTAyMCwxMCArMTE1NSwzMiBAQAogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWZuby1zdHJpY3QtYWxpYXNpbmciCiAgICAgZmkKIAorICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW51c2VkLXJlc3VsdCAtV2Vycm9yIgorICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9eWVzCisJIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz1ubworCSBdKSkKKyAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZykKKworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCisgICAgdGhlbgorICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVduby11bnVzZWQtcmVzdWx0IgorICAgIGZpCisKICAgICAjIGlmIHVzaW5nIGdjYyBvbiBhbHBoYSwgdXNlIC1taWVlZSB0byBnZXQgKG5lYXIpIGZ1bGwgSUVFRSA3NTQKICAgICAjIHN1cHBvcnQuICBXaXRob3V0IHRoaXMsIHRyZWF0bWVudCBvZiBzdWJub3JtYWxzIGRvZXNuJ3QgZm9sbG93CiAgICAgIyB0aGUgc3RhbmRhcmQuCi0gICAgY2FzZSAkYWNfc3lzX21hY2hpbmUgaW4KKyAgICBjYXNlICRob3N0IGluCiAgICAgICAgICBhbHBoYSopCiAgICAgICAgICAgICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgogICAgICAgICAgICAgICAgIDs7CkBAIC0xMDk3LDcgKzEyNTQsOSBAQAogCSAgICAjIENhbGN1bGF0ZSB0aGUgcmlnaHQgZGVwbG95bWVudCB0YXJnZXQgZm9yIHRoaXMgYnVpbGQuCiAJICAgICMKIAkgICAgY3VyX3RhcmdldD1gc3dfdmVycyAtcHJvZHVjdFZlcnNpb24gfCBzZWQgJ3MvXCgxMFwuW1swLTldXSpcKS4qL1wxLydgCi0JICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMjsgdGhlbgorCSAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldH0gJz4nIDEwLjIgJiYgXAorCSAgICAgICB0ZXN0ICR7Y3VyX3RhcmdldH0gJzwnIDEwLjYKKwkgICAgdGhlbgogCQkgICAgY3VyX3RhcmdldD0xMC4zCiAJCSAgICBpZiB0ZXN0ICR7ZW5hYmxlX3VuaXZlcnNhbHNka307IHRoZW4KIAkJCSAgICBpZiB0ZXN0ICIke1VOSVZFUlNBTF9BUkNIU30iID0gImFsbCI7IHRoZW4KQEAgLTExMzYsOSArMTI5NSw2IEBACiAJICAgIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JycKIAogCSAgICA7OwotCU9TRiopCi0JICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKLQkgICAgOzsKICAgICBlc2FjCiAgICAgOzsKIApAQCAtMTE0Nyw5ICsxMzAzLDYgQEAKICAgICBPcGVuVU5JWCp8VW5peFdhcmUqKQogCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1LIHBlbnRpdW0saG9zdCxpbmxpbmUsbG9vcF91bnJvbGwsYWxsb2NhICIKIAk7OwotICAgIE9TRiopCi0JQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWllZWUgLXN0ZCIKLSAgICAJOzsKICAgICBTQ09fU1YqKQogCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1iZWxmIC1LaTQ4NiAtRFNDTzUiCiAJOzsKQEAgLTExOTQsNiArMTM0Nyw3IEBACiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBwdGhyZWFkcyBhcmUgYXZhaWxhYmxlIHdpdGhvdXQgb3B0aW9ucykKIEFDX0NBQ0hFX1ZBTChhY19jdl9wdGhyZWFkX2lzX2RlZmF1bHQsCiBbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KIAogdm9pZCogcm91dGluZSh2b2lkKiBwKXtyZXR1cm4gTlVMTDt9CkBAIC0xMjI4LDYgKzEzODIsNyBAQAogW2FjX3NhdmVfY2M9IiRDQyIKIENDPSIkQ0MgLUtwdGhyZWFkIgogQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KIAogdm9pZCogcm91dGluZSh2b2lkKiBwKXtyZXR1cm4gTlVMTDt9CkBAIC0xMjU2LDYgKzE0MTEsNyBAQAogW2FjX3NhdmVfY2M9IiRDQyIKIENDPSIkQ0MgLUt0aHJlYWQiCiBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogCiB2b2lkKiByb3V0aW5lKHZvaWQqIHApe3JldHVybiBOVUxMO30KQEAgLTEyODQsNiArMTQ0MCw3IEBACiBbYWNfc2F2ZV9jYz0iJENDIgogQ0M9IiRDQyAtcHRocmVhZCIKIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtMTM1MCwyMSArMTUwNyw0MiBAQAogCiAjIGNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzCiBBQ19IRUFERVJfU1REQworYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKIEFDX0NIRUNLX0hFQURFUlMoYXNtL3R5cGVzLmggY29uaW8uaCBjdXJzZXMuaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCi1pZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIG5jdXJzZXMuaCBwb2xsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIHRocmVhZC5oIFwKK2llZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAotc3lzL2F1ZGlvaW8uaCBzeXMvYnNkdHR5Lmggc3lzL2Vwb2xsLmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvbG9hZGF2Zy5oIFwKLXN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAotc3lzL3BhcmFtLmggc3lzL3BvbGwuaCBzeXMvc2VsZWN0Lmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3N0YXQuaCBcCi1zeXMvc3lzY2FsbC5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKLXN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBsaWJ1dGlsLmggXAotc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAorcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCitzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKK3N5cy9rZXJuX2NvbnRyb2wuaCBzeXMvbG9hZGF2Zy5oIHN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAorc3lzL3BhcmFtLmggc3lzL3NlbGVjdC5oIHN5cy9zZW5kZmlsZS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIFwKK3N5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKK3N5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAorbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKIGJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggc3Bhd24uaCB1dGlsLmgpCitDUFBGTEFHUz0kYWNfc2F2ZV9jcHBmbGFncwogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCitBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKK1sjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKK10pCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIEFDX0NIRUNLX0hFQURFUlModGVybS5oLCwsWwogI2lmZGVmIEhBVkVfQ1VSU0VTX0gKQEAgLTEzODIsNiArMTU2MCwxMyBAQAogI2VuZGlmCiBdKQogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitBQ19DSEVDS19IRUFERVJTKGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaCwsLFsKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorXSkKKwogIyBjaGVja3MgZm9yIHR5cGVkZWZzCiB3YXNfaXRfZGVmaW5lZD1ubwogQUNfTVNHX0NIRUNLSU5HKGZvciBjbG9ja190IGluIHRpbWUuaCkKQEAgLTEzOTAsNyArMTU3NSw2IEBACiBdKQogQUNfTVNHX1JFU1VMVCgkd2FzX2l0X2RlZmluZWQpCiAKLSMgQ2hlY2sgd2hldGhlciB1c2luZyBtYWtlZGV2IHJlcXVpcmVzIGRlZmluaW5nIF9PU0ZfU09VUkNFCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTE0MDMsMTkgKzE1ODcsNiBAQAogXV0sIFtbCiAgIG1ha2VkZXYoMCwgMCkgXV0pCiBdLFthY19jdl9oYXNfbWFrZWRldj15ZXNdLFthY19jdl9oYXNfbWFrZWRldj1ub10pCi1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0jZGVmaW5lIF9PU0ZfU09VUkNFIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgICBdXSwKLSAgICBbWyBtYWtlZGV2KDAsIDApIF1dKV0sCi0gICAgW2FjX2N2X2hhc19tYWtlZGV2PXllc10sCi0gICAgW2FjX2N2X2hhc19tYWtlZGV2PW5vXSkKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLSAgICAgICAgQUNfREVGSU5FKF9PU0ZfU09VUkNFLCAxLCBbRGVmaW5lIF9PU0ZfU09VUkNFIHRvIGdldCB0aGUgbWFrZWRldiBtYWNyby5dKQotICAgIGZpCi1maQogQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGFzX21ha2VkZXYpCiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoSEFWRV9NQUtFREVWLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uXSkKQEAgLTE0OTUsNiArMTY2Niw4IEBACiAKIEFDX0NIRUNLX1RZUEUoc3NpemVfdCwKICAgQUNfREVGSU5FKEhBVkVfU1NJWkVfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHNzaXplX3RdKSwsKQorQUNfQ0hFQ0tfVFlQRShfX3VpbnQxMjhfdCwKKyAgQUNfREVGSU5FKEhBVkVfR0NDX1VJTlQxMjhfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90XSksLCkKIAogIyBTaXplcyBvZiB2YXJpb3VzIGNvbW1vbiBiYXNpYyB0eXBlcwogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKQEAgLTE3MjUsNyArMTg5OCw2IEBACiBBQ19TVUJTVChDQ1NIQVJFRCkKIEFDX1NVQlNUKExJTktGT1JTSEFSRUQpCiAKLUFDX0RFRklORV9VTlFVT1RFRChTSExJQl9FWFQsICIkU08iLCBbRGVmaW5lIHRoaXMgdG8gYmUgZXh0ZW5zaW9uIG9mIHNoYXJlZCBsaWJyYXJpZXMgKGluY2x1ZGluZyB0aGUgZG90ISkuXSkKICMgTERTSEFSRUQgaXMgdGhlIGxkICpjb21tYW5kKiB1c2VkIHRvIGNyZWF0ZSBzaGFyZWQgbGlicmFyeQogIyAtLSAiY2MgLUciIG9uIFN1bk9TIDUueCwgImxkIC1zaGFyZWQiIG9uIElSSVggNQogIyAoU2hhcmVkIGxpYnJhcmllcyBpbiB0aGlzIGluc3RhbmNlIGFyZSBzaGFyZWQgbW9kdWxlcyB0byBiZSBsb2FkZWQgaW50bwpAQCAtMTc1NSw3ICsxOTI3LDYgQEAKIAkJZWxzZQogCQkJTERTSEFSRUQ9J2xkIC1iJwogCQlmaSA7OwotCU9TRiopIExEU0hBUkVEPSJsZCAtc2hhcmVkIC1leHBlY3RfdW5yZXNvbHZlZCBcIipcIiI7OwogCURhcndpbi8xLjMqKQogCQlMRFNIQVJFRD0nJChDQykgLWJ1bmRsZScKIAkJTERDWFhTSEFSRUQ9JyQoQ1hYKSAtYnVuZGxlJwpAQCAtMTk4NSw2ICsyMTU2LDcgQEAKIAogCiAjIGNoZWNrcyBmb3IgbGlicmFyaWVzCitBQ19DSEVDS19MSUIoc2VuZGZpbGUsIHNlbmRmaWxlKQogQUNfQ0hFQ0tfTElCKGRsLCBkbG9wZW4pCSMgRHluYW1pYyBsaW5raW5nIGZvciBTdW5PUy9Tb2xhcmlzIGFuZCBTWVNWCiBBQ19DSEVDS19MSUIoZGxkLCBzaGxfbG9hZCkJIyBEeW5hbWljIGxpbmtpbmcgZm9yIEhQLVVYCiAKQEAgLTIwNTgsNiArMjIzMCwxNSBAQAogCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3N5c3RlbV9mZmkpCiAKKyMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYm1wZGVjIGxpYnJhcnkKK0FDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYykKK0FDX0FSR19XSVRIKHN5c3RlbV9saWJtcGRlYywKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWxpYm1wZGVjXSwgW2J1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMgbGlicmFyeV0pLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICBbd2l0aF9zeXN0ZW1fbGlibXBkZWM9Im5vIl0pCisKK0FDX01TR19SRVNVTFQoJHdpdGhfc3lzdGVtX2xpYm1wZGVjKQorCiAjIENoZWNrIGZvciBzdXBwb3J0IGZvciBsb2FkYWJsZSBzcWxpdGUgZXh0ZW5zaW9ucwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucykKIEFDX0FSR19FTkFCTEUobG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMsCkBAIC0yMTA5LDIxICsyMjkwLDEwIEBACiBBQ19TVUJTVChVU0VfVEhSRUFEX01PRFVMRSkKIFVTRV9USFJFQURfTU9EVUxFPSIiCiAKLUFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWRlYy10aHJlYWRzKQogQUNfU1VCU1QoTERMQVNUKQotQUNfQVJHX1dJVEgoZGVjLXRocmVhZHMsCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWRlYy10aHJlYWRzXSwgW3VzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXNdKSwKLVsKLUFDX01TR19SRVNVTFQoJHdpdGh2YWwpCi1MRExBU1Q9LXRocmVhZHMKLWlmIHRlc3QgIiR7d2l0aF90aHJlYWQrc2V0fSIgIT0gc2V0OyB0aGVuCi0gICB3aXRoX3RocmVhZD0iJHdpdGh2YWwiOwotZmldLAotW0FDX01TR19SRVNVTFQobm8pXSkKIAogIyBUZW1wbGF0ZXMgZm9yIHRoaW5ncyBBQ19ERUZJTkVkIG1vcmUgdGhhbiBvbmNlLgogIyBGb3IgYSBzaW5nbGUgQUNfREVGSU5FLCBubyB0ZW1wbGF0ZSBpcyBuZWVkZWQuCi1BSF9URU1QTEFURShDX1RIUkVBRFMsW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlXSkKIEFIX1RFTVBMQVRFKF9SRUVOVFJBTlQsCiAgIFtEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zXSkKIEFIX1RFTVBMQVRFKFdJVEhfVEhSRUFELApAQCAtMjIwNSwyNCArMjM3NSwxNSBAQAogICAgIEFDX01TR19SRVNVTFQoJHVuaXN0ZF9kZWZpbmVzX3B0aHJlYWRzKQogCiAgICAgQUNfREVGSU5FKF9SRUVOVFJBTlQpCi0gICAgQUNfQ0hFQ0tfSEVBREVSKGN0aHJlYWRzLmgsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCi0gICAgQUNfREVGSU5FKENfVEhSRUFEUykKLSAgICBBQ19ERUZJTkUoSFVSRF9DX1RIUkVBRFMsIDEsCi0gICAgW0RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgZGlyZWN0bHkgdW5kZXIgL2luY2x1ZGVdKQotICAgIExJQlM9IiRMSUJTIC1sdGhyZWFkcyIKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKLSAgICBBQ19DSEVDS19IRUFERVIobWFjaC9jdGhyZWFkcy5oLCBbQUNfREVGSU5FKFdJVEhfVEhSRUFEKQotICAgIEFDX0RFRklORShDX1RIUkVBRFMpCi0gICAgQUNfREVGSU5FKE1BQ0hfQ19USFJFQURTLCAxLAotICAgIFtEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIHVuZGVyIG1hY2ggL10pCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iXSxbCiAgICAgIyBKdXN0IGxvb2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIGxpYnB0aHJlYWQgaXMgbm90IGVub3VnaDoKICAgICAjIG9uIEhQL1VYLCBwdGhyZWFkLmggcmVuYW1lcyBwdGhyZWFkX2NyZWF0ZSB0byBhIGRpZmZlcmVudCBzeW1ib2wgbmFtZS4KICAgICAjIFNvIHdlIHJlYWxseSBoYXZlIHRvIGluY2x1ZGUgcHRocmVhZC5oLCBhbmQgdGhlbiBsaW5rLgogICAgIF9saWJzPSRMSUJTCiAgICAgTElCUz0iJExJQlMgLWxwdGhyZWFkIgogICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZF0pCi0gICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxwdGhyZWFkLmg+CisgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgogCiB2b2lkICogc3RhcnRfcm91dGluZSAodm9pZCAqYXJnKSB7IGV4aXQgKDApOyB9XV0sIFtbCiBwdGhyZWFkX2NyZWF0ZSAoTlVMTCwgTlVMTCwgc3RhcnRfcm91dGluZSwgTlVMTCldXSldLFsKQEAgLTIyNTEsNyArMjQxMiw3IEBACiAgICAgTElCUz0iJExJQlMgLWxjbWEiCiAgICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iXSxbCiAgICAgVVNFX1RIUkVBRF9NT0RVTEU9IiMiXSkKLSAgICBdKV0pXSldKV0pXSldKQorICAgIF0pXSldKV0pXSkKIAogICAgIEFDX0NIRUNLX0xJQihtcGMsIHVzY29uZmlnLCBbQUNfREVGSU5FKFdJVEhfVEhSRUFEKQogICAgIExJQlM9IiRMSUJTIC1sbXBjIgpAQCAtMjI2NCwxNSArMjQyNSw2IEBACiAgICAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyIKICAgICAgIFVTRV9USFJFQURfTU9EVUxFPSIiXSkKICAgICBmaQotCi0gICAgaWYgdGVzdCAiJFVTRV9USFJFQURfTU9EVUxFIiAhPSAiIyIKLSAgICB0aGVuCi0gICAgICAgICMgSWYgdGhlIGFib3ZlIGNoZWNrcyBkaWRuJ3QgZGlzYWJsZSB0aHJlYWRzLCAoYXQgbGVhc3QpIE9TRjEKLSAgICAgICAgIyBuZWVkcyB0aGlzICctdGhyZWFkcycgYXJndW1lbnQgZHVyaW5nIGxpbmtpbmcuCi0gICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgICAgICAgT1NGMSkgTERMQVNUPS10aHJlYWRzOzsKLSAgICAgICAgZXNhYwotICAgIGZpCiBmaQogCiBpZiB0ZXN0ICIkcG9zaXhfdGhyZWFkcyIgPSAieWVzIjsgdGhlbgpAQCAtMjI5Nyw3ICsyNDQ5LDkgQEAKIAogICAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIFBUSFJFQURfU0NPUEVfU1lTVEVNIGlzIHN1cHBvcnRlZCkKICAgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9wdGhyZWFkX3N5c3RlbV9zdXBwb3J0ZWQsCi0gICAgICBbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sjaW5jbHVkZSA8cHRocmVhZC5oPgorICAgICAgW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAgICAgICB2b2lkICpmb28odm9pZCAqcGFybSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgIH0KQEAgLTI1MzYsMTIgKzI2OTAsMTIgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAgICAgQUNfREVGSU5FKFdJVEhfUFlNQUxMT0MsIDEsIAogICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gUHl0aG9uLXNwZWNpZmljIG1hbGxvY3NdKQorICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogQUNfTVNHX1JFU1VMVCgkd2l0aF9weW1hbGxvYykKIApAQCAtMjYxMCwyMyArMjc2NCwzNSBAQAogZWxzZQogCU1BQ0hERVBfT0JKUz0iJE1BQ0hERVBfT0JKUyAkZXh0cmFfbWFjaGRlcF9vYmpzIgogZmkKLUFDX01TR19SRVNVTFQoTUFDSERFUF9PQkpTKQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbbm9uZV0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoWyRNQUNIREVQX09CSlNdKQorZmkKIAogIyBjaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zCiBBQ19DSEVDS19GVU5DUyhhbGFybSBhY2NlcHQ0IHNldGl0aW1lciBnZXRpdGltZXIgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgY2hvd24gXAotIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmY2htb2QgZmNob3duIGZvcmsgZnBhdGhjb25mIGZ0aW1lIGZ0cnVuY2F0ZSBcCi0gZ2FpX3N0cmVycm9yIGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKKyBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmFjY2Vzc2F0IGZjaG1vZCBmY2htb2RhdCBmY2hvd24gZmNob3duYXQgXAorIGZleGVjdmUgZmRvcGVuZGlyIGZvcmsgZnBhdGhjb25mIGZzdGF0YXQgZnRpbWUgZnRydW5jYXRlIGZ1dGltZXNhdCBcCisgZnV0aW1lbnMgZnV0aW1lcyBnYWlfc3RyZXJyb3IgXAorIGdldGdyb3VwbGlzdCBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCiAgZ2V0cHJpb3JpdHkgZ2V0cmVzdWlkIGdldHJlc2dpZCBnZXRwd2VudCBnZXRzcG5hbSBnZXRzcGVudCBnZXRzaWQgZ2V0d2QgXAotIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsc3RhdCBtYnJ0b3djIG1rZmlmbyBta25vZCBta3RpbWUgXAotIG1yZW1hcCBuaWNlIHBhdGhjb25mIHBhdXNlIHBsb2NrIHBvbGwgcHRocmVhZF9pbml0IFwKLSBwdXRlbnYgcmVhZGxpbmsgcmVhbHBhdGggXAotIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNldGVnaWQgc2V0ZXVpZCBcCi0gc2V0Z2lkIFwKLSBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHVpZCBzZXR2YnVmIFwKLSBzaWdhY3Rpb24gc2lnaW50ZXJydXB0IHNpZ3JlbHNlIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgXAorIGlmX25hbWVpbmRleCBcCisgaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxvY2tmIGxpbmthdCBsc3RhdCBsdXRpbWVzIG1tYXAgXAorIG1lbXJjaHIgbWJydG93YyBta2RpcmF0IG1rZmlmbyBcCisgbWtmaWZvYXQgbWtub2QgbWtub2RhdCBta3RpbWUgbXJlbWFwIG5pY2Ugb3BlbmF0IHBhdGhjb25mIHBhdXNlIHBpcGUyIHBsb2NrIHBvbGwgXAorIHBvc2l4X2ZhbGxvY2F0ZSBwb3NpeF9mYWR2aXNlIHByZWFkIFwKKyBwdGhyZWFkX2luaXQgcHRocmVhZF9raWxsIHB1dGVudiBwd3JpdGUgcmVhZGxpbmsgcmVhZGxpbmthdCByZWFkdiByZWFscGF0aCByZW5hbWVhdCBcCisgc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2VuZGZpbGUgc2V0ZWdpZCBzZXRldWlkIFwKKyBzZXRnaWQgc2V0aG9zdG5hbWUgXAorIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0cHJpb3JpdHkgc2V0dWlkIHNldHZidWYgXAorIHNjaGVkX2dldF9wcmlvcml0eV9tYXggc2NoZWRfc2V0YWZmaW5pdHkgc2NoZWRfc2V0c2NoZWR1bGVyIHNjaGVkX3NldHBhcmFtIFwKKyBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgXAorIHNpZ2FjdGlvbiBzaWdhbHRzdGFjayBzaWdpbnRlcnJ1cHQgc2lncGVuZGluZyBzaWdyZWxzZSBcCisgc2lndGltZWR3YWl0IHNpZ3dhaXQgc2lnd2FpdGluZm8gc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBzeW1saW5rYXQgc3luYyBcCiAgc3lzY29uZiB0Y2dldHBncnAgdGNzZXRwZ3JwIHRlbXBuYW0gdGltZWdtIHRpbWVzIHRtcGZpbGUgdG1wbmFtIHRtcG5hbV9yIFwKLSB0cnVuY2F0ZSB1bmFtZSB1bnNldGVudiB1dGltZXMgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCi0gd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIF9nZXRwdHkpCisgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCisgd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5KQogCiBBQ19DSEVDS19ERUNMKGRpcmZkLAogICAgIEFDX0RFRklORShIQVZFX0RJUkZELCAxLApAQCAtMjY3OCw2ICsyODQ0LDEyIEBACiAgICBBQ19NU0dfUkVTVUxUKHllcyldLAogICBbQUNfTVNHX1JFU1VMVChubykKIF0pCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGVwb2xsX2NyZWF0ZTEpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPHN5cy9lcG9sbC5oPl1dLCBbW3ZvaWQgKng9ZXBvbGxfY3JlYXRlMV1dKV0sCisgIFtBQ19ERUZJTkUoSEFWRV9FUE9MTF9DUkVBVEUxLCAxLCBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdlcG9sbF9jcmVhdGUxJyBmdW5jdGlvbi4pCisgICBBQ19NU0dfUkVTVUxUKHllcyldLAorICBbQUNfTVNHX1JFU1VMVChubykKK10pCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGtxdWV1ZSkKIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTI5MDgsNiArMzA4MCwyMCBAQAogICAgIF0pCiApCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEpCisgICAgICAgIEFDX0RFRklORShUSU1FTU9EVUxFX0xJQiwgW3J0XSwKKyAgICAgICAgICAgICAgICAgIFtMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKV0pCisgICAgXSkKK10pCisKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHJlcywgW10sIFsKKyAgICBBQ19DSEVDS19MSUIocnQsIGNsb2NrX2dldHJlcywgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRSRVMsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMjk0NCw2ICszMTMwLDcgQEAKICAgQUNfTVNHX0NIRUNLSU5HKGdldGFkZHJpbmZvIGJ1ZykKICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvLAogICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW1sKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPG5ldGRiLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0zMDMyLDEyICszMjE5LDE3IEBACiBdXV0pXSwKIFthY19jdl9idWdneV9nZXRhZGRyaW5mbz1ub10sCiBbYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzXSwKLVthY19jdl9idWdneV9nZXRhZGRyaW5mbz15ZXNdKSkKK1sKK2lmIHRlc3QgIiR7ZW5hYmxlX2lwdjYrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89Im5vIC0tIGNvbmZpZ3VyZWQgd2l0aCAtLShlbnxkaXMpYWJsZS1pcHY2IgorZWxzZQorICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz15ZXMKK2ZpXSkpCiBmaQogCiBBQ19NU0dfUkVTVUxUKCRhY19jdl9idWdneV9nZXRhZGRyaW5mbykKIAotaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIC1vICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCitpZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gfHwgdGVzdCAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcwogdGhlbgogCWlmIHRlc3QgJGlwdjYgPSB5ZXMKIAl0aGVuCkBAIC0zMzI5LDYgKzM1MjEsMjEgQEAKIGZpXSwKIFtBQ19NU0dfUkVTVUxUKGRlZmF1bHQgTElCQz0iJExJQkMiKV0pCiAKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDaGVjayBmb3IgZ2NjIHg2NCBpbmxpbmUgYXNzZW1ibGVyICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworQUNfTVNHX0NIRUNLSU5HKGZvciB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgibW92cSAlcmN4LCAlcmF4Iik7CitdXSldLFtoYXZlX2djY19hc21fZm9yX3g2ND15ZXNdLFtoYXZlX2djY19hc21fZm9yX3g2ND1ub10pCitBQ19NU0dfUkVTVUxUKCRoYXZlX2djY19hc21fZm9yX3g2NCkKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPSB5ZXMKK3RoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HQ0NfQVNNX0ZPUl9YNjQsIDEsCisgICAgW0RlZmluZSBpZiB3ZSBjYW4gdXNlIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlcl0pCitmaQorCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAjICogQ2hlY2sgZm9yIHZhcmlvdXMgcHJvcGVydGllcyBvZiBmbG9hdGluZyBwb2ludCAqCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0zNDc3LDcgKzM2ODQsNyBAQAogTElCUz0iJExJQlMgJExJQk0iCiAKIEFDX0NIRUNLX0ZVTkNTKFthY29zaCBhc2luaCBhdGFuaCBjb3B5c2lnbiBlcmYgZXJmYyBleHBtMSBmaW5pdGUgZ2FtbWFdKQotQUNfQ0hFQ0tfRlVOQ1MoW2h5cG90IGxnYW1tYSBsb2cxcCByb3VuZCB0Z2FtbWFdKQorQUNfQ0hFQ0tfRlVOQ1MoW2h5cG90IGxnYW1tYSBsb2cxcCBsb2cyIHJvdW5kIHRnYW1tYV0pCiBBQ19DSEVDS19ERUNMUyhbaXNpbmYsIGlzbmFuLCBpc2Zpbml0ZV0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8bWF0aC5oPl1dKQogCiAjIE9uIEZyZWVCU0QgNi4yLCBpdCBhcHBlYXJzIHRoYXQgdGFuaCgtMC4pIHJldHVybnMgMC4gaW5zdGVhZCBvZgpAQCAtMzY3NSw1NyArMzg4MiwxOSBAQAogICBBQ19NU0dfUkVTVUxUKCRhY19jdl93Y2hhcl90X3NpZ25lZCkKIGZpCiAKLUFDX01TR19DSEVDS0lORyh3aGF0IHR5cGUgdG8gdXNlIGZvciBzdHIpCi1BQ19BUkdfV0lUSCh3aWRlLXVuaWNvZGUsIAotICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC13aWRlLXVuaWNvZGVdLCBbVXNlIDQtYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMgKGRlZmF1bHQgaXMgMiBieXRlcyldKSwKLVsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbiB1bmljb2RlX3NpemU9IjQiCi1lbHNlIHVuaWNvZGVfc2l6ZT0iMiIKLWZpCi1dLAotWwotY2FzZSAiJGhhdmVfdWNzNF90Y2wiIGluCi0gIHllcykgdW5pY29kZV9zaXplPSI0Ijs7Ci0gICopICAgdW5pY29kZV9zaXplPSIyIiA7OwotZXNhYwotXSkKLQotQUhfVEVNUExBVEUoUHlfVU5JQ09ERV9TSVpFLAotICBbRGVmaW5lIGFzIHRoZSBzaXplIG9mIHRoZSB1bmljb2RlIHR5cGUuXSkKLWNhc2UgIiR1bmljb2RlX3NpemUiIGluCi0gIDQpCi0gICAgIEFDX0RFRklORShQeV9VTklDT0RFX1NJWkUsIDQpCi0gICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfXUiCi0gICAgIDs7Ci0gICopIEFDX0RFRklORShQeV9VTklDT0RFX1NJWkUsIDIpIDs7Ci1lc2FjCi0KLUFIX1RFTVBMQVRFKFBZX1VOSUNPREVfVFlQRSwKLSAgW0RlZmluZSBhcyB0aGUgaW50ZWdyYWwgdHlwZSB1c2VkIGZvciBVbmljb2RlIHJlcHJlc2VudGF0aW9uLl0pCi0KICMgd2NoYXJfdCBpcyBvbmx5IHVzYWJsZSBpZiBpdCBtYXBzIHRvIGFuIHVuc2lnbmVkIHR5cGUKLWlmIHRlc3QgIiR1bmljb2RlX3NpemUiID0gIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgXAoraWYgdGVzdCAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiAtZ2UgMiBcCiAgICAgICAgICAgLWEgIiRhY19jdl93Y2hhcl90X3NpZ25lZCIgPSAibm8iCiB0aGVuCi0gIFBZX1VOSUNPREVfVFlQRT0id2NoYXJfdCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ieWVzIgogICBBQ19ERUZJTkUoSEFWRV9VU0FCTEVfV0NIQVJfVCwgMSwKICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBhIHVzZWFibGUgd2NoYXJfdCB0eXBlIGRlZmluZWQgaW4gd2NoYXIuaDsgdXNlYWJsZQogICAgbWVhbnMgd2NoYXJfdCBtdXN0IGJlIGFuIHVuc2lnbmVkIHR5cGUgd2l0aCBhdCBsZWFzdCAxNiBiaXRzLiAoc2VlCiAgICBJbmNsdWRlL3VuaWNvZGVvYmplY3QuaCkuXSkKLSAgQUNfREVGSU5FKFBZX1VOSUNPREVfVFlQRSx3Y2hhcl90KQotZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIHNob3J0IgotICAgICBBQ19ERUZJTkUoUFlfVU5JQ09ERV9UWVBFLHVuc2lnbmVkIHNob3J0KQotZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgbG9uZyIKLSAgICAgQUNfREVGSU5FKFBZX1VOSUNPREVfVFlQRSx1bnNpZ25lZCBsb25nKQogZWxzZQotICAgICBQWV9VTklDT0RFX1RZUEU9Im5vIHR5cGUgZm91bmQiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9Im5vIHVzYWJsZSB3Y2hhcl90IGZvdW5kIgogZmkKLUFDX01TR19SRVNVTFQoJFBZX1VOSUNPREVfVFlQRSkKK0FDX01TR19SRVNVTFQoJEhBVkVfVVNBQkxFX1dDSEFSX1QpCiAKICMgY2hlY2sgZm9yIGVuZGlhbm5lc3MKIEFDX0NfQklHRU5ESUFOCkBAIC0zNzg2LDYgKzM5NTUsOCBAQAogZmkKIEFDX01TR19SRVNVTFQoJFNPKQogCitBQ19ERUZJTkVfVU5RVU9URUQoU0hMSUJfRVhULCAiJFNPIiwgW0RlZmluZSB0aGlzIHRvIGJlIGV4dGVuc2lvbiBvZiBzaGFyZWQgbGlicmFyaWVzIChpbmNsdWRpbmcgdGhlIGRvdCEpLl0pCisKICMgQ2hlY2sgd2hldGhlciByaWdodCBzaGlmdGluZyBhIG5lZ2F0aXZlIGludGVnZXIgZXh0ZW5kcyB0aGUgc2lnbiBiaXQKICMgb3IgZmlsbHMgd2l0aCB6ZXJvcyAobGlrZSB0aGUgQ3JheSBKOTAsIGFjY29yZGluZyB0byBUaW0gUGV0ZXJzKS4KIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHJpZ2h0IHNoaWZ0IGV4dGVuZHMgdGhlIHNpZ24gYml0KQpAQCAtMzgzMiw3ICs0MDAzLDcgQEAKICMgd2l0aCBzZXR1cC5weS4KIHB5X2N2X2xpYl9yZWFkbGluZT1ubwogQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayByZWFkbGluZSBsaWJzXSkKLWZvciBweV9saWJ0ZXJtY2FwIGluICIiIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCitmb3IgcHlfbGlidGVybWNhcCBpbiAiIiB0aW5mbyBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbwogICBpZiB0ZXN0IC16ICIkcHlfbGlidGVybWNhcCI7IHRoZW4KICAgICBSRUFETElORV9MSUJTPSItbHJlYWRsaW5lIgogICBlbHNlCkBAIC00MDc1LDYgKzQyNDYsOCBAQAogICBbRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW1lbnNlY10pCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogIyBPbiBIUC9VWCAxMS4wLCBtdndkZWxjaCBpcyBhIGJsb2NrIHdpdGggYSByZXR1cm4gc3RhdGVtZW50CiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uKQogQUNfQ0FDSEVfVkFMKGFjX2N2X212d2RlbGNoX2lzX2V4cHJlc3Npb24sCkBAIC00MTI5LDI3ICs0MzAyLDM0IEBACiAgICBBQ19NU0dfUkVTVUxUKHllcyldLAogICBbQUNfTVNHX1JFU1VMVChubyldCiApCisjIGxhc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjaworQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKIAotQUNfTVNHX0NIRUNLSU5HKGZvciAvZGV2L3B0bXgpCitBQ19NU0dfTk9USUNFKFtjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzXSkKIAotaWYgdGVzdCAtciAvZGV2L3B0bXgKLXRoZW4KLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gIEFDX0RFRklORShIQVZFX0RFVl9QVE1YLCAxLAotICBbRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdG14Ll0pCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCitkbmwgTk9URTogSW5mb3JtIHVzZXIgaG93IHRvIHByb2NlZWQgd2l0aCBmaWxlcyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KK2lmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRteCtzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAvZGV2L3B0bXhdKQorICAgIEFDX01TR19SRVNVTFQoW25vdCBzZXRdKQorICAgIEFDX01TR19FUlJPUihbc2V0IGFjX2N2X2ZpbGVfX2Rldl9wdG14IHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmddKQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgL2Rldi9wdGNdKQorICAgIEFDX01TR19SRVNVTFQoW25vdCBzZXRdKQorICAgIEFDX01TR19FUlJPUihbc2V0IGFjX2N2X2ZpbGVfX2Rldl9wdGMgdG8geWVzL25vIGluIHlvdXIgQ09ORklHX1NJVEUgZmlsZSB3aGVuIGNyb3NzIGNvbXBpbGluZ10pCisgIGZpCiBmaQogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC9kZXYvcHRjKQotCi1pZiB0ZXN0IC1yIC9kZXYvcHRjCi10aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQorQUNfQ0hFQ0tfRklMRSgvZGV2L3B0bXgsIFtdLCBbXSkKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID0geHllczsgdGhlbgorICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRNWCwgMSwKKyAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0bXggZGV2aWNlIGZpbGUuXSkKK2ZpCitBQ19DSEVDS19GSUxFKC9kZXYvcHRjLCBbXSwgW10pCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRDLCAxLAotICBbRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdGMuXSkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKKyAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS5dKQogZmkKIAogaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwpAQCAtNDE4OSw3ICs0MzY5LDIzIEBACiAgIF1dXSldLAogICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCiAgIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSkKKyAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICAgICAjaW5jbHVkZSA8c3RkZGVmLmg+CisgICAgICBdXSwgW1sKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisgICAgICBdXSldLAorICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcworICAgICkKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaV0pCiAgICkKICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0KQogZmkKQEAgLTQyNjUsNiArNDQ2MSw3IEBACiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGJyb2tlbiBtYnN0b3djcykKIEFDX0NBQ0hFX1ZBTChhY19jdl9icm9rZW5fbWJzdG93Y3MsCiBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZTxzdGRsaWIuaD4KIGludCBtYWluKCkgewogICAgIHNpemVfdCBsZW4gPSAtMTsKQEAgLTQyODQsMzAgKzQ0ODEsNiBAQAogICAgd2lkZSBjaGFycyB0aGF0IHdvdWxkIGJlIGNvbnZlcnRlZC5dKQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zKQotQUNfQ0FDSEVfVkFMKGFjX2N2X2NvbXB1dGVkX2dvdG9zLAotQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07Ci0gICAgZ290byBMQUJFTDI7Ci1MQUJFTDE6Ci0gICAgcmV0dXJuIDA7Ci1MQUJFTDI6Ci0gICAgZ290byAqdGFyZ2V0c1swXTsKLSAgICByZXR1cm4gMTsKLX0KLV1dXSldLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPXllc10sCi1bYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm9dLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSkpCi1BQ19NU0dfUkVTVUxUKCRhY19jdl9jb21wdXRlZF9nb3RvcykKLWlmIHRlc3QgIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPSB5ZXMKLXRoZW4KLSAgQUNfREVGSU5FKEhBVkVfQ09NUFVURURfR09UT1MsIDEsCi0gIFtEZWZpbmUgaWYgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuXSkKLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MpCiBBQ19BUkdfV0lUSChjb21wdXRlZC1nb3RvcywKQEAgLTQzMjksMTggKzQ1MDIsMzkgQEAKIF0sCiBbQUNfTVNHX1JFU1VMVChubyB2YWx1ZSBzcGVjaWZpZWQpXSkKIAorQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zKQorQUNfQ0FDSEVfVkFMKGFjX2N2X2NvbXB1dGVkX2dvdG9zLAorQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07CisgICAgZ290byBMQUJFTDI7CitMQUJFTDE6CisgICAgcmV0dXJuIDA7CitMQUJFTDI6CisgICAgZ290byAqdGFyZ2V0c1swXTsKKyAgICByZXR1cm4gMTsKK30KK11dXSldLAorW2FjX2N2X2NvbXB1dGVkX2dvdG9zPXllc10sCitbYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm9dLAorW2lmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaV0pKQorQUNfTVNHX1JFU1VMVCgkYWNfY3ZfY29tcHV0ZWRfZ290b3MpCitjYXNlICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiIGluIHllcyopCisgIEFDX0RFRklORShIQVZFX0NPTVBVVEVEX0dPVE9TLCAxLAorICBbRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLl0pCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopICAgCiAgIEFDX0RFRklORShIQVZFX0JST0tFTl9QSVBFX0JVRiwgMSwgW0RlZmluZSBpZiB0aGUgc3lzdGVtIHJlcG9ydHMgYW4gaW52YWxpZCBQSVBFX0JVRiB2YWx1ZS5dKSA7OwogZXNhYwogCiAKLWNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgT1NGKikgQUNfTVNHX0VSUk9SKE9TRiogc3lzdGVtcyBhcmUgZGVwcmVjYXRlZCB1bmxlc3Mgc29tZWJvZHkgdm9sdW50ZWVycy4gQ2hlY2sgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTg2MDYpIDs7Ci1lc2FjCi0KLUFDX0NIRUNLX0ZVTkMocGlwZTIsIEFDX0RFRklORShIQVZFX1BJUEUyLCAxLCBbRGVmaW5lIGlmIHRoZSBPUyBzdXBwb3J0cyBwaXBlMigpXSksICkKLQogQUNfU1VCU1QoVEhSRUFESEVBREVSUykKIAogZm9yIGggaW4gYChjZCAkc3JjZGlyO2VjaG8gUHl0aG9uL3RocmVhZF8qLmgpYApAQCAtNDM1OCw2ICs0NTUyLDg5IEBACiBkb25lCiBBQ19NU0dfUkVTVUxUKGRvbmUpCiAKKyMgQXZhaWxhYmlsaXR5IG9mIC1PMjoKK0FDX01TR19DSEVDS0lORyhmb3IgLU8yKQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIiCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCitdXSldLFtoYXZlX08yPXllc10sW2hhdmVfTzI9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9PMikKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKKworIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorQUNfTVNHX0NIRUNLSU5HKGZvciBnbGliYyBfRk9SVElGWV9TT1VSQ0UvbWVtbW92ZSBidWcpCitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KK11dKV0sCitbaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ub10sCitbaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz15ZXNdLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkXSkKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWcpCitpZiB0ZXN0ICIkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HTElCQ19NRU1NT1ZFX0JVRywgMSwKKyAgICBbRGVmaW5lIGlmIGdsaWJjIGhhcyBpbmNvcnJlY3QgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzCisgICAgIGZvciBtZW1tb3ZlIGFuZCBiY29weS5dKQorZmkKKworaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgorICAgICMgU29tZSB2ZXJzaW9ucyBvZiBnY2MgbWlzY29tcGlsZSBpbmxpbmUgYXNtOgorICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICMgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDEwLTExL21zZzAwMzY2Lmh0bWwKKyAgICBjYXNlICRDQyBpbgorICAgICAgICAqZ2NjKikKKyAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1ZykKKyAgICAgICAgICAgIHNhdmVkX2NmbGFncz0iJENGTEFHUyIKKyAgICAgICAgICAgIENGTEFHUz0iLU8yIgorICAgICAgICAgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgaW50CisgICAgICAgICAgICBmb28oaW50ICpwKSB7CisgICAgICAgICAgICAgIGludCByOworICAgICAgICAgICAgICBhc20gKCAibW92bCBcJDYsICglMSlcblx0IgorICAgICAgICAgICAgICAgICAgICAieG9ybCAlMCwgJTBcblx0IgorICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKHIpIDogInIiIChwKSA6ICJtZW1vcnkiCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1haW4oKSB7CisgICAgICAgICAgICAgIGludCBwID0gODsKKyAgICAgICAgICAgICAgaWYgKChmb28oJnApID8gOiBwKSAhPSA2KQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICBbaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9bm9dLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXllc10sCisgICAgICAgICAgICBbaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkXSkKKyAgICAgICAgICAgIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnKQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSBpZiBnY2MgaGFzIHRoZSBpcGEtcHVyZS1jb25zdCBidWcuXSkKKyAgICAgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYworZmkKKwogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IDZmZmYxNjUuLjEwZTJjOTEgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsOSArMTIsNiBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlICovCi0jdW5kZWYgQ19USFJFQURTCi0KIC8qIERlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQgaW4gQVJNCiAgICBtaXhlZC1lbmRpYW4gb3JkZXIgKGJ5dGUgb3JkZXIgNDU2NzAxMjMpICovCiAjdW5kZWYgRE9VQkxFX0lTX0FSTV9NSVhFRF9FTkRJQU5fSUVFRTc1NApAQCAtMTE2LDYgKzExMywxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9jaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHJlcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19HRVRSRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXR0aW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKwogLyogRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLiAqLwogI3VuZGVmIEhBVkVfQ09NUFVURURfR09UT1MKIApAQCAtMTY1LDEwICsxNjgsMTAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZXZpY2UgbWFjcm9zLiAqLwogI3VuZGVmIEhBVkVfREVWSUNFX01BQ1JPUwogCi0vKiBEZWZpbmUgaWYgd2UgaGF2ZSAvZGV2L3B0Yy4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RFVl9QVEMKIAotLyogRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdG14LiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIC9kZXYvcHRteCBkZXZpY2UgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RFVl9QVE1YCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwpAQCAtMTk2LDYgKzE5OSw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdlcG9sbCcgZnVuY3Rpb25zLiAqLwogI3VuZGVmIEhBVkVfRVBPTEwKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGxfY3JlYXRlMScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9FUE9MTF9DUkVBVEUxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXJmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0VSRgogCkBAIC0yMTEsMjEgKzIxNywzNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBleHBtMScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FWFBNMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZhY2Nlc3NhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQUNDRVNTQVQKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmNoZGlyJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZDSERJUgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG1vZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hNT0QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2htb2RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQ0hNT0RBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG93bicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hPV04KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2hvd25hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQ0hPV05BVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRkNOVExfSAogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdmZGF0YXN5bmMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkRBVEFTWU5DCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmRvcGVuZGlyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZET1BFTkRJUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZleGVjdmUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkVYRUNWRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZpbml0ZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GSU5JVEUKIApAQCAtMjQ3LDYgKzI2OCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZzZWVrbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GU0VFS08KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdGF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZTVEFUQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdHZmcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GU1RBVFZGUwogCkBAIC0yNjUsMTYgKzI4OSwzMSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdHJ1bmNhdGUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlRSVU5DQVRFCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lbnMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRlVUSU1FTlMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRlVUSU1FU0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2FpX3N0cmVycm9yJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBSV9TVFJFUlJPUgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhbW1hJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBTU1BCiAKKy8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlciAqLworI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfWDY0CisKIC8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IHg4NyBjb250cm9sIHdvcmQKICAgICovCiAjdW5kZWYgSEFWRV9HQ0NfQVNNX0ZPUl9YODcKIAorLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3QgKi8KKyN1bmRlZiBIQVZFX0dDQ19VSU5UMTI4X1QKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRhZGRyaW5mbyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEFERFJJTkZPCiAKQEAgLTI4NCw2ICszMjMsOSBAQAogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgZmxvY2tmaWxlKCksIGdldGNfdW5sb2NrZWQoKSwgYW5kIGZ1bmxvY2tmaWxlKCkgKi8KICN1bmRlZiBIQVZFX0dFVENfVU5MT0NLRUQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRncm91cGxpc3QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JvdXBzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEdST1VQUwogCkBAIC0zNTYsNiArMzk4LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHdkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFdECiAKKy8qIERlZmluZSBpZiBnbGliYyBoYXMgaW5jb3JyZWN0IF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycyBmb3IgbWVtbW92ZSBhbmQKKyAgIGJjb3B5LiAqLworI3VuZGVmIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxncnAuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9HUlBfSAogCkBAIC0zNjgsNiArNDE0LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aWVlZWZwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSUVFRUZQX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpZl9uYW1laW5kZXgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSUZfTkFNRUlOREVYCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2luZXRfYXRvbicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9JTkVUX0FUT04KIApAQCAtMzg5LDYgKzQzOCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlvLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU9fSAogCisvKiBEZWZpbmUgaWYgZ2NjIGhhcyB0aGUgaXBhLXB1cmUtY29uc3QgYnVnLiAqLworI3VuZGVmIEhBVkVfSVBBX1BVUkVfQ09OU1RfQlVHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga2lsbCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LSUxMCiAKQEAgLTQzNywyMSArNDg5LDM5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlc29sdicgbGlicmFyeSAoLWxyZXNvbHYpLiAqLwogI3VuZGVmIEhBVkVfTElCUkVTT0xWCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGxpYnJhcnkgKC1sc2VuZGZpbGUpLiAqLworI3VuZGVmIEhBVkVfTElCU0VOREZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaWJ1dGlsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElCVVRJTF9ICiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2xpbmsnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTElOSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MSU5LQVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2Nhbi9yYXcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9uZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElOVVhfTkVUTElOS19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGlwYy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX1RJUENfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2tmJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xPQ0tGCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9nMXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTE9HMVAKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2cyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xPRzIKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBkb3VibGUuICovCiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRQogCkBAIC00NjEsNiArNTMxLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xVVElNRVMKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uICovCiAjdW5kZWYgSEFWRV9NQUtFREVWCiAKQEAgLTQ3MywxNSArNTQ2LDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX01FTU9SWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtcmNocicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NRU1SQ0hSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtkaXJhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0RJUkFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtmaWZvJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LRklGTwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmb2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LRklGT0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtOT0QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta25vZGF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LTk9EQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta3RpbWUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NTUFQCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXJlbWFwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01SRU1BUAogCkBAIC00OTQsOSArNTgyLDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldHBhY2tldC9wYWNrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvaWYuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ORVRfSUZfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5pY2UnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTklDRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9PUEVOQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVucHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX09QRU5QVFkKIApAQCAtNTA5LDcgKzYwMyw3IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdXNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BBVVNFCiAKLS8qIERlZmluZSBpZiB0aGUgT1Mgc3VwcG9ydHMgcGlwZTIoKSAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwaXBlMicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QSVBFMgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBsb2NrJyBmdW5jdGlvbi4gKi8KQEAgLTUyMSw2ICs2MTUsMTUgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cG9sbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BPTExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvc2l4X2ZhZHZpc2UnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvc2l4X2ZhbGxvY2F0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QT1NJWF9GQUxMT0NBVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwcmVhZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QUkVBRAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nlc3MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QUk9DRVNTX0gKIApAQCAtNTM2LDYgKzYzOSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfaW5pdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QVEhSRUFEX0lOSVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkX2tpbGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFRIUkVBRF9LSUxMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHRocmVhZF9zaWdtYXNrJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQURfU0lHTUFTSwogCkBAIC01NDUsMTIgKzY1MSwyNCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdXRlbnYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFVURU5WCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BXUklURQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JFQURMSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZGxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUFETElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZHYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRFYKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUFMUEFUSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlbmFtZWF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFTkFNRUFUCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSByZWFkbGluZSAyLjEgKi8KICN1bmRlZiBIQVZFX1JMX0NBTExCQUNLCiAKQEAgLTU3NSw2ICs2OTMsMjQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcm91bmQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUk9VTkQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzY2hlZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0YWZmaW5pdHknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRwYXJhbScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3NldHNjaGVkdWxlcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxlY3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VMRUNUCiAKQEAgLTU5MCw2ICs3MjYsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW1fdW5saW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTV9VTkxJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW5kZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRU5ERklMRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGVnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VURUdJRAogCkBAIC02MDIsNiArNzQxLDkgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3NldGdyb3VwcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRVRHUk9VUFMKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRob3N0bmFtZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRIT1NUTkFNRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGl0aW1lcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRVRJVElNRVIKIApAQCAtNjE0LDYgKzc1Niw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHBncnAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUUEdSUAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHByaW9yaXR5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFVFBSSU9SSVRZCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0cmVnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUUkVHSUQKIApAQCAtNjQxLDE1ICs3ODYsMzAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnYWN0aW9uJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR0FDVElPTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2FsdHN0YWNrJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR0FMVFNUQUNLCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnaW50ZXJydXB0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR0lOVEVSUlVQVAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NJR05BTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lncGVuZGluZycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdQRU5ESU5HCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lncmVsc2UnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0lHUkVMU0UKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzaWd0aW1lZHdhaXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHVElNRURXQUlUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnd2FpdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdXQUlUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnd2FpdGluZm8nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHV0FJVElORk8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TTlBSSU5URgogCkBAIC03MzMsNiArODkzLDEyIEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzeW1saW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NZTUxJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeW1saW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lNTElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TWU5DCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3lzY29uZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TWVNDT05GCiAKQEAgLTc0NSw2ICs5MTEsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvYnNkdHR5Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0JTRFRUWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2RldnBvbGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfREVWUE9MTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2Rpci5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfU1lTX0RJUl9ICkBAIC03NTgsNiArOTI3LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9maWxlLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0ZJTEVfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9pb2N0bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19JT0NUTF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2tlcm5fY29udHJvbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19LRVJOX0NPTlRST0xfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9sb2FkYXZnLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0xPQURBVkdfSAogCkBAIC03ODYsNiArOTYxLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NlbGVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TRUxFQ1RfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZW5kZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TRU5ERklMRV9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NvY2tldC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TT0NLRVRfSAogCkBAIC03OTgsNiArOTc2LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2NhbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU1lTQ0FMTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c19kb21haW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1lTX0RPTUFJTl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Rlcm1pby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19URVJNSU9fSAogCkBAIC04MTAsNiArOTkxLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdWlvLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1VJT19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1VOX0gKIApAQCAtODE5LDYgKzEwMDMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19XQUlUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMveGF0dHIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfWEFUVFJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRjZ2V0cGdycCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9UQ0dFVFBHUlAKIApAQCAtODM3LDkgKzEwMjQsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0Z2FtbWEnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVEdBTU1BCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dGhyZWFkLmg+IGhlYWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfVEhSRUFEX0gKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0aW1lZ20nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVElNRUdNCiAKQEAgLTg4NCw2ICsxMDY4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VTkxJTktBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuc2V0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOU0VURU5WCiAKQEAgLTg5NSw2ICsxMDgyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VUSUxfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV0aW1lbnNhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VVElNRU5TQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1dGltZXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVVRJTUVTCiAKQEAgLTkwNyw2ICsxMDk3LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdDQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfV0FJVDQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0aWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV0FJVElECisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdHBpZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9XQUlUUElECiAKQEAgLTkyNiwyMSArMTExOSwxOCBAQAogICAgKi8KICN1bmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3cml0ZXYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV1JJVEVWCisKIC8qIERlZmluZSBpZiB0aGUgemxpYiBsaWJyYXJ5IGhhcyBpbmZsYXRlQ29weSAqLwogI3VuZGVmIEhBVkVfWkxJQl9DT1BZCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX2dldHB0eScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9fR0VUUFRZCiAKLS8qIERlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgZGlyZWN0bHkgdW5kZXIgL2luY2x1ZGUgKi8KLSN1bmRlZiBIVVJEX0NfVEhSRUFEUwotCiAvKiBEZWZpbmUgaWYgbG9nMXAoLTAuKSBpcyAwLiByYXRoZXIgdGhhbiAtMC4gKi8KICN1bmRlZiBMT0cxUF9EUk9QU19aRVJPX1NJR04KIAotLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyB1bmRlciBtYWNoIC8gKi8KLSN1bmRlZiBNQUNIX0NfVEhSRUFEUwotCiAvKiBEZWZpbmUgdG8gMSBpZiBgbWFqb3InLCBgbWlub3InLCBhbmQgYG1ha2VkZXYnIGFyZSBkZWNsYXJlZCBpbiA8bWtkZXYuaD4uCiAgICAqLwogI3VuZGVmIE1BSk9SX0lOX01LREVWCkBAIC05ODUsMTggKzExNzUsMTIgQEAKIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCi0vKiBEZWZpbmUgYXMgdGhlIGludGVncmFsIHR5cGUgdXNlZCBmb3IgVW5pY29kZSByZXByZXNlbnRhdGlvbi4gKi8KLSN1bmRlZiBQWV9VTklDT0RFX1RZUEUKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGludGVycHJldGVyIHdpdGggbWFueSBydW4tdGltZSBjaGVja3MuICovCiAjdW5kZWYgUHlfREVCVUcKIAogLyogRGVmaW5lZCBpZiBQeXRob24gaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeS4gKi8KICN1bmRlZiBQeV9FTkFCTEVfU0hBUkVECiAKLS8qIERlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLiAqLwotI3VuZGVmIFB5X1VOSUNPREVfU0laRQotCiAvKiBhc3N1bWUgQzg5IHNlbWFudGljcyB0aGF0IFJFVFNJR1RZUEUgaXMgYWx3YXlzIHZvaWQgKi8KICN1bmRlZiBSRVRTSUdUWVBFCiAKQEAgLTEwNzAsNiArMTI1NCw5IEBACiAvKiBEZWZpbmUgaWYgdGFuaCgtMC4pIGlzIC0wLiwgb3IgaWYgcGxhdGZvcm0gZG9lc24ndCBoYXZlIHNpZ25lZCB6ZXJvcyAqLwogI3VuZGVmIFRBTkhfUFJFU0VSVkVTX1pFUk9fU0lHTgogCisvKiBMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKSAqLworI3VuZGVmIFRJTUVNT0RVTEVfTElCCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAqLwogI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQogCkBAIC0xMTgyLDE0ICsxMzY5LDExIEBACiAvKiBEZWZpbmUgb24gTmV0QlNEIHRvIGFjdGl2YXRlIGFsbCBsaWJyYXJ5IGZlYXR1cmVzICovCiAjdW5kZWYgX05FVEJTRF9TT1VSQ0UKIAotLyogRGVmaW5lIF9PU0ZfU09VUkNFIHRvIGdldCB0aGUgbWFrZWRldiBtYWNyby4gKi8KLSN1bmRlZiBfT1NGX1NPVVJDRQotCiAvKiBEZWZpbmUgdG8gMiBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQgd2l0aAogICAgdGhpcyBkZWZpbmVkLiAqLwogI3VuZGVmIF9QT1NJWF8xX1NPVVJDRQogCi0vKiBEZWZpbmUgdG8gYWN0aXZhdGUgZmVhdHVyZXMgZnJvbSBJRUVFIFN0ZHMgMTAwMy4xLTIwMDEgKi8KKy8qIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwOCAqLwogI3VuZGVmIF9QT1NJWF9DX1NPVVJDRQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGluZ3MgdG8gd29yay4gKi8KZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMGRlYTkyNC4uNGQ2OTMyNiAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTEsOCArMSw2IEBACiAjIEF1dG9kZXRlY3Rpbmcgc2V0dXAucHkgc2NyaXB0IGZvciBidWlsZGluZyB0aGUgUHl0aG9uIGV4dGVuc2lvbnMKICMKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cywgb3MsIGltcCwgcmUsIG9wdHBhcnNlCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIGltcG9ydCBzeXNjb25maWcKQEAgLTE3LDE2ICsxNSwyNCBAQAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9zY3JpcHRzIGltcG9ydCBidWlsZF9zY3JpcHRzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCiAKK2Nyb3NzX2NvbXBpbGluZyA9ICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb24KKworZGVmIGdldF9wbGF0Zm9ybSgpOgorICAgICMgY3Jvc3MgYnVpbGQKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKyAgICAjIEdldCB2YWx1ZSBvZiBzeXMucGxhdGZvcm0KKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3NmMScpOgorICAgICAgICByZXR1cm4gJ29zZjEnCisgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQoraG9zdF9wbGF0Zm9ybSA9IGdldF9wbGF0Zm9ybSgpCisKICMgV2VyZSB3ZSBjb21waWxlZCAtLXdpdGgtcHlkZWJ1ZyBvciB3aXRoICNkZWZpbmUgUHlfREVCVUc/Ci1DT01QSUxFRF9XSVRIX1BZREVCVUcgPSBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKQorQ09NUElMRURfV0lUSF9QWURFQlVHID0gKCctLXdpdGgtcHlkZWJ1ZycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpKQogCiAjIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgdG8gaG9sZCB0aGUgbGlzdCBvZiBtb2R1bGVzIHRvIGJlIGRpc2FibGVkLgogZGlzYWJsZWRfbW9kdWxlX2xpc3QgPSBbXQogCi0jIEZpbGUgd2hpY2ggY29udGFpbnMgdGhlIGRpcmVjdG9yeSBmb3Igc2hhcmVkIG1vZHMgKGZvciBzeXMucGF0aCBmaXh1cAotIyB3aGVuIHJ1bm5pbmcgZnJvbSB0aGUgYnVpbGQgZGlyLCBzZWUgTW9kdWxlcy9nZXRwYXRoLmMpCi1fQlVJTERESVJfQ09PS0lFID0gInB5YnVpbGRkaXIudHh0IgotCiBkZWYgYWRkX2Rpcl90b19saXN0KGRpcmxpc3QsIGRpcik6CiAgICAgIiIiQWRkIHRoZSBkaXJlY3RvcnkgJ2RpcicgdG8gdGhlIGxpc3QgJ2Rpcmxpc3QnIChhZnRlciBhbnkgcmVsYXRpdmUKICAgICBkaXJlY3RvcmllcykgaWY6CkBAIC01OSw3ICs2NSw2IEBACiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmICdwYXRoJyBjYW4gYmUgbG9jYXRlZCBpbiBhbiBPU1ggU0RLCiAgICAgIiIiCi0gICAgcmV0dXJuIChwYXRoLnN0YXJ0c3dpdGgoJy91c3IvJykgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoJy91c3IvbG9jYWwnKSkgb3IgcGF0aC5zdGFydHN3aXRoKCcvU3lzdGVtLycpCiAgICAgcmV0dXJuICggKHBhdGguc3RhcnRzd2l0aCgnL3Vzci8nKSBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnL3Vzci9sb2NhbCcpKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL1N5c3RlbS8nKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL0xpYnJhcnkvJykgKQpAQCAtNzUsNyArODAsNyBAQAogICAgICdwYXRocycgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwgbG9jYXRpb25zIHRvIGNoZWNrOyBpZiB0aGUgZmlsZSBpcwogICAgICAgICBmb3VuZCBpbiBvbmUgb2YgdGhlbSwgdGhlIHJlc3VsdGluZyBsaXN0IHdpbGwgY29udGFpbiB0aGUgZGlyZWN0b3J5LgogICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAjIEhvbm9yIHRoZSBNYWNPU1ggU0RLIHNldHRpbmcgd2hlbiBvbmUgd2FzIHNwZWNpZmllZC4KICAgICAgICAgIyBBbiBTREsgaXMgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYSByZWFsCiAgICAgICAgICMgc3lzdGVtLCBidXQgd2l0aCBvbmx5IGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzLgpAQCAtODUsNyArOTAsNyBAQAogICAgIGZvciBkaXIgaW4gc3RkX2RpcnM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6IHJldHVybiBbXQpAQCAtOTQsNyArOTksNyBAQAogICAgIGZvciBkaXIgaW4gcGF0aHM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6CkBAIC0xMDgsNyArMTEzLDcgQEAKICAgICBpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICMgQ2hlY2sgd2hldGhlciB0aGUgZm91bmQgZmlsZSBpcyBpbiBvbmUgb2YgdGhlIHN0YW5kYXJkIGRpcmVjdG9yaWVzCkBAIC0xMTcsNyArMTIyLDcgQEAKICAgICAgICAgIyBFbnN1cmUgcGF0aCBkb2Vzbid0IGVuZCB3aXRoIHBhdGggc2VwYXJhdG9yCiAgICAgICAgIHAgPSBwLnJzdHJpcChvcy5zZXApCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguam9pbihzeXNyb290LCBwWzE6XSkgPT0gZGlybmFtZToKICAgICAgICAgICAgICAgICByZXR1cm4gWyBdCiAKQEAgLTEzMCw3ICsxMzUsNyBAQAogICAgICAgICAjIEVuc3VyZSBwYXRoIGRvZXNuJ3QgZW5kIHdpdGggcGF0aCBzZXBhcmF0b3IKICAgICAgICAgcCA9IHAucnN0cmlwKG9zLnNlcCkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKHApOgogICAgICAgICAgICAgaWYgb3MucGF0aC5qb2luKHN5c3Jvb3QsIHBbMTpdKSA9PSBkaXJuYW1lOgogICAgICAgICAgICAgICAgIHJldHVybiBbIHAgXQogCkBAIC0xOTEsOSArMTk2LDYgQEAKICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKHNyY2RpcikKICAgICAgICAgbW9kZGlybGlzdCA9IFtvcy5wYXRoLmpvaW4oc3JjZGlyLCAnTW9kdWxlcycpXQogCi0gICAgICAgICMgUGxhdGZvcm0tZGVwZW5kZW50IG1vZHVsZSBzb3VyY2UgYW5kIGluY2x1ZGUgZGlyZWN0b3JpZXMKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCi0KICAgICAgICAgIyBGaXggdXAgdGhlIHBhdGhzIGZvciBzY3JpcHRzLCB0b28KICAgICAgICAgc2VsZi5kaXN0cmlidXRpb24uc2NyaXB0cyA9IFtvcy5wYXRoLmpvaW4oc3JjZGlyLCBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5kaXN0cmlidXRpb24uc2NyaXB0c10KQEAgLTI0NiwxNiArMjQ4LDYgQEAKICAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgY2ZsYWdzCiAgICAgICAgIHNlbGYuY29tcGlsZXIuc2V0X2V4ZWN1dGFibGVzKCoqYXJncykKIAotICAgICAgICAjIE5vdCBvbmx5IGRvIHdlIHdyaXRlIHRoZSBidWlsZGRpciBjb29raWUsIGJ1dCB3ZSBtYW51YWxseSBpbnN0YWxsCi0gICAgICAgICMgdGhlIHNoYXJlZCBtb2R1bGVzIGRpcmVjdG9yeSBpZiBpdCBpc24ndCBhbHJlYWR5IGluIHN5cy5wYXRoLgotICAgICAgICAjIE90aGVyd2lzZSB0cnlpbmcgdG8gaW1wb3J0IHRoZSBleHRlbnNpb25zIGFmdGVyIGJ1aWxkaW5nIHRoZW0KLSAgICAgICAgIyB3aWxsIGZhaWwuCi0gICAgICAgIHdpdGggb3BlbihfQlVJTERESVJfQ09PS0lFLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShzZWxmLmJ1aWxkX2xpYi5lbmNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpKQotICAgICAgICBhYnNfYnVpbGRfbGliID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBzZWxmLmJ1aWxkX2xpYikKLSAgICAgICAgaWYgYWJzX2J1aWxkX2xpYiBub3QgaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQoYWJzX2J1aWxkX2xpYikKLQogICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQogCiAgICAgICAgIGxvbmdlc3QgPSBtYXgoW2xlbihlLm5hbWUpIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc10pCkBAIC0zMDgsNyArMzAwLDcgQEAKICAgICAgICAgICAgICAgICBleHQubmFtZSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2RhcndpbicgYW5kICgKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKAogICAgICAgICAgICAgICAgIHN5cy5tYXhzaXplID4gMioqMzIgYW5kICctYXJjaCcgaW4gZXh0LmV4dHJhX2xpbmtfYXJncyk6CiAgICAgICAgICAgICAjIERvbid0IGJvdGhlciBkb2luZyBhbiBpbXBvcnQgY2hlY2sgd2hlbiBhbiBleHRlbnNpb24gd2FzCiAgICAgICAgICAgICAjIGJ1aWxkIHdpdGggYW4gZXhwbGljaXQgJy1hcmNoJyBmbGFnIG9uIE9TWC4gVGhhdCdzIGN1cnJlbnRseQpAQCAtMzIyLDcgKzMxNCw3IEBACiAKICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBDeWd3aW46IEN5Z3dpbiBjdXJyZW50bHkgaGFzIGZvcmsgaXNzdWVzIHdoZW4gbWFueQogICAgICAgICAjIG1vZHVsZXMgaGF2ZSBiZWVuIGltcG9ydGVkCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIEN5Z3dpbi1iYXNlZCAiJXMiJwogICAgICAgICAgICAgICAgICUgZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMzNSw2ICszMjcsMTAgQEAKICAgICAgICAgIyBjYWNoZWQuICBDbGVhciB0aGF0IGNhY2hlIGJlZm9yZSB0cnlpbmcgdG8gaW1wb3J0LgogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCiAKKyAgICAgICAgIyBEb24ndCB0cnkgdG8gbG9hZCBleHRlbnNpb25zIGZvciBjcm9zcyBidWlsZHMKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhleHQubmFtZSwgZXh0X2ZpbGVuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgd2h5OgpAQCAtMzY2LDEzICszNjIsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0zKQogICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQogCi0gICAgZGVmIGdldF9wbGF0Zm9ybShzZWxmKToKLSAgICAgICAgIyBHZXQgdmFsdWUgb2Ygc3lzLnBsYXRmb3JtCi0gICAgICAgIGZvciBwbGF0Zm9ybSBpbiBbJ2N5Z3dpbicsICdkYXJ3aW4nLCAnb3NmMSddOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgocGxhdGZvcm0pOgotICAgICAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybQotICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCi0KICAgICBkZWYgYWRkX211bHRpYXJjaF9wYXRocyhzZWxmKToKICAgICAgICAgIyBEZWJpYW4vVWJ1bnR1IG11bHRpYXJjaCBzdXBwb3J0LgogICAgICAgICAjIGh0dHBzOi8vd2lraS51YnVudHUuY29tL011bHRpYXJjaFNwZWMKQEAgLTM5OSwxMiArMzg4LDE1IEBACiAKICAgICAgICAgaWYgbm90IGZpbmRfZXhlY3V0YWJsZSgnZHBrZy1hcmNoaXRlY3R1cmUnKToKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBvcHQgPSAnJworICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBvcHQgPSAnLXQnICsgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIT1NUX0dOVV9UWVBFJykKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdtdWx0aWFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKAotICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCi0gICAgICAgICAgICB0bXBmaWxlKQorICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlICVzIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCisgICAgICAgICAgICAob3B0LCB0bXBmaWxlKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CkBAIC00MTYsMTIgKzQwOCw0OCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCiAKKyAgICBkZWYgYWRkX2djY19wYXRocyhzZWxmKToKKyAgICAgICAgZ2NjID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpCisgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnZ2NjcGF0aHMnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKKyAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCclcyAtRSAtdiAtIDwvZGV2L251bGwgMj4lcyAxPi9kZXYvbnVsbCcgJSAoZ2NjLCB0bXBmaWxlKSkKKyAgICAgICAgaXNfZ2NjID0gRmFsc2UKKyAgICAgICAgaW5faW5jZGlycyA9IEZhbHNlCisgICAgICAgIGluY19kaXJzID0gW10KKyAgICAgICAgbGliX2RpcnMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgorICAgICAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnAucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoImdjYyB2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZ2NjID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIiNpbmNsdWRlIDwuLi4+Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW5jZGlycyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJFbmQgb2Ygc2VhcmNoIGxpc3QiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9pbmNkaXJzID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkxJQlJBUllfUEFUSCIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGxpbmUuc3RyaXAoKS5zcGxpdCgiPSIpWzFdLnNwbGl0KCI6Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBvcy5wYXRoLm5vcm1wYXRoKGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcvZ2NjLycgbm90IGluIGQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBpbl9pbmNkaXJzIGFuZCAnL2djYy8nIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5zdHJpcCgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisKICAgICBkZWYgZGV0ZWN0X21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgL3Vzci9sb2NhbCBpcyBhbHdheXMgdXNlZCwgYnV0IHRoZSBsb2NhbCBidWlsZAogICAgICAgICAjIGRpcmVjdG9yaWVzIChpLmUuICcuJyBhbmQgJ0luY2x1ZGUnKSBtdXN0IGJlIGZpcnN0LiAgU2VlIGlzc3VlCiAgICAgICAgICMgMTA1MjAuCi0gICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKLSAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCisgICAgICAgICMgb25seSBjaGFuZ2UgdGhpcyBmb3IgY3Jvc3MgYnVpbGRzIGZvciAzLjMsIGlzc3VlcyBvbiBNYWdlaWEKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKIAogICAgICAgICAjIEFkZCBwYXRocyBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBMREZMQUdTIGFuZApAQCAtNDU4LDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChkaXJfbGlzdCwgZGlyZWN0b3J5KQogCi0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKKyAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpICE9ICcvdXNyJyBcCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgogICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawogICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KQEAgLTQ3MiwxMSArNTAwLDE1IEBACiAgICAgICAgICMgbGliX2RpcnMgYW5kIGluY19kaXJzIGFyZSB1c2VkIHRvIHNlYXJjaCBmb3IgZmlsZXM7CiAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCiAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgotICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwotICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKLSAgICAgICAgICAgICcvbGliJywgJy91c3IvbGliJywKLSAgICAgICAgICAgIF0KLSAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMgKyBbCisgICAgICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKKyAgICAgICAgICAgICAgICAnL2xpYicsICcvdXNyL2xpYicsCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnNbOl0KKyAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnNbOl0KICAgICAgICAgZXh0cyA9IFtdCiAgICAgICAgIG1pc3NpbmcgPSBbXQogCkBAIC00ODQsMTggKzUxNiwxNyBAQAogICAgICAgICB3aXRoIG9wZW4oY29uZmlnX2gpIGFzIGZpbGU6CiAgICAgICAgICAgICBjb25maWdfaF92YXJzID0gc3lzY29uZmlnLnBhcnNlX2NvbmZpZ19oKGZpbGUpCiAKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCiAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKIAogICAgICAgICAjIE9TRi8xIGFuZCBVbml4d2FyZSBoYXZlIHNvbWUgc3R1ZmYgaW4gL3Vzci9jY3MvbGliIChsaWtlIC1sZGIpCi0gICAgICAgIGlmIHBsYXRmb3JtIGluIFsnb3NmMScsICd1bml4d2FyZTcnLCAnb3BlbnVuaXg4J106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gaW4gWydvc2YxJywgJ3VuaXh3YXJlNycsICdvcGVudW5peDgnXToKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9jY3MvbGliJ10KIAogICAgICAgICAjIEhQLVVYMTFpdjMga2VlcHMgZmlsZXMgaW4gbGliL2hwdXggZm9sZGVycy4KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2hwLXV4MTEnOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdocC11eDExJzoKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9saWIvaHB1eDY0JywgJy91c3IvbGliL2hwdXgzMiddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIHdvcmsgb24gYW55IHVuaXh5IHBsYXRmb3JtIDstKQogICAgICAgICAgICAgIyBJZiB0aGUgdXNlciBoYXMgYm90aGVyZWQgc3BlY2lmeWluZyBhZGRpdGlvbmFsIC1JIGFuZCAtTCBmbGFncwogICAgICAgICAgICAgIyBpbiBPUFQgYW5kIExERkxBR1Mgd2UgbWlnaHQgYXMgd2VsbCB1c2UgdGhlbSBoZXJlLgpAQCAtNTE1LDcgKzU0Niw3IEBACiAKICAgICAgICAgIyBDaGVjayBmb3IgTWFjT1MgWCwgd2hpY2ggZG9lc24ndCBuZWVkIGxpYm0uYSBhdCBhbGwKICAgICAgICAgbWF0aF9saWJzID0gWydtJ10KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBtYXRoX2xpYnMgPSBbXQogCiAgICAgICAgICMgWFhYIE9taXR0ZWQgbW9kdWxlczogZ2wsIHB1cmUsIGRsLCBTR0ktc3BlY2lmaWMgbW9kdWxlcwpAQCAtNTM1LDExICs1NjYsMTcgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignbWF0aCcsICBbJ21hdGhtb2R1bGUuYycsICdfbWF0aC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ19tYXRoLmgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisKKyAgICAgICAgIyB0aW1lIGxpYnJhcmllczogbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpCisgICAgICAgIHRpbWVfbGlicyA9IFtdCisgICAgICAgIGxpYiA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignVElNRU1PRFVMRV9MSUInKQorICAgICAgICBpZiBsaWI6CisgICAgICAgICAgICB0aW1lX2xpYnMuYXBwZW5kKGxpYikKKwogICAgICAgICAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYycsICdfdGltZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfZGF0ZXRpbWUnLCBbJ19kYXRldGltZW1vZHVsZS5jJywgJ190aW1lLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz10aW1lX2xpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2RhdGV0aW1lJywgWydfZGF0ZXRpbWVtb2R1bGUuYyddKSApCiAgICAgICAgICMgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW1wbGVtZW50ZWQgaW4gQwogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfcmFuZG9tIiwgWyJfcmFuZG9tbW9kdWxlLmMiXSkgKQogICAgICAgICAjIGJpc2VjdApAQCAtNTU1LDYgKzU5Miw4IEBACiAgICAgICAgICMgUHl0aG9uIEMgQVBJIHRlc3QgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0Y2FwaScsIFsnX3Rlc3RjYXBpbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsndGVzdGNhcGlfbG9uZy5oJ10pICkKKyAgICAgICAgIyBQeXRob24gUEVQLTMxMTggKGJ1ZmZlciBwcm90b2NvbCkgdGVzdCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3Rlc3RidWZmZXInLCBbJ190ZXN0YnVmZmVyLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTYxMiwxMyArNjUxLDIwIEBACiAgICAgICAgIGRvX3JlYWRsaW5lID0gc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3JlYWRsaW5lJykKICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gIiIKICAgICAgICAgY3Vyc2VzX2xpYnJhcnkgPSAiIgorICAgICAgICAjIENhbm5vdCB1c2Ugb3MucG9wZW4gaGVyZSBpbiBweTNrLgorICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCiAgICAgICAgICMgRGV0ZXJtaW5lIGlmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzIG9yIHRpbmZvLgotICAgICAgICBpZiBkb19yZWFkbGluZSBhbmQgZmluZF9leGVjdXRhYmxlKCdsZGQnKToKLSAgICAgICAgICAgICMgQ2Fubm90IHVzZSBvcy5wb3BlbiBoZXJlIGluIHB5M2suCi0gICAgICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgibGRkICVzID4gJXMiICUgKGRvX3JlYWRsaW5lLCB0bXBmaWxlKSkKKyAgICAgICAgaWYgZG9fcmVhZGxpbmU6CisgICAgICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCIlcyAtZCAlcyB8IGdyZXAgJyhORUVERUQpJyA+ICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUkVBREVMRicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19yZWFkbGluZSwgdG1wZmlsZSkpCisgICAgICAgICAgICBlbGlmIGZpbmRfZXhlY3V0YWJsZSgnbGRkJyk6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCJsZGQgJXMgPiAlcyIgJSAoZG9fcmVhZGxpbmUsIHRtcGZpbGUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXQgPSAyNTYKICAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGUpIGFzIGZwOgogICAgICAgICAgICAgICAgICAgICBmb3IgbG4gaW4gZnA6CkBAIC02MzEsNyArNjc3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICd0aW5mbycgaW4gbG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gJ3RpbmZvJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBvcy51bmxpbmsodG1wZmlsZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcGZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQogICAgICAgICAjIElzc3VlIDczODQ6IElmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzLAogICAgICAgICAjIHVzZSB0aGUgc2FtZSBsaWJyYXJ5IGZvciB0aGUgcmVhZGxpbmUgYW5kIGN1cnNlcyBtb2R1bGVzLgogICAgICAgICBpZiAnY3Vyc2VzJyBpbiByZWFkbGluZV90ZXJtY2FwX2xpYnJhcnk6CkBAIC02NDMsNyArNjkwLDcgQEAKICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnY3Vyc2VzJyk6CiAgICAgICAgICAgICBjdXJzZXNfbGlicmFyeSA9ICdjdXJzZXMnCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBvc19yZWxlYXNlID0gaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkKICAgICAgICAgICAgIGRlcF90YXJnZXQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCiAgICAgICAgICAgICBpZiBkZXBfdGFyZ2V0IGFuZCBkZXBfdGFyZ2V0LnNwbGl0KCcuJykgPCBbJzEwJywgJzUnXToKQEAgLTY1NSw3ICs3MDIsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgncmVhZGxpbmUvcmxjb25mLmgnLCBpbmNfZGlycywgW10pIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRvX3JlYWRsaW5lID0gRmFsc2UKICAgICAgICAgaWYgZG9fcmVhZGxpbmU6Ci0gICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgb3NfcmVsZWFzZSA8IDk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBvc19yZWxlYXNlIDwgOToKICAgICAgICAgICAgICAgICAjIEluIGV2ZXJ5IGRpcmVjdG9yeSBvbiB0aGUgc2VhcmNoIHBhdGggc2VhcmNoIGZvciBhIGR5bmFtaWMKICAgICAgICAgICAgICAgICAjIGxpYnJhcnkgYW5kIHRoZW4gYSBzdGF0aWMgbGlicmFyeSwgaW5zdGVhZCBvZiBmaXJzdCBsb29raW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgZHluYW1pYyBsaWJyYXJpZXMgb24gdGhlIGVudGlyZSBwYXRoLgpAQCAtNjg3LDcgKzczNCw3IEBACiAgICAgICAgICAgICBsaWJzID0gWydjcnlwdCddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaWJzID0gW10KLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignY3J5cHQnLCBbJ2NyeXB0bW9kdWxlLmMnXSwgbGlicmFyaWVzPWxpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2NyeXB0JywgWydfY3J5cHRtb2R1bGUuYyddLCBsaWJyYXJpZXM9bGlicykgKQogCiAgICAgICAgICMgQ1NWIGZpbGVzCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jc3YnLCBbJ19jc3YuYyddKSApCkBAIC03MzYsNyArNzgzLDcgQEAKICAgICAgICAgICAgICAgICBpbmNfZGlycyArIHNlYXJjaF9mb3Jfc3NsX2luY3NfaW4pCiAgICAgICAgIGlmIG9wZW5zc2x2X2g6CiAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG9wZW5zc2x2X2hbMF0sICdvcGVuc3NsL29wZW5zc2x2LmgnKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CiAgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihtYWNvc3hfc2RrX3Jvb3QoKSwgbmFtZVsxOl0pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICdyJykgYXMgaW5jZmlsZToKQEAgLTc2OCwyMCArODE1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbF92ZXIpCiAgICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19oYXNobGliJykKIAotICAgICAgICBtaW5fc2hhMl9vcGVuc3NsX3ZlciA9IDB4MDA5MDgwMDAKLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG9wZW5zc2xfdmVyIDwgbWluX3NoYTJfb3BlbnNzbF92ZXI6Ci0gICAgICAgICAgICAjIE9wZW5TU0wgZG9lc24ndCBkbyB0aGVzZSB1bnRpbCAwLjkuOCBzbyB3ZSdsbCBicmluZyBvdXIgb3duIGhhc2gKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQotICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTUxMicsIFsnc2hhNTEybW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCi0KLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG5vdCBoYXZlX3VzYWJsZV9vcGVuc3NsOgotICAgICAgICAgICAgIyBubyBvcGVuc3NsIGF0IGFsbCwgdXNlIG91ciBvd24gbWQ1IGFuZCBzaGExCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbWQ1JywgWydtZDVtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgICMgV2UgYWx3YXlzIGNvbXBpbGUgdGhlc2UgZXZlbiB3aGVuIE9wZW5TU0wgaXMgYXZhaWxhYmxlIChpc3N1ZSAjMTQ2OTMpLgorICAgICAgICAjIEl0J3MgaGFybWxlc3MgYW5kIHRoZSBvYmplY3QgY29kZSBpcyB0aW55ICg0MC01MCBLQiBwZXIgbW9kdWxlLAorICAgICAgICAjIG9ubHkgbG9hZGVkIHdoZW4gYWN0dWFsbHkgdXNlZCkuCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGE1MTInLCBbJ3NoYTUxMm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19tZDUnLCBbJ21kNW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKIAogICAgICAgICAjIE1vZHVsZXMgdGhhdCBwcm92aWRlIHBlcnNpc3RlbnQgZGljdGlvbmFyeS1saWtlIHNlbWFudGljcy4gIFlvdSB3aWxsCiAgICAgICAgICMgcHJvYmFibHkgd2FudCB0byBhcnJhbmdlIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byBiZSBhdmFpbGFibGUgb24KQEAgLTc5OCw3ICs4NDIsNyBAQAogICAgICAgICAjIGEgcmVsZWFzZS4gIE1vc3Qgb3BlbiBzb3VyY2UgT1NlcyBjb21lIHdpdGggb25lIG9yIG1vcmUKICAgICAgICAgIyB2ZXJzaW9ucyBvZiBCZXJrZWxleURCIGFscmVhZHkgaW5zdGFsbGVkLgogCi0gICAgICAgIG1heF9kYl92ZXIgPSAoNSwgMSkKKyAgICAgICAgbWF4X2RiX3ZlciA9ICg1LCAzKQogICAgICAgICBtaW5fZGJfdmVyID0gKDMsIDMpCiAgICAgICAgIGRiX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAKQEAgLTg1NSw2ICs4OTksOSBAQAogICAgICAgICAgICAgZGJfaW5jX3BhdGhzLmFwcGVuZCgnL3BrZy9kYi0zLiVkL2luY2x1ZGUnICUgeCkKICAgICAgICAgICAgIGRiX2luY19wYXRocy5hcHBlbmQoJy9vcHQvZGItMy4lZC9pbmNsdWRlJyAlIHgpCiAKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgZGJfaW5jX3BhdGhzID0gW10KKwogICAgICAgICAjIEFkZCBzb21lIGNvbW1vbiBzdWJkaXJlY3RvcmllcyBmb3IgU2xlZXB5Y2F0IERCIHRvIHRoZSBsaXN0LAogICAgICAgICAjIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCBpbmNsdWRlIGRpcmVjdG9yaWVzLiBUaGlzIHdheSBEQjMvNCBnZXRzCiAgICAgICAgICMgcGlja2VkIHVwIHdoZW4gaXQgaXMgaW5zdGFsbGVkIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeCBhbmQKQEAgLTg3NSw3ICs5MjIsNyBAQAogCiAgICAgICAgIGRiX3Zlcl9pbmNfbWFwID0ge30KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICAgICBjbGFzcyBkYl9mb3VuZChFeGNlcHRpb24pOiBwYXNzCkBAIC04ODQsNyArOTMxLDcgQEAKICAgICAgICAgICAgICMgc2VhcmNoIHBhdGguCiAgICAgICAgICAgICBmb3IgZCBpbiBpbmNfZGlycyArIGRiX2luY19wYXRoczoKICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKGQsICJkYi5oIikKLSAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkKToKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZFsxOl0sICJkYi5oIikKIAogICAgICAgICAgICAgICAgIGlmIGRiX3NldHVwX2RlYnVnOiBwcmludCgiZGI6IGxvb2tpbmcgZm9yIGRiLmggaW4iLCBmKQpAQCAtOTM1LDcgKzk4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRiX2luY2Rpci5yZXBsYWNlKCJpbmNsdWRlIiwgJ2xpYicpLAogICAgICAgICAgICAgICAgIF0KIAotICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgICAgICBkYl9kaXJzX3RvX2NoZWNrID0gbGlzdChmaWx0ZXIob3MucGF0aC5pc2RpciwgZGJfZGlyc190b19jaGVjaykpCiAKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtOTkxLDcgKzEwMzgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZS9zcWxpdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlL3NxbGl0ZTMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHNxbGl0ZV9pbmNfcGF0aHMgPSBbXQogICAgICAgICBNSU5fU1FMSVRFX1ZFUlNJT05fTlVNQkVSID0gKDMsIDAsIDgpCiAgICAgICAgIE1JTl9TUUxJVEVfVkVSU0lPTiA9ICIuIi5qb2luKFtzdHIoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIE1JTl9TUUxJVEVfVkVSU0lPTl9OVU1CRVJdKQpAQCAtOTk5LDEyICsxMDQ4LDEyIEBACiAgICAgICAgICMgU2NhbiB0aGUgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yaWVzIGJlZm9yZSB0aGUgU1FMaXRlIHNwZWNpZmljCiAgICAgICAgICMgb25lcy4gVGhpcyBhbGxvd3Mgb25lIHRvIG92ZXJyaWRlIHRoZSBjb3B5IG9mIHNxbGl0ZSBvbiBPU1gsCiAgICAgICAgICMgd2hlcmUgL3Vzci9pbmNsdWRlIGNvbnRhaW5zIGFuIG9sZCB2ZXJzaW9uIG9mIHNxbGl0ZS4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAgICAgZm9yIGRfIGluIGluY19kaXJzICsgc3FsaXRlX2luY19wYXRoczoKICAgICAgICAgICAgIGQgPSBkXwotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbihzeXNyb290LCBkWzE6XSkKIAogICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkLCAic3FsaXRlMy5oIikKQEAgLTEwNTUsNyArMTEwNCw3IEBACiAgICAgICAgICAgICAgICAgJ19zcWxpdGUvdXRpbC5jJywgXQogCiAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcyA9IFtdCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gIT0gIndpbjMyIjoKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCdNT0RVTEVfTkFNRScsICcic3FsaXRlMyInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgnTU9EVUxFX05BTUUnLCAnXFwic3FsaXRlM1xcIicpKQpAQCAtMTA2NSw3ICsxMTE0LDcgQEAKICAgICAgICAgICAgIGlmICctLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucycgbm90IGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCJTUUxJVEVfT01JVF9MT0FEX0VYVEVOU0lPTiIsICIxIikpCiAKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgIyBJbiBldmVyeSBkaXJlY3Rvcnkgb24gdGhlIHNlYXJjaCBwYXRoIHNlYXJjaCBmb3IgYSBkeW5hbWljCiAgICAgICAgICAgICAgICAgIyBsaWJyYXJ5IGFuZCB0aGVuIGEgc3RhdGljIGxpYnJhcnksIGluc3RlYWQgb2YgZmlyc3QgbG9va2luZwogICAgICAgICAgICAgICAgICMgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG9uIHRoZSBlbnRpcmUgcGF0aC4KQEAgLTEwNzUsMTAgKzExMjQsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2V4dHJhX2xpbmtfYXJncyA9ICgpCiAKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFsiTW9kdWxlcy9fc3FsaXRlIl0KKyAgICAgICAgICAgICMgT25seSBpbmNsdWRlIHRoZSBkaXJlY3Rvcnkgd2hlcmUgc3FsaXRlIHdhcyBmb3VuZCBpZiBpdCBkb2VzCisgICAgICAgICAgICAjIG5vdCBhbHJlYWR5IGV4aXN0IGluIHNldCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBvdGhlcndpc2UgeW91CisgICAgICAgICAgICAjIGNhbiBlbmQgdXAgd2l0aCBhIGJhZCBzZWFyY2ggcGF0aCBvcmRlci4KKyAgICAgICAgICAgIGlmIHNxbGl0ZV9pbmNkaXIgbm90IGluIHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzOgorICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoc3FsaXRlX2luY2RpcikKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX3NxbGl0ZTMnLCBzcWxpdGVfc3JjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPXNxbGl0ZV9kZWZpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX3NxbGl0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGVfaW5jZGlyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9aW5jbHVkZV9kaXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1zcWxpdGVfbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPXNxbGl0ZV9saWJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXNxbGl0ZV9leHRyYV9saW5rX2FyZ3MsCkBAIC0xMDg2LDkgKzExNDAsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfc3FsaXRlMycpCiAKKyAgICAgICAgZGJtX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAgICAgICAgIGRibV9vcmRlciA9IFsnZ2RibSddCiAgICAgICAgICMgVGhlIHN0YW5kYXJkIFVuaXggZGJtIG1vZHVsZToKLSAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CiAgICAgICAgICAgICBjb25maWdfYXJncyA9IFthcmcuc3RyaXAoIiciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikuc3BsaXQoKV0KICAgICAgICAgICAgIGRibV9hcmdzID0gW2FyZyBmb3IgYXJnIGluIGNvbmZpZ19hcmdzCkBAIC0xMTExLDcgKzExNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kYm1fbGlicyA9IFsnZ2RibV9jb21wYXQnXQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGJtX2xpYnMgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSEFWRV9OREJNX0gnLE5vbmUpLApAQCAtMTEyNiw3ICsxMTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZGJtX2NvbXBhdCcpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYm1fbGlicy5hcHBlbmQoJ2dkYm1fY29tcGF0JykKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgiZ2RibS9uZGJtLmgiLCBpbmNfZGlycywgW10pIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGJtX3NldHVwX2RlYnVnOiBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKQEAgLTExMzUsNyArMTE5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IGdkYm1fbGlicykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmluZF9maWxlKCJnZGJtLW5kYm0uaCIsIGluY19kaXJzLCBbXSkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBnZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwpAQCAtMTE0NSw3ICsxMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsaWYgY2FuZCA9PSAiYmRiIjoKICAgICAgICAgICAgICAgICAgICAgaWYgZGJfaW5jcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgYmRiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBiZGIiKQogICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKCdfZGJtJywgWydfZGJtbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKQEAgLTExNzAsMTQgKzEyMjUsMTQgQEAKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfZ2RibScpCiAKICAgICAgICAgIyBVbml4LW9ubHkgbW9kdWxlcwotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICAjIFN0ZWVuIEx1bWhvbHQncyB0ZXJtaW9zIG1vZHVsZQogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndGVybWlvcycsIFsndGVybWlvcy5jJ10pICkKICAgICAgICAgICAgICMgSmVyZW15IEh5bHRvbidzIHJsaW1pdCBpbnRlcmZhY2UKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3Jlc291cmNlJywgWydyZXNvdXJjZS5jJ10pICkKIAogICAgICAgICAgICAgIyBTdW4geWVsbG93IHBhZ2VzLiBTb21lIHN5c3RlbXMgaGF2ZSB0aGUgZnVuY3Rpb25zIGluIGxpYmMuCi0gICAgICAgICAgICBpZiAocGxhdGZvcm0gbm90IGluIFsnY3lnd2luJywgJ3FueDYnXSBhbmQKKyAgICAgICAgICAgIGlmIChob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbicsICdxbng2J10gYW5kCiAgICAgICAgICAgICAgICAgZmluZF9maWxlKCdycGNzdmMveXBfcHJvdC5oJywgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICduc2wnKSk6CiAgICAgICAgICAgICAgICAgICAgIGxpYnMgPSBbJ25zbCddCkBAIC0xMTkyLDE2ICsxMjQ3LDM1IEBACiAKICAgICAgICAgIyBDdXJzZXMgc3VwcG9ydCwgcmVxdWlyaW5nIHRoZSBTeXN0ZW0gViB2ZXJzaW9uIG9mIGN1cnNlcywgb2Z0ZW4KICAgICAgICAgIyBwcm92aWRlZCBieSB0aGUgbmN1cnNlcyBsaWJyYXJ5LgorICAgICAgICBjdXJzZXNfZGVmaW5lcyA9IFtdCisgICAgICAgIGN1cnNlc19pbmNsdWRlcyA9IFtdCiAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWwnCisgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6CisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19pbmNsdWRlcy5hcHBlbmQoJy91c3IvaW5jbHVkZS9uY3Vyc2VzdycpCisgICAgICAgICAgICAjIEJ1ZyAxNDY0MDU2OiBJZiBfY3Vyc2VzLnNvIGxpbmtzIHdpdGggbmN1cnNlc3csCisgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgICMgT24gT1MgWCwgdGhlcmUgaXMgbm8gc2VwYXJhdGUgL3Vzci9saWIvbGlibmN1cnNlc3cgbm9yCisgICAgICAgICAgICAgICAgIyBsaWJwYW5lbHcuICBJZiB3ZSBhcmUgaGVyZSwgd2UgZm91bmQgYSBsb2NhbGx5LXN1cHBsaWVkCisgICAgICAgICAgICAgICAgIyB2ZXJzaW9uIG9mIGxpYm5jdXJzZXN3LiAgVGhlcmUgc2hvdWxkIGJlIGFsc28gYmUgYQorICAgICAgICAgICAgICAgICMgbGlicGFuZWx3LiAgX1hPUEVOX1NPVVJDRSBkZWZpbmVzIGFyZSB1c3VhbGx5IGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgIyBmb3IgT1MgWCBidXQgd2UgbmVlZCBfWE9QRU5fU09VUkNFX0VYVEVOREVEIGhlcmUgZm9yCisgICAgICAgICAgICAgICAgIyBuY3Vyc2VzIHdpZGUgY2hhciBzdXBwb3J0CisgICAgICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCcsICcxJykpCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXMnOgorICAgICAgICAgICAgIyBCdWlsZGluZyB3aXRoIHRoZSBzeXN0ZW0tc3VwcGllZCBjb21iaW5lZCBsaWJuY3Vyc2VzL2xpYnBhbmVsCisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ19YT1BFTl9TT1VSQ0VfRVhURU5ERUQnLCAnMScpKQorCiAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5LnN0YXJ0c3dpdGgoJ25jdXJzZXMnKToKLSAgICAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6Ci0gICAgICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAotICAgICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCi0gICAgICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCiAgICAgICAgICAgICBjdXJzZXNfbGlicyA9IFtjdXJzZXNfbGlicmFyeV0KICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9Y3Vyc2VzX2luY2x1ZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQotICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5ID09ICdjdXJzZXMnIGFuZCBwbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeSA9PSAnY3Vyc2VzJyBhbmQgaG9zdF9wbGF0Zm9ybSAhPSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICAjIE9TWCBoYXMgYW4gb2xkIEJlcmtlbGV5IGN1cnNlcywgbm90IGdvb2QgZW5vdWdoIGZvcgogICAgICAgICAgICAgICAgICMgdGhlIF9jdXJzZXMgbW9kdWxlLgogICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICd0ZXJtaW5mbycpKToKQEAgLTEyMTIsNiArMTI4Niw3IEBACiAgICAgICAgICAgICAgICAgY3Vyc2VzX2xpYnMgPSBbJ2N1cnNlcyddCiAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19jdXJzZXMnKQpAQCAtMTIyMCw2ICsxMjk1LDggQEAKICAgICAgICAgaWYgKG1vZHVsZV9lbmFibGVkKGV4dHMsICdfY3Vyc2VzJykgYW5kCiAgICAgICAgICAgICBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBwYW5lbF9saWJyYXJ5KSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzX3BhbmVsJywgWydfY3Vyc2VzX3BhbmVsLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWN1cnNlc19pbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gW3BhbmVsX2xpYnJhcnldICsgY3Vyc2VzX2xpYnMpICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY3Vyc2VzX3BhbmVsJykKQEAgLTEyNTIsNyArMTMyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSB2ZXJzaW9uX3JlcToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3onKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgemxpYl9leHRyYV9saW5rX2FyZ3MgPSAoKQpAQCAtMTI4NCwxNSArMTM2MSwyMiBAQAogCiAgICAgICAgICMgR3VzdGF2byBOaWVtZXllcidzIGJ6MiBtb2R1bGUuCiAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnYnoyJykpOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2J6MicsIFsnYnoybW9kdWxlLmMnXSwKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19iejInLCBbJ19iejJtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2J6MiddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MgPSBiejJfZXh0cmFfbGlua19hcmdzKSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnYnoyJykKKyAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfYnoyJykKKworICAgICAgICAjIExaTUEgY29tcHJlc3Npb24gc3VwcG9ydC4KKyAgICAgICAgaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2x6bWEnKToKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sem1hJywgWydfbHptYW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbHptYSddKSApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2x6bWEnKQogCiAgICAgICAgICMgSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBYTUwgcGFyc2VyCiAgICAgICAgICMKQEAgLTEzNDgsMzMgKzE0MzIsMzYgQEAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX2NvZGVjc18lcycgJSBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjamtjb2RlY3MvX2NvZGVjc18lcy5jJyAlIGxvY10pKQogCisgICAgICAgICMgU3RlZmFuIEtyYWgncyBfZGVjaW1hbCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoc2VsZi5fZGVjaW1hbF9leHQoKSkKKwogICAgICAgICAjIFRob21hcyBIZWxsZXIncyBfY3R5cGVzIG1vZHVsZQogICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoaW5jX2RpcnMsIGxpYl9kaXJzKQogCiAgICAgICAgICMgUmljaGFyZCBPdWRrZXJrJ3MgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgICAgICAjIFdpbmRvd3MKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgIyBXaW5kb3dzCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnd3MyXzMyJ10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgICAgICAjIE1hYyBPU1gKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgIyBNYWMgT1NYCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzogICAgICAgICAgIyBDeWd3aW4KKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdjeWd3aW4nOiAgICAgIyBDeWd3aW4KICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKICAgICAgICAgICAgICMgRnJlZUJTRCdzIFAxMDAzLjFiIHNlbWFwaG9yZSBzdXBwb3J0IGlzIHZlcnkgZXhwZXJpbWVudGFsCiAgICAgICAgICAgICAjIGFuZCBoYXMgbWFueSBrbm93biBwcm9ibGVtcy4gKGFzIG9mIEp1bmUgMjAwOCkKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6CiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKQEAgLTEzODIsMTcgKzE0NjksMTMgQEAKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nX3NyY3MgPSBbICdfbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZ19zcmNzID0gWyAnX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgaWYgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9TRU1fT1BFTicpIGFuZCBub3QKICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQnKSk6CkBAIC0xNDA3LDE0ICsxNDkwLDEyIEBACiAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwogCiAgICAgICAgICMgUGxhdGZvcm0tc3BlY2lmaWMgbGlicmFyaWVzCi0gICAgICAgIGlmIChwbGF0Zm9ybSBpbiAoJ2xpbnV4MicsICdmcmVlYnNkNCcsICdmcmVlYnNkNScsICdmcmVlYnNkNicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKQotICAgICAgICAgICAgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgiZ251a2ZyZWVic2QiKSk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JywgJ2ZyZWVic2QnLCAnZ251a2ZyZWVic2QnKSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdvc3NhdWRpb2RldicsIFsnb3NzYXVkaW9kZXYuYyddKSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnb3NzYXVkaW9kZXYnKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24oJ19nZXN0YWx0JywgWydfZ2VzdGFsdC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1bJy1mcmFtZXdvcmsnLCAnQ2FyYm9uJ10pCkBAIC0xNTMyLDggKzE2MTMsNyBAQAogICAgICAgICAjIFJhdGhlciB0aGFuIGNvbXBsaWNhdGUgdGhlIGNvZGUgYmVsb3csIGRldGVjdGluZyBhbmQgYnVpbGRpbmcKICAgICAgICAgIyBBcXVhVGsgaXMgYSBzZXBhcmF0ZSBtZXRob2QuIE9ubHkgb25lIFRraW50ZXIgd2lsbCBiZSBidWlsdCBvbgogICAgICAgICAjIERhcndpbiAtIGVpdGhlciBBcXVhVGssIGlmIGl0IGlzIGZvdW5kLCBvciBYMTEgYmFzZWQgVGsuCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotICAgICAgICBpZiAocGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kCisgICAgICAgIGlmIChob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZAogICAgICAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcl9kYXJ3aW4oaW5jX2RpcnMsIGxpYl9kaXJzKSk6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtMTU1Niw3ICsxNjM2LDcgQEAKICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHRoZSBpbmNsdWRlIGZpbGVzIG9uIERlYmlhbiBhbmQge0ZyZWUsT3Blbn1CU0QsIHdoZXJlCiAgICAgICAgICAgICAjIHRoZXkncmUgcHV0IGluIC91c3IvaW5jbHVkZS97dGNsLHRrfVguWQogICAgICAgICAgICAgZG90dmVyc2lvbiA9IHZlcnNpb24KLSAgICAgICAgICAgIGlmICcuJyBub3QgaW4gZG90dmVyc2lvbiBhbmQgImJzZCIgaW4gc3lzLnBsYXRmb3JtLmxvd2VyKCk6CisgICAgICAgICAgICBpZiAnLicgbm90IGluIGRvdHZlcnNpb24gYW5kICJic2QiIGluIGhvc3RfcGxhdGZvcm0ubG93ZXIoKToKICAgICAgICAgICAgICAgICAjIE9wZW5CU0QgYW5kIEZyZWVCU0QgdXNlIFRjbC9UayBsaWJyYXJ5IG5hbWVzIGxpa2UgbGlidGNsODMuYSwKICAgICAgICAgICAgICAgICAjIGJ1dCB0aGUgaW5jbHVkZSBzdWJkaXJzIGFyZSBuYW1lZCBsaWtlIC4uLi9pbmNsdWRlL3RjbDguMy4KICAgICAgICAgICAgICAgICBkb3R2ZXJzaW9uID0gZG90dmVyc2lvbls6LTFdICsgJy4nICsgZG90dmVyc2lvblstMV0KQEAgLTE1ODIsNyArMTY2Miw3IEBACiAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZChkaXIpCiAKICAgICAgICAgIyBDaGVjayBmb3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9pbmNsdWRlJykKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2xpYicpCiAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoJy91c3IvWDExUjYvaW5jbHVkZScpOgpAQCAtMTU5OCw3ICsxNjc4LDcgQEAKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTEvbGliJykKIAogICAgICAgICAjIElmIEN5Z3dpbiwgdGhlbiB2ZXJpZnkgdGhhdCBYIGlzIGluc3RhbGxlZCBiZWZvcmUgcHJvY2VlZGluZwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgIHgxMV9pbmMgPSBmaW5kX2ZpbGUoJ1gxMS9YbGliLmgnLCBbXSwgaW5jbHVkZV9kaXJzKQogICAgICAgICAgICAgaWYgeDExX2luYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMTYxNywxMSArMTY5NywxMSBAQAogICAgICAgICBsaWJzLmFwcGVuZCgndGsnKyB2ZXJzaW9uKQogICAgICAgICBsaWJzLmFwcGVuZCgndGNsJysgdmVyc2lvbikKIAotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ2FpeDMnLCAnYWl4NCddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIGluIFsnYWl4MycsICdhaXg0J106CiAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnbGQnKQogCiAgICAgICAgICMgRmluYWxseSwgbGluayB3aXRoIHRoZSBYMTEgbGlicmFyaWVzIChub3QgYXBwcm9wcmlhdGUgb24gY3lnd2luKQotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAiY3lnd2luIjoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAiY3lnd2luIjoKICAgICAgICAgICAgIGxpYnMuYXBwZW5kKCdYMTEnKQogCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbignX3RraW50ZXInLCBbJ190a2ludGVyLmMnLCAndGthcHBpbml0LmMnXSwKQEAgLTE2NzcsNyArMTc1Nyw3IEBACiAKICAgICBkZWYgY29uZmlndXJlX2N0eXBlcyhzZWxmLCBleHQpOgogICAgICAgICBpZiBub3Qgc2VsZi51c2Vfc3lzdGVtX2xpYmZmaToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlndXJlX2N0eXBlc19kYXJ3aW4oZXh0KQogCiAgICAgICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCkBAIC0xNjk1LDcgKzE3NzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfY29uZmlnZmlsZSk6CiAgICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IG1rcGF0aAogICAgICAgICAgICAgICAgIG1rcGF0aChmZmlfYnVpbGRkaXIpCi0gICAgICAgICAgICAgICAgY29uZmlnX2FyZ3MgPSBbXQorICAgICAgICAgICAgICAgIGNvbmZpZ19hcmdzID0gW2FyZyBmb3IgYXJnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgnLS1ob3N0PScgaW4gYXJnKSBvciAoJy0tYnVpbGQ9JyBpbiBhcmcpKV0KICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBjb25maWdfYXJncy5hcHBlbmQoIi1xIikKIApAQCAtMTczOSw3ICsxODIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAnX2N0eXBlcy9jZmllbGQuYyddCiAgICAgICAgIGRlcGVuZHMgPSBbJ19jdHlwZXMvY3R5cGVzLmgnXQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKCdfY3R5cGVzL21hbGxvY19jbG9zdXJlLmMnKQogICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoJ19jdHlwZXMvZGFyd2luL2RsZmNuX3NpbXBsZS5jJykKICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5hcHBlbmQoJy1ETUFDT1NYJykKQEAgLTE3NDcsNyArMTgyOCw3IEBACiAjIFhYWCBJcyB0aGlzIHN0aWxsIG5lZWRlZD8KICMjICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzLmV4dGVuZChbJy1yZWFkX29ubHlfcmVsb2NzJywgJ3dhcm5pbmcnXSkKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdzdW5vczUnOgogICAgICAgICAgICAgIyBYWFggVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5OyBpdCBhcHBlYXJzIHRoYXQgc29tZQogICAgICAgICAgICAgIyBvZiB0aGUgYXNzZW1ibGVyIGNvZGUgaXMgbm9uLVBJQyAoaS5lLiBpdCBoYXMgcmVsb2NhdGlvbnMKICAgICAgICAgICAgICMgd2hlbiBpdCBzaG91bGRuJ3QuIFRoZSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvIHJld3JpdGUKQEAgLTE3NTgsNyArMTgzOSw3IEBACiAgICAgICAgICAgICAjIGZpbmRpbmcgc29tZSAteiBvcHRpb24gZm9yIHRoZSBTdW4gY29tcGlsZXIuCiAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MuYXBwZW5kKCctbWltcHVyZS10ZXh0JykKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdocC11eCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnaHAtdXgnKToKICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5hcHBlbmQoJy1mUElDJykKIAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ19jdHlwZXMnLApAQCAtMTc3NSw3ICsxODU2LDcgQEAKICAgICAgICAgaWYgbm90ICctLXdpdGgtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQpAQCAtMTgwNSw2ICsxODg2LDEzNyBAQAogICAgICAgICAgICAgZXh0LmxpYnJhcmllcy5hcHBlbmQoZmZpX2xpYikKICAgICAgICAgICAgIHNlbGYudXNlX3N5c3RlbV9saWJmZmkgPSBUcnVlCiAKKyAgICBkZWYgX2RlY2ltYWxfZXh0KHNlbGYpOgorICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbXQorICAgICAgICB1bmRlZl9tYWNyb3MgPSBbXQorICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1saWJtcGRlYycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW10KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbXBkZWMnXQorICAgICAgICAgICAgc291cmNlcyA9IFsnX2RlY2ltYWwvX2RlY2ltYWwuYyddCisgICAgICAgICAgICBkZXBlbmRzID0gWydfZGVjaW1hbC9kb2NzdHJpbmdzLmgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJtcGRlYycpKV0KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCisgICAgICAgICAgICBzb3VyY2VzID0gWworICAgICAgICAgICAgICAnX2RlY2ltYWwvX2RlY2ltYWwuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGRlcGVuZHMgPSBbCisgICAgICAgICAgICAgICdfZGVjaW1hbC9kb2NzdHJpbmdzLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NydC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgnLAorICAgICAgICAgICAgICBdCisKKyAgICAgICAgY29uZmlnID0geworICAgICAgICAgICd4NjQnOiAgICAgWygnQ09ORklHXzY0JywnMScpLCAoJ0FTTScsJzEnKV0sCisgICAgICAgICAgJ3VpbnQxMjgnOiBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKSwgKCdIQVZFX1VJTlQxMjhfVCcsJzEnKV0sCisgICAgICAgICAgJ2Fuc2k2NCc6ICBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKV0sCisgICAgICAgICAgJ3Bwcm8nOiAgICBbKCdDT05GSUdfMzInLCcxJyksICgnUFBSTycsJzEnKSwgKCdBU00nLCcxJyldLAorICAgICAgICAgICdhbnNpMzInOiAgWygnQ09ORklHXzMyJywnMScpLCAoJ0FOU0knLCcxJyldLAorICAgICAgICAgICdhbnNpLWxlZ2FjeSc6IFsoJ0NPTkZJR18zMicsJzEnKSwgKCdBTlNJJywnMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0xFR0FDWV9DT01QSUxFUicsJzEnKV0sCisgICAgICAgICAgJ3VuaXZlcnNhbCc6ICAgWygnVU5JVkVSU0FMJywnMScpXQorICAgICAgICB9CisKKyAgICAgICAgY2MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKKyAgICAgICAgc2l6ZW9mX3NpemVfdCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX1NJWkVfVCcpCisgICAgICAgIG1hY2hpbmUgPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FJykKKworICAgICAgICBpZiBtYWNoaW5lOgorICAgICAgICAgICAgIyBPdmVycmlkZSBhdXRvbWF0aWMgY29uZmlndXJhdGlvbiB0byBmYWNpbGl0YXRlIHRlc3RpbmcuCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnW21hY2hpbmVdCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICMgVW5pdmVyc2FsIGhlcmUgbWVhbnM6IGJ1aWxkIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBQeXRob24KKyAgICAgICAgICAgICMgd2FzIGJ1aWx0IHdpdGguCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd1bml2ZXJzYWwnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gODoKKyAgICAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HQ0NfQVNNX0ZPUl9YNjQnKToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd4NjQnXQorICAgICAgICAgICAgZWxpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX1VJTlQxMjhfVCcpOgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ3VpbnQxMjgnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpNjQnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gNDoKKyAgICAgICAgICAgIHBwcm8gPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX0FTTV9GT1JfWDg3JykKKyAgICAgICAgICAgIGlmIHBwcm8gYW5kICgnZ2NjJyBpbiBjYyBvciAnY2xhbmcnIGluIGNjKSBhbmQgXAorICAgICAgICAgICAgICAgbm90ICdzdW5vcycgaW4gaG9zdF9wbGF0Zm9ybToKKyAgICAgICAgICAgICAgICAjIHNvbGFyaXM6IHByb2JsZW1zIHdpdGggcmVnaXN0ZXIgYWxsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAjIGljYyA+PSAxMS4wIHdvcmtzIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sncHBybyddCisgICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLVduby11bmtub3duLXByYWdtYXMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpMzInXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRXJyb3IoIl9kZWNpbWFsOiB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiKQorCisgICAgICAgICMgV29ya2Fyb3VuZHMgZm9yIHRvb2xjaGFpbiBidWdzOgorICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfSVBBX1BVUkVfQ09OU1RfQlVHJyk6CisgICAgICAgICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAgICAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICAgICAgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMTAtMTEvbXNnMDAzNjYuaHRtbAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLWZuby1pcGEtcHVyZS1jb25zdCcpCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HTElCQ19NRU1NT1ZFX0JVRycpOgorICAgICAgICAgICAgIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisgICAgICAgICAgICAjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zLmFwcGVuZCgnX0ZPUlRJRllfU09VUkNFJykKKworICAgICAgICAjIEZhc3RlciB2ZXJzaW9uIHdpdGhvdXQgdGhyZWFkIGxvY2FsIGNvbnRleHRzOgorICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdXSVRIT1VUX1RIUkVBRFMnLCAxKSkKKworICAgICAgICAjIEluY3JlYXNlIHdhcm5pbmcgbGV2ZWwgZm9yIGdjYzoKKyAgICAgICAgaWYgJ2djYycgaW4gY2M6CisgICAgICAgICAgICBjbWQgPSAoImVjaG8gJycgfCBnY2MgLVdleHRyYSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1FIC0gIgorICAgICAgICAgICAgICAgICAgICI+IC9kZXYvbnVsbCAyPiYxIikKKyAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbShjbWQpCisgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgorICAgICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5leHRlbmQoWyctV2V4dHJhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyddKQorCisgICAgICAgICMgVW5jb21tZW50IGZvciBleHRyYSBmdW5jdGlvbmFsaXR5OgorICAgICAgICAjZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdFWFRSQV9GVU5DVElPTkFMSVRZJywgMSkpCisgICAgICAgIGV4dCA9IEV4dGVuc2lvbiAoCisgICAgICAgICAgICAnX2RlY2ltYWwnLAorICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWluY2x1ZGVfZGlycywKKyAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWRlZmluZV9tYWNyb3MsCisgICAgICAgICAgICB1bmRlZl9tYWNyb3M9dW5kZWZfbWFjcm9zLAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVfYXJncywKKyAgICAgICAgICAgIHNvdXJjZXM9c291cmNlcywKKyAgICAgICAgICAgIGRlcGVuZHM9ZGVwZW5kcworICAgICAgICApCisgICAgICAgIHJldHVybiBleHQKIAogY2xhc3MgUHlCdWlsZEluc3RhbGwoaW5zdGFsbCk6CiAgICAgIyBTdXBwcmVzcyB0aGUgd2FybmluZyBhYm91dCBpbnN0YWxsYXRpb24gaW50byB0aGUgbGliX2R5bmxvYWQKQEAgLTE4MTQsNiArMjAyNiwxMyBAQAogICAgICAgICBpbnN0YWxsLmluaXRpYWxpemVfb3B0aW9ucyhzZWxmKQogICAgICAgICBzZWxmLndhcm5fZGlyPTAKIAorICAgICMgQ3VzdG9taXplIHN1YmNvbW1hbmRzIHRvIG5vdCBpbnN0YWxsIGFuIGVnZy1pbmZvIGZpbGUgZm9yIFB5dGhvbgorICAgIHN1Yl9jb21tYW5kcyA9IFsoJ2luc3RhbGxfbGliJywgaW5zdGFsbC5oYXNfbGliKSwKKyAgICAgICAgICAgICAgICAgICAgKCdpbnN0YWxsX2hlYWRlcnMnLCBpbnN0YWxsLmhhc19oZWFkZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgKCdpbnN0YWxsX3NjcmlwdHMnLCBpbnN0YWxsLmhhc19zY3JpcHRzKSwKKyAgICAgICAgICAgICAgICAgICAgKCdpbnN0YWxsX2RhdGEnLCBpbnN0YWxsLmhhc19kYXRhKV0KKworCiBjbGFzcyBQeUJ1aWxkSW5zdGFsbExpYihpbnN0YWxsX2xpYik6CiAgICAgIyBEbyBleGFjdGx5IHdoYXQgaW5zdGFsbF9saWIgZG9lcyBidXQgbWFrZSBzdXJlIGNvcnJlY3QgYWNjZXNzIG1vZGVzIGdldAogICAgICMgc2V0IG9uIGluc3RhbGxlZCBkaXJlY3RvcmllcyBhbmQgZmlsZXMuIEFsbCBpbnN0YWxsZWQgZmlsZXMgd2l0aCBnZXQKQEAgLTE4NTgsNyArMjA3Nyw3IEBACiAgICAgICAgIG5ld291dGZpbGVzID0gW10KICAgICAgICAgbmV3dXBkYXRlZF9maWxlcyA9IFtdCiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBvdXRmaWxlczoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcydG8zJyk6CisgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoJzJ0bzMnLCAncHl2ZW52JykpOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBmdWxsdmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgbWlub3Jvbmx5CkBAIC0xOTI2LDcgKzIxNDUsNyBAQAogICAgICAgICAgICMgY2hlY2sgdGhlIFB5QnVpbGRTY3JpcHRzIGNvbW1hbmQgYWJvdmUsIGFuZCBjaGFuZ2UgdGhlIGxpbmtzCiAgICAgICAgICAgIyBjcmVhdGVkIGJ5IHRoZSBiaW5pbnN0YWxsIHRhcmdldCBpbiBNYWtlZmlsZS5wcmUuaW4KICAgICAgICAgICBzY3JpcHRzID0gWyJUb29scy9zY3JpcHRzL3B5ZG9jMyIsICJUb29scy9zY3JpcHRzL2lkbGUzIiwKLSAgICAgICAgICAgICAgICAgICAgICJUb29scy9zY3JpcHRzLzJ0bzMiXQorICAgICAgICAgICAgICAgICAgICAgIlRvb2xzL3NjcmlwdHMvMnRvMyIsICJUb29scy9zY3JpcHRzL3B5dmVudiJdCiAgICAgICAgICkKIAogIyAtLWluc3RhbGwtcGxhdGxpYgo=